From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39833) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bSFwU-0000Hy-2y for qemu-devel@nongnu.org; Tue, 26 Jul 2016 23:55:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bSFwR-0006NY-JE for qemu-devel@nongnu.org; Tue, 26 Jul 2016 23:55:33 -0400 Message-ID: <1469591722.5978.107.camel@kernel.crashing.org> From: Benjamin Herrenschmidt Date: Wed, 27 Jul 2016 13:55:22 +1000 In-Reply-To: <20160727022144.GV17429@voom.fritz.box> References: <1469571686-7284-1-git-send-email-benh@kernel.crashing.org> <1469571686-7284-18-git-send-email-benh@kernel.crashing.org> <20160727022144.GV17429@voom.fritz.box> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: base64 Subject: Re: [Qemu-devel] [PATCH 18/32] ppc: Don't update NIP in DCR access routines List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: David Gibson Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org T24gV2VkLCAyMDE2LTA3LTI3IGF0IDEyOjIxICsxMDAwLCBEYXZpZCBHaWJzb24gd3JvdGU6 DQo+IE9uIFdlZCwgSnVsIDI3LCAyMDE2IGF0IDA4OjIxOjEyQU0gKzEwMDAsIEJlbmphbWlu IEhlcnJlbnNjaG1pZHQNCj4gd3JvdGU6DQo+ID4gDQo+ID4gVGhpcyBpcyBubyBsb25nZXIg bmVjZXNzYXJ5IGFzIHRoZSBoZWxwZXJzIHdpbGwgcHJvcGVybHkgcmV0cmlldmUNCj4gPiB0 aGUgcmV0dXJuIGFkZHJlc3Mgd2hlbiBuZWVkZWQNCj4gDQo+IFdlbGwsIHRoZSBoZWxwZXJz IGFyZSBvbmx5IGZpeGVkIGluIHRoaXMgcGF0Y2ggSUlVQy4NCg0KWWVzLCBhbGwgdGhlc2Ug IkRvbid0IHVwZGF0ZSBOSVAiIHBhdGNoZXMgZG8gYm90aCB0aGUgaGVscGVyIGFuZCB0aGUN CnJlbW92YWwgb2YgdGhlIE5JUCBmaXh1cC4gSSBjYW4gcmV3b3JkIHRoZSBtZXNzYWdlcyBp ZiB5b3UgaGF2ZSBhDQpiZXR0ZXIgd29yZGluZy4NCj4gPiANCj4gPiANCj4gPiBTaWduZWQt b2ZmLWJ5OiBCZW5qYW1pbiBIZXJyZW5zY2htaWR0IDxiZW5oQGtlcm5lbC5jcmFzaGluZy5v cmc+DQo+ID4gLS0tDQo+ID4gwqB0YXJnZXQtcHBjL3RpbWViYXNlX2hlbHBlci5jIHwgMjMg KysrKysrKysrKysrKy0tLS0tLS0tLS0NCj4gPiDCoHRhcmdldC1wcGMvdHJhbnNsYXRlLmPC oMKgwqDCoMKgwqDCoHwgMTIgLS0tLS0tLS0tLS0tDQo+ID4gwqAyIGZpbGVzIGNoYW5nZWQs IDEzIGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQ0KPiA+IA0KPiA+IGRpZmYgLS1n aXQgYS90YXJnZXQtcHBjL3RpbWViYXNlX2hlbHBlci5jIGIvdGFyZ2V0LQ0KPiA+IHBwYy90 aW1lYmFzZV9oZWxwZXIuYw0KPiA+IGluZGV4IGEwN2ZhYTQuLjczMzYzZTAgMTAwNjQ0DQo+ ID4gLS0tIGEvdGFyZ2V0LXBwYy90aW1lYmFzZV9oZWxwZXIuYw0KPiA+ICsrKyBiL3Rhcmdl dC1wcGMvdGltZWJhc2VfaGVscGVyLmMNCj4gPiBAQCAtMTksNiArMTksNyBAQA0KPiA+IMKg I2luY2x1ZGUgInFlbXUvb3NkZXAuaCINCj4gPiDCoCNpbmNsdWRlICJjcHUuaCINCj4gPiDC oCNpbmNsdWRlICJleGVjL2hlbHBlci1wcm90by5oIg0KPiA+ICsjaW5jbHVkZSAiZXhlYy9l eGVjLWFsbC5oIg0KPiA+IMKgI2luY2x1ZGUgInFlbXUvbG9nLmgiDQo+ID4gwqANCj4gPiDC oC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKg0KPiA+ICoqKioqKioqKioqKi8NCj4gPiBAQCAtMTQzLDE1ICsxNDQs MTYgQEAgdGFyZ2V0X3Vsb25nIGhlbHBlcl9sb2FkX2RjcihDUFVQUENTdGF0ZQ0KPiA+ICpl bnYsIHRhcmdldF91bG9uZyBkY3JuKQ0KPiA+IMKgDQo+ID4gwqDCoMKgwqDCoGlmICh1bmxp a2VseShlbnYtPmRjcl9lbnYgPT0gTlVMTCkpIHsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqBx ZW11X2xvZ19tYXNrKExPR19HVUVTVF9FUlJPUiwgIk5vIERDUiBlbnZpcm9ubWVudFxuIik7 DQo+ID4gLcKgwqDCoMKgwqDCoMKgwqBoZWxwZXJfcmFpc2VfZXhjZXB0aW9uX2VycihlbnYs IFBPV0VSUENfRVhDUF9QUk9HUkFNLA0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgUE9XRVJQQ19F WENQX0lOVkFMIHwNCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFBPV0VSUENfRVhDUF9JTlZBTF9J TlZBTCk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqByYWlzZV9leGNlcHRpb25fZXJyX3JhKGVu diwgUE9XRVJQQ19FWENQX1BST0dSQU0sDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgUE9XRVJQQ19FWENQX0lO VkFMIHwNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBQT1dFUlBDX0VYQ1BfSU5WQUxfSU5WQUwsIEdFVFBDKCkp Ow0KPiA+IMKgwqDCoMKgwqB9IGVsc2UgaWYgKHVubGlrZWx5KHBwY19kY3JfcmVhZChlbnYt PmRjcl9lbnYsDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCh1aW50MzJfdClkY3JuLCAm dmFsKSAhPSAwKSkNCj4gPiB7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgcWVtdV9sb2dfbWFz ayhMT0dfR1VFU1RfRVJST1IsICJEQ1IgcmVhZCBlcnJvciAlZCAlMDN4XG4iLA0KPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAodWludDMyX3Qp ZGNybiwgKHVpbnQzMl90KWRjcm4pOw0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgaGVscGVyX3Jh aXNlX2V4Y2VwdGlvbl9lcnIoZW52LCBQT1dFUlBDX0VYQ1BfUFJPR1JBTSwNCj4gPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoFBPV0VSUENfRVhDUF9JTlZBTCB8DQo+ID4gUE9XRVJQQ19FWENQX1BS SVZfUkVHKTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoHJhaXNlX2V4Y2VwdGlvbl9lcnJfcmEo ZW52LCBQT1dFUlBDX0VYQ1BfUFJPR1JBTSwNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBQT1dFUlBDX0VYQ1Bf SU5WQUwgfA0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoFBPV0VSUENfRVhDUF9QUklWX1JFRywgR0VUUEMoKSk7 DQo+ID4gwqDCoMKgwqDCoH0NCj4gPiDCoMKgwqDCoMKgcmV0dXJuIHZhbDsNCj4gPiDCoH0N Cj4gPiBAQCAtMTYwLDE0ICsxNjIsMTUgQEAgdm9pZCBoZWxwZXJfc3RvcmVfZGNyKENQVVBQ Q1N0YXRlICplbnYsDQo+ID4gdGFyZ2V0X3Vsb25nIGRjcm4sIHRhcmdldF91bG9uZyB2YWwp DQo+ID4gwqB7DQo+ID4gwqDCoMKgwqDCoGlmICh1bmxpa2VseShlbnYtPmRjcl9lbnYgPT0g TlVMTCkpIHsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqBxZW11X2xvZ19tYXNrKExPR19HVUVT VF9FUlJPUiwgIk5vIERDUiBlbnZpcm9ubWVudFxuIik7DQo+ID4gLcKgwqDCoMKgwqDCoMKg wqBoZWxwZXJfcmFpc2VfZXhjZXB0aW9uX2VycihlbnYsIFBPV0VSUENfRVhDUF9QUk9HUkFN LA0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgUE9XRVJQQ19FWENQX0lOVkFMIHwNCj4gPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoFBPV0VSUENfRVhDUF9JTlZBTF9JTlZBTCk7DQo+ID4gK8KgwqDCoMKg wqDCoMKgwqByYWlzZV9leGNlcHRpb25fZXJyX3JhKGVudiwgUE9XRVJQQ19FWENQX1BST0dS QU0sDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgUE9XRVJQQ19FWENQX0lOVkFMIHwNCj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBQ T1dFUlBDX0VYQ1BfSU5WQUxfSU5WQUwsIEdFVFBDKCkpOw0KPiA+IMKgwqDCoMKgwqB9IGVs c2UgaWYgKHVubGlrZWx5KHBwY19kY3Jfd3JpdGUoZW52LT5kY3JfZW52LA0KPiA+ICh1aW50 MzJfdClkY3JuLA0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCh1aW50MzJfdCl2YWwp ICE9IDApKSB7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgcWVtdV9sb2dfbWFzayhMT0dfR1VF U1RfRVJST1IsICJEQ1Igd3JpdGUgZXJyb3IgJWQNCj4gPiAlMDN4XG4iLA0KPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAodWludDMyX3QpZGNy biwgKHVpbnQzMl90KWRjcm4pOw0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgaGVscGVyX3JhaXNl X2V4Y2VwdGlvbl9lcnIoZW52LCBQT1dFUlBDX0VYQ1BfUFJPR1JBTSwNCj4gPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoFBPV0VSUENfRVhDUF9JTlZBTCB8DQo+ID4gUE9XRVJQQ19FWENQX1BSSVZf UkVHKTsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoHJhaXNlX2V4Y2VwdGlvbl9lcnJfcmEoZW52 LCBQT1dFUlBDX0VYQ1BfUFJPR1JBTSwNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBQT1dFUlBDX0VYQ1BfSU5W QUwgfA0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoFBPV0VSUENfRVhDUF9QUklWX1JFRywgR0VUUEMoKSk7DQo+ ID4gwqDCoMKgwqDCoH0NCj4gPiDCoH0NCj4gPiBkaWZmIC0tZ2l0IGEvdGFyZ2V0LXBwYy90 cmFuc2xhdGUuYyBiL3RhcmdldC1wcGMvdHJhbnNsYXRlLmMNCj4gPiBpbmRleCA4NGJjYjA5 Li5mMGUwZWM2IDEwMDY0NA0KPiA+IC0tLSBhL3RhcmdldC1wcGMvdHJhbnNsYXRlLmMNCj4g PiArKysgYi90YXJnZXQtcHBjL3RyYW5zbGF0ZS5jDQo+ID4gQEAgLTUyNjIsOCArNTI2Miw2 IEBAIHN0YXRpYyB2b2lkIGdlbl9tZmRjcihEaXNhc0NvbnRleHQgKmN0eCkNCj4gPiDCoMKg wqDCoMKgVENHdiBkY3JuOw0KPiA+IMKgDQo+ID4gwqDCoMKgwqDCoENIS19TVjsNCj4gPiAt wqDCoMKgwqAvKiBOSVAgY2Fubm90IGJlIHJlc3RvcmVkIGlmIHRoZSBtZW1vcnkgZXhjZXB0 aW9uIGNvbWVzIGZyb20NCj4gPiBhbiBoZWxwZXIgKi8NCj4gPiAtwqDCoMKgwqBnZW5fdXBk YXRlX25pcChjdHgsIGN0eC0+bmlwIC0gNCk7DQo+ID4gwqDCoMKgwqDCoGRjcm4gPSB0Y2df Y29uc3RfdGwoU1BSKGN0eC0+b3Bjb2RlKSk7DQo+ID4gwqDCoMKgwqDCoGdlbl9oZWxwZXJf bG9hZF9kY3IoY3B1X2dwcltyRChjdHgtPm9wY29kZSldLCBjcHVfZW52LCBkY3JuKTsNCj4g PiDCoMKgwqDCoMKgdGNnX3RlbXBfZnJlZShkY3JuKTsNCj4gPiBAQCAtNTI3OSw4ICs1Mjc3 LDYgQEAgc3RhdGljIHZvaWQgZ2VuX210ZGNyKERpc2FzQ29udGV4dCAqY3R4KQ0KPiA+IMKg wqDCoMKgwqBUQ0d2IGRjcm47DQo+ID4gwqANCj4gPiDCoMKgwqDCoMKgQ0hLX1NWOw0KPiA+ IC3CoMKgwqDCoC8qIE5JUCBjYW5ub3QgYmUgcmVzdG9yZWQgaWYgdGhlIG1lbW9yeSBleGNl cHRpb24gY29tZXMgZnJvbQ0KPiA+IGFuIGhlbHBlciAqLw0KPiA+IC3CoMKgwqDCoGdlbl91 cGRhdGVfbmlwKGN0eCwgY3R4LT5uaXAgLSA0KTsNCj4gPiDCoMKgwqDCoMKgZGNybiA9IHRj Z19jb25zdF90bChTUFIoY3R4LT5vcGNvZGUpKTsNCj4gPiDCoMKgwqDCoMKgZ2VuX2hlbHBl cl9zdG9yZV9kY3IoY3B1X2VudiwgZGNybiwgY3B1X2dwcltyUyhjdHgtPm9wY29kZSldKTsN Cj4gPiDCoMKgwqDCoMKgdGNnX3RlbXBfZnJlZShkY3JuKTsNCj4gPiBAQCAtNTI5NSw4ICs1 MjkxLDYgQEAgc3RhdGljIHZvaWQgZ2VuX21mZGNyeChEaXNhc0NvbnRleHQgKmN0eCkNCj4g PiDCoMKgwqDCoMKgR0VOX1BSSVY7DQo+ID4gwqAjZWxzZQ0KPiA+IMKgwqDCoMKgwqBDSEtf U1Y7DQo+ID4gLcKgwqDCoMKgLyogTklQIGNhbm5vdCBiZSByZXN0b3JlZCBpZiB0aGUgbWVt b3J5IGV4Y2VwdGlvbiBjb21lcyBmcm9tDQo+ID4gYW4gaGVscGVyICovDQo+ID4gLcKgwqDC oMKgZ2VuX3VwZGF0ZV9uaXAoY3R4LCBjdHgtPm5pcCAtIDQpOw0KPiA+IMKgwqDCoMKgwqBn ZW5faGVscGVyX2xvYWRfZGNyKGNwdV9ncHJbckQoY3R4LT5vcGNvZGUpXSwgY3B1X2VudiwN Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGNwdV9ncHJbckEoY3R4LT5vcGNvZGUpXSk7DQo+ID4gwqDCoMKgwqDCoC8qIE5vdGU6IFJj IHVwZGF0ZSBmbGFnIHNldCBsZWFkcyB0byB1bmRlZmluZWQgc3RhdGUgb2YgUmMwICovDQo+ ID4gQEAgLTUzMTEsOCArNTMwNSw2IEBAIHN0YXRpYyB2b2lkIGdlbl9tdGRjcngoRGlzYXND b250ZXh0ICpjdHgpDQo+ID4gwqDCoMKgwqDCoEdFTl9QUklWOw0KPiA+IMKgI2Vsc2UNCj4g PiDCoMKgwqDCoMKgQ0hLX1NWOw0KPiA+IC3CoMKgwqDCoC8qIE5JUCBjYW5ub3QgYmUgcmVz dG9yZWQgaWYgdGhlIG1lbW9yeSBleGNlcHRpb24gY29tZXMgZnJvbQ0KPiA+IGFuIGhlbHBl ciAqLw0KPiA+IC3CoMKgwqDCoGdlbl91cGRhdGVfbmlwKGN0eCwgY3R4LT5uaXAgLSA0KTsN Cj4gPiDCoMKgwqDCoMKgZ2VuX2hlbHBlcl9zdG9yZV9kY3IoY3B1X2VudiwgY3B1X2dwclty QShjdHgtPm9wY29kZSldLA0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBjcHVfZ3ByW3JTKGN0eC0+b3Bjb2RlKV0pOw0KPiA+IMKg wqDCoMKgwqAvKiBOb3RlOiBSYyB1cGRhdGUgZmxhZyBzZXQgbGVhZHMgdG8gdW5kZWZpbmVk IHN0YXRlIG9mIFJjMCAqLw0KPiA+IEBAIC01MzIyLDggKzUzMTQsNiBAQCBzdGF0aWMgdm9p ZCBnZW5fbXRkY3J4KERpc2FzQ29udGV4dCAqY3R4KQ0KPiA+IMKgLyogbWZkY3J1eCAoUFBD IDQ2MCkgOiB1c2VyLW1vZGUgYWNjZXNzIHRvIERDUiAqLw0KPiA+IMKgc3RhdGljIHZvaWQg Z2VuX21mZGNydXgoRGlzYXNDb250ZXh0ICpjdHgpDQo+ID4gwqB7DQo+ID4gLcKgwqDCoMKg LyogTklQIGNhbm5vdCBiZSByZXN0b3JlZCBpZiB0aGUgbWVtb3J5IGV4Y2VwdGlvbiBjb21l cyBmcm9tDQo+ID4gYW4gaGVscGVyICovDQo+ID4gLcKgwqDCoMKgZ2VuX3VwZGF0ZV9uaXAo Y3R4LCBjdHgtPm5pcCAtIDQpOw0KPiA+IMKgwqDCoMKgwqBnZW5faGVscGVyX2xvYWRfZGNy KGNwdV9ncHJbckQoY3R4LT5vcGNvZGUpXSwgY3B1X2VudiwNCj4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNwdV9ncHJbckEoY3R4LT5v cGNvZGUpXSk7DQo+ID4gwqDCoMKgwqDCoC8qIE5vdGU6IFJjIHVwZGF0ZSBmbGFnIHNldCBs ZWFkcyB0byB1bmRlZmluZWQgc3RhdGUgb2YgUmMwICovDQo+ID4gQEAgLTUzMzIsOCArNTMy Miw2IEBAIHN0YXRpYyB2b2lkIGdlbl9tZmRjcnV4KERpc2FzQ29udGV4dCAqY3R4KQ0KPiA+ IMKgLyogbXRkY3J1eCAoUFBDIDQ2MCkgOiB1c2VyLW1vZGUgYWNjZXNzIHRvIERDUiAqLw0K PiA+IMKgc3RhdGljIHZvaWQgZ2VuX210ZGNydXgoRGlzYXNDb250ZXh0ICpjdHgpDQo+ID4g wqB7DQo+ID4gLcKgwqDCoMKgLyogTklQIGNhbm5vdCBiZSByZXN0b3JlZCBpZiB0aGUgbWVt b3J5IGV4Y2VwdGlvbiBjb21lcyBmcm9tDQo+ID4gYW4gaGVscGVyICovDQo+ID4gLcKgwqDC oMKgZ2VuX3VwZGF0ZV9uaXAoY3R4LCBjdHgtPm5pcCAtIDQpOw0KPiA+IMKgwqDCoMKgwqBn ZW5faGVscGVyX3N0b3JlX2RjcihjcHVfZW52LCBjcHVfZ3ByW3JBKGN0eC0+b3Bjb2RlKV0s DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNwdV9ncHJbclMoY3R4LT5vcGNvZGUpXSk7DQo+ID4gwqDCoMKgwqDCoC8qIE5vdGU6 IFJjIHVwZGF0ZSBmbGFnIHNldCBsZWFkcyB0byB1bmRlZmluZWQgc3RhdGUgb2YgUmMwICov DQo+IA0K