From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <ffmpeg-devel-bounces@ffmpeg.org> Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 782AA4C5E2 for <ffmpegdev@gitmailbox.com>; Mon, 26 May 2025 07:50:00 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 3F63968D29D; Mon, 26 May 2025 10:49:55 +0300 (EEST) Received: from SY8PR01CU002.outbound.protection.outlook.com (mail-australiaeastazolkn19010018.outbound.protection.outlook.com [52.103.72.18]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id D364C68C8C5 for <ffmpeg-devel@ffmpeg.org>; Mon, 26 May 2025 10:49:47 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vyI2jRMLn/GRsZ2hsSJFz79CvBWHm0pdV6uuIObq4FBFyi8M29HQvsfFk2wkIcIcVr6mavXtLNhJ1XlAB7OhflZFPfo8onnXdyThvKhP7TgDjcBNCLtWQEmhNS/NaFWMWeRnq4hiKzqEH9izMAucPoV7rmolSXTyEaN66dEBsAJMfHSU7xfVtIDpYcKTdw0OquTMf0KcaOMcx9s+0bbLKyw9CEaUDn43e5MWKX6fwDL7SyKCkN+6Ha8z6fbpejjQLCdD2IrNOv5BAoqfp60jzlUIjsXE5/ZtlO0h8Zl6G4ihETzjtecXgBejGkCNspSzOi4enwsNDmfc2DfSR7IsbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=amNTWkgftjnjqSOKtw2sHYjD2fRi/NLjo6oEEWtDI6c=; b=O5GGSNmxZe2UpyKy+lsSJ3dZ69n48SFlhjGe+vaXf33lKlp+LJhW34erGXcyVq55xIcubBjM6NebFOv1d2dFHKIw87fNw8j9k57dT2/hIDjAJaD+yTbcVUQJPj5UpV1QdhY+kgAjmLBCWw7l8NSCEc0HAoWdmscS1kTKkQXIDxac3FU0ZzpwiCCtctlx50jU7Kc0o8qG29QMEF7QNq11kDgznpgCM8oOEBmOVwa3+N+voe18u11a5xYzNb0B/6Q2m+bTxaO4MYsz/Vfw26WbGJuKM+TG+fzTYTOH5IDE1JqyKATHMElpev/s1iqRyEBapLfrz9MQdUD92LzRq7RB5A== 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=amNTWkgftjnjqSOKtw2sHYjD2fRi/NLjo6oEEWtDI6c=; b=YEIdEkJawlqLDtDIcH4oD2Syea3Ax7X6m8b94HK2ZbwZf1bOs2h0BCCfPVP6d+Bug+TStSIhKaIF8vnPurb2dLHGB35Q642wIXi/gia7mF4LaxwRrF4Pq6q+pBzYh7Qp7U40jQyAyxYBkCoaHt0gIKISfWV3nijRfzc/uEip3KTjY3olXDidb3iRx4jNgVnxxxyMC7/ES+nTXH01dYP9mMbj2GW21KmrxpoVRMB2Qz7UZ7+JBN1E5eR/7a4SD4cBzU3lfNOxJDq8x3ylY1jq4gaU/Xk9TACoo0a+2cZjOeWg1YxPIFjhT31/pFcTQ7vO2V6v/NyePh1dNCOVd9oO3Q== Received: from MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM (2603:10c6:220:be::15) by MEYP282MB1592.AUSP282.PROD.OUTLOOK.COM (2603:10c6:220:bb::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.25; Mon, 26 May 2025 07:49:43 +0000 Received: from MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM ([fe80::dc32:4068:a067:92b8]) by MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM ([fe80::dc32:4068:a067:92b8%3]) with mapi id 15.20.8769.025; Mon, 26 May 2025 07:49:43 +0000 From: Yibo Fang <blueybf777@outlook.com> To: "ffmpeg-devel@ffmpeg.org" <ffmpeg-devel@ffmpeg.org> Thread-Topic: [FFmpeg-devel] [PATCH] avfilter: add PCM dumping between filters for audio debugging Thread-Index: AQHbs4FR7I/oWjJTTUybqSSDOZn5ULO0wauAgC/4h3yAAAQhkA== Date: Mon, 26 May 2025 07:49:43 +0000 Message-ID: <MEYP282MB1878E2E6E43B5BA206A78E2F8865A@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM> References: <MEYP282MB18784DCA03D764E54E08FC8D88BB2@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM> <AS8P250MB0744B9A650221901E60022778F842@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM> <MEYP282MB1878FF228716762A576B6BD38865A@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM> In-Reply-To: <MEYP282MB1878FF228716762A576B6BD38865A@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM> Accept-Language: en-GB, zh-CN, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MEYP282MB1878:EE_|MEYP282MB1592:EE_ x-ms-office365-filtering-correlation-id: 4a455ee8-1b20-49df-7801-08dd9c29e0c9 x-microsoft-antispam: BCL:0; ARA:14566002|7092599006|461199028|12050799012|41001999006|19110799006|15080799009|8060799009|15030799003|9400799033|8062599006|440099028|3412199025|26104999006|12091999003|10035399007|102099032|56899033; x-microsoft-antispam-message-info: =?gb2312?B?S3JoUy9Wc3VIcnVpMlNTYjVNeTNUQWg0Tm9GUmJSQ3ljNUdQaUR5VmRJN053?= =?gb2312?B?Wm9PdGJMbzFPZFZSdVlUZURQUytySzhQdDd6Um40NUk4UVJqQUNYd0F5S3N3?= =?gb2312?B?VlNoSHNqdGdFVGdvaDB6YXF4NnZrSk8zUTFrbnZNaU1QUTJ2ajNsZW5wUXkx?= =?gb2312?B?em5SeTVmUTd2dnBxOFA5Ukk0RWRJOUFNcEZHSDBUVko3ai9LTmM3a0FaWEpL?= =?gb2312?B?Y254UWFER1ZYMDh3c3lhUFVXaFRnMmd4ZjVnak8yYk5WMGpyZGxERFBYaGJi?= =?gb2312?B?RHQ0SUN4QnhkN2ozVXg4QjFNYnY4WVpSUEFHUkRZdk0vTWhueDdEUk9ZWStB?= =?gb2312?B?NlZGRDFXZGdwR29oVTFtejVXbTQzMU9DMC9laGRVNm5RM1l6ZENNMUV2bVNC?= =?gb2312?B?Y0htZC8vZjYybU50azgxcUFPSiszNWJKaW5jNXdSNnFEMkNsTStEd1Qwa0FN?= =?gb2312?B?Y0lZZHJxMFdPdFJtL1dQWjEzVzVZS05jay9BYkZscktHMWpyZW41K2pLU3Y5?= =?gb2312?B?Q0JUQ1lRMzhJaytzcmJVS0hPMDVQMnVrSjJsbjJFVGR0ZkxyVDF1Z1JId2xn?= =?gb2312?B?ajMrQTlLSjFKZ3JpejdFWjJMditENzBTNTdPdmxQNDV0cmxZK2hDWkhYZGVp?= =?gb2312?B?eHErOTdnSE0xUHRvUnczWktWZE1OZWtCRTZaNFd4MDAvMUJVa3FmcVdUelV4?= =?gb2312?B?ZXN2VWN0RURqMjlJckxNeXVVelpwUTR2SUhwM1BBU29xNUpjQy9UdDNndldQ?= =?gb2312?B?R1hGcnRVUDRRV3AvRnNtNFV3VGJ4dEFEQXF3SUFmVUZDOXdnblJaNUpFUzZR?= =?gb2312?B?djMrTEdpS1l5c3VOc2ZQa3U5N0NQK0UxUWxpNnJlRXdOOHFBYlY4ckdQZDh2?= =?gb2312?B?MVFad0grQ0NQSFplV0JxT2xkTFhxalJSY2lBQkFENkRBbGdMeFd3YytpaW10?= =?gb2312?B?U0sweDdCTGtXakVkK2ZteDR4Uk53OXk2NnVCL1dEZGxhcUdza2hCaGY2VEcw?= =?gb2312?B?eGFZbHR1dENUaHd5dlhVS0lheGJLbkJaL2lvMkhuKzBjQXkvQzFyY1hxSEpC?= =?gb2312?B?a2lLZXkrOElkSG9CbXUzMWhpT2YxcGxJRDlQSFo1dXFENXhEU1hHU1UySVpT?= =?gb2312?B?SjlwRStISlRNUWFzd1ZNOERRc3FnTkljd0djS2NpdVlBL0UyQ1puUHVzZ0lX?= =?gb2312?B?V09CZmU5RE8xS0VTK2pHdFdGdi82b3JzUCtSemxHSkFUWnhSZDhFQnc2a0hP?= =?gb2312?B?eHVrTkh0NSt3dTlMalBWdzRqTDB2U3YzQXMwTG9oS1EvVmVZRkxuVWx5cnhN?= =?gb2312?B?SUlGNTI3UW45bGIwUGNETlFNOXdWWk1kSld1YlBIWndrMG1FYXZMeXV2M21V?= =?gb2312?B?M2gwQ2MyV09iUk5LV25lZ0pQdEFueVdMVjJKSHlHU2htSXJoQURkc1U0cXFW?= =?gb2312?B?c1Z3OHlmTmNEYnhNTjRmMGtWSkl1RTVXR0dsTWhKUTJSbkJ2ajFZazFOYmJX?= =?gb2312?B?N21tbHlEN1NmaWNQYTFRMXFRQk9KQkJXOTFhZU5tYjh1Q0Vnbkt0WGs5QjM3?= =?gb2312?B?YnRTS25pNjllRHlORVF5eG9PT3pic2RVYThTUEtVRUwyamNwVEhYaXJ6MTdL?= =?gb2312?B?U0tOb1d1V29MT0VLb1RIUWN6bUdMOEtrb2VZSXhJV2lnbDlHVE1yWTE5bEtl?= =?gb2312?B?U0lVaHY1U3o1N3ZwcVFJTnVkQzR6MEpTY09UQVJvdDJiOEVqcUNJZ0todW1m?= =?gb2312?B?N1JDeko4bm1PbE80N2FBZHlCSEVkeHQyS2ZNQVVOdXFSK1JYdkJKd3l6R2l1?= =?gb2312?B?UGVlM1hycEs0VGJodk41dlE1bUN4ZVh6eW5nV2tDSytuZzN2eC9RSjBnWFow?= =?gb2312?B?Qm9VRmN6VjF4cEUzNUc4aEI5Mk9aRWhCRmJMYitJMXl2ZEE9PQ==?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?gb2312?B?RUd4RHNUeG9aMVdwSXdQMzVTTzY2aGVHSGpDWFg1am1VcEFaMmJjM25ZRzVU?= =?gb2312?B?dTlaSGlCazlIaEpGSDA0NzN1aDhRcUk0MGZRbFgxeHNteEJVcWFMQlRsbTJ2?= =?gb2312?B?U1lXZS9jbk5oOGJaYUVHZnJ4YURTd2dNMEFFRkpXQUlxNGt6a2piRDJsL3FM?= =?gb2312?B?b0xBYzBVNjVOM2pyYU9aTkhyRlZzTzVZalFGTFp0N3NwaTk2OWNyUmdLaWxk?= =?gb2312?B?YndCSXFVVThNZDRqVEk4UnkzMFJQWmI5ejNFUGFnT2c2aHh1UE5wbWQzMVRz?= =?gb2312?B?WXRtUVBtaXVTbG9kSEdNYlRxTmRrSkRlSmtKeXdIYzZoY2ZWSkJhNjJsQXo4?= =?gb2312?B?K2VkUjhwMUx3emwvQ25FZTdFN2FIOXdybkZOQnZEb3A1OTdlNTJnWmUvREt0?= =?gb2312?B?b2pZYkZ4U1RmNWczU0hBMHFMTDhrZmxjR2lEbUo5STRNcHNkUUZQMk9OTUk1?= =?gb2312?B?enVHQ0UvM2ZkRmRYdEQweFZIVUZQNmNPS0xUTDFrVUJRTFIvZkdtbEJoaDlH?= =?gb2312?B?aU5FT2lrTTVzaFZRSHBSTDlIejA5eXpXMDIxSk40RGhsWml5VXduY1hVV3NL?= =?gb2312?B?SFpUbWE4TEwvWXRQVFFVNm92QXNBd3ZoWGVpcGlGK1BEWmR0V0Zhd1RPVzB2?= =?gb2312?B?aFphTysyRlFsOHM4NTFDK2EyanZOdVZTU2l0Z1RrTXlHZFlsNnVmSjdOeFNB?= =?gb2312?B?YzdMd0RSZjRyWno4V3h6V2NGOUJ2Ym96TlhaVVlpRkxtWEJabzZmOXIvRUFN?= =?gb2312?B?Z0lmbTBEaDQ2bUJ4d2ZPQVFwNGUxWXlxbFZLTTdmQjMvNDRWV0tSbVFWOVRu?= =?gb2312?B?bkNDL0ZYTmJwcFZtYW1IVHNWT3JLdlJzbnlMOTVDZEd6cDNyRVd2RzVaSjF2?= =?gb2312?B?Nzh5OWN6RnQwOHlDUHFGVGFBQWFPR0FITmJITW1CNHZweDgydU9rTnFCUS9D?= =?gb2312?B?ZWwwVytrbTBOVXVpWTJsMHBLYkN1RzMzN2JMNm43T2pIMlJCVXppUTZsbE9I?= =?gb2312?B?aDZIMjIwVnU1SmVEalk2dXFxckxSTDA5Q3hILzRydVlLWW1saHhId3hLSFRj?= =?gb2312?B?RGp0bm9uOXBJQnhzQlI0S1gxUWMrR21BUzExZnNZQ2JCNjZlNTcwbmxtenR6?= =?gb2312?B?UmtSZEgrQUQvdDF6U1gzTytmeDlyWmNCSERmMk5ZTk5TS1FhZzB0R0JPS29V?= =?gb2312?B?dEhJQ0xtZ1AwdTQrcU9FREZtVllmTTd0ODdOaGR0MmZnK2lNYVVYdCt2ZzNN?= =?gb2312?B?MFNGZzBTVktNTkpmWENnbjlvNXluS1FXT1BPUmhaenZGYzVVWkh4S0FzNlk5?= =?gb2312?B?aWtWTEs0THhxeUREcWFGdGo3ejZPWkR6WExWZ1k4QUV0WUI3NXViUlpHcmd3?= =?gb2312?B?b2VPMTZxSkVXcTFOdjNIT2hMTnJLSmF2NUM0Wk1lTUluN2lUQzgzMXBXcUJw?= =?gb2312?B?aURvQTNoWWh2VzM4VFNaekx1aVVRVlhvNWpkZ0M0YmNVa1JmaHE2bDk2ZlN5?= =?gb2312?B?S0pPc2U0Q294M2YvRmY0dytCOTBYenhYS0VnT1NkdDNFUVhoM3ZZNXZ3RGhK?= =?gb2312?B?WGVyM0VTVC9KQnI2bWRIckpLdEJyMHhFRFlwUzhJdDEyaFVDOGhxN3FWVXFr?= =?gb2312?Q?nWUwZHMAKNCtG4e5oZatnLvzNT3qF/fIfhX3KB4E6SJ8=3D?= MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 4a455ee8-1b20-49df-7801-08dd9c29e0c9 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 May 2025 07:49:43.4947 (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: MEYP282MB1592 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH] avfilter: add PCM dumping between filters for audio debugging X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org> List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe> List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel> List-Post: <mailto:ffmpeg-devel@ffmpeg.org> List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help> List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe> Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org> Archived-At: <https://master.gitmailbox.com/ffmpegdev/MEYP282MB1878E2E6E43B5BA206A78E2F8865A@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM/> List-Archive: <https://master.gitmailbox.com/ffmpegdev/> List-Post: <mailto:ffmpegdev@gitmailbox.com> W0ZGbXBlZy1kZXZlbCx2MiwwLzJdIGF2ZmlsdGVyOiBhZGQgUENNIGR1bXBpbmcgYmV0d2VlbiBm aWx0ZXJzIGZvciBhdWRpbyBkZWJ1Z2dpbmcNCkZyb206IFlpYm8gRmFuZyA8Ymx1ZXliZjc3N0Bv dXRsb29rLmNvbT4NClN1YmplY3Q6IFtGRm1wZWctZGV2ZWwsdjIsMC8yXSBhdmZpbHRlcjogYWRk IFBDTSBkdW1waW5nIGJldHdlZW4gZmlsdGVycyBmb3IgYXVkaW8gZGVidWdnaW5nDQpEYXRlOiBX ZWQsIDIzIEFwciAyMDI1IDEwOjU3OjAwICswODAwDQpNZXNzYWdlLUlkOiA8Y292ZXIuMC4yQGZm bXBlZz4NCg0KVGhpcyBzZXJpZXMgYWRkcyBhIGRlYnVnZ2luZyBmZWF0dXJlIHRoYXQgbGV0cyBk ZXZlbG9wZXJzIGR1bXAgcmF3DQpQQ00gYXVkaW8gYmV0d2VlbiBmaWx0ZXJzLiAgVGhlIGRhdGEg YXJlIHdyaXR0ZW4gdG8gZmlsZXMgaW4gYSB1c2VyLQ0Kc2VsZWN0ZWQgZGlyZWN0b3J5IHZpYSB0 d28gbmV3IGNvbW1hbmRzOg0KDQogICAgZHVtcF9yYXdfc3RhcnQgZmlsZT0vcGF0aC90by9kaXIv DQogICAgZHVtcF9yYXdfc3RvcA0KDQpQbGFuYXIgYXVkaW8gaXMgYXV0b21hdGljYWxseSBpbnRl cmxlYXZlZDsgb25seSBhdWRpbyBsaW5rcyBhcmUNCmFmZmVjdGVkLiAgUGF0Y2ggMS8yIGltcGxl bWVudHMgdGhlIGZlYXR1cmUsIHBhdGNoIDIvMiBkb2N1bWVudHMgaXQuDQoNClJlZ2FyZHMsDQpZ aWJvIEZhbmcNCg0KLS0tDQoNCkZyb20gMmRmNTZlNzQyNzNkNDc3YWUyNzAwM2UwOTgxMjIwNzQ5 YTZiNThjZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDENCkZyb206IFlpYm8gRmFuZyA8Ymx1ZXli Zjc3N0BvdXRsb29rLmNvbT4NCkRhdGU6IFdlZCwgMjMgQXByIDIwMjUgMTA6NTg6NTUgKzA4MDAN ClN1YmplY3Q6IFtQQVRDSCAxLzJdIGF2ZmlsdGVyOiBhZGQgUENNIGR1bXBpbmcgYmV0d2VlbiBm aWx0ZXJzIGZvciBhdWRpbw0KIGRlYnVnZ2luZw0KDQpUaGlzIHBhdGNoIGludHJvZHVjZXMgUENN IGR1bXBpbmcgc3VwcG9ydCBiZXR3ZWVuIEFWRmlsdGVyIGxpbmtzLA0KaW50ZW5kZWQgZm9yIGF1 ZGlvIGRlYnVnZ2luZyBhbmQgZmlsdGVyLWdyYXBoIGluc3BlY3Rpb24uDQoNClR3byBmaWx0ZXIg Y29tbWFuZHMgYXJlIGFkZGVkOg0KDQogICAgZHVtcF9yYXdfc3RhcnQgZmlsZT0vcGF0aC90by9v dXRwdXQvZGlyLw0KICAgIGR1bXBfcmF3X3N0b3ANCg0KV2hlbiBkdW1waW5nIGlzIGVuYWJsZWQs IGF1ZGlvIGxlYXZpbmcgdGhlIHNlbGVjdGVkIGZpbHRlciBvdXRwdXQgaXMNCndyaXR0ZW4gdG8g YW4gYXV0b21hdGljYWxseSBuYW1lZCBmaWxlOg0KDQogICAgPHNyY19maWx0ZXI+LTxkc3RfZmls dGVyPi5wY20NCg0KUGxhbmFyIGZvcm1hdHMgYXJlIGNvbnZlcnRlZCB0byBwYWNrZWQuICBGaWxl IGRlc2NyaXB0b3JzIGFyZSBvcGVuZWQNCm9uIGRlbWFuZCBhbmQgY2xvc2VkIGF1dG9tYXRpY2Fs bHkuICBXb3JrcyBvbmx5IG9uIGF1ZGlvIGxpbmtzLg0KDQpFeGFtcGxlIChDIEFQSSk6DQogICAg YXZmaWx0ZXJfcHJvY2Vzc19jb21tYW5kKGZpbHRlciwgImR1bXBfcmF3X3N0YXJ0IiwNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImZpbGU9L3RtcC8iLCBOVUxMLCAwLCAwKTsNCg0KU2ln bmVkLW9mZi1ieTogWWlibyBGYW5nIDxibHVleWJmNzc3QG91dGxvb2suY29tPg0KLS0tDQogbGli YXZmaWx0ZXIvYXZmaWx0ZXIuYyB8IDE0NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKw0KIGxpYmF2ZmlsdGVyL2F2ZmlsdGVyLmggfCAgIDUgKysNCiAyIGZpbGVzIGNo YW5nZWQsIDE0OSBpbnNlcnRpb25zKCspDQoNCmRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9hdmZp bHRlci5jIGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuYw0KaW5kZXggNjRjMTA3NWM0MC4uYjcwMzQ1 NjlkYiAxMDA2NDQNCi0tLSBhL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmMNCisrKyBiL2xpYmF2Zmls dGVyL2F2ZmlsdGVyLmMNCkBAIC0xOSw2ICsxOSw5IEBADQogICogRm91bmRhdGlvbiwgSW5jLiwg NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVT QQ0KICAqLw0KDQorI2luY2x1ZGUgPGZjbnRsLmg+DQorI2luY2x1ZGUgPHVuaXN0ZC5oPg0KKw0K ICNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCINCiAjaW5jbHVkZSAibGliYXZ1dGlsL2F2 c3RyaW5nLmgiDQogI2luY2x1ZGUgImxpYmF2dXRpbC9icHJpbnQuaCINCkBADQogICAgIHJldHVy biAwOw0KIH0NCg0KKy8qIC0tLS0tLS0tLS0gUENNIGR1bXAgaGVscGVycyAtLS0tLS0tLS0tICov DQorDQorc3RhdGljIGF2X2NvbGQgdm9pZCBsaW5rX3VuaW5pdF9kdW1wX3BjbShBVkZpbHRlckxp bmsgKmxpbmspDQorew0KKyAgICBpZiAobGluay0+ZHVtcF9wY21fZmRzKSB7DQorICAgICAgICBm b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGluay0+bmJfZHVtcF9wY21fZmRzOyBpKyspDQorICAg ICAgICAgICAgaWYgKGxpbmstPmR1bXBfcGNtX2Zkc1tpXSA+PSAwKQ0KKyAgICAgICAgICAgICAg ICBjbG9zZShsaW5rLT5kdW1wX3BjbV9mZHNbaV0pOw0KKyAgICAgICAgYXZfZnJlZXAoJmxpbmst PmR1bXBfcGNtX2Zkcyk7DQorICAgICAgICBsaW5rLT5uYl9kdW1wX3BjbV9mZHMgPSAwOw0KKyAg ICB9DQorICAgIGF2X2ZyZWVwKCZsaW5rLT5kdW1wX3BjbV9wYXRoKTsNCisgICAgbGluay0+ZHVt cF9wY20gPSAwOw0KK30NCisNCitzdGF0aWMgYXZfY29sZCBpbnQgbGlua19pbml0X2R1bXBfcGNt KEFWRmlsdGVyTGluayAqbGluaykNCit7DQorICAgIC8qIGJ1aWxkIGZ1bGwgcGF0aCAiPGRpcj4v PHNyYz4tPGRzdD4ucGNtIiAqLw0KKyAgICBjb25zdCBjaGFyICpkaXIgPSBsaW5rLT5kdW1wX3Bj bV9wYXRoOw0KKyAgICBjb25zdCBjaGFyICpzZXAgPSBkaXJbc3RybGVuKGRpcikgLSAxXSA9PSAn LycgPyAiIiA6ICIvIjsNCisgICAgY2hhciBwYXRoWzQwOTZdOw0KKyAgICBzbnByaW50ZihwYXRo LCBzaXplb2YocGF0aCksICIlcyVzJS4xNnMtJS44cy5wY20iLA0KKyAgICAgICAgICAgICBkaXIs IHNlcCwgbGluay0+c3JjLT5uYW1lLCBsaW5rLT5kc3QtPm5hbWUpOw0KKw0KKyAgICBsaW5rLT5u Yl9kdW1wX3BjbV9mZHMgPSAxOw0KKyAgICBsaW5rLT5kdW1wX3BjbV9mZHMgPSBhdl9tYWxsb2Mo c2l6ZW9mKGludCkpOw0KKyAgICBpZiAoIWxpbmstPmR1bXBfcGNtX2ZkcykNCisgICAgICAgIHJl dHVybiBBVkVSUk9SKEVOT01FTSk7DQorDQorICAgIGludCBmZCA9IG9wZW4ocGF0aCwgT19XUk9O TFkgfCBPX0NSRUFUIHwgT19UUlVOQyB8IE9fRVhDTCwgMDY0NCk7DQorICAgIGlmIChmZCA8IDAp IHsNCisgICAgICAgIGxpbmtfdW5pbml0X2R1bXBfcGNtKGxpbmspOw0KKyAgICAgICAgcmV0dXJu IEFWRVJST1IoZXJybm8pOw0KKyAgICB9DQorICAgIGxpbmstPmR1bXBfcGNtX2Zkc1swXSA9IGZk Ow0KKyAgICBhdl9sb2cobGluay0+ZHN0LCBBVl9MT0dfSU5GTywgIlBDTSBkdW1wIGZpbGU6ICVz XG4iLCBwYXRoKTsNCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgZmlsdGVyX3Nl dF9kdW1wX3BjbShBVkZpbHRlckNvbnRleHQgKmYsIGNvbnN0IGNoYXIgKmFyZywgaW50IHNldCkN Cit7DQorICAgIGNvbnN0IGNoYXIgKnByZWZpeCA9ICJmaWxlPSI7DQorICAgIGlmICghYXJnIHx8 IGF2X3N0cm5jYXNlY21wKGFyZywgcHJlZml4LCBzdHJsZW4ocHJlZml4KSkpIHsNCisgICAgICAg IGF2X2xvZyhmLCBBVl9MT0dfRVJST1IsDQorICAgICAgICAgICAgICAgImR1bXBfcmF3XyogZXhw ZWN0cyBhcmd1bWVudCBmaWxlPS9kaXIvXG4iKTsNCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVJ TlZBTCk7DQorICAgIH0NCisgICAgY29uc3QgY2hhciAqZGlyID0gYXJnICsgc3RybGVuKHByZWZp eCk7DQorDQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZi0+bmJfb3V0cHV0czsgaSsrKSB7DQor ICAgICAgICBBVkZpbHRlckxpbmsgKmwgPSBmLT5vdXRwdXRzW2ldOw0KKyAgICAgICAgaWYgKGwt PnR5cGUgIT0gQVZNRURJQV9UWVBFX0FVRElPKQ0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAg ICAgICAgaWYgKHNldCkgew0KKyAgICAgICAgICAgIGF2X2ZyZWVwKCZsLT5kdW1wX3BjbV9wYXRo KTsNCisgICAgICAgICAgICBsLT5kdW1wX3BjbV9wYXRoID0gYXZfc3RyZHVwKGRpcik7DQorICAg ICAgICAgICAgaWYgKCFsLT5kdW1wX3BjbV9wYXRoKQ0KKyAgICAgICAgICAgICAgICByZXR1cm4g QVZFUlJPUihFTk9NRU0pOw0KKyAgICAgICAgICAgIGwtPmR1bXBfcGNtID0gMTsNCisgICAgICAg IH0gZWxzZQ0KKyAgICAgICAgICAgIGxpbmtfdW5pbml0X2R1bXBfcGNtKGwpOw0KKyAgICB9DQor ICAgIHJldHVybiAwOw0KK30NCisNCisvKiB3cml0ZSBvbmUgZnJhbWUgKi8NCitzdGF0aWMgaW50 IGxpbmtfZHVtcF9mcmFtZShBVkZpbHRlckxpbmsgKmxpbmssIEFWRnJhbWUgKmZyYW1lKQ0KK3sN CisgICAgaW50IHJldDsNCisgICAgaWYgKCFsaW5rLT5kdW1wX3BjbV9mZHMgJiYNCisgICAgICAg IChyZXQgPSBsaW5rX2luaXRfZHVtcF9wY20obGluaykpIDwgMCkNCisgICAgICAgIHJldHVybiBy ZXQ7DQorDQorICAgIGNvbnN0IGludCBjaCAgICAgPSBmcmFtZS0+Y2hfbGF5b3V0Lm5iX2NoYW5u ZWxzOw0KKyAgICBjb25zdCBpbnQgYnBzICAgID0gYXZfZ2V0X2J5dGVzX3Blcl9zYW1wbGUoZnJh bWUtPmZvcm1hdCk7DQorICAgIGNvbnN0IGludCBucyAgICAgPSBmcmFtZS0+bmJfc2FtcGxlczsN CisgICAgY29uc3QgaW50IHRvdGxlbiA9IGNoICogbnMgKiBicHM7DQorDQorICAgIC8qIGludGVy bGVhdmUgcGxhbmFyIHRvIHBhY2tlZCBpZiBuZWNlc3NhcnkgKi8NCisgICAgaWYgKGF2X3NhbXBs ZV9mbXRfaXNfcGxhbmFyKGZyYW1lLT5mb3JtYXQpKSB7DQorICAgICAgICB1aW50OF90ICpidWYg PSBhdl9tYWxsb2ModG90bGVuKTsNCisgICAgICAgIGlmICghYnVmKQ0KKyAgICAgICAgICAgIHJl dHVybiBBVkVSUk9SKEVOT01FTSk7DQorICAgICAgICBmb3IgKGludCBzID0gMDsgcyA8IG5zOyBz KyspDQorICAgICAgICAgICAgZm9yIChpbnQgYyA9IDA7IGMgPCBjaDsgYysrKQ0KKyAgICAgICAg ICAgICAgICBtZW1jcHkoYnVmICsgKHMqY2ggKyBjKSpicHMsDQorICAgICAgICAgICAgICAgICAg ICAgICAodWludDhfdCopZnJhbWUtPmV4dGVuZGVkX2RhdGFbY10gKyBzKmJwcywNCisgICAgICAg ICAgICAgICAgICAgICAgIGJwcyk7DQorICAgICAgICByZXQgPSB3cml0ZShsaW5rLT5kdW1wX3Bj bV9mZHNbMF0sIGJ1ZiwgdG90bGVuKTsNCisgICAgICAgIGF2X2ZyZWUoYnVmKTsNCisgICAgfSBl bHNlDQorICAgICAgICByZXQgPSB3cml0ZShsaW5rLT5kdW1wX3BjbV9mZHNbMF0sIGZyYW1lLT5k YXRhWzBdLCB0b3RsZW4pOw0KKw0KKyAgICBpZiAocmV0IDwgMCkgew0KKyAgICAgICAgYXZfbG9n KGxpbmstPmRzdCwgQVZfTE9HX0VSUk9SLCAiUENNIGR1bXAgd3JpdGUgZmFpbGVkOiAlc1xuIiwN CisgICAgICAgICAgICAgICBhdl9lcnIyc3RyKHJldCkpOw0KKyAgICAgICAgbGlua191bmluaXRf ZHVtcF9wY20obGluayk7DQorICAgICAgICByZXR1cm4gcmV0Ow0KKyAgICB9DQorICAgIHJldHVy biAwOw0KK30NCisNCiBzdGF0aWMgdm9pZCBsaW5rX2ZyZWUoQVZGaWx0ZXJMaW5rICoqbGluaykN CiB7DQpAQA0KDQogaW50IGF2ZmlsdGVyX3Byb2Nlc3NfY29tbWFuZChBVkZpbHRlckNvbnRleHQg KmZpbHRlciwgY29uc3QgY2hhciAqY21kLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciAqYXJnLCBjaGFyICpyZXMsIGludCByZXNfbGVuLCBpbnQgZmxhZ3MpDQogew0K QEANCi0gICAgICAgIGlmIChyZXMgPT0gbG9jYWxfcmVzKQ0KLSAgICAgICAgICAgIGF2X2xvZyhm aWx0ZXIsIEFWX0xPR19JTkZPLCAiJXMiLCByZXMpOw0KLSAgICAgICAgcmV0dXJuIDA7DQorICAg ICAgICBpZiAocmVzID09IGxvY2FsX3JlcykNCisgICAgICAgICAgICBhdl9sb2coZmlsdGVyLCBB Vl9MT0dfSU5GTywgIiVzIiwgcmVzKTsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9IGVsc2Ug aWYgKCFzdHJjbXAoY21kLCAiZHVtcF9yYXdfc3RhcnQiKSkgew0KKyAgICAgICAgcmV0dXJuIGZp bHRlcl9zZXRfZHVtcF9wY20oZmlsdGVyLCBhcmcsIDEpOw0KKyAgICB9IGVsc2UgaWYgKCFzdHJj bXAoY21kLCAiZHVtcF9yYXdfc3RvcCIpKSB7DQorICAgICAgICByZXR1cm4gZmlsdGVyX3NldF9k dW1wX3BjbShmaWx0ZXIsIGFyZywgMCk7DQogICAgIH0gZWxzZSBpZighc3RyY21wKGNtZCwgImVu YWJsZSIpKSB7DQogICAgICAgICByZXR1cm4gc2V0X2VuYWJsZV9leHByKGZmZmlsdGVyY3R4KGZp bHRlciksIGFyZyk7DQpAQA0KICAgICAvKiAuLi4gZXhpc3RpbmcgY29kZSAuLi4gKi8NCg0KKyAg ICBpZiAobGluay0+ZHVtcF9wY20gJiYgbGluay0+dHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8p IHsNCisgICAgICAgIHJldCA9IGxpbmtfZHVtcF9mcmFtZShsaW5rLCBmcmFtZSk7DQorICAgICAg ICBpZiAocmV0IDwgMCkNCisgICAgICAgICAgICBhdl9sb2cobGluay0+ZHN0LCBBVl9MT0dfRVJS T1IsDQorICAgICAgICAgICAgICAgICAgICJQQ00gZHVtcCBmYWlsZWQgd2l0aCAlc1xuIiwgYXZf ZXJyMnN0cihyZXQpKTsNCisgICAgfQ0KKw0KICAgICBsaS0+ZnJhbWVfYmxvY2tlZF9pbiA9IGxp LT5mcmFtZV93YW50ZWRfb3V0ID0gMDsNCkBADQpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvYXZm aWx0ZXIuaCBiL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmgNCmluZGV4IGE4OWQzY2Y2NTguLjBkNGM5 MWJiNmIgMTAwNjQ0DQotLS0gYS9saWJhdmZpbHRlci9hdmZpbHRlci5oDQorKysgYi9saWJhdmZp bHRlci9hdmZpbHRlci5oDQpAQA0KICAgICBBVkNoYW5uZWxMYXlvdXQgY2hfbGF5b3V0OyAgLy8v PCBjaGFubmVsIGxheW91dCBvZiBjdXJyZW50IGJ1ZmZlcg0KDQorICAgIGludCAgICAgIGR1bXBf cGNtOyAgICAgICAgICAvLy88IGVuYWJsZSBkdW1waW5nIG9uIHRoaXMgbGluaw0KKyAgICBpbnQg ICAgICpkdW1wX3BjbV9mZHM7ICAgICAgLy8vPCBvbmUgRkQgcGVyIGxpbmsgKGN1cnJlbnRseSAx KQ0KKyAgICB1bnNpZ25lZCBuYl9kdW1wX3BjbV9mZHM7ICAgLy8vPCBudW1iZXIgb2YgRkRzDQor ICAgIGNoYXIgICAgKmR1bXBfcGNtX3BhdGg7ICAgICAvLy88IHVzZXItc3VwcGxpZWQgZGlyZWN0 b3J5DQorDQogICAgIC8qKg0KICAgICAgKiBEZWZpbmUgdGhlIHRpbWUgYmFzZSB1c2VkIGJ5IHRo ZSBQVFMgb2YgdGhlIGZyYW1lcy9zYW1wbGVzDQogICAgICAqIHdoaWNoIHdpbGwgcGFzcyB0aHJv dWdoIHRoaXMgbGluay4NCi0tDQoyLjM0LjENCg0KLS0tDQoNCkZyb20gOGNmN2JmYTUyYTEwYmU4 N2UwZjE3Yjk3ODMxNTliMGU4M2Y5NjBmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDENCkZyb206 IFlpYm8gRmFuZyA8Ymx1ZXliZjc3N0BvdXRsb29rLmNvbT4NCkRhdGU6IFdlZCwgMjMgQXByIDIw MjUgMTI6Mzg6MDAgKzA4MDANClN1YmplY3Q6IFtQQVRDSCAyLzJdIGRvYy9maWx0ZXJzOiBkb2N1 bWVudCBkdW1wX3Jhd19zdGFydCBhbmQgZHVtcF9yYXdfc3RvcA0KIGNvbW1hbmRzDQoNClNpZ25l ZC1vZmYtYnk6IFlpYm8gRmFuZyA8Ymx1ZXliZjc3N0BvdXRsb29rLmNvbT4NCi0tLQ0KIGRvYy9m aWx0ZXJzLnRleGkgfCA0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysNCiAxIGZpbGUgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKQ0KDQpkaWZmIC0tZ2l0IGEv ZG9jL2ZpbHRlcnMudGV4aSBiL2RvYy9maWx0ZXJzLnRleGkNCmluZGV4IDQ1YjNlMDNlNWUuLjZh MmQyM2RmM2YgMTAwNjQ0DQotLS0gYS9kb2MvZmlsdGVycy50ZXhpDQorKysgYi9kb2MvZmlsdGVy cy50ZXhpDQpAQA0KIEBzZWN0aW9uIGFkdW1wcGNtDQoNCiBEdW1wIHJhdyBQQ00gYXVkaW8gZGF0 YSBmb3IgZGVidWdnaW5nIGJldHdlZW4gZmlsdGVycy4NCg0KIFRoaXMgZmlsdGVyIGFsbG93cyB3 cml0aW5nIHJhdyBhdWRpbyBkYXRhIHRvIGRpc2sgZnJvbSBhbnkgYXVkaW8gbGluaw0KIGluIHRo ZSBmaWx0ZXJncmFwaCBmb3IgaW5zcGVjdGlvbi4gSXQgc3VwcG9ydHMgcGxhbmFyIGFuZCBwYWNr ZWQgZm9ybWF0cywNCiBhdXRvbWF0aWNhbGx5IGludGVybGVhdmluZyBwbGFuYXIgZGF0YSBmb3Ig d3JpdGluZy4NCg0KIEBzdWJzZWN0aW9uIFN5bnRheA0KDQogQGV4YW1wbGUNCiBkdW1wX3Jhd19z dGFydD1maWxlPS95b3VyL2R1bXAvZGlyZWN0b3J5Lw0KIEBlbmQgZXhhbXBsZQ0KDQogQHN1YnNl Y3Rpb24gVXNhZ2UNCg0KIFRvIGVuYWJsZSBkdW1waW5nLCB1c2UgdGhlIEBjb2Rle2R1bXBfcmF3 X3N0YXJ0fSBjb21tYW5kOg0KDQogQGV4YW1wbGUNCiBmZm1wZWcgLWkgaW5wdXQud2F2IC1hZiAi dm9sdW1lLGFzZW5kY21kPScwLjAgZHVtcF9yYXdfc3RhcnQgZmlsZT0vdG1wL3BjbS8nIiAtZiBu dWxsIC0NCiBAZW5kIGV4YW1wbGUNCg0KIFRvIHN0b3AgZHVtcGluZzoNCg0KIEBleGFtcGxlDQog YXNlbmRjbWQ9JzUuMCBkdW1wX3Jhd19zdG9wJw0KIEBlbmQgZXhhbXBsZQ0KDQogQHN1YnNlY3Rp b24gT3B0aW9ucw0KDQogQHRhYmxlIEBvcHRpb24NCiBAaXRlbSBmaWxlDQogU3BlY2lmeSBhIGRp cmVjdG9yeSBwYXRoIChub3QgYSBmaWxlbmFtZSkgd2hlcmUgUENNIGRhdGEgd2lsbCBiZSBkdW1w ZWQuDQogVGhlIGR1bXBlZCBmaWxlIGlzIG5hbWVkIEBjb2RlezxzcmM+LTxkc3Q+LnBjbX0gYW5k IHdpbGwgYmUgb3ZlcndyaXR0ZW4gaWYgaXQgYWxyZWFkeSBleGlzdHMuDQogQGVuZCB0YWJsZQ0K LS0NCjIuMzQuMQ0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KRnJvbTogRmFu ZyBZaWJvIDxibHVleWJmNzc3QG91dGxvb2suY29tPg0KU2VudDogMjYgTWF5IDIwMjUgMTU6NDMN ClRvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZyA8ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+DQpT dWJqZWN0OiC72Li0OiBbRkZtcGVnLWRldmVsXSBbUEFUQ0hdIGF2ZmlsdGVyOiBhZGQgUENNIGR1 bXBpbmcgYmV0d2VlbiBmaWx0ZXJzIGZvciBhdWRpbyBkZWJ1Z2dpbmcNCg0KUmU6IFtGRm1wZWct ZGV2ZWwsdjIsMC8yXSBhdmZpbHRlcjogYWRkIFBDTSBkdW1waW5nIGJldHdlZW4gZmlsdGVycyBm b3IgYXVkaW8gZGVidWdnaW5nDQoNCkZyb206IFlpYm8gRmFuZyA8Ymx1ZXliZjc3N0BvdXRsb29r LmNvbT4NClN1YmplY3Q6IFtGRm1wZWctZGV2ZWwsdjIsMC8yXSBhdmZpbHRlcjogYWRkIFBDTSBk dW1waW5nIGJldHdlZW4gZmlsdGVycyBmb3IgYXVkaW8gZGVidWdnaW5nDQpEYXRlOiBXZWQsIDIz IEFwciAyMDI1IDEwOjU3OjAwICswODAwDQpNZXNzYWdlLUlkOiA8Y292ZXIuMC4yQGZmbXBlZz4N Cg0KVGhpcyBzZXJpZXMgYWRkcyBhIGRlYnVnZ2luZyBmZWF0dXJlIHRoYXQgbGV0cyBkZXZlbG9w ZXJzIGR1bXAgcmF3DQpQQ00gYXVkaW8gYmV0d2VlbiBmaWx0ZXJzLiAgVGhlIGRhdGEgYXJlIHdy aXR0ZW4gdG8gZmlsZXMgaW4gYSB1c2VyLQ0Kc2VsZWN0ZWQgZGlyZWN0b3J5IHZpYSB0d28gbmV3 IGNvbW1hbmRzOg0KDQogICAgZHVtcF9yYXdfc3RhcnQgZmlsZT0vcGF0aC90by9kaXIvDQogICAg ZHVtcF9yYXdfc3RvcA0KDQpQbGFuYXIgYXVkaW8gaXMgYXV0b21hdGljYWxseSBpbnRlcmxlYXZl ZDsgb25seSBhdWRpbyBsaW5rcyBhcmUNCmFmZmVjdGVkLiAgUGF0Y2ggMS8yIGltcGxlbWVudHMg dGhlIGZlYXR1cmUsIHBhdGNoIDIvMiBkb2N1bWVudHMgaXQuDQoNClJlZ2FyZHMsDQpZaWJvIEZh bmcNCg0KLS0tDQoNCkZyb20gMmRmNTZlNzQyNzNkNDc3YWUyNzAwM2UwOTgxMjIwNzQ5YTZiNThj ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDENCkZyb206IFlpYm8gRmFuZyA8Ymx1ZXliZjc3N0Bv dXRsb29rLmNvbT4NCkRhdGU6IFdlZCwgMjMgQXByIDIwMjUgMTA6NTg6NTUgKzA4MDANClN1Ympl Y3Q6IFtQQVRDSCAxLzJdIGF2ZmlsdGVyOiBhZGQgUENNIGR1bXBpbmcgYmV0d2VlbiBmaWx0ZXJz IGZvciBhdWRpbw0KIGRlYnVnZ2luZw0KDQpUaGlzIHBhdGNoIGludHJvZHVjZXMgUENNIGR1bXBp bmcgc3VwcG9ydCBiZXR3ZWVuIEFWRmlsdGVyIGxpbmtzLA0KaW50ZW5kZWQgZm9yIGF1ZGlvIGRl YnVnZ2luZyBhbmQgZmlsdGVyLWdyYXBoIGluc3BlY3Rpb24uDQoNClR3byBmaWx0ZXIgY29tbWFu ZHMgYXJlIGFkZGVkOg0KDQogICAgZHVtcF9yYXdfc3RhcnQgZmlsZT0vcGF0aC90by9vdXRwdXQv ZGlyLw0KICAgIGR1bXBfcmF3X3N0b3ANCg0KV2hlbiBkdW1waW5nIGlzIGVuYWJsZWQsIGF1ZGlv IGxlYXZpbmcgdGhlIHNlbGVjdGVkIGZpbHRlciBvdXRwdXQgaXMNCndyaXR0ZW4gdG8gYW4gYXV0 b21hdGljYWxseSBuYW1lZCBmaWxlOg0KDQogICAgPHNyY19maWx0ZXI+LTxkc3RfZmlsdGVyPi5w Y20NCg0KUGxhbmFyIGZvcm1hdHMgYXJlIGNvbnZlcnRlZCB0byBwYWNrZWQuICBGaWxlIGRlc2Ny aXB0b3JzIGFyZSBvcGVuZWQNCm9uIGRlbWFuZCBhbmQgY2xvc2VkIGF1dG9tYXRpY2FsbHkuICBX b3JrcyBvbmx5IG9uIGF1ZGlvIGxpbmtzLg0KDQpFeGFtcGxlIChDIEFQSSk6DQogICAgYXZmaWx0 ZXJfcHJvY2Vzc19jb21tYW5kKGZpbHRlciwgImR1bXBfcmF3X3N0YXJ0IiwNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgImZpbGU9L3RtcC8iLCBOVUxMLCAwLCAwKTsNCg0KU2lnbmVkLW9m Zi1ieTogWWlibyBGYW5nIDxibHVleWJmNzc3QG91dGxvb2suY29tPg0KLS0tDQogbGliYXZmaWx0 ZXIvYXZmaWx0ZXIuYyB8IDE0NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKw0KIGxpYmF2ZmlsdGVyL2F2ZmlsdGVyLmggfCAgIDUgKysNCiAyIGZpbGVzIGNoYW5nZWQs IDE0OSBpbnNlcnRpb25zKCspDQoNCmRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9hdmZpbHRlci5j IGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuYw0KaW5kZXggNjRjMTA3NWM0MC4uYjcwMzQ1NjlkYiAx MDA2NDQNCi0tLSBhL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmMNCisrKyBiL2xpYmF2ZmlsdGVyL2F2 ZmlsdGVyLmMNCkBAIC0xOSw2ICsxOSw5IEBADQogICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQ0KICAq Lw0KDQorI2luY2x1ZGUgPGZjbnRsLmg+DQorI2luY2x1ZGUgPHVuaXN0ZC5oPg0KKw0KICNpbmNs dWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCINCiAjaW5jbHVkZSAibGliYXZ1dGlsL2F2c3RyaW5n LmgiDQogI2luY2x1ZGUgImxpYmF2dXRpbC9icHJpbnQuaCINCkBADQogICAgIHJldHVybiAwOw0K IH0NCg0KKy8qIC0tLS0tLS0tLS0gUENNIGR1bXAgaGVscGVycyAtLS0tLS0tLS0tICovDQorDQor c3RhdGljIGF2X2NvbGQgdm9pZCBsaW5rX3VuaW5pdF9kdW1wX3BjbShBVkZpbHRlckxpbmsgKmxp bmspDQorew0KKyAgICBpZiAobGluay0+ZHVtcF9wY21fZmRzKSB7DQorICAgICAgICBmb3IgKHVu c2lnbmVkIGkgPSAwOyBpIDwgbGluay0+bmJfZHVtcF9wY21fZmRzOyBpKyspDQorICAgICAgICAg ICAgaWYgKGxpbmstPmR1bXBfcGNtX2Zkc1tpXSA+PSAwKQ0KKyAgICAgICAgICAgICAgICBjbG9z ZShsaW5rLT5kdW1wX3BjbV9mZHNbaV0pOw0KKyAgICAgICAgYXZfZnJlZXAoJmxpbmstPmR1bXBf cGNtX2Zkcyk7DQorICAgICAgICBsaW5rLT5uYl9kdW1wX3BjbV9mZHMgPSAwOw0KKyAgICB9DQor ICAgIGF2X2ZyZWVwKCZsaW5rLT5kdW1wX3BjbV9wYXRoKTsNCisgICAgbGluay0+ZHVtcF9wY20g PSAwOw0KK30NCisNCitzdGF0aWMgYXZfY29sZCBpbnQgbGlua19pbml0X2R1bXBfcGNtKEFWRmls dGVyTGluayAqbGluaykNCit7DQorICAgIC8qIGJ1aWxkIGZ1bGwgcGF0aCAiPGRpcj4vPHNyYz4t PGRzdD4ucGNtIiAqLw0KKyAgICBjb25zdCBjaGFyICpkaXIgPSBsaW5rLT5kdW1wX3BjbV9wYXRo Ow0KKyAgICBjb25zdCBjaGFyICpzZXAgPSBkaXJbc3RybGVuKGRpcikgLSAxXSA9PSAnLycgPyAi IiA6ICIvIjsNCisgICAgY2hhciBwYXRoWzQwOTZdOw0KKyAgICBzbnByaW50ZihwYXRoLCBzaXpl b2YocGF0aCksICIlcyVzJS4xNnMtJS44cy5wY20iLA0KKyAgICAgICAgICAgICBkaXIsIHNlcCwg bGluay0+c3JjLT5uYW1lLCBsaW5rLT5kc3QtPm5hbWUpOw0KKw0KKyAgICBsaW5rLT5uYl9kdW1w X3BjbV9mZHMgPSAxOw0KKyAgICBsaW5rLT5kdW1wX3BjbV9mZHMgPSBhdl9tYWxsb2Moc2l6ZW9m KGludCkpOw0KKyAgICBpZiAoIWxpbmstPmR1bXBfcGNtX2ZkcykNCisgICAgICAgIHJldHVybiBB VkVSUk9SKEVOT01FTSk7DQorDQorICAgIGludCBmZCA9IG9wZW4ocGF0aCwgT19XUk9OTFkgfCBP X0NSRUFUIHwgT19UUlVOQyB8IE9fRVhDTCwgMDY0NCk7DQorICAgIGlmIChmZCA8IDApIHsNCisg ICAgICAgIGxpbmtfdW5pbml0X2R1bXBfcGNtKGxpbmspOw0KKyAgICAgICAgcmV0dXJuIEFWRVJS T1IoZXJybm8pOw0KKyAgICB9DQorICAgIGxpbmstPmR1bXBfcGNtX2Zkc1swXSA9IGZkOw0KKyAg ICBhdl9sb2cobGluay0+ZHN0LCBBVl9MT0dfSU5GTywgIlBDTSBkdW1wIGZpbGU6ICVzXG4iLCBw YXRoKTsNCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgZmlsdGVyX3NldF9kdW1w X3BjbShBVkZpbHRlckNvbnRleHQgKmYsIGNvbnN0IGNoYXIgKmFyZywgaW50IHNldCkNCit7DQor ICAgIGNvbnN0IGNoYXIgKnByZWZpeCA9ICJmaWxlPSI7DQorICAgIGlmICghYXJnIHx8IGF2X3N0 cm5jYXNlY21wKGFyZywgcHJlZml4LCBzdHJsZW4ocHJlZml4KSkpIHsNCisgICAgICAgIGF2X2xv ZyhmLCBBVl9MT0dfRVJST1IsDQorICAgICAgICAgICAgICAgImR1bXBfcmF3XyogZXhwZWN0cyBh cmd1bWVudCBmaWxlPS9kaXIvXG4iKTsNCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7 DQorICAgIH0NCisgICAgY29uc3QgY2hhciAqZGlyID0gYXJnICsgc3RybGVuKHByZWZpeCk7DQor DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZi0+bmJfb3V0cHV0czsgaSsrKSB7DQorICAgICAg ICBBVkZpbHRlckxpbmsgKmwgPSBmLT5vdXRwdXRzW2ldOw0KKyAgICAgICAgaWYgKGwtPnR5cGUg IT0gQVZNRURJQV9UWVBFX0FVRElPKQ0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAg aWYgKHNldCkgew0KKyAgICAgICAgICAgIGF2X2ZyZWVwKCZsLT5kdW1wX3BjbV9wYXRoKTsNCisg ICAgICAgICAgICBsLT5kdW1wX3BjbV9wYXRoID0gYXZfc3RyZHVwKGRpcik7DQorICAgICAgICAg ICAgaWYgKCFsLT5kdW1wX3BjbV9wYXRoKQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJP UihFTk9NRU0pOw0KKyAgICAgICAgICAgIGwtPmR1bXBfcGNtID0gMTsNCisgICAgICAgIH0gZWxz ZQ0KKyAgICAgICAgICAgIGxpbmtfdW5pbml0X2R1bXBfcGNtKGwpOw0KKyAgICB9DQorICAgIHJl dHVybiAwOw0KK30NCisNCisvKiB3cml0ZSBvbmUgZnJhbWUgKi8NCitzdGF0aWMgaW50IGxpbmtf ZHVtcF9mcmFtZShBVkZpbHRlckxpbmsgKmxpbmssIEFWRnJhbWUgKmZyYW1lKQ0KK3sNCisgICAg aW50IHJldDsNCisgICAgaWYgKCFsaW5rLT5kdW1wX3BjbV9mZHMgJiYNCisgICAgICAgIChyZXQg PSBsaW5rX2luaXRfZHVtcF9wY20obGluaykpIDwgMCkNCisgICAgICAgIHJldHVybiByZXQ7DQor DQorICAgIGNvbnN0IGludCBjaCAgICAgPSBmcmFtZS0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzOw0K KyAgICBjb25zdCBpbnQgYnBzICAgID0gYXZfZ2V0X2J5dGVzX3Blcl9zYW1wbGUoZnJhbWUtPmZv cm1hdCk7DQorICAgIGNvbnN0IGludCBucyAgICAgPSBmcmFtZS0+bmJfc2FtcGxlczsNCisgICAg Y29uc3QgaW50IHRvdGxlbiA9IGNoICogbnMgKiBicHM7DQorDQorICAgIC8qIGludGVybGVhdmUg cGxhbmFyIHRvIHBhY2tlZCBpZiBuZWNlc3NhcnkgKi8NCisgICAgaWYgKGF2X3NhbXBsZV9mbXRf aXNfcGxhbmFyKGZyYW1lLT5mb3JtYXQpKSB7DQorICAgICAgICB1aW50OF90ICpidWYgPSBhdl9t YWxsb2ModG90bGVuKTsNCisgICAgICAgIGlmICghYnVmKQ0KKyAgICAgICAgICAgIHJldHVybiBB VkVSUk9SKEVOT01FTSk7DQorICAgICAgICBmb3IgKGludCBzID0gMDsgcyA8IG5zOyBzKyspDQor ICAgICAgICAgICAgZm9yIChpbnQgYyA9IDA7IGMgPCBjaDsgYysrKQ0KKyAgICAgICAgICAgICAg ICBtZW1jcHkoYnVmICsgKHMqY2ggKyBjKSpicHMsDQorICAgICAgICAgICAgICAgICAgICAgICAo dWludDhfdCopZnJhbWUtPmV4dGVuZGVkX2RhdGFbY10gKyBzKmJwcywNCisgICAgICAgICAgICAg ICAgICAgICAgIGJwcyk7DQorICAgICAgICByZXQgPSB3cml0ZShsaW5rLT5kdW1wX3BjbV9mZHNb MF0sIGJ1ZiwgdG90bGVuKTsNCisgICAgICAgIGF2X2ZyZWUoYnVmKTsNCisgICAgfSBlbHNlDQor ICAgICAgICByZXQgPSB3cml0ZShsaW5rLT5kdW1wX3BjbV9mZHNbMF0sIGZyYW1lLT5kYXRhWzBd LCB0b3RsZW4pOw0KKw0KKyAgICBpZiAocmV0IDwgMCkgew0KKyAgICAgICAgYXZfbG9nKGxpbmst PmRzdCwgQVZfTE9HX0VSUk9SLCAiUENNIGR1bXAgd3JpdGUgZmFpbGVkOiAlc1xuIiwNCisgICAg ICAgICAgICAgICBhdl9lcnIyc3RyKHJldCkpOw0KKyAgICAgICAgbGlua191bmluaXRfZHVtcF9w Y20obGluayk7DQorICAgICAgICByZXR1cm4gcmV0Ow0KKyAgICB9DQorICAgIHJldHVybiAwOw0K K30NCisNCiBzdGF0aWMgdm9pZCBsaW5rX2ZyZWUoQVZGaWx0ZXJMaW5rICoqbGluaykNCiB7DQpA QA0KDQogaW50IGF2ZmlsdGVyX3Byb2Nlc3NfY29tbWFuZChBVkZpbHRlckNvbnRleHQgKmZpbHRl ciwgY29uc3QgY2hhciAqY21kLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciAqYXJnLCBjaGFyICpyZXMsIGludCByZXNfbGVuLCBpbnQgZmxhZ3MpDQogew0KQEANCi0g ICAgICAgIGlmIChyZXMgPT0gbG9jYWxfcmVzKQ0KLSAgICAgICAgICAgIGF2X2xvZyhmaWx0ZXIs IEFWX0xPR19JTkZPLCAiJXMiLCByZXMpOw0KLSAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICBp ZiAocmVzID09IGxvY2FsX3JlcykNCisgICAgICAgICAgICBhdl9sb2coZmlsdGVyLCBBVl9MT0df SU5GTywgIiVzIiwgcmVzKTsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9IGVsc2UgaWYgKCFz dHJjbXAoY21kLCAiZHVtcF9yYXdfc3RhcnQiKSkgew0KKyAgICAgICAgcmV0dXJuIGZpbHRlcl9z ZXRfZHVtcF9wY20oZmlsdGVyLCBhcmcsIDEpOw0KKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAoY21k LCAiZHVtcF9yYXdfc3RvcCIpKSB7DQorICAgICAgICByZXR1cm4gZmlsdGVyX3NldF9kdW1wX3Bj bShmaWx0ZXIsIGFyZywgMCk7DQogICAgIH0gZWxzZSBpZighc3RyY21wKGNtZCwgImVuYWJsZSIp KSB7DQogICAgICAgICByZXR1cm4gc2V0X2VuYWJsZV9leHByKGZmZmlsdGVyY3R4KGZpbHRlciks IGFyZyk7DQpAQA0KICAgICAvKiAuLi4gZXhpc3RpbmcgY29kZSAuLi4gKi8NCg0KKyAgICBpZiAo bGluay0+ZHVtcF9wY20gJiYgbGluay0+dHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8pIHsNCisg ICAgICAgIHJldCA9IGxpbmtfZHVtcF9mcmFtZShsaW5rLCBmcmFtZSk7DQorICAgICAgICBpZiAo cmV0IDwgMCkNCisgICAgICAgICAgICBhdl9sb2cobGluay0+ZHN0LCBBVl9MT0dfRVJST1IsDQor ICAgICAgICAgICAgICAgICAgICJQQ00gZHVtcCBmYWlsZWQgd2l0aCAlc1xuIiwgYXZfZXJyMnN0 cihyZXQpKTsNCisgICAgfQ0KKw0KICAgICBsaS0+ZnJhbWVfYmxvY2tlZF9pbiA9IGxpLT5mcmFt ZV93YW50ZWRfb3V0ID0gMDsNCkBADQpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvYXZmaWx0ZXIu aCBiL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmgNCmluZGV4IGE4OWQzY2Y2NTguLjBkNGM5MWJiNmIg MTAwNjQ0DQotLS0gYS9saWJhdmZpbHRlci9hdmZpbHRlci5oDQorKysgYi9saWJhdmZpbHRlci9h dmZpbHRlci5oDQpAQA0KICAgICBBVkNoYW5uZWxMYXlvdXQgY2hfbGF5b3V0OyAgLy8vPCBjaGFu bmVsIGxheW91dCBvZiBjdXJyZW50IGJ1ZmZlcg0KDQorICAgIGludCAgICAgIGR1bXBfcGNtOyAg ICAgICAgICAvLy88IGVuYWJsZSBkdW1waW5nIG9uIHRoaXMgbGluaw0KKyAgICBpbnQgICAgICpk dW1wX3BjbV9mZHM7ICAgICAgLy8vPCBvbmUgRkQgcGVyIGxpbmsgKGN1cnJlbnRseSAxKQ0KKyAg ICB1bnNpZ25lZCBuYl9kdW1wX3BjbV9mZHM7ICAgLy8vPCBudW1iZXIgb2YgRkRzDQorICAgIGNo YXIgICAgKmR1bXBfcGNtX3BhdGg7ICAgICAvLy88IHVzZXItc3VwcGxpZWQgZGlyZWN0b3J5DQor DQogICAgIC8qKg0KICAgICAgKiBEZWZpbmUgdGhlIHRpbWUgYmFzZSB1c2VkIGJ5IHRoZSBQVFMg b2YgdGhlIGZyYW1lcy9zYW1wbGVzDQogICAgICAqIHdoaWNoIHdpbGwgcGFzcyB0aHJvdWdoIHRo aXMgbGluay4NCi0tDQoyLjM0LjENCg0KLS0tDQoNCkZyb20gOGNmN2JmYTUyYTEwYmU4N2UwZjE3 Yjk3ODMxNTliMGU4M2Y5NjBmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDENCkZyb206IFlpYm8g RmFuZyA8Ymx1ZXliZjc3N0BvdXRsb29rLmNvbT4NCkRhdGU6IFdlZCwgMjMgQXByIDIwMjUgMTI6 Mzg6MDAgKzA4MDANClN1YmplY3Q6IFtQQVRDSCAyLzJdIGRvYy9maWx0ZXJzOiBkb2N1bWVudCBk dW1wX3Jhd19zdGFydCBhbmQgZHVtcF9yYXdfc3RvcA0KIGNvbW1hbmRzDQoNClNpZ25lZC1vZmYt Ynk6IFlpYm8gRmFuZyA8Ymx1ZXliZjc3N0BvdXRsb29rLmNvbT4NCi0tLQ0KIGRvYy9maWx0ZXJz LnRleGkgfCA0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysN CiAxIGZpbGUgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKQ0KDQpkaWZmIC0tZ2l0IGEvZG9jL2Zp bHRlcnMudGV4aSBiL2RvYy9maWx0ZXJzLnRleGkNCmluZGV4IDQ1YjNlMDNlNWUuLjZhMmQyM2Rm M2YgMTAwNjQ0DQotLS0gYS9kb2MvZmlsdGVycy50ZXhpDQorKysgYi9kb2MvZmlsdGVycy50ZXhp DQpAQA0KIEBzZWN0aW9uIGFkdW1wcGNtDQoNCiBEdW1wIHJhdyBQQ00gYXVkaW8gZGF0YSBmb3Ig ZGVidWdnaW5nIGJldHdlZW4gZmlsdGVycy4NCg0KIFRoaXMgZmlsdGVyIGFsbG93cyB3cml0aW5n IHJhdyBhdWRpbyBkYXRhIHRvIGRpc2sgZnJvbSBhbnkgYXVkaW8gbGluaw0KIGluIHRoZSBmaWx0 ZXJncmFwaCBmb3IgaW5zcGVjdGlvbi4gSXQgc3VwcG9ydHMgcGxhbmFyIGFuZCBwYWNrZWQgZm9y bWF0cywNCiBhdXRvbWF0aWNhbGx5IGludGVybGVhdmluZyBwbGFuYXIgZGF0YSBmb3Igd3JpdGlu Zy4NCg0KIEBzdWJzZWN0aW9uIFN5bnRheA0KDQogQGV4YW1wbGUNCiBkdW1wX3Jhd19zdGFydD1m aWxlPS95b3VyL2R1bXAvZGlyZWN0b3J5Lw0KIEBlbmQgZXhhbXBsZQ0KDQogQHN1YnNlY3Rpb24g VXNhZ2UNCg0KIFRvIGVuYWJsZSBkdW1waW5nLCB1c2UgdGhlIEBjb2Rle2R1bXBfcmF3X3N0YXJ0 fSBjb21tYW5kOg0KDQogQGV4YW1wbGUNCiBmZm1wZWcgLWkgaW5wdXQud2F2IC1hZiAidm9sdW1l LGFzZW5kY21kPScwLjAgZHVtcF9yYXdfc3RhcnQgZmlsZT0vdG1wL3BjbS8nIiAtZiBudWxsIC0N CiBAZW5kIGV4YW1wbGUNCg0KIFRvIHN0b3AgZHVtcGluZzoNCg0KIEBleGFtcGxlDQogYXNlbmRj bWQ9JzUuMCBkdW1wX3Jhd19zdG9wJw0KIEBlbmQgZXhhbXBsZQ0KDQogQHN1YnNlY3Rpb24gT3B0 aW9ucw0KDQogQHRhYmxlIEBvcHRpb24NCiBAaXRlbSBmaWxlDQogU3BlY2lmeSBhIGRpcmVjdG9y eSBwYXRoIChub3QgYSBmaWxlbmFtZSkgd2hlcmUgUENNIGRhdGEgd2lsbCBiZSBkdW1wZWQuDQog VGhlIGR1bXBlZCBmaWxlIGlzIG5hbWVkIEBjb2RlezxzcmM+LTxkc3Q+LnBjbX0gYW5kIHdpbGwg YmUgb3ZlcndyaXR0ZW4gaWYgaXQgYWxyZWFkeSBleGlzdHMuDQogQGVuZCB0YWJsZQ0KLS0NCjIu MzQuMQ0KDQoNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCkZyb206IGZmbXBl Zy1kZXZlbCA8ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZz4gb24gYmVoYWxmIG9mIEFu ZHJlYXMgUmhlaW5oYXJkdCA8YW5kcmVhcy5yaGVpbmhhcmR0QG91dGxvb2suY29tPg0KU2VudDog MjYgQXByaWwgMjAyNSAzOjAwDQpUbzogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcgPGZmbXBlZy1k ZXZlbEBmZm1wZWcub3JnPg0KU3ViamVjdDogUmU6IFtGRm1wZWctZGV2ZWxdIFtQQVRDSF0gYXZm aWx0ZXI6IGFkZCBQQ00gZHVtcGluZyBiZXR3ZWVuIGZpbHRlcnMgZm9yIGF1ZGlvIGRlYnVnZ2lu Zw0KDQrSu9a7tPMgt8rDqDoNCj4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIFBDTSBkdW1waW5nIHN1 cHBvcnQgYmV0d2VlbiBBVkZpbHRlciBsaW5rcywgaW50ZW5kZWQgZm9yIGF1ZGlvIGRlYnVnZ2lu Zy4NCj4NCj4gSXQgYWRkcyBhIGNvbmZpZ3VyZS10aW1lIG9wdGlvbiBgLS1kdW1wZGlyPVBBVEhg IHRvIHNwZWNpZnkgdGhlIG91dHB1dCBkaXJlY3RvcnkgZm9yIHJhdyBQQ00gZGF0YSAoZGVmYXVs dDogL3RtcC8pLg0KPg0KPiBUd28gY29tbWFuZHMgYXJlIGV4cG9zZWQgdG8gY29udHJvbCBkdW1w aW5nOg0KPiAgIC0gZHVtcF9yYXdfc3RhcnQgPGRzdF9maWx0ZXJfbmFtZT4NCj4gICAtIGR1bXBf cmF3X3N0b3AgPGRzdF9maWx0ZXJfbmFtZT4NCj4NCj4gRHVtcCBmaWxlcyBhcmUgd3JpdHRlbiBh czogc3JjbmFtZS1kc3RuYW1lLWNoYW5uZWwucGNtDQo+DQo+IFN1cHBvcnRzIHBhY2tlZCBhbmQg cGxhbmFyIGZvcm1hdHMuIEZpbGUgZGVzY3JpcHRvcnMgYXJlIG1hbmFnZWQgYXV0b21hdGljYWxs eSBhbmQgd29yayBvbmx5IG9uIGF1ZGlvIGxpbmtzLg0KPg0KPiBFeGFtcGxlIHVzYWdlOg0KPiAg ICAgYXZmaWx0ZXJfcHJvY2Vzc19jb21tYW5kKGZpbHRlciwgImR1bXBfcmF3X3N0YXJ0IiwgInZv bHVtZSIsIE5VTEwsIDAsIDApOw0KPg0KPiBUaGlzIGZlYXR1cmUgaGVscHMgZGV2ZWxvcGVycyBk ZWJ1ZyBmaWx0ZXIgYmVoYXZpb3IgYnkgaW5zcGVjdGluZyBpbnRlcm1lZGlhdGUgYXVkaW8gZGF0 YS4NCj4gLS0tDQo+IEZyb20gNmEzMWM4NWFmZDI4MDBjMDkwNzZjMWUyYjdjNzM0YzdiNzE5Zjcz ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDENCj4gRnJvbTogWWlibyBGYW5nIDxibHVleWJmNzc3 QG91dGxvb2suY29tPg0KPiBEYXRlOiBXZWQsIDIzIEFwciAyMDI1IDA5OjE3OjUxICswODAwDQo+ IFN1YmplY3Q6IFtQQVRDSCAxLzFdIGF2ZmlsdGVyOiBhZGQgUENNIGR1bXBpbmcgYmV0d2VlbiBm aWx0ZXJzIGZvciBhdWRpbw0KPiAgZGVidWdnaW5nDQo+DQo+IFRoaXMgcGF0Y2ggYWRkcyB0aGUg YWJpbGl0eSB0byBkdW1wIHJhdyBQQ00gYXVkaW8gZGF0YSBiZXR3ZWVuIEFWRmlsdGVyIGxpbmtz Lg0KPiBJdCBpbnRyb2R1Y2VzIGEgY29uZmlndXJlLXRpbWUgb3B0aW9uIGAtLWR1bXBkaXI9UEFU SGAgdG8gY29udHJvbCB0aGUgb3V0cHV0DQo+IGRpcmVjdG9yeSBvZiBkdW1wIGZpbGVzIChkZWZh dWx0OiAvdG1wLykuIFRoaXMgZmVhdHVyZSBpcyBoZWxwZnVsIGZvciBkZWJ1Z2dpbmcNCj4gZmls dGVyIGJlaGF2aW9yIGFuZCB2ZXJpZnlpbmcgYXVkaW8gcHJvY2Vzc2luZy4NCj4NCj4gVHdvIGZp bHRlciBjb21tYW5kcyBhcmUgYWRkZWQ6DQo+ICAgLSBkdW1wX3Jhd19zdGFydCA8ZHN0X2ZpbHRl cl9uYW1lPg0KPiAgIC0gZHVtcF9yYXdfc3RvcCA8ZHN0X2ZpbHRlcl9uYW1lPg0KPg0KPiBUaGUg UENNIGZpbGVzIGFyZSB3cml0dGVuIGluIHRoZSBmb3JtYXQ6IHNyY25hbWUtZHN0bmFtZS08Y2hh bm5lbD4ucGNtLg0KPg0KPiBTdXBwb3J0cyBib3RoIHBhY2tlZCBhbmQgcGxhbmFyIGZvcm1hdHMu IEZpbGUgZGVzY3JpcHRvcnMgYXJlIGF1dG9tYXRpY2FsbHkNCj4gbWFuYWdlZC4gV29ya3Mgb25s eSBvbiBhdWRpbyBsaW5rcy4NCj4NCj4gRXhhbXBsZSB1c2FnZToNCj4gICBhdmZpbHRlcl9wcm9j ZXNzX2NvbW1hbmQoZmlsdGVyLCAiZHVtcF9yYXdfc3RhcnQiLCAidm9sdW1lIiwgTlVMTCwgMCwg MCk7DQo+DQo+IFNpZ25lZC1vZmYtYnk6IFlpYm8gRmFuZyA8Ymx1ZXliZjc3N0BvdXRsb29rLmNv bT4NCj4gLS0tDQo+ICBjb25maWd1cmUgICAgICAgICAgICAgIHwgICA3ICsrKw0KPiAgbGliYXZm aWx0ZXIvYXZmaWx0ZXIuYyB8IDExMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKw0KPiAgbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaCB8ICAgNCArKw0KPiAgMyBmaWxlcyBj aGFuZ2VkLCAxMjEgaW5zZXJ0aW9ucygrKQ0KPg0KPiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIv Y29uZmlndXJlDQo+IGluZGV4IGM5NGI4ZWFjNDMuLjM4MTYzMzc0OWQgMTAwNzU1DQo+IC0tLSBh L2NvbmZpZ3VyZQ0KPiArKysgYi9jb25maWd1cmUNCj4gQEAgLTUyNCw2ICs1MjQsNyBAQCBEZXZl bG9wZXIgb3B0aW9ucyAodXNlZnVsIHdoZW4gd29ya2luZyBvbiBGRm1wZWcgaXRzZWxmKToNCj4g ICAgLS1kaXNhYmxlLWxhcmdlLXRlc3RzICAgIGRpc2FibGUgdGVzdHMgdGhhdCB1c2UgYSBsYXJn ZSBhbW91bnQgb2YgbWVtb3J5DQo+ICAgIC0tZGlzYWJsZS1wdHgtY29tcHJlc3Npb24gZG9uJ3Qg Y29tcHJlc3MgQ1VEQSBQVFggY29kZSBldmVuIHdoZW4gcG9zc2libGUNCj4gICAgLS1kaXNhYmxl LXZlcnNpb24tdHJhY2tpbmcgZG9uJ3QgaW5jbHVkZSB0aGUgZ2l0L3JlbGVhc2UgdmVyc2lvbiBp biB0aGUgYnVpbGQNCj4gKyAgLS1kdW1wZGlyPVBBVEggICAgICAgICAgIGxvY2F0aW9uIG9mIHBj bSBkdW1wIGZpbGVzIHRvIHNhdmUuDQo+DQo+ICBOT1RFOiBPYmplY3QgZmlsZXMgYXJlIGJ1aWx0 IGF0IHRoZSBwbGFjZSB3aGVyZSBjb25maWd1cmUgaXMgbGF1bmNoZWQuDQo+ICBFT0YNCj4gQEAg LTI2OTAsNiArMjY5MSw3IEBAIFBBVEhTX0xJU1Q9Ig0KPiAgICAgIHByZWZpeA0KPiAgICAgIHNo bGliZGlyDQo+ICAgICAgaW5zdGFsbF9uYW1lX2Rpcg0KPiArICAgIGR1bXBkaXINCj4gICINCj4N Cj4gIENNRExJTkVfU0VUPSINCj4gQEAgLTQxMjMsNiArNDEyNSw5IEBAIGluY2Rpcl9kZWZhdWx0 PScke3ByZWZpeH0vaW5jbHVkZScNCj4gIGxpYmRpcl9kZWZhdWx0PScke3ByZWZpeH0vbGliJw0K PiAgbWFuZGlyX2RlZmF1bHQ9JyR7cHJlZml4fS9zaGFyZS9tYW4nDQo+DQo+ICsjIHJ1bnRpbWUg cGF0aA0KPiArZHVtcGRpcl9kZWZhdWx0PScvdG1wLycNCj4gKw0KPiAgIyB0b29sY2hhaW4NCj4g IGFyX2RlZmF1bHQ9ImFyIg0KPiAgY2NfZGVmYXVsdD0iZ2NjIg0KPiBAQCAtODExOCw2ICs4MTIz LDcgQEAgRE9DRElSPVwkKERFU1RESVIpJGRvY2Rpcg0KPiAgTUFORElSPVwkKERFU1RESVIpJG1h bmRpcg0KPiAgUEtHQ09ORklHRElSPVwkKERFU1RESVIpJHBrZ2NvbmZpZ2Rpcg0KPiAgSU5TVEFM TF9OQU1FX0RJUj0kaW5zdGFsbF9uYW1lX2Rpcg0KPiArRFVNUERJUj0kZHVtcGRpcg0KPiAgU1JD X1BBVEg9JHNvdXJjZV9wYXRoDQo+ICBTUkNfTElOSz0kc291cmNlX2xpbmsNCj4gIGlmbmRlZiBN QUlOX01BS0VGSUxFDQo+IEBAIC04MjY3LDYgKzgyNzMsNyBAQCBjYXQgPiAkVE1QSCA8PEVPRg0K PiAgI2RlZmluZSBDT05GSUdfVEhJU19ZRUFSIDIwMjUNCj4gICNkZWZpbmUgRkZNUEVHX0RBVEFE SVIgIiQoZXZhbCBjX2VzY2FwZSAkZGF0YWRpcikiDQo+ICAjZGVmaW5lIEFWQ09OVl9EQVRBRElS ICIkKGV2YWwgY19lc2NhcGUgJGRhdGFkaXIpIg0KPiArI2RlZmluZSBGRk1QRUdfRFVNUERJUiAi JChldmFsIGNfZXNjYXBlICRkdW1wZGlyKSINCj4gICNkZWZpbmUgQ0NfSURFTlQgIiQoY19lc2Nh cGUgJHtjY19pZGVudDotVW5rbm93biBjb21waWxlcn0pIg0KPiAgI2RlZmluZSBPU19OQU1FICR0 YXJnZXRfb3MNCj4gICNkZWZpbmUgRVhURVJOX1BSRUZJWCAiJHtleHRlcm5fcHJlZml4fSINCj4g ZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmMgYi9saWJhdmZpbHRlci9hdmZpbHRl ci5jDQo+IGluZGV4IDY0YzEwNzVjNDAuLjlmYzYzMDg1NDQgMTAwNjQ0DQo+IC0tLSBhL2xpYmF2 ZmlsdGVyL2F2ZmlsdGVyLmMNCj4gKysrIGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuYw0KPiBAQCAt MTksNiArMTksOSBAQA0KPiAgICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0 LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQ0KPiAgICovDQo+DQo+ICsj aW5jbHVkZSA8ZmNudGwuaD4NCj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4NCj4gKw0KPiAgI2luY2x1 ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIg0KPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9hdnN0cmlu Zy5oIg0KPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9icHJpbnQuaCINCj4gQEAgLTE5NSw2ICsxOTgs NjYgQEAgaW50IGF2ZmlsdGVyX2xpbmsoQVZGaWx0ZXJDb250ZXh0ICpzcmMsIHVuc2lnbmVkIHNy Y3BhZCwNCj4gICAgICByZXR1cm4gMDsNCj4gIH0NCj4NCj4gK3N0YXRpYyBhdl9jb2xkIHZvaWQg bGlua191bmluaXRfZHVtcF9wY20oQVZGaWx0ZXJMaW5rICpsaW5rLCBpbnQgc3RvcCkNCj4gK3sN Cj4gKyAgICBpZiAobGluay0+ZHVtcF9wY21fZmRzKSB7DQo+ICsgICAgICAgIGludCBpOw0KPiAr ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGluay0+bmJfZHVtcF9wY21fZmRzOyBpKyspIHsNCj4g KyAgICAgICAgICAgIGlmIChsaW5rLT5kdW1wX3BjbV9mZHNbaV0pDQo+ICsgICAgICAgICAgICAg ICAgY2xvc2UobGluay0+ZHVtcF9wY21fZmRzW2ldKTsNCj4gKyAgICAgICAgfQ0KPiArICAgICAg ICBhdl9mcmVlKGxpbmstPmR1bXBfcGNtX2Zkcyk7DQo+ICsgICAgICAgIGxpbmstPmR1bXBfcGNt X2ZkcyAgICA9IE5VTEw7DQo+ICsgICAgICAgIGxpbmstPm5iX2R1bXBfcGNtX2ZkcyA9IDA7DQo+ ICsgICAgfQ0KPiArDQo+ICsgICAgaWYgKHN0b3ApDQo+ICsgICAgICAgIGxpbmstPmR1bXBfcGNt ID0gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGF2X2NvbGQgaW50IGxpbmtfaW5pdF9kdW1wX3Bj bShBVkZpbHRlckxpbmsgKmxpbmspDQo+ICt7DQo+ICsgICAgY2hhciBwYXRoWzQwOTZdOw0KPiAr ICAgIGludCBmZCwgaTsNCj4gKw0KPiArICAgIGxpbmstPm5iX2R1bXBfcGNtX2ZkcyA9IGF2X3Nh bXBsZV9mbXRfaXNfcGxhbmFyKGxpbmstPmZvcm1hdCk/IGxpbmstPmNoX2xheW91dC5uYl9jaGFu bmVscyA6IDE7DQo+ICsgICAgbGluay0+ZHVtcF9wY21fZmRzID0gYXZfbWFsbG9jX2FycmF5KGxp bmstPm5iX2R1bXBfcGNtX2Zkcywgc2l6ZW9mKGludCkpOw0KPiArICAgIGlmICghbGluay0+ZHVt cF9wY21fZmRzKQ0KPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOw0KPiArDQo+ICsg ICAgZm9yIChpID0gMDsgaSA8IGxpbmstPm5iX2R1bXBfcGNtX2ZkczsgaSsrKSB7DQo+ICsgICAg ICAgIHNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwgRkZNUEVHX0RVTVBESVIiJS4xNnMtJS44 cy0lZC5wY20iLCBsaW5rLT5zcmMtPm5hbWUsIGxpbmstPmRzdC0+bmFtZSwgaSk7DQo+ICsgICAg ICAgIGZkID0gb3BlbihwYXRoLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX1RSVU5DLCAwNjQ0KTsN Cj4gKyAgICAgICAgaWYgKGZkIDwgMCkgew0KPiArICAgICAgICAgICAgbGlua191bmluaXRfZHVt cF9wY20obGluaywgMSk7DQo+ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihlcnJubyk7DQo+ ICsgICAgICAgIH0NCj4gKyAgICAgICAgbGluay0+ZHVtcF9wY21fZmRzW2ldID0gZmQ7DQo+ICsg ICAgfQ0KPiArDQo+ICsgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgZmls dGVyX3NldF9kdW1wX3BjbShBVkZpbHRlckNvbnRleHQgKmZpbHRlciwgY29uc3QgY2hhciAqdGFy Z2V0LCBpbnQgc2V0KQ0KPiArew0KPiArICAgIGludCBpOw0KPiArDQo+ICsgICAgZm9yIChpID0g MDsgaSA8IGZpbHRlci0+bmJfb3V0cHV0czsgaSsrKSB7DQo+ICsgICAgICAgIEFWRmlsdGVyTGlu ayAqbGluayA9IGZpbHRlci0+b3V0cHV0c1tpXTsNCj4gKyAgICAgICAgaWYgKCF0YXJnZXQgfHwg IXN0cmNtcChsaW5rLT5kc3QtPm5hbWUsIHRhcmdldCkpIHsNCj4gKyAgICAgICAgICAgIGlmIChz ZXQpIHsNCj4gKyAgICAgICAgICAgICAgICBsaW5rLT5kdW1wX3BjbSA9IDE7DQo+ICsgICAgICAg ICAgICB9IGVsc2UNCj4gKyAgICAgICAgICAgICAgICBsaW5rX3VuaW5pdF9kdW1wX3BjbShsaW5r LCAxKTsNCj4gKw0KPiArICAgICAgICAgICAgaWYgKHRhcmdldCkNCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gMDsNCj4gKyAgICAgICAgfQ0KPiArICAgIH0NCj4gKw0KPiArICAgIHJldHVybiB0 YXJnZXQgPyBBVkVSUk9SKEVJTlZBTCkgOiAwOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgdm9pZCBs aW5rX2ZyZWUoQVZGaWx0ZXJMaW5rICoqbGluaykNCj4gIHsNCj4gICAgICBGaWx0ZXJMaW5rSW50 ZXJuYWwgKmxpOw0KPiBAQCAtMjA4LDYgKzI3MSw4IEBAIHN0YXRpYyB2b2lkIGxpbmtfZnJlZShB VkZpbHRlckxpbmsgKipsaW5rKQ0KPiAgICAgIGF2X2NoYW5uZWxfbGF5b3V0X3VuaW5pdCgmKCps aW5rKS0+Y2hfbGF5b3V0KTsNCj4gICAgICBhdl9mcmFtZV9zaWRlX2RhdGFfZnJlZSgmKCpsaW5r KS0+c2lkZV9kYXRhLCAmKCpsaW5rKS0+bmJfc2lkZV9kYXRhKTsNCj4NCj4gKyAgICBsaW5rX3Vu aW5pdF9kdW1wX3BjbSgqbGluaywgMSk7DQo+ICsNCj4gICAgICBhdl9idWZmZXJfdW5yZWYoJmxp LT5sLmh3X2ZyYW1lc19jdHgpOw0KPg0KPiAgICAgIGF2X2ZyZWVwKGxpbmspOw0KPiBAQCAtNjE3 LDYgKzY4MiwxMCBAQCBpbnQgYXZmaWx0ZXJfcHJvY2Vzc19jb21tYW5kKEFWRmlsdGVyQ29udGV4 dCAqZmlsdGVyLCBjb25zdCBjaGFyICpjbWQsIGNvbnN0IGNoYQ0KPiAgICAgICAgICBpZiAocmVz ID09IGxvY2FsX3JlcykNCj4gICAgICAgICAgICAgIGF2X2xvZyhmaWx0ZXIsIEFWX0xPR19JTkZP LCAiJXMiLCByZXMpOw0KPiAgICAgICAgICByZXR1cm4gMDsNCj4gKyAgICB9ZWxzZSBpZighc3Ry Y21wKGNtZCwgImR1bXBfcmF3X3N0YXJ0IikpIHsNCj4gKyAgICAgICAgcmV0dXJuIGZpbHRlcl9z ZXRfZHVtcF9wY20oZmlsdGVyLCBhcmcsIDEpOw0KPiArICAgIH1lbHNlIGlmKCFzdHJjbXAoY21k LCAiZHVtcF9yYXdfc3RvcCIpKSB7DQo+ICsgICAgICAgIHJldHVybiBmaWx0ZXJfc2V0X2R1bXBf cGNtKGZpbHRlciwgYXJnLCAwKTsNCj4gICAgICB9ZWxzZSBpZighc3RyY21wKGNtZCwgImVuYWJs ZSIpKSB7DQo+ICAgICAgICAgIHJldHVybiBzZXRfZW5hYmxlX2V4cHIoZmZmaWx0ZXJjdHgoZmls dGVyKSwgYXJnKTsNCj4gICAgICB9ZWxzZSBpZiAoZmZmaWx0ZXIoZmlsdGVyLT5maWx0ZXIpLT5w cm9jZXNzX2NvbW1hbmQpIHsNCj4gQEAgLTEwNTAsNiArMTExOSw0MSBAQCBmYWlsOg0KPiAgICAg IHJldHVybiByZXQ7DQo+ICB9DQo+DQo+ICtzdGF0aWMgaW50IGxpbmtfZHVtcF9mcmFtZShBVkZp bHRlckxpbmsgKmxpbmssIEFWRnJhbWUgKmZyYW1lKQ0KPiArew0KPiArICAgIGludCBzYW1wbGVz X3NpemUsIHJldDsNCj4gKw0KPiArICAgIGlmICghbGluay0+ZHVtcF9wY21fZmRzKSB7DQo+ICsg ICAgICAgIHJldCA9IGxpbmtfaW5pdF9kdW1wX3BjbShsaW5rKTsNCj4gKyAgICAgICAgaWYgKHJl dCA8IDApDQo+ICsgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiArICAgIH0NCj4gKw0KPiArICAg IHNhbXBsZXNfc2l6ZSA9IGF2X2dldF9ieXRlc19wZXJfc2FtcGxlKGZyYW1lLT5mb3JtYXQpICog ZnJhbWUtPm5iX3NhbXBsZXM7DQo+ICsgICAgaWYgKGF2X3NhbXBsZV9mbXRfaXNfcGxhbmFyKGZy YW1lLT5mb3JtYXQpKSB7DQo+ICsgICAgICAgIGludCBpOw0KPiArICAgICAgICBmb3IgKGkgPSAw OyBpIDwgbGluay0+bmJfZHVtcF9wY21fZmRzICYmIGkgPCBmcmFtZS0+Y2hfbGF5b3V0Lm5iX2No YW5uZWxzOyBpKyspIHsNCj4gKyAgICAgICAgICAgIGlmIChpIDwgQVZfTlVNX0RBVEFfUE9JTlRF UlMpIHsNCj4gKyAgICAgICAgICAgICAgICByZXQgPSB3cml0ZShsaW5rLT5kdW1wX3BjbV9mZHNb aV0sIGZyYW1lLT5kYXRhW2ldLCBzYW1wbGVzX3NpemUpOw0KPiArICAgICAgICAgICAgfSBlbHNl DQo+ICsgICAgICAgICAgICAgICAgcmV0ID0gd3JpdGUobGluay0+ZHVtcF9wY21fZmRzW2ldLCBm cmFtZS0+ZXh0ZW5kZWRfZGF0YVtpIC0gQVZfTlVNX0RBVEFfUE9JTlRFUlNdLCBzYW1wbGVzX3Np emUpOw0KPiArDQo+ICsgICAgICAgICAgICBpZiAocmV0IDwgMCkNCj4gKyAgICAgICAgICAgICAg ICBnb3RvIGVycjsNCj4gKyAgICAgICAgfQ0KPiArICAgIH0gZWxzZSB7DQo+ICsgICAgICAgIHJl dCA9IHdyaXRlKGxpbmstPmR1bXBfcGNtX2Zkc1swXSwgZnJhbWUtPmRhdGFbMF0sIHNhbXBsZXNf c2l6ZSAqIGZyYW1lLT5jaF9sYXlvdXQubmJfY2hhbm5lbHMpOw0KPiArICAgICAgICBpZiAocmV0 IDwgMCkNCj4gKyAgICAgICAgICAgIGdvdG8gZXJyOw0KPiArDQo+ICsgICAgfQ0KPiArDQo+ICsg ICAgcmV0dXJuIDA7DQo+ICtlcnI6DQo+ICsgICAgbGlua191bmluaXRfZHVtcF9wY20obGluaywg MSk7DQo+ICsgICAgcmV0dXJuIEFWRVJST1IoZXJybm8pOw0KPiArfQ0KPiArDQo+ICBpbnQgZmZf ZmlsdGVyX2ZyYW1lKEFWRmlsdGVyTGluayAqbGluaywgQVZGcmFtZSAqZnJhbWUpDQo+ICB7DQo+ ICAgICAgRmlsdGVyTGlua0ludGVybmFsICogY29uc3QgbGkgPSBmZl9saW5rX2ludGVybmFsKGxp bmspOw0KPiBAQCAtMTA4Nyw2ICsxMTkxLDEyIEBAIGludCBmZl9maWx0ZXJfZnJhbWUoQVZGaWx0 ZXJMaW5rICpsaW5rLCBBVkZyYW1lICpmcmFtZSkNCj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxpbmstPnRpbWVfYmFzZSk7DQo+ICAgICAgfQ0KPg0KPiArICAgIGlm IChsaW5rLT5kdW1wX3BjbSAmJiBsaW5rLT50eXBlID09IEFWTUVESUFfVFlQRV9BVURJTykgew0K PiArICAgICAgICByZXQgPSBsaW5rX2R1bXBfZnJhbWUobGluaywgZnJhbWUpOw0KPiArICAgICAg ICBpZiAocmV0IDwgMCkNCj4gKyAgICAgICAgICAgIGF2X2xvZyhsaW5rLT5kc3QsIEFWX0xPR19F UlJPUiwgIkR1bXAgcGNtIGZpbGVzIGZhaWxlZCB3aXRoICVkXG4iLCByZXQpOw0KPiArICAgIH0N Cj4gKw0KPiAgICAgIGxpLT5mcmFtZV9ibG9ja2VkX2luID0gbGktPmZyYW1lX3dhbnRlZF9vdXQg PSAwOw0KPiAgICAgIGxpLT5sLmZyYW1lX2NvdW50X2luKys7DQo+ICAgICAgbGktPmwuc2FtcGxl X2NvdW50X2luICs9IGZyYW1lLT5uYl9zYW1wbGVzOw0KPiBkaWZmIC0tZ2l0IGEvbGliYXZmaWx0 ZXIvYXZmaWx0ZXIuaCBiL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmgNCj4gaW5kZXggYTg5ZDNjZjY1 OC4uNmQwNGI5ZGE3NyAxMDA2NDQNCj4gLS0tIGEvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaA0KPiAr KysgYi9saWJhdmZpbHRlci9hdmZpbHRlci5oDQo+IEBAIC00MDQsNiArNDA0LDEwIEBAIHN0cnVj dCBBVkZpbHRlckxpbmsgew0KPiAgICAgIGludCBzYW1wbGVfcmF0ZTsgICAgICAgICAgICAvLy88 IHNhbXBsZXMgcGVyIHNlY29uZA0KPiAgICAgIEFWQ2hhbm5lbExheW91dCBjaF9sYXlvdXQ7ICAv Ly88IGNoYW5uZWwgbGF5b3V0IG9mIGN1cnJlbnQgYnVmZmVyIChzZWUgbGliYXZ1dGlsL2NoYW5u ZWxfbGF5b3V0LmgpDQo+DQo+ICsgICAgaW50ICAgICAgICBkdW1wX3BjbTsgICAgICAgLy8vPCBm bGFnIHRvIGR1bXAgcGNtDQo+ICsgICAgaW50ICAgICAgICAqZHVtcF9wY21fZmRzOyAgIC8vLzwg ZHVtcCBmaWxlcw0KPiArICAgIHVuc2lnbmVkIG5iX2R1bXBfcGNtX2ZkczsgICAvLy88IG51bWJl ciBvZiBkdW1wIGZpbGUNCj4gKw0KPiAgICAgIC8qKg0KPiAgICAgICAqIERlZmluZSB0aGUgdGlt ZSBiYXNlIHVzZWQgYnkgdGhlIFBUUyBvZiB0aGUgZnJhbWVzL3NhbXBsZXMNCj4gICAgICAgKiB3 aGljaCB3aWxsIHBhc3MgdGhyb3VnaCB0aGlzIGxpbmsuDQo+IC0tDQo+IDIuMzQuMQ0KPg0KDQpD YW4ndCB5b3UgdXNlIHRoZSBhc3BsaXQgZmlsdGVyIHRvIGR1cGxpY2F0ZSB0aGUgYXVkaW8/DQoN Ci0gQW5kcmVhcw0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXw0KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdA0KZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcN Cmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbA0KDQpUbyB1 bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwNCmZmbXBlZy1kZXZlbC1yZXF1 ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuDQpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBs aXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9y IGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1 YnNjcmliZSIuCg==