From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 74AA4A00BE; Wed, 16 Feb 2022 23:17:36 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 215B040150; Wed, 16 Feb 2022 23:17:36 +0100 (CET) Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2074.outbound.protection.outlook.com [40.107.236.74]) by mails.dpdk.org (Postfix) with ESMTP id 0637B40042 for ; Wed, 16 Feb 2022 23:17:34 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XuPkUNCD35e2ekt+o5NmDQz7Yxrdt2TIr3FJB8w+aqxDCf4dHATS8ReSkFaKRcr1MHwlaXs3SkdPwGoe+9lSmxX7cW/MdAwsve8Zsb3SMVD02Gcfnm9rarBPB/IA5jThnWL/5uZQOtDLBnLXVi1WAPdxYfuVTQJn0I8DzawGDO1rU0zKfTiLNCIhk3fRjYZwd91CHefXdlN1Kc1U09mBy/Gi5OlO7zhc5/xL3T9Ka9Q3Cd0z5uoUyjDFR/FIzag87DNz6FaMWk1iXp1ZgNvjS/UHjiAFN2l1galwLpqoxHyhcor3mEaoLapzwvfVo3mFn4ZVtsotKVxihpmXk3Eoew== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ibYehMU4oyPM6wSBNbPWOWBUzR1tkDbaSWezV0gz35E=; b=SwIvrgJiJOffB7g5vQdjbxANXuNncF8JrEB167bJe+rOrLJjEbCZ1ZHRTe28dn8evb8iLuzKTNJT3aZYGTNGZoPVTucN0YG3QmM3NIMsB/vatA5cJVpeo1OzoElA2II037JGRM/G5wJXpHyoWj3AoynGUIjXqxroEaNX3KAgbRUVK96oZodRUsDjnQbfvlyXk7Aiq6T0azJ5+MBPv1nPgZcqi8cupn1nytM6cIkwc9gHLR5kNY2BT8u2hS24JgO6GQDqwPI25ToijLM45Pqv8wNNXp1doeJbUSY1kOwCDIaoig0Us34z9ByyDlEIeMfUKRv8CPeJeYRkKDLnLOHQEw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ibYehMU4oyPM6wSBNbPWOWBUzR1tkDbaSWezV0gz35E=; b=FLRMpwGd+AGRuyeXN+rdwd771KPDm0ZvwStV3wY5OkoCRkJVcHjv/L6DijyqEKUXhQJ09CRww0XVrRvxiRT4aQDG/mpHDneGkq8//aIA7rL78mEJPUbmoCd13D/IOiaUqnFK2sP4KnkGB24NH5hwCyLTjFHQ7HPS8mm/4Adlb2VmI8xV326ob9qHd1Y+cZ6EjRC4L/UpTN5djjnjq9d7l3Ka0fHL4IKVnbsVdb4yMd9XpGHWF1ujZxr1pXkh+R7et/Xfk08n0Sptzijv1yr/EenSmQOJ/KU5WwPrSgGrt8RUPrqWBz19sTqK3VaNDTYGSZFfLcnHBuTpBgmNILKI3w== Received: from BN6PR12MB1698.namprd12.prod.outlook.com (2603:10b6:404:106::7) by PH7PR12MB5712.namprd12.prod.outlook.com (2603:10b6:510:1e3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.16; Wed, 16 Feb 2022 22:17:31 +0000 Received: from DM5PR12MB2405.namprd12.prod.outlook.com (2603:10b6:4:b2::20) by BN6PR12MB1698.namprd12.prod.outlook.com (2603:10b6:404:106::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.15; Wed, 16 Feb 2022 22:17:30 +0000 Received: from DM5PR12MB2405.namprd12.prod.outlook.com ([fe80::cd5b:cd8d:cd38:8c31]) by DM5PR12MB2405.namprd12.prod.outlook.com ([fe80::cd5b:cd8d:cd38:8c31%6]) with mapi id 15.20.4995.016; Wed, 16 Feb 2022 22:17:30 +0000 From: Alexander Kozyrev To: Andrew Rybchenko , "dev@dpdk.org" CC: Ori Kam , "NBU-Contact-Thomas Monjalon (EXTERNAL)" , "ivan.malov@oktetlabs.ru" , "ferruh.yigit@intel.com" , "mohammad.abdul.awal@intel.com" , "qi.z.zhang@intel.com" , "jerinj@marvell.com" , "ajit.khaparde@broadcom.com" , "bruce.richardson@intel.com" Subject: RE: [PATCH v5 01/10] ethdev: introduce flow pre-configuration hints Thread-Topic: [PATCH v5 01/10] ethdev: introduce flow pre-configuration hints Thread-Index: AQHYHu74Fr2JrYUORU+YNesqTwDZ6KyOIxYAgACLEZCAB38ggIAAmDXg Date: Wed, 16 Feb 2022 22:17:30 +0000 Message-ID: References: <20220209213809.1208269-1-akozyrev@nvidia.com> <20220211022653.1372318-1-akozyrev@nvidia.com> <20220211022653.1372318-2-akozyrev@nvidia.com> <920abf38-3cb6-cea2-7667-f785becd0751@oktetlabs.ru> <982e92be-5e58-7e63-4bf4-7f095e45fcbd@oktetlabs.ru> In-Reply-To: <982e92be-5e58-7e63-4bf4-7f095e45fcbd@oktetlabs.ru> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ee2eddab-5203-4850-2c74-08d9f19a1f6e x-ms-traffictypediagnostic: BN6PR12MB1698:EE_|PH7PR12MB5712:EE_ x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: k9nQuk7vXrrCf4hsIwDXL9XUTpj4U6V1RrQgxiYI6nGsgp+G0ataV5eIWdm+UFhwLVe4acT5DqRXJ7Uq2LrDln8cNp2S+5GXgpEvgsN+MhiUsh6Dx3x28v/ZS6W139TxAw6Xqx9SO9Apw/y4y6OuEv7fnLslD5lx7SmgGm6Pshh409ltO3olpTm1Fu+PIM/2sQCk0JYEL79JgsuLPfZh8M7nkn2C5BMCDzSIbYj+R5CZVqw5L8Kqa5HSAKoW85L4Vjpk04kMgUE4UfzL3b+L1Hw70kH3SSCc2xjO9znAVqHCeRcOZxQ4AusyOL5mRTQ3lZMSC4dJdJz/jijBC+OsHmjwIfgE5XBoLDs3ejoaNha2QqiR9+7OWMYT5Loqn0EO7xUQL4AKPW/miIML+WfTzOWxNvnipK88h4pafFZLiF0aPNRPJaSr8iEskKEGzByrv3ZgcyymQWhL43Lpu9UQfL9Qiu+uIQjz/iuhrt3qE7WqKG3Bwfz2JcaFEjafNbsKv4qFlP2Aq6eFiw6nOFkZJRjKXsMrihNk8ObG7XJLOJ5Hq7MLFaojE3YHATR1CWDvydF3YkronE5eXdocNBTKSu8Ay6FWpq+wp004peDy5R/Y40M48+xE4zKPdKjDQPVqYuElDn52Pfnr4J20LOWh2DnbYRZILv3TUDQrZQYBVwew4srnaFk+ItlbXdPh0sh9NYTpwmxlpQ/enlcZktfERQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN6PR12MB1698.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(8936002)(7416002)(2906002)(38070700005)(52536014)(71200400001)(66946007)(8676002)(66476007)(66556008)(66446008)(64756008)(86362001)(4326008)(38100700002)(5660300002)(83380400001)(76116006)(55016003)(33656002)(186003)(508600001)(6506007)(122000001)(7696005)(316002)(110136005)(54906003)(9686003)(53546011); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NjUzYkdhRXBIQ3ZkU3lTZSt5b01NTHVMWHZnUzVPeElYRnQ1L1R1NlhWQ0or?= =?utf-8?B?b3IzVjlsUUY3QVBwTVBsYVZBbXdaSjFralVLd08zeGV1d0JDdmYxYU9xS3JB?= =?utf-8?B?Q081em0xQXM0OU9DUTB2Zm9CM2M1SXRKSm5hY2t1N1BsZm5Lanowci9FV2Fh?= =?utf-8?B?WVVTQU9TWmtGWk4wRmJzakJXUTdOdEs2QXYyYzEzTnVmWG1EU0FPWjBHdjJV?= =?utf-8?B?RzNURm9aNXo2VEhYOFREZ2U0SlcwU205Mm8vb3M0VTI0Tmo3YWF4RkNqbGhE?= =?utf-8?B?Umd0YzBCUHluczUrWmJnSFE3T3NjandNOE94U0cvWENjeFRsVjZQV01waW5J?= =?utf-8?B?N3RKNTRUOUU4K0dJQy9WZnN3bkhpZDV2Y1pWelJ4bUFzbWhiWm5EaDhQdkp3?= =?utf-8?B?UWhxZTd5cEk2SExpYjlTbzY0RWFqcmJuSkNCRkkzY2o3M3JteldtN1VKNGRX?= =?utf-8?B?R1JEUXRhem1pSzlwTGNhcW5HUEFHdG9NK0d5NGVEUUNleGQyVXJMVHA0TVFZ?= =?utf-8?B?TlUwUWU5L2lVVHpCWHhmcXNVQmEwMGtGYnMxYVY2bmRwVSsxOWdNdHduSlI2?= =?utf-8?B?ajM3QVNUTXM5M3VnSjJwc3V6VUJRcTN2d3pybVFuREphRVNyVkkzdGtSWXNn?= =?utf-8?B?K3VQY1h3MHlSWkNhOWVoT01WWHN6QzIvYm0vT1phaUhrYW5GQVFudFV1NUln?= =?utf-8?B?MVdlTitBSUw0d0ViUHM5M08vMk5XU3Q4WHhiM2dnV3J2emN2TW5NcnhkUUMx?= =?utf-8?B?eWQyVWVJVXcyU2NaaHdBeGNOVjBEK0FEbTVWWERvR3lUTzRMU25STEV5SjFQ?= =?utf-8?B?cGFkZEJ2ZEFIRWppQ2s5dnB3eVMvdUIrb2MwNHpUTHpKS3VGUWdDbUptZUF5?= =?utf-8?B?MVBPZFhEbDJPbDhUVjRCZitNeEJ5N0dSQXcrS1hhL2lNRmJvcTFjeWZockhn?= =?utf-8?B?NE53VGErRFplWjNTVUM2aVdCSTJDcE11Zm03STRzcmV3RVpTVVhUZW4yWmEw?= =?utf-8?B?ZGlubDlvbFk0VEp5N05LejBjYUZtQnNiMVg4a253MUtwU0RpdEtaSjloMDQ5?= =?utf-8?B?eHJhdjZnNGFIbE01cEtIbzRsaXNuTDdiallOQ0J4M3Q5dmEwWlFrTmJMak5G?= =?utf-8?B?UUUwanpYUk1mUGhzdERSTnJUejN3UlJlSk14blZYTExaYWl5blN0T1p0cDRQ?= =?utf-8?B?MlBiVk9mSmU4QzdYSE0xQ3k3Y1pwZy92K1JsbEs5dWZiWDNMQWdZcmZwQ3E2?= =?utf-8?B?d1FBQmhWT3N3UVBiWUVNa1Bza1piME9DSDhpOUtRdGl2aG8xcEdFQzZGZ3ZP?= =?utf-8?B?dVdrUVhhT3VQem9aa21LSlFncWNwbzYxbU9rbG5HTGU5enMxNDN2dm9EQ0ZT?= =?utf-8?B?VDlxQkNFdlorQUdZcGRjY1JaTVozS0pDRTk2dVJSdUsvNGthMlVJQmE3cXBJ?= =?utf-8?B?VW85U3lvUjMvT3ZiM3IwOWJZMVFUMlJjRVhxckZOTFF1T1B3OHJsWDRDeXps?= =?utf-8?B?NmcreUw5eVRCQlNQdWFNNHJ3UHNGbEF5czBpWTdSTTd4MUlOTWsvYVFoanVC?= =?utf-8?B?UVU4OUlWSmRQVUQ0VURkTkV5L0dGaEo0dTZYcGxWUDQ0VFhXeDc1Yk5xeUVJ?= =?utf-8?B?NHIxVm5yNytkK2FneTZqSlRBVVNod01UZDlrNW12bkhCRkx4MDhyL1dLR2lv?= =?utf-8?B?Z3J4TUJReE9RUy80WDhubXJpSmhXbU1ScjZNaGZ3SEtZZEh6d0ZmQytmb3V2?= =?utf-8?B?dVlPZndjZFBtbnQ0THdmc2hYK0pXd0lNUWhsRjNFVGZwcGFUOXk5QTkySlpU?= =?utf-8?B?OUhsaEIrNXBTN2FoeHZGaGJIYUFTLzZBRUMrcXdReWlxbmMzOHNHTi9FLzdM?= =?utf-8?B?ekZ6aG9Jd0Rhang0c2FxRTU5QUdnZHIvSnBOQ244RWxURkkvUlArU0Qwbmkx?= =?utf-8?B?OHh3dHJvaEtVcWZ6b2tZbzZTNnBOdGw4TmJWOFNOUHJOblBoWkg1MFphbHJ2?= =?utf-8?B?SXQvOVIzajljd1FxYVhMaFZWamZwbXNGMWJjcXZUMlFDSGV1aHNZeUpmTVM0?= =?utf-8?B?VkpjNlZJVUtYLzhLTFJmNE0zUmlzWmFTUXQxSFN3bEQrTTdURjU5eGNJeUtH?= =?utf-8?B?QmVZTmNCekNxOTZYODlQM0xRZS9kWFFqK2pIYTZ4cnRaZnEwWWxweURFU2F5?= =?utf-8?B?aEJZSHJTU1NvMG1sV3pDVXNTQmsxR2srZ0xoQ05ZTDNBUDZ5ZGVlcGdBV21B?= =?utf-8?Q?+BxtB0sm/07JKWv8I4+plVOmNzTvRMBq3K1ctC5ePk=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM5PR12MB2405.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ee2eddab-5203-4850-2c74-08d9f19a1f6e X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Feb 2022 22:17:30.3270 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: GR9pAtE20u8cg0GlYBj+fWwNTUjTLRgKED5B8G1XfBO1Rx8b6pzHHNAVKGrBBEMLguoIRmUNxFlmqPMMtsSkGA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5712 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org T24gV2VkLCBGZWIgMTYsIDIwMjIgODowMyBBbmRyZXcgUnliY2hlbmtvIDxhbmRyZXcucnliY2hl bmtvQG9rdGV0bGFicy5ydT46DQo+IE9uIDIvMTEvMjIgMjE6NDcsIEFsZXhhbmRlciBLb3p5cmV2 IHdyb3RlOg0KPiA+IE9uIEZyaWRheSwgRmVicnVhcnkgMTEsIDIwMjIgNToxNyBBbmRyZXcgUnli Y2hlbmtvDQo+IDxhbmRyZXcucnliY2hlbmtvQG9rdGV0bGFicy5ydT4gd3JvdGU6DQo+ID4+IFNl bnQ6IEZyaWRheSwgRmVicnVhcnkgMTEsIDIwMjIgNToxNw0KPiA+PiBUbzogQWxleGFuZGVyIEtv enlyZXYgPGFrb3p5cmV2QG52aWRpYS5jb20+OyBkZXZAZHBkay5vcmcNCj4gPj4gQ2M6IE9yaSBL YW0gPG9yaWthQG52aWRpYS5jb20+OyBOQlUtQ29udGFjdC1UaG9tYXMgTW9uamFsb24NCj4gKEVY VEVSTkFMKQ0KPiA+PiA8dGhvbWFzQG1vbmphbG9uLm5ldD47IGl2YW4ubWFsb3ZAb2t0ZXRsYWJz LnJ1Ow0KPiBmZXJydWgueWlnaXRAaW50ZWwuY29tOw0KPiA+PiBtb2hhbW1hZC5hYmR1bC5hd2Fs QGludGVsLmNvbTsgcWkuei56aGFuZ0BpbnRlbC5jb207DQo+IGplcmluakBtYXJ2ZWxsLmNvbTsN Cj4gPj4gYWppdC5raGFwYXJkZUBicm9hZGNvbS5jb207IGJydWNlLnJpY2hhcmRzb25AaW50ZWwu Y29tDQo+ID4+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjUgMDEvMTBdIGV0aGRldjogaW50cm9kdWNl IGZsb3cgcHJlLWNvbmZpZ3VyYXRpb24NCj4gaGludHMNCj4gPj4NCj4gPj4gT24gMi8xMS8yMiAw NToyNiwgQWxleGFuZGVyIEtvenlyZXYgd3JvdGU6DQo+ID4+PiBUaGUgZmxvdyBydWxlcyBjcmVh dGlvbi9kZXN0cnVjdGlvbiBhdCBhIGxhcmdlIHNjYWxlIGluY3VycyBhIHBlcmZvcm1hbmNlDQo+ ID4+PiBwZW5hbHR5IGFuZCBtYXkgbmVnYXRpdmVseSBpbXBhY3QgdGhlIHBhY2tldCBwcm9jZXNz aW5nIHdoZW4gdXNlZA0KPiA+Pj4gYXMgcGFydCBvZiB0aGUgZGF0YXBhdGggbG9naWMuIFRoaXMg aXMgbWFpbmx5IGJlY2F1c2Ugc29mdHdhcmUvaGFyZHdhcmUNCj4gPj4+IHJlc291cmNlcyBhcmUg YWxsb2NhdGVkIGFuZCBwcmVwYXJlZCBkdXJpbmcgdGhlIGZsb3cgcnVsZSBjcmVhdGlvbi4NCj4g Pj4+DQo+ID4+PiBJbiBvcmRlciB0byBvcHRpbWl6ZSB0aGUgaW5zZXJ0aW9uIHJhdGUsIFBNRCBt YXkgdXNlIHNvbWUgaGludHMNCj4gcHJvdmlkZWQNCj4gPj4+IGJ5IHRoZSBhcHBsaWNhdGlvbiBh dCB0aGUgaW5pdGlhbGl6YXRpb24gcGhhc2UuIFRoZSBydGVfZmxvd19jb25maWd1cmUoKQ0KPiA+ Pj4gZnVuY3Rpb24gYWxsb3dzIHRvIHByZS1hbGxvY2F0ZSBhbGwgdGhlIG5lZWRlZCByZXNvdXJj ZXMgYmVmb3JlaGFuZC4NCj4gPj4+IFRoZXNlIHJlc291cmNlcyBjYW4gYmUgdXNlZCBhdCBhIGxh dGVyIHN0YWdlIHdpdGhvdXQgY29zdGx5IGFsbG9jYXRpb25zLg0KPiA+Pj4gRXZlcnkgUE1EIG1h eSB1c2Ugb25seSB0aGUgc3Vic2V0IG9mIGhpbnRzIGFuZCBpZ25vcmUgdW51c2VkIG9uZXMgb3IN Cj4gPj4+IGZhaWwgaW4gY2FzZSB0aGUgcmVxdWVzdGVkIGNvbmZpZ3VyYXRpb24gaXMgbm90IHN1 cHBvcnRlZC4NCj4gPj4+DQo+ID4+PiBUaGUgcnRlX2Zsb3dfaW5mb19nZXQoKSBpcyBhdmFpbGFi bGUgdG8gcmV0cmlldmUgdGhlIGluZm9ybWF0aW9uIGFib3V0DQo+ID4+PiBzdXBwb3J0ZWQgcHJl LWNvbmZpZ3VyYWJsZSByZXNvdXJjZXMuIEJvdGggdGhlc2UgZnVuY3Rpb25zIG11c3QgYmUNCj4g Y2FsbGVkDQo+ID4+PiBiZWZvcmUgYW55IG90aGVyIHVzYWdlIG9mIHRoZSBmbG93IEFQSSBlbmdp bmUuDQo+ID4+Pg0KPiA+Pj4gU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEtvenlyZXYgPGFrb3p5 cmV2QG52aWRpYS5jb20+DQo+ID4+PiBBY2tlZC1ieTogT3JpIEthbSA8b3Jpa2FAbnZpZGlhLmNv bT4NCj4gDQo+IFtzbmlwXQ0KPiANCj4gPj4+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L3J0ZV9m bG93LmMgYi9saWIvZXRoZGV2L3J0ZV9mbG93LmMNCj4gPj4+IGluZGV4IGE5M2Y2OGFiYmMuLjY2 NjE0YWUyOWIgMTAwNjQ0DQo+ID4+PiAtLS0gYS9saWIvZXRoZGV2L3J0ZV9mbG93LmMNCj4gPj4+ ICsrKyBiL2xpYi9ldGhkZXYvcnRlX2Zsb3cuYw0KPiA+Pj4gQEAgLTEzOTEsMyArMTM5MSw0MyBA QCBydGVfZmxvd19mbGV4X2l0ZW1fcmVsZWFzZSh1aW50MTZfdCBwb3J0X2lkLA0KPiA+Pj4gICAg CXJldCA9IG9wcy0+ZmxleF9pdGVtX3JlbGVhc2UoZGV2LCBoYW5kbGUsIGVycm9yKTsNCj4gPj4+ ICAgIAlyZXR1cm4gZmxvd19lcnIocG9ydF9pZCwgcmV0LCBlcnJvcik7DQo+ID4+PiAgICB9DQo+ ID4+PiArDQo+ID4+PiAraW50DQo+ID4+PiArcnRlX2Zsb3dfaW5mb19nZXQodWludDE2X3QgcG9y dF9pZCwNCj4gPj4+ICsJCSAgc3RydWN0IHJ0ZV9mbG93X3BvcnRfaW5mbyAqcG9ydF9pbmZvLA0K PiA+Pj4gKwkJICBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKQ0KPiA+Pj4gK3sNCj4gPj4+ ICsJc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYgPSAmcnRlX2V0aF9kZXZpY2VzW3BvcnRfaWRdOw0K PiA+Pj4gKwljb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfb3BzICpvcHMgPSBydGVfZmxvd19vcHNfZ2V0 KHBvcnRfaWQsIGVycm9yKTsNCj4gPj4+ICsNCj4gPj4+ICsJaWYgKHVubGlrZWx5KCFvcHMpKQ0K PiA+Pj4gKwkJcmV0dXJuIC1ydGVfZXJybm87DQo+ID4+PiArCWlmIChsaWtlbHkoISFvcHMtPmlu Zm9fZ2V0KSkgew0KPiA+Pg0KPiA+PiBleHBlY3RlZCBldGhkZXYgc3RhdGUgbXVzdCBiZSB2YWxp ZGF0ZWQuIEp1c3QgY29uZmlndXJlZD8NCj4gPj4NCj4gPj4+ICsJCXJldHVybiBmbG93X2Vycihw b3J0X2lkLA0KPiA+Pj4gKwkJCQlvcHMtPmluZm9fZ2V0KGRldiwgcG9ydF9pbmZvLCBlcnJvciks DQo+ID4+DQo+ID4+IHBvcnRfaW5mbyBtdXN0IGJlIGNoZWNrZWQgdnMgTlVMTA0KPiA+DQo+ID4g V2UgZG9u4oCZdCBoYXZlIGFueSBOVUxMIGNoZWNrcyBmb3IgcGFyYW1ldGVycyBpbiB0aGUgd2hv bGUgcmV0IGZsb3cgQVBJDQo+IGxpYnJhcnkuDQo+ID4gU2VlIHJ0ZV9mbG93X2NyZWF0ZSgpIGZv ciBleGFtcGxlLiBhdHRyaWJ1dGVzLCBwYXR0ZXJuIGFuZCBhY3Rpb25zIGFyZQ0KPiBwYXNzZWQg dG8gUE1EIHVuY2hlY2tlZC4NCj4gDQo+IElNSE8gaXQgaXMgaGFyZGx5IGEgZ29vZCByZWFzb24g dG8gaGF2ZSBubyBzdWNoIGNoZWNrIGhlcmUuDQo+IFRoZSBBUEkgaXMgcHVyZSBjb250cm9sIHBh dGguIFNvLCBpdCBtdXN0IHZhbGlkYXRlIGFsbCBpbnB1dA0KPiBhcmd1bWVudHMgYW5kIGl0IGlz IGJldHRlciB0byBkbyBpdCBpbiBhIGdlbmVyaWMgcGxhY2UuDQoNCkFncmVlLCBJIGhhdmUgbm8g b2JqZWN0aW9ucyB0byBpbnRyb2R1Y2UgdGhlc2UgdmFsaWRhdGlvbiBjaGVja3Mgb24gY29udHJv bCBwYXRoLg0KTXkgb25seSBjb25jZXJuIGlzIHRoZSBkYXRhLXBhdGggcGVyZm9ybWFuY2UsIHNv IEknbSByZWx1Y3RhbnQgdG8gYWRkIHRoZW0gdG8NCnJ0ZV9mbG93X3FfY3JlYXRlL2Rlc3Ryb3kg ZnVuY3Rpb25zLiBCdXQgbGV0J3MgYWRkIE5VTEwgY2hlY2tzIHRvIGNvbmZpZ3VyYXRpb24NCnJv dXRpbmVzLCBvaz8NCg0KPiA+Pj4gKwkJCQllcnJvcik7DQo+ID4+PiArCX0NCj4gPj4+ICsJcmV0 dXJuIHJ0ZV9mbG93X2Vycm9yX3NldChlcnJvciwgRU5PVFNVUCwNCj4gPj4+ICsJCQkJICBSVEVf RkxPV19FUlJPUl9UWVBFX1VOU1BFQ0lGSUVELA0KPiA+Pj4gKwkJCQkgIE5VTEwsIHJ0ZV9zdHJl cnJvcihFTk9UU1VQKSk7DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gK2ludA0KPiA+Pj4gK3J0 ZV9mbG93X2NvbmZpZ3VyZSh1aW50MTZfdCBwb3J0X2lkLA0KPiA+Pj4gKwkJICAgY29uc3Qgc3Ry dWN0IHJ0ZV9mbG93X3BvcnRfYXR0ciAqcG9ydF9hdHRyLA0KPiA+Pj4gKwkJICAgc3RydWN0IHJ0 ZV9mbG93X2Vycm9yICplcnJvcikNCj4gPj4+ICt7DQo+ID4+PiArCXN0cnVjdCBydGVfZXRoX2Rl diAqZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gPj4+ICsJY29uc3Qgc3RydWN0 IHJ0ZV9mbG93X29wcyAqb3BzID0gcnRlX2Zsb3dfb3BzX2dldChwb3J0X2lkLCBlcnJvcik7DQo+ ID4+PiArDQo+ID4+PiArCWlmICh1bmxpa2VseSghb3BzKSkNCj4gPj4+ICsJCXJldHVybiAtcnRl X2Vycm5vOw0KPiA+Pj4gKwlpZiAobGlrZWx5KCEhb3BzLT5jb25maWd1cmUpKSB7DQo+ID4+DQo+ ID4+IFRoZSBBUEkgbXVzdCB2YWxpZGF0ZSBldGhkZXYgc3RhdGUuIGNvbmZpZ3VyZWQgYW5kIG5v dCBzdGFydGVkPw0KPiA+IEFnYWluLCB3ZSBoYXZlIG5vIHN1Y2ggdmFsaWRhdGlvbiBmb3IgYW55 IHJ0ZSBmbG93IEFQSSB0b2RheS4NCj4gDQo+IFNhbWUgaGVyZS4gSWYgZG9jdW1lbnRhdGlvbiBk ZWZpbmVzIGluIHdoaWNoIHN0YXRlIHRoZSBBUEkNCj4gc2hvdWxkIGJlIGNhbGxlZCwgZ2VuZXJp YyBjb2RlIG11c3QgZ3VhcmFudGVlIGl0Lg0KDQpPaywgYXMgbG9uZyBhcyBpdCBzdGF5cyBpbiB0 aGUgY29uZmlndXJhdGlvbiBwaGFzZSBvbmx5Lg0KDQo+ID4+DQo+ID4+PiArCQlyZXR1cm4gZmxv d19lcnIocG9ydF9pZCwNCj4gPj4+ICsJCQkJb3BzLT5jb25maWd1cmUoZGV2LCBwb3J0X2F0dHIs IGVycm9yKSwNCj4gPj4NCj4gPj4gcG9ydF9hdHRyIG11c3QgYmUgY2hlY2tlZCB2cyBOVUxMDQo+ ID4gU2FtZS4NCj4gPg0KPiA+Pj4gKwkJCQllcnJvcik7DQo+ID4+PiArCX0NCj4gPj4+ICsJcmV0 dXJuIHJ0ZV9mbG93X2Vycm9yX3NldChlcnJvciwgRU5PVFNVUCwNCj4gPj4+ICsJCQkJICBSVEVf RkxPV19FUlJPUl9UWVBFX1VOU1BFQ0lGSUVELA0KPiA+Pj4gKwkJCQkgIE5VTEwsIHJ0ZV9zdHJl cnJvcihFTk9UU1VQKSk7DQo+ID4+PiArfQ0KPiA+Pj4gZGlmZiAtLWdpdCBhL2xpYi9ldGhkZXYv cnRlX2Zsb3cuaCBiL2xpYi9ldGhkZXYvcnRlX2Zsb3cuaA0KPiA+Pj4gaW5kZXggMTAzMWZiMjQ2 Yi4uOTJiZTJhOWE4OSAxMDA2NDQNCj4gPj4+IC0tLSBhL2xpYi9ldGhkZXYvcnRlX2Zsb3cuaA0K PiA+Pj4gKysrIGIvbGliL2V0aGRldi9ydGVfZmxvdy5oDQo+ID4+PiBAQCAtNDg1Myw2ICs0ODUz LDExNCBAQCBydGVfZmxvd19mbGV4X2l0ZW1fcmVsZWFzZSh1aW50MTZfdA0KPiBwb3J0X2lkLA0K PiA+Pj4gICAgCQkJICAgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW1fZmxleF9oYW5kbGUgKmhh bmRsZSwNCj4gPj4+ICAgIAkJCSAgIHN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJyb3IpOw0KPiA+ Pj4NCj4gPj4+ICsvKioNCj4gPj4+ICsgKiBAd2FybmluZw0KPiA+Pj4gKyAqIEBiIEVYUEVSSU1F TlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZS4NCj4gPj4+ICsg Kg0KPiA+Pj4gKyAqIEluZm9ybWF0aW9uIGFib3V0IGF2YWlsYWJsZSBwcmUtY29uZmlndXJhYmxl IHJlc291cmNlcy4NCj4gPj4+ICsgKiBUaGUgemVybyB2YWx1ZSBtZWFucyBhIHJlc291cmNlIGNh bm5vdCBiZSBwcmUtYWxsb2NhdGVkLg0KPiA+Pj4gKyAqDQo+ID4+PiArICovDQo+ID4+PiArc3Ry dWN0IHJ0ZV9mbG93X3BvcnRfaW5mbyB7DQo+ID4+PiArCS8qKg0KPiA+Pj4gKwkgKiBOdW1iZXIg b2YgcHJlLWNvbmZpZ3VyYWJsZSBjb3VudGVyIGFjdGlvbnMuDQo+ID4+PiArCSAqIEBzZWUgUlRF X0ZMT1dfQUNUSU9OX1RZUEVfQ09VTlQNCj4gPj4+ICsJICovDQo+ID4+PiArCXVpbnQzMl90IG5i X2NvdW50ZXJzOw0KPiA+Pg0KPiA+PiBOYW1lIHNheXMgdGhhdCBpdCBpcyBhIG51bWJlciBvZiBj b3VudGVycywgYnV0IGRlc2NyaXB0aW9uDQo+ID4+IHNheXMgdGhhdCBpdCBpcyBhYm91dCBhY3Rp b25zLg0KPiA+PiBBbHNvIEkgZG9uJ3QgdW5kZXJzdGFuZCB3aGF0IGRvZXMgInByZS1jb25maWd1 cmFibGUiIG1lYW4uDQo+ID4+IElzbid0IGl0IGEgbWF4aW11bSBudW1iZXIgb2YgYXZhaWxhYmxl IGNvdW50ZXJzPw0KPiA+PiBJZiBubywgaG93IGNhbiBJIGZpbmQgYSBtYXhpbXVtPw0KPiA+IEl0 IGlzIG51bWJlciBvZiBwcmUtYWxsb2NhdGVkIGFuZCBwcmUtY29uZmlndXJlZCBhY3Rpb25zLg0K PiA+IEhvdyBhcmUgdGhleSBwci1jb25maWd1cmVkIGlzIHVwIHRvIFBETSBkcml2ZXIuDQo+ID4g QnV0IGxldCdzIGNoYW5nZSB0byAicHJlLWNvbmZpZ3VyZWQiIGV2ZXJ5d2hlcmUuDQo+ID4gQ29u ZmlndXJhdGlvbiBpbmNsdWRlcyBzb21lIG1lbW9yeSBhbGxvY2F0aW9uIGFueXdheS4NCj4gDQo+ IFNvcnJ5LCBidXQgSSBzdGlsbCBkb24ndCB1bmRlcnN0YW5kLiBJIGd1ZXNzIEhXIGhhcw0KPiBh IGhhcmQgbGltaXQgb24gYSBudW1iZXIgb2YgY291bnRlcnMuIEhvdyBjYW4gSSBnZXQNCj4gdGhl IGluZm9ybWF0aW9uPw0KDQpTb3JyeSBmb3Igbm90IGJlaW5nIGNsZWFyLiBUaGVzZSBhcmUgcmVz b3VyY2VzL29iamVjdHMgbGltaXRhdGlvbi4NCkl0IG1heSBiZSB0aGUgaGFyZCBIVyBsaW1pdCBv biBudW1iZXIgb2YgY291bnRlciBvYmplY3RzLCBmb3IgZXhhbXBsZS4NCk9yIHRoZSBzeXN0ZW0g aGFzIGEgbGl0dGxlIG9mIG1lbW9yeSBhbmQgTklDIGlzIGNvbnN0cmFpbmVkIGluIG1lbW9yeQ0K aW4gaXRzIGF0dGVtcHQgdG8gY3JlYXRlIHRoZXNlIGNvdW50ZXIgb2JqZWN0cyBhcyBhbm90aGVy IGV4YW1wbGUuDQpJbiBhbnkgY2FzZSwgdGhlIGluZm9fZ2V0KCkgQVBJIHNob3VsZCByZXR1cm4g dGhlIGxpbWl0IHRvIGEgdXNlci4NCg0KPiA+Pg0KPiA+Pj4gKwkvKioNCj4gPj4+ICsJICogTnVt YmVyIG9mIHByZS1jb25maWd1cmFibGUgYWdpbmcgZmxvd3MgYWN0aW9ucy4NCj4gPj4+ICsJICog QHNlZSBSVEVfRkxPV19BQ1RJT05fVFlQRV9BR0UNCj4gPj4+ICsJICovDQo+ID4+PiArCXVpbnQz Ml90IG5iX2FnaW5nX2Zsb3dzOw0KPiA+Pg0KPiA+PiBTYW1lDQo+ID4gRGl0dG8uDQo+ID4NCj4g Pj4+ICsJLyoqDQo+ID4+PiArCSAqIE51bWJlciBvZiBwcmUtY29uZmlndXJhYmxlIHRyYWZmaWMg bWV0ZXJpbmcgYWN0aW9ucy4NCj4gPj4+ICsJICogQHNlZSBSVEVfRkxPV19BQ1RJT05fVFlQRV9N RVRFUg0KPiA+Pj4gKwkgKi8NCj4gPj4+ICsJdWludDMyX3QgbmJfbWV0ZXJzOw0KPiA+Pg0KPiA+ PiBTYW1lDQo+ID4gRGl0dG8uDQo+ID4NCj4gPj4+ICt9Ow0KPiA+Pj4gKw0KPiA+Pj4gKy8qKg0K PiA+Pj4gKyAqIEB3YXJuaW5nDQo+ID4+PiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBt YXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlLg0KPiA+Pj4gKyAqDQo+ID4+PiArICogUmV0 cmlldmUgY29uZmlndXJhdGlvbiBhdHRyaWJ1dGVzIHN1cHBvcnRlZCBieSB0aGUgcG9ydC4NCj4g Pj4NCj4gPj4gRGVzY3JpcHRpb24gc2hvdWxkIGJlIGEgYml0IG1vcmUgZmxvdyBBUEkgYXdhcmUu DQo+ID4+IFJpZ2h0IG5vdyBpdCBzb3VuZHMgdG9vIGdlbmVyaWMuDQo+ID4gT2ssIGhvdyBhYm91 dA0KPiA+ICJHZXQgaW5mb3JtYXRpb24gYWJvdXQgZmxvdyBlbmdpbmUgcHJlLWNvbmZpZ3VyYWJs ZSByZXNvdXJjZXMuIg0KPiA+DQo+ID4+PiArICoNCj4gPj4+ICsgKiBAcGFyYW0gcG9ydF9pZA0K PiA+Pj4gKyAqICAgUG9ydCBpZGVudGlmaWVyIG9mIEV0aGVybmV0IGRldmljZS4NCj4gPj4+ICsg KiBAcGFyYW1bb3V0XSBwb3J0X2luZm8NCj4gPj4+ICsgKiAgIEEgcG9pbnRlciB0byBhIHN0cnVj dHVyZSBvZiB0eXBlICpydGVfZmxvd19wb3J0X2luZm8qDQo+ID4+PiArICogICB0byBiZSBmaWxs ZWQgd2l0aCB0aGUgY29udGV4dHVhbCBpbmZvcm1hdGlvbiBvZiB0aGUgcG9ydC4NCj4gPj4+ICsg KiBAcGFyYW1bb3V0XSBlcnJvcg0KPiA+Pj4gKyAqICAgUGVyZm9ybSB2ZXJib3NlIGVycm9yIHJl cG9ydGluZyBpZiBub3QgTlVMTC4NCj4gPj4+ICsgKiAgIFBNRHMgaW5pdGlhbGl6ZSB0aGlzIHN0 cnVjdHVyZSBpbiBjYXNlIG9mIGVycm9yIG9ubHkuDQo+ID4+PiArICoNCj4gPj4+ICsgKiBAcmV0 dXJuDQo+ID4+PiArICogICAwIG9uIHN1Y2Nlc3MsIGEgbmVnYXRpdmUgZXJybm8gdmFsdWUgb3Ro ZXJ3aXNlIGFuZCBydGVfZXJybm8gaXMgc2V0Lg0KPiA+Pj4gKyAqLw0KPiA+Pj4gK19fcnRlX2V4 cGVyaW1lbnRhbA0KPiA+Pj4gK2ludA0KPiA+Pj4gK3J0ZV9mbG93X2luZm9fZ2V0KHVpbnQxNl90 IHBvcnRfaWQsDQo+ID4+PiArCQkgIHN0cnVjdCBydGVfZmxvd19wb3J0X2luZm8gKnBvcnRfaW5m bywNCj4gPj4+ICsJCSAgc3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnJvcik7DQo+ID4+PiArDQo+ ID4+PiArLyoqDQo+ID4+PiArICogQHdhcm5pbmcNCj4gPj4+ICsgKiBAYiBFWFBFUklNRU5UQUw6 IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ID4+PiArICoNCj4g Pj4+ICsgKiBSZXNvdXJjZSBwcmUtYWxsb2NhdGlvbiBhbmQgcHJlLWNvbmZpZ3VyYXRpb24gc2V0 dGluZ3MuDQo+ID4+DQo+ID4+IFdoYXQgaXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwcmUtYWxs b2NhdGlvbiBhbmQgcHJlLWNvbmZpZ3VyYXRpb24/DQo+ID4+IFdoeSBhcmUgYm90aCBtZW50aW9u ZWQgYWJvdmUsIGJ1dCBqdXN0IHByZS1jb25maWd1cmVkIGFjdGlvbnMgYXJlDQo+ID4+IG1lbnRp b25lZCBiZWxvdz8NCj4gPiBQbGVhc2Ugc2VlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGFib3Zl Lg0KPiA+DQo+ID4+PiArICogVGhlIHplcm8gdmFsdWUgbWVhbnMgb24gZGVtYW5kIHJlc291cmNl IGFsbG9jYXRpb25zIG9ubHkuDQo+ID4+PiArICoNCj4gPj4+ICsgKi8NCj4gPj4+ICtzdHJ1Y3Qg cnRlX2Zsb3dfcG9ydF9hdHRyIHsNCj4gPj4+ICsJLyoqDQo+ID4+PiArCSAqIE51bWJlciBvZiBj b3VudGVyIGFjdGlvbnMgcHJlLWNvbmZpZ3VyZWQuDQo+ID4+PiArCSAqIEBzZWUgUlRFX0ZMT1df QUNUSU9OX1RZUEVfQ09VTlQNCj4gPj4+ICsJICovDQo+ID4+PiArCXVpbnQzMl90IG5iX2NvdW50 ZXJzOw0KPiA+Pj4gKwkvKioNCj4gPj4+ICsJICogTnVtYmVyIG9mIGFnaW5nIGZsb3dzIGFjdGlv bnMgcHJlLWNvbmZpZ3VyZWQuDQo+ID4+PiArCSAqIEBzZWUgUlRFX0ZMT1dfQUNUSU9OX1RZUEVf QUdFDQo+ID4+PiArCSAqLw0KPiA+Pj4gKwl1aW50MzJfdCBuYl9hZ2luZ19mbG93czsNCj4gPj4+ ICsJLyoqDQo+ID4+PiArCSAqIE51bWJlciBvZiB0cmFmZmljIG1ldGVyaW5nIGFjdGlvbnMgcHJl LWNvbmZpZ3VyZWQuDQo+ID4+PiArCSAqIEBzZWUgUlRFX0ZMT1dfQUNUSU9OX1RZUEVfTUVURVIN Cj4gPj4+ICsJICovDQo+ID4+PiArCXVpbnQzMl90IG5iX21ldGVyczsNCj4gPj4+ICt9Ow0KPiA+ Pj4gKw0KPiA+Pj4gKy8qKg0KPiA+Pj4gKyAqIEB3YXJuaW5nDQo+ID4+PiArICogQGIgRVhQRVJJ TUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlLg0KPiA+Pj4g KyAqDQo+ID4+PiArICogQ29uZmlndXJlIHRoZSBwb3J0J3MgZmxvdyBBUEkgZW5naW5lLg0KPiA+ Pj4gKyAqDQo+ID4+PiArICogVGhpcyBBUEkgY2FuIG9ubHkgYmUgaW52b2tlZCBiZWZvcmUgdGhl IGFwcGxpY2F0aW9uDQo+ID4+PiArICogc3RhcnRzIHVzaW5nIHRoZSByZXN0IG9mIHRoZSBmbG93 IGxpYnJhcnkgZnVuY3Rpb25zLg0KPiA+Pj4gKyAqDQo+ID4+PiArICogVGhlIEFQSSBjYW4gYmUg aW52b2tlZCBtdWx0aXBsZSB0aW1lcyB0byBjaGFuZ2UgdGhlDQo+ID4+PiArICogc2V0dGluZ3Mu IFRoZSBwb3J0LCBob3dldmVyLCBtYXkgcmVqZWN0IHRoZSBjaGFuZ2VzLg0KPiA+Pj4gKyAqDQo+ ID4+PiArICogUGFyYW1ldGVycyBpbiBjb25maWd1cmF0aW9uIGF0dHJpYnV0ZXMgbXVzdCBub3Qg ZXhjZWVkDQo+ID4+PiArICogbnVtYmVycyBvZiByZXNvdXJjZXMgcmV0dXJuZWQgYnkgdGhlIHJ0 ZV9mbG93X2luZm9fZ2V0IEFQSS4NCj4gPj4+ICsgKg0KPiA+Pj4gKyAqIEBwYXJhbSBwb3J0X2lk DQo+ID4+PiArICogICBQb3J0IGlkZW50aWZpZXIgb2YgRXRoZXJuZXQgZGV2aWNlLg0KPiA+Pj4g KyAqIEBwYXJhbVtpbl0gcG9ydF9hdHRyDQo+ID4+PiArICogICBQb3J0IGNvbmZpZ3VyYXRpb24g YXR0cmlidXRlcy4NCj4gPj4+ICsgKiBAcGFyYW1bb3V0XSBlcnJvcg0KPiA+Pj4gKyAqICAgUGVy Zm9ybSB2ZXJib3NlIGVycm9yIHJlcG9ydGluZyBpZiBub3QgTlVMTC4NCj4gPj4+ICsgKiAgIFBN RHMgaW5pdGlhbGl6ZSB0aGlzIHN0cnVjdHVyZSBpbiBjYXNlIG9mIGVycm9yIG9ubHkuDQo+ID4+ PiArICoNCj4gPj4+ICsgKiBAcmV0dXJuDQo+ID4+PiArICogICAwIG9uIHN1Y2Nlc3MsIGEgbmVn YXRpdmUgZXJybm8gdmFsdWUgb3RoZXJ3aXNlIGFuZCBydGVfZXJybm8gaXMgc2V0Lg0KPiA+Pj4g KyAqLw0KPiA+Pj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+Pj4gK2ludA0KPiA+Pj4gK3J0ZV9m bG93X2NvbmZpZ3VyZSh1aW50MTZfdCBwb3J0X2lkLA0KPiA+Pj4gKwkJICAgY29uc3Qgc3RydWN0 IHJ0ZV9mbG93X3BvcnRfYXR0ciAqcG9ydF9hdHRyLA0KPiA+Pj4gKwkJICAgc3RydWN0IHJ0ZV9m bG93X2Vycm9yICplcnJvcik7DQo+ID4+PiArDQo+ID4+PiAgICAjaWZkZWYgX19jcGx1c3BsdXMN Cj4gPj4+ICAgIH0NCj4gPj4+ICAgICNlbmRpZg0KPiANCj4gW3NuaXBdDQo=