From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-oi0-x22e.google.com ([2607:f8b0:4003:c06::22e]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1axIla-0004o0-Dm for ath10k@lists.infradead.org; Mon, 02 May 2016 18:40:23 +0000 Received: by mail-oi0-x22e.google.com with SMTP id x19so201500504oix.2 for ; Mon, 02 May 2016 11:40:01 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: <57258F41.8040600@candelatech.com> <1462114043.512818296@apps.rackspace.com> Date: Mon, 2 May 2016 11:40:00 -0700 Message-ID: Subject: Re: [Make-wifi-fast] fq_codel_drop vs a udp flood From: Dave Taht 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: Roman Yeryomin Cc: make-wifi-fast@lists.bufferbloat.net, David Reed , "codel@lists.bufferbloat.net" , Ben Greear , ath10k T24gTW9uLCBNYXkgMiwgMjAxNiBhdCA3OjAzIEFNLCBSb21hbiBZZXJ5b21pbiA8bGVyb2kubGlz dHNAZ21haWwuY29tPiB3cm90ZToKPiBPbiAxIE1heSAyMDE2IGF0IDE3OjQ3LCAgPGRwcmVlZEBy ZWVkLmNvbT4gd3JvdGU6Cj4+IE1heWJlIEkgbWlzc2VkIHNvbWV0aGluZywgYnV0IHdoeSBpcyBp dCBpbXBvcnRhbnQgdG8gb3B0aW1pemUgZm9yIGEgVURQIGZsb29kPwo+Cj4gV2UgZG9uJ3QgbmVl ZCB0byBvcHRpbWl6ZSBpdCB0byBVRFAgYnV0IFVEUCBpcyB1c2VkIGUuZy4gYnkgdG9ycmVudHMK PiB0byBhY2hpZXZlIGhpZ2hlciB0aHJvdWdocHV0IGFuZCB1c2VkIGEgbG90IGluIGdlbmVyYWwu CgpUb3JyZW50cyB1c2UgdVRQIGNvbmdlc3Rpb24gY29udHJvbCBhbmQgd29uJ3QgaGl0IHRoaXMg ZnVuY3Rpb24gYXQKYWxsLiBBbmQgZXJpYyBqdXN0IG1hZGUgZnFfY29kZWxfZHJvcCBtb3JlIGVm ZmljaWVudCBmb3IgdGVzdHMgdGhhdApkby4KClRoZXJlIGFyZSBwb3RlbnRpYWxseSB6aWxsaW9u cyBvZiBvdGhlciBpc3N1ZXMgd2l0aCBhbXBkdSdzLCB0eG9wCnVzYWdlLCBhZ2dyZWdhdGUgInBh Y2tpbmciLCBldGMgdGhhdCBjYW4gYWxzbyBhZmZlY3QgYW5kIG90aGVyCnByb3RvY29vbHMuCgo+ IEFuZCwgYWdhaW4sIGluIHRoaXMgY2FzZSBUQ1AgaXMgYnJva2VuIHRvbyAoNzUwTWJwcyBkb3du IHRvIDU1MCksIHNvCj4gaXQncyBub3QgbGlrZSBEYXZlIGlzIHNheWluZyB0aGF0IFVEUCB0ZXN0 IGlzIGJyb2tlbiwgZnFfY29kZWwgaXMganVzdAo+IHRvbyBodW5ncnkgZm9yIENQVQoKImZxX2Nv ZGVsX2Ryb3AiIHdhcyB0b28gaHVuZ3J5IGZvciBjcHUuIGZpeGVkLiB0aHggZXJpYy4gOikKCkkn dmUgbmV2ZXIgc2VlbiBhdGgxMGsgdGNwIHRocm91Z2hwdXQgaW4gdGhlIHJlYWwgd29ybGQgKGUu ZyBub3Qgd2lyZWQKdXAsIG92ZXIgdGhlIGFpcikgZXZlbiBjbG9zZSB0byA3NTAgdW5kZXIgdGVz dCBvbiB0aGUgYXRoMTBrIChJJ3ZlCnNlZW4gMzAwLCBhbmQgSSdtIGdldHRpbmcgc29tZSBiZXR0 ZXIgZ2VhciB1cCB0aGlzIHdlZWspLi4uIGFuZApldmVyeWJvZHkgdGVzdHMgd2lmaSBkaWZmZXJl bnRseS4KCihmb3IgdGhlIHJlY29yZCwgd2hhdCB3YXMgeW91ciBpcGVyZiB0Y3AgdGVzdCBsaW5l PykuIE1vcmUgcGVvcGxlCnRlc3RpbmcgZGlmZmVyZW50bHkgPSBnb29kLgoKRGlkIGZxX2NvZGVs X2Ryb3Agc2hvdyB1cCBpbiB0aGUgcGVyZiB0cmFjZSBmb3IgdGhlIHRjcCB0ZXN0PwoKKE1vcmUg bGlrZWx5IHlvdSB3b3VsZCBoYXZlIHNlZW4gdGltZXN0YW1waW5nIHJpc2Ugc2lnbmlmaWNhbnRs eSBmb3IKdGhlIHRjcCB0ZXN0LCBhcyB3ZWxsIGFzIGVucXVldWUgdGltZSkKClRoYXQgc2FpZCwg bW9yZSBwZW9wbGUgdGVzdGluZyB0aGUgc2FtZSB3YXlzLCBnb29kIHRvby4KCkknZCBsb3ZlIGl0 IGlmIHlvdSBjb3VsZCByZS1ydW4geW91ciB0ZXN0IHZpYSBmbGVudCwgcmF0aGVyIHRoYW4KaXBl cmYsIGFuZCBsb29rIGF0IHRoZSB0Y3Agc2F3dG9vdGggb3IgbGFjayB0aGVyZW9mLCBhbmQgdGhl IG92ZXJhbGwKY3VydmUgb2YgdGhlIHRocm91Z2hwdXQsIGJlZm9yZSBhbmQgYWZ0ZXIgdGhpcyBz ZXQgb2YgY29tbWl0cy4KCkZsZW50IGNhbiBiZSBtYWRlIHRvIHJ1biBvbiBvc3ggdmlhIG1hY3Bv cnRzIG9yIGJyZXcuIChtdWNoIGVhc2llciB0bwpnZXQgcnVubmluZyBvbiBsaW51eCkgQW5kIHRy eSB0byB0YWcgYWxvbmcgb24gb2JzZXJ2aW5nL2ZpeGluZyBsb3cKd2lmaSByYXRlIGJlaGF2aW9y PwoKVGhpcyB3YXMgdGhlIG1vcmUgcmVjZW50IGRxbCB2cyB3aWZpIHRlc3Q6CgpodHRwOi8vYmxv Zy5jZXJvd3J0Lm9yZy9wb3N0L2RxbF9vbl93aWZpXzIvCgphbmQgc2VyaWVzLgoKPj4gQSBnZW5l cmFsIG9ic2VydmF0aW9uIG9mIGNvbnRyb2wgdGhlb3J5IGlzIHRoYXQgdGhlcmUgaXMgYWxtb3N0 IGFsd2F5cyBhbiBhZHZlcnNhcmlhbCBzdHJhdGVneSB0aGF0IHdpbGwgZGVzdHJveSBhbnkgY29u dHJvbCByZWdpbWUuIFNvbWV0aW1lcyBvbmUgaGFzIHRvIGludm9rZSBhbiAib3JhY2xlIiB0aGF0 IGtub3dzIHRoZSBzdGF0ZSBvZiB0aGUgY29udHJvbCBzeXN0ZW0gYXQgYWxsIHRpbWVzIHRvIGdl dCB0aGVyZS4KPj4KPj4gU28gYSBoYW5kd2F2ZSBpcyB0aGF0ICp0aGVyZSBpcyBhbHdheXMgYSBE RG9TIHRoYXQgd2lsbCB3b3JrKiBubyBtYXR0ZXIgaG93IGNsZXZlciB5b3UgYXJlLgo+Pgo+PiBB bmQgdGhlIGNvcm9sbGFyeSBpcyBpbGx1c3RyYXRlZCBieSB0aGUgVFNBLiBJZiB5b3UgY2FuJ3Qg YW50aWNpcGF0ZSBhbGwgcG9zc2libGUgYXR0YWNrcywgaXQgaXMgbm90IGNsZWFybHkgYmV0dGVy IHRvIGp1c3QgY29uZ2VzdCB0aGUgd2hvbGUgc3lzdGVtIGF0IGFsbCB0aW1lcyB3aXRoIGNvbnRy b2xzIHRoYXQgY2FuJ3QgcG9zc2libHkgc29sdmUgYWxsIHBvc3NpYmxlIGF0dGFja3MgLSBpLmUu IFNlY3VyaXR5IFRoZWF0ZXIuIFdlIGRvbid0IHdhbnQgImFudGktRERvUyB0aGVhdGVyIiBJIGRv bid0IHRoaW5rLgo+Pgo+PiBUaGVyZSBpcyBhbiBhbHRlcm5hdGl2ZSBtZWNoYW5pc20gdGhhdCBo YXMgYmVlbiBlZmZlY3RpdmUgYXQgZGVhbGluZyB3aXRoIEREb1MgaW4gZ2VuZXJhbCAtIHRyYWNr IHRoZSBkaXNydXB0aW9uIGJhY2sgdG8gdGhlIHNvdXJjZSBhbmQga2lsbCBpdC4gICh0aGlzIGlz IHdoYXQgdGhlIGVuZC10by1lbmQgYXJndW1lbnQgd291bGQgYmU6IGRvbid0IHRyeSB0byBzb2x2 ZSBhIGZ1bmRhbWVudGFsbHkgZW5kLXRvLWVuZCBwcm9ibGVtLCBERG9TLCBzb2xlbHkgaW4gdGhl IG5ldHdvcmsgW3N3aXRjaGVzXSwgc2luY2UgeW91IGhhdmUgdG8gc29sdmUgaXQgYXQgdGhlIGVk Z2VzIGFueXdheS4gSnVzdCBpbmNsdWRlIGluIHRoZSBuZXR3b3JrIHRoaW5ncyB0aGF0IHdpbGwg aGVscCB5b3Ugc29sdmUgaXQgYXQgdGhlIGVkZ2VzIC0gdHJhY2ViYWNrIHRvb2xzIHRoYXQgd29y ayBmYXN0IGFuZCB0YXJnZXRlZCBzaHV0ZG93biBvZiBzb3VyY2VzKS4KPj4KPj4gSSBkb24ndCBo YXBwZW4gdG8ga25vdyBvZiBhICJub3JtYWwiIGFwcGxpY2F0aW9uIHRoYXQgYmVuZWZpdHMgZnJv bSBVRFAgZmxvb2RpbmcgLSBub3QgZXZlbiAiZ29zc2lwIHByb3RvY29scyIgZG8gdGhhdCEKPj4K Pj4gSW4gY29udGV4dCwgdGhlbiwgbGV0J3Mgbm90IGZvY3VzIG9uIFVEUCBmbG9vZCBwZXJmb3Jt YW5jZSAob3IgYW55IG90aGVyICJleHRyZW1lIGNhc2UiIHRoYXQganVzdCBzZWVtcyBmdW4gdG8g d29yayBvbiBpbiBhIHJlc2VhcmNoIHBhcGVyIGJlY2F1c2UgaXQgaXMgZWFzeSB0byBzdGF0ZSBj b21wYXJlZCB0byB0aGUgcmVhbCB3b3JsZCkgdG9vIG11Y2guCj4+Cj4+IEkga25vdyB0aGF0IHRo ZSByZWFjdGlvbiB0byB0aGlzIHBvc3Qgd2lsbCBiZSB0byByZWFkIGl0IGFuZCBwcmV0dHkgbXVj aCBnbyBvbiBhcyB1c3VhbCBmb2N1c2luZyBvbiBVRFAgZmxvb2RzLiBCdXQgSSBoYXZlIHRvIHRy eS4gVGhlcmUgYXJlIHNvIG1hbnkgbW9yZSBpbXBvcnRhbnQgaXNzdWVzIChsaWtlIHVuZGVyc3Rh bmRpbmcgaG93IHRvIHVzZSBjb25nZXN0aW9uIHNpZ25hbGxpbmcgaW4gZ29zc2lwIHByb3RvY29s cywgZ2FtaW5nLCBvciBsaXZlIEFWIGNvbmZlcmVuY2luZyBiZXR0ZXIsIGFzIHNvbWUgcmVsYXRl ZCBleGFtcGxlcywgd2hpY2ggYXJlIGVuZC10by1lbmQgcHJvYmxlbXMgZm9yIHdoaWNoIHF1ZXVl IG1hbmFnZW1lbnQgYW5kIGNvbmdlc3Rpb24gc2lnbmFsbGluZyBhcmUgdHJ1bHkgY3J1Y2lhbCku Cj4+Cj4+Cj4+Cj4+IE9uIFN1bmRheSwgTWF5IDEsIDIwMTYgMToyM2FtLCAiRGF2ZSBUYWh0IiA8 ZGF2ZS50YWh0QGdtYWlsLmNvbT4gc2FpZDoKPj4KPj4+IE9uIFNhdCwgQXByIDMwLCAyMDE2IGF0 IDEwOjA4IFBNLCBCZW4gR3JlZWFyIDxncmVlYXJiQGNhbmRlbGF0ZWNoLmNvbT4gd3JvdGU6Cj4+ Pj4KPj4+Pgo+Pj4+IE9uIDA0LzMwLzIwMTYgMDg6NDEgUE0sIERhdmUgVGFodCB3cm90ZToKPj4+ Pj4KPj4+Pj4gVGhlcmUgd2VyZSBhIGZldyB0aGluZ3Mgb24gdGhpcyB0aHJlYWQgdGhhdCB3ZW50 IGJ5LCBhbmQgSSB3YXNuJ3Qgb24KPj4+Pj4gdGhlIGF0aDEwayBsaXN0Cj4+Pj4+Cj4+Pj4+ICho dHRwczovL3d3dy5tYWlsLWFyY2hpdmUuY29tL2F0aDEwa0BsaXN0cy5pbmZyYWRlYWQub3JnL21z ZzA0NDYxLmh0bWwpCj4+Pj4+Cj4+Pj4+IGZpcnN0IHVwLCB1ZHAgZmxvb2QuLi4KPj4+Pj4KPj4+ Pj4+Pj4gRnJvbTogYXRoMTBrIDxhdGgxMGstYm91bi4uLkBsaXN0cy5pbmZyYWRlYWQub3JnPiBv biBiZWhhbGYgb2YgUm9tYW4KPj4+Pj4+Pj4gWWVyeW9taW4gPGxlcm9pLmxpLi4uQGdtYWlsLmNv bT4KPj4+Pj4+Pj4gU2VudDogRnJpZGF5LCBBcHJpbCA4LCAyMDE2IDg6MTQgUE0KPj4+Pj4+Pj4g VG86IGF0aDEwa0BsaXN0cy5pbmZyYWRlYWQub3JnCj4+Pj4+Pj4+IFN1YmplY3Q6IGF0aDEwayBw ZXJmb3JtYW5jZSwgbWFzdGVyIGJyYW5jaCBmcm9tIDIwMTYwNDA3Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+ IEhlbGxvIQo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBJJ3ZlIHNlZW4gcGVyZm9ybWFuY2UgcGF0Y2hlcyB3 ZXJlIGNvbW1pdGVkIHNvIEkndmUgZGVjaWRlZCB0byBnaXZlIGl0Cj4+Pj4+Pj4+IGEgdHJ5ICh1 c2luZyA0LjEga2VybmVsIGFuZCBiYWNrcG9ydHMpLgo+Pj4+Pj4+PiBUaGUgcmVzdWx0cyBhcmUg cXVpdGUgZGlzYXBwb2ludGluZzogVENQIGRvd25sb2FkIChjbGllbnQgcG92KSBkcm9wcGVkCj4+ Pj4+Pj4+IGZyb20gNzUwTWJwcyB0byB+NTUwIGFuZCBVRFAgc2hvd3MgY29tcGxldGVseSB3ZWly ZCBiZWhhdm91ciAtIGlmCj4+Pj4+Pj4+IGdlbmVyYXRpbmcgOTAwTWJwcyBpdCBnaXZlcyAzME1i cHMgbWF4LCBpZiBnZW5lcmF0aW5nIDMwME1icHMgaXQgZ2l2ZXMKPj4+Pj4+Pj4gMjUwTWJwcywg YmVmb3JlIChsYXRlc3Qgb2ZmaWNpYWwgYmFja3BvcnRzIHJlbGVhc2UgZnJvbSBKYW51YXJ5KSBJ IHdhcwo+Pj4+Pj4+PiBhYmxlIHRvIGdldCA5MDBNYnBzLgo+Pj4+Pj4+PiBIYXJkd2FyZSBpcyBi YXNpY2FsbHkgYXAxNTIgKyBxY2E5ODh4IDN4My4KPj4+Pj4+Pj4gV2hlbiBydW5uaW5nIHBlcmYg dG9wIEkgc2VlIHRoYXQgZnFfY29kZWxfZHJvcCBlYXRzIGEgbG90IG9mIGNwdS4KPj4+Pj4+Pj4g SGVyZSBpcyB0aGUgb3V0cHV0IHdoZW4gcnVubmluZyBpcGVyZjMgVURQIHRlc3Q6Cj4+Pj4+Pj4+ Cj4+Pj4+Pj4+ICAgICAgNDUuNzglICBba2VybmVsXSAgICAgICBba10gZnFfY29kZWxfZHJvcAo+ Pj4+Pj4+PiAgICAgICAzLjA1JSAgW2tlcm5lbF0gICAgICAgW2tdIGFnNzF4eF9wb2xsCj4+Pj4+ Pj4+ICAgICAgIDIuMTglICBba2VybmVsXSAgICAgICBba10gc2tiX3JlbGVhc2VfZGF0YQo+Pj4+ Pj4+PiAgICAgICAyLjAxJSAgW2tlcm5lbF0gICAgICAgW2tdIHI0a19kbWFfY2FjaGVfaW52Cj4+ Pj4+Cj4+Pj4+Cj4+Pj4+IFRoZSB1ZHAgZmxvb2QgYmVoYXZpb3IgaXMgbm90ICJ3ZWlyZCIuICBU aGUgdGVzdCBpcyB3cm9uZy4gSXQgaXMgc28KPj4+Pj4gZmlsbGluZwo+Pj4+PiB0aGUgbG9jYWwg cXVldWUgYXMgdG8gZHJhbWF0aWNhbGx5IGV4Y2VlZCB0aGUgYmFuZHdpZHRoIG9uIHRoZSBsaW5r Lgo+Pj4+Cj4+Pj4KPj4+PiBJdCB3b3VsZCBiZSBuaWNlIGlmIHlvdSBjb3VsZCBwcm92aWRlIGJh Y2twcmVzc3VyZSBzbyB0aGF0IHlvdSBjb3VsZAo+Pj4+IHNpbXBseSBzZWxlY3Qgb24gdGhlIHVk cCBzb2NrZXQgYW5kIHVzZSB0aGF0IHRvIGtub3cgd2hlbiB5b3UgY2FuIHNlbmQKPj4+PiBtb3Jl IGZyYW1lcz8/Cj4+Pgo+Pj4gVGhlIHFkaXNjIHZlcnNpb24gcmV0dXJucyAgTkVUX1hNSVRfQ04g dG8gdGhlIHVwcGVyIGxheWVycyBvZiB0aGUKPj4+IHN0YWNrIGluIHRoZSBjYXNlCj4+PiB3aGVy ZSB0aGUgZHJvcHBlZCBwYWNrZXQncyBmbG93ID0gdGhlIGluZ3Jlc3MgcGFja2V0J3MgZmxvdywg YnV0IHRoYXQKPj4+IGlzIGFmdGVyIHRoZQo+Pj4gZXhoYXVzdGl2ZSBzZWFyY2guLi4KPj4+Cj4+ PiBJIGRvbid0IGtub3cgd2hhdCBlZmZlY3QgKGlmIGFueSkgdGhhdCBoYWQgb24gdWRwIHNvY2tl dHMuIEhtbS4uLiB3aWxsCj4+PiBsb29rLiBFcmljIHdvdWxkICJqdXN0IGtub3ciLgo+Pj4KPj4+ IFRoYXQgbWlnaHQgcHJvdmlkZSBtb3JlIGJhY2twcmVzc3VyZSBpbiB0aGUgbG9jYWwgc2NlbmFy aW8uIFNPX1NORF9CVUYKPj4+IHNob3VsZCBpbnRlcmFjdCB3aXRoIHRoaXMgc3R1ZmYgaW4gc29t ZSBzYW5lIHdheS4uLgo+Pj4KPj4+IC4uLiBidXQgb3ZlciB0aGUgd2lyZSBmcm9tIGEgdGVzdCBk cml2ZXIgYm94IGVsc2V3aGVyZSwgdGhvLCBhc2lkZQo+Pj4gZnJvbSBldGhlcm5ldCBmbG93IGNv bnRyb2wgaXRzZWxmLCB3aGVyZSBlbmFibGVkLCBuby4KPj4+Cj4+PiAuLi4gYnV0IGluIHRoYXQg Y2FzZSB5b3UgaGF2ZSBhIG11Y2ggbG93ZXIgaW5ib3VuZC9vdXRib3VuZAo+Pj4gcGVyZm9ybWFu Y2UgZGlzcGFyaXR5IGluIHRoZSBnZW5lcmFsIGNhc2UgdG8gc3RhcnQgd2l0aC4uLiB3aGljaCBj YW4KPj4+IHN0aWxsIGJlIHF1aXRlIGhpZ2guLi4KPj4+Cj4+Pj4KPj4+PiBBbnkgaWRlYSBob3cg dGhhdCB3b3JrcyB3aXRoIGNvZGVsPwo+Pj4KPj4+IEJlYXV0aWZ1bGx5Lgo+Pj4KPj4+IEZvciBy ZXNwb25zaXZlIFRDUCBmbG93cy4gSXQgaW1tZWRpYXRlbHkgcmVkdWNlcyB0aGUgd2luZG93IHdp dGhvdXQgYSBSVFQuCj4+Pgo+Pj4+IFRoYW5rcywKPj4+PiBCZW4KPj4+Pgo+Pj4+IC0tCj4+Pj4g QmVuIEdyZWVhciA8Z3JlZWFyYkBjYW5kZWxhdGVjaC5jb20+Cj4+Pj4gQ2FuZGVsYSBUZWNobm9s b2dpZXMgSW5jICBodHRwOi8vd3d3LmNhbmRlbGF0ZWNoLmNvbQo+Pj4KPj4+Cj4+Pgo+Pj4gLS0K Pj4+IERhdmUgVMOkaHQKPj4+IExldCdzIGdvIG1ha2UgaG9tZSByb3V0ZXJzIGFuZCB3aWZpIGZh c3RlciEgV2l0aCBiZXR0ZXIgc29mdHdhcmUhCj4+PiBodHRwOi8vYmxvZy5jZXJvd3J0Lm9yZwo+ Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4+IE1h a2Utd2lmaS1mYXN0IG1haWxpbmcgbGlzdAo+Pj4gTWFrZS13aWZpLWZhc3RAbGlzdHMuYnVmZmVy YmxvYXQubmV0Cj4+PiBodHRwczovL2xpc3RzLmJ1ZmZlcmJsb2F0Lm5ldC9saXN0aW5mby9tYWtl LXdpZmktZmFzdAo+Pj4KPj4KPj4KPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KPj4gTWFrZS13aWZpLWZhc3QgbWFpbGluZyBsaXN0Cj4+IE1ha2Utd2lm aS1mYXN0QGxpc3RzLmJ1ZmZlcmJsb2F0Lm5ldAo+PiBodHRwczovL2xpc3RzLmJ1ZmZlcmJsb2F0 Lm5ldC9saXN0aW5mby9tYWtlLXdpZmktZmFzdAoKCgotLSAKRGF2ZSBUw6RodApMZXQncyBnbyBt YWtlIGhvbWUgcm91dGVycyBhbmQgd2lmaSBmYXN0ZXIhIFdpdGggYmV0dGVyIHNvZnR3YXJlIQpo dHRwOi8vYmxvZy5jZXJvd3J0Lm9yZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KYXRoMTBrIG1haWxpbmcgbGlzdAphdGgxMGtAbGlzdHMuaW5mcmFkZWFk Lm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2F0aDEwawo=