From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-002e3701.pphosted.com (mx0a-002e3701.pphosted.com [148.163.147.86]) by mx.groups.io with SMTP id smtpd.web09.2340.1612489853709175256 for ; Thu, 04 Feb 2021 17:50:53 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@hpe.com header.s=pps0720 header.b=iTvwILnx; spf=pass (domain: hpe.com, ip: 148.163.147.86, mailfrom: prvs=0670c6bb95=abner.chang@hpe.com) Received: from pps.filterd (m0150241.ppops.net [127.0.0.1]) by mx0a-002e3701.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 1151lbN8029916 for ; Fri, 5 Feb 2021 01:50:53 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=9aCW1HZkM8W7DchGsA2jdnJr7RTdtuAYUMg37LaOs2w=; b=iTvwILnxFFFOZDjfAXEirNHzuan5famMZcPNAYq2p8w6LUREoaGL702gTSe0ESaMXDij jReB7lzq3bshEO+kBi5OZQQBS48dCCk/6DgEQcie5WrhFgyQsEG9JLLS4TBLOJzsGBsA btfPrjqLEgKz8fTSv83+OiPWebXjqLiJyyg+lSwNrfdtipMilG/Ziu0NH8ETlkulO+oC 2XSBUKGFZMU8YXr4HxTGsBT/I2mrduTCNvIUjPt5Vr8qIO3ToMGF65yMLLh4Vk/OtgYB anDkeqElyn8PejpTc2+J1yYZXMKnZ8llkd03pTCS70J2eFRVx0/zfjrHUTHk+sMcpa1M Lg== Received: from g9t5008.houston.hpe.com (g9t5008.houston.hpe.com [15.241.48.72]) by mx0a-002e3701.pphosted.com with ESMTP id 36fqkw9wtq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 05 Feb 2021 01:50:52 +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 g9t5008.houston.hpe.com (Postfix) with ESMTPS id B5B2156 for ; Fri, 5 Feb 2021 01:50:51 +0000 (UTC) Received: from G4W9333.americas.hpqcorp.net (16.208.32.119) by G1W8106.americas.hpqcorp.net (16.193.72.61) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 5 Feb 2021 01:50:38 +0000 Received: from G9W9210.americas.hpqcorp.net (2002:10dc:429b::10dc:429b) by G4W9333.americas.hpqcorp.net (2002:10d0:2077::10d0:2077) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 5 Feb 2021 01:50:38 +0000 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (15.241.52.10) by G9W9210.americas.hpqcorp.net (16.220.66.155) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Fri, 5 Feb 2021 01:50:37 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AGL7VFkfuuzbJNt5wqZAJN8fHoT6ntY6XZJ6yliKE2yZZPKlYyoME2u++UMK7gKz+aypWe+kD3aAujTI5CyCZxYOoYmgPpCnXiuRKSDVl+osI8Xhwj/tnB88WtC05bHRhRPF0Lqe2T8ZJQtvnrUoaK71kfqy2R8TQxS4rIW4mtIDeLXexh+EynfgtelpDGKq7LSBMP5/yVOu7P7Es+fCXDUta85NBaT6zuFsRHvzTMon/PRMMOFrWVKcovzF+NxE3sOqwgmv2jFWaR7xRU4fa4kdXdbQ3//SacCXizShSyYKS/bwMv2pNl4fDxNG2CElcl3Ej6ILQvreLFNdl7fE/g== 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=TB6CvpeCTAHn6XS2niKkWtHNTIfW+WK806a1S/VkRw8=; b=nUdqC+/AkR/SoNclsyOJz/FMPmbSXZ1An1346q1ssPL7ilpxSyk6FNdm6Few5ATDRHKgPo2dSUwBBG7XXl2YUTYQ1J/qrf5fA5heGiylP8OOuygOllfydNFrh0DPCGptj/NF4JoYQ/7+CVDZ4LhtZvBw5eUAap/xNCYfK5zogHQFDboThfdWr8c6CwfvV1jorffAKZR8q9N44xm5kIn2byni09kFL9fmKhGAsb/rx0qR1hXFtNpkdgk9DVzc4mGiJDSl3DuOprHYYx/UcjEbPFGty958K737ReTFhDaqrkHaId7kxNofrrbXNdgq832QENE6/csaiP/Tmz3bHyZzBw== 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 CS1PR8401MB0582.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:750a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3825.17; Fri, 5 Feb 2021 01:50:36 +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; Fri, 5 Feb 2021 01:50:36 +0000 From: "Abner Chang" To: "devel@edk2.groups.io" , "Chang, Abner (HPS SW/FW Technologist)" , "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+E38alKsDp1akUCgbH27fkLXf6pGTecwgABAqICAAQtOgIAAFaqygAEh2WA= Date: Fri, 5 Feb 2021 01:50:35 +0000 Message-ID: References: <20210201030542.22997-1-abner.chang@hpe.com> ,<006401d6fac5$3d48f0a0$b7dad1e0$@byosoft.com.cn> <16607E7DFB87792F.10090@groups.io> In-Reply-To: <16607E7DFB87792F.10090@groups.io> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=hpe.com; x-originating-ip: [165.225.116.142] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: d29af5d5-77c4-4bee-7477-08d8c9786e83 x-ms-traffictypediagnostic: CS1PR8401MB0582: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4714; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Z8rJlilFjW4jF7FwN9uiFxOKX5ZLo8YggrQfDCJxJrUwCWEdFxqbL+QSZz2XjGhw0sCUqOr9EsjN7J60gBbLIT5UypHpOdNd0cMlSqJegwtWMZUqB3NP8ctLKte0ssSpjY0DYGHF1ui1gSbs71hWSh0ErB42UvhZ8AJsjMY4QrTCbtlFdEk9gokcZxgSwCf46fyUNmAPf7jJuetrJ8NVs82g5nyL6yjWppI5poJWNXm9oumviRct2oIoQ7IApGHBzywFzJxACgen74arrxAHz5QxyJWqFs7NXZ/dw4OWZHxIEGB4EzykAeFSXo3ckz9al5Dj0PfRhZk4YAH9ax3HQq1AvSkK5Nc80uQU+n4OG/B04Msw5diNm1uvO0mc6/NODUgBfXROu2s1Tqsvi5t5HyC5SmMBYrmbGxjubfvmRizJMUiH9T01F6GwjVP55GgrxoZbpCThYMZv1BaR8MQrywzFW2EFnRWMhIpqyOhn7OBAUdNNq94OaitFYLUX0ghdDeSEgsx3PLaqD9eQ/4MLeLDgkRQi5jj6Iw1YhnbOHEi+9/m6nZxXabyuRGBVHNQqzVdSZJ9tOZuwnthpraYRPdx+CEr3Rz7xYB2nzAUMSs0= 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:(346002)(136003)(396003)(366004)(39860400002)(376002)(66556008)(5660300002)(52536014)(71200400001)(30864003)(478600001)(45080400002)(76116006)(316002)(64756008)(66476007)(66946007)(7696005)(55016002)(9686003)(9326002)(54906003)(166002)(8936002)(53546011)(26005)(8676002)(6506007)(83380400001)(66446008)(186003)(4326008)(110136005)(86362001)(76236003)(33656002)(2906002)(55236004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?gb2312?B?QzUyOE9lRDFXZllKL0dwRFRFbSsvWVJlVlhJQ1l1cGhVK21DcjVMM0xiU29R?= =?gb2312?B?bEVJR1NQWW96eGdWVHhaME5vVlBObWJsODh0NFhnV0k1NW5oRVlQRFFyV24r?= =?gb2312?B?RE1qOHp0UlVGUmlSOFhWTFhBZmZUakl3ZXYwZldIZ29aaFVnaXJQUHNDekNU?= =?gb2312?B?SVAyaXBIZS9sWDJFVGtvZWRFejhFcjRyK09qV2czS2ppR2VIck5tajdCVDg5?= =?gb2312?B?S2hidVdOam5SWFZjSkJHWlR6dVJGd2NsN2h0OS9LdkVueHRiT21rSzdBelhq?= =?gb2312?B?eHpGSjBwYnI5OXRkWEtuRmVsSmtEUCswSExFSHpwUXJKQ3BsL1lNYVNCUzNT?= =?gb2312?B?eTVpTDhscVErY2xjd0ZEZDZBQUd0dDVWRDNZQ1JaVHVzaE5lRkpKVXUzY3Z3?= =?gb2312?B?UnNhcTd1MmlMQkYzZ3BVdUFkNWRrZ3o4MVk0bWpRNDdwVjB1U2RMMUIvejJo?= =?gb2312?B?VkkwUHNDNW5tVjg5MDZFVGVsVWVoRnFNY1FZQ0xxL1RzZEVreEwvQXM5c3pt?= =?gb2312?B?QW9Tak95cEIwTXIzdmJ3QTFpTHZhWVpqZVlHQnUxMC9OMW15blNueFdsT014?= =?gb2312?B?VmlpSDBNUEtFZldlNzFNT3JoUEZFVCtLRVJvR3NHVjhuUGlZKzU5dTJ2L21q?= =?gb2312?B?OEFRQnYycHBUV0N3NGFWUEZINnMrVHpsSXJrLzZQbENNWjFyM1JBTFQ1Y09N?= =?gb2312?B?RFlGNW5FOXU5ZUFuM2RDQitIeWZOS3A0VEpHUjlSK21penBjRzVjRVU0M3dT?= =?gb2312?B?UjkxYmR3M0IxL2tSdm83QlVPNEtSOHBqYWxIakFmT0x5anByd3Q3R3JrSE1z?= =?gb2312?B?UFl6NXVoVkNSNU1iSkhtZGVvSXdWbnRrRjVONWlSNGpzc01pbDhmSzJQYXdC?= =?gb2312?B?d2swa0JTNzgzdko5TW5vNDlUSDVMaExwa2pzaGp5ZW1qWGFONWpVYmZBWnRN?= =?gb2312?B?N0RMeUpCckgvcUtueHI2c3p1ZWxFSWQrZ3pUZkVBNkg2aTdUQlUwRFZIbEl2?= =?gb2312?B?OGNFK1p6eHgzeEU0ei91MG5KSSt6aGlaQ1JvbHNacVNyQWhLNTFBN3hrbXph?= =?gb2312?B?UUxZT1hoRFc3d1JDc1J5b0NqVnp0bE1TRjV1T0JQbUE4d0JOdzhCNEVtUW5E?= =?gb2312?B?Z1NIMEsxVEs4NG5WUWpPQnRESTI1bXdmL2I4T1piQVBuT2x6SUVjQ1BnbzFH?= =?gb2312?B?Yzkrd2ZKajcvY1oxOG4yTXpsVGxTcDlVY0JPdHdQa1h6ekR2OFl6eXNaVWJP?= =?gb2312?B?YXpXMXJ0RG5FVkYrSEgzMG9xODkybnJvMTJhelNKcUlrNGZQa2ZjMDRmMmUy?= =?gb2312?B?QzlYT21zQ1E1UDNXeEV3L2RXUHNVdkNXU1owSnlkVWs0QjlOWDRvQW1SODJI?= =?gb2312?B?ZFlJMWl0M2UwWFlPWGRlMnBNdVNZT01WSFNRV283ZS9VbzVROFBTSUFGNERp?= =?gb2312?B?Ui9aRGZXZkU0bHEreXhGUkorYUZzemNZQkw0akxEV1VwTnRLaVErZXRhK0xl?= =?gb2312?B?NjZnL2VBODAvd3Vwa3o3QlpIZXVlSmJPRHZENTNTUzh3MmZDT0s2cURCOE56?= =?gb2312?B?MS9OaTlqeUdtZDc4ZlhMZXhYSGZKa1BBb0dVRFhyZnYrVEtrUEljL1MwUDk0?= =?gb2312?B?VGVyZDlxR1lpZGV2Z1F4VzBoV3FBd1VmZnhlUENiaXRnRzhHUUJrTk9NajJN?= =?gb2312?B?TkFLK1pLR1p3cTlCenYxZHJ2MWI5YkN5bnFQVUdGbmE3TnVVYUtkYkhrTHQy?= =?gb2312?Q?Awca8FCgUCjXEiwVYTWnV1idmcLd0ioswqA3G4A?= X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: d29af5d5-77c4-4bee-7477-08d8c9786e83 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Feb 2021 01:50:35.9282 (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: Z0eQEzjO3RW3YNa5qP3xh/NTXqmAR4lJd7OKJguAqAx9mTOMi0FjhriZnIyNQ5gol8v9NMglQMDRZt7eNjZmQg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CS1PR8401MB0582 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_13:2021-02-04,2021-02-04 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 suspectscore=0 clxscore=1015 mlxlogscore=999 phishscore=0 lowpriorityscore=0 adultscore=0 impostorscore=0 bulkscore=0 spamscore=0 malwarescore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2102050009 Content-Language: en-US Content-Type: multipart/alternative; boundary="_000_CS1PR8401MB1144242B25B31EE564EAA9DEFFB29CS1PR8401MB1144_" --_000_CS1PR8401MB1144242B25B31EE564EAA9DEFFB29CS1PR8401MB1144_ Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGkgTGltaW5nLA0KRG8geW91IGFncmVlIHRvIGtlZXAgdGhlIG9uZSBEYW5kYW4gc3VnZ2VzdGVk Pw0KDQpSZWdhcmRzLA0KQWJuZXINCg0KRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gW21haWx0 bzpkZXZlbEBlZGsyLmdyb3Vwcy5pb10gT24gQmVoYWxmIE9mIEFibmVyIENoYW5nDQpTZW50OiBU aHVyc2RheSwgRmVicnVhcnkgNCwgMjAyMSA0OjM2IFBNDQpUbzogZGV2ZWxAZWRrMi5ncm91cHMu aW87IGRhbmRhbi5iaUBpbnRlbC5jb20NCkNjOiAnRG9uZywgRXJpYycgPGVyaWMuZG9uZ0BpbnRl bC5jb20+OyBXYW5nLCBOaWNrbGUgKEhQUyBTVykgPG5pY2tsZS53YW5nQGhwZS5jb20+DQpTdWJq ZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSCB2M10gTWRlTW9kdWxlUGtnL0xpYnJhcnk6IEFk ZCBIaWlHZXRTdHJpbmdFeCB0byBVZWZpSGlpTGliIGZvciBFREsyIFJlZGZpc2gNCg0KVGhpcyBs b29rcyB0byBtZSBub3QgcXVpdGUgaW50dWl0aW9uYWwuDQogISghVHJ5QmVzdExhbmd1YWdlICYm IExhbmd1YWdlID09IE5VTEwpIHNlZW1zIG1vcmUgc3RyYWlnaHRmb3J3YXJkIGFuZCBleGFjdGx5 IHdoYXQgd2Ugd291bGQgbGlrZSB0byBjYXRjaC4NCg0KQWJuZXINCg0KR2V0IE91dGxvb2sgZm9y IEFuZHJvaWQ8aHR0cHM6Ly9ha2EubXMvZ2hlaTM2Pg0KDQpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXw0KRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW88bWFpbHRvOmRldmVsQGVkazIu Z3JvdXBzLmlvPiA8ZGV2ZWxAZWRrMi5ncm91cHMuaW88bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBz LmlvPj4gb24gYmVoYWxmIG9mIGdhb2xpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPG1h aWx0bzpnYW9saW1pbmdAYnlvc29mdC5jb20uY24+Pg0KU2VudDogVGh1cnNkYXksIEZlYnJ1YXJ5 IDQsIDIwMjEsIDM6MTMgUE0NClRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzxtYWlsdG86ZGV2ZWxA ZWRrMi5ncm91cHMuaW8+OyBDaGFuZywgQWJuZXIgKEhQUyBTVy9GVyBUZWNobm9sb2dpc3QpOyBk YW5kYW4uYmlAaW50ZWwuY29tPG1haWx0bzpkYW5kYW4uYmlAaW50ZWwuY29tPg0KQ2M6ICdEb25n LCBFcmljJzsgV2FuZywgTmlja2xlIChIUFMgU1cpDQpTdWJqZWN0OiC72Li0OiBbZWRrMi1kZXZl bF0gW1BBVENIIHYzXSBNZGVNb2R1bGVQa2cvTGlicmFyeTogQWRkIEhpaUdldFN0cmluZ0V4IHRv IFVlZmlIaWlMaWIgZm9yIEVESzIgUmVkZmlzaA0KDQoNCklmIFRyeUJlc3RMYW5ndWFnZSBpcyBG QUxFIGFuZCBMYW5ndWFnZSBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KDQpTbywgQVNTRVJUIHN0 YXRlbWVudCBzaG91bGQgYmUgQVNTRVJUIChUcnlCZXN0TGFuZ3VhZ2UgfHwgKExhbmd1YWdlICE9 DQpOVUxMKSk7DQoNCklzIHRoaXMgY2xlYXI/DQoNClRoYW5rcw0KTGltaW5nDQo+IC0tLS0t08q8 /tStvP4tLS0tLQ0KPiC3orz+yMs6IGJvdW5jZSsyNzk1Mis3MTExMCs0OTA1OTUzKzg3NjEwNDVA Z3JvdXBzLmlvPG1haWx0bzpib3VuY2UrMjc5NTIrNzExMTArNDkwNTk1Mys4NzYxMDQ1QGdyb3Vw cy5pbz4NCj4gPGJvdW5jZSsyNzk1Mis3MTExMCs0OTA1OTUzKzg3NjEwNDVAZ3JvdXBzLmlvPG1h aWx0bzpib3VuY2UrMjc5NTIrNzExMTArNDkwNTk1Mys4NzYxMDQ1QGdyb3Vwcy5pbz4+ILT6se0g QWJuZXIgQ2hhbmcNCj4gt6LLzcqxvOQ6IDIwMjHE6jLUwjPI1SAyMzoyMQ0KPiDK1bz+yMs6IGRl dmVsQGVkazIuZ3JvdXBzLmlvPG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbz47IGRhbmRhbi5i aUBpbnRlbC5jb208bWFpbHRvOmRhbmRhbi5iaUBpbnRlbC5jb20+DQo+ILOty806IERvbmcsIEVy aWMgPGVyaWMuZG9uZ0BpbnRlbC5jb208bWFpbHRvOmVyaWMuZG9uZ0BpbnRlbC5jb20+PjsgV2Fu ZywgTmlja2xlIChIUFMgU1cpDQo+IDxuaWNrbGUud2FuZ0BocGUuY29tPG1haWx0bzpuaWNrbGUu d2FuZ0BocGUuY29tPj4NCj4g1vfM4jogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjNdIE1kZU1v ZHVsZVBrZy9MaWJyYXJ5OiBBZGQNCj4gSGlpR2V0U3RyaW5nRXggdG8gVWVmaUhpaUxpYiBmb3Ig RURLMiBSZWRmaXNoDQo+DQo+IFllcyBEYW5kYW4sIHlvdXJzIGZvbGxvdyBjb2Rpbmcgc3RhbmRh cmQuIEkgd2lsbCBoYW5kbGUgdGhhdC4NCj4gQWxzbywgSSB3aWxsIGhlbHAgdG8gcHVzaCB0aGUg cGF0Y2ggdG8gdXBzdHJlYW0gd2l0aCB5b3VyIHJldmlldyB0YWcuDQo+DQo+IFRoYW5rcw0KPiBB Ym5lcg0KPg0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogZGV2ZWxA ZWRrMi5ncm91cHMuaW88bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvPiBbbWFpbHRvOmRldmVs QGVkazIuZ3JvdXBzLmlvXSBPbiBCZWhhbGYgT2YNCj4gPiBEYW5kYW4gQmkNCj4gPiBTZW50OiBX ZWRuZXNkYXksIEZlYnJ1YXJ5IDMsIDIwMjEgNzozNCBQTQ0KPiA+IFRvOiBDaGFuZywgQWJuZXIg KEhQUyBTVy9GVyBUZWNobm9sb2dpc3QpIDxhYm5lci5jaGFuZ0BocGUuY29tPG1haWx0bzphYm5l ci5jaGFuZ0BocGUuY29tPj47DQo+ID4gZGV2ZWxAZWRrMi5ncm91cHMuaW88bWFpbHRvOmRldmVs QGVkazIuZ3JvdXBzLmlvPg0KPiA+IENjOiBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29t PG1haWx0bzplcmljLmRvbmdAaW50ZWwuY29tPj47IFdhbmcsIE5pY2tsZSAoSFBTIFNXKQ0KPiA+ IDxuaWNrbGUud2FuZ0BocGUuY29tPG1haWx0bzpuaWNrbGUud2FuZ0BocGUuY29tPj4NCj4gPiBT dWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSCB2M10gTWRlTW9kdWxlUGtnL0xpYnJhcnk6 IEFkZA0KPiA+IEhpaUdldFN0cmluZ0V4IHRvIFVlZmlIaWlMaWIgZm9yIEVESzIgUmVkZmlzaA0K PiA+DQo+ID4gT25lIG1pbm9yIGNvbW1lbnQgaW5saW5lIGJlbG93Lg0KPiA+IFJldmlld2VkLWJ5 OiBEYW5kYW4gQmkgPGRhbmRhbi5iaUBpbnRlbC5jb208bWFpbHRvOmRhbmRhbi5iaUBpbnRlbC5j b20+PiB3aXRoIHRoaXMgaXMgaGFuZGxlZC4NCj4gPg0KPiA+IFRoYW5rcywNCj4gPiBEYW5kYW4N Cj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBBYm5lciBDaGFu ZyA8YWJuZXIuY2hhbmdAaHBlLmNvbTxtYWlsdG86YWJuZXIuY2hhbmdAaHBlLmNvbT4+DQo+ID4g PiBTZW50OiBNb25kYXksIEZlYnJ1YXJ5IDEsIDIwMjEgMTE6MDYgQU0NCj4gPiA+IFRvOiBkZXZl bEBlZGsyLmdyb3Vwcy5pbzxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8+DQo+ID4gPiBDYzog QmksIERhbmRhbiA8ZGFuZGFuLmJpQGludGVsLmNvbTxtYWlsdG86ZGFuZGFuLmJpQGludGVsLmNv bT4+OyBEb25nLCBFcmljDQo+ID4gPiA8ZXJpYy5kb25nQGludGVsLmNvbTxtYWlsdG86ZXJpYy5k b25nQGludGVsLmNvbT4+OyBOaWNrbGUgV2FuZyA8bmlja2xlLndhbmdAaHBlLmNvbTxtYWlsdG86 bmlja2xlLndhbmdAaHBlLmNvbT4+DQo+ID4gPiBTdWJqZWN0OiBbUEFUQ0ggdjNdIE1kZU1vZHVs ZVBrZy9MaWJyYXJ5OiBBZGQgSGlpR2V0U3RyaW5nRXggdG8NCj4gPiA+IFVlZmlIaWlMaWIgZm9y IEVESzIgUmVkZmlzaA0KPiA+ID4NCj4gPiA+IEFkZCBIaWlHZXRTdHJpbmdFeCBhbmQgbGV2ZXJh Z2VkIGJ5IEhpaUdldFN0cmluZyBmdW5jdGlvbiB0byBzdXBwb3J0DQo+ID4gPiBnZXR0aW5nIHN0 cmluZyB3aXRoIHRoZSBiZXN0IGxhbmd1YWdlIGluIG9wdGlvbmFsbHkuIFRoaXMgYXZvaWRzIHRo ZQ0KPiA+ID4gc3RyaW5nIGluIHgtdWVmaSBsYW5ndWFnZSBpcyBtaXNsZWQgdG8gdGhlIGxhbmd1 YWdlIGRlZmluZWQgYnkNCj4gPiA+ICJQbGF0Zm9ybUxhbmciIG9yIHRoZSAiU3VwcG9ydGVkIExh bmd1YWdlcyIuIFRoaXMgY2hhbmdlIGlzIGludHJvZHVjZWQNCj4gPiA+IHRvIHN1cHBvcnQgeC11 ZWZpIGtleXdvcmQgbGFuZ3VhZ2UgZm9yIGNvbmZpZ3VyaW5nIEJJT1Mgc2V0dGluZy4NCj4gPiA+ DQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBKaWF4aW4gV3UgPGppYXhpbi53dUBpbnRlbC5jb208bWFp bHRvOmppYXhpbi53dUBpbnRlbC5jb20+Pg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogU2l5dWFuIEZ1 IDxzaXl1YW4uZnVAaW50ZWwuY29tPG1haWx0bzpzaXl1YW4uZnVAaW50ZWwuY29tPj4NCj4gPiA+ IFNpZ25lZC1vZmYtYnk6IEZhbiBXYW5nIDxmYW4ud2FuZ0BpbnRlbC5jb208bWFpbHRvOmZhbi53 YW5nQGludGVsLmNvbT4+DQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBBYm5lciBDaGFuZyA8YWJuZXIu Y2hhbmdAaHBlLmNvbTxtYWlsdG86YWJuZXIuY2hhbmdAaHBlLmNvbT4+DQo+ID4gPiBDYzogRGFu ZGFuIEJpIDxkYW5kYW4uYmlAaW50ZWwuY29tPG1haWx0bzpkYW5kYW4uYmlAaW50ZWwuY29tPj4N Cj4gPiA+IENjOiBFcmljIERvbmcgPGVyaWMuZG9uZ0BpbnRlbC5jb208bWFpbHRvOmVyaWMuZG9u Z0BpbnRlbC5jb20+Pg0KPiA+ID4gQ2M6IE5pY2tsZSBXYW5nIDxuaWNrbGUud2FuZ0BocGUuY29t PG1haWx0bzpuaWNrbGUud2FuZ0BocGUuY29tPj4NCj4gPiA+IC0tLQ0KPiA+ID4gIE1kZU1vZHVs ZVBrZy9JbmNsdWRlL0xpYnJhcnkvSGlpTGliLmggICAgICAgfCA2MCArKysrKysrKysrLS0tDQo+ ID4gPiAgTWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVmaUhpaUxpYi9IaWlTdHJpbmcuYyB8IDk4DQo+ ID4gPiArKysrKysrKysrKysrKystLS0tLS0NCj4gPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDExOSBp bnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkNCj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEv TWRlTW9kdWxlUGtnL0luY2x1ZGUvTGlicmFyeS9IaWlMaWIuaA0KPiA+ID4gYi9NZGVNb2R1bGVQ a2cvSW5jbHVkZS9MaWJyYXJ5L0hpaUxpYi5oDQo+ID4gPiBpbmRleCBjNDc1Y2I3NGExLi5jZDkw MjdmZWZkIDEwMDY0NA0KPiA+ID4gLS0tIGEvTWRlTW9kdWxlUGtnL0luY2x1ZGUvTGlicmFyeS9I aWlMaWIuaA0KPiA+ID4gKysrIGIvTWRlTW9kdWxlUGtnL0luY2x1ZGUvTGlicmFyeS9IaWlMaWIu aA0KPiA+ID4gQEAgLTEsNyArMSw4IEBADQo+ID4gPiAgLyoqIEBmaWxlDQo+ID4gPiAgICBQdWJs aWMgaW5jbHVkZSBmaWxlIGZvciB0aGUgSElJIExpYnJhcnkNCj4gPiA+DQo+ID4gPiAtQ29weXJp Z2h0IChjKSAyMDA3IC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiA+ IHJlc2VydmVkLjxCUj4NCj4gPiA+ICtDb3B5cmlnaHQgKGMpIDIwMDcgLSAyMDIxLCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiA+ID4gK3Jlc2VydmVkLjxCUj4NCj4gPiA+ICsoQykg Q29weXJpZ2h0IDIwMjEgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8 QlI+DQo+ID4gPiAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQN Cj4gPiA+DQo+ID4gPiAgKiovDQo+ID4gPiBAQCAtMTIzLDE2ICsxMjQsOCBAQCBIaWlTZXRTdHJp bmcgKA0KPiA+ID4gIDsNCj4gPiA+DQo+ID4gPiAgLyoqDQo+ID4gPiAtICBSZXRyaWV2ZXMgYSBz dHJpbmcgZnJvbSBhIHN0cmluZyBwYWNrYWdlIGluIGEgc3BlY2lmaWMgbGFuZ3VhZ2UuDQo+ID4g PiBJZiB0aGUgbGFuZ3VhZ2UNCj4gPiA+IC0gIGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gYSBzdHJp bmcgZnJvbSBhIHN0cmluZyBwYWNrYWdlIGluIHRoZQ0KPiA+ID4gY3VycmVudCBwbGF0Zm9ybQ0K PiA+ID4gLSAgbGFuZ3VhZ2UgaXMgcmV0cmlldmVkLiAgSWYgdGhlIHN0cmluZyBjYW5ub3QgYmUg cmV0cmlldmVkIHVzaW5nIHRoZQ0KPiA+ID4gc3BlY2lmaWVkDQo+ID4gPiAtICBsYW5ndWFnZSBv ciB0aGUgY3VycmVudCBwbGF0Zm9ybSBsYW5ndWFnZSwgdGhlbiB0aGUgc3RyaW5nIGlzDQo+ID4g PiByZXRyaWV2ZWQgZnJvbQ0KPiA+ID4gLSAgdGhlIHN0cmluZyBwYWNrYWdlIGluIHRoZSBmaXJz dCBsYW5ndWFnZSB0aGUgc3RyaW5nIHBhY2thZ2UNCj4gPiA+IHN1cHBvcnRzLiAgVGhlDQo+ID4g PiAtICByZXR1cm5lZCBzdHJpbmcgaXMgYWxsb2NhdGVkIHVzaW5nIEFsbG9jYXRlUG9vbCgpLiAg VGhlIGNhbGxlciBpcw0KPiA+ID4gcmVzcG9uc2libGUNCj4gPiA+IC0gIGZvciBmcmVlaW5nIHRo ZSBhbGxvY2F0ZWQgYnVmZmVyIHVzaW5nIEZyZWVQb29sKCkuDQo+ID4gPiAtDQo+ID4gPiAtICBJ ZiBIaWlIYW5kbGUgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiA+IC0gIElmIFN0cmluZ0lk IGlzIDAsIHRoZW4gQVNTRVJUKCkuDQo+ID4gPiArICBSZXRyaWV2ZXMgYSBzdHJpbmcgZnJvbSBh IHN0cmluZyBwYWNrYWdlIGluIGEgc3BlY2lmaWMgbGFuZ3VhZ2UNCj4gPiA+ICsgc3BlY2lmaWVk IGluIExhbmd1YWdlICBvciBpbiB0aGUgYmVzdCBsYW5hZ3VhZ2UuIFNlZSBIaWlHZXRTdHJpbmdF eA0KPiA+ID4gKyAoKSBmb3INCj4gPiA+IHRoZSBkZXRhaWxzLg0KPiA+ID4NCj4gPiA+ICAgIEBw YXJhbVtpbl0gIEhpaUhhbmRsZSAgQSBoYW5kbGUgdGhhdCB3YXMgcHJldmlvdXNseSByZWdpc3Rl cmVkIGluDQo+ID4gPiB0aGUgSElJIERhdGFiYXNlLg0KPiA+ID4gICAgQHBhcmFtW2luXSAgU3Ry aW5nSWQgICBUaGUgaWRlbnRpZmllciBvZiB0aGUgc3RyaW5nIHRvIHJldHJpZXZlZA0KZnJvbQ0K PiB0aGUNCj4gPiA+IHN0cmluZw0KPiA+ID4gQEAgLTE1Miw4ICsxNDUsNDkgQEAgSGlpR2V0U3Ry aW5nICgNCj4gPiA+ICAgIElOIEVGSV9ISUlfSEFORExFICBIaWlIYW5kbGUsDQo+ID4gPiAgICBJ TiBFRklfU1RSSU5HX0lEICAgU3RyaW5nSWQsDQo+ID4gPiAgICBJTiBDT05TVCBDSEFSOCAgICAg Kkxhbmd1YWdlICBPUFRJT05BTA0KPiA+ID4gLSAgKQ0KPiA+ID4gLTsNCj4gPiA+ICsgICk7DQo+ ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBSZXRyaWV2ZXMgYSBzdHJpbmcgZnJvbSBhIHN0 cmluZyBwYWNrYWdlIGluIGEgc3BlY2lmaWMgbGFuZ3VhZ2Ugb3INCj4gPiA+ICtpbiB0aGUgYmVz dA0KPiA+ID4gKyAgbGFuZ3VhZ2UgYXQgZGlzY3JldGlvbiBvZiB0aGlzIGZ1bmN0aW9uIGFjY29y ZGluZyB0byB0aGUgcHJpb3JpdHkNCm9mDQo+ID4gbGFuZ3VhZ2VzLg0KPiA+ID4gKyAgVHJ5QmVz dExhbmd1YWdlIGlzIHVzZWQgdG8gZ2V0IHRoZSBzdHJpbmcgaW4gdGhlIGJlc3QgbGFuZ3VhZ2Ug b3INCj4gPiA+ICtpbiB0aGUgbGFuZ3VhZ2UNCj4gPiA+ICsgIHNwZWNpZmllZCBpbiBMYW5ndWFn ZSBwYXJhbWV0ZXIuIFRoZSBiZWhhdmlvciBpcywNCj4gPiA+ICsgIElmIFRyeUJlc3RMYW5ndWFn ZSBpcyBUUlVFLCB0aGlzIGZ1bmN0aW9uIGxvb2tzIGZvciB0aGUgYmVzdA0KPiA+ID4gK2xhbmd1 YWdlIGZvcg0KPiA+ID4gdGhlIHN0cmluZy4NCj4gPiA+ICsgICAtIElmIHRoZSBzdHJpbmcgY2Fu IG5vdCBiZSByZXRyaWV2ZWQgdXNpbmcgdGhlIHNwZWNpZmllZCBsYW5ndWFnZQ0KPiA+ID4gKyBv ciB0aGUNCj4gPiA+IGN1cnJlbnQNCj4gPiA+ICsgICAgIHBsYXRmb3JtIGxhbmd1YWdlLCB0aGVu IHRoZSBzdHJpbmcgaXMgcmV0cmlldmVkIGZyb20gdGhlIHN0cmluZw0KPiA+ID4gKyBwYWNrYWdl IGluDQo+ID4gPiB0aGUNCj4gPiA+ICsgICAgIGZpcnN0IGxhbmd1YWdlIHRoZSBzdHJpbmcgcGFj a2FnZSBzdXBwb3J0cy4NCj4gPiA+ICsgIElmIFRyeUJlc3RMYW5ndWFnZSBpcyBGQUxTRSwgTGFu Z3VhZ2UgbXVzdCBiZSBzcGVjaWZpZWQgZm9yDQo+ID4gPiArIHJldHJpZXZpbmcgdGhlDQo+ID4g PiBzdHJpbmcuDQo+ID4gPiArDQo+ID4gPiArICBUaGUgcmV0dXJuZWQgc3RyaW5nIGlzIGFsbG9j YXRlZCB1c2luZyBBbGxvY2F0ZVBvb2woKS4gIFRoZSBjYWxsZXINCj4gPiA+ICsgaXMgcmVzcG9u c2libGUgIGZvciBmcmVlaW5nIHRoZSBhbGxvY2F0ZWQgYnVmZmVyIHVzaW5nIEZyZWVQb29sKCku DQo+ID4gPiArDQo+ID4gPiArICBJZiBIaWlIYW5kbGUgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4N Cj4gPiA+ICsgIElmIFN0cmluZ0lkIGlzIDAsIHRoZW4gQVNTRVQuDQo+ID4gPiArICBJZiBUcnlC ZXN0TGFuZ3VhZ2UgaXMgRkFMRSBhbmQgTGFuZ3VhZ2UgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4N Cj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEhpaUhhbmRsZSAgICAgICAgIEEgaGFuZGxl IHRoYXQgd2FzIHByZXZpb3VzbHkNCj4gcmVnaXN0ZXJlZCBpbiB0aGUNCj4gPiA+IEhJSSBEYXRh YmFzZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFN0cmluZ0lkICAgICAgICAgIFRoZSBpZGVudGlm aWVyIG9mIHRoZSBzdHJpbmcgdG8NCj4gcmV0cmlldmVkIGZyb20NCj4gPiB0aGUNCj4gPiA+IHN0 cmluZw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBhc3Nv Y2lhdGVkIHdpdGgNCj4gSGlpSGFuZGxlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgTGFuZ3VhZ2Ug ICAgICAgICAgVGhlIGxhbmd1YWdlIG9mIHRoZSBzdHJpbmcgdG8NCj4gcmV0cmlldmUuICBJZiB0 aGlzDQo+ID4gPiBwYXJhbWV0ZXINCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlzIE5VTEwsIHRoZW4gdGhlIGN1cnJlbnQNCj4gcGxhdGZvcm0gbGFuZ3VhZ2UgaXMgdXNl ZC4gIFRoZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0IG9m IExhbmd1YWdlIG11c3QgZm9sbG93DQo+IHRoZQ0KPiA+ID4gKyBsYW5ndWFnZSBmb3JtYXQNCj4g PiA+IGFzc3VtZWQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBI SUkgRGF0YWJhc2UuDQo+ID4gPiArICBAcGFyYW1baW5dICBUcnlCZXN0TGFuZ3VhZ2UgICBJZiBU UlVFLCB0cnkgdG8gZ2V0IHRoZSBiZXN0DQo+IG1hdGNoaW5nDQo+ID4gPiBsYW5ndWFnZSBmcm9t IGFsbA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkIGxh bmd1YWdlcy5JZiBGQUxTRSwNCj4gdGhlDQo+ID4gPiArIExhbmd1YWdlIG11c3QgYmUNCj4gPiA+ IGFzc2lnbmVkDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhl IFN0cmluZ0lELg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBOVUxMICAgVGhlIHN0cmluZyBz cGVjaWZpZWQgYnkgU3RyaW5nSWQgaXMgbm90IHByZXNlbnQgaW4NCnRoZQ0KPiBzdHJpbmcNCj4g PiA+IHBhY2thZ2UuDQo+ID4gPiArICBAcmV0dmFsIE90aGVyICBUaGUgc3RyaW5nIHdhcyByZXR1 cm5lZC4NCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICtFRklfU1RSSU5HDQo+ID4gPiArRUZJ QVBJDQo+ID4gPiArSGlpR2V0U3RyaW5nRXggKA0KPiA+ID4gKyAgSU4gRUZJX0hJSV9IQU5ETEUg IEhpaUhhbmRsZSwNCj4gPiA+ICsgIElOIEVGSV9TVFJJTkdfSUQgICBTdHJpbmdJZCwNCj4gPiA+ ICsgIElOIENPTlNUIENIQVI4ICAgICAqTGFuZ3VhZ2UgIE9QVElPTkFMLA0KPiA+ID4gKyAgSU4g Qk9PTEVBTiAgICAgICAgIFRyeUJlc3RMYW5ndWFnZQ0KPiA+ID4gKyAgKTsNCj4gPiA+DQo+ID4g PiAgLyoqDQo+ID4gPiAgICBSZXRyaWV2ZXMgYSBzdHJpbmcgZnJvbSBhIHN0cmluZyBwYWNrYWdl IG5hbWVkIGJ5IEdVSUQsIGluIHRoZQ0KPiA+ID4gc3BlY2lmaWVkIGxhbmd1YWdlLg0KPiA+ID4g ZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlIaWlMaWIvSGlpU3RyaW5nLmMN Cj4gPiA+IGIvTWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVmaUhpaUxpYi9IaWlTdHJpbmcuYw0KPiA+ ID4gaW5kZXggOTUyMjlmOGE4Yy4uYTlhMTFhZWY5OCAxMDA2NDQNCj4gPiA+IC0tLSBhL01kZU1v ZHVsZVBrZy9MaWJyYXJ5L1VlZmlIaWlMaWIvSGlpU3RyaW5nLmMNCj4gPiA+ICsrKyBiL01kZU1v ZHVsZVBrZy9MaWJyYXJ5L1VlZmlIaWlMaWIvSGlpU3RyaW5nLmMNCj4gPiA+IEBAIC0xLDcgKzEs OCBAQA0KPiA+ID4gIC8qKiBAZmlsZQ0KPiA+ID4gICAgSElJIExpYnJhcnkgaW1wbGVtZW50YXRp b24gdGhhdCB1c2VzIERYRSBwcm90b2NvbHMgYW5kIHNlcnZpY2VzLg0KPiA+ID4NCj4gPiA+IC0g IENvcHlyaWdodCAoYykgMjAwNiAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz DQo+ID4gPiByZXNlcnZlZC48QlI+DQo+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDIx LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiA+ID4gKyByZXNlcnZlZC48QlI+DQo+ ID4gPiArIChDKSBDb3B5cmlnaHQgMjAyMSBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZl bG9wbWVudCBMUDxCUj4NCj4gPiA+ICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50DQo+ID4gPg0KPiA+ID4gICoqLw0KPiA+ID4gQEAgLTE5MCwxNiArMTkxLDgg QEAgSGlpR2V0UGFja2FnZVN0cmluZyAoICB9DQo+ID4gPg0KPiA+ID4gIC8qKg0KPiA+ID4gLSAg UmV0cmlldmVzIGEgc3RyaW5nIGZyb20gYSBzdHJpbmcgcGFja2FnZSBpbiBhIHNwZWNpZmljIGxh bmd1YWdlLg0KPiA+ID4gSWYgdGhlIGxhbmd1YWdlDQo+ID4gPiAtICBpcyBub3Qgc3BlY2lmaWVk LCB0aGVuIGEgc3RyaW5nIGZyb20gYSBzdHJpbmcgcGFja2FnZSBpbiB0aGUNCj4gPiA+IGN1cnJl bnQgcGxhdGZvcm0NCj4gPiA+IC0gIGxhbmd1YWdlIGlzIHJldHJpZXZlZC4gIElmIHRoZSBzdHJp bmcgY2FuIG5vdCBiZSByZXRyaWV2ZWQgdXNpbmcNCj4gPiA+IHRoZSBzcGVjaWZpZWQNCj4gPiA+ IC0gIGxhbmd1YWdlIG9yIHRoZSBjdXJyZW50IHBsYXRmb3JtIGxhbmd1YWdlLCB0aGVuIHRoZSBz dHJpbmcgaXMNCj4gPiA+IHJldHJpZXZlZCBmcm9tDQo+ID4gPiAtICB0aGUgc3RyaW5nIHBhY2th Z2UgaW4gdGhlIGZpcnN0IGxhbmd1YWdlIHRoZSBzdHJpbmcgcGFja2FnZQ0KPiA+ID4gc3VwcG9y dHMuICBUaGUNCj4gPiA+IC0gIHJldHVybmVkIHN0cmluZyBpcyBhbGxvY2F0ZWQgdXNpbmcgQWxs b2NhdGVQb29sKCkuICBUaGUgY2FsbGVyIGlzDQo+ID4gPiByZXNwb25zaWJsZQ0KPiA+ID4gLSAg Zm9yIGZyZWVpbmcgdGhlIGFsbG9jYXRlZCBidWZmZXIgdXNpbmcgRnJlZVBvb2woKS4NCj4gPiA+ IC0NCj4gPiA+IC0gIElmIEhpaUhhbmRsZSBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4g LSAgSWYgU3RyaW5nSWQgaXMgMCwgdGhlbiBBU1NFVC4NCj4gPiA+ICsgIFJldHJpZXZlcyBhIHN0 cmluZyBmcm9tIGEgc3RyaW5nIHBhY2thZ2UgaW4gYSBzcGVjaWZpYyBsYW5ndWFnZQ0KPiA+ID4g KyBzcGVjaWZpZWQgaW4gTGFuZ3VhZ2UgIG9yIGluIHRoZSBiZXN0IGxhbmFndWFnZS4gU2VlIEhp aUdldFN0cmluZ0V4DQo+ID4gPiArICgpIGZvcg0KPiA+ID4gdGhlIGRldGFpbHMuDQo+ID4gPg0K PiA+ID4gICAgQHBhcmFtW2luXSAgSGlpSGFuZGxlICBBIGhhbmRsZSB0aGF0IHdhcyBwcmV2aW91 c2x5IHJlZ2lzdGVyZWQgaW4NCj4gPiA+IHRoZSBISUkgRGF0YWJhc2UuDQo+ID4gPiAgICBAcGFy YW1baW5dICBTdHJpbmdJZCAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBzdHJpbmcgdG8gcmV0cmll dmVkDQpmcm9tDQo+IHRoZQ0KPiA+ID4gc3RyaW5nDQo+ID4gPiBAQCAtMjIwLDYgKzIxMyw1MSBA QCBIaWlHZXRTdHJpbmcgKA0KPiA+ID4gICAgSU4gRUZJX1NUUklOR19JRCAgIFN0cmluZ0lkLA0K PiA+ID4gICAgSU4gQ09OU1QgQ0hBUjggICAgICpMYW5ndWFnZSAgT1BUSU9OQUwNCj4gPiA+ICAg ICkNCj4gPiA+ICt7DQo+ID4gPiArICByZXR1cm4gSGlpR2V0U3RyaW5nRXggKEhpaUhhbmRsZSwg U3RyaW5nSWQsIExhbmd1YWdlLCBUUlVFKTsgfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4g KyAgUmV0cmlldmVzIGEgc3RyaW5nIGZyb20gYSBzdHJpbmcgcGFja2FnZSBpbiBhIHNwZWNpZmlj IGxhbmd1YWdlIG9yDQo+ID4gPiAraW4gdGhlIGJlc3QNCj4gPiA+ICsgIGxhbmd1YWdlIGF0IGRp c2NyZXRpb24gb2YgdGhpcyBmdW5jdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHByaW9yaXR5DQpvZg0K PiA+IGxhbmd1YWdlcy4NCj4gPiA+ICsgIFRyeUJlc3RMYW5ndWFnZSBpcyB1c2VkIHRvIGdldCB0 aGUgc3RyaW5nIGluIHRoZSBiZXN0IGxhbmd1YWdlIG9yDQo+ID4gPiAraW4gdGhlIGxhbmd1YWdl DQo+ID4gPiArICBzcGVjaWZpZWQgaW4gTGFuZ3VhZ2UgcGFyYW1ldGVyLiBUaGUgYmVoYXZpb3Ig aXMsDQo+ID4gPiArICBJZiBUcnlCZXN0TGFuZ3VhZ2UgaXMgVFJVRSwgdGhpcyBmdW5jdGlvbiBs b29rcyBmb3IgdGhlIGJlc3QNCj4gPiA+ICtsYW5ndWFnZSBmb3INCj4gPiA+IHRoZSBzdHJpbmcu DQo+ID4gPiArICAgLSBJZiB0aGUgc3RyaW5nIGNhbiBub3QgYmUgcmV0cmlldmVkIHVzaW5nIHRo ZSBzcGVjaWZpZWQgbGFuZ3VhZ2UNCj4gPiA+ICsgb3IgdGhlDQo+ID4gPiBjdXJyZW50DQo+ID4g PiArICAgICBwbGF0Zm9ybSBsYW5ndWFnZSwgdGhlbiB0aGUgc3RyaW5nIGlzIHJldHJpZXZlZCBm cm9tIHRoZSBzdHJpbmcNCj4gPiA+ICsgcGFja2FnZSBpbg0KPiA+ID4gdGhlDQo+ID4gPiArICAg ICBmaXJzdCBsYW5ndWFnZSB0aGUgc3RyaW5nIHBhY2thZ2Ugc3VwcG9ydHMuDQo+ID4gPiArICBJ ZiBUcnlCZXN0TGFuZ3VhZ2UgaXMgRkFMU0UsIExhbmd1YWdlIG11c3QgYmUgc3BlY2lmaWVkIGZv cg0KPiA+ID4gKyByZXRyaWV2aW5nIHRoZQ0KPiA+ID4gc3RyaW5nLg0KPiA+ID4gKw0KPiA+ID4g KyAgVGhlIHJldHVybmVkIHN0cmluZyBpcyBhbGxvY2F0ZWQgdXNpbmcgQWxsb2NhdGVQb29sKCku ICBUaGUgY2FsbGVyDQo+ID4gPiArIGlzIHJlc3BvbnNpYmxlICBmb3IgZnJlZWluZyB0aGUgYWxs b2NhdGVkIGJ1ZmZlciB1c2luZyBGcmVlUG9vbCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgSWYgSGlp SGFuZGxlIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gPiArICBJZiBTdHJpbmdJZCBpcyAw LCB0aGVuIEFTU0VULg0KPiA+ID4gKyAgSWYgVHJ5QmVzdExhbmd1YWdlIGlzIEZBTEUgYW5kIExh bmd1YWdlIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1b aW5dICBIaWlIYW5kbGUgICAgICAgICBBIGhhbmRsZSB0aGF0IHdhcyBwcmV2aW91c2x5DQo+IHJl Z2lzdGVyZWQgaW4gdGhlDQo+ID4gPiBISUkgRGF0YWJhc2UuDQo+ID4gPiArICBAcGFyYW1baW5d ICBTdHJpbmdJZCAgICAgICAgICBUaGUgaWRlbnRpZmllciBvZiB0aGUgc3RyaW5nIHRvDQo+IHJl dHJpZXZlZCBmcm9tDQo+ID4gdGhlDQo+ID4gPiBzdHJpbmcNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgYXNzb2NpYXRlZCB3aXRoDQo+IEhpaUhhbmRsZS4N Cj4gPiA+ICsgIEBwYXJhbVtpbl0gIExhbmd1YWdlICAgICAgICAgIFRoZSBsYW5ndWFnZSBvZiB0 aGUgc3RyaW5nIHRvDQo+IHJldHJpZXZlLiAgSWYgdGhpcw0KPiA+ID4gcGFyYW1ldGVyDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBOVUxMLCB0aGVuIHRoZSBjdXJy ZW50DQo+IHBsYXRmb3JtIGxhbmd1YWdlIGlzIHVzZWQuICBUaGUNCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCBvZiBMYW5ndWFnZSBtdXN0IGZvbGxvdw0KPiB0 aGUNCj4gPiA+ICsgbGFuZ3VhZ2UgZm9ybWF0DQo+ID4gPiBhc3N1bWVkDQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgSElJIERhdGFiYXNlLg0KPiA+ID4gKyAgQHBh cmFtW2luXSAgVHJ5QmVzdExhbmd1YWdlICAgSWYgVFJVRSwgdHJ5IHRvIGdldCB0aGUgYmVzdA0K PiBtYXRjaGluZw0KPiA+ID4gbGFuZ3VhZ2UgZnJvbSBhbGwNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBsYW5ndWFnZXMuSWYgRkFMU0UsDQo+IHRoZQ0K PiA+ID4gKyBMYW5ndWFnZSBtdXN0IGJlDQo+ID4gPiBhc3NpZ25lZA0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBTdHJpbmdJRC4NCj4gPiA+ICsNCj4gPiA+ ICsgIEByZXR2YWwgTlVMTCAgIFRoZSBzdHJpbmcgc3BlY2lmaWVkIGJ5IFN0cmluZ0lkIGlzIG5v dCBwcmVzZW50IGluDQp0aGUNCj4gc3RyaW5nDQo+ID4gPiBwYWNrYWdlLg0KPiA+ID4gKyAgQHJl dHZhbCBPdGhlciAgVGhlIHN0cmluZyB3YXMgcmV0dXJuZWQuDQo+ID4gPiArDQo+ID4gPiArKiov DQo+ID4gPiArRUZJX1NUUklORw0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0hpaUdldFN0cmluZ0V4 ICgNCj4gPiA+ICsgIElOIEVGSV9ISUlfSEFORExFICBIaWlIYW5kbGUsDQo+ID4gPiArICBJTiBF RklfU1RSSU5HX0lEICAgU3RyaW5nSWQsDQo+ID4gPiArICBJTiBDT05TVCBDSEFSOCAgICAgKkxh bmd1YWdlICBPUFRJT05BTCwNCj4gPiA+ICsgIElOIEJPT0xFQU4gICAgICAgICBUcnlCZXN0TGFu Z3VhZ2UNCj4gPiA+ICsgICkNCj4gPiA+ICB7DQo+ID4gPiAgICBFRklfU1RBVFVTICBTdGF0dXM7 DQo+ID4gPiAgICBVSU5UTiAgICAgICBTdHJpbmdTaXplOw0KPiA+ID4gQEAgLTIzMSw3ICsyNjks MTAgQEAgSGlpR2V0U3RyaW5nICgNCj4gPiA+DQo+ID4gPiAgICBBU1NFUlQgKEhpaUhhbmRsZSAh PSBOVUxMKTsNCj4gPiA+ICAgIEFTU0VSVCAoU3RyaW5nSWQgIT0gMCk7DQo+ID4gPiAtDQo+ID4g PiArICAvLw0KPiA+ID4gKyAgLy8gTGFuZ3VhZ2UgbXVzdCBiZSBzcGVjaWZpZWQgaWYgVHJ5QmVz dExhbmd1YWdlID0gRkFMU0UuDQo+ID4gPiArICAvLw0KPiA+ID4gKyAgQVNTRVJUICghKFRyeUJl c3RMYW5ndWFnZSA9PSBGQUxTRSAmJiBMYW5ndWFnZSA9PSBOVUxMKSk7DQo+ID4gT25lIG1pbm9y IGhlcmUsIGluIG9yZGVyIHRvIGZvbGxvd2luZyB0aGUgY29kaW5nIHN0eWxlLCB0aGlzIHNlZW1z DQpzaG91bGQgYmUNCj4gPiBBU1NFUlQgKCEoIVRyeUJlc3RMYW5ndWFnZSAmJiBMYW5ndWFnZSA9 PSBOVUxMKSk7IFBsZWFzZSBoZWxwIGRvdWJsZQ0KPiA+IGNoZWNrLg0KPiA+DQo+ID4gPiAgICAv Lw0KPiA+ID4gICAgLy8gSW5pdGlhbGl6ZSBhbGwgYWxsb2NhdGVkIGJ1ZmZlcnMgdG8gTlVMTA0K PiA+ID4gICAgLy8NCj4gPiA+IEBAIC0yNjEsMjEgKzMwMiwyNiBAQCBIaWlHZXRTdHJpbmcgKA0K PiA+ID4gICAgICBMYW5ndWFnZSA9ICIiOw0KPiA+ID4gICAgfQ0KPiA+ID4NCj4gPiA+IC0gIC8v DQo+ID4gPiAtICAvLyBHZXQgdGhlIGJlc3QgbWF0Y2hpbmcgbGFuZ3VhZ2UgZnJvbSBTdXBwb3J0 ZWRMYW5ndWFnZXMNCj4gPiA+IC0gIC8vDQo+ID4gPiAtICBCZXN0TGFuZ3VhZ2UgPSBHZXRCZXN0 TGFuZ3VhZ2UgKA0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICBTdXBwb3J0ZWRMYW5ndWFnZXMs DQo+ID4gPiAtICAgICAgICAgICAgICAgICAgIEZBTFNFLA0KPiAvLyBSRkMgNDY0NiBtb2RlDQo+ ID4gPiAtICAgICAgICAgICAgICAgICAgIExhbmd1YWdlLA0KPiAvLyBIaWdoZXN0IHByaW9yaXR5 DQo+ID4gPiAtICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtTGFuZ3VhZ2UgIT0gTlVMTCA/IFBs YXRmb3JtTGFuZ3VhZ2UgOg0KPiAiIiwgIC8vIE5leHQNCj4gPiA+IGhpZ2hlc3QgcHJpb3JpdHkN Cj4gPiA+IC0gICAgICAgICAgICAgICAgICAgU3VwcG9ydGVkTGFuZ3VhZ2VzLA0KPiAvLyBMb3dl c3QgcHJpb3JpdHkNCj4gPiA+IC0gICAgICAgICAgICAgICAgICAgTlVMTA0KPiA+ID4gLSAgICAg ICAgICAgICAgICAgICApOw0KPiA+ID4gLSAgaWYgKEJlc3RMYW5ndWFnZSA9PSBOVUxMKSB7DQo+ ID4gPiAtICAgIGdvdG8gRXJyb3I7DQo+ID4gPiArICBpZiAoVHJ5QmVzdExhbmd1YWdlKSB7DQo+ ID4gPiArICAgIC8vDQo+ID4gPiArICAgIC8vIEdldCB0aGUgYmVzdCBtYXRjaGluZyBsYW5ndWFn ZSBmcm9tIFN1cHBvcnRlZExhbmd1YWdlcw0KPiA+ID4gKyAgICAvLw0KPiA+ID4gKyAgICBCZXN0 TGFuZ3VhZ2UgPSBHZXRCZXN0TGFuZ3VhZ2UgKA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg IFN1cHBvcnRlZExhbmd1YWdlcywNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBGQUxTRSwN Cj4gLy8gUkZDIDQ2NDYgbW9kZQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdl LA0KPiAvLyBIaWdoZXN0IHByaW9yaXR5DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgUGxh dGZvcm1MYW5ndWFnZSAhPSBOVUxMID8NCj4gUGxhdGZvcm1MYW5ndWFnZSA6DQo+ID4gPiArICIi LCAgLy8gTmV4dA0KPiA+ID4gaGlnaGVzdCBwcmlvcml0eQ0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgIFN1cHBvcnRlZExhbmd1YWdlcywNCj4gLy8gTG93ZXN0IHByaW9yaXR5DQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgTlVMTA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICk7 DQo+ID4gPiArICAgIGlmIChCZXN0TGFuZ3VhZ2UgPT0gTlVMTCkgew0KPiA+ID4gKyAgICAgIGdv dG8gRXJyb3I7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsgIH0gZWxzZSB7DQo+ID4gPiArICAgIEJl c3RMYW5ndWFnZSA9IChDSEFSOCAqKSBMYW5ndWFnZTsNCj4gPiA+ICAgIH0NCj4gPiA+DQo+ID4g PiArDQo+ID4gPiAgICAvLw0KPiA+ID4gICAgLy8gUmV0cmlldmUgdGhlIHNpemUgb2YgdGhlIHN0 cmluZyBpbiB0aGUgc3RyaW5nIHBhY2thZ2UgZm9yIHRoZQ0KPiA+IEJlc3RMYW5ndWFnZQ0KPiA+ ID4gICAgLy8NCj4gPiA+IEBAIC0zMzcsNyArMzgzLDcgQEAgRXJyb3I6DQo+ID4gPiAgICBpZiAo UGxhdGZvcm1MYW5ndWFnZSAhPSBOVUxMKSB7DQo+ID4gPiAgICAgIEZyZWVQb29sIChQbGF0Zm9y bUxhbmd1YWdlKTsNCj4gPiA+ICAgIH0NCj4gPiA+IC0gIGlmIChCZXN0TGFuZ3VhZ2UgIT0gTlVM TCkgew0KPiA+ID4gKyAgaWYgKFRyeUJlc3RMYW5ndWFnZSAmJiBCZXN0TGFuZ3VhZ2UgIT0gTlVM TCkgew0KPiA+ID4gICAgICBGcmVlUG9vbCAoQmVzdExhbmd1YWdlKTsNCj4gPiA+ICAgIH0NCj4g PiA+DQo+ID4gPiAtLQ0KPiA+ID4gMi4xNy4xDQo+ID4NCj4gPg0KPiA+DQo+ID4NCj4gPg0KPg0K Pg0KPg0KPg0KPg0KDQoNCg0KDQoNCg0KDQoNCg0K --_000_CS1PR8401MB1144242B25B31EE564EAA9DEFFB29CS1PR8401MB1144_ Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: quoted-printable

Hi Liming= ,

Do you ag= ree to keep the one Dandan suggested?

&nbs= p;

Regards,<= o:p>

Abner

&nbs= p;

From: devel@edk2.groups.io [mailto:= devel@edk2.groups.io] On Behalf Of Abner Chang
Sent: Thursday, February 4, 2021 4:36 PM
To: devel@edk2.groups.io; dandan.bi@intel.com
Cc: 'Dong, Eric' <eric.dong@intel.com>; Wang, Nickle (HPS SW)= <nickle.wang@hpe.com>
Subject: Re: [edk2-devel] [PATCH v3] MdeModulePkg/Library: Add HiiG= etStringEx to UefiHiiLib for EDK2 Redfish

 

This looks to me not quite intuitional.

 !(!TryBestLanguage && Language =3D=3D NULL) seems more = straightforward and exactly what we would like to catch.<= /p>

 

Abner 

 

Get Outlook for A= ndroid

 


From: devel@edk2.groups.io <devel@edk2.groups.io> on behalf o= f gaoliming <gaoliming@byoso= ft.com.cn>
Sent: Thursday,= February 4, 2021, 3:13 PM
To: devel@edk2.groups.io; Chang, Abner (HPS SW= /FW Technologist); dandan.bi@intel.c= om
Cc: 'Dong, Eric= '; Wang, Nickle (HPS SW)
Subject: =BB=D8=B8=B4: [edk2-devel] [PATCH v3] MdeModulePkg/Library: Add Hii= GetStringEx 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+87610= 45@groups.io
> <b= ounce+27952+71110+4905953+8761045@groups.io> =B4=FA=B1=ED Abner 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 (HPS S= W)
> <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.com>;
> > devel@edk2.groups.io=
> > Cc: Dong, Eric <eric.d= ong@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.grou= ps.io
> > > Cc: Bi, Dandan <d= andan.bi@intel.com>; Dong, Eric
> > > <eric.dong@intel.= com>; Nickle Wang <nickle.= wang@hpe.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 <da= ndan.bi@intel.com>
> > > Cc: Eric Dong <er= ic.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_CS1PR8401MB1144242B25B31EE564EAA9DEFFB29CS1PR8401MB1144_--