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=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_PASS,URIBL_BLOCKED autolearn=ham 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 63C68C43441 for ; Tue, 20 Nov 2018 00:13:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1DC3D20851 for ; Tue, 20 Nov 2018 00:13:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UCF1bC2b" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1DC3D20851 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-wireless-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732169AbeKTKkJ (ORCPT ); Tue, 20 Nov 2018 05:40:09 -0500 Received: from mail-qk1-f194.google.com ([209.85.222.194]:45354 "EHLO mail-qk1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732000AbeKTKkI (ORCPT ); Tue, 20 Nov 2018 05:40:08 -0500 Received: by mail-qk1-f194.google.com with SMTP id d135so159796qkc.12 for ; Mon, 19 Nov 2018 16:13:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=3537RudzD9yhRIeRECPAZ5fbqp9e5UmrqWm08FUbKME=; b=UCF1bC2bov+CS1yJIMXDEeMkdtz0CQ4CN7tZnAjWlpfKXsLn2D1sLa1ahs+jXVqM+C bczOKyxW2umwnNZorevYuMxetb6HlQSf1q6Wd6AIATHRioQmh4RPtGxyXHpa8RczlY5P EFlV6YgWhpkAYHUCpX33t2MT3m4WbDA4eTdh3b3nUdgzFpPswVllBgzMC5BKcv95U62N MstMfDQWR8JcUq83gVJ9os0DUCgq8zRLCwYQ9rsieJjTm9bNm8io9VWkms5EZ+POt/OS sm4IlQzr5r7Xm038ZQSe7Oy1tsAQclo6/IIITr9FlQyoMdJCNTJjKS43h7jvzXT/hd6S TBCA== 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=3537RudzD9yhRIeRECPAZ5fbqp9e5UmrqWm08FUbKME=; b=qpABAypuoTSggHT8JMYtmmj8NALvmXkefW/sepMyUWwcF1PNhtAjeLTREAoyPnu58k p+G2dFHmNpW1XX4kNPPbLYBPXbxp4mazs8zr9E9KdK0AZDyuatfPpMZS9FuZS2mOF3Wh YLoM1BuT0SkWbowYYWuHKQu9/MbfVXX32siUgOlCcEctlUe7/kSgtkotaRU00M3Q1h2K gdHhGeNgtNI1GkX8xX2hZghupJVLXV6K7Qfw+hZ+XzJgPKQJcStuIsqMam6qOcea6TV0 TnUWvH1fcMqlfZJxn/I6Hp1Wyh8ROb/R6B8nTgZPPx+PApX01AbmvLDy7PdNQRjciMwg AqKA== X-Gm-Message-State: AGRZ1gLJsAe/ruxjmjHcWc0KUYXdbbQXmVqgonYvhBIALUHEZeTQRV+q 0RrLnz9Baya6s4N5TCNE9c0zTj0+E3Flu1fIAgo= X-Google-Smtp-Source: AJdET5eByaE+CMvvZfhAvvGJFVH3RoeXA0SQI9DuKi8opieH5xqc3gwZqIxtzY9NYYfQrA3R7VG8U4in5An/5ehrr4A= X-Received: by 2002:ac8:6606:: with SMTP id c6mr23111609qtp.376.1542672834122; Mon, 19 Nov 2018 16:13:54 -0800 (PST) MIME-Version: 1.0 References: <1542063113-22438-1-git-send-email-rmanohar@codeaurora.org> <1542063113-22438-4-git-send-email-rmanohar@codeaurora.org> <871s7nv9pl.fsf@toke.dk> <8e7847ff-4c88-10ae-2223-2fc7321641d9@nbd.name> <87sh02tfsp.fsf@toke.dk> <878t1p2bqz.fsf@taht.net> <87muq4sn50.fsf@toke.dk> <4DD985B6-7DBE-42F8-AC87-D6B40CEAE553@superduper.net> In-Reply-To: From: Dave Taht Date: Mon, 19 Nov 2018 16:13:42 -0800 Message-ID: Subject: Re: [Make-wifi-fast] [PATCH v3 3/6] mac80211: Add airtime accounting and scheduling to TXQs To: Ben Greear Cc: Simon Barber , =?UTF-8?B?VG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2Vu?= , Rajkumar Manoharan , Make-Wifi-fast , linux-wireless , ath10k , Felix Fietkau Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org On Mon, Nov 19, 2018 at 3:56 PM Ben Greear wrote: > > On 11/19/2018 03:47 PM, Dave Taht wrote: > > On Mon, Nov 19, 2018 at 3:30 PM Simon Barber wro= te: > >> > >> > >> > >> On Nov 19, 2018, at 2:44 PM, Toke H=C3=B8iland-J=C3=B8rgensen wrote: > >> > >> Dave Taht writes: > >> > >> Toke H=C3=B8iland-J=C3=B8rgensen writes: > >> > >> Felix Fietkau writes: > >> > >> On 2018-11-14 18:40, Toke H=C3=B8iland-J=C3=B8rgensen wrote: > >> > >> This part doesn't really make much sense to me, but maybe I'm > >> misunderstanding how the code works. > >> Let's assume we have a driver like ath9k or mt76, which tries to keep = a > >> > >> =E2=80=A6. > >> > >> > >> Well, there's going to be a BQL-like queue limit (but for airtime) on > >> top, which drivers can opt-in to if the hardware has too much queueing= . > >> > >> > >> Very happy to read this - I first talked to Dave Taht about the need f= or Time Queue Limits more than 5 years ago! > > > > Michal faked up a dql estimator 3 (?) years ago. it worked. > > > > http://blog.cerowrt.org/post/dql_on_wifi_2/ > > > > As a side note, in *any* real world working mu-mimo situation at any > > scale, on any equipment, does anyone have any stats on how often the > > feature is actually used and useful? > > > > My personal guess, from looking at the standard, was in home > > scenarios, usage would be about... 0, and in a controlled environment > > in a football stadium, quite a lot. > > > > In a office or apartment complex, I figured interference and so forth > > would make it a negative benefit due to retransmits. > > > > I felt when that part of the standard rolled around... that mu-mimo > > was an idea that should never have escaped the lab. I can be convinced > > by data, that we can aim for a higher goal here. But it would be > > comforting to have a measured non-lab, real-world, at real world > > rates, result for it, on some platform, of it actually being useful. > > We're working on building a lab with 20 or 30 mixed 'real' devices > using various different /AC NICs (QCA wave2 on OpenWRT, Fedora, realtek U= SB 8812au on OpenWRT, Fedora, > and some Intel NICs in NUCs on Windows, and maybe more). I'm not actuall= y sure if that realtek > or the NUCs can do MU-MIMO or not, but the QCA NICs will be able to. I= t should be at least somewhat similar > to a classroom environment or coffee shop. In the last 3 coffee shops I went to, I could hear over 30 APs on competing SSIDs, running G, N, and AC, occupying every available channel. > I'll let you know what we find > as far as how well MU-MIMO improves things or not. Thank you. My lab is shut down and I'm selling off the gear, so all I can do anymore is be grumpy. > > At least in simple test cases (one 1x1 stations, one 2x2 station, with 4x= 4 MU-MIMO AP), > it works very well for increased download throughput. Is that a UDP or TCP test? My specific "most important" benchmark for wifi is web PLT with lots of stations. That's the most common wifi use case, IMHO. Some videoconferencing, voip, ssh, etc. One big upload, one big download, going on somewhere, sometimes. Slashdot for me is 78 separate ssl'd tcp flows, a dozen + dns lookups, over 2.2 seco= nds. bulk downloads rarely figure in except for streaming video, and that peaks out generally at 20Mbit/sec for most people. So while I do like the potential in mu-mimo to, schedule lower service times on a per station basis, I see too many variable rates and interference in the real world, and not enough simultaneity between schedulable stations, and a ton of acks, for me to imagine there's much of a real-world difference from mu-mimo in anything other than a well managed office or stadium. People going for the max download throughput with the max number of stations... PLT, PLT is a way better benchmark. I can certainly be convinced by data, and I look forward to your experiment= s. > In home setups, I'd guess that the DSL or Cable Modem or other uplink is = the bottleneck Offices too. Wifi - aside from interference and range issues lowering the rate, only becomes the bottleneck at internet speeds > 40Mbits/sec. We are certainly starting to see wifi become more of the bottleneck, while running at rates, generally, far lower than what people bench at. > way more often than the wifi is, even if your are just running /n. But, = maybe that is just > my experience living out at the end of a long skinny phone line all these= years. Fiber networks and newer cable connections now crack 100mbits, and there you do see all that nifty fq_codel-ly chocolatey goodness kicking in.... but I do tend to think the optimization focus should be at low rates with lots of stations for plt more than bandwidth. > Thanks, > Ben > > > > -- > Ben Greear > Candela Technologies Inc http://www.candelatech.com > --=20 Dave T=C3=A4ht CTO, TekLibre, LLC http://www.teklibre.com Tel: 1-831-205-9740 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-qk1-x743.google.com ([2607:f8b0:4864:20::743]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gOtg5-0006Jf-7G for ath10k@lists.infradead.org; Tue, 20 Nov 2018 00:14:07 +0000 Received: by mail-qk1-x743.google.com with SMTP id r71so172699qkr.10 for ; Mon, 19 Nov 2018 16:13:55 -0800 (PST) MIME-Version: 1.0 References: <1542063113-22438-1-git-send-email-rmanohar@codeaurora.org> <1542063113-22438-4-git-send-email-rmanohar@codeaurora.org> <871s7nv9pl.fsf@toke.dk> <8e7847ff-4c88-10ae-2223-2fc7321641d9@nbd.name> <87sh02tfsp.fsf@toke.dk> <878t1p2bqz.fsf@taht.net> <87muq4sn50.fsf@toke.dk> <4DD985B6-7DBE-42F8-AC87-D6B40CEAE553@superduper.net> In-Reply-To: From: Dave Taht Date: Mon, 19 Nov 2018 16:13:42 -0800 Message-ID: Subject: Re: [Make-wifi-fast] [PATCH v3 3/6] mac80211: Add airtime accounting and scheduling to TXQs List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "ath10k" Errors-To: ath10k-bounces+kvalo=adurom.com@lists.infradead.org To: Ben Greear Cc: =?UTF-8?B?VG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2Vu?= , Rajkumar Manoharan , Make-Wifi-fast , Simon Barber , linux-wireless , ath10k , Felix Fietkau T24gTW9uLCBOb3YgMTksIDIwMTggYXQgMzo1NiBQTSBCZW4gR3JlZWFyIDxncmVlYXJiQGNhbmRl bGF0ZWNoLmNvbT4gd3JvdGU6Cj4KPiBPbiAxMS8xOS8yMDE4IDAzOjQ3IFBNLCBEYXZlIFRhaHQg d3JvdGU6Cj4gPiBPbiBNb24sIE5vdiAxOSwgMjAxOCBhdCAzOjMwIFBNIFNpbW9uIEJhcmJlciA8 c2ltb25Ac3VwZXJkdXBlci5uZXQ+IHdyb3RlOgo+ID4+Cj4gPj4KPiA+Pgo+ID4+IE9uIE5vdiAx OSwgMjAxOCwgYXQgMjo0NCBQTSwgVG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2VuIDx0b2tlQHRva2Uu ZGs+IHdyb3RlOgo+ID4+Cj4gPj4gRGF2ZSBUYWh0IDxkYXZlQHRhaHQubmV0PiB3cml0ZXM6Cj4g Pj4KPiA+PiBUb2tlIEjDuGlsYW5kLUrDuHJnZW5zZW4gPHRva2VAdG9rZS5kaz4gd3JpdGVzOgo+ ID4+Cj4gPj4gRmVsaXggRmlldGthdSA8bmJkQG5iZC5uYW1lPiB3cml0ZXM6Cj4gPj4KPiA+PiBP biAyMDE4LTExLTE0IDE4OjQwLCBUb2tlIEjDuGlsYW5kLUrDuHJnZW5zZW4gd3JvdGU6Cj4gPj4K PiA+PiBUaGlzIHBhcnQgZG9lc24ndCByZWFsbHkgbWFrZSBtdWNoIHNlbnNlIHRvIG1lLCBidXQg bWF5YmUgSSdtCj4gPj4gbWlzdW5kZXJzdGFuZGluZyBob3cgdGhlIGNvZGUgd29ya3MuCj4gPj4g TGV0J3MgYXNzdW1lIHdlIGhhdmUgYSBkcml2ZXIgbGlrZSBhdGg5ayBvciBtdDc2LCB3aGljaCB0 cmllcyB0byBrZWVwIGEKPiA+Pgo+ID4+IOKApi4KPiA+Pgo+ID4+Cj4gPj4gV2VsbCwgdGhlcmUn cyBnb2luZyB0byBiZSBhIEJRTC1saWtlIHF1ZXVlIGxpbWl0IChidXQgZm9yIGFpcnRpbWUpIG9u Cj4gPj4gdG9wLCB3aGljaCBkcml2ZXJzIGNhbiBvcHQtaW4gdG8gaWYgdGhlIGhhcmR3YXJlIGhh cyB0b28gbXVjaCBxdWV1ZWluZy4KPiA+Pgo+ID4+Cj4gPj4gVmVyeSBoYXBweSB0byByZWFkIHRo aXMgLSBJIGZpcnN0IHRhbGtlZCB0byBEYXZlIFRhaHQgYWJvdXQgdGhlIG5lZWQgZm9yIFRpbWUg UXVldWUgTGltaXRzIG1vcmUgdGhhbiA1IHllYXJzIGFnbyEKPiA+Cj4gPiBNaWNoYWwgZmFrZWQg dXAgYSBkcWwgZXN0aW1hdG9yIDMgKD8pIHllYXJzIGFnby4gaXQgd29ya2VkLgo+ID4KPiA+IGh0 dHA6Ly9ibG9nLmNlcm93cnQub3JnL3Bvc3QvZHFsX29uX3dpZmlfMi8KPiA+Cj4gPiBBcyBhIHNp ZGUgbm90ZSwgaW4gKmFueSogcmVhbCB3b3JsZCB3b3JraW5nIG11LW1pbW8gc2l0dWF0aW9uIGF0 IGFueQo+ID4gc2NhbGUsIG9uIGFueSBlcXVpcG1lbnQsIGRvZXMgYW55b25lIGhhdmUgYW55IHN0 YXRzIG9uIGhvdyBvZnRlbiB0aGUKPiA+IGZlYXR1cmUgaXMgYWN0dWFsbHkgdXNlZCBhbmQgdXNl ZnVsPwo+ID4KPiA+IE15IHBlcnNvbmFsIGd1ZXNzLCBmcm9tIGxvb2tpbmcgYXQgdGhlIHN0YW5k YXJkLCB3YXMgaW4gaG9tZQo+ID4gc2NlbmFyaW9zLCB1c2FnZSB3b3VsZCBiZSBhYm91dC4uLiAw LCBhbmQgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50Cj4gPiBpbiBhIGZvb3RiYWxsIHN0YWRp dW0sIHF1aXRlIGEgbG90Lgo+ID4KPiA+IEluIGEgb2ZmaWNlIG9yIGFwYXJ0bWVudCBjb21wbGV4 LCBJIGZpZ3VyZWQgaW50ZXJmZXJlbmNlIGFuZCBzbyBmb3J0aAo+ID4gd291bGQgbWFrZSBpdCBh IG5lZ2F0aXZlIGJlbmVmaXQgZHVlIHRvIHJldHJhbnNtaXRzLgo+ID4KPiA+IEkgZmVsdCB3aGVu IHRoYXQgcGFydCBvZiB0aGUgc3RhbmRhcmQgcm9sbGVkIGFyb3VuZC4uLiB0aGF0IG11LW1pbW8K PiA+IHdhcyBhbiBpZGVhIHRoYXQgc2hvdWxkIG5ldmVyIGhhdmUgZXNjYXBlZCB0aGUgbGFiLiBJ IGNhbiBiZSBjb252aW5jZWQKPiA+IGJ5IGRhdGEsIHRoYXQgd2UgY2FuIGFpbSBmb3IgYSBoaWdo ZXIgZ29hbCBoZXJlLiBCdXQgaXQgd291bGQgYmUKPiA+IGNvbWZvcnRpbmcgdG8gaGF2ZSBhIG1l YXN1cmVkIG5vbi1sYWIsIHJlYWwtd29ybGQsIGF0IHJlYWwgd29ybGQKPiA+IHJhdGVzLCByZXN1 bHQgZm9yIGl0LCBvbiBzb21lIHBsYXRmb3JtLCBvZiBpdCBhY3R1YWxseSBiZWluZyB1c2VmdWwu Cj4KPiBXZSdyZSB3b3JraW5nIG9uIGJ1aWxkaW5nIGEgbGFiIHdpdGggMjAgb3IgMzAgbWl4ZWQg J3JlYWwnIGRldmljZXMKPiB1c2luZyB2YXJpb3VzIGRpZmZlcmVudCAvQUMgTklDcyAoUUNBIHdh dmUyIG9uIE9wZW5XUlQsIEZlZG9yYSwgcmVhbHRlayBVU0IgODgxMmF1IG9uIE9wZW5XUlQsIEZl ZG9yYSwKPiBhbmQgc29tZSBJbnRlbCBOSUNzIGluIE5VQ3Mgb24gV2luZG93cywgYW5kIG1heWJl IG1vcmUpLiAgSSdtIG5vdCBhY3R1YWxseSBzdXJlIGlmIHRoYXQgcmVhbHRlawo+ICAgb3IgdGhl IE5VQ3MgY2FuIGRvIE1VLU1JTU8gb3Igbm90LCBidXQgdGhlIFFDQSBOSUNzIHdpbGwgYmUgYWJs ZSB0by4gIEl0IHNob3VsZCBiZSBhdCBsZWFzdCBzb21ld2hhdCBzaW1pbGFyCj4gdG8gYSBjbGFz c3Jvb20gZW52aXJvbm1lbnQgb3IgY29mZmVlIHNob3AuCgpJbiB0aGUgbGFzdCAzIGNvZmZlZSBz aG9wcyBJIHdlbnQgdG8sIEkgY291bGQgaGVhciBvdmVyIDMwIEFQcyBvbgpjb21wZXRpbmcgU1NJ RHMsIHJ1bm5pbmcgRywgTiwgYW5kIEFDLApvY2N1cHlpbmcgZXZlcnkgYXZhaWxhYmxlIGNoYW5u ZWwuCgo+IEknbGwgbGV0IHlvdSBrbm93IHdoYXQgd2UgZmluZAo+IGFzIGZhciBhcyBob3cgd2Vs bCBNVS1NSU1PIGltcHJvdmVzIHRoaW5ncyBvciBub3QuCgpUaGFuayB5b3UuIE15IGxhYiBpcyBz aHV0IGRvd24gYW5kIEknbSBzZWxsaW5nIG9mZiB0aGUgZ2Vhciwgc28gYWxsIEkKY2FuIGRvIGFu eW1vcmUgaXMgYmUgZ3J1bXB5LgoKPgo+IEF0IGxlYXN0IGluIHNpbXBsZSB0ZXN0IGNhc2VzIChv bmUgMXgxIHN0YXRpb25zLCBvbmUgMngyIHN0YXRpb24sIHdpdGggNHg0IE1VLU1JTU8gQVApLAo+ IGl0IHdvcmtzIHZlcnkgd2VsbCBmb3IgaW5jcmVhc2VkIGRvd25sb2FkIHRocm91Z2hwdXQuCgpJ cyB0aGF0IGEgVURQIG9yIFRDUCB0ZXN0PwoKTXkgc3BlY2lmaWMgIm1vc3QgaW1wb3J0YW50IiBi ZW5jaG1hcmsgZm9yIHdpZmkgaXMgd2ViIFBMVCB3aXRoIGxvdHMKb2Ygc3RhdGlvbnMuIFRoYXQn cyB0aGUgbW9zdCBjb21tb24gd2lmaSB1c2UgY2FzZSwgSU1ITy4KU29tZSB2aWRlb2NvbmZlcmVu Y2luZywgdm9pcCwgc3NoLCBldGMuIE9uZSBiaWcgdXBsb2FkLCBvbmUgYmlnCmRvd25sb2FkLCBn b2luZyBvbiBzb21ld2hlcmUsIHNvbWV0aW1lcy4gU2xhc2hkb3QKZm9yIG1lIGlzIDc4IHNlcGFy YXRlIHNzbCdkIHRjcCBmbG93cywgYSBkb3plbiArIGRucyBsb29rdXBzLCBvdmVyIDIuMiBzZWNv bmRzLgoKYnVsayBkb3dubG9hZHMgcmFyZWx5IGZpZ3VyZSBpbiBleGNlcHQgZm9yIHN0cmVhbWlu ZyB2aWRlbywgYW5kIHRoYXQKcGVha3Mgb3V0IGdlbmVyYWxseSBhdCAyME1iaXQvc2VjIGZvciBt b3N0IHBlb3BsZS4KClNvIHdoaWxlIEkgZG8gbGlrZSB0aGUgcG90ZW50aWFsIGluIG11LW1pbW8g dG8sIHNjaGVkdWxlIGxvd2VyIHNlcnZpY2UKdGltZXMgb24gYSBwZXIgc3RhdGlvbiBiYXNpcywg SSBzZWUgdG9vIG1hbnkKdmFyaWFibGUgcmF0ZXMgYW5kIGludGVyZmVyZW5jZSBpbiB0aGUgcmVh bCB3b3JsZCwgYW5kIG5vdCBlbm91Z2gKc2ltdWx0YW5laXR5IGJldHdlZW4gc2NoZWR1bGFibGUg c3RhdGlvbnMsIGFuZCBhIHRvbiBvZiBhY2tzLApmb3IgbWUgdG8gaW1hZ2luZSB0aGVyZSdzIG11 Y2ggb2YgYSByZWFsLXdvcmxkIGRpZmZlcmVuY2UgZnJvbSBtdS1taW1vCmluIGFueXRoaW5nIG90 aGVyIHRoYW4gYSB3ZWxsIG1hbmFnZWQgb2ZmaWNlIG9yIHN0YWRpdW0uCgpQZW9wbGUgZ29pbmcg Zm9yIHRoZSBtYXggZG93bmxvYWQgdGhyb3VnaHB1dCB3aXRoIHRoZSBtYXggbnVtYmVyIG9mCnN0 YXRpb25zLi4uIFBMVCwgUExUIGlzIGEgd2F5IGJldHRlciBiZW5jaG1hcmsuCgpJIGNhbiBjZXJ0 YWlubHkgYmUgY29udmluY2VkIGJ5IGRhdGEsIGFuZCBJIGxvb2sgZm9yd2FyZCB0byB5b3VyIGV4 cGVyaW1lbnRzLgoKPiBJbiBob21lIHNldHVwcywgSSdkIGd1ZXNzIHRoYXQgdGhlIERTTCBvciBD YWJsZSBNb2RlbSBvciBvdGhlciB1cGxpbmsgaXMgdGhlIGJvdHRsZW5lY2sKCk9mZmljZXMgdG9v LiBXaWZpIC0gYXNpZGUgZnJvbSBpbnRlcmZlcmVuY2UgYW5kIHJhbmdlIGlzc3VlcyBsb3dlcmlu Zwp0aGUgcmF0ZSwgb25seSBiZWNvbWVzIHRoZSBib3R0bGVuZWNrIGF0IGludGVybmV0IHNwZWVk cyA+CjQwTWJpdHMvc2VjLgoKV2UgYXJlIGNlcnRhaW5seSBzdGFydGluZyB0byBzZWUgd2lmaSBi ZWNvbWUgbW9yZSBvZiB0aGUgYm90dGxlbmVjaywKd2hpbGUgcnVubmluZyBhdCByYXRlcywgZ2Vu ZXJhbGx5LCBmYXIgbG93ZXIgdGhhbiB3aGF0IHBlb3BsZSBiZW5jaAphdC4KCj4gd2F5IG1vcmUg b2Z0ZW4gdGhhbiB0aGUgd2lmaSBpcywgZXZlbiBpZiB5b3VyIGFyZSBqdXN0IHJ1bm5pbmcgL24u ICBCdXQsIG1heWJlIHRoYXQgaXMganVzdAo+IG15IGV4cGVyaWVuY2UgbGl2aW5nIG91dCBhdCB0 aGUgZW5kIG9mIGEgbG9uZyBza2lubnkgcGhvbmUgbGluZSBhbGwgdGhlc2UgeWVhcnMuCgpGaWJl ciBuZXR3b3JrcyBhbmQgbmV3ZXIgY2FibGUgY29ubmVjdGlvbnMgbm93IGNyYWNrIDEwMG1iaXRz LCBhbmQKdGhlcmUgeW91IGRvIHNlZSBhbGwgdGhhdCBuaWZ0eSBmcV9jb2RlbC1seSBjaG9jb2xh dGV5IGdvb2RuZXNzCmtpY2tpbmcgaW4uLi4uCgpidXQgSSBkbyB0ZW5kIHRvIHRoaW5rIHRoZSBv cHRpbWl6YXRpb24gZm9jdXMgc2hvdWxkIGJlIGF0IGxvdyByYXRlcwp3aXRoIGxvdHMgb2Ygc3Rh dGlvbnMgZm9yIHBsdCBtb3JlIHRoYW4gYmFuZHdpZHRoLgoKPiBUaGFua3MsCj4gQmVuCj4KPgo+ Cj4gLS0KPiBCZW4gR3JlZWFyIDxncmVlYXJiQGNhbmRlbGF0ZWNoLmNvbT4KPiBDYW5kZWxhIFRl Y2hub2xvZ2llcyBJbmMgIGh0dHA6Ly93d3cuY2FuZGVsYXRlY2guY29tCj4KCgotLSAKCkRhdmUg VMOkaHQKQ1RPLCBUZWtMaWJyZSwgTExDCmh0dHA6Ly93d3cudGVrbGlicmUuY29tClRlbDogMS04 MzEtMjA1LTk3NDAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmF0aDEwayBtYWlsaW5nIGxpc3QKYXRoMTBrQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9hdGgxMGsK