From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by walapai.inria.fr (8.13.6/8.13.6) with ESMTP id pBQ89qA6024213 for ; Mon, 26 Dec 2011 09:09:52 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AhQBAM0q+E5KfVK2imdsb2JhbABErDYIIgEBAQoJDQcSBiGBcgEBAQQSAhMZARsdAQMMBgULBgMBAgEuAh8BAREBBQEUCAYTGwehEQqLZYJrhAE/iHECBQuMBASOJoZcim+DDj2Dew X-IronPort-AV: E=Sophos;i="4.71,410,1320620400"; d="scan'208,223";a="124683532" Received: from mail-we0-f182.google.com ([74.125.82.182]) by mail4-smtp-sop.national.inria.fr with ESMTP/TLS/RC4-SHA; 26 Dec 2011 09:09:46 +0100 Received: by werb13 with SMTP id b13so9072991wer.27 for ; Mon, 26 Dec 2011 00:09:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=dRcCoacHRy1YO8b2nBXGEpNljnXhjT8m0quLVUmBonI=; b=skj+02FxjGA3Wlh5PylxW6F6PUShzrPcHgcizJesOlKSbSAvvgxYjaY5rJmvw+k3xx CCvnD64JJXJstX9E3pf1L1wrZQm1Bwxh0EFz8YH3xUv+BEN/0xyLj+7haekv0dDB7FV/ 8nHS2rQqy8nZQOgVUUnIgJvEIihYaaFVn1P7o= Received: by 10.216.135.159 with SMTP id u31mr11380257wei.2.1324886986217; Mon, 26 Dec 2011 00:09:46 -0800 (PST) MIME-Version: 1.0 Received: by 10.227.198.147 with HTTP; Mon, 26 Dec 2011 00:09:25 -0800 (PST) In-Reply-To: References: <4EF4C1B4.30408@inria.fr> <20111223184023.GA13146@nautica> From: Gabriel Scherer Date: Mon, 26 Dec 2011 09:09:25 +0100 Message-ID: To: =?ISO-8859-1?Q?=C7agdas_Bozman?= Cc: caml-list@inria.fr Content-Type: multipart/mixed; boundary=0016e6de03e52e5a4204b4fa4a17 Subject: Re: [Caml-list] try ocaml website --0016e6de03e52e5a4204b4fa4a17 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable I played with the toplevel a bit, but was frustrated by the limitation of one-liner input. Even in an interactive toplevel it is nice, I think, to be able to write multiline programs. The simple solution is to make ";;" mandatory, which clearly delimits the end of user input (instead of considering all 'enter' as end of input). The tryocaml toplevel is however very lenient regarding use of ";;", and I suppose this is a deliberate design choice. I have implemented an heuristic to allow multiline input, based on a past discussion with Nicolas Pouillard about, if I remember correctly, Scala's toplevel behavior. The idea is to accumulate lines of input until the parser either succeeds, or there is a syntax error; when it just consumes all the line without producing a result, we wait for more input. Patch attached. On Fri, Dec 23, 2011 at 7:49 PM, =C7agdas Bozman wrote: >> The only "real" thing that it's missing is a way to reset the toplevel >> without reloading the page. It's the same problem as with the real >> toplevel now that I think about it, but I didn't think of reloading the >> page directly! >> > > You can clear the editor view by using the command "clear()". > > -- > =C7agdas Bozman --0016e6de03e52e5a4204b4fa4a17 Content-Type: text/x-diff; charset=US-ASCII; name="0001-Change-the-toplevel-to-allow-multiline-input.patch" Content-Disposition: attachment; filename="0001-Change-the-toplevel-to-allow-multiline-input.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gwn7ib8g1 RnJvbSAyNjM1OThmOTI5ZDVkNzlkOGRmZTRjY2IzNDE1NjVjMDA1M2FiZTA2 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHYWJyaWVsIFNjaGVy ZXIgPGdhYnJpZWwuc2NoZXJlckBnbWFpbC5jb20+CkRhdGU6IFN1biwgMjUg RGVjIDIwMTEgMTA6NDA6NDEgKzAxMDAKU3ViamVjdDogW1BBVENIXSBDaGFu Z2UgdGhlIHRvcGxldmVsIHRvIGFsbG93IG11bHRpbGluZSBpbnB1dAoKVGhl IGhldXJpc3RpYyBpcyB0aGUgZm9sbG93aW5nOiBpZiBwYXJzaW5nIHRoZSBp bnB1dCBjb25zdW1lZCB0aGUKd2hvbGUgbGluZSB3aXRob3V0IHJhaXNpbmcg YSBzeW50YXggZXJyb3IsIHdlIGFzc3VtZSB0aGF0IGl0IGlzCnVuZmluaXNo ZWQgbXVsdGlsaW5lIGlucHV0LiBXZSBlbmQgdGhlIGlucHV0IGFzIHNvb24g YXMgcGFyc2luZyByYWlzZXMKYSBzeW50YWN0aWMgZXJyb3IsIG9yIHN1Y2Nl ZWRzLgoKTm90ZSB0aGF0IHRoaXMgbWF5IHNvbWV0aW1lcyB0ZXJtaW5hdGUg aW5wdXQgZWFybGllciB0aGFuCmludGVuZGVkLiBGb3IgZXhhbXBsZSwgaWYg eW91IHRyeSB0byB3cml0ZToKCiAgbGV0IHJlYyBmYWMgPSBmdW5jdGlvbgog ICAgfCAwIC0+IDEKICAgIHwgbiAtPiAuLi4KCnRoZW4gcGFyc2luZyB3aWxs IHJldHVybiBhIHJlc3VsdCBhdCB0aGUgZW5kIG9mIHRoZSAifCAwIC0+IDEi LCBhbmQKZXZhbHVhdGUgdGhpcyBpbmNvbXBsZXRlIGRlZmluaXRpb24uIFlv dSBoYXZlIHRvIHdyaXRlIGluc3RlYWQ6CgogIGxldCByZWMgZmFjID0gYmVn aW4gZnVuY3Rpb24KICAgIHwgMCAtPiAxCiAgICB8IG4gLT4gLi4uCiAgZW5k CgpTbyB0aGF0IGBiZWdpbmAgbWFrZSBhbGwgcHJlZml4ZXMgb2YgdGhlIGlu cHV0IChiZWZvcmUgYGVuZGApIGludmFsaWQuCi0tLQogdHJ5b2NhbWwvdG9w bGV2ZWwubWwgfCAgMjQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0KIDEgZmlsZXMgY2hhbmdlZCwgMTcxIGlu c2VydGlvbnMoKyksIDY5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ry eW9jYW1sL3RvcGxldmVsLm1sIGIvdHJ5b2NhbWwvdG9wbGV2ZWwubWwKaW5k ZXggZDNmMGFjNy4uMmZiNWJhZCAxMDA2NDQKLS0tIGEvdHJ5b2NhbWwvdG9w bGV2ZWwubWwKKysrIGIvdHJ5b2NhbWwvdG9wbGV2ZWwubWwKQEAgLTc1LDM5 ICs3NSw2IEBAIGxldCBzdGFydCBwcGYgPQogICBUb3Bsb29wLmlucHV0X25h bWUgOj0gIiI7CiAgIGV4ZWMgcHBmICJvcGVuIFR1dG9yaWFsIgogCi1sZXQg YXRfYm9sID0gcmVmIHRydWUKLWxldCBjb25zdW1lX25sID0gcmVmIGZhbHNl Ci0KLWxldCByZWZpbGxfbGV4YnVmIHMgcCBwcGYgYnVmZmVyIGxlbiA9Ci0g IGlmICFjb25zdW1lX25sIHRoZW4gYmVnaW4KLSAgICBsZXQgbCA9IFN0cmlu Zy5sZW5ndGggcyBpbgotICAgIGlmICghcCA8IGwgJiYgcy5bIXBdID0gJ1xu JykgdGhlbgotICAgICAgaW5jciBwCi0gICAgZWxzZSBpZiAoIXAgKyAxIDwg bCAmJiBzLlshcF0gPSAnXHInICYmIHMuWyFwICsgMV0gPSAnXG4nKSB0aGVu Ci0gICAgICBwIDo9ICFwICsgMjsKLSAgICBjb25zdW1lX25sIDo9IGZhbHNl Ci0gIGVuZDsKLSAgaWYgIXAgPSBTdHJpbmcubGVuZ3RoIHMgdGhlbgotICAg IDAKLSAgZWxzZSBiZWdpbgotICAgIGxldCBjID0gcy5bIXBdIGluCi0gICAg aW5jciBwOwotICAgIGJ1ZmZlci5bMF0gPC0gYzsKLSAgICBpZiAhYXRfYm9s IHRoZW4gRm9ybWF0LmZwcmludGYgcHBmICIjICI7Ci0gICAgYXRfYm9sIDo9 IChjID0gJ1xuJyk7Ci0gICAgaWYgYyA9ICdcbicgdGhlbgotICAgICAgRm9y bWF0LmZwcmludGYgcHBmICJALiIKLSAgICBlbHNlCi0gICAgICBGb3JtYXQu ZnByaW50ZiBwcGYgIiVjIiBjOwotICAgIDEKLSAgZW5kCi0KLWxldCBlbnN1 cmVfYXRfYm9sIHBwZiA9Ci0gIGlmIG5vdCAhYXRfYm9sIHRoZW4gYmVnaW4K LSAgICBGb3JtYXQuZnByaW50ZiBwcGYgIkAuIjsKLSAgICBjb25zdW1lX25s IDo9IHRydWU7IGF0X2JvbCA6PSB0cnVlCi0gIGVuZAotCiBsZXQgdXBkYXRl X2xlc3Nvbl90ZXh0ICgpID0KICAgaWYgICFUdXRvcmlhbC50aGlzX2xlc3Nv biA8PiAwIHRoZW4KICAgdHJ5CkBAIC0xNzIsOSArMTM5LDYgQEAgbGV0IHRl eHRfb2ZfaHRtbCBodG1sID0KICAgZG9uZTsKICAgQnVmZmVyLmNvbnRlbnRz IGIKIAotCi0KLQogbGV0IHVwZGF0ZV9kZWJ1Z19tZXNzYWdlID0KICAgbGV0 IGIgPSBCdWZmZXIuY3JlYXRlIDEwMCBpbgogICBUdXRvcmlhbC5kZWJ1Z19m dW4gOj0gKGZ1biBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgczsgQnVmZmVy LmFkZF9zdHJpbmcgIGIgIjxici8+Iik7CkBAIC0xOTUsMzkgKzE1OSwxNzYg QEAgbGV0IHVwZGF0ZV9kZWJ1Z19tZXNzYWdlID0KICAgICB3aXRoIF8gLT4g KCkKIAogCi1sZXQgbG9vcCBzIHBwZiBidWZmZXIgPQotICBsZXQgbmVlZF90 ZXJtaW5hdG9yID0gcmVmIHRydWUgaW4KLSAgZm9yIGkgPSAwIHRvIFN0cmlu Zy5sZW5ndGggcyAtIDIgZG8KLSAgICBpZiBzLltpXSA9ICc7JyAmJiBzLltp KzFdID0gJzsnIHRoZW4gbmVlZF90ZXJtaW5hdG9yIDo9IGZhbHNlOwotICBk b25lOwotICBsZXQgcyA9IGlmICFuZWVkX3Rlcm1pbmF0b3IgdGhlbiBzIF4g Ijs7IiBlbHNlIHMgaW4KLSAgbGV0IGxiID0gTGV4aW5nLmZyb21fZnVuY3Rp b24gKHJlZmlsbF9sZXhidWYgcyAocmVmIDApIHBwZikgaW4KLSAgYmVnaW4g dHJ5Ci0gICAgd2hpbGUgdHJ1ZSBkbwotICAgICAgYmVnaW4KLSAgICAgIHRy eQotICAgICAgICBsZXQgcGhyID0gIVRvcGxvb3AucGFyc2VfdG9wbGV2ZWxf cGhyYXNlIGxiIGluCi0gICAgICAgIGVuc3VyZV9hdF9ib2wgcHBmOwotICAg ICAgICBCdWZmZXIuY2xlYXIgYnVmZmVyOwotICAgICAgICBUdXRvcmlhbC5w cmludF9kZWJ1ZyBzOwotICAgICAgICBpZ25vcmUgKFRvcGxvb3AuZXhlY3V0 ZV9waHJhc2UgdHJ1ZSBwcGYgcGhyKTsKLSAgICAgICAgbGV0IHJlcyA9IEJ1 ZmZlci5jb250ZW50cyBidWZmZXIgaW4KLSAgICAgICAgVHV0b3JpYWwuY2hl Y2tfc3RlcCBwcGYgcyByZXM7Ci0gICAgICAgIHVwZGF0ZV9sZXNzb25fdGV4 dCAoKTsKLSAgICAgICAgdXBkYXRlX2xlc3Nvbl9udW1iZXIgKCk7Ci0gICAg ICAgIHVwZGF0ZV9sZXNzb25fc3RlcF9udW1iZXIgKCk7Ci0gICAgICB3aXRo Ci0gICAgICAgICAgRW5kX29mX2ZpbGUgLT4KLSAgICAgICAgICAgIHJhaXNl IEVuZF9vZl9maWxlCi0gICAgICAgIHwgeCAtPgotICAgICAgICAgIGVuc3Vy ZV9hdF9ib2wgcHBmOwotICAgICAgICAgIEVycm9ycy5yZXBvcnRfZXJyb3Ig cHBmIHgKLSAgICAgIGVuZDsKLSAgICAgIHVwZGF0ZV9kZWJ1Z19tZXNzYWdl ICgpOwotICAgIGRvbmUKLSAgICB3aXRoIEVuZF9vZl9maWxlIC0+ICgpCi0g IGVuZAorKCogYXV4aWxpYXJ5IHR5cGUgYW5kIGZ1bmN0aW9ucyBmb3IgYGxv b3BgLCBzZWUgYmVsb3cgKikKK3R5cGUgJ2EgcGFyc2Vfc3RhdHVzID0KKyAg fCBFcnJvciBvZiBleG4gKiBpbnQKKyAgfCBTdWNjZXNzIG9mICdhICogaW50 CisgIHwgTmVlZF9tb3JlX2lucHV0CisKK2xldCB0cnlfcGFyc2Ugc3RyIHAg PQorICBsZXQgcG9zID0gcmVmIHAgaW4KKyAgbGV0IGxlbiA9IFN0cmluZy5s ZW5ndGggc3RyIGluCisgIGxldCBsYiA9CisgICAgKCogYWRkIGEgc3BhY2Ug YXQgdGhlIGVuZCBzbyB0aGF0IGlucHV0IGVuZGluZyB3aXRoICc7OycKKyAg ICAgICBkb24ndCByYWlzZSBOZWVkX21vcmVfaW5wdXQgKikKKyAgICBMZXhp bmcuZnJvbV9mdW5jdGlvbiAoZnVuIG91dHB1dCBfbGVuIC0+CisgICAgICBp ZiAhcG9zID0gbGVuIHRoZW4gKGluY3IgcG9zOyAnICc7IDApCisgICAgICBl bHNlIGJlZ2luCisgICAgICAgIG91dHB1dC5bMF0gPC0gc3RyLlshcG9zXTsK KyAgICAgICAgaW5jciBwb3M7CisgICAgICAgIDEKKyAgICAgIGVuZCkgaW4K KyAgdHJ5CisgICAgbGV0IHJlc3VsdCA9ICFUb3Bsb29wLnBhcnNlX3RvcGxl dmVsX3BocmFzZSBsYiBpbgorICAgIFN1Y2Nlc3MgKHJlc3VsdCwgbGIuTGV4 aW5nLmxleF9sYXN0X3BvcykKKyAgd2l0aCBleG4gLT4KKyAgICBpZiAhcG9z ID0gbGVuICsgMSB0aGVuIE5lZWRfbW9yZV9pbnB1dAorICAgIGVsc2UgRXJy b3IgKGV4biwgbGIuTGV4aW5nLmxleF9sYXN0X3BvcykKIAorbGV0IGV4ZWN1 dGVfcGhyYXNlIHBocmFzZSBwcGYgb3V0cHV0X2J1ZmZlciA9CisgIHRyeQor ICAgIEJ1ZmZlci5jbGVhciBvdXRwdXRfYnVmZmVyOworICAgIGlnbm9yZSAo VG9wbG9vcC5leGVjdXRlX3BocmFzZSB0cnVlIHBwZiBwaHJhc2UpOworICAg IGxldCByZXMgPSBCdWZmZXIuY29udGVudHMgb3V0cHV0X2J1ZmZlciBpbgor ICAgIFR1dG9yaWFsLmNoZWNrX3N0ZXAgcHBmIHMgcmVzOworICAgIHVwZGF0 ZV9sZXNzb25fdGV4dCAoKTsKKyAgICB1cGRhdGVfbGVzc29uX251bWJlciAo KTsKKyAgICB1cGRhdGVfbGVzc29uX3N0ZXBfbnVtYmVyICgpOworICB3aXRo IGV4biAtPgorICAgIEVycm9ycy5yZXBvcnRfZXJyb3IgcHBmIGV4bgorCits ZXQgc2tpcF93aGl0ZXNwYWNlIHMgcG9zID0KKyAgbGV0IHJlYyBsb29wIGkg PQorICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlbiBOb25lCisgICAg ZWxzZSBtYXRjaCBzLltpXSB3aXRoCisgICAgICB8ICdccicgfCAnXG4nIHwg J1x0JyB8ICcgJyAtPiBsb29wIChpKzEpCisgICAgICB8IF8gLT4gU29tZSBp IGluCisgIGxvb3AgcG9zCisKK2xldCBmb3JtYXRfc3RyaW5nIHBvcyBsZW4g cHBmIHN0ciA9CisgIGxldCBsYXN0X3dhc19yID0gcmVmIGZhbHNlIGluCisg IGZvciBpID0gcG9zIHRvIHBvcyArIGxlbiAtIDEgZG8KKyAgICBtYXRjaCBz dHIuW2ldIHdpdGgKKyAgICAgIHwgJ1xyJyAtPgorICAgICAgICBpZiAhbGFz dF93YXNfciB0aGVuIEZvcm1hdC5mcHJpbnRmIHBwZiAiXHIiOworICAgICAg ICBsYXN0X3dhc19yIDo9IHRydWU7CisgICAgICB8IGMgLT4KKyAgICAgICAg aWYgYyA9ICdcbicgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgIkAuIgorICAg ICAgICBlbHNlIGlmICFsYXN0X3dhc19yIHRoZW4gRm9ybWF0LmZwcmludGYg cHBmICJcciI7CisgICAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZiAiJWMiIGM7 CisgICAgICAgIGxhc3Rfd2FzX3IgOj0gZmFsc2U7CisgIGRvbmUKKworKCog YGxvb3BgIGlzIGNhbGxlZCBmb3IgZWFjaCBsaW5lIGVudGVyZWQgaW4gdGhl IHRvcGxldmVsLgorCisgICBJbiBvcmRlciB0byBhbGxvdyBmb3IgbXVsdGkt bGluZSBpbnB1dCwgd2UgdXNlIHRoZSBmb2xsb3dpbmcKKyAgIGhldXJpc3Rp YzogaWYgcGFyc2luZyB0aGUgbGluZSBkaWRuJ3QgcmFpc2UgYW55IHN5bnRh eCBlcnJvciwgYnV0CisgICBkaWRuJ3Qgc3VjY2VlZCBpbiBwYXJzaW5nIGEg Y29tcGxldGUgbGluZSwgd2Ugc2ltcGx5IGFjY3VtdWxhdGUgdGhlCisgICBp bnB1dCBpbnRvIGFuIGlucHV0IGJ1ZmZlciwgYW5kIHdhaXQgZm9yIHRoZSBu ZXh0IGNhbGwgdG8gYGxvb3BgLgorCisgICBPbmNlIGEgc3ludGF4IGVycm9y IGlzIGVuY291bnRlcmVkLCBvciB3ZSBoYXZlIHN1Y2NlZWRlZCBpbiBwYXJz aW5nCisgICBhIHdob2xlIHBocmFzZSwgd2Ugc2hvdyB0aGUgcmVzdWx0IGFu ZCBjbGVhciB0aGUgaW5wdXQgYnVmZmVyLgorCisgICBGb3IgZXhhbXBsZSwg aWYgdGhlIHVzZXIgZW50ZXJzICJsZXQgeCA9IiwgaXQgaXMgbm90IGEgc3lu dGF4CisgICBlcnJvciwgYW5kIHdlIHdhaXQgZm9yIHRoZSBuZXh0IGxpbmUg b2YgaW5wdXQuIElmIGl0IGlzICIxIiwgd2UKKyAgIGhhdmUgdGhlIGNvbXBs ZXRlIHBocmFzZSAibGV0IHggPSAxIiB3aGljaCB3ZSBleGVjdXRlIGluIHRo ZQorICAgdG9wbGV2ZWwuIElmIGl0IGlzICIxIGluIiwgd2Ugd2FpdCBhZ2Fp bnQgZm9yIHRoZSBuZXh0IGxpbmUuIE5vdGUKKyAgIHRoYXQgaGlzIGhldXJp c3RpYyBpcyBpbXBlcmZlY3Q6IHdoZW4gdGhlIHVzZXIgd3JpdGVzICJsZXQg eCA9XG4KKyAgIDFcbiIsIGhlIG1heSBoYXZlIHdpc2hlZCB0byBlbmQgd2l0 aCAiaW4geCArIHgiLCBidXQgd2UgZGVjaWRlIHRoYXQKKyAgIHRoZSBwaHJh c2Ugc3RvcHMgaGVyZS4KKworICAgVGhlIHJldHVybiB2YWx1ZSBvZiBgbG9v cGAgaXMgdGhlIHJlc3Qgb2YgdGhlIGlucHV0LCBhZnRlciB0aGUgbGFzdAor ICAgcGhyYXNlIHRoYXQgY291bGQgYmUgcGFyc2VkLgorCisgICBUaGUgY29k ZSBpcyBjb21wbGV4aWZpZWQgYnkgdHdvIGFzcGVjdHM6CisKKyAgIC0gV2Ug dHJ5IHRvIGJlIGxlbmllbnQgaW4gYXNraW5nIHRoZSB1c2VyIHRvIGNsb3Nl IGl0cyBwaHJhc2VzCisgICB1c2luZyAnOzsnLiBTaGUgaXMgbm90IGZvcmNl ZCB0byB1c2UgaXQsIGFuZCB3aGVuIHdlIHNlZSB0aGF0IHRoZQorICAgcGhy YXNlIGlzIHVuZmluaXNoZWQgd2UgdHJ5IHRvIGFkZCAnOzsnIGF0IHRoZSBl bmQgYW5kIHJldHJ5CisgICBwYXJzaW5nLgorCisgICAtIFdlIG5lZWQgdG8g cHJpbnQgdGhlIHVzZXIgaW5wdXQgdG8gdGhlIG91dHB1dCBIVE1MIGJ1ZmZl ciwgYnV0IHdlCisgICBkb24ndCBkbyBpdCBieSBiYXRjaCwgd2UgdHJ5IHRv IGRvIHBocmFzZSBwZXIgcGhyYXNlLi4gRm9yIGV4YW1wbGUsCisgICBlbnRl cmluZyAiMTs7IDIiIHdpbGwgbm90IHByaW50ICIxOzsgMiIsIHRoZW4gdGhl IHJlc3VsdCBvZiB0aGUgdHdvCisgICBwaHJhc2VzLCBidXQgIiMgMTs7Iiwg dGhlbiB0aGUgcmVzdWx0IG9mIHRoaXMgcGhyYXNlLCBhbmQgIiMgMjs7IiwK KyAgIGFuZCB0aGUgcmVzdWx0IG9mIHRoYXQgcGhyYXNlLgorKikKK2xldCBs b29wID0KKyAgbGV0IGlucHV0X2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgODAg aW4KK2Z1biBsaW5lIHBwZiBvdXRwdXRfYnVmZmVyIC0+CisgICgqIGxhc3Rf cG9zIGlzIHRoZSBsZW5ndGggb2YgdGhlIHBhcnRpYWxseSBlbnRlcmVkIG11 bHRpbGluZSBpbnB1dAorICAgICB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gcHJp bnRlZCBiYWNrIHRvIHRoZSB1c2VyICopCisgIGxldCBsYXN0X3BvcyA9IEJ1 ZmZlci5sZW5ndGggaW5wdXRfYnVmZmVyIGluCisgIEJ1ZmZlci5hZGRfc3Ry aW5nIGlucHV0X2J1ZmZlciBsaW5lOworICBsZXQgaW5wdXQgPSBCdWZmZXIu Y29udGVudHMgaW5wdXRfYnVmZmVyIGluCisgIGxldCBpbnB1dF9jbG9zZWQg PSBpbnB1dCBeICI7OyIgaW4KKyAgbGV0IGZvcm1hdF9waHJhc2UgbWFya2Vy IHN0ciBzdWZmaXggcG9zIGxlbiA9CisgICAgRm9ybWF0LmZwcmludGYgcHBm ICIlYyAlYSVzQC4iIG1hcmtlcgorICAgICAgKGZvcm1hdF9zdHJpbmcgcG9z IGxlbikgc3RyIHN1ZmZpeCBpbgorICAoKiBwYXJzZSBhIHBocmFzZSBzdGFy dGluZyBhdCBwb3NpdGlvbiBgcG9zYCBpbiB0aGUgaW5wdXQgc3RyaW5nOwor ICAgICB0aGUgZmlyc3QgcGFyc2luZyBhdHRlbXB0IGlzIGhhbmRsZWQgZGlm ZmVyZW50bHkgYmVsb3csCisgICAgIGFzIGl0IG1heSBiZSBpbmNvbXBsZXRl ICopCisgIGxldCByZWMgcGFyc2VfbmV4dCBwb3MgPQorICAgIG1hdGNoIHNr aXBfd2hpdGVzcGFjZSBpbnB1dCBwb3Mgd2l0aAorICAgICAgfCBOb25lIC0+ ICIiCisgICAgICB8IFNvbWUgcG9zIC0+CisgICAgICAgIG1hdGNoIHRyeV9w YXJzZSBpbnB1dCBwb3Mgd2l0aAorICAgICAgICAgIHwgRXJyb3IgKGV4biwg b2Zmc2V0KSAtPgorICAgICAgICAgICAgbGV0IGxlbiA9IG9mZnNldCsxIGlu CisgICAgICAgICAgICBmb3JtYXRfcGhyYXNlICcjJyBpbnB1dCAiIiBwb3Mg bGVuOworICAgICAgICAgICAgRXJyb3JzLnJlcG9ydF9lcnJvciBwcGYgZXhu OworICAgICAgICAgICAgcGFyc2VfbmV4dCAocG9zICsgbGVuKQorICAgICAg ICAgIHwgU3VjY2VzcyAocGhyYXNlLCBvZmZzZXQpIC0+CisgICAgICAgICAg ICBsZXQgbGVuID0gb2Zmc2V0KzEgaW4KKyAgICAgICAgICAgIGZvcm1hdF9w aHJhc2UgJyMnIGlucHV0ICIiIHBvcyBsZW47CisgICAgICAgICAgICBleGVj dXRlX3BocmFzZSBwaHJhc2UgcHBmIG91dHB1dF9idWZmZXI7CisgICAgICAg ICAgICBwYXJzZV9uZXh0IChwb3MgKyBsZW4pCisgICAgICAgICAgfCBOZWVk X21vcmVfaW5wdXQgLT4KKyAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRyeV9w YXJzZSBpbnB1dF9jbG9zZWQgcG9zIHdpdGgKKyAgICAgICAgICAgICAgfCBF cnJvciBfIHwgTmVlZF9tb3JlX2lucHV0IC0+CisgICAgICAgICAgICAgICAg YmVnaW4gbWF0Y2ggc2tpcF93aGl0ZXNwYWNlIGlucHV0IHBvcyB3aXRoCisg ICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gIiIKKyAgICAgICAgICAgICAg ICAgIHwgU29tZSBpIC0+IFN0cmluZy5zdWIgaW5wdXQgaSAoU3RyaW5nLmxl bmd0aCBpbnB1dCAtIGkpCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAg ICAgICAgIHwgU3VjY2VzcyAocGhyYXNlLCBfKSAtPgorICAgICAgICAgICAg ICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGlucHV0IC0gcG9zIGluCisg ICAgICAgICAgICAgICAgZm9ybWF0X3BocmFzZSAnIycgaW5wdXQgIjs7IiBw b3MgbGVuOworICAgICAgICAgICAgICAgIGV4ZWN1dGVfcGhyYXNlIHBocmFz ZSBwcGYgb3V0cHV0X2J1ZmZlcjsKKyAgICAgICAgICAgICAgICAiIgorICAg ICAgICAgICAgZW5kCisgIGluCisgICgqIGlmIHRoaXMgaXMgbm90IHRoZSBm aXJzdCBsaW5lIG9mIGlucHV0LAorICAgICB3ZSB1c2UgJz4nIHJhdGhlciB0 aGFuICcjJyBhcyBhIHZpc3VhbCBwcm9tcHQgbWFya2VyLAorICAgICB0byBs ZXQgdGhlIHVzZXIga25vdyB0aGF0IHNoZSdzIGNvbnRpbnVpbmcgdGhlIHBo cmFzZS4gKikKKyAgbGV0IG1hcmtlciA9IGlmIGxhc3RfcG9zID0gMCB0aGVu ICcjJyBlbHNlICc+JyBpbiAKKyAgbWF0Y2ggdHJ5X3BhcnNlIGlucHV0IDAg d2l0aAorICAgIHwgRXJyb3IgKGV4biwgcG9zKSAtPgorICAgICAgbGV0IGxl biA9IHBvcyArIDEgLSBsYXN0X3BvcyBpbgorICAgICAgZm9ybWF0X3BocmFz ZSBtYXJrZXIgaW5wdXQgIiIgbGFzdF9wb3MgbGVuOworICAgICAgQnVmZmVy LmNsZWFyIGlucHV0X2J1ZmZlcjsKKyAgICAgIEVycm9ycy5yZXBvcnRfZXJy b3IgcHBmIGV4bjsKKyAgICAgIHBhcnNlX25leHQgKGxhc3RfcG9zICsgbGVu KQorICAgIHwgU3VjY2VzcyAoZmlyc3RfcGhyYXNlLCBwb3MpIC0+CisgICAg ICBsZXQgbGVuID0gcG9zICsgMSAtIGxhc3RfcG9zIGluCisgICAgICBmb3Jt YXRfcGhyYXNlIG1hcmtlciBpbnB1dCAiIiBsYXN0X3BvcyBsZW47CisgICAg ICBCdWZmZXIuY2xlYXIgaW5wdXRfYnVmZmVyOworICAgICAgZXhlY3V0ZV9w aHJhc2UgZmlyc3RfcGhyYXNlIHBwZiBvdXRwdXRfYnVmZmVyOworICAgICAg cGFyc2VfbmV4dCAobGFzdF9wb3MgKyBsZW4pCisgICAgfCBOZWVkX21vcmVf aW5wdXQgLT4KKyAgICAgICgqIGlmIHdlIG5lZWQgdG8gY2xvc2UgdG8gZ2V0 IHRoZSBwaHJhc2UsCisgICAgICAgICB0aGVyZSBhcmUgbm8gZnVydGhlciBw aHJhc2VzICopCisgICAgICBtYXRjaCB0cnlfcGFyc2UgaW5wdXRfY2xvc2Vk IDAgd2l0aAorICAgICAgICB8IEVycm9yIF8gfCBOZWVkX21vcmVfaW5wdXQg LT4KKyAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBpbnB1dCAt IGxhc3RfcG9zIGluCisgICAgICAgICAgZm9ybWF0X3BocmFzZSBtYXJrZXIg aW5wdXQgIiIgbGFzdF9wb3MgbGVuOworICAgICAgICAgIEJ1ZmZlci5hZGRf Y2hhciBpbnB1dF9idWZmZXIgJ1xuJzsKKyAgICAgICAgICAiIgorICAgICAg ICB8IFN1Y2Nlc3MgKHBocmFzZSwgXykgLT4KKyAgICAgICAgICBsZXQgbGVu ID0gU3RyaW5nLmxlbmd0aCBpbnB1dCAtIGxhc3RfcG9zIGluCisgICAgICAg ICAgZm9ybWF0X3BocmFzZSBtYXJrZXIgaW5wdXQgIjs7IiBsYXN0X3BvcyBs ZW47CisgICAgICAgICAgQnVmZmVyLmNsZWFyIGlucHV0X2J1ZmZlcjsKKyAg ICAgICAgICBleGVjdXRlX3BocmFzZSBwaHJhc2UgcHBmIG91dHB1dF9idWZm ZXI7CisgICAgICAgICAgIiIKIAogbGV0IF8gPQogICBUdXRvcmlhbC5tZXNz YWdlX2Z1biA6PSAoZnVuIHMgLT4KQEAgLTMwNSw3ICs0MDYsOCBAQCBsZXQg cnVuIF8gPQogICAgIGhpc3RvcnlfYmNrd3JkIDo9ICFoaXN0b3J5OwogICAg IGhpc3RvcnlfZnJ3cmQgOj0gW107CiAgICAgdGV4dGJveCMjdmFsdWUgPC0g SnMuc3RyaW5nICIiOwotICAgIGxvb3AgcyBwcGYgYnVmZmVyOworICAgIGxl dCByZW1haW5pbmdfaW5wdXQgPSBsb29wIHMgcHBmIGJ1ZmZlciBpbgorICAg IHRleHRib3gjI3ZhbHVlIDwtIEpzLnN0cmluZyByZW1haW5pbmdfaW5wdXQ7 CiAgICAgbWFrZV9jb2RlX2NsaWNrYWJsZSAoKTsKICAgICB0ZXh0Ym94IyNm b2N1cygpOwogICAgIGNvbnRhaW5lciMjc2Nyb2xsVG9wIDwtIGNvbnRhaW5l ciMjc2Nyb2xsSGVpZ2h0OwotLSAKMS43LjUuNAoK --0016e6de03e52e5a4204b4fa4a17--