From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: martin rudalics via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#59862: quit-restore per window buffer Date: Wed, 17 Jul 2024 11:23:31 +0200 Message-ID: <9dfeeabb-f421-4cb3-863c-6411e7c4b8a5@gmx.at> References: <86fsds8mlm.fsf@mail.linkov.net> <86plsxmc6d.fsf@mail.linkov.net> <86r0d4ezdc.fsf@mail.linkov.net> <0d01a044-d7d6-456a-9ba9-d987faad4332@gmx.at> <86frthjq4y.fsf@mail.linkov.net> <743dc4dd-cf09-4c5e-9209-b63a47480e0b@gmx.at> <86msnne7ut.fsf@mail.linkov.net> <86plsgrfvu.fsf@mail.linkov.net> <86le2b12ni.fsf@mail.linkov.net> <86y169kafb.fsf@mail.linkov.net> <61c4f245-3dd8-4e24-9c84-7ddd4cfe3c49@gmx.at> <86a5ioo269.fsf@mail.linkov.net> <867cdr3xs7.fsf@mail.linkov.net> <3f399d4f-3dd2-4624-b857-e198f70b5565@gmx.at> <86h6csct0w.fsf@mail.linkov.net> <1fb1cc7a-b8ea-4d6d-ac6d-19abffef44f3@gmx.at> <871q3tc7da.fsf@> Reply-To: martin rudalics Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------0cpMOBypjKdTdjfLu6e2lIGs" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="5621"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla Thunderbird Cc: juri@linkov.net To: bjorn.bidar@thaodan.de, 59862@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Jul 17 11:24:26 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sU0te-0001FP-En for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 17 Jul 2024 11:24:26 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sU0tG-0000rK-Hx; Wed, 17 Jul 2024 05:24:02 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sU0tE-0000jq-Ho for bug-gnu-emacs@gnu.org; Wed, 17 Jul 2024 05:24:00 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sU0tE-0006YQ-93 for bug-gnu-emacs@gnu.org; Wed, 17 Jul 2024 05:24:00 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1sU0tG-0000ek-BB for bug-gnu-emacs@gnu.org; Wed, 17 Jul 2024 05:24:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 17 Jul 2024 09:24:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 59862 X-GNU-PR-Package: emacs X-Debbugs-Original-To: =?UTF-8?Q?Bj=C3=B6rn?= Bidar , martin rudalics via Bug reports for GNU "Emacs, " the Swiss army knife of text editors X-Debbugs-Original-Cc: 59862@debbugs.gnu.org, juri@linkov.net Original-Received: via spool by 59862-submit@debbugs.gnu.org id=B59862.17212082332494 (code B ref 59862); Wed, 17 Jul 2024 09:24:02 +0000 Original-Received: (at 59862) by debbugs.gnu.org; 17 Jul 2024 09:23:53 +0000 Original-Received: from localhost ([127.0.0.1]:35081 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sU0t5-0000e8-9e for submit@debbugs.gnu.org; Wed, 17 Jul 2024 05:23:52 -0400 Original-Received: from mout.gmx.net ([212.227.17.20]:46601) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sU0t1-0000dt-LS for 59862@debbugs.gnu.org; Wed, 17 Jul 2024 05:23:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1721208217; x=1721813017; i=rudalics@gmx.at; bh=CPcBxgBgNsAMDoE7ta7iPds3w/J44fVEnAs/RN0URd0=; h=X-UI-Sender-Class:Content-Type:Message-ID:Date:MIME-Version: Subject:To:Cc:References:From:In-Reply-To:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=n4gO/MfdUfSKsDa+KmDhpYo6isIHo/jXeVuU2CuBYheW5IWtT9CyJiqiIFW+MIiT /o031EQJtvi/QkRIVJFEdecbRhbJj40ReTadOwDhOhRatqGk1sA3Dls3im4cFqBUl DC8Q0gElwd197kz+jkumxRcixXdBytKRr1aqik9t8Ynakoi3ipKpj+T+FJkuaanIn yq/jNWI1V75WDZZy7ktDwkDrvMAqbshK7Z0rVZU3IvyxYk4qMFF4l0fYMakA87nGh T5aDjUxLisCC8uPu7vQPl1eaQApTAYOhIIOCJYd1HKqX0FUdIhd0q23VnF5G+W+yf qFnOkr0DxT4kWJvUgA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Original-Received: from [192.168.31.113] ([46.125.249.82]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MLi8m-1slgID0ATI-00VZsg; Wed, 17 Jul 2024 11:23:37 +0200 Content-Language: en-US In-Reply-To: <871q3tc7da.fsf@> X-Provags-ID: V03:K1:VhVgOv/J4yQ8jOf6ugrt+aPc2W+/m5varTwe2cdmoC36+jy9SvC YWFgH2+QfjrP5Nas8lpCiotccDO1jMyTpMj9bu8JU1rrO16Jqe/F8rcdeIbh00hgFtb2enz eK252+YnjAAn+NjEhRY3B0Woq87Vob3Mmqbu45WxC7q3m+arG6TRAAj2FKYVyk7rd3FCfvS PCU0wW26brVeDqzZKKLEQ== UI-OutboundReport: notjunk:1;M01:P0:s/nC/AnwZf8=;HBdFjC4WbVuxKgkYa8QoKKEFmaT Jmog66OB+4w+SFVMjpY9LRErt/i0YXc5KxZNqHxN+ycDikMiWWutInH4zNpy1HO4SMRlszjRL TdhhKQkiQS4mynuSa3PKdPDMQoEDJOtx2JfZnM8XBE2a1ksXL2T7CwRgfcXeDjPPsqnR7DHyA YUeWQyI43Cqhy20IdkIH3uDCjoAzDBAQmpBvHPyxhj+ft4WrUBVtW5N9rlF/+JhOx/menlNhU U1npD87qohHtDznv0TD1XPyecxx6JUwzfY/C02jPy5EHYj3k56os0riKzS/k2zGrC7vrQvN31 okpZN2pYi59wMAnNlINwlLbFvWBjYKlJXDAR15YRuLvC1XM3rDZ3emDL/cKcilyLMor+OIutg VKTCbjVLaySl+CWSCScSGX2ePII/ErucpHIerMhYkPkYJes0Ch/ZbWfwgf21pnKHJHrdDYgZ3 deHw8QZfsiDCGH8qdP+vxX4aCmJwxsx5neLkgH3/N+/Zi+silsAd5/rfa9m1eRkS0xBbUhNpk r0hiKtgIqZ1r5WfDvvGEXFvqEsQ3dHAuNxIMijjmUdVFHF/4dAB8GnAYgABlIzCAoD8uNJmcS Yhzn3vFayLAjFo+jgVVs01UCVf5k8NSvbPyWiZtL+pIMSFhZsMzvbUnH7jQXtHBsHpjjqKvhf 4X7dqoy+Hl0B+SgUBix/swgygICEe6bLd1ouQXCVOxsVL8sDtDZCJicpHwza8BlQukVvD/xvf 3wGwldUvg1gz+70Ccv0Z/XloZSwHhG2yrLxMsEdk2POt8HejjyTFzdc0U7w/9oEoxo7QEteW X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:288917 Archived-At: This is a multi-part message in MIME format. --------------0cpMOBypjKdTdjfLu6e2lIGs Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit > I meant window. Same as you explain further below in your message > I call quit-window on a dedicate window the frame also dies with it. Note that if a window is dedicated, 'quit-restore-window' will already do its best to delete the window together with its frame. > I think if the window inside of a frame didn't contain any other buffer > than the initial buffer and a new buffer that uses the same window > there could be the argument that the window should die and thus the > frame too. I attach a patch (including all previous changes) that tries to do that. In particular, evaluating (custom-set-variables '(display-buffer-alist '(("\\*info\\*" display-buffer-pop-up-window))) '(quit-restore-window-no-switch t) '(frame-auto-hide-function 'delete-frame)) and doing C-x 5 2 then C-h i then C-x 0 and finally q, will delete the second frame. Alternatively, evaluating (custom-set-variables '(display-buffer-alist '(("\\*info\\*" display-buffer-same-window))) '(quit-restore-window-no-switch 'skip-initial) '(frame-auto-hide-function 'delete-frame)) and doing C-x 5 2 then C-h i and q, will delete the second frame too. Finally, evaluating (custom-set-variables '(display-buffer-alist '(("\\*info\\*" display-buffer-same-window))) '(quit-restore-window-no-switch t) '(frame-auto-hide-function 'delete-frame)) and doing C-x 5 2 then C-h i then C-x k *scratch* and finally q will also delete the second frame. martin --------------0cpMOBypjKdTdjfLu6e2lIGs Content-Type: text/x-patch; charset=UTF-8; name="windows-and-buffers.diff" Content-Disposition: attachment; filename="windows-and-buffers.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3Avd2luZG93LmVsIGIvbGlzcC93aW5kb3cuZWwKaW5kZXggOWZj MmU1ZDY1ZTguLmFkNTUyZjUxMzllIDEwMDY0NAotLS0gYS9saXNwL3dpbmRvdy5lbAorKysg Yi9saXNwL3dpbmRvdy5lbApAQCAtNDU0MiwxNCArNDU0MiwxOCBAQCByZWNvcmQtd2luZG93 LWJ1ZmZlcgogICAgICAgKHB1c2gtd2luZG93LWJ1ZmZlci1vbnRvLXByZXYgd2luZG93KQog ICAgICAgKHJ1bi1ob29rcyAnYnVmZmVyLWxpc3QtdXBkYXRlLWhvb2spKSkpCiAKKzs7IEEg dmVyc2lvbiBpbiBDIHRoYXQgaGFuZGxlcyBkZWFkIHdpbmRvd3MgKHRoYXQgcHJlc3VtYWJs eSBhcmUgcGFydCBvZgorOzsgYSBzYXZlZCB3aW5kb3cgY29uZmlndXJhdGlvbikgbGl2ZXMg aW4gd2luZG93LmMgYW5kIGlzIGNhbGxlZAorOzsgd2luZG93X2Rpc2NhcmRfYnVmZmVyX2Zy b21fZGVhZF93aW5kb3cuICBXZSBjb3VsZCBjYWxsIHRoYXQgZnJvbSBoZXJlCis7OyBidXQg aXQgc2VlbXMgbW9yZSBwcmFjdGljYWwgdG8gaGFuZGxlIGxpdmUgd2luZG93cyBlbnRpcmVs eSBpbiBFbGlzcC4KIChkZWZ1biB1bnJlY29yZC13aW5kb3ctYnVmZmVyICgmb3B0aW9uYWwg d2luZG93IGJ1ZmZlcikKICAgIlVucmVjb3JkIEJVRkZFUiBpbiBXSU5ET1cuCi1XSU5ET1cg bXVzdCBiZSBhIGxpdmUgd2luZG93IGFuZCBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgb25l LgotQlVGRkVSIG11c3QgYmUgYSBsaXZlIGJ1ZmZlciBhbmQgZGVmYXVsdHMgdG8gdGhlIGJ1 ZmZlciBvZgotV0lORE9XLgorV0lORE9XIG11c3QgYmUgYSBsaXZlIHdpbmRvdyBhbmQgZGVm YXVsdHMgdG8gdGhlIHNlbGVjdGVkIG9uZS4gIEJVRkZFUgorbXVzdCBiZSBhIGxpdmUgYnVm ZmVyIGFuZCBkZWZhdWx0cyB0byB0aGUgYnVmZmVyIG9mIFdJTkRPVyAoYWx0aG91Z2gKK3Ro YXQgZGVmYXVsdCBoYXJkbHkgbWFrZXMgYW55IHNlbnNlKS4KIAotTWFrZSBCVUZGRVIgZGlz YXBwZWFyIGZyb20gYWxsIHZhcmlhYmxlcyBtZW50aW9uZWQgYnkgdGhlIG9iamVjdCBvZgot V0lORE9XLiAgVGhpcyBpbmNsdWRlcyB0aGUgYnVmZmVycyBwcmV2aW91c2x5IHNod29uIGlu IFdJTkRPVyBhcyB3ZWxsIGFzCitNYWtlIEJVRkZFUiBkaXNhcHBlYXIgZnJvbSBtb3N0IGNv bXBvbmVudHMgc3BlY2lmaWVkIGJ5IHRoZSBvYmplY3Qgb2YKK1dJTkRPVy4gIFRoaXMgaW5j bHVkZXMgdGhlIGJ1ZmZlcnMgcHJldmlvdXNseSBzaG93biBpbiBXSU5ET1cgYXMgd2VsbCBh cwogYW55IGJ1ZmZlcnMgbWVudGlvbmVkIGJ5IFdJTkRPVydzIGBxdWl0LXJlc3RvcmUnIGFu ZCBgcXVpdC1yZXN0b3JlLXByZXYnCiBwYXJhbWV0ZXJzLiIKICAgKGxldCogKCh3aW5kb3cg KHdpbmRvdy1ub3JtYWxpemUtd2luZG93IHdpbmRvdyB0KSkKQEAgLTQ1NjIsNyArNDU2Niwx MyBAQCB1bnJlY29yZC13aW5kb3ctYnVmZmVyCiAgICAgICAgd2luZG93IChhc3NxLWRlbGV0 ZS1hbGwgYnVmZmVyICh3aW5kb3ctcHJldi1idWZmZXJzIHdpbmRvdykpKQogICAgICAgKHNl dC13aW5kb3ctbmV4dC1idWZmZXJzCiAgICAgICAgd2luZG93IChkZWxxIGJ1ZmZlciAod2lu ZG93LW5leHQtYnVmZmVycyB3aW5kb3cpKSkKLQorICAgICAgOzsgSWYgdGhlIGZvdXJ0aCBl bGVtZW50cyBvZiB0aGUgJ3F1aXQtcmVzdG9yZScgb3IKKyAgICAgIDs7ICdxdWl0LXJlc3Rv cmUtcHJldicgcGFyYW1ldGVycyBlcXVhbCBCVUZGRVIsIHRoZXNlIHBhcmFtZXRlcnMKKyAg ICAgIDs7IGJlY29tZSB1c2VsZXNzIC0gaW4gJ3F1aXQtcmVzdG9yZS13aW5kb3cnIHRoZSBm b3VydGggZWxlbWVudAorICAgICAgOzsgbXVzdCBlcXVhbCB0aGUgYnVmZmVyIG9mIFdJTkRP VyBpbiBvcmRlciB0byB1c2UgdGhhdCBwYXJhbWV0ZXIuCisgICAgICA7OyBJZiBCVUZGRVIg aXMgbWVudGlvbmVkIGluIHRoZSBzZWNvbmQgZWxlbWVudCBvZiB0aGUgcGFyYW1ldGVyLAor ICAgICAgOzsgJ3F1aXQtcmVzdG9yZS13aW5kb3cnIGNhbm5vdCBwb3NzaWJseSBzaG93IEJV RkZFUiBpbnN0ZWFkOyBzbworICAgICAgOzsgdGhpcyBwYXJhbWV0ZXIgYmVjb21lcyB1c2Vs ZXNzIHRvby4KICAgICAgICh3aGVuIChvciAoZXEgYnVmZmVyIChudGggMyBxdWl0LXJlc3Rv cmUtcHJldikpCiAJCShhbmQgKGxpc3RwIChzZXRxIHF1YWQgKG50aCAxIHF1aXQtcmVzdG9y ZS1wcmV2KSkpCiAJCSAgICAgKGVxIChjYXIgcXVhZCkgYnVmZmVyKSkpCkBAIC00NTcyLDcg KzQ1ODIsOCBAQCB1bnJlY29yZC13aW5kb3ctYnVmZmVyCiAJCShhbmQgKGxpc3RwIChzZXRx IHF1YWQgKG50aCAxIHF1aXQtcmVzdG9yZSkpKQogCQkgICAgIChlcSAoY2FyIHF1YWQpIGJ1 ZmZlcikpKQogCShzZXQtd2luZG93LXBhcmFtZXRlcgotCSB3aW5kb3cgJ3F1aXQtcmVzdG9y ZSAod2luZG93LXBhcmFtZXRlciB3aW5kb3cgJ3F1aXQtcmVzdG9yZS1wcmV2KSkpKSkpCisJ IHdpbmRvdyAncXVpdC1yZXN0b3JlICh3aW5kb3ctcGFyYW1ldGVyIHdpbmRvdyAncXVpdC1y ZXN0b3JlLXByZXYpKQorCShzZXQtd2luZG93LXBhcmFtZXRlciB3aW5kb3cgJ3F1aXQtcmVz dG9yZS1wcmV2IG5pbCkpKSkpCiAKIChkZWZ1biBzZXQtd2luZG93LWJ1ZmZlci1zdGFydC1h bmQtcG9pbnQgKHdpbmRvdyBidWZmZXIgJm9wdGlvbmFsIHN0YXJ0IHBvaW50KQogICAiU2V0 IFdJTkRPVydzIGJ1ZmZlciB0byBCVUZGRVIuCkBAIC01MDkxLDYgKzUxMDIsMTggQEAgcHJl dmlvdXMtYnVmZmVyCiAgICAgICAgICAgICAgICAgIChub3QgKG9yIGV4ZWN1dGluZy1rYmQt bWFjcm8gbm9uaW50ZXJhY3RpdmUpKSkKICAgICAgICAgKHVzZXItZXJyb3IgIk5vIHByZXZp b3VzIGJ1ZmZlciIpKSkpKSkKIAorKGRlZmN1c3RvbSBraWxsLWJ1ZmZlci1xdWl0LXdpbmRv d3MgbmlsCisgICJOb24tbmlsIG1lYW5zIGtpbGxpbmcgYnVmZmVycyBzaGFsbCBxdWl0IHdp bmRvd3MuCitJZiB0aGlzIGlzIG5pbCwga2lsbGluZyBhIGJ1ZmZlciBtYXkgZGVsZXRlIGRl ZGljYXRlZCB3aW5kb3dzIG9ubHkuICBJZgordGhpcyBpcyBub24tbmlsLCBga2lsbC1idWZm ZXInIChhbmQgYHJlcGxhY2UtYnVmZmVyLWluLXdpbmRvd3MnIGluCitjb25zZXF1ZW5jZSkg aGF2ZSBgcXVpdC1yZXN0b3JlLXdpbmRvdycgZGVhbCB3aXRoIGFueSB3aW5kb3cgc2hvd2lu ZyB0aGUKK2J1ZmZlciB0byBiZSBraWxsZWQgd2hpY2ggbWF5IGRlbGV0ZSB0aGUgd2luZG93 IGlmIGl0J3Mgbm90IGRlZGljYXRlZCB0bworaXRzIGJ1ZmZlci4gIEFsc28sIGBkZWxldGUt d2luZG93cy1vbicgd2lsbCB1c2UgYHF1aXQtcmVzdG9yZS13aW5kb3cnIGFzCitmYWxsYmFj ayB3aGVuIGEgd2luZG93IGNhbm5vdCBiZSBkZWxldGVkIG90aGVyd2lzZS4iCisgIDp0eXBl ICdib29sZWFuCisgIDp2ZXJzaW9uICIzMS4xIgorICA6Z3JvdXAgJ3dpbmRvd3MpCisKIChk ZWZ1biBkZWxldGUtd2luZG93cy1vbiAoJm9wdGlvbmFsIGJ1ZmZlci1vci1uYW1lIGZyYW1l KQogICAiRGVsZXRlIGFsbCB3aW5kb3dzIHNob3dpbmcgQlVGRkVSLU9SLU5BTUUuCiBCVUZG RVItT1ItTkFNRSBtYXkgYmUgYSBidWZmZXIgb3IgdGhlIG5hbWUgb2YgYW4gZXhpc3Rpbmcg YnVmZmVyCkBAIC01MTI4LDggKzUxNTEsMTAgQEAgZGVsZXRlLXdpbmRvd3Mtb24KIHRlcm1p bmFsLCBkZWxldGUgdGhhdCBmcmFtZS4gIE90aGVyd2lzZSwgZG8gbm90IGRlbGV0ZSBhIGZy YW1lJ3Mgcm9vdAogd2luZG93IGlmIGl0IHNob3dzIHRoZSBidWZmZXIgc3BlY2lmaWVkIGJ5 IEJVRkZFUi1PUi1OQU1FIGFuZCBkbyBub3QKIGRlbGV0ZSBhbnkgZnJhbWUncyBtYWluIHdp bmRvdyBzaG93aW5nIHRoYXQgYnVmZmVyIGVpdGhlci4gIFJhdGhlciwgaW4KLWFueSBzdWNo IGNhc2UsIGNhbGwgYHF1aXQtcmVzdG9yZS13aW5kb3cnIHRvIHNob3cgYW5vdGhlciBidWZm ZXIgaW4gdGhhdAotd2luZG93IGFuZCBtYWtlIHN1cmUgdGhlIHdpbmRvdyBpcyBubyBtb3Jl IGRlZGljYXRlZCB0byBpdHMgYnVmZmVyLgorYW55IHN1Y2ggY2FzZSwgY2FsbCBlaXRoZXIg YHF1aXQtcmVzdG9yZS13aW5kb3cnIChwcm92aWRlZAorYGtpbGwtYnVmZmVyLXF1aXQtd2lu ZG93cycgaXMgbm9uLW5pbCkgb3IgYHN3aXRjaC10by1wcmV2LWJ1ZmZlcicgdG8KK3Nob3cg YW5vdGhlciBidWZmZXIgaW4gdGhhdCB3aW5kb3cgYW5kIG1ha2Ugc3VyZSB0aGUgd2luZG93 IGlzIG5vIG1vcmUKK2RlZGljYXRlZCB0byBpdHMgYnVmZmVyLgogCiBJZiB0aGUgYnVmZmVy IHNwZWNpZmllZCBieSBCVUZGRVItT1ItTkFNRSBpcyBzaG93biBpbiBhIG1pbmlidWZmZXIK IHdpbmRvdywgZG8gbm90aGluZyBmb3IgdGhhdCB3aW5kb3cuICBGb3IgYW55IHdpbmRvdyB0 aGF0IGRvZXMgbm90IHNob3cKQEAgLTUxNjYsOSArNTE5MSwxOCBAQCBkZWxldGUtd2luZG93 cy1vbgogCSAgICAgKChlcSBkZWxldGFibGUgdCkKIAkgICAgICA7OyBEZWxldGUgd2luZG93 LgogCSAgICAgIChkZWxldGUtd2luZG93IHdpbmRvdykpCisJICAgICAoa2lsbC1idWZmZXIt cXVpdC13aW5kb3dzCisJICAgICAgKHF1aXQtcmVzdG9yZS13aW5kb3cgd2luZG93ICdidXJ5 KQorCSAgICAgICh3aGVuICh3aW5kb3ctbGl2ZS1wIHdpbmRvdykKKwkJOzsgVW5yZWNvcmQg QlVGRkVSIGluIHRoaXMgd2luZG93LgorCQkodW5yZWNvcmQtd2luZG93LWJ1ZmZlciB3aW5k b3cgYnVmZmVyKSkpCiAJICAgICAodAotCSAgICAgICh3aGVuIChlcSAod2luZG93LWJ1ZmZl ciB3aW5kb3cpIGJ1ZmZlcikKLQkJKHF1aXQtcmVzdG9yZS13aW5kb3cgd2luZG93ICdidXJ5 KSkKKwkgICAgICA7OyBJbiB3aW5kb3cgc3dpdGNoIHRvIHByZXZpb3VzIGJ1ZmZlci4KKwkg ICAgICAoc2V0LXdpbmRvdy1kZWRpY2F0ZWQtcCB3aW5kb3cgbmlsKQorCSAgICAgIChzd2l0 Y2gtdG8tcHJldi1idWZmZXIgd2luZG93ICdidXJ5KQorCSAgICAgIDs7IFJlc3RvcmUgdGhl IGRlZGljYXRlZCAnc2lkZScgZmxhZy4KKwkgICAgICAod2hlbiAoZXEgZGVkaWNhdGVkICdz aWRlKQorICAgICAgICAgICAgICAgIChzZXQtd2luZG93LWRlZGljYXRlZC1wIHdpbmRvdyAn c2lkZSkpCiAJICAgICAgKHdoZW4gKHdpbmRvdy1saXZlLXAgd2luZG93KQogCQk7OyBVbnJl Y29yZCBCVUZGRVIgaW4gdGhpcyB3aW5kb3cuCiAJCSh1bnJlY29yZC13aW5kb3ctYnVmZmVy IHdpbmRvdyBidWZmZXIpKSkpKQpAQCAtNTE3NywyOSArNTIxMSw0NiBAQCBkZWxldGUtd2lu ZG93cy1vbgogCiAoZGVmdW4gcmVwbGFjZS1idWZmZXItaW4td2luZG93cyAoJm9wdGlvbmFs IGJ1ZmZlci1vci1uYW1lKQogICAiUmVwbGFjZSBCVUZGRVItT1ItTkFNRSB3aXRoIHNvbWUg b3RoZXIgYnVmZmVyIGluIGFsbCB3aW5kb3dzIHNob3dpbmcgaXQuCi1CVUZGRVItT1ItTkFN RSBtYXkgYmUgYSBidWZmZXIgb3IgdGhlIG5hbWUgb2YgYW4gZXhpc3RpbmcgYnVmZmVyCi1h bmQgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgYnVmZmVyLiAgTWluaWJ1ZmZlciB3aW5kb3dz IGFyZSBub3QKLWNvbnNpZGVyZWQuCi0KLVdpdGggdGhlIGV4Y2VwdGlvbiBvZiBzaWRlIHdp bmRvd3MsIHdoZW4gYSB3aW5kb3cgc2hvd2luZyBCVUZGRVItT1ItTkFNRQotaXMgZGVkaWNh dGVkLCB0aGF0IHdpbmRvdyBpcyBkZWxldGVkLiAgSWYgdGhhdCB3aW5kb3cgaXMgdGhlIG9u bHkgd2luZG93Ci1vbiBpdHMgZnJhbWUsIHRoZSBmcmFtZSBpcyBkZWxldGVkIHRvbyB3aGVu IHRoZXJlIGFyZSBvdGhlciBmcmFtZXMgbGVmdC4KLUlmIHRoZXJlIGFyZSBubyBvdGhlciBm cmFtZXMgbGVmdCwgc29tZSBvdGhlciBidWZmZXIgaXMgZGlzcGxheWVkIGluIHRoYXQKK0JV RkZFUi1PUi1OQU1FIG1heSBiZSBhIGJ1ZmZlciBvciB0aGUgbmFtZSBvZiBhbiBleGlzdGlu ZyBidWZmZXIgYW5kCitkZWZhdWx0cyB0byB0aGUgY3VycmVudCBidWZmZXIuICBNaW5pYnVm ZmVyIHdpbmRvd3MgYXJlIG5vdCBjb25zaWRlcmVkLgorCitJZiB0aGUgb3B0aW9uIGBraWxs LWJ1ZmZlci1xdWl0LXdpbmRvd3MnIGlzIG5pbCwgYmVoYXZlIGFzIGZvbGxvd3M6IFdpdGgK K3RoZSBleGNlcHRpb24gb2Ygc2lkZSB3aW5kb3dzLCB3aGVuIGEgd2luZG93IHNob3dpbmcg QlVGRkVSLU9SLU5BTUUgaXMKK2RlZGljYXRlZCwgZGVsZXRlIHRoYXQgd2luZG93LiAgSWYg dGhhdCB3aW5kb3cgaXMgdGhlIG9ubHkgd2luZG93IG9uIGl0cworZnJhbWUsIGRlbGV0ZSBp dHMgZnJhbWUgd2hlbiB0aGVyZSBhcmUgb3RoZXIgZnJhbWVzIGxlZnQuICBJbiBhbnkgb3Ro ZXIKK2Nhc2UsIGNhbGwgYHN3aXRjaC10by1wcmV2LWJ1ZmZlcicgdG8gZGlzcGxheSBzb21l IG90aGVyIGJ1ZmZlciBpbiB0aGF0CiB3aW5kb3cuCiAKLVRoaXMgZnVuY3Rpb24gcmVtb3Zl cyB0aGUgYnVmZmVyIGRlbm90ZWQgYnkgQlVGRkVSLU9SLU5BTUUgZnJvbSBhbGwKLXdpbmRv dy1sb2NhbCBidWZmZXIgbGlzdHMgYW5kIHJlbW92ZXMgYW55IGBxdWl0LXJlc3RvcmUnIG9y Ci1gcXVpdC1yZXN0b3JlLXByZXYnIHBhcmFtZXRlcnMgbWVudGlvbmluZyBpdC4iCitJZiBg a2lsbC1idWZmZXItcXVpdC13aW5kb3dzJyBpcyBub24tbmlsLCBjYWxsIGBxdWl0LXJlc3Rv cmUtd2luZG93JyBmb3IKK2FueSB3aW5kb3cgc2hvd2luZyBCVUZGRVItT1ItTkFNRSB3aXRo IHRoZSBhcmd1bWVudCBCVVJZLU9SLUtJTEwgc2V0IHRvCitga2lsbGluZycgdG8gYXZvaWQg dGhhdCB0aGUgbGF0dGVyIGtpbGxzIHRoZSBidWZmZXIgcHJlbWF0dXJlbHkuCisKK0luIGVp dGhlciBjYXNlLCByZW1vdmUgdGhlIGJ1ZmZlciBkZW5vdGVkIGJ5IEJVRkZFUi1PUi1OQU1F IGZyb20gdGhlCitsaXN0cyBvZiBwcmV2aW91cyBhbmQgbmV4dCBidWZmZXJzIG9mIGFsbCB3 aW5kb3dzIGFuZCByZW1vdmUgYW55CitgcXVpdC1yZXN0b3JlJyBvciBgcXVpdC1yZXN0b3Jl LXByZXYnIHBhcmFtZXRlcnMgbWVudGlvbmluZyBpdC4KKworVGhpcyBmdW5jdGlvbiBpcyBj YWxsZWQgYnkgYGtpbGwtYnVmZmVyJyB3aGljaCBraWxscyB0aGUgYnVmZmVyCitzcGVjaWZp ZWQgYnkgYGJ1ZmZlci1vci1uYW1lJyBhZnRlcndhcmRzLiAgSXQgbmV2ZXIga2lsbHMgYSBi dWZmZXIgYnkKK2l0c2VsZi4iCiAgIChpbnRlcmFjdGl2ZSAiYkJ1ZmZlciB0byByZXBsYWNl OiAiKQogICAobGV0ICgoYnVmZmVyICh3aW5kb3ctbm9ybWFsaXplLWJ1ZmZlciBidWZmZXIt b3ItbmFtZSkpKQotICAgIDs7IFNjYW4gYWxsIHdpbmRvd3MuICBXZSBoYXZlIHRvIHVucmVj b3JkIEJVRkZFUiBpbiB0aG9zZSBub3QKLSAgICA7OyBzaG93aW5nIGl0LgorICAgIDs7IFNj YW4gYWxsIHdpbmRvd3MuICBXZSBoYXZlIHRvIHVucmVjb3JkIEJVRkZFUi1PUi1OQU1FIGlu IHRob3NlCisgICAgOzsgbm90IHNob3dpbmcgaXQuCiAgICAgKGRvbGlzdCAod2luZG93ICh3 aW5kb3ctbGlzdC0xIG5pbCBuaWwgdCkpCiAgICAgICAod2hlbiAoZXEgKHdpbmRvdy1idWZm ZXIgd2luZG93KSBidWZmZXIpCi0JKHF1aXQtcmVzdG9yZS13aW5kb3cgd2luZG93KSkKLSAg ICAgICh3aGVuICh3aW5kb3ctbGl2ZS1wIHdpbmRvdykKLQk7OyBVbnJlY29yZCBCVUZGRVIg aW4gdGhpcyB3aW5kb3cuCi0JKHVucmVjb3JkLXdpbmRvdy1idWZmZXIgd2luZG93IGJ1ZmZl cikpKSkpCisJKGlmIGtpbGwtYnVmZmVyLXF1aXQtd2luZG93cworCSAgICAocXVpdC1yZXN0 b3JlLXdpbmRvdyB3aW5kb3cgJ2tpbGxpbmcpCisJICAobGV0ICgoZGVkaWNhdGVkLXNpZGUg KGVxICh3aW5kb3ctZGVkaWNhdGVkLXAgd2luZG93KSAnc2lkZSkpKQorICAgICAgICAgICAg KHdoZW4gKG9yIGRlZGljYXRlZC1zaWRlIChub3QgKHdpbmRvdy0tZGVsZXRlIHdpbmRvdyB0 ICdraWxsKSkpCisJICAgICAgOzsgU3dpdGNoIHRvIGFub3RoZXIgYnVmZmVyIGluIHRoYXQg d2luZG93LgorCSAgICAgIChzZXQtd2luZG93LWRlZGljYXRlZC1wIHdpbmRvdyBuaWwpCisJ ICAgICAgKGlmIChzd2l0Y2gtdG8tcHJldi1idWZmZXIgd2luZG93ICdraWxsKQorICAgICAg ICAgICAgICAgICAgKGFuZCBkZWRpY2F0ZWQtc2lkZSAoc2V0LXdpbmRvdy1kZWRpY2F0ZWQt cCB3aW5kb3cgJ3NpZGUpKQorCQkod2luZG93LS1kZWxldGUgd2luZG93IG5pbCAna2lsbCkp KSkpKQorCisJKHdoZW4gKHdpbmRvdy1saXZlLXAgd2luZG93KQorCSAgOzsgVW5yZWNvcmQg QlVGRkVSIGluIHRoaXMgd2luZG93LgorCSAgKHVucmVjb3JkLXdpbmRvdy1idWZmZXIgd2lu ZG93IGJ1ZmZlcikpKSkpCiAKIChkZWZjdXN0b20gcXVpdC13aW5kb3ctaG9vayBuaWwKICAg Ikhvb2sgcnVuIGJlZm9yZSBwZXJmb3JtaW5nIGFueSBvdGhlciBhY3Rpb25zIGluIHRoZSBg cXVpdC13aW5kb3cnIGNvbW1hbmQuIgpAQCAtNTIwNyw2ICs1MjU4LDIzIEBAIHF1aXQtd2lu ZG93LWhvb2sKICAgOnZlcnNpb24gIjI3LjEiCiAgIDpncm91cCAnd2luZG93cykKIAorKGRl ZmN1c3RvbSBxdWl0LXJlc3RvcmUtd2luZG93LW5vLXN3aXRjaCBuaWwKKyAgIk5vbi1uaWwg bWVhbnMgYHF1aXQtcmVzdG9yZS13aW5kb3cnIHByZWZlcmFibHkgd29uJ3Qgc3dpdGNoIGJ1 ZmZlcnMuCitJZiB0aGlzIGlzIG5pbCwgYHF1aXQtcmVzdG9yZS13aW5kb3cnIHdpbGwgY2Fs bCBgc3dpdGNoLXRvLXByZXYtYnVmZmVyJwordW5sZXNzIHRoZSB3aW5kb3cgaGFzIGJlZW4g bWFkZSBieSBgZGlzcGxheS1idWZmZXInLiAgSWYgdGhpcyBpcyB0LAorYHF1aXQtcmVzdG9y ZS13aW5kb3cnIHdpbGwgc3dpdGNoIHRvIGEgcHJldmlvdXMgYnVmZmVyIG9ubHkgaWYgYSBs aXZlCitidWZmZXIgZXhpc3RzIHRoYXQgd2FzIHByZXZpb3VzbHkgc2hvd24gaW4gdGhhdCB3 aW5kb3cuICBJZiB0aGlzIGlzIHRoZQorc3ltYm9sIGBza2lwLWluaXRpYWwnLCBpdCB3aWxs IG5vdCBzd2l0Y2ggdG8gdGhlIGluaXRpYWwgYnVmZmVyIG9mIHRoZQord2luZG93J3MgYHF1 aXQtcmVzdG9yZScgcGFyYW1ldGVyLgorCitJbiBlaXRoZXIgY2FzZSwgaWYgYHF1aXQtcmVz dG9yZS13aW5kb3cnIGRvZXNuJ3Qgc3dpdGNoIHRvIGEgcHJldmlvdXMKK2J1ZmZlciwgaXQg d2lsbCB0cnkgdG8gZGVsZXRlIHRoZSB3aW5kb3cgKGFuZCBtYXliZSBpdHMgZnJhbWUpIGlu c3RlYWQuCitOb3RlIGFsc28gdGhhdCBpZiBhIHdpbmRvdyBpcyBkZWRpY2F0ZWQsIGBxdWl0 LXJlc3RvcmUtd2luZG93JyB3aWxsCit1c3VhbGx5IG5vdCBzd2l0Y2ggdG8gYSBwcmV2aW91 cyBidWZmZXIgaW4gaXQuIgorICA6dHlwZSAnYm9vbGVhbgorICA6dmVyc2lvbiAiMzEuMSIK KyAgOmdyb3VwICd3aW5kb3dzKQorCiAoZGVmdW4gd2luZG93LS1xdWl0LXJlc3RvcmUtc2Vs ZWN0LXdpbmRvdyAod2luZG93KQogICAiU2VsZWN0IFdJTkRPVyBhZnRlciBoYXZpbmcgcXVp dCBhbm90aGVyIG9uZS4KIERvIG5vdCBzZWxlY3QgYW4gaW5hY3RpdmUgbWluaWJ1ZmZlciB3 aW5kb3cuIgpAQCAtNTIyNyw5ICs1Mjk1LDEwIEBAIHF1aXQtcmVzdG9yZS13aW5kb3cKIHVz ZWQgdG8gcmVzdG9yZSB0aGUgcHJldmlvdXNseSBzaG93biBidWZmZXIuICBTZWUgSW5mbyBu b2RlIGAoZWxpc3ApCiBRdWl0dGluZyBXaW5kb3dzJyBmb3IgbW9yZSBkZXRhaWxzLgogCi1J ZiBXSU5ET1cncyBkZWRpY2F0ZWQgZmxhZyBpcyB0LCB0cnkgdG8gZGVsZXRlIFdJTkRPVy4g IElmIGl0Ci1lcXVhbHMgdGhlIHZhbHVlIGBzaWRlJywgcmVzdG9yZSB0aGF0IHZhbHVlIHdo ZW4gV0lORE9XIGlzIG5vdAotZGVsZXRlZC4KK0lmIFdJTkRPVydzIGRlZGljYXRlZCBmbGFn IGlzIHQsIHRyeSB0byBkZWxldGUgV0lORE9XLiAgSWYgaXQgZXF1YWxzIHRoZQordmFsdWUg YHNpZGUnLCByZXN0b3JlIHRoYXQgdmFsdWUgd2hlbiBXSU5ET1cgaXMgbm90IGRlbGV0ZWQu ICBXaGV0aGVyCitXSU5ET1cgb3IgaXRzIGZyYW1lIGdldCBkZWxldGVkIGNhbiBiZSBmdXJ0 aGVyIGNvbnRyb2xsZWQgdmlhIHRoZSBvcHRpb24KK2BxdWl0LXJlc3RvcmUtd2luZG93LW5v LXN3aXRjaCcuCiAKIE9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCBCVVJZLU9SLUtJTEwgdGVs bHMgaG93IHRvIHByb2NlZWQgd2l0aAogdGhlIGJ1ZmZlciBvZiBXSU5ET1cuICBUaGUgZm9s bG93aW5nIHZhbHVlcyBhcmUgaGFuZGxlZDoKQEAgLTUyNDksNyArNTMxOCwxNCBAQCBxdWl0 LXJlc3RvcmUtd2luZG93CiAgIG1vc3QgcmVsaWFibGUgcmVtZWR5IHRvIG5vdCBoYXZlIGBz d2l0Y2gtdG8tcHJldi1idWZmZXInIHN3aXRjaAogICB0byB0aGlzIGJ1ZmZlciBhZ2FpbiB3 aXRob3V0IGtpbGxpbmcgdGhlIGJ1ZmZlci4KIAotYGtpbGwnIG1lYW5zIHRvIGtpbGwgV0lO RE9XJ3MgYnVmZmVyLiIKK2BraWxsJyBtZWFucyB0byBraWxsIFdJTkRPVydzIGJ1ZmZlci4K KworYGtpbGxpbmcnIGlzIGxpa2UgYGtpbGwnIGJ1dCBtZWFucyB0aGF0IFdJTkRPVydzIGJ1 ZmZlciB3aWxsIGdldCBraWxsZWQKK2Vsc2V3aGVyZS4gIFRoaXMgdmFsdWUgaXMgdXNlZCBi eSBgcmVwbGFjZS1idWZmZXItaW4td2luZG93cycgYW5kCitgcXVpdC13aW5kb3dzLW9uJy4K KworYGJ1cnlpbmcnIGlzIGxpa2UgYGJ1cnknIGJ1dCBtZWFucyB0aGF0IFdJTkRPVydzIGJ1 ZmZlciB3aWxsIGdldCBidXJpZWQKK2Vsc2V3aGVyZS4gIFRoaXMgdmFsdWUgaXMgdXNlZCBi eSBgcXVpdC13aW5kb3dzLW9uJy4iCiAgIChzZXRxIHdpbmRvdyAod2luZG93LW5vcm1hbGl6 ZS13aW5kb3cgd2luZG93IHQpKQogICAobGV0KiAoKGJ1ZmZlciAod2luZG93LWJ1ZmZlciB3 aW5kb3cpKQogCSAocXVpdC1yZXN0b3JlICh3aW5kb3ctcGFyYW1ldGVyIHdpbmRvdyAncXVp dC1yZXN0b3JlKSkKQEAgLTUyNjUsMzIgKzUzNDEsMzggQEAgcXVpdC1yZXN0b3JlLXdpbmRv dwogICAgIChjb25kCiAgICAgIDs7IEZpcnN0IHRyeSB0byBkZWxldGUgZGVkaWNhdGVkIHdp bmRvd3MgdGhhdCBhcmUgbm90IHNpZGUgd2luZG93cy4KICAgICAgKChhbmQgZGVkaWNhdGVk IChub3QgKGVxIGRlZGljYXRlZCAnc2lkZSkpCi0gICAgICAgICAgICh3aW5kb3ctLWRlbGV0 ZSB3aW5kb3cgJ2RlZGljYXRlZCAoZXEgYnVyeS1vci1raWxsICdraWxsKSkpCisgICAgICAg ICAgICh3aW5kb3ctLWRlbGV0ZQorCSAgICB3aW5kb3cgJ2RlZGljYXRlZCAobWVtcSBidXJ5 LW9yLWtpbGwgJyhraWxsIGtpbGxpbmcpKSkpCiAgICAgICA7OyBJZiB0aGUgcHJldmlvdXNs eSBzZWxlY3RlZCB3aW5kb3cgaXMgc3RpbGwgYWxpdmUsIHNlbGVjdCBpdC4KICAgICAgICh3 aW5kb3ctLXF1aXQtcmVzdG9yZS1zZWxlY3Qtd2luZG93IHF1aXQtcmVzdG9yZS0yKSkKICAg ICAgKChhbmQgKG5vdCBwcmV2LWJ1ZmZlcikKIAkgICAoZXEgKG50aCAxIHF1aXQtcmVzdG9y ZSkgJ3RhYikKLQkgICAoZXEgKG50aCAzIHF1aXQtcmVzdG9yZSkgYnVmZmVyKSkKKwkgICAo ZXEgKG50aCAzIHF1aXQtcmVzdG9yZSkgYnVmZmVyKQorCSAgICg8IChzZXEtY291bnQgKGxh bWJkYSAodykgKHdpbmRvdy1wYXJhbWV0ZXIgdyAncXVpdC1yZXN0b3JlKSkKKwkJICAgICAg ICAgKHdpbmRvdy1saXN0LTEgbmlsICdub21pbmkpKQorICAgICAgICAgICAgICAyKSkKICAg ICAgICh0YWItYmFyLWNsb3NlLXRhYikKICAgICAgIDs7IElmIHRoZSBwcmV2aW91c2x5IHNl bGVjdGVkIHdpbmRvdyBpcyBzdGlsbCBhbGl2ZSwgc2VsZWN0IGl0LgogICAgICAgKHdpbmRv dy0tcXVpdC1yZXN0b3JlLXNlbGVjdC13aW5kb3cgcXVpdC1yZXN0b3JlLTIpKQotICAgICAo KGFuZCAobm90IHByZXYtYnVmZmVyKQotCSAgIChvciAoYW5kIChvciAoZXEgKG50aCAxIHF1 aXQtcmVzdG9yZSkgJ2ZyYW1lKQotCQkJKGFuZCAoZXEgKG50aCAxIHF1aXQtcmVzdG9yZSkg J3dpbmRvdykKLQkJCSAgICAgOzsgSWYgdGhlIHdpbmRvdyBoYXMgYmVlbiBjcmVhdGVkIG9u IGFuCi0JCQkgICAgIDs7IGV4aXN0aW5nIGZyYW1lIGFuZCBlbmRlZCB1cCBhcyB0aGUgc29s ZQotCQkJICAgICA7OyB3aW5kb3cgb24gdGhhdCBmcmFtZSwgZG8gbm90IGRlbGV0ZSBpdAot CQkJICAgICA7OyAoQnVnIzEyNzY0KS4KLQkJCSAgICAgKG5vdCAoZXEgd2luZG93IChmcmFt ZS1yb290LXdpbmRvdyB3aW5kb3cpKSkpKQotCQkgICAgKGVxIChudGggMyBxdWl0LXJlc3Rv cmUpIGJ1ZmZlcikpCi0JICAgICAgIChhbmQgKG9yIChlcSAobnRoIDEgcXVpdC1yZXN0b3Jl LXByZXYpICdmcmFtZSkKLQkJCShhbmQgKGVxIChudGggMSBxdWl0LXJlc3RvcmUtcHJldikg J3dpbmRvdykKLQkJCSAgICAgKG5vdCAoZXEgd2luZG93IChmcmFtZS1yb290LXdpbmRvdyB3 aW5kb3cpKSkpKQotCQkgICAgKGVxIChudGggMyBxdWl0LXJlc3RvcmUtcHJldikgYnVmZmVy KQotCQkgICAgOzsgVXNlIHNlbGVjdGVkIHdpbmRvdyBmcm9tIHF1aXQtcmVzdG9yZS1wcmV2 LgotCQkgICAgKHNldHEgcXVpdC1yZXN0b3JlLTIgcXVpdC1yZXN0b3JlLXByZXYtMikpKQor ICAgICAoKGFuZCAob3IgKG5vdCBwcmV2LWJ1ZmZlcikKKwkgICAgICAgOzsgSWdub3JlIGZp cnN0IG9mIHRoZSBwcmV2aW91cyBidWZmZXJzIGlmCisJICAgICAgIDs7ICdxdWl0LXJlc3Rv cmUtd2luZG93LW5vLXN3aXRjaCcgc2F5cyBzby4KKwkgICAgICAgKGFuZCAoZXEgcXVpdC1y ZXN0b3JlLXdpbmRvdy1uby1zd2l0Y2ggJ3NraXAtaW5pdGlhbCkKKwkJICAgIChub3QgKGNk ciAod2luZG93LXByZXYtYnVmZmVycyB3aW5kb3cpKSkpKQorCSAgIChvciAoZXEgKG50aCAx IHF1aXQtcmVzdG9yZSkgJ2ZyYW1lKQorCSAgICAgICA7OyBJZiB0aGUgd2luZG93IGhhcyBi ZWVuIGNyZWF0ZWQgb24gYW4gZXhpc3RpbmcKKwkgICAgICAgOzsgZnJhbWUgYW5kIGVuZGVk IHVwIGFzIHRoZSBzb2xlIHdpbmRvdyBvbiB0aGF0CisJICAgICAgIDs7IGZyYW1lLCBkbyBu b3QgZGVsZXRlIGl0IChCdWcjMTI3NjQpLgorCSAgICAgICAoYW5kIChlcSAobnRoIDEgcXVp dC1yZXN0b3JlKSAnd2luZG93KQorCQkgICAgKG5vdCAoZXEgd2luZG93IChmcmFtZS1yb290 LXdpbmRvdyB3aW5kb3cpKSkpCisJICAgICAgIDs7IEJ1dCBhbHdheXMgYWxsb3cgZGVsZXRp bmcgYSBmcmFtZSBvciB3aW5kb3cgaWYKKwkgICAgICAgOzsgJ3F1aXQtcmVzdG9yZS13aW5k b3ctbm8tc3dpdGNoJyBzYXlzIHNvLgorCSAgICAgICBxdWl0LXJlc3RvcmUtd2luZG93LW5v LXN3aXRjaCkKKwkgICAob3IgKGVxIChudGggMyBxdWl0LXJlc3RvcmUpIGJ1ZmZlcikKKwkg ICAgICAgcXVpdC1yZXN0b3JlLXdpbmRvdy1uby1zd2l0Y2gpCiAJICAgOzsgRGVsZXRlIFdJ TkRPVyBpZiBwb3NzaWJsZS4KLQkgICAod2luZG93LS1kZWxldGUgd2luZG93IG5pbCAoZXEg YnVyeS1vci1raWxsICdraWxsKSkpCisJICAgKHdpbmRvdy0tZGVsZXRlCisJICAgIHdpbmRv dyBuaWwgKG1lbXEgYnVyeS1vci1raWxsICcoa2lsbCBraWxsaW5nKSkpKQogICAgICAgOzsg SWYgdGhlIHByZXZpb3VzbHkgc2VsZWN0ZWQgd2luZG93IGlzIHN0aWxsIGFsaXZlLCBzZWxl Y3QgaXQuCiAgICAgICAod2luZG93LS1xdWl0LXJlc3RvcmUtc2VsZWN0LXdpbmRvdyBxdWl0 LXJlc3RvcmUtMikpCiAgICAgICgob3IgKGFuZCAobGlzdHAgKHNldHEgcXVhZCAobnRoIDEg cXVpdC1yZXN0b3JlLXByZXYpKSkKQEAgLTUzMjgsNyArNTQxMCw3IEBAIHF1aXQtcmVzdG9y ZS13aW5kb3cKICAgICAgIDs7IERlYWwgd2l0aCB0aGUgYnVmZmVyIHdlIGp1c3QgcmVtb3Zl ZCBmcm9tIFdJTkRPVy4KICAgICAgIChzZXRxIGVudHJ5IChhbmQgKGVxIGJ1cnktb3Ita2ls bCAnYXBwZW5kKQogCQkgICAgICAgKGFzc3EgYnVmZmVyICh3aW5kb3ctcHJldi1idWZmZXJz IHdpbmRvdykpKSkKLSAgICAgICh3aGVuIGJ1cnktb3Ita2lsbAorICAgICAgKHdoZW4gKG1l bXEgYnVyeS1vci1raWxsICcoYnVyeSBidXJ5aW5nIGtpbGwga2lsbGluZykpCiAJOzsgUmVt b3ZlIGJ1ZmZlciBmcm9tIFdJTkRPVydzIHByZXZpb3VzIGFuZCBuZXh0IGJ1ZmZlcnMuCiAJ KHNldC13aW5kb3ctcHJldi1idWZmZXJzCiAJIHdpbmRvdyAoYXNzcS1kZWxldGUtYWxsIGJ1 ZmZlciAod2luZG93LXByZXYtYnVmZmVycyB3aW5kb3cpKSkKQEAgLTUzNDYsNyArNTQyOCw2 IEBAIHF1aXQtcmVzdG9yZS13aW5kb3cKIAk7OyBJZiBxdWl0LXJlc3RvcmUtcHJldiB3YXMg bm90IHVzZWQsIHJlc2V0IHRoZSBxdWl0LXJlc3RvcmUKIAk7OyBwYXJhbWV0ZXIKIAkoc2V0 LXdpbmRvdy1wYXJhbWV0ZXIgd2luZG93ICdxdWl0LXJlc3RvcmUgbmlsKSkKLSAgICAgIDs7 IFNlbGVjdCBvbGQgd2luZG93LgogICAgICAgOzsgSWYgdGhlIHByZXZpb3VzbHkgc2VsZWN0 ZWQgd2luZG93IGlzIHN0aWxsIGFsaXZlLCBzZWxlY3QgaXQuCiAgICAgICAod2luZG93LS1x dWl0LXJlc3RvcmUtc2VsZWN0LXdpbmRvdyBxdWl0LXJlc3RvcmUtMikpCiAgICAgICh0CkBA IC01MzU5LDEzICs1NDQwLDE0IEBAIHF1aXQtcmVzdG9yZS13aW5kb3cKICAgICAgIChpZiAo c3dpdGNoLXRvLXByZXYtYnVmZmVyIHdpbmRvdyBidXJ5LW9yLWtpbGwpCiAgICAgICAgICAg KHdoZW4gKGVxIGRlZGljYXRlZCAnc2lkZSkKICAgICAgICAgICAgIChzZXQtd2luZG93LWRl ZGljYXRlZC1wIHdpbmRvdyAnc2lkZSkpCi0gICAgICAgICh3aW5kb3ctLWRlbGV0ZSB3aW5k b3cgbmlsIChlcSBidXJ5LW9yLWtpbGwgJ2tpbGwpKSkpKQorICAgICAgICAod2luZG93LS1k ZWxldGUKKwkgd2luZG93IG5pbCAobWVtcSBidXJ5LW9yLWtpbGwgJyhraWxsIGtpbGxpbmcp KSkpKSkKICAgICA7OyBEZWFsIHdpdGggdGhlIGJ1ZmZlci4KICAgICAoY29uZAogICAgICAo KG5vdCAoYnVmZmVyLWxpdmUtcCBidWZmZXIpKSkKICAgICAgKChlcSBidXJ5LW9yLWtpbGwg J2tpbGwpCiAgICAgICAoa2lsbC1idWZmZXIgYnVmZmVyKSkKLSAgICAgKGJ1cnktb3Ita2ls bAorICAgICAoKGVxIGJ1cnktb3Ita2lsbCAnYnVyeSkKICAgICAgIChidXJ5LWJ1ZmZlci1p bnRlcm5hbCBidWZmZXIpKSkpKQogCiAoZGVmdW4gcXVpdC13aW5kb3cgKCZvcHRpb25hbCBr aWxsIHdpbmRvdykKQEAgLTU0MDYsMTEgKzU0ODgsMTggQEAgcXVpdC13aW5kb3dzLW9uCiAJ KGZyYW1lcyAoY29uZCAoKG5vdCBmcmFtZSkgdCkgKChlcSBmcmFtZSB0KSBuaWwpICh0IGZy YW1lKSkpKQogICAgIChkb2xpc3QgKHdpbmRvdyAod2luZG93LWxpc3QtMSBuaWwgbmlsIGZy YW1lcykpCiAgICAgICAod2hlbiAoZXEgKHdpbmRvdy1idWZmZXIgd2luZG93KSBidWZmZXIp Ci0JKHF1aXQtcmVzdG9yZS13aW5kb3cgd2luZG93IGtpbGwpKQorCShxdWl0LXJlc3RvcmUt d2luZG93CisJIHdpbmRvdyAoaWYga2lsbCAna2lsbGluZyAnYnVyeWluZykpKQogCiAgICAg ICAod2hlbiAod2luZG93LWxpdmUtcCB3aW5kb3cpCiAJOzsgVW5yZWNvcmQgQlVGRkVSIGlu IHRoaXMgd2luZG93LgotCSh1bnJlY29yZC13aW5kb3ctYnVmZmVyIHdpbmRvdyBidWZmZXIp KSkpKQorCSh1bnJlY29yZC13aW5kb3ctYnVmZmVyIHdpbmRvdyBidWZmZXIpKSkKKworICAg IDs7IERlYWwgd2l0aCBCVUZGRVItT1ItTkFNRS4KKyAgICAoY29uZAorICAgICAoKG5vdCAo YnVmZmVyLWxpdmUtcCBidWZmZXIpKSkKKyAgICAgKGtpbGwgKGtpbGwtYnVmZmVyIGJ1ZmZl cikpCisgICAgICh0IChidXJ5LWJ1ZmZlci1pbnRlcm5hbCBidWZmZXIpKSkpKQogDAogKGRl ZnVuIHdpbmRvdy0tY29tYmluYXRpb24tcmVzaXphYmxlIChwYXJlbnQgJm9wdGlvbmFsIGhv cml6b250YWwpCiAgICJSZXR1cm4gbnVtYmVyIG9mIHBpeGVscyByZWNvdmVyYWJsZSBmcm9t IGhlaWdodCBvZiB3aW5kb3cgUEFSRU5ULgpAQCAtNjcyMywzNiArNjgxMiwzOCBAQCBkaXNw bGF5LWJ1ZmZlci1yZWNvcmQtd2luZG93CiAKIElmIFRZUEUgaXMgYHJldXNlJywgQlVGRkVS IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBvbmUgY3VycmVudGx5IGRpc3BsYXllZAogaW4gV0lO RE9XLCBhbmQgV0lORE9XIGFscmVhZHkgaGFzIGEgYHF1aXQtcmVzdG9yZScgcGFyYW1ldGVy LCBpbnN0YWxsIG9yCi11cGRhdGUgYSBgcXVpdC1yZXN0b3JlLXByZXYnIHBhcmFtZXRlciBm b3IgdGhpcyB3aW5kb3cgdGhhdCBhbGxvd3MgdG8KLXF1aXQgV0lORE9XIGluIGEgc2ltaWxh ciBmYXNoaW9uIGJ1dCByZW1lbWJlcnMgdGhlIHZlcnkgZmlyc3QgaW4gYQotc2VyaWVzIG9m IGJ1ZmZlciBkaXNwbGF5IG9wZXJhdGlvbnMgZm9yIHRoaXMgd2luZG93LiIKK3VwZGF0ZSBh IGBxdWl0LXJlc3RvcmUtcHJldicgcGFyYW1ldGVyIGZvciB0aGlzIHdpbmRvdy4gIFRoaXMg YWxsb3dzIGZvcgorcXVpdHRpbmcgV0lORE9XIGluIGEgc2ltaWxhciBmYXNoaW9uIGJ1dCBh bHNvIGtlZXBzIHRoZSB2ZXJ5IGZpcnN0CitgcXVpdC1yZXN0b3JlJyBwYXJhbWV0ZXIgc3Rv cmVkIGZvciB0aGlzIHdpbmRvdyBhcm91bmQuICBDb25zZXF1ZW50bHksCitXSU5ET1cgKG9y IGl0cyBmcmFtZSkgY2FuIGJlIGV2ZW50dWFsbHkgZGVsZXRlZCBieSBgcXVpdC1yZXN0b3Jl LXdpZG93JworaWYgdGhhdCBwYXJhbWV0ZXIncyBmb3VydGggZWxlbWVudCBlcXVhbHMgV0lO RE9XJ3MgYnVmZmVyLiIKICAgKGNvbmQKICAgICgoZXEgdHlwZSAncmV1c2UpCi0gICAgKGlm IChlcSAod2luZG93LWJ1ZmZlciB3aW5kb3cpIGJ1ZmZlcikKLQk7OyBXSU5ET1cgc2hvd3Mg QlVGRkVSIGFscmVhZHkuICBVcGRhdGUgV0lORE9XJ3MgcXVpdC1yZXN0b3JlCi0JOzsgcGFy YW1ldGVyLCBpZiBhbnkuCi0JKGxldCAoKHF1aXQtcmVzdG9yZSAod2luZG93LXBhcmFtZXRl ciB3aW5kb3cgJ3F1aXQtcmVzdG9yZSkpKQorICAgIChsZXQgKChxdWl0LXJlc3RvcmUgKHdp bmRvdy1wYXJhbWV0ZXIgd2luZG93ICdxdWl0LXJlc3RvcmUpKSkKKyAgICAgIChpZiAoZXEg KHdpbmRvdy1idWZmZXIgd2luZG93KSBidWZmZXIpCisJICA7OyBXSU5ET1cgc2hvd3MgQlVG RkVSIGFscmVhZHkuICBVcGRhdGUgV0lORE9XJ3MgcXVpdC1yZXN0b3JlCisJICA7OyBwYXJh bWV0ZXIsIGlmIGFueS4KIAkgICh3aGVuIChjb25zcCBxdWl0LXJlc3RvcmUpCiAJICAgIChz ZXRjYXIgcXVpdC1yZXN0b3JlICdzYW1lKQogCSAgICA7OyBUaGUgc2VsZWN0ZWQtd2luZG93 IG1pZ2h0IGhhdmUgY2hhbmdlZCBpbgogCSAgICA7OyBiZXR3ZWVuIChCdWcjMjAzNTMpLgog CSAgICAodW5sZXNzIChvciAoZXEgd2luZG93IChzZWxlY3RlZC13aW5kb3cpKQotICAgICAg ICAgICAgICAgICAgICAgICAgKGVxIHdpbmRvdyAobnRoIDIgcXVpdC1yZXN0b3JlKSkpCi0J ICAgICAgKHNldGNhciAoY2RkciBxdWl0LXJlc3RvcmUpIChzZWxlY3RlZC13aW5kb3cpKSkp KQotICAgICAgOzsgV0lORE9XIHNob3dzIGFub3RoZXIgYnVmZmVyLgotICAgICAgKHdpdGgt Y3VycmVudC1idWZmZXIgKHdpbmRvdy1idWZmZXIgd2luZG93KQotCShzZXQtd2luZG93LXBh cmFtZXRlcgotCSB3aW5kb3cgJ3F1aXQtcmVzdG9yZS1wcmV2Ci0JIChsaXN0ICdvdGhlcgot CSAgICAgICA7OyBBIHF1YWRydXBsZSBvZiBXSU5ET1cncyBidWZmZXIsIHN0YXJ0LCBwb2lu dCBhbmQgaGVpZ2h0LgotCSAgICAgICAobGlzdCAoY3VycmVudC1idWZmZXIpICh3aW5kb3ct c3RhcnQgd2luZG93KQotCQkgICAgIDs7IFByZXNlcnZlIHdpbmRvdy1wb2ludC1pbnNlcnRp b24tdHlwZSAoQnVnIzEyODU1KS4KLQkJICAgICAoY29weS1tYXJrZXIKLQkJICAgICAgKHdp bmRvdy1wb2ludCB3aW5kb3cpIHdpbmRvdy1wb2ludC1pbnNlcnRpb24tdHlwZSkKLQkJICAg ICAoaWYgKHdpbmRvdy1jb21iaW5lZC1wIHdpbmRvdykKLSAgICAgICAgICAgICAgICAgICAg ICAgICAod2luZG93LXRvdGFsLWhlaWdodCB3aW5kb3cpCi0gICAgICAgICAgICAgICAgICAg ICAgICh3aW5kb3ctdG90YWwtd2lkdGggd2luZG93KSkpCi0JICAgICAgIChzZWxlY3RlZC13 aW5kb3cpIGJ1ZmZlcikpKSkpCisJCQkoZXEgd2luZG93IChudGggMiBxdWl0LXJlc3RvcmUp KSkKKwkgICAgICAoc2V0Y2FyIChjZGRyIHF1aXQtcmVzdG9yZSkgKHNlbGVjdGVkLXdpbmRv dykpKSkKKwk7OyBXSU5ET1cgc2hvd3MgYW5vdGhlciBidWZmZXIuCisJKHdpdGgtY3VycmVu dC1idWZmZXIgKHdpbmRvdy1idWZmZXIgd2luZG93KQorCSAgKHNldC13aW5kb3ctcGFyYW1l dGVyCisJICAgd2luZG93IChpZiBxdWl0LXJlc3RvcmUgJ3F1aXQtcmVzdG9yZS1wcmV2ICdx dWl0LXJlc3RvcmUpCisJICAgKGxpc3QgJ290aGVyCisJCSA7OyBBIHF1YWRydXBsZSBvZiBX SU5ET1cncyBidWZmZXIsIHN0YXJ0LCBwb2ludCBhbmQgaGVpZ2h0LgorCQkgKGxpc3QgKGN1 cnJlbnQtYnVmZmVyKSAod2luZG93LXN0YXJ0IHdpbmRvdykKKwkJICAgICAgIDs7IFByZXNl cnZlIHdpbmRvdy1wb2ludC1pbnNlcnRpb24tdHlwZSAoQnVnIzEyODU1KS4KKwkJICAgICAg IChjb3B5LW1hcmtlcgorCQkJKHdpbmRvdy1wb2ludCB3aW5kb3cpIHdpbmRvdy1wb2ludC1p bnNlcnRpb24tdHlwZSkKKwkJICAgICAgIChpZiAod2luZG93LWNvbWJpbmVkLXAgd2luZG93 KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpbmRvdy10b3RhbC1oZWlnaHQgd2lu ZG93KQorCQkJICh3aW5kb3ctdG90YWwtd2lkdGggd2luZG93KSkpCisJCSAoc2VsZWN0ZWQt d2luZG93KSBidWZmZXIpKSkpKSkKICAgICgoZXEgdHlwZSAnd2luZG93KQogICAgIDs7IFdJ TkRPVyBoYXMgYmVlbiBjcmVhdGVkIG9uIGFuIGV4aXN0aW5nIGZyYW1lLgogICAgIChzZXQt d2luZG93LXBhcmFtZXRlcgpkaWZmIC0tZ2l0IGEvc3JjL2FsbG9jLmMgYi9zcmMvYWxsb2Mu YwppbmRleCA2NjZmNzdiZmNlMS4uYjk1NTY1MWY1YzAgMTAwNjQ0Ci0tLSBhL3NyYy9hbGxv Yy5jCisrKyBiL3NyYy9hbGxvYy5jCkBAIC02OTk4LDMzICs2OTk4LDYgQEAgbWFya19mYWNl X2NhY2hlIChzdHJ1Y3QgZmFjZV9jYWNoZSAqYykKICAgICB9CiB9CiAKLS8qIFJlbW92ZSBr aWxsZWQgYnVmZmVycyBvciBpdGVtcyB3aG9zZSBjYXIgaXMgYSBraWxsZWQgYnVmZmVyIGZy b20KLSAgIExJU1QsIGFuZCBtYXJrIG90aGVyIGl0ZW1zLiAgUmV0dXJuIGNoYW5nZWQgTElT VCwgd2hpY2ggaXMgbWFya2VkLiAgKi8KLQotc3RhdGljIExpc3BfT2JqZWN0Ci1tYXJrX2Rp c2NhcmRfa2lsbGVkX2J1ZmZlcnMgKExpc3BfT2JqZWN0IGxpc3QpCi17Ci0gIExpc3BfT2Jq ZWN0IHRhaWwsICpwcmV2ID0gJmxpc3Q7Ci0KLSAgZm9yICh0YWlsID0gbGlzdDsgQ09OU1Ag KHRhaWwpICYmICFjb25zX21hcmtlZF9wIChYQ09OUyAodGFpbCkpOwotICAgICAgIHRhaWwg PSBYQ0RSICh0YWlsKSkKLSAgICB7Ci0gICAgICBMaXNwX09iamVjdCB0ZW0gPSBYQ0FSICh0 YWlsKTsKLSAgICAgIGlmIChDT05TUCAodGVtKSkKLQl0ZW0gPSBYQ0FSICh0ZW0pOwotICAg ICAgaWYgKEJVRkZFUlAgKHRlbSkgJiYgIUJVRkZFUl9MSVZFX1AgKFhCVUZGRVIgKHRlbSkp KQotCSpwcmV2ID0gWENEUiAodGFpbCk7Ci0gICAgICBlbHNlCi0JewotCSAgc2V0X2NvbnNf bWFya2VkIChYQ09OUyAodGFpbCkpOwotCSAgbWFya19vYmplY3QgKFhDQVIgKHRhaWwpKTsK LQkgIHByZXYgPSB4Y2RyX2FkZHIgKHRhaWwpOwotCX0KLSAgICB9Ci0gIG1hcmtfb2JqZWN0 ICh0YWlsKTsKLSAgcmV0dXJuIGxpc3Q7Ci19Ci0KIHN0YXRpYyB2b2lkCiBtYXJrX2ZyYW1l IChzdHJ1Y3QgTGlzcF9WZWN0b3IgKnB0cikKIHsKQEAgLTcwNzksMTUgKzcwNTIsNiBAQCBt YXJrX3dpbmRvdyAoc3RydWN0IExpc3BfVmVjdG9yICpwdHIpCiAgICAgICBtYXJrX2dseXBo X21hdHJpeCAody0+Y3VycmVudF9tYXRyaXgpOwogICAgICAgbWFya19nbHlwaF9tYXRyaXgg KHctPmRlc2lyZWRfbWF0cml4KTsKICAgICB9Ci0KLSAgLyogRmlsdGVyIG91dCBraWxsZWQg YnVmZmVycyBmcm9tIGJvdGggYnVmZmVyIGxpc3RzCi0gICAgIGluIGF0dGVtcHQgdG8gaGVs cCBHQyB0byByZWNsYWltIGtpbGxlZCBidWZmZXJzIGZhc3Rlci4KLSAgICAgV2UgY2FuIGRv IGl0IGVsc2V3aGVyZSBmb3IgbGl2ZSB3aW5kb3dzLCBidXQgdGhpcyBpcyB0aGUKLSAgICAg YmVzdCBwbGFjZSB0byBkbyBpdCBmb3IgZGVhZCB3aW5kb3dzLiAgKi8KLSAgd3NldF9wcmV2 X2J1ZmZlcnMKLSAgICAodywgbWFya19kaXNjYXJkX2tpbGxlZF9idWZmZXJzICh3LT5wcmV2 X2J1ZmZlcnMpKTsKLSAgd3NldF9uZXh0X2J1ZmZlcnMKLSAgICAodywgbWFya19kaXNjYXJk X2tpbGxlZF9idWZmZXJzICh3LT5uZXh0X2J1ZmZlcnMpKTsKIH0KIAogLyogRW50cnkgb2Yg dGhlIG1hcmsgc3RhY2suICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2J1ZmZlci5jIGIvc3JjL2J1 ZmZlci5jCmluZGV4IDc0NGIwZWY1NTQ4Li42ZWM0MGFmZjY0NiAxMDA2NDQKLS0tIGEvc3Jj L2J1ZmZlci5jCisrKyBiL3NyYy9idWZmZXIuYwpAQCAtMjAxMiw2ICsyMDEyLDEzIEBAIERF RlVOICgia2lsbC1idWZmZXIiLCBGa2lsbF9idWZmZXIsIFNraWxsX2J1ZmZlciwgMCwgMSwg ImJLaWxsIGJ1ZmZlcjogIiwKICAgICAgYnVmZmVyIChidWcjMTAxMTQpLiAgKi8KICAgcmVw bGFjZV9idWZmZXJfaW5fd2luZG93cyAoYnVmZmVyKTsKIAorICAvKiBGb3IgZGVhZCB3aW5k b3dzIHRoYXQgaGF2ZSBub3QgYmVlbiBjb2xsZWN0ZWQgeWV0LCByZW1vdmUgdGhpcworICAg ICBidWZmZXIgZnJvbSB0aG9zZSB3aW5kb3dzJyBsaXN0cyBvZiBwcmV2aW91c2x5IGFuZCBu ZXh0IHNob3duCisgICAgIGJ1ZmZlcnMgYW5kIHJlbW92ZSBhbnkgJ3F1aXQtcmVzdG9yZScg b3IgJ3F1aXQtcmVzdG9yZS1wcmV2JworICAgICBwYXJhbWV0ZXJzIG1lbnRpb25pbmcgdGhl IGJ1ZmZlci4gICovCisgIGlmIChYRklYTlVNIChCVkFSIChiLCBkaXNwbGF5X2NvdW50KSkg PiAwKQorICAgIHdpbmRvd19kaXNjYXJkX2J1ZmZlcl9mcm9tX2RlYWRfd2luZG93cyAoYnVm ZmVyKTsKKwogICAvKiBFeGl0IGlmIHJlcGxhY2luZyB0aGUgYnVmZmVyIGluIHdpbmRvd3Mg aGFzIGtpbGxlZCBvdXIgYnVmZmVyLiAgKi8KICAgaWYgKCFCVUZGRVJfTElWRV9QIChiKSkK ICAgICByZXR1cm4gUXQ7CmRpZmYgLS1naXQgYS9zcmMvd2luZG93LmMgYi9zcmMvd2luZG93 LmMKaW5kZXggZmYyOGJhYzUzMDYuLmRkMGFiZTg0ZmRmIDEwMDY0NAotLS0gYS9zcmMvd2lu ZG93LmMKKysrIGIvc3JjL3dpbmRvdy5jCkBAIC0zMjc3LDYgKzMyNzcsOTAgQEAgd2luZG93 X3BpeGVsX3RvX3RvdGFsIChMaXNwX09iamVjdCBmcmFtZSwgTGlzcF9PYmplY3QgaG9yaXpv bnRhbCkKIH0KIAogCisvKiBSZW1vdmUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBlbGVtZW50IHdo b3NlIGNhciBpcyBCVUZGRVIgZnJvbSBBTElTVC4KKyAgIFJldHVybiBjaGFuZ2VkIEFMSVNU LiAgKi8KK3N0YXRpYyBMaXNwX09iamVjdAord2luZG93X2Rpc2NhcmRfYnVmZmVyX2Zyb21f YWxpc3QgKExpc3BfT2JqZWN0IGJ1ZmZlciwgTGlzcF9PYmplY3QgYWxpc3QpCit7CisgIExp c3BfT2JqZWN0IHRhaWwsICpwcmV2ID0gJmFsaXN0OworCisgIGZvciAodGFpbCA9IGFsaXN0 OyBDT05TUCAodGFpbCk7IHRhaWwgPSBYQ0RSICh0YWlsKSkKKyAgICB7CisgICAgICBMaXNw X09iamVjdCB0ZW0gPSBYQ0FSICh0YWlsKTsKKworICAgICAgdGVtID0gWENBUiAodGVtKTsK KworICAgICAgaWYgKEVRICh0ZW0sIGJ1ZmZlcikpCisJeworCSAgKnByZXYgPSBYQ0RSICh0 YWlsKTsKKwkgIGJyZWFrOworCX0KKyAgICAgIGVsc2UKKwlwcmV2ID0geGNkcl9hZGRyICh0 YWlsKTsKKyAgICB9CisKKyAgcmV0dXJuIGFsaXN0OworfQorCisvKiBSZW1vdmUgZmlyc3Qg b2NjdXJyZW5jZSBvZiBCVUZGRVIgZnJvbSBMSVNULiAgUmV0dXJuIGNoYW5nZWQKKyAgIExJ U1QuICAqLworc3RhdGljIExpc3BfT2JqZWN0Cit3aW5kb3dfZGlzY2FyZF9idWZmZXJfZnJv bV9saXN0IChMaXNwX09iamVjdCBidWZmZXIsIExpc3BfT2JqZWN0IGxpc3QpCit7CisgIExp c3BfT2JqZWN0IHRhaWwsICpwcmV2ID0gJmxpc3Q7CisKKyAgZm9yICh0YWlsID0gbGlzdDsg Q09OU1AgKHRhaWwpOyB0YWlsID0gWENEUiAodGFpbCkpCisgICAgeworICAgICAgaWYgKEVR IChYQ0FSICh0YWlsKSwgYnVmZmVyKSkKKwl7CisJICAqcHJldiA9IFhDRFIgKHRhaWwpOwor CSAgYnJlYWs7CisJfQorICAgICAgZWxzZQorCXByZXYgPSB4Y2RyX2FkZHIgKHRhaWwpOwor ICAgIH0KKworICByZXR1cm4gbGlzdDsKK30KKworc3RhdGljIHZvaWQKK3dpbmRvd19kaXNj YXJkX2J1ZmZlcl9mcm9tX2RlYWRfd2luZG93IChMaXNwX09iamVjdCBidWZmZXIsIExpc3Bf T2JqZWN0IHdpbmRvdykKK3sKKyAgc3RydWN0IHdpbmRvdyAqdyA9IFhXSU5ET1cgKHdpbmRv dyk7CisgIExpc3BfT2JqZWN0IHF1aXRfcmVzdG9yZSA9IHdpbmRvd19wYXJhbWV0ZXIgKHcs IFFxdWl0X3Jlc3RvcmUpOworICBMaXNwX09iamVjdCBxdWl0X3Jlc3RvcmVfcHJldiA9IHdp bmRvd19wYXJhbWV0ZXIgKHcsIFFxdWl0X3Jlc3RvcmVfcHJldik7CisgIExpc3BfT2JqZWN0 IHF1YWQ7CisKKyAgd3NldF9wcmV2X2J1ZmZlcnMKKyAgICAodywgd2luZG93X2Rpc2NhcmRf YnVmZmVyX2Zyb21fYWxpc3QgKGJ1ZmZlciwgdy0+cHJldl9idWZmZXJzKSk7CisgIHdzZXRf bmV4dF9idWZmZXJzCisgICAgKHcsIHdpbmRvd19kaXNjYXJkX2J1ZmZlcl9mcm9tX2xpc3Qg KGJ1ZmZlciwgdy0+bmV4dF9idWZmZXJzKSk7CisKKyAgaWYgKEVRIChidWZmZXIsIEZudGgg KG1ha2VfZml4bnVtICgzKSwgcXVpdF9yZXN0b3JlX3ByZXYpKQorICAgICAgfHwgKENPTlNQ IChxdWFkID0gRmNhciAoRmNkciAocXVpdF9yZXN0b3JlX3ByZXYpKSkKKwkgICYmIEVRIChG Y2FyIChxdWFkKSwgYnVmZmVyKSkpCisgICAgRnNldF93aW5kb3dfcGFyYW1ldGVyICh3aW5k b3csIFFxdWl0X3Jlc3RvcmVfcHJldiwgUW5pbCk7CisKKyAgaWYgKEVRIChidWZmZXIsIEZu dGggKG1ha2VfZml4bnVtICgzKSwgcXVpdF9yZXN0b3JlKSkKKyAgICAgIHx8IChDT05TUCAo cXVhZCA9IEZjYXIgKEZjZHIgKHF1aXRfcmVzdG9yZSkpKQorCSAgJiYgRVEgKEZjYXIgKHF1 YWQpLCBidWZmZXIpKSkKKyAgICB7CisgICAgICBGc2V0X3dpbmRvd19wYXJhbWV0ZXIgKHdp bmRvdywgUXF1aXRfcmVzdG9yZSwKKwkJCSAgICAgd2luZG93X3BhcmFtZXRlciAodywgUXF1 aXRfcmVzdG9yZV9wcmV2KSk7CisgICAgICBGc2V0X3dpbmRvd19wYXJhbWV0ZXIgKHdpbmRv dywgUXF1aXRfcmVzdG9yZV9wcmV2LCBRbmlsKTsKKyAgICB9Cit9CisKK3ZvaWQKK3dpbmRv d19kaXNjYXJkX2J1ZmZlcl9mcm9tX2RlYWRfd2luZG93cyAoTGlzcF9PYmplY3QgYnVmZmVy KQoreworICBzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoID0gWEhBU0hfVEFCTEUgKHdpbmRv d19kZWFkX3dpbmRvd3NfdGFibGUpOworCisgIERPSEFTSCAoaCwgaywgdikKKyAgICB3aW5k b3dfZGlzY2FyZF9idWZmZXJfZnJvbV9kZWFkX3dpbmRvdyAoYnVmZmVyLCB2KTsKK30KKwor CiBERUZVTiAoImRlbGV0ZS1vdGhlci13aW5kb3dzLWludGVybmFsIiwgRmRlbGV0ZV9vdGhl cl93aW5kb3dzX2ludGVybmFsLAogICAgICAgIFNkZWxldGVfb3RoZXJfd2luZG93c19pbnRl cm5hbCwgMCwgMiwgIiIsCiAgICAgICAgZG9jOiAvKiBNYWtlIFdJTkRPVyBmaWxsIGl0cyBm cmFtZS4KQEAgLTQ0MDIsNiArNDQ4NiwxMCBAQCBtYWtlX3BhcmVudF93aW5kb3cgKExpc3Bf T2JqZWN0IHdpbmRvdywgYm9vbCBob3JmbGFnKQogICB3c2V0X2J1ZmZlciAocCwgUW5pbCk7 CiAgIHdzZXRfY29tYmluYXRpb24gKHAsIGhvcmZsYWcsIHdpbmRvdyk7CiAgIHdzZXRfY29t YmluYXRpb25fbGltaXQgKHAsIFFuaWwpOworICAvKiBSZXNldCBhbnkgcHJldmlvdXMgYW5k IG5leHQgYnVmZmVycyBvZiBwIHdoaWNoIGhhdmUgYmVlbiBpbnN0YWxsZWQKKyAgICAgYnkg dGhlIG1lbWNweSBhYm92ZS4gICovCisgIHdzZXRfcHJldl9idWZmZXJzIChwLCBRbmlsKTsK KyAgd3NldF9uZXh0X2J1ZmZlcnMgKHAsIFFuaWwpOwogICB3c2V0X3dpbmRvd19wYXJhbWV0 ZXJzIChwLCBRbmlsKTsKIH0KIApAQCAtNDQyNiwxMCArNDUxNCw2IEBAIG1ha2Vfd2luZG93 ICh2b2lkKQogICB3c2V0X3ZlcnRpY2FsX3Njcm9sbF9iYXJfdHlwZSAodywgUXQpOwogICB3 c2V0X2hvcml6b250YWxfc2Nyb2xsX2Jhcl90eXBlICh3LCBRdCk7CiAgIHdzZXRfY3Vyc29y X3R5cGUgKHcsIFF0KTsKLSAgLyogVGhlc2UgTGlzcCBmaWVsZHMgYXJlIG1hcmtlZCBzcGVj aWFsbHkgc28gdGhleSdyZSBub3Qgc2V0IHRvIG5pbCBieQotICAgICBhbGxvY2F0ZV93aW5k b3cuICAqLwotICB3c2V0X3ByZXZfYnVmZmVycyAodywgUW5pbCk7Ci0gIHdzZXRfbmV4dF9i dWZmZXJzICh3LCBRbmlsKTsKIAogICAvKiBJbml0aWFsaXplIG5vbi1MaXNwIGRhdGEuICBO b3RlIHRoYXQgYWxsb2NhdGVfd2luZG93IHplcm9lcyBvdXQgYWxsCiAgICAgIG5vbi1MaXNw IGRhdGEsIHNvIGRvIGl0IG9ubHkgZm9yIHNsb3RzIHdoaWNoIHNob3VsZCBub3QgYmUgemVy by4gICovCkBAIC01MjUyLDYgKzUzMzYsMTEgQEAgREVGVU4gKCJkZWxldGUtd2luZG93LWlu dGVybmFsIiwgRmRlbGV0ZV93aW5kb3dfaW50ZXJuYWwsIFNkZWxldGVfd2luZG93X2ludGVy bmEKIAkgIHVuY2hhaW5fbWFya2VyIChYTUFSS0VSICh3LT5vbGRfcG9pbnRtKSk7CiAJICB1 bmNoYWluX21hcmtlciAoWE1BUktFUiAody0+c3RhcnQpKTsKIAkgIHdzZXRfYnVmZmVyICh3 LCBRbmlsKTsKKwkgIC8qIEFkZCBXSU5ET1cgdG8gdGFibGUgb2YgZGVhZCB3aW5kb3dzIHNv IHdoZW4ga2lsbGluZyBhIGJ1ZmZlcgorCSAgICAgV0lORE9XIG1lbnRpb25zLCBhbGwgcmVm ZXJlbmNlcyB0byB0aGF0IGJ1ZmZlciBjYW4gYmUgcmVtb3ZlZAorCSAgICAgYW5kIHRoZSBi dWZmZXIgYmUgY29sbGVjdGVkLiAgKi8KKwkgIEZwdXRoYXNoIChtYWtlX2ZpeG51bSAody0+ c2VxdWVuY2VfbnVtYmVyKSwKKwkJICAgIHdpbmRvdywgd2luZG93X2RlYWRfd2luZG93c190 YWJsZSk7CiAJfQogCiAgICAgICBpZiAoTklMUCAocy0+cHJldikgJiYgTklMUCAocy0+bmV4 dCkpCkBAIC03MzU2LDYgKzc0NDUsMTAgQEAgREVGVU4gKCJzZXQtd2luZG93LWNvbmZpZ3Vy YXRpb24iLCBGc2V0X3dpbmRvd19jb25maWd1cmF0aW9uLAogCQl9CiAJICAgIH0KIAorCSAg LyogUmVtb3ZlIHdpbmRvdyBmcm9tIHRoZSB0YWJsZSBvZiBkZWFkIHdpbmRvd3MuICAqLwor CSAgRnJlbWhhc2ggKG1ha2VfZml4bnVtICh3LT5zZXF1ZW5jZV9udW1iZXIpLAorCQkgICAg d2luZG93X2RlYWRfd2luZG93c190YWJsZSk7CisKIAkgIGlmICgoTklMUCAoZG9udF9zZXRf bWluaXdpbmRvdykgfHwgIU1JTklfV0lORE9XX1AgKHcpKQogCSAgICAgICYmIEJVRkZFUlAg KHAtPmJ1ZmZlcikgJiYgQlVGRkVSX0xJVkVfUCAoWEJVRkZFUiAocC0+YnVmZmVyKSkpCiAJ ICAgIC8qIElmIHNhdmVkIGJ1ZmZlciBpcyBhbGl2ZSwgaW5zdGFsbCBpdCwgdW5sZXNzIGl0 J3MgYQpAQCAtNzU4NSw2ICs3Njc4LDExIEBAIGRlbGV0ZV9hbGxfY2hpbGRfd2luZG93cyAo TGlzcF9PYmplY3Qgd2luZG93KQogCSBwb3NzaWJsZSByZXN1cnJlY3Rpb24gaW4gRnNldF93 aW5kb3dfY29uZmlndXJhdGlvbi4gICovCiAgICAgICB3c2V0X2NvbWJpbmF0aW9uX2xpbWl0 ICh3LCB3LT5jb250ZW50cyk7CiAgICAgICB3c2V0X2J1ZmZlciAodywgUW5pbCk7CisgICAg ICAvKiBBZGQgV0lORE9XIHRvIHRhYmxlIG9mIGRlYWQgd2luZG93cyBzbyB3aGVuIGtpbGxp bmcgYSBidWZmZXIKKwkgV0lORE9XIG1lbnRpb25zLCBhbGwgcmVmZXJlbmNlcyB0byB0aGF0 IGJ1ZmZlciBjYW4gYmUgcmVtb3ZlZAorCSBhbmQgdGhlIGJ1ZmZlciBiZSBjb2xsZWN0ZWQu ICAqLworICAgICAgRnB1dGhhc2ggKG1ha2VfZml4bnVtICh3LT5zZXF1ZW5jZV9udW1iZXIp LAorCQl3aW5kb3csIHdpbmRvd19kZWFkX3dpbmRvd3NfdGFibGUpOwogICAgIH0KIAogICBW d2luZG93X2xpc3QgPSBRbmlsOwpAQCAtODU5NCw2ICs4NjkyLDggQEAgc3ltc19vZl93aW5k b3cgKHZvaWQpCiAgIERFRlNZTSAoUWNvbmZpZ3VyYXRpb24sICJjb25maWd1cmF0aW9uIik7 CiAgIERFRlNZTSAoUWRlbGV0ZSwgImRlbGV0ZSIpOwogICBERUZTWU0gKFFkZWRpY2F0ZWQs ICJkZWRpY2F0ZWQiKTsKKyAgREVGU1lNIChRcXVpdF9yZXN0b3JlLCAicXVpdC1yZXN0b3Jl Iik7CisgIERFRlNZTSAoUXF1aXRfcmVzdG9yZV9wcmV2LCAicXVpdC1yZXN0b3JlLXByZXYi KTsKIAogICBERUZWQVJfTElTUCAoInRlbXAtYnVmZmVyLXNob3ctZnVuY3Rpb24iLCBWdGVt cF9idWZmZXJfc2hvd19mdW5jdGlvbiwKIAkgICAgICAgZG9jOiAvKiBOb24tbmlsIG1lYW5z IGNhbGwgYXMgZnVuY3Rpb24gdG8gZGlzcGxheSBhIGhlbHAgYnVmZmVyLgpAQCAtODkxNyw2 ICs5MDE3LDE3IEBAIHN5bXNfb2Zfd2luZG93ICh2b2lkKQogZGlzcGxheWVkIGFmdGVyIGEg c2Nyb2xsaW5nIG9wZXJhdGlvbiB0byBiZSBzb21ld2hhdCBpbmFjY3VyYXRlLiAgKi8pOwog ICBmYXN0X2J1dF9pbXByZWNpc2Vfc2Nyb2xsaW5nID0gZmFsc2U7CiAKKyAgREVGVkFSX0xJ U1AgKCJ3aW5kb3ctZGVhZC13aW5kb3dzLXRhYmxlIiwgd2luZG93X2RlYWRfd2luZG93c190 YWJsZSwKKyAgICBkb2M6IC8qIEhhc2ggdGFibGUgb2YgZGVhZCB3aW5kb3dzLgorRWFjaCBl bnRyeSBpbiB0aGlzIHRhYmxlIG1hcHMgYSB3aW5kb3cgbnVtYmVyIHRvIGEgd2luZG93IG9i amVjdC4KK0VudHJpZXMgYXJlIGFkZGVkIGJ5IGBkZWxldGUtd2luZG93LWludGVybmFsJyBh bmQgYXJlIHJlbW92ZWQgYnkgdGhlCitnYXJiYWdlIGNvbGxlY3Rvci4KKworVGhpcyB0YWJs ZSBpcyBtYWludGFpbmVkIGJ5IGNvZGUgaW4gd2luZG93LmMgYW5kIGlzIG1hZGUgdmlzaWJs ZSBpbgorRWxpc3AgZm9yIHRlc3RpbmcgcHVycG9zZXMgb25seS4gICovKTsKKyAgd2luZG93 X2RlYWRfd2luZG93c190YWJsZQorICAgID0gQ0FMTE4gKEZtYWtlX2hhc2hfdGFibGUsIFFD d2Vha25lc3MsIFF0KTsKKwogICBkZWZzdWJyICgmU3NlbGVjdGVkX3dpbmRvdyk7CiAgIGRl ZnN1YnIgKCZTb2xkX3NlbGVjdGVkX3dpbmRvdyk7CiAgIGRlZnN1YnIgKCZTbWluaWJ1ZmZl cl93aW5kb3cpOwpkaWZmIC0tZ2l0IGEvc3JjL3dpbmRvdy5oIGIvc3JjL3dpbmRvdy5oCmlu ZGV4IDg2OTMyMTgxMjUyLi4zMzVlMGEzNDUzZSAxMDA2NDQKLS0tIGEvc3JjL3dpbmRvdy5o CisrKyBiL3NyYy93aW5kb3cuaApAQCAtMTQyLDYgKzE0MiwxMiBAQCAjZGVmaW5lIFdJTkRP V19IX0lOQ0xVREVECiAgICAgICAgYXMgd2VsbC4gICovCiAgICAgTGlzcF9PYmplY3QgY29u dGVudHM7CiAKKyAgICAvKiBBIGxpc3Qgb2YgPGJ1ZmZlciwgd2luZG93LXN0YXJ0LCB3aW5k b3ctcG9pbnQ+IHRyaXBsZXMgbGlzdGluZworICAgICAgIGJ1ZmZlcnMgcHJldmlvdXNseSBz aG93biBpbiB0aGlzIHdpbmRvdy4gICovCisgICAgTGlzcF9PYmplY3QgcHJldl9idWZmZXJz OworICAgIC8qIExpc3Qgb2YgYnVmZmVycyByZS1zaG93biBpbiB0aGlzIHdpbmRvdy4gICov CisgICAgTGlzcF9PYmplY3QgbmV4dF9idWZmZXJzOworCiAgICAgLyogVGhlIG9sZCBidWZm ZXIgb2YgdGhpcyB3aW5kb3csIHNldCB0byB0aGlzIHdpbmRvdydzIGJ1ZmZlciBieQogICAg ICAgIHJ1bl93aW5kb3dfY2hhbmdlX2Z1bmN0aW9ucyBldmVyeSB0aW1lIGl0IHNlZXMgdGhp cyB3aW5kb3cuCiAgICAgICAgVW51c2VkIGZvciBpbnRlcm5hbCB3aW5kb3dzLiAgKi8KQEAg LTIxOCwxNCArMjI0LDYgQEAgI2RlZmluZSBXSU5ET1dfSF9JTkNMVURFRAogICAgIHN0cnVj dCBnbHlwaF9tYXRyaXggKmN1cnJlbnRfbWF0cml4OwogICAgIHN0cnVjdCBnbHlwaF9tYXRy aXggKmRlc2lyZWRfbWF0cml4OwogCi0gICAgLyogVGhlIHR3byBMaXNwX09iamVjdCBmaWVs ZHMgYmVsb3cgYXJlIG1hcmtlZCBpbiBhIHNwZWNpYWwgd2F5LAotICAgICAgIHdoaWNoIGlz IHdoeSB0aGV5J3JlIHBsYWNlZCBhZnRlciBgY3VycmVudF9tYXRyaXgnLiAgKi8KLSAgICAv KiBBIGxpc3Qgb2YgPGJ1ZmZlciwgd2luZG93LXN0YXJ0LCB3aW5kb3ctcG9pbnQ+IHRyaXBs ZXMgbGlzdGluZwotICAgICAgIGJ1ZmZlcnMgcHJldmlvdXNseSBzaG93biBpbiB0aGlzIHdp bmRvdy4gICovCi0gICAgTGlzcF9PYmplY3QgcHJldl9idWZmZXJzOwotICAgIC8qIExpc3Qg b2YgYnVmZmVycyByZS1zaG93biBpbiB0aGlzIHdpbmRvdy4gICovCi0gICAgTGlzcF9PYmpl Y3QgbmV4dF9idWZmZXJzOwotCiAgICAgLyogTnVtYmVyIHNheWluZyBob3cgcmVjZW50bHkg d2luZG93IHdhcyBzZWxlY3RlZC4gICovCiAgICAgRU1BQ1NfSU5UIHVzZV90aW1lOwogCkBA IC0xMjI4LDYgKzEyMjYsNyBAQCAjZGVmaW5lIENIRUNLX0xJVkVfV0lORE9XKFdJTkRPVykJ CQkJXAogZXh0ZXJuIHZvaWQgd3NldF9idWZmZXIgKHN0cnVjdCB3aW5kb3cgKiwgTGlzcF9P YmplY3QpOwogZXh0ZXJuIGJvb2wgd2luZG93X291dGRhdGVkIChzdHJ1Y3Qgd2luZG93ICop OwogZXh0ZXJuIHB0cmRpZmZfdCB3aW5kb3dfcG9pbnQgKHN0cnVjdCB3aW5kb3cgKncpOwor ZXh0ZXJuIHZvaWQgd2luZG93X2Rpc2NhcmRfYnVmZmVyX2Zyb21fZGVhZF93aW5kb3dzIChM aXNwX09iamVjdCk7CiBleHRlcm4gdm9pZCBpbml0X3dpbmRvd19vbmNlICh2b2lkKTsKIGV4 dGVybiB2b2lkIGluaXRfd2luZG93ICh2b2lkKTsKIGV4dGVybiB2b2lkIHN5bXNfb2Zfd2lu ZG93ICh2b2lkKTsK --------------0cpMOBypjKdTdjfLu6e2lIGs--