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 1E1E64C5F5
	for <ffmpegdev@gitmailbox.com>; Mon, 26 May 2025 07:57:19 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id DEDFA68D37F;
	Mon, 26 May 2025 10:57:14 +0300 (EEST)
Received: from SY5PR01CU010.outbound.protection.outlook.com
 (mail-australiaeastazolkn19012050.outbound.protection.outlook.com
 [52.103.72.50])
 by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id B496A68CEEE
 for <ffmpeg-devel@ffmpeg.org>; Mon, 26 May 2025 10:57:06 +0300 (EEST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=MUBHc7DXdp3H9G/NPEYp+ktbu1en+UBJuPu/K2vtznv/kyTfhOpoEcJ2mJ/0tWLvVfyweup5mTz/Dfnhuhl5HEcAduWXFc7mOL9qiCJch/77PlTdMAVJiQOFYDbc06e40gOV7N2ZqEjL6tK6PqFhiIZwqd/xzCVHTZOWZOXcj8muxGfsaubpKh7/Tp4ekBQmgoYljv0+ZhdHHqaJCftawEdA+3ydkJWA70MHOXcQZyD2b9EHzgHIQIR35cHlSHnqr06+TSKJ85cTCincOQpAJ6JZVUZ09IENdAPNbBqsRREPYHHQoMizzhVm6CeOZuO4vRDnYoSLbjBtqP2C1JkhFQ==
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=xsG6Hbr/NAPqVvvmE0+SDV53cSE9PF7qM6Jjoi3fZwk=;
 b=TZG+gWZBDKHGsfVG2QsYbJiminswgy6zKPjZWtHo+mpdQXaIO6JkEnobHX6Yk96Pqe6zwv5Wr0EtGaLn8In8Dgeug5kDOG2WpY4qm47RjvJr7QE4qvKUurNRU4JnQe1de3qCOz6ZWMUbpIzvHq3oG9WNeIVaq1Wc3k8fryEZMQPjBO7aTZEEBeiV9iPPW9w9YBLrxQ+mlkJUo9Sw8qKPLosqujzaZGNpu0wBW8owHoHML+eaevZWzWJkzLONSP8sTt6WchyHmvWkQIumT7sf+RtTBa0Ch9Pp9olSHsICeLDk7q3Qn6pgE1Mzkq1L/Sbmy/Hq8+ks27wWj4hwIyaqhw==
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=xsG6Hbr/NAPqVvvmE0+SDV53cSE9PF7qM6Jjoi3fZwk=;
 b=E6YKRpcSyXXfvcL3/suAtO3njujGbbhi5W3BFp51GUaBHM5e/bDCLctr7Ir0J7ycP770vB/xCRfpuSrKV7rn/3JcilnHRCMUDzrdk3RBV5/j6GU3dLbd0S4MbWlUvsv6fgNAATTTKwmVXFuTfdYTvXTpENlSRf/lpUVVZmApD7OTEnkcbsmlF6P+t+lyz+xSqQgEEc666rdRW7JPNOG6FIZLdIEYnIcT3SCY6AWmlRnRdVbr8IV7kkzdm/MN5t//l7zhJYyP35WTTJpZnDVnFINXh1y2/jCk54fgR1nxuhiIPS+0u+fUQ/L/TZwfILvSSw80u3/s9QBEXmR0vWdLrA==
Received: from MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM (2603:10c6:220:be::15)
 by SY7P282MB4373.AUSP282.PROD.OUTLOOK.COM (2603:10c6:10:274::13) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.24; Mon, 26 May
 2025 07:57:00 +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:57:00 +0000
From: Yibo Fang <blueybf777@outlook.com>
To: "ffmpeg-devel@ffmpeg.org" <ffmpeg-devel@ffmpeg.org>
Thread-Topic: [FFmpeg-devel, v3, 0/2] avfilter: add PCM dumping between filters
 for audio debugging
Thread-Index: AQHbzhPCX8Qk88yzh0S698qKwaBHyw==
Date: Mon, 26 May 2025 07:57:00 +0000
Message-ID: <MEYP282MB18789A571C9E5354D966D4A08865A@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM>
References: <MEYP282MB18784DCA03D764E54E08FC8D88BB2@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM>
 <AS8P250MB0744B9A650221901E60022778F842@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM>
 <MEYP282MB1878FF228716762A576B6BD38865A@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM>
 <MEYP282MB1878E2E6E43B5BA206A78E2F8865A@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM>
In-Reply-To: <MEYP282MB1878E2E6E43B5BA206A78E2F8865A@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_|SY7P282MB4373:EE_
x-ms-office365-filtering-correlation-id: c7fe1987-2bd9-469e-b715-08dd9c2ae55d
x-microsoft-antispam: BCL:0;
 ARA:14566002|8062599006|8060799009|7092599006|9400799033|12050799012|41001999006|19110799006|15080799009|15030799003|461199028|26104999006|440099028|3412199025|12091999003|10035399007|56899033|102099032;
x-microsoft-antispam-message-info: =?big5?B?Wkl3QTdPQWtlUzRDUllaQnVUR1VrMDRtVTZQMEU0VEQwclNHZXdsTVZvQ3BOVkwr?=
 =?big5?B?OHpTWmJudmQ5Skk2clYvYUxzd2p2ZmMvY1N4THlGRnpoVkRYbUE0WklXVVc3c0d0?=
 =?big5?B?R2hjMTltOWpWc05qZXNHdndsaTJqWHQ3dFozdzJJWTVnNi9jMk9uTFlNM2psd0FS?=
 =?big5?B?N0RySTVpWmNIRENPTGtSWjdTOHZacjY5RS95MmFEem41VFpJUWwzQTR5TGVUaGoy?=
 =?big5?B?QkEvaTkzWko5YWQvWXljVFhSY0pyaVU0eGNDS1YzeTU0QWp5b1B2OEhiTS93SFoz?=
 =?big5?B?c2NlLzlROWs5NS9TTU1saVAxRnFUNElmS2dyVElIVUpuYlkxak5DRUw2KzV6eG5Z?=
 =?big5?B?b3Fqbk9zN3ZvNnUraTJwL0l0YVdyL2RaM1lvdnpDTlBwcmJ2Y0kxM2lma3k3SkpT?=
 =?big5?B?YWJjNTJVOFUxWGp3Yy8zSFpIZHZpK1pSTkhyOGRvbktxNXhWUVlzWGI0cWlFZVNr?=
 =?big5?B?bmhqZkkwWDlEZE00Vld6UlFyanN3TERuTjAvSldGZDF6RFBRY3l4VnpIeUlvSDZW?=
 =?big5?B?VHN4a3E4MzNONUEyS0lWZU94MkJZSCtTTlBwbko2Wmw0T050VWVWaXdvUVVHTG53?=
 =?big5?B?dWdTakhaa0IzbktTWlVDb2ZMekFoZnpvV2ZVK0RLUWZvM1U2cHdia3hyR0lldkNl?=
 =?big5?B?d3gzQjFHY3ZENmVZOHcrSFBrY2JOOGRId01RbnRCdDdEM1JjWlZaQWhCaWU2MWNw?=
 =?big5?B?WmFEcEF2RGxqdmdqL2tic2s5clhuL0lmcFQzK3RsQ2FiUUFaZWZFMmxweW96NDFX?=
 =?big5?B?ajRQQ3ZZKzlQTm14eUo3bEtWSHZjZkVJTnFSQzFqYmw5OXlQZytKNnZCNTBudG11?=
 =?big5?B?V0h2R2NoTjZoL2I1QlJ1RVdZdFFWQlovQnh3bFpKY1crWERYRHJ5aGRydlo2azBD?=
 =?big5?B?VlNnbUtUd3QreTgyMWxyZ3kzY1lPRnFCOFRNOU93YUpGbmZTYUE2SkI4ckFQNGVj?=
 =?big5?B?RGpjdUtNRlFCWTM1NWNhcUs5MG05ZDZQRGcyYWFRWGlBVm5TNDBWWU13TWVHWFpk?=
 =?big5?B?dFBxZnlrdW5qYTNXSUVMNDlMeXdVQTFhQUtWSWRMRS9namRpd24rN3VyVElBTjE5?=
 =?big5?B?eHVmZkphdGNvVmJ2NFE1T2dXRTF3QUg5b3grNHpuNnR4TU81WS9aQlgrNE55T3FZ?=
 =?big5?B?QWFYbjdMVnNER0FMY0p0M09GU0crTGFldDBGRWdKVEFyV0xUNGczNitPbkg5NEp3?=
 =?big5?B?d2pjMUNQVXA1NFV6OUNON1hhaXZ2NEFZRFRtMUVBamFrOUQyTnl3djhwK3l5dXBU?=
 =?big5?B?anhSR0VFdEowazVGYlk3RUNwRmZ4eUd6eTB3bFdaTGpBT1ZLaFpCYTRIaXFCRkI1?=
 =?big5?B?SXpGTW9HOEdqN0hwWnQvU0lHcmtTMUp0MnZYN0MvZ0k0bmoyNENoeFVFN08vaFhT?=
 =?big5?B?a0E0NUdyMXBFczlNcWh2cis3VmRMRFdKeGRudTl3ZWhQekwyNFNVWnhRc0phME1V?=
 =?big5?B?c080TW16UEQ1UWVSQktESlNvcy9wVjdSSFRZRWhGMzhTK2p3SUdUU0xva3RIcCsr?=
 =?big5?B?RWVaSE8vZk4ydW0zbTJEZkxKd3FZdWxlRlY3YXI4VTBDWFhibThwd1M2b0phNm5U?=
 =?big5?B?cjdHb1RGVkJyRnFGcVJJSVFuMTRJalNXS1N5WENoMmY2b1hvZUYvaW5Da2ZUM0xR?=
 =?big5?B?dEhCZ3NGWHJ4NmZaeXAxdjJtNWRJenJ4RzE3THl2czdxTFBFWm5KeUoyQTFJaEpQ?=
 =?big5?B?Q0k5TW0rT29zSmJzNlFRTGpadE9RNWlPRmE4OXR6NURkN216TVR0QlZ6bFBmRWp5?=
 =?big5?B?cVI5anVyWjZ4TlhXYWI4SkszMUg0UzZJY2o1WFJ3eXVVNjkrZHc9PQ==?=
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?big5?B?VStQak8xeXNpQUVFbU9pZFM2WmhQbG5wYkwrU1hWOWZHNCtLb3ZFZitNOUhzdUdJ?=
 =?big5?B?S2pPTHJvTDBvbll4YUtPOWk4L0s4QzE3dFBlODhnbkJiRzFXdFJwcU1YSG1GNDZ4?=
 =?big5?B?TkdHZmlrcUpEVElkSkp3Z3BQN0RDQi95RU0yK09tZmV4Q1RpYVRKTFlIU0pJU1Ax?=
 =?big5?B?dWZOMDdWSmh2TU5rM2xaV1JNYkJTcG1QTHRGNGl6dUNSZ1N4cit3UlJzQmF4QkI4?=
 =?big5?B?czRvYW5McUxuRUVyQ1dudktMa2NWTWVZeEVJd1RyU2NqVGdrbTQzaDJRWFVxQ0xa?=
 =?big5?B?MEl6VFREUWlKTEljQnJWSXJyNVRTeG1HRDdEcEowaEl4Rkc3UjBuTVg1engyOWU4?=
 =?big5?B?MnVwdU9WRTRUdkt0aHQxQSs1SExLS2ViSDJZRnNxVStrM0VDN3ZReU9FOENqeXJy?=
 =?big5?B?cXRncHNNS2lDSUN2VjlxQXJmbEEwMDFHQTZHZ2htSjZnRisvRldPME8zekRONlVi?=
 =?big5?B?ekJ6U3RjOFVuMzY0QTZFMG5SVTQ2OEJvRjRuS3dPRkxTY29Za2gyTWNKQ1RHb3pl?=
 =?big5?B?cm9pQTR4OHlIWFNkZVlkSDkwQ2FQTlRnNXRXNDIvcTRYNmZwRDJ3cGhsb3FXOGls?=
 =?big5?B?SFRFYkpjcVR0WFc5dVVPMGpIT2Z3N0dUVmMvVm9HTUtVUW5HUWk2K3VlQmdGU3Ns?=
 =?big5?B?NVJEN2REWDQvRWdPVWFLQThlT05OVEpIdFNMT2JIMEwwZEpXRXBJQzhlUWVVZ3Fz?=
 =?big5?B?clpxUnhWQkdwSFJ3RWZadklxTUQvU1RvUDZzT0lwZUZDNG54d0NQTWVVa2o4N0R2?=
 =?big5?B?aVhwVVNZYWVoSFhxQUs2dERIcUlxdW80MnFUcjgvc24zWGtIZTNzVEpYOW0vaDBT?=
 =?big5?B?ME02TUxFZHJJQ3F1blpkUHljNDZ5dzQya2h1bVZOVWRack1mYkxjY3g5ZWgxVHpD?=
 =?big5?B?RWpMc1V3L0VTRzVjNUZNWUJ0OFoyUDhLTjJZcjdWMUx5V0haZkloSWFObzFYTFlw?=
 =?big5?B?VXRQdXpSS0lUZTlQYzUwVHF3YXNDMFY2UWtQUDUyV0twZytlT2Y4cStsZTVnK2hp?=
 =?big5?B?U2xjUnpLOWZZSFhVNTFkQmo5TzFaT1lvaGQ2Q1B4dENqZmIrSkFKY242UHpoVmM2?=
 =?big5?B?N3JmK2trZjU3d3lkVHZFRkhWa3BNTFhLQTlVajNlNnQwUFFUWXkvdVVzSzY5akFV?=
 =?big5?B?RW8rdy9UclFNTStCTysxZjlvQlBaYWlHVm5jV1RNWUNRQVpuR3hmWFphT1MzdkhR?=
 =?big5?B?eFlLWTFYODVyaFhCUmczYmFXVUlaYWNRWUYwdEZpU0txRFl4UTJDb2laSFd3MFNY?=
 =?big5?B?RTh3MVh6akxpeEdXNDY2QWNTRUh2Q1BpS2hOeHJ2UUhKNUpHMzh6T3dQQ2k1UFdi?=
 =?big5?B?WjNtdVhUTWVTU0lKQm9yT3lzMkxZckVzZVp4UG9kbCtVdDR6TU5Tb01yYUIvYUFw?=
 =?big5?B?aDVHdWN4MGtNSHE1UGpOSVk3UmIvS2YrbnNsVmNtQVpLS2RXRGlRR2dZL0tGZ0hR?=
 =?big5?B?N1Nad1hGaDRoeGlYc05LTzhSeGJLalVFcDFFSGhiUnd6SjVMS2E5VmhmS1RMOWhW?=
 =?big5?B?cGFuYVB3ZzVmc0FrUEthYW42c3EvSHVIZTFEMG5Eek5rSXFqdkkrR0NsS3g0YmMv?=
 =?big5?Q?vJr66sZ8HHw=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: c7fe1987-2bd9-469e-b715-08dd9c2ae55d
X-MS-Exchange-CrossTenant-originalarrivaltime: 26 May 2025 07:57:00.6587 (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: SY7P282MB4373
X-Content-Filtered-By: Mailman/MimeDel 2.1.29
Subject: [FFmpeg-devel] [FFmpeg-devel, v3,
 0/2] 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="big5"
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/MEYP282MB18789A571C9E5354D966D4A08865A@MEYP282MB1878.AUSP282.PROD.OUTLOOK.COM/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

DQpGcm9tOiBZaWJvIEZhbmcgPGJsdWV5YmY3NzdAb3V0bG9vay5jb20+DQpTdWJqZWN0OiBbRkZt
cGVnLWRldmVsLHYzLDAvMl0gYXZmaWx0ZXI6IGFkZCBQQ00gZHVtcGluZyBiZXR3ZWVuIGZpbHRl
cnMgZm9yIGF1ZGlvIGRlYnVnZ2luZw0KRGF0ZTogV2VkLCAyMyBBcHIgMjAyNSAxMDo1NzowMCAr
MDgwMA0KTWVzc2FnZS1JZDogPGNvdmVyLjAuMkBmZm1wZWc+DQoNClRoaXMgc2VyaWVzIGFkZHMg
YSBkZWJ1Z2dpbmcgZmVhdHVyZSB0aGF0IGxldHMgZGV2ZWxvcGVycyBkdW1wIHJhdw0KUENNIGF1
ZGlvIGJldHdlZW4gZmlsdGVycy4gIFRoZSBkYXRhIGFyZSB3cml0dGVuIHRvIGZpbGVzIGluIGEg
dXNlci0NCnNlbGVjdGVkIGRpcmVjdG9yeSB2aWEgdHdvIG5ldyBjb21tYW5kczoNCg0KICAgIGR1
bXBfcmF3X3N0YXJ0IGZpbGU9L3BhdGgvdG8vZGlyLw0KICAgIGR1bXBfcmF3X3N0b3ANCg0KUGxh
bmFyIGF1ZGlvIGlzIGF1dG9tYXRpY2FsbHkgaW50ZXJsZWF2ZWQ7IG9ubHkgYXVkaW8gbGlua3Mg
YXJlDQphZmZlY3RlZC4gIFBhdGNoIDEvMiBpbXBsZW1lbnRzIHRoZSBmZWF0dXJlLCBwYXRjaCAy
LzIgZG9jdW1lbnRzIGl0Lg0KDQpSZWdhcmRzLA0KWWlibyBGYW5nDQoNCi0tLQ0KDQpGcm9tIDJk
ZjU2ZTc0MjczZDQ3N2FlMjcwMDNlMDk4MTIyMDc0OWE2YjU4Y2YgTW9uIFNlcCAxNyAwMDowMDow
MCAyMDAxDQpGcm9tOiBZaWJvIEZhbmcgPGJsdWV5YmY3NzdAb3V0bG9vay5jb20+DQpEYXRlOiBX
ZWQsIDIzIEFwciAyMDI1IDEwOjU4OjU1ICswODAwDQpTdWJqZWN0OiBbUEFUQ0ggMS8yXSBhdmZp
bHRlcjogYWRkIFBDTSBkdW1waW5nIGJldHdlZW4gZmlsdGVycyBmb3IgYXVkaW8NCiBkZWJ1Z2dp
bmcNCg0KVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIFBDTSBkdW1waW5nIHN1cHBvcnQgYmV0d2VlbiBB
VkZpbHRlciBsaW5rcywNCmludGVuZGVkIGZvciBhdWRpbyBkZWJ1Z2dpbmcgYW5kIGZpbHRlci1n
cmFwaCBpbnNwZWN0aW9uLg0KDQpUd28gZmlsdGVyIGNvbW1hbmRzIGFyZSBhZGRlZDoNCg0KICAg
IGR1bXBfcmF3X3N0YXJ0IGZpbGU9L3BhdGgvdG8vb3V0cHV0L2Rpci8NCiAgICBkdW1wX3Jhd19z
dG9wDQoNCldoZW4gZHVtcGluZyBpcyBlbmFibGVkLCBhdWRpbyBsZWF2aW5nIHRoZSBzZWxlY3Rl
ZCBmaWx0ZXIgb3V0cHV0IGlzDQp3cml0dGVuIHRvIGFuIGF1dG9tYXRpY2FsbHkgbmFtZWQgZmls
ZToNCg0KICAgIDxzcmNfZmlsdGVyPi08ZHN0X2ZpbHRlcj4ucGNtDQoNClBsYW5hciBmb3JtYXRz
IGFyZSBjb252ZXJ0ZWQgdG8gcGFja2VkLiAgRmlsZSBkZXNjcmlwdG9ycyBhcmUgb3BlbmVkDQpv
biBkZW1hbmQgYW5kIGNsb3NlZCBhdXRvbWF0aWNhbGx5LiAgV29ya3Mgb25seSBvbiBhdWRpbyBs
aW5rcy4NCg0KRXhhbXBsZSAoQyBBUEkpOg0KICAgIGF2ZmlsdGVyX3Byb2Nlc3NfY29tbWFuZChm
aWx0ZXIsICJkdW1wX3Jhd19zdGFydCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJm
aWxlPS90bXAvIiwgTlVMTCwgMCwgMCk7DQoNClNpZ25lZC1vZmYtYnk6IFlpYm8gRmFuZyA8Ymx1
ZXliZjc3N0BvdXRsb29rLmNvbT4NCi0tLQ0KIGxpYmF2ZmlsdGVyL2F2ZmlsdGVyLmMgfCAxNDQg
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiBsaWJhdmZpbHRlci9h
dmZpbHRlci5oIHwgICA1ICsrDQogMiBmaWxlcyBjaGFuZ2VkLCAxNDkgaW5zZXJ0aW9ucygrKQ0K
DQpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuYyBiL2xpYmF2ZmlsdGVyL2F2Zmls
dGVyLmMNCmluZGV4IDY0YzEwNzVjNDAuLmI3MDM0NTY5ZGIgMTAwNjQ0DQotLS0gYS9saWJhdmZp
bHRlci9hdmZpbHRlci5jDQorKysgYi9saWJhdmZpbHRlci9hdmZpbHRlci5jDQpAQCAtMTksNiAr
MTksOSBAQA0KICAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0ENCiAgKi8NCg0KKyNpbmNsdWRlIDxmY250
bC5oPg0KKyNpbmNsdWRlIDx1bmlzdGQuaD4NCisNCiAjaW5jbHVkZSAibGliYXZ1dGlsL2F2YXNz
ZXJ0LmgiDQogI2luY2x1ZGUgImxpYmF2dXRpbC9hdnN0cmluZy5oIg0KICNpbmNsdWRlICJsaWJh
dnV0aWwvYnByaW50LmgiDQpAQA0KICAgICByZXR1cm4gMDsNCiB9DQoNCisvKiAtLS0tLS0tLS0t
IFBDTSBkdW1wIGhlbHBlcnMgLS0tLS0tLS0tLSAqLw0KKw0KK3N0YXRpYyBhdl9jb2xkIHZvaWQg
bGlua191bmluaXRfZHVtcF9wY20oQVZGaWx0ZXJMaW5rICpsaW5rKQ0KK3sNCisgICAgaWYgKGxp
bmstPmR1bXBfcGNtX2Zkcykgew0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxp
bmstPm5iX2R1bXBfcGNtX2ZkczsgaSsrKQ0KKyAgICAgICAgICAgIGlmIChsaW5rLT5kdW1wX3Bj
bV9mZHNbaV0gPj0gMCkNCisgICAgICAgICAgICAgICAgY2xvc2UobGluay0+ZHVtcF9wY21fZmRz
W2ldKTsNCisgICAgICAgIGF2X2ZyZWVwKCZsaW5rLT5kdW1wX3BjbV9mZHMpOw0KKyAgICAgICAg
bGluay0+bmJfZHVtcF9wY21fZmRzID0gMDsNCisgICAgfQ0KKyAgICBhdl9mcmVlcCgmbGluay0+
ZHVtcF9wY21fcGF0aCk7DQorICAgIGxpbmstPmR1bXBfcGNtID0gMDsNCit9DQorDQorc3RhdGlj
IGF2X2NvbGQgaW50IGxpbmtfaW5pdF9kdW1wX3BjbShBVkZpbHRlckxpbmsgKmxpbmspDQorew0K
KyAgICAvKiBidWlsZCBmdWxsIHBhdGggIjxkaXI+LzxzcmM+LTxkc3Q+LnBjbSIgKi8NCisgICAg
Y29uc3QgY2hhciAqZGlyID0gbGluay0+ZHVtcF9wY21fcGF0aDsNCisgICAgY29uc3QgY2hhciAq
c2VwID0gZGlyW3N0cmxlbihkaXIpIC0gMV0gPT0gJy8nID8gIiIgOiAiLyI7DQorICAgIGNoYXIg
cGF0aFs0MDk2XTsNCisgICAgc25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgpLCAiJXMlcyUuMTZz
LSUuOHMucGNtIiwNCisgICAgICAgICAgICAgZGlyLCBzZXAsIGxpbmstPnNyYy0+bmFtZSwgbGlu
ay0+ZHN0LT5uYW1lKTsNCisNCisgICAgbGluay0+bmJfZHVtcF9wY21fZmRzID0gMTsNCisgICAg
bGluay0+ZHVtcF9wY21fZmRzID0gYXZfbWFsbG9jKHNpemVvZihpbnQpKTsNCisgICAgaWYgKCFs
aW5rLT5kdW1wX3BjbV9mZHMpDQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOw0KKw0K
KyAgICBpbnQgZmQgPSBvcGVuKHBhdGgsIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJVTkMgfCBP
X0VYQ0wsIDA2NDQpOw0KKyAgICBpZiAoZmQgPCAwKSB7DQorICAgICAgICBsaW5rX3VuaW5pdF9k
dW1wX3BjbShsaW5rKTsNCisgICAgICAgIHJldHVybiBBVkVSUk9SKGVycm5vKTsNCisgICAgfQ0K
KyAgICBsaW5rLT5kdW1wX3BjbV9mZHNbMF0gPSBmZDsNCisgICAgYXZfbG9nKGxpbmstPmRzdCwg
QVZfTE9HX0lORk8sICJQQ00gZHVtcCBmaWxlOiAlc1xuIiwgcGF0aCk7DQorICAgIHJldHVybiAw
Ow0KK30NCisNCitzdGF0aWMgaW50IGZpbHRlcl9zZXRfZHVtcF9wY20oQVZGaWx0ZXJDb250ZXh0
ICpmLCBjb25zdCBjaGFyICphcmcsIGludCBzZXQpDQorew0KKyAgICBjb25zdCBjaGFyICpwcmVm
aXggPSAiZmlsZT0iOw0KKyAgICBpZiAoIWFyZyB8fCBhdl9zdHJuY2FzZWNtcChhcmcsIHByZWZp
eCwgc3RybGVuKHByZWZpeCkpKSB7DQorICAgICAgICBhdl9sb2coZiwgQVZfTE9HX0VSUk9SLA0K
KyAgICAgICAgICAgICAgICJkdW1wX3Jhd18qIGV4cGVjdHMgYXJndW1lbnQgZmlsZT0vZGlyL1xu
Iik7DQorICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOw0KKyAgICB9DQorICAgIGNvbnN0
IGNoYXIgKmRpciA9IGFyZyArIHN0cmxlbihwcmVmaXgpOw0KKw0KKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IGYtPm5iX291dHB1dHM7IGkrKykgew0KKyAgICAgICAgQVZGaWx0ZXJMaW5rICpsID0g
Zi0+b3V0cHV0c1tpXTsNCisgICAgICAgIGlmIChsLT50eXBlICE9IEFWTUVESUFfVFlQRV9BVURJ
TykNCisgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgIGlmIChzZXQpIHsNCisgICAgICAg
ICAgICBhdl9mcmVlcCgmbC0+ZHVtcF9wY21fcGF0aCk7DQorICAgICAgICAgICAgbC0+ZHVtcF9w
Y21fcGF0aCA9IGF2X3N0cmR1cChkaXIpOw0KKyAgICAgICAgICAgIGlmICghbC0+ZHVtcF9wY21f
cGF0aCkNCisgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsNCisgICAgICAg
ICAgICBsLT5kdW1wX3BjbSA9IDE7DQorICAgICAgICB9IGVsc2UNCisgICAgICAgICAgICBsaW5r
X3VuaW5pdF9kdW1wX3BjbShsKTsNCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorDQorLyog
d3JpdGUgb25lIGZyYW1lICovDQorc3RhdGljIGludCBsaW5rX2R1bXBfZnJhbWUoQVZGaWx0ZXJM
aW5rICpsaW5rLCBBVkZyYW1lICpmcmFtZSkNCit7DQorICAgIGludCByZXQ7DQorICAgIGlmICgh
bGluay0+ZHVtcF9wY21fZmRzICYmDQorICAgICAgICAocmV0ID0gbGlua19pbml0X2R1bXBfcGNt
KGxpbmspKSA8IDApDQorICAgICAgICByZXR1cm4gcmV0Ow0KKw0KKyAgICBjb25zdCBpbnQgY2gg
ICAgID0gZnJhbWUtPmNoX2xheW91dC5uYl9jaGFubmVsczsNCisgICAgY29uc3QgaW50IGJwcyAg
ICA9IGF2X2dldF9ieXRlc19wZXJfc2FtcGxlKGZyYW1lLT5mb3JtYXQpOw0KKyAgICBjb25zdCBp
bnQgbnMgICAgID0gZnJhbWUtPm5iX3NhbXBsZXM7DQorICAgIGNvbnN0IGludCB0b3RsZW4gPSBj
aCAqIG5zICogYnBzOw0KKw0KKyAgICAvKiBpbnRlcmxlYXZlIHBsYW5hciB0byBwYWNrZWQgaWYg
bmVjZXNzYXJ5ICovDQorICAgIGlmIChhdl9zYW1wbGVfZm10X2lzX3BsYW5hcihmcmFtZS0+Zm9y
bWF0KSkgew0KKyAgICAgICAgdWludDhfdCAqYnVmID0gYXZfbWFsbG9jKHRvdGxlbik7DQorICAg
ICAgICBpZiAoIWJ1ZikNCisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOw0KKyAg
ICAgICAgZm9yIChpbnQgcyA9IDA7IHMgPCBuczsgcysrKQ0KKyAgICAgICAgICAgIGZvciAoaW50
IGMgPSAwOyBjIDwgY2g7IGMrKykNCisgICAgICAgICAgICAgICAgbWVtY3B5KGJ1ZiArIChzKmNo
ICsgYykqYnBzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQ4X3QqKWZyYW1lLT5leHRl
bmRlZF9kYXRhW2NdICsgcypicHMsDQorICAgICAgICAgICAgICAgICAgICAgICBicHMpOw0KKyAg
ICAgICAgcmV0ID0gd3JpdGUobGluay0+ZHVtcF9wY21fZmRzWzBdLCBidWYsIHRvdGxlbik7DQor
ICAgICAgICBhdl9mcmVlKGJ1Zik7DQorICAgIH0gZWxzZQ0KKyAgICAgICAgcmV0ID0gd3JpdGUo
bGluay0+ZHVtcF9wY21fZmRzWzBdLCBmcmFtZS0+ZGF0YVswXSwgdG90bGVuKTsNCisNCisgICAg
aWYgKHJldCA8IDApIHsNCisgICAgICAgIGF2X2xvZyhsaW5rLT5kc3QsIEFWX0xPR19FUlJPUiwg
IlBDTSBkdW1wIHdyaXRlIGZhaWxlZDogJXNcbiIsDQorICAgICAgICAgICAgICAgYXZfZXJyMnN0
cihyZXQpKTsNCisgICAgICAgIGxpbmtfdW5pbml0X2R1bXBfcGNtKGxpbmspOw0KKyAgICAgICAg
cmV0dXJuIHJldDsNCisgICAgfQ0KKyAgICByZXR1cm4gMDsNCit9DQorDQogc3RhdGljIHZvaWQg
bGlua19mcmVlKEFWRmlsdGVyTGluayAqKmxpbmspDQogew0KQEANCg0KIGludCBhdmZpbHRlcl9w
cm9jZXNzX2NvbW1hbmQoQVZGaWx0ZXJDb250ZXh0ICpmaWx0ZXIsIGNvbnN0IGNoYXIgKmNtZCwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmFyZywgY2hhciAqcmVz
LCBpbnQgcmVzX2xlbiwgaW50IGZsYWdzKQ0KIHsNCkBADQotICAgICAgICBpZiAocmVzID09IGxv
Y2FsX3JlcykNCi0gICAgICAgICAgICBhdl9sb2coZmlsdGVyLCBBVl9MT0dfSU5GTywgIiVzIiwg
cmVzKTsNCi0gICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgaWYgKHJlcyA9PSBsb2NhbF9yZXMp
DQorICAgICAgICAgICAgYXZfbG9nKGZpbHRlciwgQVZfTE9HX0lORk8sICIlcyIsIHJlcyk7DQor
ICAgICAgICByZXR1cm4gMDsNCisgICAgfSBlbHNlIGlmICghc3RyY21wKGNtZCwgImR1bXBfcmF3
X3N0YXJ0IikpIHsNCisgICAgICAgIHJldHVybiBmaWx0ZXJfc2V0X2R1bXBfcGNtKGZpbHRlciwg
YXJnLCAxKTsNCisgICAgfSBlbHNlIGlmICghc3RyY21wKGNtZCwgImR1bXBfcmF3X3N0b3AiKSkg
ew0KKyAgICAgICAgcmV0dXJuIGZpbHRlcl9zZXRfZHVtcF9wY20oZmlsdGVyLCBhcmcsIDApOw0K
ICAgICB9IGVsc2UgaWYoIXN0cmNtcChjbWQsICJlbmFibGUiKSkgew0KICAgICAgICAgcmV0dXJu
IHNldF9lbmFibGVfZXhwcihmZmZpbHRlcmN0eChmaWx0ZXIpLCBhcmcpOw0KQEANCiAgICAgLyog
Li4uIGV4aXN0aW5nIGNvZGUgLi4uICovDQoNCisgICAgaWYgKGxpbmstPmR1bXBfcGNtICYmIGxp
bmstPnR5cGUgPT0gQVZNRURJQV9UWVBFX0FVRElPKSB7DQorICAgICAgICByZXQgPSBsaW5rX2R1
bXBfZnJhbWUobGluaywgZnJhbWUpOw0KKyAgICAgICAgaWYgKHJldCA8IDApDQorICAgICAgICAg
ICAgYXZfbG9nKGxpbmstPmRzdCwgQVZfTE9HX0VSUk9SLA0KKyAgICAgICAgICAgICAgICAgICAi
UENNIGR1bXAgZmFpbGVkIHdpdGggJXNcbiIsIGF2X2VycjJzdHIocmV0KSk7DQorICAgIH0NCisN
CiAgICAgbGktPmZyYW1lX2Jsb2NrZWRfaW4gPSBsaS0+ZnJhbWVfd2FudGVkX291dCA9IDA7DQpA
QA0KZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmggYi9saWJhdmZpbHRlci9hdmZp
bHRlci5oDQppbmRleCBhODlkM2NmNjU4Li4wZDRjOTFiYjZiIDEwMDY0NA0KLS0tIGEvbGliYXZm
aWx0ZXIvYXZmaWx0ZXIuaA0KKysrIGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaA0KQEANCiAgICAg
QVZDaGFubmVsTGF5b3V0IGNoX2xheW91dDsgIC8vLzwgY2hhbm5lbCBsYXlvdXQgb2YgY3VycmVu
dCBidWZmZXINCg0KKyAgICBpbnQgICAgICBkdW1wX3BjbTsgICAgICAgICAgLy8vPCBlbmFibGUg
ZHVtcGluZyBvbiB0aGlzIGxpbmsNCisgICAgaW50ICAgICAqZHVtcF9wY21fZmRzOyAgICAgIC8v
Lzwgb25lIEZEIHBlciBsaW5rIChjdXJyZW50bHkgMSkNCisgICAgdW5zaWduZWQgbmJfZHVtcF9w
Y21fZmRzOyAgIC8vLzwgbnVtYmVyIG9mIEZEcw0KKyAgICBjaGFyICAgICpkdW1wX3BjbV9wYXRo
OyAgICAgLy8vPCB1c2VyLXN1cHBsaWVkIGRpcmVjdG9yeQ0KKw0KICAgICAvKioNCiAgICAgICog
RGVmaW5lIHRoZSB0aW1lIGJhc2UgdXNlZCBieSB0aGUgUFRTIG9mIHRoZSBmcmFtZXMvc2FtcGxl
cw0KICAgICAgKiB3aGljaCB3aWxsIHBhc3MgdGhyb3VnaCB0aGlzIGxpbmsuDQotLQ0KMi4zNC4x
DQoNCi0tLQ0KDQpGcm9tIDhjZjdiZmE1MmExMGJlODdlMGYxN2I5NzgzMTU5YjBlODNmOTYwZjcg
TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxDQpGcm9tOiBZaWJvIEZhbmcgPGJsdWV5YmY3NzdAb3V0
bG9vay5jb20+DQpEYXRlOiBXZWQsIDIzIEFwciAyMDI1IDEyOjM4OjAwICswODAwDQpTdWJqZWN0
OiBbUEFUQ0ggMi8yXSBkb2MvZmlsdGVyczogZG9jdW1lbnQgZHVtcF9yYXdfc3RhcnQgYW5kIGR1
bXBfcmF3X3N0b3ANCiBjb21tYW5kcw0KDQpTaWduZWQtb2ZmLWJ5OiBZaWJvIEZhbmcgPGJsdWV5
YmY3NzdAb3V0bG9vay5jb20+DQotLS0NCiBkb2MvZmlsdGVycy50ZXhpIHwgNDUgKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogMSBmaWxlIGNoYW5nZWQsIDQ1
IGluc2VydGlvbnMoKykNCg0KZGlmZiAtLWdpdCBhL2RvYy9maWx0ZXJzLnRleGkgYi9kb2MvZmls
dGVycy50ZXhpDQppbmRleCA0NWIzZTAzZTVlLi42YTJkMjNkZjNmIDEwMDY0NA0KLS0tIGEvZG9j
L2ZpbHRlcnMudGV4aQ0KKysrIGIvZG9jL2ZpbHRlcnMudGV4aQ0KQEANCiBAc2VjdGlvbiBhZHVt
cHBjbQ0KDQogRHVtcCByYXcgUENNIGF1ZGlvIGRhdGEgZm9yIGRlYnVnZ2luZyBiZXR3ZWVuIGZp
bHRlcnMuDQoNCiBUaGlzIGZpbHRlciBhbGxvd3Mgd3JpdGluZyByYXcgYXVkaW8gZGF0YSB0byBk
aXNrIGZyb20gYW55IGF1ZGlvIGxpbmsNCiBpbiB0aGUgZmlsdGVyZ3JhcGggZm9yIGluc3BlY3Rp
b24uIEl0IHN1cHBvcnRzIHBsYW5hciBhbmQgcGFja2VkIGZvcm1hdHMsDQogYXV0b21hdGljYWxs
eSBpbnRlcmxlYXZpbmcgcGxhbmFyIGRhdGEgZm9yIHdyaXRpbmcuDQoNCiBAc3Vic2VjdGlvbiBT
eW50YXgNCg0KIEBleGFtcGxlDQogZHVtcF9yYXdfc3RhcnQ9ZmlsZT0veW91ci9kdW1wL2RpcmVj
dG9yeS8NCiBAZW5kIGV4YW1wbGUNCg0KIEBzdWJzZWN0aW9uIFVzYWdlDQoNCiBUbyBlbmFibGUg
ZHVtcGluZywgdXNlIHRoZSBAY29kZXtkdW1wX3Jhd19zdGFydH0gY29tbWFuZDoNCg0KIEBleGFt
cGxlDQogZmZtcGVnIC1pIGlucHV0LndhdiAtYWYgInZvbHVtZSxhc2VuZGNtZD0nMC4wIGR1bXBf
cmF3X3N0YXJ0IGZpbGU9L3RtcC9wY20vJyIgLWYgbnVsbCAtDQogQGVuZCBleGFtcGxlDQoNCiBU
byBzdG9wIGR1bXBpbmc6DQoNCiBAZXhhbXBsZQ0KIGFzZW5kY21kPSc1LjAgZHVtcF9yYXdfc3Rv
cCcNCiBAZW5kIGV4YW1wbGUNCg0KIEBzdWJzZWN0aW9uIE9wdGlvbnMNCg0KIEB0YWJsZSBAb3B0
aW9uDQogQGl0ZW0gZmlsZQ0KIFNwZWNpZnkgYSBkaXJlY3RvcnkgcGF0aCAobm90IGEgZmlsZW5h
bWUpIHdoZXJlIFBDTSBkYXRhIHdpbGwgYmUgZHVtcGVkLg0KIFRoZSBkdW1wZWQgZmlsZSBpcyBu
YW1lZCBAY29kZXs8c3JjPi08ZHN0Pi5wY219IGFuZCB3aWxsIGJlIG92ZXJ3cml0dGVuIGlmIGl0
IGFscmVhZHkgZXhpc3RzLg0KIEBlbmQgdGFibGUNCi0tDQoyLjM0LjENCg0KX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18NCkZyb206IFlpYm8gRmFuZyA8Ymx1ZXliZjc3N0BvdXRsb29r
LmNvbT4NClNlbnQ6IDI2IE1heSAyMDI1IDE1OjQ5DQpUbzogZmZtcGVnLWRldmVsQGZmbXBlZy5v
cmcgPGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPg0KU3ViamVjdDogUmU6IFtGRm1wZWctZGV2ZWxd
IFtQQVRDSF0gYXZmaWx0ZXI6IGFkZCBQQ00gZHVtcGluZyBiZXR3ZWVuIGZpbHRlcnMgZm9yIGF1
ZGlvIGRlYnVnZ2luZw0KDQpbRkZtcGVnLWRldmVsLHYyLDAvMl0gYXZmaWx0ZXI6IGFkZCBQQ00g
ZHVtcGluZyBiZXR3ZWVuIGZpbHRlcnMgZm9yIGF1ZGlvIGRlYnVnZ2luZw0KRnJvbTogWWlibyBG
YW5nIDxibHVleWJmNzc3QG91dGxvb2suY29tPg0KU3ViamVjdDogW0ZGbXBlZy1kZXZlbCx2Miww
LzJdIGF2ZmlsdGVyOiBhZGQgUENNIGR1bXBpbmcgYmV0d2VlbiBmaWx0ZXJzIGZvciBhdWRpbyBk
ZWJ1Z2dpbmcNCkRhdGU6IFdlZCwgMjMgQXByIDIwMjUgMTA6NTc6MDAgKzA4MDANCk1lc3NhZ2Ut
SWQ6IDxjb3Zlci4wLjJAZmZtcGVnPg0KDQpUaGlzIHNlcmllcyBhZGRzIGEgZGVidWdnaW5nIGZl
YXR1cmUgdGhhdCBsZXRzIGRldmVsb3BlcnMgZHVtcCByYXcNClBDTSBhdWRpbyBiZXR3ZWVuIGZp
bHRlcnMuICBUaGUgZGF0YSBhcmUgd3JpdHRlbiB0byBmaWxlcyBpbiBhIHVzZXItDQpzZWxlY3Rl
ZCBkaXJlY3RvcnkgdmlhIHR3byBuZXcgY29tbWFuZHM6DQoNCiAgICBkdW1wX3Jhd19zdGFydCBm
aWxlPS9wYXRoL3RvL2Rpci8NCiAgICBkdW1wX3Jhd19zdG9wDQoNClBsYW5hciBhdWRpbyBpcyBh
dXRvbWF0aWNhbGx5IGludGVybGVhdmVkOyBvbmx5IGF1ZGlvIGxpbmtzIGFyZQ0KYWZmZWN0ZWQu
ICBQYXRjaCAxLzIgaW1wbGVtZW50cyB0aGUgZmVhdHVyZSwgcGF0Y2ggMi8yIGRvY3VtZW50cyBp
dC4NCg0KUmVnYXJkcywNCllpYm8gRmFuZw0KDQotLS0NCg0KRnJvbSAyZGY1NmU3NDI3M2Q0Nzdh
ZTI3MDAzZTA5ODEyMjA3NDlhNmI1OGNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTog
WWlibyBGYW5nIDxibHVleWJmNzc3QG91dGxvb2suY29tPg0KRGF0ZTogV2VkLCAyMyBBcHIgMjAy
NSAxMDo1ODo1NSArMDgwMA0KU3ViamVjdDogW1BBVENIIDEvMl0gYXZmaWx0ZXI6IGFkZCBQQ00g
ZHVtcGluZyBiZXR3ZWVuIGZpbHRlcnMgZm9yIGF1ZGlvDQogZGVidWdnaW5nDQoNClRoaXMgcGF0
Y2ggaW50cm9kdWNlcyBQQ00gZHVtcGluZyBzdXBwb3J0IGJldHdlZW4gQVZGaWx0ZXIgbGlua3Ms
DQppbnRlbmRlZCBmb3IgYXVkaW8gZGVidWdnaW5nIGFuZCBmaWx0ZXItZ3JhcGggaW5zcGVjdGlv
bi4NCg0KVHdvIGZpbHRlciBjb21tYW5kcyBhcmUgYWRkZWQ6DQoNCiAgICBkdW1wX3Jhd19zdGFy
dCBmaWxlPS9wYXRoL3RvL291dHB1dC9kaXIvDQogICAgZHVtcF9yYXdfc3RvcA0KDQpXaGVuIGR1
bXBpbmcgaXMgZW5hYmxlZCwgYXVkaW8gbGVhdmluZyB0aGUgc2VsZWN0ZWQgZmlsdGVyIG91dHB1
dCBpcw0Kd3JpdHRlbiB0byBhbiBhdXRvbWF0aWNhbGx5IG5hbWVkIGZpbGU6DQoNCiAgICA8c3Jj
X2ZpbHRlcj4tPGRzdF9maWx0ZXI+LnBjbQ0KDQpQbGFuYXIgZm9ybWF0cyBhcmUgY29udmVydGVk
IHRvIHBhY2tlZC4gIEZpbGUgZGVzY3JpcHRvcnMgYXJlIG9wZW5lZA0Kb24gZGVtYW5kIGFuZCBj
bG9zZWQgYXV0b21hdGljYWxseS4gIFdvcmtzIG9ubHkgb24gYXVkaW8gbGlua3MuDQoNCkV4YW1w
bGUgKEMgQVBJKToNCiAgICBhdmZpbHRlcl9wcm9jZXNzX2NvbW1hbmQoZmlsdGVyLCAiZHVtcF9y
YXdfc3RhcnQiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZT0vdG1wLyIsIE5V
TEwsIDAsIDApOw0KDQpTaWduZWQtb2ZmLWJ5OiBZaWJvIEZhbmcgPGJsdWV5YmY3NzdAb3V0bG9v
ay5jb20+DQotLS0NCiBsaWJhdmZpbHRlci9hdmZpbHRlci5jIHwgMTQ0ICsrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrDQogbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaCB8ICAg
NSArKw0KIDIgZmlsZXMgY2hhbmdlZCwgMTQ5IGluc2VydGlvbnMoKykNCg0KZGlmZiAtLWdpdCBh
L2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmMgYi9saWJhdmZpbHRlci9hdmZpbHRlci5jDQppbmRleCA2
NGMxMDc1YzQwLi5iNzAzNDU2OWRiIDEwMDY0NA0KLS0tIGEvbGliYXZmaWx0ZXIvYXZmaWx0ZXIu
Yw0KKysrIGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuYw0KQEAgLTE5LDYgKzE5LDkgQEANCiAgKiBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s
IE1BIDAyMTEwLTEzMDEgVVNBDQogICovDQoNCisjaW5jbHVkZSA8ZmNudGwuaD4NCisjaW5jbHVk
ZSA8dW5pc3RkLmg+DQorDQogI2luY2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIg0KICNpbmNs
dWRlICJsaWJhdnV0aWwvYXZzdHJpbmcuaCINCiAjaW5jbHVkZSAibGliYXZ1dGlsL2JwcmludC5o
Ig0KQEANCiAgICAgcmV0dXJuIDA7DQogfQ0KDQorLyogLS0tLS0tLS0tLSBQQ00gZHVtcCBoZWxw
ZXJzIC0tLS0tLS0tLS0gKi8NCisNCitzdGF0aWMgYXZfY29sZCB2b2lkIGxpbmtfdW5pbml0X2R1
bXBfcGNtKEFWRmlsdGVyTGluayAqbGluaykNCit7DQorICAgIGlmIChsaW5rLT5kdW1wX3BjbV9m
ZHMpIHsNCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaW5rLT5uYl9kdW1wX3Bj
bV9mZHM7IGkrKykNCisgICAgICAgICAgICBpZiAobGluay0+ZHVtcF9wY21fZmRzW2ldID49IDAp
DQorICAgICAgICAgICAgICAgIGNsb3NlKGxpbmstPmR1bXBfcGNtX2Zkc1tpXSk7DQorICAgICAg
ICBhdl9mcmVlcCgmbGluay0+ZHVtcF9wY21fZmRzKTsNCisgICAgICAgIGxpbmstPm5iX2R1bXBf
cGNtX2ZkcyA9IDA7DQorICAgIH0NCisgICAgYXZfZnJlZXAoJmxpbmstPmR1bXBfcGNtX3BhdGgp
Ow0KKyAgICBsaW5rLT5kdW1wX3BjbSA9IDA7DQorfQ0KKw0KK3N0YXRpYyBhdl9jb2xkIGludCBs
aW5rX2luaXRfZHVtcF9wY20oQVZGaWx0ZXJMaW5rICpsaW5rKQ0KK3sNCisgICAgLyogYnVpbGQg
ZnVsbCBwYXRoICI8ZGlyPi88c3JjPi08ZHN0Pi5wY20iICovDQorICAgIGNvbnN0IGNoYXIgKmRp
ciA9IGxpbmstPmR1bXBfcGNtX3BhdGg7DQorICAgIGNvbnN0IGNoYXIgKnNlcCA9IGRpcltzdHJs
ZW4oZGlyKSAtIDFdID09ICcvJyA/ICIiIDogIi8iOw0KKyAgICBjaGFyIHBhdGhbNDA5Nl07DQor
ICAgIHNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwgIiVzJXMlLjE2cy0lLjhzLnBjbSIsDQor
ICAgICAgICAgICAgIGRpciwgc2VwLCBsaW5rLT5zcmMtPm5hbWUsIGxpbmstPmRzdC0+bmFtZSk7
DQorDQorICAgIGxpbmstPm5iX2R1bXBfcGNtX2ZkcyA9IDE7DQorICAgIGxpbmstPmR1bXBfcGNt
X2ZkcyA9IGF2X21hbGxvYyhzaXplb2YoaW50KSk7DQorICAgIGlmICghbGluay0+ZHVtcF9wY21f
ZmRzKQ0KKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsNCisNCisgICAgaW50IGZkID0g
b3BlbihwYXRoLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX1RSVU5DIHwgT19FWENMLCAwNjQ0KTsN
CisgICAgaWYgKGZkIDwgMCkgew0KKyAgICAgICAgbGlua191bmluaXRfZHVtcF9wY20obGluayk7
DQorICAgICAgICByZXR1cm4gQVZFUlJPUihlcnJubyk7DQorICAgIH0NCisgICAgbGluay0+ZHVt
cF9wY21fZmRzWzBdID0gZmQ7DQorICAgIGF2X2xvZyhsaW5rLT5kc3QsIEFWX0xPR19JTkZPLCAi
UENNIGR1bXAgZmlsZTogJXNcbiIsIHBhdGgpOw0KKyAgICByZXR1cm4gMDsNCit9DQorDQorc3Rh
dGljIGludCBmaWx0ZXJfc2V0X2R1bXBfcGNtKEFWRmlsdGVyQ29udGV4dCAqZiwgY29uc3QgY2hh
ciAqYXJnLCBpbnQgc2V0KQ0KK3sNCisgICAgY29uc3QgY2hhciAqcHJlZml4ID0gImZpbGU9IjsN
CisgICAgaWYgKCFhcmcgfHwgYXZfc3RybmNhc2VjbXAoYXJnLCBwcmVmaXgsIHN0cmxlbihwcmVm
aXgpKSkgew0KKyAgICAgICAgYXZfbG9nKGYsIEFWX0xPR19FUlJPUiwNCisgICAgICAgICAgICAg
ICAiZHVtcF9yYXdfKiBleHBlY3RzIGFyZ3VtZW50IGZpbGU9L2Rpci9cbiIpOw0KKyAgICAgICAg
cmV0dXJuIEFWRVJST1IoRUlOVkFMKTsNCisgICAgfQ0KKyAgICBjb25zdCBjaGFyICpkaXIgPSBh
cmcgKyBzdHJsZW4ocHJlZml4KTsNCisNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmLT5uYl9v
dXRwdXRzOyBpKyspIHsNCisgICAgICAgIEFWRmlsdGVyTGluayAqbCA9IGYtPm91dHB1dHNbaV07
DQorICAgICAgICBpZiAobC0+dHlwZSAhPSBBVk1FRElBX1RZUEVfQVVESU8pDQorICAgICAgICAg
ICAgY29udGludWU7DQorICAgICAgICBpZiAoc2V0KSB7DQorICAgICAgICAgICAgYXZfZnJlZXAo
JmwtPmR1bXBfcGNtX3BhdGgpOw0KKyAgICAgICAgICAgIGwtPmR1bXBfcGNtX3BhdGggPSBhdl9z
dHJkdXAoZGlyKTsNCisgICAgICAgICAgICBpZiAoIWwtPmR1bXBfcGNtX3BhdGgpDQorICAgICAg
ICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7DQorICAgICAgICAgICAgbC0+ZHVtcF9w
Y20gPSAxOw0KKyAgICAgICAgfSBlbHNlDQorICAgICAgICAgICAgbGlua191bmluaXRfZHVtcF9w
Y20obCk7DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KKy8qIHdyaXRlIG9uZSBmcmFt
ZSAqLw0KK3N0YXRpYyBpbnQgbGlua19kdW1wX2ZyYW1lKEFWRmlsdGVyTGluayAqbGluaywgQVZG
cmFtZSAqZnJhbWUpDQorew0KKyAgICBpbnQgcmV0Ow0KKyAgICBpZiAoIWxpbmstPmR1bXBfcGNt
X2ZkcyAmJg0KKyAgICAgICAgKHJldCA9IGxpbmtfaW5pdF9kdW1wX3BjbShsaW5rKSkgPCAwKQ0K
KyAgICAgICAgcmV0dXJuIHJldDsNCisNCisgICAgY29uc3QgaW50IGNoICAgICA9IGZyYW1lLT5j
aF9sYXlvdXQubmJfY2hhbm5lbHM7DQorICAgIGNvbnN0IGludCBicHMgICAgPSBhdl9nZXRfYnl0
ZXNfcGVyX3NhbXBsZShmcmFtZS0+Zm9ybWF0KTsNCisgICAgY29uc3QgaW50IG5zICAgICA9IGZy
YW1lLT5uYl9zYW1wbGVzOw0KKyAgICBjb25zdCBpbnQgdG90bGVuID0gY2ggKiBucyAqIGJwczsN
CisNCisgICAgLyogaW50ZXJsZWF2ZSBwbGFuYXIgdG8gcGFja2VkIGlmIG5lY2Vzc2FyeSAqLw0K
KyAgICBpZiAoYXZfc2FtcGxlX2ZtdF9pc19wbGFuYXIoZnJhbWUtPmZvcm1hdCkpIHsNCisgICAg
ICAgIHVpbnQ4X3QgKmJ1ZiA9IGF2X21hbGxvYyh0b3RsZW4pOw0KKyAgICAgICAgaWYgKCFidWYp
DQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsNCisgICAgICAgIGZvciAoaW50
IHMgPSAwOyBzIDwgbnM7IHMrKykNCisgICAgICAgICAgICBmb3IgKGludCBjID0gMDsgYyA8IGNo
OyBjKyspDQorICAgICAgICAgICAgICAgIG1lbWNweShidWYgKyAocypjaCArIGMpKmJwcywNCisg
ICAgICAgICAgICAgICAgICAgICAgICh1aW50OF90KilmcmFtZS0+ZXh0ZW5kZWRfZGF0YVtjXSAr
IHMqYnBzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgYnBzKTsNCisgICAgICAgIHJldCA9IHdy
aXRlKGxpbmstPmR1bXBfcGNtX2Zkc1swXSwgYnVmLCB0b3RsZW4pOw0KKyAgICAgICAgYXZfZnJl
ZShidWYpOw0KKyAgICB9IGVsc2UNCisgICAgICAgIHJldCA9IHdyaXRlKGxpbmstPmR1bXBfcGNt
X2Zkc1swXSwgZnJhbWUtPmRhdGFbMF0sIHRvdGxlbik7DQorDQorICAgIGlmIChyZXQgPCAwKSB7
DQorICAgICAgICBhdl9sb2cobGluay0+ZHN0LCBBVl9MT0dfRVJST1IsICJQQ00gZHVtcCB3cml0
ZSBmYWlsZWQ6ICVzXG4iLA0KKyAgICAgICAgICAgICAgIGF2X2VycjJzdHIocmV0KSk7DQorICAg
ICAgICBsaW5rX3VuaW5pdF9kdW1wX3BjbShsaW5rKTsNCisgICAgICAgIHJldHVybiByZXQ7DQor
ICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KIHN0YXRpYyB2b2lkIGxpbmtfZnJlZShBVkZp
bHRlckxpbmsgKipsaW5rKQ0KIHsNCkBADQoNCiBpbnQgYXZmaWx0ZXJfcHJvY2Vzc19jb21tYW5k
KEFWRmlsdGVyQ29udGV4dCAqZmlsdGVyLCBjb25zdCBjaGFyICpjbWQsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICphcmcsIGNoYXIgKnJlcywgaW50IHJlc19sZW4s
IGludCBmbGFncykNCiB7DQpAQA0KLSAgICAgICAgaWYgKHJlcyA9PSBsb2NhbF9yZXMpDQotICAg
ICAgICAgICAgYXZfbG9nKGZpbHRlciwgQVZfTE9HX0lORk8sICIlcyIsIHJlcyk7DQotICAgICAg
ICByZXR1cm4gMDsNCisgICAgICAgIGlmIChyZXMgPT0gbG9jYWxfcmVzKQ0KKyAgICAgICAgICAg
IGF2X2xvZyhmaWx0ZXIsIEFWX0xPR19JTkZPLCAiJXMiLCByZXMpOw0KKyAgICAgICAgcmV0dXJu
IDA7DQorICAgIH0gZWxzZSBpZiAoIXN0cmNtcChjbWQsICJkdW1wX3Jhd19zdGFydCIpKSB7DQor
ICAgICAgICByZXR1cm4gZmlsdGVyX3NldF9kdW1wX3BjbShmaWx0ZXIsIGFyZywgMSk7DQorICAg
IH0gZWxzZSBpZiAoIXN0cmNtcChjbWQsICJkdW1wX3Jhd19zdG9wIikpIHsNCisgICAgICAgIHJl
dHVybiBmaWx0ZXJfc2V0X2R1bXBfcGNtKGZpbHRlciwgYXJnLCAwKTsNCiAgICAgfSBlbHNlIGlm
KCFzdHJjbXAoY21kLCAiZW5hYmxlIikpIHsNCiAgICAgICAgIHJldHVybiBzZXRfZW5hYmxlX2V4
cHIoZmZmaWx0ZXJjdHgoZmlsdGVyKSwgYXJnKTsNCkBADQogICAgIC8qIC4uLiBleGlzdGluZyBj
b2RlIC4uLiAqLw0KDQorICAgIGlmIChsaW5rLT5kdW1wX3BjbSAmJiBsaW5rLT50eXBlID09IEFW
TUVESUFfVFlQRV9BVURJTykgew0KKyAgICAgICAgcmV0ID0gbGlua19kdW1wX2ZyYW1lKGxpbmss
IGZyYW1lKTsNCisgICAgICAgIGlmIChyZXQgPCAwKQ0KKyAgICAgICAgICAgIGF2X2xvZyhsaW5r
LT5kc3QsIEFWX0xPR19FUlJPUiwNCisgICAgICAgICAgICAgICAgICAgIlBDTSBkdW1wIGZhaWxl
ZCB3aXRoICVzXG4iLCBhdl9lcnIyc3RyKHJldCkpOw0KKyAgICB9DQorDQogICAgIGxpLT5mcmFt
ZV9ibG9ja2VkX2luID0gbGktPmZyYW1lX3dhbnRlZF9vdXQgPSAwOw0KQEANCmRpZmYgLS1naXQg
YS9saWJhdmZpbHRlci9hdmZpbHRlci5oIGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaA0KaW5kZXgg
YTg5ZDNjZjY1OC4uMGQ0YzkxYmI2YiAxMDA2NDQNCi0tLSBhL2xpYmF2ZmlsdGVyL2F2ZmlsdGVy
LmgNCisrKyBiL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmgNCkBADQogICAgIEFWQ2hhbm5lbExheW91
dCBjaF9sYXlvdXQ7ICAvLy88IGNoYW5uZWwgbGF5b3V0IG9mIGN1cnJlbnQgYnVmZmVyDQoNCisg
ICAgaW50ICAgICAgZHVtcF9wY207ICAgICAgICAgIC8vLzwgZW5hYmxlIGR1bXBpbmcgb24gdGhp
cyBsaW5rDQorICAgIGludCAgICAgKmR1bXBfcGNtX2ZkczsgICAgICAvLy88IG9uZSBGRCBwZXIg
bGluayAoY3VycmVudGx5IDEpDQorICAgIHVuc2lnbmVkIG5iX2R1bXBfcGNtX2ZkczsgICAvLy88
IG51bWJlciBvZiBGRHMNCisgICAgY2hhciAgICAqZHVtcF9wY21fcGF0aDsgICAgIC8vLzwgdXNl
ci1zdXBwbGllZCBkaXJlY3RvcnkNCisNCiAgICAgLyoqDQogICAgICAqIERlZmluZSB0aGUgdGlt
ZSBiYXNlIHVzZWQgYnkgdGhlIFBUUyBvZiB0aGUgZnJhbWVzL3NhbXBsZXMNCiAgICAgICogd2hp
Y2ggd2lsbCBwYXNzIHRocm91Z2ggdGhpcyBsaW5rLg0KLS0NCjIuMzQuMQ0KDQotLS0NCg0KRnJv
bSA4Y2Y3YmZhNTJhMTBiZTg3ZTBmMTdiOTc4MzE1OWIwZTgzZjk2MGY3IE1vbiBTZXAgMTcgMDA6
MDA6MDAgMjAwMQ0KRnJvbTogWWlibyBGYW5nIDxibHVleWJmNzc3QG91dGxvb2suY29tPg0KRGF0
ZTogV2VkLCAyMyBBcHIgMjAyNSAxMjozODowMCArMDgwMA0KU3ViamVjdDogW1BBVENIIDIvMl0g
ZG9jL2ZpbHRlcnM6IGRvY3VtZW50IGR1bXBfcmF3X3N0YXJ0IGFuZCBkdW1wX3Jhd19zdG9wDQog
Y29tbWFuZHMNCg0KU2lnbmVkLW9mZi1ieTogWWlibyBGYW5nIDxibHVleWJmNzc3QG91dGxvb2su
Y29tPg0KLS0tDQogZG9jL2ZpbHRlcnMudGV4aSB8IDQ1ICsrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKw0KIDEgZmlsZSBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCsp
DQoNCmRpZmYgLS1naXQgYS9kb2MvZmlsdGVycy50ZXhpIGIvZG9jL2ZpbHRlcnMudGV4aQ0KaW5k
ZXggNDViM2UwM2U1ZS4uNmEyZDIzZGYzZiAxMDA2NDQNCi0tLSBhL2RvYy9maWx0ZXJzLnRleGkN
CisrKyBiL2RvYy9maWx0ZXJzLnRleGkNCkBADQogQHNlY3Rpb24gYWR1bXBwY20NCg0KIER1bXAg
cmF3IFBDTSBhdWRpbyBkYXRhIGZvciBkZWJ1Z2dpbmcgYmV0d2VlbiBmaWx0ZXJzLg0KDQogVGhp
cyBmaWx0ZXIgYWxsb3dzIHdyaXRpbmcgcmF3IGF1ZGlvIGRhdGEgdG8gZGlzayBmcm9tIGFueSBh
dWRpbyBsaW5rDQogaW4gdGhlIGZpbHRlcmdyYXBoIGZvciBpbnNwZWN0aW9uLiBJdCBzdXBwb3J0
cyBwbGFuYXIgYW5kIHBhY2tlZCBmb3JtYXRzLA0KIGF1dG9tYXRpY2FsbHkgaW50ZXJsZWF2aW5n
IHBsYW5hciBkYXRhIGZvciB3cml0aW5nLg0KDQogQHN1YnNlY3Rpb24gU3ludGF4DQoNCiBAZXhh
bXBsZQ0KIGR1bXBfcmF3X3N0YXJ0PWZpbGU9L3lvdXIvZHVtcC9kaXJlY3RvcnkvDQogQGVuZCBl
eGFtcGxlDQoNCiBAc3Vic2VjdGlvbiBVc2FnZQ0KDQogVG8gZW5hYmxlIGR1bXBpbmcsIHVzZSB0
aGUgQGNvZGV7ZHVtcF9yYXdfc3RhcnR9IGNvbW1hbmQ6DQoNCiBAZXhhbXBsZQ0KIGZmbXBlZyAt
aSBpbnB1dC53YXYgLWFmICJ2b2x1bWUsYXNlbmRjbWQ9JzAuMCBkdW1wX3Jhd19zdGFydCBmaWxl
PS90bXAvcGNtLyciIC1mIG51bGwgLQ0KIEBlbmQgZXhhbXBsZQ0KDQogVG8gc3RvcCBkdW1waW5n
Og0KDQogQGV4YW1wbGUNCiBhc2VuZGNtZD0nNS4wIGR1bXBfcmF3X3N0b3AnDQogQGVuZCBleGFt
cGxlDQoNCiBAc3Vic2VjdGlvbiBPcHRpb25zDQoNCiBAdGFibGUgQG9wdGlvbg0KIEBpdGVtIGZp
bGUNCiBTcGVjaWZ5IGEgZGlyZWN0b3J5IHBhdGggKG5vdCBhIGZpbGVuYW1lKSB3aGVyZSBQQ00g
ZGF0YSB3aWxsIGJlIGR1bXBlZC4NCiBUaGUgZHVtcGVkIGZpbGUgaXMgbmFtZWQgQGNvZGV7PHNy
Yz4tPGRzdD4ucGNtfSBhbmQgd2lsbCBiZSBvdmVyd3JpdHRlbiBpZiBpdCBhbHJlYWR5IGV4aXN0
cy4NCiBAZW5kIHRhYmxlDQotLQ0KMi4zNC4xDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fDQpGcm9tOiBGYW5nIFlpYm8gPGJsdWV5YmY3NzdAb3V0bG9vay5jb20+DQpTZW50OiAy
NiBNYXkgMjAyNSAxNTo0Mw0KVG86IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnIDxmZm1wZWctZGV2
ZWxAZmZtcGVnLm9yZz4NClN1YmplY3Q6IKZezmA6IFtGRm1wZWctZGV2ZWxdIFtQQVRDSF0gYXZm
aWx0ZXI6IGFkZCBQQ00gZHVtcGluZyBiZXR3ZWVuIGZpbHRlcnMgZm9yIGF1ZGlvIGRlYnVnZ2lu
Zw0KDQpSZTogW0ZGbXBlZy1kZXZlbCx2MiwwLzJdIGF2ZmlsdGVyOiBhZGQgUENNIGR1bXBpbmcg
YmV0d2VlbiBmaWx0ZXJzIGZvciBhdWRpbyBkZWJ1Z2dpbmcNCg0KRnJvbTogWWlibyBGYW5nIDxi
bHVleWJmNzc3QG91dGxvb2suY29tPg0KU3ViamVjdDogW0ZGbXBlZy1kZXZlbCx2MiwwLzJdIGF2
ZmlsdGVyOiBhZGQgUENNIGR1bXBpbmcgYmV0d2VlbiBmaWx0ZXJzIGZvciBhdWRpbyBkZWJ1Z2dp
bmcNCkRhdGU6IFdlZCwgMjMgQXByIDIwMjUgMTA6NTc6MDAgKzA4MDANCk1lc3NhZ2UtSWQ6IDxj
b3Zlci4wLjJAZmZtcGVnPg0KDQpUaGlzIHNlcmllcyBhZGRzIGEgZGVidWdnaW5nIGZlYXR1cmUg
dGhhdCBsZXRzIGRldmVsb3BlcnMgZHVtcCByYXcNClBDTSBhdWRpbyBiZXR3ZWVuIGZpbHRlcnMu
ICBUaGUgZGF0YSBhcmUgd3JpdHRlbiB0byBmaWxlcyBpbiBhIHVzZXItDQpzZWxlY3RlZCBkaXJl
Y3RvcnkgdmlhIHR3byBuZXcgY29tbWFuZHM6DQoNCiAgICBkdW1wX3Jhd19zdGFydCBmaWxlPS9w
YXRoL3RvL2Rpci8NCiAgICBkdW1wX3Jhd19zdG9wDQoNClBsYW5hciBhdWRpbyBpcyBhdXRvbWF0
aWNhbGx5IGludGVybGVhdmVkOyBvbmx5IGF1ZGlvIGxpbmtzIGFyZQ0KYWZmZWN0ZWQuICBQYXRj
aCAxLzIgaW1wbGVtZW50cyB0aGUgZmVhdHVyZSwgcGF0Y2ggMi8yIGRvY3VtZW50cyBpdC4NCg0K
UmVnYXJkcywNCllpYm8gRmFuZw0KDQotLS0NCg0KRnJvbSAyZGY1NmU3NDI3M2Q0NzdhZTI3MDAz
ZTA5ODEyMjA3NDlhNmI1OGNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTogWWlibyBG
YW5nIDxibHVleWJmNzc3QG91dGxvb2suY29tPg0KRGF0ZTogV2VkLCAyMyBBcHIgMjAyNSAxMDo1
ODo1NSArMDgwMA0KU3ViamVjdDogW1BBVENIIDEvMl0gYXZmaWx0ZXI6IGFkZCBQQ00gZHVtcGlu
ZyBiZXR3ZWVuIGZpbHRlcnMgZm9yIGF1ZGlvDQogZGVidWdnaW5nDQoNClRoaXMgcGF0Y2ggaW50
cm9kdWNlcyBQQ00gZHVtcGluZyBzdXBwb3J0IGJldHdlZW4gQVZGaWx0ZXIgbGlua3MsDQppbnRl
bmRlZCBmb3IgYXVkaW8gZGVidWdnaW5nIGFuZCBmaWx0ZXItZ3JhcGggaW5zcGVjdGlvbi4NCg0K
VHdvIGZpbHRlciBjb21tYW5kcyBhcmUgYWRkZWQ6DQoNCiAgICBkdW1wX3Jhd19zdGFydCBmaWxl
PS9wYXRoL3RvL291dHB1dC9kaXIvDQogICAgZHVtcF9yYXdfc3RvcA0KDQpXaGVuIGR1bXBpbmcg
aXMgZW5hYmxlZCwgYXVkaW8gbGVhdmluZyB0aGUgc2VsZWN0ZWQgZmlsdGVyIG91dHB1dCBpcw0K
d3JpdHRlbiB0byBhbiBhdXRvbWF0aWNhbGx5IG5hbWVkIGZpbGU6DQoNCiAgICA8c3JjX2ZpbHRl
cj4tPGRzdF9maWx0ZXI+LnBjbQ0KDQpQbGFuYXIgZm9ybWF0cyBhcmUgY29udmVydGVkIHRvIHBh
Y2tlZC4gIEZpbGUgZGVzY3JpcHRvcnMgYXJlIG9wZW5lZA0Kb24gZGVtYW5kIGFuZCBjbG9zZWQg
YXV0b21hdGljYWxseS4gIFdvcmtzIG9ubHkgb24gYXVkaW8gbGlua3MuDQoNCkV4YW1wbGUgKEMg
QVBJKToNCiAgICBhdmZpbHRlcl9wcm9jZXNzX2NvbW1hbmQoZmlsdGVyLCAiZHVtcF9yYXdfc3Rh
cnQiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZT0vdG1wLyIsIE5VTEwsIDAs
IDApOw0KDQpTaWduZWQtb2ZmLWJ5OiBZaWJvIEZhbmcgPGJsdWV5YmY3NzdAb3V0bG9vay5jb20+
DQotLS0NCiBsaWJhdmZpbHRlci9hdmZpbHRlci5jIHwgMTQ0ICsrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrDQogbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaCB8ICAgNSArKw0K
IDIgZmlsZXMgY2hhbmdlZCwgMTQ5IGluc2VydGlvbnMoKykNCg0KZGlmZiAtLWdpdCBhL2xpYmF2
ZmlsdGVyL2F2ZmlsdGVyLmMgYi9saWJhdmZpbHRlci9hdmZpbHRlci5jDQppbmRleCA2NGMxMDc1
YzQwLi5iNzAzNDU2OWRiIDEwMDY0NA0KLS0tIGEvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuYw0KKysr
IGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuYw0KQEAgLTE5LDYgKzE5LDkgQEANCiAgKiBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAy
MTEwLTEzMDEgVVNBDQogICovDQoNCisjaW5jbHVkZSA8ZmNudGwuaD4NCisjaW5jbHVkZSA8dW5p
c3RkLmg+DQorDQogI2luY2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIg0KICNpbmNsdWRlICJs
aWJhdnV0aWwvYXZzdHJpbmcuaCINCiAjaW5jbHVkZSAibGliYXZ1dGlsL2JwcmludC5oIg0KQEAN
CiAgICAgcmV0dXJuIDA7DQogfQ0KDQorLyogLS0tLS0tLS0tLSBQQ00gZHVtcCBoZWxwZXJzIC0t
LS0tLS0tLS0gKi8NCisNCitzdGF0aWMgYXZfY29sZCB2b2lkIGxpbmtfdW5pbml0X2R1bXBfcGNt
KEFWRmlsdGVyTGluayAqbGluaykNCit7DQorICAgIGlmIChsaW5rLT5kdW1wX3BjbV9mZHMpIHsN
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaW5rLT5uYl9kdW1wX3BjbV9mZHM7
IGkrKykNCisgICAgICAgICAgICBpZiAobGluay0+ZHVtcF9wY21fZmRzW2ldID49IDApDQorICAg
ICAgICAgICAgICAgIGNsb3NlKGxpbmstPmR1bXBfcGNtX2Zkc1tpXSk7DQorICAgICAgICBhdl9m
cmVlcCgmbGluay0+ZHVtcF9wY21fZmRzKTsNCisgICAgICAgIGxpbmstPm5iX2R1bXBfcGNtX2Zk
cyA9IDA7DQorICAgIH0NCisgICAgYXZfZnJlZXAoJmxpbmstPmR1bXBfcGNtX3BhdGgpOw0KKyAg
ICBsaW5rLT5kdW1wX3BjbSA9IDA7DQorfQ0KKw0KK3N0YXRpYyBhdl9jb2xkIGludCBsaW5rX2lu
aXRfZHVtcF9wY20oQVZGaWx0ZXJMaW5rICpsaW5rKQ0KK3sNCisgICAgLyogYnVpbGQgZnVsbCBw
YXRoICI8ZGlyPi88c3JjPi08ZHN0Pi5wY20iICovDQorICAgIGNvbnN0IGNoYXIgKmRpciA9IGxp
bmstPmR1bXBfcGNtX3BhdGg7DQorICAgIGNvbnN0IGNoYXIgKnNlcCA9IGRpcltzdHJsZW4oZGly
KSAtIDFdID09ICcvJyA/ICIiIDogIi8iOw0KKyAgICBjaGFyIHBhdGhbNDA5Nl07DQorICAgIHNu
cHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwgIiVzJXMlLjE2cy0lLjhzLnBjbSIsDQorICAgICAg
ICAgICAgIGRpciwgc2VwLCBsaW5rLT5zcmMtPm5hbWUsIGxpbmstPmRzdC0+bmFtZSk7DQorDQor
ICAgIGxpbmstPm5iX2R1bXBfcGNtX2ZkcyA9IDE7DQorICAgIGxpbmstPmR1bXBfcGNtX2ZkcyA9
IGF2X21hbGxvYyhzaXplb2YoaW50KSk7DQorICAgIGlmICghbGluay0+ZHVtcF9wY21fZmRzKQ0K
KyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsNCisNCisgICAgaW50IGZkID0gb3Blbihw
YXRoLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX1RSVU5DIHwgT19FWENMLCAwNjQ0KTsNCisgICAg
aWYgKGZkIDwgMCkgew0KKyAgICAgICAgbGlua191bmluaXRfZHVtcF9wY20obGluayk7DQorICAg
ICAgICByZXR1cm4gQVZFUlJPUihlcnJubyk7DQorICAgIH0NCisgICAgbGluay0+ZHVtcF9wY21f
ZmRzWzBdID0gZmQ7DQorICAgIGF2X2xvZyhsaW5rLT5kc3QsIEFWX0xPR19JTkZPLCAiUENNIGR1
bXAgZmlsZTogJXNcbiIsIHBhdGgpOw0KKyAgICByZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGlu
dCBmaWx0ZXJfc2V0X2R1bXBfcGNtKEFWRmlsdGVyQ29udGV4dCAqZiwgY29uc3QgY2hhciAqYXJn
LCBpbnQgc2V0KQ0KK3sNCisgICAgY29uc3QgY2hhciAqcHJlZml4ID0gImZpbGU9IjsNCisgICAg
aWYgKCFhcmcgfHwgYXZfc3RybmNhc2VjbXAoYXJnLCBwcmVmaXgsIHN0cmxlbihwcmVmaXgpKSkg
ew0KKyAgICAgICAgYXZfbG9nKGYsIEFWX0xPR19FUlJPUiwNCisgICAgICAgICAgICAgICAiZHVt
cF9yYXdfKiBleHBlY3RzIGFyZ3VtZW50IGZpbGU9L2Rpci9cbiIpOw0KKyAgICAgICAgcmV0dXJu
IEFWRVJST1IoRUlOVkFMKTsNCisgICAgfQ0KKyAgICBjb25zdCBjaGFyICpkaXIgPSBhcmcgKyBz
dHJsZW4ocHJlZml4KTsNCisNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmLT5uYl9vdXRwdXRz
OyBpKyspIHsNCisgICAgICAgIEFWRmlsdGVyTGluayAqbCA9IGYtPm91dHB1dHNbaV07DQorICAg
ICAgICBpZiAobC0+dHlwZSAhPSBBVk1FRElBX1RZUEVfQVVESU8pDQorICAgICAgICAgICAgY29u
dGludWU7DQorICAgICAgICBpZiAoc2V0KSB7DQorICAgICAgICAgICAgYXZfZnJlZXAoJmwtPmR1
bXBfcGNtX3BhdGgpOw0KKyAgICAgICAgICAgIGwtPmR1bXBfcGNtX3BhdGggPSBhdl9zdHJkdXAo
ZGlyKTsNCisgICAgICAgICAgICBpZiAoIWwtPmR1bXBfcGNtX3BhdGgpDQorICAgICAgICAgICAg
ICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7DQorICAgICAgICAgICAgbC0+ZHVtcF9wY20gPSAx
Ow0KKyAgICAgICAgfSBlbHNlDQorICAgICAgICAgICAgbGlua191bmluaXRfZHVtcF9wY20obCk7
DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KKy8qIHdyaXRlIG9uZSBmcmFtZSAqLw0K
K3N0YXRpYyBpbnQgbGlua19kdW1wX2ZyYW1lKEFWRmlsdGVyTGluayAqbGluaywgQVZGcmFtZSAq
ZnJhbWUpDQorew0KKyAgICBpbnQgcmV0Ow0KKyAgICBpZiAoIWxpbmstPmR1bXBfcGNtX2ZkcyAm
Jg0KKyAgICAgICAgKHJldCA9IGxpbmtfaW5pdF9kdW1wX3BjbShsaW5rKSkgPCAwKQ0KKyAgICAg
ICAgcmV0dXJuIHJldDsNCisNCisgICAgY29uc3QgaW50IGNoICAgICA9IGZyYW1lLT5jaF9sYXlv
dXQubmJfY2hhbm5lbHM7DQorICAgIGNvbnN0IGludCBicHMgICAgPSBhdl9nZXRfYnl0ZXNfcGVy
X3NhbXBsZShmcmFtZS0+Zm9ybWF0KTsNCisgICAgY29uc3QgaW50IG5zICAgICA9IGZyYW1lLT5u
Yl9zYW1wbGVzOw0KKyAgICBjb25zdCBpbnQgdG90bGVuID0gY2ggKiBucyAqIGJwczsNCisNCisg
ICAgLyogaW50ZXJsZWF2ZSBwbGFuYXIgdG8gcGFja2VkIGlmIG5lY2Vzc2FyeSAqLw0KKyAgICBp
ZiAoYXZfc2FtcGxlX2ZtdF9pc19wbGFuYXIoZnJhbWUtPmZvcm1hdCkpIHsNCisgICAgICAgIHVp
bnQ4X3QgKmJ1ZiA9IGF2X21hbGxvYyh0b3RsZW4pOw0KKyAgICAgICAgaWYgKCFidWYpDQorICAg
ICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsNCisgICAgICAgIGZvciAoaW50IHMgPSAw
OyBzIDwgbnM7IHMrKykNCisgICAgICAgICAgICBmb3IgKGludCBjID0gMDsgYyA8IGNoOyBjKysp
DQorICAgICAgICAgICAgICAgIG1lbWNweShidWYgKyAocypjaCArIGMpKmJwcywNCisgICAgICAg
ICAgICAgICAgICAgICAgICh1aW50OF90KilmcmFtZS0+ZXh0ZW5kZWRfZGF0YVtjXSArIHMqYnBz
LA0KKyAgICAgICAgICAgICAgICAgICAgICAgYnBzKTsNCisgICAgICAgIHJldCA9IHdyaXRlKGxp
bmstPmR1bXBfcGNtX2Zkc1swXSwgYnVmLCB0b3RsZW4pOw0KKyAgICAgICAgYXZfZnJlZShidWYp
Ow0KKyAgICB9IGVsc2UNCisgICAgICAgIHJldCA9IHdyaXRlKGxpbmstPmR1bXBfcGNtX2Zkc1sw
XSwgZnJhbWUtPmRhdGFbMF0sIHRvdGxlbik7DQorDQorICAgIGlmIChyZXQgPCAwKSB7DQorICAg
ICAgICBhdl9sb2cobGluay0+ZHN0LCBBVl9MT0dfRVJST1IsICJQQ00gZHVtcCB3cml0ZSBmYWls
ZWQ6ICVzXG4iLA0KKyAgICAgICAgICAgICAgIGF2X2VycjJzdHIocmV0KSk7DQorICAgICAgICBs
aW5rX3VuaW5pdF9kdW1wX3BjbShsaW5rKTsNCisgICAgICAgIHJldHVybiByZXQ7DQorICAgIH0N
CisgICAgcmV0dXJuIDA7DQorfQ0KKw0KIHN0YXRpYyB2b2lkIGxpbmtfZnJlZShBVkZpbHRlckxp
bmsgKipsaW5rKQ0KIHsNCkBADQoNCiBpbnQgYXZmaWx0ZXJfcHJvY2Vzc19jb21tYW5kKEFWRmls
dGVyQ29udGV4dCAqZmlsdGVyLCBjb25zdCBjaGFyICpjbWQsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICphcmcsIGNoYXIgKnJlcywgaW50IHJlc19sZW4sIGludCBm
bGFncykNCiB7DQpAQA0KLSAgICAgICAgaWYgKHJlcyA9PSBsb2NhbF9yZXMpDQotICAgICAgICAg
ICAgYXZfbG9nKGZpbHRlciwgQVZfTE9HX0lORk8sICIlcyIsIHJlcyk7DQotICAgICAgICByZXR1
cm4gMDsNCisgICAgICAgIGlmIChyZXMgPT0gbG9jYWxfcmVzKQ0KKyAgICAgICAgICAgIGF2X2xv
ZyhmaWx0ZXIsIEFWX0xPR19JTkZPLCAiJXMiLCByZXMpOw0KKyAgICAgICAgcmV0dXJuIDA7DQor
ICAgIH0gZWxzZSBpZiAoIXN0cmNtcChjbWQsICJkdW1wX3Jhd19zdGFydCIpKSB7DQorICAgICAg
ICByZXR1cm4gZmlsdGVyX3NldF9kdW1wX3BjbShmaWx0ZXIsIGFyZywgMSk7DQorICAgIH0gZWxz
ZSBpZiAoIXN0cmNtcChjbWQsICJkdW1wX3Jhd19zdG9wIikpIHsNCisgICAgICAgIHJldHVybiBm
aWx0ZXJfc2V0X2R1bXBfcGNtKGZpbHRlciwgYXJnLCAwKTsNCiAgICAgfSBlbHNlIGlmKCFzdHJj
bXAoY21kLCAiZW5hYmxlIikpIHsNCiAgICAgICAgIHJldHVybiBzZXRfZW5hYmxlX2V4cHIoZmZm
aWx0ZXJjdHgoZmlsdGVyKSwgYXJnKTsNCkBADQogICAgIC8qIC4uLiBleGlzdGluZyBjb2RlIC4u
LiAqLw0KDQorICAgIGlmIChsaW5rLT5kdW1wX3BjbSAmJiBsaW5rLT50eXBlID09IEFWTUVESUFf
VFlQRV9BVURJTykgew0KKyAgICAgICAgcmV0ID0gbGlua19kdW1wX2ZyYW1lKGxpbmssIGZyYW1l
KTsNCisgICAgICAgIGlmIChyZXQgPCAwKQ0KKyAgICAgICAgICAgIGF2X2xvZyhsaW5rLT5kc3Qs
IEFWX0xPR19FUlJPUiwNCisgICAgICAgICAgICAgICAgICAgIlBDTSBkdW1wIGZhaWxlZCB3aXRo
ICVzXG4iLCBhdl9lcnIyc3RyKHJldCkpOw0KKyAgICB9DQorDQogICAgIGxpLT5mcmFtZV9ibG9j
a2VkX2luID0gbGktPmZyYW1lX3dhbnRlZF9vdXQgPSAwOw0KQEANCmRpZmYgLS1naXQgYS9saWJh
dmZpbHRlci9hdmZpbHRlci5oIGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaA0KaW5kZXggYTg5ZDNj
ZjY1OC4uMGQ0YzkxYmI2YiAxMDA2NDQNCi0tLSBhL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmgNCisr
KyBiL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmgNCkBADQogICAgIEFWQ2hhbm5lbExheW91dCBjaF9s
YXlvdXQ7ICAvLy88IGNoYW5uZWwgbGF5b3V0IG9mIGN1cnJlbnQgYnVmZmVyDQoNCisgICAgaW50
ICAgICAgZHVtcF9wY207ICAgICAgICAgIC8vLzwgZW5hYmxlIGR1bXBpbmcgb24gdGhpcyBsaW5r
DQorICAgIGludCAgICAgKmR1bXBfcGNtX2ZkczsgICAgICAvLy88IG9uZSBGRCBwZXIgbGluayAo
Y3VycmVudGx5IDEpDQorICAgIHVuc2lnbmVkIG5iX2R1bXBfcGNtX2ZkczsgICAvLy88IG51bWJl
ciBvZiBGRHMNCisgICAgY2hhciAgICAqZHVtcF9wY21fcGF0aDsgICAgIC8vLzwgdXNlci1zdXBw
bGllZCBkaXJlY3RvcnkNCisNCiAgICAgLyoqDQogICAgICAqIERlZmluZSB0aGUgdGltZSBiYXNl
IHVzZWQgYnkgdGhlIFBUUyBvZiB0aGUgZnJhbWVzL3NhbXBsZXMNCiAgICAgICogd2hpY2ggd2ls
bCBwYXNzIHRocm91Z2ggdGhpcyBsaW5rLg0KLS0NCjIuMzQuMQ0KDQotLS0NCg0KRnJvbSA4Y2Y3
YmZhNTJhMTBiZTg3ZTBmMTdiOTc4MzE1OWIwZTgzZjk2MGY3IE1vbiBTZXAgMTcgMDA6MDA6MDAg
MjAwMQ0KRnJvbTogWWlibyBGYW5nIDxibHVleWJmNzc3QG91dGxvb2suY29tPg0KRGF0ZTogV2Vk
LCAyMyBBcHIgMjAyNSAxMjozODowMCArMDgwMA0KU3ViamVjdDogW1BBVENIIDIvMl0gZG9jL2Zp
bHRlcnM6IGRvY3VtZW50IGR1bXBfcmF3X3N0YXJ0IGFuZCBkdW1wX3Jhd19zdG9wDQogY29tbWFu
ZHMNCg0KU2lnbmVkLW9mZi1ieTogWWlibyBGYW5nIDxibHVleWJmNzc3QG91dGxvb2suY29tPg0K
LS0tDQogZG9jL2ZpbHRlcnMudGV4aSB8IDQ1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKw0KIDEgZmlsZSBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspDQoNCmRp
ZmYgLS1naXQgYS9kb2MvZmlsdGVycy50ZXhpIGIvZG9jL2ZpbHRlcnMudGV4aQ0KaW5kZXggNDVi
M2UwM2U1ZS4uNmEyZDIzZGYzZiAxMDA2NDQNCi0tLSBhL2RvYy9maWx0ZXJzLnRleGkNCisrKyBi
L2RvYy9maWx0ZXJzLnRleGkNCkBADQogQHNlY3Rpb24gYWR1bXBwY20NCg0KIER1bXAgcmF3IFBD
TSBhdWRpbyBkYXRhIGZvciBkZWJ1Z2dpbmcgYmV0d2VlbiBmaWx0ZXJzLg0KDQogVGhpcyBmaWx0
ZXIgYWxsb3dzIHdyaXRpbmcgcmF3IGF1ZGlvIGRhdGEgdG8gZGlzayBmcm9tIGFueSBhdWRpbyBs
aW5rDQogaW4gdGhlIGZpbHRlcmdyYXBoIGZvciBpbnNwZWN0aW9uLiBJdCBzdXBwb3J0cyBwbGFu
YXIgYW5kIHBhY2tlZCBmb3JtYXRzLA0KIGF1dG9tYXRpY2FsbHkgaW50ZXJsZWF2aW5nIHBsYW5h
ciBkYXRhIGZvciB3cml0aW5nLg0KDQogQHN1YnNlY3Rpb24gU3ludGF4DQoNCiBAZXhhbXBsZQ0K
IGR1bXBfcmF3X3N0YXJ0PWZpbGU9L3lvdXIvZHVtcC9kaXJlY3RvcnkvDQogQGVuZCBleGFtcGxl
DQoNCiBAc3Vic2VjdGlvbiBVc2FnZQ0KDQogVG8gZW5hYmxlIGR1bXBpbmcsIHVzZSB0aGUgQGNv
ZGV7ZHVtcF9yYXdfc3RhcnR9IGNvbW1hbmQ6DQoNCiBAZXhhbXBsZQ0KIGZmbXBlZyAtaSBpbnB1
dC53YXYgLWFmICJ2b2x1bWUsYXNlbmRjbWQ9JzAuMCBkdW1wX3Jhd19zdGFydCBmaWxlPS90bXAv
cGNtLyciIC1mIG51bGwgLQ0KIEBlbmQgZXhhbXBsZQ0KDQogVG8gc3RvcCBkdW1waW5nOg0KDQog
QGV4YW1wbGUNCiBhc2VuZGNtZD0nNS4wIGR1bXBfcmF3X3N0b3AnDQogQGVuZCBleGFtcGxlDQoN
CiBAc3Vic2VjdGlvbiBPcHRpb25zDQoNCiBAdGFibGUgQG9wdGlvbg0KIEBpdGVtIGZpbGUNCiBT
cGVjaWZ5IGEgZGlyZWN0b3J5IHBhdGggKG5vdCBhIGZpbGVuYW1lKSB3aGVyZSBQQ00gZGF0YSB3
aWxsIGJlIGR1bXBlZC4NCiBUaGUgZHVtcGVkIGZpbGUgaXMgbmFtZWQgQGNvZGV7PHNyYz4tPGRz
dD4ucGNtfSBhbmQgd2lsbCBiZSBvdmVyd3JpdHRlbiBpZiBpdCBhbHJlYWR5IGV4aXN0cy4NCiBA
ZW5kIHRhYmxlDQotLQ0KMi4zNC4xDQoNCg0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXw0KRnJvbTogZmZtcGVnLWRldmVsIDxmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3Jn
PiBvbiBiZWhhbGYgb2YgQW5kcmVhcyBSaGVpbmhhcmR0IDxhbmRyZWFzLnJoZWluaGFyZHRAb3V0
bG9vay5jb20+DQpTZW50OiAyNiBBcHJpbCAyMDI1IDM6MDANClRvOiBmZm1wZWctZGV2ZWxAZmZt
cGVnLm9yZyA8ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+DQpTdWJqZWN0OiBSZTogW0ZGbXBlZy1k
ZXZlbF0gW1BBVENIXSBhdmZpbHRlcjogYWRkIFBDTSBkdW1waW5nIGJldHdlZW4gZmlsdGVycyBm
b3IgYXVkaW8gZGVidWdnaW5nDQoNCqRApXWkaiCqzj86DQo+IFRoaXMgcGF0Y2ggaW50cm9kdWNl
cyBQQ00gZHVtcGluZyBzdXBwb3J0IGJldHdlZW4gQVZGaWx0ZXIgbGlua3MsIGludGVuZGVkIGZv
ciBhdWRpbyBkZWJ1Z2dpbmcuDQo+DQo+IEl0IGFkZHMgYSBjb25maWd1cmUtdGltZSBvcHRpb24g
YC0tZHVtcGRpcj1QQVRIYCB0byBzcGVjaWZ5IHRoZSBvdXRwdXQgZGlyZWN0b3J5IGZvciByYXcg
UENNIGRhdGEgKGRlZmF1bHQ6IC90bXAvKS4NCj4NCj4gVHdvIGNvbW1hbmRzIGFyZSBleHBvc2Vk
IHRvIGNvbnRyb2wgZHVtcGluZzoNCj4gICAtIGR1bXBfcmF3X3N0YXJ0IDxkc3RfZmlsdGVyX25h
bWU+DQo+ICAgLSBkdW1wX3Jhd19zdG9wIDxkc3RfZmlsdGVyX25hbWU+DQo+DQo+IER1bXAgZmls
ZXMgYXJlIHdyaXR0ZW4gYXM6IHNyY25hbWUtZHN0bmFtZS1jaGFubmVsLnBjbQ0KPg0KPiBTdXBw
b3J0cyBwYWNrZWQgYW5kIHBsYW5hciBmb3JtYXRzLiBGaWxlIGRlc2NyaXB0b3JzIGFyZSBtYW5h
Z2VkIGF1dG9tYXRpY2FsbHkgYW5kIHdvcmsgb25seSBvbiBhdWRpbyBsaW5rcy4NCj4NCj4gRXhh
bXBsZSB1c2FnZToNCj4gICAgIGF2ZmlsdGVyX3Byb2Nlc3NfY29tbWFuZChmaWx0ZXIsICJkdW1w
X3Jhd19zdGFydCIsICJ2b2x1bWUiLCBOVUxMLCAwLCAwKTsNCj4NCj4gVGhpcyBmZWF0dXJlIGhl
bHBzIGRldmVsb3BlcnMgZGVidWcgZmlsdGVyIGJlaGF2aW9yIGJ5IGluc3BlY3RpbmcgaW50ZXJt
ZWRpYXRlIGF1ZGlvIGRhdGEuDQo+IC0tLQ0KPiBGcm9tIDZhMzFjODVhZmQyODAwYzA5MDc2YzFl
MmI3YzczNGM3YjcxOWY3M2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxDQo+IEZyb206IFlpYm8g
RmFuZyA8Ymx1ZXliZjc3N0BvdXRsb29rLmNvbT4NCj4gRGF0ZTogV2VkLCAyMyBBcHIgMjAyNSAw
OToxNzo1MSArMDgwMA0KPiBTdWJqZWN0OiBbUEFUQ0ggMS8xXSBhdmZpbHRlcjogYWRkIFBDTSBk
dW1waW5nIGJldHdlZW4gZmlsdGVycyBmb3IgYXVkaW8NCj4gIGRlYnVnZ2luZw0KPg0KPiBUaGlz
IHBhdGNoIGFkZHMgdGhlIGFiaWxpdHkgdG8gZHVtcCByYXcgUENNIGF1ZGlvIGRhdGEgYmV0d2Vl
biBBVkZpbHRlciBsaW5rcy4NCj4gSXQgaW50cm9kdWNlcyBhIGNvbmZpZ3VyZS10aW1lIG9wdGlv
biBgLS1kdW1wZGlyPVBBVEhgIHRvIGNvbnRyb2wgdGhlIG91dHB1dA0KPiBkaXJlY3Rvcnkgb2Yg
ZHVtcCBmaWxlcyAoZGVmYXVsdDogL3RtcC8pLiBUaGlzIGZlYXR1cmUgaXMgaGVscGZ1bCBmb3Ig
ZGVidWdnaW5nDQo+IGZpbHRlciBiZWhhdmlvciBhbmQgdmVyaWZ5aW5nIGF1ZGlvIHByb2Nlc3Np
bmcuDQo+DQo+IFR3byBmaWx0ZXIgY29tbWFuZHMgYXJlIGFkZGVkOg0KPiAgIC0gZHVtcF9yYXdf
c3RhcnQgPGRzdF9maWx0ZXJfbmFtZT4NCj4gICAtIGR1bXBfcmF3X3N0b3AgPGRzdF9maWx0ZXJf
bmFtZT4NCj4NCj4gVGhlIFBDTSBmaWxlcyBhcmUgd3JpdHRlbiBpbiB0aGUgZm9ybWF0OiBzcmNu
YW1lLWRzdG5hbWUtPGNoYW5uZWw+LnBjbS4NCj4NCj4gU3VwcG9ydHMgYm90aCBwYWNrZWQgYW5k
IHBsYW5hciBmb3JtYXRzLiBGaWxlIGRlc2NyaXB0b3JzIGFyZSBhdXRvbWF0aWNhbGx5DQo+IG1h
bmFnZWQuIFdvcmtzIG9ubHkgb24gYXVkaW8gbGlua3MuDQo+DQo+IEV4YW1wbGUgdXNhZ2U6DQo+
ICAgYXZmaWx0ZXJfcHJvY2Vzc19jb21tYW5kKGZpbHRlciwgImR1bXBfcmF3X3N0YXJ0IiwgInZv
bHVtZSIsIE5VTEwsIDAsIDApOw0KPg0KPiBTaWduZWQtb2ZmLWJ5OiBZaWJvIEZhbmcgPGJsdWV5
YmY3NzdAb3V0bG9vay5jb20+DQo+IC0tLQ0KPiAgY29uZmlndXJlICAgICAgICAgICAgICB8ICAg
NyArKysNCj4gIGxpYmF2ZmlsdGVyL2F2ZmlsdGVyLmMgfCAxMTAgKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysNCj4gIGxpYmF2ZmlsdGVyL2F2ZmlsdGVyLmggfCAgIDQg
KysNCj4gIDMgZmlsZXMgY2hhbmdlZCwgMTIxIGluc2VydGlvbnMoKykNCj4NCj4gZGlmZiAtLWdp
dCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQ0KPiBpbmRleCBjOTRiOGVhYzQzLi4zODE2MzM3NDlk
IDEwMDc1NQ0KPiAtLS0gYS9jb25maWd1cmUNCj4gKysrIGIvY29uZmlndXJlDQo+IEBAIC01MjQs
NiArNTI0LDcgQEAgRGV2ZWxvcGVyIG9wdGlvbnMgKHVzZWZ1bCB3aGVuIHdvcmtpbmcgb24gRkZt
cGVnIGl0c2VsZik6DQo+ICAgIC0tZGlzYWJsZS1sYXJnZS10ZXN0cyAgICBkaXNhYmxlIHRlc3Rz
IHRoYXQgdXNlIGEgbGFyZ2UgYW1vdW50IG9mIG1lbW9yeQ0KPiAgICAtLWRpc2FibGUtcHR4LWNv
bXByZXNzaW9uIGRvbid0IGNvbXByZXNzIENVREEgUFRYIGNvZGUgZXZlbiB3aGVuIHBvc3NpYmxl
DQo+ICAgIC0tZGlzYWJsZS12ZXJzaW9uLXRyYWNraW5nIGRvbid0IGluY2x1ZGUgdGhlIGdpdC9y
ZWxlYXNlIHZlcnNpb24gaW4gdGhlIGJ1aWxkDQo+ICsgIC0tZHVtcGRpcj1QQVRIICAgICAgICAg
ICBsb2NhdGlvbiBvZiBwY20gZHVtcCBmaWxlcyB0byBzYXZlLg0KPg0KPiAgTk9URTogT2JqZWN0
IGZpbGVzIGFyZSBidWlsdCBhdCB0aGUgcGxhY2Ugd2hlcmUgY29uZmlndXJlIGlzIGxhdW5jaGVk
Lg0KPiAgRU9GDQo+IEBAIC0yNjkwLDYgKzI2OTEsNyBAQCBQQVRIU19MSVNUPSINCj4gICAgICBw
cmVmaXgNCj4gICAgICBzaGxpYmRpcg0KPiAgICAgIGluc3RhbGxfbmFtZV9kaXINCj4gKyAgICBk
dW1wZGlyDQo+ICAiDQo+DQo+ICBDTURMSU5FX1NFVD0iDQo+IEBAIC00MTIzLDYgKzQxMjUsOSBA
QCBpbmNkaXJfZGVmYXVsdD0nJHtwcmVmaXh9L2luY2x1ZGUnDQo+ICBsaWJkaXJfZGVmYXVsdD0n
JHtwcmVmaXh9L2xpYicNCj4gIG1hbmRpcl9kZWZhdWx0PScke3ByZWZpeH0vc2hhcmUvbWFuJw0K
Pg0KPiArIyBydW50aW1lIHBhdGgNCj4gK2R1bXBkaXJfZGVmYXVsdD0nL3RtcC8nDQo+ICsNCj4g
ICMgdG9vbGNoYWluDQo+ICBhcl9kZWZhdWx0PSJhciINCj4gIGNjX2RlZmF1bHQ9ImdjYyINCj4g
QEAgLTgxMTgsNiArODEyMyw3IEBAIERPQ0RJUj1cJChERVNURElSKSRkb2NkaXINCj4gIE1BTkRJ
Uj1cJChERVNURElSKSRtYW5kaXINCj4gIFBLR0NPTkZJR0RJUj1cJChERVNURElSKSRwa2djb25m
aWdkaXINCj4gIElOU1RBTExfTkFNRV9ESVI9JGluc3RhbGxfbmFtZV9kaXINCj4gK0RVTVBESVI9
JGR1bXBkaXINCj4gIFNSQ19QQVRIPSRzb3VyY2VfcGF0aA0KPiAgU1JDX0xJTks9JHNvdXJjZV9s
aW5rDQo+ICBpZm5kZWYgTUFJTl9NQUtFRklMRQ0KPiBAQCAtODI2Nyw2ICs4MjczLDcgQEAgY2F0
ID4gJFRNUEggPDxFT0YNCj4gICNkZWZpbmUgQ09ORklHX1RISVNfWUVBUiAyMDI1DQo+ICAjZGVm
aW5lIEZGTVBFR19EQVRBRElSICIkKGV2YWwgY19lc2NhcGUgJGRhdGFkaXIpIg0KPiAgI2RlZmlu
ZSBBVkNPTlZfREFUQURJUiAiJChldmFsIGNfZXNjYXBlICRkYXRhZGlyKSINCj4gKyNkZWZpbmUg
RkZNUEVHX0RVTVBESVIgIiQoZXZhbCBjX2VzY2FwZSAkZHVtcGRpcikiDQo+ICAjZGVmaW5lIEND
X0lERU5UICIkKGNfZXNjYXBlICR7Y2NfaWRlbnQ6LVVua25vd24gY29tcGlsZXJ9KSINCj4gICNk
ZWZpbmUgT1NfTkFNRSAkdGFyZ2V0X29zDQo+ICAjZGVmaW5lIEVYVEVSTl9QUkVGSVggIiR7ZXh0
ZXJuX3ByZWZpeH0iDQo+IGRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9hdmZpbHRlci5jIGIvbGli
YXZmaWx0ZXIvYXZmaWx0ZXIuYw0KPiBpbmRleCA2NGMxMDc1YzQwLi45ZmM2MzA4NTQ0IDEwMDY0
NA0KPiAtLS0gYS9saWJhdmZpbHRlci9hdmZpbHRlci5jDQo+ICsrKyBiL2xpYmF2ZmlsdGVyL2F2
ZmlsdGVyLmMNCj4gQEAgLTE5LDYgKzE5LDkgQEANCj4gICAqIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EN
Cj4gICAqLw0KPg0KPiArI2luY2x1ZGUgPGZjbnRsLmg+DQo+ICsjaW5jbHVkZSA8dW5pc3RkLmg+
DQo+ICsNCj4gICNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCINCj4gICNpbmNsdWRlICJs
aWJhdnV0aWwvYXZzdHJpbmcuaCINCj4gICNpbmNsdWRlICJsaWJhdnV0aWwvYnByaW50LmgiDQo+
IEBAIC0xOTUsNiArMTk4LDY2IEBAIGludCBhdmZpbHRlcl9saW5rKEFWRmlsdGVyQ29udGV4dCAq
c3JjLCB1bnNpZ25lZCBzcmNwYWQsDQo+ICAgICAgcmV0dXJuIDA7DQo+ICB9DQo+DQo+ICtzdGF0
aWMgYXZfY29sZCB2b2lkIGxpbmtfdW5pbml0X2R1bXBfcGNtKEFWRmlsdGVyTGluayAqbGluaywg
aW50IHN0b3ApDQo+ICt7DQo+ICsgICAgaWYgKGxpbmstPmR1bXBfcGNtX2Zkcykgew0KPiArICAg
ICAgICBpbnQgaTsNCj4gKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGxpbmstPm5iX2R1bXBfcGNt
X2ZkczsgaSsrKSB7DQo+ICsgICAgICAgICAgICBpZiAobGluay0+ZHVtcF9wY21fZmRzW2ldKQ0K
PiArICAgICAgICAgICAgICAgIGNsb3NlKGxpbmstPmR1bXBfcGNtX2Zkc1tpXSk7DQo+ICsgICAg
ICAgIH0NCj4gKyAgICAgICAgYXZfZnJlZShsaW5rLT5kdW1wX3BjbV9mZHMpOw0KPiArICAgICAg
ICBsaW5rLT5kdW1wX3BjbV9mZHMgICAgPSBOVUxMOw0KPiArICAgICAgICBsaW5rLT5uYl9kdW1w
X3BjbV9mZHMgPSAwOw0KPiArICAgIH0NCj4gKw0KPiArICAgIGlmIChzdG9wKQ0KPiArICAgICAg
ICBsaW5rLT5kdW1wX3BjbSA9IDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBhdl9jb2xkIGludCBs
aW5rX2luaXRfZHVtcF9wY20oQVZGaWx0ZXJMaW5rICpsaW5rKQ0KPiArew0KPiArICAgIGNoYXIg
cGF0aFs0MDk2XTsNCj4gKyAgICBpbnQgZmQsIGk7DQo+ICsNCj4gKyAgICBsaW5rLT5uYl9kdW1w
X3BjbV9mZHMgPSBhdl9zYW1wbGVfZm10X2lzX3BsYW5hcihsaW5rLT5mb3JtYXQpPyBsaW5rLT5j
aF9sYXlvdXQubmJfY2hhbm5lbHMgOiAxOw0KPiArICAgIGxpbmstPmR1bXBfcGNtX2ZkcyA9IGF2
X21hbGxvY19hcnJheShsaW5rLT5uYl9kdW1wX3BjbV9mZHMsIHNpemVvZihpbnQpKTsNCj4gKyAg
ICBpZiAoIWxpbmstPmR1bXBfcGNtX2ZkcykNCj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5P
TUVNKTsNCj4gKw0KPiArICAgIGZvciAoaSA9IDA7IGkgPCBsaW5rLT5uYl9kdW1wX3BjbV9mZHM7
IGkrKykgew0KPiArICAgICAgICBzbnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksIEZGTVBFR19E
VU1QRElSIiUuMTZzLSUuOHMtJWQucGNtIiwgbGluay0+c3JjLT5uYW1lLCBsaW5rLT5kc3QtPm5h
bWUsIGkpOw0KPiArICAgICAgICBmZCA9IG9wZW4ocGF0aCwgT19XUk9OTFkgfCBPX0NSRUFUIHwg
T19UUlVOQywgMDY0NCk7DQo+ICsgICAgICAgIGlmIChmZCA8IDApIHsNCj4gKyAgICAgICAgICAg
IGxpbmtfdW5pbml0X2R1bXBfcGNtKGxpbmssIDEpOw0KPiArICAgICAgICAgICAgcmV0dXJuIEFW
RVJST1IoZXJybm8pOw0KPiArICAgICAgICB9DQo+ICsgICAgICAgIGxpbmstPmR1bXBfcGNtX2Zk
c1tpXSA9IGZkOw0KPiArICAgIH0NCj4gKw0KPiArICAgIHJldHVybiAwOw0KPiArfQ0KPiArDQo+
ICtzdGF0aWMgaW50IGZpbHRlcl9zZXRfZHVtcF9wY20oQVZGaWx0ZXJDb250ZXh0ICpmaWx0ZXIs
IGNvbnN0IGNoYXIgKnRhcmdldCwgaW50IHNldCkNCj4gK3sNCj4gKyAgICBpbnQgaTsNCj4gKw0K
PiArICAgIGZvciAoaSA9IDA7IGkgPCBmaWx0ZXItPm5iX291dHB1dHM7IGkrKykgew0KPiArICAg
ICAgICBBVkZpbHRlckxpbmsgKmxpbmsgPSBmaWx0ZXItPm91dHB1dHNbaV07DQo+ICsgICAgICAg
IGlmICghdGFyZ2V0IHx8ICFzdHJjbXAobGluay0+ZHN0LT5uYW1lLCB0YXJnZXQpKSB7DQo+ICsg
ICAgICAgICAgICBpZiAoc2V0KSB7DQo+ICsgICAgICAgICAgICAgICAgbGluay0+ZHVtcF9wY20g
PSAxOw0KPiArICAgICAgICAgICAgfSBlbHNlDQo+ICsgICAgICAgICAgICAgICAgbGlua191bmlu
aXRfZHVtcF9wY20obGluaywgMSk7DQo+ICsNCj4gKyAgICAgICAgICAgIGlmICh0YXJnZXQpDQo+
ICsgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ICsgICAgICAgIH0NCj4gKyAgICB9DQo+ICsN
Cj4gKyAgICByZXR1cm4gdGFyZ2V0ID8gQVZFUlJPUihFSU5WQUwpIDogMDsNCj4gK30NCj4gKw0K
PiAgc3RhdGljIHZvaWQgbGlua19mcmVlKEFWRmlsdGVyTGluayAqKmxpbmspDQo+ICB7DQo+ICAg
ICAgRmlsdGVyTGlua0ludGVybmFsICpsaTsNCj4gQEAgLTIwOCw2ICsyNzEsOCBAQCBzdGF0aWMg
dm9pZCBsaW5rX2ZyZWUoQVZGaWx0ZXJMaW5rICoqbGluaykNCj4gICAgICBhdl9jaGFubmVsX2xh
eW91dF91bmluaXQoJigqbGluayktPmNoX2xheW91dCk7DQo+ICAgICAgYXZfZnJhbWVfc2lkZV9k
YXRhX2ZyZWUoJigqbGluayktPnNpZGVfZGF0YSwgJigqbGluayktPm5iX3NpZGVfZGF0YSk7DQo+
DQo+ICsgICAgbGlua191bmluaXRfZHVtcF9wY20oKmxpbmssIDEpOw0KPiArDQo+ICAgICAgYXZf
YnVmZmVyX3VucmVmKCZsaS0+bC5od19mcmFtZXNfY3R4KTsNCj4NCj4gICAgICBhdl9mcmVlcChs
aW5rKTsNCj4gQEAgLTYxNyw2ICs2ODIsMTAgQEAgaW50IGF2ZmlsdGVyX3Byb2Nlc3NfY29tbWFu
ZChBVkZpbHRlckNvbnRleHQgKmZpbHRlciwgY29uc3QgY2hhciAqY21kLCBjb25zdCBjaGENCj4g
ICAgICAgICAgaWYgKHJlcyA9PSBsb2NhbF9yZXMpDQo+ICAgICAgICAgICAgICBhdl9sb2coZmls
dGVyLCBBVl9MT0dfSU5GTywgIiVzIiwgcmVzKTsNCj4gICAgICAgICAgcmV0dXJuIDA7DQo+ICsg
ICAgfWVsc2UgaWYoIXN0cmNtcChjbWQsICJkdW1wX3Jhd19zdGFydCIpKSB7DQo+ICsgICAgICAg
IHJldHVybiBmaWx0ZXJfc2V0X2R1bXBfcGNtKGZpbHRlciwgYXJnLCAxKTsNCj4gKyAgICB9ZWxz
ZSBpZighc3RyY21wKGNtZCwgImR1bXBfcmF3X3N0b3AiKSkgew0KPiArICAgICAgICByZXR1cm4g
ZmlsdGVyX3NldF9kdW1wX3BjbShmaWx0ZXIsIGFyZywgMCk7DQo+ICAgICAgfWVsc2UgaWYoIXN0
cmNtcChjbWQsICJlbmFibGUiKSkgew0KPiAgICAgICAgICByZXR1cm4gc2V0X2VuYWJsZV9leHBy
KGZmZmlsdGVyY3R4KGZpbHRlciksIGFyZyk7DQo+ICAgICAgfWVsc2UgaWYgKGZmZmlsdGVyKGZp
bHRlci0+ZmlsdGVyKS0+cHJvY2Vzc19jb21tYW5kKSB7DQo+IEBAIC0xMDUwLDYgKzExMTksNDEg
QEAgZmFpbDoNCj4gICAgICByZXR1cm4gcmV0Ow0KPiAgfQ0KPg0KPiArc3RhdGljIGludCBsaW5r
X2R1bXBfZnJhbWUoQVZGaWx0ZXJMaW5rICpsaW5rLCBBVkZyYW1lICpmcmFtZSkNCj4gK3sNCj4g
KyAgICBpbnQgc2FtcGxlc19zaXplLCByZXQ7DQo+ICsNCj4gKyAgICBpZiAoIWxpbmstPmR1bXBf
cGNtX2Zkcykgew0KPiArICAgICAgICByZXQgPSBsaW5rX2luaXRfZHVtcF9wY20obGluayk7DQo+
ICsgICAgICAgIGlmIChyZXQgPCAwKQ0KPiArICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gKyAg
ICB9DQo+ICsNCj4gKyAgICBzYW1wbGVzX3NpemUgPSBhdl9nZXRfYnl0ZXNfcGVyX3NhbXBsZShm
cmFtZS0+Zm9ybWF0KSAqIGZyYW1lLT5uYl9zYW1wbGVzOw0KPiArICAgIGlmIChhdl9zYW1wbGVf
Zm10X2lzX3BsYW5hcihmcmFtZS0+Zm9ybWF0KSkgew0KPiArICAgICAgICBpbnQgaTsNCj4gKyAg
ICAgICAgZm9yIChpID0gMDsgaSA8IGxpbmstPm5iX2R1bXBfcGNtX2ZkcyAmJiBpIDwgZnJhbWUt
PmNoX2xheW91dC5uYl9jaGFubmVsczsgaSsrKSB7DQo+ICsgICAgICAgICAgICBpZiAoaSA8IEFW
X05VTV9EQVRBX1BPSU5URVJTKSB7DQo+ICsgICAgICAgICAgICAgICAgcmV0ID0gd3JpdGUobGlu
ay0+ZHVtcF9wY21fZmRzW2ldLCBmcmFtZS0+ZGF0YVtpXSwgc2FtcGxlc19zaXplKTsNCj4gKyAg
ICAgICAgICAgIH0gZWxzZQ0KPiArICAgICAgICAgICAgICAgIHJldCA9IHdyaXRlKGxpbmstPmR1
bXBfcGNtX2Zkc1tpXSwgZnJhbWUtPmV4dGVuZGVkX2RhdGFbaSAtIEFWX05VTV9EQVRBX1BPSU5U
RVJTXSwgc2FtcGxlc19zaXplKTsNCj4gKw0KPiArICAgICAgICAgICAgaWYgKHJldCA8IDApDQo+
ICsgICAgICAgICAgICAgICAgZ290byBlcnI7DQo+ICsgICAgICAgIH0NCj4gKyAgICB9IGVsc2Ug
ew0KPiArICAgICAgICByZXQgPSB3cml0ZShsaW5rLT5kdW1wX3BjbV9mZHNbMF0sIGZyYW1lLT5k
YXRhWzBdLCBzYW1wbGVzX3NpemUgKiBmcmFtZS0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzKTsNCj4g
KyAgICAgICAgaWYgKHJldCA8IDApDQo+ICsgICAgICAgICAgICBnb3RvIGVycjsNCj4gKw0KPiAr
ICAgIH0NCj4gKw0KPiArICAgIHJldHVybiAwOw0KPiArZXJyOg0KPiArICAgIGxpbmtfdW5pbml0
X2R1bXBfcGNtKGxpbmssIDEpOw0KPiArICAgIHJldHVybiBBVkVSUk9SKGVycm5vKTsNCj4gK30N
Cj4gKw0KPiAgaW50IGZmX2ZpbHRlcl9mcmFtZShBVkZpbHRlckxpbmsgKmxpbmssIEFWRnJhbWUg
KmZyYW1lKQ0KPiAgew0KPiAgICAgIEZpbHRlckxpbmtJbnRlcm5hbCAqIGNvbnN0IGxpID0gZmZf
bGlua19pbnRlcm5hbChsaW5rKTsNCj4gQEAgLTEwODcsNiArMTE5MSwxMiBAQCBpbnQgZmZfZmls
dGVyX2ZyYW1lKEFWRmlsdGVyTGluayAqbGluaywgQVZGcmFtZSAqZnJhbWUpDQo+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLT50aW1lX2Jhc2UpOw0KPiAgICAg
IH0NCj4NCj4gKyAgICBpZiAobGluay0+ZHVtcF9wY20gJiYgbGluay0+dHlwZSA9PSBBVk1FRElB
X1RZUEVfQVVESU8pIHsNCj4gKyAgICAgICAgcmV0ID0gbGlua19kdW1wX2ZyYW1lKGxpbmssIGZy
YW1lKTsNCj4gKyAgICAgICAgaWYgKHJldCA8IDApDQo+ICsgICAgICAgICAgICBhdl9sb2cobGlu
ay0+ZHN0LCBBVl9MT0dfRVJST1IsICJEdW1wIHBjbSBmaWxlcyBmYWlsZWQgd2l0aCAlZFxuIiwg
cmV0KTsNCj4gKyAgICB9DQo+ICsNCj4gICAgICBsaS0+ZnJhbWVfYmxvY2tlZF9pbiA9IGxpLT5m
cmFtZV93YW50ZWRfb3V0ID0gMDsNCj4gICAgICBsaS0+bC5mcmFtZV9jb3VudF9pbisrOw0KPiAg
ICAgIGxpLT5sLnNhbXBsZV9jb3VudF9pbiArPSBmcmFtZS0+bmJfc2FtcGxlczsNCj4gZGlmZiAt
LWdpdCBhL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmggYi9saWJhdmZpbHRlci9hdmZpbHRlci5oDQo+
IGluZGV4IGE4OWQzY2Y2NTguLjZkMDRiOWRhNzcgMTAwNjQ0DQo+IC0tLSBhL2xpYmF2ZmlsdGVy
L2F2ZmlsdGVyLmgNCj4gKysrIGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaA0KPiBAQCAtNDA0LDYg
KzQwNCwxMCBAQCBzdHJ1Y3QgQVZGaWx0ZXJMaW5rIHsNCj4gICAgICBpbnQgc2FtcGxlX3JhdGU7
ICAgICAgICAgICAgLy8vPCBzYW1wbGVzIHBlciBzZWNvbmQNCj4gICAgICBBVkNoYW5uZWxMYXlv
dXQgY2hfbGF5b3V0OyAgLy8vPCBjaGFubmVsIGxheW91dCBvZiBjdXJyZW50IGJ1ZmZlciAoc2Vl
IGxpYmF2dXRpbC9jaGFubmVsX2xheW91dC5oKQ0KPg0KPiArICAgIGludCAgICAgICAgZHVtcF9w
Y207ICAgICAgIC8vLzwgZmxhZyB0byBkdW1wIHBjbQ0KPiArICAgIGludCAgICAgICAgKmR1bXBf
cGNtX2ZkczsgICAvLy88IGR1bXAgZmlsZXMNCj4gKyAgICB1bnNpZ25lZCBuYl9kdW1wX3BjbV9m
ZHM7ICAgLy8vPCBudW1iZXIgb2YgZHVtcCBmaWxlDQo+ICsNCj4gICAgICAvKioNCj4gICAgICAg
KiBEZWZpbmUgdGhlIHRpbWUgYmFzZSB1c2VkIGJ5IHRoZSBQVFMgb2YgdGhlIGZyYW1lcy9zYW1w
bGVzDQo+ICAgICAgICogd2hpY2ggd2lsbCBwYXNzIHRocm91Z2ggdGhpcyBsaW5rLg0KPiAtLQ0K
PiAyLjM0LjENCj4NCg0KQ2FuJ3QgeW91IHVzZSB0aGUgYXNwbGl0IGZpbHRlciB0byBkdXBsaWNh
dGUgdGhlIGF1ZGlvPw0KDQotIEFuZHJlYXMNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18NCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QNCmZmbXBlZy1k
ZXZlbEBmZm1wZWcub3JnDQpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1w
ZWctZGV2ZWwNCg0KVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsDQpm
Zm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUi
Lg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVn
LWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBl
Zy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNp
dCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdp
dGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=