From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Noah Peart Newsgroups: gmane.emacs.bugs Subject: bug#70464: [PATCH] Add font-locking for Rust macro variables Date: Fri, 19 Apr 2024 10:38:07 -0700 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000a35ac60616768d3e" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="2113"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Yuan Fu , 70464@debbugs.gnu.org To: Vladimir Kazanov Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Apr 19 19:39:23 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 1rxsCo-0000Kd-V6 for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 19 Apr 2024 19:39:23 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rxsCJ-0004b3-Ar; Fri, 19 Apr 2024 13:38:51 -0400 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 1rxsCH-0004a0-0j for bug-gnu-emacs@gnu.org; Fri, 19 Apr 2024 13:38:49 -0400 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 1rxsCF-00040C-Ub for bug-gnu-emacs@gnu.org; Fri, 19 Apr 2024 13:38:48 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rxsCU-0005F7-1c for bug-gnu-emacs@gnu.org; Fri, 19 Apr 2024 13:39:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Noah Peart Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 19 Apr 2024 17:39:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 70464 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 70464-submit@debbugs.gnu.org id=B70464.171354832620023 (code B ref 70464); Fri, 19 Apr 2024 17:39:02 +0000 Original-Received: (at 70464) by debbugs.gnu.org; 19 Apr 2024 17:38:46 +0000 Original-Received: from localhost ([127.0.0.1]:59389 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rxsCB-0005CV-RK for submit@debbugs.gnu.org; Fri, 19 Apr 2024 13:38:45 -0400 Original-Received: from mail-oa1-x2b.google.com ([2001:4860:4864:20::2b]:55679) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rxsC6-0005B8-PP for 70464@debbugs.gnu.org; Fri, 19 Apr 2024 13:38:41 -0400 Original-Received: by mail-oa1-x2b.google.com with SMTP id 586e51a60fabf-232f2b86e4fso1088223fac.3 for <70464@debbugs.gnu.org>; Fri, 19 Apr 2024 10:38:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713548299; x=1714153099; 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=80yJ0wknoYYuw1vNNFZ8YpVradtgV//5hR1VC+lKCis=; b=aknvuWbm0btttCA0QilAH9Kx5w88i9OA+aAFKxR/JmogHx3SquUrmSQYmjwqQN0o+o LyDdDNKSkz71lMNxUfN7jMxQot4RIHszFW79HSCUiMGWzkn/PU4Ivv28nyv4Gb6fu4ZM qgA2dUeDQ9G/XDWZV8amHLmZ6VOZuvywzH8UxyMjTf4KOgwHaZpkJAU/zWQeKo2Zn/ew yJkmpKj+fnEMnlGl3tE1PJ5pFTOegYGa3hKJQUmbusalIoCdICmhCYeI0KMZVzEfbOcT m/nNr4a0499sCdIXNiucVzuiPpWLcAfBnQwyUHdXy0aWPJBagiEe9QZQhbjixbw2Yke4 akCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713548299; x=1714153099; 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=80yJ0wknoYYuw1vNNFZ8YpVradtgV//5hR1VC+lKCis=; b=K5rsxCr04+oQj3b9IkNqCFu7HOmp9+b1aUT2dGV0XmX/FOLqGKUICYi6yIJKDoQlBH nVZSoqUfX4VF0chyIS5o7a0ZecgW5JYRxlQccKen3ltPrPT+jRkSsg7MU6Xa26BQBfCG D8PME0HAfazFVDPwmpR/uLmwMkjx+c5jr0mlThVYWEdWhfgORC0His8MxHjB6GUYWDCF TKONOIC5jdv/fSy1u+1Yg5M9DmwUbbnKpp0wLP6GEUgyUyAHIfHkVIYcfQFdBJMrexAS 2/qgOW0Wy21nbLjzZWk0qJcWNstoyNBwoSzB60tepged0lpgWQX8okHE9NlSOv/3uj8Y N0xQ== X-Forwarded-Encrypted: i=1; AJvYcCVAiLZf+Vn22S+5V/EZ7LnOvzINrWn11TCcM16/MMwAd04StD/kdb8Dce/l+tjZDoI8oU0JNHjErHVMrMFs0bwCtmsRBI4= X-Gm-Message-State: AOJu0YwMctpJXttpPXX9k1aa3//cDkoknBJkrnXFz5mnP7z2xfYw6pd2 LSbnAYB2OBPODJnzj966/K8gNQGHu5gbFKga+5Oe846ynH1ytVTSJbEGmksEL6JBmWeSyeIyhVE fgZMUe87LO3EVqf3W/mZMKtxFp/4= X-Google-Smtp-Source: AGHT+IGLl7v/0XlSDipMpDbi5EW9eZdhqZpWSHLfk3fcvwytMqm//x+dbbMyQC+knEs2wBejvLIi1p9Ii9tsLMvnMzY= X-Received: by 2002:a05:6870:791:b0:233:36dd:9218 with SMTP id en17-20020a056870079100b0023336dd9218mr3224780oab.20.1713548298458; Fri, 19 Apr 2024 10:38:18 -0700 (PDT) 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:283695 Archived-At: --000000000000a35ac60616768d3e Content-Type: multipart/alternative; boundary="000000000000a35ac40616768d3c" --000000000000a35ac40616768d3c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable I've attached a patch with font-locking tests for the recent additions in (bug#70464) and (bug#70465). So, it will fail without those being merged. Thanks! On Fri, Apr 19, 2024 at 9:44=E2=80=AFAM Noah Peart = wrote: > Sounds good! > > > If you=E2=80=99re interested, maybe you can take a look at ert-font-loc= k, and > add some tests that cover the bugs your patches fixes? > > Sure thing, Ill look into that. > > On Fri, Apr 19, 2024 at 1:02=E2=80=AFAM Vladimir Kazanov > wrote: > >> Noah, >> >> ...and if you decide to add ert-font-lock tests and something is not >> working as expected - let me know, happy to fix or extend >> ert-font-lock. >> >> Thanks! >> >> On Fri, 19 Apr 2024 at 08:42, Yuan Fu wrote: >> > >> > >> > Noah Peart writes: >> > >> > > Tags: patch >> > > >> > > Adds some tree-sitter font-locking rules in rust-ts-mode to fontify >> > > meta variables, their types, and repetition operators in macros. >> > > >> > > These rules add new font-locking as indicated in the following >> > > snippet: >> > > >> > > macro_rules! unsafe_raw_call { >> > > ($env:expr, $name:ident $(, $args:expr)*) =3D> { >> > > // ^ font-lock-variable-name-face >> > > // ^ font-lock-type-face >> > > // ^ >> font-lock-operator-face >> > > // >> ^ font-lock-operator-face >> > > { >> > > let env =3D $env; >> > > // ^ font-lock-variable-use-face >> > > let result =3D unsafe { >> > > let $name =3D raw_fn!(env, $name); >> > > $name(env.raw $(, $args)*) >> > > }; >> > > env.handle_exit(result) >> > > } >> > > }; >> > > } >> > > >> > > I also removed the last occurrence of the following duplicated rule >> from the `type` feature: >> > > (type_identifier) @font-lock-type-face >> > > >> > >> > Great! Thanks! I=E2=80=99ll merge this in some time once I figure out = whether >> > should we apply it to emacs-29 or master. >> > >> > Meanwhile, it seems that you=E2=80=99ve recently working on tree-sitte= r modes. >> > If you=E2=80=99re interested, maybe you can take a look at ert-font-lo= ck, and >> > add some tests that cover the bugs your patches fixes? This is >> > completely optional, of course. I bought it up because I think you mig= ht >> > be interested. >> > >> > Yuan >> > >> > >> > >> >> >> -- >> Regards, >> >> Vladimir Kazanov >> > --000000000000a35ac40616768d3c Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
I've attached a patch with font-locking tests for the = recent additions
in=C2=A0(bug#70464) and=C2=A0(bug#70465).=C2=A0 So, it= will fail without those being
merged.

T= hanks!

On Fri, Apr 19, 2024 at 9:44=E2=80=AFAM Noah Peart <noah.v.peart@gmail.com> wrote:
<= div>Sounds good!

> If you=E2=80=99re interested, may= be you can take a look at ert-font-lock, and
add some tests that cover t= he bugs your patches fixes?

Sure thing, Ill=C2=A0look in= to that.

On Fri, Apr 19, 2024 at 1:02=E2=80=AFAM Vladimir Kazanov &l= t;vekazanov@gmail.= com> wrote:
Noah,

...and if you decide to add ert-font-lock tests and something is not
working as expected - let me know, happy to fix or extend
ert-font-lock.

Thanks!

On Fri, 19 Apr 2024 at 08:42, Yuan Fu <casouri@gmail.com> wrote:
>
>
> Noah Peart <noah.v.peart@gmail.com> writes:
>
> > Tags: patch
> >
> > Adds some tree-sitter font-locking rules in rust-ts-mode to fonti= fy
> > meta variables, their types, and repetition operators in macros.<= br> > >
> > These rules add new font-locking as indicated in the following > > snippet:
> >
> >=C2=A0 =C2=A0 =C2=A0macro_rules! unsafe_raw_call {
> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0($env:expr, $name:ident $(, $arg= s:expr)*) =3D> {
> > //=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ^ font-lock-variable-name-fa= ce
> > //=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = ^ font-lock-type-face
> > //=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 ^ font-lock-operator-face
> > //=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0^ font-lock-operator-face
> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0{
> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0let = env =3D $env;
> > //=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ^ font-lock-variable-use-f= ace
> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0let = result =3D unsafe {
> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0let $name =3D raw_fn!(env, $name);
> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0$name(env.raw $(, $args)*)
> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}; > >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0env.= handle_exit(result)
> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}
> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0};
> >=C2=A0 =C2=A0 =C2=A0}
> >
> > I also removed the last occurrence of the following duplicated ru= le from the `type` feature:
> >=C2=A0 =C2=A0 =C2=A0(type_identifier) @font-lock-type-face
> >
>
> Great! Thanks! I=E2=80=99ll merge this in some time once I figure out = whether
> should we apply it to emacs-29 or master.
>
> Meanwhile, it seems that you=E2=80=99ve recently working on tree-sitte= r modes.
> If you=E2=80=99re interested, maybe you can take a look at ert-font-lo= ck, and
> add some tests that cover the bugs your patches fixes? This is
> completely optional, of course. I bought it up because I think you mig= ht
> be interested.
>
> Yuan
>
>
>


--
Regards,

Vladimir Kazanov
--000000000000a35ac40616768d3c-- --000000000000a35ac60616768d3e Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Add-rust-ts-mode-font-locking-tests.patch" Content-Disposition: attachment; filename="0001-Add-rust-ts-mode-font-locking-tests.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lv6yddqq0 RnJvbSBhMDkwYjZkYzA2ZDQzZWM1OTA0ZGIwMDI4NzEwZDAwYzJhMGU3YWNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb2FoIFBlYXJ0IDxub2FoLnYucGVhcnRAZ21haWwuY29tPgpE YXRlOiBGcmksIDE5IEFwciAyMDI0IDEwOjI3OjEwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQWRk IHJ1c3QtdHMtbW9kZSBmb250LWxvY2tpbmcgdGVzdHMKCiogdGVzdC9saXNwL3Byb2dtb2Rlcy9y dXN0LXRzLW1vZGUtdGVzdHMuZWw6IE5ldyBmaWxlIGZvcgpydXN0LXRzLW1vZGUgdGVzdHMuCiog dGVzdC9saXNwL3Byb2dtb2Rlcy9ydXN0LXRzLW1vZGUtcmVzb3VyY2VzL2ZvbnQtbG9jay5yczog TmV3CmZpbGUgd2l0aCBydXN0LXRzLW1vZGUgZm9udC1sb2NraW5nIHRlc3RzLiBOZXcgdGVzdHMg YWRkZWQgZm9yCm1hY3JvIGZvbnQtbG9ja2luZyAoYnVnIzcwNDY0KSBhbmQgZnVuY3Rpb24gc2ln bmF0dXJlcwooYnVnIzcwNDY1KS4KLS0tCiAuLi4vcnVzdC10cy1tb2RlLXJlc291cmNlcy9mb250 LWxvY2sucnMgICAgICAgfCAyNSArKysrKysrKysrKysrKwogdGVzdC9saXNwL3Byb2dtb2Rlcy9y dXN0LXRzLW1vZGUtdGVzdHMuZWwgICAgIHwgMzQgKysrKysrKysrKysrKysrKysrKwogMiBmaWxl cyBjaGFuZ2VkLCA1OSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC9saXNw L3Byb2dtb2Rlcy9ydXN0LXRzLW1vZGUtcmVzb3VyY2VzL2ZvbnQtbG9jay5ycwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHRlc3QvbGlzcC9wcm9nbW9kZXMvcnVzdC10cy1tb2RlLXRlc3RzLmVsCgpkaWZm IC0tZ2l0IGEvdGVzdC9saXNwL3Byb2dtb2Rlcy9ydXN0LXRzLW1vZGUtcmVzb3VyY2VzL2ZvbnQt bG9jay5ycyBiL3Rlc3QvbGlzcC9wcm9nbW9kZXMvcnVzdC10cy1tb2RlLXJlc291cmNlcy9mb250 LWxvY2sucnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM3N2NkYTBl M2I5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9saXNwL3Byb2dtb2Rlcy9ydXN0LXRzLW1vZGUt cmVzb3VyY2VzL2ZvbnQtbG9jay5ycwpAQCAtMCwwICsxLDI1IEBACisvLyAtKi0gcnVzdC10cy1t b2RlLWluZGVudC1vZmZzZXQ6IDAgLSotCisvLyBUcmFpdCB3aXRoIGZ1bmN0aW9uIHNpZ25hdHVy ZQordHJhaXQgRm9vIHsKKyAgICBmbiBmb28oKTsKKy8vICAgICAgXiBmb250LWxvY2stZnVuY3Rp b24tbmFtZS1mYWNlCit9CisKKy8vIE1hY3JvcworbWFjcm9fcnVsZXMhIHVuc2FmZV9mb28gewor ICAgICgkZW52OmV4cHIsICRuYW1lOmlkZW50ICQoLCAkYXJnczpleHByKSopID0+IHsKKy8vICAg IF4gZm9udC1sb2NrLXZhcmlhYmxlLW5hbWUtZmFjZQorLy8gICAgICAgICBeIGZvbnQtbG9jay10 eXBlLWZhY2UKKy8vICAgICAgICAgICAgICAgIF4gZm9udC1sb2NrLXZhcmlhYmxlLW5hbWUtZmFj ZQorLy8gICAgICAgICAgICAgICAgICAgICAgXiBmb250LWxvY2stdHlwZS1mYWNlCisvLyAgICAg ICAgICAgICAgICAgICAgICAgICAgXiBmb250LWxvY2stb3BlcmF0b3ItZmFjZQorLy8gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4gZm9udC1sb2NrLXZhcmlhYmxlLW5hbWUtZmFjZQor Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gZm9udC1sb2NrLXR5cGUt ZmFjZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gZm9udC1s b2NrLW9wZXJhdG9yLWZhY2UKKyAgICAgICAgeworICAgICAgICAgICAgZm9vISgkZW52LCAkbmFt ZSAkKCwgJGFyZ3MpKik7CisvLyAgICAgICAgICAgICAgICBeIGZvbnQtbG9jay12YXJpYWJsZS11 c2UtZmFjZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICBeIGZvbnQtbG9jay1vcGVyYXRv ci1mYWNlCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIGZvbnQtbG9j ay1vcGVyYXRvci1mYWNlCisgICAgICAgIH0KKyAgICB9OwpkaWZmIC0tZ2l0IGEvdGVzdC9saXNw L3Byb2dtb2Rlcy9ydXN0LXRzLW1vZGUtdGVzdHMuZWwgYi90ZXN0L2xpc3AvcHJvZ21vZGVzL3J1 c3QtdHMtbW9kZS10ZXN0cy5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uZjcxOGE1N2ZjOWUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2xpc3AvcHJvZ21vZGVzL3J1 c3QtdHMtbW9kZS10ZXN0cy5lbApAQCAtMCwwICsxLDM0IEBACis7OzsgcnVzdC10cy1tb2RlLXRl c3RzLmVsIC0tLSBUZXN0cyBmb3IgcnVzdC10cy1tb2RlIC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQ7 IC0qLQorCis7OyBDb3B5cmlnaHQgKEMpIDIwMjMtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKworOzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEVtYWNzLgorCis7OyBHTlUg RW1hY3MgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKzs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCis7OyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorCis7OyBHTlUgRW1hY3MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKzs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7OyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCis7OyBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCis7OyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorOzsg YWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorCis7OzsgQ29kZToKKworKHJlcXVpcmUgJ2VydCkKKyhyZXF1aXJlICdlcnQt Zm9udC1sb2NrKQorKHJlcXVpcmUgJ2VydC14KQorKHJlcXVpcmUgJ3RyZWVzaXQpCisKKyhlcnQt ZGVmdGVzdCBydXN0LXRzLXRlc3QtZm9udC1sb2NrICgpCisgIChza2lwLXVubGVzcyAodHJlZXNp dC1yZWFkeS1wICdydXN0KSkKKyAgKGxldCAoKHRyZWVzaXQtZm9udC1sb2NrLWxldmVsIDQpKQor ICAgIChlcnQtZm9udC1sb2NrLXRlc3QtZmlsZSAoZXJ0LXJlc291cmNlLWZpbGUgImZvbnQtbG9j ay5ycyIpICdydXN0LXRzLW1vZGUpKSkKKworKHByb3ZpZGUgJ3J1c3QtdHMtbW9kZS10ZXN0cykK KworOzs7IHJ1c3QtdHMtbW9kZS10ZXN0cy5lbCBlbmRzIGhlcmUKLS0gCjIuMzQuMQoK --000000000000a35ac60616768d3e--