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 8D83DA00C2; Tue, 27 Sep 2022 22:59:30 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3724941133; Tue, 27 Sep 2022 22:59:30 +0200 (CEST) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mails.dpdk.org (Postfix) with ESMTP id AA69340694 for ; Tue, 27 Sep 2022 22:59:27 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1664312367; x=1695848367; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=6TATJ+OjcgTuis9V2l4Eq0ohbcIA/ndrJOoRgv8B5cM=; b=W4AkjvIRDm1HRdO+nzMQgBnqBey+7W8jt1FRta9kcCFVdQ/0GfryZ8zY 0nKxV1nA5ILM7GCUU2vo9DP1aUSJHwO8rBUXKi/dJirIov/2VFzsWatpN SzQ43JXrB25OOeahkmgcL3MgThvXYvMvOEGwnRJIXV0F1iYQOhutcjqoS J+3G44eM91KkLp8U6DD4aF4aW5Rhtw1vUcmWy8V28il3/JNgyQKNCEIya wUFRSVsRWH/gBccaRjrXyXnGFD2pm6xWVFJSKMfcXxOevHtgeTjC/ZIiN mlRhuech1OuaL7ftR07ZimcmhQe86RCcvC5CVH1iQOza4fRyGQd3/EOYe Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10483"; a="301408313" X-IronPort-AV: E=Sophos;i="5.93,350,1654585200"; d="scan'208";a="301408313" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Sep 2022 13:59:26 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10483"; a="747183855" X-IronPort-AV: E=Sophos;i="5.93,350,1654585200"; d="scan'208";a="747183855" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga004.jf.intel.com with ESMTP; 27 Sep 2022 13:59:25 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Tue, 27 Sep 2022 13:59:25 -0700 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Tue, 27 Sep 2022 13:59:24 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Tue, 27 Sep 2022 13:59:24 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.177) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Tue, 27 Sep 2022 13:59:24 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iN8d7JhRHKYDD7f4luq1H+umdGIvx1hLdUYxURS5GHAEigkOYs2CZ7KPNXVAwi6+ARHVMabsEUGfHbHqKZ6lB1s84Ep18IUBtjpoCbuZcllFIYMo82QQJQJbR8jSLtlZ4jnOfVE20W3ysvz5AS1ojra4/akxrxShrenc0bPpZfaE3a8NR4PWltRWf4zLxf3bR3pTYlUacdDkyn9zFYeU8ZzJ6g8xFgQBNg4Nb5lJ8ZfDDJFxdVBjMUlWumv3WwSWJUAEPqQ7RaekOMlaQtvwaJT691cZ5oB1rCYlGH7M0T61MfeUYOgJBoAcWPRrOAvzaSoguH8n5CS5kBBhP/FnWg== 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=6TATJ+OjcgTuis9V2l4Eq0ohbcIA/ndrJOoRgv8B5cM=; b=HGOhI/JRPNODQxJFzTUSwPvqgIv8qjxQfLFnXm/K3NszKOp+QEz4VzI50cOJ0l2kkwMKNoD/7T2SSoq1b31d499iKF6u3qgE6HnBc7hcHjTviac15IbgPR/e5Vr9uDQlHKtkFOtXUTlI+BHVt5fxrDVUHCVE9OB+rUmf7BTrlQ8WpC8+ekYosOdvMGE88+dx2YX/0TstUALHdmqxF7CGlyqR4xNPT1qPY4h9vhMRjqBthEW+bKMxePydv5hSLpgKoSKkvy0Qodw+mFK3XI4xq7dWoh8A3ZgsJ9Z5IKIIFL1XH+R892v8mQKUj/fnc4ZYxGkFAuOOkehTZdx8OBj1GQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BY5PR11MB4451.namprd11.prod.outlook.com (2603:10b6:a03:1cb::30) by DM4PR11MB6215.namprd11.prod.outlook.com (2603:10b6:8:a9::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.26; Tue, 27 Sep 2022 20:59:22 +0000 Received: from BY5PR11MB4451.namprd11.prod.outlook.com ([fe80::e6be:3feb:17fd:bdcf]) by BY5PR11MB4451.namprd11.prod.outlook.com ([fe80::e6be:3feb:17fd:bdcf%7]) with mapi id 15.20.5654.024; Tue, 27 Sep 2022 20:59:22 +0000 From: "Chautru, Nicolas" To: Akhil Goyal , "dev@dpdk.org" , "Maxime Coquelin" , "ferruh.yigit@xilinx.com" , Ray Kinsella CC: Akhil Goyal , "thomas@monjalon.net" , Ray Kinsella , "trix@redhat.com" , "Richardson, Bruce" , "david.marchand@redhat.com" , "stephen@networkplumber.org" , "Zhang, Mingshan" , "hemant.agrawal@nxp.com" Subject: RE: [EXT] [PATCH v7 6/7] bbdev: add queue related warning and status information Thread-Topic: [EXT] [PATCH v7 6/7] bbdev: add queue related warning and status information Thread-Index: AQHYu9UheYpX0UsLbUG2uEh3tuE2IK3qZZVQgAKZYACAAcYt4IAAJnxAgATzZmA= Date: Tue, 27 Sep 2022 20:59:22 +0000 Message-ID: References: <1655491040-183649-6-git-send-email-nicolas.chautru@intel.com> <1661796438-204861-1-git-send-email-nicolas.chautru@intel.com> <1661796438-204861-7-git-send-email-nicolas.chautru@intel.com> <88a06267-0cf3-a6cd-0785-b5b2a419fc02@amd.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.17 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BY5PR11MB4451:EE_|DM4PR11MB6215:EE_ x-ms-office365-filtering-correlation-id: 99de335c-6426-49e2-41c3-08daa0cb2780 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 7nepKJwK48f8nmQr5f1T2rA3JH9FdUYCULD8j19FX9OTB/0gjl3laO5DH7TA9M6pPQP0ODrTHMrOmPHd9LefzVgdml4gWnoBTLU0t1ycFl0BA0H1ec6vjFCGRc6n8FuybpSnck+DPO5EWAiN5F2R06puN9U7UybhvO6+r1ayKR8EO8ZUUYXLSOAFjS7OyRtjnSPSb0qWxn6VNOUg4INLwwMGC2Kt+tKQP6HnJX+YLuuc1gU3O3WKqUIe7Bw1Bd8L/GzdRcy2J337KQlTvJBub0QziW02SjxdAhOAEd/hiA4y3kbniR+S82sYuFKeD8qytiqyduIT/7GPqr7+t270RPpZ1gqVcsngWUWYaqymTlnL+qv1/sLy2N81rSMY8N7XKGK4WJfS/k5rQfcvCbWd6A45hSQqqJRuzbp+3TRe0yGsMqpYb8ocuqXqCNRT4e7B7KYYGSMiqXqXtk3vNKqxAs6dJPY66GiaxQMMsk0XBA/10wbjVt4ezZNofoVEenasB1tBjvlQv6At8YPNN6NiLpECFxla7ZSm/M91neXN8PObv6dJf/RGBsH5/7t+PrAI39Fx7k3ysQXauPZdK0drwPA78LLzqHX0xN5HMccGmPLCwIDGkFyzhCyjsrSo80zgudeI6q1BI9k4fzlGm6EIA6uyN8bHpPysXmyHLFtPtBsx0f1b/VcdtUitKMgMJViTuToFM+aEYIh2u15H1EIjxdVwWOJUHGIrF7NWEIzNhvZqaTpnQJOQ6wgi6+nhVLD5LCMdr0r1GDPuEcBJ2YakqA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BY5PR11MB4451.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(376002)(136003)(396003)(346002)(366004)(39860400002)(451199015)(186003)(41300700001)(33656002)(83380400001)(316002)(26005)(5660300002)(53546011)(7696005)(7416002)(9686003)(30864003)(110136005)(55016003)(54906003)(86362001)(6506007)(38100700002)(66446008)(66556008)(66946007)(66476007)(82960400001)(76116006)(2906002)(38070700005)(64756008)(4326008)(122000001)(8676002)(71200400001)(478600001)(52536014)(8936002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eXR0Ky9tOU5yY0R4Skx2NE9xb3Fxb2hkSmJKVnBidWYwcjRpRmZpRHdSVnBT?= =?utf-8?B?Z1NudUJBM0k3dElDUjI2RFNPSWNKRXpFQUJGenhYTHJsa0RHY1NlKytFSzhZ?= =?utf-8?B?ZWRMcEcyN2VSVEtuc25VM0w1K0lPaVJFUVN5RU4vaDBLQ1BFR0Z1NnF2Q0Ji?= =?utf-8?B?NHpxU28zaXd0NVdQbVN6Y2VKY3ZoTUxEdy9yaGtBZTlrejgyUWF3Mm9uOEdW?= =?utf-8?B?K05xdzJnZ0lFZHJjTEozQjRaSDZDZUJybDhkNWQzZU5mYWJrN3VDSjdHeGQy?= =?utf-8?B?ZktFVHdGRXR0NDhFM1hoVi9FVEc4R2ZZOUUvdVNhR2hoMlh0UG1JV1BOeG5k?= =?utf-8?B?QlpDTVdPMTYySSttK0U2TzdXOU53S1N1SWdJZlkvTTM3RWJkdFlaVTZhTXo3?= =?utf-8?B?OTZ0M25GdkFqZ1BEelpXcDNLdmk4SlM4OFdiLytCN1FtU25aSjdtWmlsdjdK?= =?utf-8?B?TklpMjdxam5CbkxFMnVGbjNjMnZ6ZnU4SkVWQXNDVVEzM29YaXRVV2RZVzlT?= =?utf-8?B?ZW9iVWx5aVhBRXYzejY1a0ZFN0NNbm55YXROeGxRQXdPQ3dxeWROZlowNnRt?= =?utf-8?B?c0w1MjBUWEp5TTBMLzIyQjRUczFzQjBiemh4WXNGZjhpVWxPRzJNSCtZRHhK?= =?utf-8?B?aEpPY3NJYXQwUFpDVUYvQXZIU0Z5NmFURnE3VzBwTnh5RjNXN1lGQnRQVUxt?= =?utf-8?B?UlRxdk9YSDl3SlpGb2dpa0htVHlYVjQ4bkhDVTZnMUpOc0gxUjNmcnd3TE41?= =?utf-8?B?Y1ZxMjZlSVo3dlpIakVETWViUnpEcWFJL3RWRElGNUdBSE9DYmpacEE0T1BN?= =?utf-8?B?VXBzcGJmMkxPd1prRFFmMUQ5WStHWEZuLytNMkdiT3ovWU0vQUdVM2FESDBv?= =?utf-8?B?MUF0MGp4TGhRaGFhQzhaMENLblVhK24yUStZcnNBNXdkd1ZSb08rUDhVQkl5?= =?utf-8?B?OWtGcmJvdXMwODhRRFY5T1hrUkhYUGJZdUxNTkgvZmNSTkdVb09QYk9heEkv?= =?utf-8?B?ZVgwNk4vV1ZFTk1nUlZVWDB0Z1hYT3M3cElvVTRJaXFDM0F3ejFDbVFuenBV?= =?utf-8?B?bEErMElFSHd1ajUxWXo2R29OV015MnpFUjk0QkRBZUhDRXBJb3E3d3pmSk1o?= =?utf-8?B?dFBnYUVBS1UwK2RsMzRRaCtEclhBc2YraFV2WUZ5RXhwS0FzeTRRbjAzWWNm?= =?utf-8?B?cWFrV1czQndaZmErYnlJai9EcFJBaXNXZzJBR2IzdmEyVGtNc0dPMHFlOHF5?= =?utf-8?B?ak90ZmhtY3F3QUVuZmJKc2laZTNRdDV3cDl1Q1JIS1BHQmZ1cUt0MWRkY0tE?= =?utf-8?B?QVA0TGxGT0RrYUdBemxoRklHeUNlNUlSeXIzZlNNKzh2dU1uUjBSc1ZLVmls?= =?utf-8?B?cTVIclpBVW41Zmc1Kys0VFlDWDJobnhSVm9zZFM3STJZQ0pXNWdiQ2NldkRF?= =?utf-8?B?QzVxRzlvbmFycnlPWDd1ZXhOc2krVE9QT1VoeXlkM3Fvdk1WOGtSeG9qL3ZO?= =?utf-8?B?Y0xmR0EyVzAvL1ZRQzlhbjd4bXVOWEdnNmRYeDZ1SUpyMnpCVHpjL3RSR1g4?= =?utf-8?B?VjFCdHNPakt2dUFYWlZ4RnFwaHdmem5sek1wMmpqVVVRYjlJRThjQzlkbTBZ?= =?utf-8?B?U2JWYnpLTko4Rkt1N3hVNDYwVGFmMS9JaE5LZ0g1NHEvdS95RitQOWdzQWRw?= =?utf-8?B?dE9kNGtVRDFMWHoxdU1DbkNTcEE4S1owRHl4dWdMcEtzK0E4MmZoQkJud2k2?= =?utf-8?B?SkVOUjlENWVPSklUMTl4aGVtazZCak5DTjNhUlRwZktoRGZ5ZTNST21ZZ1d3?= =?utf-8?B?UzFoVHhWQkNHVC9ESWVBb28xeHVrTUxGVy9WaXk0b0N3UG5nR1pqdWo0T1JY?= =?utf-8?B?YWNUUnlRNmhTVTJnNkhDQWhlYXdxaWtjaWJPaDlpMDMyZmk0MHV1d0pKRm1R?= =?utf-8?B?ZG5wOWxHNWZCaUx2OTR2Znp6eElYWldUeFowN3RwY0ZGY1grVERuV0RUelR6?= =?utf-8?B?Tm5lRnlkcHNUV0syQXkwS0x2SjJkZmdOOEpTd3QzT2RCaURVMWhNMVBvQWlp?= =?utf-8?B?dGZrcVc0azViTGNSb2RuUEg5SWc2SVoxS1V5KzdCczJBUFRySTAzTFFqTDNo?= =?utf-8?Q?O7zQX9uVzTY9X30Wybah7n9qO?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY5PR11MB4451.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 99de335c-6426-49e2-41c3-08daa0cb2780 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Sep 2022 20:59:22.7243 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: suozYBuFaKanE9eG7Sc09NWgDZAbOu4jfjbxg+4qtTU19YX1IZmGSdSWx5EoEgU/Z8a03rHWxWcQ+ujK5p5WZHvBPGWbnVNzZT4+d9WQiW8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB6215 X-OriginatorOrg: intel.com 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 SGkgRmVycnVoLCANCg0KVGhhbmtzIGZvciB5b3VyIGNvbW1lbnQuIA0KVG8gYmUgdG90YWxseSBo b25lc3QgSSBkb24ndCB5ZXQgc2VlIGhvdyB5b3VyIHN1Z2dlc3Rpb24gd291bGQgYmUgYmV0dGVy LCBidXQgSSBxdWl0ZSBwb3NzaWJseSBtaXNzIHNvbWV0aGluZy4gSSBkaWQgbm90IHJlcGx5IGlu IGxpbmUgd2l0aCB5b3VyIGNvbW1lbnRzIHNvIHRoYXQgdG8gdHJ5IHRvIGJlIGNsZWFyZXIgYW5k IGF2b2lkIHNwcmVhZGluZyB0aGUgYXJndW1lbnQgdG8gbXVjaC4gUmF5IGFuZCBCcnVjZSBmZWVs IGZyZWUgdG8gY2hpbWUgaW4gYXMgd2VsbC4NCg0KRmlyc3QgdG8gc3RhdGUgdGhlIG9idmlvdXM6 IE5vdGhpbmcgd2lsbCBjaGFuZ2UgdGhlIGZhY3QgdGhhdCBpbiBjYXNlIG5ldyBlbnVtcyBhcmUg YmVpbmcgYWRkZWQgaW4gRFBESywgYW5kIGlmIHRoZSBhcHBsaWNhdGlvbiBkb2Vzbid0IGNoYW5n ZSwgdGhlbiB1c2VyIHdvdWxkIG5vdCBiZSBhYmxlIHRvIGludGVycHJldCBhbnkgc3VjaCBhZGRp dGlvbmFsIHN0YXR1cy9jYXBhYmlsaXR5IChiYWNrd2FyZCBjb21wYXRpYmxlIG9ubHkgZmVhdHVy ZSBwYXJpdHkgYW5kIHN0aWxsIEFCSSBjb21wbGlhbnQpIHdoaWNoIGlzIHRvdGFsbHkgYWNjZXB0 ZWQgYXMgZmluZSBhbmQgdXAgdG8gdGhlIHVzZXIsIGJ1dCB0aGUgaW50ZW50aW9uIGlzIGF0IGxl YXN0IG5vdCB0byBoYXZlIGFkdmVyc2UgZWZmZWN0IGV2ZW4gd2hlbiB0aGV5IGRvbuKAmXQgdXBk YXRlIHRoZWlyIGNvZGUgZm9yIHN1Y2ggbmV3IGZlYXR1cmVzIChub3RhYmx5IGluIGNhc2UgdGhl eSBqdXN0IHVzZSBhbiBvbGRlciBQTUQgbm90IHN1cHBvcnRpbmcgc3VjaCBuZXcgZmVhdHVyZXMg YXMgYSBiYXNpYyB0eXBpY2FsIGV4YW1wbGUgaW4gdGhlIGVjb3N5c3RlbSkuIEkgdGhpbmsgd2Ug YWdyZWUgb24gdGhhdCBwcm9ibGVtYXRpYy4gDQoNCkluIHRlcm0gb2YgaGlzdG9yeSBvZiBub3Qg dXNpbmcgTUFYIHZhbHVlIGZvciBlbnVtLCBJIGJlbGlldmUgdGhlcmUgaXMgYWxyZWFkeSB3ZWxs IGRvY3VtZW50ZWQgYW5kIHlvdSBhZ3JlZSB3aXRoIHRoZSByZWFzb25pbmcgb2Ygd2h5IHdlIGhh ZCB0byBtb3ZlIGF3YXkgZnJvbSB0aGlzIFsxXS4gTm90IGp1c3QgY29zbWV0aWNhbGx5IHdoZXJl IHRoZSBtYXggdmFsdWUgaXMgY2FsbGVkIGFuIGVudW0gb3IgYSAjZGVmaW5lIGJ1dCB0byBoYXZl IGFwcGxpY2F0aW9uIG1ha2luZyBoYXJkY29kZWQgYXNzdW1wdGlvbiBvbiB0aGUgcG9zc2libGUg bWF4aW11bSByYW5nZSBmb3Igc3VjaCBlbnVtIG5vdGFibHkgd2hlbiBzaXppbmcgYXJyYXkuIFRo ZSBvbmx5IGNhdmVhdCBiZWluZyB0aGF0IGF0IHRoZSB0aW1lLCB0aGUgY29tbXVuaXR5IGRpZCBz cG90IHRoZSB3ZWFrbmVzcyBidXQgZGlkIG5vdCBjb21lIHRvIGFuIGFncmVlbWVudCB3aXRoIHJl Z2FyZHMgdG8gdGhlIGJlc3Qgd2F5IHRvIG1hbmFnZSB0aGlzIG1vdmluZyBmb3J3YXJkLiANCg0K SW4gY2FzZSB5b3VyIHBvaW50IGlzIHB1cmVseSBjb3NtZXRpYyB0byByZW5hbWUgdGhlIFBBRERF RF9NQVggdmFsdWUgZnJvbSB0aGUgZW51bSB0byBhICNkZWZpbmUgKGJvdGggcHVibGljKSBJIGRv bid0IHNlZSBob3cgdGhpcyB3b3VsZCBtYWtlIHRoaW5nIGNsZWFyZXIgYnkgb2JmdXNjYXRpbmcg dGhlIGZhY3QgaXQgaXMgZ2VudWluZWx5IGEgcGFkZGVkIHZhbHVlIGFuZCB0byBoYXZlIHRoYXQg dmFsdWUgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgZW51bSBzdHJ1Y3R1cmUuIEFsc28gbm90ZSB0 aGF0IHRoZXJlIGlzIGFscmVhZHkgYW4gYWN0dWFsIG1heCB2YWx1ZSBkZWZpbmVkIGZvciB0aGVz ZSBlbnVtcyAoYnV0IGtlcHQgcHJpdmF0ZSBvbiBwdXJwb3NlKSB3aGljaCBpcyB1c2VkIGJ5IHRo ZSBsaWIvYmJkZXYgZnVuY3Rpb25zIHRvIHJlc3RyaWN0IHVzYWdlIHRvIHdoYXQgaXMgYWN0dWFs bHkgc3VwcG9ydGVkIGluIHRoZSBnaXZlbiBpbXBsZW1lbnRhdGlvbiAoZGlzdGluY3QgZnJvbSBw YWRkZWQgbWF4IHZhbHVlKS4gDQoNCkFyZ3VhYmx5IHRoZSBvbmx5IGNvbmNlcm4gSSBjb3VsZCB1 bmRlcnN0YW5kIGluIHlvdXIgbWVzc2FnZSB3b3VsZCBiZSB0aGlzIG9uZSAiIG15IGNvbmNlcm4g d2FzIGlmIHVzZXIgYXNzdW1lcyBhbGwgdmFsdWVzIHZhbGlkIHVudGlsIFBBRERFRF9NQVggYW5k IHRyaWVzIHRvIGl0ZXJhdGUgYXJyYXkgdW50aWwgdGhhdCB2YWx1ZSIuIA0KQnV0IHJlYWxseSB0 aGUgZmFjdCB0aGF0IGl0IGlzIGluZGVlZCBhIHBhZGRlZCB2YWx1ZSBpbXBsaWVzIGZhaXJseSBl eHBsaWNpdGx5IHRoYXQgd2UgaGF2ZSBwYWRkZWQgdGhlIHN1cHBvcnRlZCBlbnVtcyB3aXRoIHBs YWNlaG9sZGVycyBlbnVtcyBub3QgeWV0IGRlZmluZWQuIFRoYXQgaXMgZmFpcmx5IHRhdXRvbG9n aWNhbCEgSSBjYW5ub3Qgc2VlIGhvdyBpdCBjb3VsZCBjb25mdXNlIGFueW9uZS4gVGhhdCBpcyBp bmRlZWQgdG8gYXZvaWQgc3VjaCBjb25mdXNpb24gdGhhdCB3ZSB3ZW50IG9uIHRoYXQgZGlyZWN0 aW9uIHRvIGV4cG9zZSBhIHB1YmxpYyBmdXR1cmUtcHJvb2YgcGFkZGVkIG1heGltdW0gdmFsdWUu IA0KDQpUaGVuIGxvb2tpbmcgYXQgdXNhZ2UgaW4gcHJhY3RpY2U6IHdoZW4gaW50ZWdyYXRpbmcg dGhlIGJiZGV2IGFwaSB3aXRoIGhpZ2hlciBsZXZlbCBTVyBzdGFja3MgKHN1Y2ggYXMgRmxleFJB TiByZWZlcmVuY2Ugc3cgb3IgM3JkIHBhcnR5IHN0YWNrcykgSSBkb27igJl0IHNlZSBob3cgYW55 IG9mIHRoaXMgdGhlb3JldGljYWwgY29uY2VybnMgeW91IHJhaXNlZCB3b3VsZCBiZSByZWxldmFu dCBmb3IgYW55IG9mIHRoZXNlIHZlcnkgY2FzZXMgKGVucXVldWUgc3RhdHVzLCBuZXcgY2FwYWJp bGl0eSBldGMuLi4pLiBUaGUgb25seSBnZW51aW5lIGNvbmNlcm4gd2FzIHNpemluZyBhcnJheSBi YXNlZCBvbiBNQVggdmFsdWUgYmVpbmcgbm90IEFCSSBjb21wbGlhbnQuIA0KSSBjYW5ub3QgdGhp bmsgb2YgYW55IGNvZGUgaW4gdGhlIGFwcGxpY2F0aW9uIHByZXNlbnRseSBkZXBsb3llZCBvciBm dXR1cmUgdGhhdCB3b3VsZCB0aGVuIGRvIHdoYXQgeW91IGFyZSBjb25jZXJuZWQgYWJvdXQgYW5k IGNhdXNlIGFuIGlzc3VlLCBhbmQgd2UgZGVmaW5pdGVseSBkb27igJl0IGRvIHN1Y2ggdGhpbmdz IGluIGFueSBleGFtcGxlIGZvciBiYmRldi10ZXN0IG9yIGluIEZsZXhSQU4gcmVmZXJlbmNlIGNv ZGUgcHJvdmlkZWQgdG8gdGhlIGVjb3N5c3RlbS4gVGhlIGFwcGxpY2F0aW9uIHdvdWxkIGFscmVh ZHkgaGF2ZSBhIGRlZmF1bHQgY2FzZSB3aGVuIGFuIGVudW0gYmVpbmcgcHJvdmlkZWQgaGFzIG5v IG1hdGNoaW5nIGFwcGxpY2F0aW9uLCBvciBtb3JlIGFjY3VyYXRlbHkgaW4gcHJhY3RpY2UgdGhl eSB3b3VsZCBwdXJlbHkgbm90IGxvb2sgZm9yIHRoZXNlIGFuZCBoZW5jZSB0aGVzZSB3b3VsZCBi ZSBpZ25vcmVkIHNlYW1sZXNzbHkuIA0KDQpUaGFua3MgYWdhaW4gZm9yIHRoZSBkaXNjdXNzaW9u LiBJIHdpc2ggdGhpcyBoYWQgaGFwcGVuZWQgZWFybGllciAod2Ugb25seSBkaXNjdXNzZWQgdGhp cyB3aXRoIFJheSBhbmQgQnJ1Y2Ugd2hpbGUgeW91IHdlcmUgc3RpbGwgYXQgSW50ZWwpLCBsZXQg bWUga25vdyB3aGF0IHlvdSB0aGluay4NCkl0IG1heSBiZSBtb3JlIGdlbmVyYWxseSBnb29kIG1v dmluZyBmb3J3YXJkIHRvIGNvbWUgdG8gYSBnZW5lcmFsIGFncmVlbWVudCBhdCB5b3VyIHRlY2hu aWNhbCBmb3J1bSBsZXZlbCB0byBhdm9pZCBjb25mdXNpb24uIFdoZW4gd2UgZGlzY3Vzc2VkIGVh cmxpZXIgd2UgY2FtZSB0byB0aGUgY29uY2x1c2lvbiB0aGF0IHRoZSBEUERLIGNvbW11bml0eSBo YWQgd2VsbCBkb2N1bWVudGVkIHdoYXQgbm90IHRvIGRvIHRvIGF2b2lkIEFCSSBicmVha2FnZSBi dXQgbm90IG5lY2Vzc2FyaWx5IHdoYXQgYXJlIHRoZSBiZXN0IGFsdGVybmF0aXZlcy4gDQpIb3Bl ZnVsbHkgc3VjaCBmdXR1cmUgZGlzY3Vzc2lvbiBzaG91bGQgbm90IGRlbGF5IHRoaXMgc2VyaWUg dG8gYmUgYXBwbGllZCBidXQgc3RpbGwgbGV0IG1lIGtub3cuIA0KDQpUaGFua3MgYWdhaW4NCg0K WzFdDQogICAgKiBsaWI6IHdpbGwgZml4IGV4dGVuZGluZyBzb21lIGVudW0vZGVmaW5lIGJyZWFr aW5nIHRoZSBBQkkuIFRoZXJlIGFyZSBtdWx0aXBsZQ0KICAgICAgc2FtcGxlcyBpbiBEUERLIHRo YXQgZW51bS9kZWZpbmUgdGVybWluYXRlZCB3aXRoIGEgYGAuKk1BWC4qYGAgdmFsdWUgd2hpY2gg aXMNCiAgICAgIHVzZWQgYnkgaXRlcmF0b3JzLCBhbmQgYXJyYXlzIGhvbGRpbmcgdGhlc2UgdmFs dWVzIGFyZSBzaXplZCB3aXRoIHRoaXMNCiAgICAgIGBgLipNQVguKmBgIHZhbHVlLiBTbyBleHRl bmRpbmcgdGhpcyBlbnVtL2RlZmluZSBpbmNyZWFzZXMgdGhlIGBgLipNQVguKmBgDQogICAgICB2 YWx1ZSB3aGljaCBpbmNyZWFzZXMgdGhlIHNpemUgb2YgdGhlIGFycmF5IGFuZCBkZXBlbmRpbmcg b24gaG93L3doZXJlIHRoZQ0KICAgICAgYXJyYXkgaXMgdXNlZCB0aGlzIG1heSBicmVhayB0aGUg QUJJLg0KICAgICBgYFJURV9FVEhfRkxPV19NQVhgYCBpcyBvbmUgc2FtcGxlIG9mIHRoZSBtZW50 aW9uZWQgY2FzZSwgYWRkaW5nIGEgbmV3IGZsb3cNCiAgICAgIHR5cGUgd2lsbCBicmVhayB0aGUg QUJJIGJlY2F1c2Ugb2YgYGBmbGV4X21hc2tbUlRFX0VUSF9GTE9XX01BWF1gYCBhcnJheQ0KICAg ICAgdXNhZ2UgaW4gZm9sbG93aW5nIHB1YmxpYyBzdHJ1Y3QgaGllcmFyY2h5Og0KICAgICAgYGBy dGVfZXRoX2ZkaXJfZmxleF9jb25mIC0+IHJ0ZV9ldGhfZmRpcl9jb25mIC0+IHJ0ZV9ldGhfY29u ZiAoaW4gdGhlIG1pZGRsZSlgYC4NCiAgICAgIE5lZWQgdG8gaWRlbnRpZnkgdGhpcyBraW5kIG9m IHVzYWdlcyBhbmQgZml4IGluIDIwLjExLCBvdGhlcndpc2UgdGhpcyBibG9ja3MNCiAgICAgIHVz IGV4dGVuZGluZyBleGlzdGluZyBlbnVtL2RlZmluZS4NCiAgICAgIE9uZSBzb2x1dGlvbiBjYW4g YmUgdXNpbmcgYSBmaXhlZCBzaXplIGFycmF5IGluc3RlYWQgb2YgYGAuKk1BWC4qYGAgdmFsdWUu DQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBDaGF1dHJ1LCBOaWNv bGFzDQo+IFNlbnQ6IFNhdHVyZGF5LCBTZXB0ZW1iZXIgMjQsIDIwMjIgOTozNSBBTQ0KPiBUbzog J0FraGlsIEdveWFsJyA8Z2FraGlsQG1hcnZlbGwuY29tPjsgZGV2QGRwZGsub3JnOyBNYXhpbWUg Q29xdWVsaW4NCj4gPG1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPjsgZmVycnVoLnlpZ2l0QHhp bGlueC5jb207IFJheSBLaW5zZWxsYQ0KPiA8bWRyQGFzaHJvZS5ldT4NCj4gQ2M6ICdBa2hpbCBH b3lhbCcgPGdha2hpbEBtYXJ2ZWxsLmNvbT47IENoYXV0cnUsIE5pY29sYXMNCj4gPG5pY29sYXMu Y2hhdXRydUBpbnRlbC5jb20+OyAndGhvbWFzQG1vbmphbG9uLm5ldCcNCj4gPHRob21hc0Btb25q YWxvbi5uZXQ+OyAnUmF5IEtpbnNlbGxhJyA8bWRyQGFzaHJvZS5ldT47DQo+ICd0cml4QHJlZGhh dC5jb20nIDx0cml4QHJlZGhhdC5jb20+OyBSaWNoYXJkc29uLCBCcnVjZQ0KPiA8YnJ1Y2Uucmlj aGFyZHNvbkBpbnRlbC5jb20+OyAnZGF2aWQubWFyY2hhbmRAcmVkaGF0LmNvbScNCj4gPGRhdmlk Lm1hcmNoYW5kQHJlZGhhdC5jb20+OyBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZzsgWmhhbmcs DQo+IE1pbmdzaGFuIDxtaW5nc2hhbi56aGFuZ0BpbnRlbC5jb20+OyAnaGVtYW50LmFncmF3YWxA bnhwLmNvbScNCj4gPGhlbWFudC5hZ3Jhd2FsQG54cC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbRVhU XSBbUEFUQ0ggdjcgNi83XSBiYmRldjogYWRkIHF1ZXVlIHJlbGF0ZWQgd2FybmluZyBhbmQNCj4g c3RhdHVzIGluZm9ybWF0aW9uDQo+IA0KPiBIaSBGZXJydWgsIFJheSwgQWtoaWwsDQo+IA0KPiAN Cj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBGZXJydWggWWln aXQgPGZlcnJ1aC55aWdpdEBhbWQuY29tPg0KPiA+ID4gU2VudDogRnJpZGF5LCBTZXB0ZW1iZXIg MjMsIDIwMjIgNDoyOCBQTQ0KPiA+ID4gVG86IEFraGlsIEdveWFsIDxnYWtoaWxAbWFydmVsbC5j b20+OyBOaWNvbGFzIENoYXV0cnUNCj4gPiA+IDxuaWNvbGFzLmNoYXV0cnVAaW50ZWwuY29tPjsg ZGV2QGRwZGsub3JnOyB0aG9tYXNAbW9uamFsb24ubmV0Ow0KPiA+ID4gaGVtYW50LmFncmF3YWxA bnhwLmNvbTsgUmF5IEtpbnNlbGxhIDxtZHJAYXNocm9lLmV1Pg0KPiA+ID4gQ2M6IG1heGltZS5j b3F1ZWxpbkByZWRoYXQuY29tOyB0cml4QHJlZGhhdC5jb207DQo+ID4gPiBicnVjZS5yaWNoYXJk c29uQGludGVsLmNvbTsgZGF2aWQubWFyY2hhbmRAcmVkaGF0LmNvbTsNCj4gPiA+IHN0ZXBoZW5A bmV0d29ya3BsdW1iZXIub3JnOyBtaW5nc2hhbi56aGFuZ0BpbnRlbC5jb20NCj4gPiA+IFN1Ympl Y3Q6IFJlOiBbRVhUXSBbUEFUQ0ggdjcgNi83XSBiYmRldjogYWRkIHF1ZXVlIHJlbGF0ZWQgd2Fy bmluZw0KPiA+ID4gYW5kIHN0YXR1cyBpbmZvcm1hdGlvbg0KPiA+ID4NCj4gPiA+IE9uIDkvMjEv MjAyMiA4OjIxIFBNLCBBa2hpbCBHb3lhbCB3cm90ZToNCj4gPiA+ID4+IGRpZmYgLS1naXQgYS9s aWIvYmJkZXYvcnRlX2JiZGV2LmggYi9saWIvYmJkZXYvcnRlX2JiZGV2LmggaW5kZXgNCj4gPiA+ ID4+IGVkNTI4YjguLmI3ZWNmOTQgMTAwNjQ0DQo+ID4gPiA+PiAtLS0gYS9saWIvYmJkZXYvcnRl X2JiZGV2LmgNCj4gPiA+ID4+ICsrKyBiL2xpYi9iYmRldi9ydGVfYmJkZXYuaA0KPiA+ID4gPj4g QEAgLTIyNCw2ICsyMjQsMTkgQEAgc3RydWN0IHJ0ZV9iYmRldl9xdWV1ZV9jb25mIHsNCj4gPiA+ ID4+ICAgcnRlX2JiZGV2X3F1ZXVlX3N0b3AodWludDE2X3QgZGV2X2lkLCB1aW50MTZfdCBxdWV1 ZV9pZCk7DQo+ID4gPiA+Pg0KPiA+ID4gPj4gICAvKioNCj4gPiA+ID4+ICsgKiBGbGFncyBpbmRp Y2F0ZSB0aGUgcmVhc29uIHdoeSBhIHByZXZpb3VzIGVucXVldWUgbWF5IG5vdCBoYXZlDQo+ID4g PiA+PiArICogY29uc3VtZWQgYWxsIHJlcXVlc3RlZCBvcGVyYXRpb25zDQo+ID4gPiA+PiArICog SW4gY2FzZSBvZiBtdWx0aXBsZSByZWFzb25zIHRoZSBsYXR0ZXIgc3VwZXJkZXMgYSBwcmV2aW91 cw0KPiA+ID4gPj4gKyBvbmUNCj4gPiA+ID4gU3BlbGwgY2hlY2sgLSBzdXBlcnNlZGVzLg0KPiA+ ID4gPg0KPiA+ID4gPj4gKyAqLw0KPiA+ID4gPj4gK2VudW0gcnRlX2JiZGV2X2VucXVldWVfc3Rh dHVzIHsNCj4gPiA+ID4+ICsJUlRFX0JCREVWX0VOUV9TVEFUVVNfTk9ORSwgICAgICAgICAgICAg LyoqPCBOb3RoaW5nIHRvDQo+IHJlcG9ydCAqLw0KPiA+ID4gPj4gKwlSVEVfQkJERVZfRU5RX1NU QVRVU19RVUVVRV9GVUxMLCAgICAgICAvKio8IE5vdA0KPiBlbm91Z2ggcm9vbQ0KPiA+IGluDQo+ ID4gPiA+PiBxdWV1ZSAqLw0KPiA+ID4gPj4gKwlSVEVfQkJERVZfRU5RX1NUQVRVU19SSU5HX0ZV TEwsICAgICAgICAvKio8IE5vdA0KPiBlbm91Z2ggcm9vbQ0KPiA+IGluDQo+ID4gPiA+PiByaW5n ICovDQo+ID4gPiA+PiArCVJURV9CQkRFVl9FTlFfU1RBVFVTX0lOVkFMSURfT1AsICAgICAgIC8q KjwgT3BlcmF0aW9uDQo+IHdhcw0KPiA+ID4gPj4gcmVqZWN0ZWQgYXMgaW52YWxpZCAqLw0KPiA+ ID4gPj4gKwlSVEVfQkJERVZfRU5RX1NUQVRVU19QQURERURfTUFYID0gNiwgICAvKio8DQo+IE1h eGltdW0gZW5xDQo+ID4gPiA+PiBzdGF0dXMgbnVtYmVyIGluY2x1ZGluZyBwYWRkaW5nICovDQo+ ID4gPiA+DQo+ID4gPiA+IEFyZSB3ZSBvayB0byBoYXZlIHRoaXMga2luZCBvZiBwYWRkaW5nIGFj cm9zcyBEUERLIGZvciBhbGwgdGhlDQo+ID4gPiA+IGVudW1zIHRvIGF2b2lkDQo+ID4gPiBBQkkg aXNzdWVzPw0KPiA+ID4gPiBAUmF5LCBAVGhvbWFzOiBhbnkgdGhvdWdodHM/DQo+ID4gPiA+DQo+ ID4gPiA+DQo+ID4gPg0KPiA+ID4gVGhpcyBraW5kIG9mIHVzYWdlIGNhbiBwcmV2ZW50IEFCSSB0 b29sIHdhcm5pbmcsIGFuZCBjYW4gZml4IGlzc3Vlcw0KPiA+ID4gY2F1c2VkIGJ5IGFwcGxpY2F0 aW9uIHVzaW5nIHJldHVybmVkIGVudW0gYXMgaW5kZXggWzFdLg0KPiA+ID4NCj4gPiA+IEJ1dCBJ IHRoaW5rIGl0IGlzIHN0aWxsIHByb2JsZW1hdGljIGluIGNhc2UgYXBwbGljYXRpb24gdHJpZXMg dG8NCj4gPiA+IHdhbGsgdGhyb3VnaCB0aWxsIE1BWCwgdGhhdCBpcyBhIGNvbW1vbiB1c2FnZSBb Ml0sIHVzZXIgbWF5IG1pc3MgdGhhdA0KPiB0aGlzDQo+ID4gPiBpcyBQQURERUQuDQo+IA0KPiBI aSBGZXJydWgsDQo+IEkgZG9u4oCZdCBiZWxpZXZlIHRoYXQgY2FzZSBjYW4gaGFwcGVuIGhlcmUu IEV2ZW4gaWYgYXBwbGljYXRpb24gd2FzIHVzaW5nIGFuDQo+IHVuZGVmaW5lZCBpbmRleCwgdGhl IHJlbGF0ZWQgZnVuY3Rpb25zIGFyZSBwcm90ZWN0ZWQgZm9yIHRoYXQgOg0KPiBTZWUgcnRlX2Ji ZGV2X2VucXVldWVfc3RhdHVzX3N0cihlbnVtIHJ0ZV9iYmRldl9lbnF1ZXVlX3N0YXR1cyBzdGF0 dXMpDQo+IFRoZSByZWFzb24gZm9yIGhhdmluZyBwYWRkZWQgbWF4LCBpcyB0aGF0IHRoZSBhcHBs aWNhdGlvbiBtYXkgdXNlIHRoaXMgZm9yDQo+IGFycmF5IHNpemluZyBpZiByZXF1aXJlZCB3aXRo b3V0IGNvbmNlcm4sIHdlIHdpbGwgbmV2ZXIgcmV0dXJuIGEgdmFsdWUgdGhhdA0KPiB3b3VsZCBl eGNlZWRzIHRoaXMuDQo+IEluIHRoZSBvdGhlciBkaXJlY3Rpb24gdGhhdCBpcyBub3QgYSBwcm9i bGVtIGVpdGhlciBzaW5jZSBhcHBsaWNhdGlvbiAoZXZlbiBpdA0KPiBuZWVkcyB0byBzdG9yZSB0 aGlncyBpbiBhcnJheSkgY2FuIHVzZWQgdGhlIHBhZGRlZCB2ZXJzaW9uLg0KPiBOb3RlIHRoYXQg dGhpcyBkaXNjdXNzZWQgd2l0aCBSYXkgbm90YWJseSBhcyBhIEJLTS4NCj4gDQo+ID4gPg0KPiA+ ID4gT3ZlcmFsbCBleGNoYW5naW5nIGVudW0gdmFsdWVzIGJldHdlZW4gbGlicmFyeSBhbmQgYXBw bGljYXRpb24gaXMNCj4gPiA+IHBvc3NpYmxlIHRyb3VibGUgZm9yIGJpbmFyeSBjb21wYXRpYmls aXR5LiBJZiBhcHBsaWNhdGlvbiBhbmQNCj4gPiA+IGxpYnJhcnkgdXNlcyBlbnVtIHZhbHVlcyBp bmRlcGVuZGVudGx5LCB0aGlzIGlzIE9LLg0KPiA+ID4gU2luY2UgZW51bSBjYXNlcyBub3QgZGVs ZXRlZCBidXQgYWRkZWQgaW4gbmV3IHZlcnNpb24gb2YgdGhlDQo+ID4gPiBsaWJyYXJpZXMsIG1v cmUgcHJvYmxlbWF0aWMgdXNhZ2UgaXMgcGFzc2luZyBlbnVtIHZhbHVlIGZyb20gbGlicmFyeQ0K PiA+ID4gdG8gYXBwbGljYXRpb24sIGFuZCBiYmRldiBzZWVtcyBkb2luZyB0aGlzIGluIGEgZmV3 IHBsYWNlcy4NCj4gDQo+IEkgZG9u4oCZdCBzZWUgYSBjYXNlIHdoZXJlIGl0IGlzIGEgZ2VudWlu ZSBpc3N1ZS4NCj4gQW4gZW51bSBpcyBiZWluZyByZXBvcnRlZCBmcm9tIGxpYnJhcnksIGV2ZW4g aWYgZHVlIHRvIGZ1dHVyZSBlbnVtIGluc2VydGlvbg0KPiB0aGVyZSBpcyBhIG5ldyBlbnVtIHJl cG9ydGVkIGJldHdlZW4gMiBBQkkgY2hhbmdlcywgdGhhdCB3b3VsZCBzdGlsbCBiZQ0KPiB3aXRo aW4gYm91bmRzLg0KPiANCj4gPiA+DQo+ID4gPiBXaXRoIGN1cnJlbnQgYXBwcm9hY2ggUEFEREVE X01BWCB1c2FnZSBpcyBtb3JlIGxpa2UgI2RlZmluZSB1c2FnZSwNCj4gPiA+IGl0IGlzIG5vdCBk eW5hbWljIGJ1dCBhIGhhcmRjb2RlZCB2YWx1ZSB0aGF0IGlzIHVzZWQgYXMgYXJyYXkgc2l6ZSB2 YWx1ZS4NCj4gPiA+DQo+ID4gPiBOb3QgcHJvdmlkaW5nIGEgTUFYIGVudW0gY2FzZSByZXN0cmlj dHMgdGhlIGFwcGxpY2F0aW9uLCBhcHBsaWNhdGlvbg0KPiA+ID4gY2FuJ3QgdXNlIGl0IGFzIHNp emUgb2YgYW4gYXJyYXkgb3IgY2FuJ3QgdXNlIGl0IHdhbGsgdGhyb3VnaA0KPiA+ID4gcmVsYXRl ZCBhcnJheSwgdXNhZ2UgcmVkdWNlcyB0byBpZi9zd2l0Y2ggY29tcGFyaXNvbnMuDQo+IA0KPiBJ dCBjYW4gdXNlIHRoZSBwYWRkZWRfbWF4IHRvIHNpemUgYXBwbGljYXRpb24gYXJyYXkuIEV2ZW4g aWYgYXBwbGljYXRpb24gd2FzDQo+IHdhbGtpbmcgdGhyb3VnaCB0aGVzZSwgdGhlcmUgaXMgbm8g YWR2ZXJzZSBlZmZlY3QuDQo+IA0KPiA+ID4gQWx0aG91Z2ggdGhpcyBtYXkgbm90IGJlIG1vc3Qg Y29udmVuaWVudCBmb3IgYXBwbGljYXRpb24sIGl0IGNhbg0KPiA+ID4gcHJvdmlkZSBzYWZlciB1 c2FnZSBmb3IgYmluYXJ5IGNvbXBhdGliaWxpdHkuDQo+ID4gPg0KPiA+ID4NCj4gPiA+IEBOaWMs IHdoYXQgZG8geW91IHRoaW5rIHByb3ZpZGUgdGhlc2UgUEFEREVEX01BWCBhcyAjZGVmaW5lDQo+ IFNJWkVfTUFYDQo+ID4gPiBtYWNyb3M/DQo+ID4gPiBXaXRoIHRoaXMgYXBwbGljYXRpb24gc3Rp bGwgY2FuIGFsbG9jYXRlIGEgcmVsZXZhbnQgYXJyYXkgd2l0aA0KPiA+ID4gY29ycmVjdCBzaXpl LCBvciBrbm93IHRoZSBzaXplIG9mIGxpYnJhcnkgcHJvdmlkZWQgYXJyYXksIGJ1dCBjYW4ndA0K PiA+ID4gdXNlIGl0IHRvIGl0ZXJhdGUgb24gdGhlc2UgYXJyYXlzLg0KPiA+ID4NCj4gDQo+IFRo YXQgd291bGQgYmUgYmFjayB0byBob3cgaXQgd2FzIGRvbmUgYmVmb3JlIHdoaWNoIG1hZGUgdGhp bmdzIHZlcnkNCj4gaW5mbGV4aWJsZSBhbmQgcHJldmVudGVkIHRvIGNoYW5nZSB0aGVzZSBlbnVt cyBiZXR3ZWVuIEFCSXMgdmVyc2lvbnMuDQo+IA0KPiBUaGlzIGNoYW5nZSB3YXMgaGlnaGxpZ2h0 ZWQgYW5kIGRpc2N1c3NlZCBtYW55IG1vbnRocyBhZ28gYW5kIGZsYWdnZWQgaW4NCj4gdGhlIGRl cHJlY2F0aW9uIG5vdGljZSBpbiBwcmV2aW91cyByZWxlYXNlIGZvciB0aGF0IHZlcnkgcmVhc29u Lg0KPiANCj4gUmF5LCBjYW4geW91IHBsZWFzZSBjaGltZSBpbiBzaW5jZSB5b3Uga25vdyBiZXN0 Lg0KPiANCj4gVGhhbmtzIEZlcnJ1aCwNCj4gTmljDQo+IA0KPiANCj4gDQo+ID4gPg0KPiA+ID4N Cj4gPiA+DQo+ID4gPiBbMV0NCj4gPiA+IC0tLS0tLS0tLS0tLS0tLSBsaWJyYXJ5IG9sZCB2ZXJz aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZW51bQ0KPiA+ID4gdHlwZSB7DQo+ID4g PiAJQ0FTRV9BLA0KPiA+ID4gCUNBU0VfQiwNCj4gPiA+IAlDQVNFX01BWCwNCj4gPiA+IH07DQo+ ID4gPg0KPiA+ID4gc3RydWN0IGRhdGEgew0KPiA+ID4gCWVudW0gdHlwZSB0eXBlOw0KPiA+ID4g CXVuaW9uIHsNCj4gPiA+IAkJdHlwZSBzcGVjaWZpYyBzdHJ1Y3QNCj4gPiA+IAl9Ow0KPiA+ID4g fTsNCj4gPiA+DQo+ID4gPiBpbnQgYXBpX2dldChzdHJ1Y3QgZGF0YSAqZGF0YSk7DQo+ID4gPg0K PiA+ID4NCj4gPiA+IC0tLS0tLS0tLS0tLS0tLSBhcHBsaWNhdGlvbiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQo+ID4gPg0KPiA+ID4gc3RydWN0IGRhdGEgZGF0YTsNCj4gPiA+IGludCBh cnJheVtDQVNFX01BWF07DQo+ID4gPg0KPiA+ID4gYXBpX2dldCgmZGF0YSk7DQo+ID4gPiBmb28o YXJyYXlbZGF0YS50eXBlXSk7DQo+ID4gPg0KPiA+ID4NCj4gPiA+IC0tLS0tLS0tLS0tLS0tLSBs aWJyYXJ5IE5FVyB2ZXJzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiA+DQo+ ID4gPiBlbnVtIHR5cGUgew0KPiA+ID4gCUNBU0VfQSwNCj4gPiA+IAlDQVNFX0IsDQo+ID4gPiAJ Q0FTRV9DLA0KPiA+ID4gCUNBU0VfRCwNCj4gPiA+IAlDQVNFX01BWCwNCj4gPiA+IH07DQo+ID4g Pg0KPiA+ID4NCj4gPiA+IFdoZW4gYXBwbGljYXRpb24gaXMgTk9UIHJlY29tcGlsZWQgYnV0IHVz aW5nIG5ldyB2ZXJzaW9uIG9mIHRoZQ0KPiA+ID4gbGlicmFyeSwgdmFsdWVzICdDQVNFX0MnICYg J0NBU0VfRCcgd2lsbCBjcmFzaCBhcHBsaWNhdGlvbiwgc28gdGhpcw0KPiA+ID4gd2lsbCBjcmVh dGUgYSBBQkkgY29tcGF0aWJpbGl0eSBpc3N1ZS4NCj4gPiA+DQo+ID4gPiBOb3RlOiBJbiB0aGUg cGFzdCBJIGhhdmUgY2xhaW1lZCB0aGF0IGFwcGxpY2F0aW9uIHNob3VsZCBjaGVjaw0KPiA+ID4g J0NBU0VfTUFYJywgaW5zdGVhZCBvZiB1c2luZyByZXR1cm5lZCB2YWx1ZSBkaXJlY3RseSBhcyBp bmRleCwgYnV0DQo+ID4gPiB0aGlzIGlzIHJlZnVzZWQgYnkgYXJndW1lbnQgdGhhdCB3ZSBjYW4n dCBjb250cm9sIHRoZSBhcHBsaWNhdGlvbiBhbmQNCj4gPiA+IHNob3VsZCBwbGF5IHNhZmUgYXNz dW1pbmcgYXBwbGljYXRpb24gYmVoYXZlcyB3cm9uZy4NCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4g PiA+DQo+ID4gPiBbMl0NCj4gPiA+DQo+ID4gPiAtLS0tLS0tLS0tLS0tLS0gbGlicmFyeSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gPg0KPiA+ID4gZW51bSB0eXBlIHsNCj4gPiA+ IAlDQVNFX05PTkUsDQo+ID4gPiAJQ0FTRV9BLA0KPiA+ID4gCUNBU0VfQiwNCj4gPiA+IAlDQVNF X0MsDQo+ID4gPiAJQ0FTRV9ELA0KPiA+ID4gCUNBU0VfUEFEREVEX01BWCA9IDY2NiwNCj4gPiA+ IH07DQo+ID4gPg0KPiA+ID4gLS0tLS0tLS0tLS0tLS0tIGFwcGxpY2F0aW9uIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCj4gPiA+DQo+ID4gPiBmb3IgKGludCBpID0gQ0FTRV9OT05FOyBp IDwgQ0FTRV9QQURERURfTUFYOyBpKyspDQo+ID4gPiAJZnJhZ2lsZV9pbml0KGkpOw0KPiA+ID4N Cj4gPiA+IC0tLQ0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+DQo+ID4g Pg0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KDQo=