From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dmitry Antipov Newsgroups: gmane.emacs.devel Subject: Make buffer- and frame-locals a misc object Date: Wed, 15 Aug 2012 14:50:35 +0400 Message-ID: <502B7EFB.7030300@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------040400040800080602030008" X-Trace: dough.gmane.org 1345027699 6535 80.91.229.3 (15 Aug 2012 10:48:19 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 15 Aug 2012 10:48:19 +0000 (UTC) Cc: Stefan Monnier To: Emacs development discussions Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Aug 15 12:48:18 2012 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1T1b95-0003OZ-C2 for ged-emacs-devel@m.gmane.org; Wed, 15 Aug 2012 12:48:15 +0200 Original-Received: from localhost ([::1]:37540 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T1b94-00026D-FK for ged-emacs-devel@m.gmane.org; Wed, 15 Aug 2012 06:48:14 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:40364) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T1b90-00024G-25 for emacs-devel@gnu.org; Wed, 15 Aug 2012 06:48:12 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T1b8x-0003ic-R5 for emacs-devel@gnu.org; Wed, 15 Aug 2012 06:48:09 -0400 Original-Received: from forward1h.mail.yandex.net ([84.201.187.146]:54490) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T1b8x-0003iQ-56 for emacs-devel@gnu.org; Wed, 15 Aug 2012 06:48:07 -0400 Original-Received: from smtp4h.mail.yandex.net (smtp4h.mail.yandex.net [84.201.186.21]) by forward1h.mail.yandex.net (Yandex) with ESMTP id 331369E3458; Wed, 15 Aug 2012 14:48:05 +0400 (MSK) Original-Received: from smtp4h.mail.yandex.net (localhost [127.0.0.1]) by smtp4h.mail.yandex.net (Yandex) with ESMTP id F08452C014C; Wed, 15 Aug 2012 14:48:04 +0400 (MSK) Original-Received: from unknown (unknown [37.139.84.55]) by smtp4h.mail.yandex.net (nwsmtp/Yandex) with ESMTP id m3AORc2E-m4ACjrK5; Wed, 15 Aug 2012 14:48:04 +0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1345027684; bh=MJKmMAoyFpKxkw6GcyagB1AJ85Ev71EcxGPyEz7B7bk=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject: Content-Type; b=fGODrBhuMbVR7UuJnMAhawr7dryPbZx+38nazInZuOXMFTJTLZuz7w9UqbtPRavhe iMbbBoyp5Tb8GORylKKE59xBPXuAaUV7jGmcxtbPvFNeOg7YqwV7SXLhZHrqi+4lIo r3KbYDQCj6WXoCc08WK5eZrRW/2q/OBjuRGJSCV8= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120713 Thunderbird/14.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 84.201.187.146 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:152545 Archived-At: This is a multi-part message in MIME format. --------------040400040800080602030008 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This patch converts Lisp_Buffer_Local_Value to misc object (for the sake of GC-aware management) and provides simple inline access functions (for the sake of further GC development). Dmitry --------------040400040800080602030008 Content-Type: text/plain; charset=UTF-8; name="blv2.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="blv2.patch" PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9hbGxvYy5jJwotLS0gc3JjL2FsbG9jLmMJMjAxMi0w OC0xNCAyMTozODowNiArMDAwMAorKysgc3JjL2FsbG9jLmMJMjAxMi0wOC0xNSAxMDo0NToz MyArMDAwMApAQCAtMzY5Nyw3ICszNjk3LDIxIEBACiAgIGZyZWVfbWlzYyAobWFya2VyKTsK IH0KIAotDAorLyogUmV0dXJuIHBhcnRpYWxseSBpbml0aWFsaXplZCBidWZmZXItIG9yIGZy YW1lLWxvY2FsIHZhbHVlLiAgKi8KKworc3RydWN0IExpc3BfQnVmZmVyX0xvY2FsX1ZhbHVl ICoKK21ha2VfYnVmZmVyX2xvY2FsX3ZhbHVlICh2b2lkKQoreworICBzdHJ1Y3QgTGlzcF9C dWZmZXJfTG9jYWxfVmFsdWUgKmJsdjsKKworICBibHYgPSBYQkxWIChhbGxvY2F0ZV9taXNj IChMaXNwX01pc2NfQnVmZmVyX0xvY2FsX1ZhbHVlKSk7CisgIGJsdi0+ZnJhbWVfbG9jYWwg PSAwOworICBibHYtPmxvY2FsX2lmX3NldCA9IDA7CisgIHNldF9ibHZfd2hlcmUgKGJsdiwg UW5pbCk7CisgIHNldF9ibHZfZm91bmQgKGJsdiwgMCk7CisgIHJldHVybiBibHY7Cit9CisK IC8qIFJldHVybiBhIG5ld2x5IGNyZWF0ZWQgdmVjdG9yIG9yIHN0cmluZyB3aXRoIHNwZWNp ZmllZCBhcmd1bWVudHMgYXMKICAgIGVsZW1lbnRzLiAgSWYgYWxsIHRoZSBhcmd1bWVudHMg YXJlIGNoYXJhY3RlcnMgdGhhdCBjYW4gZml0CiAgICBpbiBhIHN0cmluZyBvZiBldmVudHMs IG1ha2UgYSBzdHJpbmc7IG90aGVyd2lzZSwgbWFrZSBhIHZlY3Rvci4KQEAgLTYwNzAsMTQg KzYwODQsMTMgQEAKIAkgICAgfQogCSAgY2FzZSBTWU1CT0xfTE9DQUxJWkVEOgogCSAgICB7 Ci0JICAgICAgc3RydWN0IExpc3BfQnVmZmVyX0xvY2FsX1ZhbHVlICpibHYgPSBTWU1CT0xf QkxWIChwdHIpOworCSAgICAgIExpc3BfT2JqZWN0IHRlbTsKKwkgICAgICBYU0VUTUlTQyAo dGVtLCBTWU1CT0xfQkxWIChwdHIpKTsKIAkgICAgICAvKiBJZiB0aGUgdmFsdWUgaXMgZm9y d2FyZGVkIHRvIGEgYnVmZmVyIG9yIGtleWJvYXJkIGZpZWxkLAogCQkgdGhlc2UgYXJlIG1h cmtlZCB3aGVuIHdlIHNlZSB0aGUgY29ycmVzcG9uZGluZyBvYmplY3QuCiAJCSBBbmQgaWYg aXQncyBmb3J3YXJkZWQgdG8gYSBDIHZhcmlhYmxlLCBlaXRoZXIgaXQncyBub3QKIAkJIGEg TGlzcF9PYmplY3QgdmFyLCBvciBpdCdzIHN0YXRpY3BybydkIGFscmVhZHkuICAqLwotCSAg ICAgIG1hcmtfb2JqZWN0IChibHYtPndoZXJlKTsKLQkgICAgICBtYXJrX29iamVjdCAoYmx2 LT52YWxjZWxsKTsKLQkgICAgICBtYXJrX29iamVjdCAoYmx2LT5kZWZjZWxsKTsKKwkgICAg ICBtYXJrX29iamVjdCAodGVtKTsKIAkgICAgICBicmVhazsKIAkgICAgfQogCSAgY2FzZSBT WU1CT0xfRk9SV0FSREVEOgpAQCAtNjEzOSw2ICs2MTUyLDEzIEBACiAJICBtYXJrX292ZXJs YXkgKFhPVkVSTEFZIChvYmopKTsKIAkgIGJyZWFrOwogCisJY2FzZSBMaXNwX01pc2NfQnVm ZmVyX0xvY2FsX1ZhbHVlOgorCSAgWE1JU0NBTlkgKG9iaiktPmdjbWFya2JpdCA9IDE7CisJ ICBtYXJrX29iamVjdCAoWEJMViAob2JqKS0+d2hlcmUpOworCSAgbWFya19vYmplY3QgKFhC TFYgKG9iaiktPmRlZmNlbGwpOworCSAgbWFya19vYmplY3QgKFhCTFYgKG9iaiktPnZhbGNl bGwpOworCSAgYnJlYWs7CisKIAlkZWZhdWx0OgogCSAgYWJvcnQgKCk7CiAJfQpAQCAtNjQ2 MCw4ICs2NDgwLDYgQEAKIAogCSAgICBpZiAoIXN5bS0+cy5nY21hcmtiaXQgJiYgIXB1cmVf cCkKIAkgICAgICB7Ci0JCWlmIChzeW0tPnMucmVkaXJlY3QgPT0gU1lNQk9MX0xPQ0FMSVpF RCkKLQkJICB4ZnJlZSAoU1lNQk9MX0JMViAoJnN5bS0+cykpOwogCQlzeW0tPnMubmV4dCA9 IHN5bWJvbF9mcmVlX2xpc3Q7CiAJCXN5bWJvbF9mcmVlX2xpc3QgPSAmc3ltLT5zOwogI2lm IEdDX01BUktfU1RBQ0sKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZGF0YS5jJwotLS0gc3Jj L2RhdGEuYwkyMDEyLTA4LTE0IDE3OjEwOjM4ICswMDAwCisrKyBzcmMvZGF0YS5jCTIwMTIt MDgtMTUgMTA6Mzk6MDAgKzAwMDAKQEAgLTU0Myw3ICs1NDMsNyBAQAogCWVsc2UKIAkgIHsK IAkgICAgc3dhcF9pbl9zeW12YWxfZm9yd2FyZGluZyAoc3ltLCBibHYpOwotCSAgICB2YWxj b250ZW50cyA9IEJMVl9WQUxVRSAoYmx2KTsKKwkgICAgdmFsY29udGVudHMgPSBnZXRfYmx2 X3ZhbHVlIChibHYpOwogCSAgfQogCWJyZWFrOwogICAgICAgfQpAQCAtOTY0LDE2ICs5NjQs MTYgQEAKIAogICAvKiBVbmxvYWQgdGhlIHByZXZpb3VzbHkgbG9hZGVkIGJpbmRpbmcuICAq LwogICBpZiAoYmx2LT5md2QpCi0gICAgU0VUX0JMVl9WQUxVRSAoYmx2LCBkb19zeW12YWxf Zm9yd2FyZGluZyAoYmx2LT5md2QpKTsKKyAgICBzZXRfYmx2X3ZhbHVlIChibHYsIGRvX3N5 bXZhbF9mb3J3YXJkaW5nIChibHYtPmZ3ZCkpOwogCiAgIC8qIFNlbGVjdCB0aGUgZ2xvYmFs IGJpbmRpbmcgaW4gdGhlIHN5bWJvbC4gICovCi0gIGJsdi0+dmFsY2VsbCA9IGJsdi0+ZGVm Y2VsbDsKKyAgc2V0X2Jsdl92YWxjZWxsIChibHYsIGJsdi0+ZGVmY2VsbCk7CiAgIGlmIChi bHYtPmZ3ZCkKICAgICBzdG9yZV9zeW12YWxfZm9yd2FyZGluZyAoYmx2LT5md2QsIFhDRFIg KGJsdi0+ZGVmY2VsbCksIE5VTEwpOwogCiAgIC8qIEluZGljYXRlIHRoYXQgdGhlIGdsb2Jh bCBiaW5kaW5nIGlzIHNldCB1cCBub3cuICAqLwotICBibHYtPndoZXJlID0gUW5pbDsKLSAg U0VUX0JMVl9GT1VORCAoYmx2LCAwKTsKKyAgc2V0X2Jsdl93aGVyZSAoYmx2LCBRbmlsKTsK KyAgc2V0X2Jsdl9mb3VuZCAoYmx2LCAwKTsKIH0KIAogLyogU2V0IHVwIHRoZSBidWZmZXIt bG9jYWwgc3ltYm9sIFNZTUJPTCBmb3IgdmFsaWRpdHkgaW4gdGhlIGN1cnJlbnQgYnVmZmVy LgpAQCAtMTAwMSw3ICsxMDAxLDcgQEAKICAgICAgIC8qIFVubG9hZCB0aGUgcHJldmlvdXNs eSBsb2FkZWQgYmluZGluZy4gICovCiAgICAgICB0ZW0xID0gYmx2LT52YWxjZWxsOwogICAg ICAgaWYgKGJsdi0+ZndkKQotCVNFVF9CTFZfVkFMVUUgKGJsdiwgZG9fc3ltdmFsX2Zvcndh cmRpbmcgKGJsdi0+ZndkKSk7CisJc2V0X2Jsdl92YWx1ZSAoYmx2LCBkb19zeW12YWxfZm9y d2FyZGluZyAoYmx2LT5md2QpKTsKICAgICAgIC8qIENob29zZSB0aGUgbmV3IGJpbmRpbmcu ICAqLwogICAgICAgewogCUxpc3BfT2JqZWN0IHZhcjsKQEAgLTEwMDksNyArMTAwOSw3IEBA CiAJaWYgKGJsdi0+ZnJhbWVfbG9jYWwpCiAJICB7CiAJICAgIHRlbTEgPSBhc3NxX25vX3F1 aXQgKHZhciwgWEZSQU1FIChzZWxlY3RlZF9mcmFtZSktPnBhcmFtX2FsaXN0KTsKLQkgICAg Ymx2LT53aGVyZSA9IHNlbGVjdGVkX2ZyYW1lOworCSAgICBzZXRfYmx2X3doZXJlIChibHYs IHNlbGVjdGVkX2ZyYW1lKTsKIAkgIH0KIAllbHNlCiAJICB7CkBAIC0xMDIxLDkgKzEwMjEs OSBAQAogCXRlbTEgPSBibHYtPmRlZmNlbGw7CiAKICAgICAgIC8qIExvYWQgdGhlIG5ldyBi aW5kaW5nLiAgKi8KLSAgICAgIGJsdi0+dmFsY2VsbCA9IHRlbTE7CisgICAgICBzZXRfYmx2 X3ZhbGNlbGwgKGJsdiwgdGVtMSk7CiAgICAgICBpZiAoYmx2LT5md2QpCi0Jc3RvcmVfc3lt dmFsX2ZvcndhcmRpbmcgKGJsdi0+ZndkLCBCTFZfVkFMVUUgKGJsdiksIE5VTEwpOworCXN0 b3JlX3N5bXZhbF9mb3J3YXJkaW5nIChibHYtPmZ3ZCwgZ2V0X2Jsdl92YWx1ZSAoYmx2KSwg TlVMTCk7CiAgICAgfQogfQogDApAQCAtMTA1MCw3ICsxMDUwLDcgQEAKICAgICAgIHsKIAlz dHJ1Y3QgTGlzcF9CdWZmZXJfTG9jYWxfVmFsdWUgKmJsdiA9IFNZTUJPTF9CTFYgKHN5bSk7 CiAJc3dhcF9pbl9zeW12YWxfZm9yd2FyZGluZyAoc3ltLCBibHYpOwotCXJldHVybiBibHYt PmZ3ZCA/IGRvX3N5bXZhbF9mb3J3YXJkaW5nIChibHYtPmZ3ZCkgOiBCTFZfVkFMVUUgKGJs dik7CisJcmV0dXJuIGJsdi0+ZndkID8gZG9fc3ltdmFsX2ZvcndhcmRpbmcgKGJsdi0+Zndk KSA6IGdldF9ibHZfdmFsdWUgKGJsdik7CiAgICAgICB9CiAgICAgICAvKiBGQUxMVEhST1VH SCAqLwogICAgIGNhc2UgU1lNQk9MX0ZPUldBUkRFRDoKQEAgLTExNzUsNyArMTE3NSw3IEBA CiAKIAkgICAgLyogV3JpdGUgb3V0IGByZWFsdmFsdWUnIHRvIHRoZSBvbGQgbG9hZGVkIGJp bmRpbmcuICAqLwogCSAgICBpZiAoYmx2LT5md2QpCi0JICAgICAgU0VUX0JMVl9WQUxVRSAo Ymx2LCBkb19zeW12YWxfZm9yd2FyZGluZyAoYmx2LT5md2QpKTsKKwkgICAgICBzZXRfYmx2 X3ZhbHVlIChibHYsIGRvX3N5bXZhbF9mb3J3YXJkaW5nIChibHYtPmZ3ZCkpOwogCiAJICAg IC8qIEZpbmQgdGhlIG5ldyBiaW5kaW5nLiAgKi8KIAkgICAgWFNFVFNZTUJPTCAoc3ltYm9s LCBzeW0pOyAvKiBNYXkgaGF2ZSBjaGFuZ2VkIHZpYSBhbGlhc2luZy4gICovCkBAIC0xMTgz LDggKzExODMsOCBAQAogCQkJICAoYmx2LT5mcmFtZV9sb2NhbAogCQkJICAgPyBYRlJBTUUg KHdoZXJlKS0+cGFyYW1fYWxpc3QKIAkJCSAgIDogQlZBUiAoWEJVRkZFUiAod2hlcmUpLCBs b2NhbF92YXJfYWxpc3QpKSk7Ci0JICAgIGJsdi0+d2hlcmUgPSB3aGVyZTsKLQkgICAgYmx2 LT5mb3VuZCA9IDE7CisJICAgIHNldF9ibHZfd2hlcmUgKGJsdiwgd2hlcmUpOworCSAgICBz ZXRfYmx2X2ZvdW5kIChibHYsIDEpOwogCiAJICAgIGlmIChOSUxQICh0ZW0xKSkKIAkgICAg ICB7CkBAIC0xMTk5LDcgKzExOTksNyBAQAogCQlpZiAoYmluZGZsYWcgfHwgIWJsdi0+bG9j YWxfaWZfc2V0CiAJCSAgICB8fCBsZXRfc2hhZG93c19idWZmZXJfYmluZGluZ19wIChzeW0p KQogCQkgIHsKLQkJICAgIGJsdi0+Zm91bmQgPSAwOworCQkgICAgc2V0X2Jsdl9mb3VuZCAo Ymx2LCAwKTsKIAkJICAgIHRlbTEgPSBibHYtPmRlZmNlbGw7CiAJCSAgfQogCQkvKiBJZiBp dCdzIGEgbG9jYWxfaWZfc2V0LCBiZWluZyBzZXQgbm90IGJvdW5kLApAQCAtMTIxOSwxMSAr MTIxOSwxMSBAQAogCSAgICAgIH0KIAogCSAgICAvKiBSZWNvcmQgd2hpY2ggYmluZGluZyBp cyBub3cgbG9hZGVkLiAgKi8KLQkgICAgYmx2LT52YWxjZWxsID0gdGVtMTsKKwkgICAgc2V0 X2Jsdl92YWxjZWxsIChibHYsIHRlbTEpOwogCSAgfQogCiAJLyogU3RvcmUgdGhlIG5ldyB2 YWx1ZSBpbiB0aGUgY29ucyBjZWxsLiAgKi8KLQlTRVRfQkxWX1ZBTFVFIChibHYsIG5ld3Zh bCk7CisJc2V0X2Jsdl92YWx1ZSAoYmx2LCBuZXd2YWwpOwogCiAJaWYgKGJsdi0+ZndkKQog CSAgewpAQCAtMTQ2NSwyNiArMTQ2NSwyMSBAQAogc3RhdGljIHN0cnVjdCBMaXNwX0J1ZmZl cl9Mb2NhbF9WYWx1ZSAqCiBtYWtlX2JsdiAoc3RydWN0IExpc3BfU3ltYm9sICpzeW0sIGlu dCBmb3J3YXJkZWQsIHVuaW9uIExpc3BfVmFsX0Z3ZCB2YWxjb250ZW50cykKIHsKLSAgc3Ry dWN0IExpc3BfQnVmZmVyX0xvY2FsX1ZhbHVlICpibHYgPSB4bWFsbG9jIChzaXplb2YgKmJs dik7Ci0gIExpc3BfT2JqZWN0IHN5bWJvbDsKLSAgTGlzcF9PYmplY3QgdGVtOworICBzdHJ1 Y3QgTGlzcF9CdWZmZXJfTG9jYWxfVmFsdWUgKmJsdiA9IG1ha2VfYnVmZmVyX2xvY2FsX3Zh bHVlICgpOworICBMaXNwX09iamVjdCBzeW1ib2wsIHRlbTsKIAotIFhTRVRTWU1CT0wgKHN5 bWJvbCwgc3ltKTsKLSB0ZW0gPSBGY29ucyAoc3ltYm9sLCAoZm9yd2FyZGVkCi0gICAgICAg ICAgICAgICAgICAgICAgID8gZG9fc3ltdmFsX2ZvcndhcmRpbmcgKHZhbGNvbnRlbnRzLmZ3 ZCkKLSAgICAgICAgICAgICAgICAgICAgICAgOiB2YWxjb250ZW50cy52YWx1ZSkpOworICBY U0VUU1lNQk9MIChzeW1ib2wsIHN5bSk7CisgIHRlbSA9IEZjb25zIChzeW1ib2wsIChmb3J3 YXJkZWQKKwkJCT8gZG9fc3ltdmFsX2ZvcndhcmRpbmcgKHZhbGNvbnRlbnRzLmZ3ZCkKKwkJ CTogdmFsY29udGVudHMudmFsdWUpKTsKIAogICAvKiBCdWZmZXJfTG9jYWxfVmFsdWVzIGNh bm5vdCBoYXZlIGFzIHJlYWx2YWwgYSBidWZmZXItbG9jYWwKICAgICAgb3Iga2V5Ym9hcmQt bG9jYWwgZm9yd2FyZGluZy4gICovCiAgIGVhc3NlcnQgKCEoZm9yd2FyZGVkICYmIEJVRkZF Ul9PQkpGV0RQICh2YWxjb250ZW50cy5md2QpKSk7CiAgIGVhc3NlcnQgKCEoZm9yd2FyZGVk ICYmIEtCT0FSRF9PQkpGV0RQICh2YWxjb250ZW50cy5md2QpKSk7CiAgIGJsdi0+ZndkID0g Zm9yd2FyZGVkID8gdmFsY29udGVudHMuZndkIDogTlVMTDsKLSAgYmx2LT53aGVyZSA9IFFu aWw7Ci0gIGJsdi0+ZnJhbWVfbG9jYWwgPSAwOwotICBibHYtPmxvY2FsX2lmX3NldCA9IDA7 Ci0gIGJsdi0+ZGVmY2VsbCA9IHRlbTsKLSAgYmx2LT52YWxjZWxsID0gdGVtOwotICBTRVRf QkxWX0ZPVU5EIChibHYsIDApOworICBzZXRfYmx2X2RlZmNlbGwgKGJsdiwgdGVtKTsKKyAg c2V0X2Jsdl92YWxjZWxsIChibHYsIHRlbSk7CiAgIHJldHVybiBibHY7CiB9CiAKQEAgLTE2 NjAsMTAgKzE2NTUsOCBAQAogICAgICAgLyogTWFrZSBzdXJlIHN5bWJvbCBkb2VzIG5vdCB0 aGluayBpdCBpcyBzZXQgdXAgZm9yIHRoaXMgYnVmZmVyOwogCSBmb3JjZSBpdCB0byBsb29r IG9uY2UgYWdhaW4gZm9yIHRoaXMgYnVmZmVyJ3MgdmFsdWUuICAqLwogICAgICAgaWYgKGN1 cnJlbnRfYnVmZmVyID09IFhCVUZGRVIgKGJsdi0+d2hlcmUpKQotCWJsdi0+d2hlcmUgPSBR bmlsOwotICAgICAgLyogYmx2LT52YWxjZWxsID0gYmx2LT5kZWZjZWxsOwotICAgICAgICog U0VUX0JMVl9GT1VORCAoYmx2LCAwKTsgKi8KLSAgICAgIGJsdi0+Zm91bmQgPSAwOworCXNl dF9ibHZfd2hlcmUgKGJsdiwgUW5pbCk7CisgICAgICBzZXRfYmx2X2ZvdW5kIChibHYsIDAp OwogICAgIH0KIAogICAvKiBJZiB0aGUgc3ltYm9sIGZvcndhcmRzIGludG8gYSBDIHZhcmlh YmxlLCB0aGVuIGxvYWQgdGhlIGJpbmRpbmcKQEAgLTE3MzMsMTAgKzE3MjYsOCBAQAogICAg IExpc3BfT2JqZWN0IGJ1ZjsgWFNFVEJVRkZFUiAoYnVmLCBjdXJyZW50X2J1ZmZlcik7CiAg ICAgaWYgKEVRIChidWYsIGJsdi0+d2hlcmUpKQogICAgICAgewotCWJsdi0+d2hlcmUgPSBR bmlsOwotCS8qIGJsdi0+dmFsY2VsbCA9IGJsdi0+ZGVmY2VsbDsKLQkgKiBTRVRfQkxWX0ZP VU5EIChibHYsIDApOyAqLwotCWJsdi0+Zm91bmQgPSAwOworCXNldF9ibHZfd2hlcmUgKGJs diwgUW5pbCk7CisJc2V0X2Jsdl9mb3VuZCAoYmx2LCAwKTsKIAlmaW5kX3N5bWJvbF92YWx1 ZSAodmFyaWFibGUpOwogICAgICAgfQogICB9CkBAIC0xODU3LDExICsxODQ4LDExIEBACiAJ ICAgIGlmIChFUSAodmFyaWFibGUsIFhDQVIgKGVsdCkpKQogCSAgICAgIHsKIAkJZWFzc2Vy dCAoIWJsdi0+ZnJhbWVfbG9jYWwpOwotCQllYXNzZXJ0IChCTFZfRk9VTkQgKGJsdikgfHwg IUVRIChibHYtPndoZXJlLCB0bXApKTsKKwkJZWFzc2VydCAoZ2V0X2Jsdl9mb3VuZCAoYmx2 KSB8fCAhRVEgKGJsdi0+d2hlcmUsIHRtcCkpOwogCQlyZXR1cm4gUXQ7CiAJICAgICAgfQog CSAgfQotCWVhc3NlcnQgKCFCTFZfRk9VTkQgKGJsdikgfHwgIUVRIChibHYtPndoZXJlLCB0 bXApKTsKKwllYXNzZXJ0ICghZ2V0X2Jsdl9mb3VuZCAoYmx2KSB8fCAhRVEgKGJsdi0+d2hl cmUsIHRtcCkpOwogCXJldHVybiBRbmlsOwogICAgICAgfQogICAgIGNhc2UgU1lNQk9MX0ZP UldBUkRFRDoKQEAgLTE5NTEsNyArMTk0Miw3IEBACiAgICAgICBpZiAoIU5JTFAgKEZsb2Nh bF92YXJpYWJsZV9wICh2YXJpYWJsZSwgUW5pbCkpKQogCXJldHVybiBGY3VycmVudF9idWZm ZXIgKCk7CiAgICAgICBlbHNlIGlmIChzeW0tPnJlZGlyZWN0ID09IFNZTUJPTF9MT0NBTEla RUQKLQkgICAgICAgJiYgQkxWX0ZPVU5EIChTWU1CT0xfQkxWIChzeW0pKSkKKwkgICAgICAg JiYgZ2V0X2Jsdl9mb3VuZCAoU1lNQk9MX0JMViAoc3ltKSkpCiAJcmV0dXJuIFNZTUJPTF9C TFYgKHN5bSktPndoZXJlOwogICAgICAgZWxzZQogCXJldHVybiBRbmlsOwoKPT09IG1vZGlm aWVkIGZpbGUgJ3NyYy9ldmFsLmMnCi0tLSBzcmMvZXZhbC5jCTIwMTItMDgtMDggMTk6NTM6 NDQgKzAwMDAKKysrIHNyYy9ldmFsLmMJMjAxMi0wOC0xNSAxMDoxMTo0OSArMDAwMApAQCAt MzE1NywxMiArMzE1NywxMiBAQAogCSAgICBpZiAoIU5JTFAgKEZsb2NhbF92YXJpYWJsZV9w IChzeW1ib2wsIFFuaWwpKSkKIAkgICAgICB7CiAJCWVhc3NlcnQgKHN5bS0+cmVkaXJlY3Qg IT0gU1lNQk9MX0xPQ0FMSVpFRAotCQkJIHx8IChCTFZfRk9VTkQgKFNZTUJPTF9CTFYgKHN5 bSkpCisJCQkgfHwgKGdldF9ibHZfZm91bmQgKFNZTUJPTF9CTFYgKHN5bSkpCiAJCQkgICAg ICYmIEVRIChjdXJfYnVmLCBTWU1CT0xfQkxWIChzeW0pLT53aGVyZSkpKTsKIAkJd2hlcmUg PSBjdXJfYnVmOwogCSAgICAgIH0KIAkgICAgZWxzZSBpZiAoc3ltLT5yZWRpcmVjdCA9PSBT WU1CT0xfTE9DQUxJWkVECi0JCSAgICAgJiYgQkxWX0ZPVU5EIChTWU1CT0xfQkxWIChzeW0p KSkKKwkJICAgICAmJiBnZXRfYmx2X2ZvdW5kIChTWU1CT0xfQkxWIChzeW0pKSkKIAkgICAg ICB3aGVyZSA9IFNZTUJPTF9CTFYgKHN5bSktPndoZXJlOwogCSAgICBlbHNlCiAJICAgICAg d2hlcmUgPSBRbmlsOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9mcmFtZS5jJwotLS0gc3Jj L2ZyYW1lLmMJMjAxMi0wOC0xNCAwODo0NDoyNCArMDAwMAorKysgc3JjL2ZyYW1lLmMJMjAx Mi0wOC0xNSAxMDoxMTo0OSArMDAwMApAQCAtMjA5Niw3ICsyMDk2LDcgQEAKIAljYXNlIFNZ TUJPTF9QTEFJTlZBTDogY2FzZSBTWU1CT0xfRk9SV0FSREVEOiBicmVhazsKIAljYXNlIFNZ TUJPTF9MT0NBTElaRUQ6CiAJICB7IHN0cnVjdCBMaXNwX0J1ZmZlcl9Mb2NhbF9WYWx1ZSAq Ymx2ID0gc3ltLT52YWwuYmx2OwotCSAgICBpZiAoYmx2LT5mcmFtZV9sb2NhbCAmJiBCTFZf Rk9VTkQgKGJsdikgJiYgWEZSQU1FIChibHYtPndoZXJlKSA9PSBmKQorCSAgICBpZiAoYmx2 LT5mcmFtZV9sb2NhbCAmJiBnZXRfYmx2X2ZvdW5kIChibHYpICYmIFhGUkFNRSAoYmx2LT53 aGVyZSkgPT0gZikKIAkgICAgICBzd2FwX2luX2dsb2JhbF9iaW5kaW5nIChzeW0pOwogCSAg ICBicmVhazsKIAkgIH0KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvbGlzcC5oJwotLS0gc3Jj L2xpc3AuaAkyMDEyLTA4LTE0IDE3OjQ1OjI1ICswMDAwCisrKyBzcmMvbGlzcC5oCTIwMTIt MDgtMTUgMTA6NDM6MDkgKzAwMDAKQEAgLTI4MCw2ICsyODAsNyBAQAogICAgIC8qIEN1cnJl bnRseSBmbG9hdHMgYXJlIG5vdCBhIG1pc2MgdHlwZSwKICAgICAgICBidXQgbGV0J3MgZGVm aW5lIHRoaXMgaW4gY2FzZSB3ZSB3YW50IHRvIGNoYW5nZSB0aGF0LiAgKi8KICAgICBMaXNw X01pc2NfRmxvYXQsCisgICAgTGlzcF9NaXNjX0J1ZmZlcl9Mb2NhbF9WYWx1ZSwKICAgICAv KiBUaGlzIGlzIG5vdCBhIHR5cGUgY29kZS4gIEl0IGlzIGZvciByYW5nZSBjaGVja2luZy4g ICovCiAgICAgTGlzcF9NaXNjX0xpbWl0CiAgIH07CkBAIC01MTUsMTAgKzUxNiwxMSBAQAog CiAjZGVmaW5lIFhNSVNDKGEpCSgodW5pb24gTGlzcF9NaXNjICopIFhVTlRBRyAoYSwgTGlz cF9NaXNjKSkKICNkZWZpbmUgWE1JU0NBTlkoYSkJKGVhc3NlcnQgKE1JU0NQIChhKSksICYo WE1JU0MgKGEpLT51X2FueSkpCi0jZGVmaW5lIFhNSVNDVFlQRShhKSAgIChYTUlTQ0FOWSAo YSktPnR5cGUpCisjZGVmaW5lIFhNSVNDVFlQRShhKQkoWE1JU0NBTlkgKGEpLT50eXBlKQog I2RlZmluZSBYTUFSS0VSKGEpCShlYXNzZXJ0IChNQVJLRVJQIChhKSksICYoWE1JU0MgKGEp LT51X21hcmtlcikpCiAjZGVmaW5lIFhPVkVSTEFZKGEpCShlYXNzZXJ0IChPVkVSTEFZUCAo YSkpLCAmKFhNSVNDIChhKS0+dV9vdmVybGF5KSkKICNkZWZpbmUgWFNBVkVfVkFMVUUoYSkJ KGVhc3NlcnQgKFNBVkVfVkFMVUVQIChhKSksICYoWE1JU0MgKGEpLT51X3NhdmVfdmFsdWUp KQorI2RlZmluZSBYQkxWKGEpIAkoZWFzc2VydCAoQkxWUCAoYSkpLCAmKFhNSVNDIChhKS0+ dV9ibHYpKQogCiAvKiBGb3J3YXJkaW5nIG9iamVjdCB0eXBlcy4gICovCiAKQEAgLTEzNDIs NiArMTM0NCw1OSBAQAogICAgIExpc3BfT2JqZWN0IHBsaXN0OwogICB9OwogCisvKiBzdHJ1 Y3QgTGlzcF9CdWZmZXJfTG9jYWxfVmFsdWUgaXMgdXNlZCBpbiBhIHN5bWJvbCB2YWx1ZSBj ZWxsIHdoZW4KKyAgIHRoZSBzeW1ib2wgaGFzIGJ1ZmZlci1sb2NhbCBvciBmcmFtZS1sb2Nh bCBiaW5kaW5ncy4gIChFeGNlcHRpb246CisgICBzb21lIGJ1ZmZlci1sb2NhbCB2YXJpYWJs ZXMgYXJlIGJ1aWx0LWluLCB3aXRoIHRoZWlyIHZhbHVlcyBzdG9yZWQKKyAgIGluIHRoZSBi dWZmZXIgc3RydWN0dXJlIGl0c2VsZi4gIFRoZXkgYXJlIGhhbmRsZWQgZGlmZmVyZW50bHks CisgICB1c2luZyBzdHJ1Y3QgTGlzcF9CdWZmZXJfT2JqZndkLikKKworICAgVGhlIGByZWFs dmFsdWUnIHNsb3QgaG9sZHMgdGhlIHZhcmlhYmxlJ3MgY3VycmVudCB2YWx1ZSwgb3IgYQor ICAgZm9yd2FyZGluZyBwb2ludGVyIHRvIHdoZXJlIHRoYXQgdmFsdWUgaXMga2VwdC4gIFRo aXMgdmFsdWUgaXMgdGhlCisgICBvbmUgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgbG9hZGVk IGJpbmRpbmcuICBUbyByZWFkIG9yIHNldCB0aGUKKyAgIHZhcmlhYmxlLCB5b3UgbXVzdCBm aXJzdCBtYWtlIHN1cmUgdGhlIHJpZ2h0IGJpbmRpbmcgaXMgbG9hZGVkOworICAgdGhlbiB5 b3UgY2FuIGFjY2VzcyB0aGUgdmFsdWUgaW4gKG9yIHRocm91Z2gpIGByZWFsdmFsdWUnLgor CisgICBgYnVmZmVyJyBhbmQgYGZyYW1lJyBhcmUgdGhlIGJ1ZmZlciBhbmQgZnJhbWUgZm9y IHdoaWNoIHRoZSBsb2FkZWQKKyAgIGJpbmRpbmcgd2FzIGZvdW5kLiAgSWYgdGhvc2UgaGF2 ZSBjaGFuZ2VkLCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0CisgICBiaW5kaW5nIGlzIGxvYWRl ZCBpdCBpcyBuZWNlc3NhcnkgdG8gZmluZCB3aGljaCBiaW5kaW5nIGdvZXMgd2l0aAorICAg dGhlIGN1cnJlbnQgYnVmZmVyIGFuZCBzZWxlY3RlZCBmcmFtZSwgdGhlbiBsb2FkIGl0LiAg VG8gbG9hZCBpdCwKKyAgIGZpcnN0IHVubG9hZCB0aGUgcHJldmlvdXMgYmluZGluZywgdGhl biBjb3B5IHRoZSB2YWx1ZSBvZiB0aGUgbmV3CisgICBiaW5kaW5nIGludG8gYHJlYWx2YWx1 ZScgKG9yIHRocm91Z2ggaXQpLiAgQWxzbyB1cGRhdGUKKyAgIExPQURFRC1CSU5ESU5HIHRv IHBvaW50IHRvIHRoZSBuZXdseSBsb2FkZWQgYmluZGluZy4KKworICAgYGxvY2FsX2lmX3Nl dCcgaW5kaWNhdGVzIHRoYXQgbWVyZWx5IHNldHRpbmcgdGhlIHZhcmlhYmxlIGNyZWF0ZXMg YQorICAgbG9jYWwgYmluZGluZyBmb3IgdGhlIGN1cnJlbnQgYnVmZmVyLiAgT3RoZXJ3aXNl IHRoZSBsYXR0ZXIsIHNldHRpbmcKKyAgIHRoZSB2YXJpYWJsZSBkb2VzIG5vdCBkbyB0aGF0 OyBvbmx5IG1ha2UtbG9jYWwtdmFyaWFibGUgZG9lcyB0aGF0LiAgKi8KKworc3RydWN0IExp c3BfQnVmZmVyX0xvY2FsX1ZhbHVlCisgIHsKKyAgICBFTlVNX0JGIChMaXNwX01pc2NfVHlw ZSkgdHlwZSA6IDE2OyAvKiA9IExpc3BfTWlzY19CdWZmZXJfTG9jYWxfVmFsdWUgKi8KKyAg ICB1bnNpZ25lZCBnY21hcmtiaXQgOiAxOworICAgIGludCBzcGFjZXIgOiAxMjsKKyAgICAv KiAxIG1lYW5zIHRoYXQgbWVyZWx5IHNldHRpbmcgdGhlIHZhcmlhYmxlIGNyZWF0ZXMgYSBs b2NhbAorICAgICAgIGJpbmRpbmcgZm9yIHRoZSBjdXJyZW50IGJ1ZmZlci4gICovCisgICAg dW5zaWduZWQgaW50IGxvY2FsX2lmX3NldCA6IDE7CisgICAgLyogMSBtZWFucyB0aGlzIHZh cmlhYmxlIGNhbiBoYXZlIGZyYW1lLWxvY2FsIGJpbmRpbmdzLCBvdGhlcndpc2UsIGl0IGlz CisgICAgICAgY2FuIGhhdmUgYnVmZmVyLWxvY2FsIGJpbmRpbmdzLiAgVGhlIHR3byBjYW5u b3QgYmUgY29tYmluZWQuICAqLworICAgIHVuc2lnbmVkIGludCBmcmFtZV9sb2NhbCA6IDE7 CisgICAgLyogMSBtZWFucyB0aGF0IHRoZSBiaW5kaW5nIG5vdyBsb2FkZWQgd2FzIGZvdW5k LgorICAgICAgIFByZXN1bWFibHkgZXF1aXZhbGVudCB0byAoZGVmY2VsbCE9dmFsY2VsbCku ICAqLworICAgIHVuc2lnbmVkIGludCBmb3VuZCA6IDE7CisgICAgLyogSWYgbm9uLU5VTEws IGEgZm9yd2FyZGluZyB0byB0aGUgQyB2YXIgd2hlcmUgaXQgc2hvdWxkIGFsc28gYmUgc2V0 LiAgKi8KKyAgICB1bmlvbiBMaXNwX0Z3ZCAqZndkOwkvKiBTaG91bGQgbmV2ZXIgYmUgKEJ1 ZmZlcnxLYm9hcmQpX09iamZ3ZC4gICovCisgICAgLyogVGhlIGJ1ZmZlciBvciBmcmFtZSBm b3Igd2hpY2ggdGhlIGxvYWRlZCBiaW5kaW5nIHdhcyBmb3VuZC4gICovCisgICAgTGlzcF9P YmplY3Qgd2hlcmU7CisgICAgLyogQSBjb25zIGNlbGwgdGhhdCBob2xkcyB0aGUgZGVmYXVs dCB2YWx1ZS4gIEl0IGhhcyB0aGUgZm9ybQorICAgICAgIChTWU1CT0wgLiBERUZBVUxULVZB TFVFKS4gICovCisgICAgTGlzcF9PYmplY3QgZGVmY2VsbDsKKyAgICAvKiBUaGUgY29ucyBj ZWxsIGZyb20gYHdoZXJlJ3MgcGFyYW1ldGVyIGFsaXN0LgorICAgICAgIEl0IGFsd2F5cyBo YXMgdGhlIGZvcm0gKFNZTUJPTCAuIFZBTFVFKQorICAgICAgIE5vdGUgdGhhdCBpZiBgZm9y d2FyZCcgaXMgbm9uLW5pbCwgVkFMVUUgbWF5IGJlIG91dCBvZiBkYXRlLgorICAgICAgIEFs c28gaWYgdGhlIGN1cnJlbnRseSBsb2FkZWQgYmluZGluZyBpcyB0aGUgZGVmYXVsdCBiaW5k aW5nLCB0aGVuCisgICAgICAgdGhpcyBpcyBgZXEndWFsIHRvIGRlZmNlbGwuICAqLworICAg IExpc3BfT2JqZWN0IHZhbGNlbGw7CisgIH07CisKIC8qIEhvbGQgYSBDIHBvaW50ZXIgZm9y IGxhdGVyIHVzZS4KICAgIFRoaXMgdHlwZSBvZiBvYmplY3QgaXMgdXNlZCBpbiB0aGUgYXJn IHRvIHJlY29yZF91bndpbmRfcHJvdGVjdC4gICovCiBzdHJ1Y3QgTGlzcF9TYXZlX1ZhbHVl CkBAIC0xMzc1LDYgKzE0MzAsNyBAQAogICAgIHN0cnVjdCBMaXNwX0ZyZWUgdV9mcmVlOwog ICAgIHN0cnVjdCBMaXNwX01hcmtlciB1X21hcmtlcjsKICAgICBzdHJ1Y3QgTGlzcF9PdmVy bGF5IHVfb3ZlcmxheTsKKyAgICBzdHJ1Y3QgTGlzcF9CdWZmZXJfTG9jYWxfVmFsdWUgdV9i bHY7CiAgICAgc3RydWN0IExpc3BfU2F2ZV9WYWx1ZSB1X3NhdmVfdmFsdWU7CiAgIH07CiAK QEAgLTE0MTcsNjQgKzE0NzMsNiBAQAogICAgIExpc3BfT2JqZWN0IHNsb3R0eXBlOyAvKiBR bmlsLCBMaXNwX0ludCwgTGlzcF9TeW1ib2wsIG9yIExpc3BfU3RyaW5nLiAgKi8KICAgfTsK IAotLyogc3RydWN0IExpc3BfQnVmZmVyX0xvY2FsX1ZhbHVlIGlzIHVzZWQgaW4gYSBzeW1i b2wgdmFsdWUgY2VsbCB3aGVuCi0gICB0aGUgc3ltYm9sIGhhcyBidWZmZXItbG9jYWwgb3Ig ZnJhbWUtbG9jYWwgYmluZGluZ3MuICAoRXhjZXB0aW9uOgotICAgc29tZSBidWZmZXItbG9j YWwgdmFyaWFibGVzIGFyZSBidWlsdC1pbiwgd2l0aCB0aGVpciB2YWx1ZXMgc3RvcmVkCi0g ICBpbiB0aGUgYnVmZmVyIHN0cnVjdHVyZSBpdHNlbGYuICBUaGV5IGFyZSBoYW5kbGVkIGRp ZmZlcmVudGx5LAotICAgdXNpbmcgc3RydWN0IExpc3BfQnVmZmVyX09iamZ3ZC4pCi0KLSAg IFRoZSBgcmVhbHZhbHVlJyBzbG90IGhvbGRzIHRoZSB2YXJpYWJsZSdzIGN1cnJlbnQgdmFs dWUsIG9yIGEKLSAgIGZvcndhcmRpbmcgcG9pbnRlciB0byB3aGVyZSB0aGF0IHZhbHVlIGlz IGtlcHQuICBUaGlzIHZhbHVlIGlzIHRoZQotICAgb25lIHRoYXQgY29ycmVzcG9uZHMgdG8g dGhlIGxvYWRlZCBiaW5kaW5nLiAgVG8gcmVhZCBvciBzZXQgdGhlCi0gICB2YXJpYWJsZSwg eW91IG11c3QgZmlyc3QgbWFrZSBzdXJlIHRoZSByaWdodCBiaW5kaW5nIGlzIGxvYWRlZDsK LSAgIHRoZW4geW91IGNhbiBhY2Nlc3MgdGhlIHZhbHVlIGluIChvciB0aHJvdWdoKSBgcmVh bHZhbHVlJy4KLQotICAgYGJ1ZmZlcicgYW5kIGBmcmFtZScgYXJlIHRoZSBidWZmZXIgYW5k IGZyYW1lIGZvciB3aGljaCB0aGUgbG9hZGVkCi0gICBiaW5kaW5nIHdhcyBmb3VuZC4gIElm IHRob3NlIGhhdmUgY2hhbmdlZCwgdG8gbWFrZSBzdXJlIHRoZSByaWdodAotICAgYmluZGlu ZyBpcyBsb2FkZWQgaXQgaXMgbmVjZXNzYXJ5IHRvIGZpbmQgd2hpY2ggYmluZGluZyBnb2Vz IHdpdGgKLSAgIHRoZSBjdXJyZW50IGJ1ZmZlciBhbmQgc2VsZWN0ZWQgZnJhbWUsIHRoZW4g bG9hZCBpdC4gIFRvIGxvYWQgaXQsCi0gICBmaXJzdCB1bmxvYWQgdGhlIHByZXZpb3VzIGJp bmRpbmcsIHRoZW4gY29weSB0aGUgdmFsdWUgb2YgdGhlIG5ldwotICAgYmluZGluZyBpbnRv IGByZWFsdmFsdWUnIChvciB0aHJvdWdoIGl0KS4gIEFsc28gdXBkYXRlCi0gICBMT0FERUQt QklORElORyB0byBwb2ludCB0byB0aGUgbmV3bHkgbG9hZGVkIGJpbmRpbmcuCi0KLSAgIGBs b2NhbF9pZl9zZXQnIGluZGljYXRlcyB0aGF0IG1lcmVseSBzZXR0aW5nIHRoZSB2YXJpYWJs ZSBjcmVhdGVzIGEKLSAgIGxvY2FsIGJpbmRpbmcgZm9yIHRoZSBjdXJyZW50IGJ1ZmZlci4g IE90aGVyd2lzZSB0aGUgbGF0dGVyLCBzZXR0aW5nCi0gICB0aGUgdmFyaWFibGUgZG9lcyBu b3QgZG8gdGhhdDsgb25seSBtYWtlLWxvY2FsLXZhcmlhYmxlIGRvZXMgdGhhdC4gICovCi0K LXN0cnVjdCBMaXNwX0J1ZmZlcl9Mb2NhbF9WYWx1ZQotICB7Ci0gICAgLyogMSBtZWFucyB0 aGF0IG1lcmVseSBzZXR0aW5nIHRoZSB2YXJpYWJsZSBjcmVhdGVzIGEgbG9jYWwKLSAgICAg ICBiaW5kaW5nIGZvciB0aGUgY3VycmVudCBidWZmZXIuICAqLwotICAgIHVuc2lnbmVkIGlu dCBsb2NhbF9pZl9zZXQgOiAxOwotICAgIC8qIDEgbWVhbnMgdGhpcyB2YXJpYWJsZSBjYW4g aGF2ZSBmcmFtZS1sb2NhbCBiaW5kaW5ncywgb3RoZXJ3aXNlLCBpdCBpcwotICAgICAgIGNh biBoYXZlIGJ1ZmZlci1sb2NhbCBiaW5kaW5ncy4gIFRoZSB0d28gY2Fubm90IGJlIGNvbWJp bmVkLiAgKi8KLSAgICB1bnNpZ25lZCBpbnQgZnJhbWVfbG9jYWwgOiAxOwotICAgIC8qIDEg bWVhbnMgdGhhdCB0aGUgYmluZGluZyBub3cgbG9hZGVkIHdhcyBmb3VuZC4KLSAgICAgICBQ cmVzdW1hYmx5IGVxdWl2YWxlbnQgdG8gKGRlZmNlbGwhPXZhbGNlbGwpLiAgKi8KLSAgICB1 bnNpZ25lZCBpbnQgZm91bmQgOiAxOwotICAgIC8qIElmIG5vbi1OVUxMLCBhIGZvcndhcmRp bmcgdG8gdGhlIEMgdmFyIHdoZXJlIGl0IHNob3VsZCBhbHNvIGJlIHNldC4gICovCi0gICAg dW5pb24gTGlzcF9Gd2QgKmZ3ZDsJLyogU2hvdWxkIG5ldmVyIGJlIChCdWZmZXJ8S2JvYXJk KV9PYmpmd2QuICAqLwotICAgIC8qIFRoZSBidWZmZXIgb3IgZnJhbWUgZm9yIHdoaWNoIHRo ZSBsb2FkZWQgYmluZGluZyB3YXMgZm91bmQuICAqLwotICAgIExpc3BfT2JqZWN0IHdoZXJl OwotICAgIC8qIEEgY29ucyBjZWxsIHRoYXQgaG9sZHMgdGhlIGRlZmF1bHQgdmFsdWUuICBJ dCBoYXMgdGhlIGZvcm0KLSAgICAgICAoU1lNQk9MIC4gREVGQVVMVC1WQUxVRSkuICAqLwot ICAgIExpc3BfT2JqZWN0IGRlZmNlbGw7Ci0gICAgLyogVGhlIGNvbnMgY2VsbCBmcm9tIGB3 aGVyZSdzIHBhcmFtZXRlciBhbGlzdC4KLSAgICAgICBJdCBhbHdheXMgaGFzIHRoZSBmb3Jt IChTWU1CT0wgLiBWQUxVRSkKLSAgICAgICBOb3RlIHRoYXQgaWYgYGZvcndhcmQnIGlzIG5v bi1uaWwsIFZBTFVFIG1heSBiZSBvdXQgb2YgZGF0ZS4KLSAgICAgICBBbHNvIGlmIHRoZSBj dXJyZW50bHkgbG9hZGVkIGJpbmRpbmcgaXMgdGhlIGRlZmF1bHQgYmluZGluZywgdGhlbgot ICAgICAgIHRoaXMgaXMgYGVxJ3VhbCB0byBkZWZjZWxsLiAgKi8KLSAgICBMaXNwX09iamVj dCB2YWxjZWxsOwotICB9OwotCi0jZGVmaW5lIEJMVl9GT1VORChibHYpIFwKLSAgKGVhc3Nl cnQgKChibHYpLT5mb3VuZCA9PSAhRVEgKChibHYpLT5kZWZjZWxsLCAoYmx2KS0+dmFsY2Vs bCkpLCAoYmx2KS0+Zm91bmQpCi0jZGVmaW5lIFNFVF9CTFZfRk9VTkQoYmx2LCB2KSBcCi0g IChlYXNzZXJ0ICgodikgPT0gIUVRICgoYmx2KS0+ZGVmY2VsbCwgKGJsdiktPnZhbGNlbGwp KSwgKGJsdiktPmZvdW5kID0gKHYpKQotCi0jZGVmaW5lIEJMVl9WQUxVRShibHYpIChYQ0RS ICgoYmx2KS0+dmFsY2VsbCkpCi0jZGVmaW5lIFNFVF9CTFZfVkFMVUUoYmx2LCB2KSAoWFNF VENEUiAoKGJsdiktPnZhbGNlbGwsIHYpKQotCiAvKiBMaWtlIExpc3BfT2JqZndkIGV4Y2Vw dCB0aGF0IHZhbHVlIGxpdmVzIGluIGEgc2xvdCBpbiB0aGUKICAgIGN1cnJlbnQga2JvYXJk LiAgKi8KIHN0cnVjdCBMaXNwX0tib2FyZF9PYmpmd2QKQEAgLTE2NjQsNiArMTY2Miw3IEBA CiAjZGVmaW5lIE9WRVJMQVlQKHgpIChNSVNDUCAoeCkgJiYgWE1JU0NUWVBFICh4KSA9PSBM aXNwX01pc2NfT3ZlcmxheSkKICNkZWZpbmUgTUFSS0VSUCh4KSAoTUlTQ1AgKHgpICYmIFhN SVNDVFlQRSAoeCkgPT0gTGlzcF9NaXNjX01hcmtlcikKICNkZWZpbmUgU0FWRV9WQUxVRVAo eCkgKE1JU0NQICh4KSAmJiBYTUlTQ1RZUEUgKHgpID09IExpc3BfTWlzY19TYXZlX1ZhbHVl KQorI2RlZmluZSBCTFZQKHgpIChNSVNDUCAoeCkgJiYgWE1JU0NUWVBFICh4KSA9PSBMaXNw X01pc2NfQnVmZmVyX0xvY2FsX1ZhbHVlKQogCiAjZGVmaW5lIElOVEZXRFAoeCkgKFhGV0RU WVBFICh4KSA9PSBMaXNwX0Z3ZF9JbnQpCiAjZGVmaW5lIEJPT0xGV0RQKHgpIChYRldEVFlQ RSAoeCkgPT0gTGlzcF9Gd2RfQm9vbCkKQEAgLTI0MDcsNiArMjQwNiw1MyBAQAogICBYU1lN Qk9MIChzeW0pLT5uZXh0ID0gbmV4dDsKIH0KIAorLyogVXNlIHRoZXNlIGZ1bmN0aW9ucyB0 byBnZXQgYW5kIHNldCBMaXNwX09iamVjdAorICAgc2xvdHMgb2Ygc3RydWN0IExpc3BfQnVm ZmVyX0xvY2FsX1ZhbHVlLiAgKi8KKworTElTUF9JTkxJTkUgaW50CitnZXRfYmx2X2ZvdW5k IChzdHJ1Y3QgTGlzcF9CdWZmZXJfTG9jYWxfVmFsdWUgKmJsdikKK3sKKyAgZWFzc2VydCAo Ymx2LT5mb3VuZCA9PSAhRVEgKGJsdi0+ZGVmY2VsbCwgYmx2LT52YWxjZWxsKSk7CisgIHJl dHVybiBibHYtPmZvdW5kOworfQorCitMSVNQX0lOTElORSB2b2lkCitzZXRfYmx2X2ZvdW5k IChzdHJ1Y3QgTGlzcF9CdWZmZXJfTG9jYWxfVmFsdWUgKmJsdiwgaW50IGZvdW5kKQorewor ICBlYXNzZXJ0IChmb3VuZCA9PSAhRVEgKGJsdi0+ZGVmY2VsbCwgYmx2LT52YWxjZWxsKSk7 CisgIGJsdi0+Zm91bmQgPSBmb3VuZDsKK30KKworTElTUF9JTkxJTkUgTGlzcF9PYmplY3QK K2dldF9ibHZfdmFsdWUgKHN0cnVjdCBMaXNwX0J1ZmZlcl9Mb2NhbF9WYWx1ZSAqYmx2KQor eworICByZXR1cm4gWENEUiAoYmx2LT52YWxjZWxsKTsKK30KKworTElTUF9JTkxJTkUgdm9p ZAorc2V0X2Jsdl92YWx1ZSAoc3RydWN0IExpc3BfQnVmZmVyX0xvY2FsX1ZhbHVlICpibHYs IExpc3BfT2JqZWN0IHZhbCkKK3sKKyAgWFNFVENEUiAoYmx2LT52YWxjZWxsLCB2YWwpOwor fQorCitMSVNQX0lOTElORSB2b2lkCitzZXRfYmx2X3doZXJlIChzdHJ1Y3QgTGlzcF9CdWZm ZXJfTG9jYWxfVmFsdWUgKmJsdiwgTGlzcF9PYmplY3QgdmFsKQoreworICBibHYtPndoZXJl ID0gdmFsOworfQorCitMSVNQX0lOTElORSB2b2lkCitzZXRfYmx2X2RlZmNlbGwgKHN0cnVj dCBMaXNwX0J1ZmZlcl9Mb2NhbF9WYWx1ZSAqYmx2LCBMaXNwX09iamVjdCB2YWwpCit7Cisg IGJsdi0+ZGVmY2VsbCA9IHZhbDsKK30KKworTElTUF9JTkxJTkUgdm9pZAorc2V0X2Jsdl92 YWxjZWxsIChzdHJ1Y3QgTGlzcF9CdWZmZXJfTG9jYWxfVmFsdWUgKmJsdiwgTGlzcF9PYmpl Y3QgdmFsKQoreworICBibHYtPnZhbGNlbGwgPSB2YWw7Cit9CisKIC8qIFNldCBvdmVybGF5 J3MgcHJvcGVydHkgbGlzdC4gICovCiAKIExJU1BfSU5MSU5FIHZvaWQKQEAgLTI4MDIsNiAr Mjg0OCw3IEBACiBleHRlcm4gdm9pZCBkaXNwbGF5X21hbGxvY193YXJuaW5nICh2b2lkKTsK IGV4dGVybiBwdHJkaWZmX3QgaW5oaWJpdF9nYXJiYWdlX2NvbGxlY3Rpb24gKHZvaWQpOwog ZXh0ZXJuIExpc3BfT2JqZWN0IG1ha2Vfc2F2ZV92YWx1ZSAodm9pZCAqLCBwdHJkaWZmX3Qp OworZXh0ZXJuIHN0cnVjdCBMaXNwX0J1ZmZlcl9Mb2NhbF9WYWx1ZSAqIG1ha2VfYnVmZmVy X2xvY2FsX3ZhbHVlICh2b2lkKTsKIGV4dGVybiBMaXNwX09iamVjdCBidWlsZF9vdmVybGF5 IChMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0KTsKIGV4dGVybiB2b2lk IGZyZWVfbWFya2VyIChMaXNwX09iamVjdCk7CiBleHRlcm4gdm9pZCBmcmVlX2NvbnMgKHN0 cnVjdCBMaXNwX0NvbnMgKik7Cgo= --------------040400040800080602030008--