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 8F24BA0351; Fri, 11 Feb 2022 23:26:06 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 20E1D40683; Fri, 11 Feb 2022 23:26:06 +0100 (CET) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2055.outbound.protection.outlook.com [40.107.92.55]) by mails.dpdk.org (Postfix) with ESMTP id E642A40140 for ; Fri, 11 Feb 2022 23:26:03 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dnSSy8Wka9A1uwM6/sXWEipUAGT5veiufJ/oligBVwdkPTi7P6VKnE6Zam9+E3MpftlavJ8vR9ChvR13+2o+9twEo1rLsDMoRqXXNCe5I7kutbLVcQRO3d71fLc7EoPC75QTt7j+GMFly2l3pZihYUd8EYNxsinG1HKMNg3kclfs8lydYf2F038itt14OzDoa3cI+tx+f17KSMKERL/kg6kCN/CItwBrOAASTKxkykulWVpDq40O3YnmWgX+FRRUMZDYj2i//bfM0LCCJs5n5DVUPJ9RopbgY5mDBfnaGCB0ilEWlLqHqP9/1NcJGH64B1QvAgThYlq7egX0bUnfcg== 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=GFhsr3RmTw/aeTxTq4IpchHmPuWOk2+tOeU7nFDyC34=; b=PGYbkgo8Gp9bstQwQW0JiG/g9fVkpcXvJGeAWLOCM5Ns7pMLPqxpEM58yDT0/JlG5zAXB1fINfa3H8ACxKWCjk6OK8RDmo8Opjr9kdfm3C5THFD4v72lANkiHNOP7YvFSIx3vAgwKBliTOyAkem9wbJwXRtSXN/WbBzvpXxGLQeKFRKH2N0+kOAwcOWLdGaSFa+CDhHIGT7B5Y/DITxDe3KpBkm+0Wcfe8O6sZNPB67G+PQbHVKOCVinfXXZxqmNd5FYOAZx3dSs9jKhzzb0utQRdS+dECq/My6hP1cX9lODss5QgvpmgR8obcDeXzgZ9k7DJ9GRTK1FUo2+FkpWsQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=GFhsr3RmTw/aeTxTq4IpchHmPuWOk2+tOeU7nFDyC34=; b=LX0lUqn19fmFGmhlexVjTezBJm4EVwZaHhkAvI3WgqFwOSdMUtXxMEUH9m+qq4YP2J3LcKOctf+6FYKqyM9n5fVLFGkjvTo0Tg3M9IhtQcszKzoHYaKKbkKwspzNJCq9E6iB7axT7Q9t6IPiglrJcr3E89RpTcKwshkJXWmUqDkNAuFM3cFf7DmwL9ckyDrrEcOlbM8SfPnTDrG6JQTT2v+QOtXRdt1i0zmXu79W7/BU1GtY0nUfohqrz+xkwPptZdIUwqSJ3jEvH3iFqA+Dk0pIbhlH94f9OCuf35SBhlsv/Gc9f2ozONNoWFCHZP7EgZqTlWjRZXlHVOocuR8uEw== Received: from BYAPR12MB3413.namprd12.prod.outlook.com (2603:10b6:a03:ab::15) by BL0PR12MB2417.namprd12.prod.outlook.com (2603:10b6:207:45::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.12; Fri, 11 Feb 2022 22:25:53 +0000 Received: from DM5PR12MB2405.namprd12.prod.outlook.com (2603:10b6:4:b2::20) by BYAPR12MB3413.namprd12.prod.outlook.com (2603:10b6:a03:ab::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.12; Fri, 11 Feb 2022 22:25:51 +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.4975.011; Fri, 11 Feb 2022 22:25:51 +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 02/10] ethdev: add flow item/action templates Thread-Topic: [PATCH v5 02/10] ethdev: add flow item/action templates Thread-Index: AQHYHu7u2VpNNXtVP0i2cum/KP+dbqyONtMAgAB7Q/A= Date: Fri, 11 Feb 2022 22:25:51 +0000 Message-ID: References: <20220209213809.1208269-1-akozyrev@nvidia.com> <20220211022653.1372318-1-akozyrev@nvidia.com> <20220211022653.1372318-3-akozyrev@nvidia.com> <0a823087-2421-9716-9f66-70be7b774ecd@oktetlabs.ru> In-Reply-To: <0a823087-2421-9716-9f66-70be7b774ecd@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: 4873eade-b261-4f62-cf24-08d9edad7642 x-ms-traffictypediagnostic: BYAPR12MB3413:EE_|BL0PR12MB2417:EE_ x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Z9bJ5Fy7OihCmBEWQiAEO9jR4gGZqpzrYsLWVJwKKfX7OVrsJ/aP7dvA5YyNil9f6LLfZDAijA1q4VdfPJ35KN/QuUQHYUI/6fCqZOUnWQL/+/ueZ+r5KeZfdUTOiQqCRab/M2qx/Clcx2tKOXysM/zvSwDbmCHn5iCcxgJ1woYN8rmXDPLAXSm2VvqSpBMPInwKKzegqnHXSXtuHFcfnwdYiu/mHZvlnSOMoOQPThPC8FOf86QnjWrdj7wDkM/eoy3l5hMBlxmPvs89H1L0nsU5mSLDoSXFlyTW7vHGKHI3JQlfHrxK9JqyvnM9NhAwkLMKePDqKx+3kJAHj6+NUWfUVzx/KUvaQUDk8klg4hBkUyQ5WJ9bmlb7gdqCrFmVYTybeTbn5ggw+fZB5wDdKd/p6VPg/PF0EDUddgYNjEmEZWwo1LY4iTFyNUl4Z76yOGMNZIHxDGUkXZNqw0jH0KRUu7quz0fRyqb2q9RkQ8U4UdqFaC9mDQUAPHWMw/L5Qx2sCLYul+KYfFMB4xN0NjTNryfiEqos9VSlLEANNQR/v/LCMRQhnTUws+hc1Y/m3tSIo/wuwP8ePGAU09tk4eL7aEk8X/h51WDMUkL6H2M9u/19mBoJs/X0o6zgGaoCXFVTzAqSEPAYHH7tI8UFQZcMLSBfubb8yo9O23Qibfm5s05qSk2/4nnyE3Wl2XlGBI/9Y6KEaVsjhROH/l1EsQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR12MB3413.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(53546011)(6506007)(71200400001)(8676002)(508600001)(9686003)(76116006)(38070700005)(86362001)(66476007)(316002)(54906003)(64756008)(66556008)(8936002)(4326008)(110136005)(66946007)(7696005)(66446008)(83380400001)(55016003)(186003)(122000001)(38100700002)(26005)(52536014)(7416002)(2906002)(33656002)(5660300002)(30864003)(579004)(559001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZmZVS044VmJPL1B2TEJQV3hZZnE2aFRvV2xRbEIrR2ZSMlN0SjN2WUt0WGFz?= =?utf-8?B?bnFHeTFVZUIxS0lMZlA2UWRYU3ZTdkZvVGd6STlQc2txRlNxNHhYZk5xcGtl?= =?utf-8?B?aXF3czhOSHBkQUhOUDhxWndLSXg0czdicXAzR0ZmSG1UaUh6U3M0V2VJQ2lQ?= =?utf-8?B?ZWU2cStrRUZiMkdsS05aZElwRnBTQVVhUUVLdjNhbmNWUU10MWpFLzAyY000?= =?utf-8?B?b1cwWEU2dGFlT1Z1bG1icEkxRTY5bzhnU2xGRlRCUDZSN0J6WUxuSm9aRW92?= =?utf-8?B?MlhWb0EzUklJQ3pEaXBwbW5iOVpHS1hRdEJpK0dxcDRpSWNIZXI0c3d2Q2px?= =?utf-8?B?clZSQ3dBK3FOQnNlaTBXYXFqM2lwUllTcUMzandYaGRZNkVZejlWeEZTM1Qz?= =?utf-8?B?NzdCZS9aNnNORkNlcmh6Y3J6c2Y1OFlzQVVRenJ1QnVaUnI3WUhXZW1TWjdJ?= =?utf-8?B?aFFPNS9NMFRDaDB6SkNsbkpwdVIzNVBGeDNIQzErU0FubzNSeWdwMlF0RDhr?= =?utf-8?B?MkR1c0ZmdE9vTTZ5N211SHNBMXZISWFjL254TmVHalVlTnN5K3R4WmNJQjA3?= =?utf-8?B?NVRRa29KbzI0ZngzbXhTZlorZ0xVZUppWGswemhDVjZJYjA2UDBjdWd4anJE?= =?utf-8?B?Tkg4Ykc5eVFxZDNnODYwU25GVjdEMlRuZWg5OU5oSW9CbTNiR2xnZDlkaWs3?= =?utf-8?B?QWp1YTFDaExPeHRKVFVUT3dONU41bUQraXo5Ry9uM09tK2N4TFhPeDdPS0Fi?= =?utf-8?B?UWpDejZJckliblFDbktJa1ZvdXdRc0M3ZUdTK3I4eGpYRjV6MHVoT2NoSUNP?= =?utf-8?B?N294QTYxbkdQK1lyMitOTmxwQVdXTmdJNnRSdlVFczRnMCtNMlhwUHJxUUh2?= =?utf-8?B?b25uOEdvbVRPbmhFYjJzbm5RQStjdlh0cWxFV3dpdW1qNm9tSEZWUXNOdWVM?= =?utf-8?B?QmQxcWhmeFB6dG1hUk9OTm1IbTZpZDZkNE1YTEh6TDNOK1paeVpVSW9QMmhp?= =?utf-8?B?dEh5TmZDN2MrenVUWVFCbjBqV2srb2J3NE1OOFNiRGRiNmhHQWV3N3BtbEVQ?= =?utf-8?B?eWlPTEdwcDFOS3QvaDVQQXRSMXMzeEdvYWZiVXVjUk9rVG9mOG5Xb3MrWmNm?= =?utf-8?B?SmJYVzdVWGVSMi9CRGFualZEWHM3WCtYNUllcFE0NUNhMmg2VEJRQm1LSlAz?= =?utf-8?B?eXRJRU9vdzB1TmlJaDc0SDI2WEJqVGJUdFJXNEZ2Sk5SUnJCSm45UHByVE1i?= =?utf-8?B?b3A4SWVXa0VHWkQ2WHR0cm1PSDVuaFhJTlZqM1JwdTYwT3FEZFJ5ajVweHZV?= =?utf-8?B?eFJzN1p3YzlPZ25PMDNPMGUrKzJRN2JIN1FyZENoT1RLclpEUzJWTW44clFH?= =?utf-8?B?SnA1TUExT2Q2VDFXenpKbG9RZ0dWWmFYUU9YWDh0WENGVTZmMHBJWllDbkZ6?= =?utf-8?B?WURMUXUvMTdzZk9ta085Nnc3YVExYnJwdHBUdHo3eVVoZFkzY3VhUjdJT3px?= =?utf-8?B?V3lwQ0lGOHh0UHpKWTZmL2lCL3lYNko2bnB2cy9qRzFmQVZrbE4wSVN3ZVBi?= =?utf-8?B?d09Xd3dxcEkzdTlUaWFhR08xREdIdEp6dGdYMjZXUW1jdHNSVGZVY3NpeVVn?= =?utf-8?B?WHZYNTNkYVJLU1JzaHRPZ1hzVC9XWGJhUXBtdVFFSEdjdDlTTWhHSmJmaDJG?= =?utf-8?B?OFBNN3lPKzZLT0oweWdkdGtSWHNTU1ArTTQwVzVwMlNNK2dFVkIxV2J5MVNs?= =?utf-8?B?RTlSTmlTRGRtWjhoMG14L1F0K1dNbFhTVFI2VGlkSjRzRjNjZElxcVhoMlBa?= =?utf-8?B?b3ZVQmVnci9LYnd2SXNqdVk2SGdPZytpMVVyQWhkOGZrK0xrMW5NWWFsa0xM?= =?utf-8?B?VUpEY0FxRS9ReGM4RTJQSGcySm5qY0NjZHZTSi83UnR5WkwrUWxMTDIyaFhW?= =?utf-8?B?UThibSs2aEo3cVVRQ29xRngycUY0VXlDdkhkb0JzTE9Qc09XNWVvU3JpczZz?= =?utf-8?B?Wk94UXFCMmsxWGJWTmVCelVSVmFzUlptNUlvaDVOeDltbnpnSzhjdnBCS3Zs?= =?utf-8?B?S3NMRms4Y1RGVGhyKzBhVTJmVjdOT2ZmaURNK1RJQ3plZGdhQmlhQjFrdm1B?= =?utf-8?B?WnFrSTJpdFM1VlFOT0NmYytXa0RRREFWTHlNeGlhb0NrajVuaEhyZWg2SEUy?= =?utf-8?B?MkE9PQ==?= 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: 4873eade-b261-4f62-cf24-08d9edad7642 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Feb 2022 22:25:51.7757 (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: JLo4aTYnaaEozQNNubUfH2YmxXyBoKOdRIfzd3mshO1mEiqYO2csgl0b7Er37Dl7oo0Kzi/gE8fEl0BdsbTPgg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR12MB2417 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 T24gRnJpLCBGZWIgMTEsIDIwMjIgNjoyNyBBbmRyZXcgUnliY2hlbmtvIDxhbmRyZXcucnliY2hl bmtvQG9rdGV0bGFicy5ydT4gd3JvdGU6DQo+IE9uIDIvMTEvMjIgMDU6MjYsIEFsZXhhbmRlciBL b3p5cmV2IHdyb3RlOg0KPiA+IFRyZWF0aW5nIGV2ZXJ5IHNpbmdsZSBmbG93IHJ1bGUgYXMgYSBj b21wbGV0ZWx5IGluZGVwZW5kZW50IGFuZCBzZXBhcmF0ZQ0KPiA+IGVudGl0eSBuZWdhdGl2ZWx5 IGltcGFjdHMgdGhlIGZsb3cgcnVsZXMgaW5zZXJ0aW9uIHJhdGUuIE9mdGVudGltZXMgaW4gYW4N Cj4gPiBhcHBsaWNhdGlvbiwgbWFueSBmbG93IHJ1bGVzIHNoYXJlIGEgY29tbW9uIHN0cnVjdHVy ZSAodGhlIHNhbWUgaXRlbSBtYXNrDQo+ID4gYW5kL29yIGFjdGlvbiBsaXN0KSBzbyB0aGV5IGNh biBiZSBncm91cGVkIGFuZCBjbGFzc2lmaWVkIHRvZ2V0aGVyLg0KPiA+IFRoaXMga25vd2xlZGdl IG1heSBiZSB1c2VkIGFzIGEgc291cmNlIG9mIG9wdGltaXphdGlvbiBieSBhIFBNRC9IVy4NCj4g Pg0KPiA+IFRoZSBwYXR0ZXJuIHRlbXBsYXRlIGRlZmluZXMgY29tbW9uIG1hdGNoaW5nIGZpZWxk cyAodGhlIGl0ZW0gbWFzaykgd2l0aG91dA0KPiA+IHZhbHVlcy4gVGhlIGFjdGlvbnMgdGVtcGxh dGUgaG9sZHMgYSBsaXN0IG9mIGFjdGlvbiB0eXBlcyB0aGF0IHdpbGwgYmUgdXNlZA0KPiA+IHRv Z2V0aGVyIGluIHRoZSBzYW1lIHJ1bGUuIFRoZSBzcGVjaWZpYyB2YWx1ZXMgZm9yIGl0ZW1zIGFu ZCBhY3Rpb25zIHdpbGwNCj4gPiBiZSBnaXZlbiBvbmx5IGR1cmluZyB0aGUgcnVsZSBjcmVhdGlv bi4NCj4gPg0KPiA+IEEgdGFibGUgY29tYmluZXMgcGF0dGVybiBhbmQgYWN0aW9ucyB0ZW1wbGF0 ZXMgYWxvbmcgd2l0aCBzaGFyZWQgZmxvdyBydWxlDQo+ID4gYXR0cmlidXRlcyAoZ3JvdXAgSUQs IHByaW9yaXR5IGFuZCB0cmFmZmljIGRpcmVjdGlvbikuIFRoaXMgd2F5IGEgUE1EL0hXDQo+ID4g Y2FuIHByZXBhcmUgYWxsIHRoZSByZXNvdXJjZXMgbmVlZGVkIGZvciBlZmZpY2llbnQgZmxvdyBy dWxlcyBjcmVhdGlvbiBpbg0KPiA+IHRoZSBkYXRhcGF0aC4gVG8gYXZvaWQgYW55IGhpY2N1cHMg ZHVlIHRvIG1lbW9yeSByZWFsbG9jYXRpb24sIHRoZSBtYXhpbXVtDQo+ID4gbnVtYmVyIG9mIGZs b3cgcnVsZXMgaXMgZGVmaW5lZCBhdCB0aGUgdGFibGUgY3JlYXRpb24gdGltZS4NCj4gPg0KPiA+ IFRoZSBmbG93IHJ1bGUgY3JlYXRpb24gaXMgZG9uZSBieSBzZWxlY3RpbmcgYSB0YWJsZSwgYSBw YXR0ZXJuIHRlbXBsYXRlDQo+ID4gYW5kIGFuIGFjdGlvbnMgdGVtcGxhdGUgKHdoaWNoIGFyZSBi b3VuZCB0byB0aGUgdGFibGUpLCBhbmQgc2V0dGluZyB1bmlxdWUNCj4gPiB2YWx1ZXMgZm9yIHRo ZSBpdGVtcyBhbmQgYWN0aW9ucy4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBL b3p5cmV2IDxha296eXJldkBudmlkaWEuY29tPg0KPiA+IEFja2VkLWJ5OiBPcmkgS2FtIDxvcmlr YUBudmlkaWEuY29tPg0KPiA+IC0tLQ0KPiA+ICAgZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3J0ZV9m bG93LnJzdCAgICAgfCAxMjQgKysrKysrKysrKysrDQo+ID4gICBkb2MvZ3VpZGVzL3JlbF9ub3Rl cy9yZWxlYXNlXzIyXzAzLnJzdCB8ICAgOCArDQo+ID4gICBsaWIvZXRoZGV2L3J0ZV9mbG93LmMg ICAgICAgICAgICAgICAgICB8IDE0NyArKysrKysrKysrKysrKw0KPiA+ICAgbGliL2V0aGRldi9y dGVfZmxvdy5oICAgICAgICAgICAgICAgICAgfCAyNjAgKysrKysrKysrKysrKysrKysrKysrKysr Kw0KPiA+ICAgbGliL2V0aGRldi9ydGVfZmxvd19kcml2ZXIuaCAgICAgICAgICAgfCAgMzcgKysr Kw0KPiA+ICAgbGliL2V0aGRldi92ZXJzaW9uLm1hcCAgICAgICAgICAgICAgICAgfCAgIDYgKw0K PiA+ICAgNiBmaWxlcyBjaGFuZ2VkLCA1ODIgaW5zZXJ0aW9ucygrKQ0KPiA+DQo+ID4gZGlmZiAt LWdpdCBhL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9ydGVfZmxvdy5yc3QNCj4gYi9kb2MvZ3VpZGVz L3Byb2dfZ3VpZGUvcnRlX2Zsb3cucnN0DQo+ID4gaW5kZXggNzJmYjExMzJhYy4uNTM5MTY0ODgz MyAxMDA2NDQNCj4gPiAtLS0gYS9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcnRlX2Zsb3cucnN0DQo+ ID4gKysrIGIvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3J0ZV9mbG93LnJzdA0KPiA+IEBAIC0zNjI2 LDYgKzM2MjYsMTMwIEBAIG9mIHByZS1jb25maWd1cmFibGUgcmVzb3VyY2VzIGZvciBhIGdpdmVu IHBvcnQgb24NCj4gYSBzeXN0ZW0uDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg cnRlX2Zsb3dfcG9ydF9pbmZvICpwb3J0X2luZm8sDQo+ID4gICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsNCj4gPg0KPiA+ICtGbG93IHRlbXBsYXRl cw0KPiA+ICt+fn5+fn5+fn5+fn5+fg0KPiA+ICsNCj4gPiArT2Z0ZW50aW1lcyBpbiBhbiBhcHBs aWNhdGlvbiwgbWFueSBmbG93IHJ1bGVzIHNoYXJlIGEgY29tbW9uIHN0cnVjdHVyZQ0KPiA+ICso dGhlIHNhbWUgcGF0dGVybiBhbmQvb3IgYWN0aW9uIGxpc3QpIHNvIHRoZXkgY2FuIGJlIGdyb3Vw ZWQgYW5kIGNsYXNzaWZpZWQNCj4gPiArdG9nZXRoZXIuIFRoaXMga25vd2xlZGdlIG1heSBiZSB1 c2VkIGFzIGEgc291cmNlIG9mIG9wdGltaXphdGlvbiBieSBhDQo+IFBNRC9IVy4NCj4gPiArVGhl IGZsb3cgcnVsZSBjcmVhdGlvbiBpcyBkb25lIGJ5IHNlbGVjdGluZyBhIHRhYmxlLCBhIHBhdHRl cm4gdGVtcGxhdGUNCj4gPiArYW5kIGFuIGFjdGlvbnMgdGVtcGxhdGUgKHdoaWNoIGFyZSBib3Vu ZCB0byB0aGUgdGFibGUpLCBhbmQgc2V0dGluZyB1bmlxdWUNCj4gPiArdmFsdWVzIGZvciB0aGUg aXRlbXMgYW5kIGFjdGlvbnMuIFRoaXMgQVBJIGlzIG5vdCB0aHJlYWQtc2FmZS4NCj4gPiArDQo+ ID4gK1BhdHRlcm4gdGVtcGxhdGVzDQo+ID4gK15eXl5eXl5eXl5eXl5eXl5eDQo+ID4gKw0KPiA+ ICtUaGUgcGF0dGVybiB0ZW1wbGF0ZSBkZWZpbmVzIGEgY29tbW9uIHBhdHRlcm4gKHRoZSBpdGVt IG1hc2spIHdpdGhvdXQNCj4gdmFsdWVzLg0KPiA+ICtUaGUgbWFzayB2YWx1ZSBpcyB1c2VkIHRv IHNlbGVjdCBhIGZpZWxkIHRvIG1hdGNoIG9uLCBzcGVjL2xhc3QgYXJlIGlnbm9yZWQuDQo+ID4g K1RoZSBwYXR0ZXJuIHRlbXBsYXRlIG1heSBiZSB1c2VkIGJ5IG11bHRpcGxlIHRhYmxlcyBhbmQg bXVzdCBub3QgYmUNCj4gZGVzdHJveWVkDQo+ID4gK3VudGlsIGFsbCB0aGVzZSB0YWJsZXMgYXJl IGRlc3Ryb3llZCBmaXJzdC4NCj4gPiArDQo+ID4gKy4uIGNvZGUtYmxvY2s6OiBjDQo+ID4gKw0K PiA+ICsJc3RydWN0IHJ0ZV9mbG93X3BhdHRlcm5fdGVtcGxhdGUgKg0KPiA+ICsJcnRlX2Zsb3df cGF0dGVybl90ZW1wbGF0ZV9jcmVhdGUodWludDE2X3QgcG9ydF9pZCwNCj4gPiArCQkJCWNvbnN0 IHN0cnVjdCBydGVfZmxvd19wYXR0ZXJuX3RlbXBsYXRlX2F0dHINCj4gKnRlbXBsYXRlX2F0dHIs DQo+ID4gKwkJCQljb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbSBwYXR0ZXJuW10sDQo+ID4gKwkJ CQlzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsNCj4gPiArDQo+ID4gK0ZvciBleGFtcGxl LCB0byBjcmVhdGUgYSBwYXR0ZXJuIHRlbXBsYXRlIHRvIG1hdGNoIG9uIHRoZSBkZXN0aW5hdGlv biBNQUM6DQo+ID4gKw0KPiA+ICsuLiBjb2RlLWJsb2NrOjogYw0KPiA+ICsNCj4gPiArCXN0cnVj dCBydGVfZmxvd19pdGVtIHBhdHRlcm5bMl0gPSB7ezB9fTsNCj4gPiArCXN0cnVjdCBydGVfZmxv d19pdGVtX2V0aCBldGhfbSA9IHswfTsNCj4gPiArCXBhdHRlcm5bMF0udHlwZSA9IFJURV9GTE9X X0lURU1fVFlQRV9FVEg7DQo+ID4gKwlldGhfbS5kc3QuYWRkcl9ieXRlcyA9ICJceGZmXHhmZlx4 ZmZceGZmXHhmZlx4ZmYiOw0KPiA+ICsJcGF0dGVyblswXS5tYXNrID0gJmV0aF9tOw0KPiA+ICsJ cGF0dGVyblsxXS50eXBlID0gUlRFX0ZMT1dfSVRFTV9UWVBFX0VORDsNCj4gPiArDQo+ID4gKwlz dHJ1Y3QgcnRlX2Zsb3dfcGF0dGVybl90ZW1wbGF0ZSAqcGF0dGVybl90ZW1wbGF0ZSA9DQo+ID4g KwkJcnRlX2Zsb3dfcGF0dGVybl90ZW1wbGF0ZV9jcmVhdGUocG9ydCwgJml0ciwgJnBhdHRlcm4s DQo+ICZlcnJvcik7DQo+IA0KPiBpdHI/DQoNCldpbGwgYWRkIGl0J3MgZGVjbGFyYXRpb24gZm9y IGNsYXJpdHkuDQoNCj4gPiArDQo+ID4gK1RoZSBjb25jcmV0ZSB2YWx1ZSB0byBtYXRjaCBvbiB3 aWxsIGJlIHByb3ZpZGVkIGF0IHRoZSBydWxlIGNyZWF0aW9uLg0KPiA+ICsNCj4gPiArQWN0aW9u cyB0ZW1wbGF0ZXMNCj4gPiArXl5eXl5eXl5eXl5eXl5eXl4NCj4gPiArDQo+ID4gK1RoZSBhY3Rp b25zIHRlbXBsYXRlIGhvbGRzIGEgbGlzdCBvZiBhY3Rpb24gdHlwZXMgdG8gYmUgdXNlZCBpbiBm bG93IHJ1bGVzLg0KPiA+ICtUaGUgbWFzayBwYXJhbWV0ZXIgYWxsb3dzIHNwZWNpZnlpbmcgYSBz aGFyZWQgY29uc3RhbnQgdmFsdWUgZm9yIGV2ZXJ5IHJ1bGUuDQo+ID4gK1RoZSBhY3Rpb25zIHRl bXBsYXRlIG1heSBiZSB1c2VkIGJ5IG11bHRpcGxlIHRhYmxlcyBhbmQgbXVzdCBub3QgYmUNCj4g ZGVzdHJveWVkDQo+ID4gK3VudGlsIGFsbCB0aGVzZSB0YWJsZXMgYXJlIGRlc3Ryb3llZCBmaXJz dC4NCj4gPiArDQo+ID4gKy4uIGNvZGUtYmxvY2s6OiBjDQo+ID4gKw0KPiA+ICsJc3RydWN0IHJ0 ZV9mbG93X2FjdGlvbnNfdGVtcGxhdGUgKg0KPiA+ICsJcnRlX2Zsb3dfYWN0aW9uc190ZW1wbGF0 ZV9jcmVhdGUodWludDE2X3QgcG9ydF9pZCwNCj4gPiArCQkJCWNvbnN0IHN0cnVjdCBydGVfZmxv d19hY3Rpb25zX3RlbXBsYXRlX2F0dHINCj4gKnRlbXBsYXRlX2F0dHIsDQo+ID4gKwkJCQljb25z dCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uIGFjdGlvbnNbXSwNCj4gPiArCQkJCWNvbnN0IHN0cnVj dCBydGVfZmxvd19hY3Rpb24gbWFza3NbXSwNCj4gPiArCQkJCXN0cnVjdCBydGVfZmxvd19lcnJv ciAqZXJyb3IpOw0KPiA+ICsNCj4gPiArRm9yIGV4YW1wbGUsIHRvIGNyZWF0ZSBhbiBhY3Rpb25z IHRlbXBsYXRlIHdpdGggdGhlIHNhbWUgTWFyayBJRA0KPiA+ICtidXQgZGlmZmVyZW50IFF1ZXVl IEluZGV4IGZvciBldmVyeSBydWxlOg0KPiA+ICsNCj4gPiArLi4gY29kZS1ibG9jazo6IGMNCj4g PiArDQo+ID4gKwlzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uIGFjdGlvbnNbXSA9IHsNCj4gPiArCQkv KiBNYXJrIElEIGlzIGNvbnN0YW50ICg0KSBmb3IgZXZlcnkgcnVsZSwgUXVldWUgSW5kZXggaXMg dW5pcXVlDQo+ICovDQo+ID4gKwkJWzBdID0gey50eXBlID0gUlRFX0ZMT1dfQUNUSU9OX1RZUEVf TUFSSywNCj4gPiArCQkJICAgLmNvbmYgPSAmKHN0cnVjdCBydGVfZmxvd19hY3Rpb25fbWFyayl7 LmlkID0gNH19LA0KPiA+ICsJCVsxXSA9IHsudHlwZSA9IFJURV9GTE9XX0FDVElPTl9UWVBFX1FV RVVFfSwNCj4gPiArCQlbMl0gPSB7LnR5cGUgPSBSVEVfRkxPV19BQ1RJT05fVFlQRV9FTkQsfSwN Cj4gPiArCX07DQo+ID4gKwlzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uIG1hc2tzW10gPSB7DQo+ID4g KwkJLyogQXNzaWduIHRvIE1BUksgbWFzayBhbnkgbm9uLXplcm8gdmFsdWUgdG8gbWFrZSBpdCBj b25zdGFudA0KPiAqLw0KPiA+ICsJCVswXSA9IHsudHlwZSA9IFJURV9GTE9XX0FDVElPTl9UWVBF X01BUkssDQo+ID4gKwkJCSAgIC5jb25mID0gJihzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX21hcmsp ey5pZCA9IDF9fSwNCj4gPiArCQlbMV0gPSB7LnR5cGUgPSBSVEVfRkxPV19BQ1RJT05fVFlQRV9R VUVVRX0sDQo+ID4gKwkJWzJdID0gey50eXBlID0gUlRFX0ZMT1dfQUNUSU9OX1RZUEVfRU5ELH0s DQo+ID4gKwl9Ow0KPiA+ICsNCj4gPiArCXN0cnVjdCBydGVfZmxvd19hY3Rpb25zX3RlbXBsYXRl ICphdCA9DQo+ID4gKwkJcnRlX2Zsb3dfYWN0aW9uc190ZW1wbGF0ZV9jcmVhdGUocG9ydCwgJmF0 ciwgJmFjdGlvbnMsDQo+ICZtYXNrcywgJmVycm9yKTsNCj4gDQo+IGF0cj8NCg0KU2FtZQ0KDQo+ ID4gKw0KPiA+ICtUaGUgY29uY3JldGUgdmFsdWUgZm9yIFF1ZXVlIEluZGV4IHdpbGwgYmUgcHJv dmlkZWQgYXQgdGhlIHJ1bGUgY3JlYXRpb24uDQo+ID4gKw0KPiA+ICtUZW1wbGF0ZSB0YWJsZQ0K PiA+ICteXl5eXl5eXl5eXl5eXg0KPiA+ICsNCj4gPiArQSB0ZW1wbGF0ZSB0YWJsZSBjb21iaW5l cyBhIG51bWJlciBvZiBwYXR0ZXJuIGFuZCBhY3Rpb25zIHRlbXBsYXRlcyBhbG9uZw0KPiB3aXRo DQo+ID4gK3NoYXJlZCBmbG93IHJ1bGUgYXR0cmlidXRlcyAoZ3JvdXAgSUQsIHByaW9yaXR5IGFu ZCB0cmFmZmljIGRpcmVjdGlvbikuDQo+ID4gK1RoaXMgd2F5IGEgUE1EL0hXIGNhbiBwcmVwYXJl IGFsbCB0aGUgcmVzb3VyY2VzIG5lZWRlZCBmb3IgZWZmaWNpZW50IGZsb3cNCj4gcnVsZXMNCj4g PiArY3JlYXRpb24gaW4gdGhlIGRhdGFwYXRoLiBUbyBhdm9pZCBhbnkgaGljY3VwcyBkdWUgdG8g bWVtb3J5IHJlYWxsb2NhdGlvbiwNCj4gPiArdGhlIG1heGltdW0gbnVtYmVyIG9mIGZsb3cgcnVs ZXMgaXMgZGVmaW5lZCBhdCB0YWJsZSBjcmVhdGlvbiB0aW1lLg0KPiA+ICtBbnkgZmxvdyBydWxl IGNyZWF0aW9uIGJleW9uZCB0aGUgbWF4aW11bSB0YWJsZSBzaXplIGlzIHJlamVjdGVkLg0KPiA+ ICtBcHBsaWNhdGlvbiBtYXkgY3JlYXRlIGFub3RoZXIgdGFibGUgdG8gYWNjb21tb2RhdGUgbW9y ZSBydWxlcyBpbiB0aGlzDQo+IGNhc2UuDQo+ID4gKw0KPiA+ICsuLiBjb2RlLWJsb2NrOjogYw0K PiA+ICsNCj4gPiArCXN0cnVjdCBydGVfZmxvd190ZW1wbGF0ZV90YWJsZSAqDQo+ID4gKwlydGVf Zmxvd190ZW1wbGF0ZV90YWJsZV9jcmVhdGUodWludDE2X3QgcG9ydF9pZCwNCj4gPiArCQkJCWNv bnN0IHN0cnVjdCBydGVfZmxvd190ZW1wbGF0ZV90YWJsZV9hdHRyDQo+ICp0YWJsZV9hdHRyLA0K PiA+ICsJCQkJc3RydWN0IHJ0ZV9mbG93X3BhdHRlcm5fdGVtcGxhdGUNCj4gKnBhdHRlcm5fdGVt cGxhdGVzW10sDQo+IA0KPiBjb25zdD8NCg0KTm8sIHBhdHRlcm4gdGVtcGxhdGVzIHJlZmNvdW50 IGlzIHVwZGF0ZWQgYnkgdGhlIHRhYmxlIEFQSS4NCg0KPiA+ICsJCQkJdWludDhfdCBuYl9wYXR0 ZXJuX3RlbXBsYXRlcywNCj4gPiArCQkJCXN0cnVjdCBydGVfZmxvd19hY3Rpb25zX3RlbXBsYXRl DQo+ICphY3Rpb25zX3RlbXBsYXRlc1tdLA0KPiANCj4gY29uc3Q/DQoNCkFnYWluLCByZWZjb3Vu dCBpcyB1cGRhdGVkIGluc2lkZS4NCg0KPiANCj4gPiArCQkJCXVpbnQ4X3QgbmJfYWN0aW9uc190 ZW1wbGF0ZXMsDQo+ID4gKwkJCQlzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsNCj4gPiAr DQo+ID4gK0EgdGFibGUgY2FuIGJlIGNyZWF0ZWQgb25seSBhZnRlciB0aGUgRmxvdyBSdWxlcyBt YW5hZ2VtZW50IGlzIGNvbmZpZ3VyZWQNCj4gPiArYW5kIHBhdHRlcm4gYW5kIGFjdGlvbnMgdGVt cGxhdGVzIGFyZSBjcmVhdGVkLg0KPiA+ICsNCj4gPiArLi4gY29kZS1ibG9jazo6IGMNCj4gPiAr DQo+ID4gKwlydGVfZmxvd19jb25maWd1cmUocG9ydCwgKnBvcnRfYXR0ciwgKmVycm9yKTsNCj4g DQo+IA0KPiBXaHkgZG8geW91IGhhdmUgJyonIGJlZm9yZSBwb3J0X2F0dHIgYW5kIGVycm9yIGFi b3ZlPw0KDQpUeXBvLCB0aGFua3MgZm9yIG5vdGljaW5nLg0KDQo+IA0KPiA+ICsNCj4gPiArCXN0 cnVjdCBydGVfZmxvd19wYXR0ZXJuX3RlbXBsYXRlICpwYXR0ZXJuX3RlbXBsYXRlc1swXSA9DQo+ IA0KPiBEZWZpbml0aW9uIG9mIHplcm8gc2l6ZSBhcnJheSBsb29rcyB3cm9uZy4NCj4gDQo+ID4g KwkJcnRlX2Zsb3dfcGF0dGVybl90ZW1wbGF0ZV9jcmVhdGUocG9ydCwgJml0ciwgJnBhdHRlcm4s DQo+ICZlcnJvcik7DQo+IA0KPiBpdHI/DQo+IA0KPiA+ICsJc3RydWN0IHJ0ZV9mbG93X2FjdGlv bnNfdGVtcGxhdGUgKmFjdGlvbnNfdGVtcGxhdGVzWzBdID0NCj4gDQo+IFplcm8gc2l6ZSBhcnJh eT8NCj4gDQo+ID4gKwkJcnRlX2Zsb3dfYWN0aW9uc190ZW1wbGF0ZV9jcmVhdGUocG9ydCwgJmF0 ciwgJmFjdGlvbnMsDQo+ICZtYXNrcywgJmVycm9yKTsNCj4gDQo+IGF0cj8NCj4gDQo+ID4gKw0K PiA+ICsJc3RydWN0IHJ0ZV9mbG93X3RlbXBsYXRlX3RhYmxlICp0YWJsZSA9DQo+ID4gKwkJcnRl X2Zsb3dfdGVtcGxhdGVfdGFibGVfY3JlYXRlKHBvcnQsICp0YWJsZV9hdHRyLA0KPiA+ICsJCQkJ KnBhdHRlcm5fdGVtcGxhdGVzLCBuYl9wYXR0ZXJuX3RlbXBsYXRlcywNCj4gPiArCQkJCSphY3Rp b25zX3RlbXBsYXRlcywgbmJfYWN0aW9uc190ZW1wbGF0ZXMsDQo+ID4gKwkJCQkqZXJyb3IpOw0K PiANCj4gU2ltaWxhciBxdWVzdGlvbiBoZXJlLg0KDQpSZXdyaXRpbmcgdGhpcyBzbmlwcGV0IHRv IGZpeCBldmVyeXRoaW5nLg0KDQo+IA0KPiA+ICsNCj4gPiAgIC4uIF9mbG93X2lzb2xhdGVkX21v ZGU6DQo+ID4NCj4gPiAgIEZsb3cgaXNvbGF0ZWQgbW9kZQ0KPiA+IGRpZmYgLS1naXQgYS9kb2Mv Z3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIyXzAzLnJzdA0KPiBiL2RvYy9ndWlkZXMvcmVsX25v dGVzL3JlbGVhc2VfMjJfMDMucnN0DQo+ID4gaW5kZXggMmE0N2EzN2YwYS4uNjY1NmIzNTI5NSAx MDA2NDQNCj4gPiAtLS0gYS9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIyXzAzLnJzdA0K PiA+ICsrKyBiL2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjJfMDMucnN0DQo+ID4gQEAg LTc1LDYgKzc1LDE0IEBAIE5ldyBGZWF0dXJlcw0KPiA+ICAgICAgIGVuZ2luZSwgYWxsb3dpbmcg dG8gcHJlLWFsbG9jYXRlIHNvbWUgcmVzb3VyY2VzIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuDQo+ ID4gICAgICAgQWRkZWQgYGBydGVfZmxvd19pbmZvX2dldGBgIEFQSSB0byByZXRyaWV2ZSBwcmUt Y29uZmlndXJhYmxlIHJlc291cmNlcy4NCj4gPg0KPiA+ICsgICogZXRoZGV2OiBBZGRlZCBgYHJ0 ZV9mbG93X3RlbXBsYXRlX3RhYmxlX2NyZWF0ZWBgIEFQSSB0byBncm91cCBmbG93IHJ1bGVzDQo+ ID4gKyAgICB3aXRoIHRoZSBzYW1lIGZsb3cgYXR0cmlidXRlcyBhbmQgY29tbW9uIG1hdGNoaW5n IHBhdHRlcm5zIGFuZCBhY3Rpb25zDQo+ID4gKyAgICBkZWZpbmVkIGJ5IGBgcnRlX2Zsb3dfcGF0 dGVybl90ZW1wbGF0ZV9jcmVhdGVgYCBhbmQNCj4gPiArICAgIGBgcnRlX2Zsb3dfYWN0aW9uc190 ZW1wbGF0ZV9jcmVhdGVgYCByZXNwZWN0aXZlbHkuDQo+ID4gKyAgICBDb3JyZXNwb25kaW5nIGZ1 bmN0aW9ucyB0byBkZXN0cm95IHRoZXNlIGVudGl0aWVzIGFyZToNCj4gPiArICAgIGBgcnRlX2Zs b3dfdGVtcGxhdGVfdGFibGVfZGVzdHJveWBgLA0KPiBgYHJ0ZV9mbG93X3BhdHRlcm5fdGVtcGxh dGVfZGVzdHJveWBgDQo+ID4gKyAgICBhbmQgYGBydGVfZmxvd19hY3Rpb25zX3RlbXBsYXRlX2Rl c3Ryb3lgYC4NCj4gPiArDQo+ID4gICAqICoqVXBkYXRlZCBBRl9YRFAgUE1EKioNCj4gPg0KPiA+ ICAgICAqIEFkZGVkIHN1cHBvcnQgZm9yIGxpYnhkcCA+PXYxLjIuMi4NCj4gPiBkaWZmIC0tZ2l0 IGEvbGliL2V0aGRldi9ydGVfZmxvdy5jIGIvbGliL2V0aGRldi9ydGVfZmxvdy5jDQo+ID4gaW5k ZXggNjY2MTRhZTI5Yi4uYjUzZjhjOWI4OSAxMDA2NDQNCj4gPiAtLS0gYS9saWIvZXRoZGV2L3J0 ZV9mbG93LmMNCj4gPiArKysgYi9saWIvZXRoZGV2L3J0ZV9mbG93LmMNCj4gPiBAQCAtMTQzMSwz ICsxNDMxLDE1MCBAQCBydGVfZmxvd19jb25maWd1cmUodWludDE2X3QgcG9ydF9pZCwNCj4gPiAg IAkJCQkgIFJURV9GTE9XX0VSUk9SX1RZUEVfVU5TUEVDSUZJRUQsDQo+ID4gICAJCQkJICBOVUxM LCBydGVfc3RyZXJyb3IoRU5PVFNVUCkpOw0KPiA+ICAgfQ0KPiA+ICsNCj4gPiArc3RydWN0IHJ0 ZV9mbG93X3BhdHRlcm5fdGVtcGxhdGUgKg0KPiA+ICtydGVfZmxvd19wYXR0ZXJuX3RlbXBsYXRl X2NyZWF0ZSh1aW50MTZfdCBwb3J0X2lkLA0KPiA+ICsJCWNvbnN0IHN0cnVjdCBydGVfZmxvd19w YXR0ZXJuX3RlbXBsYXRlX2F0dHIgKnRlbXBsYXRlX2F0dHIsDQo+ID4gKwkJY29uc3Qgc3RydWN0 IHJ0ZV9mbG93X2l0ZW0gcGF0dGVybltdLA0KPiA+ICsJCXN0cnVjdCBydGVfZmxvd19lcnJvciAq ZXJyb3IpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBydGVfZXRoX2RldiAqZGV2ID0gJnJ0ZV9ldGhf ZGV2aWNlc1twb3J0X2lkXTsNCj4gPiArCWNvbnN0IHN0cnVjdCBydGVfZmxvd19vcHMgKm9wcyA9 IHJ0ZV9mbG93X29wc19nZXQocG9ydF9pZCwgZXJyb3IpOw0KPiA+ICsJc3RydWN0IHJ0ZV9mbG93 X3BhdHRlcm5fdGVtcGxhdGUgKnRlbXBsYXRlOw0KPiA+ICsNCj4gPiArCWlmICh1bmxpa2VseSgh b3BzKSkNCj4gPiArCQlyZXR1cm4gTlVMTDsNCj4gPiArCWlmIChsaWtlbHkoISFvcHMtPnBhdHRl cm5fdGVtcGxhdGVfY3JlYXRlKSkgew0KPiANCj4gRG9uJ3Qgd2UgbmVlZCBhbnkgc3RhdGUgY2hl Y2tzPw0KPiANCj4gQ2hlY2sgcGF0dGVybiB2cyBOVUxMPw0KDQpTdGlsbCB0aGUgc2FtZSBzaXR1 YXRpb24sIG5vIE5VTEwgY2hlY2tzIGVsc2V3aGVyZSBpbiBydGUgZmxvdyBBUEkuDQoNCj4gDQo+ ID4gKwkJdGVtcGxhdGUgPSBvcHMtPnBhdHRlcm5fdGVtcGxhdGVfY3JlYXRlKGRldiwgdGVtcGxh dGVfYXR0ciwNCj4gPiArCQkJCQkJICAgICBwYXR0ZXJuLCBlcnJvcik7DQo+ID4gKwkJaWYgKHRl bXBsYXRlID09IE5VTEwpDQo+ID4gKwkJCWZsb3dfZXJyKHBvcnRfaWQsIC1ydGVfZXJybm8sIGVy cm9yKTsNCj4gPiArCQlyZXR1cm4gdGVtcGxhdGU7DQo+ID4gKwl9DQo+ID4gKwlydGVfZmxvd19l cnJvcl9zZXQoZXJyb3IsIEVOT1RTVVAsDQo+ID4gKwkJCSAgIFJURV9GTE9XX0VSUk9SX1RZUEVf VU5TUEVDSUZJRUQsDQo+ID4gKwkJCSAgIE5VTEwsIHJ0ZV9zdHJlcnJvcihFTk9UU1VQKSk7DQo+ ID4gKwlyZXR1cm4gTlVMTDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAraW50DQo+ID4gK3J0ZV9mbG93 X3BhdHRlcm5fdGVtcGxhdGVfZGVzdHJveSh1aW50MTZfdCBwb3J0X2lkLA0KPiA+ICsJCXN0cnVj dCBydGVfZmxvd19wYXR0ZXJuX3RlbXBsYXRlICpwYXR0ZXJuX3RlbXBsYXRlLA0KPiA+ICsJCXN0 cnVjdCBydGVfZmxvd19lcnJvciAqZXJyb3IpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBydGVfZXRo X2RldiAqZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gPiArCWNvbnN0IHN0cnVj dCBydGVfZmxvd19vcHMgKm9wcyA9IHJ0ZV9mbG93X29wc19nZXQocG9ydF9pZCwgZXJyb3IpOw0K PiA+ICsNCj4gPiArCWlmICh1bmxpa2VseSghb3BzKSkNCj4gPiArCQlyZXR1cm4gLXJ0ZV9lcnJu bzsNCj4gPiArCWlmIChsaWtlbHkoISFvcHMtPnBhdHRlcm5fdGVtcGxhdGVfZGVzdHJveSkpIHsN Cj4gDQo+IElNSE8gd2Ugc2hvdWxkIHJldHVybiBzdWNjZXNzIGhlcmUgaWYgcGF0dGVybl90ZW1w bGF0ZSBpcyBOVUxMDQoNCkp1c3QgbGlrZSBpbiBydGVfZmxvd19kZXN0cm95KCkgaXQgaXMgdXAg dG8gUE1EIGRyaXZlciB0byBkZWNpZGUuDQoNCj4gPiArCQlyZXR1cm4gZmxvd19lcnIocG9ydF9p ZCwNCj4gPiArCQkJCW9wcy0+cGF0dGVybl90ZW1wbGF0ZV9kZXN0cm95KGRldiwNCj4gPiArCQkJ CQkJCSAgICAgIHBhdHRlcm5fdGVtcGxhdGUsDQo+ID4gKwkJCQkJCQkgICAgICBlcnJvciksDQo+ ID4gKwkJCQllcnJvcik7DQo+ID4gKwl9DQo+ID4gKwlyZXR1cm4gcnRlX2Zsb3dfZXJyb3Jfc2V0 KGVycm9yLCBFTk9UU1VQLA0KPiA+ICsJCQkJICBSVEVfRkxPV19FUlJPUl9UWVBFX1VOU1BFQ0lG SUVELA0KPiA+ICsJCQkJICBOVUxMLCBydGVfc3RyZXJyb3IoRU5PVFNVUCkpOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uc190ZW1wbGF0ZSAqDQo+ID4gK3J0ZV9m bG93X2FjdGlvbnNfdGVtcGxhdGVfY3JlYXRlKHVpbnQxNl90IHBvcnRfaWQsDQo+ID4gKwkJCWNv bnN0IHN0cnVjdCBydGVfZmxvd19hY3Rpb25zX3RlbXBsYXRlX2F0dHINCj4gKnRlbXBsYXRlX2F0 dHIsDQo+ID4gKwkJCWNvbnN0IHN0cnVjdCBydGVfZmxvd19hY3Rpb24gYWN0aW9uc1tdLA0KPiA+ ICsJCQljb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uIG1hc2tzW10sDQo+ID4gKwkJCXN0cnVj dCBydGVfZmxvd19lcnJvciAqZXJyb3IpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBydGVfZXRoX2Rl diAqZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gPiArCWNvbnN0IHN0cnVjdCBy dGVfZmxvd19vcHMgKm9wcyA9IHJ0ZV9mbG93X29wc19nZXQocG9ydF9pZCwgZXJyb3IpOw0KPiA+ ICsJc3RydWN0IHJ0ZV9mbG93X2FjdGlvbnNfdGVtcGxhdGUgKnRlbXBsYXRlOw0KPiA+ICsNCj4g PiArCWlmICh1bmxpa2VseSghb3BzKSkNCj4gPiArCQlyZXR1cm4gTlVMTDsNCj4gPiArCWlmIChs aWtlbHkoISFvcHMtPmFjdGlvbnNfdGVtcGxhdGVfY3JlYXRlKSkgew0KPiANCj4gU3RhdGUgY2hl Y2tzPw0KPiANCj4gQ2hlY2sgYWN0aW9ucyBhbmQgbWFza3MgdnMgTlVMTD8NCg0KTm8sIHNvcnJ5 Lg0KDQo+IA0KPiA+ICsJCXRlbXBsYXRlID0gb3BzLT5hY3Rpb25zX3RlbXBsYXRlX2NyZWF0ZShk ZXYsIHRlbXBsYXRlX2F0dHIsDQo+ID4gKwkJCQkJCQlhY3Rpb25zLCBtYXNrcywgZXJyb3IpOw0K PiA+ICsJCWlmICh0ZW1wbGF0ZSA9PSBOVUxMKQ0KPiA+ICsJCQlmbG93X2Vycihwb3J0X2lkLCAt cnRlX2Vycm5vLCBlcnJvcik7DQo+ID4gKwkJcmV0dXJuIHRlbXBsYXRlOw0KPiA+ICsJfQ0KPiA+ ICsJcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBFTk9UU1VQLA0KPiA+ICsJCQkgICBSVEVfRkxP V19FUlJPUl9UWVBFX1VOU1BFQ0lGSUVELA0KPiA+ICsJCQkgICBOVUxMLCBydGVfc3RyZXJyb3Io RU5PVFNVUCkpOw0KPiA+ICsJcmV0dXJuIE5VTEw7DQo+ID4gK30NCj4gPiArDQo+ID4gK2ludA0K PiA+ICtydGVfZmxvd19hY3Rpb25zX3RlbXBsYXRlX2Rlc3Ryb3kodWludDE2X3QgcG9ydF9pZCwN Cj4gPiArCQkJc3RydWN0IHJ0ZV9mbG93X2FjdGlvbnNfdGVtcGxhdGUgKmFjdGlvbnNfdGVtcGxh dGUsDQo+ID4gKwkJCXN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJyb3IpDQo+ID4gK3sNCj4gPiAr CXN0cnVjdCBydGVfZXRoX2RldiAqZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4g PiArCWNvbnN0IHN0cnVjdCBydGVfZmxvd19vcHMgKm9wcyA9IHJ0ZV9mbG93X29wc19nZXQocG9y dF9pZCwgZXJyb3IpOw0KPiA+ICsNCj4gPiArCWlmICh1bmxpa2VseSghb3BzKSkNCj4gPiArCQly ZXR1cm4gLXJ0ZV9lcnJubzsNCj4gPiArCWlmIChsaWtlbHkoISFvcHMtPmFjdGlvbnNfdGVtcGxh dGVfZGVzdHJveSkpIHsNCj4gDQo+IElNSE8gd2Ugc2hvdWxkIHJldHVybiBzdWNjZXNzIGhlcmUg aWYgYWN0aW9uc190ZW1wbGF0ZSBpcyBOVUxMDQoNCkp1c3QgbGlrZSBpbiBydGVfZmxvd19kZXN0 cm95KCkgaXQgaXMgdXAgdG8gUE1EIGRyaXZlciB0byBkZWNpZGUuDQoNCj4gDQo+ID4gKwkJcmV0 dXJuIGZsb3dfZXJyKHBvcnRfaWQsDQo+ID4gKwkJCQlvcHMtPmFjdGlvbnNfdGVtcGxhdGVfZGVz dHJveShkZXYsDQo+ID4gKwkJCQkJCQkgICAgICBhY3Rpb25zX3RlbXBsYXRlLA0KPiA+ICsJCQkJ CQkJICAgICAgZXJyb3IpLA0KPiA+ICsJCQkJZXJyb3IpOw0KPiA+ICsJfQ0KPiA+ICsJcmV0dXJu IHJ0ZV9mbG93X2Vycm9yX3NldChlcnJvciwgRU5PVFNVUCwNCj4gPiArCQkJCSAgUlRFX0ZMT1df RVJST1JfVFlQRV9VTlNQRUNJRklFRCwNCj4gPiArCQkJCSAgTlVMTCwgcnRlX3N0cmVycm9yKEVO T1RTVVApKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RydWN0IHJ0ZV9mbG93X3RlbXBsYXRlX3Rh YmxlICoNCj4gPiArcnRlX2Zsb3dfdGVtcGxhdGVfdGFibGVfY3JlYXRlKHVpbnQxNl90IHBvcnRf aWQsDQo+ID4gKwkJCWNvbnN0IHN0cnVjdCBydGVfZmxvd190ZW1wbGF0ZV90YWJsZV9hdHRyICp0 YWJsZV9hdHRyLA0KPiA+ICsJCQlzdHJ1Y3QgcnRlX2Zsb3dfcGF0dGVybl90ZW1wbGF0ZQ0KPiAq cGF0dGVybl90ZW1wbGF0ZXNbXSwNCj4gPiArCQkJdWludDhfdCBuYl9wYXR0ZXJuX3RlbXBsYXRl cywNCj4gPiArCQkJc3RydWN0IHJ0ZV9mbG93X2FjdGlvbnNfdGVtcGxhdGUNCj4gKmFjdGlvbnNf dGVtcGxhdGVzW10sDQo+ID4gKwkJCXVpbnQ4X3QgbmJfYWN0aW9uc190ZW1wbGF0ZXMsDQo+ID4g KwkJCXN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJyb3IpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBy dGVfZXRoX2RldiAqZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gPiArCWNvbnN0 IHN0cnVjdCBydGVfZmxvd19vcHMgKm9wcyA9IHJ0ZV9mbG93X29wc19nZXQocG9ydF9pZCwgZXJy b3IpOw0KPiA+ICsJc3RydWN0IHJ0ZV9mbG93X3RlbXBsYXRlX3RhYmxlICp0YWJsZTsNCj4gPiAr DQo+ID4gKwlpZiAodW5saWtlbHkoIW9wcykpDQo+ID4gKwkJcmV0dXJuIE5VTEw7DQo+ID4gKwlp ZiAobGlrZWx5KCEhb3BzLT50ZW1wbGF0ZV90YWJsZV9jcmVhdGUpKSB7DQo+IA0KPiBBcmd1bWVu dCBzYW5pdHkgY2hlY2tzIGhlcmUuIGFycmF5IE5VTEwgd2hlbiBzaXplIGlzIG5vdCAwLg0KDQpI YXRlIHRvIHNheSBubyBzbyBtYW55IHRpbWVzLCBidXQgSSBjYW5ub3QgaGVscCBpdC4NCg0KPiAN Cj4gPiArCQl0YWJsZSA9IG9wcy0+dGVtcGxhdGVfdGFibGVfY3JlYXRlKGRldiwgdGFibGVfYXR0 ciwNCj4gPiArCQkJCQlwYXR0ZXJuX3RlbXBsYXRlcywNCj4gbmJfcGF0dGVybl90ZW1wbGF0ZXMs DQo+ID4gKwkJCQkJYWN0aW9uc190ZW1wbGF0ZXMsDQo+IG5iX2FjdGlvbnNfdGVtcGxhdGVzLA0K PiA+ICsJCQkJCWVycm9yKTsNCj4gPiArCQlpZiAodGFibGUgPT0gTlVMTCkNCj4gPiArCQkJZmxv d19lcnIocG9ydF9pZCwgLXJ0ZV9lcnJubywgZXJyb3IpOw0KPiA+ICsJCXJldHVybiB0YWJsZTsN Cj4gPiArCX0NCj4gPiArCXJ0ZV9mbG93X2Vycm9yX3NldChlcnJvciwgRU5PVFNVUCwNCj4gPiAr CQkJICAgUlRFX0ZMT1dfRVJST1JfVFlQRV9VTlNQRUNJRklFRCwNCj4gPiArCQkJICAgTlVMTCwg cnRlX3N0cmVycm9yKEVOT1RTVVApKTsNCj4gPiArCXJldHVybiBOVUxMOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtpbnQNCj4gPiArcnRlX2Zsb3dfdGVtcGxhdGVfdGFibGVfZGVzdHJveSh1aW50MTZf dCBwb3J0X2lkLA0KPiA+ICsJCQkJc3RydWN0IHJ0ZV9mbG93X3RlbXBsYXRlX3RhYmxlDQo+ICp0 ZW1wbGF0ZV90YWJsZSwNCj4gPiArCQkJCXN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJyb3IpDQo+ ID4gK3sNCj4gPiArCXN0cnVjdCBydGVfZXRoX2RldiAqZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1tw b3J0X2lkXTsNCj4gPiArCWNvbnN0IHN0cnVjdCBydGVfZmxvd19vcHMgKm9wcyA9IHJ0ZV9mbG93 X29wc19nZXQocG9ydF9pZCwgZXJyb3IpOw0KPiA+ICsNCj4gPiArCWlmICh1bmxpa2VseSghb3Bz KSkNCj4gPiArCQlyZXR1cm4gLXJ0ZV9lcnJubzsNCj4gPiArCWlmIChsaWtlbHkoISFvcHMtPnRl bXBsYXRlX3RhYmxlX2Rlc3Ryb3kpKSB7DQo+IA0KPiBSZXR1cm4gc3VjY2VzcyBpZiB0ZW1wbGF0 ZV90YWJsZSBpcyBOVUxMDQoNCkp1c3QgbGlrZSBpbiBydGVfZmxvd19kZXN0cm95KCkgaXQgaXMg dXAgdG8gUE1EIGRyaXZlciB0byBkZWNpZGUuDQogDQo+ID4gKwkJcmV0dXJuIGZsb3dfZXJyKHBv cnRfaWQsDQo+ID4gKwkJCQlvcHMtPnRlbXBsYXRlX3RhYmxlX2Rlc3Ryb3koZGV2LA0KPiA+ICsJ CQkJCQkJICAgIHRlbXBsYXRlX3RhYmxlLA0KPiA+ICsJCQkJCQkJICAgIGVycm9yKSwNCj4gPiAr CQkJCWVycm9yKTsNCj4gPiArCX0NCj4gPiArCXJldHVybiBydGVfZmxvd19lcnJvcl9zZXQoZXJy b3IsIEVOT1RTVVAsDQo+ID4gKwkJCQkgIFJURV9GTE9XX0VSUk9SX1RZUEVfVU5TUEVDSUZJRUQs DQo+ID4gKwkJCQkgIE5VTEwsIHJ0ZV9zdHJlcnJvcihFTk9UU1VQKSk7DQo+ID4gK30NCj4gPiBk aWZmIC0tZ2l0IGEvbGliL2V0aGRldi9ydGVfZmxvdy5oIGIvbGliL2V0aGRldi9ydGVfZmxvdy5o DQo+ID4gaW5kZXggOTJiZTJhOWE4OS4uZTg3ZGI1YTU0MCAxMDA2NDQNCj4gPiAtLS0gYS9saWIv ZXRoZGV2L3J0ZV9mbG93LmgNCj4gPiArKysgYi9saWIvZXRoZGV2L3J0ZV9mbG93LmgNCj4gPiBA QCAtNDk2MSw2ICs0OTYxLDI2NiBAQCBydGVfZmxvd19jb25maWd1cmUodWludDE2X3QgcG9ydF9p ZCwNCj4gPiAgIAkJICAgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X3BvcnRfYXR0ciAqcG9ydF9hdHRy LA0KPiA+ICAgCQkgICBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsNCj4gPg0KPiA+ICsv KioNCj4gPiArICogT3BhcXVlIHR5cGUgcmV0dXJuZWQgYWZ0ZXIgc3VjY2Vzc2Z1bCBjcmVhdGlv biBvZiBwYXR0ZXJuIHRlbXBsYXRlLg0KPiA+ICsgKiBUaGlzIGhhbmRsZSBjYW4gYmUgdXNlZCB0 byBtYW5hZ2UgdGhlIGNyZWF0ZWQgcGF0dGVybiB0ZW1wbGF0ZS4NCj4gPiArICovDQo+ID4gK3N0 cnVjdCBydGVfZmxvd19wYXR0ZXJuX3RlbXBsYXRlOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAq IEB3YXJuaW5nDQo+ID4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3 aXRob3V0IHByaW9yIG5vdGljZS4NCj4gPiArICoNCj4gPiArICogRmxvdyBwYXR0ZXJuIHRlbXBs YXRlIGF0dHJpYnV0ZXMuDQo+ID4gKyAqLw0KPiA+ICtfX2V4dGVuc2lvbl9fDQo+ID4gK3N0cnVj dCBydGVfZmxvd19wYXR0ZXJuX3RlbXBsYXRlX2F0dHIgew0KPiA+ICsJLyoqDQo+ID4gKwkgKiBS ZWxheGVkIG1hdGNoaW5nIHBvbGljeS4NCj4gPiArCSAqIC0gUE1EIG1heSBtYXRjaCBvbmx5IG9u IGl0ZW1zIHdpdGggbWFzayBtZW1iZXIgc2V0IGFuZCBza2lwDQo+ID4gKwkgKiBtYXRjaGluZyBv biBwcm90b2NvbCBsYXllcnMgc3BlY2lmaWVkIHdpdGhvdXQgYW55IG1hc2tzLg0KPiA+ICsJICog LSBJZiBub3Qgc2V0LCBQTUQgd2lsbCBtYXRjaCBvbiBwcm90b2NvbCBsYXllcnMNCj4gPiArCSAq IHNwZWNpZmllZCB3aXRob3V0IGFueSBtYXNrcyBhcyB3ZWxsLg0KPiA+ICsJICogLSBQYWNrZXQg ZGF0YSBtdXN0IGJlIHN0YWNrZWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlDQo+ID4gKwkgKiBw cm90b2NvbCBsYXllcnMgdG8gbWF0Y2ggaW5zaWRlIHBhY2tldHMsIHN0YXJ0aW5nIGZyb20gdGhl IGxvd2VzdC4NCj4gPiArCSAqLw0KPiA+ICsJdWludDMyX3QgcmVsYXhlZF9tYXRjaGluZzoxOw0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIEB3YXJuaW5nDQo+ID4gKyAqIEBiIEVY UEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZS4NCj4g PiArICoNCj4gPiArICogQ3JlYXRlIHBhdHRlcm4gdGVtcGxhdGUuDQo+IA0KPiBDcmVhdGUgZmxv dyBwYXR0ZXJuIHRlbXBsYXRlLg0KDQpPay4NCg0KPiA+ICsgKg0KPiA+ICsgKiBUaGUgcGF0dGVy biB0ZW1wbGF0ZSBkZWZpbmVzIGNvbW1vbiBtYXRjaGluZyBmaWVsZHMgd2l0aG91dCB2YWx1ZXMu DQo+ID4gKyAqIEZvciBleGFtcGxlLCBtYXRjaGluZyBvbiA1IHR1cGxlIFRDUCBmbG93LCB0aGUg dGVtcGxhdGUgd2lsbCBiZQ0KPiA+ICsgKiBldGgobnVsbCkgKyBJUHY0KHNvdXJjZSArIGRlc3Qp ICsgVENQKHNfcG9ydCArIGRfcG9ydCksDQo+ID4gKyAqIHdoaWxlIHZhbHVlcyBmb3IgZWFjaCBy dWxlIHdpbGwgYmUgc2V0IGR1cmluZyB0aGUgZmxvdyBydWxlIGNyZWF0aW9uLg0KPiA+ICsgKiBU aGUgbnVtYmVyIGFuZCBvcmRlciBvZiBpdGVtcyBpbiB0aGUgdGVtcGxhdGUgbXVzdCBiZSB0aGUg c2FtZQ0KPiA+ICsgKiBhdCB0aGUgcnVsZSBjcmVhdGlvbi4NCj4gPiArICoNCj4gPiArICogQHBh cmFtIHBvcnRfaWQNCj4gPiArICogICBQb3J0IGlkZW50aWZpZXIgb2YgRXRoZXJuZXQgZGV2aWNl Lg0KPiA+ICsgKiBAcGFyYW1baW5dIHRlbXBsYXRlX2F0dHINCj4gPiArICogICBQYXR0ZXJuIHRl bXBsYXRlIGF0dHJpYnV0ZXMuDQo+ID4gKyAqIEBwYXJhbVtpbl0gcGF0dGVybg0KPiA+ICsgKiAg IFBhdHRlcm4gc3BlY2lmaWNhdGlvbiAobGlzdCB0ZXJtaW5hdGVkIGJ5IHRoZSBFTkQgcGF0dGVy biBpdGVtKS4NCj4gPiArICogICBUaGUgc3BlYyBtZW1iZXIgb2YgYW4gaXRlbSBpcyBub3QgdXNl ZCB1bmxlc3MgdGhlIGVuZCBtZW1iZXIgaXMgdXNlZC4NCj4gDQo+IEludGVycHJldGF0aW9uIG9m IHRoZSBwYXR0ZXJuIG1heSBkZXBlbmQgb24gdHJhbnNmZXIgdnMgbm9uLXRyYW5zZmVyDQo+IHJ1 bGUgdG8gYmUgdXNlZC4gSXQgaXMgZXNzZW50aWFsIGluZm9ybWF0aW9uIGFuZCB3ZSBzaG91bGQg cHJvdmlkZSBpdA0KPiB3aGVuIHBhdHRlcm4gdGVtcGxhdGUgaXMgY3JlYXRlZC4NCj4gDQo+IFRo ZSBpbmZvcm1hdGlvbiBpcyBwcm92aWRlZCBvbiB0YWJsZSBzdGFnZSwgYnV0IGl0IGlzIHRvbyBs YXRlLg0KDQpXaHkgaXMgaXQgdG9vIGxhdGU/IEFwcGxpY2F0aW9uIGtub3dzIHdoaWNoIHRlbXBs YXRlIGdvZXMgdG8gd2hpY2ggdGFibGUuDQpBbmQgdGhlIHBhdHRlcm4gaXMgZ2VuZXJpYyB0byBh Y2NvbW1vZGF0ZSBhbnl0aGluZywgdXNlciBqdXN0IG5lZWQgdG8gcHV0IGl0DQppbnRvIHRoZSBy aWdodCB0YWJsZS4NCg0KPiANCj4gPiArICogQHBhcmFtW291dF0gZXJyb3INCj4gPiArICogICBQ ZXJmb3JtIHZlcmJvc2UgZXJyb3IgcmVwb3J0aW5nIGlmIG5vdCBOVUxMLg0KPiA+ICsgKiAgIFBN RHMgaW5pdGlhbGl6ZSB0aGlzIHN0cnVjdHVyZSBpbiBjYXNlIG9mIGVycm9yIG9ubHkuDQo+ID4g KyAqDQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICBIYW5kbGUgb24gc3VjY2VzcywgTlVMTCBv dGhlcndpc2UgYW5kIHJ0ZV9lcnJubyBpcyBzZXQuDQo+ID4gKyAqLw0KPiA+ICtfX3J0ZV9leHBl cmltZW50YWwNCj4gPiArc3RydWN0IHJ0ZV9mbG93X3BhdHRlcm5fdGVtcGxhdGUgKg0KPiA+ICty dGVfZmxvd19wYXR0ZXJuX3RlbXBsYXRlX2NyZWF0ZSh1aW50MTZfdCBwb3J0X2lkLA0KPiA+ICsJ CWNvbnN0IHN0cnVjdCBydGVfZmxvd19wYXR0ZXJuX3RlbXBsYXRlX2F0dHIgKnRlbXBsYXRlX2F0 dHIsDQo+ID4gKwkJY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW0gcGF0dGVybltdLA0KPiA+ICsJ CXN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJyb3IpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAq IEB3YXJuaW5nDQo+ID4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3 aXRob3V0IHByaW9yIG5vdGljZS4NCj4gPiArICoNCj4gPiArICogRGVzdHJveSBwYXR0ZXJuIHRl bXBsYXRlLg0KPiANCj4gRGVzdHJveSBmbG93IHBhdHRlcm4gdGVtcGxhdGUuDQoNCk9rLg0KDQo+ ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCBvbmx5IHdoZW4NCj4g PiArICogdGhlcmUgYXJlIG5vIG1vcmUgdGFibGVzIHJlZmVyZW5jaW5nIHRoaXMgdGVtcGxhdGUu DQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBwb3J0X2lkDQo+ID4gKyAqICAgUG9ydCBpZGVudGlm aWVyIG9mIEV0aGVybmV0IGRldmljZS4NCj4gPiArICogQHBhcmFtW2luXSBwYXR0ZXJuX3RlbXBs YXRlDQo+ID4gKyAqICAgSGFuZGxlIG9mIHRoZSB0ZW1wbGF0ZSB0byBiZSBkZXN0cm95ZWQuDQo+ ID4gKyAqIEBwYXJhbVtvdXRdIGVycm9yDQo+ID4gKyAqICAgUGVyZm9ybSB2ZXJib3NlIGVycm9y IHJlcG9ydGluZyBpZiBub3QgTlVMTC4NCj4gPiArICogICBQTURzIGluaXRpYWxpemUgdGhpcyBz dHJ1Y3R1cmUgaW4gY2FzZSBvZiBlcnJvciBvbmx5Lg0KPiA+ICsgKg0KPiA+ICsgKiBAcmV0dXJu DQo+ID4gKyAqICAgMCBvbiBzdWNjZXNzLCBhIG5lZ2F0aXZlIGVycm5vIHZhbHVlIG90aGVyd2lz ZSBhbmQgcnRlX2Vycm5vIGlzIHNldC4NCj4gPiArICovDQo+ID4gK19fcnRlX2V4cGVyaW1lbnRh bA0KPiA+ICtpbnQNCj4gPiArcnRlX2Zsb3dfcGF0dGVybl90ZW1wbGF0ZV9kZXN0cm95KHVpbnQx Nl90IHBvcnRfaWQsDQo+ID4gKwkJc3RydWN0IHJ0ZV9mbG93X3BhdHRlcm5fdGVtcGxhdGUgKnBh dHRlcm5fdGVtcGxhdGUsDQo+ID4gKwkJc3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnJvcik7DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICogT3BhcXVlIHR5cGUgcmV0dXJuZWQgYWZ0ZXIgc3VjY2Vz c2Z1bCBjcmVhdGlvbiBvZiBhY3Rpb25zIHRlbXBsYXRlLg0KPiA+ICsgKiBUaGlzIGhhbmRsZSBj YW4gYmUgdXNlZCB0byBtYW5hZ2UgdGhlIGNyZWF0ZWQgYWN0aW9ucyB0ZW1wbGF0ZS4NCj4gPiAr ICovDQo+ID4gK3N0cnVjdCBydGVfZmxvd19hY3Rpb25zX3RlbXBsYXRlOw0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAqIEB3YXJuaW5nDQo+ID4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkg bWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZS4NCj4gPiArICoNCj4gPiArICogRmxvdyBh Y3Rpb25zIHRlbXBsYXRlIGF0dHJpYnV0ZXMuDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgcnRlX2Zs b3dfYWN0aW9uc190ZW1wbGF0ZV9hdHRyOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIEB3YXJu aW5nDQo+ID4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0 IHByaW9yIG5vdGljZS4NCj4gPiArICoNCj4gPiArICogQ3JlYXRlIGFjdGlvbnMgdGVtcGxhdGUu DQo+IA0KPiBDcmVhdGUgZmxvdyBydWxlIGFjdGlvbnMgdGVtcGxhdGUuDQoNClllcywgZmluYWxs eSBjb21wZW5zYXRpbmcgZm9yIG11bHRpcGxlIG5vJ3MuDQoNCj4gPiArICoNCj4gPiArICogVGhl IGFjdGlvbnMgdGVtcGxhdGUgaG9sZHMgYSBsaXN0IG9mIGFjdGlvbiB0eXBlcyB3aXRob3V0IHZh bHVlcy4NCj4gPiArICogRm9yIGV4YW1wbGUsIHRoZSB0ZW1wbGF0ZSB0byBjaGFuZ2UgVENQIHBv cnRzIGlzIFRDUChzX3BvcnQgKyBkX3BvcnQpLA0KPiA+ICsgKiB3aGlsZSB2YWx1ZXMgZm9yIGVh Y2ggcnVsZSB3aWxsIGJlIHNldCBkdXJpbmcgdGhlIGZsb3cgcnVsZSBjcmVhdGlvbi4NCj4gPiAr ICogVGhlIG51bWJlciBhbmQgb3JkZXIgb2YgYWN0aW9ucyBpbiB0aGUgdGVtcGxhdGUgbXVzdCBi ZSB0aGUgc2FtZQ0KPiA+ICsgKiBhdCB0aGUgcnVsZSBjcmVhdGlvbi4NCj4gDQo+IEFnYWluLCBp dCBoaWdobHkgZGVwZW5kcyBvbiB0cmFuc2ZlciB2cyBub24tdHJhbnNmZXIuIE1vcmVvdmVyLA0K PiBhcHBsaWNhdGlvbiBkZWZpbml0ZWx5IGtub3cgaXQuIFNvLCBpdCBzaG91bGQgc2F5IGlmIHRo ZSBhY3Rpb24NCj4gaXMgaW50ZW5kZWQgZm9yIHRyYW5zZmVyIG9yIG5vbi10cmFuc2ZlciBmbG93 IHJ1bGUuDQoNCkl0IGlzIHVwIHRvIGFwcGxpY2F0aW9uIHRvIGRlZmluZSB3aGljaCBwYXR0ZXJu IGl0IGlzIGdvaW5nIHRvIHVzZSBpbiBkaWZmZXJlbnQgdGFibGVzLg0KDQo+ID4gKyAqDQo+ID4g KyAqIEBwYXJhbSBwb3J0X2lkDQo+ID4gKyAqICAgUG9ydCBpZGVudGlmaWVyIG9mIEV0aGVybmV0 IGRldmljZS4NCj4gPiArICogQHBhcmFtW2luXSB0ZW1wbGF0ZV9hdHRyDQo+ID4gKyAqICAgVGVt cGxhdGUgYXR0cmlidXRlcy4NCj4gPiArICogQHBhcmFtW2luXSBhY3Rpb25zDQo+ID4gKyAqICAg QXNzb2NpYXRlZCBhY3Rpb25zIChsaXN0IHRlcm1pbmF0ZWQgYnkgdGhlIEVORCBhY3Rpb24pLg0K PiA+ICsgKiAgIFRoZSBzcGVjIG1lbWJlciBpcyBvbmx5IHVzZWQgaWYgQHAgbWFza3Mgc3BlYyBp cyBub24temVyby4NCj4gPiArICogQHBhcmFtW2luXSBtYXNrcw0KPiA+ICsgKiAgIExpc3Qgb2Yg YWN0aW9ucyB0aGF0IG1hcmtzIHdoaWNoIG9mIHRoZSBhY3Rpb24ncyBtZW1iZXIgaXMgY29uc3Rh bnQuDQo+ID4gKyAqICAgQSBtYXNrIGhhcyB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlIGNvcnJlc3Bv bmRpbmcgYWN0aW9uLg0KPiA+ICsgKiAgIElmIHRoZSBhY3Rpb24gZmllbGQgaW4gQHAgbWFza3Mg aXMgbm90IDAsDQo+ID4gKyAqICAgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gYW4gYWN0aW9u IGZyb20gQHAgYWN0aW9ucyB3aWxsIGJlIHRoZSBwYXJ0DQo+ID4gKyAqICAgb2YgdGhlIHRlbXBs YXRlIGFuZCB1c2VkIGluIGFsbCBmbG93IHJ1bGVzLg0KPiA+ICsgKiAgIFRoZSBvcmRlciBvZiBh Y3Rpb25zIGluIEBwIG1hc2tzIGlzIHRoZSBzYW1lIGFzIGluIEBwIGFjdGlvbnMuDQo+ID4gKyAq ICAgSW4gY2FzZSBvZiBpbmRpcmVjdCBhY3Rpb25zIHByZXNlbnQgaW4gQHAgYWN0aW9ucywNCj4g PiArICogICB0aGUgYWN0dWFsIGFjdGlvbiB0eXBlIHNob3VsZCBiZSBwcmVzZW50IGluIEBwIG1h c2suDQo+ID4gKyAqIEBwYXJhbVtvdXRdIGVycm9yDQo+ID4gKyAqICAgUGVyZm9ybSB2ZXJib3Nl IGVycm9yIHJlcG9ydGluZyBpZiBub3QgTlVMTC4NCj4gPiArICogICBQTURzIGluaXRpYWxpemUg dGhpcyBzdHJ1Y3R1cmUgaW4gY2FzZSBvZiBlcnJvciBvbmx5Lg0KPiA+ICsgKg0KPiA+ICsgKiBA cmV0dXJuDQo+ID4gKyAqICAgSGFuZGxlIG9uIHN1Y2Nlc3MsIE5VTEwgb3RoZXJ3aXNlIGFuZCBy dGVfZXJybm8gaXMgc2V0Lg0KPiA+ICsgKi8NCj4gPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4g K3N0cnVjdCBydGVfZmxvd19hY3Rpb25zX3RlbXBsYXRlICoNCj4gPiArcnRlX2Zsb3dfYWN0aW9u c190ZW1wbGF0ZV9jcmVhdGUodWludDE2X3QgcG9ydF9pZCwNCj4gPiArCQljb25zdCBzdHJ1Y3Qg cnRlX2Zsb3dfYWN0aW9uc190ZW1wbGF0ZV9hdHRyICp0ZW1wbGF0ZV9hdHRyLA0KPiA+ICsJCWNv bnN0IHN0cnVjdCBydGVfZmxvd19hY3Rpb24gYWN0aW9uc1tdLA0KPiA+ICsJCWNvbnN0IHN0cnVj dCBydGVfZmxvd19hY3Rpb24gbWFza3NbXSwNCj4gPiArCQlzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3Ig KmVycm9yKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBAd2FybmluZw0KPiA+ICsgKiBAYiBF WFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ ID4gKyAqDQo+ID4gKyAqIERlc3Ryb3kgYWN0aW9ucyB0ZW1wbGF0ZS4NCj4gDQo+IERlc3Ryb3kg ZmxvdyBydWxlIGFjdGlvbnMgdGVtcGxhdGUuDQoNClllcywgYWdhaW4uDQoNCj4gDQo+ID4gKyAq DQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCBvbmx5IHdoZW4NCj4gPiArICog dGhlcmUgYXJlIG5vIG1vcmUgdGFibGVzIHJlZmVyZW5jaW5nIHRoaXMgdGVtcGxhdGUuDQo+ID4g KyAqDQo+ID4gKyAqIEBwYXJhbSBwb3J0X2lkDQo+ID4gKyAqICAgUG9ydCBpZGVudGlmaWVyIG9m IEV0aGVybmV0IGRldmljZS4NCj4gPiArICogQHBhcmFtW2luXSBhY3Rpb25zX3RlbXBsYXRlDQo+ ID4gKyAqICAgSGFuZGxlIHRvIHRoZSB0ZW1wbGF0ZSB0byBiZSBkZXN0cm95ZWQuDQo+ID4gKyAq IEBwYXJhbVtvdXRdIGVycm9yDQo+ID4gKyAqICAgUGVyZm9ybSB2ZXJib3NlIGVycm9yIHJlcG9y dGluZyBpZiBub3QgTlVMTC4NCj4gPiArICogICBQTURzIGluaXRpYWxpemUgdGhpcyBzdHJ1Y3R1 cmUgaW4gY2FzZSBvZiBlcnJvciBvbmx5Lg0KPiA+ICsgKg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4g KyAqICAgMCBvbiBzdWNjZXNzLCBhIG5lZ2F0aXZlIGVycm5vIHZhbHVlIG90aGVyd2lzZSBhbmQg cnRlX2Vycm5vIGlzIHNldC4NCj4gPiArICovDQo+ID4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ ICtpbnQNCj4gPiArcnRlX2Zsb3dfYWN0aW9uc190ZW1wbGF0ZV9kZXN0cm95KHVpbnQxNl90IHBv cnRfaWQsDQo+ID4gKwkJc3RydWN0IHJ0ZV9mbG93X2FjdGlvbnNfdGVtcGxhdGUgKmFjdGlvbnNf dGVtcGxhdGUsDQo+ID4gKwkJc3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnJvcik7DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICogT3BhcXVlIHR5cGUgcmV0dXJuZWQgYWZ0ZXIgc3VjY2Vzc2Z1bCBj cmVhdGlvbiBvZiBhIHRlbXBsYXRlIHRhYmxlLg0KPiA+ICsgKiBUaGlzIGhhbmRsZSBjYW4gYmUg dXNlZCB0byBtYW5hZ2UgdGhlIGNyZWF0ZWQgdGVtcGxhdGUgdGFibGUuDQo+ID4gKyAqLw0KPiA+ ICtzdHJ1Y3QgcnRlX2Zsb3dfdGVtcGxhdGVfdGFibGU7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICogQHdhcm5pbmcNCj4gPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdl IHdpdGhvdXQgcHJpb3Igbm90aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBUYWJsZSBhdHRyaWJ1dGVz Lg0KPiA+ICsgKi8NCj4gPiArc3RydWN0IHJ0ZV9mbG93X3RlbXBsYXRlX3RhYmxlX2F0dHIgew0K PiA+ICsJLyoqDQo+ID4gKwkgKiBGbG93IGF0dHJpYnV0ZXMgdG8gYmUgdXNlZCBpbiBlYWNoIHJ1 bGUgZ2VuZXJhdGVkIGZyb20gdGhpcyB0YWJsZS4NCj4gPiArCSAqLw0KPiA+ICsJc3RydWN0IHJ0 ZV9mbG93X2F0dHIgZmxvd19hdHRyOw0KPiA+ICsJLyoqDQo+ID4gKwkgKiBNYXhpbXVtIG51bWJl ciBvZiBmbG93IHJ1bGVzIHRoYXQgdGhpcyB0YWJsZSBob2xkcy4NCj4gPiArCSAqLw0KPiA+ICsJ dWludDMyX3QgbmJfZmxvd3M7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogQHdh cm5pbmcNCj4gPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhv dXQgcHJpb3Igbm90aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBDcmVhdGUgdGVtcGxhdGUgdGFibGUu DQo+ID4gKyAqDQo+ID4gKyAqIEEgdGVtcGxhdGUgdGFibGUgY29uc2lzdHMgb2YgbXVsdGlwbGUg cGF0dGVybiB0ZW1wbGF0ZXMgYW5kIGFjdGlvbnMNCj4gPiArICogdGVtcGxhdGVzIGFzc29jaWF0 ZWQgd2l0aCBhIHNpbmdsZSBzZXQgb2YgcnVsZSBhdHRyaWJ1dGVzIChncm91cCBJRCwNCj4gPiAr ICogcHJpb3JpdHkgYW5kIHRyYWZmaWMgZGlyZWN0aW9uKS4NCj4gPiArICoNCj4gPiArICogRWFj aCBydWxlIGlzIGZyZWUgdG8gdXNlIGFueSBjb21iaW5hdGlvbiBvZiBwYXR0ZXJuIGFuZCBhY3Rp b25zIHRlbXBsYXRlcw0KPiA+ICsgKiBhbmQgc3BlY2lmeSBwYXJ0aWN1bGFyIHZhbHVlcyBmb3Ig aXRlbXMgYW5kIGFjdGlvbnMgaXQgd291bGQgbGlrZSB0byBjaGFuZ2UuDQo+ID4gKyAqDQo+ID4g KyAqIEBwYXJhbSBwb3J0X2lkDQo+ID4gKyAqICAgUG9ydCBpZGVudGlmaWVyIG9mIEV0aGVybmV0 IGRldmljZS4NCj4gPiArICogQHBhcmFtW2luXSB0YWJsZV9hdHRyDQo+ID4gKyAqICAgVGVtcGxh dGUgdGFibGUgYXR0cmlidXRlcy4NCj4gPiArICogQHBhcmFtW2luXSBwYXR0ZXJuX3RlbXBsYXRl cw0KPiA+ICsgKiAgIEFycmF5IG9mIHBhdHRlcm4gdGVtcGxhdGVzIHRvIGJlIHVzZWQgaW4gdGhp cyB0YWJsZS4NCj4gPiArICogQHBhcmFtW2luXSBuYl9wYXR0ZXJuX3RlbXBsYXRlcw0KPiA+ICsg KiAgIFRoZSBudW1iZXIgb2YgcGF0dGVybiB0ZW1wbGF0ZXMgaW4gdGhlIHBhdHRlcm5fdGVtcGxh dGVzIGFycmF5Lg0KPiA+ICsgKiBAcGFyYW1baW5dIGFjdGlvbnNfdGVtcGxhdGVzDQo+ID4gKyAq ICAgQXJyYXkgb2YgYWN0aW9ucyB0ZW1wbGF0ZXMgdG8gYmUgdXNlZCBpbiB0aGlzIHRhYmxlLg0K PiA+ICsgKiBAcGFyYW1baW5dIG5iX2FjdGlvbnNfdGVtcGxhdGVzDQo+ID4gKyAqICAgVGhlIG51 bWJlciBvZiBhY3Rpb25zIHRlbXBsYXRlcyBpbiB0aGUgYWN0aW9uc190ZW1wbGF0ZXMgYXJyYXku DQo+ID4gKyAqIEBwYXJhbVtvdXRdIGVycm9yDQo+ID4gKyAqICAgUGVyZm9ybSB2ZXJib3NlIGVy cm9yIHJlcG9ydGluZyBpZiBub3QgTlVMTC4NCj4gPiArICogICBQTURzIGluaXRpYWxpemUgdGhp cyBzdHJ1Y3R1cmUgaW4gY2FzZSBvZiBlcnJvciBvbmx5Lg0KPiA+ICsgKg0KPiA+ICsgKiBAcmV0 dXJuDQo+ID4gKyAqICAgSGFuZGxlIG9uIHN1Y2Nlc3MsIE5VTEwgb3RoZXJ3aXNlIGFuZCBydGVf ZXJybm8gaXMgc2V0Lg0KPiA+ICsgKi8NCj4gPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4gK3N0 cnVjdCBydGVfZmxvd190ZW1wbGF0ZV90YWJsZSAqDQo+ID4gK3J0ZV9mbG93X3RlbXBsYXRlX3Rh YmxlX2NyZWF0ZSh1aW50MTZfdCBwb3J0X2lkLA0KPiA+ICsJCWNvbnN0IHN0cnVjdCBydGVfZmxv d190ZW1wbGF0ZV90YWJsZV9hdHRyICp0YWJsZV9hdHRyLA0KPiA+ICsJCXN0cnVjdCBydGVfZmxv d19wYXR0ZXJuX3RlbXBsYXRlICpwYXR0ZXJuX3RlbXBsYXRlc1tdLA0KPiA+ICsJCXVpbnQ4X3Qg bmJfcGF0dGVybl90ZW1wbGF0ZXMsDQo+ID4gKwkJc3RydWN0IHJ0ZV9mbG93X2FjdGlvbnNfdGVt cGxhdGUgKmFjdGlvbnNfdGVtcGxhdGVzW10sDQo+ID4gKwkJdWludDhfdCBuYl9hY3Rpb25zX3Rl bXBsYXRlcywNCj4gPiArCQlzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsNCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgKiBAd2FybmluZw0KPiA+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMg QVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ID4gKyAqDQo+ID4gKyAqIERl c3Ryb3kgdGVtcGxhdGUgdGFibGUuDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gbWF5 IGJlIGNhbGxlZCBvbmx5IHdoZW4NCj4gPiArICogdGhlcmUgYXJlIG5vIG1vcmUgZmxvdyBydWxl cyByZWZlcmVuY2luZyB0aGlzIHRhYmxlLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gcG9ydF9p ZA0KPiA+ICsgKiAgIFBvcnQgaWRlbnRpZmllciBvZiBFdGhlcm5ldCBkZXZpY2UuDQo+ID4gKyAq IEBwYXJhbVtpbl0gdGVtcGxhdGVfdGFibGUNCj4gPiArICogICBIYW5kbGUgdG8gdGhlIHRhYmxl IHRvIGJlIGRlc3Ryb3llZC4NCj4gPiArICogQHBhcmFtW291dF0gZXJyb3INCj4gPiArICogICBQ ZXJmb3JtIHZlcmJvc2UgZXJyb3IgcmVwb3J0aW5nIGlmIG5vdCBOVUxMLg0KPiA+ICsgKiAgIFBN RHMgaW5pdGlhbGl6ZSB0aGlzIHN0cnVjdHVyZSBpbiBjYXNlIG9mIGVycm9yIG9ubHkuDQo+ID4g KyAqDQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICAwIG9uIHN1Y2Nlc3MsIGEgbmVnYXRpdmUg ZXJybm8gdmFsdWUgb3RoZXJ3aXNlIGFuZCBydGVfZXJybm8gaXMgc2V0Lg0KPiA+ICsgKi8NCj4g PiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4gK2ludA0KPiA+ICtydGVfZmxvd190ZW1wbGF0ZV90 YWJsZV9kZXN0cm95KHVpbnQxNl90IHBvcnRfaWQsDQo+ID4gKwkJc3RydWN0IHJ0ZV9mbG93X3Rl bXBsYXRlX3RhYmxlICp0ZW1wbGF0ZV90YWJsZSwNCj4gPiArCQlzdHJ1Y3QgcnRlX2Zsb3dfZXJy b3IgKmVycm9yKTsNCj4gPiArDQo+ID4gICAjaWZkZWYgX19jcGx1c3BsdXMNCj4gPiAgIH0NCj4g PiAgICNlbmRpZg0KPiA+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L3J0ZV9mbG93X2RyaXZlci5o IGIvbGliL2V0aGRldi9ydGVfZmxvd19kcml2ZXIuaA0KPiA+IGluZGV4IDdjMjk5MzBkMGYuLjJk OTZkYjFkYzcgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2V0aGRldi9ydGVfZmxvd19kcml2ZXIuaA0K PiA+ICsrKyBiL2xpYi9ldGhkZXYvcnRlX2Zsb3dfZHJpdmVyLmgNCj4gPiBAQCAtMTYyLDYgKzE2 Miw0MyBAQCBzdHJ1Y3QgcnRlX2Zsb3dfb3BzIHsNCj4gPiAgIAkJKHN0cnVjdCBydGVfZXRoX2Rl diAqZGV2LA0KPiA+ICAgCQkgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X3BvcnRfYXR0ciAqcG9ydF9h dHRyLA0KPiA+ICAgCQkgc3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnIpOw0KPiA+ICsJLyoqIFNl ZSBydGVfZmxvd19wYXR0ZXJuX3RlbXBsYXRlX2NyZWF0ZSgpICovDQo+ID4gKwlzdHJ1Y3QgcnRl X2Zsb3dfcGF0dGVybl90ZW1wbGF0ZSAqKCpwYXR0ZXJuX3RlbXBsYXRlX2NyZWF0ZSkNCj4gPiAr CQkoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gKwkJIGNvbnN0IHN0cnVjdCBydGVfZmxv d19wYXR0ZXJuX3RlbXBsYXRlX2F0dHIgKnRlbXBsYXRlX2F0dHIsDQo+ID4gKwkJIGNvbnN0IHN0 cnVjdCBydGVfZmxvd19pdGVtIHBhdHRlcm5bXSwNCj4gPiArCQkgc3RydWN0IHJ0ZV9mbG93X2Vy cm9yICplcnIpOw0KPiA+ICsJLyoqIFNlZSBydGVfZmxvd19wYXR0ZXJuX3RlbXBsYXRlX2Rlc3Ry b3koKSAqLw0KPiA+ICsJaW50ICgqcGF0dGVybl90ZW1wbGF0ZV9kZXN0cm95KQ0KPiA+ICsJCShz dHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiArCQkgc3RydWN0IHJ0ZV9mbG93X3BhdHRlcm5f dGVtcGxhdGUgKnBhdHRlcm5fdGVtcGxhdGUsDQo+ID4gKwkJIHN0cnVjdCBydGVfZmxvd19lcnJv ciAqZXJyKTsNCj4gPiArCS8qKiBTZWUgcnRlX2Zsb3dfYWN0aW9uc190ZW1wbGF0ZV9jcmVhdGUo KSAqLw0KPiA+ICsJc3RydWN0IHJ0ZV9mbG93X2FjdGlvbnNfdGVtcGxhdGUgKigqYWN0aW9uc190 ZW1wbGF0ZV9jcmVhdGUpDQo+ID4gKwkJKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICsJ CSBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uc190ZW1wbGF0ZV9hdHRyICp0ZW1wbGF0ZV9h dHRyLA0KPiA+ICsJCSBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uIGFjdGlvbnNbXSwNCj4g PiArCQkgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2FjdGlvbiBtYXNrc1tdLA0KPiA+ICsJCSBzdHJ1 Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycik7DQo+ID4gKwkvKiogU2VlIHJ0ZV9mbG93X2FjdGlvbnNf dGVtcGxhdGVfZGVzdHJveSgpICovDQo+ID4gKwlpbnQgKCphY3Rpb25zX3RlbXBsYXRlX2Rlc3Ry b3kpDQo+ID4gKwkJKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICsJCSBzdHJ1Y3QgcnRl X2Zsb3dfYWN0aW9uc190ZW1wbGF0ZSAqYWN0aW9uc190ZW1wbGF0ZSwNCj4gPiArCQkgc3RydWN0 IHJ0ZV9mbG93X2Vycm9yICplcnIpOw0KPiA+ICsJLyoqIFNlZSBydGVfZmxvd190ZW1wbGF0ZV90 YWJsZV9jcmVhdGUoKSAqLw0KPiA+ICsJc3RydWN0IHJ0ZV9mbG93X3RlbXBsYXRlX3RhYmxlICoo KnRlbXBsYXRlX3RhYmxlX2NyZWF0ZSkNCj4gPiArCQkoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYs DQo+ID4gKwkJIGNvbnN0IHN0cnVjdCBydGVfZmxvd190ZW1wbGF0ZV90YWJsZV9hdHRyICp0YWJs ZV9hdHRyLA0KPiA+ICsJCSBzdHJ1Y3QgcnRlX2Zsb3dfcGF0dGVybl90ZW1wbGF0ZSAqcGF0dGVy bl90ZW1wbGF0ZXNbXSwNCj4gPiArCQkgdWludDhfdCBuYl9wYXR0ZXJuX3RlbXBsYXRlcywNCj4g PiArCQkgc3RydWN0IHJ0ZV9mbG93X2FjdGlvbnNfdGVtcGxhdGUgKmFjdGlvbnNfdGVtcGxhdGVz W10sDQo+ID4gKwkJIHVpbnQ4X3QgbmJfYWN0aW9uc190ZW1wbGF0ZXMsDQo+ID4gKwkJIHN0cnVj dCBydGVfZmxvd19lcnJvciAqZXJyKTsNCj4gPiArCS8qKiBTZWUgcnRlX2Zsb3dfdGVtcGxhdGVf dGFibGVfZGVzdHJveSgpICovDQo+ID4gKwlpbnQgKCp0ZW1wbGF0ZV90YWJsZV9kZXN0cm95KQ0K PiA+ICsJCShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiArCQkgc3RydWN0IHJ0ZV9mbG93 X3RlbXBsYXRlX3RhYmxlICp0ZW1wbGF0ZV90YWJsZSwNCj4gPiArCQkgc3RydWN0IHJ0ZV9mbG93 X2Vycm9yICplcnIpOw0KPiA+ICAgfTsNCj4gPg0KPiA+ICAgLyoqDQo+ID4gZGlmZiAtLWdpdCBh L2xpYi9ldGhkZXYvdmVyc2lvbi5tYXAgYi9saWIvZXRoZGV2L3ZlcnNpb24ubWFwDQo+ID4gaW5k ZXggZjEyMzVhYTkxMy4uNWZkMjEwODg5NSAxMDA2NDQNCj4gPiAtLS0gYS9saWIvZXRoZGV2L3Zl cnNpb24ubWFwDQo+ID4gKysrIGIvbGliL2V0aGRldi92ZXJzaW9uLm1hcA0KPiA+IEBAIC0yNjIs NiArMjYyLDEyIEBAIEVYUEVSSU1FTlRBTCB7DQo+ID4gICAJcnRlX2V0aF9kZXZfcHJpb3JpdHlf Zmxvd19jdHJsX3F1ZXVlX2luZm9fZ2V0Ow0KPiA+ICAgCXJ0ZV9mbG93X2luZm9fZ2V0Ow0KPiA+ ICAgCXJ0ZV9mbG93X2NvbmZpZ3VyZTsNCj4gPiArCXJ0ZV9mbG93X3BhdHRlcm5fdGVtcGxhdGVf Y3JlYXRlOw0KPiA+ICsJcnRlX2Zsb3dfcGF0dGVybl90ZW1wbGF0ZV9kZXN0cm95Ow0KPiA+ICsJ cnRlX2Zsb3dfYWN0aW9uc190ZW1wbGF0ZV9jcmVhdGU7DQo+ID4gKwlydGVfZmxvd19hY3Rpb25z X3RlbXBsYXRlX2Rlc3Ryb3k7DQo+ID4gKwlydGVfZmxvd190ZW1wbGF0ZV90YWJsZV9jcmVhdGU7 DQo+ID4gKwlydGVfZmxvd190ZW1wbGF0ZV90YWJsZV9kZXN0cm95Ow0KPiA+ICAgfTsNCj4gPg0K PiA+ICAgSU5URVJOQUwgew0KDQo=