From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Juanma Barranquero Newsgroups: gmane.emacs.devel Subject: Re: Native line numbers landed on master Date: Mon, 7 Oct 2019 02:14:05 +0200 Message-ID: References: <834l4xbfmp.fsf@gnu.org> <87ef414dfn.fsf@wavexx.thregr.org> <83o9359w3l.fsf@gnu.org> <83eezycce5.fsf@gnu.org> <87muekj0i9.fsf@wavexx.thregr.org> <87d0fgagjl.fsf@gnus.org> <20191001225254.mwjnxlynjdc3mz7y@Ergus> <83lfu389vn.fsf@gnu.org> <87ftk9v4kx.fsf@wavexx.thregr.org> <83wodl54yt.fsf@gnu.org> <87pnjchm7p.fsf@wavexx.thregr.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000001e396c059446f07c" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="49028"; mail-complaints-to="usenet@blaine.gmane.org" Cc: spacibba@aol.com, rpluim@gmail.com, stefan@marxist.se, Emacs developers , Lars Magne Ingebrigtsen , Eli Zaretskii To: "Yuri D'Elia" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Oct 07 02:34:02 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1iHGyP-000Cb0-HA for ged-emacs-devel@m.gmane.org; Mon, 07 Oct 2019 02:34:01 +0200 Original-Received: from localhost ([::1]:39260 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHGyN-0008JQ-N1 for ged-emacs-devel@m.gmane.org; Sun, 06 Oct 2019 20:33:59 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:60804) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHGxp-0008Hr-7l for emacs-devel@gnu.org; Sun, 06 Oct 2019 20:33:26 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iHGxo-0007Fd-4L for emacs-devel@gnu.org; Sun, 06 Oct 2019 20:33:25 -0400 Original-Received: from mail-qt1-x82b.google.com ([2607:f8b0:4864:20::82b]:34530) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iHGfi-0006mh-MY; Sun, 06 Oct 2019 20:14:42 -0400 Original-Received: by mail-qt1-x82b.google.com with SMTP id 3so16863225qta.1; Sun, 06 Oct 2019 17:14:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=xF2tnwChLymk77GrQHzkWirRorEjpEB5dWzJ7aIeEpI=; b=bCQEXMQxEvPSKMCsYWWL8HsWJvuZquOUWXocmEUu7M3xVViOB9WIZk/Zgeq6Y0ysSa a5271jMoyUbDb04zstYofCrmPQlZs7z9R1sa16sPC8BmkBh+ZJiRn59aXBtlXELDFF3J THVtXqfzQ5safu7dkfJervHbKDjkD7vsQNvIjBToW61PLWz/NmIL++iIk4M9WKHbnohI 04dcLi8M5fPzIbVMAnSuTtKQrv289hTtwUnVxxgNQZxxnY+F2wmsB5NTESRulydLLNGA GmqCT2+3bj0Az4Tw9YdKilC1lLqOilZGdt7aJQwC/ivg7QbrGbNG04AXHawG6i1HRfln vZQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=xF2tnwChLymk77GrQHzkWirRorEjpEB5dWzJ7aIeEpI=; b=dUdojcglmPNYxsKQr0A2WUai4DVDmGmCzgMXDhGGlEXWSJ0OqqpsFxTQuId4T3UOCm 4K6bbbR/sOSFMpb1jW2yPucSXUWoz8zoa0QmgVEkfmKj1/gjoEXd6Nu4WHje4CdH1vAg 4cK2Xgn8nlzCIluzPjVpsGxuf1auqMJ5EDjEmgojZhSNupNABkYaofS8BXhhjh4B8WPo YQBWAg5P3j+fOrwKd4w8DQXrqBw2q2vjot4sA2lsy8UUbAFeQ+eS+a31glKqbE9gGR7f wWJFtM6+yEFoPtHaA0E0ib7RenxhFhV+rOl6nQ42B/25vv7KFbvp21zSxC/l6Hl02Dip zMag== X-Gm-Message-State: APjAAAWpEXPkK8qf0HniQ5xUGm8RwniascyEEs33JqqLU1DvpaYlusMp 4+5qzk8muAN4ogQdp8/uI+V+IXOvwxURkFpvhPk= X-Google-Smtp-Source: APXvYqwSoOE0juKpKQF0ZYxmY0tfheuWvMv+2PZBL1gSs1GWrBoA5tiFXQ91RUn2HaoNtcOOEhn5pNV2gg+bzn1PeHI= X-Received: by 2002:a05:6214:1549:: with SMTP id t9mr25420321qvw.68.1570407280669; Sun, 06 Oct 2019 17:14:40 -0700 (PDT) In-Reply-To: X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::82b X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:240684 Archived-At: --0000000000001e396c059446f07c Content-Type: multipart/alternative; boundary="0000000000001e3969059446f07a" --0000000000001e3969059446f07a Content-Type: text/plain; charset="UTF-8" This implements display-line-numbers-offset, and adds info, NEWS, etc. Better wording welcome, as always. The variable is automatically buffer-local because I don't imagine that there's a good default value (other than zero) and each buffer that uses it will want its own. I've done some testing, but more eyes would be great. As an aside, this allows some dirty tricks, like numbering from 0 (by setting it to -1), or this funny monstrosity, which allows to reverse-count the buffer: (let ((old nil) (buf (current-buffer))) (add-hook 'before-change-functions (lambda (beg end) (when (eq buf (current-buffer)) (setq old (count-lines beg end))))) (add-hook 'after-change-functions (lambda (beg end _len) (when (and (eq buf (current-buffer)) old (/= old (count-lines beg end))) (setq display-line-numbers-offset (- -1 (count-lines (point-min) (point-max))) old nil))))) Of course, if the buffer is immutable, this is just (setq display-line-numbers-offset (- -1 (count-lines (point-min) (point-max)))) in some mode hook. --0000000000001e3969059446f07a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+VGhpcyBpbXBsZW1lbnRzIGRpc3BsYXktbGluZS1udW1iZXJzLW9mZnNl dCwgYW5kIGFkZHMgaW5mbywgTkVXUywgZXRjLiBCZXR0ZXIgd29yZGluZyB3ZWxjb21lLCBhcyBh bHdheXMuIFRoZSB2YXJpYWJsZSBpcyBhdXRvbWF0aWNhbGx5IGJ1ZmZlci1sb2NhbCBiZWNhdXNl IEkgZG9uJiMzOTt0IGltYWdpbmUgdGhhdCB0aGVyZSYjMzk7cyBhIGdvb2QgZGVmYXVsdCB2YWx1 ZSAob3RoZXIgdGhhbiB6ZXJvKSBhbmQgZWFjaCBidWZmZXIgdGhhdCB1c2VzIGl0IHdpbGwgd2Fu dCBpdHMgb3duLjxkaXY+PGJyPjwvZGl2PjxkaXY+SSYjMzk7dmUgZG9uZSBzb21lIHRlc3Rpbmcs IGJ1dCBtb3JlIGV5ZXMgd291bGQgYmUgZ3JlYXQuPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5B cyBhbiBhc2lkZSwgdGhpcyBhbGxvd3Mgc29tZSBkaXJ0eSB0cmlja3MsIGxpa2UgbnVtYmVyaW5n IGZyb20gMCAoYnkgc2V0dGluZyBpdCB0byAtMSksIG9yIHRoaXMgZnVubnkgbW9uc3Ryb3NpdHks IHdoaWNoIGFsbG93cyB0byByZXZlcnNlLWNvdW50IHRoZSBidWZmZXI6PGJyPjxicj7CoCAobGV0 ICgob2xkIG5pbCk8YnI+wqAgwqAgwqAgwqAgKGJ1ZiAoY3VycmVudC1idWZmZXIpKSk8YnI+wqAg wqAgKGFkZC1ob29rICYjMzk7YmVmb3JlLWNoYW5nZS1mdW5jdGlvbnM8YnI+wqAgwqAgwqAgwqAg wqAgwqAgwqAgKGxhbWJkYSAoYmVnIGVuZCk8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKHdo ZW4gKGVxIGJ1ZiAoY3VycmVudC1idWZmZXIpKTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCAoc2V0cSBvbGQgKGNvdW50LWxpbmVzIGJlZyBlbmQpKSkpKTxicj7CoCDCoCAoYWRkLWhvb2sg JiMzOTthZnRlci1jaGFuZ2UtZnVuY3Rpb25zPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIChsYW1i ZGEgKGJlZyBlbmQgX2xlbik8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKHdoZW4gKGFuZCAo ZXEgYnVmIChjdXJyZW50LWJ1ZmZlcikpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgb2xkPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgKC89IG9sZCAoY291bnQtbGluZXMgYmVnIGVuZCkpKTxicj7CoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCAoc2V0cSBkaXNwbGF5LWxpbmUtbnVtYmVycy1vZmZzZXQgKC0gLTE8YnI+wqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAoY291bnQtbGluZXMgKHBvaW50LW1pbik8YnI+wqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKHBvaW50LW1heCkpKTxicj7CoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBvbGQgbmlsKSkpKSk8YnI+PGJyPk9mIGNvdXJzZSwg aWYgdGhlIGJ1ZmZlciBpcyBpbW11dGFibGUsIHRoaXMgaXMganVzdDxicj48YnI+wqAgKHNldHEg ZGlzcGxheS1saW5lLW51bWJlcnMtb2Zmc2V0ICgtIC0xIChjb3VudC1saW5lcyAocG9pbnQtbWlu KSAocG9pbnQtbWF4KSkpKTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+aW4gc29tZSBtb2RlIGhv b2suPC9kaXY+PGRpdj48YnI+PC9kaXY+PC9kaXY+DQo= --0000000000001e3969059446f07a-- --0000000000001e396c059446f07c Content-Type: application/octet-stream; name="0001-Implement-offsets-for-absolute-line-numbers.patch" Content-Disposition: attachment; filename="0001-Implement-offsets-for-absolute-line-numbers.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k1fnkhae0 RnJvbSAyMjNlYmMyYTlhMmE3Y2VjYmZhZTVlODg0ZTBlM2JkYzg5OTVlMDAwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKdWFubWEgQmFycmFucXVlcm8gPGxla2t0dUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgNyBPY3QgMjAxOSAwMToyMjoxNCArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIElt cGxlbWVudCBvZmZzZXRzIGZvciBhYnNvbHV0ZSBsaW5lIG51bWJlcnMKCiogc3JjL3hkaXNwLmMg KHN5bXNfb2ZfeGRpc3ApIDxkaXNwbGF5LWxpbmUtbnVtYmVycy1vZmZzZXQ+OgpOZXcgdmFyaWFi bGUgdG8gYWRkIGFuIG9mZnNldCB0byBhYnNvbHV0ZSBsaW5lIG51bWJlcnMuCihzeW1zX29mX3hk aXNwKSA8ZGlzcGxheS1saW5lLW51bWJlcnM+OiBNZW50aW9uIGl0IGluIGRvY3N0cmluZy4KKG1h eWJlX3Byb2R1Y2VfbGluZV9udW1iZXIpOiBVc2UgaXQuCgoqIGRvYy9lbWFjcy9kaXNwbGF5LnRl eGkgKERpc3BsYXkgQ3VzdG9tKTogRG9jdW1lbnQgaXQuCgoqIGV0Yy9ORVdTICh2YWx1ZSk6IEFu bm91bmNlIGl0LgoKKiBsaXNwL2ZyYW1lLmVsOiBBZGQgYGRpc3BsYXktbGluZS1udW1iZXJzLW9m ZnNldCcgdG8gbGlzdCBvZgp2YXJpYWJsZXMgdG8gd2hpY2ggc2hvdWxkIHRyaWdnZXIgcmVkaXNw bGF5IG9mIHRoZSBjdXJyZW50IGJ1ZmZlci4KLS0tCiBkb2MvZW1hY3MvZGlzcGxheS50ZXhpIHwg IDcgKysrKysrKwogZXRjL05FV1MgICAgICAgICAgICAgICB8ICA0ICsrKysKIGxpc3AvZnJhbWUu ZWwgICAgICAgICAgfCAgMSArCiBzcmMveGRpc3AuYyAgICAgICAgICAgIHwgNDMgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDQ4IGlu c2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL2VtYWNzL2Rpc3Bs YXkudGV4aSBiL2RvYy9lbWFjcy9kaXNwbGF5LnRleGkKaW5kZXggNDA2ZmViOGMxMi4uY2IzN2Vm NDQ4ZSAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL2Rpc3BsYXkudGV4aQorKysgYi9kb2MvZW1hY3Mv ZGlzcGxheS50ZXhpCkBAIC0xODU1LDYgKzE4NTUsMTMgQEAgRGlzcGxheSBDdXN0b20KIHZhbHVl LCBsaW5lIG51bWJlcnMgd2lsbCBkaXNyZWdhcmQgYW55IG5hcnJvd2luZyBhbmQgd2lsbCBzdGFy dCBhdCB0aGUKIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgYnVmZmVyLgogCitAdmluZGV4IGRpc3Bs YXktbGluZS1udW1iZXJzLW9mZnNldAorSWYgdGhlIHZhbHVlIG9mIEBjb2Rle2Rpc3BsYXktbGlu ZS1udW1iZXJzLW9mZnNldH0gaXMgbm9uLXplcm8sIGl0IGlzCithZGRlZCB0byBlYWNoIGFic29s dXRlIGxpbmUgbnVtYmVyLCBhbmQgbGluZXMgYXJlIGNvdW50ZWQgZnJvbSB0aGUKK2JlZ2lubmlu ZyBvZiB0aGUgYnVmZmVyLCBhcyBpZiBAY29kZXtkaXNwbGF5LWxpbmUtbnVtYmVycy13aWRlbn0g d2VyZQorbm9uLUBjb2Rle25pbH0uICBJdCBoYXMgbm8gZWZmZWN0IHdoZW4gc2V0IHRvIHplcm8s IG9yIHdoZW4gbGluZQorbnVtYmVycyBhcmUgbm90IGFic29sdXRlLgorCiBAdmluZGV4IGRpc3Bs YXktbGluZS1udW1iZXJzLXdpZHRoLXN0YXJ0CiBAdmluZGV4IGRpc3BsYXktbGluZS1udW1iZXJz LWdyb3ctb25seQogQHZpbmRleCBkaXNwbGF5LWxpbmUtbnVtYmVycy13aWR0aApkaWZmIC0tZ2l0 IGEvZXRjL05FV1MgYi9ldGMvTkVXUwppbmRleCA0YTMyMzAwMjY4Li5hNDBlYjA2Yjg1IDEwMDY0 NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpAQCAtNTYwLDExICs1NjAsMTUgQEAgbm93 IHByb21wdHMgdGhlIHVzZXIgZm9yIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZGVza3Rv cCBmaWxlLgogCiArKysKICoqIGRpc3BsYXktbGluZS1udW1iZXJzLW1vZGUKKwogKioqIE5ldyBm YWNlcyAnbGluZS1udW1iZXItbWFqb3ItdGljaycgYW5kICdsaW5lLW51bWJlci1taW5vci10aWNr JywKIGFuZCBjdXN0b21pemFibGUgdmFyaWFibGVzICdkaXNwbGF5LWxpbmUtbnVtYmVycy1tYWpv ci10aWNrJyBhbmQKICdkaXNwbGF5LWxpbmUtbnVtYmVycy1taW5vci10aWNrJyBjYW4gYmUgdXNl ZCB0byBoaWdobGlnaHQgdGhlIGxpbmUKIG51bWJlcnMgb2YgbGluZXMgbXVsdGlwbGUgb2YgY2Vy dGFpbiBudW1iZXJzLgogCisqKiogTmV3IHZhcmlhYmxlIGBkaXNwbGF5LWxpbmUtbnVtYmVycy1v ZmZzZXQnLCB3aGVuIG5vbi16ZXJvLCBhZGRzCithbiBvZmZzZXQgdG8gYWJzb2x1dGUgbGluZSBu dW1iZXJzLgorCiArKysKICoqIHdpbm5lcgogKioqIEEgbmV3IHZhcmlhYmxlLCAnd2lubmVyLWJv cmluZy1idWZmZXJzLXJlZ2V4cCcsIGhhcyBiZWVuIGFkZGVkLgpkaWZmIC0tZ2l0IGEvbGlzcC9m cmFtZS5lbCBiL2xpc3AvZnJhbWUuZWwKaW5kZXggNTFiM2I2MjFmZi4uMDE4YzJmNTc4ZSAxMDA2 NDQKLS0tIGEvbGlzcC9mcmFtZS5lbAorKysgYi9saXNwL2ZyYW1lLmVsCkBAIC0yNzI2LDYgKzI3 MjYsNyBAQCAnYXV0b21hdGljLWhzY3JvbGxpbmcKICAgICAgICAgZGlzcGxheS1saW5lLW51bWJl cnMtd2lkZW4KICAgICAgICAgZGlzcGxheS1saW5lLW51bWJlcnMtbWFqb3ItdGljawogICAgICAg ICBkaXNwbGF5LWxpbmUtbnVtYmVycy1taW5vci10aWNrCisgICAgICAgIGRpc3BsYXktbGluZS1u dW1iZXJzLW9mZnNldAogICAgICAgICBkaXNwbGF5LWZpbGwtY29sdW1uLWluZGljYXRvcgogICAg ICAgICBkaXNwbGF5LWZpbGwtY29sdW1uLWluZGljYXRvci1jb2x1bW4KICAgICAgICAgZGlzcGxh eS1maWxsLWNvbHVtbi1pbmRpY2F0b3ItY2hhcmFjdGVyCmRpZmYgLS1naXQgYS9zcmMveGRpc3Au YyBiL3NyYy94ZGlzcC5jCmluZGV4IDFmM2E4MTM2ZjguLjU2M2NmNDczY2YgMTAwNjQ0Ci0tLSBh L3NyYy94ZGlzcC5jCisrKyBiL3NyYy94ZGlzcC5jCkBAIC0yMjUwNiwxMCArMjI1MDYsMjIgQEAg bWF5YmVfcHJvZHVjZV9saW5lX251bWJlciAoc3RydWN0IGl0ICppdCkKICAgcHRyZGlmZl90IHN0 YXJ0X2Zyb20sIGJ5dGVwb3M7CiAgIHB0cmRpZmZfdCB0aGlzX2xpbmU7CiAgIGJvb2wgZmlyc3Rf dGltZSA9IGZhbHNlOwotICBwdHJkaWZmX3QgYmVnX2J5dGUgPSBkaXNwbGF5X2xpbmVfbnVtYmVy c193aWRlbiA/IEJFR19CWVRFIDogQkVHVl9CWVRFOwotICBwdHJkaWZmX3Qgel9ieXRlID0gZGlz cGxheV9saW5lX251bWJlcnNfd2lkZW4gPyBaX0JZVEUgOiBaVl9CWVRFOworICBwdHJkaWZmX3Qg YmVnX2J5dGU7CisgIHB0cmRpZmZfdCB6X2J5dGU7CisgIGJvb2wgbGluZV9udW1iZXJzX3dpZGU7 CiAgIHZvaWQgKml0ZGF0YSA9IGJpZGlfc2hlbHZlX2NhY2hlICgpOwogCisgIGlmIChkaXNwbGF5 X2xpbmVfbnVtYmVyc19vZmZzZXQKKyAgICAgICYmICFkaXNwbGF5X2xpbmVfbnVtYmVyc193aWRl bgorICAgICAgJiYgIUVRIChWZGlzcGxheV9saW5lX251bWJlcnMsIFF2aXN1YWwpCisgICAgICAm JiAhRVEgKFZkaXNwbGF5X2xpbmVfbnVtYmVycywgUXJlbGF0aXZlKSkKKyAgICBsaW5lX251bWJl cnNfd2lkZSA9IHRydWU7CisgIGVsc2UKKyAgICBsaW5lX251bWJlcnNfd2lkZSA9IGRpc3BsYXlf bGluZV9udW1iZXJzX3dpZGVuOworCisgIGJlZ19ieXRlID0gbGluZV9udW1iZXJzX3dpZGUgPyBC RUdfQllURSA6IEJFR1ZfQllURTsKKyAgel9ieXRlID0gbGluZV9udW1iZXJzX3dpZGUgPyBaX0JZ VEUgOiBaVl9CWVRFOworCiAgIGlmIChFUSAoVmRpc3BsYXlfbGluZV9udW1iZXJzLCBRdmlzdWFs KSkKICAgICB0aGlzX2xpbmUgPSBkaXNwbGF5X2NvdW50X2xpbmVzX3Zpc3VhbGx5IChpdCk7CiAg IGVsc2UKQEAgLTIyNTI0LDcgKzIyNTM2LDcgQEAgbWF5YmVfcHJvZHVjZV9saW5lX251bWJlciAo c3RydWN0IGl0ICppdCkKIAkJIG51bWJlcnMsIHNvIHdlIGNhbm5vdCB1c2UgaXRzIGRhdGEgaWYg dGhlIHVzZXIgd2FudHMKIAkJIGxpbmUgbnVtYmVycyB0aGF0IGRpc3JlZ2FyZCBuYXJyb3dpbmcs IG9yIGlmIHRoZQogCQkgYnVmZmVyJ3MgbmFycm93aW5nIGhhcyBqdXN0IGNoYW5nZWQuICAqLwot CSAgICAgICYmICEoZGlzcGxheV9saW5lX251bWJlcnNfd2lkZW4KKwkgICAgICAmJiAhKGxpbmVf bnVtYmVyc193aWRlCiAJCSAgICYmIChCRUdfQllURSAhPSBCRUdWX0JZVEUgfHwgWl9CWVRFICE9 IFpWX0JZVEUpKQogCSAgICAgICYmICFjdXJyZW50X2J1ZmZlci0+Y2xpcF9jaGFuZ2VkKQogCSAg ICB7CkBAIC0yMjYxNCw2ICsyMjYyNiw4IEBAIG1heWJlX3Byb2R1Y2VfbGluZV9udW1iZXIgKHN0 cnVjdCBpdCAqaXQpCiAgICAgbG51bV9vZmZzZXQgPSBpdC0+cHRfbG51bTsKICAgZWxzZSBpZiAo RVEgKFZkaXNwbGF5X2xpbmVfbnVtYmVycywgUXZpc3VhbCkpCiAgICAgbG51bV9vZmZzZXQgPSAw OworICBlbHNlIGlmIChkaXNwbGF5X2xpbmVfbnVtYmVyc19vZmZzZXQpCisgICAgbG51bV9vZmZz ZXQgLT0gZGlzcGxheV9saW5lX251bWJlcnNfb2Zmc2V0OwogCiAgIC8qIFVuZGVyICdyZWxhdGl2 ZScsIGRpc3BsYXkgdGhlIGFic29sdXRlIGxpbmUgbnVtYmVyIGZvciB0aGUKICAgICAgY3VycmVu dCBsaW5lLCB1bmxlc3MgdGhlIHVzZXIgcmVxdWVzdHMgb3RoZXJ3aXNlLiAgKi8KQEAgLTM0NzAx LDEyICszNDcxNSwxOCBAQCBzeW1zX29mX3hkaXNwICh2b2lkKQogCiAgIERFRlZBUl9MSVNQICgi ZGlzcGxheS1saW5lLW51bWJlcnMiLCBWZGlzcGxheV9saW5lX251bWJlcnMsCiAgICAgZG9jOiAv KiBOb24tbmlsIG1lYW5zIGRpc3BsYXkgbGluZSBudW1iZXJzLgorCiBJZiB0aGUgdmFsdWUgaXMg dCwgZGlzcGxheSB0aGUgYWJzb2x1dGUgbnVtYmVyIG9mIGVhY2ggbGluZSBvZiBhIGJ1ZmZlcgog c2hvd24gaW4gYSB3aW5kb3cuICBBYnNvbHV0ZSBsaW5lIG51bWJlcnMgY291bnQgZnJvbSB0aGUg YmVnaW5uaW5nIG9mCi10aGUgY3VycmVudCBuYXJyb3dpbmcsIG9yIGZyb20gYnVmZmVyIGJlZ2lu bmluZy4gIElmIHRoZSB2YWx1ZSBpcwotYHJlbGF0aXZlJywgZGlzcGxheSBmb3IgZWFjaCBsaW5l IG5vdCBjb250YWluaW5nIHRoZSB3aW5kb3cncyBwb2ludCBpdHMKLXJlbGF0aXZlIG51bWJlciBp bnN0ZWFkLCBpLmUuIHRoZSBudW1iZXIgb2YgdGhlIGxpbmUgcmVsYXRpdmUgdG8gdGhlCi1saW5l IHNob3dpbmcgdGhlIHdpbmRvdydzIHBvaW50LgordGhlIGN1cnJlbnQgbmFycm93aW5nLCBvciBm cm9tIGJ1ZmZlciBiZWdpbm5pbmcuICBUaGUgdmFyaWFibGUKK2BkaXNwbGF5LWxpbmUtbnVtYmVy cy1vZmZzZXQnLCBpZiBub24temVybywgaXMgYSBzaWduZWQgb2Zmc2V0IGFkZGVkCit0byBlYWNo IGFic29sdXRlIGxpbmUgbnVtYmVyOyBpdCBhbHNvIGZvcmNlcyBsaW5lIG51bWJlcnMgdG8gYmUg Y291bnRlZAorZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBidWZmZXIsIGFzIGlmIGBkaXNwbGF5 LWxpbmUtbnVtYmVycy13aWRlJword2VyZSBub24tbmlsLiAgSXQgaGFzIG5vIGVmZmVjdCB3aGVu IGxpbmUgbnVtYmVycyBhcmUgbm90IGFic29sdXRlLgorCitJZiB0aGUgdmFsdWUgaXMgYHJlbGF0 aXZlJywgZGlzcGxheSBmb3IgZWFjaCBsaW5lIG5vdCBjb250YWluaW5nIHRoZQord2luZG93J3Mg cG9pbnQgaXRzIHJlbGF0aXZlIG51bWJlciBpbnN0ZWFkLCBpLmUuIHRoZSBudW1iZXIgb2YgdGhl IGxpbmUKK3JlbGF0aXZlIHRvIHRoZSBsaW5lIHNob3dpbmcgdGhlIHdpbmRvdydzIHBvaW50Lgog CiBJbiBlaXRoZXIgY2FzZSwgbGluZSBudW1iZXJzIGFyZSBkaXNwbGF5ZWQgYXQgdGhlIGJlZ2lu bmluZyBvZiBlYWNoCiBub24tY29udGludWF0aW9uIGxpbmUgdGhhdCBkaXNwbGF5cyBidWZmZXIg dGV4dCwgaS5lLiBhZnRlciBlYWNoIG5ld2xpbmUKQEAgLTM0NzQ3LDYgKzM0NzY3LDE1IEBAIHN5 bXNfb2ZfeGRpc3AgKHZvaWQpCiAgIERFRlNZTSAoUWRpc3BsYXlfbGluZV9udW1iZXJzX3dpZGVu LCAiZGlzcGxheS1saW5lLW51bWJlcnMtd2lkZW4iKTsKICAgRm1ha2VfdmFyaWFibGVfYnVmZmVy X2xvY2FsIChRZGlzcGxheV9saW5lX251bWJlcnNfd2lkZW4pOwogCisgIERFRlZBUl9JTlQgKCJk aXNwbGF5LWxpbmUtbnVtYmVycy1vZmZzZXQiLCBkaXNwbGF5X2xpbmVfbnVtYmVyc19vZmZzZXQs CisgICAgZG9jOiAvKiBBIHNpZ25lZCBpbnRlZ2VyIGFkZGVkIHRvIGVhY2ggYWJzb2x1dGUgbGlu ZSBudW1iZXIuCitXaGVuIHRoaXMgdmFyaWFibGUgaXMgbm9uLXplcm8sIGxpbmUgbnVtYmVycyBh cmUgYWx3YXlzIGNvdW50ZWQgZnJvbQordGhlIGJlZ2lubmluZyBvZiB0aGUgYnVmZmVyIGV2ZW4g aWYgYGRpc3BsYXktbGluZS1udW1iZXJzLXdpZGVuJyBpcyBuaWwuCitJdCBoYXMgbm8gZWZmZWN0 IHdoZW4gc2V0IHRvIDAsIG9yIHdoZW4gbGluZSBudW1iZXJzIGFyZSBub3QgYWJzb2x1dGUuICAq Lyk7CisgIGRpc3BsYXlfbGluZV9udW1iZXJzX29mZnNldCA9IDA7CisgIERFRlNZTSAoUWRpc3Bs YXlfbGluZV9udW1iZXJzX29mZnNldCwgImRpc3BsYXktbGluZS1udW1iZXJzLW9mZnNldCIpOwor ICBGbWFrZV92YXJpYWJsZV9idWZmZXJfbG9jYWwgKFFkaXNwbGF5X2xpbmVfbnVtYmVyc19vZmZz ZXQpOworCiAgIERFRlZBUl9CT09MICgiZGlzcGxheS1maWxsLWNvbHVtbi1pbmRpY2F0b3IiLCBW ZGlzcGxheV9maWxsX2NvbHVtbl9pbmRpY2F0b3IsCiAgICAgZG9jOiAvKiBOb24tbmlsIG1lYW5z IGRpc3BsYXkgdGhlIGZpbGwgY29sdW1uIGluZGljYXRvci4gICovKTsKICAgVmRpc3BsYXlfZmls bF9jb2x1bW5faW5kaWNhdG9yID0gZmFsc2U7Ci0tIAoyLjIzLjAud2luZG93cy4xCgo= --0000000000001e396c059446f07c--