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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D12C9C77B7C for ; Fri, 28 Apr 2023 10:14:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345481AbjD1KOq (ORCPT ); Fri, 28 Apr 2023 06:14:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54990 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229873AbjD1KOp (ORCPT ); Fri, 28 Apr 2023 06:14:45 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CA3702701 for ; Fri, 28 Apr 2023 03:13:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1682676834; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=o0hfmSjrbmFcUA3spV8vN0sZHy4e8avPyPdESyqTTH0=; b=h/E9rwa8KNhsRTeWV6lM5eRrAENDkqgKaVhOvKNkXhCKreGDPq2orhPsezPJKrHtIDRx0u BaRs8zG7nYngTUw4VnRon1D/NTnuEPeznGnJwBwtVSfbwFhmm8iZq/xvzrunzcGxSS1N0K z61kK6dlgStzPM3mZvKe9ffvWcogcjs= Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com [209.85.208.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-77-B62Kf7d_OuGHuAHV5fUUvA-1; Fri, 28 Apr 2023 06:13:52 -0400 X-MC-Unique: B62Kf7d_OuGHuAHV5fUUvA-1 Received: by mail-ed1-f71.google.com with SMTP id 4fb4d7f45d1cf-504ecbc85c2so10959866a12.1 for ; Fri, 28 Apr 2023 03:13:52 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682676831; x=1685268831; h=content-transfer-encoding:in-reply-to:references:to :content-language:subject:cc:user-agent:mime-version:date:message-id :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=o0hfmSjrbmFcUA3spV8vN0sZHy4e8avPyPdESyqTTH0=; b=CfzJFE8k0GlsgFFJz2B5cSsj+q7/6VLTCIq4ovVakmanjQNW+D5zjFzDIpa8Tq3YBl SYp5mnIHUba5lZUY85fXZC9qOi4FlEiu9FpccnxRJ54RYOXbimR0PYaamkFcQAhpetlh TsK8nEhPSoRmulFyCfDmZKxeETT5dAGCNyRM3/2o6oComj5NZ2IVquEbow5APmVdw07w EeBp/wQoEr1JHNyxOCl6GpWBB3ewTiRWGTkd7TDF2S35RgIHLgJbHHRfY0TSjVjtlGcZ aGfs9OZcbaQbghiX5Lsfs1n8BfWSAzYnO8Pi+qdKGSreVZH914JjkbW4qLeAzaS2Khbx xVnw== X-Gm-Message-State: AC+VfDxo3a9zNNTO6K1QTQeWuRT70uhZ7TKm10QhhvB2GD7DAz1RfOJC R5uW6ZtNi9ZAJhYVpo1+fQ2mY4lPzNnccUTRRyUwzBCc4Cnifis9Rdzm3IBEGdutxkf7zY4wnT+ pG+Re7XT4R0R9 X-Received: by 2002:a05:6402:b22:b0:504:bde3:104 with SMTP id bo2-20020a0564020b2200b00504bde30104mr3726731edb.20.1682676831437; Fri, 28 Apr 2023 03:13:51 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7cveE8gzZX1Y02kVoAS/aujVy/7IMD6pXMByAMrrkr3Vm9T2UQrY1YT6T8mVbxkGw1R+cbQg== X-Received: by 2002:a05:6402:b22:b0:504:bde3:104 with SMTP id bo2-20020a0564020b2200b00504bde30104mr3726710edb.20.1682676831096; Fri, 28 Apr 2023 03:13:51 -0700 (PDT) Received: from [192.168.42.222] (194-45-78-10.static.kviknet.net. [194.45.78.10]) by smtp.gmail.com with ESMTPSA id a7-20020aa7d907000000b00506a09795e6sm8919954edr.26.2023.04.28.03.13.49 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 28 Apr 2023 03:13:50 -0700 (PDT) From: Jesper Dangaard Brouer X-Google-Original-From: Jesper Dangaard Brouer Message-ID: Date: Fri, 28 Apr 2023 12:13:48 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.1 Cc: brouer@redhat.com, netdev@vger.kernel.org, martin.lau@kernel.org, ast@kernel.org, alexandr.lobakin@intel.com, larysa.zaremba@intel.com, xdp-hints@xdp-project.net, John Fastabend , Tony Nguyen , yoong.siang.song@intel.com, intel-wired-lan@lists.osuosl.org, pabeni@redhat.com, jesse.brandeburg@intel.com, Stanislav Fomichev , kuba@kernel.org, edumazet@google.com, hawk@kernel.org, =?UTF-8?Q?Toke_H=c3=b8iland-J=c3=b8rgensen?= Subject: Re: [PATCH bpf-next V2 1/5] igc: enable and fix RX hash usage by netstack Content-Language: en-US To: Daniel Borkmann , Jesper Dangaard Brouer , davem@davemloft.net, bpf@vger.kernel.org References: <168182460362.616355.14591423386485175723.stgit@firesoul> <168182464270.616355.11391652654430626584.stgit@firesoul> <644544b3206f0_19af02085e@john.notmuch> <622a8fa6-ec07-c150-250b-5467b0cddb0c@redhat.com> <6446d5af80e06_338f220820@john.notmuch> <86517b44-b998-a4ac-da13-1f30d5f69975@iogearbox.net> In-Reply-To: <86517b44-b998-a4ac-da13-1f30d5f69975@iogearbox.net> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org On 27/04/2023 19.00, Daniel Borkmann wrote: > On 4/25/23 10:43 AM, Jesper Dangaard Brouer wrote: >> On 24/04/2023 21.17, John Fastabend wrote: >>>>> Just curious why not copy the logic from the other driver fms10k, >>>>> ice, ect. >>>>> >>>>>     skb_set_hash(skb, le32_to_cpu(rx_desc->wb.lower.hi_dword.rss), >>>>>              (IXGBE_RSS_L4_TYPES_MASK & (1ul << rss_type)) ? >>>>>              PKT_HASH_TYPE_L4 : PKT_HASH_TYPE_L3); >>>> Detail: This code mis-categorize (e.g. ARP) PKT_HASH_TYPE_L2 as >>>> PKT_HASH_TYPE_L3, but as core reduces this further to one SKB bit, it >>>> doesn't really matter. >>>> >>>>> avoiding the table logic. Do the driver folks care? >>>> The define IXGBE_RSS_L4_TYPES_MASK becomes the "table" logic as a 1-bit >>>> true/false table.  It is a more compact table, let me know if this is >>>> preferred. >>>> >>>> Yes, it is really upto driver maintainer people to decide, what code is >>>> preferred ? >>  > >>> Yeah doesn't matter much to me either way. I was just looking at code >>> compared to ice driver while reviewing. >> >> My preference is to apply this patchset. We/I can easily followup and >> change this to use the more compact approach later (if someone prefers). > > Consistency might help imo and would avoid questions/confusion on /why/ > doing it differently for igc vs some of the others. > Well, drivers often do things differently, so that not something new. I found the other approach less readable (and theoretically wrong for the L2 case). For igc this approach makes it easier to read (IMHO I'm biased of cause) and easier to compare with kfunc metadata hint type (that doesn't have RSS type information loss). >> I know net-next is "closed", but this patchset was posted prior to the >> close.  Plus, a number of companies are waiting for the XDP-hint for HW >> RX timestamp.  The support for driver stmmac is already in net-next >> (commit e3f9c3e34840 ("net: stmmac: add Rx HWTS metadata to XDP receive >> pkt")). Thus, it would be a help if both igc+stmmac changes land in same >> kernel version, as both drivers are being evaluated by these companies. > > Given merge window is open now and net-next closed, it's too late to land > (unless Dave/Jakub thinks otherwise given it touches also driver bits). > I've applied the series to bpf-next right now. It's not a big deal that it didn't reached net-next, end-users will just have to wait for another kernel release to see this feature, or backport the feature themselves. Thanks for applying it. --Jesper 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 Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 85C61C77B60 for ; Fri, 28 Apr 2023 10:13:59 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id D4AE281312; Fri, 28 Apr 2023 10:13:58 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org D4AE281312 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org; s=default; t=1682676838; bh=TalVIifAtk9j2APqzrS3pQfDWxkH5lhvrgT25oKyupw=; h=From:Date:To:References:In-Reply-To:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: Cc:From; b=Prq9qZDaGxeyctSPXq9VtT0nzCpK3y6kQCWBoCp9Om0EcPX8+HLESO7P7LcTGEhfG cs/eRKnAeUZcZzadSqeUEoXXpQZxvs5RGBzT73jtS9cEiMsENoZbGUcbKo3cFb0AQ7 ozq7Wg8VtPSNeifsgv8/PQvmpOlZ2CVpYhTmJsOy/ZnsD6ITNl/AxRR+bs71QkggVA TsTK4ALHR0jyFS/K0jHFaO7G07uBUxpjSuYJEvJhMpKBLfETapAgV88f3vyNBVxq/Z od9vjy0aP/swyR3f3/Y66z2/lRaoPSaM7UxXjjuO3Axx6MYpmiH3TKa9Uea+I2nUwG rLYYV1vcAxeUA== X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id rSD9bv5ThQtq; Fri, 28 Apr 2023 10:13:58 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp1.osuosl.org (Postfix) with ESMTP id C46198131B; Fri, 28 Apr 2023 10:13:57 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org C46198131B Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id 356B21BF28A for ; Fri, 28 Apr 2023 10:13:56 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 0806041E18 for ; Fri, 28 Apr 2023 10:13:56 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 0806041E18 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7jQh8FI_yIer for ; Fri, 28 Apr 2023 10:13:55 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 056DF41DBF Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by smtp4.osuosl.org (Postfix) with ESMTPS id 056DF41DBF for ; Fri, 28 Apr 2023 10:13:54 +0000 (UTC) Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com [209.85.208.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-611-h-H_dg6cNtqDF8IKQqIxSw-1; Fri, 28 Apr 2023 06:13:52 -0400 X-MC-Unique: h-H_dg6cNtqDF8IKQqIxSw-1 Received: by mail-ed1-f71.google.com with SMTP id 4fb4d7f45d1cf-506b0a2d5c4so10945099a12.3 for ; Fri, 28 Apr 2023 03:13:52 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682676831; x=1685268831; h=content-transfer-encoding:in-reply-to:references:to :content-language:subject:cc:user-agent:mime-version:date:message-id :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=o0hfmSjrbmFcUA3spV8vN0sZHy4e8avPyPdESyqTTH0=; b=XAy+GCsklTR+3jDEly0y4lC5pI7T1idJwEN6QYS5IBMMUUKb4zcbj9faKzNajauz3p RqHdTTiZxSilaK6AGzINY32RQtSRxscL0wxl9tyOKTTH2pS36ihJt4MMvMJfvdtt2wFK FWIlo5cQMEJ8Qa88pRbJaTjzGkf71kg9SlLDdjBnP0lumqiTE+k9mrWbxFPQ/KGy/jIo JAYDL9bDw9qLRsZZUrp0onMcFvh2u5kDs3P9sOK4WtCFVxLBtt3vTyYRQCohKKrwgTES hgzSBi/cH0Um/GALYBLwcgUbOBfPJlc7P8IyP2HisqQ9K8qx2K+N0b1jbcvNOnM2wB8M Jpyw== X-Gm-Message-State: AC+VfDzCtg9dyM71aopZyS3kyOpoCH5Q4IYr5nApP7yIcDXQxwMC4KVa 18Z8PKwoWb2e0KVjy5Xp3snCMeGRcArGDmCKUMa9/oqT2/bhlEaPP1l3yRe0nS6wrc55NFBIH4i NiNQTzG3t9puDdYoJawiQoxE5/7dHfg== X-Received: by 2002:a05:6402:b22:b0:504:bde3:104 with SMTP id bo2-20020a0564020b2200b00504bde30104mr3726745edb.20.1682676831439; Fri, 28 Apr 2023 03:13:51 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7cveE8gzZX1Y02kVoAS/aujVy/7IMD6pXMByAMrrkr3Vm9T2UQrY1YT6T8mVbxkGw1R+cbQg== X-Received: by 2002:a05:6402:b22:b0:504:bde3:104 with SMTP id bo2-20020a0564020b2200b00504bde30104mr3726710edb.20.1682676831096; Fri, 28 Apr 2023 03:13:51 -0700 (PDT) Received: from [192.168.42.222] (194-45-78-10.static.kviknet.net. [194.45.78.10]) by smtp.gmail.com with ESMTPSA id a7-20020aa7d907000000b00506a09795e6sm8919954edr.26.2023.04.28.03.13.49 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 28 Apr 2023 03:13:50 -0700 (PDT) From: Jesper Dangaard Brouer X-Google-Original-From: Jesper Dangaard Brouer Message-ID: Date: Fri, 28 Apr 2023 12:13:48 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.1 To: Daniel Borkmann , Jesper Dangaard Brouer , davem@davemloft.net, bpf@vger.kernel.org References: <168182460362.616355.14591423386485175723.stgit@firesoul> <168182464270.616355.11391652654430626584.stgit@firesoul> <644544b3206f0_19af02085e@john.notmuch> <622a8fa6-ec07-c150-250b-5467b0cddb0c@redhat.com> <6446d5af80e06_338f220820@john.notmuch> <86517b44-b998-a4ac-da13-1f30d5f69975@iogearbox.net> In-Reply-To: <86517b44-b998-a4ac-da13-1f30d5f69975@iogearbox.net> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1682676833; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=o0hfmSjrbmFcUA3spV8vN0sZHy4e8avPyPdESyqTTH0=; b=EZFV1rA6pFZ055YiOlQ6HgYvOwUFxmlbofk6hAOYQM1blGNDLqsy2zf35WI2WeFCFTvOyF oStJTp0BtuARiLHkO105ardW9QOSEQTW2atNagKcidsKsYYGRwfwBxYi0lQRF/R91JjeRX tr9CccxmeX5GpfvbA05PiQJEqgiVdqI= X-Mailman-Original-Authentication-Results: smtp4.osuosl.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=EZFV1rA6 Subject: Re: [Intel-wired-lan] [PATCH bpf-next V2 1/5] igc: enable and fix RX hash usage by netstack X-BeenThere: intel-wired-lan@osuosl.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Wired Ethernet Linux Kernel Driver Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: xdp-hints@xdp-project.net, martin.lau@kernel.org, larysa.zaremba@intel.com, netdev@vger.kernel.org, =?UTF-8?Q?Toke_H=c3=b8iland-J=c3=b8rgensen?= , John Fastabend , ast@kernel.org, jesse.brandeburg@intel.com, kuba@kernel.org, edumazet@google.com, pabeni@redhat.com, Stanislav Fomichev , yoong.siang.song@intel.com, brouer@redhat.com, Tony Nguyen , intel-wired-lan@lists.osuosl.org, hawk@kernel.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-wired-lan-bounces@osuosl.org Sender: "Intel-wired-lan" Ck9uIDI3LzA0LzIwMjMgMTkuMDAsIERhbmllbCBCb3JrbWFubiB3cm90ZToKPiBPbiA0LzI1LzIz IDEwOjQzIEFNLCBKZXNwZXIgRGFuZ2FhcmQgQnJvdWVyIHdyb3RlOgo+PiBPbiAyNC8wNC8yMDIz IDIxLjE3LCBKb2huIEZhc3RhYmVuZCB3cm90ZToKPj4+Pj4gSnVzdCBjdXJpb3VzIHdoeSBub3Qg Y29weSB0aGUgbG9naWMgZnJvbSB0aGUgb3RoZXIgZHJpdmVyIGZtczEwaywgCj4+Pj4+IGljZSwg ZWN0Lgo+Pj4+Pgo+Pj4+PiDCoMKgwqDCoHNrYl9zZXRfaGFzaChza2IsIGxlMzJfdG9fY3B1KHJ4 X2Rlc2MtPndiLmxvd2VyLmhpX2R3b3JkLnJzcyksCj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAoSVhHQkVfUlNTX0w0X1RZUEVTX01BU0sgJiAoMXVsIDw8IHJzc190eXBlKSkgPwo+Pj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUEtUX0hBU0hfVFlQRV9MNCA6IFBLVF9IQVNIX1RZ UEVfTDMpOwo+Pj4+IERldGFpbDogVGhpcyBjb2RlIG1pcy1jYXRlZ29yaXplIChlLmcuIEFSUCkg UEtUX0hBU0hfVFlQRV9MMiBhcwo+Pj4+IFBLVF9IQVNIX1RZUEVfTDMsIGJ1dCBhcyBjb3JlIHJl ZHVjZXMgdGhpcyBmdXJ0aGVyIHRvIG9uZSBTS0IgYml0LCBpdAo+Pj4+IGRvZXNuJ3QgcmVhbGx5 IG1hdHRlci4KPj4+Pgo+Pj4+PiBhdm9pZGluZyB0aGUgdGFibGUgbG9naWMuIERvIHRoZSBkcml2 ZXIgZm9sa3MgY2FyZT8KPj4+PiBUaGUgZGVmaW5lIElYR0JFX1JTU19MNF9UWVBFU19NQVNLIGJl Y29tZXMgdGhlICJ0YWJsZSIgbG9naWMgYXMgYSAxLWJpdAo+Pj4+IHRydWUvZmFsc2UgdGFibGUu wqAgSXQgaXMgYSBtb3JlIGNvbXBhY3QgdGFibGUsIGxldCBtZSBrbm93IGlmIHRoaXMgaXMKPj4+ PiBwcmVmZXJyZWQuCj4+Pj4KPj4+PiBZZXMsIGl0IGlzIHJlYWxseSB1cHRvIGRyaXZlciBtYWlu dGFpbmVyIHBlb3BsZSB0byBkZWNpZGUsIHdoYXQgY29kZSBpcwo+Pj4+IHByZWZlcnJlZCA/Cj4+ IMKgPgo+Pj4gWWVhaCBkb2Vzbid0IG1hdHRlciBtdWNoIHRvIG1lIGVpdGhlciB3YXkuIEkgd2Fz IGp1c3QgbG9va2luZyBhdCBjb2RlCj4+PiBjb21wYXJlZCB0byBpY2UgZHJpdmVyIHdoaWxlIHJl dmlld2luZy4KPj4KPj4gTXkgcHJlZmVyZW5jZSBpcyB0byBhcHBseSB0aGlzIHBhdGNoc2V0LiBX ZS9JIGNhbiBlYXNpbHkgZm9sbG93dXAgYW5kCj4+IGNoYW5nZSB0aGlzIHRvIHVzZSB0aGUgbW9y ZSBjb21wYWN0IGFwcHJvYWNoIGxhdGVyIChpZiBzb21lb25lIHByZWZlcnMpLgo+IAo+IENvbnNp c3RlbmN5IG1pZ2h0IGhlbHAgaW1vIGFuZCB3b3VsZCBhdm9pZCBxdWVzdGlvbnMvY29uZnVzaW9u IG9uIC93aHkvCj4gZG9pbmcgaXQgZGlmZmVyZW50bHkgZm9yIGlnYyB2cyBzb21lIG9mIHRoZSBv dGhlcnMuCj4KCldlbGwsIGRyaXZlcnMgb2Z0ZW4gZG8gdGhpbmdzIGRpZmZlcmVudGx5LCBzbyB0 aGF0IG5vdCBzb21ldGhpbmcgbmV3LiBJCmZvdW5kIHRoZSBvdGhlciBhcHByb2FjaCBsZXNzIHJl YWRhYmxlIChhbmQgdGhlb3JldGljYWxseSB3cm9uZyBmb3IgdGhlCkwyIGNhc2UpLiAgRm9yIGln YyB0aGlzIGFwcHJvYWNoIG1ha2VzIGl0IGVhc2llciB0byByZWFkIChJTUhPIEknbQpiaWFzZWQg b2YgY2F1c2UpIGFuZCBlYXNpZXIgdG8gY29tcGFyZSB3aXRoIGtmdW5jIG1ldGFkYXRhIGhpbnQg dHlwZQoodGhhdCBkb2Vzbid0IGhhdmUgUlNTIHR5cGUgaW5mb3JtYXRpb24gbG9zcykuCgo+PiBJ IGtub3cgbmV0LW5leHQgaXMgImNsb3NlZCIsIGJ1dCB0aGlzIHBhdGNoc2V0IHdhcyBwb3N0ZWQg cHJpb3IgdG8gdGhlCj4+IGNsb3NlLsKgIFBsdXMsIGEgbnVtYmVyIG9mIGNvbXBhbmllcyBhcmUg d2FpdGluZyBmb3IgdGhlIFhEUC1oaW50IGZvciBIVwo+PiBSWCB0aW1lc3RhbXAuwqAgVGhlIHN1 cHBvcnQgZm9yIGRyaXZlciBzdG1tYWMgaXMgYWxyZWFkeSBpbiBuZXQtbmV4dAo+PiAoY29tbWl0 IGUzZjljM2UzNDg0MCAoIm5ldDogc3RtbWFjOiBhZGQgUnggSFdUUyBtZXRhZGF0YSB0byBYRFAg cmVjZWl2ZQo+PiBwa3QiKSkuIFRodXMsIGl0IHdvdWxkIGJlIGEgaGVscCBpZiBib3RoIGlnYytz dG1tYWMgY2hhbmdlcyBsYW5kIGluIHNhbWUKPj4ga2VybmVsIHZlcnNpb24sIGFzIGJvdGggZHJp dmVycyBhcmUgYmVpbmcgZXZhbHVhdGVkIGJ5IHRoZXNlIGNvbXBhbmllcy4KPiAKPiBHaXZlbiBt ZXJnZSB3aW5kb3cgaXMgb3BlbiBub3cgYW5kIG5ldC1uZXh0IGNsb3NlZCwgaXQncyB0b28gbGF0 ZSB0byBsYW5kCj4gKHVubGVzcyBEYXZlL0pha3ViIHRoaW5rcyBvdGhlcndpc2UgZ2l2ZW4gaXQg dG91Y2hlcyBhbHNvIGRyaXZlciBiaXRzKS4KPiBJJ3ZlIGFwcGxpZWQgdGhlIHNlcmllcyB0byBi cGYtbmV4dCByaWdodCBub3cuCgpJdCdzIG5vdCBhIGJpZyBkZWFsIHRoYXQgaXQgZGlkbid0IHJl YWNoZWQgbmV0LW5leHQsIGVuZC11c2VycyB3aWxsIGp1c3QKaGF2ZSB0byB3YWl0IGZvciBhbm90 aGVyIGtlcm5lbCByZWxlYXNlIHRvIHNlZSB0aGlzIGZlYXR1cmUsIG9yIGJhY2twb3J0CnRoZSBm ZWF0dXJlIHRoZW1zZWx2ZXMuCgpUaGFua3MgZm9yIGFwcGx5aW5nIGl0LgoKLS1KZXNwZXIKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLXdpcmVk LWxhbiBtYWlsaW5nIGxpc3QKSW50ZWwtd2lyZWQtbGFuQG9zdW9zbC5vcmcKaHR0cHM6Ly9saXN0 cy5vc3Vvc2wub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtd2lyZWQtbGFuCg==