From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp3.kau.se (smtp3.kau.se [130.243.21.252]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.bufferbloat.net (Postfix) with ESMTPS id 0EB033B29D for ; Tue, 8 Nov 2022 13:53:31 -0500 (EST) Received: from mailfilter-ng-2.sunet.se (mailfilter-89-45-235-13.instance.cloud.sunet.se [89.45.235.13]) by smtp3.kau.se (Postfix) with ESMTPS id AF9C42203B5 for ; Tue, 8 Nov 2022 19:53:29 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kau.se; s=kause; t=1667933609; bh=oiqQ6HTxMymRY5LVVxOOsGXepKVbGnFh3LD8uxyoJqU=; h=From:To:CC:Subject:Date:References:In-Reply-To:From; b=awUqd2xlLsUglq5k+t5/ah/IXgZixweJiUJUAi92Z6TO+ruUBtUfT+LnP9rzXwPgV B6TlPZ9W19gbFE/uFDCj/XgYqAC59cB/UW1V8CiyKdUyJuDTrS5PjV8Q++D6JIRQFC haZOGfhmy9AgGB8/4fjS0n/LGps2gtN0lu0YpbGo= X-Halon-ID: 9d3e5763-5f96-11ed-a617-a79a0b1fdbca Received: from Exch-A3.personal.kau (exch-a3.kau.se [130.243.19.84]) by mailfilter-ng-2.sunet.se (Halon) with ESMTPS id 9d3e5763-5f96-11ed-a617-a79a0b1fdbca; Tue, 08 Nov 2022 18:53:20 +0000 (UTC) Received: from Exch-A3.personal.kau (130.243.19.84) by Exch-A3.personal.kau (130.243.19.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.1.2375.32; Tue, 8 Nov 2022 19:53:27 +0100 Received: from Exch-A3.personal.kau ([fe80::7814:bbca:1c3a:e0b0]) by Exch-A3.personal.kau ([fe80::7814:bbca:1c3a:e0b0%4]) with mapi id 15.01.2375.032; Tue, 8 Nov 2022 19:53:27 +0100 From: Simon Sundberg To: "herberticus@gmail.com" CC: "libreqos@lists.bufferbloat.net" Thread-Topic: [LibreQoS] Before/After Performance Comparison (Monitoring Mode) Thread-Index: AQHY8TX0pLAePCEwa0KFpQ/+2YwMrq41CDwAgAAbrYCAAC+tgA== Date: Tue, 8 Nov 2022 18:53:27 +0000 Message-ID: <32f3097eecb67781c1beb2b5c197586624378787.camel@kau.se> References: <877d05v825.fsf@toke.dk> In-Reply-To: Accept-Language: sv-SE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [130.243.27.149] Content-Type: text/plain; charset="utf-8" Content-ID: <554563F84E16A044A3088A58700B0A65@personal.kau> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [LibreQoS] Before/After Performance Comparison (Monitoring Mode) X-BeenThere: libreqos@lists.bufferbloat.net X-Mailman-Version: 2.1.20 Precedence: list List-Id: Many ISPs need the kinds of quality shaping cake can do List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Nov 2022 18:53:31 -0000 SGksDQpXaWxsIGp1c3QgY2hpbWUgaW4gd2l0aCBteSBvd24gcGVyc3BlY3RpdmUgb24gdGhpcyBl UFBpbmcgKHdoYXQgSSd2ZQ0KaW50ZXJuYWxseSBuYW1lZCBteSBlQlBGIGJhc2VkIHBwaW5nIHRv KSB2cyB4ZHAtY3B1bWFwLXBwaW5nIGRlYmF0ZSBhbmQNCmFkcmVzcyBzb21lIG9mIHRoZSBwb2lu dHMgbWVudGlub25lZC4NCg0KRmlyc3Qgb2YgYWxsIEkgd2FudCB0byBzYXkgdGhhdCBJJ20gdmVy eSBpbXByZXNzZWQgd2l0aCBhbGwgdGhlIHdvcmsNCkhlcmJlcnQgaGFzIG1hZGUgd2l0aCBib3Ro IHhkcC1jcHVtYXAtdGMgYW5kIHhkcC1jcHVtYXAtcHBpbmcuIFRoZXJlDQpzZWVtcyB0byBiZSB2 ZXJ5IHJhcGlkIHByb2dyZXNzIGFuZCBzb21lIHZlcnkgbmljZSBwZXJmb3JtYW5jZSBudW1iZXJz DQpiZWluZyBwcmVzZW50ZWQuIEknbSBhbHNvIHZlcnkgaGFwcHkgdGhhdCBzb21lIG9mIG15IHdv cmsgd2l0aCBlUFBpbmcNCmNhbiBiZW5lZml0IExpYnJlUW9TLCBldmVuIGlmIEksIGxpa2UgVG9r ZSwgd291bGQgaG9wZSB0aGF0IHdlIGNvdWxkDQpwZXJoYXBzIGJlbmVmaXQgYSBiaXQgbW9yZSBm cm9tIGVhY2ggb3RoZXJzIHdvcmsuDQoNClRoYXQgc2FpZCBJIGNhbiBzZWUgc29tZSBvZiB0aGUg YmVuZWZpdHMgZnJvbSBrZWVwaW5nIGNwdW1hcC1wcGluZyBpdHMNCm93biB0aGluZyBhbmQgdW5k ZXJzdGFuZCBpZiB0aGF0J3MgdGhlIHJvdXRlIHlvdSB3YW50IHRvIGhlYWQgZG93bi4NClJlZ2Fy ZGxlc3MgSSBob3BlIHdlIGNhbiBhdCBsZWFzdCBleGNoYW5nZSBzb21lIGlkZWFzIGFuZCBsZWFy biBmcm9tDQplYWNoIG90aGVyLg0KDQpPbiBUdWUsIDIwMjItMTEtMDggYXQgMTA6MDIgLTA2MDAs IEhlcmJlcnQgV29sdmVyc29uIHZpYSBMaWJyZVFvUw0Kd3JvdGU6DQo+IEknbSAob2J2aW91c2x5 ISkgZ29pbmcgdG8gcmVzcGVjdGZ1bGx5IGRpc2FncmVlIHdpdGggVG9rZSBvbiB0aGlzIG9uZS4N Cj4gSSBkaWRuJ3QgZGl2ZSBpbnRvIGNwdW1hcC1wcGluZyBmb3IgZnVuOyBJIHRyaWVkICpyZWFs bHkgaGFyZCogdG8gd29yaw0KPiB3aXRoIHRoZSBvcmlnaW5hbCBlcHBpbmcveGRwLXBwaW5nLiBJ dCdzIGEgZ3JlYXQgdG9vbCwgcmVhbGx5IGZhbnRhc3RpYyB3b3JrLg0KPiBJdCdzIGFsc28gbm90 IHJlYWxseSBkZXNpZ25lZCBmb3IgdGhlIHNhbWUgcHVycG9zZS4NCg0KZVBQaW5nIGlzIHZlcnkg aGVhdmlseSBpbnNwaXJlZCBieSBLYXRoaWUncyBwcGluZywgYW5kIHBlcmhhcHMgYSBiaXQNCnRv byBtdWNoIHNvIGF0IHRpbWVzLiBBbGxvd2luZyBhbiBJU1AgdG8gbW9uaXRvciB0aGUgbGF0ZW5j eSBpdHMNCmN1c3RvbWVycyBleHBlcmllbmNlIGlzIGRlZmluaW50ZWx5IGEgdXNlIGNhc2Ugd2Ug d291bGQgd2FudCB0byBzdXBwb3J0DQp3aXRoIGVQUGluZywgYW5kIGFyZSB3b3JraW5nIG9uIHNv bWUgaW1wcm92ZW1lbnRzIHRvIG1ha2UgaXQgd29yaw0KYmV0dGVyIGZvciB0aGF0IChhcyBUb2tl IG1lbnRpb25lZCB3ZSdyZSBjdXJyZW50bHkgbG9va2luZyBhdCBhZGRpbmcNCnNvbWUgYWdncmVn YXRpb24gc3VwcG9ydCBpbnN0ZWFkIG9mIHJlcG9ydGluZyBpbmRpdmlkdWFsIFJUVCBzYW1wbGVz KS4NClNvIEkgd2lsbCBkZWZpbmludGVseSBoYXZlIGEgbG9vayBhdCBzb21lIG9mIHRoZSBjaGFu Z2VzIEhlcmJlcnQgaGFzDQpkb25lIHdpdGggY3B1bWFwLXBwaW5nIHRvIHNlZSBpZiBpdCBtYWtl cyBzZW5zZSB0byBpbXBsZW1lbnQgc29tZSBvZg0KdGhlbSBhcyBhbHRlcm5hdGl2ZXMgZm9yIGVQ UGluZyBhcyB3ZWxsLg0KPg0KPiBUaGUgb3JpZ2luYWwgUG9sZXJlIHBwaW5nIGlzIHdvbmRlcmZ1 bCwgYnV0IGlzbid0IGdvaW5nIHRvIHNjYWxlIC0gdGhlDQo+IHdheSBpdCBpbmdlc3RzIHBhY2tl dHMgaXNuJ3QgZ29pbmcgdG8gc2NhbGUgYWNyb3NzIG11bHRpcGxlIENQVXMsDQo+IGFuZCBoYXZp bmcgYSBjb3JlIHBlZ2dpbmcgMTAwJSBvbiBhIGJ1c3kgc2hhcGVyIGJveCB3YXMNCj4gZGVncmFk aW5nIG92ZXJhbGwgcGVyZm9ybWFuY2UuIGVwcGluZyBzb2x2ZXMgdGhlIHNjYWxhYmlsaXR5DQo+ IGlzc3VlIHdvbmRlcmZ1bGx5LCBhbmQgKHJpZ2h0bHkpIHJlbWFpbnMgZm9jdXNlZCBvbiBnaXZp bmcgeW91DQo+IGEgY29tcGxldGUgcmVwb3J0IG9mIGFsbCBvZiB0aGUgZGF0YSBpcyBhY2Nlc3Nl ZCB3aGlsZSBpdCB3YXMNCj4gcnVubmluZy4gSWYgeW91IHdhbnQgdG8gcnVuIGEgbW9uaXRvcmlu ZyBzZXNzaW9uIGFuZCBzZWUgd2hhdCdzDQo+IGdvaW5nIG9uLCBpdCdzIGEgKmZhbnRhc3RpYyog d2F5IHRvIGRvIGl0IC0gc2VyaW91cyBwcm9wcyB0aGVyZS4gSQ0KPiBiZW5jaG1hcmtlZCBpdCBh dCBhYm91dCAxNSBnYml0L3Mgb24gc2luZ2xlLXN0cmVhbSB0ZXN0aW5nLA0KPiB3aGljaCBpcyAq cmVhbGx5KiBpbXByZXNzaXZlIChubyBvdGhlciBCUEYgcHJvZ3JhbXMgYWN0aXZlLA0KPiBubyBz aGFwaW5nKS4NCj4NCj4gVGhlIGZpcnN0IGlzc3VlIEkgcmFuIGludG8gaXMgdGhhdCBzdGFja2lu ZyBYRFAgcHJvZ3JhbXMgaXNuJ3QNCj4gYWxsIHRoYXQgd2VsbCBkZWZpbmVkIGEgcHJvY2Vzcy4g WW91IGNhbiBtYWtlIGl0IHdvcmssIGJ1dA0KPiBpdCBnZXRzIG1lc3N5IHdoZW4gYm90aCBwcm9n cmFtcyBoYXZlIHNldHVwL3RlYXJkb3duDQo+IHJvdXRpbmVzLiBJIGtpbmRhLCBzb3J0YSBtYW5h Z2VkIHRvIGdldCB0aGUgdHdvIHJ1bm5pbmcgYXQNCj4gb25jZSwgYW5kIGl0IG1vc3RseSB3b3Jr ZWQuIFRoZXJlICpyZWFsbHkqIG5lZWRzIHRvIGJlIGFuDQo+IGVhc2llciB3YXkgdGhhdCBkb2Vz bid0IHJ1biBoZWFkbG9uZyBpbnRvIFVidW50dSdzIGxvdmVseQ0KPiAieW91IHVwZGF0ZWQgdGhl IGtlcm5lbCBhbmQgdG9vbHMsIHdlIGRpZG4ndCB0aGluayB5b3UnZA0KPiBuZWVkIGJwZnRvb2wg c28gd2UgZGlkbid0IGluY2x1ZGUgaXQiIGlzc3VlcywgYWRqdXN0aW5nIHNjcmlwdHMNCj4gdW50 aWwgbmVpdGhlciBzYXlzICJvb3BzLCB0aGVyZSdzIGFscmVhZHkgYW4gWERQIHByb2dyYW0NCj4g aGVyZSEgQnllISIuIEkga25vdyB0aGF0IHRoaXMgaXMgYSBwcmV0dHkgbmV3IHRoaW5nLCBidXQg dGhlDQo+IHRvb2xpbmcgaGFzbid0IHJlYWxseSBjYXVnaHQgdXAgeWV0IHRvIG1ha2UgdGhpcyBh IGNvbWZvcnRhYmxlDQo+IHByb2Nlc3MuIEknbSBwcmV0dHkgc3VyZSBJIHNwZW50IG1vcmUgdGlt ZSB0cnlpbmcgdG8gcnVuIGJvdGgNCj4gYXQgb25jZSB0aGFuIGl0IHRvb2sgdG8gbWFrZSBhIGNv bWJpbmVkIHZlcnNpb24gdGhhdCBzb3J0LW9mDQo+IHJhbi4gKEkgaGFkIGEgd29ya2luZyB2ZXJz aW9uIGluIGFuIGFmdGVybm9vbikNCg0KSSB3aWxsIGFkbWl0IHRoYXQgSSBkb24ndCBoYXZlIG11 Y2ggZXhwZXJpZW5jZSB3aXRoIGNoYWluaW5nIFhEUA0KcHJvZ3JhbXMsIGJ1dCBsaWJ4ZHAgaGFz IGJlZW4gZGVzaWduZWQgdG8gc29sdmUgdGhhdC4gZVBQaW5nIHVzZXMNCmxpYnhkcCB0byBsb2Fk IGl0cyBYRFAgcHJvZ3JhbSBzaW5jZSBhIHdoaWxlIGEgYmFjay4gQnV0IGZvciB0aGF0IHRvDQp3 b3JrIHRvZ2V0aGVyIHdpdGggeGRwLWNwdW1hcC10YyBJIGd1ZXNzIHhkcC1jcHVtYXAtdGMgd291 bGQgbmVlZCB0byBiZQ0KbW9kaWZpZWQgdG8gYWxzbyB1c2UgbGlieGRwLiBJIHJlbWViZXIgcmVh ZGluZyB0aGF0IHRoZXJlIHdhcyBzb21lDQpvdGhlciBpc3N1ZSByZWdhcmRpbmcgaG93IGVQUGlu ZyBoYW5kbGVkIFZMQU4gdGFncywgYnV0IGRvbid0IHJlY2FsbA0KdGhlIGRldGFpbHMsIGFsdGhv dWdoIHRoYXQgc2VlbXMgbGlrZSBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gc29sdmUuDQo+DQo+ IFdpdGggdGhlIHR3byBsaXRlcmFsbHkgY29uY2F0ZW5hdGVkIChidXQgY29tcGlsZWQgdG9nZXRo ZXIpLA0KPiBpdCB3b3JrZWQgLSBidXQgdGhlcmUgd2FzIGEgbm90aWNlYWJsZSBwZXJmb3JtYW5j ZSBjb3N0LiBUaGF0J3MNCj4gd2hlcmUgb3J0aG9nb25hbCBkZXNpZ24gY2hvaWNlcyBoaXQgLSBl cHBpbmcveGRwLXBwaW5nIGlzDQo+IHNhbXBsaW5nIGV2ZXJ5dGhpbmcgKGl0IGNhbiBldmVuIGdv IGxvb2tpbmcgZm9yIEROUyBhbmQgSUNNUCEpLg0KPiBBIFFvRSBib3ggKnJlYWxseSogbmVlZHMg dG8gZ28gb3V0IG9mIGl0cyB3YXkgdG8gYXZvaWQgYWRkaW5nDQo+IGFueSBsYXRlbmN5LCBvdGhl cndpc2UgeW91J3JlIHNlbGYtZGVmZWF0aW5nLiBBIHJlcHJlc2VudGF0aXZlDQo+IHNhbXBsZSBp cyByZWFsbHkgYWxsIHlvdSBuZWVkIC0gd2hpbGUgZm9yIGVwcGluZydzIHRhcmdldCwNCj4gYSBy ZWFsbHkgZGV0YWlsZWQgc2FtcGxlIGlzIHdoYXQgeW91IG5lZWQuIFdoZW4gZmFjZWQgd2l0aA0K PiBkaWZmZXJpbmcgZGVzaWduIGdvYWxzIGxpa2UgdGhhdCwgbXkgcmVzcG9uc2UgaXMgYWx3YXlz IHRvDQo+IG1ha2UgYSB0b29sIHRoYXQgdmVyeSBlZmZpY2llbnRseSBkb2VzIHdoYXQgSSBuZWVk Lg0KPg0KPiBDb21iaW5pbmcgdGhlIHBhY2tldCBwYXJzaW5nKiogd2FzIHRoZSBvYnZpb3VzIGxv dy1oYW5naW5nDQo+IGZydWl0LiBJdCBpcyBmYXN0ZXIsIGJ1dCBub3QgYnkgdmVyeSBtdWNoLiBC dXQgSSByZWFsbHkgaGF0ZQ0KPiBpdCB3aGVuIGNvZGUgcmVwZWF0cyBpdHNlbGYuIEl0IHNlcmlv dXNseSBzZXQgb2ZmIG15IE9DRA0KPiB3YXRjaGluZyBib3RoIGZpbmQgdGhlIElQIGhlYWRlciBv ZmZzZXQsIGRldGVybWluZSBwcm90b2NvbA0KPiAoSVB2NCB2cyBJUHY2KSwgZXRjLiBTbWFsbCBw ZXJmb3JtYW5jZSB3aW4uDQo+DQo+IEJhaWxpbmcgb3V0IGFzIHNvb24gYXMgd2UgZGV0ZXJtaW5l IHRoYXQgd2UgYXJlbid0IGxvb2tpbmcNCj4gYXQgYSBUQ1AgcGFja2V0IHdhcyBhIGJpZyBwZXJm b3JtYW5jZSB3aW4uIFlvdSBjYW4gYWNoaWV2ZQ0KPiB0aGUgc2FtZSBieSBjYXJlZnVsbHkgc2V0 dGluZyB1cCB0aGUgImNvbmZpZyIgZm9yIGVwcGluZywNCj4gYnV0IHRoZXJlJ3Mgbm90IGEgbG90 IG9mIHBvaW50IGluIGtlZXBpbmcgdGhlIEROUy9JQ01QIGNvZGUNCj4gd2hlbiBpdCdzIG5vdCBu ZWVkZWQuIFN0aWxsIGEgcGVyZm9ybWFuY2Ugd2luLCBhbmQgbm90DQo+IG5lZWRpbmcgdG8gbWFp bnRhaW4gYSBjb25maWd1cmF0aW9uICh0aGF0IHdpbGwgYmUgdGhlIHNhbWUNCj4gZWFjaCB0aW1l KSBtYWtlcyBzZXR1cCBlYXNpZXIuDQoNCkp1c3Qgd2FudCB0byBjbGFyaWZ5IHRoYXQgZVBQaW5n IGRvZXMgbm90IHN1cHBvcnQgRE5TICh5ZXQpLCBldmVuIGlmIHdlDQptYXkgYWRkIGl0IGF0IHNv bWUgcG9pbnQuIFNvIGZvciBub3cgaXQncyBqdXN0IFRDUCBhbmQgSUNNUC4gZVBQaW5nIGNhbg0K ZWFzaWx5IGlnbm9yZSBub24tVENQIHRyYWZmaWMgKGl0IGRvZXMgc28gYnkgZGVmYXVsdCB0aGVz ZSBkYXlzLCB5b3UNCmhhdmUgdG8gZXhwbGljaXRseSBlbmFibGUgdHJhY2tpbmcgb2YgSUNNUCB0 cmFmZmljKSwgYW5kIHRoZSBydW50aW1lDQpvdmVyaGVhZCBmcm9tIHRoZSBhZGRpdGlvbmFsIElD TVAgY29kZSBzaG91bGQgYmUgbWluaW1hbCBpZiBlUFBpbmcgaXMNCm5vdCBzZXQgdXAgdG8gdHJh Y2sgSUNNUCAodGhlIEpJVC1jb21waWxhdGlvbiBvdWdodCB0byBvcHRpbWl6ZSBpdCBhbGwNCmF3 YXkgd2l0aCBkZWFkIGNvZGUgZWxpbWluYXRpb24gYXMgdGhvc2UgYnJhbmNoZXMgd2lsbCBuZXZl ciBiaXQgaGl0DQp0aGVuKS4NCg0KVGhhdCBzYWlkLCB0aGUgYWRkaXRpb25hbCBjb2RlIGZvciBk aWZmZXJlbnQgcHJvdG9jb2xzIG9mIGNvdXJzZSBhZGQgdG8NCnRoZSBvdmVyYWxsIGNvZGUgY29t cGxleGl0eS4gRnVydGhlcm1vcmUgaXQgbWF5IG1ha2UgaXQgYSBiaXQgbW9yZQ0KY2hhbGxlbmdp bmcgdG8gb3B0aW1pemUgZVBQaW5nIGZvciBzcGVjaWZpYyBwcm90b2NvbHMgYXMgSSBhbHNvIHRy eQ0Ka2VlcCBhIHNvbWV3aGF0IGNvbW1vbiBjb3JlIHdoaWNoIGNhbiB3b3JrIGZvciBhbGwgcHJv dG9jb2xzIHdlIGFkZCAoc28NCndlIGRvbid0IGVuZCB3aXRoIGEgY29tcGxldGVseSBzZXBhcmF0 ZSBicmFuY2ggb2YgY29kZSBmb3IgZWFjaA0KcHJvdG9jb2wpLg0KPg0KPiBSdW5uaW5nIGJ5IGRl ZmF1bHQgb24gdGhlIFRDIChlZ3Jlc3MpIHJhdGhlciB0aGFuIFhEUA0KPiBpcyBhIGJpZyB3aW4s IHRvbyAtIGJ1dCBvbmx5IGFmdGVyIGNwdW1hcC10YyBoYXMgc2h1bnRlZA0KPiBwcm9jZXNzaW5n IHRvIHRoZSBhcHByb3ByaWF0ZSBDUFUuIE5vdyBwcm9jZXNzaW5nIGlzDQo+IGRpdmlkZWQgYmV0 d2VlbiBDUFVzLCBhbmQgY2FjaGUgbG9jYWxpdHkgaXMgbW9yZSBsaWtlbHkNCj4gdG8gaGFwcGVu IC0gdGhlIHBhY2tldCB3ZSBhcmUgcmVhZGluZyBpcyBpbiB0aGUgbG9jYWwNCj4gY29yZSdzIGNh Y2hlIHdoZW4gY3B1bWFwLXBwaW5nIHJlYWRzIGl0LCBhbmQgdGhlcmUncw0KPiBhIGRlY2VudCBj aGFuY2UgaXQnbGwgc3RpbGwgYmUgdGhlcmUgKGF0IGxlYXN0IEwyKSBieSB0aGUgdGltZQ0KPiBp dCBnZXRzIHRvIHRoZSBhY3R1YWwgcXVldWUgZGlzY2lwbGluZS4NCj4NCj4gQ2hhbmdpbmcgdGhl IHJlcG9ydGluZyBtZWNoYW5pc20gd2FzIGEgcmVhbGx5IGJpZyB3aW4sDQo+IGluIHRlcm1zIG9m IHBlcmZvcm1hbmNlIGFuZCB0aGUgdG9vbCBhbGlnbmluZyB3aXRoIHdoYXQncw0KPiBuZWVkZWQ6 DQo+ICogU2luY2UgeGRwLWNwdW1hcCBoYXMgYWxyZWFkeSBkb25lIHRoZSB3b3JrIHRvIGRldGVy bWluZQ0KPiAgIHRoYXQgYSBmbG93IGJlbG9uZ3MgaW4gVEMgaGFuZGxlIFg6WSAtIGFuZCBtYXBw aW5nIFJUVA0KPiAgIHBlcmZvcm1hbmNlIHRvIGN1c3RvbWVyL2NpcmN1aXQgaXMgKmV4YWN0bHkq IHdoYXQgd2UncmUNCj4gICB0cnlpbmcgdG8gZG8gLSBpdCBqdXN0IG1ha2VzIHNlbnNlIHRvIHRh a2UgdGhhdCB2YWx1ZSBhbmQNCj4gICB1c2UgaXQgYXMgYSBrZXkgZm9yIHRoZSByZXN1bHRzLg0K PiAqIFNpbmNlIHdlIGRvbid0IGNhcmUgYWJvdXQgZXZlcnkgcGFja2V0IC0gcmF0aGVyLCB3ZSB3 YW50DQo+ICAgYSBwZXJpb2RpYyByZXByZXNlbnRhdGl2ZSBzYW1wbGUgLSB3ZSBjYW4gdXNlIGFu IGVmZmljaWVudA0KPiAgIHBlciBUQyBoYW5kbGUgY2lyY3VsYXIgYnVmZmVyIGluIHdoaWNoIHRv IHN0b3JlIHJlc3VsdHMuDQo+ICogSW4gdHVybiwgSSByZWFsaXplZCB0aGF0IHdlIGNvdWxkIGp1 c3QgKnNhbXBsZSogcmF0aGVyIHRoYW4NCj4gICBjb250aW51YWxseSBjaHVybmluZyB0aGUgY2ly Y3VsYXIgYnVmZmVyLiBTbyBlYWNoIGZsb3cncw0KPiAgIGJ1ZmZlciBoYXMgYSBjYXBhY2l0eSwg YW5kIHRoZSBtb25pdG9yIGJhaWxzIG91dCBvbmNlIGEgZmxvdw0KPiAgIGJ1ZmZlciBpcyBmdWxs IG9mIFJUVCByZXN1bHRzLiBSZWFsbHkgYmlnIHBlcmZvcm1hbmNlIHdpbi4NCj4gICAicmV0dXJu IiBpcyBhIHJlYWxseSBmYXN0IGNhbGwuIDotKSAoVGhlIGJ1ZmZlcnMgYXJlIHJlc2V0IHdoZW4N Cj4gICByZWFkKQ0KPiAqIFBlcmZtYXBzIGFyZSBncmVhdCwgYnV0IEkgZGlkbid0IHdhbnQgdG8g cmVxdWlyZSBhIGRhZW1vbg0KPiAgIHJ1biAobWFwcGluZyB0aGUgcGVyZm1hcCByZXN1bHRzKSBh bmQgaW4gdHVybiBvdXRwdXQNCj4gICByZXN1bHRzIGluIGEgTGlicmVRb1MtZnJpZW5kbHkgZm9y bWF0IHdoZW4gYSBtdWNoIHNpbXBsZXINCj4gICBtZWNoYW5pc20gZ2V0cyB0aGUgc2FtZSByZXN1 bHQgLSB3aXRob3V0IGFub3RoZXIgcHJvZ3JhbQ0KPiAgIHNpdHRpbmcgaGFuZGxpbmcgdGhlIG1t YXAnZCBwZXJmb3JtYW5jZSBmbG93cyBhbGwgdGhlIHRpbWUuDQo+DQo+IFNvIHRoZSByZXN1bHQg d2FzIHJlYWxseSBmYXN0IGFuZCBkb2VzIGV4YWN0bHkgd2hhdCBJIG5lZWQuDQo+IEl0J3Mgbm90 IG1lYW50IHRvIGJlICJiZXR0ZXIiIHRoYW4gdGhlIG9yaWdpbmFsOyBmb3IgdGhlIG9yaWdpbmFs J3MNCj4gcHVycG9zZSwgaXQncyBub3QgZ3JlYXQuIEZvciByYXBpZGx5IGJ1aWxkaW5nIFFvRSBt ZXRyaWNzIG9uDQo+IGEgbGl2ZSBzaGFwZXIgYm94LCB3aXRoIGFic29sdXRlbHkgbWluaW1hbCBv dmVyaGVhZCBhbmQgYQ0KPiBmb2N1cyBvbiBzaXBwaW5nIHRoZSBmaXJlaG9zZSByYXRoZXIgdGhh biB0cnlpbmcgdG8gZHJpbmsgaXQNCj4gYWxsIC0gaXQncyBhYm91dCByaWdodC4NCg0KQXMgYWxy ZWFkeSBtZW50aW9uZWQsIHdlIGFyZSB3b3JraW5nIG9uIGFnZ3JlZ2F0aW5nIFJUVCByZXBvcnRz IGZvcg0KZVBQaW5nLiBTcGl0dGluZyBvdXQgaW5kaXZpZHVhbCBSVFQgc2FtcGxlcyBhcyBlUFBp bmcgZG9lcyBub3cgbWF5IGJlDQp1c2VmdWwgaW4gc29tZSBjYXNlcywgYnV0IGNhbiBnZXQgcmF0 aGVyIG92ZXJ3aGVsbWluZyAoYm90aCBpbiB0ZXJtcyBvZg0Kb3ZlcmhlYWQgZm9yIGVQUGluZyBp dHNlbGYsIGJ1dCBhbHNvIGp1c3QgZm9yIGFuYWx5emluZyBhbGwgdGhvc2UgUlRUDQpzYW1wbGVz IHNvbWVob3cpLiBJbiBzb21lIG9mIG91ciBvd24gdGVzdHMgd2UndmUgaGFkIGVQUGluZyByZXBv cnQgb3Zlcg0KMTI1LDAwMCBSVFQgc2FtcGxlcyBwZXIgc2Vjb25kLCB3aGljaCBpcyBvZiBjb3Vy c2UgYSBiaXQgb3ZlcmtpbGwuDQoNCkkgcGxhbiB0byB0YWtlIGEgYml0IGNsb3NlciBsb29rIGF0 IGFsbCB0aGUgb3B0aW1pemF0aW9ucyBIZXJiZXJ0IGhhcw0KZG9uZSB0byBzZWUgd2hpY2ggY2Fu IGFsc28gYmUgYWRkZWQgdG8gZVBQaW5nIChhdCBsZWFzdCBhcyBhbiBvcHRpb24pLg0KPg0KPiBQ aGlsb3NvcGhpY2FsbHksIEkndmUgYWx3YXlzIGZhdm9yZWQgdG9vbHMgdGhhdCBkbyBleGFjdGx5 DQo+IHdoYXQgSSBuZWVkLg0KDQpXaGlsZSBJIGxpa2UgdGhlIHNpbXBsaWNpdHkgb2YgdGhpcyBw aGlsb3NvcGh5LCB5b3Ugd2lsbCBlbmQgdXAgd2l0aCBhDQpsb3Qgb2YgdmVyeSBzaW1pbGFyIGJ1 dCBzbGlnaHRseSBkaWZmZXJlbnQgdG9vbHMgaWYgZXZlcnlvbmUgdXNlcyBzZXRzDQpvZiB0b29s cyB0aGF0IGFyZSB0YWlsb3JlZCB0byB0aGVpciBleGFjdCB1c2UgY2FzZS4gSW4gdGhlIGxvbmcg cnVuDQp0aGF0IHNlZW1zIGEgYml0IGN1bWJlcnNvbWUgdG8gbWFpbnRhaW4sIGJ1dCBvZiBjb3Vy c2UgbWFpbnRhaW5pbmcgYQ0KbW9yZSBnZW5lcmFsIHRvb2wgaGFzIGl0cyBvd24gY29tcGxleGl0 aWVzLg0KPg0KPiBMaWtld2lzZSwgaWYgc29tZW9uZSB3b3VsZCBsaWtlIHRvIGNvbWUgdXAgd2l0 aCBhIHJlYWxseQ0KPiBnb29kIHJlY2lwZSB0aGF0IHJ1bnMgYm90aCByYXRoZXIgdGhhbiBhIGNv bWJpbmVkDQo+IHByb2dyYW0gLSB0aGF0J2QgYmUgYXdlc29tZS4gSWYgaXQgY2FuIG1hdGNoIHRo ZQ0KPiBwZXJmb3JtYW5jZSBvZiBjcHVtYXAtcHBpbmcsIEknbGwgaGFwcGlseSBzd2l0Y2gNCj4g QnJhY2tldFFvUyB0byB1c2UgaXQuDQoNCkxvbmcgdGVybSBJIHRoaW5rIHRoaXMgd291bGQgYmUg YSBuaWNlLCBidXQgZ2V0dGluZyB0aGVyZSBtaWdodCB0YWtlDQpzb21lIHRpbWUuIGVQUGluZyAr IHhkcC1jcHVtYXAtdGMgd291bGQgbGlrZWx5IGFsd2F5cyBoYXZlIGEgYml0IG1vcmUNCm92ZXJo ZWFkIGNvbXBhcmVkIHRvIHhkcC1jcHVtYXAtcHBpbmcgKGR1ZSB0byBmb3IgZXhhbXBsZSBwYXJz aW5nIHRoZQ0KcGFja2V0cyBtdWx0aXBsZSB0aW1lcyksIGJ1dCBJIGRvbid0IHRoaW5rIGl0IHNo b3VsZCBiZSBpbXBvc3NpYmxlIHRvDQptYWtlIHRoYXQgb3ZlcmhlYWQgcmVsYXRpdmVseSBzbWFs bCBjb21wYXJlZCB0byB0aGUgb3ZlcmFsbCB3b3JrIHhkcC0NCmNwdW1hcC10YyBhbmQgZVBQaW5n IGFyZSBkb2luZy4NCj4NCj4gWW91J3JlIG9idmlvdXNseSB3ZWxjb21lIHRvIGFueSBvZiB0aGUg Y29kZTsgaWYgaXQgY2FuIGhlbHANCj4gdGhlIG9yaWdpbmFsIHByb2plY3RzLCB0aGF0J3Mgd29u ZGVyZnVsLiBSaWdodCBub3csIEkgZG9uJ3QNCj4gaGF2ZSB0aGUgdGltZSB0byBjb21lIHVwIHdp dGggYSBiZXR0ZXIgd2F5IG9mIGxheWVyaW5nDQo+IFhEUC9UQyBwcm9ncmFtcyENCg0KVGhhbmtz IGZvciBrZWVwaW5nIHRoaXMgb3BlbiBzb3VyY2UsIEkgd2lsbCBkZWZpbmludGVseSBoYXZlIGEg bG9vayBhdA0KdGhlIGNvZGUgYW5kIHNlZSBpZiBJIGNhbiB1c2Ugc29tZSBvZiBpdCBmb3IgZVBQ aW5nLg0KDQpXaXRoIGJlc3QgcmVnYXJkcywgU2ltb24gU3VuZGJlcmcuDQoNCj4gKiAtIEkga2Vl cCB3b25kZXJpbmcgaWYgSSBzaG91bGRuJ3Qgcm9sbCBzb21lIC5kZWIgcGFja2FnZXMNCj4gYW5k IGEgY29uZmlndXJhdG9yIHRvIG1ha2Ugc2V0dXAgZWFzaWVyIQ0KPg0KPiAqKiAtIHRoZXJlICpy ZWFsbHkqIHNob3VsZCBiZSBhIHN0YW5kYXJkIGZsb3cgZGlzc2VjdG9yLiBUaGUNCj4gTGludXgg dHJhZmZpYyBzaGFwZXIncyBkaXNzZWN0b3IgY2FuIGhhbmRsZSBWTEFOIHRhZ3MgYW5kDQo+IGFu IE1QTFMgaGVhZGVyLiB4ZHAtY3B1bWFwLXRjIGhhbmRsZXMgVkxBTnMgd2l0aA0KPiBhcGxvbWIg YW5kIGRvZXNuJ3QgdG91Y2ggTVBMUy4gZXBwaW5nIGNhbGxzIG91dCB0byB0aGUNCj4geGRwLXBy b2plY3QncyBkaXNzZWN0b3Igd2hpY2ggYXBwZWFycyB0byBoYW5kbGUNCj4gVkxBTnMgYW5kIGFs c28gZG9lc24ndCB0b3VjaCBNUExTKS4NCj4NCj4gVGhhbmtzLA0KPiBIZXJiZXJ0DQo+DQo+IE9u IFR1ZSwgTm92IDgsIDIwMjIgYXQgODoyMyBBTSBUb2tlIEjDuGlsYW5kLUrDuHJnZW5zZW4gdmlh IExpYnJlUW9TDQo+IDxsaWJyZXFvc0BsaXN0cy5idWZmZXJibG9hdC5uZXQ+IHdyb3RlOg0KPiA+ IFJvYmVydCBDaGFjw7NuIHZpYSBMaWJyZVFvUyA8bGlicmVxb3NAbGlzdHMuYnVmZmVyYmxvYXQu bmV0PiB3cml0ZXM6DQo+ID4NCj4gPiA+IEkgd2FzIGhvcGluZyB0byBhZGQgYSBtb25pdG9yaW5n IG1vZGUgd2hpY2ggY291bGQgYmUgdXNlZCBiZWZvcmUNCj4gPiA+ICJ0dXJuaW5nDQo+ID4gPiBv biIgTGlicmVRb1MsIGlkZWFsbHkgYmVmb3JlIHYxLjMgcmVsZWFzZS4gVGhpcyB3YXkgb3BlcmF0 b3JzIGNhbg0KPiA+ID4gcmVhbGx5DQo+ID4gPiBzZWUgd2hhdCBpbXBhY3QgaXQncyBoYXZpbmcg b24gZW5kLXVzZXIgYW5kIG5ldHdvcmsgbGF0ZW5jeS4NCj4gPiA+DQo+ID4gPiBUaGUgc2ltcGxl c3Qgc29sdXRpb24gSSBjYW4gdGhpbmsgb2YgaXMgdG8gaW1wbGVtZW50IE1vbml0b3JpbmcNCj4g PiA+IE1vZGUgdXNpbmcNCj4gPiA+IGNwdW1hcC1wcGluZyBhcyB3ZSBhbHJlYWR5IGRvIC0gd2l0 aCBwbGFpbiBIVEIgYW5kIGxlYWYgY2xhc3Nlcw0KPiA+ID4gd2l0aCBubw0KPiA+ID4gQ0FLRSBx ZGlzYyBhcHBsaWVkLCBhbmQgd2l0aCBIVEIgYW5kIGxlYWYgY2xhc3MgcmF0ZXMgc2V0IHRvDQo+ ID4gPiBpbXBvc3NpYmx5DQo+ID4gPiBoaWdoIGFtb3VudHMgKG5vIHBsYW4gZW5mb3JjZW1lbnQp LiBUaGlzIHdvdWxkIGFsbG93IGZvcg0KPiA+ID4gYmVmb3JlL2FmdGVyDQo+ID4gPiBjb21wYXJp c29ucyBvZiBOb2RlcyAoQWNjZXNzIFBvaW50cykuIE15IG9ubHkgY29uY2VybiB3aXRoIHRoaXMN Cj4gPiA+IGFwcHJvYWNoIGlzDQo+ID4gPiB0aGF0IEhUQiwgZXZlbiB3aXRoIHJhdGVzIHNldCBp bXBvc3NpYmx5IGhpZ2gsIG1heSBub3QgYmUgdHJ1bHkNCj4gPiA+IHRyYW5zcGFyZW50LiBJdCB3 b3VsZCBiZSBwcmV0dHkgZWFzeSB0byBpbXBsZW1lbnQgdGhvdWdoLg0KPiA+ID4NCj4gPiA+IEFs dGVybmF0aXZlbHkgd2UgY291bGQgdXNlIGVQUGluZw0KPiA+ID4gPGh0dHBzOi8vZ2l0aHViLmNv bS94ZHAtcHJvamVjdC9icGYtZXhhbXBsZXMvdHJlZS9tYXN0ZXIvcHBpbmc+DQo+ID4gPiBidXQg SSB3b3JyeQ0KPiA+ID4gYWJvdXQgdGhyb3VnaHB1dCBhbmQgdGhlIHBvc3NpYmlsaXR5IG9mIGxh dGVuY3kgdHJhY2tpbmcgYmVpbmcNCj4gPiA+IHNsaWdodGx5DQo+ID4gPiBkaWZmZXJlbnQgZnJv bSBjcHVtYXAtcHBpbmcsIHdoaWNoIGNvdWxkIGxpbWl0IHRoZSB1dGlsaXR5IG9mIGENCj4gPiA+ IGNvbXBhcmlzb24uDQo+ID4gPiBXZSdkIGhhdmUgdG8gbWF0Y2ggSVBzIGluIGEgd2F5IHRoYXQn cyBhIGJpdCBtb3JlIGludm9sdmVkIGhlcmUuDQo+ID4gPg0KPiA+ID4gVGhvdWdodHM/DQo+ID4N Cj4gPiBXZWxsLCB0aGlzIGtpbmQgb2YgdGhpbmcgaXMgZXhhY3RseSB3aHkgSSB0aGluayBjb25j YXRlbmF0aW5nIHRoZQ0KPiA+IHR3bw0KPiA+IHByb2dyYW1zIChjcHVtYXAgYW5kIHBwaW5nKSBp bnRvIGEgc2luZ2xlIEJQRiBwcm9ncmFtIHdhcyBhDQo+ID4gbWlzdGFrZToNCj4gPiB0aG9zZSBh cmUgdHdvIGRpc3RpbmN0IHBpZWNlcyBvZiBmdW5jdGlvbmFsaXR5LCBhbmQgeW91IHdhbnQgdG8g YmUNCj4gPiBhYmxlDQo+ID4gdG8gcnVuIHRoZW0gc2VwYXJhdGVseSwgYXMgeW91ciAibW9uaXRv ciBtb2RlIiB1c2UgY2FzZSBzaG93cy4gVGhlDQo+ID4gb3ZlcmhlYWQgb2YgcGFyc2luZyB0aGUg cGFja2V0IHR3aWNlIGlzIHRyaXZpYWwgY29tcGFyZWQgdG8NCj4gPiBldmVyeXRoaW5nDQo+ID4g ZWxzZSB0aG9zZSBhcHBzIGFyZSBkb2luZywgc28gSSBkb24ndCB0aGluayB0aGUgZ2FpbiBpcyB3 b3J0aA0KPiA+IGxvc2luZw0KPiA+IHRoYXQgZmxleGliaWxpdHkuDQo+ID4NCj4gPiBTbyBJIGRl ZmluaXRlbHkgdGhpbmsgdXNpbmcgdGhlIHJlZ3VsYXIgZXBwaW5nIGlzIHRoZSByaWdodCB0aGlu Zw0KPiA+IHRvIGRvDQo+ID4gaGVyZS4gU2ltb24gaXMgbG9va2luZyBpbnRvIGltcHJvdmluZyBp dHMgcmVwb3J0aW5nIHNvIGl0IGNhbiBiZQ0KPiA+IHBlci1zdWJuZXQgdXNpbmcgYSB1c2VyLXN1 cHBsaWVkIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIGFjdHVhbA0KPiA+IHN1Ym5ldHMsIHdo aWNoIHNob3VsZCBob3BlZnVsbHkgbWFrZSB0aGlzIGZlYXNpYmxlLiBJJ20gc3VyZSBoZSdsbA0K PiA+IGNoaW1lDQo+ID4gaW4gaGVyZSBvbmNlIGhlIGhhcyBzb21ldGhpbmcgdG8gdGVzdCBhbmQv b3Igd2l0aCBhbnkgcXVlc3Rpb25zDQo+ID4gdGhhdCBwb3ANCj4gPiB1cCBpbiB0aGUgcHJvY2Vz cy4NCj4gPg0KPiA+IExvbmdlciB0ZXJtLCBJJ20gaG9waW5nIGFsbCBvZiBIZXJiZXJ0J3Mgb3Ro ZXIgaW1wcm92ZW1lbnRzIHRvDQo+ID4gZXBwaW5nDQo+ID4gcmVwb3J0aW5nL2Zvcm1hdHRpbmcg Y2FuIG1ha2UgaXQgaW50byB1cHN0cmVhbSBlcHBpbmcsIHNvIExpYnJlUW9TDQo+ID4gY2FuDQo+ ID4ganVzdCB1c2UgdGhhdCBmb3IgZXZlcnl0aGluZyA6KQ0KPiA+DQo+ID4gLVRva2UNCj4gPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+IExpYnJl UW9TIG1haWxpbmcgbGlzdA0KPiA+IExpYnJlUW9TQGxpc3RzLmJ1ZmZlcmJsb2F0Lm5ldA0KPiA+ IGh0dHBzOi8vbGlzdHMuYnVmZmVyYmxvYXQubmV0L2xpc3RpbmZvL2xpYnJlcW9zDQo+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IExpYnJlUW9TIG1h aWxpbmcgbGlzdA0KPiBMaWJyZVFvU0BsaXN0cy5idWZmZXJibG9hdC5uZXQNCj4gaHR0cHM6Ly9s aXN0cy5idWZmZXJibG9hdC5uZXQvbGlzdGluZm8vbGlicmVxb3MNCg0KTsOkciBkdSBza2lja2Fy IGUtcG9zdCB0aWxsIEthcmxzdGFkcyB1bml2ZXJzaXRldCBiZWhhbmRsYXIgdmkgZGluYSBwZXJz b251cHBnaWZ0ZXI8aHR0cHM6Ly93d3cua2F1LnNlL2dkcHI+Lg0KV2hlbiB5b3Ugc2VuZCBhbiBl LW1haWwgdG8gS2FybHN0YWQgVW5pdmVyc2l0eSwgd2Ugd2lsbCBwcm9jZXNzIHlvdXIgcGVyc29u YWwgZGF0YTxodHRwczovL3d3dy5rYXUuc2UvZW4vZ2Rwcj4uDQo=