From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NKFFq-0007xS-FG for qemu-devel@nongnu.org; Mon, 14 Dec 2009 13:02:42 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NKFFp-0007wx-7C for qemu-devel@nongnu.org; Mon, 14 Dec 2009 13:02:42 -0500 Received: from [199.232.76.173] (port=47664 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NKFFo-0007wk-Uu for qemu-devel@nongnu.org; Mon, 14 Dec 2009 13:02:41 -0500 Received: from are.twiddle.net ([75.149.56.221]:47018) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NKFFn-0005z4-KD for qemu-devel@nongnu.org; Mon, 14 Dec 2009 13:02:40 -0500 Received: from stone.twiddle.home (stone.twiddle.home [172.31.0.16]) by are.twiddle.net (Postfix) with ESMTPSA id 3F9B3486 for ; Mon, 14 Dec 2009 10:02:37 -0800 (PST) Message-ID: <4B267DBC.8050909@twiddle.net> Date: Mon, 14 Dec 2009 10:02:36 -0800 From: Richard Henderson MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------060302090809060303090104" Subject: [Qemu-devel] target-alpha: An approach to fp insn qualifiers List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This is a multi-part message in MIME format. --------------060302090809060303090104 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit One of the other folks here (I'm sorry, I've forgotten who as I misplaced the mail) passed me a preliminary patch to tackle the missing fp rounding mode support. That patch added helpers to change the rounding mode, and injected them before and after every fp insn that forced a rounding mode. After some thought I decided not to pursue this method for the simple reason that TCG does not have native floating point code generation. Given that we have to call one helper routine to perform the operation, we might as well arrange for that same routine to handle the rounding mode manipulation. Indeed, the patch below doesn't just pass the rounding mode to the helper, but all of the qualifier fields. Thus we can avoid a large explosion of helper routines for addt{,/u,/su,sui}{,/c,/m,/d}. To complete the patch I should add some symbolic defines for /s, /u, etc to avoid magic constants cluttering the code. I should figure out what I should pass to helper_excp for each arithmetic exception. I should actually implement the arithmetic exceptions. That said, these two patches are enough to pass the gcc testsuite with no regressions over native hardware. Comments? r~ --------------060302090809060303090104 Content-Type: text/plain; name="commit-fpu-1" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="commit-fpu-1" Y29tbWl0IDE0Y2IzNjM3NGYxNTQxM2FiZmFmYjRmYzAzMGRjYWIyNWEyZTBkOWEKQXV0aG9y OiBSaWNoYXJkIEhlbmRlcnNvbiA8cnRoQHR3aWRkbGUubmV0PgpEYXRlOiAgIEZyaSBEZWMg MTEgMDg6NDA6MjIgMjAwOSAtMDgwMAoKICAgIFBoYXNlIDEsIGFkZGluZyBhICJRdWFscyIg YXJndW1lbnQgdG8gYWxsIG9mIHRoZSBmcHUgaGVscGVycy4KCmRpZmYgLS1naXQgYS90YXJn ZXQtYWxwaGEvaGVscGVyLmggYi90YXJnZXQtYWxwaGEvaGVscGVyLmgKaW5kZXggYmVkZDNj MC4uMTUyMWE4NCAxMDA2NDQKLS0tIGEvdGFyZ2V0LWFscGhhL2hlbHBlci5oCisrKyBiL3Rh cmdldC1hbHBoYS9oZWxwZXIuaApAQCAtNDEsMzMgKzQxLDMzIEBAIERFRl9IRUxQRVJfMShz dG9yZV9mcGNyLCB2b2lkLCBpNjQpCiAKIERFRl9IRUxQRVJfMShmX3RvX21lbW9yeSwgaTMy LCBpNjQpCiBERUZfSEVMUEVSXzEobWVtb3J5X3RvX2YsIGk2NCwgaTMyKQotREVGX0hFTFBF Ul8yKGFkZGYsIGk2NCwgaTY0LCBpNjQpCi1ERUZfSEVMUEVSXzIoc3ViZiwgaTY0LCBpNjQs IGk2NCkKLURFRl9IRUxQRVJfMihtdWxmLCBpNjQsIGk2NCwgaTY0KQotREVGX0hFTFBFUl8y KGRpdmYsIGk2NCwgaTY0LCBpNjQpCi1ERUZfSEVMUEVSXzEoc3FydGYsIGk2NCwgaTY0KQor REVGX0hFTFBFUl8zKGFkZGYsIGk2NCwgaTY0LCBpNjQsIGkzMikKK0RFRl9IRUxQRVJfMyhz dWJmLCBpNjQsIGk2NCwgaTY0LCBpMzIpCitERUZfSEVMUEVSXzMobXVsZiwgaTY0LCBpNjQs IGk2NCwgaTMyKQorREVGX0hFTFBFUl8zKGRpdmYsIGk2NCwgaTY0LCBpNjQsIGkzMikKK0RF Rl9IRUxQRVJfMihzcXJ0ZiwgaTY0LCBpNjQsIGkzMikKIAogREVGX0hFTFBFUl8xKGdfdG9f bWVtb3J5LCBpNjQsIGk2NCkKIERFRl9IRUxQRVJfMShtZW1vcnlfdG9fZywgaTY0LCBpNjQp Ci1ERUZfSEVMUEVSXzIoYWRkZywgaTY0LCBpNjQsIGk2NCkKLURFRl9IRUxQRVJfMihzdWJn LCBpNjQsIGk2NCwgaTY0KQotREVGX0hFTFBFUl8yKG11bGcsIGk2NCwgaTY0LCBpNjQpCi1E RUZfSEVMUEVSXzIoZGl2ZywgaTY0LCBpNjQsIGk2NCkKLURFRl9IRUxQRVJfMShzcXJ0Zywg aTY0LCBpNjQpCitERUZfSEVMUEVSXzMoYWRkZywgaTY0LCBpNjQsIGk2NCwgaTMyKQorREVG X0hFTFBFUl8zKHN1YmcsIGk2NCwgaTY0LCBpNjQsIGkzMikKK0RFRl9IRUxQRVJfMyhtdWxn LCBpNjQsIGk2NCwgaTY0LCBpMzIpCitERUZfSEVMUEVSXzMoZGl2ZywgaTY0LCBpNjQsIGk2 NCwgaTMyKQorREVGX0hFTFBFUl8yKHNxcnRnLCBpNjQsIGk2NCwgaTMyKQogCiBERUZfSEVM UEVSXzEoc190b19tZW1vcnksIGkzMiwgaTY0KQogREVGX0hFTFBFUl8xKG1lbW9yeV90b19z LCBpNjQsIGkzMikKLURFRl9IRUxQRVJfMihhZGRzLCBpNjQsIGk2NCwgaTY0KQotREVGX0hF TFBFUl8yKHN1YnMsIGk2NCwgaTY0LCBpNjQpCi1ERUZfSEVMUEVSXzIobXVscywgaTY0LCBp NjQsIGk2NCkKLURFRl9IRUxQRVJfMihkaXZzLCBpNjQsIGk2NCwgaTY0KQotREVGX0hFTFBF Ul8xKHNxcnRzLCBpNjQsIGk2NCkKLQotREVGX0hFTFBFUl8yKGFkZHQsIGk2NCwgaTY0LCBp NjQpCi1ERUZfSEVMUEVSXzIoc3VidCwgaTY0LCBpNjQsIGk2NCkKLURFRl9IRUxQRVJfMiht dWx0LCBpNjQsIGk2NCwgaTY0KQotREVGX0hFTFBFUl8yKGRpdnQsIGk2NCwgaTY0LCBpNjQp Ci1ERUZfSEVMUEVSXzEoc3FydHQsIGk2NCwgaTY0KQorREVGX0hFTFBFUl8zKGFkZHMsIGk2 NCwgaTY0LCBpNjQsIGkzMikKK0RFRl9IRUxQRVJfMyhzdWJzLCBpNjQsIGk2NCwgaTY0LCBp MzIpCitERUZfSEVMUEVSXzMobXVscywgaTY0LCBpNjQsIGk2NCwgaTMyKQorREVGX0hFTFBF Ul8zKGRpdnMsIGk2NCwgaTY0LCBpNjQsIGkzMikKK0RFRl9IRUxQRVJfMihzcXJ0cywgaTY0 LCBpNjQsIGkzMikKKworREVGX0hFTFBFUl8zKGFkZHQsIGk2NCwgaTY0LCBpNjQsIGkzMikK K0RFRl9IRUxQRVJfMyhzdWJ0LCBpNjQsIGk2NCwgaTY0LCBpMzIpCitERUZfSEVMUEVSXzMo bXVsdCwgaTY0LCBpNjQsIGk2NCwgaTMyKQorREVGX0hFTFBFUl8zKGRpdnQsIGk2NCwgaTY0 LCBpNjQsIGkzMikKK0RFRl9IRUxQRVJfMihzcXJ0dCwgaTY0LCBpNjQsIGkzMikKIAogREVG X0hFTFBFUl8yKGNtcHR1biwgaTY0LCBpNjQsIGk2NCkKIERFRl9IRUxQRVJfMihjbXB0ZXEs IGk2NCwgaTY0LCBpNjQpCkBAIC04MSwxNSArODEsMTUgQEAgREVGX0hFTFBFUl8yKGNweXMs IGk2NCwgaTY0LCBpNjQpCiBERUZfSEVMUEVSXzIoY3B5c24sIGk2NCwgaTY0LCBpNjQpCiBE RUZfSEVMUEVSXzIoY3B5c2UsIGk2NCwgaTY0LCBpNjQpCiAKLURFRl9IRUxQRVJfMShjdnR0 cywgaTY0LCBpNjQpCi1ERUZfSEVMUEVSXzEoY3Z0c3QsIGk2NCwgaTY0KQotREVGX0hFTFBF Ul8xKGN2dHRxLCBpNjQsIGk2NCkKLURFRl9IRUxQRVJfMShjdnRxcywgaTY0LCBpNjQpCi1E RUZfSEVMUEVSXzEoY3Z0cXQsIGk2NCwgaTY0KQotREVGX0hFTFBFUl8xKGN2dHFmLCBpNjQs IGk2NCkKLURFRl9IRUxQRVJfMShjdnRnZiwgaTY0LCBpNjQpCi1ERUZfSEVMUEVSXzEoY3Z0 Z3EsIGk2NCwgaTY0KQotREVGX0hFTFBFUl8xKGN2dHFnLCBpNjQsIGk2NCkKK0RFRl9IRUxQ RVJfMihjdnR0cywgaTY0LCBpNjQsIGkzMikKK0RFRl9IRUxQRVJfMihjdnRzdCwgaTY0LCBp NjQsIGkzMikKK0RFRl9IRUxQRVJfMihjdnR0cSwgaTY0LCBpNjQsIGkzMikKK0RFRl9IRUxQ RVJfMihjdnRxcywgaTY0LCBpNjQsIGkzMikKK0RFRl9IRUxQRVJfMihjdnRxdCwgaTY0LCBp NjQsIGkzMikKK0RFRl9IRUxQRVJfMihjdnRxZiwgaTY0LCBpNjQsIGkzMikKK0RFRl9IRUxQ RVJfMihjdnRnZiwgaTY0LCBpNjQsIGkzMikKK0RFRl9IRUxQRVJfMihjdnRncSwgaTY0LCBp NjQsIGkzMikKK0RFRl9IRUxQRVJfMihjdnRxZywgaTY0LCBpNjQsIGkzMikKIERFRl9IRUxQ RVJfMShjdnRscSwgaTY0LCBpNjQpCiBERUZfSEVMUEVSXzEoY3Z0cWwsIGk2NCwgaTY0KQog REVGX0hFTFBFUl8xKGN2dHFsdiwgaTY0LCBpNjQpCmRpZmYgLS1naXQgYS90YXJnZXQtYWxw aGEvb3BfaGVscGVyLmMgYi90YXJnZXQtYWxwaGEvb3BfaGVscGVyLmMKaW5kZXggYjJhYmY2 Yy4uYjEyYzc4MyAxMDA2NDQKLS0tIGEvdGFyZ2V0LWFscGhhL29wX2hlbHBlci5jCisrKyBi L3RhcmdldC1hbHBoYS9vcF9oZWxwZXIuYwpAQCAtMzcwLDYgKzM3MCw4NSBAQCB1aW50NjRf dCBoZWxwZXJfdW5wa2J3ICh1aW50NjRfdCBvcDEpCiAKIC8qIEZsb2F0aW5nIHBvaW50IGhl bHBlcnMgKi8KIAorLyogSWYgdGhlIGZsb2F0aW5nLXBvaW50IHF1YWxpZmllcnMgc3BlY2lm aWVkIGEgcm91bmRpbmcgbW9kZSwKKyAgIHNldCB0aGF0IHJvdW5kaW5nIG1vZGUgYW5kIHJl bWVtYmVyIHRoZSBvcmlnaW5hbCBtb2RlIGZvcgorICAgcmVzZXR0aW5nIGF0IHRoZSBlbmQg b2YgdGhlIGluc3RydWN0aW9uLiAgKi8KK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgYmVnaW5f cXVhbHNfcm91bmRtb2RlKHVpbnQzMl90IHF1YWwpCit7CisgICAgdWludDMyX3Qgcm0gPSBG UF9TVEFUVVMuZmxvYXRfcm91bmRpbmdfbW9kZSwgb2xkX3JtID0gcm07CisKKyAgICBzd2l0 Y2ggKHF1YWwgJiAweGMwKSB7CisgICAgY2FzZSAweDgwOgorICAgICAgICBybSA9IGZsb2F0 X3JvdW5kX25lYXJlc3RfZXZlbjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAweDAwOgor ICAgICAgICBybSA9IGZsb2F0X3JvdW5kX3RvX3plcm87CisgICAgICAgIGJyZWFrOworICAg IGNhc2UgMHg0MDoKKyAgICAgICAgcm0gPSBmbG9hdF9yb3VuZF9kb3duOworICAgICAgICBi cmVhazsKKyAgICBjYXNlIDB4YzA6CisgICAgICAgIHJldHVybiBvbGRfcm07CisgICAgfQor ICAgIHNldF9mbG9hdF9yb3VuZGluZ19tb2RlKHJtLCAmRlBfU1RBVFVTKTsKKyAgICByZXR1 cm4gb2xkX3JtOworfQorCisvKiBJZiB0aGUgZmxvYXRpbmctcG9pbnQgcXVhbGlmaWVycyBz cGVjaWZpZWQgZXh0cmEgZXhjZXB0aW9uIHByb2Nlc3NpbmcKKyAgIChpLmUuIC91IG9yIC9z dSksIHplcm8gdGhlIGV4Y2VwdGlvbiBmbGFncyBzbyB0aGF0IHdlIGNhbiBkZXRlcm1pbmUg aWYKKyAgIHRoZSBjdXJyZW50IGluc3RydWN0aW9uIHJhaXNlcyBhbnkgZXhjZXB0aW9ucy4g IFNhdmUgdGhlIG9sZCBhY3J1ZWQKKyAgIGV4Y2VwdGlvbiBzdGF0dXMgc28gdGhhdCB3ZSBj YW4gcmVzdG9yZSB0aGVtIGF0IHRoZSBlbmQgb2YgdGhlIGluc24uICAqLworc3RhdGljIGlu bGluZSB1aW50MzJfdCBiZWdpbl9xdWFsc19leGNlcHRpb24odWludDMyX3QgcXVhbCkKK3sK KyAgICB1aW50MzJfdCBvbGRfZXhjID0gMDsKKyAgICBpZiAocXVhbCAmIDB4NTAwKSB7Cisg ICAgICAgIG9sZF9leGMgPSAodWludDMyX3QpRlBfU1RBVFVTLmZsb2F0X2V4Y2VwdGlvbl9m bGFncyA8PCA4OworICAgICAgICBzZXRfZmxvYXRfZXhjZXB0aW9uX2ZsYWdzKDAsICZGUF9T VEFUVVMpOworICAgIH0KKyAgICByZXR1cm4gb2xkX2V4YzsKK30KKworLyogQmVnaW4gcHJv Y2Vzc2luZyBhbiBmcCBvcGVyYXRpb24uICBSZXR1cm4gYSB0b2tlbiB0aGF0IHNob3VsZCBi ZSBwYXNzZWQKKyAgIHdoZW4gY29tcGxldGluZyB0aGUgZnAgb3BlcmF0aW9uLiAgKi8KK3N0 YXRpYyBpbmxpbmUgdWludDMyX3QgYmVnaW5fZnAodWludDMyX3QgcXVhbHMpCit7CisgICAg dWludDMyX3QgcmV0ID0gMDsKKworICAgIHJldCB8PSBiZWdpbl9xdWFsc19yb3VuZG1vZGUo cXVhbHMpOworICAgIHJldCB8PSBiZWdpbl9xdWFsc19leGNlcHRpb24ocXVhbHMpOworCisg ICAgcmV0dXJuIHJldDsKK30KKworLyogRW5kIHByb2Nlc3NpbmcgYW4gZnAgb3BlcmF0aW9u LiAgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBlbmRfZnAodWludDMyX3QgcXVhbHMsIHVpbnQz Ml90IG9yaWcpCit7CisgICAgdWludDhfdCBleGMgPSBGUF9TVEFUVVMuZmxvYXRfZXhjZXB0 aW9uX2ZsYWdzOworCisgICAgc2V0X2Zsb2F0X2V4Y2VwdGlvbl9mbGFncyhleGMgfCAob3Jp ZyA+PiA4KSwgJkZQX1NUQVRVUyk7CisgICAgc2V0X2Zsb2F0X3JvdW5kaW5nX21vZGUob3Jp ZyAmIDB4ZmYsICZGUF9TVEFUVVMpOworCisgICAgLyogVE9ETzogY2hlY2sgcXVhbHMgYW5k IGV4YyBhbmQgcmFpc2UgYW55IGV4Y2VwdGlvbnMgbmVlZGVkLiAgKi8KK30KKworLyogUmFp c2UgYW55IGV4Y2VwdGlvbnMgbmVlZGVkIGZvciB1c2luZyBGLCBnaXZlbiB0aGUgaW5zbiBx dWFsaWZpZXJzLiAgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBmbG9hdDMyX2lucHV0KHVpbnQz Ml90IHF1YWxzLCBmbG9hdDMyIGYpCit7CisgICAgLyogSWYgL3MgaXMgdXNlZCwgbm8gZXhj ZXB0aW9ucyBhcmUgcmFpc2VkIGltbWVkaWF0ZWx5LiAgKi8KKyAgICAvKiA/Pz8gVGhpcyBm b3IgdXNlcnNwYWNlIG9ubHkuICBJZiB3ZSBhcmUgZW11bGF0aW5nIHRoZSByZWFsIGh3LCB0 aGVuCisgICAgICAgd2UgbWF5IHdlbGwgbmVlZCB0byB0cmFwIHRvIHRoZSBrZXJuZWwgZm9y IHNvZnR3YXJlIGVtdWxhdGlvbi4gICovCisgICAgLyogPz8/IFNob3VsZG4ndCB3ZSByYWlz ZSBhbiBleGNlcHRpb24gZm9yIFNOQU4/ICAqLworICAgIGlmIChxdWFscyAmIDB4NTAwKQor ICAgICAgICByZXR1cm47CisgICAgLyogVE9ETzogQ2hlY2sgZm9yIGluZiwgbmFuLCBkZW5v cm1hbCBhbmQgdHJhcC4gICovCit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBmbG9hdDY0X2lu cHV0KHVpbnQzMl90IHF1YWxzLCBmbG9hdDY0IGYpCit7CisgICAgLyogVE9ETzogRXhhY3Rs eSBsaWtlIGFib3ZlLCBleGNlcHQgZm9yIGZsb2F0NjQuICAqLworfQorCisKIC8qIEYgZmxv YXRpbmcgKFZBWCkgKi8KIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgZmxvYXQzMl90b19mKGZs b2F0MzIgZmEpCiB7CkBAIC00NDcsNTIgKzUyNiw4NiBAQCB1aW50NjRfdCBoZWxwZXJfbWVt b3J5X3RvX2YgKHVpbnQzMl90IGEpCiAgICAgcmV0dXJuIHI7CiB9CiAKLXVpbnQ2NF90IGhl bHBlcl9hZGRmICh1aW50NjRfdCBhLCB1aW50NjRfdCBiKQordWludDY0X3QgaGVscGVyX2Fk ZGYgKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIsIHVpbnQzMl90IHF1YWxzKQogewogICAgIGZs b2F0MzIgZmEsIGZiLCBmcjsKKyAgICB1aW50MzJfdCB0b2tlbjsKIAogICAgIGZhID0gZl90 b19mbG9hdDMyKGEpOwogICAgIGZiID0gZl90b19mbG9hdDMyKGIpOworCisgICAgdG9rZW4g PSBiZWdpbl9mcChxdWFscyk7CisgICAgZmxvYXQzMl9pbnB1dChxdWFscywgZmEpOworICAg IGZsb2F0MzJfaW5wdXQocXVhbHMsIGZiKTsKICAgICBmciA9IGZsb2F0MzJfYWRkKGZhLCBm YiwgJkZQX1NUQVRVUyk7CisgICAgZW5kX2ZwKHF1YWxzLCB0b2tlbik7CisKICAgICByZXR1 cm4gZmxvYXQzMl90b19mKGZyKTsKIH0KIAotdWludDY0X3QgaGVscGVyX3N1YmYgKHVpbnQ2 NF90IGEsIHVpbnQ2NF90IGIpCit1aW50NjRfdCBoZWxwZXJfc3ViZiAodWludDY0X3QgYSwg dWludDY0X3QgYiwgdWludDMyX3QgcXVhbHMpCiB7CiAgICAgZmxvYXQzMiBmYSwgZmIsIGZy OworICAgIHVpbnQzMl90IHRva2VuOwogCiAgICAgZmEgPSBmX3RvX2Zsb2F0MzIoYSk7CiAg ICAgZmIgPSBmX3RvX2Zsb2F0MzIoYik7CisKKyAgICB0b2tlbiA9IGJlZ2luX2ZwKHF1YWxz KTsKKyAgICBmbG9hdDMyX2lucHV0KHF1YWxzLCBmYSk7CisgICAgZmxvYXQzMl9pbnB1dChx dWFscywgZmIpOwogICAgIGZyID0gZmxvYXQzMl9zdWIoZmEsIGZiLCAmRlBfU1RBVFVTKTsK KyAgICBlbmRfZnAocXVhbHMsIHRva2VuKTsKKwogICAgIHJldHVybiBmbG9hdDMyX3RvX2Yo ZnIpOwogfQogCi11aW50NjRfdCBoZWxwZXJfbXVsZiAodWludDY0X3QgYSwgdWludDY0X3Qg YikKK3VpbnQ2NF90IGhlbHBlcl9tdWxmICh1aW50NjRfdCBhLCB1aW50NjRfdCBiLCB1aW50 MzJfdCBxdWFscykKIHsKICAgICBmbG9hdDMyIGZhLCBmYiwgZnI7CisgICAgdWludDMyX3Qg dG9rZW47CiAKICAgICBmYSA9IGZfdG9fZmxvYXQzMihhKTsKICAgICBmYiA9IGZfdG9fZmxv YXQzMihiKTsKKworICAgIHRva2VuID0gYmVnaW5fZnAocXVhbHMpOworICAgIGZsb2F0MzJf aW5wdXQocXVhbHMsIGZhKTsKKyAgICBmbG9hdDMyX2lucHV0KHF1YWxzLCBmYik7CiAgICAg ZnIgPSBmbG9hdDMyX211bChmYSwgZmIsICZGUF9TVEFUVVMpOworICAgIGVuZF9mcChxdWFs cywgdG9rZW4pOworCiAgICAgcmV0dXJuIGZsb2F0MzJfdG9fZihmcik7CiB9CiAKLXVpbnQ2 NF90IGhlbHBlcl9kaXZmICh1aW50NjRfdCBhLCB1aW50NjRfdCBiKQordWludDY0X3QgaGVs cGVyX2RpdmYgKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIsIHVpbnQzMl90IHF1YWxzKQogewog ICAgIGZsb2F0MzIgZmEsIGZiLCBmcjsKKyAgICB1aW50MzJfdCB0b2tlbjsKIAogICAgIGZh ID0gZl90b19mbG9hdDMyKGEpOwogICAgIGZiID0gZl90b19mbG9hdDMyKGIpOworCisgICAg dG9rZW4gPSBiZWdpbl9mcChxdWFscyk7CisgICAgZmxvYXQzMl9pbnB1dChxdWFscywgZmEp OworICAgIGZsb2F0MzJfaW5wdXQocXVhbHMsIGZiKTsKICAgICBmciA9IGZsb2F0MzJfZGl2 KGZhLCBmYiwgJkZQX1NUQVRVUyk7CisgICAgZW5kX2ZwKHF1YWxzLCB0b2tlbik7CisKICAg ICByZXR1cm4gZmxvYXQzMl90b19mKGZyKTsKIH0KIAotdWludDY0X3QgaGVscGVyX3NxcnRm ICh1aW50NjRfdCB0KQordWludDY0X3QgaGVscGVyX3NxcnRmICh1aW50NjRfdCB0LCB1aW50 MzJfdCBxdWFscykKIHsKICAgICBmbG9hdDMyIGZ0LCBmcjsKKyAgICB1aW50MzJfdCB0b2tl bjsKIAogICAgIGZ0ID0gZl90b19mbG9hdDMyKHQpOworCisgICAgdG9rZW4gPSBiZWdpbl9m cChxdWFscyk7CisgICAgZmxvYXQzMl9pbnB1dChxdWFscywgZnQpOwogICAgIGZyID0gZmxv YXQzMl9zcXJ0KGZ0LCAmRlBfU1RBVFVTKTsKKyAgICBlbmRfZnAocXVhbHMsIHRva2VuKTsK KwogICAgIHJldHVybiBmbG9hdDMyX3RvX2YoZnIpOwogfQogCkBAIC01NzQsNTIgKzY4Nyw4 NiBAQCB1aW50NjRfdCBoZWxwZXJfbWVtb3J5X3RvX2cgKHVpbnQ2NF90IGEpCiAgICAgcmV0 dXJuIHI7CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9hZGRnICh1aW50NjRfdCBhLCB1aW50NjRf dCBiKQordWludDY0X3QgaGVscGVyX2FkZGcgKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIsIHVp bnQzMl90IHF1YWxzKQogewogICAgIGZsb2F0NjQgZmEsIGZiLCBmcjsKKyAgICB1aW50MzJf dCB0b2tlbjsKIAogICAgIGZhID0gZ190b19mbG9hdDY0KGEpOwogICAgIGZiID0gZ190b19m bG9hdDY0KGIpOworCisgICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7CisgICAgZmxvYXQ2 NF9pbnB1dChxdWFscywgZmEpOworICAgIGZsb2F0NjRfaW5wdXQocXVhbHMsIGZiKTsKICAg ICBmciA9IGZsb2F0NjRfYWRkKGZhLCBmYiwgJkZQX1NUQVRVUyk7CisgICAgZW5kX2ZwKHF1 YWxzLCB0b2tlbik7CisKICAgICByZXR1cm4gZmxvYXQ2NF90b19nKGZyKTsKIH0KIAotdWlu dDY0X3QgaGVscGVyX3N1YmcgKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIpCit1aW50NjRfdCBo ZWxwZXJfc3ViZyAodWludDY0X3QgYSwgdWludDY0X3QgYiwgdWludDMyX3QgcXVhbHMpCiB7 CiAgICAgZmxvYXQ2NCBmYSwgZmIsIGZyOworICAgIHVpbnQzMl90IHRva2VuOwogCiAgICAg ZmEgPSBnX3RvX2Zsb2F0NjQoYSk7CiAgICAgZmIgPSBnX3RvX2Zsb2F0NjQoYik7CisKKyAg ICB0b2tlbiA9IGJlZ2luX2ZwKHF1YWxzKTsKKyAgICBmbG9hdDY0X2lucHV0KHF1YWxzLCBm YSk7CisgICAgZmxvYXQ2NF9pbnB1dChxdWFscywgZmIpOwogICAgIGZyID0gZmxvYXQ2NF9z dWIoZmEsIGZiLCAmRlBfU1RBVFVTKTsKKyAgICBlbmRfZnAocXVhbHMsIHRva2VuKTsKKwog ICAgIHJldHVybiBmbG9hdDY0X3RvX2coZnIpOwogfQogCi11aW50NjRfdCBoZWxwZXJfbXVs ZyAodWludDY0X3QgYSwgdWludDY0X3QgYikKK3VpbnQ2NF90IGhlbHBlcl9tdWxnICh1aW50 NjRfdCBhLCB1aW50NjRfdCBiLCB1aW50MzJfdCBxdWFscykKIHsKICAgICBmbG9hdDY0IGZh LCBmYiwgZnI7Ci0KKyAgICB1aW50MzJfdCB0b2tlbjsKKyAgICAKICAgICBmYSA9IGdfdG9f ZmxvYXQ2NChhKTsKICAgICBmYiA9IGdfdG9fZmxvYXQ2NChiKTsKKworICAgIHRva2VuID0g YmVnaW5fZnAocXVhbHMpOworICAgIGZsb2F0NjRfaW5wdXQocXVhbHMsIGZhKTsKKyAgICBm bG9hdDY0X2lucHV0KHF1YWxzLCBmYik7CiAgICAgZnIgPSBmbG9hdDY0X211bChmYSwgZmIs ICZGUF9TVEFUVVMpOworICAgIGVuZF9mcChxdWFscywgdG9rZW4pOworCiAgICAgcmV0dXJu IGZsb2F0NjRfdG9fZyhmcik7CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9kaXZnICh1aW50NjRf dCBhLCB1aW50NjRfdCBiKQordWludDY0X3QgaGVscGVyX2RpdmcgKHVpbnQ2NF90IGEsIHVp bnQ2NF90IGIsIHVpbnQzMl90IHF1YWxzKQogewogICAgIGZsb2F0NjQgZmEsIGZiLCBmcjsK KyAgICB1aW50MzJfdCB0b2tlbjsKIAogICAgIGZhID0gZ190b19mbG9hdDY0KGEpOwogICAg IGZiID0gZ190b19mbG9hdDY0KGIpOworCisgICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7 CisgICAgZmxvYXQ2NF9pbnB1dChxdWFscywgZmEpOworICAgIGZsb2F0NjRfaW5wdXQocXVh bHMsIGZiKTsKICAgICBmciA9IGZsb2F0NjRfZGl2KGZhLCBmYiwgJkZQX1NUQVRVUyk7Cisg ICAgZW5kX2ZwKHF1YWxzLCB0b2tlbik7CisKICAgICByZXR1cm4gZmxvYXQ2NF90b19nKGZy KTsKIH0KIAotdWludDY0X3QgaGVscGVyX3NxcnRnICh1aW50NjRfdCBhKQordWludDY0X3Qg aGVscGVyX3NxcnRnICh1aW50NjRfdCBhLCB1aW50MzJfdCBxdWFscykKIHsKICAgICBmbG9h dDY0IGZhLCBmcjsKKyAgICB1aW50MzJfdCB0b2tlbjsKIAogICAgIGZhID0gZ190b19mbG9h dDY0KGEpOworCisgICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7CisgICAgZmxvYXQ2NF9p bnB1dChxdWFscywgZmEpOwogICAgIGZyID0gZmxvYXQ2NF9zcXJ0KGZhLCAmRlBfU1RBVFVT KTsKKyAgICBlbmRfZnAocXVhbHMsIHRva2VuKTsKKwogICAgIHJldHVybiBmbG9hdDY0X3Rv X2coZnIpOwogfQogCkBAIC02NzgsNTIgKzgyNSw4NiBAQCB1aW50NjRfdCBoZWxwZXJfbWVt b3J5X3RvX3MgKHVpbnQzMl90IGEpCiAgICAgcmV0dXJuIGZsb2F0MzJfdG9fc19pbnQoYSk7 CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9hZGRzICh1aW50NjRfdCBhLCB1aW50NjRfdCBiKQor dWludDY0X3QgaGVscGVyX2FkZHMgKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIsIHVpbnQzMl90 IHF1YWxzKQogewogICAgIGZsb2F0MzIgZmEsIGZiLCBmcjsKKyAgICB1aW50MzJfdCB0b2tl bjsKIAogICAgIGZhID0gc190b19mbG9hdDMyKGEpOwogICAgIGZiID0gc190b19mbG9hdDMy KGIpOworCisgICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7CisgICAgZmxvYXQzMl9pbnB1 dChxdWFscywgZmEpOworICAgIGZsb2F0MzJfaW5wdXQocXVhbHMsIGZiKTsKICAgICBmciA9 IGZsb2F0MzJfYWRkKGZhLCBmYiwgJkZQX1NUQVRVUyk7CisgICAgZW5kX2ZwKHF1YWxzLCB0 b2tlbik7CisKICAgICByZXR1cm4gZmxvYXQzMl90b19zKGZyKTsKIH0KIAotdWludDY0X3Qg aGVscGVyX3N1YnMgKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIpCit1aW50NjRfdCBoZWxwZXJf c3VicyAodWludDY0X3QgYSwgdWludDY0X3QgYiwgdWludDMyX3QgcXVhbHMpCiB7CiAgICAg ZmxvYXQzMiBmYSwgZmIsIGZyOworICAgIHVpbnQzMl90IHRva2VuOwogCiAgICAgZmEgPSBz X3RvX2Zsb2F0MzIoYSk7CiAgICAgZmIgPSBzX3RvX2Zsb2F0MzIoYik7CisKKyAgICB0b2tl biA9IGJlZ2luX2ZwKHF1YWxzKTsKKyAgICBmbG9hdDMyX2lucHV0KHF1YWxzLCBmYSk7Cisg ICAgZmxvYXQzMl9pbnB1dChxdWFscywgZmIpOwogICAgIGZyID0gZmxvYXQzMl9zdWIoZmEs IGZiLCAmRlBfU1RBVFVTKTsKKyAgICBlbmRfZnAocXVhbHMsIHRva2VuKTsKKwogICAgIHJl dHVybiBmbG9hdDMyX3RvX3MoZnIpOwogfQogCi11aW50NjRfdCBoZWxwZXJfbXVscyAodWlu dDY0X3QgYSwgdWludDY0X3QgYikKK3VpbnQ2NF90IGhlbHBlcl9tdWxzICh1aW50NjRfdCBh LCB1aW50NjRfdCBiLCB1aW50MzJfdCBxdWFscykKIHsKICAgICBmbG9hdDMyIGZhLCBmYiwg ZnI7CisgICAgdWludDMyX3QgdG9rZW47CiAKICAgICBmYSA9IHNfdG9fZmxvYXQzMihhKTsK ICAgICBmYiA9IHNfdG9fZmxvYXQzMihiKTsKKworICAgIHRva2VuID0gYmVnaW5fZnAocXVh bHMpOworICAgIGZsb2F0MzJfaW5wdXQocXVhbHMsIGZhKTsKKyAgICBmbG9hdDMyX2lucHV0 KHF1YWxzLCBmYik7CiAgICAgZnIgPSBmbG9hdDMyX211bChmYSwgZmIsICZGUF9TVEFUVVMp OworICAgIGVuZF9mcChxdWFscywgdG9rZW4pOworCiAgICAgcmV0dXJuIGZsb2F0MzJfdG9f cyhmcik7CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9kaXZzICh1aW50NjRfdCBhLCB1aW50NjRf dCBiKQordWludDY0X3QgaGVscGVyX2RpdnMgKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIsIHVp bnQzMl90IHF1YWxzKQogewogICAgIGZsb2F0MzIgZmEsIGZiLCBmcjsKKyAgICB1aW50MzJf dCB0b2tlbjsKIAogICAgIGZhID0gc190b19mbG9hdDMyKGEpOwogICAgIGZiID0gc190b19m bG9hdDMyKGIpOworCisgICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7CisgICAgZmxvYXQz Ml9pbnB1dChxdWFscywgZmEpOworICAgIGZsb2F0MzJfaW5wdXQocXVhbHMsIGZiKTsKICAg ICBmciA9IGZsb2F0MzJfZGl2KGZhLCBmYiwgJkZQX1NUQVRVUyk7CisgICAgZW5kX2ZwKHF1 YWxzLCB0b2tlbik7CisKICAgICByZXR1cm4gZmxvYXQzMl90b19zKGZyKTsKIH0KIAotdWlu dDY0X3QgaGVscGVyX3NxcnRzICh1aW50NjRfdCBhKQordWludDY0X3QgaGVscGVyX3NxcnRz ICh1aW50NjRfdCBhLCB1aW50MzJfdCBxdWFscykKIHsKICAgICBmbG9hdDMyIGZhLCBmcjsK KyAgICB1aW50MzJfdCB0b2tlbjsKIAogICAgIGZhID0gc190b19mbG9hdDMyKGEpOworCisg ICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7CisgICAgZmxvYXQzMl9pbnB1dChxdWFscywg ZmEpOwogICAgIGZyID0gZmxvYXQzMl9zcXJ0KGZhLCAmRlBfU1RBVFVTKTsKKyAgICBlbmRf ZnAocXVhbHMsIHRva2VuKTsKKwogICAgIHJldHVybiBmbG9hdDMyX3RvX3MoZnIpOwogfQog CkBAIC03NDUsNTIgKzkyNiw4NiBAQCBzdGF0aWMgaW5saW5lIHVpbnQ2NF90IGZsb2F0NjRf dG9fdChmbG9hdDY0IGZhKQogICAgIHJldHVybiByLmxsOwogfQogCi11aW50NjRfdCBoZWxw ZXJfYWRkdCAodWludDY0X3QgYSwgdWludDY0X3QgYikKK3VpbnQ2NF90IGhlbHBlcl9hZGR0 ICh1aW50NjRfdCBhLCB1aW50NjRfdCBiLCB1aW50MzJfdCBxdWFscykKIHsKICAgICBmbG9h dDY0IGZhLCBmYiwgZnI7CisgICAgdWludDMyX3QgdG9rZW47CiAKICAgICBmYSA9IHRfdG9f ZmxvYXQ2NChhKTsKICAgICBmYiA9IHRfdG9fZmxvYXQ2NChiKTsKKworICAgIHRva2VuID0g YmVnaW5fZnAocXVhbHMpOworICAgIGZsb2F0NjRfaW5wdXQocXVhbHMsIGZhKTsKKyAgICBm bG9hdDY0X2lucHV0KHF1YWxzLCBmYik7CiAgICAgZnIgPSBmbG9hdDY0X2FkZChmYSwgZmIs ICZGUF9TVEFUVVMpOworICAgIGVuZF9mcChxdWFscywgdG9rZW4pOworCiAgICAgcmV0dXJu IGZsb2F0NjRfdG9fdChmcik7CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9zdWJ0ICh1aW50NjRf dCBhLCB1aW50NjRfdCBiKQordWludDY0X3QgaGVscGVyX3N1YnQgKHVpbnQ2NF90IGEsIHVp bnQ2NF90IGIsIHVpbnQzMl90IHF1YWxzKQogewogICAgIGZsb2F0NjQgZmEsIGZiLCBmcjsK KyAgICB1aW50MzJfdCB0b2tlbjsKIAogICAgIGZhID0gdF90b19mbG9hdDY0KGEpOwogICAg IGZiID0gdF90b19mbG9hdDY0KGIpOworCisgICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7 CisgICAgZmxvYXQ2NF9pbnB1dChxdWFscywgZmEpOworICAgIGZsb2F0NjRfaW5wdXQocXVh bHMsIGZiKTsKICAgICBmciA9IGZsb2F0NjRfc3ViKGZhLCBmYiwgJkZQX1NUQVRVUyk7Cisg ICAgZW5kX2ZwKHF1YWxzLCB0b2tlbik7CisgICAgCiAgICAgcmV0dXJuIGZsb2F0NjRfdG9f dChmcik7CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9tdWx0ICh1aW50NjRfdCBhLCB1aW50NjRf dCBiKQordWludDY0X3QgaGVscGVyX211bHQgKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIsIHVp bnQzMl90IHF1YWxzKQogewogICAgIGZsb2F0NjQgZmEsIGZiLCBmcjsKKyAgICB1aW50MzJf dCB0b2tlbjsKIAogICAgIGZhID0gdF90b19mbG9hdDY0KGEpOwogICAgIGZiID0gdF90b19m bG9hdDY0KGIpOworCisgICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7CisgICAgZmxvYXQ2 NF9pbnB1dChxdWFscywgZmEpOworICAgIGZsb2F0NjRfaW5wdXQocXVhbHMsIGZiKTsKICAg ICBmciA9IGZsb2F0NjRfbXVsKGZhLCBmYiwgJkZQX1NUQVRVUyk7CisgICAgZW5kX2ZwKHF1 YWxzLCB0b2tlbik7CisKICAgICByZXR1cm4gZmxvYXQ2NF90b190KGZyKTsKIH0KIAotdWlu dDY0X3QgaGVscGVyX2RpdnQgKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIpCit1aW50NjRfdCBo ZWxwZXJfZGl2dCAodWludDY0X3QgYSwgdWludDY0X3QgYiwgdWludDMyX3QgcXVhbHMpCiB7 CiAgICAgZmxvYXQ2NCBmYSwgZmIsIGZyOworICAgIHVpbnQzMl90IHRva2VuOwogCiAgICAg ZmEgPSB0X3RvX2Zsb2F0NjQoYSk7CiAgICAgZmIgPSB0X3RvX2Zsb2F0NjQoYik7CisKKyAg ICB0b2tlbiA9IGJlZ2luX2ZwKHF1YWxzKTsKKyAgICBmbG9hdDY0X2lucHV0KHF1YWxzLCBm YSk7CisgICAgZmxvYXQ2NF9pbnB1dChxdWFscywgZmIpOwogICAgIGZyID0gZmxvYXQ2NF9k aXYoZmEsIGZiLCAmRlBfU1RBVFVTKTsKKyAgICBlbmRfZnAocXVhbHMsIHRva2VuKTsKKwog ICAgIHJldHVybiBmbG9hdDY0X3RvX3QoZnIpOwogfQogCi11aW50NjRfdCBoZWxwZXJfc3Fy dHQgKHVpbnQ2NF90IGEpCit1aW50NjRfdCBoZWxwZXJfc3FydHQgKHVpbnQ2NF90IGEsIHVp bnQzMl90IHF1YWxzKQogewogICAgIGZsb2F0NjQgZmEsIGZyOworICAgIHVpbnQzMl90IHRv a2VuOwogCiAgICAgZmEgPSB0X3RvX2Zsb2F0NjQoYSk7CisKKyAgICB0b2tlbiA9IGJlZ2lu X2ZwKHF1YWxzKTsKKyAgICBmbG9hdDY0X2lucHV0KHF1YWxzLCBmYSk7CiAgICAgZnIgPSBm bG9hdDY0X3NxcnQoZmEsICZGUF9TVEFUVVMpOworICAgIGVuZF9mcChxdWFscywgdG9rZW4p OworCiAgICAgcmV0dXJuIGZsb2F0NjRfdG9fdChmcik7CiB9CiAKQEAgLTkwNSw3MCArMTEy MCwxMzEgQEAgdWludDY0X3QgaGVscGVyX2NtcGdsdCh1aW50NjRfdCBhLCB1aW50NjRfdCBi KQogfQogCiAvKiBGbG9hdGluZyBwb2ludCBmb3JtYXQgY29udmVyc2lvbiAqLwotdWludDY0 X3QgaGVscGVyX2N2dHRzICh1aW50NjRfdCBhKQordWludDY0X3QgaGVscGVyX2N2dHRzICh1 aW50NjRfdCBhLCB1aW50MzJfdCBxdWFscykKIHsKICAgICBmbG9hdDY0IGZhOwogICAgIGZs b2F0MzIgZnI7CisgICAgdWludDMyX3QgdG9rZW47CiAKICAgICBmYSA9IHRfdG9fZmxvYXQ2 NChhKTsKKworICAgIHRva2VuID0gYmVnaW5fZnAocXVhbHMpOworICAgIGZsb2F0NjRfaW5w dXQocXVhbHMsIGZhKTsKICAgICBmciA9IGZsb2F0NjRfdG9fZmxvYXQzMihmYSwgJkZQX1NU QVRVUyk7CisgICAgZW5kX2ZwKHF1YWxzLCB0b2tlbik7CisKICAgICByZXR1cm4gZmxvYXQz Ml90b19zKGZyKTsKIH0KIAotdWludDY0X3QgaGVscGVyX2N2dHN0ICh1aW50NjRfdCBhKQor dWludDY0X3QgaGVscGVyX2N2dHN0ICh1aW50NjRfdCBhLCB1aW50MzJfdCBxdWFscykKIHsK ICAgICBmbG9hdDMyIGZhOwogICAgIGZsb2F0NjQgZnI7CisgICAgdWludDMyX3QgdG9rZW47 CiAKICAgICBmYSA9IHNfdG9fZmxvYXQzMihhKTsKKworICAgIHRva2VuID0gYmVnaW5fZnAo cXVhbHMpOworICAgIGZsb2F0MzJfaW5wdXQocXVhbHMsIGZhKTsKICAgICBmciA9IGZsb2F0 MzJfdG9fZmxvYXQ2NChmYSwgJkZQX1NUQVRVUyk7CisgICAgZW5kX2ZwKHF1YWxzLCB0b2tl bik7CisKICAgICByZXR1cm4gZmxvYXQ2NF90b190KGZyKTsKIH0KIAotdWludDY0X3QgaGVs cGVyX2N2dHFzICh1aW50NjRfdCBhKQordWludDY0X3QgaGVscGVyX2N2dHFzICh1aW50NjRf dCBhLCB1aW50MzJfdCBxdWFscykKIHsKLSAgICBmbG9hdDMyIGZyID0gaW50NjRfdG9fZmxv YXQzMihhLCAmRlBfU1RBVFVTKTsKKyAgICBmbG9hdDMyIGZyOworICAgIHVpbnQzMl90IHRv a2VuOworCisgICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7CisgICAgZnIgPSBpbnQ2NF90 b19mbG9hdDMyKGEsICZGUF9TVEFUVVMpOworICAgIGVuZF9mcChxdWFscywgdG9rZW4pOwor CiAgICAgcmV0dXJuIGZsb2F0MzJfdG9fcyhmcik7CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9j dnR0cSAodWludDY0X3QgYSkKK3VpbnQ2NF90IGhlbHBlcl9jdnR0cSAodWludDY0X3QgYSwg dWludDMyX3QgcXVhbHMpCiB7Ci0gICAgZmxvYXQ2NCBmYSA9IHRfdG9fZmxvYXQ2NChhKTsK LSAgICByZXR1cm4gZmxvYXQ2NF90b19pbnQ2NF9yb3VuZF90b196ZXJvKGZhLCAmRlBfU1RB VFVTKTsKKyAgICBmbG9hdDY0IGZhOworICAgIHVpbnQ2NF90IHJldDsKKyAgICB1aW50MzJf dCB0b2tlbjsKKworICAgIGZhID0gdF90b19mbG9hdDY0KGEpOworCisgICAgdG9rZW4gPSBi ZWdpbl9mcChxdWFscyk7CisgICAgZmxvYXQ2NF9pbnB1dChxdWFscywgZmEpOworICAgIHJl dCA9IGZsb2F0NjRfdG9faW50NjQoZmEsICZGUF9TVEFUVVMpOworICAgIGVuZF9mcChxdWFs cywgdG9rZW4pOworCisgICAgcmV0dXJuIHJldDsKIH0KIAotdWludDY0X3QgaGVscGVyX2N2 dHF0ICh1aW50NjRfdCBhKQordWludDY0X3QgaGVscGVyX2N2dHF0ICh1aW50NjRfdCBhLCB1 aW50MzJfdCBxdWFscykKIHsKLSAgICBmbG9hdDY0IGZyID0gaW50NjRfdG9fZmxvYXQ2NChh LCAmRlBfU1RBVFVTKTsKKyAgICBmbG9hdDY0IGZyOworICAgIHVpbnQzMl90IHRva2VuOwor CisgICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7CisgICAgZnIgPSBpbnQ2NF90b19mbG9h dDY0KGEsICZGUF9TVEFUVVMpOworICAgIGVuZF9mcChxdWFscywgdG9rZW4pOworCiAgICAg cmV0dXJuIGZsb2F0NjRfdG9fdChmcik7CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9jdnRxZiAo dWludDY0X3QgYSkKK3VpbnQ2NF90IGhlbHBlcl9jdnRxZiAodWludDY0X3QgYSwgdWludDMy X3QgcXVhbHMpCiB7Ci0gICAgZmxvYXQzMiBmciA9IGludDY0X3RvX2Zsb2F0MzIoYSwgJkZQ X1NUQVRVUyk7CisgICAgZmxvYXQzMiBmcjsKKyAgICB1aW50MzJfdCB0b2tlbjsKKworICAg IHRva2VuID0gYmVnaW5fZnAocXVhbHMpOworICAgIGZyID0gaW50NjRfdG9fZmxvYXQzMihh LCAmRlBfU1RBVFVTKTsKKyAgICBlbmRfZnAocXVhbHMsIHRva2VuKTsKKwogICAgIHJldHVy biBmbG9hdDMyX3RvX2YoZnIpOwogfQogCi11aW50NjRfdCBoZWxwZXJfY3Z0Z2YgKHVpbnQ2 NF90IGEpCit1aW50NjRfdCBoZWxwZXJfY3Z0Z2YgKHVpbnQ2NF90IGEsIHVpbnQzMl90IHF1 YWxzKQogewogICAgIGZsb2F0NjQgZmE7CiAgICAgZmxvYXQzMiBmcjsKKyAgICB1aW50MzJf dCB0b2tlbjsKIAogICAgIGZhID0gZ190b19mbG9hdDY0KGEpOworCisgICAgdG9rZW4gPSBi ZWdpbl9mcChxdWFscyk7CisgICAgZmxvYXQ2NF9pbnB1dChxdWFscywgZmEpOwogICAgIGZy ID0gZmxvYXQ2NF90b19mbG9hdDMyKGZhLCAmRlBfU1RBVFVTKTsKKyAgICBlbmRfZnAocXVh bHMsIHRva2VuKTsKKwogICAgIHJldHVybiBmbG9hdDMyX3RvX2YoZnIpOwogfQogCi11aW50 NjRfdCBoZWxwZXJfY3Z0Z3EgKHVpbnQ2NF90IGEpCit1aW50NjRfdCBoZWxwZXJfY3Z0Z3Eg KHVpbnQ2NF90IGEsIHVpbnQzMl90IHF1YWxzKQogewotICAgIGZsb2F0NjQgZmEgPSBnX3Rv X2Zsb2F0NjQoYSk7Ci0gICAgcmV0dXJuIGZsb2F0NjRfdG9faW50NjRfcm91bmRfdG9femVy byhmYSwgJkZQX1NUQVRVUyk7CisgICAgZmxvYXQ2NCBmYTsKKyAgICB1aW50NjRfdCByZXQ7 CisgICAgdWludDMyX3QgdG9rZW47CisKKyAgICBmYSA9IGdfdG9fZmxvYXQ2NChhKTsKKwor ICAgIHRva2VuID0gYmVnaW5fZnAocXVhbHMpOworICAgIGZsb2F0NjRfaW5wdXQocXVhbHMs IGZhKTsKKyAgICByZXQgPSBmbG9hdDY0X3RvX2ludDY0KGZhLCAmRlBfU1RBVFVTKTsKKyAg ICBlbmRfZnAocXVhbHMsIHRva2VuKTsKKworICAgIHJldHVybiByZXQ7CiB9CiAKLXVpbnQ2 NF90IGhlbHBlcl9jdnRxZyAodWludDY0X3QgYSkKK3VpbnQ2NF90IGhlbHBlcl9jdnRxZyAo dWludDY0X3QgYSwgdWludDMyX3QgcXVhbHMpCiB7CiAgICAgZmxvYXQ2NCBmcjsKKyAgICB1 aW50MzJfdCB0b2tlbjsKKworICAgIHRva2VuID0gYmVnaW5fZnAocXVhbHMpOwogICAgIGZy ID0gaW50NjRfdG9fZmxvYXQ2NChhLCAmRlBfU1RBVFVTKTsKKyAgICBlbmRfZnAocXVhbHMs IHRva2VuKTsKKwogICAgIHJldHVybiBmbG9hdDY0X3RvX2coZnIpOwogfQogCmRpZmYgLS1n aXQgYS90YXJnZXQtYWxwaGEvdHJhbnNsYXRlLmMgYi90YXJnZXQtYWxwaGEvdHJhbnNsYXRl LmMKaW5kZXggYmU3ZTdiZi4uN2I2ZmYyYSAxMDA2NDQKLS0tIGEvdGFyZ2V0LWFscGhhL3Ry YW5zbGF0ZS5jCisrKyBiL3RhcmdldC1hbHBoYS90cmFuc2xhdGUuYwpAQCAtNDQyLDgxICs0 NDIsNzkgQEAgc3RhdGljIHZvaWQgZ2VuX2ZjbW92KFRDR0NvbmQgaW52X2NvbmQsIGludCBy YSwgaW50IHJiLCBpbnQgcmMpCiAgICAgZ2VuX3NldF9sYWJlbChsMSk7CiB9CiAKLSNkZWZp bmUgRkFSSVRIMihuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLXN0YXRpYyBpbmxpbmUgdm9pZCBnbHVlKGdlbl9mLCBuYW1lKShpbnQgcmIsIGludCBy YykgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAodW5saWtlbHkocmMgPT0gMzEpKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHJldHVybjsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBp ZiAocmIgIT0gMzEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSAgICAgICAgZ2VuX2hlbHBlcl8gIyMgbmFtZSAoY3B1X2ZpcltyY10sIGNwdV9maXJb cmJdKTsgICAgXAotICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotICAgICAgICBUQ0d2IHRtcCA9IHRjZ19jb25zdF9pNjQo MCk7ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBnZW5faGVscGVyXyAjIyBu YW1lIChjcHVfZmlyW3JjXSwgdG1wKTsgICAgICAgICAgICBcCi0gICAgICAgIHRjZ190ZW1w X2ZyZWUodG1wKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisjZGVmaW5lIEZBUklUSDIobmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKK3N0YXRpYyBpbmxpbmUgdm9pZCBnbHVlKGdlbl9mLCBuYW1lKShpbnQgcmIsIGlu dCByYykgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisgICAgaWYgKHVubGlrZWx5KHJjID09IDMxKSkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHJldHVybjsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKHJiICE9IDMxKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZ2VuX2hlbHBl cl8gIyMgbmFtZSAoY3B1X2ZpcltyY10sIGNwdV9maXJbcmJdKTsgXAorICAgIGVsc2UgeyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg IFRDR3YgdG1wID0gdGNnX2NvbnN0X2k2NCgwKTsgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgICAgZ2VuX2hlbHBlcl8gIyMgbmFtZSAoY3B1X2ZpcltyY10sIHRtcCk7ICAgICAgICAg XAorICAgICAgICB0Y2dfdGVtcF9mcmVlKHRtcCk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKIH0KLUZBUklUSDIoc3FydHMpCi1GQVJJVEgyKHNxcnRmKQotRkFSSVRI MihzcXJ0ZykKLUZBUklUSDIoc3FydHQpCi1GQVJJVEgyKGN2dGdmKQotRkFSSVRIMihjdnRn cSkKLUZBUklUSDIoY3Z0cWYpCi1GQVJJVEgyKGN2dHFnKQotRkFSSVRIMihjdnRzdCkKLUZB UklUSDIoY3Z0dHMpCi1GQVJJVEgyKGN2dHRxKQotRkFSSVRIMihjdnRxcykKLUZBUklUSDIo Y3Z0cXQpCiBGQVJJVEgyKGN2dGxxKQogRkFSSVRIMihjdnRxbCkKIEZBUklUSDIoY3Z0cWx2 KQogRkFSSVRIMihjdnRxbHN2KQogCi0jZGVmaW5lIEZBUklUSDMobmFtZSkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0YXRpYyBp bmxpbmUgdm9pZCBnbHVlKGdlbl9mLCBuYW1lKShpbnQgcmEsIGludCByYiwgaW50IHJjKSAg ICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKHVubGlrZWx5 KHJjID09IDMxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgICAgcmV0dXJuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgaWYgKHJhICE9IDMxKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKHJiICE9IDMxKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAg ICAgZ2VuX2hlbHBlcl8gIyMgbmFtZSAoY3B1X2ZpcltyY10sIGNwdV9maXJbcmFdLCBjcHVf ZmlyW3JiXSk7ICBcCi0gICAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIFRDR3Yg dG1wID0gdGNnX2NvbnN0X2k2NCgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotICAgICAgICAgICAgZ2VuX2hlbHBlcl8gIyMgbmFtZSAoY3B1X2ZpcltyY10sIGNw dV9maXJbcmFdLCB0bXApOyAgICAgICAgICBcCi0gICAgICAgICAgICB0Y2dfdGVtcF9mcmVl KHRtcCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg ICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIFRD R3YgdG1wID0gdGNnX2NvbnN0X2k2NCgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSAgICAgICAgaWYgKHJiICE9IDMxKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZ2VuX2hl bHBlcl8gIyMgbmFtZSAoY3B1X2ZpcltyY10sIHRtcCwgY3B1X2ZpcltyYl0pOyAgICAgICAg ICBcCi0gICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGdlbl9oZWxwZXJfICMj IG5hbWUgKGNwdV9maXJbcmNdLCB0bXAsIHRtcCk7ICAgICAgICAgICAgICAgICAgIFwKLSAg ICAgICAgdGNnX3RlbXBfZnJlZSh0bXApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIFFG QVJJVEgyKG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorc3RhdGljIGlubGluZSB2b2lkIGdsdWUoZ2VuX2YsIG5hbWUpKGludCByYiwgaW50IHJj LCBpbnQgb3BjKSAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVENHdl9pMzIgcXVhbHM7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICh1bmxp a2VseShyYyA9PSAzMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KyAgICAgIHJldHVybjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisgICAgcXVhbHMgPSB0Y2dfY29uc3RfaTMyKG9wYyAmIH4weDNmKTsg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChyYiAhPSAzMSkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZ2VuX2hl bHBlcl8gIyMgbmFtZSAoY3B1X2ZpcltyY10sIGNwdV9maXJbcmJdLCBxdWFscyk7ICBcCisg ICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICBUQ0d2IHRtcCA9IHRjZ19jb25zdF9pNjQoMCk7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZ2VuX2hlbHBlcl8gIyMgbmFtZSAo Y3B1X2ZpcltyY10sIHRtcCwgcXVhbHMpOyAgICAgICAgICBcCisgICAgICAgIHRjZ190ZW1w X2ZyZWUodG1wKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICB0Y2dfdGVtcF9mcmVlX2kzMihxdWFscyk7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCit9CitRRkFSSVRIMihzcXJ0cykKK1FGQVJJVEgyKHNx cnRmKQorUUZBUklUSDIoc3FydGcpCitRRkFSSVRIMihzcXJ0dCkKK1FGQVJJVEgyKGN2dGdm KQorUUZBUklUSDIoY3Z0Z3EpCitRRkFSSVRIMihjdnRxZikKK1FGQVJJVEgyKGN2dHFnKQor UUZBUklUSDIoY3Z0c3QpCitRRkFSSVRIMihjdnR0cykKK1FGQVJJVEgyKGN2dHRxKQorUUZB UklUSDIoY3Z0cXMpCitRRkFSSVRIMihjdnRxdCkKKworI2RlZmluZSBGQVJJVEgzKG5hbWUp ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3N0YXRpYyBp bmxpbmUgdm9pZCBnbHVlKGdlbl9mLCBuYW1lKShpbnQgcmEsIGludCByYiwgaW50IHJjKSAg ICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgIFRDR3YgemVybywgdGEsIHRiOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAodW5saWtlbHkocmMgPT0g MzEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJl dHVybjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorICAgIHRhID0gY3B1X2ZpcltyYV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICB0YiA9IGNwdV9maXJbcmJdOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKHVubGlrZWx5KHJhID09IDMx KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB6ZXJv ID0gdGNnX2NvbnN0X2k2NCgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KyAgICAgICAgdGEgPSB6ZXJvOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICh1bmxpa2VseShyYiA9PSAzMSkp IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHJh ICE9IDMxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgICAgICAgICB6ZXJvID0gdGNnX2NvbnN0X2k2NCgwKTsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICB0YiA9IHplcm87ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ2VuX2hlbHBlcl8g IyMgbmFtZSAoY3B1X2ZpcltyY10sIHRhLCB0Yik7ICAgICAgICAgICAgICAgICAgXAorICAg IGlmIChyYSA9PSAzMSB8fCByYiA9PSAzMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgICAgdGNnX3RlbXBfZnJlZSh6ZXJvKTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCiB9Ci0KLUZBUklUSDMoYWRkZikKLUZBUklUSDMoc3Vi ZikKLUZBUklUSDMobXVsZikKLUZBUklUSDMoZGl2ZikKLUZBUklUSDMoYWRkZykKLUZBUklU SDMoc3ViZykKLUZBUklUSDMobXVsZykKLUZBUklUSDMoZGl2ZykKIEZBUklUSDMoY21wZ2Vx KQogRkFSSVRIMyhjbXBnbHQpCiBGQVJJVEgzKGNtcGdsZSkKLUZBUklUSDMoYWRkcykKLUZB UklUSDMoc3VicykKLUZBUklUSDMobXVscykKLUZBUklUSDMoZGl2cykKLUZBUklUSDMoYWRk dCkKLUZBUklUSDMoc3VidCkKLUZBUklUSDMobXVsdCkKLUZBUklUSDMoZGl2dCkKIEZBUklU SDMoY21wdHVuKQogRkFSSVRIMyhjbXB0ZXEpCiBGQVJJVEgzKGNtcHRsdCkKQEAgLTUyNSw2 ICs1MjMsNDcgQEAgRkFSSVRIMyhjcHlzKQogRkFSSVRIMyhjcHlzbikKIEZBUklUSDMoY3B5 c2UpCiAKKyNkZWZpbmUgUUZBUklUSDMobmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3N0YXRpYyBpbmxpbmUgdm9pZCBnbHVlKGdl bl9mLCBuYW1lKShpbnQgcmEsIGludCByYiwgaW50IHJjLCBpbnQgb3BjKSAgIFwKK3sgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICBUQ0d2IHplcm8sIHRhLCB0YjsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBUQ0d2X2kzMiBxdWFs czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICBpZiAodW5saWtlbHkocmMgPT0gMzEpKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0YSA9 IGNwdV9maXJbcmFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICB0YiA9IGNwdV9maXJbcmJdOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAodW5saWtlbHkocmEg PT0gMzEpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KyAgICAgICAgemVybyA9IHRjZ19jb25zdF9pNjQoMCk7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdGEgPSB6ZXJvOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICBpZiAodW5saWtlbHkocmIgPT0gMzEpKSB7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHJhICE9IDMxKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgICAgICAgIHplcm8gPSB0Y2dfY29uc3RfaTY0KDApOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdGIgPSB6ZXJvOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICBxdWFscyA9IHRjZ19jb25zdF9pMzIob3BjICYgfjB4M2YpOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnZW5faGVscGVyXyAjIyBuYW1lIChj cHVfZmlyW3JjXSwgdGEsIHRiLCBxdWFscyk7ICAgICAgICAgICAgICAgICAgIFwKKyAgICB0 Y2dfdGVtcF9mcmVlX2kzMihxdWFscyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICBpZiAocmEgPT0gMzEgfHwgcmIgPT0gMzEpICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdGNnX3RlbXBf ZnJlZSh6ZXJvKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKK30KK1FGQVJJVEgzKGFkZGYpCitRRkFSSVRIMyhzdWJmKQorUUZBUklUSDMobXVsZikK K1FGQVJJVEgzKGRpdmYpCitRRkFSSVRIMyhhZGRnKQorUUZBUklUSDMoc3ViZykKK1FGQVJJ VEgzKG11bGcpCitRRkFSSVRIMyhkaXZnKQorUUZBUklUSDMoYWRkcykKK1FGQVJJVEgzKHN1 YnMpCitRRkFSSVRIMyhtdWxzKQorUUZBUklUSDMoZGl2cykKK1FGQVJJVEgzKGFkZHQpCitR RkFSSVRIMyhzdWJ0KQorUUZBUklUSDMobXVsdCkKK1FGQVJJVEgzKGRpdnQpCisKIHN0YXRp YyBpbmxpbmUgdWludDY0X3QgemFwbm90X21hc2sodWludDhfdCBsaXQpCiB7CiAgICAgdWlu dDY0X3QgbWFzayA9IDA7CkBAIC0xNjA3LDcgKzE2NDYsNyBAQCBzdGF0aWMgaW5saW5lIGlu dCB0cmFuc2xhdGVfb25lKERpc2FzQ29udGV4dCAqY3R4LCB1aW50MzJfdCBpbnNuKQogICAg ICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMHgxNDoKLSAgICAgICAgc3dpdGNo IChmcGZuKSB7IC8qIGYxMSAmIDB4M0YgKi8KKyAgICAgICAgc3dpdGNoIChmcGZuKSB7IC8q IGZuMTEgJiAweDNGICovCiAgICAgICAgIGNhc2UgMHgwNDoKICAgICAgICAgICAgIC8qIElU T0ZTICovCiAgICAgICAgICAgICBpZiAoIShjdHgtPmFtYXNrICYgQU1BU0tfRklYKSkKQEAg LTE2MjYsMTMgKzE2NjUsMTMgQEAgc3RhdGljIGlubGluZSBpbnQgdHJhbnNsYXRlX29uZShE aXNhc0NvbnRleHQgKmN0eCwgdWludDMyX3QgaW5zbikKICAgICAgICAgICAgIC8qIFNRUlRG ICovCiAgICAgICAgICAgICBpZiAoIShjdHgtPmFtYXNrICYgQU1BU0tfRklYKSkKICAgICAg ICAgICAgICAgICBnb3RvIGludmFsaWRfb3BjOwotICAgICAgICAgICAgZ2VuX2ZzcXJ0Zihy YiwgcmMpOworICAgICAgICAgICAgZ2VuX2ZzcXJ0ZihyYiwgcmMsIGZuMTEpOwogICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHgwQjoKICAgICAgICAgICAgIC8qIFNRUlRT ICovCiAgICAgICAgICAgICBpZiAoIShjdHgtPmFtYXNrICYgQU1BU0tfRklYKSkKICAgICAg ICAgICAgICAgICBnb3RvIGludmFsaWRfb3BjOwotICAgICAgICAgICAgZ2VuX2ZzcXJ0cyhy YiwgcmMpOworICAgICAgICAgICAgZ2VuX2ZzcXJ0cyhyYiwgcmMsIGZuMTEpOwogICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHgxNDoKICAgICAgICAgICAgIC8qIElUT0ZG ICovCkBAIC0xNjYzLDEzICsxNzAyLDEzIEBAIHN0YXRpYyBpbmxpbmUgaW50IHRyYW5zbGF0 ZV9vbmUoRGlzYXNDb250ZXh0ICpjdHgsIHVpbnQzMl90IGluc24pCiAgICAgICAgICAgICAv KiBTUVJURyAqLwogICAgICAgICAgICAgaWYgKCEoY3R4LT5hbWFzayAmIEFNQVNLX0ZJWCkp CiAgICAgICAgICAgICAgICAgZ290byBpbnZhbGlkX29wYzsKLSAgICAgICAgICAgIGdlbl9m c3FydGcocmIsIHJjKTsKKyAgICAgICAgICAgIGdlbl9mc3FydGcocmIsIHJjLCBmbjExKTsK ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDB4MDJCOgogICAgICAgICAgICAg LyogU1FSVFQgKi8KICAgICAgICAgICAgIGlmICghKGN0eC0+YW1hc2sgJiBBTUFTS19GSVgp KQogICAgICAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGM7Ci0gICAgICAgICAgICBnZW5f ZnNxcnR0KHJiLCByYyk7CisgICAgICAgICAgICBnZW5fZnNxcnR0KHJiLCByYywgZm4xMSk7 CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGdv dG8gaW52YWxpZF9vcGM7CkBAIC0xNjc3LDQ3ICsxNzE2LDQyIEBAIHN0YXRpYyBpbmxpbmUg aW50IHRyYW5zbGF0ZV9vbmUoRGlzYXNDb250ZXh0ICpjdHgsIHVpbnQzMl90IGluc24pCiAg ICAgICAgIGJyZWFrOwogICAgIGNhc2UgMHgxNToKICAgICAgICAgLyogVkFYIGZsb2F0aW5n IHBvaW50ICovCi0gICAgICAgIC8qIFhYWDogcm91bmRpbmcgbW9kZSBhbmQgdHJhcCBhcmUg aWdub3JlZCAoISkgKi8KLSAgICAgICAgc3dpdGNoIChmcGZuKSB7IC8qIGYxMSAmIDB4M0Yg Ki8KKyAgICAgICAgc3dpdGNoIChmcGZuKSB7IC8qIGZuMTEgJiAweDNGICovCiAgICAgICAg IGNhc2UgMHgwMDoKICAgICAgICAgICAgIC8qIEFEREYgKi8KLSAgICAgICAgICAgIGdlbl9m YWRkZihyYSwgcmIsIHJjKTsKKyAgICAgICAgICAgIGdlbl9mYWRkZihyYSwgcmIsIHJjLCBm bjExKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDB4MDE6CiAgICAgICAg ICAgICAvKiBTVUJGICovCi0gICAgICAgICAgICBnZW5fZnN1YmYocmEsIHJiLCByYyk7Cisg ICAgICAgICAgICBnZW5fZnN1YmYocmEsIHJiLCByYywgZm4xMSk7CiAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgY2FzZSAweDAyOgogICAgICAgICAgICAgLyogTVVMRiAqLwotICAg ICAgICAgICAgZ2VuX2ZtdWxmKHJhLCByYiwgcmMpOworICAgICAgICAgICAgZ2VuX2ZtdWxm KHJhLCByYiwgcmMsIGZuMTEpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug MHgwMzoKICAgICAgICAgICAgIC8qIERJVkYgKi8KLSAgICAgICAgICAgIGdlbl9mZGl2Zihy YSwgcmIsIHJjKTsKKyAgICAgICAgICAgIGdlbl9mZGl2ZihyYSwgcmIsIHJjLCBmbjExKTsK ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDB4MUU6CiAgICAgICAgICAgICAv KiBDVlRERyAqLwotI2lmIDAgLy8gVE9ETwotICAgICAgICAgICAgZ2VuX2ZjdnRkZyhyYiwg cmMpOwotI2Vsc2UKKyAgICAgICAgICAgIC8qIFRPRE8gKi8KICAgICAgICAgICAgIGdvdG8g aW52YWxpZF9vcGM7Ci0jZW5kaWYKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl IDB4MjA6CiAgICAgICAgICAgICAvKiBBRERHICovCi0gICAgICAgICAgICBnZW5fZmFkZGco cmEsIHJiLCByYyk7CisgICAgICAgICAgICBnZW5fZmFkZGcocmEsIHJiLCByYywgZm4xMSk7 CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAweDIxOgogICAgICAgICAgICAg LyogU1VCRyAqLwotICAgICAgICAgICAgZ2VuX2ZzdWJnKHJhLCByYiwgcmMpOworICAgICAg ICAgICAgZ2VuX2ZzdWJnKHJhLCByYiwgcmMsIGZuMTEpOwogICAgICAgICAgICAgYnJlYWs7 CiAgICAgICAgIGNhc2UgMHgyMjoKICAgICAgICAgICAgIC8qIE1VTEcgKi8KLSAgICAgICAg ICAgIGdlbl9mbXVsZyhyYSwgcmIsIHJjKTsKKyAgICAgICAgICAgIGdlbl9mbXVsZyhyYSwg cmIsIHJjLCBmbjExKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDB4MjM6 CiAgICAgICAgICAgICAvKiBESVZHICovCi0gICAgICAgICAgICBnZW5fZmRpdmcocmEsIHJi LCByYyk7CisgICAgICAgICAgICBnZW5fZmRpdmcocmEsIHJiLCByYywgZm4xMSk7CiAgICAg ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAweDI1OgogICAgICAgICAgICAgLyogQ01Q R0VRICovCkBAIC0xNzMzLDI3ICsxNzY3LDIzIEBAIHN0YXRpYyBpbmxpbmUgaW50IHRyYW5z bGF0ZV9vbmUoRGlzYXNDb250ZXh0ICpjdHgsIHVpbnQzMl90IGluc24pCiAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgY2FzZSAweDJDOgogICAgICAgICAgICAgLyogQ1ZUR0YgKi8K LSAgICAgICAgICAgIGdlbl9mY3Z0Z2YocmIsIHJjKTsKKyAgICAgICAgICAgIGdlbl9mY3Z0 Z2YocmIsIHJjLCBmbjExKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDB4 MkQ6CiAgICAgICAgICAgICAvKiBDVlRHRCAqLwotI2lmIDAgLy8gVE9ETwotICAgICAgICAg ICAgZ2VuX2ZjdnRnZChyYiwgcmMpOwotI2Vsc2UKKyAgICAgICAgICAgIC8qIFRPRE8gKi8K ICAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGM7Ci0jZW5kaWYKLSAgICAgICAgICAgIGJy ZWFrOwogICAgICAgICBjYXNlIDB4MkY6CiAgICAgICAgICAgICAvKiBDVlRHUSAqLwotICAg ICAgICAgICAgZ2VuX2ZjdnRncShyYiwgcmMpOworICAgICAgICAgICAgZ2VuX2ZjdnRncShy YiwgcmMsIGZuMTEpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHgzQzoK ICAgICAgICAgICAgIC8qIENWVFFGICovCi0gICAgICAgICAgICBnZW5fZmN2dHFmKHJiLCBy Yyk7CisgICAgICAgICAgICBnZW5fZmN2dHFmKHJiLCByYywgZm4xMSk7CiAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgY2FzZSAweDNFOgogICAgICAgICAgICAgLyogQ1ZUUUcgKi8K LSAgICAgICAgICAgIGdlbl9mY3Z0cWcocmIsIHJjKTsKKyAgICAgICAgICAgIGdlbl9mY3Z0 cWcocmIsIHJjLCBmbjExKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0 OgogICAgICAgICAgICAgZ290byBpbnZhbGlkX29wYzsKQEAgLTE3NjEsMzkgKzE3OTEsMzgg QEAgc3RhdGljIGlubGluZSBpbnQgdHJhbnNsYXRlX29uZShEaXNhc0NvbnRleHQgKmN0eCwg dWludDMyX3QgaW5zbikKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAweDE2OgogICAgICAg ICAvKiBJRUVFIGZsb2F0aW5nLXBvaW50ICovCi0gICAgICAgIC8qIFhYWDogcm91bmRpbmcg bW9kZSBhbmQgdHJhcHMgYXJlIGlnbm9yZWQgKCEpICovCi0gICAgICAgIHN3aXRjaCAoZnBm bikgeyAvKiBmMTEgJiAweDNGICovCisgICAgICAgIHN3aXRjaCAoZnBmbikgeyAvKiBmbjEx ICYgMHgzRiAqLwogICAgICAgICBjYXNlIDB4MDA6CiAgICAgICAgICAgICAvKiBBRERTICov Ci0gICAgICAgICAgICBnZW5fZmFkZHMocmEsIHJiLCByYyk7CisgICAgICAgICAgICBnZW5f ZmFkZHMocmEsIHJiLCByYywgZm4xMSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg Y2FzZSAweDAxOgogICAgICAgICAgICAgLyogU1VCUyAqLwotICAgICAgICAgICAgZ2VuX2Zz dWJzKHJhLCByYiwgcmMpOworICAgICAgICAgICAgZ2VuX2ZzdWJzKHJhLCByYiwgcmMsIGZu MTEpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHgwMjoKICAgICAgICAg ICAgIC8qIE1VTFMgKi8KLSAgICAgICAgICAgIGdlbl9mbXVscyhyYSwgcmIsIHJjKTsKKyAg ICAgICAgICAgIGdlbl9mbXVscyhyYSwgcmIsIHJjLCBmbjExKTsKICAgICAgICAgICAgIGJy ZWFrOwogICAgICAgICBjYXNlIDB4MDM6CiAgICAgICAgICAgICAvKiBESVZTICovCi0gICAg ICAgICAgICBnZW5fZmRpdnMocmEsIHJiLCByYyk7CisgICAgICAgICAgICBnZW5fZmRpdnMo cmEsIHJiLCByYywgZm4xMSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAw eDIwOgogICAgICAgICAgICAgLyogQUREVCAqLwotICAgICAgICAgICAgZ2VuX2ZhZGR0KHJh LCByYiwgcmMpOworICAgICAgICAgICAgZ2VuX2ZhZGR0KHJhLCByYiwgcmMsIGZuMTEpOwog ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHgyMToKICAgICAgICAgICAgIC8q IFNVQlQgKi8KLSAgICAgICAgICAgIGdlbl9mc3VidChyYSwgcmIsIHJjKTsKKyAgICAgICAg ICAgIGdlbl9mc3VidChyYSwgcmIsIHJjLCBmbjExKTsKICAgICAgICAgICAgIGJyZWFrOwog ICAgICAgICBjYXNlIDB4MjI6CiAgICAgICAgICAgICAvKiBNVUxUICovCi0gICAgICAgICAg ICBnZW5fZm11bHQocmEsIHJiLCByYyk7CisgICAgICAgICAgICBnZW5fZm11bHQocmEsIHJi LCByYywgZm4xMSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAweDIzOgog ICAgICAgICAgICAgLyogRElWVCAqLwotICAgICAgICAgICAgZ2VuX2ZkaXZ0KHJhLCByYiwg cmMpOworICAgICAgICAgICAgZ2VuX2ZkaXZ0KHJhLCByYiwgcmMsIGZuMTEpOwogICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHgyNDoKICAgICAgICAgICAgIC8qIENNUFRV TiAqLwpAQCAtMTgxMiwyNiArMTg0MSwyNSBAQCBzdGF0aWMgaW5saW5lIGludCB0cmFuc2xh dGVfb25lKERpc2FzQ29udGV4dCAqY3R4LCB1aW50MzJfdCBpbnNuKQogICAgICAgICAgICAg Z2VuX2ZjbXB0bGUocmEsIHJiLCByYyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg Y2FzZSAweDJDOgotICAgICAgICAgICAgLyogWFhYOiBpbmNvcnJlY3QgKi8KICAgICAgICAg ICAgIGlmIChmbjExID09IDB4MkFDIHx8IGZuMTEgPT0gMHg2QUMpIHsKICAgICAgICAgICAg ICAgICAvKiBDVlRTVCAqLwotICAgICAgICAgICAgICAgIGdlbl9mY3Z0c3QocmIsIHJjKTsK KyAgICAgICAgICAgICAgICBnZW5fZmN2dHN0KHJiLCByYywgZm4xMSk7CiAgICAgICAgICAg ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8qIENWVFRTICovCi0gICAgICAgICAgICAg ICAgZ2VuX2ZjdnR0cyhyYiwgcmMpOworICAgICAgICAgICAgICAgIGdlbl9mY3Z0dHMocmIs IHJjLCBmbjExKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICBjYXNlIDB4MkY6CiAgICAgICAgICAgICAvKiBDVlRUUSAqLwotICAgICAgICAgICAgZ2Vu X2ZjdnR0cShyYiwgcmMpOworICAgICAgICAgICAgZ2VuX2ZjdnR0cShyYiwgcmMsIGZuMTEp OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHgzQzoKICAgICAgICAgICAg IC8qIENWVFFTICovCi0gICAgICAgICAgICBnZW5fZmN2dHFzKHJiLCByYyk7CisgICAgICAg ICAgICBnZW5fZmN2dHFzKHJiLCByYywgZm4xMSk7CiAgICAgICAgICAgICBicmVhazsKICAg ICAgICAgY2FzZSAweDNFOgogICAgICAgICAgICAgLyogQ1ZUUVQgKi8KLSAgICAgICAgICAg IGdlbl9mY3Z0cXQocmIsIHJjKTsKKyAgICAgICAgICAgIGdlbl9mY3Z0cXQocmIsIHJjLCBm bjExKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAg ICAgZ290byBpbnZhbGlkX29wYzsK --------------060302090809060303090104 Content-Type: text/plain; name="commit-fpu-2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="commit-fpu-2" Y29tbWl0IGEwY2MxOGJlNTgzNzMzOWFkNmRhMjU3YTkzNTk3ZmM4MWEyOGMwNDIKQXV0aG9y OiBSaWNoYXJkIEhlbmRlcnNvbiA8cnRoQHR3aWRkbGUubmV0PgpEYXRlOiAgIE1vbiBEZWMg MTQgMDk6MzE6MjIgMjAwOSAtMDgwMAoKICAgIHRhcmdldC1hbHBoYTogRml4IGN2dHRxLgog ICAgCiAgICBUaGUgYWxwaGEgZnAtaW50ZWdlciBjb252ZXJzaW9uIGluc3RydWN0aW9uIHRy dW5jYXRlcwogICAgaW5zdGVhZCBvZiBzYXR1cmF0aW5nIGxpa2UgdGhlIGdlbmVyaWMgSUVF RSB2ZXJzaW9uIGRvZXMuCgpkaWZmIC0tZ2l0IGEvdGFyZ2V0LWFscGhhL29wX2hlbHBlci5j IGIvdGFyZ2V0LWFscGhhL29wX2hlbHBlci5jCmluZGV4IGIxMmM3ODMuLjNiYjAwMjAgMTAw NjQ0Ci0tLSBhL3RhcmdldC1hbHBoYS9vcF9oZWxwZXIuYworKysgYi90YXJnZXQtYWxwaGEv b3BfaGVscGVyLmMKQEAgLTI0LDcgKzI0LDcgQEAKIAogLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLwogLyogRXhjZXB0aW9ucyBwcm9jZXNzaW5nIGhlbHBlcnMgKi8KLXZvaWQgaGVscGVy X2V4Y3AgKGludCBleGNwLCBpbnQgZXJyb3IpCit2b2lkIFFFTVVfTk9SRVRVUk4gaGVscGVy X2V4Y3AgKGludCBleGNwLCBpbnQgZXJyb3IpCiB7CiAgICAgZW52LT5leGNlcHRpb25faW5k ZXggPSBleGNwOwogICAgIGVudi0+ZXJyb3JfY29kZSA9IGVycm9yOwpAQCAtMTE2NiwxNSAr MTE2NiwxMTIgQEAgdWludDY0X3QgaGVscGVyX2N2dHFzICh1aW50NjRfdCBhLCB1aW50MzJf dCBxdWFscykKIAogdWludDY0X3QgaGVscGVyX2N2dHRxICh1aW50NjRfdCBhLCB1aW50MzJf dCBxdWFscykKIHsKLSAgICBmbG9hdDY0IGZhOwotICAgIHVpbnQ2NF90IHJldDsKLSAgICB1 aW50MzJfdCB0b2tlbjsKLQotICAgIGZhID0gdF90b19mbG9hdDY0KGEpOworICAgIHVpbnQ2 NF90IHJldCwgZnJhYzsKKyAgICB1aW50MzJfdCB0b2tlbiwgZXhwLCBzaWduLCBleGMgPSAw OwogCiAgICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7Ci0gICAgZmxvYXQ2NF9pbnB1dChx dWFscywgZmEpOwotICAgIHJldCA9IGZsb2F0NjRfdG9faW50NjQoZmEsICZGUF9TVEFUVVMp OworCisgICAgLyogQWxwaGEgaW50ZWdlciBjb252ZXJzaW9uIGRvZXMgbm90IHNhdHVyYXRl LCBhcyB0aGUgZ2VuZXJpYyByb3V0aW5lCisgICAgICAgZG9lcy4gIEluc3RlYWQgaXQgc3Vw cGxpZXMgYSB0cnVuY2F0ZWQgcmVzdWx0LiAgVGhpcyBmYWN0IGlzIHJlbGllZAorICAgICAg IHVwb24gYnkgR0NDIGluIHRoYXQgd2l0aG91dCBvdmVyZmxvdyBlbmFibGVkIHdlIGNhbiBn ZXQgdW5zaWduZWQKKyAgICAgICBjb252ZXJzaW9uIGZvciBmcmVlIHdpdGggdGhlIHNhbWUg aW5zdHJ1Y3Rpb24uICAqLworCisgICAgc2lnbiA9IChhID4+IDYzKTsKKyAgICBleHAgPSAo dWludDMyX3QpKGEgPj4gNTIpICYgMHg3ZmY7CisgICAgZnJhYyA9IGEgJiAweGZmZmZmZmZm ZmZmZmZ1bGw7CisKKyAgICBpZiAoZXhwID09IDApIHsKKyAgICAgICAgcmV0ID0gMDsKKyAg ICAgICAgaWYgKGZyYWMgIT0gMCkgeworICAgICAgICAgICAgLyogPz8/IElmIEROWiBzZXQs IG1hcCB0byB6ZXJvIHdpdGhvdXQgdHJhcHBpbmcuICAqLworICAgICAgICAgICAgLyogPz8/ IEZpZ3VyZSBvdXQgd2hhdCBraW5kIG9mIGV4Y2VwdGlvbiBzaWduYWwgdG8gc2VuZC4gICov CisgICAgICAgICAgICBpZiAoIShxdWFscyAmIDB4NDAwKSkKKyAgICAgICAgICAgICAgICBo ZWxwZXJfZXhjcChFWENQX0FSSVRILCAwKTsKKyAgICAgICAgICAgIGdvdG8gZG9fdW5kZXJm bG93OworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChleHAgPT0gMHg3ZmYpIHsKKyAgICAg ICAgLyogSW4ga2VlcGluZyB3aXRoIHRoZSB0cnVuY2F0aW9uIHJlc3VsdCwgYm90aCBpbmZp bml0eSBhbmQgTmFOCisgICAgICAgICAgIGdpdmUgcmVzdWx0IG9mIHplcm8uICBTZWUgVGFi bGUgQi0yIGluIHRoZSBBbHBoYSBBcmNoaXRlY3R1cmUKKyAgICAgICAgICAgSGFuZGJvb2su ICAqLworICAgICAgICByZXQgPSAwOworICAgICAgICBleGMgPSBmbG9hdF9mbGFnX2ludmFs aWQ7CisKKyAgICAgICAgLyogV2l0aG91dCAvcyBxdWFsaWZpZXIsIGJvdGggSW5mIGFuZCBO YU4gdHJhcC4gIFNOYU4gYWx3YXlzIHRyYXBzLiAqLworICAgICAgICBpZiAoIShxdWFscyAm IDB4NDAwKSB8fCAoZnJhYyAmIDB4NDAwMDAwMDAwMDAwMHVsbCkpCisgICAgICAgICAgICBo ZWxwZXJfZXhjcChFWENQX0FSSVRILCAwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnQz Ml90IHNoaWZ0OworCisgICAgICAgIC8qIFJlc3RvcmUgaW1wbGljaXQgYml0LiAgKi8KKyAg ICAgICAgZnJhYyB8PSAweDEwMDAwMDAwMDAwMDAwdWxsOworCisgICAgICAgIHNoaWZ0ID0g ZXhwIC0gMTAyMyAtIDUyOworICAgICAgICBpZiAoc2hpZnQgPiAwKSB7CisgICAgICAgICAg ICAvKiBJbiB0aGlzIGNhc2UgdGhlIG51bWJlciBpcyBzbyBsYXJnZSB0aGF0IHdlIG11c3Qg c2hpZnQKKyAgICAgICAgICAgICAgIHRoZSBmcmFjdGlvbiBsZWZ0LiAgVGhlcmUgaXMgbm8g cm91bmRpbmcgdG8gZG8sIGJ1dCB3ZQorICAgICAgICAgICAgICAgbXVzdCBzdGlsbCBzZXQg aW5leGFjdCBmb3Igb3ZlcmZsb3cuICAqLworICAgICAgICAgICAgaWYgKHNoaWZ0IDwgNjMp IHsKKyAgICAgICAgICAgICAgICByZXQgPSBmcmFjIDw8IHNoaWZ0OworICAgICAgICAgICAg ICAgIGlmICgocmV0ID4+IHNoaWZ0KSAhPSBmcmFjKQorICAgICAgICAgICAgICAgICAgICBl eGMgPSBmbG9hdF9mbGFnX2luZXhhY3Q7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgICAgIGV4YyA9IGZsb2F0X2ZsYWdfaW5leGFjdDsKKyAgICAgICAgICAgICAgICBy ZXQgPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHNoaWZ0ID09IDAp IHsKKyAgICAgICAgICAgIC8qIFRoZSBleHBvbmVudCBpcyBleGFjdGx5IHJpZ2h0IGZvciB0 aGUgNTItYml0IGZyYWN0aW9uLiAgKi8KKyAgICAgICAgICAgIHJldCA9IGZyYWM7CisgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICB1aW50NjRfdCByb3VuZDsKKworICAgICAgICAg ICAgLyogSW4gdGhpcyBjYXNlIHRoZSBudW1iZXIgaXMgc21hbGxlciB0aGFuIHRoZSBmcmFj dGlvbiBhcworICAgICAgICAgICAgICAgcmVwcmVzZW50ZWQgYnkgdGhlIDUyIGJpdCBudW1i ZXIuICBIZXJlIHdlIG11c3QgdGhpbmsgCisgICAgICAgICAgICAgICBhYm91dCByb3VuZGlu ZyB0aGUgcmVzdWx0LiAgSGFuZGxlIHRoaXMgYnkgc2hpZnRpbmcgdGhlCisgICAgICAgICAg ICAgICBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIG51bWJlciBpbnRvIHRoZSBoaWdoIGJpdHMg b2YgUk9VTkQuCisgICAgICAgICAgICAgICBUaGlzIHdpbGwgbGV0IHVzIGVmZmljaWVudGx5 IGhhbmRsZSByb3VuZC10by1uZWFyZXN0LiAgKi8KKyAgICAgICAgICAgIHNoaWZ0ID0gLXNo aWZ0OworICAgICAgICAgICAgaWYgKHNoaWZ0IDwgNjMpIHsKKyAgICAgICAgICAgICAgICBy ZXQgPSBmcmFjID4+IHNoaWZ0OworICAgICAgICAgICAgICAgIHJvdW5kID0gZnJhYyA8PCAo NjQgLSBzaGlmdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZG9fdW5k ZXJmbG93OgorICAgICAgICAgICAgICAgIC8qIFRoZSBleHBvbmVudCBpcyBzbyBzbWFsbCB3 ZSBzaGlmdCBvdXQgZXZlcnl0aGluZy4gICovCisgICAgICAgICAgICAgICAgcmV0ID0gMDsK KyAgICAgICAgICAgICAgICByb3VuZCA9IDE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg ICAgIGlmIChyb3VuZCkgeworICAgICAgICAgICAgICAgIGV4YyA9IGZsb2F0X2ZsYWdfaW5l eGFjdDsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKEZQX1NUQVRVUy5mbG9hdF9yb3VuZGlu Z19tb2RlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBmbG9hdF9yb3VuZF9uZWFyZXN0X2V2 ZW46CisgICAgICAgICAgICAgICAgICAgIGlmIChyb3VuZCA9PSAoMXVsbCA8PCA2MykpIHsK KyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRoZSByZW1haW5pbmcgZnJhY3Rpb24gaXMg ZXhhY3RseSAwLjU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICByb3VuZCB0byBldmVu LiAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldCArPSAocmV0ICYgMSk7CisgICAg ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocm91bmQgPiAoMXVsbCA8PCA2MykpIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgIHJldCArPSAxOworICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgZmxv YXRfcm91bmRfdG9femVybzoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg ICAgICAgICAgY2FzZSBmbG9hdF9yb3VuZF91cDoKKyAgICAgICAgICAgICAgICAgICAgaWYg KCFzaWduKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0ICs9IDE7CisgICAgICAgICAg ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgZmxvYXRfcm91bmRfZG93 bjoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNpZ24pCisgICAgICAgICAgICAgICAgICAg ICAgICByZXQgKz0gMTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHNpZ24p CisgICAgICAgICAgICByZXQgPSAtcmV0OworICAgIH0KKworICAgIGlmIChleGMpCisgICAg ICAgIGZsb2F0X3JhaXNlKGV4YywgJkZQX1NUQVRVUyk7CiAgICAgZW5kX2ZwKHF1YWxzLCB0 b2tlbik7CiAKICAgICByZXR1cm4gcmV0Owo= --------------060302090809060303090104--