From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=40.92.4.20; helo=nam02-cy1-obe.outbound.protection.outlook.com; envelope-from=vanjeff_919@hotmail.com; receiver=edk2-devel@lists.01.org Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-oln040092004020.outbound.protection.outlook.com [40.92.4.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id F12DA21B00DC4 for ; Thu, 16 Nov 2017 23:19:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=UcNUX1TwxxZVh6sRDpu1deVe6UzHDKsp7FWyDsj6IXc=; b=AdUEwLmt9g3fYk4VeeOyLAR/uJ8CBIF2mrsI8H0pO1acWb0zMr/fylwV8fjPak4WgP5cH6TXZRFDmIt7Xn+8H9xK3gD2DBvGIiJi4u5G/kKfy80g1aid2DZ4JBFx0khQO0fciId/AQ9lGmatIf1t7x/kAkyF20zh0vN2lN4XUaW9zf+2SKhcz0muWSttLcPqOHYZnZdUlr/yD+SZHUuoEilEhlVHHKhNa0pcDcuhEHze9p1vKWWr0FcNmSjJN5U4h3I7K7MgPjQVw4yXZOLCmdt2aQgGRFoykRqpB7YQZpXFLUy2yC9BZr7rEb6ztwk2yYU09MEqsr6QaWkwj/JQZg== Received: from CY1NAM02FT048.eop-nam02.prod.protection.outlook.com (10.152.74.57) by CY1NAM02HT064.eop-nam02.prod.protection.outlook.com (10.152.75.76) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.20.218.12; Fri, 17 Nov 2017 07:24:03 +0000 Received: from CO2PR19MB0137.namprd19.prod.outlook.com (10.152.74.59) by CY1NAM02FT048.mail.protection.outlook.com (10.152.74.227) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.20.218.12 via Frontend Transport; Fri, 17 Nov 2017 07:24:02 +0000 Received: from CO2PR19MB0137.namprd19.prod.outlook.com ([10.161.82.25]) by CO2PR19MB0137.namprd19.prod.outlook.com ([10.161.82.25]) with mapi id 15.20.0239.007; Fri, 17 Nov 2017 07:24:02 +0000 From: Fan Jeff To: Paulo Alcantara , "edk2-devel@lists.01.org" CC: Laszlo Ersek , Eric Dong Thread-Topic: [edk2] [RFC v3 1/3] UefiCpuPkg/CpuExceptionHandlerLib/X64: Add stack trace support Thread-Index: AQHTXyYmFrGNIJLhvEWejc8xVtEVbaMYKxAb Date: Fri, 17 Nov 2017 07:24:02 +0000 Message-ID: References: , <86955028c6e8f82de1dc1e8206d2b5441cbbf33c.1510868616.git.pcacjr@zytor.com> In-Reply-To: <86955028c6e8f82de1dc1e8206d2b5441cbbf33c.1510868616.git.pcacjr@zytor.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=hotmail.com; x-incomingtopheadermarker: OriginalChecksum:DB46EF4A513050EBEA798D05EEC9889E3B79ECD0896F1E9D05E731F1EF01BD1E; UpperCasedChecksum:6CC689805DBBA3977A7D4DDDD62A5D719351F0B35A0923C955597BB96631AF63; SizeAsReceived:7318; Count:47 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [Z4cahm42+iEcWAA6LrqEzuMxQTxhSejJ] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; CY1NAM02HT064; 6:OYIMqcSt9LSI4Vi8SxT2uzVMLx/11mUrR05wmUYSB05b0unBWskl/9g16kZDl9sQ/xmirvsLq1881SWGcZbNcCSNp0uxMVqh65UeibFp1sEdMZ65PgB5aaq+EbGJYa9W6YvpdXKJU5eu82GLsubirgv805mAiZBeV6zvHVjPI8e9KhyDKVYW2wLWyarc9S7cI04I2e9ntHIX51Ql81HRBpu5PoD/5TGXFoCBIqE0N/EBfzBcWLz72f38DesVZ5eqsgUrp/S1mpwipmnSjlMZxFl/YoIAjQK/emmsAEVV8VlC5zR5mVaPsAkeLSWUwGGj3doQP9ubyXrkVY+IYsZYJ/53fz8eMl7DCY1szENkP98=; 5:9pzAa8L/z6FwDk+ezgiscZp0JElLkrSMIeFx73R3GvYRqpHseIev3hzr7WTR9KVm/hpFjEt6fwBq0YPbMoZBzqw/2fnxpIYFiebnx7Psl9d8u6gVa6fak5MyPvPCzUkFwXmDB4uxG7ZbYbDJMnRLRMzjvEvnas+ZZJiInUOmwNk=; 24:Yhjzrm9/octkiutSes2FPPcHx3IqF+koncfjRfjEegeNsE8TNBhMz5uSoaclDwSe2DmNpzaQmXOpMSmPgQzEp8+pQ44oAl0XednbsTxJhz8=; 7:ZNJ6J1BAuD0LDmyqBajVdSthPUIwasYR1hYA6wIk6z9c8zHY27eFn6PHZ9PGyHBTDv/7gYbpV8WficK/sLlKM7EoN8QLeKF93ceEcRGu/rrUekY8LbUoBI7/64TXWBdo49QFfa9mXI2j/jxEs/9WfaFv4Ef9zVp03d1FazoCtVZufxbQ5ypCj/JvouBsvAuXZHaYVPQdt/99S/zQDcZ12J66GJ8IEeiNQ1IswWm+Owt+sNnCxBHDvXmEVb+Uvg51 x-incomingheadercount: 47 x-eopattributedmessage: 0 x-ms-office365-filtering-correlation-id: 05423e21-0ae9-4bb6-0cca-08d52d8c2dce x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201702061074)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(2017031322404)(1601125374)(1603101448)(1701031045); SRVR:CY1NAM02HT064; x-ms-traffictypediagnostic: CY1NAM02HT064: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(444000031); SRVR:CY1NAM02HT064; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY1NAM02HT064; x-forefront-prvs: 049486C505 x-forefront-antispam-report: SFV:NSPM; SFS:(7070007)(98901004); DIR:OUT; SFP:1901; SCL:1; SRVR:CY1NAM02HT064; H:CO2PR19MB0137.namprd19.prod.outlook.com; FPR:; SPF:None; LANG:; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: hotmail.com X-MS-Exchange-CrossTenant-Network-Message-Id: 05423e21-0ae9-4bb6-0cca-08d52d8c2dce X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Nov 2017 07:24:02.8224 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1NAM02HT064 X-Content-Filtered-By: Mailman/MimeDel 2.1.22 Subject: =?UTF-8?B?562U5aSNOiBbUkZDIHYzIDEvM10gVWVmaUNwdVBrZy9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NDogQWRkIHN0YWNrIHRyYWNlIHN1cHBvcnQ=?= X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Nov 2017 07:19:54 -0000 Content-Language: zh-CN Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 UGF1bG8sDQoNCg0KSSBkb24ndCB1bmRlcnN0YW5kIHdoeSB5b3UgLSAxIHdoZW4gY2FsY3VsYXRp bmcgRUlQIG9mZnNldCBpbiBpbWFnZSwgaXQgY29uZnVzZWQgbWUuDQoNCg0KKyAgZm9yICg7Oykg ew0KKyAgICAvLw0KKyAgICAvLyBQcmludCBzdGFjayBmcmFtZSBpbiB0aGUgZm9sbG93aW5nIGZv cm1hdDoNCisgICAgLy8NCisgICAgLy8gIyA8UklQPiBAIDxJbWFnZUJhc2U+KzxSZWxPZmZzZXQ+ IChSQlApIGluIFs8TW9kdWxlTmFtZT4gfCA/Pz8/XQ0KKyAgICAvLw0KKyAgICBJbnRlcm5hbFBy aW50TWVzc2FnZSAoDQorICAgICAgIiVkIDB4JTAxNmx4IEAgMHglMDE2bHgrMHgleCAoMHglMDE2 bHgpIGluICVhXG4iLA0KKyAgICAgICpVbndvdW5kU3RhY2tzQ291bnQgLSAxLA0KKyAgICAgIFJp cCwNCisgICAgICBJbWFnZUJhc2UsDQorICAgICAgUmlwIC0gSW1hZ2VCYXNlIC0gMSwgICAvLyA/ Pz8/DQorICAgICAgUmJwLA0KKyAgICAgIFBkYkZpbGVOYW1lDQorICAgICAgKTsNCisNCg0KSmVm Zg0KDQoNCg0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0Kt6K8/sjLOiBlZGsy LWRldmVsIDxlZGsyLWRldmVsLWJvdW5jZXNAbGlzdHMuMDEub3JnPiC0+rHtIFBhdWxvIEFsY2Fu dGFyYSA8cGNhY2pyQHp5dG9yLmNvbT4NCreiy83KsbzkOiAyMDE3xOoxMdTCMTfI1SA1OjU2DQrK 1bz+yMs6IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQqzrcvNOiBMYXN6bG8gRXJzZWs7IEVyaWMg RG9uZw0K1vfM4jogW2VkazJdIFtSRkMgdjMgMS8zXSBVZWZpQ3B1UGtnL0NwdUV4Y2VwdGlvbkhh bmRsZXJMaWIvWDY0OiBBZGQgc3RhY2sgdHJhY2Ugc3VwcG9ydA0KDQpUaGlzIHBhdGNoIGFkZHMg c3RhY2sgdHJhY2Ugc3VwcG9ydCBkdXJpbmcgYSBYNjQgQ1BVIGV4Y2VwdGlvbi4NCg0KSXQgd2ls bCBkdW1wIG91dCBiYWNrIHRyYWNlLCBzdGFjayBjb250ZW50cyBhcyB3ZWxsIGFzIGltYWdlIG1v ZHVsZQ0KbmFtZXMgdGhhdCB3ZXJlIHBhcnQgb2YgdGhlIGNhbGwgc3RhY2suDQoNCkNvbnRyaWJ1 dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAxLjENCkNjOiBFcmlj IERvbmcgPGVyaWMuZG9uZ0BpbnRlbC5jb20+DQpDYzogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVk aGF0LmNvbT4NClNpZ25lZC1vZmYtYnk6IFBhdWxvIEFsY2FudGFyYSA8cGNhY2pyQHp5dG9yLmNv bT4NCi0tLQ0KIFVlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9B cmNoRXhjZXB0aW9uSGFuZGxlci5jIHwgMzc2ICsrKysrKysrKysrKysrKysrKystDQogMSBmaWxl IGNoYW5nZWQsIDM3NCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0 IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0FyY2hFeGNl cHRpb25IYW5kbGVyLmMgYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxp Yi9YNjQvQXJjaEV4Y2VwdGlvbkhhbmRsZXIuYw0KaW5kZXggNjVmMGNmZjY4MC4uZmU3NzZjY2My ZCAxMDA2NDQNCi0tLSBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGli L1g2NC9BcmNoRXhjZXB0aW9uSGFuZGxlci5jDQorKysgYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1 RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvQXJjaEV4Y2VwdGlvbkhhbmRsZXIuYw0KQEAgLTE0LDYg KzE0LDExIEBADQoNCiAjaW5jbHVkZSAiQ3B1RXhjZXB0aW9uQ29tbW9uLmgiDQoNCisvLw0KKy8v IFVua25vd24gUERCIGZpbGUgbmFtZQ0KKy8vDQorR0xPQkFMX1JFTU9WRV9JRl9VTlJFRkVSRU5D RUQgQ09OU1QgQ0hBUjggKm1Vbmtub3duUGRiRmlsZU5hbWUgPSAiPz8/PyI7DQorDQogLyoqDQog ICBSZXR1cm4gYWRkcmVzcyBtYXAgb2YgZXhjZXB0aW9uIGhhbmRsZXIgdGVtcGxhdGUgc28gdGhh dCBDIGNvZGUgY2FuIGdlbmVyYXRlDQogICBleGNlcHRpb24gdGFibGVzLg0KQEAgLTI0Miw2ICsy NDcsMzU3IEBAIER1bXBDcHVDb250ZXh0ICgNCiAgICAgKTsNCiB9DQoNCisvKioNCisgIEdldCBh YnNvbHV0ZSBwYXRoIGFuZCBmaWxlIG5hbWUgb2YgUERCIGZpbGUgaW4gUEUvQ09GRiBpbWFnZS4N CisNCisgIEBwYXJhbVtpbl0gIEltYWdlQmFzZSAgICAgICAgICAgIEJhc2UgYWRkcmVzcyBvZiBQ RS9DT0ZGIGltYWdlLg0KKyAgQHBhcmFtW291dF0gUGRiQWJzb2x1dGVGaWxlUGF0aCAgQWJzb2x1 dGUgcGF0aCBvZiBQREIgZmlsZS4NCisgIEBwYXJhbVtvdXRdIFBkYkZpbGVOYW1lICAgICAgICAg IEZpbGUgbmFtZSBvZiBQREIgZmlsZS4NCisqKi8NCitTVEFUSUMNCitWT0lEDQorR2V0UGRiRmls ZU5hbWUgKA0KKyAgSU4gIFVJTlROICAgIEltYWdlQmFzZSwNCisgIE9VVCBDSEFSOCAgICAqKlBk YkFic29sdXRlRmlsZVBhdGgsDQorICBPVVQgQ0hBUjggICAgKipQZGJGaWxlTmFtZQ0KKyAgKQ0K K3sNCisgIFZPSUQgICAqUGRiUG9pbnRlcjsNCisgIENIQVI4ICAqU3RyOw0KKw0KKyAgLy8NCisg IC8vIEdldCBQREIgZmlsZSBuYW1lIGZyb20gUEUvQ09GRiBpbWFnZQ0KKyAgLy8NCisgIFBkYlBv aW50ZXIgPSBQZUNvZmZMb2FkZXJHZXRQZGJQb2ludGVyICgoVk9JRCAqKUltYWdlQmFzZSk7DQor ICBpZiAoUGRiUG9pbnRlciA9PSBOVUxMKSB7DQorICAgIC8vDQorICAgIC8vIE5vIFBEQiBmaWxl IG5hbWUgZm91bmQuIFNldCBpdCB0byBhbiB1bmtub3duIGZpbGUgbmFtZS4NCisgICAgLy8NCisg ICAgKlBkYkZpbGVOYW1lID0gKENIQVI4ICopbVVua25vd25QZGJGaWxlTmFtZTsNCisgICAgaWYg KFBkYkFic29sdXRlRmlsZVBhdGggIT0gTlVMTCkgew0KKyAgICAgICpQZGJBYnNvbHV0ZUZpbGVQ YXRoID0gTlVMTDsNCisgICAgfQ0KKyAgfSBlbHNlIHsNCisgICAgLy8NCisgICAgLy8gR2V0IGZp bGUgbmFtZSBwb3J0aW9uIG91dCBvZiBQREIgZmlsZSBpbiBQRS9DT0ZGIGltYWdlDQorICAgIC8v DQorICAgIFN0ciA9IChDSEFSOCAqKSgoVUlOVE4pUGRiUG9pbnRlciArDQorICAgICAgICAgICAg ICAgICAgICBBc2NpaVN0ckxlbiAoKENIQVI4ICopUGRiUG9pbnRlcikgLSBzaXplb2YgKlN0cik7 DQorICAgIGZvciAoOyAqU3RyICE9ICcvJyAmJiAqU3RyICE9ICdcXCc7IFN0ci0tKSB7DQorICAg ICAgOw0KKyAgICB9DQorDQorICAgIC8vDQorICAgIC8vIFNldCBQREIgZmlsZSBuYW1lIChhbHNv IHNraXAgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3I6ICcvJyBvciAnXFwnKQ0KKyAgICAvLw0KKyAg ICAqUGRiRmlsZU5hbWUgPSBTdHIgKyAxOw0KKw0KKyAgICBpZiAoUGRiQWJzb2x1dGVGaWxlUGF0 aCAhPSBOVUxMKSB7DQorICAgICAgLy8NCisgICAgICAvLyBTZXQgYWJzb2x1dGUgZmlsZSBwYXRo IG9mIFBEQiBmaWxlDQorICAgICAgLy8NCisgICAgICAqUGRiQWJzb2x1dGVGaWxlUGF0aCA9IFBk YlBvaW50ZXI7DQorICAgIH0NCisgIH0NCit9DQorDQorLyoqDQorICBEdW1wIHN0YWNrIGNvbnRl bnRzLg0KKw0KKyAgQHBhcmFtW2luXSAgQ3VycmVudFJzcCAgICAgICAgIEN1cnJlbnQgc3RhY2sg cG9pbnRlciBhZGRyZXNzLg0KKyAgQHBhcmFtW2luXSAgVW53b3VuZFN0YWNrc0NvdW50ICBDb3Vu dCBvZiB1bndvdW5kIHN0YWNrIGZyYW1lcy4NCisqKi8NCitTVEFUSUMNCitWT0lEDQorRHVtcFN0 YWNrQ29udGVudHMgKA0KKyAgSU4gVUlOVDY0ICBDdXJyZW50UnNwLA0KKyAgSU4gSU5UTiAgICBV bndvdW5kU3RhY2tzQ291bnQNCisgICkNCit7DQorICAvLw0KKyAgLy8gQ2hlY2sgZm9yIHByb3Bl ciBzdGFjayBwb2ludGVyIGFsaWdubWVudA0KKyAgLy8NCisgIGlmICgoKFVJTlROKUN1cnJlbnRS c3AgJiAoQ1BVX1NUQUNLX0FMSUdOTUVOVCAtIDEpKSAhPSAwKSB7DQorICAgIEludGVybmFsUHJp bnRNZXNzYWdlICgiISEhISBVbmFsaWduZWQgc3RhY2sgcG9pbnRlci4gISEhIVxuIik7DQorICAg IHJldHVybjsNCisgIH0NCisNCisgIC8vDQorICAvLyBEdW1wIG91dCBzdGFjayBjb250ZW50cw0K KyAgLy8NCisgIEludGVybmFsUHJpbnRNZXNzYWdlICgiXG5TdGFjayBkdW1wOlxuIik7DQorICB3 aGlsZSAoVW53b3VuZFN0YWNrc0NvdW50LS0gPiAwKSB7DQorICAgIEludGVybmFsUHJpbnRNZXNz YWdlICgNCisgICAgICAiMHglMDE2bHg6ICUwMTZseCAlMDE2bHhcbiIsDQorICAgICAgQ3VycmVu dFJzcCwNCisgICAgICAqKFVJTlQ2NCAqKUN1cnJlbnRSc3AsDQorICAgICAgKihVSU5UNjQgKiko KFVJTlROKUN1cnJlbnRSc3AgKyA4KQ0KKyAgICAgICk7DQorDQorICAgIC8vDQorICAgIC8vIFBv aW50IHRvIG5leHQgc3RhY2sNCisgICAgLy8NCisgICAgQ3VycmVudFJzcCArPSBDUFVfU1RBQ0tf QUxJR05NRU5UOw0KKyAgfQ0KK30NCisNCisvKioNCisgIER1bXAgYWxsIGltYWdlIG1vZHVsZSBu YW1lcyBmcm9tIGNhbGwgc3RhY2suDQorDQorICBAcGFyYW1baW5dICBTeXN0ZW1Db250ZXh0ICBQ b2ludGVyIHRvIEVGSV9TWVNURU1fQ09OVEVYVC4NCisqKi8NCitTVEFUSUMNCitWT0lEDQorRHVt cEltYWdlTW9kdWxlTmFtZXMgKA0KKyAgSU4gRUZJX1NZU1RFTV9DT05URVhUICAgU3lzdGVtQ29u dGV4dA0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgIFN0YXR1czsNCisgIFVJTlQ2NCAgICAgIFJp cDsNCisgIFVJTlROICAgICAgIEltYWdlQmFzZTsNCisgIFZPSUQgICAgICAgICpFbnRyeVBvaW50 Ow0KKyAgQ0hBUjggICAgICAgKlBkYkFic29sdXRlRmlsZVBhdGg7DQorICBDSEFSOCAgICAgICAq UGRiRmlsZU5hbWU7DQorICBVSU5UNjQgICAgICBSYnA7DQorICBVSU5UTiAgICAgICBMYXN0SW1h Z2VCYXNlOw0KKw0KKyAgLy8NCisgIC8vIFNldCBjdXJyZW50IFJJUCBhZGRyZXNzDQorICAvLw0K KyAgUmlwID0gU3lzdGVtQ29udGV4dC5TeXN0ZW1Db250ZXh0WDY0LT5SaXA7DQorDQorICAvLw0K KyAgLy8gU2V0IGN1cnJlbnQgZnJhbWUgcG9pbnRlciBhZGRyZXNzDQorICAvLw0KKyAgUmJwID0g U3lzdGVtQ29udGV4dC5TeXN0ZW1Db250ZXh0WDY0LT5SYnA7DQorDQorICAvLw0KKyAgLy8gQ2hl Y2sgZm9yIHByb3BlciBmcmFtZSBwb2ludGVyIGFsaWdubWVudA0KKyAgLy8NCisgIGlmICgoKFVJ TlROKVJicCAmIChDUFVfU1RBQ0tfQUxJR05NRU5UIC0gMSkpICE9IDApIHsNCisgICAgSW50ZXJu YWxQcmludE1lc3NhZ2UgKCIhISEhIFVuYWxpZ25lZCBmcmFtZSBwb2ludGVyLiAhISEhXG4iKTsN CisgICAgcmV0dXJuOw0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIEdldCBpbml0aWFsIFBFL0NPRkYg aW1hZ2UgYmFzZSBhZGRyZXNzIGZyb20gY3VycmVudCBSSVANCisgIC8vDQorICBJbWFnZUJhc2Ug PSBQZUNvZmZTZWFyY2hJbWFnZUJhc2UgKFJpcCk7DQorICBpZiAoSW1hZ2VCYXNlID09IDApIHsN CisgICAgSW50ZXJuYWxQcmludE1lc3NhZ2UgKCIhISEhIENvdWxkIG5vdCBmaW5kIGltYWdlIG1v ZHVsZSBuYW1lcy4gISEhISIpOw0KKyAgICByZXR1cm47DQorICB9DQorDQorICAvLw0KKyAgLy8g U2V0IGxhc3QgUEUvQ09GRiBpbWFnZSBiYXNlIGFkZHJlc3MNCisgIC8vDQorICBMYXN0SW1hZ2VC YXNlID0gSW1hZ2VCYXNlOw0KKw0KKyAgLy8NCisgIC8vIEdldCBpbml0aWFsIFBFL0NPRkYgaW1h Z2UncyBlbnRyeSBwb2ludA0KKyAgLy8NCisgIFN0YXR1cyA9IFBlQ29mZkxvYWRlckdldEVudHJ5 UG9pbnQgKChWT0lEICopSW1hZ2VCYXNlLCAmRW50cnlQb2ludCk7DQorICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQorICAgIEVudHJ5UG9pbnQgPSBOVUxMOw0KKyAgfQ0KKw0KKyAgLy8NCisg IC8vIEdldCBmaWxlIG5hbWUgYW5kIGFic29sdXRlIHBhdGggb2YgaW5pdGlhbCBQREIgZmlsZQ0K KyAgLy8NCisgIEdldFBkYkZpbGVOYW1lIChJbWFnZUJhc2UsICZQZGJBYnNvbHV0ZUZpbGVQYXRo LCAmUGRiRmlsZU5hbWUpOw0KKw0KKyAgLy8NCisgIC8vIFByaW50IG91dCBpbml0aWFsIGltYWdl IG1vZHVsZSBuYW1lIChpZiBhbnkpDQorICAvLw0KKyAgaWYgKFBkYkFic29sdXRlRmlsZVBhdGgg IT0gTlVMTCkgew0KKyAgICBJbnRlcm5hbFByaW50TWVzc2FnZSAoDQorICAgICAgIlxuJWEgKElt YWdlQmFzZT0weCUwMTZseCwgRW50cnlQb2ludD0weCUwMTZseCk6XG4iLA0KKyAgICAgIFBkYkZp bGVOYW1lLA0KKyAgICAgIEltYWdlQmFzZSwNCisgICAgICAoVUlOVE4pRW50cnlQb2ludA0KKyAg ICAgICk7DQorICAgIEludGVybmFsUHJpbnRNZXNzYWdlICgiJWFcbiIsIFBkYkFic29sdXRlRmls ZVBhdGgpOw0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIFdhbGsgdGhyb3VnaCBjYWxsIHN0YWNrIGFu ZCBmaW5kIG5leHQgbW9kdWxlIG5hbWVzDQorICAvLw0KKyAgZm9yICg7Oykgew0KKyAgICAvLw0K KyAgICAvLyBTZXQgUklQIHdpdGggcmV0dXJuIGFkZHJlc3MgZnJvbSBjdXJyZW50IHN0YWNrIGZy YW1lDQorICAgIC8vDQorICAgIFJpcCA9ICooVUlOVDY0ICopKChVSU5UTilSYnAgKyA4KTsNCisN CisgICAgLy8NCisgICAgLy8gSWYgUklQIGlzIHplcm8sIHRoZW4gc3RvcCB1bndpbmRpbmcgdGhl IHN0YWNrDQorICAgIC8vDQorICAgIGlmIChSaXAgPT0gMCkgew0KKyAgICAgIGJyZWFrOw0KKyAg ICB9DQorDQorICAgIC8vDQorICAgIC8vIFNlYXJjaCBmb3IgdGhlIHJlc3BlY3RpdmUgUEUvQ09G RiBpbWFnZSBiYXNlZCBvbiBSSVANCisgICAgLy8NCisgICAgSW1hZ2VCYXNlID0gUGVDb2ZmU2Vh cmNoSW1hZ2VCYXNlIChSaXApOw0KKyAgICBpZiAoSW1hZ2VCYXNlID09IDApIHsNCisgICAgICAv Lw0KKyAgICAgIC8vIFN0b3Agc3RhY2sgdHJhY2UNCisgICAgICAvLw0KKyAgICAgIGJyZWFrOw0K KyAgICB9DQorDQorICAgIC8vDQorICAgIC8vIElmIFJJUCBwb2ludHMgdG8gYW5vdGhlciBQRS9D T0ZGIGltYWdlLCB0aGVuIGZpbmQgaXRzIHJlc3BlY3RpdmUgUERCIGZpbGUNCisgICAgLy8gbmFt ZS4NCisgICAgLy8NCisgICAgaWYgKExhc3RJbWFnZUJhc2UgIT0gSW1hZ2VCYXNlKSB7DQorICAg ICAgLy8NCisgICAgICAvLyBHZXQgUEUvQ09GRiBpbWFnZSdzIGVudHJ5IHBvaW50DQorICAgICAg Ly8NCisgICAgICBTdGF0dXMgPSBQZUNvZmZMb2FkZXJHZXRFbnRyeVBvaW50ICgoVk9JRCAqKUlt YWdlQmFzZSwgJkVudHJ5UG9pbnQpOw0KKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsN CisgICAgICAgIEVudHJ5UG9pbnQgPSBOVUxMOw0KKyAgICAgIH0NCisNCisgICAgICAvLw0KKyAg ICAgIC8vIEdldCBmaWxlIG5hbWUgYW5kIGFic29sdXRlIHBhdGggb2YgUERCIGZpbGUNCisgICAg ICAvLw0KKyAgICAgIEdldFBkYkZpbGVOYW1lIChJbWFnZUJhc2UsICZQZGJBYnNvbHV0ZUZpbGVQ YXRoLCAmUGRiRmlsZU5hbWUpOw0KKw0KKyAgICAgIC8vDQorICAgICAgLy8gUHJpbnQgb3V0IGlt YWdlIG1vZHVsZSBuYW1lIChpZiBhbnkpDQorICAgICAgLy8NCisgICAgICBpZiAoUGRiQWJzb2x1 dGVGaWxlUGF0aCAhPSBOVUxMKSB7DQorICAgICAgICBJbnRlcm5hbFByaW50TWVzc2FnZSAoDQor ICAgICAgICAgICIlYSAoSW1hZ2VCYXNlPTB4JTAxNmx4LCBFbnRyeVBvaW50PTB4JTAxNmx4KTpc biIsDQorICAgICAgICAgIFBkYkZpbGVOYW1lLA0KKyAgICAgICAgICBJbWFnZUJhc2UsDQorICAg ICAgICAgIChVSU5UTilFbnRyeVBvaW50DQorICAgICAgICAgICk7DQorICAgICAgICBJbnRlcm5h bFByaW50TWVzc2FnZSAoIiVhXG4iLCBQZGJBYnNvbHV0ZUZpbGVQYXRoKTsNCisgICAgICB9DQor DQorICAgICAgLy8NCisgICAgICAvLyBTYXZlIGxhc3QgUEUvQ09GRiBpbWFnZSBiYXNlIGFkZHJl c3MNCisgICAgICAvLw0KKyAgICAgIExhc3RJbWFnZUJhc2UgPSBJbWFnZUJhc2U7DQorICAgIH0N CisNCisgICAgLy8NCisgICAgLy8gVW53aW5kIHRoZSBzdGFjaw0KKyAgICAvLw0KKyAgICBSYnAg PSAqKFVJTlQ2NCAqKShVSU5UTilSYnA7DQorICB9DQorfQ0KKw0KKy8qKg0KKyAgRHVtcCBzdGFj ayB0cmFjZS4NCisNCisgIEBwYXJhbVtpbl0gIFN5c3RlbUNvbnRleHQgICAgICBQb2ludGVyIHRv IEVGSV9TWVNURU1fQ09OVEVYVC4NCisgIEBwYXJhbVtvdXRdIFVud291bmRTdGFja3NDb3VudCAg Q291bnQgb2YgdW53b3VuZCBzdGFjayBmcmFtZXMuDQorKiovDQorU1RBVElDDQorVk9JRA0KK0R1 bXBTdGFja1RyYWNlICgNCisgIElOICBFRklfU1lTVEVNX0NPTlRFWFQgICBTeXN0ZW1Db250ZXh0 LA0KKyAgT1VUIElOVE4gICAgICAgICAgICAgICAgICpVbndvdW5kU3RhY2tzQ291bnQNCisgICkN Cit7DQorICBVSU5UNjQgIFJpcDsNCisgIFVJTlQ2NCAgUmJwOw0KKyAgVUlOVE4gICBJbWFnZUJh c2U7DQorICBDSEFSOCAgICpQZGJGaWxlTmFtZTsNCisNCisgIC8vDQorICAvLyBTZXQgY3VycmVu dCBSSVAgYWRkcmVzcw0KKyAgLy8NCisgIFJpcCA9IFN5c3RlbUNvbnRleHQuU3lzdGVtQ29udGV4 dFg2NC0+UmlwOw0KKw0KKyAgLy8NCisgIC8vIFNldCBjdXJyZW50IGZyYW1lIHBvaW50ZXIgYWRk cmVzcw0KKyAgLy8NCisgIFJicCA9IFN5c3RlbUNvbnRleHQuU3lzdGVtQ29udGV4dFg2NC0+UmJw Ow0KKw0KKyAgLy8NCisgIC8vIEdldCBpbml0aWFsIFBFL0NPRkYgaW1hZ2UgYmFzZSBhZGRyZXNz IGZyb20gY3VycmVudCBSSVANCisgIC8vDQorICBJbWFnZUJhc2UgPSBQZUNvZmZTZWFyY2hJbWFn ZUJhc2UgKFJpcCk7DQorICBpZiAoSW1hZ2VCYXNlID09IDApIHsNCisgICAgSW50ZXJuYWxQcmlu dE1lc3NhZ2UgKCIhISEhIENvdWxkIG5vdCBmaW5kIGJhY2t0cmFjZSBpbmZvcm1hdGlvbi4gISEh ISIpOw0KKyAgICByZXR1cm47DQorICB9DQorDQorICAvLw0KKyAgLy8gR2V0IFBEQiBmaWxlIG5h bWUgZnJvbSBpbml0aWFsIFBFL0NPRkYgaW1hZ2UNCisgIC8vDQorICBHZXRQZGJGaWxlTmFtZSAo SW1hZ2VCYXNlLCBOVUxMLCAmUGRiRmlsZU5hbWUpOw0KKw0KKyAgLy8NCisgIC8vIEluaXRpYWxp emUgY291bnQgb2YgdW53b3VuZCBzdGFja3MNCisgIC8vDQorICAqVW53b3VuZFN0YWNrc0NvdW50 ID0gMTsNCisNCisgIC8vDQorICAvLyBQcmludCBvdXQgYmFjayB0cmFjZQ0KKyAgLy8NCisgIElu dGVybmFsUHJpbnRNZXNzYWdlICgiXG5DYWxsIHRyYWNlOlxuIik7DQorDQorICBmb3IgKDs7KSB7 DQorICAgIC8vDQorICAgIC8vIFByaW50IHN0YWNrIGZyYW1lIGluIHRoZSBmb2xsb3dpbmcgZm9y bWF0Og0KKyAgICAvLw0KKyAgICAvLyAjIDxSSVA+IEAgPEltYWdlQmFzZT4rPFJlbE9mZnNldD4g KFJCUCkgaW4gWzxNb2R1bGVOYW1lPiB8ID8/Pz9dDQorICAgIC8vDQorICAgIEludGVybmFsUHJp bnRNZXNzYWdlICgNCisgICAgICAiJWQgMHglMDE2bHggQCAweCUwMTZseCsweCV4ICgweCUwMTZs eCkgaW4gJWFcbiIsDQorICAgICAgKlVud291bmRTdGFja3NDb3VudCAtIDEsDQorICAgICAgUmlw LA0KKyAgICAgIEltYWdlQmFzZSwNCisgICAgICBSaXAgLSBJbWFnZUJhc2UgLSAxLA0KKyAgICAg IFJicCwNCisgICAgICBQZGJGaWxlTmFtZQ0KKyAgICAgICk7DQorDQorICAgIC8vDQorICAgIC8v IFNldCBSSVAgd2l0aCByZXR1cm4gYWRkcmVzcyBmcm9tIGN1cnJlbnQgc3RhY2sgZnJhbWUNCisg ICAgLy8NCisgICAgUmlwID0gKihVSU5UNjQgKikoKFVJTlROKVJicCArIDgpOw0KKw0KKyAgICAv Lw0KKyAgICAvLyBJZiBSSVAgaXMgemVybywgdGhlbiBzdG9wIHVud2luZGluZyB0aGUgc3RhY2sN CisgICAgLy8NCisgICAgaWYgKFJpcCA9PSAwKSB7DQorICAgICAgYnJlYWs7DQorICAgIH0NCisN CisgICAgLy8NCisgICAgLy8gU2VhcmNoIGZvciB0aGUgcmVzcGVjdGl2ZSBQRS9DT0ZGIGltYWdl IGJhc2VkIG9uIFJJUA0KKyAgICAvLw0KKyAgICBJbWFnZUJhc2UgPSBQZUNvZmZTZWFyY2hJbWFn ZUJhc2UgKFJpcCk7DQorICAgIGlmIChJbWFnZUJhc2UgPT0gMCkgew0KKyAgICAgIC8vDQorICAg ICAgLy8gU3RvcCBzdGFjayB0cmFjZQ0KKyAgICAgIC8vDQorICAgICAgYnJlYWs7DQorICAgIH0N CisNCisgICAgLy8NCisgICAgLy8gR2V0IFBEQiBmaWxlIG5hbWUNCisgICAgLy8NCisgICAgR2V0 UGRiRmlsZU5hbWUgKEltYWdlQmFzZSwgTlVMTCwgJlBkYkZpbGVOYW1lKTsNCisNCisgICAgLy8N CisgICAgLy8gVW53aW5kIHRoZSBzdGFjaw0KKyAgICAvLw0KKyAgICBSYnAgPSAqKFVJTlQ2NCAq KShVSU5UTilSYnA7DQorDQorICAgIC8vDQorICAgIC8vIEluY3JlbWVudCBjb3VudCBvZiB1bndv dW5kIHN0YWNrcw0KKyAgICAvLw0KKyAgICAoKlVud291bmRTdGFja3NDb3VudCkrKzsNCisgIH0N Cit9DQorDQogLyoqDQogICBEaXNwbGF5IENQVSBpbmZvcm1hdGlvbi4NCg0KQEAgLTI1NCw5ICs2 MTAsMjUgQEAgRHVtcEltYWdlQW5kQ3B1Q29udGVudCAoDQogICBJTiBFRklfU1lTVEVNX0NPTlRF WFQgICBTeXN0ZW1Db250ZXh0DQogICApDQogew0KKyAgSU5UTiBVbndvdW5kU3RhY2tzQ291bnQ7 DQorDQorICAvLw0KKyAgLy8gRHVtcCBDUFUgY29udGV4dA0KKyAgLy8NCiAgIER1bXBDcHVDb250 ZXh0IChFeGNlcHRpb25UeXBlLCBTeXN0ZW1Db250ZXh0KTsNCisNCisgIC8vDQorICAvLyBEdW1w IHN0YWNrIHRyYWNlDQorICAvLw0KKyAgRHVtcFN0YWNrVHJhY2UgKFN5c3RlbUNvbnRleHQsICZV bndvdW5kU3RhY2tzQ291bnQpOw0KKw0KKyAgLy8NCisgIC8vIER1bXAgaW1hZ2UgbW9kdWxlIG5h bWVzDQorICAvLw0KKyAgRHVtcEltYWdlTW9kdWxlTmFtZXMgKFN5c3RlbUNvbnRleHQpOw0KKw0K ICAgLy8NCi0gIC8vIER1bXAgbW9kdWxlIGltYWdlIGJhc2UgYW5kIG1vZHVsZSBlbnRyeSBwb2lu dCBieSBSSVANCisgIC8vIER1bXAgc3RhY2sgY29udGVudHMNCiAgIC8vDQotICBEdW1wTW9kdWxl SW1hZ2VJbmZvIChTeXN0ZW1Db250ZXh0LlN5c3RlbUNvbnRleHRYNjQtPlJpcCk7DQorICBEdW1w U3RhY2tDb250ZW50cyAoU3lzdGVtQ29udGV4dC5TeXN0ZW1Db250ZXh0WDY0LT5Sc3AsIFVud291 bmRTdGFja3NDb3VudCk7DQogfQ0KLS0NCjIuMTQuMw0KDQpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXw0KZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QNCmVkazIt ZGV2ZWxAbGlzdHMuMDEub3JnDQpodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2VkazItZGV2ZWwNCg0KZWRrMi1kZXZlbCBJbmZvIFBhZ2UgLSAwMS5vcmc8aHR0cHM6Ly9saXN0 cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVsPg0KbGlzdHMuMDEub3JnDQpZb3Vy IGVtYWlsIGFkZHJlc3M6IFlvdXIgbmFtZSAob3B0aW9uYWwpOiBZb3UgbWF5IGVudGVyIGEgcHJp dmFjeSBwYXNzd29yZCBiZWxvdy4gVGhpcyBwcm92aWRlcyBvbmx5IG1pbGQgc2VjdXJpdHksIGJ1 dCBzaG91bGQgcHJldmVudCBvdGhlcnMgZnJvbSBtZXNzaW5nIC4uLg0KDQoNCg0K