From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NSZFY-0007A8-LF for qemu-devel@nongnu.org; Wed, 06 Jan 2010 12:00:48 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NSZFU-00078d-Gg for qemu-devel@nongnu.org; Wed, 06 Jan 2010 12:00:48 -0500 Received: from [199.232.76.173] (port=33757 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NSZFU-00078R-0F for qemu-devel@nongnu.org; Wed, 06 Jan 2010 12:00:44 -0500 Received: from mx20.gnu.org ([199.232.41.8]:23265) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NSZFT-0001fq-GL for qemu-devel@nongnu.org; Wed, 06 Jan 2010 12:00:43 -0500 Received: from mail-pw0-f43.google.com ([209.85.160.43]) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NSZFS-0004dl-0u for qemu-devel@nongnu.org; Wed, 06 Jan 2010 12:00:42 -0500 Received: by pwj11 with SMTP id 11so12316059pwj.2 for ; Wed, 06 Jan 2010 09:00:40 -0800 (PST) MIME-Version: 1.0 In-Reply-To: <20100105231943.6526.42311.stgit@skyserv> References: <20100105231558.6526.44483.stgit@skyserv> <20100105231943.6526.42311.stgit@skyserv> From: Blue Swirl Date: Wed, 6 Jan 2010 17:00:20 +0000 Message-ID: Subject: Re: [Qemu-devel] [PATCH 8/9] sparc64: interrupt trap handling Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Igor V. Kovalenko" Cc: qemu-devel@nongnu.org T24gVHVlLCBKYW4gNSwgMjAxMCBhdCAxMToxOSBQTSwgSWdvciBWLiBLb3ZhbGVua28KPGlnb3Iu di5rb3ZhbGVua29AZ21haWwuY29tPiB3cm90ZToKPiBGcm9tOiBJZ29yIFYuIEtvdmFsZW5rbyA8 aWdvci52LmtvdmFsZW5rb0BnbWFpbC5jb20+Cj4KPiBjcHVfY2hlY2tfaXJxcwo+IC0gaGFuZGxl IFNPRlRJTlQgcmVnaXN0ZXIgVElDSyBhbmQgU1RJQ0sgdGltZXIgYml0cwo+IC0gb25seSBjaGVj ayBpbnRlcnJ1cHQgbGV2ZWxzIGdyZWF0ZXIgdGhhbiBQSUwgdmFsdWUKPiAtIGhhbmRsZSBwcmVl bXB0aW9uIGJ5IGhpZ2hlciBsZXZlbCB0cmFwcwo+Cj4gY3B1X2V4ZWMKPiAtIGhhbmRsZSBDUFVf SU5URVJSVVBUX0hBUkQgb25seSBpZiBpbnRlcnJ1cHRzIGFyZSBlbmFibGVkCj4gLSBQSUwgMTUg aXMgbm90IHNwZWNpYWwgbGV2ZWwgb24gc3BhcmN2OQo+Cj4gU2lnbmVkLW9mZi1ieTogSWdvciBW LiBLb3ZhbGVua28gPGlnb3Iudi5rb3ZhbGVua29AZ21haWwuY29tPgo+IC0tLQo+IMKgY3B1LWV4 ZWMuYyB8IMKgIDQwICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KPiDC oGh3L3N1bjR1LmMgfCDCoCA1MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tCj4gwqAyIGZpbGVzIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDMz IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2NwdS1leGVjLmMgYi9jcHUtZXhlYy5jCj4g aW5kZXggYWY0NTk1Yi4uNjUxOTJjMSAxMDA2NDQKPiAtLS0gYS9jcHUtZXhlYy5jCj4gKysrIGIv Y3B1LWV4ZWMuYwo+IEBAIC00NDksMjQgKzQ0OSwyOCBAQCBpbnQgY3B1X2V4ZWMoQ1BVU3RhdGUg KmVudjEpCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbmV4dF90YiA9IDA7 Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+IMKgI2VsaWYgZGVmaW5lZChUQVJH RVRfU1BBUkMpCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmICgoaW50ZXJydXB0 X3JlcXVlc3QgJiBDUFVfSU5URVJSVVBUX0hBUkQpICYmCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBjcHVfaW50ZXJydXB0c19lbmFibGVkKGVudikpIHsKPiAtIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGludCBwaWwgPSBlbnYtPmludGVycnVwdF9pbmRleCAm IDE1Owo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW50IHR5cGUgPSBlbnYt PmludGVycnVwdF9pbmRleCAmIDB4ZjA7Cj4gLQo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgaWYgKCgodHlwZSA9PSBUVF9FWFRJTlQpICYmCj4gLSDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoChwaWwgPT0gMTUgfHwgcGlsID4gZW52LT5wc3JwaWwp KSB8fAo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdHlwZSAhPSBU VF9FWFRJTlQpIHsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVu di0+aW50ZXJydXB0X3JlcXVlc3QgJj0gfkNQVV9JTlRFUlJVUFRfSEFSRDsKPiAtIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZW52LT5leGNlcHRpb25faW5kZXggPSBl bnYtPmludGVycnVwdF9pbmRleDsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgZG9faW50ZXJydXB0KGVudik7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBlbnYtPmludGVycnVwdF9pbmRleCA9IDA7Cj4gLSDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoG5leHRfdGIgPSAwOwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgfQo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSBlbHNlIGlm IChpbnRlcnJ1cHRfcmVxdWVzdCAmIENQVV9JTlRFUlJVUFRfVElNRVIpIHsKPiAtIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8vZG9faW50ZXJydXB0KDAsIDAsIDAsIDAsIDApOwo+ IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZW52LT5pbnRlcnJ1cHRfcmVxdWVz dCAmPSB+Q1BVX0lOVEVSUlVQVF9USU1FUjsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IH0KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKChpbnRlcnJ1cHRfcmVxdWVz dCAmIENQVV9JTlRFUlJVUFRfSEFSRCkpIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgaWYgKGNwdV9pbnRlcnJ1cHRzX2VuYWJsZWQoZW52KSkgewo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpbnQgcGlsID0gZW52LT5pbnRlcnJ1cHRf aW5kZXggJiAweGY7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oGludCB0eXBlID0gZW52LT5pbnRlcnJ1cHRfaW5kZXggJiAweGYwOwo+ICsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKCgodHlwZSA9PSBUVF9FWFRJTlQp ICYmIChwaWwgPiBlbnYtPnBzcnBpbCkpIHx8Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHR5cGUgIT0gVFRfRVhUSU5U KSB7CgpUaGlzIHJlbW92ZXMgdGhlIGNoZWNrIGZvciBsZXZlbCAxNSwgd2hpY2ggaXMgbm9uLW1h c2thYmxlIG9uIFY4LgoKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgLy9lbnYtPmludGVycnVwdF9yZXF1ZXN0ICY9IH5DUFVfSU5URVJSVVBUX0hBUkQ7 CgpSZW1vdmUuCgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBpZiAoZW52LT5pbnRlcnJ1cHRfaW5kZXggPiAwKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGVudi0+ZXhjZXB0aW9uX2luZGV4 ID0gZW52LT5pbnRlcnJ1cHRfaW5kZXg7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGRvX2ludGVycnVwdChlbnYpOwo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBuZXh0X3RiID0gMDsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfQo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgfQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBlbHNlIGlmIChpbnRlcnJ1cHRf cmVxdWVzdCAmIENQVV9JTlRFUlJVUFRfVElNRVIpIHsKCidlbHNlIGlmJyBldGMuIHNob3VsZCBi ZSBvbiB0aGUgc2FtZSBsaW5lIGFzICd9Jy4KCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoGVudi0+aW50ZXJydXB0X3JlcXVlc3QgJj0gfkNQVV9JTlRFUlJVUFRfVElNRVI7 Cj4gKyNpZiAhZGVmaW5lZChDT05GSUdfVVNFUl9PTkxZKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBjcHVfY2hlY2tfaXJxcyhlbnYpOwo+ICsjZW5kaWYKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfQo+IMKgI2VsaWYgZGVmaW5lZChUQVJHRVRfQVJNKQo+ IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChpbnRlcnJ1cHRfcmVxdWVzdCAmIENQ VV9JTlRFUlJVUFRfRklRCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgJiYg IShlbnYtPnVuY2FjaGVkX2Nwc3IgJiBDUFNSX0YpKSB7Cj4gZGlmZiAtLWdpdCBhL2h3L3N1bjR1 LmMgYi9ody9zdW40dS5jCj4gaW5kZXggOWQ0NmYwOC4uODRhODA0MyAxMDA2NDQKPiAtLS0gYS9o dy9zdW40dS5jCj4gKysrIGIvaHcvc3VuNHUuYwo+IEBAIC0yMzMsMjkgKzIzMyw1MSBAQCB2b2lk IGlycV9pbmZvKE1vbml0b3IgKm1vbikKPgo+IMKgdm9pZCBjcHVfY2hlY2tfaXJxcyhDUFVTdGF0 ZSAqZW52KQo+IMKgewo+IC0gwqAgwqB1aW50MzJfdCBwaWwgPSBlbnYtPnBpbF9pbiB8IChlbnYt PnNvZnRpbnQgJiB+U09GVElOVF9USU1FUikgfAo+IC0gwqAgwqAgwqAgwqAoKGVudi0+c29mdGlu dCAmIFNPRlRJTlRfVElNRVIpIDw8IDE0KTsKPiArIMKgIMKgdWludDMyX3QgcGlsID0gZW52LT5w aWxfaW4gfCAoZW52LT5zb2Z0aW50ICYgfihTT0ZUSU5UX1RNIHwgU09GVElOVF9TTSkpOwo+ICsK PiArIMKgIMKgLyogY2hlY2sgaWYgVE0gb3IgU00gaW4gU09GVElOVCBhcmUgc2V0Cj4gKyDCoCDC oCDCoCBzZXR0aW5nIHRoZXNlIGFsc28gY2F1c2VzIGludGVycnVwdCAxNCAqLwo+ICsgwqAgwqBp ZiAoZW52LT5zb2Z0aW50ICYgKFNPRlRJTlRfVE0gfCBTT0ZUSU5UX1NNKSkKPiArIMKgIMKgIMKg IMKgcGlsIHw9IDEgPDwgMTQ7Cj4gKwo+ICsgwqAgwqBpZiAoIXBpbCkgewo+ICsgwqAgwqAgwqAg wqBpZiAoZW52LT5pbnRlcnJ1cHRfcmVxdWVzdCAmIENQVV9JTlRFUlJVUFRfSEFSRCkgewo+ICsg wqAgwqAgwqAgwqAgwqAgwqBDUFVJUlFfRFBSSU5URigiUmVzZXQgQ1BVIElSUSAoY3VycmVudCBp bnRlcnJ1cHQgJVgpXG4iLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgZW52LT5pbnRlcnJ1cHRfaW5kZXgpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqBlbnYtPmludGVy cnVwdF9pbmRleCA9IDA7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoGNwdV9yZXNldF9pbnRlcnJ1cHQo ZW52LCBDUFVfSU5URVJSVVBUX0hBUkQpOwoKQWxsIG90aGVyIGFyY2hpdGVjdHVyZXMgaGF2ZSB0 aGlzIGNvZGUgaW4gY3B1LWV4ZWMuYywgd2h5IG1vdmU/CgpVcHBlcmNhc2UgaGV4LgoKPiArIMKg IMKgIMKgIMKgfQo+ICsgwqAgwqAgwqAgwqByZXR1cm47Cj4gKyDCoCDCoH0KPiArCj4gKyDCoCDC oGlmIChjcHVfaW50ZXJydXB0c19lbmFibGVkKGVudikpIHsKPgo+IC0gwqAgwqBpZiAocGlsICYm IChlbnYtPmludGVycnVwdF9pbmRleCA9PSAwIHx8Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oChlbnYtPmludGVycnVwdF9pbmRleCAmIH4xNSkgPT0gVFRfRVhUSU5UKSkgewo+IMKgIMKgIMKg IMKgIHVuc2lnbmVkIGludCBpOwo+Cj4gLSDCoCDCoCDCoCDCoGZvciAoaSA9IDE1OyBpID4gMDsg aS0tKSB7Cj4gKyDCoCDCoCDCoCDCoGZvciAoaSA9IDE1OyBpID4gZW52LT5wc3JwaWw7IGktLSkg ewo+IMKgIMKgIMKgIMKgIMKgIMKgIGlmIChwaWwgJiAoMSA8PCBpKSkgewo+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIGludCBvbGRfaW50ZXJydXB0ID0gZW52LT5pbnRlcnJ1cHRfaW5kZXg7Cj4g LQo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBlbnYtPmludGVycnVwdF9pbmRleCA9IFRUX0VY VElOVCB8IGk7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmIChvbGRfaW50ZXJydXB0ICE9 IGVudi0+aW50ZXJydXB0X2luZGV4KSB7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oENQVUlSUV9EUFJJTlRGKCJTZXQgQ1BVIElSUSAlZFxuIiwgaSk7Cj4gLSDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoGNwdV9pbnRlcnJ1cHQoZW52LCBDUFVfSU5URVJSVVBUX0hBUkQpOwo+ IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlu dCBuZXdfaW50ZXJydXB0ID0gVFRfRVhUSU5UIHwgaTsKPiArCj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoGlmIChlbnYtPnRsID4gMCAmJiBjcHVfdHNwdHIoZW52KS0+dHQgPiBuZXdf aW50ZXJydXB0KSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoENQVUlS UV9EUFJJTlRGKCJOb3Qgc2V0dGluZyBDUFUgSVJROiBUTD0lZCAiCj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCJjdXJyZW50ICVYID49IHBlbmRpbmcg JVhcbiIsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oGVudi0+dGwsIGNwdV90c3B0cihlbnYpLT50dCwgbmV3X2ludGVycnVwdCk7Cj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg ZWxzZSBpZiAob2xkX2ludGVycnVwdCAhPSBuZXdfaW50ZXJydXB0KSB7CgonZWxzZSBpZicgZXRj LiBzaG91bGQgYmUgb24gdGhlIHNhbWUgbGluZSBhcyAnfScuCgo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqBlbnYtPmludGVycnVwdF9pbmRleCA9IG5ld19pbnRlcnJ1cHQ7 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoENQVUlSUV9EUFJJTlRGKCJT ZXQgQ1BVIElSUSAlZCBvbGQ9JVggbmV3PSVYXG4iLCBpLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBvbGRfaW50ZXJydXB0LCBuZXdfaW50ZXJydXB0 KTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY3B1X2ludGVycnVwdChl bnYsIENQVV9JTlRFUlJVUFRfSEFSRCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oH0KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmVhazsKPiDCoCDCoCDCoCDCoCDCoCDCoCB9 Cj4gwqAgwqAgwqAgwqAgfQo+IC0gwqAgwqB9IGVsc2UgaWYgKCFwaWwgJiYgKGVudi0+aW50ZXJy dXB0X2luZGV4ICYgfjE1KSA9PSBUVF9FWFRJTlQpIHsKPiAtIMKgIMKgIMKgIMKgQ1BVSVJRX0RQ UklOVEYoIlJlc2V0IENQVSBJUlEgJWRcbiIsIGVudi0+aW50ZXJydXB0X2luZGV4ICYgMTUpOwo+ IC0gwqAgwqAgwqAgwqBlbnYtPmludGVycnVwdF9pbmRleCA9IDA7Cj4gLSDCoCDCoCDCoCDCoGNw dV9yZXNldF9pbnRlcnJ1cHQoZW52LCBDUFVfSU5URVJSVVBUX0hBUkQpOwo+ICsgwqAgwqB9Cj4g KyDCoCDCoGVsc2Ugewo+ICsgwqAgwqAgwqAgwqBDUFVJUlFfRFBSSU5URigiSW50ZXJydXB0cyBk aXNhYmxlZCwgcGlsPSUwOFggcGlsX2luPSUwOFggc29mdGludD0lMDhYICIKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgImN1cnJlbnQgaW50ZXJydXB0ICVYXG4iLAo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqBwaWwsIGVudi0+cGlsX2luLCBlbnYtPnNvZnRpbnQsIGVudi0+aW50ZXJydXB0 X2luZGV4KTsKPiDCoCDCoCB9Cj4gwqB9CgpPdmVyYWxsLCBpdCBsb29rcyBsaWtlIHRoZXJlIGFy ZSBzb21lIHVubmVjZXNzYXJ5IGNoYW5nZXMgc28gdGhhdCBpdCdzCmhhcmQgdG8gc2VlIHdoYXQg aXMgdGhlIGZpeC4K