From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Noah Lavine Newsgroups: gmane.lisp.guile.devel Subject: Re: PEG Patches Date: Thu, 31 Mar 2011 17:48:26 -0400 Message-ID: References: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=20cf307cfe9ed89e03049fce40cf X-Trace: dough.gmane.org 1301608366 9247 80.91.229.12 (31 Mar 2011 21:52:46 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Thu, 31 Mar 2011 21:52:46 +0000 (UTC) Cc: guile-devel To: Andy Wingo Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Thu Mar 31 23:52:42 2011 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Q5PnD-0005vw-HA for guile-devel@m.gmane.org; Thu, 31 Mar 2011 23:52:42 +0200 Original-Received: from localhost ([127.0.0.1]:45868 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Q5PnC-0000pP-Qz for guile-devel@m.gmane.org; Thu, 31 Mar 2011 17:52:38 -0400 Original-Received: from [140.186.70.92] (port=34346 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Q5Pja-0007Jt-9M for guile-devel@gnu.org; Thu, 31 Mar 2011 17:49:48 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Q5PjA-0005LZ-4R for guile-devel@gnu.org; Thu, 31 Mar 2011 17:48:29 -0400 Original-Received: from mail-vx0-f169.google.com ([209.85.220.169]:58746) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q5Pj9-0005LS-RI for guile-devel@gnu.org; Thu, 31 Mar 2011 17:48:27 -0400 Original-Received: by vxk20 with SMTP id 20so2906669vxk.0 for ; Thu, 31 Mar 2011 14:48:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=+etR6boHviBiqQlLkCOWK11IMqD4YFZ5r2R72HIJ1y0=; b=Df1UBi010Q4So0kXL6iZBE2QkNWFiI7LM7TXGqgzKrx/EflW0X/6chnfBiguowfl9A pThkYVS6jeeD5WSCk6W/W3ayiVNB4D9IgXyL63xEKTkeRnvwzW6qy+T2ypqnkK5lrMxD A7VUKPY2VVPZgNffX+fk6KAnrgw9noBaErvzU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; b=IFxJUqVLJIjx5nThRKKtZ4LJFGiBRMnvZNZ9j1g63NzXlcFKoqMpTfKveDJAk5I2WU aswWTP84EEPcMCr9ih5aKhWNLgZBa1ZqyxS+m5sXevqPfKHQSPkqG9Tjk6+Axz7CHtN4 PckRRGFy28w5/3nbAxKhxz2VLdgRwBugH+H84= Original-Received: by 10.52.95.135 with SMTP id dk7mr540292vdb.93.1301608106859; Thu, 31 Mar 2011 14:48:26 -0700 (PDT) Original-Received: by 10.52.169.231 with HTTP; Thu, 31 Mar 2011 14:48:26 -0700 (PDT) In-Reply-To: X-Google-Sender-Auth: nwj82vJZ5_paQTo4ilnz3Hh8xXE X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 209.85.220.169 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:12129 Archived-At: --20cf307cfe9ed89e03049fce40cf Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hello again, I was about to do this, and then I discovered that it wouldn't work, because there are a few special case PEGs that don't make sense as macros. Specifically, in the context of a PEG, we interpret strings as matching themselves, and those can't be made into macros. So I went ahead and implemented a simple way to extend peg-sexp-compile. It turned out to be much less difficult than I was afraid of. The first attached patch adds the interface to (ice-9 peg codegen) and changes most of the functions there to use it, and also adds some documentation in the PEG Internals section. The second one updates (ice-9 peg string-peg) to use it as well, and gets rid of peg-extended-compile from peg.scm since it's no longer needed. I wrote the patches on top of the last two that I sent, because those included some cleanups that I wanted to keep. Noah On Tue, Mar 29, 2011 at 9:20 AM, Andy Wingo wrote: > On Tue 29 Mar 2011 14:47, Noah Lavine writes: > >>> (define-peg-matcher and cg-and) >> >> That's doable. But if we're going to choose what to do entirely based >> on the first element of the list, then we could also just not define >> peg-sexp-compile at all and make each of the code generation functions >> into macros. >> >> How does that sound? > > Good idea. =A0Sounds great to me! > > Andy > -- > http://wingolog.org/ > --20cf307cfe9ed89e03049fce40cf Content-Type: application/octet-stream; name="0001-Extensible-PEG-Syntax.patch" Content-Disposition: attachment; filename="0001-Extensible-PEG-Syntax.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gly7sv080 RnJvbSAwZjI4NjAyYmYzZmRlMzVlN2JmYzZmYTM4Yjc2MDhiOTdhZjNjMDE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb2FoIExhdmluZSA8bmxhdmluZUBoYXZlcmZvcmQuZWR1PgpE YXRlOiBUaHUsIDMxIE1hciAyMDExIDE3OjA0OjA2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxLzJd IEV4dGVuc2libGUgUEVHIFN5bnRheAoKKiBtb2R1bGUvaWNlLTkvcGVnL2NvZGVnZW4uc2NtOiBN YWtlIHRoZSBQRUcgc3ludGF4IGV4dGVuc2libGUsIGFuZAogICAgbW92ZSBtb3N0IG9mIHRoZSBj dXJyZW50IGNvZGUgZ2VuZXJhdG9ycyB0byB0aGUgbmV3IGludGVyZmFjZQoqIGRvYy9yZWYvYXBp LXBlZy50ZXhpOiBEb2N1bWVudCBQRUcgZXh0ZW5zaW9ucyBpbiB0aGUgUEVHIEludGVybmFscwog ICAgc2VjdGlvbiBvZiB0aGUgbWFudWFsCi0tLQogZG9jL3JlZi9hcGktcGVnLnRleGkgICAgICAg ICB8ICAgMzIgKysrKysrKysKIG1vZHVsZS9pY2UtOS9wZWcvY29kZWdlbi5zY20gfCAgMTc2ICsr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2Vk LCAxMzMgaW5zZXJ0aW9ucygrKSwgNzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3Jl Zi9hcGktcGVnLnRleGkgYi9kb2MvcmVmL2FwaS1wZWcudGV4aQppbmRleCAwYzgzMzY1Li42ZDBh MzQ2IDEwMDY0NAotLS0gYS9kb2MvcmVmL2FwaS1wZWcudGV4aQorKysgYi9kb2MvcmVmL2FwaS1w ZWcudGV4aQpAQCAtOTkyLDMgKzk5MiwzNSBAQCBpbnRlcmZhY2UuCiAKIFRoZSBhYm92ZSBmdW5j dGlvbiBjYW4gYmUgdXNlZCB0byBtYXRjaCBhIHN0cmluZyBieSBydW5uaW5nCiBAY29kZXsocGVn LXBhcnNlIG1hdGNoLWEtYiAiYWIiKX0uCisKK0BzdWJzdWJoZWFkaW5nIENvZGUgR2VuZXJhdG9y cyBhbmQgRXh0ZW5zaWJsZSBTeW50YXgKKworUEVHIGV4cHJlc3Npb25zLCBzdWNoIGFzIHRob3Nl IGluIGEgQGNvZGV7ZGVmaW5lLW5vbnRlcm19IGZvcm0sIGFyZQoraW50ZXJwcmV0ZWQgaW50ZXJu YWxseSBpbiB0d28gc3RlcHMuCisKK0ZpcnN0LCBhbnkgc3RyaW5nIFBFRyBpcyBleHBhbmRlZCBp bnRvIGFuIHMtZXhwcmVzc2lvbiBQRUcgYnkgdGhlIGNvZGUKK2luIHRoZSBAY29kZXsoaWNlLTkg cGVnIHN0cmluZy1wZWcpfSBtb2R1bGUuCisKK1RoZW4sIHRoZW4gcy1leHByZXNzaW9uIFBFRyB0 aGF0IHJlc3VsdHMgaXMgY29tcGlsZWQgaW50byBhIHBhcnNpbmcKK2Z1bmN0aW9uIGJ5IHRoZSBA Y29kZXsoaWNlLTkgcGVnIGNvZGVnZW4pfSBtb2R1bGUuIEluIHBhcnRpY3VsYXIsIHRoZQorZnVu Y3Rpb24gQGNvZGV7cGVnLXNleHAtY29tcGlsZX0gaXMgY2FsbGVkIG9uIHRoZSBzLWV4cHJlc3Np b24uIEl0IHRoZW4KK2RlY2lkZXMgd2hhdCB0byBkbyBiYXNlZCBvbiB0aGUgZm9ybSBpdCBpcyBw YXNzZWQuCisKK1RoZSBQRUcgc3ludGF4IGNhbiBiZSBleHBhbmRlZCBieSBwcm92aWRpbmcgQGNv ZGV7cGVnLXNleHAtY29tcGlsZX0gbW9yZQorb3B0aW9ucyBmb3Igd2hhdCB0byBkbyB3aXRoIGl0 cyBmb3Jtcy4gVGhlIGV4dGVuZGVkIHN5bnRheCB3aWxsIGJlCithc3NvY2lhdGVkIHdpdGggYSBz eW1ib2wsIGZvciBpbnN0YW5jZSBAY29kZXtteS1wYXJzaW5nLWZvcm19LCBhbmQgd2lsbAorYmUg Y2FsbGVkIG9uIGFsbCBQRUcgZXhwcmVzc2lvbnMgb2YgdGhlIGZvcm0KK0BsaXNwCisobXktcGFy c2luZy1mb3JtIC4uLikKK0BlbmQgbGlzcAorCitUaGUgcGFyc2luZyBmdW5jdGlvbiBzaG91bGQg dGFrZSB0d28gYXJndW1lbnRzLiBUaGUgZmlyc3Qgd2lsbCBiZSBhCitzeW50YXggb2JqZWN0IGNv bnRhaW5pbmcgYSBsaXN0IHdpdGggYWxsIG9mIHRoZSBhcmd1bWVudHMgdG8gdGhlIGZvcm0KKyhi dXQgbm90IHRoZSBmb3JtJ3MgbmFtZSksIGFuZCB0aGUgc2Vjb25kIHdpbGwgYmUgdGhlCitAY29k ZXtjYXB0dXJlLXR5cGV9IGFyZ3VtZW50IHRoYXQgaXMgcGFzc2VkIHRvIEBjb2Rle2RlZmluZS1u b250ZXJtfS4KKworTmV3IGZ1bmN0aW9ucyBjYW4gYmUgcmVnaXN0ZXJlZCBieSBjYWxsaW5nIEBj b2RleyhhZGQtcGVnLWNvbXBpbGVyIQorc3ltYm9sIGZ1bmN0aW9uKX0sIHdoZXJlIEBjb2Rle3N5 bWJvbH0gaXMgdGhlIHN5bWJvbCB0aGF0IHdpbGwgaW5kaWNhdGUKK2EgZm9ybSBvZiB0aGlzIHR5 cGUgYW5kIEBjb2Rle2Z1bmN0aW9ufSBpcyB0aGUgY29kZSBnZW5lcmF0aW5nIGZ1bmN0aW9uCitk ZXNjcmliZWQgYWJvdmUuIFRoZSBmdW5jdGlvbiBAY29kZXthZGQtcGVnLWNvbXBpbGVyIX0gaXMg ZXhwb3J0ZWQgZnJvbQordGhlIEBjb2RleyhpY2UtOSBwZWcgY29kZWdlbil9IG1vZHVsZS4KZGlm ZiAtLWdpdCBhL21vZHVsZS9pY2UtOS9wZWcvY29kZWdlbi5zY20gYi9tb2R1bGUvaWNlLTkvcGVn L2NvZGVnZW4uc2NtCmluZGV4IDhkZDUwN2MuLjU5N2VhZDkgMTAwNjQ0Ci0tLSBhL21vZHVsZS9p Y2UtOS9wZWcvY29kZWdlbi5zY20KKysrIGIvbW9kdWxlL2ljZS05L3BlZy9jb2RlZ2VuLnNjbQpA QCAtMTgsOSArMTgsNyBAQAogOzs7OwogCiAoZGVmaW5lLW1vZHVsZSAoaWNlLTkgcGVnIGNvZGVn ZW4pCi0gICM6ZXhwb3J0IChwZWctc2V4cC1jb21waWxlIHdyYXAtcGFyc2VyLWZvci11c2VycykK LSAgIzp1c2UtbW9kdWxlIChpY2UtOSBwZWcpCi0gICM6dXNlLW1vZHVsZSAoaWNlLTkgcGVnIHN0 cmluZy1wZWcpCisgICM6ZXhwb3J0IChwZWctc2V4cC1jb21waWxlIHdyYXAtcGFyc2VyLWZvci11 c2VycyBhZGQtcGVnLWNvbXBpbGVyISkKICAgIzp1c2UtbW9kdWxlIChpY2UtOSBwcmV0dHktcHJp bnQpCiAgICM6dXNlLW1vZHVsZSAoc3lzdGVtIGJhc2UgcG1hdGNoKSkKIApAQCAtMTIzLDE4ICsx MjEsMzUgQEAgcmV0dXJuIEVYUC4iCiAKIDs7IEdlbmVyYXRlcyBjb2RlIGZvciBtYXRjaGluZyBh IHJhbmdlIG9mIGNoYXJhY3RlcnMgYmV0d2VlbiBzdGFydCBhbmQgZW5kLgogOzsgRS5nLjogKGNn LXJhbmdlIHN5bnRheCAjXGEgI1x6ICdib2R5KQotKGRlZmluZSAoY2ctcmFuZ2Ugc3RhcnQgZW5k IGFjY3VtKQotICAjYChsYW1iZGEgKHN0ciBsZW4gcG9zKQotICAgICAgKGFuZCAoPCBwb3MgbGVu KQotICAgICAgICAgICAobGV0ICgoYyAoc3RyaW5nLXJlZiBzdHIgcG9zKSkpCi0gICAgICAgICAg ICAgKGFuZCAoY2hhcj49PyBjICMsc3RhcnQpCi0gICAgICAgICAgICAgICAgICAoY2hhcjw9PyBj ICMsZW5kKQotICAgICAgICAgICAgICAgICAgIywoY2FzZSBhY2N1bQotICAgICAgICAgICAgICAg ICAgICAgICgoYWxsKSAjYChsaXN0ICgxKyBwb3MpIChsaXN0ICdjZy1yYW5nZSAoc3RyaW5nIGMp KSkpCi0gICAgICAgICAgICAgICAgICAgICAgKChuYW1lKSAjYChsaXN0ICgxKyBwb3MpICdjZy1y YW5nZSkpCi0gICAgICAgICAgICAgICAgICAgICAgKChib2R5KSAjYChsaXN0ICgxKyBwb3MpIChz dHJpbmcgYykpKQotICAgICAgICAgICAgICAgICAgICAgICgobm9uZSkgI2AobGlzdCAoMSsgcG9z KSAnKCkpKQotICAgICAgICAgICAgICAgICAgICAgIChlbHNlIChlcnJvciAiYmFkIGFjY3VtIiBh Y2N1bSkpKSkpKSkpCisoZGVmaW5lIChjZy1yYW5nZSBwYXQgYWNjdW0pCisgIChzeW50YXgtY2Fz ZSBwYXQgKCkKKyAgICAoKHN0YXJ0IGVuZCkKKyAgICAgKGlmIChub3QgKGFuZCAoY2hhcj8gKHN5 bnRheC0+ZGF0dW0gIydzdGFydCkpCisgICAgICAgICAgICAgICAgICAgKGNoYXI/IChzeW50YXgt PmRhdHVtICMnZW5kKSkpKQorICAgICAgICAgKGVycm9yICJyYW5nZSBQRUcgc2hvdWxkIGhhdmUg Y2hhcmFjdGVycyBhZnRlciBpdDsgaW5zdGVhZCBnb3QiCisgICAgICAgICAgICAgICAgIydzdGFy dCAjJ2VuZCkpCisgICAgICNgKGxhbWJkYSAoc3RyIGxlbiBwb3MpCisgICAgICAgICAoYW5kICg8 IHBvcyBsZW4pCisgICAgICAgICAgICAgIChsZXQgKChjIChzdHJpbmctcmVmIHN0ciBwb3MpKSkK KyAgICAgICAgICAgICAgICAoYW5kIChjaGFyPj0/IGMgc3RhcnQpCisgICAgICAgICAgICAgICAg ICAgICAoY2hhcjw9PyBjIGVuZCkKKyAgICAgICAgICAgICAgICAgICAgICMsKGNhc2UgYWNjdW0K KyAgICAgICAgICAgICAgICAgICAgICAgICAoKGFsbCkgI2AobGlzdCAoMSsgcG9zKSAobGlzdCAn Y2ctcmFuZ2UgKHN0cmluZyBjKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICgobmFtZSkg I2AobGlzdCAoMSsgcG9zKSAnY2ctcmFuZ2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICgo Ym9keSkgI2AobGlzdCAoMSsgcG9zKSAoc3RyaW5nIGMpKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAoKG5vbmUpICNgKGxpc3QgKDErIHBvcykgJygpKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAoZWxzZSAoZXJyb3IgImJhZCBhY2N1bSIgYWNjdW0pKSkpKSkpKSkpCisKKzs7IEdlbmVy YXRlIGNvZGUgdG8gbWF0Y2ggYSBwYXR0ZXJuIGFuZCBkbyBub3RoaW5nIHdpdGggdGhlIHJlc3Vs dAorKGRlZmluZSAoY2ctaWdub3JlIHBhdCBhY2N1bSkKKyAgKHN5bnRheC1jYXNlIHBhdCAoKQor ICAgICgoaW5uZXIpCisgICAgIChwZWctc2V4cC1jb21waWxlICMnaW5uZXIgJ25vbmUpKSkpCisK KyhkZWZpbmUgKGNnLWNhcHR1cmUgcGF0IGFjY3VtKQorICAoc3ludGF4LWNhc2UgcGF0ICgpCisg ICAgKChpbm5lcikKKyAgICAgKHBlZy1zZXhwLWNvbXBpbGUgIydpbm5lciAnYm9keSkpKSkKIAog OzsgRmlsdGVycyB0aGUgYWNjdW0gYXJndW1lbnQgdG8gcGVnLXNleHAtY29tcGlsZSBmb3IgYnVp bGRpbmdzIGxpa2Ugc3RyaW5nCiA7OyBsaXRlcmFscyAoc2luY2Ugd2UgZG9uJ3Qgd2FudCB0byB0 YWcgdGhlbSB3aXRoIHRoZWlyIG5hbWUgaWYgd2UncmUgZG9pbmcgYW4KQEAgLTE0NywzNSArMTYy LDExIEBAIHJldHVybiBFWFAuIgogICAgKChlcT8gYWNjdW0gJ25vbmUpICdub25lKSkpCiAoZGVm aW5lIGJhZiBidWlsdGluLWFjY3VtLWZpbHRlcikKIAotOzsgVGFrZXMgYW4gYXJiaXRyYXJ5IGV4 cHJlc3Npb25zIGFuZCBhY2N1bXVsYXRpb24gdmFyaWFibGUsIHRoZW4gcGFyc2VzIGl0LgotOzsg RS5nLjogKHBlZy1zZXhwLWNvbXBpbGUgc3ludGF4ICcoYW5kICJhYmMiIChvciAiLSIgKHJhbmdl ICNcYSAjXHopKSkgJ2FsbCkKLShkZWZpbmUgKHBlZy1zZXhwLWNvbXBpbGUgcGF0IGFjY3VtKQot ICAoc3ludGF4LWNhc2UgcGF0IChwZWctYW55IHJhbmdlIGlnbm9yZSBjYXB0dXJlIHBlZyBhbmQg b3IgYm9keSkKLSAgICAocGVnLWFueQotICAgICAoY2ctcGVnLWFueSAoYmFmIGFjY3VtKSkpCi0g ICAgKHN5bSAoaWRlbnRpZmllcj8gIydzeW0pIDs7IG5vbnRlcm1pbmFsCi0gICAgICMnc3ltKQot ICAgIChzdHIgKHN0cmluZz8gKHN5bnRheC0+ZGF0dW0gIydzdHIpKSA7OyBsaXRlcmFsIHN0cmlu ZwotICAgICAoY2ctc3RyaW5nIChzeW50YXgtPmRhdHVtICMnc3RyKSAoYmFmIGFjY3VtKSkpCi0g ICAgKChyYW5nZSBzdGFydCBlbmQpIDs7IHJhbmdlIG9mIGNoYXJhY3RlcnMgKGUuZy4gW2Etel0p Ci0gICAgIChhbmQgKGNoYXI/IChzeW50YXgtPmRhdHVtICMnc3RhcnQpKSAoY2hhcj8gKHN5bnRh eC0+ZGF0dW0gIydlbmQpKSkKLSAgICAgKGNnLXJhbmdlIChzeW50YXgtPmRhdHVtICMnc3RhcnQp IChzeW50YXgtPmRhdHVtICMnZW5kKSAoYmFmIGFjY3VtKSkpCi0gICAgKChpZ25vcmUgcGF0KSA7 OyBtYXRjaCBidXQgZG9uJ3QgcGFyc2UKLSAgICAgKHBlZy1zZXhwLWNvbXBpbGUgIydwYXQgJ25v bmUpKQotICAgICgoY2FwdHVyZSBwYXQpIDs7IHBhcnNlCi0gICAgIChwZWctc2V4cC1jb21waWxl ICMncGF0ICdib2R5KSkKLSAgICAoKGFuZCBwYXQgLi4uKQotICAgICAoY2ctYW5kICMnKHBhdCAu Li4pIChiYWYgYWNjdW0pKSkKLSAgICAoKG9yIHBhdCAuLi4pCi0gICAgIChjZy1vciAjJyhwYXQg Li4uKSAoYmFmIGFjY3VtKSkpCi0gICAgKChib2R5IHR5cGUgcGF0IG51bSkKLSAgICAgKGNnLWJv ZHkgKGJhZiBhY2N1bSkgIyd0eXBlICMncGF0ICMnbnVtKSkpKQotCiA7OyBUb3AtbGV2ZWwgZnVu Y3Rpb24gYnVpbGRlciBmb3IgQU5ELiAgUmVkdWNlcyB0byBhIGNhbGwgdG8gQ0ctQU5ELUlOVC4K IChkZWZpbmUgKGNnLWFuZCBjbGF1c2VzIGFjY3VtKQogICAjYChsYW1iZGEgKHN0ciBsZW4gcG9z KQogICAgICAgKGxldCAoKGJvZHkgJygpKSkKLSAgICAgICAgIywoY2ctYW5kLWludCBjbGF1c2Vz IGFjY3VtICMnc3RyICMnbGVuICMncG9zICMnYm9keSkpKSkKKyAgICAgICAgIywoY2ctYW5kLWlu dCBjbGF1c2VzIChiYWYgYWNjdW0pICMnc3RyICMnbGVuICMncG9zICMnYm9keSkpKSkKIAogOzsg SW50ZXJuYWwgZnVuY3Rpb24gYnVpbGRlciBmb3IgQU5EIChjYWxscyBpdHNlbGYpLgogKGRlZmlu ZSAoY2ctYW5kLWludCBjbGF1c2VzIGFjY3VtIHN0ciBzdHJsZW4gYXQgYm9keSkKQEAgLTE5NSw3 ICsxODYsNyBAQCByZXR1cm4gRVhQLiIKIDs7IFRvcC1sZXZlbCBmdW5jdGlvbiBidWlsZGVyIGZv ciBPUi4gIFJlZHVjZXMgdG8gYSBjYWxsIHRvIENHLU9SLUlOVC4KIChkZWZpbmUgKGNnLW9yIGNs YXVzZXMgYWNjdW0pCiAgICNgKGxhbWJkYSAoc3RyIGxlbiBwb3MpCi0gICAgICAjLChjZy1vci1p bnQgY2xhdXNlcyBhY2N1bSAjJ3N0ciAjJ2xlbiAjJ3BvcykpKQorICAgICAgIywoY2ctb3ItaW50 IGNsYXVzZXMgKGJhZiBhY2N1bSkgIydzdHIgIydsZW4gIydwb3MpKSkKIAogOzsgSW50ZXJuYWwg ZnVuY3Rpb24gYnVpbGRlciBmb3IgT1IgKGNhbGxzIGl0c2VsZikuCiAoZGVmaW5lIChjZy1vci1p bnQgY2xhdXNlcyBhY2N1bSBzdHIgc3RybGVuIGF0KQpAQCAtMjA3LDQwICsxOTgsNzUgQEAgcmV0 dXJuIEVYUC4iCiAgICAgICAgICAgICMsKGNnLW9yLWludCAjJyhyZXN0IC4uLikgYWNjdW0gc3Ry IHN0cmxlbiBhdCkpKSkpCiAKIDs7IFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IHBhcnNlcyBhIEJP RFkgZWxlbWVudC4KLShkZWZpbmUgKGNnLWJvZHkgYWNjdW0gdHlwZSBwYXQgbnVtKQotICAjYChs YW1iZGEgKHN0ciBzdHJsZW4gYXQpCi0gICAgICAobGV0ICgoYm9keSAnKCkpKQotICAgICAgICAo bGV0IGxwICgoZW5kIGF0KSAoY291bnQgMCkpCi0gICAgICAgICAgKGxldCogKChtYXRjaCAoIywo cGVnLXNleHAtY29tcGlsZSBwYXQgYWNjdW0pIHN0ciBzdHJsZW4gZW5kKSkKLSAgICAgICAgICAg ICAgICAgKG5ldy1lbmQgKGlmIG1hdGNoIChjYXIgbWF0Y2gpIGVuZCkpCi0gICAgICAgICAgICAg ICAgIChjb3VudCAoaWYgKD4gbmV3LWVuZCBlbmQpICgxKyBjb3VudCkgY291bnQpKSkKLSAgICAg ICAgICAgIChpZiAoPiBuZXctZW5kIGVuZCkKLSAgICAgICAgICAgICAgICAocHVzaC1ub3QtbnVs bCEgYm9keSAoc2luZ2xlLWZpbHRlciAoY2FkciBtYXRjaCkpKSkKLSAgICAgICAgICAgIChpZiAo YW5kICg+IG5ldy1lbmQgZW5kKQotICAgICAgICAgICAgICAgICAgICAgIywoc3ludGF4LWNhc2Ug bnVtICgrICogPykKLSAgICAgICAgICAgICAgICAgICAgICAgICAobiAobnVtYmVyPyAoc3ludGF4 LT5kYXR1bSAjJ24pKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMnKDwgY291bnQgbikp Ci0gICAgICAgICAgICAgICAgICAgICAgICAgKCsgI3QpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgKCogI3QpCi0gICAgICAgICAgICAgICAgICAgICAgICAgKD8gIycoPCBjb3VudCAxKSkpKQot ICAgICAgICAgICAgICAgIChscCBuZXctZW5kIGNvdW50KQotICAgICAgICAgICAgICAgIChsZXQg KChzdWNjZXNzICMsKHN5bnRheC1jYXNlIG51bSAoKyAqID8pCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChuIChudW1iZXI/IChzeW50YXgtPmRhdHVtICMnbikpCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMnKD0gY291bnQgbikpCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICgrICMnKD49IGNvdW50IDEpKQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKiAjdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKD8gI3QpKSkpCi0gICAgICAgICAgICAgICAgICAjLChzeW50YXgtY2FzZSB0eXBl ICghICYgbGl0KQotICAgICAgICAgICAgICAgICAgICAgICghCi0gICAgICAgICAgICAgICAgICAg ICAgICNgKGlmIHN1Y2Nlc3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2YKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIywoY2dnciBhY2N1bSAnY2ctYm9keSAjJycoKSAjJ2F0 KSkpCi0gICAgICAgICAgICAgICAgICAgICAgKCYKLSAgICAgICAgICAgICAgICAgICAgICAgI2Ao YW5kIHN1Y2Nlc3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMsKGNnZ3IgYWNjdW0g J2NnLWJvZHkgIycnKCkgIydhdCkpKQotICAgICAgICAgICAgICAgICAgICAgIChsaXQKLSAgICAg ICAgICAgICAgICAgICAgICAgI2AoYW5kIHN1Y2Nlc3MKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMsKGNnZ3IgYWNjdW0gJ2NnLWJvZHkgIycocmV2ZXJzZSBib2R5KSAjJ25ldy1lbmQp KSkpKSkpKSkpKQorKGRlZmluZSAoY2ctYm9keSBhcmdzIGFjY3VtKQorICAoc3ludGF4LWNhc2Ug YXJncyAoKQorICAgICgodHlwZSBwYXQgbnVtKQorICAgICAjYChsYW1iZGEgKHN0ciBzdHJsZW4g YXQpCisgICAgICAgICAobGV0ICgoYm9keSAnKCkpKQorICAgICAgICAgICAobGV0IGxwICgoZW5k IGF0KSAoY291bnQgMCkpCisgICAgICAgICAgICAgKGxldCogKChtYXRjaCAoIywocGVnLXNleHAt Y29tcGlsZSAjJ3BhdCAoYmFmIGFjY3VtKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHIgc3RybGVuIGVuZCkpCisgICAgICAgICAgICAgICAgICAgIChuZXctZW5kIChpZiBtYXRjaCAo Y2FyIG1hdGNoKSBlbmQpKQorICAgICAgICAgICAgICAgICAgICAoY291bnQgKGlmICg+IG5ldy1l bmQgZW5kKSAoMSsgY291bnQpIGNvdW50KSkpCisgICAgICAgICAgICAgICAoaWYgKD4gbmV3LWVu ZCBlbmQpCisgICAgICAgICAgICAgICAgICAgKHB1c2gtbm90LW51bGwhIGJvZHkgKHNpbmdsZS1m aWx0ZXIgKGNhZHIgbWF0Y2gpKSkpCisgICAgICAgICAgICAgICAoaWYgKGFuZCAoPiBuZXctZW5k IGVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICMsKHN5bnRheC1jYXNlICMnbnVtICgrICog PykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobiAobnVtYmVyPyAoc3ludGF4LT5kYXR1 bSAjJ24pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMnKDwgY291bnQgbikpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCsgI3QpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKCogI3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKD8gIycoPCBjb3VudCAx KSkpKQorICAgICAgICAgICAgICAgICAgIChscCBuZXctZW5kIGNvdW50KQorICAgICAgICAgICAg ICAgICAgIChsZXQgKChzdWNjZXNzICMsKHN5bnRheC1jYXNlICMnbnVtICgrICogPykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG4gKG51bWJlcj8gKHN5bnRheC0+ZGF0 dW0gIyduKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIycoPSBj b3VudCBuKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCsgIycoPj0g Y291bnQgMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICN0KQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPyAjdCkpKSkKKyAgICAgICAg ICAgICAgICAgICAgICMsKHN5bnRheC1jYXNlICMndHlwZSAoISAmIGxpdCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAoIQorICAgICAgICAgICAgICAgICAgICAgICAgICAjYChpZiBzdWNjZXNz CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICMsKGNnZ3IgKGJhZiBhY2N1bSkgJ2NnLWJvZHkgIycnKCkgIydhdCkpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICgmCisgICAgICAgICAgICAgICAgICAgICAgICAgICNg KGFuZCBzdWNjZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjLChjZ2dyIChi YWYgYWNjdW0pICdjZy1ib2R5ICMnJygpICMnYXQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAobGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICNgKGFuZCBzdWNjZXNzCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjLChjZ2dyIChiYWYgYWNjdW0pICdjZy1ib2R5Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMnKHJldmVyc2UgYm9keSkg IyduZXctZW5kKSkpKSkpKSkpKSkpKQorCis7OyBBc3NvY2lhdGlvbiBsaXN0IG9mIGZ1bmN0aW9u cyB0byBoYW5kbGUgZGlmZmVyZW50IGV4cHJlc3Npb25zIGFzIFBFR3MKKyhkZWZpbmUgcGVnLWNv bXBpbGVyLWFsaXN0ICcoKSkKKworKGRlZmluZSAoYWRkLXBlZy1jb21waWxlciEgc3ltYm9sIGZ1 bmN0aW9uKQorICAoc2V0ISBwZWctY29tcGlsZXItYWxpc3QKKyAgICAgICAgKGFzc3Etc2V0ISBw ZWctY29tcGlsZXItYWxpc3Qgc3ltYm9sIGZ1bmN0aW9uKSkpCisKKyhhZGQtcGVnLWNvbXBpbGVy ISAncmFuZ2UgY2ctcmFuZ2UpCisoYWRkLXBlZy1jb21waWxlciEgJ2lnbm9yZSBjZy1pZ25vcmUp CisoYWRkLXBlZy1jb21waWxlciEgJ2NhcHR1cmUgY2ctY2FwdHVyZSkKKyhhZGQtcGVnLWNvbXBp bGVyISAnYW5kIGNnLWFuZCkKKyhhZGQtcGVnLWNvbXBpbGVyISAnb3IgY2ctb3IpCisoYWRkLXBl Zy1jb21waWxlciEgJ2JvZHkgY2ctYm9keSkKKworOzsgVGFrZXMgYW4gYXJiaXRyYXJ5IGV4cHJl c3Npb25zIGFuZCBhY2N1bXVsYXRpb24gdmFyaWFibGUsIHRoZW4gcGFyc2VzIGl0LgorOzsgRS5n LjogKHBlZy1zZXhwLWNvbXBpbGUgc3ludGF4ICcoYW5kICJhYmMiIChvciAiLSIgKHJhbmdlICNc YSAjXHopKSkgJ2FsbCkKKyhkZWZpbmUgKHBlZy1zZXhwLWNvbXBpbGUgcGF0IGFjY3VtKQorICAo c3ludGF4LWNhc2UgcGF0IChwZWctYW55IHJhbmdlIGlnbm9yZSBjYXB0dXJlIHBlZyBhbmQgb3Ig Ym9keSkKKyAgICAocGVnLWFueQorICAgICAoY2ctcGVnLWFueSAoYmFmIGFjY3VtKSkpCisgICAg KHN5bSAoaWRlbnRpZmllcj8gIydzeW0pIDs7IG5vbnRlcm1pbmFsCisgICAgICMnc3ltKQorICAg IChzdHIgKHN0cmluZz8gKHN5bnRheC0+ZGF0dW0gIydzdHIpKSA7OyBsaXRlcmFsIHN0cmluZwor ICAgICAoY2ctc3RyaW5nIChzeW50YXgtPmRhdHVtICMnc3RyKSAoYmFmIGFjY3VtKSkpCisgICAg KChuYW1lIC4gYXJncykgKGxldCogKChubSAoc3ludGF4LT5kYXR1bSAjJ25hbWUpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAoZW50cnkgKGFzc3EtcmVmIHBlZy1jb21waWxlci1hbGlzdCBu bSkpKQorICAgICAgICAgICAgICAgICAgICAgKGlmIGVudHJ5CisgICAgICAgICAgICAgICAgICAg ICAgICAgKGVudHJ5ICMnYXJncyBhY2N1bSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZXJy b3IgIkJhZCBwZWcgZm9ybSIgbm0gIydhcmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJOb3Qgb25lIG9mIiAobWFwIGNhciBwZWctY29tcGlsZXItYWxpc3QpKSkpKSkpCiAKIDs7 IFBhY2thZ2VzIHRoZSByZXN1bHRzIG9mIGEgcGFyc2VyCiAoZGVmaW5lICh3cmFwLXBhcnNlci1m b3ItdXNlcnMgZm9yLXN5bnRheCBwYXJzZXIgYWNjdW1zeW0gcy1zeW4pCi0tIAoxLjcuNC4xCgo= --20cf307cfe9ed89e03049fce40cf Content-Type: application/octet-stream; name="0002-Update-String-PEGs.patch" Content-Disposition: attachment; filename="0002-Update-String-PEGs.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gly7syo71 RnJvbSBhMzRmMzA2OTQ0NjJlZDc5NjVjYjg4NTc4MWRjZmU2YzQ1YjA0NjQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb2FoIExhdmluZSA8bmxhdmluZUBoYXZlcmZvcmQuZWR1PgpE YXRlOiBUaHUsIDMxIE1hciAyMDExIDE3OjQyOjM2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAyLzJd IFVwZGF0ZSBTdHJpbmcgUEVHcwoKKiBtb2R1bGUvaWNlLTkvcGVnL3N0cmluZy1wZWcuc2NtOiB1 c2UgbmV3IGludGVyZmFjZSBmb3IgZXh0ZW5kaW5nIFBFRwogICBzeW50YXgKKiBtb2R1bGUvaWNl LTkvcGVnLnNjbTogcmVtb3ZlIHBlZy1leHRlbmRlZC1jb21waWxlCi0tLQogbW9kdWxlL2ljZS05 L3BlZy5zY20gICAgICAgICAgICB8ICAgMjAgKysrKysrKy0tLS0tLS0tLS0tLS0KIG1vZHVsZS9p Y2UtOS9wZWcvc3RyaW5nLXBlZy5zY20gfCAgIDI1ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0K IDIgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvbW9kdWxlL2ljZS05L3BlZy5zY20gYi9tb2R1bGUvaWNlLTkvcGVnLnNjbQppbmRl eCA1OGUzNWNlLi43MzBlMDQ4IDEwMDY0NAotLS0gYS9tb2R1bGUvaWNlLTkvcGVnLnNjbQorKysg Yi9tb2R1bGUvaWNlLTkvcGVnLnNjbQpAQCAtMjIsNyArMjIsNiBAQAogICAgICAgICAgICAgZGVm aW5lLW5vbnRlcm0KIDsgICAgICAgICAgICBkZWZpbmUtbm9udGVybS1mCiAgICAgICAgICAgICBw ZWctbWF0Y2gpCi07ICAjOmV4cG9ydC1zeW50YXggKGRlZmluZS1ub250ZXJtKQogICAjOnVzZS1t b2R1bGUgKGljZS05IHBlZyBjb2RlZ2VuKQogICAjOnVzZS1tb2R1bGUgKGljZS05IHBlZyBzdHJp bmctcGVnKQogICAjOnVzZS1tb2R1bGUgKGljZS05IHBlZyBzaW1wbGlmeS10cmVlKQpAQCAtMzAs NyArMjksNiBAQAogICAjOnJlLWV4cG9ydCAocGVnLXNleHAtY29tcGlsZQogICAgICAgICAgICAg ICAgZGVmaW5lLWdyYW1tYXIKICAgICAgICAgICAgICAgIGRlZmluZS1ncmFtbWFyLWYKLTsgICAg ICAgICAgICAgICBkZWZpbmUtbm9udGVybQogICAgICAgICAgICAgICAga2V5d29yZC1mbGF0dGVu CiAgICAgICAgICAgICAgICBjb250ZXh0LWZsYXR0ZW4KICAgICAgICAgICAgICAgIHBlZzpzdGFy dApAQCAtNjcsMTMgKzY1LDYgQEAgZXhlY3V0ZSB0aGUgU1RNVHMgYW5kIHRyeSBhZ2Fpbi4iCiAg ICAgICAgICNmCiAgICAgICAgIChtYWtlLXByZWMgMCAoY2FyIHJlcykgc3RyaW5nIChzdHJpbmct Y29sbGFwc2UgKGNhZHIgcmVzKSkpKSkpCiAKLShkZWZpbmUgKHBlZy1leHRlbmRlZC1jb21waWxl IHBhdHRlcm4gYWNjdW0pCi0gIChzeW50YXgtY2FzZSBwYXR0ZXJuIChwZWcpCi0gICAgKChwZWcg c3RyKQotICAgICAoc3RyaW5nPyAoc3ludGF4LT5kYXR1bSAjJ3N0cikpCi0gICAgIChwZWctc3Ry aW5nLWNvbXBpbGUgIydzdHIgKGlmIChlcT8gYWNjdW0gJ2FsbCkgJ2JvZHkgYWNjdW0pKSkKLSAg ICAoZWxzZSAocGVnLXNleHAtY29tcGlsZSBwYXR0ZXJuIGFjY3VtKSkpKQotCiA7OyBUaGUgcmVz dWx0cyBvZiBwYXJzaW5nIHVzaW5nIGEgbm9udGVybWluYWwgYXJlIGNhY2hlZC4gIFRoaW5rIG9m IGl0IGxpa2UgYQogOzsgaGFzaCB3aXRoIG5vIGNvbmZsaWN0IHJlc29sdXRpb24uICBQcm9jZXNz IGZvciBkZWNpZGluZyBvbiB0aGUgY2FjaGUgc2l6ZQogOzsgd2Fzbid0IHZlcnkgc2NpZW50aWZp YzsganVzdCByYW4gdGhlIGJlbmNobWFya3MgYW5kIHN0b3BwZWQgYSBsaXR0bGUgYWZ0ZXIKQEAg LTg1LDcgKzc2LDcgQEAgZXhlY3V0ZSB0aGUgU1RNVHMgYW5kIHRyeSBhZ2Fpbi4iCiAgIChsYW1i ZGEgKHgpCiAgICAgKHN5bnRheC1jYXNlIHggKCkKICAgICAgICgoXyBzeW0gYWNjdW0gcGF0KQot ICAgICAgIChsZXQgKChtYXRjaGYgKHBlZy1leHRlbmRlZC1jb21waWxlICMncGF0IChzeW50YXgt PmRhdHVtICMnYWNjdW0pKSkKKyAgICAgICAobGV0ICgobWF0Y2hmIChwZWctc2V4cC1jb21waWxl ICMncGF0IChzeW50YXgtPmRhdHVtICMnYWNjdW0pKSkKICAgICAgICAgICAgICAoYWNjdW1zeW0g KHN5bnRheC0+ZGF0dW0gIydhY2N1bSkpCiAgICAgICAgICAgICAgKGMgKGRhdHVtLT5zeW50YXgg eCAoZ2Vuc3ltKSkpKTs7IHRoZSBjYWNoZQogICAgICAgICAgOzsgQ09ERSBpcyB0aGUgY29kZSB0 byBwYXJzZSB0aGUgc3RyaW5nIGlmIHRoZSByZXN1bHQgaXNuJ3QgY2FjaGVkLgpAQCAtMTAzLDYg Kzk0LDExIEBAIGV4ZWN1dGUgdGhlIFNUTVRzIGFuZCB0cnkgYWdhaW4uIgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCBzdHIgYXQgZnJlcykpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgZnJlcykpKSkpKSkpKSkpCiAKKyhkZWZpbmUgKHBlZy1saWtlLT5wZWcg cGF0KQorICAoc3ludGF4LWNhc2UgcGF0ICgpCisgICAgKHN0ciAoc3RyaW5nPyAoc3ludGF4LT5k YXR1bSAjJ3N0cikpICMnKHBlZyBzdHIpKQorICAgIChlbHNlIHBhdCkpKQorCiA7OyBTZWFyY2hl cyB0aHJvdWdoIFNUUklORyBmb3Igc29tZXRoaW5nIHRoYXQgcGFyc2VzIHRvIFBFRy1NQVRDSEVS LiAgVGhpbmsKIDs7IHJlZ2V4cCBzZWFyY2guCiAoZGVmaW5lLXN5bnRheCBwZWctbWF0Y2gKQEAg LTExMCw5ICsxMDYsNyBAQCBleGVjdXRlIHRoZSBTVE1UcyBhbmQgdHJ5IGFnYWluLiIKICAgICAo c3ludGF4LWNhc2UgeCAoKQogICAgICAgKChfIHBhdHRlcm4gc3RyaW5nLXVuY29waWVkKQogICAg ICAgIChsZXQgKChwbXN5bSAoc3ludGF4LT5kYXR1bSAjJ3BhdHRlcm4pKSkKLSAgICAgICAgIChs ZXQgKChtYXRjaGVyIChpZiAoc3RyaW5nPyAoc3ludGF4LT5kYXR1bSAjJ3BhdHRlcm4pKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChwZWctc3RyaW5nLWNvbXBpbGUgIydwYXR0ZXJuICdi b2R5KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwZWctc2V4cC1jb21waWxlICMncGF0 dGVybiAnYm9keSkpKSkKKyAgICAgICAgIChsZXQgKChtYXRjaGVyIChwZWctc2V4cC1jb21waWxl IChwZWctbGlrZS0+cGVnICMncGF0dGVybikgJ2JvZHkpKSkKICAgICAgICAgICAgOzsgV2UgY29w eSB0aGUgc3RyaW5nIGJlZm9yZSB1c2luZyBpdCBiZWNhdXNlIGl0IG1pZ2h0IGhhdmUgYmVlbgog ICAgICAgICAgICA7OyBtb2RpZmllZCBpbi1wbGFjZSBzaW5jZSB0aGUgbGFzdCB0aW1lIGl0IHdh cyBwYXJzZWQsIHdoaWNoIHdvdWxkCiAgICAgICAgICAgIDs7IGludmFsaWRhdGUgdGhlIGNhY2hl LiAgR3VpbGUgdXNlcyBjb3B5LW9uLXdyaXRlIGZvciBzdHJpbmdzLCBzbwpkaWZmIC0tZ2l0IGEv bW9kdWxlL2ljZS05L3BlZy9zdHJpbmctcGVnLnNjbSBiL21vZHVsZS9pY2UtOS9wZWcvc3RyaW5n LXBlZy5zY20KaW5kZXggYTg5OTcyNy4uMTgxZWMwNSAxMDA2NDQKLS0tIGEvbW9kdWxlL2ljZS05 L3BlZy9zdHJpbmctcGVnLnNjbQorKysgYi9tb2R1bGUvaWNlLTkvcGVnL3N0cmluZy1wZWcuc2Nt CkBAIC0xOCw4ICsxOCw3IEBACiA7Ozs7CiAKIChkZWZpbmUtbW9kdWxlIChpY2UtOSBwZWcgc3Ry aW5nLXBlZykKLSAgIzpleHBvcnQgKHBlZy1zdHJpbmctY29tcGlsZQotICAgICAgICAgICAgcGVn LWFzLXBlZworICAjOmV4cG9ydCAocGVnLWFzLXBlZwogICAgICAgICAgICAgZGVmaW5lLWdyYW1t YXIKICAgICAgICAgICAgIGRlZmluZS1ncmFtbWFyLWYKICAgICAgICAgICAgIHBlZy1ncmFtbWFy KQpAQCAtMjQ4LDExICsyNDcsMTcgQEAgUkIgPCAnXScKICAgICAgICAgICAgICAgICAgKGNvbXBy ZXNzb3ItY29yZSAoc3ludGF4LT5kYXR1bSBzeW4pKSkpCiAKIDs7IEJ1aWxkcyBhIGxhbWJkYS1l eHByZXNzaW9ucyBmb3IgdGhlIHBhdHRlcm4gU1RSIHVzaW5nIGFjY3VtLgotKGRlZmluZSAocGVn LXN0cmluZy1jb21waWxlIHN0ci1zdHggYWNjdW0pCi0gIChsZXQgKChzdHJpbmcgKHN5bnRheC0+ ZGF0dW0gc3RyLXN0eCkpKQotICAgIChwZWctc2V4cC1jb21waWxlCi0gICAgIChjb21wcmVzc29y Ci0gICAgICAocGVnLXBhdHRlcm4tPmRlZm4KLSAgICAgICAocGVnOnRyZWUgKHBlZy1wYXJzZSBw ZWctcGF0dGVybiBzdHJpbmcpKSBzdHItc3R4KQotICAgICAgc3RyLXN0eCkKLSAgICAgYWNjdW0p KSkKKyhkZWZpbmUgKHBlZy1zdHJpbmctY29tcGlsZSBhcmdzIGFjY3VtKQorICAoc3ludGF4LWNh c2UgYXJncyAoKQorICAgICgoc3RyLXN0eCkgKHN0cmluZz8gKHN5bnRheC0+ZGF0dW0gIydzdHIt c3R4KSkKKyAgICAgKGxldCAoKHN0cmluZyAoc3ludGF4LT5kYXR1bSAjJ3N0ci1zdHgpKSkKKyAg ICAgICAocGVnLXNleHAtY29tcGlsZQorICAgICAgICAoY29tcHJlc3NvcgorICAgICAgICAgKHBl Zy1wYXR0ZXJuLT5kZWZuCisgICAgICAgICAgKHBlZzp0cmVlIChwZWctcGFyc2UgcGVnLXBhdHRl cm4gc3RyaW5nKSkgIydzdHItc3R4KQorICAgICAgICAgIydzdHItc3R4KQorICAgICAgICAoaWYg KGVxPyBhY2N1bSAnYWxsKSAnYm9keSBhY2N1bSkpKSkKKyAgICAgKGVsc2UgKGVycm9yICJCYWQg ZW1iZWRkZWQgUEVHIHN0cmluZyIgYXJncykpKSkKKworKGFkZC1wZWctY29tcGlsZXIhICdwZWcg cGVnLXN0cmluZy1jb21waWxlKQorCi0tIAoxLjcuNC4xCgo= --20cf307cfe9ed89e03049fce40cf--