From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from na01-obe.outbound.protection.outlook.com (mail-cusazon11020022.outbound.protection.outlook.com [52.101.61.22]) by sourceware.org (Postfix) with ESMTPS id 8C0AC3858436 for ; Thu, 1 Sep 2022 22:22:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8C0AC3858436 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=microsoft.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=microsoft.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CnWxeHfCM4n1MDdQssgYKAyRS8yXuQiOuomRE9vatukAgN+q9bGuIBiPKffvar6axCdnbV5nkWpY+Lv22uU1B5XfMSWY8hrvV4XxjhY4hRdk494Z/Rt3KOOFdvUaKreVA6ko+Ckl49vx3F5X2hysWGq2ynjU91QtX9tkVEPlvyO+UIZvJF5chE3W6plcNkMaEsiOJp57CprvxJ7pbZRZ/PZcQrGX6cLr1aUJALpqfvHUhkNaRQUqGOfHRawMlKMUF/8riY1ByYsS8U4MFLDpJppaJc6LL3GG2FK9WV+BJyLdAVv/jKhuzUfjm7yG2HYMFrtB1ZE/GxVRW2gWHrtwIg== 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=Hnkz5PlX17L0Cv/TCpx1Tc47QArTpoqu2pmn0g2e0Uc=; b=MRCniyelQ/n1AKRbv/1qEx386X0cxzFApcryXHCOvE7Wgpd4UETdH7YF7uhIhn3Rypn1+GErD1ZuyFK77UEa7n2aAcmV2iV0LKIWqX8jwu7bPoazb94YxWiE1I3gUaSgUkdhS5LzB7dy2shCQHA/PwEc06Q5Em8A4OBUdzKYOVr2RTi6PneH2wU/6AuHnKUxX10464OJ+2PZFenyMmsoKn/j5CxIfExprGDeYrZ/0Aohf7uIQQxaE7iEUECjUzgf6FBJNxNU3W4tI8Gs2iFuNGy8d7QmmyGqWHO0+YOtJ3eqTPLD+ZFtoDcJGjrRrWpKfqrrBkq2OPIwF2o4FmGBLA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Hnkz5PlX17L0Cv/TCpx1Tc47QArTpoqu2pmn0g2e0Uc=; b=cp2Zl67YZH0SP1NVkV5i4D4SCxYOtxXMR2vl6aIv0BjOGX1VuQJcHpn44g3JBpyP/w4+bJR8hIhWmr45dCocNMveUQr5QxXhrqjqlkEht2yyUX04VIGC7nBSOQaX26uAmMyjiHHjIDjVvbJXvk/hJ661QyqX9axRUHpPgw19U38= Received: from CY5PR21MB3542.namprd21.prod.outlook.com (2603:10b6:930:d::7) by MN0PR21MB3313.namprd21.prod.outlook.com (2603:10b6:208:37e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.4; Thu, 1 Sep 2022 22:22:35 +0000 Received: from CY5PR21MB3542.namprd21.prod.outlook.com ([fe80::2641:fb3d:291c:71f9]) by CY5PR21MB3542.namprd21.prod.outlook.com ([fe80::2641:fb3d:291c:71f9%8]) with mapi id 15.20.5612.006; Thu, 1 Sep 2022 22:22:34 +0000 From: Eugene Rozenfeld To: Eugene Rozenfeld , Jason Merrill , "gcc-patches@gcc.gnu.org" CC: Andi Kleen , Jan Hubicka Subject: RE: [EXTERNAL] Re: [PING][PATCH] Add instruction level discriminator support. Thread-Topic: [EXTERNAL] Re: [PING][PATCH] Add instruction level discriminator support. Thread-Index: Adh8/GsLGopuj0OBTK2TA9TaqhlGjANYT+5wB06iNLAC9aDsgAK1N76AAANchAA= Date: Thu, 1 Sep 2022 22:22:34 +0000 Message-ID: References: <5d9b2795-8a75-e4ea-07b1-856e448064dc@redhat.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ActionId=ba0f090b-fa94-4e6e-9cec-a7b5c6715a1a; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=true; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=Internal; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2022-09-01T20:44:10Z; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microsoft.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CY5PR21MB3542:EE_|MN0PR21MB3313:EE_ x-ms-office365-filtering-correlation-id: e0bfb2f7-538f-4d84-f687-08da8c687801 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BwFqoLyNUphh97OvaVEVGpaIOmQjS9aHcH9M+or3V4WcPayMujVuGF2O0Ji72iFED1lUXccna9QDcc9Wqx8XF02hGwf/ijY0xxYYiYBJarzH/x/5YyXp3djZNRLv3eNFIzbFsvTVOJDdlHOUl/KwrcLUsfh+B8LqBkFJ0Y9h8Zzl7lykfsvHgC2H3AndkytxXht/RylwbM59c+ovKVRIoJcHf011t6x1jfGz2JdXzZ04tgNepXXZXmmAV0p5HYFqNR/M3Hd/SFLDCADtecTAUIzegD/9uCn79Fn+wU83CfJ9LTSD0/Q26b8X4I5EYeiKTPzvD0EZ8WGULvtXLyK/L6vjzI+4TP89/+4dRZYedkEW2MPdCbj2SX7O3STLhbcam7kqU+piX16EDms/izYd/JKr869OWgUWHbwbBveh8cBdfIjnxNeTX35kJeLT1+DSRi1vPkWhKgfvmmKo26O3pBwFxjUD+CQXjD2BgqQPx2PzHqLDtv/zU+wMI/9OJ75PAkbK0UNigTRVeIUBZlJJhfLQZb8/RkEHj8j2st5LZgAPSCQa/d81GMHFqGQdF7pVvXO6rSwAsig3Cboy2q2CVE3R95j9hiDreR7aHbkbIQ5YFyitT8nJwxPgLQhxfvD2ST6bNX94j6psgdsu9bx+Obb8eTQwMO7RH8dp3OJKJjxQdIsDlNddmdjODpCnXpRnCKuSYFYupa4iZaeIiV2LMWDYre6cOQIizLZCw97EZyVfBUlPuiw8mw+xyjQwQK/MXHKSPqqiTjclXAnxK/YQtBUIV36X7e9GNWjiC0SqJlCv7zGEXS0k1GFnoan35JSSkJVTshpzXbSFrYKWEpJSC9uY4Fju/rpXmiS4LD6jsUA= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY5PR21MB3542.namprd21.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(39860400002)(376002)(366004)(136003)(396003)(346002)(451199009)(83380400001)(99936003)(38100700002)(38070700005)(82960400001)(82950400001)(122000001)(76116006)(64756008)(66946007)(66556008)(8676002)(66446008)(66476007)(4326008)(316002)(54906003)(110136005)(2906002)(8990500004)(8936002)(52536014)(5660300002)(53546011)(9686003)(2940100002)(7696005)(186003)(6506007)(966005)(10290500003)(41300700001)(71200400001)(478600001)(86362001)(55016003)(33656002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?gW76B0KHv80Fk1UHn4Z9KG2NUj28i3Am0p0NY299taJzcXxrzF1uXGm9c0QY?= =?us-ascii?Q?nhgXHuwWDxiNu8ib9RBttg5zeVAg8yP5PxNe2vEhHaZSedo7KATEiIGReLkt?= =?us-ascii?Q?29rCwZWXeohAeDxPG9OJENmroX3S6hwTPN0DMtjw9vN6CKocHa/SusJQ/aEU?= =?us-ascii?Q?erYGz7QkCdhl8sGezFcu+nnW2ltTuG35uEJE8/9HallRSg5NgoYZegjfMSBz?= =?us-ascii?Q?QErtrmkS7q1LQ/SCpOvji61u2QVA8bhZ2iduvuKvB2VbkmkccYrJHVL1kjj2?= =?us-ascii?Q?sVJIG6uAYgK1kBaGYJEqNOVqvEJ2WrQjWhBtROExE6t3aonjItEXQ6s82pac?= =?us-ascii?Q?xml0qqjuhhtE9xT1yRZVL52phQIzNYF/2I1CClBkWZvLmO4Doxc+gJ1NK5xl?= =?us-ascii?Q?6EtnVJISaTZLL5abgKsSTrqfJ1MxyAstM1gSjd0hj+QJrR22O9yaFsomSxHA?= =?us-ascii?Q?G8EpcKv1D8Qr+vh66qfTgoAGVY5J4vTF/MYZSK1WYhkfvQMxlYiMHMSag1GK?= =?us-ascii?Q?jVBzWvHuUZ9RQkXnq6Q5xrrbkPBqbFxqe8Lk/lsx2kciWXIfq6u1+nheHQzb?= =?us-ascii?Q?zukbGxLr+F0o7wnYxQQNS9WbWYDa1eK++vfuMSWC4QsY/pMBQUz2PDVJhMI5?= =?us-ascii?Q?6FUnNvty6e5xCsD4Y8JC8exkUwQfogYmrxlT1P1DvOBlZYh+Szs3dwUnXgzv?= =?us-ascii?Q?6sbm3Qd8g80HUE32ho3QIeh6oYTnTaBnT6PVIpHzTF5TNPDTXPJf+XefOFjd?= =?us-ascii?Q?UdZlRrbdouxyXXCM8l2Gg+MGrnb2RuSbSeZhTEfs+NmzuKvlSbMgDp+e0RF8?= =?us-ascii?Q?iQB49v/gek7858hop9c/JrZ2W1N3hJ6p7FEpGxLC7k84i71w26dhSVTeCpft?= =?us-ascii?Q?fuFsCIrDssPrZpus5kbdsh1ScUEaoEg3GlrTvH4hYnFRjft6QS8nD5SAVfHF?= =?us-ascii?Q?WH+XyWvhlcQVNWV6zd1dU2rACRlQUv3HN9YTFiOV26EnM8NBDGRwpS1HG0zC?= =?us-ascii?Q?HyOz2LW4fG5QApq3XJbjqCQ6xhMnL7aUZKI2CuZIIHwIH7SHuRgsZ0FYtV5J?= =?us-ascii?Q?PnFlsRl1kOhroUSLXVAIbYgW/yp8kJG1cPm7SDSNCtXMSwqotFZjBpprhFX8?= =?us-ascii?Q?uqRW3SGm14FyeyMCmlqGifTxLewiP2tWeQg2ezXohWbSrMbzxhkG6uykVRy+?= =?us-ascii?Q?ZCyjrg+tixgHmeJsO2Ap6FguSax49UG/aM1o5MbItVG2Z1fldTmIZHmk3ghy?= =?us-ascii?Q?PY/RkfskFtiIlEHv68qhcf3jREsfdz7iNsQEwooxt5hkI1Eimd95z8Q4yFBN?= =?us-ascii?Q?gWVgW7VJ3Yze5xkg84Ma/Lof8OwBmdFJ2/BL6sI5iH4qghvgZDy0eaZ1Ev7b?= =?us-ascii?Q?GAZvyRMh3ByPtXoSGFpBN9RrCX8kYyXxAXmKcyEzTkTS+IscWvjE4eRVpy0V?= =?us-ascii?Q?8EyDvnhY+5rcDqD6W9TTmMHmwLD2JAiDo7godjbZ/qR+J5P3raIXiaw3aXRR?= =?us-ascii?Q?a1XrOWb8xglSnQEV7YGFU/JrnFCVMjp/K891afN6QyK5XER+QUfMnLcJM7PJ?= =?us-ascii?Q?Z73Alq8b1SXYUkPlzyXuiQ81tg0VZaCXVA/tE5jrxbc0Py9nMOz5roVQ/3QK?= =?us-ascii?Q?5aCHYrzEEjK3aPsxkgaQsWcd/9+ynf6swK/88zSIeKXv?= Content-Type: multipart/mixed; boundary="_002_CY5PR21MB354266BE8C1AD34D9B2B7B96917B9CY5PR21MB3542namp_" MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR21MB3313 X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO,KAM_LOTSOFHASH,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_002_CY5PR21MB354266BE8C1AD34D9B2B7B96917B9CY5PR21MB3542namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Jason, I made another small change in addressing your feedback (attached). Thanks, Eugene -----Original Message----- From: Gcc-patches = On Behalf Of Eugene Rozenfeld via Gcc-patches Sent: Thursday, September 01, 2022 1:49 PM To: Jason Merrill ; gcc-patches@gcc.gnu.org Cc: Andi Kleen ; Jan Hubicka Subject: RE: [EXTERNAL] Re: [PING][PATCH] Add instruction level discriminat= or support. Jason, Thank you for your review. You are correct, we only need to check has_discr= iminator for the statement that's on the same line. I updated the patch (attached). Thanks, Eugene -----Original Message----- From: Jason Merrill Sent: Thursday, August 18, 2022 6:55 PM To: Eugene Rozenfeld ; gcc-patches@gcc.gnu.= org Cc: Andi Kleen ; Jan Hubicka Subject: [EXTERNAL] Re: [PING][PATCH] Add instruction level discriminator s= upport. On 8/3/22 17:25, Eugene Rozenfeld wrote: > One more ping for this patch > https://nam06.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2Fgcc. > gnu.org%2Fpipermail%2Fgcc-patches%2F2022-June%2F596065.html&data=3D0 > 5%7C01%7Ceugene.rozenfeld%40microsoft.com%7C3e9ebe6dd5b14fe4471808da81 > 85dc68%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637964709325691951 > %7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6I > k1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=3DK%2BMx6jelnED3n%2Be2dT > DYAPOqZZ8Zlsd2%2FyPJ0qib5%2FM%3D&reserved=3D0 >=20 > CC Jason since this changes discriminators emitted in dwarf. >=20 > Thanks, >=20 > Eugene >=20 > -----Original Message----- > From: Eugene Rozenfeld > Sent: Monday, June 27, 2022 12:45 PM > To: gcc-patches@gcc.gnu.org; Andi Kleen ; Jan=20 > Hubicka > Subject: RE: [PING][PATCH] Add instruction level discriminator support. >=20 > Another ping for https://nam06.safelinks.protection.outlook.com/?url=3Dht= tps%3A%2F%2Fgcc.gnu.org%2Fpipermail%2Fgcc-patches%2F2022-June%2F596065.html= &data=3D05%7C01%7CEugene.Rozenfeld%40microsoft.com%7Cf217ebc45428465857= bd08da8c5b6fb2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637976621612503= 972%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1= haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=3Db0kTdzWRyiwdtcEFasyNlKv1vj%= 2FqwnipN3776C7xWcg%3D&reserved=3D0 . >=20 > I got a review from Andi (https://nam06.safelinks.protection.outlook.com/= ?url=3Dhttps%3A%2F%2Fgcc.gnu.org%2Fpipermail%2Fgcc-patches%2F2022-June%2F59= 6549.html&data=3D05%7C01%7CEugene.Rozenfeld%40microsoft.com%7Cf217ebc45= 428465857bd08da8c5b6fb2%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637976= 621612503972%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLC= JBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=3DqxjBUCcGiKXtR4%2BO= Jq%2FFQN11C2M6BBurTguOBOjWJDw%3D&reserved=3D0) but I also need a review= from someone who can approve the changes. >=20 > Thanks, >=20 > Eugene >=20 > -----Original Message----- > From: Eugene Rozenfeld > Sent: Friday, June 10, 2022 12:03 PM > To: gcc-patches@gcc.gnu.org; Andi Kleen ; Jan=20 > Hubicka > Subject: [PING][PATCH] Add instruction level discriminator support. >=20 > Hello, >=20 > I'd like to ping this patch:=20 > https://nam06.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2Fgcc. > gnu.org%2Fpipermail%2Fgcc-patches%2F2022-June%2F596065.html&data=3D0 > 5%7C01%7Ceugene.rozenfeld%40microsoft.com%7C3e9ebe6dd5b14fe4471808da81 > 85dc68%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637964709325691951 > %7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6I > k1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=3DK%2BMx6jelnED3n%2Be2dT > DYAPOqZZ8Zlsd2%2FyPJ0qib5%2FM%3D&reserved=3D0 >=20 > Thanks, >=20 > Eugene >=20 > -----Original Message----- > From: Gcc-patches > On Behalf Of=20 > Eugene Rozenfeld via Gcc-patches > Sent: Thursday, June 02, 2022 12:22 AM > To: gcc-patches@gcc.gnu.org; Andi Kleen ; Jan=20 > Hubicka > Subject: [EXTERNAL] [PATCH] Add instruction level discriminator support. >=20 > This is the first in a series of patches to enable discriminator support = in AutoFDO. >=20 > This patch switches to tracking discriminators per statement/instruction = instead of per basic block. Tracking per basic block was problematic since = not all statements in a basic block needed a discriminator and, also, later= optimizations could move statements between basic blocks making correlatio= n during AutoFDO compilation unreliable. Tracking per statement also allows= us to assign different discriminators to multiple function calls in the sa= me basic block. A subsequent patch will add that support. >=20 > The idea of this patch is based on commit=20 > 4c311d95cf6d9519c3c20f641cc77af7df491fdf > by Dehao Chen in vendors/google/heads/gcc-4_8 but uses a slightly differe= nt approach. In Dehao's work special (normally unused) location ids and sid= e tables were used to keep track of locations with discriminators. Things h= ave changed since then and I don't think we have unused location ids anymor= e. Instead, I made discriminators a part of ad-hoc locations. >=20 > The difference from Dehao's work also includes support for discriminator = reading/writing in lto streaming and in modules. >=20 > Tested on x86_64-pc-linux-gnu. > @@ -1190,12 +1217,12 @@ assign_discriminators (void) > || (last && same_line_p (locus, &locus_e, > gimple_location (last)))) > { > - if (e->dest->discriminator !=3D 0 && bb->discriminator =3D=3D 0) > - bb->discriminator > - =3D next_discriminator_for_locus (locus_e.line); > + if (((first && has_discriminator (gimple_location (first))) > + || (last && has_discriminator (gimple_location (last)))) I think you want to check has_discriminator only for the one of first or la= st that we find to have the same line as locus above? Incidentally, I wonder why we ignore column number here, but that's not an = issue for this patch. Jason --_002_CY5PR21MB354266BE8C1AD34D9B2B7B96917B9CY5PR21MB3542namp_ Content-Type: application/octet-stream; name="0001-Add-instruction-level-discriminator-support.patch" Content-Description: 0001-Add-instruction-level-discriminator-support.patch Content-Disposition: attachment; filename="0001-Add-instruction-level-discriminator-support.patch"; size=32304; creation-date="Thu, 01 Sep 2022 22:21:27 GMT"; modification-date="Thu, 01 Sep 2022 22:22:34 GMT" Content-Transfer-Encoding: base64 RnJvbSA4ZDdjYmNmOTQ3MWFjNzZmMzAwNTM1ZjViNjI2MmRiMzgxOThhNzkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFdWdlbmUgUm96ZW5mZWxkIDxlcm96ZW5AbWljcm9zb2Z0LmNv bT4KRGF0ZTogVGh1LCAyMSBBcHIgMjAyMiAxNTo0MjoxNSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hd IEFkZCBpbnN0cnVjdGlvbiBsZXZlbCBkaXNjcmltaW5hdG9yIHN1cHBvcnQuCgpUaGlzIGlzIHRo ZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBwYXRjaGVzIHRvIGVuYWJsZSBkaXNjcmltaW5hdG9yIHN1 cHBvcnQKaW4gQXV0b0ZETy4KClRoaXMgcGF0Y2ggc3dpdGNoZXMgdG8gdHJhY2tpbmcgZGlzY3Jp bWluYXRvcnMgcGVyIHN0YXRlbWVudC9pbnN0cnVjdGlvbgppbnN0ZWFkIG9mIHBlciBiYXNpYyBi bG9jay4gVHJhY2tpbmcgcGVyIGJhc2ljIGJsb2NrIHdhcyBwcm9ibGVtYXRpYyBzaW5jZQpub3Qg YWxsIHN0YXRlbWVudHMgaW4gYSBiYXNpYyBibG9jayBuZWVkZWQgYSBkaXNjcmltaW5hdG9yIGFu ZCwgYWxzbywgbGF0ZXIKb3B0aW1pemF0aW9ucyBjb3VsZCBtb3ZlIHN0YXRlbWVudHMgYmV0d2Vl biBiYXNpYyBibG9ja3MgbWFraW5nIGNvcnJlbGF0aW9uCmR1cmluZyBBdXRvRkRPIGNvbXBpbGF0 aW9uIHVucmVsaWFibGUuIFRyYWNraW5nIHBlciBzdGF0ZW1lbnQgYWxzbyBhbGxvd3MKdXMgdG8g YXNzaWduIGRpZmZlcmVudCBkaXNjcmltaW5hdG9ycyB0byBtdWx0aXBsZSBmdW5jdGlvbiBjYWxs cyBpbiB0aGUgc2FtZQpiYXNpYyBibG9jay4gQSBzdWJzZXF1ZW50IHBhdGNoIHdpbGwgYWRkIHRo YXQgc3VwcG9ydC4KClRoZSBpZGVhIG9mIHRoaXMgcGF0Y2ggaXMgYmFzZWQgb24gY29tbWl0IDRj MzExZDk1Y2Y2ZDk1MTljM2MyMGY2NDFjYzc3YWY3ZGY0OTFmZGYKYnkgRGVoYW8gQ2hlbiBpbiB2 ZW5kb3JzL2dvb2dsZS9oZWFkcy9nY2MtNF84IGJ1dCB1c2VzIGEgc2xpZ2h0bHkgZGlmZmVyZW50 CmFwcHJvYWNoLiBJbiBEZWhhbydzIHdvcmsgc3BlY2lhbCAobm9ybWFsbHkgdW51c2VkKSBsb2Nh dGlvbiBpZHMgYW5kIHNpZGUgdGFibGVzCndlcmUgdXNlZCB0byBrZWVwIHRyYWNrIG9mIGxvY2F0 aW9ucyB3aXRoIGRpc2NyaW1pbmF0b3JzLiBUaGluZ3MgaGF2ZSBjaGFuZ2VkCnNpbmNlIHRoZW4g YW5kIEkgZG9uJ3QgdGhpbmsgd2UgaGF2ZSB1bnVzZWQgbG9jYXRpb24gaWRzIGFueW1vcmUuIElu c3RlYWQsCkkgbWFkZSBkaXNjcmltaW5hdG9ycyBhIHBhcnQgb2YgYWQtaG9jIGxvY2F0aW9ucy4K ClRoZSBkaWZmZXJlbmNlIGZyb20gRGVoYW8ncyB3b3JrIGFsc28gaW5jbHVkZXMgc3VwcG9ydCBm b3IgZGlzY3JpbWluYXRvcgpyZWFkaW5nL3dyaXRpbmcgaW4gbHRvIHN0cmVhbWluZyBhbmQgaW4g bW9kdWxlcy4KClRlc3RlZCBvbiB4ODZfNjQtcGMtbGludXgtZ251LgoKZ2NjL0NoYW5nZUxvZzoK CgkqIGJhc2ljLWJsb2NrLmg6IFJlbW92ZSBkaXNjcmltaW5hdG9yIGZyb20gYmFzaWMgYmxvY2tz LgoJKiBjZmdob29rcy5jYyAoc3BsaXRfYmxvY2tfMSk6IFJlbW92ZSBkaXNjcmltaW5hdG9yIGZy b20gYmFzaWMgYmxvY2tzLgoJKiBjcC9tb2R1bGUuY2MgKHdyaXRlX2xvY2F0aW9uKTogV3JpdGUg ZGlzY3JpbWluYXRvci4KCShyZWFkX2xvY2F0aW9uKTogUmVhZCBkaXNjcmltaW5hdG9yLgoJKiBm aW5hbC5jYyAoZmluYWxfc3RhcnRfZnVuY3Rpb25fMSk6IFN3aXRjaCBmcm9tIHBlci1iYiB0byBw ZXIgc3RhdGVtZW50CglkaXNjcmltaW5hdG9yLgoJKGZpbmFsX3NjYW5faW5zbl8xKTogRG9uJ3Qg a2VlcCB0cmFjayBvZiBiYXNpYyBibG9jayBkaXNjcmltaW5hdG9ycy4KCShjb21wdXRlX2Rpc2Ny aW1pbmF0b3IpOiBTd2l0Y2ggZnJvbSBiYXNpYyBibG9jayBkaXNjcmltaW5hdG9ycyB0bwoJaW5z dHJ1Y3Rpb24gZGlzY3JpbWluYXRvcnMuCgkoaW5zbl9kaXNjcmltaW5hdG9yKTogTmV3IGZ1bmN0 aW9uIHRvIHJldHVybiBpbnN0cnVjdGlvbiBkaXNjcmltaW5hdG9yLgoJKG5vdGljZV9zb3VyY2Vf bGluZSk6IFVzZSBpbnNuX2Rpc2NyaW1pbmF0b3IuCgkqIGdpbXBsZS1wcmV0dHktcHJpbnQuY2Mg KGR1bXBfZ2ltcGxlX2JiX2hlYWRlcik6IFJlbW92ZSBkdW1waW5nIG9mCgliYXNpYyBibG9jayBk aXNjcmltaW5hdG9ycy4KCSogZ2ltcGxlLXN0cmVhbWVyLWluLmNjIChpbnB1dF9iYik6IFJlbW92 ZSByZWFkaW5nIG9mIGJhc2ljIGJsb2NrCglkaXNjcmltaW5hdG9ycy4KCSogZ2ltcGxlLXN0cmVh bWVyLW91dC5jYyAob3V0cHV0X2JiKTogUmVtb3ZlIHdyaXRpbmcgb2YgYmFzaWMgYmxvY2sKCWRp c2NyaW1pbmF0b3JzLgoJKiBpbnB1dC5jYyAobWFrZV9sb2NhdGlvbik6IFBhc3MgMCBkaXNjcmlt aW5hdG9yIHRvIENPTUJJTkVfTE9DQVRJT05fREFUQS4KCShsb2NhdGlvbl93aXRoX2Rpc2NyaW1p bmF0b3IpOiBOZXcgZnVuY3Rpb24gdG8gY29tYmluZSBsb2N1cyB3aXRoCglhIGRpc2NyaW1pbmF0 b3IuCgkoaGFzX2Rpc2NyaW1pbmF0b3IpOiBOZXcgZnVuY3Rpb24gdG8gY2hlY2sgaWYgYSBsb2Nh dGlvbiBoYXMgYSBkaXNjcmltaW5hdG9yLgoJKGdldF9kaXNjcmltaW5hdG9yX2Zyb21fbG9jdXMp OiBOZXcgZnVuY3Rpb24gdG8gZ2V0IHRoZSBkaXNjcmltaW5hdG9yCglmcm9tIGEgbG9jYXRpb24u CgkqIGlucHV0Lmg6IERlY2xhcmF0aW9ucyBvZiBuZXcgZnVuY3Rpb25zIGFuZCBkZWZpbml0aW9u IG9mCglMT0NBVElPTl9ESVNDUklNSU5BVE9SLgoJKiBsdG8tc3RyZWFtZXItaW4uY2MgKGNtcF9s b2MpOiBVc2UgZGlzY3JpbWluYXRvcnMgaW4gbG9jYXRpb24gY29tcGFyaXNvbi4KCShhcHBseV9s b2NhdGlvbl9jYWNoZSk6IEtlZXAgdHJhY2sgb2YgY3VycmVudCBkaXNjcmltaW5hdG9yLgoJKGlu cHV0X2xvY2F0aW9uX2FuZF9ibG9jayk6IFJlYWQgZGlzY3JpbWluYXRvciBmcm9tIHN0cmVhbS4K CSogbHRvLXN0cmVhbWVyLW91dC5jYyAoY2xlYXJfbGluZV9pbmZvKTogU2V0IGN1cnJlbnQgZGlz Y3JpbWluYXRvciB0bwoJVUlOVF9NQVguCgkobHRvX291dHB1dF9sb2NhdGlvbl8xKTogV3JpdGUg ZGlzY3JpbWluYXRvciB0byBzdHJlYW0uCgkqIGx0by1zdHJlYW1lci5oOiBBZGQgZGlzY3JpbWlu YXRvciB0byBjYWNoZWRfbG9jYXRpb24uCglBZGQgY3VycmVudF9kaXNjciB0byBsdG9fbG9jYXRp b25fY2FjaGUuCglBZGQgY3VycmVudF9kaXNjciB0byBvdXRwdXRfYmxvY2suCgkqIHByaW50LXJ0 bC5jYyAocHJpbnRfcnR4X29wZXJhbmRfY29kZV9pKTogUHJpbnQgZGlzY3JpbWluYXRvci4KCSog cnRsLmg6IEFkZCBleHRlcm4gZGVjbGFyYXRpb24gb2YgaW5zbl9kaXNjcmltaW5hdG9yLgoJKiB0 cmVlLWNmZy5jYyAoYXNzaWduX2Rpc2NyaW1pbmF0b3IpOiBOZXcgZnVuY3Rpb24gdG8gYXNzaWdu IGEgdW5pcXVlCglkaXNjcmltaW5hdG9yIHZhbHVlIHRvIGFsbCBzdGF0ZW1lbnRzIGluIGEgYmFz aWMgYmxvY2sgdGhhdCBoYXZlIHRoZSBnaXZlbgoJbGluZSBudW1iZXIuCgkoYXNzaWduX2Rpc2Ny aW1pbmF0b3JzKTogQXNzaWduIGRpc2NyaW1pbmF0b3JzIHRvIHN0YXRlbWVudCBsb2NhdGlvbnMu CgkqIHRyZWUtcHJldHR5LXByaW50LmNjIChkdW1wX2xvY2F0aW9uKTogRHVtcCBkaXNjcmltaW5h dG9ycy4KCSogdHJlZS5jYyAoc2V0X2Jsb2NrKTogUHJlc2VydmUgZGlzY3JpbWluYXRvciB3aGVu IHNldHRpbmcgYmxvY2suCgkoc2V0X3NvdXJjZV9yYW5nZSk6IFByZXNlcnZlIGRpc2NyaW1pbmF0 b3Igd2hlbiBzZXR0aW5nIHNvdXJjZSByYW5nZS4KCmxpYmNwcC9DaGFuZ2VMb2c6CgoJKiBpbmNs dWRlL2xpbmUtbWFwLmg6IEFkZCBkaXNjcmltaW5hdG9yIHRvIGxvY2F0aW9uX2FkaG9jX2RhdGEu CgkoZ2V0X2NvbWJpbmVkX2FkaG9jX2xvYyk6IEFkZCBkaXNjcmltaW5hdG9yIHBhcmFtZXRlci4K CShnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2FkaG9jX2xvYyk6IEFkZCBleHRlcm5hbCBkZWNsYXJh dGlvbi4KCShnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2xvYyk6IEFkZCBleHRlcm5hbCBkZWNsYXJh dGlvbi4KCShDT01CSU5FX0xPQ0FUSU9OX0RBVEEpOiBBZGQgZGlzY3JpbWluYXRvciBwYXJhbWV0 ZXIuCgkqIGxleC5jYyAoZ2V0X2xvY2F0aW9uX2Zvcl9ieXRlX3JhbmdlX2luX2N1cl9saW5lKSBQ YXNzIDAgZGlzY3JpbWluYXRvcgoJaW4gYSBjYWxsIHRvIENPTUJJTkVfTE9DQVRJT05fREFUQS4K CSh3YXJuX2Fib3V0X25vcm1hbGl6YXRpb24pOiBQYXNzIDAgZGlzY3JpbWluYXRvciBpbiBhIGNh bGwgdG8KCUNPTUJJTkVfTE9DQVRJT05fREFUQS4KCShfY3BwX2xleF9kaXJlY3QpOiBQYXNzIDAg ZGlzY3JpbWluYXRvciBpbiBhIGNhbGwgdG8KCUNPTUJJTkVfTE9DQVRJT05fREFUQS4KCSogbGlu ZS1tYXAuY2MgKGxvY2F0aW9uX2FkaG9jX2RhdGFfaGFzaCk6IFVzZSBkaXNjcmltaW5hdG9yIGNv bXB1dGUKCWxvY2F0aW9uX2FkaG9jX2RhdGEgaGFzaC4KCShsb2NhdGlvbl9hZGhvY19kYXRhX2Vx KTogVXNlIGRpc2NyaW1pbmF0b3Igd2hlbiBjb21wYXJpbmcKCWxvY2F0aW9uX2FkaG9jX2RhdGEu CgkoY2FuX2JlX3N0b3JlZF9jb21wYWN0bHlfcCk6IENoZWNrIGRpc2NyaW1pbmF0b3IgdG8gZGV0 ZXJtaW5lCgljb21wYWN0IHN0b3JhZ2UuCgkoZ2V0X2NvbWJpbmVkX2FkaG9jX2xvYyk6IEFkZCBk aXNjcmltaW5hdG9yIHBhcmFtZXRlci4KCShnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2FkaG9jX2xv Yyk6IE5ldyBmdW5jdGlvbiB0byBnZXQgdGhlIGRpc2NyaW1pbmF0b3IKCWZyb20gYW4gYWQtaG9j IGxvY2F0aW9uLgoJKGdldF9kaXNjcmltaW5hdG9yX2Zyb21fbG9jKTogTmV3IGZ1bmN0aW9uIHRv IGdldCB0aGUgZGlzY3JpbWluYXRvcgoJZnJvbSBhIGxvY2F0aW9uLgoKZ2NjL3Rlc3RzdWl0ZS9D aGFuZ2VMb2c6CgoJKiBjLWMrKy1jb21tb24vdWJzYW4vcHI4NTIxMy5jOiBQYXNzIC1nbm8tc3Rh dGVtZW50LWZyb250aWVycy4KLS0tCiBnY2MvYmFzaWMtYmxvY2suaCAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgNSAtLS0KIGdjYy9jZmdob29rcy5jYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAxIC0KIGdjYy9jcC9tb2R1bGUuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICA1ICsrLQogZ2NjL2ZpbmFsLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjYg KysrKysrLS0tLS0KIGdjYy9naW1wbGUtcHJldHR5LXByaW50LmNjICAgICAgICAgICAgICAgICB8 ICAyIC0KIGdjYy9naW1wbGUtc3RyZWFtZXItaW4uY2MgICAgICAgICAgICAgICAgICB8ICAxIC0K IGdjYy9naW1wbGUtc3RyZWFtZXItb3V0LmNjICAgICAgICAgICAgICAgICB8ICAxIC0KIGdjYy9p bnB1dC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDM2ICsrKysrKysrKysrKysr Ky0KIGdjYy9pbnB1dC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKwog Z2NjL2x0by1zdHJlYW1lci1pbi5jYyAgICAgICAgICAgICAgICAgICAgIHwgMjEgKysrKysrKyst CiBnY2MvbHRvLXN0cmVhbWVyLW91dC5jYyAgICAgICAgICAgICAgICAgICAgfCAgNyArKysKIGdj Yy9sdG8tc3RyZWFtZXIuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzICsrCiBnY2MvcHJp bnQtcnRsLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKwogZ2NjL3J0bC5oICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vdWJzYW4vcHI4NTIxMy5jIHwgIDcgKystCiBnY2MvdHJlZS1jZmcuY2MgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCA1MCArKysrKysrKysrKysrKysrKystLS0tCiBnY2MvdHJl ZS1wcmV0dHktcHJpbnQuY2MgICAgICAgICAgICAgICAgICAgfCAgNiArKysKIGdjYy90cmVlLmNj ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEwICsrKy0tCiBsaWJjcHAvaW5jbHVk ZS9saW5lLW1hcC5oICAgICAgICAgICAgICAgICAgfCAxMCArKystLQogbGliY3BwL2xleC5jYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDcgKy0tCiBsaWJjcHAvbGluZS1tYXAuY2Mg ICAgICAgICAgICAgICAgICAgICAgICAgfCAzOCArKysrKysrKysrKysrLS0tCiAyMSBmaWxlcyBj aGFuZ2VkLCAxOTMgaW5zZXJ0aW9ucygrKSwgNTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv Z2NjL2Jhc2ljLWJsb2NrLmggYi9nY2MvYmFzaWMtYmxvY2suaAppbmRleCBjOWQxZmM5MWJiYi4u MWVhZTAzZDFhY2EgMTAwNjQ0Ci0tLSBhL2djYy9iYXNpYy1ibG9jay5oCisrKyBiL2djYy9iYXNp Yy1ibG9jay5oCkBAIC0xNDgsMTEgKzE0OCw2IEBAIHN0cnVjdCBHVFkoKGNoYWluX25leHQgKCIl aC5uZXh0X2JiIiksIGNoYWluX3ByZXYgKCIlaC5wcmV2X2JiIikpKSBiYXNpY19ibG9ja19kCiAK ICAgLyogRXhwZWN0ZWQgbnVtYmVyIG9mIGV4ZWN1dGlvbnM6IGNhbGN1bGF0ZWQgaW4gcHJvZmls ZS5jYy4gICovCiAgIHByb2ZpbGVfY291bnQgY291bnQ7Ci0KLSAgLyogVGhlIGRpc2NyaW1pbmF0 b3IgZm9yIHRoaXMgYmxvY2suICBUaGUgZGlzY3JpbWluYXRvciBkaXN0aW5ndWlzaGVzCi0gICAg IGFtb25nIHNldmVyYWwgYmFzaWMgYmxvY2tzIHRoYXQgc2hhcmUgYSBjb21tb24gbG9jdXMsIGFs bG93aW5nIGZvcgotICAgICBtb3JlIGFjY3VyYXRlIHNhbXBsZS1iYXNlZCBwcm9maWxpbmcuICAq LwotICBpbnQgZGlzY3JpbWluYXRvcjsKIH07CiAKIC8qIFRoaXMgZW5zdXJlcyB0aGF0IHN0cnVj dCBnaW1wbGVfYmJfaW5mbyBpcyBzbWFsbGVyIHRoYW4KZGlmZiAtLWdpdCBhL2djYy9jZmdob29r cy5jYyBiL2djYy9jZmdob29rcy5jYwppbmRleCBjNmFjOTUzMmNiOC4uMjlkZWQ1NzA3MzQgMTAw NjQ0Ci0tLSBhL2djYy9jZmdob29rcy5jYworKysgYi9nY2MvY2ZnaG9va3MuY2MKQEAgLTU0MSw3 ICs1NDEsNiBAQCBzcGxpdF9ibG9ja18xIChiYXNpY19ibG9jayBiYiwgdm9pZCAqaSkKICAgICBy ZXR1cm4gTlVMTDsKIAogICBuZXdfYmItPmNvdW50ID0gYmItPmNvdW50OwotICBuZXdfYmItPmRp c2NyaW1pbmF0b3IgPSBiYi0+ZGlzY3JpbWluYXRvcjsKIAogICBpZiAoZG9tX2luZm9fYXZhaWxh YmxlX3AgKENESV9ET01JTkFUT1JTKSkKICAgICB7CmRpZmYgLS1naXQgYS9nY2MvY3AvbW9kdWxl LmNjIGIvZ2NjL2NwL21vZHVsZS5jYwppbmRleCBmMjdmNGQwOTFlNS4uNzI2NGJjZWM0MGIgMTAw NjQ0Ci0tLSBhL2djYy9jcC9tb2R1bGUuY2MKKysrIGIvZ2NjL2NwL21vZHVsZS5jYwpAQCAtMTU3 NjQsNiArMTU3NjQsOCBAQCBtb2R1bGVfc3RhdGU6OndyaXRlX2xvY2F0aW9uIChieXRlc19vdXQg JnNlYywgbG9jYXRpb25fdCBsb2MpCiAJcmFuZ2UubV9zdGFydCA9IFVOS05PV05fTE9DQVRJT047 CiAgICAgICB3cml0ZV9sb2NhdGlvbiAoc2VjLCByYW5nZS5tX3N0YXJ0KTsKICAgICAgIHdyaXRl X2xvY2F0aW9uIChzZWMsIHJhbmdlLm1fZmluaXNoKTsKKyAgICAgIHVuc2lnbmVkIGRpc2NyaW1p bmF0b3IgPSBnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2FkaG9jX2xvYyAobGluZV90YWJsZSwgbG9j KTsKKyAgICAgIHNlYy51IChkaXNjcmltaW5hdG9yKTsKICAgICB9CiAgIGVsc2UgaWYgKGxvYyA+ PSBMSU5FTUFQU19NQUNST19MT1dFU1RfTE9DQVRJT04gKGxpbmVfdGFibGUpKQogICAgIHsKQEAg LTE1ODg5LDggKzE1ODkxLDkgQEAgbW9kdWxlX3N0YXRlOjpyZWFkX2xvY2F0aW9uIChieXRlc19p biAmc2VjKSBjb25zdAogCWlmIChyYW5nZS5tX3N0YXJ0ID09IFVOS05PV05fTE9DQVRJT04pCiAJ ICByYW5nZS5tX3N0YXJ0ID0gbG9jdXM7CiAJcmFuZ2UubV9maW5pc2ggPSByZWFkX2xvY2F0aW9u IChzZWMpOworCXVuc2lnbmVkIGRpc2NyaW1pbmF0b3IgPSBzZWMudSAoKTsKIAlpZiAobG9jdXMg IT0gbG9jICYmIHJhbmdlLm1fc3RhcnQgIT0gbG9jICYmIHJhbmdlLm1fZmluaXNoICE9IGxvYykK LQkgIGxvY3VzID0gZ2V0X2NvbWJpbmVkX2FkaG9jX2xvYyAobGluZV90YWJsZSwgbG9jdXMsIHJh bmdlLCBOVUxMKTsKKwkgIGxvY3VzID0gZ2V0X2NvbWJpbmVkX2FkaG9jX2xvYyAobGluZV90YWJs ZSwgbG9jdXMsIHJhbmdlLCBOVUxMLCBkaXNjcmltaW5hdG9yKTsKICAgICAgIH0KICAgICAgIGJy ZWFrOwogCmRpZmYgLS1naXQgYS9nY2MvZmluYWwuY2MgYi9nY2MvZmluYWwuY2MKaW5kZXggMDM1 Mjc4NmU0OWIuLjQwMjMxMTZkOThlIDEwMDY0NAotLS0gYS9nY2MvZmluYWwuY2MKKysrIGIvZ2Nj L2ZpbmFsLmNjCkBAIC0xMjYsMTggKzEyNiwxMCBAQCBzdGF0aWMgaW50IGxhc3RfY29sdW1ubnVt OwogLyogRGlzY3JpbWluYXRvciB3cml0dGVuIHRvIGFzc2VtYmx5LiAgKi8KIHN0YXRpYyBpbnQg bGFzdF9kaXNjcmltaW5hdG9yOwogCi0vKiBEaXNjcmltaW5hdG9yIHRvIGJlIHdyaXR0ZW4gdG8g YXNzZW1ibHkgZm9yIGN1cnJlbnQgaW5zdHJ1Y3Rpb24uCisvKiBDb21wdXRlIGRpc2NyaW1pbmF0 b3IgdG8gYmUgd3JpdHRlbiB0byBhc3NlbWJseSBmb3IgY3VycmVudCBpbnN0cnVjdGlvbi4KICAg IE5vdGU6IGFjdHVhbCB1c2FnZSBkZXBlbmRzIG9uIGxvY19kaXNjcmltaW5hdG9yX2tpbmQgc2V0 dGluZy4gICovCi1zdGF0aWMgaW50IGRpc2NyaW1pbmF0b3I7CiBzdGF0aWMgaW5saW5lIGludCBj b21wdXRlX2Rpc2NyaW1pbmF0b3IgKGxvY2F0aW9uX3QgbG9jKTsKIAotLyogRGlzY3JpbWluYXRv ciBpZGVudGlmeWluZyBjdXJyZW50IGJhc2ljIGJsb2NrIGFtb25nIG90aGVycyBzaGFyaW5nCi0g ICB0aGUgc2FtZSBsb2N1cy4gICovCi1zdGF0aWMgaW50IGJiX2Rpc2NyaW1pbmF0b3I7Ci0KLS8q IEJhc2ljIGJsb2NrIGRpc2NyaW1pbmF0b3IgZm9yIHByZXZpb3VzIGluc3RydWN0aW9uLiAgKi8K LXN0YXRpYyBpbnQgbGFzdF9iYl9kaXNjcmltaW5hdG9yOwotCiAvKiBIaWdoZXN0IGxpbmUgbnVt YmVyIGluIGN1cnJlbnQgYmxvY2suICAqLwogc3RhdGljIGludCBoaWdoX2Jsb2NrX2xpbmVudW07 CiAKQEAgLTE2OTYsOCArMTY4OCw3IEBAIGZpbmFsX3N0YXJ0X2Z1bmN0aW9uXzEgKHJ0eF9pbnNu ICoqZmlyc3RwLCBGSUxFICpmaWxlLCBpbnQgKnNlZW4sCiAgIGxhc3RfZmlsZW5hbWUgPSBMT0NB VElPTl9GSUxFIChwcm9sb2d1ZV9sb2NhdGlvbik7CiAgIGxhc3RfbGluZW51bSA9IExPQ0FUSU9O X0xJTkUgKHByb2xvZ3VlX2xvY2F0aW9uKTsKICAgbGFzdF9jb2x1bW5udW0gPSBMT0NBVElPTl9D T0xVTU4gKHByb2xvZ3VlX2xvY2F0aW9uKTsKLSAgbGFzdF9kaXNjcmltaW5hdG9yID0gZGlzY3Jp bWluYXRvciA9IDA7Ci0gIGxhc3RfYmJfZGlzY3JpbWluYXRvciA9IGJiX2Rpc2NyaW1pbmF0b3Ig PSAwOworICBsYXN0X2Rpc2NyaW1pbmF0b3IgPSAwOwogICBmb3JjZV9zb3VyY2VfbGluZSA9IGZh bHNlOwogCiAgIGhpZ2hfYmxvY2tfbGluZW51bSA9IGhpZ2hfZnVuY3Rpb25fbGluZW51bSA9IGxh c3RfbGluZW51bTsKQEAgLTIyNDIsNyArMjIzMyw2IEBAIGZpbmFsX3NjYW5faW5zbl8xIChydHhf aW5zbiAqaW5zbiwgRklMRSAqZmlsZSwgaW50IG9wdGltaXplX3AgQVRUUklCVVRFX1VOVVNFRCwK IAkgIGlmICh0YXJnZXRtLmFzbV9vdXQudW53aW5kX2VtaXQpCiAJICAgIHRhcmdldG0uYXNtX291 dC51bndpbmRfZW1pdCAoYXNtX291dF9maWxlLCBpbnNuKTsKIAotCSAgYmJfZGlzY3JpbWluYXRv ciA9IE5PVEVfQkFTSUNfQkxPQ0sgKGluc24pLT5kaXNjcmltaW5hdG9yOwogCSAgYnJlYWs7CiAK IAljYXNlIE5PVEVfSU5TTl9FSF9SRUdJT05fQkVHOgpAQCAtMjk4MSw3ICsyOTcxLDcgQEAgY29t cHV0ZV9kaXNjcmltaW5hdG9yIChsb2NhdGlvbl90IGxvYykKICAgaW50IGRpc2NyaW1pbmF0b3I7 CiAKICAgaWYgKCFkZWNsX3RvX2luc3RhbmNlX21hcCkKLSAgICBkaXNjcmltaW5hdG9yID0gYmJf ZGlzY3JpbWluYXRvcjsKKyAgICBkaXNjcmltaW5hdG9yID0gZ2V0X2Rpc2NyaW1pbmF0b3JfZnJv bV9sb2N1cyAobG9jKTsKICAgZWxzZQogICAgIHsKICAgICAgIHRyZWUgYmxvY2sgPSBMT0NBVElP Tl9CTE9DSyAobG9jKTsKQEAgLTMwMDUsNiArMjk5NSwxMyBAQCBjb21wdXRlX2Rpc2NyaW1pbmF0 b3IgKGxvY2F0aW9uX3QgbG9jKQogICByZXR1cm4gZGlzY3JpbWluYXRvcjsKIH0KIAorLyogUmV0 dXJuIGRpc2NyaW1pbmF0b3Igb2YgdGhlIHN0YXRlbWVudCB0aGF0IHByb2R1Y2VkIHRoaXMgaW5z bi4gICovCitpbnQKK2luc25fZGlzY3JpbWluYXRvciAoY29uc3QgcnR4X2luc24gKmluc24pCit7 CisgIHJldHVybiBjb21wdXRlX2Rpc2NyaW1pbmF0b3IgKElOU05fTE9DQVRJT04gKGluc24pKTsK K30KKwogLyogUmV0dXJuIHdoZXRoZXIgYSBzb3VyY2UgbGluZSBub3RlIG5lZWRzIHRvIGJlIGVt aXR0ZWQgYmVmb3JlIElOU04uCiAgICBTZXRzIElTX1NUTVQgdG8gVFJVRSBpZiB0aGUgbGluZSBz aG91bGQgYmUgbWFya2VkIGFzIGEgcG9zc2libGUKICAgIGJyZWFrcG9pbnQgbG9jYXRpb24uICAq LwpAQCAtMzAxNCw2ICszMDExLDcgQEAgbm90aWNlX3NvdXJjZV9saW5lIChydHhfaW5zbiAqaW5z biwgYm9vbCAqaXNfc3RtdCkKIHsKICAgY29uc3QgY2hhciAqZmlsZW5hbWU7CiAgIGludCBsaW5l bnVtLCBjb2x1bW5udW07CisgIGludCBkaXNjcmltaW5hdG9yOwogCiAgIGlmIChOT1RFX01BUktF Ul9QIChpbnNuKSkKICAgICB7CkBAIC0zMDQzLDcgKzMwNDEsNyBAQCBub3RpY2Vfc291cmNlX2xp bmUgKHJ0eF9pbnNuICppbnNuLCBib29sICppc19zdG10KQogICAgICAgZmlsZW5hbWUgPSB4bG9j LmZpbGU7CiAgICAgICBsaW5lbnVtID0geGxvYy5saW5lOwogICAgICAgY29sdW1ubnVtID0geGxv Yy5jb2x1bW47Ci0gICAgICBkaXNjcmltaW5hdG9yID0gY29tcHV0ZV9kaXNjcmltaW5hdG9yIChJ TlNOX0xPQ0FUSU9OIChpbnNuKSk7CisgICAgICBkaXNjcmltaW5hdG9yID0gaW5zbl9kaXNjcmlt aW5hdG9yIChpbnNuKTsKICAgICB9CiAgIGVsc2UKICAgICB7CmRpZmYgLS1naXQgYS9nY2MvZ2lt cGxlLXByZXR0eS1wcmludC5jYyBiL2djYy9naW1wbGUtcHJldHR5LXByaW50LmNjCmluZGV4IGYx OGJhZWM0MzhhLi5hODdlMmFlNjhiMyAxMDA2NDQKLS0tIGEvZ2NjL2dpbXBsZS1wcmV0dHktcHJp bnQuY2MKKysrIGIvZ2NjL2dpbXBsZS1wcmV0dHktcHJpbnQuY2MKQEAgLTI4NzUsOCArMjg3NSw2 IEBAIGR1bXBfZ2ltcGxlX2JiX2hlYWRlciAoRklMRSAqb3V0ZiwgYmFzaWNfYmxvY2sgYmIsIGlu dCBpbmRlbnQsCiAJCQkgaW5kZW50LCAiIiwgZ2V0X2xpbmVubyAoZ3NpX3N0bXQgKGdzaSkpKTsK IAkJYnJlYWs7CiAJICAgICAgfQotCSAgaWYgKGJiLT5kaXNjcmltaW5hdG9yKQotCSAgICBmcHJp bnRmIChvdXRmLCAiLCBkaXNjcmltaW5hdG9yICVpIiwgYmItPmRpc2NyaW1pbmF0b3IpOwogCSAg ZnB1dGMgKCdcbicsIG91dGYpOwogCX0KICAgICB9CmRpZmYgLS1naXQgYS9nY2MvZ2ltcGxlLXN0 cmVhbWVyLWluLmNjIGIvZ2NjL2dpbXBsZS1zdHJlYW1lci1pbi5jYwppbmRleCBlN2YzMjU2MzAy Zi4uZWE4ODkxZThlOTIgMTAwNjQ0Ci0tLSBhL2djYy9naW1wbGUtc3RyZWFtZXItaW4uY2MKKysr IGIvZ2NjL2dpbXBsZS1zdHJlYW1lci1pbi5jYwpAQCAtMjY3LDcgKzI2Nyw2IEBAIGlucHV0X2Ji IChjbGFzcyBsdG9faW5wdXRfYmxvY2sgKmliLCBlbnVtIExUT190YWdzIHRhZywKICAgICBiYi0+ Y291bnQKICAgICAgID0gYmItPmNvdW50LmFwcGx5X3NjYWxlIChjb3VudF9tYXRlcmlhbGl6YXRp b25fc2NhbGUsIFJFR19CUl9QUk9CX0JBU0UpOwogICBiYi0+ZmxhZ3MgPSBzdHJlYW1lcl9yZWFk X2h3aSAoaWIpOwotICBiYi0+ZGlzY3JpbWluYXRvciA9IHN0cmVhbWVyX3JlYWRfaHdpIChpYik7 CiAKICAgLyogTFRPX2JiMSBoYXMgc3RhdGVtZW50cy4gIExUT19iYjAgZG9lcyBub3QuICAqLwog ICBpZiAodGFnID09IExUT19iYjApCmRpZmYgLS1naXQgYS9nY2MvZ2ltcGxlLXN0cmVhbWVyLW91 dC5jYyBiL2djYy9naW1wbGUtc3RyZWFtZXItb3V0LmNjCmluZGV4IDMzMzY1MjUxMjk1Li40NTgz MjU0N2JmNSAxMDA2NDQKLS0tIGEvZ2NjL2dpbXBsZS1zdHJlYW1lci1vdXQuY2MKKysrIGIvZ2Nj L2dpbXBsZS1zdHJlYW1lci1vdXQuY2MKQEAgLTIwOCw3ICsyMDgsNiBAQCBvdXRwdXRfYmIgKHN0 cnVjdCBvdXRwdXRfYmxvY2sgKm9iLCBiYXNpY19ibG9jayBiYiwgc3RydWN0IGZ1bmN0aW9uICpm bikKICAgc3RyZWFtZXJfd3JpdGVfdWh3aSAob2IsIGJiLT5pbmRleCk7CiAgIGJiLT5jb3VudC5z dHJlYW1fb3V0IChvYik7CiAgIHN0cmVhbWVyX3dyaXRlX2h3aSAob2IsIGJiLT5mbGFncyk7Ci0g IHN0cmVhbWVyX3dyaXRlX2h3aSAob2IsIGJiLT5kaXNjcmltaW5hdG9yKTsKIAogICBpZiAoIWdz aV9lbmRfcCAoYnNpKSB8fCBwaGlfbm9kZXMgKGJiKSkKICAgICB7CmRpZmYgLS1naXQgYS9nY2Mv aW5wdXQuY2MgYi9nY2MvaW5wdXQuY2MKaW5kZXggMDYwY2ExNjAxMjYuLjE2ZDM1YWMzZGVmIDEw MDY0NAotLS0gYS9nY2MvaW5wdXQuY2MKKysrIGIvZ2NjL2lucHV0LmNjCkBAIC0xMDgyLDcgKzEw ODIsOCBAQCBtYWtlX2xvY2F0aW9uIChsb2NhdGlvbl90IGNhcmV0LCBsb2NhdGlvbl90IHN0YXJ0 LCBsb2NhdGlvbl90IGZpbmlzaCkKICAgbG9jYXRpb25fdCBjb21iaW5lZF9sb2MgPSBDT01CSU5F X0xPQ0FUSU9OX0RBVEEgKGxpbmVfdGFibGUsCiAJCQkJCQkgICBwdXJlX2xvYywKIAkJCQkJCSAg IHNyY19yYW5nZSwKLQkJCQkJCSAgIE5VTEwpOworCQkJCQkJICAgTlVMTCwKKwkJCQkJCSAgIDAp OwogICByZXR1cm4gY29tYmluZWRfbG9jOwogfQogCkBAIC0xMDkyLDcgKzEwOTMsNyBAQCBsb2Nh dGlvbl90CiBtYWtlX2xvY2F0aW9uIChsb2NhdGlvbl90IGNhcmV0LCBzb3VyY2VfcmFuZ2Ugc3Jj X3JhbmdlKQogewogICBsb2NhdGlvbl90IHB1cmVfbG9jID0gZ2V0X3B1cmVfbG9jYXRpb24gKGNh cmV0KTsKLSAgcmV0dXJuIENPTUJJTkVfTE9DQVRJT05fREFUQSAobGluZV90YWJsZSwgcHVyZV9s b2MsIHNyY19yYW5nZSwgTlVMTCk7CisgIHJldHVybiBDT01CSU5FX0xPQ0FUSU9OX0RBVEEgKGxp bmVfdGFibGUsIHB1cmVfbG9jLCBzcmNfcmFuZ2UsIE5VTEwsIDApOwogfQogCiAvKiBBbiBleHBh bmRlZF9sb2NhdGlvbiBzdG9yZXMgdGhlIGNvbHVtbiBpbiBieXRlIHVuaXRzLiAgVGhpcyBmdW5j dGlvbgpAQCAtMTc2Niw2ICsxNzY3LDM3IEBAIGdldF9sb2NhdGlvbl93aXRoaW5fc3RyaW5nIChj cHBfcmVhZGVyICpwZmlsZSwKICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qIEFzc29jaWF0ZSB0aGUg RElTQ1JJTUlOQVRPUiB3aXRoIExPQ1VTLCBhbmQgcmV0dXJuIGEgbmV3IGxvY3VzLiAqLworCits b2NhdGlvbl90Citsb2NhdGlvbl93aXRoX2Rpc2NyaW1pbmF0b3IgKGxvY2F0aW9uX3QgbG9jdXMs IGludCBkaXNjcmltaW5hdG9yKQoreworICB0cmVlIGJsb2NrID0gTE9DQVRJT05fQkxPQ0sgKGxv Y3VzKTsKKyAgc291cmNlX3JhbmdlIHNyY19yYW5nZSA9IGdldF9yYW5nZV9mcm9tX2xvYyAobGlu ZV90YWJsZSwgbG9jdXMpOworICBsb2N1cyA9IGdldF9wdXJlX2xvY2F0aW9uIChsb2N1cyk7CisK KyAgaWYgKGxvY3VzID09IFVOS05PV05fTE9DQVRJT04pCisgICAgcmV0dXJuIGxvY3VzOworCisg IHJldHVybiBDT01CSU5FX0xPQ0FUSU9OX0RBVEEgKGxpbmVfdGFibGUsIGxvY3VzLCBzcmNfcmFu Z2UsIGJsb2NrLCBkaXNjcmltaW5hdG9yKTsKK30KKworLyogUmV0dXJuIFRSVUUgaWYgTE9DVVMg cmVwcmVzZW50cyBhIGxvY2F0aW9uIHdpdGggYSBkaXNjcmltaW5hdG9yLiAgKi8KKworYm9vbAor aGFzX2Rpc2NyaW1pbmF0b3IgKGxvY2F0aW9uX3QgbG9jdXMpCit7CisgIHJldHVybiBMT0NBVElP Tl9ESVNDUklNSU5BVE9SKGxvY3VzKSAhPSAwOworfQorCisvKiBSZXR1cm4gdGhlIGRpc2NyaW1p bmF0b3IgZm9yIExPQ1VTLiAgKi8KKworaW50CitnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2xvY3Vz IChsb2NhdGlvbl90IGxvY3VzKQoreworICByZXR1cm4gTE9DQVRJT05fRElTQ1JJTUlOQVRPUihs b2N1cyk7Cit9CisKICNpZiBDSEVDS0lOR19QCiAKIG5hbWVzcGFjZSBzZWxmdGVzdCB7CmRpZmYg LS1naXQgYS9nY2MvaW5wdXQuaCBiL2djYy9pbnB1dC5oCmluZGV4IGYxYWUzYWVjOTVjLi41NjRl YmQ4OTNlOSAxMDA2NDQKLS0tIGEvZ2NjL2lucHV0LmgKKysrIGIvZ2NjL2lucHV0LmgKQEAgLTE2 NSw2ICsxNjUsMTAgQEAgZXh0ZXJuIGxvY2F0aW9uX3QgZXhwYW5zaW9uX3BvaW50X2xvY2F0aW9u IChsb2NhdGlvbl90KTsKIAogZXh0ZXJuIGxvY2F0aW9uX3QgaW5wdXRfbG9jYXRpb247CiAKK2V4 dGVybiBsb2NhdGlvbl90IGxvY2F0aW9uX3dpdGhfZGlzY3JpbWluYXRvciAobG9jYXRpb25fdCwg aW50KTsKK2V4dGVybiBib29sIGhhc19kaXNjcmltaW5hdG9yIChsb2NhdGlvbl90KTsKK2V4dGVy biBpbnQgZ2V0X2Rpc2NyaW1pbmF0b3JfZnJvbV9sb2N1cyAobG9jYXRpb25fdCk7CisKICNkZWZp bmUgTE9DQVRJT05fRklMRShMT0MpICgoZXhwYW5kX2xvY2F0aW9uIChMT0MpKS5maWxlKQogI2Rl ZmluZSBMT0NBVElPTl9MSU5FKExPQykgKChleHBhbmRfbG9jYXRpb24gKExPQykpLmxpbmUpCiAj ZGVmaW5lIExPQ0FUSU9OX0NPTFVNTihMT0MpKChleHBhbmRfbG9jYXRpb24gKExPQykpLmNvbHVt bikKQEAgLTE3NCw2ICsxNzgsOSBAQCBleHRlcm4gbG9jYXRpb25fdCBpbnB1dF9sb2NhdGlvbjsK ICNkZWZpbmUgTE9DQVRJT05fQkxPQ0soTE9DKSBcCiAgICgodHJlZSkgKChJU19BREhPQ19MT0Mg KExPQykpID8gZ2V0X2RhdGFfZnJvbV9hZGhvY19sb2MgKGxpbmVfdGFibGUsIChMT0MpKSBcCiAg ICA6IE5VTEwpKQorI2RlZmluZSBMT0NBVElPTl9ESVNDUklNSU5BVE9SKExPQykgXAorICAoKElT X0FESE9DX0xPQyAoTE9DKSkgPyBnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2FkaG9jX2xvYyAobGlu ZV90YWJsZSwgKExPQykpIFwKKyAgIDogMCkKICNkZWZpbmUgUkVTRVJWRURfTE9DQVRJT05fUChM T0MpIFwKICAgKExPQ0FUSU9OX0xPQ1VTIChMT0MpIDwgUkVTRVJWRURfTE9DQVRJT05fQ09VTlQp CiAKZGlmZiAtLWdpdCBhL2djYy9sdG8tc3RyZWFtZXItaW4uY2MgYi9nY2MvbHRvLXN0cmVhbWVy LWluLmNjCmluZGV4IGE3ZGFkNzAzNjNmLi5iY2NkNWQwNDU0MSAxMDA2NDQKLS0tIGEvZ2NjL2x0 by1zdHJlYW1lci1pbi5jYworKysgYi9nY2MvbHRvLXN0cmVhbWVyLWluLmNjCkBAIC00MDksNiAr NDA5LDggQEAgbHRvX2xvY2F0aW9uX2NhY2hlOjpjbXBfbG9jIChjb25zdCB2b2lkICpwYSwgY29u c3Qgdm9pZCAqcGIpCiAgICAgcmV0dXJuIGEtPmxpbmUgLSBiLT5saW5lOwogICBpZiAoYS0+Y29s ICE9IGItPmNvbCkKICAgICByZXR1cm4gYS0+Y29sIC0gYi0+Y29sOworICBpZiAoYS0+ZGlzY3Ig IT0gYi0+ZGlzY3IpCisgICAgcmV0dXJuIGEtPmRpc2NyIC0gYi0+ZGlzY3I7CiAgIGlmICgoYS0+ YmxvY2sgPT0gTlVMTF9UUkVFKSAhPSAoYi0+YmxvY2sgPT0gTlVMTF9UUkVFKSkKICAgICByZXR1 cm4gYS0+YmxvY2sgPyAxIDogLTE7CiAgIGlmIChhLT5ibG9jaykKQEAgLTQ2MCw2ICs0NjIsOCBA QCBsdG9fbG9jYXRpb25fY2FjaGU6OmFwcGx5X2xvY2F0aW9uX2NhY2hlICgpCiAJICBjdXJyZW50 X2xvYyA9IGxpbmVtYXBfcG9zaXRpb25fZm9yX2NvbHVtbiAobGluZV90YWJsZSwgbG9jLmNvbCk7 CiAJICBpZiAobG9jLmJsb2NrKQogCSAgICBjdXJyZW50X2xvYyA9IHNldF9ibG9jayAoY3VycmVu dF9sb2MsIGxvYy5ibG9jayk7CisJICBpZiAobG9jLmRpc2NyKQorCSAgICBjdXJyZW50X2xvYyA9 IGxvY2F0aW9uX3dpdGhfZGlzY3JpbWluYXRvciAoY3VycmVudF9sb2MsIGxvYy5kaXNjcik7CiAJ fQogICAgICAgZWxzZSBpZiAoY3VycmVudF9ibG9jayAhPSBsb2MuYmxvY2spCiAJewpAQCAtNDY3 LDEyICs0NzEsMTkgQEAgbHRvX2xvY2F0aW9uX2NhY2hlOjphcHBseV9sb2NhdGlvbl9jYWNoZSAo KQogCSAgICBjdXJyZW50X2xvYyA9IHNldF9ibG9jayAoY3VycmVudF9sb2MsIGxvYy5ibG9jayk7 CiAJICBlbHNlCiAJICAgIGN1cnJlbnRfbG9jID0gTE9DQVRJT05fTE9DVVMgKGN1cnJlbnRfbG9j KTsKKwkgIGlmIChsb2MuZGlzY3IpCisJICAgIGN1cnJlbnRfbG9jID0gbG9jYXRpb25fd2l0aF9k aXNjcmltaW5hdG9yIChjdXJyZW50X2xvYywgbG9jLmRpc2NyKTsKKwl9CisgICAgICBlbHNlIGlm IChjdXJyZW50X2Rpc2NyICE9IGxvYy5kaXNjcikKKwl7CisJICAgIGN1cnJlbnRfbG9jID0gbG9j YXRpb25fd2l0aF9kaXNjcmltaW5hdG9yIChjdXJyZW50X2xvYywgbG9jLmRpc2NyKTsKIAl9CiAg ICAgICAqbG9jLmxvYyA9IGN1cnJlbnRfbG9jOwogICAgICAgY3VycmVudF9saW5lID0gbG9jLmxp bmU7CiAgICAgICBwcmV2X2ZpbGUgPSBjdXJyZW50X2ZpbGUgPSBsb2MuZmlsZTsKICAgICAgIGN1 cnJlbnRfY29sID0gbG9jLmNvbDsKICAgICAgIGN1cnJlbnRfYmxvY2sgPSBsb2MuYmxvY2s7Cisg ICAgICBjdXJyZW50X2Rpc2NyID0gbG9jLmRpc2NyOwogICAgIH0KICAgbG9jX2NhY2hlLnRydW5j YXRlICgwKTsKICAgYWNjZXB0ZWRfbGVuZ3RoID0gMDsKQEAgLTUxMiw2ICs1MjMsNyBAQCBsdG9f bG9jYXRpb25fY2FjaGU6OmlucHV0X2xvY2F0aW9uX2FuZF9ibG9jayAobG9jYXRpb25fdCAqbG9j LAogICBzdGF0aWMgaW50IHN0cmVhbV9jb2w7CiAgIHN0YXRpYyBib29sIHN0cmVhbV9zeXNwOwog ICBzdGF0aWMgdHJlZSBzdHJlYW1fYmxvY2s7CisgIHN0YXRpYyB1bnNpZ25lZCBzdHJlYW1fZGlz Y3I7CiAgIHN0YXRpYyBjb25zdCBjaGFyICpzdHJlYW1fcmVsYXRpdmVfcGF0aF9wcmVmaXg7CiAK ICAgZ2NjX2Fzc2VydCAoY3VycmVudF9jYWNoZSA9PSB0aGlzKTsKQEAgLTUzOCw2ICs1NTAsNyBA QCBsdG9fbG9jYXRpb25fY2FjaGU6OmlucHV0X2xvY2F0aW9uX2FuZF9ibG9jayAobG9jYXRpb25f dCAqbG9jLAogICAqbG9jID0gUkVTRVJWRURfTE9DQVRJT05fQ09VTlQ7CiAgIGJvb2wgbGluZV9j aGFuZ2UgPSBicF91bnBhY2tfdmFsdWUgKGJwLCAxKTsKICAgYm9vbCBjb2x1bW5fY2hhbmdlID0g YnBfdW5wYWNrX3ZhbHVlIChicCwgMSk7CisgIGJvb2wgZGlzY3JfY2hhbmdlID0gYnBfdW5wYWNr X3ZhbHVlIChicCwgMSk7CiAKICAgaWYgKGZpbGVfY2hhbmdlKQogICAgIHsKQEAgLTU2Myw2ICs1 NzYsOSBAQCBsdG9fbG9jYXRpb25fY2FjaGU6OmlucHV0X2xvY2F0aW9uX2FuZF9ibG9jayAobG9j YXRpb25fdCAqbG9jLAogICBpZiAoY29sdW1uX2NoYW5nZSkKICAgICBzdHJlYW1fY29sID0gYnBf dW5wYWNrX3Zhcl9sZW5fdW5zaWduZWQgKGJwKTsKIAorICBpZiAoZGlzY3JfY2hhbmdlKQorICAg IHN0cmVhbV9kaXNjciA9IGJwX3VucGFja192YXJfbGVuX3Vuc2lnbmVkIChicCk7CisKICAgdHJl ZSBibG9jayA9IE5VTExfVFJFRTsKICAgaWYgKGliKQogICAgIHsKQEAgLTU3OCw3ICs1OTQsOCBA QCBsdG9fbG9jYXRpb25fY2FjaGU6OmlucHV0X2xvY2F0aW9uX2FuZF9ibG9jayAobG9jYXRpb25f dCAqbG9jLAogICBpZiAoY3VycmVudF9maWxlID09IHN0cmVhbV9maWxlCiAgICAgICAmJiBjdXJy ZW50X2xpbmUgPT0gc3RyZWFtX2xpbmUKICAgICAgICYmIGN1cnJlbnRfY29sID09IHN0cmVhbV9j b2wKLSAgICAgICYmIGN1cnJlbnRfc3lzcCA9PSBzdHJlYW1fc3lzcCkKKyAgICAgICYmIGN1cnJl bnRfc3lzcCA9PSBzdHJlYW1fc3lzcAorICAgICAgJiYgY3VycmVudF9kaXNjciA9PSBzdHJlYW1f ZGlzY3IpCiAgICAgewogICAgICAgaWYgKGN1cnJlbnRfYmxvY2sgPT0gYmxvY2spCiAJKmxvYyA9 IGN1cnJlbnRfbG9jOwpAQCAtNTkwLDcgKzYwNyw3IEBAIGx0b19sb2NhdGlvbl9jYWNoZTo6aW5w dXRfbG9jYXRpb25fYW5kX2Jsb2NrIChsb2NhdGlvbl90ICpsb2MsCiAgICAgfQogCiAgIHN0cnVj dCBjYWNoZWRfbG9jYXRpb24gZW50cnkKLSAgICA9IHtzdHJlYW1fZmlsZSwgbG9jLCBzdHJlYW1f bGluZSwgc3RyZWFtX2NvbCwgc3RyZWFtX3N5c3AsIGJsb2NrfTsKKyAgICA9IHtzdHJlYW1fZmls ZSwgbG9jLCBzdHJlYW1fbGluZSwgc3RyZWFtX2NvbCwgc3RyZWFtX3N5c3AsIGJsb2NrLCBzdHJl YW1fZGlzY3J9OwogICBsb2NfY2FjaGUuc2FmZV9wdXNoIChlbnRyeSk7CiB9CiAKZGlmZiAtLWdp dCBhL2djYy9sdG8tc3RyZWFtZXItb3V0LmNjIGIvZ2NjL2x0by1zdHJlYW1lci1vdXQuY2MKaW5k ZXggNDcxZjM1YzMxNWYuLmQyYjZjNjkzMTVmIDEwMDY0NAotLS0gYS9nY2MvbHRvLXN0cmVhbWVy LW91dC5jYworKysgYi9nY2MvbHRvLXN0cmVhbWVyLW91dC5jYwpAQCAtNjcsNiArNjcsNyBAQCBj bGVhcl9saW5lX2luZm8gKHN0cnVjdCBvdXRwdXRfYmxvY2sgKm9iKQogICAgICBzbyB0aGF0IHRo ZSBmaXJzdCBsb2NhdGlvbiB3aXRoIGJsb2NrIGluIGEgZnVuY3Rpb24gZXRjLgogICAgICBhbHdh eXMgc3RyZWFtcyBhIGNoYW5nZV9ibG9jayBiaXQgYW5kIHRoZSBmaXJzdCBibG9jay4gICovCiAg IG9iLT5jdXJyZW50X2Jsb2NrID0gdm9pZF9ub2RlOworICBvYi0+Y3VycmVudF9kaXNjciA9IFVJ TlRfTUFYOwogfQogCiAKQEAgLTE5NCw2ICsxOTUsNyBAQCBsdG9fb3V0cHV0X2xvY2F0aW9uXzEg KHN0cnVjdCBvdXRwdXRfYmxvY2sgKm9iLCBzdHJ1Y3QgYml0cGFja19kICpicCwKICAgaWYgKGxv YyA+PSBSRVNFUlZFRF9MT0NBVElPTl9DT1VOVCkKICAgICB7CiAgICAgICBleHBhbmRlZF9sb2Nh dGlvbiB4bG9jID0gZXhwYW5kX2xvY2F0aW9uIChsb2MpOworICAgICAgdW5zaWduZWQgZGlzY3Ig PSBMT0NBVElPTl9ESVNDUklNSU5BVE9SIChvcmlnX2xvYyk7CiAKICAgICAgIGlmIChvYi0+cmVz ZXRfbG9jdXMpCiAJewpAQCAtMjE2LDYgKzIxOCw3IEBAIGx0b19vdXRwdXRfbG9jYXRpb25fMSAo c3RydWN0IG91dHB1dF9ibG9jayAqb2IsIHN0cnVjdCBiaXRwYWNrX2QgKmJwLAogCiAgICAgICBi cF9wYWNrX3ZhbHVlIChicCwgb2ItPmN1cnJlbnRfbGluZSAhPSB4bG9jLmxpbmUsIDEpOwogICAg ICAgYnBfcGFja192YWx1ZSAoYnAsIG9iLT5jdXJyZW50X2NvbCAhPSB4bG9jLmNvbHVtbiwgMSk7 CisgICAgICBicF9wYWNrX3ZhbHVlIChicCwgb2ItPmN1cnJlbnRfZGlzY3IgIT0gZGlzY3IsIDEp OwogCiAgICAgICBpZiAob2ItPmN1cnJlbnRfZmlsZSAhPSB4bG9jLmZpbGUpCiAJewpAQCAtMjQy LDYgKzI0NSwxMCBAQCBsdG9fb3V0cHV0X2xvY2F0aW9uXzEgKHN0cnVjdCBvdXRwdXRfYmxvY2sg Km9iLCBzdHJ1Y3QgYml0cGFja19kICpicCwKICAgICAgIGlmIChvYi0+Y3VycmVudF9jb2wgIT0g eGxvYy5jb2x1bW4pCiAJYnBfcGFja192YXJfbGVuX3Vuc2lnbmVkIChicCwgeGxvYy5jb2x1bW4p OwogICAgICAgb2ItPmN1cnJlbnRfY29sID0geGxvYy5jb2x1bW47CisKKyAgICAgIGlmIChvYi0+ Y3VycmVudF9kaXNjciAhPSBkaXNjcikKKwlicF9wYWNrX3Zhcl9sZW5fdW5zaWduZWQgKGJwLCBk aXNjcik7CisgICAgICBvYi0+Y3VycmVudF9kaXNjciA9IGRpc2NyOwogICAgIH0KICAgZWxzZQog ICAgIGJwX3BhY2tfaW50X2luX3JhbmdlIChicCwgMCwgUkVTRVJWRURfTE9DQVRJT05fQ09VTlQg KyAxLCBsb2MpOwpkaWZmIC0tZ2l0IGEvZ2NjL2x0by1zdHJlYW1lci5oIGIvZ2NjL2x0by1zdHJl YW1lci5oCmluZGV4IDU5N2U5ZTQwNWVjLi4yZTNhYmQ5Nzk1OSAxMDA2NDQKLS0tIGEvZ2NjL2x0 by1zdHJlYW1lci5oCisrKyBiL2djYy9sdG8tc3RyZWFtZXIuaApAQCAtMzExLDYgKzMxMSw3IEBA IHByaXZhdGU6CiAgICAgaW50IGxpbmUsIGNvbDsKICAgICBib29sIHN5c3A7CiAgICAgdHJlZSBi bG9jazsKKyAgICB1bnNpZ25lZCBkaXNjcjsKICAgfTsKIAogICAvKiBUaGUgbG9jYXRpb24gY2Fj aGUuICAqLwpAQCAtMzMzLDYgKzMzNCw3IEBAIHByaXZhdGU6CiAgIGJvb2wgY3VycmVudF9zeXNw OwogICBsb2NhdGlvbl90IGN1cnJlbnRfbG9jOwogICB0cmVlIGN1cnJlbnRfYmxvY2s7CisgIHVu c2lnbmVkIGN1cnJlbnRfZGlzY3I7CiB9OwogCiAvKiBTdHJ1Y3R1cmUgdXNlZCBhcyBidWZmZXIg Zm9yIHJlYWRpbmcgYW4gTFRPIGZpbGUuICAqLwpAQCAtNzIzLDYgKzcyNSw3IEBAIHN0cnVjdCBv dXRwdXRfYmxvY2sKICAgYm9vbCByZXNldF9sb2N1czsKICAgYm9vbCBlbWl0X3B3ZDsKICAgdHJl ZSBjdXJyZW50X2Jsb2NrOworICB1bnNpZ25lZCBjdXJyZW50X2Rpc2NyOwogCiAgIC8qIENhY2hl IG9mIG5vZGVzIHdyaXR0ZW4gaW4gdGhpcyBzZWN0aW9uLiAgKi8KICAgc3RydWN0IHN0cmVhbWVy X3RyZWVfY2FjaGVfZCAqd3JpdGVyX2NhY2hlOwpkaWZmIC0tZ2l0IGEvZ2NjL3ByaW50LXJ0bC5j YyBiL2djYy9wcmludC1ydGwuY2MKaW5kZXggNjBjODQ1NDg1YmMuLmUxMTVmOTg3MTczIDEwMDY0 NAotLS0gYS9nY2MvcHJpbnQtcnRsLmNjCisrKyBiL2djYy9wcmludC1ydGwuY2MKQEAgLTQ1Myw2 ICs0NTMsMTAgQEAgcnR4X3dyaXRlcjo6cHJpbnRfcnR4X29wZXJhbmRfY29kZV9pIChjb25zdF9y dHggaW5fcnR4LCBpbnQgaWR4KQogCSAgZXhwYW5kZWRfbG9jYXRpb24geGxvYyA9IGluc25fbG9j YXRpb24gKGluX2luc24pOwogCSAgZnByaW50ZiAobV9vdXRmaWxlLCAiIFwiJXNcIjolaTolaSIs IHhsb2MuZmlsZSwgeGxvYy5saW5lLAogCQkgICB4bG9jLmNvbHVtbik7CisJICBpbnQgZGlzY3Jp bWluYXRvciA9IGluc25fZGlzY3JpbWluYXRvciAoaW5faW5zbik7CisJICAgIGlmIChkaXNjcmlt aW5hdG9yKQorCSAgICAgIGZwcmludGYgKG1fb3V0ZmlsZSwgIiBkaXNjcmltICVkIiwgZGlzY3Jp bWluYXRvcik7CisKIAl9CiAjZW5kaWYKICAgICB9CmRpZmYgLS1naXQgYS9nY2MvcnRsLmggYi9n Y2MvcnRsLmgKaW5kZXggNjQ1YzAwOWEzNDAuLjdhOGM0NzA5MjU3IDEwMDY0NAotLS0gYS9nY2Mv cnRsLmgKKysrIGIvZ2NjL3J0bC5oCkBAIC0zMzY5LDYgKzMzNjksNyBAQCBleHRlcm4gaW50IGlu c25fbGluZSAoY29uc3QgcnR4X2luc24gKik7CiBleHRlcm4gY29uc3QgY2hhciAqIGluc25fZmls ZSAoY29uc3QgcnR4X2luc24gKik7CiBleHRlcm4gdHJlZSBpbnNuX3Njb3BlIChjb25zdCBydHhf aW5zbiAqKTsKIGV4dGVybiBleHBhbmRlZF9sb2NhdGlvbiBpbnNuX2xvY2F0aW9uIChjb25zdCBy dHhfaW5zbiAqKTsKK2V4dGVybiBpbnQgaW5zbl9kaXNjcmltaW5hdG9yIChjb25zdCBydHhfaW5z biAqKTsKIGV4dGVybiBsb2NhdGlvbl90IHByb2xvZ3VlX2xvY2F0aW9uLCBlcGlsb2d1ZV9sb2Nh dGlvbjsKIAogLyogSW4ganVtcC5jYyAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vdWJzYW4vcHI4NTIxMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vdWJz YW4vcHI4NTIxMy5jCmluZGV4IDhhNmJlODFkMjBmLi5lOTAzZTk3NmYyYyAxMDA2NDQKLS0tIGEv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vdWJzYW4vcHI4NTIxMy5jCisrKyBiL2djYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL3Vic2FuL3ByODUyMTMuYwpAQCAtMSw2ICsxLDExIEBACiAvKiBQ UiBzYW5pdGl6ZXIvODUyMTMgKi8KIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0vKiB7IGRnLW9w dGlvbnMgIi1PMSAtZnNhbml0aXplPXVuZGVmaW5lZCAtZmNvbXBhcmUtZGVidWciIH0gKi8KKy8q IFBhc3MgLWduby1zdGF0ZW1lbnQtZnJvbnRpZXJzIHRvIHdvcmsgYXJvdW5kCisgICBodHRwczov L2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xMDA3MzMgOgorICAgd2l0aG91 dCBpdCB0aGUgSVIgY29taW5nIGZyb20gdGhlIGZyb250IGVuZCBtYXkgYmUgZGlmZmVyZW50IHdp dGggYW5kIHdpdGhvdXQKKyAgIGRlYnVnIGluZm9ybWF0aW9uIHR1cm5lZCBvbi4gVGhhdCBtYXkg Y2F1c2UgZS5nLiwgZGlmZmVyZW50IGRpc2NyaW1pbmF0b3IgdmFsdWVzCisgICBhbmQgLWZjb21w YXJlLWRlYnVnIGZhaWx1cmVzLiAqLworLyogeyBkZy1vcHRpb25zICItTzEgLWZzYW5pdGl6ZT11 bmRlZmluZWQgLWZjb21wYXJlLWRlYnVnIC1nbm8tc3RhdGVtZW50LWZyb250aWVycyIgfSAqLwog CiBpbnQKIGZvbyAoaW50IHgpCmRpZmYgLS1naXQgYS9nY2MvdHJlZS1jZmcuY2MgYi9nY2MvdHJl ZS1jZmcuY2MKaW5kZXggOTFlYzMzYzgwYTQuLjYzODg4NzkxMzJkIDEwMDY0NAotLS0gYS9nY2Mv dHJlZS1jZmcuY2MKKysrIGIvZ2NjL3RyZWUtY2ZnLmNjCkBAIC0xMTY1LDcgKzExNjUsMzMgQEAg c2FtZV9saW5lX3AgKGxvY2F0aW9uX3QgbG9jdXMxLCBleHBhbmRlZF9sb2NhdGlvbiAqZnJvbSwg bG9jYXRpb25fdCBsb2N1czIpCiAgICAgICAgICAgJiYgZmlsZW5hbWVfY21wIChmcm9tLT5maWxl LCB0by5maWxlKSA9PSAwKTsKIH0KIAotLyogQXNzaWduIGRpc2NyaW1pbmF0b3JzIHRvIGVhY2gg YmFzaWMgYmxvY2suICAqLworLyogQXNzaWduIGEgdW5pcXVlIGRpc2NyaW1pbmF0b3IgdmFsdWUg dG8gYWxsIHN0YXRlbWVudHMgaW4gYmxvY2sgYmIgdGhhdAorICAgaGF2ZSB0aGUgc2FtZSBsaW5l IG51bWJlciBhcyBsb2N1cy4gKi8KKworc3RhdGljIHZvaWQKK2Fzc2lnbl9kaXNjcmltaW5hdG9y IChsb2NhdGlvbl90IGxvY3VzLCBiYXNpY19ibG9jayBiYikKK3sKKyAgZ2ltcGxlX3N0bXRfaXRl cmF0b3IgZ3NpOworICBpbnQgZGlzY3JpbWluYXRvcjsKKworICBpZiAobG9jdXMgPT0gVU5LTk9X Tl9MT0NBVElPTikKKyAgICByZXR1cm47CisKKyAgZXhwYW5kZWRfbG9jYXRpb24gbG9jdXNfZSA9 IGV4cGFuZF9sb2NhdGlvbiAobG9jdXMpOworCisgIGRpc2NyaW1pbmF0b3IgPSBuZXh0X2Rpc2Ny aW1pbmF0b3JfZm9yX2xvY3VzIChsb2N1c19lLmxpbmUpOworCisgIGZvciAoZ3NpID0gZ3NpX3N0 YXJ0X2JiIChiYik7ICFnc2lfZW5kX3AgKGdzaSk7IGdzaV9uZXh0ICgmZ3NpKSkKKyAgICB7Cisg ICAgICBnaW1wbGUgKnN0bXQgPSBnc2lfc3RtdCAoZ3NpKTsKKyAgICAgIGxvY2F0aW9uX3Qgc3Rt dF9sb2N1cyA9IGdpbXBsZV9sb2NhdGlvbiAoc3RtdCk7CisgICAgICBpZiAoc2FtZV9saW5lX3Ag KGxvY3VzLCAmbG9jdXNfZSwgc3RtdF9sb2N1cykpCisJZ2ltcGxlX3NldF9sb2NhdGlvbiAoc3Rt dCwKKwkgICAgbG9jYXRpb25fd2l0aF9kaXNjcmltaW5hdG9yIChzdG10X2xvY3VzLCBkaXNjcmlt aW5hdG9yKSk7CisgICAgfQorfQorCisvKiBBc3NpZ24gZGlzY3JpbWluYXRvcnMgdG8gc3RhdGVt ZW50IGxvY2F0aW9ucy4gICovCiAKIHN0YXRpYyB2b2lkCiBhc3NpZ25fZGlzY3JpbWluYXRvcnMg KHZvaWQpCkBAIC0xMTgwLDYgKzEyMDYsNyBAQCBhc3NpZ25fZGlzY3JpbWluYXRvcnMgKHZvaWQp CiAgICAgICBsb2NhdGlvbl90IGxvY3VzID0gbGFzdCA/IGdpbXBsZV9sb2NhdGlvbiAobGFzdCkg OiBVTktOT1dOX0xPQ0FUSU9OOwogCiAgICAgICBpZiAobG9jdXMgPT0gVU5LTk9XTl9MT0NBVElP TikKKwogCWNvbnRpbnVlOwogCiAgICAgICBleHBhbmRlZF9sb2NhdGlvbiBsb2N1c19lID0gZXhw YW5kX2xvY2F0aW9uIChsb2N1cyk7CkBAIC0xMTg4LDE3ICsxMjE1LDIyIEBAIGFzc2lnbl9kaXNj cmltaW5hdG9ycyAodm9pZCkKIAl7CiAJICBnaW1wbGUgKmZpcnN0ID0gZmlyc3Rfbm9uX2xhYmVs X3N0bXQgKGUtPmRlc3QpOwogCSAgZ2ltcGxlICpsYXN0ID0gbGFzdF9zdG10IChlLT5kZXN0KTsK LQkgIGlmICgoZmlyc3QgJiYgc2FtZV9saW5lX3AgKGxvY3VzLCAmbG9jdXNfZSwKKworCSAgZ2lt cGxlICpzdG10X29uX3NhbWVfbGluZSA9IE5VTEw7CisJICBpZiAoZmlyc3QgJiYgc2FtZV9saW5l X3AgKGxvY3VzLCAmbG9jdXNfZSwKIAkJCQkgICAgIGdpbXBsZV9sb2NhdGlvbiAoZmlyc3QpKSkK LQkgICAgICB8fCAobGFzdCAmJiBzYW1lX2xpbmVfcCAobG9jdXMsICZsb2N1c19lLAotCQkJCSAg ICAgICBnaW1wbGVfbG9jYXRpb24gKGxhc3QpKSkpCisJICAgIHN0bXRfb25fc2FtZV9saW5lID0g Zmlyc3Q7CisJICBlbHNlIGlmIChsYXN0ICYmIHNhbWVfbGluZV9wIChsb2N1cywgJmxvY3VzX2Us CisJCQkJCWdpbXBsZV9sb2NhdGlvbiAobGFzdCkpKQorCSAgICBzdG10X29uX3NhbWVfbGluZSA9 IGxhc3Q7CisKKwkgIGlmIChzdG10X29uX3NhbWVfbGluZSkKIAkgICAgewotCSAgICAgIGlmIChl LT5kZXN0LT5kaXNjcmltaW5hdG9yICE9IDAgJiYgYmItPmRpc2NyaW1pbmF0b3IgPT0gMCkKLQkJ YmItPmRpc2NyaW1pbmF0b3IKLQkJICA9IG5leHRfZGlzY3JpbWluYXRvcl9mb3JfbG9jdXMgKGxv Y3VzX2UubGluZSk7CisJICAgICAgaWYgKGhhc19kaXNjcmltaW5hdG9yIChnaW1wbGVfbG9jYXRp b24gKHN0bXRfb25fc2FtZV9saW5lKSkKKwkJICAmJiAhaGFzX2Rpc2NyaW1pbmF0b3IgKGxvY3Vz KSkKKwkJYXNzaWduX2Rpc2NyaW1pbmF0b3IgKGxvY3VzLCBiYik7CiAJICAgICAgZWxzZQotCQll LT5kZXN0LT5kaXNjcmltaW5hdG9yCi0JCSAgPSBuZXh0X2Rpc2NyaW1pbmF0b3JfZm9yX2xvY3Vz IChsb2N1c19lLmxpbmUpOworCQlhc3NpZ25fZGlzY3JpbWluYXRvciAobG9jdXMsIGUtPmRlc3Qp OwogCSAgICB9CiAJfQogICAgIH0KZGlmZiAtLWdpdCBhL2djYy90cmVlLXByZXR0eS1wcmludC5j YyBiL2djYy90cmVlLXByZXR0eS1wcmludC5jYwppbmRleCA0NzM3MWQ4YmNiZS4uMTc0NzczMjM2 NGYgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLXByZXR0eS1wcmludC5jYworKysgYi9nY2MvdHJlZS1w cmV0dHktcHJpbnQuY2MKQEAgLTE0MzcsNiArMTQzNyw3IEBAIHZvaWQKIGR1bXBfbG9jYXRpb24g KHByZXR0eV9wcmludGVyICpwcCwgbG9jYXRpb25fdCBsb2MpCiB7CiAgIGV4cGFuZGVkX2xvY2F0 aW9uIHhsb2MgPSBleHBhbmRfbG9jYXRpb24gKGxvYyk7CisgIGludCBkaXNjcmltaW5hdG9yID0g Z2V0X2Rpc2NyaW1pbmF0b3JfZnJvbV9sb2N1cyAobG9jKTsKIAogICBwcF9sZWZ0X2JyYWNrZXQg KHBwKTsKICAgaWYgKHhsb2MuZmlsZSkKQEAgLTE0NDcsNiArMTQ0OCwxMSBAQCBkdW1wX2xvY2F0 aW9uIChwcmV0dHlfcHJpbnRlciAqcHAsIGxvY2F0aW9uX3QgbG9jKQogICBwcF9kZWNpbWFsX2lu dCAocHAsIHhsb2MubGluZSk7CiAgIHBwX2NvbG9uIChwcCk7CiAgIHBwX2RlY2ltYWxfaW50IChw cCwgeGxvYy5jb2x1bW4pOworICBpZiAoZGlzY3JpbWluYXRvcikKKyAgeworICAgIHBwX3N0cmlu ZyAocHAsICIgZGlzY3JpbSAiKTsKKyAgICBwcF9kZWNpbWFsX2ludCAocHAsIGRpc2NyaW1pbmF0 b3IpOworICB9CiAgIHBwX3N0cmluZyAocHAsICJdICIpOwogfQogCmRpZmYgLS1naXQgYS9nY2Mv dHJlZS5jYyBiL2djYy90cmVlLmNjCmluZGV4IDAwN2M5MzI1YjE3Li5kYzlmNTgxOTk0MSAxMDA2 NDQKLS0tIGEvZ2NjL3RyZWUuY2MKKysrIGIvZ2NjL3RyZWUuY2MKQEAgLTE0MTc3LDcgKzE0MTc3 LDggQEAgc2V0X2Jsb2NrIChsb2NhdGlvbl90IGxvYywgdHJlZSBibG9jaykKIHsKICAgbG9jYXRp b25fdCBwdXJlX2xvYyA9IGdldF9wdXJlX2xvY2F0aW9uIChsb2MpOwogICBzb3VyY2VfcmFuZ2Ug c3JjX3JhbmdlID0gZ2V0X3JhbmdlX2Zyb21fbG9jIChsaW5lX3RhYmxlLCBsb2MpOwotICByZXR1 cm4gQ09NQklORV9MT0NBVElPTl9EQVRBIChsaW5lX3RhYmxlLCBwdXJlX2xvYywgc3JjX3Jhbmdl LCBibG9jayk7CisgIHVuc2lnbmVkIGRpc2NyaW1pbmF0b3IgPSBnZXRfZGlzY3JpbWluYXRvcl9m cm9tX2xvYyAobGluZV90YWJsZSwgbG9jKTsKKyAgcmV0dXJuIENPTUJJTkVfTE9DQVRJT05fREFU QSAobGluZV90YWJsZSwgcHVyZV9sb2MsIHNyY19yYW5nZSwgYmxvY2ssIGRpc2NyaW1pbmF0b3Ip OwogfQogCiBsb2NhdGlvbl90CkBAIC0xNDE5NSwxMSArMTQxOTYsMTQgQEAgc2V0X3NvdXJjZV9y YW5nZSAodHJlZSBleHByLCBzb3VyY2VfcmFuZ2Ugc3JjX3JhbmdlKQogICBpZiAoIUVYUFJfUCAo ZXhwcikpCiAgICAgcmV0dXJuIFVOS05PV05fTE9DQVRJT047CiAKLSAgbG9jYXRpb25fdCBwdXJl X2xvYyA9IGdldF9wdXJlX2xvY2F0aW9uIChFWFBSX0xPQ0FUSU9OIChleHByKSk7CisgIGxvY2F0 aW9uX3QgZXhwcl9sb2NhdGlvbiA9IEVYUFJfTE9DQVRJT04gKGV4cHIpOworICBsb2NhdGlvbl90 IHB1cmVfbG9jID0gZ2V0X3B1cmVfbG9jYXRpb24gKGV4cHJfbG9jYXRpb24pOworICB1bnNpZ25l ZCBkaXNjcmltaW5hdG9yID0gZ2V0X2Rpc2NyaW1pbmF0b3JfZnJvbV9sb2N1cyAoZXhwcl9sb2Nh dGlvbik7CiAgIGxvY2F0aW9uX3QgYWRob2MgPSBDT01CSU5FX0xPQ0FUSU9OX0RBVEEgKGxpbmVf dGFibGUsCiAJCQkJCSAgICBwdXJlX2xvYywKIAkJCQkJICAgIHNyY19yYW5nZSwKLQkJCQkJICAg IE5VTEwpOworCQkJCQkgICAgTlVMTCwKKwkJCQkJICAgIGRpc2NyaW1pbmF0b3IpOwogICBTRVRf RVhQUl9MT0NBVElPTiAoZXhwciwgYWRob2MpOwogICByZXR1cm4gYWRob2M7CiB9CmRpZmYgLS1n aXQgYS9saWJjcHAvaW5jbHVkZS9saW5lLW1hcC5oIGIvbGliY3BwL2luY2x1ZGUvbGluZS1tYXAu aAppbmRleCA5YmRkNWI5ZDMwYy4uNTAyMDdjYWNjMTIgMTAwNjQ0Ci0tLSBhL2xpYmNwcC9pbmNs dWRlL2xpbmUtbWFwLmgKKysrIGIvbGliY3BwL2luY2x1ZGUvbGluZS1tYXAuaApAQCAtNzU3LDYg Kzc1Nyw3IEBAIHN0cnVjdCBHVFkoKCkpIGxvY2F0aW9uX2FkaG9jX2RhdGEgewogICBsb2NhdGlv bl90IGxvY3VzOwogICBzb3VyY2VfcmFuZ2Ugc3JjX3JhbmdlOwogICB2b2lkICogR1RZKChza2lw KSkgZGF0YTsKKyAgdW5zaWduZWQgZGlzY3JpbWluYXRvcjsKIH07CiAKIHN0cnVjdCBodGFiOwpA QCAtMTAzNCwxMiArMTAzNSwxNCBAQCBMSU5FTUFQU19MQVNUX0FMTE9DQVRFRF9NQUNST19NQVAg KGNvbnN0IGxpbmVfbWFwcyAqc2V0KQogfQogCiBleHRlcm4gbG9jYXRpb25fdCBnZXRfY29tYmlu ZWRfYWRob2NfbG9jIChsaW5lX21hcHMgKiwgbG9jYXRpb25fdCwKLQkJCQkJICBzb3VyY2VfcmFu Z2UsIHZvaWQgKik7CisJCQkJCSAgc291cmNlX3JhbmdlLCB2b2lkICosIHVuc2lnbmVkKTsKIGV4 dGVybiB2b2lkICpnZXRfZGF0YV9mcm9tX2FkaG9jX2xvYyAoY29uc3QgbGluZV9tYXBzICosIGxv Y2F0aW9uX3QpOworZXh0ZXJuIHVuc2lnbmVkIGdldF9kaXNjcmltaW5hdG9yX2Zyb21fYWRob2Nf bG9jIChjb25zdCBsaW5lX21hcHMgKiwgbG9jYXRpb25fdCk7CiBleHRlcm4gbG9jYXRpb25fdCBn ZXRfbG9jYXRpb25fZnJvbV9hZGhvY19sb2MgKGNvbnN0IGxpbmVfbWFwcyAqLAogCQkJCQkgICAg ICAgbG9jYXRpb25fdCk7CiAKIGV4dGVybiBzb3VyY2VfcmFuZ2UgZ2V0X3JhbmdlX2Zyb21fbG9j IChsaW5lX21hcHMgKnNldCwgbG9jYXRpb25fdCBsb2MpOworZXh0ZXJuIHVuc2lnbmVkIGdldF9k aXNjcmltaW5hdG9yX2Zyb21fbG9jIChsaW5lX21hcHMgKnNldCwgbG9jYXRpb25fdCBsb2MpOwog CiAvKiBHZXQgd2hldGhlciBsb2NhdGlvbiBMT0MgaXMgYSAicHVyZSIgbG9jYXRpb24sIG9yCiAg ICB3aGV0aGVyIGl0IGlzIGFuIGFkLWhvYyBsb2NhdGlvbiwgb3IgZW1iZWRzIHJhbmdlIGluZm9y bWF0aW9uLiAgKi8KQEAgLTEwNTgsOSArMTA2MSwxMCBAQCBpbmxpbmUgbG9jYXRpb25fdAogQ09N QklORV9MT0NBVElPTl9EQVRBIChjbGFzcyBsaW5lX21hcHMgKnNldCwKIAkJICAgICAgIGxvY2F0 aW9uX3QgbG9jLAogCQkgICAgICAgc291cmNlX3JhbmdlIHNyY19yYW5nZSwKLQkJICAgICAgIHZv aWQgKmJsb2NrKQorCQkgICAgICAgdm9pZCAqYmxvY2ssCisJCSAgICAgICB1bnNpZ25lZCBkaXNj cmltaW5hdG9yKQogewotICByZXR1cm4gZ2V0X2NvbWJpbmVkX2FkaG9jX2xvYyAoc2V0LCBsb2Ms IHNyY19yYW5nZSwgYmxvY2spOworICByZXR1cm4gZ2V0X2NvbWJpbmVkX2FkaG9jX2xvYyAoc2V0 LCBsb2MsIHNyY19yYW5nZSwgYmxvY2ssIGRpc2NyaW1pbmF0b3IpOwogfQogCiBleHRlcm4gdm9p ZCByZWJ1aWxkX2xvY2F0aW9uX2FkaG9jX2h0YWIgKGNsYXNzIGxpbmVfbWFwcyAqKTsKZGlmZiAt LWdpdCBhL2xpYmNwcC9sZXguY2MgYi9saWJjcHAvbGV4LmNjCmluZGV4IDUyOGQ1OThhZWI5Li43 M2YxNTBiMGVhMyAxMDA2NDQKLS0tIGEvbGliY3BwL2xleC5jYworKysgYi9saWJjcHAvbGV4LmNj CkBAIC0xMzU5LDcgKzEzNTksOCBAQCBnZXRfbG9jYXRpb25fZm9yX2J5dGVfcmFuZ2VfaW5fY3Vy X2xpbmUgKGNwcF9yZWFkZXIgKnBmaWxlLAogICBsb2NhdGlvbl90IGNvbWJpbmVkX2xvYyA9IENP TUJJTkVfTE9DQVRJT05fREFUQSAocGZpbGUtPmxpbmVfdGFibGUsCiAJCQkJCQkgICBzdGFydF9s b2MsCiAJCQkJCQkgICBzcmNfcmFuZ2UsCi0JCQkJCQkgICBOVUxMKTsKKwkJCQkJCSAgIE5VTEws CisJCQkJCQkgICAwKTsKICAgcmV0dXJuIGNvbWJpbmVkX2xvYzsKIH0KIApAQCAtMTg5NSw3ICsx ODk2LDcgQEAgd2Fybl9hYm91dF9ub3JtYWxpemF0aW9uIChjcHBfcmVhZGVyICpwZmlsZSwKIAkJ CQkJICAgQ1BQX0JVRl9DT0xVTU4gKHBmaWxlLT5idWZmZXIsCiAJCQkJCQkJICAgcGZpbGUtPmJ1 ZmZlci0+Y3VyKSk7CiAJICBsb2MgPSBDT01CSU5FX0xPQ0FUSU9OX0RBVEEgKHBmaWxlLT5saW5l X3RhYmxlLAotCQkJCSAgICAgICBsb2MsIHRva19yYW5nZSwgTlVMTCk7CisJCQkJICAgICAgIGxv YywgdG9rX3JhbmdlLCBOVUxMLCAwKTsKIAl9CiAKICAgICAgIGVuY29kaW5nX3JpY2hfbG9jYXRp b24gcmljaF9sb2MgKHBmaWxlLCBsb2MpOwpAQCAtNDA5OSw3ICs0MTAwLDcgQEAgX2NwcF9sZXhf ZGlyZWN0IChjcHBfcmVhZGVyICpwZmlsZSkKIAogICAgICAgcmVzdWx0LT5zcmNfbG9jID0gQ09N QklORV9MT0NBVElPTl9EQVRBIChwZmlsZS0+bGluZV90YWJsZSwKIAkJCQkJICAgICAgIHJlc3Vs dC0+c3JjX2xvYywKLQkJCQkJICAgICAgIHRva19yYW5nZSwgTlVMTCk7CisJCQkJCSAgICAgICB0 b2tfcmFuZ2UsIE5VTEwsIDApOwogICAgIH0KIAogICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0 IGEvbGliY3BwL2xpbmUtbWFwLmNjIGIvbGliY3BwL2xpbmUtbWFwLmNjCmluZGV4IDYyMDc3YzM4 NTdjLi5lMTdkMTA5ZDlmMSAxMDA2NDQKLS0tIGEvbGliY3BwL2xpbmUtbWFwLmNjCisrKyBiL2xp YmNwcC9saW5lLW1hcC5jYwpAQCAtNjcsNyArNjcsOCBAQCBsb2NhdGlvbl9hZGhvY19kYXRhX2hh c2ggKGNvbnN0IHZvaWQgKmwpCiAgIHJldHVybiAoKGhhc2h2YWxfdCkgbGItPmxvY3VzCiAJICAr IChoYXNodmFsX3QpIGxiLT5zcmNfcmFuZ2UubV9zdGFydAogCSAgKyAoaGFzaHZhbF90KSBsYi0+ c3JjX3JhbmdlLm1fZmluaXNoCi0JICArIChzaXplX3QpIGxiLT5kYXRhKTsKKwkgICsgKHNpemVf dCkgbGItPmRhdGEKKwkgICsgbGItPmRpc2NyaW1pbmF0b3IpOwogfQogCiAvKiBDb21wYXJlIGZ1 bmN0aW9uIGZvciBsb2NhdGlvbl9hZGhvY19kYXRhIGhhc2h0YWJsZS4gICovCkBAIC04Miw3ICs4 Myw4IEBAIGxvY2F0aW9uX2FkaG9jX2RhdGFfZXEgKGNvbnN0IHZvaWQgKmwxLCBjb25zdCB2b2lk ICpsMikKICAgcmV0dXJuIChsYjEtPmxvY3VzID09IGxiMi0+bG9jdXMKIAkgICYmIGxiMS0+c3Jj X3JhbmdlLm1fc3RhcnQgPT0gbGIyLT5zcmNfcmFuZ2UubV9zdGFydAogCSAgJiYgbGIxLT5zcmNf cmFuZ2UubV9maW5pc2ggPT0gbGIyLT5zcmNfcmFuZ2UubV9maW5pc2gKLQkgICYmIGxiMS0+ZGF0 YSA9PSBsYjItPmRhdGEpOworCSAgJiYgbGIxLT5kYXRhID09IGxiMi0+ZGF0YQorCSAgJiYgbGIx LT5kaXNjcmltaW5hdG9yID09IGxiMi0+ZGlzY3JpbWluYXRvcik7CiB9CiAKIC8qIFVwZGF0ZSB0 aGUgaGFzaHRhYmxlIHdoZW4gbG9jYXRpb25fYWRob2NfZGF0YSBpcyByZWFsbG9jYXRlZC4gICov CkBAIC0xMTYsMTMgKzExOCwxNyBAQCBzdGF0aWMgYm9vbAogY2FuX2JlX3N0b3JlZF9jb21wYWN0 bHlfcCAobGluZV9tYXBzICpzZXQsCiAJCQkgICBsb2NhdGlvbl90IGxvY3VzLAogCQkJICAgc291 cmNlX3JhbmdlIHNyY19yYW5nZSwKLQkJCSAgIHZvaWQgKmRhdGEpCisJCQkgICB2b2lkICpkYXRh LAorCQkJICAgdW5zaWduZWQgZGlzY3JpbWluYXRvcikKIHsKICAgLyogSWYgdGhlcmUncyBhbiBh ZC1ob2MgcG9pbnRlciwgd2UgY2FuJ3Qgc3RvcmUgaXQgZGlyZWN0bHkgaW4gdGhlCiAgICAgIGxv Y2F0aW9uX3QsIHdlIG5lZWQgdGhlIGxvb2thc2lkZS4gICovCiAgIGlmIChkYXRhKQogICAgIHJl dHVybiBmYWxzZTsKIAorICBpZiAoZGlzY3JpbWluYXRvciAhPSAwKQorICAgIHJldHVybiBmYWxz ZTsKKwogICAvKiBXZSBvbmx5IHN0b3JlIHJhbmdlcyB0aGF0IGJlZ2luIGF0IHRoZSBsb2N1cyBh bmQgdGhhdCBhcmUgc3VmZmljaWVudGx5CiAgICAgICJzYW5lIi4gICovCiAgIGlmIChzcmNfcmFu Z2UubV9zdGFydCAhPSBsb2N1cykKQEAgLTE1Nyw3ICsxNjMsOCBAQCBsb2NhdGlvbl90CiBnZXRf Y29tYmluZWRfYWRob2NfbG9jIChsaW5lX21hcHMgKnNldCwKIAkJCWxvY2F0aW9uX3QgbG9jdXMs CiAJCQlzb3VyY2VfcmFuZ2Ugc3JjX3JhbmdlLAotCQkJdm9pZCAqZGF0YSkKKwkJCXZvaWQgKmRh dGEsCisJCQl1bnNpZ25lZCBkaXNjcmltaW5hdG9yKQogewogICBzdHJ1Y3QgbG9jYXRpb25fYWRo b2NfZGF0YSBsYjsKICAgc3RydWN0IGxvY2F0aW9uX2FkaG9jX2RhdGEgKipzbG90OwpAQCAtMTc1 LDcgKzE4Miw3IEBAIGdldF9jb21iaW5lZF9hZGhvY19sb2MgKGxpbmVfbWFwcyAqc2V0LAogCQkg IHx8IHB1cmVfbG9jYXRpb25fcCAoc2V0LCBsb2N1cykpOwogCiAgIC8qIENvbnNpZGVyIHNob3J0 LXJhbmdlIG9wdGltaXphdGlvbi4gICovCi0gIGlmIChjYW5fYmVfc3RvcmVkX2NvbXBhY3RseV9w IChzZXQsIGxvY3VzLCBzcmNfcmFuZ2UsIGRhdGEpKQorICBpZiAoY2FuX2JlX3N0b3JlZF9jb21w YWN0bHlfcCAoc2V0LCBsb2N1cywgc3JjX3JhbmdlLCBkYXRhLCBkaXNjcmltaW5hdG9yKSkKICAg ICB7CiAgICAgICAvKiBUaGUgbG93IGJpdHMgb3VnaHQgdG8gYmUgY2xlYXIuICAqLwogICAgICAg bGluZW1hcF9hc3NlcnQgKHB1cmVfbG9jYXRpb25fcCAoc2V0LCBsb2N1cykpOwpAQCAtMTk1LDE1 ICsyMDIsMTYgQEAgZ2V0X2NvbWJpbmVkX2FkaG9jX2xvYyAobGluZV9tYXBzICpzZXQsCiAgICAg IHdoZW4gbG9jdXMgPT0gc3RhcnQgPT0gZmluaXNoIChhbmQgZGF0YSBpcyBOVUxMKS4gICovCiAg IGlmIChsb2N1cyA9PSBzcmNfcmFuZ2UubV9zdGFydAogICAgICAgJiYgbG9jdXMgPT0gc3JjX3Jh bmdlLm1fZmluaXNoCi0gICAgICAmJiAhZGF0YSkKKyAgICAgICYmICFkYXRhICYmIGRpc2NyaW1p bmF0b3IgPT0gMCkKICAgICByZXR1cm4gbG9jdXM7CiAKLSAgaWYgKCFkYXRhKQorICBpZiAoIWRh dGEgJiYgZGlzY3JpbWluYXRvciA9PSAwKQogICAgIHNldC0+bnVtX3Vub3B0aW1pemVkX3Jhbmdl cysrOwogCiAgIGxiLmxvY3VzID0gbG9jdXM7CiAgIGxiLnNyY19yYW5nZSA9IHNyY19yYW5nZTsK ICAgbGIuZGF0YSA9IGRhdGE7CisgIGxiLmRpc2NyaW1pbmF0b3IgPSBkaXNjcmltaW5hdG9yOwog ICBzbG90ID0gKHN0cnVjdCBsb2NhdGlvbl9hZGhvY19kYXRhICoqKQogICAgICAgaHRhYl9maW5k X3Nsb3QgKHNldC0+bG9jYXRpb25fYWRob2NfZGF0YV9tYXAuaHRhYiwgJmxiLCBJTlNFUlQpOwog ICBpZiAoKnNsb3QgPT0gTlVMTCkKQEAgLTI0OCw2ICsyNTYsMTMgQEAgZ2V0X2RhdGFfZnJvbV9h ZGhvY19sb2MgKGNvbnN0IGNsYXNzIGxpbmVfbWFwcyAqc2V0LCBsb2NhdGlvbl90IGxvYykKICAg cmV0dXJuIHNldC0+bG9jYXRpb25fYWRob2NfZGF0YV9tYXAuZGF0YVtsb2MgJiBNQVhfTE9DQVRJ T05fVF0uZGF0YTsKIH0KIAordW5zaWduZWQKK2dldF9kaXNjcmltaW5hdG9yX2Zyb21fYWRob2Nf bG9jIChjb25zdCBjbGFzcyBsaW5lX21hcHMgKnNldCwgbG9jYXRpb25fdCBsb2MpCit7CisgIGxp bmVtYXBfYXNzZXJ0IChJU19BREhPQ19MT0MgKGxvYykpOworICByZXR1cm4gc2V0LT5sb2NhdGlv bl9hZGhvY19kYXRhX21hcC5kYXRhW2xvYyAmIE1BWF9MT0NBVElPTl9UXS5kaXNjcmltaW5hdG9y OworfQorCiAvKiBSZXR1cm4gdGhlIGxvY2F0aW9uIGZvciB0aGUgYWRob2MgbG9jLiAgKi8KIAog bG9jYXRpb25fdApAQCAtMjkzLDYgKzMwOCwxNSBAQCBnZXRfcmFuZ2VfZnJvbV9sb2MgKGxpbmVf bWFwcyAqc2V0LAogICByZXR1cm4gc291cmNlX3JhbmdlOjpmcm9tX2xvY2F0aW9uIChsb2MpOwog fQogCit1bnNpZ25lZAorZ2V0X2Rpc2NyaW1pbmF0b3JfZnJvbV9sb2MgKGxpbmVfbWFwcyAqc2V0 LAorCQkJICAgIGxvY2F0aW9uX3QgbG9jKQoreworICBpZiAoSVNfQURIT0NfTE9DIChsb2MpKQor ICAgIHJldHVybiBnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2FkaG9jX2xvYyAoc2V0LCBsb2MpOwor ICByZXR1cm4gMDsKK30KKwogLyogR2V0IHdoZXRoZXIgbG9jYXRpb24gTE9DIGlzIGEgInB1cmUi IGxvY2F0aW9uLCBvcgogICAgd2hldGhlciBpdCBpcyBhbiBhZC1ob2MgbG9jYXRpb24sIG9yIGVt YmVkcyByYW5nZSBpbmZvcm1hdGlvbi4gICovCiAKLS0gCjIuMjUuMQoK --_002_CY5PR21MB354266BE8C1AD34D9B2B7B96917B9CY5PR21MB3542namp_--