From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id BF2A8A00BE; Wed, 30 Oct 2019 11:05:53 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 9347E1BFCD; Wed, 30 Oct 2019 11:05:53 +0100 (CET) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70070.outbound.protection.outlook.com [40.107.7.70]) by dpdk.org (Postfix) with ESMTP id 95DF61BFCC for ; Wed, 30 Oct 2019 11:05:51 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R+VkGN+x0yGCWvpVGg9TCb+jaDtCV3wjnvlS1ElBIlkY3s8OafEhBBpImIWThKKkFKix3uZQYf43ljC73zNna2mau2+w4Z4DIzlqESn/Qc0T8FoytA7MSAIZ3VrTGOHOamzlBAZLIj4d1AmUvOWsyGDVK0LCCvnzIhoCn7jrDkTDWg4yhmT1+dEsdwaIb5B2ctcQU0UQt11t7dH1pYQo0djHO1ugvwFJed0hs3qkwJFg4GqROTvSox2RU6L/m6Olx7KwfzKo7Ad7MFn8xzeK/wCm273XWd94nwEx/zJ0YV8NUHkIVjYQyW83CVD/nytkBIcd27g1kXn7TR8Dw8so1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SJXvY0VCCXC7pGXpZii/Y8tCu3vvm2jJrXkJFfvetz8=; b=chf8RzmcXg1DWKyTcB7NMv4pj6Mki4aVR1bdoLp/0AfnrqyMN+N+ZisFB24fIMZnEOyDHlfleD63FlEyDeS9qJPGTEsmbVqbjpMrNH689RS9uYydT+p/rUPwlJTZrz8fbodU2omtwrYqLMrLfbs2bh5fZj6HYVBCPnvgKoDKBwACJMWiFVhpKYEzOH1rDGiGofv9tuxFgdxHhFsOTNr2IDEj906u5Wjqjbysilq40HvLfLSQolTSa8KY3gI7EFFDy8rcLs+uIF+YGWabpu11oEea8BeYvmXZWvOWKIWDEI7HpL1yToef1W5+beoae4vu2jsOCpjR7fCaPYtt0T/TKg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SJXvY0VCCXC7pGXpZii/Y8tCu3vvm2jJrXkJFfvetz8=; b=fxnTb/NnOt6HRIwxpZLlAbeJPDcmQmY09gDqJMFGs5F4wGWvw6a8U6dMw4DFDU3OzIBjsx7Bjkm12sn8pdDSw/OAO7G1+NGY56vZnsCXLDxcoVNLij03rMym4DDf363rpXmb6lmuy5a7HRMLo1gV/WBZA5CNDkX7yzIA94B7/yE= Received: from AM4PR05MB3265.eurprd05.prod.outlook.com (10.171.188.154) by AM4PR05MB3266.eurprd05.prod.outlook.com (10.171.190.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.20; Wed, 30 Oct 2019 10:05:50 +0000 Received: from AM4PR05MB3265.eurprd05.prod.outlook.com ([fe80::edab:529f:d14e:d3b]) by AM4PR05MB3265.eurprd05.prod.outlook.com ([fe80::edab:529f:d14e:d3b%7]) with mapi id 15.20.2387.027; Wed, 30 Oct 2019 10:05:50 +0000 From: Slava Ovsiienko To: Andrew Rybchenko , Thomas Monjalon , "olivier.matz@6wind.com" CC: "dev@dpdk.org" , Matan Azrad , Ori Kam , Yongseok Koh Thread-Topic: [dpdk-dev] [PATCH v4] ethdev: extend flow metadata Thread-Index: AQHVjPYP3yCquRGX4Ean9kYpOkOfjqdx0C4AgAAEMrCAAPrZAIAAD5UwgAANwoCAAAxbcA== Date: Wed, 30 Oct 2019 10:05:49 +0000 Message-ID: References: <1571922495-4588-1-git-send-email-viacheslavo@mellanox.com> <1572201636-16374-1-git-send-email-viacheslavo@mellanox.com> <058d3b3f-d023-9484-36d6-ee190dbedea0@solarflare.com> In-Reply-To: <058d3b3f-d023-9484-36d6-ee190dbedea0@solarflare.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=viacheslavo@mellanox.com; x-originating-ip: [95.164.10.10] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: f2d035f9-8f22-44b5-d524-08d75d20bdc1 x-ms-traffictypediagnostic: AM4PR05MB3266:|AM4PR05MB3266: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3968; x-forefront-prvs: 02065A9E77 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(346002)(366004)(136003)(376002)(396003)(39860400002)(13464003)(51444003)(189003)(199004)(66946007)(66446008)(55016002)(30864003)(81166006)(64756008)(2501003)(76116006)(4326008)(66476007)(66556008)(2906002)(86362001)(81156014)(71190400001)(256004)(71200400001)(14444005)(7696005)(8676002)(6116002)(3846002)(5660300002)(478600001)(26005)(102836004)(52536014)(76176011)(6506007)(8936002)(53546011)(6436002)(9686003)(486006)(11346002)(33656002)(229853002)(186003)(54906003)(99286004)(74316002)(66066001)(446003)(7736002)(25786009)(476003)(110136005)(14454004)(305945005)(6246003)(107886003)(316002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR05MB3266; H:AM4PR05MB3265.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: NQq6dWPnDDpAWjDn7BxNPmeNzI4odDcFHhiQdL3SvCVETg56L6y9jssM8bE5p2COWnaRgnQFdTT6f7/t1iYI5LkxPV5riUDm1Mpk51M43qrf2IKSf5QgZ9mL8MU/yZc3oxUe5NMfN9YAAD+G6Ftm1jlL2SbCa+UiZ89r+Y7YnZIrC3EPB9PT4JTphGltbc1GRLnf4lZBrwLlGhrrO34NxQiurhNGpz55Vtk/5m69zS6qaNJu4jMUml3JOssnplfMdEhGIukxTv6DbLfRQaJ9hPXHuYfWEhdaHrVHSfCehMKTcSUsrI64ykfmCOAAVDmWM88hzrAHOn5w5c7AXkwXF3ETMUNRcMxrOJ06m6DuSwsTvuLU8CfD2Qgp/SIztMvoGliEpI7ZdMUbd37CLcF0PgpZIuhbwc4x8Okw0UDeRCjU4ftFUHU8WwCOrScBgML6 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: f2d035f9-8f22-44b5-d524-08d75d20bdc1 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Oct 2019 10:05:49.9028 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: pKVOlARUhoIdxvQ0f812LgxnWc8WtJNBUx0GEPtZC2BlhhuxktXjUFw0bdqZbm60nvdEuMcqFxETZ8ChkBHxRWy36N3cg6QkNx+Le4bD3Wk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR05MB3266 Subject: Re: [dpdk-dev] [PATCH v4] ethdev: extend flow metadata X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBBbmRyZXcgUnliY2hlbmtvIDxh cnliY2hlbmtvQHNvbGFyZmxhcmUuY29tPg0KPiBTZW50OiBXZWRuZXNkYXksIE9jdG9iZXIgMzAs IDIwMTkgMTE6MjANCj4gVG86IFNsYXZhIE92c2lpZW5rbyA8dmlhY2hlc2xhdm9AbWVsbGFub3gu Y29tPjsgVGhvbWFzIE1vbmphbG9uDQo+IDx0aG9tYXNAbW9uamFsb24ubmV0Pjsgb2xpdmllci5t YXR6QDZ3aW5kLmNvbQ0KPiBDYzogZGV2QGRwZGsub3JnOyBNYXRhbiBBenJhZCA8bWF0YW5AbWVs bGFub3guY29tPjsgT3JpIEthbQ0KPiA8b3Jpa2FAbWVsbGFub3guY29tPjsgWW9uZ3Nlb2sgS29o IDx5c2tvaEBtZWxsYW5veC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCB2 NF0gZXRoZGV2OiBleHRlbmQgZmxvdyBtZXRhZGF0YQ0KPiANCj4gT24gMTAvMzAvMTkgMTE6NTkg QU0sIFNsYXZhIE92c2lpZW5rbyB3cm90ZToNCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gPj4gRnJvbTogQW5kcmV3IFJ5YmNoZW5rbyA8YXJ5YmNoZW5rb0Bzb2xhcmZsYXJlLmNv bT4NCj4gPj4gU2VudDogV2VkbmVzZGF5LCBPY3RvYmVyIDMwLCAyMDE5IDk6MzUNCj4gPj4gVG86 IFNsYXZhIE92c2lpZW5rbyA8dmlhY2hlc2xhdm9AbWVsbGFub3guY29tPjsgVGhvbWFzIE1vbmph bG9uDQo+ID4+IDx0aG9tYXNAbW9uamFsb24ubmV0Pjsgb2xpdmllci5tYXR6QDZ3aW5kLmNvbQ0K PiA+PiBDYzogZGV2QGRwZGsub3JnOyBNYXRhbiBBenJhZCA8bWF0YW5AbWVsbGFub3guY29tPjsg T3JpIEthbQ0KPiA+PiA8b3Jpa2FAbWVsbGFub3guY29tPjsgWW9uZ3Nlb2sgS29oIDx5c2tvaEBt ZWxsYW5veC5jb20+DQo+ID4+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCB2NF0gZXRo ZGV2OiBleHRlbmQgZmxvdyBtZXRhZGF0YQ0KPiA+Pg0KPiA+PiBAT2xpdmllciwgcGxlYXNlLCB0 YWtlIGEgbG9vayBhdCB0aGUgZW5kIG9mIHRoZSBtYWlsLg0KPiA+Pg0KPiA+PiBPbiAxMC8yOS8x OSA4OjE5IFBNLCBTbGF2YSBPdnNpaWVua28gd3JvdGU6DQo+ID4+PiBIaSwgQW5kcmV3DQo+ID4+ Pg0KPiA+Pj4gVGhhbmsgeW91IGZvciB0aGUgcmV2aWV3Lg0KPiA+Pj4NCj4gPj4+PiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+IEZyb206IEFuZHJldyBSeWJjaGVua28gPGFyeWJj aGVua29Ac29sYXJmbGFyZS5jb20+DQo+ID4+Pj4gU2VudDogVHVlc2RheSwgT2N0b2JlciAyOSwg MjAxOSAxODoyMg0KPiA+Pj4+IFRvOiBTbGF2YSBPdnNpaWVua28gPHZpYWNoZXNsYXZvQG1lbGxh bm94LmNvbT47IGRldkBkcGRrLm9yZw0KPiA+Pj4+IENjOiBUaG9tYXMgTW9uamFsb24gPHRob21h c0Btb25qYWxvbi5uZXQ+OyBNYXRhbiBBenJhZA0KPiA+Pj4+IDxtYXRhbkBtZWxsYW5veC5jb20+ OyBvbGl2aWVyLm1hdHpANndpbmQuY29tOyBPcmkgS2FtDQo+ID4+Pj4gPG9yaWthQG1lbGxhbm94 LmNvbT47IFlvbmdzZW9rIEtvaCA8eXNrb2hAbWVsbGFub3guY29tPg0KPiA+Pj4+IFN1YmplY3Q6 IFJlOiBbZHBkay1kZXZdIFtQQVRDSCB2NF0gZXRoZGV2OiBleHRlbmQgZmxvdyBtZXRhZGF0YQ0K PiA+Pj4+DQo+ID4+Pj4gT24gMTAvMjcvMTkgOTo0MCBQTSwgVmlhY2hlc2xhdiBPdnNpaWVua28g d3JvdGU6DQo+ID4+Pj4+IEN1cnJlbnRseSwgbWV0YWRhdGEgY2FuIGJlIHNldCBvbiBlZ3Jlc3Mg cGF0aCB2aWEgbWJ1ZiB0eF9tZXRhZGF0YQ0KPiA+Pj4+PiBmaWVsZCB3aXRoIFBLVF9UWF9NRVRB REFUQSBmbGFnIGFuZCBSVEVfRkxPV19JVEVNX1RZUEVfTUVUQQ0KPiA+Pj4+IG1hdGNoZXMgbWV0 YWRhdGEuDQo+ID4+Pj4+IFRoaXMgcGF0Y2ggZXh0ZW5kcyB0aGUgbWV0YWRhdGEgZmVhdHVyZSB1 c2FiaWxpdHkuDQo+ID4+Pj4+DQo+ID4+Pj4+IDEpIFJURV9GTE9XX0FDVElPTl9UWVBFX1NFVF9N RVRBDQo+ID4+Pj4+DQo+ID4+Pj4+IFdoZW4gc3VwcG9ydGluZyBtdWx0aXBsZSB0YWJsZXMsIFR4 IG1ldGFkYXRhIGNhbiBhbHNvIGJlIHNldCBieSBhDQo+ID4+Pj4+IHJ1bGUgYW5kIG1hdGNoZWQg YnkgYW5vdGhlciBydWxlLiBUaGlzIG5ldyBhY3Rpb24gYWxsb3dzIG1ldGFkYXRhDQo+ID4+Pj4+ IHRvIGJlIHNldCBhcyBhIHJlc3VsdCBvZiBmbG93IG1hdGNoLg0KPiA+Pj4+Pg0KPiA+Pj4+PiAy KSBNZXRhZGF0YSBvbiBpbmdyZXNzDQo+ID4+Pj4+DQo+ID4+Pj4+IFRoZXJlJ3MgYWxzbyBuZWVk IHRvIHN1cHBvcnQgbWV0YWRhdGEgb24gaW5ncmVzcy4gTWV0YWRhdGEgY2FuIGJlDQo+ID4+Pj4+ IHNldCBieSBTRVRfTUVUQSBhY3Rpb24gYW5kIG1hdGNoZWQgYnkgTUVUQSBpdGVtIGxpa2UgVHgu IFRoZSBmaW5hbA0KPiA+Pj4+PiB2YWx1ZSBzZXQgYnkgdGhlIGFjdGlvbiB3aWxsIGJlIGRlbGl2 ZXJlZCB0byBhcHBsaWNhdGlvbiB2aWENCj4gPj4+Pj4gbWV0YWRhdGEgZHluYW1pYyBmaWVsZCBv ZiBtYnVmIHdoaWNoIGNhbiBiZSBhY2Nlc3NlZCBieQ0KPiA+Pj4+IFJURV9GTE9XX0RZTkZfTUVU QURBVEEoKS4NCj4gPj4+Pj4gUEtUX1JYX0RZTkZfTUVUQURBVEEgZmxhZyB3aWxsIGJlIHNldCBh bG9uZyB3aXRoIHRoZSBkYXRhLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBUaGUgbWJ1ZiBkeW5hbWljIGZp ZWxkIG11c3QgYmUgcmVnaXN0ZXJlZCBieSBjYWxsaW5nDQo+ID4+Pj4+IHJ0ZV9mbG93X2R5bmZf bWV0YWRhdGFfcmVnaXN0ZXIoKSBwcmlvciB0byB1c2UgU0VUX01FVEEgYWN0aW9uLg0KPiA+Pj4+ Pg0KPiA+Pj4+PiBUaGUgYXZhaWxhYmlsaXR5IG9mIGR5bmFtaWMgbWJ1ZiBtZXRhZGF0YSBmaWVs ZCBjYW4gYmUgY2hlY2tlZA0KPiA+Pj4+PiB3aXRoDQo+ID4+Pj4+IHJ0ZV9mbG93X2R5bmZfbWV0 YWRhdGFfYXZhaWwoKSByb3V0aW5lLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBGb3IgbG9vcGJhY2svaGFp cnBpbiBwYWNrZXQsIG1ldGFkYXRhIHNldCBvbiBSeC9UeCBtYXkgb3IgbWF5IG5vdA0KPiA+Pj4+ PiBiZSBwcm9wYWdhdGVkIHRvIHRoZSBvdGhlciBwYXRoIGRlcGVuZGluZyBvbiBoYXJkd2FyZSBj YXBhYmlsaXR5Lg0KPiA+Pj4+Pg0KPiA+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBZb25nc2VvayBLb2gg PHlza29oQG1lbGxhbm94LmNvbT4NCj4gPj4+Pj4gU2lnbmVkLW9mZi1ieTogVmlhY2hlc2xhdiBP dnNpaWVua28gPHZpYWNoZXNsYXZvQG1lbGxhbm94LmNvbT4NCj4gPj4+PiBBYm92ZSBleHBsYW5h dGlvbnMgbGFjayBpbmZvcm1hdGlvbiBhYm91dCAibWV0YSIgdnMgIm1hcmsiIHdoaWNoDQo+ID4+ Pj4gbWF5IGJlIHNldCBvbiBSeCBhcyB3ZWxsIGFuZCBkZWxpdmVyZWQgaW4gb3RoZXIgbWJ1ZiBm aWVsZC4NCj4gPj4+PiBJdCBzaG91bGQgYmUgZXhwbGFpbmVkIGJ5IG9uZSBtb3JlIGZpZWxkIGlz IHJlcXVpcmVkIGFuZCBydWxlcyBkZWZpbmVkLg0KPiA+Pj4gVGhlcmUgaXMgc29tZSBzdG9yeSBh Ym91dCBtZXRhZGF0YSBmZWF0dXJlcy4NCj4gPj4+IEluaXRpYWxseSwgdGhlcmUgd2VyZSBwcm9w b3NlZCB0d28gbWV0YWRhdGEgcmVsYXRlZCBhY3Rpb25zOg0KPiA+Pj4NCj4gPj4+IC0gUlRFX0ZM T1dfQUNUSU9OX1RZUEVfRkxBRw0KPiA+Pj4gLSBSVEVfRkxPV19BQ1RJT05fVFlQRV9NQVJLDQo+ ID4+Pg0KPiA+Pj4gVGhlc2UgYWN0aW9ucyBzZXQgdGhlIHNwZWNpYWwgZmxhZyBpbiB0aGUgcGFj a2V0IG1ldGFkYXRhLCBNQVJLDQo+ID4+PiBhY3Rpb24gc3RvcmVzIHNvbWUgc3BlY2lmaWVkIHZh bHVlIGluIHRoZSBtZXRhZGF0YSBzdG9yYWdlLCBhbmQsIG9uDQo+ID4+PiB0aGUgcGFja2V0IHJl Y2VpdmluZyBQTUQgcHV0cyB0aGUgZmxhZyBhbmQgdmFsdWUgdG8gdGhlIG1idWYgYW5kDQo+ID4+ PiBhcHBsaWNhdGlvbnMgY2FuIHNlZSB0aGUgcGFja2V0IHdhcyB0aHJlYXRlZCBpbnNpZGUgZmxv dyBlbmdpbmUNCj4gPj4+IGFjY29yZGluZyB0byB0aGUgYXBwcm9wcmlhdGUgUlRFIGZsb3cocyku IE1BUksgYW5kIEZMQUcgYXJlIGxpa2UNCj4gPj4+IHNvbWUga2luZCBvZiBnYXRld2F5IHRvIHRy YW5zZmVyIHNvbWUgcGVyLXBhY2tldCBpbmZvcm1hdGlvbiBmcm9tDQo+ID4+PiB0aGUgZmxvdw0K PiA+PiBlbmdpbmUgdG8gdGhlIGFwcGxpY2F0aW9uIHZpYSByZWNlaXZpbmcgZGF0YXBhdGguDQo+ ID4+PiAgIEZyb20gdGhlIGRhdGFwYXRoIHBvaW50IG9mIHZpZXcsIHRoZSBNQVJLIGFuZCBGTEFH IGFyZSByZWxhdGVkIHRvDQo+ID4+PiB0aGUNCj4gPj4gcmVjZWl2aW5nIHNpZGUgb25seS4NCj4g Pj4+IEl0IHdvdWxkIHVzZWZ1bCB0byBoYXZlIHRoZSBzYW1lIGdhdGV3YXkgb24gdGhlIHRyYW5z bWl0dGluZyBzaWRlDQo+ID4+PiBhbmQgdGhlcmUgd2FzIHRoZSBmZWF0dXJlIG9mIHR5cGUgUlRF X0ZMT1dfSVRFTV9UWVBFX01FVEEgd2FzDQo+ID4+IHByb3Bvc2VkLg0KPiA+Pj4gVGhlIGFwcGxp Y2F0aW9uIGNhbiBmaWxsIHRoZSBmaWVsZCBpbiBtYnVmIGFuZCB0aGlzIHZhbHVlIHdpbGwgYmUN Cj4gPj4+IHRyYW5zZmVycmVkIHRvDQo+ID4+IHNvbWUgZmllbGQgaW4gdGhlIHBhY2tldCBtZXRh ZGF0YSBpbnNpZGUgdGhlIGZsb3cgZW5naW5lLg0KPiA+Pj4gSXQgZGlkIG5vdCBtYXR0ZXIgd2hl dGhlciB0aGVzZSBtZXRhZGF0YSBmaWVsZHMgYXJlIHNoYXJlZCBiZWNhdXNlDQo+ID4+PiBvZiBN QVJLIGFuZCBNRVRBIGl0ZW1zIGJlbG9uZ2VkIHRvIGRpZmZlcmVudCBkb21haW5zIChyZWNlaXZp bmcgYW5kDQo+ID4+IHRyYW5zbWl0dGluZykgYW5kIGNvdWxkIGJlIHZlbmRvci1zcGVjaWZpYy4N Cj4gPj4+IFNvIGZhciwgc28gZ29vZCwgRFBESyBwcm9wb3NlcyBzb21lIGVudGl0aWVzIHRvIGNv bnRyb2wgbWV0YWRhdGENCj4gPj4+IGluc2lkZSB0aGUgZmxvdyBlbmdpbmUgYW5kIGdhdGV3YXlz IHRvIGV4Y2hhbmdlIHRoZXNlIHZhbHVlcyBvbiBhDQo+ID4+PiBwZXItDQo+ID4+IHBhY2tldCBi YXNpcyB2aWEgZGF0YXBhdGhzLg0KPiA+Pj4gQXMgd2UgY2FuIHNlZSwgdGhlIE1BUksgYW5kIE1F VEEgbWVhbnMgYXJlIG5vdCBzeW1tZXRyaWMsIHRoZXJlIGlzDQo+ID4+PiBhYnNlbnQgYWN0aW9u IHdoaWNoIHdvdWxkIGFsbG93IHVzIHRvIHNldCBNRVRBIHZhbHVlIG9uIHRoZQ0KPiA+Pj4gdHJh bnNtaXR0aW5nDQo+ID4+IHBhdGguIFNvLCB0aGUgYWN0aW9uIG9mIHR5cGU6DQo+ID4+PiAtIFJU RV9GTE9XX0FDVElPTl9UWVBFX1NFVF9NRVRBIGlzIHByb3Bvc2VkLg0KPiA+Pj4NCj4gPj4+IFRo ZSBuZXh0LCBhcHBsaWNhdGlvbnMgcmFpc2UgdGhlIG5ldyByZXF1aXJlbWVudHMgZm9yIHBhY2tl dCBtZXRhZGF0YS4NCj4gPj4+IFRoZSBmbG93IGVuZ2luZXMgYXJlIGdldHRpbmcgbW9yZSBjb21w bGV4LCBpbnRlcm5hbCBzd2l0Y2hlcyBhcmUNCj4gPj4+IGludHJvZHVjZWQsIG11bHRpcGxlIHBv cnRzIG1pZ2h0IGJlIHN1cHBvcnRlZCB3aXRoaW4gdGhlIHNhbWUgZmxvdw0KPiA+Pj4gZW5naW5l IG5hbWVzcGFjZS4gRnJvbSB0aGUgRFBESyBwb2ludHMgb2YgdmlldywgaXQgbWVhbnMgdGhlIHBh Y2tldHMNCj4gPj4+IG1pZ2h0IGJlIHNlbnQgb24gb25lIGV0aF9kZXYgcG9ydCBhbmQgcmVjZWl2 ZWQgb24gdGhlIG90aGVyIG9uZSwgYW5kDQo+ID4+PiB0aGUNCj4gPj4gcGFja2V0IHBhdGggaW5z aWRlIHRoZSBmbG93IGVuZ2luZSBlbnRpcmVseSBiZWxvbmdzIHRvIHRoZSBzYW1lDQo+ID4+IGhh cmR3YXJlIGRldmljZS4gVGhlIHNpbXBsZXN0IGV4YW1wbGUgaXMgU1ItSU9WIHdpdGggUEYsIFZG cyBhbmQgdGhlDQo+IHJlcHJlc2VudG9ycy4NCj4gPj4+IEFuZCB0aGVyZSBpcyBhIGJyaWxsaWFu dCBvcHBvcnR1bml0eSB0byBwcm92aWRlIHNvbWUgb3V0LW9mLWJhbmQNCj4gPj4+IGNoYW5uZWwg dG8NCj4gPj4gdHJhbnNmZXIgc29tZSBleHRyYSBkYXRhDQo+ID4+PiAgICBmcm9tIG9uZSBwb3J0 IHRvIGFub3RoZXIgb25lLCBiZXNpZGVzIHRoZSBwYWNrZXQgZGF0YSBpdHNlbGYuDQo+ID4+Pg0K PiA+Pj4NCj4gPj4+PiBBYm92ZSBleHBsYW5hdGlvbnMgbGFjayBpbmZvcm1hdGlvbiBhYm91dCAi bWV0YSIgdnMgIm1hcmsiIHdoaWNoDQo+ID4+Pj4gbWF5IGJlIHNldCBvbiBSeCBhcyB3ZWxsIGFu ZCBkZWxpdmVyZWQgaW4gb3RoZXIgbWJ1ZiBmaWVsZC4NCj4gPj4+PiBJdCBzaG91bGQgYmUgZXhw bGFpbmVkIGJ5IG9uZSBtb3JlIGZpZWxkIGlzIHJlcXVpcmVkIGFuZCBydWxlcyBkZWZpbmVkLg0K PiA+Pj4+IE90aGVyd2lzZSB3ZSBjYW4gZW5kdXAgaW4gaGFsZiBQTURzIHN1cHBvcnRpbmcgbWFy ayBvbmx5LCBoYWxmIFBNRHMNCj4gPj4+PiBzdXBwb3J0aW5nIG1ldGEgb25seSBhbmQgYXBwbGlj YXRpb25zIGluIGFuIGludGVyZXN0aW5nIHNpdHVhdGlvbg0KPiA+Pj4+IHRvIG1ha2UgYSBjaG9p Y2Ugd2hpY2ggb25lIHRvIHVzZS4NCj4gPj4+IFRoZXJlIGlzIG5vICJtYXJrIiB2cyAibWV0YSIu IE1BUksgYW5kIE1FVEEgbWVhbnMgYXJlIGtlcHQgZm9yDQo+ID4+PiBjb21wYXRpYmlsaXR5IGlz c3VlcyBhbmQgbGVnYWN5IHBhcnQgd29ya3MgZXhhY3RseSBhcyBiZWZvcmUuIFRoZQ0KPiA+Pj4g dHJpYWxzICh3aXRoIGZsb3dfdmFsaWRhdGUpICBpcyBzdXBwb3NlZCB0byBjaGVjayB3aGV0aGVy IFBNRA0KPiA+Pj4gc3VwcG9ydHMgTUFSSyBvciBNRVRBIGZlYXR1cmUgb24gYXBwcm9wcmlhdGUg ZG9tYWluLiBJdCBkZXBlbmRzIG9uDQo+ID4+PiBQTUQgaW1wbGVtZW50YXRpb24sIGNvbmZpZ3Vy YXRpb24gYW5kIHVuZGVybGF5aW5nIEhXL0ZXL2tlcm5lbA0KPiA+Pj4gY2FwYWJpbGl0aWVzDQo+ ID4+IGFuZCBzaG91bGQgYmUgcmVzb2x2ZWQgaW4gcnVudGltZS4NCj4gPj4NCj4gPj4gVGhlIHRy aWFscyBhIHdheSwgYnV0IHZlcnkgdHJpY2t5IHdheS4gTXkgaW1hZ2luYXRpb24gZHJhd3MgbWUN Cj4gPj4gcGljdHVyZXMgaG93IGFuIGFwcGxpY2F0aW9uIGNvZGUgY291bGQgbG9vayBsaWtlIGlu IGF0dGVtcHQgdG8gdXNlDQo+ID4+IGVpdGhlciBtYXJrIG9yIG1ldGEgZm9yIFJ4IG9ubHkgYW5k IHRoZXNlIHBpY3R1cmVzIGFyZSBub3QgbmljZS4NCj4gPiBBZ3JlZSwgdHJpYWxzIGlzIG5vdCB0 aGUgYmVzdCB3YXkuDQo+ID4gRm9yIG5vdyB0aGVyZSBpcyBubyBhcHBsaWNhdGlvbiB0cnlpbmcg dG8gY2hvb3NlIG1hcmsgb3IgbWV0YSwgYmVjYXVzZQ0KPiA+IHRoZXNlIG9uZXMgYmVsb25nZWQg dG8gb3RoZXIgZG9tYWlucywgYW5kIGV4dGVuc2lvbiBpcyBuZXdseSBpbnRyb2R1Y2VkLg0KPiA+ IFNvLCB0aGUgYXBwbGljYXRpb25zIHVzaW5nIG1hcmsgd2lsbCBjb250aW51ZSB1c2UgbWFyaywg dGhlIHNhbWUgaXMNCj4gcmVnYXJkaW5nIG1ldGEuDQo+ID4gVGhlIG5ldyBhcHBsaWNhdGlvbiBk ZWZpbml0ZWx5IHdpbGwgYXNrIGZvciBib3RoIG1hcmsgYW5kIG9mIHRoZW0sIHdlDQo+ID4gaGF2 ZSB0aGUgcmVxdWlyZW1lbnRzIGZyb20gY3VzdG9tZXJzICAtICJnaXZlIHVzIGFzIG1hbnkgdGhy b3VnaCBiaXRzIGFzDQo+IHlvdSBjYW4iLg0KPiA+IFRoaXMgbmV3IGFwcGxpY2F0aW9uIGp1c3Qg bWF5IHJlZnVzZSB0byB3b3JrIGlmIG1ldGFkYXRhIGZlYXR1cmVzIGFyZQ0KPiA+IG5vdCBkZXRl Y3RlZCwgYmVjYXVzZSByZWxheXMgb24gaXQgc3Ryb25nbHkuDQo+ID4gQlRXLCB0cmlhbHMgYXJl IG5vdCBzbyBjb21wbGV4OiBydGVfZmxvd192YWxpZGF0ZShtYXJrKSwNCj4gPiBydGVfZmxvd192 YWxpZGF0ZV9tZXRhZGF0YSgpIGFuZCB0aGF0J3MgaXQuDQo+IA0KPiBJbiBhc3N1bXB0aW9uIHRo YXQgcGF0dGVybiBpcyBzdXBwb3J0ZWQgYW5kIGZhdGUgYWN0aW9uIHVzZWQgdG9nZXRoZXIgd2l0 aA0KPiBtYXJrIGlzIHN1cHBvcnRlZCBhcyB3ZWxsLiBOb3QgdGhhdCBlYXN5LCBidXQgT0suDQo+ IA0KPiA+PiBNYXkgYmUgaXQgd2lsbCBsb29rIGFjY2VwdGFibGUgd2hlbiBtYXJrIGJlY29tZXMg YSBkeW5hbWljIHNpbmNlDQo+ID4+IHVzYWdlIG9mIGVpdGhlciBvbmUgb3IgYW5vdGhlciBkeW5h bWljIGZpZWxkIGlzIGRlZmluaXRlbHkgZWFzaWVyDQo+ID4+IHRoYW4gdXNhZ2Ugb2YgZWl0aGVy IGZpeGVkIG9yIGR5bmFtaWMgZmllbGQuDQo+ID4gQXQgbGVhc3QgaW4gUE1EIGRhdGFwYXRoIGl0 IGRvZXMgbm90IGxvb2sgdmVyeSB1Z2x5Lg0KPiA+PiBNYXkgYmUgZHluYW1pYyBmaWVsZCBmb3Ig bWFyayBhdCBmaXhlZCBvZmZzZXQgc2hvdWxkIGJlIGludHJvZHVjZWQgaW4NCj4gPj4gdGhlIHJl bGVhc2Ugb3IgdGhlIG5lYXJlc3QgZnV0dXJlPyBJdCB3aWxsIGFsbG93IHRvIHByZXNlcnZlIEFC SSB1cA0KPiA+PiB0byAyMC4xMSBhbmQgcHJvdmlkZSBmdXR1cmUgcHJvb2YgQVBJLg0KPiA+PiBU aGUgdHJpY2sgaXMgdG8gcmVnaXN0ZXIgZHluYW1pYyBtZXRhIGZpZWxkIGF0IGZpeGVkIG9mZnNl dCBhdCBzdGFydA0KPiA+PiBvZiBhIGRheSB0byBiZSBzdXJlIHRoYXQgaXQgaXMgZ3VhcmFudGVl ZCB0byBzdWNjZWVkLg0KPiA+PiBJdCBzb3VuZHMgbGlrZSBpdCBpcyBhIHRyYW5zaXRpb24gbWVj aGFuaXNtIGZyb20gZml4ZWQgdG8gZHluYW1pYyBmaWVsZHMuDQo+ID4+DQo+ID4+IFtzbmlwXQ0K PiA+Pg0KPiA+Pj4+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2Zsb3cuaA0K PiA+Pj4+PiBiL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9mbG93LmggaW5kZXggNGZlZTEwNS4uYjgy MTU1NyAxMDA2NDQNCj4gPj4+Pj4gLS0tIGEvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2Zsb3cuaA0K PiA+Pj4+PiArKysgYi9saWIvbGlicnRlX2V0aGRldi9ydGVfZmxvdy5oDQo+ID4+Pj4+IEBAIC0y OCw2ICsyOCw4IEBADQo+ID4+Pj4+ICAgICAjaW5jbHVkZSA8cnRlX2J5dGVvcmRlci5oPg0KPiA+ Pj4+PiAgICAgI2luY2x1ZGUgPHJ0ZV9lc3AuaD4NCj4gPj4+Pj4gICAgICNpbmNsdWRlIDxydGVf aGlnaWcuaD4NCj4gPj4+Pj4gKyNpbmNsdWRlIDxydGVfbWJ1Zi5oPg0KPiA+Pj4+PiArI2luY2x1 ZGUgPHJ0ZV9tYnVmX2R5bi5oPg0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAgI2lmZGVmIF9fY3BsdXNw bHVzDQo+ID4+Pj4+ICAgICBleHRlcm4gIkMiIHsNCj4gPj4+Pj4gQEAgLTQxOCw3ICs0MjAsOCBA QCBlbnVtIHJ0ZV9mbG93X2l0ZW1fdHlwZSB7DQo+ID4+Pj4+ICAgICAJLyoqDQo+ID4+Pj4+ICAg ICAJICogW01FVEFdDQo+ID4+Pj4+ICAgICAJICoNCj4gPj4+Pj4gLQkgKiBNYXRjaGVzIGEgbWV0 YWRhdGEgdmFsdWUgc3BlY2lmaWVkIGluIG1idWYgbWV0YWRhdGEgZmllbGQuDQo+ID4+Pj4+ICsJ ICogTWF0Y2hlcyBhIG1ldGFkYXRhIHZhbHVlLg0KPiA+Pj4+PiArCSAqDQo+ID4+Pj4+ICAgICAJ ICogU2VlIHN0cnVjdCBydGVfZmxvd19pdGVtX21ldGEuDQo+ID4+Pj4+ICAgICAJICovDQo+ID4+ Pj4+ICAgICAJUlRFX0ZMT1dfSVRFTV9UWVBFX01FVEEsDQo+ID4+Pj4+IEBAIC0xMjYzLDkgKzEy NjYsMTcgQEAgc3RydWN0DQo+IHJ0ZV9mbG93X2l0ZW1faWNtcDZfbmRfb3B0X3RsYV9ldGgNCj4g Pj4gew0KPiA+Pj4+PiAgICAgI2VuZGlmDQo+ID4+Pj4+DQo+ID4+Pj4+ICAgICAvKioNCj4gPj4+ Pj4gLSAqIFJURV9GTE9XX0lURU1fVFlQRV9NRVRBLg0KPiA+Pj4+PiArICogQHdhcm5pbmcNCj4g Pj4+Pj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBzdHJ1Y3R1cmUgbWF5IGNoYW5nZSB3aXRo b3V0IHByaW9yDQo+ID4+Pj4+ICsgbm90aWNlDQo+ID4+Pj4gSXMgaXQgYWxsb3dlZCB0byBtYWtl IGV4cGVyaW1lbnRhbCBiYWNrPw0KPiA+Pj4gSSB0aGluayB3ZSBzaG91bGQgcmVtb3ZlIEVYUEVS SU1FTlRBTCBoZXJlLiBXZSBkbyBub3QgaW50cm9kdWNlDQo+IG5ldw0KPiA+Pj4gZmVhdHVyZSwg YnV0IGp1c3QgZXh0ZW5kIHRoZSBhcHBseSBhcmVhLg0KPiA+PiBBZ3JlZWQuDQo+ID4+DQo+ID4+ Pj4+ICAgICAgKg0KPiA+Pj4+PiAtICogTWF0Y2hlcyBhIHNwZWNpZmllZCBtZXRhZGF0YSB2YWx1 ZS4NCj4gPj4+Pj4gKyAqIFJURV9GTE9XX0lURU1fVFlQRV9NRVRBDQo+ID4+Pj4+ICsgKg0KPiA+ Pj4+PiArICogTWF0Y2hlcyBhIHNwZWNpZmllZCBtZXRhZGF0YSB2YWx1ZS4gT24gZWdyZXNzLCBt ZXRhZGF0YSBjYW4gYmUNCj4gPj4+Pj4gKyBzZXQgZWl0aGVyIGJ5DQo+ID4+Pj4+ICsgKiBtYnVm IHR4X21ldGFkYXRhIGZpZWxkIHdpdGggUEtUX1RYX01FVEFEQVRBIGZsYWcgb3INCj4gPj4+Pj4g KyAqIFJURV9GTE9XX0FDVElPTl9UWVBFX1NFVF9NRVRBLiBPbiBpbmdyZXNzLA0KPiA+Pj4+PiAr IFJURV9GTE9XX0FDVElPTl9UWVBFX1NFVF9NRVRBIHNldHMNCj4gPj4+Pj4gKyAqIG1ldGFkYXRh IGZvciBhIHBhY2tldCBhbmQgdGhlIG1ldGFkYXRhIHdpbGwgYmUgcmVwb3J0ZWQgdmlhDQo+ID4+ Pj4+ICsgbWJ1ZiBtZXRhZGF0YQ0KPiA+Pj4+PiArICogZHluYW1pYyBmaWVsZCB3aXRoIFBLVF9S WF9EWU5GX01FVEFEQVRBIGZsYWcuIFRoZSBkeW5hbWljDQo+ID4+IG1idWYNCj4gPj4+Pj4gKyBm aWVsZCBtdXN0IGJlDQo+ID4+Pj4+ICsgKiByZWdpc3RlcmVkIGluIGFkdmFuY2UgYnkgcnRlX2Zs b3dfZHluZl9tZXRhZGF0YV9yZWdpc3RlcigpLg0KPiA+Pj4+PiAgICAgICovDQo+ID4+Pj4+ICAg ICBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbV9tZXRhIHsNCj4gPj4+Pj4gICAgIAlydGVfYmUzMl90IGRh dGE7DQo+ID4+Pj4gW3NuaXBdDQo+ID4+Pj4NCj4gPj4+Pj4gQEAgLTI0MjksNiArMjQ0Nyw1NSBA QCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX3NldF9tYWMgew0KPiA+Pj4+PiAgICAgCXVpbnQ4X3Qg bWFjX2FkZHJbUlRFX0VUSEVSX0FERFJfTEVOXTsNCj4gPj4+Pj4gICAgIH07DQo+ID4+Pj4+DQo+ ID4+Pj4+ICsvKioNCj4gPj4+Pj4gKyAqIEB3YXJuaW5nDQo+ID4+Pj4+ICsgKiBAYiBFWFBFUklN RU5UQUw6IHRoaXMgc3RydWN0dXJlIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvcg0KPiA+Pj4+PiAr bm90aWNlDQo+ID4+Pj4+ICsgKg0KPiA+Pj4+PiArICogUlRFX0ZMT1dfQUNUSU9OX1RZUEVfU0VU X01FVEENCj4gPj4+Pj4gKyAqDQo+ID4+Pj4+ICsgKiBTZXQgbWV0YWRhdGEuIE1ldGFkYXRhIHNl dCBieSBtYnVmIHR4X21ldGFkYXRhIGZpZWxkIHdpdGgNCj4gPj4+Pj4gKyAqIFBLVF9UWF9NRVRB REFUQSBmbGFnIG9uIGVncmVzcyB3aWxsIGJlIG92ZXJyaWRkZW4gYnkgdGhpcw0KPiBhY3Rpb24u DQo+ID4+Pj4+ICtPbg0KPiA+Pj4+PiArICogaW5ncmVzcywgdGhlIG1ldGFkYXRhIHdpbGwgYmUg Y2FycmllZCBieSBtYnVmIG1ldGFkYXRhIGR5bmFtaWMNCj4gPj4+Pj4gK2ZpZWxkDQo+ID4+Pj4+ ICsgKiB3aXRoIFBLVF9SWF9EWU5GX01FVEFEQVRBIGZsYWcgaWYgc2V0LiAgVGhlIGR5bmFtaWMg bWJ1ZiBmaWVsZA0KPiA+Pj4+PiArbXVzdCBiZQ0KPiA+Pj4+PiArICogcmVnaXN0ZXJlZCBpbiBh ZHZhbmNlIGJ5IHJ0ZV9mbG93X2R5bmZfbWV0YWRhdGFfcmVnaXN0ZXIoKS4NCj4gPj4+Pj4gKyAq DQo+ID4+Pj4+ICsgKiBBbHRlcmluZyBwYXJ0aWFsIGJpdHMgaXMgc3VwcG9ydGVkIHdpdGggbWFz ay4gRm9yIGJpdHMgd2hpY2gNCj4gPj4+Pj4gK2hhdmUgbmV2ZXINCj4gPj4+Pj4gKyAqIGJlZW4g c2V0LCB1bnByZWRpY3RhYmxlIHZhbHVlIHdpbGwgYmUgc2VlbiBkZXBlbmRpbmcgb24gZHJpdmVy DQo+ID4+Pj4+ICsgKiBpbXBsZW1lbnRhdGlvbi4gRm9yIGxvb3BiYWNrL2hhaXJwaW4gcGFja2V0 LCBtZXRhZGF0YSBzZXQgb24NCj4gPj4+Pj4gK1J4L1R4IG1heQ0KPiA+Pj4+PiArICogb3IgbWF5 IG5vdCBiZSBwcm9wYWdhdGVkIHRvIHRoZSBvdGhlciBwYXRoIGRlcGVuZGluZyBvbiBIVw0KPiA+ Pj4+IGNhcGFiaWxpdHkuDQo+ID4+Pj4+ICsgKg0KPiA+Pj4+PiArICogUlRFX0ZMT1dfSVRFTV9U WVBFX01FVEEgbWF0Y2hlcyBtZXRhZGF0YS4NCj4gPj4+Pj4gKyAqLw0KPiA+Pj4+PiArc3RydWN0 IHJ0ZV9mbG93X2FjdGlvbl9zZXRfbWV0YSB7DQo+ID4+Pj4+ICsJcnRlX2JlMzJfdCBkYXRhOw0K PiA+Pj4+PiArCXJ0ZV9iZTMyX3QgbWFzazsNCj4gPj4+PiBBcyBJIHVuZGVyc3RhbmQgdHhfbWV0 YWRhdGEgaXMgaG9zdCBlbmRpYW4uIEp1c3QgZG91YmxlLWNoZWNraW5nLg0KPiA+Pj4+IElzIGEg bmV3IGR5bmFtaWMgZmllbGQgaG9zdCBlbmRpYW4gb3IgYmlnIGVuZGlhbj8NCj4gPj4+PiBJIGRl ZmluaXRlbHkgd291bGQgbGlrZSB0byBzZWUgbW90aXZhdGlvbiBpbiBjb21tZW50cyB3aHkgZGF0 YS9tYXNrDQo+ID4+Pj4gYXJlIGJpZy0gZW5kaWFuIGhlcmUuDQo+ID4+PiBtZXRhZGF0YSBpcyBv cGFxdWUgdmFsdWUsIGVuZGlhbm5lc3MgZG9lcyBub3QgbWF0dGVyLCB0aGVyZSBhcmUgbm8NCj4g Pj4+IHNvbWUgc3BlY2lhbCBtb3RpdmF0aW9ucyBmb3IgY2hvb3NpbmcgZW5kaWFubmVzLg0KPiA+ Pj4gcnRlX2Zsb3dfaXRlbV9tZXRhKCkgc3RydWN0dXJlIHByb3ZpZGVzIGRhdGEgd2l0aCBydGVf YmUzMl90IHR5cGUsDQo+ID4+PiBzbyBtZXRhIHJlbGF0ZWQgYWN0aW9uIGRvZXMNCj4gPj4gdGhl IHNhbWUuDQo+ID4+DQo+ID4+IEVuZGlhbm5lc3Mgb2YgbWV0YSBpbiBtYnVmIGFuZCBmbG93IEFQ SSBzaG91bGQgbWF0Y2ggYW5kIGl0IG11c3QgYmUNCj4gPiBZZXMsIGFuZCB0aGV5IG1hdGNoIChm b3IgbWV0YSksIGJvdGggYXJlIHJ0ZV9iZTMyX3QuIE9LLCB3aWxsIGVtcGhhc2l6ZSBpdA0KPiBp biBkb2NzLg0KPiA+DQo+ID4+IGRvY3VtZW50ZWQuIEVuZGlhbm5lc3MgaXMgaW1wb3J0YW50IGlm IGEgSFcgc3VwcG9ydHMgbGVzcyBiaXRzIHNpbmNlDQo+ID4+IGl0IG1ha2VzIGEgaGl0IGZvciBh cHBsaWNhdGlvbiB0byB1c2UgTFNCIGZpcnN0IGlmIHRoZSBiaXQgc3BhY2UgaXMgc3VmZmljaWVu dC4NCj4gPj4gbWFyayBpcyBkZWZpbmVkIGFzIGhvc3QtZW5kaWFuICh1aW50MzJfdCkgYW5kIEkg dGhpbmsgbWV0YSBzaG91bGQgYmUNCj4gPj4gdGhlIHNhbWUuIE90aGVyd2lzZSBpdCBjb21wbGlj YXRlcyBldmVuIG1vcmUgZWl0aGVyIG1hcmsgb3IgbWV0YQ0KPiA+PiB1c2FnZSBhcyBkaXNjdXNz ZWQgYWJvdmUgLg0KPiA+IG1hcmsgaXMgbWFyaywgbWV0YSBpcyBtZXRhLCB0aGVzZSBvbmVzIGFy ZSBub3QgaW50ZXJyZWxhdGVkIChkZXNwaXRlDQo+ID4gdGhleSBhcmUgYmVjb21pbmcgc2ltaWxh cikuIEFuZCB0aGVyZSBpcyBubyBjaG9pY2UgYmV0d2VlbiBtYXJrIGFuZCBtZXRhLg0KPiA+IEl0 IGlzIG5vdCBvYnZpb3VzIHdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIGVuZGlhbm5lc3MgZm9yIGJv dGguDQo+ID4gVGhlcmUgYXJlIHNvbWUgYXBwbGljYXRpb25zIHVzaW5nIHRoaXMgbGVnYWN5IGZl YXR1cmVzLCBzbyB0aGVyZSBtaWdodA0KPiA+IGJlIGNvbXBhdGliaWxpdHkgaXNzdWVzIGVpdGhl ci4NCj4gDQo+IFRoZXJlIGFyZSBmZXcgcmVhc29ucyBhYm92ZSB0byBtYWtlIG1ldGEgaG9zdCBl bmRpYW46DQo+IC0gbWF0Y2ggbWFyayBlbmRpYW5uZXNzIChleHBsYWluZWQgYWJvdmUsIEkgc3Rp bGwgdGhpbmsgdGhhdCBteSByZWFzb25zDQo+IHZhaWxkKQ0KPiAtIG1ha2UgaXQgZWFzaWVyIGZv ciBhcHBsaWNhdGlvbiB0byB1c2UgaXQgd2l0aG91dCBlbmRpYW5uZXNzIGNvbnZlcnNpb24NCj4g IMKgIGlmIGEgc2VxdWVuY2UgbnVtYmVyIGlzIHVzZWQgdG8gYWxsb2NhdGUgbWV0YXMgKHNpbWls YXIgdG8gbWFyayBpbiBPVlMpDQo+ICDCoCBhbmQgYml0IHNwYWNlIGlzIGxlc3MgdGhhbiAzMi1i aXRzDQo+IA0KPiBJIHNlZSBubyBzaW5nbGUgcmVhc29uIHRvIGtlZXAgaXQgYmlnLWVuZGlhbiBl eGNlcHQgYSByZWFzb24gdG8ga2VlcCBpdC4NCj4gDQo+IFNpbmNlIHR4X21ldGFkYXRhIGlzIGdv aW5nIGF3YXkgYW5kIG1ldGFkYXRhIHdhcyB1c2VkIGZvciBUeCBvbmx5IGJlZm9yZQ0KPiBpdCBp cyBhIGdvb2QgbW9tZW50IHRvIGZpeCBpdC4NCj4gDQo+ID4+IFllcywgSSB0aGluayB0aGF0IHJ0 ZV9mbG93X2l0ZW1fbWV0YSBzaG91bGQgYmUgZml4ZWQgc2luY2UgYm90aCBtYXJrDQo+ID4+IGFu ZCB0eF9tZXRhZGF0YSBhcmUgaG9zdC1lbmRpYW4uDQo+ID4+DQo+ID4+IChpdCBzYXlzIG5vdGhp bmcgYWJvdXQgSFcgaW50ZXJmYWNlIHdoaWNoIGlzIHZlbmRvciBzcGVjaWZpYyBhbmQNCj4gPj4g dmVuZG9yIFBNRHMgc2hvdWxkIGNhcmUgYWJvdXQgaXQpDQo+ID4gSGFuZGxpbmcgdGhpcyBpbiBQ TUQgbWlnaHQgaW50cm9kdWNlIHRoZSBleHRyYSBlbmRpYW5uZXNzIGNvbnZlcnNpb24NCj4gPiBp biBkYXRhcGF0aCwgaW1wYWN0aW5nIHBlcmZvcm1hbmNlLiBOb3QgbmljZSwgSU1PLg0KPiANCj4g VGhlc2UgY29uY2VybnMgc2hvdWxkIG5vdCBhZmZlY3QgZXh0ZXJuYWwgaW50ZXJmYWNlIHNpbmNl IGl0IGNvdWxkIGJlDQo+IGRpZmZlcmVudCBmb3IgZGlmZmVyZW50IEhXIHZlbmRvcnMuDQoNCk9L LCB3aWxsIGFsdGVyIG1ldGFkYXRhIGVuZGlhbm5lc3MgdG8gaG9zdCBvbmUuIFRoZXJlIElzIHVu ZGVmZWF0YWJsZSBhcmd1bWVudA0KdGhlIG90aGVyIFtNRVRBXSBpdGVtcy9hY3Rpb25zIGFyZSBh bGwgaW4gSEUuDQoNCldpdGggYmVzdCByZWdhcmRzLCBTbGF2YQ0K