From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (NAM10-BN7-obe.outbound.protection.outlook.com [40.107.92.58]) by mx.groups.io with SMTP id smtpd.web11.55602.1681952374750252912 for ; Wed, 19 Apr 2023 17:59:35 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@amd.com header.s=selector1 header.b=nCTfK9mH; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: amd.com, ip: 40.107.92.58, mailfrom: abner.chang@amd.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nzEGXyMldXji3YxV8aLMZzr6MYSExPgY6R4jJBkfH3u3md7JvMmUgQlNiHebErvQvtiYOfjFXcNexi4HDX0lD52IjEgseWJ0vu7Tt7tGWUOV+ZQOirWB5s3ROvQmQWj04L0ljVckI3jkKCkJ35DWZ950Uj+Ui9kjdFXkF8Oq0MWgy5a191oQw7cv4gShNmNVXHFl3WKaPxKC3aQVoWNVVQQIFJrHQOPLiJpvg0xFv8b19Ybpa4kY1Xrb+1AE+nJThsynBYXhfUw4MlyPLtwp2knDXyUbsPYJGFRqYZMRd8gWm12qwKGlGVPX7iG5P7eQaghypeDYh3N0tHQdB7PjTQ== 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=Aer6mZT2Z/a59WQ9gfp4Euv8iSKmsvQgjLPaAqOi4oY=; b=maXlac7cOU2tYopocthTvpjDr6ACUu3dIYaSItWWdREbmQu3YGM4lH7lvOKmhk0uyrmI/0EVzzXdJoADjKjae+sFQ6FENzljPElZg5F84zj1nF1vViL25U2yH+r2QdWymlOkYVOioj6FvqVcOAmRIt6HEF5ZcDSJocrcv+zVG+1d73vuGTeI9+IKebi7pYqTx+Z+MJDuqPRWWmgCupIdm3a7yO1KNMVfSNV6mIOJJk3jcFJ+agjsSweGWaE7prYQBu4O0GaU/dcryuPImcVJ6QeoIjID0ZXX7LUc9Mj5kyrQ13knMwg8bIWitKltWKKkq2pzlejkrwcN9FdqoJzvwA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Aer6mZT2Z/a59WQ9gfp4Euv8iSKmsvQgjLPaAqOi4oY=; b=nCTfK9mHcCkARN/61ydkNbmGLEWbspn2xCsn9ObzKKEJNg77OL26GKbaOXtpAsV7opTtsxzXIbg/5On7bGyz/0D5bZPFEAXaCX98BrIfcrgvrPvqMC4A+zD2Alf5RXRcagvvuAn2DODCAYy5+b3ez1evxZ9A3X/xY2uQqBVF1pU= Received: from MN2PR12MB3966.namprd12.prod.outlook.com (2603:10b6:208:165::18) by DM6PR12MB4401.namprd12.prod.outlook.com (2603:10b6:5:2a9::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.22; Thu, 20 Apr 2023 00:59:31 +0000 Received: from MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::46f1:bdce:a4bc:29e3]) by MN2PR12MB3966.namprd12.prod.outlook.com ([fe80::46f1:bdce:a4bc:29e3%3]) with mapi id 15.20.6319.020; Thu, 20 Apr 2023 00:59:31 +0000 From: "Chang, Abner" To: Igor Kulchytskyy , "devel@edk2.groups.io" CC: Nickle Wang Subject: Re: [PATCH] RedfishPkg: Remove the global variables related to Discover Token functionality Thread-Topic: [PATCH] RedfishPkg: Remove the global variables related to Discover Token functionality Thread-Index: AQHZctAydhY3Kcy4cUiFhJsstK/5NK8zVjUg Date: Thu, 20 Apr 2023 00:59:31 +0000 Message-ID: References: <20230419150328.1097-1-igork@ami.com> In-Reply-To: <20230419150328.1097-1-igork@ami.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2023-04-20T00:59:29Z; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=68c789bf-7049-477d-8401-2087dcd7fc17; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN2PR12MB3966:EE_|DM6PR12MB4401:EE_ x-ms-office365-filtering-correlation-id: 2397060a-4091-43ee-5220-08db413a7ff8 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 5LnyjHgyXHDCb853X0jJI+FuzAnomYHZG95QbMan16b78KXYHvAcHrabsdpPHnrViBmcowD3ahXMKxApVLU4CDhT+c7WUeK8krhyuLx0syVfCyKPPcxqQclvJ7IhOssc8SS/B/ql0HUEkNyPhauR3svsSpvKiipfOdaRFOLI6iYB0cjRb8Vx5lg7pkEVh2oP3nFFD/xikwEBUws9smW3WUqTUnIebIP18MEzNHC6H/m0vvSUBEFQa+PZnj/H+wkQmTB5dBICFKEbH+eSw8l/+akTj+ZPelXxWt4Um7XUERVkYr5hgwsjBnI1OK8UbLgvAEm0PHD1Fud3LvX6eZ06djxT9j125jbxkNK1KgdA0br+XDIa31EnDw6LhutzoU29ec+NHc9xLmJVG53HMClCz6Ta/ykSfclsagbh8o6zs/n+dfDbO3BhoY1pTDYPpdsXPWFP+uYiFWUPzpJB1UXNLmuVhzzgRdRtpA6YnIPz+qYUrM3SMU5EG9fUJsP4epu/drJRLn/Ev93nf9cDnsRL1VbjzbSm/ED8RQXdvZsgQ7hO9RKC0zJ8tnR6mf6ivL7ZxtaVZ8owThryYvnLz6xWlNrGBQ+zQ70kSe+sNrtzi76Iuv7ZramA6ida1NdCJpol x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR12MB3966.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(396003)(376002)(136003)(346002)(366004)(39860400002)(451199021)(110136005)(83380400001)(478600001)(7696005)(55016003)(6506007)(9686003)(26005)(966005)(71200400001)(76116006)(66476007)(66556008)(4326008)(64756008)(66446008)(41300700001)(122000001)(66946007)(53546011)(316002)(186003)(52536014)(5660300002)(38070700005)(38100700002)(8676002)(2906002)(8936002)(30864003)(33656002)(40140700001)(86362001)(579004)(559001)(44824005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YkpLV0szc3VsRUZqRFhldGlyMS9iYmJlNkJqMjI1aVd0Z29zYW1NTUZZS0l5?= =?utf-8?B?YU9JUnU0V0gzRXNmSVBQR1p3N1h4Z3daZDVpeVh0RXNoV0l3QzF3UXlrVDd4?= =?utf-8?B?WmQ3Rkk1RmNLOXJDWmpWQ1RWZGt5ZWg0c1puNDlva3pYVjZ6R1c0Qks0c3cz?= =?utf-8?B?aGlEanZvSTE1WUxJd0dsOGZ4ejhtZUR2T2Q5MS9xL3ZManlnOHZPMzlBblhy?= =?utf-8?B?cDljUDVqUWEveUdXbENOTnA4L2pOMy9ZejZZc3VIMHhTS3VWUVcvazBkZ20y?= =?utf-8?B?Ny9GOHJzSzQrUUJRblRRWmszc1BYcXJEUHh6UnJHS0UwVEVjVklwdjVGdlRt?= =?utf-8?B?N25IZVFSWWQyZy9DSWNDR1pSTjZZOUFnb2dpL1pBMkxiV21yRmdkTnBOR2JF?= =?utf-8?B?bUVvMHhUT1ppR2E2OGs2Nk5BWmZTYk54Wk1KV21ScVJBWFFzTmxBaHkzb2xE?= =?utf-8?B?VDdQQWxDWm5nenRjOVNXL2xZMmdIaVBjSERIZUhqSTgyaFRSTVNjRXBVeTRE?= =?utf-8?B?a2drSnhGS2FQZ0dLWEdXVnFsTUsxL01kNVlWN2dNSkFVcklFbjRSbG85WDdy?= =?utf-8?B?aGtYQW50Sm9pWlg5cTdlTnZuclVjY2h6d21GMGprOFBDdmEwbEdxUG9rUGF3?= =?utf-8?B?bi9mMXczaHI0VGVDRllsMkV2bm1JdWdrL2dlYUx5S0RBUzBpNHBTd0dRb2tw?= =?utf-8?B?S1VYNWlXbXNuZXJMc1ZoS1czQWJLaGpoZnJtV29SS3RWSjFYV093VWFLRHV6?= =?utf-8?B?T3J3aUJENE5TUStwaHdIa0ZKR0ZVUitmV1QwSTgvT0NlTHltYjhyNDZ6Wk0z?= =?utf-8?B?anJNWmV6Vnd4QU01VGl0Wno1VGxtclgxUnBHZlpIcWRjcElZVVhIWm0rRDJm?= =?utf-8?B?N1pGWUcyUHNtcmtJODNzYk9kMW12WEd0d0xJZkRHNmtXajNMMENzUkU5UlhU?= =?utf-8?B?QmhrZjhPdWpxRjdIeEh3d1FCNFZ4aTkvY2tna25BQXRhMzFzbVNRSENuMzh6?= =?utf-8?B?b0hSaDY3dEFidzJ4elZZNFhGVHhRTUowTFRsNHhUZlc2VnF1UHVlRlB5TFdz?= =?utf-8?B?VW1EQUYvZ0FwMUpmY2xrTE9TUHlLc1ZsVmxUc3JjbVM5QTZOUVdUcXZCM0Vt?= =?utf-8?B?aGRKcm1WMG1EeFMvdHpCNCtsdFYxUU9iQUJOcXVhMkxHcUs3T00rOThCbUdZ?= =?utf-8?B?VWNra09CN2VoWnNaM2dia2ptaFRxY3hpbnRlSjNCLzQrbUQyaVhTOEtUWlRY?= =?utf-8?B?djgrZHBnNXZHZXU4ZDlTSXVMeUR2RHkzWkNYNnJXQVh1UGtGK2diNlBOcEFa?= =?utf-8?B?MWxwekd4RHFMLzd4NFV2NmIwcHpTdVM2ZysyeTQ3S0QrOUxVZXNBYmZCUjM1?= =?utf-8?B?Zzk1TnlpYzlaaWdaRnljaGtpcC9ZbFYyblNXOG80THo4ck9SMDd4WnN6NCtG?= =?utf-8?B?VEhxbWJVeUQrb0RUQkNSSDl5Mkw5MDZzNG9MVUZzSWlaNUNSdzNxVVdTS0R3?= =?utf-8?B?ZSszcUxrNW1OTVpxUEprR1Y5bzIvQjNjQlF2ZGphOHh0U3ZyNytYZENxeUhi?= =?utf-8?B?YThhdERja0U2YXFlS2RtaXpabVJWc2t3ZkJnUStheHNVL2YzSzRMQ0xwMFo0?= =?utf-8?B?MWR2bWx5dWRzTmtSK0pucjlGRnFrR3BVcG9Db2dIeG0vZ3Y3UkhEMCtsOVoy?= =?utf-8?B?RXZRYnkzSEgvQi9ZK3lGQTFaVnNzdHc5R284UjFsbDdnZkNhRldaVk1jME1J?= =?utf-8?B?RGdxU2JwTkF6aUUzaXV0b2VnVkFSZXp5TDR4TjV4OFFUN2xhWEhNMnB4eHBB?= =?utf-8?B?aUtTbGhIc2JRd3pyWXlGekpiSHNnVFNXMFdITldJaTN2T1FpcXYzSUdaV2Vp?= =?utf-8?B?SmdhNnEyZDlPTjFMYS9pT1BJMlJvQmQzYTFRU1h6dlp4TmdhcERETVZ2N3ZO?= =?utf-8?B?aXkrb05hL1RURnBQTm0xV0J6TkUxY3E4QURodVdYTHpQTnIwUjJLd2dZZ1Vt?= =?utf-8?B?dnFCNktjb01KNmV6M083TjJxandYRFl3cGxzR0NvUks2Tll1L3h6MzRKazRC?= =?utf-8?B?U1QwMHZlc3FZc0s2RjVnQkRGK2w0VFVRRjdIdmMvRk5rV2g3Y3gzc2NvKzEr?= =?utf-8?Q?uJcY=3D?= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3966.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2397060a-4091-43ee-5220-08db413a7ff8 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Apr 2023 00:59:31.3371 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: mJP6bXBWljOY9cyTaJsU8++yngr/JXiuALiVMJFhRvjLru0Pe7gviB75gnXT4wIx9wq6xFP9+nAW7szU8EMZYA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4401 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 W0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEdlbmVyYWxdDQoNCkhpIElnb3IsDQpJIGhhdmUgbm8g cHJvYmxlbSB3aXRoIHRoaXMgY2hhbmdlLCBob3dldmVyIHNvbWUgdXBzdHJlYW0gcHJhY3RpY2Vz IGhlcmUsDQoNCi0gUGxlYXNlIHNob3J0ZW4gdGhlIHN1YmplY3QgdG8gPD0gNzYNCi0gRWFjaCBs aW5lIGluIHRoZSBjb21taXQgbWVzc2FnZSBzaG91bGQgYmUgPD03Ng0KWW91IGNhbiBydW4gUGF0 Y2hjaGVjay5weSAoaGVyZTogQmFzZVRvb2xzXFNjcmlwdHMpIGJlZm9yZSB5b3Ugc2VuZGluZyBv dXQgdGhlIHBhdGNoZXMuDQoNClBsZWFzZSBydW4gVW5jcnVzdGl5Q2hlY2sgZm9yIGVhY2ggc291 cmNlIGNvZGUgeW91IG1vZGlmaWVkLCAuIHB5dG9vbC9QbHVnaW4vVW5jcnVzdGlmeUNoZWNrLyBh bmQgdXNlZCBmb3IgYmVhdXRpZnlpbmcgdGhlIHNvdXJjZSBjb2RlLg0KWW91IGNhbiBnZXQgdGhl IGJpbmFyeSBmcm9tIGhlcmU6IGh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3VuY3J1 c3RpZnkvZmlsZXMuDQoNClBsZWFzZSByZXNlbmQgdGhlIHBhdGNoIHdpdGggYWJvdmUgaXNzdWUg Zml4ZWQuDQoNCkJUVywgdGhlIHBhdGNoIHlvdSBzZW50IHRvIGdyb3VwLmlvIHN0aWxsIGhhcyBh IHByb2JsZW0uIFRoZSB3aGl0ZSBzcGFjZSBvZiBlYWNoIGJsYW5rIGxpbmUgaW4gdGhlIHBhdGNo IGZpbGUgd2VyZSBnb25lICh5b3UgY2FuIHRha2UgYSBsb29rIGF0IHlvdXIgbWVzc2FnZSBzZW50 IHRvIGdyb3VwLmlvKS4gVGhpcyBsZWFkcyB0byBhIGZhaWx1cmUgb2YgcGF0Y2ggYXBwbHkuIEkg cmVjb3ZlciB0aG9zZSB3aGl0ZSBzcGFjZSBpbiB0aGUgYmxhbmsgbGluZXMgYW5kIHRoZSBwYXRj aCBjYW4gYmUgYXBwbGllZC4gSG93ZXZlciwgSSBjYW4gZG8gdGhpcyBqdXN0IGZvciBhIHNob3J0 IHBhdGNoLiDwn5iKIFBsZWFzZSBmaWd1cmUgaXQgb3V0IGF0IHlvdXIgZW5kLiAgVGhhdCdzIGZp bmUgaWYgdGhpcyBwcm9ibGVtIHN0aWxsIGV4aXN0IG9uIHlvdXIgcmVzZW50IHBhdGNoIGluIGNh c2UgeW91IG5lZWQgc29tZSB0aW1lIHRvIGZpZ3VyZSBvdXQgdGhlIGVtYWlsIHByb2JsZW0uDQoN ClRoYW5rcw0KQWJuZXINCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBJ Z29yIEt1bGNoeXRza3l5IDxpZ29ya0BhbWkuY29tPg0KPiBTZW50OiBXZWRuZXNkYXksIEFwcmls IDE5LCAyMDIzIDExOjA0IFBNDQo+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzogQ2hh bmcsIEFibmVyIDxBYm5lci5DaGFuZ0BhbWQuY29tPjsgTmlja2xlIFdhbmcNCj4gPG5pY2tsZXdA bnZpZGlhLmNvbT4NCj4gU3ViamVjdDogW1BBVENIXSBSZWRmaXNoUGtnOiBSZW1vdmUgdGhlIGds b2JhbCB2YXJpYWJsZXMgcmVsYXRlZCB0bw0KPiBEaXNjb3ZlciBUb2tlbiBmdW5jdGlvbmFsaXR5 DQo+IA0KPiBDYXV0aW9uOiBUaGlzIG1lc3NhZ2Ugb3JpZ2luYXRlZCBmcm9tIGFuIEV4dGVybmFs IFNvdXJjZS4gVXNlIHByb3Blcg0KPiBjYXV0aW9uIHdoZW4gb3BlbmluZyBhdHRhY2htZW50cywg Y2xpY2tpbmcgbGlua3MsIG9yIHJlc3BvbmRpbmcuDQo+IA0KPiANCj4gZ1JlZGZpc2hEaXNjb3Zl cmVkVG9rZW4gbWF5IGJlIGFsbG9jYXRlZCBzZXZlcmFsIHRpbWVzLCBpZiBtdWx0aXBsZSBOSUMN Cj4gaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0uDQo+IFRvIGF2b2lkIHRoaXMgaXNzdWUgRGlzY292 ZXIgVG9rZW4gcmVsYXRlZCBnbG9iYWwgdmFyaWFibGVzIHJlcGxhY2VkIHdpdGggdGhlDQo+IGxv Y2FsIHZhcmlhYmxlcy4NCj4gDQo+IENjOiBBYm5lciBDaGFuZyA8YWJuZXIuY2hhbmdAYW1kLmNv bT4NCj4gQ2M6IE5pY2tsZSBXYW5nIDxuaWNrbGV3QG52aWRpYS5jb20+DQo+IFNpZ25lZC1vZmYt Ynk6IElnb3IgS3VsY2h5dHNreXkgPGlnb3JrQGFtaS5jb20+DQo+IC0tLQ0KPiAgUmVkZmlzaFBr Zy9SZWRmaXNoQ29uZmlnSGFuZGxlci9SZWRmaXNoQ29uZmlnSGFuZGxlckRyaXZlci5jIHwgMTM5 DQo+ICsrKysrKysrLS0tLS0tLS0tLS0tDQo+ICBSZWRmaXNoUGtnL1JlZGZpc2hEaXNjb3ZlckR4 ZS9SZWRmaXNoRGlzY292ZXJEeGUuYyAgICAgICAgICAgfCAgODcgKysrKysrKystDQo+IC0tLQ0K PiAgUmVkZmlzaFBrZy9SZWRmaXNoRGlzY292ZXJEeGUvUmVkZmlzaERpc2NvdmVySW50ZXJuYWwu aCAgICAgIHwgIDI4ICsrKy0NCj4gIDMgZmlsZXMgY2hhbmdlZCwgMTQwIGluc2VydGlvbnMoKyks IDExNCBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL1JlZGZpc2hD b25maWdIYW5kbGVyL1JlZGZpc2hDb25maWdIYW5kbGVyRHJpdmVyLmMNCj4gYi9SZWRmaXNoUGtn L1JlZGZpc2hDb25maWdIYW5kbGVyL1JlZGZpc2hDb25maWdIYW5kbGVyRHJpdmVyLmMNCj4gaW5k ZXggOTkzYWQzMy4uOGY4NTQ5MSAxMDA2NDQNCj4gLS0tIGEvUmVkZmlzaFBrZy9SZWRmaXNoQ29u ZmlnSGFuZGxlci9SZWRmaXNoQ29uZmlnSGFuZGxlckRyaXZlci5jDQo+ICsrKyBiL1JlZGZpc2hQ a2cvUmVkZmlzaENvbmZpZ0hhbmRsZXIvUmVkZmlzaENvbmZpZ0hhbmRsZXJEcml2ZXIuYw0KPiBA QCAtMjIsMTIgKzIyLDYgQEAgRUZJX0hBTkRMRQ0KPiBnRWZpUmVkZmlzaERpc2NvdmVyQ29udHJv bGxlckhhbmRsZSA9IE5VTEw7DQo+ICBFRklfUkVERklTSF9ESVNDT1ZFUl9QUk9UT0NPTCAgKmdF ZmlSZWRmaXNoRGlzY292ZXJQcm90b2NvbCAgICAgICAgPQ0KPiBOVUxMOw0KPiAgQk9PTEVBTiAg ICAgICAgICAgICAgICAgICAgICAgIGdSZWRmaXNoRGlzY292ZXJBY3RpdmF0ZWQgICAgICAgICAg ID0gRkFMU0U7DQo+ICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgZ1JlZGZpc2hTZXJ2 aWNlRGlzY292ZXJlZCAgICAgICAgICAgPSBGQUxTRTsNCj4gLS8vDQo+IC0vLyBOZXR3b3JrIGlu dGVyZmFjZXMgZGlzY292ZXJlZCBieSBFRkkgUmVkZmlzaCBEaXNjb3ZlciBQcm90b2NvbC4NCj4g LS8vDQo+IC1VSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ051bWJlck9m TmV0d29ya0ludGVyZmFjZXM7DQo+IC1FRklfUkVERklTSF9ESVNDT1ZFUl9ORVRXT1JLX0lOVEVS RkFDRQ0KPiAqZ05ldHdvcmtJbnRlcmZhY2VJbnN0YW5jZXMgPSBOVUxMOw0KPiAtRUZJX1JFREZJ U0hfRElTQ09WRVJFRF9UT0tFTiAgICAgICAgICAgICpnUmVkZmlzaERpc2NvdmVyZWRUb2tlbiAg ICA9DQo+IE5VTEw7DQo+IA0KPiAgLy8vDQo+ICAvLy8gRHJpdmVyIEJpbmRpbmcgUHJvdG9jb2wg aW5zdGFuY2UNCj4gQEAgLTU4LDEzICs1Miw2IEBAIFJlZGZpc2hDb25maWdTdG9wUmVkZmlzaERp c2NvdmVyeSAoDQo+ICAgICAgICBnQlMtPkNsb3NlRXZlbnQgKGdFZmlSZWRmaXNoRGlzY292ZXJQ cm90b2NvbEV2ZW50KTsNCj4gICAgICB9DQo+IA0KPiAtICAgIC8vDQo+IC0gICAgLy8gU3RvcCBS ZWRmaXNoIHNlcnZpY2UgZGlzY292ZXJ5Lg0KPiAtICAgIC8vDQo+IC0gICAgZ0VmaVJlZGZpc2hE aXNjb3ZlclByb3RvY29sLT5BYm9ydEFjcXVpcmVSZWRmaXNoU2VydmljZSAoDQo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdFZmlSZWRmaXNoRGlzY292ZXJQcm90b2NvbCwN Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ05ldHdvcmtJbnRlcmZhY2VJ bnN0YW5jZXMNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gICAg ICBnRWZpUmVkZmlzaERpc2NvdmVyQ29udHJvbGxlckhhbmRsZSA9IE5VTEw7DQo+ICAgICAgZ0Vm aVJlZGZpc2hEaXNjb3ZlclByb3RvY29sICAgICAgICAgPSBOVUxMOw0KPiAgICAgIGdSZWRmaXNo RGlzY292ZXJBY3RpdmF0ZWQgICAgICAgICAgID0gRkFMU0U7DQo+IEBAIC0zMTgsMzYgKzMwNSwz OSBAQCBSZWRmaXNoU2VydmljZURpc2NvdmVyZWRDYWxsYmFjayAoDQo+ICAgIEVGSV9SRURGSVNI X0RJU0NPVkVSRURfVE9LRU4gICAgICpSZWRmaXNoRGlzY292ZXJlZFRva2VuOw0KPiAgICBFRklf UkVERklTSF9ESVNDT1ZFUkVEX0lOU1RBTkNFICAqUmVkZmlzaEluc3RhbmNlOw0KPiANCj4gLSAg aWYgKGdSZWRmaXNoU2VydmljZURpc2NvdmVyZWQpIHsNCj4gLSAgICAvLw0KPiAtICAgIC8vIE9u bHkgc3VwcG9ydCBvbmUgUmVkZmlzaCBzZXJ2aWNlIG9uIHBsYXRmb3JtLg0KPiAtICAgIC8vDQo+ IC0gICAgcmV0dXJuOw0KPiAtICB9DQo+IC0NCj4gICAgUmVkZmlzaERpc2NvdmVyZWRUb2tlbiA9 IChFRklfUkVERklTSF9ESVNDT1ZFUkVEX1RPS0VOICopQ29udGV4dDsNCj4gLSAgUmVkZmlzaElu c3RhbmNlICAgICAgICA9IFJlZGZpc2hEaXNjb3ZlcmVkVG9rZW4tDQo+ID5EaXNjb3Zlckxpc3Qu UmVkZmlzaEluc3RhbmNlczsNCj4gKyAgZ0JTLT5DbG9zZUV2ZW50IChSZWRmaXNoRGlzY292ZXJl ZFRva2VuLT5FdmVudCk7DQo+ICsNCj4gICAgLy8NCj4gLSAgLy8gT25seSBwaWNrIHVwIHRoZSBm aXJzdCBmb3VuZCBSZWRmaXNoIHNlcnZpY2UuDQo+ICsgIC8vIE9ubHkgc3VwcG9ydCBvbmUgUmVk ZmlzaCBzZXJ2aWNlIG9uIHBsYXRmb3JtLg0KPiAgICAvLw0KPiAtICBpZiAoUmVkZmlzaEluc3Rh bmNlLT5TdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCj4gLSAgICBnUmVkZmlzaENvbmZpZ0RhdGEu UmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZpc2hTZXJ2aWNlUmVzdEV4SGFuZGxlID0NCj4gUmVkZmlz aEluc3RhbmNlLT5JbmZvcm1hdGlvbi5SZWRmaXNoUmVzdEV4SGFuZGxlOw0KPiAtICAgIGdSZWRm aXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VWZXJzaW9uICAg ICAgPQ0KPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLlJlZGZpc2hWZXJzaW9uOw0KPiAt ICAgIGdSZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VM b2NhdGlvbiAgICAgPQ0KPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLkxvY2F0aW9uOw0K PiAtICAgIGdSZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZp Y2VVdWlkICAgICAgICAgPQ0KPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLlV1aWQ7DQo+ IC0gICAgZ1JlZGZpc2hDb25maWdEYXRhLlJlZGZpc2hTZXJ2aWNlSW5mby5SZWRmaXNoU2Vydmlj ZU9zICAgICAgICAgICA9DQo+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uT3M7DQo+IC0g ICAgZ1JlZGZpc2hDb25maWdEYXRhLlJlZGZpc2hTZXJ2aWNlSW5mby5SZWRmaXNoU2VydmljZU9z VmVyc2lvbiAgICA9DQo+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uT3NWZXJzaW9uOw0K PiAtICAgIGdSZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZp Y2VQcm9kdWN0ICAgICAgPQ0KPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLlByb2R1Y3Q7 DQo+IC0gICAgZ1JlZGZpc2hDb25maWdEYXRhLlJlZGZpc2hTZXJ2aWNlSW5mby5SZWRmaXNoU2Vy dmljZVByb2R1Y3RWZXIgICA9DQo+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uUHJvZHVj dFZlcjsNCj4gLSAgICBnUmVkZmlzaENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZp c2hTZXJ2aWNlVXNlSHR0cHMgICAgID0NCj4gUmVkZmlzaEluc3RhbmNlLT5JbmZvcm1hdGlvbi5V c2VIdHRwczsNCj4gLSAgICBnUmVkZmlzaFNlcnZpY2VEaXNjb3ZlcmVkICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgID0gVFJVRTsNCj4gKyAgaWYgKCFnUmVkZmlzaFNlcnZp Y2VEaXNjb3ZlcmVkKSB7DQo+ICsgICAgUmVkZmlzaEluc3RhbmNlICAgICAgICA9IFJlZGZpc2hE aXNjb3ZlcmVkVG9rZW4tDQo+ID5EaXNjb3Zlckxpc3QuUmVkZmlzaEluc3RhbmNlczsNCj4gKyAg ICAvLw0KPiArICAgIC8vIE9ubHkgcGljayB1cCB0aGUgZmlyc3QgZm91bmQgUmVkZmlzaCBzZXJ2 aWNlLg0KPiArICAgIC8vDQo+ICsgICAgaWYgKFJlZGZpc2hJbnN0YW5jZS0+U3RhdHVzID09IEVG SV9TVUNDRVNTKSB7DQo+ICsgICAgICBnUmVkZmlzaENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJ bmZvLlJlZGZpc2hTZXJ2aWNlUmVzdEV4SGFuZGxlID0NCj4gUmVkZmlzaEluc3RhbmNlLT5JbmZv cm1hdGlvbi5SZWRmaXNoUmVzdEV4SGFuZGxlOw0KPiArICAgICAgZ1JlZGZpc2hDb25maWdEYXRh LlJlZGZpc2hTZXJ2aWNlSW5mby5SZWRmaXNoU2VydmljZVZlcnNpb24gICAgICA9DQo+IFJlZGZp c2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uUmVkZmlzaFZlcnNpb247DQo+ICsgICAgICBnUmVkZmlz aENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZpc2hTZXJ2aWNlTG9jYXRpb24gICAg ID0NCj4gUmVkZmlzaEluc3RhbmNlLT5JbmZvcm1hdGlvbi5Mb2NhdGlvbjsNCj4gKyAgICAgIGdS ZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VVdWlkICAg ICAgICAgPQ0KPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLlV1aWQ7DQo+ICsgICAgICBn UmVkZmlzaENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZpc2hTZXJ2aWNlT3MgICAg ICAgICAgID0NCj4gUmVkZmlzaEluc3RhbmNlLT5JbmZvcm1hdGlvbi5PczsNCj4gKyAgICAgIGdS ZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VPc1ZlcnNp b24gICAgPQ0KPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLk9zVmVyc2lvbjsNCj4gKyAg ICAgIGdSZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VQ cm9kdWN0ICAgICAgPQ0KPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLlByb2R1Y3Q7DQo+ ICsgICAgICBnUmVkZmlzaENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZpc2hTZXJ2 aWNlUHJvZHVjdFZlciAgID0NCj4gUmVkZmlzaEluc3RhbmNlLT5JbmZvcm1hdGlvbi5Qcm9kdWN0 VmVyOw0KPiArICAgICAgZ1JlZGZpc2hDb25maWdEYXRhLlJlZGZpc2hTZXJ2aWNlSW5mby5SZWRm aXNoU2VydmljZVVzZUh0dHBzICAgICA9DQo+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24u VXNlSHR0cHM7DQo+ICsgICAgICBnUmVkZmlzaFNlcnZpY2VEaXNjb3ZlcmVkICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gVFJVRTsNCj4gKyAgICB9DQo+ICsNCj4gKyAg ICAvLw0KPiArICAgIC8vIEludm9rZSBSZWRmaXNoQ29uZmlnSGFuZGxlckluc3RhbGxlZENhbGxi YWNrIHRvIGV4ZWN1dGUNCj4gKyAgICAvLyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgUmVkZmlzaCBD b25maWd1cmUgSGFuZGxlciBpbnN0YW5jZS4NCj4gKyAgICAvLw0KPiArICAgIFJlZGZpc2hDb25m aWdIYW5kbGVySW5zdGFsbGVkQ2FsbGJhY2sgKGdSZWRmaXNoQ29uZmlnRGF0YS5FdmVudCwNCj4g KyAmZ1JlZGZpc2hDb25maWdEYXRhKTsNCj4gICAgfQ0KPiANCj4gLSAgLy8NCj4gLSAgLy8gSW52 b2tlIFJlZGZpc2hDb25maWdIYW5kbGVySW5zdGFsbGVkQ2FsbGJhY2sgdG8gZXhlY3V0ZQ0KPiAt ICAvLyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgUmVkZmlzaCBDb25maWd1cmUgSGFuZGxlciBpbnN0 YW5jZS4NCj4gLSAgLy8NCj4gLSAgUmVkZmlzaENvbmZpZ0hhbmRsZXJJbnN0YWxsZWRDYWxsYmFj ayAoZ1JlZGZpc2hDb25maWdEYXRhLkV2ZW50LA0KPiAmZ1JlZGZpc2hDb25maWdEYXRhKTsNCj4g KyAgRnJlZVBvb2woUmVkZmlzaERpc2NvdmVyZWRUb2tlbik7DQo+ICsNCj4gIH0NCj4gDQo+ICAv KioNCj4gQEAgLTM3MSw2ICszNjEsNyBAQCBSZWRmaXNoRGlzY292ZXJQcm90b2NvbEluc3RhbGxl ZCAoDQo+ICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXR3b3Jr SW50ZXJmYWNlSW5kZXg7DQo+ICAgIEVGSV9SRURGSVNIX0RJU0NPVkVSX05FVFdPUktfSU5URVJG QUNFICAqVGhpc05ldHdvcmtJbnRlcmZhY2U7DQo+ICAgIEVGSV9SRURGSVNIX0RJU0NPVkVSRURf VE9LRU4gICAgICAgICAgICAqVGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW47DQo+ICsgIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXJPZk5ldHdvcmtJbnRlcmZh Y2VzOw0KPiANCj4gICAgREVCVUcgKChERUJVR19JTkZPLCAiJWE6IE5ldyBuZXR3b3JrIGludGVy ZmFjZSBpcyBpbnN0YWxsZWQgb24gc3lzdGVtDQo+IGJ5IEVGSSBSZWRmaXNoIGRpc2NvdmVyIGRy aXZlci5cbiIsIF9fZnVuY19fKSk7DQo+IA0KPiBAQCAtNDA4LDM2ICszOTksMzEgQEAgUmVkZmlz aERpc2NvdmVyUHJvdG9jb2xJbnN0YWxsZWQgKA0KPiAgICAgIH0NCj4gICAgfQ0KPiANCj4gLSAg Ly8NCj4gLSAgLy8gQ2hlY2sgdGhlIG5ldyBmb3VuZCBuZXR3b3JrIGludGVyZmFjZS4NCj4gLSAg Ly8NCj4gLSAgaWYgKGdOZXR3b3JrSW50ZXJmYWNlSW5zdGFuY2VzICE9IE5VTEwpIHsNCj4gLSAg ICBGcmVlUG9vbCAoZ05ldHdvcmtJbnRlcmZhY2VJbnN0YW5jZXMpOw0KPiAtICB9DQo+IA0KPiAg ICBTdGF0dXMgPSBnRWZpUmVkZmlzaERpc2NvdmVyUHJvdG9jb2wtPkdldE5ldHdvcmtJbnRlcmZh Y2VMaXN0ICgNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdF ZmlSZWRmaXNoRGlzY292ZXJQcm90b2NvbCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdSZWRmaXNoQ29uZmlnRGF0YS5JbWFnZSwNCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZnTnVtYmVyT2ZOZXR3b3JrSW50ZXJmYWNl cywNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZnTmV0d29y a0ludGVyZmFjZUluc3RhbmNlcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJk51bWJlck9mTmV0d29ya0ludGVyZmFjZXMsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmVGhpc05ldHdvcmtJbnRlcmZhY2UNCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+IC0gIGlmIChFRklfRVJS T1IgKFN0YXR1cykgfHwgKGdOdW1iZXJPZk5ldHdvcmtJbnRlcmZhY2VzID09IDApKSB7DQo+ICsg IGlmIChFRklfRVJST1IgKFN0YXR1cykgfHwgKE51bWJlck9mTmV0d29ya0ludGVyZmFjZXMgPT0g MCkpIHsNCj4gICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IE5vIG5ldHdvcmsgaW50ZXJm YWNlcyBmb3VuZCBvbiB0aGUNCj4gaGFuZGxlLlxuIiwgX19mdW5jX18pKTsNCj4gICAgICByZXR1 cm47DQo+ICAgIH0NCj4gDQo+IC0gIGdSZWRmaXNoRGlzY292ZXJlZFRva2VuID0gQWxsb2NhdGVa ZXJvUG9vbA0KPiAoZ051bWJlck9mTmV0d29ya0ludGVyZmFjZXMgKiBzaXplb2YNCj4gKEVGSV9S RURGSVNIX0RJU0NPVkVSRURfVE9LRU4pKTsNCj4gLSAgaWYgKGdSZWRmaXNoRGlzY292ZXJlZFRv a2VuID09IE5VTEwpIHsNCj4gKyAgLy8NCj4gKyAgLy8gTG9vcCB0byBkaXNjb3ZlciBSZWRmaXNo IHNlcnZpY2Ugb24gZWFjaCBuZXR3b3JrIGludGVyZmFjZS4NCj4gKyAgLy8NCj4gKyAgZm9yIChO ZXR3b3JrSW50ZXJmYWNlSW5kZXggPSAwOyBOZXR3b3JrSW50ZXJmYWNlSW5kZXggPA0KPiArIE51 bWJlck9mTmV0d29ya0ludGVyZmFjZXM7IE5ldHdvcmtJbnRlcmZhY2VJbmRleCsrKSB7DQo+ICsN Cj4gKyAgICBUaGlzUmVkZmlzaERpc2NvdmVyZWRUb2tlbiA9IChFRklfUkVERklTSF9ESVNDT1ZF UkVEX1RPS0VODQo+ICopQWxsb2NhdGVaZXJvUG9vbChzaXplb2YgKEVGSV9SRURGSVNIX0RJU0NP VkVSRURfVE9LRU4pKTsNCj4gKyAgICBpZiAoVGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4gPT0g TlVMTCkgew0KPiAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogTm90IGVub3VnaCBtZW1v cnkgZm9yDQo+IEVGSV9SRURGSVNIX0RJU0NPVkVSRURfVE9LRU4uXG4iLCBfX2Z1bmNfXykpOw0K PiAgICAgIHJldHVybjsNCj4gICAgfQ0KPiANCj4gLSAgVGhpc05ldHdvcmtJbnRlcmZhY2UgICAg ICAgPSBnTmV0d29ya0ludGVyZmFjZUluc3RhbmNlczsNCj4gLSAgVGhpc1JlZGZpc2hEaXNjb3Zl cmVkVG9rZW4gPSBnUmVkZmlzaERpc2NvdmVyZWRUb2tlbjsNCj4gLSAgLy8NCj4gLSAgLy8gTG9v cCB0byBkaXNjb3ZlciBSZWRmaXNoIHNlcnZpY2Ugb24gZWFjaCBuZXR3b3JrIGludGVyZmFjZS4N Cj4gLSAgLy8NCj4gLSAgZm9yIChOZXR3b3JrSW50ZXJmYWNlSW5kZXggPSAwOyBOZXR3b3JrSW50 ZXJmYWNlSW5kZXggPA0KPiBnTnVtYmVyT2ZOZXR3b3JrSW50ZXJmYWNlczsgTmV0d29ya0ludGVy ZmFjZUluZGV4KyspIHsNCj4gKyAgICBUaGlzUmVkZmlzaERpc2NvdmVyZWRUb2tlbi0+U2lnbmF0 dXJlID0NCj4gKyBSRURGSVNIX0RJU0NPVkVSX1RPS0VOX1NJR05BVFVSRTsNCj4gKw0KPiAgICAg IC8vDQo+ICAgICAgLy8gSW5pdGlhbCB0aGlzIFJlZGZpc2ggRGlzY292ZXJlZCBUb2tlbg0KPiAg ICAgIC8vDQo+IEBAIC00NDksMTMgKzQzNSwxMSBAQCBSZWRmaXNoRGlzY292ZXJQcm90b2NvbElu c3RhbGxlZCAoDQo+ICAgICAgICAgICAgICAgICAgICAgICZUaGlzUmVkZmlzaERpc2NvdmVyZWRU b2tlbi0+RXZlbnQNCj4gICAgICAgICAgICAgICAgICAgICAgKTsNCj4gICAgICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQo+ICsgICAgICBGcmVlUG9vbChUaGlzUmVkZmlzaERpc2NvdmVyZWRU b2tlbik7DQo+ICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZhaWxlZCB0byBjcmVh dGUgZXZlbnQgZm9yIFJlZGZpc2gNCj4gZGlzY292ZXJlZCB0b2tlbi5cbiIsIF9fZnVuY19fKSk7 DQo+IC0gICAgICBnb3RvIEVycm9yUmV0dXJuOw0KPiArICAgICAgcmV0dXJuOw0KPiAgICAgIH0N Cj4gDQo+IC0gICAgVGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4tPlNpZ25hdHVyZSAgICAgICAg ICAgICAgICAgICAgICAgICA9DQo+IFJFREZJU0hfRElTQ09WRVJfVE9LRU5fU0lHTkFUVVJFOw0K PiAtICAgIFRoaXNSZWRmaXNoRGlzY292ZXJlZFRva2VuLT5EaXNjb3Zlckxpc3QuTnVtYmVyT2ZT ZXJ2aWNlRm91bmQgPSAwOw0KPiAtICAgIFRoaXNSZWRmaXNoRGlzY292ZXJlZFRva2VuLT5EaXNj b3Zlckxpc3QuUmVkZmlzaEluc3RhbmNlcyAgICAgPSBOVUxMOw0KPiAgICAgIC8vDQo+ICAgICAg Ly8gQWNxdWlyZSBmb3IgUmVkZmlzaCBzZXJ2aWNlIHdoaWNoIGlzIHJlcG9ydGVkIGJ5DQo+ICAg ICAgLy8gUmVkZmlzaCBIb3N0IEludGVyZmFjZS4NCj4gQEAgLTQ2NywyMSArNDUxLDIzIEBAIFJl ZGZpc2hEaXNjb3ZlclByb3RvY29sSW5zdGFsbGVkICgNCj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1JFREZJU0hfRElTQ09WRVJfSE9TVF9JTlRFUkZB Q0UsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXNS ZWRmaXNoRGlzY292ZXJlZFRva2VuDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICk7DQo+IC0gICAgVGhpc05ldHdvcmtJbnRlcmZhY2UrKzsNCj4gLSAgICBU aGlzUmVkZmlzaERpc2NvdmVyZWRUb2tlbisrOw0KPiAtICB9DQo+IA0KPiAtICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQo+IC0gICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBBY3F1aXJl IFJlZGZpc2ggc2VydmljZSBmYWlsLlxuIiwgX19mdW5jX18pKTsNCj4gLSAgICBnb3RvIEVycm9y UmV0dXJuOw0KPiArICAgIC8vDQo+ICsgICAgLy8gRnJlZSBSZWRmaXNoIERpc2NvdmVyZWQgVG9r ZW4gaWYgRGlzY292ZXIgSW5zdGFuY2Ugd2FzIG5vdCBjcmVhdGVkDQo+IGFuZA0KPiArICAgIC8v IFJlZGZpc2ggU2VydmljZSBEaXNjb3ZlcmVkIENhbGxiYWNrIGV2ZW50IHdhcyBub3QgdHJpZ2dl cmVkLg0KPiArICAgIC8vDQo+ICsgICAgaWYoVGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4tPkRp c2NvdmVyTGlzdC5OdW1iZXJPZlNlcnZpY2VGb3VuZCA9PQ0KPiAwIHx8DQo+ICsgICAgICAgIEVG SV9FUlJPUihUaGlzUmVkZmlzaERpc2NvdmVyZWRUb2tlbi0NCj4gPkRpc2NvdmVyTGlzdC5SZWRm aXNoSW5zdGFuY2VzLT5TdGF0dXMpKXsNCj4gKyAgICAgIGdCUy0+Q2xvc2VFdmVudCAoVGhpc1Jl ZGZpc2hEaXNjb3ZlcmVkVG9rZW4tPkV2ZW50KTsNCj4gKyAgICAgIERFQlVHICgoREVCVUdfRVJS T1IsICIlYTogRnJlZSBSZWRmaXNoIGRpc2NvdmVyZWQgdG9rZW4gLSAleC5cbiIsDQo+ICsgICAg ICAgICAgX19mdW5jX18sIFRoaXNSZWRmaXNoRGlzY292ZXJlZFRva2VuKSk7DQo+ICsgICAgICBG cmVlUG9vbChUaGlzUmVkZmlzaERpc2NvdmVyZWRUb2tlbik7DQo+ICsgICAgfQ0KPiArICAgIFRo aXNOZXR3b3JrSW50ZXJmYWNlKys7DQo+ICAgIH0NCj4gDQo+ICAgIHJldHVybjsNCj4gDQo+IC1F cnJvclJldHVybjoNCj4gLSAgaWYgKGdSZWRmaXNoRGlzY292ZXJlZFRva2VuICE9IE5VTEwpIHsN Cj4gLSAgICBGcmVlUG9vbCAoZ1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4pOw0KPiAtICB9DQo+ICB9 DQo+IA0KPiAgLyoqDQo+IEBAIC00OTgsMjUgKzQ4NCwxMCBAQCBSZWRmaXNoQ29uZmlnSGFuZGxl ckRyaXZlclVubG9hZCAoDQo+ICAgIElOIEVGSV9IQU5ETEUgIEltYWdlSGFuZGxlDQo+ICAgICkN Cj4gIHsNCj4gLSAgRUZJX1JFREZJU0hfRElTQ09WRVJFRF9UT0tFTiAgKlRoaXNSZWRmaXNoRGlz Y292ZXJlZFRva2VuOw0KPiAtICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXJP Zk5ldHdvcmtJbnRlcmZhY2VzSW5kZXg7DQo+IA0KPiAgICBSZWRmaXNoQ29uZmlnRHJpdmVyQ29t bW9uVW5sb2FkIChJbWFnZUhhbmRsZSk7DQo+IA0KPiAgICBSZWRmaXNoQ29uZmlnU3RvcFJlZGZp c2hEaXNjb3ZlcnkgKCk7DQo+IC0gIGlmIChnUmVkZmlzaERpc2NvdmVyZWRUb2tlbiAhPSBOVUxM KSB7DQo+IC0gICAgVGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4gPSBnUmVkZmlzaERpc2NvdmVy ZWRUb2tlbjsNCj4gLSAgICBmb3IgKE51bWJlck9mTmV0d29ya0ludGVyZmFjZXNJbmRleCA9IDA7 DQo+IE51bWJlck9mTmV0d29ya0ludGVyZmFjZXNJbmRleCA8IGdOdW1iZXJPZk5ldHdvcmtJbnRl cmZhY2VzOw0KPiBOdW1iZXJPZk5ldHdvcmtJbnRlcmZhY2VzSW5kZXgrKykgew0KPiAtICAgICAg aWYgKFRoaXNSZWRmaXNoRGlzY292ZXJlZFRva2VuLT5FdmVudCAhPSBOVUxMKSB7DQo+IC0gICAg ICAgIGdCUy0+Q2xvc2VFdmVudCAoVGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4tPkV2ZW50KTsN Cj4gLSAgICAgIH0NCj4gLQ0KPiAtICAgICAgRnJlZVBvb2wgKFRoaXNSZWRmaXNoRGlzY292ZXJl ZFRva2VuKTsNCj4gLSAgICAgIFRoaXNSZWRmaXNoRGlzY292ZXJlZFRva2VuKys7DQo+IC0gICAg fQ0KPiAtDQo+IC0gICAgZ1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4gPSBOVUxMOw0KPiAtICB9DQo+ IA0KPiAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICB9DQo+IGRpZmYgLS1naXQgYS9SZWRmaXNo UGtnL1JlZGZpc2hEaXNjb3ZlckR4ZS9SZWRmaXNoRGlzY292ZXJEeGUuYw0KPiBiL1JlZGZpc2hQ a2cvUmVkZmlzaERpc2NvdmVyRHhlL1JlZGZpc2hEaXNjb3ZlckR4ZS5jDQo+IGluZGV4IDU4M2M2 ZjcuLmE2YzhkNjAgMTAwNjQ0DQo+IC0tLSBhL1JlZGZpc2hQa2cvUmVkZmlzaERpc2NvdmVyRHhl L1JlZGZpc2hEaXNjb3ZlckR4ZS5jDQo+ICsrKyBiL1JlZGZpc2hQa2cvUmVkZmlzaERpc2NvdmVy RHhlL1JlZGZpc2hEaXNjb3ZlckR4ZS5jDQo+IEBAIC0xMDk1LDggKzEwOTUsMTAgQEAgUmVkZmlz aFNlcnZpY2VHZXROZXR3b3JrSW50ZXJmYWNlICggIHsNCj4gICAgRUZJX1JFREZJU0hfRElTQ09W RVJfTkVUV09SS19JTlRFUkZBQ0VfSU5URVJOQUwNCj4gKlRoaXNOZXR3b3JrSW50ZXJmYWNlSW50 bjsNCj4gICAgRUZJX1JFREZJU0hfRElTQ09WRVJfTkVUV09SS19JTlRFUkZBQ0UNCj4gKlRoaXNO ZXR3b3JrSW50ZXJmYWNlOw0KPiArICBFRklfUkVERklTSF9ESVNDT1ZFUl9SRVNUX0VYX0lOU1RB TkNFX0lOVEVSTkFMICAgKlJlc3RFeEluc3RhbmNlOw0KPiANCj4gLSAgaWYgKChOZXR3b3JrSW50 Zkluc3RhbmNlcyA9PSBOVUxMKSB8fCAoTnVtYmVyT2ZOZXR3b3JrSW50ZnMgPT0gTlVMTCkNCj4g fHwgKEltYWdlSGFuZGxlID09IE5VTEwpKSB7DQo+ICsgIGlmICgoVGhpcyA9PSBOVUxMKSB8fCAo TmV0d29ya0ludGZJbnN0YW5jZXMgPT0gTlVMTCkgfHwNCj4gKE51bWJlck9mTmV0d29ya0ludGZz ID09IE5VTEwpIHx8DQo+ICsgICAgICAoSW1hZ2VIYW5kbGUgPT0gTlVMTCkpIHsNCj4gICAgICBy ZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiAgICB9DQo+IA0KPiBAQCAtMTEwNywxNCAr MTEwOSwzMCBAQCBSZWRmaXNoU2VydmljZUdldE5ldHdvcmtJbnRlcmZhY2UgKA0KPiAgICAgIHJl dHVybiBFRklfTk9UX0ZPVU5EOw0KPiAgICB9DQo+IA0KPiArICBSZXN0RXhJbnN0YW5jZSA9DQo+ ICsgRUZJX1JFREZJU0hfRElTT1ZFUl9EQVRBX0ZST01fRElTQ09WRVJfUFJPVE9DT0woVGhpcyk7 DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQ2hlY2sgdGhlIG5ldyBmb3VuZCBuZXR3b3JrIGludGVy ZmFjZS4NCj4gKyAgLy8NCj4gKyAgaWYgKFJlc3RFeEluc3RhbmNlLT5OZXR3b3JrSW50ZXJmYWNl SW5zdGFuY2VzICE9IE5VTEwpIHsNCj4gKyAgICBGcmVlUG9vbCAoUmVzdEV4SW5zdGFuY2UtPk5l dHdvcmtJbnRlcmZhY2VJbnN0YW5jZXMpOw0KPiArICAgIFJlc3RFeEluc3RhbmNlLT5OZXR3b3Jr SW50ZXJmYWNlSW5zdGFuY2VzID0gTlVMTDsgIH0NCj4gKw0KPiAgICBUaGlzTmV0d29ya0ludGVy ZmFjZSA9IChFRklfUkVERklTSF9ESVNDT1ZFUl9ORVRXT1JLX0lOVEVSRkFDRQ0KPiAqKUFsbG9j YXRlWmVyb1Bvb2wgKHNpemVvZiAoRUZJX1JFREZJU0hfRElTQ09WRVJfTkVUV09SS19JTlRFUkZB Q0UpDQo+ICogbU51bU5ldHdvcmtJbnRlcmZhY2UpOw0KPiAgICBpZiAoVGhpc05ldHdvcmtJbnRl cmZhY2UgPT0gTlVMTCkgew0KPiAgICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4g ICAgfQ0KPiANCj4gICAgKk5ldHdvcmtJbnRmSW5zdGFuY2VzICAgID0gVGhpc05ldHdvcmtJbnRl cmZhY2U7DQo+ICsNCj4gKw0KPiArICBSZXN0RXhJbnN0YW5jZS0+TmV0d29ya0ludGVyZmFjZUlu c3RhbmNlcyA9IFRoaXNOZXR3b3JrSW50ZXJmYWNlOw0KPiArIFJlc3RFeEluc3RhbmNlLT5OdW1i ZXJPZk5ldHdvcmtJbnRlcmZhY2VzID0gMDsNCj4gKw0KPiAgICBUaGlzTmV0d29ya0ludGVyZmFj ZUludG4gPQ0KPiAoRUZJX1JFREZJU0hfRElTQ09WRVJfTkVUV09SS19JTlRFUkZBQ0VfSU5URVJO QUwgKilHZXRGaXJzdE5vZGUNCj4gKCZtRWZpUmVkZmlzaERpc2NvdmVyTmV0d29ya0ludGVyZmFj ZSk7DQo+ICAgIHdoaWxlIChUUlVFKSB7DQo+ICsNCj4gICAgICBUaGlzTmV0d29ya0ludGVyZmFj ZS0+SXNJcHY2ID0gRkFMU0U7DQo+ICAgICAgaWYgKENoZWNrSXNJcFZlcnNpb242IChUaGlzTmV0 d29ya0ludGVyZmFjZUludG4pKSB7DQo+ICAgICAgICBUaGlzTmV0d29ya0ludGVyZmFjZS0+SXNJ cHY2ID0gVFJVRTsgQEAgLTExMzAsNyArMTE0OCw3IEBADQo+IFJlZGZpc2hTZXJ2aWNlR2V0TmV0 d29ya0ludGVyZmFjZSAoDQo+IA0KPiAgICAgIFRoaXNOZXR3b3JrSW50ZXJmYWNlLT5TdWJuZXRQ cmVmaXhMZW5ndGggPSBUaGlzTmV0d29ya0ludGVyZmFjZUludG4tDQo+ID5TdWJuZXRQcmVmaXhM ZW5ndGg7DQo+ICAgICAgVGhpc05ldHdvcmtJbnRlcmZhY2UtPlZsYW5JZCAgICAgICAgICAgICA9 IFRoaXNOZXR3b3JrSW50ZXJmYWNlSW50bi0+VmxhbklkOw0KPiAtICAgICgqTnVtYmVyT2ZOZXR3 b3JrSW50ZnMpKys7DQo+ICsgICAgUmVzdEV4SW5zdGFuY2UtPk51bWJlck9mTmV0d29ya0ludGVy ZmFjZXMrKzsNCj4gICAgICBpZiAoSXNOb2RlQXRFbmQgKCZtRWZpUmVkZmlzaERpc2NvdmVyTmV0 d29ya0ludGVyZmFjZSwNCj4gJlRoaXNOZXR3b3JrSW50ZXJmYWNlSW50bi0+RW50cnkpKSB7DQo+ ICAgICAgICBicmVhazsNCj4gICAgICB9DQo+IEBAIC0xMTM5LDYgKzExNTcsOCBAQCBSZWRmaXNo U2VydmljZUdldE5ldHdvcmtJbnRlcmZhY2UgKA0KPiAgICAgIFRoaXNOZXR3b3JrSW50ZXJmYWNl Kys7DQo+ICAgIH0NCj4gDQo+ICsgICpOdW1iZXJPZk5ldHdvcmtJbnRmcyA9IFJlc3RFeEluc3Rh bmNlLQ0KPiA+TnVtYmVyT2ZOZXR3b3JrSW50ZXJmYWNlczsNCj4gKw0KPiAgICByZXR1cm4gRUZJ X1NVQ0NFU1M7DQo+ICB9DQo+IA0KPiBAQCAtMTE3OCw3ICsxMTk4LDYgQEAgUmVkZmlzaFNlcnZp Y2VBY3F1aXJlU2VydmljZSAoICB7DQo+ICAgIEVGSV9SRURGSVNIX0RJU0NPVkVSRURfSU5URVJO QUxfSU5TVEFOQ0UgICAgICAgICAqSW5zdGFuY2U7DQo+ICAgIEVGSV9TVEFUVVMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXMxOw0KPiAtICBFRklfU1RBVFVTICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzMjsNCj4gICAgQk9PTEVB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ld0luc3RhbmNlOw0K PiAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVt TmV0d29ya0ludGVyZmFjZXM7DQo+ICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBOZXR3b3JrSW50ZXJmYWNlc0luZGV4Ow0KPiBAQCAtMTIxNSw3ICsx MjM0LDYgQEAgUmVkZmlzaFNlcnZpY2VBY3F1aXJlU2VydmljZSAoDQo+IA0KPiAgICBmb3IgKE5l dHdvcmtJbnRlcmZhY2VzSW5kZXggPSAwOyBOZXR3b3JrSW50ZXJmYWNlc0luZGV4IDwNCj4gTnVt TmV0d29ya0ludGVyZmFjZXM7IE5ldHdvcmtJbnRlcmZhY2VzSW5kZXgrKykgew0KPiAgICAgIFN0 YXR1czEgICAgID0gRUZJX1NVQ0NFU1M7DQo+IC0gICAgU3RhdHVzMiAgICAgPSBFRklfU1VDQ0VT UzsNCj4gICAgICBOZXdJbnN0YW5jZSA9IEZBTFNFOw0KPiAgICAgIEluc3RhbmNlICAgID0gR2V0 SW5zdGFuY2VCeU93bmVyIChJbWFnZUhhbmRsZSwNCj4gVGFyZ2V0TmV0d29ya0ludGVyZmFjZUlu dGVybmFsLCBGbGFncyAmDQo+IH5FRklfUkVERklTSF9ESVNDT1ZFUl9WQUxJREFUSU9OKTsgLy8g Q2hlY2sgaWYgd2UgY2FuIHJlLXVzZSBwcmV2aW91cw0KPiBpbnN0YW5jZS4NCj4gICAgICBpZiAo SW5zdGFuY2UgPT0gTlVMTCkgew0KPiBAQCAtMTIyMyw2ICsxMjQxLDcgQEAgUmVkZmlzaFNlcnZp Y2VBY3F1aXJlU2VydmljZSAoDQo+ICAgICAgICBJbnN0YW5jZSA9IChFRklfUkVERklTSF9ESVND T1ZFUkVEX0lOVEVSTkFMX0lOU1RBTkNFDQo+ICopQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mDQo+ IChFRklfUkVERklTSF9ESVNDT1ZFUkVEX0lOVEVSTkFMX0lOU1RBTkNFKSk7DQo+ICAgICAgICBp ZiAoSW5zdGFuY2UgPT0gTlVMTCkgew0KPiAgICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAi JWE6TWVtb3J5IGFsbG9jYXRpb24gZmFpbC5cbiIsIF9fZnVuY19fKSk7DQo+ICsgICAgICAgIHJl dHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gICAgICAgIH0NCj4gDQo+ICAgICAgICBJbml0 aWFsaXplTGlzdEhlYWQgKCZJbnN0YW5jZS0+RW50cnkpOyBAQCAtMTI1OCw5ICsxMjc3LDExIEBA DQo+IFJlZGZpc2hTZXJ2aWNlQWNxdWlyZVNlcnZpY2UgKA0KPiAgICAgICAgREVCVUcgKChERUJV R19FUlJPUiwgIiVhOlJlZGZpc2ggc2VydmljZSBkaXNjb3ZlcnkgdGhyb3VnaCBTU0RQIGlzDQo+ IG5vdCBzdXBwb3J0ZWRcbiIsIF9fZnVuY19fKSk7DQo+ICAgICAgICByZXR1cm4gRUZJX1VOU1VQ UE9SVEVEOw0KPiAgICAgIH0gZWxzZSB7DQo+IC0gICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMx KSAmJiBFRklfRVJST1IgKFN0YXR1czIpKSB7DQo+IC0gICAgICAgIEZyZWVQb29sICgoVk9JRCAq KUluc3RhbmNlKTsNCj4gLSAgICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOlNvbWV0aGlu ZyB3cm9uZyBvbiBSZWRmaXNoIHNlcnZpY2UNCj4gZGlzY292ZXJ5IFN0YXR1czE9JXgsIFN0YXR1 czI9JXguXG4iLCBfX2Z1bmNfXywgU3RhdHVzMSwgU3RhdHVzMikpOw0KPiArICAgICAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzMSkpIHsNCj4gKyAgICAgICAgaWYgKE5ld0luc3RhbmNlKSB7DQo+ICsg ICAgICAgICAgRnJlZVBvb2wgKChWT0lEICopSW5zdGFuY2UpOw0KPiArICAgICAgICB9DQo+ICsg ICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTpTb21ldGhpbmcgd3Jvbmcgb24gUmVkZmlz aCBzZXJ2aWNlDQo+ICsgZGlzY292ZXJ5IFN0YXR1czE9JXIuXG4iLCBfX2Z1bmNfXywgU3RhdHVz MSkpOw0KPiAgICAgICAgfSBlbHNlIHsNCj4gICAgICAgICAgaWYgKE5ld0luc3RhbmNlKSB7DQo+ ICAgICAgICAgICAgSW5zZXJ0VGFpbExpc3QgKCZtUmVkZmlzaERpc2NvdmVyTGlzdCwgJkluc3Rh bmNlLT5FbnRyeSk7IEBAIC0xMzg3LDEzDQo+ICsxNDA4LDYgQEAgUmVsZWFzZU5leHQ6Ow0KPiAg ICB9DQo+ICB9DQo+IA0KPiAtRUZJX1JFREZJU0hfRElTQ09WRVJfUFJPVE9DT0wgIG1SZWRmaXNo RGlzY292ZXIgPSB7DQo+IC0gIFJlZGZpc2hTZXJ2aWNlR2V0TmV0d29ya0ludGVyZmFjZSwNCj4g LSAgUmVkZmlzaFNlcnZpY2VBY3F1aXJlU2VydmljZSwNCj4gLSAgUmVkZmlzaFNlcnZpY2VBYm9y dEFjcXVpcmUsDQo+IC0gIFJlZGZpc2hTZXJ2aWNlUmVsZWFzZVNlcnZpY2UNCj4gLX07DQo+IC0N Cj4gIC8qKg0KPiAgICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZSBhbg0KPiBFRklfUkVERklTSF9ESVND T1ZFUl9ORVRXT1JLX0lOVEVSRkFDRV9JTlRFUk5BTCBmb3IgdGhlDQo+ICAgIGdpdmVuIG5ldHdv cmsgaW50ZXJmYWNlLg0KPiBAQCAtMTcxMywxMiArMTcyNywyMCBAQCBCdWlsZHVwTmV0d29ya0lu dGVyZmFjZSAoDQo+IA0KPiAgICAgICAgICAgIE5ld05ldHdvcmtJbnRlcmZhY2VJbnN0YWxsZWQg ICAgICAgICAgICAgICAgICAgICAgID0gRkFMU0U7DQo+ICAgICAgICAgICAgTmV0d29ya0ludGVy ZmFjZS0+RWZpUmVkZmlzaERpc2NvdmVyUHJvdG9jb2xIYW5kbGUgPSBOVUxMOw0KPiAtICAgICAg ICAgIFN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g Z0JTLT5JbnN0YWxsUHJvdG9jb2xJbnRlcmZhY2UgKA0KPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZOZXR3b3Jr SW50ZXJmYWNlLQ0KPiA+RWZpUmVkZmlzaERpc2NvdmVyUHJvdG9jb2xIYW5kbGUsDQo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJmdFZmlSZWRmaXNoRGlzY292ZXJQcm90b2NvbEd1aWQsDQo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRUZJX05BVElWRV9JTlRFUkZBQ0UsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFZPSUQgKikmbVJlZGZp c2hEaXNjb3Zlcg0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgICAgICAgICBSZXN0RXhJ bnN0YW5jZS0+U2lnbmF0dXJlID0NCj4gKyBFRklfUkVERklTSF9ESVNDT1ZFUl9EQVRBX1NJR05B VFVSRTsNCj4gKw0KPiArICAgICAgICAgIFJlc3RFeEluc3RhbmNlLT5SZWRmaXNoRGlzY292ZXJQ cm90b2NvbC5HZXROZXR3b3JrSW50ZXJmYWNlTGlzdCA9DQo+IFJlZGZpc2hTZXJ2aWNlR2V0TmV0 d29ya0ludGVyZmFjZTsNCj4gKyAgICAgICAgICBSZXN0RXhJbnN0YW5jZS0+UmVkZmlzaERpc2Nv dmVyUHJvdG9jb2wuQWNxdWlyZVJlZGZpc2hTZXJ2aWNlID0NCj4gUmVkZmlzaFNlcnZpY2VBY3F1 aXJlU2VydmljZTsNCj4gKyAgICAgICAgICBSZXN0RXhJbnN0YW5jZS0+UmVkZmlzaERpc2NvdmVy UHJvdG9jb2wuQWJvcnRBY3F1aXJlUmVkZmlzaFNlcnZpY2UNCj4gPSBSZWRmaXNoU2VydmljZUFi b3J0QWNxdWlyZTsNCj4gKyAgICAgICAgICBSZXN0RXhJbnN0YW5jZS0+UmVkZmlzaERpc2NvdmVy UHJvdG9jb2wuUmVsZWFzZVJlZGZpc2hTZXJ2aWNlDQo+ICsgPSBSZWRmaXNoU2VydmljZVJlbGVh c2VTZXJ2aWNlOw0KPiArDQo+ICsgICAgICAgICAgU3RhdHVzID0gZ0JTLT5JbnN0YWxsUHJvdG9j b2xJbnRlcmZhY2UgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAmTmV0d29ya0ludGVy ZmFjZS0+RWZpUmVkZmlzaERpc2NvdmVyUHJvdG9jb2xIYW5kbGUsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICZnRWZpUmVkZmlzaERpc2NvdmVyUHJvdG9jb2xHdWlkLA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICBFRklfTkFUSVZFX0lOVEVSRkFDRSwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgKFZPSUQgKikmUmVzdEV4SW5zdGFuY2UtPlJlZGZpc2hEaXNjb3ZlclBy b3RvY29sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICAgICAgICAgICAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiAgICAgICAgICAgICAgREVCVUcgKChERUJVR19FUlJP UiwgIiVhOiBGYWlsIHRvIGluc3RhbGwNCj4gRUZJX1JFREZJU0hfRElTQ09WRVJfUFJPVE9DT0xc biIsIF9fZnVuY19fKSk7DQo+ICAgICAgICAgICAgfQ0KPiBAQCAtMTgxNSw2ICsxODM3LDcgQEAg U3RvcFNlcnZpY2VPbk5ldHdvcmtJbnRlcmZhY2UgKA0KPiAgICBFRklfSEFORExFICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzY292ZXJQcm90b2NvbEhhbmRsZTsNCj4g ICAgRUZJX1JFREZJU0hfRElTQ09WRVJfTkVUV09SS19JTlRFUkZBQ0VfSU5URVJOQUwNCj4gKlRo aXNOZXR3b3JrSW50ZXJmYWNlOw0KPiAgICBFRklfUkVERklTSF9ESVNDT1ZFUl9SRVNUX0VYX0lO U1RBTkNFX0lOVEVSTkFMICAgKlJlc3RFeEluc3RhbmNlOw0KPiArICBFRklfUkVERklTSF9ESVND T1ZFUl9QUk9UT0NPTCAgICAgICAgICAgICAgICAgICAgKlJlZGZpc2hEaXNjb3ZlclByb3RvY29s Ow0KPiANCj4gICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgKHNpemVvZiAoZ1JlcXVpcmVkUHJv dG9jb2wpIC8gc2l6ZW9mDQo+IChSRURGSVNIX0RJU0NPVkVSX1JFUVVJUkVEX1BST1RPQ09MKSk7 IEluZGV4KyspIHsNCj4gICAgICBTdGF0dXMgPSBnQlMtPkhhbmRsZVByb3RvY29sICgNCj4gQEAg LTE4NTQsMTIgKzE4NzcsMzAgQEAgU3RvcFNlcnZpY2VPbk5ldHdvcmtJbnRlcmZhY2UgKA0KPiAg ICAgICAgICAgICAgLy8gY2xpZW50IHdoaWNoIHVzZXMgLkVGSSBSZWRmaXNoIGRpc2NvdmVyIHBy b3RvY29sLg0KPiAgICAgICAgICAgICAgLy8NCj4gICAgICAgICAgICAgIGlmIChEaXNjb3ZlclBy b3RvY29sSGFuZGxlICE9IE5VTEwpIHsNCj4gLSAgICAgICAgICAgICAgZ0JTLT5EaXNjb25uZWN0 Q29udHJvbGxlciAoRGlzY292ZXJQcm90b2NvbEhhbmRsZSwgTlVMTCwgTlVMTCk7DQo+IC0gICAg ICAgICAgICAgIFN0YXR1cyA9IGdCUy0+VW5pbnN0YWxsUHJvdG9jb2xJbnRlcmZhY2UgKA0KPiAr DQo+ICsgICAgICAgICAgICAgIFN0YXR1cyA9IGdCUy0+SGFuZGxlUHJvdG9jb2wgKA0KPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzY292ZXJQcm90b2NvbEhhbmRsZSwNCj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZnRWZpUmVkZmlzaERpc2NvdmVyUHJvdG9jb2xH dWlkLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFZPSUQgKikmbVJlZGZpc2hE aXNjb3Zlcg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFZPSUQgKiopICZSZWRm aXNoRGlzY292ZXJQcm90b2NvbA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsN Cj4gKyAgICAgICAgICAgICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAgICAg ICAgICAgICBSZXN0RXhJbnN0YW5jZSA9DQo+IEVGSV9SRURGSVNIX0RJU09WRVJfREFUQV9GUk9N X0RJU0NPVkVSX1BST1RPQ09MKFJlZGZpc2hEaXNjb3ZlDQo+IHJQcm90b2NvbCk7DQo+ICsgICAg ICAgICAgICAgICAgLy8NCj4gKyAgICAgICAgICAgICAgICAvLyBTdG9wIFJlZGZpc2ggc2Vydmlj ZSBkaXNjb3ZlcnkuDQo+ICsgICAgICAgICAgICAgICAgLy8NCj4gKyAgICAgICAgICAgICAgICBS ZWRmaXNoRGlzY292ZXJQcm90b2NvbC0+QWJvcnRBY3F1aXJlUmVkZmlzaFNlcnZpY2UgKA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZGZpc2hEaXNjb3Zl clByb3RvY29sLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFJlc3RFeEluc3RhbmNlLT5OZXR3b3JrSW50ZXJmYWNlSW5zdGFuY2VzDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArDQo+ICsgICAgICAg ICAgICAgICAgZ0JTLT5EaXNjb25uZWN0Q29udHJvbGxlciAoRGlzY292ZXJQcm90b2NvbEhhbmRs ZSwgTlVMTCwgTlVMTCk7DQo+ICsgICAgICAgICAgICAgICAgU3RhdHVzID0gZ0JTLT5Vbmluc3Rh bGxQcm90b2NvbEludGVyZmFjZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IERpc2NvdmVyUHJvdG9jb2xIYW5kbGUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZnRWZpUmVkZmlzaERpc2NvdmVyUHJvdG9jb2xHdWlkLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoVk9JRCAqKSZSZXN0RXhJbnN0YW5jZS0+UmVkZmlzaERpc2NvdmVy UHJvdG9jb2wNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgICAg ICAgICAgICAgfQ0KPiAgICAgICAgICAgICAgfQ0KPiANCj4gICAgICAgICAgICAgIHJldHVybiBT dGF0dXM7DQo+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL1JlZGZpc2hEaXNjb3ZlckR4ZS9SZWRm aXNoRGlzY292ZXJJbnRlcm5hbC5oDQo+IGIvUmVkZmlzaFBrZy9SZWRmaXNoRGlzY292ZXJEeGUv UmVkZmlzaERpc2NvdmVySW50ZXJuYWwuaA0KPiBpbmRleCAyNzA0Y2Q5Li5kZGI1ZjJlIDEwMDY0 NA0KPiAtLS0gYS9SZWRmaXNoUGtnL1JlZGZpc2hEaXNjb3ZlckR4ZS9SZWRmaXNoRGlzY292ZXJJ bnRlcm5hbC5oDQo+ICsrKyBiL1JlZGZpc2hQa2cvUmVkZmlzaERpc2NvdmVyRHhlL1JlZGZpc2hE aXNjb3ZlckludGVybmFsLmgNCj4gQEAgLTExOCwxNiArMTE4LDMwIEBAIHR5cGVkZWYgc3RydWN0 IHsNCj4gIH0gRUZJX1JFREZJU0hfRElTQ09WRVJfTkVUV09SS19JTlRFUkZBQ0VfSU5URVJOQUw7 DQo+IA0KPiAgLy8NCj4gKy8vIFJlZGZpc2ggRGlzY292ZXIgSW5zdGFuY2Ugc2lnbmF0dXJlDQo+ ICsvLw0KPiArDQo+ICsjZGVmaW5lIEVGSV9SRURGSVNIX0RJU0NPVkVSX0RBVEFfU0lHTkFUVVJF ICAgU0lHTkFUVVJFXzMyICgnRScsDQo+ICdSJywgJ0QnLCAnRCcpDQo+ICsNCj4gKyNkZWZpbmUg RUZJX1JFREZJU0hfRElTT1ZFUl9EQVRBX0ZST01fRElTQ09WRVJfUFJPVE9DT0woYSkgXA0KPiAr ICBDUiAoYSwgRUZJX1JFREZJU0hfRElTQ09WRVJfUkVTVF9FWF9JTlNUQU5DRV9JTlRFUk5BTCwN Cj4gK1JlZGZpc2hEaXNjb3ZlclByb3RvY29sLCBFRklfUkVERklTSF9ESVNDT1ZFUl9EQVRBX1NJ R05BVFVSRSkNCj4gKw0KPiArLy8NCj4gIC8vIEludGVybmFsIHN0cnVjdHVyZSB1c2VkIHRvIG1h aW50YWluIFJFU1QgRVggcHJvcGVydGllcy4NCj4gIC8vDQo+ICB0eXBlZGVmIHN0cnVjdCB7DQo+ IC0gIExJU1RfRU5UUlkgICAgICAgICAgICAgIEVudHJ5OyAgICAgICAgICAgICAgICAgICAgICAv Ly88IExpbmsgbGlzdCBlbnRyeS4NCj4gLSAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgT3BlbkRy aXZlckFnZW50SGFuZGxlOyAgICAgIC8vLzwgVGhlIGFnZW50IHRvIG9wZW4NCj4gbmV0d29yayBw cm90b2NvbC4NCj4gLSAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgT3BlbkRyaXZlckNvbnRyb2xs ZXJIYW5kbGU7IC8vLzwgVGhlIGNvbnRyb2xsZXIgaGFuZGxlDQo+IHRvIG9wZW4gbmV0d29yayBw cm90b2NvbC4NCj4gLSAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgUmVzdEV4Q2hpbGRIYW5kbGU7 ICAgICAgICAgIC8vLzwgVGhlIGNoaWxkIGhhbmRsZSBjcmVhdGVkDQo+IHRocm91Z2ggUkVTVCBF WCBTZXJ2aWNlIFByb3RvY29sLg0KPiAtICBFRklfSEFORExFICAgICAgICAgICAgICBSZXN0RXhD b250cm9sbGVySGFuZGxlOyAgICAgLy8vPCBUaGUgY29udHJvbGxlciBoYW5kbGUNCj4gd2hpY2gg cHJvdmlkZSBSRVNUIEVYIHByb3RvY29sLg0KPiAtICBFRklfUkVTVF9FWF9QUk9UT0NPTCAgICAq UmVzdEV4UHJvdG9jb2xJbnRlcmZhY2U7ICAgLy8vPCBQb2ludGVyIHRvDQo+IEVGSV9SRVNUX0VY X1BST1RPQ09MLg0KPiAtICBVSU5UMzIgICAgICAgICAgICAgICAgICBSZXN0RXhJZDsgICAgICAg ICAgICAgICAgICAgLy8vPCBUaGUgaWRlbnRpZmllciBpbnN0YWxsZWQgb24gUkVTVCBFWA0KPiBj b250cm9sbGVyIGhhbmRsZS4NCj4gKyAgTElTVF9FTlRSWSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVudHJ5OyAgICAgICAgICAgICAgICAgICAgICAvLy88IExpbmsgbGlzdCBlbnRyeS4N Cj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZTsg ICAgICAgICAgICAgICAgICAvLy88IEluc3RhbmNlIHNpZ25hdHVyZS4NCj4gKyAgRUZJX0hBTkRM RSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5Ecml2ZXJBZ2VudEhhbmRsZTsgICAg ICAvLy88IFRoZSBhZ2VudCB0bw0KPiBvcGVuIG5ldHdvcmsgcHJvdG9jb2wuDQo+ICsgIEVGSV9I QU5ETEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuRHJpdmVyQ29udHJvbGxlckhh bmRsZTsgLy8vPCBUaGUNCj4gY29udHJvbGxlciBoYW5kbGUgdG8gb3BlbiBuZXR3b3JrIHByb3Rv Y29sLg0KPiArICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdEV4 Q2hpbGRIYW5kbGU7ICAgICAgICAgIC8vLzwgVGhlIGNoaWxkIGhhbmRsZQ0KPiBjcmVhdGVkIHRo cm91Z2ggUkVTVCBFWCBTZXJ2aWNlIFByb3RvY29sLg0KPiArICBFRklfSEFORExFICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUmVzdEV4Q29udHJvbGxlckhhbmRsZTsgICAgIC8vLzwgVGhl IGNvbnRyb2xsZXINCj4gaGFuZGxlIHdoaWNoIHByb3ZpZGUgUkVTVCBFWCBwcm90b2NvbC4NCj4g KyAgRUZJX1JFU1RfRVhfUFJPVE9DT0wgICAgICAgICAgICAgICAgICAgICpSZXN0RXhQcm90b2Nv bEludGVyZmFjZTsgICAvLy88IFBvaW50ZXINCj4gdG8gRUZJX1JFU1RfRVhfUFJPVE9DT0wuDQo+ ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN0RXhJZDsgICAg ICAgICAgICAgICAgICAgLy8vPCBUaGUgaWRlbnRpZmllciBpbnN0YWxsZWQgb24NCj4gUkVTVCBF WCBjb250cm9sbGVyIGhhbmRsZS4NCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE51bWJlck9mTmV0d29ya0ludGVyZmFjZXM7ICAvLy88IE51bWJlciBvZg0KPiBu ZXR3b3JrIGludGVyZmFjZXMgY2FuIGRvIFJlZGZpc2ggc2VydmljZSBkaXNjb3ZlcnkuDQo+ICsg IEVGSV9SRURGSVNIX0RJU0NPVkVSX05FVFdPUktfSU5URVJGQUNFDQo+ICpOZXR3b3JrSW50ZXJm YWNlSW5zdGFuY2VzOyAvLy88IE5ldHdvcmsgaW50ZXJmYWNlIGluc3RhbmNlcy4gSXQncyBhbiBh cnJheQ0KPiBvZiBpbnN0YW5jZXMuIFRoZSBudW1iZXIgb2YgZW50cmllcw0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8vLzwgaW4gYXJyYXkgaXMgaW5kaWNhdGVkIGJ5DQo+IE51bWJlck9mTmV0d29ya0ludGVy ZmFjZXMuDQo+ICsgIEVGSV9SRURGSVNIX0RJU0NPVkVSX1BST1RPQ09MICAgICAgICAgICBSZWRm aXNoRGlzY292ZXJQcm90b2NvbDsgICAgLy8vPA0KPiBFRklfUkVERklTSF9ESVNDT1ZFUl9QUk9U T0NPTCBwcm90b2NvbC4NCj4gIH0gRUZJX1JFREZJU0hfRElTQ09WRVJfUkVTVF9FWF9JTlNUQU5D RV9JTlRFUk5BTDsNCj4gDQo+ICAvKioNCj4gLS0NCj4gMi42LjEud2luZG93cy4xDQo+IC1UaGUg aW5mb3JtYXRpb24gY29udGFpbmVkIGluIHRoaXMgbWVzc2FnZSBtYXkgYmUgY29uZmlkZW50aWFs IGFuZA0KPiBwcm9wcmlldGFyeSB0byBBbWVyaWNhbiBNZWdhdHJlbmRzIChBTUkpLiBUaGlzIGNv bW11bmljYXRpb24gaXMgaW50ZW5kZWQNCj4gdG8gYmUgcmVhZCBvbmx5IGJ5IHRoZSBpbmRpdmlk dWFsIG9yIGVudGl0eSB0byB3aG9tIGl0IGlzIGFkZHJlc3NlZCBvciBieSB0aGVpcg0KPiBkZXNp Z25lZS4gSWYgdGhlIHJlYWRlciBvZiB0aGlzIG1lc3NhZ2UgaXMgbm90IHRoZSBpbnRlbmRlZCBy ZWNpcGllbnQsIHlvdSBhcmUNCj4gb24gbm90aWNlIHRoYXQgYW55IGRpc3RyaWJ1dGlvbiBvZiB0 aGlzIG1lc3NhZ2UsIGluIGFueSBmb3JtLCBpcyBzdHJpY3RseQ0KPiBwcm9oaWJpdGVkLiBQbGVh c2UgcHJvbXB0bHkgbm90aWZ5IHRoZSBzZW5kZXIgYnkgcmVwbHkgZS1tYWlsIG9yIGJ5DQo+IHRl bGVwaG9uZSBhdCA3NzAtMjQ2LTg2MDAsIGFuZCB0aGVuIGRlbGV0ZSBvciBkZXN0cm95IGFsbCBj b3BpZXMgb2YgdGhlDQo+IHRyYW5zbWlzc2lvbi4NCg==