From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KuWqj-00017g-07 for qemu-devel@nongnu.org; Mon, 27 Oct 2008 14:29:57 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KuWqf-00017Q-FV for qemu-devel@nongnu.org; Mon, 27 Oct 2008 14:29:56 -0400 Received: from [199.232.76.173] (port=58708 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KuWqf-00017H-Ar for qemu-devel@nongnu.org; Mon, 27 Oct 2008 14:29:53 -0400 Received: from wr-out-0506.google.com ([64.233.184.228]:29995) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KuWqc-0008Ql-IM for qemu-devel@nongnu.org; Mon, 27 Oct 2008 14:29:52 -0400 Received: by wr-out-0506.google.com with SMTP id c46so646332wra.18 for ; Mon, 27 Oct 2008 11:29:49 -0700 (PDT) Message-ID: Date: Mon, 27 Oct 2008 20:29:48 +0200 From: "Blue Swirl" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_40349_33374812.1225132188753" Subject: [Qemu-devel] [PATCH, RFT] Update i386-dis.c from binutils 2.17 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" ------=_Part_40349_33374812.1225132188753 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, This very lightly tested patch updates i386-dis.c from binutils 2.17. If someone can test it more thoroughly and declare that the patch is useful and it does not break anything, I may apply it. ------=_Part_40349_33374812.1225132188753 Content-Type: plain/text; name=update_i386_dis_binutils_2.17.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_fmtfxwcu Content-Disposition: attachment; filename=update_i386_dis_binutils_2.17.diff SW5kZXg6IHFlbXUvaTM4Ni1kaXMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaTM4Ni1kaXMu YwkyMDA4LTEwLTI3IDE3OjM4OjQ0LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9pMzg2LWRpcy5j CTIwMDgtMTAtMjcgMTg6MTM6MjkuMDAwMDAwMDAwICswMDAwCkBAIC0xLDQ1ICsxLDQxIEBACiAv KiBQcmludCBpMzg2IGluc3RydWN0aW9ucyBmb3IgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogICAg Q29weXJpZ2h0IDE5ODgsIDE5ODksIDE5OTEsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcs IDE5OTgsIDE5OTksCi0gICAyMDAxCi0gICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KyAgIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCiAKLVRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKyAgIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIEdEQi4KIAotVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLWl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci10aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi1idXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLWFsb25n IHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi1G b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEg MDIxMTEtMTMwNywgVVNBLiAgKi8KLQotLyoKLSAqIDgwMzg2IGluc3RydWN0aW9uIHByaW50ZXIg YnkgUGFjZSBXaWxsaXNzb24gKHBhY2VAcHJlcC5haS5taXQuZWR1KQotICogSnVseSAxOTg4Ci0g KiAgbW9kaWZpZWQgYnkgSm9obiBIYXNzZXkgKGhhc3NleUBkZy1ydHAuZGcuY29tKQotICogIHg4 Ni02NCBzdXBwb3J0IGFkZGVkIGJ5IEphbiBIdWJpY2thIChqaEBzdXNlLmN6KQotICovCi0KLS8q Ci0gKiBUaGUgbWFpbiB0YWJsZXMgZGVzY3JpYmluZyB0aGUgaW5zdHJ1Y3Rpb25zIGlzIGVzc2Vu dGlhbGx5IGEgY29weQotICogb2YgdGhlICJPcGNvZGUgTWFwIiBjaGFwdGVyIChBcHBlbmRpeCBB KSBvZiB0aGUgSW50ZWwgODAzODYKLSAqIFByb2dyYW1tZXJzIE1hbnVhbC4gIFVzdWFsbHksIHRo ZXJlIGlzIGEgY2FwaXRhbCBsZXR0ZXIsIGZvbGxvd2VkCi0gKiBieSBhIHNtYWxsIGxldHRlci4g IFRoZSBjYXBpdGFsIGxldHRlciB0ZWxsIHRoZSBhZGRyZXNzaW5nIG1vZGUsCi0gKiBhbmQgdGhl IHNtYWxsIGxldHRlciB0ZWxscyBhYm91dCB0aGUgb3BlcmFuZCBzaXplLiAgUmVmZXIgdG8KLSAq IHRoZSBJbnRlbCBtYW51YWwgZm9yIGRldGFpbHMuCi0gKi8KKyAgIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAg Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0IC0gRmlmdGggRmxvb3IsIEJvc3Rv biwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KKworLyogODAzODYgaW5zdHJ1Y3Rpb24gcHJpbnRl ciBieSBQYWNlIFdpbGxpc3NvbiAocGFjZUBwcmVwLmFpLm1pdC5lZHUpCisgICBKdWx5IDE5ODgK KyAgICBtb2RpZmllZCBieSBKb2huIEhhc3NleSAoaGFzc2V5QGRnLXJ0cC5kZy5jb20pCisgICAg eDg2LTY0IHN1cHBvcnQgYWRkZWQgYnkgSmFuIEh1Ymlja2EgKGpoQHN1c2UuY3opCisgICAgVklB IFBhZExvY2sgc3VwcG9ydCBieSBNaWNoYWwgTHVkdmlnIChtbHVkdmlnQHN1c2UuY3opLiAgKi8K KworLyogVGhlIG1haW4gdGFibGVzIGRlc2NyaWJpbmcgdGhlIGluc3RydWN0aW9ucyBpcyBlc3Nl bnRpYWxseSBhIGNvcHkKKyAgIG9mIHRoZSAiT3Bjb2RlIE1hcCIgY2hhcHRlciAoQXBwZW5kaXgg QSkgb2YgdGhlIEludGVsIDgwMzg2CisgICBQcm9ncmFtbWVycyBNYW51YWwuICBVc3VhbGx5LCB0 aGVyZSBpcyBhIGNhcGl0YWwgbGV0dGVyLCBmb2xsb3dlZAorICAgYnkgYSBzbWFsbCBsZXR0ZXIu ICBUaGUgY2FwaXRhbCBsZXR0ZXIgdGVsbCB0aGUgYWRkcmVzc2luZyBtb2RlLAorICAgYW5kIHRo ZSBzbWFsbCBsZXR0ZXIgdGVsbHMgYWJvdXQgdGhlIG9wZXJhbmQgc2l6ZS4gIFJlZmVyIHRvCisg ICB0aGUgSW50ZWwgbWFudWFsIGZvciBkZXRhaWxzLiAgKi8KIAogI2luY2x1ZGUgPHN0ZGxpYi5o PgogI2luY2x1ZGUgImRpcy1hc20uaCIKICNpbmNsdWRlICJxZW11LWNvbW1vbi5oIgogCi0jZGVm aW5lIE1BWExFTiAyMAorI2RlZmluZSBNQVhMRU4gMTUKIAogI2luY2x1ZGUgPHNldGptcC5oPgog CkBAIC00OSw1MyArNDUsNjMgQEAKICNkZWZpbmUgVU5JWFdBUkVfQ09NUEFUIDEKICNlbmRpZgog Ci1zdGF0aWMgaW50IGZldGNoX2RhdGEgUEFSQU1TICgoc3RydWN0IGRpc2Fzc2VtYmxlX2luZm8g KiwgYmZkX2J5dGUgKikpOwotc3RhdGljIHZvaWQgY2twcmVmaXggUEFSQU1TICgodm9pZCkpOwot c3RhdGljIGNvbnN0IGNoYXIgKnByZWZpeF9uYW1lIFBBUkFNUyAoKGludCwgaW50KSk7Ci1zdGF0 aWMgaW50IHByaW50X2luc24gUEFSQU1TICgoYmZkX3ZtYSwgZGlzYXNzZW1ibGVfaW5mbyAqKSk7 Ci1zdGF0aWMgdm9pZCBkb2Zsb2F0IFBBUkFNUyAoKGludCkpOwotc3RhdGljIHZvaWQgT1BfU1Qg UEFSQU1TICgoaW50LCBpbnQpKTsKLXN0YXRpYyB2b2lkIE9QX1NUaSAgUEFSQU1TICgoaW50LCBp bnQpKTsKLXN0YXRpYyBpbnQgcHV0b3AgUEFSQU1TICgoY29uc3QgY2hhciAqLCBpbnQpKTsKLXN0 YXRpYyB2b2lkIG9hcHBlbmQgUEFSQU1TICgoY29uc3QgY2hhciAqKSk7Ci1zdGF0aWMgdm9pZCBh cHBlbmRfc2VnIFBBUkFNUyAoKHZvaWQpKTsKLXN0YXRpYyB2b2lkIE9QX2luZGlyRSBQQVJBTVMg KChpbnQsIGludCkpOwotc3RhdGljIHZvaWQgcHJpbnRfb3BlcmFuZF92YWx1ZSAoY2hhciAqYnVm LCBzaXplX3QgYnVmc2l6ZSwgaW50IGhleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJmZF92bWEgZGlzcCk7Ci1zdGF0aWMgdm9pZCBPUF9FIFBBUkFNUyAoKGludCwgaW50KSk7 Ci1zdGF0aWMgdm9pZCBPUF9HIFBBUkFNUyAoKGludCwgaW50KSk7Ci1zdGF0aWMgYmZkX3ZtYSBn ZXQ2NCBQQVJBTVMgKCh2b2lkKSk7Ci1zdGF0aWMgYmZkX3NpZ25lZF92bWEgZ2V0MzIgUEFSQU1T ICgodm9pZCkpOwotc3RhdGljIGJmZF9zaWduZWRfdm1hIGdldDMycyBQQVJBTVMgKCh2b2lkKSk7 Ci1zdGF0aWMgaW50IGdldDE2IFBBUkFNUyAoKHZvaWQpKTsKLXN0YXRpYyB2b2lkIHNldF9vcCBQ QVJBTVMgKChiZmRfdm1hLCBpbnQpKTsKLXN0YXRpYyB2b2lkIE9QX1JFRyBQQVJBTVMgKChpbnQs IGludCkpOwotc3RhdGljIHZvaWQgT1BfSU1SRUcgUEFSQU1TICgoaW50LCBpbnQpKTsKLXN0YXRp YyB2b2lkIE9QX0kgUEFSQU1TICgoaW50LCBpbnQpKTsKLXN0YXRpYyB2b2lkIE9QX0k2NCBQQVJB TVMgKChpbnQsIGludCkpOwotc3RhdGljIHZvaWQgT1Bfc0kgUEFSQU1TICgoaW50LCBpbnQpKTsK LXN0YXRpYyB2b2lkIE9QX0ogUEFSQU1TICgoaW50LCBpbnQpKTsKLXN0YXRpYyB2b2lkIE9QX1NF RyBQQVJBTVMgKChpbnQsIGludCkpOwotc3RhdGljIHZvaWQgT1BfRElSIFBBUkFNUyAoKGludCwg aW50KSk7Ci1zdGF0aWMgdm9pZCBPUF9PRkYgUEFSQU1TICgoaW50LCBpbnQpKTsKLXN0YXRpYyB2 b2lkIE9QX09GRjY0IFBBUkFNUyAoKGludCwgaW50KSk7Ci1zdGF0aWMgdm9pZCBwdHJfcmVnIFBB UkFNUyAoKGludCwgaW50KSk7Ci1zdGF0aWMgdm9pZCBPUF9FU3JlZyBQQVJBTVMgKChpbnQsIGlu dCkpOwotc3RhdGljIHZvaWQgT1BfRFNyZWcgUEFSQU1TICgoaW50LCBpbnQpKTsKLXN0YXRpYyB2 b2lkIE9QX0MgUEFSQU1TICgoaW50LCBpbnQpKTsKLXN0YXRpYyB2b2lkIE9QX0QgUEFSQU1TICgo aW50LCBpbnQpKTsKLXN0YXRpYyB2b2lkIE9QX1QgUEFSQU1TICgoaW50LCBpbnQpKTsKLXN0YXRp YyB2b2lkIE9QX1JkIFBBUkFNUyAoKGludCwgaW50KSk7Ci1zdGF0aWMgdm9pZCBPUF9NTVggUEFS QU1TICgoaW50LCBpbnQpKTsKLXN0YXRpYyB2b2lkIE9QX1hNTSBQQVJBTVMgKChpbnQsIGludCkp Owotc3RhdGljIHZvaWQgT1BfRU0gUEFSQU1TICgoaW50LCBpbnQpKTsKLXN0YXRpYyB2b2lkIE9Q X0VYIFBBUkFNUyAoKGludCwgaW50KSk7Ci1zdGF0aWMgdm9pZCBPUF9NUyBQQVJBTVMgKChpbnQs IGludCkpOwotc3RhdGljIHZvaWQgT1BfWFMgUEFSQU1TICgoaW50LCBpbnQpKTsKLXN0YXRpYyB2 b2lkIE9QXzNETm93U3VmZml4IFBBUkFNUyAoKGludCwgaW50KSk7Ci1zdGF0aWMgdm9pZCBPUF9T SU1EX1N1ZmZpeCBQQVJBTVMgKChpbnQsIGludCkpOwotc3RhdGljIHZvaWQgU0lNRF9GaXh1cCBQ QVJBTVMgKChpbnQsIGludCkpOwotc3RhdGljIHZvaWQgQmFkT3AgUEFSQU1TICgodm9pZCkpOwor c3RhdGljIGludCBmZXRjaF9kYXRhIChzdHJ1Y3QgZGlzYXNzZW1ibGVfaW5mbyAqLCBiZmRfYnl0 ZSAqKTsKK3N0YXRpYyB2b2lkIGNrcHJlZml4ICh2b2lkKTsKK3N0YXRpYyBjb25zdCBjaGFyICpw cmVmaXhfbmFtZSAoaW50LCBpbnQpOworc3RhdGljIGludCBwcmludF9pbnNuIChiZmRfdm1hLCBk aXNhc3NlbWJsZV9pbmZvICopOworc3RhdGljIHZvaWQgZG9mbG9hdCAoaW50KTsKK3N0YXRpYyB2 b2lkIE9QX1NUIChpbnQsIGludCk7CitzdGF0aWMgdm9pZCBPUF9TVGkgKGludCwgaW50KTsKK3N0 YXRpYyBpbnQgcHV0b3AgKGNvbnN0IGNoYXIgKiwgaW50KTsKK3N0YXRpYyB2b2lkIG9hcHBlbmQg KGNvbnN0IGNoYXIgKik7CitzdGF0aWMgdm9pZCBhcHBlbmRfc2VnICh2b2lkKTsKK3N0YXRpYyB2 b2lkIE9QX2luZGlyRSAoaW50LCBpbnQpOworc3RhdGljIHZvaWQgcHJpbnRfb3BlcmFuZF92YWx1 ZSAoY2hhciAqYnVmLCBzaXplX3QgYnVmc2l6ZSwgaW50IGhleCwgYmZkX3ZtYSBkaXNwKTsKK3N0 YXRpYyB2b2lkIE9QX0UgKGludCwgaW50KTsKK3N0YXRpYyB2b2lkIE9QX0cgKGludCwgaW50KTsK K3N0YXRpYyBiZmRfdm1hIGdldDY0ICh2b2lkKTsKK3N0YXRpYyBiZmRfc2lnbmVkX3ZtYSBnZXQz MiAodm9pZCk7CitzdGF0aWMgYmZkX3NpZ25lZF92bWEgZ2V0MzJzICh2b2lkKTsKK3N0YXRpYyBp bnQgZ2V0MTYgKHZvaWQpOworc3RhdGljIHZvaWQgc2V0X29wIChiZmRfdm1hLCBpbnQpOworc3Rh dGljIHZvaWQgT1BfUkVHIChpbnQsIGludCk7CitzdGF0aWMgdm9pZCBPUF9JTVJFRyAoaW50LCBp bnQpOworc3RhdGljIHZvaWQgT1BfSSAoaW50LCBpbnQpOworc3RhdGljIHZvaWQgT1BfSTY0IChp bnQsIGludCk7CitzdGF0aWMgdm9pZCBPUF9zSSAoaW50LCBpbnQpOworc3RhdGljIHZvaWQgT1Bf SiAoaW50LCBpbnQpOworc3RhdGljIHZvaWQgT1BfU0VHIChpbnQsIGludCk7CitzdGF0aWMgdm9p ZCBPUF9ESVIgKGludCwgaW50KTsKK3N0YXRpYyB2b2lkIE9QX09GRiAoaW50LCBpbnQpOworc3Rh dGljIHZvaWQgT1BfT0ZGNjQgKGludCwgaW50KTsKK3N0YXRpYyB2b2lkIHB0cl9yZWcgKGludCwg aW50KTsKK3N0YXRpYyB2b2lkIE9QX0VTcmVnIChpbnQsIGludCk7CitzdGF0aWMgdm9pZCBPUF9E U3JlZyAoaW50LCBpbnQpOworc3RhdGljIHZvaWQgT1BfQyAoaW50LCBpbnQpOworc3RhdGljIHZv aWQgT1BfRCAoaW50LCBpbnQpOworc3RhdGljIHZvaWQgT1BfVCAoaW50LCBpbnQpOworc3RhdGlj IHZvaWQgT1BfUmQgKGludCwgaW50KTsKK3N0YXRpYyB2b2lkIE9QX01NWCAoaW50LCBpbnQpOwor c3RhdGljIHZvaWQgT1BfWE1NIChpbnQsIGludCk7CitzdGF0aWMgdm9pZCBPUF9FTSAoaW50LCBp bnQpOworc3RhdGljIHZvaWQgT1BfRVggKGludCwgaW50KTsKK3N0YXRpYyB2b2lkIE9QX01TIChp bnQsIGludCk7CitzdGF0aWMgdm9pZCBPUF9YUyAoaW50LCBpbnQpOworc3RhdGljIHZvaWQgT1Bf TSAoaW50LCBpbnQpOworc3RhdGljIHZvaWQgT1BfVk1YIChpbnQsIGludCk7CitzdGF0aWMgdm9p ZCBPUF8wZmFlIChpbnQsIGludCk7CitzdGF0aWMgdm9pZCBPUF8wZjA3IChpbnQsIGludCk7Citz dGF0aWMgdm9pZCBOT1BfRml4dXAgKGludCwgaW50KTsKK3N0YXRpYyB2b2lkIE9QXzNETm93U3Vm Zml4IChpbnQsIGludCk7CitzdGF0aWMgdm9pZCBPUF9TSU1EX1N1ZmZpeCAoaW50LCBpbnQpOwor c3RhdGljIHZvaWQgU0lNRF9GaXh1cCAoaW50LCBpbnQpOworc3RhdGljIHZvaWQgUE5JX0ZpeHVw IChpbnQsIGludCk7CitzdGF0aWMgdm9pZCBTVk1FX0ZpeHVwIChpbnQsIGludCk7CitzdGF0aWMg dm9pZCBJTlZMUEdfRml4dXAgKGludCwgaW50KTsKK3N0YXRpYyB2b2lkIEJhZE9wICh2b2lkKTsK K3N0YXRpYyB2b2lkIFNFR19GaXh1cCAoaW50LCBpbnQpOworc3RhdGljIHZvaWQgVk1YX0ZpeHVw IChpbnQsIGludCk7CitzdGF0aWMgdm9pZCBSRVBfRml4dXAgKGludCwgaW50KTsKIAogc3RydWN0 IGRpc19wcml2YXRlIHsKICAgLyogUG9pbnRzIHRvIGZpcnN0IGJ5dGUgbm90IGZldGNoZWQuICAq LwpAQCAtMTEwLDggKzExNiwxNCBAQAogICAgd2hlbiB3ZSBjYW4uICAqLwogI2RlZmluZSBGV0FJ VF9PUENPREUgKDB4OWIpCiAKLS8qIFNldCB0byAxIGZvciA2NGJpdCBtb2RlIGRpc2Fzc2VtYmx5 LiAgKi8KLXN0YXRpYyBpbnQgbW9kZV82NGJpdDsKK2VudW0gYWRkcmVzc19tb2RlCit7CisgIG1v ZGVfMTZiaXQsCisgIG1vZGVfMzJiaXQsCisgIG1vZGVfNjRiaXQKK307CisKK3N0YXRpYyBlbnVt IGFkZHJlc3NfbW9kZSBhZGRyZXNzX21vZGU7CiAKIC8qIEZsYWdzIGZvciB0aGUgcHJlZml4ZXMg Zm9yIHRoZSBjdXJyZW50IGluc3RydWN0aW9uLiAgU2VlIGJlbG93LiAgKi8KIHN0YXRpYyBpbnQg cHJlZml4ZXM7CkBAIC0xNjIsMjQgKzE3NCwyNSBAQAogICAgPyAxIDogZmV0Y2hfZGF0YSAoKGlu Zm8pLCAoYWRkcikpKQogCiBzdGF0aWMgaW50Ci1mZXRjaF9kYXRhIChpbmZvLCBhZGRyKQotICAg ICBzdHJ1Y3QgZGlzYXNzZW1ibGVfaW5mbyAqaW5mbzsKLSAgICAgYmZkX2J5dGUgKmFkZHI7Citm ZXRjaF9kYXRhIChzdHJ1Y3QgZGlzYXNzZW1ibGVfaW5mbyAqaW5mbywgYmZkX2J5dGUgKmFkZHIp CiB7CiAgIGludCBzdGF0dXM7CiAgIHN0cnVjdCBkaXNfcHJpdmF0ZSAqcHJpdiA9IChzdHJ1Y3Qg ZGlzX3ByaXZhdGUgKikgaW5mby0+cHJpdmF0ZV9kYXRhOwogICBiZmRfdm1hIHN0YXJ0ID0gcHJp di0+aW5zbl9zdGFydCArIChwcml2LT5tYXhfZmV0Y2hlZCAtIHByaXYtPnRoZV9idWZmZXIpOwog Ci0gIHN0YXR1cyA9ICgqaW5mby0+cmVhZF9tZW1vcnlfZnVuYykgKHN0YXJ0LAotCQkJCSAgICAg IHByaXYtPm1heF9mZXRjaGVkLAotCQkJCSAgICAgIGFkZHIgLSBwcml2LT5tYXhfZmV0Y2hlZCwK LQkJCQkgICAgICBpbmZvKTsKKyAgaWYgKGFkZHIgPD0gcHJpdi0+dGhlX2J1ZmZlciArIE1BWExF TikKKyAgICBzdGF0dXMgPSAoKmluZm8tPnJlYWRfbWVtb3J5X2Z1bmMpIChzdGFydCwKKwkJCQkJ cHJpdi0+bWF4X2ZldGNoZWQsCisJCQkJCWFkZHIgLSBwcml2LT5tYXhfZmV0Y2hlZCwKKwkJCQkJ aW5mbyk7CisgIGVsc2UKKyAgICBzdGF0dXMgPSAtMTsKICAgaWYgKHN0YXR1cyAhPSAwKQogICAg IHsKICAgICAgIC8qIElmIHdlIGRpZCBtYW5hZ2UgdG8gcmVhZCBhdCBsZWFzdCBvbmUgYnl0ZSwg dGhlbgotICAgICAgICAgcHJpbnRfaW5zbl9pMzg2IHdpbGwgZG8gc29tZXRoaW5nIHNlbnNpYmxl LiAgT3RoZXJ3aXNlLCBwcmludAotICAgICAgICAgYW4gZXJyb3IuICBXZSBkbyB0aGF0IGhlcmUg YmVjYXVzZSB0aGlzIGlzIHdoZXJlIHdlIGtub3cKLSAgICAgICAgIFNUQVRVUy4gICovCisJIHBy aW50X2luc25faTM4NiB3aWxsIGRvIHNvbWV0aGluZyBzZW5zaWJsZS4gIE90aGVyd2lzZSwgcHJp bnQKKwkgYW4gZXJyb3IuICBXZSBkbyB0aGF0IGhlcmUgYmVjYXVzZSB0aGlzIGlzIHdoZXJlIHdl IGtub3cKKwkgU1RBVFVTLiAgKi8KICAgICAgIGlmIChwcml2LT5tYXhfZmV0Y2hlZCA9PSBwcml2 LT50aGVfYnVmZmVyKQogCSgqaW5mby0+bWVtb3J5X2Vycm9yX2Z1bmMpIChzdGF0dXMsIHN0YXJ0 LCBpbmZvKTsKICAgICAgIGxvbmdqbXAgKHByaXYtPmJhaWxvdXQsIDEpOwpAQCAtMTk0LDE1ICsy MDcsMjIgQEAKICNkZWZpbmUgRWIgT1BfRSwgYl9tb2RlCiAjZGVmaW5lIEV2IE9QX0UsIHZfbW9k ZQogI2RlZmluZSBFZCBPUF9FLCBkX21vZGUKLSNkZWZpbmUgaW5kaXJFYiBPUF9pbmRpckUsIGJf bW9kZQotI2RlZmluZSBpbmRpckV2IE9QX2luZGlyRSwgdl9tb2RlCisjZGVmaW5lIEVxIE9QX0Us IHFfbW9kZQorI2RlZmluZSBFZHEgT1BfRSwgZHFfbW9kZQorI2RlZmluZSBFZHF3IE9QX0UsIGRx d19tb2RlCisjZGVmaW5lIGluZGlyRXYgT1BfaW5kaXJFLCBzdGFja192X21vZGUKKyNkZWZpbmUg aW5kaXJFcCBPUF9pbmRpckUsIGZfbW9kZQorI2RlZmluZSBzdGFja0V2IE9QX0UsIHN0YWNrX3Zf bW9kZQorI2RlZmluZSBFbSBPUF9FLCBtX21vZGUKICNkZWZpbmUgRXcgT1BfRSwgd19tb2RlCiAj ZGVmaW5lIE1hIE9QX0UsIHZfbW9kZQotI2RlZmluZSBNIE9QX0UsIDAJCS8qIGxlYSwgbGdkdCwg ZXRjLiAqLwotI2RlZmluZSBNcCBPUF9FLCAwCQkvKiAzMiBvciA0OCBiaXQgbWVtb3J5IG9wZXJh bmQgZm9yIExEUywgTEVTIGV0YyAqLworI2RlZmluZSBNIE9QX00sIDAJCS8qIGxlYSwgbGdkdCwg ZXRjLiAqLworI2RlZmluZSBNcCBPUF9NLCBmX21vZGUJCS8qIDMyIG9yIDQ4IGJpdCBtZW1vcnkg b3BlcmFuZCBmb3IgTERTLCBMRVMgZXRjICovCiAjZGVmaW5lIEdiIE9QX0csIGJfbW9kZQogI2Rl ZmluZSBHdiBPUF9HLCB2X21vZGUKICNkZWZpbmUgR2QgT1BfRywgZF9tb2RlCisjZGVmaW5lIEdk cSBPUF9HLCBkcV9tb2RlCisjZGVmaW5lIEdtIE9QX0csIG1fbW9kZQogI2RlZmluZSBHdyBPUF9H LCB3X21vZGUKICNkZWZpbmUgUmQgT1BfUmQsIGRfbW9kZQogI2RlZmluZSBSbSBPUF9SZCwgbV9t b2RlCkBAIC0yMTIsMTEgKzIzMiwxMyBAQAogI2RlZmluZSBJcSBPUF9JLCBxX21vZGUKICNkZWZp bmUgSXY2NCBPUF9JNjQsIHZfbW9kZQogI2RlZmluZSBJdyBPUF9JLCB3X21vZGUKKyNkZWZpbmUg STEgT1BfSSwgY29uc3RfMV9tb2RlCiAjZGVmaW5lIEpiIE9QX0osIGJfbW9kZQogI2RlZmluZSBK diBPUF9KLCB2X21vZGUKICNkZWZpbmUgQ20gT1BfQywgbV9tb2RlCiAjZGVmaW5lIERtIE9QX0Qs IG1fbW9kZQogI2RlZmluZSBUZCBPUF9ULCBkX21vZGUKKyNkZWZpbmUgU3YgU0VHX0ZpeHVwLCB2 X21vZGUKIAogI2RlZmluZSBSTWVBWCBPUF9SRUcsIGVBWF9yZWcKICNkZWZpbmUgUk1lQlggT1Bf UkVHLCBlQlhfcmVnCkBAIC0yNTUsNyArMjc3LDYgQEAKICNkZWZpbmUgZVNJIE9QX0lNUkVHLCBl U0lfcmVnCiAjZGVmaW5lIGVESSBPUF9JTVJFRywgZURJX3JlZwogI2RlZmluZSBBTCBPUF9JTVJF RywgYWxfcmVnCi0jZGVmaW5lIEFMIE9QX0lNUkVHLCBhbF9yZWcKICNkZWZpbmUgQ0wgT1BfSU1S RUcsIGNsX3JlZwogI2RlZmluZSBETCBPUF9JTVJFRywgZGxfcmVnCiAjZGVmaW5lIEJMIE9QX0lN UkVHLCBibF9yZWcKQEAgLTI2OSwxMCArMjkwLDggQEAKIAogI2RlZmluZSBTdyBPUF9TRUcsIHdf bW9kZQogI2RlZmluZSBBcCBPUF9ESVIsIDAKLSNkZWZpbmUgT2IgT1BfT0ZGLCBiX21vZGUKLSNk ZWZpbmUgT2I2NCBPUF9PRkY2NCwgYl9tb2RlCi0jZGVmaW5lIE92IE9QX09GRiwgdl9tb2RlCi0j ZGVmaW5lIE92NjQgT1BfT0ZGNjQsIHZfbW9kZQorI2RlZmluZSBPYiBPUF9PRkY2NCwgYl9tb2Rl CisjZGVmaW5lIE92IE9QX09GRjY0LCB2X21vZGUKICNkZWZpbmUgWGIgT1BfRFNyZWcsIGVTSV9y ZWcKICNkZWZpbmUgWHYgT1BfRFNyZWcsIGVTSV9yZWcKICNkZWZpbmUgWWIgT1BfRVNyZWcsIGVE SV9yZWcKQEAgLTI5MiwxMCArMzExLDE5IEBACiAjZGVmaW5lIEVYIE9QX0VYLCB2X21vZGUKICNk ZWZpbmUgTVMgT1BfTVMsIHZfbW9kZQogI2RlZmluZSBYUyBPUF9YUywgdl9tb2RlCi0jZGVmaW5l IE5vbmUgT1BfRSwgMAorI2RlZmluZSBWTSBPUF9WTVgsIHFfbW9kZQogI2RlZmluZSBPUFNVRiBP UF8zRE5vd1N1ZmZpeCwgMAogI2RlZmluZSBPUFNJTUQgT1BfU0lNRF9TdWZmaXgsIDAKIAorLyog VXNlZCBoYW5kbGUgInJlcCIgcHJlZml4IGZvciBzdHJpbmcgaW5zdHJ1Y3Rpb25zLiAgKi8KKyNk ZWZpbmUgWGJyIFJFUF9GaXh1cCwgZVNJX3JlZworI2RlZmluZSBYdnIgUkVQX0ZpeHVwLCBlU0lf cmVnCisjZGVmaW5lIFliciBSRVBfRml4dXAsIGVESV9yZWcKKyNkZWZpbmUgWXZyIFJFUF9GaXh1 cCwgZURJX3JlZworI2RlZmluZSBpbmRpckRYciBSRVBfRml4dXAsIGluZGlyX2R4X3JlZworI2Rl ZmluZSBBTHIgUkVQX0ZpeHVwLCBhbF9yZWcKKyNkZWZpbmUgZUFYciBSRVBfRml4dXAsIGVBWF9y ZWcKKwogI2RlZmluZSBjb25kX2p1bXBfZmxhZyBOVUxMLCBjb25kX2p1bXBfbW9kZQogI2RlZmlu ZSBsb29wX2pjeHpfZmxhZyBOVUxMLCBsb29wX2pjeHpfbW9kZQogCkBAIC0zMDksMTAgKzMzNywx NiBAQAogI2RlZmluZSB3X21vZGUgMyAgLyogd29yZCBvcGVyYW5kICovCiAjZGVmaW5lIGRfbW9k ZSA0ICAvKiBkb3VibGUgd29yZCBvcGVyYW5kICAqLwogI2RlZmluZSBxX21vZGUgNSAgLyogcXVh ZCB3b3JkIG9wZXJhbmQgKi8KLSNkZWZpbmUgeF9tb2RlIDYKLSNkZWZpbmUgbV9tb2RlIDcgIC8q IGRfbW9kZSBpbiAzMmJpdCwgcV9tb2RlIGluIDY0Yml0IG1vZGUuICAqLwotI2RlZmluZSBjb25k X2p1bXBfbW9kZSA4Ci0jZGVmaW5lIGxvb3BfamN4el9tb2RlIDkKKyNkZWZpbmUgdF9tb2RlIDYg IC8qIHRlbi1ieXRlIG9wZXJhbmQgKi8KKyNkZWZpbmUgeF9tb2RlIDcgIC8qIDE2LWJ5dGUgWE1N IG9wZXJhbmQgKi8KKyNkZWZpbmUgbV9tb2RlIDggIC8qIGRfbW9kZSBpbiAzMmJpdCwgcV9tb2Rl IGluIDY0Yml0IG1vZGUuICAqLworI2RlZmluZSBjb25kX2p1bXBfbW9kZSA5CisjZGVmaW5lIGxv b3BfamN4el9tb2RlIDEwCisjZGVmaW5lIGRxX21vZGUgMTEgLyogb3BlcmFuZCBzaXplIGRlcGVu ZHMgb24gUkVYIHByZWZpeGVzLiAgKi8KKyNkZWZpbmUgZHF3X21vZGUgMTIgLyogcmVnaXN0ZXJz IGxpa2UgZHFfbW9kZSwgbWVtb3J5IGxpa2Ugd19tb2RlLiAgKi8KKyNkZWZpbmUgZl9tb2RlIDEz IC8qIDQtIG9yIDYtYnl0ZSBwb2ludGVyIG9wZXJhbmQgKi8KKyNkZWZpbmUgY29uc3RfMV9tb2Rl IDE0CisjZGVmaW5lIHN0YWNrX3ZfbW9kZSAxNSAvKiB2X21vZGUgZm9yIHN0YWNrLXJlbGF0ZWQg b3Bjb2Rlcy4gICovCiAKICNkZWZpbmUgZXNfcmVnIDEwMAogI2RlZmluZSBjc19yZWcgMTAxCkBA IC0zNjMsNiArMzk3LDcgQEAKICNkZWZpbmUgVVNFX0dST1VQUyAyCiAjZGVmaW5lIFVTRV9QUkVG SVhfVVNFUl9UQUJMRSAzCiAjZGVmaW5lIFg4Nl82NF9TUEVDSUFMIDQKKyNkZWZpbmUgSVNfM0JZ VEVfT1BDT0RFIDUKIAogI2RlZmluZSBGTE9BVAkgIE5VTEwsIE5VTEwsIEZMT0FUQ09ERSwgTlVM TCwgMCwgTlVMTCwgMAogCkBAIC0zODksNiArNDI0LDggQEAKICNkZWZpbmUgR1JQMTMJICBOVUxM LCBOVUxMLCBVU0VfR1JPVVBTLCBOVUxMLCAyMCwgTlVMTCwgMAogI2RlZmluZSBHUlAxNAkgIE5V TEwsIE5VTEwsIFVTRV9HUk9VUFMsIE5VTEwsIDIxLCBOVUxMLCAwCiAjZGVmaW5lIEdSUEFNRAkg IE5VTEwsIE5VTEwsIFVTRV9HUk9VUFMsIE5VTEwsIDIyLCBOVUxMLCAwCisjZGVmaW5lIEdSUFBB RExDSzEgTlVMTCwgTlVMTCwgVVNFX0dST1VQUywgTlVMTCwgMjMsIE5VTEwsIDAKKyNkZWZpbmUg R1JQUEFETENLMiBOVUxMLCBOVUxMLCBVU0VfR1JPVVBTLCBOVUxMLCAyNCwgTlVMTCwgMAogCiAj ZGVmaW5lIFBSRUdSUDAgICBOVUxMLCBOVUxMLCBVU0VfUFJFRklYX1VTRVJfVEFCTEUsIE5VTEws ICAwLCBOVUxMLCAwCiAjZGVmaW5lIFBSRUdSUDEgICBOVUxMLCBOVUxMLCBVU0VfUFJFRklYX1VT RVJfVEFCTEUsIE5VTEwsICAxLCBOVUxMLCAwCkBAIC00MTcsMTAgKzQ1NCwxOSBAQAogI2RlZmlu ZSBQUkVHUlAyNCAgTlVMTCwgTlVMTCwgVVNFX1BSRUZJWF9VU0VSX1RBQkxFLCBOVUxMLCAyNCwg TlVMTCwgMAogI2RlZmluZSBQUkVHUlAyNSAgTlVMTCwgTlVMTCwgVVNFX1BSRUZJWF9VU0VSX1RB QkxFLCBOVUxMLCAyNSwgTlVMTCwgMAogI2RlZmluZSBQUkVHUlAyNiAgTlVMTCwgTlVMTCwgVVNF X1BSRUZJWF9VU0VSX1RBQkxFLCBOVUxMLCAyNiwgTlVMTCwgMAorI2RlZmluZSBQUkVHUlAyNyAg TlVMTCwgTlVMTCwgVVNFX1BSRUZJWF9VU0VSX1RBQkxFLCBOVUxMLCAyNywgTlVMTCwgMAorI2Rl ZmluZSBQUkVHUlAyOCAgTlVMTCwgTlVMTCwgVVNFX1BSRUZJWF9VU0VSX1RBQkxFLCBOVUxMLCAy OCwgTlVMTCwgMAorI2RlZmluZSBQUkVHUlAyOSAgTlVMTCwgTlVMTCwgVVNFX1BSRUZJWF9VU0VS X1RBQkxFLCBOVUxMLCAyOSwgTlVMTCwgMAorI2RlZmluZSBQUkVHUlAzMCAgTlVMTCwgTlVMTCwg VVNFX1BSRUZJWF9VU0VSX1RBQkxFLCBOVUxMLCAzMCwgTlVMTCwgMAorI2RlZmluZSBQUkVHUlAz MSAgTlVMTCwgTlVMTCwgVVNFX1BSRUZJWF9VU0VSX1RBQkxFLCBOVUxMLCAzMSwgTlVMTCwgMAor I2RlZmluZSBQUkVHUlAzMiAgTlVMTCwgTlVMTCwgVVNFX1BSRUZJWF9VU0VSX1RBQkxFLCBOVUxM LCAzMiwgTlVMTCwgMAogCiAjZGVmaW5lIFg4Nl82NF8wICBOVUxMLCBOVUxMLCBYODZfNjRfU1BF Q0lBTCwgTlVMTCwgIDAsIE5VTEwsIDAKIAotdHlwZWRlZiB2b2lkICgqb3BfcnRuKSBQQVJBTVMg KChpbnQgYnl0ZW1vZGUsIGludCBzaXplZmxhZykpOworI2RlZmluZSBUSFJFRV9CWVRFXzAgTlVM TCwgTlVMTCwgSVNfM0JZVEVfT1BDT0RFLCBOVUxMLCAwLCBOVUxMLCAwCisjZGVmaW5lIFRIUkVF X0JZVEVfMSBOVUxMLCBOVUxMLCBJU18zQllURV9PUENPREUsIE5VTEwsIDEsIE5VTEwsIDAKKwor dHlwZWRlZiB2b2lkICgqb3BfcnRuKSAoaW50IGJ5dGVtb2RlLCBpbnQgc2l6ZWZsYWcpOwogCiBz dHJ1Y3QgZGlzMzg2IHsKICAgY29uc3QgY2hhciAqbmFtZTsKQEAgLTQzNSw5ICs0ODEsMTQgQEAK IC8qIFVwcGVyIGNhc2UgbGV0dGVycyBpbiB0aGUgaW5zdHJ1Y3Rpb24gbmFtZXMgaGVyZSBhcmUg bWFjcm9zLgogICAgJ0EnID0+IHByaW50ICdiJyBpZiBubyByZWdpc3RlciBvcGVyYW5kcyBvciBz dWZmaXhfYWx3YXlzIGlzIHRydWUKICAgICdCJyA9PiBwcmludCAnYicgaWYgc3VmZml4X2Fsd2F5 cyBpcyB0cnVlCisgICAnQycgPT4gcHJpbnQgJ3MnIG9yICdsJyAoJ3cnIG9yICdkJyBpbiBJbnRl bCBtb2RlKSBkZXBlbmRpbmcgb24gb3BlcmFuZAorICAgLiAgICAgIHNpemUgcHJlZml4CiAgICAn RScgPT4gcHJpbnQgJ2UnIGlmIDMyLWJpdCBmb3JtIG9mIGpjeHoKICAgICdGJyA9PiBwcmludCAn dycgb3IgJ2wnIGRlcGVuZGluZyBvbiBhZGRyZXNzIHNpemUgcHJlZml4IChsb29wIGluc25zKQog ICAgJ0gnID0+IHByaW50ICIscHQiIG9yICIscG4iIGJyYW5jaCBoaW50CisgICAnSScgPT4gaG9u b3IgZm9sbG93aW5nIG1hY3JvIGxldHRlciBldmVuIGluIEludGVsIG1vZGUgKGltcGxlbWVudGVk IG9ubHkKKyAgIC4gICAgICBmb3Igc29tZSBvZiB0aGUgbWFjcm8gbGV0dGVycykKKyAgICdKJyA9 PiBwcmludCAnbCcKICAgICdMJyA9PiBwcmludCAnbCcgaWYgc3VmZml4X2Fsd2F5cyBpcyB0cnVl CiAgICAnTicgPT4gcHJpbnQgJ24nIGlmIGluc3RydWN0aW9uIGhhcyBubyB3YWl0ICJwcmVmaXgi CiAgICAnTycgPT4gcHJpbnQgJ2QnLCBvciAnbycKQEAgLTQ0OSw5ICs1MDAsMTEgQEAKICAgICdT JyA9PiBwcmludCAndycsICdsJyBvciAncScgaWYgc3VmZml4X2Fsd2F5cyBpcyB0cnVlCiAgICAn VCcgPT4gcHJpbnQgJ3EnIGluIDY0Yml0IG1vZGUgYW5kIGJlaGF2ZSBhcyAnUCcgb3RoZXJ3aXNl CiAgICAnVScgPT4gcHJpbnQgJ3EnIGluIDY0Yml0IG1vZGUgYW5kIGJlaGF2ZSBhcyAnUScgb3Ro ZXJ3aXNlCi0gICAnWCcgPT4gcHJpbnQgJ3MnLCAnZCcgZGVwZW5kaW5nIG9uIGRhdGExNiBwcmVm aXggKGZvciBYTU0pCisgICAnVicgPT4gcHJpbnQgJ3EnIGluIDY0Yml0IG1vZGUgYW5kIGJlaGF2 ZSBhcyAnUycgb3RoZXJ3aXNlCiAgICAnVycgPT4gcHJpbnQgJ2InIG9yICd3JyAoInciIG9yICJk ZSIgaW4gaW50ZWwgbW9kZSkKKyAgICdYJyA9PiBwcmludCAncycsICdkJyBkZXBlbmRpbmcgb24g ZGF0YTE2IHByZWZpeCAoZm9yIFhNTSkKICAgICdZJyA9PiAncScgaWYgaW5zdHJ1Y3Rpb24gaGFz IGFuIFJFWCA2NGJpdCBvdmVyd3JpdGUgcHJlZml4CisgICAnWicgPT4gcHJpbnQgJ3EnIGluIDY0 Yml0IG1vZGUgYW5kIGJlaGF2ZSBhcyAnTCcgb3RoZXJ3aXNlCiAKICAgIE1hbnkgb2YgdGhlIGFi b3ZlIGxldHRlcnMgcHJpbnQgbm90aGluZyBpbiBJbnRlbCBtb2RlLiAgU2VlICJwdXRvcCIKICAg IGZvciB0aGUgZGV0YWlscy4KQEAgLTQ4OSw3ICs1NDIsNyBAQAogICB7ICJhZGNCIiwJCUFMLCBJ YiwgWFggfSwKICAgeyAiYWRjUyIsCQllQVgsIEl2LCBYWCB9LAogICB7ICJwdXNoe1R8fSIsCQlz cywgWFgsIFhYIH0sCi0gIHsgInBvcFR8fSIsCQlzcywgWFgsIFhYIH0sCisgIHsgInBvcHtUfH0i LAkJc3MsIFhYLCBYWCB9LAogICAvKiAxOCAqLwogICB7ICJzYmJCIiwJCUViLCBHYiwgWFggfSwK ICAgeyAic2JiUyIsCQlFdiwgR3YsIFhYIH0sCkBAIC01NTQsMjMgKzYwNywyMyBAQAogICB7ICJk ZWN7U3x9IiwJCVJNZVNJLCBYWCwgWFggfSwKICAgeyAiZGVje1N8fSIsCQlSTWVESSwgWFgsIFhY IH0sCiAgIC8qIDUwICovCi0gIHsgInB1c2hTIiwJCVJNckFYLCBYWCwgWFggfSwKLSAgeyAicHVz aFMiLAkJUk1yQ1gsIFhYLCBYWCB9LAotICB7ICJwdXNoUyIsCQlSTXJEWCwgWFgsIFhYIH0sCi0g IHsgInB1c2hTIiwJCVJNckJYLCBYWCwgWFggfSwKLSAgeyAicHVzaFMiLAkJUk1yU1AsIFhYLCBY WCB9LAotICB7ICJwdXNoUyIsCQlSTXJCUCwgWFgsIFhYIH0sCi0gIHsgInB1c2hTIiwJCVJNclNJ LCBYWCwgWFggfSwKLSAgeyAicHVzaFMiLAkJUk1yREksIFhYLCBYWCB9LAorICB7ICJwdXNoViIs CQlSTXJBWCwgWFgsIFhYIH0sCisgIHsgInB1c2hWIiwJCVJNckNYLCBYWCwgWFggfSwKKyAgeyAi cHVzaFYiLAkJUk1yRFgsIFhYLCBYWCB9LAorICB7ICJwdXNoViIsCQlSTXJCWCwgWFgsIFhYIH0s CisgIHsgInB1c2hWIiwJCVJNclNQLCBYWCwgWFggfSwKKyAgeyAicHVzaFYiLAkJUk1yQlAsIFhY LCBYWCB9LAorICB7ICJwdXNoViIsCQlSTXJTSSwgWFgsIFhYIH0sCisgIHsgInB1c2hWIiwJCVJN ckRJLCBYWCwgWFggfSwKICAgLyogNTggKi8KLSAgeyAicG9wUyIsCQlSTXJBWCwgWFgsIFhYIH0s Ci0gIHsgInBvcFMiLAkJUk1yQ1gsIFhYLCBYWCB9LAotICB7ICJwb3BTIiwJCVJNckRYLCBYWCwg WFggfSwKLSAgeyAicG9wUyIsCQlSTXJCWCwgWFgsIFhYIH0sCi0gIHsgInBvcFMiLAkJUk1yU1As IFhYLCBYWCB9LAotICB7ICJwb3BTIiwJCVJNckJQLCBYWCwgWFggfSwKLSAgeyAicG9wUyIsCQlS TXJTSSwgWFgsIFhYIH0sCi0gIHsgInBvcFMiLAkJUk1yREksIFhYLCBYWCB9LAorICB7ICJwb3BW IiwJCVJNckFYLCBYWCwgWFggfSwKKyAgeyAicG9wViIsCQlSTXJDWCwgWFgsIFhYIH0sCisgIHsg InBvcFYiLAkJUk1yRFgsIFhYLCBYWCB9LAorICB7ICJwb3BWIiwJCVJNckJYLCBYWCwgWFggfSwK KyAgeyAicG9wViIsCQlSTXJTUCwgWFgsIFhYIH0sCisgIHsgInBvcFYiLAkJUk1yQlAsIFhYLCBY WCB9LAorICB7ICJwb3BWIiwJCVJNclNJLCBYWCwgWFggfSwKKyAgeyAicG9wViIsCQlSTXJESSwg WFgsIFhYIH0sCiAgIC8qIDYwICovCiAgIHsgInB1c2hhe1B8fSIsCVhYLCBYWCwgWFggfSwKICAg eyAicG9wYXtQfH0iLAkJWFgsIFhYLCBYWCB9LApAQCAtNTg1LDEwICs2MzgsMTAgQEAKICAgeyAi aW11bFMiLAkJR3YsIEV2LCBJdiB9LAogICB7ICJwdXNoVCIsCQlzSWIsIFhYLCBYWCB9LAogICB7 ICJpbXVsUyIsCQlHdiwgRXYsIHNJYiB9LAotICB7ICJpbnN7Ynx8Ynx9IiwJWWIsIGluZGlyRFgs IFhYIH0sCi0gIHsgImluc3tSfHxSfH0iLAlZdiwgaW5kaXJEWCwgWFggfSwKLSAgeyAib3V0c3ti fHxifH0iLAlpbmRpckRYLCBYYiwgWFggfSwKLSAgeyAib3V0c3tSfHxSfH0iLAlpbmRpckRYLCBY diwgWFggfSwKKyAgeyAiaW5ze2J8fGJ8fSIsCVliciwgaW5kaXJEWCwgWFggfSwKKyAgeyAiaW5z e1J8fFJ8fSIsCVl2ciwgaW5kaXJEWCwgWFggfSwKKyAgeyAib3V0c3tifHxifH0iLAlpbmRpckRY ciwgWGIsIFhYIH0sCisgIHsgIm91dHN7Unx8Unx9IiwJaW5kaXJEWHIsIFh2LCBYWCB9LAogICAv KiA3MCAqLwogICB7ICJqb0giLAkJSmIsIFhYLCBjb25kX2p1bXBfZmxhZyB9LAogICB7ICJqbm9I IiwJCUpiLCBYWCwgY29uZF9qdW1wX2ZsYWcgfSwKQEAgLTYyMSwxMyArNjc0LDEyIEBACiAgIHsg Im1vdlMiLAkJRXYsIEd2LCBYWCB9LAogICB7ICJtb3ZCIiwJCUdiLCBFYiwgWFggfSwKICAgeyAi bW92UyIsCQlHdiwgRXYsIFhYIH0sCi0gIHsgIm1vdlEiLAkJRXYsIFN3LCBYWCB9LAorICB7ICJt b3ZRIiwJCVN2LCBTdywgWFggfSwKICAgeyAibGVhUyIsCQlHdiwgTSwgWFggfSwKLSAgeyAibW92 USIsCQlTdywgRXYsIFhYIH0sCi0gIHsgInBvcFUiLAkJRXYsIFhYLCBYWCB9LAorICB7ICJtb3ZR IiwJCVN3LCBTdiwgWFggfSwKKyAgeyAicG9wVSIsCQlzdGFja0V2LCBYWCwgWFggfSwKICAgLyog OTAgKi8KLSAgeyAibm9wIiwJCVhYLCBYWCwgWFggfSwKLSAgLyogRklYTUU6IE5PUCB3aXRoIFJF UHogcHJlZml4IGlzIGNhbGxlZCBQQVVTRS4gICovCisgIHsgIm5vcCIsCQlOT1BfRml4dXAsIDAs IFhYLCBYWCB9LAogICB7ICJ4Y2hnUyIsCQlSTWVDWCwgZUFYLCBYWCB9LAogICB7ICJ4Y2hnUyIs CQlSTWVEWCwgZUFYLCBYWCB9LAogICB7ICJ4Y2hnUyIsCQlSTWVCWCwgZUFYLCBYWCB9LApAQCAt NjM4LDI4ICs2OTAsMjggQEAKICAgLyogOTggKi8KICAgeyAiY1d7dFJ8fHRSfH0iLAlYWCwgWFgs IFhYIH0sCiAgIHsgImNSe3RPfHx0T3x9IiwJWFgsIFhYLCBYWCB9LAotICB7ICJsY2FsbHtUfH0i LAlBcCwgWFgsIFhYIH0sCisgIHsgIkpjYWxse1R8fSIsCUFwLCBYWCwgWFggfSwKICAgeyAiKGJh ZCkiLAkJWFgsIFhYLCBYWCB9LAkvKiBmd2FpdCAqLwogICB7ICJwdXNoZlQiLAkJWFgsIFhYLCBY WCB9LAogICB7ICJwb3BmVCIsCQlYWCwgWFgsIFhYIH0sCiAgIHsgInNhaGZ7fH0iLAkJWFgsIFhY LCBYWCB9LAogICB7ICJsYWhme3x9IiwJCVhYLCBYWCwgWFggfSwKICAgLyogYTAgKi8KLSAgeyAi bW92QiIsCQlBTCwgT2I2NCwgWFggfSwKLSAgeyAibW92UyIsCQllQVgsIE92NjQsIFhYIH0sCi0g IHsgIm1vdkIiLAkJT2I2NCwgQUwsIFhYIH0sCi0gIHsgIm1vdlMiLAkJT3Y2NCwgZUFYLCBYWCB9 LAotICB7ICJtb3Zze2J8fGJ8fSIsCVliLCBYYiwgWFggfSwKLSAgeyAibW92c3tSfHxSfH0iLAlZ diwgWHYsIFhYIH0sCisgIHsgIm1vdkIiLAkJQUwsIE9iLCBYWCB9LAorICB7ICJtb3ZTIiwJCWVB WCwgT3YsIFhYIH0sCisgIHsgIm1vdkIiLAkJT2IsIEFMLCBYWCB9LAorICB7ICJtb3ZTIiwJCU92 LCBlQVgsIFhYIH0sCisgIHsgIm1vdnN7Ynx8Ynx9IiwJWWJyLCBYYiwgWFggfSwKKyAgeyAibW92 c3tSfHxSfH0iLAlZdnIsIFh2LCBYWCB9LAogICB7ICJjbXBze2J8fGJ8fSIsCVhiLCBZYiwgWFgg fSwKICAgeyAiY21wc3tSfHxSfH0iLAlYdiwgWXYsIFhYIH0sCiAgIC8qIGE4ICovCiAgIHsgInRl c3RCIiwJCUFMLCBJYiwgWFggfSwKICAgeyAidGVzdFMiLAkJZUFYLCBJdiwgWFggfSwKLSAgeyAi c3Rvc0IiLAkJWWIsIEFMLCBYWCB9LAotICB7ICJzdG9zUyIsCQlZdiwgZUFYLCBYWCB9LAotICB7 ICJsb2RzQiIsCQlBTCwgWGIsIFhYIH0sCi0gIHsgImxvZHNTIiwJCWVBWCwgWHYsIFhYIH0sCisg IHsgInN0b3NCIiwJCVliciwgQUwsIFhYIH0sCisgIHsgInN0b3NTIiwJCVl2ciwgZUFYLCBYWCB9 LAorICB7ICJsb2RzQiIsCQlBTHIsIFhiLCBYWCB9LAorICB7ICJsb2RzUyIsCQllQVhyLCBYdiwg WFggfSwKICAgeyAic2Nhc0IiLAkJQUwsIFliLCBYWCB9LAogICB7ICJzY2FzUyIsCQllQVgsIFl2 LCBYWCB9LAogICAvKiBiMCAqLwpAQCAtNzI4LDcgKzc4MCw3IEBACiAgIC8qIGU4ICovCiAgIHsg ImNhbGxUIiwJCUp2LCBYWCwgWFggfSwKICAgeyAiam1wVCIsCQlKdiwgWFgsIFhYIH0sCi0gIHsg ImxqbXB7VHx9IiwJCUFwLCBYWCwgWFggfSwKKyAgeyAiSmptcHtUfH0iLAkJQXAsIFhYLCBYWCB9 LAogICB7ICJqbXAiLAkJSmIsIFhYLCBYWCB9LAogICB7ICJpbkIiLAkJQUwsIGluZGlyRFgsIFhY IH0sCiAgIHsgImluUyIsCQllQVgsIGluZGlyRFgsIFhYIH0sCkBAIC03MzYsNyArNzg4LDcgQEAK ICAgeyAib3V0UyIsCQlpbmRpckRYLCBlQVgsIFhYIH0sCiAgIC8qIGYwICovCiAgIHsgIihiYWQp IiwJCVhYLCBYWCwgWFggfSwJLyogbG9jayBwcmVmaXggKi8KLSAgeyAiKGJhZCkiLAkJWFgsIFhY LCBYWCB9LAorICB7ICJpY2VicCIsCQlYWCwgWFgsIFhYIH0sCiAgIHsgIihiYWQpIiwJCVhYLCBY WCwgWFggfSwJLyogcmVwbmUgKi8KICAgeyAiKGJhZCkiLAkJWFgsIFhYLCBYWCB9LAkvKiByZXB6 ICovCiAgIHsgImhsdCIsCQlYWCwgWFgsIFhYIH0sCkBAIC03NzYsMTEgKzgyOCwxMSBAQAogICAv KiAxMCAqLwogICB7IFBSRUdSUDggfSwKICAgeyBQUkVHUlA5IH0sCi0gIHsgIm1vdmxwWCIsCQlY TSwgRVgsIFNJTURfRml4dXAsICdoJyB9LCAvKiByZWFsbHkgb25seSAyIG9wZXJhbmRzICovCisg IHsgUFJFR1JQMzAgfSwKICAgeyAibW92bHBYIiwJCUVYLCBYTSwgU0lNRF9GaXh1cCwgJ2gnIH0s CiAgIHsgInVucGNrbHBYIiwJCVhNLCBFWCwgWFggfSwKICAgeyAidW5wY2tocFgiLAkJWE0sIEVY LCBYWCB9LAotICB7ICJtb3ZocFgiLAkJWE0sIEVYLCBTSU1EX0ZpeHVwLCAnbCcgfSwKKyAgeyBQ UkVHUlAzMSB9LAogICB7ICJtb3ZocFgiLAkJRVgsIFhNLCBTSU1EX0ZpeHVwLCAnbCcgfSwKICAg LyogMTggKi8KICAgeyBHUlAxNCB9LApAQCAtNzkyLDEwICs4NDQsMTAgQEAKICAgeyAiKGJhZCki LAkJWFgsIFhYLCBYWCB9LAogICB7ICIoYmFkKSIsCQlYWCwgWFgsIFhYIH0sCiAgIC8qIDIwICov Ci0gIHsgIm1vdkwiLAkJUm0sIENtLCBYWCB9LAotICB7ICJtb3ZMIiwJCVJtLCBEbSwgWFggfSwK LSAgeyAibW92TCIsCQlDbSwgUm0sIFhYIH0sCi0gIHsgIm1vdkwiLAkJRG0sIFJtLCBYWCB9LAor ICB7ICJtb3ZaIiwJCVJtLCBDbSwgWFggfSwKKyAgeyAibW92WiIsCQlSbSwgRG0sIFhYIH0sCisg IHsgIm1vdloiLAkJQ20sIFJtLCBYWCB9LAorICB7ICJtb3ZaIiwJCURtLCBSbSwgWFggfSwKICAg eyAibW92TCIsCQlSZCwgVGQsIFhYIH0sCiAgIHsgIihiYWQpIiwJCVhYLCBYWCwgWFggfSwKICAg eyAibW92TCIsCQlUZCwgUmQsIFhYIH0sCkBAIC04MTksOSArODcxLDkgQEAKICAgeyAiKGJhZCki LAkJWFgsIFhYLCBYWCB9LAogICB7ICIoYmFkKSIsCQlYWCwgWFgsIFhYIH0sCiAgIC8qIDM4ICov CisgIHsgVEhSRUVfQllURV8wIH0sCiAgIHsgIihiYWQpIiwJCVhYLCBYWCwgWFggfSwKLSAgeyAi KGJhZCkiLAkJWFgsIFhYLCBYWCB9LAotICB7ICIoYmFkKSIsCQlYWCwgWFgsIFhYIH0sCisgIHsg VEhSRUVfQllURV8xIH0sCiAgIHsgIihiYWQpIiwJCVhYLCBYWCwgWFggfSwKICAgeyAiKGJhZCki LAkJWFgsIFhYLCBYWCB9LAogICB7ICIoYmFkKSIsCQlYWCwgWFgsIFhYIH0sCkBAIC04NDYsNyAr ODk4LDcgQEAKICAgeyAiY21vdmxlIiwJCUd2LCBFdiwgWFggfSwKICAgeyAiY21vdmciLAkJR3Ys IEV2LCBYWCB9LAogICAvKiA1MCAqLwotICB7ICJtb3Ztc2twWCIsCQlHZCwgWFMsIFhYIH0sCisg IHsgIm1vdm1za3BYIiwJCUdkcSwgWFMsIFhYIH0sCiAgIHsgUFJFR1JQMTMgfSwKICAgeyBQUkVH UlAxMiB9LAogICB7IFBSRUdSUDExIH0sCkBAIC04NzksNyArOTMxLDcgQEAKICAgeyAicGFja3Nz ZHciLAkJTVgsIEVNLCBYWCB9LAogICB7IFBSRUdSUDI2IH0sCiAgIHsgUFJFR1JQMjQgfSwKLSAg eyAibW92ZCIsCQlNWCwgRWQsIFhYIH0sCisgIHsgIm1vdmQiLAkJTVgsIEVkcSwgWFggfSwKICAg eyBQUkVHUlAxOSB9LAogICAvKiA3MCAqLwogICB7IFBSRUdSUDIyIH0sCkBAIC04OTEsMTIgKzk0 MywxMiBAQAogICB7ICJwY21wZXFkIiwJCU1YLCBFTSwgWFggfSwKICAgeyAiZW1tcyIsCQlYWCwg WFgsIFhYIH0sCiAgIC8qIDc4ICovCisgIHsgInZtcmVhZCIsCQlFbSwgR20sIFhYIH0sCisgIHsg InZtd3JpdGUiLAkJR20sIEVtLCBYWCB9LAogICB7ICIoYmFkKSIsCQlYWCwgWFgsIFhYIH0sCiAg IHsgIihiYWQpIiwJCVhYLCBYWCwgWFggfSwKLSAgeyAiKGJhZCkiLAkJWFgsIFhYLCBYWCB9LAot ICB7ICIoYmFkKSIsCQlYWCwgWFgsIFhYIH0sCi0gIHsgIihiYWQpIiwJCVhYLCBYWCwgWFggfSwK LSAgeyAiKGJhZCkiLAkJWFgsIFhYLCBYWCB9LAorICB7IFBSRUdSUDI4IH0sCisgIHsgUFJFR1JQ MjkgfSwKICAgeyBQUkVHUlAyMyB9LAogICB7IFBSRUdSUDIwIH0sCiAgIC8qIDgwICovCkBAIC05 NDIsOCArOTk0LDggQEAKICAgeyAiYnRTIiwJCUV2LCBHdiwgWFggfSwKICAgeyAic2hsZFMiLAkJ RXYsIEd2LCBJYiB9LAogICB7ICJzaGxkUyIsCQlFdiwgR3YsIENMIH0sCi0gIHsgIihiYWQpIiwJ CVhYLCBYWCwgWFggfSwKLSAgeyAiKGJhZCkiLAkJWFgsIFhYLCBYWCB9LAorICB7IEdSUFBBRExD SzIgfSwKKyAgeyBHUlBQQURMQ0sxIH0sCiAgIC8qIGE4ICovCiAgIHsgInB1c2hUIiwJCWdzLCBY WCwgWFggfSwKICAgeyAicG9wVCIsCQlncywgWFgsIFhYIH0sCkBAIC05NzYsOCArMTAyOCw4IEBA CiAgIHsgInhhZGRTIiwJCUV2LCBHdiwgWFggfSwKICAgeyBQUkVHUlAxIH0sCiAgIHsgIm1vdm50 aVMiLAkJRXYsIEd2LCBYWCB9LAotICB7ICJwaW5zcnciLAkJTVgsIEVkLCBJYiB9LAotICB7ICJw ZXh0cnciLAkJR2QsIE1TLCBJYiB9LAorICB7ICJwaW5zcnciLAkJTVgsIEVkcXcsIEliIH0sCisg IHsgInBleHRydyIsCQlHZHEsIE1TLCBJYiB9LAogICB7ICJzaHVmcFgiLAkJWE0sIEVYLCBJYiB9 LAogICB7IEdSUDkgfSwKICAgLyogYzggKi8KQEAgLTk5MCwxNCArMTA0MiwxNCBAQAogICB7ICJi c3dhcCIsCQlSTWVTSSwgWFgsIFhYIH0sCiAgIHsgImJzd2FwIiwJCVJNZURJLCBYWCwgWFggfSwK ICAgLyogZDAgKi8KLSAgeyAiKGJhZCkiLAkJWFgsIFhYLCBYWCB9LAorICB7IFBSRUdSUDI3IH0s CiAgIHsgInBzcmx3IiwJCU1YLCBFTSwgWFggfSwKICAgeyAicHNybGQiLAkJTVgsIEVNLCBYWCB9 LAogICB7ICJwc3JscSIsCQlNWCwgRU0sIFhYIH0sCiAgIHsgInBhZGRxIiwJCU1YLCBFTSwgWFgg fSwKICAgeyAicG11bGx3IiwJCU1YLCBFTSwgWFggfSwKICAgeyBQUkVHUlAyMSB9LAotICB7ICJw bW92bXNrYiIsCQlHZCwgTVMsIFhYIH0sCisgIHsgInBtb3Ztc2tiIiwJCUdkcSwgTVMsIFhYIH0s CiAgIC8qIGQ4ICovCiAgIHsgInBzdWJ1c2IiLAkJTVgsIEVNLCBYWCB9LAogICB7ICJwc3VidXN3 IiwJCU1YLCBFTSwgWFggfSwKQEAgLTEwMjYsNyArMTA3OCw3IEBACiAgIHsgInBtYXhzdyIsCQlN WCwgRU0sIFhYIH0sCiAgIHsgInB4b3IiLAkJTVgsIEVNLCBYWCB9LAogICAvKiBmMCAqLwotICB7 ICIoYmFkKSIsCQlYWCwgWFgsIFhYIH0sCisgIHsgUFJFR1JQMzIgfSwKICAgeyAicHNsbHciLAkJ TVgsIEVNLCBYWCB9LAogICB7ICJwc2xsZCIsCQlNWCwgRU0sIFhYIH0sCiAgIHsgInBzbGxxIiwJ CU1YLCBFTSwgWFggfSwKQEAgLTEwNzQsMTkgKzExMjYsMTkgQEAKICAgLyogMDAgKi8gMSwxLDEs MSwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMSwgLyogMGYgKi8KICAgLyogMTAgKi8gMSwxLDEsMSwx LDEsMSwxLDEsMCwwLDAsMCwwLDAsMCwgLyogMWYgKi8KICAgLyogMjAgKi8gMSwxLDEsMSwxLDAs MSwwLDEsMSwxLDEsMSwxLDEsMSwgLyogMmYgKi8KLSAgLyogMzAgKi8gMCwwLDAsMCwwLDAsMCww LDAsMCwwLDAsMCwwLDAsMCwgLyogM2YgKi8KKyAgLyogMzAgKi8gMCwwLDAsMCwwLDAsMCwwLDEs MCwxLDAsMCwwLDAsMCwgLyogM2YgKi8KICAgLyogNDAgKi8gMSwxLDEsMSwxLDEsMSwxLDEsMSwx LDEsMSwxLDEsMSwgLyogNGYgKi8KICAgLyogNTAgKi8gMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEs MSwxLDEsMSwgLyogNWYgKi8KICAgLyogNjAgKi8gMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwx LDEsMSwgLyogNmYgKi8KLSAgLyogNzAgKi8gMSwxLDEsMSwxLDEsMSwwLDAsMCwwLDAsMCwwLDEs MSwgLyogN2YgKi8KKyAgLyogNzAgKi8gMSwxLDEsMSwxLDEsMSwwLDEsMSwwLDAsMSwxLDEsMSwg LyogN2YgKi8KICAgLyogODAgKi8gMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwgLyog OGYgKi8KICAgLyogOTAgKi8gMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwgLyogOWYg Ki8KLSAgLyogYTAgKi8gMCwwLDAsMSwxLDEsMCwwLDAsMCwwLDEsMSwxLDEsMSwgLyogYWYgKi8K KyAgLyogYTAgKi8gMCwwLDAsMSwxLDEsMSwxLDAsMCwwLDEsMSwxLDEsMSwgLyogYWYgKi8KICAg LyogYjAgKi8gMSwxLDEsMSwxLDEsMSwxLDAsMCwxLDEsMSwxLDEsMSwgLyogYmYgKi8KICAgLyog YzAgKi8gMSwxLDEsMSwxLDEsMSwxLDAsMCwwLDAsMCwwLDAsMCwgLyogY2YgKi8KLSAgLyogZDAg Ki8gMCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwgLyogZGYgKi8KKyAgLyogZDAgKi8g MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwgLyogZGYgKi8KICAgLyogZTAgKi8gMSwx LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwgLyogZWYgKi8KLSAgLyogZjAgKi8gMCwxLDEs MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMCAgLyogZmYgKi8KKyAgLyogZjAgKi8gMSwxLDEsMSwx LDEsMSwxLDEsMSwxLDEsMSwxLDEsMCAgLyogZmYgKi8KICAgLyogICAgICAgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSAgICAgICAgKi8KICAgLyogICAgICAgMCAxIDIgMyA0IDUgNiA3 IDggOSBhIGIgYyBkIGUgZiAgICAgICAgKi8KIH07CkBAIC0xMDk1LDIxICsxMTQ3LDIxIEBACiAg IC8qICAgICAgIDAgMSAyIDMgNCA1IDYgNyA4IDkgYSBiIGMgZCBlIGYgICAgICAgICovCiAgIC8q ICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgICAgICovCiAgIC8qIDAw ICovIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsIC8qIDBmICovCi0gIC8qIDEwICov IDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsIC8qIDFmICovCisgIC8qIDEwICovIDEs MSwxLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsIC8qIDFmICovCiAgIC8qIDIwICovIDAsMCww LDAsMCwwLDAsMCwwLDAsMSwwLDEsMSwwLDAsIC8qIDJmICovCi0gIC8qIDMwICovIDAsMCwwLDAs MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsIC8qIDNmICovCisgIC8qIDMwICovIDAsMCwwLDAsMCww LDAsMCwxLDAsMSwwLDAsMCwwLDAsIC8qIDNmICovCiAgIC8qIDQwICovIDAsMCwwLDAsMCwwLDAs MCwwLDAsMCwwLDAsMCwwLDAsIC8qIDRmICovCiAgIC8qIDUwICovIDAsMSwxLDEsMCwwLDAsMCwx LDEsMSwxLDEsMSwxLDEsIC8qIDVmICovCiAgIC8qIDYwICovIDAsMCwwLDAsMCwwLDAsMCwwLDAs MCwwLDAsMSwwLDEsIC8qIDZmICovCi0gIC8qIDcwICovIDEsMCwwLDAsMCwwLDAsMCwwLDAsMCww LDAsMCwxLDEsIC8qIDdmICovCisgIC8qIDcwICovIDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEs MSwxLDEsIC8qIDdmICovCiAgIC8qIDgwICovIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCww LDAsIC8qIDhmICovCiAgIC8qIDkwICovIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAs IC8qIDlmICovCiAgIC8qIGEwICovIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsIC8q IGFmICovCiAgIC8qIGIwICovIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsIC8qIGJm ICovCiAgIC8qIGMwICovIDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsIC8qIGNmICov Ci0gIC8qIGQwICovIDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsIC8qIGRmICovCisg IC8qIGQwICovIDEsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsIC8qIGRmICovCiAgIC8q IGUwICovIDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsIC8qIGVmICovCi0gIC8qIGYw ICovIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAgIC8qIGZmICovCisgIC8qIGYwICov IDEsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAgIC8qIGZmICovCiAgIC8qICAgICAgIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgICAgICovCiAgIC8qICAgICAgIDAgMSAy IDMgNCA1IDYgNyA4IDkgYSBiIGMgZCBlIGYgICAgICAgICovCiB9OwpAQCAtMTI0OSwyNSArMTMw MSwyNSBAQAogICB9LAogICAvKiBHUlAyYl9vbmUgKi8KICAgewotICAgIHsgInJvbEEiLAlFYiwg WFgsIFhYIH0sCi0gICAgeyAicm9yQSIsCUViLCBYWCwgWFggfSwKLSAgICB7ICJyY2xBIiwJRWIs IFhYLCBYWCB9LAotICAgIHsgInJjckEiLAlFYiwgWFgsIFhYIH0sCi0gICAgeyAic2hsQSIsCUVi LCBYWCwgWFggfSwKLSAgICB7ICJzaHJBIiwJRWIsIFhYLCBYWCB9LAorICAgIHsgInJvbEEiLAlF YiwgSTEsIFhYIH0sCisgICAgeyAicm9yQSIsCUViLCBJMSwgWFggfSwKKyAgICB7ICJyY2xBIiwJ RWIsIEkxLCBYWCB9LAorICAgIHsgInJjckEiLAlFYiwgSTEsIFhYIH0sCisgICAgeyAic2hsQSIs CUViLCBJMSwgWFggfSwKKyAgICB7ICJzaHJBIiwJRWIsIEkxLCBYWCB9LAogICAgIHsgIihiYWQp IiwJWFgsIFhYLCBYWCB9LAotICAgIHsgInNhckEiLAlFYiwgWFgsIFhYIH0sCisgICAgeyAic2Fy QSIsCUViLCBJMSwgWFggfSwKICAgfSwKICAgLyogR1JQMlNfb25lICovCiAgIHsKLSAgICB7ICJy b2xRIiwJRXYsIFhYLCBYWCB9LAotICAgIHsgInJvclEiLAlFdiwgWFgsIFhYIH0sCi0gICAgeyAi cmNsUSIsCUV2LCBYWCwgWFggfSwKLSAgICB7ICJyY3JRIiwJRXYsIFhYLCBYWCB9LAotICAgIHsg InNobFEiLAlFdiwgWFgsIFhYIH0sCi0gICAgeyAic2hyUSIsCUV2LCBYWCwgWFggfSwKKyAgICB7 ICJyb2xRIiwJRXYsIEkxLCBYWCB9LAorICAgIHsgInJvclEiLAlFdiwgSTEsIFhYIH0sCisgICAg eyAicmNsUSIsCUV2LCBJMSwgWFggfSwKKyAgICB7ICJyY3JRIiwJRXYsIEkxLCBYWCB9LAorICAg IHsgInNobFEiLAlFdiwgSTEsIFhYIH0sCisgICAgeyAic2hyUSIsCUV2LCBJMSwgWFggfSwKICAg ICB7ICIoYmFkKSIsCVhYLCBYWCwgWFh9LAotICAgIHsgInNhclEiLAlFdiwgWFgsIFhYIH0sCisg ICAgeyAic2FyUSIsCUV2LCBJMSwgWFggfSwKICAgfSwKICAgLyogR1JQMmJfY2wgKi8KICAgewpA QCAtMTMyOSwxMCArMTM4MSwxMCBAQAogICAgIHsgImluY1EiLAlFdiwgWFgsIFhYIH0sCiAgICAg eyAiZGVjUSIsCUV2LCBYWCwgWFggfSwKICAgICB7ICJjYWxsVCIsCWluZGlyRXYsIFhYLCBYWCB9 LAotICAgIHsgImxjYWxsVCIsCWluZGlyRXYsIFhYLCBYWCB9LAorICAgIHsgIkpjYWxsVCIsCWlu ZGlyRXAsIFhYLCBYWCB9LAogICAgIHsgImptcFQiLAlpbmRpckV2LCBYWCwgWFggfSwKLSAgICB7 ICJsam1wVCIsCWluZGlyRXYsIFhYLCBYWCB9LAotICAgIHsgInB1c2hVIiwJRXYsIFhYLCBYWCB9 LAorICAgIHsgIkpqbXBUIiwJaW5kaXJFcCwgWFgsIFhYIH0sCisgICAgeyAicHVzaFUiLAlzdGFj a0V2LCBYWCwgWFggfSwKICAgICB7ICIoYmFkKSIsCVhYLCBYWCwgWFggfSwKICAgfSwKICAgLyog R1JQNiAqLwpAQCAtMTM0OCwxNCArMTQwMCwxNCBAQAogICB9LAogICAvKiBHUlA3ICovCiAgIHsK LSAgICB7ICJzZ2R0USIsCSBNLCBYWCwgWFggfSwKLSAgICB7ICJzaWR0USIsCSBNLCBYWCwgWFgg fSwKLSAgICB7ICJsZ2R0USIsCSBNLCBYWCwgWFggfSwKLSAgICB7ICJsaWR0USIsCSBNLCBYWCwg WFggfSwKKyAgICB7ICJzZ2R0SVEiLCBWTVhfRml4dXAsIDAsIFhYLCBYWCB9LAorICAgIHsgInNp ZHRJUSIsIFBOSV9GaXh1cCwgMCwgWFgsIFhYIH0sCisgICAgeyAibGdkdHtRfFF8fH0iLAkgTSwg WFgsIFhYIH0sCisgICAgeyAibGlkdHtRfFF8fH0iLAkgU1ZNRV9GaXh1cCwgMCwgWFgsIFhYIH0s CiAgICAgeyAic21zd1EiLAlFdiwgWFgsIFhYIH0sCiAgICAgeyAiKGJhZCkiLAlYWCwgWFgsIFhY IH0sCiAgICAgeyAibG1zdyIsCUV3LCBYWCwgWFggfSwKLSAgICB7ICJpbnZscGciLAlFdywgWFgs IFhYIH0sCisgICAgeyAiaW52bHBnIiwJSU5WTFBHX0ZpeHVwLCB3X21vZGUsIFhYLCBYWCB9LAog ICB9LAogICAvKiBHUlA4ICovCiAgIHsKQEAgLTEzNzEsMTMgKzE0MjMsMTMgQEAKICAgLyogR1JQ OSAqLwogICB7CiAgICAgeyAiKGJhZCkiLAlYWCwgWFgsIFhYIH0sCi0gICAgeyAiY21weGNoZzhi IiwgRXYsIFhYLCBYWCB9LAotICAgIHsgIihiYWQpIiwJWFgsIFhYLCBYWCB9LAotICAgIHsgIihi YWQpIiwJWFgsIFhYLCBYWCB9LAorICAgIHsgImNtcHhjaGc4YiIsIEVxLCBYWCwgWFggfSwKICAg ICB7ICIoYmFkKSIsCVhYLCBYWCwgWFggfSwKICAgICB7ICIoYmFkKSIsCVhYLCBYWCwgWFggfSwK ICAgICB7ICIoYmFkKSIsCVhYLCBYWCwgWFggfSwKICAgICB7ICIoYmFkKSIsCVhYLCBYWCwgWFgg fSwKKyAgICB7ICIiLAlWTSwgWFgsIFhYIH0sCQkvKiBTZWUgT1BfVk1YLiAgKi8KKyAgICB7ICJ2 bXB0cnN0IiwgRXEsIFhYLCBYWCB9LAogICB9LAogICAvKiBHUlAxMCAqLwogICB7CkBAIC0xNDE5 LDEwICsxNDcxLDkgQEAKICAgICB7ICJsZG14Y3NyIiwgRXYsIFhYLCBYWCB9LAogICAgIHsgInN0 bXhjc3IiLCBFdiwgWFgsIFhYIH0sCiAgICAgeyAiKGJhZCkiLAlYWCwgWFgsIFhYIH0sCi0gICAg eyAibGZlbmNlIiwgTm9uZSwgWFgsIFhYIH0sCi0gICAgeyAibWZlbmNlIiwgTm9uZSwgWFgsIFhY IH0sCi0gICAgeyAic2ZlbmNlIiwgTm9uZSwgWFgsIFhYIH0sCi0gICAgLyogRklYTUU6IHRoZSBz ZmVuY2Ugd2l0aCBtZW1vcnkgb3BlcmFuZCBpcyBjbGZsdXNoISAgKi8KKyAgICB7ICJsZmVuY2Ui LCBPUF8wZmFlLCAwLCBYWCwgWFggfSwKKyAgICB7ICJtZmVuY2UiLCBPUF8wZmFlLCAwLCBYWCwg WFggfSwKKyAgICB7ICJjbGZsdXNoIiwgT1BfMGZhZSwgMCwgWFgsIFhYIH0sCiAgIH0sCiAgIC8q IEdSUDE0ICovCiAgIHsKQEAgLTE0NDUsNiArMTQ5NiwyOCBAQAogICAgIHsgIihiYWQpIiwJWFgs IFhYLCBYWCB9LAogICAgIHsgIihiYWQpIiwJWFgsIFhYLCBYWCB9LAogICAgIHsgIihiYWQpIiwJ WFgsIFhYLCBYWCB9LAorICB9LAorICAvKiBHUlBQQURMQ0sxICovCisgIHsKKyAgICB7ICJ4c3Rv cmUtcm5nIiwgT1BfMGYwNywgMCwgWFgsIFhYIH0sCisgICAgeyAieGNyeXB0LWVjYiIsIE9QXzBm MDcsIDAsIFhYLCBYWCB9LAorICAgIHsgInhjcnlwdC1jYmMiLCBPUF8wZjA3LCAwLCBYWCwgWFgg fSwKKyAgICB7ICJ4Y3J5cHQtY3RyIiwgT1BfMGYwNywgMCwgWFgsIFhYIH0sCisgICAgeyAieGNy eXB0LWNmYiIsIE9QXzBmMDcsIDAsIFhYLCBYWCB9LAorICAgIHsgInhjcnlwdC1vZmIiLCBPUF8w ZjA3LCAwLCBYWCwgWFggfSwKKyAgICB7ICIoYmFkKSIsCU9QXzBmMDcsIDAsIFhYLCBYWCB9LAor ICAgIHsgIihiYWQpIiwJT1BfMGYwNywgMCwgWFgsIFhYIH0sCisgIH0sCisgIC8qIEdSUFBBRExD SzIgKi8KKyAgeworICAgIHsgIm1vbnRtdWwiLCBPUF8wZjA3LCAwLCBYWCwgWFggfSwKKyAgICB7 ICJ4c2hhMSIsICAgT1BfMGYwNywgMCwgWFgsIFhYIH0sCisgICAgeyAieHNoYTI1NiIsIE9QXzBm MDcsIDAsIFhYLCBYWCB9LAorICAgIHsgIihiYWQpIiwJIE9QXzBmMDcsIDAsIFhYLCBYWCB9LAor ICAgIHsgIihiYWQpIiwgICBPUF8wZjA3LCAwLCBYWCwgWFggfSwKKyAgICB7ICIoYmFkKSIsICAg T1BfMGYwNywgMCwgWFgsIFhYIH0sCisgICAgeyAiKGJhZCkiLAkgT1BfMGYwNywgMCwgWFgsIFhY IH0sCisgICAgeyAiKGJhZCkiLAkgT1BfMGYwNywgMCwgWFgsIFhYIH0sCiAgIH0KIH07CiAKQEAg LTE2MTIsOSArMTY4NSw5IEBACiAgIH0sCiAgIC8qIFBSRUdSUDIzICovCiAgIHsKLSAgICB7ICJt b3ZkIiwgRWQsIE1YLCBYWCB9LAorICAgIHsgIm1vdmQiLCBFZHEsIE1YLCBYWCB9LAogICAgIHsg Im1vdnEiLCBYTSwgRVgsIFhYIH0sCi0gICAgeyAibW92ZCIsIEVkLCBYTSwgWFggfSwKKyAgICB7 ICJtb3ZkIiwgRWRxLCBYTSwgWFggfSwKICAgICB7ICIoYmFkKSIsIEVkLCBYTSwgWFggfSwKICAg fSwKICAgLyogUFJFR1JQMjQgKi8KQEAgLTE2MjYsMTAgKzE2OTksMTAgQEAKICAgfSwKICAgLyog UFJFR1JQMjUgKi8KICAgewotICB7ICJtb3ZudHEiLCBFdiwgTVgsIFhYIH0sCi0gIHsgIihiYWQp IiwgRXYsIFhNLCBYWCB9LAotICB7ICJtb3ZudGRxIiwgRXYsIFhNLCBYWCB9LAotICB7ICIoYmFk KSIsIEV2LCBYTSwgWFggfSwKKyAgICB7ICJtb3ZudHEiLCBFTSwgTVgsIFhYIH0sCisgICAgeyAi KGJhZCkiLCBFTSwgWE0sIFhYIH0sCisgICAgeyAibW92bnRkcSIsIEVNLCBYTSwgWFggfSwKKyAg ICB7ICIoYmFkKSIsIEVNLCBYTSwgWFggfSwKICAgfSwKICAgLyogUFJFR1JQMjYgKi8KICAgewpA QCAtMTYzOCw2ICsxNzExLDQ4IEBACiAgICAgeyAicHVucGNrbHFkcSIsIFhNLCBFWCwgWFggfSwK ICAgICB7ICIoYmFkKSIsIFhNLCBFWCwgWFggfSwKICAgfSwKKyAgLyogUFJFR1JQMjcgKi8KKyAg eworICAgIHsgIihiYWQpIiwgTVgsIEVYLCBYWCB9LAorICAgIHsgIihiYWQpIiwgWE0sIEVYLCBY WCB9LAorICAgIHsgImFkZHN1YnBkIiwgWE0sIEVYLCBYWCB9LAorICAgIHsgImFkZHN1YnBzIiwg WE0sIEVYLCBYWCB9LAorICB9LAorICAvKiBQUkVHUlAyOCAqLworICB7CisgICAgeyAiKGJhZCki LCBNWCwgRVgsIFhYIH0sCisgICAgeyAiKGJhZCkiLCBYTSwgRVgsIFhYIH0sCisgICAgeyAiaGFk ZHBkIiwgWE0sIEVYLCBYWCB9LAorICAgIHsgImhhZGRwcyIsIFhNLCBFWCwgWFggfSwKKyAgfSwK KyAgLyogUFJFR1JQMjkgKi8KKyAgeworICAgIHsgIihiYWQpIiwgTVgsIEVYLCBYWCB9LAorICAg IHsgIihiYWQpIiwgWE0sIEVYLCBYWCB9LAorICAgIHsgImhzdWJwZCIsIFhNLCBFWCwgWFggfSwK KyAgICB7ICJoc3VicHMiLCBYTSwgRVgsIFhYIH0sCisgIH0sCisgIC8qIFBSRUdSUDMwICovCisg IHsKKyAgICB7ICJtb3ZscFgiLCBYTSwgRVgsIFNJTURfRml4dXAsICdoJyB9LCAvKiByZWFsbHkg b25seSAyIG9wZXJhbmRzICovCisgICAgeyAibW92c2xkdXAiLCBYTSwgRVgsIFhYIH0sCisgICAg eyAibW92bHBkIiwgWE0sIEVYLCBYWCB9LAorICAgIHsgIm1vdmRkdXAiLCBYTSwgRVgsIFhYIH0s CisgIH0sCisgIC8qIFBSRUdSUDMxICovCisgIHsKKyAgICB7ICJtb3ZocFgiLCBYTSwgRVgsIFNJ TURfRml4dXAsICdsJyB9LAorICAgIHsgIm1vdnNoZHVwIiwgWE0sIEVYLCBYWCB9LAorICAgIHsg Im1vdmhwZCIsIFhNLCBFWCwgWFggfSwKKyAgICB7ICIoYmFkKSIsIFhNLCBFWCwgWFggfSwKKyAg fSwKKyAgLyogUFJFR1JQMzIgKi8KKyAgeworICAgIHsgIihiYWQpIiwgWE0sIEVYLCBYWCB9LAor ICAgIHsgIihiYWQpIiwgWE0sIEVYLCBYWCB9LAorICAgIHsgIihiYWQpIiwgWE0sIEVYLCBYWCB9 LAorICAgIHsgImxkZHF1IiwgWE0sIE0sIFhYIH0sCisgIH0sCiB9OwogCiBzdGF0aWMgY29uc3Qg c3RydWN0IGRpczM4NiB4ODZfNjRfdGFibGVbXVsyXSA9IHsKQEAgLTE2NDcsMTAgKzE3NjIsODMg QEAKICAgfSwKIH07CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGlzMzg2IHRocmVlX2J5dGVfdGFi bGVbXVszMl0gPSB7CisgIC8qIFRIUkVFX0JZVEVfMCAqLworICB7CisgICAgeyAicHNodWZiIiwJ CU1YLCBFTSwgWFggfSwKKyAgICB7ICJwaGFkZHciLAkJTVgsIEVNLCBYWCB9LAorICAgIHsgInBo YWRkZCIsCQlNWCwgRU0sIFhYIH0sCisgICAgeyAicGhhZGRzdyIsCU1YLCBFTSwgWFggfSwKKyAg ICB7ICJwbWFkZHVic3ciLAlNWCwgRU0sIFhYIH0sCisgICAgeyAicGhzdWJ3IiwJCU1YLCBFTSwg WFggfSwKKyAgICB7ICJwaHN1YmQiLAkJTVgsIEVNLCBYWCB9LAorICAgIHsgInBoc3Vic3ciLAlN WCwgRU0sIFhYIH0sCisgICAgeyAicHNpZ25iIiwJCU1YLCBFTSwgWFggfSwKKyAgICB7ICJwc2ln bnciLAkJTVgsIEVNLCBYWCB9LAorICAgIHsgInBzaWduZCIsCQlNWCwgRU0sIFhYIH0sCisgICAg eyAicG11bGhyc3ciLAlNWCwgRU0sIFhYIH0sCisgICAgeyAiKGJhZCkiLAkJWFgsIFhYLCBYWCB9 LAorICAgIHsgIihiYWQpIiwJCVhYLCBYWCwgWFggfSwKKyAgICB7ICIoYmFkKSIsCQlYWCwgWFgs IFhYIH0sCisgICAgeyAiKGJhZCkiLAkJWFgsIFhYLCBYWCB9LAorICAgIHsgIihiYWQpIiwJCVhY LCBYWCwgWFggfSwKKyAgICB7ICIoYmFkKSIsCQlYWCwgWFgsIFhYIH0sCisgICAgeyAiKGJhZCki LAkJWFgsIFhYLCBYWCB9LAorICAgIHsgIihiYWQpIiwJCVhYLCBYWCwgWFggfSwKKyAgICB7ICIo YmFkKSIsCQlYWCwgWFgsIFhYIH0sCisgICAgeyAiKGJhZCkiLAkJWFgsIFhYLCBYWCB9LAorICAg IHsgIihiYWQpIiwJCVhYLCBYWCwgWFggfSwKKyAgICB7ICIoYmFkKSIsCQlYWCwgWFgsIFhYIH0s CisgICAgeyAiKGJhZCkiLAkJWFgsIFhYLCBYWCB9LAorICAgIHsgIihiYWQpIiwJCVhYLCBYWCwg WFggfSwKKyAgICB7ICIoYmFkKSIsCQlYWCwgWFgsIFhYIH0sCisgICAgeyAiKGJhZCkiLAkJWFgs IFhYLCBYWCB9LAorICAgIHsgInBhYnNiIiwJCU1YLCBFTSwgWFggfSwKKyAgICB7ICJwYWJzdyIs CQlNWCwgRU0sIFhYIH0sCisgICAgeyAicGFic2QiLAkJTVgsIEVNLCBYWCB9LAorICAgIHsgIihi YWQpIiwJCVhYLCBYWCwgWFggfQorICB9LAorICAvKiBUSFJFRV9CWVRFXzEgKi8KKyAgeworICAg IHsgIihiYWQpIiwJCVhYLCBYWCwgWFggfSwKKyAgICB7ICIoYmFkKSIsCQlYWCwgWFgsIFhYIH0s CisgICAgeyAiKGJhZCkiLAkJWFgsIFhYLCBYWCB9LAorICAgIHsgIihiYWQpIiwJCVhYLCBYWCwg WFggfSwKKyAgICB7ICIoYmFkKSIsCQlYWCwgWFgsIFhYIH0sCisgICAgeyAiKGJhZCkiLAkJWFgs IFhYLCBYWCB9LAorICAgIHsgIihiYWQpIiwJCVhYLCBYWCwgWFggfSwKKyAgICB7ICIoYmFkKSIs CQlYWCwgWFgsIFhYIH0sCisgICAgeyAiKGJhZCkiLAkJWFgsIFhYLCBYWCB9LAorICAgIHsgIihi YWQpIiwJCVhYLCBYWCwgWFggfSwKKyAgICB7ICIoYmFkKSIsCQlYWCwgWFgsIFhYIH0sCisgICAg eyAiKGJhZCkiLAkJWFgsIFhYLCBYWCB9LAorICAgIHsgIihiYWQpIiwJCVhYLCBYWCwgWFggfSwK KyAgICB7ICIoYmFkKSIsCQlYWCwgWFgsIFhYIH0sCisgICAgeyAiKGJhZCkiLAkJWFgsIFhYLCBY WCB9LAorICAgIHsgInBhbGlnbnIiLAlNWCwgRU0sIEliIH0sCisgICAgeyAiKGJhZCkiLAkJWFgs IFhYLCBYWCB9LAorICAgIHsgIihiYWQpIiwJCVhYLCBYWCwgWFggfSwKKyAgICB7ICIoYmFkKSIs CQlYWCwgWFgsIFhYIH0sCisgICAgeyAiKGJhZCkiLAkJWFgsIFhYLCBYWCB9LAorICAgIHsgIihi YWQpIiwJCVhYLCBYWCwgWFggfSwKKyAgICB7ICIoYmFkKSIsCQlYWCwgWFgsIFhYIH0sCisgICAg eyAiKGJhZCkiLAkJWFgsIFhYLCBYWCB9LAorICAgIHsgIihiYWQpIiwJCVhYLCBYWCwgWFggfSwK KyAgICB7ICIoYmFkKSIsCQlYWCwgWFgsIFhYIH0sCisgICAgeyAiKGJhZCkiLAkJWFgsIFhYLCBY WCB9LAorICAgIHsgIihiYWQpIiwJCVhYLCBYWCwgWFggfSwKKyAgICB7ICIoYmFkKSIsCQlYWCwg WFgsIFhYIH0sCisgICAgeyAiKGJhZCkiLAkJWFgsIFhYLCBYWCB9LAorICAgIHsgIihiYWQpIiwJ CVhYLCBYWCwgWFggfSwKKyAgICB7ICIoYmFkKSIsCQlYWCwgWFgsIFhYIH0sCisgICAgeyAiKGJh ZCkiLAkJWFgsIFhYLCBYWCB9CisgIH0sCit9OworCiAjZGVmaW5lIElOVEVSTkFMX0RJU0FTU0VN QkxFUl9FUlJPUiBfKCI8aW50ZXJuYWwgZGlzYXNzZW1ibGVyIGVycm9yPiIpCiAKIHN0YXRpYyB2 b2lkCi1ja3ByZWZpeCAoKQorY2twcmVmaXggKHZvaWQpCiB7CiAgIGludCBuZXdyZXg7CiAgIHJl eCA9IDA7CkBAIC0xNjgwLDcgKzE4NjgsNyBAQAogCWNhc2UgMHg0ZDoKIAljYXNlIDB4NGU6CiAJ Y2FzZSAweDRmOgotCSAgICBpZiAobW9kZV82NGJpdCkKKwkgICAgaWYgKGFkZHJlc3NfbW9kZSA9 PSBtb2RlXzY0Yml0KQogCSAgICAgIG5ld3JleCA9ICpjb2RlcDsKIAkgICAgZWxzZQogCSAgICAg IHJldHVybjsKQEAgLTE3MjIsNyArMTkxMCw3IEBACiAJICAvKiBmd2FpdCBpcyByZWFsbHkgYW4g aW5zdHJ1Y3Rpb24uICBJZiB0aGVyZSBhcmUgcHJlZml4ZXMKIAkgICAgIGJlZm9yZSB0aGUgZndh aXQsIHRoZXkgYmVsb25nIHRvIHRoZSBmd2FpdCwgKm5vdCogdG8gdGhlCiAJICAgICBmb2xsb3dp bmcgaW5zdHJ1Y3Rpb24uICAqLwotCSAgaWYgKHByZWZpeGVzKQorCSAgaWYgKHByZWZpeGVzIHx8 IHJleCkKIAkgICAgewogCSAgICAgIHByZWZpeGVzIHw9IFBSRUZJWF9GV0FJVDsKIAkgICAgICBj b2RlcCsrOwpAQCAtMTczNiw4ICsxOTI0LDggQEAKICAgICAgIC8qIFJleCBpcyBpZ25vcmVkIHdo ZW4gZm9sbG93ZWQgYnkgYW5vdGhlciBwcmVmaXguICAqLwogICAgICAgaWYgKHJleCkKIAl7Ci0J ICBvYXBwZW5kIChwcmVmaXhfbmFtZSAocmV4LCAwKSk7Ci0JICBvYXBwZW5kICgiICIpOworCSAg cmV4X3VzZWQgPSByZXg7CisJICByZXR1cm47CiAJfQogICAgICAgcmV4ID0gbmV3cmV4OwogICAg ICAgY29kZXArKzsKQEAgLTE3NDgsOSArMTkzNiw3IEBACiAgICBwcmVmaXggYnl0ZS4gICovCiAK IHN0YXRpYyBjb25zdCBjaGFyICoKLXByZWZpeF9uYW1lIChwcmVmLCBzaXplZmxhZykKLSAgICAg aW50IHByZWY7Ci0gICAgIGludCBzaXplZmxhZzsKK3ByZWZpeF9uYW1lIChpbnQgcHJlZiwgaW50 IHNpemVmbGFnKQogewogICBzd2l0Y2ggKHByZWYpCiAgICAgewpAQCAtMTgwOCwxMCArMTk5NCwx MCBAQAogICAgIGNhc2UgMHg2NjoKICAgICAgIHJldHVybiAoc2l6ZWZsYWcgJiBERkxBRykgPyAi ZGF0YTE2IiA6ICJkYXRhMzIiOwogICAgIGNhc2UgMHg2NzoKLSAgICAgIGlmIChtb2RlXzY0Yml0 KQotICAgICAgICByZXR1cm4gKHNpemVmbGFnICYgQUZMQUcpID8gImFkZHIzMiIgOiAiYWRkcjY0 IjsKKyAgICAgIGlmIChhZGRyZXNzX21vZGUgPT0gbW9kZV82NGJpdCkKKwlyZXR1cm4gKHNpemVm bGFnICYgQUZMQUcpID8gImFkZHIzMiIgOiAiYWRkcjY0IjsKICAgICAgIGVsc2UKLSAgICAgICAg cmV0dXJuICgoc2l6ZWZsYWcgJiBBRkxBRykgJiYgIW1vZGVfNjRiaXQpID8gImFkZHIxNiIgOiAi YWRkcjMyIjsKKwlyZXR1cm4gKHNpemVmbGFnICYgQUZMQUcpID8gImFkZHIxNiIgOiAiYWRkcjMy IjsKICAgICBjYXNlIEZXQUlUX09QQ09ERToKICAgICAgIHJldHVybiAiZndhaXQiOwogICAgIGRl ZmF1bHQ6CkBAIC0xODIxLDYgKzIwMDcsNyBAQAogCiBzdGF0aWMgY2hhciBvcDFvdXRbMTAwXSwg b3Ayb3V0WzEwMF0sIG9wM291dFsxMDBdOwogc3RhdGljIGludCBvcF9hZCwgb3BfaW5kZXhbM107 CitzdGF0aWMgaW50IHR3b19zb3VyY2Vfb3BzOwogc3RhdGljIGJmZF92bWEgb3BfYWRkcmVzc1sz XTsKIHN0YXRpYyBiZmRfdm1hIG9wX3JpcHJlbFszXTsKIHN0YXRpYyBiZmRfdm1hIHN0YXJ0X3Bj OwpAQCAtMTgzNCwxNiArMjAyMSwxNCBAQAogICogVGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIGxl bmd0aCBvZiB0aGlzIGluc3RydWN0aW9uIGluIGJ5dGVzLgogICovCiAKLXN0YXRpYyBpbnQ4X3Qg aW50ZWxfc3ludGF4Oworc3RhdGljIGNoYXIgaW50ZWxfc3ludGF4Owogc3RhdGljIGNoYXIgb3Bl bl9jaGFyOwogc3RhdGljIGNoYXIgY2xvc2VfY2hhcjsKIHN0YXRpYyBjaGFyIHNlcGFyYXRvcl9j aGFyOwogc3RhdGljIGNoYXIgc2NhbGVfY2hhcjsKIAogaW50Ci1wcmludF9pbnNuX2kzODYgKHBj LCBpbmZvKQotICAgICBiZmRfdm1hIHBjOwotICAgICBkaXNhc3NlbWJsZV9pbmZvICppbmZvOwor cHJpbnRfaW5zbl9pMzg2IChiZmRfdm1hIHBjLCBkaXNhc3NlbWJsZV9pbmZvICppbmZvKQogewog ICBpbnRlbF9zeW50YXggPSAtMTsKIApAQCAtMTg1MSwyNCArMjAzNiwyNCBAQAogfQogCiBzdGF0 aWMgaW50Ci1wcmludF9pbnNuIChwYywgaW5mbykKLSAgICAgYmZkX3ZtYSBwYzsKLSAgICAgZGlz YXNzZW1ibGVfaW5mbyAqaW5mbzsKK3ByaW50X2luc24gKGJmZF92bWEgcGMsIGRpc2Fzc2VtYmxl X2luZm8gKmluZm8pCiB7CiAgIGNvbnN0IHN0cnVjdCBkaXMzODYgKmRwOwogICBpbnQgaTsKLSAg aW50IHR3b19zb3VyY2Vfb3BzOwogICBjaGFyICpmaXJzdCwgKnNlY29uZCwgKnRoaXJkOwogICBp bnQgbmVlZGNvbW1hOwotICB1bnNpZ25lZCBjaGFyIHVzZXNfU1NFX3ByZWZpeDsKKyAgdW5zaWdu ZWQgY2hhciB1c2VzX1NTRV9wcmVmaXgsIHVzZXNfTE9DS19wcmVmaXg7CiAgIGludCBzaXplZmxh ZzsKICAgY29uc3QgY2hhciAqcDsKICAgc3RydWN0IGRpc19wcml2YXRlIHByaXY7CiAKLSAgbW9k ZV82NGJpdCA9IChpbmZvLT5tYWNoID09IGJmZF9tYWNoX3g4Nl82NF9pbnRlbF9zeW50YXgKLQkJ fHwgaW5mby0+bWFjaCA9PSBiZmRfbWFjaF94ODZfNjQpOworICBpZiAoaW5mby0+bWFjaCA9PSBi ZmRfbWFjaF94ODZfNjRfaW50ZWxfc3ludGF4CisgICAgICB8fCBpbmZvLT5tYWNoID09IGJmZF9t YWNoX3g4Nl82NCkKKyAgICBhZGRyZXNzX21vZGUgPSBtb2RlXzY0Yml0OworICBlbHNlCisgICAg YWRkcmVzc19tb2RlID0gbW9kZV8zMmJpdDsKIAotICBpZiAoaW50ZWxfc3ludGF4ID09IC0xKQor ICBpZiAoaW50ZWxfc3ludGF4ID09IChjaGFyKSAtMSkKICAgICBpbnRlbF9zeW50YXggPSAoaW5m by0+bWFjaCA9PSBiZmRfbWFjaF9pMzg2X2kzODZfaW50ZWxfc3ludGF4CiAJCSAgICB8fCBpbmZv LT5tYWNoID09IGJmZF9tYWNoX3g4Nl82NF9pbnRlbF9zeW50YXgpOwogCkBAIC0xODg2LDE3ICsy MDcxLDE3IEBACiAgICAgewogICAgICAgaWYgKHN0cm5jbXAgKHAsICJ4ODYtNjQiLCA2KSA9PSAw KQogCXsKLQkgIG1vZGVfNjRiaXQgPSAxOworCSAgYWRkcmVzc19tb2RlID0gbW9kZV82NGJpdDsK IAkgIHByaXYub3JpZ19zaXplZmxhZyA9IEFGTEFHIHwgREZMQUc7CiAJfQogICAgICAgZWxzZSBp ZiAoc3RybmNtcCAocCwgImkzODYiLCA0KSA9PSAwKQogCXsKLQkgIG1vZGVfNjRiaXQgPSAwOwor CSAgYWRkcmVzc19tb2RlID0gbW9kZV8zMmJpdDsKIAkgIHByaXYub3JpZ19zaXplZmxhZyA9IEFG TEFHIHwgREZMQUc7CiAJfQogICAgICAgZWxzZSBpZiAoc3RybmNtcCAocCwgImk4MDg2IiwgNSkg PT0gMCkKIAl7Ci0JICBtb2RlXzY0Yml0ID0gMDsKKwkgIGFkZHJlc3NfbW9kZSA9IG1vZGVfMTZi aXQ7CiAJICBwcml2Lm9yaWdfc2l6ZWZsYWcgPSAwOwogCX0KICAgICAgIGVsc2UgaWYgKHN0cm5j bXAgKHAsICJpbnRlbCIsIDUpID09IDApCkBAIC0xOTYyLDcgKzIxNDcsNyBAQAogICAgICBwdXRz IG1vc3QgbG9uZyB3b3JkIGluc3RydWN0aW9ucyBvbiBhIHNpbmdsZSBsaW5lLiAgKi8KICAgaW5m by0+Ynl0ZXNfcGVyX2xpbmUgPSA3OwogCi0gIGluZm8tPnByaXZhdGVfZGF0YSA9IChQVFIpICZw cml2OworICBpbmZvLT5wcml2YXRlX2RhdGEgPSAmcHJpdjsKICAgcHJpdi5tYXhfZmV0Y2hlZCA9 IHByaXYudGhlX2J1ZmZlcjsKICAgcHJpdi5pbnNuX3N0YXJ0ID0gcGM7CiAKQEAgLTIwMTIsMTMg KzIxOTcsMTQgQEAKICAgRkVUQ0hfREFUQSAoaW5mbywgY29kZXAgKyAxKTsKICAgdHdvX3NvdXJj ZV9vcHMgPSAoKmNvZGVwID09IDB4NjIpIHx8ICgqY29kZXAgPT0gMHhjOCk7CiAKLSAgaWYgKChw cmVmaXhlcyAmIFBSRUZJWF9GV0FJVCkKLSAgICAgICYmICgoKmNvZGVwIDwgMHhkOCkgfHwgKCpj b2RlcCA+IDB4ZGYpKSkKKyAgaWYgKCgocHJlZml4ZXMgJiBQUkVGSVhfRldBSVQpCisgICAgICAg JiYgKCgqY29kZXAgPCAweGQ4KSB8fCAoKmNvZGVwID4gMHhkZikpKQorICAgICAgfHwgKHJleCAm JiByZXhfdXNlZCkpCiAgICAgewogICAgICAgY29uc3QgY2hhciAqbmFtZTsKIAotICAgICAgLyog ZndhaXQgbm90IGZvbGxvd2VkIGJ5IGZsb2F0aW5nIHBvaW50IGluc3RydWN0aW9uLiAgUHJpbnQg dGhlCi0gICAgICAgICBmaXJzdCBwcmVmaXgsIHdoaWNoIGlzIHByb2JhYmx5IGZ3YWl0IGl0c2Vs Zi4gICovCisgICAgICAvKiBmd2FpdCBub3QgZm9sbG93ZWQgYnkgZmxvYXRpbmcgcG9pbnQgaW5z dHJ1Y3Rpb24sIG9yIHJleCBmb2xsb3dlZAorCSBieSBvdGhlciBwcmVmaXhlcy4gIFByaW50IHRo ZSBmaXJzdCBwcmVmaXguICAqLwogICAgICAgbmFtZSA9IHByZWZpeF9uYW1lIChwcml2LnRoZV9i dWZmZXJbMF0sIHByaXYub3JpZ19zaXplZmxhZyk7CiAgICAgICBpZiAobmFtZSA9PSBOVUxMKQog CW5hbWUgPSBJTlRFUk5BTF9ESVNBU1NFTUJMRVJfRVJST1I7CkBAIC0yMDMyLDEyICsyMjE4LDE0 IEBACiAgICAgICBkcCA9ICZkaXMzODZfdHdvYnl0ZVsqKytjb2RlcF07CiAgICAgICBuZWVkX21v ZHJtID0gdHdvYnl0ZV9oYXNfbW9kcm1bKmNvZGVwXTsKICAgICAgIHVzZXNfU1NFX3ByZWZpeCA9 IHR3b2J5dGVfdXNlc19TU0VfcHJlZml4Wypjb2RlcF07CisgICAgICB1c2VzX0xPQ0tfcHJlZml4 ID0gKCpjb2RlcCAmIH4weDAyKSA9PSAweDIwOwogICAgIH0KICAgZWxzZQogICAgIHsKICAgICAg IGRwID0gJmRpczM4NlsqY29kZXBdOwogICAgICAgbmVlZF9tb2RybSA9IG9uZWJ5dGVfaGFzX21v ZHJtWypjb2RlcF07CiAgICAgICB1c2VzX1NTRV9wcmVmaXggPSAwOworICAgICAgdXNlc19MT0NL X3ByZWZpeCA9IDA7CiAgICAgfQogICBjb2RlcCsrOwogCkBAIC0yMDUxLDcgKzIyMzksNyBAQAog ICAgICAgb2FwcGVuZCAoInJlcG56ICIpOwogICAgICAgdXNlZF9wcmVmaXhlcyB8PSBQUkVGSVhf UkVQTlo7CiAgICAgfQotICBpZiAocHJlZml4ZXMgJiBQUkVGSVhfTE9DSykKKyAgaWYgKCF1c2Vz X0xPQ0tfcHJlZml4ICYmIChwcmVmaXhlcyAmIFBSRUZJWF9MT0NLKSkKICAgICB7CiAgICAgICBv YXBwZW5kICgibG9jayAiKTsKICAgICAgIHVzZWRfcHJlZml4ZXMgfD0gUFJFRklYX0xPQ0s7CkBA IC0yMDYyLDcgKzIyNTAsNyBAQAogICAgICAgc2l6ZWZsYWcgXj0gQUZMQUc7CiAgICAgICBpZiAo ZHAtPmJ5dGVtb2RlMyAhPSBsb29wX2pjeHpfbW9kZSB8fCBpbnRlbF9zeW50YXgpCiAJewotCSAg aWYgKChzaXplZmxhZyAmIEFGTEFHKSB8fCBtb2RlXzY0Yml0KQorCSAgaWYgKChzaXplZmxhZyAm IEFGTEFHKSB8fCBhZGRyZXNzX21vZGUgPT0gbW9kZV82NGJpdCkKIAkgICAgb2FwcGVuZCAoImFk ZHIzMiAiKTsKIAkgIGVsc2UKIAkgICAgb2FwcGVuZCAoImFkZHIxNiAiKTsKQEAgLTIwODUsNyAr MjI3MywxNSBAQAogCX0KICAgICB9CiAKLSAgaWYgKG5lZWRfbW9kcm0pCisgIGlmIChkcC0+bmFt ZSA9PSBOVUxMICYmIGRwLT5ieXRlbW9kZTEgPT0gSVNfM0JZVEVfT1BDT0RFKQorICAgIHsKKyAg ICAgIEZFVENIX0RBVEEgKGluZm8sIGNvZGVwICsgMik7CisgICAgICBkcCA9ICZ0aHJlZV9ieXRl X3RhYmxlW2RwLT5ieXRlbW9kZTJdWypjb2RlcCsrXTsKKyAgICAgIG1vZCA9ICgqY29kZXAgPj4g NikgJiAzOworICAgICAgcmVnID0gKCpjb2RlcCA+PiAzKSAmIDc7CisgICAgICBybSA9ICpjb2Rl cCAmIDc7CisgICAgfQorICBlbHNlIGlmIChuZWVkX21vZHJtKQogICAgIHsKICAgICAgIEZFVENI X0RBVEEgKGluZm8sIGNvZGVwICsgMSk7CiAgICAgICBtb2QgPSAoKmNvZGVwID4+IDYpICYgMzsK QEAgLTIxMjksNyArMjMyNSw4IEBACiAJICAgICAgYnJlYWs7CiAKIAkgICAgY2FzZSBYODZfNjRf U1BFQ0lBTDoKLQkgICAgICBkcCA9ICZ4ODZfNjRfdGFibGVbZHAtPmJ5dGVtb2RlMl1bbW9kZV82 NGJpdF07CisJICAgICAgaW5kZXggPSBhZGRyZXNzX21vZGUgPT0gbW9kZV82NGJpdCA/IDEgOiAw OworCSAgICAgIGRwID0gJng4Nl82NF90YWJsZVtkcC0+Ynl0ZW1vZGUyXVtpbmRleF07CiAJICAg ICAgYnJlYWs7CiAKIAkgICAgZGVmYXVsdDoKQEAgLTIyNTEsMTQgKzI0NDgsMTQgQEAKICAgImZz dWJye3N8fHN8fSIsCiAgICJmZGl2e3N8fHN8fSIsCiAgICJmZGl2cntzfHxzfH0iLAotICAvKiAg ZDkgKi8KKyAgLyogZDkgKi8KICAgImZsZHtzfHxzfH0iLAogICAiKGJhZCkiLAogICAiZnN0e3N8 fHN8fSIsCiAgICJmc3Rwe3N8fHN8fSIsCi0gICJmbGRlbnYiLAorICAiZmxkZW52SUMiLAogICAi ZmxkY3ciLAotICAiZk5zdGVudiIsCisgICJmTnN0ZW52SUMiLAogICAiZk5zdGN3IiwKICAgLyog ZGEgKi8KICAgImZpYWRke2x8fGx8fSIsCkBAIC0yMjcxLDcgKzI0NjgsNyBAQAogICAiZmlkaXZy e2x8fGx8fSIsCiAgIC8qIGRiICovCiAgICJmaWxke2x8fGx8fSIsCi0gICIoYmFkKSIsCisgICJm aXN0dHB7bHx8bHx9IiwKICAgImZpc3R7bHx8bHx9IiwKICAgImZpc3Rwe2x8fGx8fSIsCiAgICIo YmFkKSIsCkBAIC0yMjg5LDEyICsyNDg2LDEyIEBACiAgICJmZGl2cntsfHxsfH0iLAogICAvKiBk ZCAqLwogICAiZmxke2x8fGx8fSIsCi0gICIoYmFkKSIsCisgICJmaXN0dHB7bGx8fGxsfH0iLAog ICAiZnN0e2x8fGx8fSIsCiAgICJmc3Rwe2x8fGx8fSIsCi0gICJmcnN0b3IiLAorICAiZnJzdG9y SUMiLAogICAiKGJhZCkiLAotICAiZk5zYXZlIiwKKyAgImZOc2F2ZUlDIiwKICAgImZOc3RzdyIs CiAgIC8qIGRlICovCiAgICJmaWFkZCIsCkBAIC0yMzA3LDEzICsyNTA0LDg4IEBACiAgICJmaWRp dnIiLAogICAvKiBkZiAqLwogICAiZmlsZCIsCi0gICIoYmFkKSIsCisgICJmaXN0dHAiLAogICAi ZmlzdCIsCiAgICJmaXN0cCIsCiAgICJmYmxkIiwKICAgImZpbGR7bGx8fGxsfH0iLAogICAiZmJz dHAiLAotICAiZmlzdHBsbCIsCisgICJmaXN0cHtsbHx8bGx8fSIsCit9OworCitzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBmbG9hdF9tZW1fbW9kZVtdID0geworICAvKiBkOCAqLworICBkX21v ZGUsCisgIGRfbW9kZSwKKyAgZF9tb2RlLAorICBkX21vZGUsCisgIGRfbW9kZSwKKyAgZF9tb2Rl LAorICBkX21vZGUsCisgIGRfbW9kZSwKKyAgLyogZDkgKi8KKyAgZF9tb2RlLAorICAwLAorICBk X21vZGUsCisgIGRfbW9kZSwKKyAgMCwKKyAgd19tb2RlLAorICAwLAorICB3X21vZGUsCisgIC8q IGRhICovCisgIGRfbW9kZSwKKyAgZF9tb2RlLAorICBkX21vZGUsCisgIGRfbW9kZSwKKyAgZF9t b2RlLAorICBkX21vZGUsCisgIGRfbW9kZSwKKyAgZF9tb2RlLAorICAvKiBkYiAqLworICBkX21v ZGUsCisgIGRfbW9kZSwKKyAgZF9tb2RlLAorICBkX21vZGUsCisgIDAsCisgIHRfbW9kZSwKKyAg MCwKKyAgdF9tb2RlLAorICAvKiBkYyAqLworICBxX21vZGUsCisgIHFfbW9kZSwKKyAgcV9tb2Rl LAorICBxX21vZGUsCisgIHFfbW9kZSwKKyAgcV9tb2RlLAorICBxX21vZGUsCisgIHFfbW9kZSwK KyAgLyogZGQgKi8KKyAgcV9tb2RlLAorICBxX21vZGUsCisgIHFfbW9kZSwKKyAgcV9tb2RlLAor ICAwLAorICAwLAorICAwLAorICB3X21vZGUsCisgIC8qIGRlICovCisgIHdfbW9kZSwKKyAgd19t b2RlLAorICB3X21vZGUsCisgIHdfbW9kZSwKKyAgd19tb2RlLAorICB3X21vZGUsCisgIHdfbW9k ZSwKKyAgd19tb2RlLAorICAvKiBkZiAqLworICB3X21vZGUsCisgIHdfbW9kZSwKKyAgd19tb2Rl LAorICB3X21vZGUsCisgIHRfbW9kZSwKKyAgcV9tb2RlLAorICB0X21vZGUsCisgIHFfbW9kZQog fTsKIAogI2RlZmluZSBTVCBPUF9TVCwgMApAQCAtMjQ4Myw4ICsyNzU1LDcgQEAKIH07CiAKIHN0 YXRpYyB2b2lkCi1kb2Zsb2F0IChzaXplZmxhZykKLSAgICAgaW50IHNpemVmbGFnOworZG9mbG9h dCAoaW50IHNpemVmbGFnKQogewogICBjb25zdCBzdHJ1Y3QgZGlzMzg2ICpkcDsKICAgdW5zaWdu ZWQgY2hhciBmbG9hdG9wOwpAQCAtMjQ5MywxNCArMjc2NCwxMiBAQAogCiAgIGlmIChtb2QgIT0g MykKICAgICB7Ci0gICAgICBwdXRvcCAoZmxvYXRfbWVtWyhmbG9hdG9wIC0gMHhkOCkgKiA4ICsg cmVnXSwgc2l6ZWZsYWcpOworICAgICAgaW50IGZwX2luZHggPSAoZmxvYXRvcCAtIDB4ZDgpICog OCArIHJlZzsKKworICAgICAgcHV0b3AgKGZsb2F0X21lbVtmcF9pbmR4XSwgc2l6ZWZsYWcpOwog ICAgICAgb2J1ZnAgPSBvcDFvdXQ7Ci0gICAgICBpZiAoZmxvYXRvcCA9PSAweGRiKQotICAgICAg ICBPUF9FICh4X21vZGUsIHNpemVmbGFnKTsKLSAgICAgIGVsc2UgaWYgKGZsb2F0b3AgPT0gMHhk ZCkKLSAgICAgICAgT1BfRSAoZF9tb2RlLCBzaXplZmxhZyk7Ci0gICAgICBlbHNlCi0gICAgICAg IE9QX0UgKHZfbW9kZSwgc2l6ZWZsYWcpOworICAgICAgb3BfYWQgPSAyOworICAgICAgT1BfRSAo ZmxvYXRfbWVtX21vZGVbZnBfaW5keF0sIHNpemVmbGFnKTsKICAgICAgIHJldHVybjsKICAgICB9 CiAgIC8qIFNraXAgbW9kL3JtIGJ5dGUuICAqLwpAQCAtMjUyMSwyNiArMjc5MCwyNSBAQAogICAg ICAgcHV0b3AgKGRwLT5uYW1lLCBzaXplZmxhZyk7CiAKICAgICAgIG9idWZwID0gb3Axb3V0Owor ICAgICAgb3BfYWQgPSAyOwogICAgICAgaWYgKGRwLT5vcDEpCiAJKCpkcC0+b3AxKSAoZHAtPmJ5 dGVtb2RlMSwgc2l6ZWZsYWcpOworCiAgICAgICBvYnVmcCA9IG9wMm91dDsKKyAgICAgIG9wX2Fk ID0gMTsKICAgICAgIGlmIChkcC0+b3AyKQogCSgqZHAtPm9wMikgKGRwLT5ieXRlbW9kZTIsIHNp emVmbGFnKTsKICAgICB9CiB9CiAKIHN0YXRpYyB2b2lkCi1PUF9TVCAoYnl0ZW1vZGUsIHNpemVm bGFnKQotICAgICBpbnQgYnl0ZW1vZGU7Ci0gICAgIGludCBzaXplZmxhZzsKK09QX1NUIChpbnQg Ynl0ZW1vZGUgQVRUUklCVVRFX1VOVVNFRCwgaW50IHNpemVmbGFnIEFUVFJJQlVURV9VTlVTRUQp CiB7Ci0gIG9hcHBlbmQgKCIlc3QiKTsKKyAgb2FwcGVuZCAoIiVzdCIgKyBpbnRlbF9zeW50YXgp OwogfQogCiBzdGF0aWMgdm9pZAotT1BfU1RpIChieXRlbW9kZSwgc2l6ZWZsYWcpCi0gICAgIGlu dCBieXRlbW9kZTsKLSAgICAgaW50IHNpemVmbGFnOworT1BfU1RpIChpbnQgYnl0ZW1vZGUgQVRU UklCVVRFX1VOVVNFRCwgaW50IHNpemVmbGFnIEFUVFJJQlVURV9VTlVTRUQpCiB7CiAgIHNucHJp bnRmIChzY3JhdGNoYnVmLCBzaXplb2Yoc2NyYXRjaGJ1ZiksICIlJXN0KCVkKSIsIHJtKTsKICAg b2FwcGVuZCAoc2NyYXRjaGJ1ZiArIGludGVsX3N5bnRheCk7CkBAIC0yNTQ4LDEyICsyODE2LDEw IEBACiAKIC8qIENhcGl0YWwgbGV0dGVycyBpbiB0ZW1wbGF0ZSBhcmUgbWFjcm9zLiAgKi8KIHN0 YXRpYyBpbnQKLXB1dG9wICh0ZW1wbGF0ZSwgc2l6ZWZsYWcpCi0gICAgIGNvbnN0IGNoYXIgKnRl bXBsYXRlOwotICAgICBpbnQgc2l6ZWZsYWc7CitwdXRvcCAoY29uc3QgY2hhciAqdGVtcGxhdGUs IGludCBzaXplZmxhZykKIHsKICAgY29uc3QgY2hhciAqcDsKLSAgaW50IGFsdDsKKyAgaW50IGFs dCA9IDA7CiAKICAgZm9yIChwID0gdGVtcGxhdGU7ICpwOyBwKyspCiAgICAgewpAQCAtMjU2Niw3 ICsyODMyLDcgQEAKIAkgIGFsdCA9IDA7CiAJICBpZiAoaW50ZWxfc3ludGF4KQogCSAgICBhbHQg Kz0gMTsKLQkgIGlmIChtb2RlXzY0Yml0KQorCSAgaWYgKGFkZHJlc3NfbW9kZSA9PSBtb2RlXzY0 Yml0KQogCSAgICBhbHQgKz0gMjsKIAkgIHdoaWxlIChhbHQgIT0gMCkKIAkgICAgewpAQCAtMjU4 NCw3ICsyODUwLDEwIEBACiAJCX0KIAkgICAgICBhbHQtLTsKIAkgICAgfQotCSAgYnJlYWs7CisJ ICAvKiBGYWxsIHRocm91Z2guICAqLworCWNhc2UgJ0knOgorCSAgYWx0ID0gMTsKKwkgIGNvbnRp bnVlOwogCWNhc2UgJ3wnOgogCSAgd2hpbGUgKCorK3AgIT0gJ30nKQogCSAgICB7CkBAIC0yNTk1 LDE5ICsyODY0LDMxIEBACiAJY2FzZSAnfSc6CiAJICBicmVhazsKIAljYXNlICdBJzoKLSAgICAg ICAgICBpZiAoaW50ZWxfc3ludGF4KQotICAgICAgICAgICAgYnJlYWs7CisJICBpZiAoaW50ZWxf c3ludGF4KQorCSAgICBicmVhazsKIAkgIGlmIChtb2QgIT0gMyB8fCAoc2l6ZWZsYWcgJiBTVUZG SVhfQUxXQVlTKSkKIAkgICAgKm9idWZwKysgPSAnYic7CiAJICBicmVhazsKIAljYXNlICdCJzoK LSAgICAgICAgICBpZiAoaW50ZWxfc3ludGF4KQotICAgICAgICAgICAgYnJlYWs7CisJICBpZiAo aW50ZWxfc3ludGF4KQorCSAgICBicmVhazsKIAkgIGlmIChzaXplZmxhZyAmIFNVRkZJWF9BTFdB WVMpCiAJICAgICpvYnVmcCsrID0gJ2InOwogCSAgYnJlYWs7CisJY2FzZSAnQyc6CisJICBpZiAo aW50ZWxfc3ludGF4ICYmICFhbHQpCisJICAgIGJyZWFrOworCSAgaWYgKChwcmVmaXhlcyAmIFBS RUZJWF9EQVRBKSB8fCAoc2l6ZWZsYWcgJiBTVUZGSVhfQUxXQVlTKSkKKwkgICAgeworCSAgICAg IGlmIChzaXplZmxhZyAmIERGTEFHKQorCQkqb2J1ZnArKyA9IGludGVsX3N5bnRheCA/ICdkJyA6 ICdsJzsKKwkgICAgICBlbHNlCisJCSpvYnVmcCsrID0gaW50ZWxfc3ludGF4ID8gJ3cnIDogJ3Mn OworCSAgICAgIHVzZWRfcHJlZml4ZXMgfD0gKHByZWZpeGVzICYgUFJFRklYX0RBVEEpOworCSAg ICB9CisJICBicmVhazsKIAljYXNlICdFJzoJCS8qIEZvciBqY3h6L2plY3h6ICovCi0JICBpZiAo bW9kZV82NGJpdCkKKwkgIGlmIChhZGRyZXNzX21vZGUgPT0gbW9kZV82NGJpdCkKIAkgICAgewog CSAgICAgIGlmIChzaXplZmxhZyAmIEFGTEFHKQogCQkqb2J1ZnArKyA9ICdyJzsKQEAgLTI2MjAs MjAgKzI5MDEsMjAgQEAKIAkgIHVzZWRfcHJlZml4ZXMgfD0gKHByZWZpeGVzICYgUFJFRklYX0FE RFIpOwogCSAgYnJlYWs7CiAJY2FzZSAnRic6Ci0gICAgICAgICAgaWYgKGludGVsX3N5bnRheCkK LSAgICAgICAgICAgIGJyZWFrOworCSAgaWYgKGludGVsX3N5bnRheCkKKwkgICAgYnJlYWs7CiAJ ICBpZiAoKHByZWZpeGVzICYgUFJFRklYX0FERFIpIHx8IChzaXplZmxhZyAmIFNVRkZJWF9BTFdB WVMpKQogCSAgICB7CiAJICAgICAgaWYgKHNpemVmbGFnICYgQUZMQUcpCi0JCSpvYnVmcCsrID0g bW9kZV82NGJpdCA/ICdxJyA6ICdsJzsKKwkJKm9idWZwKysgPSBhZGRyZXNzX21vZGUgPT0gbW9k ZV82NGJpdCA/ICdxJyA6ICdsJzsKIAkgICAgICBlbHNlCi0JCSpvYnVmcCsrID0gbW9kZV82NGJp dCA/ICdsJyA6ICd3JzsKKwkJKm9idWZwKysgPSBhZGRyZXNzX21vZGUgPT0gbW9kZV82NGJpdCA/ ICdsJyA6ICd3JzsKIAkgICAgICB1c2VkX3ByZWZpeGVzIHw9IChwcmVmaXhlcyAmIFBSRUZJWF9B RERSKTsKIAkgICAgfQogCSAgYnJlYWs7CiAJY2FzZSAnSCc6Ci0gICAgICAgICAgaWYgKGludGVs X3N5bnRheCkKLSAgICAgICAgICAgIGJyZWFrOworCSAgaWYgKGludGVsX3N5bnRheCkKKwkgICAg YnJlYWs7CiAJICBpZiAoKHByZWZpeGVzICYgKFBSRUZJWF9DUyB8IFBSRUZJWF9EUykpID09IFBS RUZJWF9DUwogCSAgICAgIHx8IChwcmVmaXhlcyAmIChQUkVGSVhfQ1MgfCBQUkVGSVhfRFMpKSA9 PSBQUkVGSVhfRFMpCiAJICAgIHsKQEAgLTI2NDYsOSArMjkyNywyMyBAQAogCQkqb2J1ZnArKyA9 ICduJzsKIAkgICAgfQogCSAgYnJlYWs7CisJY2FzZSAnSic6CisJICBpZiAoaW50ZWxfc3ludGF4 KQorCSAgICBicmVhazsKKwkgICpvYnVmcCsrID0gJ2wnOworCSAgYnJlYWs7CisJY2FzZSAnWic6 CisJICBpZiAoaW50ZWxfc3ludGF4KQorCSAgICBicmVhazsKKwkgIGlmIChhZGRyZXNzX21vZGUg PT0gbW9kZV82NGJpdCAmJiAoc2l6ZWZsYWcgJiBTVUZGSVhfQUxXQVlTKSkKKwkgICAgeworCSAg ICAgICpvYnVmcCsrID0gJ3EnOworCSAgICAgIGJyZWFrOworCSAgICB9CisJICAvKiBGYWxsIHRo cm91Z2guICAqLwogCWNhc2UgJ0wnOgotICAgICAgICAgIGlmIChpbnRlbF9zeW50YXgpCi0gICAg ICAgICAgICBicmVhazsKKwkgIGlmIChpbnRlbF9zeW50YXgpCisJICAgIGJyZWFrOwogCSAgaWYg KHNpemVmbGFnICYgU1VGRklYX0FMV0FZUykKIAkgICAgKm9idWZwKysgPSAnbCc7CiAJICBicmVh azsKQEAgLTI2NjYsMTcgKzI5NjEsMTcgQEAKIAkgICAgKm9idWZwKysgPSAnZCc7CiAJICBicmVh azsKIAljYXNlICdUJzoKLSAgICAgICAgICBpZiAoaW50ZWxfc3ludGF4KQotICAgICAgICAgICAg YnJlYWs7Ci0JICBpZiAobW9kZV82NGJpdCkKKwkgIGlmIChpbnRlbF9zeW50YXgpCisJICAgIGJy ZWFrOworCSAgaWYgKGFkZHJlc3NfbW9kZSA9PSBtb2RlXzY0Yml0ICYmIChzaXplZmxhZyAmIERG TEFHKSkKIAkgICAgewogCSAgICAgICpvYnVmcCsrID0gJ3EnOwogCSAgICAgIGJyZWFrOwogCSAg ICB9CiAJICAvKiBGYWxsIHRocm91Z2guICAqLwogCWNhc2UgJ1AnOgotICAgICAgICAgIGlmIChp bnRlbF9zeW50YXgpCi0gICAgICAgICAgICBicmVhazsKKwkgIGlmIChpbnRlbF9zeW50YXgpCisJ ICAgIGJyZWFrOwogCSAgaWYgKChwcmVmaXhlcyAmIFBSRUZJWF9EQVRBKQogCSAgICAgIHx8IChy ZXggJiBSRVhfTU9ERTY0KQogCSAgICAgIHx8IChzaXplZmxhZyAmIFNVRkZJWF9BTFdBWVMpKQpA QCAtMjY5MCwyMiArMjk4NSwyMyBAQAogCQkgICAgICAqb2J1ZnArKyA9ICdsJzsKIAkJICAgZWxz ZQogCQkgICAgICpvYnVmcCsrID0gJ3cnOwotCQkgICB1c2VkX3ByZWZpeGVzIHw9IChwcmVmaXhl cyAmIFBSRUZJWF9EQVRBKTsKIAkJfQorCSAgICAgIHVzZWRfcHJlZml4ZXMgfD0gKHByZWZpeGVz ICYgUFJFRklYX0RBVEEpOwogCSAgICB9CiAJICBicmVhazsKIAljYXNlICdVJzoKLSAgICAgICAg ICBpZiAoaW50ZWxfc3ludGF4KQotICAgICAgICAgICAgYnJlYWs7Ci0JICBpZiAobW9kZV82NGJp dCkKKwkgIGlmIChpbnRlbF9zeW50YXgpCisJICAgIGJyZWFrOworCSAgaWYgKGFkZHJlc3NfbW9k ZSA9PSBtb2RlXzY0Yml0ICYmIChzaXplZmxhZyAmIERGTEFHKSkKIAkgICAgewotCSAgICAgICpv YnVmcCsrID0gJ3EnOworCSAgICAgIGlmIChtb2QgIT0gMyB8fCAoc2l6ZWZsYWcgJiBTVUZGSVhf QUxXQVlTKSkKKwkJKm9idWZwKysgPSAncSc7CiAJICAgICAgYnJlYWs7CiAJICAgIH0KIAkgIC8q IEZhbGwgdGhyb3VnaC4gICovCiAJY2FzZSAnUSc6Ci0gICAgICAgICAgaWYgKGludGVsX3N5bnRh eCkKLSAgICAgICAgICAgIGJyZWFrOworCSAgaWYgKGludGVsX3N5bnRheCAmJiAhYWx0KQorCSAg ICBicmVhazsKIAkgIFVTRURfUkVYIChSRVhfTU9ERTY0KTsKIAkgIGlmIChtb2QgIT0gMyB8fCAo c2l6ZWZsYWcgJiBTVUZGSVhfQUxXQVlTKSkKIAkgICAgewpAQCAtMjcxNCwxNiArMzAxMCwxNiBA QAogCSAgICAgIGVsc2UKIAkJewogCQkgIGlmIChzaXplZmxhZyAmIERGTEFHKQotCQkgICAgKm9i dWZwKysgPSAnbCc7CisJCSAgICAqb2J1ZnArKyA9IGludGVsX3N5bnRheCA/ICdkJyA6ICdsJzsK IAkJICBlbHNlCiAJCSAgICAqb2J1ZnArKyA9ICd3JzsKLQkJICB1c2VkX3ByZWZpeGVzIHw9IChw cmVmaXhlcyAmIFBSRUZJWF9EQVRBKTsKIAkJfQorCSAgICAgIHVzZWRfcHJlZml4ZXMgfD0gKHBy ZWZpeGVzICYgUFJFRklYX0RBVEEpOwogCSAgICB9CiAJICBicmVhazsKIAljYXNlICdSJzoKIAkg IFVTRURfUkVYIChSRVhfTU9ERTY0KTsKLSAgICAgICAgICBpZiAoaW50ZWxfc3ludGF4KQorCSAg aWYgKGludGVsX3N5bnRheCkKIAkgICAgewogCSAgICAgIGlmIChyZXggJiBSRVhfTU9ERTY0KQog CQl7CkBAIC0yNzUzLDkgKzMwNDksMTkgQEAKIAkgIGlmICghKHJleCAmIFJFWF9NT0RFNjQpKQog CSAgICB1c2VkX3ByZWZpeGVzIHw9IChwcmVmaXhlcyAmIFBSRUZJWF9EQVRBKTsKIAkgIGJyZWFr OworCWNhc2UgJ1YnOgorCSAgaWYgKGludGVsX3N5bnRheCkKKwkgICAgYnJlYWs7CisJICBpZiAo YWRkcmVzc19tb2RlID09IG1vZGVfNjRiaXQgJiYgKHNpemVmbGFnICYgREZMQUcpKQorCSAgICB7 CisJICAgICAgaWYgKHNpemVmbGFnICYgU1VGRklYX0FMV0FZUykKKwkJKm9idWZwKysgPSAncSc7 CisJICAgICAgYnJlYWs7CisJICAgIH0KKwkgIC8qIEZhbGwgdGhyb3VnaC4gICovCiAJY2FzZSAn Uyc6Ci0gICAgICAgICAgaWYgKGludGVsX3N5bnRheCkKLSAgICAgICAgICAgIGJyZWFrOworCSAg aWYgKGludGVsX3N5bnRheCkKKwkgICAgYnJlYWs7CiAJICBpZiAoc2l6ZWZsYWcgJiBTVUZGSVhf QUxXQVlTKQogCSAgICB7CiAJICAgICAgaWYgKHJleCAmIFJFWF9NT0RFNjQpCkBAIC0yNzc1LDEx ICszMDgxLDExIEBACiAJICAgICpvYnVmcCsrID0gJ2QnOwogCSAgZWxzZQogCSAgICAqb2J1ZnAr KyA9ICdzJzsKLSAgICAgICAgICB1c2VkX3ByZWZpeGVzIHw9IChwcmVmaXhlcyAmIFBSRUZJWF9E QVRBKTsKKwkgIHVzZWRfcHJlZml4ZXMgfD0gKHByZWZpeGVzICYgUFJFRklYX0RBVEEpOwogCSAg YnJlYWs7CiAJY2FzZSAnWSc6Ci0gICAgICAgICAgaWYgKGludGVsX3N5bnRheCkKLSAgICAgICAg ICAgIGJyZWFrOworCSAgaWYgKGludGVsX3N5bnRheCkKKwkgICAgYnJlYWs7CiAJICBpZiAocmV4 ICYgUkVYX01PREU2NCkKIAkgICAgewogCSAgICAgIFVTRURfUkVYIChSRVhfTU9ERTY0KTsKQEAg LTI3OTYsNyArMzEwMiw3IEBACiAJICAgICpvYnVmcCsrID0gJ3cnOwogCSAgZWxzZQogCSAgICAq b2J1ZnArKyA9ICdiJzsKLSAgICAgICAgICBpZiAoaW50ZWxfc3ludGF4KQorCSAgaWYgKGludGVs X3N5bnRheCkKIAkgICAgewogCSAgICAgIGlmIChyZXgpCiAJCXsKQEAgLTI4MTcsMjEgKzMxMjMs MjEgQEAKIAkgICAgdXNlZF9wcmVmaXhlcyB8PSAocHJlZml4ZXMgJiBQUkVGSVhfREFUQSk7CiAJ ICBicmVhazsKIAl9CisgICAgICBhbHQgPSAwOwogICAgIH0KICAgKm9idWZwID0gMDsKICAgcmV0 dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkCi1vYXBwZW5kIChzKQotICAgICBjb25zdCBjaGFyICpz Oworb2FwcGVuZCAoY29uc3QgY2hhciAqcykKIHsKICAgc3RyY3B5IChvYnVmcCwgcyk7CiAgIG9i dWZwICs9IHN0cmxlbiAocyk7CiB9CiAKIHN0YXRpYyB2b2lkCi1hcHBlbmRfc2VnICgpCithcHBl bmRfc2VnICh2b2lkKQogewogICBpZiAocHJlZml4ZXMgJiBQUkVGSVhfQ1MpCiAgICAgewpAQCAt Mjg2Niw5ICszMTcyLDcgQEAKIH0KIAogc3RhdGljIHZvaWQKLU9QX2luZGlyRSAoYnl0ZW1vZGUs IHNpemVmbGFnKQotICAgICBpbnQgYnl0ZW1vZGU7Ci0gICAgIGludCBzaXplZmxhZzsKK09QX2lu ZGlyRSAoaW50IGJ5dGVtb2RlLCBpbnQgc2l6ZWZsYWcpCiB7CiAgIGlmICghaW50ZWxfc3ludGF4 KQogICAgIG9hcHBlbmQgKCIqIik7CkBAIC0yODc4LDcgKzMxODIsNyBAQAogc3RhdGljIHZvaWQK IHByaW50X29wZXJhbmRfdmFsdWUgKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUsIGludCBoZXgs IGJmZF92bWEgZGlzcCkKIHsKLSAgaWYgKG1vZGVfNjRiaXQpCisgIGlmIChhZGRyZXNzX21vZGUg PT0gbW9kZV82NGJpdCkKICAgICB7CiAgICAgICBpZiAoaGV4KQogCXsKQEAgLTI5MzMsOSArMzIz Nyw2OCBAQAogfQogCiBzdGF0aWMgdm9pZAotT1BfRSAoYnl0ZW1vZGUsIHNpemVmbGFnKQotICAg ICBpbnQgYnl0ZW1vZGU7Ci0gICAgIGludCBzaXplZmxhZzsKK2ludGVsX29wZXJhbmRfc2l6ZSAo aW50IGJ5dGVtb2RlLCBpbnQgc2l6ZWZsYWcpCit7CisgIHN3aXRjaCAoYnl0ZW1vZGUpCisgICAg eworICAgIGNhc2UgYl9tb2RlOgorICAgICAgb2FwcGVuZCAoIkJZVEUgUFRSICIpOworICAgICAg YnJlYWs7CisgICAgY2FzZSB3X21vZGU6CisgICAgY2FzZSBkcXdfbW9kZToKKyAgICAgIG9hcHBl bmQgKCJXT1JEIFBUUiAiKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2Ugc3RhY2tfdl9tb2RlOgor ICAgICAgaWYgKGFkZHJlc3NfbW9kZSA9PSBtb2RlXzY0Yml0ICYmIChzaXplZmxhZyAmIERGTEFH KSkKKwl7CisJICBvYXBwZW5kICgiUVdPUkQgUFRSICIpOworCSAgdXNlZF9wcmVmaXhlcyB8PSAo cHJlZml4ZXMgJiBQUkVGSVhfREFUQSk7CisJICBicmVhazsKKwl9CisgICAgICAvKiBGQUxMVEhS VSAqLworICAgIGNhc2Ugdl9tb2RlOgorICAgIGNhc2UgZHFfbW9kZToKKyAgICAgIFVTRURfUkVY IChSRVhfTU9ERTY0KTsKKyAgICAgIGlmIChyZXggJiBSRVhfTU9ERTY0KQorCW9hcHBlbmQgKCJR V09SRCBQVFIgIik7CisgICAgICBlbHNlIGlmICgoc2l6ZWZsYWcgJiBERkxBRykgfHwgYnl0ZW1v ZGUgPT0gZHFfbW9kZSkKKwlvYXBwZW5kICgiRFdPUkQgUFRSICIpOworICAgICAgZWxzZQorCW9h cHBlbmQgKCJXT1JEIFBUUiAiKTsKKyAgICAgIHVzZWRfcHJlZml4ZXMgfD0gKHByZWZpeGVzICYg UFJFRklYX0RBVEEpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBkX21vZGU6CisgICAgICBvYXBw ZW5kICgiRFdPUkQgUFRSICIpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBxX21vZGU6CisgICAg ICBvYXBwZW5kICgiUVdPUkQgUFRSICIpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBtX21vZGU6 CisgICAgICBpZiAoYWRkcmVzc19tb2RlID09IG1vZGVfNjRiaXQpCisJb2FwcGVuZCAoIlFXT1JE IFBUUiAiKTsKKyAgICAgIGVsc2UKKwlvYXBwZW5kICgiRFdPUkQgUFRSICIpOworICAgICAgYnJl YWs7CisgICAgY2FzZSBmX21vZGU6CisgICAgICBpZiAoc2l6ZWZsYWcgJiBERkxBRykKKwlvYXBw ZW5kICgiRldPUkQgUFRSICIpOworICAgICAgZWxzZQorCW9hcHBlbmQgKCJEV09SRCBQVFIgIik7 CisgICAgICB1c2VkX3ByZWZpeGVzIHw9IChwcmVmaXhlcyAmIFBSRUZJWF9EQVRBKTsKKyAgICAg IGJyZWFrOworICAgIGNhc2UgdF9tb2RlOgorICAgICAgb2FwcGVuZCAoIlRCWVRFIFBUUiAiKTsK KyAgICAgIGJyZWFrOworICAgIGNhc2UgeF9tb2RlOgorICAgICAgb2FwcGVuZCAoIlhNTVdPUkQg UFRSICIpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICAgIH0K K30KKworc3RhdGljIHZvaWQKK09QX0UgKGludCBieXRlbW9kZSwgaW50IHNpemVmbGFnKQogewog ICBiZmRfdm1hIGRpc3A7CiAgIGludCBhZGQgPSAwOwpAQCAtMjk2OSwyNiArMzMzMiwzMyBAQAog CSAgb2FwcGVuZCAobmFtZXM2NFtybSArIGFkZF0pOwogCSAgYnJlYWs7CiAJY2FzZSBtX21vZGU6 Ci0JICBpZiAobW9kZV82NGJpdCkKKwkgIGlmIChhZGRyZXNzX21vZGUgPT0gbW9kZV82NGJpdCkK IAkgICAgb2FwcGVuZCAobmFtZXM2NFtybSArIGFkZF0pOwogCSAgZWxzZQogCSAgICBvYXBwZW5k IChuYW1lczMyW3JtICsgYWRkXSk7CiAJICBicmVhazsKKwljYXNlIHN0YWNrX3ZfbW9kZToKKwkg IGlmIChhZGRyZXNzX21vZGUgPT0gbW9kZV82NGJpdCAmJiAoc2l6ZWZsYWcgJiBERkxBRykpCisJ ICAgIHsKKwkgICAgICBvYXBwZW5kIChuYW1lczY0W3JtICsgYWRkXSk7CisJICAgICAgdXNlZF9w cmVmaXhlcyB8PSAocHJlZml4ZXMgJiBQUkVGSVhfREFUQSk7CisJICAgICAgYnJlYWs7CisJICAg IH0KKwkgIGJ5dGVtb2RlID0gdl9tb2RlOworCSAgLyogRkFMTFRIUlUgKi8KIAljYXNlIHZfbW9k ZToKKwljYXNlIGRxX21vZGU6CisJY2FzZSBkcXdfbW9kZToKIAkgIFVTRURfUkVYIChSRVhfTU9E RTY0KTsKIAkgIGlmIChyZXggJiBSRVhfTU9ERTY0KQogCSAgICBvYXBwZW5kIChuYW1lczY0W3Jt ICsgYWRkXSk7Ci0JICBlbHNlIGlmIChzaXplZmxhZyAmIERGTEFHKQorCSAgZWxzZSBpZiAoKHNp emVmbGFnICYgREZMQUcpIHx8IGJ5dGVtb2RlICE9IHZfbW9kZSkKIAkgICAgb2FwcGVuZCAobmFt ZXMzMltybSArIGFkZF0pOwogCSAgZWxzZQogCSAgICBvYXBwZW5kIChuYW1lczE2W3JtICsgYWRk XSk7CiAJICB1c2VkX3ByZWZpeGVzIHw9IChwcmVmaXhlcyAmIFBSRUZJWF9EQVRBKTsKIAkgIGJy ZWFrOwogCWNhc2UgMDoKLQkgIGlmICghKGNvZGVwWy0yXSA9PSAweEFFICYmIGNvZGVwWy0xXSA9 PSAweEY4IC8qIHNmZW5jZSAqLykKLQkgICAgICAmJiAhKGNvZGVwWy0yXSA9PSAweEFFICYmIGNv ZGVwWy0xXSA9PSAweEYwIC8qIG1mZW5jZSAqLykKLQkgICAgICAmJiAhKGNvZGVwWy0yXSA9PSAw eEFFICYmIGNvZGVwWy0xXSA9PSAweGU4IC8qIGxmZW5jZSAqLykpCi0JICAgIEJhZE9wICgpOwkv KiBiYWQgc2ZlbmNlLGxlYSxsZHMsbGVzLGxmcyxsZ3MsbHNzIG1vZHJtICovCiAJICBicmVhazsK IAlkZWZhdWx0OgogCSAgb2FwcGVuZCAoSU5URVJOQUxfRElTQVNTRU1CTEVSX0VSUk9SKTsKQEAg LTI5OTgsOSArMzM2OCwxMSBAQAogICAgIH0KIAogICBkaXNwID0gMDsKKyAgaWYgKGludGVsX3N5 bnRheCkKKyAgICBpbnRlbF9vcGVyYW5kX3NpemUgKGJ5dGVtb2RlLCBzaXplZmxhZyk7CiAgIGFw cGVuZF9zZWcgKCk7CiAKLSAgaWYgKChzaXplZmxhZyAmIEFGTEFHKSB8fCBtb2RlXzY0Yml0KSAv KiAzMiBiaXQgYWRkcmVzcyBtb2RlICovCisgIGlmICgoc2l6ZWZsYWcgJiBBRkxBRykgfHwgYWRk cmVzc19tb2RlID09IG1vZGVfNjRiaXQpIC8qIDMyIGJpdCBhZGRyZXNzIG1vZGUgKi8KICAgICB7 CiAgICAgICBpbnQgaGF2ZXNpYjsKICAgICAgIGludCBoYXZlYmFzZTsKQEAgLTMwMTYsMTcgKzMz ODgsMTcgQEAKIAl7CiAJICBoYXZlc2liID0gMTsKIAkgIEZFVENIX0RBVEEgKHRoZV9pbmZvLCBj b2RlcCArIDEpOwotCSAgc2NhbGUgPSAoKmNvZGVwID4+IDYpICYgMzsKIAkgIGluZGV4ID0gKCpj b2RlcCA+PiAzKSAmIDc7CisJICBpZiAoYWRkcmVzc19tb2RlID09IG1vZGVfNjRiaXQgfHwgaW5k ZXggIT0gMHg0KQorCSAgICAvKiBXaGVuIElOREVYID09IDB4NCBpbiAzMiBiaXQgbW9kZSwgU0NB TEUgaXMgaWdub3JlZC4gICovCisJICAgIHNjYWxlID0gKCpjb2RlcCA+PiA2KSAmIDM7CiAJICBi YXNlID0gKmNvZGVwICYgNzsKIAkgIFVTRURfUkVYIChSRVhfRVhUWSk7Ci0JICBVU0VEX1JFWCAo UkVYX0VYVFopOwogCSAgaWYgKHJleCAmIFJFWF9FWFRZKQogCSAgICBpbmRleCArPSA4OwotCSAg aWYgKHJleCAmIFJFWF9FWFRaKQotCSAgICBiYXNlICs9IDg7CiAJICBjb2RlcCsrOwogCX0KKyAg ICAgIGJhc2UgKz0gYWRkOwogCiAgICAgICBzd2l0Y2ggKG1vZCkKIAl7CkBAIC0zMDM0LDcgKzM0 MDYsNyBAQAogCSAgaWYgKChiYXNlICYgNykgPT0gNSkKIAkgICAgewogCSAgICAgIGhhdmViYXNl ID0gMDsKLQkgICAgICBpZiAobW9kZV82NGJpdCAmJiAhaGF2ZXNpYiAmJiAoc2l6ZWZsYWcgJiBB RkxBRykpCisJICAgICAgaWYgKGFkZHJlc3NfbW9kZSA9PSBtb2RlXzY0Yml0ICYmICFoYXZlc2li KQogCQlyaXByZWwgPSAxOwogCSAgICAgIGRpc3AgPSBnZXQzMnMgKCk7CiAJICAgIH0KQEAgLTMw NTEsMTE2ICszNDIzLDcyIEBACiAJfQogCiAgICAgICBpZiAoIWludGVsX3N5bnRheCkKLSAgICAg ICAgaWYgKG1vZCAhPSAwIHx8IChiYXNlICYgNykgPT0gNSkKLSAgICAgICAgICB7Ci0gICAgICAg ICAgICBwcmludF9vcGVyYW5kX3ZhbHVlIChzY3JhdGNoYnVmLCBzaXplb2Yoc2NyYXRjaGJ1Ziks ICFyaXByZWwsIGRpc3ApOwotICAgICAgICAgICAgb2FwcGVuZCAoc2NyYXRjaGJ1Zik7CisJaWYg KG1vZCAhPSAwIHx8IChiYXNlICYgNykgPT0gNSkKKwkgIHsKKwkgICAgcHJpbnRfb3BlcmFuZF92 YWx1ZSAoc2NyYXRjaGJ1Ziwgc2l6ZW9mKHNjcmF0Y2hidWYpLCAhcmlwcmVsLCBkaXNwKTsKKwkg ICAgb2FwcGVuZCAoc2NyYXRjaGJ1Zik7CiAJICAgIGlmIChyaXByZWwpCiAJICAgICAgewogCQlz ZXRfb3AgKGRpc3AsIDEpOwogCQlvYXBwZW5kICgiKCVyaXApIik7CiAJICAgICAgfQotICAgICAg ICAgIH0KKwkgIH0KIAogICAgICAgaWYgKGhhdmViYXNlIHx8IChoYXZlc2liICYmIChpbmRleCAh PSA0IHx8IHNjYWxlICE9IDApKSkKIAl7Ci0gICAgICAgICAgaWYgKGludGVsX3N5bnRheCkKLSAg ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgc3dpdGNoIChieXRlbW9kZSkKLSAgICAgICAgICAg ICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBiX21vZGU6Ci0gICAgICAgICAgICAgICAgICBv YXBwZW5kICgiQllURSBQVFIgIik7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg ICAgICAgICBjYXNlIHdfbW9kZToKLSAgICAgICAgICAgICAgICAgIG9hcHBlbmQgKCJXT1JEIFBU UiAiKTsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ugdl9t b2RlOgotICAgICAgICAgICAgICAgICAgb2FwcGVuZCAoIkRXT1JEIFBUUiAiKTsKLSAgICAgICAg ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgZF9tb2RlOgotICAgICAgICAg ICAgICAgICAgb2FwcGVuZCAoIlFXT1JEIFBUUiAiKTsKLSAgICAgICAgICAgICAgICAgIGJyZWFr OwotICAgICAgICAgICAgICAgIGNhc2UgbV9tb2RlOgotCQkgIGlmIChtb2RlXzY0Yml0KQotCQkg ICAgb2FwcGVuZCAoIkRXT1JEIFBUUiAiKTsKLQkJICBlbHNlCi0JCSAgICBvYXBwZW5kICgiUVdP UkQgUFRSICIpOwotCQkgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgeF9tb2RlOgotICAg ICAgICAgICAgICAgICAgb2FwcGVuZCAoIlhXT1JEIFBUUiAiKTsKLSAgICAgICAgICAgICAgICAg IGJyZWFrOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICBicmVh azsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgfQogCSAgKm9idWZwKysgPSBvcGVu X2NoYXI7CiAJICBpZiAoaW50ZWxfc3ludGF4ICYmIHJpcHJlbCkKIAkgICAgb2FwcGVuZCAoInJp cCArICIpOwotICAgICAgICAgICpvYnVmcCA9ICdcMCc7Ci0JICBVU0VEX1JFWCAoUkVYX0VYVFop OwotCSAgaWYgKCFoYXZlc2liICYmIChyZXggJiBSRVhfRVhUWikpCi0JICAgIGJhc2UgKz0gODsK KwkgICpvYnVmcCA9ICdcMCc7CiAJICBpZiAoaGF2ZWJhc2UpCi0JICAgIG9hcHBlbmQgKG1vZGVf NjRiaXQgJiYgKHNpemVmbGFnICYgQUZMQUcpCisJICAgIG9hcHBlbmQgKGFkZHJlc3NfbW9kZSA9 PSBtb2RlXzY0Yml0ICYmIChzaXplZmxhZyAmIEFGTEFHKQogCQkgICAgID8gbmFtZXM2NFtiYXNl XSA6IG5hbWVzMzJbYmFzZV0pOwogCSAgaWYgKGhhdmVzaWIpCiAJICAgIHsKIAkgICAgICBpZiAo aW5kZXggIT0gNCkKIAkJewotICAgICAgICAgICAgICAgICAgaWYgKGludGVsX3N5bnRheCkKLSAg ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXZlYmFzZSkK LSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKm9i dWZwKysgPSBzZXBhcmF0b3JfY2hhcjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKm9idWZw ID0gJ1wwJzsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg ICBzbnByaW50ZiAoc2NyYXRjaGJ1Ziwgc2l6ZW9mKHNjcmF0Y2hidWYpLCAiJXMiLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlXzY0Yml0ICYmIChzaXplZmxhZyAmIEFGTEFH KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG5hbWVzNjRbaW5kZXhdIDogbmFt ZXMzMltpbmRleF0pOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICBl bHNlCi0gICAgICAgICAgICAgICAgICAgICAgc25wcmludGYgKHNjcmF0Y2hidWYsIHNpemVvZihz Y3JhdGNoYnVmKSwgIiwlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVf NjRiaXQgJiYgKHNpemVmbGFnICYgQUZMQUcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgID8gbmFtZXM2NFtpbmRleF0gOiBuYW1lczMyW2luZGV4XSk7CisJCSAgaWYgKCFpbnRlbF9z eW50YXggfHwgaGF2ZWJhc2UpCisJCSAgICB7CisJCSAgICAgICpvYnVmcCsrID0gc2VwYXJhdG9y X2NoYXI7CisJCSAgICAgICpvYnVmcCA9ICdcMCc7CisJCSAgICB9CisJCSAgb2FwcGVuZCAoYWRk cmVzc19tb2RlID09IG1vZGVfNjRiaXQgJiYgKHNpemVmbGFnICYgQUZMQUcpCisJCQkgICA/IG5h bWVzNjRbaW5kZXhdIDogbmFtZXMzMltpbmRleF0pOworCQl9CisJICAgICAgaWYgKHNjYWxlICE9 IDAgfHwgKCFpbnRlbF9zeW50YXggJiYgaW5kZXggIT0gNCkpCisJCXsKKwkJICAqb2J1ZnArKyA9 IHNjYWxlX2NoYXI7CisJCSAgKm9idWZwID0gJ1wwJzsKKwkJICBzbnByaW50ZiAoc2NyYXRjaGJ1 Ziwgc2l6ZW9mKHNjcmF0Y2hidWYpLCAiJWQiLCAxIDw8IHNjYWxlKTsKIAkJICBvYXBwZW5kIChz Y3JhdGNoYnVmKTsKIAkJfQotICAgICAgICAgICAgICBpZiAoIWludGVsX3N5bnRheAotICAgICAg ICAgICAgICAgICAgfHwgKGludGVsX3N5bnRheAotICAgICAgICAgICAgICAgICAgICAgICYmIGJ5 dGVtb2RlICE9IGJfbW9kZQotICAgICAgICAgICAgICAgICAgICAgICYmIGJ5dGVtb2RlICE9IHdf bW9kZQotICAgICAgICAgICAgICAgICAgICAgICYmIGJ5dGVtb2RlICE9IHZfbW9kZSkpCi0gICAg ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgKm9idWZwKysgPSBzY2FsZV9jaGFyOwot ICAgICAgICAgICAgICAgICAgKm9idWZwID0gJ1wwJzsKLSAgICAgICAgICAgICAgICAgIHNucHJp bnRmIChzY3JhdGNoYnVmLCBzaXplb2Yoc2NyYXRjaGJ1ZiksICIlZCIsIDEgPDwgc2NhbGUpOwot CSAgICAgICAgICBvYXBwZW5kIChzY3JhdGNoYnVmKTsKLSAgICAgICAgICAgICAgICB9CiAJICAg IH0KLSAgICAgICAgICBpZiAoaW50ZWxfc3ludGF4KQotICAgICAgICAgICAgaWYgKG1vZCAhPSAw IHx8IChiYXNlICYgNykgPT0gNSkKLSAgICAgICAgICAgICAgewotCQkvKiBEb24ndCBwcmludCB6 ZXJvIGRpc3BsYWNlbWVudHMuICAqLwotICAgICAgICAgICAgICAgIGlmIChkaXNwICE9IDApCi0g ICAgICAgICAgICAgICAgICB7Ci0JCSAgICBpZiAoKGJmZF9zaWduZWRfdm1hKSBkaXNwID4gMCkK LQkJICAgICAgewotCQkJKm9idWZwKysgPSAnKyc7Ci0JCQkqb2J1ZnAgPSAnXDAnOwotCQkgICAg ICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgcHJpbnRfb3BlcmFuZF92YWx1ZSAoc2NyYXRjaGJ1 Ziwgc2l6ZW9mKHNjcmF0Y2hidWYpLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkaXNwKTsKLSAgICAgICAgICAgICAgICAgICAgb2FwcGVuZCAoc2NyYXRjaGJ1 Zik7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KKwkgIGlmIChpbnRlbF9z eW50YXggJiYgZGlzcCkKKwkgICAgeworCSAgICAgIGlmICgoYmZkX3NpZ25lZF92bWEpIGRpc3Ag PiAwKQorCQl7CisJCSAgKm9idWZwKysgPSAnKyc7CisJCSAgKm9idWZwID0gJ1wwJzsKKwkJfQor CSAgICAgIGVsc2UgaWYgKG1vZCAhPSAxKQorCQl7CisJCSAgKm9idWZwKysgPSAnLSc7CisJCSAg Km9idWZwID0gJ1wwJzsKKwkJICBkaXNwID0gLSAoYmZkX3NpZ25lZF92bWEpIGRpc3A7CisJCX0K KworCSAgICAgIHByaW50X29wZXJhbmRfdmFsdWUgKHNjcmF0Y2hidWYsIHNpemVvZihzY3JhdGNo YnVmKSwgbW9kICE9IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3Ap OworCSAgICAgIG9hcHBlbmQgKHNjcmF0Y2hidWYpOworCSAgICB9CiAKIAkgICpvYnVmcCsrID0g Y2xvc2VfY2hhcjsKLSAgICAgICAgICAqb2J1ZnAgPSAnXDAnOworCSAgKm9idWZwID0gJ1wwJzsK IAl9CiAgICAgICBlbHNlIGlmIChpbnRlbF9zeW50YXgpCi0gICAgICAgIHsKLSAgICAgICAgICBp ZiAobW9kICE9IDAgfHwgKGJhc2UgJiA3KSA9PSA1KQotICAgICAgICAgICAgeworCXsKKwkgIGlm IChtb2QgIT0gMCB8fCAoYmFzZSAmIDcpID09IDUpCisJICAgIHsKIAkgICAgICBpZiAocHJlZml4 ZXMgJiAoUFJFRklYX0NTIHwgUFJFRklYX1NTIHwgUFJFRklYX0RTCiAJCQkgICAgICB8IFBSRUZJ WF9FUyB8IFBSRUZJWF9GUyB8IFBSRUZJWF9HUykpCiAJCTsKQEAgLTMxNjksMTcgKzM0OTcsMTcg QEAKIAkJICBvYXBwZW5kIChuYW1lc19zZWdbZHNfcmVnIC0gZXNfcmVnXSk7CiAJCSAgb2FwcGVu ZCAoIjoiKTsKIAkJfQotICAgICAgICAgICAgICBwcmludF9vcGVyYW5kX3ZhbHVlIChzY3JhdGNo YnVmLCBzaXplb2Yoc2NyYXRjaGJ1ZiksIDEsIGRpc3ApOwotICAgICAgICAgICAgICBvYXBwZW5k IChzY3JhdGNoYnVmKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorCSAgICAgIHByaW50X29w ZXJhbmRfdmFsdWUgKHNjcmF0Y2hidWYsIHNpemVvZihzY3JhdGNoYnVmKSwgMSwgZGlzcCk7CisJ ICAgICAgb2FwcGVuZCAoc2NyYXRjaGJ1Zik7CisJICAgIH0KKwl9CiAgICAgfQogICBlbHNlCiAg ICAgeyAvKiAxNiBiaXQgYWRkcmVzcyBtb2RlICovCiAgICAgICBzd2l0Y2ggKG1vZCkKIAl7CiAJ Y2FzZSAwOgotCSAgaWYgKChybSAmIDcpID09IDYpCisJICBpZiAocm0gPT0gNikKIAkgICAgewog CSAgICAgIGRpc3AgPSBnZXQxNiAoKTsKIAkgICAgICBpZiAoKGRpc3AgJiAweDgwMDApICE9IDAp CkBAIC0zMjAwLDI3ICszNTI4LDU4IEBACiAJfQogCiAgICAgICBpZiAoIWludGVsX3N5bnRheCkK LSAgICAgICAgaWYgKG1vZCAhPSAwIHx8IChybSAmIDcpID09IDYpCi0gICAgICAgICAgewotICAg ICAgICAgICAgcHJpbnRfb3BlcmFuZF92YWx1ZSAoc2NyYXRjaGJ1Ziwgc2l6ZW9mKHNjcmF0Y2hi dWYpLCAwLCBkaXNwKTsKLSAgICAgICAgICAgIG9hcHBlbmQgKHNjcmF0Y2hidWYpOwotICAgICAg ICAgIH0KKwlpZiAobW9kICE9IDAgfHwgcm0gPT0gNikKKwkgIHsKKwkgICAgcHJpbnRfb3BlcmFu ZF92YWx1ZSAoc2NyYXRjaGJ1Ziwgc2l6ZW9mKHNjcmF0Y2hidWYpLCAwLCBkaXNwKTsKKwkgICAg b2FwcGVuZCAoc2NyYXRjaGJ1Zik7CisJICB9CiAKLSAgICAgIGlmIChtb2QgIT0gMCB8fCAocm0g JiA3KSAhPSA2KQorICAgICAgaWYgKG1vZCAhPSAwIHx8IHJtICE9IDYpCiAJewogCSAgKm9idWZw KysgPSBvcGVuX2NoYXI7Ci0gICAgICAgICAgKm9idWZwID0gJ1wwJzsKLQkgIG9hcHBlbmQgKGlu ZGV4MTZbcm0gKyBhZGRdKTsKLSAgICAgICAgICAqb2J1ZnArKyA9IGNsb3NlX2NoYXI7Ci0gICAg ICAgICAgKm9idWZwID0gJ1wwJzsKKwkgICpvYnVmcCA9ICdcMCc7CisJICBvYXBwZW5kIChpbmRl eDE2W3JtXSk7CisJICBpZiAoaW50ZWxfc3ludGF4ICYmIGRpc3ApCisJICAgIHsKKwkgICAgICBp ZiAoKGJmZF9zaWduZWRfdm1hKSBkaXNwID4gMCkKKwkJeworCQkgICpvYnVmcCsrID0gJysnOwor CQkgICpvYnVmcCA9ICdcMCc7CisJCX0KKwkgICAgICBlbHNlIGlmIChtb2QgIT0gMSkKKwkJewor CQkgICpvYnVmcCsrID0gJy0nOworCQkgICpvYnVmcCA9ICdcMCc7CisJCSAgZGlzcCA9IC0gKGJm ZF9zaWduZWRfdm1hKSBkaXNwOworCQl9CisKKwkgICAgICBwcmludF9vcGVyYW5kX3ZhbHVlIChz Y3JhdGNoYnVmLCBzaXplb2Yoc2NyYXRjaGJ1ZiksIG1vZCAhPSAxLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkaXNwKTsKKwkgICAgICBvYXBwZW5kIChzY3JhdGNoYnVmKTsK KwkgICAgfQorCisJICAqb2J1ZnArKyA9IGNsb3NlX2NoYXI7CisJICAqb2J1ZnAgPSAnXDAnOwor CX0KKyAgICAgIGVsc2UgaWYgKGludGVsX3N5bnRheCkKKwl7CisJICBpZiAocHJlZml4ZXMgJiAo UFJFRklYX0NTIHwgUFJFRklYX1NTIHwgUFJFRklYX0RTCisJCQkgIHwgUFJFRklYX0VTIHwgUFJF RklYX0ZTIHwgUFJFRklYX0dTKSkKKwkgICAgOworCSAgZWxzZQorCSAgICB7CisJICAgICAgb2Fw cGVuZCAobmFtZXNfc2VnW2RzX3JlZyAtIGVzX3JlZ10pOworCSAgICAgIG9hcHBlbmQgKCI6Iik7 CisJICAgIH0KKwkgIHByaW50X29wZXJhbmRfdmFsdWUgKHNjcmF0Y2hidWYsIHNpemVvZihzY3Jh dGNoYnVmKSwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwICYgMHhmZmZm KTsKKwkgIG9hcHBlbmQgKHNjcmF0Y2hidWYpOwogCX0KICAgICB9CiB9CiAKIHN0YXRpYyB2b2lk Ci1PUF9HIChieXRlbW9kZSwgc2l6ZWZsYWcpCi0gICAgIGludCBieXRlbW9kZTsKLSAgICAgaW50 IHNpemVmbGFnOworT1BfRyAoaW50IGJ5dGVtb2RlLCBpbnQgc2l6ZWZsYWcpCiB7CiAgIGludCBh ZGQgPSAwOwogICBVU0VEX1JFWCAoUkVYX0VYVFgpOwpAQCAtMzI0NSwxNSArMzYwNCwyMyBAQAog ICAgICAgb2FwcGVuZCAobmFtZXM2NFtyZWcgKyBhZGRdKTsKICAgICAgIGJyZWFrOwogICAgIGNh c2Ugdl9tb2RlOgorICAgIGNhc2UgZHFfbW9kZToKKyAgICBjYXNlIGRxd19tb2RlOgogICAgICAg VVNFRF9SRVggKFJFWF9NT0RFNjQpOwogICAgICAgaWYgKHJleCAmIFJFWF9NT0RFNjQpCiAJb2Fw cGVuZCAobmFtZXM2NFtyZWcgKyBhZGRdKTsKLSAgICAgIGVsc2UgaWYgKHNpemVmbGFnICYgREZM QUcpCisgICAgICBlbHNlIGlmICgoc2l6ZWZsYWcgJiBERkxBRykgfHwgYnl0ZW1vZGUgIT0gdl9t b2RlKQogCW9hcHBlbmQgKG5hbWVzMzJbcmVnICsgYWRkXSk7CiAgICAgICBlbHNlCiAJb2FwcGVu ZCAobmFtZXMxNltyZWcgKyBhZGRdKTsKICAgICAgIHVzZWRfcHJlZml4ZXMgfD0gKHByZWZpeGVz ICYgUFJFRklYX0RBVEEpOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBtX21vZGU6CisgICAgICBp ZiAoYWRkcmVzc19tb2RlID09IG1vZGVfNjRiaXQpCisJb2FwcGVuZCAobmFtZXM2NFtyZWcgKyBh ZGRdKTsKKyAgICAgIGVsc2UKKwlvYXBwZW5kIChuYW1lczMyW3JlZyArIGFkZF0pOworICAgICAg YnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIG9hcHBlbmQgKElOVEVSTkFMX0RJU0FTU0VNQkxF Ul9FUlJPUik7CiAgICAgICBicmVhazsKQEAgLTMyNjEsNyArMzYyOCw3IEBACiB9CiAKIHN0YXRp YyBiZmRfdm1hCi1nZXQ2NCAoKQorZ2V0NjQgKHZvaWQpCiB7CiAgIGJmZF92bWEgeDsKICNpZmRl ZiBCRkQ2NApAQCAtMzI4Niw3ICszNjUzLDcgQEAKIH0KIAogc3RhdGljIGJmZF9zaWduZWRfdm1h Ci1nZXQzMiAoKQorZ2V0MzIgKHZvaWQpCiB7CiAgIGJmZF9zaWduZWRfdm1hIHggPSAwOwogCkBA IC0zMjk5LDcgKzM2NjYsNyBAQAogfQogCiBzdGF0aWMgYmZkX3NpZ25lZF92bWEKLWdldDMycyAo KQorZ2V0MzJzICh2b2lkKQogewogICBiZmRfc2lnbmVkX3ZtYSB4ID0gMDsKIApAQCAtMzMxNSw3 ICszNjgyLDcgQEAKIH0KIAogc3RhdGljIGludAotZ2V0MTYgKCkKK2dldDE2ICh2b2lkKQogewog ICBpbnQgeCA9IDA7CiAKQEAgLTMzMjYsMTIgKzM2OTMsMTAgQEAKIH0KIAogc3RhdGljIHZvaWQK LXNldF9vcCAob3AsIHJpcHJlbCkKLSAgICAgYmZkX3ZtYSBvcDsKLSAgICAgaW50IHJpcHJlbDsK K3NldF9vcCAoYmZkX3ZtYSBvcCwgaW50IHJpcHJlbCkKIHsKICAgb3BfaW5kZXhbb3BfYWRdID0g b3BfYWQ7Ci0gIGlmIChtb2RlXzY0Yml0KQorICBpZiAoYWRkcmVzc19tb2RlID09IG1vZGVfNjRi aXQpCiAgICAgewogICAgICAgb3BfYWRkcmVzc1tvcF9hZF0gPSBvcDsKICAgICAgIG9wX3JpcHJl bFtvcF9hZF0gPSByaXByZWw7CkBAIC0zMzQ1LDkgKzM3MTAsNyBAQAogfQogCiBzdGF0aWMgdm9p ZAotT1BfUkVHIChjb2RlLCBzaXplZmxhZykKLSAgICAgaW50IGNvZGU7Ci0gICAgIGludCBzaXpl ZmxhZzsKK09QX1JFRyAoaW50IGNvZGUsIGludCBzaXplZmxhZykKIHsKICAgY29uc3QgY2hhciAq czsKICAgaW50IGFkZCA9IDA7CkBAIC0zMzU5LDkgKzM3MjIsOSBAQAogICAgIHsKICAgICBjYXNl IGluZGlyX2R4X3JlZzoKICAgICAgIGlmIChpbnRlbF9zeW50YXgpCi0gICAgICAgIHMgPSAiW2R4 XSI7CisJcyA9ICJbZHhdIjsKICAgICAgIGVsc2UKLSAgICAgICAgcyA9ICIoJWR4KSI7CisJcyA9 ICIoJWR4KSI7CiAgICAgICBicmVhazsKICAgICBjYXNlIGF4X3JlZzogY2FzZSBjeF9yZWc6IGNh c2UgZHhfcmVnOiBjYXNlIGJ4X3JlZzoKICAgICBjYXNlIHNwX3JlZzogY2FzZSBicF9yZWc6IGNh c2Ugc2lfcmVnOiBjYXNlIGRpX3JlZzoKQEAgLTMzODEsNyArMzc0NCw3IEBACiAgICAgICBicmVh azsKICAgICBjYXNlIHJBWF9yZWc6IGNhc2UgckNYX3JlZzogY2FzZSByRFhfcmVnOiBjYXNlIHJC WF9yZWc6CiAgICAgY2FzZSByU1BfcmVnOiBjYXNlIHJCUF9yZWc6IGNhc2UgclNJX3JlZzogY2Fz ZSByRElfcmVnOgotICAgICAgaWYgKG1vZGVfNjRiaXQpCisgICAgICBpZiAoYWRkcmVzc19tb2Rl ID09IG1vZGVfNjRiaXQgJiYgKHNpemVmbGFnICYgREZMQUcpKQogCXsKIAkgIHMgPSBuYW1lczY0 W2NvZGUgLSByQVhfcmVnICsgYWRkXTsKIAkgIGJyZWFrOwpAQCAtMzQwNyw5ICszNzcwLDcgQEAK IH0KIAogc3RhdGljIHZvaWQKLU9QX0lNUkVHIChjb2RlLCBzaXplZmxhZykKLSAgICAgaW50IGNv ZGU7Ci0gICAgIGludCBzaXplZmxhZzsKK09QX0lNUkVHIChpbnQgY29kZSwgaW50IHNpemVmbGFn KQogewogICBjb25zdCBjaGFyICpzOwogCkBAIC0zNDE3LDkgKzM3NzgsOSBAQAogICAgIHsKICAg ICBjYXNlIGluZGlyX2R4X3JlZzoKICAgICAgIGlmIChpbnRlbF9zeW50YXgpCi0gICAgICAgIHMg PSAiW2R4XSI7CisJcyA9ICJbZHhdIjsKICAgICAgIGVsc2UKLSAgICAgICAgcyA9ICIoJWR4KSI7 CisJcyA9ICIoJWR4KSI7CiAgICAgICBicmVhazsKICAgICBjYXNlIGF4X3JlZzogY2FzZSBjeF9y ZWc6IGNhc2UgZHhfcmVnOiBjYXNlIGJ4X3JlZzoKICAgICBjYXNlIHNwX3JlZzogY2FzZSBicF9y ZWc6IGNhc2Ugc2lfcmVnOiBjYXNlIGRpX3JlZzoKQEAgLTM0NTYsOSArMzgxNyw3IEBACiB9CiAK IHN0YXRpYyB2b2lkCi1PUF9JIChieXRlbW9kZSwgc2l6ZWZsYWcpCi0gICAgIGludCBieXRlbW9k ZTsKLSAgICAgaW50IHNpemVmbGFnOworT1BfSSAoaW50IGJ5dGVtb2RlLCBpbnQgc2l6ZWZsYWcp CiB7CiAgIGJmZF9zaWduZWRfdm1hIG9wOwogICBiZmRfc2lnbmVkX3ZtYSBtYXNrID0gLTE7CkBA IC0zNDcxLDcgKzM4MzAsNyBAQAogICAgICAgbWFzayA9IDB4ZmY7CiAgICAgICBicmVhazsKICAg ICBjYXNlIHFfbW9kZToKLSAgICAgIGlmIChtb2RlXzY0Yml0KQorICAgICAgaWYgKGFkZHJlc3Nf bW9kZSA9PSBtb2RlXzY0Yml0KQogCXsKIAkgIG9wID0gZ2V0MzJzICgpOwogCSAgYnJlYWs7CkBA IC0zNDk3LDYgKzM4NTYsMTAgQEAKICAgICAgIG1hc2sgPSAweGZmZmZmOwogICAgICAgb3AgPSBn ZXQxNiAoKTsKICAgICAgIGJyZWFrOworICAgIGNhc2UgY29uc3RfMV9tb2RlOgorICAgICAgaWYg KGludGVsX3N5bnRheCkKKyAgICAgICAgb2FwcGVuZCAoIjEiKTsKKyAgICAgIHJldHVybjsKICAg ICBkZWZhdWx0OgogICAgICAgb2FwcGVuZCAoSU5URVJOQUxfRElTQVNTRU1CTEVSX0VSUk9SKTsK ICAgICAgIHJldHVybjsKQEAgLTM1MTAsMTQgKzM4NzMsMTIgQEAKIH0KIAogc3RhdGljIHZvaWQK LU9QX0k2NCAoYnl0ZW1vZGUsIHNpemVmbGFnKQotICAgICBpbnQgYnl0ZW1vZGU7Ci0gICAgIGlu dCBzaXplZmxhZzsKK09QX0k2NCAoaW50IGJ5dGVtb2RlLCBpbnQgc2l6ZWZsYWcpCiB7CiAgIGJm ZF9zaWduZWRfdm1hIG9wOwogICBiZmRfc2lnbmVkX3ZtYSBtYXNrID0gLTE7CiAKLSAgaWYgKCFt b2RlXzY0Yml0KQorICBpZiAoYWRkcmVzc19tb2RlICE9IG1vZGVfNjRiaXQpCiAgICAgewogICAg ICAgT1BfSSAoYnl0ZW1vZGUsIHNpemVmbGFnKTsKICAgICAgIHJldHVybjsKQEAgLTM1NjMsOSAr MzkyNCw3IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1PUF9zSSAoYnl0ZW1vZGUsIHNpemVmbGFnKQot ICAgICBpbnQgYnl0ZW1vZGU7Ci0gICAgIGludCBzaXplZmxhZzsKK09QX3NJIChpbnQgYnl0ZW1v ZGUsIGludCBzaXplZmxhZykKIHsKICAgYmZkX3NpZ25lZF92bWEgb3A7CiAgIGJmZF9zaWduZWRf dm1hIG1hc2sgPSAtMTsKQEAgLTM2MTQsOSArMzk3Myw3IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1P UF9KIChieXRlbW9kZSwgc2l6ZWZsYWcpCi0gICAgIGludCBieXRlbW9kZTsKLSAgICAgaW50IHNp emVmbGFnOworT1BfSiAoaW50IGJ5dGVtb2RlLCBpbnQgc2l6ZWZsYWcpCiB7CiAgIGJmZF92bWEg ZGlzcDsKICAgYmZkX3ZtYSBtYXNrID0gLTE7CkBAIC0zNjMwLDcgKzM5ODcsNyBAQAogCWRpc3Ag LT0gMHgxMDA7CiAgICAgICBicmVhazsKICAgICBjYXNlIHZfbW9kZToKLSAgICAgIGlmIChzaXpl ZmxhZyAmIERGTEFHKQorICAgICAgaWYgKChzaXplZmxhZyAmIERGTEFHKSB8fCAocmV4ICYgUkVY X01PREU2NCkpCiAJZGlzcCA9IGdldDMycyAoKTsKICAgICAgIGVsc2UKIAl7CkBAIC0zNjUyLDE3 ICs0MDA5LDEzIEBACiB9CiAKIHN0YXRpYyB2b2lkCi1PUF9TRUcgKGR1bW15LCBzaXplZmxhZykK LSAgICAgaW50IGR1bW15OwotICAgICBpbnQgc2l6ZWZsYWc7CitPUF9TRUcgKGludCBkdW1teSBB VFRSSUJVVEVfVU5VU0VELCBpbnQgc2l6ZWZsYWcgQVRUUklCVVRFX1VOVVNFRCkKIHsKICAgb2Fw cGVuZCAobmFtZXNfc2VnW3JlZ10pOwogfQogCiBzdGF0aWMgdm9pZAotT1BfRElSIChkdW1teSwg c2l6ZWZsYWcpCi0gICAgIGludCBkdW1teTsKLSAgICAgaW50IHNpemVmbGFnOworT1BfRElSIChp bnQgZHVtbXkgQVRUUklCVVRFX1VOVVNFRCwgaW50IHNpemVmbGFnKQogewogICBpbnQgc2VnLCBv ZmZzZXQ7CiAKQEAgLTM2NzgsMjIgKzQwMzEsMjIgQEAKICAgICB9CiAgIHVzZWRfcHJlZml4ZXMg fD0gKHByZWZpeGVzICYgUFJFRklYX0RBVEEpOwogICBpZiAoaW50ZWxfc3ludGF4KQotICAgIHNu cHJpbnRmIChzY3JhdGNoYnVmLCBzaXplb2Yoc2NyYXRjaGJ1ZiksICIweCV4LDB4JXgiLCBzZWcs IG9mZnNldCk7CisgICAgc25wcmludGYgKHNjcmF0Y2hidWYsIHNpemVvZihzY3JhdGNoYnVmKSwg IjB4JXg6MHgleCIsIHNlZywgb2Zmc2V0KTsKICAgZWxzZQogICAgIHNucHJpbnRmIChzY3JhdGNo YnVmLCBzaXplb2Yoc2NyYXRjaGJ1ZiksICIkMHgleCwkMHgleCIsIHNlZywgb2Zmc2V0KTsKICAg b2FwcGVuZCAoc2NyYXRjaGJ1Zik7CiB9CiAKIHN0YXRpYyB2b2lkCi1PUF9PRkYgKGJ5dGVtb2Rl LCBzaXplZmxhZykKLSAgICAgaW50IGJ5dGVtb2RlOwotICAgICBpbnQgc2l6ZWZsYWc7CitPUF9P RkYgKGludCBieXRlbW9kZSwgaW50IHNpemVmbGFnKQogewogICBiZmRfdm1hIG9mZjsKIAorICBp ZiAoaW50ZWxfc3ludGF4ICYmIChzaXplZmxhZyAmIFNVRkZJWF9BTFdBWVMpKQorICAgIGludGVs X29wZXJhbmRfc2l6ZSAoYnl0ZW1vZGUsIHNpemVmbGFnKTsKICAgYXBwZW5kX3NlZyAoKTsKIAot ICBpZiAoKHNpemVmbGFnICYgQUZMQUcpIHx8IG1vZGVfNjRiaXQpCisgIGlmICgoc2l6ZWZsYWcg JiBBRkxBRykgfHwgYWRkcmVzc19tb2RlID09IG1vZGVfNjRiaXQpCiAgICAgb2ZmID0gZ2V0MzIg KCk7CiAgIGVsc2UKICAgICBvZmYgPSBnZXQxNiAoKTsKQEAgLTM3MDEsNyArNDA1NCw3IEBACiAg IGlmIChpbnRlbF9zeW50YXgpCiAgICAgewogICAgICAgaWYgKCEocHJlZml4ZXMgJiAoUFJFRklY X0NTIHwgUFJFRklYX1NTIHwgUFJFRklYX0RTCi0JCSAgICAgICAgfCBQUkVGSVhfRVMgfCBQUkVG SVhfRlMgfCBQUkVGSVhfR1MpKSkKKwkJCXwgUFJFRklYX0VTIHwgUFJFRklYX0ZTIHwgUFJFRklY X0dTKSkpCiAJewogCSAgb2FwcGVuZCAobmFtZXNfc2VnW2RzX3JlZyAtIGVzX3JlZ10pOwogCSAg b2FwcGVuZCAoIjoiKTsKQEAgLTM3MTIsMTggKzQwNjUsMTggQEAKIH0KIAogc3RhdGljIHZvaWQK LU9QX09GRjY0IChieXRlbW9kZSwgc2l6ZWZsYWcpCi0gICAgIGludCBieXRlbW9kZTsKLSAgICAg aW50IHNpemVmbGFnOworT1BfT0ZGNjQgKGludCBieXRlbW9kZSwgaW50IHNpemVmbGFnKQogewog ICBiZmRfdm1hIG9mZjsKIAotICBpZiAoIW1vZGVfNjRiaXQpCisgIGlmIChhZGRyZXNzX21vZGUg IT0gbW9kZV82NGJpdCkKICAgICB7CiAgICAgICBPUF9PRkYgKGJ5dGVtb2RlLCBzaXplZmxhZyk7 CiAgICAgICByZXR1cm47CiAgICAgfQogCisgIGlmIChpbnRlbF9zeW50YXggJiYgKHNpemVmbGFn ICYgU1VGRklYX0FMV0FZUykpCisgICAgaW50ZWxfb3BlcmFuZF9zaXplIChieXRlbW9kZSwgc2l6 ZWZsYWcpOwogICBhcHBlbmRfc2VnICgpOwogCiAgIG9mZiA9IGdldDY0ICgpOwpAQCAtMzczMSw3 ICs0MDg0LDcgQEAKICAgaWYgKGludGVsX3N5bnRheCkKICAgICB7CiAgICAgICBpZiAoIShwcmVm aXhlcyAmIChQUkVGSVhfQ1MgfCBQUkVGSVhfU1MgfCBQUkVGSVhfRFMKLQkJICAgICAgICB8IFBS RUZJWF9FUyB8IFBSRUZJWF9GUyB8IFBSRUZJWF9HUykpKQorCQkJfCBQUkVGSVhfRVMgfCBQUkVG SVhfRlMgfCBQUkVGSVhfR1MpKSkKIAl7CiAJICBvYXBwZW5kIChuYW1lc19zZWdbZHNfcmVnIC0g ZXNfcmVnXSk7CiAJICBvYXBwZW5kICgiOiIpOwpAQCAtMzc0Miw0OSArNDA5NSw0NSBAQAogfQog CiBzdGF0aWMgdm9pZAotcHRyX3JlZyAoY29kZSwgc2l6ZWZsYWcpCi0gICAgIGludCBjb2RlOwot ICAgICBpbnQgc2l6ZWZsYWc7CitwdHJfcmVnIChpbnQgY29kZSwgaW50IHNpemVmbGFnKQogewog ICBjb25zdCBjaGFyICpzOwotICBpZiAoaW50ZWxfc3ludGF4KQotICAgIG9hcHBlbmQgKCJbIik7 Ci0gIGVsc2UKLSAgICBvYXBwZW5kICgiKCIpOwogCi0gIFVTRURfUkVYIChSRVhfTU9ERTY0KTsK LSAgaWYgKHJleCAmIFJFWF9NT0RFNjQpCisgICpvYnVmcCsrID0gb3Blbl9jaGFyOworICB1c2Vk X3ByZWZpeGVzIHw9IChwcmVmaXhlcyAmIFBSRUZJWF9BRERSKTsKKyAgaWYgKGFkZHJlc3NfbW9k ZSA9PSBtb2RlXzY0Yml0KQogICAgIHsKICAgICAgIGlmICghKHNpemVmbGFnICYgQUZMQUcpKQot ICAgICAgICBzID0gbmFtZXMzMltjb2RlIC0gZUFYX3JlZ107CisJcyA9IG5hbWVzMzJbY29kZSAt IGVBWF9yZWddOwogICAgICAgZWxzZQotICAgICAgICBzID0gbmFtZXM2NFtjb2RlIC0gZUFYX3Jl Z107CisJcyA9IG5hbWVzNjRbY29kZSAtIGVBWF9yZWddOwogICAgIH0KICAgZWxzZSBpZiAoc2l6 ZWZsYWcgJiBBRkxBRykKICAgICBzID0gbmFtZXMzMltjb2RlIC0gZUFYX3JlZ107CiAgIGVsc2UK ICAgICBzID0gbmFtZXMxNltjb2RlIC0gZUFYX3JlZ107CiAgIG9hcHBlbmQgKHMpOwotICBpZiAo aW50ZWxfc3ludGF4KQotICAgIG9hcHBlbmQgKCJdIik7Ci0gIGVsc2UKLSAgICBvYXBwZW5kICgi KSIpOworICAqb2J1ZnArKyA9IGNsb3NlX2NoYXI7CisgICpvYnVmcCA9IDA7CiB9CiAKIHN0YXRp YyB2b2lkCi1PUF9FU3JlZyAoY29kZSwgc2l6ZWZsYWcpCi0gICAgIGludCBjb2RlOwotICAgICBp bnQgc2l6ZWZsYWc7CitPUF9FU3JlZyAoaW50IGNvZGUsIGludCBzaXplZmxhZykKIHsKKyAgaWYg KGludGVsX3N5bnRheCkKKyAgICBpbnRlbF9vcGVyYW5kX3NpemUgKGNvZGVwWy0xXSAmIDEgPyB2 X21vZGUgOiBiX21vZGUsIHNpemVmbGFnKTsKICAgb2FwcGVuZCAoIiVlczoiICsgaW50ZWxfc3lu dGF4KTsKICAgcHRyX3JlZyAoY29kZSwgc2l6ZWZsYWcpOwogfQogCiBzdGF0aWMgdm9pZAotT1Bf RFNyZWcgKGNvZGUsIHNpemVmbGFnKQotICAgICBpbnQgY29kZTsKLSAgICAgaW50IHNpemVmbGFn OworT1BfRFNyZWcgKGludCBjb2RlLCBpbnQgc2l6ZWZsYWcpCiB7CisgIGlmIChpbnRlbF9zeW50 YXgpCisgICAgaW50ZWxfb3BlcmFuZF9zaXplIChjb2RlcFstMV0gIT0gMHhkNyAmJiAoY29kZXBb LTFdICYgMSkKKwkJCT8gdl9tb2RlCisJCQk6IGJfbW9kZSwKKwkJCXNpemVmbGFnKTsKICAgaWYg KChwcmVmaXhlcwogICAgICAgICYgKFBSRUZJWF9DUwogCSAgfCBQUkVGSVhfRFMKQEAgLTM3OTgs MjIgKzQxNDcsMjUgQEAKIH0KIAogc3RhdGljIHZvaWQKLU9QX0MgKGR1bW15LCBzaXplZmxhZykK LSAgICAgaW50IGR1bW15OwotICAgICBpbnQgc2l6ZWZsYWc7CitPUF9DIChpbnQgZHVtbXkgQVRU UklCVVRFX1VOVVNFRCwgaW50IHNpemVmbGFnIEFUVFJJQlVURV9VTlVTRUQpCiB7CiAgIGludCBh ZGQgPSAwOwotICBVU0VEX1JFWCAoUkVYX0VYVFgpOwogICBpZiAocmV4ICYgUkVYX0VYVFgpCi0g ICAgYWRkID0gODsKKyAgICB7CisgICAgICBVU0VEX1JFWCAoUkVYX0VYVFgpOworICAgICAgYWRk ID0gODsKKyAgICB9CisgIGVsc2UgaWYgKGFkZHJlc3NfbW9kZSAhPSBtb2RlXzY0Yml0ICYmIChw cmVmaXhlcyAmIFBSRUZJWF9MT0NLKSkKKyAgICB7CisgICAgICB1c2VkX3ByZWZpeGVzIHw9IFBS RUZJWF9MT0NLOworICAgICAgYWRkID0gODsKKyAgICB9CiAgIHNucHJpbnRmIChzY3JhdGNoYnVm LCBzaXplb2Yoc2NyYXRjaGJ1ZiksICIlJWNyJWQiLCByZWcgKyBhZGQpOwogICBvYXBwZW5kIChz Y3JhdGNoYnVmICsgaW50ZWxfc3ludGF4KTsKIH0KIAogc3RhdGljIHZvaWQKLU9QX0QgKGR1bW15 LCBzaXplZmxhZykKLSAgICAgaW50IGR1bW15OwotICAgICBpbnQgc2l6ZWZsYWc7CitPUF9EIChp bnQgZHVtbXkgQVRUUklCVVRFX1VOVVNFRCwgaW50IHNpemVmbGFnIEFUVFJJQlVURV9VTlVTRUQp CiB7CiAgIGludCBhZGQgPSAwOwogICBVU0VEX1JFWCAoUkVYX0VYVFgpOwpAQCAtMzgyNywxOCAr NDE3OSwxNCBAQAogfQogCiBzdGF0aWMgdm9pZAotT1BfVCAoZHVtbXksIHNpemVmbGFnKQotICAg ICBpbnQgZHVtbXk7Ci0gICAgIGludCBzaXplZmxhZzsKK09QX1QgKGludCBkdW1teSBBVFRSSUJV VEVfVU5VU0VELCBpbnQgc2l6ZWZsYWcgQVRUUklCVVRFX1VOVVNFRCkKIHsKICAgc25wcmludGYg KHNjcmF0Y2hidWYsIHNpemVvZihzY3JhdGNoYnVmKSwgIiUldHIlZCIsIHJlZyk7CiAgIG9hcHBl bmQgKHNjcmF0Y2hidWYgKyBpbnRlbF9zeW50YXgpOwogfQogCiBzdGF0aWMgdm9pZAotT1BfUmQg KGJ5dGVtb2RlLCBzaXplZmxhZykKLSAgICAgaW50IGJ5dGVtb2RlOwotICAgICBpbnQgc2l6ZWZs YWc7CitPUF9SZCAoaW50IGJ5dGVtb2RlLCBpbnQgc2l6ZWZsYWcpCiB7CiAgIGlmIChtb2QgPT0g MykKICAgICBPUF9FIChieXRlbW9kZSwgc2l6ZWZsYWcpOwpAQCAtMzg0NywyNiArNDE5NSwyNCBA QAogfQogCiBzdGF0aWMgdm9pZAotT1BfTU1YIChieXRlbW9kZSwgc2l6ZWZsYWcpCi0gICAgIGlu dCBieXRlbW9kZTsKLSAgICAgaW50IHNpemVmbGFnOworT1BfTU1YIChpbnQgYnl0ZW1vZGUgQVRU UklCVVRFX1VOVVNFRCwgaW50IHNpemVmbGFnIEFUVFJJQlVURV9VTlVTRUQpCiB7Ci0gIGludCBh ZGQgPSAwOwotICBVU0VEX1JFWCAoUkVYX0VYVFgpOwotICBpZiAocmV4ICYgUkVYX0VYVFgpCi0g ICAgYWRkID0gODsKICAgdXNlZF9wcmVmaXhlcyB8PSAocHJlZml4ZXMgJiBQUkVGSVhfREFUQSk7 CiAgIGlmIChwcmVmaXhlcyAmIFBSRUZJWF9EQVRBKQotICAgIHNucHJpbnRmIChzY3JhdGNoYnVm LCBzaXplb2Yoc2NyYXRjaGJ1ZiksICIlJXhtbSVkIiwgcmVnICsgYWRkKTsKKyAgICB7CisgICAg ICBpbnQgYWRkID0gMDsKKyAgICAgIFVTRURfUkVYIChSRVhfRVhUWCk7CisgICAgICBpZiAocmV4 ICYgUkVYX0VYVFgpCisJYWRkID0gODsKKyAgICAgIHNucHJpbnRmIChzY3JhdGNoYnVmLCBzaXpl b2Yoc2NyYXRjaGJ1ZiksICIlJXhtbSVkIiwgcmVnICsgYWRkKTsKKyAgICB9CiAgIGVsc2UKLSAg ICBzbnByaW50ZiAoc2NyYXRjaGJ1Ziwgc2l6ZW9mKHNjcmF0Y2hidWYpLCAiJSVtbSVkIiwgcmVn ICsgYWRkKTsKKyAgICBzbnByaW50ZiAoc2NyYXRjaGJ1Ziwgc2l6ZW9mKHNjcmF0Y2hidWYpLCAi JSVtbSVkIiwgcmVnKTsKICAgb2FwcGVuZCAoc2NyYXRjaGJ1ZiArIGludGVsX3N5bnRheCk7CiB9 CiAKIHN0YXRpYyB2b2lkCi1PUF9YTU0gKGJ5dGVtb2RlLCBzaXplZmxhZykKLSAgICAgaW50IGJ5 dGVtb2RlOwotICAgICBpbnQgc2l6ZWZsYWc7CitPUF9YTU0gKGludCBieXRlbW9kZSBBVFRSSUJV VEVfVU5VU0VELCBpbnQgc2l6ZWZsYWcgQVRUUklCVVRFX1VOVVNFRCkKIHsKICAgaW50IGFkZCA9 IDA7CiAgIFVTRURfUkVYIChSRVhfRVhUWCk7CkBAIC0zODc3LDM5ICs0MjIzLDU0IEBACiB9CiAK IHN0YXRpYyB2b2lkCi1PUF9FTSAoYnl0ZW1vZGUsIHNpemVmbGFnKQotICAgICBpbnQgYnl0ZW1v ZGU7Ci0gICAgIGludCBzaXplZmxhZzsKK09QX0VNIChpbnQgYnl0ZW1vZGUsIGludCBzaXplZmxh ZykKIHsKLSAgaW50IGFkZCA9IDA7CiAgIGlmIChtb2QgIT0gMykKICAgICB7CisgICAgICBpZiAo aW50ZWxfc3ludGF4ICYmIGJ5dGVtb2RlID09IHZfbW9kZSkKKwl7CisJICBieXRlbW9kZSA9IChw cmVmaXhlcyAmIFBSRUZJWF9EQVRBKSA/IHhfbW9kZSA6IHFfbW9kZTsKKwkgIHVzZWRfcHJlZml4 ZXMgfD0gKHByZWZpeGVzICYgUFJFRklYX0RBVEEpOworIAl9CiAgICAgICBPUF9FIChieXRlbW9k ZSwgc2l6ZWZsYWcpOwogICAgICAgcmV0dXJuOwogICAgIH0KLSAgVVNFRF9SRVggKFJFWF9FWFRa KTsKLSAgaWYgKHJleCAmIFJFWF9FWFRaKQotICAgIGFkZCA9IDg7CiAKICAgLyogU2tpcCBtb2Qv cm0gYnl0ZS4gICovCiAgIE1PRFJNX0NIRUNLOwogICBjb2RlcCsrOwogICB1c2VkX3ByZWZpeGVz IHw9IChwcmVmaXhlcyAmIFBSRUZJWF9EQVRBKTsKICAgaWYgKHByZWZpeGVzICYgUFJFRklYX0RB VEEpCi0gICAgc25wcmludGYgKHNjcmF0Y2hidWYsIHNpemVvZihzY3JhdGNoYnVmKSwgIiUleG1t JWQiLCBybSArIGFkZCk7CisgICAgeworICAgICAgaW50IGFkZCA9IDA7CisKKyAgICAgIFVTRURf UkVYIChSRVhfRVhUWik7CisgICAgICBpZiAocmV4ICYgUkVYX0VYVFopCisJYWRkID0gODsKKyAg ICAgIHNucHJpbnRmIChzY3JhdGNoYnVmLCBzaXplb2Yoc2NyYXRjaGJ1ZiksICIlJXhtbSVkIiwg cm0gKyBhZGQpOworICAgIH0KICAgZWxzZQotICAgIHNucHJpbnRmIChzY3JhdGNoYnVmLCBzaXpl b2Yoc2NyYXRjaGJ1ZiksICIlJW1tJWQiLCBybSArIGFkZCk7CisgICAgc25wcmludGYgKHNjcmF0 Y2hidWYsIHNpemVvZihzY3JhdGNoYnVmKSwgIiUlbW0lZCIsIHJtKTsKICAgb2FwcGVuZCAoc2Ny YXRjaGJ1ZiArIGludGVsX3N5bnRheCk7CiB9CiAKIHN0YXRpYyB2b2lkCi1PUF9FWCAoYnl0ZW1v ZGUsIHNpemVmbGFnKQotICAgICBpbnQgYnl0ZW1vZGU7Ci0gICAgIGludCBzaXplZmxhZzsKK09Q X0VYIChpbnQgYnl0ZW1vZGUsIGludCBzaXplZmxhZykKIHsKICAgaW50IGFkZCA9IDA7CiAgIGlm IChtb2QgIT0gMykKICAgICB7CisgICAgICBpZiAoaW50ZWxfc3ludGF4ICYmIGJ5dGVtb2RlID09 IHZfbW9kZSkKKwl7CisJICBzd2l0Y2ggKHByZWZpeGVzICYgKFBSRUZJWF9EQVRBfFBSRUZJWF9S RVBafFBSRUZJWF9SRVBOWikpCisJICAgIHsKKwkgICAgY2FzZSAwOiAgICAgICAgICAgIGJ5dGVt b2RlID0geF9tb2RlOyBicmVhazsKKwkgICAgY2FzZSBQUkVGSVhfUkVQWjogIGJ5dGVtb2RlID0g ZF9tb2RlOyB1c2VkX3ByZWZpeGVzIHw9IFBSRUZJWF9SRVBaOyAgYnJlYWs7CisJICAgIGNhc2Ug UFJFRklYX0RBVEE6ICBieXRlbW9kZSA9IHhfbW9kZTsgdXNlZF9wcmVmaXhlcyB8PSBQUkVGSVhf REFUQTsgIGJyZWFrOworCSAgICBjYXNlIFBSRUZJWF9SRVBOWjogYnl0ZW1vZGUgPSBxX21vZGU7 IHVzZWRfcHJlZml4ZXMgfD0gUFJFRklYX1JFUE5aOyBicmVhazsKKwkgICAgZGVmYXVsdDogICAg ICAgICAgIGJ5dGVtb2RlID0gMDsgYnJlYWs7CisJICAgIH0KKwl9CiAgICAgICBPUF9FIChieXRl bW9kZSwgc2l6ZWZsYWcpOwogICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM5MjUsOSArNDI4Niw3 IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1PUF9NUyAoYnl0ZW1vZGUsIHNpemVmbGFnKQotICAgICBp bnQgYnl0ZW1vZGU7Ci0gICAgIGludCBzaXplZmxhZzsKK09QX01TIChpbnQgYnl0ZW1vZGUsIGlu dCBzaXplZmxhZykKIHsKICAgaWYgKG1vZCA9PSAzKQogICAgIE9QX0VNIChieXRlbW9kZSwgc2l6 ZWZsYWcpOwpAQCAtMzkzNiw5ICs0Mjk1LDcgQEAKIH0KIAogc3RhdGljIHZvaWQKLU9QX1hTIChi eXRlbW9kZSwgc2l6ZWZsYWcpCi0gICAgIGludCBieXRlbW9kZTsKLSAgICAgaW50IHNpemVmbGFn OworT1BfWFMgKGludCBieXRlbW9kZSwgaW50IHNpemVmbGFnKQogewogICBpZiAobW9kID09IDMp CiAgICAgT1BfRVggKGJ5dGVtb2RlLCBzaXplZmxhZyk7CkBAIC0zOTQ2LDYgKzQzMDMsNTUgQEAK ICAgICBCYWRPcCAoKTsKIH0KIAorc3RhdGljIHZvaWQKK09QX00gKGludCBieXRlbW9kZSwgaW50 IHNpemVmbGFnKQoreworICBpZiAobW9kID09IDMpCisgICAgQmFkT3AgKCk7CS8qIGJhZCBsZWEs bGRzLGxlcyxsZnMsbGdzLGxzcyBtb2RybSAqLworICBlbHNlCisgICAgT1BfRSAoYnl0ZW1vZGUs IHNpemVmbGFnKTsKK30KKworc3RhdGljIHZvaWQKK09QXzBmMDcgKGludCBieXRlbW9kZSwgaW50 IHNpemVmbGFnKQoreworICBpZiAobW9kICE9IDMgfHwgcm0gIT0gMCkKKyAgICBCYWRPcCAoKTsK KyAgZWxzZQorICAgIE9QX0UgKGJ5dGVtb2RlLCBzaXplZmxhZyk7Cit9CisKK3N0YXRpYyB2b2lk CitPUF8wZmFlIChpbnQgYnl0ZW1vZGUsIGludCBzaXplZmxhZykKK3sKKyAgaWYgKG1vZCA9PSAz KQorICAgIHsKKyAgICAgIGlmIChyZWcgPT0gNykKKwlzdHJjcHkgKG9idWYgKyBzdHJsZW4gKG9i dWYpIC0gc2l6ZW9mICgiY2xmbHVzaCIpICsgMSwgInNmZW5jZSIpOworCisgICAgICBpZiAocmVn IDwgNSB8fCBybSAhPSAwKQorCXsKKwkgIEJhZE9wICgpOwkvKiBiYWQgc2ZlbmNlLCBtZmVuY2Us IG9yIGxmZW5jZSAqLworCSAgcmV0dXJuOworCX0KKyAgICB9CisgIGVsc2UgaWYgKHJlZyAhPSA3 KQorICAgIHsKKyAgICAgIEJhZE9wICgpOwkJLyogYmFkIGNsZmx1c2ggKi8KKyAgICAgIHJldHVy bjsKKyAgICB9CisKKyAgT1BfRSAoYnl0ZW1vZGUsIHNpemVmbGFnKTsKK30KKworc3RhdGljIHZv aWQKK05PUF9GaXh1cCAoaW50IGJ5dGVtb2RlIEFUVFJJQlVURV9VTlVTRUQsIGludCBzaXplZmxh ZyBBVFRSSUJVVEVfVU5VU0VEKQoreworICAvKiBOT1Agd2l0aCBSRVBaIHByZWZpeCBpcyBjYWxs ZWQgUEFVU0UuICAqLworICBpZiAocHJlZml4ZXMgPT0gUFJFRklYX1JFUFopCisgICAgc3RyY3B5 IChvYnVmLCAicGF1c2UiKTsKK30KKwogc3RhdGljIGNvbnN0IGNoYXIgKlN1ZmZpeDNETm93W10g PSB7CiAvKiAwMCAqLwlOVUxMLAkJTlVMTCwJCU5VTEwsCQlOVUxMLAogLyogMDQgKi8JTlVMTCwJ CU5VTEwsCQlOVUxMLAkJTlVMTCwKQEAgLTQwMTQsOSArNDQyMCw3IEBACiB9OwogCiBzdGF0aWMg dm9pZAotT1BfM0ROb3dTdWZmaXggKGJ5dGVtb2RlLCBzaXplZmxhZykKLSAgICAgaW50IGJ5dGVt b2RlOwotICAgICBpbnQgc2l6ZWZsYWc7CitPUF8zRE5vd1N1ZmZpeCAoaW50IGJ5dGVtb2RlIEFU VFJJQlVURV9VTlVTRUQsIGludCBzaXplZmxhZyBBVFRSSUJVVEVfVU5VU0VEKQogewogICBjb25z dCBjaGFyICptbmVtb25pYzsKIApAQCAtNDA1Miw5ICs0NDU2LDcgQEAKIH07CiAKIHN0YXRpYyB2 b2lkCi1PUF9TSU1EX1N1ZmZpeCAoYnl0ZW1vZGUsIHNpemVmbGFnKQotICAgICBpbnQgYnl0ZW1v ZGU7Ci0gICAgIGludCBzaXplZmxhZzsKK09QX1NJTURfU3VmZml4IChpbnQgYnl0ZW1vZGUgQVRU UklCVVRFX1VOVVNFRCwgaW50IHNpemVmbGFnIEFUVFJJQlVURV9VTlVTRUQpCiB7CiAgIHVuc2ln bmVkIGludCBjbXBfdHlwZTsKIApAQCAtNDA5NCw5ICs0NDk2LDcgQEAKIH0KIAogc3RhdGljIHZv aWQKLVNJTURfRml4dXAgKGV4dHJhY2hhciwgc2l6ZWZsYWcpCi0gICAgIGludCBleHRyYWNoYXI7 Ci0gICAgIGludCBzaXplZmxhZzsKK1NJTURfRml4dXAgKGludCBleHRyYWNoYXIsIGludCBzaXpl ZmxhZyBBVFRSSUJVVEVfVU5VU0VEKQogewogICAvKiBDaGFuZ2UgbW92bHBzL21vdmhwcyB0byBt b3ZobHBzL21vdmxocHMgZm9yIDIgcmVnaXN0ZXIgb3BlcmFuZAogICAgICBmb3JtcyBvZiB0aGVz ZSBpbnN0cnVjdGlvbnMuICAqLwpAQCAtNDExMiw5ICs0NTEyLDMzNCBAQAogfQogCiBzdGF0aWMg dm9pZAorUE5JX0ZpeHVwIChpbnQgZXh0cmFjaGFyIEFUVFJJQlVURV9VTlVTRUQsIGludCBzaXpl ZmxhZykKK3sKKyAgaWYgKG1vZCA9PSAzICYmIHJlZyA9PSAxICYmIHJtIDw9IDEpCisgICAgewor ICAgICAgLyogT3ZlcnJpZGUgInNpZHQiLiAgKi8KKyAgICAgIHNpemVfdCBvbGVuID0gc3RybGVu IChvYnVmKTsKKyAgICAgIGNoYXIgKnAgPSBvYnVmICsgb2xlbiAtIDQ7CisgICAgICBjb25zdCBj aGFyICogY29uc3QgKm5hbWVzID0gKGFkZHJlc3NfbW9kZSA9PSBtb2RlXzY0Yml0CisJCQkgICAg PyBuYW1lczY0IDogbmFtZXMzMik7CisKKyAgICAgIC8qIFdlIG1pZ2h0IGhhdmUgYSBzdWZmaXgg d2hlbiBkaXNhc3NlbWJsaW5nIHdpdGggLU1zdWZmaXguICAqLworICAgICAgaWYgKCpwID09ICdp JykKKwktLXA7CisKKyAgICAgIC8qIFJlbW92ZSAiYWRkcjE2L2FkZHIzMiIgaWYgd2UgYXJlbid0 IGluIEludGVsIG1vZGUuICAqLworICAgICAgaWYgKCFpbnRlbF9zeW50YXgKKwkgICYmIChwcmVm aXhlcyAmIFBSRUZJWF9BRERSKQorCSAgJiYgb2xlbiA+PSAoNCArIDcpCisJICAmJiAqKHAgLSAx KSA9PSAnICcKKwkgICYmIHN0cm5jbXAgKHAgLSA3LCAiYWRkciIsIDQpID09IDAKKwkgICYmIChz dHJuY21wIChwIC0gMywgIjE2IiwgMikgPT0gMAorCSAgICAgIHx8IHN0cm5jbXAgKHAgLSAzLCAi MzIiLCAyKSA9PSAwKSkKKwlwIC09IDc7CisKKyAgICAgIGlmIChybSkKKwl7CisJICAvKiBtd2Fp dCAlZWF4LCVlY3ggICovCisJICBzdHJjcHkgKHAsICJtd2FpdCIpOworCSAgaWYgKCFpbnRlbF9z eW50YXgpCisJICAgIHN0cmNweSAob3Axb3V0LCBuYW1lc1swXSk7CisJfQorICAgICAgZWxzZQor CXsKKwkgIC8qIG1vbml0b3IgJWVheCwlZWN4LCVlZHgiICAqLworCSAgc3RyY3B5IChwLCAibW9u aXRvciIpOworCSAgaWYgKCFpbnRlbF9zeW50YXgpCisJICAgIHsKKwkgICAgICBjb25zdCBjaGFy ICogY29uc3QgKm9wMV9uYW1lczsKKwkgICAgICBpZiAoIShwcmVmaXhlcyAmIFBSRUZJWF9BRERS KSkKKwkJb3AxX25hbWVzID0gKGFkZHJlc3NfbW9kZSA9PSBtb2RlXzE2Yml0CisJCQkgICAgID8g bmFtZXMxNiA6IG5hbWVzKTsKKwkgICAgICBlbHNlCisJCXsKKwkJICBvcDFfbmFtZXMgPSAoYWRk cmVzc19tb2RlICE9IG1vZGVfMzJiaXQKKwkJCSAgICAgICA/IG5hbWVzMzIgOiBuYW1lczE2KTsK KwkJICB1c2VkX3ByZWZpeGVzIHw9IFBSRUZJWF9BRERSOworCQl9CisJICAgICAgc3RyY3B5IChv cDFvdXQsIG9wMV9uYW1lc1swXSk7CisJICAgICAgc3RyY3B5IChvcDNvdXQsIG5hbWVzWzJdKTsK KwkgICAgfQorCX0KKyAgICAgIGlmICghaW50ZWxfc3ludGF4KQorCXsKKwkgIHN0cmNweSAob3Ay b3V0LCBuYW1lc1sxXSk7CisJICB0d29fc291cmNlX29wcyA9IDE7CisJfQorCisgICAgICBjb2Rl cCsrOworICAgIH0KKyAgZWxzZQorICAgIE9QX00gKDAsIHNpemVmbGFnKTsKK30KKworc3RhdGlj IHZvaWQKK1NWTUVfRml4dXAgKGludCBieXRlbW9kZSwgaW50IHNpemVmbGFnKQoreworICBjb25z dCBjaGFyICphbHQ7CisgIGNoYXIgKnA7CisKKyAgc3dpdGNoICgqY29kZXApCisgICAgeworICAg IGNhc2UgMHhkODoKKyAgICAgIGFsdCA9ICJ2bXJ1biI7CisgICAgICBicmVhazsKKyAgICBjYXNl IDB4ZDk6CisgICAgICBhbHQgPSAidm1tY2FsbCI7CisgICAgICBicmVhazsKKyAgICBjYXNlIDB4 ZGE6CisgICAgICBhbHQgPSAidm1sb2FkIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgMHhkYjoK KyAgICAgIGFsdCA9ICJ2bXNhdmUiOworICAgICAgYnJlYWs7CisgICAgY2FzZSAweGRjOgorICAg ICAgYWx0ID0gInN0Z2kiOworICAgICAgYnJlYWs7CisgICAgY2FzZSAweGRkOgorICAgICAgYWx0 ID0gImNsZ2kiOworICAgICAgYnJlYWs7CisgICAgY2FzZSAweGRlOgorICAgICAgYWx0ID0gInNr aW5pdCI7CisgICAgICBicmVhazsKKyAgICBjYXNlIDB4ZGY6CisgICAgICBhbHQgPSAiaW52bHBn YSI7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgT1BfTSAoYnl0ZW1vZGUsIHNp emVmbGFnKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgIC8qIE92ZXJyaWRlICJsaWR0Ii4gICov CisgIHAgPSBvYnVmICsgc3RybGVuIChvYnVmKSAtIDQ7CisgIC8qIFdlIG1pZ2h0IGhhdmUgYSBz dWZmaXguICAqLworICBpZiAoKnAgPT0gJ2knKQorICAgIC0tcDsKKyAgc3RyY3B5IChwLCBhbHQp OworICBpZiAoIShwcmVmaXhlcyAmIFBSRUZJWF9BRERSKSkKKyAgICB7CisgICAgICArK2NvZGVw OworICAgICAgcmV0dXJuOworICAgIH0KKyAgdXNlZF9wcmVmaXhlcyB8PSBQUkVGSVhfQUREUjsK KyAgc3dpdGNoICgqY29kZXArKykKKyAgICB7CisgICAgY2FzZSAweGRmOgorICAgICAgc3RyY3B5 IChvcDJvdXQsIG5hbWVzMzJbMV0pOworICAgICAgdHdvX3NvdXJjZV9vcHMgPSAxOworCSAgLyog RmFsbCB0aHJvdWdoLiAgKi8KKyAgICBjYXNlIDB4ZDg6CisgICAgY2FzZSAweGRhOgorICAgIGNh c2UgMHhkYjoKKyAgICAgICpvYnVmcCsrID0gb3Blbl9jaGFyOworICAgICAgaWYgKGFkZHJlc3Nf bW9kZSA9PSBtb2RlXzY0Yml0IHx8IChzaXplZmxhZyAmIEFGTEFHKSkKKyAgICAgICAgYWx0ID0g bmFtZXMzMlswXTsKKyAgICAgIGVsc2UKKyAgICAgICAgYWx0ID0gbmFtZXMxNlswXTsKKyAgICAg IHN0cmNweSAob2J1ZnAsIGFsdCk7CisgICAgICBvYnVmcCArPSBzdHJsZW4gKGFsdCk7CisgICAg ICAqb2J1ZnArKyA9IGNsb3NlX2NoYXI7CisgICAgICAqb2J1ZnAgPSAnXDAnOworICAgICAgYnJl YWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorSU5WTFBHX0ZpeHVwIChpbnQgYnl0ZW1vZGUs IGludCBzaXplZmxhZykKK3sKKyAgY29uc3QgY2hhciAqYWx0OworCisgIHN3aXRjaCAoKmNvZGVw KQorICAgIHsKKyAgICBjYXNlIDB4Zjg6CisgICAgICBhbHQgPSAic3dhcGdzIjsKKyAgICAgIGJy ZWFrOworICAgIGNhc2UgMHhmOToKKyAgICAgIGFsdCA9ICJyZHRzY3AiOworICAgICAgYnJlYWs7 CisgICAgZGVmYXVsdDoKKyAgICAgIE9QX00gKGJ5dGVtb2RlLCBzaXplZmxhZyk7CisgICAgICBy ZXR1cm47CisgICAgfQorICAvKiBPdmVycmlkZSAiaW52bHBnIi4gICovCisgIHN0cmNweSAob2J1 ZiArIHN0cmxlbiAob2J1ZikgLSA2LCBhbHQpOworICBjb2RlcCsrOworfQorCitzdGF0aWMgdm9p ZAogQmFkT3AgKHZvaWQpCiB7CiAgIC8qIFRocm93IGF3YXkgcHJlZml4ZXMgYW5kIDFzdC4gb3Bj b2RlIGJ5dGUuICAqLwogICBjb2RlcCA9IGluc25fY29kZXAgKyAxOwogICBvYXBwZW5kICgiKGJh ZCkiKTsKIH0KKworc3RhdGljIHZvaWQKK1NFR19GaXh1cCAoaW50IGV4dHJhY2hhciwgaW50IHNp emVmbGFnKQoreworICBpZiAobW9kID09IDMpCisgICAgeworICAgICAgLyogV2UgbmVlZCB0byBh ZGQgYSBwcm9wZXIgc3VmZml4IHdpdGgKKworCQltb3Z3ICVkcywlYXgKKwkJbW92bCAlZHMsJWVh eAorCQltb3ZxICVkcywlcmF4CisJCW1vdncgJWF4LCVkcworCQltb3ZsICVlYXgsJWRzCisJCW1v dnEgJXJheCwlZHMKKyAgICAgICAqLworICAgICAgY29uc3QgY2hhciAqc3VmZml4OworCisgICAg ICBpZiAocHJlZml4ZXMgJiBQUkVGSVhfREFUQSkKKwlzdWZmaXggPSAidyI7CisgICAgICBlbHNl CisJeworCSAgVVNFRF9SRVggKFJFWF9NT0RFNjQpOworCSAgaWYgKHJleCAmIFJFWF9NT0RFNjQp CisJICAgIHN1ZmZpeCA9ICJxIjsKKwkgIGVsc2UKKwkgICAgc3VmZml4ID0gImwiOworCX0KKyAg ICAgIHN0cmNhdCAob2J1Ziwgc3VmZml4KTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICAv KiBXZSBuZWVkIHRvIGZpeCB0aGUgc3VmZml4IGZvcgorCisJCW1vdncgJWRzLCglZWF4KQorCQlt b3Z3ICVkcywoJXJheCkKKwkJbW92dyAoJWVheCksJWRzCisJCW1vdncgKCVyYXgpLCVkcworCisJ IE92ZXJyaWRlICJtb3ZbbHxxXSIuICAqLworICAgICAgY2hhciAqcCA9IG9idWYgKyBzdHJsZW4g KG9idWYpIC0gMTsKKworICAgICAgLyogV2UgbWlnaHQgbm90IGhhdmUgYSBzdWZmaXguICAqLwor ICAgICAgaWYgKCpwID09ICd2JykKKwkrK3A7CisgICAgICAqcCA9ICd3JzsKKyAgICB9CisKKyAg T1BfRSAoZXh0cmFjaGFyLCBzaXplZmxhZyk7Cit9CisKK3N0YXRpYyB2b2lkCitWTVhfRml4dXAg KGludCBleHRyYWNoYXIgQVRUUklCVVRFX1VOVVNFRCwgaW50IHNpemVmbGFnKQoreworICBpZiAo bW9kID09IDMgJiYgcmVnID09IDAgJiYgcm0gPj0xICYmIHJtIDw9IDQpCisgICAgeworICAgICAg LyogT3ZlcnJpZGUgInNnZHQiLiAgKi8KKyAgICAgIGNoYXIgKnAgPSBvYnVmICsgc3RybGVuIChv YnVmKSAtIDQ7CisKKyAgICAgIC8qIFdlIG1pZ2h0IGhhdmUgYSBzdWZmaXggd2hlbiBkaXNhc3Nl bWJsaW5nIHdpdGggLU1zdWZmaXguICAqLworICAgICAgaWYgKCpwID09ICdnJykKKwktLXA7CisK KyAgICAgIHN3aXRjaCAocm0pCisJeworCWNhc2UgMToKKwkgIHN0cmNweSAocCwgInZtY2FsbCIp OworCSAgYnJlYWs7CisJY2FzZSAyOgorCSAgc3RyY3B5IChwLCAidm1sYXVuY2giKTsKKwkgIGJy ZWFrOworCWNhc2UgMzoKKwkgIHN0cmNweSAocCwgInZtcmVzdW1lIik7CisJICBicmVhazsKKwlj YXNlIDQ6CisJICBzdHJjcHkgKHAsICJ2bXhvZmYiKTsKKwkgIGJyZWFrOworCX0KKworICAgICAg Y29kZXArKzsKKyAgICB9CisgIGVsc2UKKyAgICBPUF9FICgwLCBzaXplZmxhZyk7Cit9CisKK3N0 YXRpYyB2b2lkCitPUF9WTVggKGludCBieXRlbW9kZSwgaW50IHNpemVmbGFnKQoreworICB1c2Vk X3ByZWZpeGVzIHw9IChwcmVmaXhlcyAmIChQUkVGSVhfREFUQSB8IFBSRUZJWF9SRVBaKSk7Cisg IGlmIChwcmVmaXhlcyAmIFBSRUZJWF9EQVRBKQorICAgIHN0cmNweSAob2J1ZiwgInZtY2xlYXIi KTsKKyAgZWxzZSBpZiAocHJlZml4ZXMgJiBQUkVGSVhfUkVQWikKKyAgICBzdHJjcHkgKG9idWYs ICJ2bXhvbiIpOworICBlbHNlCisgICAgc3RyY3B5IChvYnVmLCAidm1wdHJsZCIpOworICBPUF9F IChieXRlbW9kZSwgc2l6ZWZsYWcpOworfQorCitzdGF0aWMgdm9pZAorUkVQX0ZpeHVwIChpbnQg Ynl0ZW1vZGUsIGludCBzaXplZmxhZykKK3sKKyAgLyogVGhlIDB4ZjMgcHJlZml4IHNob3VsZCBi ZSBkaXNwbGF5ZWQgYXMgInJlcCIgZm9yIGlucywgb3V0cywgbW92cywKKyAgICAgbG9kcyBhbmQg c3Rvcy4gICovCisgIHNpemVfdCBpbGVuID0gMDsKKworICBpZiAocHJlZml4ZXMgJiBQUkVGSVhf UkVQWikKKyAgICBzd2l0Y2ggKCppbnNuX2NvZGVwKQorICAgICAgeworICAgICAgY2FzZSAweDZl OgkvKiBvdXRzYiAqLworICAgICAgY2FzZSAweDZmOgkvKiBvdXRzdy9vdXRzbCAqLworICAgICAg Y2FzZSAweGE0OgkvKiBtb3ZzYiAqLworICAgICAgY2FzZSAweGE1OgkvKiBtb3Zzdy9tb3ZzbC9t b3ZzcSAqLworCWlmICghaW50ZWxfc3ludGF4KQorCSAgaWxlbiA9IDU7CisJZWxzZQorCSAgaWxl biA9IDQ7CisJYnJlYWs7CisgICAgICBjYXNlIDB4YWE6CS8qIHN0b3NiICovCisgICAgICBjYXNl IDB4YWI6CS8qIHN0b3N3L3N0b3NsL3N0b3NxICovCisgICAgICBjYXNlIDB4YWM6CS8qIGxvZHNi ICovCisgICAgICBjYXNlIDB4YWQ6CS8qIGxvZHN3L2xvZHNsL2xvZHNxICovCisJaWYgKCFpbnRl bF9zeW50YXggJiYgKHNpemVmbGFnICYgU1VGRklYX0FMV0FZUykpCisJICBpbGVuID0gNTsKKwll bHNlCisJICBpbGVuID0gNDsKKwlicmVhazsKKyAgICAgIGNhc2UgMHg2YzoJLyogaW5zYiAqLwor ICAgICAgY2FzZSAweDZkOgkvKiBpbnNsL2luc3cgKi8KKwlpZiAoIWludGVsX3N5bnRheCkKKwkg IGlsZW4gPSA0OworCWVsc2UKKwkgIGlsZW4gPSAzOworCWJyZWFrOworICAgICAgZGVmYXVsdDoK KwlhYm9ydCAoKTsKKwlicmVhazsKKyAgICAgIH0KKworICBpZiAoaWxlbiAhPSAwKQorICAgIHsK KyAgICAgIHNpemVfdCBvbGVuOworICAgICAgY2hhciAqcDsKKworICAgICAgb2xlbiA9IHN0cmxl biAob2J1Zik7CisgICAgICBwID0gb2J1ZiArIG9sZW4gLSBpbGVuIC0gMSAtIDQ7CisgICAgICAv KiBIYW5kbGUgInJlcHogW2FkZHIxNnxhZGRyMzJdIi4gICovCisgICAgICBpZiAoKHByZWZpeGVz ICYgUFJFRklYX0FERFIpKQorCXAgLT0gMSArIDY7CisKKyAgICAgIG1lbW1vdmUgKHAgKyAzLCBw ICsgNCwgb2xlbiAtIChwICsgMyAtIG9idWYpKTsKKyAgICB9CisKKyAgc3dpdGNoIChieXRlbW9k ZSkKKyAgICB7CisgICAgY2FzZSBhbF9yZWc6CisgICAgY2FzZSBlQVhfcmVnOgorICAgIGNhc2Ug aW5kaXJfZHhfcmVnOgorICAgICAgT1BfSU1SRUcgKGJ5dGVtb2RlLCBzaXplZmxhZyk7CisgICAg ICBicmVhazsKKyAgICBjYXNlIGVESV9yZWc6CisgICAgICBPUF9FU3JlZyAoYnl0ZW1vZGUsIHNp emVmbGFnKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgZVNJX3JlZzoKKyAgICAgIE9QX0RTcmVn IChieXRlbW9kZSwgc2l6ZWZsYWcpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg IGFib3J0ICgpOworICAgICAgYnJlYWs7CisgICAgfQorfQo= ------=_Part_40349_33374812.1225132188753--