From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Dmitry Gutov Newsgroups: gmane.emacs.bugs Subject: bug#60186: 29.0.60; ruby-mode indentation of multi-line expressions Date: Sun, 25 Dec 2022 00:47:55 +0200 Message-ID: References: <4e44df18-207c-c7ca-0588-7285f3008dfb@yandex.ru> <358bbd65-9375-04c8-f0a2-24a4383f142e@yandex.ru> <2b4a91e1-bad1-382f-dd64-abf171efb404@yandex.ru> <60e207e0-7378-ad9f-3ef0-99df1c139939@yandex.ru> <902440c7-706a-20e1-55af-4e12e8cdda2c@yandex.ru> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------uNplxyzux48Pc0CWiW8q8lEJ" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="20862"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Cc: 60186@debbugs.gnu.org To: Aaron Jensen Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Dec 24 23:49:25 2022 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 1p9DKX-0005Dh-1B for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 24 Dec 2022 23:49:25 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p9DKC-0006vv-HR; Sat, 24 Dec 2022 17:49:04 -0500 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 1p9DKA-0006vW-G8 for bug-gnu-emacs@gnu.org; Sat, 24 Dec 2022 17:49:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p9DKA-0005WZ-7y for bug-gnu-emacs@gnu.org; Sat, 24 Dec 2022 17:49:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1p9DKA-0008TN-1K for bug-gnu-emacs@gnu.org; Sat, 24 Dec 2022 17:49:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 24 Dec 2022 22:49:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 60186 X-GNU-PR-Package: emacs Original-Received: via spool by 60186-submit@debbugs.gnu.org id=B60186.167192208732406 (code B ref 60186); Sat, 24 Dec 2022 22:49:01 +0000 Original-Received: (at 60186) by debbugs.gnu.org; 24 Dec 2022 22:48:07 +0000 Original-Received: from localhost ([127.0.0.1]:47282 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p9DJG-0008QY-AN for submit@debbugs.gnu.org; Sat, 24 Dec 2022 17:48:07 -0500 Original-Received: from mail-wm1-f44.google.com ([209.85.128.44]:54904) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p9DJD-0008PC-Me for 60186@debbugs.gnu.org; Sat, 24 Dec 2022 17:48:04 -0500 Original-Received: by mail-wm1-f44.google.com with SMTP id o15so5728077wmr.4 for <60186@debbugs.gnu.org>; Sat, 24 Dec 2022 14:48:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:sender:from:to:cc:subject :date:message-id:reply-to; bh=dkl/nBUaeMYckUhTpbzntN/k0eYYaext61DY4UGDyHA=; b=mQDgQhTdCwTXFjNMbd+H7CMGMoqOG6y8223DQxtcWjNLwb1qHa13mX9YNdUCCYj40L DqTqDHjXk9Uu2vqXONC4MMTrzzyMVcMy2xPZtPG8tNsho7YuXYdLzVP2449mMk1TIevT UPVsckuYgtiYNvaCaxJzx9p/bt354SdnPTiltRmoCQvs0CJHv1tkcCvgG6rWROe0oq1w 6STDnNZhxKT42fZqq4zvlssu9W5Mq6aAnfiZaDOi+yJU1KwR+auy2G6MYbzHbjg2FHp2 xrr7FxWZkAGBFmmM5BOniwysgpmI7awm/baLA0yv4X1bzNfytPRpQZN8JABx9QCoeweK q4VQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:sender:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=dkl/nBUaeMYckUhTpbzntN/k0eYYaext61DY4UGDyHA=; b=fU6a6RLB7tdHjOZqyoO8ZBmYPmgW0Uo7E1KPopjTbNx0JnBjXCFX3MsiHM2S4AcbYU OBcE9Uz35qDqrtwMjiY+nFUPlu7+gTpq183ePrEa4eRCEhKSW3nEdm69fJBfCL0saIQU XmoEAXcMwhs7eyBeSOLnHHSrWFbu2z33uwt4MdPzx0YhbDeNXiQRJp9h6O8/t0ELrCPI niPoO9N/xMhGvY/mhxkk9OfxN9Y5eyFp3I3btcAEluRk82lIwv4bJHtTii5vE01sZ1E1 +7Kqf0vTyoIABtN0JnmKygZHvLh/qtQEH1j49LbSioOFehPVP2FjIkPNh14l8WJ+zJ4S SQ5w== X-Gm-Message-State: AFqh2kqVFC9OdL9iIrT0LvmrKeMLSSFD87L0Gd/DHa3MRQzghS/R6nLa NUXpNfCqDMnYq8kZf8KiRXA= X-Google-Smtp-Source: AMrXdXvp4QEhzR93wkw3GxDcuH6OOpuHinyMKYaAfCB5z/9DQlRMZ1Zf/WcCNFqVKooyRJeeWU/uwA== X-Received: by 2002:a05:600c:500a:b0:3d3:5b56:b834 with SMTP id n10-20020a05600c500a00b003d35b56b834mr10052860wmr.5.1671922077731; Sat, 24 Dec 2022 14:47:57 -0800 (PST) Original-Received: from [192.168.0.2] ([46.251.119.176]) by smtp.googlemail.com with ESMTPSA id bg40-20020a05600c3ca800b003b4cba4ef71sm15086770wmb.41.2022.12.24.14.47.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 24 Dec 2022 14:47:56 -0800 (PST) Content-Language: en-US In-Reply-To: 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:251819 Archived-At: This is a multi-part message in MIME format. --------------uNplxyzux48Pc0CWiW8q8lEJ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 24/12/2022 02:17, Aaron Jensen wrote: > On Fri, Dec 23, 2022 at 5:26 PM Dmitry Gutov wrote: >> >> Is that also true for the other "codebases you've seen" referred to in >> the first message here? > > Mostly we work with Rails (and I try to avoid looking at that code as > much as I can, though I often find myself in there...) and the > Eventide framework: https://github.com/eventide-project Thanks. It's very neat. I couldn't find any big app in there, though. And that's where the things tend to become more hairy. > Given that the two founders of that are on my team we tend to follow > their indentation and coding style (and it is well-thought out, with > everything considered with respect to human cognition/eye tracking > studies/etc.). That's probably the best example I could offer, though > what you will find in there is that not many lines of code span more > than one line. They (and we) tend to allow longer lines when the right > side of the line is less important. With code rarely spanning multiple lines, the current indentation logic of ruby-mode is probably working fine too. >>> With either indentation style, the >>> first argument (which is the most significant one when a method is >>> properly designed) will have the least presence when scanning. It's >>> just not a good format in my experience. In our code we take it a step >>> further and always use parentheses except for in class level "macros". >> >> That's also my preference and true of the code I've seen. But "class >> level macros" are often an important part of projects, be that >> ActiveRecord validations, or DSL-like calls in Grape (routes, params, etc). >> >> So I wonder whether we should alter parenless calls' indentation for the >> "simplified" style. > > I think I would tend towards saying yes, make it simple/like the chef > codebase. That's consistent and if one wants to line things up, then > one can use parens, even with class level macros (or use long lines > and not care). All right. In the latest iteration of the patch (attached) I've split off the block's indentation behavior into a separate option and altered the indentation of the parenless calls. In the more complex cases the results are definitely interesting: method arg1, method2 arg2, arg3 zzz = method (a + b), c, :d => :e, f: g >> Though they also like to line up the keyword arguments according to >> Rubocop's defaults >> (https://github.com/spree/spree/blob/main/core/app/models/spree/product.rb#L63), >> something we don't support yet. > > This line is rather painful to read and inconsistent with the call > just below it on line 70. I would certainly not advocate for that. I think it's consistent in the sense that the "keyword" section of the arguments is vertically aligned in both cases. It's a popular Rubocop rule, apparently. Whether it's useful, though, I'm doubtful too. >> Do you have a source-available example of a project in your preferred >> coding style? >> >> Chef, perhaps? >> >> https://github.com/chef/chef/blob/main/lib/chef/application/base.rb >> https://github.com/chef/chef/blob/main/lib/chef/application/client.rb > > Yeah, I think this is probably the closest with regard to indentation > aside from Eventide, but again, you won't find much indentation there. > Whatever you find will likely be Vim's default, which I believe is the > same simple two space indent we are discussing. Okay. >>> This means that any time we decide to split a method invocation on >>> multiple lines we use the basic newline after ( style. >> >> For "class-level macros" as well? > > I found inconsistencies in our codebase, so it is time for us to > establish a new norm. My guess is that we will land on using parens > for it. When we do it without parens, it is in the simplified style. > > Thank you for your research and work on this, I appreciate it. Thank you too. We could also discuss cases like foo = bar({ tee: 1, qux: 2 }) baz([ 1, 2, 3 ]) but those would be an orthogonal feature. And I don't see them much in the wild, for some reason. --------------uNplxyzux48Pc0CWiW8q8lEJ Content-Type: text/x-patch; charset=UTF-8; name="ruby-simplified-indent-v5.diff" Content-Disposition: attachment; filename="ruby-simplified-indent-v5.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3AvcHJvZ21vZGVzL3J1YnktbW9kZS5lbCBiL2xpc3AvcHJvZ21v ZGVzL3J1YnktbW9kZS5lbAppbmRleCBhNGFhNjE5MDVlNC4uMmZlMWY0OTg2ZWUgMTAwNjQ0 Ci0tLSBhL2xpc3AvcHJvZ21vZGVzL3J1YnktbW9kZS5lbAorKysgYi9saXNwL3Byb2dtb2Rl cy9ydWJ5LW1vZGUuZWwKQEAgLTI4NSw2ICsyODUsNDAgQEAgcnVieS1tZXRob2QtcGFyYW1z LWluZGVudAogICA6c2FmZSAobGFtYmRhICh2YWwpIChvciAobWVtcSB2YWwgJyh0IG5pbCkp IChudW1iZXJwIHZhbCkpKQogICA6dmVyc2lvbiAiMjkuMSIpCiAKKyhkZWZjdXN0b20gcnVi eS1ibG9jay1pbmRlbnQgdAorICAiTm9uLW5pbCB0byBhbGlnbiB0aGUgYm9keSBvZiBhIGJs b2NrIHRvIHRoZSBzdGF0ZW1lbnQncyBzdGFydC4KKworVGhlIGJvZHkgYW5kIHRoZSBjbG9z ZXIgd2lsbCBiZSBhbGlnbmVkIHRvIHRoZSBjb2x1bW4gd2hlcmUgdGhlCitzdGF0ZW1lbnQg Y29udGFpbmluZyB0aGUgYmxvY2sgc3RhcnRzLiBFeGFtcGxlOgorCisgIGZvby5iYXIKKyAg ICAuZWFjaCBkbworICAgIGJhegorICBlbmQKKworSWYgbmlsLCBpdCB3aWxsIGJlIGFsaWdu ZWQgaW5zdGVhZCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lCitjb250YWluaW5nIHRo ZSBibG9jaydzIG9wZW5lcjoKKworICBmb28uYmFyCisgICAgLmVhY2ggZG8KKyAgICAgIGJh egorICAgIGVuZAorCitPbmx5IGhhcyBlZmZlY3Qgd2hlbiBgcnVieS11c2Utc21pZScgaXMg dC4iCisgIDp0eXBlICdib29sZWFuCisgIDpzYWZlICdib29sZWFucCkKKworKGRlZmN1c3Rv bSBydWJ5LWluZGVudC1zaW1wbGlmaWVkIG5pbAorICAiTm9uLW5pbCB0byB1c2UgdGhlIGlu ZGVudGF0aW9uIGxvZ2ljIHdpdGggbGVzcyBuZXN0aW5nLgorCitUaGUgcmVzdWx0IGlzIHRo YXQgc3RhdGVtZW50cyB3aXRoIGNvbnRpbnVhdGlvbnMgd2lsbCBoYXZlIGp1c3QgMQorbGV2 ZWwgb2YgaW5kZW50YXRpb24gbmVzdGluZy4gIFVubGVzcyBwYXJlbiBncm91cGluZyBvcgor aGFzaC9hcnJheSBsaXRlcmFscyBhcmUgaW52b2x2ZWQuCisKK09ubHkgaGFzIGVmZmVjdCB3 aGVuIGBydWJ5LXVzZS1zbWllJyBpcyB0LiIKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAgOnNhZmUg J2Jvb2xlYW5wKQorCiAoZGVmY3VzdG9tIHJ1YnktZGVlcC1hcmdsaXN0IHQKICAgIkRlZXAg aW5kZW50IGxpc3RzIGluIHBhcmVudGhlc2lzIHdoZW4gbm9uLW5pbC4KIEFsc28gaWdub3Jl cyBzcGFjZXMgYWZ0ZXIgcGFyZW50aGVzaXMgd2hlbiBgc3BhY2UnLgpAQCAtNDE2LDYgKzQ1 MCw3IEBAIHJ1Ynktc21pZS1ncmFtbWFyCiAgICAgICcoKHJpZ2h0ICI9IikKICAgICAgICAo cmlnaHQgIis9IiAiLT0iICIqPSIgIi89IiAiJT0iICIqKj0iICImPSIgInw9IiAiXj0iCiAg ICAgICAgICAgICAgICI8PD0iICI+Pj0iICImJj0iICJ8fD0iKQorICAgICAgIChyaWdodCAi PyIpCiAgICAgICAgKG5vbmFzc29jICIuLiIgIi4uLiIpCiAgICAgICAgKGxlZnQgIiYmIiAi fHwiKQogICAgICAgIChub25hc3NvYyAiPD0+IikKQEAgLTYwOCwxMCArNjQzLDEwIEBAIHJ1 Ynktc21pZS0tYmFja3dhcmQtdG9rZW4KICAgICAgICAgICAiZGVmPSIpCiAgICAgICAgICAo dCB0b2spKSkpKSkpCiAKLShkZWZ1biBydWJ5LXNtaWUtLWluZGVudC10by1zdG10ICgpCiso ZGVmdW4gcnVieS1zbWllLS1pbmRlbnQtdG8tc3RtdCAoJm9wdGlvbmFsIG9mZnNldCkKICAg KHNhdmUtZXhjdXJzaW9uCiAgICAgKHNtaWUtYmFja3dhcmQtc2V4cCAiOyIpCi0gICAgKGNv bnMgJ2NvbHVtbiAoc21pZS1pbmRlbnQtdmlydHVhbCkpKSkKKyAgICAoY29ucyAnY29sdW1u ICgrIChzbWllLWluZGVudC12aXJ0dWFsKSAob3Igb2Zmc2V0IDApKSkpKQogCiAoZGVmdW4g cnVieS1zbWllLS1pbmRlbnQtdG8tc3RtdC1wIChrZXl3b3JkKQogICAob3IgKGVxIHQgcnVi eS1hbGlnbi10by1zdG10LWtleXdvcmRzKQpAQCAtNjQyLDcgKzY3Nyw5IEBAIHJ1Ynktc21p ZS1ydWxlcwogICAgICAgICAgICAgICAoZm9yd2FyZC1jb21tZW50IC0xKQogICAgICAgICAg ICAgICAobm90IChlcSAocHJlY2VkaW5nLWNoYXIpID86KSkpKQogICAgICAgIDs7IEN1cmx5 IGJsb2NrIG9wZW5lci4KLSAgICAgICAocnVieS1zbWllLS1pbmRlbnQtdG8tc3RtdCkpCisg ICAgICAgKGlmIHJ1YnktYmxvY2staW5kZW50CisgICAgICAgICAgIChydWJ5LXNtaWUtLWlu ZGVudC10by1zdG10KQorICAgICAgICAgKGNvbnMgJ2NvbHVtbiAoY3VycmVudC1pbmRlbnRh dGlvbikpKSkKICAgICAgICgoc21pZS1ydWxlLWhhbmdpbmctcCkKICAgICAgICA7OyBUcmVh dCBwdXJlbHkgc3ludGFjdGljIGJsb2NrLWNvbnN0cnVjdHMgYXMgYmVpbmcgcGFydCBvZiB0 aGVpciBwYXJlbnQsCiAgICAgICAgOzsgd2hlbiB0aGUgb3BlbmluZyB0b2tlbiBpcyBoYW5n aW5nIGFuZCB0aGUgcGFyZW50IGlzIG5vdCBhbgpAQCAtNjc4LDEyICs3MTUsMTYgQEAgcnVi eS1zbWllLXJ1bGVzCiAgICAgICAgICAoY29ucyAnY29sdW1uIChjdXJyZW50LWNvbHVtbikp KSkpCiAgICAgKCcoOmJlZm9yZSAuICIgQCAiKQogICAgICAoaWYgKG9yIChlcSBydWJ5LW1l dGhvZC1wYXJhbXMtaW5kZW50IHQpCisgICAgICAgICAgICAgKGVxIHJ1YnktaW5kZW50LXNp bXBsaWZpZWQgbmlsKQogICAgICAgICAgICAgIChub3QgKHNtaWUtcnVsZS1wYXJlbnQtcCAi ZGVmIiAiZGVmPSIpKSkKICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAgICAo c2tpcC1jaGFycy1mb3J3YXJkICIgXHQiKQogICAgICAgICAgICAoY29ucyAnY29sdW1uIChj dXJyZW50LWNvbHVtbikpKQogICAgICAgIChzbWllLXJ1bGUtcGFyZW50IChvciBydWJ5LW1l dGhvZC1wYXJhbXMtaW5kZW50IDApKSkpCi0gICAgKCcoOmJlZm9yZSAuICJkbyIpIChydWJ5 LXNtaWUtLWluZGVudC10by1zdG10KSkKKyAgICAoJyg6YmVmb3JlIC4gImRvIikKKyAgICAg KGlmIHJ1YnktYmxvY2staW5kZW50CisgICAgICAgICAocnVieS1zbWllLS1pbmRlbnQtdG8t c3RtdCkKKyAgICAgICAoY29ucyAnY29sdW1uIChjdXJyZW50LWluZGVudGF0aW9uKSkpKQog ICAgICgnKDpiZWZvcmUgLiAiLiIpCiAgICAgIChpZiAoc21pZS1ydWxlLXNpYmxpbmctcCkK ICAgICAgICAgICh3aGVuIHJ1YnktYWxpZ24tY2hhaW5lZC1jYWxscwpAQCAtNjk2LDggKzcz NywxMCBAQCBydWJ5LXNtaWUtcnVsZXMKICAgICAgICAgICAgICAgICAgICAobm90IChzbWll LXJ1bGUtYm9scCkpKSkpCiAgICAgICAgICAgIChjb25zICdjb2x1bW4gKGN1cnJlbnQtY29s dW1uKSkpCiAgICAgICAgKHNtaWUtYmFja3dhcmQtc2V4cCAiLiIpCi0gICAgICAgKGNvbnMg J2NvbHVtbiAoKyAoY3VycmVudC1jb2x1bW4pCi0gICAgICAgICAgICAgICAgICAgICAgICBy dWJ5LWluZGVudC1sZXZlbCkpKSkKKyAgICAgICAoaWYgcnVieS1pbmRlbnQtc2ltcGxpZmll ZAorICAgICAgICAgICAocnVieS1zbWllLS1pbmRlbnQtdG8tc3RtdCBydWJ5LWluZGVudC1s ZXZlbCkKKyAgICAgICAgIChjb25zICdjb2x1bW4gKCsgKGN1cnJlbnQtY29sdW1uKQorICAg ICAgICAgICAgICAgICAgICAgICAgICBydWJ5LWluZGVudC1sZXZlbCkpKSkpCiAgICAgKGAo OmJlZm9yZSAuICwob3IgImVsc2UiICJ0aGVuIiAiZWxzaWYiICJyZXNjdWUiICJlbnN1cmUi KSkKICAgICAgKHNtaWUtcnVsZS1wYXJlbnQpKQogICAgIChgKDpiZWZvcmUgLiAsKG9yICJ3 aGVuIiAiaW4iKSkKQEAgLTcxMCwxNCArNzUzLDE2IEBAIHJ1Ynktc21pZS1ydWxlcwogICAg ICAgICAgICAgICAgICAgICAgIjw8PSIgIj4+PSIgIiYmPSIgInx8PSIgImFuZCIgIm9yIikp CiAgICAgIChhbmQgKHNtaWUtcnVsZS1wYXJlbnQtcCAiOyIgbmlsKQogICAgICAgICAgIChz bWllLWluZGVudC0taGFuZ2luZy1wKQotICAgICAgICAgIHJ1YnktaW5kZW50LWxldmVsKSkK KyAgICAgICAgICAoaWYgcnVieS1pbmRlbnQtc2ltcGxpZmllZAorICAgICAgICAgICAgICAo cnVieS1zbWllLS1pbmRlbnQtdG8tc3RtdCBydWJ5LWluZGVudC1sZXZlbCkKKyAgICAgICAg ICAgIHJ1YnktaW5kZW50LWxldmVsKSkpCiAgICAgKGAoOmJlZm9yZSAuICI9IikKICAgICAg KHNhdmUtZXhjdXJzaW9uCiAgICAgICAoYW5kIChzbWllLXJ1bGUtcGFyZW50LXAgIiBAICIp CiAgICAgICAgICAgIChnb3RvLWNoYXIgKG50aCAxIChzbWllLWluZGVudC0tcGFyZW50KSkp CiAgICAgICAgICAgIChzbWllLXJ1bGUtcHJldi1wICJkZWY9IikKICAgICAgICAgICAgKGNv bnMgJ2NvbHVtbiAoKyAoY3VycmVudC1jb2x1bW4pIHJ1YnktaW5kZW50LWxldmVsIC0zKSkp KSkKLSAgICAoYCg6YWZ0ZXIgLiAsKG9yICI/IiAiOiIpKSBydWJ5LWluZGVudC1sZXZlbCkK KyAgICAoYCg6YWZ0ZXIgLiAsKG9yICI/IiAiOiIpKSAodW5sZXNzIHJ1YnktaW5kZW50LXNp bXBsaWZpZWQgcnVieS1pbmRlbnQtbGV2ZWwpKQogICAgIChgKDpiZWZvcmUgLiAsKGd1YXJk IChtZW1xIChpbnRlcm4tc29mdCB0b2tlbikgcnVieS1hbGlnbmFibGUta2V5d29yZHMpKSkK ICAgICAgKHdoZW4gKG5vdCAocnVieS0tYXQtaW5kZW50YXRpb24tcCkpCiAgICAgICAgKGlm IChydWJ5LXNtaWUtLWluZGVudC10by1zdG10LXAgdG9rZW4pCkBAIC03MjUsNyArNzcwLDIx IEBAIHJ1Ynktc21pZS1ydWxlcwogICAgICAgICAgKGNvbnMgJ2NvbHVtbiAoY3VycmVudC1j b2x1bW4pKSkpKQogICAgICgnKDpiZWZvcmUgLiAiaXV3dS1tb2QiKQogICAgICAoc21pZS1y dWxlLXBhcmVudCBydWJ5LWluZGVudC1sZXZlbCkpCi0gICAgKSkKKyAgICAoYCg6YmVmb3Jl IC4gIiwiKQorICAgICAoYW5kIHJ1YnktaW5kZW50LXNpbXBsaWZpZWQKKyAgICAgICAgICAo c21pZS1ydWxlLXBhcmVudC1wICIgQCAiKQorICAgICAgICAgIChydWJ5LXNtaWUtLWluZGVu dC10by1zdG10IHJ1YnktaW5kZW50LWxldmVsKSkpCisgICAgKGAoOmJlZm9yZSAuICxfKQor ICAgICAod2hlbiAoYW5kIHJ1YnktaW5kZW50LXNpbXBsaWZpZWQKKyAgICAgICAgICAgICAg ICAobm90IChvciAobWVtYmVyIHRva2VuICcoIiwiKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAoc21pZS1ydWxlLXByZXYtcCAiOyIpKSkpCisgICAgICAgKGxldCogKChzdG10LWJl ZyAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNtaWUtYmFj a3dhcmQtc2V4cCAiOyIpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkpKQor ICAgICAgICAgICAgICAobmxzICgxLSAoY291bnQtbGluZXMgc3RtdC1iZWcgKHBvaW50KSkp KSkKKyAgICAgICAgICh3aGVuIChzbWllLWluZGVudC0taGFuZ2luZy1wKQorICAgICAgICAg ICAoY2wtaW5jZiBubHMpKQorICAgICAgICAgKHJ1Ynktc21pZS0taW5kZW50LXRvLXN0bXQg KGlmICg+IG5scyAwKSBydWJ5LWluZGVudC1sZXZlbCAwKSkpKSkpKQogCiAoZGVmdW4gcnVi eS0tYXQtaW5kZW50YXRpb24tcCAoJm9wdGlvbmFsIHBvaW50KQogICAoc2F2ZS1leGN1cnNp b24KZGlmZiAtLWdpdCBhL3Rlc3QvbGlzcC9wcm9nbW9kZXMvcnVieS1tb2RlLXJlc291cmNl cy9ydWJ5LWJsb2NrLWluZGVudC5yYiBiL3Rlc3QvbGlzcC9wcm9nbW9kZXMvcnVieS1tb2Rl LXJlc291cmNlcy9ydWJ5LWJsb2NrLWluZGVudC5yYgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uMDNhY2RkYTZmYjAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0 L2xpc3AvcHJvZ21vZGVzL3J1YnktbW9kZS1yZXNvdXJjZXMvcnVieS1ibG9jay1pbmRlbnQu cmIKQEAgLTAsMCArMSwxNSBAQAorZm9vCisgIC5hc2Rhc2QKKyAgLnByb2MgZG8gfCoqYXJn c3wKKyAgICBwKCoqYXJncykKKyAgZW5kCisKK2ZvbworICAuYXNkYXNkCisgIC5wcm9jIHsg fCoqYXJnc3wKKyAgICBwKCoqYXJncykKKyAgfQorCisjIExvY2FsIFZhcmlhYmxlczoKKyMg cnVieS1ibG9jay1pbmRlbnQ6IG5pbAorIyBFbmQ6CmRpZmYgLS1naXQgYS90ZXN0L2xpc3Av cHJvZ21vZGVzL3J1YnktbW9kZS1yZXNvdXJjZXMvcnVieS1pbmRlbnQtc2ltcGxpZmllZC5y YiBiL3Rlc3QvbGlzcC9wcm9nbW9kZXMvcnVieS1tb2RlLXJlc291cmNlcy9ydWJ5LWluZGVu dC1zaW1wbGlmaWVkLnJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5hYWVjYzdmNzQyMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvbGlzcC9wcm9nbW9kZXMv cnVieS1tb2RlLXJlc291cmNlcy9ydWJ5LWluZGVudC1zaW1wbGlmaWVkLnJiCkBAIC0wLDAg KzEsNjEgQEAKKzQgKworICA1ICsKKyAgNiArCisgIDcKKworZm9vID0gb2JqLmJhciB7IHxt fCB0ZWUobSkgfSArCisgIG9iai5xdXggeyB8bXwgaHVtKG0pIH0KKworZm9vKGEsCisgICAg YikKKworZm9vLgorICBiYXIKKyAgLmJhegorCittZXRob2QgYXJnMSwgICAgICAgICAgICAg ICAgICAgIyBidWcjMTU1OTQKKyAgbWV0aG9kMiBhcmcyLAorICBhcmczCisKK3p6eiA9IG1l dGhvZCAoYSArIGIpLAorICBjLCA6ZCA9PiA6ZSwKKyAgZjogZworCitxdXggPSBmb28uZmVl ID8KKyAgYmFyIDoKKyAgdGVlCisKK2ZvbzIgPQorICBzdWJqZWN0LgorICB1cGRhdGUoCisg ICAgMgorICApCisKK2Jhci5mb28gZG8KKyAgYmFyCitlbmQKKworYmFyLmZvbyh0ZWUpIGRv CisgIGJhcgorZW5kCisKK2Jhci5mb28odGVlKSB7CisgIGJhcgorfQorCisjIEVuZGxlc3Mg bWV0aG9kcy4KK2NsYXNzIEJhcgorICBkZWYgZm9vKGFiYykgPSBiYXIgKworICAgIGJhegor ZW5kCisKK3guZm9vIGRvCisgIGZvbworZW5kLmJhciBkbworICBiYXIKK2VuZAorCisjIExv Y2FsIFZhcmlhYmxlczoKKyMgcnVieS1tZXRob2QtcGFyYW1zLWluZGVudDogdAorIyBydWJ5 LWluZGVudC1zaW1wbGlmaWVkOiB0CisjIEVuZDoKZGlmZiAtLWdpdCBhL3Rlc3QvbGlzcC9w cm9nbW9kZXMvcnVieS1tb2RlLXJlc291cmNlcy9ydWJ5LnJiIGIvdGVzdC9saXNwL3Byb2dt b2Rlcy9ydWJ5LW1vZGUtcmVzb3VyY2VzL3J1YnkucmIKaW5kZXggNmE2OWQ5ZGI3OGEuLjdm MmE2NjVmMmY0IDEwMDY0NAotLS0gYS90ZXN0L2xpc3AvcHJvZ21vZGVzL3J1YnktbW9kZS1y ZXNvdXJjZXMvcnVieS5yYgorKysgYi90ZXN0L2xpc3AvcHJvZ21vZGVzL3J1YnktbW9kZS1y ZXNvdXJjZXMvcnVieS5yYgpAQCAtMjI2LDYgKzIyNiw3IEBAIGRlZiBiZWdpbgogCiBmb28u CiAgIGJhcgorICAuYmF6CiAKICMgaHR0cHM6Ly9naXRodWIuY29tL3JhaWxzL3JhaWxzL2Js b2IvMTdmNWQ4ZTA2MjkwOWYxZmNhZTI1MzUxODM0ZDhlODk5NjdiNjQ1ZS9hY3RpdmVzdXBw b3J0L2xpYi9hY3RpdmVfc3VwcG9ydC90aW1lX3dpdGhfem9uZS5yYiNMMjA2CiBmb28gIyBj b21tZW50IGludGVuZGVkIHRvIGNvbmZ1c2UgdGhlIHRva2VuaXplcgpAQCAtMzgwLDYgKzM4 MSwxOCBAQCBkZWYgYmFyCiAgIGkgKyAxCiBlbmQKIAorbTEgPSBmb28KKyAgICAgICAuYXNk YXNkCisgICAgICAgLnByb2MgZG8gfCoqYXJnc3wKKyAgcCgqKmFyZ3MpCitlbmQKKworbTIg PSBmb28KKyAgICAgICAuYXNkYXNkCisgICAgICAgLnByb2MgeyB8KiphcmdzfAorICBwKCoq YXJncykKK30KKwogYmFyLmZvbyBkbwogICBiYXIKIGVuZApAQCAtMzk4LDYgKzQxMSwxMiBA QCBkZWYgYmFyCiAgIGVuZAogZW5kCiAKK3guZm9vIGRvCisgIGZvbworZW5kLmJhciBkbwor ICBiYXIKK2VuZAorCiBmb28gfAogICBiYXIKIApAQCAtNTQxLDQgKzU2MCw2IEBAIGRlZiBi YXouZnVsbF9uYW1lID0gIiN7YmFyfSAzIgogCiAjIExvY2FsIFZhcmlhYmxlczoKICMgcnVi eS1tZXRob2QtcGFyYW1zLWluZGVudDogdAorIyBydWJ5LWluZGVudC1zaW1wbGlmaWVkOiBu aWwKKyMgcnVieS1ibG9jay1pbmRlbnQ6IHQKICMgRW5kOgpkaWZmIC0tZ2l0IGEvdGVzdC9s aXNwL3Byb2dtb2Rlcy9ydWJ5LW1vZGUtdGVzdHMuZWwgYi90ZXN0L2xpc3AvcHJvZ21vZGVz L3J1YnktbW9kZS10ZXN0cy5lbAppbmRleCA1NjBmNzgwMjg1YS4uM2IwZWM4YTAzMjQgMTAw NjQ0Ci0tLSBhL3Rlc3QvbGlzcC9wcm9nbW9kZXMvcnVieS1tb2RlLXRlc3RzLmVsCisrKyBi L3Rlc3QvbGlzcC9wcm9nbW9kZXMvcnVieS1tb2RlLXRlc3RzLmVsCkBAIC05NTcsNiArOTU3 LDggQEAgcnVieS1kZWZ0ZXN0LWluZGVudAogCiAocnVieS1kZWZ0ZXN0LWluZGVudCAicnVi eS5yYiIpCiAocnVieS1kZWZ0ZXN0LWluZGVudCAicnVieS1tZXRob2QtcGFyYW1zLWluZGVu dC5yYiIpCisocnVieS1kZWZ0ZXN0LWluZGVudCAicnVieS1pbmRlbnQtc2ltcGxpZmllZC5y YiIpCisocnVieS1kZWZ0ZXN0LWluZGVudCAicnVieS1ibG9jay1pbmRlbnQucmIiKQogCiAo ZXJ0LWRlZnRlc3QgcnVieS0tdGVzdC1jaGFpbmVkLWluZGVudGF0aW9uICgpCiAgICh3aXRo LXRlbXAtYnVmZmVyCg== --------------uNplxyzux48Pc0CWiW8q8lEJ--