From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Freja Nordsiek Newsgroups: gmane.lisp.guile.devel Subject: Re: [PATCH] Add preliminary versions of the R7RS libraries along with documentation and tests Date: Sat, 17 Jun 2017 02:02:52 +0200 Message-ID: References: <87efv81sp9.fsf@netris.org> <874lw31fun.fsf@netris.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="f403043618f49d55d905521c9f3d" X-Trace: blaine.gmane.org 1497657796 27992 195.159.176.226 (17 Jun 2017 00:03:16 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 17 Jun 2017 00:03:16 +0000 (UTC) Cc: guile-devel@gnu.org To: Mark H Weaver Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Sat Jun 17 02:03:12 2017 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dM1Co-0006s3-VG for guile-devel@m.gmane.org; Sat, 17 Jun 2017 02:03:11 +0200 Original-Received: from localhost ([::1]:32848 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dM1Cs-0003kd-L5 for guile-devel@m.gmane.org; Fri, 16 Jun 2017 20:03:14 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:34249) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dM1Cd-0003kR-Fc for guile-devel@gnu.org; Fri, 16 Jun 2017 20:03:02 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dM1CZ-0002tt-OK for guile-devel@gnu.org; Fri, 16 Jun 2017 20:02:59 -0400 Original-Received: from mail-pf0-x22e.google.com ([2607:f8b0:400e:c00::22e]:33029) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dM1CZ-0002t6-BC for guile-devel@gnu.org; Fri, 16 Jun 2017 20:02:55 -0400 Original-Received: by mail-pf0-x22e.google.com with SMTP id 83so28908674pfr.0 for ; Fri, 16 Jun 2017 17:02:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=O4xHjQy2IaA6Q9V3m36Gf6CDq8ijvubHt9LuvmDSqQU=; b=gDDAac69QWADrUoepuYuskehK/JcUEjsATCxIh37KndgT4aTmn4yxLhVufoXcwfZJf Ugh5anYsn/OuCbu7k4z1CxZ7XZnx7Zwge2RkFa9kq24cpo4miZz+3kzg5UosEusnjH6v QvQ/vWxqTgrsOaZ/NTrjknxpb4OyMlhsdLw0tarAzmp6h23FaGJ9XcjapmhQq+RtfoPl DbGi/+TEHaJZcIPto3wUMq/aGK1lLyds+ItowXburRcXmU896NHXYU4kVvw39DvDtMw9 nDFvI8g+RURwF95eHx3HDRA7eOJhKese8euqMv33DKqO4pzAYy90agkZ9PvqVyotVxc/ x6KA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=O4xHjQy2IaA6Q9V3m36Gf6CDq8ijvubHt9LuvmDSqQU=; b=d9clsbnha7QaBNt0l5LVKOR3TXMFqHnGTgKE2T92jenFR9WQRZAWO9a9atJ1K25MH9 a5IO5Fc7dtsaZGHg0do+j4PiVpx9vm0z5FYb/n6X4KGNzEakw0rnSC3Sx/XQTA+4tyzj yUFkiW85+OkNbJ5nwoYbqcIZz9ekUbdZVBhQO6pxlFdUbkeyKYBSNGvNuaiGWyfqNVpd Pua5mv6Al5J5tmoSuoGka+0UBmVjn03OygYfCA4Ihf5pCCvChpkvlnnmy8A91XpiesrV q3fQh+Rr9RdV/08RCcOPMkYR4cx8qMs6k/zCiuEEvwFs0+O4ezXoXM2hsFSrH9ERZXAY qW+g== X-Gm-Message-State: AKS2vOylEqYekeP3XBFHT4wS6Wdf4kRHtHoQA7wt3cpLeNdTbCdPbpWC zpNJGgUIcgMEwxDFZr1S1IiWj6jLkU17 X-Received: by 10.84.224.207 with SMTP id k15mr10502211pln.15.1497657773806; Fri, 16 Jun 2017 17:02:53 -0700 (PDT) Original-Received: by 10.100.177.205 with HTTP; Fri, 16 Jun 2017 17:02:52 -0700 (PDT) In-Reply-To: <874lw31fun.fsf@netris.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c00::22e X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Original-Sender: "guile-devel" Xref: news.gmane.org gmane.lisp.guile.devel:19201 Archived-At: --f403043618f49d55d905521c9f3d Content-Type: text/plain; charset="UTF-8" I was able to add the unit tests I had written to the r7rs-wip branch and run them (patch is attached). The things that they tested mostly worked out of the box, which is a good sign. Had to fix a couple errors in some of the tests (checked the R7RS-small standard and my tests were indeed in error). Also, I found one error in the get-output-bytevector procedure in (scheme base), which was that the procedure discarded the bytes already written. get-output-bytevector is not supposed to be destructive to the bytes already written, but the R6RS output bytevector reading procedures are destructive. I made a patch with a very simple fix, which is to just write the bytes back. It has one major problem, though, and that is it is not threadsafe, so while it is an improvement, there is still some more work to do on it. Next thing I am going to do is copy over the docstrings I wrote for code going to the bitbucket (my versions of the r7rs modules) to the ones already in r7rs-wip since they are lacking docstrings. Freja Nordsiek On Tue, May 30, 2017 at 12:02 AM, Mark H Weaver wrote: > Hi Freja, > > Freja Nordsiek writes: > >> As far as splitting it into parts and discarding the scheme modules >> and keeping the documentation, that sounds like a good idea. I just >> did a quick perusal of the r7rs-wip branch and it does not seem to >> have any R7RS unit tests. Did I miss any? If not, the test code, as >> limited as it is, might also be useful. > > You didn't miss any. I agree that we need a good R7RS test suite. The > tests you wrote could be a useful starting point, but clearly more > coverage is needed. > > Some existing free R7RS Scheme implementations include test suites that > we might be able to incorporate. Chibi Scheme includes one which I > found useful while developing 'r7rs-wip', and as I vaguely recall there > were at least two others. Kawa might have one. > > I think we should aim to adapt and incorporate one or more existing R7RS > test suites from elsewhere, if the relevant licenses are favorable. > >> As for the question/puzzlement of why I wrote all of this, that is >> complicated, and kind of silly in retrospect. The r7rs-wip branch >> looked like it was most of the way to complete but was three years >> behind the master branch and thus seemed like it was possibly dead for >> unknown reasons [...] > >> Honestly, I should have just emailed the >> list and what not and asked about the status of the r7rs-wip branch >> and why it stalled, and then go from there (e.g. write the >> documentation and possibly tests). I ended up duplicating a lot of >> effort in a sloppy way. > > I can understand this. Unnecessarily rewriting code seems to be a > common tendency in our community, and I confess that I've been known to > do it myself. Hopefully the work had some educational value at least. > > I would guess that the overwhelming majority of the new Scheme code in > 'r7rs-wip' does not depend on the C changes. > > I stalled on the 'r7rs-wip' work for a few reasons. For a couple of > years, I had doubts about whether the R7RS should be promoted at all, > given that it is gratuitously incompatible with the R6RS, which I > consider to be more competently designed even though I disagree with > some aspects of R6RS. > > Apart from that, I encountered difficulties implementing > cyclic-data-aware R7RS 'write' and 'write-shared' in a way that's > efficient, compatible with existing APIs (custom printers, print states, > etc), and not too gross. I have an idea how to fix those issues, but > haven't gotten around to implementing it yet. > > There are some details that are not yet addressed, e.g. supporting > integers as components of module names, and deciding how to implement > (library ) clauses in 'cond-expand'. > > Finally, the lack of a comprehensive test suite made me concerned that > the code was not adequately tested. > >> I will split the documentation and possibly the tests out into their >> own patches and modify them to work with r7rs-wip branch instead of >> master branch. > > Thank you for your efforts! > > Mark --f403043618f49d55d905521c9f3d Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Added-initial-tests-for-R7RS-small.patch" Content-Disposition: attachment; filename="0001-Added-initial-tests-for-R7RS-small.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j40ihawu0 RnJvbSA4N2FlZWEzMTYyYjY0ODhhMGJjZWU3YjYwMjMxNGQ2MGViYTA0MzQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVqYSBOb3Jkc2llayA8Zm5vcmRzaWVAZ21haWwuY29tPgpE YXRlOiBTYXQsIDE3IEp1biAyMDE3IDAxOjQyOjI1ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gQWRk ZWQgaW5pdGlhbCB0ZXN0cyBmb3IgUjdSUy1zbWFsbC4KCiogdGVzdC1zdWl0ZS9NYWtlZmlsZS5h bTogQWRkZWQgUjdSUyB0ZXN0cyB0byB0aGUgbGlzdC4KKiB0ZXN0LXN1aXRlL3Rlc3RzL3I3cnMt YmFzZS50ZXN0IChuZXcgZmlsZSk6IFRlc3RzIGZvciAoc2NoZW1lIGJhc2UpLgoqIHRlc3Qtc3Vp dGUvdGVzdHMvcjdycy1jaGFyLnRlc3QgKG5ldyBmaWxlKTogVGVzdHMgZm9yIChzY2hlbWUgY2hh cikuCiogdGVzdC1zdWl0ZS90ZXN0cy9yN3JzLWxhenkudGVzdCAobmV3IGZpbGUpOiBUZXN0cyBm b3IgKHNjaGVtZSBsYXp5KS4KKiB0ZXN0LXN1aXRlL3Rlc3RzL3I3cnMtdGltZS50ZXN0IChuZXcg ZmlsZSk6IFRlc3RzIGZvciAoc2NoZW1lIHRpbWUpLgotLS0KIHRlc3Qtc3VpdGUvTWFrZWZpbGUu YW0gICAgICAgICAgfCAgIDQgKwogdGVzdC1zdWl0ZS90ZXN0cy9yN3JzLWJhc2UudGVzdCB8IDM1 NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0LXN1aXRlL3Rl c3RzL3I3cnMtY2hhci50ZXN0IHwgIDM3ICsrKysrCiB0ZXN0LXN1aXRlL3Rlc3RzL3I3cnMtbGF6 eS50ZXN0IHwgIDMwICsrKysKIHRlc3Qtc3VpdGUvdGVzdHMvcjdycy10aW1lLnRlc3QgfCAgNDMg KysrKysKIDUgZmlsZXMgY2hhbmdlZCwgNDY5IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw MDY0NCB0ZXN0LXN1aXRlL3Rlc3RzL3I3cnMtYmFzZS50ZXN0CiBjcmVhdGUgbW9kZSAxMDA2NDQg dGVzdC1zdWl0ZS90ZXN0cy9yN3JzLWNoYXIudGVzdAogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3Qt c3VpdGUvdGVzdHMvcjdycy1sYXp5LnRlc3QKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0LXN1aXRl L3Rlc3RzL3I3cnMtdGltZS50ZXN0CgpkaWZmIC0tZ2l0IGEvdGVzdC1zdWl0ZS9NYWtlZmlsZS5h bSBiL3Rlc3Qtc3VpdGUvTWFrZWZpbGUuYW0KaW5kZXggYTA1MGY4My4uMWViOGRjZiAxMDA2NDQK LS0tIGEvdGVzdC1zdWl0ZS9NYWtlZmlsZS5hbQorKysgYi90ZXN0LXN1aXRlL01ha2VmaWxlLmFt CkBAIC0xMTQsNiArMTE0LDEwIEBAIFNDTV9URVNUUyA9IHRlc3RzLzAwLWluaXRpYWwtZW52LnRl c3QJCVwKIAkgICAgdGVzdHMvcjZycy1yZWNvcmRzLXN5bnRhY3RpYy50ZXN0CVwKIAkgICAgdGVz dHMvcjZycy11bmljb2RlLnRlc3QJCVwKIAkgICAgdGVzdHMvcm5ycy1saWJyYXJpZXMudGVzdAkJ XAorCSAgICB0ZXN0cy9yN3JzLWJhc2UudGVzdAkJXAorCSAgICB0ZXN0cy9yN3JzLWNoYXIudGVz dAkJXAorCSAgICB0ZXN0cy9yN3JzLWxhenkudGVzdAkJXAorCSAgICB0ZXN0cy9yN3JzLXRpbWUu dGVzdAkJXAogCSAgICB0ZXN0cy9yYW1hcC50ZXN0CQkJXAogCSAgICB0ZXN0cy9yZGVsaW0udGVz dAkJCVwKIAkgICAgdGVzdHMvcmVhZGVyLnRlc3QJCQlcCmRpZmYgLS1naXQgYS90ZXN0LXN1aXRl L3Rlc3RzL3I3cnMtYmFzZS50ZXN0IGIvdGVzdC1zdWl0ZS90ZXN0cy9yN3JzLWJhc2UudGVzdApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmU5ZGVhCi0tLSAvZGV2L251bGwK KysrIGIvdGVzdC1zdWl0ZS90ZXN0cy9yN3JzLWJhc2UudGVzdApAQCAtMCwwICsxLDM1NSBAQAor Ozs7IHI3cnMtYmFzZS50ZXN0IC0tLSBUZXN0IHN1aXRlIGZvciBSN1JTIChzY2hlbWUgYmFzZSkK KworOzsgICAgICBDb3B5cmlnaHQgKEMpIDIwMTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCis7OworOzsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vcgorOzsgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYworOzsgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCis7OyB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCis7OworOzsgVGhpcyBs aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Cis7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKzs7IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCis7OworOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworOzsgTGljZW5zZSBhbG9uZyB3aXRo IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorOzsgRm91 bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN QSAwMjExMC0xMzAxIFVTQQorCisKKyhkZWZpbmUtbW9kdWxlICh0ZXN0LXN1aXRlIHRlc3Qtcjdy cy1iYXNlKQorICA6dXNlLW1vZHVsZSAoKHNjaGVtZSBiYXNlKSkKKyAgOnVzZS1tb2R1bGUgKChz Y2hlbWUgY2hhcikpCisgIDp1c2UtbW9kdWxlICgoc2NoZW1lIGZpbGUpKQorICA6dXNlLW1vZHVs ZSAoKHJucnMgYnl0ZXZlY3RvcnMpICM6c2VsZWN0IChieXRldmVjdG9yLT51OC1saXN0IHU4LWxp c3QtPmJ5dGV2ZWN0b3IpKQorICA6dXNlLW1vZHVsZSAoKHJucnMgaW8gcG9ydHMpICM6c2VsZWN0 IChwb3J0LXBvc2l0aW9uIG1ha2UtaS9vLWZpbGVuYW1lLWVycm9yIG1ha2UtaS9vLXJlYWQtZXJy b3IpKQorICA6dXNlLW1vZHVsZSAoKHNyZmkgc3JmaS0xKSkKKyAgOnVzZS1tb2R1bGUgKHRlc3Qt c3VpdGUgbGliKSkKKworCisoZGVmaW5lIHRoYWktZGlnaXRzICJcdTBFNTBcdTBFNTFcdTBFNTJc dTBFNTNcdTBFNTRcdTBFNTVcdTBFNTZcdTBFNTdcdTBFNThcdTBFNTkiKQorCis7OzsgQ29udmVy c2lvbiBnb3R0ZW4gdXNpbmcgQ1B5dGhvbiAzLjUuMgorKGRlZmluZSB0aGFpLWRpZ2l0cy11dGY4 ICN2dTgoMjI0IDE4NSAxNDQgMjI0IDE4NSAxNDUgMjI0IDE4NSAxNDYgMjI0IDE4NSAxNDcgMjI0 IDE4NSAxNDggMjI0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4NSAxNDkgMjI0 IDE4NSAxNTAgMjI0IDE4NSAxNTEgMjI0IDE4NSAxNTIgMjI0IDE4NSAxNTMpKQorCisoZGVmaW5l IChncmFiLWVycm9yIHRodW5rKQorICAobGV0ICgob2JqICcoKSkpCisgICAgKGd1YXJkIChjb24g KCg9IDEgMSkgKHNldCEgb2JqIGNvbikpKSAodGh1bmspKQorICAgIG9iaikpCisKKworKHdpdGgt dGVzdC1wcmVmaXggInJlYWQtZXJyb3I/IgorICAocGFzcy1pZiAicmVhZC1lcnJvcj8gdHJ1ZSBm b3IgaS9vLXJlYWQtZXJyb3IiIChyZWFkLWVycm9yPyAobWFrZS1pL28tcmVhZC1lcnJvciAiaGki KSkpCisgIChwYXNzLWlmICJyZWFkLWVycm9yPyBmYWxzZSBmb3IgaW50ZWdlciIgKG5vdCAocmVh ZC1lcnJvcj8gLTQpKSkKKyAgKHBhc3MtaWYgInJlYWQtZXJyb3I/IGZhbHNlIGZvciBmaWxlIGVy cm9yIiAobm90IChyZWFkLWVycm9yPyAobWFrZS1pL28tZmlsZW5hbWUtZXJyb3IgImhhbCIpKSkp KQorCisod2l0aC10ZXN0LXByZWZpeCAiZmlsZS1lcnJvcj8iCisgIChwYXNzLWlmICJmaWxlLWVy cm9yPyB0cnVlIiAoZmlsZS1lcnJvcj8gKG1ha2UtaS9vLWZpbGVuYW1lLWVycm9yICJoYWwiKSkp CisgIChwYXNzLWlmICJmaWxlLWVycm9yPyBmYWxzZSBmb3IgaW50ZWdlciIgKG5vdCAoZmlsZS1l cnJvcj8gLTQpKSkKKyAgKHBhc3MtaWYgImZpbGUtZXJyb3I/IGZhbHNlIGZvciByZWFkIGVycm9y IgorICAgIChub3QgKGZpbGUtZXJyb3I/IChncmFiLWVycm9yIChsYW1iZGEgKCkgKHJlYWQgImJs YWY4dmhlIikpKSkpKSkKKworKHdpdGgtdGVzdC1wcmVmaXggImZlYXR1cmVzIgorICAocGFzcy1p ZiAiZmVhdHVyZXMgbGlzdCIgKGxpc3Q/IChmZWF0dXJlcykpKQorICAocGFzcy1pZiAiZmVhdHVy ZXMgZXF1YWwgdG8gJWNvbmQtZXhwYW5kLWZlYXR1cmVzIgorICAgIChsaXN0PSBzeW1ib2w9PyAo ZmVhdHVyZXMpICVjb25kLWV4cGFuZC1mZWF0dXJlcykpKQorCisod2l0aC10ZXN0LXByZWZpeCAi c3F1YXJlIgorICAocGFzcy1pZiAic3F1YXJlIHNhbWUgYXMgKCogeCB4KSIKKyAgICAobGV0ICgo bnVtcyAoYXBwZW5kICcoOC4wIDMvNCAtMy4zIC04KSAoaW90YSAxMDApKSkpCisgICAgICAobGlz dD0gPSAobWFwIHNxdWFyZSBudW1zKSAobWFwIChsYW1iZGEgKHgpICgqIHggeCkpIG51bXMpKSkp KQorCisod2l0aC10ZXN0LXByZWZpeCAic3RyaW5nLT52ZWN0b3IiCisgIChwYXNzLWlmICJzdHJp bmctPnZlY3RvciB2ZWN0b3IiICh2ZWN0b3I/IChzdHJpbmctPnZlY3RvciAiYWl2aTM4dmFBZnZh OGhnYSMkIikpKQorICAocGFzcy1pZiAic3RyaW5nLT52ZWN0b3IgY29tcGFyZSB0byBzdHJpbmct Pmxpc3QiCisgICAgKGxldCAoKHMgImE5dmFFQXZhODhubjQgYWFpYXZBdiBhaWVhdmFmYT09MzRc YXYgYUEjJGEiKSkKKyAgICAgIChsaXN0PSBjaGFyPT8gKHZlY3Rvci0+bGlzdCAoc3RyaW5nLT52 ZWN0b3IgcykpIChzdHJpbmctPmxpc3QgcykpKSkpCisKKyh3aXRoLXRlc3QtcHJlZml4ICJ2ZWN0 b3ItPnN0cmluZyIKKyAgKHBhc3MtaWYgInZlY3Rvci0+c3RyaW5nIHN0cmluZyIgKHN0cmluZz8g KHZlY3Rvci0+c3RyaW5nICMoI1xhICNcYiAjXGMgI1xkKSkpKQorICAocGFzcy1pZiAidmVjdG9y LT5zdHJpbmcgY29tcGFyZSB0byB2ZWN0b3ItPmxpc3QiCisgICAgKGxldCAoKHYgIygjXGEgI1w1 ICNcRSAjXCUgI1xzcGFjZSkpKQorICAgICAgKGxpc3Q9IGNoYXI9PyAoc3RyaW5nLT5saXN0ICh2 ZWN0b3ItPnN0cmluZyB2KSkgKHZlY3Rvci0+bGlzdCB2KSkpKSkKKworKHdpdGgtdGVzdC1wcmVm aXggInN0cmluZy0+dXRmOCIKKyAgKHBhc3MtaWYgInN0cmluZy0+dXRmOCBieXRldmVjdG9yIiAo Ynl0ZXZlY3Rvcj8gKHN0cmluZy0+dXRmOCAiYTl2M25hYXZpYXZhRiNhYXZpM0FcdTBFNTkiKSkp CisgIChwYXNzLWlmICJzdHJpbmctPnV0ZjggYXNjaWkgZGlnaXRzIgorICAgIChsaXN0PSA9IChi eXRldmVjdG9yLT51OC1saXN0IChzdHJpbmctPnV0ZjggIjAxMjM0NTY3ODkiKSkgKGlvdGEgMTAg NDgpKSkKKyAgKHBhc3MtaWYgInN0cmluZy0+dXRmOCBsZW5ndGggaW5jcmVhc2VzIGZvciBub24t YXNjaWkiCisgICAgKGxldCAoKHMgdGhhaS1kaWdpdHMpKQorICAgICAgKD4gKGJ5dGV2ZWN0b3It bGVuZ3RoIChzdHJpbmctPnV0ZjggcykpIChzdHJpbmctbGVuZ3RoIHMpKSkpKQorCisod2l0aC10 ZXN0LXByZWZpeCAidXRmOC0+c3RyaW5nIgorICAocGFzcy1pZiAidXRmOC0+c3RyaW5nIHN0cmlu ZyIgKHN0cmluZz8gKHV0ZjgtPnN0cmluZyAodTgtbGlzdC0+Ynl0ZXZlY3RvciAoaW90YSAxMCA0 OCkpKSkpCisgIChwYXNzLWlmICJ1dGY4LT5zdHJpbmcgbGVuZ3RoIGRlY3JlYXNlcyBmb3Igbm9u LWFzY2lpIgorICAgIChsZXQgKChidiB0aGFpLWRpZ2l0cy11dGY4KSkKKyAgICAgICg+IChieXRl dmVjdG9yLWxlbmd0aCBidikgKHN0cmluZy1sZW5ndGggKHV0ZjgtPnN0cmluZyBidikpKSkpCisg IChwYXNzLWlmICJ1dGY4LT5zdHJpbmcgd29ya3MgZm9yIFRoYWkgZGlnaXRzIgorICAgIChzdHJp bmc9PyAodXRmOC0+c3RyaW5nIHRoYWktZGlnaXRzLXV0ZjgpIHRoYWktZGlnaXRzKSkpCisKKyh3 aXRoLXRlc3QtcHJlZml4ICJzdHJpbmctbWFwIgorICAocGFzcy1pZiAic3RyaW5nLW1hcCBjaGFy LWRvd25jYXNlIgorICAgIChsZXQgKChzICJhYXZpZUVBSVZBZWFuZWFpI2FhOXZhIyQiKSkKKyAg ICAgIChzdHJpbmc9PyAoc3RyaW5nLW1hcCBjaGFyLWRvd25jYXNlIHMpIChzdHJpbmctZG93bmNh c2UgcykpKSkKKyAgKHBhc3MtaWYgInN0cmluZy1tYXAgc2VsZWN0aXZlIGNoYXIgZ3JhYiIKKyAg ICAobGV0ICgoczEgInVlQU5lenZmaUh2aWFlIikKKyAgICAgICAgICAoczIgIlVFYW5FWlZGSWhW SUFFIikpCisgICAgICAoc3RyaW5nPT8gKHN0cmluZy11cGNhc2UgczEpIChzdHJpbmctbWFwIChs YW1iZGEgKHggeSkgKGlmIChjaGFyPj8geCB5KSB5IHgpKSBzMSBzMikpKSkpCisKKyh3aXRoLXRl c3QtcHJlZml4ICJzdHJpbmctZm9yLWVhY2giCisgIChwYXNzLWlmICJzdHJpbmctZm9yLWVhY2gg bG9vayBmb3IgY2hhciIKKyAgICAobGV0ICgocyAiYXZpZW5mdmF2UmF1MyRhdmE4dmFlI0FmYSIp CisgICAgICAgICAgKGNociAjXFIpCisgICAgICAgICAgKGZvdW5kICNmKSkKKyAgICAgIChzdHJp bmctZm9yLWVhY2ggKGxhbWJkYSAoYykoaWYgKGNoYXI9PyBjaHIgYykgKHNldCEgZm91bmQgI3Qp KSkgcykKKyAgICAgIGZvdW5kKSkpCisKKyh3aXRoLXRlc3QtcHJlZml4ICJieXRldmVjdG9yIgor ICAocGFzcy1pZiAiYnl0ZXZlY3RvciBieXRldmVjdG9yIiAoYnl0ZXZlY3Rvcj8gKGJ5dGV2ZWN0 b3IgMyA5IDMyIDIwNCkpKQorICAocGFzcy1pZiAiYnl0ZXZlY3RvciBhcHBseSB0byB1OCBsaXN0 IgorICAgIChsZXQgKChsc3QgJygzIDQ4IDExMCAzMCAyNTMgMCkpKQorICAgICAgKGxpc3Q9ID0g KGJ5dGV2ZWN0b3ItPnU4LWxpc3QgKGFwcGx5IGJ5dGV2ZWN0b3IgbHN0KSkgbHN0KSkpKQorCiso d2l0aC10ZXN0LXByZWZpeCAiYnl0ZXZlY3Rvci1hcHBlbmQiCisgIChwYXNzLWlmICJieXRldmVj dG9yLWFwcGVuZCBieXRldmVjdG9yIiAoYnl0ZXZlY3Rvcj8gKGJ5dGV2ZWN0b3ItYXBwZW5kICN2 dTgoMyAyKSAjdnU4KDkwKSkpKQorICAocGFzcy1pZiAiYnl0ZXZlY3Rvci1hcHBlbmQgdGhyZWUg dTggbGlzdHMiCisgICAgKGxldCAoKGxzdDEgJygzOCA4IDIwIDAgMjU1KSkKKyAgICAgICAgICAo bHN0MiAnKDgyKSkKKyAgICAgICAgICAobHN0MyAnKDUgOSAyMDAgMTM4KSkpCisgICAgICAobGlz dD0gPSAoYXBwZW5kIGxzdDEgbHN0MiBsc3QzKQorICAgICAgICAgICAgIChieXRldmVjdG9yLT51 OC1saXN0IChieXRldmVjdG9yLWFwcGVuZCAodTgtbGlzdC0+Ynl0ZXZlY3RvciBsc3QxKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodTgtbGlz dC0+Ynl0ZXZlY3RvciBsc3QyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAodTgtbGlzdC0+Ynl0ZXZlY3RvciBsc3QzKSkpKSkpKQorCisod2l0 aC10ZXN0LXByZWZpeCAiYnl0ZXZlY3Rvci1jb3B5ISIKKyAgKHBhc3MtaWYgImJ5dGV2ZWN0b3It Y29weSEiCisgICAgKGxldCAoKGJ2LXQgI3Z1OCgwIDAgMCAwIDAgMCAwIDApKQorICAgICAgICAg IChidi1zICN2dTgoMSAyIDMpKQorICAgICAgICAgIChidi1yICN2dTgoMCAwIDAgMSAyIDMgMCAw KSkpCisgICAgICAoYnl0ZXZlY3Rvci1jb3B5ISBidi10IDMgYnYtcykKKyAgICAgIChsaXN0PSA9 IChieXRldmVjdG9yLT51OC1saXN0IGJ2LXQpIChieXRldmVjdG9yLT51OC1saXN0IGJ2LXIpKSkp CisgIChwYXNzLWlmICJieXRldmVjdG9yLWNvcHkhIHdpdGggc291cmNlLXN0YXJ0IgorICAgIChs ZXQgKChidi10ICN2dTgoMCAwIDAgMCAwIDAgMCAwKSkKKyAgICAgICAgICAoYnYtcyAjdnU4KDEg MiAzKSkKKyAgICAgICAgICAoYnYtciAjdnU4KDAgMCAwIDIgMyAwIDAgMCkpKQorICAgICAgKGJ5 dGV2ZWN0b3ItY29weSEgYnYtdCAzIGJ2LXMgMSkKKyAgICAgIChsaXN0PSA9IChieXRldmVjdG9y LT51OC1saXN0IGJ2LXQpIChieXRldmVjdG9yLT51OC1saXN0IGJ2LXIpKSkpCisgIChwYXNzLWlm ICJieXRldmVjdG9yLWNvcHkhIHdpdGggc291cmNlLXN0YXJ0IGFuZCBzb3VyY2UtZW5kIgorICAg IChsZXQgKChidi10ICN2dTgoMCAwIDAgMCAwIDAgMCAwKSkKKyAgICAgICAgICAoYnYtcyAjdnU4 KDEgMiAzKSkKKyAgICAgICAgICAoYnYtciAjdnU4KDAgMCAwIDIgMCAwIDAgMCkpKQorICAgICAg KGJ5dGV2ZWN0b3ItY29weSEgYnYtdCAzIGJ2LXMgMSAyKQorICAgICAgKGxpc3Q9ID0gKGJ5dGV2 ZWN0b3ItPnU4LWxpc3QgYnYtdCkgKGJ5dGV2ZWN0b3ItPnU4LWxpc3QgYnYtcikpKSkpCisKKyh3 aXRoLXRlc3QtcHJlZml4ICJieXRldmVjdG9yIG91dHB1dCBwb3J0IgorICAocGFzcy1pZiAib3Bl bi1vdXRwdXQtYnl0ZXZlY3RvciBvcGVuIGJpbmFyeSBvdXRwdXQgcG9ydCIKKyAgICAobGV0ICgo cCAob3Blbi1vdXRwdXQtYnl0ZXZlY3RvcikpKQorICAgICAgKGFuZCAocG9ydD8gcCkgKG91dHB1 dC1wb3J0PyBwKSAoYmluYXJ5LXBvcnQ/IHApIChub3QgKHBvcnQtY2xvc2VkPyBwKSkpKSkKKyAg KHBhc3MtaWYgImdldC1vdXRwdXQtYnl0ZXZlY3RvciBieXRldmVjdG9yIgorICAgIChieXRldmVj dG9yPyAoZ2V0LW91dHB1dC1ieXRldmVjdG9yIChvcGVuLW91dHB1dC1ieXRldmVjdG9yKSkpKQor ICAocGFzcy1pZiAid3JpdGUgYW5kIHJlYWQgYmFjayIKKyAgICAobGV0ICgocCAob3Blbi1vdXRw dXQtYnl0ZXZlY3RvcikpCisgICAgICAgICAgKGJ2ICh1OC1saXN0LT5ieXRldmVjdG9yIChpb3Rh IDI1NikpKSkKKyAgICAgICh3cml0ZS1ieXRldmVjdG9yIGJ2IHApCisgICAgICA7OyBDb21wYXJl IHR3aWNlIHRvIG1ha2Ugc3VyZSBnZXQtb3V0cHV0LWJ5dGV2ZWN0b3IgZG9lc24ndCBjYXVzZQor ICAgICAgOzsgYnl0ZXZlY3RvciBvdXRwdXQgcG9ydCB0byBiZSBjbGVhcmVkLgorICAgICAgKGxl dCAoKHJlYWQxIChnZXQtb3V0cHV0LWJ5dGV2ZWN0b3IgcCkpCisgICAgICAgICAgICAocmVhZDIg KGdldC1vdXRwdXQtYnl0ZXZlY3RvciBwKSkpCisgICAgICAgIChjbG9zZS1wb3J0IHApCisgICAg ICAgIChhbmQgKGxpc3Q9ID0gKGJ5dGV2ZWN0b3ItPnU4LWxpc3QgYnYpIChieXRldmVjdG9yLT51 OC1saXN0IHJlYWQxKSkKKyAgICAgICAgICAgICAobGlzdD0gPSAoYnl0ZXZlY3Rvci0+dTgtbGlz dCBidikgKGJ5dGV2ZWN0b3ItPnU4LWxpc3QgcmVhZDIpKSkpKSkpCisKKyh3aXRoLXRlc3QtcHJl Zml4ICJpbnB1dC1wb3J0LW9wZW4/IgorICAocGFzcy1pZiAiaW5wdXQtcG9ydC1vcGVuPyB0cnVl IG9uIG9wZW4gaW5wdXQgcG9ydCIKKyAgICAoYm9vbGVhbj0/ICN0IChpbnB1dC1wb3J0LW9wZW4/ IChvcGVuLWlucHV0LXN0cmluZyAiYWJlZVUiKSkpKQorICAocGFzcy1pZiAiaW5wdXQtcG9ydC1v cGVuPyBmYWxzZSBvbiBjbG9zZWQgaW5wdXQgcG9ydCIKKyAgICAobGV0ICgocCAob3Blbi1pbnB1 dC1zdHJpbmcgImF2aWUkYXY5YSIpKSkKKyAgICAgIChjbG9zZS1wb3J0IHApCisgICAgICAoYm9v bGVhbj0/ICNmIChpbnB1dC1wb3J0LW9wZW4/IHApKSkpCisgIChwYXNzLWlmICJpbnB1dC1wb3J0 LW9wZW4/IGZhbHNlIG9uIG91dHB1dCBwb3J0IgorICAgIChjYWxsL2NjCisgICAgIChsYW1iZGEg KGNvbnQpCisgICAgICAgKHdpdGgtZXhjZXB0aW9uLWhhbmRsZXIgKGxhbWJkYSAoYSkgKGNvbnQg I3QpKQorICAgICAgICAgKGxhbWJkYSAoKSAoY29udCAoYm9vbGVhbj0/ICNmIChpbnB1dC1wb3J0 LW9wZW4/IChvcGVuLW91dHB1dC1zdHJpbmcpKSkpKSkpKSkKKyAgKHBhc3MtaWYgImlucHV0LXBv cnQtb3Blbj8gZXJyb3Igb3IgZmFsc2Ugb24gaW50ZWdlciIKKyAgICAoY2FsbC9jYworICAgICAo bGFtYmRhIChjb250KQorICAgICAgICh3aXRoLWV4Y2VwdGlvbi1oYW5kbGVyIChsYW1iZGEgKGEp IChjb250ICN0KSkKKyAgICAgICAgIChsYW1iZGEgKCkgKGNvbnQgKGJvb2xlYW49PyAjZiAoaW5w dXQtcG9ydC1vcGVuPyAzKSkpKSkpKSkpCisKKyh3aXRoLXRlc3QtcHJlZml4ICJvdXRwdXQtcG9y dC1vcGVuPyIKKyAgKHBhc3MtaWYgIm91dHB1dC1wb3J0LW9wZW4/IHRydWUgb24gb3BlbiBvdXRw dXQgcG9ydCIKKyAgICAoYm9vbGVhbj0/ICN0IChvdXRwdXQtcG9ydC1vcGVuPyAob3Blbi1vdXRw dXQtc3RyaW5nKSkpKQorICAocGFzcy1pZiAib3V0cHV0LXBvcnQtb3Blbj8gZmFsc2Ugb24gY2xv c2VkIG91dHB1dCBwb3J0IgorICAgIChsZXQgKChwIChvcGVuLW91dHB1dC1zdHJpbmcpKSkKKyAg ICAgIChjbG9zZS1wb3J0IHApCisgICAgICAoYm9vbGVhbj0/ICNmIChvdXRwdXQtcG9ydC1vcGVu PyBwKSkpKQorICAocGFzcy1pZiAib3V0cHV0LXBvcnQtb3Blbj8gZmFsc2Ugb24gaW5wdXQgcG9y dCIKKyAgICAoY2FsbC9jYworICAgICAobGFtYmRhIChjb250KQorICAgICAgICh3aXRoLWV4Y2Vw dGlvbi1oYW5kbGVyIChsYW1iZGEgKGEpIChjb250ICN0KSkKKyAgICAgICAgIChsYW1iZGEgKCkg KGNvbnQgKGJvb2xlYW49PyAjZiAob3V0cHV0LXBvcnQtb3Blbj8gKG9wZW4taW5wdXQtc3RyaW5n KSkpKSkpKSkpCisgIChwYXNzLWlmICJvdXRwdXQtcG9ydC1vcGVuPyBlcnJvciBvciBmYWxzZSBv biBpbnRlZ2VyIgorICAgIChjYWxsL2NjCisgICAgIChsYW1iZGEgKGNvbnQpCisgICAgICAgKHdp dGgtZXhjZXB0aW9uLWhhbmRsZXIgKGxhbWJkYSAoYSkgKGNvbnQgI3QpKQorICAgICAgICAgKGxh bWJkYSAoKSAoY29udCAoYm9vbGVhbj0/ICNmIChvdXRwdXQtcG9ydC1vcGVuPyAzKSkpKSkpKSkp CisKKyh3aXRoLXRlc3QtcHJlZml4ICJwZWVrLXU4IgorICAocGFzcy1pZiAicGVlay11OCByZWFk IGJ5dGUgYW5kIGRvZXNuJ3QgYWR2YW5jZSIKKyAgICAobGV0KiAoKGJ2ICN2dTgoMjM5IDM5IDE4 NCA5NCAzOCkpCisgICAgICAgICAgIChwIChvcGVuLWlucHV0LWJ5dGV2ZWN0b3IgYnYpKQorICAg ICAgICAgICAodmFsdWUgKHBlZWstdTggcCkpCisgICAgICAgICAgIChwb3MgKHBvcnQtcG9zaXRp b24gcCkpKQorICAgICAgKGNsb3NlLXBvcnQgcCkKKyAgICAgIChhbmQgKD0gcG9zIDApICg9IHZh bHVlIChieXRldmVjdG9yLXU4LXJlZiBidiAwKSkpKSkpCisKKyh3aXRoLXRlc3QtcHJlZml4ICJy ZWFkLXU4IgorICAocGFzcy1pZiAicmVhZC11OCByZWFkIGJ5dGUgYW5kIGRvZXMgYWR2YW5jZSIK KyAgICAobGV0KiAoKGJ2ICN2dTgoMjM5IDM5IDE4NCA5NCAzOCkpCisgICAgICAgICAgIChwIChv cGVuLWlucHV0LWJ5dGV2ZWN0b3IgYnYpKQorICAgICAgICAgICAodmFsdWUgKHJlYWQtdTggcCkp CisgICAgICAgICAgIChwb3MgKHBvcnQtcG9zaXRpb24gcCkpKQorICAgICAgKGNsb3NlLXBvcnQg cCkKKyAgICAgIChhbmQgKD0gcG9zIDEpICg9IHZhbHVlIChieXRldmVjdG9yLXU4LXJlZiBidiAw KSkpKSkpCisKKyh3aXRoLXRlc3QtcHJlZml4ICJ3cml0ZS11OCIKKyAgKHBhc3MtaWYgIndyaXRl LXU4IHdyaXRlIGJ5dGUgYW5kIGRvZXMgYWR2YW5jZSIKKyAgICAobGV0ICgodmFsdWUgNDcpCisg ICAgICAgICAgKHAgKG9wZW4tb3V0cHV0LWJ5dGV2ZWN0b3IpKSkKKyAgICAgICh3cml0ZS11OCB2 YWx1ZSBwKQorICAgICAgKGFuZCAoPSAocG9ydC1wb3NpdGlvbiBwKSAxKQorICAgICAgICAgICAo bGlzdD0gPSAobGlzdCB2YWx1ZSkgKGJ5dGV2ZWN0b3ItPnU4LWxpc3QgKGdldC1vdXRwdXQtYnl0 ZXZlY3RvciBwKSkpKSkpKQorCisod2l0aC10ZXN0LXByZWZpeCAicmVhZC1ieXRldmVjdG9yIgor ICAocGFzcy1pZiAicmVhZC1ieXRldmVjdG9yIHJlYWQgY29ycmVjdGx5IgorICAgIChsZXQqICgo YnYgI3Z1OCgyMzkgMzkgMTg0IDk0IDM4KSkKKyAgICAgICAgICAgKG51bS10by1yZWFkIDMpCisg ICAgICAgICAgIChwIChvcGVuLWlucHV0LWJ5dGV2ZWN0b3IgYnYpKQorICAgICAgICAgICAodmFs dWUgKHJlYWQtYnl0ZXZlY3RvciBudW0tdG8tcmVhZCBwKSkKKyAgICAgICAgICAgKHBvcyAocG9y dC1wb3NpdGlvbiBwKSkpCisgICAgICAoY2xvc2UtcG9ydCBwKQorICAgICAgKGFuZCAoPSBwb3Mg bnVtLXRvLXJlYWQpIChsaXN0PSA9IChieXRldmVjdG9yLT51OC1saXN0IHZhbHVlKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdC1oZWFkIChieXRldmVjdG9yLT51 OC1saXN0IGJ2KSBudW0tdG8tcmVhZCkpKSkpKQorCisod2l0aC10ZXN0LXByZWZpeCAicmVhZC1i eXRldmVjdG9yISIKKyAgKHBhc3MtaWYgInJlYWQtYnl0ZXZlY3RvciEgcmVhZCIKKyAgICAobGV0 KiAoKGJ2LXMgI3Z1OCgxIDIgMyA0IDUgNikpCisgICAgICAgICAgIChidi10ICN2dTgoMCAwIDAp KQorICAgICAgICAgICAoYnYtY29ycmVjdCAjdnU4KDEgMiAzKSkKKyAgICAgICAgICAgKHAgKG9w ZW4taW5wdXQtYnl0ZXZlY3RvciBidi1zKSkKKyAgICAgICAgICAgKG51bS1yZWFkIChyZWFkLWJ5 dGV2ZWN0b3IhIGJ2LXQgcCkpCisgICAgICAgICAgIChwb3MgKHBvcnQtcG9zaXRpb24gcCkpKQor ICAgICAgKGNsb3NlLXBvcnQgcCkKKyAgICAgIChhbmQgKGxpc3Q9ID0gKGJ5dGV2ZWN0b3ItPnU4 LWxpc3QgYnYtdCkgKGJ5dGV2ZWN0b3ItPnU4LWxpc3QgYnYtY29ycmVjdCkpCisgICAgICAgICAg ICg9IHBvcyBudW0tcmVhZCkKKyAgICAgICAgICAgKD0gbnVtLXJlYWQgKGJ5dGV2ZWN0b3ItbGVu Z3RoIGJ2LXQpKSkpKQorICAocGFzcy1pZiAicmVhZC1ieXRldmVjdG9yISByZWFkIHdpdGggc3Rh cnQiCisgICAgKGxldCogKChidi1zICN2dTgoMSAyIDMgNCA1IDYpKQorICAgICAgICAgICAoYnYt dCAjdnU4KDAgMCAwKSkKKyAgICAgICAgICAgKGJ2LWNvcnJlY3QgI3Z1OCgwIDEgMikpCisgICAg ICAgICAgIChwIChvcGVuLWlucHV0LWJ5dGV2ZWN0b3IgYnYtcykpCisgICAgICAgICAgIChudW0t cmVhZCAocmVhZC1ieXRldmVjdG9yISBidi10IHAgMSkpCisgICAgICAgICAgIChwb3MgKHBvcnQt cG9zaXRpb24gcCkpKQorICAgICAgKGNsb3NlLXBvcnQgcCkKKyAgICAgIChhbmQgKGxpc3Q9ID0g KGJ5dGV2ZWN0b3ItPnU4LWxpc3QgYnYtdCkgKGJ5dGV2ZWN0b3ItPnU4LWxpc3QgYnYtY29ycmVj dCkpCisgICAgICAgICAgICg9IHBvcyBudW0tcmVhZCkKKyAgICAgICAgICAgKD0gKCsgMSBudW0t cmVhZCkgKGJ5dGV2ZWN0b3ItbGVuZ3RoIGJ2LXQpKSkpKQorICAocGFzcy1pZiAicmVhZC1ieXRl dmVjdG9yISByZWFkIHdpdGggc3RhcnQgYW5kIGVuZCIKKyAgICAobGV0KiAoKGJ2LXMgI3Z1OCgx IDIgMyA0IDUgNikpCisgICAgICAgICAgIChidi10ICN2dTgoMCAwIDApKQorICAgICAgICAgICAo YnYtY29ycmVjdCAjdnU4KDAgMSAwKSkKKyAgICAgICAgICAgKHAgKG9wZW4taW5wdXQtYnl0ZXZl Y3RvciBidi1zKSkKKyAgICAgICAgICAgKG51bS1yZWFkIChyZWFkLWJ5dGV2ZWN0b3IhIGJ2LXQg cCAxIDIpKQorICAgICAgICAgICAocG9zIChwb3J0LXBvc2l0aW9uIHApKSkKKyAgICAgIChjbG9z ZS1wb3J0IHApCisgICAgICAoYW5kIChsaXN0PSA9IChieXRldmVjdG9yLT51OC1saXN0IGJ2LXQp IChieXRldmVjdG9yLT51OC1saXN0IGJ2LWNvcnJlY3QpKQorICAgICAgICAgICAoPSBwb3MgbnVt LXJlYWQpCisgICAgICAgICAgICg9ICgrIDIgbnVtLXJlYWQpIChieXRldmVjdG9yLWxlbmd0aCBi di10KSkpKSkpCisKKyh3aXRoLXRlc3QtcHJlZml4ICJ3cml0ZS1ieXRldmVjdG9yIgorICAocGFz cy1pZiAid3JpdGUtYnl0ZXZlY3RvciB3cml0ZSIKKyAgICAobGV0ICgoYnYgI3Z1OCgxIDIgMyA0 IDUgNikpCisgICAgICAgICAgKGJ2LWNvcnJlY3QgI3Z1OCgxIDIgMyA0IDUgNikpCisgICAgICAg ICAgKHAgKG9wZW4tb3V0cHV0LWJ5dGV2ZWN0b3IpKSkKKyAgICAgICh3cml0ZS1ieXRldmVjdG9y IGJ2IHApCisgICAgICAoYW5kIChsaXN0PSA9IChieXRldmVjdG9yLT51OC1saXN0IChnZXQtb3V0 cHV0LWJ5dGV2ZWN0b3IgcCkpCisgICAgICAgICAgICAgICAgICAoYnl0ZXZlY3Rvci0+dTgtbGlz dCBidi1jb3JyZWN0KSkKKyAgICAgICAgICAgKD0gKHBvcnQtcG9zaXRpb24gcCkgKGJ5dGV2ZWN0 b3ItbGVuZ3RoIGJ2LWNvcnJlY3QpKSkpKQorICAocGFzcy1pZiAid3JpdGUtYnl0ZXZlY3RvciB3 cml0ZSB3aXRoIHN0YXJ0IgorICAgIChsZXQgKChidiAjdnU4KDEgMiAzIDQgNSA2KSkKKyAgICAg ICAgICAoYnYtY29ycmVjdCAjdnU4KDMgNCA1IDYpKQorICAgICAgICAgIChwIChvcGVuLW91dHB1 dC1ieXRldmVjdG9yKSkpCisgICAgICAod3JpdGUtYnl0ZXZlY3RvciBidiBwIDIpCisgICAgICAo YW5kIChsaXN0PSA9IChieXRldmVjdG9yLT51OC1saXN0IChnZXQtb3V0cHV0LWJ5dGV2ZWN0b3Ig cCkpCisgICAgICAgICAgICAgICAgICAoYnl0ZXZlY3Rvci0+dTgtbGlzdCBidi1jb3JyZWN0KSkK KyAgICAgICAgICAgKD0gKHBvcnQtcG9zaXRpb24gcCkgKGJ5dGV2ZWN0b3ItbGVuZ3RoIGJ2LWNv cnJlY3QpKSkpKQorICAocGFzcy1pZiAid3JpdGUtYnl0ZXZlY3RvciB3cml0ZSB3aXRoIHN0YXJ0 IGFuZCBlbmQiCisgICAgKGxldCAoKGJ2ICN2dTgoMSAyIDMgNCA1IDYpKQorICAgICAgICAgIChi di1jb3JyZWN0ICN2dTgoMyA0IDUpKQorICAgICAgICAgIChwIChvcGVuLW91dHB1dC1ieXRldmVj dG9yKSkpCisgICAgICAod3JpdGUtYnl0ZXZlY3RvciBidiBwIDIgNSkKKyAgICAgIChhbmQgKGxp c3Q9ID0gKGJ5dGV2ZWN0b3ItPnU4LWxpc3QgKGdldC1vdXRwdXQtYnl0ZXZlY3RvciBwKSkKKyAg ICAgICAgICAgICAgICAgIChieXRldmVjdG9yLT51OC1saXN0IGJ2LWNvcnJlY3QpKQorICAgICAg ICAgICAoPSAocG9ydC1wb3NpdGlvbiBwKSAoYnl0ZXZlY3Rvci1sZW5ndGggYnYtY29ycmVjdCkp KSkpKQorCisod2l0aC10ZXN0LXByZWZpeCAicmVhZC1zdHJpbmciCisgIChwYXNzLWlmICJyZWFk LXN0cmluZyByZWFkIgorICAgIChsZXQqICgoc3RyLXMgImFpdmlFZW52YWUiKQorICAgICAgICAg ICAoY291bnQgNSkKKyAgICAgICAgICAgKHN0ci1jb3JyZWN0ICJhaXZpRSIpCisgICAgICAgICAg IChwIChvcGVuLWlucHV0LXN0cmluZyBzdHItcykpCisgICAgICAgICAgIChzdHItb3V0IChyZWFk LXN0cmluZyBjb3VudCBwKSkKKyAgICAgICAgICAgKHBvcyAocG9ydC1wb3NpdGlvbiBwKSkpCisg ICAgICAoY2xvc2UtcG9ydCBwKQorICAgICAgKGFuZCAoc3RyaW5nPT8gc3RyLW91dCBzdHItY29y cmVjdCkgKD0gY291bnQgKHN0cmluZy1sZW5ndGggc3RyLW91dCkpICg9IGNvdW50IHBvcykpKSkp CisKKyh3aXRoLXRlc3QtcHJlZml4ICJ3cml0ZS1zdHJpbmciCisgIChwYXNzLWlmICJ3cml0ZS1z dHJpbmcgd3JpdGUiCisgICAgKGxldCogKChzdHItcyAiYSp2aVJhaXYiKQorICAgICAgICAgICAo c3RyLWNvcnJlY3Qgc3RyLXMpCisgICAgICAgICAgIChwIChvcGVuLW91dHB1dC1zdHJpbmcpKSkK KyAgICAgICh3cml0ZS1zdHJpbmcgc3RyLXMgcCkKKyAgICAgIChsZXQgKChzdHItb3V0IChnZXQt b3V0cHV0LXN0cmluZyBwKSkKKyAgICAgICAgICAgIChwb3MgKHBvcnQtcG9zaXRpb24gcCkpKQor ICAgICAgICAoY2xvc2UtcG9ydCBwKQorICAgICAgICAoYW5kIChzdHJpbmc9PyBzdHItb3V0IHN0 ci1jb3JyZWN0KSAoPSBwb3MgKHN0cmluZy1sZW5ndGggc3RyLW91dCkpKSkpKQorICAocGFzcy1p ZiAid3JpdGUtc3RyaW5nIHdyaXRlIHdpdGggc3RhcnQiCisgICAgKGxldCAoKHN0ci1zICJhKnZp UmFpdiIpCisgICAgICAgICAgKHN0ci1jb3JyZWN0ICJpUmFpdiIpCisgICAgICAgICAgKHAgKG9w ZW4tb3V0cHV0LXN0cmluZykpKQorICAgICAgKHdyaXRlLXN0cmluZyBzdHItcyBwIDMpCisgICAg ICAobGV0ICgoc3RyLW91dCAoZ2V0LW91dHB1dC1zdHJpbmcgcCkpCisgICAgICAgICAgICAocG9z IChwb3J0LXBvc2l0aW9uIHApKSkKKyAgICAgICAgKGNsb3NlLXBvcnQgcCkKKyAgICAgICAgKGFu ZCAoc3RyaW5nPT8gc3RyLW91dCBzdHItY29ycmVjdCkgKD0gcG9zIChzdHJpbmctbGVuZ3RoIHN0 ci1vdXQpKSkpKSkKKyAgKHBhc3MtaWYgIndyaXRlLXN0cmluZyB3cml0ZSB3aXRoIHN0YXJ0IGFu ZCBlbmQiCisgICAgKGxldCAoKHN0ci1zICJhKnZpUmFpdiIpCisgICAgICAgICAgKHN0ci1jb3Jy ZWN0ICJpUmEiKQorICAgICAgICAgIChwIChvcGVuLW91dHB1dC1zdHJpbmcpKSkKKyAgICAgICh3 cml0ZS1zdHJpbmcgc3RyLXMgcCAzIDYpCisgICAgICAobGV0ICgoc3RyLW91dCAoZ2V0LW91dHB1 dC1zdHJpbmcgcCkpCisgICAgICAgICAgICAocG9zIChwb3J0LXBvc2l0aW9uIHApKSkKKyAgICAg ICAgKGNsb3NlLXBvcnQgcCkKKyAgICAgICAgKGFuZCAoc3RyaW5nPT8gc3RyLW91dCBzdHItY29y cmVjdCkgKD0gcG9zIChzdHJpbmctbGVuZ3RoIHN0ci1vdXQpKSkpKSkpCisKKyh3aXRoLXRlc3Qt cHJlZml4ICJyZWFkLWxpbmUiCisgIChwYXNzLWlmICJyZWFkLWxpbmUgcmVhZCIKKyAgICAobGV0 ICgocCAob3Blbi1vdXRwdXQtc3RyaW5nKSkpCisgICAgICAobmV3bGluZSBwKQorICAgICAgKGxl dCAoKGxpbmVmZWVkIChnZXQtb3V0cHV0LXN0cmluZyBwKSkKKyAgICAgICAgICAgIChsaW5lMSAi YXZhaWUkQXZhIDNmYWkiKQorICAgICAgICAgICAgKGxpbmUyICJ2aTM4dmEkI2F2YSBhYWYgIikK KyAgICAgICAgICAgIChwbyAob3Blbi1vdXRwdXQtc3RyaW5nKSkpCisgICAgICAgICh3cml0ZS1z dHJpbmcgbGluZTEgcG8pCisgICAgICAgIChuZXdsaW5lIHBvKQorICAgICAgICAod3JpdGUtc3Ry aW5nIGxpbmUyIHBvKQorICAgICAgICAobmV3bGluZSBwbykKKyAgICAgICAgKGxldCogKChzdHIt aW50ZXJtZWRpYXRlIChnZXQtb3V0cHV0LXN0cmluZyBwbykpCisgICAgICAgICAgICAgICAocGkg KG9wZW4taW5wdXQtc3RyaW5nIHN0ci1pbnRlcm1lZGlhdGUpKQorICAgICAgICAgICAgICAgKHN0 ci1vdXQgKHJlYWQtbGluZSBwaSkpKQorICAgICAgICAgIChjbG9zZS1wb3J0IHApCisgICAgICAg ICAgKGNsb3NlLXBvcnQgcG8pCisgICAgICAgICAgKGNsb3NlLXBvcnQgcGkpCisgICAgICAgICAg KHN0cmluZz0/IHN0ci1vdXQgbGluZTEpKSkpKSkKZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvdGVz dHMvcjdycy1jaGFyLnRlc3QgYi90ZXN0LXN1aXRlL3Rlc3RzL3I3cnMtY2hhci50ZXN0Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyMmI3NTYKLS0tIC9kZXYvbnVsbAorKysg Yi90ZXN0LXN1aXRlL3Rlc3RzL3I3cnMtY2hhci50ZXN0CkBAIC0wLDAgKzEsMzcgQEAKKzs7OyBy N3JzLWNoYXIudGVzdCAtLS0gVGVzdCBzdWl0ZSBmb3IgUjdSUyAoc2NoZW1lIGNoYXIpCisKKzs7 ICAgICAgQ29weXJpZ2h0IChDKSAyMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor OzsKKzs7IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IKKzs7IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMKKzs7IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorOzsgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorOzsKKzs7IFRoaXMgbGlicmFy eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOzsg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUgR05VCis7OyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorOzsKKzs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKzs7IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlz IGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKzs7IEZvdW5kYXRp b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIx MTAtMTMwMSBVU0EKKworCisoZGVmaW5lLW1vZHVsZSAodGVzdC1zdWl0ZSB0ZXN0LXI3cnMtY2hh cikKKyAgOnVzZS1tb2R1bGUgKChzY2hlbWUgY2hhcikpCisgIDp1c2UtbW9kdWxlICgoc3JmaSBz cmZpLTEpKQorICA6dXNlLW1vZHVsZSAodGVzdC1zdWl0ZSBsaWIpKQorCisKKyhkZWZpbmUgKHRl c3QtemVyby10by1uaW5lIHMpCisgIChldmVyeSBlcXVhbD8gKGlvdGEgMTApIChtYXAgZGlnaXQt dmFsdWUgKHN0cmluZy0+bGlzdCBzKSkpKQorCisod2l0aC10ZXN0LXByZWZpeCAiZGlnaXQtdmFs dWUiCisgIChwYXNzLWlmICJkaWdpdC12YWx1ZXMgdHJ1ZSBvbiBhc2NpaSBkaWdpdHMiICh0ZXN0 LXplcm8tdG8tbmluZSAiMDEyMzQ1Njc4OSIpKQorICAocGFzcy1pZiAiZGlnaXQtdmFsdWVzIHRy dWUgb24gVGhhaSBkaWdpdHMiCisgICAgKHRlc3QtemVyby10by1uaW5lICJcdTBFNTBcdTBFNTFc dTBFNTJcdTBFNTNcdTBFNTRcdTBFNTVcdTBFNTZcdTBFNTdcdTBFNThcdTBFNTkiKSkKKyAgKHBh c3MtaWYgImRpZ2l0LXZhbHVlcyBmYWxzZSBvbiBhc2NpaSBsZXR0ZXJzIgorICAgIChub3QgKGFu eSBkaWdpdC12YWx1ZQorICAgICAgICAgICAgICAoc3RyaW5nLT5saXN0ICJhYmNkZWZnaGlqa2xt bm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIikpKSkKKyAgKHBhc3MtaWYg ImRpZ2l0LXZhbHVlcyBmYWxzZSBvbiB3aGl0ZXNwYWNlIgorICAgIChub3QgKGFueSBkaWdpdC12 YWx1ZSAoY2hhci1zZXQtPmxpc3QgY2hhci1zZXQ6d2hpdGVzcGFjZSkpKSkpCmRpZmYgLS1naXQg YS90ZXN0LXN1aXRlL3Rlc3RzL3I3cnMtbGF6eS50ZXN0IGIvdGVzdC1zdWl0ZS90ZXN0cy9yN3Jz LWxhenkudGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODE1NmY1Ci0t LSAvZGV2L251bGwKKysrIGIvdGVzdC1zdWl0ZS90ZXN0cy9yN3JzLWxhenkudGVzdApAQCAtMCww ICsxLDMwIEBACis7Ozsgcjdycy1sYXp5LnRlc3QgLS0tIFRlc3Qgc3VpdGUgZm9yIFI3UlMgKHNj aGVtZSBsYXp5KQorCis7OyAgICAgIENvcHlyaWdodCAoQykgMjAxNyBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKzs7Cis7OyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCis7OyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCis7OyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKzs7IHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7 Cis7OyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKzs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorOzsgTGVzc2VyIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKzs7Cis7OyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCis7OyBMaWNlbnNl IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3 YXJlCis7OyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y LCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisKKworKGRlZmluZS1tb2R1bGUgKHRlc3Qtc3Vp dGUgdGVzdC1yN3JzLWxhenkpCisgIDp1c2UtbW9kdWxlICgoc2NoZW1lIGxhenkpICM6c2VsZWN0 ICgoZGVsYXkgLiBzbC1kZWxheSkgKHByb21pc2U/IC4gc2wtcHJvbWlzZT8pCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFrZS1wcm9taXNlIC4gc2wtbWFrZS1wcm9t aXNlKSAoZm9yY2UgLiBzbC1mb3JjZSkpKQorICA6dXNlLW1vZHVsZSAodGVzdC1zdWl0ZSBsaWIp KQorCisKKyh3aXRoLXRlc3QtcHJlZml4ICJtYWtlLXByb21pc2UiCisgIChwYXNzLWlmICJtYWtl LXByb21pc2Ugb24gaW50ZWdlciIgKHNsLXByb21pc2U/IChzbC1tYWtlLXByb21pc2UgMykpKQor ICAocGFzcy1pZiAibWFrZS1wcm9taXNlIG9uIHByb21pc2UiCisgICAgKGxldCAoKHAgKHNsLWRl bGF5ICgrIDMuMjg4MzIxOTMgOCkpKSkKKyAgICAgIChhbmQgKHNsLXByb21pc2U/IHApIChpbmV4 YWN0PyAoc2wtZm9yY2UgcCkpKSkpKQpkaWZmIC0tZ2l0IGEvdGVzdC1zdWl0ZS90ZXN0cy9yN3Jz LXRpbWUudGVzdCBiL3Rlc3Qtc3VpdGUvdGVzdHMvcjdycy10aW1lLnRlc3QKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ1MzEyOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Qt c3VpdGUvdGVzdHMvcjdycy10aW1lLnRlc3QKQEAgLTAsMCArMSw0MyBAQAorOzs7IHI3cnMtdGlt ZS50ZXN0IC0tLSBUZXN0IHN1aXRlIGZvciBSN1JTIChzY2hlbWUgdGltZSkKKworOzsgICAgICBD b3B5cmlnaHQgKEMpIDIwMTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCis7OworOzsg VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vcgorOzsgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYworOzsgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyCis7OyB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCis7OworOzsgVGhpcyBsaWJyYXJ5IGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor OzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZSBHTlUKKzs7IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCis7OworOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYworOzsgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorOzsgRm91bmRhdGlvbiwgSW5j LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAx IFVTQQorCisKKyhkZWZpbmUtbW9kdWxlICh0ZXN0LXN1aXRlIHRlc3Qtcjdycy10aW1lKQorICA6 dXNlLW1vZHVsZSAoKHNjaGVtZSB0aW1lKSkKKyAgOnVzZS1tb2R1bGUgKHRlc3Qtc3VpdGUgbGli KSkKKworCisod2l0aC10ZXN0LXByZWZpeCAiamlmZmllcy1wZXItc2Vjb25kIgorICAocGFzcy1p ZiAiamlmZmllcy1wZXItc2Vjb25kIGludGVnZXIiIChpbnRlZ2VyPyAoamlmZmllcy1wZXItc2Vj b25kKSkpCisgIChwYXNzLWlmICJqaWZmaWVzLXBlci1zZWNvbmQgcG9zaXRpdmUiICg+IChqaWZm aWVzLXBlci1zZWNvbmQpIDApKSkKKworKHdpdGgtdGVzdC1wcmVmaXggImN1cnJlbnQtc2Vjb25k IgorICAocGFzcy1pZiAiY3VycmVudC1zZWNvbmQgaW5leGFjdCIgKGluZXhhY3Q/IChjdXJyZW50 LXNlY29uZCkpKQorICAocGFzcy1pZiAiY3VycmVudC1zZWNvbmQgaW5jcmVhc2luZyIKKyAgICAo bGV0ICgoZmlyc3QtdGltZSAoY3VycmVudC1zZWNvbmQpKSkKKyAgICAgIChzbGVlcCAyKQorICAg ICAgKGxldCAoKHNlY29uZC10aW1lIChjdXJyZW50LXNlY29uZCkpKQorICAgICAgICAoPCBmaXJz dC10aW1lIHNlY29uZC10aW1lKSkpKSkKKworKHdpdGgtdGVzdC1wcmVmaXggImN1cnJlbnQtamlm ZnkiCisgIChwYXNzLWlmICJjdXJyZW50LWppZmZ5IGV4YWN0IiAoZXhhY3Q/IChjdXJyZW50LWpp ZmZ5KSkpCisgIChwYXNzLWlmICJjdXJyZW50LWppZmZ5IGluY3JlYXNpbmciCisgICAgKGxldCAo KGZpcnN0LXRpbWUgKGN1cnJlbnQtamlmZnkpKSkKKyAgICAgIChzbGVlcCAyKQorICAgICAgKGxl dCAoKHNlY29uZC10aW1lIChjdXJyZW50LWppZmZ5KSkpCisgICAgICAgICg8IGZpcnN0LXRpbWUg c2Vjb25kLXRpbWUpKSkpKQotLSAKMi45LjQKCg== --f403043618f49d55d905521c9f3d Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Fixed-get-output-bytevector-discarding-already-writt.patch" Content-Disposition: attachment; filename="0001-Fixed-get-output-bytevector-discarding-already-writt.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j40ihaxr1 RnJvbSAxOWI4ODhhYjMyZDRlZWU0ZGViMTkzODUzZmFhOTA2MWNhOTA1OGFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVqYSBOb3Jkc2llayA8Zm5vcmRzaWVAZ21haWwuY29tPgpE YXRlOiBTYXQsIDE3IEp1biAyMDE3IDAxOjQ1OjE5ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gRml4 ZWQgZ2V0LW91dHB1dC1ieXRldmVjdG9yIGRpc2NhcmRpbmcgYWxyZWFkeSB3cml0dGVuIGJ5dGVz CiBidWcuCgoqIG1vZHVsZS9zY2hlbWUvYmFzZS5zY20gKGdldC1vdXRwdXQtYnl0ZXZlY3Rvcik6 IEZpeGVkIGJ1ZyB3aGVyZSBieXRlcyBhbHJlYWR5CiAgd3JpdHRlbiB3ZXJlIGNsZWFyZWQuCi0t LQogbW9kdWxlL3NjaGVtZS9iYXNlLnNjbSB8IDQgKysrLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5z ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL21vZHVsZS9zY2hlbWUvYmFz ZS5zY20gYi9tb2R1bGUvc2NoZW1lL2Jhc2Uuc2NtCmluZGV4IDk3ZmJjNWQuLmI4NTFiZTMgMTAw NjQ0Ci0tLSBhL21vZHVsZS9zY2hlbWUvYmFzZS5zY20KKysrIGIvbW9kdWxlL3NjaGVtZS9iYXNl LnNjbQpAQCAtMzkwLDcgKzM5MCw5IEBACiAgICAgICAobGV0ICgocHJvYyAoJXBvcnQtcHJvcGVy dHkgcG9ydCAnZ2V0LW91dHB1dC1ieXRldmVjdG9yKSkpCiAgICAgICAgICh1bmxlc3MgcHJvYwog ICAgICAgICAgIChlcnJvciAiZ2V0LW91dHB1dC1ieXRldmVjdG9yOiBwb3J0IG5vdCBjcmVhdGVk IGJ5IG9wZW4tb3V0cHV0LWJ5dGV2ZWN0b3IiKSkKLSAgICAgICAgKHByb2MpKSkKKyAgICAgICAg KGxldCAoKG91dCAocHJvYykpKQorICAgICAgICAgICh3cml0ZS1ieXRldmVjdG9yIG91dCBwb3J0 KQorICAgICAgICAgIG91dCkpKQogCiAgICAgKGRlZmluZSogKHBlZWstdTggIzpvcHRpb25hbCAo cG9ydCAoY3VycmVudC1pbnB1dC1wb3J0KSkpCiAgICAgICAobG9va2FoZWFkLXU4IHBvcnQpKQot LSAKMi45LjQKCg== --f403043618f49d55d905521c9f3d--