From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38409) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwS5N-0004VC-W8 for qemu-devel@nongnu.org; Mon, 25 Sep 2017 08:02:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dwS5H-0000Lp-HQ for qemu-devel@nongnu.org; Mon, 25 Sep 2017 08:02:06 -0400 Received: from mga07.intel.com ([134.134.136.100]:59799) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dwS5H-0000In-4i for qemu-devel@nongnu.org; Mon, 25 Sep 2017 08:01:59 -0400 From: "Valluri, Amarnath" Date: Mon, 25 Sep 2017 12:01:51 +0000 Message-ID: <1506340994.5843.84.camel@intel.com> References: <1506083624-20621-1-git-send-email-amarnath.valluri@intel.com> <1506083624-20621-6-git-send-email-amarnath.valluri@intel.com> In-Reply-To: Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH v7 5/8] tmp backend: Add new api to read backend TpmInfo List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "marcandre.lureau@gmail.com" Cc: "stefanb@linux.vnet.ibm.com" , "dgilbert@redhat.com" , "qemu-devel@nongnu.org" T24gRnJpLCAyMDE3LTA5LTIyIGF0IDE3OjM1ICswMjAwLCBNYXJjLUFuZHLDqSBMdXJlYXUgd3Jv dGU6DQo+IEhpDQo+IA0KPiBPbiBGcmksIFNlcCAyMiwgMjAxNyBhdCAyOjMzIFBNLCBBbWFybmF0 aCBWYWxsdXJpDQo+IDxhbWFybmF0aC52YWxsdXJpQGludGVsLmNvbT4gd3JvdGU6DQo+ID4gDQo+ ID4gVFBNIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYmFja2VuZCBpbXBsZW1lbnRhdGlvbiBk ZXRhaWxzIGFuZA0KPiA+IHNoYWxsIG5vdCBiZQ0KPiA+IHBhcnQgb2YgYmFzZSBUUE1CYWNrZW5k IG9iamVjdCwgYW5kIHRoZXNlIHNoYWxsIG5vdCBiZSBhY2Nlc3NlZA0KPiA+IGRpcmVjdGx5IG91 dHNpZGUNCj4gPiBvZiB0aGUgY2xhc3MsIGhlbmNlIGFkZGVkIGEgbmV3IGludGVyZmFjZSBtZXRo b2QsIGdldF90cG1fb3B0aW9ucygpDQo+ID4gdG8NCj4gPiBUUE1Ecml2ZXJPcHMuLCB3aGljaCBz aGFsbCBiZSBpbXBsZW1lbnRlZCBieSB0aGUgZGVyaXZlZCBjbGFzc2VzIHRvDQo+ID4gcmV0dXJu DQo+ID4gY29uZmlndXJlZCB0cG0gb3B0aW9ucy4NCj4gPiANCj4gPiBBIG5ldyB0cG0gYmFja2Vu ZCBhcGkgLSB0cG1fYmFja2VuZF9xdWVyeV90cG0oKSB3aGljaCB1c2VzDQo+ID4gX2dldF90cG1f b3B0aW9ucygpIHRvDQo+ID4gcHJlcGFyZSBUcG1JbmZvLg0KPiA+IA0KPiA+IFNpZ25lZC1vZmYt Ynk6IEFtYXJuYXRoIFZhbGx1cmkgPGFtYXJuYXRoLnZhbGx1cmlAaW50ZWwuY29tPg0KPiA+IFJl dmlld2VkLWJ5OiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LnZuZXQuaWJtLmNvbT4NCj4g PiAtLS0NCj4gPiDCoGJhY2tlbmRzL3RwbS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg fCAyMiArKysrKysrKysrKysrLS0NCj4gPiDCoGhtcC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqA3ICsrLS0tDQo+ID4gwqBody90cG0vdHBtX3Bh c3N0aHJvdWdoLmPCoMKgwqDCoMKgfCA2NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LQ0KPiA+IC0tLS0tLS0tLS0tLQ0KPiA+IMKgaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmQuaCB8 IDI1ICsrKysrKysrKysrKysrKy0tDQo+ID4gwqB0cG0uY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHwgMzIgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ IMKgNSBmaWxlcyBjaGFuZ2VkLCA5MyBpbnNlcnRpb25zKCspLCA1NyBkZWxldGlvbnMoLSkNCj4g PiANCj4gPiBkaWZmIC0tZ2l0IGEvYmFja2VuZHMvdHBtLmMgYi9iYWNrZW5kcy90cG0uYw0KPiA+ IGluZGV4IGM0MDlhNDYuLjZhZGU5ZTQgMTAwNjQ0DQo+ID4gLS0tIGEvYmFja2VuZHMvdHBtLmMN Cj4gPiArKysgYi9iYWNrZW5kcy90cG0uYw0KPiA+IEBAIC0xMzgsNiArMTM4LDI2IEBAIFRQTVZl cnNpb24NCj4gPiB0cG1fYmFja2VuZF9nZXRfdHBtX3ZlcnNpb24oVFBNQmFja2VuZCAqcykNCj4g PiDCoMKgwqDCoMKgcmV0dXJuIGstPm9wcy0+Z2V0X3RwbV92ZXJzaW9uKHMpOw0KPiA+IMKgfQ0K PiA+IA0KPiA+ICtUcG1UeXBlT3B0aW9ucyAqdHBtX2JhY2tlbmRfZ2V0X3RwbV9vcHRpb25zKFRQ TUJhY2tlbmQgKnMpDQo+ID4gK3sNCj4gPiArwqDCoMKgwqBUUE1CYWNrZW5kQ2xhc3MgKmsgPSBU UE1fQkFDS0VORF9HRVRfQ0xBU1Mocyk7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoGFzc2VydChrLT5v cHMtPmdldF90cG1fb3B0aW9ucyk7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoHJldHVybiBrLT5vcHMt PmdldF90cG1fb3B0aW9ucyhzKTsNCj4gPiArfQ0KPiA+ICsNCj4gV2h5IG1ha2UgdGhpcyBwdWJs aWMgQVBJPw0KWWVzLCBJIGFncmVlIG5vIG5lZWQgb2YgdGhpcyBBUEksIGkgd2lsbCByZW1vdmUg dGhpcw0KPiANCj4gPiANCj4gPiArVFBNSW5mbyAqdHBtX2JhY2tlbmRfcXVlcnlfdHBtKFRQTUJh Y2tlbmQgKnMpDQo+ID4gK3sNCj4gPiArwqDCoMKgwqBUUE1JbmZvICppbmZvID0gZ19uZXcwKFRQ TUluZm8sIDEpOw0KPiA+ICsNCj4gPiArwqDCoMKgwqBpbmZvLT5pZCA9IGdfc3RyZHVwKHMtPmlk KTsNCj4gPiArwqDCoMKgwqBpbmZvLT5tb2RlbCA9IHMtPmZlX21vZGVsOw0KPiA+ICvCoMKgwqDC oGluZm8tPm9wdGlvbnMgPSB0cG1fYmFja2VuZF9nZXRfdHBtX29wdGlvbnMocyk7DQo+IENhbGxi YWNrIGNvdWxkIGJlIGNhbGxlZCBkaXJlY3RseSBmcm9tIGhlcmUuDQo+IA0KPiA+IA0KPiA+ICsN Cj4gPiArwqDCoMKgwqByZXR1cm4gaW5mbzsNCj4gPiArfQ0KPiA+ICsNCj4gPiDCoHN0YXRpYyBi b29sIHRwbV9iYWNrZW5kX3Byb3BfZ2V0X29wZW5lZChPYmplY3QgKm9iaiwgRXJyb3IgKiplcnJw KQ0KPiA+IMKgew0KPiA+IMKgwqDCoMKgwqBUUE1CYWNrZW5kICpzID0gVFBNX0JBQ0tFTkQob2Jq KTsNCj4gPiBAQCAtMTkyLDggKzIxMiw2IEBAIHN0YXRpYyB2b2lkDQo+ID4gdHBtX2JhY2tlbmRf aW5zdGFuY2VfZmluYWxpemUoT2JqZWN0ICpvYmopDQo+ID4gwqDCoMKgwqDCoFRQTUJhY2tlbmQg KnMgPSBUUE1fQkFDS0VORChvYmopOw0KPiA+IA0KPiA+IMKgwqDCoMKgwqBnX2ZyZWUocy0+aWQp Ow0KPiA+IC3CoMKgwqDCoGdfZnJlZShzLT5wYXRoKTsNCj4gPiAtwqDCoMKgwqBnX2ZyZWUocy0+ Y2FuY2VsX3BhdGgpOw0KPiA+IMKgwqDCoMKgwqB0cG1fYmFja2VuZF90aHJlYWRfZW5kKHMpOw0K PiA+IMKgfQ0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9obXAuYyBiL2htcC5jDQo+ID4gaW5kZXgg MGZiMmJjNy4uY2Y2MmIyZSAxMDA2NDQNCj4gPiAtLS0gYS9obXAuYw0KPiA+ICsrKyBiL2htcC5j DQo+ID4gQEAgLTMxLDYgKzMxLDcgQEANCj4gPiDCoCNpbmNsdWRlICJxYXBpL3FtcC9xZXJyb3Iu aCINCj4gPiDCoCNpbmNsdWRlICJxYXBpL3N0cmluZy1pbnB1dC12aXNpdG9yLmgiDQo+ID4gwqAj aW5jbHVkZSAicWFwaS9zdHJpbmctb3V0cHV0LXZpc2l0b3IuaCINCj4gPiArI2luY2x1ZGUgInFh cGkvdXRpbC5oIg0KPiA+IMKgI2luY2x1ZGUgInFhcGktdmlzaXQuaCINCj4gPiDCoCNpbmNsdWRl ICJxb20vb2JqZWN0X2ludGVyZmFjZXMuaCINCj4gPiDCoCNpbmNsdWRlICJ1aS9jb25zb2xlLmgi DQo+ID4gQEAgLTEwMTIsMTAgKzEwMTMsMTAgQEAgdm9pZCBobXBfaW5mb190cG0oTW9uaXRvciAq bW9uLCBjb25zdCBRRGljdA0KPiA+ICpxZGljdCkNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjLCBUcG1Nb2RlbF9zdHIodGktPm1vZGVsKSk7DQo+ ID4gDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgbW9uaXRvcl9wcmludGYobW9uLCAiwqDCoFxcICVz OiB0eXBlPSVzIiwNCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHRpLT5pZCwgVHBtVHlwZU9wdGlvbnNLaW5kX3N0cih0aS0+b3B0aW9ucy0NCj4gPiA+ dHlwZSkpOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgdGktPmlkLCBUcG1UeXBlX3N0cih0aS0+b3B0aW9ucy0+dHlwZSkpOw0KPiA+IA0KPiBXaHkg dGhpcyBjaGFuZ2U/IEl0IGlzIHN0aWxsIGEgVHBtVHlwZU9wdGlvbnNLaW5kIG5vPw0KVGhpcyBp cyB3YXMgaXNzdWUgd2l0aCBteSByZWJhc2UsIGkgd2lsbCBmaXguDQo+IA0KPiA+IA0KPiA+IMKg wqDCoMKgwqDCoMKgwqDCoHN3aXRjaCAodGktPm9wdGlvbnMtPnR5cGUpIHsNCj4gPiAtwqDCoMKg wqDCoMKgwqDCoGNhc2UgVFBNX1RZUEVfT1BUSU9OU19LSU5EX1BBU1NUSFJPVUdIOg0KPiA+ICvC oMKgwqDCoMKgwqDCoMKgY2FzZSBUUE1fVFlQRV9QQVNTVEhST1VHSDoNCj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHRwbyA9IHRpLT5vcHRpb25zLT51LnBhc3N0aHJvdWdoLmRhdGE7DQo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtb25pdG9yX3ByaW50Zihtb24sICIlcyVzJXMl cyIsDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB0cG8tPmhhc19wYXRoID8gIixwYXRoPSIgOiAiIiwNCj4gPiBAQCAtMTAyMyw3ICsx MDI0LDcgQEAgdm9pZCBobXBfaW5mb190cG0oTW9uaXRvciAqbW9uLCBjb25zdCBRRGljdA0KPiA+ ICpxZGljdCkNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHRwby0+aGFzX2NhbmNlbF9wYXRoID8gIixjYW5jZWwtcGF0aD0iDQo+ID4g OiAiIiwNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHRwby0+aGFzX2NhbmNlbF9wYXRoID8gdHBvLT5jYW5jZWxfcGF0aCANCj4gPiA6 ICIiKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOw0KPiA+IC3CoMKgwqDC oMKgwqDCoMKgY2FzZSBUUE1fVFlQRV9PUFRJT05TX0tJTkRfX01BWDoNCj4gPiArwqDCoMKgwqDC oMKgwqDCoGNhc2UgVFBNX1RZUEVfX01BWDoNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGJyZWFrOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqBt b25pdG9yX3ByaW50Zihtb24sICJcbiIpOw0KPiA+IGRpZmYgLS1naXQgYS9ody90cG0vdHBtX3Bh c3N0aHJvdWdoLmMgYi9ody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMNCj4gPiBpbmRleCBhMDQ1OWE2 Li5mYjdkYWQ4IDEwMDY0NA0KPiA+IC0tLSBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYw0KPiA+ ICsrKyBiL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYw0KPiA+IEBAIC00OSw3ICs0OSw4IEBADQo+ ID4gwqBzdHJ1Y3QgVFBNUGFzc3RocnVTdGF0ZSB7DQo+ID4gwqDCoMKgwqDCoFRQTUJhY2tlbmQg cGFyZW50Ow0KPiA+IA0KPiA+IC3CoMKgwqDCoGNoYXIgKnRwbV9kZXY7DQo+ID4gK8KgwqDCoMKg VFBNUGFzc3Rocm91Z2hPcHRpb25zICpvcHRpb25zOw0KPiA+ICvCoMKgwqDCoGNvbnN0IGNoYXIg KnRwbV9kZXY7DQo+ID4gwqDCoMKgwqDCoGludCB0cG1fZmQ7DQo+ID4gwqDCoMKgwqDCoGJvb2wg dHBtX2V4ZWN1dGluZzsNCj4gPiDCoMKgwqDCoMKgYm9vbCB0cG1fb3BfY2FuY2VsZWQ7DQo+ID4g QEAgLTMwOCwxNSArMzA5LDE0IEBAIHN0YXRpYyBUUE1WZXJzaW9uDQo+ID4gdHBtX3Bhc3N0aHJv dWdoX2dldF90cG1fdmVyc2lvbihUUE1CYWNrZW5kICp0YikNCj4gPiDCoCAqIGluIERvY3VtZW50 YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1jbGFzcy10cG0uDQo+ID4gwqAgKiBGcm9tIC9kZXYvdHBt MCBjcmVhdGUgL3N5cy9jbGFzcy9taXNjL3RwbTAvZGV2aWNlL2NhbmNlbA0KPiA+IMKgICovDQo+ ID4gLXN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX29wZW5fc3lzZnNfY2FuY2VsKFRQTUJhY2tl bmQgKnRiKQ0KPiA+ICtzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9vcGVuX3N5c2ZzX2NhbmNl bChUUE1QYXNzdGhydVN0YXRlDQo+ID4gKnRwbV9wdCkNCj4gSSBzdXNwZWN0IHRoaXMgY2hhbmdl IGNvdWxkIGJlIGRvbmUgaW4gYW4gZWFybGllci9zZXBhcmF0ZSBwYXRjaA0KSSBmZWVsIHRoaXMg Y2hhbmdlIGlzIGJldHRlciBwYXJ0IG9mIHRoaXMgY29tbWl0IGFzIHRoaXMgaXMgc2lkZSBlZmZl Y3QNCm9mIHJlYXJyYWdlbmQgdHBtIG9wdGlvbnMsIG5vdyB0aGVzZSBhcmUgcGFydCBvZiBUUE1Q YXNzdHJodVN0YXRlIHNvDQpfb3Blbl9zeXNmc19jYW5jZWwoKSBuZWVkIG5vdCB3b3JrIG9uIFRQ TUJhY2tlbmQuDQo+IA0KPiA+IA0KPiA+IMKgew0KPiA+IC3CoMKgwqDCoFRQTVBhc3N0aHJ1U3Rh dGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7DQo+ID4gwqDCoMKgwqDCoGludCBmZCA9 IC0xOw0KPiA+IMKgwqDCoMKgwqBjaGFyICpkZXY7DQo+ID4gwqDCoMKgwqDCoGNoYXIgcGF0aFtQ QVRIX01BWF07DQo+ID4gDQo+ID4gLcKgwqDCoMKgaWYgKHRiLT5jYW5jZWxfcGF0aCkgew0KPiA+ IC3CoMKgwqDCoMKgwqDCoMKgZmQgPSBxZW11X29wZW4odGItPmNhbmNlbF9wYXRoLCBPX1dST05M WSk7DQo+ID4gK8KgwqDCoMKgaWYgKHRwbV9wdC0+b3B0aW9ucy0+Y2FuY2VsX3BhdGgpIHsNCj4g PiArwqDCoMKgwqDCoMKgwqDCoGZkID0gcWVtdV9vcGVuKHRwbV9wdC0+b3B0aW9ucy0+Y2FuY2Vs X3BhdGgsIE9fV1JPTkxZKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZmQgPCAwKSB7DQo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnJvcl9yZXBvcnQoIkNvdWxkIG5vdCBvcGVu IFRQTSBjYW5jZWwgcGF0aCA6ICVzIiwNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RyZXJyb3IoZXJybm8pKTsNCj4gPiBAQCAtMzMxLDcg KzMzMSw3IEBAIHN0YXRpYyBpbnQNCj4gPiB0cG1fcGFzc3Rocm91Z2hfb3Blbl9zeXNmc19jYW5j ZWwoVFBNQmFja2VuZCAqdGIpDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBkZXYpIDwgc2l6ZW9mKHBhdGgpKSB7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBmZCA9IHFlbXVfb3BlbihwYXRoLCBPX1dST05MWSk7DQo+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZiAoZmQgPj0gMCkgew0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHRiLT5jYW5jZWxfcGF0aCA9IGdfc3RyZHVwKHBhdGgpOw0KPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRwbV9wdC0+b3B0aW9ucy0+Y2FuY2VsX3BhdGggPSBn X3N0cmR1cChwYXRoKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7DQo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVycm9yX3JlcG9ydCgidHBtX3Bh c3N0aHJvdWdoOiBDb3VsZCBub3Qgb3BlbiBUUE0NCj4gPiBjYW5jZWwgIg0KPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJwYXRo ICVzIDogJXMiLCBwYXRoLA0KPiA+IHN0cmVycm9yKGVycm5vKSk7DQo+ID4gQEAgLTM1MSwxNyAr MzUxLDE4IEBAIHN0YXRpYyBpbnQNCj4gPiB0cG1fcGFzc3Rocm91Z2hfaGFuZGxlX2RldmljZV9v cHRzKFFlbXVPcHRzICpvcHRzLCBUUE1CYWNrZW5kICp0YikNCj4gPiDCoMKgwqDCoMKgY29uc3Qg Y2hhciAqdmFsdWU7DQo+ID4gDQo+ID4gwqDCoMKgwqDCoHZhbHVlID0gcWVtdV9vcHRfZ2V0KG9w dHMsICJjYW5jZWwtcGF0aCIpOw0KPiA+IC3CoMKgwqDCoHRiLT5jYW5jZWxfcGF0aCA9IGdfc3Ry ZHVwKHZhbHVlKTsNCj4gPiArwqDCoMKgwqBpZiAodmFsdWUpIHsNCj4gPiArwqDCoMKgwqDCoMKg wqDCoHRwbV9wdC0+b3B0aW9ucy0+Y2FuY2VsX3BhdGggPSBnX3N0cmR1cCh2YWx1ZSk7DQo+ID4g K8KgwqDCoMKgwqDCoMKgwqB0cG1fcHQtPm9wdGlvbnMtPmhhc19jYW5jZWxfcGF0aCA9IHRydWU7 DQo+ID4gK8KgwqDCoMKgfQ0KPiA+IA0KPiA+IMKgwqDCoMKgwqB2YWx1ZSA9IHFlbXVfb3B0X2dl dChvcHRzLCAicGF0aCIpOw0KPiA+IC3CoMKgwqDCoGlmICghdmFsdWUpIHsNCj4gPiAtwqDCoMKg wqDCoMKgwqDCoHZhbHVlID0gVFBNX1BBU1NUSFJPVUdIX0RFRkFVTFRfREVWSUNFOw0KPiA+ICvC oMKgwqDCoGlmICh2YWx1ZSkgew0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgdHBtX3B0LT5vcHRpb25z LT5oYXNfcGF0aCA9IHRydWU7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqB0cG1fcHQtPm9wdGlvbnMt PnBhdGggPSBnX3N0cmR1cCh2YWx1ZSk7DQo+ID4gwqDCoMKgwqDCoH0NCj4gPiANCj4gPiAtwqDC oMKgwqB0cG1fcHQtPnRwbV9kZXYgPSBnX3N0cmR1cCh2YWx1ZSk7DQo+ID4gLQ0KPiA+IC3CoMKg wqDCoHRiLT5wYXRoID0gZ19zdHJkdXAodHBtX3B0LT50cG1fZGV2KTsNCj4gPiAtDQo+ID4gK8Kg wqDCoMKgdHBtX3B0LT50cG1fZGV2ID0gdmFsdWUgPyB2YWx1ZSA6DQo+ID4gVFBNX1BBU1NUSFJP VUdIX0RFRkFVTFRfREVWSUNFOw0KPiBJc24ndCB0aGF0IGR1cGxpY2F0ZWQgd2l0aCB0cG1fcHQt Pm9wdGlvbnMtPnBhdGggPyBBbmQgZGlmZmVyZW50DQo+IHZhbHVlcy4uLg0KVGhpcyBpcyBpbnRl bnRpb25hbCwgb3B0aW9ucy0+cGF0aCBob2xkcyB0aGUgY29uZmlndXJhdGlvbiB2YWx1ZSwgd2hl cmUNCmFzIHRwbV9kZXYgcG9pbnRzIHRoZSByZWFsIGRldmljZSBwYXRoIHVzZWQuDQo+IA0KPiA+ IA0KPiA+IMKgwqDCoMKgwqB0cG1fcHQtPnRwbV9mZCA9IHFlbXVfb3Blbih0cG1fcHQtPnRwbV9k ZXYsIE9fUkRXUik7DQo+ID4gwqDCoMKgwqDCoGlmICh0cG1fcHQtPnRwbV9mZCA8IDApIHsNCj4g PiDCoMKgwqDCoMKgwqDCoMKgwqBlcnJvcl9yZXBvcnQoIkNhbm5vdCBhY2Nlc3MgVFBNIGRldmlj ZSB1c2luZyAnJXMnOiAlcyIsDQo+ID4gQEAgLTM4MiwxMCArMzgzLDggQEAgc3RhdGljIGludA0K PiA+IHRwbV9wYXNzdGhyb3VnaF9oYW5kbGVfZGV2aWNlX29wdHMoUWVtdU9wdHMgKm9wdHMsIFRQ TUJhY2tlbmQgKnRiKQ0KPiA+IMKgwqDCoMKgwqB0cG1fcHQtPnRwbV9mZCA9IC0xOw0KPiA+IA0K PiA+IMKgIGVycl9mcmVlX3BhcmFtZXRlcnM6DQo+ID4gLcKgwqDCoMKgZ19mcmVlKHRiLT5wYXRo KTsNCj4gPiAtwqDCoMKgwqB0Yi0+cGF0aCA9IE5VTEw7DQo+ID4gLQ0KPiA+IC3CoMKgwqDCoGdf ZnJlZSh0cG1fcHQtPnRwbV9kZXYpOw0KPiA+ICvCoMKgwqDCoHFhcGlfZnJlZV9UUE1QYXNzdGhy b3VnaE9wdGlvbnModHBtX3B0LT5vcHRpb25zKTsNCj4gPiArwqDCoMKgwqB0cG1fcHQtPm9wdGlv bnMgPSBOVUxMOw0KPiA+IMKgwqDCoMKgwqB0cG1fcHQtPnRwbV9kZXYgPSBOVUxMOw0KPiA+IA0K PiA+IMKgwqDCoMKgwqByZXR1cm4gMTsNCj4gPiBAQCAtNDAzLDcgKzQwMiw3IEBAIHN0YXRpYyBU UE1CYWNrZW5kDQo+ID4gKnRwbV9wYXNzdGhyb3VnaF9jcmVhdGUoUWVtdU9wdHMgKm9wdHMsIGNv bnN0IGNoYXIgKmlkKQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gZXJyX2V4aXQ7DQo+ID4g wqDCoMKgwqDCoH0NCj4gPiANCj4gPiAtwqDCoMKgwqB0cG1fcHQtPmNhbmNlbF9mZCA9IHRwbV9w YXNzdGhyb3VnaF9vcGVuX3N5c2ZzX2NhbmNlbCh0Yik7DQo+ID4gK8KgwqDCoMKgdHBtX3B0LT5j YW5jZWxfZmQgPSB0cG1fcGFzc3Rocm91Z2hfb3Blbl9zeXNmc19jYW5jZWwodHBtX3B0KTsNCj4g PiDCoMKgwqDCoMKgaWYgKHRwbV9wdC0+Y2FuY2VsX2ZkIDwgMCkgew0KPiA+IMKgwqDCoMKgwqDC oMKgwqDCoGdvdG8gZXJyX2V4aXQ7DQo+ID4gwqDCoMKgwqDCoH0NCj4gPiBAQCAtNDE2LDYgKzQx NSwzMSBAQCBlcnJfZXhpdDoNCj4gPiDCoMKgwqDCoMKgcmV0dXJuIE5VTEw7DQo+ID4gwqB9DQo+ ID4gDQo+ID4gK3N0YXRpYyBUcG1UeXBlT3B0aW9ucyAqdHBtX3Bhc3N0aHJvdWdoX2dldF90cG1f b3B0aW9ucyhUUE1CYWNrZW5kDQo+ID4gKnRiKQ0KPiA+ICt7DQo+ID4gK8KgwqDCoMKgVFBNUGFz c3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsNCj4gPiArwqDCoMKgwqBU cG1UeXBlT3B0aW9ucyAqb3B0aW9ucyA9IE5VTEw7DQo+ID4gK8KgwqDCoMKgVFBNUGFzc3Rocm91 Z2hPcHRpb25zICpwb3B0aW9ucyA9IE5VTEw7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoHBvcHRpb25z ID0gZ19uZXcwKFRQTVBhc3N0aHJvdWdoT3B0aW9ucywgMSk7DQo+ID4gKw0KPiA+ICvCoMKgwqDC oGlmICh0cG1fcHQtPm9wdGlvbnMtPmhhc19wYXRoKSB7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqBw b3B0aW9ucy0+aGFzX3BhdGggPSB0cnVlOw0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgcG9wdGlvbnMt PnBhdGggPSBnX3N0cmR1cCh0cG1fcHQtPm9wdGlvbnMtPnBhdGgpOw0KPiA+ICvCoMKgwqDCoH0N Cj4gPiArDQo+ID4gK8KgwqDCoMKgaWYgKHRwbV9wdC0+b3B0aW9ucy0+aGFzX2NhbmNlbF9wYXRo KSB7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqBwb3B0aW9ucy0+aGFzX2NhbmNlbF9wYXRoID0gdHJ1 ZTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoHBvcHRpb25zLT5jYW5jZWxfcGF0aCA9IGdfc3RyZHVw KHRwbV9wdC0+b3B0aW9ucy0NCj4gPiA+Y2FuY2VsX3BhdGgpOw0KPiA+ICvCoMKgwqDCoH0NCj4g PiArDQo+IFRoYXQgbG9va3MgbGlrZSBhIGpvYiBmb3IgUUFQSV9DTE9ORS4NCk9rLCBJIHdhcyBu b3Qga25vd2luZyB0aGlzLCBUaGFua3MgZm9yIHBvaW50aW5nIGl0LiBJIHdpbGwgZml4Lg0KDQoN Ci0gQW1hcm5hdGg=