From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2.migadu.com ([2001:41d0:403:4876::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms1.migadu.com with LMTPS id OAD5Huh2MGYopQAAe85BDQ:P1 (envelope-from ) for ; Tue, 30 Apr 2024 06:43:20 +0200 Received: from aspmx1.migadu.com ([2001:41d0:403:4876::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2.migadu.com with LMTPS id OAD5Huh2MGYopQAAe85BDQ (envelope-from ) for ; Tue, 30 Apr 2024 06:43:20 +0200 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=EDuObc7A; 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=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1714452200; 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=AO3azpUsXUV/J+N9ufLeBDTcRJz5WRufFWPpgNKQ7vY=; b=Y2EUFbpqbfiicZA2T+iJzvd70Amlo9MJoMU1U9ov+rFiTAV7kb7QiV/0QzcRfU/AKiBXA+ KteSg4tWt2u0BfezDkQvykNgcYTVbSjZWaIusDegkfkPSOQZ+y9Z52GONXCFfrye1LQkyb LvfMOzha4tz5XJQqoanCiDwFJ/qKvdzOeLgv2b+eaESV1KDE/HxuRnvYsrSdF821yDeksJ V/HJpW0jFxB9opTpKz0y/vWBv7YO6qjYDCiXqWafiVTsEleG02zAdqo0sfaGB1ix7BXBrG sa5CQqwYyp8obCcZZ/v4l8fnQxpGVEA5MXEGlrR6Rvc7Dv2Wt1OMrtPs7z6Tjw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=EDuObc7A; 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=gmail.com ARC-Seal: i=1; s=key1; d=yhetil.org; t=1714452200; a=rsa-sha256; cv=none; b=FQHCDpMkSlO2OYUWp1STZWbHd0RVPvgFacsulXaTYhHhJdXaL9NaBXz6VBa4jqF4PHVysT Qt1lDHt4Z99MShNkXUtJijqG5GELRKa90owgQKIuYQfIxWBqjPzCUfoG/CbC4U9had9AgB 7MDI9noULjw5w2NCbMGbzSboSZXOTTFl88ifD6vIvTamz9AeQJF32xZMqfq5+2qCiI1X9+ gyoyGnhhhMijFQtixJgx2x+lxVcQFmLLlPPuSCgTCUmqzSe52wvKzUCMc1xhbTCYbMDPLX FPQ4MxjFH/hEH83QiWw0eRpjSvyRJQAcdnmSFCw3dXi+CA8QHSZs18IyCSH61A== 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 D9C9F70C3E for ; Tue, 30 Apr 2024 06:43:19 +0200 (CEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s1fKG-0001l7-W6; Tue, 30 Apr 2024 00:42:45 -0400 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 1s1fKD-0001kF-Mk; Tue, 30 Apr 2024 00:42:41 -0400 Received: from mail-oo1-xc2a.google.com ([2607:f8b0:4864:20::c2a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1s1fKB-0008QO-7Z; Tue, 30 Apr 2024 00:42:41 -0400 Received: by mail-oo1-xc2a.google.com with SMTP id 006d021491bc7-5aa22ebd048so3966762eaf.1; Mon, 29 Apr 2024 21:42:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1714452157; x=1715056957; darn=gnu.org; h=in-reply-to:from:references:cc:to:content-language:subject :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=AO3azpUsXUV/J+N9ufLeBDTcRJz5WRufFWPpgNKQ7vY=; b=EDuObc7Ap7XQawcV0N7mUjlpUhnRactZPx8+tadHLXzgSH0wEKUuHLKBJDWCBPkfpb NvsTHXa9/GCAjD4uHUjgcvsdGvnzmD65tQbn9vRxLWZAn2L+hIWS0BZBUT8VjcpzWj7G kCYrprhWhEmGe0Uxa6BpH2dkFHMXEJoQj0Qhh3lRg9fI63I7p2XodAqoC/f6USY4IGi5 LLvrVOSjUgKkVZA+A67Z1MjYbbRvWIz9d+rHKAocacrbSgdJZRLZQPeiOYArOZkJXvHK /5b/1jqH45oi3rMdXRPI2hUsjRziT1X0n5pIIYOIA15txRymZcJLUeOt6T3kJgOfYkPM qAmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714452157; x=1715056957; h=in-reply-to:from:references:cc:to:content-language:subject :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=AO3azpUsXUV/J+N9ufLeBDTcRJz5WRufFWPpgNKQ7vY=; b=s+VGZg9yP/upyRHJqEh7sbTmj3XIG8o8WPacJv9UuVxZos9JQ/mlZwLJdPsSHh8ZQl 1z/TQHfVkLor0hiE9GxbP6jwKDzgprF8ghbmTNHIH2IE1w6RkLh5bo6ILb6Mr2qTTfHs xLUZ90Lr3wS7Tlo5Mf5MsKH5Y9GefT6XIGjEfUUD8KWF7WF8HSbNu4n/w81iHbWZC+/y sGISilCdvzlenAbYNHM0pcySPT8wSa0aDxk3zXEvSFykkWnMFKLhFeItnwxMNKz6+nkX KnaItbjfwAyWZK/sJUlmqz53uysA+A7e0/21GNOJLjiOsUt3S9JMRTsRd3VVgpVbDdNc FUdw== X-Forwarded-Encrypted: i=1; AJvYcCU0+4rKXrnEP7GzSZAWG9/jota837ZX/PSk6Tc13+pY3AtHhd8nw8bDnikdHk332VWpOJ9bn+Icz0QzeuSzL8BbDsfX0eieaBTF8pbydRylio6AUX8cMeVOVb8= X-Gm-Message-State: AOJu0YwejvQAOjEFjE/wq6v4mYSa31Izt3EwqUb5UU3tDDIoGTKPeuv5 Uo3NMa82FyR4/MoVwi76KU+qPue+8NTetgXGp+5rX8t5rJB2/s+w X-Google-Smtp-Source: AGHT+IH6F9gpm/8zcrET5GSfOpGttT1aUYfBsgFdzKSuaAcRKNbzcBlSHHtAm09RHZTOG99NIUvZuQ== X-Received: by 2002:a05:6358:f484:b0:17b:5661:5e2b with SMTP id ku4-20020a056358f48400b0017b56615e2bmr10802496rwb.18.1714452156655; Mon, 29 Apr 2024 21:42:36 -0700 (PDT) Received: from [192.168.1.2] ([23.240.98.37]) by smtp.googlemail.com with ESMTPSA id 81-20020a630254000000b005f80080586asm17783485pgc.93.2024.04.29.21.42.35 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 29 Apr 2024 21:42:35 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------Dt9230sjNJ7zDeYseJtX6Zqh" Message-ID: <253c058a-d349-41a7-7733-c73075bffcb6@gmail.com> Date: Mon, 29 Apr 2024 21:42:35 -0700 MIME-Version: 1.0 Subject: Re: Adding custom providers for thingatpt.el (was: [PATCH] Add support for 'thing-at-point' to get URL at point) Content-Language: en-US To: Ihor Radchenko Cc: eliz@gnu.org, emacs-devel@gnu.org, emacs-orgmode@gnu.org References: <87leba3ame.fsf@localhost> <88435424-afa3-d7a3-56ff-df9f0a2ca6ba@gmail.com> <875xz39cgp.fsf@localhost> <87ttk6da89.fsf@localhost> <673a0f71-c91f-8461-7388-9efbed6ba24f@gmail.com> <0c66ae28-7088-3ac7-be39-7714b8f80455@gmail.com> <87mspcave3.fsf@localhost> From: Jim Porter In-Reply-To: <87mspcave3.fsf@localhost> Received-SPF: pass client-ip=2607:f8b0:4864:20::c2a; envelope-from=jporterbugs@gmail.com; helo=mail-oo1-xc2a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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-Spam-Score: -8.60 X-Migadu-Queue-Id: D9C9F70C3E X-Migadu-Scanner: mx10.migadu.com X-Migadu-Spam-Score: -8.60 X-TUID: YKFtcfIZZwm3 This is a multi-part message in MIME format. --------------Dt9230sjNJ7zDeYseJtX6Zqh Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 4/29/2024 11:14 AM, Ihor Radchenko wrote: > Thanks! > I have a small comment on the docstring of > `forward-thing-provider-alist' - it refers to > `thing-at-point-provider-alist', but the provides here are called with > an argument N, unlike the providers in `thing-at-point-provider-alist'. Fixed. I've also added some helper functions for 'forward-thing' and 'bounds-of-thing-at-point' when the "thing" is defined by a text property, and then used those helper functions for EWW and bug-reference-mode. I've lightly tested this (and added a few automated regression tests), but there could be some bugs lurking in here... --------------Dt9230sjNJ7zDeYseJtX6Zqh Content-Type: text/plain; charset=UTF-8; name="0001-Allow-defining-custom-providers-for-more-thingatpt-f.patch" Content-Disposition: attachment; filename*0="0001-Allow-defining-custom-providers-for-more-thingatpt-f.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhZDhkYjkzMDkwN2NkNzYwMTQyZmQ2ZjAzNWQ5N2NlOTNjZThkODUwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IFN1biwgMjggQXByIDIwMjQgMjE6MTk6NTMgLTA3MDAKU3ViamVjdDogW1BB VENIXSBBbGxvdyBkZWZpbmluZyBjdXN0b20gcHJvdmlkZXJzIGZvciBtb3JlICJ0aGluZ2F0 cHQiCiBmdW5jdGlvbnMKCiogbGlzcC90aGluZ2F0cHQuZWwgKGZvcndhcmQtdGhpbmctcHJv dmlkZXItYWxpc3QpCihib3VuZHMtb2YtdGhpbmctYXQtcG9pbnQtcHJvdmlkZXItYWxpc3Qp OiBOZXcgdmFyaWFibGVzLi4uCihmb3J3YXJkLXRoaW5nLCBib3VuZHMtb2YtdGhpbmctYXQt cG9pbnQpOiAuLi4gdXNlIHRoZW0uCih0ZXh0LXByb3BlcnR5LXNlYXJjaC1mb3J3YXJkLCB0 ZXh0LXByb3BlcnR5LXNlYXJjaC1iYWNrd2FyZCkKKHByb3AtbWF0Y2gtYmVnaW5uaW5nLCBw cm9wLW1hdGNoLWVuZCk6IERlY2xhcmUuCihmb3J3YXJkLXRoaW5nLWZvci10ZXh0LXByb3Bl cnR5KQooYm91bmRzLW9mLXRoaW5nLWF0LXBvaW50LWZvci10ZXh0LXByb3BlcnR5KTogTmV3 IGZ1bmN0aW9ucy4KCiogbGlzcC9uZXQvZXd3LmVsIChld3ctLWJvdW5kcy1vZi11cmwtYXQt cG9pbnQsIGV3dy0tZm9yd2FyZC11cmwpOiBOZXcKZnVuY3Rpb25zLi4uCihld3ctbW9kZSk6 IC4uLiB1c2UgdGhlbS4KCiogbGlzcC9wcm9nbW9kZXMvYnVnLXJlZmVyZW5jZS5lbAooYnVn LXJlZmVyZW5jZS0tYm91bmRzLW9mLXVybC1hdC1wb2ludCwgYnVnLXJlZmVyZW5jZS0tZm9y d2FyZC11cmwpOiBOZXcKZnVuY3Rpb25zLi4uCihidWctcmVmZXJlbmNlLS1pbml0KTogLi4u IHVzZSB0aGVtLgoKKiB0ZXN0L2xpc3AvdGhpbmdhdHB0LXRlc3RzLmVsICh0aGluZy1hdC1w b2ludC1wcm92aWRlcnMpCihmb3J3YXJkLXRoaW5nLXByb3ZpZGVycywgYm91bmRzLW9mLXRo aW5nLWF0LXBvaW50LXByb3ZpZGVycyk6IE5ldwp0ZXN0cy4KCiogZXRjL05FV1M6IEFubm91 bmNlIHRoaXMgY2hhbmdlLgotLS0KIGV0Yy9ORVdTICAgICAgICAgICAgICAgICAgICAgICAg fCAyMSArKysrKysrLS0tCiBsaXNwL25ldC9ld3cuZWwgICAgICAgICAgICAgICAgIHwgMTQg KysrKysrKwogbGlzcC9wcm9nbW9kZXMvYnVnLXJlZmVyZW5jZS5lbCB8IDIyICsrKysrKysr Ky0KIGxpc3AvdGhpbmdhdHB0LmVsICAgICAgICAgICAgICAgfCA3MSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0KIHRlc3QvbGlzcC90aGluZ2F0cHQtdGVzdHMuZWwgICAg fCAzNiArKysrKysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAxNTMgaW5zZXJ0aW9u cygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZXRjL05FV1MgYi9ldGMvTkVX UwppbmRleCA3ZWZiNDExMGJjZC4uMzk0Zjc1ODg0YzEgMTAwNjQ0Ci0tLSBhL2V0Yy9ORVdT CisrKyBiL2V0Yy9ORVdTCkBAIC0xNTkxLDE5ICsxNTkxLDMwIEBAIG9mIHRoZSBjdXJyZW50 bHkgZXhpc3Rpbmcga2V5Ym9hcmRzIG1hY3JvcyB1c2luZyB0aGUgbmV3IG1vZGUKIGR1cGxp Y2F0aW5nIHRoZW0sIGRlbGV0aW5nIHRoZW0sIGFuZCBlZGl0aW5nIHRoZWlyIGNvdW50ZXJz LCBmb3JtYXRzLAogYW5kIGtleXMuCiAKLSoqIE1pc2NlbGxhbmVvdXMKKyoqIHRoaW5nYXRw dC5lbAogCiAtLS0KLSoqKiBXZWJqdW1wIG5vdyBhc3N1bWVzIFVSSXMgYXJlIEhUVFBTIGlu c3RlYWQgb2YgSFRUUC4KLUZvciBsaW5rcyBpbiAnd2VianVtcC1zaXRlcycgd2l0aG91dCBh biBleHBsaWNpdCBVUkkgc2NoZW1lLCBpdCB3YXMKLXByZXZpb3VzbHkgYXNzdW1lZCB0aGF0 IHRoZXkgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGggImh0dHA6Ly8iLiAgU3VjaAotVVJJcyBh cmUgbm93IHByZWZpeGVkIHdpdGggImh0dHBzOi8vIiBpbnN0ZWFkLgorKioqIE5ldyB2YXJp YWJsZXMgYW5kIGZ1bmN0aW9ucyBmb3IgcHJvdmlkaW5nIGN1c3RvbSB0aGluZ2F0cHQgaW1w bGVtZW50YXRpb25zLgorVGhlIG5ldyB2YXJpYWJsZXMgJ2JvdW5kcy1vZi10aGluZy1hdC1w b2ludC1wcm92aWRlci1hbGlzdCcgYW5kCisnZm9yd2FyZC10aGluZy1wcm92aWRlci1hbGlz dCcgbm93IGFsbG93IGRlZmluaW5nIGN1c3RvbSBpbXBsZW1lbnRhdGlvbnMKK29mICdib3Vu ZHMtb2YtdGhpbmctYXQtcG9pbnQnIGFuZCAnZm9yd2FyZC10aGluZycsIHJlc3BlY3RpdmVs eS4gIEluCithZGRpdGlvbiwgInRoaW5ncyIgZGVmaW5lZCBieSBhIHRleHQgcHJvcGVydHkg Y2FuIHVzZSB0aGUgbmV3IGZ1bmN0aW9ucworJ2JvdW5kcy1vZi10aGluZy1hdC1wb2ludC1m b3ItdGV4dC1wcm9wZXJ0eScgYW5kCisnZm9yd2FyZC10aGluZy1mb3ItdGV4dC1wcm9wZXJ0 eScgdG8gaGVscCBpbXBsZW1lbnQgdGhlc2UgcHJvdmlkZXJzLgogCiAtLS0KICoqKiAnYnVn LXJlZmVyZW5jZS1tb2RlJyBub3cgc3VwcG9ydHMgJ3RoaW5nLWF0LXBvaW50Jy4KIE5vdywg Y2FsbGluZyAnKHRoaW5nLWF0LXBvaW50ICd1cmwpJyB3aGVuIHBvaW50IGlzIG9uIGEgYnVn IHJlZmVyZW5jZQogd2lsbCByZXR1cm4gdGhlIFVSTCBmb3IgdGhhdCBidWcuCiAKKyoqIE1p c2NlbGxhbmVvdXMKKworLS0tCisqKiogV2VianVtcCBub3cgYXNzdW1lcyBVUklzIGFyZSBI VFRQUyBpbnN0ZWFkIG9mIEhUVFAuCitGb3IgbGlua3MgaW4gJ3dlYmp1bXAtc2l0ZXMnIHdp dGhvdXQgYW4gZXhwbGljaXQgVVJJIHNjaGVtZSwgaXQgd2FzCitwcmV2aW91c2x5IGFzc3Vt ZWQgdGhhdCB0aGV5IHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoICJodHRwOi8vIi4gIFN1Y2gK K1VSSXMgYXJlIG5vdyBwcmVmaXhlZCB3aXRoICJodHRwczovLyIgaW5zdGVhZC4KKwogKysr CiAqKiogTmV3IHVzZXIgb3B0aW9uICdyY2lyYy1sb2ctdGltZS1mb3JtYXQnCiBUaGlzIGFs bG93cyBmb3IgcmNpcmMgbG9ncyB0byB1c2UgYSBjdXN0b20gdGltZXN0YW1wIGZvcm1hdCwg dGhhbiB0aGUKZGlmZiAtLWdpdCBhL2xpc3AvbmV0L2V3dy5lbCBiL2xpc3AvbmV0L2V3dy5l bAppbmRleCAzOWVhOTY0ZDQ3YS4uYWRhYmQ4ZDhkOGIgMTAwNjQ0Ci0tLSBhL2xpc3AvbmV0 L2V3dy5lbAorKysgYi9saXNwL25ldC9ld3cuZWwKQEAgLTEzMjEsNiArMTMyMSwxMiBAQCBl d3ctbW9kZQogICAoc2V0cS1sb2NhbCB0aGluZy1hdC1wb2ludC1wcm92aWRlci1hbGlzdAog ICAgICAgICAgICAgICAoYXBwZW5kIHRoaW5nLWF0LXBvaW50LXByb3ZpZGVyLWFsaXN0CiAg ICAgICAgICAgICAgICAgICAgICAgJygodXJsIC4gZXd3LS11cmwtYXQtcG9pbnQpKSkpCisg IChzZXRxLWxvY2FsIGJvdW5kcy1vZi10aGluZy1hdC1wb2ludC1wcm92aWRlci1hbGlzdAor ICAgICAgICAgICAgICAoYXBwZW5kIGJvdW5kcy1vZi10aGluZy1hdC1wb2ludC1wcm92aWRl ci1hbGlzdAorICAgICAgICAgICAgICAgICAgICAgICcoKHVybCAuIGV3dy0tYm91bmRzLW9m LXVybC1hdC1wb2ludCkpKSkKKyAgKHNldHEtbG9jYWwgZm9yd2FyZC10aGluZy1wcm92aWRl ci1hbGlzdAorICAgICAgICAgICAgICAoYXBwZW5kIGZvcndhcmQtdGhpbmctcHJvdmlkZXIt YWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAnKCh1cmwgLiBld3ctLWZvcndhcmQtdXJs KSkpKQogICAoc2V0cS1sb2NhbCBib29rbWFyay1tYWtlLXJlY29yZC1mdW5jdGlvbiAjJ2V3 dy1ib29rbWFyay1tYWtlLXJlY29yZCkKICAgKGJ1ZmZlci1kaXNhYmxlLXVuZG8pCiAgIChz ZXRxLWxvY2FsIHNoci11cmwtdHJhbnNmb3JtZXIgIydld3ctLXRyYW5zZm9ybS11cmwpCkBA IC0xMzUxLDYgKzEzNTcsMTQgQEAgZXd3LS11cmwtYXQtcG9pbnQKICAgImB0aGluZy1hdC1w b2ludCcgcHJvdmlkZXIgZnVuY3Rpb24uIgogICAoZ2V0LXRleHQtcHJvcGVydHkgKHBvaW50 KSAnc2hyLXVybCkpCiAKKyhkZWZ1biBld3ctLWJvdW5kcy1vZi11cmwtYXQtcG9pbnQgKCkK KyAgImBib3VuZHMtb2YtdGhpbmctYXQtcG9pbnQnIHByb3ZpZGVyIGZ1bmN0aW9uLiIKKyAg KGJvdW5kcy1vZi10aGluZy1hdC1wb2ludC1mb3ItdGV4dC1wcm9wZXJ0eSAnc2hyLXVybCkp CisKKyhkZWZ1biBld3ctLWZvcndhcmQtdXJsIChuKQorICAiYGZvcndhcmQtdGhpbmcnIHBy b3ZpZGVyIGZ1bmN0aW9uLiIKKyAgKGZvcndhcmQtdGhpbmctZm9yLXRleHQtcHJvcGVydHkg J3Noci11cmwgbikpCisKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4gZXd3LWJyb3dzZS11cmwg KHVybCAmb3B0aW9uYWwgbmV3LXdpbmRvdykKICAgIkFzayB0aGUgRVdXIGJyb3dzZXIgdG8g bG9hZCBVUkwuCmRpZmYgLS1naXQgYS9saXNwL3Byb2dtb2Rlcy9idWctcmVmZXJlbmNlLmVs IGIvbGlzcC9wcm9nbW9kZXMvYnVnLXJlZmVyZW5jZS5lbAppbmRleCA5NzdhM2Q3MmNiNy4u YmZjMjJmYjEwZDIgMTAwNjQ0Ci0tLSBhL2xpc3AvcHJvZ21vZGVzL2J1Zy1yZWZlcmVuY2Uu ZWwKKysrIGIvbGlzcC9wcm9nbW9kZXMvYnVnLXJlZmVyZW5jZS5lbApAQCAtNjYwLDE3ICs2 NjAsMzcgQEAgYnVnLXJlZmVyZW5jZS0tdXJsLWF0LXBvaW50CiAgICJgdGhpbmctYXQtcG9p bnQnIHByb3ZpZGVyIGZ1bmN0aW9uLiIKICAgKGdldC1jaGFyLXByb3BlcnR5IChwb2ludCkg J2J1Zy1yZWZlcmVuY2UtdXJsKSkKIAorKGRlZnVuIGJ1Zy1yZWZlcmVuY2UtLWJvdW5kcy1v Zi11cmwtYXQtcG9pbnQgKCkKKyAgImBib3VuZHMtb2YtdGhpbmctYXQtcG9pbnQnIHByb3Zp ZGVyIGZ1bmN0aW9uLiIKKyAgKGJvdW5kcy1vZi10aGluZy1hdC1wb2ludC1mb3ItdGV4dC1w cm9wZXJ0eSAnYnVnLXJlZmVyZW5jZS11cmwpKQorCisoZGVmdW4gYnVnLXJlZmVyZW5jZS0t Zm9yd2FyZC11cmwgKG4pCisgICJgZm9yd2FyZC10aGluZycgcHJvdmlkZXIgZnVuY3Rpb24u IgorICAoZm9yd2FyZC10aGluZy1mb3ItdGV4dC1wcm9wZXJ0eSAnYnVnLXJlZmVyZW5jZS11 cmwgbikpCisKIChkZWZ1biBidWctcmVmZXJlbmNlLS1pbml0IChlbmFibGUpCiAgIChpZiBl bmFibGUKICAgICAgIChwcm9nbgogICAgICAgICAoaml0LWxvY2stcmVnaXN0ZXIgIydidWct cmVmZXJlbmNlLWZvbnRpZnkpCiAgICAgICAgIChzZXRxLWxvY2FsIHRoaW5nLWF0LXBvaW50 LXByb3ZpZGVyLWFsaXN0CiAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgdGhpbmctYXQt cG9pbnQtcHJvdmlkZXItYWxpc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCh1 cmwgLiBidWctcmVmZXJlbmNlLS11cmwtYXQtcG9pbnQpKSkpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICcoKHVybCAuIGJ1Zy1yZWZlcmVuY2UtLXVybC1hdC1wb2ludCkpKSkK KyAgICAgICAgKHNldHEtbG9jYWwgYm91bmRzLW9mLXRoaW5nLWF0LXBvaW50LXByb3ZpZGVy LWFsaXN0CisgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgYm91bmRzLW9mLXRoaW5nLWF0 LXBvaW50LXByb3ZpZGVyLWFsaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygo dXJsIC4gYnVnLXJlZmVyZW5jZS0tYm91bmRzLW9mLXVybC1hdC1wb2ludCkpKSkKKyAgICAg ICAgKHNldHEtbG9jYWwgZm9yd2FyZC10aGluZy1wcm92aWRlci1hbGlzdAorICAgICAgICAg ICAgICAgICAgICAoYXBwZW5kIGZvcndhcmQtdGhpbmctcHJvdmlkZXItYWxpc3QKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnKCh1cmwgLiBidWctcmVmZXJlbmNlLS1mb3J3YXJk LXVybCkpKSkpCiAgICAgKGppdC1sb2NrLXVucmVnaXN0ZXIgIydidWctcmVmZXJlbmNlLWZv bnRpZnkpCiAgICAgKHNldHEgdGhpbmctYXQtcG9pbnQtcHJvdmlkZXItYWxpc3QKICAgICAg ICAgICAoZGVsZXRlICcoKHVybCAuIGJ1Zy1yZWZlcmVuY2UtLXVybC1hdC1wb2ludCkpCiAg ICAgICAgICAgICAgICAgICB0aGluZy1hdC1wb2ludC1wcm92aWRlci1hbGlzdCkpCisgICAg KHNldHEgYm91bmRzLW9mLXRoaW5nLWF0LXBvaW50LXByb3ZpZGVyLWFsaXN0CisgICAgICAg ICAgKGRlbGV0ZSAnKCh1cmwgLiBidWctcmVmZXJlbmNlLS1ib3VuZHMtb2YtdXJsLWF0LXBv aW50KSkKKyAgICAgICAgICAgICAgICAgIGJvdW5kcy1vZi10aGluZy1hdC1wb2ludC1wcm92 aWRlci1hbGlzdCkpCisgICAgKHNldHEgZm9yd2FyZC10aGluZy1wcm92aWRlci1hbGlzdAor ICAgICAgICAgIChkZWxldGUgJygodXJsIC4gYnVnLXJlZmVyZW5jZS0tZm9yd2FyZC11cmwp KQorICAgICAgICAgICAgICAgICAgZm9yd2FyZC10aGluZy1wcm92aWRlci1hbGlzdCkpCiAg ICAgKHNhdmUtcmVzdHJpY3Rpb24KICAgICAgICh3aWRlbikKICAgICAgIChidWctcmVmZXJl bmNlLXVuZm9udGlmeSAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkpKSkKZGlmZiAtLWdpdCBh L2xpc3AvdGhpbmdhdHB0LmVsIGIvbGlzcC90aGluZ2F0cHQuZWwKaW5kZXggNzg5NmFkOTg0 ZGYuLmRhZDcxYTRjYTk0IDEwMDY0NAotLS0gYS9saXNwL3RoaW5nYXRwdC5lbAorKysgYi9s aXNwL3RoaW5nYXRwdC5lbApAQCAtNzUsNiArNzUsMjcgQEAgdGhpbmctYXQtcG9pbnQtcHJv dmlkZXItYWxpc3QKIGBleGlzdGluZy1maWxlbmFtZScsIGB1cmwnLCBgZW1haWwnLCBgdXVp ZCcsIGB3b3JkJywgYHNlbnRlbmNlJywKIGB3aGl0ZXNwYWNlJywgYGxpbmUnLCBgZmFjZScg YW5kIGBwYWdlJy4iKQogCisoZGVmdmFyIGZvcndhcmQtdGhpbmctcHJvdmlkZXItYWxpc3Qg bmlsCisgICJBbGlzdCBvZiBwcm92aWRlcnMgZm9yIG1vdmluZyBmb3J3YXJkIHRvIHRoZSBl bmQgb2YgYSBcInRoaW5nXCIuCitUaGlzIHZhcmlhYmxlIGNhbiBiZSBzZXQgZ2xvYmFsbHks IG9yIGFwcGVuZGVkIHRvIGJ1ZmZlci1sb2NhbGx5IGJ5Cittb2RlcywgdG8gcHJvdmlkZSBm dW5jdGlvbnMgdGhhdCB3aWxsIG1vdmUgZm9yd2FyZCB0byB0aGUgZW5kIG9mIGEKK1widGhp bmdcIiBhdCBwb2ludC4gIEVhY2ggZnVuY3Rpb24gc2hvdWxkIHRha2UgYSBzaW5nbGUgYXJn dW1lbnQgTiwgdGhlCitudW1iZXIgb2YgXCJ0aGluZ3NcIiB0byBtb3ZlIGZvcndhcmQgcGFz dC4gIFRoZSBmaXJzdCBwcm92aWRlciBmb3IgdGhlCitcInRoaW5nXCIgdGhhdCByZXR1cm5z IGEgbm9uLW5pbCB2YWx1ZSB3aW5zLgorCitZb3UgY2FuIHVzZSB0aGlzIHZhcmlhYmxlIGlu IG11Y2ggdGhlIHNhbWUgd2F5IGFzCitgdGhpbmctYXQtcG9pbnQtcHJvdmlkZXItYWxpc3Qn ICh3aGljaCBzZWUpLiIpCisKKyhkZWZ2YXIgYm91bmRzLW9mLXRoaW5nLWF0LXBvaW50LXBy b3ZpZGVyLWFsaXN0IG5pbAorICAiQWxpc3Qgb2YgcHJvdmlkZXJzIHRvIHJldHVybiB0aGUg Ym91bmRzIG9mIGEgXCJ0aGluZ1wiIGF0IHBvaW50LgorVGhpcyB2YXJpYWJsZSBjYW4gYmUg c2V0IGdsb2JhbGx5LCBvciBhcHBlbmRlZCB0byBidWZmZXItbG9jYWxseSBieQorbW9kZXMs IHRvIHByb3ZpZGUgZnVuY3Rpb25zIHRoYXQgd2lsbCByZXR1cm4gdGhlIGJvdW5kcyBvZiBh IFwidGhpbmdcIgorYXQgcG9pbnQuICBUaGUgZmlyc3QgcHJvdmlkZXIgZm9yIHRoZSBcInRo aW5nXCIgdGhhdCByZXR1cm5zIGEgbm9uLW5pbAordmFsdWUgd2lucy4KKworWW91IGNhbiB1 c2UgdGhpcyB2YXJpYWJsZSBpbiBtdWNoIHRoZSBzYW1lIHdheSBhcworYHRoaW5nLWF0LXBv aW50LXByb3ZpZGVyLWFsaXN0JyAod2hpY2ggc2VlKS4iKQorCiA7OyBCYXNpYyBtb3ZlbWVu dAogCiA7OzsjIyNhdXRvbG9hZApAQCAtODQsMTEgKzEwNSwxNiBAQCBmb3J3YXJkLXRoaW5n CiBQb3NzaWJpbGl0aWVzIGluY2x1ZGUgYHN5bWJvbCcsIGBsaXN0JywgYHNleHAnLCBgZGVm dW4nLCBgbnVtYmVyJywKIGBmaWxlbmFtZScsIGB1cmwnLCBgZW1haWwnLCBgdXVpZCcsIGB3 b3JkJywgYHNlbnRlbmNlJywgYHdoaXRlc3BhY2UnLAogYGxpbmUnLCBhbmQgYHBhZ2UnLiIK LSAgKGxldCAoKGZvcndhcmQtb3AgKG9yIChnZXQgdGhpbmcgJ2ZvcndhcmQtb3ApCi0JCQko aW50ZXJuLXNvZnQgKGZvcm1hdCAiZm9yd2FyZC0lcyIgdGhpbmcpKSkpKQotICAgIChpZiAo ZnVuY3Rpb25wIGZvcndhcmQtb3ApCi0JKGZ1bmNhbGwgZm9yd2FyZC1vcCAob3IgbiAxKSkK LSAgICAgIChlcnJvciAiQ2FuJ3QgZGV0ZXJtaW5lIGhvdyB0byBtb3ZlIG92ZXIgYSAlcyIg dGhpbmcpKSkpCisgIChzZXRxIG4gKG9yIG4gMSkpCisgIChvciAoc2VxLXNvbWUgKGxhbWJk YSAoZWx0KQorICAgICAgICAgICAgICAgICAgKGFuZCAoZXEgKGNhciBlbHQpIHRoaW5nKQor ICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCAoY2RyIGVsdCkgbikpKQorICAgICAg ICAgICAgICAgIGZvcndhcmQtdGhpbmctcHJvdmlkZXItYWxpc3QpCisgICAgICAobGV0ICgo Zm9yd2FyZC1vcCAob3IgKGdldCB0aGluZyAnZm9yd2FyZC1vcCkKKwkJCSAgICAoaW50ZXJu LXNvZnQgKGZvcm1hdCAiZm9yd2FyZC0lcyIgdGhpbmcpKSkpKQorICAgICAgICAoaWYgKGZ1 bmN0aW9ucCBmb3J3YXJkLW9wKQorCSAgICAoZnVuY2FsbCBmb3J3YXJkLW9wIG4pCisgICAg ICAgICAgKGVycm9yICJDYW4ndCBkZXRlcm1pbmUgaG93IHRvIG1vdmUgb3ZlciBhICVzIiB0 aGluZykpKSkpCiAKIDs7IEdlbmVyYWwgcm91dGluZXMKIApAQCAtMTA2LDYgKzEzMiwxMCBA QCBib3VuZHMtb2YtdGhpbmctYXQtcG9pbnQKIFJldHVybiBhIGNvbnMgY2VsbCAoU1RBUlQg LiBFTkQpIGdpdmluZyB0aGUgc3RhcnQgYW5kIGVuZAogcG9zaXRpb25zIG9mIHRoZSB0aGlu ZyBmb3VuZC4iCiAgIChjb25kCisgICAoKHNlcS1zb21lIChsYW1iZGEgKGVsdCkKKyAgICAg ICAgICAgICAgICAoYW5kIChlcSAoY2FyIGVsdCkgdGhpbmcpCisgICAgICAgICAgICAgICAg ICAgICAoZnVuY2FsbCAoY2RyIGVsdCkpKSkKKyAgICAgICAgICAgICAgICBib3VuZHMtb2Yt dGhpbmctYXQtcG9pbnQtcHJvdmlkZXItYWxpc3QpKQogICAgKChnZXQgdGhpbmcgJ2JvdW5k cy1vZi10aGluZy1hdC1wb2ludCkKICAgICAoZnVuY2FsbCAoZ2V0IHRoaW5nICdib3VuZHMt b2YtdGhpbmctYXQtcG9pbnQpKSkKICAgIDs7IElmIHRoZSBidWZmZXIgaXMgdG90YWxseSBl bXB0eSwgZ2l2ZSB1cC4KQEAgLTc3NSw0ICs4MDUsMzUgQEAgbGlzdC1hdC1wb2ludAogICAg ICAgKGdvdG8tY2hhciAob3IgKG50aCA4IHBwc3MpIChwb2ludCkpKQogICAgICAgKGZvcm0t YXQtcG9pbnQgJ2xpc3QgJ2xpc3RwKSkpKQogCisoYXV0b2xvYWQgJ3RleHQtcHJvcGVydHkt c2VhcmNoLWZvcndhcmQgInRleHQtcHJvcGVydHktc2VhcmNoIikKKyhhdXRvbG9hZCAndGV4 dC1wcm9wZXJ0eS1zZWFyY2gtYmFja3dhcmQgInRleHQtcHJvcGVydHktc2VhcmNoIikKKyhh dXRvbG9hZCAncHJvcC1tYXRjaC1iZWdpbm5pbmcgInRleHQtcHJvcGVydHktc2VhcmNoIikK KyhhdXRvbG9hZCAncHJvcC1tYXRjaC1lbmQgInRleHQtcHJvcGVydHktc2VhcmNoIikKKwor KGRlZnVuIGZvcndhcmQtdGhpbmctZm9yLXRleHQtcHJvcGVydHkgKHByb3BlcnR5IG4pCisg ICJNb3ZlIGZvcndhcmQgdG8gdGhlIGVuZCBvZiB0aGUgTnRoIG5leHQgXCJ0aGluZ1wiLgor RWFjaCBcInRoaW5nXCIgaXMgYSByZWdpb24gb2YgdGV4dCB3aXRoIHRoZSBzcGVjaWZpZWQg dGV4dCBQUk9QRVJUWSBzZXQuIgorICAobGV0ICgoc2VhcmNoLWZ1bmMgKGlmICg+IG4gMCkg Iyd0ZXh0LXByb3BlcnR5LXNlYXJjaC1mb3J3YXJkCisgICAgICAgICAgICAgICAgICAgICAg ICMndGV4dC1wcm9wZXJ0eS1zZWFyY2gtYmFja3dhcmQpKQorICAgICAgICAocG9zLWZ1bmMg KGlmICg+IG4gMCkgIydwcm9wLW1hdGNoLWVuZCAjJ3Byb3AtbWF0Y2gtYmVnaW5uaW5nKSkK KyAgICAgICAgKGxpbWl0IChpZiAoPiBuIDApIChwb2ludC1tYXgpIChwb2ludC1taW4pKSkp CisgICAgKGNhdGNoICdkb25lCisgICAgICAoZG90aW1lcyAoXyAoYWJzIG4pKQorICAgICAg ICAoaWYtbGV0ICgobWF0Y2ggKGZ1bmNhbGwgc2VhcmNoLWZ1bmMgcHJvcGVydHkpKSkKKyAg ICAgICAgICAgIChnb3RvLWNoYXIgKGZ1bmNhbGwgcG9zLWZ1bmMgbWF0Y2gpKQorICAgICAg ICAgIChnb3RvLWNoYXIgbGltaXQpCisgICAgICAgICAgKHRocm93ICdkb25lIHQpKSkpCisg ICAgOzsgUmV0dXJuIG5vbi1uaWwuCisgICAgdCkpCisKKyhkZWZ1biBib3VuZHMtb2YtdGhp bmctYXQtcG9pbnQtZm9yLXRleHQtcHJvcGVydHkgKHByb3BlcnR5KQorICAiRGV0ZXJtaW5l IHRoZSBzdGFydCBhbmQgZW5kIGJ1ZmZlciBsb2NhdGlvbnMgZm9yIHRoZSBcInRoaW5nXCIg YXQgcG9pbnQuCitUaGUgXCJ0aGluZ1wiIGlzIGEgcmVnaW9uIG9mIHRleHQgd2l0aCB0aGUg c3BlY2lmaWVkIHRleHQgUFJPUEVSVFkgc2V0LiIKKyAgKHdoZW4gKGdldC10ZXh0LXByb3Bl cnR5IChwb2ludCkgcHJvcGVydHkpCisgICAgKGNvbnMgKG9yIChwcmV2aW91cy1zaW5nbGUt cHJvcGVydHktY2hhbmdlCisgICAgICAgICAgICAgICAobWluICgxKyAocG9pbnQpKSAocG9p bnQtbWF4KSkgcHJvcGVydHkpCisgICAgICAgICAgICAgIChwb2ludC1taW4pKQorICAgICAg ICAgIChvciAobmV4dC1zaW5nbGUtcHJvcGVydHktY2hhbmdlIChwb2ludCkgcHJvcGVydHkp CisgICAgICAgICAgICAgIChwb2ludC1tYXgpKSkpKQorCiA7OzsgdGhpbmdhdHB0LmVsIGVu ZHMgaGVyZQpkaWZmIC0tZ2l0IGEvdGVzdC9saXNwL3RoaW5nYXRwdC10ZXN0cy5lbCBiL3Rl c3QvbGlzcC90aGluZ2F0cHQtdGVzdHMuZWwKaW5kZXggZTUwNzM4ZjExMjIuLjI2ZTIwZjU4 YmU3IDEwMDY0NAotLS0gYS90ZXN0L2xpc3AvdGhpbmdhdHB0LXRlc3RzLmVsCisrKyBiL3Rl c3QvbGlzcC90aGluZ2F0cHQtdGVzdHMuZWwKQEAgLTI1OCw0ICsyNTgsNDAgQEAgdGVzdC1u dW1iZXJzLWhleC1jCiAgIChzaG91bGQgKGVxdWFsICh0ZXN0LS1udW1iZXIgIjB4ZjAwIiAy KSAzODQwKSkKICAgKHNob3VsZCAoZXF1YWwgKHRlc3QtLW51bWJlciAiMHhmMDAiIDMpIDM4 NDApKSkKIAorKGVydC1kZWZ0ZXN0IHRoaW5nLWF0LXBvaW50LXByb3ZpZGVycyAoKQorICAo d2l0aC10ZW1wLWJ1ZmZlcgorICAgIChzZXRxLWxvY2FsIHRoaW5nLWF0LXBvaW50LXByb3Zp ZGVyLWFsaXN0CisgICAgICAgICAgICAgICAgYCgodXJsIC4gLChsYW1iZGEgKCkgKGdldC10 ZXh0LXByb3BlcnR5IChwb2ludCkgJ215LXVybCkpKSkpCisgICAgKGluc2VydCAocHJvcGVy dGl6ZSAiaGVsbG8iICdteS11cmwgInRlc3QiKSkKKyAgICAoZ290by1jaGFyIChwb2ludC1t aW4pKQorICAgIChzaG91bGQgKGVxdWFsICh0aGluZy1hdC1wb2ludCAndXJsKSAidGVzdCIp KQorICAgIChzaG91bGQgKGVxdWFsICh0aGluZy1hdC1wb2ludCAnd29yZCkgImhlbGxvIikp KSkKKworKGVydC1kZWZ0ZXN0IGZvcndhcmQtdGhpbmctcHJvdmlkZXJzICgpCisgICh3aXRo LXRlbXAtYnVmZmVyCisgICAgKHNldHEtbG9jYWwgZm9yd2FyZC10aGluZy1wcm92aWRlci1h bGlzdAorICAgICAgICAgICAgICAgIGAoKHVybCAuICwobGFtYmRhIChuKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChmb3J3YXJkLXRoaW5nLWZvci10ZXh0LXByb3BlcnR5ICdt eS11cmwgbikpKSkpCisgICAgKGluc2VydCAocHJvcGVydGl6ZSAiZm9vIiAnbXktdXJsICJ0 ZXN0IikgImJhciIpCisgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAoc2hvdWxk IChlcSAoc2F2ZS1leGN1cnNpb24gKGZvcndhcmQtdGhpbmcgJ3VybCkgKHBvaW50KSkgNCkp CisgICAgKHNob3VsZCAoZXEgKHNhdmUtZXhjdXJzaW9uIChmb3J3YXJkLXRoaW5nICd3b3Jk KSAocG9pbnQpKSA3KSkpKQorCisoZXJ0LWRlZnRlc3QgYm91bmRzLW9mLXRoaW5nLWF0LXBv aW50LXByb3ZpZGVycyAoKQorICAod2l0aC10ZW1wLWJ1ZmZlcgorICAgIChzZXRxLWxvY2Fs IGJvdW5kcy1vZi10aGluZy1hdC1wb2ludC1wcm92aWRlci1hbGlzdAorICAgICAgICAgICAg ICAgIGAoKHVybCAuICwobGFtYmRhICgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGJvdW5kcy1vZi10aGluZy1hdC1wb2ludC1mb3ItdGV4dC1wcm9wZXJ0eQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnbXktdXJsKSkpKSkKKyAgICAoaW5zZXJ0IChwcm9wZXJ0 aXplICJmb28iICdteS11cmwgInRlc3QiKSAiYmFyIikKKyAgICAoZ290by1jaGFyIChwb2lu dC1taW4pKQorICAgIDs7IExvb2sgZm9yIGEgIlVSTCIsIHVzaW5nIG91ciBwcm92aWRlciBh Ym92ZS4KKyAgICAoc2hvdWxkIChlcXVhbCAoYm91bmRzLW9mLXRoaW5nLWF0LXBvaW50ICd1 cmwpICcoMSAuIDQpKSkKKyAgICAoc2hvdWxkIChlcSAoc2F2ZS1leGN1cnNpb24gKGJlZ2lu bmluZy1vZi10aGluZyAndXJsKSkgMSkpCisgICAgKHNob3VsZCAoZXEgKHNhdmUtZXhjdXJz aW9uIChlbmQtb2YtdGhpbmcgJ3VybCkpIDQpKQorICAgIDs7IExvb2sgZm9yIGEgd29yZCwg d2hpY2ggc2hvdWxkICpub3QqIHVzZSBvdXIgcHJvdmlkZXIgYWJvdmUuCisgICAgKHNob3Vs ZCAoZXF1YWwgKGJvdW5kcy1vZi10aGluZy1hdC1wb2ludCAnd29yZCkgJygxIC4gNykpKQor ICAgIChzaG91bGQgKGVxIChzYXZlLWV4Y3Vyc2lvbiAoYmVnaW5uaW5nLW9mLXRoaW5nICd3 b3JkKSkgMSkpCisgICAgKHNob3VsZCAoZXEgKHNhdmUtZXhjdXJzaW9uIChlbmQtb2YtdGhp bmcgJ3dvcmQpKSA3KSkpKQorCiA7OzsgdGhpbmdhdHB0LXRlc3RzLmVsIGVuZHMgaGVyZQot LSAKMi4yNS4xCgo= --------------Dt9230sjNJ7zDeYseJtX6Zqh--