X-Loop: help-debbugs@HIDDEN Subject: bug#61028: 30.0.50; [PATCH] [FEATURE] Balanced fill mode Resent-From: Andrew Kensler <andrew@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Mon, 23 Jan 2023 14:27:01 +0000 Resent-Message-ID: <handler.61028.B.16744840148778 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: report 61028 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 61028 <at> debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@HIDDEN Received: via spool by submit <at> debbugs.gnu.org id=B.16744840148778 (code B ref -1); Mon, 23 Jan 2023 14:27:01 +0000 Received: (at submit) by debbugs.gnu.org; 23 Jan 2023 14:26:54 +0000 Received: from localhost ([127.0.0.1]:53744 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1pJxme-0002HT-Mv for submit <at> debbugs.gnu.org; Mon, 23 Jan 2023 09:26:54 -0500 Received: from lists.gnu.org ([209.51.188.17]:53692) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <andrew@HIDDEN>) id 1pJtK2-0006Sv-I4 for submit <at> debbugs.gnu.org; Mon, 23 Jan 2023 04:41:06 -0500 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 <andrew@HIDDEN>) id 1pJtJz-0003XL-LB for bug-gnu-emacs@HIDDEN; Mon, 23 Jan 2023 04:40:59 -0500 Received: from smtp1.phpwebhosting.com ([184.154.71.7]) by eggs.gnu.org with smtp (Exim 4.90_1) (envelope-from <andrew@HIDDEN>) id 1pJtJv-0002Ff-OE for bug-gnu-emacs@HIDDEN; Mon, 23 Jan 2023 04:40:59 -0500 Received: (qmail 13649 invoked from network); 23 Jan 2023 09:40:43 -0000 Received: from unknown (HELO [10.0.0.107]) (andrew@HIDDEN@76.121.228.80) by smtp1.phpwebhosting.com with (AES128-SHA encrypted) SMTP; Mon, 23 Jan 2023 04:40:43 -0500 Content-Type: multipart/mixed; boundary="------------U6U1i80qvZoNZsVAvkQDbBAD" Message-ID: <9ec521a6-b324-3f09-7495-c55638b890f8@HIDDEN> Date: Mon, 23 Jan 2023 01:40:40 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Content-Language: en-US From: Andrew Kensler <andrew@HIDDEN> Received-SPF: pass client-ip=184.154.71.7; envelope-from=andrew@HIDDEN; helo=smtp1.phpwebhosting.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.6 (-) X-Mailman-Approved-At: Mon, 23 Jan 2023 09:26:51 -0500 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -2.6 (--) This is a multi-part message in MIME format. --------------U6U1i80qvZoNZsVAvkQDbBAD Content-Type: multipart/alternative; boundary="------------DMMHH5AewF0FsJS0qvME5UwC" --------------DMMHH5AewF0FsJS0qvME5UwC Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Greetings all, The proposed patch attached adds a new minor balanced-fill-mode with an alternate line breaking algorithm for paragraph filling. When enabled, it will try to neatly balance line lengths to reduce raggedness, avoid widows, avoid starting a new sentence on the last word of a line, avoid ending a sentence on the first word of a line, and so forth. It is heavily inspired by the Knuth-Plass line breaking algorithm and uses dynamic programming to try to choose line breaks to minimize a cost function. For example, consider the following mock paragraph as filled by the current greedy algorithm with the fill-column set to 15: Ccc ccc a bb dddd bb bb a ccc a jjjjjjjjjj a eeeee a hhhhhhhh bb dddd. With the new minor mode enabled, it would instead be filled much more nicely as: Ccc ccc a bb dddd bb bb a ccc a jjjjjjjjjj a eeeee a hhhhhhhh bb dddd. Often, the result is similar to simply having used a particular slightly narrower fill-column with the current greedy algorithm. The advantage, however, is that it figures out the correct column automatically and per-paragraph. The main piece of implementation is in the new (balanced-fill-break-lines) function in fill.el, with a modification to (fill-region-as-paragraph) to optionally call this before its current line breaking loop. If it runs successfully, then point will be set to the end of the paragraph and that loop skipped. Note that (fill-region-as-paragraph) has no hooks and is too monolithic to advise for this kind of thing, hence my hoping to upstream this change. This is my first time contributing anything significant to Emacs or writing here. I believe that the proposed patch covers all the major needs: the code itself, commit message, info documentation, announcement in NEWS, and a basic ERT test. If there's anything I've missed or suggestions for improvements, please let me know. (And I hope this is the correct mailing list and message format, too.) I'll be happy to sign the copyright assignment paperwork if this looks like something you'd like to accept. Cheers, - Andrew --------------DMMHH5AewF0FsJS0qvME5UwC Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body> <p>Greetings all,</p> <p>The proposed patch attached adds a new minor <font face="monospace">balanced-fill-mode</font> with an alternate line breaking algorithm for paragraph filling. When enabled, it will try to neatly balance line lengths to reduce raggedness, avoid widows, avoid starting a new sentence on the last word of a line, avoid ending a sentence on the first word of a line, and so forth. It is heavily inspired by the Knuth-Plass line breaking algorithm and uses dynamic programming to try to choose line breaks to minimize a cost function.<br> </p> <p>For example, consider the following mock paragraph as filled by the current greedy algorithm with the <font face="monospace">fill-column</font> set to 15:</p> <pre>Ccc ccc a bb dddd bb bb a ccc a jjjjjjjjjj a eeeee a hhhhhhhh bb dddd. </pre> <p>With the new minor mode enabled, it would instead be filled much more nicely as:</p> <pre>Ccc ccc a bb dddd bb bb a ccc a jjjjjjjjjj a eeeee a hhhhhhhh bb dddd. </pre> <p>Often, the result is similar to simply having used a particular slightly narrower <font face="monospace">fill-column</font> with the current greedy algorithm. The advantage, however, is that it figures out the correct column automatically and per-paragraph.</p> <p>The main piece of implementation is in the new <font face="monospace">(balanced-fill-break-lines)</font> function in <font face="monospace">fill.el</font>, with a modification to <font face="monospace">(fill-region-as-paragraph)</font> to optionally call this before its current line breaking loop. If it runs successfully, then point will be set to the end of the paragraph and that loop skipped.</p> <p>Note that <font face="monospace">(fill-region-as-paragraph)</font> has no hooks and is too monolithic to advise for this kind of thing, hence my hoping to upstream this change.</p> <p>This is my first time contributing anything significant to Emacs or writing here. I believe that the proposed patch covers all the major needs: the code itself, commit message, info documentation, announcement in NEWS, and a basic ERT test. If there's anything I've missed or suggestions for improvements, please let me know. (And I hope this is the correct mailing list and message format, too.) I'll be happy to sign the copyright assignment paperwork if this looks like something you'd like to accept.</p> <p>Cheers,<br> - Andrew<br> </p> </body> </html> --------------DMMHH5AewF0FsJS0qvME5UwC-- --------------U6U1i80qvZoNZsVAvkQDbBAD Content-Type: text/x-patch; charset=UTF-8; name="0001-Add-new-minor-balanced-fill-mode-to-filling.patch" Content-Disposition: attachment; filename="0001-Add-new-minor-balanced-fill-mode-to-filling.patch" Content-Transfer-Encoding: base64 RnJvbSAyMGY4MzdhMTE5N2JkZjNjYzExODk2ZjIxNGIwZjMwMzI3YjY4MzdjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgS2Vuc2xlciA8YW5kcmV3QGVhc3RmYXJ0 aGluZy5jb20+CkRhdGU6IEZyaSwgMjAgSmFuIDIwMjMgMTg6MTc6NDEgLTA4MDAKU3ViamVj dDogW1BBVENIXSBBZGQgbmV3IG1pbm9yIGBiYWxhbmNlZC1maWxsLW1vZGVgIHRvIGZpbGxp bmcKCldoZW4gZW5hYmxlZCwgZmlsbGluZyB3aWxsIGNvbnNpZGVyIHRoZSBlbnRpcmUgcGFy YWdyYXBoIGF0IGEKdGltZSBhbmQgdHJ5IHRvIHBsYWNlIGxpbmUgYnJlYWtzIG9wdGltYWxs eSB0byBsb29rIG1vcmUgbmVhdAphbmQgZXZlbiwgYWNjb3JkaW5nIHRvIGEgY29zdCBmdW5j dGlvbi4gIFRoaXMgaXMgaW5zcGlyZWQgYnkgdGhlCktudXRoLVBsYXNzIGFsZ29yaXRobS4K CiogbGlzcC90ZXh0bW9kZXMvZmlsbC5lbAooYmFsYW5jZWQtZmlsbC1tb2RlKQooYmFsYW5j ZWQtZmlsbC1tYXhpbXVtLXdvcmRzKQooYmFsYW5jZWQtZmlsbC1tYXJnaW4pCihiYWxhbmNl ZC1maWxsLXdpZG93cykKKGJhbGFuY2VkLWZpbGwtbGVuZ3RoLWV4cG9uZW50KQooYmFsYW5j ZWQtZmlsbC1yYWdnZWRuZXNzLXBlbmFsdHkpCihiYWxhbmNlZC1maWxsLXNpbmdsZS1wZW5h bHR5KQooYmFsYW5jZWQtZmlsbC1icmVhay1wZW5hbHR5KTogTmV3IHZhcmlhYmxlcy4KKGJh bGFuY2VkLWZpbGwtYnJlYWstbGluZXMpOiBOZXcgbGluZSBicmVha2luZyBmdW5jdGlvbi4K KGZpbGwtcmVnaW9uLWFzLXBhcmFncmFwaCk6IFVzZSBpdCB0byBmaWxsIHBhcmFncmFwaHMu CgoqIHRlc3QvbGlzcC90ZXh0bW9kZXMvZmlsbC10ZXN0cy5lbDogQWRkIHNtb2tlIHRlc3Qg Zm9yIGl0LgoKKiBkb2MvZW1hY3MvZW1hY3MudGV4aSAoVG9wKToKKiBkb2MvZW1hY3MvdGV4 dC50ZXhpIChGaWxsaW5nIFRleHQpOiBEb2N1bWVudCBpdC4KCiogZXRjL05FV1M6IEFubm91 bmNlIGl0LgotLS0KIGRvYy9lbWFjcy9lbWFjcy50ZXhpICAgICAgICAgICAgICB8ICAgMSAr CiBkb2MvZW1hY3MvdGV4dC50ZXhpICAgICAgICAgICAgICAgfCAgOTEgKysrKysrKysrKysr KwogZXRjL05FV1MgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICsKIGxpc3AvdGV4 dG1vZGVzL2ZpbGwuZWwgICAgICAgICAgICB8IDIxNCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIHRlc3QvbGlzcC90ZXh0bW9kZXMvZmlsbC10ZXN0cy5lbCB8ICAxNSArKysK IDUgZmlsZXMgY2hhbmdlZCwgMzI3IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kb2Mv ZW1hY3MvZW1hY3MudGV4aSBiL2RvYy9lbWFjcy9lbWFjcy50ZXhpCmluZGV4IGI2ZDE0OWVi M2UuLmJhYmQ0ODdmYmQgMTAwNjQ0Ci0tLSBhL2RvYy9lbWFjcy9lbWFjcy50ZXhpCisrKyBi L2RvYy9lbWFjcy9lbWFjcy50ZXhpCkBAIC02MTYsNiArNjE2LDcgQEAgVG9wCiAqIEZpbGwg UHJlZml4OjogICAgICAgICBGaWxsaW5nIHBhcmFncmFwaHMgdGhhdCBhcmUgaW5kZW50ZWQK ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgaW4gYSBjb21tZW50LCBldGMuCiAqIEFk YXB0aXZlIEZpbGw6OiAgICAgICBIb3cgRW1hY3MgY2FuIGRldGVybWluZSB0aGUgZmlsbCBw cmVmaXggYXV0b21hdGljYWxseS4KKyogQmFsYW5jZWQgRmlsbDo6ICAgICAgIEJyZWFraW5n IGxpbmVzIHRvIGxvb2sgbW9yZSBldmVuIGFuZCBuZWF0LgogCiBPdXRsaW5lIE1vZGUKIApk aWZmIC0tZ2l0IGEvZG9jL2VtYWNzL3RleHQudGV4aSBiL2RvYy9lbWFjcy90ZXh0LnRleGkK aW5kZXggNmUxNmU3NDNhNS4uMjUxNDUyZGYxNyAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL3Rl eHQudGV4aQorKysgYi9kb2MvZW1hY3MvdGV4dC50ZXhpCkBAIC00OTcsNiArNDk3LDcgQEAg RmlsbGluZwogKiBGaWxsIENvbW1hbmRzOjogIENvbW1hbmRzIHRvIHJlZmlsbCBwYXJhZ3Jh cGhzIGFuZCBjZW50ZXIgbGluZXMuCiAqIEZpbGwgUHJlZml4OjogICAgRmlsbGluZyBwYXJh Z3JhcGhzIHRoYXQgYXJlIGluZGVudGVkIG9yIGluIGEgY29tbWVudCwgZXRjLgogKiBBZGFw dGl2ZSBGaWxsOjogIEhvdyBFbWFjcyBjYW4gZGV0ZXJtaW5lIHRoZSBmaWxsIHByZWZpeCBh dXRvbWF0aWNhbGx5LgorKiBCYWxhbmNlZCBGaWxsOjogIEJyZWFraW5nIGxpbmVzIHRvIGxv b2sgbW9yZSBldmVuIGFuZCBuZWF0LgogQGVuZCBtZW51CiAKIEBub2RlIEF1dG8gRmlsbApA QCAtODI4LDYgKzgyOSw5NiBAQCBBZGFwdGl2ZSBGaWxsCiBsaW5lLiAgSWYgaXQgcmV0dXJu cyBAY29kZXtuaWx9LCBAY29kZXthZGFwdGl2ZS1maWxsLXJlZ2V4cH0gZ2V0cwogYSBjaGFu Y2UgdG8gZmluZCBhIHByZWZpeC4KIAorQG5vZGUgQmFsYW5jZWQgRmlsbAorQHN1YnNlY3Rp b24gQmFsYW5jZWQgRmlsbGluZworCitAY2luZGV4IGJhbGFuY2VkIGZpbGxpbmcKKyAgRmls bGluZyBjYW4gY29uc2lkZXIgYW4gZW50aXJlIHBhcmFncmFwaCBhdCBhIHRpbWUgd2hlbiBk ZXRlcm1pbmluZword2hlcmUgdG8gcGxhY2UgbGluZSBicmVha3MsIGFzIGFuIGFsdGVybmF0 aXZlIHRvIGp1c3QgZ3JlZWRpbHkKK2luc2VydGluZyBhIGJyZWFrIGFmdGVyIHRoZSBsYXN0 IHdvcmQgdGhhdCBmaXRzIG9uIGVhY2ggbGluZS4KKworICBJbiB0aGlzIG1vZGUsIGl0IHdp bGwgdHJ5IHRvIG9wdGltYWxseSBjaG9vc2UgdGhlIHNldCBvZiBsaW5lCiticmVha3MgdG8g bWluaW1pemUgYSBjb3N0IGZ1bmN0aW9uIHRoYXQgcGVuYWxpemVzIHVudGlkeSBwYXJhZ3Jh cGhzLgorVGhpcyBtYXkgcGxhY2UgbGluZSBicmVha3Mgc29vbmVyIHRoYW4gbmVjZXNzYXJ5 IGlmIGl0IGltcHJvdmVzCitsYXRlciBsaW5lcy4KKworICBGb3IgZXhhbXBsZSwgaWYgQGNv ZGV7ZmlsbC1jb2x1bW59IGlzIDYwIGFuZCBiYWxhbmNlZCBmaWxsaW5nIGlzCitkaXNhYmxl ZCB0aGVuIHRoZSBncmVlZHkgYWxnb3JpdGhtIHdpbGwgZmlsbCB0aGUgZm9sbG93aW5nIHBh cmFncmFwaAorbGlrZSBzbzoKKworQHNtYWxsZXhhbXBsZQorIkl0J3Mgbm90IHRvbyBmYXIt ZmV0Y2hlZCB0byBzYXkgdGhhdCB0aGUgYmVzdCBwcm9ncmFtcyBhcmUKK3RoZSBvbmVzIHdy aXR0ZW4gd2hlbiB0aGUgcHJvZ3JhbW1lciBpcyBzdXBwb3NlZCB0byBiZQord29ya2luZyBv biBzb21ldGhpbmcgZWxzZS4uLiAgVmVyeSBnb29kIHRoaW5ncyBoYXBwZW4gd2hlbgorbWFu YWdlbWVudCBpcyBlbmxpZ2h0ZW5lZCBlbm91Z2ggdG8gYXBwcmVjaWF0ZSB0aGUKK2ltcG9y dGFuY2Ugb2YgYWxsb3dpbmcgcHJvZ3JhbW1lcnMgc29tZSBmcmVlIHRpbWUgZm9yCitwcm9q ZWN0cyBvZiB0aGlzIHNvcnQuIiAgLS1NZWxpbmRhIFZhcmlhbgorQGVuZCBzbWFsbGV4YW1w bGUKKworQG5vaW5kZW50Cit3aGlsZSBlbmFibGluZyB0aGUgYmFsYW5jZWQgZmlsbGluZyB3 aWxsIGluc3RlYWQgcHJvZHVjZSB0aGUgZm9sbG93aW5nCit3aXRoIHNsaWdodGx5IHNob3J0 ZXIgYnV0IG1vcmUgZXZlbiBsaW5lIGxlbmd0aHM6CisKK0BzbWFsbGV4YW1wbGUKKyJJdCdz IG5vdCB0b28gZmFyLWZldGNoZWQgdG8gc2F5IHRoYXQgdGhlIGJlc3QgcHJvZ3JhbXMKK2Fy ZSB0aGUgb25lcyB3cml0dGVuIHdoZW4gdGhlIHByb2dyYW1tZXIgaXMgc3VwcG9zZWQgdG8K K2JlIHdvcmtpbmcgb24gc29tZXRoaW5nIGVsc2UuLi4gIFZlcnkgZ29vZCB0aGluZ3MgaGFw cGVuCit3aGVuIG1hbmFnZW1lbnQgaXMgZW5saWdodGVuZWQgZW5vdWdoIHRvIGFwcHJlY2lh dGUgdGhlCitpbXBvcnRhbmNlIG9mIGFsbG93aW5nIHByb2dyYW1tZXJzIHNvbWUgZnJlZSB0 aW1lIGZvcgorcHJvamVjdHMgb2YgdGhpcyBzb3J0LiIgIC0tIE1lbGluZGEgVmFyaWFuCitA ZW5kIHNtYWxsZXhhbXBsZQorCitAZmluZGV4IGJhbGFuY2VkLWZpbGwtbW9kZQorQHZpbmRl eCBiYWxhbmNlZC1maWxsLW1vZGUKKyAgQmFsYW5jZWQgRmlsbCBtb2RlIGlzIGRpc2FibGVk IGJ5IGRlZmF1bHQuICBUbyB0b2dnbGUgaXQgZ2xvYmFsbHksCit0eXBlIEBrYmR7TS14IGJh bGFuY2VkLWZpbGwtbW9kZX0uCisKK0B2aW5kZXggYmFsYW5jZWQtZmlsbC1tYXhpbXVtLXdv cmRzCisgIEZvciBzcGVlZCwgdGhlIG1heGltdW0gbGltaXQgb24gdGhlIG51bWJlciBvZiB3 b3JkcyB0aGF0IHRoZQorYmFsYW5jZWQgZmlsbCBhbGdvcml0aG0gd2lsbCBhdHRlbXB0IHRv IHByb2Nlc3MgaW4gYSBzaW5nbGUgcGFyYWdyYXBoCitpcyBjb250cm9sbGVkIGJ5IEBjb2Rl e2JhbGFuY2VkLWZpbGwtbWF4aW11bS13b3Jkc30uICBJZiB0aGUgbnVtYmVyCitvZiB3b3Jk cyBpbiB0aGUgcGFyYWdyYXBoIGV4Y2VlZHMgdGhpcyBsaW1pdCwgdGhlbiBmaWxsaW5nIHdp bGwgZmFsbAorYmFjayB0byB0aGUgZmFzdGVyIGdyZWVkeSBhbGdvcml0aG0uCisKKyAgVGhl IGNvc3QgZnVuY3Rpb24gdXNlZCB0byBkZXRlcm1pbmUgd2hlcmUgdG8gcGxhY2UgdGhlIGxp bmUgYnJlYWtzCitjYW4gYmUgdHVuZWQgdGhyb3VnaCBzZXZlcmFsIHZhcmlhYmxlcy4KKwor QHZpbmRleCBiYWxhbmNlZC1maWxsLW1hcmdpbgorICBTZXQgQGNvZGV7YmFsYW5jZWQtZmls bC1tYXJnaW59IHRvIHRoZSBudW1iZXIgb2YgY29sdW1ucyBiZWZvcmUKK3RoZSBmaWxsLWNv bHVtbiB0aGF0IHRoZSBiYWxhbmNlZCBmaWxsIGFsZ29yaXRobSBzaG91bGQgYXR0ZW1wdAor dG8gYnJlYWsgbGluZXMgYXQuICBBdHRlbXB0aW5nIHRvIGJyZWFrIGxpbmVzIHNsaWdodGx5 IHNob3J0CitvZiB0aGUgQGNvZGV7ZmlsbC1jb2x1bW59IGJ1dCBiZWluZyBhbGxvd2VkIHRv IGdvIHVwIHRvIHRoZQorQGNvZGV7ZmlsbC1jb2x1bW59IGNhbiBoZWxwIHRvIG1ha2UgdGhl IGxpbmVzIG1vcmUgZXZlbiBpbiBsZW5ndGguCisKK0B2aW5kZXggYmFsYW5jZWQtZmlsbC13 aWRvd3MKKyAgU2V0IEBjb2Rle2JhbGFuY2VkLWZpbGwtd2lkb3dzfSB0byB0aGUgbWluaW11 bSBudW1iZXIgb2Ygd29yZHMgdGhhdAordGhlIGFsZ29yaXRobSBzaG91bGQgYXR0ZW1wdCB0 byBsZWF2ZSBvbiB0aGUgbGFzdCBsaW5lIG9mIGEgcGFyYWdyYXBoLgorSWYgdGhpcyBpcyBz ZXQgdG8gYW4gZXh0cmVtZWx5IGhpZ2ggbnVtYmVyLCB0aGVuIHRoZSBiYWxhbmNlZCBmaWxs aW5nCit3aWxsIGdlbmVyYWxseSB0cnkgdG8gbWFrZSB0aGUgbGFzdCBsaW5lIGFzIGZ1bGwg YXMgYWxsIHRoZSBvdGhlcnMuCisKK0B2aW5kZXggYmFsYW5jZWQtZmlsbC1sZW5ndGgtZXhw b25lbnQKKyAgVGhlIEBjb2Rle2JhbGFuY2VkLWZpbGwtbGVuZ3RoLWV4cG9uZW50fSBpcyB0 aGUgbWFpbiBjb250cm9sIG9uIHRoZQorY29zdCBmdW5jdGlvbi4gIEl0IGFmZmVjdHMgdGhl IHBlbmFsdHkgZm9yIGxpbmVzIHRoYXQgYXJlIHNob3J0ZXIgb3IKK2xvbmdlciB0aGFuIHRo ZSB0YXJnZXQgbGVuZ3RoIHRvIHRoZSBtYXJnaW4uICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVu Cit0aGUgdHdvIGxlbmd0aHMgd2lsbCBiZSByYWlzZWQgdG8gdGhpcyBwb3dlciB3aGVuIGNh bGN1bGF0aW5nIHRoZQorY29zdCBvZiBhIHBvdGVudGlhbCBsaW5lIGJyZWFrLgorCitAdmlu ZGV4IGJhbGFuY2VkLWZpbGwtcmFnZ2VkbmVzcy1wZW5hbHR5CitAdmluZGV4IGJhbGFuY2Vk LWZpbGwtc2luZ2xlLXBlbmFsdHkKK0B2aW5kZXggYmFsYW5jZWQtZmlsbC1icmVhay1wZW5h bHR5CisgIFRoZXJlIGFyZSBhbHNvIHNldmVyYWwgbWlub3IgYWRkaXRpdmUgcGVuYWx0aWVz IHRvIGhlbHAgaW1wcm92ZQordGhlIGFwcGVhcmFuY2UuICBUaGUgQGNvZGV7YmFsYW5jZWQt ZmlsbC1yYWdnZWRuZXNzLXBlbmFsdHl9IGFwcGxpZXMKK2ZvciBlYWNoIGNvbHVtbiBvZiBk aWZmZXJlbmNlIGluIGxlbmd0aCBmb3IgYSBsaW5lIHJlbGF0aXZlIHRvIHRoZQorcHJldmlv dXMgbGluZSwgdW5sZXNzIHRoaXMgaXMgdGhlIGxhc3QgbGluZSBhbmQgbG9uZ2VyIHRoYW4g c2Vjb25kCit0byBsYXN0LiAgSGlnaGVyIG51bWJlcnMgbWFrZSBpdCB0cnkgaGFyZGVyIHRv IGtlZXAgYWxsIGxpbmVzIGFzCitldmVuIGFzIHBvc3NpYmxlIGluIGxlbmd0aCBhdCB0aGUg ZXhwZW5zZSBvZiBvdGhlciBmYWN0b3JzLiAgVGhlCitAY29kZXtiYWxhbmNlZC1maWxsLXNp bmdsZS1wZW5hbHR5fSBpcyBhZGRlZCBlaXRoZXIgZm9yIHN0YXJ0aW5nIGEKK25ldyBzZW50 ZW5jZSB3aXRoIGEgc2luZ2xlIHdvcmQgcmlnaHQgYXQgdGhlIGVuZCBvZiBhIGxpbmUsIG9y IGVsc2UKK2ZvciBlbmRpbmcgYSBzZW50ZW5jZSB3aXRoIGEgc2luZ2xlIHdvcmQgbGVmdCBh dCB0aGUgc3RhcnQgb2YgYSBsaW5lLgorRmluYWxseSwgdGhlcmUgaXMgYSBAY29kZXtiYWxh bmNlZC1maWxsLWJyZWFrLXBlbmFsdHl9IGZvciBlYWNoIGxpbmUKK2JyZWFrIGFkZGVkLiAg VGhlIGxhcmdlciB0aGlzIGlzLCB0aGUgbW9yZSB0aGUgYWxnb3JpdGhtIHdpbGwgdHJ5IHRv CittaW5pbWl6ZSB0aGUgbnVtYmVyIG9mIGxpbmVzIGRlc3BpdGUgdGhlIG90aGVyIHBlbmFs dGllcy4KKwogQG5vZGUgQ2FzZQogQHNlY3Rpb24gQ2FzZSBDb252ZXJzaW9uIENvbW1hbmRz CiBAY2luZGV4IGNhc2UgY29udmVyc2lvbgpkaWZmIC0tZ2l0IGEvZXRjL05FV1MgYi9ldGMv TkVXUwppbmRleCAxMGU5MWVjNGFiLi4xMzc5YjJkOTBhIDEwMDY0NAotLS0gYS9ldGMvTkVX UworKysgYi9ldGMvTkVXUwpAQCAtNTMsNiArNTMsMTIgQEAgdHJhc2ggd2hlbiBkZWxldGlu Zy4gIERlZmF1bHQgaXMgbmlsLgogDAogKiBFZGl0aW5nIENoYW5nZXMgaW4gRW1hY3MgMzAu MQogCisqKiBGaWxsaW5nIGNhbiBub3cgdHJ5IHRvIGJyZWFrIGxpbmVzIGV2ZW5seS4KK1Ro ZSBuZXcgdXNlciBvcHRpb24gJ2JhbGFuY2VkLWZpbGwtbW9kZScgY2FuIGJlIHNldCB0byBu b24tbmlsIHRvCittYWtlIGZpbGxpbmcgY29uc2lkZXIgdGhlIGVudGlyZSBwYXJhZ3JhcGgg YXQgYSB0aW1lIGFuZCB0cnkgdG8KK3BsYWNlIGxpbmUgYnJlYWtzIG9wdGltYWxseSB0byBs b29rIG1vcmUgbmVhdCBhbmQgZXZlbiwgYWNjb3JkaW5nCit0byBhIGNvc3QgZnVuY3Rpb24u ICBUaGlzIGlzIGluc3BpcmVkIGJ5IHRoZSBLbnV0aC1QbGFzcyBhbGdvcml0aG0uCisKIC0t LQogKiogTmV3IGNvbW1hbmQgJ2tpbGwtbWF0Y2hpbmctYnVmZmVycy1uby1hc2snLgogVGhp cyB3b3JrcyBsaWtlICdraWxsLW1hdGNoaW5nLWJ1ZmZlcnMnLCBidXQgd2l0aG91dCBhc2tp bmcgZm9yCmRpZmYgLS1naXQgYS9saXNwL3RleHRtb2Rlcy9maWxsLmVsIGIvbGlzcC90ZXh0 bW9kZXMvZmlsbC5lbAppbmRleCAyZmRlMmZmNmM0Li5jODdiMGFmZDNhIDEwMDY0NAotLS0g YS9saXNwL3RleHRtb2Rlcy9maWxsLmVsCisrKyBiL2xpc3AvdGV4dG1vZGVzL2ZpbGwuZWwK QEAgLTEzMiw2ICsxMzIsODYgQEAgYWRhcHRpdmUtZmlsbC1mdW5jdGlvbgogICA6dmVyc2lv biAiMjcuMSIKICAgOnR5cGUgJ2Z1bmN0aW9uKQogCisoZGVmaW5lLW1pbm9yLW1vZGUgYmFs YW5jZWQtZmlsbC1tb2RlCisgICJUb2dnbGUgd2hldGhlciBmaWxsaW5nIHNob3VsZCB0cnkg dG8gbmVhdGx5IGJhbGFuY2UgbGluZSBsZW5ndGhzLgorCitXaGVuIGVuYWJsZWQsIGZpbGxp bmcgd2lsbCBjb25zaWRlciB0aGUgZW50aXJlIHBhcmFncmFwaCBhbmQKK3RyeSB0byBvcHRp bWFsbHkgY2hvb3NlIGEgc2V0IG9mIGxpbmUgYnJlYWtzIHRvIG1pbmltaXplIGEKK2Nvc3Qg ZnVuY3Rpb24gdGhhdCBwZW5hbGl6ZXMgdW50aWR5IHBhcmFncmFwaHMuICBUaGlzIG1heQor cGxhY2UgbGluZSBicmVha3Mgc29vbmVyIHRoYW4gbmVjZXNzYXJ5IGlmIGl0IGltcHJvdmVz IGxhdGVyCitsaW5lcy4gIFdoZW4gZGlzYWJsZWQsIGZpbGxpbmcgdXNlcyB0aGUgdHJhZGl0 aW9uYWwgZ3JlZWR5IGxpbmUKK2JyZWFraW5nIGFsZ29yaXRobS4KKworU2VlIEluZm8gbm9k ZSBgKGVtYWNzKSBCYWxhbmNlZCBGaWxsJyBmb3IgbW9yZSBkZXRhaWxzLiIKKyAgOmdsb2Jh bCB0CisgIDp2ZXJzaW9uICIzMC4xIgorICA6dHlwZSAnYm9vbGVhbgorICA6Z3JvdXAgJ2Zp bGwpCisKKyhkZWZjdXN0b20gYmFsYW5jZWQtZmlsbC1tYXhpbXVtLXdvcmRzIDUwMAorICAi TWF4aW11bSBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHdvcmRzIHRoYXQgdGhlIGJhbGFuY2Vk IGZpbGwKK2FsZ29yaXRobSB3aWxsIGF0dGVtcHQgdG8gcHJvY2VzcyBpbiBhIHNpbmdsZSBw YXJhZ3JhcGguICBJZgordGhlIHBhcmFncmFwaCBleGNlZWRzIHRoaXMgbGltaXQsIGZpbGxp bmcgd2lsbCBmYWxsIGJhY2sgdG8KK3RoZSBzdGFuZGFyZCBncmVlZHkgYWxnb3JpdGhtLiIK KyAgOnZlcnNpb24gIjMwLjEiCisgIDp0eXBlICdpbnRlZ2VyCisgIDpncm91cCAnZmlsbCkK KworKGRlZmN1c3RvbSBiYWxhbmNlZC1maWxsLW1hcmdpbiAzCisgICJOdW1iZXIgb2YgY29s dW1ucyBiZWZvcmUgdGhlIGZpbGwtY29sdW1uIHRoYXQgdGhlIGJhbGFuY2VkIGZpbGwKK2Fs Z29yaXRobSB3aWxsIGF0dGVtcHQgdG8gYnJlYWsgbGluZXMgYXQuICBBdHRlbXB0aW5nIHRv IGJyZWFrCitsaW5lcyBzbGlnaHRseSBzaG9ydCBvZiB0aGUgZmlsbC1jb2x1bW4gYnV0IGJl aW5nIGFsbG93ZWQgdG8KK2dvIHVwIHRvIHRoZSBmaWxsLWNvbHVtbiBjYW4gaGVscCB0byBt YWtlIHRoZSBsaW5lcyBtb3JlIGV2ZW4KK2luIGxlbmd0aC4iCisgIDp2ZXJzaW9uICIzMC4x IgorICA6dHlwZSAnaW50ZWdlcgorICA6Z3JvdXAgJ2ZpbGwpCisKKyhkZWZjdXN0b20gYmFs YW5jZWQtZmlsbC13aWRvd3MgMgorICAiTWluaW11bSBudW1iZXIgb2Ygd29yZHMgdGhhdCB0 aGUgYWxnb3JpdGhtIHdpbGwgYXR0ZW1wdCB0byBsZWF2ZQorb24gdGhlIGxhc3QgbGluZSBv ZiBhIHBhcmFncmFwaC4gIElmIHRoaXMgaXMgc2V0IHRvIGFuIGV4dHJlbWVseQoraGlnaCBu dW1iZXIsIHRoZW4gdGhlIGJhbGFuY2VkIGZpbGxpbmcgd2lsbCBnZW5lcmFsbHkgdHJ5IHRv IG1ha2UKK3RoZSBsYXN0IGxpbmUgYXMgZnVsbCBhcyBhbGwgdGhlIG90aGVycy4iCisgIDp2 ZXJzaW9uICIzMC4xIgorICA6dHlwZSAnaW50ZWdlcgorICA6Z3JvdXAgJ2ZpbGwpCisKKyhk ZWZjdXN0b20gYmFsYW5jZWQtZmlsbC1sZW5ndGgtZXhwb25lbnQgMworICAiQ29udHJvbHMg dGhlIHBlbmFsdHkgZm9yIGxpbmVzIHRoYXQgYXJlIHNob3J0ZXIgb3IgbG9uZ2VyIHRoYW4K K3RoZSB0YXJnZXQgbGVuZ3RoIHRvIHRoZSBtYXJnaW4uICBUaGUgZGlmZmVyZW5jZSBiZXR3 ZWVuIHRoZQorYWN0dWFsIGFuZCB0YXJnZXQgbGVuZ3RoIHdpbGwgYmUgcmFpc2VkIHRvIHRo aXMgcG93ZXIgd2hlbgorY2FsY3VsYXRpbmcgdGhlIGNvc3Qgb2YgYSBwb3RlbnRpYWwgbGlu ZSBicmVhay4gIFRoaXMgaXMgdGhlCittYWluIGNvbnRyb2wgZm9yIHRoZSBjb3N0IGZ1bmN0 aW9uLiIKKyAgOnZlcnNpb24gIjMwLjEiCisgIDp0eXBlICdpbnRlZ2VyCisgIDpncm91cCAn ZmlsbCkKKworKGRlZmN1c3RvbSBiYWxhbmNlZC1maWxsLXJhZ2dlZG5lc3MtcGVuYWx0eSA0 MAorICAiQWRkaXRpb25hbCBwZW5hbHR5IGZvciBlYWNoIGNvbHVtbiBvZiBkaWZmZXJlbmNl IGluIGxlbmd0aAorcmVsYXRpdmUgdG8gdGhlIHByZXZpb3VzIGxpbmUsIHVubGVzcyB0aGlz IGlzIHRoZSBsYXN0IGxpbmUKK2FuZCBsb25nZXIgdGhhbiBzZWNvbmQgdG8gbGFzdC4gIEhp Z2hlciBudW1iZXJzIG1ha2UgaXQgdHJ5CitoYXJkZXIgdG8ga2VlcCBhbGwgbGluZXMgYXMg ZXZlbiBhcyBwb3NzaWJsZSBpbiBsZW5ndGggYXQgdGhlCitleHBlbnNlIG9mIG90aGVyIGZh Y3RvcnMuIgorICA6dmVyc2lvbiAiMzAuMSIKKyAgOnR5cGUgJ2ludGVnZXIKKyAgOmdyb3Vw ICdmaWxsKQorCisoZGVmY3VzdG9tIGJhbGFuY2VkLWZpbGwtc2luZ2xlLXBlbmFsdHkgMTUw CisgICJBZGRpdGlvbmFsIHBlbmFsdHkgZWl0aGVyIGZvciBzdGFydGluZyBhIG5ldyBzZW50 ZW5jZSB3aXRoIGEKK3NpbmdsZSB3b3JkIHJpZ2h0IGF0IHRoZSBlbmQgb2YgYSBsaW5lLCBv ciBlbHNlIGZvciBlbmRpbmcgYQorc2VudGVuY2Ugd2l0aCBhIHNpbmdsZSB3b3JkIGxlZnQg YXQgdGhlIHN0YXJ0IG9mIGEgbGluZS4iCisgIDp2ZXJzaW9uICIzMC4xIgorICA6dHlwZSAn aW50ZWdlcgorICA6Z3JvdXAgJ2ZpbGwpCisKKyhkZWZjdXN0b20gYmFsYW5jZWQtZmlsbC1i cmVhay1wZW5hbHR5IDUwCisgICJBZGRpdGlvbmFsIHBlbmFsdHkgZm9yIGVhY2ggbGluZSBi cmVhayBhZGRlZC4gIFRoZSBsYXJnZXIgdGhpcworaXMsIHRoZSBtb3JlIHRoZSBhbGdvcml0 aG0gd2lsbCB0cnkgdG8gbWluaW1pemUgdGhlIG51bWJlciBvZgorbGluZXMgZGVzcGl0ZSB0 aGUgb3RoZXIgcGVuYWx0aWVzLiIKKyAgOnZlcnNpb24gIjMwLjEiCisgIDp0eXBlICdpbnRl Z2VyCisgIDpncm91cCAnZmlsbCkKKwogKGRlZnZhciBmaWxsLWluZGVudC1hY2NvcmRpbmct dG8tbW9kZSBuaWwgO1NjcmV3cyB1cCBDQy1tb2RlJ3MgZmlsbGluZyB0cmlja3MuCiAgICJX aGV0aGVyIG9yIG5vdCBmaWxsaW5nIHNob3VsZCB0cnkgdG8gdXNlIHRoZSBtYWpvciBtb2Rl J3MgaW5kZW50YXRpb24uIikKIApAQCAtNjQ0LDYgKzcyNCwxMzUgQEAgZmlsbC1pbmRlbnQt dG8tbGVmdC1tYXJnaW4KICAgICAoaW5kZW50LWxpbmUtdG8gKGN1cnJlbnQtbGVmdC1tYXJn aW4pKQogICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBiZWcgKHBvaW50KSAnZmFjZSAnZGVmYXVs dCkpKQogCisoZGVmdW4gYmFsYW5jZWQtZmlsbC1icmVhay1saW5lcyAoZnJvbSB0byBqdXN0 aWZ5KQorICA7OyBCdWlsZCBhIHRhYmxlIG9mIHZpc2libGUgd29yZCB3aWR0aHMsIHdpdGgg YW5kIHdpdGhvdXQgYW55IHByZWNlZGluZworICA7OyBzcGFjZXMsIGFsb25nIHdpdGggd2hl dGhlciB0aGUgd29yZCBzdGFydHMgYSBuZXcgc2VudGVuY2UuICBXZSBnbyBieQorICA7OyBj b2x1bW5zIGFuZCBub3QgY2hhcnMgdG8gaGFuZGxlIGludmlzaWJsZSB0ZXh0IChlc3BlY2lh bGx5IGludmlzaWJsZQorICA7OyBzcGFjZXMpLCBldGMuCisgIChsZXQgKCh3b3JkcyAnKCkp CisgICAgICAgIChjb3VudCAwKQorICAgICAgICAoc2VudGVuY2UtcmVnZXhwIChzZW50ZW5j ZS1lbmQpKSkKKyAgICAoZ290by1jaGFyIHRvKQorICAgICh3aGlsZSAoPiAocG9pbnQpIGZy b20pCisgICAgICAobGV0KiAoKHByZXZpb3VzIChwb2ludCkpCisgICAgICAgICAgICAgKGVu ZCAoY3VycmVudC1jb2x1bW4pKQorICAgICAgICAgICAgIChuZXh0IChwcm9nbiAoZmlsbC1t b3ZlLXRvLWJyZWFrLXBvaW50IGZyb20pCisgICAgICAgICAgICAgICAgICAgICAgICAgIDs7 IE5lZWRlZCBmb3IgbW92aW5nIHBhc3Qgc29tZSBPcmctbW9kZSBsaW5rcworICAgICAgICAg ICAgICAgICAgICAgICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiIFx0IikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgKHBvaW50KSkpCisgICAgICAgICAgICAgKHdpdGgtc3BhY2Ug KGN1cnJlbnQtY29sdW1uKSkKKyAgICAgICAgICAgICAod2l0aG91dC1zcGFjZSAocHJvZ24g KHNraXAtY2hhcnMtZm9yd2FyZCAiIFx0IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkpCisgICAgICAgICAgICAgKG5ldy1zZW50ZW5j ZSAobG9va2luZy1iYWNrIHNlbnRlbmNlLXJlZ2V4cCBmcm9tKSkpCisgICAgICAgIChnb3Rv LWNoYXIgbmV4dCkKKyAgICAgICAgOzsgSWYgcG9pbnQgZGlkbid0IG1vdmUsIHdlJ3JlIGFm dGVyIHRoZSBmaXJzdCB3b3JkIG9mIHRoZSBsaW5lLgorICAgICAgICAod2hlbiAoPD0gcHJl dmlvdXMgbmV4dCkKKyAgICAgICAgICAoZ290by1jaGFyIGZyb20pCisgICAgICAgICAgKHNl dHEgd2l0aC1zcGFjZSAoY3VycmVudC1jb2x1bW4pCisgICAgICAgICAgICAgICAgd2l0aG91 dC1zcGFjZSAoY3VycmVudC1jb2x1bW4pKSkKKyAgICAgICAgOzsgTWVyZ2UgaW50byBwcmV2 aW91cyBlbnRyeSB3aGVuIG1vdmluZyBwYXN0IGludmlzaWJsZSB0ZXh0LgorICAgICAgICAo aWYgKD0gZW5kIHdpdGhvdXQtc3BhY2UpCisgICAgICAgICAgICAoc2V0cSBlbmQgKCsgZW5k IChvciAoY2FyIChwb3Agd29yZHMpKSAwKSkpKQorICAgICAgICAocHVzaCAobGlzdCAoLSBl bmQgd2l0aC1zcGFjZSkgKC0gZW5kIHdpdGhvdXQtc3BhY2UpIG5ldy1zZW50ZW5jZSkKKyAg ICAgICAgICAgICAgd29yZHMpKSkKKyAgICAoc2V0cSB3b3JkcyAodmNvbmNhdCB3b3Jkcykp CisgICAgKHNldHEgY291bnQgKGxlbmd0aCB3b3JkcykpCisKKyAgICA7OyBBYm9ydCAoYW5k IGZhbGwgYmFjayB0byBncmVlZHkgYWxnb3JpdGhtKSBpZiB3ZSBoYXZlIHRvbyBtYW55IHdv cmRzLgorICAgIDs7IFRoZSBhbGdvcml0aG0gYmVsb3cgaXMgd29yc3QtY2FzZSBxdWFkcmF0 aWMgKHRob3VnaCB1c3VhbGx5IG5vdCkuCisgICAgOzsgQXN5bXB0b3RpY2FsbHkgZmFzdGVy IGFsZ29yaXRobXMgZXhpc3QsIGJ1dCBhcmUgbW9yZSBjb21wbGljYXRlZC4KKyAgICAoaWYg KD4gY291bnQgYmFsYW5jZWQtZmlsbC1tYXhpbXVtLXdvcmRzKQorICAgICAgICBuaWwKKwor ICAgICAgOzsgQ29uc2lkZXIgZWFjaCB3b3JkIGFzIGEgY2FuZGlkYXRlIHRvIHN0YXJ0IGEg bGluZSwgYW5kIGJ1aWxkIGEKKyAgICAgIDs7IHRhYmxlIG9mIHdoaWNoIHdvcmQgdGhlIHBy ZXZpb3VzIGxpbmUgd291bGQgYmUgYmVzdCB0byBzdGFydCBvbgorICAgICAgOzsgYW5kIHRo ZSB3aWR0aCBvZiB0aGUgcHJldmlvdXMgbGluZS4gIFVzZSBkeW5hbWljIHByb2dyYW1taW5n IHRvCisgICAgICA7OyBtaW5pbWl6ZSBhIGNvc3QgZnVuY3Rpb24uCisgICAgICAobGV0ICgo c3RhcnRzIChtYWtlLXZlY3RvciAoMSsgY291bnQpIDApKQorICAgICAgICAgICAgKHdpZHRo cyAobWFrZS12ZWN0b3IgKDErIGNvdW50KSAwKSkpCisgICAgICAgIChsZXQqICgoc3RhcnQg MCkKKyAgICAgICAgICAgICAgIChyb29tICgtIGZpbGwtY29sdW1uIChjdXJyZW50LWNvbHVt bikpKQorICAgICAgICAgICAgICAgKGNvc3RzIChtYWtlLXZlY3RvciAoMSsgY291bnQpIG1v c3QtcG9zaXRpdmUtZml4bnVtKSkKKyAgICAgICAgICAgICAgIChyYWdzIChtYWtlLXZlY3Rv ciAoMSsgY291bnQpIGJhbGFuY2VkLWZpbGwtbWFyZ2luKSkpCisgICAgICAgICAgKGFzZXQg Y29zdHMgMCAwKQorICAgICAgICAgICh3aGlsZSAoPCBzdGFydCBjb3VudCkKKyAgICAgICAg ICAgIDs7IFRoZSByb29tIGZvciB0aGUgZmlyc3QgbGluZSBtYXkgYmUgZGlmZmVyZW50IHRo YW4gdGhlIHJlc3QuCisgICAgICAgICAgICAoaWYgKD0gc3RhcnQgMSkKKyAgICAgICAgICAg ICAgICAoc2V0cSByb29tICgtIGZpbGwtY29sdW1uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc3RyaW5nLXdpZHRoIChvciBmaWxsLXByZWZpeCAiIikpKSkpCisgICAgICAg ICAgICA7OyBDb25zaWRlciBlYWNoIHdvcmQgdGhpcyBuZXcgbGluZSBtaWdodCBlbmQgb24u ICBEb24ndCB0ZXN0CisgICAgICAgICAgICA7OyB3aWR0aCBhZ2FpbnN0IHJvb20geWV0OyB3 ZSB3YW50IGF0IGxlYXN0IG9uZSB3b3JkIHBlciBsaW5lLAorICAgICAgICAgICAgOzsgc28g d2UgbmVlZCBhdCBsZWFzdCBvbmUgaXRlcmF0aW9uLgorICAgICAgICAgICAgKGxldCAoKGVu ZCBzdGFydCkKKyAgICAgICAgICAgICAgICAgICh3aWR0aCAwKSkKKyAgICAgICAgICAgICAg KHdoaWxlICg8IGVuZCBjb3VudCkKKyAgICAgICAgICAgICAgICA7OyBEb24ndCBhZGQgdGhl IHNwYWNlIGJlZm9yZSB0aGUgZmlyc3Qgd29yZCB0byB0aGUgd2lkdGguCisgICAgICAgICAg ICAgICAgKHNldHEgd2lkdGggKCsgd2lkdGggKG50aCAoaWYgKD0gZW5kIHN0YXJ0KSAxIDAp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJlZiB3b3Jk cyBlbmQpKSkpCisgICAgICAgICAgICAgICAgOzsgT3VyIGNvc3QgZnVuY3Rpb24gaXMgdGhl IHN1bSBvZiB0aGUgYmVzdCB0b3RhbCBjb3N0CisgICAgICAgICAgICAgICAgOzsgZm9yIGFs bCB0aGUgbGluZXMgcHJlY2VkaW5nIHRoZSBzdGFydCBvZiB0aGlzIG9uZSwKKyAgICAgICAg ICAgICAgICAobGV0ICgoY29zdCAoKyAoYXJlZiBjb3N0cyBzdGFydCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7OyBwbHVzIHRoZSBkaXN0YW5jZSBmcm9tIHRoZSBtYXJn aW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXhwdCAoYWJzICgtIHJvb20g YmFsYW5jZWQtZmlsbC1tYXJnaW4gd2lkdGgpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDs7IGV4cG9uZW50aWF0ZWQgaWYgbm90IHRoZSBsYXN0IGxpbmUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKG9yICgvPSAoMSsgZW5k KSBjb3VudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDs7IG9yIGlmIHdlJ2QgbGVhdmUgYSB3aWRvdywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICg8ICgtICgxKyBlbmQpIHN0YXJ0KQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFsYW5jZWQtZmlsbC13 aWRvd3MpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWxh bmNlZC1maWxsLWxlbmd0aC1leHBvbmVudCAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA7OyBwbHVzIGEgcGVuYWx0eSBmb3IgYW4gdW5ldmVuIHJpZ2h0IHNpZGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAoYWJzICgtIHJvb20gd2lkdGgKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmVmIHJhZ3Mgc3Rh cnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBpZiBub3QgdGhl IGxhc3QgbGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAob3Ig KC89ICgxKyBlbmQpIGNvdW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOzsgdW5sZXNzIHRoZSBsYXN0IGxpbmUgaXMgbG9uZ2VyLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDwgKC0gcm9vbSB3aWR0aCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmVmIHJhZ3Mg c3RhcnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFsYW5j ZWQtZmlsbC1yYWdnZWRuZXNzLXBlbmFsdHkgMCkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOzsgcGx1cyBhIHBlbmFsdHkgaWYgZW5kaW5nIG9uIHRoZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDs7IHN0YXJ0IG9mIGEgbmV3IHNlbnRlbmNlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAobnRoIDIgKGFyZWYgd29yZHMgZW5k KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFsYW5jZWQtZmlsbC1z aW5nbGUtcGVuYWx0eSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGFu ZCBhIHBlbmFsdHkgaWYgc3RhcnRpbmcgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDs7IGEgc2luZ2xlIHdvcmQgYW5kIHRoZW4gYSBuZXcgc2VudGVuY2UsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChhbmQgKDwgKDErIHN0YXJ0KSBjb3Vu dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnRoIDIgKGFy ZWYgd29yZHMgKDErIHN0YXJ0KSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBiYWxhbmNlZC1maWxsLXNpbmdsZS1wZW5hbHR5IDApCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOzsgYW5kIGEgcGVuYWx0eSBmb3IgZWFjaCBicmVhay4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBiYWxhbmNlZC1maWxsLWJyZWFrLXBlbmFsdHkp KSkKKyAgICAgICAgICAgICAgICAgIDs7IEZvciBlbmRpbmcgYWZ0ZXIgaGVyZSwgaXMgdGhp cyBhIGJldHRlciBzdGFydGluZyBwbGFjZT8KKyAgICAgICAgICAgICAgICAgICh3aGVuIChh bmQgKDw9IGNvc3QgKGFyZWYgY29zdHMgKDErIGVuZCkpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAob3IgKDw9IHdpZHRoIHJvb20pICg9IGVuZCBzdGFydCkpKQorICAgICAg ICAgICAgICAgICAgICAoYXNldCBjb3N0cyAoMSsgZW5kKSBjb3N0KQorICAgICAgICAgICAg ICAgICAgICAoYXNldCBzdGFydHMgKDErIGVuZCkgc3RhcnQpCisgICAgICAgICAgICAgICAg ICAgIChhc2V0IHdpZHRocyAoMSsgZW5kKSB3aWR0aCkKKyAgICAgICAgICAgICAgICAgICAg KGFzZXQgcmFncyAoMSsgZW5kKSAoLSByb29tIHdpZHRoKSkpKQorICAgICAgICAgICAgICAg IDs7IEJyZWFrIHRoZSBpbm5lciAoZW5kKSBsb29wIGlmIHdlJ3JlIG91dCBvZiByb29tIG5v dy4KKyAgICAgICAgICAgICAgICAoaWYgKD49IHdpZHRoIHJvb20pCisgICAgICAgICAgICAg ICAgICAgIChzZXRxIGVuZCBjb3VudCkpCisgICAgICAgICAgICAgICAgKHNldHEgZW5kICgx KyBlbmQpKSkpCisgICAgICAgICAgICAoc2V0cSBzdGFydCAoMSsgc3RhcnQpKSkpCisKKyAg ICAgICAgOzsgV2FsayBiYWNrd2FyZHMgZnJvbSB0aGUgZW5kIG9mIHRoZSB0YWJsZSB0byBy ZWNvbnN0cnVjdCBhIGxpc3QKKyAgICAgICAgOzsgb2YgdGhlIG9wdGltYWwgd2lkdGhzIGZv ciBlYWNoIGxpbmUuCisgICAgICAgIChsZXQgKGNob3NlbikKKyAgICAgICAgICAobGV0ICgo ZW5kIGNvdW50KSkKKyAgICAgICAgICAgICh3aGlsZSAoPiBlbmQgMCkKKyAgICAgICAgICAg ICAgKGlmICg8IGVuZCBjb3VudCkKKyAgICAgICAgICAgICAgICAgIChwdXNoIChhcmVmIHdp ZHRocyBlbmQpIGNob3NlbikpCisgICAgICAgICAgICAgIChzZXRxIGVuZCAoYXJlZiBzdGFy dHMgZW5kKSkpKQorCisgICAgICAgICAgOzsgVGhlbiBpbnNlcnQgdGhvc2UgbGluZSBicmVh a3MgYW5kIGp1c3RpZnkgZWFjaCBsaW5lLgorICAgICAgICAgIChtYXBjIChsYW1iZGEgKHdp ZHRoKQorICAgICAgICAgICAgICAgICAgKG1vdmUtdG8tY29sdW1uICgrIChjdXJyZW50LWNv bHVtbikgd2lkdGgpKQorICAgICAgICAgICAgICAgICAgKGZpbGwtbmV3bGluZSkKKwkJICAo aWYganVzdGlmeQorCQkgICAgICAoc2F2ZS1leGN1cnNpb24KKwkJICAgICAgICAoZm9yd2Fy ZC1saW5lIC0xKQorCQkgICAgICAgIChqdXN0aWZ5LWN1cnJlbnQtbGluZSBqdXN0aWZ5IG5p bCB0KSkpKQorICAgICAgICAgICAgICAgIGNob3NlbikKKyAgICAgICAgICAoaWYganVzdGlm eSAoanVzdGlmeS1jdXJyZW50LWxpbmUganVzdGlmeSB0IHQpKSkpKSkpCisKIChkZWZ1biBm aWxsLXJlZ2lvbi1hcy1wYXJhZ3JhcGggKGZyb20gdG8gJm9wdGlvbmFsIGp1c3RpZnkKIAkJ CQkgICAgICBub3NxdWVlemUgc3F1ZWV6ZS1hZnRlcikKICAgIkZpbGwgdGhlIHJlZ2lvbiBh cyBpZiBpdCB3ZXJlIGEgc2luZ2xlIHBhcmFncmFwaC4KQEAgLTc2Miw2ICs5NzEsMTEgQEAg ZmlsbC1yZWdpb24tYXMtcGFyYWdyYXBoCiAKIAk7OyBUaGlzIGlzIHRoZSBhY3R1YWwgZmls bGluZyBsb29wLgogCShnb3RvLWNoYXIgZnJvbSkKKyAgICAgICAgOzsgQXR0ZW1wdCB0byBi cmVhayBpbnRvIGJhbGFuY2VkIGxpbmVzIGlmIGRlc2lyZWQuCisgICAgICAgICh3aGVuIGJh bGFuY2VkLWZpbGwtbW9kZQorICAgICAgICAgIChiYWxhbmNlZC1maWxsLWJyZWFrLWxpbmVz IGZyb20gdG8ganVzdGlmeSkpCisgICAgICAgIDs7IE90aGVyd2lzZSAoaWYgcG9pbnQgaXMg c3RpbGwgYXQgZnJvbSksCisgICAgICAgIDs7IGZhbGwgYmFjayB0byB0aGUgc3RhbmRhcmQg Z3JlZWR5IGxpbmUgYnJlYWtpbmcgbG9vcC4KIAkobGV0IChsaW5lYmVnKQogICAgICAgICAg ICh3aGlsZSAoPCAocG9pbnQpIHRvKQogCSAgICAoc2V0cSBsaW5lYmVnIChwb2ludCkpCmRp ZmYgLS1naXQgYS90ZXN0L2xpc3AvdGV4dG1vZGVzL2ZpbGwtdGVzdHMuZWwgYi90ZXN0L2xp c3AvdGV4dG1vZGVzL2ZpbGwtdGVzdHMuZWwKaW5kZXggZWY4MjJiYTgwNS4uMTFkYjZhNDk5 ZiAxMDA2NDQKLS0tIGEvdGVzdC9saXNwL3RleHRtb2Rlcy9maWxsLXRlc3RzLmVsCisrKyBi L3Rlc3QvbGlzcC90ZXh0bW9kZXMvZmlsbC10ZXN0cy5lbApAQCAtMTIxLDYgKzEyMSwyMSBA QCB0ZXN0LWZpbGwtaGFza2VsbAogICA7OyB3CiAiKSkpCiAKKyhlcnQtZGVmdGVzdCBmaWxs LXRlc3QtYmFsYW5jZWQtZmlsbC1tb2RlIG5pbAorICAiQmFzaWMgdGVzdCBvZiB0aGUgYGJh bGFuY2VkLWZpbGwtbW9kZScgb3B0aW9uLiIKKyAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAo aW5zZXJ0ICJDY2MgY2NjIGEgYmIgZGRkZCBiYiBiYiBhIGNjYyBhIGpqampqampqamogYSBl ZWVlZSBhIGhoaGhoaGhoIGJiIGRkZGQuIikKKyAgICAoc2V0cSBmaWxsLWNvbHVtbiAxNSkK KyAgICAoc2V0cS1sb2NhbCBiYWxhbmNlZC1maWxsLW1vZGUgbmlsKQorICAgIChmaWxsLXBh cmFncmFwaCkKKyAgICAoc2hvdWxkIChzdHJpbmc9IChidWZmZXItc3RyaW5nKSAiQ2NjIGNj YyBhIGJiXG5kZGRkIGJiIGJiIGFcbmNjYyBhXG5qampqampqampqIGFcbmVlZWVlIGFcbmho aGhoaGhoIGJiXG5kZGRkLiIpKSkKKyAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAoaW5zZXJ0 ICJDY2MgY2NjIGEgYmIgZGRkZCBiYiBiYiBhIGNjYyBhIGpqampqampqamogYSBlZWVlZSBh IGhoaGhoaGhoIGJiIGRkZGQuIikKKyAgICAoc2V0cSBmaWxsLWNvbHVtbiAxNSkKKyAgICAo c2V0cS1sb2NhbCBiYWxhbmNlZC1maWxsLW1vZGUgdCkKKyAgICAoZmlsbC1wYXJhZ3JhcGgp CisgICAgKHNob3VsZCAoc3RyaW5nPSAoYnVmZmVyLXN0cmluZykgIkNjYyBjY2MgYVxuYmIg ZGRkZCBiYlxuYmIgYSBjY2MgYVxuampqampqampqalxuYSBlZWVlZSBhXG5oaGhoaGhoaFxu YmIgZGRkZC4iKSkpKQorCiAocHJvdmlkZSAnZmlsbC10ZXN0cykKIAogOzs7IGZpbGwtdGVz dHMuZWwgZW5kcyBoZXJlCi0tIAoyLjE3LjEKCg== --------------U6U1i80qvZoNZsVAvkQDbBAD--
Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) Content-Type: text/plain; charset=utf-8 X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: Andrew Kensler <andrew@HIDDEN> Subject: bug#61028: Acknowledgement (30.0.50; [PATCH] [FEATURE] Balanced fill mode) Message-ID: <handler.61028.B.16744840148778.ack <at> debbugs.gnu.org> References: <9ec521a6-b324-3f09-7495-c55638b890f8@HIDDEN> X-Gnu-PR-Message: ack 61028 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Reply-To: 61028 <at> debbugs.gnu.org Date: Mon, 23 Jan 2023 14:27:02 +0000 Thank you for filing a new bug report with debbugs.gnu.org. This is an automatically generated reply to let you know your message has been received. Your message is being forwarded to the package maintainers and other interested parties for their attention; they will reply in due course. Your message has been sent to the package maintainer(s): bug-gnu-emacs@HIDDEN If you wish to submit further information on this problem, please send it to 61028 <at> debbugs.gnu.org. Please do not send mail to help-debbugs@HIDDEN unless you wish to report a problem with the Bug-tracking system. --=20 61028: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D61028 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems
X-Loop: help-debbugs@HIDDEN Subject: bug#61028: 30.0.50; [PATCH] [FEATURE] Balanced fill mode Resent-From: Eli Zaretskii <eliz@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Mon, 23 Jan 2023 15:36:02 +0000 Resent-Message-ID: <handler.61028.B61028.167448810517137 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 61028 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Andrew Kensler <andrew@HIDDEN> Cc: 61028 <at> debbugs.gnu.org Received: via spool by 61028-submit <at> debbugs.gnu.org id=B61028.167448810517137 (code B ref 61028); Mon, 23 Jan 2023 15:36:02 +0000 Received: (at 61028) by debbugs.gnu.org; 23 Jan 2023 15:35:05 +0000 Received: from localhost ([127.0.0.1]:55115 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1pJyqe-0004SJ-Jc for submit <at> debbugs.gnu.org; Mon, 23 Jan 2023 10:35:05 -0500 Received: from eggs.gnu.org ([209.51.188.92]:37020) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1pJyqc-0004Rj-9D for 61028 <at> debbugs.gnu.org; Mon, 23 Jan 2023 10:35:03 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1pJyqW-0003Qh-73; Mon, 23 Jan 2023 10:34:56 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=mCtumc0axHnQy3sRZ/G5hKkWLvcGCaY/SvSytEPXEEo=; b=N033ukrq4DjL YZHm7MxgZLpXGrOXx4vGoUsY9wC7z6OhtI8Lx79Masig9aAwBRbiwB8MUUIvnewkY8/+bWgzGDapJ R5KJ7RiWH40k2XKj77w8cFbq4pVapd+j+fjs3ZzcDVH60umLuLGdyUPo+2NPU2VGVe4KX+afR5jcm yUvtaLgxxancLc/6GKJ4pKyqag+RfVriJLChOfgoHasFg2/RM60qm+yEHb3/EeAqeiU5peqFAajHI cPlZFfCktBYewOqEviKAwgRD3V9oLgrEY00M3OfEK+8VxxZ55iwHeYhRMVK6LTonLA2yZ3GNA8DHp ajWGcQmgvCU9PiUNvm265g==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1pJyqH-0003HV-4c; Mon, 23 Jan 2023 10:34:55 -0500 Date: Mon, 23 Jan 2023 17:34:48 +0200 Message-Id: <83mt69i7s7.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> In-Reply-To: <9ec521a6-b324-3f09-7495-c55638b890f8@HIDDEN> (message from Andrew Kensler on Mon, 23 Jan 2023 01:40:40 -0800) References: <9ec521a6-b324-3f09-7495-c55638b890f8@HIDDEN> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > Date: Mon, 23 Jan 2023 01:40:40 -0800 > From: Andrew Kensler <andrew@HIDDEN> > > The proposed patch attached adds a new minor balanced-fill-mode with an alternate line breaking algorithm > for paragraph filling. When enabled, it will try to neatly balance line lengths to reduce raggedness, avoid > widows, avoid starting a new sentence on the last word of a line, avoid ending a sentence on the first word > of a line, and so forth. It is heavily inspired by the Knuth-Plass line breaking algorithm and uses dynamic > programming to try to choose line breaks to minimize a cost function. > > For example, consider the following mock paragraph as filled by the current greedy algorithm with the > fill-column set to 15: > > Ccc ccc a bb > dddd bb bb a > ccc a > jjjjjjjjjj a > eeeee a > hhhhhhhh bb > dddd. > > With the new minor mode enabled, it would instead be filled much more nicely as: > > Ccc ccc a > bb dddd bb > bb a ccc a > jjjjjjjjjj > a eeeee a > hhhhhhhh > bb dddd. > > Often, the result is similar to simply having used a particular slightly narrower fill-column with the current > greedy algorithm. The advantage, however, is that it figures out the correct column automatically and > per-paragraph. > > The main piece of implementation is in the new (balanced-fill-break-lines) function in fill.el, with a modification > to (fill-region-as-paragraph) to optionally call this before its current line breaking loop. If it runs successfully, > then point will be set to the end of the paragraph and that loop skipped. > > Note that (fill-region-as-paragraph) has no hooks and is too monolithic to advise for this kind of thing, hence > my hoping to upstream this change. > > This is my first time contributing anything significant to Emacs or writing here. I believe that the proposed > patch covers all the major needs: the code itself, commit message, info documentation, announcement in > NEWS, and a basic ERT test. If there's anything I've missed or suggestions for improvements, please let > me know. (And I hope this is the correct mailing list and message format, too.) I'll be happy to sign the > copyright assignment paperwork if this looks like something you'd like to accept. Thanks, I think this is a welcome feature. Please see a few comments below. I will send you the form for copyright assignment off-list. > +@node Balanced Fill > +@subsection Balanced Filling I find this subsection too detailed and lengthy. I'm not sure we want to describe all the customizable options that users can customize, just the main ones. Assuming the default values are chosen well, chances are that most users will not need to customize too many of them, and therefore the manual doesn't have to describe them; we just need to mention that several more options are available, and perhaps have a special group for them for easier discoverability. WDYT? My other concern about the documentation is that it seems to describe the feature in a way that is too technical and uses terminology from the field of optimizations. I'm afraid that users without background in optimizations will have difficulty understanding some of the options. Can you try describing this in a less formal manner, so as to make it easier to understand? > + For example, if @code{fill-column} is 60 and balanced filling is > +disabled then the greedy algorithm will fill the following paragraph > +like so: > + > +@smallexample > +"It's not too far-fetched to say that the best programs are > +the ones written when the programmer is supposed to be > +working on something else... Very good things happen when > +management is enlightened enough to appreciate the > +importance of allowing programmers some free time for > +projects of this sort." --Melinda Varian > +@end smallexample > + > +@noindent > +while enabling the balanced filling will instead produce the following > +with slightly shorter but more even line lengths: > + > +@smallexample > +"It's not too far-fetched to say that the best programs > +are the ones written when the programmer is supposed to > +be working on something else... Very good things happen > +when management is enlightened enough to appreciate the > +importance of allowing programmers some free time for > +projects of this sort." -- Melinda Varian > +@end smallexample This example is too long. I suggest to find a shorter one. I think an example with 3 lines should be enough to explain the feature. > --- a/etc/NEWS > +++ b/etc/NEWS > @@ -53,6 +53,12 @@ trash when deleting. Default is nil. > > * Editing Changes in Emacs 30.1 > > +** Filling can now try to break lines evenly. > +The new user option 'balanced-fill-mode' can be set to non-nil to > +make filling consider the entire paragraph at a time and try to > +place line breaks optimally to look more neat and even, according > +to a cost function. This is inspired by the Knuth-Plass algorithm. This should mention at least a few main options that control the feature. > +(define-minor-mode balanced-fill-mode > + "Toggle whether filling should try to neatly balance line lengths. > + > +When enabled, filling will consider the entire paragraph and > +try to optimally choose a set of line breaks to minimize a > +cost function that penalizes untidy paragraphs. This may > +place line breaks sooner than necessary if it improves later > +lines. When disabled, filling uses the traditional greedy line > +breaking algorithm. Likewise here: this doc string is too abstract and thus hard to grok. Talking about minimization of a cost function that penalizes something only helps if one has some background in that domain. I'd instead try to say something like "fills the entire paragraph avoiding too short lines" or something similar. > +(defcustom balanced-fill-maximum-words 500 > + "Maximum limit on the number of words that the balanced fill > +algorithm will attempt to process in a single paragraph. If The first line of a doc string should be a single complete sentence (here and elsewhere in the patch). This is important because the various "apropos" commands show only the first line of the doc string. > +(defcustom balanced-fill-length-exponent 3 > + "Controls the penalty for lines that are shorter or longer than > +the target length to the margin. The difference between the > +actual and target length will be raised to this power when > +calculating the cost of a potential line break. This is the > +main control for the cost function." > + :version "30.1" > + :type 'integer > + :group 'fill) > + > +(defcustom balanced-fill-raggedness-penalty 40 > + "Additional penalty for each column of difference in length > +relative to the previous line, unless this is the last line > +and longer than second to last. Higher numbers make it try > +harder to keep all lines as even as possible in length at the > +expense of other factors." > + :version "30.1" > + :type 'integer > + :group 'fill) > + > +(defcustom balanced-fill-single-penalty 150 > + "Additional penalty either for starting a new sentence with a > +single word right at the end of a line, or else for ending a > +sentence with a single word left at the start of a line." > + :version "30.1" > + :type 'integer > + :group 'fill) > + > +(defcustom balanced-fill-break-penalty 50 > + "Additional penalty for each line break added. The larger this > +is, the more the algorithm will try to minimize the number of > +lines despite the other penalties." > + :version "30.1" > + :type 'integer > + :group 'fill) These options are probably related, in that changing one needs a suitable change in others to make sense. If this is indeed so, please mention the relations in the doc strings. You say "Additional", but that is meaningless when each doc string is read separately (additional to what?) > +(defun balanced-fill-break-lines (from to justify) > + ;; Build a table of visible word widths, with and without any preceding > + ;; spaces, along with whether the word starts a new sentence. We go by > + ;; columns and not chars to handle invisible text (especially invisible > + ;; spaces), etc. If this is an internal function, please use our convention of naming it with double dash, as in balanced-fill--break-lines. If this is supposed to be a public function, it should have a doc string. Last, but not least: what about performance? Is this performant enough to apply to large enough paragraphs, including via auto-fill-mode? Can you provide some measurements? Thanks.
X-Loop: help-debbugs@HIDDEN Subject: bug#61028: 30.0.50; [PATCH] [FEATURE] Balanced fill mode Resent-From: Andrew Kensler <andrew@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Mon, 13 Feb 2023 08:28:01 +0000 Resent-Message-ID: <handler.61028.B61028.167627683729358 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 61028 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Eli Zaretskii <eliz@HIDDEN> Cc: 61028 <at> debbugs.gnu.org Received: via spool by 61028-submit <at> debbugs.gnu.org id=B61028.167627683729358 (code B ref 61028); Mon, 13 Feb 2023 08:28:01 +0000 Received: (at 61028) by debbugs.gnu.org; 13 Feb 2023 08:27:17 +0000 Received: from localhost ([127.0.0.1]:47577 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1pRUB9-0007dO-PA for submit <at> debbugs.gnu.org; Mon, 13 Feb 2023 03:27:17 -0500 Received: from smtp1.phpwebhosting.com ([184.154.71.7]:46463) by debbugs.gnu.org with smtp (Exim 4.84_2) (envelope-from <andrew@HIDDEN>) id 1pRUB6-0007dD-CT for 61028 <at> debbugs.gnu.org; Mon, 13 Feb 2023 03:27:14 -0500 Received: (qmail 28121 invoked from network); 13 Feb 2023 08:27:15 -0000 Received: from unknown (HELO [10.0.0.107]) (andrew@HIDDEN@76.121.228.80) by smtp1.phpwebhosting.com with (AES128-SHA encrypted) SMTP; Mon, 13 Feb 2023 03:27:15 -0500 Content-Type: multipart/mixed; boundary="------------TWuQdg909FX6zFfWaIAMkuEw" Message-ID: <c7a3fc7d-9df5-e509-e70d-bc41b98dc6f4@HIDDEN> Date: Mon, 13 Feb 2023 00:27:10 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 From: Andrew Kensler <andrew@HIDDEN> References: <9ec521a6-b324-3f09-7495-c55638b890f8@HIDDEN> <83mt69i7s7.fsf@HIDDEN> Content-Language: en-US In-Reply-To: <83mt69i7s7.fsf@HIDDEN> X-Spam-Score: -1.1 (-) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -2.1 (--) This is a multi-part message in MIME format. --------------TWuQdg909FX6zFfWaIAMkuEw Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit A revised patch is attached. Replies follow inline. On 1/23/23 7:34 AM, Eli Zaretskii wrote: > Thanks, I think this is a welcome feature. Please see a few comments > below. I will send you the form for copyright assignment off-list. Signed and sent. > I find this subsection too detailed and lengthy. I'm not sure we want > to describe all the customizable options that users can customize, > just the main ones. Assuming the default values are chosen well, > chances are that most users will not need to customize too many of > them, and therefore the manual doesn't have to describe them; we just > need to mention that several more options are available, and perhaps > have a special group for them for easier discoverability. WDYT? I have significantly trimmed this subsection of the manual. I agree about the special group. The options related to balanced fill mode have now been collected in their own 'balanced-fill customization group, which is a child of the main 'fill group. (Note that the other existing options in fill.el are now explicitly placed in the 'fill group rather than relying on implicit ordering relative to the last group definition.) This subsection of the manual now tells how to customize the 'balanced-fill group, rather than listing all of the options individually. I have also renamed several of the options to better imply their relation; the ones that directly contribute (or are an exponent on a value that contributes) to the total score being optimized now all end in -penalty, for example. > My other concern about the documentation is that it seems to describe > the feature in a way that is too technical and uses terminology from > the field of optimizations. I'm afraid that users without background > in optimizations will have difficulty understanding some of the > options. Can you try describing this in a less formal manner, so as > to make it easier to understand? I have tried to move the focus of the documentation for this feature away from the technical details of the implementation and more towards a description of the effects. > This example is too long. I suggest to find a shorter one. I think > an example with 3 lines should be enough to explain the feature. I have changed the manual subsection to use a much shorter example. It is a bit longer than 3 lines, but that is because it uses a fill-width of 20. However, this gave me room to put the examples with and without this feature side-by-side. > This should mention at least a few main options that control the > feature. In the NEWS announcement, I have added a reference to the new customization group. > Likewise here: this doc string is too abstract and thus hard to grok. > Talking about minimization of a cost function that penalizes something > only helps if one has some background in that domain. I'd instead try > to say something like "fills the entire paragraph avoiding too short > lines" or something similar. I have updated the doc string on the minor mode here, as well as the other doc strings to remove the mentions of minimizing a cost function. In this case, I went with "When enabled, filling will try to optimally choose a set of line breaks to make a paragraph look tidier by considering the entire paragraph at a time. This may place line breaks sooner than necessary if it improves later lines." > The first line of a doc string should be a single complete sentence > (here and elsewhere in the patch). This is important because the > various "apropos" commands show only the first line of the doc string. Good point! This might be worth a reminder under the "Documenting your changes" section of the CONTRIBUTE guide where it mentions doc-strings. > These options are probably related, in that changing one needs a > suitable change in others to make sense. If this is indeed so, please > mention the relations in the doc strings. You say "Additional", but > that is meaningless when each doc string is read separately > (additional to what?) That's a fair point. Each of the options now that contributes to the scoring now ends in -penalty and is a member of the 'balanced-fill customization group. I have also updated the doc strings to mention that these values are about the prioritization of some aspect of the appearance of the paragraph relative to the other penalties. Hopefully that is more clear now. I have removed the "Additional" language. > If this is an internal function, please use our convention of naming > it with double dash, as in balanced-fill--break-lines. If this is > supposed to be a public function, it should have a doc string. I have renamed it to use the double dash. I had originally been trying to match it to the existing code in fill.el, which doesn't seem use that convention. But I also realize that that code may predate that convention and you wouldn't have wanted to rename it and risk breaking any user code relying on it. No need for new code to be bound by that, though. > Last, but not least: what about performance? Is this performant > enough to apply to large enough paragraphs, including via > auto-fill-mode? Can you provide some measurements? That's a fair question. That is why I had added the balanced-fill-word-limit option to restrict this to small to medium paragraphs. But to test the performance, I have written a small benchmark (see attached) that creates temporary buffers with successively larger copies of the common "Lorem ipsum" paragraph, all on on line, and measures the time to fill it. Here are timings that I got from it on my 10-year old machine at a few key sizes, with and without nativecomp: Without nativecomp: For 69 words: greedy fill -- 0.000216s balanced fill -- 0.001203s For 483 words: greedy fill -- 0.001201s balanced fill -- 0.023777s For 2001 words: greedy fill -- 0.005144s balanced fill -- 0.341215s With nativecomp: For 69 words: greedy fill -- 0.000190s balanced fill -- 0.000991s For 483 words: greedy fill -- 0.001086s balanced fill -- 0.021680s For 2001 words: greedy fill -- 0.004645s balanced fill -- 0.316352s Note that for this benchmark, I had raised the balanced-fill-word-limit option so that it would test the new balanced fill algorithm, even at larger sizes. With its current default of the 500 word limit, the timings for the 2001 words tests when balanced fill mode was enabled were around ~0.5ms since it would fall back to the greedy fill algorithm. Thus the maximum time with this minor mode enabled and the default word limit would be about ~2.5ms on this machine for a 500 word paragraph. Hopefully this new revision addresses your major critiques from before. I'm happy to refine it further if you still have reservations or spot anything else. --------------TWuQdg909FX6zFfWaIAMkuEw Content-Type: text/x-patch; charset=UTF-8; name="0001-Add-new-minor-balanced-fill-mode-to-filling.patch" Content-Disposition: attachment; filename="0001-Add-new-minor-balanced-fill-mode-to-filling.patch" Content-Transfer-Encoding: base64 RnJvbSAwZWE5MTQ4MmQ1OTIzNDZjYzQ2MDUyYmYxMzM2Y2JjNmE1OTU0YjMxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgS2Vuc2xlciA8YW5kcmV3QGVhc3RmYXJ0 aGluZy5jb20+CkRhdGU6IEZyaSwgMjAgSmFuIDIwMjMgMTg6MTc6NDEgLTA4MDAKU3ViamVj dDogW1BBVENIXSBBZGQgbmV3IG1pbm9yIGBiYWxhbmNlZC1maWxsLW1vZGVgIHRvIGZpbGxp bmcKCldoZW4gZW5hYmxlZCwgZmlsbGluZyB3aWxsIGNvbnNpZGVyIHRoZSBlbnRpcmUgcGFy YWdyYXBoIGF0IGEgdGltZQphbmQgdHJ5IHRvIHBsYWNlIGxpbmUgYnJlYWtzIG9wdGltYWxs eSB0byBsb29rIG1vcmUgbmVhdCBhbmQgZXZlbiwKYWNjb3JkaW5nIHRvIGEgY29zdCBmdW5j dGlvbi4gIFRoaXMgaXMgaW5zcGlyZWQgYnkgdGhlIEtudXRoLVBsYXNzCmFsZ29yaXRobS4K CiogbGlzcC90ZXh0bW9kZXMvZmlsbC5lbAooYmFsYW5jZWQtZmlsbC1tb2RlKQooYmFsYW5j ZWQtZmlsbC13b3JkLWxpbWl0KQooYmFsYW5jZWQtZmlsbC1tYXJnaW4td2lkdGgpCihiYWxh bmNlZC1maWxsLXJ1bnQtd2lkdGgpCihiYWxhbmNlZC1maWxsLWxlbmd0aC1wZW5hbHR5KQoo YmFsYW5jZWQtZmlsbC1yYWdnZWRuZXNzLXBlbmFsdHkpCihiYWxhbmNlZC1maWxsLXNpbmds ZS1wZW5hbHR5KQooYmFsYW5jZWQtZmlsbC1icmVhay1wZW5hbHR5KTogTmV3IHZhcmlhYmxl cy4KKGJhbGFuY2VkLWZpbGwtbW9kZSk6IE5ldyBtaW5vciBtb2RlCihiYWxhbmNlZC1maWxs LS1icmVhay1saW5lcyk6IE5ldyBsaW5lIGJyZWFraW5nIGZ1bmN0aW9uLgooZmlsbC1yZWdp b24tYXMtcGFyYWdyYXBoKTogVXNlIGl0IHRvIGZpbGwgcGFyYWdyYXBocy4KCiogdGVzdC9s aXNwL3RleHRtb2Rlcy9maWxsLXRlc3RzLmVsOiBBZGQgc21va2UgdGVzdCBmb3IgaXQuCgoq IGRvYy9lbWFjcy9lbWFjcy50ZXhpIChUb3ApOgoqIGRvYy9lbWFjcy90ZXh0LnRleGkgKEZp bGxpbmcgVGV4dCk6IERvY3VtZW50IGl0LgoKKiBldGMvTkVXUzogQW5ub3VuY2UgaXQuCi0t LQogZG9jL2VtYWNzL2VtYWNzLnRleGkgICAgICAgICAgICAgIHwgICAxICsKIGRvYy9lbWFj cy90ZXh0LnRleGkgICAgICAgICAgICAgICB8ICA0NyArKysrKysKIGV0Yy9ORVdTICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgNyArCiBsaXNwL3RleHRtb2Rlcy9maWxsLmVsICAg ICAgICAgICAgfCAyNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiB0ZXN0L2xp c3AvdGV4dG1vZGVzL2ZpbGwtdGVzdHMuZWwgfCAgMjEgKysrCiA1IGZpbGVzIGNoYW5nZWQs IDMxNCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mv ZW1hY3MvZW1hY3MudGV4aSBiL2RvYy9lbWFjcy9lbWFjcy50ZXhpCmluZGV4IDcwNzFlYTQ0 ZWRkLi4xZWFjNzY4ODJlMSAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL2VtYWNzLnRleGkKKysr IGIvZG9jL2VtYWNzL2VtYWNzLnRleGkKQEAgLTYyMCw2ICs2MjAsNyBAQCBUb3AKICogRmls bCBQcmVmaXg6OiAgICAgICAgIEZpbGxpbmcgcGFyYWdyYXBocyB0aGF0IGFyZSBpbmRlbnRl ZAogICAgICAgICAgICAgICAgICAgICAgICAgICBvciBpbiBhIGNvbW1lbnQsIGV0Yy4KICog QWRhcHRpdmUgRmlsbDo6ICAgICAgIEhvdyBFbWFjcyBjYW4gZGV0ZXJtaW5lIHRoZSBmaWxs IHByZWZpeCBhdXRvbWF0aWNhbGx5LgorKiBCYWxhbmNlZCBGaWxsOjogICAgICAgQnJlYWtp bmcgbGluZXMgdG8gbG9vayBtb3JlIGV2ZW4gYW5kIG5lYXQuCiAKIE91dGxpbmUgTW9kZQog CmRpZmYgLS1naXQgYS9kb2MvZW1hY3MvdGV4dC50ZXhpIGIvZG9jL2VtYWNzL3RleHQudGV4 aQppbmRleCAxOGYyMjc0Y2ZhNi4uOGM5ZDg4ZDJjYzMgMTAwNjQ0Ci0tLSBhL2RvYy9lbWFj cy90ZXh0LnRleGkKKysrIGIvZG9jL2VtYWNzL3RleHQudGV4aQpAQCAtNDk3LDYgKzQ5Nyw3 IEBAIEZpbGxpbmcKICogRmlsbCBDb21tYW5kczo6ICBDb21tYW5kcyB0byByZWZpbGwgcGFy YWdyYXBocyBhbmQgY2VudGVyIGxpbmVzLgogKiBGaWxsIFByZWZpeDo6ICAgIEZpbGxpbmcg cGFyYWdyYXBocyB0aGF0IGFyZSBpbmRlbnRlZCBvciBpbiBhIGNvbW1lbnQsIGV0Yy4KICog QWRhcHRpdmUgRmlsbDo6ICBIb3cgRW1hY3MgY2FuIGRldGVybWluZSB0aGUgZmlsbCBwcmVm aXggYXV0b21hdGljYWxseS4KKyogQmFsYW5jZWQgRmlsbDo6ICBCcmVha2luZyBsaW5lcyB0 byBsb29rIG1vcmUgZXZlbiBhbmQgbmVhdC4KIEBlbmQgbWVudQogCiBAbm9kZSBBdXRvIEZp bGwKQEAgLTgyOCw2ICs4MjksNTIgQEAgQWRhcHRpdmUgRmlsbAogbGluZS4gIElmIGl0IHJl dHVybnMgQGNvZGV7bmlsfSwgQGNvZGV7YWRhcHRpdmUtZmlsbC1yZWdleHB9IGdldHMKIGEg Y2hhbmNlIHRvIGZpbmQgYSBwcmVmaXguCiAKK0Bub2RlIEJhbGFuY2VkIEZpbGwKK0BzdWJz ZWN0aW9uIEJhbGFuY2VkIEZpbGxpbmcKKworQGNpbmRleCBiYWxhbmNlZCBmaWxsaW5nCisg IEZpbGxpbmcgY2FuIGNvbnNpZGVyIGFuIGVudGlyZSBwYXJhZ3JhcGggYXQgYSB0aW1lIHdo ZW4gZGV0ZXJtaW5pbmcKK3doZXJlIHRvIHBsYWNlIGxpbmUgYnJlYWtzLCBhcyBhbiBhbHRl cm5hdGl2ZSB0byBqdXN0IGdyZWVkaWx5CitpbnNlcnRpbmcgYSBicmVhayBhZnRlciB0aGUg bGFzdCB3b3JkIHRoYXQgZml0cyBvbiBlYWNoIGxpbmUuCitUaGlzIG1heSBwbGFjZSBsaW5l IGJyZWFrcyBzb29uZXIgdGhhbiBzdHJpY3RseSBuZWNlc3NhcnkgaWYgaXQKK3dpbGwgaGVs cCB0byBiYWxhbmNlIG91dCB0aGUgbGVuZ3RocyBvZiBsYXRlciBsaW5lcy4KKworICBGb3Ig ZXhhbXBsZSwgd2hlbiBAY29kZXtmaWxsLWNvbHVtbn0gaXMgMjAsIGNvbXBhcmUgdGhlIHJl c3VsdHMKK29mIGxpbmUgYnJlYWtpbmcgdXNpbmcgdGhlIGdyZWVkeSBmaWxsIGFsZ29yaXRo bSAobGVmdCkgdmVyc3VzIHRoZQorYmFsYW5jZWQgZmlsbCBhbGdvcml0aG0gKHJpZ2h0KToK KworQHNtYWxsZXhhbXBsZQorLS0tLS0tIGdyZWVkeSAtLS0tLS0gICAgLS0tLS0gYmFsYW5j ZWQgLS0tLS0KK0hhcmQgYW5kIHNoYXJwIGFzICAgICAgIEhhcmQgYW5kIHNoYXJwIGFzCitm bGludCwgZnJvbSB3aGljaCBubyAgICBmbGludCwgZnJvbSB3aGljaAorc3RlZWwgaGFkIGV2 ZXIgICAgICAgICAgbm8gc3RlZWwgaGFkIGV2ZXIKK3N0cnVjayBvdXQgZ2VuZXJvdXMgICAg IHN0cnVjayBvdXQgZ2VuZXJvdXMKK2ZpcmU7IHNlY3JldCwgYW5kICAgICAgIGZpcmU7IHNl Y3JldCwgYW5kCitzZWxmLWNvbnRhaW5lZCwgYW5kICAgICBzZWxmLWNvbnRhaW5lZCwKK3Nv bGl0YXJ5IGFzIGFuICAgICAgICAgIGFuZCBzb2xpdGFyeSBhcworb3lzdGVyLiAgICAgICAg ICAgICAgICAgYW4gb3lzdGVyLgorLS0tLS0tIGdyZWVkeSAtLS0tLS0gICAgLS0tLS0gYmFs YW5jZWQgLS0tLS0KK0BlbmQgc21hbGxleGFtcGxlCisKKyAgVGhlIGJhbGFuY2VkIGZpbGwg YWxnb3JpdGhtIHByb2R1Y2VzIHNsaWdodGx5IHNob3J0ZXIgYnV0IG1vcmUgZXZlbgorbGlu ZSBsZW5ndGhzLCByZXN1bHRpbmcgaW4gYSBsZXNzIHJhZ2dlZCByaWdodCBtYXJnaW4uICBJ dCBhbHNvIGF2b2lkcworbGVhdmluZyBhIHNpbmdsZSB3b3JkIGFsb25lIG9uIHRoZSBsYXN0 IGxpbmUuCisKK0BmaW5kZXggYmFsYW5jZWQtZmlsbC1tb2RlCitAdmluZGV4IGJhbGFuY2Vk LWZpbGwtbW9kZQorQHZpbmRleCBiYWxhbmNlZC1maWxsLXdvcmQtbGltaXQKKyAgWW91IG1h eSBlbmFibGUgdGhlIGJhbGFuY2VkIGZpbGwgYWxnb3JpdGhtIHdpdGggQmFsYW5jZWQgRmls bCBtb2RlLAord2hpY2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4gIFRvIHRvZ2dsZSBpdCBn bG9iYWxseSwgdHlwZSBAa2Jke00teAorYmFsYW5jZWQtZmlsbC1tb2RlfS4gIE5vdGUgdGhh dCBldmVuIHdoZW4gaXQgaXMgZW5hYmxlZCwgcGFyYWdyYXBocword2l0aCBtb3JlIHRoYW4g QGNvZGV7YmFsYW5jZWQtZmlsbC13b3JkLWxpbWl0fSB3b3JkcyB3aWxsIGZhbGwgYmFjawor dG8gdGhlIGZhc3RlciBncmVlZHkgZmlsbGluZyBhbGdvcml0aG0gZm9yIHNwZWVkLgorCisg IFRvIGRlY2lkZSB3aGVyZSB0byBwbGFjZSBsaW5lIGJyZWFrcywgdGhlIGJhbGFuY2VkIGZp bGwgYWxnb3JpdGhtCitzdW1zIHVwIGEgc2V0IG9mIHBlbmFsdGllcyB0byBjb21wdXRlIGEg c2NvcmUgZm9yIGhvdyBwb29yIHRoZSBsYXlvdXQKK29mIGEgcGFyYWdyYXBoIGlzIGFuZCB0 aGVuIGNob29zZXMgdGhlIHBsYWNlbWVudCB3aXRoIHRoZSBsb3dlc3QKK3Njb3JlLiAgVHlw ZSBAY29kZXtNLXggY3VzdG9taXplLWdyb3VwIFJFVCBiYWxhbmNlZC1maWxsIFJFVH0gdG8K K3NlZSBvcHRpb25zIGZvciBmaW5lLXR1bmluZyB0aGUgc2NvcmluZyBwZW5hbHRpZXMgdG8g dGFzdGUuCisKIEBub2RlIENhc2UKIEBzZWN0aW9uIENhc2UgQ29udmVyc2lvbiBDb21tYW5k cwogQGNpbmRleCBjYXNlIGNvbnZlcnNpb24KZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRj L05FV1MKaW5kZXggZDNlYWZhYWRmMTkuLjE1YWZlZGRlOGUxIDEwMDY0NAotLS0gYS9ldGMv TkVXUworKysgYi9ldGMvTkVXUwpAQCAtNTksNiArNTksMTMgQEAgVGhpcyBhbGxvd3MgdGhl IHVzZXIgdG8gY3VzdG9taXplIHRoZSBwcm9tcHQgdGhhdCBpcyBhcHBlbmRlZCBieQogDAog KiBFZGl0aW5nIENoYW5nZXMgaW4gRW1hY3MgMzAuMQogCisqKiBGaWxsaW5nIGNhbiBub3cg dHJ5IHRvIGJyZWFrIGxpbmVzIGV2ZW5seS4KK1RoZSBuZXcgJ2JhbGFuY2VkLWZpbGwtbW9k ZScgbWlub3IgbW9kZSBjYW4gYmUgZW5hYmxlZCB0byBtYWtlIGZpbGxpbmcKK3RyeSB0byBv cHRpbWFsbHkgY2hvb3NlIGEgc2V0IG9mIGxpbmUgYnJlYWtzIHRvIG1ha2UgYSBwYXJhZ3Jh cGgKK2xvb2sgdGlkaWVyIGJ5IGNvbnNpZGVyaW5nIHRoZSBlbnRpcmUgcGFyYWdyYXBoIGF0 IGEgdGltZS4gIFRoaXMgaXMKK2luc3BpcmVkIGJ5IHRoZSBLbnV0aC1QbGFzcyBhbGdvcml0 aG0uICBTZWUgdGhlIGN1c3RvbWl6YXRpb24gZ3JvdXAKKydiYWxhbmNlZC1maWxsJyBmb3Ig b3B0aW9ucyBmb3IgZmluZS10dW5pbmcgdG8gdGFzdGUuCisKIC0tLQogKiogT24gWCwgRW1h Y3Mgbm93IHN1cHBvcnRzIGlucHV0IG1ldGhvZHMgd2hpY2ggcGVyZm9ybSAic3RyaW5nIGNv bnZlcnNpb24iLgogVGhpcyBtZWFucyBhbiBpbnB1dCBtZXRob2QgY2FuIG5vdyBhc2sgRW1h Y3MgdG8gZGVsZXRlIHRleHQKZGlmZiAtLWdpdCBhL2xpc3AvdGV4dG1vZGVzL2ZpbGwuZWwg Yi9saXNwL3RleHRtb2Rlcy9maWxsLmVsCmluZGV4IDJmZGUyZmY2YzRkLi5hNzk0OTY1MmRk MyAxMDA2NDQKLS0tIGEvbGlzcC90ZXh0bW9kZXMvZmlsbC5lbAorKysgYi9saXNwL3RleHRt b2Rlcy9maWxsLmVsCkBAIC00MiwxMiArNDIsMTQgQEAgZmlsbC1pbmRpdmlkdWFsLXZhcnlp bmctaW5kZW50CiBUaGF0IG1vZGUgY2FuIGhhbmRsZSBwYXJhZ3JhcGhzIHdpdGggZXh0cmEg aW5kZW50YXRpb24gb24gdGhlIGZpcnN0IGxpbmUsCiBidXQgaXQgcmVxdWlyZXMgc2VwYXJh dG9yIGxpbmVzIGJldHdlZW4gcGFyYWdyYXBocy4KIEEgdmFsdWUgb2YgbmlsIG1lYW5zIHRo YXQgYW55IGNoYW5nZSBpbiBpbmRlbnRhdGlvbiBzdGFydHMgYSBuZXcgcGFyYWdyYXBoLiIK LSAgOnR5cGUgJ2Jvb2xlYW4pCisgIDp0eXBlICdib29sZWFuCisgIDpncm91cCAnZmlsbCkK IAogKGRlZmN1c3RvbSBjb2xvbi1kb3VibGUtc3BhY2UgbmlsCiAgICJOb24tbmlsIG1lYW5z IHB1dCB0d28gc3BhY2VzIGFmdGVyIGEgY29sb24gd2hlbiBmaWxsaW5nLiIKICAgOnR5cGUg J2Jvb2xlYW4KLSAgOnNhZmUgIydib29sZWFucCkKKyAgOnNhZmUgIydib29sZWFucAorICA6 Z3JvdXAgJ2ZpbGwpCiAKIChkZWZjdXN0b20gZmlsbC1zZXBhcmF0ZS1oZXRlcm9nZW5lb3Vz LXdvcmRzLXdpdGgtc3BhY2UgbmlsCiAgICJOb24tbmlsIG1lYW5zIHRvIHVzZSBhIHNwYWNl IHRvIHNlcGFyYXRlIHdvcmRzIG9mIGEgZGlmZmVyZW50IGtpbmQuCkBAIC01OCw3ICs2MCw4 IEBAIGZpbGwtc2VwYXJhdGUtaGV0ZXJvZ2VuZW91cy13b3Jkcy13aXRoLXNwYWNlCiBpbiBg ZmlsbC1ub3NwYWNlLWJldHdlZW4td29yZHMtdGFibGUnIGZvciB0aGUgY2hhcmFjdGVycyBi ZWZvcmUgYW5kCiBhZnRlciB0aGUgbmV3bGluZS4iCiAgIDp0eXBlICdib29sZWFuCi0gIDp2 ZXJzaW9uICIyNi4xIikKKyAgOnZlcnNpb24gIjI2LjEiCisgIDpncm91cCAnZmlsbCkKIAog KGRlZnZhciBmaWxsLXBhcmFncmFwaC1mdW5jdGlvbiBuaWwKICAgIk1vZGUtc3BlY2lmaWMg ZnVuY3Rpb24gdG8gZmlsbCBhIHBhcmFncmFwaCwgb3IgbmlsIGlmIHRoZXJlIGlzIG5vbmUu CkBAIC03Niw3ICs3OSw4IEBAIGVuYWJsZS1raW5zb2t1CiBLaW5zb2t1IHByb2Nlc3Npbmcg aXMgZGVzaWduZWQgdG8gcHJldmVudCBjZXJ0YWluIGNoYXJhY3RlcnMgZnJvbSBiZWluZwog cGxhY2VkIGF0IHRoZSBiZWdpbm5pbmcgb3IgZW5kIG9mIGEgbGluZSBieSBmaWxsaW5nLgog U2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIGBraW5zb2t1JyBmb3IgbW9yZSBpbmZvcm1hdGlv bi4iCi0gIDp0eXBlICdib29sZWFuKQorICA6dHlwZSAnYm9vbGVhbgorICA6Z3JvdXAgJ2Zp bGwpCiAKIChkZWZ1biBzZXQtZmlsbC1wcmVmaXggKCkKICAgIlNldCB0aGUgZmlsbCBwcmVm aXggdG8gdGhlIGN1cnJlbnQgbGluZSB1cCB0byBwb2ludC4KQEAgLTk2LDcgKzEwMCw4IEBA IHNldC1maWxsLXByZWZpeAogCiAoZGVmY3VzdG9tIGFkYXB0aXZlLWZpbGwtbW9kZSB0CiAg ICJOb24tbmlsIG1lYW5zIGRldGVybWluZSBhIHBhcmFncmFwaCdzIGZpbGwgcHJlZml4IGZy b20gaXRzIHRleHQuIgotICA6dHlwZSAnYm9vbGVhbikKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAg Omdyb3VwICdmaWxsKQogCiAoZGVmY3VzdG9tIGFkYXB0aXZlLWZpbGwtcmVnZXhwCiAgIDs7 IEFkZGVkIGAhJyBmb3IgZG94eWdlbiBjb21tZW50cyBzdGFydGluZyB3aXRoIGAvLyEnIG9y IGAvKiEnLgpAQCAtMTEyLDcgKzExNyw4IEBAIGFkYXB0aXZlLWZpbGwtcmVnZXhwCiBJZiB0 aGUgcGFyYWdyYXBoIGhhcyBqdXN0IG9uZSBsaW5lLCB0aGUgaW5kZW50YXRpb24gaXMgdGFr ZW4gZnJvbSB0aGF0CiBsaW5lLCBidXQgaW4gdGhhdCBjYXNlIGBhZGFwdGl2ZS1maWxsLWZp cnN0LWxpbmUtcmVnZXhwJyBhbHNvIHBsYXlzCiBhIHJvbGUuIgotICA6dHlwZSAncmVnZXhw KQorICA6dHlwZSAncmVnZXhwCisgIDpncm91cCAnZmlsbCkKIAogKGRlZmN1c3RvbSBhZGFw dGl2ZS1maWxsLWZpcnN0LWxpbmUtcmVnZXhwIChwdXJlY29weSAiXFxgWyBcdF0qXFwnIikK ICAgIlJlZ2V4cCBzcGVjaWZ5aW5nIHdoZXRoZXIgdG8gc2V0IGZpbGwgcHJlZml4IGZyb20g YSBvbmUtbGluZSBwYXJhZ3JhcGguCkBAIC0xMjQsMTMgKzEzMCw5NSBAQCBhZGFwdGl2ZS1m aWxsLWZpcnN0LWxpbmUtcmVnZXhwCiAKIEhvd2V2ZXIsIHdlIG5ldmVyIHVzZSBhIHByZWZp eCBmcm9tIGEgb25lLWxpbmUgcGFyYWdyYXBoCiBpZiBpdCB3b3VsZCBhY3QgYXMgYSBwYXJh Z3JhcGgtc3RhcnRlciBvbiB0aGUgc2Vjb25kIGxpbmUuIgotICA6dHlwZSAncmVnZXhwKQor ICA6dHlwZSAncmVnZXhwCisgIDpncm91cCAnZmlsbCkKIAogKGRlZmN1c3RvbSBhZGFwdGl2 ZS1maWxsLWZ1bmN0aW9uICMnaWdub3JlCiAgICJGdW5jdGlvbiB0byBjYWxsIHRvIGNob29z ZSBhIGZpbGwgcHJlZml4IGZvciBhIHBhcmFncmFwaC4KIEEgbmlsIHJldHVybiB2YWx1ZSBt ZWFucyB0aGUgZnVuY3Rpb24gaGFzIG5vdCBkZXRlcm1pbmVkIHRoZSBmaWxsIHByZWZpeC4i CiAgIDp2ZXJzaW9uICIyNy4xIgotICA6dHlwZSAnZnVuY3Rpb24pCisgIDp0eXBlICdmdW5j dGlvbgorICA6Z3JvdXAgJ2ZpbGwpCisKKyhkZWZncm91cCBiYWxhbmNlZC1maWxsIG5pbAor ICAiQnJlYWtpbmcgbGluZXMgdG8gbG9vayBtb3JlIGV2ZW4gYW5kIG5lYXQuIgorICA6bGlu ayAnKGN1c3RvbS1tYW51YWwgIihlbWFjcykgQmFsYW5jZWQgRmlsbCIpCisgIDpncm91cCAn ZmlsbCkKKworKGRlZmluZS1taW5vci1tb2RlIGJhbGFuY2VkLWZpbGwtbW9kZQorICAiVG9n Z2xlIHdoZXRoZXIgZmlsbGluZyBzaG91bGQgdHJ5IHRvIG5lYXRseSBiYWxhbmNlIGxpbmUg bGVuZ3Rocy4KKworV2hlbiBlbmFibGVkLCBmaWxsaW5nIHdpbGwgdHJ5IHRvIG9wdGltYWxs eSBjaG9vc2UgYSBzZXQgb2YgbGluZQorYnJlYWtzIHRvIG1ha2UgYSBwYXJhZ3JhcGggbG9v ayB0aWRpZXIgYnkgY29uc2lkZXJpbmcgdGhlIGVudGlyZQorcGFyYWdyYXBoIGF0IGEgdGlt ZS4gIFRoaXMgbWF5IHBsYWNlIGxpbmUgYnJlYWtzIHNvb25lciB0aGFuCituZWNlc3Nhcnkg aWYgaXQgaW1wcm92ZXMgbGF0ZXIgbGluZXMuICBXaGVuIGRpc2FibGVkLCBmaWxsaW5nCit1 c2VzIHRoZSB0cmFkaXRpb25hbCBncmVlZHkgbGluZSBicmVha2luZyBhbGdvcml0aG0uCisK K1NlZSBJbmZvIG5vZGUgYChlbWFjcykgQmFsYW5jZWQgRmlsbCcgZm9yIG1vcmUgZGV0YWls cy4iCisgIDpnbG9iYWwgdAorICA6dmVyc2lvbiAiMzAuMSIKKyAgOnR5cGUgJ2Jvb2xlYW4K KyAgOmdyb3VwICdiYWxhbmNlZC1maWxsKQorCisoZGVmY3VzdG9tIGJhbGFuY2VkLWZpbGwt d29yZC1saW1pdCA1MDAKKyAgIkxhcmdlc3QgcGFyYWdyYXBoLCBpbiB3b3JkcywgdG8gYXBw bHkgYmFsYW5jZWQgZmlsbGluZyB0by4KK0lmIHRoZSBwYXJhZ3JhcGggZXhjZWVkcyB0aGlz IGxpbWl0LCBiYWxhbmNlZCBmaWxsaW5nIHdpbGwgZmFsbAorYmFjayB0byB0aGUgc3RhbmRh cmQgZ3JlZWR5IGZpbGxpbmcgdG8ga2VlcCBmaWxsaW5nIHF1aWNrLiIKKyAgOnZlcnNpb24g IjMwLjEiCisgIDp0eXBlICdpbnRlZ2VyCisgIDpncm91cCAnYmFsYW5jZWQtZmlsbCkKKwor KGRlZmN1c3RvbSBiYWxhbmNlZC1maWxsLW1hcmdpbi13aWR0aCAzCisgICJFeHRyYSBtYXJn aW4sIGluIGNvbHVtbnMsIGZvciBiYWxhbmNlZCBmaWxsaW5nIHRvIHRyeSB0byBicmVhayBs aW5lcyBhdC4KK1RhcmdldHRpbmcgYSBsaW5lIGxlbmd0aCBzbGlnaHRseSBzaG9ydCBvZiB0 aGUgYGZpbGwtY29sdW1uJyBidXQKK2JlaW5nIGFsbG93ZWQgdG8gZ28gYWxsIHRoZSB3YXkg dXAgdG8gdGhlIGBmaWxsLWNvbHVtbicgY2FuIGhlbHAKK2JhbGFuY2VkIGZpbGxpbmcgdG8g bWFrZSB0aGUgbGluZXMgbW9yZSBldmVuIGluIGxlbmd0aC4iCisgIDp2ZXJzaW9uICIzMC4x IgorICA6dHlwZSAnaW50ZWdlcgorICA6Z3JvdXAgJ2JhbGFuY2VkLWZpbGwpCisKKyhkZWZj dXN0b20gYmFsYW5jZWQtZmlsbC1ydW50LXdpZHRoIDEwCisgICJNaW5pbXVtIHdpZHRoLCBp biBjb2x1bW5zLCBhbGxvd2VkIGZvciB0aGUgbGFzdCBsaW5lcyBvZiBwYXJhZ3JhcGhzLgor SWYgdGhpcyBpcyBzZXQgdG8gYSBoaWdoIG51bWJlciwgdGhlbiB0aGUgYmFsYW5jZWQgZmls bGluZyB3aWxsCit0cnkgdG8gbWFrZSB0aGUgbGFzdCBsaW5lcyBhcyBmdWxsIGFzIGFsbCB0 aGUgb3RoZXJzLiIKKyAgOnZlcnNpb24gIjMwLjEiCisgIDp0eXBlICdpbnRlZ2VyCisgIDpn cm91cCAnYmFsYW5jZWQtZmlsbCkKKworKGRlZmN1c3RvbSBiYWxhbmNlZC1maWxsLWxlbmd0 aC1wZW5hbHR5IDMKKyAgIk1haW4gdHVuaW5nIG9wdGlvbiBmb3IgdGhlIGJhbGFuY2VkIGZp bGwgYWxnb3JpdGhtLgorSGlnaGVyIHZhbHVlcyBjYXVzZSBiYWxhbmNlZCBmaWxsaW5nIHRv IHByaW9yaXRpemUgKHJlbGF0aXZlCit0byBvdGhlciBwZW5hbHRpZXMpIG1ha2luZyBlYWNo IGxpbmUgZXhhY3RseSBtYXRjaCB0aGUgdGFyZ2V0CitsZW5ndGguICBUeXBpY2FsbHkgdGhp cyBpcyBzZXQgYmV0d2VlbiAyIGFuZCAzLiIKKzp2ZXJzaW9uICIzMC4xIgorICA6dHlwZSAn aW50ZWdlcgorICA6Z3JvdXAgJ2JhbGFuY2VkLWZpbGwpCisKKyhkZWZjdXN0b20gYmFsYW5j ZWQtZmlsbC1yYWdnZWRuZXNzLXBlbmFsdHkgNDAKKyAgIlBlbmFsdHkgYWRkZWQgZm9yIGRp ZmZlcmVuY2UgaW4gbGVuZ3RoIGJldHdlZW4gYWRqYWNlbnQgbGluZXMuCitIaWdoZXIgdmFs dWVzIG1ha2UgYmFsYW5jZWQgZmlsbGluZyBwcmlvcml0aXplIChyZWxhdGl2ZSB0bworb3Ro ZXIgcGVuYWx0aWVzKSByZWR1Y2luZyByYWdnZWRuZXNzIGFuZCBrZWVwaW5nIGFsbCBsaW5l cyBhcworZXZlbiBhcyBwb3NzaWJsZSBpbiBsZW5ndGguIgorICA6dmVyc2lvbiAiMzAuMSIK KyAgOnR5cGUgJ2ludGVnZXIKKyAgOmdyb3VwICdiYWxhbmNlZC1maWxsKQorCisoZGVmY3Vz dG9tIGJhbGFuY2VkLWZpbGwtc2luZ2xlLXBlbmFsdHkgMTUwCisgICJQZW5hbHR5IGFkZGVk IGZvciBsZWF2aW5nIGEgd29yZCBvZiBhIHNlbnRlbmNlIGFsb25lIG9uIGEgbGluZS4KK0hp Z2hlciB2YWx1ZXMgbWFrZSBiYWxhbmNlZCBmaWxsaW5nIHByaW9yaXRpemUgKHJlbGF0aXZl IHRvCitvdGhlciBwZW5hbHRpZXMpIGF2b2lkaW5nIGxpbmUgYnJlYWtzIHJpZ2h0IGFmdGVy IHRoZSBmaXJzdAord29yZCBvZiBhIHNlbnRlbmNlIG9yIGJlZm9yZSB0aGUgbGFzdCB3b3Jk IG9mIGEgc2VudGVuY2UuIgorICA6dmVyc2lvbiAiMzAuMSIKKyAgOnR5cGUgJ2ludGVnZXIK KyAgOmdyb3VwICdiYWxhbmNlZC1maWxsKQorCisoZGVmY3VzdG9tIGJhbGFuY2VkLWZpbGwt YnJlYWstcGVuYWx0eSA1MAorICAiUGVuYWx0eSBhZGRlZCBmb3IgZWFjaCBsaW5lIGJyZWFr IGluc2VydGVkLgorSGlnaGVyIHZhbHVlcyBtYWtlIGJhbGFuY2VkIGZpbGxpbmcgcHJpb3Jp dGl6ZSAocmVsYXRpdmUgdG8gb3RoZXIKK3BlbmFsdGllcykgbWFraW5nIGEgcGFyYWdyYXBo IGZpdCBpbiBhcyBmZXcgbGluZXMgYXMgcG9zc2libGUuIgorICA6dmVyc2lvbiAiMzAuMSIK KyAgOnR5cGUgJ2ludGVnZXIKKyAgOmdyb3VwICdiYWxhbmNlZC1maWxsKQogCiAoZGVmdmFy IGZpbGwtaW5kZW50LWFjY29yZGluZy10by1tb2RlIG5pbCA7U2NyZXdzIHVwIENDLW1vZGUn cyBmaWxsaW5nIHRyaWNrcy4KICAgIldoZXRoZXIgb3Igbm90IGZpbGxpbmcgc2hvdWxkIHRy eSB0byB1c2UgdGhlIG1ham9yIG1vZGUncyBpbmRlbnRhdGlvbi4iKQpAQCAtMzc0LDExICs0 NjIsMTMgQEAgZmlsbC1ub2JyZWFrLXByZWRpY2F0ZQogdGhlIGxpbmUgdGhlcmUuIgogICA6 dHlwZSAnaG9vawogICA6b3B0aW9ucyAnKGZpbGwtZnJlbmNoLW5vYnJlYWstcCBmaWxsLXNp bmdsZS13b3JkLW5vYnJlYWstcAotICAgICAgICAgICAgIGZpbGwtc2luZ2xlLWNoYXItbm9i cmVhay1wKSkKKyAgICAgICAgICAgICBmaWxsLXNpbmdsZS1jaGFyLW5vYnJlYWstcCkKKyAg Omdyb3VwICdmaWxsKQogCiAoZGVmY3VzdG9tIGZpbGwtbm9icmVhay1pbnZpc2libGUgbmls CiAgICJOb24tbmlsIG1lYW5zIHRoYXQgZmlsbCBjb21tYW5kcyBkbyBub3QgYnJlYWsgbGlu ZXMgaW4gaW52aXNpYmxlIHRleHQuIgotICA6dHlwZSAnYm9vbGVhbikKKyAgOnR5cGUgJ2Jv b2xlYW4KKyAgOmdyb3VwICdmaWxsKQogCiAoZGVmdW4gZmlsbC1ub2JyZWFrLXAgKCkKICAg IlJldHVybiBuaWwgaWYgYnJlYWtpbmcgdGhlIGxpbmUgYXQgcG9pbnQgaXMgYWxsb3dlZC4K QEAgLTY0NCw2ICs3MzQsMTM3IEBAIGZpbGwtaW5kZW50LXRvLWxlZnQtbWFyZ2luCiAgICAg KGluZGVudC1saW5lLXRvIChjdXJyZW50LWxlZnQtbWFyZ2luKSkKICAgICAocHV0LXRleHQt cHJvcGVydHkgYmVnIChwb2ludCkgJ2ZhY2UgJ2RlZmF1bHQpKSkKIAorKGRlZnVuIGJhbGFu Y2VkLWZpbGwtLWJyZWFrLWxpbmVzIChmcm9tIHRvIGp1c3RpZnkpCisgIDs7IChMaW5lIGJy ZWFraW5nIGltcGxlbWVudGF0aW9uIGluc3BpcmVkIGJ5IEtudXRoLVBsYXNzLikKKworICA7 OyBBYm9ydCAoYW5kIGZhbGwgYmFjayB0byBncmVlZHkgYWxnb3JpdGhtKSBpZiB3ZSBoYXZl IHRvbyBtYW55IHdvcmRzLgorICA7OyBUaGUgYWxnb3JpdGhtIGJlbG93IGlzIHdvcnN0LWNh c2UgcXVhZHJhdGljICh0aG91Z2ggdXN1YWxseSBub3QpLgorICA7OyBBc3ltcHRvdGljYWxs eSBmYXN0ZXIgYWxnb3JpdGhtcyBleGlzdCwgYnV0IGFyZSBtb3JlIGNvbXBsaWNhdGVkLgor ICAoaWYgKD4gKGNvdW50LXdvcmRzLXJlZ2lvbiBmcm9tIHRvKSBiYWxhbmNlZC1maWxsLXdv cmQtbGltaXQpCisgICAgICBuaWwKKworICAgIDs7IEJ1aWxkIGEgdGFibGUgb2YgdmlzaWJs ZSB3b3JkIHdpZHRocywgd2l0aCBhbmQgd2l0aG91dCBhbnkgcHJlY2VkaW5nCisgICAgOzsg c3BhY2VzLCBhbG9uZyB3aXRoIHdoZXRoZXIgdGhlIHdvcmQgc3RhcnRzIGEgbmV3IHNlbnRl bmNlLiAgV2UgZ28gYnkKKyAgICA7OyBjb2x1bW5zIGFuZCBub3QgY2hhcnMgdG8gaGFuZGxl IGludmlzaWJsZSB0ZXh0IChlc3BlY2lhbGx5IGludmlzaWJsZQorICAgIDs7IHNwYWNlcyks IGV0Yy4KKyAgICAobGV0ICgod29yZHMgJygpKQorICAgICAgICAgIChjb3VudCAwKQorICAg ICAgICAgIChzZW50ZW5jZS1yZWdleHAgKHNlbnRlbmNlLWVuZCkpKQorICAgICAgKGdvdG8t Y2hhciB0bykKKyAgICAgICh3aGlsZSAoPiAocG9pbnQpIGZyb20pCisgICAgICAgIChsZXQq ICgocHJldmlvdXMgKHBvaW50KSkKKyAgICAgICAgICAgICAgIChlbmQgKGN1cnJlbnQtY29s dW1uKSkKKyAgICAgICAgICAgICAgIChuZXh0IChwcm9nbiAoZmlsbC1tb3ZlLXRvLWJyZWFr LXBvaW50IGZyb20pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgTmVlZGVkIGZv ciBtb3ZpbmcgcGFzdCBzb21lIE9yZy1tb2RlIGxpbmtzCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcdCIpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHBvaW50KSkpCisgICAgICAgICAgICAgICAod2l0aC1zcGFjZSAoY3Vy cmVudC1jb2x1bW4pKQorICAgICAgICAgICAgICAgKHdpdGhvdXQtc3BhY2UgKHByb2duIChz a2lwLWNoYXJzLWZvcndhcmQgIiBcdCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkpCisgICAgICAgICAgICAgICAobmV3LXNlbnRl bmNlIChsb29raW5nLWJhY2sgc2VudGVuY2UtcmVnZXhwIGZyb20pKSkKKyAgICAgICAgICAo Z290by1jaGFyIG5leHQpCisgICAgICAgICAgOzsgSWYgcG9pbnQgZGlkbid0IG1vdmUsIHdl J3JlIGFmdGVyIHRoZSBmaXJzdCB3b3JkIG9mIHRoZSBsaW5lLgorICAgICAgICAgICh3aGVu ICg8PSBwcmV2aW91cyBuZXh0KQorICAgICAgICAgICAgKGdvdG8tY2hhciBmcm9tKQorICAg ICAgICAgICAgKHNldHEgd2l0aC1zcGFjZSAoY3VycmVudC1jb2x1bW4pCisgICAgICAgICAg ICAgICAgICB3aXRob3V0LXNwYWNlIChjdXJyZW50LWNvbHVtbikpKQorICAgICAgICAgIDs7 IE1lcmdlIGludG8gcHJldmlvdXMgZW50cnkgd2hlbiBtb3ZpbmcgcGFzdCBpbnZpc2libGUg dGV4dC4KKyAgICAgICAgICAoaWYgKD0gZW5kIHdpdGhvdXQtc3BhY2UpCisgICAgICAgICAg ICAgIChzZXRxIGVuZCAoKyBlbmQgKG9yIChjYXIgKHBvcCB3b3JkcykpIDApKSkpCisgICAg ICAgICAgKHB1c2ggKGxpc3QgKC0gZW5kIHdpdGgtc3BhY2UpICgtIGVuZCB3aXRob3V0LXNw YWNlKSBuZXctc2VudGVuY2UpCisgICAgICAgICAgICAgICAgd29yZHMpKSkKKyAgICAgIChz ZXRxIHdvcmRzICh2Y29uY2F0IHdvcmRzKSkKKyAgICAgIChzZXRxIGNvdW50IChsZW5ndGgg d29yZHMpKQorCisgICAgICA7OyBDb25zaWRlciBlYWNoIHdvcmQgYXMgYSBjYW5kaWRhdGUg dG8gc3RhcnQgYSBsaW5lLCBhbmQgYnVpbGQgYQorICAgICAgOzsgdGFibGUgb2Ygd2hpY2gg d29yZCB0aGUgcHJldmlvdXMgbGluZSB3b3VsZCBiZSBiZXN0IHRvIHN0YXJ0IG9uCisgICAg ICA7OyBhbmQgdGhlIHdpZHRoIG9mIHRoZSBwcmV2aW91cyBsaW5lLiAgVXNlIGR5bmFtaWMg cHJvZ3JhbW1pbmcgdG8KKyAgICAgIDs7IG1pbmltaXplIGEgY29zdCBmdW5jdGlvbi4KKyAg ICAgIChsZXQgKChzdGFydHMgKG1ha2UtdmVjdG9yICgxKyBjb3VudCkgMCkpCisgICAgICAg ICAgICAod2lkdGhzIChtYWtlLXZlY3RvciAoMSsgY291bnQpIDApKSkKKyAgICAgICAgKGxl dCogKChzdGFydCAwKQorICAgICAgICAgICAgICAgKHJvb20gKC0gZmlsbC1jb2x1bW4gKGN1 cnJlbnQtY29sdW1uKSkpCisgICAgICAgICAgICAgICAoY29zdHMgKG1ha2UtdmVjdG9yICgx KyBjb3VudCkgbW9zdC1wb3NpdGl2ZS1maXhudW0pKQorICAgICAgICAgICAgICAgKHJhZ3Mg KG1ha2UtdmVjdG9yICgxKyBjb3VudCkgYmFsYW5jZWQtZmlsbC1tYXJnaW4td2lkdGgpKSkK KyAgICAgICAgICAoYXNldCBjb3N0cyAwIDApCisgICAgICAgICAgKHdoaWxlICg8IHN0YXJ0 IGNvdW50KQorICAgICAgICAgICAgOzsgVGhlIHJvb20gZm9yIHRoZSBmaXJzdCBsaW5lIG1h eSBiZSBkaWZmZXJlbnQgdGhhbiB0aGUgcmVzdC4KKyAgICAgICAgICAgIChpZiAoPSBzdGFy dCAxKQorICAgICAgICAgICAgICAgIChzZXRxIHJvb20gKC0gZmlsbC1jb2x1bW4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctd2lkdGggKG9yIGZpbGwtcHJlZml4 ICIiKSkpKSkKKyAgICAgICAgICAgIDs7IENvbnNpZGVyIGVhY2ggd29yZCB0aGlzIG5ldyBs aW5lIG1pZ2h0IGVuZCBvbi4gIERvbid0IHRlc3QKKyAgICAgICAgICAgIDs7IHdpZHRoIGFn YWluc3Qgcm9vbSB5ZXQ7IHdlIHdhbnQgYXQgbGVhc3Qgb25lIHdvcmQgcGVyIGxpbmUsCisg ICAgICAgICAgICA7OyBzbyB3ZSBuZWVkIGF0IGxlYXN0IG9uZSBpdGVyYXRpb24uCisgICAg ICAgICAgICAobGV0ICgoZW5kIHN0YXJ0KQorICAgICAgICAgICAgICAgICAgKHdpZHRoIDAp KQorICAgICAgICAgICAgICAod2hpbGUgKDwgZW5kIGNvdW50KQorICAgICAgICAgICAgICAg IDs7IERvbid0IGFkZCB0aGUgc3BhY2UgYmVmb3JlIHRoZSBmaXJzdCB3b3JkIHRvIHRoZSB3 aWR0aC4KKyAgICAgICAgICAgICAgICAoc2V0cSB3aWR0aCAoKyB3aWR0aCAobnRoIChpZiAo PSBlbmQgc3RhcnQpIDEgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChhcmVmIHdvcmRzIGVuZCkpKSkKKyAgICAgICAgICAgICAgICA7OyBPdXIgY29z dCBmdW5jdGlvbiBpcyB0aGUgc3VtIG9mIHRoZSBiZXN0IHRvdGFsIGNvc3QgZm9yCisgICAg ICAgICAgICAgICAgOzsgYWxsIHRoZSBsaW5lcyBwcmVjZWRpbmcgdGhlIHN0YXJ0IG9mIHRo aXMgb25lLAorICAgICAgICAgICAgICAgIChsZXQgKChjb3N0ICgrIChhcmVmIGNvc3RzIHN0 YXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHBsdXMgdGhlIGRpc3Rh bmNlIGZyb20gdGhlIG1hcmdpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChl eHB0IChhYnMgKC0gcm9vbSBiYWxhbmNlZC1maWxsLW1hcmdpbi13aWR0aAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGV4cG9uZW50aWF0ZWQgaWYgbm90IHRo ZSBsYXN0IGxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYg KG9yICgvPSAoMSsgZW5kKSBjb3VudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDs7IG9yIGlmIHdlJ2QgbGVhdmUgYSBydW50LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDwgd2lkdGggYmFsYW5jZWQt ZmlsbC1ydW50LXdpZHRoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYmFsYW5jZWQtZmlsbC1sZW5ndGgtcGVuYWx0eSAxKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA7OyBwbHVzIGEgcGVuYWx0eSBmb3IgYW4gdW5ldmVuIHJpZ2h0 IHNpZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAoYWJzICgtIHJvb20g d2lkdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmVm IHJhZ3Mgc3RhcnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBp ZiBub3QgdGhlIGxhc3QgbGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChpZiAob3IgKC89ICgxKyBlbmQpIGNvdW50KQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOzsgdW5sZXNzIHRoZSBsYXN0IGxpbmUgaXMgbG9uZ2VyLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDwgKC0gcm9vbSB3 aWR0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChh cmVmIHJhZ3Mgc3RhcnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYmFsYW5jZWQtZmlsbC1yYWdnZWRuZXNzLXBlbmFsdHkgMCkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOzsgcGx1cyBhIHBlbmFsdHkgaWYgZW5kaW5nIG9uIHRoZSBz dGFydCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGEgbmV3IHNlbnRl bmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAobnRoIDIgKGFyZWYg d29yZHMgZW5kKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFsYW5j ZWQtZmlsbC1zaW5nbGUtcGVuYWx0eSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDs7IGFuZCBhIHBlbmFsdHkgaWYgc3RhcnRpbmcgd2l0aCBhIHNpbmdsZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHdvcmQgYW5kIHRoZW4gYSBuZXcgc2VudGVu Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChhbmQgKDwgKDErIHN0 YXJ0KSBjb3VudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bnRoIDIgKGFyZWYgd29yZHMgKDErIHN0YXJ0KSkpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBiYWxhbmNlZC1maWxsLXNpbmdsZS1wZW5hbHR5IDApCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOzsgYW5kIGEgcGVuYWx0eSBmb3IgZWFjaCBicmVh ay4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWxhbmNlZC1maWxsLWJyZWFr LXBlbmFsdHkpKSkKKyAgICAgICAgICAgICAgICAgIDs7IEZvciBlbmRpbmcgYWZ0ZXIgaGVy ZSwgaXMgdGhpcyBhIGJldHRlciBzdGFydGluZyBwbGFjZT8KKyAgICAgICAgICAgICAgICAg ICh3aGVuIChhbmQgKDw9IGNvc3QgKGFyZWYgY29zdHMgKDErIGVuZCkpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAob3IgKDw9IHdpZHRoIHJvb20pICg9IGVuZCBzdGFydCkp KQorICAgICAgICAgICAgICAgICAgICAoYXNldCBjb3N0cyAoMSsgZW5kKSBjb3N0KQorICAg ICAgICAgICAgICAgICAgICAoYXNldCBzdGFydHMgKDErIGVuZCkgc3RhcnQpCisgICAgICAg ICAgICAgICAgICAgIChhc2V0IHdpZHRocyAoMSsgZW5kKSB3aWR0aCkKKyAgICAgICAgICAg ICAgICAgICAgKGFzZXQgcmFncyAoMSsgZW5kKSAoLSByb29tIHdpZHRoKSkpKQorICAgICAg ICAgICAgICAgIDs7IEJyZWFrIHRoZSBpbm5lciAoZW5kKSBsb29wIGlmIHdlJ3JlIG91dCBv ZiByb29tIG5vdy4KKyAgICAgICAgICAgICAgICAoaWYgKD49IHdpZHRoIHJvb20pCisgICAg ICAgICAgICAgICAgICAgIChzZXRxIGVuZCBjb3VudCkpCisgICAgICAgICAgICAgICAgKHNl dHEgZW5kICgxKyBlbmQpKSkpCisgICAgICAgICAgICAoc2V0cSBzdGFydCAoMSsgc3RhcnQp KSkpCisKKyAgICAgICAgOzsgV2FsayBiYWNrd2FyZHMgZnJvbSB0aGUgZW5kIG9mIHRoZSB0 YWJsZSB0byByZWNvbnN0cnVjdCBhIGxpc3QKKyAgICAgICAgOzsgb2YgdGhlIG9wdGltYWwg d2lkdGhzIGZvciBlYWNoIGxpbmUuCisgICAgICAgIChsZXQgKGNob3NlbikKKyAgICAgICAg ICAobGV0ICgoZW5kIGNvdW50KSkKKyAgICAgICAgICAgICh3aGlsZSAoPiBlbmQgMCkKKyAg ICAgICAgICAgICAgKGlmICg8IGVuZCBjb3VudCkKKyAgICAgICAgICAgICAgICAgIChwdXNo IChhcmVmIHdpZHRocyBlbmQpIGNob3NlbikpCisgICAgICAgICAgICAgIChzZXRxIGVuZCAo YXJlZiBzdGFydHMgZW5kKSkpKQorCisgICAgICAgICAgOzsgVGhlbiBpbnNlcnQgdGhvc2Ug bGluZSBicmVha3MgYW5kIGp1c3RpZnkgZWFjaCBsaW5lLgorICAgICAgICAgIChtYXBjIChs YW1iZGEgKHdpZHRoKQorICAgICAgICAgICAgICAgICAgKG1vdmUtdG8tY29sdW1uICgrIChj dXJyZW50LWNvbHVtbikgd2lkdGgpKQorICAgICAgICAgICAgICAgICAgKGZpbGwtbmV3bGlu ZSkKKyAgICAgICAgICAgICAgICAgIChpZiBqdXN0aWZ5CisgICAgICAgICAgICAgICAgICAg ICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAoZm9yd2FyZC1s aW5lIC0xKQorICAgICAgICAgICAgICAgICAgICAgICAgKGp1c3RpZnktY3VycmVudC1saW5l IGp1c3RpZnkgbmlsIHQpKSkpCisgICAgICAgICAgICAgICAgY2hvc2VuKQorICAgICAgICAg IChpZiBqdXN0aWZ5IChqdXN0aWZ5LWN1cnJlbnQtbGluZSBqdXN0aWZ5IHQgdCkpKSkpKSkK KwogKGRlZnVuIGZpbGwtcmVnaW9uLWFzLXBhcmFncmFwaCAoZnJvbSB0byAmb3B0aW9uYWwg anVzdGlmeQogCQkJCSAgICAgIG5vc3F1ZWV6ZSBzcXVlZXplLWFmdGVyKQogICAiRmlsbCB0 aGUgcmVnaW9uIGFzIGlmIGl0IHdlcmUgYSBzaW5nbGUgcGFyYWdyYXBoLgpAQCAtNzYyLDYg Kzk4MywxMSBAQCBmaWxsLXJlZ2lvbi1hcy1wYXJhZ3JhcGgKIAogCTs7IFRoaXMgaXMgdGhl IGFjdHVhbCBmaWxsaW5nIGxvb3AuCiAJKGdvdG8tY2hhciBmcm9tKQorICAgICAgICA7OyBB dHRlbXB0IHRvIGJyZWFrIGludG8gYmFsYW5jZWQgbGluZXMgaWYgZGVzaXJlZC4KKyAgICAg ICAgKHdoZW4gYmFsYW5jZWQtZmlsbC1tb2RlCisgICAgICAgICAgKGJhbGFuY2VkLWZpbGwt LWJyZWFrLWxpbmVzIGZyb20gdG8ganVzdGlmeSkpCisgICAgICAgIDs7IE90aGVyd2lzZSAo aWYgcG9pbnQgaXMgc3RpbGwgYXQgZnJvbSksIGZhbGwgYmFjayB0byB0aGUgc3RhbmRhcmQK KyAgICAgICAgOzsgZ3JlZWR5IGxpbmUgYnJlYWtpbmcgbG9vcC4KIAkobGV0IChsaW5lYmVn KQogICAgICAgICAgICh3aGlsZSAoPCAocG9pbnQpIHRvKQogCSAgICAoc2V0cSBsaW5lYmVn IChwb2ludCkpCkBAIC0xMTE2LDcgKzEzNDIsOCBAQCBkZWZhdWx0LWp1c3RpZmljYXRpb24K IAkJIChjb25zdCBmdWxsKQogCQkgKGNvbnN0IGNlbnRlcikKIAkJIChjb25zdCBub25lKSkK LSAgOnNhZmUgJ3N5bWJvbHApCisgIDpzYWZlICdzeW1ib2xwCisgIDpncm91cCAnZmlsbCkK IChtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAnZGVmYXVsdC1qdXN0aWZpY2F0aW9uKQog CiAoZGVmdW4gY3VycmVudC1qdXN0aWZpY2F0aW9uICgpCmRpZmYgLS1naXQgYS90ZXN0L2xp c3AvdGV4dG1vZGVzL2ZpbGwtdGVzdHMuZWwgYi90ZXN0L2xpc3AvdGV4dG1vZGVzL2ZpbGwt dGVzdHMuZWwKaW5kZXggZWY4MjJiYTgwNWIuLjE4NTE5ZWI2OWE3IDEwMDY0NAotLS0gYS90 ZXN0L2xpc3AvdGV4dG1vZGVzL2ZpbGwtdGVzdHMuZWwKKysrIGIvdGVzdC9saXNwL3RleHRt b2Rlcy9maWxsLXRlc3RzLmVsCkBAIC0xMjEsNiArMTIxLDI3IEBAIHRlc3QtZmlsbC1oYXNr ZWxsCiAgIDs7IHcKICIpKSkKIAorKGVydC1kZWZ0ZXN0IGZpbGwtdGVzdC1iYWxhbmNlZC1m aWxsLW1vZGUgbmlsCisgICJCYXNpYyB0ZXN0cyBvZiB0aGUgYGJhbGFuY2VkLWZpbGwtbW9k ZScgb3B0aW9uLiIKKyAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAoaW5zZXJ0ICJDY2MgY2Nj IGEgYmIgZGRkZCBiYiBiYiBhIGNjYyBhIGpqampqampqamogYSBlZWVlZSBhIGhoaGhoaGho IGJiIGRkZGQuIikKKyAgICAoc2V0cSBmaWxsLWNvbHVtbiAxNSkKKyAgICAoc2V0cS1sb2Nh bCBiYWxhbmNlZC1maWxsLW1vZGUgbmlsKQorICAgIChmaWxsLXBhcmFncmFwaCkKKyAgICAo c2hvdWxkIChzdHJpbmc9IChidWZmZXItc3RyaW5nKSAiQ2NjIGNjYyBhIGJiXG5kZGRkIGJi IGJiIGFcbmNjYyBhXG5qampqampqampqIGFcbmVlZWVlIGFcbmhoaGhoaGhoIGJiXG5kZGRk LiIpKSkKKyAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAoaW5zZXJ0ICJDY2MgY2NjIGEgYmIg ZGRkZCBiYiBiYiBhIGNjYyBhIGpqampqampqamogYSBlZWVlZSBhIGhoaGhoaGhoIGJiIGRk ZGQuIikKKyAgICAoc2V0cSBmaWxsLWNvbHVtbiAxNSkKKyAgICAoc2V0cS1sb2NhbCBiYWxh bmNlZC1maWxsLW1vZGUgdCkKKyAgICAoZmlsbC1wYXJhZ3JhcGgpCisgICAgKHNob3VsZCAo c3RyaW5nPSAoYnVmZmVyLXN0cmluZykgIkNjYyBjY2MgYVxuYmIgZGRkZCBiYlxuYmIgYSBj Y2MgYVxuampqampqampqalxuYSBlZWVlZSBhXG5oaGhoaGhoaFxuYmIgZGRkZC4iKSkpCisg ICh3aXRoLXRlbXAtYnVmZmVyCisgICAgKGluc2VydCAiQ2NjIGNjYyBhIGJiIGRkZGQgYmIg YmIgYSBjY2MgYSBqampqampqampqIGEgZWVlZWUgYSBoaGhoaGhoaCBiYiBkZGRkLiIpCisg ICAgKHNldHEgZmlsbC1jb2x1bW4gMTUpCisgICAgKHNldHEtbG9jYWwgYmFsYW5jZWQtZmls bC1tb2RlIHQpCisgICAgKGZpbGwtcGFyYWdyYXBoICdmdWxsKQorICAgIChzaG91bGQgKHN0 cmluZz0gKGJ1ZmZlci1zdHJpbmcpICJDY2MgICAgY2NjICAgIGFcbmJiICAgIGRkZGQgICBi YlxuYmIgICBhICBjY2MgICBhXG5qampqampqampqXG5hICAgIGVlZWVlICAgIGFcbmhoaGho aGhoXG5iYiBkZGRkLiIpKSkpCisKIChwcm92aWRlICdmaWxsLXRlc3RzKQogCiA7OzsgZmls bC10ZXN0cy5lbCBlbmRzIGhlcmUKLS0gCjIuMTcuMQoK --------------TWuQdg909FX6zFfWaIAMkuEw Content-Type: text/x-emacs-lisp; charset=UTF-8; name="benchmark-fill.el" Content-Disposition: attachment; filename="benchmark-fill.el" Content-Transfer-Encoding: base64 KGRlZnVuIGJlbmNobWFyay1maWxsICgpCiAgKGludGVyYWN0aXZlKQogIChkb3RpbWVzIChy ZXBzIDMwKQogICAgKHdpdGgtdGVtcC1idWZmZXIKICAgICAgKGRvdGltZXMgKHJlcCByZXBz KQogICAgICAgIChpbnNlcnQgIkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0 ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCAiKQogICAgICAgIChpbnNlcnQgImRvIGVpdXNt b2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSAiKQogICAg ICAgIChpbnNlcnQgImFsaXF1YS4gIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5v c3RydWQgZXhlcmNpdGF0aW9uICIpCiAgICAgICAgKGluc2VydCAidWxsYW1jbyBsYWJvcmlz IG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gICIpCiAgICAgICAg KGluc2VydCAiRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9s dXB0YXRlIHZlbGl0ICIpCiAgICAgICAgKGluc2VydCAiZXNzZSBjaWxsdW0gZG9sb3JlIGV1 IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gIEV4Y2VwdGV1ciBzaW50ICIpCiAgICAgICAgKGlu c2VydCAib2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBx dWkgb2ZmaWNpYSAiKQogICAgICAgIChpbnNlcnQgImRlc2VydW50IG1vbGxpdCBhbmltIGlk IGVzdCBsYWJvcnVtLiAgIikpCiAgICAgIChsZXQgKCh3b3JkcyAoY291bnQtd29yZHMtcmVn aW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpKSkKICAgICAgICAgICAgKHRpbWUgKGN1cnJl bnQtdGltZSkpKQogICAgICAgIChmaWxsLXBhcmFncmFwaCBuaWwgdCkKICAgICAgICAobWVz c2FnZSAiV29yZHM6ICU0ZCwgVGltZTogJTAuNmYiCiAgICAgICAgICAgICAgICAgd29yZHMg KGZsb2F0LXRpbWUgKHRpbWUtc2luY2UgdGltZSkpKSkpKSkK --------------TWuQdg909FX6zFfWaIAMkuEw--
Received: (at control) by debbugs.gnu.org; 4 Sep 2023 09:11:32 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Sep 04 05:11:32 2023 Received: from localhost ([127.0.0.1]:48693 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qd5cK-0006T4-CG for submit <at> debbugs.gnu.org; Mon, 04 Sep 2023 05:11:32 -0400 Received: from mail-lf1-x12a.google.com ([2a00:1450:4864:20::12a]:44301) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <stefankangas@HIDDEN>) id 1qd5cB-0006Sd-BK for control <at> debbugs.gnu.org; Mon, 04 Sep 2023 05:11:30 -0400 Received: by mail-lf1-x12a.google.com with SMTP id 2adb3069b0e04-4fe27849e6aso1859850e87.1 for <control <at> debbugs.gnu.org>; Mon, 04 Sep 2023 02:11:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693818677; x=1694423477; darn=debbugs.gnu.org; h=to:subject:message-id:date:mime-version:from:from:to:cc:subject :date:message-id:reply-to; bh=WWDwg3iezn32+sY9uNtfUF4D2WW9y6tlpXJNAtyEdkM=; b=aN6ipRZk/grx4y/QX/iIW1qfExn7aWwQQNGnwP/gd4mY5t1QgSMuNmxzl6R9TrbiCc V9oF1FtPvlf+d04xvjyPfTd/62Syn4adCPJebuMejyfXBx2JQwpyfXQlaPzaIPhS3xbh CK7D3CdcYzKEzBgM04ymSbB/i7913cxNdHn44XlxHgGYTvwK0whJges/Q0REArntQ2Ur rg1DhzV7U131Rn00JV9RfjkqwuKpQ3vbfIpqSw2t1d6Ob9cM5hMujwDrsY5aurD1piPI 9nExJdUf+446o21uWqcJT/hHGF7TBzvq5XjJL+b+BXO312BJsYyqBOqlLBAyxqBQKTqe edZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693818677; x=1694423477; h=to:subject:message-id:date:mime-version:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=WWDwg3iezn32+sY9uNtfUF4D2WW9y6tlpXJNAtyEdkM=; b=k3iObD/L8WSRseK4eiSWXiaTy8dCFUGKgiIFmKNDD6VYJFCxi+9QBlkKeQAujrlItk t3OHhTG3XcuiF/OTbNVyQ+rPDYJlz1P/neg+uZYoysgz6EpIJzJ/FTo+fS6dwXuVHAOf Th0XQJ8C7UPfxg41oG02s9uE75Np3rmERs+xD/LH63ePgE0VDyBGy6cOjZn7jC+uId5o o/sZm0BbxRp8cur0VxTW3fex9+7O35HfjJ5BvFrDBc5NEbTMbW9A2iDQrc3uo+nwYtsd MCHJAU0+uYkwx3voxSHrD+/ZCzIPXfUQlZb8U0mmeYFZFBtFkPZl0/QzuErYM7n7/ST0 eVMA== X-Gm-Message-State: AOJu0YwiV5Af4JJZKQr+6NBFt0DcD42OGF4r+M+Qns7emuIidxeCWxOl roA3ljXOovoQAwSzPrJZJjktYuiGJipbucQauNY7Dlkab/k= X-Google-Smtp-Source: AGHT+IFtrrX/JM909jdiBNOTwLqD5GDbY9Cc0bXw2YFn7gu/VlGrbvEQ2JPOfqbQVPsHI9Ayl+PeKtqHGvS9sENBA78= X-Received: by 2002:a05:6512:3b24:b0:4fe:7e1f:b044 with SMTP id f36-20020a0565123b2400b004fe7e1fb044mr7398090lfv.15.1693818677428; Mon, 04 Sep 2023 02:11:17 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Mon, 4 Sep 2023 02:11:17 -0700 From: Stefan Kangas <stefankangas@HIDDEN> MIME-Version: 1.0 Date: Mon, 4 Sep 2023 02:11:17 -0700 Message-ID: <CADwFkmktGKns3RQQ-gO0Dey0B+dcSbTAvkxJN10Hwqg_k_2qdw@HIDDEN> Subject: control message for bug #61028 To: control <at> debbugs.gnu.org Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) severity 61028 wishlist quit
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.