From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AE80CC54E4A for ; Tue, 12 May 2020 07:43:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 989392075E for ; Tue, 12 May 2020 07:43:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728924AbgELHns convert rfc822-to-8bit (ORCPT ); Tue, 12 May 2020 03:43:48 -0400 Received: from mail-ot1-f66.google.com ([209.85.210.66]:46193 "EHLO mail-ot1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725823AbgELHnr (ORCPT ); Tue, 12 May 2020 03:43:47 -0400 Received: by mail-ot1-f66.google.com with SMTP id z25so9733775otq.13; Tue, 12 May 2020 00:43:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=WL99cZpSCjAY9uTUemuiOdybxhEn/p8SNKkMW2pnMgk=; b=UWfiuJ1JfrhBaZAuKcvb251vQMZUZxP6ntM+CasVEGUuDByMshQ4AkU7RrnO4/SlLz X4oYzFb6UliokNfhYEgnBC0nnyNQpZmc+O7fGZr5amyPhr1cIIe/4rSuCm8gqlgj/FQr ++kyEpzk6RO3nmTIGO0Uge5OlEHbsOKrpeHDSmItzOri1HNVpqoGdEJofGG4IAmpumTj UPTpxnUFJwSNCambQMmeRTyoozBAdUSt08yoJl9zYDbQj51ZR14f1cSCR9BNXhVy1irk i4U5SA/GB+/uUEvfLp0GITSwUidSTuTtLBsJXY8MztmWIbRjXsQb/HUdmHpPKshIyDnE HYXA== X-Gm-Message-State: AGi0PuanBb5RTaSTFotTjFYhnFbmUJ66ufhnGx5DFq9u/NqaDRTOs8Dk 7AafZ7YqJzOjnKxR3HJPE4g5NTLs9qfmqCKOUcQ= X-Google-Smtp-Source: APiQypIDWmbHTXLtnOKXo30M5B3vTkf3nDlAfbBCqheKh4YZxA4lrYnndNhzQpgu3wBVeeut/IwxOF4lTFymYCLt8jo= X-Received: by 2002:a9d:7990:: with SMTP id h16mr15276353otm.145.1589269426183; Tue, 12 May 2020 00:43:46 -0700 (PDT) MIME-Version: 1.0 References: <20200511154930.190212-1-Jerome.Pouiller@silabs.com> <20200511154930.190212-14-Jerome.Pouiller@silabs.com> In-Reply-To: <20200511154930.190212-14-Jerome.Pouiller@silabs.com> From: Geert Uytterhoeven Date: Tue, 12 May 2020 09:43:34 +0200 Message-ID: Subject: Re: [PATCH 13/17] staging: wfx: fix endianness of the field 'len' To: Jerome Pouiller Cc: driverdevel , linux-wireless , netdev , Linux Kernel Mailing List , Greg Kroah-Hartman , Kalle Valo , "David S . Miller" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Hi Jerome, On Mon, May 11, 2020 at 5:53 PM Jerome Pouiller wrote: > From: Jérôme Pouiller > > The struct hif_msg is received from the hardware. So, it declared as > little endian. However, it is also accessed from many places in the > driver. Sparse complains about that: > > drivers/staging/wfx/bh.c:88:32: warning: restricted __le16 degrades to integer > drivers/staging/wfx/bh.c:88:32: warning: restricted __le16 degrades to integer > drivers/staging/wfx/bh.c:93:32: warning: restricted __le16 degrades to integer > drivers/staging/wfx/bh.c:93:32: warning: cast to restricted __le16 > drivers/staging/wfx/bh.c:93:32: warning: restricted __le16 degrades to integer > drivers/staging/wfx/bh.c:121:25: warning: incorrect type in argument 2 (different base types) > drivers/staging/wfx/bh.c:121:25: expected unsigned int len > drivers/staging/wfx/bh.c:121:25: got restricted __le16 [usertype] len > drivers/staging/wfx/hif_rx.c:27:22: warning: restricted __le16 degrades to integer > drivers/staging/wfx/hif_rx.c:347:39: warning: incorrect type in argument 7 (different base types) > drivers/staging/wfx/hif_rx.c:347:39: expected unsigned int [usertype] len > drivers/staging/wfx/hif_rx.c:347:39: got restricted __le16 const [usertype] len > drivers/staging/wfx/hif_rx.c:365:39: warning: incorrect type in argument 7 (different base types) > drivers/staging/wfx/hif_rx.c:365:39: expected unsigned int [usertype] len > drivers/staging/wfx/hif_rx.c:365:39: got restricted __le16 const [usertype] len > drivers/staging/wfx/./traces.h:195:1: warning: incorrect type in assignment (different base types) > drivers/staging/wfx/./traces.h:195:1: expected int msg_len > drivers/staging/wfx/./traces.h:195:1: got restricted __le16 const [usertype] len > drivers/staging/wfx/./traces.h:195:1: warning: incorrect type in assignment (different base types) > drivers/staging/wfx/./traces.h:195:1: expected int msg_len > drivers/staging/wfx/./traces.h:195:1: got restricted __le16 const [usertype] len > drivers/staging/wfx/debug.c:319:20: warning: restricted __le16 degrades to integer > drivers/staging/wfx/secure_link.c:85:27: warning: restricted __le16 degrades to integer > drivers/staging/wfx/secure_link.c:85:27: warning: restricted __le16 degrades to integer Thanks for your patch! > In order to make Sparse happy and to keep access from the driver easy, > this patch declare 'len' with native endianness. > > On reception of hardware data, this patch takes care to do byte-swap and > keep Sparse happy. Which means sparse can no longer do any checking on the field, and new bugs may/will creep in in the future, unnoticed. > --- a/drivers/staging/wfx/hif_api_general.h > +++ b/drivers/staging/wfx/hif_api_general.h > @@ -23,7 +23,10 @@ > #define HIF_COUNTER_MAX 7 > > struct hif_msg { > - __le16 len; > + // len is in fact little endian. However, it is widely used in the > + // driver, so we declare it in native byte order and we reorder just > + // before/after send/receive it (see bh.c). > + u16 len; While there's a small penalty associated with always doing the conversion on big-endian platforms, it will probably be lost in the noise anyway. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E1639C54E4B for ; Tue, 12 May 2020 07:43:51 +0000 (UTC) Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id AC85320736 for ; Tue, 12 May 2020 07:43:51 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AC85320736 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=linux-m68k.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=driverdev-devel-bounces@linuxdriverproject.org Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 83B4C86AAE; Tue, 12 May 2020 07:43:51 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id DjcSGrxTX6-6; Tue, 12 May 2020 07:43:50 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by fraxinus.osuosl.org (Postfix) with ESMTP id 9055686A44; Tue, 12 May 2020 07:43:50 +0000 (UTC) Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by ash.osuosl.org (Postfix) with ESMTP id 943AA1BF2C7 for ; Tue, 12 May 2020 07:43:48 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 8D46F88618 for ; Tue, 12 May 2020 07:43:48 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5Kble14uPgm0 for ; Tue, 12 May 2020 07:43:47 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-ot1-f65.google.com (mail-ot1-f65.google.com [209.85.210.65]) by hemlock.osuosl.org (Postfix) with ESMTPS id 46E7B88596 for ; Tue, 12 May 2020 07:43:47 +0000 (UTC) Received: by mail-ot1-f65.google.com with SMTP id m13so9756201otf.6 for ; Tue, 12 May 2020 00:43:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=WL99cZpSCjAY9uTUemuiOdybxhEn/p8SNKkMW2pnMgk=; b=VEhjZervjJELWU3YdP4aEEuAc9JYUj/Yb8O7t+llS5f+D+JMCWECFw/+9xi2W4lLR5 GDWYO6ALED46WOAIPlcmftQnsBm7i9NUoH1M3zxE2P/bZKbJWSBuZTloJROegVZS5y5Q GYuogawUHINh69iCIVJia6pYd95eg98Us9K+DzncFfZeVNrm559cRbHCosD26irz6b/j fP88SH/IDkMrGCZAwGu0Vzi4Y85bOG+UdbJ/k6QPcKbdmWN54odFtV/kYpMFKkqT5eOI 1Ba9azlbQgxTBKYcKxO+/PC2vf/JEGK0jyMkSCGEEVNfYH0cdZMnIvroSeyEZOJeqsaf ssSw== X-Gm-Message-State: AGi0PuYfJvCVVCTP3plIvdYPc2t1OWKbOQ+Ija4PrTukMKvFnLWyvu89 wdzuwTtD38NsTrYjAKBsXzMd9A+ZRGm/0oSoOG0= X-Google-Smtp-Source: APiQypIDWmbHTXLtnOKXo30M5B3vTkf3nDlAfbBCqheKh4YZxA4lrYnndNhzQpgu3wBVeeut/IwxOF4lTFymYCLt8jo= X-Received: by 2002:a9d:7990:: with SMTP id h16mr15276353otm.145.1589269426183; Tue, 12 May 2020 00:43:46 -0700 (PDT) MIME-Version: 1.0 References: <20200511154930.190212-1-Jerome.Pouiller@silabs.com> <20200511154930.190212-14-Jerome.Pouiller@silabs.com> In-Reply-To: <20200511154930.190212-14-Jerome.Pouiller@silabs.com> From: Geert Uytterhoeven Date: Tue, 12 May 2020 09:43:34 +0200 Message-ID: Subject: Re: [PATCH 13/17] staging: wfx: fix endianness of the field 'len' To: Jerome Pouiller X-BeenThere: driverdev-devel@linuxdriverproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Driver Project Developer List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: driverdevel , netdev , linux-wireless , Linux Kernel Mailing List , Greg Kroah-Hartman , "David S . Miller" , Kalle Valo Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" SGkgSmVyb21lLAoKT24gTW9uLCBNYXkgMTEsIDIwMjAgYXQgNTo1MyBQTSBKZXJvbWUgUG91aWxs ZXIKPEplcm9tZS5Qb3VpbGxlckBzaWxhYnMuY29tPiB3cm90ZToKPiBGcm9tOiBKw6lyw7RtZSBQ b3VpbGxlciA8amVyb21lLnBvdWlsbGVyQHNpbGFicy5jb20+Cj4KPiBUaGUgc3RydWN0IGhpZl9t c2cgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgaGFyZHdhcmUuIFNvLCBpdCBkZWNsYXJlZCBhcwo+IGxp dHRsZSBlbmRpYW4uIEhvd2V2ZXIsIGl0IGlzIGFsc28gYWNjZXNzZWQgZnJvbSBtYW55IHBsYWNl cyBpbiB0aGUKPiBkcml2ZXIuIFNwYXJzZSBjb21wbGFpbnMgYWJvdXQgdGhhdDoKPgo+ICAgICBk cml2ZXJzL3N0YWdpbmcvd2Z4L2JoLmM6ODg6MzI6IHdhcm5pbmc6IHJlc3RyaWN0ZWQgX19sZTE2 IGRlZ3JhZGVzIHRvIGludGVnZXIKPiAgICAgZHJpdmVycy9zdGFnaW5nL3dmeC9iaC5jOjg4OjMy OiB3YXJuaW5nOiByZXN0cmljdGVkIF9fbGUxNiBkZWdyYWRlcyB0byBpbnRlZ2VyCj4gICAgIGRy aXZlcnMvc3RhZ2luZy93ZngvYmguYzo5MzozMjogd2FybmluZzogcmVzdHJpY3RlZCBfX2xlMTYg ZGVncmFkZXMgdG8gaW50ZWdlcgo+ICAgICBkcml2ZXJzL3N0YWdpbmcvd2Z4L2JoLmM6OTM6MzI6 IHdhcm5pbmc6IGNhc3QgdG8gcmVzdHJpY3RlZCBfX2xlMTYKPiAgICAgZHJpdmVycy9zdGFnaW5n L3dmeC9iaC5jOjkzOjMyOiB3YXJuaW5nOiByZXN0cmljdGVkIF9fbGUxNiBkZWdyYWRlcyB0byBp bnRlZ2VyCj4gICAgIGRyaXZlcnMvc3RhZ2luZy93ZngvYmguYzoxMjE6MjU6IHdhcm5pbmc6IGlu Y29ycmVjdCB0eXBlIGluIGFyZ3VtZW50IDIgKGRpZmZlcmVudCBiYXNlIHR5cGVzKQo+ICAgICBk cml2ZXJzL3N0YWdpbmcvd2Z4L2JoLmM6MTIxOjI1OiAgICBleHBlY3RlZCB1bnNpZ25lZCBpbnQg bGVuCj4gICAgIGRyaXZlcnMvc3RhZ2luZy93ZngvYmguYzoxMjE6MjU6ICAgIGdvdCByZXN0cmlj dGVkIF9fbGUxNiBbdXNlcnR5cGVdIGxlbgo+ICAgICBkcml2ZXJzL3N0YWdpbmcvd2Z4L2hpZl9y eC5jOjI3OjIyOiB3YXJuaW5nOiByZXN0cmljdGVkIF9fbGUxNiBkZWdyYWRlcyB0byBpbnRlZ2Vy Cj4gICAgIGRyaXZlcnMvc3RhZ2luZy93ZngvaGlmX3J4LmM6MzQ3OjM5OiB3YXJuaW5nOiBpbmNv cnJlY3QgdHlwZSBpbiBhcmd1bWVudCA3IChkaWZmZXJlbnQgYmFzZSB0eXBlcykKPiAgICAgZHJp dmVycy9zdGFnaW5nL3dmeC9oaWZfcnguYzozNDc6Mzk6ICAgIGV4cGVjdGVkIHVuc2lnbmVkIGlu dCBbdXNlcnR5cGVdIGxlbgo+ICAgICBkcml2ZXJzL3N0YWdpbmcvd2Z4L2hpZl9yeC5jOjM0Nzoz OTogICAgZ290IHJlc3RyaWN0ZWQgX19sZTE2IGNvbnN0IFt1c2VydHlwZV0gbGVuCj4gICAgIGRy aXZlcnMvc3RhZ2luZy93ZngvaGlmX3J4LmM6MzY1OjM5OiB3YXJuaW5nOiBpbmNvcnJlY3QgdHlw ZSBpbiBhcmd1bWVudCA3IChkaWZmZXJlbnQgYmFzZSB0eXBlcykKPiAgICAgZHJpdmVycy9zdGFn aW5nL3dmeC9oaWZfcnguYzozNjU6Mzk6ICAgIGV4cGVjdGVkIHVuc2lnbmVkIGludCBbdXNlcnR5 cGVdIGxlbgo+ICAgICBkcml2ZXJzL3N0YWdpbmcvd2Z4L2hpZl9yeC5jOjM2NTozOTogICAgZ290 IHJlc3RyaWN0ZWQgX19sZTE2IGNvbnN0IFt1c2VydHlwZV0gbGVuCj4gICAgIGRyaXZlcnMvc3Rh Z2luZy93ZngvLi90cmFjZXMuaDoxOTU6MTogd2FybmluZzogaW5jb3JyZWN0IHR5cGUgaW4gYXNz aWdubWVudCAoZGlmZmVyZW50IGJhc2UgdHlwZXMpCj4gICAgIGRyaXZlcnMvc3RhZ2luZy93Zngv Li90cmFjZXMuaDoxOTU6MTogICAgZXhwZWN0ZWQgaW50IG1zZ19sZW4KPiAgICAgZHJpdmVycy9z dGFnaW5nL3dmeC8uL3RyYWNlcy5oOjE5NToxOiAgICBnb3QgcmVzdHJpY3RlZCBfX2xlMTYgY29u c3QgW3VzZXJ0eXBlXSBsZW4KPiAgICAgZHJpdmVycy9zdGFnaW5nL3dmeC8uL3RyYWNlcy5oOjE5 NToxOiB3YXJuaW5nOiBpbmNvcnJlY3QgdHlwZSBpbiBhc3NpZ25tZW50IChkaWZmZXJlbnQgYmFz ZSB0eXBlcykKPiAgICAgZHJpdmVycy9zdGFnaW5nL3dmeC8uL3RyYWNlcy5oOjE5NToxOiAgICBl eHBlY3RlZCBpbnQgbXNnX2xlbgo+ICAgICBkcml2ZXJzL3N0YWdpbmcvd2Z4Ly4vdHJhY2VzLmg6 MTk1OjE6ICAgIGdvdCByZXN0cmljdGVkIF9fbGUxNiBjb25zdCBbdXNlcnR5cGVdIGxlbgo+ICAg ICBkcml2ZXJzL3N0YWdpbmcvd2Z4L2RlYnVnLmM6MzE5OjIwOiB3YXJuaW5nOiByZXN0cmljdGVk IF9fbGUxNiBkZWdyYWRlcyB0byBpbnRlZ2VyCj4gICAgIGRyaXZlcnMvc3RhZ2luZy93Zngvc2Vj dXJlX2xpbmsuYzo4NToyNzogd2FybmluZzogcmVzdHJpY3RlZCBfX2xlMTYgZGVncmFkZXMgdG8g aW50ZWdlcgo+ICAgICBkcml2ZXJzL3N0YWdpbmcvd2Z4L3NlY3VyZV9saW5rLmM6ODU6Mjc6IHdh cm5pbmc6IHJlc3RyaWN0ZWQgX19sZTE2IGRlZ3JhZGVzIHRvIGludGVnZXIKClRoYW5rcyBmb3Ig eW91ciBwYXRjaCEKCj4gSW4gb3JkZXIgdG8gbWFrZSBTcGFyc2UgaGFwcHkgYW5kIHRvIGtlZXAg YWNjZXNzIGZyb20gdGhlIGRyaXZlciBlYXN5LAo+IHRoaXMgcGF0Y2ggZGVjbGFyZSAnbGVuJyB3 aXRoIG5hdGl2ZSBlbmRpYW5uZXNzLgo+Cj4gT24gcmVjZXB0aW9uIG9mIGhhcmR3YXJlIGRhdGEs IHRoaXMgcGF0Y2ggdGFrZXMgY2FyZSB0byBkbyBieXRlLXN3YXAgYW5kCj4ga2VlcCBTcGFyc2Ug aGFwcHkuCgpXaGljaCBtZWFucyBzcGFyc2UgY2FuIG5vIGxvbmdlciBkbyBhbnkgY2hlY2tpbmcg b24gdGhlIGZpZWxkLAphbmQgbmV3IGJ1Z3MgbWF5L3dpbGwgY3JlZXAgaW4gaW4gdGhlIGZ1dHVy ZSwgdW5ub3RpY2VkLgoKPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L2hpZl9hcGlfZ2VuZXJh bC5oCj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9oaWZfYXBpX2dlbmVyYWwuaAo+IEBAIC0y Myw3ICsyMywxMCBAQAo+ICAjZGVmaW5lIEhJRl9DT1VOVEVSX01BWCAgICAgICAgICAgNwo+Cj4g IHN0cnVjdCBoaWZfbXNnIHsKPiAtICAgICAgIF9fbGUxNiBsZW47Cj4gKyAgICAgICAvLyBsZW4g aXMgaW4gZmFjdCBsaXR0bGUgZW5kaWFuLiBIb3dldmVyLCBpdCBpcyB3aWRlbHkgdXNlZCBpbiB0 aGUKPiArICAgICAgIC8vIGRyaXZlciwgc28gd2UgZGVjbGFyZSBpdCBpbiBuYXRpdmUgYnl0ZSBv cmRlciBhbmQgd2UgcmVvcmRlciBqdXN0Cj4gKyAgICAgICAvLyBiZWZvcmUvYWZ0ZXIgc2VuZC9y ZWNlaXZlIGl0IChzZWUgYmguYykuCj4gKyAgICAgICB1MTYgICAgbGVuOwoKV2hpbGUgdGhlcmUn cyBhIHNtYWxsIHBlbmFsdHkgYXNzb2NpYXRlZCB3aXRoIGFsd2F5cyBkb2luZyB0aGUgY29udmVy c2lvbgpvbiBiaWctZW5kaWFuIHBsYXRmb3JtcywgaXQgd2lsbCBwcm9iYWJseSBiZSBsb3N0IGlu IHRoZSBub2lzZSBhbnl3YXkuCgpHcntvZXRqZSxlZXRpbmd9cywKCiAgICAgICAgICAgICAgICAg ICAgICAgIEdlZXJ0CgotLSAKR2VlcnQgVXl0dGVyaG9ldmVuIC0tIFRoZXJlJ3MgbG90cyBvZiBM aW51eCBiZXlvbmQgaWEzMiAtLSBnZWVydEBsaW51eC1tNjhrLm9yZwoKSW4gcGVyc29uYWwgY29u dmVyc2F0aW9ucyB3aXRoIHRlY2huaWNhbCBwZW9wbGUsIEkgY2FsbCBteXNlbGYgYSBoYWNrZXIu IEJ1dAp3aGVuIEknbSB0YWxraW5nIHRvIGpvdXJuYWxpc3RzIEkganVzdCBzYXkgInByb2dyYW1t ZXIiIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLS0gTGludXMgVG9ydmFsZHMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZGV2ZWwgbWFpbGluZyBsaXN0CmRldmVsQGxpbnV4ZHJpdmVycHJvamVjdC5v cmcKaHR0cDovL2RyaXZlcmRldi5saW51eGRyaXZlcnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpdmVyZGV2LWRldmVsCg==