From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.devel Subject: Fix some tooltip related problems Date: Mon, 08 Jan 2018 10:53:40 +0100 Message-ID: <5A533FA4.4030507@gmx.at> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080608020903070008050803" X-Trace: blaine.gmane.org 1515405135 22958 195.159.176.226 (8 Jan 2018 09:52:15 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 8 Jan 2018 09:52:15 +0000 (UTC) To: emacs-devel Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Jan 08 10:52:11 2018 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eYU6B-0005OQ-1q for ged-emacs-devel@m.gmane.org; Mon, 08 Jan 2018 10:52:07 +0100 Original-Received: from localhost ([::1]:52413 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eYU8A-0004WL-BX for ged-emacs-devel@m.gmane.org; Mon, 08 Jan 2018 04:54:10 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:49429) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eYU7t-0004Qc-Cg for emacs-devel@gnu.org; Mon, 08 Jan 2018 04:53:58 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eYU7o-0001v9-Jc for emacs-devel@gnu.org; Mon, 08 Jan 2018 04:53:53 -0500 Original-Received: from mout.gmx.net ([212.227.15.15]:52316) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eYU7n-0001u9-Sv for emacs-devel@gnu.org; Mon, 08 Jan 2018 04:53:48 -0500 Original-Received: from [192.168.1.100] ([46.125.249.13]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0M4Gyx-1epSg50SUF-00rnxG for ; Mon, 08 Jan 2018 10:53:46 +0100 X-Provags-ID: V03:K0:zzeYqYeWQX1R/VWtxVSTMO3RPMmvS363eP0igF92YBaoHseiRqf aQrLICGuUm0W37dLIXdOG4vIDrDQ/Cy+iBUX4ZqnIEJyV2Eq97yb1wVYvBH8jpvhdN9DvxP Q6Ppd9HQwqoTP0BcmK2R3il5Q9XElb1iVA3kezQwkniFj+wj95Ahfa0JNx0umBMpqoyBw8m BXc3AeD82UrYRgA9j2Igw== X-UI-Out-Filterresults: notjunk:1;V01:K0:jKJQaw+46M4=:M/M5ivk4dQXmamSF+Z0haZ 5I0aWOq/ToLOhWDIW+56nDfnapiucN+LOhL9BXwAkBrIDOAW/dSmaY+dN1T8j7mOeDIksK4U3 QMYIk1tTmbdB3BtvExUC5NY+UlFQ5+cpw2Dw/JUkDHOWRParI5ckvKmbUwHA5A+bL4MElxyoQ 9tgcx9KO4UaquVyDBqTtnO0ZKDxnwTws2A3XGe7iuHnrOHPjaJKvJT2ofUFUmjCQuB4uCMwYJ bfFidFUaALNghaJDAjZYag+nH1ua7VY3HP6ig4AHIMJljBSYvEzxhYC63ahwWAg1EptGKa5TJ Om+sniUTq8mnpTfixM7oyHEUw5tQf9G+KIt3AT810+KlpMWTUDWT5JEYOk3xhX0wcAhgVYt6s NsEEIsNH64+l3m6MWMuaPRfz01B0J1V2gOz6e/MzhKKIgob9ryF46c17MGcHWOn+kVV2uD/On Xr1Fr9Eopm6NyXyDKoLI/StuU4PQwiHIFzUKD+0f0wHDLJ3+Pq5v3thapksAMxLecLi8HFYtc qBMqhgAV3X+FM2ni7729KeCw0q50Fd8GjOKi8I8g6Vq5RkqRSesPO6jzAIhn6t2CMGM/ADwTw lKGXHIuUMcN5n/W73PpYU3JDecx6WjY589RzndTcxxQ0EF7tx2oZ/PT77Qc8OU36YIb0/AGcF FJ6dvmZNLjv1SPclu2J0J9ARXyIBzlXKyzOjkLACQ2Brh4M5lWpaGjuDr5b+NYndLihOwle2X 21b/xzi/R7hKTa0mtkUvI/YVQNdJTW1NwBoIQWPzCTwdfvTp/gU/PSCluyPwFt8zlSglw5Ge X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.15.15 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:221705 Archived-At: This is a multi-part message in MIME format. --------------080608020903070008050803 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit I intend to apply the attached patch to master. Its ChangeLog goes as below. Comments and suggestions welcome. Thanks, martin ------------------------------------------------------------------- Fix some tooltip related problems Replace 'tooltip' frame parameter with a 'tooltip' member in the frame structure. For GTK+ builds use 'tip_last_frame' to find the frame for which the currently visible tooltip was made. For modeline help-echoing have tooltips show applicable actions only. * lisp/bindings.el (mode-line-default-help-echo): New function as default value of homonymous option. * src/dispextern.h (tip_frame, tip_window): Remove declarations. * src/frame.c (make_frame): Initialize new frame structure member 'tooltip'. (Fframe_list, other_frames): Rewrite with new macro FRAME_TOOLTIP_P. (syms_of_frame): Remove Qtooltip. * src/frame.h (struct frame): New member 'tooltip'. (FRAME_TOOLTIP_P): New macro. * src/gtkutil.c (xg_prepare_tooltip, xg_hide_tooltip): Rewrite using boolean return values. * src/nsfns.m (tip_frame): Remove declaration. * src/w32fns.c (w32_display_monitor_attributes_list) (w32_display_monitor_attributes_list_fallback): Rewrite with new macro FRAME_TOOLTIP_P. (tip_last_string, tip_last_frame, tip_last_parms): New Lisp scalars replacing Lisp vector last_show_tip_args. (x_create_tip_frame): Set new frame's 'tooltip' structure member to true, remove setting of Qtooltip frame parameter. (x_hide_tip): Additionally test tip_frame for liveness. (Fx_show_tip): Handle last_show_tip_args to tip_last_frame, tip_last_string and tip_last_parms conversion. (syms_of_w32fns): staticpro tip_last_frame, tip_last_string and tip_last_parms instead of last_show_tip_args. * src/w32term.c (w32_read_socket, x_new_font): Rewrite with new macro FRAME_TOOLTIP_P. * src/w32term.h (tip_window): Add external declaration. * src/xdisp.c (x_consider_frame_title, prepare_menu_bars) (should_produce_line_number): Rewrite with new macro FRAME_TOOLTIP_P. (note_mode_line_or_margin_highlight): If `mode-line-default-help-echo' specifies a function, call it to produce help echo string. * src/xfns.c (x_make_monitor_attribute_list) (Fx_display_monitor_attributes_list): Rewrite with new macro FRAME_TOOLTIP_P. (tip_last_string, tip_last_frame, tip_last_parms): New Lisp scalars replacing Lisp vector last_show_tip_args. (x_create_tip_frame): Set new frame's 'tooltip' structure member to true, remove setting of Qtooltip frame parameter. (x_hide_tip): Rewrite with additional tests of frames for liveness and taking into account that for GTK+ tips the reference frame is now stored in tip_last_frame instead of tip_frame. (Fx_show_tip): Handle last_show_tip_args to tip_last_frame, tip_last_string and tip_last_parms conversion. For GTK+ store FRAME argument in tip_last-frame. (syms_of_xfns): staticpro tip_last_frame, tip_last_string and tip_last_parms instead of last_show_tip_args. * src/xterm.c (x_update_begin, handle_one_xevent, x_new_font) (x_set_window_size): Rewrite with new macro FRAME_TOOLTIP_P. * src/xterm.h (tip_window): Add external declaration. --------------080608020903070008050803 Content-Type: text/plain; charset=windows-1252; name="tooltip.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="tooltip.diff" ZGlmZiAtLWdpdCBhL2xpc3AvYmluZGluZ3MuZWwgYi9saXNwL2JpbmRpbmdzLmVsCmluZGV4 IDgzNzViYjkuLmM4MDZjYWUgMTAwNjQ0Ci0tLSBhL2xpc3AvYmluZGluZ3MuZWwKKysrIGIv bGlzcC9iaW5kaW5ncy5lbApAQCAtMTI0LDE3ICsxMjQsNTYgQEAgbW9kZS1saW5lLWVvbC1k ZXNjCiAMCiA7OzsgTW9kZSBsaW5lIGNvbnRlbnRzCgotKGRlZmN1c3RvbSBtb2RlLWxpbmUt ZGVmYXVsdC1oZWxwLWVjaG8KLSAgIm1vdXNlLTE6IFNlbGVjdCAoZHJhZyB0byByZXNpemUp XG5cCi1tb3VzZS0yOiBNYWtlIGN1cnJlbnQgd2luZG93IG9jY3VweSB0aGUgd2hvbGUgZnJh bWVcblwKLW1vdXNlLTM6IFJlbW92ZSBjdXJyZW50IHdpbmRvdyBmcm9tIGRpc3BsYXkiCiso ZGVmdW4gbW9kZS1saW5lLWRlZmF1bHQtaGVscC1lY2hvICh3aW5kb3cpCisgICJSZXR1cm4g ZGVmYXVsdCBoZWxwIGVjaG8gdGV4dCBmb3IgV0lORE9XJ3MgbW9kZS1saW5lLiIKKyAgKGxl dCogKChmcmFtZSAod2luZG93LWZyYW1lIHdpbmRvdykpCisgICAgICAgICAobGluZS0xYQor ICAgICAgICAgIDs7IFNob3cgdGV4dCB0byBzZWxlY3Qgd2luZG93IG9ubHkgaWYgdGhlIHdp bmRvdyBpcyBub3QKKyAgICAgICAgICA7OyBzZWxlY3RlZC4KKyAgICAgICAgICAobm90IChl cSB3aW5kb3cgKGZyYW1lLXNlbGVjdGVkLXdpbmRvdyBmcmFtZSkpKSkKKyAgICAgICAgIChs aW5lLTFiCisgICAgICAgICAgOzsgU2hvdyB0ZXh0IHRvIGRyYWcgbW9kZWxpbmUgaWYgYW5k IG9ubHkgaWYgaXQgY2FuIGJlIGRvbmUuCisgICAgICAgICAgKG9yICh3aW5kb3ctaW4tZGly ZWN0aW9uICdiZWxvdyB3aW5kb3cpCisgICAgICAgICAgICAgIChsZXQgKChtaW5pLXdpbmRv dyAobWluaWJ1ZmZlci13aW5kb3cgZnJhbWUpKSkKKyAgICAgICAgICAgICAgICAoYW5kIChl cSBmcmFtZSAod2luZG93LWZyYW1lIG1pbmktd2luZG93KSkKKyAgICAgICAgICAgICAgICAg ICAgIChvciAobWluaWJ1ZmZlci13aW5kb3ctYWN0aXZlLXAgbWluaS13aW5kb3cpCisgICAg ICAgICAgICAgICAgICAgICAgICAgKG5vdCByZXNpemUtbWluaS13aW5kb3dzKSkpKSkpCisg ICAgICAgICAobGluZS0yCisgICAgICAgICAgOzsgU2hvdyB0ZXh0IG1ha2Ugd2luZG93IG9j Y3VweSB0aGUgd2hvbGUgZnJhbWUKKyAgICAgICAgICA7OyBvbmx5IGlmIGl0IGRvZXNuJ3Qg YWxyZWFkeSBkbyB0aGF0LgorICAgICAgICAgIChub3QgKGVxIHdpbmRvdyAoZnJhbWUtcm9v dC13aW5kb3cgZnJhbWUpKSkpCisgICAgICAgICAobGluZS0zCisgICAgICAgICAgOzsgU2hv dyB0ZXh0IHRvIGRlbGV0ZSB3aW5kb3cgb25seSBpZiB0aGF0J3MgcG9zc2libGUuCisgICAg ICAgICAgKG5vdCAoZXEgd2luZG93IChmcmFtZS1yb290LXdpbmRvdyBmcmFtZSkpKSkpCisg ICAgKHdoZW4gKG9yIGxpbmUtMWEgbGluZS0xYiBsaW5lLTIgbGluZS0zKQorICAgICAgKGNv bmNhdAorICAgICAgICh3aGVuIChvciBsaW5lLTFhIGxpbmUtMWIpCisgICAgICAgICAoY29u Y2F0CisgICAgICAgICAgIm1vdXNlLTE6ICIKKyAgICAgICAgICAod2hlbiBsaW5lLTFhICJT ZWxlY3QiKQorICAgICAgICAgICh3aGVuIGxpbmUtMWIKKyAgICAgICAgICAgIChpZiBsaW5l LTFhICIgKGRyYWcgdG8gcmVzaXplKSIgIkRyYWcgdG8gcmVzaXplIikpCisgICAgICAgICAg KHdoZW4gKG9yIGxpbmUtMiBsaW5lLTMpICJcbiIpKSkKKyAgICAgICAod2hlbiBsaW5lLTIK KyAgICAgICAgIChjb25jYXQKKyAgICAgICAgICAibW91c2UtMjogTWFrZSB3aW5kb3cgb2Nj dXB5IHdob2xlIGZyYW1lIgorICAgICAgICAgICh3aGVuIGxpbmUtMyAiXG4iKSkpCisgICAg ICAgKHdoZW4gbGluZS0zCisgICAgICAgICAibW91c2UtMzogUmVtb3ZlIHdpbmRvdyBmcm9t IGZyYW1lIikpKSkpCisKKyhkZWZjdXN0b20gbW9kZS1saW5lLWRlZmF1bHQtaGVscC1lY2hv ICMnbW9kZS1saW5lLWRlZmF1bHQtaGVscC1lY2hvCiAgICJEZWZhdWx0IGhlbHAgdGV4dCBm b3IgdGhlIG1vZGUgbGluZS4KIElmIHRoZSB2YWx1ZSBpcyBhIHN0cmluZywgaXQgc3BlY2lm aWVzIHRoZSB0b29sdGlwIG9yIGVjaG8gYXJlYQogbWVzc2FnZSB0byBkaXNwbGF5IHdoZW4g dGhlIG1vdXNlIGlzIG1vdmVkIG92ZXIgdGhlIG1vZGUgbGluZS4KLUlmIHRoZSB0ZXh0IGF0 IHRoZSBtb3VzZSBwb3NpdGlvbiBoYXMgYSBgaGVscC1lY2hvJyB0ZXh0Ci1wcm9wZXJ0eSwg dGhhdCBvdmVycmlkZXMgdGhpcyB2YXJpYWJsZS4iCi0gIDp0eXBlICcoY2hvaWNlIChjb25z dCA6dGFnICJObyBoZWxwIiA6dmFsdWUgbmlsKSBzdHJpbmcpCi0gIDp2ZXJzaW9uICIyNC4z IgorSWYgdGhlIHZhbHVlIGlzIGEgZnVuY3Rpb24sIGNhbGwgdGhhdCBmdW5jdGlvbiB3aXRo IG9uZSBhcmd1bWVudAorLSB0aGUgd2luZG93IHdob3NlIG1vZGUtbGluZSB0byBkaXNwbGF5 LiAgSWYgdGhlIHRleHQgYXQgdGhlCittb3VzZSBwb3NpdGlvbiBoYXMgYSBgaGVscC1lY2hv JyB0ZXh0IHByb3BlcnR5LCB0aGF0IG92ZXJyaWRlcwordGhpcyB2YXJpYWJsZS4iCisgIDp0 eXBlICcoY2hvaWNlCisgICAgICAgICAgKGNvbnN0IDp0YWcgIk5vIGhlbHAiIDp2YWx1ZSBu aWwpCisgICAgICAgICAgZnVuY3Rpb24KKyAgICAgICAgICBzdHJpbmcpCisgIDp2ZXJzaW9u ICIyNy4xIgogICA6Z3JvdXAgJ21vZGUtbGluZSkKCiAoZGVmdmFyIG1vZGUtbGluZS1mcm9u dC1zcGFjZSAnKDpldmFsIChpZiAoZGlzcGxheS1ncmFwaGljLXApICIgIiAiLSIpKQpkaWZm IC0tZ2l0IGEvc3JjL2Rpc3BleHRlcm4uaCBiL3NyYy9kaXNwZXh0ZXJuLmgKaW5kZXggMjVi ZDZiMi4uNDQxMzYxYiAxMDA2NDQKLS0tIGEvc3JjL2Rpc3BleHRlcm4uaAorKysgYi9zcmMv ZGlzcGV4dGVybi5oCkBAIC0zNDUyLDE1ICszNDUyLDYgQEAgaW50IGZhY2VfYXRfc3RyaW5n X3Bvc2l0aW9uIChzdHJ1Y3Qgd2luZG93ICosIExpc3BfT2JqZWN0LCBwdHJkaWZmX3QsIHB0 cmRpZmZfdCwKIHZvaWQgeF9pbXBsaWNpdGx5X3NldF9uYW1lIChzdHJ1Y3QgZnJhbWUgKiwg TGlzcF9PYmplY3QsIExpc3BfT2JqZWN0KTsKIHZvaWQgeF9jaGFuZ2VfdG9vbF9iYXJfaGVp Z2h0IChzdHJ1Y3QgZnJhbWUgKmYsIGludCk7CgotLyogVGhlIGZyYW1lIHVzZWQgdG8gZGlz cGxheSBhIHRvb2x0aXAuCi0KLSAgIE5vdGU6IEluIGEgR1RLIGJ1aWxkIHdpdGggbm9uLXpl cm8geF9ndGtfdXNlX3N5c3RlbV90b29sdGlwcywgdGhpcwotICAgdmFyaWFibGUgaG9sZHMg dGhlIGZyYW1lIHRoYXQgc2hvd3MgdGhlIHRvb2x0aXAsIG5vdCB0aGUgZnJhbWUgb2YKLSAg IHRoZSB0b29sdGlwIGl0c2VsZiwgc28gY2hlY2tpbmcgd2hldGhlciBhIGZyYW1lIGlzIGEg dG9vbHRpcCBmcmFtZQotICAgY2Fubm90IGp1c3QgY29tcGFyZSB0aGUgZnJhbWUgdG8gd2hh dCB0aGlzIHZhcmlhYmxlIGhvbGRzLiAgKi8KLWV4dGVybiBMaXNwX09iamVjdCB0aXBfZnJh bWU7Ci0KLWV4dGVybiBXaW5kb3cgdGlwX3dpbmRvdzsKIGV4dGVybiBmcmFtZV9wYXJtX2hh bmRsZXIgeF9mcmFtZV9wYXJtX2hhbmRsZXJzW107CgogZXh0ZXJuIHZvaWQgc3RhcnRfaG91 cmdsYXNzICh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9mcmFtZS5jIGIvc3JjL2ZyYW1lLmMK aW5kZXggMWM2Mjg5YS4uNzNiNGI0ZSAxMDA2NDQKLS0tIGEvc3JjL2ZyYW1lLmMKKysrIGIv c3JjL2ZyYW1lLmMKQEAgLTgzMiw2ICs4MzIsNyBAQCBzdHJ1Y3QgZnJhbWUgKgogICBmLT5u b19mb2N1c19vbl9tYXAgPSBmYWxzZTsKICAgZi0+bm9fYWNjZXB0X2ZvY3VzID0gZmFsc2U7 CiAgIGYtPnpfZ3JvdXAgPSB6X2dyb3VwX25vbmU7CisgIGYtPnRvb2x0aXAgPSBmYWxzZTsK ICNpZiAhIGRlZmluZWQgKFVTRV9HVEspICYmICEgZGVmaW5lZCAoSEFWRV9OUykKICAgZi0+ bGFzdF90b29sX2Jhcl9pdGVtID0gLTE7CiAjZW5kaWYKQEAgLTE0NjcsMjAgKzE0NjgsMjEg QEAgb2YgdGhlbSAodGhlIHNlbGVjdGVkIHRlcm1pbmFsIGZyYW1lKSBpcyBhY3R1YWxseSBk aXNwbGF5ZWQuCiAMCiBERUZVTiAoImZyYW1lLWxpc3QiLCBGZnJhbWVfbGlzdCwgU2ZyYW1l X2xpc3QsCiAgICAgICAgMCwgMCwgMCwKLSAgICAgICBkb2M6IC8qIFJldHVybiBhIGxpc3Qg b2YgYWxsIGxpdmUgZnJhbWVzLiAgKi8pCisgICAgICAgZG9jOiAvKiBSZXR1cm4gYSBsaXN0 IG9mIGFsbCBsaXZlIGZyYW1lcy4KK1RoZSByZXR1cm4gdmFsdWUgZG9lcyBub3QgaW5jbHVk ZSBhbnkgdG9vbHRpcCBmcmFtZS4gICovKQogICAodm9pZCkKIHsKLSAgTGlzcF9PYmplY3Qg ZnJhbWVzOwotICBmcmFtZXMgPSBGY29weV9zZXF1ZW5jZSAoVmZyYW1lX2xpc3QpOwogI2lm ZGVmIEhBVkVfV0lORE9XX1NZU1RFTQotICBpZiAoRlJBTUVQICh0aXBfZnJhbWUpCi0jaWZk ZWYgVVNFX0dUSwotICAgICAgJiYgIU5JTFAgKEZmcmFtZV9wYXJhbWV0ZXIgKHRpcF9mcmFt ZSwgUXRvb2x0aXApKQotI2VuZGlmCi0gICAgICApCi0gICAgZnJhbWVzID0gRmRlbHEgKHRp cF9mcmFtZSwgZnJhbWVzKTsKLSNlbmRpZgotICByZXR1cm4gZnJhbWVzOworICBMaXNwX09i amVjdCBsaXN0ID0gUW5pbCwgdGFpbCwgZnJhbWU7CisKKyAgRk9SX0VBQ0hfRlJBTUUgKHRh aWwsIGZyYW1lKQorICAgIGlmICghRlJBTUVfVE9PTFRJUF9QIChYRlJBTUUgKGZyYW1lKSkp CisgICAgICBsaXN0ID0gRmNvbnMgKGZyYW1lLCBsaXN0KTsKKyAgLyogUmV2ZXJzZSBsaXN0 IGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZSAhSEFWRV9XSU5ET1dfU1lTVEVNIGNhc2UuICAq LworICByZXR1cm4gRm5yZXZlcnNlIChsaXN0KTsKKyNlbHNlIC8qICFIQVZFX1dJTkRPV19T WVNURU0gKi8KKyAgcmV0dXJuIEZjb3B5X3NlcXVlbmNlIChWZnJhbWVfbGlzdCk7CisjZW5k aWYgLyogSEFWRV9XSU5ET1dfU1lTVEVNICovCiB9CgogREVGVU4gKCJmcmFtZS1wYXJlbnQi LCBGZnJhbWVfcGFyZW50LCBTZnJhbWVfcGFyZW50LApAQCAtMTcxMSw3ICsxNzEzLDggQEAg b2YgdGhlbSAodGhlIHNlbGVjdGVkIHRlcm1pbmFsIGZyYW1lKSBpcyBhY3R1YWxseSBkaXNw bGF5ZWQuCiAgKiBvdGhlcl9mcmFtZXM6CiAgKgogICogUmV0dXJuIHRydWUgaWYgdGhlcmUg ZXhpc3RzIGF0IGxlYXN0IG9uZSB2aXNpYmxlIG9yIGljb25pZmllZCBmcmFtZQotICogYnV0 IEYuICBSZXR1cm4gZmFsc2Ugb3RoZXJ3aXNlLgorICogYnV0IEYuICBUb29sdGlwIGZyYW1l cyBkbyBub3QgcXVhbGlmeSBhcyBjYW5kaWRhdGVzLiAgUmV0dXJuIGZhbHNlCisgKiBpZiBu byBzdWNoIGZyYW1lIGV4aXN0cy4KICAqCiAgKiBJTlZJU0lCTEUgdHJ1ZSBtZWFucyB3ZSBh cmUgY2FsbGVkIGZyb20gbWFrZV9mcmFtZV9pbnZpc2libGUgd2hlcmUKICAqIHN1Y2ggYSBm cmFtZSBtdXN0IGJlIHZpc2libGUgb3IgaWNvbmlmaWVkLiAgSU5WSVNJQkxFIG5pbCBtZWFu cyB3ZQpAQCAtMTcyNSw3ICsxNzI4LDYgQEAgb2YgdGhlbSAodGhlIHNlbGVjdGVkIHRlcm1p bmFsIGZyYW1lKSBpcyBhY3R1YWxseSBkaXNwbGF5ZWQuCiBvdGhlcl9mcmFtZXMgKHN0cnVj dCBmcmFtZSAqZiwgYm9vbCBpbnZpc2libGUsIGJvb2wgZm9yY2UpCiB7CiAgIExpc3BfT2Jq ZWN0IGZyYW1lcywgZnJhbWUsIGZyYW1lMTsKLSAgc3RydWN0IGZyYW1lICpmMTsKICAgTGlz cF9PYmplY3QgbWluaWJ1ZmZlcl93aW5kb3cgPSBGUkFNRV9NSU5JQlVGX1dJTkRPVyAoZik7 CgogICBYU0VURlJBTUUgKGZyYW1lLCBmKTsKQEAgLTE3MzUsNyArMTczNyw4IEBAIG9mIHRo ZW0gKHRoZSBzZWxlY3RlZCB0ZXJtaW5hbCBmcmFtZSkgaXMgYWN0dWFsbHkgZGlzcGxheWVk LgoKICAgRk9SX0VBQ0hfRlJBTUUgKGZyYW1lcywgZnJhbWUxKQogICAgIHsKLSAgICAgIGYx ID0gWEZSQU1FIChmcmFtZTEpOworICAgICAgc3RydWN0IGZyYW1lICpmMSA9IFhGUkFNRSAo ZnJhbWUxKTsKKwogICAgICAgaWYgKGYgIT0gZjEpCiAJewogCSAgLyogVmVyaWZ5IHRoYXQg d2UgY2FuIHN0aWxsIHRhbGsgdG8gdGhlIGZyYW1lJ3MgWCB3aW5kb3csIGFuZApAQCAtMTc0 NCw3ICsxNzQ3LDcgQEAgb2YgdGhlbSAodGhlIHNlbGVjdGVkIHRlcm1pbmFsIGZyYW1lKSBp cyBhY3R1YWxseSBkaXNwbGF5ZWQuCiAJICBpZiAoRlJBTUVfV0lORE9XX1AgKGYxKSkKIAkg ICAgeF9zeW5jIChmMSk7CiAjZW5kaWYKLQkgIGlmIChOSUxQIChGZnJhbWVfcGFyYW1ldGVy IChmcmFtZTEsIFF0b29sdGlwKSkKKwkgIGlmICghRlJBTUVfVE9PTFRJUF9QIChmMSkKIAkg ICAgICAvKiBUb29sdGlwcyBhbmQgY2hpbGQgZnJhbWVzIGNvdW50IG5laXRoZXIgZm9yCiAJ CSBpbnZpc2liaWxpdHkgbm9yIGZvciBkZWxldGlvbnMuICAqLwogCSAgICAgICYmICFGUkFN RV9QQVJFTlRfRlJBTUUgKGYxKQpAQCAtMTg3Nyw3ICsxODgwLDcgQEAgb2YgdGhlbSAodGhl IHNlbGVjdGVkIHRlcm1pbmFsIGZyYW1lKSBpcyBhY3R1YWxseSBkaXNwbGF5ZWQuCiAJfQog ICAgIH0KCi0gIGlzX3Rvb2x0aXBfZnJhbWUgPSAhTklMUCAoRmZyYW1lX3BhcmFtZXRlciAo ZnJhbWUsIFF0b29sdGlwKSk7CisgIGlzX3Rvb2x0aXBfZnJhbWUgPSBGUkFNRV9UT09MVElQ X1AgKGYpOwoKICAgLyogUnVuIGBkZWxldGUtZnJhbWUtZnVuY3Rpb25zJyB1bmxlc3MgRk9S Q0UgaXMgYG5vZWxpc3AnIG9yCiAgICAgIGZyYW1lIGlzIGEgdG9vbHRpcC4gIEZPUkNFIGlz IHNldCB0byBgbm9lbGlzcCcgd2hlbiBoYW5kbGluZwpAQCAtMTkyNSwyNyArMTkyOCwzMSBA QCBvZiB0aGVtICh0aGUgc2VsZWN0ZWQgdGVybWluYWwgZnJhbWUpIGlzIGFjdHVhbGx5IGRp c3BsYXllZC4KIAkgRG8gbm90IGNhbGwgbmV4dF9mcmFtZSBoZXJlIGJlY2F1c2UgaXQgbWF5 IGxvb3AgZm9yZXZlci4KIAkgU2VlIGh0dHBzOi8vZGViYnVncy5nbnUub3JnL2NnaS9idWdy ZXBvcnQuY2dpP2J1Zz0xNTAyNS4gICovCiAgICAgICBGT1JfRUFDSF9GUkFNRSAodGFpbCwg ZnJhbWUxKQotCWlmICghRVEgKGZyYW1lLCBmcmFtZTEpCi0JICAgICYmIE5JTFAgKEZmcmFt ZV9wYXJhbWV0ZXIgKGZyYW1lMSwgUXRvb2x0aXApKQotCSAgICAmJiAoRlJBTUVfVEVSTUlO QUwgKFhGUkFNRSAoZnJhbWUpKQotCQk9PSBGUkFNRV9URVJNSU5BTCAoWEZSQU1FIChmcmFt ZTEpKSkKLQkgICAgJiYgRlJBTUVfVklTSUJMRV9QIChYRlJBTUUgKGZyYW1lMSkpKQotICAg ICAgICAgYnJlYWs7CisJeworCSAgc3RydWN0IGZyYW1lICpmMSA9IFhGUkFNRSAoZnJhbWUx KTsKKworCSAgaWYgKCFFUSAoZnJhbWUsIGZyYW1lMSkKKwkgICAgICAmJiAhRlJBTUVfVE9P TFRJUF9QIChmMSkKKwkgICAgICAmJiBGUkFNRV9URVJNSU5BTCAoZikgPT0gRlJBTUVfVEVS TUlOQUwgKGYxKQorCSAgICAgICYmIEZSQU1FX1ZJU0lCTEVfUCAoZjEpKQorCSAgICBicmVh azsKKwl9CgogICAgICAgLyogSWYgdGhlcmUgaXMgbm9uZSwgZmluZCAqc29tZSogb3RoZXIg ZnJhbWUuICAqLwogICAgICAgaWYgKE5JTFAgKGZyYW1lMSkgfHwgRVEgKGZyYW1lMSwgZnJh bWUpKQogCXsKIAkgIEZPUl9FQUNIX0ZSQU1FICh0YWlsLCBmcmFtZTEpCiAJICAgIHsKKwkg ICAgICBzdHJ1Y3QgZnJhbWUgKmYxID0gWEZSQU1FIChmcmFtZTEpOworCiAJICAgICAgaWYg KCFFUSAoZnJhbWUsIGZyYW1lMSkKLQkJICAmJiBGUkFNRV9MSVZFX1AgKFhGUkFNRSAoZnJh bWUxKSkKLQkJICAmJiBOSUxQIChGZnJhbWVfcGFyYW1ldGVyIChmcmFtZTEsIFF0b29sdGlw KSkpCisJCSAgJiYgRlJBTUVfTElWRV9QIChmMSkKKwkJICAmJiAhRlJBTUVfVE9PTFRJUF9Q IChmMSkpCiAJCXsKLQkJICAvKiBEbyBub3QgY2hhbmdlIGEgdGV4dCB0ZXJtaW5hbCdzIHRv cC1mcmFtZS4gICovCi0JCSAgc3RydWN0IGZyYW1lICpmMSA9IFhGUkFNRSAoZnJhbWUxKTsK IAkJICBpZiAoRlJBTUVfVEVSTUNBUF9QIChmMSkgfHwgRlJBTUVfTVNET1NfUCAoZjEpKQog CQkgICAgewogCQkgICAgICBMaXNwX09iamVjdCB0b3BfZnJhbWUgPSBGUkFNRV9UVFkgKGYx KS0+dG9wX2ZyYW1lOworCiAJCSAgICAgIGlmICghRVEgKHRvcF9mcmFtZSwgZnJhbWUpKQog CQkJZnJhbWUxID0gdG9wX2ZyYW1lOwogCQkgICAgfQpAQCAtNTYxNyw3ICs1NjI0LDYgQEAg b3IgYSBsaXN0ICgtIE4pIG1lYW5pbmcgLU4gcGl4ZWxzIHJlbGF0aXZlIHRvIGJvdHRvbS9y aWdodCBjb3JuZXIuCiAgIERFRlNZTSAoUWdlb21ldHJ5LCAiZ2VvbWV0cnkiKTsKICAgREVG U1lNIChRaWNvbl9sZWZ0LCAiaWNvbi1sZWZ0Iik7CiAgIERFRlNZTSAoUWljb25fdG9wLCAi aWNvbi10b3AiKTsKLSAgREVGU1lNIChRdG9vbHRpcCwgInRvb2x0aXAiKTsKICAgREVGU1lN IChRdXNlcl9wb3NpdGlvbiwgInVzZXItcG9zaXRpb24iKTsKICAgREVGU1lNIChRdXNlcl9z aXplLCAidXNlci1zaXplIik7CiAgIERFRlNZTSAoUXdpbmRvd19pZCwgIndpbmRvdy1pZCIp OwpkaWZmIC0tZ2l0IGEvc3JjL2ZyYW1lLmggYi9zcmMvZnJhbWUuaAppbmRleCA0MDJkNmMw Li4yYzljNDE0IDEwMDY0NAotLS0gYS9zcmMvZnJhbWUuaAorKysgYi9zcmMvZnJhbWUuaApA QCAtMzQyLDYgKzM0Miw5IEBAIHN0cnVjdCBmcmFtZQogICBFTlVNX0JGIChvdXRwdXRfbWV0 aG9kKSBvdXRwdXRfbWV0aG9kIDogMzsKCiAjaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCisg IC8qIFRydWUgaWYgdGhpcyBmcmFtZSBpcyBhIHRvb2x0aXAgZnJhbWUuICAqLworICBib29s X2JmIHRvb2x0aXAgOiAxOworCiAgIC8qIFNlZSBGVUxMU0NSRUVOXyBlbnVtIG9uIHRvcC4g ICovCiAgIEVOVU1fQkYgKGZ1bGxzY3JlZW5fdHlwZSkgd2FudF9mdWxsc2NyZWVuIDogNDsK CkBAIC0zNTEsOSArMzU0LDcgQEAgc3RydWN0IGZyYW1lCgogICAvKiBOb256ZXJvIGlmIHdl IHNob3VsZCBhY3R1YWxseSBkaXNwbGF5IGhvcml6b250YWwgc2Nyb2xsIGJhcnMgb24gdGhp cyBmcmFtZS4gICovCiAgIGJvb2xfYmYgaG9yaXpvbnRhbF9zY3JvbGxfYmFycyA6IDE7Ci0j ZW5kaWYgLyogSEFWRV9XSU5ET1dfU1lTVEVNICovCgotI2lmIGRlZmluZWQgKEhBVkVfV0lO RE9XX1NZU1RFTSkKICAgLyogVHJ1ZSBpZiB0aGlzIGlzIGFuIHVuZGVjb3JhdGVkIGZyYW1l LiAgKi8KICAgYm9vbF9iZiB1bmRlY29yYXRlZCA6IDE7CgpAQCAtOTY3LDYgKzk2OCw3IEBA IHN0cnVjdCBmcmFtZQogI2RlZmluZSBGUkFNRV9aX0dST1VQX0FCT1ZFX1NVU1BFTkRFRChm KQlcCiAgICgoZiktPnpfZ3JvdXAgPT0gel9ncm91cF9hYm92ZV9zdXNwZW5kZWQpCiAjZGVm aW5lIEZSQU1FX1pfR1JPVVBfQkVMT1coZikgKChmKS0+el9ncm91cCA9PSB6X2dyb3VwX2Jl bG93KQorI2RlZmluZSBGUkFNRV9UT09MVElQX1AoZikgKChmKS0+dG9vbHRpcCkKICNpZmRl ZiBOU19JTVBMX0NPQ09BCiAjZGVmaW5lIEZSQU1FX05TX0FQUEVBUkFOQ0UoZikgKChmKS0+ bnNfYXBwZWFyYW5jZSkKICNkZWZpbmUgRlJBTUVfTlNfVFJBTlNQQVJFTlRfVElUTEVCQVIo ZikgKChmKS0+bnNfdHJhbnNwYXJlbnRfdGl0bGViYXIpCkBAIC05ODMsNiArOTg1LDcgQEAg c3RydWN0IGZyYW1lCiAjZGVmaW5lIEZSQU1FX1pfR1JPVVBfTk9ORShmKSAoKHZvaWQpIChm KSwgdHJ1ZSkKICNkZWZpbmUgRlJBTUVfWl9HUk9VUF9BQk9WRShmKSAoKHZvaWQpIChmKSwg ZmFsc2UpCiAjZGVmaW5lIEZSQU1FX1pfR1JPVVBfQkVMT1coZikgKCh2b2lkKSAoZiksIGZh bHNlKQorI2RlZmluZSBGUkFNRV9UT09MVElQX1AoZikgKCh2b2lkKSBmLCBmYWxzZSkKICNl bmRpZiAvKiBIQVZFX1dJTkRPV19TWVNURU0gKi8KCiAvKiBXaGV0aGVyIGhvcml6b250YWwg c2Nyb2xsIGJhcnMgYXJlIGN1cnJlbnRseSBlbmFibGVkIGZvciBmcmFtZSBGLiAgKi8KZGlm ZiAtLWdpdCBhL3NyYy9ndGt1dGlsLmMgYi9zcmMvZ3RrdXRpbC5jCmluZGV4IDA0NzQxN2Yu LjM0YzBmY2MgMTAwNjQ0Ci0tLSBhL3NyYy9ndGt1dGlsLmMKKysrIGIvc3JjL2d0a3V0aWwu YwpAQCAtNjg3LDYgKzY4Nyw3IEBAIHN0cnVjdCB4Z19mcmFtZV90Yl9pbmZvCiAgICAgICBn X3NpZ25hbF9jb25uZWN0ICh4LT50dGlwX2xibCwgImhpZXJhcmNoeS1jaGFuZ2VkIiwKICAg ICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKGhpZXJhcmNoeV9jaF9jYiksIGYp OwogICAgIH0KKwogICByZXR1cm4gRkFMU0U7CiB9CgpAQCAtNzEzLDcgKzcxNCw4IEBAIHN0 cnVjdCB4Z19mcmFtZV90Yl9pbmZvCiAgIEd0a1JlcXVpc2l0aW9uIHJlcTsKICAgTGlzcF9P YmplY3QgZW5jb2RlZF9zdHJpbmc7CgotICBpZiAoIXgtPnR0aXBfbGJsKSByZXR1cm4gMDsK KyAgaWYgKCF4LT50dGlwX2xibCkKKyAgICByZXR1cm4gRkFMU0U7CgogICBibG9ja19pbnB1 dCAoKTsKICAgZW5jb2RlZF9zdHJpbmcgPSBFTkNPREVfVVRGXzggKHN0cmluZyk7CkBAIC03 NDUsNyArNzQ3LDcgQEAgc3RydWN0IHhnX2ZyYW1lX3RiX2luZm8KCiAgIHVuYmxvY2tfaW5w dXQgKCk7CgotICByZXR1cm4gMTsKKyAgcmV0dXJuIFRSVUU7CiAjZW5kaWYgLyogVVNFX0dU S19UT09MVElQICovCiB9CgpAQCAtNzY4LDE4ICs3NzAsMTggQEAgc3RydWN0IHhnX2ZyYW1l X3RiX2luZm8KICNlbmRpZgogfQoKKwogLyogSGlkZSB0b29sdGlwIGlmIHNob3duLiAgRG8g bm90aGluZyBpZiBub3Qgc2hvd24uCiAgICBSZXR1cm4gdHJ1ZSBpZiB0aXAgd2FzIGhpZGRl biwgZmFsc2UgaWYgbm90IChpLmUuIG5vdCB1c2luZwogICAgc3lzdGVtIHRvb2x0aXBzKS4g ICovCi0KIGJvb2wKIHhnX2hpZGVfdG9vbHRpcCAoc3RydWN0IGZyYW1lICpmKQogewotICBi b29sIHJldCA9IDA7CiAjaWZkZWYgVVNFX0dUS19UT09MVElQCiAgIGlmIChmLT5vdXRwdXRf ZGF0YS54LT50dGlwX3dpbmRvdykKICAgICB7CiAgICAgICBHdGtXaW5kb3cgKndpbiA9IGYt Pm91dHB1dF9kYXRhLngtPnR0aXBfd2luZG93OworCiAgICAgICBibG9ja19pbnB1dCAoKTsK ICAgICAgIGd0a193aWRnZXRfaGlkZSAoR1RLX1dJREdFVCAod2luKSk7CgpAQCAtNzkyLDEw ICs3OTQsMTAgQEAgc3RydWN0IHhnX2ZyYW1lX3RiX2luZm8KICAgICAgICAgfQogICAgICAg dW5ibG9ja19pbnB1dCAoKTsKCi0gICAgICByZXQgPSAxOworICAgICAgcmV0dXJuIFRSVUU7 CiAgICAgfQogI2VuZGlmCi0gIHJldHVybiByZXQ7CisgIHJldHVybiBGQUxTRTsKIH0KCiAM CmRpZmYgLS1naXQgYS9zcmMvbnNmbnMubSBiL3NyYy9uc2Zucy5tCmluZGV4IGQ1MDQ5YTcu LjRjODM3NmUgMTAwNjQ0Ci0tLSBhL3NyYy9uc2Zucy5tCisrKyBiL3NyYy9uc2Zucy5tCkBA IC0yNzUzLDEwICsyNzUzLDYgQEAgYW5kIEdOVXN0ZXAgaW1wbGVtZW50YXRpb25zICgiZGlz dHJpYnV0b3Itc3BlY2lmaWMgcmVsZWFzZQogICByZXR1cm4gbWFrZV9udW1iZXIgKDEgPDwg bWluIChkcHlpbmZvLT5uX3BsYW5lcywgMjQpKTsKIH0KCi0KLS8qIFVudXNlZCBkdW1teSBk ZWYgbmVlZGVkIGZvciBjb21wYXRpYmlsaXR5LiAqLwotTGlzcF9PYmplY3QgdGlwX2ZyYW1l OwotCiAvKiBUT0RPOiBtb3ZlIHRvIHhkaXNwIG9yIHNpbWlsYXIgKi8KIHN0YXRpYyB2b2lk CiBjb21wdXRlX3RpcF94eSAoc3RydWN0IGZyYW1lICpmLApkaWZmIC0tZ2l0IGEvc3JjL3cz MmZucy5jIGIvc3JjL3czMmZucy5jCmluZGV4IGVkMzc1Y2QuLjU1ZGI0ZDUgMTAwNjQ0Ci0t LSBhL3NyYy93MzJmbnMuYworKysgYi9zcmMvdzMyZm5zLmMKQEAgLTY0MjMsNyArNjQyMyw3 IEBAIERJU1BMQVkgc2hvdWxkIGJlIGVpdGhlciBhIGZyYW1lIG9yIGEgZGlzcGxheSBuYW1l IChhIHN0cmluZykuCiAgICAgewogICAgICAgc3RydWN0IGZyYW1lICpmID0gWEZSQU1FIChm cmFtZSk7CgotICAgICAgaWYgKEZSQU1FX1czMl9QIChmKSAmJiAhRVEgKGZyYW1lLCB0aXBf ZnJhbWUpKQorICAgICAgaWYgKEZSQU1FX1czMl9QIChmKSAmJiAhRlJBTUVfVE9PTFRJUF9Q IChmKSkKIAl7CiAJICBITU9OSVRPUiBtb25pdG9yID0KIAkgICAgbW9uaXRvcl9mcm9tX3dp bmRvd19mbiAoRlJBTUVfVzMyX1dJTkRPVyAoZiksCkBAIC02NTEwLDcgKzY1MTAsNyBAQCBE SVNQTEFZIHNob3VsZCBiZSBlaXRoZXIgYSBmcmFtZSBvciBhIGRpc3BsYXkgbmFtZSAoYSBz dHJpbmcpLgogICAgIHsKICAgICAgIHN0cnVjdCBmcmFtZSAqZiA9IFhGUkFNRSAoZnJhbWUp OwoKLSAgICAgIGlmIChGUkFNRV9XMzJfUCAoZikgJiYgIUVRIChmcmFtZSwgdGlwX2ZyYW1l KSkKKyAgICAgIGlmIChGUkFNRV9XMzJfUCAoZikgJiYgIUZSQU1FX1RPT0xUSVBfUCAoZikp CiAJZnJhbWVzID0gRmNvbnMgKGZyYW1lLCBmcmFtZXMpOwogICAgIH0KICAgYXR0cmlidXRl cyA9IEZjb25zIChGY29ucyAoUWZyYW1lcywgZnJhbWVzKSwgYXR0cmlidXRlcyk7CkBAIC02 OTE2LDIwICs2OTE2LDI1IEBAIG5vIHZhbHVlIG9mIFRZUEUgKGFsd2F5cyBzdHJpbmcgaW4g dGhlIE1TIFdpbmRvd3MgY2FzZSkuICAqLykKIHN0YXRpYyB2b2lkIGNvbXB1dGVfdGlwX3h5 IChzdHJ1Y3QgZnJhbWUgKiwgTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0LAogCQkJICAgIExp c3BfT2JqZWN0LCBpbnQsIGludCwgaW50ICosIGludCAqKTsKCi0vKiBUaGUgZnJhbWUgb2Yg YSBjdXJyZW50bHkgdmlzaWJsZSB0b29sdGlwLiAgKi8KLQorLyogVGhlIGZyYW1lIG9mIHRo ZSBjdXJyZW50bHkgdmlzaWJsZSB0b29sdGlwLiAgKi8KIExpc3BfT2JqZWN0IHRpcF9mcmFt ZTsKCi0vKiBJZiBub24tbmlsLCBhIHRpbWVyIHN0YXJ0ZWQgdGhhdCBoaWRlcyB0aGUgbGFz dCB0b29sdGlwIHdoZW4gaXQKLSAgIGZpcmVzLiAgKi8KKy8qIFRoZSB3aW5kb3ctc3lzdGVt IHdpbmRvdyBjb3JyZXNwb25kaW5nIHRvIHRoZSBmcmFtZSBvZiB0aGUKKyAgIGN1cnJlbnRs eSB2aXNpYmxlIHRvb2x0aXAuICAqLworV2luZG93IHRpcF93aW5kb3c7CgorLyogQSB0aW1l ciB0aGF0IGhpZGVzIG9yIGRlbGV0ZXMgdGhlIGN1cnJlbnRseSB2aXNpYmxlIHRvb2x0aXAg d2hlbiBpdAorICAgZmlyZXMuICAqLwogTGlzcF9PYmplY3QgdGlwX3RpbWVyOwotV2luZG93 IHRpcF93aW5kb3c7CgotLyogSWYgbm9uLW5pbCwgYSB2ZWN0b3Igb2YgMyBlbGVtZW50cyBj b250YWluaW5nIHRoZSBsYXN0IGFyZ3MKLSAgIHdpdGggd2hpY2ggeC1zaG93LXRpcCB3YXMg Y2FsbGVkLiAgU2VlIHRoZXJlLiAgKi8KKy8qIFNUUklORyBhcmd1bWVudCBvZiBsYXN0IGB4 LXNob3ctdGlwJyBjYWxsLiAgKi8KK0xpc3BfT2JqZWN0IHRpcF9sYXN0X3N0cmluZzsKCi1M aXNwX09iamVjdCBsYXN0X3Nob3dfdGlwX2FyZ3M7CisvKiBGUkFNRSBhcmd1bWVudCBvZiBs YXN0IGB4LXNob3ctdGlwJyBjYWxsLiAgKi8KK0xpc3BfT2JqZWN0IHRpcF9sYXN0X2ZyYW1l OworCisvKiBQQVJNUyBhcmd1bWVudCBvZiBsYXN0IGB4LXNob3ctdGlwJyBjYWxsLiAgKi8K K0xpc3BfT2JqZWN0IHRpcF9sYXN0X3Bhcm1zOwoKCiBzdGF0aWMgdm9pZApAQCAtNzAwMiw2 ICs3MDA3LDcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZV90aXBfeHkgKHN0cnVjdCBmcmFtZSAq LCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsCgogICBGUkFNRV9GT05UU0VUIChmKSAgPSAt MTsKICAgZnNldF9pY29uX25hbWUgKGYsIFFuaWwpOworICBmLT50b29sdGlwID0gdHJ1ZTsK CiAjaWZkZWYgR0xZUEhfREVCVUcKICAgaW1hZ2VfY2FjaGVfcmVmY291bnQgPQpAQCAtNzEx Myw5ICs3MTE5LDYgQEAgc3RhdGljIHZvaWQgY29tcHV0ZV90aXBfeHkgKHN0cnVjdCBmcmFt ZSAqLCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsCiAgIFNFVF9GUkFNRV9MSU5FUyAoZiwg MCk7CiAgIGFkanVzdF9mcmFtZV9zaXplIChmLCB3aWR0aCAqIEZSQU1FX0NPTFVNTl9XSURU SCAoZiksCiAJCSAgICAgaGVpZ2h0ICogRlJBTUVfTElORV9IRUlHSFQgKGYpLCAwLCB0cnVl LCBRdGlwX2ZyYW1lKTsKLSAgLyogQWRkIGB0b29sdGlwJyBmcmFtZSBwYXJhbWV0ZXIncyBk ZWZhdWx0IHZhbHVlLiAqLwotICBpZiAoTklMUCAoRmZyYW1lX3BhcmFtZXRlciAoZnJhbWUs IFF0b29sdGlwKSkpCi0gICAgRm1vZGlmeV9mcmFtZV9wYXJhbWV0ZXJzIChmcmFtZSwgRmNv bnMgKEZjb25zIChRdG9vbHRpcCwgUXQpLCBRbmlsKSk7CgogICAvKiBTZXQgdXAgZmFjZXMg YWZ0ZXIgYWxsIGZyYW1lIHBhcmFtZXRlcnMgYXJlIGtub3duLiAgVGhpcyBjYWxsCiAgICAg IGFsc28gbWVyZ2VzIGluIGZhY2UgYXR0cmlidXRlcyBzcGVjaWZpZWQgZm9yIG5ldyBmcmFt ZXMuCkBAIC03MjYxLDcgKzcyNjQsMTcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZV90aXBfeHkg KHN0cnVjdCBmcmFtZSAqLCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsCiAgICAgKnJvb3Rf eCA9IG1pbl94OwogfQoKLS8qIEhpZGUgdG9vbHRpcC4gIERlbGV0ZSBpdHMgZnJhbWUgaWYg REVMRVRFIGlzIHRydWUuICAqLworLyoqCisgKiB4X2hpZGVfdGlwOgorICoKKyAqIEhpZGUg Y3VycmVudGx5IHZpc2libGUgdG9vbHRpcCBhbmQgY2FuY2VsIGl0cyB0aW1lci4KKyAqCisg KiBUaGlzIHdpbGwgdHJ5IHRvIG1ha2UgdG9vbHRpcF9mcmFtZSBpbnZpc2libGUgKGlmIERF TEVURSBpcyBmYWxzZSkKKyAqIG9yIGRlbGV0ZSB0b29sdGlwX2ZyYW1lIChpZiBERUxFVEUg aXMgdHJ1ZSkuCisgKgorICogUmV0dXJuIFF0IGlmIHRoZSB0b29sdGlwIHdhcyBlaXRoZXIg ZGVsZXRlZCBvciBtYWRlIGludmlzaWJsZSwgUW5pbAorICogb3RoZXJ3aXNlLgorICovCiBz dGF0aWMgTGlzcF9PYmplY3QKIHhfaGlkZV90aXAgKGJvb2wgZGVsZXRlKQogewpAQCAtNzI4 NiwxNSArNzI5OSwyMCBAQCBzdGF0aWMgdm9pZCBjb21wdXRlX3RpcF94eSAoc3RydWN0IGZy YW1lICosIExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCwKCiAgICAgICBpZiAoRlJBTUVQICh0 aXBfZnJhbWUpKQogCXsKLQkgIGlmIChkZWxldGUpCisJICBpZiAoRlJBTUVfTElWRV9QIChY RlJBTUUgKHRpcF9mcmFtZSkpKQogCSAgICB7Ci0JICAgICAgZGVsZXRlX2ZyYW1lICh0aXBf ZnJhbWUsIFFuaWwpOwotCSAgICAgIHRpcF9mcmFtZSA9IFFuaWw7CisJICAgICAgaWYgKGRl bGV0ZSkKKwkJeworCQkgIGRlbGV0ZV9mcmFtZSAodGlwX2ZyYW1lLCBRbmlsKTsKKwkJICB0 aXBfZnJhbWUgPSBRbmlsOworCQl9CisJICAgICAgZWxzZQorCQl4X21ha2VfZnJhbWVfaW52 aXNpYmxlIChYRlJBTUUgKHRpcF9mcmFtZSkpOworCisJICAgICAgd2FzX29wZW4gPSBRdDsK IAkgICAgfQogCSAgZWxzZQotCSAgICB4X21ha2VfZnJhbWVfaW52aXNpYmxlIChYRlJBTUUg KHRpcF9mcmFtZSkpOwotCi0JICB3YXNfb3BlbiA9IFF0OworCSAgICB0aXBfZnJhbWUgPSBR bmlsOwogCX0KICAgICAgIGVsc2UKIAl0aXBfZnJhbWUgPSBRbmlsOwpAQCAtNzMzNCw3ICs3 MzUyLDggQEAgd2l0aCBvZmZzZXQgRFkgYWRkZWQgKGRlZmF1bHQgaXMgLTEwKS4KCiBBIHRv b2x0aXAncyBtYXhpbXVtIHNpemUgaXMgc3BlY2lmaWVkIGJ5IGB4LW1heC10b29sdGlwLXNp emUnLgogVGV4dCBsYXJnZXIgdGhhbiB0aGUgc3BlY2lmaWVkIHNpemUgaXMgY2xpcHBlZC4g ICovKQotICAoTGlzcF9PYmplY3Qgc3RyaW5nLCBMaXNwX09iamVjdCBmcmFtZSwgTGlzcF9P YmplY3QgcGFybXMsIExpc3BfT2JqZWN0IHRpbWVvdXQsIExpc3BfT2JqZWN0IGR4LCBMaXNw X09iamVjdCBkeSkKKyAgKExpc3BfT2JqZWN0IHN0cmluZywgTGlzcF9PYmplY3QgZnJhbWUs IExpc3BfT2JqZWN0IHBhcm1zLAorICAgTGlzcF9PYmplY3QgdGltZW91dCwgTGlzcF9PYmpl Y3QgZHgsIExpc3BfT2JqZWN0IGR5KQogewogICBzdHJ1Y3QgZnJhbWUgKnRpcF9mOwogICBz dHJ1Y3Qgd2luZG93ICp3OwpAQCAtNzM0NSw4ICs3MzY0LDcgQEAgd2l0aCBvZmZzZXQgRFkg YWRkZWQgKGRlZmF1bHQgaXMgLTEwKS4KICAgaW50IG9sZF93aW5kb3dzX29yX2J1ZmZlcnNf Y2hhbmdlZCA9IHdpbmRvd3Nfb3JfYnVmZmVyc19jaGFuZ2VkOwogICBwdHJkaWZmX3QgY291 bnQgPSBTUEVDUERMX0lOREVYICgpOwogICBwdHJkaWZmX3QgY291bnRfMTsKLSAgTGlzcF9P YmplY3Qgd2luZG93LCBzaXplOwotICBMaXNwX09iamVjdCB0aXBfYnVmOworICBMaXNwX09i amVjdCB3aW5kb3csIHNpemUsIHRpcF9idWY7CiAgIEFVVE9fU1RSSU5HICh0aXAsICIgKnRp cCoiKTsKCiAgIHNwZWNiaW5kIChRaW5oaWJpdF9yZWRpc3BsYXksIFF0KTsKQEAgLTczNjgs MTkgKzczODYsMTIgQEAgd2l0aCBvZmZzZXQgRFkgYWRkZWQgKGRlZmF1bHQgaXMgLTEwKS4K ICAgZWxzZQogICAgIENIRUNLX05VTUJFUiAoZHkpOwoKLSAgaWYgKE5JTFAgKGxhc3Rfc2hv d190aXBfYXJncykpCi0gICAgbGFzdF9zaG93X3RpcF9hcmdzID0gRm1ha2VfdmVjdG9yICht YWtlX251bWJlciAoMyksIFFuaWwpOwotCiAgIGlmIChGUkFNRVAgKHRpcF9mcmFtZSkgJiYg RlJBTUVfTElWRV9QIChYRlJBTUUgKHRpcF9mcmFtZSkpKQogICAgIHsKLSAgICAgIExpc3Bf T2JqZWN0IGxhc3Rfc3RyaW5nID0gQVJFRiAobGFzdF9zaG93X3RpcF9hcmdzLCAwKTsKLSAg ICAgIExpc3BfT2JqZWN0IGxhc3RfZnJhbWUgPSBBUkVGIChsYXN0X3Nob3dfdGlwX2FyZ3Ms IDEpOwotICAgICAgTGlzcF9PYmplY3QgbGFzdF9wYXJtcyA9IEFSRUYgKGxhc3Rfc2hvd190 aXBfYXJncywgMik7Ci0KICAgICAgIGlmIChGUkFNRV9WSVNJQkxFX1AgKFhGUkFNRSAodGlw X2ZyYW1lKSkKLQkgICYmIEVRIChmcmFtZSwgbGFzdF9mcmFtZSkKLQkgICYmICFOSUxQIChG ZXF1YWxfaW5jbHVkaW5nX3Byb3BlcnRpZXMgKGxhc3Rfc3RyaW5nLCBzdHJpbmcpKQotCSAg JiYgIU5JTFAgKEZlcXVhbCAobGFzdF9wYXJtcywgcGFybXMpKSkKKwkgICYmIEVRIChmcmFt ZSwgdGlwX2xhc3RfZnJhbWUpCisJICAmJiAhTklMUCAoRmVxdWFsX2luY2x1ZGluZ19wcm9w ZXJ0aWVzIChzdHJpbmcsIHRpcF9sYXN0X3N0cmluZykpCisJICAmJiAhTklMUCAoRmVxdWFs IChwYXJtcywgdGlwX2xhc3RfcGFybXMpKSkKIAl7CiAJICAvKiBPbmx5IERYIGFuZCBEWSBo YXZlIGNoYW5nZWQuICAqLwogCSAgdGlwX2YgPSBYRlJBTUUgKHRpcF9mcmFtZSk7CkBAIC03 NDE0LDE0ICs3NDI1LDE0IEBAIHdpdGggb2Zmc2V0IERZIGFkZGVkIChkZWZhdWx0IGlzIC0x MCkuCgogCSAgZ290byBzdGFydF90aW1lcjsKIAl9Ci0gICAgICBlbHNlIGlmICh0b29sdGlw X3JldXNlX2hpZGRlbl9mcmFtZSAmJiBFUSAoZnJhbWUsIGxhc3RfZnJhbWUpKQorICAgICAg ZWxzZSBpZiAodG9vbHRpcF9yZXVzZV9oaWRkZW5fZnJhbWUgJiYgRVEgKGZyYW1lLCB0aXBf bGFzdF9mcmFtZSkpCiAJewogCSAgYm9vbCBkZWxldGUgPSBmYWxzZTsKIAkgIExpc3BfT2Jq ZWN0IHRhaWwsIGVsdCwgcGFybSwgbGFzdDsKCiAJICAvKiBDaGVjayBpZiBldmVyeSBwYXJh bWV0ZXIgaW4gUEFSTVMgaGFzIHRoZSBzYW1lIHZhbHVlIGluCi0JICAgICBsYXN0X3Bhcm1z LiAgVGhpcyBtYXkgZGVzdHJ1Y3QgbGFzdF9wYXJtcyB3aGljaCwgaG93ZXZlciwKLQkgICAg IHdpbGwgYmUgcmVjcmVhdGVkIGJlbG93LiAgKi8KKwkgICAgIHRpcF9sYXN0X3Bhcm1zLiAg VGhpcyBtYXkgZGVzdHJ1Y3QgdGlwX2xhc3RfcGFybXMKKwkgICAgIHdoaWNoLCBob3dldmVy LCB3aWxsIGJlIHJlY3JlYXRlZCBiZWxvdy4gICovCiAJICBmb3IgKHRhaWwgPSBwYXJtczsg Q09OU1AgKHRhaWwpOyB0YWlsID0gWENEUiAodGFpbCkpCiAJICAgIHsKIAkgICAgICBlbHQg PSBYQ0FSICh0YWlsKTsKQEAgLTc0MzEsNyArNzQ0Miw3IEBAIHdpdGggb2Zmc2V0IERZIGFk ZGVkIChkZWZhdWx0IGlzIC0xMCkuCiAJICAgICAgaWYgKCFFUSAocGFybSwgUWxlZnQpICYm ICFFUSAocGFybSwgUXRvcCkKIAkJICAmJiAhRVEgKHBhcm0sIFFyaWdodCkgJiYgIUVRIChw YXJtLCBRYm90dG9tKSkKIAkJewotCQkgIGxhc3QgPSBGYXNzcSAocGFybSwgbGFzdF9wYXJt cyk7CisJCSAgbGFzdCA9IEZhc3NxIChwYXJtLCB0aXBfbGFzdF9wYXJtcyk7CiAJCSAgaWYg KE5JTFAgKEZlcXVhbCAoRmNkciAoZWx0KSwgRmNkciAobGFzdCkpKSkKIAkJICAgIHsKIAkJ ICAgICAgLyogV2UgbG9zdCwgZGVsZXRlIHRoZSBvbGQgdG9vbHRpcC4gICovCkBAIC03NDM5 LDE1ICs3NDUwLDE3IEBAIHdpdGggb2Zmc2V0IERZIGFkZGVkIChkZWZhdWx0IGlzIC0xMCku CiAJCSAgICAgIGJyZWFrOwogCQkgICAgfQogCQkgIGVsc2UKLQkJICAgIGxhc3RfcGFybXMg PSBjYWxsMiAoUWFzc3FfZGVsZXRlX2FsbCwgcGFybSwgbGFzdF9wYXJtcyk7CisJCSAgICB0 aXBfbGFzdF9wYXJtcyA9CisJCSAgICAgIGNhbGwyIChRYXNzcV9kZWxldGVfYWxsLCBwYXJt LCB0aXBfbGFzdF9wYXJtcyk7CiAJCX0KIAkgICAgICBlbHNlCi0JCWxhc3RfcGFybXMgPSBj YWxsMiAoUWFzc3FfZGVsZXRlX2FsbCwgcGFybSwgbGFzdF9wYXJtcyk7CisJCXRpcF9sYXN0 X3Bhcm1zID0KKwkJICBjYWxsMiAoUWFzc3FfZGVsZXRlX2FsbCwgcGFybSwgdGlwX2xhc3Rf cGFybXMpOwogCSAgICB9CgotCSAgLyogTm93IGNoZWNrIGlmIHRoZXJlJ3MgYSBwYXJhbWV0 ZXIgbGVmdCBpbiBsYXN0X3Bhcm1zIHdpdGggYQorCSAgLyogTm93IGNoZWNrIGlmIHRoZXJl J3MgYSBwYXJhbWV0ZXIgbGVmdCBpbiB0aXBfbGFzdF9wYXJtcyB3aXRoIGEKIAkgICAgIG5v bi1uaWwgdmFsdWUuICAqLwotCSAgZm9yICh0YWlsID0gbGFzdF9wYXJtczsgQ09OU1AgKHRh aWwpOyB0YWlsID0gWENEUiAodGFpbCkpCisJICBmb3IgKHRhaWwgPSB0aXBfbGFzdF9wYXJt czsgQ09OU1AgKHRhaWwpOyB0YWlsID0gWENEUiAodGFpbCkpCiAJICAgIHsKIAkgICAgICBl bHQgPSBYQ0FSICh0YWlsKTsKIAkgICAgICBwYXJtID0gRmNhciAoZWx0KTsKQEAgLTc0Njgs OSArNzQ4MSw5IEBAIHdpdGggb2Zmc2V0IERZIGFkZGVkIChkZWZhdWx0IGlzIC0xMCkuCiAg IGVsc2UKICAgICB4X2hpZGVfdGlwICh0cnVlKTsKCi0gIEFTRVQgKGxhc3Rfc2hvd190aXBf YXJncywgMCwgc3RyaW5nKTsKLSAgQVNFVCAobGFzdF9zaG93X3RpcF9hcmdzLCAxLCBmcmFt ZSk7Ci0gIEFTRVQgKGxhc3Rfc2hvd190aXBfYXJncywgMiwgcGFybXMpOworICB0aXBfbGFz dF9mcmFtZSA9IGZyYW1lOworICB0aXBfbGFzdF9zdHJpbmcgPSBzdHJpbmc7CisgIHRpcF9s YXN0X3Bhcm1zID0gcGFybXM7CgogICAvKiBCbG9jayBpbnB1dCB1bnRpbCB0aGUgdGlwIGhh cyBiZWVuIGZ1bGx5IGRyYXduLCB0byBhdm9pZCBjcmFzaGVzCiAgICAgIHdoZW4gZHJhd2lu ZyB0aXBzIGluIG1lbnVzLiAgKi8KQEAgLTc0ODYsNyArNzQ5OSw4IEBAIHdpdGggb2Zmc2V0 IERZIGFkZGVkIChkZWZhdWx0IGlzIC0xMCkuCiAgICAgICBpZiAoTklMUCAoRmFzc3EgKFFi b3JkZXJfd2lkdGgsIHBhcm1zKSkpCiAJcGFybXMgPSBGY29ucyAoRmNvbnMgKFFib3JkZXJf d2lkdGgsIG1ha2VfbnVtYmVyICgxKSksIHBhcm1zKTsKICAgICAgIGlmIChOSUxQIChGYXNz cSAoUWJvcmRlcl9jb2xvciwgcGFybXMpKSkKLQlwYXJtcyA9IEZjb25zIChGY29ucyAoUWJv cmRlcl9jb2xvciwgYnVpbGRfc3RyaW5nICgibGlnaHR5ZWxsb3ciKSksIHBhcm1zKTsKKwlw YXJtcyA9IEZjb25zIChGY29ucyAoUWJvcmRlcl9jb2xvciwgYnVpbGRfc3RyaW5nICgibGln aHR5ZWxsb3ciKSksCisJCSAgICAgICBwYXJtcyk7CiAgICAgICBpZiAoTklMUCAoRmFzc3Eg KFFiYWNrZ3JvdW5kX2NvbG9yLCBwYXJtcykpKQogCXBhcm1zID0gRmNvbnMgKEZjb25zIChR YmFja2dyb3VuZF9jb2xvciwgYnVpbGRfc3RyaW5nICgibGlnaHR5ZWxsb3ciKSksCiAJCSAg ICAgICBwYXJtcyk7CkBAIC0xMDgwNSw5ICsxMDgxOSwxMiBAQCBzdWNjZXNzaXZlIG1vdXNl IG1vdmUgKG9yIHNjcm9sbCBiYXIgZHJhZykgZXZlbnRzIGJlZm9yZSB0aGV5IGFyZQogICBz dGF0aWNwcm8gKCZ0aXBfdGltZXIpOwogICB0aXBfZnJhbWUgPSBRbmlsOwogICBzdGF0aWNw cm8gKCZ0aXBfZnJhbWUpOwotCi0gIGxhc3Rfc2hvd190aXBfYXJncyA9IFFuaWw7Ci0gIHN0 YXRpY3BybyAoJmxhc3Rfc2hvd190aXBfYXJncyk7CisgIHRpcF9sYXN0X2ZyYW1lID0gUW5p bDsKKyAgc3RhdGljcHJvICgmdGlwX2xhc3RfZnJhbWUpOworICB0aXBfbGFzdF9zdHJpbmcg PSBRbmlsOworICBzdGF0aWNwcm8gKCZ0aXBfbGFzdF9zdHJpbmcpOworICB0aXBfbGFzdF9w YXJtcyA9IFFuaWw7CisgIHN0YXRpY3BybyAoJnRpcF9sYXN0X3Bhcm1zKTsKCiAgIGRlZnN1 YnIgKCZTeF9maWxlX2RpYWxvZyk7CiAjaWZkZWYgV0lORE9XU05UCmRpZmYgLS1naXQgYS9z cmMvdzMydGVybS5jIGIvc3JjL3czMnRlcm0uYwppbmRleCBkYjRjY2Y1Li4xMzdjNzk4IDEw MDY0NAotLS0gYS9zcmMvdzMydGVybS5jCisrKyBiL3NyYy93MzJ0ZXJtLmMKQEAgLTU1Njks NyArNTU2OSw3IEBAIHN0YXRpYyB2b2lkIHhfaG9yaXpvbnRhbF9zY3JvbGxfYmFyX3JlcG9y dF9tb3Rpb24gKHN0cnVjdCBmcmFtZSAqKiwgTGlzcF9PYmplY3QKIAlzdHJ1Y3QgZnJhbWUg KmYgPSBYRlJBTUUgKGZyYW1lKTsKIAkvKiBUaGUgdG9vbHRpcCBoYXMgYmVlbiBkcmF3biBh bHJlYWR5LiAgQXZvaWQgdGhlCiAJICAgU0VUX0ZSQU1FX0dBUkJBR0VEIGJlbG93LiAgKi8K LQlpZiAoRVEgKGZyYW1lLCB0aXBfZnJhbWUpKQorCWlmIChGUkFNRV9UT09MVElQX1AgKGYp KQogCSAgY29udGludWU7CgogCS8qIENoZWNrICJ2aXNpYmxlIiBmcmFtZXMgYW5kIG1hcmsg ZWFjaCBhcyBvYnNjdXJlZCBvciBub3QuCkBAIC02MDQ2LDcgKzYwNDYsNyBAQCBzdGF0aWMg dm9pZCB4X2hvcml6b250YWxfc2Nyb2xsX2Jhcl9yZXBvcnRfbW90aW9uIChzdHJ1Y3QgZnJh bWUgKiosIExpc3BfT2JqZWN0CiAgICAgICAvKiBEb24ndCBjaGFuZ2UgdGhlIHNpemUgb2Yg YSB0aXAgZnJhbWU7IHRoZXJlJ3Mgbm8gcG9pbnQgaW4KIAkgZG9pbmcgaXQgYmVjYXVzZSBp dCdzIGRvbmUgaW4gRnhfc2hvd190aXAsIGFuZCBpdCBsZWFkcyB0bwogCSBwcm9ibGVtcyBi ZWNhdXNlIHRoZSB0aXAgZnJhbWUgaGFzIG5vIHdpZGdldC4gICovCi0gICAgICBpZiAoTklM UCAodGlwX2ZyYW1lKSB8fCBYRlJBTUUgKHRpcF9mcmFtZSkgIT0gZikKKyAgICAgIGlmICgh RlJBTUVfVE9PTFRJUF9QIChmKSkKIAlhZGp1c3RfZnJhbWVfc2l6ZSAoZiwgRlJBTUVfQ09M UyAoZikgKiBGUkFNRV9DT0xVTU5fV0lEVEggKGYpLAogCQkJICAgRlJBTUVfTElORVMgKGYp ICogRlJBTUVfTElORV9IRUlHSFQgKGYpLCAzLAogCQkJICAgZmFsc2UsIFFmb250KTsKZGlm ZiAtLWdpdCBhL3NyYy93MzJ0ZXJtLmggYi9zcmMvdzMydGVybS5oCmluZGV4IGU1MDBiNzMu LmM2OWJlYmUgMTAwNjQ0Ci0tLSBhL3NyYy93MzJ0ZXJtLmgKKysrIGIvc3JjL3czMnRlcm0u aApAQCAtODE3LDYgKzgxNyw4IEBAIHR5cGVkZWYgQk9PTCAoV0lOQVBJICogQXBwZW5kTWVu dVdfUHJvYykgKAogZXh0ZXJuIGludCB3MzJfc3lzdGVtX2NhcmV0X2hkcl9oZWlnaHQ7CiBl eHRlcm4gaW50IHczMl9zeXN0ZW1fY2FyZXRfbW9kZV9oZWlnaHQ7CgorZXh0ZXJuIFdpbmRv dyB0aXBfd2luZG93OworCiAjaWZkZWYgX01TQ19WRVIKICNpZm5kZWYgRW51bVN5c3RlbUxv Y2FsZXMKIC8qIE1TVkMgaGVhZGVycyBkZWZpbmUgdGhlc2Ugb25seSBmb3IgX1dJTjMyX1dJ Tk5UID49IDB4MDUwMC4gICovCmRpZmYgLS1naXQgYS9zcmMveGRpc3AuYyBiL3NyYy94ZGlz cC5jCmluZGV4IDU5ZmEwMGUuLmQyYmI0N2YgMTAwNjQ0Ci0tLSBhL3NyYy94ZGlzcC5jCisr KyBiL3NyYy94ZGlzcC5jCkBAIC0xMTg2Niw3ICsxMTg2Niw3IEBAIHN0YXRpYyB2b2lkIEFU VFJJQlVURV9GT1JNQVRfUFJJTlRGICgxLCAwKQogICBpZiAoKEZSQU1FX1dJTkRPV19QIChm KQogICAgICAgIHx8IEZSQU1FX01JTklCVUZfT05MWV9QIChmKQogICAgICAgIHx8IGYtPmV4 cGxpY2l0X25hbWUpCi0gICAgICAmJiBOSUxQIChGZnJhbWVfcGFyYW1ldGVyIChmcmFtZSwg UXRvb2x0aXApKSkKKyAgICAgICYmICFGUkFNRV9UT09MVElQX1AgKGYpKQogICAgIHsKICAg ICAgIC8qIERvIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSB2aXNpYmxlIGZyYW1lIG9uIHRoaXMg WCBkaXNwbGF5PyAgKi8KICAgICAgIExpc3BfT2JqZWN0IHRhaWwsIG90aGVyX2ZyYW1lLCBm bXQ7CkBAIC0xMTg4Myw4ICsxMTg4Myw4IEBAIHN0YXRpYyB2b2lkIEFUVFJJQlVURV9GT1JN QVRfUFJJTlRGICgxLCAwKQogCSAgaWYgKHRmICE9IGYKIAkgICAgICAmJiBGUkFNRV9LQk9B UkQgKHRmKSA9PSBGUkFNRV9LQk9BUkQgKGYpCiAJICAgICAgJiYgIUZSQU1FX01JTklCVUZf T05MWV9QICh0ZikKLQkgICAgICAmJiAhRVEgKG90aGVyX2ZyYW1lLCB0aXBfZnJhbWUpCiAJ ICAgICAgJiYgIUZSQU1FX1BBUkVOVF9GUkFNRSAodGYpCisJICAgICAgJiYgIUZSQU1FX1RP T0xUSVBfUCAodGYpCiAJICAgICAgJiYgKEZSQU1FX1ZJU0lCTEVfUCAodGYpIHx8IEZSQU1F X0lDT05JRklFRF9QICh0ZikpKQogCSAgICBicmVhazsKIAl9CkBAIC0xMTk1MywxMyArMTE5 NTMsNiBAQCBzdGF0aWMgdm9pZCBBVFRSSUJVVEVfRk9STUFUX1BSSU5URiAoMSwgMCkKIHsK ICAgYm9vbCBhbGxfd2luZG93cyA9IHdpbmRvd3Nfb3JfYnVmZmVyc19jaGFuZ2VkIHx8IHVw ZGF0ZV9tb2RlX2xpbmVzOwogICBib29sIHNvbWVfd2luZG93cyA9IFJFRElTUExBWV9TT01F X1AgKCk7Ci0gIExpc3BfT2JqZWN0IHRvb2x0aXBfZnJhbWU7Ci0KLSNpZmRlZiBIQVZFX1dJ TkRPV19TWVNURU0KLSAgdG9vbHRpcF9mcmFtZSA9IHRpcF9mcmFtZTsKLSNlbHNlCi0gIHRv b2x0aXBfZnJhbWUgPSBRbmlsOwotI2VuZGlmCgogICBpZiAoRlVOQ1RJT05QIChWcHJlX3Jl ZGlzcGxheV9mdW5jdGlvbikpCiAgICAgewpAQCAtMTIwMDAsNyArMTE5OTMsNyBAQCBzdGF0 aWMgdm9pZCBBVFRSSUJVVEVfRk9STUFUX1BSSU5URiAoMSwgMCkKIAkgICAgICAmJiAhWEJV RkZFUiAody0+Y29udGVudHMpLT50ZXh0LT5yZWRpc3BsYXkpCiAJICAgIGNvbnRpbnVlOwoK LQkgIGlmICghRVEgKGZyYW1lLCB0b29sdGlwX2ZyYW1lKQorCSAgaWYgKCFGUkFNRV9UT09M VElQX1AgKGYpCiAJICAgICAgJiYgIUZSQU1FX1BBUkVOVF9GUkFNRSAoZikKIAkgICAgICAm JiAoRlJBTUVfSUNPTklGSUVEX1AgKGYpCiAJCSAgfHwgRlJBTUVfVklTSUJMRV9QIChmKSA9 PSAxCkBAIC0xMjAzOCw3ICsxMjAzMSw3IEBAIHN0YXRpYyB2b2lkIEFUVFJJQlVURV9GT1JN QVRfUFJJTlRGICgxLCAwKQogCSAgc3RydWN0IHdpbmRvdyAqdyA9IFhXSU5ET1cgKEZSQU1F X1NFTEVDVEVEX1dJTkRPVyAoZikpOwoKIAkgIC8qIElnbm9yZSB0b29sdGlwIGZyYW1lLiAg Ki8KLQkgIGlmIChFUSAoZnJhbWUsIHRvb2x0aXBfZnJhbWUpKQorCSAgaWYgKEZSQU1FX1RP T0xUSVBfUCAoZikpCiAJICAgIGNvbnRpbnVlOwoKIAkgIGlmIChzb21lX3dpbmRvd3MKQEAg LTIxMTYwLDEzICsyMTE1Myw3IEBAIHN0cnVjdCBnbHlwaF9yb3cgKgoKICNpZmRlZiBIQVZF X1dJTkRPV19TWVNURU0KICAgLyogRG9uJ3QgZGlzcGxheSBsaW5lIG51bWJlciBpbiB0b29s dGlwIGZyYW1lcy4gICovCi0gIGlmIChGUkFNRVAgKHRpcF9mcmFtZSkgJiYgRVEgKFdJTkRP V19GUkFNRSAoaXQtPncpLCB0aXBfZnJhbWUpCi0jaWZkZWYgVVNFX0dUSwotICAgICAgLyog R1RLIGJ1aWxkcyBzdG9yZSBpbiB0aXBfZnJhbWUgdGhlIGZyYW1lIHRoYXQgc2hvd3MgdGhl IHRpcCwKLQkgc28gd2UgbmVlZCBhbiBhZGRpdGlvbmFsIHRlc3QuICAqLwotICAgICAgJiYg IU5JTFAgKEZmcmFtZV9wYXJhbWV0ZXIgKHRpcF9mcmFtZSwgUXRvb2x0aXApKQotI2VuZGlm Ci0gICAgICApCisgIGlmIChGUkFNRV9UT09MVElQX1AgKFhGUkFNRSAoV0lORE9XX0ZSQU1F IChpdC0+dykpKSkKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKCkBAIC0zMDg0MSw5ICsz MDgyOCwxMSBAQCBBIHBvbHlnb24gaXMgYSBjb25zIChwb2x5IC4gW3gwIHkwIHgxIHkxIC4u Ll0pIHdoZXJlIGVhY2ggcGFpciBpbiB0aGUKIAkJPSBidWZmZXJfbG9jYWxfdmFsdWUgKFFt b2RlX2xpbmVfZGVmYXVsdF9oZWxwX2VjaG8sCiAJCQkJICAgICAgdy0+Y29udGVudHMpOwoK LQkgICAgICBpZiAoU1RSSU5HUCAoZGVmYXVsdF9oZWxwKSkKKwkgICAgICBpZiAoRlVOQ1RJ T05QIChkZWZhdWx0X2hlbHApIHx8IFNUUklOR1AgKGRlZmF1bHRfaGVscCkpCiAJCXsKLQkJ ICBoZWxwX2VjaG9fc3RyaW5nID0gZGVmYXVsdF9oZWxwOworCQkgIGhlbHBfZWNob19zdHJp bmcgPSAoRlVOQ1RJT05QIChkZWZhdWx0X2hlbHApCisJCQkJICAgICAgPyBzYWZlX2NhbGwx IChkZWZhdWx0X2hlbHAsIHdpbmRvdykKKwkJCQkgICAgICA6IGRlZmF1bHRfaGVscCk7CiAJ CSAgWFNFVFdJTkRPVyAoaGVscF9lY2hvX3dpbmRvdywgdyk7CiAJCSAgaGVscF9lY2hvX29i amVjdCA9IFFuaWw7CiAJCSAgaGVscF9lY2hvX3BvcyA9IC0xOwpkaWZmIC0tZ2l0IGEvc3Jj L3hmbnMuYyBiL3NyYy94Zm5zLmMKaW5kZXggMTJiN2Q4My4uMDE3NmUyYiAxMDA2NDQKLS0t IGEvc3JjL3hmbnMuYworKysgYi9zcmMveGZucy5jCkBAIC00NjEyLDggKzQ2MTIsOSBAQCBz dHJ1Y3QgbW91c2VfY3Vyc29yX2RhdGEgewogICAgIHsKICAgICAgIHN0cnVjdCBmcmFtZSAq ZiA9IFhGUkFNRSAoZnJhbWUpOwoKLSAgICAgIGlmIChGUkFNRV9YX1AgKGYpICYmIEZSQU1F X0RJU1BMQVlfSU5GTyAoZikgPT0gZHB5aW5mbwotCSAgJiYgIUVRIChmcmFtZSwgdGlwX2Zy YW1lKSkKKyAgICAgIGlmIChGUkFNRV9YX1AgKGYpCisJICAmJiBGUkFNRV9ESVNQTEFZX0lO Rk8gKGYpID09IGRweWluZm8KKwkgICYmICFGUkFNRV9UT09MVElQX1AgKGYpKQogCXsKIAkg IGludCBpID0geF9nZXRfbW9uaXRvcl9mb3JfZnJhbWUgKGYsIG1vbml0b3JzLCBuX21vbml0 b3JzKTsKIAkgIEFTRVQgKG1vbml0b3JfZnJhbWVzLCBpLCBGY29ucyAoZnJhbWUsIEFSRUYg KG1vbml0b3JfZnJhbWVzLCBpKSkpOwpAQCAtNDkxNCwxMiArNDkxNSw5IEBAIHN0cnVjdCBt b3VzZV9jdXJzb3JfZGF0YSB7CiAgICAgewogICAgICAgc3RydWN0IGZyYW1lICpmID0gWEZS QU1FIChmcmFtZSk7CgotICAgICAgaWYgKEZSQU1FX1hfUCAoZikgJiYgRlJBTUVfRElTUExB WV9JTkZPIChmKSA9PSBkcHlpbmZvCi0JICAmJiAhKEVRIChmcmFtZSwgdGlwX2ZyYW1lKQot I2lmZGVmIFVTRV9HVEsKLQkgICAgICAgJiYgIU5JTFAgKEZmcmFtZV9wYXJhbWV0ZXIgKHRp cF9mcmFtZSwgUXRvb2x0aXApKQotI2VuZGlmCi0JICAgICAgICkpCisgICAgICBpZiAoRlJB TUVfWF9QIChmKQorCSAgJiYgRlJBTUVfRElTUExBWV9JTkZPIChmKSA9PSBkcHlpbmZvCisJ ICAmJiAhRlJBTUVfVE9PTFRJUF9QIChmKSkKIAl7CiAJICBHZGtXaW5kb3cgKmd3aW4gPSBn dGtfd2lkZ2V0X2dldF93aW5kb3cgKEZSQU1FX0dUS19XSURHRVQgKGYpKTsKCkBAIC02MDUy LDIyICs2MDUwLDI3IEBAIG5vIHZhbHVlIG9mIFRZUEUgKGFsd2F5cyBzdHJpbmcgaW4gdGhl IE1TIFdpbmRvd3MgY2FzZSkuICAqLykKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiBzdGF0aWMg dm9pZCBjb21wdXRlX3RpcF94eSAoc3RydWN0IGZyYW1lICosIExpc3BfT2JqZWN0LCBMaXNw X09iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXNwX09iamVjdCwgaW50 LCBpbnQsIGludCAqLCBpbnQgKik7Ci0KLS8qIFRoZSBmcmFtZSBvZiBhIGN1cnJlbnRseSB2 aXNpYmxlIHRvb2x0aXAuICAqLworCQkJICAgIExpc3BfT2JqZWN0LCBpbnQsIGludCwgaW50 ICosIGludCAqKTsKCisvKiBUaGUgZnJhbWUgb2YgdGhlIGN1cnJlbnRseSB2aXNpYmxlIHRv b2x0aXAuICAqLwogTGlzcF9PYmplY3QgdGlwX2ZyYW1lOwoKLS8qIElmIG5vbi1uaWwsIGEg dGltZXIgc3RhcnRlZCB0aGF0IGhpZGVzIHRoZSBsYXN0IHRvb2x0aXAgd2hlbiBpdAorLyog VGhlIHdpbmRvdy1zeXN0ZW0gd2luZG93IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZyYW1lIG9m IHRoZQorICAgY3VycmVudGx5IHZpc2libGUgdG9vbHRpcC4gICovCitXaW5kb3cgdGlwX3dp bmRvdzsKKworLyogQSB0aW1lciB0aGF0IGhpZGVzIG9yIGRlbGV0ZXMgdGhlIGN1cnJlbnRs eSB2aXNpYmxlIHRvb2x0aXAgd2hlbiBpdAogICAgZmlyZXMuICAqLworTGlzcF9PYmplY3Qg dGlwX3RpbWVyOwoKLXN0YXRpYyBMaXNwX09iamVjdCB0aXBfdGltZXI7Ci1XaW5kb3cgdGlw X3dpbmRvdzsKKy8qIFNUUklORyBhcmd1bWVudCBvZiBsYXN0IGB4LXNob3ctdGlwJyBjYWxs LiAgKi8KK0xpc3BfT2JqZWN0IHRpcF9sYXN0X3N0cmluZzsKCi0vKiBJZiBub24tbmlsLCBh IHZlY3RvciBvZiAzIGVsZW1lbnRzIGNvbnRhaW5pbmcgdGhlIGxhc3QgYXJncwotICAgd2l0 aCB3aGljaCB4LXNob3ctdGlwIHdhcyBjYWxsZWQuICBTZWUgdGhlcmUuICAqLworLyogRlJB TUUgYXJndW1lbnQgb2YgbGFzdCBgeC1zaG93LXRpcCcgY2FsbC4gICovCitMaXNwX09iamVj dCB0aXBfbGFzdF9mcmFtZTsKCi1zdGF0aWMgTGlzcF9PYmplY3QgbGFzdF9zaG93X3RpcF9h cmdzOworLyogUEFSTVMgYXJndW1lbnQgb2YgbGFzdCBgeC1zaG93LXRpcCcgY2FsbC4gICov CitMaXNwX09iamVjdCB0aXBfbGFzdF9wYXJtczsKCgogc3RhdGljIHZvaWQKQEAgLTYxNDEs NiArNjE0NCw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVfdGlwX3h5IChzdHJ1Y3QgZnJhbWUg KiwgTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0LAogICBmLT5vdXRwdXRfZGF0YS54LT53aGl0 ZV9yZWxpZWYucGl4ZWwgPSAtMTsKICAgZi0+b3V0cHV0X2RhdGEueC0+YmxhY2tfcmVsaWVm LnBpeGVsID0gLTE7CgorICBmLT50b29sdGlwID0gdHJ1ZTsKICAgZnNldF9pY29uX25hbWUg KGYsIFFuaWwpOwogICBGUkFNRV9ESVNQTEFZX0lORk8gKGYpID0gZHB5aW5mbzsKICAgZi0+ b3V0cHV0X2RhdGEueC0+cGFyZW50X2Rlc2MgPSBGUkFNRV9ESVNQTEFZX0lORk8gKGYpLT5y b290X3dpbmRvdzsKQEAgLTYzMjQsMTMgKzYzMjgsNiBAQCBzdGF0aWMgdm9pZCBjb21wdXRl X3RpcF94eSAoc3RydWN0IGZyYW1lICosIExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCwKICAg U0VUX0ZSQU1FX0xJTkVTIChmLCAwKTsKICAgY2hhbmdlX2ZyYW1lX3NpemUgKGYsIHdpZHRo LCBoZWlnaHQsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwoKLSAgLyogQWRkIGB0b29s dGlwJyBmcmFtZSBwYXJhbWV0ZXIncyBkZWZhdWx0IHZhbHVlLiAqLwotICBpZiAoTklMUCAo RmZyYW1lX3BhcmFtZXRlciAoZnJhbWUsIFF0b29sdGlwKSkpCi0gICAgewotICAgICAgQVVU T19GUkFNRV9BUkcgKGFyZywgUXRvb2x0aXAsIFF0KTsKLSAgICAgIEZtb2RpZnlfZnJhbWVf cGFyYW1ldGVycyAoZnJhbWUsIGFyZyk7Ci0gICAgfQotCiAgIC8qIEZJWE1FIC0gY2FuIHRo aXMgYmUgZG9uZSBpbiBhIHNpbWlsYXIgd2F5IHRvIG5vcm1hbCBmcmFtZXM/CiAgICAgIGh0 dHBzOi8vbGlzdHMuZ251Lm9yZy9yL2VtYWNzLWRldmVsLzIwMDctMTAvbXNnMDA2NDEuaHRt bCAqLwoKQEAgLTY0MDUsNyArNjQwMiw5IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVfdGlwX3h5 IChzdHJ1Y3QgZnJhbWUgKiwgTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0LAogICAgdGhlIGRp c3BsYXkgaW4gKlJPT1RfWCwgYW5kICpST09UX1kuICAqLwoKIHN0YXRpYyB2b2lkCi1jb21w dXRlX3RpcF94eSAoc3RydWN0IGZyYW1lICpmLCBMaXNwX09iamVjdCBwYXJtcywgTGlzcF9P YmplY3QgZHgsIExpc3BfT2JqZWN0IGR5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCAq cm9vdF94LCBpbnQgKnJvb3RfeSkKK2NvbXB1dGVfdGlwX3h5IChzdHJ1Y3QgZnJhbWUgKmYs CisJCUxpc3BfT2JqZWN0IHBhcm1zLCBMaXNwX09iamVjdCBkeCwgTGlzcF9PYmplY3QgZHks CisJCWludCB3aWR0aCwgaW50IGhlaWdodCwgaW50ICpyb290X3gsIGludCAqcm9vdF95KQog ewogICBMaXNwX09iamVjdCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgIGludCB3aW5f eCwgd2luX3k7CkBAIC02NTAyLDcgKzY1MDEsMTkgQEAgc3RhdGljIHZvaWQgY29tcHV0ZV90 aXBfeHkgKHN0cnVjdCBmcmFtZSAqLCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsCiB9CgoK LS8qIEhpZGUgdG9vbHRpcC4gIERlbGV0ZSBpdHMgZnJhbWUgaWYgREVMRVRFIGlzIHRydWUu ICAqLworLyoqCisgKiB4X2hpZGVfdGlwOgorICoKKyAqIEhpZGUgY3VycmVudGx5IHZpc2li bGUgdG9vbHRpcCBhbmQgY2FuY2VsIGl0cyB0aW1lci4KKyAqCisgKiBJZiBHVEsrIHN5c3Rl bSB0b29sdGlwcyBhcmUgdXNlZCwgdGhpcyB3aWxsIHRyeSB0byBoaWRlIHRoZSB0b29sdGlw CisgKiByZWZlcmVuY2VkIGJ5IHRoZSB4X291dHB1dCBzdHJ1Y3R1cmUgb2YgdG9vbHRpcF9s YXN0X2ZyYW1lLiAgRm9yCisgKiBFbWFjcyB0b29sdGlwcyB0aGlzIHdpbGwgdHJ5IHRvIG1h a2UgdG9vbHRpcF9mcmFtZSBpbnZpc2libGUgKGlmCisgKiBERUxFVEUgaXMgZmFsc2UpIG9y IGRlbGV0ZSB0b29sdGlwX2ZyYW1lIChpZiBERUxFVEUgaXMgdHJ1ZSkuCisgKgorICogUmV0 dXJuIFF0IGlmIHRoZSB0b29sdGlwIHdhcyBlaXRoZXIgZGVsZXRlZCBvciBtYWRlIGludmlz aWJsZSwgUW5pbAorICogb3RoZXJ3aXNlLgorICovCiBzdGF0aWMgTGlzcF9PYmplY3QKIHhf aGlkZV90aXAgKGJvb2wgZGVsZXRlKQogewpAQCAtNjUxMiwxMCArNjUyMywxNyBAQCBzdGF0 aWMgdm9pZCBjb21wdXRlX3RpcF94eSAoc3RydWN0IGZyYW1lICosIExpc3BfT2JqZWN0LCBM aXNwX09iamVjdCwKICAgICAgIHRpcF90aW1lciA9IFFuaWw7CiAgICAgfQoKLQotICBpZiAo TklMUCAodGlwX2ZyYW1lKQotICAgICAgfHwgKCFkZWxldGUgJiYgRlJBTUVQICh0aXBfZnJh bWUpCi0JICAmJiAhRlJBTUVfVklTSUJMRV9QIChYRlJBTUUgKHRpcF9mcmFtZSkpKSkKKyNp ZmRlZiBVU0VfR1RLCisgIC8qIFRoZSBHVEsrIHN5c3RlbSB0b29sdGlwIHdpbmRvdyBjYW4g YmUgZm91bmQgdmlhIHRoZSB4X291dHB1dAorICAgICBzdHJ1Y3R1cmUgb2YgdGlwX2xhc3Rf ZnJhbWUsIGlmIGl0IHN0aWxsIGV4aXN0cy4gICovCisgIGlmICh4X2d0a191c2Vfc3lzdGVt X3Rvb2x0aXBzICYmIE5JTFAgKHRpcF9sYXN0X2ZyYW1lKSkKKyAgICByZXR1cm4gUW5pbDsK KyAgZWxzZSBpZiAoIXhfZ3RrX3VzZV9zeXN0ZW1fdG9vbHRpcHMKKwkgICAmJiAoTklMUCAo dGlwX2ZyYW1lKQorCSAgICAgICB8fCAoIWRlbGV0ZQorCQkgICAmJiBGUkFNRVAgKHRpcF9m cmFtZSkKKwkJICAgJiYgRlJBTUVfTElWRV9QIChYRlJBTUUgKHRpcF9mcmFtZSkpCisJCSAg ICYmICFGUkFNRV9WSVNJQkxFX1AgKFhGUkFNRSAodGlwX2ZyYW1lKSkpKSkKICAgICByZXR1 cm4gUW5pbDsKICAgZWxzZQogICAgIHsKQEAgLTY1MjYsNjEgKzY1NDQsMTE0IEBAIHN0YXRp YyB2b2lkIGNvbXB1dGVfdGlwX3h5IChzdHJ1Y3QgZnJhbWUgKiwgTGlzcF9PYmplY3QsIExp c3BfT2JqZWN0LAogICAgICAgc3BlY2JpbmQgKFFpbmhpYml0X3JlZGlzcGxheSwgUXQpOwog ICAgICAgc3BlY2JpbmQgKFFpbmhpYml0X3F1aXQsIFF0KTsKCi0jaWZkZWYgVVNFX0dUSwot ICAgICAgewotCS8qIFdoZW4gdXNpbmcgc3lzdGVtIHRvb2x0aXAsIHRpcF9mcmFtZSBpcyB0 aGUgRW1hY3MgZnJhbWUgb24KLQkgICB3aGljaCB0aGUgdGlwIGlzIHNob3duLiAgKi8KLQlz dHJ1Y3QgZnJhbWUgKmYgPSBYRlJBTUUgKHRpcF9mcmFtZSk7Ci0KLQlpZiAoRlJBTUVfTElW RV9QIChmKSAmJiB4Z19oaWRlX3Rvb2x0aXAgKGYpKQotCSAgewotCSAgICB0aXBfZnJhbWUg PSBRbmlsOwotCSAgICB3YXNfb3BlbiA9IFF0OwotCSAgfQotICAgICAgfQotI2VuZGlmCisg ICAgICBpZiAoeF9ndGtfdXNlX3N5c3RlbV90b29sdGlwcykKKwl7CisJICAvKiBUaGUgR1RL KyBzeXN0ZW0gdG9vbHRpcCB3aW5kb3cgaXMgc3RvcmVkIGluIHRoZSB4X291dHB1dAorCSAg ICAgc3RydWN0dXJlIG9mIHRpcF9sYXN0X2ZyYW1lLiAgKi8KKwkgIHN0cnVjdCBmcmFtZSAq ZiA9IFhGUkFNRSAodGlwX2xhc3RfZnJhbWUpOwoKLSAgICAgIGlmIChGUkFNRVAgKHRpcF9m cmFtZSkpCisJICBpZiAoRlJBTUVfTElWRV9QIChmKSkKKwkgICAgeworCSAgICAgIGlmICh4 Z19oaWRlX3Rvb2x0aXAgKGYpKQorCQl3YXNfb3BlbiA9IFF0OworCSAgICB9CisJICBlbHNl CisJICAgIHRpcF9sYXN0X2ZyYW1lID0gUW5pbDsKKwl9CisgICAgICBlbHNlCiAJewotCSAg aWYgKGRlbGV0ZSkKKwkgIGlmIChGUkFNRVAgKHRpcF9mcmFtZSkpCiAJICAgIHsKLQkgICAg ICBkZWxldGVfZnJhbWUgKHRpcF9mcmFtZSwgUW5pbCk7Ci0JICAgICAgdGlwX2ZyYW1lID0g UW5pbDsKKwkgICAgICBzdHJ1Y3QgZnJhbWUgKmYgPSBYRlJBTUUgKHRpcF9mcmFtZSk7CisK KwkgICAgICBpZiAoRlJBTUVfTElWRV9QIChmKSkKKwkJeworCQkgIGlmIChkZWxldGUpCisJ CSAgICB7CisJCSAgICAgIGRlbGV0ZV9mcmFtZSAodGlwX2ZyYW1lLCBRbmlsKTsKKwkJICAg ICAgdGlwX2ZyYW1lID0gUW5pbDsKKwkJICAgIH0KKwkJICBlbHNlCisJCSAgICB4X21ha2Vf ZnJhbWVfaW52aXNpYmxlIChmKTsKKworCQkgIHdhc19vcGVuID0gUXQ7CisJCX0KKwkgICAg ICBlbHNlCisJCXRpcF9mcmFtZSA9IFFuaWw7CiAJICAgIH0KIAkgIGVsc2UKLQkgICAgeF9t YWtlX2ZyYW1lX2ludmlzaWJsZSAoWEZSQU1FICh0aXBfZnJhbWUpKTsKKwkgICAgdGlwX2Zy YW1lID0gUW5pbDsKKwl9CisKKyAgICAgIHJldHVybiB1bmJpbmRfdG8gKGNvdW50LCB3YXNf b3Blbik7CisgICAgfQorI2Vsc2UgLyogbm90IFVTRV9HVEsgKi8KKyAgaWYgKE5JTFAgKHRp cF9mcmFtZSkKKyAgICAgIHx8ICghZGVsZXRlCisJICAmJiBGUkFNRVAgKHRpcF9mcmFtZSkK KwkgICYmIEZSQU1FX0xJVkVfUCAoWEZSQU1FICh0aXBfZnJhbWUpKQorCSAgJiYgIUZSQU1F X1ZJU0lCTEVfUCAoWEZSQU1FICh0aXBfZnJhbWUpKSkpCisgICAgcmV0dXJuIFFuaWw7Cisg IGVsc2UKKyAgICB7CisgICAgICBwdHJkaWZmX3QgY291bnQ7CisgICAgICBMaXNwX09iamVj dCB3YXNfb3BlbiA9IFFuaWw7CisKKyAgICAgIGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsK KyAgICAgIHNwZWNiaW5kIChRaW5oaWJpdF9yZWRpc3BsYXksIFF0KTsKKyAgICAgIHNwZWNi aW5kIChRaW5oaWJpdF9xdWl0LCBRdCk7CisKKyAgICAgIGlmIChGUkFNRVAgKHRpcF9mcmFt ZSkpCisJeworCSAgc3RydWN0IGZyYW1lICpmID0gWEZSQU1FICh0aXBfZnJhbWUpOwoKLQkg IHdhc19vcGVuID0gUXQ7CisJICBpZiAoRlJBTUVfTElWRV9QIChmKSkKKwkgICAgeworCSAg ICAgIGlmIChkZWxldGUpCisJCXsKKwkJICBkZWxldGVfZnJhbWUgKHRpcF9mcmFtZSwgUW5p bCk7CisJCSAgdGlwX2ZyYW1lID0gUW5pbDsKKwkJfQorCSAgICAgIGVsc2UKKwkJeF9tYWtl X2ZyYW1lX2ludmlzaWJsZSAoWEZSQU1FICh0aXBfZnJhbWUpKTsKCiAjaWZkZWYgVVNFX0xV Q0lECi0JICAvKiBCbG9vZGN1cmRsaW5nIGhhY2sgYWxlcnQ6IFRoZSBMdWNpZCBtZW51IGJh ciB3aWRnZXQncwotCSAgICAgcmVkaXNwbGF5IHByb2NlZHVyZSBpcyBub3QgY2FsbGVkIHdo ZW4gYSB0aXAgZnJhbWUgb3ZlcgotCSAgICAgbWVudSBpdGVtcyBpcyB1bm1hcHBlZC4gIFJl ZGlzcGxheSB0aGUgbWVudSBtYW51YWxseS4uLiAgKi8KLQkgIHsKLQkgICAgV2lkZ2V0IHc7 Ci0JICAgIHN0cnVjdCBmcmFtZSAqZiA9IFNFTEVDVEVEX0ZSQU1FICgpOwotCSAgICBpZiAo RlJBTUVfWF9QIChmKSAmJiBGUkFNRV9MSVZFX1AgKGYpKQorCSAgICAgIC8qIEJsb29kY3Vy ZGxpbmcgaGFjayBhbGVydDogVGhlIEx1Y2lkIG1lbnUgYmFyIHdpZGdldCdzCisJCSByZWRp c3BsYXkgcHJvY2VkdXJlIGlzIG5vdCBjYWxsZWQgd2hlbiBhIHRpcCBmcmFtZSBvdmVyCisJ CSBtZW51IGl0ZW1zIGlzIHVubWFwcGVkLiAgUmVkaXNwbGF5IHRoZSBtZW51IG1hbnVhbGx5 Li4uICAqLwogCSAgICAgIHsKLQkJdyA9IGYtPm91dHB1dF9kYXRhLngtPm1lbnViYXJfd2lk Z2V0OworCQlXaWRnZXQgdzsKKwkJc3RydWN0IGZyYW1lICpmID0gU0VMRUNURURfRlJBTUUg KCk7CgotCQlpZiAoIURvZXNTYXZlVW5kZXJzIChGUkFNRV9ESVNQTEFZX0lORk8gKGYpLT5z Y3JlZW4pCi0JCSAgICAmJiB3ICE9IE5VTEwpCisJCWlmIChGUkFNRV9YX1AgKGYpICYmIEZS QU1FX0xJVkVfUCAoZikpCiAJCSAgewotCQkgICAgYmxvY2tfaW5wdXQgKCk7Ci0JCSAgICB4 bHdtZW51X3JlZGlzcGxheSAodyk7Ci0JCSAgICB1bmJsb2NrX2lucHV0ICgpOworCQkgICAg dyA9IGYtPm91dHB1dF9kYXRhLngtPm1lbnViYXJfd2lkZ2V0OworCisJCSAgICBpZiAoIURv ZXNTYXZlVW5kZXJzIChGUkFNRV9ESVNQTEFZX0lORk8gKGYpLT5zY3JlZW4pCisJCQkmJiB3 ICE9IE5VTEwpCisJCSAgICAgIHsKKwkJCWJsb2NrX2lucHV0ICgpOworCQkJeGx3bWVudV9y ZWRpc3BsYXkgKHcpOworCQkJdW5ibG9ja19pbnB1dCAoKTsKKwkJICAgICAgfQogCQkgIH0K IAkgICAgICB9Ci0JICB9CiAjZW5kaWYgLyogVVNFX0xVQ0lEICovCisKKwkgICAgICB3YXNf b3BlbiA9IFF0OworCSAgICB9CisJICBlbHNlCisJICAgIHRpcF9mcmFtZSA9IFFuaWw7CiAJ fQogICAgICAgZWxzZQogCXRpcF9mcmFtZSA9IFFuaWw7CgogICAgICAgcmV0dXJuIHVuYmlu ZF90byAoY291bnQsIHdhc19vcGVuKTsKICAgICB9CisjZW5kaWYgLyogVVNFX0dUSyAqLwog fQoKKwogREVGVU4gKCJ4LXNob3ctdGlwIiwgRnhfc2hvd190aXAsIFN4X3Nob3dfdGlwLCAx LCA2LCAwLAogICAgICAgIGRvYzogLyogU2hvdyBTVFJJTkcgaW4gYSAidG9vbHRpcCIgd2lu ZG93IG9uIGZyYW1lIEZSQU1FLgogQSB0b29sdGlwIHdpbmRvdyBpcyBhIHNtYWxsIFggd2lu ZG93IGRpc3BsYXlpbmcgYSBzdHJpbmcuCkBAIC02NjExLDcgKzY2ODIsOCBAQCB3aXRoIG9m ZnNldCBEWSBhZGRlZCAoZGVmYXVsdCBpcyAtMTApLgoKIEEgdG9vbHRpcCdzIG1heGltdW0g c2l6ZSBpcyBzcGVjaWZpZWQgYnkgYHgtbWF4LXRvb2x0aXAtc2l6ZScuCiBUZXh0IGxhcmdl ciB0aGFuIHRoZSBzcGVjaWZpZWQgc2l6ZSBpcyBjbGlwcGVkLiAgKi8pCi0gIChMaXNwX09i amVjdCBzdHJpbmcsIExpc3BfT2JqZWN0IGZyYW1lLCBMaXNwX09iamVjdCBwYXJtcywgTGlz cF9PYmplY3QgdGltZW91dCwgTGlzcF9PYmplY3QgZHgsIExpc3BfT2JqZWN0IGR5KQorICAo TGlzcF9PYmplY3Qgc3RyaW5nLCBMaXNwX09iamVjdCBmcmFtZSwgTGlzcF9PYmplY3QgcGFy bXMsCisgICBMaXNwX09iamVjdCB0aW1lb3V0LCBMaXNwX09iamVjdCBkeCwgTGlzcF9PYmpl Y3QgZHkpCiB7CiAgIHN0cnVjdCBmcmFtZSAqZiwgKnRpcF9mOwogICBzdHJ1Y3Qgd2luZG93 ICp3OwpAQCAtNjYyMiw4ICs2Njk0LDcgQEAgd2l0aCBvZmZzZXQgRFkgYWRkZWQgKGRlZmF1 bHQgaXMgLTEwKS4KICAgaW50IG9sZF93aW5kb3dzX29yX2J1ZmZlcnNfY2hhbmdlZCA9IHdp bmRvd3Nfb3JfYnVmZmVyc19jaGFuZ2VkOwogICBwdHJkaWZmX3QgY291bnQgPSBTUEVDUERM X0lOREVYICgpOwogICBwdHJkaWZmX3QgY291bnRfMTsKLSAgTGlzcF9PYmplY3Qgd2luZG93 LCBzaXplOwotICBMaXNwX09iamVjdCB0aXBfYnVmOworICBMaXNwX09iamVjdCB3aW5kb3cs IHNpemUsIHRpcF9idWY7CiAgIEFVVE9fU1RSSU5HICh0aXAsICIgKnRpcCoiKTsKCiAgIHNw ZWNiaW5kIChRaW5oaWJpdF9yZWRpc3BsYXksIFF0KTsKQEAgLTY2NjIsMzYgKzY3MzMsMjcg QEAgd2l0aCBvZmZzZXQgRFkgYWRkZWQgKGRlZmF1bHQgaXMgLTEwKS4KICAgICAgICAgewog CSAgY29tcHV0ZV90aXBfeHkgKGYsIHBhcm1zLCBkeCwgZHksIHdpZHRoLCBoZWlnaHQsICZy b290X3gsICZyb290X3kpOwogICAgICAgICAgIHhnX3Nob3dfdG9vbHRpcCAoZiwgcm9vdF94 LCByb290X3kpOwotICAgICAgICAgIC8qIFRoaXMgaXMgdXNlZCBpbiBGeF9oaWRlX3RpcC4g ICovCi0gICAgICAgICAgWFNFVEZSQU1FICh0aXBfZnJhbWUsIGYpOworCSAgdGlwX2xhc3Rf ZnJhbWUgPSBmcmFtZTsKICAgICAgICAgfQorCiAgICAgICB1bmJsb2NrX2lucHV0ICgpOwog ICAgICAgaWYgKG9rKSBnb3RvIHN0YXJ0X3RpbWVyOwogICAgIH0KICNlbmRpZiAvKiBVU0Vf R1RLICovCgotICBpZiAoTklMUCAobGFzdF9zaG93X3RpcF9hcmdzKSkKLSAgICBsYXN0X3No b3dfdGlwX2FyZ3MgPSBGbWFrZV92ZWN0b3IgKG1ha2VfbnVtYmVyICgzKSwgUW5pbCk7Ci0K ICAgaWYgKEZSQU1FUCAodGlwX2ZyYW1lKSAmJiBGUkFNRV9MSVZFX1AgKFhGUkFNRSAodGlw X2ZyYW1lKSkpCiAgICAgewotICAgICAgTGlzcF9PYmplY3QgbGFzdF9zdHJpbmcgPSBBUkVG IChsYXN0X3Nob3dfdGlwX2FyZ3MsIDApOwotICAgICAgTGlzcF9PYmplY3QgbGFzdF9mcmFt ZSA9IEFSRUYgKGxhc3Rfc2hvd190aXBfYXJncywgMSk7Ci0gICAgICBMaXNwX09iamVjdCBs YXN0X3Bhcm1zID0gQVJFRiAobGFzdF9zaG93X3RpcF9hcmdzLCAyKTsKLQogICAgICAgaWYg KEZSQU1FX1ZJU0lCTEVfUCAoWEZSQU1FICh0aXBfZnJhbWUpKQotCSAgJiYgRVEgKGZyYW1l LCBsYXN0X2ZyYW1lKQotCSAgJiYgIU5JTFAgKEZlcXVhbF9pbmNsdWRpbmdfcHJvcGVydGll cyAobGFzdF9zdHJpbmcsIHN0cmluZykpCi0JICAmJiAhTklMUCAoRmVxdWFsIChsYXN0X3Bh cm1zLCBwYXJtcykpKQorCSAgJiYgRVEgKGZyYW1lLCB0aXBfbGFzdF9mcmFtZSkKKwkgICYm ICFOSUxQIChGZXF1YWxfaW5jbHVkaW5nX3Byb3BlcnRpZXMgKHRpcF9sYXN0X3N0cmluZywg c3RyaW5nKSkKKwkgICYmICFOSUxQIChGZXF1YWwgKHRpcF9sYXN0X3Bhcm1zLCBwYXJtcykp KQogCXsKIAkgIC8qIE9ubHkgRFggYW5kIERZIGhhdmUgY2hhbmdlZC4gICovCiAJICB0aXBf ZiA9IFhGUkFNRSAodGlwX2ZyYW1lKTsKIAkgIGlmICghTklMUCAodGlwX3RpbWVyKSkKIAkg ICAgewotCSAgICAgIExpc3BfT2JqZWN0IHRpbWVyID0gdGlwX3RpbWVyOwotCisJICAgICAg Y2FsbDEgKFFjYW5jZWxfdGltZXIsIHRpcF90aW1lcik7CiAJICAgICAgdGlwX3RpbWVyID0g UW5pbDsKLQkgICAgICBjYWxsMSAoUWNhbmNlbF90aW1lciwgdGltZXIpOwogCSAgICB9Cgog CSAgYmxvY2tfaW5wdXQgKCk7CkBAIC02NzAzLDE1ICs2NzY1LDE0IEBAIHdpdGggb2Zmc2V0 IERZIGFkZGVkIChkZWZhdWx0IGlzIC0xMCkuCgogCSAgZ290byBzdGFydF90aW1lcjsKIAl9 Ci0gICAgICBlbHNlIGlmICh0b29sdGlwX3JldXNlX2hpZGRlbl9mcmFtZSAmJiBFUSAoZnJh bWUsIGxhc3RfZnJhbWUpKQorICAgICAgZWxzZSBpZiAodG9vbHRpcF9yZXVzZV9oaWRkZW5f ZnJhbWUgJiYgRVEgKGZyYW1lLCB0aXBfbGFzdF9mcmFtZSkpCiAJewogCSAgYm9vbCBkZWxl dGUgPSBmYWxzZTsKIAkgIExpc3BfT2JqZWN0IHRhaWwsIGVsdCwgcGFybSwgbGFzdDsKCiAJ ICAvKiBDaGVjayBpZiBldmVyeSBwYXJhbWV0ZXIgaW4gUEFSTVMgaGFzIHRoZSBzYW1lIHZh bHVlIGluCi0JICAgICBsYXN0X3Bhcm1zIHVubGVzcyBpdCBzaG91bGQgYmUgaWdub3JlZCBi eSBtZWFucyBvZgotCSAgICAgVnRvb2x0aXBfcmV1c2VfaGlkZGVuX2ZyYW1lX3BhcmFtZXRl cnMuICBUaGlzIG1heSBkZXN0cnVjdAotCSAgICAgbGFzdF9wYXJtcyB3aGljaCwgaG93ZXZl ciwgd2lsbCBiZSByZWNyZWF0ZWQgYmVsb3cuICAqLworCSAgICAgdGlwX2xhc3RfcGFybXMu ICBUaGlzIG1heSBkZXN0cnVjdCB0aXBfbGFzdF9wYXJtcyB3aGljaCwKKwkgICAgIGhvd2V2 ZXIsIHdpbGwgYmUgcmVjcmVhdGVkIGJlbG93LiAgKi8KIAkgIGZvciAodGFpbCA9IHBhcm1z OyBDT05TUCAodGFpbCk7IHRhaWwgPSBYQ0RSICh0YWlsKSkKIAkgICAgewogCSAgICAgIGVs dCA9IFhDQVIgKHRhaWwpOwpAQCAtNjcyMSw3ICs2NzgyLDcgQEAgd2l0aCBvZmZzZXQgRFkg YWRkZWQgKGRlZmF1bHQgaXMgLTEwKS4KIAkgICAgICBpZiAoIUVRIChwYXJtLCBRbGVmdCkg JiYgIUVRIChwYXJtLCBRdG9wKQogCQkgICYmICFFUSAocGFybSwgUXJpZ2h0KSAmJiAhRVEg KHBhcm0sIFFib3R0b20pKQogCQl7Ci0JCSAgbGFzdCA9IEZhc3NxIChwYXJtLCBsYXN0X3Bh cm1zKTsKKwkJICBsYXN0ID0gRmFzc3EgKHBhcm0sIHRpcF9sYXN0X3Bhcm1zKTsKIAkJICBp ZiAoTklMUCAoRmVxdWFsIChGY2RyIChlbHQpLCBGY2RyIChsYXN0KSkpKQogCQkgICAgewog CQkgICAgICAvKiBXZSBsb3N0LCBkZWxldGUgdGhlIG9sZCB0b29sdGlwLiAgKi8KQEAgLTY3 MjksMTcgKzY3OTAsMTggQEAgd2l0aCBvZmZzZXQgRFkgYWRkZWQgKGRlZmF1bHQgaXMgLTEw KS4KIAkJICAgICAgYnJlYWs7CiAJCSAgICB9CiAJCSAgZWxzZQotCQkgICAgbGFzdF9wYXJt cyA9IGNhbGwyIChRYXNzcV9kZWxldGVfYWxsLCBwYXJtLCBsYXN0X3Bhcm1zKTsKKwkJICAg IHRpcF9sYXN0X3Bhcm1zID0KKwkJICAgICAgY2FsbDIgKFFhc3NxX2RlbGV0ZV9hbGwsIHBh cm0sIHRpcF9sYXN0X3Bhcm1zKTsKIAkJfQogCSAgICAgIGVsc2UKLQkJbGFzdF9wYXJtcyA9 IGNhbGwyIChRYXNzcV9kZWxldGVfYWxsLCBwYXJtLCBsYXN0X3Bhcm1zKTsKKwkJdGlwX2xh c3RfcGFybXMgPQorCQkgIGNhbGwyIChRYXNzcV9kZWxldGVfYWxsLCBwYXJtLCB0aXBfbGFz dF9wYXJtcyk7CiAJICAgIH0KCi0JICAvKiBOb3cgY2hlY2sgaWYgZXZlcnkgcGFyYW1ldGVy IGluIHdoYXQgaXMgbGVmdCBvZiBsYXN0X3Bhcm1zCi0JICAgICB3aXRoIGEgbm9uLW5pbCB2 YWx1ZSBoYXMgYW4gYXNzb2NpYXRpb24gaW4gUEFSTVMgdW5sZXNzIGl0Ci0JICAgICBzaG91 bGQgYmUgaWdub3JlZCBieSBtZWFucyBvZgotCSAgICAgVnRvb2x0aXBfcmV1c2VfaGlkZGVu X2ZyYW1lX3BhcmFtZXRlcnMuICAqLwotCSAgZm9yICh0YWlsID0gbGFzdF9wYXJtczsgQ09O U1AgKHRhaWwpOyB0YWlsID0gWENEUiAodGFpbCkpCisJICAvKiBOb3cgY2hlY2sgaWYgZXZl cnkgcGFyYW1ldGVyIGluIHdoYXQgaXMgbGVmdCBvZgorCSAgICAgdGlwX2xhc3RfcGFybXMg d2l0aCBhIG5vbi1uaWwgdmFsdWUgaGFzIGFuIGFzc29jaWF0aW9uIGluCisJICAgICBQQVJN Uy4gICovCisJICBmb3IgKHRhaWwgPSB0aXBfbGFzdF9wYXJtczsgQ09OU1AgKHRhaWwpOyB0 YWlsID0gWENEUiAodGFpbCkpCiAJICAgIHsKIAkgICAgICBlbHQgPSBYQ0FSICh0YWlsKTsK IAkgICAgICBwYXJtID0gRmNhciAoZWx0KTsKQEAgLTY3NjAsOSArNjgyMiw5IEBAIHdpdGgg b2Zmc2V0IERZIGFkZGVkIChkZWZhdWx0IGlzIC0xMCkuCiAgIGVsc2UKICAgICB4X2hpZGVf dGlwICh0cnVlKTsKCi0gIEFTRVQgKGxhc3Rfc2hvd190aXBfYXJncywgMCwgc3RyaW5nKTsK LSAgQVNFVCAobGFzdF9zaG93X3RpcF9hcmdzLCAxLCBmcmFtZSk7Ci0gIEFTRVQgKGxhc3Rf c2hvd190aXBfYXJncywgMiwgcGFybXMpOworICB0aXBfbGFzdF9mcmFtZSA9IGZyYW1lOwor ICB0aXBfbGFzdF9zdHJpbmcgPSBzdHJpbmc7CisgIHRpcF9sYXN0X3Bhcm1zID0gcGFybXM7 CgogICBpZiAoIUZSQU1FUCAodGlwX2ZyYW1lKSB8fCAhRlJBTUVfTElWRV9QIChYRlJBTUUg KHRpcF9mcmFtZSkpKQogICAgIHsKQEAgLTc4MjMsNyArNzg4NSw2IEBAIEZSQU1FUyBzaG91 bGQgYmUgbmlsICh0aGUgc2VsZWN0ZWQgZnJhbWUpLCBhIGZyYW1lLCBvciBhIGxpc3Qgb2YK ICAgZGVmc3ViciAoJlN4X2Rpc3BsYXlfbGlzdCk7CiAgIGRlZnN1YnIgKCZTeF9zeW5jaHJv bml6ZSk7CiAgIGRlZnN1YnIgKCZTeF9iYWNrc3BhY2VfZGVsZXRlX2tleXNfcCk7Ci0KICAg ZGVmc3ViciAoJlN4X3Nob3dfdGlwKTsKICAgZGVmc3ViciAoJlN4X2hpZGVfdGlwKTsKICAg ZGVmc3ViciAoJlN4X2RvdWJsZV9idWZmZXJlZF9wKTsKQEAgLTc4MzEsOSArNzg5MiwxMiBA QCBGUkFNRVMgc2hvdWxkIGJlIG5pbCAodGhlIHNlbGVjdGVkIGZyYW1lKSwgYSBmcmFtZSwg b3IgYSBsaXN0IG9mCiAgIHN0YXRpY3BybyAoJnRpcF90aW1lcik7CiAgIHRpcF9mcmFtZSA9 IFFuaWw7CiAgIHN0YXRpY3BybyAoJnRpcF9mcmFtZSk7Ci0KLSAgbGFzdF9zaG93X3RpcF9h cmdzID0gUW5pbDsKLSAgc3RhdGljcHJvICgmbGFzdF9zaG93X3RpcF9hcmdzKTsKKyAgdGlw X2xhc3RfZnJhbWUgPSBRbmlsOworICBzdGF0aWNwcm8gKCZ0aXBfbGFzdF9mcmFtZSk7Cisg IHRpcF9sYXN0X3N0cmluZyA9IFFuaWw7CisgIHN0YXRpY3BybyAoJnRpcF9sYXN0X3N0cmlu Zyk7CisgIHRpcF9sYXN0X3Bhcm1zID0gUW5pbDsKKyAgc3RhdGljcHJvICgmdGlwX2xhc3Rf cGFybXMpOwoKICAgZGVmc3ViciAoJlN4X3VzZXNfb2xkX2d0a19kaWFsb2cpOwogI2lmIGRl ZmluZWQgKFVTRV9NT1RJRikgfHwgZGVmaW5lZCAoVVNFX0dUSykKZGlmZiAtLWdpdCBhL3Ny Yy94dGVybS5jIGIvc3JjL3h0ZXJtLmMKaW5kZXggZjc3MTYzMS4uMGEyMDY4ZCAxMDA2NDQK LS0tIGEvc3JjL3h0ZXJtLmMKKysrIGIvc3JjL3h0ZXJtLmMKQEAgLTk5NiwxMiArOTk2LDcg QEAgc3RydWN0IHhfZGlzcGxheV9pbmZvICoKIHhfdXBkYXRlX2JlZ2luIChzdHJ1Y3QgZnJh bWUgKmYpCiB7CiAjaWZkZWYgVVNFX0NBSVJPCi0gIGlmICghIE5JTFAgKHRpcF9mcmFtZSkg JiYgWEZSQU1FICh0aXBfZnJhbWUpID09IGYKLSAgICAgICYmICEgRlJBTUVfVklTSUJMRV9Q IChmKQotI2lmZGVmIFVTRV9HVEsKLSAgICAgICYmICFOSUxQIChGZnJhbWVfcGFyYW1ldGVy ICh0aXBfZnJhbWUsIFF0b29sdGlwKSkKLSNlbmRpZgotICAgICAgKQorICBpZiAoRlJBTUVf VE9PTFRJUF9QIChmKSAmJiAhRlJBTUVfVklTSUJMRV9QIChmKSkKICAgICByZXR1cm47Cgog ICBpZiAoISBGUkFNRV9DUl9TVVJGQUNFIChmKSkKQEAgLTgwOTEsNyArODA4Niw3IEBAIHN0 YXRpYyB2b2lkIHhlbWJlZF9zZW5kX21lc3NhZ2UgKHN0cnVjdCBmcmFtZSAqZiwgVGltZSwK ICAgICAgIC8qIFJlZG8gdGhlIG1vdXNlLWhpZ2hsaWdodCBhZnRlciB0aGUgdG9vbHRpcCBo YXMgZ29uZS4gICovCiAgICAgICBpZiAoZXZlbnQtPnh1bm1hcC53aW5kb3cgPT0gdGlwX3dp bmRvdykKICAgICAgICAgewotICAgICAgICAgIHRpcF93aW5kb3cgPSAwOworICAgICAgICAg IHRpcF93aW5kb3cgPSBOb25lOwogICAgICAgICAgIHhfcmVkb19tb3VzZV9oaWdobGlnaHQg KGRweWluZm8pOwogICAgICAgICB9CgpAQCAtODczMyw3ICs4NzI4LDcgQEAgc3RhdGljIHZv aWQgeGVtYmVkX3NlbmRfbWVzc2FnZSAoc3RydWN0IGZyYW1lICpmLCBUaW1lLAoKICNpZmRl ZiBVU0VfWF9UT09MS0lUCiAgICAgICAgICAgLyogVGlwIGZyYW1lcyBhcmUgcHVyZSBYIHdp bmRvdywgc2V0IHNpemUgZm9yIHRoZW0uICAqLwotICAgICAgICAgIGlmICghIE5JTFAgKHRp cF9mcmFtZSkgJiYgWEZSQU1FICh0aXBfZnJhbWUpID09IGYpCisgICAgICAgICAgaWYgKEZS QU1FX1RPT0xUSVBfUCAoZikpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgIGlmIChG UkFNRV9QSVhFTF9IRUlHSFQgKGYpICE9IGNvbmZpZ3VyZUV2ZW50Lnhjb25maWd1cmUuaGVp Z2h0CiAgICAgICAgICAgICAgICAgICB8fCBGUkFNRV9QSVhFTF9XSURUSCAoZikgIT0gY29u ZmlndXJlRXZlbnQueGNvbmZpZ3VyZS53aWR0aCkKQEAgLTk5NzEsMTEgKzk5NjYsNyBAQCBz dHJ1Y3QgeF9lcnJvcl9tZXNzYWdlX3N0YWNrIHsKICAgICAgIC8qIERvbid0IGNoYW5nZSB0 aGUgc2l6ZSBvZiBhIHRpcCBmcmFtZTsgdGhlcmUncyBubyBwb2ludCBpbgogCSBkb2luZyBp dCBiZWNhdXNlIGl0J3MgZG9uZSBpbiBGeF9zaG93X3RpcCwgYW5kIGl0IGxlYWRzIHRvCiAJ IHByb2JsZW1zIGJlY2F1c2UgdGhlIHRpcCBmcmFtZSBoYXMgbm8gd2lkZ2V0LiAgKi8KLSAg ICAgIGlmIChOSUxQICh0aXBfZnJhbWUpIHx8IFhGUkFNRSAodGlwX2ZyYW1lKSAhPSBmCi0j aWZkZWYgVVNFX0dUSwotCSAgfHwgTklMUCAoRmZyYW1lX3BhcmFtZXRlciAodGlwX2ZyYW1l LCBRdG9vbHRpcCkpCi0jZW5kaWYKLQkgICkKKyAgICAgIGlmICghRlJBTUVfVE9PTFRJUF9Q IChmKSkKIAl7CiAJICBhZGp1c3RfZnJhbWVfc2l6ZSAoZiwgRlJBTUVfQ09MUyAoZikgKiBG UkFNRV9DT0xVTU5fV0lEVEggKGYpLAogCQkJICAgICBGUkFNRV9MSU5FUyAoZikgKiBGUkFN RV9MSU5FX0hFSUdIVCAoZiksIDMsCkBAIC0xMTIwNCw3ICsxMTE5NSw3IEBAIHN0cnVjdCB4 X2Vycm9yX21lc3NhZ2Vfc3RhY2sgewogICAvKiBUaGUgZm9sbG93aW5nIGJyZWFrcyBvdXIg Y2FsY3VsYXRpb25zLiAgSWYgaXQncyByZWFsbHkgbmVlZGVkLAogICAgICB0aGluayBvZiBz b21ldGhpbmcgZWxzZS4gICovCiAjaWYgZmFsc2UKLSAgaWYgKE5JTFAgKHRpcF9mcmFtZSkg fHwgWEZSQU1FICh0aXBfZnJhbWUpICE9IGYpCisgIGlmICghRlJBTUVfVE9PTFRJUF9QIChm KSkKICAgICB7CiAgICAgICBpbnQgdGV4dF93aWR0aCwgdGV4dF9oZWlnaHQ7CgpkaWZmIC0t Z2l0IGEvc3JjL3h0ZXJtLmggYi9zcmMveHRlcm0uaAppbmRleCBmNzNkZDBlLi4xODQ5YTVj IDEwMDY0NAotLS0gYS9zcmMveHRlcm0uaAorKysgYi9zcmMveHRlcm0uaApAQCAtNTAzLDYg KzUwMyw4IEBAIHN0cnVjdCB4X2Rpc3BsYXlfaW5mbwoKIGV4dGVybiB2b2lkIHNlbGVjdF92 aXN1YWwgKHN0cnVjdCB4X2Rpc3BsYXlfaW5mbyAqKTsKCitleHRlcm4gV2luZG93IHRpcF93 aW5kb3c7CisKIC8qIEVhY2ggWCBmcmFtZSBvYmplY3QgcG9pbnRzIHRvIGl0cyBvd24gc3Ry dWN0IHhfb3V0cHV0IG9iamVjdAogICAgaW4gdGhlIG91dHB1dF9kYXRhLnggZmllbGQuICBU aGUgeF9vdXRwdXQgc3RydWN0dXJlIGNvbnRhaW5zCiAgICB0aGUgaW5mb3JtYXRpb24gdGhh dCBpcyBzcGVjaWZpYyB0byBYIHdpbmRvd3MuICAqLwo= --------------080608020903070008050803--