From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mx.groups.io with SMTP id smtpd.web09.4264.1634104879076393421 for ; Tue, 12 Oct 2021 23:01:20 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=E/fV2+Do; spf=pass (domain: intel.com, ip: 192.55.52.88, mailfrom: ray.ni@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10135"; a="250770123" X-IronPort-AV: E=Sophos;i="5.85,369,1624345200"; d="scan'208";a="250770123" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Oct 2021 23:01:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,369,1624345200"; d="scan'208";a="715449100" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by fmsmga006.fm.intel.com with ESMTP; 12 Oct 2021 23:01:18 -0700 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Tue, 12 Oct 2021 23:01:17 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Tue, 12 Oct 2021 23:01:17 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.172) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Tue, 12 Oct 2021 23:01:17 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h610xcEavvk4r1zCVZbTIIzL2pPNABOQzOCwe0PnTldWbx11UFXOBkQo1RTXv+JsplCoXXrsWlO5zCjKutePfOavgh+zYxlx8Tq8zpUnscwclMIa2Qu50aNNB+wPM1GwySR/Wfe7tsJWvOvgnsUY7kOcxmGxUsPCAx089LSMXAKQh/BPyIjo8u/+dnPNKUz59Y0kv8GEVZN2Vnu/sZGSnZas0awJwBosFicJxBWugW8O5W1zPFc9bQNi8Fl6k2RjtmHoCuKeH99J1V31KY82SbH4LHEXzGCuQlFUkAqxGVVLelPQ6z3gJ8KWZCTe3sc3JGrpKsnXD7GhBzD6aeGPlQ== 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=D6sEYL/RzlJZbrmzH9H2WgPPxrQrSRCfV+W31sF/UNg=; b=V5g+6twZkKaNMTr1NvL6YT4ZATAQ8sI22TpnIkOB87+EjHOhsBCLUIbAmmLhnMERZ7XpqCGJQUGyq3JTRHRqFuoAqTyIBjsaLCvoIfWNxR+NsXMsedJKXT3+1xbh89/tfjb0rfgeDaJEptwzL/aCnlvN61eE+XVQxS4jW579ArMkmfDidTgwmKYsCJknMP0jsetu50ZVBTcxJ9BXoJE5JA5Msfh3Px0On2W/wxzDbY1N8EC09zDSaqYidwVN+XWb3G+ELXb+WGB9pJMJtnKSDKbinELTuddc05c5JKbTw0k6OgWfEtOAr990b7vk6bMouBl+j6ubRkELvIjpe76PcQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=D6sEYL/RzlJZbrmzH9H2WgPPxrQrSRCfV+W31sF/UNg=; b=E/fV2+DoWNEl3SMqBax+uUY4Pj2SJ6IXcA2f19IALM73WFh15SnnHV+WZs/3hfOIxYFOeDfApLHtWkG5EZbyfVyduPvdTN6ggBxPMuVWgq/IeOe1GuA56huxzFaCF6kEQawZ/sCNPdu4HpUHG+YfNe0E6JYl/IwV4RqbfeuejU4= Received: from BN0PR11MB5696.namprd11.prod.outlook.com (2603:10b6:408:14b::11) by BN6PR11MB1811.namprd11.prod.outlook.com (2603:10b6:404:103::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.24; Wed, 13 Oct 2021 06:01:15 +0000 Received: from BN0PR11MB5696.namprd11.prod.outlook.com ([fe80::317e:de35:e920:7778]) by BN0PR11MB5696.namprd11.prod.outlook.com ([fe80::317e:de35:e920:7778%3]) with mapi id 15.20.4587.026; Wed, 13 Oct 2021 06:01:15 +0000 From: "Ni, Ray" To: "Xu, Min M" , "devel@edk2.groups.io" CC: Brijesh Singh , Erdem Aktas , James Bottomley , "Yao, Jiewen" , Tom Lendacky , "Dong, Eric" , "Kumar, Rahul1" Subject: Re: [PATCH V2 13/28] UefiCpuPkg: Enable Tdx support in MpInitLib Thread-Topic: [PATCH V2 13/28] UefiCpuPkg: Enable Tdx support in MpInitLib Thread-Index: AQHXuZrKcE2OZ2d8qkOX+RNadgKMIKvQe1Jg Date: Wed, 13 Oct 2021 06:01:15 +0000 Message-ID: References: <80403cd301cc6f0e88bc1c10e11ec262c1093cbf.1633401643.git.min.m.xu@intel.com> In-Reply-To: <80403cd301cc6f0e88bc1c10e11ec262c1093cbf.1633401643.git.min.m.xu@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7be93a5f-cf5e-4cb7-1174-08d98e0ede0a x-ms-traffictypediagnostic: BN6PR11MB1811: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3513; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Skk3IW/p4JoiTzxzY4xzOQvKsdQ0jxApEU8aZFJMtoN9cYGyQtLJVNJeDdmSgMlPWr2J+9N9shEGyyQuDiEX4lcu7pcb1K3rEqcLznMfCNb2sr7jhs/lHyazyk7yMGuPjQW4QKBnOnd6UCDw/hxQ9zl1VkMxepiAsrtG4hi1LBZzkQf0my93f7TOzwEJfcx+IS3SvHyNN+2BabIiOpEcabQcDqBkU1zG/4S2raQE0gb1jQtKK2+Fx0JIYaileq7hr1fM1xLszmNltTPcEUoFbXlkJ92cOlUowHeVNGJPOswV4XhPFlHYVXsgR3MB6/8TC7Vnkshc9EWdAiJX4GdV5HJSWjxVfds3LKNSfgty0GwmLUb2oC/Y1ViBRb2daJqxAHRw8G19Jg/KSpp8q7FtcdA0bGUK3Pbl6bpiBJ7r+2NroBYbFBb1yt4Xsdl0qQ+o353ekge8UbO7IoL0ItnNMW8gZcscvmyvctci82heiHhOS0HFFXIRmNl7WjHr9Vws9WdcJJdJijBrvDtJRh2qugsr/T++Fbn48tGZzCoqbpUe1jBhD84jb/sDkyHdJp2/gsmjspeymuofaOnnmbeczBYOCk3Z7FPFbwSiHYXMfWnrqnXxvKhdGBh00L+z26i0XgMyXmF/3/+dERx5BUqyTD+7EchXArRKBz1UNqlhXwSFrQp1L9a5VizDXFIJZmuIUigilheidAaUBsq4bPeq888PlNiDdBZwdYpKoeIXjSWFR0BvLlfwKEcuIDFGbGAfsHaPrOPrs6AfaivJIQ6H9Cd/eUT5JssfMS+W1WAzooZneQyZy8Asavp7mCx2d/xepEW7351uAR5QLsPZ/HWzOQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN0PR11MB5696.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(4636009)(366004)(30864003)(8936002)(19627235002)(66946007)(66556008)(38070700005)(66476007)(66446008)(33656002)(110136005)(52536014)(83380400001)(82960400001)(64756008)(107886003)(8676002)(2906002)(508600001)(26005)(122000001)(53546011)(54906003)(316002)(86362001)(38100700002)(71200400001)(55016002)(9686003)(186003)(966005)(5660300002)(76116006)(4326008)(7696005)(6506007)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bHRmSms1WUFvTThudXFHSG5tblNoRkNpeG93Y0JucDRMbmQwV0pzOFFSQjNL?= =?utf-8?B?bGY0ckNINGFKYkZOYk5PYnRqaEJ2UlhsbjI3WmpxR3RScmhVUitsUnJzbFpW?= =?utf-8?B?RVJ1VHc2eXVlTTQrZ2xGM1FZRU9MS3E5bDdhY0hyRkhrRVF0V0h0Sm1MVUhw?= =?utf-8?B?Z2FWVmR6U3I5M2FSYklxMmxhQ1hQaVJBRzRuS2VXU2d1MkJFV0cxa2pHRE80?= =?utf-8?B?K2dtU082VmhSdVlWN1ZQd3lESlBtdGdKREtTU0xTdnhsQXJYTDdBd05zMlNF?= =?utf-8?B?bTRyZHVKWGVwQ0oyZEV4Ym9WeFZ6dldxWjQzaVl5dVMzRzZOUzF1a0I2Tkd3?= =?utf-8?B?Qmwwemp5ZDFBNndsbE1sTVhUSEFSbWJIOERJdTNSSkdQRDIweVAvakZKRDht?= =?utf-8?B?dUdDMHZJMWpaYkVIZUZBVE1VY1R4Vld0ZmlrZndVeGEyOEZKTkR4VGFBdUp2?= =?utf-8?B?WWx4MVh4bFlRbkg1bzg2RHp4WTEyMVNiVXhWZnN0NCtkM0NoN29nUGg1aVZz?= =?utf-8?B?RlUrNzFTZW43cG5NSzd0emNpaDVmcVJ2UlozMHlWQmZhQWhxeWtPbDdhMzVY?= =?utf-8?B?RWdyay9SaTZHNHB0TGtFaGhiWFBFdVZnVWxpVldXZnBLdExVNm9peUtZazlX?= =?utf-8?B?YmJjQkZEa1JJZWtEczZvYXJzbHloSysxMTR1YUZGdXgyRVYvUytSSWM5eW9D?= =?utf-8?B?TnBld21jZjZCZ0xKd1l4WW85bHc4WWRPUXc4ZXBRcUwyaUFDb1BuUXVqZVgz?= =?utf-8?B?UlhCYkd2MGx1QjJqc2Mrc29sSko0OHBYNWVYTFZDSjVRTEU0bGZuUjA4UmF4?= =?utf-8?B?dlBMVVlIZWtveXp4Qm9YcjZ3Zno2djlmSHdiVk9wZytJcExnSm42QUpOalpV?= =?utf-8?B?ZzZ4Ym1uRUsxMFN6ZU9lcHNxRWk5aU5yK205ZUk0QTRBLzF4c1doSkk3TlZs?= =?utf-8?B?VWpqTFRpRHFqQ0JzYWN6ZkNRZkhSaFNnUTdaanJNUlNSRlowb1hmUVh1VHRL?= =?utf-8?B?dkxxK2xYR2lEeHcveWgzc1YzZ25RNWNrRVlqMEVQVVRHcDJOcGlBSkg0YXh2?= =?utf-8?B?VkVnWktPTkdNZlZqQmVVdWNua2Y1VkM2Nm5lVlo5R3VTUEVOVHorbEJEdjdK?= =?utf-8?B?bnp6Q2RTMHI3a3licVprK0grbTFSNXFrMGJBS1NST1V6QlBFTUluUzRxU1VC?= =?utf-8?B?QWZvNmNKbHcvelhqZmkzU1BkNWdkR0c4U1IwanRLU1pUeXBoaEJna3o3Nlgr?= =?utf-8?B?cysvQjd5Q2RMVHE4eTVobVRZdXc5WVhUVjlHQXR5c2Flb0VZejVPMElsQXFB?= =?utf-8?B?aldERnZpblpjOHpqOGRXMWxpK1l5M2xaMjBBSVdjODg4OVVpRElzNExsa21E?= =?utf-8?B?a0kvdVpiMU9kSVEzc3hWQU9GcHp3TkxtSjNITzRQTE9YeGkzR0R5RktFSEcr?= =?utf-8?B?RTBlaW4xekZ1VEd5U004UFFSZHJWSzdJbnhkRmYxVEl3QUwwcnplazlnR0pO?= =?utf-8?B?R2hnVno1c2Nta3hOZml3ZjRuRm1kWUl4WkVvLzRYbFdGZTExeWwrWUtZSzBq?= =?utf-8?B?RG9rbTQzMGwxamZmQS8xaHptZ1ZvMWtIaVJ3ckNtK2FRM2hwODh6TUJvaWk0?= =?utf-8?B?SHYzWTBlZjVNWnJJOHNSZ2RuUDUwOGZGSzNFQlR5WTIzN1hnbUNzalBEYjNZ?= =?utf-8?B?eStWSFphUExad1o0akZLRmRQQmdTSkpFUXRINzFBWThva1ovKzY5TzRUWC81?= =?utf-8?Q?uGsaKlka0fG4ZSmvVI3Td1kwz+27vjA/2hK7ewZ?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN0PR11MB5696.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7be93a5f-cf5e-4cb7-1174-08d98e0ede0a X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Oct 2021 06:01:15.3204 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: /yeWXYERlbWrLd8wdLtOivM/ZOwNWSnwEdwVjU/OwNkqouIXQA/XJWRXIFpE9jTz6XqfqZ35lfJfvEN/D/NiuQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB1811 Return-Path: ray.ni@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TWluLA0KVGhlIGNoYW5nZSBpcyB0byBwcm92aWRlIGEgdG90YWxseSBkaWZmZXJlbnQgTVAgc2Vy dmljZSBpbiBURFggY2FzZS4NCkl0IG1ha2VzIHRoZSBNcEluaXRMaWIgbW9yZSBjb21wbGljYXRl ZC4NCg0KSG93IGFib3V0Pw0KMS4gQ2hhbmdlIENwdU1wUGVpL0NwdU1wRHhlIHRvIHJldHVybiBk aXJlY3RseSBpbiBURFggY2FzZS4NCjIuIEFkZCBuZXcgVGR4Q3B1TXBQZWkvVGR4Q3B1TXBEeGUg dG8gcHJvdmlkZSBhIG5ldyBzZXQgc2ltcGxlIE1QIHNlcnZpY2UgaW4gVERYIGNhc2UuDQoNClRo aXMgbWFrZXMgdGhlIHdob2xlIGNvZGUgZWFzaWVyIHRvIHVuZGVyc3RhbmQuDQoNClRoYW5rcywN ClJheQ0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogWHUsIE1pbiBNIDxtaW4u bS54dUBpbnRlbC5jb20+IA0KU2VudDogVHVlc2RheSwgT2N0b2JlciA1LCAyMDIxIDExOjM5IEFN DQpUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCkNjOiBYdSwgTWluIE0gPG1pbi5tLnh1QGludGVs LmNvbT47IEJyaWplc2ggU2luZ2ggPGJyaWplc2guc2luZ2hAYW1kLmNvbT47IEVyZGVtIEFrdGFz IDxlcmRlbWFrdGFzQGdvb2dsZS5jb20+OyBKYW1lcyBCb3R0b21sZXkgPGplamJAbGludXguaWJt LmNvbT47IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IFRvbSBMZW5kYWNreSA8 dGhvbWFzLmxlbmRhY2t5QGFtZC5jb20+OyBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29t PjsgTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT47IEt1bWFyLCBSYWh1bDEgPHJhaHVsMS5rdW1h ckBpbnRlbC5jb20+DQpTdWJqZWN0OiBbUEFUQ0ggVjIgMTMvMjhdIFVlZmlDcHVQa2c6IEVuYWJs ZSBUZHggc3VwcG9ydCBpbiBNcEluaXRMaWINCg0KUkZD77yaIGh0dHBzOi8vYnVnemlsbGEudGlh bm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQyOQ0KDQpJbiBURFZGIEJTUCBhbmQgQVBzIGFy ZSBzaW1wbGlmaWVkLiBCU1AgaXMgdGhlIHZDUFUtMCwgd2hpbGUgdGhlIG90aGVycyBhcmUgdHJl YXRlZCBhcyBBUHMuDQoNClNvIE1QIGludGlhbGl6YXRpb24gaXMgcmF0aGVyIHNpbXBsZS4gVGhl IHByb2Nlc3NvciBpbmZvIGlzIHJldHJpZXZlZCBieSBURENBTEwsIEFwV29ya2VyIGlzIG5vdCBz dXBwb3J0ZWQsIEJTUCBpcyBhbHdheXMgdGhlIHdvcmtpbmcgcHJvY2Vzc29yLCB3aGlsZSB0aGUg QVBzIGFyZSBqdXN0IGluIGEgd2FpdC1mb3ItcHJlY2VkdXJlIHN0YXRlLg0KDQpDYzogQnJpamVz aCBTaW5naCA8YnJpamVzaC5zaW5naEBhbWQuY29tPg0KQ2M6IEVyZGVtIEFrdGFzIDxlcmRlbWFr dGFzQGdvb2dsZS5jb20+DQpDYzogSmFtZXMgQm90dG9tbGV5IDxqZWpiQGxpbnV4LmlibS5jb20+ DQpDYzogSmlld2VuIFlhbyA8amlld2VuLnlhb0BpbnRlbC5jb20+DQpDYzogVG9tIExlbmRhY2t5 IDx0aG9tYXMubGVuZGFja3lAYW1kLmNvbT4NCkNjOiBFcmljIERvbmcgPGVyaWMuZG9uZ0BpbnRl bC5jb20+DQpDYzogUmF5IE5pIDxyYXkubmlAaW50ZWwuY29tPg0KQ2M6IFJhaHVsIEt1bWFyIDxy YWh1bDEua3VtYXJAaW50ZWwuY29tPg0KU2lnbmVkLW9mZi1ieTogTWluIFh1IDxtaW4ubS54dUBp bnRlbC5jb20+DQotLS0NCiBVZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0TGliL0R4ZU1wSW5pdExp Yi5pbmYgfCAgIDQgKw0KIFVlZmlDcHVQa2cvTGlicmFyeS9NcEluaXRMaWIvRHhlTXBMaWIuYyAg ICAgICB8ICAxNCArLQ0KIFVlZmlDcHVQa2cvTGlicmFyeS9NcEluaXRMaWIvTXBJbnRlbFRkeC5o ICAgICB8IDEwNyArKysrKysrKysrDQogVWVmaUNwdVBrZy9MaWJyYXJ5L01wSW5pdExpYi9NcExp Yi5jICAgICAgICAgIHwgIDI2ICsrKw0KIFVlZmlDcHVQa2cvTGlicmFyeS9NcEluaXRMaWIvTXBM aWJUZHguYyAgICAgICB8IDE4NiArKysrKysrKysrKysrKysrKysNCiBVZWZpQ3B1UGtnL0xpYnJh cnkvTXBJbml0TGliL01wTGliVGR4TnVsbC5jICAgfCAxMTcgKysrKysrKysrKysNCiBVZWZpQ3B1 UGtnL0xpYnJhcnkvTXBJbml0TGliL1BlaU1wSW5pdExpYi5pbmYgfCAgIDQgKw0KIC4uLi9MaWJy YXJ5L01wSW5pdExpYi9YNjQvSW50ZWxUZGNhbGwubmFzbSAgICB8IDEyMCArKysrKysrKysrKw0K IDggZmlsZXMgY2hhbmdlZCwgNTc3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkgIGNyZWF0 ZSBtb2RlIDEwMDY0NCBVZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0TGliL01wSW50ZWxUZHguaA0K IGNyZWF0ZSBtb2RlIDEwMDY0NCBVZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0TGliL01wTGliVGR4 LmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgVWVmaUNwdVBrZy9MaWJyYXJ5L01wSW5pdExpYi9NcExp YlRkeE51bGwuYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBVZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0 TGliL1g2NC9JbnRlbFRkY2FsbC5uYXNtDQoNCmRpZmYgLS1naXQgYS9VZWZpQ3B1UGtnL0xpYnJh cnkvTXBJbml0TGliL0R4ZU1wSW5pdExpYi5pbmYgYi9VZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0 TGliL0R4ZU1wSW5pdExpYi5pbmYNCmluZGV4IGQzNDQxOWMyYTUyNC4uMDg0ZTAyNTU2NGVmIDEw MDY0NA0KLS0tIGEvVWVmaUNwdVBrZy9MaWJyYXJ5L01wSW5pdExpYi9EeGVNcEluaXRMaWIuaW5m DQorKysgYi9VZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0TGliL0R4ZU1wSW5pdExpYi5pbmYNCkBA IC0yMiwxMCArMjIsMTMgQEANCiAjDQogDQogW1NvdXJjZXMuSUEzMl0NCisgIE1wTGliVGR4TnVs bC5jDQogICBJYTMyL01wRnVuY3MubmFzbQ0KIA0KIFtTb3VyY2VzLlg2NF0NCisgIE1wTGliVGR4 LmMNCiAgIFg2NC9NcEZ1bmNzLm5hc20NCisgIFg2NC9JbnRlbFRkY2FsbC5uYXNtDQogDQogW1Nv dXJjZXMuY29tbW9uXQ0KICAgTXBFcXUuaW5jDQpAQCAtMzMsNiArMzYsNyBAQA0KICAgTXBMaWIu Yw0KICAgTXBMaWIuaA0KICAgTWljcm9jb2RlLmMNCisgIE1wSW50ZWxUZHguaA0KIA0KIFtQYWNr YWdlc10NCiAgIE1kZVBrZy9NZGVQa2cuZGVjDQpkaWZmIC0tZ2l0IGEvVWVmaUNwdVBrZy9MaWJy YXJ5L01wSW5pdExpYi9EeGVNcExpYi5jIGIvVWVmaUNwdVBrZy9MaWJyYXJ5L01wSW5pdExpYi9E eGVNcExpYi5jDQppbmRleCA5M2ZjNjNiZjkzZTMuLmI3Mjc1ZGIzZDU2NCAxMDA2NDQNCi0tLSBh L1VlZmlDcHVQa2cvTGlicmFyeS9NcEluaXRMaWIvRHhlTXBMaWIuYw0KKysrIGIvVWVmaUNwdVBr Zy9MaWJyYXJ5L01wSW5pdExpYi9EeGVNcExpYi5jDQpAQCAtNyw2ICs3LDcgQEANCiAqKi8NCiAN CiAjaW5jbHVkZSAiTXBMaWIuaCINCisjaW5jbHVkZSAiTXBJbnRlbFRkeC5oIg0KIA0KICNpbmNs dWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCiAjaW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZp Y2VzVGFibGVMaWIuaD4NCkBAIC0xNSw3ICsxNiw2IEBADQogI2luY2x1ZGUgPExpYnJhcnkvVm1n RXhpdExpYi5oPg0KICNpbmNsdWRlIDxSZWdpc3Rlci9BbWQvRmFtMTdNc3IuaD4NCiAjaW5jbHVk ZSA8UmVnaXN0ZXIvQW1kL0doY2IuaD4NCi0NCiAjaW5jbHVkZSA8UHJvdG9jb2wvVGltZXIuaD4N CiANCiAjZGVmaW5lICBBUF9TQUZFX1NUQUNLX1NJWkUgICAgMTI4DQpAQCAtODAxLDYgKzgwMSwx MCBAQCBNcEluaXRMaWJTdGFydHVwVGhpc0FQICggIHsNCiAgIEVGSV9TVEFUVVMgICAgICAgICAg ICAgIFN0YXR1czsNCiANCisgIGlmIChNcFRkeElzRW5hYmxlZCAoKSkgew0KKyAgICByZXR1cm4g RUZJX1VOU1VQUE9SVEVEOw0KKyAgfQ0KKw0KICAgLy8NCiAgIC8vIHRlbXBvcmFyaWx5IHN0b3Ag Y2hlY2tBbGxBcHNTdGF0dXMgZm9yIGF2b2lkIHJlc291cmNlIGRlYWQtbG9jay4NCiAgIC8vDQpA QCAtODU3LDYgKzg2MSwxMCBAQCBNcEluaXRMaWJTd2l0Y2hCU1AgKA0KICAgRUZJX1RJTUVSX0FS Q0hfUFJPVE9DT0wgICAgICAqVGltZXI7DQogICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAg IFRpbWVyUGVyaW9kOw0KIA0KKyAgaWYgKE1wVGR4SXNFbmFibGVkICgpKSB7DQorICAgIHJldHVy biBFRklfVU5TVVBQT1JURUQ7DQorICB9DQorDQogICBUaW1lclBlcmlvZCA9IDA7DQogICAvLw0K ICAgLy8gTG9jYXRlIFRpbWVyIEFyY2ggUHJvdG9jb2wNCkBAIC05MzAsNiArOTM4LDEwIEBAIE1w SW5pdExpYkVuYWJsZURpc2FibGVBUCAoDQogICBFRklfU1RBVFVTICAgICBTdGF0dXM7DQogICBC T09MRUFOICAgICAgICBUZW1wU3RvcENoZWNrU3RhdGU7DQogDQorICBpZiAoTXBUZHhJc0VuYWJs ZWQgKCkpIHsNCisgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCisgIH0NCisNCiAgIFRlbXBT dG9wQ2hlY2tTdGF0ZSA9IEZBTFNFOw0KICAgLy8NCiAgIC8vIHRlbXBvcmFyaWx5IHN0b3AgY2hl Y2tBbGxBUHNTdGF0dXMgZm9yIGluaXRpYWxpemUgcGFyYW1ldGVycy4NCmRpZmYgLS1naXQgYS9V ZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0TGliL01wSW50ZWxUZHguaCBiL1VlZmlDcHVQa2cvTGli cmFyeS9NcEluaXRMaWIvTXBJbnRlbFRkeC5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg MDAwMDAwMDAwMDAwLi41OWJkNzM5ZWVkMjINCi0tLSAvZGV2L251bGwNCisrKyBiL1VlZmlDcHVQ a2cvTGlicmFyeS9NcEluaXRMaWIvTXBJbnRlbFRkeC5oDQpAQCAtMCwwICsxLDEwNyBAQA0KKy8q KiBAZmlsZQ0KKyAgSW50ZWwgVGR4IGhlYWRlciBmaWxlLg0KKw0KKyAgQ29weXJpZ2h0IChjKSAy MDIxLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQorDQorICBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KKw0KKyoqLw0KKw0K KyNpZm5kZWYgTVBfSU5URUxfVERYX0hfDQorI2RlZmluZSBNUF9JTlRFTF9URFhfSF8NCisNCisj aW5jbHVkZSA8UGlQZWkuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9CYXNlTGliLmg+DQorI2luY2x1 ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCisjaW5jbHVkZSA8VWVmaS9VZWZpQmFzZVR5cGUuaD4N CisjaW5jbHVkZSA8UHJvdG9jb2wvTXBTZXJ2aWNlLmg+DQorDQorLyoqDQorICBHZXRzIGRldGFp bGVkIE1QLXJlbGF0ZWQgaW5mb3JtYXRpb24gb24gdGhlIHJlcXVlc3RlZCBwcm9jZXNzb3IgYXQg DQordGhlDQorICBpbnN0YW50IHRoaXMgY2FsbCBpcyBtYWRlLiBUaGlzIHNlcnZpY2UgbWF5IG9u bHkgYmUgY2FsbGVkIGZyb20gdGhlIEJTUC4NCisNCisgIEBwYXJhbVtpbl0gIFByb2Nlc3Nvck51 bWJlciAgICAgICBUaGUgaGFuZGxlIG51bWJlciBvZiBwcm9jZXNzb3IuDQorICBAcGFyYW1bb3V0 XSBQcm9jZXNzb3JJbmZvQnVmZmVyICAgQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgd2hlcmUgaW5m b3JtYXRpb24gZm9yDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJl cXVlc3RlZCBwcm9jZXNzb3IgaXMgZGVwb3NpdGVkLg0KKyAgQHBhcmFtW291dF0gIEhlYWx0aERh dGEgICAgICAgICAgICBSZXR1cm4gcHJvY2Vzc29yIGhlYWx0aCBkYXRhLg0KKw0KKyAgQHJldHZh bCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBQcm9jZXNzb3IgaW5mb3JtYXRpb24gd2FzIHJldHVy bmVkLg0KKyAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgICBUaGUgY2FsbGluZyBwcm9j ZXNzb3IgaXMgYW4gQVAuDQorICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIFByb2Nl c3NvckluZm9CdWZmZXIgaXMgTlVMTC4NCisgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAg ICAgVGhlIHByb2Nlc3NvciB3aXRoIHRoZSBoYW5kbGUgc3BlY2lmaWVkIGJ5DQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFByb2Nlc3Nvck51bWJlciBkb2VzIG5vdCBleGlzdCBp biB0aGUgcGxhdGZvcm0uDQorICBAcmV0dmFsIEVGSV9OT1RfUkVBRFkgICAgICAgICAgIE1QIElu aXRpYWxpemUgTGlicmFyeSBpcyBub3QgaW5pdGlhbGl6ZWQuDQorDQorKiovDQorRUZJX1NUQVRV Uw0KK0VGSUFQSQ0KK1RkeE1wSW5pdExpYkdldFByb2Nlc3NvckluZm8gKA0KKyAgSU4gIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgIFByb2Nlc3Nvck51bWJlciwNCisgIE9VVCBFRklfUFJPQ0VT U09SX0lORk9STUFUSU9OICAqUHJvY2Vzc29ySW5mb0J1ZmZlciwNCisgIE9VVCBFRklfSEVBTFRI X0ZMQUdTICAgICAgICAgICAqSGVhbHRoRGF0YSAgT1BUSU9OQUwNCisgICk7DQorDQorLyoqDQor ICBSZXRyaWV2ZXMgdGhlIG51bWJlciBvZiBsb2dpY2FsIHByb2Nlc3NvciBpbiB0aGUgcGxhdGZv cm0gYW5kIHRoZSANCitudW1iZXIgb2YNCisgIHRob3NlIGxvZ2ljYWwgcHJvY2Vzc29ycyB0aGF0 IGFyZSBlbmFibGVkIG9uIHRoaXMgYm9vdC4gVGhpcyBzZXJ2aWNlIA0KK21heSBvbmx5DQorICBi ZSBjYWxsZWQgZnJvbSB0aGUgQlNQLg0KKw0KKyAgQHBhcmFtW291dF0gTnVtYmVyT2ZQcm9jZXNz b3JzICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHRvdGFsIG51bWJlciBvZiBsb2dpY2FsDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29ycyBpbiB0aGUg c3lzdGVtLCBpbmNsdWRpbmcgdGhlIEJTUA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGFuZCBkaXNhYmxlZCBBUHMuDQorICBAcGFyYW1bb3V0XSBOdW1iZXJPZkVu YWJsZWRQcm9jZXNzb3JzICAgUG9pbnRlciB0byB0aGUgbnVtYmVyIG9mIGVuYWJsZWQgbG9naWNh bA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMg dGhhdCBleGlzdCBpbiBzeXN0ZW0sIGluY2x1ZGluZw0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRoZSBCU1AuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgICAgICAgIFRoZSBudW1iZXIgb2YgbG9naWNhbCBwcm9jZXNzb3JzIGFuZCBlbmFibGVkDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWwgcHJvY2Vzc29ycyB3YXMg cmV0cmlldmVkLg0KKyAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgICBUaGUgY2FsbGlu ZyBwcm9jZXNzb3IgaXMgYW4gQVAuDQorICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAg IE51bWJlck9mUHJvY2Vzc29ycyBpcyBOVUxMIGFuZCBOdW1iZXJPZkVuYWJsZWRQcm9jZXNzb3Jz DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIE5VTEwuDQorICBAcmV0dmFs IEVGSV9OT1RfUkVBRFkgICAgICAgICAgIE1QIEluaXRpYWxpemUgTGlicmFyeSBpcyBub3QgaW5p dGlhbGl6ZWQuDQorDQorKiovDQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK1RkeE1wSW5pdExpYkdl dE51bWJlck9mUHJvY2Vzc29ycyAoDQorICBPVVQgVUlOVE4gICAgICAgICAgICAgICAgICAgICAq TnVtYmVyT2ZQcm9jZXNzb3JzLCAgICAgICBPUFRJT05BTA0KKyAgT1VUIFVJTlROICAgICAgICAg ICAgICAgICAgICAgKk51bWJlck9mRW5hYmxlZFByb2Nlc3NvcnMgT1BUSU9OQUwNCisgICk7DQor DQorLyoqDQorICBUaGUgVERDQUxMIGluc3RydWN0aW9uIGNhdXNlcyBhIFZNIGV4aXQgdG8gdGhl IEludGVsIFREWCBtb2R1bGUuICBJdCANCitpcw0KKyAgdXNlZCB0byBjYWxsIGd1ZXN0LXNpZGUg SW50ZWwgVERYIGZ1bmN0aW9ucywgZWl0aGVyIGxvY2FsIG9yIGEgVEQgDQorZXhpdA0KKyAgdG8g dGhlIGhvc3QgVk1NLCBhcyBzZWxlY3RlZCBieSBMZWFmLg0KKw0KKyAgQHBhcmFtW2luXSAgICAg IExlYWYgICAgICAgIExlYWYgbnVtYmVyIG9mIFREQ0FMTCBpbnN0cnVjdGlvbg0KKyAgQHBhcmFt W2luXSAgICAgIEFyZzEgICAgICAgIEFyZzENCisgIEBwYXJhbVtpbl0gICAgICBBcmcyICAgICAg ICBBcmcyDQorICBAcGFyYW1baW5dICAgICAgQXJnMyAgICAgICAgQXJnMw0KKyAgQHBhcmFtW2lu LG91dF0gIFJlc3VsdHMgIFJldHVybmVkIHJlc3VsdCBvZiB0aGUgTGVhZiBmdW5jdGlvbg0KKw0K KyAgQHJldHVybiBFRklfU1VDQ0VTUw0KKyAgQHJldHVybiBPdGhlciAgICAgICAgICAgU2VlIGlu ZGl2aWR1YWwgbGVhZiBmdW5jdGlvbnMNCisqKi8NCitFRklfU1RBVFVTDQorRUZJQVBJDQorTXBU ZENhbGwgKA0KKyAgSU4gVUlOVDY0ICAgICAgICAgICBMZWFmLA0KKyAgSU4gVUlOVDY0ICAgICAg ICAgICBBcmcxLA0KKyAgSU4gVUlOVDY0ICAgICAgICAgICBBcmcyLA0KKyAgSU4gVUlOVDY0ICAg ICAgICAgICBBcmczLA0KKyAgSU4gT1VUIFZPSUQgICAgICAgICAqUmVzdWx0cw0KKyAgKTsNCisN CisvKioNCisgIFdoZXRoZXIgSW50ZWwgVERYIGlzIGVuYWJsZWQuDQorDQorICBAcmV0dXJuIFRS VUUgICAgVERYIGVuYWJsZWQNCisgIEByZXR1cm4gRkFMU0UgICBURFggbm90IGVuYWJsZWQNCisq Ki8NCitCT09MRUFODQorRUZJQVBJDQorTXBUZHhJc0VuYWJsZWQgKA0KKyAgVk9JRA0KKyAgKTsN CisNCisjZW5kaWYNCmRpZmYgLS1naXQgYS9VZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0TGliL01w TGliLmMgYi9VZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0TGliL01wTGliLmMNCmluZGV4IGI5YTA2 NzQ3ZWRiZi4uZDAzYWQ4ZmY0ODNlIDEwMDY0NA0KLS0tIGEvVWVmaUNwdVBrZy9MaWJyYXJ5L01w SW5pdExpYi9NcExpYi5jDQorKysgYi9VZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0TGliL01wTGli LmMNCkBAIC05LDYgKzksNyBAQA0KICoqLw0KIA0KICNpbmNsdWRlICJNcExpYi5oIg0KKyNpbmNs dWRlICJNcEludGVsVGR4LmgiDQogI2luY2x1ZGUgPExpYnJhcnkvVm1nRXhpdExpYi5oPg0KICNp bmNsdWRlIDxSZWdpc3Rlci9BbWQvRmFtMTdNc3IuaD4NCiAjaW5jbHVkZSA8UmVnaXN0ZXIvQW1k L0doY2IuaD4NCkBAIC0xOTY1LDYgKzE5NjYsMTAgQEAgTXBJbml0TGliSW5pdGlhbGl6ZSAoDQog ICBVSU5UTiAgICAgICAgICAgICAgICAgICAgQmFja3VwQnVmZmVyQWRkcjsNCiAgIFVJTlROICAg ICAgICAgICAgICAgICAgICBBcElkdEJhc2U7DQogDQorICBpZiAoTXBUZHhJc0VuYWJsZWQgKCkp IHsNCisgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KKyAgfQ0KKw0KICAgT2xkQ3B1TXBEYXRhID0g R2V0Q3B1TXBEYXRhRnJvbUd1aWRlZEhvYiAoKTsNCiAgIGlmIChPbGRDcHVNcERhdGEgPT0gTlVM TCkgew0KICAgICBNYXhMb2dpY2FsUHJvY2Vzc29yTnVtYmVyID0gUGNkR2V0MzIoUGNkQ3B1TWF4 TG9naWNhbFByb2Nlc3Nvck51bWJlcik7DQpAQCAtMjIxNSw2ICsyMjIwLDEwIEBAIE1wSW5pdExp YkdldFByb2Nlc3NvckluZm8gKA0KICAgQ1BVX0lORk9fSU5fSE9CICAgICAgICAqQ3B1SW5mb0lu SG9iOw0KICAgVUlOVE4gICAgICAgICAgICAgICAgICBPcmlnaW5hbFByb2Nlc3Nvck51bWJlcjsN CiANCisgIGlmIChNcFRkeElzRW5hYmxlZCAoKSkgew0KKyAgICByZXR1cm4gVGR4TXBJbml0TGli R2V0UHJvY2Vzc29ySW5mbyAoUHJvY2Vzc29yTnVtYmVyLCANCisgUHJvY2Vzc29ySW5mb0J1ZmZl ciwgSGVhbHRoRGF0YSk7ICB9DQorDQogICBDcHVNcERhdGEgPSBHZXRDcHVNcERhdGEgKCk7DQog ICBDcHVJbmZvSW5Ib2IgPSAoQ1BVX0lORk9fSU5fSE9CICopIChVSU5UTikgQ3B1TXBEYXRhLT5D cHVJbmZvSW5Ib2I7DQogDQpAQCAtMjQ0Niw2ICsyNDU1LDEwIEBAIEVuYWJsZURpc2FibGVBcFdv cmtlciAoDQogICBDUFVfTVBfREFUQSAgICAgICAgICAgICAgICpDcHVNcERhdGE7DQogICBVSU5U TiAgICAgICAgICAgICAgICAgICAgIENhbGxlck51bWJlcjsNCiANCisgIGlmIChNcFRkeElzRW5h YmxlZCAoKSkgew0KKyAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KKyAgfQ0KKw0KICAgQ3B1 TXBEYXRhID0gR2V0Q3B1TXBEYXRhICgpOw0KIA0KICAgLy8NCkBAIC0yNTA2LDYgKzI1MTksMTEg QEAgTXBJbml0TGliV2hvQW1JICgNCiAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsN CiAgIH0NCiANCisgIGlmIChNcFRkeElzRW5hYmxlZCAoKSkgew0KKyAgICAqUHJvY2Vzc29yTnVt YmVyID0gMDsNCisgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KKyAgfQ0KKw0KICAgQ3B1TXBEYXRh ID0gR2V0Q3B1TXBEYXRhICgpOw0KIA0KICAgcmV0dXJuIEdldFByb2Nlc3Nvck51bWJlciAoQ3B1 TXBEYXRhLCBQcm9jZXNzb3JOdW1iZXIpOyBAQCAtMjU0NCw2ICsyNTYyLDEwIEBAIE1wSW5pdExp YkdldE51bWJlck9mUHJvY2Vzc29ycyAoDQogICBVSU5UTiAgICAgICAgICAgICAgICAgICBFbmFi bGVkUHJvY2Vzc29yTnVtYmVyOw0KICAgVUlOVE4gICAgICAgICAgICAgICAgICAgSW5kZXg7DQog DQorICBpZiAoTXBUZHhJc0VuYWJsZWQgKCkpIHsNCisgICAgcmV0dXJuIFRkeE1wSW5pdExpYkdl dE51bWJlck9mUHJvY2Vzc29ycyhOdW1iZXJPZlByb2Nlc3NvcnMsIA0KKyBOdW1iZXJPZkVuYWJs ZWRQcm9jZXNzb3JzKTsgIH0NCisNCiAgIENwdU1wRGF0YSA9IEdldENwdU1wRGF0YSAoKTsNCiAN CiAgIGlmICgoTnVtYmVyT2ZQcm9jZXNzb3JzID09IE5VTEwpICYmIChOdW1iZXJPZkVuYWJsZWRQ cm9jZXNzb3JzID09IE5VTEwpKSB7IEBAIC0yNjI5LDYgKzI2NTEsMTAgQEAgU3RhcnR1cEFsbENQ VXNXb3JrZXIgKA0KICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgSGFzRW5hYmxlZEFwOw0KICAg Q1BVX1NUQVRFICAgICAgICAgICAgICAgQXBTdGF0ZTsNCiANCisgIGlmIChNcFRkeElzRW5hYmxl ZCAoKSkgew0KKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQorICB9DQorDQogICBDcHVNcERhdGEg PSBHZXRDcHVNcERhdGEgKCk7DQogDQogICBpZiAoRmFpbGVkQ3B1TGlzdCAhPSBOVUxMKSB7DQpk aWZmIC0tZ2l0IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L01wSW5pdExpYi9NcExpYlRkeC5jIGIvVWVm aUNwdVBrZy9MaWJyYXJ5L01wSW5pdExpYi9NcExpYlRkeC5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KaW5kZXggMDAwMDAwMDAwMDAwLi5kOGJkNGViNjVkMjUNCi0tLSAvZGV2L251bGwNCisrKyBi L1VlZmlDcHVQa2cvTGlicmFyeS9NcEluaXRMaWIvTXBMaWJUZHguYw0KQEAgLTAsMCArMSwxODYg QEANCisvKiogQGZpbGUNCisgIENQVSBNUCBJbml0aWFsaXplIExpYnJhcnkgY29tbW9uIGZ1bmN0 aW9ucy4NCisNCisgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMjAsIEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzIA0KKyByZXNlcnZlZC48QlI+ICBDb3B5cmlnaHQgKGMpIDIwMjAsIEFNRCBJ bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KKw0KKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisNCisqKi8NCisNCisjaW5jbHVkZSAiTXBMaWIuaCIN CisjaW5jbHVkZSAiTXBJbnRlbFRkeC5oIg0KKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4N CisjaW5jbHVkZSA8TGlicmFyeS9QY2RMaWIuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xp Yi5oPg0KKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL1RkeC5oPg0KKw0KK0JPT0xFQU4gbU1w VGR4RW5hYmxlZCA9IEZBTFNFOw0KK0JPT0xFQU4gbU1wVGR4UHJvYmVkID0gRkFMU0U7DQorDQor LyoqDQorICBHZXRzIGRldGFpbGVkIE1QLXJlbGF0ZWQgaW5mb3JtYXRpb24gb24gdGhlIHJlcXVl c3RlZCBwcm9jZXNzb3IgYXQgDQordGhlDQorICBpbnN0YW50IHRoaXMgY2FsbCBpcyBtYWRlLiBU aGlzIHNlcnZpY2UgbWF5IG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIEJTUC4NCisNCisgIEBwYXJh bVtpbl0gIFByb2Nlc3Nvck51bWJlciAgICAgICBUaGUgaGFuZGxlIG51bWJlciBvZiBwcm9jZXNz b3IuDQorICBAcGFyYW1bb3V0XSBQcm9jZXNzb3JJbmZvQnVmZmVyICAgQSBwb2ludGVyIHRvIHRo ZSBidWZmZXIgd2hlcmUgaW5mb3JtYXRpb24gZm9yDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGhlIHJlcXVlc3RlZCBwcm9jZXNzb3IgaXMgZGVwb3NpdGVkLg0KKyAgQHBh cmFtW291dF0gIEhlYWx0aERhdGEgICAgICAgICAgICBSZXR1cm4gcHJvY2Vzc29yIGhlYWx0aCBk YXRhLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBQcm9jZXNzb3IgaW5m b3JtYXRpb24gd2FzIHJldHVybmVkLg0KKyAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAg ICBUaGUgY2FsbGluZyBwcm9jZXNzb3IgaXMgYW4gQVAuDQorICBAcmV0dmFsIEVGSV9JTlZBTElE X1BBUkFNRVRFUiAgIFByb2Nlc3NvckluZm9CdWZmZXIgaXMgTlVMTC4NCisgIEByZXR2YWwgRUZJ X05PVF9GT1VORCAgICAgICAgICAgVGhlIHByb2Nlc3NvciB3aXRoIHRoZSBoYW5kbGUgc3BlY2lm aWVkIGJ5DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2Nlc3Nvck51bWJl ciBkb2VzIG5vdCBleGlzdCBpbiB0aGUgcGxhdGZvcm0uDQorICBAcmV0dmFsIEVGSV9OT1RfUkVB RFkgICAgICAgICAgIE1QIEluaXRpYWxpemUgTGlicmFyeSBpcyBub3QgaW5pdGlhbGl6ZWQuDQor DQorKiovDQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK1RkeE1wSW5pdExpYkdldFByb2Nlc3Nvcklu Zm8gKA0KKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgIFByb2Nlc3Nvck51bWJlciwN CisgIE9VVCBFRklfUFJPQ0VTU09SX0lORk9STUFUSU9OICAqUHJvY2Vzc29ySW5mb0J1ZmZlciwN CisgIE9VVCBFRklfSEVBTFRIX0ZMQUdTICAgICAgICAgICAqSGVhbHRoRGF0YSAgT1BUSU9OQUwN CisgICkNCit7DQorICBFRklfU1RBVFVTICAgICAgICAgICAgICBTdGF0dXM7DQorICBURF9SRVRV Uk5fREFUQSAgICAgICAgICBUZFJldHVybkRhdGE7DQorDQorICBpZiAoUHJvY2Vzc29ySW5mb0J1 ZmZlciA9PSBOVUxMKSB7DQorICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQorICB9 DQorDQorICBTdGF0dXMgPSBNcFRkQ2FsbChURENBTExfVERJTkZPLCAwLCAwLCAwLCAmVGRSZXR1 cm5EYXRhKTsgIA0KKyBBU1NFUlQoU3RhdHVzID09IEVGSV9TVUNDRVNTKTsNCisNCisgIGlmIChQ cm9jZXNzb3JOdW1iZXIgPj0gVGRSZXR1cm5EYXRhLlRkSW5mby5OdW1WY3B1cykgew0KKyAgICBy ZXR1cm4gRUZJX05PVF9GT1VORDsNCisgIH0NCisNCisgIFByb2Nlc3NvckluZm9CdWZmZXItPlBy b2Nlc3NvcklkID0gUHJvY2Vzc29yTnVtYmVyOyAgDQorIFByb2Nlc3NvckluZm9CdWZmZXItPlN0 YXR1c0ZsYWcgID0gMDsgIGlmIChQcm9jZXNzb3JOdW1iZXIgPT0gMCkgew0KKyAgICBQcm9jZXNz b3JJbmZvQnVmZmVyLT5TdGF0dXNGbGFnIHw9IFBST0NFU1NPUl9BU19CU1BfQklUOyAgfSAgDQor IFByb2Nlc3NvckluZm9CdWZmZXItPlN0YXR1c0ZsYWcgfD0gUFJPQ0VTU09SX0VOQUJMRURfQklU Ow0KKw0KKyAgLy8NCisgIC8vIEdldCBwcm9jZXNzb3IgbG9jYXRpb24gaW5mb3JtYXRpb24gIC8v ICANCisgR2V0UHJvY2Vzc29yTG9jYXRpb25CeUFwaWNJZCAoDQorICAgIChVSU5UMzIpUHJvY2Vz c29yTnVtYmVyLA0KKyAgICAmUHJvY2Vzc29ySW5mb0J1ZmZlci0+TG9jYXRpb24uUGFja2FnZSwN CisgICAgJlByb2Nlc3NvckluZm9CdWZmZXItPkxvY2F0aW9uLkNvcmUsDQorICAgICZQcm9jZXNz b3JJbmZvQnVmZmVyLT5Mb2NhdGlvbi5UaHJlYWQNCisgICAgKTsNCisNCisgIGlmIChIZWFsdGhE YXRhICE9IE5VTEwpIHsNCisgICAgSGVhbHRoRGF0YS0+VWludDMyID0gMDsNCisgIH0NCisNCisg IHJldHVybiBTdGF0dXM7DQorfQ0KKw0KKy8qKg0KKyAgUmV0cmlldmVzIHRoZSBudW1iZXIgb2Yg bG9naWNhbCBwcm9jZXNzb3IgaW4gdGhlIHBsYXRmb3JtIGFuZCB0aGUgDQorbnVtYmVyIG9mDQor ICB0aG9zZSBsb2dpY2FsIHByb2Nlc3NvcnMgdGhhdCBhcmUgZW5hYmxlZCBvbiB0aGlzIGJvb3Qu IFRoaXMgc2VydmljZSANCittYXkgb25seQ0KKyAgYmUgY2FsbGVkIGZyb20gdGhlIEJTUC4NCisN CisgIEBwYXJhbVtvdXRdIE51bWJlck9mUHJvY2Vzc29ycyAgICAgICAgICBQb2ludGVyIHRvIHRo ZSB0b3RhbCBudW1iZXIgb2YgbG9naWNhbA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHByb2Nlc3NvcnMgaW4gdGhlIHN5c3RlbSwgaW5jbHVkaW5nIHRoZSBCU1AN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZGlzYWJsZWQg QVBzLg0KKyAgQHBhcmFtW291dF0gTnVtYmVyT2ZFbmFibGVkUHJvY2Vzc29ycyAgIFBvaW50ZXIg dG8gdGhlIG51bWJlciBvZiBlbmFibGVkIGxvZ2ljYWwNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzIHRoYXQgZXhpc3QgaW4gc3lzdGVtLCBpbmNs dWRpbmcNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgQlNQ Lg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBUaGUgbnVtYmVyIG9mIGxv Z2ljYWwgcHJvY2Vzc29ycyBhbmQgZW5hYmxlZA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsb2dpY2FsIHByb2Nlc3NvcnMgd2FzIHJldHJpZXZlZC4NCisgIEByZXR2YWwgRUZJ X0RFVklDRV9FUlJPUiAgICAgICAgVGhlIGNhbGxpbmcgcHJvY2Vzc29yIGlzIGFuIEFQLg0KKyAg QHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICBOdW1iZXJPZlByb2Nlc3NvcnMgaXMgTlVM TCBhbmQgTnVtYmVyT2ZFbmFibGVkUHJvY2Vzc29ycw0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpcyBOVUxMLg0KKyAgQHJldHZhbCBFRklfTk9UX1JFQURZICAgICAgICAgICBN UCBJbml0aWFsaXplIExpYnJhcnkgaXMgbm90IGluaXRpYWxpemVkLg0KKw0KKyoqLw0KK0VGSV9T VEFUVVMNCitFRklBUEkNCitUZHhNcEluaXRMaWJHZXROdW1iZXJPZlByb2Nlc3NvcnMgKA0KKyAg T1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgKk51bWJlck9mUHJvY2Vzc29ycywgICAgICAg T1BUSU9OQUwNCisgIE9VVCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICpOdW1iZXJPZkVuYWJs ZWRQcm9jZXNzb3JzIE9QVElPTkFMDQorICApDQorew0KKyAgRUZJX1NUQVRVUyAgICAgICAgICAg ICAgU3RhdHVzOw0KKyAgVERfUkVUVVJOX0RBVEEgICAgICAgICAgVGRSZXR1cm5EYXRhOw0KKw0K KyAgaWYgKChOdW1iZXJPZlByb2Nlc3NvcnMgPT0gTlVMTCkgJiYgKE51bWJlck9mRW5hYmxlZFBy b2Nlc3NvcnMgPT0gTlVMTCkpIHsNCisgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsN CisgIH0NCisNCisgIFN0YXR1cyA9IE1wVGRDYWxsKFREQ0FMTF9URElORk8sIDAsIDAsIDAsICZU ZFJldHVybkRhdGEpOyAgDQorIEFTU0VSVChTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpOw0KKw0KKyAg aWYgKE51bWJlck9mUHJvY2Vzc29ycyAhPSBOVUxMKSB7DQorICAgICpOdW1iZXJPZlByb2Nlc3Nv cnMgPSBUZFJldHVybkRhdGEuVGRJbmZvLk51bVZjcHVzOyAgfSAgaWYgDQorIChOdW1iZXJPZkVu YWJsZWRQcm9jZXNzb3JzICE9IE5VTEwpIHsNCisgICAgKk51bWJlck9mRW5hYmxlZFByb2Nlc3Nv cnMgPSBUZFJldHVybkRhdGEuVGRJbmZvLk1heFZjcHVzOyAgfQ0KKw0KKyAgcmV0dXJuIFN0YXR1 czsNCit9DQorDQorLyoqDQorICBXaGV0aGVyIEludGVsIFREWCBpcyBlbmFibGVkLg0KKw0KKyAg QHJldHVybiBUUlVFICAgIFREWCBlbmFibGVkDQorICBAcmV0dXJuIEZBTFNFICAgVERYIG5vdCBl bmFibGVkDQorKiovDQorQk9PTEVBTg0KK0VGSUFQSQ0KK01wVGR4SXNFbmFibGVkICgNCisgIFZP SUQNCisgICkNCit7DQorICBVSU5UMzIgICAgRWF4Ow0KKyAgVUlOVDMyICAgIEVieDsNCisgIFVJ TlQzMiAgICBFY3g7DQorICBVSU5UMzIgICAgRWR4Ow0KKyAgVUlOVDMyICAgIExhcmdlc3RFYXg7 DQorDQorICBpZiAobU1wVGR4UHJvYmVkKSB7DQorICAgIHJldHVybiBtTXBUZHhFbmFibGVkOw0K KyAgfQ0KKw0KKyAgbU1wVGR4RW5hYmxlZCA9IEZBTFNFOw0KKw0KKyAgZG8gew0KKyAgICBBc21D cHVpZCAoMCwgJkxhcmdlc3RFYXgsICZFYngsICZFY3gsICZFZHgpOw0KKw0KKyAgICBpZiAoRWJ4 ICE9IFNJR05BVFVSRV8zMiAoJ0cnLCAnZScsICduJywgJ3UnKQ0KKyAgICAgIHx8IEVkeCAhPSBT SUdOQVRVUkVfMzIgKCdpJywgJ24nLCAnZScsICdJJykNCisgICAgICB8fCBFY3ggIT0gU0lHTkFU VVJFXzMyICgnbicsICd0JywgJ2UnLCAnbCcpKSB7DQorICAgICAgYnJlYWs7DQorICAgIH0NCisN CisgICAgQXNtQ3B1aWQgKDEsIE5VTEwsIE5VTEwsICZFY3gsIE5VTEwpOw0KKyAgICBpZiAoKEVj eCAmIEJJVDMxKSA9PSAwKSB7DQorICAgICAgYnJlYWs7DQorICAgIH0NCisNCisgICAgaWYgKExh cmdlc3RFYXggPCAweDIxKSB7DQorICAgICAgYnJlYWs7DQorICAgIH0NCisNCisgICAgQXNtQ3B1 aWRFeCAoMHgyMSwgMCwgJkVheCwgJkVieCwgJkVjeCwgJkVkeCk7DQorICAgIGlmIChFYnggIT0g U0lHTkFUVVJFXzMyICgnSScsICduJywgJ3QnLCAnZScpDQorICAgICAgfHwgRWR4ICE9IFNJR05B VFVSRV8zMiAoJ2wnLCAnVCcsICdEJywgJ1gnKQ0KKyAgICAgIHx8IEVjeCAhPSBTSUdOQVRVUkVf MzIgKCcgJywgJyAnLCAnICcsICcgJykpIHsNCisgICAgICBicmVhazsNCisgICAgfQ0KKw0KKyAg ICBtTXBUZHhFbmFibGVkID0gVFJVRTsNCisgIH13aGlsZSAoRkFMU0UpOw0KKw0KKyAgbU1wVGR4 UHJvYmVkID0gVFJVRTsNCisNCisgIHJldHVybiBtTXBUZHhFbmFibGVkOw0KK30NCmRpZmYgLS1n aXQgYS9VZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0TGliL01wTGliVGR4TnVsbC5jIGIvVWVmaUNw dVBrZy9MaWJyYXJ5L01wSW5pdExpYi9NcExpYlRkeE51bGwuYw0KbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uZjljZmVkZjAxMjQwDQotLS0gL2Rldi9udWxsDQorKysg Yi9VZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0TGliL01wTGliVGR4TnVsbC5jDQpAQCAtMCwwICsx LDExNyBAQA0KKy8qKiBAZmlsZQ0KKyAgQ1BVIE1QIEluaXRpYWxpemUgTGlicmFyeSBjb21tb24g ZnVuY3Rpb25zLg0KKw0KKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAyMCwgSW50ZWwgQ29ycG9y YXRpb24uIEFsbCByaWdodHMgDQorIHJlc2VydmVkLjxCUj4gIENvcHlyaWdodCAoYykgMjAyMCwg QU1EIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQorDQorICBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KKw0KKyoqLw0KKw0KKyNpbmNsdWRlICJNcExp Yi5oIg0KKyNpbmNsdWRlICJNcEludGVsVGR4LmgiDQorI2luY2x1ZGUgPExpYnJhcnkvRGVidWdM aWIuaD4NCisNCisvKioNCisgIEdldHMgZGV0YWlsZWQgTVAtcmVsYXRlZCBpbmZvcm1hdGlvbiBv biB0aGUgcmVxdWVzdGVkIHByb2Nlc3NvciBhdCANCit0aGUNCisgIGluc3RhbnQgdGhpcyBjYWxs IGlzIG1hZGUuIFRoaXMgc2VydmljZSBtYXkgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgQlNQLg0K Kw0KKyAgQHBhcmFtW2luXSAgUHJvY2Vzc29yTnVtYmVyICAgICAgIFRoZSBoYW5kbGUgbnVtYmVy IG9mIHByb2Nlc3Nvci4NCisgIEBwYXJhbVtvdXRdIFByb2Nlc3NvckluZm9CdWZmZXIgICBBIHBv aW50ZXIgdG8gdGhlIGJ1ZmZlciB3aGVyZSBpbmZvcm1hdGlvbiBmb3INCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVxdWVzdGVkIHByb2Nlc3NvciBpcyBkZXBvc2l0 ZWQuDQorICBAcGFyYW1bb3V0XSAgSGVhbHRoRGF0YSAgICAgICAgICAgIFJldHVybiBwcm9jZXNz b3IgaGVhbHRoIGRhdGEuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgIFBy b2Nlc3NvciBpbmZvcm1hdGlvbiB3YXMgcmV0dXJuZWQuDQorICBAcmV0dmFsIEVGSV9ERVZJQ0Vf RVJST1IgICAgICAgIFRoZSBjYWxsaW5nIHByb2Nlc3NvciBpcyBhbiBBUC4NCisgIEByZXR2YWwg RUZJX0lOVkFMSURfUEFSQU1FVEVSICAgUHJvY2Vzc29ySW5mb0J1ZmZlciBpcyBOVUxMLg0KKyAg QHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgICBUaGUgcHJvY2Vzc29yIHdpdGggdGhlIGhh bmRsZSBzcGVjaWZpZWQgYnkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJv Y2Vzc29yTnVtYmVyIGRvZXMgbm90IGV4aXN0IGluIHRoZSBwbGF0Zm9ybS4NCisgIEByZXR2YWwg RUZJX05PVF9SRUFEWSAgICAgICAgICAgTVAgSW5pdGlhbGl6ZSBMaWJyYXJ5IGlzIG5vdCBpbml0 aWFsaXplZC4NCisNCisqKi8NCitFRklfU1RBVFVTDQorRUZJQVBJDQorVGR4TXBJbml0TGliR2V0 UHJvY2Vzc29ySW5mbyAoDQorICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgUHJvY2Vz c29yTnVtYmVyLA0KKyAgT1VUIEVGSV9QUk9DRVNTT1JfSU5GT1JNQVRJT04gICpQcm9jZXNzb3JJ bmZvQnVmZmVyLA0KKyAgT1VUIEVGSV9IRUFMVEhfRkxBR1MgICAgICAgICAgICpIZWFsdGhEYXRh ICBPUFRJT05BTA0KKyAgKQ0KK3sNCisgIEFTU0VSVCAoRkFMU0UpOw0KKyAgcmV0dXJuIEVGSV9V TlNVUFBPUlRFRDsNCit9DQorDQorLyoqDQorICBSZXRyaWV2ZXMgdGhlIG51bWJlciBvZiBsb2dp Y2FsIHByb2Nlc3NvciBpbiB0aGUgcGxhdGZvcm0gYW5kIHRoZSANCitudW1iZXIgb2YNCisgIHRo b3NlIGxvZ2ljYWwgcHJvY2Vzc29ycyB0aGF0IGFyZSBlbmFibGVkIG9uIHRoaXMgYm9vdC4gVGhp cyBzZXJ2aWNlIA0KK21heSBvbmx5DQorICBiZSBjYWxsZWQgZnJvbSB0aGUgQlNQLg0KKw0KKyAg QHBhcmFtW291dF0gTnVtYmVyT2ZQcm9jZXNzb3JzICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHRv dGFsIG51bWJlciBvZiBsb2dpY2FsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcHJvY2Vzc29ycyBpbiB0aGUgc3lzdGVtLCBpbmNsdWRpbmcgdGhlIEJTUA0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBkaXNhYmxlZCBBUHMu DQorICBAcGFyYW1bb3V0XSBOdW1iZXJPZkVuYWJsZWRQcm9jZXNzb3JzICAgUG9pbnRlciB0byB0 aGUgbnVtYmVyIG9mIGVuYWJsZWQgbG9naWNhbA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMgdGhhdCBleGlzdCBpbiBzeXN0ZW0sIGluY2x1ZGlu Zw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBCU1AuDQor DQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgIFRoZSBudW1iZXIgb2YgbG9naWNh bCBwcm9jZXNzb3JzIGFuZCBlbmFibGVkDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxvZ2ljYWwgcHJvY2Vzc29ycyB3YXMgcmV0cmlldmVkLg0KKyAgQHJldHZhbCBFRklfREVW SUNFX0VSUk9SICAgICAgICBUaGUgY2FsbGluZyBwcm9jZXNzb3IgaXMgYW4gQVAuDQorICBAcmV0 dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIE51bWJlck9mUHJvY2Vzc29ycyBpcyBOVUxMIGFu ZCBOdW1iZXJPZkVuYWJsZWRQcm9jZXNzb3JzDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlzIE5VTEwuDQorICBAcmV0dmFsIEVGSV9OT1RfUkVBRFkgICAgICAgICAgIE1QIElu aXRpYWxpemUgTGlicmFyeSBpcyBub3QgaW5pdGlhbGl6ZWQuDQorDQorKiovDQorRUZJX1NUQVRV Uw0KK0VGSUFQSQ0KK1RkeE1wSW5pdExpYkdldE51bWJlck9mUHJvY2Vzc29ycyAoDQorICBPVVQg VUlOVE4gICAgICAgICAgICAgICAgICAgICAqTnVtYmVyT2ZQcm9jZXNzb3JzLCAgICAgICBPUFRJ T05BTA0KKyAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgKk51bWJlck9mRW5hYmxlZFBy b2Nlc3NvcnMgT1BUSU9OQUwNCisgICkNCit7DQorICBBU1NFUlQgKEZBTFNFKTsNCisgIHJldHVy biBFRklfVU5TVVBQT1JURUQ7DQorfQ0KKw0KKy8qKg0KKyAgV2hldGhlciBJbnRlbCBURFggaXMg ZW5hYmxlZC4NCisNCisgIEByZXR1cm4gVFJVRSAgICBURFggZW5hYmxlZA0KKyAgQHJldHVybiBG QUxTRSAgIFREWCBub3QgZW5hYmxlZA0KKyoqLw0KK0JPT0xFQU4NCitFRklBUEkNCitNcFRkeElz RW5hYmxlZCAoDQorICBWT0lEDQorICApDQorew0KKyAgcmV0dXJuIEZBTFNFOw0KK30NCisNCisv KioNCisgIFRoZSBURENBTEwgaW5zdHJ1Y3Rpb24gY2F1c2VzIGEgVk0gZXhpdCB0byB0aGUgSW50 ZWwgVERYIG1vZHVsZS4gIEl0IA0KK2lzDQorICB1c2VkIHRvIGNhbGwgZ3Vlc3Qtc2lkZSBJbnRl bCBURFggZnVuY3Rpb25zLCBlaXRoZXIgbG9jYWwgb3IgYSBURCANCitleGl0DQorICB0byB0aGUg aG9zdCBWTU0sIGFzIHNlbGVjdGVkIGJ5IExlYWYuDQorICBMZWFmIGZ1bmN0aW9ucyBhcmUgZGVz Y3JpYmVkIGF0IDxodHRwczovL3NvZnR3YXJlLmludGVsLmNvbS9jb250ZW50Lw0KKyAgd3d3L3Vz L2VuL2RldmVsb3AvYXJ0aWNsZXMvaW50ZWwtdHJ1c3QtZG9tYWluLWV4dGVuc2lvbnMuaHRtbD4N CisNCisgIEBwYXJhbVtpbl0gICAgICBMZWFmICAgICAgICBMZWFmIG51bWJlciBvZiBURENBTEwg aW5zdHJ1Y3Rpb24NCisgIEBwYXJhbVtpbl0gICAgICBBcmcxICAgICAgICBBcmcxDQorICBAcGFy YW1baW5dICAgICAgQXJnMiAgICAgICAgQXJnMg0KKyAgQHBhcmFtW2luXSAgICAgIEFyZzMgICAg ICAgIEFyZzMNCisgIEBwYXJhbVtpbixvdXRdICBSZXN1bHRzICBSZXR1cm5lZCByZXN1bHQgb2Yg dGhlIExlYWYgZnVuY3Rpb24NCisNCisgIEByZXR1cm4gRUZJX1NVQ0NFU1MNCisgIEByZXR1cm4g T3RoZXIgICAgICAgICAgIFNlZSBpbmRpdmlkdWFsIGxlYWYgZnVuY3Rpb25zDQorKiovDQorRUZJ X1NUQVRVUw0KK0VGSUFQSQ0KK01wVGRDYWxsICgNCisgIElOIFVJTlQ2NCAgICAgICAgICAgTGVh ZiwNCisgIElOIFVJTlQ2NCAgICAgICAgICAgQXJnMSwNCisgIElOIFVJTlQ2NCAgICAgICAgICAg QXJnMiwNCisgIElOIFVJTlQ2NCAgICAgICAgICAgQXJnMywNCisgIElOIE9VVCBWT0lEICAgICAg ICAgKlJlc3VsdHMNCisgICkNCit7DQorICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KK30NCmRp ZmYgLS1naXQgYS9VZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0TGliL1BlaU1wSW5pdExpYi5pbmYg Yi9VZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0TGliL1BlaU1wSW5pdExpYi5pbmYNCmluZGV4IDM2 ZmNiOTZiNTg1Mi4uYjQ4ZGFiMmIxNTM3IDEwMDY0NA0KLS0tIGEvVWVmaUNwdVBrZy9MaWJyYXJ5 L01wSW5pdExpYi9QZWlNcEluaXRMaWIuaW5mDQorKysgYi9VZWZpQ3B1UGtnL0xpYnJhcnkvTXBJ bml0TGliL1BlaU1wSW5pdExpYi5pbmYNCkBAIC0yMiwxMCArMjIsMTMgQEANCiAjDQogDQogW1Nv dXJjZXMuSUEzMl0NCisgIE1wTGliVGR4TnVsbC5jDQogICBJYTMyL01wRnVuY3MubmFzbQ0KIA0K IFtTb3VyY2VzLlg2NF0NCisgIE1wTGliVGR4LmMNCiAgIFg2NC9NcEZ1bmNzLm5hc20NCisgIFg2 NC9JbnRlbFRkY2FsbC5uYXNtDQogDQogW1NvdXJjZXMuY29tbW9uXQ0KICAgTXBFcXUuaW5jDQpA QCAtMzMsNiArMzYsNyBAQA0KICAgTXBMaWIuYw0KICAgTXBMaWIuaA0KICAgTWljcm9jb2RlLmMN CisgIE1wSW50ZWxUZHguaA0KIA0KIFtQYWNrYWdlc10NCiAgIE1kZVBrZy9NZGVQa2cuZGVjDQpk aWZmIC0tZ2l0IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L01wSW5pdExpYi9YNjQvSW50ZWxUZGNhbGwu bmFzbSBiL1VlZmlDcHVQa2cvTGlicmFyeS9NcEluaXRMaWIvWDY0L0ludGVsVGRjYWxsLm5hc20N Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjVlOTg1NTdkNTU5MA0K LS0tIC9kZXYvbnVsbA0KKysrIGIvVWVmaUNwdVBrZy9MaWJyYXJ5L01wSW5pdExpYi9YNjQvSW50 ZWxUZGNhbGwubmFzbQ0KQEAgLTAsMCArMSwxMjAgQEANCis7LS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tLS0t LS0tDQorOyoNCis7KiBDb3B5cmlnaHQgKGMpIDIwMjAgLSAyMDIxLCBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cyANCityZXNlcnZlZC48QlI+DQorOyogU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCis7Kg0KKzsqDQorOy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLS0t LS0tLQ0KKw0KK0RFRkFVTFQgUkVMDQorU0VDVElPTiAudGV4dA0KKw0KKyVtYWNybyB0ZGNhbGwg MA0KKyAgICBkYiAweDY2LDB4MGYsMHgwMSwweGNjDQorJWVuZG1hY3JvDQorDQorJW1hY3JvIHRk Y2FsbF9wdXNoX3JlZ3MgMA0KKyAgICBwdXNoIHJicA0KKyAgICBtb3YgIHJicCwgcnNwDQorICAg IHB1c2ggcjE1DQorICAgIHB1c2ggcjE0DQorICAgIHB1c2ggcjEzDQorICAgIHB1c2ggcjEyDQor ICAgIHB1c2ggcmJ4DQorICAgIHB1c2ggcnNpDQorICAgIHB1c2ggcmRpDQorJWVuZG1hY3JvDQor DQorJW1hY3JvIHRkY2FsbF9wb3BfcmVncyAwDQorICAgIHBvcCByZGkNCisgICAgcG9wIHJzaQ0K KyAgICBwb3AgcmJ4DQorICAgIHBvcCByMTINCisgICAgcG9wIHIxMw0KKyAgICBwb3AgcjE0DQor ICAgIHBvcCByMTUNCisgICAgcG9wIHJicA0KKyVlbmRtYWNybw0KKw0KKyVkZWZpbmUgbnVtYmVy X29mX3JlZ3NfcHVzaGVkIDgNCislZGVmaW5lIG51bWJlcl9vZl9wYXJhbWV0ZXJzICA0DQorDQor Ow0KKzsgS2VlcCB0aGVzZSBpbiBzeW5jIGZvciBwdXNoX3JlZ3MvcG9wX3JlZ3MsIGNvZGUgYmVs b3cgOyB1c2VzIHRoZW0gdG8gDQorZmluZCA1dGggb3IgZ3JlYXRlciBwYXJhbWV0ZXJzIDsgJWRl ZmluZSBmaXJzdF92YXJpYWJsZV9vbl9zdGFja19vZmZzZXQgDQorXA0KKyAgKChudW1iZXJfb2Zf cmVnc19wdXNoZWQgKiA4KSArIChudW1iZXJfb2ZfcGFyYW1ldGVycyAqIDgpICsgOCkgDQorJWRl ZmluZSBzZWNvbmRfdmFyaWFibGVfb25fc3RhY2tfb2Zmc2V0IFwNCisgICgoZmlyc3RfdmFyaWFi bGVfb25fc3RhY2tfb2Zmc2V0KSArIDgpDQorDQorJW1hY3JvIHRkY2FsbF9yZWdzX3ByZWFtYmxl IDINCisgICAgbW92IHJheCwgJTENCisNCisgICAgbW92IGVjeCwgJTINCisNCisgICAgOyBSMTAg PSAwIChzdGFuZGFyZCBURFZNQ0FMTCkNCisNCisgICAgeG9yIHIxMGQsIHIxMGQNCisNCisgICAg OyBaZXJvIG91dCB1bnVzZWQgKGZvciBzdGFuZGFyZCBURFZNQ0FMTCkgcmVnaXN0ZXJzIHRvIGF2 b2lkIGxlYWtpbmcNCisgICAgOyBzZWNyZXRzIHRvIHRoZSBWTU0uDQorDQorICAgIHhvciBlYngs IGVieA0KKyAgICB4b3IgZXNpLCBlc2kNCisgICAgeG9yIGVkaSwgZWRpDQorDQorICAgIHhvciBl ZHgsIGVkeA0KKyAgICB4b3IgZWJwLCBlYnANCisgICAgeG9yIHI4ZCwgcjhkDQorICAgIHhvciBy OWQsIHI5ZA0KKyVlbmRtYWNybw0KKw0KKyVtYWNybyB0ZGNhbGxfcmVnc19wb3N0YW1ibGUgMA0K KyAgICB4b3IgZWJ4LCBlYngNCisgICAgeG9yIGVzaSwgZXNpDQorICAgIHhvciBlZGksIGVkaQ0K Kw0KKyAgICB4b3IgZWN4LCBlY3gNCisgICAgeG9yIGVkeCwgZWR4DQorICAgIHhvciByOGQsICBy OGQNCisgICAgeG9yIHI5ZCwgIHI5ZA0KKyAgICB4b3IgcjEwZCwgcjEwZA0KKyAgICB4b3IgcjEx ZCwgcjExZA0KKyVlbmRtYWNybw0KKw0KKzsgIE1wVGRDYWxsICgNCis7ICAgIFVJTlQ2NCAgTGVh ZiwgICAgLy8gUmN4DQorOyAgICBVSU5UNjQgIFAxLCAgICAgIC8vIFJkeA0KKzsgICAgVUlOVDY0 ICBQMiwgICAgICAvLyBSOA0KKzsgICAgVUlOVDY0ICBQMywgICAgICAvLyBSOQ0KKzsgICAgVUlO VDY0ICBSZXN1bHRzLCAvLyByc3AgKyAweDI4DQorOyAgICApDQorZ2xvYmFsIEFTTV9QRlgoTXBU ZENhbGwpDQorQVNNX1BGWChNcFRkQ2FsbCk6DQorICAgICAgIHRkY2FsbF9wdXNoX3JlZ3MNCisN CisgICAgICAgbW92IHJheCwgcmN4DQorICAgICAgIG1vdiByY3gsIHJkeA0KKyAgICAgICBtb3Yg cmR4LCByOA0KKyAgICAgICBtb3YgcjgsIHI5DQorDQorICAgICAgIHRkY2FsbA0KKw0KKyAgICAg ICA7IGV4aXQgaWYgdGRjYWxsIHJlcG9ydHMgZmFpbHVyZS4NCisgICAgICAgdGVzdCByYXgsIHJh eA0KKyAgICAgICBqbnogLmV4aXQNCisNCisgICAgICAgOyB0ZXN0IGlmIGNhbGxlciB3YW50ZWQg cmVzdWx0cw0KKyAgICAgICBtb3YgcjEyLCBbcnNwICsgZmlyc3RfdmFyaWFibGVfb25fc3RhY2tf b2Zmc2V0IF0NCisgICAgICAgdGVzdCByMTIsIHIxMg0KKyAgICAgICBqeiAuZXhpdA0KKyAgICAg ICBtb3YgW3IxMiArIDAgXSwgcmN4DQorICAgICAgIG1vdiBbcjEyICsgOCBdLCByZHgNCisgICAg ICAgbW92IFtyMTIgKyAxNl0sIHI4DQorICAgICAgIG1vdiBbcjEyICsgMjRdLCByOQ0KKyAgICAg ICBtb3YgW3IxMiArIDMyXSwgcjEwDQorICAgICAgIG1vdiBbcjEyICsgNDBdLCByMTENCisuZXhp dDoNCisgICAgICAgdGRjYWxsX3BvcF9yZWdzDQorICAgICAgIHJldA0KLS0NCjIuMjkuMi53aW5k b3dzLjINCg0K