From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1I7rxS-0001Hw-Lq for qemu-devel@nongnu.org; Mon, 09 Jul 2007 08:03:14 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1I7rxP-0001Eu-Hq for qemu-devel@nongnu.org; Mon, 09 Jul 2007 08:03:12 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1I7rxP-0001El-9C for qemu-devel@nongnu.org; Mon, 09 Jul 2007 08:03:11 -0400 Received: from grayson.netsweng.com ([207.235.77.11]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1I7rxN-0002j6-KA for qemu-devel@nongnu.org; Mon, 09 Jul 2007 08:03:10 -0400 Received: from amavis by grayson.netsweng.com with scanned-ok (Exim 3.36 #1 (Debian)) id 1I7rxN-0006io-00 for ; Mon, 09 Jul 2007 08:03:09 -0400 Received: from grayson.netsweng.com ([127.0.0.1]) by localhost (grayson.netsweng.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id PWTZe0LcY2t7 for ; Mon, 9 Jul 2007 08:02:55 -0400 (EDT) Received: from h231.94.213.151.ip.alltel.net ([151.213.94.231] helo=trantor.stuart.netsweng.com) by grayson.netsweng.com with esmtp (Exim 3.36 #1 (Debian)) id 1I7rx8-0006iY-00 for ; Mon, 09 Jul 2007 08:02:54 -0400 Date: Mon, 9 Jul 2007 08:02:31 -0400 (EDT) From: Stuart Anderson Subject: Re: [Qemu-devel] [PATCH] linux-user EFAULT implementation In-Reply-To: Message-ID: References: <468E68F7.8070005@bellard.org> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1463811327-977943439-1183982551=:12799" Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---1463811327-977943439-1183982551=:12799 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed On Mon, 9 Jul 2007, Stuart Anderson wrote: > Attached is a diff ... Here's the diff. Stuart Stuart R. Anderson anderson@netsweng.com Network & Software Engineering http://www.netsweng.com/ 1024D/37A79149: 0791 D3B8 9A4C 2CDC A31F BD03 0A62 E534 37A7 9149 ---1463811327-977943439-1183982551=:12799 Content-Type: TEXT/x-diff; charset=US-ASCII; name=stu.diff Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: sockaddr diff Content-Disposition: attachment; filename=stu.diff KioqIGxpbnV4LXVzZXIvc3lzY2FsbC5jCTIwMDctMDctMDkgMDc6MzM6NDYu MDAwMDAwMDAwIC0wNDAwDQotLS0gbGludXgtdXNlci9zeXNjYWxsLmMuc3R1 CTIwMDctMDctMDkgMDc6MDE6MTIuMDAwMDAwMDAwIC0wNDAwDQoqKioqKioq KioqKioqKioNCioqKiA1MjIsNTUwICoqKioNCiAgICAgIHJldHVybiByZXQ7 DQogIH0NCiAgDQohIHN0YXRpYyBpbmxpbmUgbG9uZyBjb3B5X2Zyb21fdXNl cl9zb2NrYWRkcihzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsDQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxv bmcgdGFyZ2V0X2FkZHIsDQohICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgbGVuKQ0KICB7DQogICAgICBs b25nIHJldCA9IDA7DQohICAgICBzdHJ1Y3QgdGFyZ2V0X3NvY2thZGRyICp0 YXJnZXRfc2FkZHIgPSAoc3RydWN0IHRhcmdldF9zb2NrYWRkciAqKXRhcmdl dF9hZGRyOw0KICANCiEgICAgIGlmKCAocmV0PWFjY2Vzc19vayhWRVJJRllf UkVBRCx0YXJnZXRfc2FkZHIsbGVuKSkgIT0gMCApIHJldHVybiByZXQ7DQog ICAgICBtZW1jcHkoYWRkciwgdGFyZ2V0X3NhZGRyLCBsZW4pOw0KICAgICAg YWRkci0+c2FfZmFtaWx5ID0gdHN3YXAxNih0YXJnZXRfc2FkZHItPnNhX2Zh bWlseSk7DQogICAgICByZXR1cm4gcmV0Ow0KICB9DQogIA0KISBzdGF0aWMg aW5saW5lIGxvbmcgY29weV90b191c2VyX3NvY2thZGRyKHRhcmdldF91bG9u ZyB0YXJnZXRfYWRkciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciAqYWRkciwNCiEgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2ts ZW5fdCBsZW4pDQogIHsNCiAgICAgIGxvbmcgcmV0ID0gMDsNCiEgICAgIHN0 cnVjdCB0YXJnZXRfc29ja2FkZHIgKnRhcmdldF9zYWRkciA9IChzdHJ1Y3Qg dGFyZ2V0X3NvY2thZGRyICopdGFyZ2V0X2FkZHI7DQogIA0KISAgICAgaWYo IChyZXQ9YWNjZXNzX29rKFZFUklGWV9XUklURSx0YXJnZXRfc2FkZHIsbGVu KSkgIT0gMCApIHJldHVybiByZXQ7DQogICAgICBtZW1jcHkodGFyZ2V0X3Nh ZGRyLCBhZGRyLCBsZW4pOw0KICAgICAgdGFyZ2V0X3NhZGRyLT5zYV9mYW1p bHkgPSB0c3dhcDE2KGFkZHItPnNhX2ZhbWlseSk7DQogICAgICByZXR1cm4g cmV0Ow0KICB9DQogIA0KLS0tIDUyMiw1NTQgLS0tLQ0KICAgICAgcmV0dXJu IHJldDsNCiAgfQ0KICANCiEgc3RhdGljIGlubGluZSBsb25nIHRhcmdldF90 b19ob3N0X3NvY2thZGRyKHN0cnVjdCBzb2NrYWRkciAqYWRkciwNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdl dF91bG9uZyB0YXJnZXRfYWRkciwNCiEgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNvY2tsZW5fdCBsZW4sDQohICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGdf YWNjZXNzKQ0KICB7DQogICAgICBsb25nIHJldCA9IDA7DQohICAgICBzdHJ1 Y3QgdGFyZ2V0X3NvY2thZGRyICp0YXJnZXRfc2FkZHI7DQogIA0KISAgICAg aWYoIChyZXQ9bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF9z YWRkcix0YXJnZXRfYWRkcixsZW4sMSxwZ19hY2Nlc3MpKSAhPSAwICkgcmV0 dXJuIHJldDsNCiAgICAgIG1lbWNweShhZGRyLCB0YXJnZXRfc2FkZHIsIGxl bik7DQogICAgICBhZGRyLT5zYV9mYW1pbHkgPSB0c3dhcDE2KHRhcmdldF9z YWRkci0+c2FfZmFtaWx5KTsNCisgICAgIHVubG9ja191c2VyKHRhcmdldF9z YWRkciwgdGFyZ2V0X2FkZHIsIDApOw0KICAgICAgcmV0dXJuIHJldDsNCiAg fQ0KICANCiEgc3RhdGljIGlubGluZSBsb25nIGhvc3RfdG9fdGFyZ2V0X3Nv Y2thZGRyKHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2Nr YWRkciAqYWRkciwNCiEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNvY2tsZW5fdCBsZW4sDQohICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGdfYWNjZXNzKQ0K ICB7DQogICAgICBsb25nIHJldCA9IDA7DQohICAgICBzdHJ1Y3QgdGFyZ2V0 X3NvY2thZGRyICp0YXJnZXRfc2FkZHI7DQogIA0KISAgICAgaWYoIChyZXQ9 bG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF9zYWRkcix0YXJn ZXRfYWRkcixsZW4sMSxwZ19hY2Nlc3MpKSAhPSAwICkgcmV0dXJuIHJldDsN CiAgICAgIG1lbWNweSh0YXJnZXRfc2FkZHIsIGFkZHIsIGxlbik7DQogICAg ICB0YXJnZXRfc2FkZHItPnNhX2ZhbWlseSA9IHRzd2FwMTYoYWRkci0+c2Ff ZmFtaWx5KTsNCisgICAgIHVubG9ja191c2VyKHRhcmdldF9zYWRkciwgdGFy Z2V0X2FkZHIsIGxlbik7DQogICAgICByZXR1cm4gcmV0Ow0KICB9DQogIA0K KioqKioqKioqKioqKioqDQoqKiogOTA5LDkxNSAqKioqDQogICAgICBsb25n IHJldCA9IDA7DQogICAgICB2b2lkICphZGRyID0gYWxsb2NhKGFkZHJsZW4p Ow0KICAgICAgDQohICAgICBpZiggKHJldD1jb3B5X2Zyb21fdXNlcl9zb2Nr YWRkcihhZGRyLCB0YXJnZXRfYWRkciwgYWRkcmxlbikpICE9IDAgKSByZXR1 cm4gcmV0Ow0KICAgICAgcmV0dXJuIGdldF9lcnJubyhiaW5kKHNvY2tmZCwg YWRkciwgYWRkcmxlbikpOw0KICB9DQogIA0KLS0tIDkxMyw5MTkgLS0tLQ0K ICAgICAgbG9uZyByZXQgPSAwOw0KICAgICAgdm9pZCAqYWRkciA9IGFsbG9j YShhZGRybGVuKTsNCiAgICAgIA0KISAgICAgaWYoIChyZXQ9dGFyZ2V0X3Rv X2hvc3Rfc29ja2FkZHIoYWRkciwgdGFyZ2V0X2FkZHIsIGFkZHJsZW4sUEFH RV9SRUFEKSkgIT0gMCApIHJldHVybiByZXQ7DQogICAgICByZXR1cm4gZ2V0 X2Vycm5vKGJpbmQoc29ja2ZkLCBhZGRyLCBhZGRybGVuKSk7DQogIH0NCiAg DQoqKioqKioqKioqKioqKioNCioqKiA5MTksOTI1ICoqKioNCiAgICAgIGxv bmcgcmV0ID0gMDsNCiAgICAgIHZvaWQgKmFkZHIgPSBhbGxvY2EoYWRkcmxl bik7DQogICAgICANCiEgICAgIGlmKCAocmV0PWNvcHlfZnJvbV91c2VyX3Nv Y2thZGRyKGFkZHIsIHRhcmdldF9hZGRyLCBhZGRybGVuKSkgIT0gMCApIHJl dHVybiByZXQ7DQogICAgICByZXR1cm4gZ2V0X2Vycm5vKGNvbm5lY3Qoc29j a2ZkLCBhZGRyLCBhZGRybGVuKSk7DQogIH0NCiAgDQotLS0gOTIzLDkyOSAt LS0tDQogICAgICBsb25nIHJldCA9IDA7DQogICAgICB2b2lkICphZGRyID0g YWxsb2NhKGFkZHJsZW4pOw0KICAgICAgDQohICAgICBpZiggKHJldD10YXJn ZXRfdG9faG9zdF9zb2NrYWRkcihhZGRyLCB0YXJnZXRfYWRkciwgYWRkcmxl bixQQUdFX1JFQUQpKSAhPSAwICkgcmV0dXJuIHJldDsNCiAgICAgIHJldHVy biBnZXRfZXJybm8oY29ubmVjdChzb2NrZmQsIGFkZHIsIGFkZHJsZW4pKTsN CiAgfQ0KICANCioqKioqKioqKioqKioqKg0KKioqIDk0NCw5NTYgKioqKg0K ICAgICAgICAgIG1zZy5tc2dfbmFtZWxlbiA9IHRzd2FwMzIobXNncC0+bXNn X25hbWVsZW4pOw0KICAgICAgICAgIG1zZy5tc2dfbmFtZSA9IGFsbG9jYSht c2cubXNnX25hbWVsZW4pOw0KICAgICAgICAgIGlmKCBzZW5kICkgew0KISAg ICAgICAgICAgaWYoIChyZXQ9Y29weV9mcm9tX3VzZXJfc29ja2FkZHIobXNn Lm1zZ19uYW1lLCB0c3dhcGwobXNncC0+bXNnX25hbWUpLA0KISAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy5tc2dfbmFtZWxlbikpICE9 IDAgKSByZXR1cm4gcmV0Ow0KICAgICAgICAgIH0gZWxzZSB7DQohIAkgIC8q IEZJWE1FDQohICAgICAgICAgICBpZiggKHJldD1jb3B5X2Zyb21fdXNlcl9z b2NrYWRkcihtc2cubXNnX25hbWUsIHRzd2FwbChtc2dwLT5tc2dfbmFtZSks DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnLm1zZ19u YW1lbGVuLFBBR0VfV1JJVEUpKSAhPSAwICkgcmV0dXJuIHJldDsNCi0gCQkJ CSovDQogIAl9DQogICAgICB9IGVsc2Ugew0KICAgICAgICAgIG1zZy5tc2df bmFtZSA9IE5VTEw7DQotLS0gOTQ4LDk1OCAtLS0tDQogICAgICAgICAgbXNn Lm1zZ19uYW1lbGVuID0gdHN3YXAzMihtc2dwLT5tc2dfbmFtZWxlbik7DQog ICAgICAgICAgbXNnLm1zZ19uYW1lID0gYWxsb2NhKG1zZy5tc2dfbmFtZWxl bik7DQogICAgICAgICAgaWYoIHNlbmQgKSB7DQohICAgICAgICAgICBpZigg KHJldD10YXJnZXRfdG9faG9zdF9zb2NrYWRkcihtc2cubXNnX25hbWUsIHRz d2FwbChtc2dwLT5tc2dfbmFtZSksDQohICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbXNnLm1zZ19uYW1lbGVuLFBBR0VfUkVBRCkpICE9IDAg KSByZXR1cm4gcmV0Ow0KICAgICAgICAgIH0gZWxzZSB7DQohICAgICAgICAg ICBpZiggKHJldD10YXJnZXRfdG9faG9zdF9zb2NrYWRkcihtc2cubXNnX25h bWUsIHRzd2FwbChtc2dwLT5tc2dfbmFtZSksDQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbXNnLm1zZ19uYW1lbGVuLFBBR0VfV1JJVEUp KSAhPSAwICkgcmV0dXJuIHJldDsNCiAgCX0NCiAgICAgIH0gZWxzZSB7DQog ICAgICAgICAgbXNnLm1zZ19uYW1lID0gTlVMTDsNCioqKioqKioqKioqKioq Kg0KKioqIDk5MSw5OTcgKioqKg0KICANCiAgICAgIHJldCA9IGdldF9lcnJu byhhY2NlcHQoZmQsIGFkZHIsICZhZGRybGVuKSk7DQogICAgICBpZiAoIWlz X2Vycm9yKHJldCkpIHsNCiEgICAgICAgICBpZiggKHJldDI9Y29weV90b191 c2VyX3NvY2thZGRyKHRhcmdldF9hZGRyLCBhZGRyLCBhZGRybGVuKSkgIT0g MCApIHJldHVybiByZXQyOw0KICAgICAgICAgIHRwdXQzMih0YXJnZXRfYWRk cmxlbiwgYWRkcmxlbik7DQogICAgICB9DQogICAgICByZXR1cm4gcmV0Ow0K LS0tIDk5Myw5OTkgLS0tLQ0KICANCiAgICAgIHJldCA9IGdldF9lcnJubyhh Y2NlcHQoZmQsIGFkZHIsICZhZGRybGVuKSk7DQogICAgICBpZiAoIWlzX2Vy cm9yKHJldCkpIHsNCiEgICAgICAgICBpZiggKHJldDI9aG9zdF90b190YXJn ZXRfc29ja2FkZHIodGFyZ2V0X2FkZHIsIGFkZHIsIGFkZHJsZW4sIFBBR0Vf V1JJVEUpKSAhPSAwICkgcmV0dXJuIHJldDI7DQogICAgICAgICAgdHB1dDMy KHRhcmdldF9hZGRybGVuLCBhZGRybGVuKTsNCiAgICAgIH0NCiAgICAgIHJl dHVybiByZXQ7DQoqKioqKioqKioqKioqKioNCioqKiAxMDEwLDEwMTYgKioq Kg0KICANCiAgICAgIHJldCA9IGdldF9lcnJubyhnZXRwZWVybmFtZShmZCwg YWRkciwgJmFkZHJsZW4pKTsNCiAgICAgIGlmICghaXNfZXJyb3IocmV0KSkg ew0KISAgICAgICAgIGlmKCAocmV0Mj1jb3B5X3RvX3VzZXJfc29ja2FkZHIo dGFyZ2V0X2FkZHIsIGFkZHIsIGFkZHJsZW4pKSAhPSAwICkgcmV0dXJuIHJl dDI7DQogICAgICAgICAgaWYoIChyZXQyPXBhZ2VfY2hlY2tfcmFuZ2UodGFy Z2V0X2FkZHJsZW4sc2l6ZW9mKHNvY2tsZW5fdCksUEFHRV9XUklURSkpICE9 IDAgKSByZXR1cm4gcmV0MjsNCiAgICAgICAgICB0cHV0MzIodGFyZ2V0X2Fk ZHJsZW4sIGFkZHJsZW4pOw0KICAgICAgfQ0KLS0tIDEwMTIsMTAxOCAtLS0t DQogIA0KICAgICAgcmV0ID0gZ2V0X2Vycm5vKGdldHBlZXJuYW1lKGZkLCBh ZGRyLCAmYWRkcmxlbikpOw0KICAgICAgaWYgKCFpc19lcnJvcihyZXQpKSB7 DQohICAgICAgICAgaWYoIChyZXQyPWhvc3RfdG9fdGFyZ2V0X3NvY2thZGRy KHRhcmdldF9hZGRyLCBhZGRyLCBhZGRybGVuLCBQQUdFX1dSSVRFKSkgIT0g MCApIHJldHVybiByZXQyOw0KICAgICAgICAgIGlmKCAocmV0Mj1wYWdlX2No ZWNrX3JhbmdlKHRhcmdldF9hZGRybGVuLHNpemVvZihzb2NrbGVuX3QpLFBB R0VfV1JJVEUpKSAhPSAwICkgcmV0dXJuIHJldDI7DQogICAgICAgICAgdHB1 dDMyKHRhcmdldF9hZGRybGVuLCBhZGRybGVuKTsNCiAgICAgIH0NCioqKioq KioqKioqKioqKg0KKioqIDEwMzAsMTAzNiAqKioqDQogIA0KICAgICAgcmV0 ID0gZ2V0X2Vycm5vKGdldHNvY2tuYW1lKGZkLCBhZGRyLCAmYWRkcmxlbikp Ow0KICAgICAgaWYgKCFpc19lcnJvcihyZXQpKSB7DQohICAgICAgICAgaWYo IChyZXQyPWNvcHlfdG9fdXNlcl9zb2NrYWRkcih0YXJnZXRfYWRkciwgYWRk ciwgYWRkcmxlbikpICkgcmV0dXJuIHJldDI7DQogICAgICAgICAgdHB1dDMy KHRhcmdldF9hZGRybGVuLCBhZGRybGVuKTsNCiAgICAgIH0NCiAgICAgIHJl dHVybiByZXQ7DQotLS0gMTAzMiwxMDM4IC0tLS0NCiAgDQogICAgICByZXQg PSBnZXRfZXJybm8oZ2V0c29ja25hbWUoZmQsIGFkZHIsICZhZGRybGVuKSk7 DQogICAgICBpZiAoIWlzX2Vycm9yKHJldCkpIHsNCiEgICAgICAgICBpZigg KHJldDI9aG9zdF90b190YXJnZXRfc29ja2FkZHIodGFyZ2V0X2FkZHIsIGFk ZHIsIGFkZHJsZW4sIFBBR0VfV1JJVEUpKSApIHJldHVybiByZXQyOw0KICAg ICAgICAgIHRwdXQzMih0YXJnZXRfYWRkcmxlbiwgYWRkcmxlbik7DQogICAg ICB9DQogICAgICByZXR1cm4gcmV0Ow0KKioqKioqKioqKioqKioqDQoqKiog MTA2MCwxMDY2ICoqKioNCiAgICAgIGlmKCAocmV0PWxvY2tfYW5kX2NoZWNr X3VzZXJfc3RydWN0KCZob3N0X21zZyxtc2csbGVuLDEsUEFHRV9SRUFEKSkg IT0gMCApIHJldHVybiByZXQ7DQogICAgICBpZiAodGFyZ2V0X2FkZHIpIHsN CiAgICAgICAgICBhZGRyID0gYWxsb2NhKGFkZHJsZW4pOw0KISAgICAgICAg IGlmKCAocmV0PWNvcHlfZnJvbV91c2VyX3NvY2thZGRyKGFkZHIsIHRhcmdl dF9hZGRyLCBhZGRybGVuKSkgIT0gMCApIHJldHVybiByZXQ7DQogICAgICAg ICAgcmV0ID0gZ2V0X2Vycm5vKHNlbmR0byhmZCwgaG9zdF9tc2csIGxlbiwg ZmxhZ3MsIGFkZHIsIGFkZHJsZW4pKTsNCiAgICAgIH0gZWxzZSB7DQogICAg ICAgICAgcmV0ID0gZ2V0X2Vycm5vKHNlbmQoZmQsIGhvc3RfbXNnLCBsZW4s IGZsYWdzKSk7DQotLS0gMTA2MiwxMDY4IC0tLS0NCiAgICAgIGlmKCAocmV0 PWxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZob3N0X21zZyxtc2csbGVu LDEsUEFHRV9SRUFEKSkgIT0gMCApIHJldHVybiByZXQ7DQogICAgICBpZiAo dGFyZ2V0X2FkZHIpIHsNCiAgICAgICAgICBhZGRyID0gYWxsb2NhKGFkZHJs ZW4pOw0KISAgICAgICAgIGlmKCAocmV0PXRhcmdldF90b19ob3N0X3NvY2th ZGRyKGFkZHIsIHRhcmdldF9hZGRyLCBhZGRybGVuLCBQQUdFX1JFQUQpKSAh PSAwICkgcmV0dXJuIHJldDsNCiAgICAgICAgICByZXQgPSBnZXRfZXJybm8o c2VuZHRvKGZkLCBob3N0X21zZywgbGVuLCBmbGFncywgYWRkciwgYWRkcmxl bikpOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgICByZXQgPSBnZXRfZXJy bm8oc2VuZChmZCwgaG9zdF9tc2csIGxlbiwgZmxhZ3MpKTsNCioqKioqKioq KioqKioqKg0KKioqIDEwODgsMTA5NCAqKioqDQogICAgICB9DQogICAgICBp ZiAoIWlzX2Vycm9yKHJldCkpIHsNCiAgICAgICAgICBpZiAodGFyZ2V0X2Fk ZHIpIHsNCiEgICAgICAgICAgICAgaWYoIChyZXQyPWNvcHlfdG9fdXNlcl9z b2NrYWRkcih0YXJnZXRfYWRkciwgYWRkciwgYWRkcmxlbikpICE9IDAgKSBy ZXR1cm4gcmV0MjsNCiAgICAgICAgICAgICAgdHB1dDMyKHRhcmdldF9hZGRy bGVuLCBhZGRybGVuKTsNCiAgICAgICAgICB9DQogICAgICAgICAgdW5sb2Nr X3VzZXIoaG9zdF9tc2csIG1zZywgbGVuKTsNCi0tLSAxMDkwLDEwOTYgLS0t LQ0KICAgICAgfQ0KICAgICAgaWYgKCFpc19lcnJvcihyZXQpKSB7DQogICAg ICAgICAgaWYgKHRhcmdldF9hZGRyKSB7DQohICAgICAgICAgICAgIGlmKCAo cmV0Mj1ob3N0X3RvX3RhcmdldF9zb2NrYWRkcih0YXJnZXRfYWRkciwgYWRk ciwgYWRkcmxlbiwgUEFHRV9XUklURSkpICE9IDAgKSByZXR1cm4gcmV0MjsN CiAgICAgICAgICAgICAgdHB1dDMyKHRhcmdldF9hZGRybGVuLCBhZGRybGVu KTsNCiAgICAgICAgICB9DQogICAgICAgICAgdW5sb2NrX3VzZXIoaG9zdF9t c2csIG1zZywgbGVuKTsNCg== ---1463811327-977943439-1183982551=:12799--