From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31601 invoked by alias); 13 Jan 2010 04:42:18 -0000 Received: (qmail 31593 invoked by uid 22791); 13 Jan 2010 04:42:17 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail-bw0-f219.google.com (HELO mail-bw0-f219.google.com) (209.85.218.219) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 13 Jan 2010 04:42:12 +0000 Received: by bwz19 with SMTP id 19so4568510bwz.8 for ; Tue, 12 Jan 2010 20:42:09 -0800 (PST) Received: by 10.204.48.206 with SMTP id s14mr4805157bkf.177.1263357729403; Tue, 12 Jan 2010 20:42:09 -0800 (PST) Received: from localhost (113-243-252-87-dynamic-pool.gprs.mts.by [87.252.243.113]) by mx.google.com with ESMTPS id 13sm3403066bwz.6.2010.01.12.20.41.28 (version=SSLv3 cipher=RC4-MD5); Tue, 12 Jan 2010 20:42:07 -0800 (PST) Date: Wed, 13 Jan 2010 04:42:00 -0000 From: Mihail Zenkov To: Joel Brobecker Cc: gdb-patches@sourceware.org Subject: Re: D language support Message-Id: <20100113064026.14f75ff2.mihai.zenkov@gmail.com> In-Reply-To: <20100109142327.GC2007@adacore.com> References: <20091224015617.7092112b.mihai.zenkov@gmail.com> <20091230125539.GF2788@adacore.com> <20100109082524.263bcb17.mihai.zenkov@gmail.com> <20100109082830.dd984de8.mihai.zenkov@gmail.com> <20100109142327.GC2007@adacore.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Wed__13_Jan_2010_06_40_26_+0200_fOD=tVpTzdZTzHP/" X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-01/txt/msg00324.txt.bz2 This is a multi-part message in MIME format. --Multipart=_Wed__13_Jan_2010_06_40_26_+0200_fOD=tVpTzdZTzHP/ Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-length: 2335 > Please also make sure that you patch does not introduce any regression > in our testsuite. Do you know how to test it? Basically, we run the > testsuite before and after applying your patch, and verify that it > does not introduce any new failures by comparing the gdb.sum files > produced before and after. Please also make sure to mention which > architecture this was tested on (typically x86-linux or x86_64-linux). Tested on x86-linux. I have one regression and fix it. > This is not a blocking comment, meaning that this is not a request > to fix before your patch gets accepted, but I'm starting to think > that the way you use your unbounded_string is to build the output > before printing it. We typically would use a "ui_file" stream, > for that. In your case, you want a "memory" ui-file. Have a look > at ui-file.h, and in particular at mem_fileopen, ui_file_write, > and ui_file_xstrdup. That should provide you all the infrastructure > you need to get rid of this local "unbounded_string" type. > > I'll give you the choice: Look at this as part of this patch, or > promise me that you'll look at it soon after this patch is in our tree. You right, but in unbounded_string we allocate what we needed + 20 byte. It allows to call allocation of memory less often. This way chose John Demme. It effective way, when we need allocate many unbounded buffers with big size. But in ours case we need only on small buffer. I prefer another way - just allocate one buffer with size bigger than worst case. It important in case with D language, as it can create only static library at now. I do some test: If we use ui_file we need call allocate 10275 times for "hello world" and 86076 for real medium project on startup GDB. If we use unbounded_string - 3130 and 25494. If we use one buffer - 1214 and 8882. Worst case size of buffer was 173 byte. > > + if (ret != -1) > > + break; > > + default: > > + ret = c_val_print (type, valaddr, embedded_offset, address, stream, > > + recurse, options); > > This is surprising me a little. Don't you have plain struct types > that are not dynamic arrays? Right now, the code seems to indicate > that you don't expect any. Or maybe I missed something? Look at this again. If we don't have dynamic array we ret -1. In this case ret == -1 and we jump to default. --Multipart=_Wed__13_Jan_2010_06_40_26_+0200_fOD=tVpTzdZTzHP/ Content-Type: application/octet-stream; name="gdb-100113-d.patch" Content-Disposition: attachment; filename="gdb-100113-d.patch" Content-Transfer-Encoding: base64 Content-length: 36373 Z2RiL0NoYW5nZUxvZzoKCUQgbGFuZ3VhZ2Ugc3VwcG9ydC4KCSogTWFrZWZp bGUuaW4gKFNGSUxFUyk6IEFkZCBkLWxhbmcuYyBkLXZhbHByaW50LmMuCgko Q09NTU9OX09CUyk6IEFkZCBkLWxhbmcubyBkLXZhbHByaW50Lm8uCgkoSEZJ TEVTX05PX1NSQ0RJUik6IEFkZCBkLWxhbmcuaC4KCSogYy1sYW5nLmM6IE1h a2UgY19lbWl0X2NoYXIgYW5kIGV4cF9kZXNjcmlwdG9yX2MgcHVibGljLgoJ KiBjLWxhbmcuaDogQWRkIGRlY2xhcmF0aW9uIGNfZW1pdF9jaGFyIGFuZCBl eHBfZGVzY3JpcHRvcl9jLgoJKiBkLWxhbmcuYzogTmV3IGZpbGUuCgkqIGQt bGFuZy5oOiBOZXcgZmlsZS4KCSogZC12YWxwcmludC5jOiBOZXcgZmlsZS4K CSogZGVmcy5oIChlbnVtIGxhbmd1YWdlKTogQWRkIGxhbmd1YWdlX2QuCgkq IGRvYy9nZGIudGV4aW5mbzogQWRkIG1lbnRpb24gYWJvdXQgRCBsYW5ndWFn ZSBzdXBwb3J0LgoJKiBkd2FyZjJyZWFkLmMgKHNldF9jdV9sYW5ndWFnZSk6 IEFkZCBEV19MQU5HX0QuCgkqIGxhbmd1YWdlLmMgKGJpbm9wX3Jlc3VsdF90 eXBlLCBpbnRlZ3JhbF90eXBlLCBjaGFyYWN0ZXJfdHlwZSkgCgkoc3RyaW5n X3R5cGUsIGJvb2xlYW5fdHlwZSwgc3RydWN0dXJlZF90eXBlKTogQWRkIGxh bmd1YWdlX2QuCgkqIHN5bWZpbGUuYyAoaW5pdF9maWxlbmFtZV9sYW5ndWFn ZV90YWJsZSk6IEFkZCBsYW5ndWFnZV9kLgoJKiBzeW10YWIuYyBJbmNsdWRl IGQtbGFuZy5oLgoJKHN5bWJvbF9pbml0X2xhbmd1YWdlX3NwZWNpZmljLCBz eW1ib2xfZmluZF9kZW1hbmdsZWRfbmFtZSkKCShzeW1ib2xfbmF0dXJhbF9u YW1lLCBsb29rdXBfc3ltYm9sX2luX2xhbmd1YWdlKQoJKHN5bWJvbF9kZW1h bmdsZWRfbmFtZSwgc3ltYm9sX21hdGNoZXNfZG9tYWluKTogQWRkIGxhbmd1 YWdlX2QuCgkqIHRlc3RzdWl0ZS9nZGIuYmFzZS9kZWZhdWx0LmV4cDogZml4 ICJzZXQgbGFuZ3VhZ2UiIHRlc3QuCgpkaWZmIC0tZ2l0IGEvZ2RiL01ha2Vm aWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCmluZGV4IDRkM2UwMmEuLjdhY2Q5 NjggMTAwNjQ0Ci0tLSBhL2dkYi9NYWtlZmlsZS5pbgorKysgYi9nZGIvTWFr ZWZpbGUuaW4KQEAgLTY0MSw2ICs2NDEsNyBAQCBTRklMRVMgPSBhZGEtZXhw LnkgYWRhLWxhbmcuYyBhZGEtdHlwZXByaW50LmMgYWRhLXZhbHByaW50LmMg YWRhLXRhc2tzLmMgXAogCWNoYXJzZXQuYyBjbGktb3V0LmMgY29mZnJlYWQu YyBjb2ZmLXBlLXJlYWQuYyBcCiAJY29tcGxhaW50cy5jIGNvbXBsZXRlci5j IGNvcmVmaWxlLmMgXAogCWNwLWFiaS5jIGNwLXN1cHBvcnQuYyBjcC1uYW1l c3BhY2UuYyBjcC12YWxwcmludC5jIFwKKwlkLWxhbmcuYyBkLXZhbHByaW50 LmMgXAogCWNwLW5hbWUtcGFyc2VyLnkgXAogCWRieHJlYWQuYyBkZW1hbmds ZS5jIGRpY3Rpb25hcnkuYyBkaXNhc20uYyBkb3VibGVzdC5jIGR1bW15LWZy YW1lLmMgXAogCWR3YXJmMmV4cHIuYyBkd2FyZjJsb2MuYyBkd2FyZjJyZWFk LmMgZHdhcmYyLWZyYW1lLmMgXApAQCAtNzA3LDcgKzcwOCw3IEBAIGNsaS1v dXQuaCBnZGJfZXhwYXQuaCBicmVha3BvaW50LmggaW5mY2FsbC5oIG9ic2Qt dGRlcC5oIGdudS12Mi1hYmkuaCBcCiBleGVjLmggbTMyci10ZGVwLmggb3Nh YmkuaCBnZGJjb3JlLmggc29saWItc29tLmggXAogaTM4NmJzZC1uYXQuaCB4 bWwtc3VwcG9ydC5oIHhtbC10ZGVzYy5oIGFscGhhYnNkLXRkZXAuaCBnZGJf b2JzdGFjay5oIFwKIGlhNjQtdGRlcC5oIGFkYS1sYW5nLmggdmFyb2JqLmgg ZnJ2LXRkZXAuaCBudG8tdGRlcC5oIHNlcmlhbC5oIFwKLWMtbGFuZy5oIGZy YW1lLmggZXZlbnQtbG9vcC5oIGJsb2NrLmggY2xpL2NsaS1zZXRzaG93LmgJ XAorYy1sYW5nLmggZC1sYW5nLmggZnJhbWUuaCBldmVudC1sb29wLmggYmxv Y2suaCBjbGkvY2xpLXNldHNob3cuaAlcCiBjbGkvY2xpLWRlY29kZS5oIGNs aS9jbGktY21kcy5oIGNsaS9jbGktZHVtcC5oIFwKIGNsaS9jbGktc2NyaXB0 LmggbWFjcm90YWIuaCBzeW10YWIuaCB2ZXJzaW9uLmggZ251bGliL3djaGFy LmluLmggXAogZ251bGliL3N0cmluZy5pbi5oIGdudWxpYi9zdHItdHdvLXdh eS5oIGdudWxpYi9leHRyYS9saW5rLXdhcm5pbmcuaCBcCkBAIC04MTAsNyAr ODExLDcgQEAgQ09NTU9OX09CUyA9ICQoREVQRklMRVMpICQoQ09ORklHX09C UykgJChZWU9CSikgXAogCWRieHJlYWQubyBjb2ZmcmVhZC5vIGNvZmYtcGUt cmVhZC5vIFwKIAlkd2FyZjJyZWFkLm8gbWlwc3JlYWQubyBzdGFic3JlYWQu byBjb3JlZmlsZS5vIFwKIAlkd2FyZjJleHByLm8gZHdhcmYybG9jLm8gZHdh cmYyLWZyYW1lLm8gXAotCWFkYS1sYW5nLm8gYy1sYW5nLm8gZi1sYW5nLm8g b2JqYy1sYW5nLm8gXAorCWFkYS1sYW5nLm8gYy1sYW5nLm8gZC1sYW5nLm8g Zi1sYW5nLm8gb2JqYy1sYW5nLm8gXAogCWFkYS10YXNrcy5vIFwKIAl1aS1v dXQubyBjbGktb3V0Lm8gXAogCXZhcm9iai5vIHZlYy5vIHdyYXBwZXIubyBc CkBAIC04MjAsNyArODIxLDggQEAgQ09NTU9OX09CUyA9ICQoREVQRklMRVMp ICQoQ09ORklHX09CUykgJChZWU9CSikgXAogCXNlbnRpbmVsLWZyYW1lLm8g XAogCWNvbXBsYWludHMubyB0eXBlcHJpbnQubyBcCiAJYWRhLXR5cGVwcmlu dC5vIGMtdHlwZXByaW50Lm8gZi10eXBlcHJpbnQubyBtMi10eXBlcHJpbnQu byBcCi0JYWRhLXZhbHByaW50Lm8gYy12YWxwcmludC5vIGNwLXZhbHByaW50 Lm8gZi12YWxwcmludC5vIG0yLXZhbHByaW50Lm8gXAorCWFkYS12YWxwcmlu dC5vIGMtdmFscHJpbnQubyBjcC12YWxwcmludC5vIGQtdmFscHJpbnQubyBm LXZhbHByaW50Lm8gXAorCW0yLXZhbHByaW50Lm8gXAogCXNlcmlhbC5vIG1k ZWJ1Z3JlYWQubyB0b3AubyB1dGlscy5vIFwKIAl1aS1maWxlLm8gXAogCXVz ZXItcmVncy5vIFwKZGlmZiAtLWdpdCBhL2dkYi9jLWxhbmcuYyBiL2dkYi9j LWxhbmcuYwppbmRleCA2NmE5OTAxLi43YjdlNWRhIDEwMDY0NAotLS0gYS9n ZGIvYy1sYW5nLmMKKysrIGIvZ2RiL2MtbGFuZy5jCkBAIC0yNTMsNyArMjUz LDcgQEAgcHJpbnRfd2NoYXIgKGdkYl93aW50X3QgdywgY29uc3QgZ2RiX2J5 dGUgKm9yaWcsIGludCBvcmlnX2xlbiwKICAgIHN0cmluZyB3aG9zZSBkZWxp bWl0ZXIgaXMgUVVPVEVSLiAgTm90ZSB0aGF0IHRoYXQgZm9ybWF0IGZvciBw cmludGluZwogICAgY2hhcmFjdGVycyBhbmQgc3RyaW5ncyBpcyBsYW5ndWFn ZSBzcGVjaWZpYy4gKi8KIAotc3RhdGljIHZvaWQKK3ZvaWQKIGNfZW1pdF9j aGFyIChpbnQgYywgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sIGludCBxdW90ZXIpCiB7CiAgIGVudW0gYmZkX2VuZGlhbiBi eXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZXRfdHlwZV9hcmNo ICh0eXBlKSk7CkBAIC0xMTMzLDcgKzExMzMsNyBAQCBjX2xhbmd1YWdlX2Fy Y2hfaW5mbyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgIGxhaS0+Ym9v bF90eXBlX2RlZmF1bHQgPSBidWlsdGluLT5idWlsdGluX2ludDsKIH0KIAot c3RhdGljIGNvbnN0IHN0cnVjdCBleHBfZGVzY3JpcHRvciBleHBfZGVzY3Jp cHRvcl9jID0gCitjb25zdCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0b3IgZXhwX2Rl c2NyaXB0b3JfYyA9IAogewogICBwcmludF9zdWJleHBfc3RhbmRhcmQsCiAg IG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCwKZGlmZiAtLWdpdCBhL2dkYi9j LWxhbmcuaCBiL2dkYi9jLWxhbmcuaAppbmRleCBjMmM1MjUyLi40ZDIzMzY0 IDEwMDY0NAotLS0gYS9nZGIvYy1sYW5nLmgKKysrIGIvZ2RiL2MtbGFuZy5o CkBAIC04Nyw2ICs4NywxMCBAQCBleHRlcm4gdm9pZCBjX3ByaW50c3RyIChz dHJ1Y3QgdWlfZmlsZSAqIHN0cmVhbSwgc3RydWN0IHR5cGUgKmVsdHR5cGUs CiBleHRlcm4gdm9pZCBjX2xhbmd1YWdlX2FyY2hfaW5mbyAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsCiAJCQkJICBzdHJ1Y3QgbGFuZ3VhZ2VfYXJjaF9p bmZvICpsYWkpOwogCitleHRlcm4gY29uc3Qgc3RydWN0IGV4cF9kZXNjcmlw dG9yIGV4cF9kZXNjcmlwdG9yX2M7CisKK2V4dGVybiB2b2lkIGNfZW1pdF9j aGFyIChpbnQgYywgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sIGludCBxdW90ZXIpOworCiAvKiBUaGVzZSBhcmUgaW4gYy10 eXBlcHJpbnQuYzogKi8KIAogZXh0ZXJuIHZvaWQgY190eXBlX3ByaW50X2Jh c2UgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB1aV9maWxlICosIGludCwgaW50 KTsKZGlmZiAtLWdpdCBhL2dkYi9kLWxhbmcuYyBiL2dkYi9kLWxhbmcuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmY0MGJlCi0t LSAvZGV2L251bGwKKysrIGIvZ2RiL2QtbGFuZy5jCkBAIC0wLDAgKzEsMzAy IEBACisvKiBEIGxhbmd1YWdlIHN1cHBvcnQgcm91dGluZXMgZm9yIEdEQiwg dGhlIEdOVSBkZWJ1Z2dlci4KKworICAgQ29weXJpZ2h0IChDKSAyMDA1LCAy MDA2LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisKKyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpbmNsdWRlICJkZWZzLmgi CisjaW5jbHVkZSAic3ltdGFiLmgiCisjaW5jbHVkZSAibGFuZ3VhZ2UuaCIK KyNpbmNsdWRlICJkLWxhbmcuaCIKKyNpbmNsdWRlICJjLWxhbmcuaCIKKyNp bmNsdWRlICJnZGJfc3RyaW5nLmgiCisjaW5jbHVkZSAicGFyc2VyLWRlZnMu aCIKKworI2luY2x1ZGUgPGN0eXBlLmg+CisKK3N0YXRpYyBjaGFyKiBvdXRf c3RyOworc3RhdGljIGNoYXIqIG91dF9wb3M7CitzdGF0aWMgY2hhciogbWFu Z2xlZF9zdHI7CisKKy8qIEFwcGVuZCBzdHJpbmcgU1JDIHRvIHRoZSBlbmQg b2Ygc3RyaW5nIE9VVF9TVFIuCisgICBMRU4gaXMgdGhlIGxlbmd0aCBvZiBT UkMuICAqLworc3RhdGljIHZvaWQKK2FwcGVuZF9sZW4gKGNoYXIqIHNyYywg c2l6ZV90IGxlbikKK3sKKyAgaW50IHNpemUgPSBvdXRfcG9zIC0gb3V0X3N0 cjsKKworICBpZiAoc2l6ZSA8IDEwMjQpIHsKKyAgICBtZW1jcHkgKG91dF9w b3MsIHNyYywgbGVuKTsKKyAgICBvdXRfcG9zICs9IGxlbjsKKyAgfQorfQor CisvKiBBcHBlbmQgc3RyaW5nIFNSQyB0byB0aGUgZW5kIG9mIHN0cmluZyBP VVRfU1RSLiAgKi8KK3N0YXRpYyB2b2lkCithcHBlbmQgKGNoYXIqIHNyYykK K3sKKyAgYXBwZW5kX2xlbiAoc3JjLCBzdHJsZW4gKHNyYykpOworfQorCisv KiBFeHRyYWN0IGlkZW50aWZpZXJzIGZyb20gTUFOR0xFRF9TVFIgYW5kIGFw cGVuZCBpdCB0byBPVVRfU1RSLgorICAgUmV0dXJuIDEgb24gc3VjY2VzcyBv ciAwIG9uIGZhaWx1cmUuICAqLworc3RhdGljIGludAorZXh0cmFjdF9pZGVu dGlmaWVycyAoKQoreworICBsb25nIGkgPSAwOworCisgIHdoaWxlIChpc2Rp Z2l0ICgqbWFuZ2xlZF9zdHIpKQorICAgIHsKKyAgICAgIGkgPSBzdHJ0b2wg KG1hbmdsZWRfc3RyLCAmbWFuZ2xlZF9zdHIsIDEwKTsKKyAgICAgIGlmIChp IDw9IDAgICYmIHN0cmxlbiAobWFuZ2xlZF9zdHIpIDwgaSkKKyAgICAgICAg cmV0dXJuIDA7CisgICAgICBhcHBlbmRfbGVuIChtYW5nbGVkX3N0ciwgaSk7 CisgICAgICBtYW5nbGVkX3N0ciArPSBpOworICAgICAgYXBwZW5kICgiLiIp OworICAgIH0KKyAgaWYgKCptYW5nbGVkX3N0ciA9PSAnXDAnIHx8IGkgPT0g MCkKKyAgICByZXR1cm4gMDsKKyAgb3V0X3Bvcy0tOworICByZXR1cm4gMTsK K30KKworLyogRXh0cmFjdCBhbmQgZGVtYW5nbGUgdHlwZSBmcm9tIE1BTkdM RURfU1RSIGFuZCBhcHBlbmQgaXQgdG8gT1VUX1NUUi4KKyAgIFJldHVybiAx IG9uIHN1Y2Nlc3Mgb3IgMCBvbiBmYWlsdXJlLiAgKi8KK3N0YXRpYyBpbnQK K2V4dHJhY3RfdHlwZV9pbmZvICgpCit7CisgIGlmICgqbWFuZ2xlZF9zdHIg PT0gJ1wwJykKKyAgICByZXR1cm4gMDsKKyAgc3dpdGNoICgqbWFuZ2xlZF9z dHIrKykKKyAgICB7CisgICAgICBjYXNlICdBJzogLyogZHluYW1pYyBhcnJh eSAqLworICAgICAgY2FzZSAnRyc6IC8qIHN0YXRpYyBhcnJheSAqLworICAg ICAgY2FzZSAnSCc6IC8qIGFzc29jaWF0aXZlIGFycmF5ICovCisJaWYgKCFl eHRyYWN0X3R5cGVfaW5mbyAoKSkKKwkgIHJldHVybiAwOworCWFwcGVuZCAo IltdIik7CisJcmV0dXJuIDE7CisgICAgICBjYXNlICdQJzogLyogcG9pbnRl ciAqLworCWlmICghZXh0cmFjdF90eXBlX2luZm8gKCkpCisJICByZXR1cm4g MDsKKwlhcHBlbmQgKCIqIik7CisJcmV0dXJuIDE7CisgICAgICBjYXNlICdS JzogLyogcmVmZXJlbmNlICovCisJaWYgKCFleHRyYWN0X3R5cGVfaW5mbyAo KSkKKwkgIHJldHVybiAwOworCWFwcGVuZCAoIiYiKTsKKwlyZXR1cm4gMTsK KyAgICAgIGNhc2UgJ1onOiAvKiByZXR1cm4gdmFsdWUgKi8KKwlyZXR1cm4g ZXh0cmFjdF90eXBlX2luZm8gKCk7CisgICAgICBjYXNlICdKJzogLyogb3V0 ICovCisJYXBwZW5kICgib3V0ICIpOworCXJldHVybiBleHRyYWN0X3R5cGVf aW5mbyAoKTsKKyAgICAgIGNhc2UgJ0snOiAvKiBpbm91dCAqLworCWFwcGVu ZCAoImlub3V0ICIpOworCXJldHVybiBleHRyYWN0X3R5cGVfaW5mbyAoKTsK KyAgICAgIGNhc2UgJ0UnOiAvKiBlbnVtICovCisgICAgICBjYXNlICdUJzog LyogdHlwZWRlZiAqLworICAgICAgY2FzZSAnRCc6IC8qIGRlbGVnYXRlICov CisgICAgICBjYXNlICdDJzogLyogY2xhc3MgKi8KKyAgICAgIGNhc2UgJ1Mn OiAvKiBzdHJ1Y3QgKi8KKwlyZXR1cm4gZXh0cmFjdF9pZGVudGlmaWVycyAo KTsKKworICAgICAgLyogYmFzaWMgdHlwZXM6ICovCisgICAgICBjYXNlICdu JzogYXBwZW5kICgibm9uZSIpOyByZXR1cm4gMTsKKyAgICAgIGNhc2UgJ3Yn OiBhcHBlbmQgKCJ2b2lkIik7IHJldHVybiAxOworICAgICAgY2FzZSAnZyc6 IGFwcGVuZCAoImJ5dGUiKTsgcmV0dXJuIDE7CisgICAgICBjYXNlICdoJzog YXBwZW5kICgidWJ5dGUiKTsgcmV0dXJuIDE7CisgICAgICBjYXNlICdzJzog YXBwZW5kICgic2hvcnQiKTsgcmV0dXJuIDE7CisgICAgICBjYXNlICd0Jzog YXBwZW5kICgidXNob3J0Iik7IHJldHVybiAxOworICAgICAgY2FzZSAnaSc6 IGFwcGVuZCAoImludCIpOyByZXR1cm4gMTsKKyAgICAgIGNhc2UgJ2snOiBh cHBlbmQgKCJ1aW50Iik7IHJldHVybiAxOworICAgICAgY2FzZSAnbCc6IGFw cGVuZCAoImxvbmciKTsgcmV0dXJuIDE7CisgICAgICBjYXNlICdtJzogYXBw ZW5kICgidWxvbmciKTsgcmV0dXJuIDE7CisgICAgICBjYXNlICdmJzogYXBw ZW5kICgiZmxvYXQiKTsgcmV0dXJuIDE7CisgICAgICBjYXNlICdkJzogYXBw ZW5kICgiZG91YmxlIik7IHJldHVybiAxOworICAgICAgY2FzZSAnZSc6IGFw cGVuZCAoInJlYWwiKTsgcmV0dXJuIDE7CisKKyAgICAgIC8qIGltYWdpbmFy eSBhbmQgY29tcGxleDogKi8KKyAgICAgIGNhc2UgJ28nOiBhcHBlbmQgKCJp ZmxvYXQiKTsgcmV0dXJuIDE7CisgICAgICBjYXNlICdwJzogYXBwZW5kICgi aWRvdWJsZSIpOyByZXR1cm4gMTsKKyAgICAgIGNhc2UgJ2onOiBhcHBlbmQg KCJpcmVhbCIpOyByZXR1cm4gMTsKKyAgICAgIGNhc2UgJ3EnOiBhcHBlbmQg KCJjZmxvYXQiKTsgcmV0dXJuIDE7CisgICAgICBjYXNlICdyJzogYXBwZW5k ICgiY2RvdWJsZSIpOyByZXR1cm4gMTsKKyAgICAgIGNhc2UgJ2MnOiBhcHBl bmQgKCJjcmVhbCIpOyByZXR1cm4gMTsKKworICAgICAgLyogb3RoZXIgdHlw ZXM6ICovCisgICAgICBjYXNlICdiJzogYXBwZW5kICgiYml0Iik7IHJldHVy biAxOworICAgICAgY2FzZSAnYSc6IGFwcGVuZCAoImNoYXIiKTsgcmV0dXJu IDE7CisgICAgICBjYXNlICd1JzogYXBwZW5kICgid2NoYXIiKTsgcmV0dXJu IDE7CisgICAgICBjYXNlICd3JzogYXBwZW5kICgiZGNoYXIiKTsgcmV0dXJu IDE7CisKKyAgICAgIGRlZmF1bHQ6CisJYXBwZW5kICgidW5rbm93biIpOwor CXJldHVybiAxOworICAgIH0KK30KKworLyogSW1wbGVtZW50cyB0aGUgbGFf ZGVtYW5nbGUgbGFuZ3VhZ2VfZGVmbiByb3V0aW5lIGZvciBsYW5ndWFnZSBE LiAgKi8KK2NoYXIgKgorZF9kZW1hbmdsZSAoY29uc3QgY2hhciogc3ltYm9s LCBpbnQgb3B0aW9ucykKK3sKKyAgdW5zaWduZWQgY2hhciBpc19mdW5jID0g MDsKKyAgaW50IHNpemU7CisKKyAgbWFuZ2xlZF9zdHIgPSAoY2hhciAqKSBz eW1ib2w7CisKKyAgaWYgKG1hbmdsZWRfc3RyID09IE5VTEwpCisgICAgcmV0 dXJuIE5VTEw7CisgIGVsc2UgaWYgKHN0cmNtcCAobWFuZ2xlZF9zdHIsICJf RG1haW4iKSA9PSAwKQorICAgIHJldHVybiB4c3RyZHVwICgiRCBtYWluIik7 CisKKyAgb3V0X3N0ciA9IHhtYWxsb2MoMTAyNCk7CisgIG91dF9wb3MgPSBv dXRfc3RyOworCisgIGlmIChtYW5nbGVkX3N0clswXSA9PSAnXycgJiYgbWFu Z2xlZF9zdHJbMV0gPT0gJ0QnKQorICAgIHsKKyAgICAgIG1hbmdsZWRfc3Ry ICs9IDI7CisgICAgICBpc19mdW5jID0gMTsKKyAgICB9IGVsc2UgaWYgKG1h bmdsZWRfc3RyID09IHN0cnN0ciAobWFuZ2xlZF9zdHIsICJfX0NsYXNzXyIp KQorICAgICAgbWFuZ2xlZF9zdHIgKz0gODsKKyAgICBlbHNlIGlmIChtYW5n bGVkX3N0ciA9PSBzdHJzdHIgKG1hbmdsZWRfc3RyLCAiX19pbml0XyIpKQor ICAgICAgbWFuZ2xlZF9zdHIgKz0gNzsKKyAgICBlbHNlIGlmIChtYW5nbGVk X3N0ciA9PSBzdHJzdHIgKG1hbmdsZWRfc3RyLCAiX192dGJsXyIpKQorICAg ICAgbWFuZ2xlZF9zdHIgKz0gNzsKKyAgICBlbHNlIGlmIChtYW5nbGVkX3N0 ciA9PSBzdHJzdHIgKG1hbmdsZWRfc3RyLCAiX19tb2RjdG9yXyIpKQorICAg ICAgbWFuZ2xlZF9zdHIgKz0gMTA7CisgICAgZWxzZSBpZiAobWFuZ2xlZF9z dHIgPT0gc3Ryc3RyIChtYW5nbGVkX3N0ciwgIl9fbW9kZHRvcl8iKSkKKyAg ICAgIG1hbmdsZWRfc3RyICs9IDEwOworICAgIGVsc2UgaWYgKG1hbmdsZWRf c3RyID09IHN0cnN0ciAobWFuZ2xlZF9zdHIsICJfX01vZHVsZUluZm9fIikp CisgICAgICBtYW5nbGVkX3N0ciArPSAxMzsKKyAgICBlbHNlCisgICAgICB7 CisJeGZyZWUgKG91dF9zdHIpOworCXJldHVybiBOVUxMOworICAgICAgfQor ICAKKyAgaWYgKCFleHRyYWN0X2lkZW50aWZpZXJzICgpKQorICAgIHsKKyAg ICAgIHhmcmVlIChvdXRfc3RyKTsKKyAgICAgIHJldHVybiBOVUxMOworICAg IH0KKworICBhcHBlbmQgKCIoIik7CisgIGlmIChpc19mdW5jID09IDEgJiYg Km1hbmdsZWRfc3RyID09ICdGJykKKyAgICB7CisgICAgICBtYW5nbGVkX3N0 cisrOworICAgICAgd2hpbGUgKCptYW5nbGVkX3N0ciAhPSAnXDAnICYmICpt YW5nbGVkX3N0ciAhPSAnWicpCisJeworCSAgaWYgKGlzX2Z1bmMgPT0gMSkK KwkgICAgaXNfZnVuYysrOworCSAgZWxzZQorCSAgICBhcHBlbmQgKCIsICIp OworCSAgaWYgKCFleHRyYWN0X3R5cGVfaW5mbyAoKSkKKwkgICAgeworCSAg ICAgIHhmcmVlIChvdXRfc3RyKTsKKwkgICAgICByZXR1cm4gTlVMTDsKKwkg ICB9CisJfQorICAgICB9CisgIGFwcGVuZCAoIikiKTsKKworICAvKiBEb2Vz bid0IGRpc3BsYXkgdGhlIHJldHVybiB0eXBlLCBidXQgd291bGRuJ3QgYmUg dG9vIGhhcmQgdG8gZG8uICAqLworCisgIHNpemUgPSBvdXRfcG9zIC0gb3V0 X3N0cjsKKyAgb3V0X3N0cltzaXplXSA9IDA7CisgIG91dF9zdHIgPSB4cmVh bGxvYyAob3V0X3N0ciwgc2l6ZSArIDEpOworICByZXR1cm4gb3V0X3N0cjsK K30KKworLyogVGFibGUgbWFwcGluZyBvcGNvZGVzIGludG8gc3RyaW5ncyBm b3IgcHJpbnRpbmcgb3BlcmF0b3JzCisgICBhbmQgcHJlY2VkZW5jZXMgb2Yg dGhlIG9wZXJhdG9ycy4gICovCitzdGF0aWMgY29uc3Qgc3RydWN0IG9wX3By aW50IGRfb3BfcHJpbnRfdGFiW10gPQoreworICB7IiwiLCBCSU5PUF9DT01N QSwgUFJFQ19DT01NQSwgMH0sCisgIHsiPSIsIEJJTk9QX0FTU0lHTiwgUFJF Q19BU1NJR04sIDF9LAorICB7Inx8IiwgQklOT1BfTE9HSUNBTF9PUiwgUFJF Q19MT0dJQ0FMX09SLCAwfSwKKyAgeyImJiIsIEJJTk9QX0xPR0lDQUxfQU5E LCBQUkVDX0xPR0lDQUxfQU5ELCAwfSwKKyAgeyJ8IiwgQklOT1BfQklUV0lT RV9JT1IsIFBSRUNfQklUV0lTRV9JT1IsIDB9LAorICB7Il4iLCBCSU5PUF9C SVRXSVNFX1hPUiwgUFJFQ19CSVRXSVNFX1hPUiwgMH0sCisgIHsiJiIsIEJJ Tk9QX0JJVFdJU0VfQU5ELCBQUkVDX0JJVFdJU0VfQU5ELCAwfSwKKyAgeyI9 PSIsIEJJTk9QX0VRVUFMLCBQUkVDX0VRVUFMLCAwfSwKKyAgeyIhPSIsIEJJ Tk9QX05PVEVRVUFMLCBQUkVDX0VRVUFMLCAwfSwKKyAgeyI8PSIsIEJJTk9Q X0xFUSwgUFJFQ19PUkRFUiwgMH0sCisgIHsiPj0iLCBCSU5PUF9HRVEsIFBS RUNfT1JERVIsIDB9LAorICB7Ij4iLCBCSU5PUF9HVFIsIFBSRUNfT1JERVIs IDB9LAorICB7IjwiLCBCSU5PUF9MRVNTLCBQUkVDX09SREVSLCAwfSwKKyAg eyI+PiIsIEJJTk9QX1JTSCwgUFJFQ19TSElGVCwgMH0sCisgIHsiPDwiLCBC SU5PUF9MU0gsIFBSRUNfU0hJRlQsIDB9LAorICB7IisiLCBCSU5PUF9BREQs IFBSRUNfQURELCAwfSwKKyAgeyItIiwgQklOT1BfU1VCLCBQUkVDX0FERCwg MH0sCisgIHsiKiIsIEJJTk9QX01VTCwgUFJFQ19NVUwsIDB9LAorICB7Ii8i LCBCSU5PUF9ESVYsIFBSRUNfTVVMLCAwfSwKKyAgeyIlIiwgQklOT1BfUkVN LCBQUkVDX01VTCwgMH0sCisgIHsiQCIsIEJJTk9QX1JFUEVBVCwgUFJFQ19S RVBFQVQsIDB9LAorICB7Ii0iLCBVTk9QX05FRywgUFJFQ19QUkVGSVgsIDB9 LAorICB7IiEiLCBVTk9QX0xPR0lDQUxfTk9ULCBQUkVDX1BSRUZJWCwgMH0s CisgIHsifiIsIFVOT1BfQ09NUExFTUVOVCwgUFJFQ19QUkVGSVgsIDB9LAor ICB7IioiLCBVTk9QX0lORCwgUFJFQ19QUkVGSVgsIDB9LAorICB7IiYiLCBV Tk9QX0FERFIsIFBSRUNfUFJFRklYLCAwfSwKKyAgeyJzaXplb2YgIiwgVU5P UF9TSVpFT0YsIFBSRUNfUFJFRklYLCAwfSwKKyAgeyIrKyIsIFVOT1BfUFJF SU5DUkVNRU5ULCBQUkVDX1BSRUZJWCwgMH0sCisgIHsiLS0iLCBVTk9QX1BS RURFQ1JFTUVOVCwgUFJFQ19QUkVGSVgsIDB9LAorICB7TlVMTCwgMCwgMCwg MH0KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiBk X2xhbmd1YWdlX2RlZm4gPQoreworICAiZCIsCQkJLyogTGFuZ3VhZ2UgbmFt ZSAqLworICBsYW5ndWFnZV9kLAorICByYW5nZV9jaGVja19vZmYsCisgIHR5 cGVfY2hlY2tfb2ZmLAorICBjYXNlX3NlbnNpdGl2ZV9vbiwKKyAgYXJyYXlf cm93X21ham9yLAorICBtYWNyb19leHBhbnNpb25fYywKKyAgJmV4cF9kZXNj cmlwdG9yX2MsCisgIGNfcGFyc2UsCisgIGNfZXJyb3IsCisgIG51bGxfcG9z dF9wYXJzZXIsCisgIGNfcHJpbnRjaGFyLAkJLyogUHJpbnQgYSBjaGFyYWN0 ZXIgY29uc3RhbnQgKi8KKyAgY19wcmludHN0ciwJCS8qIEZ1bmN0aW9uIHRv IHByaW50IHN0cmluZyBjb25zdGFudCAqLworICBjX2VtaXRfY2hhciwJCS8q IFByaW50IGEgc2luZ2xlIGNoYXIgKi8KKyAgY19wcmludF90eXBlLAkJLyog UHJpbnQgYSB0eXBlIHVzaW5nIGFwcHJvcHJpYXRlIHN5bnRheCAqLworICBj X3ByaW50X3R5cGVkZWYsCS8qIFByaW50IGEgdHlwZWRlZiB1c2luZyBhcHBy b3ByaWF0ZSBzeW50YXggKi8KKyAgZF92YWxfcHJpbnQsCQkvKiBQcmludCBh IHZhbHVlIHVzaW5nIGFwcHJvcHJpYXRlIHN5bnRheCAqLworICBjX3ZhbHVl X3ByaW50LAkvKiBQcmludCBhIHRvcC1sZXZlbCB2YWx1ZSAqLworICBOVUxM LAkJCS8qIExhbmd1YWdlIHNwZWNpZmljIHNraXBfdHJhbXBvbGluZSAqLwor ICAidGhpcyIsCQkvKiBuYW1lX29mX3RoaXMgKi8KKyAgYmFzaWNfbG9va3Vw X3N5bWJvbF9ub25sb2NhbCwgLyogbG9va3VwX3N5bWJvbF9ub25sb2NhbCAq LworICBiYXNpY19sb29rdXBfdHJhbnNwYXJlbnRfdHlwZSwvKiBsb29rdXBf dHJhbnNwYXJlbnRfdHlwZSAqLworICBkX2RlbWFuZ2xlLAkJLyogTGFuZ3Vh Z2Ugc3BlY2lmaWMgc3ltYm9sIGRlbWFuZ2xlciAqLworICBOVUxMLAkJCS8q IExhbmd1YWdlIHNwZWNpZmljIGNsYXNzX25hbWVfZnJvbV9waHlzbmFtZSAq LworICBkX29wX3ByaW50X3RhYiwJLyogZXhwcmVzc2lvbiBvcGVyYXRvcnMg Zm9yIHByaW50aW5nICovCisgIDEsCQkJLyogYy1zdHlsZSBhcnJheXMgKi8K KyAgMCwJCQkvKiBTdHJpbmcgbG93ZXIgYm91bmQgKi8KKyAgZGVmYXVsdF93 b3JkX2JyZWFrX2NoYXJhY3RlcnMsCisgIGRlZmF1bHRfbWFrZV9zeW1ib2xf Y29tcGxldGlvbl9saXN0LAorICBjX2xhbmd1YWdlX2FyY2hfaW5mbywKKyAg ZGVmYXVsdF9wcmludF9hcnJheV9pbmRleCwKKyAgZGVmYXVsdF9wYXNzX2J5 X3JlZmVyZW5jZSwKKyAgY19nZXRfc3RyaW5nLAorICBMQU5HX01BR0lDCit9 OworCit2b2lkCitfaW5pdGlhbGl6ZV9kX2xhbmd1YWdlICh2b2lkKQorewor ICBhZGRfbGFuZ3VhZ2UgKCZkX2xhbmd1YWdlX2RlZm4pOworfQpkaWZmIC0t Z2l0IGEvZ2RiL2QtbGFuZy5oIGIvZ2RiL2QtbGFuZy5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZjJjNjYKLS0tIC9kZXYvbnVs bAorKysgYi9nZGIvZC1sYW5nLmgKQEAgLTAsMCArMSwzMSBAQAorLyogRCBs YW5ndWFnZSBzdXBwb3J0IGRlZmluaXRpb25zIGZvciBHREIsIHRoZSBHTlUg ZGVidWdnZXIuCisKKyAgIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAw OCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KworICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorCisgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLworCisjaWYgIWRlZmluZWQgKERfTEFOR19IKQor I2RlZmluZSBEX0xBTkdfSCAxCisKKyNpbmNsdWRlICJzeW10YWIuaCIKKwor ZXh0ZXJuIGNoYXIqIGRfZGVtYW5nbGUgKGNvbnN0IGNoYXIqIG1hbmdsZWQs IGludCBvcHRpb25zKTsKKworZXh0ZXJuIGludCBkX3ZhbF9wcmludCAoc3Ry dWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAorCQkJ aW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERSIGFkZHJlc3MsCisJCQlz dHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKKwkJCWNvbnN0 IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKTsKKyNlbmRp ZiAvKiAhZGVmaW5lZCAoRF9MQU5HX0gpICovCmRpZmYgLS1naXQgYS9nZGIv ZC12YWxwcmludC5jIGIvZ2RiL2QtdmFscHJpbnQuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2IzMmI3Ci0tLSAvZGV2L251bGwK KysrIGIvZ2RiL2QtdmFscHJpbnQuYwpAQCAtMCwwICsxLDkxIEBACisvKiBT dXBwb3J0IGZvciBwcmludGluZyBEIHZhbHVlcyBmb3IgR0RCLCB0aGUgR05V IGRlYnVnZ2VyLgorCisgICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIw MTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KKworI2luY2x1ZGUgImRlZnMuaCIKKyNpbmNsdWRlICJnZGJ0eXBl cy5oIgorI2luY2x1ZGUgImdkYmNvcmUuaCIKKyNpbmNsdWRlICJkLWxhbmcu aCIKKyNpbmNsdWRlICJjLWxhbmcuaCIKKworLyogQXNzdW1pbmcgdGhhdCBU WVBFIGlzIGEgVFlQRV9DT0RFX1NUUlVDVCwgdmVyaWZ5IHRoYXQgVFlQRSBp cworICAgYSBkeW5hbWljIGFycmF5LCBhbmQgdGhlbiBwcmludCBpdHMgdmFs dWUgdG8gU1RSRUFNLiAgUmV0dXJuCisgICB0aGUgbnVtYmVyIG9mIHN0cmlu ZyBjaGFyYWN0ZXJzIHByaW50ZWQsIG9yIC0xIGlmIFRZUEUgaXMgbm90Cisg ICBhIGR5bmFtaWMgYXJyYXkuICAqLworc3RhdGljIGludAorZHluYW1pY19h cnJheV90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUg KnZhbGFkZHIsCisJCSAgICBpbnQgZW1iZWRkZWRfb2Zmc2V0LCBDT1JFX0FE RFIgYWRkcmVzcywKKwkJICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGlu dCByZWN1cnNlLAorCQkgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29w dGlvbnMgKm9wdGlvbnMpCit7CisgIGlmIChUWVBFX05GSUVMRFMgKHR5cGUp ID09IDIKKyAgICAgICYmIFRZUEVfQ09ERSAoVFlQRV9GSUVMRF9UWVBFICh0 eXBlLCAwKSkgPT0gVFlQRV9DT0RFX0lOVAorICAgICAgJiYgc3RyY21wIChU WVBFX0ZJRUxEX05BTUUgKHR5cGUsIDApLCAibGVuZ3RoIikgPT0gMAorICAg ICAgJiYgc3RyY21wIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIDEpLCAicHRy IikgPT0gMCkKKyAgICB7CisgICAgICBDT1JFX0FERFIgYWRkcjsKKyAgICAg IHN0cnVjdCB0eXBlICplbHR0eXBlOworICAgICAgc3RydWN0IHR5cGUgKnRy dWVfdHlwZTsKKyAgICAgIHN0cnVjdCB0eXBlICpwdHJfdHlwZTsKKyAgICAg IHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOworICAgICAgY29uc3QgZ2RiX2J5 dGUgKnB0cmFkZHI7CisgICAgICBzdHJ1Y3QgdmFsdWUgKnZhbDsKKyAgICAg IGludCBsZW5ndGg7CisKKyAgICAgIGxlbmd0aCA9IHVucGFja19maWVsZF9h c19sb25nICh0eXBlLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCAwKTsK KworICAgICAgcHRyX3R5cGUgPSBUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIDEp OworICAgICAgZWx0dHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VU X1RZUEUgKHB0cl90eXBlKSk7CisgICAgICBhZGRyID0gdW5wYWNrX3BvaW50 ZXIgKHB0cl90eXBlLAorCQkJICAgICB2YWxhZGRyICsgVFlQRV9GSUVMRF9C SVRQT1MgKHR5cGUsIDEpIC8gOAorCQkJICAgICArIGVtYmVkZGVkX29mZnNl dCk7CisgICAgICB0cnVlX3R5cGUgPSBjaGVja190eXBlZGVmIChlbHR0eXBl KTsKKworICAgICAgdHJ1ZV90eXBlID0gbG9va3VwX2FycmF5X3JhbmdlX3R5 cGUgKHRydWVfdHlwZSwgMCwgbGVuZ3RoIC0gMSk7CisgICAgICB2YWwgPSB2 YWx1ZV9hdCAodHJ1ZV90eXBlLCBhZGRyKTsKKyAgICAgIHB0cmFkZHIgPSB2 YWx1ZV9jb250ZW50cyAodmFsKTsKKworICAgICAgcmV0dXJuIGRfdmFsX3By aW50ICh0cnVlX3R5cGUsIHB0cmFkZHIsIDAsIGFkZHIsIHN0cmVhbSwgcmVj dXJzZSArIDEsCisJCQkgIG9wdGlvbnMpOworICAgIH0KKyAgcmV0dXJuIC0x OworfQorCisvKiBJbXBsZW1lbnRzIHRoZSBsYV92YWxfcHJpbnQgcm91dGlu ZSBmb3IgbGFuZ3VhZ2UgRC4gICovCitpbnQKK2RfdmFsX3ByaW50IChzdHJ1 Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBl bWJlZGRlZF9vZmZzZXQsCisgICAgICAgICAgICAgQ09SRV9BRERSIGFkZHJl c3MsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAorICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpv cHRpb25zKQoreworICBpbnQgcmV0OworCisgIENIRUNLX1RZUEVERUYgKHR5 cGUpOworICBzd2l0Y2ggKFRZUEVfQ09ERSAodHlwZSkpCisgICAgeworICAg ICAgY2FzZSBUWVBFX0NPREVfU1RSVUNUOgorICAgICAgICByZXQgPSBkeW5h bWljX2FycmF5X3R5cGUgKHR5cGUsIHZhbGFkZHIsIGVtYmVkZGVkX29mZnNl dCwgYWRkcmVzcywKKwkJCQkgIHN0cmVhbSwgcmVjdXJzZSwgb3B0aW9ucyk7 CisJaWYgKHJldCAhPSAtMSkKKwkgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6 CisJcmV0ID0gY192YWxfcHJpbnQgKHR5cGUsIHZhbGFkZHIsIGVtYmVkZGVk X29mZnNldCwgYWRkcmVzcywgc3RyZWFtLAorCQkJICAgcmVjdXJzZSwgb3B0 aW9ucyk7CisgICAgfQorCisgIHJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQg YS9nZGIvZGVmcy5oIGIvZ2RiL2RlZnMuaAppbmRleCA1ZDI1MWI1Li4yYzE0 YzgwIDEwMDY0NAotLS0gYS9nZGIvZGVmcy5oCisrKyBiL2dkYi9kZWZzLmgK QEAgLTE4OCw2ICsxODgsNyBAQCBlbnVtIGxhbmd1YWdlCiAgICAgbGFuZ3Vh Z2VfYXV0bywJCS8qIFBsYWNlaG9sZGVyIGZvciBhdXRvbWF0aWMgc2V0dGlu ZyAqLwogICAgIGxhbmd1YWdlX2MsCQkJLyogQyAqLwogICAgIGxhbmd1YWdl X2NwbHVzLAkJLyogQysrICovCisgICAgbGFuZ3VhZ2VfZCwJCQkvKiBEICov CiAgICAgbGFuZ3VhZ2Vfb2JqYywJCS8qIE9iamVjdGl2ZS1DICovCiAgICAg bGFuZ3VhZ2VfamF2YSwJCS8qIEphdmEgKi8KICAgICBsYW5ndWFnZV9mb3J0 cmFuLAkJLyogRm9ydHJhbiAqLwpkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIu dGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KaW5kZXggNWI3OGY1MC4u ZDIwMzY0OSAxMDA2NDQKLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbworKysg Yi9nZGIvZG9jL2dkYi50ZXhpbmZvCkBAIC0yMTMsNiArMjEzLDEwIEBAIFlv dSBjYW4gdXNlIEB2YWx1ZXtHREJOfSB0byBkZWJ1ZyBwcm9ncmFtcyB3cml0 dGVuIGluIEMgYW5kIENAdHsrK30uCiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwg c2VlIEByZWZ7U3VwcG9ydGVkIExhbmd1YWdlcywsU3VwcG9ydGVkIExhbmd1 YWdlc30uCiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIEByZWZ7QywsQyBh bmQgQysrfS4KIAorQGNpbmRleCBECitTdXBwb3J0IGZvciBEIGlzIHBhcnRp YWwuICBGb3IgaW5mb3JtYXRpb24gb24gRCwgc2VlCitAcmVme0QsLER9Lgor CiBAY2luZGV4IE1vZHVsYS0yCiBTdXBwb3J0IGZvciBNb2R1bGEtMiBpcyBw YXJ0aWFsLiAgRm9yIGluZm9ybWF0aW9uIG9uIE1vZHVsYS0yLCBzZWUKIEBy ZWZ7TW9kdWxhLTIsLE1vZHVsYS0yfS4KQEAgLTEwNTU0LDYgKzEwNTU4LDkg QEAgQyBzb3VyY2UgZmlsZQogQGl0ZW14IC5jKysKIENAdHsrK30gc291cmNl IGZpbGUKIAorQGl0ZW0gLmQKK0Qgc291cmNlIGZpbGUKKwogQGl0ZW0gLm0K IE9iamVjdGl2ZS1DIHNvdXJjZSBmaWxlCiAKQEAgLTEwODMxLDcgKzEwODM4 LDcgQEAgYmVpbmcgc2V0IGF1dG9tYXRpY2FsbHkgYnkgQHZhbHVle0dEQk59 LgogQG5vZGUgU3VwcG9ydGVkIExhbmd1YWdlcwogQHNlY3Rpb24gU3VwcG9y dGVkIExhbmd1YWdlcwogCi1AdmFsdWV7R0RCTn0gc3VwcG9ydHMgQywgQ0B0 eysrfSwgT2JqZWN0aXZlLUMsIEZvcnRyYW4sIEphdmEsIFBhc2NhbCwKK0B2 YWx1ZXtHREJOfSBzdXBwb3J0cyBDLCBDQHR7Kyt9LCBELCBPYmplY3RpdmUt QywgRm9ydHJhbiwgSmF2YSwgUGFzY2FsLAogYXNzZW1ibHksIE1vZHVsYS0y LCBhbmQgQWRhLgogQGMgVGhpcyBpcyBmYWxzZSAuLi4KIFNvbWUgQHZhbHVl e0dEQk59IGZlYXR1cmVzIG1heSBiZSB1c2VkIGluIGV4cHJlc3Npb25zIHJl Z2FyZGxlc3Mgb2YgdGhlCkBAIC0xMDg1MCw2ICsxMDg1Nyw3IEBAIGxhbmd1 YWdlIHJlZmVyZW5jZSBvciB0dXRvcmlhbC4KIAogQG1lbnUKICogQzo6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgQyBhbmQgQ0B0eysrfQorKiBEOjog ICAgICAgICAgICAgICAgICAgICAgICAgICBECiAqIE9iamVjdGl2ZS1DOjog ICAgICAgICAgICAgICAgIE9iamVjdGl2ZS1DCiAqIEZvcnRyYW46OiAgICAg ICAgICAgICAgICAgICAgIEZvcnRyYW4KICogUGFzY2FsOjogICAgICAgICAg ICAgICAgICAgICAgUGFzY2FsCkBAIC0xMTM4Nyw2ICsxMTM5NSwxNCBAQCBJ biB0aGUgUG93ZXJQQyBhcmNoaXRlY3R1cmUsIEB2YWx1ZXtHREJOfSBwcm92 aWRlcyBhIHNldCBvZiBwc2V1ZG8tcmVnaXN0ZXJzCiB0byBpbnNwZWN0IEBj b2Rle19EZWNpbWFsMTI4fSB2YWx1ZXMgc3RvcmVkIGluIGZsb2F0aW5nIHBv aW50IHJlZ2lzdGVycy4KIFNlZSBAcmVme1Bvd2VyUEMsLFBvd2VyUEN9IGZv ciBtb3JlIGRldGFpbHMuCiAKK0Bub2RlIEQKK0BzdWJzZWN0aW9uIEQKKwor QGNpbmRleCBECitAdmFsdWV7R0RCTn0gY2FuIGJlIHVzZWQgdG8gZGVidWcg cHJvZ3JhbXMgd3JpdHRlbiBpbiBEIGFuZCBjb21waWxlZCB3aXRoCitHREMs IExEQyBvciBETUQuIEN1cnJlbnRseSBAdmFsdWV7R0RCTn0gc3VwcG9ydHMg b25seSBvbmUgRCBzcGVjaWZpYworZmVhdHVyZXMgLSBkeW5hbWljIGFycmF5 cy4KKwogQG5vZGUgT2JqZWN0aXZlLUMKIEBzdWJzZWN0aW9uIE9iamVjdGl2 ZS1DCiAKZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJyZWFkLmMgYi9nZGIvZHdh cmYycmVhZC5jCmluZGV4IDc2MjMwMzUuLjRlYWZkYzUgMTAwNjQ0Ci0tLSBh L2dkYi9kd2FyZjJyZWFkLmMKKysrIGIvZ2RiL2R3YXJmMnJlYWQuYwpAQCAt NzUxNSw2ICs3NTE1LDkgQEAgc2V0X2N1X2xhbmd1YWdlICh1bnNpZ25lZCBp bnQgbGFuZywgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgY2FzZSBEV19M QU5HX0NfcGx1c19wbHVzOgogICAgICAgY3UtPmxhbmd1YWdlID0gbGFuZ3Vh Z2VfY3BsdXM7CiAgICAgICBicmVhazsKKyAgICBjYXNlIERXX0xBTkdfRDoK KyAgICAgIGN1LT5sYW5ndWFnZSA9IGxhbmd1YWdlX2Q7CisgICAgICBicmVh azsKICAgICBjYXNlIERXX0xBTkdfRm9ydHJhbjc3OgogICAgIGNhc2UgRFdf TEFOR19Gb3J0cmFuOTA6CiAgICAgY2FzZSBEV19MQU5HX0ZvcnRyYW45NToK ZGlmZiAtLWdpdCBhL2dkYi9sYW5ndWFnZS5jIGIvZ2RiL2xhbmd1YWdlLmMK aW5kZXggMzUwMGE5Ny4uNmFhOGYwZSAxMDA2NDQKLS0tIGEvZ2RiL2xhbmd1 YWdlLmMKKysrIGIvZ2RiL2xhbmd1YWdlLmMKQEAgLTQ4Niw2ICs0ODYsNyBA QCBiaW5vcF9yZXN1bHRfdHlwZSAoc3RydWN0IHZhbHVlICp2MSwgc3RydWN0 IHZhbHVlICp2MikKICAgICB7CiAgICAgY2FzZSBsYW5ndWFnZV9jOgogICAg IGNhc2UgbGFuZ3VhZ2VfY3BsdXM6CisgICAgY2FzZSBsYW5ndWFnZV9kOgog ICAgIGNhc2UgbGFuZ3VhZ2Vfb2JqYzoKICAgICAgIGlmIChUWVBFX0NPREUg KHQxKSA9PSBUWVBFX0NPREVfRkxUKQogCXJldHVybiBUWVBFX0NPREUgKHQy KSA9PSBUWVBFX0NPREVfRkxUICYmIGwyID4gbDEgPwpAQCAtNTk3LDYgKzU5 OCw3IEBAIGludGVncmFsX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKQogICAg IHsKICAgICBjYXNlIGxhbmd1YWdlX2M6CiAgICAgY2FzZSBsYW5ndWFnZV9j cGx1czoKKyAgICBjYXNlIGxhbmd1YWdlX2Q6CiAgICAgY2FzZSBsYW5ndWFn ZV9vYmpjOgogICAgICAgcmV0dXJuIChUWVBFX0NPREUgKHR5cGUpICE9IFRZ UEVfQ09ERV9JTlQpICYmCiAJKFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9D T0RFX0VOVU0pID8gMCA6IDE7CkBAIC02MzcsNiArNjM5LDcgQEAgY2hhcmFj dGVyX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKQogCiAgICAgY2FzZSBsYW5n dWFnZV9jOgogICAgIGNhc2UgbGFuZ3VhZ2VfY3BsdXM6CisgICAgY2FzZSBs YW5ndWFnZV9kOgogICAgIGNhc2UgbGFuZ3VhZ2Vfb2JqYzoKICAgICAgIHJl dHVybiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfSU5UKSAmJgog CVRZUEVfTEVOR1RIICh0eXBlKSA9PSBzaXplb2YgKGNoYXIpCkBAIC02NTks NiArNjYyLDcgQEAgc3RyaW5nX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKQog CiAgICAgY2FzZSBsYW5ndWFnZV9jOgogICAgIGNhc2UgbGFuZ3VhZ2VfY3Bs dXM6CisgICAgY2FzZSBsYW5ndWFnZV9kOgogICAgIGNhc2UgbGFuZ3VhZ2Vf b2JqYzoKICAgICAgIC8qIEMgZG9lcyBub3QgaGF2ZSBkaXN0aW5jdCBzdHJp bmcgdHlwZS4gKi8KICAgICAgIHJldHVybiAoMCk7CkBAIC02NzgsNiArNjgy LDcgQEAgYm9vbGVhbl90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSkKICAgICB7 CiAgICAgY2FzZSBsYW5ndWFnZV9jOgogICAgIGNhc2UgbGFuZ3VhZ2VfY3Bs dXM6CisgICAgY2FzZSBsYW5ndWFnZV9kOgogICAgIGNhc2UgbGFuZ3VhZ2Vf b2JqYzoKICAgICAgIC8qIE1pZ2h0IGJlIG1vcmUgY2xlYW5seSBoYW5kbGVk IGJ5IGhhdmluZyBhCiAgICAgICAgICBUWVBFX0NPREVfSU5UX05PVF9CT09M IGZvciAodGhlIGRlbGV0ZWQpIENISUxMIGFuZCBzdWNoCkBAIC03MTcsNiAr NzIyLDcgQEAgc3RydWN0dXJlZF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSkK ICAgICB7CiAgICAgY2FzZSBsYW5ndWFnZV9jOgogICAgIGNhc2UgbGFuZ3Vh Z2VfY3BsdXM6CisgICAgY2FzZSBsYW5ndWFnZV9kOgogICAgIGNhc2UgbGFu Z3VhZ2Vfb2JqYzoKICAgICAgIHJldHVybiAoVFlQRV9DT0RFICh0eXBlKSA9 PSBUWVBFX0NPREVfU1RSVUNUKSB8fAogCShUWVBFX0NPREUgKHR5cGUpID09 IFRZUEVfQ09ERV9VTklPTikgfHwKZGlmZiAtLWdpdCBhL2dkYi9zeW1maWxl LmMgYi9nZGIvc3ltZmlsZS5jCmluZGV4IGNlZTg0ZGIuLjQ4ZDIzZGEgMTAw NjQ0Ci0tLSBhL2dkYi9zeW1maWxlLmMKKysrIGIvZ2RiL3N5bWZpbGUuYwpA QCAtMjUzNCw2ICsyNTM0LDcgQEAgaW5pdF9maWxlbmFtZV9sYW5ndWFnZV90 YWJsZSAodm9pZCkKICAgICAgIGZpbGVuYW1lX2xhbmd1YWdlX3RhYmxlID0K IAl4bWFsbG9jIChmbF90YWJsZV9zaXplICogc2l6ZW9mICgqZmlsZW5hbWVf bGFuZ3VhZ2VfdGFibGUpKTsKICAgICAgIGFkZF9maWxlbmFtZV9sYW5ndWFn ZSAoIi5jIiwgbGFuZ3VhZ2VfYyk7CisgICAgICBhZGRfZmlsZW5hbWVfbGFu Z3VhZ2UgKCIuZCIsIGxhbmd1YWdlX2QpOwogICAgICAgYWRkX2ZpbGVuYW1l X2xhbmd1YWdlICgiLkMiLCBsYW5ndWFnZV9jcGx1cyk7CiAgICAgICBhZGRf ZmlsZW5hbWVfbGFuZ3VhZ2UgKCIuY2MiLCBsYW5ndWFnZV9jcGx1cyk7CiAg ICAgICBhZGRfZmlsZW5hbWVfbGFuZ3VhZ2UgKCIuY3AiLCBsYW5ndWFnZV9j cGx1cyk7CmRpZmYgLS1naXQgYS9nZGIvc3ltdGFiLmMgYi9nZGIvc3ltdGFi LmMKaW5kZXggN2Y1ZGFiZC4uYmU2ZjIzYSAxMDA2NDQKLS0tIGEvZ2RiL3N5 bXRhYi5jCisrKyBiL2dkYi9zeW10YWIuYwpAQCAtMzksNiArMzksNyBAQAog I2luY2x1ZGUgInNvdXJjZS5oIgogI2luY2x1ZGUgImZpbGVuYW1lcy5oIgkJ LyogZm9yIEZJTEVOQU1FX0NNUCAqLwogI2luY2x1ZGUgIm9iamMtbGFuZy5o IgorI2luY2x1ZGUgImQtbGFuZy5oIgogI2luY2x1ZGUgImFkYS1sYW5nLmgi CiAjaW5jbHVkZSAicC1sYW5nLmgiCiAjaW5jbHVkZSAiYWRkcm1hcC5oIgpA QCAtNDEzLDYgKzQxNCw3IEBAIHN5bWJvbF9pbml0X2xhbmd1YWdlX3NwZWNp ZmljIChzdHJ1Y3QgZ2VuZXJhbF9zeW1ib2xfaW5mbyAqZ3N5bWJvbCwKIHsK ICAgZ3N5bWJvbC0+bGFuZ3VhZ2UgPSBsYW5ndWFnZTsKICAgaWYgKGdzeW1i b2wtPmxhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzCisgICAgICB8fCBnc3lt Ym9sLT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9kCiAgICAgICB8fCBnc3ltYm9s LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9qYXZhCiAgICAgICB8fCBnc3ltYm9s LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9vYmpjKQogICAgIHsKQEAgLTUxNiw2 ICs1MTgsMTYgQEAgc3ltYm9sX2ZpbmRfZGVtYW5nbGVkX25hbWUgKHN0cnVj dCBnZW5lcmFsX3N5bWJvbF9pbmZvICpnc3ltYm9sLAogCSAgcmV0dXJuIGRl bWFuZ2xlZDsKIAl9CiAgICAgfQorICBpZiAoZ3N5bWJvbC0+bGFuZ3VhZ2Ug PT0gbGFuZ3VhZ2VfZAorICAgICAgfHwgZ3N5bWJvbC0+bGFuZ3VhZ2UgPT0g bGFuZ3VhZ2VfYXV0bykKKyAgICB7CisgICAgICBkZW1hbmdsZWQgPSBkX2Rl bWFuZ2xlKG1hbmdsZWQsIDApOworICAgICAgaWYgKGRlbWFuZ2xlZCAhPSBO VUxMKQorICAgICAgICB7CisgICAgICAgICAgZ3N5bWJvbC0+bGFuZ3VhZ2Ug PSBsYW5ndWFnZV9kOworICAgICAgICAgIHJldHVybiBkZW1hbmdsZWQ7Cisg ICAgICAgIH0KKyAgICB9CiAgIHJldHVybiBOVUxMOwogfQogCkBAIC02OTMs NiArNzA1LDcgQEAgc3ltYm9sX25hdHVyYWxfbmFtZSAoY29uc3Qgc3RydWN0 IGdlbmVyYWxfc3ltYm9sX2luZm8gKmdzeW1ib2wpCiAgIHN3aXRjaCAoZ3N5 bWJvbC0+bGFuZ3VhZ2UpCiAgICAgewogICAgIGNhc2UgbGFuZ3VhZ2VfY3Bs dXM6CisgICAgY2FzZSBsYW5ndWFnZV9kOgogICAgIGNhc2UgbGFuZ3VhZ2Vf amF2YToKICAgICBjYXNlIGxhbmd1YWdlX29iamM6CiAgICAgICBpZiAoZ3N5 bWJvbC0+bGFuZ3VhZ2Vfc3BlY2lmaWMuY3BsdXNfc3BlY2lmaWMuZGVtYW5n bGVkX25hbWUgIT0gTlVMTCkKQEAgLTcxOCw2ICs3MzEsNyBAQCBzeW1ib2xf ZGVtYW5nbGVkX25hbWUgKGNvbnN0IHN0cnVjdCBnZW5lcmFsX3N5bWJvbF9p bmZvICpnc3ltYm9sKQogICBzd2l0Y2ggKGdzeW1ib2wtPmxhbmd1YWdlKQog ICAgIHsKICAgICBjYXNlIGxhbmd1YWdlX2NwbHVzOgorICAgIGNhc2UgbGFu Z3VhZ2VfZDoKICAgICBjYXNlIGxhbmd1YWdlX2phdmE6CiAgICAgY2FzZSBs YW5ndWFnZV9vYmpjOgogICAgICAgaWYgKGdzeW1ib2wtPmxhbmd1YWdlX3Nw ZWNpZmljLmNwbHVzX3NwZWNpZmljLmRlbWFuZ2xlZF9uYW1lICE9IE5VTEwp CkBAIC0xMjYzLDcgKzEyNzcsNyBAQCBsb29rdXBfc3ltYm9sX2luX2xhbmd1 YWdlIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJs b2NrLAogCiAgIG1vZGlmaWVkX25hbWUgPSBuYW1lOwogCi0gIC8qIElmIHdl IGFyZSB1c2luZyBDKysgb3IgSmF2YSwgZGVtYW5nbGUgdGhlIG5hbWUgYmVm b3JlIGRvaW5nIGEgbG9va3VwLCBzbworICAvKiBJZiB3ZSBhcmUgdXNpbmcg QysrLCBELCBvciBKYXZhLCBkZW1hbmdsZSB0aGUgbmFtZSBiZWZvcmUgZG9p bmcgYSBsb29rdXAsIHNvCiAgICAgIHdlIGNhbiBhbHdheXMgYmluYXJ5IHNl YXJjaC4gKi8KICAgaWYgKGxhbmcgPT0gbGFuZ3VhZ2VfY3BsdXMpCiAgICAg ewpAQCAtMTI4Niw2ICsxMzAwLDE2IEBAIGxvb2t1cF9zeW1ib2xfaW5fbGFu Z3VhZ2UgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHN0cnVjdCBibG9jayAq YmxvY2ssCiAJICAgIH0KIAl9CiAgICAgfQorICBlbHNlIGlmIChjdXJyZW50 X2xhbmd1YWdlLT5sYV9sYW5ndWFnZSA9PSBsYW5ndWFnZV9kKQorICAgIHsK KyAgICAgIGRlbWFuZ2xlZF9uYW1lID0gZF9kZW1hbmdsZSAobmFtZSwgMCk7 CisgICAgICBpZiAoZGVtYW5nbGVkX25hbWUpCisJeworCSAgbWFuZ2xlZF9u YW1lID0gbmFtZTsKKwkgIG1vZGlmaWVkX25hbWUgPSBkZW1hbmdsZWRfbmFt ZTsKKwkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGRlbWFuZ2xlZF9uYW1lKTsK Kwl9CisgICAgfQogICBlbHNlIGlmIChsYW5nID09IGxhbmd1YWdlX2phdmEp CiAgICAgewogICAgICAgZGVtYW5nbGVkX25hbWUgPSBjcGx1c19kZW1hbmds ZSAobmFtZSwKQEAgLTE3MzQsNiArMTc1OCw3IEBAIHN5bWJvbF9tYXRjaGVz X2RvbWFpbiAoZW51bSBsYW5ndWFnZSBzeW1ib2xfbGFuZ3VhZ2UsCiAgICAg IEEgSmF2YSBjbGFzcyBkZWNsYXJhdGlvbiBhbHNvIGRlZmluZXMgYSB0eXBl ZGVmIGZvciB0aGUgY2xhc3MuCiAgICAgIFNpbWlsYXJseSwgYW55IEFkYSB0 eXBlIGRlY2xhcmF0aW9uIGltcGxpY2l0bHkgZGVmaW5lcyBhIHR5cGVkZWYu ICAqLwogICBpZiAoc3ltYm9sX2xhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVz CisgICAgICB8fCBzeW1ib2xfbGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfZAogICAg ICAgfHwgc3ltYm9sX2xhbmd1YWdlID09IGxhbmd1YWdlX2phdmEKICAgICAg IHx8IHN5bWJvbF9sYW5ndWFnZSA9PSBsYW5ndWFnZV9hZGEpCiAgICAgewpk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9kZWZhdWx0LmV4 cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5leHAKaW5kZXgg YWI3YTg0Ni4uOGNiNGE1YyAxMDA2NDQKLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9kZWZhdWx0LmV4cAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2RlZmF1bHQuZXhwCkBAIC01MzAsNyArNTMwLDcgQEAgZ2RiX3Rlc3Qg InNldCBoaXN0b3J5IHNpemUiICJBcmd1bWVudCByZXF1aXJlZCAuaW50ZWdl ciB0byBzZXQgaXQgdG8uKiIgInNldCBoaXMKICN0ZXN0IHNldCBoaXN0b3J5 CiBnZGJfdGVzdCAic2V0IGhpc3RvcnkiICJcInNldCBoaXN0b3J5XCIgbXVz dCBiZSBmb2xsb3dlZCBieSB0aGUgbmFtZSBvZiBhIGhpc3Rvcnkgc3ViY29t bWFuZC4oXFteXHJcblxdKlxbXHJcblxdKStMaXN0IG9mIHNldCBoaXN0b3J5 IHN1YmNvbW1hbmRzOihcW15cclxuXF0qXFtcclxuXF0pK3NldCBoaXN0b3J5 IGV4cGFuc2lvbiAtLSBTZXQgaGlzdG9yeSBleHBhbnNpb24gb24gY29tbWFu ZCBpbnB1dChcW15cclxuXF0qXFtcclxuXF0pK3NldCBoaXN0b3J5IGZpbGVu YW1lIC0tIFNldCB0aGUgZmlsZW5hbWUgaW4gd2hpY2ggdG8gcmVjb3JkIHRo ZSBjb21tYW5kIGhpc3RvcnkoXFteXHJcblxdKlxbXHJcblxdKStzZXQgaGlz dG9yeSBzYXZlIC0tIFNldCBzYXZpbmcgb2YgdGhlIGhpc3RvcnkgcmVjb3Jk IG9uIGV4aXQoXFteXHJcblxdKlxbXHJcblxdKStzZXQgaGlzdG9yeSBzaXpl IC0tIFNldCB0aGUgc2l6ZSBvZiB0aGUgY29tbWFuZCBoaXN0b3J5KFxbXlxy XG5cXSpcW1xyXG5cXSkrVHlwZSBcImhlbHAgc2V0IGhpc3RvcnlcIiBmb2xs b3dlZCBieSBzZXQgaGlzdG9yeSBzdWJjb21tYW5kIG5hbWUgZm9yIGZ1bGwg ZG9jdW1lbnRhdGlvbi4oXFteXHJcblxdKlxbXHJcblxdKStDb21tYW5kIG5h bWUgYWJicmV2aWF0aW9ucyBhcmUgYWxsb3dlZCBpZiB1bmFtYmlndW91cy4i ICJzZXQgaGlzdG9yeSIKICN0ZXN0IHNldCBsYW5ndWFnZQotZ2RiX3Rlc3Qg InNldCBsYW5ndWFnZSIgIlJlcXVpcmVzIGFuIGFyZ3VtZW50LiBWYWxpZCBh cmd1bWVudHMgYXJlIGF1dG8sIGxvY2FsLCB1bmtub3duLCBhZGEsIGMsIGMu LiwgYXNtLCBtaW5pbWFsLCBmb3J0cmFuLCBvYmplY3RpdmUtYywgamF2YSwg bW9kdWxhLTIsIHBhc2NhbCwgc2NoZW1lLiIgInNldCBsYW5ndWFnZSIKK2dk Yl90ZXN0ICJzZXQgbGFuZ3VhZ2UiICJSZXF1aXJlcyBhbiBhcmd1bWVudC4g VmFsaWQgYXJndW1lbnRzIGFyZSBhdXRvLCBsb2NhbCwgdW5rbm93biwgYWRh LCBjLCBjLi4sIGFzbSwgbWluaW1hbCwgZCwgZm9ydHJhbiwgb2JqZWN0aXZl LWMsIGphdmEsIG1vZHVsYS0yLCBwYXNjYWwsIHNjaGVtZS4iICJzZXQgbGFu Z3VhZ2UiCiAjdGVzdCBzZXQgbGlzdHNpemUKIGdkYl90ZXN0ICJzZXQgbGlz dHNpemUiICJBcmd1bWVudCByZXF1aXJlZCAuaW50ZWdlciB0byBzZXQgaXQg dG8uKiIgInNldCBsaXN0c2l6ZSIKICN0ZXN0IHNldCBwcmludCAicCIgYWJi cmV2aWF0aW9uCg== --Multipart=_Wed__13_Jan_2010_06_40_26_+0200_fOD=tVpTzdZTzHP/--