From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8209 invoked by alias); 21 Mar 2009 16:03:34 -0000 Received: (qmail 7832 invoked by uid 22791); 21 Mar 2009 16:03:26 -0000 X-SWARE-Spam-Status: No, hits=-0.2 required=5.0 tests=AWL,BAYES_50,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from ti-out-0910.google.com (HELO ti-out-0910.google.com) (209.85.142.186) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 21 Mar 2009 16:03:19 +0000 Received: by ti-out-0910.google.com with SMTP id a1so927662tib.12 for ; Sat, 21 Mar 2009 09:03:15 -0700 (PDT) MIME-Version: 1.0 Received: by 10.110.90.9 with SMTP id n9mr7876324tib.6.1237651395155; Sat, 21 Mar 2009 09:03:15 -0700 (PDT) Date: Sat, 21 Mar 2009 16:04:00 -0000 Message-ID: Subject: [RFA] Submit process record and replay fourth time, 6/8 From: Hui Zhu To: "gdb-patches@sourceware.org" Cc: Pedro Alves , Marc Khouzam , Michael Snyder , Thiago Jung Bauermann , Eli Zaretskii , paawan1982@yahoo.com Content-Type: multipart/mixed; boundary=0016e6511bd0c399170465a32b41 X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2009-03/txt/msg00441.txt.bz2 --0016e6511bd0c399170465a32b41 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-length: 1144 This patch add code to make I386 architecture support process record and replay. 2009-03-21 Hui Zhu I386 architecture process record and replay support. * i386-tdep.c (PREFIX_REPZ, PREFIX_REPNZ, PREFIX_LOCK, PREFIX_DATA, PREFIX_ADDR): New macros. Help decode the i386 instruction set. (aflag, dflag, override, modrm, mod, reg, rm, ot, i386_record_pc): New variables. Ditto. (i386_record_modrm, i386_record_lea_modrm_addr, i386_record_lea_modrm): New functions. Ditto. (i386_process_record): New function. Parse the instruction in address "addr" and record the values of registers and memory that will be changed by this instruction. (i386_gdbarch_init): Set "i386_process_record" to GDBARCH "process_record" interface. * i386-tdep.h (gdbarch_tdep): New function pointers "i386_intx80_record" and "i386_sysenter_record" that point to the function that can record "intx80" and "sysenter" execute log. 2008-12-28 Michael Snyder * Comments, spelling, white space clean-ups. 2008-08-01 Michael Snyder * i386-tdep.c (i386_record_lea_modrm): Spelling fix. --0016e6511bd0c399170465a32b41 Content-Type: text/plain; charset=US-ASCII; name="6-i386-tdep.txt" Content-Disposition: attachment; filename="6-i386-tdep.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fskhob490 Content-length: 67784 LS0tCiBpMzg2LXRkZXAuYyB8IDI0MDAgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpMzg2 LXRkZXAuaCB8ICAgIDQgCiAyIGZpbGVzIGNoYW5nZWQsIDI0MDQgaW5zZXJ0 aW9ucygrKQoKLS0tIGEvaTM4Ni10ZGVwLmMKKysrIGIvaTM4Ni10ZGVwLmMK QEAgLTUwLDYgKzUwLDkgQEAKICNpbmNsdWRlICJpMzg2LXRkZXAuaCIKICNp bmNsdWRlICJpMzg3LXRkZXAuaCIKIAorI2luY2x1ZGUgInJlY29yZC5oIgor I2luY2x1ZGUgPHN0ZGludC5oPgorCiAvKiBSZWdpc3RlciBuYW1lcy4gICov CiAKIHN0YXRpYyBjaGFyICppMzg2X3JlZ2lzdGVyX25hbWVzW10gPQpAQCAt MjY3MSw2ICsyNjc0LDI0MDEgQEAgaTM4Nl9za2lwX3Blcm1hbmVudF9icmVh a3BvaW50IChzdHJ1Y3QgcgogfQogCiAKKyNkZWZpbmUgUFJFRklYX1JFUFoJ MHgwMQorI2RlZmluZSBQUkVGSVhfUkVQTloJMHgwMgorI2RlZmluZSBQUkVG SVhfTE9DSwkweDA0CisjZGVmaW5lIFBSRUZJWF9EQVRBCTB4MDgKKyNkZWZp bmUgUFJFRklYX0FERFIJMHgxMAorCisvKiBvcGVyYW5kIHNpemUgKi8KK2Vu dW0KK3sKKyAgT1RfQllURSA9IDAsCisgIE9UX1dPUkQsCisgIE9UX0xPTkcs Cit9OworCisvKiBpMzg2IGFyaXRoL2xvZ2ljIG9wZXJhdGlvbnMgKi8KK2Vu dW0KK3sKKyAgT1BfQURETCwKKyAgT1BfT1JMLAorICBPUF9BRENMLAorICBP UF9TQkJMLAorICBPUF9BTkRMLAorICBPUF9TVUJMLAorICBPUF9YT1JMLAor ICBPUF9DTVBMLAorfTsKKworc3RhdGljIGludCBhZmxhZyA9IDE7CitzdGF0 aWMgaW50IGRmbGFnID0gMTsKK3N0YXRpYyBpbnQgb3ZlcnJpZGUgPSAwOwor c3RhdGljIHVpbnQ4X3QgbW9kcm07CitzdGF0aWMgdWludDhfdCBtb2QsIHJl Zywgcm07CitzdGF0aWMgaW50IG90Oworc3RhdGljIENPUkVfQUREUiBpMzg2 X3JlY29yZF9wYzsKKworLyogUGFyc2UgIm1vZHJtIiBwYXJ0IGluIGN1cnJl bnQgbWVtb3J5IGFkZHJlc3MgdGhhdCBpMzg2X3JlY29yZF9wYyBwb2ludCB0 bworICAgUmV0dXJuIC0xIGlmIHNvbWV0aGluZyB3cm9uZy4gKi8KK3N0YXRp YyBpbnQKK2kzODZfcmVjb3JkX21vZHJtICh2b2lkKQoreworICBpZiAodGFy Z2V0X3JlYWRfbWVtb3J5IChpMzg2X3JlY29yZF9wYywgJm1vZHJtLCAxKSkK KyAgICB7CisgICAgICBpZiAocmVjb3JkX2RlYnVnKQorCXByaW50Zl91bmZp bHRlcmVkIChfKCJQcm9jZXNzIHJlY29yZDogZXJyb3IgcmVhZGluZyBtZW1v cnkgYXQgIgorCQkJICAgICAiYWRkciAweCVzIGxlbiA9IDEuXG4iKSwKKwkJ CSAgIHBhZGRyX256IChpMzg2X3JlY29yZF9wYykpOworICAgICAgcmV0dXJu IC0xOworICAgIH0KKyAgaTM4Nl9yZWNvcmRfcGMrKzsKKyAgbW9kID0gKG1v ZHJtID4+IDYpICYgMzsKKyAgcmVnID0gKG1vZHJtID4+IDMpICYgNzsKKyAg cm0gPSBtb2RybSAmIDc7CisKKyAgcmV0dXJuIDA7Cit9CisKKy8qIEdldCB0 aGUgbWVtb3J5IGFkZHJlc3MgdGhhdCBjdXJyZW50IGluc3RydWN0aW9uICB3 cml0ZSB0byBhbmQgc2V0IGl0IHRvCisgICB0aGUgYXJndW1lbnQgImFkZHIi LgorICAgUmV0dXJuIC0xIGlmIHNvbWV0aGluZyB3cm9uZy4gKi8KK3N0YXRp YyBpbnQKK2kzODZfcmVjb3JkX2xlYV9tb2RybV9hZGRyICh1aW50MzJfdCAq IGFkZHIpCit7CisgIHVpbnQ4X3QgdG1wdTg7CisgIHVpbnQxNl90IHRtcHUx NjsKKyAgdWludDMyX3QgdG1wdTMyOworCisgICphZGRyID0gMDsKKyAgaWYg KGFmbGFnKQorICAgIHsKKyAgICAgIC8qIDMyIGJpdHMgKi8KKyAgICAgIGlu dCBoYXZlc2liID0gMDsKKyAgICAgIHVpbnQ4X3Qgc2NhbGUgPSAwOworICAg ICAgdWludDhfdCBpbmRleCA9IDA7CisgICAgICB1aW50OF90IGJhc2UgPSBy bTsKKworICAgICAgaWYgKGJhc2UgPT0gNCkKKwl7CisJICBoYXZlc2liID0g MTsKKwkgIGlmICh0YXJnZXRfcmVhZF9tZW1vcnkgKGkzODZfcmVjb3JkX3Bj LCAmdG1wdTgsIDEpKQorCSAgICB7CisJICAgICAgaWYgKHJlY29yZF9kZWJ1 ZykKKwkJcHJpbnRmX3VuZmlsdGVyZWQgKF8oIlByb2Nlc3MgcmVjb3JkOiBl cnJvciByZWFkaW5nIG1lbW9yeSAiCisJCQkJICAgICAiYXQgYWRkciAweCVz IGxlbiA9IDEuXG4iKSwKKwkJCQkgICBwYWRkcl9ueiAoaTM4Nl9yZWNvcmRf cGMpKTsKKwkgICAgICByZXR1cm4gLTE7CisJICAgIH0KKwkgIGkzODZfcmVj b3JkX3BjKys7CisJICBzY2FsZSA9ICh0bXB1OCA+PiA2KSAmIDM7CisJICBp bmRleCA9ICgodG1wdTggPj4gMykgJiA3KTsKKwkgIGJhc2UgPSAodG1wdTgg JiA3KTsKKwl9CisKKyAgICAgIHN3aXRjaCAobW9kKQorCXsKKwljYXNlIDA6 CisJICBpZiAoKGJhc2UgJiA3KSA9PSA1KQorCSAgICB7CisJICAgICAgYmFz ZSA9IDB4ZmY7CisJICAgICAgaWYgKHRhcmdldF9yZWFkX21lbW9yeSAoaTM4 Nl9yZWNvcmRfcGMsIChnZGJfYnl0ZSAqKSBhZGRyLCA0KSkKKwkJeworCQkg IGlmIChyZWNvcmRfZGVidWcpCisJCSAgICBwcmludGZfdW5maWx0ZXJlZCAo XygiUHJvY2VzcyByZWNvcmQ6IGVycm9yIHJlYWRpbmcgIgorCQkJCSAgICAg ICAgICJtZW1vcnkgYXQgYWRkciAweCVzIGxlbiA9IDQuXG4iKSwKKwkJCQkg ICAgICAgcGFkZHJfbnogKGkzODZfcmVjb3JkX3BjKSk7CisJCSAgcmV0dXJu IC0xOworCQl9CisJICAgICAgaTM4Nl9yZWNvcmRfcGMgKz0gNDsKKwkgICAg fQorCSAgZWxzZQorCSAgICB7CisJICAgICAgKmFkZHIgPSAwOworCSAgICB9 CisJICBicmVhazsKKwljYXNlIDE6CisJICBpZiAodGFyZ2V0X3JlYWRfbWVt b3J5IChpMzg2X3JlY29yZF9wYywgJnRtcHU4LCAxKSkKKwkgICAgeworCSAg ICAgIGlmIChyZWNvcmRfZGVidWcpCisJCXByaW50Zl91bmZpbHRlcmVkIChf KCJQcm9jZXNzIHJlY29yZDogZXJyb3IgcmVhZGluZyBtZW1vcnkgIgorCQkJ CSAgICAgImF0IGFkZHIgMHglcyBsZW4gPSAxLlxuIiksCisJCQkJICAgcGFk ZHJfbnogKGkzODZfcmVjb3JkX3BjKSk7CisJICAgICAgcmV0dXJuIC0xOwor CSAgICB9CisJICBpMzg2X3JlY29yZF9wYysrOworCSAgKmFkZHIgPSAoaW50 OF90KSB0bXB1ODsKKwkgIGJyZWFrOworCWNhc2UgMjoKKwkgIGlmICh0YXJn ZXRfcmVhZF9tZW1vcnkgKGkzODZfcmVjb3JkX3BjLCAoZ2RiX2J5dGUgKikg YWRkciwgNCkpCisJICAgIHsKKwkgICAgICBpZiAocmVjb3JkX2RlYnVnKQor CQlwcmludGZfdW5maWx0ZXJlZCAoXygiUHJvY2VzcyByZWNvcmQ6IGVycm9y IHJlYWRpbmcgbWVtb3J5ICIKKwkJCQkgICAgICJhdCBhZGRyIDB4JXMgbGVu ID0gNC5cbiIpLAorCQkJCSAgIHBhZGRyX256IChpMzg2X3JlY29yZF9wYykp OworCSAgICAgIHJldHVybiAtMTsKKwkgICAgfQorCSAgaTM4Nl9yZWNvcmRf cGMgKz0gNDsKKwkgIGJyZWFrOworCX0KKworICAgICAgaWYgKGJhc2UgIT0g MHhmZikKKwl7CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2Nh Y2hlLCBiYXNlLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAgKmFkZHIg Kz0gdG1wdTMyOworCX0KKworICAgICAgLyogWFhYOiBpbmRleCA9PSA0IGlz IGFsd2F5cyBpbnZhbGlkICovCisgICAgICBpZiAoaGF2ZXNpYiAmJiAoaW5k ZXggIT0gNCB8fCBzY2FsZSAhPSAwKSkKKwl7CisJICByZWdjYWNoZV9yYXdf cmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBpbmRleCwgKGdkYl9ieXRlICopICYg dG1wdTMyKTsKKwkgICphZGRyICs9IHRtcHUzMiA8PCBzY2FsZTsKKwl9Cisg ICAgfQorICBlbHNlCisgICAgeworICAgICAgLyogMTYgYml0cyAqLworICAg ICAgc3dpdGNoIChtb2QpCisJeworCWNhc2UgMDoKKwkgIGlmIChybSA9PSA2 KQorCSAgICB7CisJICAgICAgaWYgKHRhcmdldF9yZWFkX21lbW9yeQorCQkg IChpMzg2X3JlY29yZF9wYywgKGdkYl9ieXRlICopICYgdG1wdTE2LCAyKSkK KwkJeworCQkgIGlmIChyZWNvcmRfZGVidWcpCisJCSAgICBwcmludGZfdW5m aWx0ZXJlZCAoXygiUHJvY2VzcyByZWNvcmQ6IGVycm9yIHJlYWRpbmcgIgor CQkJCQkgIm1lbW9yeSBhdCBhZGRyIDB4JXMgbGVuID0gMi5cbiIpLAorCQkJ CSAgICAgICBwYWRkcl9ueiAoaTM4Nl9yZWNvcmRfcGMpKTsKKwkJICByZXR1 cm4gLTE7CisJCX0KKwkgICAgICBpMzg2X3JlY29yZF9wYyArPSAyOworCSAg ICAgICphZGRyID0gKGludDE2X3QpIHRtcHUxNjsKKwkgICAgICBybSA9IDA7 CisJICAgICAgZ290byBub19ybTsKKwkgICAgfQorCSAgZWxzZQorCSAgICB7 CisJICAgICAgKmFkZHIgPSAwOworCSAgICB9CisJICBicmVhazsKKwljYXNl IDE6CisJICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChpMzg2X3JlY29yZF9w YywgJnRtcHU4LCAxKSkKKwkgICAgeworCSAgICAgIGlmIChyZWNvcmRfZGVi dWcpCisJCXByaW50Zl91bmZpbHRlcmVkIChfKCJQcm9jZXNzIHJlY29yZDog ZXJyb3IgcmVhZGluZyBtZW1vcnkgIgorCQkJCSAgICAgImF0IGFkZHIgMHgl cyBsZW4gPSAxLlxuIiksCisJCQkJICAgcGFkZHJfbnogKGkzODZfcmVjb3Jk X3BjKSk7CisJICAgICAgcmV0dXJuIC0xOworCSAgICB9CisJICBpMzg2X3Jl Y29yZF9wYysrOworCSAgKmFkZHIgPSAoaW50OF90KSB0bXB1ODsKKwkgIGJy ZWFrOworCWNhc2UgMjoKKwkgIGlmICh0YXJnZXRfcmVhZF9tZW1vcnkgKGkz ODZfcmVjb3JkX3BjLCAoZ2RiX2J5dGUgKikgJiB0bXB1MTYsIDIpKQorCSAg ICB7CisJICAgICAgaWYgKHJlY29yZF9kZWJ1ZykKKwkJcHJpbnRmX3VuZmls dGVyZWQgKF8oIlByb2Nlc3MgcmVjb3JkOiBlcnJvciByZWFkaW5nIG1lbW9y eSAiCisJCQkJICAgICAiYXQgYWRkciAweCVzIGxlbiA9IDIuXG4iKSwKKwkJ CQkgICBwYWRkcl9ueiAoaTM4Nl9yZWNvcmRfcGMpKTsKKwkgICAgICByZXR1 cm4gLTE7CisJICAgIH0KKwkgIGkzODZfcmVjb3JkX3BjICs9IDI7CisJICAq YWRkciA9IChpbnQxNl90KSB0bXB1MTY7CisJICBicmVhazsKKwl9CisKKyAg ICAgIHN3aXRjaCAocm0pCisJeworCWNhc2UgMDoKKwkgIHJlZ2NhY2hlX3Jh d19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUJYX1JFR05VTSwKKwkJ CSAgICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgICphZGRyICs9IHRt cHUzMjsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUs IEkzODZfRVNJX1JFR05VTSwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1w dTMyKTsKKwkgICphZGRyICs9IHRtcHUzMjsKKwkgIGJyZWFrOworCWNhc2Ug MToKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkz ODZfRUJYX1JFR05VTSwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1wdTMy KTsKKwkgICphZGRyICs9IHRtcHUzMjsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFk IChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRURJX1JFR05VTSwKKwkJCSAgICAg KGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgICphZGRyICs9IHRtcHUzMjsK KwkgIGJyZWFrOworCWNhc2UgMjoKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChy ZWNvcmRfcmVnY2FjaGUsIEkzODZfRUJQX1JFR05VTSwKKwkJCSAgICAgKGdk Yl9ieXRlICopICYgdG1wdTMyKTsKKwkgICphZGRyICs9IHRtcHUzMjsKKwkg IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRVNJ X1JFR05VTSwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkg ICphZGRyICs9IHRtcHUzMjsKKwkgIGJyZWFrOworCWNhc2UgMzoKKwkgIHJl Z2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUJQX1JF R05VTSwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgICph ZGRyICs9IHRtcHUzMjsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRf cmVnY2FjaGUsIEkzODZfRURJX1JFR05VTSwKKwkJCSAgICAgKGdkYl9ieXRl ICopICYgdG1wdTMyKTsKKwkgICphZGRyICs9IHRtcHUzMjsKKwkgIGJyZWFr OworCWNhc2UgNDoKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVn Y2FjaGUsIEkzODZfRVNJX1JFR05VTSwKKwkJCSAgICAgKGdkYl9ieXRlICop ICYgdG1wdTMyKTsKKwkgICphZGRyICs9IHRtcHUzMjsKKwkgIGJyZWFrOwor CWNhc2UgNToKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2Fj aGUsIEkzODZfRURJX1JFR05VTSwKKwkJCSAgICAgKGdkYl9ieXRlICopICYg dG1wdTMyKTsKKwkgICphZGRyICs9IHRtcHUzMjsKKwkgIGJyZWFrOworCWNh c2UgNjoKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUs IEkzODZfRUJQX1JFR05VTSwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1w dTMyKTsKKwkgICphZGRyICs9IHRtcHUzMjsKKwkgIGJyZWFrOworCWNhc2Ug NzoKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkz ODZfRUJYX1JFR05VTSwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1wdTMy KTsKKwkgICphZGRyICs9IHRtcHUzMjsKKwkgIGJyZWFrOworCX0KKyAgICAg ICphZGRyICY9IDB4ZmZmZjsKKyAgICB9CisKK25vX3JtOgorICByZXR1cm4g MDsKK30KKworLyogUmVjb3JkIHRoZSB2YWx1ZSBvZiB0aGUgbWVtb3J5IHRo YXQgd2lsbGJlIGNoYW5nZWQgaW4gY3VycmVudCBpbnN0cnVjdGlvbgorICAg dG8gInJlY29yZF9hcmNoX2xpc3QiLgorICAgUmV0dXJuIC0xIGlmIHNvbWV0 aGluZyB3cm9uZy4gKi8KK3N0YXRpYyBpbnQKK2kzODZfcmVjb3JkX2xlYV9t b2RybSAodm9pZCkKK3sKKyAgdWludDMyX3QgYWRkcjsKKworICBpZiAob3Zl cnJpZGUpCisgICAgeworICAgICAgaWYgKHJlY29yZF9kZWJ1ZykKKwlwcmlu dGZfdW5maWx0ZXJlZCAoXygiUHJvY2VzcyByZWNvcmQgaWdub3JlcyB0aGUg bWVtb3J5IGNoYW5nZSAiCisJCQkgICAgICJvZiBpbnN0cnVjdGlvbiBhdCBh ZGRyZXNzIDB4JXMgYmVjYXVzZSBpdCAiCisJCQkgICAgICJjYW4ndCBnZXQg dGhlIHZhbHVlIG9mIHRoZSBzZWdtZW50IHJlZ2lzdGVyLlxuIiksCisJCQkg ICBwYWRkcl9ueiAoaTM4Nl9yZWNvcmRfcGMpKTsKKyAgICAgIHJldHVybiAw OworICAgIH0KKworICBpZiAoaTM4Nl9yZWNvcmRfbGVhX21vZHJtX2FkZHIg KCZhZGRyKSkKKyAgICByZXR1cm4gLTE7CisKKyAgaWYgKHJlY29yZF9hcmNo X2xpc3RfYWRkX21lbSAoYWRkciwgMSA8PCBvdCkpCisgICAgcmV0dXJuIC0x OworCisgIHJldHVybiAwOworfQorCisvKiBQYXJzZSB0aGUgY3VycmVudCBp bnN0cnVjdGlvbiBhbmQgcmVjb3JkIHRoZSB2YWx1ZXMgb2YgdGhlIHJlZ2lz dGVycyBhbmQKKyAgIG1lbW9yeSB0aGF0IHdpbGwgYmUgY2hhbmdlZCBpbiBj dXJyZW50IGluc3RydWN0aW9uIHRvICJyZWNvcmRfYXJjaF9saXN0Ii4KKyAg IFJldHVybiAtMSBpZiBzb21ldGhpbmcgd3JvbmcuICovCitzdGF0aWMgaW50 CitpMzg2X3Byb2Nlc3NfcmVjb3JkIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwgQ09SRV9BRERSIGFkZHIpCit7CisgIGludCBwcmVmaXhlcyA9IDA7Cisg IHVpbnQ4X3QgdG1wdTg7CisgIHVpbnQxNl90IHRtcHUxNjsKKyAgdWludDMy X3QgdG1wdTMyOworICB1aW50MzJfdCBvcGNvZGU7CisKKyAgaTM4Nl9yZWNv cmRfcGMgPSBhZGRyOworICBhZmxhZyA9IDE7CisgIGRmbGFnID0gMTsKKyAg b3ZlcnJpZGUgPSAwOworCisgIGlmIChyZWNvcmRfZGVidWcgPiAxKQorICAg IGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIlByb2Nlc3MgcmVj b3JkOiBpMzg2X3JlY29yZCBwYyA9IDB4JXNcbiIsCisJCQlwYWRkcl9ueiAo aTM4Nl9yZWNvcmRfcGMpKTsKKworICAvKiBwcmVmaXhlcyAqLworICB3aGls ZSAoMSkKKyAgICB7CisgICAgICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChp Mzg2X3JlY29yZF9wYywgJnRtcHU4LCAxKSkKKwl7CisJICBpZiAocmVjb3Jk X2RlYnVnKQorCSAgICBwcmludGZfdW5maWx0ZXJlZCAoXygiUHJvY2VzcyBy ZWNvcmQ6IGVycm9yIHJlYWRpbmcgbWVtb3J5IGF0ICIKKwkJCQkgImFkZHIg MHglcyBsZW4gPSAxLlxuIiksCisJCQkgICAgICAgcGFkZHJfbnogKGkzODZf cmVjb3JkX3BjKSk7CisJICByZXR1cm4gLTE7CisJfQorICAgICAgaTM4Nl9y ZWNvcmRfcGMrKzsKKyAgICAgIHN3aXRjaCAodG1wdTgpCisJeworCWNhc2Ug MHhmMzoKKwkgIHByZWZpeGVzIHw9IFBSRUZJWF9SRVBaOworCSAgYnJlYWs7 CisJY2FzZSAweGYyOgorCSAgcHJlZml4ZXMgfD0gUFJFRklYX1JFUE5aOwor CSAgYnJlYWs7CisJY2FzZSAweGYwOgorCSAgcHJlZml4ZXMgfD0gUFJFRklY X0xPQ0s7CisJICBicmVhazsKKwljYXNlIDB4MmU6CisJICBvdmVycmlkZSA9 IEkzODZfQ1NfUkVHTlVNOworCSAgYnJlYWs7CisJY2FzZSAweDM2OgorCSAg b3ZlcnJpZGUgPSBJMzg2X1NTX1JFR05VTTsKKwkgIGJyZWFrOworCWNhc2Ug MHgzZToKKwkgIG92ZXJyaWRlID0gSTM4Nl9EU19SRUdOVU07CisJICBicmVh azsKKwljYXNlIDB4MjY6CisJICBvdmVycmlkZSA9IEkzODZfRVNfUkVHTlVN OworCSAgYnJlYWs7CisJY2FzZSAweDY0OgorCSAgb3ZlcnJpZGUgPSBJMzg2 X0ZTX1JFR05VTTsKKwkgIGJyZWFrOworCWNhc2UgMHg2NToKKwkgIG92ZXJy aWRlID0gSTM4Nl9HU19SRUdOVU07CisJICBicmVhazsKKwljYXNlIDB4NjY6 CisJICBwcmVmaXhlcyB8PSBQUkVGSVhfREFUQTsKKwkgIGJyZWFrOworCWNh c2UgMHg2NzoKKwkgIHByZWZpeGVzIHw9IFBSRUZJWF9BRERSOworCSAgYnJl YWs7CisJZGVmYXVsdDoKKwkgIGdvdG8gb3V0X3ByZWZpeGVzOworCSAgYnJl YWs7CisJfQorICAgIH0KK291dF9wcmVmaXhlczoKKyAgaWYgKHByZWZpeGVz ICYgUFJFRklYX0RBVEEpCisgICAgZGZsYWcgXj0gMTsKKyAgaWYgKHByZWZp eGVzICYgUFJFRklYX0FERFIpCisgICAgYWZsYWcgXj0gMTsKKworICAvKiBu b3cgY2hlY2sgb3AgY29kZSAqLworICBvcGNvZGUgPSAodWludDMyX3QpIHRt cHU4OworcmVzd2l0Y2g6CisgIHN3aXRjaCAob3Bjb2RlKQorICAgIHsKKyAg ICBjYXNlIDB4MGY6CisgICAgICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChp Mzg2X3JlY29yZF9wYywgJnRtcHU4LCAxKSkKKwl7CisJICBpZiAocmVjb3Jk X2RlYnVnKQorCSAgICBwcmludGZfdW5maWx0ZXJlZCAoXygiUHJvY2VzcyBy ZWNvcmQ6IGVycm9yIHJlYWRpbmcgbWVtb3J5IGF0ICIKKwkJCQkgImFkZHIg MHglcyBsZW4gPSAxLlxuIiksCisJCQkgICAgICAgcGFkZHJfbnogKGkzODZf cmVjb3JkX3BjKSk7CisJICByZXR1cm4gLTE7CisJfQorICAgICAgaTM4Nl9y ZWNvcmRfcGMrKzsKKyAgICAgIG9wY29kZSA9ICh1aW50MTZfdCkgdG1wdTgg fCAweDBmMDA7CisgICAgICBnb3RvIHJlc3dpdGNoOworICAgICAgYnJlYWs7 CisKKyAgICAgIC8qIGFyaXRoICYgbG9naWMgKi8KKyAgICBjYXNlIDB4MDA6 CisgICAgY2FzZSAweDAxOgorICAgIGNhc2UgMHgwMjoKKyAgICBjYXNlIDB4 MDM6CisgICAgY2FzZSAweDA0OgorICAgIGNhc2UgMHgwNToKKyAgICBjYXNl IDB4MDg6CisgICAgY2FzZSAweDA5OgorICAgIGNhc2UgMHgwYToKKyAgICBj YXNlIDB4MGI6CisgICAgY2FzZSAweDBjOgorICAgIGNhc2UgMHgwZDoKKyAg ICBjYXNlIDB4MTA6CisgICAgY2FzZSAweDExOgorICAgIGNhc2UgMHgxMjoK KyAgICBjYXNlIDB4MTM6CisgICAgY2FzZSAweDE0OgorICAgIGNhc2UgMHgx NToKKyAgICBjYXNlIDB4MTg6CisgICAgY2FzZSAweDE5OgorICAgIGNhc2Ug MHgxYToKKyAgICBjYXNlIDB4MWI6CisgICAgY2FzZSAweDFjOgorICAgIGNh c2UgMHgxZDoKKyAgICBjYXNlIDB4MjA6CisgICAgY2FzZSAweDIxOgorICAg IGNhc2UgMHgyMjoKKyAgICBjYXNlIDB4MjM6CisgICAgY2FzZSAweDI0Ogor ICAgIGNhc2UgMHgyNToKKyAgICBjYXNlIDB4Mjg6CisgICAgY2FzZSAweDI5 OgorICAgIGNhc2UgMHgyYToKKyAgICBjYXNlIDB4MmI6CisgICAgY2FzZSAw eDJjOgorICAgIGNhc2UgMHgyZDoKKyAgICBjYXNlIDB4MzA6CisgICAgY2Fz ZSAweDMxOgorICAgIGNhc2UgMHgzMjoKKyAgICBjYXNlIDB4MzM6CisgICAg Y2FzZSAweDM0OgorICAgIGNhc2UgMHgzNToKKyAgICBjYXNlIDB4Mzg6Cisg ICAgY2FzZSAweDM5OgorICAgIGNhc2UgMHgzYToKKyAgICBjYXNlIDB4M2I6 CisgICAgY2FzZSAweDNjOgorICAgIGNhc2UgMHgzZDoKKyAgICAgIGlmICgo KG9wY29kZSA+PiAzKSAmIDcpICE9IE9QX0NNUEwpCisJeworCSAgaWYgKChv cGNvZGUgJiAxKSA9PSAwKQorCSAgICBvdCA9IE9UX0JZVEU7CisJICBlbHNl CisJICAgIG90ID0gZGZsYWcgKyBPVF9XT1JEOworCisJICBzd2l0Y2ggKChv cGNvZGUgPj4gMSkgJiAzKQorCSAgICB7CisJICAgICAgLyogT1AgRXYsIEd2 ICovCisJICAgIGNhc2UgMDoKKwkgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9k cm0gKCkpCisJCXJldHVybiAtMTsKKwkgICAgICBpZiAobW9kICE9IDMpCisJ CXsKKwkJICBpZiAoaTM4Nl9yZWNvcmRfbGVhX21vZHJtICgpKQorCQkgICAg cmV0dXJuIC0xOworCQl9CisJICAgICAgZWxzZQorCQl7CisJCSAgaWYgKG90 ID09IE9UX0JZVEUpCisJCSAgICBybSAmPSAweDM7CisJCSAgaWYgKHJlY29y ZF9hcmNoX2xpc3RfYWRkX3JlZyAocm0pKQorCQkgICAgcmV0dXJuIC0xOwor CQl9CisJICAgICAgYnJlYWs7CisJICAgICAgLyogT1AgR3YsIEV2ICovCisJ ICAgIGNhc2UgMToKKwkgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9kcm0gKCkp CisJCXJldHVybiAtMTsKKwkgICAgICBpZiAob3QgPT0gT1RfQllURSkKKwkJ cmVnICY9IDB4MzsKKwkgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf cmVnIChyZWcpKQorCQlyZXR1cm4gLTE7CisJICAgICAgYnJlYWs7CisJICAg ICAgLyogT1AgQSwgSXYgKi8KKwkgICAgY2FzZSAyOgorCSAgICAgIGlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUFYX1JFR05VTSkpCisJ CXJldHVybiAtMTsKKwkgICAgICBicmVhazsKKwkgICAgfQorCX0KKyAgICAg IGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUZMQUdTX1JF R05VTSkpCisJcmV0dXJuIC0xOworICAgICAgYnJlYWs7CisKKyAgICAgIC8q IEdSUDEgKi8KKyAgICBjYXNlIDB4ODA6CisgICAgY2FzZSAweDgxOgorICAg IGNhc2UgMHg4MjoKKyAgICBjYXNlIDB4ODM6CisgICAgICBpZiAoaTM4Nl9y ZWNvcmRfbW9kcm0gKCkpCisJcmV0dXJuIC0xOworCisgICAgICBpZiAocmVn ICE9IE9QX0NNUEwpCisJeworCSAgaWYgKChvcGNvZGUgJiAxKSA9PSAwKQor CSAgICBvdCA9IE9UX0JZVEU7CisJICBlbHNlCisJICAgIG90ID0gZGZsYWcg KyBPVF9XT1JEOworCisJICBpZiAobW9kICE9IDMpCisJICAgIHsKKwkgICAg ICBpZiAoaTM4Nl9yZWNvcmRfbGVhX21vZHJtICgpKQorCQlyZXR1cm4gLTE7 CisJICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIGlmIChyZWNvcmRf YXJjaF9saXN0X2FkZF9yZWcgKHJtKSkKKwkJcmV0dXJuIC0xOworCSAgICB9 CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4 Nl9FRkxBR1NfUkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsK KworICAgICAgLyogaW52ICovCisgICAgY2FzZSAweDQwOgorICAgIGNhc2Ug MHg0MToKKyAgICBjYXNlIDB4NDI6CisgICAgY2FzZSAweDQzOgorICAgIGNh c2UgMHg0NDoKKyAgICBjYXNlIDB4NDU6CisgICAgY2FzZSAweDQ2OgorICAg IGNhc2UgMHg0NzoKKyAgICAgIC8qIGRlYyAqLworICAgIGNhc2UgMHg0ODoK KyAgICBjYXNlIDB4NDk6CisgICAgY2FzZSAweDRhOgorICAgIGNhc2UgMHg0 YjoKKyAgICBjYXNlIDB4NGM6CisgICAgY2FzZSAweDRkOgorICAgIGNhc2Ug MHg0ZToKKyAgICBjYXNlIDB4NGY6CisgICAgICBpZiAocmVjb3JkX2FyY2hf bGlzdF9hZGRfcmVnIChvcGNvZGUgJiA3KSkKKwlyZXR1cm4gLTE7CisgICAg ICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VGTEFHU19S RUdOVU0pKQorCXJldHVybiAtMTsKKyAgICAgIGJyZWFrOworCisgICAgICAv KiBHUlAzICovCisgICAgY2FzZSAweGY2OgorICAgIGNhc2UgMHhmNzoKKyAg ICAgIGlmICgob3Bjb2RlICYgMSkgPT0gMCkKKwlvdCA9IE9UX0JZVEU7Cisg ICAgICBlbHNlCisJb3QgPSBkZmxhZyArIE9UX1dPUkQ7CisgICAgICBpZiAo aTM4Nl9yZWNvcmRfbW9kcm0gKCkpCisJcmV0dXJuIC0xOworCisgICAgICBz d2l0Y2ggKHJlZykKKwl7CisJICAvKiB0ZXN0ICovCisJY2FzZSAwOgorCSAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FRkxBR1NfUkVH TlVNKSkKKwkgICAgcmV0dXJuIC0xOworCSAgYnJlYWs7CisJICAvKiBub3Qg Ki8KKwljYXNlIDI6CisJICBpZiAobW9kICE9IDMpCisJICAgIHsKKwkgICAg ICBpZiAoaTM4Nl9yZWNvcmRfbGVhX21vZHJtICgpKQorCQlyZXR1cm4gLTE7 CisJICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIGlmIChvdCA9PSBP VF9CWVRFKQorCQlybSAmPSAweDM7CisJICAgICAgaWYgKHJlY29yZF9hcmNo X2xpc3RfYWRkX3JlZyAocm0pKQorCQlyZXR1cm4gLTE7CisJICAgIH0KKwkg IGJyZWFrOworCSAgLyogbmVnICovCisJY2FzZSAzOgorCSAgaWYgKG1vZCAh PSAzKQorCSAgICB7CisJICAgICAgaWYgKGkzODZfcmVjb3JkX2xlYV9tb2Ry bSAoKSkKKwkJcmV0dXJuIC0xOworCSAgICB9CisJICBlbHNlCisJICAgIHsK KwkgICAgICBpZiAob3QgPT0gT1RfQllURSkKKwkJcm0gJj0gMHgzOworCSAg ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKHJtKSkKKwkJcmV0 dXJuIC0xOworCSAgICB9CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf cmVnIChJMzg2X0VGTEFHU19SRUdOVU0pKQorCSAgICByZXR1cm4gLTE7CisJ ICBicmVhazsKKwkgIC8qIG11bCAqLworCWNhc2UgNDoKKwkgIC8qIGltdWwg Ki8KKwljYXNlIDU6CisJICAvKiBkaXYgKi8KKwljYXNlIDY6CisJICAvKiBp ZGl2ICovCisJY2FzZSA3OgorCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRk X3JlZyAoSTM4Nl9FQVhfUkVHTlVNKSkKKwkgICAgcmV0dXJuIC0xOworCSAg aWYgKG90ICE9IE9UX0JZVEUpCisJICAgIHsKKwkgICAgICBpZiAocmVjb3Jk X2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VEWF9SRUdOVU0pKQorCQlyZXR1 cm4gLTE7CisJICAgIH0KKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9y ZWcgKEkzODZfRUZMQUdTX1JFR05VTSkpCisJICAgIHJldHVybiAtMTsKKwkg IGJyZWFrOworCWRlZmF1bHQ6CisJICBpMzg2X3JlY29yZF9wYyAtPSAyOwor CSAgb3Bjb2RlID0gb3Bjb2RlIDw8IDggfCBtb2RybTsKKwkgIGdvdG8gbm9f c3VwcG9ydDsKKwkgIGJyZWFrOworCX0KKyAgICAgIGJyZWFrOworCisgICAg ICAvKiBHUlA0ICovCisgICAgY2FzZSAweGZlOgorICAgICAgLyogR1JQNSAq LworICAgIGNhc2UgMHhmZjoKKyAgICAgIGlmICgob3Bjb2RlICYgMSkgPT0g MCkKKwlvdCA9IE9UX0JZVEU7CisgICAgICBlbHNlCisJb3QgPSBkZmxhZyAr IE9UX1dPUkQ7CisgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9kcm0gKCkpCisJ cmV0dXJuIC0xOworICAgICAgaWYgKHJlZyA+PSAyICYmIG9wY29kZSA9PSAw eGZlKQorCXsKKwkgIGkzODZfcmVjb3JkX3BjIC09IDI7CisJICBvcGNvZGUg PSBvcGNvZGUgPDwgOCB8IG1vZHJtOworCSAgZ290byBub19zdXBwb3J0Owor CX0KKworICAgICAgc3dpdGNoIChyZWcpCisJeworCSAgLyogaW5jICovCisJ Y2FzZSAwOgorCSAgLyogZGVjICovCisJY2FzZSAxOgorCSAgaWYgKG1vZCAh PSAzKQorCSAgICB7CisJICAgICAgaWYgKGkzODZfcmVjb3JkX2xlYV9tb2Ry bSAoKSkKKwkJcmV0dXJuIC0xOworCSAgICB9CisJICBlbHNlCisJICAgIHsK KwkgICAgICBpZiAob3QgPT0gT1RfQllURSkKKwkJcm0gJj0gMHgzOworCSAg ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKHJtKSkKKwkJcmV0 dXJuIC0xOworCSAgICB9CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf cmVnIChJMzg2X0VGTEFHU19SRUdOVU0pKQorCSAgICByZXR1cm4gLTE7CisJ ICBicmVhazsKKwkgIC8qIGNhbGwgKi8KKwljYXNlIDI6CisJICAvKiBwdXNo ICovCisJY2FzZSA2OgorCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3Jl ZyAoSTM4Nl9FU1BfUkVHTlVNKSkKKwkgICAgcmV0dXJuIC0xOworCSAgcmVn Y2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FU1BfUkVH TlVNLAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAgaWYg KHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbQorCSAgICAgICgoQ09SRV9BRERS KSB0bXB1MzIgLSAoMSA8PCAoZGZsYWcgKyAxKSksICgxIDw8IChkZmxhZyAr IDEpKSkpCisJICAgIHJldHVybiAtMTsKKwkgIGJyZWFrOworCSAgLyogbGNh bGwgKi8KKwljYXNlIDM6CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf cmVnIChJMzg2X0VTUF9SRUdOVU0pKQorCSAgICByZXR1cm4gLTE7CisJICBp ZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0NTX1JFR05VTSkp CisJICAgIHJldHVybiAtMTsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNv cmRfcmVnY2FjaGUsIEkzODZfRVNQX1JFR05VTSwKKwkJCSAgICAgKGdkYl9i eXRlICopICYgdG1wdTMyKTsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2Fk ZF9tZW0KKwkgICAgICAoKENPUkVfQUREUikgdG1wdTMyIC0gKDEgPDwgKGRm bGFnICsgMikpLCAoMSA8PCAoZGZsYWcgKyAyKSkpKQorCSAgICByZXR1cm4g LTE7CisJICBicmVhazsKKwkgIC8qIGptcCAqLworCWNhc2UgNDoKKwkgIC8q IGxqbXAgKi8KKwljYXNlIDU6CisJICBicmVhazsKKwlkZWZhdWx0OgorCSAg aTM4Nl9yZWNvcmRfcGMgLT0gMjsKKwkgIG9wY29kZSA9IG9wY29kZSA8PCA4 IHwgbW9kcm07CisJICBnb3RvIG5vX3N1cHBvcnQ7CisJICBicmVhazsKKwl9 CisgICAgICBicmVhazsKKworICAgICAgLyogdGVzdCAqLworICAgIGNhc2Ug MHg4NDoKKyAgICBjYXNlIDB4ODU6CisgICAgY2FzZSAweGE4OgorICAgIGNh c2UgMHhhOToKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcg KEkzODZfRUZMQUdTX1JFR05VTSkpCisJcmV0dXJuIC0xOworICAgICAgYnJl YWs7CisKKyAgICAgIC8qIENXREUvQ0JXICovCisgICAgY2FzZSAweDk4Ogor ICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FQVhf UkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAg LyogQ0RRL0NXRCAqLworICAgIGNhc2UgMHg5OToKKyAgICAgIGlmIChyZWNv cmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUFYX1JFR05VTSkpCisJcmV0 dXJuIC0xOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAo STM4Nl9FRFhfUkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsK KworICAgICAgLyogaW11bCAqLworICAgIGNhc2UgMHgwZmFmOgorICAgIGNh c2UgMHg2OToKKyAgICBjYXNlIDB4NmI6CisgICAgICBvdCA9IGRmbGFnICsg T1RfV09SRDsKKyAgICAgIGlmIChpMzg2X3JlY29yZF9tb2RybSAoKSkKKwly ZXR1cm4gLTE7CisgICAgICBpZiAob3QgPT0gT1RfQllURSkKKwlyZWcgJj0g MHgzOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAocmVn KSkKKwlyZXR1cm4gLTE7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfcmVnIChJMzg2X0VGTEFHU19SRUdOVU0pKQorCXJldHVybiAtMTsKKyAg ICAgIGJyZWFrOworCisgICAgICAvKiB4YWRkICovCisgICAgY2FzZSAweDBm YzA6CisgICAgY2FzZSAweDBmYzE6CisgICAgICBpZiAoKG9wY29kZSAmIDEp ID09IDApCisJb3QgPSBPVF9CWVRFOworICAgICAgZWxzZQorCW90ID0gZGZs YWcgKyBPVF9XT1JEOworICAgICAgaWYgKGkzODZfcmVjb3JkX21vZHJtICgp KQorCXJldHVybiAtMTsKKyAgICAgIGlmIChtb2QgPT0gMykKKwl7CisJICBp ZiAob3QgPT0gT1RfQllURSkKKwkgICAgcmVnICY9IDB4MzsKKwkgIGlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKHJlZykpCisJICAgIHJldHVybiAt MTsKKwkgIGlmIChvdCA9PSBPVF9CWVRFKQorCSAgICBybSAmPSAweDM7CisJ ICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChybSkpCisJICAgIHJl dHVybiAtMTsKKwl9CisgICAgICBlbHNlCisJeworCSAgaWYgKGkzODZfcmVj b3JkX2xlYV9tb2RybSAoKSkKKwkgICAgcmV0dXJuIC0xOworCSAgaWYgKG90 ID09IE9UX0JZVEUpCisJICAgIHJlZyAmPSAweDM7CisJICBpZiAocmVjb3Jk X2FyY2hfbGlzdF9hZGRfcmVnIChyZWcpKQorCSAgICByZXR1cm4gLTE7CisJ fQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9F RkxBR1NfUkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKwor ICAgICAgLyogY21weGNoZyAqLworICAgIGNhc2UgMHgwZmIwOgorICAgIGNh c2UgMHgwZmIxOgorICAgICAgaWYgKChvcGNvZGUgJiAxKSA9PSAwKQorCW90 ID0gT1RfQllURTsKKyAgICAgIGVsc2UKKwlvdCA9IGRmbGFnICsgT1RfV09S RDsKKyAgICAgIGlmIChpMzg2X3JlY29yZF9tb2RybSAoKSkKKwlyZXR1cm4g LTE7CisgICAgICBpZiAobW9kID09IDMpCisJeworCSAgaWYgKHJlY29yZF9h cmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FQVhfUkVHTlVNKSkKKwkgICAgcmV0 dXJuIC0xOworCSAgaWYgKG90ID09IE9UX0JZVEUpCisJICAgIHJlZyAmPSAw eDM7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChyZWcpKQor CSAgICByZXR1cm4gLTE7CisJfQorICAgICAgZWxzZQorCXsKKwkgIGlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUFYX1JFR05VTSkpCisJ ICAgIHJldHVybiAtMTsKKwkgIGlmIChpMzg2X3JlY29yZF9sZWFfbW9kcm0g KCkpCisJICAgIHJldHVybiAtMTsKKwl9CisgICAgICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfcmVnIChJMzg2X0VGTEFHU19SRUdOVU0pKQorCXJldHVy biAtMTsKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBjbXB4Y2hnOGIgKi8K KyAgICBjYXNlIDB4MGZjNzoKKyAgICAgIGlmIChpMzg2X3JlY29yZF9tb2Ry bSAoKSkKKwlyZXR1cm4gLTE7CisgICAgICBpZiAobW9kID09IDMpCisJewor CSAgaTM4Nl9yZWNvcmRfcGMgLT0gMjsKKwkgIG9wY29kZSA9IG9wY29kZSA8 PCA4IHwgbW9kcm07CisJICBnb3RvIG5vX3N1cHBvcnQ7CisJfQorICAgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FQVhfUkVHTlVN KSkKKwlyZXR1cm4gLTE7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfcmVnIChJMzg2X0VEWF9SRUdOVU0pKQorCXJldHVybiAtMTsKKyAgICAg IGlmIChpMzg2X3JlY29yZF9sZWFfbW9kcm0gKCkpCisJcmV0dXJuIC0xOwor ICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FRkxB R1NfUkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAg ICAgLyogcHVzaCAqLworICAgIGNhc2UgMHg1MDoKKyAgICBjYXNlIDB4NTE6 CisgICAgY2FzZSAweDUyOgorICAgIGNhc2UgMHg1MzoKKyAgICBjYXNlIDB4 NTQ6CisgICAgY2FzZSAweDU1OgorICAgIGNhc2UgMHg1NjoKKyAgICBjYXNl IDB4NTc6CisgICAgY2FzZSAweDY4OgorICAgIGNhc2UgMHg2YToKKyAgICAg IC8qIHB1c2ggZXMgKi8KKyAgICBjYXNlIDB4MDY6CisgICAgICAvKiBwdXNo IGNzICovCisgICAgY2FzZSAweDBlOgorICAgICAgLyogcHVzaCBzcyAqLwor ICAgIGNhc2UgMHgxNjoKKyAgICAgIC8qIHB1c2ggZHMgKi8KKyAgICBjYXNl IDB4MWU6CisgICAgICAvKiBwdXNoIGZzICovCisgICAgY2FzZSAweDBmYTA6 CisgICAgICAvKiBwdXNoIGdzICovCisgICAgY2FzZSAweDBmYTg6CisgICAg ICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VTUF9SRUdO VU0pKQorCXJldHVybiAtMTsKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChy ZWNvcmRfcmVnY2FjaGUsIEkzODZfRVNQX1JFR05VTSwKKwkJCSAoZ2RiX2J5 dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX21lbQorCSAgKChDT1JFX0FERFIpIHRtcHUzMiAtICgxIDw8IChkZmxh ZyArIDEpKSwgKDEgPDwgKGRmbGFnICsgMSkpKSkKKwlyZXR1cm4gLTE7Cisg ICAgICBicmVhazsKKworICAgICAgLyogcG9wICovCisgICAgY2FzZSAweDU4 OgorICAgIGNhc2UgMHg1OToKKyAgICBjYXNlIDB4NWE6CisgICAgY2FzZSAw eDViOgorICAgIGNhc2UgMHg1YzoKKyAgICBjYXNlIDB4NWQ6CisgICAgY2Fz ZSAweDVlOgorICAgIGNhc2UgMHg1ZjoKKyAgICAgIG90ID0gZGZsYWcgKyBP VF9XT1JEOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAo STM4Nl9FU1BfUkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICBpZiAob3Qg PT0gT1RfQllURSkKKwlvcGNvZGUgJj0gMHgzOworICAgICAgaWYgKHJlY29y ZF9hcmNoX2xpc3RfYWRkX3JlZyAob3Bjb2RlICYgMHg3KSkKKwlyZXR1cm4g LTE7CisgICAgICBicmVhazsKKworICAgICAgLyogcHVzaGEgKi8KKyAgICBj YXNlIDB4NjA6CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVn IChJMzg2X0VTUF9SRUdOVU0pKQorCXJldHVybiAtMTsKKyAgICAgIHJlZ2Nh Y2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRVNQX1JFR05V TSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJl Y29yZF9hcmNoX2xpc3RfYWRkX21lbQorCSAgKChDT1JFX0FERFIpIHRtcHUz MiAtICgxIDw8IChkZmxhZyArIDQpKSwgKDEgPDwgKGRmbGFnICsgNCkpKSkK KwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAgLyogcG9wYSAq LworICAgIGNhc2UgMHg2MToKKyAgICAgIGZvciAodG1wdTggPSBJMzg2X0VB WF9SRUdOVU07IHRtcHU4IDw9IEkzODZfRURJX1JFR05VTTsgdG1wdTgrKykK Kwl7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnICh0bXB1OCkp CisJICAgIHJldHVybiAtMTsKKwl9CisgICAgICBicmVhazsKKworICAgICAg LyogcG9wICovCisgICAgY2FzZSAweDhmOgorICAgICAgb3QgPSBkZmxhZyAr IE9UX1dPUkQ7CisgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9kcm0gKCkpCisJ cmV0dXJuIC0xOworICAgICAgaWYgKG1vZCA9PSAzKQorCXsKKwkgIGlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKHJtKSkKKwkgICAgcmV0dXJuIC0x OworCX0KKyAgICAgIGVsc2UKKwl7CisJICBpZiAoaTM4Nl9yZWNvcmRfbGVh X21vZHJtICgpKQorCSAgICByZXR1cm4gLTE7CisJfQorICAgICAgaWYgKHJl Y29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FU1BfUkVHTlVNKSkKKwly ZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAgLyogZW50ZXIgKi8K KyAgICBjYXNlIDB4Yzg6CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfcmVnIChJMzg2X0VTUF9SRUdOVU0pKQorCXJldHVybiAtMTsKKyAgICAg IGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUJQX1JFR05V TSkpCisJcmV0dXJuIC0xOworICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJl Y29yZF9yZWdjYWNoZSwgSTM4Nl9FU1BfUkVHTlVNLAorCQkJIChnZGJfYnl0 ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfbWVtCisJICAoKENPUkVfQUREUikgdG1wdTMyIC0gKDEgPDwgKGRmbGFn ICsgMSkpLCAoMSA8PCAoZGZsYWcgKyAxKSkpKQorCXJldHVybiAtMTsKKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBsZWF2ZSAqLworICAgIGNhc2UgMHhj OToKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZf RVNQX1JFR05VTSkpCisJcmV0dXJuIC0xOworICAgICAgaWYgKHJlY29yZF9h cmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FQlBfUkVHTlVNKSkKKwlyZXR1cm4g LTE7CisgICAgICBicmVhazsKKworICAgICAgLyogcG9wIGVzICovCisgICAg Y2FzZSAweDA3OgorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3Jl ZyAoSTM4Nl9FU1BfUkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VTX1JFR05VTSkpCisJ cmV0dXJuIC0xOworICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHBvcCBzcyAq LworICAgIGNhc2UgMHgxNzoKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0 X2FkZF9yZWcgKEkzODZfRVNQX1JFR05VTSkpCisJcmV0dXJuIC0xOworICAg ICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9TU19SRUdO VU0pKQorCXJldHVybiAtMTsKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBw b3AgZHMgKi8KKyAgICBjYXNlIDB4MWY6CisgICAgICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfcmVnIChJMzg2X0VTUF9SRUdOVU0pKQorCXJldHVybiAt MTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZf RFNfUkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAg ICAgLyogcG9wIGZzICovCisgICAgY2FzZSAweDBmYTE6CisgICAgICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VTUF9SRUdOVU0pKQor CXJldHVybiAtMTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9y ZWcgKEkzODZfRlNfUkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVh azsKKworICAgICAgLyogcG9wIGdzICovCisgICAgY2FzZSAweDBmYTk6Cisg ICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VTUF9S RUdOVU0pKQorCXJldHVybiAtMTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9s aXN0X2FkZF9yZWcgKEkzODZfR1NfUkVHTlVNKSkKKwlyZXR1cm4gLTE7Cisg ICAgICBicmVhazsKKworICAgICAgLyogbW92ICovCisgICAgY2FzZSAweDg4 OgorICAgIGNhc2UgMHg4OToKKyAgICBjYXNlIDB4YzY6CisgICAgY2FzZSAw eGM3OgorICAgICAgaWYgKChvcGNvZGUgJiAxKSA9PSAwKQorCW90ID0gT1Rf QllURTsKKyAgICAgIGVsc2UKKwlvdCA9IGRmbGFnICsgT1RfV09SRDsKKwor ICAgICAgaWYgKGkzODZfcmVjb3JkX21vZHJtICgpKQorCXJldHVybiAtMTsK KworICAgICAgaWYgKG1vZCAhPSAzKQorCXsKKwkgIGlmIChpMzg2X3JlY29y ZF9sZWFfbW9kcm0gKCkpCisJICAgIHJldHVybiAtMTsKKwl9CisgICAgICBl bHNlCisJeworCSAgaWYgKG90ID09IE9UX0JZVEUpCisJICAgIHJtICY9IDB4 MzsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKHJtKSkKKwkg ICAgcmV0dXJuIC0xOworCX0KKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0 X2FkZF9yZWcgKEkzODZfRUZMQUdTX1JFR05VTSkpCisJcmV0dXJuIC0xOwor ICAgICAgYnJlYWs7CisgICAgICAvKiBtb3YgKi8KKyAgICBjYXNlIDB4OGE6 CisgICAgY2FzZSAweDhiOgorICAgICAgaWYgKChvcGNvZGUgJiAxKSA9PSAw KQorCW90ID0gT1RfQllURTsKKyAgICAgIGVsc2UKKwlvdCA9IGRmbGFnICsg T1RfV09SRDsKKworICAgICAgaWYgKGkzODZfcmVjb3JkX21vZHJtICgpKQor CXJldHVybiAtMTsKKworICAgICAgaWYgKG90ID09IE9UX0JZVEUpCisJcmVn ICY9IDB4MzsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcg KHJlZykpCisJcmV0dXJuIC0xOworCisgICAgICBpZiAocmVjb3JkX2FyY2hf bGlzdF9hZGRfcmVnIChJMzg2X0VGTEFHU19SRUdOVU0pKQorCXJldHVybiAt MTsKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBtb3Ygc2VnICovCisgICAg Y2FzZSAweDhlOgorICAgICAgaWYgKGkzODZfcmVjb3JkX21vZHJtICgpKQor CXJldHVybiAtMTsKKworICAgICAgc3dpdGNoIChyZWcpCisJeworCWNhc2Ug MDoKKwkgIHRtcHU4ID0gSTM4Nl9FU19SRUdOVU07CisJICBicmVhazsKKwlj YXNlIDI6CisJICB0bXB1OCA9IEkzODZfU1NfUkVHTlVNOworCSAgYnJlYWs7 CisJY2FzZSAzOgorCSAgdG1wdTggPSBJMzg2X0RTX1JFR05VTTsKKwkgIGJy ZWFrOworCWNhc2UgNDoKKwkgIHRtcHU4ID0gSTM4Nl9GU19SRUdOVU07CisJ ICBicmVhazsKKwljYXNlIDU6CisJICB0bXB1OCA9IEkzODZfR1NfUkVHTlVN OworCSAgYnJlYWs7CisJZGVmYXVsdDoKKwkgIGkzODZfcmVjb3JkX3BjIC09 IDI7CisJICBvcGNvZGUgPSBvcGNvZGUgPDwgOCB8IG1vZHJtOworCSAgZ290 byBub19zdXBwb3J0OworCSAgYnJlYWs7CisJfQorICAgICAgaWYgKHJlY29y ZF9hcmNoX2xpc3RfYWRkX3JlZyAodG1wdTgpKQorCXJldHVybiAtMTsKKwor ICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FRkxB R1NfUkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAg ICAgLyogbW92IHNlZyAqLworICAgIGNhc2UgMHg4YzoKKyAgICAgIGlmIChp Mzg2X3JlY29yZF9tb2RybSAoKSkKKwlyZXR1cm4gLTE7CisgICAgICBpZiAo cmVnID4gNSkKKwl7CisJICBpMzg2X3JlY29yZF9wYyAtPSAyOworCSAgb3Bj b2RlID0gb3Bjb2RlIDw8IDggfCBtb2RybTsKKwkgIGdvdG8gbm9fc3VwcG9y dDsKKwl9CisKKyAgICAgIGlmIChtb2QgPT0gMykKKwl7CisJICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfcmVnIChybSkpCisJICAgIHJldHVybiAtMTsK Kwl9CisgICAgICBlbHNlCisJeworCSAgb3QgPSBPVF9XT1JEOworCSAgaWYg KGkzODZfcmVjb3JkX2xlYV9tb2RybSAoKSkKKwkgICAgcmV0dXJuIC0xOwor CX0KKworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4 Nl9FRkxBR1NfUkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsK KworICAgICAgLyogbW92emJTICovCisgICAgY2FzZSAweDBmYjY6CisgICAg ICAvKiBtb3Z6d1MgKi8KKyAgICBjYXNlIDB4MGZiNzoKKyAgICAgIC8qIG1v dnNiUyAqLworICAgIGNhc2UgMHgwZmJlOgorICAgICAgLyogbW92c3dTICov CisgICAgY2FzZSAweDBmYmY6CisgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9k cm0gKCkpCisJcmV0dXJuIC0xOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xp c3RfYWRkX3JlZyAocmVnKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsK KworICAgICAgLyogbGVhICovCisgICAgY2FzZSAweDhkOgorICAgICAgaWYg KGkzODZfcmVjb3JkX21vZHJtICgpKQorCXJldHVybiAtMTsKKyAgICAgIGlm IChtb2QgPT0gMykKKwl7CisJICBpMzg2X3JlY29yZF9wYyAtPSAyOworCSAg b3Bjb2RlID0gb3Bjb2RlIDw8IDggfCBtb2RybTsKKwkgIGdvdG8gbm9fc3Vw cG9ydDsKKwl9CisKKyAgICAgIG90ID0gZGZsYWc7CisgICAgICBpZiAob3Qg PT0gT1RfQllURSkKKwlyZWcgJj0gMHgzOworICAgICAgaWYgKHJlY29yZF9h cmNoX2xpc3RfYWRkX3JlZyAocmVnKSkKKwlyZXR1cm4gLTE7CisgICAgICBi cmVhazsKKworICAgICAgLyogbW92IEVBWCAqLworICAgIGNhc2UgMHhhMDoK KyAgICBjYXNlIDB4YTE6CisgICAgICAvKiB4bGF0ICovCisgICAgY2FzZSAw eGQ3OgorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4 Nl9FQVhfUkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKwor ICAgICAgLyogbW92IEVBWCAqLworICAgIGNhc2UgMHhhMjoKKyAgICBjYXNl IDB4YTM6CisgICAgICB7CisJdWludDMyX3QgYWRkcjsKKworCWlmIChvdmVy cmlkZSkKKwkgIHsKKwkgICAgaWYgKHJlY29yZF9kZWJ1ZykKKwkgICAgICBw cmludGZfdW5maWx0ZXJlZCAoXygiUHJvY2VzcyByZWNvcmQgaWdub3JlcyB0 aGUgbWVtb3J5IGNoYW5nZSAiCisJCQkJICAgIm9mIGluc3RydWN0aW9uIGF0 IGFkZHJlc3MgMHglcyBiZWNhdXNlICIKKwkJCQkgICAiaXQgY2FuJ3QgZ2V0 IHRoZSB2YWx1ZSBvZiB0aGUgc2VnbWVudCAiCisJCQkJICAgInJlZ2lzdGVy LlxuIiksCisJCQkJIHBhZGRyX256IChpMzg2X3JlY29yZF9wYykpOworCSAg fQorCWVsc2UKKwkgIHsKKwkgICAgaWYgKChvcGNvZGUgJiAxKSA9PSAwKQor CSAgICAgIG90ID0gT1RfQllURTsKKwkgICAgZWxzZQorCSAgICAgIG90ID0g ZGZsYWcgKyBPVF9XT1JEOworCSAgICBpZiAoYWZsYWcpCisJICAgICAgewor CQlpZiAodGFyZ2V0X3JlYWRfbWVtb3J5CisJCSAgICAoaTM4Nl9yZWNvcmRf cGMsIChnZGJfYnl0ZSAqKSAmIGFkZHIsIDQpKQorCQkgIHsKKwkJICAgIGlm IChyZWNvcmRfZGVidWcpCisJCSAgICAgIHByaW50Zl91bmZpbHRlcmVkIChf KCJQcm9jZXNzIHJlY29yZDogZXJyb3IgcmVhZGluZyAiCisJCQkJCSAgICJt ZW1vcnkgYXQgYWRkciAweCVzIGxlbiA9IDQuXG4iKSwKKwkJCQkJIHBhZGRy X256IChpMzg2X3JlY29yZF9wYykpOworCQkgICAgcmV0dXJuIC0xOworCQkg IH0KKwkJaTM4Nl9yZWNvcmRfcGMgKz0gNDsKKwkgICAgICB9CisJICAgIGVs c2UKKwkgICAgICB7CisJCWlmICh0YXJnZXRfcmVhZF9tZW1vcnkKKwkJICAg IChpMzg2X3JlY29yZF9wYywgKGdkYl9ieXRlICopICYgdG1wdTE2LCA0KSkK KwkJICB7CisJCSAgICBpZiAocmVjb3JkX2RlYnVnKQorCQkgICAgICBwcmlu dGZfdW5maWx0ZXJlZCAoXygiUHJvY2VzcyByZWNvcmQ6IGVycm9yIHJlYWRp bmcgIgorCQkJCQkgICAibWVtb3J5IGF0IGFkZHIgMHglcyBsZW4gPSA0Llxu IiksCisJCQkJCSBwYWRkcl9ueiAoaTM4Nl9yZWNvcmRfcGMpKTsKKwkJICAg IHJldHVybiAtMTsKKwkJICB9CisJCWkzODZfcmVjb3JkX3BjICs9IDI7CisJ CWFkZHIgPSB0bXB1MTY7CisJICAgICAgfQorCSAgICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfbWVtIChhZGRyLCAxIDw8IG90KSkKKwkgICAgICByZXR1 cm4gLTE7CisJICB9CisgICAgICB9CisgICAgICBicmVhazsKKworICAgICAg LyogbW92IFIsIEliICovCisgICAgY2FzZSAweGIwOgorICAgIGNhc2UgMHhi MToKKyAgICBjYXNlIDB4YjI6CisgICAgY2FzZSAweGIzOgorICAgIGNhc2Ug MHhiNDoKKyAgICBjYXNlIDB4YjU6CisgICAgY2FzZSAweGI2OgorICAgIGNh c2UgMHhiNzoKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcg KChvcGNvZGUgJiAweDcpICYgMHgzKSkKKwlyZXR1cm4gLTE7CisgICAgICBi cmVhazsKKworICAgICAgLyogbW92IFIsIEl2ICovCisgICAgY2FzZSAweGI4 OgorICAgIGNhc2UgMHhiOToKKyAgICBjYXNlIDB4YmE6CisgICAgY2FzZSAw eGJiOgorICAgIGNhc2UgMHhiYzoKKyAgICBjYXNlIDB4YmQ6CisgICAgY2Fz ZSAweGJlOgorICAgIGNhc2UgMHhiZjoKKyAgICAgIGlmIChyZWNvcmRfYXJj aF9saXN0X2FkZF9yZWcgKG9wY29kZSAmIDB4NykpCisJcmV0dXJuIC0xOwor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHhjaGcgUiwgRUFYICovCisgICAg Y2FzZSAweDkxOgorICAgIGNhc2UgMHg5MjoKKyAgICBjYXNlIDB4OTM6Cisg ICAgY2FzZSAweDk0OgorICAgIGNhc2UgMHg5NToKKyAgICBjYXNlIDB4OTY6 CisgICAgY2FzZSAweDk3OgorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX3JlZyAoSTM4Nl9FQVhfUkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAg ICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChvcGNvZGUgJiAweDcp KQorCXJldHVybiAtMTsKKyAgICAgIGJyZWFrOworCisgICAgICAvKiB4Y2hn IEV2LCBHdiAqLworICAgIGNhc2UgMHg4NjoKKyAgICBjYXNlIDB4ODc6Cisg ICAgICBpZiAoKG9wY29kZSAmIDEpID09IDApCisJb3QgPSBPVF9CWVRFOwor ICAgICAgZWxzZQorCW90ID0gZGZsYWcgKyBPVF9XT1JEOworCisgICAgICBp ZiAoaTM4Nl9yZWNvcmRfbW9kcm0gKCkpCisJcmV0dXJuIC0xOworCisgICAg ICBpZiAobW9kID09IDMpCisJeworCSAgaWYgKG90ID09IE9UX0JZVEUpCisJ ICAgIHJtICY9IDB4MzsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9y ZWcgKHJtKSkKKwkgICAgcmV0dXJuIC0xOworCX0KKyAgICAgIGVsc2UKKwl7 CisJICBpZiAoaTM4Nl9yZWNvcmRfbGVhX21vZHJtICgpKQorCSAgICByZXR1 cm4gLTE7CisJfQorCisgICAgICBpZiAob3QgPT0gT1RfQllURSkKKwlyZWcg Jj0gMHgzOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAo cmVnKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAgLyog bGVzIEd2ICovCisgICAgY2FzZSAweGM0OgorICAgICAgLyogbGRzIEd2ICov CisgICAgY2FzZSAweGM1OgorICAgICAgLyogbHNzIEd2ICovCisgICAgY2Fz ZSAweDBmYjI6CisgICAgICAvKiBsZnMgR3YgKi8KKyAgICBjYXNlIDB4MGZi NDoKKyAgICAgIC8qIGxncyBHdiAqLworICAgIGNhc2UgMHgwZmI1OgorICAg ICAgaWYgKGkzODZfcmVjb3JkX21vZHJtICgpKQorCXJldHVybiAtMTsKKyAg ICAgIGlmIChtb2QgPT0gMykKKwl7CisJICBpZiAob3Bjb2RlID4gMHhmZikK KwkgICAgaTM4Nl9yZWNvcmRfcGMgLT0gMzsKKwkgIGVsc2UKKwkgICAgaTM4 Nl9yZWNvcmRfcGMgLT0gMjsKKwkgIG9wY29kZSA9IG9wY29kZSA8PCA4IHwg bW9kcm07CisJICBnb3RvIG5vX3N1cHBvcnQ7CisJfQorCisgICAgICBzd2l0 Y2ggKG9wY29kZSkKKwl7CisJICAvKiBsZXMgR3YgKi8KKwljYXNlIDB4YzQ6 CisJICB0bXB1OCA9IEkzODZfRVNfUkVHTlVNOworCSAgYnJlYWs7CisJICAv KiBsZHMgR3YgKi8KKwljYXNlIDB4YzU6CisJICB0bXB1OCA9IEkzODZfRFNf UkVHTlVNOworCSAgYnJlYWs7CisJICAvKiBsc3MgR3YgKi8KKwljYXNlIDB4 MGZiMjoKKwkgIHRtcHU4ID0gSTM4Nl9TU19SRUdOVU07CisJICBicmVhazsK KwkgIC8qIGxmcyBHdiAqLworCWNhc2UgMHgwZmI0OgorCSAgdG1wdTggPSBJ Mzg2X0ZTX1JFR05VTTsKKwkgIGJyZWFrOworCSAgLyogbGdzIEd2ICovCisJ Y2FzZSAweDBmYjU6CisJICB0bXB1OCA9IEkzODZfR1NfUkVHTlVNOworCSAg YnJlYWs7CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3Jl ZyAodG1wdTgpKQorCXJldHVybiAtMTsKKworICAgICAgaWYgKHJlY29yZF9h cmNoX2xpc3RfYWRkX3JlZyAocmVnKSkKKwlyZXR1cm4gLTE7CisgICAgICBi cmVhazsKKworICAgICAgLyogc2hpZnRzICovCisgICAgY2FzZSAweGMwOgor ICAgIGNhc2UgMHhjMToKKyAgICBjYXNlIDB4ZDA6CisgICAgY2FzZSAweGQx OgorICAgIGNhc2UgMHhkMjoKKyAgICBjYXNlIDB4ZDM6CisgICAgICBpZiAo KG9wY29kZSAmIDEpID09IDApCisJb3QgPSBPVF9CWVRFOworICAgICAgZWxz ZQorCW90ID0gZGZsYWcgKyBPVF9XT1JEOworCisgICAgICBpZiAoaTM4Nl9y ZWNvcmRfbW9kcm0gKCkpCisJcmV0dXJuIC0xOworCisgICAgICBpZiAobW9k ICE9IDMgJiYgKG9wY29kZSA9PSAweGQyIHx8IG9wY29kZSA9PSAweGQzKSkK Kwl7CisJICBpZiAoaTM4Nl9yZWNvcmRfbGVhX21vZHJtICgpKQorCSAgICBy ZXR1cm4gLTE7CisJfQorICAgICAgZWxzZQorCXsKKwkgIGlmIChvdCA9PSBP VF9CWVRFKQorCSAgICBybSAmPSAweDM7CisJICBpZiAocmVjb3JkX2FyY2hf bGlzdF9hZGRfcmVnIChybSkpCisJICAgIHJldHVybiAtMTsKKwl9CisKKyAg ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUZMQUdT X1JFR05VTSkpCisJcmV0dXJuIC0xOworICAgICAgYnJlYWs7CisKKyAgICBj YXNlIDB4MGZhNDoKKyAgICBjYXNlIDB4MGZhNToKKyAgICBjYXNlIDB4MGZh YzoKKyAgICBjYXNlIDB4MGZhZDoKKyAgICAgIGlmIChpMzg2X3JlY29yZF9t b2RybSAoKSkKKwlyZXR1cm4gLTE7CisgICAgICBpZiAobW9kID09IDMpCisJ eworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAocm0pKQorCSAg ICByZXR1cm4gLTE7CisJfQorICAgICAgZWxzZQorCXsKKwkgIGlmIChpMzg2 X3JlY29yZF9sZWFfbW9kcm0gKCkpCisJICAgIHJldHVybiAtMTsKKwl9Cisg ICAgICBicmVhazsKKworICAgICAgLyogZmxvYXRzICovCisgICAgICAvKiBJ dCBqdXN0IHJlY29yZCB0aGUgbWVtb3J5IGNoYW5nZSBvZiBpbnN0cmN1dGlv bi4gKi8KKyAgICBjYXNlIDB4ZDg6CisgICAgY2FzZSAweGQ5OgorICAgIGNh c2UgMHhkYToKKyAgICBjYXNlIDB4ZGI6CisgICAgY2FzZSAweGRjOgorICAg IGNhc2UgMHhkZDoKKyAgICBjYXNlIDB4ZGU6CisgICAgY2FzZSAweGRmOgor ICAgICAgaWYgKGkzODZfcmVjb3JkX21vZHJtICgpKQorCXJldHVybiAtMTsK KyAgICAgIHJlZyB8PSAoKG9wY29kZSAmIDcpIDw8IDMpOworICAgICAgaWYg KG1vZCAhPSAzKQorCXsKKwkgIC8qIG1lbW9yeSAqLworCSAgdWludDMyX3Qg YWRkcjsKKworCSAgaWYgKGkzODZfcmVjb3JkX2xlYV9tb2RybV9hZGRyICgm YWRkcikpCisJICAgIHJldHVybiAtMTsKKwkgIHN3aXRjaCAocmVnKQorCSAg ICB7CisJICAgIGNhc2UgMHgwMDoKKwkgICAgY2FzZSAweDAxOgorCSAgICBj YXNlIDB4MDI6CisJICAgIGNhc2UgMHgwMzoKKwkgICAgY2FzZSAweDA0Ogor CSAgICBjYXNlIDB4MDU6CisJICAgIGNhc2UgMHgwNjoKKwkgICAgY2FzZSAw eDA3OgorCSAgICBjYXNlIDB4MTA6CisJICAgIGNhc2UgMHgxMToKKwkgICAg Y2FzZSAweDEyOgorCSAgICBjYXNlIDB4MTM6CisJICAgIGNhc2UgMHgxNDoK KwkgICAgY2FzZSAweDE1OgorCSAgICBjYXNlIDB4MTY6CisJICAgIGNhc2Ug MHgxNzoKKwkgICAgY2FzZSAweDIwOgorCSAgICBjYXNlIDB4MjE6CisJICAg IGNhc2UgMHgyMjoKKwkgICAgY2FzZSAweDIzOgorCSAgICBjYXNlIDB4MjQ6 CisJICAgIGNhc2UgMHgyNToKKwkgICAgY2FzZSAweDI2OgorCSAgICBjYXNl IDB4Mjc6CisJICAgIGNhc2UgMHgzMDoKKwkgICAgY2FzZSAweDMxOgorCSAg ICBjYXNlIDB4MzI6CisJICAgIGNhc2UgMHgzMzoKKwkgICAgY2FzZSAweDM0 OgorCSAgICBjYXNlIDB4MzU6CisJICAgIGNhc2UgMHgzNjoKKwkgICAgY2Fz ZSAweDM3OgorCSAgICAgIGJyZWFrOworCSAgICBjYXNlIDB4MDg6CisJICAg IGNhc2UgMHgwYToKKwkgICAgY2FzZSAweDBiOgorCSAgICBjYXNlIDB4MTg6 CisJICAgIGNhc2UgMHgxOToKKwkgICAgY2FzZSAweDFhOgorCSAgICBjYXNl IDB4MWI6CisJICAgIGNhc2UgMHgyODoKKwkgICAgY2FzZSAweDI5OgorCSAg ICBjYXNlIDB4MmE6CisJICAgIGNhc2UgMHgyYjoKKwkgICAgY2FzZSAweDM4 OgorCSAgICBjYXNlIDB4Mzk6CisJICAgIGNhc2UgMHgzYToKKwkgICAgY2Fz ZSAweDNiOgorCSAgICAgIHN3aXRjaCAocmVnICYgNykKKwkJeworCQljYXNl IDA6CisJCSAgYnJlYWs7CisJCWNhc2UgMToKKwkJICBzd2l0Y2ggKHJlZyA+ PiA0KQorCQkgICAgeworCQkgICAgY2FzZSAwOgorCQkgICAgICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfbWVtIChhZGRyLCA0KSkKKwkJCXJldHVybiAt MTsKKwkJICAgICAgYnJlYWs7CisJCSAgICBjYXNlIDI6CisJCSAgICAgIGlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKGFkZHIsIDgpKQorCQkJcmV0 dXJuIC0xOworCQkgICAgICBicmVhazsKKwkJICAgIGNhc2UgMzoKKwkJICAg IGRlZmF1bHQ6CisJCSAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9t ZW0gKGFkZHIsIDIpKQorCQkJcmV0dXJuIC0xOworCQkgICAgICBicmVhazsK KwkJICAgIH0KKwkJICBicmVhazsKKwkJZGVmYXVsdDoKKwkJICBzd2l0Y2gg KHJlZyA+PiA0KQorCQkgICAgeworCQkgICAgY2FzZSAwOgorCQkgICAgY2Fz ZSAxOgorCQkgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtIChh ZGRyLCA0KSkKKwkJCXJldHVybiAtMTsKKwkJICAgICAgYnJlYWs7CisJCSAg ICBjYXNlIDI6CisJCSAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9t ZW0gKGFkZHIsIDgpKQorCQkJcmV0dXJuIC0xOworCQkgICAgICBicmVhazsK KwkJICAgIGNhc2UgMzoKKwkJICAgIGRlZmF1bHQ6CisJCSAgICAgIGlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKGFkZHIsIDIpKQorCQkJcmV0dXJu IC0xOworCQkgICAgICBicmVhazsKKwkJICAgIH0KKwkJICBicmVhazsKKwkJ fQorCSAgICAgIGJyZWFrOworCSAgICBjYXNlIDB4MGM6CisJICAgIGNhc2Ug MHgwZDoKKwkgICAgY2FzZSAweDFkOgorCSAgICBjYXNlIDB4MmM6CisJICAg IGNhc2UgMHgzYzoKKwkgICAgY2FzZSAweDNkOgorCSAgICAgIGJyZWFrOwor CSAgICBjYXNlIDB4MGU6CisJICAgICAgaWYgKGRmbGFnKQorCQl7CisJCSAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAoYWRkciwgMjgpKQorCQkg ICAgcmV0dXJuIC0xOworCQl9CisJICAgICAgZWxzZQorCQl7CisJCSAgaWYg KHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAoYWRkciwgMTQpKQorCQkgICAg cmV0dXJuIC0xOworCQl9CisJICAgICAgYnJlYWs7CisJICAgIGNhc2UgMHgw ZjoKKwkgICAgY2FzZSAweDJmOgorCSAgICAgIGlmIChyZWNvcmRfYXJjaF9s aXN0X2FkZF9tZW0gKGFkZHIsIDIpKQorCQlyZXR1cm4gLTE7CisJICAgICAg YnJlYWs7CisJICAgIGNhc2UgMHgxZjoKKwkgICAgY2FzZSAweDNlOgorCSAg ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKGFkZHIsIDEwKSkK KwkJcmV0dXJuIC0xOworCSAgICAgIGJyZWFrOworCSAgICBjYXNlIDB4MmU6 CisJICAgICAgaWYgKGRmbGFnKQorCQl7CisJCSAgaWYgKHJlY29yZF9hcmNo X2xpc3RfYWRkX21lbSAoYWRkciwgMjgpKQorCQkgICAgcmV0dXJuIC0xOwor CQkgIGFkZHIgKz0gMjg7CisJCX0KKwkgICAgICBlbHNlCisJCXsKKwkJICBp ZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtIChhZGRyLCAxNCkpCisJCSAg ICByZXR1cm4gLTE7CisJCSAgYWRkciArPSAxNDsKKwkJfQorCSAgICAgIGlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKGFkZHIsIDgwKSkKKwkJcmV0 dXJuIC0xOworCSAgICAgIGJyZWFrOworCSAgICBjYXNlIDB4M2Y6CisJICAg ICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAoYWRkciwgOCkpCisJ CXJldHVybiAtMTsKKwkgICAgICBicmVhazsKKwkgICAgZGVmYXVsdDoKKwkg ICAgICBpMzg2X3JlY29yZF9wYyAtPSAyOworCSAgICAgIG9wY29kZSA9IG9w Y29kZSA8PCA4IHwgbW9kcm07CisJICAgICAgZ290byBub19zdXBwb3J0Owor CSAgICAgIGJyZWFrOworCSAgICB9CisJfQorICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIHN0cmluZyBvcHMgKi8KKyAgICAgIC8qIG1vdnNTICovCisgICAg Y2FzZSAweGE0OgorICAgIGNhc2UgMHhhNToKKyAgICAgIC8qIHN0b3NTICov CisgICAgY2FzZSAweGFhOgorICAgIGNhc2UgMHhhYjoKKyAgICAgIC8qIGlu c1MgKi8KKyAgICBjYXNlIDB4NmM6CisgICAgY2FzZSAweDZkOgorICAgICAg eworCXVpbnQzMl90IGFkZHI7CisKKwlpZiAoKG9wY29kZSAmIDEpID09IDAp CisJICBvdCA9IE9UX0JZVEU7CisJZWxzZQorCSAgb3QgPSBkZmxhZyArIE9U X1dPUkQ7CisJaWYgKG9wY29kZSA9PSAweGE0IHx8IG9wY29kZSA9PSAweGE1 KQorCSAgeworCSAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJ Mzg2X0VTSV9SRUdOVU0pKQorCSAgICAgIHJldHVybiAtMTsKKwkgIH0KKwlp ZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VESV9SRUdOVU0p KQorCSAgcmV0dXJuIC0xOworCisJcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29y ZF9yZWdjYWNoZSwgSTM4Nl9FRElfUkVHTlVNLAorCQkJICAgKGdkYl9ieXRl ICopICYgYWRkcik7CisJaWYgKCFhZmxhZykKKwkgIHsKKwkgICAgYWRkciAm PSAweGZmZmY7CisJICAgIC8qIGFkZHIgKz0gKCh1aW50MzJfdClyZWFkX3Jl Z2lzdGVyIChJMzg2X0VTX1JFR05VTSkpIDw8IDQ7ICovCisJICAgIGlmIChy ZWNvcmRfZGVidWcpCisJICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIlBy b2Nlc3MgcmVjb3JkIGlnbm9yZXMgdGhlIG1lbW9yeSBjaGFuZ2UgIgorCQkJ CSAgICJvZiBpbnN0cnVjdGlvbiBhdCBhZGRyZXNzIDB4JXMgYmVjYXVzZSAi CisJCQkJICAgIml0IGNhbid0IGdldCB0aGUgdmFsdWUgb2YgdGhlIHNlZ21l bnQgIgorCQkJCSAgICJyZWdpc3Rlci5cbiIpLAorCQkJCSBwYWRkcl9ueiAo aTM4Nl9yZWNvcmRfcGMpKTsKKwkgIH0KKworCWlmIChwcmVmaXhlcyAmIChQ UkVGSVhfUkVQWiB8IFBSRUZJWF9SRVBOWikpCisJICB7CisJICAgIHVpbnQz Ml90IGNvdW50OworCisJICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRf cmVnY2FjaGUsIEkzODZfRUNYX1JFR05VTSwKKwkJCSAgICAgICAoZ2RiX2J5 dGUgKikgJiBjb3VudCk7CisJICAgIGlmICghYWZsYWcpCisJICAgICAgY291 bnQgJj0gMHhmZmZmOworCisJICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNv cmRfcmVnY2FjaGUsIEkzODZfRUZMQUdTX1JFR05VTSwKKwkJCSAgICAgICAo Z2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAgICBpZiAoKHRtcHUzMiA+PiAx MCkgJiAweDEpCisJICAgICAgYWRkciAtPSAoY291bnQgLSAxKSAqICgxIDw8 IG90KTsKKworCSAgICBpZiAoYWZsYWcpCisJICAgICAgeworCQlpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfbWVtIChhZGRyLCBjb3VudCAqICgxIDw8IG90 KSkpCisJCSAgcmV0dXJuIC0xOworCSAgICAgIH0KKworCSAgICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VDWF9SRUdOVU0pKQorCSAg ICAgIHJldHVybiAtMTsKKwkgIH0KKwllbHNlCisJICB7CisJICAgIGlmIChh ZmxhZykKKwkgICAgICB7CisJCWlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9t ZW0gKGFkZHIsIDEgPDwgb3QpKQorCQkgIHJldHVybiAtMTsKKwkgICAgICB9 CisJICB9CisgICAgICB9CisgICAgICBicmVhazsKKworICAgICAgLyogbG9k c1MgKi8KKyAgICBjYXNlIDB4YWM6CisgICAgY2FzZSAweGFkOgorICAgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FQVhfUkVHTlVN KSkKKwlyZXR1cm4gLTE7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfcmVnIChJMzg2X0VTSV9SRUdOVU0pKQorCXJldHVybiAtMTsKKyAgICAg IGlmIChwcmVmaXhlcyAmIChQUkVGSVhfUkVQWiB8IFBSRUZJWF9SRVBOWikp CisJeworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9F Q1hfUkVHTlVNKSkKKwkgICAgcmV0dXJuIC0xOworCX0KKyAgICAgIGJyZWFr OworCisgICAgICAvKiBvdXRzUyAqLworICAgIGNhc2UgMHg2ZToKKyAgICBj YXNlIDB4NmY6CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVn IChJMzg2X0VTSV9SRUdOVU0pKQorCXJldHVybiAtMTsKKyAgICAgIGlmIChw cmVmaXhlcyAmIChQUkVGSVhfUkVQWiB8IFBSRUZJWF9SRVBOWikpCisJewor CSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FQ1hfUkVH TlVNKSkKKwkgICAgcmV0dXJuIC0xOworCX0KKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBzY2FzUyAqLworICAgIGNhc2UgMHhhZToKKyAgICBjYXNlIDB4 YWY6CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2 X0VESV9SRUdOVU0pKQorCXJldHVybiAtMTsKKyAgICAgIGlmIChwcmVmaXhl cyAmIChQUkVGSVhfUkVQWiB8IFBSRUZJWF9SRVBOWikpCisJeworCSAgaWYg KHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FQ1hfUkVHTlVNKSkK KwkgICAgcmV0dXJuIC0xOworCX0KKyAgICAgIGlmIChyZWNvcmRfYXJjaF9s aXN0X2FkZF9yZWcgKEkzODZfRUZMQUdTX1JFR05VTSkpCisJcmV0dXJuIC0x OworICAgICAgYnJlYWs7CisKKyAgICAgIC8qIGNtcHNTICovCisgICAgY2Fz ZSAweGE2OgorICAgIGNhc2UgMHhhNzoKKyAgICAgIGlmIChyZWNvcmRfYXJj aF9saXN0X2FkZF9yZWcgKEkzODZfRURJX1JFR05VTSkpCisJcmV0dXJuIC0x OworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9F U0lfUkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICBpZiAocHJlZml4ZXMg JiAoUFJFRklYX1JFUFogfCBQUkVGSVhfUkVQTlopKQorCXsKKwkgIGlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUNYX1JFR05VTSkpCisJ ICAgIHJldHVybiAtMTsKKwl9CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlz dF9hZGRfcmVnIChJMzg2X0VGTEFHU19SRUdOVU0pKQorCXJldHVybiAtMTsK KyAgICAgIGJyZWFrOworCisgICAgICAvKiBwb3J0IEkvTyAqLworICAgIGNh c2UgMHhlNDoKKyAgICBjYXNlIDB4ZTU6CisgICAgY2FzZSAweGVjOgorICAg IGNhc2UgMHhlZDoKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9y ZWcgKEkzODZfRUFYX1JFR05VTSkpCisJcmV0dXJuIC0xOworICAgICAgYnJl YWs7CisKKyAgICBjYXNlIDB4ZTY6CisgICAgY2FzZSAweGU3OgorICAgIGNh c2UgMHhlZToKKyAgICBjYXNlIDB4ZWY6CisgICAgICBicmVhazsKKworICAg ICAgLyogY29udHJvbCAqLworICAgICAgLyogcmV0IGltICovCisgICAgY2Fz ZSAweGMyOgorICAgICAgLyogcmV0ICovCisgICAgY2FzZSAweGMzOgorICAg ICAgLyogbHJldCBpbSAqLworICAgIGNhc2UgMHhjYToKKyAgICAgIC8qIGxy ZXQgKi8KKyAgICBjYXNlIDB4Y2I6CisgICAgICBpZiAocmVjb3JkX2FyY2hf bGlzdF9hZGRfcmVnIChJMzg2X0VTUF9SRUdOVU0pKQorCXJldHVybiAtMTsK KyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfQ1Nf UkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAg LyogaXJldCAqLworICAgIGNhc2UgMHhjZjoKKyAgICAgIGlmIChyZWNvcmRf YXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRVNQX1JFR05VTSkpCisJcmV0dXJu IC0xOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4 Nl9DU19SRUdOVU0pKQorCXJldHVybiAtMTsKKyAgICAgIGlmIChyZWNvcmRf YXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUZMQUdTX1JFR05VTSkpCisJcmV0 dXJuIC0xOworICAgICAgYnJlYWs7CisKKyAgICAgIC8qIGNhbGwgaW0gKi8K KyAgICBjYXNlIDB4ZTg6CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfcmVnIChJMzg2X0VTUF9SRUdOVU0pKQorCXJldHVybiAtMTsKKyAgICAg IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRVNQ X1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbQorCSAgKChDT1JFX0FERFIp IHRtcHUzMiAtICgxIDw8IChkZmxhZyArIDEpKSwgKDEgPDwgKGRmbGFnICsg MSkpKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAgLyog bGNhbGwgaW0gKi8KKyAgICBjYXNlIDB4OWE6CisgICAgICBpZiAocmVjb3Jk X2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0NTX1JFR05VTSkpCisJcmV0dXJu IC0xOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4 Nl9FU1BfUkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICByZWdjYWNoZV9y YXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VTUF9SRUdOVU0sCisJ CQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRf YXJjaF9saXN0X2FkZF9tZW0KKwkgICgoQ09SRV9BRERSKSB0bXB1MzIgLSAo MSA8PCAoZGZsYWcgKyAyKSksICgxIDw8IChkZmxhZyArIDIpKSkpCisJcmV0 dXJuIC0xOworICAgICAgYnJlYWs7CisKKyAgICAgIC8qIGptcCBpbSAqLwor ICAgIGNhc2UgMHhlOToKKyAgICAgIC8qIGxqbXAgaW0gKi8KKyAgICBjYXNl IDB4ZWE6CisgICAgICAvKiBqbXAgSmIgKi8KKyAgICBjYXNlIDB4ZWI6Cisg ICAgICAvKiBqY2MgSmIgKi8KKyAgICBjYXNlIDB4NzA6CisgICAgY2FzZSAw eDcxOgorICAgIGNhc2UgMHg3MjoKKyAgICBjYXNlIDB4NzM6CisgICAgY2Fz ZSAweDc0OgorICAgIGNhc2UgMHg3NToKKyAgICBjYXNlIDB4NzY6CisgICAg Y2FzZSAweDc3OgorICAgIGNhc2UgMHg3ODoKKyAgICBjYXNlIDB4Nzk6Cisg ICAgY2FzZSAweDdhOgorICAgIGNhc2UgMHg3YjoKKyAgICBjYXNlIDB4N2M6 CisgICAgY2FzZSAweDdkOgorICAgIGNhc2UgMHg3ZToKKyAgICBjYXNlIDB4 N2Y6CisgICAgICAvKiBqY2MgSnYgKi8KKyAgICBjYXNlIDB4MGY4MDoKKyAg ICBjYXNlIDB4MGY4MToKKyAgICBjYXNlIDB4MGY4MjoKKyAgICBjYXNlIDB4 MGY4MzoKKyAgICBjYXNlIDB4MGY4NDoKKyAgICBjYXNlIDB4MGY4NToKKyAg ICBjYXNlIDB4MGY4NjoKKyAgICBjYXNlIDB4MGY4NzoKKyAgICBjYXNlIDB4 MGY4ODoKKyAgICBjYXNlIDB4MGY4OToKKyAgICBjYXNlIDB4MGY4YToKKyAg ICBjYXNlIDB4MGY4YjoKKyAgICBjYXNlIDB4MGY4YzoKKyAgICBjYXNlIDB4 MGY4ZDoKKyAgICBjYXNlIDB4MGY4ZToKKyAgICBjYXNlIDB4MGY4ZjoKKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBzZXRjYyBHdiAqLworICAgIGNhc2Ug MHgwZjkwOgorICAgIGNhc2UgMHgwZjkxOgorICAgIGNhc2UgMHgwZjkyOgor ICAgIGNhc2UgMHgwZjkzOgorICAgIGNhc2UgMHgwZjk0OgorICAgIGNhc2Ug MHgwZjk1OgorICAgIGNhc2UgMHgwZjk2OgorICAgIGNhc2UgMHgwZjk3Ogor ICAgIGNhc2UgMHgwZjk4OgorICAgIGNhc2UgMHgwZjk5OgorICAgIGNhc2Ug MHgwZjlhOgorICAgIGNhc2UgMHgwZjliOgorICAgIGNhc2UgMHgwZjljOgor ICAgIGNhc2UgMHgwZjlkOgorICAgIGNhc2UgMHgwZjllOgorICAgIGNhc2Ug MHgwZjlmOgorICAgICAgb3QgPSBPVF9CWVRFOworICAgICAgaWYgKGkzODZf cmVjb3JkX21vZHJtICgpKQorCXJldHVybiAtMTsKKyAgICAgIGlmIChtb2Qg PT0gMykKKwl7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChy bSAmIDB4MykpCisJICAgIHJldHVybiAtMTsKKwl9CisgICAgICBlbHNlCisJ eworCSAgaWYgKGkzODZfcmVjb3JkX2xlYV9tb2RybSAoKSkKKwkgICAgcmV0 dXJuIC0xOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBjbW92IEd2 LCBFdiAqLworICAgIGNhc2UgMHgwZjQwOgorICAgIGNhc2UgMHgwZjQxOgor ICAgIGNhc2UgMHgwZjQyOgorICAgIGNhc2UgMHgwZjQzOgorICAgIGNhc2Ug MHgwZjQ0OgorICAgIGNhc2UgMHgwZjQ1OgorICAgIGNhc2UgMHgwZjQ2Ogor ICAgIGNhc2UgMHgwZjQ3OgorICAgIGNhc2UgMHgwZjQ4OgorICAgIGNhc2Ug MHgwZjQ5OgorICAgIGNhc2UgMHgwZjRhOgorICAgIGNhc2UgMHgwZjRiOgor ICAgIGNhc2UgMHgwZjRjOgorICAgIGNhc2UgMHgwZjRkOgorICAgIGNhc2Ug MHgwZjRlOgorICAgIGNhc2UgMHgwZjRmOgorICAgICAgaWYgKGkzODZfcmVj b3JkX21vZHJtICgpKQorCXJldHVybiAtMTsKKyAgICAgIGlmIChkZmxhZyA9 PSBPVF9CWVRFKQorCXJlZyAmPSAweDM7CisgICAgICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfcmVnIChyZWcgJiAweDMpKQorCXJldHVybiAtMTsKKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBmbGFncyAqLworICAgICAgLyogcHVz aGYgKi8KKyAgICBjYXNlIDB4OWM6CisgICAgICBpZiAocmVjb3JkX2FyY2hf bGlzdF9hZGRfcmVnIChJMzg2X0VTUF9SRUdOVU0pKQorCXJldHVybiAtMTsK KyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkz ODZfRVNQX1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOwor ICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbQorCSAgKChDT1JF X0FERFIpIHRtcHUzMiAtICgxIDw8IChkZmxhZyArIDEpKSwgKDEgPDwgKGRm bGFnICsgMSkpKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAg ICAgLyogcG9wZiAqLworICAgIGNhc2UgMHg5ZDoKKyAgICAgIGlmIChyZWNv cmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRVNQX1JFR05VTSkpCisJcmV0 dXJuIC0xOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAo STM4Nl9FRkxBR1NfUkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVh azsKKworICAgICAgLyogc2FoZiAqLworICAgIGNhc2UgMHg5ZToKKyAgICAg IC8qIGNtYyAqLworICAgIGNhc2UgMHhmNToKKyAgICAgIC8qIGNsYyAqLwor ICAgIGNhc2UgMHhmODoKKyAgICAgIC8qIHN0YyAqLworICAgIGNhc2UgMHhm OToKKyAgICAgIC8qIGNsZCAqLworICAgIGNhc2UgMHhmYzoKKyAgICAgIC8q IHN0ZCAqLworICAgIGNhc2UgMHhmZDoKKyAgICAgIGlmIChyZWNvcmRfYXJj aF9saXN0X2FkZF9yZWcgKEkzODZfRUZMQUdTX1JFR05VTSkpCisJcmV0dXJu IC0xOworICAgICAgYnJlYWs7CisKKyAgICAgIC8qIGxhaGYgKi8KKyAgICBj YXNlIDB4OWY6CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVn IChJMzg2X0VBWF9SRUdOVU0pKQorCXJldHVybiAtMTsKKyAgICAgIGJyZWFr OworCisgICAgICAvKiBiaXQgb3BlcmF0aW9ucyAqLworICAgICAgLyogYnQv YnRzL2J0ci9idGMgR3YsIGltICovCisgICAgY2FzZSAweDBmYmE6CisgICAg ICAvKiBidHMgKi8KKyAgICBjYXNlIDB4MGZhYjoKKyAgICAgIC8qIGJ0ciAq LworICAgIGNhc2UgMHgwZmIzOgorICAgICAgLyogYnRjICovCisgICAgY2Fz ZSAweDBmYmI6CisgICAgICBvdCA9IGRmbGFnICsgT1RfV09SRDsKKyAgICAg IGlmIChpMzg2X3JlY29yZF9tb2RybSAoKSkKKwlyZXR1cm4gLTE7CisgICAg ICBpZiAocmVnIDwgNCkKKwl7CisJICBpMzg2X3JlY29yZF9wYyAtPSAzOwor CSAgb3Bjb2RlID0gb3Bjb2RlIDw8IDggfCBtb2RybTsKKwkgIGdvdG8gbm9f c3VwcG9ydDsKKwl9CisgICAgICByZWcgLT0gNDsKKyAgICAgIGlmIChyZWcg IT0gMCkKKwl7CisJICBpZiAobW9kICE9IDMpCisJICAgIHsKKwkgICAgICBp ZiAoaTM4Nl9yZWNvcmRfbGVhX21vZHJtICgpKQorCQlyZXR1cm4gLTE7CisJ ICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIGlmIChyZWNvcmRfYXJj aF9saXN0X2FkZF9yZWcgKHJtKSkKKwkJcmV0dXJuIC0xOworCSAgICB9CisJ fQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9F RkxBR1NfUkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKwor ICAgICAgLyogYnQgR3YsIEV2ICovCisgICAgY2FzZSAweDBmYTM6CisgICAg ICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VGTEFHU19S RUdOVU0pKQorCXJldHVybiAtMTsKKyAgICAgIGJyZWFrOworCisgICAgICAv KiBic2YgKi8KKyAgICBjYXNlIDB4MGZiYzoKKyAgICAgIC8qIGJzciAqLwor ICAgIGNhc2UgMHgwZmJkOgorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX3JlZyAocmVnKSkKKwlyZXR1cm4gLTE7CisgICAgICBpZiAocmVjb3Jk X2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VGTEFHU19SRUdOVU0pKQorCXJl dHVybiAtMTsKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBiY2QgKi8KKyAg ICAgIC8qIGRhYSAqLworICAgIGNhc2UgMHgyNzoKKyAgICAgIC8qIGRhcyAq LworICAgIGNhc2UgMHgyZjoKKyAgICAgIC8qIGFhYSAqLworICAgIGNhc2Ug MHgzNzoKKyAgICAgIC8qIGFhcyAqLworICAgIGNhc2UgMHgzZjoKKyAgICAg IC8qIGFhbSAqLworICAgIGNhc2UgMHhkNDoKKyAgICAgIC8qIGFhZCAqLwor ICAgIGNhc2UgMHhkNToKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2Fk ZF9yZWcgKEkzODZfRUFYX1JFR05VTSkpCisJcmV0dXJuIC0xOworICAgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FRkxBR1NfUkVH TlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAgLyog bWlzYyAqLworICAgICAgLyogbm9wICovCisgICAgY2FzZSAweDkwOgorICAg ICAgaWYgKHByZWZpeGVzICYgUFJFRklYX0xPQ0spCisJeworCSAgaTM4Nl9y ZWNvcmRfcGMgLT0gMTsKKwkgIGdvdG8gbm9fc3VwcG9ydDsKKwl9CisgICAg ICBicmVhazsKKworICAgICAgLyogZndhaXQgKi8KKyAgICAgIC8qIFhYWCAq LworICAgIGNhc2UgMHg5YjoKKyAgICAgIHByaW50Zl91bmZpbHRlcmVkIChf KCJQcm9jZXNzIHJlY29yZCBkb2Vzbid0IHN1cHBvcnQgaW5zdHJ1Y3Rpb24g IgorCQkJICAgImZ3YWl0LlxuIikpOworICAgICAgaTM4Nl9yZWNvcmRfcGMg LT0gMTsKKyAgICAgIGdvdG8gbm9fc3VwcG9ydDsKKyAgICAgIGJyZWFrOwor CisgICAgICAvKiBpbnQzICovCisgICAgICAvKiBYWFggKi8KKyAgICBjYXNl IDB4Y2M6CisgICAgICBwcmludGZfdW5maWx0ZXJlZCAoXygiUHJvY2VzcyBy ZWNvcmQgZG9lc24ndCBzdXBwb3J0IGluc3RydWN0aW9uICIKKwkJCSAgICJp bnQzLlxuIikpOworICAgICAgaTM4Nl9yZWNvcmRfcGMgLT0gMTsKKyAgICAg IGdvdG8gbm9fc3VwcG9ydDsKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBp bnQgKi8KKyAgICAgIC8qIFhYWCAqLworICAgIGNhc2UgMHhjZDoKKyAgICAg IHsKKwlpbnQgcmV0OworCWlmICh0YXJnZXRfcmVhZF9tZW1vcnkgKGkzODZf cmVjb3JkX3BjLCAmdG1wdTgsIDEpKQorCSAgeworCSAgICBpZiAocmVjb3Jk X2RlYnVnKQorCSAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJQcm9jZXNz IHJlY29yZDogZXJyb3IgcmVhZGluZyBtZW1vcnkgIgorCQkJCSAgICJhdCBh ZGRyIDB4JXMgbGVuID0gMS5cbiIpLAorCQkJCSBwYWRkcl9ueiAoaTM4Nl9y ZWNvcmRfcGMpKTsKKwkgICAgcmV0dXJuIC0xOworCSAgfQorCWkzODZfcmVj b3JkX3BjKys7CisJaWYgKHRtcHU4ICE9IDB4ODAKKwkgICAgfHwgZ2RiYXJj aF90ZGVwIChnZGJhcmNoKS0+aTM4Nl9pbnR4ODBfcmVjb3JkID09IE5VTEwp CisJICB7CisJICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJQcm9jZXNzIHJl Y29yZCBkb2Vzbid0IHN1cHBvcnQgIgorCQkJCSAiaW5zdHJ1Y3Rpb24gaW50 IDB4JTAyeC5cbiIpLAorCQkJICAgICAgIHRtcHU4KTsKKwkgICAgaTM4Nl9y ZWNvcmRfcGMgLT0gMjsKKwkgICAgZ290byBub19zdXBwb3J0OworCSAgfQor CXJldCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCktPmkzODZfaW50eDgwX3Jl Y29yZCAoKTsKKwlpZiAocmV0KQorCSAgcmV0dXJuIHJldDsKKyAgICAgIH0K KyAgICAgIGJyZWFrOworCisgICAgICAvKiBpbnRvICovCisgICAgICAvKiBY WFggKi8KKyAgICBjYXNlIDB4Y2U6CisgICAgICBwcmludGZfdW5maWx0ZXJl ZCAoXygiUHJvY2VzcyByZWNvcmQgZG9lc24ndCBzdXBwb3J0ICIKKwkJCSAg ICJpbnN0cnVjdGlvbiBpbnRvLlxuIikpOworICAgICAgaTM4Nl9yZWNvcmRf cGMgLT0gMTsKKyAgICAgIGdvdG8gbm9fc3VwcG9ydDsKKyAgICAgIGJyZWFr OworCisgICAgICAvKiBjbGkgKi8KKyAgICBjYXNlIDB4ZmE6CisgICAgICAv KiBzdGkgKi8KKyAgICBjYXNlIDB4ZmI6CisgICAgICBicmVhazsKKworICAg ICAgLyogYm91bmQgKi8KKyAgICBjYXNlIDB4NjI6CisgICAgICBwcmludGZf dW5maWx0ZXJlZCAoXygiUHJvY2VzcyByZWNvcmQgZG9lc24ndCBzdXBwb3J0 ICIKKwkJCSAgICJpbnN0cnVjdGlvbiBib3VuZC5cbiIpKTsKKyAgICAgIGkz ODZfcmVjb3JkX3BjIC09IDE7CisgICAgICBnb3RvIG5vX3N1cHBvcnQ7Cisg ICAgICBicmVhazsKKworICAgICAgLyogYnN3YXAgcmVnICovCisgICAgY2Fz ZSAweDBmYzg6CisgICAgY2FzZSAweDBmYzk6CisgICAgY2FzZSAweDBmY2E6 CisgICAgY2FzZSAweDBmY2I6CisgICAgY2FzZSAweDBmY2M6CisgICAgY2Fz ZSAweDBmY2Q6CisgICAgY2FzZSAweDBmY2U6CisgICAgY2FzZSAweDBmY2Y6 CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChvcGNvZGUg JiA3KSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAgLyog c2FsYyAqLworICAgIGNhc2UgMHhkNjoKKyAgICAgIGlmIChyZWNvcmRfYXJj aF9saXN0X2FkZF9yZWcgKEkzODZfRUFYX1JFR05VTSkpCisJcmV0dXJuIC0x OworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9F RkxBR1NfUkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKwor ICAgICAgLyogbG9vcG56ICovCisgICAgY2FzZSAweGUwOgorICAgICAgLyog bG9vcHogKi8KKyAgICBjYXNlIDB4ZTE6CisgICAgICAvKiBsb29wICovCisg ICAgY2FzZSAweGUyOgorICAgICAgLyogamVjeHogKi8KKyAgICBjYXNlIDB4 ZTM6CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2 X0VDWF9SRUdOVU0pKQorCXJldHVybiAtMTsKKyAgICAgIGJyZWFrOworCisg ICAgICAvKiB3cm1zciAqLworICAgIGNhc2UgMHgwZjMwOgorICAgICAgcHJp bnRmX3VuZmlsdGVyZWQgKF8oIlByb2Nlc3MgcmVjb3JkIGRvZXNuJ3Qgc3Vw cG9ydCAiCisJCQkgICAiaW5zdHJ1Y3Rpb24gd3Jtc3IuXG4iKSk7CisgICAg ICBpMzg2X3JlY29yZF9wYyAtPSAyOworICAgICAgZ290byBub19zdXBwb3J0 OworICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHJkbXNyICovCisgICAgY2Fz ZSAweDBmMzI6CisgICAgICBwcmludGZfdW5maWx0ZXJlZCAoXygiUHJvY2Vz cyByZWNvcmQgZG9lc24ndCBzdXBwb3J0ICIKKwkJCSAgICJpbnN0cnVjdGlv biByZG1zci5cbiIpKTsKKyAgICAgIGkzODZfcmVjb3JkX3BjIC09IDI7Cisg ICAgICBnb3RvIG5vX3N1cHBvcnQ7CisgICAgICBicmVhazsKKworICAgICAg LyogcmR0c2MgKi8KKyAgICBjYXNlIDB4MGYzMToKKyAgICAgIHByaW50Zl91 bmZpbHRlcmVkIChfKCJQcm9jZXNzIHJlY29yZCBkb2Vzbid0IHN1cHBvcnQg IgorCQkJICAgImluc3RydWN0aW9uIHJkdHNjLlxuIikpOworICAgICAgaTM4 Nl9yZWNvcmRfcGMgLT0gMjsKKyAgICAgIGdvdG8gbm9fc3VwcG9ydDsKKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBzeXNlbnRlciAqLworICAgIGNhc2Ug MHgwZjM0OgorICAgICAgeworCWludCByZXQ7CisJaWYgKGdkYmFyY2hfdGRl cCAoZ2RiYXJjaCktPmkzODZfc3lzZW50ZXJfcmVjb3JkID09IE5VTEwpCisJ ICB7CisJICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJQcm9jZXNzIHJlY29y ZCBkb2Vzbid0IHN1cHBvcnQgIgorCQkJCSAiaW5zdHJ1Y3Rpb24gc3lzZW50 ZXIuXG4iKSk7CisJICAgIGkzODZfcmVjb3JkX3BjIC09IDI7CisJICAgIGdv dG8gbm9fc3VwcG9ydDsKKwkgIH0KKwlyZXQgPSBnZGJhcmNoX3RkZXAgKGdk YmFyY2gpLT5pMzg2X3N5c2VudGVyX3JlY29yZCAoKTsKKwlpZiAocmV0KQor CSAgcmV0dXJuIHJldDsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAg ICAvKiBzeXNleGl0ICovCisgICAgY2FzZSAweDBmMzU6CisgICAgICBwcmlu dGZfdW5maWx0ZXJlZCAoXygiUHJvY2VzcyByZWNvcmQgZG9lc24ndCBzdXBw b3J0ICIKKwkJCSAgICJpbnN0cnVjdGlvbiBzeXNleGl0LlxuIikpOworICAg ICAgaTM4Nl9yZWNvcmRfcGMgLT0gMjsKKyAgICAgIGdvdG8gbm9fc3VwcG9y dDsKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBjcHVpZCAqLworICAgIGNh c2UgMHgwZmEyOgorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3Jl ZyAoSTM4Nl9FQVhfUkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VDWF9SRUdOVU0pKQor CXJldHVybiAtMTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9y ZWcgKEkzODZfRURYX1JFR05VTSkpCisJcmV0dXJuIC0xOworICAgICAgaWYg KHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FQlhfUkVHTlVNKSkK KwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAgLyogaGx0ICov CisgICAgY2FzZSAweGY0OgorICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8o IlByb2Nlc3MgcmVjb3JkIGRvZXNuJ3Qgc3VwcG9ydCAiCisJCQkgICAiaW5z dHJ1Y3Rpb24gaGx0LlxuIikpOworICAgICAgaTM4Nl9yZWNvcmRfcGMgLT0g MTsKKyAgICAgIGdvdG8gbm9fc3VwcG9ydDsKKyAgICAgIGJyZWFrOworCisg ICAgY2FzZSAweDBmMDA6CisgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9kcm0g KCkpCisJcmV0dXJuIC0xOworICAgICAgc3dpdGNoIChyZWcpCisJeworCSAg Lyogc2xkdCAqLworCWNhc2UgMDoKKwkgIC8qIHN0ciAqLworCWNhc2UgMToK KwkgIGlmIChtb2QgPT0gMykKKwkgICAgeworCSAgICAgIGlmIChyZWNvcmRf YXJjaF9saXN0X2FkZF9yZWcgKHJtKSkKKwkJcmV0dXJuIC0xOworCSAgICB9 CisJICBlbHNlCisJICAgIHsKKwkgICAgICBvdCA9IE9UX1dPUkQ7CisJICAg ICAgaWYgKGkzODZfcmVjb3JkX2xlYV9tb2RybSAoKSkKKwkJcmV0dXJuIC0x OworCSAgICB9CisJICBicmVhazsKKwkgIC8qIGxsZHQgKi8KKwljYXNlIDI6 CisJICAvKiBsdHIgKi8KKwljYXNlIDM6CisJICBicmVhazsKKwkgIC8qIHZl cnIgKi8KKwljYXNlIDQ6CisJICAvKiB2ZXJ3ICovCisJY2FzZSA1OgorCSAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FRkxBR1NfUkVH TlVNKSkKKwkgICAgcmV0dXJuIC0xOworCSAgYnJlYWs7CisJZGVmYXVsdDoK KwkgIGkzODZfcmVjb3JkX3BjIC09IDM7CisJICBvcGNvZGUgPSBvcGNvZGUg PDwgOCB8IG1vZHJtOworCSAgZ290byBub19zdXBwb3J0OworCSAgYnJlYWs7 CisJfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDB4MGYwMToKKyAgICAg IGlmIChpMzg2X3JlY29yZF9tb2RybSAoKSkKKwlyZXR1cm4gLTE7CisgICAg ICBzd2l0Y2ggKHJlZykKKwl7CisJICAvKiBzZ2R0ICovCisJY2FzZSAwOgor CSAgeworCSAgICB1aW50MzJfdCBhZGRyOworCisJICAgIGlmIChtb2QgPT0g MykKKwkgICAgICB7CisJCWkzODZfcmVjb3JkX3BjIC09IDM7CisJCW9wY29k ZSA9IG9wY29kZSA8PCA4IHwgbW9kcm07CisJCWdvdG8gbm9fc3VwcG9ydDsK KwkgICAgICB9CisKKwkgICAgaWYgKG92ZXJyaWRlKQorCSAgICAgIHsKKwkJ aWYgKHJlY29yZF9kZWJ1ZykKKwkJICBwcmludGZfdW5maWx0ZXJlZCAoXygi UHJvY2VzcyByZWNvcmQgaWdub3JlcyB0aGUgbWVtb3J5ICIKKwkJCQkgICAg ICAgImNoYW5nZSBvZiBpbnN0cnVjdGlvbiBhdCAiCisJCQkJICAgICAgICJh ZGRyZXNzIDB4JXMgYmVjYXVzZSBpdCBjYW4ndCBnZXQgIgorCQkJCSAgICAg ICAidGhlIHZhbHVlIG9mIHRoZSBzZWdtZW50ICIKKwkJCQkgICAgICAgInJl Z2lzdGVyLlxuIiksCisJCQkJICAgICBwYWRkcl9ueiAoaTM4Nl9yZWNvcmRf cGMpKTsKKwkgICAgICB9CisJICAgIGVsc2UKKwkgICAgICB7CisJCWlmIChp Mzg2X3JlY29yZF9sZWFfbW9kcm1fYWRkciAoJmFkZHIpKQorCQkgIHJldHVy biAtMTsKKwkJaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAoYWRkciwg MikpCisJCSAgcmV0dXJuIC0xOworCQlhZGRyICs9IDI7CisJCWlmIChyZWNv cmRfYXJjaF9saXN0X2FkZF9tZW0gKGFkZHIsIDQpKQorCQkgIHJldHVybiAt MTsKKwkgICAgICB9CisJICB9CisJICBicmVhazsKKwljYXNlIDE6CisJICBp ZiAobW9kID09IDMpCisJICAgIHsKKwkgICAgICBzd2l0Y2ggKHJtKQorCQl7 CisJCSAgLyogbW9uaXRvciAqLworCQljYXNlIDA6CisJCSAgYnJlYWs7CisJ CSAgLyogbXdhaXQgKi8KKwkJY2FzZSAxOgorCQkgIGlmIChyZWNvcmRfYXJj aF9saXN0X2FkZF9yZWcgKEkzODZfRUZMQUdTX1JFR05VTSkpCisJCSAgICBy ZXR1cm4gLTE7CisJCSAgYnJlYWs7CisJCWRlZmF1bHQ6CisJCSAgaTM4Nl9y ZWNvcmRfcGMgLT0gMzsKKwkJICBvcGNvZGUgPSBvcGNvZGUgPDwgOCB8IG1v ZHJtOworCQkgIGdvdG8gbm9fc3VwcG9ydDsKKwkJICBicmVhazsKKwkJfQor CSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICAvKiBzaWR0ICovCisJ ICAgICAgaWYgKG92ZXJyaWRlKQorCQl7CisJCSAgaWYgKHJlY29yZF9kZWJ1 ZykKKwkJICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJQcm9jZXNzIHJlY29y ZCBpZ25vcmVzIHRoZSBtZW1vcnkgIgorCQkJCQkgImNoYW5nZSBvZiBpbnN0 cnVjdGlvbiBhdCAiCisJCQkJCSAiYWRkcmVzcyAweCVzIGJlY2F1c2UgaXQg Y2FuJ3QgZ2V0ICIKKwkJCQkJICJ0aGUgdmFsdWUgb2YgdGhlIHNlZ21lbnQg IgorCQkJCQkgInJlZ2lzdGVyLlxuIiksCisJCQkJICAgICAgIHBhZGRyX256 IChpMzg2X3JlY29yZF9wYykpOworCQl9CisJICAgICAgZWxzZQorCQl7CisJ CSAgdWludDMyX3QgYWRkcjsKKworCQkgIGlmIChpMzg2X3JlY29yZF9sZWFf bW9kcm1fYWRkciAoJmFkZHIpKQorCQkgICAgcmV0dXJuIC0xOworCQkgIGlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKGFkZHIsIDIpKQorCQkgICAg cmV0dXJuIC0xOworCQkgIGFkZHIgKz0gMjsKKwkJICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfbWVtIChhZGRyLCA0KSkKKwkJICAgIHJldHVybiAtMTsK KwkJfQorCSAgICB9CisJICBicmVhazsKKwkgIC8qIGxnZHQgKi8KKwljYXNl IDI6CisJICAvKiBsaWR0ICovCisJY2FzZSAzOgorCSAgLyogaW52bHBnICov CisJY2FzZSA3OgorCWRlZmF1bHQ6CisJICBpZiAobW9kID09IDMpCisJICAg IHsKKwkgICAgICBpMzg2X3JlY29yZF9wYyAtPSAzOworCSAgICAgIG9wY29k ZSA9IG9wY29kZSA8PCA4IHwgbW9kcm07CisJICAgICAgZ290byBub19zdXBw b3J0OworCSAgICB9CisJICBicmVhazsKKwkgIC8qIHNtc3cgKi8KKwljYXNl IDQ6CisJICBpZiAobW9kID09IDMpCisJICAgIHsKKwkgICAgICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfcmVnIChybSkpCisJCXJldHVybiAtMTsKKwkg ICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgb3QgPSBPVF9XT1JEOwor CSAgICAgIGlmIChpMzg2X3JlY29yZF9sZWFfbW9kcm0gKCkpCisJCXJldHVy biAtMTsKKwkgICAgfQorCSAgYnJlYWs7CisJICAvKiBsbXN3ICovCisJY2Fz ZSA2OgorCSAgYnJlYWs7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IGludmQgKi8KKyAgICBjYXNlIDB4MGYwODoKKyAgICAgIC8qIHdiaW52ZCAq LworICAgIGNhc2UgMHgwZjA5OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IGFycGwgKi8KKyAgICBjYXNlIDB4NjM6CisgICAgICBvdCA9IGRmbGFnID8g T1RfTE9ORyA6IE9UX1dPUkQ7CisgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9k cm0gKCkpCisJcmV0dXJuIC0xOworICAgICAgaWYgKG1vZCAhPSAzKQorCXsK KwkgIGlmIChpMzg2X3JlY29yZF9sZWFfbW9kcm0gKCkpCisJICAgIHJldHVy biAtMTsKKwl9CisgICAgICBlbHNlCisJeworCSAgaWYgKHJlY29yZF9hcmNo X2xpc3RfYWRkX3JlZyAocm0pKQorCSAgICByZXR1cm4gLTE7CisJfQorICAg ICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FRkxBR1Nf UkVHTlVNKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAg LyogbGFyICovCisgICAgY2FzZSAweDBmMDI6CisgICAgICAvKiBsc2wgKi8K KyAgICBjYXNlIDB4MGYwMzoKKyAgICAgIGlmIChpMzg2X3JlY29yZF9tb2Ry bSAoKSkKKwlyZXR1cm4gLTE7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlz dF9hZGRfcmVnIChyZWcpKQorCXJldHVybiAtMTsKKyAgICAgIGlmIChyZWNv cmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUZMQUdTX1JFR05VTSkpCisJ cmV0dXJuIC0xOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDB4MGYxODoK KyAgICAgIGJyZWFrOworCisgICAgICAvKiBub3AgKG11bHRpIGJ5dGUpICov CisgICAgY2FzZSAweDBmMTk6CisgICAgY2FzZSAweDBmMWE6CisgICAgY2Fz ZSAweDBmMWI6CisgICAgY2FzZSAweDBmMWM6CisgICAgY2FzZSAweDBmMWQ6 CisgICAgY2FzZSAweDBmMWU6CisgICAgY2FzZSAweDBmMWY6CisgICAgICBi cmVhazsKKworICAgICAgLyogbW92IHJlZywgY3JOICovCisgICAgY2FzZSAw eDBmMjA6CisgICAgICAvKiBtb3YgY3JOLCByZWcgKi8KKyAgICBjYXNlIDB4 MGYyMjoKKyAgICAgIGlmIChpMzg2X3JlY29yZF9tb2RybSAoKSkKKwlyZXR1 cm4gLTE7CisgICAgICBpZiAoKG1vZHJtICYgMHhjMCkgIT0gMHhjMCkKKwl7 CisJICBpMzg2X3JlY29yZF9wYyAtPSAyOworCSAgb3Bjb2RlID0gb3Bjb2Rl IDw8IDggfCBtb2RybTsKKwkgIGdvdG8gbm9fc3VwcG9ydDsKKwl9CisgICAg ICBzd2l0Y2ggKHJlZykKKwl7CisJY2FzZSAwOgorCWNhc2UgMjoKKwljYXNl IDM6CisJY2FzZSA0OgorCWNhc2UgODoKKwkgIGlmIChvcGNvZGUgJiAyKQor CSAgICB7CisJICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIGlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKHJtKSkKKwkJcmV0dXJuIC0xOwor CSAgICB9CisJICBicmVhazsKKwlkZWZhdWx0OgorCSAgaTM4Nl9yZWNvcmRf cGMgLT0gMjsKKwkgIG9wY29kZSA9IG9wY29kZSA8PCA4IHwgbW9kcm07CisJ ICBnb3RvIG5vX3N1cHBvcnQ7CisJICBicmVhazsKKwl9CisgICAgICBicmVh azsKKworICAgICAgLyogbW92IHJlZywgZHJOICovCisgICAgY2FzZSAweDBm MjE6CisgICAgICAvKiBtb3YgZHJOLCByZWcgKi8KKyAgICBjYXNlIDB4MGYy MzoKKyAgICAgIGlmIChpMzg2X3JlY29yZF9tb2RybSAoKSkKKwlyZXR1cm4g LTE7CisgICAgICBpZiAoKG1vZHJtICYgMHhjMCkgIT0gMHhjMCB8fCByZWcg PT0gNCB8fCByZWcgPT0gNSB8fCByZWcgPj0gOCkKKwl7CisJICBpMzg2X3Jl Y29yZF9wYyAtPSAyOworCSAgb3Bjb2RlID0gb3Bjb2RlIDw8IDggfCBtb2Ry bTsKKwkgIGdvdG8gbm9fc3VwcG9ydDsKKwl9CisgICAgICBpZiAob3Bjb2Rl ICYgMikKKwl7CisJfQorICAgICAgZWxzZQorCXsKKwkgIGlmIChyZWNvcmRf YXJjaF9saXN0X2FkZF9yZWcgKHJtKSkKKwkgICAgcmV0dXJuIC0xOworCX0K KyAgICAgIGJyZWFrOworCisgICAgICAvKiBjbHRzICovCisgICAgY2FzZSAw eDBmMDY6CisgICAgICBicmVhazsKKworICAgICAgLyogTU1YL1NTRS9TU0Uy L1BOSSBzdXBwb3J0ICovCisgICAgICAvKiBYWFggKi8KKworICAgIGRlZmF1 bHQ6CisgICAgICBpZiAob3Bjb2RlID4gMHhmZikKKwlpMzg2X3JlY29yZF9w YyAtPSAyOworICAgICAgZWxzZQorCWkzODZfcmVjb3JkX3BjIC09IDE7Cisg ICAgICBnb3RvIG5vX3N1cHBvcnQ7CisgICAgICBicmVhazsKKyAgICB9CisK Ky8qIEluIHRoZSBmdXR1cmUsIE1heWJlIHN0aWxsIG5lZWQgdG8gZGVhbCB3 aXRoIG5lZWRfZGFzbSAqLworICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf cmVnIChJMzg2X0VJUF9SRUdOVU0pKQorICAgIHJldHVybiAtMTsKKyAgaWYg KHJlY29yZF9hcmNoX2xpc3RfYWRkX2VuZCAoKSkKKyAgICByZXR1cm4gLTE7 CisKKyAgcmV0dXJuIDA7CisKK25vX3N1cHBvcnQ6CisgIHByaW50Zl91bmZp bHRlcmVkIChfKCJQcm9jZXNzIHJlY29yZCBkb2Vzbid0IHN1cHBvcnQgaW5z dHJ1Y3Rpb24gMHglMDJ4ICIKKwkJICAgICAgICJhdCBhZGRyZXNzIDB4JXMu XG4iKSwKKwkJICAgICAodW5zaWduZWQgaW50KSAob3Bjb2RlKSwgcGFkZHJf bnogKGkzODZfcmVjb3JkX3BjKSk7CisgIHJldHVybiAtMTsKK30KKwogDAog c3RhdGljIHN0cnVjdCBnZGJhcmNoICoKIGkzODZfZ2RiYXJjaF9pbml0IChz dHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3Qg KmFyY2hlcykKQEAgLTI4NjIsNiArNTI2MCw4IEBAIGkzODZfZ2RiYXJjaF9p bml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGkKICAgc2V0X2dkYmFyY2hfc2tp cF9wZXJtYW5lbnRfYnJlYWtwb2ludCAoZ2RiYXJjaCwKIAkJCQkJIGkzODZf c2tpcF9wZXJtYW5lbnRfYnJlYWtwb2ludCk7CiAKKyAgc2V0X2dkYmFyY2hf cHJvY2Vzc19yZWNvcmQgKGdkYmFyY2gsIGkzODZfcHJvY2Vzc19yZWNvcmQp OworCiAgIHJldHVybiBnZGJhcmNoOwogfQogCi0tLSBhL2kzODYtdGRlcC5o CisrKyBiL2kzODYtdGRlcC5oCkBAIC0xMDYsNiArMTA2LDEwIEBAIHN0cnVj dCBnZGJhcmNoX3RkZXAKICAgLyogSVNBLXNwZWNpZmljIGRhdGEgdHlwZXMu ICAqLwogICBzdHJ1Y3QgdHlwZSAqaTM4Nl9tbXhfdHlwZTsKICAgc3RydWN0 IHR5cGUgKmkzODZfc3NlX3R5cGU7CisKKyAgLyogUHJvY2VzcyByZWNvcmQv cmVwbGF5IHRhcmdldC4gICovCisgIGludCAoKmkzODZfaW50eDgwX3JlY29y ZCkgKHZvaWQpOwkvKiBQYXJzZSBpbnR4ODAgYXJncy4gICovCisgIGludCAo KmkzODZfc3lzZW50ZXJfcmVjb3JkKSAodm9pZCk7CS8qIFBhcnNlIHN5c2Vu dGVyIGFyZ3MuICAqLwogfTsKIAogLyogRmxvYXRpbmctcG9pbnQgcmVnaXN0 ZXJzLiAgKi8K --0016e6511bd0c399170465a32b41--