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 88873A00C2; Mon, 2 May 2022 21:12:51 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3175840C35; Mon, 2 May 2022 21:12:51 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2049.outbound.protection.outlook.com [40.107.223.49]) by mails.dpdk.org (Postfix) with ESMTP id D93364069D for ; Mon, 2 May 2022 21:12:49 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mfYnu8WLiSPlywj7GLYtyo74Evn0KNMldP9tQ9ZrJhggAiZMoOYa2kjD8ooT3zXDPR9/MtgGqvqhLwCu9wLHIAa7TYhuIH2Ny0jTtCREYuCIYv9lyjrzre3RZlNC/w9/EyLHJHChdq5nz/AuCL5eNkHccksJhPytKoDCykxihOWj3qKUmTZDgl4JNMuSn3mg797zfZhqtO2xemGaInWV6C1mJktBytyf9c4RFdTBil+aJm3eR5ak43P7ztB4n1SbSV8D/nUQS7rFpWRw/Fg5tU1jIFGRG0zfKMc90hzk5/UZfUV92LQV2L1zIDKqc7dErhz3A9P25z58+mykiaOEwg== 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=rGesw+v3j2Ju7jaOJvLkjxUFB9qGXaiVJA0E7tahbLo=; b=lA3XKQSxOMuCIVvL1C9jVI4XqUOkSDk4DphaMBgdAm+/4kjVWFIEuX5rE8XrS6L+psAMSAJyZBPWtEm6b1sUDfs8gdAACybqae3LTWwl3K+18BJzhlJ++PXhZOkfCcDbAOMdQX9yu2VLgqy7ZUL21pJ5BC+96qzbDsS9fTYgYluwMvf3Fca63vE3+8gvrNFUvbUJ4BY7c5ziiyqXAZYQR2Po8MW+/rDowcL/vtlMlQ22za5Z/L93mfP9aDUNYecoM04GU+J9zHHEZts1I4ijkoQty9sHTqZ0jNPF46n6KUIs7F1pSH7VSoxeD/WAoBHHPuKvgX3KZaoPoXHmnp15hA== 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=rGesw+v3j2Ju7jaOJvLkjxUFB9qGXaiVJA0E7tahbLo=; b=ELuea8BgvzkIARAtcWI0S6l2qj0w13VIFgK3NtCsbCgnHOVlXWNbWUMHDlJilq9UFfP6ebjP1DOT6ztIq9aW8X0VxtiTsKWdOKAy46WFPGbn2GpkJ+Us0fG0Wb0lrv0liumOKcjkp4AYqYJIqjk+A0uuHb6LtNfyM9vq2+KEE0S45uvnaEp9gpJhZVIZeHsMYWI30Mwv5pySl7ZmC20OpCi1atyuqrFJ9w5Urs0esq6O7lnE7QY+PTvL45YkSf+BCjurZrDf2Rc9hr02pfBRTurLKzRGGf1yGwpjZPcTNQn1OSMpEcydZz3zHltt+LQqn5oct0f1MvpuI7sh7uyaOg== Received: from DM5PR12MB2405.namprd12.prod.outlook.com (2603:10b6:4:b2::20) by MN0PR12MB5835.namprd12.prod.outlook.com (2603:10b6:208:37a::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.14; Mon, 2 May 2022 19:12:47 +0000 Received: from DM5PR12MB2405.namprd12.prod.outlook.com ([fe80::65cb:941f:347f:cc4f]) by DM5PR12MB2405.namprd12.prod.outlook.com ([fe80::65cb:941f:347f:cc4f%5]) with mapi id 15.20.5206.024; Mon, 2 May 2022 19:12:47 +0000 From: Alexander Kozyrev To: "Dumitrescu, Cristian" , Jerin Jacob CC: dpdk-dev , Ori Kam , "NBU-Contact-Thomas Monjalon (EXTERNAL)" , Ivan Malov , Andrew Rybchenko , "Yigit, Ferruh" , "Awal, Mohammad Abdul" , "Zhang, Qi Z" , Jerin Jacob , Ajit Khaparde , "Richardson, Bruce" Subject: RE: [RFC] ethdev: datapath-focused meter actions Thread-Topic: [RFC] ethdev: datapath-focused meter actions Thread-Index: AQHYSvL6WOM8SoR20UuGxGG891pGUqzlrVMAgBykFYCACbh4kA== Date: Mon, 2 May 2022 19:12:47 +0000 Message-ID: References: <20220408024658.2004918-1-akozyrev@nvidia.com> In-Reply-To: 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: 33badf6a-fdaa-4ecb-3eb1-08da2c6fbe86 x-ms-traffictypediagnostic: MN0PR12MB5835:EE_ x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: uNETpBANXdPW+DIWQim0xVMIhXW1XA7vLsORcdOhox5ivFhKv/ixZ9lozVH5PrujaL30TcBSQX52Us8U8sFHLqDb7JlToL7e1EIrCljdlNeBCLK0yyHotbKEyO/Xcm0HD9UH5fyrjLTya6zXNMioeJJiOwdUfBK/Hdi1/0tCHIVvl16hKIhXgBgujDAYmvRtfO2NhEZMgs/OJoy94ZhicE1694EMuEIPuRYbxxNUDKwFD55EZA5uvY/1MntFKzpQuU0KpqDUtj5SyfweI5WfaSnlCpBFNKVS0aWpCU7c+XmFP3XzWldHhoV0ZO9Tj3AV7PKfxACPoqT06dEler4ijKgsbUYrOZ+J5F3q9O1YAwRDyUX2FmuPQv2CvNFg7hWoO+luLWQKIdm3cQBz52ud6t4XAh7w6sY11eiRhQzCrnM2UEEIs3IdPTQnf4kWkbgxRMrOYT/4NoLwIOQphwxFRi2fm0xhZsFJunRj+ZQi+gC6I1JyWeFIm33OziEXBksKI/A9B/5HNg6ZgqWSbdfJY57mNz/vZTRArfUOXCaVq6E3AdO7gchTqTskC46GxcSGU6PBEgE2kZ/AUYvsvd0wibNS1WbL6I/v5LZtYZvdCDKzxOw3Tg2Z8bZhsvJvdWTGOl+QNKQnYeJRPe1vcCqzy0BcoF8vnRbyLHPkdsd4NxI38uLh+y8xJLc306uEnKfO4K7UKrPXslDHBzVFAwoKKg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM5PR12MB2405.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(26005)(6506007)(7696005)(9686003)(5660300002)(186003)(83380400001)(30864003)(7416002)(8936002)(64756008)(8676002)(4326008)(66446008)(66476007)(86362001)(33656002)(66556008)(55016003)(2906002)(508600001)(71200400001)(54906003)(76116006)(110136005)(66946007)(316002)(38100700002)(122000001)(38070700005)(52536014); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?U0hPM0xjZGhpNENmeVk0bHRIbkhvZVZvMmFtRWcxbDVGRDl6U1BrOUFZSCto?= =?utf-8?B?aStNTGhTRmNBendmdnJDUXhIV0k3UjJWdkY3NEFDZUZPeTlUZjVyOVYyK0pn?= =?utf-8?B?UFdZZTZXN0xlZzh1b05SSmp5U1Q5SVRZZ0k1WnFaTmdrRnBOMno4QUVkQXRU?= =?utf-8?B?K0pQWHBPQ1liUy9sOW8yWVliL3FQaWpKWlY1b1dpQU85bVM4T1l4SVNiUE12?= =?utf-8?B?UU90bnd3Uzg5a1NHdUEwajRmYWdRY0dpRTd2dStibE9JQnd4SlhqUFRMdjlY?= =?utf-8?B?Q2RyVUkxcXZ3bkdTa1ZuWVVXWE5ZV2dmeDVXVyt3d2ZXSjZ6ZTB3dkhVQWN1?= =?utf-8?B?VVZwanpOa2VtTDhFd2ttWVM4VFVQeWhFUGNEMkVxZS9rMUJ0eVdRSG5seFg3?= =?utf-8?B?ZXhHQVgraGN3SnRIY0pTQk9BblRoZkZWM3gvWW91S3VyM25IL1BXamQwN2t1?= =?utf-8?B?NHkvbm5qYk5ZTEZ5N2hFdzZ6NDRjeERrc0FjTFFoUm1pTFpEWkczQTZiZWhE?= =?utf-8?B?K2xiak1JZkNWaDdjK3kvQmc2MHBNTHpGK29HS1VKb2VVb2puMXdPbktMbFMw?= =?utf-8?B?T3orcVB4aTZKaHdIK3NNS1YwNGlSUHVPSEdmOUFld0tvZjhPZXcxVVZJN0ZZ?= =?utf-8?B?c0oyN2UxZkxVaHUrWUMrd0pyZEt6YUVmSTZXWDFtQjE1RHFUR3cwbmpBaHph?= =?utf-8?B?dDJkYzl5cm9lL09ndndUdUxibjhwWDJ6d3lXUzJuMkV2RHFXdEhGaVVIRURU?= =?utf-8?B?SUJIbkJpRExtRTArZTZqd3p6UXZZdkFOQ0ZHS0ZlWWY5dGdvSWNmVHZxWHZL?= =?utf-8?B?akFBZU5YNnk4U0x1NzZDc2txN0JLYmpHcHBodGJCS2hobjk0a2FETFlYVkFD?= =?utf-8?B?Ukx4Zy9IRXkrLzgrdDZBSGpwZEVhWGlqTDdRQkVxTm1ZbmJMMEg1WXA1VHNx?= =?utf-8?B?MllQNWhhTVVJelc2YlExTW14QS9hU0pjRzhzbndIcDJTNmI0a3dQanI1aG9Z?= =?utf-8?B?UUNhYUE5dDRnMDdsWGpoMFhlekZpUExEQXlaeGY2QUZQeXdKVFUwMjNFd2p1?= =?utf-8?B?amlnUGxnN2pzTm8yQkFXbjI0blNzN1RINkEydDVTYzF1QlllalFLOEpBMm13?= =?utf-8?B?TTFMOHh1UCtYUjdsZzhHR2YyYTNEaHEvVURneU5nQnpEUTVRSXhVVWNPZnor?= =?utf-8?B?cXozUENrUWpVbDlQWk1uRFpRRklNcStIL3BLSkNsbTRzdm5YQW90UGUzazFR?= =?utf-8?B?c0FlZjNSSitLY1h1Y1dHVTFZL3JVeFowY2ZPWXJmZ2lzV0szVlZQVWtIRCtD?= =?utf-8?B?KzZXdndUNnR1eDc3LzJVdjE0cERxVFVLQ2RBYVFkSDVNWHByZzdrT3lKYlpT?= =?utf-8?B?aGJjODJQNG5NQjZQRzMwUVpJTC9Bak5UWThVYnRtNnBtajBNbDhoa3c5UnR6?= =?utf-8?B?WWFJNnlOOU1Ra2JzTnRvZHV2LzUydURNeDJUOFhwbzM4d0cxWS9nRElranJZ?= =?utf-8?B?Z3JMbG5kS28xSTJyNGp1Rm10cXAvYzc0VjhuVDZEWk1NWEYxazlhKzg5NE5q?= =?utf-8?B?dUNleUQ5eG9reHBmUXNXTTl1cnpVRFljc2xsTk5YZFFsVE5ZSG8veHFkWWd5?= =?utf-8?B?ZjBLMHNaUjBZWWJuZDgxZGY2bzBtRUdGT3VjR25XakNzY2ZWVmdwaGo2MU5I?= =?utf-8?B?REl0K2picmU0NlFYR0Nmb1BvNlkxL2Erd0xFTm9ENW55VXJFYW1uN0Q4c1hk?= =?utf-8?B?UkV6SWFma1BJZG5xK3NDOW9CMVdNVE1nRGRTS0xlQVNyWk5ZTkwvTWl5K0lz?= =?utf-8?B?NFdiaCtNd3ppSnVoOGxldVBwZlVlQ1d5OWRMbHF4dUdYZFdQZEZIVUkwUDZk?= =?utf-8?B?TTN3VG4rUGMvbUErYlNwYitnL28yNVR5UHpZcG52K2RLTWhBY3dsa21VMWtt?= =?utf-8?B?TzdHQ3VXcEJqWjJyM09leE1wMWlQK1ZaRzJqc2Z3enFBd1FJRklGMGl2Nmg3?= =?utf-8?B?R2lOdXp1MmFncFNrc2ZlMGlrVlIrVVdJamxNUWp2ZGZZTlNOOGdXT2pKcmc5?= =?utf-8?B?SVdGLzNqTWVrRmR1VFJhZU01SDUxNEZ2blVheXh2bDRUTTZDZWl1VlByVko1?= =?utf-8?B?MUI1TUFBU05HcFlhRzB6cVdzeWE3L09LUnl1NUhCYWx2S2xFRk11RWxBczla?= =?utf-8?B?VG80U3hqcHVEdG1Ua1I3TWdGZ1ZxenYwUDNHeVU3OVpBQy9OanZFNVVKQm43?= =?utf-8?B?ZEhlcGxEbWVmSVo5WDRZL1ZvcTF6UDd3ZjFwaHVPZXhBZXFnZmpEbUZ5ckhw?= =?utf-8?B?dm5VdjJVMWMvOHIxeE4veTAvU2dlSXpKOXkvbHZ4eTROSFkxVnUrZz09?= 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: 33badf6a-fdaa-4ecb-3eb1-08da2c6fbe86 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2022 19:12:47.5494 (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: 1k9orURUz4gUxI5OGFLBV6aBslqjAmp1o6F1li6gpjot6cDFGElB8fWJiJc34n5x8SQZ72700Qde9tufrNKI3w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5835 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 T24gVHVlc2RheSwgQXByaWwgMjYsIDIwMjIgOTo0NCBEdW1pdHJlc2N1LCBDcmlzdGlhbiA8Y3Jp c3RpYW4uZHVtaXRyZXNjdUBpbnRlbC5jb20+Og0KPiBBZnRlciByZXZpZXdpbmcgdGhpcyBSRkMs IEkgaGF2ZSB0byBzYXkgdGhhdCB5b3VyIHByb3Bvc2FsIGlzIHZlcnkgdW5jbGVhciB0byBtZS4g SQ0KPiBkb24ndCB1bmRlcnN0YW5kIHdoYXQgaXMgdGhlIHByb2JsZW0geW91J3JlIHRyeWluZyB0 byBzb2x2ZSBhbmQgd2hhdCBleGFjdGx5IGlzDQo+IHRoYXQgeW91IGNhbm5vdCBkbyB3aXRoIHRo ZSBjdXJyZW50IG1ldGVyIGFuZCBmbG93IEFQSXMuDQo+IA0KPiBJIHN1Z2dlc3Qgd2UgZ2V0IHRv Z2V0aGVyIGZvciBhIGNvbW11bml0eSBjYWxsIHdpdGggYWxsIHRoZSBpbnRlcmVzdGVkIGZvbGtz DQo+IGludml0ZWQgaW4gb3JkZXIgdG8gZ2V0IG1vcmUgY2xhcml0eSBvbiB5b3VyIHByb3Bvc2Fs LCB0aGFuayB5b3UhDQoNCkNvbXBsZXRlbHkgYWdyZWUsIEkgc2NoZWR1bGVkIGEgZGlzY3Vzc2lv biBvbiBNYXkgMTAuDQoNCj4gPiA+IFRoZSBpbnRyb2R1Y3Rpb24gb2YgYXN5bmNocm9ub3VzIGZs b3cgcnVsZXMgb3BlcmF0aW9ucyBhbGxvd2VkIHVzZXJzDQo+ID4gPiB0byBjcmVhdGUvZGVzdHJv eSBmbG93IHJ1bGVzIGFzIHBhcnQgb2YgdGhlIGRhdGFwYXRoIHdpdGhvdXQgYmxvY2tpbmcNCj4g PiA+IG9uIEZsb3cgQVBJIGFuZCBzbG93aW5nIHRoZSBwYWNrZXQgcHJvY2Vzc2luZyBkb3duLg0K PiA+ID4NCj4gPiA+IFRoYXQgYXBwbGllcyB0byBldmVyeSBwb3NzaWJsZSBhY3Rpb24gdGhhdCBo YXMgbm8gcHJlcGFyYXRpb24gc3RlcHMuDQo+ID4gPiBVbmZvcnR1bmF0ZWx5LCBvbmUgbm90YWJs ZSBleGNlcHRpb24gaXMgdGhlIG1ldGVyIGFjdGlvbi4NCj4gPiA+IFRoZXJlIGlzIGEgc2VwYXJh dGUgQVBJIHRvIHByZXBhcmUgYSBtZXRlciBwcm9maWxlIGFuZCBhIG1ldGVyIHBvbGljeQ0KPiA+ ID4gYmVmb3JlIGFueSBtZXRlciBvYmplY3QgY2FuIGJlIHVzZWQgYXMgYSBmbG93IHJ1bGUgYWN0 aW9uLg0KPiANCj4gSSBkaXNhZ3JlZS4gQ3JlYXRpb24gb2YgbWV0ZXIgcG9saWNpZXMgYW5kIG1l dGVyIG9iamVjdHMgaXMgZGVjb3VwbGVkIGZyb20gdGhlDQo+IGZsb3cgY3JlYXRpb24uIE1ldGVy IHBvbGljaWVzIGFuZCBtZXRlciBvYmplY3RzIGNhbiBhbGwgYmUgY3JlYXRlZCBhdA0KPiBpbml0 aWFsaXphdGlvbiBvciBvbi10aGUtZmx5LCBhbmQgdGhlaXIgY3JlYXRpb24gZG9lcyBub3QgZGly ZWN0bHkgcmVxdWlyZSB0aGUgZGF0YQ0KPiBwbGFuZSB0byBiZSBzdG9wcGVkLg0KDQpVbmZvcnR1 bmF0ZWx5IHdlIGNhbm5vdCBjcmVhdGUgYWxsIG1ldGVyIG9iamVjdHMgYXQgdGhlIGluaXRpYWxp emF0aW9uIHN0YWdlDQpzaW5jZSBhbiBhcHBsaWNhdGlvbiBtYXkgbm90IGtub3cgdGhlIHNwbGl0 IGJldHdlZW4gdGhlIG1ldGVycywgcHJvZmlsZXMgYW5kIHBvbGljaWVzLg0KQW55IHBhcnRpY3Vs YXIgcHJvZmlsZSBhbmQvb3IgcG9saWN5IG1heSBiZSBjcmVhdGVkIGJhc2VkIG9uIDUtdHVwbGUs IGZvciBleGFtcGxlLg0KSW4gdGhpcyBjYXNlIGFkZGl0aW9uYWwgZGVsYXlzIGFyZSBpbnRyb2R1 Y2VkIGluIG9yZGVyIHRvIGZpbmQgdGhlIHByb3BlciBwcm9maWxlL3BvbGljeQ0KYW5kIHRvIGNy ZWF0ZSBtZXRlciBvYmplY3QgaWYgdGhleSB3ZXJlIG5vdCBjcmVhdGVkIGluIHRoZSBoYXJkd2Fy ZSBiZWZvcmUuDQoNCj4gUGxlYXNlIGV4cGxhaW4gd2hhdCBwcm9ibGVtIGFyZSB5b3UgdHJ5aW5n IHRvIGZpeCBoZXJlLiBJIHN1Z2dlc3QgeW91IHByb3ZpZGUgdGhlDQo+IHNlcXVlbmNlIGRpYWdy YW0gYW5kIHRlbGwgdXMgd2hlcmUgdGhlIHByb2JsZW0gaXMuDQoNCldlIGFyZSB0cnlpbmcgdG8g cmVtb3ZlIGFueSB1bm5lY2Vzc2FyeSBsYXRlbmNpZXMgaW4gY2FzZSB3aGVyZSBmbG93IHJ1bGVz IGFyZSBpbnNlcnRlZA0KYXMgcGFydCBvZiB0aGUgcGFja2V0IHByb2Nlc3NpbmcuIEFuIGFwcGxp Y2F0aW9uIHBhcnNlcyBhIHBhY2tldCwgYW5kLCBiYXNlZCBvbiBpdHMgY29udGVudCwNCmluc2Vy dHMgc29tZSBmbG93IHJ1bGUgdG8gdGhlIGhhcmR3YXJlLiBUaGlzIGFjdGlvbiBzaG91bGQgYmUg YXMgZmFzdCBhcyBwb3NzaWJsZSBpbiBvcmRlcg0Kbm90IHRvIHNsb3cgZG93biB0aGUgcGFja2V0 IHByb2Nlc3NpbmcuIEFueSBsb2NrcyB0byBmaW5kIG1ldGVyIG9iamVjdHMgb3IgYW55IHJlc291 cmNlDQphbGxvY2F0aW9ucyBzaG91bGQgYmUgb3B0aW1pemVkIG91dCBpZiBwb3NzaWJsZS4NCg0K PiA+ID4NCj4gPiA+IFRoZSBhcHBsaWNhdGlvbiBsb2dpYyBpcyB0aGUgZm9sbG93aW5nOg0KPiA+ ID4gMS4gcnRlX210cl9tZXRlcl9wcm9maWxlX2FkZCgpIGlzIGNhbGxlZCB0byBjcmVhdGUgdGhl IG1ldGVyIHByb2ZpbGUNCj4gPiA+IGZpcnN0IHRvIGRlZmluZSBob3cgdG8gY2xhc3NpZnkgaW5j b21pbmcgcGFja2V0cyBhbmQgdG8gYXNzaWduIGFuDQo+ID4gPiBhcHByb3ByaWF0ZSBjb2xvciB0 byB0aGVtLg0KPiA+ID4gMi4gcnRlX210cl9tZXRlcl9wb2xpY3lfYWRkKCkgaXMgaW52b2tlZCB0 byBkZWZpbmUgdGhlIGZhdGUgb2YgYSBwYWNrZXQsDQo+ID4gPiBiYXNlZCBvbiBpdHMgY29sb3Ig KHByYWN0aWNhbGx5IGNyZWF0aW5nIGZsb3cgcnVsZXMsIG1hdGNoaW5nIGNvbG9ycykuDQo+IA0K PiBOb3BlLCB0aGUgcG9saWN5IGFkZCBkb2VzIG5vdCBjcmVhdGUgYW55IGZsb3dzLiBJbiBmYWN0 LCBpdCBkb2VzIG5vdCBjcmVhdGUgYW55DQo+IG1ldGVyIG9iamVjdHMgZWl0aGVyLiBJdCBzaW1w bHkgZGVmaW5lcyBhIGNvbmZpZ3VyYXRpb24gcGF0dGVybiB0aGF0IGNhbiBiZSByZXVzZWQNCj4g bWFueSB0aW1lcyB3aGVuIG1ldGVyIG9iamVjdHMgYXJlIGNyZWF0ZWQgYWZ0ZXJ3YXJkcy4NCg0K VGhpcyBpcyB0cnVlIGZvciB0aGUgc29mdHdhcmUgaW1wbGVtZW50YXRpb24gb2YgdGhlIG1ldGVy aW5nIGxpYnJhcnkuDQpCdXQgTklDIGhhcyB0byBjcmVhdGUgc29tZSByZWFsIG9iamVjdHMgYXQg c29tZSBwb2ludCBpbiBjYXNlIG9mIGhhcmR3YXJlIGltcGxlbWVudGF0aW9uLg0KSW4gY2FzZSBv ZiBhIHBvbGljeSB0aGVyZSB3aWxsIGJlIHNvbWUgZmxvdyBydWxlcyBvZmZsb2FkZWQgdG8gdGhl IE5JQyBldmVudHVhbGx5Lg0KT2ZmbG9hZGluZyB0aG9zZSBydWxlcyB3aWxsIGNhdXNlIGFkZGl0 aW9uYWwgZGVsYXlzIGR1cmluZyB0aGUgZmlyc3QgdXNhZ2Ugb2YgdGhlIHBvbGljeS4NCg0KPiA+ ID4gMy4gcnRlX210cl9jcmVhdGUoKSBpcyB0aGVuIG5lZWRlZCB0byBzZWFyY2ggKHdpdGggbG9j a3MpIGZvciBwcmV2aW91c2x5DQo+ID4gPiBjcmVhdGVkIHByb2ZpbGUgYW5kIHBvbGljeSBpbiBv cmRlciB0byBjcmVhdGUgdGhlIG1ldGVyIG9iamVjdC4NCj4gDQo+IFRoZSBydGVfbXRyX2NyZWF0 ZSgpIGlzIG5vdCBjcmVhdGVkIGF0IHRoZSB0aW1lIHRoZSBmbG93IGlzIGNyZWF0ZWQsIGJ1dCBh dCBhIHByaW9yDQo+IGRlY291cGxlZCBtb21lbnQuIEkgZG9uJ3Qgc2VlIGFueSBpc3N1ZSBoZXJl Lg0KDQpJdCBtYXkgYmUgY3JlYXRlZCByaWdodCBiZWZvcmUgdGhlIGZsb3cgaXMgaW5zZXJ0ZWQs IGJhc2VkIG9uIHRoZSBwYWNrZXQgY29udGVudC4NCkFuIGFwcGxpY2F0aW9uIG1heSBzZWxlY3Qg ZGlmZmVyZW50IHByb2ZpbGUvcG9saWN5IGZvciBkaWZmZXJlbnQgNS10dXBsZSB2YWx1ZXMuDQoN Cj4gPiA+IDQuIHJ0ZV9mbG93X2NyZWF0ZSgpIGlzIG5vdyBmaW5hbGx5IGNhbiBiZSB1c2VkIHRv IHNwZWNpZnkgdGhlIGNyZWF0ZWQNCj4gPiA+IG1ldGVyIGFzIGFuIGFjdGlvbi4NCj4gPiA+DQo+ ID4gPiBUaGlzIGFwcHJvYWNoIGRvZXNuJ3QgZml0IGludG8gdGhlIGFzeW5jaHJvbm91cyBydWxl IGNyZWF0aW9uIG1vZGVsDQo+ID4gPiBhbmQgY2FuIGJlIGltcHJvdmVkIHdpdGggdGhlIGZvbGxv d2luZyBwcm9wb3NhbDoNCj4gDQo+IEFnYWluLCB0aGUgY3JlYXRpb24gb2YgbWV0ZXIgcG9saWNp ZXMgYW5kIG9iamVjdHMgaXMgZGVjb3VwbGVkIGZyb20gdGhlIGZsb3cNCj4gY3JlYXRpb247IGlu IGZhY3QsIHRoZSBtZXRlciBwb2xpY2llcyBhbmQgb2JqZWN0cyBtdXN0IGJlIGNyZWF0ZWQgYmVm b3JlIHRoZQ0KPiBmbG93cyB1c2luZyB0aGVtIGFyZSBjcmVhdGVkLg0KDQpBZ2FpbiwgdGhlIGRl Y2lzaW9uIG9uIHRoZSB3aGljaCBtZXRlciB0byB1c2UgbWF5IGJlIHRha2VuIG9ubHkgd2hlbiBh biBhcHAgc2VlcyB0aGUgcGFja2V0cy4NClRoYXQgaXMgdGhlIG1haW4gZm9jdXMgb2YgdGhpcyBS RkMsIHNwZWVkIHVwIHRoZXNlIGRlY2lzaW9ucyB3aXRoIGFsbCBwb3NzaWJsZSBtZWFucy4NCg0K PiA+ID4gMS4gQ3JlYXRpbmcgYSBwb2xpY3kgbWF5IGJlIHJlcGxhY2VkIHdpdGggdGhlIGNyZWF0 aW9uIG9mIGEgZ3JvdXAgd2l0aA0KPiA+ID4gdXAgdG8gMyBkaWZmZXJlbnQgcnVsZXMgZm9yIGV2 ZXJ5IGNvbG9yIHVzaW5nIGFzeW5jaHJvbm91cyBGbG93IEFQSS4NCj4gPiA+IFRoYXQgcmVxdWly ZXMgdGhlIGludHJvZHVjdGlvbiBvZiBhIG5ldyBwYXR0ZXJuIGl0ZW0gLSBtZXRlciBjb2xvci4N Cj4gPiA+IFRoZW4gY3JlYXRpb24gYSBmbG93IHJ1bGUgd2l0aCB0aGUgbWV0ZXIgbWVhbnMgYSBz aW1wbGUganVtcCB0byBhIGdyb3VwOg0KPiA+ID4gcnRlX2Zsb3dfYXN5bmNfY3JlYXRlKGdyb3Vw PTEsIHBhdHRlcm49Y29sb3IsIGFjdGlvbnM9Li4uKTsNCj4gPiA+IHJ0ZV9mbG93X2FzeW5jX2Ny ZWF0ZShncm91cD0wLCBwYXR0ZXJuPTUtdHVwbGUsDQo+ID4gPiAgICAgICAgICAgICAgICAgICAg ICAgYWN0aW9ucz1tZXRlcixqdW1wIGdyb3VwIDEpOw0KPiA+ID4gVGhpcyBhbGxvd3MgdG8gY2xh c3NpZnkgcGFja2V0cyBhbmQgYWN0IHVwb24gdGhlaXIgY29sb3IgY2xhc3NpZmljYXRpb25zLg0K PiA+ID4gVGhlIE1ldGVyIGFjdGlvbiBhc3NpZ25zIGEgY29sb3IgdG8gYSBwYWNrZXQgYW5kIGFu IGFwcHJvcHJpYXRlIGFjdGlvbg0KPiA+ID4gaXMgc2VsZWN0ZWQgYmFzZWQgb24gdGhlIE1ldGVy IGNvbG9yIGluIGdyb3VwIDEuDQo+ID4gPg0KPiANCj4gVGhlIG1ldGVyIG9iamVjdHMgcmVxdWly ZXMgYSByZWxhdGl2ZWx5IGNvbXBsZXggY29uZmlndXJhdGlvbiBwcm9jZWR1cmUuIFRoaXMgaXMN Cj4gb25lIG9mIHRoZSByZWFzb25zIG1ldGVycyBoYXZlIHRoZWlyIG93biBBUEksIHNvIHdlIGNh biBrZWVwIHRoYXQgY29tcGxleGl0eQ0KPiBhd2F5IGZyb20gdGhlIGZsb3cgQVBJLg0KDQpBZ3Jl ZSwgdGhlIGxvZ2ljIG9uIGhvdyB0byBjcmVhdGUgdGhlIHByb2ZpbGUgc3RheXMgaW4gdGhlIG1l dGVyIEFQSS4NCldlIGFyZSBtZXJlbHkgcHJvcG9zaW5nIGFkZGl0aW9uYWwgZmxleGliaWxpdHkg b24gaG93IGFuZCB3aGVuIHdlIGNhbiB1c2UgaXQuDQogDQo+IFlvdSBzZWVtIHRvIGluZGljYXRl IHRoYXQgeW91ciBkZXNpcmVkIGJlaGF2aW9yIGlzIHRvIGNyZWF0ZSB0aGUgbWV0ZXIgb2JqZWN0 cw0KPiB3aGVuIHRoZSBmbG93IGlzIGNyZWF0ZWQgcmF0aGVyIHRoYW4gaW4gYWR2YW5jZS4gRGlk IEkgZ2V0IGl0IGNvcnJlY3RseT8gVGhpcyBpcw0KPiBwb3NzaWJsZSB3aXRoIHRoZSBjdXJyZW50 IEFQSSBhcyB3ZWxsIGJ5IHNpbXBseSBjcmVhdGluZyB0aGUgbWV0ZXIgb2JqZWN0DQo+IGltbWVk aWF0ZWx5IGJlZm9yZSB0aGUgZmxvdyBnZXRzIGNyZWF0ZWQuDQoNClRoZXJlIGFyZSB0d28gc3Rh Z2VzIGZvciBtZXRlciBjcmVhdGlvbjogbWV0ZXIgYWxsb2NhdGlvbiBhbmQgbWV0ZXIgY29uZmln dXJhdGlvbi4NCk1ldGVyIGFsbG9jYXRpb24gY2FuIGJlIGRvbmUgYXQgdGhlIGFwcGxpY2F0aW9u IHN0YXJ0dXAgd2l0aCBydGVfZmxvd19jb25maWd1cmUoKS4NCkFuZCBtZXRlciBjb25maWd1cmF0 aW9uIHRoYXQgd2lsbCBiZSBkb25lIGR1cmluZyB0cmFmZmljIGFuZCB3ZSBuZWVkIHRoZW0gdG8g YmUgYXMgZmFzdCBhcyBwb3NzaWJsZS4NClNpbmNlIG5ldyBSVEUgZmxvdyBBUEkgaXMgbXVsdGkt dGhyZWFkZWQgd2l0aG91dCBsb2NrcywgYW5kIGFzeW5jaHJvbm91cyB3aGlsZSB0aGUgbWV0ZXIg b25lIGlzIG5vdA0KdGhpcyBtZWFucyB0aGF0IHRoZSBhcHBsaWNhdGlvbiB3aWxsIGJlIGJsb2Nr ZWQgZHVyaW5nIGl0cyBkYXRhcGF0aCBwcm9jZXNzaW5nLg0KDQo+IFN0aXRjaGluZyB0aGUgY3Jl YXRpb24gb2YgbmV3IG1ldGVyIG9iamVjdCB0byB0aGUgZmxvdyBjcmVhdGlvbiAoaWYgSSB1bmRl cnN0YW5kDQo+IHlvdXIgYXBwcm9hY2ggcmlnaHQpIGRvZSBub3QgYWxsb3cgZm9yIHNvbWUgaW1w b3J0YW50IGZlYXR1cmVzLCBzdWNoIGFzOg0KPiAtcmV1c2luZyBtZXRlciBvYmplY3RzIHRoYXQg d2VyZSBwcmV2aW91c2x5IGNyZWF0ZWQgYnkgcmVhc3NpZ25pbmcgdGhlbSB0byBhDQo+IGRpZmZl cmVudCBmbG93DQo+IC1oYXZpbmcgbXVsdGlwbGUgZmxvd3MgdXNlIHRoZSBzYW1lIHNoYXJlZCBt ZXRlci4NCg0KTm90IHRydWUsIHdoaWxlIHRoZSBjb25maWd1cmF0aW9uIGlzIGRvbmUgcGVyIGZs b3csIHdlIGNhbiBzdGlsbCBnaXZlIHRoZSBzYW1lIG1ldGVyIGlkLg0KQW5kIChwcm9maWxlID09 IG51bGwpIGluIHRoZSBtZXRlcl9leHQgYWN0aW9uIG1lYW5zIHRoYXQgdGhlIG1ldGVyIHdpbGwg YmUgc2hhcmVkLg0KDQo+ID4gPiAyLiBQcmVwYXJpbmcgYSBtZXRlciBvYmplY3Qgc2hvdWxkIGJl IHRoZSBwYXJ0IG9mIGZsb3cgcnVsZSBjcmVhdGlvbg0KPiANCj4gV2h5Pz8gUGxlYXNlIHRha2Ug c29tZSB0aW1lIHRvIGNsZWFybHkgZXhwbGFpbiB0aGlzLCB5b3VyIGVudGlyZSBwcm9wb3NhbCBz ZWVtcw0KPiB0byBiZSBwcmVkaWNhdGVkIG9uIHRoaXMgYXNzZXJ0aW9uIGJlaW5nIHRydWUuDQoN ClNpbmNlIHRoZSBwcm9maWxlIGFuZCBwb2xpY3kgYXJlIGRlcGVuZGVudCBvbiB0aGUgdHJhZmZp Yy4NCg0KPiA+ID4gYW5kIHVzZSB0aGUgc2FtZSBmbG93IHF1ZXVlIHRvIGJlbmVmaXQgZnJvbSBh c3luY2hyb25vdXMgb3BlcmF0aW9uczoNCj4gPiA+IHJ0ZV9mbG93X2FzeW5jX2NyZWF0ZShncm91 cD0wLCBwYXR0ZXJuPTUtdHVwbGUsDQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9u cz1tZXRlciBpZCAxIHByb2ZpbGUgcmZjMjY5NywganVtcCBncm91cCAxKTsNCj4gPiA+IENyZWF0 aW9uIG9mIHRoZSBtZXRlciBvYmplY3QgdGFrZXMgdGltZSBhbmQgZmxvdyBjcmVhdGlvbiBtdXN0 IHdhaXQNCj4gPiA+IHVudGlsIGl0IGlzIHJlYWR5IGJlZm9yZSBpbnNlcnRpbmcgdGhlIHJ1bGUu IFVzaW5nIHRoZSBzYW1lIHF1ZXVlIGFsbG93cw0KPiA+ID4gZW5zdXJpbmcgdGhhdC4gVGhlcmUg aXMgbm8gbmVlZCB0byBjcmVhdGUgYSBtZXRlciBvYmplY3Qgb3V0c2lkZSBvZiB0aGUNCj4gPiA+ IEZsb3cgQVBJLCBidXQgdGhpcyBhcHByb2FjaCB3b24ndCBhZmZlY3QgdGhlIG9sZCBNZXRlciBB UEkgaW4gYW55IHdheS4NCj4gPiA+DQo+ID4gPiAzLiBBbm90aGVyIHBvaW50IG9mIG9wdGltaXph dGlvbiBpcyB0byBwcmVwYXJlIGFsbCB0aGUgcmVzb3VyY2VzIG5lZWRlZA0KPiA+ID4gaW4gYWR2 YW5jZSBpbiBydGVfZmxvd19jb25maWd1cmUoKS4NCj4gDQo+IFRoaXMgc2VlbXMgdG8gZGlyZWN0 bHkgY29udHJhZGljdCB5b3UgcHJldmlvdXMgc3RhdGVtZW50IHRoYXQgbWV0ZXIgb2JqZWN0cw0K PiBuZWVkIHRvIGJlIGNyZWF0ZWQgYXQgdGhlIHNhbWUgdGltZSB3aGVuIHRoZSBmbG93IGlzIGNy ZWF0ZWQgKGV4YWN0IHF1b3RlIG9mDQo+IHlvdXIgc3RhdGVtZW50IGZyb20gYWJvdmU6ICIgUHJl cGFyaW5nIGEgbWV0ZXIgb2JqZWN0IHNob3VsZCBiZSB0aGUgcGFydCBvZg0KPiBmbG93IHJ1bGUg Y3JlYXRpb24iKS4NCg0KQWdhaW4sIGFsbG9jYXRpb24gc2hvdWxkIGJlIGRvbmUgYXQgc3RhcnR1 cCwgd2hpbGUgY29uZmlndXJhdGlvbiBpcyBkb25lICBkdXJpbmcgcnVsZSBjcmVhdGlvbi4NCg0K PiBBbGwgdGhlIHBvbGljeSBydWxlcyBjYW4gYmUgY3JlYXRlZA0KPiA+ID4gZHVyaW5nIHRoZSBp bml0aWFsaXphdGlvbiBzdGFnZSBlYXNpbHkgYW5kIHB1dCBpbnRvIHNldmVyYWwgZ3JvdXBzLg0K PiA+ID4gVGhlc2UgZ3JvdXBzIGNhbiBiZSB1c2VkIGJ5IG1hbnkgbWV0ZXIgb2JqZWN0cyBieSBz aW1wbGUganVtcCBhY3Rpb24gdG8NCj4gPiA+IGFuIGFwcHJvcHJpYXRlIGdyb3VwLiBNZXRlciBv YmplY3RzIGNhbiBiZSBwcmVhbGxvY2F0ZWQgYXMgd2VsbCBhbmQNCj4gPiA+IGNvbmZpZ3VyZWQg d2l0aCByZXF1aXJlZCBwcm9maWxlIHBhcmFtZXRlcnMgbGF0ZXIgYXQgdGhlIGZsb3cgcnVsZQ0K PiA+ID4gY3JlYXRpb24gc3RhZ2UuIFRoZSBudW1iZXIgb2YgcHJlLWFsbG9jYXRlZCBwcm9maWxl cy9wb2xpY2llcyBpcw0KPiA+ID4gc3BlY2lmaWVkIGluIHRoZSBGbG93IGVuZ2luZSByZXNvdXJj ZXMgc2V0dGluZ3MuDQo+ID4gPg0KPiA+ID4gVGhlc2Ugb3B0aW1pemF0aW9ucyBhbG9uZ3NpZGUg YWxyZWFkeSBleGlzdGluZyBwYXR0ZXJuL2FjdGlvbnMgdGVtcGxhdGVzDQo+ID4gPiBjYW4gaW1w cm92ZSB0aGUgaW5zZXJ0aW9uIHJhdGUgc2lnbmlmaWNhbnRseSBhbmQgYWxsb3cgbWV0ZXIgdXNh Z2UgYXMNCj4gPiA+IHBhcnQgb2YgdGhlIGRhdGFwYXRoLiBUaGUgaW50cm9kdWN0aW9uIG9mIHRo ZSBuZXcgQVBJIGlzIGludGVuZGVkIHRvIGJlDQo+ID4gPiB1c2VkIHdpdGggdGhlIGFzeW5jaHJv bm91cyBGbG93IEFQSS4gRGVwcmVjYXRpb24gb2YgdGhlIG9sZCBNZXRlciBBUEkNCj4gPiA+IGlz IG5vdCBwbGFubmVkIGF0IHRoaXMgcG9pbnQuDQo+ID4gPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTog QWxleGFuZGVyIEtvenlyZXYgPGFrb3p5cmV2QG52aWRpYS5jb20+DQo+ID4gPiAtLS0NCj4gPiA+ ICBsaWIvZXRoZGV2L3J0ZV9mbG93LmggfCA3MQ0KPiA+ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0NCj4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgNzAgaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQ0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2 L3J0ZV9mbG93LmggYi9saWIvZXRoZGV2L3J0ZV9mbG93LmgNCj4gPiA+IGluZGV4IGQ4ODI3ZGQx ODQuLmFlYzM2YTlmMGEgMTAwNjQ0DQo+ID4gPiAtLS0gYS9saWIvZXRoZGV2L3J0ZV9mbG93LmgN Cj4gPiA+ICsrKyBiL2xpYi9ldGhkZXYvcnRlX2Zsb3cuaA0KPiA+ID4gQEAgLTMzLDYgKzMzLDcg QEANCj4gPiA+ICAjaW5jbHVkZSA8cnRlX2JpdG9wcy5oPg0KPiA+ID4gICNpbmNsdWRlIDxydGVf bWJ1Zi5oPg0KPiA+ID4gICNpbmNsdWRlIDxydGVfbWJ1Zl9keW4uaD4NCj4gPiA+ICsjaW5jbHVk ZSA8cnRlX210ci5oPg0KPiA+ID4gICNpbmNsdWRlIDxydGVfbWV0ZXIuaD4NCj4gPiA+ICAjaW5j bHVkZSA8cnRlX2d0cC5oPg0KPiA+ID4gICNpbmNsdWRlIDxydGVfbDJ0cHYyLmg+DQo+ID4gPiBA QCAtNjcxLDYgKzY3MiwxMyBAQCBlbnVtIHJ0ZV9mbG93X2l0ZW1fdHlwZSB7DQo+ID4gPiAgICAg ICAgICAqIFNlZSBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbV9ncmVfb3B0Lg0KPiA+ID4gICAgICAgICAg Ki8NCj4gPiA+ICAgICAgICAgUlRFX0ZMT1dfSVRFTV9UWVBFX0dSRV9PUFRJT04sDQo+ID4gPiAr DQo+ID4gPiArICAgICAgIC8qKg0KPiA+ID4gKyAgICAgICAgKiBNYXRjaGVzIE1ldGVyIENvbG9y Lg0KPiA+ID4gKyAgICAgICAgKg0KPiA+ID4gKyAgICAgICAgKiBTZWUgc3RydWN0IHJ0ZV9mbG93 X2l0ZW1fbWV0ZXJfY29sb3IuDQo+ID4gPiArICAgICAgICAqLw0KPiA+ID4gKyAgICAgICBSVEVf RkxPV19JVEVNX1RZUEVfTUVURVJfQ09MT1IsDQo+IA0KPiBBcyBkaXNjdXNzZWQgaW4gdGhlIHBy ZXZpb3VzIGNvbW11bml0eSBjYWxsIG9uIG1ldGVycywgaXQgbWFrZXMgcGVyZmVjdCBzZW5zZSB0 bw0KPiBtZSB0byBiZSBhYmxlIHRvIHVzZSB0aGUgbWV0ZXIgY29sb3IgYXMgb25lIG9mIHRoZSBm bG93IG1hdGNoIGZpZWxkcy4NCj4gDQo+IFdlIGp1c3QgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3 aGVuIHRoaXMgaXMgbmVlZGVkLCBpdCBpcyBndWFyYW50ZWVkIHRoYXQgdGhlDQo+IHBhY2tldCBo YXMgYSBjb2xvciwgaS5lLiB0aGVyZSBpcyBhIG1ldGVyIGFjdGlvbiBwcmV2aW91c2x5IGluIHRo aXMgY2hhaW4gdGhhdCBnb3QNCj4gZXhlY3V0ZWQsIG9yIHRoZXJlIGlzIGEgZGVmYXVsdCBwYWNr ZXQgY29sb3IgaWYgbm90LiBIb3cgZG8gd2UgbWFrZSBzdXJlIG9mIHRoaXM/DQoNCldlIGNhbiBo YXZlIG1vZGlmeSBmaWxlZCAoc2V0IGNvbG9yKSB0byB1cGRhdGUgdGhlIGNvbG9yIGl0ZW0uIEkn bGwgaW5jbHVkZSB0aGlzIGNoYW5nZSBpbiB2Mi4NCg0KPiA+ID4gIH07DQo+ID4gPg0KPiA+ID4g IC8qKg0KPiA+ID4gQEAgLTE5OTAsNiArMTk5OCwyNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0 ZV9mbG93X2l0ZW1fcHBwDQo+ID4gcnRlX2Zsb3dfaXRlbV9wcHBfbWFzayA9IHsNCj4gPiA+ICB9 Ow0KPiA+ID4gICNlbmRpZg0KPiA+ID4NCj4gPiA+ICsvKioNCj4gPiA+ICsgKiBAd2FybmluZw0K PiA+ID4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBzdHJ1Y3R1cmUgbWF5IGNoYW5nZSB3aXRo b3V0IHByaW9yIG5vdGljZQ0KPiA+ID4gKyAqDQo+ID4gPiArICogUlRFX0ZMT1dfSVRFTV9UWVBF X01FVEVSX0NPTE9SDQo+ID4gPiArICoNCj4gPiA+ICsgKiBNYXRjaGVzIGEgbWV0ZXIgY29sb3Ig c2V0IGluIHRoZSBwYWNrZXQgbWV0YS1kYXRhDQo+ID4gPiArICogKGkuZS4gc3RydWN0IHJ0ZV9t YnVmOjpzY2hlZDo6Y29sb3IpLg0KPiA+ID4gKyAqLw0KPiA+ID4gK3N0cnVjdCBydGVfZmxvd19p dGVtX21ldGVyX2NvbG9yIHsNCj4gPiA+ICsgICAgICAgZW51bSBydGVfY29sb3IgY29sb3I7IC8q KjwgUGFja2V0IGNvbG9yLiAqLw0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArLyoqIERlZmF1 bHQgbWFzayBmb3IgUlRFX0ZMT1dfSVRFTV9UWVBFX01FVEVSX0NPTE9SLiAqLw0KPiA+ID4gKyNp Zm5kZWYgX19jcGx1c3BsdXMNCj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0 ZW1fbWV0ZXJfY29sb3INCj4gPiBydGVfZmxvd19pdGVtX21ldGVyX2NvbG9yX21hc2sgPSB7DQo+ ID4gPiArICAgICAgIC5jb2xvciA9IDB4MywNCj4gPiA+ICt9Ow0KPiA+ID4gKyNlbmRpZg0KPiA+ ID4gKw0KPiA+ID4gIC8qKg0KPiA+ID4gICAqIE1hdGNoaW5nIHBhdHRlcm4gaXRlbSBkZWZpbml0 aW9uLg0KPiA+ID4gICAqDQo+ID4gPiBAQCAtMjM3Niw2ICsyNDA0LDE0IEBAIGVudW0gcnRlX2Zs b3dfYWN0aW9uX3R5cGUgew0KPiA+ID4gICAgICAgICAgKi8NCj4gPiA+ICAgICAgICAgUlRFX0ZM T1dfQUNUSU9OX1RZUEVfTUVURVIsDQo+ID4gPg0KPiA+ID4gKyAgICAgICAvKioNCj4gPiA+ICsg ICAgICAgICogRXh0ZW5kZWQgVHJhZmZpYyBtZXRlcmluZyBhbmQgcG9saWNpbmcgKE1UUikuDQo+ ID4gPiArICAgICAgICAqDQo+ID4gPiArICAgICAgICAqIFNlZSBzdHJ1Y3QgcnRlX2Zsb3dfYWN0 aW9uX21ldGVyX2V4dC4NCj4gPiA+ICsgICAgICAgICogU2VlIGZpbGUgcnRlX210ci5oIGZvciBN VFIgb2JqZWN0IGNvbmZpZ3VyYXRpb24uDQo+ID4gPiArICAgICAgICAqLw0KPiA+ID4gKyAgICAg ICBSVEVfRkxPV19BQ1RJT05fVFlQRV9NRVRFUl9FWFQsDQo+ID4gPiArDQo+ID4gPiAgICAgICAg IC8qKg0KPiA+ID4gICAgICAgICAgKiBSZWRpcmVjdHMgcGFja2V0cyB0byBzZWN1cml0eSBlbmdp bmUgb2YgY3VycmVudCBkZXZpY2UgZm9yIHNlY3VyaXR5DQo+ID4gPiAgICAgICAgICAqIHByb2Nl c3NpbmcgYXMgc3BlY2lmaWVkIGJ5IHNlY3VyaXR5IHNlc3Npb24uDQo+ID4gPiBAQCAtMzEyOCw2 ICszMTY0LDE5IEBAIHN0cnVjdCBydGVfZmxvd19hY3Rpb25fbWV0ZXIgew0KPiA+ID4gICAgICAg ICB1aW50MzJfdCBtdHJfaWQ7IC8qKjwgTVRSIG9iamVjdCBJRCBjcmVhdGVkIHdpdGggcnRlX210 cl9jcmVhdGUoKS4gKi8NCj4gPiA+ICB9Ow0KPiA+ID4NCj4gPiA+ICsvKioNCj4gPiA+ICsgKiBS VEVfRkxPV19BQ1RJT05fVFlQRV9NRVRFUl9FWFQNCj4gPiA+ICsgKg0KPiA+ID4gKyAqIEV4dGVu ZGVkIFRyYWZmaWMgbWV0ZXJpbmcgYW5kIHBvbGljaW5nIChNVFIpLg0KPiA+ID4gKyAqDQo+ID4g PiArICogUGFja2V0cyBtYXRjaGVkIGJ5IGl0ZW1zIG9mIHRoaXMgdHlwZSBjYW4gYmUgZWl0aGVy IGRyb3BwZWQgb3IgcGFzc2VkIHRvDQo+ID4gdGhlDQo+ID4gPiArICogbmV4dCBpdGVtIHdpdGgg dGhlaXIgY29sb3Igc2V0IGJ5IHRoZSBNVFIgb2JqZWN0Lg0KPiA+ID4gKyAqLw0KPiA+ID4gK3N0 cnVjdCBydGVfZmxvd19hY3Rpb25fbWV0ZXJfZXh0IHsNCj4gPiA+ICsgICAgICAgdWludDMyX3Qg bXRyX2lkOyAvKio8IE1UUiBvYmplY3QgSUQuICovDQo+ID4gPiArICAgICAgIHN0cnVjdCBydGVf bWV0ZXJfcHJvZmlsZSAqcHJvZmlsZTsgLyoqPCBNVFIgcHJvZmlsZS4gKi8NCj4gPiA+ICt9Ow0K PiA+ID4gKw0KPiANCj4gSG93IGlzIHRoaXMgcHJvcG9zZWQgbWV0ZXIgZXh0ZW5kZWQgYWN0aW9u IGRpZmZlcmVudCBmcm9tIHRoZSBleGlzdGluZyBtZXRlcg0KPiBhY3Rpb24/IFRoaXMgaXMgbm90 IGV4cGxhaW5lZCBhdCBhbGwgaGVyZSwgcGxlYXNlIGV4cGxhaW4uDQo+IA0KPiBUaGUgY29tbWVu dCBzZWVtcyB0byBpbmRpY2F0ZSBhIGNvcHkgJiBwYXN0ZSBlcnJvciwgYXMgInBhY2tldHMgbWF0 Y2hlZCBieQ0KPiBpdGVtcyBvZiB0aGlzIHR5cGUgLi4uIiBpbmRpY2F0ZXMgYSBtYXRjaCBpdGVt LCBhbmQgdGhpcyBpcyBhbiBhY3Rpb24gaXRlbS4NCg0KV2Ugc3VwcGx5IHRoZSBwcm9maWxlIGFu ZCB0aGlzIGFjdGlvbiB3aWxsIHNpbXBseSBzZXQgdGhlIHByb3BlciBjb2xvciBiYXNlZCBvbiBw cm9maWxlLCBub3RoaW5nIGVsc2UuDQpXaGF0IHRvIGRvIHdpdGggYXNzaWduZWQgcGFja2V0IGNv bG9ycyB3aWxsIGJlIGRlY2lkZWQgbGF0ZXIgdmlhIElURU1fVFlQRV9NRVRFUl9DT0xPUi4NCg0K PiA+ID4gIC8qKg0KPiA+ID4gICAqIFJURV9GTE9XX0FDVElPTl9UWVBFX1NFQ1VSSVRZDQo+ID4g PiAgICoNCj4gPiA+IEBAIC00ODk5LDEwICs0OTQ4LDIwIEBAIHN0cnVjdCBydGVfZmxvd19wb3J0 X2luZm8gew0KPiA+ID4gICAgICAgICAgKi8NCj4gPiA+ICAgICAgICAgdWludDMyX3QgbWF4X25i X2FnaW5nX29iamVjdHM7DQo+ID4gPiAgICAgICAgIC8qKg0KPiA+ID4gLSAgICAgICAgKiBNYXhp bXVtIG51bWJlciB0cmFmZmljIG1ldGVycy4NCj4gPiA+ICsgICAgICAgICogTWF4aW11bSBudW1i ZXIgb2YgdHJhZmZpYyBtZXRlcnMuDQo+ID4gPiAgICAgICAgICAqIEBzZWUgUlRFX0ZMT1dfQUNU SU9OX1RZUEVfTUVURVINCj4gPiA+ICAgICAgICAgICovDQo+ID4gPiAgICAgICAgIHVpbnQzMl90 IG1heF9uYl9tZXRlcnM7DQo+ID4gPiArICAgICAgIC8qKg0KPiA+ID4gKyAgICAgICAgKiBNYXhp bXVtIG51bWJlciBvZiB0cmFmZmljIG1ldGVyIHByb2ZpbGVzLg0KPiA+ID4gKyAgICAgICAgKiBA c2VlIFJURV9GTE9XX0FDVElPTl9UWVBFX01FVEVSDQo+ID4gPiArICAgICAgICAqLw0KPiA+ID4g KyAgICAgICB1aW50MzJfdCBtYXhfbmJfbWV0ZXJfcHJvZmlsZXM7DQo+ID4gPiArICAgICAgIC8q Kg0KPiA+ID4gKyAgICAgICAgKiBNYXhpbXVtIG51bWJlciBvZiB0cmFmZmljIG1ldGVycyBwb2xp Y2ljZXMuDQo+ID4gPiArICAgICAgICAqIEBzZWUgUlRFX0ZMT1dfQUNUSU9OX1RZUEVfTUVURVIN Cj4gPiA+ICsgICAgICAgICovDQo+ID4gPiArICAgICAgIHVpbnQzMl90IG1heF9uYl9tZXRlcl9w b2xpY2llczsNCj4gPiA+ICB9Ow0KPiA+ID4NCj4gPiA+ICAvKioNCj4gPiA+IEBAIC00OTcyLDYg KzUwMzEsMTYgQEAgc3RydWN0IHJ0ZV9mbG93X3BvcnRfYXR0ciB7DQo+ID4gPiAgICAgICAgICAq IEBzZWUgUlRFX0ZMT1dfQUNUSU9OX1RZUEVfTUVURVINCj4gPiA+ICAgICAgICAgICovDQo+ID4g PiAgICAgICAgIHVpbnQzMl90IG5iX21ldGVyczsNCj4gPiA+ICsgICAgICAgLyoqDQo+ID4gPiAr ICAgICAgICAqIE51bWJlciBvZiBtZXRlciBwcm9maWxlcyB0byBjb25maWd1cmUuDQo+ID4gPiAr ICAgICAgICAqIEBzZWUgUlRFX0ZMT1dfQUNUSU9OX1RZUEVfTUVURVINCj4gPiA+ICsgICAgICAg ICovDQo+ID4gPiArICAgICAgIHVpbnQzMl90IG5iX21ldGVyX3Byb2ZpbGVzOw0KPiA+ID4gKyAg ICAgICAvKioNCj4gPiA+ICsgICAgICAgICogTnVtYmVyIG9mIG1ldGVyIHBvbGljaWVzIHRvIGNv bmZpZ3VyZS4NCj4gPiA+ICsgICAgICAgICogQHNlZSBSVEVfRkxPV19BQ1RJT05fVFlQRV9NRVRF Ug0KPiA+ID4gKyAgICAgICAgKi8NCj4gPiA+ICsgICAgICAgdWludDMyX3QgbmJfbWV0ZXJfcG9s aWNpZXM7DQo+ID4gPiAgfTsNCj4gPiA+DQo+ID4gPiAgLyoqDQo+ID4gPiAtLQ0KPiA+ID4gMi4x OC4yDQo+ID4gPg0K