From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Liu Hui Newsgroups: gmane.emacs.bugs Subject: bug#68559: [PATCH] Improve Python shell completion Date: Tue, 6 Feb 2024 09:25:36 +0800 Message-ID: References: <83zfx39mcy.fsf@gnu.org> <87a5og8m7t.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000003f86740610ac758f" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="32766"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Eli Zaretskii , 68559@debbugs.gnu.org To: kobarity Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Feb 06 02:27:10 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rXAEv-0008IG-Qu for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 06 Feb 2024 02:27:10 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rXAEe-0006yW-91; Mon, 05 Feb 2024 20:26:52 -0500 Original-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 1rXAEb-0006y1-Oo for bug-gnu-emacs@gnu.org; Mon, 05 Feb 2024 20:26:49 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rXAEb-0006JX-Gb for bug-gnu-emacs@gnu.org; Mon, 05 Feb 2024 20:26:49 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rXAEo-0001hu-AW for bug-gnu-emacs@gnu.org; Mon, 05 Feb 2024 20:27:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Liu Hui Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 06 Feb 2024 01:27:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 68559 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 68559-submit@debbugs.gnu.org id=B68559.17071827706504 (code B ref 68559); Tue, 06 Feb 2024 01:27:02 +0000 Original-Received: (at 68559) by debbugs.gnu.org; 6 Feb 2024 01:26:10 +0000 Original-Received: from localhost ([127.0.0.1]:52869 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rXADw-0001gp-Hu for submit@debbugs.gnu.org; Mon, 05 Feb 2024 20:26:09 -0500 Original-Received: from mail-vk1-xa2b.google.com ([2607:f8b0:4864:20::a2b]:55483) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rXADu-0001gL-Af for 68559@debbugs.gnu.org; Mon, 05 Feb 2024 20:26:07 -0500 Original-Received: by mail-vk1-xa2b.google.com with SMTP id 71dfb90a1353d-4c01076b9faso1509915e0c.2 for <68559@debbugs.gnu.org>; Mon, 05 Feb 2024 17:25:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1707182748; x=1707787548; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=n635+wz7NJcUOsaOH6FWJg+/MTZDNiLwv6QJF+iYmyA=; b=VEIn7IG5L6xi0u7XnQ/CywIrRs/PMXfHn1VYddPK+NxnHsg9uXMZ+M2IPSZhiRXF6t XJ/ah0kNlb82gHh5QyTveapUKO7E4krkA1zPlxaWqf8hWYQAGc5SvB0ypu308jw4K2Pc AgWPkgfTSFtBorpRWe+42gaiLMS5+3rd8PMB8PwbcuNyL1p8lpL+lrZezZnylASpfrqT jY2T+v2TV0InRzyl8Nq1PforDbrw1wxQkWVCc812rKEEC49b0sn45J9ZXWOpgQi7tr7X 9gvPHACd0jDB7KT5uQzp400EcjUgQqd/Y3HeLp/Gzx+nmIF8dKWsM2ekkr0/x7MHm3hX wbew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707182748; x=1707787548; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=n635+wz7NJcUOsaOH6FWJg+/MTZDNiLwv6QJF+iYmyA=; b=WkzB870AQaZM6y4XsNN92yHFN2jximkUtWlKsre2TyO+Y7ytCLWrnAkJjCr1bt/Tj8 wBm/n+2rPmSEU4XecZ3EkIo5WyXHZu6shuZLhIai/NhcdXIuPrSrlEB0cIiHsjy1jGQk 8HySZ6poLH+IzrIFLWAnOG5O77aZ3kZTHIUWZKQu+I6cIydPKzfTpAaMNNY5rTAUm6J1 rhx8Qad7T9tRuwq2mb+1UVNog1J7s5L1Y4R4JmBKIuz7xvyd6UUgAn6mY2dXn6GonmBl WO2OeUJdAY+WSgeAv3PLkVBXZTEjqdtF7U/pLB347HXCwuDxKTyG1Rxbf1X9a6R9bDH8 5EIw== X-Gm-Message-State: AOJu0YwzFZOLH/b5no+D0RPYFrLu+WuQfabvR0jX1r+kzlTChtCnoj7W OgIaIlEO2SA2fVJP0p+eU2sJZo56GTlMSDrcmeFeE8Hkr8MojThxE46U2a7xUFg+ipmz10/21dz xqew5pGu+iCeJDEHiBSOOQhmkVB0= X-Google-Smtp-Source: AGHT+IHH19JoaphQNN2x9+NHLLQTnla8wWG8VO31MLl2+8pXX4gkbMl+DsIbwyomzftgsQDNzXYx46I0+bq0z7GLvr8= X-Received: by 2002:ac5:c64f:0:b0:4c0:1a5c:9185 with SMTP id j15-20020ac5c64f000000b004c01a5c9185mr1180654vkl.4.1707182747765; Mon, 05 Feb 2024 17:25:47 -0800 (PST) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:279469 Archived-At: --0000000000003f86740610ac758f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Feb 5, 2024 at 11:03=E2=80=AFPM Liu Hui wrot= e: > > Thank you for the detailed explanation and the workaround. I > > confirmed that the problem is solved by the above workaround. Just to > > confirm, are you of the opinion that this workaround should not be the > > default? > > I'm not sure if we should add more Python code in the form of strings > to python.el, which increases maintenance burden IMO. Maybe they could > be distributed separately at ELPA/Git forges. > > Actually, I'm considering simplifying this patch to mainly fix the bug > that python shell completion doesn't respect the delimiter of readline > completer. The new patch has been attached. It should support > the completer defined in the PYTHONSTARTUP file, e.g., jedi or a > custom completer like the above one. WDYT? I have updated documentation about readline completer and fixed an error in commit log in the attach patch. --0000000000003f86740610ac758f Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Respect-the-delimiter-of-completer-in-Python-shell-c.patch" Content-Disposition: attachment; filename="0001-Respect-the-delimiter-of-completer-in-Python-shell-c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ls9oicow0 RnJvbSA1MjllNWY2MTgwMTk3MTMwZWMzOWRiZGRkMzliMmFhMmI2ZGVmZjY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMaXUgSHVpIDxsaXVodWkxNjEwQGdtYWlsLmNvbT4KRGF0ZTog VGh1LCAxOCBKYW4gMjAyNCAxMjowMDowMCArMDgwMApTdWJqZWN0OiBbUEFUQ0hdIFJlc3BlY3Qg dGhlIGRlbGltaXRlciBvZiBjb21wbGV0ZXIgaW4gUHl0aG9uIHNoZWxsIGNvbXBsZXRpb24KCiog bGlzcC9wcm9nbW9kZXMvcHl0aG9uLmVsOiAocHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tc2V0dXAt Y29kZSk6IEZpeAp0aGUgY29tcGxldGlvbiBjb2RlIG9mIElQeXRob24uICBDaGFuZ2UgdGhlIHJl dHVybiB2YWx1ZSB0byBKU09OIHN0cmluZwphbmQgLi4uCihweXRob24tc2hlbGwtY29tcGxldGlv bi1nZXQtY29tcGxldGlvbnMpOiAuLi4gc2ltcGxpZnkgcGFyc2luZy4KKGluZmVyaW9yLXB5dGhv bi1tb2RlKTogVXBkYXRlIGRvY3N0cmluZy4KKHB5dGhvbi1zaGVsbC1yZWFkbGluZS1jb21wbGV0 ZXItZGVsaW1zKTogTmV3IHZhcmlhYmxlIGluZGljYXRpbmcgdGhlCndvcmQgZGVsaW1pdGVycyBv ZiByZWFkbGluZSBjb21wbGV0ZXIuCihweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRpdmUtc2V0 dXApOiBTZXQgdGhlIGNvbXBsZXRlciBkZWxpbWl0ZXIuCihweXRob24tc2hlbGwtY29tcGxldGlv bi1uYXRpdmUtZ2V0LWNvbXBsZXRpb25zKTogQ29udmVydCBvdXRwdXQgc3RyaW5nCnRvIGNvbXBs ZXRpb25zIHByb3Blcmx5LgoocHl0aG9uLXNoZWxsLS1nZXQtbXVsdGlsaW5lLWlucHV0KQoocHl0 aG9uLXNoZWxsLS1leHRyYS1jb21wbGV0aW9uLWNvbnRleHQpCihweXRob24tc2hlbGwtY29tcGxl dGlvbi1leHRyYS1jb250ZXh0KTogTmV3IGZ1bmN0aW9ucy4KKHB5dGhvbi1zaGVsbC1jb21wbGV0 aW9uLWF0LXBvaW50KTogU2VuZCB0ZXh0IGJlZ2lubmluZyBmcm9tIHRoZSBsaW5lCnN0YXJ0IGlm IHRoZSBjb21wbGV0aW9uIGJhY2tlbmQgZG9lcyBub3QgbmVlZCB3b3JkIHNwbGl0dGluZy4gIFJl bW92ZQp0aGUgZGV0ZWN0aW9uIG9mIGltcG9ydCBzdGF0ZW1lbnQgYmVjYXVzZSBpdCBpcyBub3Qg bmVlZGVkIGFueW1vcmUuCkNyZWF0ZSBwcm9wZXIgY29tcGxldGlvbiB0YWJsZSBiYXNlZCBvbiBj b21wbGV0aW9ucyByZXR1cm5lZCBmcm9tCmRpZmZlcmVudCBiYWNrZW5kcy4KCiogdGVzdC9saXNw L3Byb2dtb2Rlcy9weXRob24tdGVzdHMuZWwgKHB5dGhvbi10ZXN0cy0tY29tcGxldGlvbi1tb2R1 bGUpCihweXRob24tdGVzdHMtLWNvbXBsZXRpb24tcGFyYW1ldGVycykKKHB5dGhvbi10ZXN0cy0t Y29tcGxldGlvbi1leHRyYS1jb250ZXh0KTogTmV3IGhlbHBlciBmdW5jdGlvbnMuCihweXRob24t c2hlbGwtY29tcGxldGlvbi1hdC1wb2ludC1qZWRpLWNvbXBsZXRlcikKKHB5dGhvbi1zaGVsbC1j b21wbGV0aW9uLWF0LXBvaW50LWlweXRob24pOiBOZXcgdGVzdHMuIChidWcjNjg1NTkpCi0tLQog bGlzcC9wcm9nbW9kZXMvcHl0aG9uLmVsICAgICAgICAgICAgfCAyMTggKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLQogdGVzdC9saXNwL3Byb2dtb2Rlcy9weXRob24tdGVzdHMuZWwgfCAgOTIg KysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDI2MyBpbnNlcnRpb25zKCspLCA0NyBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saXNwL3Byb2dtb2Rlcy9weXRob24uZWwgYi9saXNwL3By b2dtb2Rlcy9weXRob24uZWwKaW5kZXggOWQ4NDBlZmI5ZGEuLmQ4OGRhNGUyNzAwIDEwMDY0NAot LS0gYS9saXNwL3Byb2dtb2Rlcy9weXRob24uZWwKKysrIGIvbGlzcC9wcm9nbW9kZXMvcHl0aG9u LmVsCkBAIC0xMjgsOSArMTI4LDkgQEAgOzs7IENvbW1lbnRhcnk6CiA7OyByZWNlaXZpbmcgZXNj YXBlIHNlcXVlbmNlcyAod2l0aCBzb21lIGxpbWl0YXRpb25zLCBpLmUuIGNvbXBsZXRpb24KIDs7 IGluIGJsb2NrcyBkb2VzIG5vdCB3b3JrKS4gIFRoZSBjb2RlIGV4ZWN1dGVkIGZvciB0aGUgImZh bGxiYWNrIgogOzsgY29tcGxldGlvbiBjYW4gYmUgZm91bmQgaW4gYHB5dGhvbi1zaGVsbC1jb21w bGV0aW9uLXNldHVwLWNvZGUnIGFuZAotOzsgYHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLXN0cmlu Zy1jb2RlJyB2YXJpYWJsZXMuICBUaGVpciBkZWZhdWx0Ci07OyB2YWx1ZXMgZW5hYmxlIGNvbXBs ZXRpb24gZm9yIGJvdGggQ1B5dGhvbiBhbmQgSVB5dGhvbiwgYW5kIHByb2JhYmx5Ci07OyBhbnkg cmVhZGxpbmUgYmFzZWQgc2hlbGwgKGl0J3Mga25vd24gdG8gd29yayB3aXRoIFB5UHkpLiAgSWYg eW91cgorOzsgYHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLWdldC1jb21wbGV0aW9ucycuICBUaGVp ciBkZWZhdWx0IHZhbHVlcworOzsgZW5hYmxlIGNvbXBsZXRpb24gZm9yIGJvdGggQ1B5dGhvbiBh bmQgSVB5dGhvbiwgYW5kIHByb2JhYmx5IGFueQorOzsgcmVhZGxpbmUgYmFzZWQgc2hlbGwgKGl0 J3Mga25vd24gdG8gd29yayB3aXRoIFB5UHkpLiAgSWYgeW91cgogOzsgUHl0aG9uIGluc3RhbGxh dGlvbiBsYWNrcyByZWFkbGluZSAobGlrZSBDUHl0aG9uIGZvciBXaW5kb3dzKSwKIDs7IGluc3Rh bGxpbmcgcHlyZWFkbGluZSAoVVJMIGBodHRwczovL2lweXRob24ub3JnL3B5cmVhZGxpbmUuaHRt bCcpCiA7OyBzaG91bGQgc3VmZmljZS4gIFRvIHRyb3VibGVzaG9vdCB3aHkgeW91IGFyZSBub3Qg Z2V0dGluZyBhbnkKQEAgLTE0MSw2ICsxNDEsMTIgQEAgOzs7IENvbW1lbnRhcnk6CiA7OyBJZiB5 b3Ugc2VlIGFuIGVycm9yLCB0aGVuIHlvdSBuZWVkIHRvIGVpdGhlciBpbnN0YWxsIHB5cmVhZGxp bmUgb3IKIDs7IHNldHVwIGN1c3RvbSBjb2RlIHRoYXQgYXZvaWRzIHRoYXQgZGVwZW5kZW5jeS4K IAorOzsgQnkgZGVmYXVsdCwgdGhlICJuYXRpdmUiIGNvbXBsZXRpb24gdXNlcyB0aGUgYnVpbHQt aW4gcmxjb21wbGV0ZXIuCis7OyBUbyB1c2Ugb3RoZXIgcmVhZGxpbmUgY29tcGxldGVyIChlLmcu IEplZGkpIG9yIGEgY3VzdG9tIG9uZSwgeW91IGp1c3QKKzs7IG5lZWQgdG8gc2V0IGl0IGluIHRo ZSBQWVRIT05TVEFSVFVQIGZpbGUuICBZb3UgY2FuIHNldCBhbgorOzsgRW1hY3Mtc3BlY2lmaWMg Y29tcGxldGVyIGJ5IHRlc3RpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCis7OyBJTlNJREVf RU1BQ1MuCisKIDs7IFNoZWxsIHZpcnR1YWxlbnYgc3VwcG9ydDogVGhlIHNoZWxsIGFsc28gY29u dGFpbnMgc3VwcG9ydCBmb3IKIDs7IHZpcnR1YWxlbnZzIGFuZCBvdGhlciBzcGVjaWFsIGVudmly b25tZW50IG1vZGlmaWNhdGlvbnMgdGhhbmtzIHRvCiA7OyBgcHl0aG9uLXNoZWxsLXByb2Nlc3Mt ZW52aXJvbm1lbnQnIGFuZCBgcHl0aG9uLXNoZWxsLWV4ZWMtcGF0aCcuCkBAIC0zNjA0LDcgKzM2 MTAsNiBAQCAoZGVmaW5lLWRlcml2ZWQtbW9kZSBpbmZlcmlvci1weXRob24tbW9kZSBjb21pbnQt bW9kZSAiSW5mZXJpb3IgUHl0aG9uIgogYHB5dGhvbi1zaGVsbC1wcm9tcHQtYmxvY2stcmVnZXhw JywKIGBweXRob24tc2hlbGwtZm9udC1sb2NrLWVuYWJsZScsCiBgcHl0aG9uLXNoZWxsLWNvbXBs ZXRpb24tc2V0dXAtY29kZScsCi1gcHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tc3RyaW5nLWNvZGUn LAogYHB5dGhvbi1lbGRvYy1zZXR1cC1jb2RlJywKIGBweXRob24tZmZhcC1zZXR1cC1jb2RlJyBj YW4KIGN1c3RvbWl6ZSB0aGlzIG1vZGUgZm9yIGRpZmZlcmVudCBQeXRob24gaW50ZXJwcmV0ZXJz LgpAQCAtNDI0NCw4ICs0MjQ5LDkgQEAgKGRlZmN1c3RvbSBweXRob24tc2hlbGwtY29tcGxldGlv bi1zZXR1cC1jb2RlCiAgICAgY29tcGxldGlvbnMgPSBbXQogICAgIGNvbXBsZXRlciA9IE5vbmUK IAorICAgIGltcG9ydCBqc29uCiAgICAgdHJ5OgotICAgICAgICBpbXBvcnQgcmVhZGxpbmUKKyAg ICAgICAgaW1wb3J0IHJlYWRsaW5lLCByZQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlt cG9ydCBfX2J1aWx0aW5fXwpAQCAtNDI1NiwxNiArNDI2MiwyOSBAQCAoZGVmY3VzdG9tIHB5dGhv bi1zaGVsbC1jb21wbGV0aW9uLXNldHVwLWNvZGUKIAogICAgICAgICBpc19pcHl0aG9uID0gKCdf X0lQWVRIT05fXycgaW4gYnVpbHRpbnMgb3IKICAgICAgICAgICAgICAgICAgICAgICAnX19JUFlU SE9OX19hY3RpdmUnIGluIGJ1aWx0aW5zKQotICAgICAgICBzcGxpdHMgPSB0ZXh0LnNwbGl0KCkK LSAgICAgICAgaXNfbW9kdWxlID0gc3BsaXRzIGFuZCBzcGxpdHNbMF0gaW4gKCdmcm9tJywgJ2lt cG9ydCcpCi0KLSAgICAgICAgaWYgaXNfaXB5dGhvbiBhbmQgaXNfbW9kdWxlOgotICAgICAgICAg ICAgZnJvbSBJUHl0aG9uLmNvcmUuY29tcGxldGVybGliIGltcG9ydCBtb2R1bGVfY29tcGxldGlv bgotICAgICAgICAgICAgY29tcGxldGlvbnMgPSBtb2R1bGVfY29tcGxldGlvbih0ZXh0LnN0cmlw KCkpCi0gICAgICAgIGVsaWYgaXNfaXB5dGhvbiBhbmQgJ19fSVAnIGluIGJ1aWx0aW5zOgotICAg ICAgICAgICAgY29tcGxldGlvbnMgPSBfX0lQLmNvbXBsZXRlKHRleHQpCi0gICAgICAgIGVsaWYg aXNfaXB5dGhvbiBhbmQgJ2dldF9pcHl0aG9uJyBpbiBidWlsdGluczoKLSAgICAgICAgICAgIGNv bXBsZXRpb25zID0gZ2V0X2lweXRob24oKS5Db21wbGV0ZXIuYWxsX2NvbXBsZXRpb25zKHRleHQp CisKKyAgICAgICAgaWYgaXNfaXB5dGhvbiBhbmQgJ2dldF9pcHl0aG9uJyBpbiBidWlsdGluczoK KyAgICAgICAgICAgIGRlZiBmaWx0ZXJfYyhwcmVmaXgsIGMpOgorICAgICAgICAgICAgICAgIGlm IHJlLm1hdGNoKCdfKyhpP1swLTldKyk/JCcsIGMpOgorICAgICAgICAgICAgICAgICAgICByZXR1 cm4gRmFsc2UKKyAgICAgICAgICAgICAgICBlbGlmIGNbMF0gPT0gJyUnIGFuZCBub3QgcmUubWF0 Y2goJ1slYS16QS1aXSskJywgcHJlZml4KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZh bHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICAgICAgaW1wb3J0IElQ eXRob24KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBJUHl0aG9uLnZlcnNp b25faW5mb1swXSA+PSA2OgorICAgICAgICAgICAgICAgICAgICBmcm9tIElQeXRob24uY29yZS5j b21wbGV0ZXIgaW1wb3J0IHByb3Zpc2lvbmFsY29tcGxldGVyCisgICAgICAgICAgICAgICAgICAg IHdpdGggcHJvdmlzaW9uYWxjb21wbGV0ZXIoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv bXBsZXRpb25zID0gWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjLnRleHQsIGMuc3Rh cnQsIGMuZW5kLCBjLnR5cGUgb3IgJz8nLCBjLnNpZ25hdHVyZSBvciAnJ10KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gZ2V0X2lweXRob24oKS5Db21wbGV0ZXIuY29tcGxl dGlvbnModGV4dCwgbGVuKHRleHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBm aWx0ZXJfYyh0ZXh0LCBjLnRleHQpXQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg ICAgICAgICAgIHBhcnQsIG1hdGNoZXMgPSBnZXRfaXB5dGhvbigpLkNvbXBsZXRlci5jb21wbGV0 ZShsaW5lX2J1ZmZlcj10ZXh0KQorICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9ucyA9IFt0 ZXh0ICsgbVtsZW4ocGFydCk6XSBmb3IgbSBpbiBtYXRjaGVzIGlmIGZpbHRlcl9jKHRleHQsIG0p XQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxz ZToKICAgICAgICAgICAgICMgVHJ5IHRvIHJldXNlIGN1cnJlbnQgY29tcGxldGVyLgogICAgICAg ICAgICAgY29tcGxldGVyID0gcmVhZGxpbmUuZ2V0X2NvbXBsZXRlcigpCkBAIC00Mjg4LDcgKzQz MDcsNyBAQCAoZGVmY3VzdG9tIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLXNldHVwLWNvZGUKICAg ICBmaW5hbGx5OgogICAgICAgICBpZiBnZXRhdHRyKGNvbXBsZXRlciwgJ1BZVEhPTl9FTF9XUkFQ UEVEJywgRmFsc2UpOgogICAgICAgICAgICAgY29tcGxldGVyLnByaW50X21vZGUgPSBUcnVlCi0g ICAgcmV0dXJuIGNvbXBsZXRpb25zIgorICAgIHJldHVybiBqc29uLmR1bXBzKGNvbXBsZXRpb25z KSIKICAgIkNvZGUgdXNlZCB0byBzZXR1cCBjb21wbGV0aW9uIGluIGluZmVyaW9yIFB5dGhvbiBw cm9jZXNzZXMuIgogICA6dHlwZSAnc3RyaW5nKQogCkBAIC00MzI5LDYgKzQzNDgsMTAgQEAgKGRl ZmN1c3RvbSBweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRpdmUtdHJ5LW91dHB1dC10aW1lb3V0 IDEuMAogICA6dmVyc2lvbiAiMjUuMSIKICAgOnR5cGUgJ2Zsb2F0KQogCisoZGVmdmFyIHB5dGhv bi1zaGVsbC1yZWFkbGluZS1jb21wbGV0ZXItZGVsaW1zIG5pbAorICAiV29yZCBkZWxpbWl0ZXJz IHVzZWQgYnkgdGhlIHJlYWRsaW5lIGNvbXBsZXRlci4KK0l0IGlzIGF1dG9tYXRpY2FsbHkgc2V0 IGJ5IFB5dGhvbiBzaGVsbC4iKQorCiAoZGVmdmFyIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLW5h dGl2ZS1yZWRpcmVjdC1idWZmZXIKICAgIiAqUHl0aG9uIGNvbXBsZXRpb25zIHJlZGlyZWN0KiIK ICAgIkJ1ZmZlciB0byBiZSB1c2VkIHRvIHJlZGlyZWN0IG91dHB1dCBvZiByZWFkbGluZSBjb21t YW5kcy4iKQpAQCAtNDQ2Nyw2ICs0NDkwLDEwIEBAIChkZWZ1biBweXRob24tc2hlbGwtY29tcGxl dGlvbi1uYXRpdmUtc2V0dXAgKCkKIF9fUFlUSE9OX0VMX25hdGl2ZV9jb21wbGV0aW9uX3NldHVw KCkiIHByb2Nlc3MpKSkKICAgICAod2hlbiAoc3RyaW5nLW1hdGNoLXAgInB5dGhvblxcLmVsOiBu YXRpdmUgY29tcGxldGlvbiBzZXR1cCBsb2FkZWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAg IG91dHB1dCkKKyAgICAgIChzZXRxLWxvY2FsIHB5dGhvbi1zaGVsbC1yZWFkbGluZS1jb21wbGV0 ZXItZGVsaW1zCisgICAgICAgICAgICAgICAgICAoc3RyaW5nLXRyaW0tcmlnaHQKKyAgICAgICAg ICAgICAgICAgICAocHl0aG9uLXNoZWxsLXNlbmQtc3RyaW5nLW5vLW91dHB1dAorICAgICAgICAg ICAgICAgICAgICAiaW1wb3J0IHJlYWRsaW5lOyBwcmludChyZWFkbGluZS5nZXRfY29tcGxldGVy X2RlbGltcygpKSIpKSkKICAgICAgIChweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRpdmUtdHJ5 KSkpKQogCiAoZGVmdW4gcHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tbmF0aXZlLXR1cm4tb2ZmICgm b3B0aW9uYWwgbXNnKQpAQCAtNDUzNCw2ICs0NTYxLDggQEAgKGRlZnVuIHB5dGhvbi1zaGVsbC1j b21wbGV0aW9uLW5hdGl2ZS1nZXQtY29tcGxldGlvbnMgKHByb2Nlc3MgaW5wdXQpCiAgICAgKGxl dCogKChvcmlnaW5hbC1maWx0ZXItZm4gKHByb2Nlc3MtZmlsdGVyIHByb2Nlc3MpKQogICAgICAg ICAgICAocmVkaXJlY3QtYnVmZmVyIChnZXQtYnVmZmVyLWNyZWF0ZQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRpdmUtcmVkaXJlY3QtYnVm ZmVyKSkKKyAgICAgICAgICAgKHNlcCAoaWYgKHN0cmluZz0gcHl0aG9uLXNoZWxsLXJlYWRsaW5l LWNvbXBsZXRlci1kZWxpbXMgIiIpCisgICAgICAgICAgICAgICAgICAgICJbXG5ccl0rIiAiWyBc Zlx0XG5cclx2KCldKyIpKQogICAgICAgICAgICAodHJpZ2dlciAiXHQiKQogICAgICAgICAgICAo bmV3LWlucHV0IChjb25jYXQgaW5wdXQgdHJpZ2dlcikpCiAgICAgICAgICAgIChpbnB1dC1sZW5n dGgKQEAgLTQ1NzYsMjggKzQ2MDUsODAgQEAgKGRlZnVuIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9u LW5hdGl2ZS1nZXQtY29tcGxldGlvbnMgKHByb2Nlc3MgaW5wdXQpCiAgICAgICAgICAgICAgICAg ICAgICBwcm9jZXNzIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLW5hdGl2ZS1vdXRwdXQtdGltZW91 dAogICAgICAgICAgICAgICAgICAgICAgY29taW50LXJlZGlyZWN0LWZpbmlzaGVkLXJlZ2V4cCkK ICAgICAgICAgICAgICAgICAocmUtc2VhcmNoLWJhY2t3YXJkICIwX19kdW1teV9jb21wbGV0aW9u X18iIG5pbCB0KQotICAgICAgICAgICAgICAgIChjbC1yZW1vdmUtZHVwbGljYXRlcwotICAgICAg ICAgICAgICAgICAoc3BsaXQtc3RyaW5nCi0gICAgICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0 cmluZy1uby1wcm9wZXJ0aWVzCi0gICAgICAgICAgICAgICAgICAgKGxpbmUtYmVnaW5uaW5nLXBv c2l0aW9uKSAocG9pbnQtbWluKSkKLSAgICAgICAgICAgICAgICAgICJbIFxmXHRcblxyXHYoKV0r IiB0KQotICAgICAgICAgICAgICAgICA6dGVzdCAjJ3N0cmluZz0pKSkpCisgICAgICAgICAgICAg ICAgKGxldCAoKHN0ciAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSAocG9pbnQtbWluKSkp KQorICAgICAgICAgICAgICAgICAgOzsgVGhlIHJlYWRsaW5lIGNvbXBsZXRlciBpcyBhbGxvd2Vk IHRvIHJldHVybiBhIGxpc3QKKyAgICAgICAgICAgICAgICAgIDs7IG9mICh0ZXh0IHN0YXJ0IGVu ZCB0eXBlIHNpZ25hdHVyZSkgYXMgYSBKU09OCisgICAgICAgICAgICAgICAgICA7OyBzdHJpbmcu ICBTZWUgdGhlIHJldHVybiB2YWx1ZSBmb3IgSVB5dGhvbiBpbgorICAgICAgICAgICAgICAgICAg OzsgYHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLXNldHVwLWNvZGUnLgorICAgICAgICAgICAgICAg ICAgKGlmIChzdHJpbmc9ICJbIiAoc3Vic3RyaW5nIHN0ciAwIDEpKQorICAgICAgICAgICAgICAg ICAgICAgIChjb25kaXRpb24tY2FzZSBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHB5 dGhvbi0tcGFyc2UtanNvbi1hcnJheSBzdHIpCisgICAgICAgICAgICAgICAgICAgICAgICAodCAo Y2wtcmVtb3ZlLWR1cGxpY2F0ZXMgKHNwbGl0LXN0cmluZyBzdHIgc2VwIHQpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnRlc3QgIydzdHJpbmc9KSkp CisgICAgICAgICAgICAgICAgICAgIChjbC1yZW1vdmUtZHVwbGljYXRlcyAoc3BsaXQtc3RyaW5n IHN0ciBzZXAgdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDp0 ZXN0ICMnc3RyaW5nPSkpKSkpKQogICAgICAgICAoc2V0LXByb2Nlc3MtZmlsdGVyIHByb2Nlc3Mg b3JpZ2luYWwtZmlsdGVyLWZuKSkpKSkKIAogKGRlZnVuIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9u LWdldC1jb21wbGV0aW9ucyAocHJvY2VzcyBpbnB1dCkKICAgIkdldCBjb21wbGV0aW9ucyBvZiBJ TlBVVCB1c2luZyBQUk9DRVNTLiIKICAgKHdpdGgtY3VycmVudC1idWZmZXIgKHByb2Nlc3MtYnVm ZmVyIHByb2Nlc3MpCi0gICAgKGxldCAoKGNvbXBsZXRpb25zCi0gICAgICAgICAgIChweXRob24t dXRpbC1zdHJpcC1zdHJpbmcKLSAgICAgICAgICAgIChweXRob24tc2hlbGwtc2VuZC1zdHJpbmct bm8tb3V0cHV0Ci0gICAgICAgICAgICAgKGZvcm1hdAotICAgICAgICAgICAgICAiJXNcbnByaW50 KCc7Jy5qb2luKF9fUFlUSE9OX0VMX2dldF9jb21wbGV0aW9ucyglcykpKSIKKyAgICAocHl0aG9u LS1wYXJzZS1qc29uLWFycmF5CisgICAgIChweXRob24tc2hlbGwtc2VuZC1zdHJpbmctbm8tb3V0 cHV0CisgICAgICAoZm9ybWF0ICIlc1xucHJpbnQoX19QWVRIT05fRUxfZ2V0X2NvbXBsZXRpb25z KCVzKSkiCiAgICAgICAgICAgICAgIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLXNldHVwLWNvZGUK ICAgICAgICAgICAgICAgKHB5dGhvbi1zaGVsbC0tZW5jb2RlLXN0cmluZyBpbnB1dCkpCi0gICAg ICAgICAgICAgcHJvY2VzcykpKSkKLSAgICAgICh3aGVuICg+IChsZW5ndGggY29tcGxldGlvbnMp IDIpCi0gICAgICAgIChzcGxpdC1zdHJpbmcgY29tcGxldGlvbnMKLSAgICAgICAgICAgICAgICAg ICAgICAiXidcXHxeXCJcXHw7XFx8JyRcXHxcIiQiIHQpKSkpKQorICAgICAgcHJvY2VzcykpKSkK KworKGRlZnVuIHB5dGhvbi1zaGVsbC0tZ2V0LW11bHRpbGluZS1pbnB1dCAoKQorICAiUmV0dXJu IGxpbmVzIGF0IGEgbXVsdGktbGluZSBpbnB1dCBpbiBQeXRob24gc2hlbGwuIgorICAoc2F2ZS1l eGN1cnNpb24KKyAgICAobGV0ICgocCAocG9pbnQpKSBsaW5lcykKKyAgICAgICh3aGVuIChwcm9n bgorICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAgICAgIChsb29r aW5nLWJhY2sgcHl0aG9uLXNoZWxsLXByb21wdC1ibG9jay1yZWdleHAgKHBvcy1ib2wpKSkKKyAg ICAgICAgKHB1c2ggKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAocG9pbnQpIHApIGxp bmVzKQorICAgICAgICAod2hpbGUgKHByb2duIChjb21pbnQtcHJldmlvdXMtcHJvbXB0IDEpCisg ICAgICAgICAgICAgICAgICAgICAgKGxvb2tpbmctYmFjayBweXRob24tc2hlbGwtcHJvbXB0LWJs b2NrLXJlZ2V4cCAocG9zLWJvbCkpKQorICAgICAgICAgIChwdXNoIChidWZmZXItc3Vic3RyaW5n LW5vLXByb3BlcnRpZXMgKHBvaW50KSAocG9zLWVvbCkpIGxpbmVzKSkKKyAgICAgICAgKHB1c2gg KGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAocG9pbnQpIChwb3MtZW9sKSkgbGluZXMp KQorICAgICAgbGluZXMpKSkKKworKGRlZnVuIHB5dGhvbi1zaGVsbC0tZXh0cmEtY29tcGxldGlv bi1jb250ZXh0ICgpCisgICJHZXQgZXh0cmEgY29tcGxldGlvbiBjb250ZXh0IG9mIGN1cnJlbnQg aW5wdXQgaW4gUHl0aG9uIHNoZWxsLiIKKyAgKGxldCAoKGxpbmVzIChweXRob24tc2hlbGwtLWdl dC1tdWx0aWxpbmUtaW5wdXQpKQorICAgICAgICAocHl0aG9uLWluZGVudC1ndWVzcy1pbmRlbnQt b2Zmc2V0IG5pbCkpCisgICAgKHdoZW4gKG5vdCAoemVyb3AgKGxlbmd0aCBsaW5lcykpKQorICAg ICAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAgICAgKGRlbGF5LW1vZGUtaG9va3MKKyAgICAgICAg ICAoaW5zZXJ0IChzdHJpbmctam9pbiBsaW5lcyAiXG4iKSkKKyAgICAgICAgICAocHl0aG9uLW1v ZGUpCisgICAgICAgICAgKHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLWV4dHJhLWNvbnRleHQpKSkp KSkKKworKGRlZnVuIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLWV4dHJhLWNvbnRleHQgKCZvcHRp b25hbCBwb3MpCisgICJHZXQgZXh0cmEgY29tcGxldGlvbiBjb250ZXh0IGF0IHBvc2l0aW9uIFBP UyBpbiBQeXRob24gYnVmZmVyLgorSWYgb3B0aW9uYWwgYXJndW1lbnQgUE9TIGlzIG5pbCwgdXNl IGN1cnJlbnQgcG9zaXRpb24uCisKK1JlYWRsaW5lIGNvbXBsZXRlcnMgY291bGQgdXNlIGN1cnJl bnQgbGluZSBhcyB0aGUgY29tcGxldGlvbgorY29udGV4dCwgd2hpY2ggbWF5IGJlIGluc3VmZmlj aWVudC4gIEluIHRoaXMgZnVuY3Rpb24sIGV4dHJhCitjb250ZXh0IChlLmcuIG11bHRpLWxpbmUg ZnVuY3Rpb24gY2FsbCkgaXMgZm91bmQgYW5kIHJlZm9ybWF0dGVkCithcyBvbmUgbGluZSwgd2hp Y2ggaXMgcmVxdWlyZWQgYnkgbmF0aXZlIGNvbXBsZXRpb24uIgorICAobGV0IChib3VuZCBwKQor ICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgKGFuZCBwb3MgKGdvdG8tY2hhciBwb3MpKQorICAg ICAgKHNldHEgYm91bmQgKHBvcy1ib2wpKQorICAgICAgKHB5dGhvbi1uYXYtdXAtbGlzdCAtMSkK KyAgICAgICh3aGVuIChhbmQgKDwgKHBvaW50KSBib3VuZCkKKyAgICAgICAgICAgICAgICAgKG9y CisgICAgICAgICAgICAgICAgICAobG9va2luZy1iYWNrCisgICAgICAgICAgICAgICAgICAgKHB5 dGhvbi1yeCAoZ3JvdXAgKCsgKG9yICIuIiBzeW1ib2wtbmFtZSkpKSkgKHBvcy1ib2wpIHQpCisg ICAgICAgICAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAgICAgICAgICAgKGZvcndhcmQtbGlu ZSAwKQorICAgICAgICAgICAgICAgICAgICAobG9va2luZy1hdCAiXlsgXHRdKlxcKGZyb20gXFwp IikpKSkKKyAgICAgICAgKHNldHEgcCAobWF0Y2gtYmVnaW5uaW5nIDEpKSkpCisgICAgKHdoZW4g cAorICAgICAgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZworICAgICAgICJcblsgXHRdKiIgIiIg KGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBwICgxLSBib3VuZCkpKSkpKQogCiAoZGVm dmFyLWxvY2FsIHB5dGhvbi1zaGVsbC0tY2FwZi1jYWNoZSBuaWwKICAgIlZhcmlhYmxlIHRvIHN0 b3JlIGNhY2hlZCBjb21wbGV0aW9ucyBhbmQgaW52YWxpZGF0aW9uIGtleXMuIikKQEAgLTQ2MTIs MjEgKzQ2OTMsMjYgQEAgKGRlZnVuIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLWF0LXBvaW50ICgm b3B0aW9uYWwgcHJvY2VzcykKICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBXb3JraW5nIG9u IGEgc2hlbGwgYnVmZmVyOiB1c2UgcHJvbXB0IGVuZC4KICAgICAgICAgICAgICAgICAgICAgICAg ICAoY2RyIChweXRob24tdXRpbC1jb21pbnQtbGFzdC1wcm9tcHQpKQogICAgICAgICAgICAgICAg ICAgICAgICAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pKSkKLSAgICAgICAgIChpbXBvcnQtc3Rh dGVtZW50Ci0gICAgICAgICAgKHdoZW4gKHN0cmluZy1tYXRjaC1wCi0gICAgICAgICAgICAgICAg IChyeCAoKiBzcGFjZSkgd29yZC1zdGFydCAob3IgImZyb20iICJpbXBvcnQiKSB3b3JkLWVuZCBz cGFjZSkKLSAgICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBs aW5lLXN0YXJ0IChwb2ludCkpKQotICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJv cGVydGllcyBsaW5lLXN0YXJ0IChwb2ludCkpKSkKKyAgICAgICAgIChuby1kZWxpbXMKKyAgICAg ICAgICAoYW5kIChub3QgKGlmIGlzLXNoZWxsLWJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICAg ICAgKGVxICdmb250LWxvY2stY29tbWVudC1mYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGdldC10ZXh0LXByb3BlcnR5ICgxLSAocG9pbnQpKSAnZmFjZSkpCisgICAgICAgICAgICAg ICAgICAgICAgKHB5dGhvbi1zeW50YXgtY29udGV4dCAnY29tbWVudCkpKQorICAgICAgICAgICAg ICAgKHdpdGgtY3VycmVudC1idWZmZXIgKHByb2Nlc3MtYnVmZmVyIHByb2Nlc3MpCisgICAgICAg ICAgICAgICAgIChpZiBweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRpdmUtZW5hYmxlCisgICAg ICAgICAgICAgICAgICAgICAoc3RyaW5nPSBweXRob24tc2hlbGwtcmVhZGxpbmUtY29tcGxldGVy LWRlbGltcyAiIikKKyAgICAgICAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoLXAgImlweXRob25b MjNdP1xcJyIgcHl0aG9uLXNoZWxsLWludGVycHJldGVyKSkpKSkKICAgICAgICAgIChzdGFydAog ICAgICAgICAgIChpZiAoPCAocG9pbnQpIGxpbmUtc3RhcnQpCiAgICAgICAgICAgICAgIChwb2lu dCkKICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgotICAgICAgICAgICAgICAoaWYgKG5vdCAo cmUtc2VhcmNoLWJhY2t3YXJkCi0gICAgICAgICAgICAgICAgICAgICAgICAocHl0aG9uLXJ4Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHdoaXRlc3BhY2Ugb3Blbi1wYXJlbiBjbG9zZS1w YXJlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmctZGVsaW1pdGVyIHNpbXBs ZS1vcGVyYXRvcikpCi0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lLXN0YXJ0Ci0gICAgICAg ICAgICAgICAgICAgICAgICB0IDEpKQorICAgICAgICAgICAgICAoaWYgKG9yIG5vLWRlbGltcwor ICAgICAgICAgICAgICAgICAgICAgIChub3QgKHJlLXNlYXJjaC1iYWNrd2FyZAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChweXRob24tcngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG9yIHdoaXRlc3BhY2Ugb3Blbi1wYXJlbiBjbG9zZS1wYXJlbgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RyaW5nLWRlbGltaXRlciBzaW1wbGUtb3BlcmF0b3IpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUtc3RhcnQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0IDEpKSkKICAgICAgICAgICAgICAgICAgIGxpbmUtc3RhcnQKICAgICAgICAgICAg ICAgICAoZm9yd2FyZC1jaGFyIChsZW5ndGggKG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIDAp KSkKICAgICAgICAgICAgICAgICAocG9pbnQpKSkpKQpAQCAtNDY2NiwxOCArNDc1Miw1NiBAQCAo ZGVmdW4gcHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tYXQtcG9pbnQgKCZvcHRpb25hbCBwcm9jZXNz KQogICAgICAgICAgICAgICAgICAgKHQgIydweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRpdmUt Z2V0LWNvbXBsZXRpb25zKSkpKQogICAgICAgICAgKHByZXYtcHJvbXB0IChjYXIgcHl0aG9uLXNo ZWxsLS1jYXBmLWNhY2hlKSkKICAgICAgICAgIChyZSAob3IgKGNhZHIgcHl0aG9uLXNoZWxsLS1j YXBmLWNhY2hlKSByZWdleHAtdW5tYXRjaGFibGUpKQotICAgICAgICAgKHByZWZpeCAoYnVmZmVy LXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIHN0YXJ0IGVuZCkpKQorICAgICAgICAgKHByZWZpeCAo YnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIHN0YXJ0IGVuZCkpCisgICAgICAgICAocHJl Zml4LW9mZnNldCAwKQorICAgICAgICAgKGV4dHJhLWNvbnRleHQgKHdoZW4gbm8tZGVsaW1zCisg ICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBpcy1zaGVsbC1idWZmZXIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChweXRob24tc2hlbGwtLWV4dHJhLWNvbXBsZXRpb24tY29udGV4 dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHl0aG9uLXNoZWxsLWNvbXBsZXRpb24t ZXh0cmEtY29udGV4dCkpKSkKKyAgICAgICAgIChleHRyYS1vZmZzZXQgKGxlbmd0aCBleHRyYS1j b250ZXh0KSkpCisgICAgKHVubGVzcyAoemVyb3AgZXh0cmEtb2Zmc2V0KQorICAgICAgKHNldHEg cHJlZml4IChjb25jYXQgZXh0cmEtY29udGV4dCBwcmVmaXgpKSkKICAgICA7OyBUbyBpbnZhbGlk YXRlIHRoZSBjYWNoZSwgd2UgY2hlY2sgaWYgdGhlIHByb21wdCBwb3NpdGlvbiBvciB0aGUKICAg ICA7OyBjb21wbGV0aW9uIHByZWZpeCBjaGFuZ2VkLgogICAgICh1bmxlc3MgKGFuZCAoZXF1YWwg cHJldi1wcm9tcHQgKGNhciBwcm9tcHQtYm91bmRhcmllcykpCi0gICAgICAgICAgICAgICAgIChz dHJpbmctbWF0Y2ggcmUgcHJlZml4KSkKKyAgICAgICAgICAgICAgICAgKHN0cmluZy1tYXRjaCBy ZSBwcmVmaXgpCisgICAgICAgICAgICAgICAgIChzZXRxIHByZWZpeC1vZmZzZXQgKC0gKGxlbmd0 aCBwcmVmaXgpIChtYXRjaC1lbmQgMSkpKSkKICAgICAgIChzZXRxIHB5dGhvbi1zaGVsbC0tY2Fw Zi1jYWNoZQogICAgICAgICAgICAgYCgsKGNhciBwcm9tcHQtYm91bmRhcmllcykKICAgICAgICAg ICAgICAgLChpZiAoc3RyaW5nLWVtcHR5LXAgcHJlZml4KQogICAgICAgICAgICAgICAgICAgIHJl Z2V4cC11bm1hdGNoYWJsZQotICAgICAgICAgICAgICAgICAoY29uY2F0ICJcXGAiIChyZWdleHAt cXVvdGUgcHJlZml4KSAiXFwoPzpcXHN3XFx8XFxzX1xcKSpcXCciKSkKLSAgICAgICAgICAgICAg LEAoZnVuY2FsbCBjb21wbGV0aW9uLWZuIHByb2Nlc3MgKG9yIGltcG9ydC1zdGF0ZW1lbnQgcHJl Zml4KSkpKSkKLSAgICAobGlzdCBzdGFydCBlbmQgKGNkZHIgcHl0aG9uLXNoZWxsLS1jYXBmLWNh Y2hlKSkpKQorICAgICAgICAgICAgICAgICAoY29uY2F0ICJcXGBcXCgiIChyZWdleHAtcXVvdGUg cHJlZml4KSAiXFwpXFwoPzpcXHN3XFx8XFxzX1xcKSpcXCciKSkKKyAgICAgICAgICAgICAgLEAo ZnVuY2FsbCBjb21wbGV0aW9uLWZuIHByb2Nlc3MgcHJlZml4KSkpKQorICAgIChsZXQgKChjYW5k cyAoY2RkciBweXRob24tc2hlbGwtLWNhcGYtY2FjaGUpKSkKKyAgICAgIChjb25kCisgICAgICAg KChzdHJpbmdwIChjYXIgY2FuZHMpKQorICAgICAgICAoaWYgbm8tZGVsaW1zCisgICAgICAgICAg ICA7OyBSZWR1Y2UgY29tcGxldGlvbiBjYW5kaWRhdGVzIGR1ZSB0byBsb25nIHByZWZpeC4KKyAg ICAgICAgICAgIChpZi1sZXQgKChMcCAobGVuZ3RoIHByZWZpeCkpCisgICAgICAgICAgICAgICAg ICAgICAoKHN0cmluZy1tYXRjaCAiXFwoXFxzd1xcfFxcc19cXCkrXFwnIiBwcmVmaXgpKQorICAg ICAgICAgICAgICAgICAgICAgKEwgKG1hdGNoLWJlZ2lubmluZyAwKSkpCisgICAgICAgICAgICAg ICAgOzsgSWYgZXh0cmEtb2Zmc2V0IGlzIG5vdCB6ZXJvOgorICAgICAgICAgICAgICAgIDs7ICAg ICAgICAgICAgICAgICAgc3RhcnQgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIDs7 IG8tLS0tLS0tLS0tLS0tLS0tLS1vLS0tLS0tLS0tby0tLS0tLS1vCisgICAgICAgICAgICAgICAg OzsgfDwtIGV4dHJhLW9mZnNldCAtPnwKKyAgICAgICAgICAgICAgICA7OyB8PC0tLS0tLS0tLS0t IEwgLS0tLS0tLS0tLS0tPnwKKyAgICAgICAgICAgICAgICA7OyAgICAgICAgICAgICAgICAgICAg ICAgICAgbmV3LXN0YXJ0CisgICAgICAgICAgICAgICAgKGxpc3QgKCsgc3RhcnQgTCAoLSBleHRy YS1vZmZzZXQpKSBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAobWFwY2FyIChsYW1iZGEgKHMp IChzdWJzdHJpbmcgcyBMKSkgY2FuZHMpKQorICAgICAgICAgICAgICAobGlzdCBlbmQgZW5kICht YXBjYXIgKGxhbWJkYSAocykgKHN1YnN0cmluZyBzIExwKSkgY2FuZHMpKSkKKyAgICAgICAgICAo bGlzdCBzdGFydCBlbmQgY2FuZHMpKSkKKyAgICAgICA7OyBweXRob24tc2hlbGwtY29tcGxldGlv bigtbmF0aXZlKS1nZXQtY29tcGxldGlvbnMgbWF5IHByb2R1Y2UgYQorICAgICAgIDs7IGxpc3Qg b2YgKHRleHQgc3RhcnQgZW5kIHR5cGUgc2lnbmF0dXJlKSBmb3IgY29tcGxldGlvbi4KKyAgICAg ICAoKGNvbnNwIChjYXIgY2FuZHMpKQorICAgICAgICAobGlzdCAoKyBzdGFydCAobnRoIDEgKGNh ciBjYW5kcykpICgtIGV4dHJhLW9mZnNldCkpCisgICAgICAgICAgICAgIDs7IENhbmRpZGF0ZXMg bWF5IGJlIGNhY2hlZCwgc28gdGhlIGVuZCBwb3NpdGlvbiBzaG91bGQKKyAgICAgICAgICAgICAg OzsgYmUgYWRqdXN0ZWQgYWNjb3JkaW5nIHRvIGN1cnJlbnQgY29tcGxldGlvbiBwcmVmaXguCisg ICAgICAgICAgICAgICgrIHN0YXJ0IChudGggMiAoY2FyIGNhbmRzKSkgKC0gZXh0cmEtb2Zmc2V0 KSBwcmVmaXgtb2Zmc2V0KQorICAgICAgICAgICAgICBjYW5kcworICAgICAgICAgICAgICA6YW5u b3RhdGlvbi1mdW5jdGlvbgorICAgICAgICAgICAgICAobGFtYmRhIChjKSAoY29uY2F0ICIgIiAo bnRoIDMgKGFzc29jIGMgY2FuZHMpKSkpCisgICAgICAgICAgICAgIDpjb21wYW55LWRvY3NpZwor ICAgICAgICAgICAgICAobGFtYmRhIChjKSAobnRoIDQgKGFzc29jIGMgY2FuZHMpKSkpKSkpKSkK IAogKGRlZmluZS1vYnNvbGV0ZS1mdW5jdGlvbi1hbGlhcwogICAncHl0aG9uLXNoZWxsLWNvbXBs ZXRpb24tY29tcGxldGUtYXQtcG9pbnQKZGlmZiAtLWdpdCBhL3Rlc3QvbGlzcC9wcm9nbW9kZXMv cHl0aG9uLXRlc3RzLmVsIGIvdGVzdC9saXNwL3Byb2dtb2Rlcy9weXRob24tdGVzdHMuZWwKaW5k ZXggNTk5NTdmZjA3MTIuLmFmNmMxOTliNWJkIDEwMDY0NAotLS0gYS90ZXN0L2xpc3AvcHJvZ21v ZGVzL3B5dGhvbi10ZXN0cy5lbAorKysgYi90ZXN0L2xpc3AvcHJvZ21vZGVzL3B5dGhvbi10ZXN0 cy5lbApAQCAtNDc5OSw2ICs0Nzk5LDk4IEBAIChlcnQtZGVmdGVzdCBweXRob24tc2hlbGwtY29t cGxldGlvbi1hdC1wb2ludC1uYXRpdmUtMSAoKQogICAgICAoZW5kLW9mLWxpbmUgMCkKICAgICAg KHNob3VsZC1ub3QgKG50aCAyIChweXRob24tc2hlbGwtY29tcGxldGlvbi1hdC1wb2ludCkpKSkp KQogCisoZGVmdW4gcHl0aG9uLXRlc3RzLS1jb21wbGV0aW9uLW1vZHVsZSAoKQorICAiQ2hlY2sg aWYgbW9kdWxlcyBjYW4gYmUgY29tcGxldGVkIGluIFB5dGhvbiBzaGVsbC4iCisgIChpbnNlcnQg ImltcG9ydCBkYXRldCIpCisgIChjb21wbGV0aW9uLWF0LXBvaW50KQorICAoYmVnaW5uaW5nLW9m LWxpbmUpCisgIChzaG91bGQgKGxvb2tpbmctYXQtcCAiaW1wb3J0IGRhdGV0aW1lIikpCisgIChr aWxsLWxpbmUpCisgIChpbnNlcnQgImZyb20gZGF0ZXQiKQorICAoY29tcGxldGlvbi1hdC1wb2lu dCkKKyAgKGJlZ2lubmluZy1vZi1saW5lKQorICAoc2hvdWxkIChsb29raW5nLWF0LXAgImZyb20g ZGF0ZXRpbWUiKSkKKyAgKGVuZC1vZi1saW5lKQorICAoaW5zZXJ0ICIgaW1wb3J0IHRpbWVkIikK KyAgKGNvbXBsZXRpb24tYXQtcG9pbnQpCisgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgKHNob3Vs ZCAobG9va2luZy1hdC1wICJmcm9tIGRhdGV0aW1lIGltcG9ydCB0aW1lZGVsdGEiKSkKKyAgKGtp bGwtbGluZSkpCisKKyhkZWZ1biBweXRob24tdGVzdHMtLWNvbXBsZXRpb24tcGFyYW1ldGVycyAo KQorICAiQ2hlY2sgaWYgcGFyYW1ldGVycyBjYW4gYmUgY29tcGxldGVkIGluIFB5dGhvbiBzaGVs bC4iCisgIChpbnNlcnQgImltcG9ydCByZSIpCisgIChjb21pbnQtc2VuZC1pbnB1dCkKKyAgKHB5 dGhvbi10ZXN0cy1zaGVsbC13YWl0LWZvci1wcm9tcHQpCisgIChpbnNlcnQgInJlLnNwbGl0KCdi JywgJ2FiYycsIG1heHMiKQorICAoY29tcGxldGlvbi1hdC1wb2ludCkKKyAgKHNob3VsZCAoc3Ry aW5nPSAicmUuc3BsaXQoJ2InLCAnYWJjJywgbWF4c3BsaXQ9IgorICAgICAgICAgICAgICAgICAg IChidWZmZXItc3Vic3RyaW5nIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikgKHBvaW50KSkpKQor ICAoaW5zZXJ0ICIwLCAiKQorICAoc2hvdWxkIChweXRob24tc2hlbGwtY29tcGxldGlvbi1hdC1w b2ludCkpCisgIDs7IFRlc3QgaWYgY2FjaGUgaXMgdXNlZC4KKyAgKGNsLWxldGYgKCgoc3ltYm9s LWZ1bmN0aW9uICdweXRob24tc2hlbGwtY29tcGxldGlvbi1nZXQtY29tcGxldGlvbnMpCisgICAg ICAgICAgICAgJ2lnbm9yZSkKKyAgICAgICAgICAgICgoc3ltYm9sLWZ1bmN0aW9uICdweXRob24t c2hlbGwtY29tcGxldGlvbi1uYXRpdmUtZ2V0LWNvbXBsZXRpb25zKQorICAgICAgICAgICAgICdp Z25vcmUpKQorICAgIChpbnNlcnQgImZsYSIpCisgICAgKGNvbXBsZXRpb24tYXQtcG9pbnQpCisg ICAgKHNob3VsZCAoc3RyaW5nPSAicmUuc3BsaXQoJ2InLCAnYWJjJywgbWF4c3BsaXQ9MCwgZmxh Z3M9IgorICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmcgKGxpbmUtYmVnaW5u aW5nLXBvc2l0aW9uKSAocG9pbnQpKSkpKQorICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgIChraWxs LWxpbmUpKQorCisoZGVmdW4gcHl0aG9uLXRlc3RzLS1jb21wbGV0aW9uLWV4dHJhLWNvbnRleHQg KCkKKyAgIkNoZWNrIGlmIGV4dHJhIGNvbnRleHQgaXMgdXNlZCBmb3IgY29tcGxldGlvbi4iCisg IChpbnNlcnQgInJlLnNwbGl0KCdiJywgJ2FiYycsIikKKyAgKGNvbWludC1zZW5kLWlucHV0KQor ICAocHl0aG9uLXRlc3RzLXNoZWxsLXdhaXQtZm9yLXByb21wdCkKKyAgKGluc2VydCAibWF4cyIp CisgIChjb21wbGV0aW9uLWF0LXBvaW50KQorICAoc2hvdWxkIChzdHJpbmc9ICJtYXhzcGxpdD0i CisgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmcgKGxpbmUtYmVnaW5uaW5nLXBv c2l0aW9uKSAocG9pbnQpKSkpCisgIChpbnNlcnQgIjApIikKKyAgKGNvbWludC1zZW5kLWlucHV0 KQorICAocHl0aG9uLXRlc3RzLXNoZWxsLXdhaXQtZm9yLXByb21wdCkKKyAgKGluc2VydCAiZnJv bSByZSBpbXBvcnQgKCIpCisgIChjb21pbnQtc2VuZC1pbnB1dCkKKyAgKHB5dGhvbi10ZXN0cy1z aGVsbC13YWl0LWZvci1wcm9tcHQpCisgIChpbnNlcnQgIklHTiIpCisgIChjb21wbGV0aW9uLWF0 LXBvaW50KQorICAoc2hvdWxkIChzdHJpbmc9ICJJR05PUkVDQVNFIgorICAgICAgICAgICAgICAg ICAgIChidWZmZXItc3Vic3RyaW5nIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikgKHBvaW50KSkp KSkKKworKGVydC1kZWZ0ZXN0IHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLWF0LXBvaW50LWplZGkt Y29tcGxldGVyICgpCisgICJDaGVjayBpZiBQeXRob24gc2hlbGwgY29tcGxldGlvbiB3b3JrcyB3 aGVuIEplZGkgY29tcGxldGVyIGlzIHVzZWQuIgorICAoc2tpcC11bmxlc3MgKGV4ZWN1dGFibGUt ZmluZCBweXRob24tdGVzdHMtc2hlbGwtaW50ZXJwcmV0ZXIpKQorICAocHl0aG9uLXRlc3RzLXdp dGgtdGVtcC1idWZmZXItd2l0aC1zaGVsbAorICAgIiIKKyAgIChweXRob24tc2hlbGwtd2l0aC1z aGVsbC1idWZmZXIKKyAgICAgKHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLW5hdGl2ZS10dXJuLW9u KQorICAgICAoc2tpcC11bmxlc3MgKHN0cmluZz0gcHl0aG9uLXNoZWxsLXJlYWRsaW5lLWNvbXBs ZXRlci1kZWxpbXMgIiIpKQorICAgICAocHl0aG9uLXRlc3RzLS1jb21wbGV0aW9uLW1vZHVsZSkK KyAgICAgKHB5dGhvbi10ZXN0cy0tY29tcGxldGlvbi1wYXJhbWV0ZXJzKQorICAgICAocHl0aG9u LXRlc3RzLS1jb21wbGV0aW9uLWV4dHJhLWNvbnRleHQpKSkpCisKKyhlcnQtZGVmdGVzdCBweXRo b24tc2hlbGwtY29tcGxldGlvbi1hdC1wb2ludC1pcHl0aG9uICgpCisgICJDaGVjayBpZiBQeXRo b24gc2hlbGwgY29tcGxldGlvbiB3b3JrcyBmb3IgSVB5dGhvbi4iCisgIChsZXQgKChweXRob24t c2hlbGwtaW50ZXJwcmV0ZXIgImlweXRob24iKQorICAgICAgICAocHl0aG9uLXNoZWxsLWludGVy cHJldGVyLWFyZ3MgIi1pIC0tc2ltcGxlLXByb21wdCIpKQorICAgIChza2lwLXVubGVzcworICAg ICAoYW5kCisgICAgICAoZXhlY3V0YWJsZS1maW5kIHB5dGhvbi1zaGVsbC1pbnRlcnByZXRlcikK KyAgICAgIChlcWwgKGNhbGwtcHJvY2VzcyBweXRob24tc2hlbGwtaW50ZXJwcmV0ZXIgbmlsIG5p bCBuaWwgIi0tdmVyc2lvbiIpIDApKSkKKyAgICAocHl0aG9uLXRlc3RzLXdpdGgtdGVtcC1idWZm ZXItd2l0aC1zaGVsbAorICAgICAiIgorICAgICAocHl0aG9uLXNoZWxsLXdpdGgtc2hlbGwtYnVm ZmVyCisgICAgICAgKHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLW5hdGl2ZS10dXJuLW9mZikKKyAg ICAgICAocHl0aG9uLXRlc3RzLS1jb21wbGV0aW9uLW1vZHVsZSkKKyAgICAgICAocHl0aG9uLXRl c3RzLS1jb21wbGV0aW9uLXBhcmFtZXRlcnMpCisgICAgICAgKHB5dGhvbi1zaGVsbC1jb21wbGV0 aW9uLW5hdGl2ZS10dXJuLW9uKQorICAgICAgIChza2lwLXVubGVzcyAoc3RyaW5nPSBweXRob24t c2hlbGwtcmVhZGxpbmUtY29tcGxldGVyLWRlbGltcyAiIikpCisgICAgICAgKHB5dGhvbi10ZXN0 cy0tY29tcGxldGlvbi1tb2R1bGUpCisgICAgICAgKHB5dGhvbi10ZXN0cy0tY29tcGxldGlvbi1w YXJhbWV0ZXJzKQorICAgICAgIChweXRob24tdGVzdHMtLWNvbXBsZXRpb24tZXh0cmEtY29udGV4 dCkpKSkpCiAKIAwKIDs7OyBQREIgVHJhY2sgaW50ZWdyYXRpb24KLS0gCjIuMzkuMgoK --0000000000003f86740610ac758f--