From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a01:111:f400:fe4c::829; helo=nam04-sn1-obe.outbound.protection.outlook.com; envelope-from=vanjeff_919@hotmail.com; receiver=edk2-devel@lists.01.org Received: from NAM04-SN1-obe.outbound.protection.outlook.com (mail-sn1nam04olkn0829.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe4c::829]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id A90B6220C1C2C for ; Thu, 23 Nov 2017 06:23:36 -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=9D/KaKlondx1S6jBXimptabq1V6xzD3Eki/MVjpt8fg=; b=it/TgqJSdV2fU9LJl3pvhlDAu4TBQ+1Y1554jcu/jpH93oil7E9Ye0quMnRirqBaq78CGPylgCO53F4GWbN1qRIsPBNXEeJW15DPopiTluNYylrONcbZQYMvFdkpcOldKaCWLHRyBdV4aRpSz8U5jDDLzQttfyp+Spv8TIP812F7m7gYb3iUVKY8ckgKE7BGQKePOlDWfzxzdBlCF/20cN16NK6sOhRc146eaX0TZBFOHRDQ6XTstXaY32Tu3F2JH5fggmL3HOHNUX7FMddQcoL0Fhu5qaoAxaOAKQiSgP+A3dIWMpM9vnDecUSYFgdKzWe7zpvbfopYCglkuLMkoA== Received: from BN3NAM04FT028.eop-NAM04.prod.protection.outlook.com (10.152.92.59) by BN3NAM04HT102.eop-NAM04.prod.protection.outlook.com (10.152.93.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.20.218.12; Thu, 23 Nov 2017 14:27:35 +0000 Received: from CO2PR19MB0137.namprd19.prod.outlook.com (10.152.92.54) by BN3NAM04FT028.mail.protection.outlook.com (10.152.92.178) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.20.239.4 via Frontend Transport; Thu, 23 Nov 2017 14:27:35 +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.009; Thu, 23 Nov 2017 14:27:35 +0000 From: Fan Jeff To: Paulo Alcantara , "edk2-devel@lists.01.org" CC: Laszlo Ersek , Eric Dong Thread-Topic: =?gb2312?B?tPC4tDogW2VkazJdIFtSRkMgdjMgMS8zXSBVZWZpQ3B1UGtnL0NwdUV4Y2Vw?= =?gb2312?Q?tionHandlerLib/X64:_Add_stack_trace_support?= Thread-Index: AQHTXyYmFrGNIJLhvEWejc8xVtEVbaMYKxAbgAU3BoCABKe+AA== Date: Thu, 23 Nov 2017 14:27:35 +0000 Message-ID: References: <86955028c6e8f82de1dc1e8206d2b5441cbbf33c.1510868616.git.pcacjr@zytor.com> , <2da80d1e-8b3a-f56b-6a34-871e32b8aba1@zytor.com> In-Reply-To: <2da80d1e-8b3a-f56b-6a34-871e32b8aba1@zytor.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-incomingtopheadermarker: OriginalChecksum:D37310E30A19B06DF4B429160E80E83D1699887A8939569704264FB1D4B5BFA7; UpperCasedChecksum:D1B7E706FBC8C778F6326876B82974CD405A95F0A268AA808AB2A01332D6AF7B; SizeAsReceived:7528; Count:47 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [aMkBM95Mh47puwkNm7FQNPHGGJ+XolnC] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; BN3NAM04HT102; 6:uSg8yJUsYA3iQDb1VhgsK3/pAwTPPW3B8lkl9Ja4ZJ5wHwTzN2YyZBnGmiAYjq/5IvT6XGvUfibWeGBPUGFMDEhsA5MF/p66p7atNvS4xw7w1sMQ8s3i1jF2G/NVehI0ORGoNybsaKKrtI8TPdNVnGuCySaqWoGan3DmhF00ITXKOUEYqoGE0eoCMiF16sxOa8xOVJeciMCdkUMDdO6JGoBcfSOaMXibmfn/mW6XTALxltkH25vQWTjnrMBJ4Vv1EI9GH5HFFd95VecId5gqX4+thQvqWUOGpfDgCJT5KGe1Rb01Wonfpxh8l9at0jV/PMrdsV+aP/vrVenac6AJNJTwxvg82fnqlpoE5YmD9V8=; 5:D1veplyd4uHoozwYTwyRpH+89FYZ+a1ibVxPDAU+lp4GYLp/quhhJVAqBM6SV5JI+wh4Ixet0LeSvfJQoOIbWf2k7QgCWeasWOSzZC4FWcg2Ijg/Yiu2UAHWON4vi2/qsxFdSDZkFe/eNAaFFbkJ45xEnq0vCQxf4OFa6J0loWI=; 24:e5Gmj7XWl15KM1aT6VjkJ4GN3dbJqxYrrucuU0+3HYq+NX9ZbIfLpdypceunxbRCk0WvuCZZsH0CsN3zcJcBFdhsri/4/p4DPy56xHaUn5o=; 7:LM5S4wMb4/KFA3gRK5QrEWwYdnSt9alvDNfi4XoZyxvXIXMO7Xg52XEGUagWXmeEgY67oo/PAYHQUOh1HoW2gGC61SyyduZKlEJif+OyfsIPbGxNdvGTEZvh+glxderLwWv51BbJgug0snClN0VRopn+XjyyHQ88OfeJmzt8aS48IBbdiNdBarfQPJE8if2hjCrJbkvdnuT58teBi3atiagY5x+j5i6VIVKVBcDNvlgfvrMhFpHi/GfiT4qtelXx x-incomingheadercount: 47 x-eopattributedmessage: 0 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(201702061074)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(2017031322404)(1601125374)(1603101448)(1701031045); SRVR:BN3NAM04HT102; x-ms-traffictypediagnostic: BN3NAM04HT102: x-ms-office365-filtering-correlation-id: abe6f05f-4004-4d4d-3dac-08d5327e5744 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(444000031); SRVR:BN3NAM04HT102; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BN3NAM04HT102; x-forefront-prvs: 05009853EF x-forefront-antispam-report: SFV:NSPM; SFS:(7070007)(98901004); DIR:OUT; SFP:1901; SCL:1; SRVR:BN3NAM04HT102; 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: abe6f05f-4004-4d4d-3dac-08d5327e5744 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Nov 2017 14:27:35.2588 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3NAM04HT102 X-Content-Filtered-By: Mailman/MimeDel 2.1.22 Subject: =?UTF-8?B?562U5aSNOiDnrZTlpI06IFtSRkMgdjMgMS8zXSBVZWZpQ3B1UGtnL0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0OiBBZGQgc3RhY2sgdHJhY2Ugc3VwcG9ydA==?= 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: Thu, 23 Nov 2017 14:23:37 -0000 Content-Language: zh-CN Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGkgUGF1bG8sDQoNCg0KDQpJoa9kIGxpa2UgdG8gY2xhcmlmeSBteSBxdWVzdGlvbi4NCg0KVGhl IGZvbGxvd2luZyBjYWxsIHRyYWNlIGluZm9ybWF0aW9uIGlzIGFic3RyYWN0ZWQgZnJvbSB5b3Vy IHg2NCBkdW1wIGNvbnRlbnRzLg0KDQpDYWxsIHRyYWNlOg0KDQowIDB4N0RCQ0Q1ODAgQCAweDdE QkNEMDAwKzB4NTdGICgweDdFRUM4RERDKSBpbiBQYXJ0aXRpb25EeGUuZGxsDQoNCjEgMHg3REJE NDFCRSBAIDB4N0RCQ0QwMDArMHg3MUJEICgweDdFRUM4REZDKSBpbiBQYXJ0aXRpb25EeGUuZGxs DQoNCg0KDQpJIGd1ZXNzIHlvdSB1c2VkIENwdUJyZWFrcG9pbnQoKSB0byBkbyB5b3VyIHZhbGlk YXRpb24uDQoNCkZvciAweDdEQkNENTgwLCBpdCBpcyByZXR1cm4gYWRkcmVzcyBmb2xsb3dlZCBi eSChsGludCAzobEgZnJvbSB5b3VyIGNhc2UuDQoNCklmIHdlIGR1bXAgb2JqIGZpbGUsIHdlIHdv dWxkIHNlZSB0aGUgZm9sbG93aW5nIGFzbSBjb2RlLg0KDQogIDAwMDAwMDAwN0RCQ0Q1N0Y6IEND ICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAzDQoNCiAgMDAwMDAwMDA3REJDRDU4MDogQzMg ICAgICAgICAgICAgICAgIHJldA0KDQogIChPbiBjYXNlIDAsIHRoZSBjb2RlIGF0IG9mZnNldCAw eDU3RiBpcyBpbnQgMykNCg0KICAwMDAwMDAwMDdEQkQ0MUI5OiBFOCBBRiAyQSAwMCAwMCAgICAg Y2FsbCAgICAgICAgQ3B1QnJlYWtwb2ludA0KDQogIDAwMDAwMDAwN0RCRDQxQkU6IFhYIFhYIFhY IFhYICAgICAgICAgWFhYICAgIFhYWFhYWA0KDQogIChPbiBjYXNlIDEsIHdoYXShr3MgdGhlIGNv ZGUgYXQgb2Zmc2V0IDB4NzFCRD8/KQ0KDQoNCg0KSWYgdGhlIHVwcGVyIGFzbSBjb2RlIGlzIG5v dCBjb3JyZWN0LCBwbGVhc2UgY29weSB5b3VyIG9iaiBmaWxlIGhlcmUuDQoNCg0KDQpJZiB0aGUg dXBwZXIgYXNtIGNvZGUgaXMgY29ycmVjdCwgSSB0aGluayB3ZSBzaG91bGQgc2hvdyB0aGUgcmV0 dXJuIGFkZHJlc3MgYXMgYmVsb3csIHNpbmNlIHdlIGNhbm5vdCBjYWxjdWxhdGUgdGhlIGNhbGxp bmcgSVAgYWRkcmVzcyBvbiBtb3N0IGNhc2VzLiAocmV0dXJuIGFkZHJlc3MgqEMgMSBpcyBub3Qg YWx3YXlzIHRoZSBjYWxsaW5nIElQIGFkZHJlc3Mgb24gSUEgYXJjaCkuDQoNCjAgMHg3REJDRDU4 MCBAIDB4N0RCQ0QwMDArMHg1ODAgKDB4N0VFQzhEREMpIGluIFBhcnRpdGlvbkR4ZS5kbGwNCg0K MSAweDdEQkQ0MUJFIEAgMHg3REJDRDAwMCsweDcxQkUgKDB4N0VFQzhERkMpIGluIFBhcnRpdGlv bkR4ZS5kbGwNCg0KDQoNClRoYW5rcyENCg0KSmVmZg0KDQoNCg0KX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18NCkZyb206IFBhdWxvIEFsY2FudGFyYSA8cGNhY2pyQHp5dG9yLmNvbT4N ClNlbnQ6IE1vbmRheSwgTm92ZW1iZXIgMjAsIDIwMTcgMTA6NTk6NDEgUE0NClRvOiBGYW4gSmVm ZjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCkNjOiBMYXN6bG8gRXJzZWs7IEVyaWMgRG9uZw0K U3ViamVjdDogUmU6ILTwuLQ6IFtlZGsyXSBbUkZDIHYzIDEvM10gVWVmaUNwdVBrZy9DcHVFeGNl cHRpb25IYW5kbGVyTGliL1g2NDogQWRkIHN0YWNrIHRyYWNlIHN1cHBvcnQNCg0KSGkgSmVmZiwN Cg0KKHNvcnJ5IGZvciB0aGUgbGF0ZSByZXNwb25zZSkNCg0KT24gMTEvMTcvMjAxNyA1OjI0IEFN LCBGYW4gSmVmZiB3cm90ZToNCj4gUGF1bG8sDQo+DQo+DQo+IEkgZG9uJ3QgdW5kZXJzdGFuZCB3 aHkgeW91IC0gMSB3aGVuIGNhbGN1bGF0aW5nIEVJUCBvZmZzZXQgaW4gaW1hZ2UsIGl0DQo+IGNv bmZ1c2VkIG1lLg0KDQpUaGF0J3MgYW4gb2Zmc2V0IHJlbGF0aXZlIHRvIHRoZSBQRS9DT0ZGIGlt YWdlIGJhc2U6IDAgLSAoSW1hZ2VCYXNlICsNCkltYWdlQmFzZVNpemUgLSAxKQ0KDQpEb2Vzbid0 IHRoYXQgbG9vayByaWdodCB0byB5b3U/DQoNClRoYW5rcw0KUGF1bG8NCg0KPg0KPg0KPiArICBm b3IgKDs7KSB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBQcmludCBzdGFjayBmcmFtZSBpbiB0aGUg Zm9sbG93aW5nIGZvcm1hdDoNCj4gKyAgICAvLw0KPiArICAgIC8vICMgPFJJUD4gQCA8SW1hZ2VC YXNlPis8UmVsT2Zmc2V0PiAoUkJQKSBpbiBbPE1vZHVsZU5hbWU+IHwgPz8/P10NCj4gKyAgICAv Lw0KPiArICAgIEludGVybmFsUHJpbnRNZXNzYWdlICgNCj4gKyAgICAgICIlZCAweCUwMTZseCBA IDB4JTAxNmx4KzB4JXggKDB4JTAxNmx4KSBpbiAlYVxuIiwNCj4gKyAgICAgICpVbndvdW5kU3Rh Y2tzQ291bnQgLSAxLA0KPiArICAgICAgUmlwLA0KPiArICAgICAgSW1hZ2VCYXNlLA0KPiArICAg ICAgUmlwIC0gSW1hZ2VCYXNlIC0gMSwgICAvLyA/Pz8/DQo+ICsgICAgICBSYnAsDQo+ICsgICAg ICBQZGJGaWxlTmFtZQ0KPiArICAgICAgKTsNCj4gKw0KPg0KPiBKZWZmDQo+DQo+DQo+DQo+DQo+ IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KPiAqt6K8/sjLOiogZWRrMi1kZXZlbCA8ZWRrMi1kZXZlbC1ib3Vu Y2VzQGxpc3RzLjAxLm9yZz4gtPqx7SBQYXVsbw0KPiBBbGNhbnRhcmEgPHBjYWNqckB6eXRvci5j b20+DQo+ICq3osvNyrG85DoqIDIwMTfE6jEx1MIxN8jVIDU6NTYNCj4gKsrVvP7IyzoqIGVkazIt ZGV2ZWxAbGlzdHMuMDEub3JnDQo+ICqzrcvNOiogTGFzemxvIEVyc2VrOyBFcmljIERvbmcNCj4g Ktb3zOI6KiBbZWRrMl0gW1JGQyB2MyAxLzNdIFVlZmlDcHVQa2cvQ3B1RXhjZXB0aW9uSGFuZGxl ckxpYi9YNjQ6IEFkZA0KPiBzdGFjayB0cmFjZSBzdXBwb3J0DQo+IFRoaXMgcGF0Y2ggYWRkcyBz dGFjayB0cmFjZSBzdXBwb3J0IGR1cmluZyBhIFg2NCBDUFUgZXhjZXB0aW9uLg0KPg0KPiBJdCB3 aWxsIGR1bXAgb3V0IGJhY2sgdHJhY2UsIHN0YWNrIGNvbnRlbnRzIGFzIHdlbGwgYXMgaW1hZ2Ug bW9kdWxlDQo+IG5hbWVzIHRoYXQgd2VyZSBwYXJ0IG9mIHRoZSBjYWxsIHN0YWNrLg0KPg0KPiBD b250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQgMS4xDQo+ IENjOiBFcmljIERvbmcgPGVyaWMuZG9uZ0BpbnRlbC5jb20+DQo+IENjOiBMYXN6bG8gRXJzZWsg PGxlcnNla0ByZWRoYXQuY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBQYXVsbyBBbGNhbnRhcmEgPHBj YWNqckB6eXRvci5jb20+DQo+IC0tLQ0KPiAgIFVlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRp b25IYW5kbGVyTGliL1g2NC9BcmNoRXhjZXB0aW9uSGFuZGxlci5jIHwNCj4gMzc2ICsrKysrKysr KysrKysrKysrKystDQo+ICAgMSBmaWxlIGNoYW5nZWQsIDM3NCBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQ0KPg0KPiBkaWZmIC0tZ2l0DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4 Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0FyY2hFeGNlcHRpb25IYW5kbGVyLmMNCj4gYi9VZWZpQ3B1 UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvQXJjaEV4Y2VwdGlvbkhhbmRs ZXIuYw0KPiBpbmRleCA2NWYwY2ZmNjgwLi5mZTc3NmNjYzJkIDEwMDY0NA0KPiAtLS0gYS9VZWZp Q3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvQXJjaEV4Y2VwdGlvbkhh bmRsZXIuYw0KPiArKysgYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxp Yi9YNjQvQXJjaEV4Y2VwdGlvbkhhbmRsZXIuYw0KPiBAQCAtMTQsNiArMTQsMTEgQEANCj4NCj4g ICAjaW5jbHVkZSAiQ3B1RXhjZXB0aW9uQ29tbW9uLmgiDQo+DQo+ICsvLw0KPiArLy8gVW5rbm93 biBQREIgZmlsZSBuYW1lDQo+ICsvLw0KPiArR0xPQkFMX1JFTU9WRV9JRl9VTlJFRkVSRU5DRUQg Q09OU1QgQ0hBUjggKm1Vbmtub3duUGRiRmlsZU5hbWUgPSAiPz8/PyI7DQo+ICsNCj4gICAvKioN Cj4gICAgIFJldHVybiBhZGRyZXNzIG1hcCBvZiBleGNlcHRpb24gaGFuZGxlciB0ZW1wbGF0ZSBz byB0aGF0IEMgY29kZSBjYW4NCj4gZ2VuZXJhdGUNCj4gICAgIGV4Y2VwdGlvbiB0YWJsZXMuDQo+ IEBAIC0yNDIsNiArMjQ3LDM1NyBAQCBEdW1wQ3B1Q29udGV4dCAoDQo+ICAgICAgICk7DQo+ICAg fQ0KPg0KPiArLyoqDQo+ICsgIEdldCBhYnNvbHV0ZSBwYXRoIGFuZCBmaWxlIG5hbWUgb2YgUERC IGZpbGUgaW4gUEUvQ09GRiBpbWFnZS4NCj4gKw0KPiArICBAcGFyYW1baW5dICBJbWFnZUJhc2Ug ICAgICAgICAgICBCYXNlIGFkZHJlc3Mgb2YgUEUvQ09GRiBpbWFnZS4NCj4gKyAgQHBhcmFtW291 dF0gUGRiQWJzb2x1dGVGaWxlUGF0aCAgQWJzb2x1dGUgcGF0aCBvZiBQREIgZmlsZS4NCj4gKyAg QHBhcmFtW291dF0gUGRiRmlsZU5hbWUgICAgICAgICAgRmlsZSBuYW1lIG9mIFBEQiBmaWxlLg0K PiArKiovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0dldFBkYkZpbGVOYW1lICgNCj4gKyAgSU4g IFVJTlROICAgIEltYWdlQmFzZSwNCj4gKyAgT1VUIENIQVI4ICAgICoqUGRiQWJzb2x1dGVGaWxl UGF0aCwNCj4gKyAgT1VUIENIQVI4ICAgICoqUGRiRmlsZU5hbWUNCj4gKyAgKQ0KPiArew0KPiAr ICBWT0lEICAgKlBkYlBvaW50ZXI7DQo+ICsgIENIQVI4ICAqU3RyOw0KPiArDQo+ICsgIC8vDQo+ ICsgIC8vIEdldCBQREIgZmlsZSBuYW1lIGZyb20gUEUvQ09GRiBpbWFnZQ0KPiArICAvLw0KPiAr ICBQZGJQb2ludGVyID0gUGVDb2ZmTG9hZGVyR2V0UGRiUG9pbnRlciAoKFZPSUQgKilJbWFnZUJh c2UpOw0KPiArICBpZiAoUGRiUG9pbnRlciA9PSBOVUxMKSB7DQo+ICsgICAgLy8NCj4gKyAgICAv LyBObyBQREIgZmlsZSBuYW1lIGZvdW5kLiBTZXQgaXQgdG8gYW4gdW5rbm93biBmaWxlIG5hbWUu DQo+ICsgICAgLy8NCj4gKyAgICAqUGRiRmlsZU5hbWUgPSAoQ0hBUjggKiltVW5rbm93blBkYkZp bGVOYW1lOw0KPiArICAgIGlmIChQZGJBYnNvbHV0ZUZpbGVQYXRoICE9IE5VTEwpIHsNCj4gKyAg ICAgICpQZGJBYnNvbHV0ZUZpbGVQYXRoID0gTlVMTDsNCj4gKyAgICB9DQo+ICsgIH0gZWxzZSB7 DQo+ICsgICAgLy8NCj4gKyAgICAvLyBHZXQgZmlsZSBuYW1lIHBvcnRpb24gb3V0IG9mIFBEQiBm aWxlIGluIFBFL0NPRkYgaW1hZ2UNCj4gKyAgICAvLw0KPiArICAgIFN0ciA9IChDSEFSOCAqKSgo VUlOVE4pUGRiUG9pbnRlciArDQo+ICsgICAgICAgICAgICAgICAgICAgIEFzY2lpU3RyTGVuICgo Q0hBUjggKilQZGJQb2ludGVyKSAtIHNpemVvZiAqU3RyKTsNCj4gKyAgICBmb3IgKDsgKlN0ciAh PSAnLycgJiYgKlN0ciAhPSAnXFwnOyBTdHItLSkgew0KPiArICAgICAgOw0KPiArICAgIH0NCj4g Kw0KPiArICAgIC8vDQo+ICsgICAgLy8gU2V0IFBEQiBmaWxlIG5hbWUgKGFsc28gc2tpcCB0cmFp bGluZyBwYXRoIHNlcGFyYXRvcjogJy8nIG9yICdcXCcpDQo+ICsgICAgLy8NCj4gKyAgICAqUGRi RmlsZU5hbWUgPSBTdHIgKyAxOw0KPiArDQo+ICsgICAgaWYgKFBkYkFic29sdXRlRmlsZVBhdGgg IT0gTlVMTCkgew0KPiArICAgICAgLy8NCj4gKyAgICAgIC8vIFNldCBhYnNvbHV0ZSBmaWxlIHBh dGggb2YgUERCIGZpbGUNCj4gKyAgICAgIC8vDQo+ICsgICAgICAqUGRiQWJzb2x1dGVGaWxlUGF0 aCA9IFBkYlBvaW50ZXI7DQo+ICsgICAgfQ0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiAr ICBEdW1wIHN0YWNrIGNvbnRlbnRzLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIEN1cnJlbnRSc3Ag ICAgICAgICBDdXJyZW50IHN0YWNrIHBvaW50ZXIgYWRkcmVzcy4NCj4gKyAgQHBhcmFtW2luXSAg VW53b3VuZFN0YWNrc0NvdW50ICBDb3VudCBvZiB1bndvdW5kIHN0YWNrIGZyYW1lcy4NCj4gKyoq Lw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtEdW1wU3RhY2tDb250ZW50cyAoDQo+ICsgIElOIFVJ TlQ2NCAgQ3VycmVudFJzcCwNCj4gKyAgSU4gSU5UTiAgICBVbndvdW5kU3RhY2tzQ291bnQNCj4g KyAgKQ0KPiArew0KPiArICAvLw0KPiArICAvLyBDaGVjayBmb3IgcHJvcGVyIHN0YWNrIHBvaW50 ZXIgYWxpZ25tZW50DQo+ICsgIC8vDQo+ICsgIGlmICgoKFVJTlROKUN1cnJlbnRSc3AgJiAoQ1BV X1NUQUNLX0FMSUdOTUVOVCAtIDEpKSAhPSAwKSB7DQo+ICsgICAgSW50ZXJuYWxQcmludE1lc3Nh Z2UgKCIhISEhIFVuYWxpZ25lZCBzdGFjayBwb2ludGVyLiAhISEhXG4iKTsNCj4gKyAgICByZXR1 cm47DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyBEdW1wIG91dCBzdGFjayBjb250ZW50 cw0KPiArICAvLw0KPiArICBJbnRlcm5hbFByaW50TWVzc2FnZSAoIlxuU3RhY2sgZHVtcDpcbiIp Ow0KPiArICB3aGlsZSAoVW53b3VuZFN0YWNrc0NvdW50LS0gPiAwKSB7DQo+ICsgICAgSW50ZXJu YWxQcmludE1lc3NhZ2UgKA0KPiArICAgICAgIjB4JTAxNmx4OiAlMDE2bHggJTAxNmx4XG4iLA0K PiArICAgICAgQ3VycmVudFJzcCwNCj4gKyAgICAgICooVUlOVDY0ICopQ3VycmVudFJzcCwNCj4g KyAgICAgICooVUlOVDY0ICopKChVSU5UTilDdXJyZW50UnNwICsgOCkNCj4gKyAgICAgICk7DQo+ ICsNCj4gKyAgICAvLw0KPiArICAgIC8vIFBvaW50IHRvIG5leHQgc3RhY2sNCj4gKyAgICAvLw0K PiArICAgIEN1cnJlbnRSc3AgKz0gQ1BVX1NUQUNLX0FMSUdOTUVOVDsNCj4gKyAgfQ0KPiArfQ0K PiArDQo+ICsvKioNCj4gKyAgRHVtcCBhbGwgaW1hZ2UgbW9kdWxlIG5hbWVzIGZyb20gY2FsbCBz dGFjay4NCj4gKw0KPiArICBAcGFyYW1baW5dICBTeXN0ZW1Db250ZXh0ICBQb2ludGVyIHRvIEVG SV9TWVNURU1fQ09OVEVYVC4NCj4gKyoqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtEdW1wSW1h Z2VNb2R1bGVOYW1lcyAoDQo+ICsgIElOIEVGSV9TWVNURU1fQ09OVEVYVCAgIFN5c3RlbUNvbnRl eHQNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICBTdGF0dXM7DQo+ICsgIFVJTlQ2NCAg ICAgIFJpcDsNCj4gKyAgVUlOVE4gICAgICAgSW1hZ2VCYXNlOw0KPiArICBWT0lEICAgICAgICAq RW50cnlQb2ludDsNCj4gKyAgQ0hBUjggICAgICAgKlBkYkFic29sdXRlRmlsZVBhdGg7DQo+ICsg IENIQVI4ICAgICAgICpQZGJGaWxlTmFtZTsNCj4gKyAgVUlOVDY0ICAgICAgUmJwOw0KPiArICBV SU5UTiAgICAgICBMYXN0SW1hZ2VCYXNlOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFNldCBjdXJy ZW50IFJJUCBhZGRyZXNzDQo+ICsgIC8vDQo+ICsgIFJpcCA9IFN5c3RlbUNvbnRleHQuU3lzdGVt Q29udGV4dFg2NC0+UmlwOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFNldCBjdXJyZW50IGZyYW1l IHBvaW50ZXIgYWRkcmVzcw0KPiArICAvLw0KPiArICBSYnAgPSBTeXN0ZW1Db250ZXh0LlN5c3Rl bUNvbnRleHRYNjQtPlJicDsNCj4gKw0KPiArICAvLw0KPiArICAvLyBDaGVjayBmb3IgcHJvcGVy IGZyYW1lIHBvaW50ZXIgYWxpZ25tZW50DQo+ICsgIC8vDQo+ICsgIGlmICgoKFVJTlROKVJicCAm IChDUFVfU1RBQ0tfQUxJR05NRU5UIC0gMSkpICE9IDApIHsNCj4gKyAgICBJbnRlcm5hbFByaW50 TWVzc2FnZSAoIiEhISEgVW5hbGlnbmVkIGZyYW1lIHBvaW50ZXIuICEhISFcbiIpOw0KPiArICAg IHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEdldCBpbml0aWFsIFBFL0NP RkYgaW1hZ2UgYmFzZSBhZGRyZXNzIGZyb20gY3VycmVudCBSSVANCj4gKyAgLy8NCj4gKyAgSW1h Z2VCYXNlID0gUGVDb2ZmU2VhcmNoSW1hZ2VCYXNlIChSaXApOw0KPiArICBpZiAoSW1hZ2VCYXNl ID09IDApIHsNCj4gKyAgICBJbnRlcm5hbFByaW50TWVzc2FnZSAoIiEhISEgQ291bGQgbm90IGZp bmQgaW1hZ2UgbW9kdWxlIG5hbWVzLiAhISEhIik7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ ICsNCj4gKyAgLy8NCj4gKyAgLy8gU2V0IGxhc3QgUEUvQ09GRiBpbWFnZSBiYXNlIGFkZHJlc3MN Cj4gKyAgLy8NCj4gKyAgTGFzdEltYWdlQmFzZSA9IEltYWdlQmFzZTsNCj4gKw0KPiArICAvLw0K PiArICAvLyBHZXQgaW5pdGlhbCBQRS9DT0ZGIGltYWdlJ3MgZW50cnkgcG9pbnQNCj4gKyAgLy8N Cj4gKyAgU3RhdHVzID0gUGVDb2ZmTG9hZGVyR2V0RW50cnlQb2ludCAoKFZPSUQgKilJbWFnZUJh c2UsICZFbnRyeVBvaW50KTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAg IEVudHJ5UG9pbnQgPSBOVUxMOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gR2V0IGZp bGUgbmFtZSBhbmQgYWJzb2x1dGUgcGF0aCBvZiBpbml0aWFsIFBEQiBmaWxlDQo+ICsgIC8vDQo+ ICsgIEdldFBkYkZpbGVOYW1lIChJbWFnZUJhc2UsICZQZGJBYnNvbHV0ZUZpbGVQYXRoLCAmUGRi RmlsZU5hbWUpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFByaW50IG91dCBpbml0aWFsIGltYWdl IG1vZHVsZSBuYW1lIChpZiBhbnkpDQo+ICsgIC8vDQo+ICsgIGlmIChQZGJBYnNvbHV0ZUZpbGVQ YXRoICE9IE5VTEwpIHsNCj4gKyAgICBJbnRlcm5hbFByaW50TWVzc2FnZSAoDQo+ICsgICAgICAi XG4lYSAoSW1hZ2VCYXNlPTB4JTAxNmx4LCBFbnRyeVBvaW50PTB4JTAxNmx4KTpcbiIsDQo+ICsg ICAgICBQZGJGaWxlTmFtZSwNCj4gKyAgICAgIEltYWdlQmFzZSwNCj4gKyAgICAgIChVSU5UTilF bnRyeVBvaW50DQo+ICsgICAgICApOw0KPiArICAgIEludGVybmFsUHJpbnRNZXNzYWdlICgiJWFc biIsIFBkYkFic29sdXRlRmlsZVBhdGgpOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8g V2FsayB0aHJvdWdoIGNhbGwgc3RhY2sgYW5kIGZpbmQgbmV4dCBtb2R1bGUgbmFtZXMNCj4gKyAg Ly8NCj4gKyAgZm9yICg7Oykgew0KPiArICAgIC8vDQo+ICsgICAgLy8gU2V0IFJJUCB3aXRoIHJl dHVybiBhZGRyZXNzIGZyb20gY3VycmVudCBzdGFjayBmcmFtZQ0KPiArICAgIC8vDQo+ICsgICAg UmlwID0gKihVSU5UNjQgKikoKFVJTlROKVJicCArIDgpOw0KPiArDQo+ICsgICAgLy8NCj4gKyAg ICAvLyBJZiBSSVAgaXMgemVybywgdGhlbiBzdG9wIHVud2luZGluZyB0aGUgc3RhY2sNCj4gKyAg ICAvLw0KPiArICAgIGlmIChSaXAgPT0gMCkgew0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgfQ0K PiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBTZWFyY2ggZm9yIHRoZSByZXNwZWN0aXZlIFBFL0NP RkYgaW1hZ2UgYmFzZWQgb24gUklQDQo+ICsgICAgLy8NCj4gKyAgICBJbWFnZUJhc2UgPSBQZUNv ZmZTZWFyY2hJbWFnZUJhc2UgKFJpcCk7DQo+ICsgICAgaWYgKEltYWdlQmFzZSA9PSAwKSB7DQo+ ICsgICAgICAvLw0KPiArICAgICAgLy8gU3RvcCBzdGFjayB0cmFjZQ0KPiArICAgICAgLy8NCj4g KyAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKw0KPiArICAgIC8vDQo+ICsgICAgLy8gSWYgUklQ IHBvaW50cyB0byBhbm90aGVyIFBFL0NPRkYgaW1hZ2UsIHRoZW4gZmluZCBpdHMgcmVzcGVjdGl2 ZQ0KPiBQREIgZmlsZQ0KPiArICAgIC8vIG5hbWUuDQo+ICsgICAgLy8NCj4gKyAgICBpZiAoTGFz dEltYWdlQmFzZSAhPSBJbWFnZUJhc2UpIHsNCj4gKyAgICAgIC8vDQo+ICsgICAgICAvLyBHZXQg UEUvQ09GRiBpbWFnZSdzIGVudHJ5IHBvaW50DQo+ICsgICAgICAvLw0KPiArICAgICAgU3RhdHVz ID0gUGVDb2ZmTG9hZGVyR2V0RW50cnlQb2ludCAoKFZPSUQgKilJbWFnZUJhc2UsICZFbnRyeVBv aW50KTsNCj4gKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAgICAgRW50 cnlQb2ludCA9IE5VTEw7DQo+ICsgICAgICB9DQo+ICsNCj4gKyAgICAgIC8vDQo+ICsgICAgICAv LyBHZXQgZmlsZSBuYW1lIGFuZCBhYnNvbHV0ZSBwYXRoIG9mIFBEQiBmaWxlDQo+ICsgICAgICAv Lw0KPiArICAgICAgR2V0UGRiRmlsZU5hbWUgKEltYWdlQmFzZSwgJlBkYkFic29sdXRlRmlsZVBh dGgsICZQZGJGaWxlTmFtZSk7DQo+ICsNCj4gKyAgICAgIC8vDQo+ICsgICAgICAvLyBQcmludCBv dXQgaW1hZ2UgbW9kdWxlIG5hbWUgKGlmIGFueSkNCj4gKyAgICAgIC8vDQo+ICsgICAgICBpZiAo UGRiQWJzb2x1dGVGaWxlUGF0aCAhPSBOVUxMKSB7DQo+ICsgICAgICAgIEludGVybmFsUHJpbnRN ZXNzYWdlICgNCj4gKyAgICAgICAgICAiJWEgKEltYWdlQmFzZT0weCUwMTZseCwgRW50cnlQb2lu dD0weCUwMTZseCk6XG4iLA0KPiArICAgICAgICAgIFBkYkZpbGVOYW1lLA0KPiArICAgICAgICAg IEltYWdlQmFzZSwNCj4gKyAgICAgICAgICAoVUlOVE4pRW50cnlQb2ludA0KPiArICAgICAgICAg ICk7DQo+ICsgICAgICAgIEludGVybmFsUHJpbnRNZXNzYWdlICgiJWFcbiIsIFBkYkFic29sdXRl RmlsZVBhdGgpOw0KPiArICAgICAgfQ0KPiArDQo+ICsgICAgICAvLw0KPiArICAgICAgLy8gU2F2 ZSBsYXN0IFBFL0NPRkYgaW1hZ2UgYmFzZSBhZGRyZXNzDQo+ICsgICAgICAvLw0KPiArICAgICAg TGFzdEltYWdlQmFzZSA9IEltYWdlQmFzZTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICAvLw0KPiAr ICAgIC8vIFVud2luZCB0aGUgc3RhY2sNCj4gKyAgICAvLw0KPiArICAgIFJicCA9ICooVUlOVDY0 ICopKFVJTlROKVJicDsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgRHVtcCBzdGFj ayB0cmFjZS4NCj4gKw0KPiArICBAcGFyYW1baW5dICBTeXN0ZW1Db250ZXh0ICAgICAgUG9pbnRl ciB0byBFRklfU1lTVEVNX0NPTlRFWFQuDQo+ICsgIEBwYXJhbVtvdXRdIFVud291bmRTdGFja3ND b3VudCAgQ291bnQgb2YgdW53b3VuZCBzdGFjayBmcmFtZXMuDQo+ICsqKi8NCj4gK1NUQVRJQw0K PiArVk9JRA0KPiArRHVtcFN0YWNrVHJhY2UgKA0KPiArICBJTiAgRUZJX1NZU1RFTV9DT05URVhU ICAgU3lzdGVtQ29udGV4dCwNCj4gKyAgT1VUIElOVE4gICAgICAgICAgICAgICAgICpVbndvdW5k U3RhY2tzQ291bnQNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UNjQgIFJpcDsNCj4gKyAgVUlOVDY0 ICBSYnA7DQo+ICsgIFVJTlROICAgSW1hZ2VCYXNlOw0KPiArICBDSEFSOCAgICpQZGJGaWxlTmFt ZTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBTZXQgY3VycmVudCBSSVAgYWRkcmVzcw0KPiArICAv Lw0KPiArICBSaXAgPSBTeXN0ZW1Db250ZXh0LlN5c3RlbUNvbnRleHRYNjQtPlJpcDsNCj4gKw0K PiArICAvLw0KPiArICAvLyBTZXQgY3VycmVudCBmcmFtZSBwb2ludGVyIGFkZHJlc3MNCj4gKyAg Ly8NCj4gKyAgUmJwID0gU3lzdGVtQ29udGV4dC5TeXN0ZW1Db250ZXh0WDY0LT5SYnA7DQo+ICsN Cj4gKyAgLy8NCj4gKyAgLy8gR2V0IGluaXRpYWwgUEUvQ09GRiBpbWFnZSBiYXNlIGFkZHJlc3Mg ZnJvbSBjdXJyZW50IFJJUA0KPiArICAvLw0KPiArICBJbWFnZUJhc2UgPSBQZUNvZmZTZWFyY2hJ bWFnZUJhc2UgKFJpcCk7DQo+ICsgIGlmIChJbWFnZUJhc2UgPT0gMCkgew0KPiArICAgIEludGVy bmFsUHJpbnRNZXNzYWdlICgiISEhISBDb3VsZCBub3QgZmluZCBiYWNrdHJhY2UgaW5mb3JtYXRp b24uDQo+ICEhISEiKTsNCj4gKyAgICByZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiAr ICAvLyBHZXQgUERCIGZpbGUgbmFtZSBmcm9tIGluaXRpYWwgUEUvQ09GRiBpbWFnZQ0KPiArICAv Lw0KPiArICBHZXRQZGJGaWxlTmFtZSAoSW1hZ2VCYXNlLCBOVUxMLCAmUGRiRmlsZU5hbWUpOw0K PiArDQo+ICsgIC8vDQo+ICsgIC8vIEluaXRpYWxpemUgY291bnQgb2YgdW53b3VuZCBzdGFja3MN Cj4gKyAgLy8NCj4gKyAgKlVud291bmRTdGFja3NDb3VudCA9IDE7DQo+ICsNCj4gKyAgLy8NCj4g KyAgLy8gUHJpbnQgb3V0IGJhY2sgdHJhY2UNCj4gKyAgLy8NCj4gKyAgSW50ZXJuYWxQcmludE1l c3NhZ2UgKCJcbkNhbGwgdHJhY2U6XG4iKTsNCj4gKw0KPiArICBmb3IgKDs7KSB7DQo+ICsgICAg Ly8NCj4gKyAgICAvLyBQcmludCBzdGFjayBmcmFtZSBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDoN Cj4gKyAgICAvLw0KPiArICAgIC8vICMgPFJJUD4gQCA8SW1hZ2VCYXNlPis8UmVsT2Zmc2V0PiAo UkJQKSBpbiBbPE1vZHVsZU5hbWU+IHwgPz8/P10NCj4gKyAgICAvLw0KPiArICAgIEludGVybmFs UHJpbnRNZXNzYWdlICgNCj4gKyAgICAgICIlZCAweCUwMTZseCBAIDB4JTAxNmx4KzB4JXggKDB4 JTAxNmx4KSBpbiAlYVxuIiwNCj4gKyAgICAgICpVbndvdW5kU3RhY2tzQ291bnQgLSAxLA0KPiAr ICAgICAgUmlwLA0KPiArICAgICAgSW1hZ2VCYXNlLA0KPiArICAgICAgUmlwIC0gSW1hZ2VCYXNl IC0gMSwNCj4gKyAgICAgIFJicCwNCj4gKyAgICAgIFBkYkZpbGVOYW1lDQo+ICsgICAgICApOw0K PiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBTZXQgUklQIHdpdGggcmV0dXJuIGFkZHJlc3MgZnJv bSBjdXJyZW50IHN0YWNrIGZyYW1lDQo+ICsgICAgLy8NCj4gKyAgICBSaXAgPSAqKFVJTlQ2NCAq KSgoVUlOVE4pUmJwICsgOCk7DQo+ICsNCj4gKyAgICAvLw0KPiArICAgIC8vIElmIFJJUCBpcyB6 ZXJvLCB0aGVuIHN0b3AgdW53aW5kaW5nIHRoZSBzdGFjaw0KPiArICAgIC8vDQo+ICsgICAgaWYg KFJpcCA9PSAwKSB7DQo+ICsgICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICAvLw0K PiArICAgIC8vIFNlYXJjaCBmb3IgdGhlIHJlc3BlY3RpdmUgUEUvQ09GRiBpbWFnZSBiYXNlZCBv biBSSVANCj4gKyAgICAvLw0KPiArICAgIEltYWdlQmFzZSA9IFBlQ29mZlNlYXJjaEltYWdlQmFz ZSAoUmlwKTsNCj4gKyAgICBpZiAoSW1hZ2VCYXNlID09IDApIHsNCj4gKyAgICAgIC8vDQo+ICsg ICAgICAvLyBTdG9wIHN0YWNrIHRyYWNlDQo+ICsgICAgICAvLw0KPiArICAgICAgYnJlYWs7DQo+ ICsgICAgfQ0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBHZXQgUERCIGZpbGUgbmFtZQ0KPiAr ICAgIC8vDQo+ICsgICAgR2V0UGRiRmlsZU5hbWUgKEltYWdlQmFzZSwgTlVMTCwgJlBkYkZpbGVO YW1lKTsNCj4gKw0KPiArICAgIC8vDQo+ICsgICAgLy8gVW53aW5kIHRoZSBzdGFjaw0KPiArICAg IC8vDQo+ICsgICAgUmJwID0gKihVSU5UNjQgKikoVUlOVE4pUmJwOw0KPiArDQo+ICsgICAgLy8N Cj4gKyAgICAvLyBJbmNyZW1lbnQgY291bnQgb2YgdW53b3VuZCBzdGFja3MNCj4gKyAgICAvLw0K PiArICAgICgqVW53b3VuZFN0YWNrc0NvdW50KSsrOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gICAv KioNCj4gICAgIERpc3BsYXkgQ1BVIGluZm9ybWF0aW9uLg0KPg0KPiBAQCAtMjU0LDkgKzYxMCwy NSBAQCBEdW1wSW1hZ2VBbmRDcHVDb250ZW50ICgNCj4gICAgIElOIEVGSV9TWVNURU1fQ09OVEVY VCAgIFN5c3RlbUNvbnRleHQNCj4gICAgICkNCj4gICB7DQo+ICsgIElOVE4gVW53b3VuZFN0YWNr c0NvdW50Ow0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIER1bXAgQ1BVIGNvbnRleHQNCj4gKyAgLy8N Cj4gICAgIER1bXBDcHVDb250ZXh0IChFeGNlcHRpb25UeXBlLCBTeXN0ZW1Db250ZXh0KTsNCj4g Kw0KPiArICAvLw0KPiArICAvLyBEdW1wIHN0YWNrIHRyYWNlDQo+ICsgIC8vDQo+ICsgIER1bXBT dGFja1RyYWNlIChTeXN0ZW1Db250ZXh0LCAmVW53b3VuZFN0YWNrc0NvdW50KTsNCj4gKw0KPiAr ICAvLw0KPiArICAvLyBEdW1wIGltYWdlIG1vZHVsZSBuYW1lcw0KPiArICAvLw0KPiArICBEdW1w SW1hZ2VNb2R1bGVOYW1lcyAoU3lzdGVtQ29udGV4dCk7DQo+ICsNCj4gICAgIC8vDQo+IC0gIC8v IER1bXAgbW9kdWxlIGltYWdlIGJhc2UgYW5kIG1vZHVsZSBlbnRyeSBwb2ludCBieSBSSVANCj4g KyAgLy8gRHVtcCBzdGFjayBjb250ZW50cw0KPiAgICAgLy8NCj4gLSAgRHVtcE1vZHVsZUltYWdl SW5mbyAoU3lzdGVtQ29udGV4dC5TeXN0ZW1Db250ZXh0WDY0LT5SaXApOw0KPiArICBEdW1wU3Rh Y2tDb250ZW50cyAoU3lzdGVtQ29udGV4dC5TeXN0ZW1Db250ZXh0WDY0LT5Sc3AsDQo+IFVud291 bmRTdGFja3NDb3VudCk7DQo+ICAgfQ0KPiAtLQ0KPiAyLjE0LjMNCj4NCj4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gZWRrMi1kZXZlbCBtYWlsaW5n IGxpc3QNCj4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gaHR0cHM6Ly9saXN0cy4wMS5vcmcv bWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVsDQo+DQo+IGVkazItZGV2ZWwgSW5mbyBQYWdlIC0g MDEub3JnDQo+IDxodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2VkazItZGV2 ZWw+DQo+IGxpc3RzLjAxLm9yZw0KPiBZb3VyIGVtYWlsIGFkZHJlc3M6IFlvdXIgbmFtZSAob3B0 aW9uYWwpOiBZb3UgbWF5IGVudGVyIGEgcHJpdmFjeQ0KPiBwYXNzd29yZCBiZWxvdy4gVGhpcyBw cm92aWRlcyBvbmx5IG1pbGQgc2VjdXJpdHksIGJ1dCBzaG91bGQgcHJldmVudA0KPiBvdGhlcnMg ZnJvbSBtZXNzaW5nIC4uLg0KPg0KPg0KPg0K