From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 3B0EA431B7 for ; Thu, 23 Jun 2022 18:04:51 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D9A9768B747; Thu, 23 Jun 2022 21:04:24 +0300 (EEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2096.outbound.protection.outlook.com [40.92.90.96]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 86A3D68B456 for ; Thu, 23 Jun 2022 21:04:18 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PoY8ZJRG/M3pEIej3BOzdB+t9dPtmNc8q6Zof4GHA3it39X6rGstlEs/zTzlezSh0vLXWR8q/GTddT7DipMZggpu30fZEQ0rsh2j/+DL0pLghDxmQqF8vAV00ZxGhl3WQvq2IVt5xkX5OQn8bOmeFOjbESczg2fWuq+Ns18rCptf9BYQgNKAj+JwMhOHyDfGci+0O1XqpelhvmKF+l81LXq1jzcsfCh3vEQGg9XwnlfJMJsnvJDY6SrdUVQeOynekZiIjvGf2p8mADq5mJJpoLAGD7zPii2dhhc6DS40wH+MniCuFY1zzEOr/LvXtxYQcYMpLqeGNbd5xg+bMSqX2Q== 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=5wJnhFI70HbjrqyQBBTEOatbdHoZdBDbmKdlFC7afKY=; b=m6wYRIBpHIS8eqDL4ZGTnu3qnCxE8o3hZKFtUHyNs/NZRhZ/3Xg9j4xR5aSiilaP8TCzpn6gMtmJS1/pk4kHL0phDmf0UVyr5hSnATEr1GUKg4WxQNbfckkJ6yxVnUpO/RNirwpE+0SyY3cnbaLfrBb0I5LkDR25iRtSjUOlQ6A5tqaUM5ww5zV8Knh6cYIryyMJ22YCxk7ZjXeHKiJgyyJbXxsTzEybhFnS9v6tfkmEL3cPM1i+VJ7RGP3vpRLQIPv93oA75N14aS3jruzb88Z6Fe7GpNAm9/VdH8+1/N6ab8ak5w2QJPk+6vM8soXzLtoth8yWCP7gmClQeY4l3A== 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=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5wJnhFI70HbjrqyQBBTEOatbdHoZdBDbmKdlFC7afKY=; b=ulUlvKgtXR75Azsc19ptqHCiN1MNrElnkZgid2Pyyrm/90/dVexvY6WYgPWw4Q0tZDx0kXtsUuMZUpk5DP6r9lFCTYqS1ADx3YTx0rEVQ1Tb1Z+Nbpsubc9rFwfZvyW9v1Qc685i5btS8DsD+MZPHmvpP8SMqmh9q9eivrExVSXNWcrCY2+fRgUYK+wRnYWj2p3bVEpkkjc30YiSZ2HYp2wvbPJrFgD/dSEXkfely95AgPUrMaPuH5pPI57LcNwPXT10SvfeE42XmpRl020q4+XciwGGUwiBP3kmMIIzeAWEyepR5wO30f8saUOP0O1EfMYXcbWrtjwp38gMhd7gTg== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by AS1PR01MB10149.eurprd01.prod.exchangelabs.com (2603:10a6:20b:478::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15; Thu, 23 Jun 2022 18:04:16 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5353.022; Thu, 23 Jun 2022 18:04:16 +0000 Message-ID: Date: Thu, 23 Jun 2022 20:04:14 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220623122636.24732-1-anton@khirnov.net> <20220623122636.24732-4-anton@khirnov.net> From: Andreas Rheinhardt In-Reply-To: <20220623122636.24732-4-anton@khirnov.net> X-TMN: [eFKSZz7mESrLWSk7/+SNKaWj3k+Ocd8K] X-ClientProxiedBy: AM6P191CA0042.EURP191.PROD.OUTLOOK.COM (2603:10a6:209:7f::19) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <62e04107-b6c7-0c4d-88dd-2ce70276c824@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a2741e0c-26bd-434b-05af-08da5542c907 X-MS-TrafficTypeDiagnostic: AS1PR01MB10149:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4umRuuXIfOt6kROgzUJBgfRlL/PWyX2Bsxw7Nm5v5VxLVIjA7HZfgm4pdX6sv70ZA47zUIt0JaKXG9GNueULcju7XP8IizaBjw+FUrIT/k0XLEhzDK7wGnM6ex+EyR1Ea6Dug8PvrfsUCjgZfPKOIm1YjpBDdNJg8OHLr/nOXeq151VDL/TDW+xlTFknPRFtllDboW+KXiv7dEkoSlou1s4AQb2eX5SBunY9BQo2wVeo9Nx4zmR5NveS21wmGk9vYTEZ4NSg60hey7ZL5uW1sBWlJ5fAAi9InfETYlXxPF2dbka7QC8zmKKg5RaIaqtcTA8LhRmxnXKOtXQnYHR6bl6otV4ovAQwX4AezSLO6VXt6NOfIOdsgZsr3XGpbojoK6B7I5KVevrHvBXgX2i6Y7fCYr46OIBjPsvbVTxhNuYP9lieZDrwSLUdlze4pgiRK9fb8LNOBhNnyYADAwR+b4DPs7vxqZN6HPB2ahaojsZdDRMt3MfhJdHldi/D5RbYA1HqjZ87f4K8TYktVIOVoDBODRfGKPj/bD5XE7KbWqAwjARLyU+MAkqKZraD0ZtecPLSRSwTjigvw3zApatrk2tSbUGQTM8vABDV8FS3Yrc7rkx5rMB+FF12yC33KdTb X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WU53a1IrUHpnUGRlNWpBd09GYnRENXlSdlhRM1J0ZXJlZUhNWkxOYnNzZzRN?= =?utf-8?B?VHNRS0hMWjdYenUxdGRoVVhiUXVsSnBsdWV5OTVodldZZGFsWnRmSk9OSjRP?= =?utf-8?B?UGEyYnE5bmttMVlTaTdUSmpZUkZoUWtsQ1cwMCtWaHAyRmlmNkEwY3I1Umc2?= =?utf-8?B?WGNEQklZRVM5VTFKR0VXbXhCenM3czNSdzNNZ1JLSDRJbndYeDBGZGowSmFt?= =?utf-8?B?TjdQeDl1WDc0Z2ovZ2FQbjY3aEYxODQvdzkzRmtVcVFZYk1pZGJhWitEWlV4?= =?utf-8?B?MGVmTEg1SU1PeWJWNFN0L3NQdm4xQXJEQXhTQUVHeml5U2xGYkY2clo0bzN3?= =?utf-8?B?T2ZCMlRTY1VNZlh6SVhUekV4Q3lnWFpnNzdlWjVJK2oxSGFZM1ROY08wcGZz?= =?utf-8?B?aUtqcFFyWnlvblM1R3h3d1lTL0FnN1ZQUzlGS29BeTVUeTNLMytPbWFSNVNj?= =?utf-8?B?SjlDOVZSbGo2YTlNTDA0dGMxc0JwNkYrTWtiWXF6ZjlOdkViOXZPRUtmYXdB?= =?utf-8?B?Yk1KMzVTd0FybVY1SXMycW9zNzE2NWl4OVNyVEF1WUkrcnZ3alVuZzFMamRR?= =?utf-8?B?MGIzbDcxY2RhQkFzYkI3QkU1WUM0NnBPZkI0K0JnV3M1eHVtWjZGU1E4Q05j?= =?utf-8?B?RU9YU2hjaGExMUhDb1JyRXMzZ2V6T2J0MmVERGtHa2puZTBzSVA2K3pXNWdK?= =?utf-8?B?OWIvaC81ZDR5WXhiejg0bzd0ZnNSUFRKNzdVdDlpNC9nWTh5RVZLWG9RLzNh?= =?utf-8?B?Z0hGbXM0cS9SZEQzNkt4cVQyL1o5dGNVbC81WFFYWEhUS1lMZ0hRNDRibXl2?= =?utf-8?B?UVdzNUxvOFFUSXI0UjRKc1NVYjBKRXpuZ1JOSmpjTElRbnIxbEQ4N1hGRFZh?= =?utf-8?B?cXJHZlQvNTZYK1BJR1NVUzFmbzZFeU83L2kzVlE1eFEzTGNDd3ZOMGpUU0hS?= =?utf-8?B?Z3dPMEFZOW9pSFJGTDlCbjFSdE56aERxVjlFemU1enBtR0lmU2toSXpCejE0?= =?utf-8?B?emhrZzdpR3d3OGJKMGdPWHRzYlZsbWVheFByN0piVzlUMld6NUNxSjlSdmhk?= =?utf-8?B?VFlkb1lrU3RDMVRBN3dTeDlKaldBLzByL2daNmVxMGVJL01YQTdEWW1OZWxM?= =?utf-8?B?SXZIcE00clU4MmN6d05DZE5OL3M4R0hDQjc0R2pwVDlLQ0FEaHZkQ2RFSHly?= =?utf-8?B?MVdnYWlpK1dmeHN5WXNzeWk0RzdsQUdDK1kwOEFiNTRFUElyY1A1eGIxUUty?= =?utf-8?B?eTdFd0NiWUs0ZG5QZUtzanZkcEVJQmlmdlN1S3J5ZEIrQUJoNDZ1dWNJNUNW?= =?utf-8?B?QUlBSUVZT0xVaDZzc2pwNjl3NHJIMkdTb1hxR0FlQlMraWJpVWpCeXB4UURL?= =?utf-8?B?MC9mMmF3SEREV3dsbzdZVjdGV0VRaVlwcUFiMXpoOGdVdUp6aXZFSmlOL2JY?= =?utf-8?B?ZUZKbUNFVEtqNlIyM3kyVjdRK2M4SktkblJEdlRKcmNTaVJWNGFlQ0wzZUNE?= =?utf-8?B?Z0d5czQyVTdWZHVuZHUraDY0d0F2bENMMytjU1FsY1NLSlZUQzlqSDI5d1VD?= =?utf-8?B?amFvbnlNd3RuU3RFdVo3NkZuK0c1M0pZL1RHeDlzTE5SVTk2RzVpTFJKZEkw?= =?utf-8?B?VFB1NXRLOFNZMlFsNmM1b3ZwNGFJNjlGdk1hSXBEdmFKVlZzN3JOejBZeUda?= =?utf-8?B?NzliekJYWjQ1TlNSOU5iQ2tLM1hWM0svWFRUdCtOdldCTXM2UDQyK2twaTUx?= =?utf-8?Q?2WV63be9sHz2g1Bxkg=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a2741e0c-26bd-434b-05af-08da5542c907 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jun 2022 18:04:16.2416 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS1PR01MB10149 Subject: Re: [FFmpeg-devel] [PATCH 4/4] lavc/get_bits: add a compat wrapper for the cached bitstream reader X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: QW50b24gS2hpcm5vdjoKPiBVc2UgdGhhdCBpbnN0ZWFkIG9mIHRoZSBtZXJnZWQgdmVyc2lvbi4K PiAtLS0KPiAgbGliYXZjb2RlYy9nZXRfYml0cy5oIHwgMjk3ICsrKysrKystLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgNTAgaW5zZXJ0aW9ucygr KSwgMjQ3IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2dldF9iaXRz LmggYi9saWJhdmNvZGVjL2dldF9iaXRzLmgKPiBpbmRleCA5ZjJiMTc4NGQ1Li5kOWZjNzk0Yzhj IDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMvZ2V0X2JpdHMuaAo+ICsrKyBiL2xpYmF2Y29kZWMv Z2V0X2JpdHMuaAo+IEBAIC0xLDYgKzEsNSBAQAo+ICAvKgo+ICAgKiBDb3B5cmlnaHQgKGMpIDIw MDQgTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KPiAtICogQ29weXJpZ2h0 IChjKSAyMDE2IEFsZXhhbmRyYSBIw6Fqa292w6EKPiAgICoKPiAgICogVGhpcyBmaWxlIGlzIHBh cnQgb2YgRkZtcGVnLgo+ICAgKgo+IEBAIC01OSwxMiArNTgsNDMgQEAKPiAgI2RlZmluZSBDQUNI RURfQklUU1RSRUFNX1JFQURFUiAwCj4gICNlbmRpZgo+ICAKPiArI2lmIENBQ0hFRF9CSVRTVFJF QU1fUkVBREVSCj4gKyNpbmNsdWRlICJiaXRzdHJlYW0uaCIKPiArCj4gKyNkZWZpbmUgTUlOX0NB Q0hFX0JJVFMgNjQKClBsZWFzZSBkb24ndCBkZWZpbmUgdGhpcy4gSXQgbWFrZXMgbm8gc2Vuc2Ug Zm9yIHRoZSBjYWNoZWQgYml0c3RyZWFtIHJlYWRlci4KKEFuZCBzZXZlcmFsIG9mIHRoZSB1c2Vz IG9mIHRoaXMgbWFjcm8gZm9yIHRoZSBvdGhlciBiaXRzdHJlYW0gcmVhZGVycwpzZWVtIGhpZ2hs eSBkdWJpb3VzIGZvciBtZS4gVGhlIHdvcnN0IGlzIGJpdF9jb3B5KCkgaW4gZHZkZWMuYyB3aGlj aAp3b3VsZCBzaW1wbHkgbm90IHdvcmsgKG9yIGV2ZW4gYXNzZXJ0KSB3aGVuIG9uZSB1c2VzIGEg bm9uZGVmYXVsdApnZXRiaXQtQVBJLiBhcGVkZWMsIGVhdGd2LCBwcm9yZXNkZWMyLCB0dGEgYW5k IHdtYSB1c2UgdGhpcyB0byBjaGVjawp0aGVpciBpbnB1dCBmb3IgY29tcGxpYW5jZSBpbnN0ZWFk IG9mIGJhc2luZyB0aGVpciBsaW1pdHMgb24gdGhlCnVuZGVybHlpbmcgc3BlY2lmaWNhdGlvbnMu KQoKPiArCj4gK3R5cGVkZWYgQml0c3RyZWFtQ29udGV4dCBHZXRCaXRDb250ZXh0Owo+ICsKPiAr I2RlZmluZSBnZXRfYml0c19jb3VudCAgICAgIGJpdHN0cmVhbV90ZWxsCj4gKyNkZWZpbmUgZ2V0 X2JpdHNfbGVmdCAgICAgICBiaXRzdHJlYW1fYml0c19sZWZ0Cj4gKyNkZWZpbmUgc2tpcF9iaXRz X2xvbmcgICAgICBiaXRzdHJlYW1fc2tpcAo+ICsjZGVmaW5lIHNraXBfYml0cyAgICAgICAgICAg Yml0c3RyZWFtX3NraXAKPiArI2RlZmluZSBnZXRfYml0cyAgICAgICAgICAgIGJpdHN0cmVhbV9y ZWFkCgpUaGlzIHdpbGwgYWRkIGEgY2hlY2sgZm9yIGJpdHMgPT0gMCB0byBldmVyeSBnZXRfYml0 cygpIGZvciB3aGljaCB0aGUKY29tcGlsZXIgY2FuJ3QgaW5mZXIgdGhhdCBpdCBpcyBub3QgemVy byBhdCBjb21waWxlLXRpbWUuIFRoaXMgaXMKdW5hY2NlcHRhYmxlLgoKPiArI2RlZmluZSBnZXRf Yml0c3ogICAgICAgICAgIGJpdHN0cmVhbV9yZWFkCj4gKyNkZWZpbmUgZ2V0X2JpdHNfbGUgICAg ICAgICBiaXRzdHJlYW1fcmVhZAoKUGF0Y2ggMy80IGludGVuZGVkIHRvIG1ha2UgaXQgcG9zc2li bGUgdG8gdXNlIGJvdGggTEUgYW5kIEJFIGluIHRoZSBzYW1lCmZpbGU7IGFuZCBub3cgeW91IGRl ZmluZSB0aGlzIGhlcmUuIFRoaXMgaXMgd3JvbmcgYW5kIHdpbGwgYnJlYWsgdGhlCnBhcnRzIG9m IHV0dmlkZW9kZWMuYyB0aGF0IHVzZSBnZXRfYml0c19sZSgpICh0aGV5IGFyZSB1bmNvdmVyZWQg YnkgRkFURSkuCgo+ICsjZGVmaW5lIGdldF9iaXRzX2xvbmcgICAgICAgYml0c3RyZWFtX3JlYWQK PiArI2RlZmluZSBnZXRfYml0czY0ICAgICAgICAgIGJpdHN0cmVhbV9yZWFkXzYzCj4gKyNkZWZp bmUgZ2V0X3hiaXRzICAgICAgICAgICBiaXRzdHJlYW1fcmVhZF94Yml0cwo+ICsjZGVmaW5lIGdl dF9zYml0cyAgICAgICAgICAgYml0c3RyZWFtX3JlYWRfc2lnbmVkCj4gKyNkZWZpbmUgZ2V0X3Ni aXRzX2xvbmcgICAgICBiaXRzdHJlYW1fcmVhZF9zaWduZWQKPiArI2RlZmluZSBzaG93X2JpdHMg ICAgICAgICAgIGJpdHN0cmVhbV9wZWVrCj4gKyNkZWZpbmUgc2hvd19iaXRzX2xvbmcgICAgICBi aXRzdHJlYW1fcGVlawo+ICsjZGVmaW5lIGluaXRfZ2V0X2JpdHMgICAgICAgYml0c3RyZWFtX2lu aXQKPiArI2RlZmluZSBpbml0X2dldF9iaXRzOCAgICAgIGJpdHN0cmVhbV9pbml0OAo+ICsjZGVm aW5lIGluaXRfZ2V0X2JpdHM4X2xlICAgYml0c3RyZWFtX2luaXQ4X2xlCj4gKyNkZWZpbmUgYWxp Z25fZ2V0X2JpdHMgICAgICBiaXRzdHJlYW1fYWxpZ24KPiArI2RlZmluZSBnZXRfdmxjMiAgICAg ICAgICAgIGJpdHN0cmVhbV9yZWFkX3ZsYwo+ICsKPiArI2RlZmluZSBnZXRfYml0czEocykgICAg ICAgIGJpdHN0cmVhbV9yZWFkKHMsIDEpCgpXaHkgbm90IGJpdHN0cmVhbV9yZWFkX2JpdD8KCj4g KyNkZWZpbmUgc2hvd19iaXRzMShzKSAgICAgICBiaXRzdHJlYW1fcGVlayhzLCAxKQo+ICsjZGVm aW5lIHNraXBfYml0czEocykgICAgICAgYml0c3RyZWFtX3NraXAocywgMSkKPiArCj4gKyNkZWZp bmUgc2tpcF8xc3RvcF84ZGF0YV9iaXRzIGJpdHN0cmVhbV9za2lwXzFzdG9wXzhkYXRhCj4gKwo+ ICsjZWxzZSAgIC8vIENBQ0hFRF9CSVRTVFJFQU1fUkVBREVSCj4gKwo+ICB0eXBlZGVmIHN0cnVj dCBHZXRCaXRDb250ZXh0IHsKPiAgICAgIGNvbnN0IHVpbnQ4X3QgKmJ1ZmZlciwgKmJ1ZmZlcl9l bmQ7Cj4gLSNpZiBDQUNIRURfQklUU1RSRUFNX1JFQURFUgo+IC0gICAgdWludDY0X3QgY2FjaGU7 Cj4gLSAgICB1bnNpZ25lZCBiaXRzX2xlZnQ7Cj4gLSNlbmRpZgo+ICAgICAgaW50IGluZGV4Owo+ ICAgICAgaW50IHNpemVfaW5fYml0czsKPiAgICAgIGludCBzaXplX2luX2JpdHNfcGx1czg7Cj4g QEAgLTEyMSwxNiArMTUxLDEyIEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHNob3dfYml0 cyhHZXRCaXRDb250ZXh0ICpzLCBpbnQgbik7Cj4gICAqIEZvciBleGFtcGxlcyBzZWUgZ2V0X2Jp dHMsIHNob3dfYml0cywgc2tpcF9iaXRzLCBnZXRfdmxjLgo+ICAgKi8KPiAgCj4gLSNpZiBDQUNI RURfQklUU1RSRUFNX1JFQURFUgo+IC0jICAgZGVmaW5lIE1JTl9DQUNIRV9CSVRTIDY0Cj4gLSNl bGlmIGRlZmluZWQgTE9OR19CSVRTVFJFQU1fUkVBREVSCj4gKyNpZiBkZWZpbmVkIExPTkdfQklU U1RSRUFNX1JFQURFUgo+ICAjICAgZGVmaW5lIE1JTl9DQUNIRV9CSVRTIDMyCj4gICNlbHNlCj4g ICMgICBkZWZpbmUgTUlOX0NBQ0hFX0JJVFMgMjUKPiAgI2VuZGlmCj4gIAo+IC0jaWYgIUNBQ0hF RF9CSVRTVFJFQU1fUkVBREVSCj4gLQo+ICAjZGVmaW5lIE9QRU5fUkVBREVSX05PU0laRShuYW1l LCBnYikgICAgICAgICAgICBcCj4gICAgICB1bnNpZ25lZCBpbnQgbmFtZSAjIyBfaW5kZXggPSAo Z2IpLT5pbmRleDsgIFwKPiAgICAgIHVuc2lnbmVkIGludCBhdl91bnVzZWQgbmFtZSAjIyBfY2Fj aGUKPiBAQCAtMjE1LDczICsyNDEsMTIgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgc2hv d19iaXRzKEdldEJpdENvbnRleHQgKnMsIGludCBuKTsKPiAgCj4gICNkZWZpbmUgR0VUX0NBQ0hF KG5hbWUsIGdiKSAoKHVpbnQzMl90KSBuYW1lICMjIF9jYWNoZSkKPiAgCj4gLSNlbmRpZgo+ICAK PiAgc3RhdGljIGlubGluZSBpbnQgZ2V0X2JpdHNfY291bnQoY29uc3QgR2V0Qml0Q29udGV4dCAq cykKPiAgewo+IC0jaWYgQ0FDSEVEX0JJVFNUUkVBTV9SRUFERVIKPiAtICAgIHJldHVybiBzLT5p bmRleCAtIHMtPmJpdHNfbGVmdDsKPiAtI2Vsc2UKPiAgICAgIHJldHVybiBzLT5pbmRleDsKPiAt I2VuZGlmCj4gIH0KPiAgCj4gLSNpZiBDQUNIRURfQklUU1RSRUFNX1JFQURFUgo+IC1zdGF0aWMg aW5saW5lIHZvaWQgcmVmaWxsXzMyKEdldEJpdENvbnRleHQgKnMsIGludCBpc19sZSkKPiAtewo+ IC0jaWYgIVVOQ0hFQ0tFRF9CSVRTVFJFQU1fUkVBREVSCj4gLSAgICBpZiAocy0+aW5kZXggPj4g MyA+PSBzLT5idWZmZXJfZW5kIC0gcy0+YnVmZmVyKQo+IC0gICAgICAgIHJldHVybjsKPiAtI2Vu ZGlmCj4gLQo+IC0gICAgaWYgKGlzX2xlKQo+IC0gICAgICAgIHMtPmNhY2hlID0gKHVpbnQ2NF90 KUFWX1JMMzIocy0+YnVmZmVyICsgKHMtPmluZGV4ID4+IDMpKSA8PCBzLT5iaXRzX2xlZnQgfCBz LT5jYWNoZTsKPiAtICAgIGVsc2UKPiAtICAgICAgICBzLT5jYWNoZSA9IHMtPmNhY2hlIHwgKHVp bnQ2NF90KUFWX1JCMzIocy0+YnVmZmVyICsgKHMtPmluZGV4ID4+IDMpKSA8PCAoMzIgLSBzLT5i aXRzX2xlZnQpOwo+IC0gICAgcy0+aW5kZXggICAgICs9IDMyOwo+IC0gICAgcy0+Yml0c19sZWZ0 ICs9IDMyOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW5saW5lIHZvaWQgcmVmaWxsXzY0KEdldEJpdENv bnRleHQgKnMsIGludCBpc19sZSkKPiAtewo+IC0jaWYgIVVOQ0hFQ0tFRF9CSVRTVFJFQU1fUkVB REVSCj4gLSAgICBpZiAocy0+aW5kZXggPj4gMyA+PSBzLT5idWZmZXJfZW5kIC0gcy0+YnVmZmVy KQo+IC0gICAgICAgIHJldHVybjsKPiAtI2VuZGlmCj4gLQo+IC0gICAgaWYgKGlzX2xlKQo+IC0g ICAgICAgIHMtPmNhY2hlID0gQVZfUkw2NChzLT5idWZmZXIgKyAocy0+aW5kZXggPj4gMykpOwo+ IC0gICAgZWxzZQo+IC0gICAgICAgIHMtPmNhY2hlID0gQVZfUkI2NChzLT5idWZmZXIgKyAocy0+ aW5kZXggPj4gMykpOwo+IC0gICAgcy0+aW5kZXggKz0gNjQ7Cj4gLSAgICBzLT5iaXRzX2xlZnQg PSA2NDsKPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSB1aW50NjRfdCBnZXRfdmFsKEdldEJpdENv bnRleHQgKnMsIHVuc2lnbmVkIG4sIGludCBpc19sZSkKPiAtewo+IC0gICAgdWludDY0X3QgcmV0 Owo+IC0gICAgYXZfYXNzZXJ0MihuPjAgJiYgbjw9NjMpOwo+IC0gICAgaWYgKGlzX2xlKSB7Cj4g LSAgICAgICAgcmV0ID0gcy0+Y2FjaGUgJiAoKFVJTlQ2NF9DKDEpIDw8IG4pIC0gMSk7Cj4gLSAg ICAgICAgcy0+Y2FjaGUgPj49IG47Cj4gLSAgICB9IGVsc2Ugewo+IC0gICAgICAgIHJldCA9IHMt PmNhY2hlID4+ICg2NCAtIG4pOwo+IC0gICAgICAgIHMtPmNhY2hlIDw8PSBuOwo+IC0gICAgfQo+ IC0gICAgcy0+Yml0c19sZWZ0IC09IG47Cj4gLSAgICByZXR1cm4gcmV0Owo+IC19Cj4gLQo+IC1z dGF0aWMgaW5saW5lIHVuc2lnbmVkIHNob3dfdmFsKGNvbnN0IEdldEJpdENvbnRleHQgKnMsIHVu c2lnbmVkIG4pCj4gLXsKPiAtI2lmZGVmIEJJVFNUUkVBTV9SRUFERVJfTEUKPiAtICAgIHJldHVy biBzLT5jYWNoZSAmICgoVUlOVDY0X0MoMSkgPDwgbikgLSAxKTsKPiAtI2Vsc2UKPiAtICAgIHJl dHVybiBzLT5jYWNoZSA+PiAoNjQgLSBuKTsKPiAtI2VuZGlmCj4gLX0KPiAtI2VuZGlmCj4gLQo+ ICAvKioKPiAgICogU2tpcHMgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYml0cy4KPiAgICogQHBh cmFtIG4gdGhlIG51bWJlciBvZiBiaXRzIHRvIHNraXAsCj4gQEAgLTI5MSwyOCArMjU2LDEyIEBA IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgc2hvd192YWwoY29uc3QgR2V0Qml0Q29udGV4dCAqcywg dW5zaWduZWQgbikKPiAgICovCj4gIHN0YXRpYyBpbmxpbmUgdm9pZCBza2lwX2JpdHNfbG9uZyhH ZXRCaXRDb250ZXh0ICpzLCBpbnQgbikKPiAgewo+IC0jaWYgQ0FDSEVEX0JJVFNUUkVBTV9SRUFE RVIKPiAtICAgIHNraXBfYml0cyhzLCBuKTsKPiAtI2Vsc2UKPiAgI2lmIFVOQ0hFQ0tFRF9CSVRT VFJFQU1fUkVBREVSCj4gICAgICBzLT5pbmRleCArPSBuOwo+ICAjZWxzZQo+ICAgICAgcy0+aW5k ZXggKz0gYXZfY2xpcChuLCAtcy0+aW5kZXgsIHMtPnNpemVfaW5fYml0c19wbHVzOCAtIHMtPmlu ZGV4KTsKPiAgI2VuZGlmCj4gLSNlbmRpZgo+IC19Cj4gLQo+IC0jaWYgQ0FDSEVEX0JJVFNUUkVB TV9SRUFERVIKPiAtc3RhdGljIGlubGluZSB2b2lkIHNraXBfcmVtYWluaW5nKEdldEJpdENvbnRl eHQgKnMsIHVuc2lnbmVkIG4pCj4gLXsKPiAtI2lmZGVmIEJJVFNUUkVBTV9SRUFERVJfTEUKPiAt ICAgIHMtPmNhY2hlID4+PSBuOwo+IC0jZWxzZQo+IC0gICAgcy0+Y2FjaGUgPDw9IG47Cj4gLSNl bmRpZgo+IC0gICAgcy0+Yml0c19sZWZ0IC09IG47Cj4gIH0KPiAtI2VuZGlmCj4gIAo+ICAvKioK PiAgICogUmVhZCBNUEVHLTEgZGMtc3R5bGUgVkxDIChzaWduIGJpdCArIG1hbnRpc3NhIHdpdGgg bm8gTVNCKS4KPiBAQCAtMzIxLDEzICsyNzAsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2tpcF9y ZW1haW5pbmcoR2V0Qml0Q29udGV4dCAqcywgdW5zaWduZWQgbikKPiAgICovCj4gIHN0YXRpYyBp bmxpbmUgaW50IGdldF94Yml0cyhHZXRCaXRDb250ZXh0ICpzLCBpbnQgbikKPiAgewo+IC0jaWYg Q0FDSEVEX0JJVFNUUkVBTV9SRUFERVIKPiAtICAgIGludDMyX3QgY2FjaGUgPSBzaG93X2JpdHMo cywgMzIpOwo+IC0gICAgaW50IHNpZ24gPSB+Y2FjaGUgPj4gMzE7Cj4gLSAgICBza2lwX3JlbWFp bmluZyhzLCBuKTsKPiAtCj4gLSAgICByZXR1cm4gKCgoKHVpbnQzMl90KShzaWduIF4gY2FjaGUp KSA+PiAoMzIgLSBuKSkgXiBzaWduKSAtIHNpZ247Cj4gLSNlbHNlCj4gICAgICByZWdpc3RlciBp bnQgc2lnbjsKPiAgICAgIHJlZ2lzdGVyIGludDMyX3QgY2FjaGU7Cj4gICAgICBPUEVOX1JFQURF UihyZSwgcyk7Cj4gQEAgLTMzOCwxMCArMjgwLDggQEAgc3RhdGljIGlubGluZSBpbnQgZ2V0X3hi aXRzKEdldEJpdENvbnRleHQgKnMsIGludCBuKQo+ICAgICAgTEFTVF9TS0lQX0JJVFMocmUsIHMs IG4pOwo+ICAgICAgQ0xPU0VfUkVBREVSKHJlLCBzKTsKPiAgICAgIHJldHVybiAoTkVHX1VTUjMy KHNpZ24gXiBjYWNoZSwgbikgXiBzaWduKSAtIHNpZ247Cj4gLSNlbmRpZgo+ICB9Cj4gIAo+IC0j aWYgIUNBQ0hFRF9CSVRTVFJFQU1fUkVBREVSCj4gIHN0YXRpYyBpbmxpbmUgaW50IGdldF94Yml0 c19sZShHZXRCaXRDb250ZXh0ICpzLCBpbnQgbikKPiAgewo+ICAgICAgcmVnaXN0ZXIgaW50IHNp Z247Cj4gQEAgLTM1NSwyMiArMjk1LDE2IEBAIHN0YXRpYyBpbmxpbmUgaW50IGdldF94Yml0c19s ZShHZXRCaXRDb250ZXh0ICpzLCBpbnQgbikKPiAgICAgIENMT1NFX1JFQURFUihyZSwgcyk7Cj4g ICAgICByZXR1cm4gKHplcm9fZXh0ZW5kKHNpZ24gXiBjYWNoZSwgbikgXiBzaWduKSAtIHNpZ247 Cj4gIH0KPiAtI2VuZGlmCj4gIAo+ICBzdGF0aWMgaW5saW5lIGludCBnZXRfc2JpdHMoR2V0Qml0 Q29udGV4dCAqcywgaW50IG4pCj4gIHsKPiAgICAgIHJlZ2lzdGVyIGludCB0bXA7Cj4gLSNpZiBD QUNIRURfQklUU1RSRUFNX1JFQURFUgo+IC0gICAgYXZfYXNzZXJ0MihuPjAgJiYgbjw9MjUpOwo+ IC0gICAgdG1wID0gc2lnbl9leHRlbmQoZ2V0X2JpdHMocywgbiksIG4pOwo+IC0jZWxzZQo+ICAg ICAgT1BFTl9SRUFERVIocmUsIHMpOwo+ICAgICAgYXZfYXNzZXJ0MihuPjAgJiYgbjw9MjUpOwo+ ICAgICAgVVBEQVRFX0NBQ0hFKHJlLCBzKTsKPiAgICAgIHRtcCA9IFNIT1dfU0JJVFMocmUsIHMs IG4pOwo+ICAgICAgTEFTVF9TS0lQX0JJVFMocmUsIHMsIG4pOwo+ICAgICAgQ0xPU0VfUkVBREVS KHJlLCBzKTsKPiAtI2VuZGlmCj4gICAgICByZXR1cm4gdG1wOwo+ICB9Cj4gIAo+IEBAIC0zODAs MzIgKzMxNCwxMiBAQCBzdGF0aWMgaW5saW5lIGludCBnZXRfc2JpdHMoR2V0Qml0Q29udGV4dCAq cywgaW50IG4pCj4gIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdldF9iaXRzKEdldEJpdENv bnRleHQgKnMsIGludCBuKQo+ICB7Cj4gICAgICByZWdpc3RlciB1bnNpZ25lZCBpbnQgdG1wOwo+ IC0jaWYgQ0FDSEVEX0JJVFNUUkVBTV9SRUFERVIKPiAtCj4gLSAgICBhdl9hc3NlcnQyKG4+MCAm JiBuPD0zMik7Cj4gLSAgICBpZiAobiA+IHMtPmJpdHNfbGVmdCkgewo+IC0jaWZkZWYgQklUU1RS RUFNX1JFQURFUl9MRQo+IC0gICAgICAgIHJlZmlsbF8zMihzLCAxKTsKPiAtI2Vsc2UKPiAtICAg ICAgICByZWZpbGxfMzIocywgMCk7Cj4gLSNlbmRpZgo+IC0gICAgICAgIGlmIChzLT5iaXRzX2xl ZnQgPCAzMikKPiAtICAgICAgICAgICAgcy0+Yml0c19sZWZ0ID0gbjsKPiAtICAgIH0KPiAtCj4g LSNpZmRlZiBCSVRTVFJFQU1fUkVBREVSX0xFCj4gLSAgICB0bXAgPSBnZXRfdmFsKHMsIG4sIDEp Owo+IC0jZWxzZQo+IC0gICAgdG1wID0gZ2V0X3ZhbChzLCBuLCAwKTsKPiAtI2VuZGlmCj4gLSNl bHNlCj4gICAgICBPUEVOX1JFQURFUihyZSwgcyk7Cj4gICAgICBhdl9hc3NlcnQyKG4+MCAmJiBu PD0yNSk7Cj4gICAgICBVUERBVEVfQ0FDSEUocmUsIHMpOwo+ICAgICAgdG1wID0gU0hPV19VQklU UyhyZSwgcywgbik7Cj4gICAgICBMQVNUX1NLSVBfQklUUyhyZSwgcywgbik7Cj4gICAgICBDTE9T RV9SRUFERVIocmUsIHMpOwo+IC0jZW5kaWYKPiAgICAgIGF2X2Fzc2VydDIodG1wIDwgVUlOVDY0 X0MoMSkgPDwgbik7Cj4gICAgICByZXR1cm4gdG1wOwo+ICB9Cj4gQEAgLTQyMCwxNiArMzM0LDYg QEAgc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGdldF9iaXRzeihHZXRCaXRDb250ZXh0ICpz LCBpbnQgbikKPiAgCj4gIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdldF9iaXRzX2xlKEdl dEJpdENvbnRleHQgKnMsIGludCBuKQo+ICB7Cj4gLSNpZiBDQUNIRURfQklUU1RSRUFNX1JFQURF Ugo+IC0gICAgYXZfYXNzZXJ0MihuPjAgJiYgbjw9MzIpOwo+IC0gICAgaWYgKG4gPiBzLT5iaXRz X2xlZnQpIHsKPiAtICAgICAgICByZWZpbGxfMzIocywgMSk7Cj4gLSAgICAgICAgaWYgKHMtPmJp dHNfbGVmdCA8IDMyKQo+IC0gICAgICAgICAgICBzLT5iaXRzX2xlZnQgPSBuOwo+IC0gICAgfQo+ IC0KPiAtICAgIHJldHVybiBnZXRfdmFsKHMsIG4sIDEpOwo+IC0jZWxzZQo+ICAgICAgcmVnaXN0 ZXIgaW50IHRtcDsKPiAgICAgIE9QRU5fUkVBREVSKHJlLCBzKTsKPiAgICAgIGF2X2Fzc2VydDIo bj4wICYmIG48PTI1KTsKPiBAQCAtNDM4LDcgKzM0Miw2IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWdu ZWQgaW50IGdldF9iaXRzX2xlKEdldEJpdENvbnRleHQgKnMsIGludCBuKQo+ICAgICAgTEFTVF9T S0lQX0JJVFMocmUsIHMsIG4pOwo+ICAgICAgQ0xPU0VfUkVBREVSKHJlLCBzKTsKPiAgICAgIHJl dHVybiB0bXA7Cj4gLSNlbmRpZgo+ICB9Cj4gIAo+ICAvKioKPiBAQCAtNDQ3LDcxICszNTAsMjIg QEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ2V0X2JpdHNfbGUoR2V0Qml0Q29udGV4dCAq cywgaW50IG4pCj4gIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHNob3dfYml0cyhHZXRCaXRD b250ZXh0ICpzLCBpbnQgbikKPiAgewo+ICAgICAgcmVnaXN0ZXIgdW5zaWduZWQgaW50IHRtcDsK PiAtI2lmIENBQ0hFRF9CSVRTVFJFQU1fUkVBREVSCj4gLSAgICBpZiAobiA+IHMtPmJpdHNfbGVm dCkKPiAtI2lmZGVmIEJJVFNUUkVBTV9SRUFERVJfTEUKPiAtICAgICAgICByZWZpbGxfMzIocywg MSk7Cj4gLSNlbHNlCj4gLSAgICAgICAgcmVmaWxsXzMyKHMsIDApOwo+IC0jZW5kaWYKPiAtCj4g LSAgICB0bXAgPSBzaG93X3ZhbChzLCBuKTsKPiAtI2Vsc2UKPiAgICAgIE9QRU5fUkVBREVSX05P U0laRShyZSwgcyk7Cj4gICAgICBhdl9hc3NlcnQyKG4+MCAmJiBuPD0yNSk7Cj4gICAgICBVUERB VEVfQ0FDSEUocmUsIHMpOwo+ICAgICAgdG1wID0gU0hPV19VQklUUyhyZSwgcywgbik7Cj4gLSNl bmRpZgo+ICAgICAgcmV0dXJuIHRtcDsKPiAgfQo+ICAKPiAgc3RhdGljIGlubGluZSB2b2lkIHNr aXBfYml0cyhHZXRCaXRDb250ZXh0ICpzLCBpbnQgbikKPiAgewo+IC0jaWYgQ0FDSEVEX0JJVFNU UkVBTV9SRUFERVIKPiAtICAgIGlmIChuIDwgcy0+Yml0c19sZWZ0KQo+IC0gICAgICAgIHNraXBf cmVtYWluaW5nKHMsIG4pOwo+IC0gICAgZWxzZSB7Cj4gLSAgICAgICAgbiAtPSBzLT5iaXRzX2xl ZnQ7Cj4gLSAgICAgICAgcy0+Y2FjaGUgPSAwOwo+IC0gICAgICAgIHMtPmJpdHNfbGVmdCA9IDA7 Cj4gLQo+IC0gICAgICAgIGlmIChuID49IDY0KSB7Cj4gLSAgICAgICAgICAgIHVuc2lnbmVkIHNr aXAgPSAobiAvIDgpICogODsKPiAtCj4gLSAgICAgICAgICAgIG4gLT0gc2tpcDsKPiAtICAgICAg ICAgICAgcy0+aW5kZXggKz0gc2tpcDsKPiAtICAgICAgICB9Cj4gLSNpZmRlZiBCSVRTVFJFQU1f UkVBREVSX0xFCj4gLSAgICAgICAgcmVmaWxsXzY0KHMsIDEpOwo+IC0jZWxzZQo+IC0gICAgICAg IHJlZmlsbF82NChzLCAwKTsKPiAtI2VuZGlmCj4gLSAgICAgICAgaWYgKG4pCj4gLSAgICAgICAg ICAgIHNraXBfcmVtYWluaW5nKHMsIG4pOwo+IC0gICAgfQo+IC0jZWxzZQo+ICAgICAgT1BFTl9S RUFERVIocmUsIHMpOwo+ICAgICAgTEFTVF9TS0lQX0JJVFMocmUsIHMsIG4pOwo+ICAgICAgQ0xP U0VfUkVBREVSKHJlLCBzKTsKPiAtI2VuZGlmCj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxpbmUgdW5z aWduZWQgaW50IGdldF9iaXRzMShHZXRCaXRDb250ZXh0ICpzKQo+ICB7Cj4gLSNpZiBDQUNIRURf QklUU1RSRUFNX1JFQURFUgo+IC0gICAgaWYgKCFzLT5iaXRzX2xlZnQpCj4gLSNpZmRlZiBCSVRT VFJFQU1fUkVBREVSX0xFCj4gLSAgICAgICAgcmVmaWxsXzY0KHMsIDEpOwo+IC0jZWxzZQo+IC0g ICAgICAgIHJlZmlsbF82NChzLCAwKTsKPiAtI2VuZGlmCj4gLQo+IC0jaWZkZWYgQklUU1RSRUFN X1JFQURFUl9MRQo+IC0gICAgcmV0dXJuIGdldF92YWwocywgMSwgMSk7Cj4gLSNlbHNlCj4gLSAg ICByZXR1cm4gZ2V0X3ZhbChzLCAxLCAwKTsKPiAtI2VuZGlmCj4gLSNlbHNlCj4gICAgICB1bnNp Z25lZCBpbnQgaW5kZXggPSBzLT5pbmRleDsKPiAgICAgIHVpbnQ4X3QgcmVzdWx0ICAgICA9IHMt PmJ1ZmZlcltpbmRleCA+PiAzXTsKPiAgI2lmZGVmIEJJVFNUUkVBTV9SRUFERVJfTEUKPiBAQCAt NTI4LDcgKzM4Miw2IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdldF9iaXRzMShHZXRC aXRDb250ZXh0ICpzKQo+ICAgICAgcy0+aW5kZXggPSBpbmRleDsKPiAgCj4gICAgICByZXR1cm4g cmVzdWx0Owo+IC0jZW5kaWYKPiAgfQo+ICAKPiAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQg c2hvd19iaXRzMShHZXRCaXRDb250ZXh0ICpzKQo+IEBAIC01NDksMTAgKzQwMiw2IEBAIHN0YXRp YyBpbmxpbmUgdW5zaWduZWQgaW50IGdldF9iaXRzX2xvbmcoR2V0Qml0Q29udGV4dCAqcywgaW50 IG4pCj4gICAgICBhdl9hc3NlcnQyKG4+PTAgJiYgbjw9MzIpOwo+ICAgICAgaWYgKCFuKSB7Cj4g ICAgICAgICAgcmV0dXJuIDA7Cj4gLSNpZiBDQUNIRURfQklUU1RSRUFNX1JFQURFUgo+IC0gICAg fQo+IC0gICAgcmV0dXJuIGdldF9iaXRzKHMsIG4pOwo+IC0jZWxzZQo+ICAgICAgfSBlbHNlIGlm IChuIDw9IE1JTl9DQUNIRV9CSVRTKSB7Cj4gICAgICAgICAgcmV0dXJuIGdldF9iaXRzKHMsIG4p Owo+ICAgICAgfSBlbHNlIHsKPiBAQCAtNTY0LDcgKzQxMyw2IEBAIHN0YXRpYyBpbmxpbmUgdW5z aWduZWQgaW50IGdldF9iaXRzX2xvbmcoR2V0Qml0Q29udGV4dCAqcywgaW50IG4pCj4gICAgICAg ICAgcmV0dXJuIHJldCB8IGdldF9iaXRzKHMsIG4gLSAxNik7Cj4gICNlbmRpZgo+ICAgICAgfQo+ IC0jZW5kaWYKPiAgfQo+ICAKPiAgLyoqCj4gQEAgLTYxMCw4ICs0NTgsMTcgQEAgc3RhdGljIGlu bGluZSB1bnNpZ25lZCBpbnQgc2hvd19iaXRzX2xvbmcoR2V0Qml0Q29udGV4dCAqcywgaW50IG4p Cj4gICAgICB9Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbmxpbmUgaW50IGluaXRfZ2V0X2JpdHNfeGUo R2V0Qml0Q29udGV4dCAqcywgY29uc3QgdWludDhfdCAqYnVmZmVyLAo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBiaXRfc2l6ZSwgaW50IGlzX2xlKQo+ICsKPiArLyoq Cj4gKyAqIEluaXRpYWxpemUgR2V0Qml0Q29udGV4dC4KPiArICogQHBhcmFtIGJ1ZmZlciBiaXRz dHJlYW0gYnVmZmVyLCBtdXN0IGJlIEFWX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUgYnl0ZXMK PiArICogICAgICAgIGxhcmdlciB0aGFuIHRoZSBhY3R1YWwgcmVhZCBiaXRzIGJlY2F1c2Ugc29t ZSBvcHRpbWl6ZWQgYml0c3RyZWFtCj4gKyAqICAgICAgICByZWFkZXJzIHJlYWQgMzIgb3IgNjQg Yml0IGF0IG9uY2UgYW5kIGNvdWxkIHJlYWQgb3ZlciB0aGUgZW5kCj4gKyAqIEBwYXJhbSBiaXRf c2l6ZSB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIGluIGJpdHMKPiArICogQHJldHVybiAwIG9uIHN1 Y2Nlc3MsIEFWRVJST1JfSU5WQUxJRERBVEEgaWYgdGhlIGJ1ZmZlcl9zaXplIHdvdWxkIG92ZXJm bG93Lgo+ICsgKi8KPiArc3RhdGljIGlubGluZSBpbnQgaW5pdF9nZXRfYml0cyhHZXRCaXRDb250 ZXh0ICpzLCBjb25zdCB1aW50OF90ICpidWZmZXIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IGJpdF9zaXplKQo+ICB7Cj4gICAgICBpbnQgYnVmZmVyX3NpemU7Cj4gICAg ICBpbnQgcmV0ID0gMDsKPiBAQCAtNjMwLDMzICs0ODcsOSBAQCBzdGF0aWMgaW5saW5lIGludCBp bml0X2dldF9iaXRzX3hlKEdldEJpdENvbnRleHQgKnMsIGNvbnN0IHVpbnQ4X3QgKmJ1ZmZlciwK PiAgICAgIHMtPmJ1ZmZlcl9lbmQgICAgICAgICA9IGJ1ZmZlciArIGJ1ZmZlcl9zaXplOwo+ICAg ICAgcy0+aW5kZXggICAgICAgICAgICAgID0gMDsKPiAgCj4gLSNpZiBDQUNIRURfQklUU1RSRUFN X1JFQURFUgo+IC0gICAgcy0+Y2FjaGUgICAgICAgICAgICAgID0gMDsKPiAtICAgIHMtPmJpdHNf bGVmdCAgICAgICAgICA9IDA7Cj4gLSAgICByZWZpbGxfNjQocywgaXNfbGUpOwo+IC0jZW5kaWYK PiAtCj4gICAgICByZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IC0vKioKPiAtICogSW5pdGlhbGl6ZSBH ZXRCaXRDb250ZXh0Lgo+IC0gKiBAcGFyYW0gYnVmZmVyIGJpdHN0cmVhbSBidWZmZXIsIG11c3Qg YmUgQVZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSBieXRlcwo+IC0gKiAgICAgICAgbGFyZ2Vy IHRoYW4gdGhlIGFjdHVhbCByZWFkIGJpdHMgYmVjYXVzZSBzb21lIG9wdGltaXplZCBiaXRzdHJl YW0KPiAtICogICAgICAgIHJlYWRlcnMgcmVhZCAzMiBvciA2NCBiaXQgYXQgb25jZSBhbmQgY291 bGQgcmVhZCBvdmVyIHRoZSBlbmQKPiAtICogQHBhcmFtIGJpdF9zaXplIHRoZSBzaXplIG9mIHRo ZSBidWZmZXIgaW4gYml0cwo+IC0gKiBAcmV0dXJuIDAgb24gc3VjY2VzcywgQVZFUlJPUl9JTlZB TElEREFUQSBpZiB0aGUgYnVmZmVyX3NpemUgd291bGQgb3ZlcmZsb3cuCj4gLSAqLwo+IC1zdGF0 aWMgaW5saW5lIGludCBpbml0X2dldF9iaXRzKEdldEJpdENvbnRleHQgKnMsIGNvbnN0IHVpbnQ4 X3QgKmJ1ZmZlciwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYml0X3Np emUpCj4gLXsKPiAtI2lmZGVmIEJJVFNUUkVBTV9SRUFERVJfTEUKPiAtICAgIHJldHVybiBpbml0 X2dldF9iaXRzX3hlKHMsIGJ1ZmZlciwgYml0X3NpemUsIDEpOwo+IC0jZWxzZQo+IC0gICAgcmV0 dXJuIGluaXRfZ2V0X2JpdHNfeGUocywgYnVmZmVyLCBiaXRfc2l6ZSwgMCk7Cj4gLSNlbmRpZgo+ IC19Cj4gLQo+ICAvKioKPiAgICogSW5pdGlhbGl6ZSBHZXRCaXRDb250ZXh0Lgo+ICAgKiBAcGFy YW0gYnVmZmVyIGJpdHN0cmVhbSBidWZmZXIsIG11c3QgYmUgQVZfSU5QVVRfQlVGRkVSX1BBRERJ TkdfU0laRSBieXRlcwo+IEBAIC02NzgsNyArNTExLDcgQEAgc3RhdGljIGlubGluZSBpbnQgaW5p dF9nZXRfYml0czhfbGUoR2V0Qml0Q29udGV4dCAqcywgY29uc3QgdWludDhfdCAqYnVmZmVyLAo+ ICB7Cj4gICAgICBpZiAoYnl0ZV9zaXplID4gSU5UX01BWCAvIDggfHwgYnl0ZV9zaXplIDwgMCkK PiAgICAgICAgICBieXRlX3NpemUgPSAtMTsKPiAtICAgIHJldHVybiBpbml0X2dldF9iaXRzX3hl KHMsIGJ1ZmZlciwgYnl0ZV9zaXplICogOCwgMSk7Cj4gKyAgICByZXR1cm4gaW5pdF9nZXRfYml0 cyhzLCBidWZmZXIsIGJ5dGVfc2l6ZSAqIDgpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW5saW5lIGNv bnN0IHVpbnQ4X3QgKmFsaWduX2dldF9iaXRzKEdldEJpdENvbnRleHQgKnMpCj4gQEAgLTc2Mywx OSArNTk2LDYgQEAgc3RhdGljIGlubGluZSBjb25zdCB1aW50OF90ICphbGlnbl9nZXRfYml0cyhH ZXRCaXRDb250ZXh0ICpzKQo+ICAgICAgICAgIFNLSVBfQklUUyhuYW1lLCBnYiwgbik7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgfSB3aGlsZSAoMCkKPiAgCj4gLS8q IFJldHVybiB0aGUgTFVUIGVsZW1lbnQgZm9yIHRoZSBnaXZlbiBiaXRzdHJlYW0gY29uZmlndXJh dGlvbi4gKi8KPiAtc3RhdGljIGlubGluZSBpbnQgc2V0X2lkeChHZXRCaXRDb250ZXh0ICpzLCBp bnQgY29kZSwgaW50ICpuLCBpbnQgKm5iX2JpdHMsCj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgVkxDRWxlbSAqdGFibGUpCj4gLXsKPiAtICAgIHVuc2lnbmVkIGlkeDsKPiAtCj4g LSAgICAqbmJfYml0cyA9IC0qbjsKPiAtICAgIGlkeCA9IHNob3dfYml0cyhzLCAqbmJfYml0cykg KyBjb2RlOwo+IC0gICAgKm4gPSB0YWJsZVtpZHhdLmxlbjsKPiAtCj4gLSAgICByZXR1cm4gdGFi bGVbaWR4XS5zeW07Cj4gLX0KPiAtCj4gIC8qKgo+ICAgKiBQYXJzZSBhIHZsYyBjb2RlLgo+ICAg KiBAcGFyYW0gYml0cyBpcyB0aGUgbnVtYmVyIG9mIGJpdHMgd2hpY2ggd2lsbCBiZSByZWFkIGF0 IG9uY2UsIG11c3QgYmUKPiBAQCAtNzg4LDI0ICs2MDgsNiBAQCBzdGF0aWMgaW5saW5lIGludCBz ZXRfaWR4KEdldEJpdENvbnRleHQgKnMsIGludCBjb2RlLCBpbnQgKm4sIGludCAqbmJfYml0cywK PiAgc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGdldF92bGMyKEdldEJpdENvbnRleHQgKnMs IGNvbnN0IFZMQ0VsZW0gKnRhYmxlLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IGJpdHMsIGludCBtYXhfZGVwdGgpCj4gIHsKPiAtI2lmIENBQ0hFRF9CSVRTVFJF QU1fUkVBREVSCj4gLSAgICBpbnQgbmJfYml0czsKPiAtICAgIHVuc2lnbmVkIGlkeCA9IHNob3df Yml0cyhzLCBiaXRzKTsKPiAtICAgIGludCBjb2RlID0gdGFibGVbaWR4XS5zeW07Cj4gLSAgICBp bnQgbiAgICA9IHRhYmxlW2lkeF0ubGVuOwo+IC0KPiAtICAgIGlmIChtYXhfZGVwdGggPiAxICYm IG4gPCAwKSB7Cj4gLSAgICAgICAgc2tpcF9yZW1haW5pbmcocywgYml0cyk7Cj4gLSAgICAgICAg Y29kZSA9IHNldF9pZHgocywgY29kZSwgJm4sICZuYl9iaXRzLCB0YWJsZSk7Cj4gLSAgICAgICAg aWYgKG1heF9kZXB0aCA+IDIgJiYgbiA8IDApIHsKPiAtICAgICAgICAgICAgc2tpcF9yZW1haW5p bmcocywgbmJfYml0cyk7Cj4gLSAgICAgICAgICAgIGNvZGUgPSBzZXRfaWR4KHMsIGNvZGUsICZu LCAmbmJfYml0cywgdGFibGUpOwo+IC0gICAgICAgIH0KPiAtICAgIH0KPiAtICAgIHNraXBfcmVt YWluaW5nKHMsIG4pOwo+IC0KPiAtICAgIHJldHVybiBjb2RlOwo+IC0jZWxzZQo+ICAgICAgaW50 IGNvZGU7Cj4gIAo+ICAgICAgT1BFTl9SRUFERVIocmUsIHMpOwo+IEBAIC04MTYsNyArNjE4LDYg QEAgc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGdldF92bGMyKEdldEJpdENvbnRleHQgKnMs IGNvbnN0IFZMQ0VsZW0gKnRhYmxlLAo+ICAgICAgQ0xPU0VfUkVBREVSKHJlLCBzKTsKPiAgCj4g ICAgICByZXR1cm4gY29kZTsKPiAtI2VuZGlmCj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxpbmUgaW50 IGRlY29kZTAxMihHZXRCaXRDb250ZXh0ICpnYikKPiBAQCAtODU2LDQgKzY1Nyw2IEBAIHN0YXRp YyBpbmxpbmUgaW50IHNraXBfMXN0b3BfOGRhdGFfYml0cyhHZXRCaXRDb250ZXh0ICpnYikKPiAg ICAgIHJldHVybiAwOwo+ICB9Cj4gIAo+ICsjZW5kaWYgLy8gQ0FDSEVEX0JJVFNUUkVBTV9SRUFE RVIKPiArCj4gICNlbmRpZiAvKiBBVkNPREVDX0dFVF9CSVRTX0ggKi8KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxp c3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlz dGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3Ig ZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vi c2NyaWJlIi4K