From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web11.4236.1659067416794567358 for ; Thu, 28 Jul 2022 21:03:36 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=b6Q1k4uT; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: jiaxin.wu@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1659067416; x=1690603416; h=from:to:cc:subject:date:message-id:references: content-transfer-encoding:mime-version; bh=klYhI+TDy3plJN6sXMeYKRs/g9KTPrvBfLz+kdEcHkE=; b=b6Q1k4uTxlEZM4VgE5jeQYiZSUb7wjHcf5I3uGWPjolR7DRc0ydjzFEy b1vJoATuCHTpWihnSjlKU4M6Tp2qtYJjB8STyCWb6gnD2RKDhlILts9Vl sim/BUE+V3SPMrukQphadPMl2MBSzQ2rXa7yxOA0yywRYRav5U/XhjFx1 WE1DVNqBnDQBUp1JVg9MXSoUvwyO6OdR4vpNoulJtzHsYs8lrKZJS3FZQ 6VJ8hDDWf5OgI37H7sY/i4TwRC9w1wX7ceev4GQmUHQ6W4rwG5SjQZ6zs dGNZ0qcq7oRc6OkQGxQ2SR0GfV2rAjji85ASPlDSKIyz505AT9kZdoSJU A==; X-IronPort-AV: E=McAfee;i="6400,9594,10422"; a="268449444" X-IronPort-AV: E=Sophos;i="5.93,200,1654585200"; d="scan'208";a="268449444" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jul 2022 21:03:36 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,200,1654585200"; d="scan'208";a="690603880" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by FMSMGA003.fm.intel.com with ESMTP; 28 Jul 2022 21:03:35 -0700 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Thu, 28 Jul 2022 21:03:35 -0700 Received: from fmsmsx605.amr.corp.intel.com (10.18.126.85) 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.2375.28; Thu, 28 Jul 2022 21:03:35 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28 via Frontend Transport; Thu, 28 Jul 2022 21:03:35 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.176) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.28; Thu, 28 Jul 2022 21:03:34 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CkAIXMhgD8KB8OZSWjcP4ZAMfh2ZmlOWHRk63ieZIdjWpuN4NmB+j4yjDnerctciylEUwRw3oUA41UZH8CaR32vTyuzKn99uPQhayMrrMjy4lXJYzRYe9CCzcvxGD5QT3YX53CW/bTxWdIBRPZeJIkpI2rhSJWXMi4V3k/4hYhl6dO15BPnVoz8PMbhlca2UDhlQPE7qJjU2mnrdUzIDwWtcPILTvyUZZove2CDBUad/w40ksBDq79AD/4MQ48qXRJ/2vXfJ/CK9XTumJEnichARCj4wMDYmAMUGYuKlY+QTGIaxK6bu90aWb5M+yvpnn4wdZ42NXtKUXiyTaRhVFQ== 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=klYhI+TDy3plJN6sXMeYKRs/g9KTPrvBfLz+kdEcHkE=; b=P5clTzAxLKrj87N1M5QV0k15J1oKbNXjVxjbyKLR77pGSnH2eKxLpRNEhe3XCuPSmBUFoHKxhDdnv2fGoSyIHIrxwYVKqGHk2+5BU8cgxZuyrYBwESfw4654BcsdlPacQ4nhV737nLZdQ02yZSp7R5yoDg578c8gwk6TRrPPSaW7jZfdcwTFcig16qKi9mi9BtJsRThnGDUE1SMSbzoPiEdvDvOpsqYhLKR6+S1V5QDS01sE6cgn7zJaQ0UiAwHfGRwZaTFYLTAdNZvNXYAXdk7XV4V9ESNMgY5DBGeSy/4IBc7ULheo2NqVKDEEnSRKtcGGosgzk9J3htI4QPuWNQ== 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 Received: from MN0PR11MB6158.namprd11.prod.outlook.com (2603:10b6:208:3ca::18) by BN6PR11MB1265.namprd11.prod.outlook.com (2603:10b6:404:48::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5482.6; Fri, 29 Jul 2022 04:03:33 +0000 Received: from MN0PR11MB6158.namprd11.prod.outlook.com ([fe80::b8c3:60ff:bc56:8fab]) by MN0PR11MB6158.namprd11.prod.outlook.com ([fe80::b8c3:60ff:bc56:8fab%9]) with mapi id 15.20.5458.024; Fri, 29 Jul 2022 04:03:32 +0000 From: "Wu, Jiaxin" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: "Dong, Eric" , "Ni, Ray" Subject: Re: [edk2-devel] [PATCH v1] UefiCpuPkg: Dynamic check SMRR enable & SmmFeatureControl capability Thread-Topic: [edk2-devel] [PATCH v1] UefiCpuPkg: Dynamic check SMRR enable & SmmFeatureControl capability Thread-Index: AQHYmbiKOQsTqMFJWU+FBSyPJMmyWq2DQbHQgAB0NKCAERYmUA== Date: Fri, 29 Jul 2022 04:03:32 +0000 Message-ID: References: <20220717083747.21076-1-jiaxin.wu@intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.6.500.17 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c951bfbb-64d0-42ef-21f0-08da71174da5 x-ms-traffictypediagnostic: BN6PR11MB1265:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: OYMFC5F3RNw3bagEZZ+LyEyDmSw6qoAOQLOM0kOI+oV+8ZymK5Qgrh4Z6gH29TzyOLv4ys8PeY8qOmNBrgpSAFsioVa6dVEDawxqb/RrGtqOiOvOLxPr+RWLLDhfdag9pNBr+ienPBvgtxgqolg59tSq17KJKQfoEinJmQ0GpJiWXwUkEeiqInH856U1UalytKl4j1yumEwG4CbxHgX3q5G0Oj31U4uhMYoX9q8G0rkRB24Ha3Upp2LwNKuL2GH3roCiLnu5G2H2pidpw+2tf3gYJc55ui5RklEV4/ernDQ2XJyRxScmEMqHh64QGCjRCVVEpsyWN3HMTbqocwijLndLdWNH3AoNRRF/A7Fv5NXJJKEkIdFvO0E8gMcCfO4Dz2Z7FD+BXTN6NyEAvREtuFWYKw4uuUn1UDhH3j4JjPTnMwRbCRHOlcFLqrIeCptUcEuhm4YMY/8LkejlxusJyJwR7mYqfJdn3Lfjt1f1DOujGerGWEcK1x0lftP+iG63hc642RX22GDQjwDekphAt85S1+Xkf5w9WwWxPIks3cp24kEQwdjzbRmwMJbcHR67blBavVCxntlSR9+ksEyyLHp0Av5fNytSnZJ2z/iLxPA9O3+vfxpYFG/PQRLyRok70DYElOHc0y5VmCnpL7bO9zdkewoFHWvlL6GU1lgS8sqgGFAH6pYKXDD7ZMNgXXCgmEQcxENJn/By6dX5HYtIV/fLJFLgN5DICah724BdJqfbM4e/JCp9DCKLAa8+O23oHLCG6AEjcWgx0PY5EoRS459KD9aW0y+umACrfwQ2YDar3Ks8EItRydixMfwovWdXCiYdzaM25fvdZbyv+Ri9iIFi6/yqgGcRn/eFSLLDEAQm7be2fUq/cKrvgUzruOfx x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN0PR11MB6158.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(136003)(376002)(346002)(366004)(396003)(39860400002)(71200400001)(186003)(966005)(86362001)(478600001)(76116006)(66476007)(66556008)(64756008)(66446008)(9686003)(66946007)(26005)(8676002)(4326008)(52536014)(83380400001)(30864003)(5660300002)(54906003)(8936002)(110136005)(38070700005)(2906002)(122000001)(38100700002)(82960400001)(316002)(53546011)(107886003)(55016003)(7696005)(6506007)(33656002)(41300700001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UXRXNndYcTZSK3hmdXRLSHN6cHgrTE1BazlaS0FPZWtYQzVWc2ZQaVY0ZDJt?= =?utf-8?B?R1RuNnpvb3J2ZWY0NTY1dWxDYStkR2k3QUVvdHVTd2grNHhaTDBlZkMyS3Qv?= =?utf-8?B?TG1UdllqOVZ4RzlyUHFpWkJkMHBUYVpuUnk5a1pua1hZTEd3dFM1WHNyNXFt?= =?utf-8?B?SnFsUzNuQzlIZTRUMys1SlYxcFh0S0tjYkhwUkF0TkQ1QmF1OFFwY1p1OGtX?= =?utf-8?B?UGFHWVhxY1pYM1JvUlowOGpxbWdiRnd5bTFZVjBBYnhGWWgxSFExUGpkcGg2?= =?utf-8?B?eGc3cDJ5R0hTOGx1RVBReWhsalJKYnIzMGg4K24vRGQ0Y3hDQm9nR3l6RDVN?= =?utf-8?B?SGtKWjFqdE9sU24zVHplajRMdHZCS0k4S0NKVFZ0TzBEY3JpMXJrT2ZTS3Bl?= =?utf-8?B?Yzl2NmcxREZXQ1ExMW5yYmVqVU5GWFZIK1g2Qlk1OStLUkM0Wlhld0h5QWFl?= =?utf-8?B?QkpKSjhwaWZSN2Rua2JNUjQ4NDgwVHJsUEF6S1JiNkx2M3FtZGo0VFlUNWlu?= =?utf-8?B?OU11QmtONjVrYmxRMURQYnQwZ2RRa0tMYmxUbXJIVjk2dURBMUdGdmNUTzY5?= =?utf-8?B?YTEwOFExMmQ0Q1Bxd0V5NnoyQkF2Z092N2pQSXlxeGFJQWZNNXBwYjh1RkVQ?= =?utf-8?B?VlE2ZnhsN0tIQytLOEJlYmxjRjNhTk9Gei8xYVRETWRFQVY3NUlVTjVoa0Z5?= =?utf-8?B?SlFMVWFkU3BIZTBxSmRzUklsSU5SUzFkeWY0RGhsL2xuZUgrbnphYno2QmRM?= =?utf-8?B?anRCYXNGTkRmYjFmeVM0R0Fra2Y1dzJleVgrMTU2Z1ZIUDhZRitCZnZvK0Z5?= =?utf-8?B?VVM2R1B2UEl6ZW1WTWcvR2g3b0c4czQxNUZGQ3RoTk42THIvTnV1QXFqK1hP?= =?utf-8?B?RjU1akNYUHJnZ0l1eTBMUmVmc1huWVB2ekhkWkx4TEZoM1k2VjUwL2tOdmVQ?= =?utf-8?B?ZDQzeXBNdU9PanFsOU8zY2RFUjE3TUhSVElWNDNOZUVLanVNZUszajBnTTIw?= =?utf-8?B?Z24rTm8yMHlVNmxUMVc2azZDK3I0d3JhWmszcndkSmlZejRpekw5UHorMTlG?= =?utf-8?B?L25IRkF2TEMvWi9yR0cwV1g2NHJYVy9WMjBJZDJkcTZqeDVwZGpxcC83VnYr?= =?utf-8?B?MVp1UTgvTUZxY1EvWFM5N0puMFZpTjd3M29oOFFLeDBrWU9lL29FaHozUThs?= =?utf-8?B?WWVXRnlzTVFaaXNGL1p2bjNDNlNhNjFyR0JLV3lXa0YvbUFMV0dwVEx2N2R4?= =?utf-8?B?SWJxNnNlc3RLMW1ScUxOQXlibUpmQ0pyc0Fnbm1MNnh0b1FYayt6ZUxYQTZ4?= =?utf-8?B?eTZpa3dSN1E0TlVlT1FYL2ZENERTWmJoY05pMWtsWUZXN3krOVRGbjJCYmor?= =?utf-8?B?RHloUE85QTFjaElKUW80TGVsV3hRdXZxSkk0YkxxMG5rVllGamJZOE1vaUtN?= =?utf-8?B?WGhKUk5SVzU4VnpWMHFFdkpidlpWeFVsVWgyVkFzekFmYVVFWGY3UVUzNzFI?= =?utf-8?B?ZGtXMzZnZWp5RTNYZlViWTFsV2MwNUxOUm5vZUFUVFhDeHdSTjhyM2ovdjlZ?= =?utf-8?B?c2s4LzdpRW5QS1drWVBTcWNtMnVqRnlzWUZMRjVtc3NzUXdkbHFwWDUwZnhX?= =?utf-8?B?WG5XREgweERMT0JnaXZiV2E2Y2FRcWlDYVBYelJ4d3lVdVlvY0Q2Q2U4cXp3?= =?utf-8?B?Nmw2ZElEWFlvS0xxdTZvUkZHZG1xZ1paVnNoVXJSazlnWVBId3E1U3ZlQjN0?= =?utf-8?B?Z1hVMnBkNzRBQ1RSY1JyNzdjRkZDbUdNRkVNRHM1YUJpSUZEWWRSc2toUzNt?= =?utf-8?B?UHJqcnhLUTNNdTdCRFN4Q0hya2xtY3E5cWkraGt0WHZzb2JwY0lJQit6MTQx?= =?utf-8?B?eWJ5Nlc5SGhKcVJXMHcvcmovSnNIdkFuK0lucU5vN2tpbHNsUnlTR1pYYVhu?= =?utf-8?B?WW9aVnUwS2pBRDVvR3kxV2p3blU4L1p1T3Y4MEkzMytIV2kvaGFEb3EyYnM5?= =?utf-8?B?dHVsN0dVN2R2S29OazhGU0twNGJEaFpYaGN6a3JNa2ZpclNNeG1vRjB1SFUr?= =?utf-8?B?a2Q5RTFsZnNLVHFGOXpoVU5yM3Irc2RtRFArRDM4UjVOT09YbDh5RHNpTDlj?= =?utf-8?Q?cwaXobNpxxjYHvVjUP9I1c9aO?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB6158.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c951bfbb-64d0-42ef-21f0-08da71174da5 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jul 2022 04:03:32.6732 (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: vpHFh74RLLhjFOh6pDiYEK2P4vYxELld2XIzYZVBZXi1lhIP2UPFcvVZCV+igOv0cdMNUUKXrLZPV0hQN+rghA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB1265 Return-Path: jiaxin.wu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 RHVlIHRvIHRoZSBTTUkgbGF0ZW5jeSBpbXBhY3QgZm9yIElBLTMyIHByb2Nlc3NvciwgSSB3aWxs IGRyb3AgdGhpcyBjaGFuZ2UgJiByZXBsYWNlIHdpdGggdGhlIFBDRCBjaGVjay4gSSB3aWxsIHJl c2VuZCB0aGUgbmV3IHBhdGNoIGZvciByZXZpZXcuDQoNClRoYW5rcywNCkppYXhpbiAgDQoNCj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV3UsIEppYXhpbg0KPiBTZW50OiBN b25kYXksIEp1bHkgMTgsIDIwMjIgMzozMiBQTQ0KPiBUbzogS2lubmV5LCBNaWNoYWVsIEQgPG1p Y2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gQ2M6IERv bmcsIEVyaWMgPGVyaWMuZG9uZ0BpbnRlbC5jb20+OyBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29t Pg0KPiBTdWJqZWN0OiBSRTogW2VkazItZGV2ZWxdIFtQQVRDSCB2MV0gVWVmaUNwdVBrZzogRHlu YW1pYyBjaGVjayBTTVJSIGVuYWJsZQ0KPiAmIFNtbUZlYXR1cmVDb250cm9sIGNhcGFiaWxpdHkN Cj4gDQo+IEhpIE1pa2UsDQo+IA0KPiBUaGFua3MgdGhlIGNvbW1lbnRzLiBPbmx5IElBLTMyIHBy b2Nlc3NvciB3aWxsIGNoZWNrIG9uIGV2ZXJ5IFNNSSBzaW5jZSBpdA0KPiBuZWVkcyBjb25maWd1 cmUgTXRyci4gRG8geW91IHRoaW5rIHRoZSBpbXBhY3QgaXMgYWNjZXB0YWJsZSBvciBub3Q/DQo+ IA0KPiBGb3IgZml4ZWQgUENEIHNvbHV0aW9uLCB0aGUgb3JpZ2luYWwgY29uY2VybjogdGhlIGZp eGVkIFBDRCB3aWxsIGJlIHRyZWF0ZWQgYXMNCj4gZ2xvYmFsIHZhcmlhYmxlLiBTaG91bGQgd2Ug bmVlZCBjb25zaWRlciBubyBjb21waWxlciBvcHRpbWl6YXRpb24gY2FzZSBvciBpdA0KPiBtdXN0 IGJlIG9wdGltaXplZCBhd2F5IGNvbmRpdGlvbiBjaGVja3M/DQo+IA0KPiBUaGFua3MsDQo+IEpp YXhpbg0KPiANCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBL aW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gU2VudDog TW9uZGF5LCBKdWx5IDE4LCAyMDIyIDg6MTMgQU0NCj4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMu aW87IFd1LCBKaWF4aW4gPGppYXhpbi53dUBpbnRlbC5jb20+OyBLaW5uZXksIE1pY2hhZWwNCj4g PiBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiBDYzogRG9uZywgRXJpYyA8ZXJp Yy5kb25nQGludGVsLmNvbT47IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+DQo+ID4gU3ViamVj dDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjFdIFVlZmlDcHVQa2c6IER5bmFtaWMgY2hlY2sg U01SUg0KPiBlbmFibGUNCj4gPiAmIFNtbUZlYXR1cmVDb250cm9sIGNhcGFiaWxpdHkNCj4gPg0K PiA+IEFyZSB0aGVzZSBjaGVja3MgbWFkZSBvbiBldmVyeSBTTUk/DQo+ID4NCj4gPiBXaGF0IGlz IHRoZSBpbXBhY3QgdG8gU01JIGxhdGVuY3kgdG8gZG8gdGhlIGNoZWNrIGR5bmFtaWNhbGx5Pw0K PiA+DQo+ID4gRmVhdHVyZUZsYWcgYW5kIEZpeGVkQXRCdWlsZCBQQ0RzIGFyZSBkZWNsYXJlZCBh cyBjb25zdCBnbG9iYWwgdmFyaWFibGVzDQo+ID4gd2hpY2ggYXJlIHVzZWQgYnkgb3B0aW1pemlu ZyBjb21waWxlciBhcyBjb25zdGFudHMgaW4gaW5zdHJ1Y3Rpb25zIG9yDQo+ID4gb3B0aW1pemUg YXdheSBjb25kaXRpb24gY2hlY2tzIGFsbCB0b2dldGhlci4gIFRoaXMgb3B0aW9uIHNob3VsZCBz dGlsbA0KPiA+IGJlIGNvbnNpZGVyZWQuDQo+ID4NCj4gPiBNaWtlDQo+ID4NCj4gPiA+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8 ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiBXdSwNCj4gPiBKaWF4aW4NCj4gPiA+ IFNlbnQ6IFN1bmRheSwgSnVseSAxNywgMjAyMiAxOjM4IEFNDQo+ID4gPiBUbzogZGV2ZWxAZWRr Mi5ncm91cHMuaW8NCj4gPiA+IENjOiBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsg TmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT4NCj4gPiA+IFN1YmplY3Q6IFtlZGsyLWRldmVsXSBb UEFUQ0ggdjFdIFVlZmlDcHVQa2c6IER5bmFtaWMgY2hlY2sgU01SUiBlbmFibGUNCj4gJg0KPiA+ IFNtbUZlYXR1cmVDb250cm9sIGNhcGFiaWxpdHkNCj4gPiA+DQo+ID4gPiBSRUY6IGh0dHBzOi8v YnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk2Mg0KPiA+ID4NCj4gPiA+ IFR3byBTTU0gdmFyaWFibGVzIChtU21yclN1cHBvcnRlZCAmIG1TbW1GZWF0dXJlQ29udHJvbFN1 cHBvcnRlZCkNCj4gPiBhcmUgZ2xvYmFsDQo+ID4gPiB2YXJpYWJsZXMsIHRoZXkgY29udHJvbCB3 aGV0aGVyIHRoZSBTTVJSIGFuZCBTTU0gRmVhdHVyZSBDb250cm9sIE1TUg0KPiB3aWxsDQo+ID4g PiBiZSByZXN0b3JlZCByZXNwZWN0aXZlbHkuDQo+ID4gPiBUbyBhdm9pZCB0aGUgVE9DVE9VLCBk eW5hbWljIGNoZWNrIFNNUlIgZW5hYmxlICYgU21tRmVhdHVyZUNvbnRyb2wNCj4gPiBjYXBhYmls aXR5Lg0KPiA+ID4NCj4gPiA+IENoYW5nZS1JZDogSTY4MzVlNGIwZTEyYzVlNmY1MmVmZmI2MGZk OTIyNGUzZWI5N2ZjMGQNCj4gPiA+IENjOiBFcmljIERvbmcgPGVyaWMuZG9uZ0BpbnRlbC5jb20+ DQo+ID4gPiBDYzogUmF5IE5pIDxyYXkubmlAaW50ZWwuY29tPg0KPiA+ID4gU2lnbmVkLW9mZi1i eTogSmlheGluIFd1IDxqaWF4aW4ud3VAaW50ZWwuY29tPg0KPiA+ID4gLS0tDQo+ID4gPiAgLi4u L1NtbUNwdUZlYXR1cmVzTGliL1NtbUNwdUZlYXR1cmVzTGliQ29tbW9uLmMgICAgfCAyNDgNCj4g PiArKysrKysrKysrKystLS0tLS0tLS0NCj4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgMTQxIGluc2Vy dGlvbnMoKyksIDEwNyBkZWxldGlvbnMoLSkNCj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0DQo+ID4g YS9VZWZpQ3B1UGtnL0xpYnJhcnkvU21tQ3B1RmVhdHVyZXNMaWIvU21tQ3B1RmVhdHVyZXNMaWJD b21tb24uYw0KPiA+ID4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvU21tQ3B1RmVhdHVyZXNMaWIvU21t Q3B1RmVhdHVyZXNMaWJDb21tb24uYw0KPiA+ID4gaW5kZXggNzhkZTdmODQwNy4uYjJmMzFjOTkz ZiAxMDA2NDQNCj4gPiA+IC0tLQ0KPiA+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L1NtbUNwdUZlYXR1 cmVzTGliL1NtbUNwdUZlYXR1cmVzTGliQ29tbW9uLmMNCj4gPiA+ICsrKw0KPiA+IGIvVWVmaUNw dVBrZy9MaWJyYXJ5L1NtbUNwdUZlYXR1cmVzTGliL1NtbUNwdUZlYXR1cmVzTGliQ29tbW9uLmMN Cj4gPiA+IEBAIC0zNSwyNiArMzUsMTAgQEAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCj4gPiA+ICAvLyBNU1JzIHJlcXVpcmVkIGZvciBjb25maWd1cmF0aW9u IG9mIFNNTSBDb2RlIEFjY2VzcyBDaGVjaw0KPiA+ID4gIC8vDQo+ID4gPiAgI2RlZmluZSBTTU1f RkVBVFVSRVNfTElCX0lBMzJfTUNBX0NBUCAgMHgxN0QNCj4gPiA+ICAjZGVmaW5lICAgU01NX0NP REVfQUNDRVNTX0NIS19CSVQgICAgICBCSVQ1OA0KPiA+ID4NCj4gPiA+IC0vLw0KPiA+ID4gLS8v IFNldCBkZWZhdWx0IHZhbHVlIHRvIGFzc3VtZSBTTVJSIGlzIG5vdCBzdXBwb3J0ZWQNCj4gPiA+ IC0vLw0KPiA+ID4gLUJPT0xFQU4gIG1TbXJyU3VwcG9ydGVkID0gRkFMU0U7DQo+ID4gPiAtDQo+ ID4gPiAtLy8NCj4gPiA+IC0vLyBTZXQgZGVmYXVsdCB2YWx1ZSB0byBhc3N1bWUgTVNSX1NNTV9G RUFUVVJFX0NPTlRST0wgaXMgbm90DQo+ID4gc3VwcG9ydGVkDQo+ID4gPiAtLy8NCj4gPiA+IC1C T09MRUFOICBtU21tRmVhdHVyZUNvbnRyb2xTdXBwb3J0ZWQgPSBGQUxTRTsNCj4gPiA+IC0NCj4g PiA+IC0vLw0KPiA+ID4gLS8vIFNldCBkZWZhdWx0IHZhbHVlIHRvIGFzc3VtZSBJQS0zMiBBcmNo aXRlY3R1cmFsIE1TUnMgYXJlIHVzZWQNCj4gPiA+IC0vLw0KPiA+ID4gLVVJTlQzMiAgbVNtcnJQ aHlzQmFzZU1zciA9DQo+IFNNTV9GRUFUVVJFU19MSUJfSUEzMl9TTVJSX1BIWVNCQVNFOw0KPiA+ ID4gLVVJTlQzMiAgbVNtcnJQaHlzTWFza01zciA9DQo+ID4gU01NX0ZFQVRVUkVTX0xJQl9JQTMy X1NNUlJfUEhZU01BU0s7DQo+ID4gPiAtDQo+ID4gPiAgLy8NCj4gPiA+ICAvLyBTZXQgZGVmYXVs dCB2YWx1ZSB0byBhc3N1bWUgTVRSUnMgbmVlZCB0byBiZSBjb25maWd1cmVkIG9uIGVhY2ggU01J DQo+ID4gPiAgLy8NCj4gPiA+ICBCT09MRUFOICBtTmVlZENvbmZpZ3VyZU10cnJzID0gVFJVRTsN Cj4gPiA+DQo+ID4gPiBAQCAtNjIsMjYgKzQ2LDM5IEBAIEJPT0xFQU4gIG1OZWVkQ29uZmlndXJl TXRycnMgPSBUUlVFOw0KPiA+ID4gIC8vIEFycmF5IGZvciBzdGF0ZSBvZiBTTVJSIGVuYWJsZSBv biBhbGwgQ1BVcw0KPiA+ID4gIC8vDQo+ID4gPiAgQk9PTEVBTiAgKm1TbXJyRW5hYmxlZDsNCj4g PiA+DQo+ID4gPiAgLyoqDQo+ID4gPiAtICBQZXJmb3JtcyBsaWJyYXJ5IGluaXRpYWxpemF0aW9u Lg0KPiA+ID4gKyAgUmV0dXJuIGlmIFNNUlIgaXMgc3VwcG9ydGVkDQo+ID4gPg0KPiA+ID4gLSAg VGhpcyBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBjb250YWlucyBjb21tb24gZnVuY3Rpb25hbGl0 eSBzaGFyZWQgYmV0d2VuDQo+IGFsbA0KPiA+ID4gLSAgbGlicmFyeSBpbnN0YW5jZSBjb25zdHJ1 Y3RvcnMuDQo+ID4gPiArICBAcGFyYW1baW5dIFNtcnJQaHlzQmFzZU1zciAgIFBvaW50ZXIgdG8g U21yclBoeXNCYXNlTXNyLg0KPiA+ID4gKyAgQHBhcmFtW2luXSBTbXJyUGh5c01hc2tNc3IgICBQ b2ludGVyIHRvIFNtcnJQaHlzTWFza01zci4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgVFJV RSAgU01SUiBpcyBzdXBwb3J0ZWQuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFIFNNUlIgaXMgbm90 IHN1cHBvcnRlZC4NCj4gPiA+DQo+ID4gPiAgKiovDQo+ID4gPiAtVk9JRA0KPiA+ID4gLUNwdUZl YXR1cmVzTGliSW5pdGlhbGl6YXRpb24gKA0KPiA+ID4gLSAgVk9JRA0KPiA+ID4gK0JPT0xFQU4N Cj4gPiA+ICtJc1NtcnJTdXBwb3J0ZWQgKA0KPiA+ID4gKyAgSU4gVUlOVDMyICAqU21yclBoeXNC YXNlTXNyICAgIE9QVElPTkFMLA0KPiA+ID4gKyAgSU4gVUlOVDMyICAqU21yclBoeXNNYXNrTXNy ICAgIE9QVElPTkFMDQo+ID4gPiAgICApDQo+ID4gPiAgew0KPiA+ID4gKyAgQk9PTEVBTiAgUmV0 dXJuVmFsdWU7DQo+ID4gPiArDQo+ID4gPiAgICBVSU5UMzIgIFJlZ0VheDsNCj4gPiA+ICAgIFVJ TlQzMiAgUmVnRWR4Ow0KPiA+ID4gICAgVUlOVE4gICBGYW1pbHlJZDsNCj4gPiA+ICAgIFVJTlRO ICAgTW9kZWxJZDsNCj4gPiA+DQo+ID4gPiArICBVSU5UNjQgIEZlYXR1cmVDb250cm9sOw0KPiA+ ID4gKw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIFNldCBkZWZhdWx0IHZhbHVlIHRvIGFzc3Vt ZSBTTVJSIGlzIG5vdCBzdXBwb3J0ZWQNCj4gPiA+ICsgIC8vDQo+ID4gPiArICBSZXR1cm5WYWx1 ZSA9IEZBTFNFOw0KPiA+ID4gKw0KPiA+ID4gICAgLy8NCj4gPiA+ICAgIC8vIFJldHJpZXZlIENQ VSBGYW1pbHkgYW5kIE1vZGVsDQo+ID4gPiAgICAvLw0KPiA+ID4gICAgQXNtQ3B1aWQgKENQVUlE X1ZFUlNJT05fSU5GTywgJlJlZ0VheCwgTlVMTCwgTlVMTCwgJlJlZ0VkeCk7DQo+ID4gPiAgICBG YW1pbHlJZCA9IChSZWdFYXggPj4gOCkgJiAweGY7DQo+ID4gPiBAQCAtOTYsMTEgKzkzLDExIEBA IENwdUZlYXR1cmVzTGliSW5pdGlhbGl6YXRpb24gKA0KPiA+ID4gICAgaWYgKChSZWdFZHggJiBC SVQxMikgIT0gMCkgew0KPiA+ID4gICAgICAvLw0KPiA+ID4gICAgICAvLyBDaGVjayBNVFJSX0NB UCBNU1IgYml0IDExIGZvciBTTVJSIHN1cHBvcnQNCj4gPiA+ICAgICAgLy8NCj4gPiA+ICAgICAg aWYgKChBc21SZWFkTXNyNjQgKFNNTV9GRUFUVVJFU19MSUJfSUEzMl9NVFJSX0NBUCkgJiBCSVQx MSkgIT0NCj4gMCkNCj4gPiB7DQo+ID4gPiAtICAgICAgbVNtcnJTdXBwb3J0ZWQgPSBUUlVFOw0K PiA+ID4gKyAgICAgIFJldHVyblZhbHVlID0gVFJVRTsNCj4gPiA+ICAgICAgfQ0KPiA+ID4gICAg fQ0KPiA+ID4NCj4gPiA+ICAgIC8vDQo+ID4gPiAgICAvLyBJbnRlbChSKSA2NCBhbmQgSUEtMzIg QXJjaGl0ZWN0dXJlcyBTb2Z0d2FyZSBEZXZlbG9wZXIncyBNYW51YWwNCj4gPiA+IEBAIC0xMDks MjggKzEwNiw3OSBAQCBDcHVGZWF0dXJlc0xpYkluaXRpYWxpemF0aW9uICgNCj4gPiA+ICAgIC8v IElmIENQVSBGYW1pbHkvTW9kZWwgaXMgMDZfMUNILCAwNl8yNkgsIDA2XzI3SCwgMDZfMzVIIG9y IDA2XzM2SCwNCj4gPiB0aGVuDQo+ID4gPiAgICAvLyBTTVJSIFBoeXNpY2FsIEJhc2UgYW5kIFNN TSBQaHlzaWNhbCBNYXNrIE1TUnMgYXJlIG5vdCBhdmFpbGFibGUuDQo+ID4gPiAgICAvLw0KPiA+ ID4gICAgaWYgKEZhbWlseUlkID09IDB4MDYpIHsNCj4gPiA+ICAgICAgaWYgKChNb2RlbElkID09 IDB4MUMpIHx8IChNb2RlbElkID09IDB4MjYpIHx8IChNb2RlbElkID09IDB4MjcpIHx8DQo+ID4g KE1vZGVsSWQgPT0gMHgzNSkgfHwgKE1vZGVsSWQgPT0gMHgzNikpIHsNCj4gPiA+IC0gICAgICBt U21yclN1cHBvcnRlZCA9IEZBTFNFOw0KPiA+ID4gKyAgICAgIFJldHVyblZhbHVlID0gRkFMU0U7 DQo+ID4gPiAgICAgIH0NCj4gPiA+ICAgIH0NCj4gPiA+DQo+ID4gPiAtICAvLw0KPiA+ID4gLSAg Ly8gSW50ZWwoUikgNjQgYW5kIElBLTMyIEFyY2hpdGVjdHVyZXMgU29mdHdhcmUgRGV2ZWxvcGVy J3MgTWFudWFsDQo+ID4gPiAtICAvLyBWb2x1bWUgM0MsIFNlY3Rpb24gMzUuMiBNU1JzIGluIHRo ZSBJbnRlbChSKSBDb3JlKFRNKSAyIFByb2Nlc3Nvcg0KPiA+IEZhbWlseQ0KPiA+ID4gLSAgLy8N Cj4gPiA+IC0gIC8vIElmIENQVSBGYW1pbHkvTW9kZWwgaXMgMDZfMEYgb3IgMDZfMTcsIHRoZW4g dXNlIEludGVsKFIpIENvcmUoVE0pIDINCj4gPiA+IC0gIC8vIFByb2Nlc3NvciBGYW1pbHkgTVNS cw0KPiA+ID4gLSAgLy8NCj4gPiA+IC0gIGlmIChGYW1pbHlJZCA9PSAweDA2KSB7DQo+ID4gPiAt ICAgIGlmICgoTW9kZWxJZCA9PSAweDE3KSB8fCAoTW9kZWxJZCA9PSAweDBmKSkgew0KPiA+ID4g LSAgICAgIG1TbXJyUGh5c0Jhc2VNc3IgPQ0KPiA+IFNNTV9GRUFUVVJFU19MSUJfSUEzMl9DT1JF X1NNUlJfUEhZU0JBU0U7DQo+ID4gPiAtICAgICAgbVNtcnJQaHlzTWFza01zciA9DQo+ID4gU01N X0ZFQVRVUkVTX0xJQl9JQTMyX0NPUkVfU01SUl9QSFlTTUFTSzsNCj4gPiA+ICsgIGlmIChSZXR1 cm5WYWx1ZSkgew0KPiA+ID4gKyAgICAvLw0KPiA+ID4gKyAgICAvLyBSZXR1cm4gdGhlIFNtcnJQ aHlzQmFzZU1zciAmIFNtcnJQaHlzTWFza01zciBpZiByZXF1aXJlZCAmDQo+IFNtcnINCj4gPiBT dXBwb3J0ZWQNCj4gPiA+ICsgICAgLy8NCj4gPiA+ICsgICAgaWYgKFNtcnJQaHlzQmFzZU1zciAh PSBOVUxMKSB7DQo+ID4gPiArICAgICAgKlNtcnJQaHlzQmFzZU1zciA9IFNNTV9GRUFUVVJFU19M SUJfSUEzMl9TTVJSX1BIWVNCQVNFOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArDQo+ID4gPiArICAg IGlmIChTbXJyUGh5c0Jhc2VNc3IgIT0gTlVMTCkgew0KPiA+ID4gKyAgICAgICpTbXJyUGh5c01h c2tNc3IgPSBTTU1fRkVBVFVSRVNfTElCX0lBMzJfU01SUl9QSFlTTUFTSzsNCj4gPiA+ICsgICAg fQ0KPiA+ID4gKw0KPiA+ID4gKyAgICAvLw0KPiA+ID4gKyAgICAvLyBJbnRlbChSKSA2NCBhbmQg SUEtMzIgQXJjaGl0ZWN0dXJlcyBTb2Z0d2FyZSBEZXZlbG9wZXIncyBNYW51YWwNCj4gPiA+ICsg ICAgLy8gVm9sdW1lIDNDLCBTZWN0aW9uIDM1LjIgTVNScyBpbiB0aGUgSW50ZWwoUikgQ29yZShU TSkgMiBQcm9jZXNzb3INCj4gPiBGYW1pbHkNCj4gPiA+ICsgICAgLy8NCj4gPiA+ICsgICAgLy8g SWYgQ1BVIEZhbWlseS9Nb2RlbCBpcyAwNl8wRiBvciAwNl8xNywgdGhlbiB1c2UgSW50ZWwoUikg Q29yZShUTSkgMg0KPiA+ID4gKyAgICAvLyBQcm9jZXNzb3IgRmFtaWx5IE1TUnMNCj4gPiA+ICsg ICAgLy8NCj4gPiA+ICsgICAgaWYgKEZhbWlseUlkID09IDB4MDYpIHsNCj4gPiA+ICsgICAgICBp ZiAoKE1vZGVsSWQgPT0gMHgxNykgfHwgKE1vZGVsSWQgPT0gMHgwZikpIHsNCj4gPiA+ICsgICAg ICAgIGlmIChTbXJyUGh5c0Jhc2VNc3IgIT0gTlVMTCkgew0KPiA+ID4gKyAgICAgICAgICAqU21y clBoeXNCYXNlTXNyID0NCj4gPiBTTU1fRkVBVFVSRVNfTElCX0lBMzJfQ09SRV9TTVJSX1BIWVNC QVNFOw0KPiA+ID4gKyAgICAgICAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgICAgICAgaWYgKFNtcnJQ aHlzTWFza01zciAhPSBOVUxMKSB7DQo+ID4gPiArICAgICAgICAgICpTbXJyUGh5c01hc2tNc3Ig PQ0KPiA+IFNNTV9GRUFUVVJFU19MSUJfSUEzMl9DT1JFX1NNUlJfUEhZU01BU0s7DQo+ID4gPiAr ICAgICAgICB9DQo+ID4gPiArDQo+ID4gPiArICAgICAgICAvLw0KPiA+ID4gKyAgICAgICAgLy8g SW50ZWwoUikgNjQgYW5kIElBLTMyIEFyY2hpdGVjdHVyZXMgU29mdHdhcmUgRGV2ZWxvcGVyJ3Mg TWFudWFsDQo+ID4gPiArICAgICAgICAvLyBWb2x1bWUgM0MsIFNlY3Rpb24gMzUuMiBNU1JzIGlu IHRoZSBJbnRlbChSKSBDb3JlKFRNKSAyIFByb2Nlc3Nvcg0KPiA+IEZhbWlseQ0KPiA+ID4gKyAg ICAgICAgLy8NCj4gPiA+ICsgICAgICAgIC8vIElmIEludGVsKFIpIENvcmUoVE0pIENvcmUoVE0p IDIgUHJvY2Vzc29yIEZhbWlseSBNU1JzIGFyZSBiZWluZw0KPiA+IHVzZWQsIHRoZW4NCj4gPiA+ ICsgICAgICAgIC8vIG1ha2Ugc3VyZSBTTVJSIEVuYWJsZShCSVQzKSBvZiBNU1JfRkVBVFVSRV9D T05UUk9MDQo+ID4gTVNSKDB4M0EpIGlzIHNldCBiZWZvcmUNCj4gPiA+ICsgICAgICAgIC8vIGFj Y2Vzc2luZyBTTVJSIGJhc2UvbWFzayBNU1JzLiAgSWYgTG9jayhCSVQwKSBvZg0KPiA+IE1TUl9G RUFUVVJFX0NPTlRST0wgTVNSKDB4M0EpDQo+ID4gPiArICAgICAgICAvLyBpcyBzZXQsIHRoZW4g dGhlIE1TUiBpcyBsb2NrZWQgYW5kIGNhbiBub3QgYmUgbW9kaWZpZWQuDQo+ID4gPiArICAgICAg ICAvLw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgICAgRmVhdHVyZUNvbnRyb2wgPSBBc21SZWFkTXNy NjQNCj4gPiAoU01NX0ZFQVRVUkVTX0xJQl9JQTMyX0ZFQVRVUkVfQ09OVFJPTCk7DQo+ID4gPiAr ICAgICAgICBpZiAoKChGZWF0dXJlQ29udHJvbCAmIEJJVDMpID09IDApICYmICgoRmVhdHVyZUNv bnRyb2wgJiBCSVQwKSA9PSAxKSkNCj4gew0KPiA+ID4gKyAgICAgICAgICBSZXR1cm5WYWx1ZSA9 IEZBTFNFOw0KPiA+ID4gKyAgICAgICAgfQ0KPiA+ID4gKyAgICAgIH0NCj4gPiA+ICAgICAgfQ0K PiA+ID4gICAgfQ0KPiA+ID4NCj4gPiA+ICsgIHJldHVybiBSZXR1cm5WYWx1ZTsNCj4gPiA+ICt9 DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBQZXJmb3JtcyBsaWJyYXJ5IGluaXRpYWxp emF0aW9uLg0KPiA+ID4gKw0KPiA+ID4gKyAgVGhpcyBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBj b250YWlucyBjb21tb24gZnVuY3Rpb25hbGl0eSBzaGFyZWQgYmV0d2VuDQo+IGFsbA0KPiA+ID4g KyAgbGlicmFyeSBpbnN0YW5jZSBjb25zdHJ1Y3RvcnMuDQo+ID4gPiArDQo+ID4gPiArKiovDQo+ ID4gPiArVk9JRA0KPiA+ID4gK0NwdUZlYXR1cmVzTGliSW5pdGlhbGl6YXRpb24gKA0KPiA+ID4g KyAgVk9JRA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIFVJTlQzMiAgUmVnRWF4Ow0K PiA+ID4gKyAgVUlOVDMyICBSZWdFZHg7DQo+ID4gPiArDQo+ID4gPiAgICAvLw0KPiA+ID4gICAg Ly8gSW50ZWwoUikgNjQgYW5kIElBLTMyIEFyY2hpdGVjdHVyZXMgU29mdHdhcmUgRGV2ZWxvcGVy J3MgTWFudWFsDQo+ID4gPiAgICAvLyBWb2x1bWUgM0MsIFNlY3Rpb24gMzQuNC4yIFNNUkFNIENh Y2hpbmcNCj4gPiA+ICAgIC8vICAgQW4gSUEtMzIgcHJvY2Vzc29yIGRvZXMgbm90IGF1dG9tYXRp Y2FsbHkgd3JpdGUgYmFjayBhbmQgaW52YWxpZGF0ZQ0KPiBpdHMNCj4gPiA+ICAgIC8vICAgY2Fj aGVzIGJlZm9yZSBlbnRlcmluZyBTTU0gb3IgYmVmb3JlIGV4aXRpbmcgU01NLiBCZWNhdXNlIG9m IHRoaXMNCj4gPiBiZWhhdmlvciwNCj4gPiA+IEBAIC0xOTMsNTAgKzI0MSwyNyBAQCBTbW1DcHVG ZWF0dXJlc0luaXRpYWxpemVQcm9jZXNzb3IgKA0KPiA+ID4gICAgSU4gRUZJX1BST0NFU1NPUl9J TkZPUk1BVElPTiAgKlByb2Nlc3NvckluZm8sDQo+ID4gPiAgICBJTiBDUFVfSE9UX1BMVUdfREFU QSAgICAgICAgICAqQ3B1SG90UGx1Z0RhdGENCj4gPiA+ICAgICkNCj4gPiA+ICB7DQo+ID4gPiAg ICBTTVJBTV9TQVZFX1NUQVRFX01BUCAgKkNwdVN0YXRlOw0KPiA+ID4gLSAgVUlOVDY0ICAgICAg ICAgICAgICAgIEZlYXR1cmVDb250cm9sOw0KPiA+ID4gLSAgVUlOVDMyICAgICAgICAgICAgICAg IFJlZ0VheDsNCj4gPiA+IC0gIFVJTlQzMiAgICAgICAgICAgICAgICBSZWdFZHg7DQo+ID4gPiAt ICBVSU5UTiAgICAgICAgICAgICAgICAgRmFtaWx5SWQ7DQo+ID4gPiAtICBVSU5UTiAgICAgICAg ICAgICAgICAgTW9kZWxJZDsNCj4gPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICBTbXJyUGh5 c0Jhc2VNc3I7DQo+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgU21yclBoeXNNYXNrTXNy Ow0KPiA+ID4NCj4gPiA+ICAgIC8vDQo+ID4gPiAgICAvLyBDb25maWd1cmUgU01CQVNFLg0KPiA+ ID4gICAgLy8NCj4gPiA+ICAgIENwdVN0YXRlICAgICAgICAgICAgID0gKFNNUkFNX1NBVkVfU1RB VEVfTUFQDQo+ID4gKikoVUlOVE4pKFNNTV9ERUZBVUxUX1NNQkFTRSArIFNNUkFNX1NBVkVfU1RB VEVfTUFQX09GRlNFVCk7DQo+ID4gPiAgICBDcHVTdGF0ZS0+eDg2LlNNQkFTRSA9IChVSU5UMzIp Q3B1SG90UGx1Z0RhdGEtPlNtQmFzZVtDcHVJbmRleF07DQo+ID4gPg0KPiA+ID4gLSAgLy8NCj4g PiA+IC0gIC8vIEludGVsKFIpIDY0IGFuZCBJQS0zMiBBcmNoaXRlY3R1cmVzIFNvZnR3YXJlIERl dmVsb3BlcidzIE1hbnVhbA0KPiA+ID4gLSAgLy8gVm9sdW1lIDNDLCBTZWN0aW9uIDM1LjIgTVNS cyBpbiB0aGUgSW50ZWwoUikgQ29yZShUTSkgMiBQcm9jZXNzb3INCj4gPiBGYW1pbHkNCj4gPiA+ IC0gIC8vDQo+ID4gPiAtICAvLyBJZiBJbnRlbChSKSBDb3JlKFRNKSBDb3JlKFRNKSAyIFByb2Nl c3NvciBGYW1pbHkgTVNScyBhcmUgYmVpbmcgdXNlZCwNCj4gPiB0aGVuDQo+ID4gPiAtICAvLyBt YWtlIHN1cmUgU01SUiBFbmFibGUoQklUMykgb2YgTVNSX0ZFQVRVUkVfQ09OVFJPTCBNU1IoMHgz QSkNCj4gPiBpcyBzZXQgYmVmb3JlDQo+ID4gPiAtICAvLyBhY2Nlc3NpbmcgU01SUiBiYXNlL21h c2sgTVNScy4gIElmIExvY2soQklUMCkgb2YNCj4gPiBNU1JfRkVBVFVSRV9DT05UUk9MIE1TUigw eDNBKQ0KPiA+ID4gLSAgLy8gaXMgc2V0LCB0aGVuIHRoZSBNU1IgaXMgbG9ja2VkIGFuZCBjYW4g bm90IGJlIG1vZGlmaWVkLg0KPiA+ID4gLSAgLy8NCj4gPiA+IC0gIGlmIChtU21yclN1cHBvcnRl ZCAmJiAobVNtcnJQaHlzQmFzZU1zciA9PQ0KPiA+IFNNTV9GRUFUVVJFU19MSUJfSUEzMl9DT1JF X1NNUlJfUEhZU0JBU0UpKSB7DQo+ID4gPiAtICAgIEZlYXR1cmVDb250cm9sID0gQXNtUmVhZE1z cjY0DQo+ID4gKFNNTV9GRUFUVVJFU19MSUJfSUEzMl9GRUFUVVJFX0NPTlRST0wpOw0KPiA+ID4g LSAgICBpZiAoKEZlYXR1cmVDb250cm9sICYgQklUMykgPT0gMCkgew0KPiA+ID4gLSAgICAgIGlm ICgoRmVhdHVyZUNvbnRyb2wgJiBCSVQwKSA9PSAwKSB7DQo+ID4gPiAtICAgICAgICBBc21Xcml0 ZU1zcjY0IChTTU1fRkVBVFVSRVNfTElCX0lBMzJfRkVBVFVSRV9DT05UUk9MLA0KPiA+IEZlYXR1 cmVDb250cm9sIHwgQklUMyk7DQo+ID4gPiAtICAgICAgfSBlbHNlIHsNCj4gPiA+IC0gICAgICAg IG1TbXJyU3VwcG9ydGVkID0gRkFMU0U7DQo+ID4gPiAtICAgICAgfQ0KPiA+ID4gLSAgICB9DQo+ ID4gPiAtICB9DQo+ID4gPiAtDQo+ID4gPiAgICAvLw0KPiA+ID4gICAgLy8gSWYgU01SUiBpcyBz dXBwb3J0ZWQsIHRoZW4gcHJvZ3JhbSBTTVJSIGJhc2UvbWFzayBNU1JzLg0KPiA+ID4gICAgLy8g VGhlIEVGSV9NU1JfU01SUl9QSFlTX01BU0tfVkFMSUQgYml0IGlzIG5vdCBzZXQgdW50aWwgdGhl IGZpcnN0DQo+ID4gbm9ybWFsIFNNSS4NCj4gPiA+ICAgIC8vIFRoZSBjb2RlIHRoYXQgaW5pdGlh bGl6ZXMgU01NIGVudmlyb25tZW50IGlzIHJ1bm5pbmcgaW4gbm9ybWFsIG1vZGUNCj4gPiA+ICAg IC8vIGZyb20gU01SQU0gcmVnaW9uLiAgSWYgU01SUiBpcyBlbmFibGVkIGhlcmUsIHRoZW4gdGhl IFNNUkFNDQo+IHJlZ2lvbg0KPiA+ID4gICAgLy8gaXMgcHJvdGVjdGVkIGFuZCB0aGUgbm9ybWFs IG1vZGUgY29kZSBleGVjdXRpb24gd2lsbCBmYWlsLg0KPiA+ID4gICAgLy8NCj4gPiA+IC0gIGlm IChtU21yclN1cHBvcnRlZCkgew0KPiA+ID4gKyAgaWYgKElzU21yclN1cHBvcnRlZCAoJlNtcnJQ aHlzQmFzZU1zciwgJlNtcnJQaHlzTWFza01zcikpIHsNCj4gPiA+ICAgICAgLy8NCj4gPiA+ICAg ICAgLy8gU01SUiBzaXplIGNhbm5vdCBiZSBsZXNzIHRoYW4gNC1LQnl0ZXMNCj4gPiA+ICAgICAg Ly8gU01SUiBzaXplIG11c3QgYmUgb2YgbGVuZ3RoIDJebg0KPiA+ID4gICAgICAvLyBTTVJSIGJh c2UgYWxpZ25tZW50IGNhbm5vdCBiZSBsZXNzIHRoYW4gU01SUiBsZW5ndGgNCj4gPiA+ICAgICAg Ly8NCj4gPiA+IEBAIC0yNTAsNTAgKzI3NSwxNiBAQCBTbW1DcHVGZWF0dXJlc0luaXRpYWxpemVQ cm9jZXNzb3IgKA0KPiA+ID4gICAgICAgIGlmIChJc01vbmFyY2gpIHsNCj4gPiA+ICAgICAgICAg IERFQlVHICgoREVCVUdfRVJST1IsICJTTU0gQmFzZS9TaXplIGRvZXMgbm90IG1lZXQNCj4gPiBh bGlnbm1lbnQvc2l6ZSByZXF1aXJlbWVudCFcbiIpKTsNCj4gPiA+ICAgICAgICAgIENwdURlYWRM b29wICgpOw0KPiA+ID4gICAgICAgIH0NCj4gPiA+ICAgICAgfSBlbHNlIHsNCj4gPiA+IC0gICAg ICBBc21Xcml0ZU1zcjY0IChtU21yclBoeXNCYXNlTXNyLCBDcHVIb3RQbHVnRGF0YS0+U21yckJh c2UgfA0KPiA+IE1UUlJfQ0FDSEVfV1JJVEVfQkFDSyk7DQo+ID4gPiAtICAgICAgQXNtV3JpdGVN c3I2NCAobVNtcnJQaHlzTWFza01zciwgKH4oQ3B1SG90UGx1Z0RhdGEtPlNtcnJTaXplIC0NCj4g MSkNCj4gPiAmIEVGSV9NU1JfU01SUl9NQVNLKSk7DQo+ID4gPiArICAgICAgQXNtV3JpdGVNc3I2 NCAoU21yclBoeXNCYXNlTXNyLCBDcHVIb3RQbHVnRGF0YS0+U21yckJhc2UgfA0KPiA+IE1UUlJf Q0FDSEVfV1JJVEVfQkFDSyk7DQo+ID4gPiArICAgICAgQXNtV3JpdGVNc3I2NCAoU21yclBoeXNN YXNrTXNyLCAofihDcHVIb3RQbHVnRGF0YS0+U21yclNpemUgLSAxKQ0KPiA+ICYgRUZJX01TUl9T TVJSX01BU0spKTsNCj4gPiA+ICAgICAgICBtU21yckVuYWJsZWRbQ3B1SW5kZXhdID0gRkFMU0U7 DQo+ID4gPiAgICAgIH0NCj4gPiA+ICAgIH0NCj4gPiA+DQo+ID4gPiAtICAvLw0KPiA+ID4gLSAg Ly8gUmV0cmlldmUgQ1BVIEZhbWlseSBhbmQgTW9kZWwNCj4gPiA+IC0gIC8vDQo+ID4gPiAtICBB c21DcHVpZCAoQ1BVSURfVkVSU0lPTl9JTkZPLCAmUmVnRWF4LCBOVUxMLCBOVUxMLCAmUmVnRWR4 KTsNCj4gPiA+IC0gIEZhbWlseUlkID0gKFJlZ0VheCA+PiA4KSAmIDB4ZjsNCj4gPiA+IC0gIE1v ZGVsSWQgID0gKFJlZ0VheCA+PiA0KSAmIDB4ZjsNCj4gPiA+IC0gIGlmICgoRmFtaWx5SWQgPT0g MHgwNikgfHwgKEZhbWlseUlkID09IDB4MGYpKSB7DQo+ID4gPiAtICAgIE1vZGVsSWQgPSBNb2Rl bElkIHwgKChSZWdFYXggPj4gMTIpICYgMHhmMCk7DQo+ID4gPiAtICB9DQo+ID4gPiAtDQo+ID4g PiAtICAvLw0KPiA+ID4gLSAgLy8gSW50ZWwoUikgNjQgYW5kIElBLTMyIEFyY2hpdGVjdHVyZXMg U29mdHdhcmUgRGV2ZWxvcGVyJ3MgTWFudWFsDQo+ID4gPiAtICAvLyBWb2x1bWUgM0MsIFNlY3Rp b24gMzUuMTAuMSBNU1JzIGluIDR0aCBHZW5lcmF0aW9uIEludGVsKFIpIENvcmUoVE0pDQo+ID4g PiAtICAvLyBQcm9jZXNzb3IgRmFtaWx5Lg0KPiA+ID4gLSAgLy8NCj4gPiA+IC0gIC8vIElmIENQ VSBGYW1pbHkvTW9kZWwgaXMgMDZfM0MsIDA2XzQ1LCBvciAwNl80NiB0aGVuIHVzZSA0dGgNCj4g R2VuZXJhdGlvbg0KPiA+ID4gLSAgLy8gSW50ZWwoUikgQ29yZShUTSkgUHJvY2Vzc29yIEZhbWls eSBNU1JzLg0KPiA+ID4gLSAgLy8NCj4gPiA+IC0gIGlmIChGYW1pbHlJZCA9PSAweDA2KSB7DQo+ ID4gPiAtICAgIGlmICgoTW9kZWxJZCA9PSAweDNDKSB8fCAoTW9kZWxJZCA9PSAweDQ1KSB8fCAo TW9kZWxJZCA9PSAweDQ2KSB8fA0KPiA+ID4gLSAgICAgICAgKE1vZGVsSWQgPT0gMHgzRCkgfHwg KE1vZGVsSWQgPT0gMHg0NykgfHwgKE1vZGVsSWQgPT0gMHg0RSkgfHwNCj4gPiAoTW9kZWxJZCA9 PSAweDRGKSB8fA0KPiA+ID4gLSAgICAgICAgKE1vZGVsSWQgPT0gMHgzRikgfHwgKE1vZGVsSWQg PT0gMHg1NikgfHwgKE1vZGVsSWQgPT0gMHg1NykgfHwNCj4gPiAoTW9kZWxJZCA9PSAweDVDKSB8 fA0KPiA+ID4gLSAgICAgICAgKE1vZGVsSWQgPT0gMHg4QykpDQo+ID4gPiAtICAgIHsNCj4gPiA+ IC0gICAgICAvLw0KPiA+ID4gLSAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgQ1BVIHN1cHBv cnRzIHRoZSBTTU0gQ29kZSBBY2Nlc3MgQ2hlY2sNCj4gZmVhdHVyZQ0KPiA+ID4gLSAgICAgIC8v IERvIG5vdCBhY2Nlc3MgdGhpcyBNU1IgdW5sZXNzIHRoZSBDUFUgc3VwcG9ydHMgdGhlDQo+ID4g U21tUmVnRmVhdHVyZUNvbnRyb2wNCj4gPiA+IC0gICAgICAvLw0KPiA+ID4gLSAgICAgIGlmICgo QXNtUmVhZE1zcjY0IChTTU1fRkVBVFVSRVNfTElCX0lBMzJfTUNBX0NBUCkgJg0KPiA+IFNNTV9D T0RFX0FDQ0VTU19DSEtfQklUKSAhPSAwKSB7DQo+ID4gPiAtICAgICAgICBtU21tRmVhdHVyZUNv bnRyb2xTdXBwb3J0ZWQgPSBUUlVFOw0KPiA+ID4gLSAgICAgIH0NCj4gPiA+IC0gICAgfQ0KPiA+ ID4gLSAgfQ0KPiA+ID4gLQ0KPiA+ID4gICAgLy8NCj4gPiA+ICAgIC8vICBDYWxsIGludGVybmFs IHdvcmtlciBmdW5jdGlvbiB0aGF0IGNvbXBsZXRlcyB0aGUgQ1BVIGluaXRpYWxpemF0aW9uDQo+ ID4gPiAgICAvLw0KPiA+ID4gICAgRmluaXNoU21tQ3B1RmVhdHVyZXNJbml0aWFsaXplUHJvY2Vz c29yICgpOw0KPiA+ID4gIH0NCj4gPiA+IEBAIC0zODEsMTIgKzM3MiwxNCBAQCBWT0lEDQo+ID4g PiAgRUZJQVBJDQo+ID4gPiAgU21tQ3B1RmVhdHVyZXNEaXNhYmxlU21yciAoDQo+ID4gPiAgICBW T0lEDQo+ID4gPiAgICApDQo+ID4gPiAgew0KPiA+ID4gLSAgaWYgKG1TbXJyU3VwcG9ydGVkICYm IG1OZWVkQ29uZmlndXJlTXRycnMpIHsNCj4gPiA+IC0gICAgQXNtV3JpdGVNc3I2NCAobVNtcnJQ aHlzTWFza01zciwgQXNtUmVhZE1zcjY0DQo+ID4gKG1TbXJyUGh5c01hc2tNc3IpICYgfkVGSV9N U1JfU01SUl9QSFlTX01BU0tfVkFMSUQpOw0KPiA+ID4gKyAgVUlOVDMyICBTbXJyUGh5c01hc2tN c3I7DQo+ID4gPiArDQo+ID4gPiArICBpZiAoSXNTbXJyU3VwcG9ydGVkIChOVUxMLCAmU21yclBo eXNNYXNrTXNyKSAmJg0KPiA+IG1OZWVkQ29uZmlndXJlTXRycnMpIHsNCj4gPiA+ICsgICAgQXNt V3JpdGVNc3I2NCAoU21yclBoeXNNYXNrTXNyLCBBc21SZWFkTXNyNjQNCj4gKFNtcnJQaHlzTWFz a01zcikNCj4gPiAmIH5FRklfTVNSX1NNUlJfUEhZU19NQVNLX1ZBTElEKTsNCj4gPiA+ICAgIH0N Cj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gIC8qKg0KPiA+ID4gICAgRW5hYmxlIFNNUlIgcmVnaXN0 ZXIgaWYgU01SUiBpcyBzdXBwb3J0ZWQgYW5kDQo+ID4gU21tQ3B1RmVhdHVyZXNOZWVkQ29uZmln dXJlTXRycnMoKQ0KPiA+ID4gQEAgLTM5NiwxMiArMzg5LDE0IEBAIFZPSUQNCj4gPiA+ICBFRklB UEkNCj4gPiA+ICBTbW1DcHVGZWF0dXJlc1JlZW5hYmxlU21yciAoDQo+ID4gPiAgICBWT0lEDQo+ ID4gPiAgICApDQo+ID4gPiAgew0KPiA+ID4gLSAgaWYgKG1TbXJyU3VwcG9ydGVkICYmIG1OZWVk Q29uZmlndXJlTXRycnMpIHsNCj4gPiA+IC0gICAgQXNtV3JpdGVNc3I2NCAobVNtcnJQaHlzTWFz a01zciwgQXNtUmVhZE1zcjY0DQo+ID4gKG1TbXJyUGh5c01hc2tNc3IpIHwgRUZJX01TUl9TTVJS X1BIWVNfTUFTS19WQUxJRCk7DQo+ID4gPiArICBVSU5UMzIgIFNtcnJQaHlzTWFza01zcjsNCj4g PiA+ICsNCj4gPiA+ICsgIGlmIChJc1NtcnJTdXBwb3J0ZWQgKE5VTEwsICZTbXJyUGh5c01hc2tN c3IpICYmDQo+ID4gbU5lZWRDb25maWd1cmVNdHJycykgew0KPiA+ID4gKyAgICBBc21Xcml0ZU1z cjY0IChTbXJyUGh5c01hc2tNc3IsIEFzbVJlYWRNc3I2NA0KPiAoU21yclBoeXNNYXNrTXNyKQ0K PiA+IHwgRUZJX01TUl9TTVJSX1BIWVNfTUFTS19WQUxJRCk7DQo+ID4gPiAgICB9DQo+ID4gPiAg fQ0KPiA+ID4NCj4gPiA+ICAvKioNCj4gPiA+ICAgIFByb2Nlc3NvciBzcGVjaWZpYyBob29rIHBv aW50IGVhY2ggdGltZSBhIENQVSBlbnRlcnMgU3lzdGVtDQo+IE1hbmFnZW1lbnQNCj4gPiBNb2Rl Lg0KPiA+ID4gQEAgLTQxNCwxNSArNDA5LDE3IEBAIFZPSUQNCj4gPiA+ICBFRklBUEkNCj4gPiA+ ICBTbW1DcHVGZWF0dXJlc1JlbmRlenZvdXNFbnRyeSAoDQo+ID4gPiAgICBJTiBVSU5UTiAgQ3B1 SW5kZXgNCj4gPiA+ICAgICkNCj4gPiA+ICB7DQo+ID4gPiArICBVSU5UMzIgIFNtcnJQaHlzTWFz a01zcjsNCj4gPiA+ICsNCj4gPiA+ICAgIC8vDQo+ID4gPiAgICAvLyBJZiBTTVJSIGlzIHN1cHBv cnRlZCBhbmQgdGhpcyBpcyB0aGUgZmlyc3Qgbm9ybWFsIFNNSSwgdGhlbiBlbmFibGUgU01SUg0K PiA+ID4gICAgLy8NCj4gPiA+IC0gIGlmIChtU21yclN1cHBvcnRlZCAmJiAhbVNtcnJFbmFibGVk W0NwdUluZGV4XSkgew0KPiA+ID4gLSAgICBBc21Xcml0ZU1zcjY0IChtU21yclBoeXNNYXNrTXNy LCBBc21SZWFkTXNyNjQNCj4gPiAobVNtcnJQaHlzTWFza01zcikgfCBFRklfTVNSX1NNUlJfUEhZ U19NQVNLX1ZBTElEKTsNCj4gPiA+ICsgIGlmICghbVNtcnJFbmFibGVkW0NwdUluZGV4XSAmJiBJ c1NtcnJTdXBwb3J0ZWQgKE5VTEwsDQo+ID4gJlNtcnJQaHlzTWFza01zcikpIHsNCj4gPiA+ICsg ICAgQXNtV3JpdGVNc3I2NCAoU21yclBoeXNNYXNrTXNyLCBBc21SZWFkTXNyNjQNCj4gKFNtcnJQ aHlzTWFza01zcikNCj4gPiB8IEVGSV9NU1JfU01SUl9QSFlTX01BU0tfVkFMSUQpOw0KPiA+ID4g ICAgICBtU21yckVuYWJsZWRbQ3B1SW5kZXhdID0gVFJVRTsNCj4gPiA+ICAgIH0NCj4gPiA+ICB9 DQo+ID4gPg0KPiA+ID4gIC8qKg0KPiA+ID4gQEAgLTQ1OCwxMiArNDU1LDQ5IEBAIEVGSUFQSQ0K PiA+ID4gIFNtbUNwdUZlYXR1cmVzSXNTbW1SZWdpc3RlclN1cHBvcnRlZCAoDQo+ID4gPiAgICBJ TiBVSU5UTiAgICAgICAgIENwdUluZGV4LA0KPiA+ID4gICAgSU4gU01NX1JFR19OQU1FICBSZWdO YW1lDQo+ID4gPiAgICApDQo+ID4gPiAgew0KPiA+ID4gLSAgaWYgKG1TbW1GZWF0dXJlQ29udHJv bFN1cHBvcnRlZCAmJiAoUmVnTmFtZSA9PQ0KPiA+IFNtbVJlZ0ZlYXR1cmVDb250cm9sKSkgew0K PiA+ID4gLSAgICByZXR1cm4gVFJVRTsNCj4gPiA+ICsgIFVJTlQzMiAgUmVnRWF4Ow0KPiA+ID4g KyAgVUlOVDMyICBSZWdFZHg7DQo+ID4gPiArICBVSU5UTiAgIEZhbWlseUlkOw0KPiA+ID4gKyAg VUlOVE4gICBNb2RlbElkOw0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKFJlZ05hbWUgPT0gU21tUmVn RmVhdHVyZUNvbnRyb2wpIHsNCj4gPiA+ICsgICAgLy8NCj4gPiA+ICsgICAgLy8gUmV0cmlldmUg Q1BVIEZhbWlseSBhbmQgTW9kZWwNCj4gPiA+ICsgICAgLy8NCj4gPiA+ICsgICAgQXNtQ3B1aWQg KENQVUlEX1ZFUlNJT05fSU5GTywgJlJlZ0VheCwgTlVMTCwgTlVMTCwgJlJlZ0VkeCk7DQo+ID4g PiArICAgIEZhbWlseUlkID0gKFJlZ0VheCA+PiA4KSAmIDB4ZjsNCj4gPiA+ICsgICAgTW9kZWxJ ZCAgPSAoUmVnRWF4ID4+IDQpICYgMHhmOw0KPiA+ID4gKyAgICBpZiAoKEZhbWlseUlkID09IDB4 MDYpIHx8IChGYW1pbHlJZCA9PSAweDBmKSkgew0KPiA+ID4gKyAgICAgIE1vZGVsSWQgPSBNb2Rl bElkIHwgKChSZWdFYXggPj4gMTIpICYgMHhmMCk7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsNCj4g PiA+ICsgICAgLy8NCj4gPiA+ICsgICAgLy8gSW50ZWwoUikgNjQgYW5kIElBLTMyIEFyY2hpdGVj dHVyZXMgU29mdHdhcmUgRGV2ZWxvcGVyJ3MgTWFudWFsDQo+ID4gPiArICAgIC8vIFZvbHVtZSAz QywgU2VjdGlvbiAzNS4xMC4xIE1TUnMgaW4gNHRoIEdlbmVyYXRpb24gSW50ZWwoUikgQ29yZShU TSkNCj4gPiA+ICsgICAgLy8gUHJvY2Vzc29yIEZhbWlseS4NCj4gPiA+ICsgICAgLy8NCj4gPiA+ ICsgICAgLy8gSWYgQ1BVIEZhbWlseS9Nb2RlbCBpcyAwNl8zQywgMDZfNDUsIG9yIDA2XzQ2IHRo ZW4gdXNlIDR0aA0KPiA+IEdlbmVyYXRpb24NCj4gPiA+ICsgICAgLy8gSW50ZWwoUikgQ29yZShU TSkgUHJvY2Vzc29yIEZhbWlseSBNU1JzLg0KPiA+ID4gKyAgICAvLw0KPiA+ID4gKyAgICBpZiAo RmFtaWx5SWQgPT0gMHgwNikgew0KPiA+ID4gKyAgICAgIGlmICgoTW9kZWxJZCA9PSAweDNDKSB8 fCAoTW9kZWxJZCA9PSAweDQ1KSB8fCAoTW9kZWxJZCA9PSAweDQ2KSB8fA0KPiA+ID4gKyAgICAg ICAgICAoTW9kZWxJZCA9PSAweDNEKSB8fCAoTW9kZWxJZCA9PSAweDQ3KSB8fCAoTW9kZWxJZCA9 PSAweDRFKSB8fA0KPiA+IChNb2RlbElkID09IDB4NEYpIHx8DQo+ID4gPiArICAgICAgICAgIChN b2RlbElkID09IDB4M0YpIHx8IChNb2RlbElkID09IDB4NTYpIHx8IChNb2RlbElkID09IDB4NTcp IHx8DQo+ID4gKE1vZGVsSWQgPT0gMHg1QykgfHwNCj4gPiA+ICsgICAgICAgICAgKE1vZGVsSWQg PT0gMHg4QykpDQo+ID4gPiArICAgICAgew0KPiA+ID4gKyAgICAgICAgLy8NCj4gPiA+ICsgICAg ICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgQ1BVIHN1cHBvcnRzIHRoZSBTTU0gQ29kZSBBY2Nl c3MgQ2hlY2sNCj4gPiBmZWF0dXJlDQo+ID4gPiArICAgICAgICAvLyBEbyBub3QgYWNjZXNzIHRo aXMgTVNSIHVubGVzcyB0aGUgQ1BVIHN1cHBvcnRzIHRoZQ0KPiA+IFNtbVJlZ0ZlYXR1cmVDb250 cm9sDQo+ID4gPiArICAgICAgICAvLw0KPiA+ID4gKyAgICAgICAgaWYgKChBc21SZWFkTXNyNjQg KFNNTV9GRUFUVVJFU19MSUJfSUEzMl9NQ0FfQ0FQKSAmDQo+ID4gU01NX0NPREVfQUNDRVNTX0NI S19CSVQpICE9IDApIHsNCj4gPiA+ICsgICAgICAgICAgcmV0dXJuIFRSVUU7DQo+ID4gPiArICAg ICAgICB9DQo+ID4gPiArICAgICAgfQ0KPiA+ID4gKyAgICB9DQo+ID4gPiAgICB9DQo+ID4gPg0K PiA+ID4gICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gIH0NCj4gPiA+DQo+ID4gPiBAQCAtNDg0LDEx ICs1MTgsMTEgQEAgRUZJQVBJDQo+ID4gPiAgU21tQ3B1RmVhdHVyZXNHZXRTbW1SZWdpc3RlciAo DQo+ID4gPiAgICBJTiBVSU5UTiAgICAgICAgIENwdUluZGV4LA0KPiA+ID4gICAgSU4gU01NX1JF R19OQU1FICBSZWdOYW1lDQo+ID4gPiAgICApDQo+ID4gPiAgew0KPiA+ID4gLSAgaWYgKG1TbW1G ZWF0dXJlQ29udHJvbFN1cHBvcnRlZCAmJiAoUmVnTmFtZSA9PQ0KPiA+IFNtbVJlZ0ZlYXR1cmVD b250cm9sKSkgew0KPiA+ID4gKyAgaWYgKFNtbUNwdUZlYXR1cmVzSXNTbW1SZWdpc3RlclN1cHBv cnRlZCAoQ3B1SW5kZXgsIFJlZ05hbWUpKSB7DQo+ID4gPiAgICAgIHJldHVybiBBc21SZWFkTXNy NjQNCj4gKFNNTV9GRUFUVVJFU19MSUJfU01NX0ZFQVRVUkVfQ09OVFJPTCk7DQo+ID4gPiAgICB9 DQo+ID4gPg0KPiA+ID4gICAgcmV0dXJuIDA7DQo+ID4gPiAgfQ0KPiA+ID4gQEAgLTUxMCwxMSAr NTQ0LDExIEBAIFNtbUNwdUZlYXR1cmVzU2V0U21tUmVnaXN0ZXIgKA0KPiA+ID4gICAgSU4gVUlO VE4gICAgICAgICBDcHVJbmRleCwNCj4gPiA+ICAgIElOIFNNTV9SRUdfTkFNRSAgUmVnTmFtZSwN Cj4gPiA+ICAgIElOIFVJTlQ2NCAgICAgICAgVmFsdWUNCj4gPiA+ICAgICkNCj4gPiA+ICB7DQo+ ID4gPiAtICBpZiAobVNtbUZlYXR1cmVDb250cm9sU3VwcG9ydGVkICYmIChSZWdOYW1lID09DQo+ ID4gU21tUmVnRmVhdHVyZUNvbnRyb2wpKSB7DQo+ID4gPiArICBpZiAoU21tQ3B1RmVhdHVyZXNJ c1NtbVJlZ2lzdGVyU3VwcG9ydGVkIChDcHVJbmRleCwgUmVnTmFtZSkpIHsNCj4gPiA+ICAgICAg QXNtV3JpdGVNc3I2NCAoU01NX0ZFQVRVUkVTX0xJQl9TTU1fRkVBVFVSRV9DT05UUk9MLA0KPiBW YWx1ZSk7DQo+ID4gPiAgICB9DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+ICAvKioNCj4gPiA+IC0t DQo+ID4gPiAyLjE2LjIud2luZG93cy4xDQo+ID4gPg0KPiA+ID4NCj4gPiA+DQo+ID4gPiANCj4g PiA+DQoNCg==