From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2072a.outbound.protection.outlook.com [IPv6:2a01:111:f400:7e83::72a]) by sourceware.org (Postfix) with ESMTPS id DC218385DC03 for ; Fri, 3 Jun 2022 14:00:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org DC218385DC03 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=cornell.edu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=cornell.edu ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Qi2iv+t/pqVFUWgqIszTlapXJgkx7UZUc1Kmimuzmum45dnZbwhpu3mxeMg4UB1kQl2lQKqVEYSeCUxzxSE7CMIjar1NTwisbBfTSF3yZfoy+uvuRpaK+1WjaXohtf08XNqWSjO4KjAdkdh7iNcW7y8yuPnOhIPGvdRAGf5uhO7lil8VKB4c8XKA2em6PmfZ4J1rKUAIq8Uj/YXGBpR5CzKYZbYL3XiG+Mpp2iDVOQ2+Lb0oy5St9ImZDvROQb3V3sxhSi9AxxnygN0zxljJRPv9XwCyjDBCLiQ5eYm+sf6NBim/UQoA1jBC7Trn42CjlAze0dQ9kozgvjCls8SDOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=aZ7CHIZBIv2gfBYLCfqBgECK/LqMmb/mnsaqCVc4tFo=; b=eCkPpfPHmFpY6HKJ9uqlCMQijncVlKmAKRxFElfkYxss+NTrJR7ktN9g6KlxEemchbOTUoqsLEr2FPqaeC/Yb8izuX0RKkQDu451Xi9XLZaH3XaQDHNEQO3gew5WadNWnZtQoQo+r0D7zZ/N5ED3AkFmxQYD7Zi/7ncVylJn67Bnl0MOBluUeep1hKEsb7TVkMUxMCPOKF9Qs/QtJ1DeR+NZ7OY74nkAUPskzkDhojGD7kskVdqEnmi5rGrvggr49Q5w1q0DCcICwrqvMmoSQDumI8cs8/LpSUU/2Ge0sTCOIwkxR++Fdr6YYXn9AxAcKbzpY4yMTDUeyWAQ8P0wng== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cornell.edu; dmarc=pass action=none header.from=cornell.edu; dkim=pass header.d=cornell.edu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cornell.edu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aZ7CHIZBIv2gfBYLCfqBgECK/LqMmb/mnsaqCVc4tFo=; b=N9jsmvdnUoAgEbDA1eEHzIn2DbKncQIanJx6AnFOViVw8kt4vjbD76uUAQD50zGLlOyyvZwIANPuQCZh1j3Ae33P+GDldojNqfwwIy8DKppcuD9hgp8ZLS4th2gbwSx2Xqc5ftD4a/CWRtPr0HN2/3w9NXiJvSajTS8OPKxr2gA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cornell.edu; Received: from BN7PR04MB4388.namprd04.prod.outlook.com (2603:10b6:406:f8::19) by DM6PR04MB6636.namprd04.prod.outlook.com (2603:10b6:5:24e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.15; Fri, 3 Jun 2022 14:00:21 +0000 Received: from BN7PR04MB4388.namprd04.prod.outlook.com ([fe80::e48c:b440:3098:a050]) by BN7PR04MB4388.namprd04.prod.outlook.com ([fe80::e48c:b440:3098:a050%6]) with mapi id 15.20.5293.019; Fri, 3 Jun 2022 14:00:21 +0000 Content-Type: multipart/mixed; boundary="------------0Nt2uJiMQEKC9QXYCzfpurTa" Message-ID: <2d54f846-365f-848f-4fdb-1c22d4c1bfa0@cornell.edu> Date: Fri, 3 Jun 2022 10:00:19 -0400 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 Content-Language: en-US To: cygwin-patches From: Ken Brown Subject: [PATCH] Cygwin: remove most occurrences of __stdcall, WINAPI, and, __cdecl X-ClientProxiedBy: BL1PR13CA0369.namprd13.prod.outlook.com (2603:10b6:208:2c0::14) To BN7PR04MB4388.namprd04.prod.outlook.com (2603:10b6:406:f8::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: eb66e418-2752-478e-bf6a-08da45696632 X-MS-TrafficTypeDiagnostic: DM6PR04MB6636:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Gc5v4NOhdmQ+pdgh6sKrMkxquuh1YMvy8DwVCzhQNpgBYlmmAL+I4X+hrWY99X+drcbs53NaOLDVNQaw0fe9U8rwHgovMs26Am1MTwH5pil/OK0XVCwKgubojiigxyOh5AGVCuNYDcsoZdUEdkcl89ykQoY+DuSkySw2zaSxzCKzoI9lrdVEZ/swoQfgfba5raQXnSeOs0kVr3pRYN0bsa/KGXJ9XZ/fpVvjyUjgVmase9GQeZg0+bJd/81fEUy6v9MXfslhGa2oNcbWrh0axD0mucrCtZk98khmsG9GIqWoojASlcGk1+oVROctACNm9U2Sd3ceJCT5JIUpTMndO/+ZydnCD2+h+totskIfRxT6cS4dnA6w3V3KrJEj3BrtnXUQqr+Rdsc7B6JJxCGR4FDuf8LKPonTNFUvoEv1bBEH/NXGT0sPhoHelMIz985FVX+6CdkyYiTtJL+AHKDypCs+UdtjvyePaRC+HNZp5A1kYAFuO1Ad/3D54cDaOb+PI59G57/z4ySkLZOmJCVIZZJIDxs4lSL8fO8yHGteWAH2g+L2bMH6uL+j9IkqHKXDmLKByBnjlH5TEbxwePpFprlm+C+CQoL80JUJI6aC4+/3vyb0UfVn1KMtm2LwErBFVi64iHtd9x7wVbsXto480MAwOUc0YHkn5soLsgLWA7gQkX1MJxW3FnE6+Cq6c1SiaxA7iIkM/NN4vXTB9CNMCweDRNezV2NEMUBA216VKK0= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN7PR04MB4388.namprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(36756003)(8676002)(564344004)(86362001)(19618925003)(6916009)(2616005)(66476007)(66946007)(66556008)(33964004)(6506007)(31686004)(31696002)(508600001)(235185007)(2906002)(6512007)(786003)(75432002)(316002)(8936002)(186003)(38100700002)(6486002)(45980500001)(43740500002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dzdCbEFqcG9tR096Wm5HUmJSY25nM2V4NEJFQkpobThtRmpobkhCcisvMWRR?= =?utf-8?B?UDNiVjZpcGM3OXJkdzV4TitHaTNMOERMdW1HdHZnRlRHRzcrRmhOMWRPalJh?= =?utf-8?B?VTFVY2M3UVd0NTd3bU00aHdrS0FBOSszRlVuMldTOWlQTHdEcUlndHlyKzNW?= =?utf-8?B?SjVSM0hZZTN5eEUrVEIrSms2L2QwKzlBL1AyZnRyQ2hwRlF6Z2JaUUp5SFls?= =?utf-8?B?bGN6TllwdmQwYWpwQnQ5RFR3MVNUMWNNcWR4MEpXK0xWcVFLaTlPTHhEYzJk?= =?utf-8?B?ZUQzbXlEOWRYeGwzbWZMc0JGdmlKeTdjTVZ5Z3ZyaVpTUTJvdzJ3Zmx0bno2?= =?utf-8?B?bUUvNU9pQUU5MHJBRHl5eW4yM1lKb0RhcERRV085REo5TS9MalBKMWdOb2ow?= =?utf-8?B?R1RoWjhCUSt2UTVaOGRUL2RRQXpWYUIwOHpQSkVFaTE1Ym1aMXNtRFBzYXJ6?= =?utf-8?B?eXJhZVMvRU5Ja3lJYWZTNUJuNWVlUXR3b1RCZWJyVktTQzFGdjdpZ3ZjaFZN?= =?utf-8?B?QkRJQmhNdTFQVU9LWmtQd0h6M2kwR1FhY21JbEF1aytRVEZRN2FHRnVzM0Ix?= =?utf-8?B?MEJwODF1NFZ2MVFNNW10WFYzR25BcDhTYjlEM3JPSXdmc2toWVI5QUpIZGxl?= =?utf-8?B?OUNBOVd1WjZhNUZ3cmhoR1Z6dFFUOHVuR3ozanV1bFlGaXRxSVY1L0ZSTXJp?= =?utf-8?B?SlBnd2g2LzJ1Sm5ycWo4bVFqb0lCYmo2RHNYMzBtenVBZTZKSUlwUDduQTZx?= =?utf-8?B?bkMzcXE2NXl6VFFjQW03SUF4Y1M4aHJHemxTTTE1UVZINFJLUzZnaHNIcjFo?= =?utf-8?B?ZFNGSExXdm5ld3QveHZIUDZRKzllVW0zdUtKSU9rTXdHL2dyaHhJblNRWjlx?= =?utf-8?B?MVJoQ2R3SkNVUkR6bjVJeVJzd1p1bENudWF5b0JsSU9hMGJmTjRPMHYxLzYv?= =?utf-8?B?UTRobWxDVHBmOEJkWmQ1eSt4WXVQeUpoMWFYUUZESysybXZRNWtMRHdmcXlN?= =?utf-8?B?Z2xoNUZaaWxvaUkxQTB0ZjJMVmNNdmhOQXp2dXVCNjcxZm82UWtES0NGUTNN?= =?utf-8?B?YzZiRldxc2crRkdTY2dyQVM1SFpoS0doblR5Z2hFbmg4WnE4RFRINFBTSjFQ?= =?utf-8?B?QUt2dytOTmRKc3BEc0swTzlpblRWS0xvT1QxUkJnT09UUDRpRkRESUVWQlNo?= =?utf-8?B?dFBQQUR3Ync0M0RMRlMxSmhCS04zdURmRjZlSE1CU2xiUGRCVHBVWkczYzEw?= =?utf-8?B?M1QyVzRWWlNXNjJrTTBVbjZ3QmtJUUdFNmhXWDRxclZvYm1IdnFUcWZ0SFJE?= =?utf-8?B?cW1HbFlGMXRLM2p4QXAvUHFNakdJY2J3aDdjdjBHam9PRjROUm54U3BvRkZ6?= =?utf-8?B?ejU0TkF5SjBZMCs0UDczTTNCS011T0FadlV1ZUJDWVU0dzJaTU5jZWpySXdC?= =?utf-8?B?TlpHRnBEalJPck80eWJxaGhlWlphVGp5WUdOMVE5VFpVNGtWMGx1WTkxb1pO?= =?utf-8?B?UyszNytnZ1Zra3NLSWt6TEpQdmlqQjJFSUN3L3F6enN6ZVFaMU5MZDZPYTVO?= =?utf-8?B?d0RrWm1pQU1JSnc3dEdGdHlPRERWN2NQTnRuYlFBQk02N2lVMDBWeDlRNzdI?= =?utf-8?B?djRkVzBvakpiSFlGeG9DUG0ySzhoYzd6K2U4SWdvWU5iZFloaU1aWTJBRTd1?= =?utf-8?B?bWFLTlk0Q0pUNU8vVWtkTEMrQW5od0NoZVRlZGR6L3FVTGlsTXlla1RXdExI?= =?utf-8?B?OTYrb1MyT0ZUaVRzZjBNQTV3Q096TVMwZFJnSThtemxreFgzRjk1NmZEOWlR?= =?utf-8?B?c3Z2cHY3STZjWnlSVDl0N1ZQY2ttbW5KLzJtVDRHZUxCeXlLTGNLQWVLNVMx?= =?utf-8?B?UHdnT1Z6U2h4c29uVWduS2FDanpkVGNHdFRVUGsxQkFJYkJPTFF3MmNONXRL?= =?utf-8?B?YkI4cVJ1RlNrYmZpSVVRTEN4N1g1bGRlcWQzODRrOG5RbXpSRXlMRmZKZXgv?= =?utf-8?B?dXR0NTllM1Rlb09PQm80WVRHeTBXNDJMeDQ5KzlGOGgwYTBoa3pqZ21pdWpm?= =?utf-8?B?M0h2cGIzUWp6Tk5IRUc0WlZ4bnk4VElMTTVPS1o4ZGc0ZUZPd2kvQkU4L0pQ?= =?utf-8?B?L3ZkbE03Mm5KQ00zYWpIRGRVb2NwdnVDdG9lUmQyOUhRb0U2QWcrV045UXRN?= =?utf-8?B?aFJOZHlFa2JpNFhJVlh4aVBTM2JjaHlIOFlvNUFHKzl2bVg5WWF1Vm8rZkNN?= =?utf-8?B?OGIyMDEzWUNoNkFxWXdRUkY2MHhYSUFBa1ZUWXlMMVBOUEhGRkhNd1dsR2dN?= =?utf-8?B?bUV5Q011dnE2Z0o2c0s5RnVLdkRhMTJiOG5HTFBzYWFsU1hrNlNIbE9LWEFF?= =?utf-8?Q?5b+l8BM+Uu8V5UTh+gbeYFqHdGJMYYTPvTMI705cCgjCc?= X-MS-Exchange-AntiSpam-MessageData-1: mVnpCYrSBr72fw== X-OriginatorOrg: cornell.edu X-MS-Exchange-CrossTenant-Network-Message-Id: eb66e418-2752-478e-bf6a-08da45696632 X-MS-Exchange-CrossTenant-AuthSource: BN7PR04MB4388.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jun 2022 14:00:21.7955 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 5d7e4366-1b9b-45cf-8e79-b14b27df46e1 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: rLUdDlVSr5Si2h/g6GgWK5o95vnRkYA9YNS8HT5m1Gqb3Y84owAjOZBy3IZ/HqqwebpkPoHRyi0iTU+hmkQYrQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR04MB6636 X-Spam-Status: No, score=-9.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, JMQ_SPF_NEUTRAL, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: cygwin-patches@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Cygwin core component patch submission and discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 03 Jun 2022 14:00:35 -0000 --------------0Nt2uJiMQEKC9QXYCzfpurTa Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Patch attached. --------------0Nt2uJiMQEKC9QXYCzfpurTa Content-Type: text/plain; charset=UTF-8; name="0001-Cygwin-remove-most-occurrences-of-__stdcall-WINAPI-a.patch" Content-Disposition: attachment; filename*0="0001-Cygwin-remove-most-occurrences-of-__stdcall-WINAPI-a.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmM2UxNTZlYzNiMjJlNDI2ZmM3OTEzODI3MGY2ZTE1YzgxNTZlYjdiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW4gQnJvd24gPGticm93bkBjb3JuZWxsLmVkdT4KRGF0ZTog U3VuLCAyOSBNYXkgMjAyMiAxODo1OTo1NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIEN5Z3dpbjog cmVtb3ZlIG1vc3Qgb2NjdXJyZW5jZXMgb2YgX19zdGRjYWxsLCBXSU5BUEksIGFuZAogX19jZGVj bAoKVGhlc2UgaGF2ZSBubyBlZmZlY3Qgb24geDg2XzY0LiAgUmV0YWluIG9ubHkgYSBmZXcgb2Nj dXJyZW5jZXMgb2YKX19jZGVjbCBpbiBmaWxlcyBpbXBvcnRlZCBmcm9tIG90aGVyIHNvdXJjZXMu Ci0tLQogd2luc3VwL2N5Z3NlcnZlci9ic2RfaGVscGVyLmNjICAgICAgICAgICAgfCAgMiArLQog d2luc3VwL2N5Z3NlcnZlci9wcm9jZXNzLmNjICAgICAgICAgICAgICAgfCAgMiArLQogd2luc3Vw L2N5Z3NlcnZlci90aHJlYWRlZF9xdWV1ZS5jYyAgICAgICAgfCAgNCArLQogd2luc3VwL2N5Z3Nl cnZlci90aHJlYWRlZF9xdWV1ZS5oICAgICAgICAgfCAgNCArLQogd2luc3VwL2N5Z3NlcnZlci93 b3V0c3VwLmggICAgICAgICAgICAgICAgfCAgMiArLQogd2luc3VwL2N5Z3dpbi9hZHZhcGkzMi5j YyAgICAgICAgICAgICAgICAgfCAgOCArKy0tCiB3aW5zdXAvY3lnd2luL2Fpby5jYyAgICAgICAg ICAgICAgICAgICAgICB8ICA2ICstLQogd2luc3VwL2N5Z3dpbi9hdXRvbG9hZC5jYyAgICAgICAg ICAgICAgICAgfCAgNCArLQogd2luc3VwL2N5Z3dpbi9jaGlsZF9pbmZvLmggICAgICAgICAgICAg ICAgfCAgMiArLQogd2luc3VwL2N5Z3dpbi9jbG9jay5jYyAgICAgICAgICAgICAgICAgICAgfCAg NCArLQogd2luc3VwL2N5Z3dpbi9jeWdlcnJuby5oICAgICAgICAgICAgICAgICAgfCAgMiArLQog d2luc3VwL2N5Z3dpbi9jeWdoZWFwLmNjICAgICAgICAgICAgICAgICAgfCAgOCArKy0tCiB3aW5z dXAvY3lnd2luL2N5Z2hlYXAuaCAgICAgICAgICAgICAgICAgICB8ICA0ICstCiB3aW5zdXAvY3ln d2luL2N5Z3RocmVhZC5jYyAgICAgICAgICAgICAgICB8ICA0ICstCiB3aW5zdXAvY3lnd2luL2N5 Z3RocmVhZC5oICAgICAgICAgICAgICAgICB8ICA2ICstLQogd2luc3VwL2N5Z3dpbi9kY3J0MC5j YyAgICAgICAgICAgICAgICAgICAgfCAxMiArKystLS0KIHdpbnN1cC9jeWd3aW4vZGVidWcuY2Mg ICAgICAgICAgICAgICAgICAgIHwgMTAgKystLS0KIHdpbnN1cC9jeWd3aW4vZGxsX2luaXQuY2Mg ICAgICAgICAgICAgICAgIHwgIDIgKy0KIHdpbnN1cC9jeWd3aW4vZHRhYmxlLmNjICAgICAgICAg ICAgICAgICAgIHwgIDIgKy0KIHdpbnN1cC9jeWd3aW4vZW52aXJvbi5jYyAgICAgICAgICAgICAg ICAgIHwgIDYgKy0tCiB3aW5zdXAvY3lnd2luL2V4Y2VwdGlvbnMuY2MgICAgICAgICAgICAgICB8 IDE0ICsrKy0tLQogd2luc3VwL2N5Z3dpbi9maGFuZGxlci5jYyAgICAgICAgICAgICAgICAgfCAx MCArKy0tLQogd2luc3VwL2N5Z3dpbi9maGFuZGxlci5oICAgICAgICAgICAgICAgICAgfCA1MiAr KysrKysrKysrKy0tLS0tLS0tLS0tLQogd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9jbGlwYm9hcmQu Y2MgICAgICAgfCAgMiArLQogd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9jb25zb2xlLmNjICAgICAg ICAgfCAxMiArKystLS0KIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfZGlza19maWxlLmNjICAgICAg IHwgIDIgKy0KIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfZHNwLmNjICAgICAgICAgICAgIHwgIDQg Ky0KIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfZmlmby5jYyAgICAgICAgICAgIHwgIDIgKy0KIHdp bnN1cC9jeWd3aW4vZmhhbmRsZXJfbmV0ZHJpdmUuY2MgICAgICAgIHwgIDIgKy0KIHdpbnN1cC9j eWd3aW4vZmhhbmRsZXJfcHJvY3N5cy5jYyAgICAgICAgIHwgIDIgKy0KIHdpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfcmFuZG9tLmNjICAgICAgICAgIHwgIDIgKy0KIHdpbnN1cC9jeWd3aW4vZmhhbmRs ZXJfc2lnbmFsZmQuY2MgICAgICAgIHwgIDIgKy0KIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfc29j a2V0X3VuaXguY2MgICAgIHwgIDggKystLQogd2luc3VwL2N5Z3dpbi9maGFuZGxlcl90aW1lcmZk LmNjICAgICAgICAgfCAgMiArLQogd2luc3VwL2N5Z3dpbi9maGFuZGxlcl90dHkuY2MgICAgICAg ICAgICAgfCAxMiArKystLS0KIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfdmlydHVhbC5jYyAgICAg ICAgIHwgIDIgKy0KIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfd2luZG93cy5jYyAgICAgICAgIHwg IDIgKy0KIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfemVyby5jYyAgICAgICAgICAgIHwgIDIgKy0K IHdpbnN1cC9jeWd3aW4vZmxvY2suY2MgICAgICAgICAgICAgICAgICAgIHwgIDYgKy0tCiB3aW5z dXAvY3lnd2luL2ZvcmsuY2MgICAgICAgICAgICAgICAgICAgICB8IDEwICsrLS0tCiB3aW5zdXAv Y3lnd2luL2luY2x1ZGUvY3lnd2luL2N5Z3dpbl9kbGwuaCB8ICA2ICstLQogd2luc3VwL2N5Z3dp bi9pbmNsdWRlL2N5Z3dpbi90aW1lLmggICAgICAgfCAgNiArLS0KIHdpbnN1cC9jeWd3aW4vaW5j bHVkZS9zeXMvaW9jdGwuaCAgICAgICAgIHwgIDIgKy0KIHdpbnN1cC9jeWd3aW4vaW5pdC5jYyAg ICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIHdpbnN1cC9jeWd3aW4va2VybmVsMzIuY2MgICAg ICAgICAgICAgICAgIHwgMzYgKysrKysrKystLS0tLS0tLQogd2luc3VwL2N5Z3dpbi9sZGFwLmNj ICAgICAgICAgICAgICAgICAgICAgfCAgNiArLS0KIHdpbnN1cC9jeWd3aW4vbGliL19jeWd3aW5f Y3J0MF9jb21tb24uY2MgIHwgIDIgKy0KIHdpbnN1cC9jeWd3aW4vbGliL2NydDAuaCAgICAgICAg ICAgICAgICAgIHwgIDIgKy0KIHdpbnN1cC9jeWd3aW4vbWlzY2Z1bmNzLmNjICAgICAgICAgICAg ICAgIHwgMTAgKystLS0KIHdpbnN1cC9jeWd3aW4vbWlzY2Z1bmNzLmggICAgICAgICAgICAgICAg IHwgMTAgKystLS0KIHdpbnN1cC9jeWd3aW4vbW1hcC5jYyAgICAgICAgICAgICAgICAgICAgIHwg IDIgKy0KIHdpbnN1cC9jeWd3aW4vbW91bnQuY2MgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0K IHdpbnN1cC9jeWd3aW4vbnRkbGwuaCAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHdpbnN1 cC9jeWd3aW4vbnRlYS5jYyAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIHdpbnN1cC9jeWd3 aW4vbnRzZWNhcGkuaCAgICAgICAgICAgICAgICAgIHwgMjYgLS0tLS0tLS0tLS0tCiB3aW5zdXAv Y3lnd2luL3BpbmZvLmNjICAgICAgICAgICAgICAgICAgICB8ICA2ICstLQogd2luc3VwL2N5Z3dp bi9waW5mby5oICAgICAgICAgICAgICAgICAgICAgfCAxMiArKystLS0KIHdpbnN1cC9jeWd3aW4v cG9zaXhfdGltZXIuY2MgICAgICAgICAgICAgIHwgIDIgKy0KIHdpbnN1cC9jeWd3aW4vcmVzb3Vy Y2UuY2MgICAgICAgICAgICAgICAgIHwgIDQgKy0KIHdpbnN1cC9jeWd3aW4vc2VsZWN0LmNjICAg ICAgICAgICAgICAgICAgIHwgMTAgKystLS0KIHdpbnN1cC9jeWd3aW4vc2hhcmVkLmNjICAgICAg ICAgICAgICAgICAgIHwgMTAgKystLS0KIHdpbnN1cC9jeWd3aW4vc2hhcmVkX2luZm8uaCAgICAg ICAgICAgICAgIHwgMTAgKystLS0KIHdpbnN1cC9jeWd3aW4vc2htLmNjICAgICAgICAgICAgICAg ICAgICAgIHwgIDIgKy0KIHdpbnN1cC9jeWd3aW4vc2lncHJvYy5jYyAgICAgICAgICAgICAgICAg IHwgIDYgKy0tCiB3aW5zdXAvY3lnd2luL3NpZ3Byb2MuaCAgICAgICAgICAgICAgICAgICB8ICAy ICstCiB3aW5zdXAvY3lnd2luL3N0cmFjZS5jYyAgICAgICAgICAgICAgICAgICB8ICAyICstCiB3 aW5zdXAvY3lnd2luL3N0cmZ1bmNzLmNjICAgICAgICAgICAgICAgICB8IDEwICsrLS0tCiB3aW5z dXAvY3lnd2luL3N0cmluZy5oICAgICAgICAgICAgICAgICAgICB8ICA4ICsrLS0KIHdpbnN1cC9j eWd3aW4vdGhyZWFkLmNjICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHdpbnN1cC9jeWd3aW4v dGhyZWFkLmggICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHdpbnN1cC9jeWd3aW4vdGltZXJm ZC5jYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHdpbnN1cC9jeWd3aW4vdGltZXMuY2MgICAg ICAgICAgICAgICAgICAgIHwgMTYgKysrLS0tLQogd2luc3VwL2N5Z3dpbi90dHkuY2MgICAgICAg ICAgICAgICAgICAgICAgfCAgNCArLQogd2luc3VwL2N5Z3dpbi90dHkuaCAgICAgICAgICAgICAg ICAgICAgICAgfCAgNiArLS0KIHdpbnN1cC9jeWd3aW4vd2luZG93LmNjICAgICAgICAgICAgICAg ICAgIHwgIDQgKy0KIHdpbnN1cC9jeWd3aW4vd2luaW5mby5oICAgICAgICAgICAgICAgICAgIHwg IDIgKy0KIHdpbnN1cC9jeWd3aW4vd2lubGVhbi5oICAgICAgICAgICAgICAgICAgIHwgIDIgKy0K IHdpbnN1cC9jeWd3aW4vd2luc3VwLmggICAgICAgICAgICAgICAgICAgIHwgMjAgKysrKy0tLS0t CiB3aW5zdXAvdGVzdHN1aXRlL3dpbnN1cC5hcGkvY3lnbG9hZC5jYyAgICB8ICA0ICstCiB3aW5z dXAvdGVzdHN1aXRlL3dpbnN1cC5hcGkvY3lnbG9hZC5oICAgICB8ICAyICstCiB3aW5zdXAvdXRp bHMva2lsbC5jYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiB3aW5zdXAvdXRpbHMvbG9h ZGxpYi5oICAgICAgICAgICAgICAgICAgICB8ICA2ICstLQogd2luc3VwL3V0aWxzL21pbmd3L2N5 Z2NoZWNrLmNjICAgICAgICAgICAgfCAgNCArLQogd2luc3VwL3V0aWxzL21pbmd3L3N0cmFjZS5j YyAgICAgICAgICAgICAgfCAgNCArLQogd2luc3VwL3V0aWxzL3Byb2ZpbGVyLmNjICAgICAgICAg ICAgICAgICAgfCAgNCArLQogd2luc3VwL3V0aWxzL3BzLmNjICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMiArLQogd2luc3VwL3V0aWxzL3JlZ3Rvb2wuY2MgICAgICAgICAgICAgICAgICAgfCAg NCArLQogODcgZmlsZXMgY2hhbmdlZCwgMjU4IGluc2VydGlvbnMoKyksIDI4NCBkZWxldGlvbnMo LSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCB3aW5zdXAvY3lnd2luL250c2VjYXBpLmgKCmRpZmYgLS1n aXQgYS93aW5zdXAvY3lnc2VydmVyL2JzZF9oZWxwZXIuY2MgYi93aW5zdXAvY3lnc2VydmVyL2Jz ZF9oZWxwZXIuY2MKaW5kZXggMzg2Mzk2NDdlLi4xZTFiYTA5YmIgMTAwNjQ0Ci0tLSBhL3dpbnN1 cC9jeWdzZXJ2ZXIvYnNkX2hlbHBlci5jYworKysgYi93aW5zdXAvY3lnc2VydmVyL2JzZF9oZWxw ZXIuY2MKQEAgLTExMSw3ICsxMTEsNyBAQCBpcGNfcF92bXNwYWNlIChzdHJ1Y3QgcHJvYyAqcHJv YykKICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIERXT1JEIFdJTkFQSQorc3RhdGljIERXT1JE CiBpcGNleGl0X2hvb2t0aHJlYWQgKGNvbnN0IExQVk9JRCBwYXJhbSkKIHsKICAgaXBjX2hvb2t0 aHJlYWRfc3RvcmFnZSAqc2hzID0gKGlwY19ob29rdGhyZWFkX3N0b3JhZ2UgKikgcGFyYW07CmRp ZmYgLS1naXQgYS93aW5zdXAvY3lnc2VydmVyL3Byb2Nlc3MuY2MgYi93aW5zdXAvY3lnc2VydmVy L3Byb2Nlc3MuY2MKaW5kZXggYzI2MzQxNDcwLi4wMzI2NGQwZDcgMTAwNjQ0Ci0tLSBhL3dpbnN1 cC9jeWdzZXJ2ZXIvcHJvY2Vzcy5jYworKysgYi93aW5zdXAvY3lnc2VydmVyL3Byb2Nlc3MuY2MK QEAgLTI3OSw3ICsyNzksNyBAQCBzdHJ1Y3QgcGNhY2hlX3dhaXRfdAogICBIQU5ETEUgKmhkbHM7 CiB9OwogCi1zdGF0aWMgRFdPUkQgV0lOQVBJCitzdGF0aWMgRFdPUkQKIHBjYWNoZV93YWl0X3Ro cmVhZCAoY29uc3QgTFBWT0lEIHBhcmFtKQogewogICBwY2FjaGVfd2FpdF90ICpwID0gKHBjYWNo ZV93YWl0X3QgKikgcGFyYW07CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnc2VydmVyL3RocmVhZGVk X3F1ZXVlLmNjIGIvd2luc3VwL2N5Z3NlcnZlci90aHJlYWRlZF9xdWV1ZS5jYwppbmRleCA3MmYy YTVmZGQuLmIwMzBjODkwNyAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3NlcnZlci90aHJlYWRlZF9x dWV1ZS5jYworKysgYi93aW5zdXAvY3lnc2VydmVyL3RocmVhZGVkX3F1ZXVlLmNjCkBAIC0xODcs NyArMTg3LDcgQEAgdGhyZWFkZWRfcXVldWU6OmFkZCAocXVldWVfcmVxdWVzdCAqY29uc3QgdGhl cmVxdWVzdCkKICAgICB9CiB9CiAKLS8qc3RhdGljKi8gRFdPUkQgV0lOQVBJCisvKnN0YXRpYyov IERXT1JECiB0aHJlYWRlZF9xdWV1ZTo6c3RhcnRfcm91dGluZSAoY29uc3QgTFBWT0lEIGxwUGFy YW0pCiB7CiAgIGNsYXNzIHRocmVhZGVkX3F1ZXVlICpjb25zdCBxdWV1ZSA9IChjbGFzcyB0aHJl YWRlZF9xdWV1ZSAqKSBscFBhcmFtOwpAQCAtMzgyLDcgKzM4Miw3IEBAIHF1ZXVlX3N1Ym1pc3Np b25fbG9vcDo6c3RvcCAoKQogICByZXR1cm4gd2FzX3J1bm5pbmc7CiB9CiAKLS8qc3RhdGljKi8g RFdPUkQgV0lOQVBJCisvKnN0YXRpYyovIERXT1JECiBxdWV1ZV9zdWJtaXNzaW9uX2xvb3A6OnN0 YXJ0X3JvdXRpbmUgKGNvbnN0IExQVk9JRCBscFBhcmFtKQogewogICBjbGFzcyBxdWV1ZV9zdWJt aXNzaW9uX2xvb3AgKmNvbnN0IHN1Ym1pc3Npb25fbG9vcCA9CmRpZmYgLS1naXQgYS93aW5zdXAv Y3lnc2VydmVyL3RocmVhZGVkX3F1ZXVlLmggYi93aW5zdXAvY3lnc2VydmVyL3RocmVhZGVkX3F1 ZXVlLmgKaW5kZXggNDQ4MTlkMmZiLi4xYzU1YmUzNWYgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWdz ZXJ2ZXIvdGhyZWFkZWRfcXVldWUuaAorKysgYi93aW5zdXAvY3lnc2VydmVyL3RocmVhZGVkX3F1 ZXVlLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgQ1JJVElDQUxfU0VDVElPTiBfcXVl dWVfbG9jazsKICAgSEFORExFIF9yZXF1ZXN0c19zZW07CQkvLyA9PSBfcmVxdWVzdHNfY291bnQK IAotICBzdGF0aWMgRFdPUkQgV0lOQVBJIHN0YXJ0X3JvdXRpbmUgKExQVk9JRCAvKiB0aGlzICov KTsKKyAgc3RhdGljIERXT1JEIHN0YXJ0X3JvdXRpbmUgKExQVk9JRCAvKiB0aGlzICovKTsKIAog ICB2b2lkIGNyZWF0ZV93b3JrZXJzIChzaXplX3QgaW5pdGlhbF93b3JrZXJzKTsKICAgdm9pZCB3 b3JrZXJfbG9vcCAoKTsKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgRFdPUkQgX3RpZDsK ICAgcXVldWVfc3VibWlzc2lvbl9sb29wICpfbmV4dDsKIAotICBzdGF0aWMgRFdPUkQgV0lOQVBJ IHN0YXJ0X3JvdXRpbmUgKExQVk9JRCAvKiB0aGlzICovKTsKKyAgc3RhdGljIERXT1JEIHN0YXJ0 X3JvdXRpbmUgKExQVk9JRCAvKiB0aGlzICovKTsKICAgdmlydHVhbCB2b2lkIHJlcXVlc3RfbG9v cCAoKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS93aW5zdXAvY3lnc2VydmVyL3dvdXRzdXAuaCBi L3dpbnN1cC9jeWdzZXJ2ZXIvd291dHN1cC5oCmluZGV4IDdiNzk5ZjE1Ni4uM2U4N2M0ZmNhIDEw MDY0NAotLS0gYS93aW5zdXAvY3lnc2VydmVyL3dvdXRzdXAuaAorKysgYi93aW5zdXAvY3lnc2Vy dmVyL3dvdXRzdXAuaApAQCAtMzAsNyArMzAsNyBAQCBkZXRhaWxzLiAqLwogI2luY2x1ZGUgImJz ZF9tdXRleC5oIgogCiAvKiBUaGUgb25lIGZ1bmN0aW9uIHdlIHVzZSBmcm9tIHdpbnVzZXIuaCBt b3N0IG9mIHRoZSB0aW1lICovCi1leHRlcm4gIkMiIERXT1JEIFdJTkFQSSBHZXRMYXN0RXJyb3Ig KHZvaWQpOworZXh0ZXJuICJDIiBEV09SRCBHZXRMYXN0RXJyb3IgKHZvaWQpOwogCiBleHRlcm4g aW50IGN5Z3NlcnZlcl9ydW5uaW5nOwogCmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL2FkdmFw aTMyLmNjIGIvd2luc3VwL2N5Z3dpbi9hZHZhcGkzMi5jYwppbmRleCA1NmM5NmM5MTUuLjM3Njlm Mjc4MiAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9hZHZhcGkzMi5jYworKysgYi93aW5zdXAv Y3lnd2luL2FkdmFwaTMyLmNjCkBAIC0yMSw3ICsyMSw3IEBAIGRldGFpbHMuICovCiAgICBpcyBu b3QgZWFzeSB0byB1bmRlcnN0YW5kLiAgSW4gYWxsIG90aGVyIGNhc2UsIHVzZSB0aGUgbnRkbGwu ZGxsCiAgICBlcXVpdmFsZW50LiAqLwogCi1CT09MIFdJTkFQSQorQk9PTAogUmV2ZXJ0VG9TZWxm ICgpCiB7CiAgIEhBTkRMRSB0b2sgPSBOVUxMOwpAQCAtMzEsNyArMzEsNyBAQCBSZXZlcnRUb1Nl bGYgKCkKICAgREVGQVVMVF9OVFNUQVRVU19UT19CT09MX1JFVFVSTgogfQogCi1CT09MIFdJTkFQ SQorQk9PTAogRHVwbGljYXRlVG9rZW5FeCAoSEFORExFIHRvaywgRFdPUkQgYWNjZXNzLCBMUFNF Q1VSSVRZX0FUVFJJQlVURVMgc2VjX2F0dHIsCiAJCSAgU0VDVVJJVFlfSU1QRVJTT05BVElPTl9M RVZFTCBsZXZlbCwgVE9LRU5fVFlQRSB0eXBlLAogCQkgIFBIQU5ETEUgbmV3X3RvaykKQEAgLTQ2 LDcgKzQ2LDcgQEAgRHVwbGljYXRlVG9rZW5FeCAoSEFORExFIHRvaywgRFdPUkQgYWNjZXNzLCBM UFNFQ1VSSVRZX0FUVFJJQlVURVMgc2VjX2F0dHIsCiAgIERFRkFVTFRfTlRTVEFUVVNfVE9fQk9P TF9SRVRVUk4KIH0KIAotQk9PTCBXSU5BUEkKK0JPT0wKIEltcGVyc29uYXRlTG9nZ2VkT25Vc2Vy IChIQU5ETEUgdG9rKQogewogICBOVFNUQVRVUyBzdGF0dXM7CkBAIC04Niw3ICs4Niw3IEBAIElt cGVyc29uYXRlTG9nZ2VkT25Vc2VyIChIQU5ETEUgdG9rKQogICBERUZBVUxUX05UU1RBVFVTX1RP X0JPT0xfUkVUVVJOCiB9CiAKLUJPT0wgV0lOQVBJCitCT09MCiBJbXBlcnNvbmF0ZU5hbWVkUGlw ZUNsaWVudCAoSEFORExFIHBpcGUpCiB7CiAgIElPX1NUQVRVU19CTE9DSyBpbzsKZGlmZiAtLWdp dCBhL3dpbnN1cC9jeWd3aW4vYWlvLmNjIGIvd2luc3VwL2N5Z3dpbi9haW8uY2MKaW5kZXggNGQx YzJlZTQ1Li4xYzE3YWE3ZjYgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vYWlvLmNjCisrKyBi L3dpbnN1cC9jeWd3aW4vYWlvLmNjCkBAIC0yMDAsNyArMjAwLDcgQEAgYWlvbm90aWZ5IChzdHJ1 Y3QgYWlvY2IgKmFpbykKICAgICB9CiB9CiAKLXN0YXRpYyBEV09SRCBXSU5BUEkgX19hdHRyaWJ1 dGVfXyAoKG5vcmV0dXJuKSkKK3N0YXRpYyBEV09SRCBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4p KQogYWlvd2FpdGVyICh2b2lkICp1bnVzZWQpCiB7IC8qIE9uZSBpbnN0YW5jZSwgY2FsbGVkIG9u IGl0cyBvd24gY3lndGhyZWFkOyBydW5zIHVudGlsIHByb2dyYW0gZXhpdHMgKi8KICAgc3RydWN0 IGFpb2NiICphaW87CkBAIC0zMjcsNyArMzI3LDcgQEAgYXN5bmN3cml0ZSAoc3RydWN0IGFpb2Ni ICphaW8pCiB9CiAKIC8qIEhhdmUgdG8gZm9yd2FyZCByZWYgYmVjYXVzZSBvZiBjaGlja2VuIHYu IGVnZyBzaXR1YXRpb24gKi8KLXN0YXRpYyBEV09SRCBXSU5BUEkgX19hdHRyaWJ1dGVfXyAoKG5v cmV0dXJuKSkgYWlvd29ya2VyICh2b2lkICopOworc3RhdGljIERXT1JEIF9fYXR0cmlidXRlX18g KChub3JldHVybikpIGFpb3dvcmtlciAodm9pZCAqKTsKIAogc3RhdGljIHZvaWQKIGFpb2luaXQg KHZvaWQpCkBAIC00MDAsNyArNDAwLDcgQEAgYWlvcXVldWUgKHN0cnVjdCBhaW9jYiAqYWlvKQog ICByZXR1cm4gMDsKIH0KIAotc3RhdGljIERXT1JEIFdJTkFQSSBfX2F0dHJpYnV0ZV9fICgobm9y ZXR1cm4pKQorc3RhdGljIERXT1JEIF9fYXR0cmlidXRlX18gKChub3JldHVybikpCiBhaW93b3Jr ZXIgKHZvaWQgKnVudXNlZCkKIHsgLyogTXVsdGlwbGUgaW5zdGFuY2VzOyBjYWxsZWQgb24gb3du IGN5Z3RocmVhZHM7IHJ1bnMgJ3RpbCBwcm9ncmFtIGV4aXRzICovCiAgIHN0cnVjdCBhaW9jYiAq YWlvOwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9hdXRvbG9hZC5jYyBiL3dpbnN1cC9jeWd3 aW4vYXV0b2xvYWQuY2MKaW5kZXggNjY4ZTY0NjUwLi44OTBhMzE5ZGIgMTAwNjQ0Ci0tLSBhL3dp bnN1cC9jeWd3aW4vYXV0b2xvYWQuY2MKKysrIGIvd2luc3VwL2N5Z3dpbi9hdXRvbG9hZC5jYwpA QCAtMzYyLDEwICszNjIsMTAgQEAgd3NvY2tfaW5pdCAoc3RydWN0IGZ1bmNfaW5mbyAqZnVuYykK IAogICBpZiAoIXdzb2NrX3N0YXJ0ZWQpCiAgICAgewotICAgICAgaW50IF9fc3RkY2FsbCAoKndz YXN0YXJ0dXApIChpbnQsIFdTQURBVEEgKik7CisgICAgICBpbnQgKCp3c2FzdGFydHVwKSAoaW50 LCBXU0FEQVRBICopOwogCiAgICAgICAvKiBEb24ndCB1c2UgYXV0b2xvYWQgdG8gbG9hZCBXU0FT dGFydHVwIHRvIGVsaW1pbmF0ZSByZWN1cnNpb24uICovCi0gICAgICB3c2FzdGFydHVwID0gKGlu dCBfX3N0ZGNhbGwgKCopKGludCwgV1NBREFUQSAqKSkKKyAgICAgIHdzYXN0YXJ0dXAgPSAoaW50 ICgqKShpbnQsIFdTQURBVEEgKikpCiAJCSAgIEdldFByb2NBZGRyZXNzICgoSE1PRFVMRSkgKGRs bC0+aGFuZGxlKSwgIldTQVN0YXJ0dXAiKTsKICAgICAgIGlmICh3c2FzdGFydHVwKQogCXsKZGlm ZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vY2hpbGRfaW5mby5oIGIvd2luc3VwL2N5Z3dpbi9jaGls ZF9pbmZvLmgKaW5kZXggNDUzMzM5MzE3Li5iYTdhZTBiNmQgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9j eWd3aW4vY2hpbGRfaW5mby5oCisrKyBiL3dpbnN1cC9jeWd3aW4vY2hpbGRfaW5mby5oCkBAIC0x OTgsNyArMTk4LDcgQEAgZXh0ZXJuIGNoaWxkX2luZm9fc3Bhd24gY2hfc3Bhd247CiAjZGVmaW5l IGhhdmVfZXhlY2VkIGNoX3NwYXduLmhhc19leGVjZWQgKCkKICNkZWZpbmUgaGF2ZV9leGVjZWRf Y3lnd2luIGNoX3NwYXduLmhhc19leGVjZWRfY3lnd2luICgpCiAKLXZvaWQgX19zdGRjYWxsIGlu aXRfY2hpbGRfaW5mbyAoRFdPUkQsIGNoaWxkX2luZm8gKiwgSEFORExFKTsKK3ZvaWQgaW5pdF9j aGlsZF9pbmZvIChEV09SRCwgY2hpbGRfaW5mbyAqLCBIQU5ETEUpOwogCiBleHRlcm4gIkMiIHsK IGV4dGVybiBjaGlsZF9pbmZvICpjaGlsZF9wcm9jX2luZm87CmRpZmYgLS1naXQgYS93aW5zdXAv Y3lnd2luL2Nsb2NrLmNjIGIvd2luc3VwL2N5Z3dpbi9jbG9jay5jYwppbmRleCBlMDEwZWQ0ODgu LjFlMmU5ZWYwNCAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9jbG9jay5jYworKysgYi93aW5z dXAvY3lnd2luL2Nsb2NrLmNjCkBAIC0xNDIsOCArMTQyLDggQEAgY2xrX3RocmVhZF90Ojpub3cg KGNsb2NraWRfdCBjbG9ja2lkLCBzdHJ1Y3QgdGltZXNwZWMgKnRzKQogICByZXR1cm4gMDsKIH0K IAotZXh0ZXJuICJDIiB2b2lkIFdJTkFQSSBRdWVyeVVuYmlhc2VkSW50ZXJydXB0VGltZVByZWNp c2UgKFBVTE9OR0xPTkcpOwotZXh0ZXJuICJDIiB2b2lkIFdJTkFQSSBRdWVyeUludGVycnVwdFRp bWVQcmVjaXNlIChQVUxPTkdMT05HKTsKK2V4dGVybiAiQyIgdm9pZCBRdWVyeVVuYmlhc2VkSW50 ZXJydXB0VGltZVByZWNpc2UgKFBVTE9OR0xPTkcpOworZXh0ZXJuICJDIiB2b2lkIFF1ZXJ5SW50 ZXJydXB0VGltZVByZWNpc2UgKFBVTE9OR0xPTkcpOwogCiBpbnQKIGNsa19tb25vdG9uaWNfdDo6 bm93IChjbG9ja2lkX3QgY2xvY2tpZCwgc3RydWN0IHRpbWVzcGVjICp0cykKZGlmZiAtLWdpdCBh L3dpbnN1cC9jeWd3aW4vY3lnZXJybm8uaCBiL3dpbnN1cC9jeWd3aW4vY3lnZXJybm8uaAppbmRl eCBiOTgyYmMyN2QuLjk0MGJmYTVlMCAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9jeWdlcnJu by5oCisrKyBiL3dpbnN1cC9jeWd3aW4vY3lnZXJybm8uaApAQCAtNDUsNyArNDUsNyBAQCB2b2lk IF9fc2V0X3dpbnNvY2tfZXJybm8gKGNvbnN0IGNoYXIgKmZuLCBpbnQgbG4pOwogI2RlZmluZSBz ZXRfd2luc29ja19lcnJubygpIF9fc2V0X3dpbnNvY2tfZXJybm8gKF9fRlVOQ1RJT05fXywgX19M SU5FX18pCiAKICNkZWZpbmUgZ2V0X2Vycm5vKCkgIChlcnJubykKLWV4dGVybiAiQyIgdm9pZCBf X3N0ZGNhbGwgc2V0X3NpZ19lcnJubyAoaW50IGUpOworZXh0ZXJuICJDIiB2b2lkIHNldF9zaWdf ZXJybm8gKGludCBlKTsKIAogY2xhc3Mgc2F2ZV9lcnJubwogICB7CmRpZmYgLS1naXQgYS93aW5z dXAvY3lnd2luL2N5Z2hlYXAuY2MgYi93aW5zdXAvY3lnd2luL2N5Z2hlYXAuY2MKaW5kZXggZTA1 YmZiYzQ4Li42NWY5NWM5MjQgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vY3lnaGVhcC5jYwor KysgYi93aW5zdXAvY3lnd2luL2N5Z2hlYXAuY2MKQEAgLTY5LDExICs2OSwxMSBAQCBzdGF0aWMg Tk9fQ09QWSB1aW50MzJfdCBudGhyZWFkczsKIAogZXh0ZXJuICJDIiB7CiBzdGF0aWMgdm9pZCBf Y2ZyZWUgKHZvaWQgKik7Ci1zdGF0aWMgdm9pZCAqX19zdGRjYWxsIF9jc2JyayAoaW50KTsKK3N0 YXRpYyB2b2lkICpfY3NicmsgKGludCk7CiB9CiAKIC8qIENhbGxlZCBieSBmb3JrIG9yIHNwYXdu IHRvIHJlYWxsb2NhdGUgY3lnd2luIGhlYXAgKi8KLXZvaWQgX19zdGRjYWxsCit2b2lkCiBjeWdo ZWFwX2ZpeHVwX2luX2NoaWxkIChib29sIGV4ZWNlZCkKIHsKICAgY3lnaGVhcF9tYXggPSBjeWdo ZWFwID0gKGluaXRfY3lnaGVhcCAqKSBfY3lnaGVhcF9zdGFydDsKQEAgLTIzOSw3ICsyMzksNyBA QCBpbml0X2N5Z2hlYXA6OmluaXRfaW5zdGFsbGF0aW9uX3Jvb3QgKCkKICAgICB9CiB9CiAKLXZv aWQgX19zdGRjYWxsCit2b2lkCiBjeWdoZWFwX2luaXQgKCkKIHsKICAgY3lnaGVhcF9wcm90ZWN0 LmluaXQgKCJjeWdoZWFwX3Byb3RlY3QiKTsKQEAgLTI5Myw3ICsyOTMsNyBAQCBzZXR1cF9jeWdo ZWFwICgpCiAjZGVmaW5lIHNvbWVraW5kYV9wcmludGYgbWFsbG9jX3ByaW50ZgogI2VuZGlmCiAK LXN0YXRpYyB2b2lkICpfX3N0ZGNhbGwKK3N0YXRpYyB2b2lkICoKIF9jc2JyayAoaW50IHNicykK IHsKICAgdm9pZCAqcHJlYnJrID0gY3lnaGVhcF9tYXg7CmRpZmYgLS1naXQgYS93aW5zdXAvY3ln d2luL2N5Z2hlYXAuaCBiL3dpbnN1cC9jeWd3aW4vY3lnaGVhcC5oCmluZGV4IDUyOGM2MWVkNi4u N2YzNmM1ODM3IDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2N5Z2hlYXAuaAorKysgYi93aW5z dXAvY3lnd2luL2N5Z2hlYXAuaApAQCAtNzE5LDcgKzcxOSw3IEBAIGNsYXNzIGN5Z2hlYXBfZmRl bnVtIDogcHVibGljIGN5Z2hlYXBfZmRtYW5pcAogICB9CiB9OwogCi12b2lkIF9fc3RkY2FsbCBj eWdoZWFwX2ZpeHVwX2luX2NoaWxkIChib29sKTsKLXZvaWQgX19zdGRjYWxsIGN5Z2hlYXBfaW5p dCAoKTsKK3ZvaWQgY3lnaGVhcF9maXh1cF9pbl9jaGlsZCAoYm9vbCk7Cit2b2lkIGN5Z2hlYXBf aW5pdCAoKTsKIHZvaWQgc2V0dXBfY3lnaGVhcCAoKTsKIGV4dGVybiBjaGFyIF9jeWdoZWFwX3N0 YXJ0W10gX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLmlkYXRhIikpKTsKZGlmZiAtLWdpdCBhL3dp bnN1cC9jeWd3aW4vY3lndGhyZWFkLmNjIGIvd2luc3VwL2N5Z3dpbi9jeWd0aHJlYWQuY2MKaW5k ZXggNjZhMzE3OTM0Li41NDkxOGU3NjcgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vY3lndGhy ZWFkLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vY3lndGhyZWFkLmNjCkBAIC01Miw3ICs1Miw3IEBA IGN5Z3RocmVhZDo6Y2FsbGZ1bmMgKGJvb2wgaXNzaW1wbGVzdHViKQogLyogSW5pdGlhbCBzdHVi IGNhbGxlZCBieSBjeWd0aHJlYWQgY29uc3RydWN0b3IuIFBlcmZvcm1zIGluaXRpYWwKICAgIHBl ci10aHJlYWQgaW5pdGlhbGl6YXRpb24gYW5kIGxvb3BzIHdhaXRpbmcgZm9yIGFub3RoZXIgdGhy ZWFkIGZ1bmN0aW9uCiAgICB0byBleGVjdXRlLiAgKi8KLURXT1JEIFdJTkFQSQorRFdPUkQKIGN5 Z3RocmVhZDo6c3R1YiAoVk9JRCAqYXJnKQogewogICBjeWd0aHJlYWQgKmluZm8gPSAoY3lndGhy ZWFkICopIGFyZzsKQEAgLTEyMiw3ICsxMjIsNyBAQCBjeWd0aHJlYWQ6OnN0dWIgKFZPSUQgKmFy ZykKIAogLyogT3ZlcmZsb3cgc3R1YiBjYWxsZWQgYnkgY3lndGhyZWFkIGNvbnN0cnVjdG9yLiBD YWxscyBzcGVjaWZpZWQgZnVuY3Rpb24KICAgIGFuZCB0aGVuIGV4aXRzIHRoZSB0aHJlYWQuICAq LwotRFdPUkQgV0lOQVBJCitEV09SRAogY3lndGhyZWFkOjpzaW1wbGVzdHViIChWT0lEICphcmcp CiB7CiAgIGN5Z3RocmVhZCAqaW5mbyA9IChjeWd0aHJlYWQgKikgYXJnOwpkaWZmIC0tZ2l0IGEv d2luc3VwL2N5Z3dpbi9jeWd0aHJlYWQuaCBiL3dpbnN1cC9jeWd3aW4vY3lndGhyZWFkLmgKaW5k ZXggZWQ1N2M5MzAxLi4yNDExODBmMmIgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vY3lndGhy ZWFkLmgKKysrIGIvd2luc3VwL2N5Z3dpbi9jeWd0aHJlYWQuaApAQCAtNyw3ICs3LDcgQEAgZGV0 YWlscy4gKi8KICNpZm5kZWYgX0NZR1RIUkVBRF9ICiAjZGVmaW5lIF9DWUdUSFJFQURfSAogCi10 eXBlZGVmIHZvaWQgV0lOQVBJICgqTFBWT0lEX1RIUkVBRF9TVEFSVF9ST1VUSU5FKSAodm9pZCAq KSBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpOwkJLy8gSW5wdXQgcXVldWUgdGhyZWFkCit0eXBl ZGVmIHZvaWQgKCpMUFZPSURfVEhSRUFEX1NUQVJUX1JPVVRJTkUpICh2b2lkICopIF9fYXR0cmli dXRlX18oKG5vcmV0dXJuKSk7CQkvLyBJbnB1dCBxdWV1ZSB0aHJlYWQKIAogY2xhc3MgY3lndGhy ZWFkCiB7CkBAIC0zMiw4ICszMiw4IEBAIGNsYXNzIGN5Z3RocmVhZAogICBzdGF0aWMgdm9pZCBD QUxMQkFDSyBhc3luY19jcmVhdGUgKFVMT05HX1BUUik7CiAgcHVibGljOgogICBib29sIHRlcm1p bmF0ZV90aHJlYWQgKCk7Ci0gIHN0YXRpYyBEV09SRCBXSU5BUEkgc3R1YiAoVk9JRCAqKTsKLSAg c3RhdGljIERXT1JEIFdJTkFQSSBzaW1wbGVzdHViIChWT0lEICopOworICBzdGF0aWMgRFdPUkQg c3R1YiAoVk9JRCAqKTsKKyAgc3RhdGljIERXT1JEIHNpbXBsZXN0dWIgKFZPSUQgKik7CiAgIHN0 YXRpYyBEV09SRCBtYWluX3RocmVhZF9pZDsKICAgc3RhdGljIGNvbnN0IGNoYXIgKm5hbWUgKERX T1JEID0gMCk7CiAgIHZvaWQgY2FsbGZ1bmMgKGJvb2wpIF9fYXR0cmlidXRlX18gKChub2lubGlu ZSwgKSk7CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL2RjcnQwLmNjIGIvd2luc3VwL2N5Z3dp bi9kY3J0MC5jYwppbmRleCA5Y2M0MzZjZGEuLmM0NjBlMTVhMCAxMDA2NDQKLS0tIGEvd2luc3Vw L2N5Z3dpbi9kY3J0MC5jYworKysgYi93aW5zdXAvY3lnd2luL2RjcnQwLmNjCkBAIC02MSw3ICs2 MSw3IEBAIGRvX2dsb2JhbF9kdG9ycyAoKQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgX19zdGRj YWxsCitzdGF0aWMgdm9pZAogZG9fZ2xvYmFsX2N0b3JzICh2b2lkICgqKmluX3BmdW5jKSgpLCBp bnQgZm9yY2UpCiB7CiAgIGlmICghZm9yY2UgJiYgaW5fZm9ya2VlKQpAQCAtODQsNyArODQsNyBA QCBkb19nbG9iYWxfY3RvcnMgKHZvaWQgKCoqaW5fcGZ1bmMpKCksIGludCBmb3JjZSkKICAqIEEg XEBmaWxlIGlzIHJlcGxhY2VkIHdpdGggQGZpbGUgc28gdGhhdCBlY2hvIFxAZm9vIHdvdWxkIHBy aW50CiAgKiBAZm9vIGFuZCBub3QgdGhlIGNvbnRlbnRzIG9mIGZvby4KICAqLwotc3RhdGljIGJv b2wgX19zdGRjYWxsCitzdGF0aWMgYm9vbAogaW5zZXJ0X2ZpbGUgKGNoYXIgKm5hbWUsIGNoYXIg KiZjbWQpCiB7CiAgIEhBTkRMRSBmOwpAQCAtMjAzLDcgKzIwMyw3IEBAIHF1b3RlZCAoY2hhciAq Y21kLCBpbnQgd2luc2hlbGwpCiAJCQkgICAgJiYgaXNhbHBoYSAoKHMpWzJdKSBcCiAJCQkgICAg JiYgc3RyY2hyICgocykgKyAzLCAnXFwnKSkpCiAKLXN0YXRpYyBpbnQgX19zdGRjYWxsCitzdGF0 aWMgaW50CiBnbG9iaWZ5IChjaGFyICp3b3JkLCBjaGFyICoqJmFyZ3YsIGludCAmYXJnYywgaW50 ICZhcmd2bGVuKQogewogICBpZiAoKndvcmQgIT0gJ34nICYmIHN0cnBicmsgKHdvcmQsICI/Kltc IlwnKCl7fSIpID09IE5VTEwpCkBAIC0yOTAsNyArMjkwLDcgQEAgZ2xvYmlmeSAoY2hhciAqd29y ZCwgY2hhciAqKiZhcmd2LCBpbnQgJmFyZ2MsIGludCAmYXJndmxlbikKIAogLyogQnVpbGQgYXJn diwgYXJnYyBmcm9tIHN0cmluZyBwYXNzZWQgZnJvbSBXaW5kb3dzLiAgKi8KIAotc3RhdGljIHZv aWQgX19zdGRjYWxsCitzdGF0aWMgdm9pZAogYnVpbGRfYXJndiAoY2hhciAqY21kLCBjaGFyICoq JmFyZ3YsIGludCAmYXJnYywgaW50IHdpbnNoZWxsKQogewogICBpbnQgYXJndmxlbiA9IDA7CkBA IC0zNjUsNyArMzY1LDcgQEAgYnVpbGRfYXJndiAoY2hhciAqY21kLCBjaGFyICoqJmFyZ3YsIGlu dCAmYXJnYywgaW50IHdpbnNoZWxsKQogfQogCiAvKiBzYW5pdHkgYW5kIHN5bmMgY2hlY2sgKi8K LXZvaWQgX19zdGRjYWxsCit2b2lkCiBjaGVja19zYW5pdHlfYW5kX3N5bmMgKHBlcl9wcm9jZXNz ICpwKQogewogICAvKiBTYW5pdHkgY2hlY2sgdG8gbWFrZSBzdXJlIGRldmVsb3BlcnMgZGlkbid0 IGNoYW5nZSB0aGUgcGVyX3Byb2Nlc3MgICAgKi8KQEAgLTEwMTMsNyArMTAxMyw3IEBAIF9fY3ln d2luX2V4aXRfcmV0dXJuOgkJCVxuXAogIik7CiB9CiAKLWV4dGVybiAiQyIgdm9pZCBfX3N0ZGNh bGwKK2V4dGVybiAiQyIgdm9pZAogX2RsbF9jcnQwICgpCiB7CiAgIC8qIFN0YXJ0aW5nIHdpdGgg V2luZG93cyAxMCByZWwgMTUxMSwgdGhlIG1haW4gc3RhY2sgb2YgYW4gYXBwbGljYXRpb24gaXMK ZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZGVidWcuY2MgYi93aW5zdXAvY3lnd2luL2RlYnVn LmNjCmluZGV4IGYyMWE4YzUxOC4uZWZhMTAxYmE3IDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2lu L2RlYnVnLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vZGVidWcuY2MKQEAgLTM4LDcgKzM4LDcgQEAg Y2xhc3MgbG9ja19kZWJ1ZwogCiBtdXRvIE5PX0NPUFkgbG9ja19kZWJ1Zzo6bG9ja2VyOwogCi1z dGF0aWMgYm9vbCBfX3N0ZGNhbGwgbWFya19jbG9zZWQgKGNvbnN0IGNoYXIgKiwgaW50LCBIQU5E TEUsIGNvbnN0IGNoYXIgKiwgYm9vbCk7CitzdGF0aWMgYm9vbCBtYXJrX2Nsb3NlZCAoY29uc3Qg Y2hhciAqLCBpbnQsIEhBTkRMRSwgY29uc3QgY2hhciAqLCBib29sKTsKIAogdm9pZAogZGVidWdf aW5pdCAoKQpAQCAtNDcsNyArNDcsNyBAQCBkZWJ1Z19pbml0ICgpCiB9CiAKIC8qIEZpbmQgYSBy ZWdpc3RlcmVkIGhhbmRsZSBpbiB0aGUgbGlua2VkIGxpc3Qgb2YgaGFuZGxlcy4gKi8KLXN0YXRp YyBoYW5kbGVfbGlzdCAqIF9fc3RkY2FsbAorc3RhdGljIGhhbmRsZV9saXN0ICoKIGZpbmRfaGFu ZGxlIChIQU5ETEUgaCkKIHsKICAgaGFuZGxlX2xpc3QgKmhsOwpAQCAtODcsNyArODcsNyBAQCBz ZXRjbGV4ZWMgKEhBTkRMRSBvaCwgSEFORExFIG5oLCBib29sIG5vdF9pbmhlcml0aW5nKQogfQog CiAvKiBDcmVhdGUgYSBuZXcgaGFuZGxlIHJlY29yZCAqLwotc3RhdGljIGhhbmRsZV9saXN0ICog X19zdGRjYWxsCitzdGF0aWMgaGFuZGxlX2xpc3QgKgogbmV3aCAoKQogewogICBoYW5kbGVfbGlz dCAqaGw7CkBAIC0xNTUsNyArMTU1LDcgQEAgYWRkX2hhbmRsZSAoY29uc3QgY2hhciAqZnVuYywg aW50IGxuLCBIQU5ETEUgaCwgY29uc3QgY2hhciAqbmFtZSwgYm9vbCBpbmgpCiAgIGRlYnVnX3By aW50ZiAoInByb3RlY3RpbmcgaGFuZGxlICclcycoJXApLCBpbmhlcml0ZWQgZmxhZyAlZCIsIGhs LT5uYW1lLCBobC0+aCwgaGwtPmluaGVyaXRlZCk7CiB9CiAKLXN0YXRpYyB2b2lkIF9fc3RkY2Fs bAorc3RhdGljIHZvaWQKIGRlbGV0ZV9oYW5kbGUgKGhhbmRsZV9saXN0ICpobCkKIHsKICAgaGFu ZGxlX2xpc3QgKmhudWtlID0gaGwtPm5leHQ7CkBAIC0xNzYsNyArMTc2LDcgQEAgZGVidWdfZml4 dXBfYWZ0ZXJfZm9ya19leGVjICgpCiAgICAgICBkZWxldGVfaGFuZGxlIChobCk7CS8vIHJlbW92 ZXMgaGwtPm5leHQKIH0KIAotc3RhdGljIGJvb2wgX19zdGRjYWxsCitzdGF0aWMgYm9vbAogbWFy a19jbG9zZWQgKGNvbnN0IGNoYXIgKmZ1bmMsIGludCBsbiwgSEFORExFIGgsIGNvbnN0IGNoYXIg Km5hbWUsIGJvb2wgZm9yY2UpCiB7CiAgIGhhbmRsZV9saXN0ICpobDsKZGlmZiAtLWdpdCBhL3dp bnN1cC9jeWd3aW4vZGxsX2luaXQuY2MgYi93aW5zdXAvY3lnd2luL2RsbF9pbml0LmNjCmluZGV4 IDY0OWFmMTE1My4uYjQ4NmVhYTFmIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2RsbF9pbml0 LmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vZGxsX2luaXQuY2MKQEAgLTI1LDcgKzI1LDcgQEAgZGV0 YWlscy4gKi8KICNpbmNsdWRlIDxhc3NlcnQuaD4KICNpbmNsdWRlIDx0bHNfcGJ1Zi5oPgogCi1l eHRlcm4gdm9pZCBfX3N0ZGNhbGwgY2hlY2tfc2FuaXR5X2FuZF9zeW5jIChwZXJfcHJvY2VzcyAq KTsKK2V4dGVybiB2b2lkIGNoZWNrX3Nhbml0eV9hbmRfc3luYyAocGVyX3Byb2Nlc3MgKik7CiAK ICNkZWZpbmUgZmFib3J0IGZvcmtfaW5mby0+YWJvcnQKIApkaWZmIC0tZ2l0IGEvd2luc3VwL2N5 Z3dpbi9kdGFibGUuY2MgYi93aW5zdXAvY3lnd2luL2R0YWJsZS5jYwppbmRleCA0NzRjNDcwYTYu LjZiMjM5NDgxNCAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9kdGFibGUuY2MKKysrIGIvd2lu c3VwL2N5Z3dpbi9kdGFibGUuY2MKQEAgLTU4LDcgKzU4LDcgQEAgZHRhYmxlX2luaXQgKCkKICAg ICBjeWdoZWFwLT5mZHRhYi5leHRlbmQgKE5PRklMRV9JTkNSLCAwKTsKIH0KIAotdm9pZCBfX3N0 ZGNhbGwKK3ZvaWQKIHNldF9zdGRfaGFuZGxlIChpbnQgZmQpCiB7CiAgIGZoYW5kbGVyX2Jhc2Ug KmZoID0gY3lnaGVhcC0+ZmR0YWJbZmRdOwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9lbnZp cm9uLmNjIGIvd2luc3VwL2N5Z3dpbi9lbnZpcm9uLmNjCmluZGV4IGFiNTkzYWI2NC4uY2E2MGJk OGQ0IDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2Vudmlyb24uY2MKKysrIGIvd2luc3VwL2N5 Z3dpbi9lbnZpcm9uLmNjCkBAIC0xNjksNyArMTY5LDcgQEAgc3RyYnJrKGNoYXIgKiZidWYpCiAK IC8qIFBhcnNlIGEgc3RyaW5nIG9mIHRoZSBmb3JtICJzb21ldGhpbmc9c3R1ZmYgc29tZXRoaW5n ZWxzZT1tb3JlLXN0dWZmIiwKICAgIHNpbGVudGx5IGlnbm9yaW5nIHVua25vd24gInNvbWV0aGlu Z3MiLiAgKi8KLXN0YXRpYyB2b2lkIF9fc3RkY2FsbAorc3RhdGljIHZvaWQKIHBhcnNlX29wdGlv bnMgKGNvbnN0IGNoYXIgKmluYnVmKQogewogICBpbnQgaXN0cnVlOwpAQCAtNTYyLDcgKzU2Miw3 IEBAIHNlY3VyZV9nZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUpCiB9CiAKIC8qIFJldHVybiBudW1i ZXIgb2YgZW52aXJvbm1lbnQgZW50cmllcywgaW5jbHVkaW5nIHRlcm1pbmF0aW5nIE5VTEwuICov Ci1zdGF0aWMgaW50IF9fc3RkY2FsbAorc3RhdGljIGludAogZW52c2l6ZSAoY29uc3QgY2hhciAq IGNvbnN0ICppbl9lbnZwKQogewogICBjb25zdCBjaGFyICogY29uc3QgKmVudnA7CkBAIC01Nzgs NyArNTc4LDcgQEAgZW52c2l6ZSAoY29uc3QgY2hhciAqIGNvbnN0ICppbl9lbnZwKQogLyogVGFr ZXMgc2ltaWxhciBhcmd1bWVudHMgdG8gc2V0ZW52IGV4Y2VwdCB0aGF0IG92ZXJ3cml0ZSBpcwog ICAgZWl0aGVyIC0xLCAwLCBvciAxLiAgMCBvciAxIHNpZ25pZnkgdGhhdCB0aGUgZnVuY3Rpb24g c2hvdWxkCiAgICBwZXJmb3JtIHNpbWlsYXJseSB0byBzZXRlbnYuICBPdGhlcndpc2UgcHV0ZW52 IGlzIGFzc3VtZWQuICovCi1zdGF0aWMgaW50IF9fc3RkY2FsbAorc3RhdGljIGludAogX2FkZGVu diAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUsIGludCBvdmVyd3JpdGUpCiB7 CiAgIGludCBpc3NldGVudiA9IG92ZXJ3cml0ZSA+PSAwOwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5 Z3dpbi9leGNlcHRpb25zLmNjIGIvd2luc3VwL2N5Z3dpbi9leGNlcHRpb25zLmNjCmluZGV4IGI4 ZDQ2NTA0ZC4uMDI5N2MwZWI3IDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2V4Y2VwdGlvbnMu Y2MKKysrIGIvd2luc3VwL2N5Z3dpbi9leGNlcHRpb25zLmNjCkBAIC01NSw3ICs1NSw3IEBAIFBX Q0hBUiBkZWJ1Z2dlcl9jb21tYW5kOwogZXh0ZXJuIHVpbnQ4X3QgX3NpZ2JlOwogZXh0ZXJuIHVp bnQ4X3QgX3NpZ2RlbGF5ZWRfZW5kOwogCi1zdGF0aWMgQk9PTCBXSU5BUEkgY3RybF9jX2hhbmRs ZXIgKERXT1JEKTsKK3N0YXRpYyBCT09MIGN0cmxfY19oYW5kbGVyIChEV09SRCk7CiAKIHN0YXRp YyBjb25zdCBzdHJ1Y3QKIHsKQEAgLTUyOCw3ICs1MjgsNyBAQCBleGNlcHRpb246Om15ZmF1bHQg KEVYQ0VQVElPTl9SRUNPUkQgKmUsIGV4Y2VwdGlvbl9saXN0ICpmcmFtZSwgQ09OVEVYVCAqaW4s CiAgICBUT0RPOiBXaGF0IHdlIGRvIGhlcmUgaXMgdG8gaGFuZGxlIG9ubHkgX190cnkvX19leGNl cHQgYmxvY2tzIGluIEN5Z3dpbi4KICAgICAgICAgICJOb3JtYWwiIGV4Y2VwdGlvbnMgd2lsbCBz aW1wbHkgZXhpdCB0aGUgcHJvY2Vzcy4gIFN0aWxsLCBiZXR0ZXIKIAkgdGhhbiBub3RoaW5nLi4u ICovCi1MT05HIFdJTkFQSQorTE9ORwogbXlmYXVsdF9hbHRzdGFja19oYW5kbGVyIChFWENFUFRJ T05fUE9JTlRFUlMgKmV4YykKIHsKICAgX2N5Z3RscyYgbWUgPSBfbXlfdGxzOwpAQCAtNzU2LDcg Kzc1Niw3IEBAIGV4Y2VwdGlvbjo6aGFuZGxlIChFWENFUFRJT05fUkVDT1JEICplLCBleGNlcHRp b25fbGlzdCAqZnJhbWUsIENPTlRFWFQgKmluLAogICAgYXR0ZW1wdHMgdG8gYmxvY2sgdW5ibG9j a2FibGUgc2lnbmFscyB3aWxsIGJlIHNpbGVudGx5IGlnbm9yZWQuCiAgICBUaGlzIGlzIGNvdW50 ZXIgdG8gd2hhdCBhcHBlYXJzIHRvIGJlIGRvY3VtZW50ZWQgaW4gc29tZSBVTklYCiAgICBtYW4g cGFnZXMsIGUuZy4gTGludXguICAqLwotaW50IF9fc3RkY2FsbAoraW50CiBoYW5kbGVfc2lnc3Vz cGVuZCAoc2lnc2V0X3QgdGVtcG1hc2spCiB7CiAgIHNpZ3NldF90IG9sZG1hc2sgPSBfbXlfdGxz LnNpZ21hc2s7CS8vIFJlbWVtYmVyIGZvciByZXN0b3JhdGlvbgpAQCAtODY4LDcgKzg2OCw3IEBA IF9jeWd0bHM6OmludGVycnVwdF9zZXR1cCAoc2lnaW5mb190JiBzaSwgdm9pZCAqaGFuZGxlciwg c3RydWN0IHNpZ2FjdGlvbiYgc2lnYSkKIAkJICBzaWduYWxfYXJyaXZlZCwgc2kuc2lfc2lnbm8p OwogfQogCi1leHRlcm4gIkMiIHZvaWQgX19zdGRjYWxsCitleHRlcm4gIkMiIHZvaWQKIHNldF9z aWdfZXJybm8gKGludCBlKQogewogICAqX215X3Rscy5lcnJub19hZGRyID0gZTsKQEAgLTk3Niw3 ICs5NzYsNyBAQCBoYXNfdmlzaWJsZV93aW5kb3dfc3RhdGlvbiAoKQogfQogCiAvKiBLZXlib2Fy ZCBpbnRlcnJ1cHQgaGFuZGxlci4gICovCi1zdGF0aWMgQk9PTCBXSU5BUEkKK3N0YXRpYyBCT09M CiBjdHJsX2NfaGFuZGxlciAoRFdPUkQgdHlwZSkKIHsKICAgc3RhdGljIGJvb2wgc2F3X2Nsb3Nl OwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgY3RybF9jX2hhbmRsZXIgKERXT1JEIHR5cGUpCiB9CiAK IC8qIEZ1bmN0aW9uIHVzZWQgYnkgbG93IGxldmVsIHNpZyB3cmFwcGVycy4gKi8KLWV4dGVybiAi QyIgdm9pZCBfX3N0ZGNhbGwKK2V4dGVybiAiQyIgdm9pZAogc2V0X3Byb2Nlc3NfbWFzayAoc2ln c2V0X3QgbmV3bWFzaykKIHsKICAgc2V0X3NpZ25hbF9tYXNrIChfbXlfdGxzLnNpZ21hc2ssIG5l d21hc2spOwpAQCAtMTIwNyw3ICsxMjA3LDcgQEAgc2V0X3NpZ25hbF9tYXNrIChzaWdzZXRfdCYg c2V0bWFzaywgc2lnc2V0X3QgbmV3bWFzaykKIH0KIAogCi1EV09SRCBXSU5BUEkKK0RXT1JECiBk dW1wc3RhY2tfb3ZlcmZsb3dfd3JhcHBlciAoUFZPSUQgYXJnKQogewogICBjeWd3aW5fZXhjZXB0 aW9uICpleGMgPSAoY3lnd2luX2V4Y2VwdGlvbiAqKSBhcmc7CmRpZmYgLS1naXQgYS93aW5zdXAv Y3lnd2luL2ZoYW5kbGVyLmNjIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlci5jYwppbmRleCA4ODUw NzM1N2IuLjU2NzFmZWEzYyAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlci5jYwor KysgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyLmNjCkBAIC0xNDIsNyArMTQyLDcgQEAgY2hhciAq ZmhhbmRsZXJfYmFzZTo6Z2V0X3Byb2NfZmRfbmFtZSAoY2hhciAqYnVmKQogCiAvKiBEZXRlY3Qg aWYgd2UgYXJlIHNpdHRpbmcgYXQgRU9GIGZvciBjb25kaXRpb25zIHdoZXJlIFdpbmRvd3MKICAg IHJldHVybnMgYW4gZXJyb3IgYnV0IFVOSVggZG9lc24ndC4gICovCi1pbnQgX19zdGRjYWxsCitp bnQKIGlzX2F0X2VvZiAoSEFORExFIGgpCiB7CiAgIElPX1NUQVRVU19CTE9DSyBpbzsKQEAgLTg3 MSw3ICs4NzEsNyBAQCBvdXQ6CiAgIGRlYnVnX3ByaW50ZiAoInJldHVybmluZyAlZCwgJXMgbW9k ZSIsIGxlbiwgcmJpbmFyeSAoKSA/ICJiaW5hcnkiIDogInRleHQiKTsKIH0KIAotc3NpemVfdCBf X3N0ZGNhbGwKK3NzaXplX3QKIGZoYW5kbGVyX2Jhc2U6OndyaXRlIChjb25zdCB2b2lkICpwdHIs IHNpemVfdCBsZW4pCiB7CiAgIHNzaXplX3QgcmVzOwpAQCAtOTY3LDcgKzk2Nyw3IEBAIGZoYW5k bGVyX2Jhc2U6OndyaXRlIChjb25zdCB2b2lkICpwdHIsIHNpemVfdCBsZW4pCiAgIHJldHVybiBy ZXM7CiB9CiAKLXNzaXplX3QgX19zdGRjYWxsCitzc2l6ZV90CiBmaGFuZGxlcl9iYXNlOjpyZWFk diAoY29uc3Qgc3RydWN0IGlvdmVjICpjb25zdCBpb3YsIGNvbnN0IGludCBpb3ZjbnQsCiAJCSAg ICAgIHNzaXplX3QgdG90KQogewpAQCAtMTAyNCw3ICsxMDI0LDcgQEAgZmhhbmRsZXJfYmFzZTo6 cmVhZHYgKGNvbnN0IHN0cnVjdCBpb3ZlYyAqY29uc3QgaW92LCBjb25zdCBpbnQgaW92Y250LAog ICByZXR1cm4gbGVuOwogfQogCi1zc2l6ZV90IF9fc3RkY2FsbAorc3NpemVfdAogZmhhbmRsZXJf YmFzZTo6d3JpdGV2IChjb25zdCBzdHJ1Y3QgaW92ZWMgKmNvbnN0IGlvdiwgY29uc3QgaW50IGlv dmNudCwKIAkJICAgICAgIHNzaXplX3QgdG90KQogewpAQCAtMTUwMSw3ICsxNTAxLDcgQEAgZmhh bmRsZXJfZGV2X251bGw6OmZoYW5kbGVyX2Rldl9udWxsICgpIDoKIHsKIH0KIAotc3NpemVfdCBf X3N0ZGNhbGwKK3NzaXplX3QKIGZoYW5kbGVyX2Rldl9udWxsOjp3cml0ZSAoY29uc3Qgdm9pZCAq cHRyLCBzaXplX3QgbGVuKQogewogICAvKiBTaG9ydGN1dC4gIFRoaXMgYWxzbyBmaXhlcyBhIHBy b2JsZW0gd2l0aCB0aGUgTlVMIGRldmljZSBvbiA2NCBiaXQ6CmRpZmYgLS1naXQgYS93aW5zdXAv Y3lnd2luL2ZoYW5kbGVyLmggYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyLmgKaW5kZXggYTJhNGVj MTUwLi5kZmFkMDdmNzIgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXIuaAorKysg Yi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyLmgKQEAgLTQwNCw5ICs0MDQsOSBAQCBwdWJsaWM6CiAg IHZpcnR1YWwgaW50IGZjbnRsIChpbnQgY21kLCBpbnRwdHJfdCk7CiAgIHZpcnR1YWwgY2hhciBj b25zdCAqdHR5bmFtZSAoKSB7IHJldHVybiBnZXRfbmFtZSAoKTsgfQogICB2aXJ0dWFsIHZvaWQg cmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbik7Ci0gIHZpcnR1YWwgc3NpemVfdCBfX3N0ZGNh bGwgd3JpdGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbik7Ci0gIHZpcnR1YWwgc3NpemVf dCBfX3N0ZGNhbGwgcmVhZHYgKGNvbnN0IHN0cnVjdCBpb3ZlYyAqLCBpbnQgaW92Y250LCBzc2l6 ZV90IHRvdCA9IC0xKTsKLSAgdmlydHVhbCBzc2l6ZV90IF9fc3RkY2FsbCB3cml0ZXYgKGNvbnN0 IHN0cnVjdCBpb3ZlYyAqLCBpbnQgaW92Y250LCBzc2l6ZV90IHRvdCA9IC0xKTsKKyAgdmlydHVh bCBzc2l6ZV90IHdyaXRlIChjb25zdCB2b2lkICpwdHIsIHNpemVfdCBsZW4pOworICB2aXJ0dWFs IHNzaXplX3QgcmVhZHYgKGNvbnN0IHN0cnVjdCBpb3ZlYyAqLCBpbnQgaW92Y250LCBzc2l6ZV90 IHRvdCA9IC0xKTsKKyAgdmlydHVhbCBzc2l6ZV90IHdyaXRldiAoY29uc3Qgc3RydWN0IGlvdmVj ICosIGludCBpb3ZjbnQsIHNzaXplX3QgdG90ID0gLTEpOwogICB2aXJ0dWFsIHNzaXplX3QgcHJl YWQgKHZvaWQgKiwgc2l6ZV90LCBvZmZfdCwgdm9pZCAqYWlvID0gTlVMTCk7CiAgIHZpcnR1YWwg c3NpemVfdCBwd3JpdGUgKHZvaWQgKiwgc2l6ZV90LCBvZmZfdCwgdm9pZCAqYWlvID0gTlVMTCk7 CiAgIHZpcnR1YWwgb2ZmX3QgbHNlZWsgKG9mZl90IG9mZnNldCwgaW50IHdoZW5jZSk7CkBAIC01 OTMsMTQgKzU5MywxNCBAQCBjbGFzcyBmaGFuZGxlcl9zb2NrZXQ6IHB1YmxpYyBmaGFuZGxlcl9i YXNlCiAJCQkgICAgc3RydWN0IHNvY2thZGRyICpmcm9tLCBpbnQgKmZyb21sZW4pID0gMDsKICAg dmlydHVhbCBzc2l6ZV90IHJlY3Ztc2cgKHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGZsYWdzKSA9 IDA7CiAgIHZpcnR1YWwgdm9pZCByZWFkICh2b2lkICpwdHIsIHNpemVfdCYgbGVuKSA9IDA7Ci0g IHZpcnR1YWwgc3NpemVfdCBfX3N0ZGNhbGwgcmVhZHYgKGNvbnN0IHN0cnVjdCBpb3ZlYyAqLCBp bnQgaW92Y250LAorICB2aXJ0dWFsIHNzaXplX3QgcmVhZHYgKGNvbnN0IHN0cnVjdCBpb3ZlYyAq LCBpbnQgaW92Y250LAogCQkJCSAgIHNzaXplX3QgdG90ID0gLTEpID0gMDsKIAogICB2aXJ0dWFs IHNzaXplX3Qgc2VuZHRvIChjb25zdCB2b2lkICpwdHIsIHNpemVfdCBsZW4sIGludCBmbGFncywK IAkgICAgICBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKnRvLCBpbnQgdG9sZW4pID0gMDsKICAgdmly dHVhbCBzc2l6ZV90IHNlbmRtc2cgKGNvbnN0IHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGZsYWdz KSA9IDA7Ci0gIHZpcnR1YWwgc3NpemVfdCBfX3N0ZGNhbGwgd3JpdGUgKGNvbnN0IHZvaWQgKnB0 ciwgc2l6ZV90IGxlbikgPSAwOwotICB2aXJ0dWFsIHNzaXplX3QgX19zdGRjYWxsIHdyaXRldiAo Y29uc3Qgc3RydWN0IGlvdmVjICosIGludCBpb3ZjbnQsIHNzaXplX3QgdG90ID0gLTEpID0gMDsK KyAgdmlydHVhbCBzc2l6ZV90IHdyaXRlIChjb25zdCB2b2lkICpwdHIsIHNpemVfdCBsZW4pID0g MDsKKyAgdmlydHVhbCBzc2l6ZV90IHdyaXRldiAoY29uc3Qgc3RydWN0IGlvdmVjICosIGludCBp b3ZjbnQsIHNzaXplX3QgdG90ID0gLTEpID0gMDsKICAgdmlydHVhbCBpbnQgc2V0c29ja29wdCAo aW50IGxldmVsLCBpbnQgb3B0bmFtZSwgY29uc3Qgdm9pZCAqb3B0dmFsLAogCQkJICBfX3NvY2ts ZW5fdCBvcHRsZW4pID0gMDsKICAgdmlydHVhbCBpbnQgZ2V0c29ja29wdCAoaW50IGxldmVsLCBp bnQgb3B0bmFtZSwgY29uc3Qgdm9pZCAqb3B0dmFsLApAQCAtNzEyLDkgKzcxMiw5IEBAIGNsYXNz IGZoYW5kbGVyX3NvY2tldF93c29jazogcHVibGljIGZoYW5kbGVyX3NvY2tldAogCQkgICAgc3Ry dWN0IHNvY2thZGRyICpmcm9tLCBpbnQgKmZyb21sZW4pOwogICBzc2l6ZV90IHJlY3Ztc2cgKHN0 cnVjdCBtc2doZHIgKm1zZywgaW50IGZsYWdzKTsKICAgdm9pZCByZWFkICh2b2lkICpwdHIsIHNp emVfdCYgbGVuKTsKLSAgc3NpemVfdCBfX3N0ZGNhbGwgcmVhZHYgKGNvbnN0IHN0cnVjdCBpb3Zl YyAqLCBpbnQgaW92Y250LCBzc2l6ZV90IHRvdCA9IC0xKTsKLSAgc3NpemVfdCBfX3N0ZGNhbGwg d3JpdGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbik7Ci0gIHNzaXplX3QgX19zdGRjYWxs IHdyaXRldiAoY29uc3Qgc3RydWN0IGlvdmVjICosIGludCBpb3ZjbnQsIHNzaXplX3QgdG90ID0g LTEpOworICBzc2l6ZV90IHJlYWR2IChjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgaW50IGlvdmNudCwg c3NpemVfdCB0b3QgPSAtMSk7CisgIHNzaXplX3Qgd3JpdGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6 ZV90IGxlbik7CisgIHNzaXplX3Qgd3JpdGV2IChjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgaW50IGlv dmNudCwgc3NpemVfdCB0b3QgPSAtMSk7CiAgIGludCBzaHV0ZG93biAoaW50IGhvdyk7CiAgIGlu dCBjbG9zZSAoKTsKIApAQCAtMTEyMSwxNCArMTEyMSwxNCBAQCBjbGFzcyBmaGFuZGxlcl9zb2Nr ZXRfdW5peCA6IHB1YmxpYyBmaGFuZGxlcl9zb2NrZXQKICAgc3NpemVfdCByZWN2ZnJvbSAodm9p ZCAqcHRyLCBzaXplX3QgbGVuLCBpbnQgZmxhZ3MsCiAJCSAgICBzdHJ1Y3Qgc29ja2FkZHIgKmZy b20sIGludCAqZnJvbWxlbik7CiAgIHZvaWQgcmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbik7 Ci0gIHNzaXplX3QgX19zdGRjYWxsIHJlYWR2IChjb25zdCBzdHJ1Y3QgaW92ZWMgKmNvbnN0IGlv diwgaW50IGlvdmNudCwKKyAgc3NpemVfdCByZWFkdiAoY29uc3Qgc3RydWN0IGlvdmVjICpjb25z dCBpb3YsIGludCBpb3ZjbnQsCiAJCQkgICBzc2l6ZV90IHRvdCA9IC0xKTsKIAogICBzc2l6ZV90 IHNlbmRtc2cgKGNvbnN0IHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGZsYWdzKTsKICAgc3NpemVf dCBzZW5kdG8gKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbiwgaW50IGZsYWdzLAogCQkgIGNv bnN0IHN0cnVjdCBzb2NrYWRkciAqdG8sIGludCB0b2xlbik7Ci0gIHNzaXplX3QgX19zdGRjYWxs IHdyaXRlIChjb25zdCB2b2lkICpwdHIsIHNpemVfdCBsZW4pOwotICBzc2l6ZV90IF9fc3RkY2Fs bCB3cml0ZXYgKGNvbnN0IHN0cnVjdCBpb3ZlYyAqY29uc3QgaW92LCBpbnQgaW92Y250LAorICBz c2l6ZV90IHdyaXRlIChjb25zdCB2b2lkICpwdHIsIHNpemVfdCBsZW4pOworICBzc2l6ZV90IHdy aXRldiAoY29uc3Qgc3RydWN0IGlvdmVjICpjb25zdCBpb3YsIGludCBpb3ZjbnQsCiAJCQkgICAg c3NpemVfdCB0b3QgPSAtMSk7CiAgIGludCBzZXRzb2Nrb3B0IChpbnQgbGV2ZWwsIGludCBvcHRu YW1lLCBjb25zdCB2b2lkICpvcHR2YWwsCiAJCSAgX19zb2NrbGVuX3Qgb3B0bGVuKTsKQEAgLTIy MDIsNyArMjIwMiw3IEBAIHByaXZhdGU6CiAgIGludCBkdXAgKGZoYW5kbGVyX2Jhc2UgKiwgaW50 KTsKIAogICB2b2lkIHJlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pOwotICBzc2l6ZV90IF9f c3RkY2FsbCB3cml0ZSAoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3QgbGVuKTsKKyAgc3NpemVfdCB3 cml0ZSAoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3QgbGVuKTsKICAgdm9pZCBkb2VjaG8gKGNvbnN0 IHZvaWQgKnN0ciwgRFdPUkQgbGVuKTsKICAgaW50IGNsb3NlICgpOwogICBzdGF0aWMgYm9vbCBl eGlzdHMgKCkKQEAgLTIzODYsNyArMjM4Niw3IEBAIGNsYXNzIGZoYW5kbGVyX3B0eV9zbGF2ZTog cHVibGljIGZoYW5kbGVyX3B0eV9jb21tb24KIAogICBpbnQgb3BlbiAoaW50IGZsYWdzLCBtb2Rl X3QgbW9kZSA9IDApOwogICBib29sIG9wZW5fc2V0dXAgKGludCBmbGFncyk7Ci0gIHNzaXplX3Qg X19zdGRjYWxsIHdyaXRlIChjb25zdCB2b2lkICpwdHIsIHNpemVfdCBsZW4pOworICBzc2l6ZV90 IHdyaXRlIChjb25zdCB2b2lkICpwdHIsIHNpemVfdCBsZW4pOwogICB2b2lkIHJlYWQgKHZvaWQg KnB0ciwgc2l6ZV90JiBsZW4pOwogICBpbnQgaW5pdCAoSEFORExFLCBEV09SRCwgbW9kZV90KTsK IApAQCAtMjUwMSw3ICsyNTAxLDcgQEAgcHVibGljOgogICBpbnQgYWNjZXB0X2lucHV0ICgpOwog ICBpbnQgb3BlbiAoaW50IGZsYWdzLCBtb2RlX3QgbW9kZSA9IDApOwogICBib29sIG9wZW5fc2V0 dXAgKGludCBmbGFncyk7Ci0gIHNzaXplX3QgX19zdGRjYWxsIHdyaXRlIChjb25zdCB2b2lkICpw dHIsIHNpemVfdCBsZW4pOworICBzc2l6ZV90IHdyaXRlIChjb25zdCB2b2lkICpwdHIsIHNpemVf dCBsZW4pOwogICB2b2lkIHJlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pOwogICBpbnQgY2xv c2UgKCk7CiAgIHZvaWQgY2xlYW51cCAoKTsKQEAgLTI1NzEsMTQgKzI1NzEsMTQgQEAgY2xhc3Mg ZmhhbmRsZXJfZGV2X251bGw6IHB1YmxpYyBmaGFuZGxlcl9iYXNlCiAgICAgcmV0dXJuIGZoOwog ICB9CiAKLSAgc3NpemVfdCBfX3N0ZGNhbGwgd3JpdGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90 IGxlbik7CisgIHNzaXplX3Qgd3JpdGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbik7CiB9 OwogCiBjbGFzcyBmaGFuZGxlcl9kZXZfemVybzogcHVibGljIGZoYW5kbGVyX2Jhc2UKIHsKICBw dWJsaWM6CiAgIGZoYW5kbGVyX2Rldl96ZXJvICgpOwotICBzc2l6ZV90IF9fc3RkY2FsbCB3cml0 ZSAoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3QgbGVuKTsKKyAgc3NpemVfdCB3cml0ZSAoY29uc3Qg dm9pZCAqcHRyLCBzaXplX3QgbGVuKTsKICAgdm9pZCByZWFkICh2b2lkICpwdHIsIHNpemVfdCYg bGVuKTsKICAgb2ZmX3QgbHNlZWsgKG9mZl90LCBpbnQpIHsgcmV0dXJuIDA7IH0KIApAQCAtMjYx Nyw3ICsyNjE3LDcgQEAgY2xhc3MgZmhhbmRsZXJfZGV2X3JhbmRvbTogcHVibGljIGZoYW5kbGVy X2Jhc2UKICAgaW50IHBzZXVkb19yZWFkICh2b2lkICpwdHIsIHNpemVfdCBsZW4pOwogCiAgcHVi bGljOgotICBzc2l6ZV90IF9fc3RkY2FsbCB3cml0ZSAoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3Qg bGVuKTsKKyAgc3NpemVfdCB3cml0ZSAoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3QgbGVuKTsKICAg dm9pZCByZWFkICh2b2lkICpwdHIsIHNpemVfdCYgbGVuKTsKICAgb2ZmX3QgbHNlZWsgKG9mZl90 LCBpbnQpIHsgcmV0dXJuIDA7IH0KIApAQCAtMjY1Miw3ICsyNjUyLDcgQEAgY2xhc3MgZmhhbmRs ZXJfZGV2X2NsaXBib2FyZDogcHVibGljIGZoYW5kbGVyX2Jhc2UKICAgZmhhbmRsZXJfZGV2X2Ns aXBib2FyZCAoKTsKICAgaW50IGlzX3dpbmRvd3MgKCkgeyByZXR1cm4gMTsgfQogICBpbnQgZnN0 YXQgKHN0cnVjdCBzdGF0ICpidWYpOwotICBzc2l6ZV90IF9fc3RkY2FsbCB3cml0ZSAoY29uc3Qg dm9pZCAqcHRyLCBzaXplX3QgbGVuKTsKKyAgc3NpemVfdCB3cml0ZSAoY29uc3Qgdm9pZCAqcHRy LCBzaXplX3QgbGVuKTsKICAgdm9pZCByZWFkICh2b2lkICpwdHIsIHNpemVfdCYgbGVuKTsKICAg b2ZmX3QgbHNlZWsgKG9mZl90IG9mZnNldCwgaW50IHdoZW5jZSk7CiAgIGludCBjbG9zZSAoKTsK QEAgLTI2ODgsNyArMjY4OCw3IEBAIGNsYXNzIGZoYW5kbGVyX3dpbmRvd3M6IHB1YmxpYyBmaGFu ZGxlcl9iYXNlCiAgIGludCBpc193aW5kb3dzICgpIHsgcmV0dXJuIDE7IH0KICAgSFdORCBnZXRf aHduZCAoKSB7IHJldHVybiBoV25kXzsgfQogICBpbnQgb3BlbiAoaW50IGZsYWdzLCBtb2RlX3Qg bW9kZSA9IDApOwotICBzc2l6ZV90IF9fc3RkY2FsbCB3cml0ZSAoY29uc3Qgdm9pZCAqcHRyLCBz aXplX3QgbGVuKTsKKyAgc3NpemVfdCB3cml0ZSAoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3QgbGVu KTsKICAgdm9pZCByZWFkICh2b2lkICpwdHIsIHNpemVfdCYgbGVuKTsKICAgaW50IGlvY3RsICh1 bnNpZ25lZCBpbnQgY21kLCB2b2lkICopOwogICBvZmZfdCBsc2VlayAob2ZmX3QsIGludCkgeyBy ZXR1cm4gMDsgfQpAQCAtMjczNCw3ICsyNzM0LDcgQEAgY2xhc3MgZmhhbmRsZXJfZGV2X2RzcDog cHVibGljIGZoYW5kbGVyX2Jhc2UKICAgZmhhbmRsZXJfZGV2X2RzcCAqYmFzZSAoKSBjb25zdCB7 cmV0dXJuIChmaGFuZGxlcl9kZXZfZHNwICopYXJjaGV0eXBlO30KIAogICBpbnQgb3BlbiAoaW50 LCBtb2RlX3QgbW9kZSA9IDApOwotICBzc2l6ZV90IF9fc3RkY2FsbCB3cml0ZSAoY29uc3Qgdm9p ZCAqLCBzaXplX3QpOworICBzc2l6ZV90IHdyaXRlIChjb25zdCB2b2lkICosIHNpemVfdCk7CiAg IHZvaWQgcmVhZCAodm9pZCAqLCBzaXplX3QmKTsKICAgaW50IGlvY3RsICh1bnNpZ25lZCBpbnQs IHZvaWQgKik7CiAgIGludCBjbG9zZSAoKTsKQEAgLTI3NDIsNyArMjc0Miw3IEBAIGNsYXNzIGZo YW5kbGVyX2Rldl9kc3A6IHB1YmxpYyBmaGFuZGxlcl9iYXNlCiAgIHZvaWQgZml4dXBfYWZ0ZXJf ZXhlYyAoKTsKIAogIHByaXZhdGU6Ci0gIHNzaXplX3QgX19zdGRjYWxsIF93cml0ZSAoY29uc3Qg dm9pZCAqLCBzaXplX3QpOworICBzc2l6ZV90IF93cml0ZSAoY29uc3Qgdm9pZCAqLCBzaXplX3Qp OwogICB2b2lkIF9yZWFkICh2b2lkICosIHNpemVfdCYpOwogICBpbnQgX2lvY3RsICh1bnNpZ25l ZCBpbnQsIHZvaWQgKik7CiAgIHZvaWQgX2ZpeHVwX2FmdGVyX2ZvcmsgKEhBTkRMRSk7CkBAIC0y Nzg5LDcgKzI3ODksNyBAQCBjbGFzcyBmaGFuZGxlcl92aXJ0dWFsIDogcHVibGljIGZoYW5kbGVy X2Jhc2UKICAgdm9pZCBzZWVrZGlyIChESVIgKiwgbG9uZyk7CiAgIHZvaWQgcmV3aW5kZGlyIChE SVIgKik7CiAgIGludCBjbG9zZWRpciAoRElSICopOwotICBzc2l6ZV90IF9fc3RkY2FsbCB3cml0 ZSAoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3QgbGVuKTsKKyAgc3NpemVfdCB3cml0ZSAoY29uc3Qg dm9pZCAqcHRyLCBzaXplX3QgbGVuKTsKICAgdm9pZCByZWFkICh2b2lkICpwdHIsIHNpemVfdCYg bGVuKTsKICAgb2ZmX3QgbHNlZWsgKG9mZl90LCBpbnQpOwogICBpbnQgZHVwIChmaGFuZGxlcl9i YXNlICpjaGlsZCwgaW50KTsKQEAgLTI4NjcsNyArMjg2Nyw3IEBAIGNsYXNzIGZoYW5kbGVyX3By b2NzeXM6IHB1YmxpYyBmaGFuZGxlcl92aXJ0dWFsCiAgIGludCBvcGVuIChpbnQgZmxhZ3MsIG1v ZGVfdCBtb2RlID0gMCk7CiAgIGludCBjbG9zZSAoKTsKICAgdm9pZCByZWFkICh2b2lkICpwdHIs IHNpemVfdCYgbGVuKTsKLSAgc3NpemVfdCBfX3N0ZGNhbGwgd3JpdGUgKGNvbnN0IHZvaWQgKnB0 ciwgc2l6ZV90IGxlbik7CisgIHNzaXplX3Qgd3JpdGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90 IGxlbik7CiAgIGludCBmc3RhdCAoc3RydWN0IHN0YXQgKmJ1Zik7CiAgIGJvb2wgZmlsbF9maWxl YnVmICgpOwogCkBAIC0zMTIyLDcgKzMxMjIsNyBAQCBjbGFzcyBmaGFuZGxlcl9zaWduYWxmZCA6 IHB1YmxpYyBmaGFuZGxlcl9iYXNlCiAgIGludCBzaWduYWxmZCAoY29uc3Qgc2lnc2V0X3QgKm1h c2ssIGludCBmbGFncyk7CiAgIGludCBmc3RhdCAoc3RydWN0IHN0YXQgKmJ1Zik7CiAgIHZvaWQg cmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbik7Ci0gIHNzaXplX3QgX19zdGRjYWxsIHdyaXRl IChjb25zdCB2b2lkICosIHNpemVfdCk7CisgIHNzaXplX3Qgd3JpdGUgKGNvbnN0IHZvaWQgKiwg c2l6ZV90KTsKIAogICBpbnQgcG9sbCAoKTsKICAgaW5saW5lIHNpZ3NldF90IGdldF9zaWdzZXQg KCkgY29uc3QgeyByZXR1cm4gc2lnc2V0OyB9CkBAIC0zMTY3LDcgKzMxNjcsNyBAQCBjbGFzcyBm aGFuZGxlcl90aW1lcmZkIDogcHVibGljIGZoYW5kbGVyX2Jhc2UKIAogICBpbnQgZnN0YXQgKHN0 cnVjdCBzdGF0ICpidWYpOwogICB2b2lkIHJlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pOwot ICBzc2l6ZV90IF9fc3RkY2FsbCB3cml0ZSAoY29uc3Qgdm9pZCAqLCBzaXplX3QpOworICBzc2l6 ZV90IHdyaXRlIChjb25zdCB2b2lkICosIHNpemVfdCk7CiAgIGludCBkdXAgKGZoYW5kbGVyX2Jh c2UgKmNoaWxkLCBpbnQpOwogICBpbnQgaW9jdGwgKHVuc2lnbmVkIGludCwgdm9pZCAqKTsKICAg aW50IGNsb3NlICgpOwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9jbGlwYm9h cmQuY2MgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX2NsaXBib2FyZC5jYwppbmRleCBhZTZkZTQ1 NTEuLjQ4ODY5NjhiMiAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9jbGlwYm9h cmQuY2MKKysrIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9jbGlwYm9hcmQuY2MKQEAgLTEyMSw3 ICsxMjEsNyBAQCBmaGFuZGxlcl9kZXZfY2xpcGJvYXJkOjpzZXRfY2xpcGJvYXJkIChjb25zdCB2 b2lkICpidWYsIHNpemVfdCBsZW4pCiB9CiAKIC8qIEZJWE1FOiBhcmJpdHJhcnkgc2Vla2luZyBp cyBub3QgaGFuZGxlZCAqLwotc3NpemVfdCBfX3N0ZGNhbGwKK3NzaXplX3QKIGZoYW5kbGVyX2Rl dl9jbGlwYm9hcmQ6OndyaXRlIChjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4pCiB7CiAgIC8q IHdyaXRlIHRvIG91ciBtZW1idWZmZXIgKi8KZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhh bmRsZXJfY29uc29sZS5jYyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfY29uc29sZS5jYwppbmRl eCA0NWI3ODZkZDUuLjNiZTZlODhkNyAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9maGFuZGxl cl9jb25zb2xlLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfY29uc29sZS5jYwpAQCAt MTU4LDcgKzE1OCw3IEBAIGNvbnNvbGVfdW5pdDo6Y29uc29sZV91bml0IChIV05EIG1lMCk6CiAg ICAgYXBpX2ZhdGFsICgiY29uc29sZSBkZXZpY2UgYWxsb2NhdGlvbiBmYWlsdXJlIC0gdG9vIG1h bnkgY29uc29sZXMgaW4gdXNlLCBtYXggY29uc29sZXMgaXMgMzIiKTsKIH0KIAotc3RhdGljIERX T1JEIFdJTkFQSQorc3RhdGljIERXT1JECiBjb25zX21hc3Rlcl90aHJlYWQgKFZPSUQgKmFyZykK IHsKICAgZmhhbmRsZXJfY29uc29sZSAqZmggPSAoZmhhbmRsZXJfY29uc29sZSAqKSBhcmc7CkBA IC0zMzExLDcgKzMzMTEsNyBAQCBkb19wcmludDoKICAgcmV0dXJuIGZvdW5kICsgdHJ1bmNfYnVm LmxlbjsKIH0KIAotc3NpemVfdCBfX3N0ZGNhbGwKK3NzaXplX3QKIGZoYW5kbGVyX2NvbnNvbGU6 OndyaXRlIChjb25zdCB2b2lkICp2c3JjLCBzaXplX3QgbGVuKQogewogICBiZ19jaGVja190eXBl cyBiZyA9IGJnX2NoZWNrIChTSUdUVE9VKTsKQEAgLTM3NzgsNyArMzc3OCw3IEBAIGZoYW5kbGVy X2NvbnNvbGU6OnNldF9jbG9zZV9vbl9leGVjIChib29sIHZhbCkKICAgY2xvc2Vfb25fZXhlYyAo dmFsKTsKIH0KIAotdm9pZCBfX3N0ZGNhbGwKK3ZvaWQKIHNldF9jb25zb2xlX3RpdGxlIChjaGFy ICp0aXRsZSkKIHsKICAgd2NoYXJfdCBidWZbVElUTEVTSVpFICsgMV07CkBAIC0zODE5LDcgKzM4 MTksNyBAQCBERUZfSE9PSyAoQ3JlYXRlUHJvY2Vzc0EpOwogREVGX0hPT0sgKENyZWF0ZVByb2Nl c3NXKTsKIERFRl9IT09LIChDb250aW51ZURlYnVnRXZlbnQpOwogCi1zdGF0aWMgQk9PTCBXSU5B UEkKK3N0YXRpYyBCT09MCiBDcmVhdGVQcm9jZXNzQV9Ib29rZWQKICAgICAgKExQQ1NUUiBuLCBM UFNUUiBjLCBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgcGEsIExQU0VDVVJJVFlfQVRUUklCVVRFUyB0 YSwKICAgICAgIEJPT0wgaW5oLCBEV09SRCBmLCBMUFZPSUQgZSwgTFBDU1RSIGQsCkBAIC0zODM0 LDcgKzM4MzQsNyBAQCBDcmVhdGVQcm9jZXNzQV9Ib29rZWQKICAgcmV0dXJuIENyZWF0ZVByb2Nl c3NBX09yaWcgKG4sIGMsIHBhLCB0YSwgaW5oLCBmLCBlLCBkLCBzaSwgcGkpOwogfQogCi1zdGF0 aWMgQk9PTCBXSU5BUEkKK3N0YXRpYyBCT09MCiBDcmVhdGVQcm9jZXNzV19Ib29rZWQKICAgICAg KExQQ1dTVFIgbiwgTFBXU1RSIGMsIExQU0VDVVJJVFlfQVRUUklCVVRFUyBwYSwgTFBTRUNVUklU WV9BVFRSSUJVVEVTIHRhLAogICAgICAgQk9PTCBpbmgsIERXT1JEIGYsIExQVk9JRCBlLCBMUENX U1RSIGQsCkBAIC0zODQ5LDcgKzM4NDksNyBAQCBDcmVhdGVQcm9jZXNzV19Ib29rZWQKICAgcmV0 dXJuIENyZWF0ZVByb2Nlc3NXX09yaWcgKG4sIGMsIHBhLCB0YSwgaW5oLCBmLCBlLCBkLCBzaSwg cGkpOwogfQogCi1zdGF0aWMgQk9PTCBXSU5BUEkKK3N0YXRpYyBCT09MCiBDb250aW51ZURlYnVn RXZlbnRfSG9va2VkCiAgICAgIChEV09SRCBwLCBEV09SRCB0LCBEV09SRCBzKQogewpkaWZmIC0t Z2l0IGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9kaXNrX2ZpbGUuY2MgYi93aW5zdXAvY3lnd2lu L2ZoYW5kbGVyX2Rpc2tfZmlsZS5jYwppbmRleCBmNzcyOGUzNmUuLjIyZDhhYmE4MyAxMDA2NDQK LS0tIGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9kaXNrX2ZpbGUuY2MKKysrIGIvd2luc3VwL2N5 Z3dpbi9maGFuZGxlcl9kaXNrX2ZpbGUuY2MKQEAgLTE1NzgsNyArMTU3OCw3IEBAIGZoYW5kbGVy X2Rpc2tfZmlsZTo6cHJlYWQgKHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBvZmZfdCBvZmZzZXQs IHZvaWQgKmFpbykKICAgICAgV2luZG93cyBtYW5kYXRvcnkgbG9ja2luZyBzZW1hbnRpY3MgZGlz YWxsb3cgdG8gdXNlIGFub3RoZXIgSEFORExFLiAqLwogICBpZiAocmJpbmFyeSAoKSAmJiAhbWFu ZGF0b3J5X2xvY2tpbmcgKCkpCiAgICAgewotICAgICAgZXh0ZXJuIGludCBfX3N0ZGNhbGwgaXNf YXRfZW9mIChIQU5ETEUgaCk7CisgICAgICBleHRlcm4gaW50IGlzX2F0X2VvZiAoSEFORExFIGgp OwogICAgICAgTlRTVEFUVVMgc3RhdHVzOwogICAgICAgSU9fU1RBVFVTX0JMT0NLIGlvOwogICAg ICAgTEFSR0VfSU5URUdFUiBvZmYgPSB7IFF1YWRQYXJ0Om9mZnNldCB9OwpkaWZmIC0tZ2l0IGEv d2luc3VwL2N5Z3dpbi9maGFuZGxlcl9kc3AuY2MgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX2Rz cC5jYwppbmRleCA0ZDQ4MjRiNTYuLmMzN2JlZGVhNSAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dp bi9maGFuZGxlcl9kc3AuY2MKKysrIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9kc3AuY2MKQEAg LTEwMjAsNyArMTAyMCw3IEBAIGZoYW5kbGVyX2Rldl9kc3A6OmZoYW5kbGVyX2Rldl9kc3AgKCk6 CiAgIGRldiAoKS5wYXJzZSAoRkhfT1NTX0RTUCk7CiB9CiAKLXNzaXplX3QgX19zdGRjYWxsCitz c2l6ZV90CiBmaGFuZGxlcl9kZXZfZHNwOjp3cml0ZSAoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3Qg bGVuKQogewogICByZXR1cm4gYmFzZSAoKS0+X3dyaXRlIChwdHIsIGxlbik7CkBAIC0xMDkzLDcg KzEwOTMsNyBAQCBmaGFuZGxlcl9kZXZfZHNwOjpvcGVuIChpbnQgZmxhZ3MsIG1vZGVfdCkKICNk ZWZpbmUgSVNfV1JJVEUoKSAoKGdldF9mbGFncygpICYgT19BQ0NNT0RFKSAhPSBPX1JET05MWSkK ICNkZWZpbmUgSVNfUkVBRCgpICgoZ2V0X2ZsYWdzKCkgJiBPX0FDQ01PREUpICE9IE9fV1JPTkxZ KQogCi1zc2l6ZV90IF9fc3RkY2FsbAorc3NpemVfdAogZmhhbmRsZXJfZGV2X2RzcDo6X3dyaXRl IChjb25zdCB2b2lkICpwdHIsIHNpemVfdCBsZW4pCiB7CiAgIGRlYnVnX3ByaW50ZiAoInB0cj0l cCBsZW49JWxkIiwgcHRyLCBsZW4pOwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9maGFuZGxl cl9maWZvLmNjIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9maWZvLmNjCmluZGV4IGZhNGFjNzg5 MC4uMWQzZTQyOTA4IDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX2ZpZm8uY2MK KysrIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9maWZvLmNjCkBAIC00NDYsNyArNDQ2LDcgQEAg ZmhhbmRsZXJfZmlmbzo6dXBkYXRlX3NoYXJlZF9oYW5kbGVycyAoKQogICByZXR1cm4gMDsKIH0K IAotc3RhdGljIERXT1JEIFdJTkFQSQorc3RhdGljIERXT1JECiBmaWZvX3JlYWRlcl90aHJlYWQg KExQVk9JRCBwYXJhbSkKIHsKICAgZmhhbmRsZXJfZmlmbyAqZmggPSAoZmhhbmRsZXJfZmlmbyAq KSBwYXJhbTsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfbmV0ZHJpdmUuY2Mg Yi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX25ldGRyaXZlLmNjCmluZGV4IDMwNmQ3N2RkMi4uNThh Yjg4MTFiIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX25ldGRyaXZlLmNjCisr KyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfbmV0ZHJpdmUuY2MKQEAgLTYzLDcgKzYzLDcgQEAg d25ldF9kYmdfb3V0IChjb25zdCBjaGFyICpmdW5jLCBEV09SRCBuZGlfcmV0KQogICAgIGRlYnVn X3ByaW50ZiAoIldOZXRHZXRMYXN0RXJyb3IgZmFpbGVkOiAldSIsIGdsZV9yZXQpOwogfQogCi1z dGF0aWMgRFdPUkQgV0lOQVBJCitzdGF0aWMgRFdPUkQKIHRocmVhZF9uZXRkcml2ZSAodm9pZCAq YXJnKQogewogICBuZXRkcml2ZWluZiAqbmRpID0gKG5ldGRyaXZlaW5mICopIGFyZzsKZGlmZiAt LWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfcHJvY3N5cy5jYyBiL3dpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfcHJvY3N5cy5jYwppbmRleCBhNWZkODVmNDMuLmNkMWQzNTk4NCAxMDA2NDQKLS0t IGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9wcm9jc3lzLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfcHJvY3N5cy5jYwpAQCAtNDMyLDcgKzQzMiw3IEBAIGZoYW5kbGVyX3Byb2NzeXM6 OnJlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pCiAgIGZoYW5kbGVyX2Jhc2U6OnJhd19yZWFk IChwdHIsIGxlbik7CiB9CiAKLXNzaXplX3QgX19zdGRjYWxsCitzc2l6ZV90CiBmaGFuZGxlcl9w cm9jc3lzOjp3cml0ZSAoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3QgbGVuKQogewogICByZXR1cm4g ZmhhbmRsZXJfYmFzZTo6cmF3X3dyaXRlIChwdHIsIGxlbik7CmRpZmYgLS1naXQgYS93aW5zdXAv Y3lnd2luL2ZoYW5kbGVyX3JhbmRvbS5jYyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfcmFuZG9t LmNjCmluZGV4IGMwZjM3YjU1ZS4uNDk1ZTNhOTRiIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2lu L2ZoYW5kbGVyX3JhbmRvbS5jYworKysgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3JhbmRvbS5j YwpAQCAtMzYsNyArMzYsNyBAQCBmaGFuZGxlcl9kZXZfcmFuZG9tOjpwc2V1ZG9fd3JpdGUgKGNv bnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKICAgcmV0dXJuIGxlbjsKIH0KIAotc3NpemVfdCBf X3N0ZGNhbGwKK3NzaXplX3QKIGZoYW5kbGVyX2Rldl9yYW5kb206OndyaXRlIChjb25zdCB2b2lk ICpwdHIsIHNpemVfdCBsZW4pCiB7CiAgIGlmICghbGVuKQpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5 Z3dpbi9maGFuZGxlcl9zaWduYWxmZC5jYyBiL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfc2lnbmFs ZmQuY2MKaW5kZXggOTczMDU1MTVmLi5iZGQ4YmM5M2UgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3 aW4vZmhhbmRsZXJfc2lnbmFsZmQuY2MKKysrIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9zaWdu YWxmZC5jYwpAQCAtMTQwLDcgKzE0MCw3IEBAIGZoYW5kbGVyX3NpZ25hbGZkOjpyZWFkICh2b2lk ICpwdHIsIHNpemVfdCYgbGVuKQogICByZXR1cm47CiB9CiAKLXNzaXplX3QgX19zdGRjYWxsCitz c2l6ZV90CiBmaGFuZGxlcl9zaWduYWxmZDo6d3JpdGUgKGNvbnN0IHZvaWQgKiwgc2l6ZV90KQog ewogICBzZXRfZXJybm8gKEVJTlZBTCk7CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL2ZoYW5k bGVyX3NvY2tldF91bml4LmNjIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9zb2NrZXRfdW5peC5j YwppbmRleCA1NWUwNDMyYjYuLjNiZmFkOTUxYiAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9m aGFuZGxlcl9zb2NrZXRfdW5peC5jYworKysgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3NvY2tl dF91bml4LmNjCkBAIC05MjgsNyArOTI4LDcgQEAgc3RydWN0IGNvbm5fd2FpdF9pbmZvX3QKIH07 CiAKIC8qIEp1c3QgaG9wIHRvIHRoZSB3YWl0X3BpcGVfdGhyZWFkIG1ldGhvZC4gKi8KLURXT1JE IFdJTkFQSQorRFdPUkQKIGNvbm5lY3Rfd2FpdF9mdW5jIChMUFZPSUQgcGFyYW0pCiB7CiAgIGNv bm5fd2FpdF9pbmZvX3QgKndhaXRfaW5mbyA9IChjb25uX3dhaXRfaW5mb190ICopIHBhcmFtOwpA QCAtMTkxMSw3ICsxOTExLDcgQEAgZmhhbmRsZXJfc29ja2V0X3VuaXg6OnJlYWQgKHZvaWQgKnB0 ciwgc2l6ZV90JiBsZW4pCiAgIGxlbiA9IHJlY3Ztc2cgKCZtc2csIDApOwogfQogCi1zc2l6ZV90 IF9fc3RkY2FsbAorc3NpemVfdAogZmhhbmRsZXJfc29ja2V0X3VuaXg6OnJlYWR2IChjb25zdCBz dHJ1Y3QgaW92ZWMgKmNvbnN0IGlvdiwgaW50IGlvdmNudCwKIAkJCSAgICAgc3NpemVfdCB0b3Qp CiB7CkBAIC0xOTUzLDcgKzE5NTMsNyBAQCBmaGFuZGxlcl9zb2NrZXRfdW5peDo6c2VuZHRvIChj b25zdCB2b2lkICppbl9wdHIsIHNpemVfdCBsZW4sIGludCBmbGFncywKICAgcmV0dXJuIHNlbmRt c2cgKCZtc2csIGZsYWdzKTsKIH0KIAotc3NpemVfdCBfX3N0ZGNhbGwKK3NzaXplX3QKIGZoYW5k bGVyX3NvY2tldF91bml4Ojp3cml0ZSAoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3QgbGVuKQogewog ICBzdHJ1Y3QgaW92ZWMgaW92OwpAQCAtMTk3MSw3ICsxOTcxLDcgQEAgZmhhbmRsZXJfc29ja2V0 X3VuaXg6OndyaXRlIChjb25zdCB2b2lkICpwdHIsIHNpemVfdCBsZW4pCiAgIHJldHVybiBzZW5k bXNnICgmbXNnLCAwKTsKIH0KIAotc3NpemVfdCBfX3N0ZGNhbGwKK3NzaXplX3QKIGZoYW5kbGVy X3NvY2tldF91bml4Ojp3cml0ZXYgKGNvbnN0IHN0cnVjdCBpb3ZlYyAqY29uc3QgaW92LCBpbnQg aW92Y250LAogCQkJICAgICAgc3NpemVfdCB0b3QpCiB7CmRpZmYgLS1naXQgYS93aW5zdXAvY3ln d2luL2ZoYW5kbGVyX3RpbWVyZmQuY2MgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3RpbWVyZmQu Y2MKaW5kZXggNmJjNGUwZDY4Li45MjY5NDk0ZGIgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfdGltZXJmZC5jYworKysgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3RpbWVyZmQu Y2MKQEAgLTE0Myw3ICsxNDMsNyBAQCBmaGFuZGxlcl90aW1lcmZkOjpyZWFkICh2b2lkICpwdHIs IHNpemVfdCYgbGVuKQogICByZXR1cm47CiB9CiAKLXNzaXplX3QgX19zdGRjYWxsCitzc2l6ZV90 CiBmaGFuZGxlcl90aW1lcmZkOjp3cml0ZSAoY29uc3Qgdm9pZCAqLCBzaXplX3QpCiB7CiAgIHNl dF9lcnJubyAoRUlOVkFMKTsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfdHR5 LmNjIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl90dHkuY2MKaW5kZXggZTNmNzc0YTZiLi4wZjlk ZWM1NzAgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfdHR5LmNjCisrKyBiL3dp bnN1cC9jeWd3aW4vZmhhbmRsZXJfdHR5LmNjCkBAIC0yNjgsNyArMjY4LDcgQEAgYXRleGl0X2Z1 bmMgKHZvaWQpCiBERUZfSE9PSyAoQ3JlYXRlUHJvY2Vzc0EpOwogREVGX0hPT0sgKENyZWF0ZVBy b2Nlc3NXKTsKIAotc3RhdGljIEJPT0wgV0lOQVBJCitzdGF0aWMgQk9PTAogQ3JlYXRlUHJvY2Vz c0FfSG9va2VkCiAgICAgIChMUENTVFIgbiwgTFBTVFIgYywgTFBTRUNVUklUWV9BVFRSSUJVVEVT IHBhLCBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgdGEsCiAgICAgICBCT09MIGluaCwgRFdPUkQgZiwg TFBWT0lEIGUsIExQQ1NUUiBkLApAQCAtMzA3LDcgKzMwNyw3IEBAIENyZWF0ZVByb2Nlc3NBX0hv b2tlZAogICByZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgQk9PTCBXSU5BUEkKK3N0YXRpYyBCT09M CiBDcmVhdGVQcm9jZXNzV19Ib29rZWQKICAgICAgKExQQ1dTVFIgbiwgTFBXU1RSIGMsIExQU0VD VVJJVFlfQVRUUklCVVRFUyBwYSwgTFBTRUNVUklUWV9BVFRSSUJVVEVTIHRhLAogICAgICAgQk9P TCBpbmgsIERXT1JEIGYsIExQVk9JRCBlLCBMUENXU1RSIGQsCkBAIC0xMjQxLDcgKzEyNDEsNyBA QCBmaGFuZGxlcl9wdHlfc2xhdmU6OnJlc2V0X3N3aXRjaF90b19uYXRfcGlwZSAodm9pZCkKICAg UmVsZWFzZU11dGV4IChwaXBlX3N3X211dGV4KTsKIH0KIAotc3NpemVfdCBfX3N0ZGNhbGwKK3Nz aXplX3QKIGZoYW5kbGVyX3B0eV9zbGF2ZTo6d3JpdGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90 IGxlbikKIHsKICAgc3NpemVfdCB0b3dyaXRlID0gbGVuOwpAQCAtMjE3MSw3ICsyMTcxLDcgQEAg ZmhhbmRsZXJfcHR5X21hc3Rlcjo6Y2xvc2UgKCkKICAgcmV0dXJuIDA7CiB9CiAKLXNzaXplX3Qg X19zdGRjYWxsCitzc2l6ZV90CiBmaGFuZGxlcl9wdHlfbWFzdGVyOjp3cml0ZSAoY29uc3Qgdm9p ZCAqcHRyLCBzaXplX3QgbGVuKQogewogICBzc2l6ZV90IHJldDsKQEAgLTI2NjYsNyArMjY2Niw3 IEBAIHJlcGx5OgogICByZXR1cm4gMDsKIH0KIAotc3RhdGljIERXT1JEIFdJTkFQSQorc3RhdGlj IERXT1JECiBwdHlfbWFzdGVyX3RocmVhZCAoVk9JRCAqYXJnKQogewogICBmaGFuZGxlcl9wdHlf bWFzdGVyOjptYXN0ZXJfdGhyZWFkX3BhcmFtX3QgcDsKQEAgLTI4NzMsNyArMjg3Myw3IEBAIGZo YW5kbGVyX3B0eV9tYXN0ZXI6OnB0eV9tYXN0ZXJfZndkX3RocmVhZCAoY29uc3QgbWFzdGVyX2Z3 ZF90aHJlYWRfcGFyYW1fdCAqcCkKICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBEV09SRCBXSU5B UEkKK3N0YXRpYyBEV09SRAogcHR5X21hc3Rlcl9md2RfdGhyZWFkIChWT0lEICphcmcpCiB7CiAg IGZoYW5kbGVyX3B0eV9tYXN0ZXI6Om1hc3Rlcl9md2RfdGhyZWFkX3BhcmFtX3QgcDsKZGlmZiAt LWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfdmlydHVhbC5jYyBiL3dpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfdmlydHVhbC5jYwppbmRleCBiZGQ0NTRkMWMuLjIxZmY0ZjM1ZSAxMDA2NDQKLS0t IGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl92aXJ0dWFsLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfdmlydHVhbC5jYwpAQCAtMjAyLDcgKzIwMiw3IEBAIGZoYW5kbGVyX3ZpcnR1YWw6 OnJlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pCiAgIHBvc2l0aW9uICs9IGxlbjsKIH0KIAot c3NpemVfdCBfX3N0ZGNhbGwKK3NzaXplX3QKIGZoYW5kbGVyX3ZpcnR1YWw6OndyaXRlIChjb25z dCB2b2lkICpwdHIsIHNpemVfdCBsZW4pCiB7CiAgIHNldF9lcnJubyAoRUFDQ0VTKTsKZGlmZiAt LWdpdCBhL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfd2luZG93cy5jYyBiL3dpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfd2luZG93cy5jYwppbmRleCA5NDdjZmQ1YTAuLjkwYWI0OGRhYSAxMDA2NDQKLS0t IGEvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl93aW5kb3dzLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfd2luZG93cy5jYwpAQCAtNTQsNyArNTQsNyBAQCBmaGFuZGxlcl93aW5kb3dzOjpv cGVuIChpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlKQogICByZXR1cm4gZmhhbmRsZXJfYmFzZTo6b3Bl biAoKGZsYWdzICYgfk9fVEVYVCkgfCBPX0JJTkFSWSwgbW9kZSk7CiB9CiAKLXNzaXplX3QgX19z dGRjYWxsCitzc2l6ZV90CiBmaGFuZGxlcl93aW5kb3dzOjp3cml0ZSAoY29uc3Qgdm9pZCAqYnVm LCBzaXplX3QpCiB7CiAgIE1TRyAqcHRyID0gKE1TRyAqKSBidWY7CmRpZmYgLS1naXQgYS93aW5z dXAvY3lnd2luL2ZoYW5kbGVyX3plcm8uY2MgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3plcm8u Y2MKaW5kZXggNTYzNzY4NTc0Li45ZDhmZTAwNGQgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfemVyby5jYworKysgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3plcm8uY2MKQEAg LTE5LDcgKzE5LDcgQEAgZmhhbmRsZXJfZGV2X3plcm86OmZoYW5kbGVyX2Rldl96ZXJvICgpCiB7 CiB9CiAKLXNzaXplX3QgX19zdGRjYWxsCitzc2l6ZV90CiBmaGFuZGxlcl9kZXZfemVybzo6d3Jp dGUgKGNvbnN0IHZvaWQgKiwgc2l6ZV90IGxlbikKIHsKICAgaWYgKGdldF9kZXZpY2UgKCkgPT0g RkhfRlVMTCkKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZmxvY2suY2MgYi93aW5zdXAvY3ln d2luL2Zsb2NrLmNjCmluZGV4IDJmMTJmYzA3ZS4uNTBkYjdmZTI4IDEwMDY0NAotLS0gYS93aW5z dXAvY3lnd2luL2Zsb2NrLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vZmxvY2suY2MKQEAgLTY0Miw3 ICs2NDIsNyBAQCBsb2NrZl90OjpjcmVhdGVfbG9ja19vYmpfYXR0ciAobG9ja2ZhdHRyX3QgKmF0 dHIsIFVMT05HIGZsYWdzLCB2b2lkICpzZF9idWYpCiAgIHJldHVybiAmYXR0ci0+YXR0cjsKIH0K IAotRFdPUkQgV0lOQVBJCitEV09SRAogY3JlYXRlX2xvY2tfaW5fcGFyZW50IChQVk9JRCBwYXJh bSkKIHsKICAgSEFORExFIGxmX29iajsKQEAgLTcyMSw3ICs3MjEsNyBAQCBlcnI6CiAgIHJldHVy biAxOwogfQogCi1EV09SRCBXSU5BUEkKK0RXT1JECiBkZWxldGVfbG9ja19pbl9wYXJlbnQgKFBW T0lEIHBhcmFtKQogewogICBpbm9kZV90ICpub2RlLCAqbmV4dF9ub2RlOwpAQCAtMTg3MCw3ICsx ODcwLDcgQEAgc3RydWN0IGxvY2tfcGFybXMgewogICBOVFNUQVRVUwkgICBzdGF0dXM7CiB9Owog Ci1zdGF0aWMgRFdPUkQgV0lOQVBJCitzdGF0aWMgRFdPUkQKIGJsb2NraW5nX2xvY2tfdGhyIChM UFZPSUQgcGFyYW0pCiB7CiAgIHN0cnVjdCBsb2NrX3Bhcm1zICpscCA9IChzdHJ1Y3QgbG9ja19w YXJtcyAqKSBwYXJhbTsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vZm9yay5jYyBiL3dpbnN1 cC9jeWd3aW4vZm9yay5jYwppbmRleCA2NWYzZTA1MWIuLjAxMjgxOWI2MSAxMDA2NDQKLS0tIGEv d2luc3VwL2N5Z3dpbi9mb3JrLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vZm9yay5jYwpAQCAtNDQs OCArNDQsOCBAQCBjbGFzcyBmcm9rCiAgIGludCBjaGlsZF9waWQ7CiAgIGludCB0aGlzX2Vycm5v OwogICBIQU5ETEUgaGNoaWxkOwotICBpbnQgX19zdGRjYWxsIHBhcmVudCAodm9sYXRpbGUgY2hh ciAqIHZvbGF0aWxlIGhlcmUpOwotICBpbnQgX19zdGRjYWxsIGNoaWxkICh2b2xhdGlsZSBjaGFy ICogdm9sYXRpbGUgaGVyZSk7CisgIGludCBwYXJlbnQgKHZvbGF0aWxlIGNoYXIgKiB2b2xhdGls ZSBoZXJlKTsKKyAgaW50IGNoaWxkICh2b2xhdGlsZSBjaGFyICogdm9sYXRpbGUgaGVyZSk7CiAg IGJvb2wgZXJyb3IgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKICAgZnJpZW5kIGludCBkb2Zvcmsg KHZvaWQgKipwcm9jLCBib29sICp3aXRoX2ZvcmthYmxlcyk7CiB9OwpAQCAtNTksNyArNTksNyBA QCByZXN1bWVfY2hpbGQgKEhBTkRMRSBmb3JrZXJfZmluaXNoZWQpCiB9CiAKIC8qIE5vdGlmeSBw YXJlbnQgdGhhdCBpdCBpcyB0aW1lIGZvciB0aGUgbmV4dCBzdGVwLiAqLwotc3RhdGljIHZvaWQg X19zdGRjYWxsCitzdGF0aWMgdm9pZAogc3luY193aXRoX3BhcmVudCAoY29uc3QgY2hhciAqcywg Ym9vbCBoYW5nX3NlbGYpCiB7CiAgIGRlYnVnX3ByaW50ZiAoInNpZ25hbGxpbmcgcGFyZW50OiAl cyIsIHMpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIGNoaWxkX2luZm86OnByZWZvcmsgKGJvb2wgZGV0 YWNoZWQpCiAgICAgfQogfQogCi1pbnQgX19zdGRjYWxsCitpbnQKIGZyb2s6OmNoaWxkICh2b2xh dGlsZSBjaGFyICogdm9sYXRpbGUgaGVyZSkKIHsKICAgSEFORExFJiBoUGFyZW50ID0gY2gucGFy ZW50OwpAQCAtMjAyLDcgKzIwMiw3IEBAIGZyb2s6OmNoaWxkICh2b2xhdGlsZSBjaGFyICogdm9s YXRpbGUgaGVyZSkKICAgcmV0dXJuIDA7CiB9CiAKLWludCBfX3N0ZGNhbGwKK2ludAogZnJvazo6 cGFyZW50ICh2b2xhdGlsZSBjaGFyICogdm9sYXRpbGUgc3RhY2tfaGVyZSkKIHsKICAgSEFORExF IGZvcmtlcl9maW5pc2hlZDsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vaW5jbHVkZS9jeWd3 aW4vY3lnd2luX2RsbC5oIGIvd2luc3VwL2N5Z3dpbi9pbmNsdWRlL2N5Z3dpbi9jeWd3aW5fZGxs LmgKaW5kZXggNTZiNDM2M2NlLi4yYjBkMGI2YWIgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4v aW5jbHVkZS9jeWd3aW4vY3lnd2luX2RsbC5oCisrKyBiL3dpbnN1cC9jeWd3aW4vaW5jbHVkZS9j eWd3aW4vY3lnd2luX2RsbC5oCkBAIC0yMiw3ICsyMiw3IEBAIGRldGFpbHMuICovCiAjZGVmaW5l IERFQ0xBUkVfQ1lHV0lOX0RMTChFbnRyeSkJCQkJCSAgICAgIFwKIAkJCQkJCQkJCSAgICAgIFwK IENERUNMX0JFR0lOCQkJCQkJCQkgICAgICBcCi0gIGludCBXSU5BUEkgRW50cnkgKEhJTlNUQU5D RSBoLCBEV09SRCByZWFzb24sIHZvaWQgKnB0cik7CSAgICAgICAgICAgICAgXAorICBpbnQgRW50 cnkgKEhJTlNUQU5DRSBoLCBEV09SRCByZWFzb24sIHZvaWQgKnB0cik7CSAgICAgICAgICAgICAg XAogICB0eXBlZGVmIGludCAoKm1haW5mdW5jKSAoaW50LCBjaGFyICoqLCBjaGFyICoqKTsJCQkg ICAgICBcCiAgIGV4dGVybiBQVk9JRCBjeWd3aW5fYXR0YWNoX2RsbCAoSE1PRFVMRSwgbWFpbmZ1 bmMpOwkJCSAgICAgIFwKICAgZXh0ZXJuIHZvaWQgY3lnd2luX2RldGFjaF9kbGwgKFBWT0lEKTsJ CQkJICAgICAgXApAQCAtNDIsNyArNDIsNyBAQCBzdGF0aWMgaW50IF9fZGxsTWFpbiAoaW50IGEg X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKSwJCSAgICAgIFwKIAkJCQkJCQkJCSAgICAgIFwK IHN0YXRpYyBQVk9JRCBkbGxfaW5kZXg7CQkJCQkJCSAgICAgIFwKIAkJCQkJCQkJCSAgICAgIFwK LWludCBXSU5BUEkgX2N5Z3dpbl9kbGxfZW50cnkgKEhJTlNUQU5DRSBoLCBEV09SRCByZWFzb24s IHZvaWQgKnB0cikJICAgICAgXAoraW50IF9jeWd3aW5fZGxsX2VudHJ5IChISU5TVEFOQ0UgaCwg RFdPUkQgcmVhc29uLCB2b2lkICpwdHIpCSAgICAgIFwKIHsJCQkJCQkJCQkgICAgICBcCiAgIGlu dCByZXQ7CQkJCQkJCQkgICAgICBcCiAgIHJldCA9IDE7CQkJCQkJCQkgICAgICBcCkBAIC04OCw3 ICs4OCw3IEBAIGludCBXSU5BUEkgX2N5Z3dpbl9kbGxfZW50cnkgKEhJTlNUQU5DRSBoLCBEV09S RCByZWFzb24sIHZvaWQgKnB0cikJICAgICAgXAogfQkJCQkJCQkJCSAgICAgIFwKIAkJCQkJCQkJ CSAgICAgIFwKIC8qIE9CU09MRVRFOiBUaGlzIGlzIG9ubHkgcHJvdmlkZWQgZm9yIHNvdXJjZSBs ZXZlbCBjb21wYXRpYmlsaXR5LiAqLyAgICAgICAgIFwKLWludCBXSU5BUEkgX2N5Z3dpbl9ub25j eWd3aW5fZGxsX2VudHJ5IChISU5TVEFOQ0UgaCwgRFdPUkQgcmVhc29uLCB2b2lkICpwdHIpIFwK K2ludCBfY3lnd2luX25vbmN5Z3dpbl9kbGxfZW50cnkgKEhJTlNUQU5DRSBoLCBEV09SRCByZWFz b24sIHZvaWQgKnB0cikgXAogewkJCQkJCQkJCSAgICAgIFwKICAgcmV0dXJuIF9jeWd3aW5fZGxs X2VudHJ5IChoLCByZWFzb24sIHB0cik7CQkJCSAgICAgIFwKIH0JCQkJCQkJCQkgICAgICBcCmRp ZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL2luY2x1ZGUvY3lnd2luL3RpbWUuaCBiL3dpbnN1cC9j eWd3aW4vaW5jbHVkZS9jeWd3aW4vdGltZS5oCmluZGV4IGExMDgwYTFjMC4uZDdmOWQzZjc1IDEw MDY0NAotLS0gYS93aW5zdXAvY3lnd2luL2luY2x1ZGUvY3lnd2luL3RpbWUuaAorKysgYi93aW5z dXAvY3lnd2luL2luY2x1ZGUvY3lnd2luL3RpbWUuaApAQCAtMTQsMTEgKzE0LDExIEBAIGV4dGVy biAiQyIKICNlbmRpZgogCiAvKiBOb3QgZGVmaW5lZCBpbiBtYWluIHRpbWUuaCAqLwotaW50IF9f Y2RlY2wgY2xvY2tfc2V0cmVzIChjbG9ja2lkX3QsIHN0cnVjdCB0aW1lc3BlYyAqKTsKK2ludCBj bG9ja19zZXRyZXMgKGNsb2NraWRfdCwgc3RydWN0IHRpbWVzcGVjICopOwogCiAvKiBHTlUgZXh0 ZW5zaW9ucy4gKi8KLXRpbWVfdCBfX2NkZWNsIHRpbWVsb2NhbCAoc3RydWN0IHRtICopOwotdGlt ZV90IF9fY2RlY2wgdGltZWdtIChzdHJ1Y3QgdG0gKik7Cit0aW1lX3QgdGltZWxvY2FsIChzdHJ1 Y3QgdG0gKik7Cit0aW1lX3QgdGltZWdtIChzdHJ1Y3QgdG0gKik7CiAKICNkZWZpbmUgVElNRVJf UkVMVElNRSAgMCAvKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIEhQL1VYLCBTb2xhcmlzLCBvdGhl cnM/ICovCiAKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vaW5jbHVkZS9zeXMvaW9jdGwuaCBi L3dpbnN1cC9jeWd3aW4vaW5jbHVkZS9zeXMvaW9jdGwuaAppbmRleCA0YzcxMjE0NzEuLjYyODll N2RhNyAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9pbmNsdWRlL3N5cy9pb2N0bC5oCisrKyBi L3dpbnN1cC9jeWd3aW4vaW5jbHVkZS9zeXMvaW9jdGwuaApAQCAtNjEsNyArNjEsNyBAQCBfX0JF R0lOX0RFQ0xTCiAjIGRlZmluZSBfSU9XUglfTElOVVhfSU9XUgogI2VuZGlmIC8qX19VU0VfTElO VVhfSU9DVExfREVGUyAqLwogCi1pbnQgX19jZGVjbCBpb2N0bCAoaW50IF9fZmQsIGludCBfX2Nt ZCwgLi4uKTsKK2ludCBpb2N0bCAoaW50IF9fZmQsIGludCBfX2NtZCwgLi4uKTsKIAogX19FTkRf REVDTFMKICNlbmRpZgpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9pbml0LmNjIGIvd2luc3Vw L2N5Z3dpbi9pbml0LmNjCmluZGV4IGQ4MjJhMzg1MS4uY2U2NDg0YWZmIDEwMDY0NAotLS0gYS93 aW5zdXAvY3lnd2luL2luaXQuY2MKKysrIGIvd2luc3VwL2N5Z3dpbi9pbml0LmNjCkBAIC0xOSw3 ICsxOSw3IEBAIHVuc2lnbmVkIHRocmVhZGZ1bmNfaXhbOF07CiBzdGF0aWMgYm9vbCBkbGxfZmlu aXNoZWRfbG9hZGluZzsKICNkZWZpbmUgT0xERlVOQ19PRkZTRVQgLTEKIAotc3RhdGljIHZvaWQg V0lOQVBJCitzdGF0aWMgdm9pZAogdGhyZWFkZnVuY19mZSAoVk9JRCAqYXJnKQogewogICBfY3ln dGxzOjpjYWxsICgoRFdPUkQgKCopICAodm9pZCAqLCB2b2lkICopKSBUbHNHZXRWYWx1ZSAoX215 X29sZGZ1bmMpLCBhcmcpOwpAQCAtNzAsNyArNzAsNyBAQCB2b2lkIGRsbF9jcnQwXzAgKCk7CiAg ICBuZWVkIHRoZSBhbGxvY2EnZCBzcGFjZSBpbiB0aGUgRExMX1BST0NFU1NfQVRUQUNIIGNhc2Ug YmVsb3cuLi4gKi8KIHZvaWQgKmFsbG9jYV9kdW1teTsKIAotZXh0ZXJuICJDIiBCT09MIFdJTkFQ SQorZXh0ZXJuICJDIiBCT09MCiBkbGxfZW50cnkgKEhBTkRMRSBoLCBEV09SRCByZWFzb24sIHZv aWQgKnN0YXRpY19sb2FkKQogewogICBCT09MIHRlc3Rfc3RhY2tfbWFya2VyOwpkaWZmIC0tZ2l0 IGEvd2luc3VwL2N5Z3dpbi9rZXJuZWwzMi5jYyBiL3dpbnN1cC9jeWd3aW4va2VybmVsMzIuY2MK aW5kZXggMDVjNWQ0ZDcwLi42MjQ4YWVmZDUgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4va2Vy bmVsMzIuY2MKKysrIGIvd2luc3VwL2N5Z3dpbi9rZXJuZWwzMi5jYwpAQCAtMjIsNyArMjIsNyBA QCBkZXRhaWxzLiAqLwogLyogSW1wbGVtZW50IENyZWF0ZUV2ZW50L09wZW5FdmVudCBzbyB0aGF0 IG5hbWVkIG9iamVjdHMgYXJlIGFsd2F5cyBjcmVhdGVkIGluCiAgICBDeWd3aW4gc2hhcmVkIG9i amVjdCBuYW1lc3BhY2UuICovCiAKLUhBTkRMRSBXSU5BUEkKK0hBTkRMRQogQ3JlYXRlRXZlbnRX IChMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBFdmVudEF0dHJpYnV0ZXMsIEJPT0wgYk1hbnVhbFJl c2V0LAogCSAgICAgIEJPT0wgYkluaXRpYWxTdGF0ZSwgTFBDV1NUUiBscE5hbWUpCiB7CkBAIC01 Nyw3ICs1Nyw3IEBAIENyZWF0ZUV2ZW50VyAoTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwRXZlbnRB dHRyaWJ1dGVzLCBCT09MIGJNYW51YWxSZXNldCwKICAgcmV0dXJuIGV2dDsKIH0KIAotSEFORExF IFdJTkFQSQorSEFORExFCiBDcmVhdGVFdmVudEEgKExQU0VDVVJJVFlfQVRUUklCVVRFUyBscEV2 ZW50QXR0cmlidXRlcywgQk9PTCBiTWFudWFsUmVzZXQsCiAJICAgICAgQk9PTCBiSW5pdGlhbFN0 YXRlLCBMUENTVFIgbHBOYW1lKQogewpAQCAtNzIsNyArNzIsNyBAQCBDcmVhdGVFdmVudEEgKExQ U0VDVVJJVFlfQVRUUklCVVRFUyBscEV2ZW50QXR0cmlidXRlcywgQk9PTCBiTWFudWFsUmVzZXQs CiAJCSAgICAgICBscE5hbWUgPyBuYW1lIDogTlVMTCk7CiB9CiAKLUhBTkRMRSBXSU5BUEkKK0hB TkRMRQogT3BlbkV2ZW50VyAoRFdPUkQgZHdEZXNpcmVkQWNjZXNzLCBCT09MIGJJbmhlcml0SGFu ZGxlLCBMUENXU1RSIGxwTmFtZSkKIHsKICAgSEFORExFIGV2dDsKQEAgLTEwMCw3ICsxMDAsNyBA QCBPcGVuRXZlbnRXIChEV09SRCBkd0Rlc2lyZWRBY2Nlc3MsIEJPT0wgYkluaGVyaXRIYW5kbGUs IExQQ1dTVFIgbHBOYW1lKQogICByZXR1cm4gZXZ0OwogfQogCi1IQU5ETEUgV0lOQVBJCitIQU5E TEUKIE9wZW5FdmVudEEgKERXT1JEIGR3RGVzaXJlZEFjY2VzcywgQk9PTCBiSW5oZXJpdEhhbmRs ZSwgTFBDU1RSIGxwTmFtZSkKIHsKICAgV0NIQVIgbmFtZVtNQVhfUEFUSF07CkBAIC0xMTYsNyAr MTE2LDcgQEAgT3BlbkV2ZW50QSAoRFdPUkQgZHdEZXNpcmVkQWNjZXNzLCBCT09MIGJJbmhlcml0 SGFuZGxlLCBMUENTVFIgbHBOYW1lKQogLyogSW1wbGVtZW50IENyZWF0ZU11dGV4L09wZW5NdXRl eCBzbyB0aGF0IG5hbWVkIG9iamVjdHMgYXJlIGFsd2F5cyBjcmVhdGVkIGluCiAgICBDeWd3aW4g c2hhcmVkIG9iamVjdCBuYW1lc3BhY2UuICovCiAKLUhBTkRMRSBXSU5BUEkKK0hBTkRMRQogQ3Jl YXRlTXV0ZXhXIChMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBNdXRleEF0dHJpYnV0ZXMsIEJPT0wg YkluaXRpYWxPd25lciwKIAkgICAgICBMUENXU1RSIGxwTmFtZSkKIHsKQEAgLTE0OCw3ICsxNDgs NyBAQCBDcmVhdGVNdXRleFcgKExQU0VDVVJJVFlfQVRUUklCVVRFUyBscE11dGV4QXR0cmlidXRl cywgQk9PTCBiSW5pdGlhbE93bmVyLAogICByZXR1cm4gbXR4OwogfQogCi1IQU5ETEUgV0lOQVBJ CitIQU5ETEUKIENyZWF0ZU11dGV4QSAoTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwTXV0ZXhBdHRy aWJ1dGVzLCBCT09MIGJJbml0aWFsT3duZXIsCiAJICAgICAgTFBDU1RSIGxwTmFtZSkKIHsKQEAg LTE2Miw3ICsxNjIsNyBAQCBDcmVhdGVNdXRleEEgKExQU0VDVVJJVFlfQVRUUklCVVRFUyBscE11 dGV4QXR0cmlidXRlcywgQk9PTCBiSW5pdGlhbE93bmVyLAogICByZXR1cm4gQ3JlYXRlTXV0ZXhX IChscE11dGV4QXR0cmlidXRlcywgYkluaXRpYWxPd25lciwgbHBOYW1lID8gbmFtZSA6IE5VTEwp OwogfQogCi1IQU5ETEUgV0lOQVBJCitIQU5ETEUKIE9wZW5NdXRleFcgKERXT1JEIGR3RGVzaXJl ZEFjY2VzcywgQk9PTCBiSW5oZXJpdEhhbmRsZSwgTFBDV1NUUiBscE5hbWUpCiB7CiAgIEhBTkRM RSBtdHg7CkBAIC0xOTAsNyArMTkwLDcgQEAgT3Blbk11dGV4VyAoRFdPUkQgZHdEZXNpcmVkQWNj ZXNzLCBCT09MIGJJbmhlcml0SGFuZGxlLCBMUENXU1RSIGxwTmFtZSkKICAgcmV0dXJuIG10eDsK IH0KIAotSEFORExFIFdJTkFQSQorSEFORExFCiBPcGVuTXV0ZXhBIChEV09SRCBkd0Rlc2lyZWRB Y2Nlc3MsIEJPT0wgYkluaGVyaXRIYW5kbGUsIExQQ1NUUiBscE5hbWUpCiB7CiAgIFdDSEFSIG5h bWVbTUFYX1BBVEhdOwpAQCAtMjA2LDcgKzIwNiw3IEBAIE9wZW5NdXRleEEgKERXT1JEIGR3RGVz aXJlZEFjY2VzcywgQk9PTCBiSW5oZXJpdEhhbmRsZSwgTFBDU1RSIGxwTmFtZSkKIC8qIEltcGxl bWVudCBDcmVhdGVTZW1hcGhvcmUvT3BlblNlbWFwaG9yZSBzbyB0aGF0IG5hbWVkIG9iamVjdHMg YXJlIGFsd2F5cwogICAgY3JlYXRlZCBpbiBDeWd3aW4gc2hhcmVkIG9iamVjdCBuYW1lc3BhY2Uu ICovCiAKLUhBTkRMRSBXSU5BUEkKK0hBTkRMRQogQ3JlYXRlU2VtYXBob3JlVyAoTFBTRUNVUklU WV9BVFRSSUJVVEVTIGxwU2VtYXBob3JlQXR0cmlidXRlcywKIAkJICBMT05HIGxJbml0aWFsQ291 bnQsIExPTkcgbE1heGltdW1Db3VudCwgTFBDV1NUUiBscE5hbWUpCiB7CkBAIC0yNDAsNyArMjQw LDcgQEAgQ3JlYXRlU2VtYXBob3JlVyAoTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwU2VtYXBob3Jl QXR0cmlidXRlcywKICAgcmV0dXJuIHNlbTsKIH0KIAotSEFORExFIFdJTkFQSQorSEFORExFCiBD cmVhdGVTZW1hcGhvcmVBIChMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZW1hcGhvcmVBdHRyaWJ1 dGVzLAogCQkgIExPTkcgbEluaXRpYWxDb3VudCwgTE9ORyBsTWF4aW11bUNvdW50LCBMUENTVFIg bHBOYW1lKQogewpAQCAtMjU1LDcgKzI1NSw3IEBAIENyZWF0ZVNlbWFwaG9yZUEgKExQU0VDVVJJ VFlfQVRUUklCVVRFUyBscFNlbWFwaG9yZUF0dHJpYnV0ZXMsCiAJCQkgICBscE5hbWUgPyBuYW1l IDogTlVMTCk7CiB9CiAKLUhBTkRMRSBXSU5BUEkKK0hBTkRMRQogT3BlblNlbWFwaG9yZVcgKERX T1JEIGR3RGVzaXJlZEFjY2VzcywgQk9PTCBiSW5oZXJpdEhhbmRsZSwgTFBDV1NUUiBscE5hbWUp CiB7CiAgIEhBTkRMRSBzZW07CkBAIC0yODMsNyArMjgzLDcgQEAgT3BlblNlbWFwaG9yZVcgKERX T1JEIGR3RGVzaXJlZEFjY2VzcywgQk9PTCBiSW5oZXJpdEhhbmRsZSwgTFBDV1NUUiBscE5hbWUp CiAgIHJldHVybiBzZW07CiB9CiAKLUhBTkRMRSBXSU5BUEkKK0hBTkRMRQogT3BlblNlbWFwaG9y ZUEgKERXT1JEIGR3RGVzaXJlZEFjY2VzcywgQk9PTCBiSW5oZXJpdEhhbmRsZSwgTFBDU1RSIGxw TmFtZSkKIHsKICAgV0NIQVIgbmFtZVtNQVhfUEFUSF07CkBAIC0yOTksNyArMjk5LDcgQEAgT3Bl blNlbWFwaG9yZUEgKERXT1JEIGR3RGVzaXJlZEFjY2VzcywgQk9PTCBiSW5oZXJpdEhhbmRsZSwg TFBDU1RSIGxwTmFtZSkKIC8qIEltcGxlbWVudCBDcmVhdGVGaWxlTWFwcGluZy9PcGVuRmlsZU1h cHBpbmcgc28gdGhhdCBuYW1lZCBvYmplY3RzIGFyZSBhbHdheXMKICAgIGNyZWF0ZWQgaW4gQ3ln d2luIHNoYXJlZCBvYmplY3QgbmFtZXNwYWNlLiAqLwogCi1IQU5ETEUgV0lOQVBJCitIQU5ETEUK IENyZWF0ZUZpbGVNYXBwaW5nVyAoSEFORExFIGhGaWxlLCBMUFNFQ1VSSVRZX0FUVFJJQlVURVMg bHBBdHRyaWJ1dGVzLAogCQkgICAgRFdPUkQgZmxQcm90ZWN0LCBEV09SRCBkd01heGltdW1TaXpl SGlnaCwKIAkJICAgIERXT1JEIGR3TWF4aW11bVNpemVMb3csIExQQ1dTVFIgbHBOYW1lKQpAQCAt MzU0LDcgKzM1NCw3IEBAIENyZWF0ZUZpbGVNYXBwaW5nVyAoSEFORExFIGhGaWxlLCBMUFNFQ1VS SVRZX0FUVFJJQlVURVMgbHBBdHRyaWJ1dGVzLAogICByZXR1cm4gc2VjdDsKIH0KIAotSEFORExF IFdJTkFQSQorSEFORExFCiBDcmVhdGVGaWxlTWFwcGluZ0EgKEhBTkRMRSBoRmlsZSwgTFBTRUNV UklUWV9BVFRSSUJVVEVTIGxwQXR0cmlidXRlcywKIAkJICAgIERXT1JEIGZsUHJvdGVjdCwgRFdP UkQgZHdNYXhpbXVtU2l6ZUhpZ2gsCiAJCSAgICBEV09SRCBkd01heGltdW1TaXplTG93LCBMUENT VFIgbHBOYW1lKQpAQCAtMzcwLDcgKzM3MCw3IEBAIENyZWF0ZUZpbGVNYXBwaW5nQSAoSEFORExF IGhGaWxlLCBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBBdHRyaWJ1dGVzLAogCQkJICAgICBkd01h eGltdW1TaXplTG93LCBscE5hbWUgPyBuYW1lIDogTlVMTCk7CiB9CiAKLUhBTkRMRSBXSU5BUEkK K0hBTkRMRQogT3BlbkZpbGVNYXBwaW5nVyAoRFdPUkQgZHdEZXNpcmVkQWNjZXNzLCBCT09MIGJJ bmhlcml0SGFuZGxlLCBMUENXU1RSIGxwTmFtZSkKIHsKICAgSEFORExFIHNlY3Q7CkBAIC0zOTgs NyArMzk4LDcgQEAgT3BlbkZpbGVNYXBwaW5nVyAoRFdPUkQgZHdEZXNpcmVkQWNjZXNzLCBCT09M IGJJbmhlcml0SGFuZGxlLCBMUENXU1RSIGxwTmFtZSkKICAgcmV0dXJuIHNlY3Q7CiB9CiAKLUhB TkRMRSBXSU5BUEkKK0hBTkRMRQogT3BlbkZpbGVNYXBwaW5nQSAoRFdPUkQgZHdEZXNpcmVkQWNj ZXNzLCBCT09MIGJJbmhlcml0SGFuZGxlLCBMUENTVFIgbHBOYW1lKQogewogICBXQ0hBUiBuYW1l W01BWF9QQVRIXTsKQEAgLTQzMyw3ICs0MzMsNyBAQCB1Y21kICgpCiAvKiBDeWd3aW4gcmVwbGFj ZW1lbnQgZm9yIEdldENvbW1hbmRMaW5lVy4gIFJldHVybnMgYSBjb25jYXRlbmF0ZWQgd2lkZSBz dHJpbmcKICAgIHJlcHJlc2VudGluZyB0aGUgYXJndiBsaXN0LCBjb25zdHJ1Y3RlZCB1c2luZyBy b3VnaGx5IHRoZSBzYW1lIG1lY2hhbmlzbSBhcwogICAgY2hpbGRfaW5mb19zcGF3bjo6d29ya2Vy ICovCi1leHRlcm4gIkMiIExQV1NUUiBXSU5BUEkKK2V4dGVybiAiQyIgTFBXU1RSCiBjeWd3aW5f R2V0Q29tbWFuZExpbmVXICh2b2lkKQogewogICByZXR1cm4gdWNtZCAoKS0+QnVmZmVyOwpAQCAt NDQyLDcgKzQ0Miw3IEBAIGN5Z3dpbl9HZXRDb21tYW5kTGluZVcgKHZvaWQpCiAvKiBDeWd3aW4g cmVwbGFjZW1lbnQgZm9yIEdldENvbW1hbmRMaW5lQS4gIFJldHVybnMgYSBjb25jYXRlbmF0ZWQg c3RyaW5nCiAgICByZXByZXNlbnRpbmcgdGhlIGFyZ3YgbGlzdCwgY29uc3RydWN0ZWQgdXNpbmcg cm91Z2hseSB0aGUgc2FtZSBtZWNoYW5pc20KICAgIGFzIGNoaWxkX2luZm9fc3Bhd246Ondvcmtl ciAqLwotZXh0ZXJuICJDIiBMUFNUUiBXSU5BUEkKK2V4dGVybiAiQyIgTFBTVFIKIGN5Z3dpbl9H ZXRDb21tYW5kTGluZUEgKHZvaWQpCiB7CiAgIHN0YXRpYyBBTlNJX1NUUklORyBjbWQ7CmRpZmYg LS1naXQgYS93aW5zdXAvY3lnd2luL2xkYXAuY2MgYi93aW5zdXAvY3lnd2luL2xkYXAuY2MKaW5k ZXggM2M5ZmQxM2ExLi5lZDJmYTNmN2YgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vbGRhcC5j YworKysgYi93aW5zdXAvY3lnd2luL2xkYXAuY2MKQEAgLTIwOCw3ICsyMDgsNyBAQCBjeWdfbGRh cDo6Y29ubmVjdF9ub25fc3NsIChQQ1dTVFIgZG9tYWluKQogICByZXR1cm4gcmV0OwogfQogCi1z dGF0aWMgRFdPUkQgV0lOQVBJCitzdGF0aWMgRFdPUkQKIGxkYXBfaW5pdF90aHIgKExQVk9JRCBw YXJhbSkKIHsKICAgY3lnX2xkYXBfaW5pdCAqY2wgPSAoY3lnX2xkYXBfaW5pdCAqKSBwYXJhbTsK QEAgLTI1MSw3ICsyNTEsNyBAQCBjeWdfbGRhcDo6c2VhcmNoX3MgKFBXQ0hBUiBiYXNlLCBVTE9O RyBzY29wZSwgUFdDSEFSIGZpbHRlciwgUFdDSEFSICphdHRycykKICAgcmV0dXJuIHJldDsKIH0K IAotc3RhdGljIERXT1JEIFdJTkFQSQorc3RhdGljIERXT1JECiBsZGFwX3NlYXJjaF90aHIgKExQ Vk9JRCBwYXJhbSkKIHsKICAgY3lnX2xkYXBfc2VhcmNoICpjbCA9IChjeWdfbGRhcF9zZWFyY2gg KikgcGFyYW07CkBAIC0yOTMsNyArMjkzLDcgQEAgY3lnX2xkYXA6Om5leHRfcGFnZV9zICgpCiAg IHJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBEV09SRCBXSU5BUEkKK3N0YXRpYyBEV09SRAogbGRh cF9uZXh0X3BhZ2VfdGhyIChMUFZPSUQgcGFyYW0pCiB7CiAgIGN5Z19sZGFwX25leHRfcGFnZSAq Y2wgPSAoY3lnX2xkYXBfbmV4dF9wYWdlICopIHBhcmFtOwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5 Z3dpbi9saWIvX2N5Z3dpbl9jcnQwX2NvbW1vbi5jYyBiL3dpbnN1cC9jeWd3aW4vbGliL19jeWd3 aW5fY3J0MF9jb21tb24uY2MKaW5kZXggMzY1MDE1MDExLi5kMzU2YTUwZmIgMTAwNjQ0Ci0tLSBh L3dpbnN1cC9jeWd3aW4vbGliL19jeWd3aW5fY3J0MF9jb21tb24uY2MKKysrIGIvd2luc3VwL2N5 Z3dpbi9saWIvX2N5Z3dpbl9jcnQwX2NvbW1vbi5jYwpAQCAtNzIsNyArNzIsNyBAQCBzdHJ1Y3Qg cGVyX3Byb2Nlc3NfY3h4X21hbGxvYyBfX2N5Z3dpbl9jeHhfbWFsbG9jID0KIC8qIFNldCB1cCBw b2ludGVycyB0byB2YXJpb3VzIHBpZWNlcyBzbyB0aGUgZGxsIGNhbiB0aGVuIHVzZSB0aGVtLAog ICAgYW5kIHRoZW4ganVtcCB0byB0aGUgZGxsLiAgKi8KIAotaW50IF9fc3RkY2FsbAoraW50CiBf Y3lnd2luX2NydDBfY29tbW9uIChNYWluRnVuYyBmLCBwZXJfcHJvY2VzcyAqdSkKIHsKICAgcGVy X3Byb2Nlc3MgKm5ld3UgPSAocGVyX3Byb2Nlc3MgKikgY3lnd2luX2ludGVybmFsIChDV19VU0VS X0RBVEEpOwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9saWIvY3J0MC5oIGIvd2luc3VwL2N5 Z3dpbi9saWIvY3J0MC5oCmluZGV4IGM1NTFkZTc4Zi4uZTU5OWI0NDkzIDEwMDY0NAotLS0gYS93 aW5zdXAvY3lnd2luL2xpYi9jcnQwLmgKKysrIGIvd2luc3VwL2N5Z3dpbi9saWIvY3J0MC5oCkBA IC0xMyw3ICsxMyw3IEBAIGV4dGVybiAiQyIgewogI2luY2x1ZGUgIndpbmxlYW4uaCIKIHN0cnVj dCBwZXJfcHJvY2VzczsKIHR5cGVkZWYgaW50ICgqTWFpbkZ1bmMpIChpbnQgYXJnYywgY2hhciAq YXJndltdLCBjaGFyICoqZW52KTsKLWludCBfX3N0ZGNhbGwgX2N5Z3dpbl9jcnQwX2NvbW1vbiAo TWFpbkZ1bmMsIHN0cnVjdCBwZXJfcHJvY2VzcyAqKTsKK2ludCBfY3lnd2luX2NydDBfY29tbW9u IChNYWluRnVuYywgc3RydWN0IHBlcl9wcm9jZXNzICopOwogUFZPSUQgZGxsX2RsbGNydDAgKEhN T0RVTEUsIHN0cnVjdCBwZXJfcHJvY2VzcyAqKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYg LS1naXQgYS93aW5zdXAvY3lnd2luL21pc2NmdW5jcy5jYyBiL3dpbnN1cC9jeWd3aW4vbWlzY2Z1 bmNzLmNjCmluZGV4IGQ5Y2FmOWI3My4uZWY3MjY2MmJhIDEwMDY0NAotLS0gYS93aW5zdXAvY3ln d2luL21pc2NmdW5jcy5jYworKysgYi93aW5zdXAvY3lnd2luL21pc2NmdW5jcy5jYwpAQCAtMTk5 LDcgKzE5OSw3IEBAIG5pY2VfdG9fd2lucHJpbyAoaW50ICZuaWNlKQogCiAvKiBNaW5pbWFsIG92 ZXJsYXBwZWQgcGlwZSBJL08gaW1wbGVtZW50YXRpb24gZm9yIHNpZ25hbCBhbmQgY29tbXVuZSBz dHVmZi4gKi8KIAotQk9PTCBXSU5BUEkKK0JPT0wKIENyZWF0ZVBpcGVPdmVybGFwcGVkIChQSEFO RExFIGhyLCBQSEFORExFIGh3LCBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgc2EpCiB7CiAgIGludCBy ZXQgPSBmaGFuZGxlcl9waXBlOjpjcmVhdGUgKHNhLCBociwgaHcsIDAsIE5VTEwsCkBAIC0yMDks NyArMjA5LDcgQEAgQ3JlYXRlUGlwZU92ZXJsYXBwZWQgKFBIQU5ETEUgaHIsIFBIQU5ETEUgaHcs IExQU0VDVVJJVFlfQVRUUklCVVRFUyBzYSkKICAgcmV0dXJuIHJldCA9PSAwOwogfQogCi1CT09M IFdJTkFQSQorQk9PTAogUmVhZFBpcGVPdmVybGFwcGVkIChIQU5ETEUgaCwgUFZPSUQgYnVmLCBE V09SRCBsZW4sIExQRFdPUkQgcmV0X2xlbiwKIAkJICAgIERXT1JEIHRpbWVvdXQpCiB7CkBAIC0y MjksNyArMjI5LDcgQEAgUmVhZFBpcGVPdmVybGFwcGVkIChIQU5ETEUgaCwgUFZPSUQgYnVmLCBE V09SRCBsZW4sIExQRFdPUkQgcmV0X2xlbiwKICAgcmV0dXJuIHJldDsKIH0KIAotQk9PTCBXSU5B UEkKK0JPT0wKIFdyaXRlUGlwZU92ZXJsYXBwZWQgKEhBTkRMRSBoLCBMUENWT0lEIGJ1ZiwgRFdP UkQgbGVuLCBMUERXT1JEIHJldF9sZW4sCiAJCSAgICAgRFdPUkQgdGltZW91dCkKIHsKQEAgLTM3 Myw3ICszNzMsNyBAQCBzdHJ1Y3QgcHRocmVhZF93cmFwcGVyX2FyZwogICBVTE9ORyBndWFyZHNp emU7CiB9OwogCi1EV09SRCBXSU5BUEkKK0RXT1JECiBwdGhyZWFkX3dyYXBwZXIgKFBWT0lEIGFy ZykKIHsKICAgLyogSnVzdCBwbGFpbiBwYXJhbm9pYS4gKi8KQEAgLTU5NCw3ICs1OTQsNyBAQCBj cmVhdGVfbmV3X21haW5fdGhyZWFkX3N0YWNrIChQVk9JRCAmYWxsb2NhdGlvbmJhc2UpCiAgIHJl dHVybiAoKFBCWVRFKSBhbGxvY2F0aW9uYmFzZSArIHN0YWNrc2l6ZSAtIDE2KTsKIH0KIAotSEFO RExFIFdJTkFQSQorSEFORExFCiBDeWd3aW5DcmVhdGVUaHJlYWQgKExQVEhSRUFEX1NUQVJUX1JP VVRJTkUgdGhyZWFkX2Z1bmMsIFBWT0lEIHRocmVhZF9hcmcsCiAJCSAgICBQVk9JRCBzdGFja2Fk ZHIsIFVMT05HIHN0YWNrc2l6ZSwgVUxPTkcgZ3VhcmRzaXplLAogCQkgICAgRFdPUkQgY3JlYXRp b25fZmxhZ3MsIExQRFdPUkQgdGhyZWFkX2lkKQpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9t aXNjZnVuY3MuaCBiL3dpbnN1cC9jeWd3aW4vbWlzY2Z1bmNzLmgKaW5kZXggNTY1MDI5NTYxLi4z YWE3YWQxZTQgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vbWlzY2Z1bmNzLmgKKysrIGIvd2lu c3VwL2N5Z3dpbi9taXNjZnVuY3MuaApAQCAtNDksMTEgKzQ5LDExIEBAIERXT1JEIG5pY2VfdG9f d2lucHJpbyAoaW50ICYpOwogCiBib29sIGNyZWF0ZV9waXBlIChQSEFORExFLCBQSEFORExFLCBM UFNFQ1VSSVRZX0FUVFJJQlVURVMsIERXT1JEKTsKIAotQk9PTCBXSU5BUEkgQ3JlYXRlUGlwZU92 ZXJsYXBwZWQgKFBIQU5ETEUgcmVhZF9oYW5kbGUsIFBIQU5ETEUgd3JpdGVfaGFuZGxlLAorQk9P TCBDcmVhdGVQaXBlT3ZlcmxhcHBlZCAoUEhBTkRMRSByZWFkX2hhbmRsZSwgUEhBTkRMRSB3cml0 ZV9oYW5kbGUsCiAJCQkJICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgc2EpOwotQk9PTCBXSU5BUEkg UmVhZFBpcGVPdmVybGFwcGVkIChIQU5ETEUgaCwgUFZPSUQgYnVmLCBEV09SRCBsZW4sCitCT09M IFJlYWRQaXBlT3ZlcmxhcHBlZCAoSEFORExFIGgsIFBWT0lEIGJ1ZiwgRFdPUkQgbGVuLAogCQkJ CUxQRFdPUkQgcmV0X2xlbiwgRFdPUkQgdGltZW91dCk7Ci1CT09MIFdJTkFQSSBXcml0ZVBpcGVP dmVybGFwcGVkIChIQU5ETEUgaCwgTFBDVk9JRCBidWYsIERXT1JEIGxlbiwKK0JPT0wgV3JpdGVQ aXBlT3ZlcmxhcHBlZCAoSEFORExFIGgsIExQQ1ZPSUQgYnVmLCBEV09SRCBsZW4sCiAJCQkJIExQ RFdPUkQgcmV0X2xlbiwgRFdPUkQgdGltZW91dCk7CiAKIC8qIGNsYXNzIGZvciBwZXItbGluZSBy ZWFkaW5nIHVzaW5nIG5hdGl2ZSBmdW5jdGlvbnMuICBUaGUgY2FsbGVyIHByb3ZpZGVzCkBAIC0x MTAsOCArMTEwLDggQEAgc3NpemVfdCBjaGVja19pb3ZlYyAoY29uc3Qgc3RydWN0IGlvdmVjICos IGludCwgYm9vbCk7CiAKIGV4dGVybiBQVk9JRCBjcmVhdGVfbmV3X21haW5fdGhyZWFkX3N0YWNr IChQVk9JRCAmYWxsb2NhdGlvbmJhc2UpOwogCi1leHRlcm4gIkMiIERXT1JEIFdJTkFQSSBwdGhy ZWFkX3dyYXBwZXIgKFBWT0lEIGFyZyk7Ci1leHRlcm4gIkMiIEhBTkRMRSBXSU5BUEkgQ3lnd2lu Q3JlYXRlVGhyZWFkIChMUFRIUkVBRF9TVEFSVF9ST1VUSU5FIHRocmVhZF9mdW5jLAorZXh0ZXJu ICJDIiBEV09SRCBwdGhyZWFkX3dyYXBwZXIgKFBWT0lEIGFyZyk7CitleHRlcm4gIkMiIEhBTkRM RSBDeWd3aW5DcmVhdGVUaHJlYWQgKExQVEhSRUFEX1NUQVJUX1JPVVRJTkUgdGhyZWFkX2Z1bmMs CiAJCQkJCSAgICAgUFZPSUQgdGhyZWFkX2FyZywgUFZPSUQgc3RhY2thZGRyLAogCQkJCQkgICAg IFVMT05HIHN0YWNrc2l6ZSwgVUxPTkcgZ3VhcmRzaXplLAogCQkJCQkgICAgIERXT1JEIGNyZWF0 aW9uX2ZsYWdzLApkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9tbWFwLmNjIGIvd2luc3VwL2N5 Z3dpbi9tbWFwLmNjCmluZGV4IDk0OGVlZWMxZi4uMGM3MGQ2NmYwIDEwMDY0NAotLS0gYS93aW5z dXAvY3lnd2luL21tYXAuY2MKKysrIGIvd2luc3VwL2N5Z3dpbi9tbWFwLmNjCkBAIC0xNzc0LDcg KzE3NzQsNyBAQCBmaGFuZGxlcl9kaXNrX2ZpbGU6OmZpeHVwX21tYXBfYWZ0ZXJfZm9yayAoSEFO RExFIGgsIGludCBwcm90LCBpbnQgZmxhZ3MsCiAgICBub25lIG9mIHRoZSBtYXBwZWQgYXJlYXMg YXJlIGluIG91ciBhZGRyZXNzIHNwYWNlLiBXZSBuZWVkIHRvIGl0ZXJhdGUKICAgIHRocm91Z2gg dGhlIG1hcCwgZG9pbmcgdGhlIE1hcFZpZXdPZkZpbGUgY2FsbHMuICAqLwogCi1pbnQgX19zdGRj YWxsCitpbnQKIGZpeHVwX21tYXBzX2FmdGVyX2ZvcmsgKEhBTkRMRSBwYXJlbnQpCiB7CiAgIC8q IEl0ZXJhdGUgb3ZlciBtYXBzICovCmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL21vdW50LmNj IGIvd2luc3VwL2N5Z3dpbi9tb3VudC5jYwppbmRleCA1ZWIwMjg5ODAuLjM4OWY2MmZhZCAxMDA2 NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9tb3VudC5jYworKysgYi93aW5zdXAvY3lnd2luL21vdW50 LmNjCkBAIC00Nyw3ICs0Nyw3IEBAIGludCBOT19DT1BZIG1vdW50X2luZm86OnJvb3RfaWR4ID0g LTE7CiAgICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCB0byB0ZXN0IGZvciB2YWxpZCBpbnB1 dCBzdHJpbmdzLgogICAgVGhlIGxhdGVyIG5vcm1hbGl6YXRpb24gZHJvcHMgdGhlIG5hdGl2ZSBw cmVmaXhlcy4gKi8KIAotc3RhdGljIGlubGluZSBib29sIF9fc3RkY2FsbAorc3RhdGljIGlubGlu ZSBib29sCiBpc19uYXRpdmVfcGF0aCAoY29uc3QgY2hhciAqcGF0aCkKIHsKICAgcmV0dXJuIGlz ZGlyc2VwIChwYXRoWzBdKQpAQCAtNTcsNyArNTcsNyBAQCBpc19uYXRpdmVfcGF0aCAoY29uc3Qg Y2hhciAqcGF0aCkKIAkgJiYgaXNhbHBoYSAocGF0aFs0XSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg Ym9vbCBfX3N0ZGNhbGwKK3N0YXRpYyBpbmxpbmUgYm9vbAogaXNfdW5jX3NoYXJlIChjb25zdCBj aGFyICpwYXRoKQogewogICBjb25zdCBjaGFyICpwOwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dp bi9udGRsbC5oIGIvd2luc3VwL2N5Z3dpbi9udGRsbC5oCmluZGV4IDVjYjdjYzYzNi4uZTA1OGQw YTc0IDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL250ZGxsLmgKKysrIGIvd2luc3VwL2N5Z3dp bi9udGRsbC5oCkBAIC0xNTI4LDcgKzE1MjgsNyBAQCBleHRlcm4gIkMiCiAJCQkJICAgUFZPSUQs IFVMT05HLCBQVUxPTkcpOwogICBOVFNUQVRVUyBOVEFQSSBOdFF1ZXJ5U3lzdGVtSW5mb3JtYXRp b24gKFNZU1RFTV9JTkZPUk1BVElPTl9DTEFTUywKIAkJCQkJICAgUFZPSUQsIFVMT05HLCBQVUxP TkcpOwotICBOVFNUQVRVUyBXSU5BUEkgTnRRdWVyeVN5c3RlbVRpbWUgKFBMQVJHRV9JTlRFR0VS KTsKKyAgTlRTVEFUVVMgTnRRdWVyeVN5c3RlbVRpbWUgKFBMQVJHRV9JTlRFR0VSKTsKICAgTlRT VEFUVVMgTlRBUEkgTnRRdWVyeVNlY3VyaXR5T2JqZWN0IChIQU5ETEUsIFNFQ1VSSVRZX0lORk9S TUFUSU9OLAogCQkJCQlQU0VDVVJJVFlfREVTQ1JJUFRPUiwgVUxPTkcsIFBVTE9ORyk7CiAgIE5U U1RBVFVTIE5UQVBJIE50UXVlcnlTeW1ib2xpY0xpbmtPYmplY3QgKEhBTkRMRSwgUFVOSUNPREVf U1RSSU5HLCBQVUxPTkcpOwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9udGVhLmNjIGIvd2lu c3VwL2N5Z3dpbi9udGVhLmNjCmluZGV4IDUwOTRjZjMyNC4uYTQwMGZjYjJiIDEwMDY0NAotLS0g YS93aW5zdXAvY3lnd2luL250ZWEuY2MKKysrIGIvd2luc3VwL2N5Z3dpbi9udGVhLmNjCkBAIC0z NjQsNyArMzY0LDcgQEAgd3JpdGVfZWEgKEhBTkRMRSBoZGwsIHBhdGhfY29udiAmcGMsIGNvbnN0 IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlLAogICByZXR1cm4gcmV0OwogfQogCi1zdGF0 aWMgc3NpemVfdCBfX3N0ZGNhbGwKK3N0YXRpYyBzc2l6ZV90CiBnZXR4YXR0cl93b3JrZXIgKHBh dGhfY29udiAmcGMsIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKnZhbHVlLCBzaXplX3Qgc2l6ZSkK IHsKICAgaW50IHJlcyA9IC0xOwpAQCAtNDY4LDcgKzQ2OCw3IEBAIGZsaXN0eGF0dHIgKGludCBm ZCwgY2hhciAqbGlzdCwgc2l6ZV90IHNpemUpCiAgIHJldHVybiByZXM7CiB9CiAKLXN0YXRpYyBp bnQgX19zdGRjYWxsCitzdGF0aWMgaW50CiBzZXR4YXR0cl93b3JrZXIgKHBhdGhfY29udiAmcGMs IGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHZvaWQgKnZhbHVlLAogCQkgc2l6ZV90IHNpemUsIGlu dCBmbGFncykKIHsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vbnRzZWNhcGkuaCBiL3dpbnN1 cC9jeWd3aW4vbnRzZWNhcGkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGIwYTdl NzdmLi4wMDAwMDAwMDAKLS0tIGEvd2luc3VwL2N5Z3dpbi9udHNlY2FwaS5oCisrKyAvZGV2L251 bGwKQEAgLTEsMjYgKzAsMCBAQAotI2lmbmRlZiBfQ1lHV0lOX05UU0VDQVBJX0gKLSNkZWZpbmUg X0NZR1dJTl9OVFNFQ0FQSV9ICi0KLS8qIFRoZXJlJ3MgYSBidWcgaW4gbnRzZWNhcGkuaCAoTWlu Z3cgYXMgd2VsbCBhcyBNU0ZUKS4gIFN5c3RlbUZ1bmN0aW9uMDM2Ci0gICBpcywgaW4gZmFjdCwg YSBXSU5BUEkgZnVuY3Rpb24sIGJ1dCBpdCdzIG5vdCBkZWZpbmVkIGFzIHN1Y2guICBUaGVyZWZv cmUKLSAgIHdlIGhhdmUgdG8gZG8gaXQgY29ycmVjdGx5IGhlcmUgaW4gdGhlIG50c2VjYXBpLmgg d3JhcHBlci4gKi8KLQotI2RlZmluZSBTeXN0ZW1GdW5jdGlvbjAzNglfX25vbmV4aXN0YW50X1N5 c3RlbUZ1bmN0aW9uMDM2X18KLQotI2luY2x1ZGVfbmV4dCA8bnRzZWNhcGkuaD4KLQotI3VuZGVm IFN5c3RlbUZ1bmN0aW9uMDM2Ci0KLSNkZWZpbmUgUnRsR2VuUmFuZG9tIFN5c3RlbUZ1bmN0aW9u MDM2Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYgLyogX19jcGx1 c3BsdXMgKi8KLQotQk9PTEVBTiBXSU5BUEkgUnRsR2VuUmFuZG9tIChQVk9JRCwgVUxPTkcpOwot Ci0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwotCi0jZW5k aWYgLyogX0NZR1dJTl9OVFNFQ0FQSV9IICovCmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL3Bp bmZvLmNjIGIvd2luc3VwL2N5Z3dpbi9waW5mby5jYwppbmRleCBhNTRkYWM4OWIuLjJmYzkwNzJj ZSAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9waW5mby5jYworKysgYi93aW5zdXAvY3lnd2lu L3BpbmZvLmNjCkBAIC04Miw3ICs4Miw3IEBAIHBpbmZvOjp0aGlzcHJvYyAoSEFORExFIGgpCiAK IC8qIEluaXRpYWxpemUgdGhlIHByb2Nlc3MgdGFibGUgZW50cnkgZm9yIHRoZSBjdXJyZW50IHRh c2suCiAgICBUaGlzIGlzIG5vdCBjYWxsZWQgZm9yIGZvcmtlZCB0YXNrcywgb25seSBleGVjZWQg b25lcy4gICovCi12b2lkIF9fc3RkY2FsbAordm9pZAogcGluZm9faW5pdCAoY2hhciAqKmVudnAs IGludCBlbnZjKQogewogICBpZiAoZW52cCkKQEAgLTU5Nyw3ICs1OTcsNyBAQCBfcGluZm86OmFs aXZlICgpCiAgIHJldHVybiAhIWg7CiB9CiAKLURXT1JEIFdJTkFQSQorRFdPUkQKIGNvbW11bmVf cHJvY2VzcyAodm9pZCAqYXJnKQogewogICBzaWdpbmZvX3QmIHNpID0gKigoc2lnaW5mb190ICop IGFyZyk7CkBAIC0xMjM0LDcgKzEyMzQsNyBAQCBfcGluZm86OmVudmlyb24gKHNpemVfdCYgbikK ICAgIGlzIHJlY2VpdmVkIG9uIHRoZSBwaXBlLCBpdCBpcyBhc3N1bWVkIHRoYXQgdGhlIGN5Z3dp biBwaWQgaGFzIGV4aXRlZC4KICAgIE90aGVyd2lzZSwgdmFyaW91cyAic2lnbmFscyIgY2FuIGJl IHNlbnQgdG8gdGhlIHBhcmVudCB0byBpbmZvcm0gdGhlCiAgICBwYXJlbnQgdG8gcGVyZm9ybSBh IGNlcnRhaW4gYWN0aW9uLiAqLwotc3RhdGljIERXT1JEIFdJTkFQSQorc3RhdGljIERXT1JECiBw cm9jX3dhaXRlciAodm9pZCAqYXJnKQogewogICBwaW5mbyB2Y2hpbGQgPSAqKHBpbmZvICopIGFy ZzsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vcGluZm8uaCBiL3dpbnN1cC9jeWd3aW4vcGlu Zm8uaAppbmRleCA4NmJhNjRiYjYuLjQ2M2YwZTg1MSAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dp bi9waW5mby5oCisrKyBiL3dpbnN1cC9jeWd3aW4vcGluZm8uaApAQCAtMTMxLDcgKzEzMSw3IEBA IHB1YmxpYzoKICAgZnJpZW5kIGNsYXNzIHBpbmZvX21pbmltYWw7CiB9OwogCi1EV09SRCBXSU5B UEkgY29tbXVuZV9wcm9jZXNzICh2b2lkICopOworRFdPUkQgY29tbXVuZV9wcm9jZXNzICh2b2lk ICopOwogCiBlbnVtIHBhcmVudF9hbGVydGVyCiB7CkBAIC0yNTQsNyArMjU0LDcgQEAgcHVibGlj OgogcGlkX3QgY3JlYXRlX2N5Z3dpbl9waWQgKCk7CiBwaWRfdCBjeWd3aW5fcGlkIChEV09SRCk7 CiAKLXZvaWQgX19zdGRjYWxsIHBpbmZvX2luaXQgKGNoYXIgKiosIGludCk7Cit2b2lkIHBpbmZv X2luaXQgKGNoYXIgKiosIGludCk7CiBleHRlcm4gcGluZm8gbXlzZWxmOwogCiAvKiBIZWxwZXIg Y2xhc3MgdG8gYWxsb3cgY29udmVuaWVudCBzZXR0aW5nIGFuZCB1bnNldHRpbmcgYSBwcm9jZXNz X3N0YXRlCkBAIC0yOTEsOSArMjkxLDkgQEAgcHVibGljOgogI2RlZmluZSBteWN0dHkoKSBteXNl bGYtPl9fY3R0eSAoKQogCiAvKiBGb3IgbW1hcHMgYWNyb3NzIGZvcmsoKS4gKi8KLWludCBfX3N0 ZGNhbGwgZml4dXBfbW1hcHNfYWZ0ZXJfZm9yayAoSEFORExFIHBhcmVudCk7CitpbnQgZml4dXBf bW1hcHNfYWZ0ZXJfZm9yayAoSEFORExFIHBhcmVudCk7CiAvKiBmb3Igc2htIGFyZWFzIGFjcm9z cyBmb3JrICgpLiAqLwotaW50IF9fc3RkY2FsbCBmaXh1cF9zaG1zX2FmdGVyX2ZvcmsgKCk7Citp bnQgZml4dXBfc2htc19hZnRlcl9mb3JrICgpOwogCi12b2lkIF9fc3RkY2FsbCBmaWxsX3J1c2Fn ZSAoc3RydWN0IHJ1c2FnZSAqLCBIQU5ETEUpOwotdm9pZCBfX3N0ZGNhbGwgYWRkX3J1c2FnZSAo c3RydWN0IHJ1c2FnZSAqLCBzdHJ1Y3QgcnVzYWdlICopOwordm9pZCBmaWxsX3J1c2FnZSAoc3Ry dWN0IHJ1c2FnZSAqLCBIQU5ETEUpOwordm9pZCBhZGRfcnVzYWdlIChzdHJ1Y3QgcnVzYWdlICos IHN0cnVjdCBydXNhZ2UgKik7CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL3Bvc2l4X3RpbWVy LmNjIGIvd2luc3VwL2N5Z3dpbi9wb3NpeF90aW1lci5jYwppbmRleCA3NWNkNGZhNjAuLjY5Yzc1 OGFhNyAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9wb3NpeF90aW1lci5jYworKysgYi93aW5z dXAvY3lnd2luL3Bvc2l4X3RpbWVyLmNjCkBAIC0yMjgsNyArMjI4LDcgQEAgb3V0OgogICByZXR1 cm4gMDsKIH0KIAotc3RhdGljIERXT1JEIFdJTkFQSQorc3RhdGljIERXT1JECiB0aW1lcl90aHJl YWQgKFZPSUQgKngpCiB7CiAgIHRpbWVyX3RyYWNrZXIgKnR0ID0gKCh0aW1lcl90cmFja2VyICop IHgpOwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9yZXNvdXJjZS5jYyBiL3dpbnN1cC9jeWd3 aW4vcmVzb3VyY2UuY2MKaW5kZXggMjFlODViZDE4Li5hYWZjMmIwYjEgMTAwNjQ0Ci0tLSBhL3dp bnN1cC9jeWd3aW4vcmVzb3VyY2UuY2MKKysrIGIvd2luc3VwL2N5Z3dpbi9yZXNvdXJjZS5jYwpA QCAtMzcsNyArMzcsNyBAQCBhZGRfdGltZXZhbCAoc3RydWN0IHRpbWV2YWwgKnR2MSwgc3RydWN0 IHRpbWV2YWwgKnR2MikKIH0KIAogLyogYWRkIHJ1c2FnZSB2YWx1ZXMgb2YgcjIgdG8gcjEgKi8K LXZvaWQgX19zdGRjYWxsCit2b2lkCiBhZGRfcnVzYWdlIChzdHJ1Y3QgcnVzYWdlICpyMSwgc3Ry dWN0IHJ1c2FnZSAqcjIpCiB7CiAgIGFkZF90aW1ldmFsICgmcjEtPnJ1X3V0aW1lLCAmcjItPnJ1 X3V0aW1lKTsKQEAgLTU5LDcgKzU5LDcgQEAgYWRkX3J1c2FnZSAoc3RydWN0IHJ1c2FnZSAqcjEs IHN0cnVjdCBydXNhZ2UgKnIyKQogfQogCiAvKiBGSVhNRTogd2hhdCBhYm91dCBvdGhlciBmaWVs ZHM/ICovCi12b2lkIF9fc3RkY2FsbAordm9pZAogZmlsbF9ydXNhZ2UgKHN0cnVjdCBydXNhZ2Ug KnIsIEhBTkRMRSBoKQogewogICBLRVJORUxfVVNFUl9USU1FUyBrdXQ7CmRpZmYgLS1naXQgYS93 aW5zdXAvY3lnd2luL3NlbGVjdC5jYyBiL3dpbnN1cC9jeWd3aW4vc2VsZWN0LmNjCmluZGV4IDBm YTYwYmNkYi4uNzZhYjkxYmJiIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL3NlbGVjdC5jYwor KysgYi93aW5zdXAvY3lnd2luL3NlbGVjdC5jYwpAQCAtNzcwLDcgKzc3MCw3IEBAIG91dDoKIAog c3RhdGljIGludCBzdGFydF90aHJlYWRfcGlwZSAoc2VsZWN0X3JlY29yZCAqbWUsIHNlbGVjdF9z dHVmZiAqc3R1ZmYpOwogCi1zdGF0aWMgRFdPUkQgV0lOQVBJCitzdGF0aWMgRFdPUkQKIHRocmVh ZF9waXBlICh2b2lkICphcmcpCiB7CiAgIHNlbGVjdF9waXBlX2luZm8gKnBpID0gKHNlbGVjdF9w aXBlX2luZm8gKikgYXJnOwpAQCAtOTczLDcgKzk3Myw3IEBAIG91dDoKIAogc3RhdGljIGludCBz dGFydF90aHJlYWRfZmlmbyAoc2VsZWN0X3JlY29yZCAqbWUsIHNlbGVjdF9zdHVmZiAqc3R1ZmYp OwogCi1zdGF0aWMgRFdPUkQgV0lOQVBJCitzdGF0aWMgRFdPUkQKIHRocmVhZF9maWZvICh2b2lk ICphcmcpCiB7CiAgIHNlbGVjdF9maWZvX2luZm8gKnBpID0gKHNlbGVjdF9maWZvX2luZm8gKikg YXJnOwpAQCAtMTE2MSw3ICsxMTYxLDcgQEAgdmVyaWZ5X2NvbnNvbGUgKHNlbGVjdF9yZWNvcmQg Km1lLCBmZF9zZXQgKnJmZHMsIGZkX3NldCAqd2ZkcywKIAogc3RhdGljIGludCBjb25zb2xlX3N0 YXJ0dXAgKHNlbGVjdF9yZWNvcmQgKm1lLCBzZWxlY3Rfc3R1ZmYgKnN0dWZmKTsKIAotc3RhdGlj IERXT1JEIFdJTkFQSQorc3RhdGljIERXT1JECiB0aHJlYWRfY29uc29sZSAodm9pZCAqYXJnKQog ewogICBzZWxlY3RfY29uc29sZV9pbmZvICpjaSA9IChzZWxlY3RfY29uc29sZV9pbmZvICopIGFy ZzsKQEAgLTEzOTcsNyArMTM5Nyw3IEBAIG91dDoKIAogc3RhdGljIGludCBwdHlfc2xhdmVfc3Rh cnR1cCAoc2VsZWN0X3JlY29yZCAqbWUsIHNlbGVjdF9zdHVmZiAqc3R1ZmYpOwogCi1zdGF0aWMg RFdPUkQgV0lOQVBJCitzdGF0aWMgRFdPUkQKIHRocmVhZF9wdHlfc2xhdmUgKHZvaWQgKmFyZykK IHsKICAgc2VsZWN0X3BpcGVfaW5mbyAqcGkgPSAoc2VsZWN0X3BpcGVfaW5mbyAqKSBhcmc7CkBA IC0xNzczLDcgKzE3NzMsNyBAQCBwZWVrX3NvY2tldCAoc2VsZWN0X3JlY29yZCAqbWUsIGJvb2wp CiAKIHN0YXRpYyBpbnQgc3RhcnRfdGhyZWFkX3NvY2tldCAoc2VsZWN0X3JlY29yZCAqLCBzZWxl Y3Rfc3R1ZmYgKik7CiAKLXN0YXRpYyBEV09SRCBXSU5BUEkKK3N0YXRpYyBEV09SRAogdGhyZWFk X3NvY2tldCAodm9pZCAqYXJnKQogewogICBzZWxlY3Rfc29ja2V0X2luZm8gKnNpID0gKHNlbGVj dF9zb2NrZXRfaW5mbyAqKSBhcmc7CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL3NoYXJlZC5j YyBiL3dpbnN1cC9jeWd3aW4vc2hhcmVkLmNjCmluZGV4IGM5MzllMGQwZi4uYzU0OWY1ZTI2IDEw MDY0NAotLS0gYS93aW5zdXAvY3lnd2luL3NoYXJlZC5jYworKysgYi93aW5zdXAvY3lnd2luL3No YXJlZC5jYwpAQCAtOTUsMTQgKzk1LDE0IEBAIGdldF9zZXNzaW9uX3BhcmVudF9kaXIgKCkKICAg cmV0dXJuIHNlc3Npb25fcGFyZW50X2RpcjsKIH0KIAotY2hhciAqIF9fc3RkY2FsbAorY2hhciAq CiBzaGFyZWRfbmFtZSAoY2hhciAqcmV0X2J1ZiwgY29uc3QgY2hhciAqc3RyLCBpbnQgbnVtKQog ewogICBfX3NtYWxsX3NwcmludGYgKHJldF9idWYsICIlcy4lZCIsIHN0ciwgbnVtKTsKICAgcmV0 dXJuIHJldF9idWY7CiB9CiAKLVdDSEFSICogX19zdGRjYWxsCitXQ0hBUiAqCiBzaGFyZWRfbmFt ZSAoV0NIQVIgKnJldF9idWYsIGNvbnN0IFdDSEFSICpzdHIsIGludCBudW0pCiB7CiAgIF9fc21h bGxfc3dwcmludGYgKHJldF9idWYsIEwiJVcuJWQiLCBzdHIsIG51bSk7CkBAIC0xMzUsMTQgKzEz NSwxNCBAQCBzdGF0aWMgcHRyZGlmZl90IG9mZnNldHNbXSA9CiAKICNkZWZpbmUgb2ZmX2FkZHIo eCkJKCh2b2lkICopKChjYWRkcl90KSBjeWd3aW5faG1vZHVsZSArIG9mZnNldHNbeF0pKQogCi12 b2lkICogX19zdGRjYWxsCit2b2lkICoKIG9wZW5fc2hhcmVkIChjb25zdCBXQ0hBUiAqbmFtZSwg aW50IG4sIEhBTkRMRSYgc2hhcmVkX2gsIERXT1JEIHNpemUsCiAJICAgICBzaGFyZWRfbG9jYXRp b25zIG0sIFBTRUNVUklUWV9BVFRSSUJVVEVTIHBzYSwgRFdPUkQgYWNjZXNzKQogewogICByZXR1 cm4gb3Blbl9zaGFyZWQgKG5hbWUsIG4sIHNoYXJlZF9oLCBzaXplLCAmbSwgcHNhLCBhY2Nlc3Mp OwogfQogCi12b2lkICogX19zdGRjYWxsCit2b2lkICoKIG9wZW5fc2hhcmVkIChjb25zdCBXQ0hB UiAqbmFtZSwgaW50IG4sIEhBTkRMRSYgc2hhcmVkX2gsIERXT1JEIHNpemUsCiAJICAgICBzaGFy ZWRfbG9jYXRpb25zICptLCBQU0VDVVJJVFlfQVRUUklCVVRFUyBwc2EsIERXT1JEIGFjY2VzcykK IHsKQEAgLTI3Niw3ICsyNzYsNyBAQCB1c2VyX2luZm86OmNyZWF0ZSAoYm9vbCByZWluaXQpCiAg ICAgdXNlcl9zaGFyZWQtPmluaXRpYWxpemUgKCk7CiB9CiAKLXZvaWQgX19zdGRjYWxsCit2b2lk CiBzaGFyZWRfZGVzdHJveSAoKQogewogICBGb3JjZUNsb3NlSGFuZGxlIChjeWd3aW5fc2hhcmVk X2gpOwpkaWZmIC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9zaGFyZWRfaW5mby5oIGIvd2luc3VwL2N5 Z3dpbi9zaGFyZWRfaW5mby5oCmluZGV4IDgzYTFmZDE4Ny4uNmM1M2VjMGI4IDEwMDY0NAotLS0g YS93aW5zdXAvY3lnd2luL3NoYXJlZF9pbmZvLmgKKysrIGIvd2luc3VwL2N5Z3dpbi9zaGFyZWRf aW5mby5oCkBAIC03Nyw3ICs3Nyw3IEBAIGVudW0gc2hhcmVkX2xvY2F0aW9ucwogfTsKIAogdm9p ZCBtZW1vcnlfaW5pdCAoKTsKLXZvaWQgX19zdGRjYWxsIHNoYXJlZF9kZXN0cm95ICgpOwordm9p ZCBzaGFyZWRfZGVzdHJveSAoKTsKIAogI2RlZmluZSBzaGFyZWRfYWxpZ25fcGFzdChwKSBcCiAg ICgoY2hhciAqKSAoc3lzdGVtX2luZm8uZHdBbGxvY2F0aW9uR3JhbnVsYXJpdHkgKiBcCkBAIC04 NiwxMiArODYsMTIgQEAgdm9pZCBfX3N0ZGNhbGwgc2hhcmVkX2Rlc3Ryb3kgKCk7CiAKIEhBTkRM RSBnZXRfc2hhcmVkX3BhcmVudF9kaXIgKCk7CiBIQU5ETEUgZ2V0X3Nlc3Npb25fcGFyZW50X2Rp ciAoKTsKLWNoYXIgKl9fc3RkY2FsbCBzaGFyZWRfbmFtZSAoY2hhciAqLCBjb25zdCBjaGFyICos IGludCk7Ci1XQ0hBUiAqX19zdGRjYWxsIHNoYXJlZF9uYW1lIChXQ0hBUiAqLCBjb25zdCBXQ0hB UiAqLCBpbnQpOwotdm9pZCAqX19zdGRjYWxsIG9wZW5fc2hhcmVkIChjb25zdCBXQ0hBUiAqLCBp bnQsIEhBTkRMRSYsIERXT1JELAorY2hhciAqc2hhcmVkX25hbWUgKGNoYXIgKiwgY29uc3QgY2hh ciAqLCBpbnQpOworV0NIQVIgKnNoYXJlZF9uYW1lIChXQ0hBUiAqLCBjb25zdCBXQ0hBUiAqLCBp bnQpOwordm9pZCAqb3Blbl9zaGFyZWQgKGNvbnN0IFdDSEFSICosIGludCwgSEFORExFJiwgRFdP UkQsCiAJCQkgICAgIHNoYXJlZF9sb2NhdGlvbnMsIFBTRUNVUklUWV9BVFRSSUJVVEVTID0gJnNl Y19hbGwsCiAJCQkgICAgIERXT1JEID0gRklMRV9NQVBfUkVBRCB8IEZJTEVfTUFQX1dSSVRFKTsK LXZvaWQgKl9fc3RkY2FsbCBvcGVuX3NoYXJlZCAoY29uc3QgV0NIQVIgKiwgaW50LCBIQU5ETEUm LCBEV09SRCwKK3ZvaWQgKm9wZW5fc2hhcmVkIChjb25zdCBXQ0hBUiAqLCBpbnQsIEhBTkRMRSYs IERXT1JELAogCQkJICAgICBzaGFyZWRfbG9jYXRpb25zICosIFBTRUNVUklUWV9BVFRSSUJVVEVT ID0gJnNlY19hbGwsCiAJCQkgICAgIERXT1JEID0gRklMRV9NQVBfUkVBRCB8IEZJTEVfTUFQX1dS SVRFKTsKIGV4dGVybiB2b2lkIHVzZXJfc2hhcmVkX2NyZWF0ZSAoYm9vbCByZWluaXQpOwpkaWZm IC0tZ2l0IGEvd2luc3VwL2N5Z3dpbi9zaG0uY2MgYi93aW5zdXAvY3lnd2luL3NobS5jYwppbmRl eCBhZjA3OWFkODYuLjg4ZDNjMGE0OCAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9zaG0uY2MK KysrIGIvd2luc3VwL2N5Z3dpbi9zaG0uY2MKQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgTk9f Q09QWSBtdXRvIHNobV9ndWFyZDsKICNkZWZpbmUgU0xJU1RfTE9DSygpCShzaG1fZ3VhcmQuaW5p dCAoInNobV9ndWFyZCIpLT5hY3F1aXJlICgpKQogI2RlZmluZSBTTElTVF9VTkxPQ0soKQkoc2ht X2d1YXJkLnJlbGVhc2UgKCkpCiAKLWludCBfX3N0ZGNhbGwKK2ludAogZml4dXBfc2htc19hZnRl cl9mb3JrICgpCiB7CiAgIGlmICghU0xJU1RfRklSU1QgKCZzcGhfbGlzdCkpCmRpZmYgLS1naXQg YS93aW5zdXAvY3lnd2luL3NpZ3Byb2MuY2MgYi93aW5zdXAvY3lnd2luL3NpZ3Byb2MuY2MKaW5k ZXggMGNjYmM1MDQ2Li42YjFhNDEzN2QgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vc2lncHJv Yy5jYworKysgYi93aW5zdXAvY3lnd2luL3NpZ3Byb2MuY2MKQEAgLTEwMCw3ICsxMDAsNyBAQCBz dGF0aWMgaW50IGNoZWNrc3RhdGUgKHdhaXRxICopOwogc3RhdGljIF9faW5saW5lX18gYm9vbCBn ZXRfcHJvY19sb2NrIChEV09SRCwgRFdPUkQpOwogc3RhdGljIGludCByZW1vdmVfcHJvYyAoaW50 KTsKIHN0YXRpYyBib29sIHN0b3BwZWRfb3JfdGVybWluYXRlZCAod2FpdHEgKiwgX3BpbmZvICop Owotc3RhdGljIHZvaWQgV0lOQVBJIHdhaXRfc2lnIChWT0lEICphcmcpOworc3RhdGljIHZvaWQg d2FpdF9zaWcgKFZPSUQgKmFyZyk7CiAKIC8qIHdhaXRfc2lnIGJvb2trZWVwaW5nICovCiAKQEAg LTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAgIHZvaWQgY2xlYXIgKGludCBzaWcpIHtzaWdzW3Np Z10uc2kuc2lfc2lnbm8gPSAwO30KICAgdm9pZCBjbGVhciAoX2N5Z3RscyAqdGxzKTsKICAgZnJp ZW5kIHZvaWQgc2lnX2Rpc3BhdGNoX3BlbmRpbmcgKGJvb2wpOwotICBmcmllbmQgdm9pZCBXSU5B UEkgd2FpdF9zaWcgKFZPSUQgKmFyZyk7CisgIGZyaWVuZCB2b2lkIHdhaXRfc2lnIChWT0lEICph cmcpOwogfTsKIAogU3RhdGljIHBlbmRpbmdfc2lnbmFscyBzaWdxOwpAQCAtMTMxMyw3ICsxMzEz LDcgQEAgcGVuZGluZ19zaWduYWxzOjphZGQgKHNpZ3BhY2tldCYgcGFjaykKIAogLyogUHJvY2Vz cyBzaWduYWxzIGJ5IHdhaXRpbmcgZm9yIHNpZ25hbCBkYXRhIHRvIGFycml2ZSBpbiBhIHBpcGUu CiAgICBTZXQgYSBjb21wbGV0aW9uIGV2ZW50IGlmIG9uZSB3YXMgc3BlY2lmaWVkLiAqLwotc3Rh dGljIHZvaWQgV0lOQVBJCitzdGF0aWMgdm9pZAogd2FpdF9zaWcgKFZPSUQgKikKIHsKICAgX3Np Z190bHMgPSAmX215X3RsczsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vc2lncHJvYy5oIGIv d2luc3VwL2N5Z3dpbi9zaWdwcm9jLmgKaW5kZXggZjJkN2UzMTY4Li43YWNhODA1OTUgMTAwNjQ0 Ci0tLSBhL3dpbnN1cC9jeWd3aW4vc2lncHJvYy5oCisrKyBiL3dpbnN1cC9jeWd3aW4vc2lncHJv Yy5oCkBAIC02NCw3ICs2NCw3IEBAIGludCBoYW5kbGVfc2lncHJvY21hc2sgKGludCBzaWcsIGNv bnN0IHNpZ3NldF90ICpzZXQsCiAKIHZvaWQgc2lnX2NsZWFyIChpbnQpOwogdm9pZCBzaWdfc2V0 X3BlbmRpbmcgKGludCk7Ci1pbnQgX19zdGRjYWxsIGhhbmRsZV9zaWdzdXNwZW5kIChzaWdzZXRf dCk7CitpbnQgaGFuZGxlX3NpZ3N1c3BlbmQgKHNpZ3NldF90KTsKIAogaW50IHByb2Nfc3VicHJv YyAoRFdPUkQsIHVpbnRwdHJfdCk7CiAKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vc3RyYWNl LmNjIGIvd2luc3VwL2N5Z3dpbi9zdHJhY2UuY2MKaW5kZXggMzVmOGE1OWFlLi5hMWE1NWQxZWMg MTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vc3RyYWNlLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4v c3RyYWNlLmNjCkBAIC05MCw3ICs5MCw3IEBAIHN0cmFjZTo6bWljcm9zZWNvbmRzICgpCiAgIHJl dHVybiAoaW50KSAoY2xrLT5zdHJhY2VfdXNlY3MgKCkgLSBwcm9jZXNzX3N0YXJ0KTsKIH0KIAot c3RhdGljIGludCBfX3N0ZGNhbGwKK3N0YXRpYyBpbnQKIGdldGZ1bmMgKGNoYXIgKmluX2RzdCwg Y29uc3QgY2hhciAqZnVuYykKIHsKICAgY29uc3QgY2hhciAqcDsKZGlmZiAtLWdpdCBhL3dpbnN1 cC9jeWd3aW4vc3RyZnVuY3MuY2MgYi93aW5zdXAvY3lnd2luL3N0cmZ1bmNzLmNjCmluZGV4IGY2 OGZjYjc2Zi4uOWE5N2IzYTI0IDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL3N0cmZ1bmNzLmNj CisrKyBiL3dpbnN1cC9jeWd3aW4vc3RyZnVuY3MuY2MKQEAgLTY3MSw3ICs2NzEsNyBAQCBzeXNf bWJzdG93Y3NfYWxsb2MgKHdjaGFyX3QgKipkc3RfcCwgaW50IHR5cGUsIGNvbnN0IGNoYXIgKnNy Yywgc2l6ZV90IG5tcykKIC8qIENvcHkgc3RyaW5nLCB1bnRpbCBjIG9yIDxudWw+IGlzIGVuY291 bnRlcmVkLgogICAgTlVMLXRlcm1pbmF0ZSB0aGUgZGVzdGluYXRpb24gc3RyaW5nIChzMSkuCiAg ICBSZXR1cm4gcG9pbnRlciB0byB0ZXJtaW5hdGluZyBieXRlIGluIGRzdCBzdHJpbmcuICAqLwot Y2hhciAqIF9fc3RkY2FsbAorY2hhciAqCiBzdHJjY3B5IChjaGFyICpfX3Jlc3RyaWN0IHMxLCBj b25zdCBjaGFyICoqX19yZXN0cmljdCBzMiwgY2hhciBjKQogewogICB3aGlsZSAoKipzMiAmJiAq KnMyICE9IGMpCkBAIC03MzgsNyArNzM4LDcgQEAgY29uc3QgY2hhciBpc2FscGhhX2FycmF5W10g PSB7CiAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwCiB9OwogCi1leHRlcm4gIkMiIGludCBfX3N0ZGNh bGwKK2V4dGVybiAiQyIgaW50CiBjeWd3aW5fd2NzY2FzZWNtcCAoY29uc3Qgd2NoYXJfdCAqd3Ms IGNvbnN0IHdjaGFyX3QgKnd0KQogewogICBVTklDT0RFX1NUUklORyB1cywgdXQ7CkBAIC03NDgs NyArNzQ4LDcgQEAgY3lnd2luX3djc2Nhc2VjbXAgKGNvbnN0IHdjaGFyX3QgKndzLCBjb25zdCB3 Y2hhcl90ICp3dCkKICAgcmV0dXJuIFJ0bENvbXBhcmVVbmljb2RlU3RyaW5nICgmdXMsICZ1dCwg VFJVRSk7CiB9CiAKLWV4dGVybiAiQyIgaW50IF9fc3RkY2FsbAorZXh0ZXJuICJDIiBpbnQKIGN5 Z3dpbl93Y3NuY2FzZWNtcCAoY29uc3Qgd2NoYXJfdCAgKndzLCBjb25zdCB3Y2hhcl90ICp3dCwg c2l6ZV90IG4pCiB7CiAgIFVOSUNPREVfU1RSSU5HIHVzLCB1dDsKQEAgLTc2Myw3ICs3NjMsNyBA QCBjeWd3aW5fd2NzbmNhc2VjbXAgKGNvbnN0IHdjaGFyX3QgICp3cywgY29uc3Qgd2NoYXJfdCAq d3QsIHNpemVfdCBuKQogICByZXR1cm4gUnRsQ29tcGFyZVVuaWNvZGVTdHJpbmcgKCZ1cywgJnV0 LCBUUlVFKTsKIH0KIAotZXh0ZXJuICJDIiBpbnQgX19zdGRjYWxsCitleHRlcm4gIkMiIGludAog Y3lnd2luX3N0cmNhc2VjbXAgKGNvbnN0IGNoYXIgKmNzLCBjb25zdCBjaGFyICpjdCkKIHsKICAg VU5JQ09ERV9TVFJJTkcgdXMsIHV0OwpAQCAtNzgyLDcgKzc4Miw3IEBAIGN5Z3dpbl9zdHJjYXNl Y21wIChjb25zdCBjaGFyICpjcywgY29uc3QgY2hhciAqY3QpCiAgIHJldHVybiBSdGxDb21wYXJl VW5pY29kZVN0cmluZyAoJnVzLCAmdXQsIFRSVUUpOwogfQogCi1leHRlcm4gIkMiIGludCBfX3N0 ZGNhbGwKK2V4dGVybiAiQyIgaW50CiBjeWd3aW5fc3RybmNhc2VjbXAgKGNvbnN0IGNoYXIgKmNz LCBjb25zdCBjaGFyICpjdCwgc2l6ZV90IG4pCiB7CiAgIFVOSUNPREVfU1RSSU5HIHVzLCB1dDsK ZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vc3RyaW5nLmggYi93aW5zdXAvY3lnd2luL3N0cmlu Zy5oCmluZGV4IDM4NDMxNDQ0Mi4uZWM5YTAzMGEwIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2lu L3N0cmluZy5oCisrKyBiL3dpbnN1cC9jeWd3aW4vc3RyaW5nLmgKQEAgLTE3LDcgKzE3LDcgQEAg ZXh0ZXJuICJDIiB7CiAKICN1bmRlZiBzdHJjaHJudWwKICNkZWZpbmUgc3RyY2hybnVsIGN5Z3dp bl9zdHJjaHJudWwKLXN0YXRpYyBpbmxpbmUgX19zdGRjYWxsIGNoYXIgKgorc3RhdGljIGlubGlu ZSBjaGFyICoKIHN0cmNocm51bCAoY29uc3QgY2hhciAqcywgaW50IGMpCiB7CiAgIHdoaWxlICgq cyAhPSAoY2hhcikgYyAmJiAqcyAhPSAwKQpAQCAtNjgsMTEgKzY4LDExIEBAIGFzY2lpX3N0cm5j YXNlbWF0Y2ggKGNvbnN0IGNoYXIgKmNzLCBjb25zdCBjaGFyICpjdCwgc2l6ZV90IG4pCiAKICN1 bmRlZiBzdHJjYXNlY21wCiAjZGVmaW5lIHN0cmNhc2VjbXAgY3lnd2luX3N0cmNhc2VjbXAKLWlu dCBfX3N0ZGNhbGwgY3lnd2luX3N0cmNhc2VjbXAgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq KTsKK2ludCBjeWd3aW5fc3RyY2FzZWNtcCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwog CiAjdW5kZWYgc3RybmNhc2VjbXAKICNkZWZpbmUgc3RybmNhc2VjbXAgY3lnd2luX3N0cm5jYXNl Y21wCi1pbnQgX19zdGRjYWxsIGN5Z3dpbl9zdHJuY2FzZWNtcCAoY29uc3QgY2hhciAqLCBjb25z dCBjaGFyICosIHNpemVfdCk7CitpbnQgY3lnd2luX3N0cm5jYXNlY21wIChjb25zdCBjaGFyICos IGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKIAogI2RlZmluZSBzdHJjYXNlbWF0Y2goczEsczIpCSgh Y3lnd2luX3N0cmNhc2VjbXAgKChzMSksKHMyKSkpCiAjZGVmaW5lIHN0cm5jYXNlbWF0Y2goczEs czIsbikJKCFjeWd3aW5fc3RybmNhc2VjbXAgKChzMSksKHMyKSwobikpKQpAQCAtODIsNyArODIs NyBAQCBjaGFyICpzdHJ1cHIgKGNoYXIgKik7CiAKICNlbmRpZiAvKiBfX0lOU0lERV9DWUdXSU5f XyAqLwogCi1jaGFyICpfX3N0ZGNhbGwgc3RyY2NweSAoY2hhciAqX19yZXN0cmljdCBzMSwgY29u c3QgY2hhciAqKl9fcmVzdHJpY3QgczIsCitjaGFyICpzdHJjY3B5IChjaGFyICpfX3Jlc3RyaWN0 IHMxLCBjb25zdCBjaGFyICoqX19yZXN0cmljdCBzMiwKIAkJCSBjaGFyIGMpOwogCiAjaWZkZWYg X19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vdGhyZWFkLmNjIGIvd2luc3Vw L2N5Z3dpbi90aHJlYWQuY2MKaW5kZXggNzJjMDRkYmRhLi5kYzU5Mjk0ZTcgMTAwNjQ0Ci0tLSBh L3dpbnN1cC9jeWd3aW4vdGhyZWFkLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vdGhyZWFkLmNjCkBA IC0xOTg5LDcgKzE5ODksNyBAQCBwdGhyZWFkX3NwaW5sb2NrOjp1bmxvY2sgKCkKICAgcmV0dXJu IHJlc3VsdDsKIH0KIAotRFdPUkQgV0lOQVBJCitEV09SRAogcHRocmVhZDo6dGhyZWFkX2luaXRf d3JhcHBlciAodm9pZCAqYXJnKQogewogICBleGNlcHRpb24gcHJvdGVjdDsKZGlmZiAtLWdpdCBh L3dpbnN1cC9jeWd3aW4vdGhyZWFkLmggYi93aW5zdXAvY3lnd2luL3RocmVhZC5oCmluZGV4IGRk YjJkN2RiZi4uOTkzOWM0MjI0IDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL3RocmVhZC5oCisr KyBiL3dpbnN1cC9jeWd3aW4vdGhyZWFkLmgKQEAgLTQzMCw3ICs0MzAsNyBAQCBwdWJsaWM6CiAg IHZpcnR1YWwgdm9pZCBwb3BfY2xlYW51cF9oYW5kbGVyIChpbnQgY29uc3QgZXhlY3V0ZSk7CiAK ICAgc3RhdGljIHB0aHJlYWQqIHNlbGYgKCk7Ci0gIHN0YXRpYyBEV09SRCBXSU5BUEkgdGhyZWFk X2luaXRfd3JhcHBlciAodm9pZCAqKTsKKyAgc3RhdGljIERXT1JEIHRocmVhZF9pbml0X3dyYXBw ZXIgKHZvaWQgKik7CiAKICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGdldHNlcXVlbmNlX25wKCk7 CiAKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vdGltZXJmZC5jYyBiL3dpbnN1cC9jeWd3aW4v dGltZXJmZC5jYwppbmRleCBmMWE0YzI4MDQuLmM2OTJlMWJkMSAxMDA2NDQKLS0tIGEvd2luc3Vw L2N5Z3dpbi90aW1lcmZkLmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vdGltZXJmZC5jYwpAQCAtMjI1 LDcgKzIyNSw3IEBAIGNhbmNlbGVkOgogICByZXR1cm4gMDsKIH0KIAotc3RhdGljIERXT1JEIFdJ TkFQSQorc3RhdGljIERXT1JECiB0aW1lcmZkX3RocmVhZCAoVk9JRCAqYXJnKQogewogICB0aW1l cmZkX3RyYWNrZXIgKnR0ID0gKCh0aW1lcmZkX3RyYWNrZXIgKikgYXJnKTsKZGlmZiAtLWdpdCBh L3dpbnN1cC9jeWd3aW4vdGltZXMuY2MgYi93aW5zdXAvY3lnd2luL3RpbWVzLmNjCmluZGV4IDYw YjI5YjMyMy4uNGFiNDMyOTI1IDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL3RpbWVzLmNjCisr KyBiL3dpbnN1cC9jeWd3aW4vdGltZXMuY2MKQEAgLTM1LDcgKzM1LDcgQEAgZ2V0X3N5c3RlbV90 aW1lIChQTEFSR0VfSU5URUdFUiBzeXN0aW1lKQogfQogCiAvKiBDeWd3aW4gaW50ZXJuYWwgKi8K LXN0YXRpYyB1aW50NjRfdCBfX3N0ZGNhbGwKK3N0YXRpYyB1aW50NjRfdAogX190b19jbG9ja190 IChQTEFSR0VfSU5URUdFUiBzcmMsIGludCBmbGFnKQogewogICB1aW50NjRfdCB0b3RhbCA9IHNy Yy0+UXVhZFBhcnQ7CkBAIC0xNTQsNyArMTU0LDcgQEAgdGltZXpvbmUgKHZvaWQpCiB9CiAKIC8q IEN5Z3dpbiBpbnRlcm5hbCAqLwotdm9pZCBfX3N0ZGNhbGwKK3ZvaWQKIHRvdGltZXZhbCAoc3Ry dWN0IHRpbWV2YWwgKmRzdCwgUExBUkdFX0lOVEVHRVIgc3JjLCBpbnQgc3ViLCBpbnQgZmxhZykK IHsKICAgaW50NjRfdCB4ID0gX190b19jbG9ja190IChzcmMsIGZsYWcpOwpAQCAtMTk0LDcgKzE5 NCw3IEBAIGdldHRpbWVvZmRheSAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QgdHYsIHZvaWQg Kl9fcmVzdHJpY3QgdHp2cCkKIEVYUE9SVF9BTElBUyAoZ2V0dGltZW9mZGF5LCBfZ2V0dGltZW9m ZGF5KQogCiAvKiBDeWd3aW4gaW50ZXJuYWwgKi8KLXZvaWQgX19zdGRjYWxsCit2b2lkCiB0aW1l c3BlY190b19maWxldGltZSAoY29uc3Qgc3RydWN0IHRpbWVzcGVjICp0aW1lX2luLCBQTEFSR0Vf SU5URUdFUiBvdXQpCiB7CiAgIGlmICh0aW1lX2luLT50dl9uc2VjID09IFVUSU1FX09NSVQpCkBA IC0yMDUsNyArMjA1LDcgQEAgdGltZXNwZWNfdG9fZmlsZXRpbWUgKGNvbnN0IHN0cnVjdCB0aW1l c3BlYyAqdGltZV9pbiwgUExBUkdFX0lOVEVHRVIgb3V0KQogfQogCiAvKiBDeWd3aW4gaW50ZXJu YWwgKi8KLXZvaWQgX19zdGRjYWxsCit2b2lkCiB0aW1ldmFsX3RvX2ZpbGV0aW1lIChjb25zdCBz dHJ1Y3QgdGltZXZhbCAqdGltZV9pbiwgUExBUkdFX0lOVEVHRVIgb3V0KQogewogICBvdXQtPlF1 YWRQYXJ0ID0gdGltZV9pbi0+dHZfc2VjICogTlMxMDBQRVJTRUMKQEAgLTIzMCw3ICsyMzAsNyBA QCB0aW1ldmFsX3RvX21zIChjb25zdCBzdHJ1Y3QgdGltZXZhbCAqdGltZV9pbiwgRFdPUkQgJm1z KQogfQogCiAvKiBDeWd3aW4gaW50ZXJuYWwgKi8KLXN0YXRpYyB0aW1ldmFsIF9fc3RkY2FsbAor c3RhdGljIHRpbWV2YWwKIHRpbWVfdF90b190aW1ldmFsICh0aW1lX3QgaW4pCiB7CiAgIHRpbWV2 YWwgcmVzOwpAQCAtMjY1LDcgKzI2NSw3IEBAIHRpbWV2YWxfdG9fdGltZXNwZWMgKGNvbnN0IHN0 cnVjdCB0aW1ldmFsICp0dnAsIHN0cnVjdCB0aW1lc3BlYyAqdG1wKQogCiAvKiBDeWd3aW4gaW50 ZXJuYWwgKi8KIC8qIENvbnZlcnQgYSBXaW4zMiB0aW1lIHRvICJVTklYIiBmb3JtYXQuICovCi10 aW1lX3QgX19zdGRjYWxsCit0aW1lX3QKIHRvX3RpbWVfdCAoUExBUkdFX0lOVEVHRVIgcHRyKQog ewogICAvKiBBIGZpbGUgdGltZSBpcyB0aGUgbnVtYmVyIG9mIDEwMG5zIHNpbmNlIGphbiAxIDE2 MDEKQEAgLTI4NSw3ICsyODUsNyBAQCB0b190aW1lX3QgKFBMQVJHRV9JTlRFR0VSIHB0cikKIAog LyogQ3lnd2luIGludGVybmFsICovCiAvKiBDb252ZXJ0IGEgV2luMzIgdGltZSB0byAiVU5JWCIg dGltZXN0cnVjX3QgZm9ybWF0LiAqLwotdm9pZCBfX3N0ZGNhbGwKK3ZvaWQKIHRvX3RpbWVzdHJ1 Y190IChQTEFSR0VfSU5URUdFUiBwdHIsIHRpbWVzdHJ1Y190ICpvdXQpCiB7CiAgIC8qIEEgZmls ZSB0aW1lIGlzIHRoZSBudW1iZXIgb2YgMTAwbnMgc2luY2UgamFuIDEgMTYwMQpAQCAtMzA5LDcg KzMwOSw3IEBAIHRvX3RpbWVzdHJ1Y190IChQTEFSR0VfSU5URUdFUiBwdHIsIHRpbWVzdHJ1Y190 ICpvdXQpCiAKIC8qIEN5Z3dpbiBpbnRlcm5hbCAqLwogLyogR2V0IHRoZSBjdXJyZW50IHRpbWUg YXMgYSAiVU5JWCIgdGltZXN0cnVjX3QgZm9ybWF0LiAqLwotdm9pZCBfX3N0ZGNhbGwKK3ZvaWQK IHRpbWVfYXNfdGltZXN0cnVjX3QgKHRpbWVzdHJ1Y190ICogb3V0KQogewogICBMQVJHRV9JTlRF R0VSIHN5c3RpbWU7CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2luL3R0eS5jYyBiL3dpbnN1cC9j eWd3aW4vdHR5LmNjCmluZGV4IDI5NTlmZTJhYi4uYTg2MmE0NDRlIDEwMDY0NAotLS0gYS93aW5z dXAvY3lnd2luL3R0eS5jYworKysgYi93aW5zdXAvY3lnd2luL3R0eS5jYwpAQCAtNjMsNyArNjMs NyBAQCB0dHlzbG90ICh2b2lkKQogICByZXR1cm4gZGV2aWNlOjptaW5vciAobXlzZWxmLT5jdHR5 KTsKIH0KIAotdm9pZCBfX3N0ZGNhbGwKK3ZvaWQKIHR0eV9saXN0Ojppbml0X3Nlc3Npb24gKCkK IHsKICAgY2hhciBtdXRleF9uYW1lW01BWF9QQVRIXTsKQEAgLTc1LDcgKzc1LDcgQEAgdHR5X2xp c3Q6OmluaXRfc2Vzc2lvbiAoKQogICBQcm90ZWN0SGFuZGxlIChtdXRleCk7CiB9CiAKLXZvaWQg X19zdGRjYWxsCit2b2lkCiB0dHk6OmluaXRfc2Vzc2lvbiAoKQogewogICBpZiAoIW15c2VsZi0+ Y3lnc3RhcnRlZCAmJiBOT1RTVEFURSAobXlzZWxmLCBQSURfQ1lHUEFSRU5UKSkKZGlmZiAtLWdp dCBhL3dpbnN1cC9jeWd3aW4vdHR5LmggYi93aW5zdXAvY3lnd2luL3R0eS5oCmluZGV4IGM0ZjJi NWRkNy4uM2QwZWEwYzY4IDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL3R0eS5oCisrKyBiL3dp bnN1cC9jeWd3aW4vdHR5LmgKQEAgLTE2OSw4ICsxNjksOCBAQCBwdWJsaWM6CiAgIGJvb2wgZXhp c3RzICgpOwogICBib29sIG5vdF9hbGxvY2F0ZWQgKEhBTkRMRSYsIEhBTkRMRSYpOwogICB2b2lk IHNldF9tYXN0ZXJfY3RsX2Nsb3NlZCAoKSB7bWFzdGVyX3BpZCA9IC0xO30KLSAgc3RhdGljIHZv aWQgX19zdGRjYWxsIGNyZWF0ZV9tYXN0ZXIgKGludCk7Ci0gIHN0YXRpYyB2b2lkIF9fc3RkY2Fs bCBpbml0X3Nlc3Npb24gKCk7CisgIHN0YXRpYyB2b2lkIGNyZWF0ZV9tYXN0ZXIgKGludCk7Cisg IHN0YXRpYyB2b2lkIGluaXRfc2Vzc2lvbiAoKTsKICAgdm9pZCB3YWl0X2Z3ZCAoKTsKICAgYm9v bCBwdHlfaW5wdXRfc3RhdGVfZXEgKHhmZXJfZGlyIHgpIHsgcmV0dXJuIHB0eV9pbnB1dF9zdGF0 ZSA9PSB4OyB9CiAgIGJvb2wgbmF0X2ZnIChwaWRfdCBwZ2lkKTsKQEAgLTE5Miw3ICsxOTIsNyBA QCBwdWJsaWM6CiAgIHZvaWQgaW5pdCAoKTsKICAgdHR5X21pbiAqZ2V0X2N0dHlwICgpOwogICBp bnQgYXR0YWNoIChpbnQgbik7Ci0gIHN0YXRpYyB2b2lkIF9fc3RkY2FsbCBpbml0X3Nlc3Npb24g KCk7CisgIHN0YXRpYyB2b2lkIGluaXRfc2Vzc2lvbiAoKTsKICAgZnJpZW5kIGNsYXNzIGxvY2tf dHR5czsKIH07CiAKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vd2luZG93LmNjIGIvd2luc3Vw L2N5Z3dpbi93aW5kb3cuY2MKaW5kZXggMDAyMDUzODY5Li42OTQzMDMyNmEgMTAwNjQ0Ci0tLSBh L3dpbnN1cC9jeWd3aW4vd2luZG93LmNjCisrKyBiL3dpbnN1cC9jeWd3aW4vd2luZG93LmNjCkBA IC01Miw3ICs1Miw3IEBAIHByb2Nlc3Nfd2luZG93X2V2ZW50cyAoSFdORCBod25kLCBVSU5UIHVN c2csIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiB9CiAKIC8qIEhhbmRsZSB3aW5kb3dz IGV2ZW50cy4gIEluaGVyaXRzIG93bmVyc2hpcCBvZiB0aGUgd2luaW5mbyBsb2NrICovCi1EV09S RCBXSU5BUEkKK0RXT1JECiB3aW5pbmZvOjp3aW50aHJlYWQgKCkKIHsKICAgTVNHIG1zZzsKQEAg LTkyLDcgKzkyLDcgQEAgd2luaW5mbzo6d2ludGhyZWFkICgpCiAgIHJldHVybiAwOwogfQogCi1z dGF0aWMgRFdPUkQgV0lOQVBJCitzdGF0aWMgRFdPUkQKIHdpbnRocmVhZCAoVk9JRCAqYXJnKQog ewogICByZXR1cm4gICgod2luaW5mbyAqKSBhcmcpLT53aW50aHJlYWQgKCk7CmRpZmYgLS1naXQg YS93aW5zdXAvY3lnd2luL3dpbmluZm8uaCBiL3dpbnN1cC9jeWd3aW4vd2luaW5mby5oCmluZGV4 IDlkZmJhMWE4Yy4uMzIzZDI3MmE1IDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL3dpbmluZm8u aAorKysgYi93aW5zdXAvY3lnd2luL3dpbmluZm8uaApAQCAtMTYsNyArMTYsNyBAQCBwdWJsaWM6 CiAgIGludCBwcm9jZXNzIChIV05ELCBVSU5ULCBXUEFSQU0sIExQQVJBTSk7CiAgIHZvaWQgbG9j ayAoKTsKICAgdm9pZCByZWxlYXNlICgpOwotICBEV09SRCBXSU5BUEkgd2ludGhyZWFkICgpOwor ICBEV09SRCB3aW50aHJlYWQgKCk7CiB9OwogCiBleHRlcm4gd2luaW5mbyB3aW5tc2c7CmRpZmYg LS1naXQgYS93aW5zdXAvY3lnd2luL3dpbmxlYW4uaCBiL3dpbnN1cC9jeWd3aW4vd2lubGVhbi5o CmluZGV4IGRlNzMwNWUyNi4uZGE5Y2NiYWMyIDEwMDY0NAotLS0gYS93aW5zdXAvY3lnd2luL3dp bmxlYW4uaAorKysgYi93aW5zdXAvY3lnd2luL3dpbmxlYW4uaApAQCAtMTA2LDcgKzEwNiw3IEBA IGV4dGVybiAiQyIgewogCiAvKiBJc1dvdzY0UHJvY2VzczIgc2hvdWxkIGJlIGRlY2xhcmVkIGlu IDx3MzJhcGkvd293NjRhcGlzZXQuaD4gYnV0CiAgICBpc24ndCB5ZXQuICovCi1CT09MIFdJTkFQ SSBJc1dvdzY0UHJvY2VzczIoSEFORExFLCBVU0hPUlQgKiwgVVNIT1JUICopOworQk9PTCBJc1dv dzY0UHJvY2VzczIoSEFORExFLCBVU0hPUlQgKiwgVVNIT1JUICopOwogCiAjaWZkZWYgX19jcGx1 c3BsdXMKIH0KZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3aW4vd2luc3VwLmggYi93aW5zdXAvY3ln d2luL3dpbnN1cC5oCmluZGV4IDQxNDdkY2ViZi4uNDNkZmJmNDZmIDEwMDY0NAotLS0gYS93aW5z dXAvY3lnd2luL3dpbnN1cC5oCisrKyBiL3dpbnN1cC9jeWd3aW4vd2luc3VwLmgKQEAgLTE0Nyw3 ICsxNDcsNyBAQCBleHRlcm4gaW50IGN5Z3NlcnZlcl9ydW5uaW5nOwogY2xhc3MgcGVyX3Byb2Nl c3M7CiAvKiBjeWd3aW4gLmRsbCBpbml0aWFsaXphdGlvbiAqLwogdm9pZCBkbGxfY3J0MCAocGVy X3Byb2Nlc3MgKikgX19hc21fXyAoX1NZTVNUUiAoZGxsX2NydDBfX0ZQMTFwZXJfcHJvY2Vzcykp OwotZXh0ZXJuICJDIiB2b2lkIF9fc3RkY2FsbCBfZGxsX2NydDAgKCk7CitleHRlcm4gIkMiIHZv aWQgX2RsbF9jcnQwICgpOwogdm9pZCBkbGxfY3J0MF8xICh2b2lkICopOwogdm9pZCBkbGxfZGxs Y3J0MF8xICh2b2lkICopOwogCkBAIC0xODIsOCArMTgyLDggQEAgY29uc3QgY2hhciAqZmluZF9m aXJzdF9ub3Rsb2FkZWRfZGxsIChjbGFzcyBwYXRoX2NvbnYgJik7CiAKIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqIE1pc2NlbGxhbmVvdXMgKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLwogCi12b2lkIF9fc3RkY2FsbCBzZXRfc3RkX2hhbmRsZSAoaW50KTsKLWludCBfX3N0ZGNh bGwgc3RhdF9kZXYgKERXT1JELCBpbnQsIHVuc2lnbmVkIGxvbmcsIHN0cnVjdCBzdGF0ICopOwor dm9pZCBzZXRfc3RkX2hhbmRsZSAoaW50KTsKK2ludCBzdGF0X2RldiAoRFdPUkQsIGludCwgdW5z aWduZWQgbG9uZywgc3RydWN0IHN0YXQgKik7CiAKIGlub190IGhhc2hfcGF0aF9uYW1lIChpbm9f dCBoYXNoLCBQVU5JQ09ERV9TVFJJTkcgbmFtZSk7CiBpbm9fdCBoYXNoX3BhdGhfbmFtZSAoaW5v X3QgaGFzaCwgUENXU1RSIG5hbWUpOwpAQCAtMTk0LDE2ICsxOTQsMTYgQEAgdm9pZCAqaG9va19v cl9kZXRlY3RfY3lnd2luIChjb25zdCBjaGFyICosIGNvbnN0IHZvaWQgKiwgV09SRCYsIEhBTkRM RSBoID0gTlVMTCkKIHZvaWQgKmhvb2tfYXBpIChjb25zdCBjaGFyICptbmFtZSwgY29uc3QgY2hh ciAqbmFtZSwgY29uc3Qgdm9pZCAqZm4pOwogCiAvKiBUaW1lIHJlbGF0ZWQgKi8KLXZvaWQgX19z dGRjYWxsIHRvdGltZXZhbCAoc3RydWN0IHRpbWV2YWwgKiwgUExBUkdFX0lOVEVHRVIsIGludCwg aW50KTsKLXRpbWVfdCBfX3N0ZGNhbGwgdG9fdGltZV90IChQTEFSR0VfSU5URUdFUik7Ci12b2lk IF9fc3RkY2FsbCB0b190aW1lc3RydWNfdCAoUExBUkdFX0lOVEVHRVIsIHRpbWVzdHJ1Y190ICop Owotdm9pZCBfX3N0ZGNhbGwgdGltZV9hc190aW1lc3RydWNfdCAodGltZXN0cnVjX3QgKik7Ci12 b2lkIF9fc3RkY2FsbCB0aW1ldmFsX3RvX2ZpbGV0aW1lIChjb25zdCBzdHJ1Y3QgdGltZXZhbCAq LCBQTEFSR0VfSU5URUdFUik7Ci12b2lkIF9fc3RkY2FsbCB0aW1lc3BlY190b19maWxldGltZSAo Y29uc3Qgc3RydWN0IHRpbWVzcGVjICosIFBMQVJHRV9JTlRFR0VSKTsKK3ZvaWQgdG90aW1ldmFs IChzdHJ1Y3QgdGltZXZhbCAqLCBQTEFSR0VfSU5URUdFUiwgaW50LCBpbnQpOwordGltZV90IHRv X3RpbWVfdCAoUExBUkdFX0lOVEVHRVIpOwordm9pZCB0b190aW1lc3RydWNfdCAoUExBUkdFX0lO VEVHRVIsIHRpbWVzdHJ1Y190ICopOwordm9pZCB0aW1lX2FzX3RpbWVzdHJ1Y190ICh0aW1lc3Ry dWNfdCAqKTsKK3ZvaWQgdGltZXZhbF90b19maWxldGltZSAoY29uc3Qgc3RydWN0IHRpbWV2YWwg KiwgUExBUkdFX0lOVEVHRVIpOwordm9pZCB0aW1lc3BlY190b19maWxldGltZSAoY29uc3Qgc3Ry dWN0IHRpbWVzcGVjICosIFBMQVJHRV9JTlRFR0VSKTsKIGJvb2wgdGltZXZhbF90b19tcyAoY29u c3Qgc3RydWN0IHRpbWV2YWwgKiwgRFdPUkQgJik7CiAKIC8qIENvbnNvbGUgcmVsYXRlZCAqLwot dm9pZCBfX3N0ZGNhbGwgc2V0X2NvbnNvbGVfdGl0bGUgKGNoYXIgKik7Cit2b2lkIHNldF9jb25z b2xlX3RpdGxlIChjaGFyICopOwogdm9pZCBpbml0X2NvbnNvbGVfaGFuZGxlciAoYm9vbCk7CiAK IGV4dGVybiBib29sIHdzb2NrX3N0YXJ0ZWQ7CmRpZmYgLS1naXQgYS93aW5zdXAvdGVzdHN1aXRl L3dpbnN1cC5hcGkvY3lnbG9hZC5jYyBiL3dpbnN1cC90ZXN0c3VpdGUvd2luc3VwLmFwaS9jeWds b2FkLmNjCmluZGV4IGZhYWQ1Y2UwZS4uYjhlNzY0MDU4IDEwMDY0NAotLS0gYS93aW5zdXAvdGVz dHN1aXRlL3dpbnN1cC5hcGkvY3lnbG9hZC5jYworKysgYi93aW5zdXAvdGVzdHN1aXRlL3dpbnN1 cC5hcGkvY3lnbG9hZC5jYwpAQCAtMjE2LDcgKzIxNiw3IEBAIGN5Z3dpbjo6Y29ubmVjdG9yOjp+ Y29ubmVjdG9yICgpCiAgIH0KIH0KIAotRFdPUkQgV0lOQVBJCitEV09SRAogY3lnd2luOjpjb25u ZWN0b3I6OnNpZ25hbF90aHJlYWQgKHZvaWQgKnBhcmFtKQogewogICBjb25uZWN0b3IgKnRoYXQg PSByZWludGVycHJldF9jYXN0IDwgY29ubmVjdG9yICogPiAocGFyYW0pOwpAQCAtNDMxLDcgKzQz MSw3IEBAIGV4dGVybiAiQyIgaW50IG1haW5DUlRTdGFydHVwICgpOwogLy8gVGhpcyBqdXN0IHB1 c2hlcyA0SyBvbnRvIHRoZSBzdGFjaywgYmFja3MgdXAgdGhlIG9yaWdpbmFsIHN0YWNrLCBhbmQK IC8vIGp1bXBzIGludG8gdGhlIHJlZ3VsYXIgc3RhcnR1cCBjb2RlLiAgVGhpcyBhdm9pZHMgaGF2 aW5nIHRvIHdvcnJ5IGFib3V0CiAvLyBiYWNraW5nIHVwIGFyZ2MgYW5kIGFyZ3YuCi1leHRlcm4g IkMiIGludCBfX3N0ZGNhbGwKK2V4dGVybiAiQyIgaW50CiBjeWdsb2FkQ1JUU3RhcnR1cCAoKQog ewogICBjeWd3aW46OnBhZGRpbmcgcGFkZGluZzsKZGlmZiAtLWdpdCBhL3dpbnN1cC90ZXN0c3Vp dGUvd2luc3VwLmFwaS9jeWdsb2FkLmggYi93aW5zdXAvdGVzdHN1aXRlL3dpbnN1cC5hcGkvY3ln bG9hZC5oCmluZGV4IDgwMDdmZDU5My4uZDYyY2MxMDRjIDEwMDY0NAotLS0gYS93aW5zdXAvdGVz dHN1aXRlL3dpbnN1cC5hcGkvY3lnbG9hZC5oCisrKyBiL3dpbnN1cC90ZXN0c3VpdGUvd2luc3Vw LmFwaS9jeWdsb2FkLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBuYW1lc3BhY2UgY3lnd2luCiAgICAg Ly8gd2Ugc3Bhd24gYSB0aHJlYWQgdGhhdCBkb2VzIG5vdGhpbmcgYnV0IGNhbGwgc2lnd2FpdCgp LgogCiAgICAgLy8gVGhpcyBpcyB0aGUgZW50cnkgcG9pbnQ6Ci0gICAgc3RhdGljIERXT1JEIFdJ TkFQSSBzaWduYWxfdGhyZWFkICh2b2lkICopOworICAgIHN0YXRpYyBEV09SRCBzaWduYWxfdGhy ZWFkICh2b2lkICopOwogICAgIC8vIEl0IHJ1bnMgdGhpczoKICAgICB2b2lkIGF3YWl0X3NpZ25h bCAoKTsKICAgICAvLyBBbmQgd2lsbCBleGVjdXRlIHRoaXMgb24gcmVjZWlwdCBvZiBhbnkgc2ln bmFsIGZvciB3aGljaCBpdCdzCmRpZmYgLS1naXQgYS93aW5zdXAvdXRpbHMva2lsbC5jYyBiL3dp bnN1cC91dGlscy9raWxsLmNjCmluZGV4IGQwZmI1NDczNy4uMDRjOTc3NGViIDEwMDY0NAotLS0g YS93aW5zdXAvdXRpbHMva2lsbC5jYworKysgYi93aW5zdXAvdXRpbHMva2lsbC5jYwpAQCAtMTU0 LDcgKzE1NCw3IEBAIGdldF9kZWJ1Z19wcml2ICh2b2lkKQogICBDbG9zZUhhbmRsZSAodG9rKTsK IH0KIAotc3RhdGljIHZvaWQgX19zdGRjYWxsCitzdGF0aWMgdm9pZAogZm9yY2VraWxsIChwaWRf dCBwaWQsIERXT1JEIHdpbnBpZCwgaW50IHNpZywgaW50IHdhaXQpCiB7CiAgIERXT1JEIGR3cGlk OwpkaWZmIC0tZ2l0IGEvd2luc3VwL3V0aWxzL2xvYWRsaWIuaCBiL3dpbnN1cC91dGlscy9sb2Fk bGliLmgKaW5kZXggYzgzYjc2NDc4Li41ODU2NmU0NzUgMTAwNjQ0Ci0tLSBhL3dpbnN1cC91dGls cy9sb2FkbGliLmgKKysrIGIvd2luc3VwL3V0aWxzL2xvYWRsaWIuaApAQCAtMjEsNyArMjEsNyBA QCBzdGF0aWMgSE1PRFVMRSBfbG9hZF9zeXNfbGlicmFyeSAoY29uc3Qgd2NoYXJfdCAqZGxsKSBf X2F0dHJpYnV0ZV9fICgodXNlZCkpOwogc3RhdGljIEhNT0RVTEUKIF9sb2FkX3N5c19saWJyYXJ5 IChjb25zdCB3Y2hhcl90ICpkbGwpCiB7Ci0gIHN0YXRpYyBCT09MIFdJTkFQSSAoKnNldF9kbGxf ZGlyZWN0b3J5KShMUENXU1RSKTsKKyAgc3RhdGljIEJPT0wgKCpzZXRfZGxsX2RpcmVjdG9yeSko TFBDV1NUUik7CiAgIHN0YXRpYyBXQ0hBUiBzeXNkaXJbTUFYX1BBVEhdOwogICBzdGF0aWMgVUlO VCBzeXNkaXJfbGVuOwogCkBAIC0zNywxMCArMzcsMTAgQEAgX2xvYWRfc3lzX2xpYnJhcnkgKGNv bnN0IHdjaGFyX3QgKmRsbCkKICAgICB7CiAgICAgICBITU9EVUxFIGszMiA9IEdldE1vZHVsZUhh bmRsZVcgKEwia2VybmVsMzIuZGxsIik7CiAgICAgICBpZiAoazMyKQotICAgICAgCXNldF9kbGxf ZGlyZWN0b3J5ID0gKEJPT0wgV0lOQVBJICgqKShMUENXU1RSKSkKKyAgICAgIAlzZXRfZGxsX2Rp cmVjdG9yeSA9IChCT09MICgqKShMUENXU1RSKSkKIAkJICAgICBHZXRQcm9jQWRkcmVzcyAoazMy LCAiU2V0RGxsRGlyZWN0b3J5VyIpOwogICAgICAgaWYgKCFzZXRfZGxsX2RpcmVjdG9yeSkKLQlz ZXRfZGxsX2RpcmVjdG9yeSA9IChCT09MIFdJTkFQSSAoKikoTFBDV1NUUikpIC0xOworCXNldF9k bGxfZGlyZWN0b3J5ID0gKEJPT0wgKCopKExQQ1dTVFIpKSAtMTsKICAgICAgIGVsc2UKICAgICAg IAlzZXRfZGxsX2RpcmVjdG9yeSAoTCIiKTsKICAgICB9CmRpZmYgLS1naXQgYS93aW5zdXAvdXRp bHMvbWluZ3cvY3lnY2hlY2suY2MgYi93aW5zdXAvdXRpbHMvbWluZ3cvY3lnY2hlY2suY2MKaW5k ZXggYTlkMmJjMmI2Li44MzJmN2RkOTggMTAwNjQ0Ci0tLSBhL3dpbnN1cC91dGlscy9taW5ndy9j eWdjaGVjay5jYworKysgYi93aW5zdXAvdXRpbHMvbWluZ3cvY3lnY2hlY2suY2MKQEAgLTEzODgs OCArMTM4OCw4IEBAIGR1bXBfc3lzaW5mbyAoKQogICAgICAgaWYgKG9zdmVyc2lvbi5kd01ham9y VmVyc2lvbiA+PSA2KQogCXsKIAkgIEhNT0RVTEUgazMyID0gR2V0TW9kdWxlSGFuZGxlVyAoTCJr ZXJuZWwzMi5kbGwiKTsKLQkgIEJPT0wgKFdJTkFQSSAqR2V0UHJvZHVjdEluZm8pIChEV09SRCwg RFdPUkQsIERXT1JELCBEV09SRCwgUERXT1JEKSA9Ci0JCSAgKEJPT0wgKFdJTkFQSSAqKShEV09S RCwgRFdPUkQsIERXT1JELCBEV09SRCwgUERXT1JEKSkKKwkgIEJPT0wgKCpHZXRQcm9kdWN0SW5m bykgKERXT1JELCBEV09SRCwgRFdPUkQsIERXT1JELCBQRFdPUkQpID0KKwkJICAoQk9PTCAoKiko RFdPUkQsIERXT1JELCBEV09SRCwgRFdPUkQsIFBEV09SRCkpCiAJCSAgR2V0UHJvY0FkZHJlc3Mg KGszMiwgIkdldFByb2R1Y3RJbmZvIik7CiAJICBpZiAob3N2ZXJzaW9uLmR3TWFqb3JWZXJzaW9u ID09IDYpCiAJICAgIHN3aXRjaCAob3N2ZXJzaW9uLmR3TWlub3JWZXJzaW9uKQpkaWZmIC0tZ2l0 IGEvd2luc3VwL3V0aWxzL21pbmd3L3N0cmFjZS5jYyBiL3dpbnN1cC91dGlscy9taW5ndy9zdHJh Y2UuY2MKaW5kZXggMjczMWZkMzkxLi45YmY3MDVhM2YgMTAwNjQ0Ci0tLSBhL3dpbnN1cC91dGls cy9taW5ndy9zdHJhY2UuY2MKKysrIGIvd2luc3VwL3V0aWxzL21pbmd3L3N0cmFjZS5jYwpAQCAt MjU4LDcgKzI1OCw3IEBAIG1ha2VfY29tbWFuZF9saW5lIChsaW5lYnVmICYgb25lX2xpbmUsIGNo YXIgKiphcmd2KQogCiBzdGF0aWMgRFdPUkQgY2hpbGRfcGlkOwogCi1zdGF0aWMgQk9PTCBXSU5B UEkKK3N0YXRpYyBCT09MCiBjdHJsX2MgKERXT1JEKQogewogICBzdGF0aWMgaW50IHRpYyA9IDE7 CkBAIC00MzcsNyArNDM3LDcgQEAgc3lzdCAobG9uZyBsb25nIHQpCiAgIHJldHVybiAmc3Q7CiB9 CiAKLXN0YXRpYyB2b2lkIF9fc3RkY2FsbAorc3RhdGljIHZvaWQKIGhhbmRsZV9vdXRwdXRfZGVi dWdfc3RyaW5nIChEV09SRCBpZCwgTFBWT0lEIHAsIHVuc2lnbmVkIG1hc2ssIEZJTEUgKm9maWxl KQogewogICBpbnQgbGVuOwpkaWZmIC0tZ2l0IGEvd2luc3VwL3V0aWxzL3Byb2ZpbGVyLmNjIGIv d2luc3VwL3V0aWxzL3Byb2ZpbGVyLmNjCmluZGV4IDJiZTdiYWY3NC4uYjQzMDVjYmVhIDEwMDY0 NAotLS0gYS93aW5zdXAvdXRpbHMvcHJvZmlsZXIuY2MKKysrIGIvd2luc3VwL3V0aWxzL3Byb2Zp bGVyLmNjCkBAIC0yMjcsNyArMjI3LDcgQEAgYnVtcF9idWNrZXQgKGNoaWxkICpjLCBzaXplX3Qg cGMpCiB9CiAKIC8qIHByb2ZpbGVyIHJ1bnMgb24gaXRzIG93biB0aHJlYWQ7IGVhY2ggY2hpbGQg aGFzIGEgc2VwYXJhdGUgcHJvZmlsZXIuICovCi1EV09SRCBXSU5BUEkKK0RXT1JECiBwcm9maWxl ciAodm9pZCAqdnApCiB7CiAgIGNoaWxkICpjID0gKGNoaWxkICopIHZwOwpAQCAtNjQyLDcgKzY0 Miw3IEBAIG1ha2VfY29tbWFuZF9saW5lIChsaW5lYnVmICYgb25lX2xpbmUsIGNoYXIgKiphcmd2 KQogICAgIG9uZV9saW5lLmFkZCAoIiIsIDEpOwogfQogCi1CT09MIFdJTkFQSQorQk9PTAogY3Ry bF9jIChEV09SRCkKIHsKICAgc3RhdGljIGludCB0aWMgPSAxOwpkaWZmIC0tZ2l0IGEvd2luc3Vw L3V0aWxzL3BzLmNjIGIvd2luc3VwL3V0aWxzL3BzLmNjCmluZGV4IGI1MTY1NzUzNS4uZTY2YjBm YTU0IDEwMDY0NAotLS0gYS93aW5zdXAvdXRpbHMvcHMuY2MKKysrIGIvd2luc3VwL3V0aWxzL3Bz LmNjCkBAIC02OSw3ICs2OSw3IEBAIHN0YXJ0X3RpbWUgKGV4dGVybmFsX3BpbmZvICpjaGlsZCkK ICNkZWZpbmUgTlNQRVJTRUMgMTAwMDAwMDBMTAogCiAvKiBDb252ZXJ0IGEgV2luMzIgdGltZSB0 byAiVU5JWCIgZm9ybWF0LiAqLwotbG9uZyBfX3N0ZGNhbGwKK2xvbmcKIHRvX3RpbWVfdCAoRklM RVRJTUUgKnB0cikKIHsKICAgLyogQSBmaWxlIHRpbWUgaXMgdGhlIG51bWJlciBvZiAxMDBucyBz aW5jZSBqYW4gMSAxNjAxCmRpZmYgLS1naXQgYS93aW5zdXAvdXRpbHMvcmVndG9vbC5jYyBiL3dp bnN1cC91dGlscy9yZWd0b29sLmNjCmluZGV4IGZkMmRkMDU5MC4uZWQyMTU4NDkzIDEwMDY0NAot LS0gYS93aW5zdXAvdXRpbHMvcmVndG9vbC5jYworKysgYi93aW5zdXAvdXRpbHMvcmVndG9vbC5j YwpAQCAtNTkwLDcgKzU5MCw3IEBAIGNtZF9hZGQgKCkKIH0KIAogZXh0ZXJuICJDIiB7Ci0gIExP TkcgV0lOQVBJICgqcmVnRGVsZXRlS2V5RXgpKEhLRVksIExQQ1dTVFIsIFJFR1NBTSwgRFdPUkQp OworICBMT05HICgqcmVnRGVsZXRlS2V5RXgpKEhLRVksIExQQ1dTVFIsIFJFR1NBTSwgRFdPUkQp OwogfQogCiBpbnQKQEAgLTYwMyw3ICs2MDMsNyBAQCBjbWRfcmVtb3ZlICgpCiAgICAgewogICAg ICAgSE1PRFVMRSBtb2QgPSBMb2FkTGlicmFyeSAoImFkdmFwaTMyLmRsbCIpOwogICAgICAgaWYg KG1vZCkKLQlyZWdEZWxldGVLZXlFeCA9IChMT05HIFdJTkFQSSAoKikoSEtFWSwgTFBDV1NUUiwg UkVHU0FNLCBEV09SRCkpIEdldFByb2NBZGRyZXNzIChtb2QsICJSZWdEZWxldGVLZXlFeFciKTsK KwlyZWdEZWxldGVLZXlFeCA9IChMT05HICgqKShIS0VZLCBMUENXU1RSLCBSRUdTQU0sIERXT1JE KSkgR2V0UHJvY0FkZHJlc3MgKG1vZCwgIlJlZ0RlbGV0ZUtleUV4VyIpOwogICAgIH0KICAgaWYg KHJlZ0RlbGV0ZUtleUV4KQogICAgIHJ2ID0gKCpyZWdEZWxldGVLZXlFeCkgKGtleSwgdmFsdWUs IHdvdzY0LCAwKTsKLS0gCjIuMzYuMQoK --------------0Nt2uJiMQEKC9QXYCzfpurTa--