From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=63.128.21.162; helo=us-smtp-delivery-162.mimecast.com; envelope-from=eugene@hp.com; receiver=edk2-devel@lists.01.org Received: from us-smtp-delivery-162.mimecast.com (us-smtp-delivery-162.mimecast.com [63.128.21.162]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 915B421B02822 for ; Tue, 13 Nov 2018 15:24:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hp.com; s=mimecast20180716; t=1542151442; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=iL0ybgHdn6KsD7z01V3ZqRO7DlIRzhz4OA5tEF/BJo0=; b=OJ1V57EiQjKCeQl5vLTkZNJkEgbsjWqh9OfhAQhxrcUqR2igAQVbMqBM1wmt9sZRVL9SU6oJSmdRZ1g2Ck1lLthSdZbH6ZN9bXi6sd5a8SmZlylh4sW9K+tXa9o1g3+zxm5hOYplvZMEph98ZGjvwlNCEL+27tE8Zk/4p5Dm3yA= Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01lp0184.outbound.protection.outlook.com [216.32.180.184]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-306-tkkJWKMgMoCaIxcuI9xjAQ-1; Tue, 13 Nov 2018 18:24:00 -0500 Received: from CS1PR8401MB1189.NAMPRD84.PROD.OUTLOOK.COM (10.169.97.20) by CS1PR8401MB0471.NAMPRD84.PROD.OUTLOOK.COM (10.169.13.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1339.20; Tue, 13 Nov 2018 23:23:57 +0000 Received: from CS1PR8401MB1189.NAMPRD84.PROD.OUTLOOK.COM ([fe80::d41f:6ad6:8b6f:26ca]) by CS1PR8401MB1189.NAMPRD84.PROD.OUTLOOK.COM ([fe80::d41f:6ad6:8b6f:26ca%4]) with mapi id 15.20.1294.045; Tue, 13 Nov 2018 23:23:57 +0000 From: "Cohen, Eugene" To: "Kinney, Michael D" , "edk2-devel@lists.01.org" , "Yao, Jiewen" , "Zhang, Chao B" CC: =?ks_c_5601-1987?B?QmluLCBTdW5nLVVrICi687y6v+0p?= Thread-Topic: [PATCH 3/4] SecurityPkg: add TpmIoLibMmio instance Thread-Index: AdR7nYTa2kHXzqxsRUyIavAWgtxLkAABiLTgAACfbXA= Date: Tue, 13 Nov 2018 23:23:57 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [15.65.252.15] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; CS1PR8401MB0471; 6:f+H3g16xKDLiSHuQk1Ogo+4d7qpuJ/XFmQwyczDXmVAabuPF2W3RZTYTw9YjUZ+73V+ZdBaezv2tuYWqcOZmGnnUwCJtSxWy/Wk6uHzzEs/MlF4yfZk5hyTAC068BHW7UbxPg///wNSCpt1+KKmXhbfH2c1uz60mc7Qvd9c924SP7nqlj+3xecupF4jBtlQ2/fcXzfzWKR2jJ6kyYU3YYK/vH01IxWStei3+rJ0AZ+BUb+N5aNwzPEOLvFaXXsDfF/5kLbTQdTbrDd2iXnK2vfKe8rgmtlMoR7a2JF1Gig5DV3EO0MiYOMYvj0abQpA2uzVOYrH/OGes1UWKI544gR00AITwoeprteKwZt6Q2RtLGoP6PChqHf9bGx+tfQErGlOKh05NA8RvdoBCjv6z3DN6G6M4wK74cktffTJBs69Ukj6WTsCtGAlwl44muiwl/spJwq2nHqvOc7udp2J65A==; 5:YHjd2tDX4MdmqiEuHE9PQkrCxPz+a2TEdUjQQ1tHudPe+TeGpSw0lLYM05gpF/otlUOV1eWqzuAujB/366jNKJBMzOK3bnFeIvQ3fKSpjYI9tm+tXrlBqQNZpltHApr/FVgIiXl3SD/JdEnkCxpbSLq+7+FeXAT//UnmIbyl/D8=; 7:EdIhe1SRGzn+JBSO3xjF+b3ZGBEx3JqwqpA2rRH9SmqSNUecWkXv0kZnwlGRLteYqUw684XvmjOFBK/yy0vk1Te9F4mNmLovzCGb2b806sB3erDr6a2c3F4NNWDQpRO8kVFIbMnjXvYsX+0SUa7anQ== x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10019020)(6029001)(346002)(136003)(376002)(366004)(396003)(39860400002)(6602003)(199004)(189003)(13464003)(53936002)(446003)(86362001)(575784001)(74316002)(68736007)(8676002)(25786009)(66066001)(2900100001)(486006)(71190400001)(71200400001)(7736002)(53546011)(105586002)(99286004)(11346002)(8936002)(106356001)(4744004)(7696005)(7110500001)(76176011)(97736004)(6506007)(81156014)(81166006)(476003)(10710500007)(6246003)(478600001)(53376002)(790700001)(15650500001)(102836004)(54896002)(2906002)(26005)(6116002)(9686003)(2501003)(3846002)(229853002)(6306002)(186003)(14454004)(2420400007)(55016002)(4326008)(966005)(606006)(256004)(14444005)(16799955002)(110136005)(6436002)(316002)(236005)(5660300001)(33656002)(15188155005); DIR:OUT; SFP:1102; SCL:1; SRVR:CS1PR8401MB0471; H:CS1PR8401MB1189.NAMPRD84.PROD.OUTLOOK.COM; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; x-ms-office365-filtering-correlation-id: ddd4fde7-6799-4f1b-300d-08d649bf15ba x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390060)(7020095)(4652040)(8989299)(5600074)(711020)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:CS1PR8401MB0471; x-ms-traffictypediagnostic: CS1PR8401MB0471: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(10201501046)(3231410)(944501410)(4982022)(52105112)(93006095)(93001095)(148016)(149066)(150057)(6041310)(20161123558120)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:CS1PR8401MB0471; BCL:0; PCL:0; RULEID:; SRVR:CS1PR8401MB0471; x-forefront-prvs: 085551F5A8 x-microsoft-antispam-message-info: /3lC74kkkJSKyOFzBcLyUAZh3GAZCX0OUMgWU+e9Ik5P989Mc0wvGk94NCT5PDIuuGIz8/Nee/ZB9vR4uWxQ75m5gUsWHBupBrAGficGQ/WLvrm5Po2SF9Ap360hqHZGwWZnikPOK9mvAmFmLDbPsJLcbX8lSR9eh6rJ/snIY7RlXht+MRqS3lWnJPEWPN4AxPxoYWquhqpIhCmGEey9w/e0m8uTXlfQUqJ8dubSaskfONtoPclGunWsAyWJ2JrgP/zL/13dBaFKXoPNwSiEtf7uPpV2piAcykVDVocjFX2QzUMHjxI4RRDGN2OrvqGvum4aC1unKwDUUisSlKZqWDiaNljIICrvH/fA+fR9QRk= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: hp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ddd4fde7-6799-4f1b-300d-08d649bf15ba X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Nov 2018 23:23:57.0247 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: ca7981a2-785a-463d-b82a-3db87dfc3ce6 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CS1PR8401MB0471 X-MC-Unique: tkkJWKMgMoCaIxcuI9xjAQ-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [PATCH 3/4] SecurityPkg: add TpmIoLibMmio instance X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Nov 2018 23:24:04 -0000 Content-Language: en-US Content-Type: text/plain; charset=KS_C_5601-1987 Content-Transfer-Encoding: base64 TWlrZSwNCg0KVGhlcmUgaXMgYSBwcmV2YWxlbmNlIG9mIGJhc2UgYWRkcmVzcyBub21lbmNsYXR1 cmUgaW4gdGhlIERUUE0gbGlicmFyeSBsaWtlOg0KDQogICAgICAgICAgICAgICAgcmV0dXJuIFRp c1BjUmVxdWVzdFVzZVRwbSAoKFRJU19QQ19SRUdJU1RFUlNfUFRSKSAoVUlOVE4pIFBjZEdldDY0 IChQY2RUcG1CYXNlQWRkcmVzcykpOw0KDQpsaWtlIGZyb20gVHBtMlRpcy5jLg0KDQoNCiYjNjU1 MzM7JiM2NTUzMzsgIHNob3VsZG4mIzY1NTMzOyYjNjU1MzM7dCB0aGUgQWRkcmVzcyBiZSB0aGUg cmVsYXRpdmUgYWRkcmVzcyBmcm9tIGEgYmFzZT8NCg0KSSB0aGluayBpdCBpcywgdG8gdGhlIGV4 dGVudCB0aGF0IHRoZSBQY2RUcG1CYXNlQWRkcmVzcyBhbHJlYWR5IGV4aXN0cy4NCg0KDQomIzY1 NTMzOyYjNjU1MzM7ICBPciBhcmUgeW91IHVzaW5nIHRoZSBmdWxsIERUUE0gTU1JTyBhZGRyZXNz IG9uIHB1cnBvc2UgYW5kIHlvdSBleHBlY3Qgbm9uIERUUE0gTU1JTyBpbXBsZW1lbnRhdGlvbnMg dG8gdHJhbnNsYXRlIGZyb20gdGhlIERUUE0gTU1JTyBhZGRyZXNzIHRvIHRoZSBlcXVpdmFsZW50 IHJlZ2lzdGVyIGFjY2VzcyBpbiBvbiBhbiBhbHRlcm5hdGUgYnVzIHR5cGU/DQoNCk15IHRob3Vn aHQgaXMgdGhhdCB0aGUgUGNkVHBtQmFzZUFkZHJlc3MgY291bGQgYmUgc2V0IHRvIHplcm8gKG9y IHdoYXRldmVyIG5vbi1NTUlPIG9mZnNldCBtYWtlcyBzZW5zZSkuDQoNCg0KJiM2NTUzMzsmIzY1 NTMzOyAgV291bGRuJ3QgaXQgYmUgYmV0dGVyIHRvIGhhdmUgYW4gYWJzdHJhY3Rpb24gZm9yIGRp ZmZlcmVudCBUUE0gcmVnaXN0ZXJzIGFuZCB0aGUgRFRQTSBpbXBsZW1lbnRhdGlvbiB3b3VsZCBj b252ZXJ0IHRvIGEgZnVsbCBNTUlPIGFkZHJlc3MgaW4gdGhlIGxpYiBpbXBsZW1lbnRhdGlvbj8N Cg0KSSd2ZSBiZWVuIGxlZCB0byB1bmRlcnN0YW5kIHRoYXQgdGhlIFRQTSByZWdpc3RlcnMgYXJl IHRoZSBzYW1lIGluIGJvdGggY2FzZXMuICBJIGhhdmVuJ3QgdmVyaWZpZWQgdGhpcyBteXNlbGYg LSBidXQgaWYgeW91IGhhdmUgZGF0YSB0byB0aGUgY29udHJhcnkgcGxlYXNlIGxldCB1cyBrbm93 IHNvIHdlIHN0b3AgZ29pbmcgZG93biB0aGlzIHBhdGguDQoNCk15IG1haW4gcmVhc29uIGZvciBy ZXNpc3RpbmcgY3JlYXRpbmcgYSBuZXcgbGlicmFyeSBhdCB0aGUgVHBtMkRldmljZUxpYiBsYXll ciBiZWNhdXNlIHRoZSBEVFBNIGxpYnJhcnkgY29udGFpbnMgYSBsb3Qgb2YgbG9naWMgYXJvdW5k IGhvdyB0byB0YWxrIHRvIHRoZSBUUE0gdGhhdCBleHRlbmRzIHdlbGwgYmV5b25kIHRoZSBhY2Nl c3MgbWVjaGFuaXNtIHRoYXQgd2Ugd291bGQgbm90IHdhbnQgdG8gZHVwbGljYXRlIHRvIGFub3Ro ZXIgbGlicmFyeSBpbnN0YW5jZS4gIEknbSBsb29raW5nIGluc2lkZSBUcG0yVGlzLmMgYW5kIFRw bTJQdHAuYyB0byBnZXQgdGhpcyBwZXJzcGVjdGl2ZS4NCg0KVGhhbmtzLA0KDQpFdWdlbmUNCg0K RnJvbTogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KU2Vu dDogVHVlc2RheSwgTm92ZW1iZXIgMTMsIDIwMTggMzo1OCBQTQ0KVG86IENvaGVuLCBFdWdlbmUg PGV1Z2VuZUBocC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgWWFvLCBKaWV3ZW4gPGpp ZXdlbi55YW9AaW50ZWwuY29tPjsgWmhhbmcsIENoYW8gQiA8Y2hhby5iLnpoYW5nQGludGVsLmNv bT47IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCkNjOiBC aW4sIFN1bmctVWsgKCYjNjU1MzM7JiMxMDM1OTY3OyYjNjU1MzM7KSA8c3VuZ3VrLWJpbkBocC5j b20+DQpTdWJqZWN0OiBSRTogW1BBVENIIDMvNF0gU2VjdXJpdHlQa2c6IGFkZCBUcG1Jb0xpYk1t aW8gaW5zdGFuY2UNCg0KRXVnZW5lLA0KDQpJdCBhcHBlYXJzIHlvdSBhcmUgZXhwZWN0aW5nIHRo ZSBBZGRyZXNzIHBhcmFtZXRlcg0KdG8gYmUgdGhlIGZ1bGwgTU1JTyBhZGRyZXNzIGZvciBEVFBN LiBJZiB5b3UgYXJlDQp3YW50aW5nIHRoaXMgbGliIGNsYXNzIHRvIGFic3RyYWN0IHRoZSBhY2Nl c3MgZm9yDQpkaWZmZXJlbnQgYnVzIHR5cGVzLCBzaG91bGRuJiM2NTUzMzsmIzY1NTMzO3QgdGhl IEFkZHJlc3MgYmUgdGhlDQpyZWxhdGl2ZSBhZGRyZXNzIGZyb20gYSBiYXNlPw0KDQpPciBhcmUg eW91IHVzaW5nIHRoZSBmdWxsIERUUE0gTU1JTyBhZGRyZXNzIG9uDQpwdXJwb3NlIGFuZCB5b3Ug ZXhwZWN0IG5vbiBEVFBNIE1NSU8gaW1wbGVtZW50YXRpb25zDQp0byB0cmFuc2xhdGUgZnJvbSB0 aGUgRFRQTSBNTUlPIGFkZHJlc3MgdG8gdGhlDQplcXVpdmFsZW50IHJlZ2lzdGVyIGFjY2VzcyBp biBvbiBhbiBhbHRlcm5hdGUgYnVzDQp0eXBlPw0KDQpXb3VsZG4ndCBpdCBiZSBiZXR0ZXIgdG8g aGF2ZSBhbiBhYnN0cmFjdGlvbiBmb3INCmRpZmZlcmVudCBUUE0gcmVnaXN0ZXJzIGFuZCB0aGUg RFRQTSBpbXBsZW1lbnRhdGlvbg0Kd291bGQgY29udmVydCB0byBhIGZ1bGwgTU1JTyBhZGRyZXNz IGluIHRoZSBsaWINCmltcGxlbWVudGF0aW9uPw0KDQpUaGFua3MsDQoNCk1pa2UNCg0KDQo+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGVkazItZGV2ZWwgW21haWx0bzplZGsy LWRldmVsLQ0KPiBib3VuY2VzQGxpc3RzLjAxLm9yZzxtYWlsdG86Ym91bmNlc0BsaXN0cy4wMS5v cmc+XSBPbiBCZWhhbGYgT2YgQ29oZW4sIEV1Z2VuZQ0KPiBTZW50OiBUdWVzZGF5LCBOb3ZlbWJl ciAxMywgMjAxOCAyOjEzIFBNDQo+IFRvOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzxtYWlsdG86 ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc+OyBZYW8sIEppZXdlbg0KPiA8amlld2VuLnlhb0BpbnRl bC5jb208bWFpbHRvOmppZXdlbi55YW9AaW50ZWwuY29tPj47IFpoYW5nLCBDaGFvIEINCj4gPGNo YW8uYi56aGFuZ0BpbnRlbC5jb208bWFpbHRvOmNoYW8uYi56aGFuZ0BpbnRlbC5jb20+Pg0KPiBD YzogQmluLCBTdW5nLVVrICgmIzY1NTMzOyYjMTAzNTk2NzsmIzY1NTMzOykgPHN1bmd1ay1iaW5A aHAuY29tPG1haWx0bzpzdW5ndWstYmluQGhwLmNvbT4+DQo+IFN1YmplY3Q6IFtlZGsyXSBbUEFU Q0ggMy80XSBTZWN1cml0eVBrZzogYWRkDQo+IFRwbUlvTGliTW1pbyBpbnN0YW5jZQ0KPg0KPiBT ZWN1cml0eVBrZzogYWRkIFRwbUlvTGliTW1pbyBpbnN0YW5jZQ0KPg0KPiBDb250cmlidXRlZC11 bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQgMS4xDQo+IENjOiBDaGFvIFpo YW5nIDxjaGFvLmIuemhhbmdAaW50ZWwuY29tPG1haWx0bzpjaGFvLmIuemhhbmdAaW50ZWwuY29t Pj4NCj4gQ2M6IEppZXdlbiBZYW8gPGppZXdlbi55YW9AaW50ZWwuY29tPG1haWx0bzpqaWV3ZW4u eWFvQGludGVsLmNvbT4+DQo+IFNpZ25lZC1vZmYtYnk6IEV1Z2VuZSBDb2hlbiA8ZXVnZW5lQGhw LmNvbTxtYWlsdG86ZXVnZW5lQGhwLmNvbT4+DQo+IC0tLQ0KPiBTZWN1cml0eVBrZy9MaWJyYXJ5 L1RwbUlvTGliTW1pby9UcG1Jb0xpYk1taW8uYyB8DQo+IDIyMSArKysrKysrKysrKysrKysrKysr Kw0KPiBTZWN1cml0eVBrZy9MaWJyYXJ5L1RwbUlvTGliTW1pby9UcG1Jb0xpYk1taW8uaW5mIHwN Cj4gNDEgKysrKw0KPiAyIGZpbGVzIGNoYW5nZWQsIDI2MiBpbnNlcnRpb25zKCspDQo+DQo+IGRp ZmYgLS1naXQNCj4gYS9TZWN1cml0eVBrZy9MaWJyYXJ5L1RwbUlvTGliTW1pby9UcG1Jb0xpYk1t aW8uYw0KPiBiL1NlY3VyaXR5UGtnL0xpYnJhcnkvVHBtSW9MaWJNbWlvL1RwbUlvTGliTW1pby5j DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLjU2ZjMxODcNCj4gLS0t IC9kZXYvbnVsbA0KPiArKysgYi9TZWN1cml0eVBrZy9MaWJyYXJ5L1RwbUlvTGliTW1pby9UcG1J b0xpYk1taW8uYw0KPiBAQCAtMCwwICsxLDIyMSBAQA0KPiArLyoqIEBmaWxlDQo+ICsgVGhpcyBs aWJyYXJ5IGlzIHRvIGFic3RyYWN0IFRQTTIgcmVnaXN0ZXIgYWNjZXNzZXMNCj4gc28gdGhhdCBh IGNvbW1vbg0KPiArIGludGVyZmFjZSBjYW4gYmUgdXNlZCBmb3IgbXVsdGlwbGUgdW5kZXJseWlu ZyBidXNzZXMNCj4gc3VjaCBhcyBUUE0sDQo+ICsgU1BJLCBvciBJMkMgYWNjZXNzLg0KPiArDQo+ ICtDb3B5cmlnaHQgKGMpIDIwMTggSFAgRGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QLg0KPiArVGhp cyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArYXJlIGxpY2Vuc2Vk IGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kDQo+IGNvbmRpdGlvbnMgb2Yg dGhlIEJTRCBMaWNlbnNlDQo+ICt3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4g VGhlIGZ1bGwgdGV4dCBvZg0KPiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gK2h0dHA6 Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHA8aHR0cDovL29wZW5zb3Vy Y2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocD4NCj4gKw0KPiArVEhFIFBST0dSQU0gSVMg RElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFODQo+ICJBUyBJUyIgQkFTSVMs DQo+ICtXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELA0K PiBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsqKi8NCj4gKw0KPiArI2luY2x1 ZGUgPEJhc2UuaD4NCj4gKw0KPiArI2luY2x1ZGUgPExpYnJhcnkvVHBtSW9MaWIuaD4NCj4gKyNp bmNsdWRlIDxMaWJyYXJ5L0lvTGliLmg+DQo+ICsNCj4gKw0KPiArDQo+ICsvKioNCj4gKyBSZWFk cyBhbiA4LWJpdCBUUE0gcmVnaXN0ZXIuDQo+ICsNCj4gKyBSZWFkcyB0aGUgOC1iaXQgVFBNIHJl Z2lzdGVyIHNwZWNpZmllZCBieSBBZGRyZXNzLg0KPiBUaGUgOC1iaXQgcmVhZCB2YWx1ZSBpcw0K PiArIHJldHVybmVkLiBUaGlzIGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIFRQTQ0K PiByZWFkIGFuZCB3cml0ZQ0KPiArIG9wZXJhdGlvbnMgYXJlIHNlcmlhbGl6ZWQuDQo+ICsNCj4g KyBJZiA4LWJpdCBUUE0gcmVnaXN0ZXIgb3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCwNCj4g dGhlbiBBU1NFUlQoKS4NCj4gKw0KPiArIEBwYXJhbSBBZGRyZXNzIFRoZSBUUE0gcmVnaXN0ZXIg dG8gcmVhZC4NCj4gKw0KPiArIEByZXR1cm4gVGhlIHZhbHVlIHJlYWQuDQo+ICsNCj4gKyoqLw0K PiArVUlOVDgNCj4gK0VGSUFQSQ0KPiArVHBtUmVhZDggKA0KPiArIElOIFVJTlROIEFkZHJlc3MN Cj4gKyApDQo+ICt7DQo+ICsgcmV0dXJuIE1taW9SZWFkOCAoQWRkcmVzcyk7DQo+ICt9DQo+ICsN Cj4gKy8qKg0KPiArIFdyaXRlcyBhbiA4LWJpdCBUUE0gcmVnaXN0ZXIuDQo+ICsNCj4gKyBXcml0 ZXMgdGhlIDgtYml0IFRQTSByZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcw0KPiB3aXRoIHRo ZSB2YWx1ZSBzcGVjaWZpZWQNCj4gKyBieSBWYWx1ZSBhbmQgcmV0dXJucyBWYWx1ZS4gVGhpcyBm dW5jdGlvbiBtdXN0DQo+IGd1YXJhbnRlZSB0aGF0IGFsbCBUUE0gcmVhZA0KPiArIGFuZCB3cml0 ZSBvcGVyYXRpb25zIGFyZSBzZXJpYWxpemVkLg0KPiArDQo+ICsgSWYgOC1iaXQgVFBNIHJlZ2lz dGVyIG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQsDQo+IHRoZW4gQVNTRVJUKCkuDQo+ICsN Cj4gKyBAcGFyYW0gQWRkcmVzcyBUaGUgVFBNIHJlZ2lzdGVyIHRvIHdyaXRlLg0KPiArIEBwYXJh bSBWYWx1ZSBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gdGhlIFRQTQ0KPiByZWdpc3Rlci4NCj4gKw0K PiArIEByZXR1cm4gVmFsdWUuDQo+ICsNCj4gKyoqLw0KPiArVUlOVDgNCj4gK0VGSUFQSQ0KPiAr VHBtV3JpdGU4ICgNCj4gKyBJTiBVSU5UTiBBZGRyZXNzLA0KPiArIElOIFVJTlQ4IFZhbHVlDQo+ ICsgKQ0KPiArew0KPiArIHJldHVybiBNbWlvV3JpdGU4IChBZGRyZXNzLCBWYWx1ZSk7DQo+ICt9 DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgUmVhZHMgYSAxNi1iaXQgVFBNIHJlZ2lzdGVyLg0KPiAr DQo+ICsgUmVhZHMgdGhlIDE2LWJpdCBUUE0gcmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJlc3Mu DQo+IFRoZSAxNi1iaXQgcmVhZCB2YWx1ZSBpcw0KPiArIHJldHVybmVkLiBUaGlzIGZ1bmN0aW9u IG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIFRQTQ0KPiByZWFkIGFuZCB3cml0ZQ0KPiArIG9wZXJh dGlvbnMgYXJlIHNlcmlhbGl6ZWQuDQo+ICsNCj4gKyBJZiAxNi1iaXQgVFBNIHJlZ2lzdGVyIG9w ZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQsDQo+IHRoZW4gQVNTRVJUKCkuDQo+ICsgSWYgQWRk cmVzcyBpcyBub3QgYWxpZ25lZCBvbiBhIDE2LWJpdCBib3VuZGFyeSwgdGhlbg0KPiBBU1NFUlQo KS4NCj4gKw0KPiArIEBwYXJhbSBBZGRyZXNzIFRoZSBUUE0gcmVnaXN0ZXIgdG8gcmVhZC4NCj4g Kw0KPiArIEByZXR1cm4gVGhlIHZhbHVlIHJlYWQuDQo+ICsNCj4gKyoqLw0KPiArVUlOVDE2DQo+ ICtFRklBUEkNCj4gK1RwbVJlYWQxNiAoDQo+ICsgSU4gVUlOVE4gQWRkcmVzcw0KPiArICkNCj4g K3sNCj4gKyByZXR1cm4gTW1pb1JlYWQxNiAoQWRkcmVzcyk7DQo+ICt9DQo+ICsNCj4gKw0KPiAr LyoqDQo+ICsgV3JpdGVzIGEgMTYtYml0IFRQTSByZWdpc3Rlci4NCj4gKw0KPiArIFdyaXRlcyB0 aGUgMTYtYml0IFRQTSByZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcw0KPiB3aXRoIHRoZSB2 YWx1ZSBzcGVjaWZpZWQNCj4gKyBieSBWYWx1ZSBhbmQgcmV0dXJucyBWYWx1ZS4gVGhpcyBmdW5j dGlvbiBtdXN0DQo+IGd1YXJhbnRlZSB0aGF0IGFsbCBUUE0gcmVhZA0KPiArIGFuZCB3cml0ZSBv cGVyYXRpb25zIGFyZSBzZXJpYWxpemVkLg0KPiArDQo+ICsgSWYgMTYtYml0IFRQTSByZWdpc3Rl ciBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLA0KPiB0aGVuIEFTU0VSVCgpLg0KPiArIElm IEFkZHJlc3MgaXMgbm90IGFsaWduZWQgb24gYSAxNi1iaXQgYm91bmRhcnksIHRoZW4NCj4gQVNT RVJUKCkuDQo+ICsNCj4gKyBAcGFyYW0gQWRkcmVzcyBUaGUgVFBNIHJlZ2lzdGVyIHRvIHdyaXRl Lg0KPiArIEBwYXJhbSBWYWx1ZSBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gdGhlIFRQTQ0KPiByZWdp c3Rlci4NCj4gKw0KPiArIEByZXR1cm4gVmFsdWUuDQo+ICsNCj4gKyoqLw0KPiArVUlOVDE2DQo+ ICtFRklBUEkNCj4gK1RwbVdyaXRlMTYgKA0KPiArIElOIFVJTlROIEFkZHJlc3MsDQo+ICsgSU4g VUlOVDE2IFZhbHVlDQo+ICsgKQ0KPiArew0KPiArIHJldHVybiBNbWlvV3JpdGUxNiAoQWRkcmVz cywgVmFsdWUpOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyBSZWFkcyBhIDMyLWJpdCBUUE0gcmVn aXN0ZXIuDQo+ICsNCj4gKyBSZWFkcyB0aGUgMzItYml0IFRQTSByZWdpc3RlciBzcGVjaWZpZWQg YnkgQWRkcmVzcy4NCj4gVGhlIDMyLWJpdCByZWFkIHZhbHVlIGlzDQo+ICsgcmV0dXJuZWQuIFRo aXMgZnVuY3Rpb24gbXVzdCBndWFyYW50ZWUgdGhhdCBhbGwgVFBNDQo+IHJlYWQgYW5kIHdyaXRl DQo+ICsgb3BlcmF0aW9ucyBhcmUgc2VyaWFsaXplZC4NCj4gKw0KPiArIElmIDMyLWJpdCBUUE0g cmVnaXN0ZXIgb3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCwNCj4gdGhlbiBBU1NFUlQoKS4N Cj4gKyBJZiBBZGRyZXNzIGlzIG5vdCBhbGlnbmVkIG9uIGEgMzItYml0IGJvdW5kYXJ5LCB0aGVu DQo+IEFTU0VSVCgpLg0KPiArDQo+ICsgQHBhcmFtIEFkZHJlc3MgVGhlIFRQTSByZWdpc3RlciB0 byByZWFkLg0KPiArDQo+ICsgQHJldHVybiBUaGUgdmFsdWUgcmVhZC4NCj4gKw0KPiArKiovDQo+ ICtVSU5UMzINCj4gK0VGSUFQSQ0KPiArVHBtUmVhZDMyICgNCj4gKyBJTiBVSU5UTiBBZGRyZXNz DQo+ICsgKQ0KPiArew0KPiArIHJldHVybiBNbWlvUmVhZDMyIChBZGRyZXNzKTsNCj4gK30NCj4g Kw0KPiArLyoqDQo+ICsgV3JpdGVzIGEgMzItYml0IFRQTSByZWdpc3Rlci4NCj4gKw0KPiArIFdy aXRlcyB0aGUgMzItYml0IFRQTSByZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcw0KPiB3aXRo IHRoZSB2YWx1ZSBzcGVjaWZpZWQNCj4gKyBieSBWYWx1ZSBhbmQgcmV0dXJucyBWYWx1ZS4gVGhp cyBmdW5jdGlvbiBtdXN0DQo+IGd1YXJhbnRlZSB0aGF0IGFsbCBUUE0gcmVhZA0KPiArIGFuZCB3 cml0ZSBvcGVyYXRpb25zIGFyZSBzZXJpYWxpemVkLg0KPiArDQo+ICsgSWYgMzItYml0IFRQTSBy ZWdpc3RlciBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLA0KPiB0aGVuIEFTU0VSVCgpLg0K PiArIElmIEFkZHJlc3MgaXMgbm90IGFsaWduZWQgb24gYSAzMi1iaXQgYm91bmRhcnksIHRoZW4N Cj4gQVNTRVJUKCkuDQo+ICsNCj4gKyBAcGFyYW0gQWRkcmVzcyBUaGUgVFBNIHJlZ2lzdGVyIHRv IHdyaXRlLg0KPiArIEBwYXJhbSBWYWx1ZSBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gdGhlIFRQTQ0K PiByZWdpc3Rlci4NCj4gKw0KPiArIEByZXR1cm4gVmFsdWUuDQo+ICsNCj4gKyoqLw0KPiArVUlO VDMyDQo+ICtFRklBUEkNCj4gK1RwbVdyaXRlMzIgKA0KPiArIElOIFVJTlROIEFkZHJlc3MsDQo+ ICsgSU4gVUlOVDMyIFZhbHVlDQo+ICsgKQ0KPiArew0KPiArIHJldHVybiBNbWlvV3JpdGUzMiAo QWRkcmVzcywgVmFsdWUpOw0KPiArfQ0KPiArDQo+ICsNCj4gKy8qKg0KPiArIFJlYWRzIGEgNjQt Yml0IFRQTSByZWdpc3Rlci4NCj4gKw0KPiArIFJlYWRzIHRoZSA2NC1iaXQgVFBNIHJlZ2lzdGVy IHNwZWNpZmllZCBieSBBZGRyZXNzLg0KPiBUaGUgNjQtYml0IHJlYWQgdmFsdWUgaXMNCj4gKyBy ZXR1cm5lZC4gVGhpcyBmdW5jdGlvbiBtdXN0IGd1YXJhbnRlZSB0aGF0IGFsbCBUUE0NCj4gcmVh ZCBhbmQgd3JpdGUNCj4gKyBvcGVyYXRpb25zIGFyZSBzZXJpYWxpemVkLg0KPiArDQo+ICsgSWYg NjQtYml0IFRQTSByZWdpc3RlciBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLA0KPiB0aGVu IEFTU0VSVCgpLg0KPiArIElmIEFkZHJlc3MgaXMgbm90IGFsaWduZWQgb24gYSA2NC1iaXQgYm91 bmRhcnksIHRoZW4NCj4gQVNTRVJUKCkuDQo+ICsNCj4gKyBAcGFyYW0gQWRkcmVzcyBUaGUgVFBN IHJlZ2lzdGVyIHRvIHJlYWQuDQo+ICsNCj4gKyBAcmV0dXJuIFRoZSB2YWx1ZSByZWFkLg0KPiAr DQo+ICsqKi8NCj4gK1VJTlQ2NA0KPiArRUZJQVBJDQo+ICtUcG1SZWFkNjQgKA0KPiArIElOIFVJ TlROIEFkZHJlc3MNCj4gKyApDQo+ICt7DQo+ICsgcmV0dXJuIE1taW9SZWFkNjQgKEFkZHJlc3Mp Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyBXcml0ZXMgYSA2NC1iaXQgVFBNIHJlZ2lzdGVyLg0K PiArDQo+ICsgV3JpdGVzIHRoZSA2NC1iaXQgVFBNIHJlZ2lzdGVyIHNwZWNpZmllZCBieSBBZGRy ZXNzDQo+IHdpdGggdGhlIHZhbHVlIHNwZWNpZmllZA0KPiArIGJ5IFZhbHVlIGFuZCByZXR1cm5z IFZhbHVlLiBUaGlzIGZ1bmN0aW9uIG11c3QNCj4gZ3VhcmFudGVlIHRoYXQgYWxsIFRQTSByZWFk DQo+ICsgYW5kIHdyaXRlIG9wZXJhdGlvbnMgYXJlIHNlcmlhbGl6ZWQuDQo+ICsNCj4gKyBJZiA2 NC1iaXQgVFBNIHJlZ2lzdGVyIG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQsDQo+IHRoZW4g QVNTRVJUKCkuDQo+ICsgSWYgQWRkcmVzcyBpcyBub3QgYWxpZ25lZCBvbiBhIDY0LWJpdCBib3Vu ZGFyeSwgdGhlbg0KPiBBU1NFUlQoKS4NCj4gKw0KPiArIEBwYXJhbSBBZGRyZXNzIFRoZSBUUE0g cmVnaXN0ZXIgdG8gd3JpdGUuDQo+ICsgQHBhcmFtIFZhbHVlIFRoZSB2YWx1ZSB0byB3cml0ZSB0 byB0aGUgVFBNDQo+IHJlZ2lzdGVyLg0KPiArDQo+ICsqKi8NCj4gK1VJTlQ2NA0KPiArRUZJQVBJ DQo+ICtUcG1Xcml0ZTY0ICgNCj4gKyBJTiBVSU5UTiBBZGRyZXNzLA0KPiArIElOIFVJTlQ2NCBW YWx1ZQ0KPiArICkNCj4gK3sNCj4gKyByZXR1cm4gTW1pb1dyaXRlNjQgKEFkZHJlc3MsIFZhbHVl KTsNCj4gK30NCj4gZGlmZiAtLWdpdA0KPiBhL1NlY3VyaXR5UGtnL0xpYnJhcnkvVHBtSW9MaWJN bWlvL1RwbUlvTGliTW1pby5pbmYNCj4gYi9TZWN1cml0eVBrZy9MaWJyYXJ5L1RwbUlvTGliTW1p by9UcG1Jb0xpYk1taW8uaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAw MDAuLmE0MGY5MGUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TZWN1cml0eVBrZy9MaWJyYXJ5 L1RwbUlvTGliTW1pby9UcG1Jb0xpYk1taW8uaW5mDQo+IEBAIC0wLDAgKzEsNDEgQEANCj4gKyMj IEBmaWxlDQo+ICsjIFByb3ZpZGVzIEJhc2VDcnlwdG8gU0hBMSBoYXNoIHNlcnZpY2UNCj4gKyMN Cj4gKyMgVGhpcyBsaWJyYXJ5IGlzIHRvIGFic3RyYWN0IFRQTTIgcmVnaXN0ZXIgYWNjZXNzZXMN Cj4gc28gdGhhdCBhIGNvbW1vbg0KPiArIyBpbnRlcmZhY2UgY2FuIGJlIHVzZWQgZm9yIG11bHRp cGxlIHVuZGVybHlpbmcNCj4gYnVzc2VzIHN1Y2ggYXMgVFBNLA0KPiArIyBTUEksIG9yIEkyQyBh Y2Nlc3MuDQo+ICsjDQo+ICsjIENvcHlyaWdodCAoYykgMjAxOCBIUCBEZXZlbG9wbWVudCBDb21w YW55LCBMLlAuDQo+ICsjIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlh bHMNCj4gKyMgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMg YW5kDQo+IGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsjIHdoaWNoIGFjY29tcGFu aWVzIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgZnVsbCB0ZXh0DQo+IG9mIHRoZSBsaWNlbnNlIG1h eSBiZSBmb3VuZCBhdA0KPiArIyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxp Y2Vuc2UucGhwPGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHA+ DQo+ICsjIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBP Tg0KPiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVT RU5UQVRJT05TIE9GIEFOWSBLSU5ELA0KPiBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiAr Iw0KPiArIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgSU5GX1ZFUlNJT04gPSAweDAwMDEwMDA1 DQo+ICsgQkFTRV9OQU1FID0gVHBtSW9MaWJNbWlvDQo+ICsgRklMRV9HVUlEID0gQjUxREUwQzYt OEE0OC00QUY5LQ0KPiBCRjg4LTVBNDZDQzg1M0ZDOA0KPiArIE1PRFVMRV9UWVBFID0gQkFTRQ0K PiArIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ICsgTElCUkFSWV9DTEFTUyA9IE5VTEwNCj4gKw0K PiArIw0KPiArIyBUaGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGlzIGZvciByZWZlcmVuY2Ugb25s eSBhbmQNCj4gbm90IHJlcXVpcmVkIGJ5IHRoZSBidWlsZCB0b29scy4NCj4gKyMNCj4gKyMgVkFM SURfQVJDSElURUNUVVJFUyA9IElBMzIgWDY0IEFSTQ0KPiBBQVJDSDY0DQo+ICsjDQo+ICsNCj4g K1tTb3VyY2VzXQ0KPiArIFRwbUlvTGliTW1pby5jDQo+ICsNCj4gK1tQYWNrYWdlc10NCj4gKyBN ZGVQa2cvTWRlUGtnLmRlYw0KPiArIFNlY3VyaXR5UGtnL1NlY3VyaXR5UGtnLmRlYw0KPiArDQo+ ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgQmFzZUxpYg0KPiArIElvTGliDQo+IC0tDQo+IDIuNy40 DQo+DQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+ IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQo+IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0 bzplZGsyLWRldmVsQGxpc3RzLjAxLm9yZz4NCj4gaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1h bi9saXN0aW5mby9lZGsyLWRldmVsPGh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGlu Zm8vZWRrMi1kZXZlbD4NCg==