From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id BBCDE940F47 for ; Wed, 1 Nov 2023 03:24:48 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=o7yuQ+XdYLqMU7nmTWvuCrBRZJQwFFsEJgf5ogXoV04=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1698809087; v=1; b=oI5Ws0qyrMSZVuKt7loJaKYzXfiKabYxDAbZ38c2wpM9PzhtfLUN7MLC7yqZ35ctiklbQnMz cgF5qFsTswdQAyNDbnOlwLDZx5cmbkcygFSCkRz5SBdZmWWyCoc6J0aVSCks8lYKxBMh2jUlNdH NmAEjA4e4lxMbaeQQZnVI1+A= X-Received: by 127.0.0.2 with SMTP id M7UvYY7687511x2OCTO09K6s; Tue, 31 Oct 2023 20:24:47 -0700 X-Received: from NAM11-BN8-obe.outbound.protection.outlook.com (NAM11-BN8-obe.outbound.protection.outlook.com [40.107.236.40]) by mx.groups.io with SMTP id smtpd.web11.49275.1698809085939791036 for ; Tue, 31 Oct 2023 20:24:46 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GwrW/0rmu5f+4u4tmeRisZGkC/YvWB1aD7pkooYG6iCF9hc4dKZ5Yj86/WYn3hf1be3CvwY8VxS3DIy6m96xISiRvDXu76AFPVYkVzD4cBtneZP9IUUW6rAHYqYN7FS0LD8blO1ORSVE38KrY/1lb/oq3DcnGx9ypbainvJ15GTWUZhWbDFwpyraFIX91bijlXfzdIKdIBQnKfq+1k2yJqAIxHwjF7leNT6lgeZzmV8zL/0+BwtL5P5EBL48JsRFRHACyReKeq6653WgQImot5CL8Pmh48HWT8BASAwvih0t434Wyr5rkuHH0hzlWkMrs8isSg45y4vFmu+SCxOymg== 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=PSyNlPyxfJjDnoHTdaWcGTfj3dA3Ov1lIsWWvNA7CL4=; b=e8AgSzJfCCgghiWRlSydmATxiRaJGyXP/O/DDw8PngfS4NsTtGv/1OJ78hBZWxQN2wLN/1tjNQQuIK6KGVaw2TjXlMeG5zyPyp/q4Ha561ixvVTdlFrFTdQ8ViAFCqwpag3T/BJN2QNxrL/LS0BKlDrTQQF1PStylRS/TusHbTyQm0TAZwQn7y9gMv0NUptQnpHRBnYbAI8Bh9+I0XozWOc8BkjcYFijG4aiMyh0OQiUHC1uGpIuCGCtToENenGnPcYQ3bRDUNbahV4aSPCOICzXvsdhvvdPbP9reEnAeV66gbdAw4QBaEWLXA1fZUvm+CUlDWt9kyzsholuPVq6XQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ami.com; dmarc=pass action=none header.from=ami.com; dkim=pass header.d=ami.com; arc=none X-Received: from BLAPR10MB5185.namprd10.prod.outlook.com (2603:10b6:208:328::16) by BLAPR10MB5348.namprd10.prod.outlook.com (2603:10b6:208:324::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.30; Wed, 1 Nov 2023 03:24:42 +0000 X-Received: from BLAPR10MB5185.namprd10.prod.outlook.com ([fe80::dc81:5921:24a3:52e9]) by BLAPR10MB5185.namprd10.prod.outlook.com ([fe80::dc81:5921:24a3:52e9%4]) with mapi id 15.20.6933.029; Wed, 1 Nov 2023 03:24:41 +0000 From: "Igor Kulchytskyy via groups.io" To: Mike Maslenkin , "devel@edk2.groups.io" CC: Abner Chang , Nickle Wang Subject: Re: [edk2-devel] [PATCH] RedfishPkg: RedfishDiscoverDxe: Fix issue if IPv4 installed after RestEx Thread-Topic: [EXTERNAL] Re: [edk2-devel] [PATCH] RedfishPkg: RedfishDiscoverDxe: Fix issue if IPv4 installed after RestEx Thread-Index: AQHaDCOh6zqG9jdmCEaWf+ayv/I8R7BkpUCAgAAZ4dA= Date: Wed, 1 Nov 2023 03:24:41 +0000 Message-ID: References: <1698774975-14480-1-git-send-email-igork@ami.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BLAPR10MB5185:EE_|BLAPR10MB5348:EE_ x-ms-office365-filtering-correlation-id: 595604a8-04ac-4276-facd-08dbda8a1644 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: c/bqqJ9YERgTzQ7jK9Oq9XmzJ60SDYblQ5maPfMtDwGJhb7IdgY6HcpYFUsODN0yh+pm6wYpTx9jwAzUyMBhKRCP1Pkzqu/+8x+S3kLKy+K0fks6poB3qs1MM5ErVJ9PcMQSL9l1nGqo4/qKaQ9rZYSl2iAsMOr7MxiNqw9cuFUECWUlpucEw/7ujyYcxbVtJslyXjjXwz2gKhmjQQm/ycie8meedTH5s3jVSg5NZgMqmxnSw98XKD50kxdhldlgMo5nd5ZOHskugN2dzCumHp0nITnrDg/KCcJJU/lGgBF2oMF+eBzpWrh4STYbioFSzqfcc60wGnAeLlgRStcQ6eLZh290TMkZrax/t8hZeegQkGiO8WSM5RGOChJ1lJtqT+1H5gEgTBE4/WGfq2J85VJDsgI8cHMW/VvmLJDc8UlCMhedmhHcJlvVQWptgHsxsscPNllQjKkXPbbbxacZB7jBB9PFACnIdsm/7CwHKXC3RGzY6BodrLUhs711c3cRMMqTvEosFaNZOCkpBrXnYoWR9+A5vfpGrGmR8iWrIDTdtKe8kCaWYu1SANgxVBdq8J8tTLapSZWzlBaaDl0ALyPtg1dnr9CNCy4j25w3OKdDKYNFcBY/XZBk7pcv4RINoqPv0rFhgvipdZm4hGy+gw== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dXBRZVJ1elpaaUVQNlEzMGpVY1pKNXI5dU1xMGtBUFNkYTMvTWtpc3pZQU1B?= =?utf-8?B?a2VwOE1DaENRMTNZOVErcXdaVGxNUGQ1aTFvYXhSbEZ4RnAyTjRkVjNLbzBZ?= =?utf-8?B?VVQrQ0djT3R2QlZ1U3BmK0NVbW9tSjRUTG5IWHhmaUx6TkE1dUtMemwzZktQ?= =?utf-8?B?MDI0VUp3aVFlZXhXMitIVVR4a2VVTGRITlZGUVpHZDdGR3ErL2Q1OCs5bDNV?= =?utf-8?B?LzFWSGZrdExiSGdFNjRBMUZaa2xnOTdpblFKaCtMZDFuRXRZcEVDSWw1Wm9h?= =?utf-8?B?b2lyMlFlTFdTczhNYzMzeng2cExhQVkxazE1SitDY0FsaS9PTlo2SWQvWmNn?= =?utf-8?B?Q3IxY0QvcUhRb09HaXZqQlhpc3JsWThFS1h6d2theU9NRHlDUUE4RE9sUHJI?= =?utf-8?B?aWsxY3dmcXFBU1p6WG1rRG1yYXlTanh5THQ5aGRLOUVSSndSZ3JENnpzNWh6?= =?utf-8?B?a0p5VEZsQjdCY09nSTd6TkFOc1h2dXpyUXZSQkpzZG12Yys1Ym1SWkdyZUxF?= =?utf-8?B?bDRudTFtd3h3Z2t4V0RWVkt4bVRtdWFzRG9pdjlEQUVQMWIrR2F6WFJFSGVY?= =?utf-8?B?Q3l0ZVpOcTN0VlNwL0Z6ZXhrOFFhellBd3kxeUNhS1QyQjhsdVo4bTdDeHNO?= =?utf-8?B?MEIzQXNKNzM3Y1A5KzNvanlJTFRlODhkTEV3MlNXZVd2NU1ldExWblB1a3pO?= =?utf-8?B?YzN2emhmMDBBaGNlcTlBaTRFc1IwNXQ5ekdUa1o3OS93eXZFTzZTbWVhLy84?= =?utf-8?B?SHhHRW5JM2dvYVVvUVZ0dkF4SHJKOHVaSERnQU82WmJ4WWRuWk43VUhrdnFE?= =?utf-8?B?Um5zQ28zajg0Zm4wejVWeGpuUU5qUWFoQ1RNV1hMdmlidGtkQ1JidzN2NUdh?= =?utf-8?B?ekZROFhXTHFaT24xMkJmYVJRNkpSMFJodmUwQkZScVNHZEcwQzZ4YThOZS82?= =?utf-8?B?NjdnRlAxb3V4SlZZWldWMXBvRHJ2WENXeUJvVGp4bW1PdjdYc3A1Ukh5UVVo?= =?utf-8?B?N2NQcVU2L2ZONldEdmtMTkRCVmF0UXBOOWF4WFRTVWhDS1BqaGVScjJoancz?= =?utf-8?B?ZHZ3N3huMy8yUGNCRFZCb0dnK0Q0UEUrVXJ2TDVjQnNlV1pCbVlCbEl1Titw?= =?utf-8?B?c2xvalJRbDh2VytmZkErbG5JaHA4VitUOWRwYU1icVlmcmtNRHJmem42blMy?= =?utf-8?B?bW8vUGgxbmE1WklmNmU1a25rMElPVXZpQkFCNlFSV0poS1pXbU1MTWp4WUVw?= =?utf-8?B?SDU5ZVhLd3J3cDZIYXZoOG01QTFhZWlMVFhQUTdzcUNhV2JEd1BWTnkxT3lP?= =?utf-8?B?NFFFWFZ3WDBTV2pEYXR4NWhnL2JMN2t2NTN5NmdXdmJEUkdoeTlTc0xsOXhN?= =?utf-8?B?V3JqalJ6TUo0S3IyQWhFckZhd3lyU3ZpMHc4cHgwS2NVMHVRckRzTEdhQUpR?= =?utf-8?B?Vjh2Q3IwL2o4aUFjM01PR1FiaGpoRGJBYkJrLytlUmpjclRZZWNiajdrdS9v?= =?utf-8?B?ZEVPV2MwTUFsL0J3Wm9aRWp6S2FDVWxvTnF5QU5zQXozZFVueTlBRG9abVlJ?= =?utf-8?B?MERHd0hyeFppQVpZTytIY3RaUkhwMGJ6dlBIZHowM1FocE9GRXVDWTBUVWx1?= =?utf-8?B?UzQvYi9WMEFEaWFFQzkvQm40NnJBMnBRRHpsWExYRWFsdHd5WmVQWkkwWkxh?= =?utf-8?B?dmQrbHptNnZhWDBaRGh2WDhGK0FVRVBJQzBZNFJOUzd4eVlVOWNWTGVLVVBS?= =?utf-8?B?MTN1bE9MaHgvSWJxWkpkTjliUmVldVRXMktsMzRDaEJVaDRJbzZEajRxMk1t?= =?utf-8?B?S3ZVMDdsMXJzWGVvWkcrUGVySEswa2xTaldLblFTY2VDQWtWdk8vSmNtcEtJ?= =?utf-8?B?c1A4aEp6ZmpFMlpQUVpOK2QrOFh2TmNNSm9JSE45emcxVkQ0Q3V4V1JHdkdT?= =?utf-8?B?alRXdGM3NGFpR0NFay9STjJOb3gwMUsxN2NzdEhJcjZmVnZ0S3FXQW1yOVVX?= =?utf-8?B?MVAzSlVXQ1VCdzRVOU5qV3RnQU10M1JIT3ZvOWs4WXBxV2ZvOWFpdUJBKzBh?= =?utf-8?B?NDErb0E4M3o4Y3FtNzBxeGNxcldTTFJISVVreWM5L2xhTEpuQTY2WTIrYmta?= =?utf-8?Q?8ctw=3D?= MIME-Version: 1.0 X-OriginatorOrg: ami.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BLAPR10MB5185.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 595604a8-04ac-4276-facd-08dbda8a1644 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2023 03:24:41.6888 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 27e97857-e15f-486c-b58e-86c2b3040f93 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: U1APUaTK/8cx6cMDoFADjuMg8M05QZw2fHFZZ06ABkWdtNQslXmsGIAOvYuIxfIh X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB5348 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,igork@ami.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: UQ9zBYqH4B5ArX6W6iFjUQiQx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=oI5Ws0qy; dmarc=none; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io SGkgTWlrZSwNClRoYW5rIHlvdSBmb3IgcmV2aWV3Lg0KUGxlYXNlIHNlZSBteSBhbnN3ZXJzIGJl bG93IHRoZSB0ZXh0Lg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogTWlrZSBN YXNsZW5raW4gPG1pa2UubWFzbGVua2luQGdtYWlsLmNvbT4NClNlbnQ6IFR1ZXNkYXksIE9jdG9i ZXIgMzEsIDIwMjMgOTowMCBQTQ0KVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBJZ29yIEt1bGNo eXRza3l5IDxpZ29ya0BhbWkuY29tPg0KQ2M6IEFibmVyIENoYW5nIDxhYm5lci5jaGFuZ0BhbWQu Y29tPjsgTmlja2xlIFdhbmcgPG5pY2tsZXdAbnZpZGlhLmNvbT4NClN1YmplY3Q6IFtFWFRFUk5B TF0gUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0hdIFJlZGZpc2hQa2c6IFJlZGZpc2hEaXNjb3ZlckR4 ZTogRml4IGlzc3VlIGlmIElQdjQgaW5zdGFsbGVkIGFmdGVyIFJlc3RFeA0KDQoNCioqQ0FVVElP TjogVGhlIGUtbWFpbCBiZWxvdyBpcyBmcm9tIGFuIGV4dGVybmFsIHNvdXJjZS4gUGxlYXNlIGV4 ZXJjaXNlIGNhdXRpb24gYmVmb3JlIG9wZW5pbmcgYXR0YWNobWVudHMsIGNsaWNraW5nIGxpbmtz LCBvciBmb2xsb3dpbmcgZ3VpZGFuY2UuKioNCg0KSGkgSWdvcg0KDQpwbGVhc2UgZmluZCBteSBj b21tZW50cyBiZWxvdy4NCg0KT24gVHVlLCBPY3QgMzEsIDIwMjMgYXQgODo1NuKAr1BNIElnb3Ig S3VsY2h5dHNreXkgdmlhIGdyb3Vwcy5pbw0KPGlnb3JrPWFtaS5jb21AZ3JvdXBzLmlvPiB3cm90 ZToNCj4NCj4gU3VwcG9ydGVkIGZ1bmN0aW9uIG9mIHRoZSBkcml2ZXIgY2hhbmdlZCB0byB3YWl0 IGZvciBhbGwgbmV3dHdvcmsNCj4gaW50ZXJmYWNlIHRvIGJlIGluc3RhbGxlZC4NCj4gRmlsZXIg b3V0IHRoZSBuZXR3b3JrIGludGVyZmFjZXMgd2hpY2ggYXJlIG5vdCBzdXBwb3J0ZWQgYnkNCj4g UmVkZmlzaCBIb3N0IEludGVyZmFjZS4NCj4NCj4gQ2M6IEFibmVyIENoYW5nIDxhYm5lci5jaGFu Z0BhbWQuY29tPg0KPiBDYzogTmlja2xlIFdhbmcgPG5pY2tsZXdAbnZpZGlhLmNvbT4NCj4gQ2M6 IElnb3IgS3VsY2h5dHNreXkgPGlnb3JrQGFtaS5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IElnb3Ig S3VsY2h5dHNreXkgPGlnb3JrQGFtaS5jb20+DQo+IC0tLQ0KPiAgUmVkZmlzaFBrZy9SZWRmaXNo RGlzY292ZXJEeGUvUmVkZmlzaERpc2NvdmVyRHhlLmMgfCA5NiArKysrKysrKysrKysrKysrKyst LQ0KPiAgMSBmaWxlIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pDQo+ DQo+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL1JlZGZpc2hEaXNjb3ZlckR4ZS9SZWRmaXNoRGlz Y292ZXJEeGUuYyBiL1JlZGZpc2hQa2cvUmVkZmlzaERpc2NvdmVyRHhlL1JlZGZpc2hEaXNjb3Zl ckR4ZS5jDQo+IGluZGV4IDIzZGEzYjk2OGYuLmE4OGFkNTU5MzggMTAwNjQ0DQo+IC0tLSBhL1Jl ZGZpc2hQa2cvUmVkZmlzaERpc2NvdmVyRHhlL1JlZGZpc2hEaXNjb3ZlckR4ZS5jDQo+ICsrKyBi L1JlZGZpc2hQa2cvUmVkZmlzaERpc2NvdmVyRHhlL1JlZGZpc2hEaXNjb3ZlckR4ZS5jDQo+IEBA IC0zMjIsOSArMzIyLDE1IEBAIEdldFRhcmdldE5ldHdvcmtJbnRlcmZhY2VJbnRlcm5hbCAoDQo+ ICB7DQo+ICAgIEVGSV9SRURGSVNIX0RJU0NPVkVSX05FVFdPUktfSU5URVJGQUNFX0lOVEVSTkFM ICAqVGhpc05ldHdvcmtJbnRlcmZhY2U7DQo+DQo+ICsgIGlmIChJc0xpc3RFbXB0eSgmbUVmaVJl ZGZpc2hEaXNjb3Zlck5ldHdvcmtJbnRlcmZhY2UpKSB7DQo+ICsgICAgcmV0dXJuIE5VTEw7DQo+ ICsgIH0NCj4gKw0KPiAgICBUaGlzTmV0d29ya0ludGVyZmFjZSA9IChFRklfUkVERklTSF9ESVND T1ZFUl9ORVRXT1JLX0lOVEVSRkFDRV9JTlRFUk5BTCAqKUdldEZpcnN0Tm9kZSAoJm1FZmlSZWRm aXNoRGlzY292ZXJOZXR3b3JrSW50ZXJmYWNlKTsNCj4gICAgd2hpbGUgKFRSVUUpIHsNCj4gLSAg ICBpZiAoQ29tcGFyZU1lbSAoKFZPSUQgKikmVGhpc05ldHdvcmtJbnRlcmZhY2UtPk1hY0FkZHJl c3MsICZUYXJnZXROZXR3b3JrSW50ZXJmYWNlLT5NYWNBZGRyZXNzLCBUaGlzTmV0d29ya0ludGVy ZmFjZS0+SHdBZGRyZXNzU2l6ZSkgPT0gMCkgew0KPiArICAgIGlmIChDb21wYXJlTWVtICgoVk9J RCAqKSZUaGlzTmV0d29ya0ludGVyZmFjZS0+TWFjQWRkcmVzcywgJlRhcmdldE5ldHdvcmtJbnRl cmZhY2UtPk1hY0FkZHJlc3MsIFRoaXNOZXR3b3JrSW50ZXJmYWNlLT5Id0FkZHJlc3NTaXplKSA9 PSAwICYmDQo+ICsgICAgICAgICgoVGFyZ2V0TmV0d29ya0ludGVyZmFjZS0+SXNJcHY2ICYmIFRo aXNOZXR3b3JrSW50ZXJmYWNlLT5OZXR3b3JrUHJvdG9jb2xUeXBlID09IFByb3RvY29sVHlwZVRj cDYpIHx8DQo+ICsgICAgICAgICAgICAoIVRhcmdldE5ldHdvcmtJbnRlcmZhY2UtPklzSXB2NiAm JiBUaGlzTmV0d29ya0ludGVyZmFjZS0+TmV0d29ya1Byb3RvY29sVHlwZSA9PSBQcm90b2NvbFR5 cGVUY3A0KSkpIHsNCj4gICAgICAgIHJldHVybiBUaGlzTmV0d29ya0ludGVyZmFjZTsNCj4gICAg ICB9DQo+DQo+IEBAIC0zNTQsNiArMzYwLDEwIEBAIEdldFRhcmdldE5ldHdvcmtJbnRlcmZhY2VJ bnRlcm5hbEJ5Q29udHJvbGxlciAoDQo+ICB7DQo+ICAgIEVGSV9SRURGSVNIX0RJU0NPVkVSX05F VFdPUktfSU5URVJGQUNFX0lOVEVSTkFMICAqVGhpc05ldHdvcmtJbnRlcmZhY2U7DQo+DQo+ICsg IGlmIChJc0xpc3RFbXB0eSgmbUVmaVJlZGZpc2hEaXNjb3Zlck5ldHdvcmtJbnRlcmZhY2UpKSB7 DQo+ICsgICAgcmV0dXJuIE5VTEw7DQo+ICsgIH0NCj4gKw0KDQpJIGFsc28gaGF2ZSB0aGVzZSB0 d28gaHVua3MgaW4gbXkgcGVuZGluZyBsaXN0Lg0KQnV0IEkgc3VnZ2VzdCB0byBhZGQgQVNTRVJU IHRvIEdldFRhcmdldE5ldHdvcmtJbnRlcmZhY2VJbnRlcm5hbCwganVzdA0KYmVjYXVzZSBjdXJy ZW50bHkgaXQgaXMgcmVhbGx5IGltcG9zc2libGUgc2l0dWF0aW9uLA0KYW5kIG1FZmlSZWRmaXNo RGlzY292ZXJOZXR3b3JrSW50ZXJmYWNlIHdhcyBjaGVja2VkIGJlZm9yZSBpbiBzY29wZSBvZg0K IFZhbGlkYXRlVGFyZ2V0TmV0d29ya0ludGVyZmFjZSgpLg0KDQpJZ29yOiBBZ3JlZS4NCkkgYWxz byBqdXN0IG5vdGljZWQgdGhhdCBldmVuIGlmIEdldFRhcmdldE5ldHdvcmtJbnRlcmZhY2VJbnRl cm5hbCBmdW5jdGlvbiBtYXkgcmV0dXJuIE5VTEwsIHRoZSByZXR1cm4gdmFsdWUgaXMgbm90IHZl cmlmaWVkIG9uIE5VTEwgaW4gUmVkZmlzaFNlcnZpY2VBY3F1aXJlU2VydmljZSBmdW5jdGlvbi4N CkkgdGhpbmsgd2Ugc2hvdWxkIGFkZCB0aGlzIHZlcmlmaWNhdGlvbi4NCg0KDQpBbHNvIEkgd29u ZGVyIHdoeSBjaGVjayBwYXRjaCBkb2Vzbid0IGNvbXBsYWluIGFib3V0IG1pc3NlZCBzcGFjZXMg aW4NCiJJc0xpc3RFbXB0eSAoJm1FZmlSZWRmaXNoRGlzY292ZXJOZXR3b3JrSW50ZXJmYWNlKSIg Y2FsbCBmb3IgZXhhbXBsZS4NCg0KPiAgICBUaGlzTmV0d29ya0ludGVyZmFjZSA9IChFRklfUkVE RklTSF9ESVNDT1ZFUl9ORVRXT1JLX0lOVEVSRkFDRV9JTlRFUk5BTCAqKUdldEZpcnN0Tm9kZSAo Jm1FZmlSZWRmaXNoRGlzY292ZXJOZXR3b3JrSW50ZXJmYWNlKTsNCj4gICAgd2hpbGUgKFRSVUUp IHsNCj4gICAgICBpZiAoVGhpc05ldHdvcmtJbnRlcmZhY2UtPk9wZW5Ecml2ZXJDb250cm9sbGVy SGFuZGxlID09IENvbnRyb2xsZXJIYW5kbGUpIHsNCj4gQEAgLTQ3Niw2ICs0ODYsMzggQEAgQ2hl Y2tJc0lwVmVyc2lvbjYgKA0KPiAgICByZXR1cm4gRkFMU0U7DQo+ICB9DQo+DQo+ICsvKioNCj4g KyAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSAgSVAgdHlwZSBzdXBwb3J0ZWQgYnkgdGhlIEhv c3QgSW50ZXJmYWNlDQo+ICsNCj4gKyAgQHJldHZhbCBJUCBUeXBlDQo+ICsgIC8vICBVbmtub3du PTAwaCwNCj4gKyAgLy8gIElwdjQ9MDFoLA0KPiArICAvLyAgSXB2Nj0wMmgsDQo+ICsNCj4gKyoq Lw0KPiArVUlOVDgNCg0KU1RBVElDID8NCklnb3I6IFdIWT8NCg0KPiArR2V0SGlJcFByb3RvY29s VHlwZSgpDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7 DQo+ICsgIFJFREZJU0hfT1ZFUl9JUF9QUk9UT0NPTF9EQVRBICAqRGF0YTsNCj4gKyAgUkVERklT SF9JTlRFUkZBQ0VfREFUQSAgICAgICAgICpEZXZpY2VEZXNjcmlwdG9yOw0KPiArDQo+ICsgIERh dGEgICAgICAgICAgICAgPSBOVUxMOw0KPiArICBEZXZpY2VEZXNjcmlwdG9yID0gTlVMTDsNCj4g KyAgaWYgKG1TbWJpb3MgPT0gTlVMTCkgew0KPiArICAgIFN0YXR1cyA9IGdCUy0+TG9jYXRlUHJv dG9jb2wgKCZnRWZpU21iaW9zUHJvdG9jb2xHdWlkLCBOVUxMLCAoVk9JRCAqKikmbVNtYmlvcyk7 DQo+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICAgcmV0dXJuIDA7DQoN CkluIHRoaXMgZHJpdmVyIFJFREZJU0hfSE9TVF9JTlRFUkZBQ0VfSE9TVF9JUF9BRERSRVNTX0ZP Uk1BVF9JUHs0LDZ9DQp1c2VkIGFuZCBhY2Nlc3NpYmxlLg0Kc28sIDAgbWVhbnMgIFJFREZJU0hf SE9TVF9JTlRFUkZBQ0VfSE9TVF9JUF9BRERSRVNTX0ZPUk1BVF9VTktOT1dODQpBbmQgdGhlc2Ug dmFsdWVzIGFjdHVhbGx5IGNoZWNrZWQgaW4gc2NvcGUgb2YgQnVpbGR1cE5ldHdvcmtJbnRlcmZh Y2UoKSBiZWxvdy4NCklnb3I6IFRoYW5rIHlvdS4gTWlzc2VkIHRoYXQgbWFjcm8uDQoNCj4gKyAg ICB9DQo+ICsgIH0NCj4gKyAgU3RhdHVzID0gUmVkZmlzaEdldEhvc3RJbnRlcmZhY2VQcm90b2Nv bERhdGEgKG1TbWJpb3MsICZEZXZpY2VEZXNjcmlwdG9yLCAmRGF0YSk7IC8vIFNlYXJjaCBmb3Ig U01CSU9TIHR5cGUgNDJoDQo+ICsgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpICYmIChEYXRhICE9 IE5VTEwpICYmDQo+ICsgICAgICAoRGF0YS0+SG9zdElwQXNzaWdubWVudFR5cGUgPT0gUmVkZmlz aEhvc3RJcEFzc2lnbm1lbnRTdGF0aWMpKSB7DQo+ICsgICAgICByZXR1cm4gRGF0YS0+SG9zdElw QWRkcmVzc0Zvcm1hdDsNCj4gKyAgfQ0KPiArICByZXR1cm4gMDsNCg0KU2FtZSBoZXJlLCAwIGlz IGEgbWFnaWMgdmFsdWUgZm9yDQpSRURGSVNIX0hPU1RfSU5URVJGQUNFX0hPU1RfSVBfQUREUkVT U19GT1JNQVRfVU5LTk9XTg0KDQo+ICt9DQo+ICsNCj4gIC8qKg0KPiAgICBUaGlzIGZ1bmN0aW9u IGRpc2NvdmVyIFJlZGZpc2ggc2VydmljZSB0aHJvdWdoIFNNQklPUyBob3N0IGludGVyZmFjZS4N Cj4NCj4gQEAgLTUxMiw2ICs1NTQsMTUgQEAgRGlzY292ZXJSZWRmaXNoSG9zdEludGVyZmFjZSAo DQo+DQo+ICAgIFN0YXR1cyA9IFJlZGZpc2hHZXRIb3N0SW50ZXJmYWNlUHJvdG9jb2xEYXRhICht U21iaW9zLCAmRGV2aWNlRGVzY3JpcHRvciwgJkRhdGEpOyAvLyBTZWFyY2ggZm9yIFNNQklPUyB0 eXBlIDQyaA0KPiAgICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSAmJiAoRGF0YSAhPSBOVUxMKSAm JiAoRGV2aWNlRGVzY3JpcHRvciAhPSBOVUxMKSkgew0KPiArDQo+ICsgICAgaWYgKEluc3RhbmNl LT5OZXR3b3JrSW50ZXJmYWNlLT5OZXR3b3JrUHJvdG9jb2xUeXBlID09IFByb3RvY29sVHlwZVRj cDQgJiYgRGF0YS0+SG9zdElwQWRkcmVzc0Zvcm1hdCAhPSBSRURGSVNIX0hPU1RfSU5URVJGQUNF X0hPU1RfSVBfQUREUkVTU19GT1JNQVRfSVA0KSB7IC8vIElQdjQgY2FzZQ0KPiArICAgICAgREVC VUcoKERFQlVHX0VSUk9SLCAiJWE6IE5ldHdvcmsgSW50ZXJmYWNlIGlzIElQdjQsIGJ1dCBIb3N0 IEludGVyZmFjZSByZXF1aXJlcyBJcHY2XG4iKSk7DQoNCk1pc3NlZCBhcmd1bWVudCBmb3IgJWEg Zm9ybWF0DQpNaXNzZWQgc3BhY2UgIkRFQlVHICgoIg0KDQpJZ29yOiBJbmF0dGVudGl2ZW5lc3Mu IFRoYW5rIHlvdS4NCg0KPiArICAgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gKyAgICB9 DQo+ICsgICAgZWxzZSBpZiAoSW5zdGFuY2UtPk5ldHdvcmtJbnRlcmZhY2UtPk5ldHdvcmtQcm90 b2NvbFR5cGUgPT0gUHJvdG9jb2xUeXBlVGNwNiAmJiBEYXRhLT5Ib3N0SXBBZGRyZXNzRm9ybWF0 ICE9IFJFREZJU0hfSE9TVF9JTlRFUkZBQ0VfSE9TVF9JUF9BRERSRVNTX0ZPUk1BVF9JUDYpIHsg Ly8gSVB2NiBjYXNlDQo+ICsgICAgICBERUJVRygoREVCVUdfRVJST1IsICIlYTogTmV0d29yayBJ bnRlcmZhY2UgaXMgSVB2NiwgYnV0IEhvc3QgSW50ZXJmYWNlIHJlcXVpcmVzIElQdjRcbiIpKTsN Cg0KTWlzc2VkIGFyZ3VtZW50IGZvciAlYSBmb3JtYXQNCk1pc3NlZCBzcGFjZSAiREVCVUcgKCgi DQoNCklnb3I6IEluYXR0ZW50aXZlbmVzcy4gVGhhbmsgeW91Lg0KDQo+ICsgICAgICByZXR1cm4g RUZJX1VOU1VQUE9SVEVEOw0KPiArICAgIH0NCj4gICAgICAvLw0KPiAgICAgIC8vIENoZWNrIGlm IHdlIGNhbiByZWFjaCBvdXQgUmVkZmlzaCBzZXJ2aWNlIHVzaW5nIHRoaXMgbmV0d29yayBpbnRl cmZhY2UuDQo+ICAgICAgLy8gQ2hlY2sgd2l0aCBNQUMgYWRkcmVzcyB1c2luZyBEZXZpY2UgRGVz Y3JpcHRvciBEYXRhIERldmljZSBUeXBlIDA0IGFuZCBUeXBlIDA1Lg0KPiBAQCAtMTEwMiw2ICsx MTUzLDcgQEAgUmVkZmlzaFNlcnZpY2VHZXROZXR3b3JrSW50ZXJmYWNlICgNCj4gICAgT1VUIEVG SV9SRURGSVNIX0RJU0NPVkVSX05FVFdPUktfSU5URVJGQUNFICAqKk5ldHdvcmtJbnRmSW5zdGFu Y2VzDQo+ICAgICkNCj4gIHsNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gICAgRUZJX1JFREZJU0hfRElTQ09WRVJfTkVUV09S S19JTlRFUkZBQ0VfSU5URVJOQUwgICpUaGlzTmV0d29ya0ludGVyZmFjZUludG47DQo+ICAgIEVG SV9SRURGSVNIX0RJU0NPVkVSX05FVFdPUktfSU5URVJGQUNFICAgICAgICAgICAqVGhpc05ldHdv cmtJbnRlcmZhY2U7DQo+ICAgIEVGSV9SRURGSVNIX0RJU0NPVkVSX1JFU1RfRVhfSU5TVEFOQ0Vf SU5URVJOQUwgICAqUmVzdEV4SW5zdGFuY2U7DQo+IEBAIC0xMTQxLDYgKzExOTMsMTYgQEAgUmVk ZmlzaFNlcnZpY2VHZXROZXR3b3JrSW50ZXJmYWNlICgNCj4NCj4gICAgVGhpc05ldHdvcmtJbnRl cmZhY2VJbnRuID0gKEVGSV9SRURGSVNIX0RJU0NPVkVSX05FVFdPUktfSU5URVJGQUNFX0lOVEVS TkFMICopR2V0Rmlyc3ROb2RlICgmbUVmaVJlZGZpc2hEaXNjb3Zlck5ldHdvcmtJbnRlcmZhY2Up Ow0KPiAgICB3aGlsZSAoVFJVRSkgew0KPiArICAgIC8vIElmIEdldCBTdWJuZXQgSW5mbyBza2lw IHRoaXMgaW50ZXJmYWNlDQo+ICsgICAgU3RhdHVzID0gTmV0d29ya0ludGVyZmFjZUdldFN1Ym5l dEluZm8gKFRoaXNOZXR3b3JrSW50ZXJmYWNlSW50biwgSW1hZ2VIYW5kbGUpOyAvLyBHZXQgc3Vi bmV0IGluZm8NCj4gKyAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsNCj4gKyAgICAgIGlmIChJ c05vZGVBdEVuZCAoJm1FZmlSZWRmaXNoRGlzY292ZXJOZXR3b3JrSW50ZXJmYWNlLCAmVGhpc05l dHdvcmtJbnRlcmZhY2VJbnRuLT5FbnRyeSkpIHsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAg ICB9DQo+ICsgICAgICBUaGlzTmV0d29ya0ludGVyZmFjZUludG4gPSAoRUZJX1JFREZJU0hfRElT Q09WRVJfTkVUV09SS19JTlRFUkZBQ0VfSU5URVJOQUwgKilHZXROZXh0Tm9kZSAoJm1FZmlSZWRm aXNoRGlzY292ZXJOZXR3b3JrSW50ZXJmYWNlLCAmVGhpc05ldHdvcmtJbnRlcmZhY2VJbnRuLT5F bnRyeSk7DQo+ICsgICAgICBjb250aW51ZTsNCj4gKyAgICB9DQo+ICsNCj4gICAgICBUaGlzTmV0 d29ya0ludGVyZmFjZS0+SXNJcHY2ID0gRkFMU0U7DQo+ICAgICAgaWYgKENoZWNrSXNJcFZlcnNp b242IChUaGlzTmV0d29ya0ludGVyZmFjZUludG4pKSB7DQo+ICAgICAgICBUaGlzTmV0d29ya0lu dGVyZmFjZS0+SXNJcHY2ID0gVFJVRTsNCj4gQEAgLTEyNjAsNyArMTMyMiwxMiBAQCBSZWRmaXNo U2VydmljZUFjcXVpcmVTZXJ2aWNlICgNCj4gICAgICAgIC8vIEdldCBzdWJuZXQgaW5mb3JtYXRp b24gaW4gY2FzZSBzdWJuZXQgaW5mb3JtYXRpb24gaXMgbm90IHNldCBiZWNhdXNlDQo+ICAgICAg ICAvLyBSZWRmaXNoU2VydmljZUdldE5ldHdvcmtJbnRlcmZhY2VzIGhhc24ndCBiZWVuIGNhbGxl ZCB5ZXQuDQo+ICAgICAgICAvLw0KPiAtICAgICAgTmV0d29ya0ludGVyZmFjZUdldFN1Ym5ldElu Zm8gKFRhcmdldE5ldHdvcmtJbnRlcmZhY2VJbnRlcm5hbCwgSW1hZ2VIYW5kbGUpOw0KPiArICAg ICAgU3RhdHVzMSA9IE5ldHdvcmtJbnRlcmZhY2VHZXRTdWJuZXRJbmZvIChUYXJnZXROZXR3b3Jr SW50ZXJmYWNlSW50ZXJuYWwsIEltYWdlSGFuZGxlKTsNCj4gKyAgICAgIGlmIChFRklfRVJST1Io U3RhdHVzMSkpIHsNCj4gKyAgICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBHZXQgc3Vi bmV0IGluZm9ybWF0aW9uIGZhaWwuXG4iLCBfX2Z1bmNfXykpOw0KPiArICAgICAgICBGcmVlUG9v bChJbnN0YW5jZSk7DQo+ICsgICAgICAgIGNvbnRpbnVlOw0KPiArICAgICAgfQ0KPiAgICAgICAg TmV3SW5zdGFuY2UgPSBUUlVFOw0KPiAgICAgIH0NCj4NCj4gQEAgLTE1MzUsNyArMTYwMiw3IEBA IFRlc3RGb3JSZXF1aXJlZFByb3RvY29scyAoDQo+ICAgIFVJTlQzMiAgICAgICpJZDsNCj4gICAg VUlOVE4gICAgICAgSW5kZXg7DQo+ICAgIEVGSV9TVEFUVVMgIFN0YXR1czsNCj4gLSAgVUlOVE4g ICAgICAgTGlzdENvdW50Ow0KPiArICBVSU5UTiAgICAgICBMaXN0Q291bnQsIFN1Y2Nlc3NmdWxD b3VudCA9IDA7DQo+DQo+ICAgIExpc3RDb3VudCA9IChzaXplb2YgKGdSZXF1aXJlZFByb3RvY29s KSAvIHNpemVvZiAoUkVERklTSF9ESVNDT1ZFUl9SRVFVSVJFRF9QUk9UT0NPTCkpOw0KPiAgICBm b3IgKEluZGV4ID0gMDsgSW5kZXggPCBMaXN0Q291bnQ7IEluZGV4KyspIHsNCj4gQEAgLTE1NTcs MTMgKzE2MjQsMTQgQEAgVGVzdEZvclJlcXVpcmVkUHJvdG9jb2xzICgNCj4gICAgICAgICAgICAg ICAgICAgICAgICBFRklfT1BFTl9QUk9UT0NPTF9HRVRfUFJPVE9DT0wNCj4gICAgICAgICAgICAg ICAgICAgICAgICApOw0KPiAgICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiAtICAg ICAgICBpZiAoSW5kZXggPT0gTGlzdENvdW50IC0gMSkgew0KPiAtICAgICAgICAgIERFQlVHICgo REVCVUdfSU5GTywgIiVhOiBhbGwgcmVxdWlyZWQgcHJvdG9jb2xzIGFyZSBmb3VuZCBvbiB0aGlz IGNvbnRyb2xsZXIgaGFuZGxlOiAlcC5cbiIsIF9fZnVuY19fLCBDb250cm9sbGVySGFuZGxlKSk7 DQo+IC0gICAgICAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiAtICAgICAgICB9DQo+ICsgICAg ICAgIFN1Y2Nlc3NmdWxDb3VudCsrOw0KPiAgICAgICAgfQ0KSXQgbWF5IGJlIFN1Y2Nlc3NmdWxD b3VudCBtdXN0IGhhdmUgb25lIGluZGVudGF0aW9uIGxlc3MsIGkuZSBpbiBzY29wZQ0Kb2YgIHVw cGVyICJpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgeyIsIG5vdCBpbiBzY29wZSBvZiAiaWYgKEVG SV9FUlJPUg0KKFN0YXR1cykpIHsiIGluIGNvbnRleHQuDQoNCklnb3I6IFdlIG5lZWQgVGVzdEZv clJlcXVpcmVkUHJvdG9jb2xzIHJldHVybiBTVUNDRVNTIHdoZW4gYWxsIHByb3RvY29scyBsaXN0 ZWQgaW4gZ1JlcXVpcmVkUHJvdG9jb2wgaW5zdGFsbGVkLg0KV2hlbiB0aGlzIGhhcHBlbmVkIHRo ZSBCdWlsZHVwTmV0d29ya0ludGVyZmFjZSBmdW5jdGlvbiB3b3VsZCBiZSBjYWxsZWQsIGFuZCB3 ZSBpdGVyYXRlIHRocm91Z2ggZ1JlcXVpcmVkUHJvdG9jb2wgYXJyYXkgYW5kIGJ1aWxkIG5ldHdv cmsgaW50ZXJmYWNlcy4NCldlIGFsc28gaW5zdGFsbCBEaXNjb3ZlcmVkUHJvdG9jb2xHdWlkIHRv IHByZXZlbnQgQnVpbGR1cE5ldHdvcmtJbnRlcmZhY2UgdG8gYmUgY2FsbGVkIGFmdGVyIHRoYXQu DQpJZiB3ZSBoYXZlIFN1Y2Nlc3NmdWxDb3VudCBpbiBzY29wZSBvZiAgdXBwZXIgImlmICghRUZJ X0VSUk9SIChTdGF0dXMpKSB7IiwgdGhlbiBCdWlsZHVwTmV0d29ya0ludGVyZmFjZSB3aWxsIGJl IGNhbGxlZCBpZiBzb21ldGhpbmcgaW5zdGFsbGVkIG9uIHRoYXQgQ29udHJvbGxlckhhbmRsZSwg bGlrZSBETlMgcHJvdG9jb2wsIGZvciBleGFtcGxlLg0KDQo+ICAgICAgfQ0KPiAgICB9DQo+ICsg IGlmIChMaXN0Q291bnQgPT0gU3VjY2Vzc2Z1bENvdW50KSB7DQo+ICsgICAgREVCVUcgKChERUJV R19JTkZPLCAiJWE6IGFsbCByZXF1aXJlZCBwcm90b2NvbHMgYXJlIGZvdW5kIG9uIHRoaXMgY29u dHJvbGxlciBoYW5kbGU6ICVwLlxuIiwgX19mdW5jX18sIENvbnRyb2xsZXJIYW5kbGUpKTsNCj4g KyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICsgIH0NCj4NCj4gICAgcmV0dXJuIEVGSV9VTlNV UFBPUlRFRDsNCj4gIH0NCj4gQEAgLTE2MDAsMTAgKzE2NjgsMjQgQEAgQnVpbGR1cE5ldHdvcmtJ bnRlcmZhY2UgKA0KPiAgICBFRklfUkVERklTSF9ESVNDT1ZFUl9SRVNUX0VYX0lOU1RBTkNFX0lO VEVSTkFMICAgKlJlc3RFeEluc3RhbmNlOw0KPiAgICBFRklfVFBMICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT2xkVHBsOw0KPiAgICBCT09MRUFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3TmV0d29ya0ludGVyZmFjZUluc3RhbGxl ZDsNCj4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IElwVHlwZTsNCj4NCj4gICAgTmV3TmV0d29ya0ludGVyZmFjZUluc3RhbGxlZCA9IEZBTFNFOw0K PiAgICBJbmRleCAgICAgICAgICAgICAgICAgICAgICAgID0gMDsNCj4gKw0KPiArDQo+ICsgIC8v IEdldCBJUCBUeXBlIHRvIGZpbHRlciBvdXQgdW5uZWNlc3NhcnkgbmV0d29yayBwcm90b2NvbCBp ZiBwb3NzaWJsZQ0KPiArICBJcFR5cGUgPSBHZXRIaUlwUHJvdG9jb2xUeXBlKCk7DQo+ICsNCj4g ICAgZG8gew0KPiArICAgIC8vIENoZWNrIElQIFR5cGUgYW5kIHNraXAgYW4gdW5uZWNlc3Nhcnkg bmV0d29yayBwcm90b2NvbCBpZiBkb2VzIG5vdCBtYXRjaA0KPiArICAgIGlmIChJcFR5cGUgIT0g MCkgew0KDQpJcFR5cGUgaXMgaW52YXJpYW50IHRvIHRoaXMgbG9vcC4NCkVpaGVyIHdlIG1heSBj aGVjayBpdCdzIHZhbHVlIGJlZm9yZSB0aGUgbG9vcCBvciB3ZSBjYW4ganVzdCBkcm9wIGl0LA0K YmVjYXVzZSAiJiYgSXBUeXBlID09DQpSRURGSVNIX0hPU1RfSU5URVJGQUNFX0hPU1RfSVBfQURE UkVTU19GT1JNQVRfSVB7NCw2fSINCmlzIGVxdWFsIHRvICJJcFR5cGUgIT0gMCIgRG8gSSBtaXNz IHNvbWV0aGluZz8NCg0KSWdvcjogWW91IGFyZSByaWdodC4gQ2FuIGJlIGRyb3BwZWQuDQoNCj4g KyAgICAgIGlmICgoZ1JlcXVpcmVkUHJvdG9jb2xbSW5kZXhdLlByb3RvY29sVHlwZSA9PSBQcm90 b2NvbFR5cGVUY3A0ICYmIElwVHlwZSA9PSBSRURGSVNIX0hPU1RfSU5URVJGQUNFX0hPU1RfSVBf QUREUkVTU19GT1JNQVRfSVA2KSB8fA0KPiArICAgICAgICAgIChnUmVxdWlyZWRQcm90b2NvbFtJ bmRleF0uUHJvdG9jb2xUeXBlID09IFByb3RvY29sVHlwZVRjcDYgJiYgSXBUeXBlID09IFJFREZJ U0hfSE9TVF9JTlRFUkZBQ0VfSE9TVF9JUF9BRERSRVNTX0ZPUk1BVF9JUDQpKSB7DQo+ICsgICAg ICAgIEluZGV4Kys7DQoNCk9wcy4gWW91IGNhbiBub3QgZG8ganVzdCAgeyBJbmRleCsrO2NvbnRp bnVlIH0NCllvdSBuZWVkDQp7DQogICAgICBJbmRleCsrOw0KICAgICAgaWYgKEluZGV4ID09IChz aXplb2YgKGdSZXF1aXJlZFByb3RvY29sKSAvIHNpemVvZg0KKFJFREZJU0hfRElTQ09WRVJfUkVR VUlSRURfUFJPVE9DT0wpKSkgew0KICAgICAgICBicmVhazsNCiAgICAgIH0NCiAgICAgIGNvbnRp bnVlOw0KfQ0KDQpJZ29yOiBjb250aW51ZSBzdGF0ZW1lbnQgY2F1c2VzIHRoZSBwcm9ncmFtIGNv bnRyb2wgdG8gcGFzcyB0byB0aGUgY29uZGl0aW9uYWwgdGVzdHMuIFNvLCBJbmRleCB3aWxsIGJl IHZlcmlmaWVkIGluIHdoaWxlIGNoZWNrLg0KDQpJdCdzIGEgdGVycmlibGUgZnVuY3Rpb24uIEkg aGF2ZSBhIHBhdGNoLCB0aGF0IGltcHJvdmVzIHRoaXMgbG9vcDoNCmh0dHBzOi8vZ2l0aHViLmNv bS9naGJhY2NvdW50L2VkazIvY29tbWl0L2FkYzMyMThkM2Q5NjA4M2M4NWNlZjZjMzk2ZGRlOGRk Yjk2NTMwZmINCg0KPiArICAgICAgICBjb250aW51ZTsNCj4gKyAgICAgIH0NCj4gKyAgICB9DQo+ ICAgICAgU3RhdHVzID0gZ0JTLT5PcGVuUHJvdG9jb2wgKA0KPiAgICAgICAgICAgICAgICAgICAg ICAvLyBBbHJlYWR5IGluIGxpc3Q/DQo+ICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXJI YW5kbGUsDQo+IC0tDQo+IDIuMzcuMS53aW5kb3dzLjENCg0KUmVnYXJkcywNCk1pa2UuDQotVGhl IGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0aGlzIG1lc3NhZ2UgbWF5IGJlIGNvbmZpZGVudGlh bCBhbmQgcHJvcHJpZXRhcnkgdG8gQW1lcmljYW4gTWVnYXRyZW5kcyAoQU1JKS4gVGhpcyBjb21t dW5pY2F0aW9uIGlzIGludGVuZGVkIHRvIGJlIHJlYWQgb25seSBieSB0aGUgaW5kaXZpZHVhbCBv ciBlbnRpdHkgdG8gd2hvbSBpdCBpcyBhZGRyZXNzZWQgb3IgYnkgdGhlaXIgZGVzaWduZWUuIElm IHRoZSByZWFkZXIgb2YgdGhpcyBtZXNzYWdlIGlzIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50 LCB5b3UgYXJlIG9uIG5vdGljZSB0aGF0IGFueSBkaXN0cmlidXRpb24gb2YgdGhpcyBtZXNzYWdl LCBpbiBhbnkgZm9ybSwgaXMgc3RyaWN0bHkgcHJvaGliaXRlZC4gUGxlYXNlIHByb21wdGx5IG5v dGlmeSB0aGUgc2VuZGVyIGJ5IHJlcGx5IGUtbWFpbCBvciBieSB0ZWxlcGhvbmUgYXQgNzcwLTI0 Ni04NjAwLCBhbmQgdGhlbiBkZWxldGUgb3IgZGVzdHJveSBhbGwgY29waWVzIG9mIHRoZSB0cmFu c21pc3Npb24uDQoNCgotPS09LT0tPS09LT0tPS09LT0tPS09LQpHcm91cHMuaW8gTGlua3M6IFlv dSByZWNlaXZlIGFsbCBtZXNzYWdlcyBzZW50IHRvIHRoaXMgZ3JvdXAuClZpZXcvUmVwbHkgT25s aW5lICgjMTEwNDY0KTogaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL21lc3NhZ2UvMTEw NDY0Ck11dGUgVGhpcyBUb3BpYzogaHR0cHM6Ly9ncm91cHMuaW8vbXQvMTAyMzAzMTA1Lzc2ODYx NzYKR3JvdXAgT3duZXI6IGRldmVsK293bmVyQGVkazIuZ3JvdXBzLmlvClVuc3Vic2NyaWJlOiBo dHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvdW5zdWIgW3JlYmVjY2FAb3BlbmZ3LmlvXQot PS09LT0tPS09LT0tPS09LT0tPS09LQoKDQo=