From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mail.toke.dk (Postfix) with ESMTPS id A2C1E985951 for ; Tue, 5 Jul 2022 17:41:53 +0200 (CEST) Authentication-Results: mail.toke.dk; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=gv62y5pV DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1657035713; x=1688571713; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=hp9+ZjKqW51mjGl+R+E35bg8BkjYNebZYZf7uvGtI7w=; b=gv62y5pVLCTyOu1qpoJBBd0/Bqi+gDwT44g1/47Bs4avWk/u7Jy56Vac 7ZTEjQWkIHDL41Q1JxNysoICL8NBhpLmSucMZsKJHNxGuSYYUTTIf+pOx mFO/2IpT0ENlGvQ4skNsuSNDam1YewgEgc/7UMh2BSMkgTfKEh0YhXd99 fOQ0a13EDbNu2F1zbdnVjdDQTm7Mwh4EW5eZPhHo3aaPw1QlTWT/HCozr TgVAo5KA0VayQCqklYOdmzYbPQ7NJAXTpvdra/TlV5TQ4w9LrdwFAJ95Z 4dgaQwD6Cn/TTi0QM1TXYfIh9irqUwIlIZJFTLbWl6ulSdMD9Cg31YOig Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10398"; a="283412836" X-IronPort-AV: E=Sophos;i="5.92,247,1650956400"; d="scan'208";a="283412836" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Jul 2022 08:41:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,247,1650956400"; d="scan'208";a="735200315" Received: from irvmail001.ir.intel.com ([10.43.11.63]) by fmsmga001.fm.intel.com with ESMTP; 05 Jul 2022 08:41:46 -0700 Received: from newjersey.igk.intel.com (newjersey.igk.intel.com [10.102.20.203]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id 265FfiYV030211; Tue, 5 Jul 2022 16:41:45 +0100 From: Alexander Lobakin To: Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= Date: Tue, 5 Jul 2022 17:41:20 +0200 Message-Id: <20220705154120.22497-1-alexandr.lobakin@intel.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <87a69o94wz.fsf@toke.dk> References: <20220628194812.1453059-1-alexandr.lobakin@intel.com> <62bbedf07f44a_2181420830@john.notmuch> <87iloja8ly.fsf@toke.dk> <20220704154440.7567-1-alexandr.lobakin@intel.com> <87a69o94wz.fsf@toke.dk> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-ID-Hash: WDUARDVXM2LLVYOPMJYBDTXDS6HRSXH3 X-Message-ID-Hash: WDUARDVXM2LLVYOPMJYBDTXDS6HRSXH3 X-MailFrom: alexandr.lobakin@intel.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Alexander Lobakin , John Fastabend , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Larysa Zaremba , Michal Swiatkowski , Jesper Dangaard Brouer , =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= , Magnus Karlsson , Maciej Fijalkowski , Jonathan Lemon , Lorenzo Bianconi , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Jesse Brandeburg , Yajun Deng , Willem de Bruijn , bpf@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, xdp-hints@xdp-project.net X-Mailman-Version: 3.3.5 Precedence: list Subject: [xdp-hints] Re: [PATCH RFC bpf-next 00/52] bpf, xdp: introduce and use Generic Hints/metadata List-Id: XDP hardware hints design discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: RnJvbTogVG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2VuIDx0b2tlQHJlZGhhdC5jb20+DQpEYXRlOiBN b24sIDA0IEp1bCAyMDIyIDE5OjE0OjA0ICswMjAwDQoNCj4gQWxleGFuZGVyIExvYmFraW4gPGFs ZXhhbmRyLmxvYmFraW5AaW50ZWwuY29tPiB3cml0ZXM6DQo+IA0KPiA+IEZyb206IFRva2UgSD8/ aWxhbmQtSj8/cmdlbnNlbiA8dG9rZUByZWRoYXQuY29tPg0KPiA+IERhdGU6IFdlZCwgMjkgSnVu IDIwMjIgMTU6NDM6MDUgKzAyMDANCj4gPg0KPiA+PiBKb2huIEZhc3RhYmVuZCA8am9obi5mYXN0 YWJlbmRAZ21haWwuY29tPiB3cml0ZXM6DQo+ID4+IA0KPiA+PiA+IEFsZXhhbmRlciBMb2Jha2lu IHdyb3RlOg0KPiA+PiA+PiBUaGlzIFJGQyBpcyB0byBnaXZlIHRoZSB3aG9sZSBwaWN0dXJlLiBJ dCB3aWxsIG1vc3QgbGlrZWx5IGJlIHNwbGl0DQo+ID4+ID4+IG9udG8gc2V2ZXJhbCBzZXJpZXMs IG1heWJlIGV2ZW4gbWVyZ2UgY3ljbGVzLiBTZWUgdGhlICJ0YWJsZSBvZg0KPiA+PiA+PiBjb250 ZW50cyIgYmVsb3cuDQo+ID4+ID4NCj4gPj4gPiBFdmVuIGZvciBSRkMgaXRzIGEgYml0IG11Y2gu IFByb2JhYmx5IGltcHJvdmUgdGhlIHN1bW1hcnkNCj4gPj4gPiBtZXNzYWdlIGhlcmUgYXMgd2Vs bCBJJ20gc3RpbGwgbm90IGNsZWFyIG9uIHRoZSBvdmVyYWxsDQo+ID4+ID4gYXJjaGl0ZWN0dXJl IHNvIG5vdCBzdXJlIEkgd2FudCB0byBkaWcgaW50byBwYXRjaGVzLg0KPiA+PiANCj4gPj4gKzEg b24gdGhpcywgYW5kIHBpZ2d5YmFja2luZyBvbiB5b3VyIGNvbW1lbnQgdG8gY2hpbWUgaW4gb24g dGhlIGdlbmVyYWwNCj4gPj4gYXJjaGl0ZWN0dXJlLg0KPiA+PiANCj4gPj4gPj4gTm93LCBhIE5J QyBkcml2ZXIsIG9yIGV2ZW4gYSBTbWFydE5JQyBpdHNlbGYsIGNhbiBwdXQgdGhvc2UgcGFyYW1z DQo+ID4+ID4+IHRoZXJlIGluIGEgd2VsbC1kZWZpbmVkIGZvcm1hdC4gVGhlIGZvcm1hdCBpcyBm aXhlZCwgYnV0IGNhbiBiZSBvZg0KPiA+PiA+PiBzZXZlcmFsIGRpZmZlcmVudCB0eXBlcyByZXBy ZXNlbnRlZCBieSBzdHJ1Y3R1cmVzLCB3aGljaCBkZWZpbml0aW9ucw0KPiA+PiA+PiBhcmUgYXZh aWxhYmxlIHRvIHRoZSBrZXJuZWwsIEJQRiBwcm9ncmFtcyBhbmQgdGhlIHVzZXJsYW5kLg0KPiA+ PiA+DQo+ID4+ID4gSSBkb24ndCB0aGluayBpbiBnZW5lcmFsIHRoZSBmb3JtYXQgbmVlZHMgdG8g YmUgZml4ZWQuDQo+ID4+IA0KPiA+PiBObywgdGhhdCdzIHRoZSB3aG9sZSBwb2ludCBvZiBCVEY6 IGl0J3Mgbm90IHN1cHBvc2VkIHRvIGJlIFVBUEksIHdlJ2xsDQo+ID4+IHVzZSBDTy1SRSB0byBl bmFibGUgZHluYW1pYyBmb3JtYXRzLi4uDQo+ID4+IA0KPiA+PiBbLi4uXQ0KPiA+PiANCj4gPj4g Pj4gSXQgaXMgZml4ZWQgZHVlIHRvIGl0IGJlaW5nIGFsbW9zdCBhIFVBUEksIGFuZCB0aGUgZXhh Y3QgZm9ybWF0IGNhbg0KPiA+PiA+PiBiZSBkZXRlcm1pbmVkIGJ5IHJlYWRpbmcgdGhlIGxhc3Qg MTAgYnl0ZXMgb2YgbWV0YWRhdGEuIFRoZXkgY29udGFpbg0KPiA+PiA+PiBhIDItYnl0ZSBtYWdp YyBJRCB0byBub3QgY29uZnVzZSBpdCB3aXRoIGEgbm9uLWNvbXBhdGlibGUgbWV0YSBhbmQNCj4g Pj4gPj4gYSA4LWJ5dGUgY29tYmluZWQgQlRGIElEICsgdHlwZSBJRDogdGhlIElEIG9mIHRoZSBC VEYgd2hlcmUgdGhpcw0KPiA+PiA+PiBzdHJ1Y3R1cmUgaXMgZGVmaW5lZCBhbmQgdGhlIElEIG9m IHRoYXQgZGVmaW5pdGlvbiBpbnNpZGUgdGhhdCBCVEYuDQo+ID4+ID4+IFVzZXJzIGNhbiBvYnRh aW4gQlRGIElEcyBieSBzdHJ1Y3R1cmUgdHlwZXMgdXNpbmcgaGVscGVycyBhdmFpbGFibGUNCj4g Pj4gPj4gaW4gdGhlIGtlcm5lbCwgQlBGICh3cml0dGVuIGJ5IHRoZSBDTy1SRS92ZXJpZmllcikg YW5kIHRoZSB1c2VybGFuZA0KPiA+PiA+PiAobGliYnBmIC0+IGtlcm5lbCBjYWxsKSBhbmQgdGhl biByZWx5IG9uIHRob3NlIElEIHdoZW4gcmVhZGluZyBkYXRhDQo+ID4+ID4+IHRvIG1ha2Ugc3Vy ZSB3aGV0aGVyIHRoZXkgc3VwcG9ydCBpdCBhbmQgd2hhdCB0byBkbyB3aXRoIGl0Lg0KPiA+PiA+ PiBXaHkgc2VwYXJhdGUgbWFnaWMgYW5kIElEPyBUaGUgaWRlYSBpcyB0byBtYWtlIGRpZmZlcmVu dCBmb3JtYXRzDQo+ID4+ID4+IGFsd2F5cyBjb250YWluIHRoZSBiYXNpYy8iZ2VuZXJpYyIgc3Ry dWN0dXJlIGVtYmVkZGVkIGF0IHRoZSBlbmQuDQo+ID4+ID4+IFRoaXMgd2F5IHdlIGNhbiBzdGls bCBiZW5lZml0IGluIHB1cmVseSBnZW5lcmljIGNvbnN1bWVycyAobGlrZQ0KPiA+PiA+PiBjcHVt YXApIHdoaWxlIHByb3ZpZGluZyBzb21lICJleHRyYSIgZGF0YSB0byB0aG9zZSB3aG8gc3VwcG9y dCBpdC4NCj4gPj4gPg0KPiA+PiA+IEkgZG9uJ3QgZm9sbG93IHRoaXMuIElmIHlvdSBoYXZlIGEg c3RydWN0IGluIHlvdXIgZHJpdmVyIG5hbWUgaXQNCj4gPj4gPiBzb21ldGhpbmcgb2J2aW91cywg aWNlX3hkcF9tZXRhZGF0YS4gSWYgSSB1bmRlcnN0YW5kIHRoaW5ncw0KPiA+PiA+IGNvcnJlY3Rs eSBqdXN0IGR1bXAgdGhlIEJURiBmb3IgdGhlIGRyaXZlciwgZXh0cmFjdCB0aGUNCj4gPj4gPiBz dHJ1Y3QgYW5kIGRvbmUgeW91IGNhbiB1c2UgQ08tUkUgcmVhZHMuIEZvciB0aGUgJ2ZpeGVkJyBj YXNlDQo+ID4+ID4gdGhpcyBsb29rcyBlYXN5LiBBbmQgSSBkb24ndCB0aGluayB5b3UgZXZlbiBu ZWVkIGEgcGF0Y2ggZm9yIHRoaXMuDQo+ID4+IA0KPiA+PiAuLi5ob3dldmVyIGFzIHdlJ3ZlIGRp c2N1c3NlZCBwcmV2aW91c2x5LCB3ZSBkbyBuZWVkIGEgYml0IG9mDQo+ID4+IGluZnJhc3RydWN0 dXJlIGFyb3VuZCB0aGlzLiBJbiBwYXJ0aWN1bGFyLCB3ZSBuZWVkIHRvIGVtYmVkIHRoZSBlbWJl ZA0KPiA+PiB0aGUgQlRGIElEIGludG8gdGhlIG1ldGFkYXRhIGl0c2VsZiBzbyBCUEYgY2FuIGRv IHJ1bnRpbWUgZGlzYW1iaWd1YXRpb24NCj4gPj4gYmV0d2VlbiBkaWZmZXJlbnQgZm9ybWF0cyAo YW5kIGFkZCB0aGUgcmlnaHQgQ08tUkUgcHJpbWl0aXZlcyB0byBtYWtlDQo+ID4+IHRoaXMgZWFz eSkuIFRoaXMgaXMgZm9yIHR3byByZWFzb25zOg0KPiA+PiANCj4gPj4gLSBUaGUgbWV0YWRhdGEg bWlnaHQgYmUgZGlmZmVyZW50IHBlci1wYWNrZXQgKGUuZy4sIFBUUCBwYWNrZXRzIHdpdGgNCj4g Pj4gICB0aW1lc3RhbXBzIGludGVybGVhdmVkIHdpdGggYnVsayBkYXRhIHdpdGhvdXQgdGhlbSkN Cj4gPj4gDQo+ID4+IC0gV2l0aCByZWRpcmVjdHMgd2UgbWF5IGVuZCB1cCBwcm9jZXNzaW5nIHBh Y2tldHMgZnJvbSBkaWZmZXJlbnQgZGV2aWNlcw0KPiA+PiAgIGluIGEgc2luZ2xlIFhEUCBwcm9n cmFtIChpbiBkZXZtYXAgb3IgY3B1bWFwLCBvciBvbiBhIHZldGgpIHNvIHdlIG5lZWQNCj4gPj4g ICB0byBiZSBhYmxlIHRvIGRpc2FtYmlndWF0ZSBhdCBydW50aW1lLg0KPiA+PiANCj4gPj4gU28g SSB0aGluayB0aGUgcGFydCBvZiB0aGUgZGVzaWduIHRoYXQgcHV0cyB0aGUgQlRGIElEIGludG8g dGhlIGVuZCBvZg0KPiA+PiB0aGUgbWV0YWRhdGEgc3RydWN0IGlzIHNvdW5kOyBob3dldmVyLCB0 aGUgYWN0dWFsIGZvcm1hdCBkb2Vzbid0IGhhdmUgdG8NCj4gPj4gYmUgZml4ZWQsIHdlIGNhbiB1 c2UgQ08tUkUgdG8gcGljayBvdXQgdGhlIGJpdHMgdGhhdCBhIGdpdmVuIEJQRiBwcm9ncmFtDQo+ ID4+IG5lZWRzOyB3ZSBqdXN0IG5lZWQgYSBjb252ZW50aW9uIGZvciBob3cgZHJpdmVycyByZXBv cnQgd2hpY2ggZm9ybWF0KHMpDQo+ID4+IHRoZXkgc3VwcG9ydC4gV2hpY2ggd2Ugc2hvdWxkIGFs c28gYWdyZWUgb24gKGFuZCBhZGQgY29yZSBpbmZyYXN0cnVjdHVyZQ0KPiA+PiBhcm91bmQpIHNv IGVhY2ggZHJpdmVyIGRvZXNuJ3QgZ28gYXJvdW5kIGludmVudGluZyB0aGVpciBvd24NCj4gPj4g Y29udmVudGlvbnMuDQo+ID4+IA0KPiA+PiA+PiBUaGUgZW5hYmxlbWVudCBvZiB0aGlzIGZlYXR1 cmUgaXMgY29udHJvbGxlZCBvbiBhdHRhY2hpbmcvcmVwbGFjaW5nDQo+ID4+ID4+IFhEUCBwcm9n cmFtIG9uIGFuIGludGVyZmFjZSB3aXRoIHR3byBuZXcgcGFyYW1ldGVyczogdGhhdCBjb21iaW5l ZA0KPiA+PiA+PiBCVEYrdHlwZSBJRCBhbmQgbWV0YWRhdGEgdGhyZXNob2xkLg0KPiA+PiA+PiBU aGUgdGhyZXNob2xkIHNwZWNpZmllcyB0aGUgbWluaW11bSBmcmFtZSBzaXplIHdoaWNoIGEgZHJp dmVyIChvcg0KPiA+PiA+PiBOSUMpIHNob3VsZCBzdGFydCBjb21wb3NpbmcgbWV0YWRhdGEgZnJv bS4gSXQgaXMgaW50cm9kdWNlZCBpbnN0ZWFkDQo+ID4+ID4+IG9mIGp1c3QgZmFsc2UvdHJ1ZSBm bGFnIGR1ZSB0byB0aGF0IG9mdGVuIGl0J3Mgbm90IHdvcnRoIGl0IHRvIHNwZW5kDQo+ID4+ID4+ IGN5Y2xlcyB0byBmZXRjaCBhbGwgdGhhdCBkYXRhIGZvciBzdWNoIHNtYWxsIGZyYW1lczogbGV0 J3Mgc2F5LCBpdA0KPiA+PiA+PiBjYW4gYmUgZXZlbiBmYXN0ZXIgdG8ganVzdCBjYWxjdWxhdGUg Y2hlY2tzdW1zIGZvciB0aGVtIG9uIENQVQ0KPiA+PiA+PiByYXRoZXIgdGhhbiB0b3VjaCBub24t Y29oZXJlbnQgRE1BIHpvbmUuIFNpbXBsZSBYRFBfRFJPUCBjYXNlIGxvc2VzDQo+ID4+ID4+IDE1 IE1wcHMgb24gNjQgYnl0ZSBmcmFtZXMgd2l0aCBlbmFibGVkIG1ldGFkYXRhLCB0aHJlc2hvbGQg Y2FuIGhlbHANCj4gPj4gPj4gbWl0aWdhdGUgdGhhdC4NCj4gPj4gPg0KPiA+PiA+IEkgd291bGQg cHV0IHRoaXMgaW4gdGhlIGJvbnVzIGNhdGVnb3J5LiBDYW4geW91IGRvIHRoZSBzaW1wbGUgdGhp bmcNCj4gPj4gPiBhYm92ZSB3aXRob3V0IHRoZXNlIGV4dHJhIGJpdHMgYW5kIHRoZW4gYWRkIHRo ZW0gbGF0ZXIuIEp1c3QNCj4gPj4gPiBwaWNrIHNvbWUgb3Zlcmx5IGNvbnNlcnZhdGl2ZSB0aHJl c2hvbGQgdG8gc3RhcnQgd2l0aC4NCj4gPj4gDQo+ID4+IFllYWgsIEknZCBhZ3JlZSB0aGlzIGtp bmQgb2YgY29uZmlndXJhdGlvbiBpcyBzb21ldGhpbmcgdGhhdCBjYW4gYmUNCj4gPj4gYWRkZWQg bGF0ZXIsIGFuZCBhbHNvIGl0J3Mgc29ydCBvZiBvcnRob2dvbmFsIHRvIHRoZSBjb25zdW1wdGlv biBvZiB0aGUNCj4gPj4gbWV0YWRhdGEgaXRzZWxmLg0KPiA+PiANCj4gPj4gQWxzbywgdHlpbmcg dGhpcyBjb25maWd1cmF0aW9uIGludG8gdGhlIGxvYWRpbmcgb2YgYW4gWERQIHByb2dyYW0gaXMg YQ0KPiA+PiB0ZXJyaWJsZSBpbnRlcmZhY2U6IHRoZXNlIGFyZSBoYXJkd2FyZSBjb25maWd1cmF0 aW9uIG9wdGlvbnMsIGxldCdzIGp1c3QNCj4gPj4gcHV0IHRoZW0gaW50byBldGh0b29sIG9yICdp cCBsaW5rJyBsaWtlIGFueSBvdGhlciBwaWVjZSBvZiBkZXZpY2UNCj4gPj4gY29uZmlndXJhdGlv bi4NCj4gPg0KPiA+IEkgZG9uJ3QgYmVsaWV2ZSBpdCBmaXRzIHRoZXJlLCBlc3BlY2lhbGx5IEV0 aHRvb2wuIEV0aHRvb2wgaXMgZm9yDQo+ID4gaGFyZHdhcmUgY29uZmlndXJhdGlvbiwgWERQL0FG X1hEUCBpcyA5NSUgc29mdHdhcmUgc3R1ZmYgKGFwYXJ0IGZyb20NCj4gPiBvZmZsb2FkIGJpdHMg d2hpY2ggaXMgcHVyZWx5IE5GUCdzIGZvciBub3cpLg0KPiANCj4gQnV0IFhEUC1oaW50cyBpcyBh Ym91dCBjb25zdW1pbmcgaGFyZHdhcmUgZmVhdHVyZXMuIFdoZW4geW91J3JlDQo+IGNvbmZpZ3Vy aW5nIHdoaWNoIG1ldGFkYXRhIGl0ZW1zIHlvdSB3YW50LCB5b3UncmUgc2F5aW5nICJwbGVhc2Ug cHJvdmlkZQ0KPiBtZSB3aXRoIHRoZXNlIChoYXJkd2FyZSkgZmVhdHVyZXMiLiBTbyBldGh0b29s IGlzIGFuIGV4Y2VsbGVudCBwbGFjZSB0bw0KPiBkbyB0aGF0IDopDQoNCldpdGggRXRodG9vbCB5 b3UgY29uZmlndXJlIHRoZSBoYXJkd2FyZSwgZS5nLiBpdCB3b24ndCBzdHJpcCBWTEFODQp0YWdz IGlmIHlvdSBkaXNhYmxlIHJ4LWN2bGFuLXN0cmlwcGluZy4gV2l0aCBjb25maWd1cmluZyBtZXRh ZGF0YQ0KeW91IG9ubHkgdGVsbCB3aGF0IHlvdSB3YW50IHRvIHNlZSB0aGVyZSwgZG9uJ3QgeW91 Pw0KDQo+IA0KPiA+IEkgZm9sbG93IHRoYXQgd2F5Og0KPiA+DQo+ID4gMSkgeW91IHBpY2sgYSBw cm9ncmFtIHlvdSB3YW50IHRvIGF0dGFjaDsNCj4gPiAyKSB1c3VhbGx5IHRoZXkgYXJlIHdyaXR0 ZW4gZm9yIHNwZWNpYWwgbmVlZHMgYW5kIHVzZWNhc2VzOw0KPiA+IDMpIHNvIG1vc3QgbGlrZWx5 IHRoYXQgcHJvZ3JhbSB3aWxsIGJlIHRpZWQgd2l0aCBtZXRhZGF0YS9kcml2ZXIvZXRjDQo+ID4g ICAgaW4gc29tZSB3YXk7DQo+ID4gNCkgc28geW91IHdhbnQgdG8gZW5hYmxlIEhpbnRzIG9mIGEg cGFydGljdWxhciBmb3JtYXQgcHJpbWFyaWx5IGZvcg0KPiA+ICAgIHRoaXMgcHJvZ3JhbSBhbmQg dXNlY2FzZSwgc2FtZSB3aXRoIHRocmVzaG9sZCBhbmQgZXZlcnl0aGluZw0KPiA+ICAgIGVsc2Uu DQo+ID4NCj4gPiBQbHMgZXhwbGFpbiBob3cgeW91IHNlZSBpdCwgSSBtaWdodCBiZSB3cm9uZyBm b3Igc3VyZS4NCj4gDQo+IEFzIGFib3ZlOiBYRFAgaGludHMgaXMgYWJvdXQgZ2l2aW5nIFhEUCBw cm9ncmFtcyAoYW5kIEFGX1hEUCBjb25zdW1lcnMpDQo+IGFjY2VzcyB0byBtZXRhZGF0YSB0aGF0 IGlzIG5vdCBjdXJyZW50bHkgYXZhaWxhYmxlLiBUeWluZyB0aGUgbGlmZXRpbWUNCj4gb2YgdGhh dCBoYXJkd2FyZSBjb25maWd1cmF0aW9uIChpLmUuLCB3aGljaCBpbmZvcm1hdGlvbiB0byBwcm92 aWRlKSB0bw0KPiB0aGUgbGlmZXRpbWUgb2YgYW4gWERQIHByb2dyYW0gaXMgbm90IGEgZ29vZCBp bnRlcmZhY2U6IGZvciBvbmUgdGhpbmcsDQo+IGhvdyB3aWxsIGl0IGhhbmRsZSBtdWx0aXBsZSBw cm9ncmFtcz8gV2hhdCBhYm91dCB3aGVuIFhEUCBpcyBub3QgdXNlZCBhdA0KDQpNdWx0aXBsZSBw cm9ncyBpcyBzdHVmZiBJIGRpZG4ndCBjb3ZlciwgYnV0IHdpbGwgZG8gbGF0ZXIgKGFzIHlvdQ0K YWxsIHNheSB0byBtZSwgImxldCdzIHN0YXJ0IHdpdGggc29tZXRoaW5nIHNpbXBsZSIgOikpLiBB YWFhbmQNCm11bHRpcGxlIFhEUCBwcm9ncyAoSSdtIG5vdCB0YWxraW5nIGFib3V0IGF0dGFjaGlu ZyBwcm9ncyBpbg0KZGlmZmVyZW5nIG1vZGVzKSBpcyBub3QgYSBrZXJuZWwgZmVhdHVyZSwgcmF0 aGVyIGEgbGlicGYgZmVhdHVyZSwNCnNvIEkgYmVsaWV2ZSBpdCBzaG91bGQgYmUgaGFuZGxlZCB0 aGVyZSBsYXRlci4uLg0KDQo+IGFsbCBidXQgeW91IHN0aWxsIHdhbnQgdG8gY29uZmlndXJlIHRo ZSBzYW1lIGZlYXR1cmVzPw0KDQpXaGF0J3MgdGhlIHBvaW50IG9mIGNvbmZpZ3VyaW5nIG1ldGFk YXRhIHdoZW4gdGhlcmUgYXJlIG5vIHByb2dzDQphdHRhY2hlZD8gVG8gY29uZmlndXJlIGl0IG9u Y2UgYW5kIG5vdCBvbiBldmVyeSBwcm9nIGF0dGFjaD8gSSdtDQpub3Qgc2F5aW5nIEkgZG9uJ3Qg bGlrZSBpdCwganVzdCB3YW50IHRvIGNsYXJpZnkuDQpNYXliZSBJIG5lZWQgb3BpbmlvbnMgZnJv bSBzb21lIG1vcmUgcGVvcGxlLCBqdXN0IHRvIGhhdmUgYW4NCm92ZXJ2aWV3IG9mIGhvdyBtb3N0 IG9mIGZvbGtzIHNlZSBpdCBhbmQgd291bGQgbGlrZSB0byBjb25maWd1cmUNCml0LiAnQ2F1c2Ug SSBoZWFyZCBmcm9tIGF0IGxlYXN0IG9uZSBvZiB0aGUgY29uc3VtZXJzIHRoYXQNCmxpYnBmIEFQ SSBpcyBhIHBlcmZlY3QgcGxhY2UgZm9yIEhpbnRzIHRvIGhpbSA6KQ0KDQo+IA0KPiBJbiBhZGRp dGlvbiwgaW4gZXZlcnkgb3RoZXIgY2FzZSB3aGVyZSB3ZSBkbyBkeW5hbWljIGRhdGEgYWNjZXNz ICh3aXRoDQo+IENPLVJFKSB0aGUgQlBGIHByb2dyYW0gaXMgYSBjb25zdW1lciB0aGF0IG1vZGlm aWVzIGl0c2VsZiB0byBhY2Nlc3MgdGhlDQo+IGRhdGEgcHJvdmlkZWQgYnkgdGhlIGtlcm5lbC4g SSBnZXQgdGhhdCB0aGlzIGlzIGhhcmRlciB0byBhY2hpZXZlIGZvcg0KPiBBRl9YRFAsIGJ1dCB0 aGVuIGxldCdzIHNvbHZlIHRoYXQgaW5zdGVhZCBvZiBtYWtpbmcgYSB0b3RhbGx5DQo+IGluY29u c2lzdGVudCBpbnRlcmZhY2UgZm9yIFhEUC4NCg0KSSBhbHNvIHNlZSBDTy1SRSBtb3JlIGZpdHRp bmcgYW5kIGNvbnZlbmllbnQgd2F5IHRvIHVzZSB0aGVtLCBidXQNCmRpZG4ndCBtYW5hZ2UgdG8g c29sdmUgdHdvIHRoaW5nczoNCg0KMSkgQUZfWERQIHByb2dyYW1zLCBzbyB3aGF0IHRvIGRvIHdp dGggdGhlbT8gUHJlcGFyZSBwYXRjaGVzIGZvcg0KICAgTExWTSB0byBtYWtlIGl0IGFibGUgdG8g ZG8gQ08tUkUgb24gQUZfWERQIHByb2dyYW0gbG9hZD8gT3INCiAgIGp1c3QgaGFyZGNvZGUgdGhl bSBmb3IgcGFydGljdWxhciB1c2VjYXNlcyBhbmQgTklDcz8gV2hhdCBhYm91dA0KICAgImdlbmVy YWwtcHVycG9zZSIgcHJvZ3JhbXM/DQogICBBbmQgaWYgaGFyZGNvZGUsIHdoYXQncyB0aGUgcG9p bnQgdGhlbiB0byBkbyBHZW5lcmljIEhpbnRzIGF0DQogICBhbGw/IFRoZW4gYWxsIGl0IG5lZWRz IGlzIG1ha2luZyBkcml2ZXIgYnVpbGRpbmcgc29tZSBtZXRhIGluDQogICBmcm9udCBvZiBmcmFt ZXMgdmlhIG9uLW9mZiBidXR0b24gYW5kIHRoYXQncyBpdD8gV2h5IEJURiBJRCBpbg0KICAgdGhl IG1ldGEgdGhlbiBpZiBjb25zdW1lcnMgd2lsbCBhY2Nlc3MgbWV0YSBoYXJkY29kZWQgKHZpYSBD Ty1SRQ0KICAgb3IgbGl0ZXJhbGx5IGhhcmRjb2RlZCwgZG9lc24ndCBtYXR0ZXIpPw0KMikgSW4t a2VybmVsIG1ldGFkYXRhIGNvbnN1bWVycz8gQWxzbyBkbyBDTy1SRT8gT3RoZXJ3aXNlLCB3aXRo IG5vDQogICBnZW5lcmljIG1ldGFkYXRhIHN0cnVjdHVyZSB0aGV5IHdvbid0IGJlIGFibGUgdG8g YmVuZWZpdCBmcm9tDQogICBIaW50cy4gQnV0IEkgZ3Vlc3Mgd2Ugc3RpbGwgbmVlZCB0byBwcm92 aWRlIGtlcm5lbCB3aXRoIG1ldGE/DQogICBPciBubz8NCg0KPiANCj4gSSdtIGFzIGV4Y2l0ZWQg YXMgeW91IGFib3V0IHRoZSBwcm9zcGVjdCBvZiBoYXZpbmcgdG90YWxseSBwcm9ncmFtbWFibGUN Cg0KQnV0IEkgbW9zdGx5IGNhcmUgYWJvdXQgY3VycmVudCBnZW5lcmF0aW9uIHdpdGggbm8gcHJv Z3JhbW1hYmxlDQpIaW50cy4uLg0KDQo+IGhhcmR3YXJlIHdoZXJlIHlvdSBjYW4ganVzdCBzcGVj aWZ5IGFueSBhcmJpdHJhcnkgbWV0YWRhdGEgZm9ybWF0IGFuZA0KPiBpdCdsbCBwcm92aWRlIHRo YXQgZm9yIHlvdS4gQnV0IHRoYXQgaXMgYW4gb3J0aG9nb25hbCBmZWF0dXJlOiBsZXQncw0KPiBz dGFydCB3aXRoIGNyZWF0aW5nIGEgZHluYW1pYyBpbnRlcmZhY2UgZm9yIGNvbnN1bWluZyB0aGUg KHN0YXRpYykNCj4gaGFyZHdhcmUgZmVhdHVyZXMgd2UgYWxyZWFkeSBoYXZlLCBhbmQgdGhlbiBs YXRlciB3ZSBjYW4gaGF2ZSBhIHNlcGFyYXRlDQo+IGludGVyZmFjZSBmb3IgY29uZmlndXJpbmcg bW9yZSBkeW5hbWljIGhhcmR3YXJlIGZlYXR1cmVzLiBYRFAtaGludHMgaXMNCj4gYWJvdXQgYWRk aW5nIHRoaXMgY29uc3VtcHRpb24gZmVhdHVyZSBpbiBhIHdheSB0aGF0J3Mgc3VmZmljaWVudGx5 DQo+IGR5bmFtaWMgdGhhdCB3ZSBjYW4gZG8gdGhlIG90aGVyIChwcm9ncmFtbWFibGUgaGFyZHdh cmUpIHRoaW5nIG9uIHRvcA0KPiBsYXRlci4uLg0KPiANCj4gLVRva2UNCg0KVGhhbmtzLA0KT2xl aw0K