From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms8.migadu.com with LMTPS id MERYC8nvomXuRwEAe85BDQ:P1 (envelope-from ) for ; Sat, 13 Jan 2024 21:17:13 +0100 Received: from aspmx1.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2.migadu.com with LMTPS id MERYC8nvomXuRwEAe85BDQ (envelope-from ) for ; Sat, 13 Jan 2024 21:17:13 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=posteo.net header.s=2017 header.b=HKGNulp7; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=posteo.net ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1705177033; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=bcBFn3EwRH3NbKwDwdrNAjWN0WoGJSpMbcVfosjN82k=; b=kyfcHgQryoCgE5gObaf+mZ7fE2KbonxJzBtHUN/2vOd8sZZN+3+y4EBuafBDaffWn4OPIw BeZglcspDQI1ACFPxrmamKLBRQ6kbQZjJE1r6XoMWDKARRFljpPiJ4BENybEFYkU9Z1aaN OJSeimvNYuJq4adp7OiMFGGiN/QORJNrM2BkPzYwcVLtICHt3djma+9SHpyIC7JWi5emRF 3O1UvcJHrD9sXnz6Zn3vdTDt/mh1hZ9VPgblNWDZxcDaItQVKS26j7RA9TFewEvA+k1euV qL6X6HqcyXankd9JP1jySzxlGcUdYBLpdTCDA/lICIQnVSDhX8F2HhMRKOEe2A== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=posteo.net header.s=2017 header.b=HKGNulp7; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=posteo.net ARC-Seal: i=1; s=key1; d=yhetil.org; t=1705177033; a=rsa-sha256; cv=none; b=S0AtqceXnLswP2Wn/f+RV/ViSb+BRpi3Ky3sd5LRCXQJb0exbOv08wK2Onm2ylsOTQpqOc nEY9LVwtORqnzFXqsuo/SLH7kaPxTD3RIAcsWwgak7ujkZbJqHiXWzYdyFZG08mEhE1A+x Z4tiitrRYMn3XUn9PfE5cSmVN72oTqWWSNqgKhSfNa4NvdlWRkNUPDnyWxVykQaT8aYMre QZt3K1m9L07Svtmv4Cfqn2xz3iBRXuuk3tbHM/P6fk8h6sA/nV02wEGfZ6SZpRxfjZlJUY 8EfeiBYn+ReGHFTjUOVnlsylLZy+wRIEWjcsolkrBIxZFPoNBMv04aaYGa6yww== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id EE41E50379 for ; Sat, 13 Jan 2024 21:17:12 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rOkQp-0005Mz-6q; Sat, 13 Jan 2024 15:16:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rOkQm-0005Mh-PX for emacs-orgmode@gnu.org; Sat, 13 Jan 2024 15:16:37 -0500 Received: from mout02.posteo.de ([185.67.36.66]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rOkQk-0006vg-Bp for emacs-orgmode@gnu.org; Sat, 13 Jan 2024 15:16:36 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 66116240103 for ; Sat, 13 Jan 2024 21:16:32 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1705176992; bh=ctgrWJ0JGDot0ijmhZR3ZnF//GF2lq8B/ZDxAS3Xho8=; h=MIME-Version:Date:From:To:Cc:Subject:Message-ID:From; b=HKGNulp7SAI4U6IW7CyV8FQ11nt91R7gtp3cbn//6bgzoos4n8egdaGNzt8h/170H aQ7g8aGbZvoUZC5DDMs3cMEFWKdKD8EhkvkbaM0kC60zwDwTjws/yEexlES20LQt3w FgC9IyyzjuBxiA0tVbSepH46VhnR4yUqdd8Xz9Lj5y0cEXu68gLgPJQzi5Z0QU6Isf J/4k/mxLymatAN3xdsVki/qDe37izwdawHN99aUwrPHVxn83XM9vIs9hEJ6j04de4A XVyvCDoWmwZnhyh1RDSohX/65NmdSfcJ9I/tKZCgKekqqTRxSHyff/BeL3se19MK/+ xqQf90vUJYvUw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4TC8nC4zJRz6v0x; Sat, 13 Jan 2024 21:16:31 +0100 (CET) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_a36fac36e615fce366f58f485dd38c63" Date: Sat, 13 Jan 2024 20:16:31 +0000 From: gerard.vermeulen@posteo.net To: Ihor Radchenko Cc: Emacs orgmode , emacs-orgmode-bounces+gerard.vermeulen=posteo.net@gnu.org Subject: Re: [PATCH] org-babel-demarcate-block: split using element API In-Reply-To: <87a5p9uute.fsf@localhost> References: <7e41f9b6e9026a404e256f33371e974c@posteo.net> <87zfxq78ff.fsf@localhost> <87zfxo3taa.fsf@localhost> <87v88a78qd.fsf@localhost> <7f23ea966f0f0aad3fad29b0b96864f3@posteo.net> <87y1d55fc6.fsf@localhost> <37fdcc4bfcf734c2e5ec439d40b4f7d8@posteo.net> <878r50yqmo.fsf@localhost> <442006329cfba666710c989aece5191a@posteo.net> <261356c53e857e0bc4b04f884366edfa@posteo.net> <87bk9uy31w.fsf@localhost> <680e4a4fccf4f3c5c8f51d8215257eff@posteo.net> <87a5p9uute.fsf@localhost> Message-ID: Received-SPF: pass client-ip=185.67.36.66; envelope-from=gerard.vermeulen@posteo.net; helo=mout02.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: emacs-orgmode-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN X-Migadu-Queue-Id: EE41E50379 X-Migadu-Scanner: mx13.migadu.com X-Migadu-Spam-Score: -6.21 X-Spam-Score: -6.21 X-TUID: wSX7Q9AdZ1UN --=_a36fac36e615fce366f58f485dd38c63 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 13.01.2024 16:17, Ihor Radchenko wrote: > gerard.vermeulen@posteo.net writes: > >> Attached you'll find a new patch addressing all you issues. > > Thanks! > I tried to run make test, and I am getting > FAILED test-ob/demarcate-block ((should (string= region-text > (org-trim (nth 1 info)))) :form (string= "mark this line as region" > "") :value nil :explanation (arrays-of-different-length 24 0 "mark > this line as region" "" first-mismatch-at 0)) I have improved a regexp used to mark a region in this sub-test improving the robustness of the code. Furthermore, I have replaced all occurrences of (set-mark (point)) with (set-mark-command nil), but I doubt that this is the reason. Nevertheless, I feel I need to point out the limitation of this particular test case. Prerequisites: #+begin_src emacs-lisp :results silent (setopt org-adapt-indentation t org-edit-src-content-indentation 2 org-src-preserve-indentation nil) #+end_src When I mark really the line containing "mark this line as region" C-u C-C C-v C-d works nicely (done in the sub-test). ********** 10 stars with region between two lines #+header: :var b="also seen" #+begin_src any-language -i -n :var a="seen" to upper block mark this line as region to lower block #+end_src but C-u C-c C-v C-d after marking ' this line as ' produces this: ********** 10 stars with region between two lines #+header: :var b="also seen" #+begin_src any-language -i -n :var a="seen" to upper block mark #+end_src ********** #+header: :var b="also seen" #+begin_src any-language -i -n :var a="seen" this line as #+end_src ********** #+header: :var b="also seen" #+begin_src any-language -i -n :var a="seen" region to lower block #+end_src The text after (mark) and (point) is misaligned. I tend to mark regions in a way that is compatible with the patch, but some users won't (maybe they are willing to adapt). Patch attached. Regards -- Gerard --=_a36fac36e615fce366f58f485dd38c63 Content-Transfer-Encoding: base64 Content-Type: application/octet-stream; name=0001-org-babel-demarcate-block-split-using-element-API.patch Content-Disposition: attachment; filename=0001-org-babel-demarcate-block-split-using-element-API.patch; size=18071 RnJvbSBiMDhiNWJlMmE3NjdjZWJmZGI2OGYxZDE3ZWM1N2NjOTE3ODMwNTk3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHZXJhcmQgVmVybWV1bGVuIDxnZXJhcmQudmVybWV1bGVuQHBv c3Rlby5uZXQ+CkRhdGU6IFRodSwgMTEgSmFuIDIwMjQgMjA6MjA6MDEgKzAxMDAKU3ViamVjdDog W1BBVENIXSBvcmctYmFiZWwtZGVtYXJjYXRlLWJsb2NrOiBzcGxpdCB1c2luZyBlbGVtZW50IEFQ SQoKKiBsaXNwL29iLWJhYmVsLmVsIChvcmctYmFiZWwtZGVtYXJjYXRlLWJsb2NrKTogTW9kaWZ5 IGEgY29weQpvZiAob3JnLWVsZW1lbnQtYXQtcG9pbnQpIHRvIHJlcGxhY2UgdGhlIG9sZCBzb3Vy Y2UgYmxvY2sgd2l0aCAyIG9yIDMKbmV3IG1vZGlmaWVkIGNvcGllcyBieSBtZWFucyBvZiBgb3Jn LWVsZW1lbnQtaW50ZXJwcmV0LWRhdGEnLiAgVGhlIDFzdApzb3VyY2UgYmxvY2sgY29udGFpbnMg dGhlIHRleHQgZnJvbSB0aGUgYm9keSBvZiB0aGUgb2xkIGJsb2NrIGJlZm9yZQpwb2ludCBvciBy ZWdpb24sIHRoZSAybmQgYmxvY2sgY29udGFpbnMgdGhlIGJvZHkgdGV4dCBhZnRlciBwb2ludCBv cgpib2R5IHRleHQgd2l0aGluIHJlZ2lvbiwgYW5kIGluIGNhc2Ugb2YgcmVnaW9uLCB0aGUgM3Jk IGJsb2NrIGNvbnRhaW5zCnRoZSB0ZXh0IGFmdGVyIHJlZ2lvbi4gIFRoZSBjYXB0aW9uIGFuZCB0 aGUgbmFtZSBhcmUgZGVsZXRlZCBmcm9tIHRoZQoxIG9yIDIgYmxvY2tzIGJlbG93IHRoZSB1cHBl ciBzb3VyY2UgYmxvY2suICBJbmRlbnQgYWxsIGJsb2NrcwppbW1lZGlhdGVseSBhZnRlciBpbnNl cnRpb24gKHBpdGZhbGwsIHNlZSBsaW5rKS4gIFVzZSA6cG9zdC1ibGFuayB0bwpjb250cm9sIHdo aXRlIGxpbmVzIGJldHdlZW4gaW5zZXJ0ZWQgYmxvY2tzLiAgTGVhdmUgcG9pbnQgYXQgdGhlIGxh c3QKaW5zZXJ0ZWQgYmxvY2suICBUcnlpbmcgdG8gc3BsaXQgd2hlbiBwb2ludCBvciByZWdpb24g aXMgbm90IHdpdGhpbgp0aGUgYm9keSBvZiB0aGUgb2xkIHNvdXJjZSBibG9jayByYWlzZXMgYW4g dXNlci1lcnJvci4KKiBsaXNwL29iLWJhYmVsIChvcmctZ2V0LXNyYy1ibG9jay1pbmZvKTogYWRk IHRoZSAid2l0aGluIGJsYW5rIGxpbmVzCmFmdGVyIGEgc291cmNlIGJsb2NrIiBjb25kaXRpb24g dG8gdGhlIGRvYy1zdHJpbmcgdG8gbWF0Y2ggaXQgd2l0aCB0aGUKZG9jLXN0cmluZyBvZiBhbmQg YSBjb21tZW50IGluIGBvcmctYmFiZWwtZGVtYXJjYXRlLWJsb2NrJy4KKiB0ZXN0aW5nL2xpc3Av dGVzdC1vYi5lbCAodGVzdC1vYi9kZW1hcmNhdGUtYmxvY2spOiBOZXcgdGVzdC4gIEl0CmNoZWNr cyB0ZXN0IGNhc2VzIHRoYXQgYnJva2UgZWFybGllciB2ZXJzaW9ucyBvZiB0aGlzIHBhdGNoLgoK TGluazogaHR0cHM6Ly9saXN0Lm9yZ21vZGUub3JnLzg3cGx5Nm55dWUuZnNmQGxvY2FsaG9zdC8K LS0tCiBsaXNwL29iLWNvcmUuZWwgICAgICAgICB8ICA4MCArKysrKysrKystLS0tLQogdGVzdGlu Zy9saXNwL3Rlc3Qtb2IuZWwgfCAyMjMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyNzUgaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9vYi1jb3JlLmVsIGIvbGlzcC9vYi1jb3JlLmVsCmluZGV4 IDFkZTNhZjZhZC4uNTVmNzQ3ZWUxIDEwMDY0NAotLS0gYS9saXNwL29iLWNvcmUuZWwKKysrIGIv bGlzcC9vYi1jb3JlLmVsCkBAIC03MywxMCArNzMsMTIgQEAKIChkZWNsYXJlLWZ1bmN0aW9uIG9y Zy1lbGVtZW50LXBhcmVudCAib3JnLWVsZW1lbnQtYXN0IiAobm9kZSkpCiAoZGVjbGFyZS1mdW5j dGlvbiBvcmctZWxlbWVudC10eXBlICJvcmctZWxlbWVudC1hc3QiIChub2RlICZvcHRpb25hbCBh bm9ueW1vdXMpKQogKGRlY2xhcmUtZnVuY3Rpb24gb3JnLWVsZW1lbnQtdHlwZS1wICJvcmctZWxl bWVudC1hc3QiIChub2RlICZvcHRpb25hbCB0eXBlcykpCisoZGVjbGFyZS1mdW5jdGlvbiBvcmct ZWxlbWVudC1pbnRlcnByZXQtZGF0YSAib3JnLWVsZW1lbnQiIChkYXRhKSkKIChkZWNsYXJlLWZ1 bmN0aW9uIG9yZy1lbnRyeS1nZXQgIm9yZyIgKHBvbSBwcm9wZXJ0eSAmb3B0aW9uYWwgaW5oZXJp dCBsaXRlcmFsLW5pbCkpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctZXNjYXBlLWNvZGUtaW4tcmVn aW9uICJvcmctc3JjIiAoYmVnIGVuZCkpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctZm9yd2FyZC1o ZWFkaW5nLXNhbWUtbGV2ZWwgIm9yZyIgKGFyZyAmb3B0aW9uYWwgaW52aXNpYmxlLW9rKSkKIChk ZWNsYXJlLWZ1bmN0aW9uIG9yZy1pbi1jb21tZW50ZWQtaGVhZGluZy1wICJvcmciICgmb3B0aW9u YWwgbm8taW5oZXJpdGFuY2UpKQorKGRlY2xhcmUtZnVuY3Rpb24gb3JnLWluZGVudC1ibG9jayAi b3JnIiAoKSkKIChkZWNsYXJlLWZ1bmN0aW9uIG9yZy1pbmRlbnQtbGluZSAib3JnIiAoKSkKIChk ZWNsYXJlLWZ1bmN0aW9uIG9yZy1saXN0LWdldC1saXN0LWVuZCAib3JnLWxpc3QiIChpdGVtIHN0 cnVjdCBwcmV2cykpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctbGlzdC1wcmV2cy1hbGlzdCAib3Jn LWxpc3QiIChzdHJ1Y3QpKQpAQCAtNzAwLDggKzcwMiw5IEBAIEJ5IGRlZmF1bHQsIGNvbnNpZGVy IHRoZSBibG9jayBhdCBwb2ludC4gIEhvd2V2ZXIsIHdoZW4gb3B0aW9uYWwKIGFyZ3VtZW50IERB VFVNIGlzIHByb3ZpZGVkLCBleHRyYWN0IGluZm9ybWF0aW9uIGZyb20gdGhhdCBwYXJzZWQKIG9i amVjdCBpbnN0ZWFkLgogCi1SZXR1cm4gbmlsIGlmIHBvaW50IGlzIG5vdCBvbiBhIHNvdXJjZSBi bG9jay4gIE90aGVyd2lzZSwgcmV0dXJuCi1hIGxpc3Qgd2l0aCB0aGUgZm9sbG93aW5nIHBhdHRl cm46CitSZXR1cm4gbmlsIGlmIHBvaW50IGlzIG5vdCBvbiBhIHNvdXJjZSBibG9jayAoYmxhbmsg bGluZXMgYWZ0ZXIgYQorc291cmNlIGJsb2NrIGFyZSBjb25zaWRlcmVkIGEgcGFydCBvZiB0aGF0 IHNvdXJjZSBibG9jaykuCitPdGhlcndpc2UsIHJldHVybiBhIGxpc3Qgd2l0aCB0aGUgZm9sbG93 aW5nIHBhdHRlcm46CiAKICAgKGxhbmd1YWdlIGJvZHkgYXJndW1lbnRzIHN3aXRjaGVzIG5hbWUg c3RhcnQgY29kZXJlZikiCiAgIChsZXQqICgoZGF0dW0gKG9yIGRhdHVtIChvcmctZWxlbWVudC1j b250ZXh0KSkpCkBAIC0yMDUxLDcgKzIwNTQsNyBAQCBXaXRoIG9wdGlvbmFsIHByZWZpeCBhcmd1 bWVudCBBUkcsIGp1bXAgYmFja3dhcmQgQVJHIG1hbnkgc291cmNlIGJsb2Nrcy4iCiAgICAgICAo Z290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcgNSkpKSkpCiAKIChkZWZ1biBvcmctYmFiZWwtZGVt YXJjYXRlLWJsb2NrICgmb3B0aW9uYWwgYXJnKQotICAiV3JhcCBvciBzcGxpdCB0aGUgY29kZSBp biB0aGUgcmVnaW9uIG9yIG9uIHRoZSBwb2ludC4KKyAgIldyYXAgb3Igc3BsaXQgdGhlIGNvZGUg aW4gYW4gYWN0aXZlIHJlZ2lvbiBvciBhdCBwb2ludC4KIAogV2l0aCBwcmVmaXggYXJndW1lbnQg QVJHLCBhbHNvIGNyZWF0ZSBhIG5ldyBoZWFkaW5nIGF0IHBvaW50LgogCkBAIC0yMDYxLDQxICsy MDY0LDYyIEBAIGlzIGNyZWF0ZWQuICBJbiBib3RoIGNhc2VzIGlmIHRoZSByZWdpb24gaXMgZGVt YXJjYXRlZCBhbmQgaWYgdGhlCiByZWdpb24gaXMgbm90IGFjdGl2ZSB0aGVuIHRoZSBwb2ludCBp cyBkZW1hcmNhdGVkLgogCiBXaGVuIGNhbGxlZCB3aXRoaW4gYmxhbmsgbGluZXMgYWZ0ZXIgYSBj b2RlIGJsb2NrLCBjcmVhdGUgYSBuZXcgY29kZQotYmxvY2sgb2YgdGhlIHNhbWUgbGFuZ3VhZ2Ug d2l0aCB0aGUgcHJldmlvdXMuIgorYmxvY2sgb2YgdGhlIHNhbWUgbGFuZ3VhZ2UgYXMgdGhlIHBy ZXZpb3VzLiIKICAgKGludGVyYWN0aXZlICJQIikKICAgKGxldCogKChpbmZvIChvcmctYmFiZWwt Z2V0LXNyYy1ibG9jay1pbmZvICduby1ldmFsKSkKIAkgKHN0YXJ0IChvcmctYmFiZWwtd2hlcmUt aXMtc3JjLWJsb2NrLWhlYWQpKQogICAgICAgICAgOzsgYHN0YXJ0JyB3aWxsIGJlIG5pbCB3aGVu IHdpdGhpbiBzcGFjZSBsaW5lcyBhZnRlciBzcmMgYmxvY2suCiAJIChibG9jayAoYW5kIHN0YXJ0 IChtYXRjaC1zdHJpbmcgMCkpKQotCSAoaGVhZGVycyAoYW5kIHN0YXJ0IChtYXRjaC1zdHJpbmcg NCkpKQorICAgICAgICAgKGJvZHktYmVnIChhbmQgc3RhcnQgKG1hdGNoLWJlZ2lubmluZyA1KSkp CisgICAgICAgICAoYm9keS1lbmQgKGFuZCBzdGFydCAobWF0Y2gtZW5kIDUpKSkKIAkgKHN0YXJz IChjb25jYXQgKG1ha2Utc3RyaW5nIChvciAob3JnLWN1cnJlbnQtbGV2ZWwpIDEpID8qKSAiICIp KQogCSAodXBwZXItY2FzZS1wIChhbmQgYmxvY2sKIAkJCSAgICAobGV0IChjYXNlLWZvbGQtc2Vh cmNoKQogCQkJICAgICAgKHN0cmluZy1tYXRjaC1wICIjXFwrQkVHSU5fU1JDIiBibG9jaykpKSkp CiAgICAgKGlmIChhbmQgaW5mbyBzdGFydCkgOzsgQXQgc3JjIGJsb2NrLCBidXQgbm90IHdpdGhp biBibGFuayBsaW5lcyBhZnRlciBpdC4KLSAgICAgICAgKG1hcGMKLSAgICAgICAgIChsYW1iZGEg KHBsYWNlKQotICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KLSAgICAgICAgICAgICAoZ290by1j aGFyIHBsYWNlKQotICAgICAgICAgICAgIChsZXQgKChsYW5nIChudGggMCBpbmZvKSkKLSAgICAg ICAgICAgICAgICAgICAoaW5kZW50IChtYWtlLXN0cmluZyAob3JnLWN1cnJlbnQtdGV4dC1pbmRl bnRhdGlvbikgP1xzKSkpCi0JICAgICAgICh3aGVuIChzdHJpbmctbWF0Y2ggIl5bWzpzcGFjZTpd XSokIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmlu ZyAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lLWVuZC1wb3NpdGlvbikpKQotICAgICAgICAg ICAgICAgICAoZGVsZXRlLXJlZ2lvbiAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pIChsaW5lLWVu ZC1wb3NpdGlvbikpKQotICAgICAgICAgICAgICAgKGluc2VydCAoY29uY2F0Ci0JCSAgICAgICAg KGlmIChsb29raW5nLWF0ICJeIikgIiIgIlxuIikKLQkJICAgICAgICBpbmRlbnQgKGlmIHVwcGVy LWNhc2UtcCAiIytFTkRfU1JDXG4iICIjK2VuZF9zcmNcbiIpCi0JCSAgICAgICAgKGlmIGFyZyBz dGFycyBpbmRlbnQpICJcbiIKLQkJICAgICAgICBpbmRlbnQgKGlmIHVwcGVyLWNhc2UtcCAiIytC RUdJTl9TUkMgIiAiIytiZWdpbl9zcmMgIikKLQkJICAgICAgICBsYW5nCi0JCSAgICAgICAgKGlm ICg+IChsZW5ndGggaGVhZGVycykgMSkKLQkJCSAgICAoY29uY2F0ICIgIiBoZWFkZXJzKSBoZWFk ZXJzKQotCQkgICAgICAgIChpZiAobG9va2luZy1hdCAiW1xuXHJdIikKLQkJCSAgICAiIgotCQkJ ICAoY29uY2F0ICJcbiIgKG1ha2Utc3RyaW5nIChjdXJyZW50LWNvbHVtbikgPyApKSkpKSkpCi0J ICAgKG1vdmUtZW5kLW9mLWxpbmUgMikpCi0gICAgICAgICAoc29ydCAoaWYgKG9yZy1yZWdpb24t YWN0aXZlLXApIChsaXN0IChtYXJrKSAocG9pbnQpKSAobGlzdCAocG9pbnQpKSkgIyc+KSkKKyAg ICAgICAgKGxldCogKChjb3B5IChvcmctZWxlbWVudC1jb3B5IChvcmctZWxlbWVudC1hdC1wb2lu dCkpKQorICAgICAgICAgICAgICAgKGJlZm9yZSAob3JnLWVsZW1lbnQtYmVnaW4gY29weSkpCisg ICAgICAgICAgICAgICAoYmV5b25kIChvcmctZWxlbWVudC1lbmQgY29weSkpCisgICAgICAgICAg ICAgICAocGFydHMKKyAgICAgICAgICAgICAgICAoaWYgKG9yZy1yZWdpb24tYWN0aXZlLXApCisg ICAgICAgICAgICAgICAgICAgIChsaXN0IGJvZHktYmVnIChyZWdpb24tYmVnaW5uaW5nKSAocmVn aW9uLWVuZCkgYm9keS1lbmQpCisgICAgICAgICAgICAgICAgICAobGlzdCBib2R5LWJlZyAocG9p bnQpIGJvZHktZW5kKSkpCisgICAgICAgICAgICAgICAobiAoLSAobGVuZ3RoIHBhcnRzKSAyKSkg OzsgMSBvciAyIHBhcnRzIGluIGBkb2xpc3QnIGJlbG93LgorICAgICAgICAgICAgICAgOzsgYHBv c3QtYmxhbmsnIGNhY2hlcyB0aGUgcHJvcGVydHkgYmVmb3JlIHNldHRpbmcgaXQgdG8gMC4KKyAg ICAgICAgICAgICAgIChwb3N0LWJsYW5rIChvcmctZWxlbWVudC1wcm9wZXJ0eSA6cG9zdC1ibGFu ayBjb3B5KSkpCisgICAgICAgICAgOzsgUG9pbnQgb3IgcmVnaW9uIGFyZSB3aXRoaW4gYm9keSB3 aGVuIHBhcnRzIGlzIGluIGluY3JlYXNpbmcgb3JkZXIuCisgICAgICAgICAgKHVubGVzcyAoYXBw bHkgIyc8PSBwYXJ0cykKKyAgICAgICAgICAgICh1c2VyLWVycm9yICJTZWxlY3Qgd2l0aGluIHRo ZSBzb3VyY2UgYmxvY2sgYm9keSB0byBzcGxpdCBpdCIpKQorICAgICAgICAgIChzZXRxIHBhcnRz IChtYXBjYXIgKGxhbWJkYSAocCkgKGJ1ZmZlci1zdWJzdHJpbmcgKGNhciBwKSAoY2RyIHApKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXEtbWFwbiAjJ2NvbnMgcGFydHMgKGNk ciBwYXJ0cykpKSkKKyAgICAgICAgICAoZGVsZXRlLXJlZ2lvbiBiZWZvcmUgYmV5b25kKQorICAg ICAgICAgIDs7IFNldCBgOnBvc3QtYmxhbmsnIHRvIDAuICBXZSB0YWtlIGNhcmUgb2Ygc3BhY2lu ZyBiZXR3ZWVuIGJsb2Nrcy4KKyAgICAgICAgICAob3JnLWVsZW1lbnQtcHV0LXByb3BlcnR5IGNv cHkgOnBvc3QtYmxhbmsgMCkKKyAgICAgICAgICAob3JnLWVsZW1lbnQtcHV0LXByb3BlcnR5IGNv cHkgOnZhbHVlIChjYXIgcGFydHMpKQorICAgICAgICAgIChpbnNlcnQgKG9yZy1lbGVtZW50LWlu dGVycHJldC1kYXRhIGNvcHkpKQorICAgICAgICAgIDs7IGBvcmctaW5kZW50LWJsb2NrJyBtYXkg c2VlIGFub3RoZXIgYG9yZy1lbGVtZW50JyAoZS5nLiBwYXJhZ3JhcGgpCisgICAgICAgICAgOzsg aW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGJsb2NrLiAgRW5zdXJlIHRvIGluZGVudCB0aGUgaW5zZXJ0 ZWQgYmxvY2sKKyAgICAgICAgICA7OyBhbmQgbW92ZSBwb2ludCB0byBpdHMgZW5kLgorICAgICAg ICAgIChvcmctYmFiZWwtcHJldmlvdXMtc3JjLWJsb2NrIDEpCisgICAgICAgICAgKG9yZy1pbmRl bnQtYmxvY2spCisgICAgICAgICAgKGdvdG8tY2hhciAob3JnLWVsZW1lbnQtZW5kIChvcmctZWxl bWVudC1hdC1wb2ludCkpKQorICAgICAgICAgIChvcmctZWxlbWVudC1wdXQtcHJvcGVydHkgY29w eSA6Y2FwdGlvbiBuaWwpCisgICAgICAgICAgKG9yZy1lbGVtZW50LXB1dC1wcm9wZXJ0eSBjb3B5 IDpuYW1lIG5pbCkKKyAgICAgICAgICA7OyBJbnNlcnQgdGhlIDJuZCBibG9jaywgYW5kIHRoZSAz cmQgYmxvY2sgd2hlbiByZWdpb24gaXMgYWN0aXZlLgorICAgICAgICAgIChkb2xpc3QgKHBhcnQg KGNkciBwYXJ0cykpCisgICAgICAgICAgICAob3JnLWVsZW1lbnQtcHV0LXByb3BlcnR5IGNvcHkg OnZhbHVlIHBhcnQpCisgICAgICAgICAgICAoaW5zZXJ0IChpZiBhcmcgKGNvbmNhdCBzdGFycyAi XG4iKSAiXG4iKSkKKyAgICAgICAgICAgIChjbC1kZWNmIG4pCisgICAgICAgICAgICAod2hlbiAo PSBuIDApCisgICAgICAgICAgICAgIDs7IFVzZSBgcG9zdC1ibGFuaycgdG8gcmVzZXQgdGhlIHBy b3BlcnR5IG9mIHRoZSBsYXN0IGJsb2NrLgorICAgICAgICAgICAgICAob3JnLWVsZW1lbnQtcHV0 LXByb3BlcnR5IGNvcHkgOnBvc3QtYmxhbmsgcG9zdC1ibGFuaykpCisgICAgICAgICAgICAoaW5z ZXJ0IChvcmctZWxlbWVudC1pbnRlcnByZXQtZGF0YSBjb3B5KSkKKyAgICAgICAgICAgIDs7IEVu c3VyZSB0byBpbmRlbnQgdGhlIGluc2VydGVkIGJsb2NrIGFuZCBtb3ZlIHBvaW50IHRvIGl0cyBl bmQuCisgICAgICAgICAgICAob3JnLWJhYmVsLXByZXZpb3VzLXNyYy1ibG9jayAxKQorICAgICAg ICAgICAgKG9yZy1pbmRlbnQtYmxvY2spCisgICAgICAgICAgICAoZ290by1jaGFyIChvcmctZWxl bWVudC1lbmQgKG9yZy1lbGVtZW50LWF0LXBvaW50KSkpKQorICAgICAgICAgIDs7IExlYXZlIHBv aW50IGF0IHRoZSBsYXN0IGluc2VydGVkIGJsb2NrLgorICAgICAgICAgIChnb3RvLWNoYXIgKG9y Zy1iYWJlbC1wcmV2aW91cy1zcmMtYmxvY2sgMSkpKQogICAgICAgKGxldCAoKHN0YXJ0IChwb2lu dCkpCiAJICAgIChsYW5nIChvciAoY2FyIGluZm8pIDsgUmV1c2UgbGFuZ3VhZ2UgZnJvbSBwcmV2 aW91cyBibG9jay4KICAgICAgICAgICAgICAgICAgICAgICAoY29tcGxldGluZy1yZWFkCmRpZmYg LS1naXQgYS90ZXN0aW5nL2xpc3AvdGVzdC1vYi5lbCBiL3Rlc3RpbmcvbGlzcC90ZXN0LW9iLmVs CmluZGV4IDQyYzc3Y2E1Ni4uNWI1YWZlZWIxIDEwMDY0NAotLS0gYS90ZXN0aW5nL2xpc3AvdGVz dC1vYi5lbAorKysgYi90ZXN0aW5nL2xpc3AvdGVzdC1vYi5lbApAQCAtMjYsNiArMjYsMjI5IEBA CiAocmVxdWlyZSAnb3JnLXRhYmxlKQogKGV2YWwtYW5kLWNvbXBpbGUgKHJlcXVpcmUgJ2NsLWxp YikpCiAKKyhlcnQtZGVmdGVzdCB0ZXN0LW9iL2RlbWFyY2F0ZS1ibG9jayAoKQorICAiVGVzdCBz cGxpdHRpbmcgYW5kIHdyYXBwaW5nIGJ5IGRlbWFyY2F0aW9uLiIKKyAgOzsgVGVzdCBzcGxpdHRp bmcgd2l0aCBkdXBsaWNhdGlvbiBvZiBsYW5ndWFnZSwgYm9keSwgc3dpdGNoZXMsIGFuZCBoZWFk ZXJzLgorICAobGV0ICgoY2FwdGlvbiAiIytjYXB0aW9uOiBjYXB0aW9uLiIpCisgICAgICAgIChy ZWdleHAgKHJ4ICIjK2NhcHRpb246IGNhcHRpb24uIikpCisgICAgICAgIChvcmctYWRhcHQtaW5k ZW50YXRpb24gbmlsKSkKKyAgICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQgKGZvcm1hdCAiCisl cworIytoZWFkZXI6IDp2YXIgZWRnZT1cImFsc28gZHVwbGljYXRlZFwiCisjK2hlYWRlcjogOndy YXAgXCJzcmMgYW55LXNwYW5pc2ggLW5cIgorIytuYW1lOiBOb2JvZHkKKyMrYmVnaW5fc3JjIGFu eS1lbmdsaXNoIC1pIC1uIDp2YXIgaGVyZT1cImR1cGxpY2F0ZWRcIiA6d3JhcCBcInNyYyBhbnkt ZW5nbGlzaCAtblwiCisKK2Fib3ZlIHNwbGl0Cis8cG9pbnQ+CitiZWxvdyBzcGxpdAorCisjK2Vu ZF9zcmMKK2RvIG5vdCBvcmctaW5kZW50LWJsb2NrIHRleHQgaGVyZQorIiBjYXB0aW9uKQorICAg ICAgKGxldCAoKHdyYXAtdmFsICJzcmMgYW55LXNwYW5pc2ggLW4iKSBhYm92ZSBiZWxvdyBhdmFy cyBidmFycykKKyAgICAgICAgKG9yZy1iYWJlbC1kZW1hcmNhdGUtYmxvY2spCisgICAgICAgIChn b3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2sp IDs7IHVwcGVyIHNvdXJjZSBibG9jaworICAgICAgICAoc2V0cSBhYm92ZSAob3JnLWJhYmVsLWdl dC1zcmMtYmxvY2staW5mbykpCisgICAgICAgIChzZXRxIGF2YXJzIChvcmctYmFiZWwtLWdldC12 YXJzIChudGggMiBhYm92ZSkpKQorICAgICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJsb2NrKSA7 OyBsb3dlciBzb3VyY2UgYmxvY2sKKyAgICAgICAgKHNldHEgYmVsb3cgKG9yZy1iYWJlbC1nZXQt c3JjLWJsb2NrLWluZm8pKQorICAgICAgICAoc2V0cSBidmFycyAob3JnLWJhYmVsLS1nZXQtdmFy cyAobnRoIDIgYmVsb3cpKSkKKyAgICAgICAgOzsgZHVwbGljYXRlZCBtdWx0aS1saW5lIGhlYWRl ciBhcmd1bWVudHM6CisgICAgICAgIChzaG91bGQgKHN0cmluZz0gImFsc28gZHVwbGljYXRlZCIg KGNkciAoYXNzcSAnZWRnZSBhdmFycykpKSkKKyAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAiYWxz byBkdXBsaWNhdGVkIiAoY2RyIChhc3NxICdlZGdlIGJ2YXJzKSkpKQorICAgICAgICAoc2hvdWxk IChzdHJpbmc9IHdyYXAtdmFsIChjZHIgKGFzc3EgOndyYXAgKG50aCAyIGFib3ZlKSkpKSkKKyAg ICAgICAgKHNob3VsZCAoc3RyaW5nPSB3cmFwLXZhbCAoY2RyIChhc3NxIDp3cmFwIChudGggMiBi ZWxvdykpKSkpCisgICAgICAgIDs7IGR1cGxpY2F0ZWQgbGFuZ3VhZ2UsIG90aGVyIGhlYWRlciBh cmd1bWVudHMsIGFuZCBzd2l0Y2hlczoKKyAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAiYW55LWVu Z2xpc2giIChudGggMCBhYm92ZSkpKQorICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICJhbnktZW5n bGlzaCIgKG50aCAwIGJlbG93KSkpCisgICAgICAgIChzaG91bGQgKHN0cmluZz0gImFib3ZlIHNw bGl0IiAob3JnLXRyaW0gKG50aCAxIGFib3ZlKSkpKQorICAgICAgICAoc2hvdWxkIChzdHJpbmc9 ICJiZWxvdyBzcGxpdCIgKG9yZy10cmltIChudGggMSBiZWxvdykpKSkKKyAgICAgICAgKHNob3Vs ZCAoc3RyaW5nPSAiZHVwbGljYXRlZCIgKGNkciAoYXNzcSAnaGVyZSBhdmFycykpKSkKKyAgICAg ICAgKHNob3VsZCAoc3RyaW5nPSAiZHVwbGljYXRlZCIgKGNkciAoYXNzcSAnaGVyZSBidmFycykp KSkKKyAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAiLWkgLW4iIChudGggMyBhYm92ZSkpKQorICAg ICAgICAoc2hvdWxkIChzdHJpbmc9ICItaSAtbiIgKG50aCAzIGJlbG93KSkpCisgICAgICAgIDs7 IG5vbi1kdXBsaWNhdGlvbiBvZiBuYW1lIGFuZCBjYXB0aW9uLCB3aGljaCBpcyBub3QgaW4gYWJv dmUvYmVsb3cuCisgICAgICAgIChzaG91bGQgKHN0cmluZz0gIk5vYm9keSIgKG50aCA0IGFib3Zl KSkpCisgICAgICAgIChzaG91bGQtbm90IChzdHJpbmc9ICIiIChudGggNCBiZWxvdykpKQorICAg ICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAgICAgICAoc2hvdWxkIChyZS1zZWFyY2gt Zm9yd2FyZCByZWdleHApKQorICAgICAgICAoc2hvdWxkLW5vdCAocmUtc2VhcmNoLWZvcndhcmQg cmVnZXhwIG5pbCAnbm9lcnJvcikpKSkpCisgIDs7IFRlc3Qgd3JhcHBpbmcgcG9pbnQgaW4gYmxh bmsgbGluZXMgYmVsb3cgc291cmNlIGJsb2NrCisgIChvcmctdGVzdC13aXRoLXRlbXAtdGV4dCAi CisjK2JlZ2luX3NyYyBhbnktbGFuZ3VhZ2UgLWkgLW4gOnZhciBoZXJlPVwibm90IGR1cGxpY2F0 ZWRcIgordG8gdXBwZXIgYmxvY2sKKyMrZW5kX3NyYworPHBvaW50PgorIgorICAgIChsZXQgKGlu Zm8gdmFycykKKyAgICAgIChvcmctYmFiZWwtZGVtYXJjYXRlLWJsb2NrKQorICAgICAgKGdvdG8t Y2hhciAocG9pbnQtbWluKSkKKyAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2spCisgICAg ICAoc2V0cSBpbmZvIChvcmctYmFiZWwtZ2V0LXNyYy1ibG9jay1pbmZvKSkgIDs7IHVwcGVyIHNv dXJjZSBibG9jayBpbmZvCisgICAgICAoc2V0cSB2YXJzIChvcmctYmFiZWwtLWdldC12YXJzIChu dGggMiBpbmZvKSkpCisgICAgICAoc2hvdWxkIChzdHJpbmc9ICJhbnktbGFuZ3VhZ2UiIChudGgg MCBpbmZvKSkpCisgICAgICAoc2hvdWxkIChzdHJpbmc9ICJ0byB1cHBlciBibG9jayIgKG9yZy10 cmltIChudGggMSBpbmZvKSkpKQorICAgICAgKHNob3VsZCAoc3RyaW5nPSAibm90IGR1cGxpY2F0 ZWQiIChjZHIgKGFzc3EgJ2hlcmUgdmFycykpKSkKKyAgICAgIChzaG91bGQgKHN0cmluZz0gIi1p IC1uIiAobnRoIDMgaW5mbykpKQorICAgICAgKG9yZy1iYWJlbC1uZXh0LXNyYy1ibG9jaykKKyAg ICAgIChzZXRxIGluZm8gKG9yZy1iYWJlbC1nZXQtc3JjLWJsb2NrLWluZm8pKSA7OyBsb3dlciBz b3VyY2UgYmxvY2sgaW5mbworICAgICAgKHNldHEgdmFycyAob3JnLWJhYmVsLS1nZXQtdmFycyAo bnRoIDIgaW5mbykpKQorICAgICAgKHNob3VsZCAoc3RyaW5nPSAiYW55LWxhbmd1YWdlIiAobnRo IDAgaW5mbykpKQorICAgICAgKHNob3VsZCAoc3RyaW5nPSAiIiAob3JnLXRyaW0gKG50aCAxIGlu Zm8pKSkpCisgICAgICAoc2hvdWxkLW5vdCB2YXJzKQorICAgICAgKHNob3VsZCAoc3RyaW5nPSAi IiAobnRoIDMgaW5mbykpKSkpCisgIDs7IFRlc3Qgd3JhcHBpbmcgcmVnaW9uIGluIGJsYW5rIGxp bmVzIGJlbG93IHNvdXJjZSBibG9jaworICAobGV0ICgocmVnaW9uLXRleHQgIm1hcmsgdGhpcyBs aW5lIGFzIHJlZ2lvbiIpKQorICAgIChvcmctdGVzdC13aXRoLXRlbXAtdGV4dCAoZm9ybWF0ICIK KyMrYmVnaW5fc3JjIGFueS1sYW5ndWFnZSAtaSAtbiA6dmFyIGhlcmU9XCJub3QgZHVwbGljYXRl ZFwiCit0byB1cHBlciBibG9jaworIytlbmRfc3JjCisKKyVzCisiIHJlZ2lvbi10ZXh0KQorICAg ICAgKGxldCAoaW5mbyB2YXJzKQorICAgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAg ICAgICAocmUtc2VhcmNoLWZvcndhcmQgcmVnaW9uLXRleHQpCisgICAgICAgIChzZXQtbWFyay1j b21tYW5kIG5pbCkKKyAgICAgICAgKHByZXZpb3VzLWxpbmUpIDs7IGVuc3VyZSB0aGF0IHBvaW50 IGlzIG9uIGFuIGVtcHR5IGxpbmUuCisgICAgICAgIChvcmctYmFiZWwtZGVtYXJjYXRlLWJsb2Nr KQorICAgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAgICAgICAob3JnLWJhYmVsLW5l eHQtc3JjLWJsb2NrKQorICAgICAgICAoc2V0cSBpbmZvIChvcmctYmFiZWwtZ2V0LXNyYy1ibG9j ay1pbmZvKSkgIDs7IHVwcGVyIHNvdXJjZSBibG9jayBpbmZvCisgICAgICAgIChzZXRxIHZhcnMg KG9yZy1iYWJlbC0tZ2V0LXZhcnMgKG50aCAyIGluZm8pKSkKKyAgICAgICAgKHNob3VsZCAoc3Ry aW5nPSAiYW55LWxhbmd1YWdlIiAobnRoIDAgaW5mbykpKQorICAgICAgICAoc2hvdWxkIChzdHJp bmc9ICJ0byB1cHBlciBibG9jayIgKG9yZy10cmltIChudGggMSBpbmZvKSkpKQorICAgICAgICAo c2hvdWxkIChzdHJpbmc9ICJub3QgZHVwbGljYXRlZCIgKGNkciAoYXNzcSAnaGVyZSB2YXJzKSkp KQorICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICItaSAtbiIgKG50aCAzIGluZm8pKSkKKyAgICAg ICAgKG9yZy1iYWJlbC1uZXh0LXNyYy1ibG9jaykKKyAgICAgICAgKHNldHEgaW5mbyAob3JnLWJh YmVsLWdldC1zcmMtYmxvY2staW5mbykpIDs7IGxvd2VyIHNvdXJjZSBibG9jayBpbmZvCisgICAg ICAgIChzZXRxIHZhcnMgKG9yZy1iYWJlbC0tZ2V0LXZhcnMgKG50aCAyIGluZm8pKSkKKyAgICAg ICAgKHNob3VsZCAoc3RyaW5nPSAiYW55LWxhbmd1YWdlIiAobnRoIDAgaW5mbykpKQorICAgICAg ICAoc2hvdWxkIChzdHJpbmc9IHJlZ2lvbi10ZXh0IChvcmctdHJpbSAobnRoIDEgaW5mbykpKSkK KyAgICAgICAgKHNob3VsZC1ub3QgdmFycykKKyAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAiIiAo bnRoIDMgaW5mbykpKSkpKQorICA7OyBUZXN0IHByZWZpeCBhcmd1bWVudCBwb2ludCBzcGxpdHRp bmcuCisgIChsZXQgKChvcmctYWRhcHQtaW5kZW50YXRpb24gdCkKKyAgICAgICAgKG9yZy1lZGl0 LXNyYy1jb250ZW50LWluZGVudGF0aW9uIDIpCisgICAgICAgIChvcmctc3JjLXByZXNlcnZlLWlu ZGVudGF0aW9uIG5pbCkKKyAgICAgICAgKG9rLWNvbCAxMSkKKyAgICAgICAgKHN0YXJzICJeXFwq XFwqXFwqXFwqXFwqXFwqXFwqXFwqXFwqXFwqIikpCisgICAgKG9yZy10ZXN0LXdpdGgtdGVtcC10 ZXh0ICIKKyoqKioqKioqKiogMTAgc3RhcnMgd2l0aCBwb2ludCBiZXR3ZWVuIHR3byBsaW5lcwor ICAgICAgICAgICAjK2JlZ2luX3NyYyBlbWFjcy1saXNwCisgICAgICAgICAgICAgOzsgdG8gdXBw ZXIgYmxvY2sKKyAgICAgICAgICAgICA8cG9pbnQ+CisgICAgICAgICAgICAgOzsgdG8gbG93ZXIg YmxvY2sKKyAgICAgICAgICAgIytlbmRfc3JjCisiCisgICAgICAob3JnLWJhYmVsLWRlbWFyY2F0 ZS1ibG9jayAnYS1wcmVmaXgtYXJnKQorICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAg ICAgIChkb2xpc3QgKHJlZ2V4cCBgKCxzdGFycworICAgICAgICAgICAgICAgICAgICAgICAgIiNc XCtiZWciICI7OyB0byB1cHBlciBibG9jayIgIiNcXCtlbmQiCisgICAgICAgICAgICAgICAgICAg ICAgICAsc3RhcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICIjXFwrYmVnIiAiOzsgdG8gbG93 ZXIgYmxvY2siICIjXFwrZW5kIikpCisgICAgICAgIChzaG91bGQgKHJlLXNlYXJjaC1mb3J3YXJk IHJlZ2V4cCkpCisgICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyAwKSkKKyAgICAg ICAgKGNvbmQgKChzdHJpbmc9IHJlZ2V4cCBzdGFycykKKyAgICAgICAgICAgICAgIChzaG91bGQg KD0gMCAoY3VycmVudC1jb2x1bW4pKSkpCisgICAgICAgICAgICAgICgoc3RyaW5nLXByZWZpeC1w ICI7OyIgcmVnZXhwKQorICAgICAgICAgICAgICAgKHNob3VsZCAoPSAoKyBvay1jb2wgb3JnLWVk aXQtc3JjLWNvbnRlbnQtaW5kZW50YXRpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgIChj dXJyZW50LWNvbHVtbikpKSkKKyAgICAgICAgICAgICAgKHQgKHNob3VsZCAoPSBvay1jb2wgKGN1 cnJlbnQtY29sdW1uKSkpKSkpKSkKKyAgOzsgVGVzdCBwcmVmaXggYXJndW1lbnQgcmVnaW9uIHNw bGl0dGluZy4KKyAgKGxldCAoKG9yZy1hZGFwdC1pbmRlbnRhdGlvbiB0KQorICAgICAgICAob3Jn LWVkaXQtc3JjLWNvbnRlbnQtaW5kZW50YXRpb24gMikKKyAgICAgICAgKG9yZy1zcmMtcHJlc2Vy dmUtaW5kZW50YXRpb24gbmlsKQorICAgICAgICAob2stY29sIDExKQorICAgICAgICAoc3RhcnMg Il5cXCpcXCpcXCpcXCpcXCpcXCpcXCpcXCpcXCpcXCoiKQorICAgICAgICAocGFydHMgJygidG8g dXBwZXIgYmxvY2siICJtYXJrIHRoaXMgbGluZSBhcyByZWdpb24iICJ0byBsb3dlciBibG9jayIp KSkKKyAgICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQgKGZvcm1hdCAiCisqKioqKioqKioqIDEw IHN0YXJzIHdpdGggcmVnaW9uIGJldHdlZW4gdHdvIGxpbmVzCisgICAgICAgICAgICMraGVhZGVy OiA6dmFyIGI9XCJhbHNvIHNlZW5cIgorICAgICAgICAgICAjK2JlZ2luX3NyYyBhbnktbGFuZ3Vh Z2UgLWkgLW4gOnZhciBhPVwic2VlblwiCisgICAgICAgICAgICAgJXMKKyAgICAgICAgICAgICAl cworICAgICAgICAgICAgICVzCisgICAgICAgICAgICMrZW5kX3NyYworIiAobnRoIDAgcGFydHMp IChudGggMSBwYXJ0cykgKG50aCAyIHBhcnRzKSkKKyAgICAgIChsZXQgKChuIDApIGluZm8gdmFy cykKKyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICAgKHJlLXNlYXJjaC1m b3J3YXJkIChmb3JtYXQgIlsgXHRdKyVzIiAobnRoIDEgcGFydHMpKSkKKyAgICAgICAgKHNldC1t YXJrLWNvbW1hbmQgbmlsKQorICAgICAgICAoZ290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcgMCkp CisgICAgICAgIChvcmctYmFiZWwtZGVtYXJjYXRlLWJsb2NrICdhLXByZWZpeC1hcmd1bWVudCkK KyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICAgKHdoaWxlICg8IG4gKGxl bmd0aCBwYXJ0cykpCisgICAgICAgICAgKG9yZy1iYWJlbC1uZXh0LXNyYy1ibG9jaykKKyAgICAg ICAgICAoc2V0cSBpbmZvIChvcmctYmFiZWwtZ2V0LXNyYy1ibG9jay1pbmZvKSkKKyAgICAgICAg ICAoc2V0cSB2YXJzIChvcmctYmFiZWwtLWdldC12YXJzIChudGggMiBpbmZvKSkpCisgICAgICAg ICAgKHNob3VsZCAoc3RyaW5nPSAiYW55LWxhbmd1YWdlIiAobnRoIDAgaW5mbykpKQorICAgICAg ICAgIChzaG91bGQgKHN0cmluZz0gKG50aCBuIHBhcnRzKSAob3JnLXRyaW0gKG50aCAxIGluZm8p KSkpCisgICAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAic2VlbiIgKGNkciAoYXNzcSAnYSB2YXJz KSkpKQorICAgICAgICAgIChzaG91bGQgKHN0cmluZz0gImFsc28gc2VlbiIgKGNkciAoYXNzcSAn YiB2YXJzKSkpKQorICAgICAgICAgIChzaG91bGQgKHN0cmluZz0gIi1pIC1uIiAobnRoIDMgaW5m bykpKQorICAgICAgICAgIChjbC1pbmNmIG4pKSkKKyAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1p bikpCisgICAgICAoZG9saXN0IChyZWdleHAgYCgsc3RhcnMKKyAgICAgICAgICAgICAgICAgICAg ICAgICIjXFwrYmVnIiAsKG50aCAwIHBhcnRzKSAiI1xcK2VuZCIKKyAgICAgICAgICAgICAgICAg ICAgICAgICxzdGFycworICAgICAgICAgICAgICAgICAgICAgICAgIiNcXCtiZWciICwobnRoIDEg cGFydHMpICIjXFwrZW5kIgorICAgICAgICAgICAgICAgICAgICAgICAgLHN0YXJzCisgICAgICAg ICAgICAgICAgICAgICAgICAiI1xcK2JlZyIgLChudGggMiBwYXJ0cykgIiNcXCtlbmQiKSkKKyAg ICAgICAgKHNob3VsZCAocmUtc2VhcmNoLWZvcndhcmQgcmVnZXhwKSkKKyAgICAgICAgKGdvdG8t Y2hhciAobWF0Y2gtYmVnaW5uaW5nIDApKQorICAgICAgICAoY29uZCAoKHN0cmluZz0gcmVnZXhw IHN0YXJzKQorICAgICAgICAgICAgICAgKHNob3VsZCAoPSAwIChjdXJyZW50LWNvbHVtbikpKSkK KyAgICAgICAgICAgICAgKChtZW1xIHJlZ2V4cCBwYXJ0cykKKyAgICAgICAgICAgICAgIChzaG91 bGQgKD0gKCsgb2stY29sIG9yZy1lZGl0LXNyYy1jb250ZW50LWluZGVudGF0aW9uKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1jb2x1bW4pKSkpCisgICAgICAgICAgICAgICh0 IChzaG91bGQgKD0gb2stY29sIChjdXJyZW50LWNvbHVtbikpKSkpKSkKKyAgICA7OyBUZXN0IGZv ciBgdXNlci1lcnJvcnMncy4KKyAgICAobGV0KiAoKGNhcHRpb24gIiMrY2FwdGlvbjogY2FwdGlv bi4iKQorICAgICAgICAgICAocmVnZXhwIChyeCAiIytjYXB0aW9uOiBjYXB0aW9uLiIpKQorICAg ICAgICAgICAod2l0aGluLWJvZHkgIjs7IHdpdGhpbi1ib2R5IikKKyAgICAgICAgICAgKGJlbG93 LWJsb2NrICIjIGJlbG93IGJsb2NrIikKKyAgICAgICAgICAgKHRlbXAtdGV4dCAoZm9ybWF0ICIK KyVzCisjK2JlZ2luX3NyYyBlbWFjcy1saXNwCisKKyAgJXMKKworIytlbmRfc3JjCisKKyVzCisi IGNhcHRpb24gd2l0aGluLWJvZHkgYmVsb3ctYmxvY2spKSkKKyAgICAgIDs7IFRlc3QgcG9pbnQg YXQgY2FwdGlvbi4KKyAgICAgIChvcmctdGVzdC13aXRoLXRlbXAtdGV4dCB0ZW1wLXRleHQKKyAg ICAgICAgOzsgU2V0IHBvaW50LgorICAgICAgICAoc2hvdWxkIChyZS1zZWFyY2gtZm9yd2FyZCBy ZWdleHAgbmlsICdub2Vycm9yKSkKKyAgICAgICAgKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5n IDApKQorICAgICAgICA7OyBDaGVjayAocG9pbnQpLgorICAgICAgICAoc2hvdWxkIChzdHJpbmc9 IGNhcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZworICAg ICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpICgrIChwb2ludCkgKGxlbmd0aCBjYXB0aW9u KSkpKSkKKyAgICAgICAgKHNob3VsZC1lcnJvciAob3JnLWJhYmVsLWRlbWFyY2F0ZS1ibG9jaykg OnR5cGUgJ3VzZXItZXJyb3IpKQorICAgICAgOzsgVGVzdCByZWdpb24gZnJvbSBiZWxvdyB0aGUg YmxvY2sgKG1hcmspIHRvIHdpdGhpbiB0aGUgYm9keSAocG9pbnQpLgorICAgICAgKG9yZy10ZXN0 LXdpdGgtdGVtcC10ZXh0IHRlbXAtdGV4dAorICAgICAgICA7OyBTZXQgbWFyay4KKyAgICAgICAg KHNob3VsZCAocmUtc2VhcmNoLWZvcndhcmQgYmVsb3ctYmxvY2sgbmlsICdub2Vycm9yKSkKKyAg ICAgICAgKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5nIDApKQorICAgICAgICAoc2V0LW1hcmst Y29tbWFuZCBuaWwpCisgICAgICAgIDs7IENoZWNrIChtYXJrKS4KKyAgICAgICAgKHNob3VsZCAo c3RyaW5nPSBiZWxvdy1ibG9jaworICAgICAgICAgICAgICAgICAgICAgICAgIChidWZmZXItc3Vi c3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXJrKSAoKyAobWFyaykgKGxlbmd0 aCBiZWxvdy1ibG9jaykpKSkpCisgICAgICAgIDs7IFNldCBwb2ludC4KKyAgICAgICAgKHNob3Vs ZCAocmUtc2VhcmNoLWJhY2t3YXJkIHdpdGhpbi1ib2R5IG5pbCAnbm9lcnJvcikpCisgICAgICAg IChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyAwKSkKKyAgICAgICAgOzsgQ2hlY2sgKHBvaW50 KS4KKyAgICAgICAgKHNob3VsZCAoc3RyaW5nPSB3aXRoaW4tYm9keQorICAgICAgICAgICAgICAg ICAgICAgICAgIChidWZmZXItc3Vic3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgIChw b2ludCkgKCsgKHBvaW50KSAobGVuZ3RoIHdpdGhpbi1ib2R5KSkpKSkKKyAgICAgICAgKHNob3Vs ZC1lcnJvciAob3JnLWJhYmVsLWRlbWFyY2F0ZS1ibG9jaykgOnR5cGUgJ3VzZXItZXJyb3IpKSkp KQorCiAoZXJ0LWRlZnRlc3QgdGVzdC1vYi9pbmRlbnRlZC1jYWNoZWQtb3JnLWJyYWNrZXQtbGlu ayAoKQogICAiV2hlbiB0aGUgcmVzdWx0IG9mIGEgc291cmNlIGJsb2NrIGlzIGEgY2FjaGVkIGlu ZGVudGVkIGxpbmsgaXQKIHNob3VsZCBzdGlsbCByZXR1cm4gdGhlIGxpbmsuIgotLSAKMi40Mi4w Cgo= --=_a36fac36e615fce366f58f485dd38c63--