From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) by mx.groups.io with SMTP id smtpd.web11.5095.1612427745408697766 for ; Thu, 04 Feb 2021 00:35:45 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@hpe.com header.s=pps0720 header.b=iM4yFZXB; spf=pass (domain: hpe.com, ip: 148.163.143.35, mailfrom: prvs=066963e218=abner.chang@hpe.com) Received: from pps.filterd (m0150244.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 1148SvCF025051 for ; Thu, 4 Feb 2021 08:35:44 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=pps0720; bh=+ZwUEZwKVdmWVsJD/LMVo0qQCtMfLevsHC64f9IyYAw=; b=iM4yFZXBdt/URKRAEdTavizDWlqYx9Mev1wZRwjZhg17hVQa2dS6Fj0QOvmtTByuOUVq 8svp1B+noKE0oK/u411U5Z58/a5APqO2tB4nn2AFsRDi6TF2qyyXGFO6gacDPyWsb6Ku VlHoNjZS7ppXLaQGalRww+qcAIejgmcoxjI0bAaI7J8Fi2K6BOuw8PbxPMIbkGCw6ZHN GZni9GXrVqaNlJLBgi+2LwFGoucm2QMFvMXdUCATWXZ9bPQa6Wg7j8NfZwEFNcn5uRiQ o0BNvtM4IwBBbqH2etfiRZi9jMTWvWdofOIehf892tCcY/Uo3dWeuXWQYWLOTGzODUDY qg== Received: from g9t5009.houston.hpe.com (g9t5009.houston.hpe.com [15.241.48.73]) by mx0b-002e3701.pphosted.com with ESMTP id 36frrkt68k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 04 Feb 2021 08:35:43 +0000 Received: from G1W8106.americas.hpqcorp.net (g1w8106.austin.hp.com [16.193.72.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g9t5009.houston.hpe.com (Postfix) with ESMTPS id E50D070 for ; Thu, 4 Feb 2021 08:35:42 +0000 (UTC) Received: from G9W8672.americas.hpqcorp.net (16.220.49.31) by G1W8106.americas.hpqcorp.net (16.193.72.61) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 4 Feb 2021 08:35:42 +0000 Received: from G9W9210.americas.hpqcorp.net (2002:10dc:429b::10dc:429b) by G9W8672.americas.hpqcorp.net (2002:10dc:311f::10dc:311f) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 4 Feb 2021 08:35:42 +0000 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (15.241.52.13) by G9W9210.americas.hpqcorp.net (16.220.66.155) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Thu, 4 Feb 2021 08:35:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mlg5GOqOy+MFTiPf4cOga+5WGYRYpBWEpZmPbNfv7NvWuxQMBXeY79nUqmA9dEpf8mVCLtZbuoN21RxErOH+RLuCCzEjTrln5JxVl5ddQQdkjqNlJ2tWiZKiluyMszGEV65ivX1K/nxYQjFkqGwyXkWG14Yq7SKyvnB9QAtxKmwe4B9NVMuyEyZD0ksF4h1o9AkOxH2ntn5gF1JcM4h6nuNkH+YpzsHTi/8xeuatqef4+9fm5p5N4sYgmVtYk0WpzlSQL442mPLEU/Tfei02VM79GcsnGDRYb02pDYWnAImxKePWQlIKsRDS2YgqEVfWlY0w/qM24um9xcJn6AgIxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=u6ktlFI0fyX7MwwYPElevkC0+JlrFbQ7qQ7cB6cwUmM=; b=XCWVmOa+D1p/o+0qN8I1Xl8JIjH/ZrKHVzv/ezhjN86+J4T7k03ZisbbMb5A7qOO2UPDW9oPAG5E0or+T0w28meInQnPxa8MiN8v1FGu0cHVCx63YBXdfXsLjDULQIMP6YMLzF+zEINwihjh3zuQeVYUqtBdBGQwjUABt0Fk0mBq/10t0JMX1SqVYWUyz9LulH1O/pyy29R5MQcgmnqNaQR9YUl0NIWSMXaQI7P/UUbuggcFkvhCaB0ZFC6mmmMNbmsGb3Dqq+PB7jBeKUZ2dX3Qd1qa3KxM7hep3nLsg7KC0Dsc3/l6PoYTvTdbOjU9BJOPy9o4Jsam4Bf4CBIZgw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none Received: from CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7508::16) by CS1PR8401MB0952.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7512::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3805.16; Thu, 4 Feb 2021 08:35:40 +0000 Received: from CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM ([fe80::adb6:a875:93ca:b54a]) by CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM ([fe80::adb6:a875:93ca:b54a%12]) with mapi id 15.20.3805.028; Thu, 4 Feb 2021 08:35:40 +0000 From: "Abner Chang" To: "devel@edk2.groups.io" , "dandan.bi@intel.com" CC: "'Dong, Eric'" , "Wang, Nickle (HPS SW)" Subject: Re: [edk2-devel] [PATCH v3] MdeModulePkg/Library: Add HiiGetStringEx to UefiHiiLib for EDK2 Redfish Thread-Topic: [edk2-devel] [PATCH v3] MdeModulePkg/Library: Add HiiGetStringEx to UefiHiiLib for EDK2 Redfish Thread-Index: AQHW+E38alKsDp1akUCgbH27fkLXf6pGTecwgABAqICAAQtOgIAAFaqy Date: Thu, 4 Feb 2021 08:35:40 +0000 Message-ID: References: <20210201030542.22997-1-abner.chang@hpe.com> ,<006401d6fac5$3d48f0a0$b7dad1e0$@byosoft.com.cn> In-Reply-To: <006401d6fac5$3d48f0a0$b7dad1e0$@byosoft.com.cn> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=hpe.com; x-originating-ip: [42.74.106.21] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 39658090-7e3f-4c86-fc9b-08d8c8e7da9f x-ms-traffictypediagnostic: CS1PR8401MB0952: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:276; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: IZaj90AZAIZdFxTmbFJucZ9fSHMvsKbZOCm24xCTT5eyEGEoDzqre1pavD6zl45de+hxRz+v0NkjHA+ZVlijejvOiJr3XYqQqg6qowAd6ESgpg4pqdRZQIKuXdCBfk81IMY/EjBqWfpvfhB6TXeFpg+FpZjpRybaC8TeG+C+sCGS54KDUKZK9E57KubpbjYVALGb4yDFxRQbSNQDxpC18HxugLZ2Y8YoA0DLHuWhWkSh/ymgBTPJAEXTvhcgBwEkGBNAjt7E0Pwz/vmHcAWWp0/yimCNXobrNzS8Fb4yMLtT2eUQFrkyAEuCiUj4tx53fvZApVDVYtj7ESJDT+ZEXVcSSanWlrb6gGKVhxXqvJ9MhRico0yQTqrnKjvkC5nGbD5U5Y4Rx6M2by39CDcSHzsX08pHkJN2+JxmTr6Q3raQj1v6I3bWImtNzVfYg+A73UQ8Si24U8p5gCajmqN1Pgl1t+yUFx9gowKF57tugqi05EdTMw2HueA/WIq71IJ13ObRYykxXlkzpopeFDU0GR1+TqZciRKgTBd5d2eBv7Nx1yFDT8KFJRmGzfzLJVi8jDFhEuG2bHbUO7JPWO1I/fnNFBIed6dzYs9aQp50wpw= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(39860400002)(396003)(366004)(346002)(136003)(376002)(110136005)(66446008)(186003)(8676002)(71200400001)(66476007)(26005)(64756008)(53546011)(55016002)(8936002)(33656002)(9686003)(4326008)(478600001)(91956017)(83380400001)(66946007)(54906003)(7696005)(966005)(2906002)(30864003)(166002)(5660300002)(52536014)(45080400002)(316002)(66556008)(86362001)(6506007)(76116006);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?gb2312?B?NFVUQi9taVZ1SG9MYjdTdUtrMFVrUzlRZVM1a0FwUGJ5cWZwMkhCNmkwZ0JY?= =?gb2312?B?NU03T1pNM25iYUdXalNzS3lRK0NJbE9YbCtYR29icG94eWFmeVJ2bE9IN05r?= =?gb2312?B?eGtrdk9SdUtFUHJvQSszaXY3QjhvVS81OWRwT2tuNzJNZk5WVmVsam81RVpr?= =?gb2312?B?VG9xM282K29PeEN0OFZrUzZIOVptU3FoS1hXZ0libVlCKzFkQk1YWlhjTU96?= =?gb2312?B?V0lOeWxpR2pTY01mYk95ejNVT0hIWnJncWw0dmdtS3Z1RmdiK1NpMUZEUGxu?= =?gb2312?B?eXNxZ0JkMlNCUlc0NXhtd0VMMmZrNVhMYXJRTEIwUkllU1RNNU9tZnA4THVK?= =?gb2312?B?c1J6UU5rdkxRUk9ZaVQrSjdoazdFTXRTTndXd0dxaTJTYzEvdWxnTnFYOWRi?= =?gb2312?B?YkN2MEtnelNLSUlUa2ErL05JZjhrbHIwNExWUjFKZUdId0VndTRlUEJTTmhv?= =?gb2312?B?dTl4bFJCVlhSd1RPeHlJVkFQSDJ0SzdiQ1VFYVRYZ1ZCd2RIT3NpQ05RbmNV?= =?gb2312?B?RFkzdUcvQ1BUTXoxTEdEVHoya1Fvc1lVTlJxZ2ZoTVBrbExPcG4yOEx5YU5O?= =?gb2312?B?amVPZlJlV2gzTDhSMHRHUXgvK1ppdVJTWCs2Nmc4b1ExQ1ZpR096QmNIYXIv?= =?gb2312?B?Rkg4d3NZSjNKbGV0SithY3JKZytaWFFhcFBsMGNENXhsT3BJNnA2MnorMG5D?= =?gb2312?B?cWFERHZtQ2dWTEhLRnFhV2pTNWlaWHltMkJ6akk1SjI5b2dzS3RTWHZHZnhD?= =?gb2312?B?LzVXZzRUNTNLcnZFVnFBazh0b2NqY2FqUEc4bGM0K0EwM2VWWTBsdXFhK0o0?= =?gb2312?B?QUJLV2RoVlZwQmV5V3B5L2hKb0dQL05vZER0a1JDSzdpWmtxVktaK2FkMWNE?= =?gb2312?B?OTdoUVlCQ291NHg0SzcxZUN0V1VleEJSN3hSNkM2eEdabnU5QXp1MXNwd0xw?= =?gb2312?B?U3J5dWVQQ21FUy9FUzRWdlhTRlVBcm5Hd1lTN21MdzBJV3lhcFNtRWRMMzEz?= =?gb2312?B?ek1mclkwdStJeVB1TExhL3V4c1ExaWNxSWFrTTVDcEcySndITlQyd0xmS0Rn?= =?gb2312?B?VWZiWkl2UGRFdVBUcksyd1pSZFVBdHNVcC9teHJMMVZsYitoeW55SXFFb0Nt?= =?gb2312?B?azhtY1dQK05XaEpiTzY4d2VxdU9uRVc4NS9nMXliQ2YzUTJlR2dnNExUd3h2?= =?gb2312?B?VmxWYTNiMXNrVVRORmExV1p5dk9XY0h5ZnRIVy80TC9LU1VCOUNUQ28rVXFP?= =?gb2312?B?UjZ1bGl6K1Q2M1B0ZU5KM05YNGVqTzRITS9iczB0Q014SWxESTFFMlY1YUoy?= =?gb2312?B?cDd3RERReEdnQ3ozd3Y0VzdOeFZGSHJ6RkZpZHRoV08yMDB0c3JmdW4wYU5Z?= =?gb2312?B?citkNHZRUHRqbkNTVWI5M1d2RUNrbkZyYStwRGdEaUhKRjRvclNKREhFS0ND?= =?gb2312?B?M0hTVkhYakIzU05LR2QvYTlWWWM1cVBsZTFsaE5MRWovdTIrRWVlU1lIS1hC?= =?gb2312?B?VW40YkhTdGN4TEN5cjEyY01mYWNlcTl2T012NytRT1lmcUpGYWx0aWM3Wjd6?= =?gb2312?B?d1RZeVlZbnhMdmhpZk81T3ZaSzNZNkh0RGhTOTd6Sk9mOHZwNXlwcDhTWUJR?= =?gb2312?B?bEtTcEx1bkNCb2orYS8vTHpVRGlmV0pweVViVDkrUkZ6VnkzSXp3Wm1lU0Y5?= =?gb2312?B?ZHRmclovSHRVUWNaQ3Evc3c2TlB3SHpydlFDZEo0Q2JrRkxEajZ0M1E3eU5h?= =?gb2312?B?cnkwaER4d0Y2VE12eXovWlpFQWFLZ0Vzbmgxb096TlZPUnhHVHErVGlMeVFO?= =?gb2312?B?THBZSHZzdzRYck5sNlVYUT09?= X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 39658090-7e3f-4c86-fc9b-08d8c8e7da9f X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Feb 2021 08:35:40.2194 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: +CnJd9g3HNArDhQe2doecmelQNmX8NkOtz4JPSd7N6kXTt+/TS8MJbpefHLoOsBFZf1QMNcBcK4Aa7052Kkt6A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CS1PR8401MB0952 X-OriginatorOrg: hpe.com X-Proofpoint-UnRewURL: 12 URL's were un-rewritten MIME-Version: 1.0 X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369,18.0.737 definitions=2021-02-04_03:2021-02-04,2021-02-04 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 phishscore=0 clxscore=1015 lowpriorityscore=0 adultscore=0 impostorscore=0 malwarescore=0 bulkscore=0 mlxlogscore=999 priorityscore=1501 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2102040052 Content-Language: en-US Content-Type: multipart/alternative; boundary="_000_CS1PR8401MB11441BD196178C3656B48982FFB39CS1PR8401MB1144_" --_000_CS1PR8401MB11441BD196178C3656B48982FFB39CS1PR8401MB1144_ Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 VGhpcyBsb29rcyB0byBtZSBub3QgcXVpdGUgaW50dWl0aW9uYWwuDQogISghVHJ5QmVzdExhbmd1 YWdlICYmIExhbmd1YWdlID09IE5VTEwpIHNlZW1zIG1vcmUgc3RyYWlnaHRmb3J3YXJkIGFuZCBl eGFjdGx5IHdoYXQgd2Ugd291bGQgbGlrZSB0byBjYXRjaC4NCg0KQWJuZXINCg0KR2V0IE91dGxv b2sgZm9yIEFuZHJvaWQ8aHR0cHM6Ly9ha2EubXMvZ2hlaTM2Pg0KDQpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXw0KRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIu Z3JvdXBzLmlvPiBvbiBiZWhhbGYgb2YgZ2FvbGltaW5nIDxnYW9saW1pbmdAYnlvc29mdC5jb20u Y24+DQpTZW50OiBUaHVyc2RheSwgRmVicnVhcnkgNCwgMjAyMSwgMzoxMyBQTQ0KVG86IGRldmVs QGVkazIuZ3JvdXBzLmlvOyBDaGFuZywgQWJuZXIgKEhQUyBTVy9GVyBUZWNobm9sb2dpc3QpOyBk YW5kYW4uYmlAaW50ZWwuY29tDQpDYzogJ0RvbmcsIEVyaWMnOyBXYW5nLCBOaWNrbGUgKEhQUyBT VykNClN1YmplY3Q6ILvYuLQ6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjNdIE1kZU1vZHVsZVBrZy9M aWJyYXJ5OiBBZGQgSGlpR2V0U3RyaW5nRXggdG8gVWVmaUhpaUxpYiBmb3IgRURLMiBSZWRmaXNo DQoNCklmIFRyeUJlc3RMYW5ndWFnZSBpcyBGQUxFIGFuZCBMYW5ndWFnZSBpcyBOVUxMLCB0aGVu IEFTU0VSVCgpLg0KDQpTbywgQVNTRVJUIHN0YXRlbWVudCBzaG91bGQgYmUgQVNTRVJUIChUcnlC ZXN0TGFuZ3VhZ2UgfHwgKExhbmd1YWdlICE9DQpOVUxMKSk7DQoNCklzIHRoaXMgY2xlYXI/DQoN ClRoYW5rcw0KTGltaW5nDQo+IC0tLS0t08q8/tStvP4tLS0tLQ0KPiC3orz+yMs6IGJvdW5jZSsy Nzk1Mis3MTExMCs0OTA1OTUzKzg3NjEwNDVAZ3JvdXBzLmlvDQo+IDxib3VuY2UrMjc5NTIrNzEx MTArNDkwNTk1Mys4NzYxMDQ1QGdyb3Vwcy5pbz4gtPqx7SBBYm5lciBDaGFuZw0KPiC3osvNyrG8 5DogMjAyMcTqMtTCM8jVIDIzOjIxDQo+IMrVvP7IyzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IGRh bmRhbi5iaUBpbnRlbC5jb20NCj4gs63LzTogRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNv bT47IFdhbmcsIE5pY2tsZSAoSFBTIFNXKQ0KPiA8bmlja2xlLndhbmdAaHBlLmNvbT4NCj4g1vfM 4jogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjNdIE1kZU1vZHVsZVBrZy9MaWJyYXJ5OiBBZGQN Cj4gSGlpR2V0U3RyaW5nRXggdG8gVWVmaUhpaUxpYiBmb3IgRURLMiBSZWRmaXNoDQo+DQo+IFll cyBEYW5kYW4sIHlvdXJzIGZvbGxvdyBjb2Rpbmcgc3RhbmRhcmQuIEkgd2lsbCBoYW5kbGUgdGhh dC4NCj4gQWxzbywgSSB3aWxsIGhlbHAgdG8gcHVzaCB0aGUgcGF0Y2ggdG8gdXBzdHJlYW0gd2l0 aCB5b3VyIHJldmlldyB0YWcuDQo+DQo+IFRoYW5rcw0KPiBBYm5lcg0KPg0KPiA+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gW21haWx0 bzpkZXZlbEBlZGsyLmdyb3Vwcy5pb10gT24gQmVoYWxmIE9mDQo+ID4gRGFuZGFuIEJpDQo+ID4g U2VudDogV2VkbmVzZGF5LCBGZWJydWFyeSAzLCAyMDIxIDc6MzQgUE0NCj4gPiBUbzogQ2hhbmcs IEFibmVyIChIUFMgU1cvRlcgVGVjaG5vbG9naXN0KSA8YWJuZXIuY2hhbmdAaHBlLmNvbT47DQo+ ID4gZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiBDYzogRG9uZywgRXJpYyA8ZXJpYy5kb25nQGlu dGVsLmNvbT47IFdhbmcsIE5pY2tsZSAoSFBTIFNXKQ0KPiA+IDxuaWNrbGUud2FuZ0BocGUuY29t Pg0KPiA+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIHYzXSBNZGVNb2R1bGVQa2cv TGlicmFyeTogQWRkDQo+ID4gSGlpR2V0U3RyaW5nRXggdG8gVWVmaUhpaUxpYiBmb3IgRURLMiBS ZWRmaXNoDQo+ID4NCj4gPiBPbmUgbWlub3IgY29tbWVudCBpbmxpbmUgYmVsb3cuDQo+ID4gUmV2 aWV3ZWQtYnk6IERhbmRhbiBCaSA8ZGFuZGFuLmJpQGludGVsLmNvbT4gd2l0aCB0aGlzIGlzIGhh bmRsZWQuDQo+ID4NCj4gPiBUaGFua3MsDQo+ID4gRGFuZGFuDQo+ID4gPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogQWJuZXIgQ2hhbmcgPGFibmVyLmNoYW5nQGhwZS5j b20+DQo+ID4gPiBTZW50OiBNb25kYXksIEZlYnJ1YXJ5IDEsIDIwMjEgMTE6MDYgQU0NCj4gPiA+ IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+ID4gQ2M6IEJpLCBEYW5kYW4gPGRhbmRhbi5i aUBpbnRlbC5jb20+OyBEb25nLCBFcmljDQo+ID4gPiA8ZXJpYy5kb25nQGludGVsLmNvbT47IE5p Y2tsZSBXYW5nIDxuaWNrbGUud2FuZ0BocGUuY29tPg0KPiA+ID4gU3ViamVjdDogW1BBVENIIHYz XSBNZGVNb2R1bGVQa2cvTGlicmFyeTogQWRkIEhpaUdldFN0cmluZ0V4IHRvDQo+ID4gPiBVZWZp SGlpTGliIGZvciBFREsyIFJlZGZpc2gNCj4gPiA+DQo+ID4gPiBBZGQgSGlpR2V0U3RyaW5nRXgg YW5kIGxldmVyYWdlZCBieSBIaWlHZXRTdHJpbmcgZnVuY3Rpb24gdG8gc3VwcG9ydA0KPiA+ID4g Z2V0dGluZyBzdHJpbmcgd2l0aCB0aGUgYmVzdCBsYW5ndWFnZSBpbiBvcHRpb25hbGx5LiBUaGlz IGF2b2lkcyB0aGUNCj4gPiA+IHN0cmluZyBpbiB4LXVlZmkgbGFuZ3VhZ2UgaXMgbWlzbGVkIHRv IHRoZSBsYW5ndWFnZSBkZWZpbmVkIGJ5DQo+ID4gPiAiUGxhdGZvcm1MYW5nIiBvciB0aGUgIlN1 cHBvcnRlZCBMYW5ndWFnZXMiLiBUaGlzIGNoYW5nZSBpcyBpbnRyb2R1Y2VkDQo+ID4gPiB0byBz dXBwb3J0IHgtdWVmaSBrZXl3b3JkIGxhbmd1YWdlIGZvciBjb25maWd1cmluZyBCSU9TIHNldHRp bmcuDQo+ID4gPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogSmlheGluIFd1IDxqaWF4aW4ud3VAaW50 ZWwuY29tPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogU2l5dWFuIEZ1IDxzaXl1YW4uZnVAaW50ZWwu Y29tPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogRmFuIFdhbmcgPGZhbi53YW5nQGludGVsLmNvbT4N Cj4gPiA+IFNpZ25lZC1vZmYtYnk6IEFibmVyIENoYW5nIDxhYm5lci5jaGFuZ0BocGUuY29tPg0K PiA+ID4gQ2M6IERhbmRhbiBCaSA8ZGFuZGFuLmJpQGludGVsLmNvbT4NCj4gPiA+IENjOiBFcmlj IERvbmcgPGVyaWMuZG9uZ0BpbnRlbC5jb20+DQo+ID4gPiBDYzogTmlja2xlIFdhbmcgPG5pY2ts ZS53YW5nQGhwZS5jb20+DQo+ID4gPiAtLS0NCj4gPiA+ICBNZGVNb2R1bGVQa2cvSW5jbHVkZS9M aWJyYXJ5L0hpaUxpYi5oICAgICAgIHwgNjAgKysrKysrKysrKy0tLQ0KPiA+ID4gIE1kZU1vZHVs ZVBrZy9MaWJyYXJ5L1VlZmlIaWlMaWIvSGlpU3RyaW5nLmMgfCA5OA0KPiA+ID4gKysrKysrKysr KysrKysrLS0tLS0tDQo+ID4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMTkgaW5zZXJ0aW9ucygrKSwg MzkgZGVsZXRpb25zKC0pDQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9J bmNsdWRlL0xpYnJhcnkvSGlpTGliLmgNCj4gPiA+IGIvTWRlTW9kdWxlUGtnL0luY2x1ZGUvTGli cmFyeS9IaWlMaWIuaA0KPiA+ID4gaW5kZXggYzQ3NWNiNzRhMS4uY2Q5MDI3ZmVmZCAxMDA2NDQN Cj4gPiA+IC0tLSBhL01kZU1vZHVsZVBrZy9JbmNsdWRlL0xpYnJhcnkvSGlpTGliLmgNCj4gPiA+ ICsrKyBiL01kZU1vZHVsZVBrZy9JbmNsdWRlL0xpYnJhcnkvSGlpTGliLmgNCj4gPiA+IEBAIC0x LDcgKzEsOCBAQA0KPiA+ID4gIC8qKiBAZmlsZQ0KPiA+ID4gICAgUHVibGljIGluY2x1ZGUgZmls ZSBmb3IgdGhlIEhJSSBMaWJyYXJ5DQo+ID4gPg0KPiA+ID4gLUNvcHlyaWdodCAoYykgMjAwNyAt IDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiByZXNlcnZlZC48QlI+ DQo+ID4gPiArQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMNCj4gPiA+ICtyZXNlcnZlZC48QlI+DQo+ID4gPiArKEMpIENvcHlyaWdodCAyMDIx IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0KPiA+ID4gIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPg0KPiA+ID4g ICoqLw0KPiA+ID4gQEAgLTEyMywxNiArMTI0LDggQEAgSGlpU2V0U3RyaW5nICgNCj4gPiA+ICA7 DQo+ID4gPg0KPiA+ID4gIC8qKg0KPiA+ID4gLSAgUmV0cmlldmVzIGEgc3RyaW5nIGZyb20gYSBz dHJpbmcgcGFja2FnZSBpbiBhIHNwZWNpZmljIGxhbmd1YWdlLg0KPiA+ID4gSWYgdGhlIGxhbmd1 YWdlDQo+ID4gPiAtICBpcyBub3Qgc3BlY2lmaWVkLCB0aGVuIGEgc3RyaW5nIGZyb20gYSBzdHJp bmcgcGFja2FnZSBpbiB0aGUNCj4gPiA+IGN1cnJlbnQgcGxhdGZvcm0NCj4gPiA+IC0gIGxhbmd1 YWdlIGlzIHJldHJpZXZlZC4gIElmIHRoZSBzdHJpbmcgY2Fubm90IGJlIHJldHJpZXZlZCB1c2lu ZyB0aGUNCj4gPiA+IHNwZWNpZmllZA0KPiA+ID4gLSAgbGFuZ3VhZ2Ugb3IgdGhlIGN1cnJlbnQg cGxhdGZvcm0gbGFuZ3VhZ2UsIHRoZW4gdGhlIHN0cmluZyBpcw0KPiA+ID4gcmV0cmlldmVkIGZy b20NCj4gPiA+IC0gIHRoZSBzdHJpbmcgcGFja2FnZSBpbiB0aGUgZmlyc3QgbGFuZ3VhZ2UgdGhl IHN0cmluZyBwYWNrYWdlDQo+ID4gPiBzdXBwb3J0cy4gIFRoZQ0KPiA+ID4gLSAgcmV0dXJuZWQg c3RyaW5nIGlzIGFsbG9jYXRlZCB1c2luZyBBbGxvY2F0ZVBvb2woKS4gIFRoZSBjYWxsZXIgaXMN Cj4gPiA+IHJlc3BvbnNpYmxlDQo+ID4gPiAtICBmb3IgZnJlZWluZyB0aGUgYWxsb2NhdGVkIGJ1 ZmZlciB1c2luZyBGcmVlUG9vbCgpLg0KPiA+ID4gLQ0KPiA+ID4gLSAgSWYgSGlpSGFuZGxlIGlz IE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gPiAtICBJZiBTdHJpbmdJZCBpcyAwLCB0aGVuIEFT U0VSVCgpLg0KPiA+ID4gKyAgUmV0cmlldmVzIGEgc3RyaW5nIGZyb20gYSBzdHJpbmcgcGFja2Fn ZSBpbiBhIHNwZWNpZmljIGxhbmd1YWdlDQo+ID4gPiArIHNwZWNpZmllZCBpbiBMYW5ndWFnZSAg b3IgaW4gdGhlIGJlc3QgbGFuYWd1YWdlLiBTZWUgSGlpR2V0U3RyaW5nRXgNCj4gPiA+ICsgKCkg Zm9yDQo+ID4gPiB0aGUgZGV0YWlscy4NCj4gPiA+DQo+ID4gPiAgICBAcGFyYW1baW5dICBIaWlI YW5kbGUgIEEgaGFuZGxlIHRoYXQgd2FzIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBpbg0KPiA+ID4g dGhlIEhJSSBEYXRhYmFzZS4NCj4gPiA+ICAgIEBwYXJhbVtpbl0gIFN0cmluZ0lkICAgVGhlIGlk ZW50aWZpZXIgb2YgdGhlIHN0cmluZyB0byByZXRyaWV2ZWQNCmZyb20NCj4gdGhlDQo+ID4gPiBz dHJpbmcNCj4gPiA+IEBAIC0xNTIsOCArMTQ1LDQ5IEBAIEhpaUdldFN0cmluZyAoDQo+ID4gPiAg ICBJTiBFRklfSElJX0hBTkRMRSAgSGlpSGFuZGxlLA0KPiA+ID4gICAgSU4gRUZJX1NUUklOR19J RCAgIFN0cmluZ0lkLA0KPiA+ID4gICAgSU4gQ09OU1QgQ0hBUjggICAgICpMYW5ndWFnZSAgT1BU SU9OQUwNCj4gPiA+IC0gICkNCj4gPiA+IC07DQo+ID4gPiArICApOw0KPiA+ID4gKw0KPiA+ID4g Ky8qKg0KPiA+ID4gKyAgUmV0cmlldmVzIGEgc3RyaW5nIGZyb20gYSBzdHJpbmcgcGFja2FnZSBp biBhIHNwZWNpZmljIGxhbmd1YWdlIG9yDQo+ID4gPiAraW4gdGhlIGJlc3QNCj4gPiA+ICsgIGxh bmd1YWdlIGF0IGRpc2NyZXRpb24gb2YgdGhpcyBmdW5jdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHBy aW9yaXR5DQpvZg0KPiA+IGxhbmd1YWdlcy4NCj4gPiA+ICsgIFRyeUJlc3RMYW5ndWFnZSBpcyB1 c2VkIHRvIGdldCB0aGUgc3RyaW5nIGluIHRoZSBiZXN0IGxhbmd1YWdlIG9yDQo+ID4gPiAraW4g dGhlIGxhbmd1YWdlDQo+ID4gPiArICBzcGVjaWZpZWQgaW4gTGFuZ3VhZ2UgcGFyYW1ldGVyLiBU aGUgYmVoYXZpb3IgaXMsDQo+ID4gPiArICBJZiBUcnlCZXN0TGFuZ3VhZ2UgaXMgVFJVRSwgdGhp cyBmdW5jdGlvbiBsb29rcyBmb3IgdGhlIGJlc3QNCj4gPiA+ICtsYW5ndWFnZSBmb3INCj4gPiA+ IHRoZSBzdHJpbmcuDQo+ID4gPiArICAgLSBJZiB0aGUgc3RyaW5nIGNhbiBub3QgYmUgcmV0cmll dmVkIHVzaW5nIHRoZSBzcGVjaWZpZWQgbGFuZ3VhZ2UNCj4gPiA+ICsgb3IgdGhlDQo+ID4gPiBj dXJyZW50DQo+ID4gPiArICAgICBwbGF0Zm9ybSBsYW5ndWFnZSwgdGhlbiB0aGUgc3RyaW5nIGlz IHJldHJpZXZlZCBmcm9tIHRoZSBzdHJpbmcNCj4gPiA+ICsgcGFja2FnZSBpbg0KPiA+ID4gdGhl DQo+ID4gPiArICAgICBmaXJzdCBsYW5ndWFnZSB0aGUgc3RyaW5nIHBhY2thZ2Ugc3VwcG9ydHMu DQo+ID4gPiArICBJZiBUcnlCZXN0TGFuZ3VhZ2UgaXMgRkFMU0UsIExhbmd1YWdlIG11c3QgYmUg c3BlY2lmaWVkIGZvcg0KPiA+ID4gKyByZXRyaWV2aW5nIHRoZQ0KPiA+ID4gc3RyaW5nLg0KPiA+ ID4gKw0KPiA+ID4gKyAgVGhlIHJldHVybmVkIHN0cmluZyBpcyBhbGxvY2F0ZWQgdXNpbmcgQWxs b2NhdGVQb29sKCkuICBUaGUgY2FsbGVyDQo+ID4gPiArIGlzIHJlc3BvbnNpYmxlICBmb3IgZnJl ZWluZyB0aGUgYWxsb2NhdGVkIGJ1ZmZlciB1c2luZyBGcmVlUG9vbCgpLg0KPiA+ID4gKw0KPiA+ ID4gKyAgSWYgSGlpSGFuZGxlIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gPiArICBJZiBT dHJpbmdJZCBpcyAwLCB0aGVuIEFTU0VULg0KPiA+ID4gKyAgSWYgVHJ5QmVzdExhbmd1YWdlIGlz IEZBTEUgYW5kIExhbmd1YWdlIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gPiArDQo+ID4g PiArICBAcGFyYW1baW5dICBIaWlIYW5kbGUgICAgICAgICBBIGhhbmRsZSB0aGF0IHdhcyBwcmV2 aW91c2x5DQo+IHJlZ2lzdGVyZWQgaW4gdGhlDQo+ID4gPiBISUkgRGF0YWJhc2UuDQo+ID4gPiAr ICBAcGFyYW1baW5dICBTdHJpbmdJZCAgICAgICAgICBUaGUgaWRlbnRpZmllciBvZiB0aGUgc3Ry aW5nIHRvDQo+IHJldHJpZXZlZCBmcm9tDQo+ID4gdGhlDQo+ID4gPiBzdHJpbmcNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgYXNzb2NpYXRlZCB3aXRoDQo+ IEhpaUhhbmRsZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIExhbmd1YWdlICAgICAgICAgIFRoZSBs YW5ndWFnZSBvZiB0aGUgc3RyaW5nIHRvDQo+IHJldHJpZXZlLiAgSWYgdGhpcw0KPiA+ID4gcGFy YW1ldGVyDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBOVUxMLCB0 aGVuIHRoZSBjdXJyZW50DQo+IHBsYXRmb3JtIGxhbmd1YWdlIGlzIHVzZWQuICBUaGUNCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCBvZiBMYW5ndWFnZSBtdXN0 IGZvbGxvdw0KPiB0aGUNCj4gPiA+ICsgbGFuZ3VhZ2UgZm9ybWF0DQo+ID4gPiBhc3N1bWVkDQo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgSElJIERhdGFiYXNlLg0K PiA+ID4gKyAgQHBhcmFtW2luXSAgVHJ5QmVzdExhbmd1YWdlICAgSWYgVFJVRSwgdHJ5IHRvIGdl dCB0aGUgYmVzdA0KPiBtYXRjaGluZw0KPiA+ID4gbGFuZ3VhZ2UgZnJvbSBhbGwNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBsYW5ndWFnZXMuSWYgRkFM U0UsDQo+IHRoZQ0KPiA+ID4gKyBMYW5ndWFnZSBtdXN0IGJlDQo+ID4gPiBhc3NpZ25lZA0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBTdHJpbmdJRC4NCj4g PiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgTlVMTCAgIFRoZSBzdHJpbmcgc3BlY2lmaWVkIGJ5IFN0 cmluZ0lkIGlzIG5vdCBwcmVzZW50IGluDQp0aGUNCj4gc3RyaW5nDQo+ID4gPiBwYWNrYWdlLg0K PiA+ID4gKyAgQHJldHZhbCBPdGhlciAgVGhlIHN0cmluZyB3YXMgcmV0dXJuZWQuDQo+ID4gPiAr DQo+ID4gPiArKiovDQo+ID4gPiArRUZJX1NUUklORw0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0hp aUdldFN0cmluZ0V4ICgNCj4gPiA+ICsgIElOIEVGSV9ISUlfSEFORExFICBIaWlIYW5kbGUsDQo+ ID4gPiArICBJTiBFRklfU1RSSU5HX0lEICAgU3RyaW5nSWQsDQo+ID4gPiArICBJTiBDT05TVCBD SEFSOCAgICAgKkxhbmd1YWdlICBPUFRJT05BTCwNCj4gPiA+ICsgIElOIEJPT0xFQU4gICAgICAg ICBUcnlCZXN0TGFuZ3VhZ2UNCj4gPiA+ICsgICk7DQo+ID4gPg0KPiA+ID4gIC8qKg0KPiA+ID4g ICAgUmV0cmlldmVzIGEgc3RyaW5nIGZyb20gYSBzdHJpbmcgcGFja2FnZSBuYW1lZCBieSBHVUlE LCBpbiB0aGUNCj4gPiA+IHNwZWNpZmllZCBsYW5ndWFnZS4NCj4gPiA+IGRpZmYgLS1naXQgYS9N ZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpSGlpTGliL0hpaVN0cmluZy5jDQo+ID4gPiBiL01kZU1v ZHVsZVBrZy9MaWJyYXJ5L1VlZmlIaWlMaWIvSGlpU3RyaW5nLmMNCj4gPiA+IGluZGV4IDk1MjI5 ZjhhOGMuLmE5YTExYWVmOTggMTAwNjQ0DQo+ID4gPiAtLS0gYS9NZGVNb2R1bGVQa2cvTGlicmFy eS9VZWZpSGlpTGliL0hpaVN0cmluZy5jDQo+ID4gPiArKysgYi9NZGVNb2R1bGVQa2cvTGlicmFy eS9VZWZpSGlpTGliL0hpaVN0cmluZy5jDQo+ID4gPiBAQCAtMSw3ICsxLDggQEANCj4gPiA+ICAv KiogQGZpbGUNCj4gPiA+ICAgIEhJSSBMaWJyYXJ5IGltcGxlbWVudGF0aW9uIHRoYXQgdXNlcyBE WEUgcHJvdG9jb2xzIGFuZCBzZXJ2aWNlcy4NCj4gPiA+DQo+ID4gPiAtICBDb3B5cmlnaHQgKGMp IDIwMDYgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiA+ID4gcmVzZXJ2 ZWQuPEJSPg0KPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAyMSwgSW50ZWwgQ29ycG9y YXRpb24uIEFsbCByaWdodHMNCj4gPiA+ICsgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gKyAoQykgQ29w eXJpZ2h0IDIwMjEgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+ DQo+ID4gPiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0K PiA+ID4NCj4gPiA+ICAqKi8NCj4gPiA+IEBAIC0xOTAsMTYgKzE5MSw4IEBAIEhpaUdldFBhY2th Z2VTdHJpbmcgKCAgfQ0KPiA+ID4NCj4gPiA+ICAvKioNCj4gPiA+IC0gIFJldHJpZXZlcyBhIHN0 cmluZyBmcm9tIGEgc3RyaW5nIHBhY2thZ2UgaW4gYSBzcGVjaWZpYyBsYW5ndWFnZS4NCj4gPiA+ IElmIHRoZSBsYW5ndWFnZQ0KPiA+ID4gLSAgaXMgbm90IHNwZWNpZmllZCwgdGhlbiBhIHN0cmlu ZyBmcm9tIGEgc3RyaW5nIHBhY2thZ2UgaW4gdGhlDQo+ID4gPiBjdXJyZW50IHBsYXRmb3JtDQo+ ID4gPiAtICBsYW5ndWFnZSBpcyByZXRyaWV2ZWQuICBJZiB0aGUgc3RyaW5nIGNhbiBub3QgYmUg cmV0cmlldmVkIHVzaW5nDQo+ID4gPiB0aGUgc3BlY2lmaWVkDQo+ID4gPiAtICBsYW5ndWFnZSBv ciB0aGUgY3VycmVudCBwbGF0Zm9ybSBsYW5ndWFnZSwgdGhlbiB0aGUgc3RyaW5nIGlzDQo+ID4g PiByZXRyaWV2ZWQgZnJvbQ0KPiA+ID4gLSAgdGhlIHN0cmluZyBwYWNrYWdlIGluIHRoZSBmaXJz dCBsYW5ndWFnZSB0aGUgc3RyaW5nIHBhY2thZ2UNCj4gPiA+IHN1cHBvcnRzLiAgVGhlDQo+ID4g PiAtICByZXR1cm5lZCBzdHJpbmcgaXMgYWxsb2NhdGVkIHVzaW5nIEFsbG9jYXRlUG9vbCgpLiAg VGhlIGNhbGxlciBpcw0KPiA+ID4gcmVzcG9uc2libGUNCj4gPiA+IC0gIGZvciBmcmVlaW5nIHRo ZSBhbGxvY2F0ZWQgYnVmZmVyIHVzaW5nIEZyZWVQb29sKCkuDQo+ID4gPiAtDQo+ID4gPiAtICBJ ZiBIaWlIYW5kbGUgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiA+IC0gIElmIFN0cmluZ0lk IGlzIDAsIHRoZW4gQVNTRVQuDQo+ID4gPiArICBSZXRyaWV2ZXMgYSBzdHJpbmcgZnJvbSBhIHN0 cmluZyBwYWNrYWdlIGluIGEgc3BlY2lmaWMgbGFuZ3VhZ2UNCj4gPiA+ICsgc3BlY2lmaWVkIGlu IExhbmd1YWdlICBvciBpbiB0aGUgYmVzdCBsYW5hZ3VhZ2UuIFNlZSBIaWlHZXRTdHJpbmdFeA0K PiA+ID4gKyAoKSBmb3INCj4gPiA+IHRoZSBkZXRhaWxzLg0KPiA+ID4NCj4gPiA+ICAgIEBwYXJh bVtpbl0gIEhpaUhhbmRsZSAgQSBoYW5kbGUgdGhhdCB3YXMgcHJldmlvdXNseSByZWdpc3RlcmVk IGluDQo+ID4gPiB0aGUgSElJIERhdGFiYXNlLg0KPiA+ID4gICAgQHBhcmFtW2luXSAgU3RyaW5n SWQgICBUaGUgaWRlbnRpZmllciBvZiB0aGUgc3RyaW5nIHRvIHJldHJpZXZlZA0KZnJvbQ0KPiB0 aGUNCj4gPiA+IHN0cmluZw0KPiA+ID4gQEAgLTIyMCw2ICsyMTMsNTEgQEAgSGlpR2V0U3RyaW5n ICgNCj4gPiA+ICAgIElOIEVGSV9TVFJJTkdfSUQgICBTdHJpbmdJZCwNCj4gPiA+ICAgIElOIENP TlNUIENIQVI4ICAgICAqTGFuZ3VhZ2UgIE9QVElPTkFMDQo+ID4gPiAgICApDQo+ID4gPiArew0K PiA+ID4gKyAgcmV0dXJuIEhpaUdldFN0cmluZ0V4IChIaWlIYW5kbGUsIFN0cmluZ0lkLCBMYW5n dWFnZSwgVFJVRSk7IH0NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFJldHJpZXZlcyBh IHN0cmluZyBmcm9tIGEgc3RyaW5nIHBhY2thZ2UgaW4gYSBzcGVjaWZpYyBsYW5ndWFnZSBvcg0K PiA+ID4gK2luIHRoZSBiZXN0DQo+ID4gPiArICBsYW5ndWFnZSBhdCBkaXNjcmV0aW9uIG9mIHRo aXMgZnVuY3Rpb24gYWNjb3JkaW5nIHRvIHRoZSBwcmlvcml0eQ0Kb2YNCj4gPiBsYW5ndWFnZXMu DQo+ID4gPiArICBUcnlCZXN0TGFuZ3VhZ2UgaXMgdXNlZCB0byBnZXQgdGhlIHN0cmluZyBpbiB0 aGUgYmVzdCBsYW5ndWFnZSBvcg0KPiA+ID4gK2luIHRoZSBsYW5ndWFnZQ0KPiA+ID4gKyAgc3Bl Y2lmaWVkIGluIExhbmd1YWdlIHBhcmFtZXRlci4gVGhlIGJlaGF2aW9yIGlzLA0KPiA+ID4gKyAg SWYgVHJ5QmVzdExhbmd1YWdlIGlzIFRSVUUsIHRoaXMgZnVuY3Rpb24gbG9va3MgZm9yIHRoZSBi ZXN0DQo+ID4gPiArbGFuZ3VhZ2UgZm9yDQo+ID4gPiB0aGUgc3RyaW5nLg0KPiA+ID4gKyAgIC0g SWYgdGhlIHN0cmluZyBjYW4gbm90IGJlIHJldHJpZXZlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGxh bmd1YWdlDQo+ID4gPiArIG9yIHRoZQ0KPiA+ID4gY3VycmVudA0KPiA+ID4gKyAgICAgcGxhdGZv cm0gbGFuZ3VhZ2UsIHRoZW4gdGhlIHN0cmluZyBpcyByZXRyaWV2ZWQgZnJvbSB0aGUgc3RyaW5n DQo+ID4gPiArIHBhY2thZ2UgaW4NCj4gPiA+IHRoZQ0KPiA+ID4gKyAgICAgZmlyc3QgbGFuZ3Vh Z2UgdGhlIHN0cmluZyBwYWNrYWdlIHN1cHBvcnRzLg0KPiA+ID4gKyAgSWYgVHJ5QmVzdExhbmd1 YWdlIGlzIEZBTFNFLCBMYW5ndWFnZSBtdXN0IGJlIHNwZWNpZmllZCBmb3INCj4gPiA+ICsgcmV0 cmlldmluZyB0aGUNCj4gPiA+IHN0cmluZy4NCj4gPiA+ICsNCj4gPiA+ICsgIFRoZSByZXR1cm5l ZCBzdHJpbmcgaXMgYWxsb2NhdGVkIHVzaW5nIEFsbG9jYXRlUG9vbCgpLiAgVGhlIGNhbGxlcg0K PiA+ID4gKyBpcyByZXNwb25zaWJsZSAgZm9yIGZyZWVpbmcgdGhlIGFsbG9jYXRlZCBidWZmZXIg dXNpbmcgRnJlZVBvb2woKS4NCj4gPiA+ICsNCj4gPiA+ICsgIElmIEhpaUhhbmRsZSBpcyBOVUxM LCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKyAgSWYgU3RyaW5nSWQgaXMgMCwgdGhlbiBBU1NFVC4N Cj4gPiA+ICsgIElmIFRyeUJlc3RMYW5ndWFnZSBpcyBGQUxFIGFuZCBMYW5ndWFnZSBpcyBOVUxM LCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgSGlpSGFuZGxl ICAgICAgICAgQSBoYW5kbGUgdGhhdCB3YXMgcHJldmlvdXNseQ0KPiByZWdpc3RlcmVkIGluIHRo ZQ0KPiA+ID4gSElJIERhdGFiYXNlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgU3RyaW5nSWQgICAg ICAgICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIHN0cmluZyB0bw0KPiByZXRyaWV2ZWQgZnJvbQ0K PiA+IHRoZQ0KPiA+ID4gc3RyaW5nDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwYWNrYWdlIGFzc29jaWF0ZWQgd2l0aA0KPiBIaWlIYW5kbGUuDQo+ID4gPiArICBAcGFy YW1baW5dICBMYW5ndWFnZSAgICAgICAgICBUaGUgbGFuZ3VhZ2Ugb2YgdGhlIHN0cmluZyB0bw0K PiByZXRyaWV2ZS4gIElmIHRoaXMNCj4gPiA+IHBhcmFtZXRlcg0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaXMgTlVMTCwgdGhlbiB0aGUgY3VycmVudA0KPiBwbGF0Zm9y bSBsYW5ndWFnZSBpcyB1c2VkLiAgVGhlDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmb3JtYXQgb2YgTGFuZ3VhZ2UgbXVzdCBmb2xsb3cNCj4gdGhlDQo+ID4gPiArIGxh bmd1YWdlIGZvcm1hdA0KPiA+ID4gYXNzdW1lZA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGhlIEhJSSBEYXRhYmFzZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFRyeUJl c3RMYW5ndWFnZSAgIElmIFRSVUUsIHRyeSB0byBnZXQgdGhlIGJlc3QNCj4gbWF0Y2hpbmcNCj4g PiA+IGxhbmd1YWdlIGZyb20gYWxsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdXBwb3J0ZWQgbGFuZ3VhZ2VzLklmIEZBTFNFLA0KPiB0aGUNCj4gPiA+ICsgTGFuZ3Vh Z2UgbXVzdCBiZQ0KPiA+ID4gYXNzaWduZWQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZvciB0aGUgU3RyaW5nSUQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIE5V TEwgICBUaGUgc3RyaW5nIHNwZWNpZmllZCBieSBTdHJpbmdJZCBpcyBub3QgcHJlc2VudCBpbg0K dGhlDQo+IHN0cmluZw0KPiA+ID4gcGFja2FnZS4NCj4gPiA+ICsgIEByZXR2YWwgT3RoZXIgIFRo ZSBzdHJpbmcgd2FzIHJldHVybmVkLg0KPiA+ID4gKw0KPiA+ID4gKyoqLw0KPiA+ID4gK0VGSV9T VFJJTkcNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtIaWlHZXRTdHJpbmdFeCAoDQo+ID4gPiArICBJ TiBFRklfSElJX0hBTkRMRSAgSGlpSGFuZGxlLA0KPiA+ID4gKyAgSU4gRUZJX1NUUklOR19JRCAg IFN0cmluZ0lkLA0KPiA+ID4gKyAgSU4gQ09OU1QgQ0hBUjggICAgICpMYW5ndWFnZSAgT1BUSU9O QUwsDQo+ID4gPiArICBJTiBCT09MRUFOICAgICAgICAgVHJ5QmVzdExhbmd1YWdlDQo+ID4gPiAr ICApDQo+ID4gPiAgew0KPiA+ID4gICAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KPiA+ID4gICAgVUlO VE4gICAgICAgU3RyaW5nU2l6ZTsNCj4gPiA+IEBAIC0yMzEsNyArMjY5LDEwIEBAIEhpaUdldFN0 cmluZyAoDQo+ID4gPg0KPiA+ID4gICAgQVNTRVJUIChIaWlIYW5kbGUgIT0gTlVMTCk7DQo+ID4g PiAgICBBU1NFUlQgKFN0cmluZ0lkICE9IDApOw0KPiA+ID4gLQ0KPiA+ID4gKyAgLy8NCj4gPiA+ ICsgIC8vIExhbmd1YWdlIG11c3QgYmUgc3BlY2lmaWVkIGlmIFRyeUJlc3RMYW5ndWFnZSA9IEZB TFNFLg0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIEFTU0VSVCAoIShUcnlCZXN0TGFuZ3VhZ2UgPT0g RkFMU0UgJiYgTGFuZ3VhZ2UgPT0gTlVMTCkpOw0KPiA+IE9uZSBtaW5vciBoZXJlLCBpbiBvcmRl ciB0byBmb2xsb3dpbmcgdGhlIGNvZGluZyBzdHlsZSwgdGhpcyBzZWVtcw0Kc2hvdWxkIGJlDQo+ ID4gQVNTRVJUICghKCFUcnlCZXN0TGFuZ3VhZ2UgJiYgTGFuZ3VhZ2UgPT0gTlVMTCkpOyBQbGVh c2UgaGVscCBkb3VibGUNCj4gPiBjaGVjay4NCj4gPg0KPiA+ID4gICAgLy8NCj4gPiA+ICAgIC8v IEluaXRpYWxpemUgYWxsIGFsbG9jYXRlZCBidWZmZXJzIHRvIE5VTEwNCj4gPiA+ICAgIC8vDQo+ ID4gPiBAQCAtMjYxLDIxICszMDIsMjYgQEAgSGlpR2V0U3RyaW5nICgNCj4gPiA+ICAgICAgTGFu Z3VhZ2UgPSAiIjsNCj4gPiA+ICAgIH0NCj4gPiA+DQo+ID4gPiAtICAvLw0KPiA+ID4gLSAgLy8g R2V0IHRoZSBiZXN0IG1hdGNoaW5nIGxhbmd1YWdlIGZyb20gU3VwcG9ydGVkTGFuZ3VhZ2VzDQo+ ID4gPiAtICAvLw0KPiA+ID4gLSAgQmVzdExhbmd1YWdlID0gR2V0QmVzdExhbmd1YWdlICgNCj4g PiA+IC0gICAgICAgICAgICAgICAgICAgU3VwcG9ydGVkTGFuZ3VhZ2VzLA0KPiA+ID4gLSAgICAg ICAgICAgICAgICAgICBGQUxTRSwNCj4gLy8gUkZDIDQ2NDYgbW9kZQ0KPiA+ID4gLSAgICAgICAg ICAgICAgICAgICBMYW5ndWFnZSwNCj4gLy8gSGlnaGVzdCBwcmlvcml0eQ0KPiA+ID4gLSAgICAg ICAgICAgICAgICAgICBQbGF0Zm9ybUxhbmd1YWdlICE9IE5VTEwgPyBQbGF0Zm9ybUxhbmd1YWdl IDoNCj4gIiIsICAvLyBOZXh0DQo+ID4gPiBoaWdoZXN0IHByaW9yaXR5DQo+ID4gPiAtICAgICAg ICAgICAgICAgICAgIFN1cHBvcnRlZExhbmd1YWdlcywNCj4gLy8gTG93ZXN0IHByaW9yaXR5DQo+ ID4gPiAtICAgICAgICAgICAgICAgICAgIE5VTEwNCj4gPiA+IC0gICAgICAgICAgICAgICAgICAg KTsNCj4gPiA+IC0gIGlmIChCZXN0TGFuZ3VhZ2UgPT0gTlVMTCkgew0KPiA+ID4gLSAgICBnb3Rv IEVycm9yOw0KPiA+ID4gKyAgaWYgKFRyeUJlc3RMYW5ndWFnZSkgew0KPiA+ID4gKyAgICAvLw0K PiA+ID4gKyAgICAvLyBHZXQgdGhlIGJlc3QgbWF0Y2hpbmcgbGFuZ3VhZ2UgZnJvbSBTdXBwb3J0 ZWRMYW5ndWFnZXMNCj4gPiA+ICsgICAgLy8NCj4gPiA+ICsgICAgQmVzdExhbmd1YWdlID0gR2V0 QmVzdExhbmd1YWdlICgNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0ZWRMYW5n dWFnZXMsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgRkFMU0UsDQo+IC8vIFJGQyA0NjQ2 IG1vZGUNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZSwNCj4gLy8gSGlnaGVz dCBwcmlvcml0eQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtTGFuZ3VhZ2Ug IT0gTlVMTCA/DQo+IFBsYXRmb3JtTGFuZ3VhZ2UgOg0KPiA+ID4gKyAiIiwgIC8vIE5leHQNCj4g PiA+IGhpZ2hlc3QgcHJpb3JpdHkNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0 ZWRMYW5ndWFnZXMsDQo+IC8vIExvd2VzdCBwcmlvcml0eQ0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgIE5VTEwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ID4gKyAgICBp ZiAoQmVzdExhbmd1YWdlID09IE5VTEwpIHsNCj4gPiA+ICsgICAgICBnb3RvIEVycm9yOw0KPiA+ ID4gKyAgICB9DQo+ID4gPiArICB9IGVsc2Ugew0KPiA+ID4gKyAgICBCZXN0TGFuZ3VhZ2UgPSAo Q0hBUjggKikgTGFuZ3VhZ2U7DQo+ID4gPiAgICB9DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4gICAg Ly8NCj4gPiA+ICAgIC8vIFJldHJpZXZlIHRoZSBzaXplIG9mIHRoZSBzdHJpbmcgaW4gdGhlIHN0 cmluZyBwYWNrYWdlIGZvciB0aGUNCj4gPiBCZXN0TGFuZ3VhZ2UNCj4gPiA+ICAgIC8vDQo+ID4g PiBAQCAtMzM3LDcgKzM4Myw3IEBAIEVycm9yOg0KPiA+ID4gICAgaWYgKFBsYXRmb3JtTGFuZ3Vh Z2UgIT0gTlVMTCkgew0KPiA+ID4gICAgICBGcmVlUG9vbCAoUGxhdGZvcm1MYW5ndWFnZSk7DQo+ ID4gPiAgICB9DQo+ID4gPiAtICBpZiAoQmVzdExhbmd1YWdlICE9IE5VTEwpIHsNCj4gPiA+ICsg IGlmIChUcnlCZXN0TGFuZ3VhZ2UgJiYgQmVzdExhbmd1YWdlICE9IE5VTEwpIHsNCj4gPiA+ICAg ICAgRnJlZVBvb2wgKEJlc3RMYW5ndWFnZSk7DQo+ID4gPiAgICB9DQo+ID4gPg0KPiA+ID4gLS0N Cj4gPiA+IDIuMTcuMQ0KPiA+DQo+ID4NCj4gPg0KPiA+DQo+ID4NCj4NCj4NCj4NCj4NCj4NCg0K DQoNCg0KDQoNCg0KDQoNCg== --_000_CS1PR8401MB11441BD196178C3656B48982FFB39CS1PR8401MB1144_ Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: quoted-printable
This looks to me not quite intuitional.
 !(!TryBestLanguage && Language =3D=3D NULL) seems more strai= ghtforward and exactly what we would like to catch.

Abner 

Get Outlook for Android


From: devel@edk2.groups.io <= devel@edk2.groups.io> on behalf of gaoliming <gaoliming@byosoft.com.c= n>
Sent: Thursday, February 4, 2021, 3:13 PM
To: devel@edk2.groups.io; Chang, Abner (HPS SW/FW Technol= ogist); dandan.bi@intel.com
Cc: 'Dong, Eric'; Wang, Nickle (HPS SW)
Subject: =BB=D8=B8=B4: [edk2-devel] [PATCH v3] MdeModuleP= kg/Library: Add HiiGetStringEx to UefiHiiLib for EDK2 Redfish

If TryBestLanguage is FALE and Language is NULL, = then ASSERT().

So, ASSERT statement should be ASSERT (TryBestLanguage || (Language !=3D NULL));

Is this clear?

Thanks
Liming
> -----=D3=CA=BC=FE=D4=AD=BC=FE-----
> =B7=A2=BC=FE=C8=CB: bounce+27952+71110+4905953+8761045@groups.io
> <bounce+27952+71110+4905953+8761045@groups.io> =B4=FA=B1=ED Abn= er Chang
> =B7=A2=CB=CD=CA=B1=BC=E4: 2021=C4=EA2=D4=C23=C8=D5 23:21
> =CA=D5=BC=FE=C8=CB: devel@edk2.groups.io; dandan.bi@intel.com
> =B3=AD=CB=CD: Dong, Eric <eric.dong@intel.com>; Wang, Nickle (H= PS SW)
> <nickle.wang@hpe.com>
> =D6=F7=CC=E2: Re: [edk2-devel] [PATCH v3] MdeModulePkg/Library: Add > HiiGetStringEx to UefiHiiLib for EDK2 Redfish
>
> Yes Dandan, yours follow coding standard. I will handle that.
> Also, I will help to push the patch to upstream with your review tag.=
>
> Thanks
> Abner
>
> > -----Original Message-----
> > From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of
> > Dandan Bi
> > Sent: Wednesday, February 3, 2021 7:34 PM
> > To: Chang, Abner (HPS SW/FW Technologist) <abner.chang@hpe.co= m>;
> > devel@edk2.groups.io
> > Cc: Dong, Eric <eric.dong@intel.com>; Wang, Nickle (HPS SW= )
> > <nickle.wang@hpe.com>
> > Subject: Re: [edk2-devel] [PATCH v3] MdeModulePkg/Library: Add > > HiiGetStringEx to UefiHiiLib for EDK2 Redfish
> >
> > One minor comment inline below.
> > Reviewed-by: Dandan Bi <dandan.bi@intel.com> with this is = handled.
> >
> > Thanks,
> > Dandan
> > > -----Original Message-----
> > > From: Abner Chang <abner.chang@hpe.com>
> > > Sent: Monday, February 1, 2021 11:06 AM
> > > To: devel@edk2.groups.io
> > > Cc: Bi, Dandan <dandan.bi@intel.com>; Dong, Eric
> > > <eric.dong@intel.com>; Nickle Wang <nickle.wang@hp= e.com>
> > > Subject: [PATCH v3] MdeModulePkg/Library: Add HiiGetStringE= x to
> > > UefiHiiLib for EDK2 Redfish
> > >
> > > Add HiiGetStringEx and leveraged by HiiGetString function t= o support
> > > getting string with the best language in optionally. This a= voids the
> > > string in x-uefi language is misled to the language defined= by
> > > "PlatformLang" or the "Supported Languages&q= uot;. This change is introduced
> > > to support x-uefi keyword language for configuring BIOS set= ting.
> > >
> > > Signed-off-by: Jiaxin Wu <jiaxin.wu@intel.com>
> > > Signed-off-by: Siyuan Fu <siyuan.fu@intel.com>
> > > Signed-off-by: Fan Wang <fan.wang@intel.com>
> > > Signed-off-by: Abner Chang <abner.chang@hpe.com>
> > > Cc: Dandan Bi <dandan.bi@intel.com>
> > > Cc: Eric Dong <eric.dong@intel.com>
> > > Cc: Nickle Wang <nickle.wang@hpe.com>
> > > ---
> > >  MdeModulePkg/Include/Library/HiiLib.h  &nbs= p;    | 60 ++++++++++---
> > >  MdeModulePkg/Library/UefiHiiLib/HiiString.c | 98
> > > +++++++++++++++------
> > >  2 files changed, 119 insertions(+), 39 deletions(-) > > >
> > > diff --git a/MdeModulePkg/Include/Library/HiiLib.h
> > > b/MdeModulePkg/Include/Library/HiiLib.h
> > > index c475cb74a1..cd9027fefd 100644
> > > --- a/MdeModulePkg/Include/Library/HiiLib.h
> > > +++ b/MdeModulePkg/Include/Library/HiiLib.h
> > > @@ -1,7 +1,8 @@
> > >  /** @file
> > >    Public include file for the HII Library > > >
> > > -Copyright (c) 2007 - 2018, Intel Corporation. All rights > > > reserved.<BR>
> > > +Copyright (c) 2007 - 2021, Intel Corporation. All rights > > > +reserved.<BR>
> > > +(C) Copyright 2021 Hewlett Packard Enterprise Development = LP<BR>
> > >  SPDX-License-Identifier: BSD-2-Clause-Patent
> > >
> > >  **/
> > > @@ -123,16 +124,8 @@ HiiSetString (
> > >  ;
> > >
> > >  /**
> > > -  Retrieves a string from a string package in a speci= fic language.
> > > If the language
> > > -  is not specified, then a string from a string packa= ge in the
> > > current platform
> > > -  language is retrieved.  If the string cannot b= e retrieved using the
> > > specified
> > > -  language or the current platform language, then the= string is
> > > retrieved from
> > > -  the string package in the first language the string= package
> > > supports.  The
> > > -  returned string is allocated using AllocatePool().&= nbsp; The caller is
> > > responsible
> > > -  for freeing the allocated buffer using FreePool().<= br> > > > -
> > > -  If HiiHandle is NULL, then ASSERT().
> > > -  If StringId is 0, then ASSERT().
> > > +  Retrieves a string from a string package in a speci= fic language
> > > + specified in Language  or in the best lanaguage. See= HiiGetStringEx
> > > + () for
> > > the details.
> > >
> > >    @param[in]  HiiHandle  A handle= that was previously registered in
> > > the HII Database.
> > >    @param[in]  StringId   The= identifier of the string to retrieved
from
> the
> > > string
> > > @@ -152,8 +145,49 @@ HiiGetString (
> > >    IN EFI_HII_HANDLE  HiiHandle,
> > >    IN EFI_STRING_ID   StringId, > > >    IN CONST CHAR8     *L= anguage  OPTIONAL
> > > -  )
> > > -;
> > > +  );
> > > +
> > > +/**
> > > +  Retrieves a string from a string package in a speci= fic language or
> > > +in the best
> > > +  language at discretion of this function according t= o the priority
of
> > languages.
> > > +  TryBestLanguage is used to get the string in the be= st language or
> > > +in the language
> > > +  specified in Language parameter. The behavior is, > > > +  If TryBestLanguage is TRUE, this function looks for= the best
> > > +language for
> > > the string.
> > > +   - If the string can not be retrieved using th= e specified language
> > > + or the
> > > current
> > > +     platform language, then the strin= g is retrieved from the string
> > > + package in
> > > the
> > > +     first language the string package= supports.
> > > +  If TryBestLanguage is FALSE, Language must be speci= fied for
> > > + retrieving the
> > > string.
> > > +
> > > +  The returned string is allocated using AllocatePool= ().  The caller
> > > + is responsible  for freeing the allocated buffer usi= ng FreePool().
> > > +
> > > +  If HiiHandle is NULL, then ASSERT().
> > > +  If StringId is 0, then ASSET.
> > > +  If TryBestLanguage is FALE and Language is NULL, th= en ASSERT().
> > > +
> > > +  @param[in]  HiiHandle    &= nbsp;    A handle that was previously
> registered in the
> > > HII Database.
> > > +  @param[in]  StringId    &n= bsp;     The identifier of the string to
> retrieved from
> > the
> > > string
> > > +         &nbs= p;            &= nbsp;         package associated wi= th
> HiiHandle.
> > > +  @param[in]  Language    &n= bsp;     The language of the string to
> retrieve.  If this
> > > parameter
> > > +         &nbs= p;            &= nbsp;         is NULL, then the cur= rent
> platform language is used.  The
> > > +         &nbs= p;            &= nbsp;         format of Language mu= st follow
> the
> > > + language format
> > > assumed
> > > +         &nbs= p;            &= nbsp;         the HII Database.
> > > +  @param[in]  TryBestLanguage   If TRU= E, try to get the best
> matching
> > > language from all
> > > +         &nbs= p;            &= nbsp;         supported languages.I= f FALSE,
> the
> > > + Language must be
> > > assigned
> > > +         &nbs= p;            &= nbsp;         for the StringID.
> > > +
> > > +  @retval NULL   The string specified by St= ringId is not present in
the
> string
> > > package.
> > > +  @retval Other  The string was returned.
> > > +
> > > +**/
> > > +EFI_STRING
> > > +EFIAPI
> > > +HiiGetStringEx (
> > > +  IN EFI_HII_HANDLE  HiiHandle,
> > > +  IN EFI_STRING_ID   StringId,
> > > +  IN CONST CHAR8     *Language&nb= sp; OPTIONAL,
> > > +  IN BOOLEAN       = ;  TryBestLanguage
> > > +  );
> > >
> > >  /**
> > >    Retrieves a string from a string package = named by GUID, in the
> > > specified language.
> > > diff --git a/MdeModulePkg/Library/UefiHiiLib/HiiString.c > > > b/MdeModulePkg/Library/UefiHiiLib/HiiString.c
> > > index 95229f8a8c..a9a11aef98 100644
> > > --- a/MdeModulePkg/Library/UefiHiiLib/HiiString.c
> > > +++ b/MdeModulePkg/Library/UefiHiiLib/HiiString.c
> > > @@ -1,7 +1,8 @@
> > >  /** @file
> > >    HII Library implementation that uses DXE = protocols and services.
> > >
> > > -  Copyright (c) 2006 - 2018, Intel Corporation. All r= ights
> > > reserved.<BR>
> > > +  Copyright (c) 2006 - 2021, Intel Corporation. All r= ights
> > > + reserved.<BR>
> > > + (C) Copyright 2021 Hewlett Packard Enterprise Development= LP<BR>
> > >    SPDX-License-Identifier: BSD-2-Clause-Pat= ent
> > >
> > >  **/
> > > @@ -190,16 +191,8 @@ HiiGetPackageString (  }
> > >
> > >  /**
> > > -  Retrieves a string from a string package in a speci= fic language.
> > > If the language
> > > -  is not specified, then a string from a string packa= ge in the
> > > current platform
> > > -  language is retrieved.  If the string can not = be retrieved using
> > > the specified
> > > -  language or the current platform language, then the= string is
> > > retrieved from
> > > -  the string package in the first language the string= package
> > > supports.  The
> > > -  returned string is allocated using AllocatePool().&= nbsp; The caller is
> > > responsible
> > > -  for freeing the allocated buffer using FreePool().<= br> > > > -
> > > -  If HiiHandle is NULL, then ASSERT().
> > > -  If StringId is 0, then ASSET.
> > > +  Retrieves a string from a string package in a speci= fic language
> > > + specified in Language  or in the best lanaguage. See= HiiGetStringEx
> > > + () for
> > > the details.
> > >
> > >    @param[in]  HiiHandle  A handle= that was previously registered in
> > > the HII Database.
> > >    @param[in]  StringId   The= identifier of the string to retrieved
from
> the
> > > string
> > > @@ -220,6 +213,51 @@ HiiGetString (
> > >    IN EFI_STRING_ID   StringId, > > >    IN CONST CHAR8     *L= anguage  OPTIONAL
> > >    )
> > > +{
> > > +  return HiiGetStringEx (HiiHandle, StringId, Languag= e, TRUE); }
> > > +
> > > +/**
> > > +  Retrieves a string from a string package in a speci= fic language or
> > > +in the best
> > > +  language at discretion of this function according t= o the priority
of
> > languages.
> > > +  TryBestLanguage is used to get the string in the be= st language or
> > > +in the language
> > > +  specified in Language parameter. The behavior is, > > > +  If TryBestLanguage is TRUE, this function looks for= the best
> > > +language for
> > > the string.
> > > +   - If the string can not be retrieved using th= e specified language
> > > + or the
> > > current
> > > +     platform language, then the strin= g is retrieved from the string
> > > + package in
> > > the
> > > +     first language the string package= supports.
> > > +  If TryBestLanguage is FALSE, Language must be speci= fied for
> > > + retrieving the
> > > string.
> > > +
> > > +  The returned string is allocated using AllocatePool= ().  The caller
> > > + is responsible  for freeing the allocated buffer usi= ng FreePool().
> > > +
> > > +  If HiiHandle is NULL, then ASSERT().
> > > +  If StringId is 0, then ASSET.
> > > +  If TryBestLanguage is FALE and Language is NULL, th= en ASSERT().
> > > +
> > > +  @param[in]  HiiHandle    &= nbsp;    A handle that was previously
> registered in the
> > > HII Database.
> > > +  @param[in]  StringId    &n= bsp;     The identifier of the string to
> retrieved from
> > the
> > > string
> > > +         &nbs= p;            &= nbsp;         package associated wi= th
> HiiHandle.
> > > +  @param[in]  Language    &n= bsp;     The language of the string to
> retrieve.  If this
> > > parameter
> > > +         &nbs= p;            &= nbsp;         is NULL, then the cur= rent
> platform language is used.  The
> > > +         &nbs= p;            &= nbsp;         format of Language mu= st follow
> the
> > > + language format
> > > assumed
> > > +         &nbs= p;            &= nbsp;         the HII Database.
> > > +  @param[in]  TryBestLanguage   If TRU= E, try to get the best
> matching
> > > language from all
> > > +         &nbs= p;            &= nbsp;         supported languages.I= f FALSE,
> the
> > > + Language must be
> > > assigned
> > > +         &nbs= p;            &= nbsp;         for the StringID.
> > > +
> > > +  @retval NULL   The string specified by St= ringId is not present in
the
> string
> > > package.
> > > +  @retval Other  The string was returned.
> > > +
> > > +**/
> > > +EFI_STRING
> > > +EFIAPI
> > > +HiiGetStringEx (
> > > +  IN EFI_HII_HANDLE  HiiHandle,
> > > +  IN EFI_STRING_ID   StringId,
> > > +  IN CONST CHAR8     *Language&nb= sp; OPTIONAL,
> > > +  IN BOOLEAN       = ;  TryBestLanguage
> > > +  )
> > >  {
> > >    EFI_STATUS  Status;
> > >    UINTN      = StringSize;
> > > @@ -231,7 +269,10 @@ HiiGetString (
> > >
> > >    ASSERT (HiiHandle !=3D NULL);
> > >    ASSERT (StringId !=3D 0);
> > > -
> > > +  //
> > > +  // Language must be specified if TryBestLanguage = =3D FALSE.
> > > +  //
> > > +  ASSERT (!(TryBestLanguage =3D=3D FALSE && L= anguage =3D=3D NULL));
> > One minor here, in order to following the coding style, this see= ms
should be
> > ASSERT (!(!TryBestLanguage && Language =3D=3D NULL)); Pl= ease help double
> > check.
> >
> > >    //
> > >    // Initialize all allocated buffers to NU= LL
> > >    //
> > > @@ -261,21 +302,26 @@ HiiGetString (
> > >      Language =3D ""; > > >    }
> > >
> > > -  //
> > > -  // Get the best matching language from SupportedLan= guages
> > > -  //
> > > -  BestLanguage =3D GetBestLanguage (
> > > -         &nbs= p;         SupportedLanguages,
> > > -         &nbs= p;         FALSE,
> // RFC 4646 mode
> > > -         &nbs= p;         Language,
> // Highest priority
> > > -         &nbs= p;         PlatformLanguage !=3D NU= LL ? PlatformLanguage :
> "",  // Next
> > > highest priority
> > > -         &nbs= p;         SupportedLanguages,
> // Lowest priority
> > > -         &nbs= p;         NULL
> > > -         &nbs= p;         );
> > > -  if (BestLanguage =3D=3D NULL) {
> > > -    goto Error;
> > > +  if (TryBestLanguage) {
> > > +    //
> > > +    // Get the best matching language from = SupportedLanguages
> > > +    //
> > > +    BestLanguage =3D GetBestLanguage (
> > > +         &nbs= p;           SupportedLan= guages,
> > > +         &nbs= p;           FALSE,
> // RFC 4646 mode
> > > +         &nbs= p;           Language, > // Highest priority
> > > +         &nbs= p;           PlatformLang= uage !=3D NULL ?
> PlatformLanguage :
> > > + "",  // Next
> > > highest priority
> > > +         &nbs= p;           SupportedLan= guages,
> // Lowest priority
> > > +         &nbs= p;           NULL
> > > +         &nbs= p;           );
> > > +    if (BestLanguage =3D=3D NULL) {
> > > +      goto Error;
> > > +    }
> > > +  } else {
> > > +    BestLanguage =3D (CHAR8 *) Language; > > >    }
> > >
> > > +
> > >    //
> > >    // Retrieve the size of the string in the= string package for the
> > BestLanguage
> > >    //
> > > @@ -337,7 +383,7 @@ Error:
> > >    if (PlatformLanguage !=3D NULL) {
> > >      FreePool (PlatformLanguage);<= br> > > >    }
> > > -  if (BestLanguage !=3D NULL) {
> > > +  if (TryBestLanguage && BestLanguage !=3D NU= LL) {
> > >      FreePool (BestLanguage);
> > >    }
> > >
> > > --
> > > 2.17.1
> >
> >
> >
> >
> >
>
>
>
>
>









--_000_CS1PR8401MB11441BD196178C3656B48982FFB39CS1PR8401MB1144_--