From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jim Porter Newsgroups: gmane.emacs.bugs Subject: bug#72721: 31.0.50; Visual-wrap-prefix-mode breaks Magit log buffers Date: Tue, 20 Aug 2024 10:33:06 -0700 Message-ID: <36584786-6af4-c59f-bb3e-f3459b2904be@gmail.com> References: <87cym4ry3e.fsf@gautierponsinet.xyz> <49828281-6a20-3791-91bd-9708ec51eb57@gmail.com> <86jzgbwgud.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------6eyFOUt0P2yOv5TSTflDG2Z8" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="3869"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 72721@debbugs.gnu.org, gautier@gautierponsinet.xyz To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Aug 20 19:34:38 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sgSkg-0000s1-IV for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 20 Aug 2024 19:34:38 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sgSkP-00023h-6n; Tue, 20 Aug 2024 13:34:21 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sgSkM-000234-Oq for bug-gnu-emacs@gnu.org; Tue, 20 Aug 2024 13:34:19 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sgSkM-0002Yo-Fj for bug-gnu-emacs@gnu.org; Tue, 20 Aug 2024 13:34:18 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=In-Reply-To:From:References:MIME-Version:Date:To:Subject; bh=B5eD/gCdL9xfs+js1E4aVeCsLEfxnwYRu6FS+hmcxr8=; b=Ldps2QO1L1IkglUKcPR3wKkRk9ls6PEnTLrQedV2pKQy5Hah8tnBNIkHNLs6MC9NAfVbR2A+EfUk6uo33jqu9bAzWbqfnP+NPUZxk8nSUn4xnGp5Xhm6K6CnfI3p1HRtJokJxy8lNykXzOTvjERHGsrmJ9KgCiZqQ0GFxCbUbN/C5ZnqEmLKNbFW7wkxMAB9AbN/BT3PQyFZB/9niLSZjTpH5dw3/OD3eCoiJORz3Za0L8bur+IZLMm6zhGJSRj20Bm640X0YY1RiN2kfanEEq8F66W+HsiTtpMapQLYfQrN/VkFmw3fzifYTICMv6gL3EagthCMNCnfHSE1zm+ppA==; Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1sgSl3-0000pT-NA for bug-gnu-emacs@gnu.org; Tue, 20 Aug 2024 13:35:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Jim Porter Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 20 Aug 2024 17:35:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72721 X-GNU-PR-Package: emacs Original-Received: via spool by 72721-submit@debbugs.gnu.org id=B72721.17241752993174 (code B ref 72721); Tue, 20 Aug 2024 17:35:01 +0000 Original-Received: (at 72721) by debbugs.gnu.org; 20 Aug 2024 17:34:59 +0000 Original-Received: from localhost ([127.0.0.1]:33614 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sgSl0-0000p6-J0 for submit@debbugs.gnu.org; Tue, 20 Aug 2024 13:34:59 -0400 Original-Received: from mail-pf1-f174.google.com ([209.85.210.174]:53297) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sgSkx-0000oj-4w for 72721@debbugs.gnu.org; Tue, 20 Aug 2024 13:34:56 -0400 Original-Received: by mail-pf1-f174.google.com with SMTP id d2e1a72fcca58-7141feed424so254044b3a.2 for <72721@debbugs.gnu.org>; Tue, 20 Aug 2024 10:34:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724175186; x=1724779986; darn=debbugs.gnu.org; h=in-reply-to:from:references:cc:to:content-language:subject :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=B5eD/gCdL9xfs+js1E4aVeCsLEfxnwYRu6FS+hmcxr8=; b=GdhdALewUda6NP9DPX3peng0FI68Fc8/0nI+XeiXIO/EuLXsOVPhvwB6fpymoEjM1X Dv0ptGq29xRREnHWJI68YM/sk4Y2DqBfyA/nVE3lCoqyIVp27mKy1Pkotp/p1fbGtkbO MVdR306+Zp0pxZxyYe8ePTAk22M6ZcDqHlXktF+zOKxpygKqGJhajy1mAf1ggdn2TPXc M5ZApOoJKzaGvmNIOTppUUMry5dbztTYY71/8aZ7920ibViw/+eRZLYi5SIGXhlee5nE oabOmXjHOyjzErdnTprd4ZR+mfQn95VhuZWs+6p+PIviMhBoN9q9zAT2tvMEjLt6kYp0 J+9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724175186; x=1724779986; h=in-reply-to:from:references:cc:to:content-language:subject :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=B5eD/gCdL9xfs+js1E4aVeCsLEfxnwYRu6FS+hmcxr8=; b=qZk1adqGx91DHv51AWqmxtWwZODrZ06kzr1QdlrN/wti46AbVVy/2sFwKXsTrtMyne CDSG6kLWydX2JcnBeEhipEEXPlh63+CQV+SYSqU97KzgVaI/nKPHfHKnXPx++lyIcC7L cYLHkq+62d/qmYoiKeJXHdXj/W9h2aycF3XvCr8EaEtJY5Il01019XynvjQrVf8/BeyI JpvurdnrmybfsVxw7OBQWnVgOHdevuOquzKXFRKEIRRV4xuplxUeZR//lYxwEwBFeI3p WC6joR+6EwWB4m44qMp4yAwuKHegQIoM3CMgOES9iOcyYQLZ65CZ+ArOhr97JLeYPjXZ fdQg== X-Gm-Message-State: AOJu0YwbP0urfPWFM0bTYO++CzUp6ALF0jdoPKet7CR61KzLKfRDUAo3 alsEY+bTIgkCfgc0Yi6QCpAlFejYbzTxvYdxrdQ8tOof5gANqZ+l X-Google-Smtp-Source: AGHT+IFLSXHE4bElUHKHtkTjpMLm4Snnr+TcRf0MONpyAOA2o0N5U7I9vDWSeqDKb93hL671rJGY8A== X-Received: by 2002:a05:6a20:c78e:b0:1c3:b1e2:f826 with SMTP id adf61e73a8af0-1cad8352b82mr80647637.35.1724175185749; Tue, 20 Aug 2024 10:33:05 -0700 (PDT) Original-Received: from [192.168.1.2] (syn-023-240-098-037.res.spectrum.com. [23.240.98.37]) by smtp.googlemail.com with ESMTPSA id d2e1a72fcca58-7141fe23514sm246880b3a.80.2024.08.20.10.33.04 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 20 Aug 2024 10:33:05 -0700 (PDT) Content-Language: en-US In-Reply-To: <86jzgbwgud.fsf@gnu.org> 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:290459 Archived-At: This is a multi-part message in MIME format. --------------6eyFOUt0P2yOv5TSTflDG2Z8 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 8/20/2024 4:53 AM, Eli Zaretskii wrote: >> Date: Mon, 19 Aug 2024 17:46:18 -0700 >> Cc: eliz@gnu.org >> From: Jim Porter >> >> On 8/19/2024 2:39 PM, Gautier Ponsinet wrote: >>> Hello everyone, >>> >>> The new visual-wrap-prefix-mode breaks the rendering of the Magit Log >>> buffers. >>> >>> In emacs -Q: >>> * Install Magit and its dependencies and load Magit. >>> * Go to a local repository (via M-x dired or M-x cd). >>> * M-x global-visual-wrap-prefix-mode >>> * M-x magit-log-current >>> >>> Could someone please confirm/reproduce? >> >> I can confirm this. I'm not quite sure of all the details, but it seem >> that this is due to a bad interaction between overlays and the >> 'min-width' display spec. The end result was that we were calling >> 'get-text-property' with a (large-ish) buffer position when the OBJECT >> arg was a string of length 1. That can happen in magit-log on the >> mostly-blank line where it's making the ASCII art just below a merge >> commit. (The leading whitespace makes 'visual-wrap-prefix-mode' do its >> thing.) >> >> I'm not super familiar with how the display engine works, but I think we >> don't want to call 'display_min_width' when we're working with an >> overlay. See the attached patch. > > I'd appreciate a reproducer without Magit, as I don't have it > installed and would prefer not to have to. Me too... I haven't been able to get a reduced test case yet since Magit is pretty complex and I haven't figured out what it's doing exactly. It *seems* to be due to overlays, but I only know that from examining things in GDB. I haven't deciphered the relevant Magit code yet. >> Eli, I'm sure you understand this code much better than me. Does the >> above make sense? I can also try to improve the commentary in the code, >> but I'm just making some educated guesses as to what's happening here. > > It looks like you are breaking min-width support for display strings? > They are used on the mode line and also in other places, and in > general, min-width should treat buffers and strings alike. Can you > explain the motivation for the proposed changes, and describe what you > saw with the current code in this case? Where's the call to > get-text-property and why did it use a buffer position instead of a > string position? You're probably right. I think my patch was a little over-aggressive (see attached for a more-surgical one). This patch may still be wrong, but hopefully it gets a bit closer to what we want. I think this is what's happening, in a bit more detail: magit-log-current uses overlays (I think to set up the right margin text?). When visual-wrap-prefix-mode ("vwpm") is enabled, the display engine goes through the buffer, finds the 'min-width' display property from vwpm and holds onto it. Next, it starts processing an overlay. Eventually, that calls 'handle_display_prop' for the overlay which calls 'display_min_width'. At this point, we have an object stored in 'it->min_width_property' (thanks to vwpm), the local variable 'object' is the overlay string, and 'bufpos' is the actual buffer position. Finally we call 'get_display_property' with the bufpos and object (which calls 'Fget_text_property'), and kaboom: 'object' is a string of length 1, but bufpos is much larger (~400 in my test). I've also attached a backtrace, though I'm not sure how informative it is on its own. --------------6eyFOUt0P2yOv5TSTflDG2Z8 Content-Type: text/plain; charset=UTF-8; name="0001-Fix-bad-interaction-between-min-width-display-spec-a.patch" Content-Disposition: attachment; filename*0="0001-Fix-bad-interaction-between-min-width-display-spec-a.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxM2ZlNjhlYmMyZWIyZmU3Y2EwZWU0YWM0NzMzYjNhYmMzZWQwY2FiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IE1vbiwgMTkgQXVnIDIwMjQgMTc6Mzg6NDcgLTA3MDAKU3ViamVjdDogW1BB VENIXSBGaXggYmFkIGludGVyYWN0aW9uIGJldHdlZW4gJ21pbi13aWR0aCcgZGlzcGxheSBz cGVjIGFuZAogb3ZlcmxheXMKClByZXZpb3VzbHksIHdoZW4gaXRlcmF0aW5nIG92ZXIgb3Zl cmxheXMsIHdlIHdvdWxkIHBhc3MgdGhlIG92ZXJsYXkKc3RyaW5nIGFuZCB0aGUgYnVmZmVy IHBvc2l0aW9uIHRvICdkaXNwbGF5X21pbl93aWR0aCcsIHdoaWNoIHdvdWxkIHVzZQp0aG9z ZSB2YWx1ZXMgdG8gdHJ5IHRvIGdldCB0aGUgZGlzcGxheSBwcm9wZXJ0eS4gIEhvd2V2ZXIs IHRoZSBidWZmZXIKcG9zaXRpb24gaXMgdmVyeSBsaWtlbHkgb3V0IG9mIGJvdW5kcyBmb3Ig dGhlIG92ZXJsYXkgc3RyaW5nIQoKKiBzcmMveGRpc3AuYyAoZ2V0X2Rpc3BsYXlfcHJvcGVy dHkpOiBSZW5hbWUgQlVGUE9TIHRvIENIQVJQT1MuCihkaXNwbGF5X21pbl93aWR0aCk6IFRh a2UgQ0hBUlBPUyBpbnN0ZWFkIG9mIEJVRlBPUywgYW5kIGdldCBCVUZQT1Mgb24Kb3VyIG93 bi4gIFRoaXMgd2F5LCB3ZSBjYW4gYmUgc3VyZSB0aGF0IHdoZW4gY2FsbGluZwonZ2V0X2Rp c3BsYXlfcHJvcGVydHknLCB3ZSBwcm92aWRlIGl0IHdpdGggdGhlIGNvcnJlY3Qga2luZCBv ZiBwb3NpdGlvbi4KKGhhbmRsZV9kaXNwbGF5X3Byb3ApOiBQYXNzIHRoZSBjaGFyYWN0ZXIg cG9zIG9mIE9CSkVDVCdzIHBvc2l0aW9uIHRvCidkaXNwbGF5X21pbl93aWR0aCcgKGJ1ZyM3 MjcyMSkuCi0tLQogc3JjL3hkaXNwLmMgfCAyMCArKysrKysrKysrKy0tLS0tLS0tLQogMSBm aWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL3hkaXNwLmMgYi9zcmMveGRpc3AuYwppbmRleCAzMDc3MWExYzgzZC4uYWY5 M2E4MjRiZWUgMTAwNjQ0Ci0tLSBhL3NyYy94ZGlzcC5jCisrKyBiL3NyYy94ZGlzcC5jCkBA IC01NjMzLDE3ICs1NjMzLDE5IEBAIGZpbmRfZGlzcGxheV9wcm9wZXJ0eSAoTGlzcF9PYmpl Y3QgZGlzcCwgTGlzcF9PYmplY3QgcHJvcCkKIH0KIAogc3RhdGljIExpc3BfT2JqZWN0Ci1n ZXRfZGlzcGxheV9wcm9wZXJ0eSAocHRyZGlmZl90IGJ1ZnBvcywgTGlzcF9PYmplY3QgcHJv cCwgTGlzcF9PYmplY3Qgb2JqZWN0KQorZ2V0X2Rpc3BsYXlfcHJvcGVydHkgKHB0cmRpZmZf dCBjaGFycG9zLCBMaXNwX09iamVjdCBwcm9wLCBMaXNwX09iamVjdCBvYmplY3QpCiB7Ci0g IHJldHVybiBmaW5kX2Rpc3BsYXlfcHJvcGVydHkgKEZnZXRfdGV4dF9wcm9wZXJ0eSAobWFr ZV9maXhudW0gKGJ1ZnBvcyksCisgIHJldHVybiBmaW5kX2Rpc3BsYXlfcHJvcGVydHkgKEZn ZXRfdGV4dF9wcm9wZXJ0eSAobWFrZV9maXhudW0gKGNoYXJwb3MpLAogCQkJCQkJICAgIFFk aXNwbGF5LCBvYmplY3QpLAogCQkJCXByb3ApOwogfQogCiBzdGF0aWMgdm9pZAotZGlzcGxh eV9taW5fd2lkdGggKHN0cnVjdCBpdCAqaXQsIHB0cmRpZmZfdCBidWZwb3MsCitkaXNwbGF5 X21pbl93aWR0aCAoc3RydWN0IGl0ICppdCwgcHRyZGlmZl90IGNoYXJwb3MsCiAJCSAgIExp c3BfT2JqZWN0IG9iamVjdCwgTGlzcF9PYmplY3Qgd2lkdGhfc3BlYykKIHsKKyAgcHRyZGlm Zl90IGJ1ZnBvcyA9IENIQVJQT1MgKGl0LT5jdXJyZW50LnBvcyk7CisKICAgLyogV2UncmUg YmVpbmcgY2FsbGVkIGF0IHRoZSBlbmQgb2YgdGhlIGBtaW4td2lkdGgnIHNlcXVlbmNlLAog ICAgICBwcm9iYWJseS4gKi8KICAgaWYgKCFOSUxQIChpdC0+bWluX3dpZHRoX3Byb3BlcnR5 KQpAQCAtNTY1OCw5ICs1NjYwLDkgQEAgZGlzcGxheV9taW5fd2lkdGggKHN0cnVjdCBpdCAq aXQsIHB0cmRpZmZfdCBidWZwb3MsCiAJCSAgIGdldF9kaXNwbGF5X3Byb3BlcnR5ICgwLCBR bWluX3dpZHRoLCBvYmplY3QpKSkKIAkgIC8qIEluIGEgYnVmZmVyIC0tIGNoZWNrIHRoYXQg d2UncmUgcmVhbGx5IHJpZ2h0IGFmdGVyIHRoZQogCSAgICAgc2VxdWVuY2Ugb2YgY2hhcmFj dGVycyBjb3ZlcmVkIGJ5IHRoaXMgYG1pbi13aWR0aCcuICAqLwotCSAgfHwgKGJ1ZnBvcyA+ IEJFR1YKKwkgIHx8IChidWZwb3MgPiBCRUdWICYmIGNoYXJwb3MgPiAwCiAJICAgICAgJiYg RVEgKGl0LT5taW5fd2lkdGhfcHJvcGVydHksCi0JCSAgICAgZ2V0X2Rpc3BsYXlfcHJvcGVy dHkgKGJ1ZnBvcyAtIDEsIFFtaW5fd2lkdGgsIG9iamVjdCkpKSkKKwkJICAgICBnZXRfZGlz cGxheV9wcm9wZXJ0eSAoY2hhcnBvcyAtIDEsIFFtaW5fd2lkdGgsIG9iamVjdCkpKSkKIAl7 CiAJICBMaXNwX09iamVjdCB3ID0gUW5pbDsKIAkgIGRvdWJsZSB3aWR0aDsKQEAgLTU3MTMs OSArNTcxNSw5IEBAIGRpc3BsYXlfbWluX3dpZHRoIChzdHJ1Y3QgaXQgKml0LCBwdHJkaWZm X3QgYnVmcG9zLAogCSAgICAgICYmICFFUSAoaXQtPm1pbl93aWR0aF9wcm9wZXJ0eSwKIAkJ ICAgICAgZ2V0X2Rpc3BsYXlfcHJvcGVydHkgKDAsIFFtaW5fd2lkdGgsIG9iamVjdCkpKQog CSAgLyogQnVmZmVyLiAgKi8KLQkgIHx8IChidWZwb3MgPiBCRUdWCisJICB8fCAoYnVmcG9z ID4gQkVHViAmJiBjaGFycG9zID4gMAogCSAgICAgICYmICFFUSAod2lkdGhfc3BlYywKLQkJ ICAgICAgZ2V0X2Rpc3BsYXlfcHJvcGVydHkgKGJ1ZnBvcyAtIDEsIFFtaW5fd2lkdGgsIG9i amVjdCkpKSkKKwkJICAgICAgZ2V0X2Rpc3BsYXlfcHJvcGVydHkgKGNoYXJwb3MgLSAxLCBR bWluX3dpZHRoLCBvYmplY3QpKSkpCiAJewogCSAgaXQtPm1pbl93aWR0aF9wcm9wZXJ0eSA9 IHdpZHRoX3NwZWM7CiAJICBpdC0+bWluX3dpZHRoX3N0YXJ0ID0gaXQtPmN1cnJlbnRfeDsK QEAgLTU3OTUsMTAgKzU3OTcsMTAgQEAgaGFuZGxlX2Rpc3BsYXlfcHJvcCAoc3RydWN0IGl0 ICppdCkKICAgaWYgKCFTVFJJTkdQIChpdC0+c3RyaW5nKSkKICAgICBvYmplY3QgPSBpdC0+ dy0+Y29udGVudHM7CiAKLSAgLyogSGFuZGxlIG1pbi13aWR0aCBlbmRzLiAqLworICAvKiBI YW5kbGUgbWluLXdpZHRoIGVuZHMsIGV4Y2VwdCB3aGVuIHByb2Nlc3NpbmcgYW4gb3Zlcmxh eS4gICovCiAgIGlmICghTklMUCAoaXQtPm1pbl93aWR0aF9wcm9wZXJ0eSkKICAgICAgICYm IE5JTFAgKGZpbmRfZGlzcGxheV9wcm9wZXJ0eSAocHJvcHZhbCwgUW1pbl93aWR0aCkpKQot ICAgIGRpc3BsYXlfbWluX3dpZHRoIChpdCwgYnVmcG9zLCBvYmplY3QsIFFuaWwpOworICAg IGRpc3BsYXlfbWluX3dpZHRoIChpdCwgQ0hBUlBPUyAoKnBvc2l0aW9uKSwgb2JqZWN0LCBR bmlsKTsKIAogICBpZiAoTklMUCAocHJvcHZhbCkpCiAgICAgcmV0dXJuIEhBTkRMRURfTk9S TUFMTFk7Ci0tIAoyLjI1LjEKCg== --------------6eyFOUt0P2yOv5TSTflDG2Z8 Content-Type: text/plain; charset=UTF-8; name="backtrace.txt" Content-Disposition: attachment; filename="backtrace.txt" Content-Transfer-Encoding: base64 IzAgIHJhaXNlIChzaWc9c2lnQGVudHJ5PTUpIGF0IC4uL3N5c2RlcHMvdW5peC9zeXN2L2xp bnV4L3JhaXNlLmM6NTAKIzEgIDB4MDAwMDU1NTU1NTVlNzhhYSBpbiBkaXNwbGF5X21pbl93 aWR0aAogICAgKGl0PWl0QGVudHJ5PTB4N2ZmZmZmZmY3NTAwLCBidWZwb3M9YnVmcG9zQGVu dHJ5PTQ0MCwgb2JqZWN0PW9iamVjdEBlbnRyeT0weDU1NTU1NzJhMmYxNCwgd2lkdGhfc3Bl Yz13aWR0aF9zcGVjQGVudHJ5PTB4MCkgYXQgLi4vLi4vc3JjL3hkaXNwLmM6NTY1MwojMiAg MHgwMDAwNTU1NTU1NWU5ZmUwIGluIGhhbmRsZV9kaXNwbGF5X3Byb3AgKGl0PTB4N2ZmZmZm ZmY3NTAwKQogICAgYXQgLi4vLi4vc3JjL2xpc3AuaDoxMTc4CiMzICAweDAwMDA1NTU1NTU1 ZTJmODUgaW4gaGFuZGxlX3N0b3AgKGl0PTB4N2ZmZmZmZmY3NTAwKQogICAgYXQgLi4vLi4v c3JjL3hkaXNwLmM6NDE2MgojNCAgMHgwMDAwNTU1NTU1NWYwOTk4IGluIG5leHRfZWxlbWVu dF9mcm9tX2J1ZmZlciAoaXQ9MHg3ZmZmZmZmZjc1MDApCiAgICBhdCAuLi8uLi9zcmMveGRp c3AuYzo5NzAxCiM1ICAweDAwMDA1NTU1NTU1ZWU2NzUgaW4gZ2V0X25leHRfZGlzcGxheV9l bGVtZW50IChpdD1pdEBlbnRyeT0weDdmZmZmZmZmNzUwMCkKICAgIGF0IC4uLy4uL3NyYy94 ZGlzcC5jOjgyNjcKIzYgIDB4MDAwMDU1NTU1NTVmNGVhOCBpbiBkaXNwbGF5X2xpbmUKICAg IChpdD0weDdmZmZmZmZmNzUwMCwgY3Vyc29yX3Zwb3M9PG9wdGltaXplZCBvdXQ+KSBhdCAu Li8uLi9zcmMveGRpc3AuYzoyNTM5NQojNyAgMHgwMDAwNTU1NTU1NWY5OGYxIGluIHRyeV93 aW5kb3cKICAgICh3aW5kb3c9d2luZG93QGVudHJ5PTB4NTU1NTU3MmUxZWNkLCBwb3M9Li4u LCBmbGFncz1mbGFnc0BlbnRyeT0xKQogICAgYXQgLi4vLi4vc3JjL3hkaXNwLmM6MjEyMTQK IzggIDB4MDAwMDU1NTU1NTYxODc5MCBpbiByZWRpc3BsYXlfd2luZG93CiAgICAod2luZG93 PTB4NTU1NTU3MmUxZWNkLCBqdXN0X3RoaXNfb25lX3A9PG9wdGltaXplZCBvdXQ+KQogICAg YXQgLi4vLi4vc3JjL3hkaXNwLmM6MjA1OTQKIzkgIDB4MDAwMDU1NTU1NTYxYWRlMyBpbiBy ZWRpc3BsYXlfd2luZG93XzAKICAgICh3aW5kb3c9d2luZG93QGVudHJ5PTB4NTU1NTU3MmUx ZWNkKSBhdCAuLi8uLi9zcmMveGRpc3AuYzoxODA3NwojMTAgMHgwMDAwNTU1NTU1NzY3NmZj IGluIGludGVybmFsX2NvbmRpdGlvbl9jYXNlXzEKICAgIChiZnVuPWJmdW5AZW50cnk9MHg1 NTU1NTU2MWFkYjAgPHJlZGlzcGxheV93aW5kb3dfMD4sIGFyZz1hcmdAZW50cnk9MHg1NTU1 NTcyZTFlY2QsIGhhbmRsZXJzPTxvcHRpbWl6ZWQgb3V0PiwgaGZ1bj1oZnVuQGVudHJ5PTB4 NTU1NTU1NWQyMzgwIDxyZWRpc3BsYXlfd2luZG93X2Vycm9yPikgYXQgLi4vLi4vc3JjL2V2 YWwuYzoxNjIyCiMxMSAweDAwMDA1NTU1NTU1Y2VmZjkgaW4gcmVkaXNwbGF5X3dpbmRvd3Mg KHdpbmRvdz0weDU1NTU1NzJlMWVjZCkKICAgIGF0IC4uLy4uL3NyYy94ZGlzcC5jOjE4MDQ2 CiMxMiAweDAwMDA1NTU1NTU1Y2YwMWQgaW4gcmVkaXNwbGF5X3dpbmRvd3MgKHdpbmRvdz0w eDU1NTU1NzJlMWNhZCkKICAgIGF0IC4uLy4uL3NyYy94ZGlzcC5jOjE4MDQwCiMxMyAweDAw MDA1NTU1NTU2MDE5YzYgaW4gcmVkaXNwbGF5X2ludGVybmFsICgpIGF0IC4uLy4uL3NyYy94 ZGlzcC5jOjE3NDQ1CiMxNCAweDAwMDA1NTU1NTU2ZWI1YjYgaW4gcmVhZF9jaGFyCiAgICAo Y29tbWFuZGZsYWc9MSwgbWFwPTB4N2ZmZmU3NGE3YWQzLCBwcmV2X2V2ZW50PTB4MCwgdXNl ZF9tb3VzZV9tZW51PTB4N2ZmZmZmZmZkZDhiLCBlbmRfdGltZT0weDApIGF0IC4uLy4uL3Ny Yy9rZXlib2FyZC5jOjI2NzMKIzE1IDB4MDAwMDU1NTU1NTZlZGVkNSBpbiByZWFkX2tleV9z ZXF1ZW5jZQogICAgKGtleWJ1Zj0weDdmZmZmZmZmZGVlMCwgcHJvbXB0PTB4MCwgZG9udF9k b3duY2FzZV9sYXN0PTxvcHRpbWl6ZWQgb3V0PiwgY2FuX3JldHVybl9zd2l0Y2hfZnJhbWU9 dHJ1ZSwgZml4X2N1cnJlbnRfYnVmZmVyPXRydWUsIHByZXZlbnRfcmVkaXNwbGF5PTxvcHRp bWl6ZWQgb3V0PiwgZGlzYWJsZV90ZXh0X2NvbnZlcnNpb25fcD1mYWxzZSkgYXQgLi4vLi4v c3JjL2tleWJvYXJkLmM6MTA3NDcKIzE2IDB4MDAwMDU1NTU1NTZlZmNjZiBpbiBjb21tYW5k X2xvb3BfMSAoKSBhdCAuLi8uLi9zcmMvbGlzcC5oOjExNzgKIzE3IDB4MDAwMDU1NTU1NTc2 NzY2NyBpbiBpbnRlcm5hbF9jb25kaXRpb25fY2FzZQogICAgKGJmdW49YmZ1bkBlbnRyeT0w eDU1NTU1NTZlZmIwMCA8Y29tbWFuZF9sb29wXzE+LCBoYW5kbGVycz1oYW5kbGVyc0BlbnRy eT0weDkwLCBoZnVuPWhmdW5AZW50cnk9MHg1NTU1NTU2ZTJmOTAgPGNtZF9lcnJvcj4pIGF0 IC4uLy4uL3NyYy9ldmFsLmM6MTU5OAojMTggMHgwMDAwNTU1NTU1NmRiNmVhIGluIGNvbW1h bmRfbG9vcF8yIChoYW5kbGVycz1oYW5kbGVyc0BlbnRyeT0weDkwKQogICAgYXQgLi4vLi4v c3JjL2tleWJvYXJkLmM6MTE2MwojMTkgMHgwMDAwNTU1NTU1NzY3NTU5IGluIGludGVybmFs X2NhdGNoCiAgICAodGFnPXRhZ0BlbnRyeT0weDEyNDUwLCBmdW5jPWZ1bmNAZW50cnk9MHg1 NTU1NTU2ZGI2YzAgPGNvbW1hbmRfbG9vcF8yPiwgYXJnPWFyZ0BlbnRyeT0weDkwKSBhdCAu Li8uLi9zcmMvZXZhbC5jOjEyNzcKIzIwIDB4MDAwMDU1NTU1NTZkYjY4NiBpbiBjb21tYW5k X2xvb3AgKCkgYXQgLi4vLi4vc3JjL2xpc3AuaDoxMTc4CiMyMSAweDAwMDA1NTU1NTU2ZTJh ZTcgaW4gcmVjdXJzaXZlX2VkaXRfMSAoKSBhdCAuLi8uLi9zcmMva2V5Ym9hcmQuYzo3NDkK IzIyIDB4MDAwMDU1NTU1NTZlMmVhNCBpbiBGcmVjdXJzaXZlX2VkaXQgKCkgYXQgLi4vLi4v c3JjL2tleWJvYXJkLmM6ODMyCiMyMyAweDAwMDA1NTU1NTU1YjI4YzMgaW4gbWFpbiAoYXJn Yz08b3B0aW1pemVkIG91dD4sIGFyZ3Y9PG9wdGltaXplZCBvdXQ+KQogICAgYXQgLi4vLi4v c3JjL2VtYWNzLmM6MjYyNAo= --------------6eyFOUt0P2yOv5TSTflDG2Z8--