From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR03-AM5-obe.outbound.protection.outlook.com (EUR03-AM5-obe.outbound.protection.outlook.com [40.107.3.69]) by mx.groups.io with SMTP id smtpd.web11.35605.1629782971831803664 for ; Mon, 23 Aug 2021 22:29:32 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=xeWpMer+; spf=pass (domain: arm.com, ip: 40.107.3.69, mailfrom: omkar.kulkarni@arm.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jOK48eY35Cv/X/UgvrB6ZvDmyz3JHbuUxJmZrkoHuv8=; b=xeWpMer+mjWeWx3mvDqKgMnQXA8yPVacxFZNk4GWJRi2Yyfl33OtTWA8p8iZ0DQ3l/5dgHlbl0Xys5ThM6Rmmf03Cn7mvpkSHtoMrUeNndXzuYcEfxQFFSLaDmYrLtHDNXHANarMhIwm2naXE7pFvZQKvR0+Yl/o7I6BoNJVsmI= Received: from DB6PR0801CA0060.eurprd08.prod.outlook.com (2603:10a6:4:2b::28) by VI1PR08MB3374.eurprd08.prod.outlook.com (2603:10a6:803:82::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4436.23; Tue, 24 Aug 2021 05:29:25 +0000 Received: from DB5EUR03FT031.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:2b:cafe::36) by DB6PR0801CA0060.outlook.office365.com (2603:10a6:4:2b::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4436.19 via Frontend Transport; Tue, 24 Aug 2021 05:29:25 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; edk2.groups.io; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;edk2.groups.io; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT031.mail.protection.outlook.com (10.152.20.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4436.19 via Frontend Transport; Tue, 24 Aug 2021 05:29:24 +0000 Received: ("Tessian outbound 32695b2df2f8:v103"); Tue, 24 Aug 2021 05:29:24 +0000 X-CR-MTA-TID: 64aa7808 Received: from 0b1aad62a799.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 74FA855F-5196-449E-89AE-31C5521181BA.1; Tue, 24 Aug 2021 05:29:14 +0000 Received: from EUR02-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 0b1aad62a799.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 24 Aug 2021 05:29:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eV5FoygOneMxK6htZQHb63fefDW7lygzconZa7SZToBE9/aFoB76o7UtNlhlpLShQ1tBdIYaSu7je/j0t/geVCkWky6VJHAY18LbTflwnjbzOaNI6dDUD4GlTue2QOBovlzxIdB2m/3pKEAThxpyvn6LHYNQQCVEgU5642+/A8ct7XeQGsJmZzX7VIPKmrGTx7qZV7piCFOimsdUIGdNrV+OiPxlcXqbnYsU/B8NT26k4uNcLd2Xo5FAlau1EEgRzMVP+SygqhmkG7VFTtDLplCgE6SK0YRfqY8p21ptxFBI6oqPbS+qobMWCm9eTavpWfwyMgS99BqguEck6a+9Qw== 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-SenderADCheck; bh=jOK48eY35Cv/X/UgvrB6ZvDmyz3JHbuUxJmZrkoHuv8=; b=mjuG1LThC8OHhsVcImNAzL/kh05TqSf+ex8UWuIpsVYLysGvE+SQMDDXg7chGXMy0IkjRuhVDrf33x4q0o6zNt6VuTZ6f/ObnvzdWWB1+XBDljDIiCQ4Z+sfUMHHwPB117d10ya/I+djpR15H6KsNc+V5L7+AWiaHq0mtE7wtAxCac4hxZxJn+ZLeFtYuMi5EOcaf5g7d5bsezPSRYxn8NO+8PQaZtRzcON9rv8ClpPoqcwB9oYpEmiec5bTpCRmL3DOOeXGcX0Ys3QZkEp4xBHYFPukpuW4tkJW4F+y/iQOX5GbTBFxRe155ZQUH/Ml/j1Dw0aqZZ4j6vd3g/8U7w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jOK48eY35Cv/X/UgvrB6ZvDmyz3JHbuUxJmZrkoHuv8=; b=xeWpMer+mjWeWx3mvDqKgMnQXA8yPVacxFZNk4GWJRi2Yyfl33OtTWA8p8iZ0DQ3l/5dgHlbl0Xys5ThM6Rmmf03Cn7mvpkSHtoMrUeNndXzuYcEfxQFFSLaDmYrLtHDNXHANarMhIwm2naXE7pFvZQKvR0+Yl/o7I6BoNJVsmI= Received: from DBAPR08MB5781.eurprd08.prod.outlook.com (2603:10a6:10:1ad::23) by DB9PR08MB6889.eurprd08.prod.outlook.com (2603:10a6:10:2a1::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4436.19; Tue, 24 Aug 2021 05:29:00 +0000 Received: from DBAPR08MB5781.eurprd08.prod.outlook.com ([fe80::c047:90bc:1a3b:4d88]) by DBAPR08MB5781.eurprd08.prod.outlook.com ([fe80::c047:90bc:1a3b:4d88%8]) with mapi id 15.20.4436.025; Tue, 24 Aug 2021 05:29:00 +0000 From: "Omkar Anand Kulkarni" To: Sami Mujawar , "devel@edk2.groups.io" CC: Ard Biesheuvel , nd Subject: Re: [PATCH v2 3/4] ArmPlatformPkg: retreive error source descriptors from MM Thread-Topic: [PATCH v2 3/4] ArmPlatformPkg: retreive error source descriptors from MM Thread-Index: AQHXiHZfyrzIOx1QAEOxzYG0EzguH6uBewiA Date: Tue, 24 Aug 2021 05:29:00 +0000 Message-ID: References: <20210710161831.30433-1-omkar.kulkarni@arm.com> <20210710161831.30433-4-omkar.kulkarni@arm.com> <38e5bdd4-17e2-a8de-193c-be98c2166220@arm.com> In-Reply-To: <38e5bdd4-17e2-a8de-193c-be98c2166220@arm.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 4072C699C905F0479E45916AA45D656F.0 x-checkrecipientchecked: true Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: dc324c43-4506-4a20-eff3-08d966c02297 x-ms-traffictypediagnostic: DB9PR08MB6889:|VI1PR08MB3374: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:5797;OLM:5797; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: qLUXdR2hIjIv1Dv9RQsRISPmKFygK1OLjMVlsdJo1m+QT7bMr+EZC9xiXhoJO8a0efRBeuq4tjxo3iGKbAaloXBFudC7GfznfW3PTxd4GbAcKjKbhyKms0ygqcnF8PjtOM+OlxdY0KnNevH4PKcTrGuc7YAAA5hoM1KVFal+lDpRiK9x9dJruVF7AkbFuP/79VnRcYI3EVQV2AxiSjBCkNOJKaYGQzCyQMVlLlEe0P2VlHR+hNc/myghJTk/ZmA4IyK6qacwwXAonbk8CY63rQYMbBPAGHgC1ephiwO6GHbS1tFRflL6hTB5OhjjH2F+011UbXdJZVTQXeEr/gNEYmKLj0Q7fqqdsLFf3ChD7t8LYFMW5409iZW8YlvOYrXE24iVx/iy3kwUT++PCDYFBsVVpM9OS21UuLgI1M4pCnitRyqe8iPZYsWGN6EppRhzK3D644fshF2ACvwpNXl7YFcoWASn1nmI1gjNHnCO76Y0aTOyWocaZMAr0Q0iZTHM3TUpv550Ost8YYQIzCS5+my9RETum5g2t/3bsEpzkzWNslBB0TqrPQLOPed//nJHbmSaa/fHQuVYBWDhNNOttJ79RNdygvj7aMe+Q8xyIqf+6xp80sfhO6ytrZ+Yvk/rBqv90iM5/CiIZZ1fSHljSbiGNYlfzMsSnuaEL26YfpE+d9V838iq0SS7kZawYAqKe9/pwHCr1JZHg2S2YCiVhQ== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5781.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(376002)(346002)(366004)(39860400002)(396003)(66556008)(7696005)(2906002)(5660300002)(71200400001)(33656002)(110136005)(66476007)(64756008)(53546011)(19627235002)(6506007)(66946007)(9686003)(54906003)(26005)(66446008)(38100700002)(4326008)(38070700005)(186003)(122000001)(52536014)(83380400001)(8676002)(316002)(76116006)(55016002)(8936002)(30864003)(478600001)(86362001)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZURRbTlOQmdzOWJvR0dqaDJEZ3AvRDFEM1VhcnJmNWJjVURUWDRCL29PK3RZ?= =?utf-8?B?MkU5VjlXS1hRN0pKajUxc0wzdkdvRFJtNUxGRlJwOHdQd3dTRGhveXRWS3RM?= =?utf-8?B?M3Q2cS9BUC9FSW45UGtXTllnSlQvd3ZrSkZDR3lEN2thbnFyWXhIa2N1ejNr?= =?utf-8?B?czZyU3NvWHVYQ2JaeDFybWZrVmtyZmN1R21XNjdZdzZMNTVlUDQyY2VtMlhV?= =?utf-8?B?M1hPaEFkNDU4cGo5N0Y5UkhPa25TTEROTnBJN1NTYTF2dXM5NC9raWlqQU9D?= =?utf-8?B?QUFrTTloWFRIUXd5cWdHbUk5TVRaWGNDaWk2clNqK09wbG1vNEJJTEVVRWhv?= =?utf-8?B?Tk9mMVlBNVlYcHB5Zld2ZUJVTGtTSENKbG9wbCtIMjhMNjZWWHhYVmFsckwy?= =?utf-8?B?a28xQjAzenhPaVB4S3VEMmVvTG9sV200aUd1RnYwZUhQZmUrVWkrbitkNEpx?= =?utf-8?B?c3NOK0xURW42NXhJcFdpcXY1dE5XZGpoemc0alBiUm5MQXhnWjcwR1ZLRXRz?= =?utf-8?B?K3BRQkpkREhpVUVLNTBkRWdQK0RQRWtoQXdMOHVaNkVyL0hwSVhYTS80RnJw?= =?utf-8?B?bUtsUCtCc05nZEpaNllkZmY2VGpOU2VjVkhmYkdqNitibHN0ZVg2S0kzdEV1?= =?utf-8?B?TDhhYmhObFZIWGozRCs4THJsejB2VnF5R3pQM2cvREpXTC9Zc1ZWTXZpMVY1?= =?utf-8?B?d25VYVNGTmJEUjVoZ1pkVHc2Snk0cWJmNSsyLzBSaHBxbjNiL09ITGpRVEJz?= =?utf-8?B?NkMxYUpRQmh5Yjc5RGwzbWFXdmtNTUt1RjdocDZlck4vU09UVFhrRENEeFo2?= =?utf-8?B?OWQ0NmhoT0x6TGU5ZkNveWpWb3NqclhvR2ZzeDN6K2dzRXFVQjFLZDVVYzZZ?= =?utf-8?B?ODF0YXJLSGdFRzlUS3AxR2FkTWMySWZyaG5ZNFNQekdOeFNHNm1TYWxoMDZJ?= =?utf-8?B?Vld5ZWdwQzBhUjFYYm84bTR6d2NEcmU1c3ArYzArcHhnWnF5ZlZXM1UyOGpL?= =?utf-8?B?Z2VvQmh3aE9JemE5cU85TFkrTFdoL25wWFc4djIvUVZhZzZldTc5QVNTbDRL?= =?utf-8?B?RWQ4M0lSejVmdm9WSnRsa3E3MXJUMGQ2bDBVZU4wSkROSVo3MFZVWFpmeHpz?= =?utf-8?B?TWxnOE02MHJRV253SWozc0pWeWZMS096emQ2OW1wUmRNMFhvRW9MZ2JXRWc1?= =?utf-8?B?aTJvcC9zWDFTaFh1SXBHQjFoc1o4Q0tuNzhtQ2lzWm9iMThhdU1KV0NmOHhC?= =?utf-8?B?OUpCZjdmbk41cGYxSXpTQXhtUlFsN1p4SC8yRUFUZ2cyU21WM0kwMDBYdGtw?= =?utf-8?B?VTQxeDNONTBNUXdndmFvWGhDWGhHdlJwaVFybHl5dXI3Q2UxR1dUNVJrSitG?= =?utf-8?B?WkQ4cVE4REJnNjRXMzRDRDg5TG5xVmZyZjNRcXJxNDA2cHRFb21hTzBjQzRl?= =?utf-8?B?Y0YzcHNjOTRnNmFHTDhYbHhCME5OUW1mQWtQSUlJcHVWM2VYNDhTWlVnTmJR?= =?utf-8?B?elppMzNmYmpLTEVNM0dENFpnbHcwM3JabmcyYzFLWVVBQndPbks3cnpYYkMv?= =?utf-8?B?OXJWWEROR3FXY2R3cnFRZ2d0SmFVREh5bExGMElQK08wZ21rSjBhSlNVVHNS?= =?utf-8?B?RStqTkFGbnBTZjlsMTQrQ24zN2JSaEdPSnFDYWNKaERCTHFmbDhoWVZpSTk1?= =?utf-8?B?RzNPVDIvbE9hN2M3Y0E0MXR6WHpJK0Vrb0pNUTh5RnBNTHNUanpHajlWYzlS?= =?utf-8?Q?r50NxNCxLcJb+AzEjbrfkoBrizd6DPKtqQwhRqw?= MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6889 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; Return-Path: Omkar.Kulkarni@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT031.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 33b5dff5-8d89-445e-ed4b-08d966c013fd X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DEgjPOHCX67btkwcatAlFnfEsgUJxowZ2rjpsuLkTog4gqGCwGUJsnXN0XGVzZc+5KCIzd0K6GxDla3PJ//2EAFkzeyY9fKePDOmQGchHY75TuYanBKJshHxtwPvsScGIjKsqJ8kRxQXR0y6Z6GYXaxcXJnNFk30wLk9+nDRp1xE+/uPBXeKXAgw/u+NoXimLV6SmIjVKh13uXyohHh/s/76/4eLZ4mwQFkfxMdxPubktPDQl12aQdrjefOkBcuEI0qmuKS1xglMxIPrDYccb+ryZom8l0o4chdLU+a7jj/ucuWkHf8AMkFpgMaf0y6JAXQeE7WmwviO8FrXwYRwzHb7/tnehOU6UgU5iowwWYBP/nuY8YwkYIcWNeEBPKrU35QmPCVcc8r1qYGsGqRe3jkG66oeHuLoP4iwUojBbpX9LigHy+ch+xjPeld3TlIvYSZilQjNv8bBvd1hxKacyDbY0shAQJeTy6mLcDXvkix6CEDFNz4l2n6VGdPG5H20XMp/2yAoNwydrFfZ6gAs60DplHHs5Y0KZnTSAb4UJoOPgYDRBNpCfRsH120TWy8Zo/DabGtzqDdhdoydy8JQN8OcQwTRkOSfmCqzMK3et8Q5dOQiguxHWYarjA4XEtfreUNwCUBDWIOESiNDqciehCC+4aEmg94PJCXpVCBZEy/4i/hiNgMcCizcqPcGR8G1xSQXAR4avG9mIOBp43LG1g== X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(4636009)(39860400002)(376002)(396003)(136003)(346002)(36840700001)(46966006)(33656002)(70206006)(5660300002)(4326008)(82310400003)(70586007)(86362001)(53546011)(316002)(336012)(186003)(47076005)(19627235002)(8676002)(6506007)(54906003)(36860700001)(82740400003)(30864003)(52536014)(81166007)(478600001)(2906002)(110136005)(83380400001)(8936002)(7696005)(356005)(9686003)(55016002)(26005);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Aug 2021 05:29:24.9702 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dc324c43-4506-4a20-eff3-08d966c02297 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB5EUR03FT031.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB3374 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgU2FtaSwNCg0KVGhhbmtzIGZvciB0aGUgcGF0Y2ggcmV2aWV3LiBQbGVhc2UgZmluZCBteSBy ZXNwb25zZSBpbmxpbmUuDQoNClJlZ2FyZHMsDQpPbWthcg0KDQpIaSBPbWthciwNClBsZWFzZSBm aW5kIG15IHJlc3BvbnNlIGlubGluZSBtYXJrZWQgW1NBTUldLg0KUmVnYXJkcywNClNhbWkgTXVq YXdhcg0KDQpPbiAxMC8wNy8yMDIxIDA1OjE4IFBNLCBPbWthciBBbmFuZCBLdWxrYXJuaSB3cm90 ZToNCkFkZCBhIGRyaXZlciB0aGF0IHJldHJlaXZlcyBlcnJvciBzb3VyY2UgZGVzY3JpcHRvcnMg ZnJvbSBNTSBhbmQNCnBvcHVsYXRlcyB0aG9zZSBpbnRvIHRoZSBIRVNUIEFDUEkgdGFibGUuIFRo ZSBlcnJvciBzb3VyY2UgZGVzY3JpcHRvcnMNCnRoYXQgYXJlIGF2YWlsYWJsZSBmcm9tIHRoZSBN TSBzaWRlIGFyZSByZXRyZWl2ZWQgdXNpbmcgTU0gQ29tbXVuaWNhdGUgMg0KcHJvdG9jb2wuDQoN ClRoZSBmaXJzdCBjYWxsIGludG8gdGhlIE1NIHJldHVybnMgdGhlIHNpemUgb2YgTU0gQ29tbXVu aWNhdGUgYnVmZmVyDQpyZXF1aXJlZCB0byBob2xkIGFsbCBlcnJvciBzb3VyY2UgZGVzY3JpcHRv ciBpbmZvLiBUaGUgY29tbXVuaWNhdGlvbg0KYnVmZmVyIG9mIHRoYXQgc2l6ZSBpcyB0aGVuIGFs bG9jYXRlZCBhbmQgdGhlIHNlY29uZCBjYWxsIGludG8gTU0NCnJldHVybnMgdGhlIGVycm9yIHNv dXJjZSBkZXNjcmlwdG9ycyBpbiB0aGUgY29tbXVuaWNhdGlvbiBidWZmZXIuDQpUaGUgcmV0cmVp dmVkIGVycm9yIHNvdXJjZSBkZXNjcmlwdG9ycyBhcmUgdGhlbiBhcHBlbmRlZCB0byB0aGUgSEVT VA0KdGFibGUuDQoNCkNvLWF1dGhvcmVkLWJ5OiBUaG9tYXMgQWJyYWhhbSBtYWlsdG86dGhvbWFz LmFicmFoYW1AYXJtLmNvbQ0KU2lnbmVkLW9mZi1ieTogT21rYXIgQW5hbmQgS3Vsa2FybmkgbWFp bHRvOm9ta2FyLmt1bGthcm5pQGFybS5jb20NCi0tLQ0KIEFybVBsYXRmb3JtUGtnL0FybVBsYXRm b3JtUGtnLmRlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDcg Kw0KIEFybVBsYXRmb3JtUGtnL0RyaXZlcnMvSGVzdE1tRXJyb3JTb3VyY2VzL0hlc3RFcnJvclNv dXJjZUR4ZS5pbmYgICAgICAgICAgfCAgNDQgKysrDQogQXJtUGxhdGZvcm1Qa2cvRHJpdmVycy9I ZXN0TW1FcnJvclNvdXJjZXMvSGVzdEVycm9yU291cmNlU3RhbmRhbG9uZU1tLmluZiB8ICA1MSAr KysrDQogQXJtUGxhdGZvcm1Qa2cvRHJpdmVycy9IZXN0TW1FcnJvclNvdXJjZXMvSGVzdE1tRXJy b3JTb3VyY2VDb21tb24uaCAgICAgICB8ICAzNyArKysNCiBBcm1QbGF0Zm9ybVBrZy9Ecml2ZXJz L0hlc3RNbUVycm9yU291cmNlcy9IZXN0RXJyb3JTb3VyY2VEeGUuYyAgICAgICAgICAgIHwgMzA4 ICsrKysrKysrKysrKysrKysrKysNCiBBcm1QbGF0Zm9ybVBrZy9Ecml2ZXJzL0hlc3RNbUVycm9y U291cmNlcy9IZXN0RXJyb3JTb3VyY2VTdGFuZGFsb25lTW0uYyAgIHwgMzEyICsrKysrKysrKysr KysrKysrKysrDQpbU0FNSV0gU2hvdWxkIHRoaXMgcGF0Y2ggYmUgc3BsaXQgaW50byAyPw0KDQpU aGUgcmVhc29uIG9mIGtlZXAgdGhpcyBhIHNpbmdsZSBwYXRjaCBpcyB0aGUgMiBkcml2ZXJzLCBE eGUgYW5kIGl0cyBNTSBjb3VudGVycGFydCB3b3JrIHRvZ2V0aGVyIHRvIGNvbGxlY3QgdGhlIGVy cm9yIHNvdXJjZSBkZXNjcmlwdG9ycy4gDQoNClRob3VnaHQgaXRzIGxvZ2ljYWwgdG8ga2VlcCB0 aGVtIHRvZ2V0aGVyIGFzIHRoZXkgY29udHJpYnV0ZSB0byBhIHNpbmdsZSB0YXNrIHdoaWNoIGlz IGNvbGxlY3Rpb24gb2Ygc2VjdXJlIGVycm9yIHNvdXJjZSBkZXNjcmlwdG9ycy4NCg0KIDYgZmls ZXMgY2hhbmdlZCwgNzU5IGluc2VydGlvbnMoKykNCg0KZGlmZiAtLWdpdCBhL0FybVBsYXRmb3Jt UGtnL0FybVBsYXRmb3JtUGtnLmRlYyBiL0FybVBsYXRmb3JtUGtnL0FybVBsYXRmb3JtUGtnLmRl Yw0KaW5kZXggNGYwNjIyOTI2NjNiLi44NDZiM2U4NjNhYTkgMTAwNjQ0DQotLS0gYS9Bcm1QbGF0 Zm9ybVBrZy9Bcm1QbGF0Zm9ybVBrZy5kZWMNCisrKyBiL0FybVBsYXRmb3JtUGtnL0FybVBsYXRm b3JtUGtnLmRlYw0KQEAgLTUyLDYgKzUyLDggQEANCiANCiBbR3VpZHMuY29tbW9uXQ0KICAgZ0Fy bVBsYXRmb3JtVG9rZW5TcGFjZUd1aWQgICA9IHsgMHg5YzBhYWVkNCwgMHg3NGM1LCAweDQwNDMs IHsgMHhiNCwgMHgxNywgMHhhMywgMHgyMiwgMHgzOCwgMHgxNCwgMHhjZSwgMHg3NiB9IH0NCisg IGdBcm1QbGF0Zm9ybUhlc3RFcnJvclNvdXJjZXNHdWlkID0geyAweDc2YjhhYjQzLCAweDgyMmQs IDB4NGIwMCwgeyAweDlmLCAweGQwLCAweGY0LCAweGE1LCAweDM1LCAweDgyLCAweDQ3LCAweDBh IH0gfQ0KKyAgZ01tSGVzdEdldEVycm9yU291cmNlSW5mb0d1aWQgPSB7IDB4N2Q2MDI5NTEsIDB4 Njc4ZSwgMHg0Y2M0LCB7IDB4OTgsIDB4ZDksIDB4ZTMsIDB4NzYsIDB4MDQsIDB4ZjYsIDB4OTMs IDB4MGQgfSB9DQogDQogW1BjZHNGZWF0dXJlRmxhZy5jb21tb25dDQogICBnQXJtUGxhdGZvcm1U b2tlblNwYWNlR3VpZC5QY2RTZW5kU2dpVG9CcmluZ1VwU2Vjb25kYXJ5Q29yZXN8RkFMU0V8Qk9P TEVBTnwweDAwMDAwMDA0DQpAQCAtMTI4LDYgKzEzMCwxMSBAQA0KIA0KICAgZ0FybVBsYXRmb3Jt VG9rZW5TcGFjZUd1aWQuUGNkV2F0Y2hkb2dDb3VudHwweDB8VUlOVDMyfDB4MDAwMDAwMzMNCiAN CitbUGNkc0ZpeGVkQXRCdWlsZCwgUGNkc1BhdGNoYWJsZUluTW9kdWxlXQ0KKyAgIyMgQUNQSSBD UEVSIG1lbW9yeSBzcGFjZQ0KKyAgZ0FybVBsYXRmb3JtVG9rZW5TcGFjZUd1aWQuUGNkR2hlc0dl bmVyaWNFcnJvckRhdGFNbUJ1ZmZlckJhc2V8MHgwMDAwMDAwMHxVSU5UNjR8MHgwMDAwMDA0Ng0K KyAgZ0FybVBsYXRmb3JtVG9rZW5TcGFjZUd1aWQuUGNkR2hlc0dlbmVyaWNFcnJvckRhdGFNbUJ1 ZmZlclNpemV8MHgwMDAwMDAwMHxVSU5UNjR8MHgwMDAwMDA0Nw0KKw0KIFtQcm90b2NvbHMuY29t bW9uXQ0KICAgIyMgQXJtIFBsYXRmb3JtIEhFU1QgdGFibGUgZ2VuZXJhdGlvbiBwcm90b2NvbA0K ICAgZ0hlc3RUYWJsZVByb3RvY29sR3VpZCA9IHsgMHg3MDViZGNkOSwgMHg4YzQ3LCAweDQ1N2Us IHsgMHhhZCwgMHgwZCwgMHhmNywgMHg4NiwgMHhmMywgMHg0YSwgMHgwZCwgMHg2MyB9IH0NCmRp ZmYgLS1naXQgYS9Bcm1QbGF0Zm9ybVBrZy9Ecml2ZXJzL0hlc3RNbUVycm9yU291cmNlcy9IZXN0 RXJyb3JTb3VyY2VEeGUuaW5mIGIvQXJtUGxhdGZvcm1Qa2cvRHJpdmVycy9IZXN0TW1FcnJvclNv dXJjZXMvSGVzdEVycm9yU291cmNlRHhlLmluZg0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4 IDAwMDAwMDAwMDAwMC4uNTIyN2RlYTkxNjMwDQotLS0gL2Rldi9udWxsDQorKysgYi9Bcm1QbGF0 Zm9ybVBrZy9Ecml2ZXJzL0hlc3RNbUVycm9yU291cmNlcy9IZXN0RXJyb3JTb3VyY2VEeGUuaW5m DQpAQCAtMCwwICsxLDQ0IEBADQorIyMgQGZpbGUNCisjICBEWEUgZHJpdmVyIHRvIGdldCBzZWN1 cmUgZXJyb3Igc291cmNlcy4NCisjDQorIyAgRFhFIGRyaXZlciB0byByZXRyaWV2ZSB0aGUgZXJy b3Igc291cmNlIGRlc2NyaXB0b3JzIGZyb20gU3RhbmRhbG9uZSBNTSBhbmQNCisjICBhcHBlbmQg dGhvc2UgdG8gdGhlIEhFU1QgdGFibGUuDQorIw0KKyMgIENvcHlyaWdodCAoYykgMjAyMCAtIDIw MjEsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyMgIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQorIw0KKyMjDQorDQorW0RlZmluZXNdDQor ICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDFBDQorICBCQVNFX05B TUUgICAgICAgICAgICAgICAgICAgICAgPSBIZXN0TW1FcnJvclNvdXJjZUR4ZQ0KKyAgRklMRV9H VUlEICAgICAgICAgICAgICAgICAgICAgID0gNzZiOGFiNDMtODIyZC00YjAwLTlmZDAtZjRhNTM1 ODI0NzBhDQorICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgPSBEWEVfRFJJVkVSDQor ICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCisgIEVOVFJZX1BPSU5UICAg ICAgICAgICAgICAgICAgICA9IEhlc3RFcnJvclNvdXJjZUluaXRpYWxpemUNCisNCitbU291cmNl cy5jb21tb25dDQorICBIZXN0RXJyb3JTb3VyY2VEeGUuYw0KKw0KK1tQYWNrYWdlc10NCisgIEFy bVBrZy9Bcm1Qa2cuZGVjDQorICBBcm1QbGF0Zm9ybVBrZy9Bcm1QbGF0Zm9ybVBrZy5kZWMNCisg IE1kZVBrZy9NZGVQa2cuZGVjDQorICBTdGFuZGFsb25lTW1Qa2cvU3RhbmRhbG9uZU1tUGtnLmRl Yw0KKw0KK1tMaWJyYXJ5Q2xhc3Nlc10NCisgIEJhc2VNZW1vcnlMaWINCisgIERlYnVnTGliDQor ICBEeGVTZXJ2aWNlc1RhYmxlTGliDQorICBVZWZpRHJpdmVyRW50cnlQb2ludA0KKyAgVWVmaUxp Yg0KKw0KK1tHdWlkc10NCisgIGdNbUhlc3RHZXRFcnJvclNvdXJjZUluZm9HdWlkICAgICAgICAg ICAgICAgICAgIyMgUFJPRFVDRVMNCisNCitbUHJvdG9jb2xzXQ0KKyAgZ0hlc3RUYWJsZVByb3Rv Y29sR3VpZCAgICAgICAgICAgICAgICAgICAgICAgICAjIyBDT05TVU1FUw0KKyAgZ0VmaU1tQ29t bXVuaWNhdGlvbjJQcm90b2NvbEd1aWQNCisNCitbRGVwZXhdDQorICBnSGVzdFRhYmxlUHJvdG9j b2xHdWlkIEFORCBnRWZpTW1Db21tdW5pY2F0aW9uMlByb3RvY29sR3VpZA0KZGlmZiAtLWdpdCBh L0FybVBsYXRmb3JtUGtnL0RyaXZlcnMvSGVzdE1tRXJyb3JTb3VyY2VzL0hlc3RFcnJvclNvdXJj ZVN0YW5kYWxvbmVNbS5pbmYgYi9Bcm1QbGF0Zm9ybVBrZy9Ecml2ZXJzL0hlc3RNbUVycm9yU291 cmNlcy9IZXN0RXJyb3JTb3VyY2VTdGFuZGFsb25lTW0uaW5mDQpuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KaW5kZXggMDAwMDAwMDAwMDAwLi45ZDU2NmRlOWJlYzMNCi0tLSAvZGV2L251bGwNCisrKyBi L0FybVBsYXRmb3JtUGtnL0RyaXZlcnMvSGVzdE1tRXJyb3JTb3VyY2VzL0hlc3RFcnJvclNvdXJj ZVN0YW5kYWxvbmVNbS5pbmYNCkBAIC0wLDAgKzEsNTEgQEANCisjIyBAZmlsZQ0KKyMgIEhFU1Qg ZXJyb3Igc291cmNlIGdhdGV3YXkgU3RhbmRhbG9uZSBNTSBkcml2ZXIuDQorIw0KKyMgIENvbGxl Y3RzIEhFU1QgZXJyb3Igc291cmNlIGRlc2NyaXB0b3JzLGJ5IGNvbW11bmljYXRpbmcgd2l0aCBh bGwgdGhlIE1NDQorIyAgZHJpdmVycyBpbXBsZW1lbnRpbmcgdGhlIEhFU1QgZXJyb3Igc291cmNl IGRlc2NyaXB0b3IgcHJvdG9jb2wuDQorIw0KKyMgIENvcHlyaWdodCAoYykgMjAyMCAtIDIwMjEs IEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyMgIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQorIw0KKyMjDQorDQorW0RlZmluZXNdDQorICBJ TkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDFBDQorICBCQVNFX05BTUUg ICAgICAgICAgICAgICAgICAgICAgPSBIZXN0RXJyb3JTb3VyY2VTdGFuZGFsb25lTW0NCisgIEZJ TEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDNkZGJlYmNjLTk4NDEtNGVmOC04N2ZhLTMw NTg0M2MxOTIyZA0KKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gTU1fU1RBTkRB TE9ORQ0KKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQorICBQSV9TUEVD SUZJQ0FUSU9OX1ZFUlNJT04gICAgICAgPSAweDAwMDEwMDMyDQorICBFTlRSWV9QT0lOVCAgICAg ICAgICAgICAgICAgICAgPSBTdGFuZGFsb25lTW1IZXN0RXJyb3JTb3VyY2VJbml0aWFsaXplDQor DQorW1NvdXJjZXNdDQorICBIZXN0RXJyb3JTb3VyY2VTdGFuZGFsb25lTW0uYw0KKw0KK1tQYWNr YWdlc10NCisgIEFybVBrZy9Bcm1Qa2cuZGVjDQorICBBcm1QbGF0Zm9ybVBrZy9Bcm1QbGF0Zm9y bVBrZy5kZWMNCisgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQorICBNZGVQa2cvTWRl UGtnLmRlYw0KKyAgU3RhbmRhbG9uZU1tUGtnL1N0YW5kYWxvbmVNbVBrZy5kZWMNCisNCitbTGli cmFyeUNsYXNzZXNdDQorICBBcm1MaWINCisgIEFybVN2Y0xpYg0KKyAgQmFzZU1lbW9yeUxpYg0K KyAgRGVidWdMaWINCisgIE1lbW9yeUFsbG9jYXRpb25MaWINCisgIFN0YW5kYWxvbmVNbURyaXZl ckVudHJ5UG9pbnQNCisNCitbUHJvdG9jb2xzXQ0KKyAgZ01tSGVzdEVycm9yU291cmNlRGVzY1By b3RvY29sR3VpZA0KKw0KK1tHdWlkc10NCisgIGdNbUhlc3RHZXRFcnJvclNvdXJjZUluZm9HdWlk ICAgICAgICAgICAgICAgIyNQUk9EVUNFUw0KKyAgZ0VmaVN0YW5kYWxvbmVNbU5vblNlY3VyZUJ1 ZmZlckd1aWQNCisNCitbRml4ZWRQY2RdDQorICBnQXJtUGxhdGZvcm1Ub2tlblNwYWNlR3VpZC5Q Y2RHaGVzR2VuZXJpY0Vycm9yRGF0YU1tQnVmZmVyQmFzZQ0KKyAgZ0FybVBsYXRmb3JtVG9rZW5T cGFjZUd1aWQuUGNkR2hlc0dlbmVyaWNFcnJvckRhdGFNbUJ1ZmZlclNpemUNCisNCitbRGVwZXhd DQorICBUUlVFDQpkaWZmIC0tZ2l0IGEvQXJtUGxhdGZvcm1Qa2cvRHJpdmVycy9IZXN0TW1FcnJv clNvdXJjZXMvSGVzdE1tRXJyb3JTb3VyY2VDb21tb24uaCBiL0FybVBsYXRmb3JtUGtnL0RyaXZl cnMvSGVzdE1tRXJyb3JTb3VyY2VzL0hlc3RNbUVycm9yU291cmNlQ29tbW9uLmgNCm5ldyBmaWxl IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjZkZGM2YmQyMTkyMg0KLS0tIC9kZXYv bnVsbA0KKysrIGIvQXJtUGxhdGZvcm1Qa2cvRHJpdmVycy9IZXN0TW1FcnJvclNvdXJjZXMvSGVz dE1tRXJyb3JTb3VyY2VDb21tb24uaA0KQEAgLTAsMCArMSwzNyBAQA0KKy8qKiBAZmlsZQ0KKyAg RGF0YSBzdHJ1Y3R1cmVzIGZvciBlcnJvciBzb3VyY2UgZGVzY3JpcHRvciBpbmZvcm1hdGlvbi4N CisNCisgIFRoaXMgZGF0YSBzdHJ1Y3R1cmUgZm9ybXMgdGhlIENvbW1CdWZmZXIgcGFydCBvZiB0 aGUgTU0gQ29tbXVuaWNhdGlvbg0KKyAgcHJvdG9jb2wgdXNlZCBmb3IgY29tbXVuaWNhdGluZyB0 aGUgSGFyZHdhcmUgRXJyb3Igc291cmNlcyBmb3JtIE1NIHRvDQorICBOb24tTU0gZW52aXJvbm1l bnQuDQorDQorICBDb3B5cmlnaHQgKGMpIDIwMjAgLSAyMDIxLCBBUk0gTGltaXRlZC4gQWxsIHJp Z2h0cyByZXNlcnZlZC4NCisgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2Ut UGF0ZW50DQorKiovDQorDQorI2lmbmRlZiBIRVNUX0VSUk9SX1NPVVJDRV9ERVNDUklQVE9SX0hf DQorI2RlZmluZSBIRVNUX0VSUk9SX1NPVVJDRV9ERVNDUklQVE9SX0hfDQorDQorI2RlZmluZSBI RVNUX0VSUk9SX1NPVVJDRV9ERVNDX0lORk9fU0laRSBcDQorICAoT0ZGU0VUX09GIChIRVNUX0VS Uk9SX1NPVVJDRV9ERVNDX0lORk8sIEVyclNvdXJjZURlc2NMaXN0KSkNCltTQU1JXSBJIGZlZWwg dGhlcmUgY2FuIGJlIGEgc2ltcGxlIHdheSB0byBkbyB0aGlzLCBzZWUgdGhlIGNvbW1lbnRzIGJl bG93Lg0KDQpPa2F5LCBwbGVhc2Ugc2VlIGNvbW1lbnQgYmVsb3cuDQoNCi0gT21rYXINCg0KKw0K Ky8vDQorLy8gRGF0YSBTdHJ1Y3R1cmUgdG8gY29tbXVuaWNhdGUgdGhlIGVycm9yIHNvdXJjZSBk ZXNjcmlwdG9yIGluZm9ybWF0aW9uIGZyb20NCisvLyBTdGFuZGFsb25lIE1NLg0KKy8vDQordHlw ZWRlZiBzdHJ1Y3Qgew0KKyAgLy8NCisgIC8vIFRvdGFsIGNvdW50IG9mIGVycm9yIHNvdXJjZSBk ZXNjcmlwdG9ycy4NCisgIC8vDQorICBVSU5UTiBFcnJTb3VyY2VEZXNjQ291bnQ7DQorICAvLw0K KyAgLy8gVG90YWwgc2l6ZSBvZiBhbGwgdGhlIGVycm9yIHNvdXJjZSBkZXNjcmlwdG9ycy4NCisg IC8vDQpbU0FNSV0gRG9lcyB0aGUgVG90YWwgc2l6ZSBhbHNvIGluY2x1ZGUgdGhlIHNpemUgb2Yg RXJyU291cmNlRGVzY0NvdW50IGFuZCBFcnJTb3VyY2VEZXNjU2l6ZT/CoCANCg0KTm8gaXQgb25s eSBpbmRpY2F0ZXMgdGhlIHNpemUgb2YgZXJyb3Igc291cmNlIGRlc2NyaXB0b3JzLiBIRVNUX0VS Uk9SX1NPVVJDRV9ERVNDX0lORk8gc3RydWN0IHJlcHJlc2VudHMgdGhlIGRhdGEgcGFydCBvZiB0 aGUgTU0gQ29tbXVuaWNhdGlvbiBidWZmZXIuIFNvIENvbW1CdWZmU2l6ZSAgcGFyYW1ldGVyIGZv ciB0aGUgTU0gQ29tbXVuaWNhdGlvbiBwcm90b2NvbCB0YWtlcyBjYXJlIG9mIHRoZSBzaXplIGZv ciB0aGUgZW50aXJlIHN0cnVjdHVyZS4NCg0KLSBPbWthcg0KDQorICBVSU5UTiBFcnJTb3VyY2VE ZXNjU2l6ZTsNCltTQU1JXSBDYW4gdGhlIGZpcnN0IDIgZmllbGRzIG9mIHRoaXMgc3RydWN0dXJl IGJlIG1vdmVkIHRvIGEgc3RydWN0dXJlIGNhbGxlZCBIRVNUX0VSUk9SX1NPVVJDRV9ERVNDX0hF QURFUj8gSSB0aGluayBpdCBtYXkgc2ltcGxpZnkgY29tcHV0aW5nIG9mIHRoZSBzaXplIG9mIEhF U1RfRVJST1JfU09VUkNFX0RFU0NfSU5GTy4gDQpbL1NBTUldDQoNCkl0IHdhcyBhZGRlZCB0byBt YWtlIGNvZGUgbW9yZSBpbnR1aXRpdmUsIHJlZmVycmluZyB0byBleGFtcGxlIGltcGxlbWVudGF0 aW9uIGZvciBzdHJ1Y3QgU01NX0ZUV19DT01NVU5JQ0FURV9GVU5DVElPTl9IRUFERVIgaW4gVW5p dmVyc2FsL0ZhdWx0VG9sZXJhbnRXcml0ZUR4ZS9GYXVsdFRvbGVyYW50V3JpdGVTbW1Db21tb24u aCAgDQoNCi0gT21rYXINCg0KKyAgLy8NCisgIC8vIEFycmF5IG9mIGVycm9yIHNvdXJjZSBkZXNj cmlwdG9ycyB0aGF0IGlzIEVyclNvdXJjZURlc2NTaXplIGluIHNpemUuDQorICAvLw0KKyAgVUlO VDggRXJyU291cmNlRGVzY0xpc3RbMV07DQorfSBIRVNUX0VSUk9SX1NPVVJDRV9ERVNDX0lORk87 DQorDQorI2VuZGlmIC8vIEhFU1RfRVJST1JfU09VUkNFX0RFU0NSSVBUT1JfSF8NCmRpZmYgLS1n aXQgYS9Bcm1QbGF0Zm9ybVBrZy9Ecml2ZXJzL0hlc3RNbUVycm9yU291cmNlcy9IZXN0RXJyb3JT b3VyY2VEeGUuYyBiL0FybVBsYXRmb3JtUGtnL0RyaXZlcnMvSGVzdE1tRXJyb3JTb3VyY2VzL0hl c3RFcnJvclNvdXJjZUR4ZS5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAw MDAwLi5hY2ZiMGZjOWU4MzgNCi0tLSAvZGV2L251bGwNCisrKyBiL0FybVBsYXRmb3JtUGtnL0Ry aXZlcnMvSGVzdE1tRXJyb3JTb3VyY2VzL0hlc3RFcnJvclNvdXJjZUR4ZS5jDQpAQCAtMCwwICsx LDMwOCBAQA0KKy8qKiBAZmlsZQ0KKyAgQ29sbGVjdHMgYW5kIGFwcGVuZHMgdGhlIEhFU1QgZXJy b3Igc291cmNlIGRlc2NyaXB0b3JzIGZyb20gdGhlIE1NIGRyaXZlcnMuDQorDQorICBUaGUgZHJp dmVycyBlbnRyeSBwb2ludCBsb2NhdGVzIHRoZSBNTSBDb21tdW5pY2F0aW9uIHByb3RvY29sIGFu ZCBjYWxscyBpbnRvDQorICBTdGFuZGFsb25lIE1NIHRvIGdldCB0aGUgSEVTVCBlcnJvciBzb3Vy Y2VzIGxlbmd0aCBhbmQgY291bnQuIEl0IGFsc28NCisgIHJldHJpZXZlcyBkZXNjcmlwdG9yIGlu Zm9ybWF0aW9uLiBUaGUgaW5mb3JtYXRpb24gaXMgdGhlbiB1c2VkIHRvIGJ1aWxkIHRoZQ0KKyAg SEVTVCB0YWJsZSB1c2luZyB0aGUgSEVTVCB0YWJsZSBnZW5lcmF0aW9uIHByb3RvY29sLg0KKw0K KyAgVGhpcyBkcml2ZXIgY29sbGVjdHMgdGhlIHNlY3VyZSBlcnJvciBzb3VyY2UgZGVzY3JpcHRv ciBpbmZvcm1hdGlvbiBmcm9tIHRoZQ0KKyAgTU0gZHJ2aWVycyB0aGF0IGltcGxlbWVudCBIRVNU IGVycm9yIHNvdXJjZSBwcm90b2NvbC4gSW5zdGVhZCBvZiBkaXJlY3RseQ0KKyAgY29tbXVuaWNh dGluZyB3aXRoIHRoZSBpbmRpdmlkdWFsIE1NIGRyaXZlcnMsIGl0IGNhbGxzIGludG8NCisgIEhl c3RFcnJvclNvdXJjZVN0YW5kYWxvbmVNTSBkcml2ZXIgd2hpY2ggaXMgYSBnYXR3YXkgTU0gZHJp dmVyLiBUaGlzIE1NIGRyaXZlcg0KKyAgaW4tdHVybiBjb21tdW5pY2F0ZXMgd2l0aCBpbmRpdmlk dWFsIE1NIGRyaXZlcnMgY29sbGVjdGluZyB0aGUgZXJyb3Igc291cmNlDQorICBkZXNjcmlwdG9y IGluZm9ybWF0aW9uLg0KKw0KKyAgT25jZSBhbGwgdGhlIGVycm9yIHNvdXJjZSBkZXNjcmlwdG9y IGluZm9ybWF0aW9uIGlzIHJldHJpZXZlZCB0aGUgZHJpdmVyDQorICBhcHBlbmRzIHRoZSBkZXNj cmlwdG9ycyB0byBIRVNUIHRhYmxlIHVzaW5nIHRoZSBIZXN0RHhlIGRyaXZlci4NCisNCisgIENv cHlyaWdodCAoYykgMjAyMCAtIDIwMjEsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk Lg0KKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisqKi8N CisNCisjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQorI2luY2x1ZGUgPExpYnJh cnkvQmFzZU1lbW9yeUxpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQorI2lu Y2x1ZGUgPExpYnJhcnkvRHhlU2VydmljZXNUYWJsZUxpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5 L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZp Y2VzVGFibGVMaWIuaD4NCisjaW5jbHVkZSA8UHJvdG9jb2wvTW1Db21tdW5pY2F0aW9uMi5oPg0K KyNpbmNsdWRlIDxQcm90b2NvbC9IZXN0VGFibGUuaD4NCisjaW5jbHVkZSAiSGVzdE1tRXJyb3JT b3VyY2VDb21tb24uaCINCisNCisjZGVmaW5lIE1NX0NPTU1VTklDQVRFX0hFQURFUl9TSVpFIChP RkZTRVRfT0YgKEVGSV9NTV9DT01NVU5JQ0FURV9IRUFERVIsIERhdGEpKQ0KW1NBTUldIENhbiB0 aGlzIGRlZmluaXRpb24gYmUgbW92ZWQgdG8gTWRlUGtnXEluY2x1ZGVcUHJvdG9jb2xcTW1Db21t dW5pY2F0aW9uLmgsIHBsZWFzZSA/DQoNCkFjay4NCg0KLSBPbWthcg0KDQorDQorU1RBVElDIEhF U1RfVEFCTEVfUFJPVE9DT0wgKm1IZXN0UHJvdG9jb2w7DQorU1RBVElDIEVGSV9NTV9DT01NVU5J Q0FUSU9OMl9QUk9UT0NPTCAqbU1tQ29tbXVuaWNhdGlvbjI7DQorDQorLyoqDQorICBSZXRyaWV2 ZSB0aGUgZXJyb3Igc291cmNlIGRlc2NyaXB0b3JzIGZyb20gU3RhbmRhbG9uZSBNTS4NCisNCisg IEluaXRpYWxpemUgdGhlIE1NIGNvbW1pbmljYXRpb24gYnVmZmVyIGJ5IGFzc2lnbmluZyB0aGUg TU0gc2VydmljZSB0bw0KKyAgaW52b2tlIGFzIGdNbUhlc3RHZXRFcnJvclNvdXJjZUluZm9HdWlk LiBVc2UgdGhlIE1NIGNvbW11bmljYXRpb24NCisgIHByb3RvY29sIHRvIHJldHJpZXZlIHRoZSBl cnJvciBzb3VyY2UgZGVzY3JpcHRvcnMuDQorDQorICBAcGFyYW1baW5dICAgICAgIENvbW1CdWZm U2l6ZSAgU2l6ZSBvZiBjb21tdW5pY2F0ZSBidWZmZXIuDQorICBAcGFyYW1baW4sIG91dF0gIENv bW1CdWZmZXIgICAgVGhlIGNvbW11bmljYXRlIGJ1ZmZlci4NCisNCisgIEByZXR2YWwgIEVGSV9T VUNDRVNTICBNTSBDb21tdW5pY2F0ZSBwcm90b2NvbCBjYWxsIHN1Y2Nlc3NmdWwuDQorICBAcmV0 dmFsICBPdGhlciAgICAgICAgTU0gQ29tbXVuaWNhdGUgcHJvdG9jb2wgY2FsbCBmYWlsZWQuDQor KiovDQorU1RBVElDDQorRUZJX1NUQVRVUw0KK0dldEVycm9yU291cmNlRGVzY3JpcHRvcnMgKA0K KyAgSU4gICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgQ29tbUJ1ZmZTaXplLA0KKyAgSU4g T1VUIEVGSV9NTV9DT01NVU5JQ0FURV9IRUFERVIgKipDb21tQnVmZmVyDQorICApDQorew0KKyAg RUZJX1NUQVRVUyBTdGF0dXM7DQorDQorICAvLw0KKyAgLy8gSW5pdGlhbGl6ZSB0aGUgQ29tbUJ1 ZmZlciB3aXRoIE1NIENvbW11bmljYXRlIG1ldGFkYXRhLg0KKyAgLy8NCisgIENvcHlHdWlkICgm KCpDb21tQnVmZmVyKS0+SGVhZGVyR3VpZCwgJmdNbUhlc3RHZXRFcnJvclNvdXJjZUluZm9HdWlk KTsNCisgICgqQ29tbUJ1ZmZlciktPk1lc3NhZ2VMZW5ndGggPQ0KKyAgICBDb21tQnVmZlNpemUg LQ0KKyAgICBzaXplb2YgKCgqQ29tbUJ1ZmZlciktPkhlYWRlckd1aWQpIC0NCisgICAgc2l6ZW9m ICgoKkNvbW1CdWZmZXIpLT5NZXNzYWdlTGVuZ3RoKTsNCisNCisgIC8vDQorICAvLyBDYWxsIGlu dG8gdGhlIFN0YW5kYWxvbmUgTU0gdXNpbmcgdGhlIE1NIENvbW11bmljYXRlIHByb3RvY29sLg0K KyAgLy8NCisgIFN0YXR1cyA9IG1NbUNvbW11bmljYXRpb24yLT5Db21tdW5pY2F0ZSAoDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTW1Db21tdW5pY2F0aW9uMiwNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChWT0lEICopKkNvbW1CdWZmZXIsDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoVk9JRCAqKSpDb21tQnVmZmVyLA0KW1NBTUldIENhbiB5 b3UgY2hlY2sgaWYgdGhlIHRoaXJkIHBhcmFtZXRlciB0byBDb21tdW5pY2F0ZSgpIGlzIGNvcnJl Y3QsIHBsZWFzZT8NCg0KQWNrLiBQYXNzaW5nIG9ubHkgM3JkIHBhcmFtZXRlciBpcyBzdWZmaWNp ZW50IGFzIG1tY29tbXVuaWNhdGUyIHByb3RvY29sIHdvcmtzIG9ubHkgb24gdmlydHVhbCBjb21t YnVmZmVyIGFkZHJlc3MgcGFyYW0uDQoNCi0gT21rYXINCg0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTlVMTA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCisN CisgIHJldHVybiBTdGF0dXM7DQorfQ0KKw0KKy8qKg0KKyAgQ29sbGVjdCBIRVNUIGVycm9yIHNv dXJjZSBkZXNjcmlwdG9ycyBmcm9tIGFsbCBTdGFuZGFsb25lIE1NIGRyaXZlcnMgYW5kDQorICBh cHBlbmQgdGhlbSB0byB0aGUgSEVTVCB0YWJsZS4NCisNCisgIFVzZSBNTSBDb21tdW5pY2F0aW9u IFByb3RvY29sIHRvIGNvbW11bmljYXRlIGFuZCBjb2xsZWN0IHRoZSBlcnJvciBzb3VyY2UNCisg IGRlc2NyaXB0b3IgaW5mb3JtYXRpb24gZnJvbSBTdGFuZGFsb25lIE1NLiBDaGVjayBmb3IgdGhl IHJlcXVpcmVkIGJ1ZmZlciBzaXplDQorICByZXR1cm5lZCBieSB0aGUgTU0gZHJpdmVyLiBBbGxv Y2F0ZSBidWZmZXIgb2YgYWRlcXVhdGUgc2l6ZSBhbmQgY2FsbCBhZ2Fpbg0KKyAgaW50byBNTS4N CisNCisgIEByZXR2YWwgIEVGSV9TVUNDRVNTICAgICAgICAgICBTdWNjZXNzZnVsIHRvIGNvbGxl Y3QgYW5kIGFwcGVuZCB0aGUgZXJyb3INCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzb3VyY2UuDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvcnMg dG8gSEVTVCB0YWJsZS4NCisgIEByZXR2YWwgIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBNZW1vcnkg YWxsb2NhdGlvbiBmYWlsdXJlLg0KKyAgQHJldHZhbCAgT3RoZXIgICAgICAgICAgICAgICAgIEZv ciBhbnkgb3RoZXIgZXJyb3IuDQorKiovDQorU1RBVElDDQorRUZJX1NUQVRVUw0KK0FwcGVuZE1t RXJyb3JTb3VyY2VzIChWT0lEKQ0KW1NBTUldIFZPSUQgYW5kICkgc2hvdWxkIGJlIG9uIGEgc2Vw YXJhdGUgbGluZS4gQ2FuIHlvdSBjaGVjayB0aGUgb3RoZXIgcGF0Y2hlcyBpbiB0aGlzIHNlcmll cyBhcyB3ZWxsLCBwbGVhc2U/DQoNCkFjay4NCg0KLSBPbWthcg0KDQorew0KKyAgRUZJX01NX0NP TU1VTklDQVRFX0hFQURFUiAgICpDb21tdW5pY2F0aW9uSGVhZGVyID0gTlVMTDsNCisgIEhFU1Rf RVJST1JfU09VUkNFX0RFU0NfSU5GTyAqRXJyb3JTb3VyY2VEZXNjSW5mbzsNCisgIEVGSV9TVEFU VVMgICAgICAgICAgICAgICAgICBTdGF0dXM7DQorICBVSU5UTiAgICAgICAgICAgICAgICAgICAg ICAgQ29tbUJ1ZmZlclNpemU7DQorDQorICAvLw0KKyAgLy8gUmV0cmlldmUgdGhlIGNvdW50LCBs ZW5ndGggYW5kIHRoZSBhY3R1YWwgZXJvciBzb3VyY2UgZGVzY3JpcHRvcnMgZnJvbQ0KKyAgLy8g dGhlIE1NIGRyaXZlcnMuIERvIHRoaXMgYnkgcGVyZm9ybWluZyB0d28gTU0gQ29tbXVuaWNhdGUg Y2FsbHMsIGluIHRoZQ0KKyAgLy8gZmlyc3QgY2FsbCBwYXNzIENvbW1CdWZmZXIgd2hpY2ggaXMg YXRsZWFzdCBvZiB0aGUgc2l6ZSBvZiBlcnJvciBzb3VyY2UNCisgIC8vIGRlc2NyaXB0b3IgaW5m byBzdHJ1Y3R1cmUuIEZvbGxvd2VkIGJ5IGFub3RoZXIgY29tbXVuaWNhdGUgY2FsbCB3aXRoDQor ICAvLyBDb21tQnVmZmVyIGFsbG9jYXRlZCB0byByZXF1aXJlZCBidWZmZXIgc2l6ZSB0byBob2xk IGFsbCBkZXNjcmlwdG9ycy4NCisgIC8vDQorICAvLyBBbGxvY2F0ZSBDb21tQnVmZmVyIGF0bGVh c3QgdGhlIHNpemUgb2YgZXJyb3Igc291cmNlIGRlc2NyaXB0b3IgaW5mbw0KKyAgLy8gc3RydWN0 dXJlLg0KKyAgQ29tbUJ1ZmZlclNpemUgPQ0KKyAgICBNTV9DT01NVU5JQ0FURV9IRUFERVJfU0la RSArIEhFU1RfRVJST1JfU09VUkNFX0RFU0NfSU5GT19TSVpFOw0KKyAgQ29tbXVuaWNhdGlvbkhl YWRlciA9IEFsbG9jYXRlUG9vbCAoQ29tbUJ1ZmZlclNpemUpOw0KW1NBTUldIFdvdWxkIGl0IGJl IGJldHRlciB0byB1c2UgQWxsb2NhdGVaZXJvUG9vbCgpID8NCg0KQWNrLg0KDQotIE9ta2FyDQoN CisgIGlmIChDb21tdW5pY2F0aW9uSGVhZGVyID09IE5VTEwpIHsNCisgICAgREVCVUcgKCgNCisg ICAgICBERUJVR19FUlJPUiwNCisgICAgICAiJWE6IEZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkg Zm9yIENvbW11bmljYXRpb25IZWFkZXJcbiIsDQorICAgICAgX19GVU5DVElPTl9fDQorICAgICAg KSk7DQorICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCisgIH0NCisNCisgIC8vDQor ICAvLyBNYWtlIHRoZSBmaXJzdCBNTSBDb21tdW5pY2F0ZSBjYWxsIHRvIEhlc3RFcnJvclNvdXJj ZVN0YW5kYWxvbmVNTSBnYXRld2F5DQorICAvLyBkcml2ZXIsIHdoaWNoIHJldHVybnMgdGhlIHJl cXVpcmVkIGJ1ZmZlciBzaXplIGFkZXF1YXRlIHRvIGhvbGQgYWxsIHRoZQ0KKyAgLy8gZGVzY3Ry aXB0b3IgaW5mb3JtYXRpb24uDQorICAvLw0KKyAgU3RhdHVzID0gR2V0RXJyb3JTb3VyY2VEZXNj cmlwdG9ycyAoQ29tbUJ1ZmZlclNpemUsICZDb21tdW5pY2F0aW9uSGVhZGVyKTsNCisgIGlmICgo RUZJX0VSUk9SIChTdGF0dXMpKSAmJg0KKyAgICAgIChTdGF0dXMgIT0gRUZJX0JBRF9CVUZGRVJf U0laRSkpIHsNCisgICAgREVCVUcgKCgNCisgICAgICBERUJVR19FUlJPUiwNCisgICAgICAiJWE6 IE1NIENvbW11bmljYXRlIHByb3RvY29sIGNhbGwgZmFpbGVkLCBzdGF0dXM6ICVyXG4iLA0KKyAg ICAgIF9fRlVOQ1RJT05fXywNCisgICAgICBTdGF0dXMNCisgICAgICApKTsNCisgICAgRnJlZVBv b2wgKENvbW11bmljYXRpb25IZWFkZXIpOw0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0K KyAgLy8gQ2hlY2sgZm9yIHRoZSBsZW5ndGggb2YgRXJyb3IgU291cmNlIGRlc2NyaXB0b3JzLg0K KyAgRXJyb3JTb3VyY2VEZXNjSW5mbyA9DQorICAgIChIRVNUX0VSUk9SX1NPVVJDRV9ERVNDX0lO Rk8gKikoQ29tbXVuaWNhdGlvbkhlYWRlci0+RGF0YSk7DQorICBpZiAoKEVycm9yU291cmNlRGVz Y0luZm8tPkVyclNvdXJjZURlc2NTaXplID09IDApIHx8DQorICAgICAgKEVycm9yU291cmNlRGVz Y0luZm8tPkVyclNvdXJjZURlc2NDb3VudCA9PSAwKSkgew0KKyAgICBERUJVRyAoKA0KKyAgICAg IERFQlVHX0lORk8sDQorICAgICAgIkhlc0Vycm9yU291cmNlRHhlOiBIRVNUIGVycm9yIHNvdXJj ZShzKSBub3QgZm91bmRcbiINCisgICAgICApKTsNCisgICAgRnJlZVBvb2wgKENvbW11bmljYXRp b25IZWFkZXIpOw0KKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQpbU0FNSV0gcmV0dXJuIEVGSV9O T1RfRk9VTkQgPw0KDQpBY2suDQoNCi0gT21rYXINCg0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIEFs bG9jYXRlIENvbW1CdWZmZXIgb2YgcmVxdWlyZWQgc2l6ZSB0byBhY2NvbW9kYXRlIGFsbCB0aGUg ZXJyb3Igc291cmNlDQorICAvLyBkZXNjcmlwdG9ycy4gUmVxdWlyZWQgc2l6ZSBvZiBjb21tdW5p Y2F0aW9uIGJ1ZmZlciA9DQorICAvLyBNTSBjb21tdW5pY2F0ZSBtZXRhZGF0YS4gKyAoZXJyb3Ig c291cmNlIGRlc2MgaW5mbyBzdHJ1Y3QgKyBlcnJvciBzb3VyY2UNCisgIC8vIGRlc2NyaXB0b3Ig c2l6ZSkuDQorICAvLw0KKyAgQ29tbUJ1ZmZlclNpemUgPQ0KKyAgICBNTV9DT01NVU5JQ0FURV9I RUFERVJfU0laRSArDQorICAgIEhFU1RfRVJST1JfU09VUkNFX0RFU0NfSU5GT19TSVpFICsNCisg ICAgRXJyb3JTb3VyY2VEZXNjSW5mby0+RXJyU291cmNlRGVzY1NpemU7DQorDQorICAvLyBGcmVl IG9sZCBNTSBDb21tdW5pY2F0ZSBidWZmZXIgYW5kIGFsbG9jYXRlIGEgbmV3IGJ1ZmZlciBvZiBy ZXF1aXJlZCBzaXplLg0KKyAgRnJlZVBvb2wgKENvbW11bmljYXRpb25IZWFkZXIpOw0KKyAgQ29t bXVuaWNhdGlvbkhlYWRlciA9IEFsbG9jYXRlUG9vbCAoQ29tbUJ1ZmZlclNpemUpOw0KKyAgaWYg KENvbW11bmljYXRpb25IZWFkZXIgPT0gTlVMTCkgew0KKyAgICBERUJVRyAoKA0KKyAgICAgIERF QlVHX0VSUk9SLA0KKyAgICAgICIlYTogRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgQ29t bXVuaWNhdGlvbkhlYWRlclxuIiwNCisgICAgICBfX0ZVTkNUSU9OX18NCisgICAgICApKTsNCisg ICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIE1h a2Ugc2Vjb25kIE1NIENvbW11bmljYXRlIGNhbGwgdG8gSGVzdEVycm9yU291cmNlU3RhbmRhbG9u ZU1NIGRyaXZlciB0bw0KKyAgLy8gZ2V0IHRoZSBlcnJvciBzb3VyY2UgZGVzY3JpcHRvcnMgZnJv bSB0aGUgTU0gZHJpdmVycy4NCisgIC8vDQorICBTdGF0dXMgPSBHZXRFcnJvclNvdXJjZURlc2Ny aXB0b3JzIChDb21tQnVmZmVyU2l6ZSwgJkNvbW11bmljYXRpb25IZWFkZXIpOw0KKyAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICBERUJVRyAoKA0KKyAgICAgIERFQlVHX0VSUk9SLA0K KyAgICAgICIlYTogTU0gQ29tbXVuaWNhdGUgcHJvdG9jb2wgZmFpbGVkLCBzdGF0dXM6ICVyXG4i LA0KKyAgICAgIF9fRlVOQ1RJT05fXywNCisgICAgICBTdGF0dXMNCisgICAgICApKTsNCisgICAg RnJlZVBvb2wgKENvbW11bmljYXRpb25IZWFkZXIpOw0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAg fQ0KKw0KKyAgLy8NCisgIC8vIFJldHJpZXZlIHRoZSBIRVNUIGVycm9yIHNvdXJjZSBkZXNjcmlw dG9yIGluZm9ybWF0aW9uLiBFbnN1cmUgdGhhdCB0aGVyZQ0KKyAgLy8gaXMgYSB2YWxpZCBsaXN0 IG9mIGVycm9yIHNvdXJjZSBkZXNjcmlwdG9ycy4NCisgIC8vDQorICBFcnJvclNvdXJjZURlc2NJ bmZvID0NCisgICAgKEhFU1RfRVJST1JfU09VUkNFX0RFU0NfSU5GTyAqKShDb21tdW5pY2F0aW9u SGVhZGVyLT5EYXRhKTsNCisgIGlmIChFcnJvclNvdXJjZURlc2NJbmZvLT5FcnJTb3VyY2VEZXNj TGlzdCA9PSBOVUxMKSB7DQorICAgIERFQlVHICgoDQorICAgICAgREVCVUdfSU5GTywNCisgICAg ICAiSGVzdEVycm9yU291cmNlRHhlOiBFcnJvciBzb3VyY2UgZGVzY3JpcHRvciBsaXN0IGlzIGVt cHR5Ig0KKyAgICAgICkpOw0KKyAgICBGcmVlUG9vbCAoQ29tbXVuaWNhdGlvbkhlYWRlcik7DQor ICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCltTQU1JXSBDYW4gRUZJX05PVF9GT1VORCBiZSByZXR1 cm5lZCBoZXJlPw0KDQpBY2suDQoNCi0gT21rYXINCg0KKyAgfQ0KKw0KKyAgREVCVUcgKCgNCisg ICAgREVCVUdfSU5GTywNCisgICAgIkhlc3RFcnJvclNvdXJjZUR4ZTogRXJyb3JTb3VyY2VzOiBU b3RhbENvdW50ID0gJWQgVG90YWxMZW5ndGggPSAlZCBcbiIsDQorICAgIEVycm9yU291cmNlRGVz Y0luZm8tPkVyclNvdXJjZURlc2NDb3VudCwNCisgICAgRXJyb3JTb3VyY2VEZXNjSW5mby0+RXJy U291cmNlRGVzY1NpemUNCisgICAgKSk7DQorDQorICAvLw0KKyAgLy8gQXBwZW5kIHRoZSBlcnJv ciBzb3VyY2UgZGVzY3JpcHRvcnMgdG8gSEVTVCB0YWJsZSB1c2luZyB0aGUgSEVTVCB0YWJsZQ0K KyAgLy8gZ2VuZXJhdGlvbiBwcm90b2NvbC4NCisgIC8vDQorICBTdGF0dXMgPSBtSGVzdFByb3Rv Y29sLT5BcHBlbmRFcnJvclNvdXJjZURlc2NyaXB0b3JzICgNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRXJyb3JTb3VyY2VEZXNjSW5mby0+RXJyU291cmNlRGVzY0xpc3QsDQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEVycm9yU291cmNlRGVzY0luZm8tPkVyclNvdXJjZURlc2NT aXplLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvclNvdXJjZURlc2NJbmZvLT5F cnJTb3VyY2VEZXNjQ291bnQNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCisgIGlm IChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgREVCVUcgKCgNCisgICAgICBERUJVR19FUlJP UiwNCisgICAgICAiJWE6IEZhaWxlZCB0byBhcHBlbmQgZXJyb3Igc291cmNlKHMpLCBzdGF0dXM6 ICVyXG4iLA0KKyAgICAgIF9fRlVOQ1RJT05fXywNCisgICAgICBTdGF0dXMNCisgICAgICApKTsN CisgIH0NCisNCisgIEZyZWVQb29sIChDb21tdW5pY2F0aW9uSGVhZGVyKTsNCisgIHJldHVybiBT dGF0dXM7DQorfQ0KKw0KKy8qKg0KKyAgVGhlIEVudHJ5IFBvaW50IGZvciBIRVNUIEVycm9yIFNv dXJjZSBEeGUgZHJpdmVyLg0KKw0KKyAgTG9jYXRlcyB0aGUgSEVTVCBUYWJsZSBnZW5lcmF0aW9u IGFuZCBNTSBDb21tdW5pY2F0aW9uMiBwcm90b2NvbHMuIFVzaW5nIHRoZQ0KKyAgTU0gQ29tbXVu aWNhdGlvbjIsIHRoZSBkcml2ZXIgY29sbGVjdHMgdGhlIEVycm9yIFNvdXJjZSBEZXNjcmlwdG9y KHMpIGZyb20NCisgIFN0YW5kYWxvbmUgTU0uIEl0IHRoZW4gYXBwZW5kcyB0aG9zZSBFcnJvciBT b3VyY2UgRGVzY3JpcHRvcihzKSB0byB0aGUgSGVzdA0KKyAgdGFibGUgdXNpbmcgdGhlIEhFU1Qg VGFibGUgZ2VuZXJhdGlvbiBwcm90b2NvbC4NCisNCisgIEBwYXJhbVtpbl0gIEltYWdlSGFuZGxl ICBUaGUgZmlybXdhcmUgYWxsb2NhdGVkIGhhbmRsZSBmb3IgdGhlIEVmaSBpbWFnZS4NCisgIEBw YXJhbVtpbl0gIFN5c3RlbVRhYmxlICBBIHBvaW50ZXIgdG8gdGhlIEVmaSBTeXN0ZW0gVGFibGUu DQorDQorICBAcmV0dmFsICBFRklfU1VDQ0VTUyAgVGhlIGVudHJ5IHBvaW50IGlzIGV4ZWN1dGVk IHN1Y2Nlc3NmdWxseS4NCisgIEByZXR2YWwgIE90aGVyICAgICAgICBTb21lIGVycm9yIG9jY3Vy cmVkIHdoZW4gZXhlY3V0aW5nIHRoaXMgZW50cnkgcG9pbnQuDQorKiovDQorRUZJX1NUQVRVUw0K K0VGSUFQSQ0KK0hlc3RFcnJvclNvdXJjZUluaXRpYWxpemUgKA0KKyAgSU4gRUZJX0hBTkRMRSAg ICAgICBJbWFnZUhhbmRsZSwNCisgIElOIEVGSV9TWVNURU1fVEFCTEUgKlN5c3RlbVRhYmxlDQor ICApDQorew0KKyAgRUZJX1NUQVRVUyBTdGF0dXM7DQorDQorICBTdGF0dXMgPSBnQlMtPkxvY2F0 ZVByb3RvY29sICgNCisgICAgICAgICAgICAgICAgICAmZ0hlc3RUYWJsZVByb3RvY29sR3VpZCwN CisgICAgICAgICAgICAgICAgICBOVUxMLA0KKyAgICAgICAgICAgICAgICAgIChWT0lEICoqKSZt SGVzdFByb3RvY29sDQorICAgICAgICAgICAgICAgICAgKTsNCisgIGlmIChFRklfRVJST1IgKFN0 YXR1cykpIHsNCisgICAgREVCVUcgKCgNCisgICAgICBERUJVR19FUlJPUiwNCisgICAgICAiJWE6 IEZhaWxlZCB0byBsb2NhdGUgSEVTVCB0YWJsZSBnZW5lcmF0aW9uIHByb3RvY29sLCBzdGF0dXM6 JXJcbiIsDQorICAgICAgX19GVU5DVElPTl9fLA0KKyAgICAgIFN0YXR1cw0KKyAgICAgICkpOw0K KyAgICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0KKyAgU3RhdHVzID0gZ0JTLT5Mb2NhdGVQcm90 b2NvbCAoDQorICAgICAgICAgICAgICAgICAgJmdFZmlNbUNvbW11bmljYXRpb24yUHJvdG9jb2xH dWlkLA0KKyAgICAgICAgICAgICAgICAgIE5VTEwsDQorICAgICAgICAgICAgICAgICAgKFZPSUQg KiopJm1NbUNvbW11bmljYXRpb24yDQorICAgICAgICAgICAgICAgICAgKTsNCisgIGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCisgICAgREVCVUcgKCgNCisgICAgICBERUJVR19FUlJPUiwNCisg ICAgICAiJWE6IEZhaWxlZCB0byBsb2NhdGUgTU1Db21tdW5pY2F0aW9uMiBkcml2ZXIgcHJvdG9j b2wsIHN0YXR1czolclxuIiwNCisgICAgICBfX0ZVTkNUSU9OX18sDQorICAgICAgU3RhdHVzDQor ICAgICAgKSk7DQorICAgIHJldHVybiBTdGF0dXM7DQorICB9DQorDQorICAvLw0KKyAgLy8gQXBw ZW5kIEhFU1QgZXJyb3Igc291cmNlcyByZXRyaWV2ZWQgZnJvbSBTdGFuZGFsb25lTU0sIGlmIGFu eSwgaW50byB0aGUNCisgIC8vIEhFU1QgQUNQSSB0YWJsZS4NCisgIC8vDQorICBTdGF0dXMgPSBB cHBlbmRNbUVycm9yU291cmNlcyAoKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisg ICAgREVCVUcgKCgNCisgICAgICBERUJVR19FUlJPUiwNCisgICAgICAiJWE6IEZhaWxlZCBhcHBl bmRpbmcgZXJyb3Igc291cmNlIGRlc2MgdG8gSEVTVCB0YWJsZSwgc3RhdHVzOiVyXG4iLA0KKyAg ICAgIF9fRlVOQ1RJT05fXywNCisgICAgICBTdGF0dXMNCisgICAgICApKTsNCisgIH0NCisgIHJl dHVybiBFRklfU1VDQ0VTUzsNCit9DQpkaWZmIC0tZ2l0IGEvQXJtUGxhdGZvcm1Qa2cvRHJpdmVy cy9IZXN0TW1FcnJvclNvdXJjZXMvSGVzdEVycm9yU291cmNlU3RhbmRhbG9uZU1tLmMgYi9Bcm1Q bGF0Zm9ybVBrZy9Ecml2ZXJzL0hlc3RNbUVycm9yU291cmNlcy9IZXN0RXJyb3JTb3VyY2VTdGFu ZGFsb25lTW0uYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uYzdi MjMwNGZjNDk0DQotLS0gL2Rldi9udWxsDQorKysgYi9Bcm1QbGF0Zm9ybVBrZy9Ecml2ZXJzL0hl c3RNbUVycm9yU291cmNlcy9IZXN0RXJyb3JTb3VyY2VTdGFuZGFsb25lTW0uYw0KQEAgLTAsMCAr MSwzMTIgQEANCisvKiogQGZpbGUNCisgIE1NIEhFU1QgZXJyb3Igc291cmNlIGdhdGV3YXkgZHJp dmVyLg0KKw0KKyAgVGhpcyBNTSBkcml2ZXIgaW5zdGFsbHMgYSBoYW5kbGVyIHdoaWNoIGNhbiBi ZSB1c2VkIHRvIHJldHJpZXZlIHRoZSBlcnJvcg0KKyAgc291cmNlIGRlc2NyaXB0b3JzIGZyb20g dGhlIGFsbCBNTSBkcml2ZXJzIGltcGxlbWVudGluZyB0aGUgSEVTVCBlcnJvciBzb3VyY2UNCisg IGRlc2NyaXB0b3IgcHJvdG9jb2wuDQorDQorICBUaGUgTU0gZHJpdmVyIGFjdHMgYXMgYSBzaW5n bGUgcG9pbnQgb2YgY29udGFjdCB0byBjb2xsZWN0IHNlY3VyZSBoYXJkd2FyZQ0KKyAgZXJyb3Ig c291cmNlcyBmcm9tIHRoZSBNTSBkcml2ZXJzLiBJdCBsb29wcyBvdmVyIGFsbCB0aGUgTU0gZHJp dmVycyB0aGF0DQorICBpbXBsZW1lbnQgSEVTVCBlcnJvciBzb3VyY2UgZGVzY3JpcHRvciBwcm90 b2NvbCBhbmQgY29sbGVjdHMgZXJyb3Igc291cmNlDQorICBkZXNjcmlwdG9yIGluZm9ybWF0aW9u IGFsb25nIHdpdGggdGhlIGVycm9yIHNvdXJjZSBjb3VudCBhbmQgbGVuZ3RoLg0KKw0KKyAgQ29w eXJpZ2h0IChjKSAyMDIwIC0gMjAyMSwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQorICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KKyoqLw0K Kw0KKyNpbmNsdWRlIDxCYXNlLmg+DQorI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0KKyNp bmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9EZWJ1 Z0xpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCisjaW5j bHVkZSA8UHJvdG9jb2wvSGVzdEVycm9yU291cmNlSW5mby5oPg0KKw0KKyNpbmNsdWRlICJIZXN0 TW1FcnJvclNvdXJjZUNvbW1vbi5oIg0KKw0KK1NUQVRJQyBFRklfTU1fU1lTVEVNX1RBQkxFICpt TW1zdCA9IE5VTEw7DQorDQorLyoqDQorICBSZXR1cm5zIGFuIGFycmF5IG9mIGhhbmRsZXMgdGhh dCBpbXBsZW1lbnQgdGhlIEhFU1QgZXJyb3Igc291cmNlIGRlc2NyaXB0b3INCisgIHByb3RvY29s Lg0KKw0KKyAgUGFzc2luZyBIYW5kbGVCdWZmZXIgYXMgTlVMTCB3aWxsIHJldHVybiB0aGUgYWN0 dWFsIHNpemUgb2YgdGhlIGJ1ZmZlcg0KKyAgcmVxdWlyZWQgdG8gaG9sZCB0aGUgYXJyYXkgb2Yg aGFuZGxlcyBpbXBsZW1lbnRpbmcgdGhlIHByb3RvY29sLg0KKw0KKyAgQHBhcmFtW2luLCBvdXRd ICBIYW5kbGVCdWZmZXJTaXplICBUaGUgc2l6ZSBvZiB0aGUgSGFuZGxlQnVmZmVyLg0KKyAgQHBh cmFtW291dF0gICAgICBIYW5kbGVCdWZmZXIgICAgICBBIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBj b250YWluaW5nIHRoZSBsaXN0DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b2YgaGFuZGxlcy4NCisNCisgIEByZXR2YWwgIEVGSV9TVUNDRVNTICAgIFRoZSBhcnJheSBvZiBo YW5kbGVzIHJldHVybmVkIGluIEhhbmRsZUJ1ZmZlci4NCisgIEByZXR2YWwgIEVGSV9OT1RfRk9V TkQgIE5vIGltcGxlbWVudGF0aW9uIHByZXNlbnQgZm9yIHRoZSBwcm90b2NvbC4NCisgIEByZXR2 YWwgIE90aGVyICAgICAgICAgIEZvciBhbnkgb3RoZXIgZXJyb3IuDQorKiovDQorU1RBVElDDQor RUZJX1NUQVRVUw0KK0dldEhlc3RFcnJvclNvdXJjZVByb3RvY29sSGFuZGxlcyAoDQorICBJTiBP VVQgVUlOVE4gICAgICAqSGFuZGxlQnVmZmVyU2l6ZSwNCisgIE9VVCAgICBFRklfSEFORExFICoq SGFuZGxlQnVmZmVyDQorICApDQorew0KKyAgRUZJX1NUQVRVUyBTdGF0dXM7DQorDQorICBTdGF0 dXMgPSBtTW1zdC0+TW1Mb2NhdGVIYW5kbGUgKA0KKyAgICAgICAgICAgICAgICAgICAgQnlQcm90 b2NvbCwNCisgICAgICAgICAgICAgICAgICAgICZnTW1IZXN0RXJyb3JTb3VyY2VEZXNjUHJvdG9j b2xHdWlkLA0KKyAgICAgICAgICAgICAgICAgICAgTlVMTCwNCisgICAgICAgICAgICAgICAgICAg IEhhbmRsZUJ1ZmZlclNpemUsDQorICAgICAgICAgICAgICAgICAgICAqSGFuZGxlQnVmZmVyDQor ICAgICAgICAgICAgICAgICAgICApOw0KKyAgaWYgKChFRklfRVJST1IgKFN0YXR1cykpICYmDQor ICAgICAgKFN0YXR1cyAhPSBFRklfQlVGRkVSX1RPT19TTUFMTCkpDQorICB7DQorICAgIERFQlVH ICgoDQorICAgICAgREVCVUdfRVJST1IsDQorICAgICAgIiVhOiBObyBpbXBsZW1lbnRhdGlvbiBv ZiBNbUhlc3RFcnJvclNvdXJjZURlc2NQcm90b2NvbCBmb3VuZCwgXA0KKyAgICAgICBTdGF0dXM6 JXJcbiIsDQorICAgICAgX19GVU5DVElPTl9fLA0KKyAgICAgIFN0YXR1cw0KKyAgICAgICkpOw0K KyAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCisgIH0NCisNCisgIHJldHVybiBTdGF0dXM7DQor fQ0KKw0KKy8qKg0KKyAgTW1pIGhhbmRsZXIgdG8gcmV0cmlldmUgSEVTVCBlcnJvciBzb3VyY2Ug ZGVzY3JpcHRvciBpbmZvcm1hdGlvbi4NCisNCisgIEhhbmRsZXIgZm9yIE1taSBzZXJ2aWNlIHRo YXQgcmV0dXJucyB0aGUgc3VwcG9ydGVkIEhFU1QgZXJyb3Igc291cmNlDQorICBkZXNjcmlwdG9y cyBpbiBNTS4gVGhpcyBoYW5kbGVyIHBvcHVsYXRlcyB0aGUgQ29tbUJ1ZmZlciB3aXRoIHRoZQ0K KyAgbGlzdCBvZiBhbGwgZXJyb3Igc291cmNlIGRlc2NyaXB0b3JzLCBwcmVwZW5kZWQgd2l0aCB0 aGUgbGVuZ3RoIGFuZA0KKyAgdGhlIG51bWJlciBvZiBkZXNjcmlwdG9ycyBwb3B1bGF0ZWQgaW50 byBDb21tQnVmZmVyLg0KKw0KKyAgQHBhcmFtW2luXSAgICAgICBEaXNwYXRjaEhhbmRsZSAgVGhl IHVuaXF1ZSBoYW5kbGUgYXNzaWduZWQgdG8gdGhpcyBoYW5kbGVyIGJ5DQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBNbWlIYW5kbGVyUmVnaXN0ZXIoKS4NCisgIEBwYXJhbVtp bl0gICAgICAgQ29udGV4dCAgICAgICAgIFBvaW50cyB0byBhbiBvcHRpb25hbCBoYW5kbGVyIGNv bnRleHQgdGhhdA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgc3BlY2lm aWVkIHdoZW4gdGhlIGhhbmRsZXIgd2FzIHJlZ2lzdGVyZWQuDQorICBAcGFyYW1baW4sIG91dF0g IENvbW1CdWZmZXIgICAgICBCdWZmZXIgdXNlZCBmb3IgY29tbXVuaWNhdGlvbiBvZiBIRVNUIGVy cm9yDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgZGVzY3JpcHRv cnMuDQorICBAcGFyYW1baW4sIG91dF0gIENvbW1CdWZmZXJTaXplICBUaGUgc2l6ZSBvZiB0aGUg Q29tbUJ1ZmZlci4NCisNCisgIEByZXR2YWwgIEVGSV9TVUNDRVNTICAgICAgICAgICAgQ29tbUJ1 ZmZlciBoYXMgdmFsaWQgZGF0YS4NCisgIEByZXR2YWwgIEVGSV9CQURfQlVGRkVSX1NJWkUgICAg Q29tbUJ1ZmZlclNpemUgbm90IGFkZXF1YXRlLg0KKyAgQHJldHZhbCAgRUZJX09VVF9PRl9SRVNP VVJDRVMgICBTeXN0ZW0gb3V0IG9mIG1lbW9yeSByZXNvdXJjZXMuDQorICBAcmV0dmFsICBFRklf SU5WQUxJRF9QQVJBTUVURVIgIEludmFsaWQgQ29tbUJ1ZmZlclNpemUgcmVjaWV2ZWQuDQorICBA cmV0dmFsICBPdGhlciAgICAgICAgICAgICAgICAgIEZvciBhbnkgb3RoZXIgZXJyb3IuDQorKiov DQorU1RBVElDDQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK0hlc3RFcnJvclNvdXJjZXNJbmZvTW1p SGFuZGxlciAoDQorICBJTiAgICAgRUZJX0hBTkRMRSBEaXNwYXRjaEhhbmRsZSwNCisgIElOICAg ICBDT05TVCBWT0lEICpDb250ZXh0LCAgICAgICBPUFRJT05BTA0KKyAgSU4gT1VUIFZPSUQgICAg ICAgKkNvbW1CdWZmZXIsICAgIE9QVElPTkFMDQorICBJTiBPVVQgVUlOVE4gICAgICAqQ29tbUJ1 ZmZlclNpemUgT1BUSU9OQUwNCisgICkNCit7DQorICBNTV9IRVNUX0VSUk9SX1NPVVJDRV9ERVND X1BST1RPQ09MICpIZXN0RXJyU291cmNlRGVzY1Byb3RvY29sSGFuZGxlOw0KKyAgSEVTVF9FUlJP Ul9TT1VSQ0VfREVTQ19JTkZPICAgICAgICAqRXJyb3JTb3VyY2VJbmZvTGlzdDsNCisgIEVGSV9I QU5ETEUgICAgICAgICAgICAgICAgICAgICAgICAgKkhhbmRsZUJ1ZmZlcjsNCisgIEVGSV9TVEFU VVMgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KKyAgVUlOVE4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBIYW5kbGVDb3VudDsNCisgIFVJTlROICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSGFuZGxlQnVmZmVyU2l6ZTsNCisgIFVJTlROICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSW5kZXg7DQorICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFNvdXJjZUNvdW50ID0gMDsNCisgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U291cmNlTGVuZ3RoID0gMDsNCisgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KkVycm9yU291cmNlUHRyOw0KKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU b3RhbFNvdXJjZUxlbmd0aCA9IDA7DQorICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFRvdGFsU291cmNlQ291bnQgPSAwOw0KKw0KKyAgaWYgKCpDb21tQnVmZmVyU2l6ZSA8IEhF U1RfRVJST1JfU09VUkNFX0RFU0NfSU5GT19TSVpFKSB7DQorICAgIC8vDQorICAgIC8vIEVuc3Vy ZXMgdGhhdCB0aGUgY29tbXVuaWNhdGlvbiBidWZmZXIgaGFzIGVub3VnaCBzcGFjZSB0byBhdGxl YXN0IGhvbGQNCisgICAgLy8gdGhlIEVyclNvdXJjZURlc2NDb3VudCBhbmQgRXJyU291cmNlRGVz Y1NpemUgZWxlbWVudHMgb2YgdGhlDQorICAgIC8vIEhFU1RfRVJST1JfU09VUkNFX0RFU0NfSU5G TyBzdHJ1Y3R1cmUuDQorICAgIC8vDQorICAgIERFQlVHICgoDQorICAgICAgREVCVUdfRVJST1Is DQorICAgICAgIiVhOiBJbnZhbGlkIENvbW1CdWZmZXJTaXplIHBhcmFtZXRlclxuIiwNCisgICAg ICBfX0ZVTkNUSU9OX18NCisgICAgICApKTsNCisgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFN RVRFUjsNCisgIH0NCisNCisgIC8vDQorICAvLyBHZXQgYWxsIGhhbmRsZXMgdGhhdCBpbXBsZW1l bnQgdGhlIEhFU1QgZXJyb3Igc291cmNlIGRlc2NyaXB0b3IgcHJvdG9jb2wuDQorICAvLyBHZXQg dGhlIGJ1ZmZlciBzaXplIHJlcXVpcmVkIHRvIHN0b3JlIGxpc3Qgb2YgaGFuZGxlcyBmb3IgdGhl IHByb3RvY29sLg0KKyAgLy8NCisgIEhhbmRsZUJ1ZmZlciA9IE5VTEw7DQorICBIYW5kbGVCdWZm ZXJTaXplID0gMDsNCisgIFN0YXR1cyA9IEdldEhlc3RFcnJvclNvdXJjZVByb3RvY29sSGFuZGxl cyAoJkhhbmRsZUJ1ZmZlclNpemUsICZIYW5kbGVCdWZmZXIpOw0KKyAgaWYgKChTdGF0dXMgPT0g RUZJX05PVF9GT1VORCkgfHwNCisgICAgICAoSGFuZGxlQnVmZmVyU2l6ZSA9PSAwKSkNCisgIHsN CisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisNCisgIC8vIEFsbG9jYXRlIG1lbW9yeSBmb3Ig SGFuZGxlQnVmZmVyIG9mIHNpemUgSGFuZGxlQnVmZmVyU2l6ZS4NCisgIEhhbmRsZUJ1ZmZlciA9 IEFsbG9jYXRlUG9vbCAoSGFuZGxlQnVmZmVyU2l6ZSk7DQpbU0FNSV0gQWxsb2NhdGVaZXJvUG9v bCgpID8NCg0KQWNrLg0KDQorICBpZiAoSGFuZGxlQnVmZmVyID09IE5VTEwpIHsNCisgICAgREVC VUcgKCgNCisgICAgICBERUJVR19FUlJPUiwNCisgICAgICAiJWE6IEZhaWxlZCB0byBhbGxvY2F0 ZSBtZW1vcnkgZm9yIEhhbmRsZUJ1ZmZlclxuIiwNCisgICAgICBfX0ZVTkNUSU9OX18NCisgICAg ICApKTsNCisgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KKyAgfQ0KKw0KKyAgLy8g R2V0IHRoZSBsaXN0IG9mIGhhbmRsZXMuDQorICBTdGF0dXMgPSBHZXRIZXN0RXJyb3JTb3VyY2VQ cm90b2NvbEhhbmRsZXMgKCZIYW5kbGVCdWZmZXJTaXplLCAmSGFuZGxlQnVmZmVyKTsNCisgIGlm ICgoRUZJX0VSUk9SIChTdGF0dXMpKSB8fA0KKyAgICAgIChIYW5kbGVCdWZmZXIgPT0gTlVMTCkp DQpbU0FNSV0gSXMgY2hlY2sgZm9yIEhhbmRsZUJ1ZmZlciA9PSBOVUxMIHJpZ2h0IGhlcmU/IA0K DQpBY2suDQoNCi0gT21rYXINCg0KKyAgew0KKyAgICBGcmVlUG9vbCAoSGFuZGxlQnVmZmVyKTsN CisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisNCisgIC8vIENvdW50IG9mIGhhbmRsZXMgZm9y IHRoZSBwcm90b2NvbC4NCisgIEhhbmRsZUNvdW50ID0gSGFuZGxlQnVmZmVyU2l6ZSAvIHNpemVv ZiAoRUZJX0hBTkRMRSk7DQorDQorICAvLw0KKyAgLy8gTG9vcCB0byBnZXQgdGhlIGNvdW50IGFu ZCBsZW5ndGggb2YgdGhlIGVycm9yIHNvdXJjZSBkZXNjcmlwdG9ycy4NCisgIC8vDQorICAvLyBU aGlzIGxvb3AgY29sbGVjdHMgYW5kIGFkZHMgdGhlIGxlbmd0aCBvZiBlcnJvciBzb3VyY2UgZGVz Y3JpcHRvcnMgYW5kDQorICAvLyBpdHMgY291bnQgZnJvbSBhbGwgdGhlIHRoZSBNTSBkcml2ZXJz IGltcGxlbWVudGluZyBIRVNUIGVycm9yIHNvdXJjZS4NCisgIC8vIGRlc2NyaXB0b3IgcHJvdG9j b2wuIFRoZSB0b3RhbCBsZW5ndGggYW5kIGNvdW50IHZhbHVlcyByZXRyaWV2ZWQgaGVscA0KKyAg Ly8gdG8gZGV0ZXJtaW5lIHdlYXRoZXIgdGhlIENvbW1CdWZmZXIgaXMgYmlnIGVub3VnaCB0byBo b2xkIHRoZSBkZXNjcmlwdG9yDQorICAvLyBpbmZvcm1hdGlvbi4NCisgIC8vIEFzIG1lbnRpb25l ZCBpbiB0aGUgSEVTVCBlcnJvciBzb3VyY2UgZGVzY3JpcHRvciBwcm90b2NvbCBkZWZpbml0aW9u LA0KKyAgLy8gQnVmZmVyIHBhcmFtZXRlciBzZXQgdG8gTlVMTCBlbnN1cmVzIG9ubHkgbGVuZ3Ro IGFuZCB0aGUgY291bnQgdmFsdWVzDQorICAvLyBhcmUgcmV0dXJuZWQgZnJvbSB0aGUgZHJpdmVy IGFuZCBubyBlcnJvciBzb3VyY2UgaW5mb3JtYXRpb24gaXMgY29waWVkIHRvDQorICAvLyBCdWZm ZXIuDQorICAvLw0KKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgSGFuZGxlQ291bnQ7ICsrSW5k ZXgpIHsNCisgICAgU3RhdHVzID0gbU1tc3QtPk1tSGFuZGxlUHJvdG9jb2wgKA0KKyAgICAgICAg ICAgICAgICAgICAgICBIYW5kbGVCdWZmZXJbSW5kZXhdLA0KKyAgICAgICAgICAgICAgICAgICAg ICAmZ01tSGVzdEVycm9yU291cmNlRGVzY1Byb3RvY29sR3VpZCwNCisgICAgICAgICAgICAgICAg ICAgICAgKFZPSUQgKiopJkhlc3RFcnJTb3VyY2VEZXNjUHJvdG9jb2xIYW5kbGUNCisgICAgICAg ICAgICAgICAgICAgICAgKTsNCisgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICAg IGNvbnRpbnVlOw0KKyAgICB9DQorDQorICAgIC8vDQorICAgIC8vIFByb3RvY29sIGNhbGxlZCB3 aXRoIEJ1ZmZlciBwYXJhbWV0ZXIgcGFzc2VkIGFzIE5VTEwsIG11c3QgcmV0dXJuDQorICAgIC8v IGVycm9yIHNvdXJjZSBsZW5ndGggYW5kIGVycm9yIGNvdW50IGZvciB0aGF0IGRyaXZlci4NCisg ICAgLy8NCisgICAgU3RhdHVzID0gSGVzdEVyclNvdXJjZURlc2NQcm90b2NvbEhhbmRsZS0+R2V0 SGVzdEVycm9yU291cmNlRGVzY3JpcHRvcnMgKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEhlc3RFcnJTb3VyY2VEZXNjUHJvdG9jb2xIYW5kbGUsDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU291cmNlTGVu Z3RoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZT b3VyY2VDb3VudA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICk7DQorICAgIGlmIChTdGF0dXMgPT0gRUZJX0lOVkFMSURfUEFSQU1FVEVSKSB7DQpbU0FN SV0gSSB0aGluayB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gdGhpcyBmdW5jdGlvbiBhbmQgdGhlIGVy cm9yIHJldHVybiBpbXBsZW1lbnRhdGlvbiBpbiBHZXRIZXN0RXJyb3JTb3VyY2VEZXNjcmlwdG9y cygpIGNvdWxkIGJlIGltcHJvdmVkLiANCmUuZy4gR2V0SGVzdEVycm9yU291cmNlRGVzY3JpcHRv cnMoKSBjb3VsZCBmaXJzdCBjaGVjayBmb3IgdGhlIFNvdXJjZUxlbmd0aCAmIFNvdXJjZUNvdW50 IGFuZCBpZiBpdCBpcyBsZXNzIHRoYW4gd2hhdCBpcyByZXF1aXJlZCwgaXQgcmV0dXJucyBFRklf QlVGRkVSX1RPT19TTUFMTC4NClRoZSBuZXh0IGNoZWNrIHdvdWxkIGJlIHRvIGNoZWNrIEVycm9y U291cmNlUHRyIGFuZCByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSIGlmIGl0IGlzIE5VTEwu DQrCoFsvU0FNSV0NCg0KVGhpcyBhbHNvIGNvbnNpZGVycyB0aGUgY2FzZSB3aGVyZSB0aGVyZSBh cmUgbXVsdGlwbGUgTU0gZHJpdmVycyB0aGF0IGNhbiByZXR1cm4gZXJyb3Igc291cmNlIGRlc2Ny aXB0b3JzLiBJbiBjYXNlIG9mIG11bHRpcGxlIGltcGxlbWVudGF0aW9ucyBmb3IgTW1IZXN0RXJy b3JTb3VyY2VEZXNjUHJvdG9jb2wgcHJvdG9jb2wgYnkgTU0gZHJpdmVycyB0aGlzIGNhbiBsZWFk IHRvIHVubmVjZXNzYXJ5IGNhbGxzIGJldHdlZW4gc2VjdXJlIGFuZCBub24tc2VjdXJlIHdvcmxk IHZpYSBNTSBDb21tdW5pY2F0ZS4gSW5zdGVhZCBhcyBtZW50aW9uZWQgYnkgdGhlIHByb3RvY29s IGRlZmluaXRpb24gZm9yIE1tSGVzdEVycm9yU291cmNlRGVzY1Byb3RvY29sLCBmaXJzdCBnZXQg dGhlIGNvdW50IGFuZCBsZW5ndGggb2YgZGVzY3JpcHRvcnMgZnJvbSBhbGwgdGhlIE1NIGRyaXZl cnMgaW1wbGVtZW50aW5nIHByb3RvY29sIE1tSGVzdEVycm9yU291cmNlRGVzY1Byb3RvY29sIGJ5 IHBhc3Npbmcg4oCcQnVmZmVy4oCdIHBhcmFtIGFzIE5VTEwuIFRoaXMgY2FsbCBmYWlscyBieSBy ZXR1cm5pbmcgRUZJX0lOVkFMSURfUEFSQU1FVEVSIGJ1dCByZXR1cm5zIGNvdW50IGFuZCBzaXpl IG9mIHRoZSBlcnJvciBzb3VyY2UgZGVzY3JpcHRvcnMgaXQgc3VwcG9ydHMuDQoNCi0gT21rYXIN Cg0KKyAgICAgIFRvdGFsU291cmNlTGVuZ3RoICs9IFNvdXJjZUxlbmd0aDsNCisgICAgICBUb3Rh bFNvdXJjZUNvdW50ICs9IFNvdXJjZUNvdW50Ow0KKyAgICB9DQorICB9DQorDQorICAvLyBTZXQg dGhlIGNvdW50IGFuZCBsZW5ndGggaW4gdGhlIGVycm9yIHNvdXJjZSBkZXNjcmlwdG9yLg0KKyAg RXJyb3JTb3VyY2VJbmZvTGlzdCA9IChIRVNUX0VSUk9SX1NPVVJDRV9ERVNDX0lORk8gKikoQ29t bUJ1ZmZlcik7DQorICBFcnJvclNvdXJjZUluZm9MaXN0LT5FcnJTb3VyY2VEZXNjQ291bnQgPSBU b3RhbFNvdXJjZUNvdW50Ow0KKyAgRXJyb3JTb3VyY2VJbmZvTGlzdC0+RXJyU291cmNlRGVzY1Np emUgPSBUb3RhbFNvdXJjZUxlbmd0aDsNCisNCisgIC8vDQorICAvLyBDaGVjayB0aGUgc2l6ZSBv ZiBDb21tQnVmZmVyLCBpdCBzaG91bGQgYXRsZWFzdCBiZSBvZiBzaXplDQorICAvLyBUb3RhbFNv dXJjZUxlbmd0aCArIEhFU1RfRVJST1JfU09VUkNFX0RFU0NfSU5GT19TSVpFLg0KKyAgLy8NCisg IFRvdGFsU291cmNlTGVuZ3RoID0gVG90YWxTb3VyY2VMZW5ndGggKyBIRVNUX0VSUk9SX1NPVVJD RV9ERVNDX0lORk9fU0laRTsNCisgIGlmICgoKkNvbW1CdWZmZXJTaXplKSA8IFRvdGFsU291cmNl TGVuZ3RoKSB7DQorICAgIERFQlVHICgoDQorICAgICAgREVCVUdfRVJST1IsDQorICAgICAgIiVh OiBJbnZhbGlkIENvbW1CdWZmZXJTaXplIHBhcmFtZXRlclxuIiwNCisgICAgICBfX0ZVTkNUSU9O X18NCisgICAgICApKTsNCisgICAgRnJlZVBvb2wgKEhhbmRsZUJ1ZmZlcik7DQorICAgIHJldHVy biBFRklfQkFEX0JVRkZFUl9TSVpFOw0KW1NBTUldIFNob3VsZCB0aGUgcmV0dXJuIGNvZGUgYmUg RUZJX0JVRkZFUl9UT09fU01BTEw/IFRoZSBkaWZmZXJlbmNlIGJlaW5nLCB0aGUgY2FsbGVyIGNh biBhdHRlbXB0IHRvIGNhbGwgYWdhaW4gd2l0aCBhIGxhcmdlciBidWZmZXIgaWYgRUZJX0JVRkZF Ul9UT09fU01BTEwgaXMgcmV0dXJuZWQuIA0KQ29tbUJ1ZmZlclNpemUgaXMgZGVjbGFyZWQgYXMg YW4gT1VUIHBhcmFtdGVyLCB3YXMgdGhlIGludGVudCB0byByZXR1cm4gdGhlIHJlcXVpcmVkIGJ1 ZmZlciBzaXplPw0KWy9TQU1JXQ0KDQpBY2suIEVyclNvdXJjZURlc2NTaXplIGlzIHVzZWQgdG8g cGFzcyB0aGUgcmVxdWlyZWQgYnVmZmVyIHNpemUuDQoNCi0gT21rYXINCg0KKyAgfQ0KKw0KKyAg Ly8NCisgIC8vIENvbW1CdWZmZXIgc2l6ZSBpcyBhZGVxdWF0ZSB0byByZXR1cm4gYWxsIHRoZSBl cnJvciBzb3VyY2UgZGVzY3JpcHRvcnMuDQorICAvLyBTbyBnbyBhaGVhZCBhbmQgcG9wdWxhdGUg aXQgd2l0aCB0aGUgZXJyb3Igc291cmNlIGRlc2NyaXB0b3IgaW5mb3JtYXRpb24uDQorICAvLw0K Kw0KKyAgLy8gQnVmZmVyIHBvaW50ZXIgdG8gYXBwZW5kIHRoZSBFcnJvciBEZXNjcmlwdG9ycyBk YXRhLg0KKyAgRXJyb3JTb3VyY2VQdHIgPSAgRXJyb3JTb3VyY2VJbmZvTGlzdC0+RXJyU291cmNl RGVzY0xpc3Q7DQorDQorICAvLw0KKyAgLy8gTG9vcCB0byByZXRyaWV2ZSBlcnJvciBzb3VyY2Ug ZGVzY3JpcHRvcnMgaW5mb3JtYXRpb24uDQorICAvLw0KKyAgLy8gQ2FsbHMgaW50byBlYWNoIE1N IGRyaXZlciB0aGF0IGltcGxlbWVudCB0aGUgSEVTVCBlcnJvciBzb3VyY2UgZGVzY3JpcHRvcg0K KyAgLy8gcHJvdG9jb2wuIEhlcmUgdGhlIEJ1ZmZlciBwYXJhbWV0ZXIgcGFzc2VkIHRvIHRoZSBw cm90b2NvbCBzZXJ2aWNlIGlzDQorICAvLyB2YWxpZC4gU28gdGhlIE1NIGRyaXZlciB3aGVuIGNh bGxlZCBjb3BpZXMgdGhlIGRlc2NyaXB0b3IgaW5mb3JtYXRpb24uDQorICAvLw0KKyAgZm9yIChJ bmRleCA9IDA7IEluZGV4IDwgSGFuZGxlQ291bnQ7ICsrSW5kZXgpIHsNCisgICAgU3RhdHVzID0g bU1tc3QtPk1tSGFuZGxlUHJvdG9jb2wgKA0KKyAgICAgICAgICAgICAgICAgICAgICBIYW5kbGVC dWZmZXJbSW5kZXhdLA0KKyAgICAgICAgICAgICAgICAgICAgICAmZ01tSGVzdEVycm9yU291cmNl RGVzY1Byb3RvY29sR3VpZCwNCisgICAgICAgICAgICAgICAgICAgICAgKFZPSUQgKiopJkhlc3RF cnJTb3VyY2VEZXNjUHJvdG9jb2xIYW5kbGUNCisgICAgICAgICAgICAgICAgICAgICAgKTsNCisg ICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICAgIGNvbnRpbnVlOw0KKyAgICB9DQor DQorICAgIFN0YXR1cyA9IEhlc3RFcnJTb3VyY2VEZXNjUHJvdG9jb2xIYW5kbGUtPkdldEhlc3RF cnJvclNvdXJjZURlc2NyaXB0b3JzICgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBIZXN0RXJyU291cmNlRGVzY1Byb3RvY29sSGFuZGxlLA0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChWT0lEICoqKSZFcnJv clNvdXJjZVB0ciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmU291cmNlTGVuZ3RoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZTb3VyY2VDb3VudA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICk7DQorICAgIGlmIChTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsN CisgICAgICBFcnJvclNvdXJjZVB0ciArPSBTb3VyY2VMZW5ndGg7DQorICAgIH0NCisgIH0NCisN CisgIC8vIEZyZWUgdGhlIGJ1ZmZlciBob2xkaW5nIGFsbCB0aGUgcHJvdG9jb2wgaGFuZGxlcy4N CisgIEZyZWVQb29sIChIYW5kbGVCdWZmZXIpOw0KKw0KKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0K W1NBTUldIHJldHVybiBTdGF0dXMgb2YgbGFzdCBvcGVyYXRpb24uDQoNCkFjay4NCg0KLSBPbWth cg0KDQorfQ0KKw0KKy8qKg0KKyAgRW50cnkgcG9pbnQgZm9yIHRoaXMgU3RhbmFsb25lIE1NIGRy aXZlci4NCisNCisgIFJlZ2lzdGVycyBhbiBNbWkgaGFuZGxlciB0aGF0IHJldHJpZXZlcyB0aGUg ZXJyb3Igc291cmNlIGRlc2NyaXB0b3JzIGZyb20gYWxsDQorICB0aGUgTU0gZHJpdmVycyBpbXBs ZW1lbnRpbmcgdGhlIE1NX0hFU1RfRVJST1JfU09VUkNFX0RFU0NfUFJPVE9DT0wuDQorDQorICBA cGFyYW1baW5dICBJbWFnZUhhbmRsZSAgVGhlIGZpcm13YXJlIGFsbG9jYXRlZCBoYW5kbGUgZm9y IHRoZSBFRkkgaW1hZ2UuDQorICBAcGFyYW1baW5dICBTeXN0ZW1UYWJsZSAgQSBwb2ludGVyIHRv IHRoZSBFRkkgU3lzdGVtIFRhYmxlLg0KKw0KKyAgQHJldHZhbCAgRUZJX1NVQ0NFU1MgIFRoZSBl bnRyeSBwb2ludCByZWdpc3RlcmVkIGhhbmRsZXIgc3VjY2Vzc2Z1bGx5Lg0KKyAgQHJldHZhbCAg T3RoZXIgICAgICAgIFNvbWUgZXJyb3Igb2NjdXJyZWQgd2hlbiBleGVjdXRpbmcgdGhpcyBlbnRy eSBwb2ludC4NCisqKi8NCitFRklfU1RBVFVTDQorRUZJQVBJDQorU3RhbmRhbG9uZU1tSGVzdEVy cm9yU291cmNlSW5pdGlhbGl6ZSAoDQorICBJTiBFRklfSEFORExFICAgICAgICAgIEltYWdlSGFu ZGxlLA0KKyAgSU4gRUZJX01NX1NZU1RFTV9UQUJMRSAqU3lzdGVtVGFibGUNCisgICkNCit7DQor ICBFRklfSEFORExFIERpc3BhdGNoSGFuZGxlOw0KKyAgRUZJX1NUQVRVUyBTdGF0dXM7DQorDQor ICBBU1NFUlQgKFN5c3RlbVRhYmxlICE9IE5VTEwpOw0KKyAgbU1tc3QgPSBTeXN0ZW1UYWJsZTsN CisNCisgIFN0YXR1cyA9IG1NbXN0LT5NbWlIYW5kbGVyUmVnaXN0ZXIgKA0KKyAgICAgICAgICAg ICAgICAgICAgSGVzdEVycm9yU291cmNlc0luZm9NbWlIYW5kbGVyLA0KKyAgICAgICAgICAgICAg ICAgICAgJmdNbUhlc3RHZXRFcnJvclNvdXJjZUluZm9HdWlkLA0KKyAgICAgICAgICAgICAgICAg ICAgJkRpc3BhdGNoSGFuZGxlDQorICAgICAgICAgICAgICAgICAgICApOw0KKyAgaWYgKEVGSV9F UlJPUihTdGF0dXMpKSB7DQorICAgIERFQlVHICgoDQorICAgICAgREVCVUdfRVJST1IsDQorICAg ICAgIiVhOiBNbWkgaGFuZGxlciByZWdpc3RyYXRpb24gZmFpbGVkIHdpdGggc3RhdHVzIDogJXJc biIsDQorICAgICAgX19GVU5DVElPTl9fLA0KKyAgICAgIFN0YXR1cw0KKyAgICAgICkpOw0KKyAg ICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0KKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KW1NBTUld IHJldHVybiBTdGF0dXMgb2YgbGFzdCBvcGVyYXRpb24uDQoNCkFjay4NCg0KLSBPbWthcg0KDQor fQ0KDQo=