From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gproxy4-pub.mail.unifiedlayer.com (gproxy4-pub.mail.unifiedlayer.com [69.89.23.142]) by sourceware.org (Postfix) with ESMTPS id 1EFF33949096 for ; Mon, 9 May 2022 14:05:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1EFF33949096 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=mad-scientist.net Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mad-scientist.net Received: from cmgw13.mail.unifiedlayer.com (unknown [10.0.90.128]) by progateway6.mail.pro1.eigbox.com (Postfix) with ESMTP id 0B24210048461 for ; Mon, 9 May 2022 14:05:52 +0000 (UTC) Received: from box5922.bluehost.com ([162.241.30.80]) by cmsmtp with ESMTP id o41HnejprY8yco41HnDVE2; Mon, 09 May 2022 14:05:51 +0000 X-Authority-Reason: nr=8 X-Authority-Analysis: v=2.4 cv=TZJTCTch c=1 sm=1 tr=0 ts=62791fc0 a=u+82WREdhvUKZ7QTvcqjvQ==:117 a=u+82WREdhvUKZ7QTvcqjvQ==:17 a=dLZJa+xiwSxG16/P+YVxDGlgEgI=:19 a=oZkIemNP1mAA:10:nop_rcvd_month_year a=3EOfIcITIxQA:10:endurance_base64_authed_username_1 a=NEAV23lmAAAA:8 a=ABi-5JHNjoSFtSoDl34A:9 a=QEXdDO2ut3YA:10:nop_charset_2 a=mDV3o1hIAAAA:8 a=-EhVR3drHLMJBaSM8TcA:9 a=5E2Q1Ldc8e8A:10:nop_attachment_filename_extension_2 a=Lj0cF4JkY73opWwok9AA:9 a=De_Ol2h6w80A:10:nop_attachment_filename_extension_2 a=_FVE-zBwftR9WsbkzFJk:22 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mad-scientist.us; s=default; h=MIME-Version:Content-Type:References: In-Reply-To:Date:Cc:To:Reply-To:From:Subject:Message-ID:Sender: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=uQHzTKhKvJ0dQ3ci0+E5nZKsmKaU8qFXVnmrlxIOYbY=; b=CGG0nHA1IWYNGPAm4NmPEOIjjZ zjIP2yg/wL/zdojohuTzdbh6MLidOr7otCqXgtWIyqYXnZFmDEOTjY3b3wmiRrimVSkbV6cXFZZLx EgHG/tjg+QjXWnZn50xR0iV/t; Received: from [160.231.0.90] (port=50595 helo=llin-psh13-dsa.dsone.3ds.com) by box5922.bluehost.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1no41H-000mzH-30; Mon, 09 May 2022 08:05:51 -0600 Message-ID: <597302fd641a990a594c836ad9ef9852ea9b231e.camel@mad-scientist.net> Subject: Re: Help using the GDB C++ STL pretty-printers / xmethods From: Paul Smith Reply-To: paul@mad-scientist.net To: Jonathan Wakely Cc: gcc-help Date: Mon, 09 May 2022 10:05:49 -0400 In-Reply-To: References: <5568db74d0acb198a3e8121ee75e3cfa02ea0c6f.camel@mad-scientist.net> <453082091.802975.1651922375216@mail.yahoo.com> <222e7c9b9ac74aa886c1501792e677a0dfa1f268.camel@mad-scientist.net> <27202f68e59e9a17aaa96d39659ce73005325cd7.camel@mad-scientist.net> <7c6d308fdbbcabf83dd5423c33ca851666beaae7.camel@mad-scientist.net> Organization: Please remain calm--I may be mad but I am a professional! Content-Type: multipart/mixed; boundary="=-NloRNnVGuBafPxjHqpYj" User-Agent: Evolution 3.44.1 (by Flathub.org)) MIME-Version: 1.0 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - box5922.bluehost.com X-AntiAbuse: Original Domain - gcc.gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - mad-scientist.net X-BWhitelist: no X-Source-IP: 160.231.0.90 X-Source-L: No X-Exim-ID: 1no41H-000mzH-30 X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: (llin-psh13-dsa.dsone.3ds.com) [160.231.0.90]:50595 X-Source-Auth: paul@mad-scientist.us X-Email-Count: 1 X-Source-Cap: bWFkc2NpZTE7bWFkc2NpZTE7Ym94NTkyMi5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-Spam-Status: No, score=-8.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-help@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-help mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 May 2022 14:05:55 -0000 --=-NloRNnVGuBafPxjHqpYj Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, 2022-05-09 at 12:23 +0100, Jonathan Wakely wrote: > > But since what you want is something that works in arbitrary Python > > code, not just within GDB, doesn't pybind11 already do everything > > you > > want? > > https://github.com/pybind/pybind11 >=20 > If you don't want to (or can't) use pybind11 to create Python > bindings, and you don't want to use the GDB Python API, then you will > have a ton of work to do. The GDB Python API is what provides all the > tools for traversing C++ class hierarchies, examining template > arguments, casting values to related types etc. I think I've given the wrong impression: I definitely do not want to avoid using the GDB Python API and I have no need for my python code to work outside of GDB. I was playing with this yesterday and came up with the attached creating an "accessors.py" API. It's certainly not fully-fleshed out and is not well-tested; it doesn't try to address any container types. More of a thought experiment. The idea is that someone could import libstdcxx.v6.accessors and write their own code using these Python types. An alternative would of course be to write a bunch of free methods, rather than create classes. I went the other way and started with the xmethod implementation, so mine doesn't do much with tuples. I looked at printers.py a bit, and considered moving the versioned namespace facilities to this new area as well, but didn't go further. --=-NloRNnVGuBafPxjHqpYj Content-Disposition: attachment; filename="accessors.py" Content-Type: text/x-python; name="accessors.py"; charset="UTF-8" Content-Transfer-Encoding: base64 IyBBY2Nlc3NvciBtZXRob2RzIGZvciBsaWJzdGRjKysuCgojIENvcHlyaWdodCAoQykgMjAyMiBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKaW1wb3J0IGdkYgppbXBvcnQg cmUKCnRyeToKICAgIGZyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbApleGNlcHQgSW1wb3J0RXJy b3I6CiAgICBwYXNzCgoKY2xhc3MgQWNjZXNzb3JCYXNlKG9iamVjdCk6CiAgICAiIiJCYXNlIGNs YXNzIGZvciBhY2Nlc3NvcnMgb2YgQysrIFNUTCB0eXBlcy4iIiIKCiAgICBfbmFtZSA9IE5vbmUg ICAgIyB0eXBlOiBzdHIKCiAgICBfdHlwZXJlID0gTm9uZSAgIyB0eXBlOiBzdHIKICAgIF90eXBl cnggPSBOb25lICAjIHR5cGU6IE9wdGlvbmFsW3JlLk1hdGNoXQoKICAgIF9wdHIgPSBOb25lICAg ICAjIHR5cGU6IE9wdGlvbmFsW2dkYi5WYWx1ZV0KCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBp c190eXBlKGNscywgb3R5cGUpOgogICAgICAgICMgdHlwZTogKGdkYi5UeXBlKSAtPiBOb25lCiAg ICAgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIHByb3ZpZGVkIHR5cGUgaXMgb2YgdGhpcyBjbGFz cy4iIiIKICAgICAgICBpZiBjbHMuX3R5cGVyeCBpcyBOb25lOgogICAgICAgICAgICBjbHMuX3R5 cGVyeCA9IHJlLmNvbXBpbGUoY2xzLl90eXBlcmUpCiAgICAgICAgcmV0dXJuIGNscy5fdHlwZXJ4 Lm1hdGNoKG90eXBlLnRhZykgaXMgbm90IE5vbmUKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcHRy KToKICAgICAgICAjIHR5cGU6IChnZGIuVmFsdWUpIC0+IE5vbmUKICAgICAgICBpZiBub3Qgc2Vs Zi5pc190eXBlKHB0ci50eXBlKToKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVmFsdWUg aGFzIHR5cGUgJyVzJywgZXhwZWN0ZWQgJyVzJyIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAlIChzdHIocHRyLnR5cGUpLCBzZWxmLl9uYW1lKSkKICAgICAgICBzZWxmLl9wdHIgPSBwdHIK CiAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAjIHR5cGU6ICgpIC0+IHN0cgogICAgICAg IHJldHVybiBzdHIoc2VsZi5fcHRyKQoKCmNsYXNzIFNtYXJ0UHRyKEFjY2Vzc29yQmFzZSk6CiAg ICAiIiJCYXNlIGFjY2Vzc29yIGZvciBDKysgU1RMIHNtYXJ0IHBvaW50ZXJzLiIiIgoKICAgIGRl ZiBnZXQoc2VsZik6CiAgICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtnZGIuVmFsdWVdCiAg ICAgICAgIiIiUmV0dXJuIHRoZSBwb2ludGVyIG93bmVkIGJ5IHRoaXMgc21hcnQgcG9pbnRlciwg b3IgTm9uZS4iIiIKICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJnZXQoKSBub3Qg aW1wbGVtZW50ZWQiKQoKCmNsYXNzIFVuaXF1ZVB0cihTbWFydFB0cik6CiAgICAiIiJBY2Nlc3Nv ciBmb3Igc3RkOjp1bmlxdWVfcHRyPD4uIiIiCgogICAgX25hbWUgPSAnc3RkOjp1bmlxdWVfcHRy JwogICAgX3R5cGVyZSA9IHInXnN0ZDo6KD86X19cZCs6Oik/dW5pcXVlX3B0cjwuKj4kJwoKICAg IF9uZXdyZSA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbcmUuTWF0Y2hdCiAgICBfb2xkcmUgPSBO b25lICAjIHR5cGU6IE9wdGlvbmFsW3JlLk1hdGNoXQoKICAgIGRlZiBnZXQoc2VsZik6CiAgICAg ICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtnZGIuVmFsdWVdCiAgICAgICAgIiIiUmV0dXJuIHRo ZSBwb2ludGVyIG93bmVkIGJ5IHN0ZDo6dW5pcXVlX3B0cjw+LCBvciBOb25lLiIiIgogICAgICAg IGlmIHNlbGYuX3B0ciBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIGlt cGxfdHlwZSA9IHNlbGYuX3B0ci50eXBlLmZpZWxkcygpWzBdLnR5cGUuc3RyaXBfdHlwZWRlZnMo KQogICAgICAgICMgQ2hlY2sgZm9yIG5ldyBpbXBsZW1lbnRhdGlvbnMgZmlyc3Q6CiAgICAgICAg aWYgVW5pcXVlUHRyLl9uZXdyZSBpcyBOb25lOgogICAgICAgICAgICBVbmlxdWVQdHIuX25ld3Jl ID0gcmUuY29tcGlsZShyJ15zdGQ6Oig/Ol9fXGQrOjopP19fdW5pcV9wdHJfKGRhdGF8aW1wbCk8 Lio+JCcpCiAgICAgICAgaWYgVW5pcXVlUHRyLl9uZXdyZS5tYXRjaChpbXBsX3R5cGUpOgogICAg ICAgICAgICB0dXBsZV9tZW1iZXIgPSBzZWxmLl9wdHJbJ19NX3QnXVsnX01fdCddCiAgICAgICAg ZWxzZToKICAgICAgICAgICAgaWYgVW5pcXVlUHRyLl9vbGRyZSBpcyBOb25lOgogICAgICAgICAg ICAgICAgVW5pcXVlUHRyLl9vbGRyZSA9IHJlLmNvbXBpbGUocidec3RkOjooPzpfX1xkKzo6KT90 dXBsZTwuKj4kJykKICAgICAgICAgICAgaWYgVW5pcXVlUHRyLl9vbGRyZS5tYXRjaChpbXBsX3R5 cGUpOgogICAgICAgICAgICAgICAgdHVwbGVfbWVtYmVyID0gc2VsZi5fcHRyWydfTV90J10KICAg ICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVuc3VwcG9y dGVkIGltcGxlbWVudGF0aW9uIGZvciB1bmlxdWVfcHRyOiAlcyIgJSBzdHIoaW1wbF90eXBlKSkK ICAgICAgICB0dXBsZV9pbXBsX3R5cGUgPSB0dXBsZV9tZW1iZXIudHlwZS5maWVsZHMoKVswXS50 eXBlICAjIF9UdXBsZV9pbXBsCiAgICAgICAgdHVwbGVfaGVhZF90eXBlID0gdHVwbGVfaW1wbF90 eXBlLmZpZWxkcygpWzFdLnR5cGUgICAgIyBfSGVhZF9iYXNlCiAgICAgICAgaGVhZF9maWVsZCA9 IHR1cGxlX2hlYWRfdHlwZS5maWVsZHMoKVswXQogICAgICAgIGlmIGhlYWRfZmllbGQubmFtZSA9 PSAnX01faGVhZF9pbXBsJzoKICAgICAgICAgICAgcmV0dXJuIHR1cGxlX21lbWJlclsnX01faGVh ZF9pbXBsJ10KICAgICAgICBpZiBoZWFkX2ZpZWxkLmlzX2Jhc2VfY2xhc3M6CiAgICAgICAgICAg IHJldHVybiB0dXBsZV9tZW1iZXIuY2FzdChoZWFkX2ZpZWxkLnR5cGUpCiAgICAgICAgcmV0dXJu IE5vbmUKCgpjbGFzcyBTaGFyZWRQdHIoU21hcnRQdHIpOgogICAgIiIiQWNjZXNzb3IgZm9yIHN0 ZDo6c2hhcmVkX3B0cjw+LiIiIgoKICAgIF9uYW1lID0gJ3N0ZDo6e3NoYXJlZCx3ZWFrfV9wdHIn CiAgICBfdHlwZXJlID0gcidec3RkOjooPzpfX1xkKzo6KT8oPzpzaGFyZWR8d2VhaylfcHRyPC4q PiQnCgogICAgZGVmIGdldChzZWxmKToKICAgICAgICAjIHR5cGU6ICgpIC0+IE9wdGlvbmFsW2dk Yi5WYWx1ZV0KICAgICAgICAiIiJSZXR1cm4gdGhlIHBvaW50ZXIgbWFuYWdlZCBieSBzdGQ6OnNo YXJlZF9wdHI8Piwgb3IgTm9uZS4iIiIKICAgICAgICBpZiBzZWxmLl9wdHIgaXMgTm9uZToKICAg ICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICByZXR1cm4gc2VsZi5fcHRyWydfTV9wdHInXQoK ICAgIGRlZiBfZ2V0X3JlZmNvdW50cyhzZWxmKToKICAgICAgICAjIHR5cGU6ICgpIC0+IE9wdGlv bmFsW2dkYi5WYWx1ZV0KICAgICAgICAiIiJSZXR1cm4gdGhlIHJlZmNvdW50IHN0cnVjdCBvciBO b25lLiIiIgogICAgICAgIHJldHVybiBzZWxmLl9wdHJbJ19NX3JlZmNvdW50J11bJ19NX3BpJ10g aWYgc2VsZi5fcHRyIGVsc2UgTm9uZQoKICAgIGRlZiB1c2VfY291bnQoc2VsZik6CiAgICAgICAg IyB0eXBlOiAoKSAtPiBpbnQKICAgICAgICAiIiJSZXR1cm4gdGhlIHVzZSBjb3VudCBvZiB0aGUg c3RkOjpzaGFyZWRfcHRyPD4uIiIiCiAgICAgICAgcmVmY291bnRzID0gc2VsZi5fZ2V0X3JlZmNv dW50cygpCiAgICAgICAgcmV0dXJuIHJlZmNvdW50c1snX01fdXNlX2NvdW50J10gaWYgcmVmY291 bnRzIGVsc2UgMAoKICAgIGRlZiB3ZWFrX2NvdW50KHNlbGYpOgogICAgICAgICMgdHlwZTogKCkg LT4gaW50CiAgICAgICAgIiIiUmV0dXJuIHRoZSB3ZWFrIGNvdW50IG9mIHRoZSBzdGQ6OnNoYXJl ZF9wdHI8Pi4iIiIKICAgICAgICByZWZjb3VudHMgPSBzZWxmLl9nZXRfcmVmY291bnRzKCkKICAg ICAgICByZXR1cm4gcmVmY291bnRzWydfTV93ZWFrX2NvdW50J10gaWYgcmVmY291bnRzIGVsc2Ug MAo= --=-NloRNnVGuBafPxjHqpYj Content-Disposition: attachment; filename="xmethods.diff" Content-Type: text/x-patch; name="xmethods.diff"; charset="UTF-8" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9weXRob24vbGlic3RkY3h4L3Y2L3htZXRob2RzLnB5 IGIvbGlic3RkYysrLXYzL3B5dGhvbi9saWJzdGRjeHgvdjYveG1ldGhvZHMucHkKaW5kZXggMTMw YTY1ODc1OGIuLmM1ZTJlNmY5MzYzIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvcHl0aG9uL2xp YnN0ZGN4eC92Ni94bWV0aG9kcy5weQorKysgYi9saWJzdGRjKystdjMvcHl0aG9uL2xpYnN0ZGN4 eC92Ni94bWV0aG9kcy5weQpAQCAtMTksNiArMTksOCBAQCBpbXBvcnQgZ2RiCiBpbXBvcnQgZ2Ri LnhtZXRob2QKIGltcG9ydCByZQogCitpbXBvcnQgYWNjZXNzb3JzCisKIG1hdGNoZXJfbmFtZV9w cmVmaXggPSAnbGlic3RkYysrOjonCiAKIGRlZiBnZXRfYm9vbF90eXBlKCk6CkBAIC01ODUsMjIg KzU4Nyw5IEBAIGNsYXNzIFVuaXF1ZVB0ckdldFdvcmtlcihnZGIueG1ldGhvZC5YTWV0aG9kV29y a2VyKToKICAgICAgICAgcmV0dXJuIG1ldGhvZF9uYW1lID09ICdnZXQnIG9yIG5vdCBzZWxmLl9p c19hcnJheQogCiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG9iaik6Ci0gICAgICAgIGltcGxfdHlw ZSA9IG9iai5kZXJlZmVyZW5jZSgpLnR5cGUuZmllbGRzKClbMF0udHlwZS50YWcKLSAgICAgICAg IyBDaGVjayBmb3IgbmV3IGltcGxlbWVudGF0aW9ucyBmaXJzdDoKLSAgICAgICAgaWYgcmUubWF0 Y2goJ15zdGQ6OihfX1xkKzo6KT9fX3VuaXFfcHRyXyhkYXRhfGltcGwpPC4qPiQnLCBpbXBsX3R5 cGUpOgotICAgICAgICAgICAgdHVwbGVfbWVtYmVyID0gb2JqWydfTV90J11bJ19NX3QnXQotICAg ICAgICBlbGlmIHJlLm1hdGNoKCdec3RkOjooX19cZCs6Oik/dHVwbGU8Lio+JCcsIGltcGxfdHlw ZSk6Ci0gICAgICAgICAgICB0dXBsZV9tZW1iZXIgPSBvYmpbJ19NX3QnXQotICAgICAgICBlbHNl OgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgdHVwbGVfaW1wbF90eXBlID0gdHVw bGVfbWVtYmVyLnR5cGUuZmllbGRzKClbMF0udHlwZSAjIF9UdXBsZV9pbXBsCi0gICAgICAgIHR1 cGxlX2hlYWRfdHlwZSA9IHR1cGxlX2ltcGxfdHlwZS5maWVsZHMoKVsxXS50eXBlICAgIyBfSGVh ZF9iYXNlCi0gICAgICAgIGhlYWRfZmllbGQgPSB0dXBsZV9oZWFkX3R5cGUuZmllbGRzKClbMF0K LSAgICAgICAgaWYgaGVhZF9maWVsZC5uYW1lID09ICdfTV9oZWFkX2ltcGwnOgotICAgICAgICAg ICAgcmV0dXJuIHR1cGxlX21lbWJlci5jYXN0KHR1cGxlX2hlYWRfdHlwZSlbJ19NX2hlYWRfaW1w bCddCi0gICAgICAgIGVsaWYgaGVhZF9maWVsZC5pc19iYXNlX2NsYXNzOgotICAgICAgICAgICAg cmV0dXJuIHR1cGxlX21lbWJlci5jYXN0KGhlYWRfZmllbGQudHlwZSkKLSAgICAgICAgZWxzZToK KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIGFjY2Vzc29ycy5VbmlxdWVQdHIob2Jq LmRlcmVmZXJlbmNlKCkpLmdldCgpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAg ICAgICAgcmV0dXJuIE5vbmUKIAogY2xhc3MgVW5pcXVlUHRyRGVyZWZXb3JrZXIoVW5pcXVlUHRy R2V0V29ya2VyKToKQEAgLTY4NCw3ICs2NzMsMTAgQEAgY2xhc3MgU2hhcmVkUHRyR2V0V29ya2Vy KGdkYi54bWV0aG9kLlhNZXRob2RXb3JrZXIpOgogICAgICAgICByZXR1cm4gbWV0aG9kX25hbWUg PT0gJ2dldCcgb3Igbm90IHNlbGYuX2lzX2FycmF5CiAKICAgICBkZWYgX19jYWxsX18oc2VsZiwg b2JqKToKLSAgICAgICAgcmV0dXJuIG9ialsnX01fcHRyJ10KKyAgICAgICAgdHJ5OgorICAgICAg ICAgICAgcmV0dXJuIGFjY2Vzc29ycy5TaGFyZWRQdHIob2JqLmRlcmVmZXJlbmNlKCkpLmdldCgp CisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAog Y2xhc3MgU2hhcmVkUHRyRGVyZWZXb3JrZXIoU2hhcmVkUHRyR2V0V29ya2VyKToKICAgICAiSW1w bGVtZW50cyBzdGQ6OnNoYXJlZF9wdHI8VD46Om9wZXJhdG9yKigpIgpAQCAtNzM5LDggKzczMSw3 IEBAIGNsYXNzIFNoYXJlZFB0clVzZUNvdW50V29ya2VyKGdkYi54bWV0aG9kLlhNZXRob2RXb3Jr ZXIpOgogICAgICAgICByZXR1cm4gZ2RiLmxvb2t1cF90eXBlKCdsb25nJykKIAogICAgIGRlZiBf X2NhbGxfXyhzZWxmLCBvYmopOgotICAgICAgICByZWZjb3VudHMgPSBvYmpbJ19NX3JlZmNvdW50 J11bJ19NX3BpJ10KLSAgICAgICAgcmV0dXJuIHJlZmNvdW50c1snX01fdXNlX2NvdW50J10gaWYg cmVmY291bnRzIGVsc2UgMAorICAgICAgICByZXR1cm4gYWNjZXNzb3JzLlNoYXJlZFB0cihvYmou ZGVyZWZlcmVuY2UoKSkudXNlX2NvdW50KCkKIAogY2xhc3MgU2hhcmVkUHRyVW5pcXVlV29ya2Vy KFNoYXJlZFB0clVzZUNvdW50V29ya2VyKToKICAgICAiSW1wbGVtZW50cyBzdGQ6OnNoYXJlZF9w dHI8VD46OnVuaXF1ZSgpIgo= --=-NloRNnVGuBafPxjHqpYj--