ZGlmZiAtLWdpdCBhL2F1dG8vY2MvYWNjIGIvYXV0by9jYy9hY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjMyNWJjNQotLS0gL2Rldi9udWxsCisrKyBiL2F1dG8vY2MvYWNjCkBAIC0wLDAgKzEsMTQgQEAKKworIyBDb3B5cmlnaHQgKEMpIElnb3IgU3lzb2V2CisKKworIyBhQ0M6IEhQIEFOU0kgQysrIEIzOTEwQiBBLjAzLjU1LjAyCisKKyMgQzg5IG1vZGUKKworQ0ZMQUdTPSIkQ0ZMQUdTIC1BZSIKK0NDX1RFU1RfRkxBR1M9Ii1BZSIKKworUENSRV9PUFQ9IiRQQ1JFX09QVCAtQWUiCitaTElCX09QVD0iJFpMSUJfT1BUIC1BZSIKK01ENV9PUFQ9IiRNRDVfT1BUIC1BZSIKZGlmZiAtLWdpdCBhL2F1dG8vY2MvY2NjIGIvYXV0by9jYy9jY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY4MDE1ZgotLS0gL2Rldi9udWxsCisrKyBiL2F1dG8vY2MvY2NjCkBAIC0wLDAgKzEsNDEgQEAKKworIyBDb3B5cmlnaHQgKEMpIElnb3IgU3lzb2V2CisKKworIyBDb21wYXEgQyBWNi41LTIwNworCituZ3hfaW5jbHVkZV9vcHQ9Ii1JIgorCisjIHdhcm5pbmdzCisKK0NGTEFHUz0iJENGTEFHUyAtbXNnX2VuYWJsZSBsZXZlbDYgLW1zZ19mYXRhbCBsZXZlbDYiCisKK0NGTEFHUz0iJENGTEFHUyAtbXNnX2Rpc2FibGUgdW5uZWNpbmNsIgorQ0ZMQUdTPSIkQ0ZMQUdTIC1tc2dfZGlzYWJsZSBuZXN0aW5jbCIKK0NGTEFHUz0iJENGTEFHUyAtbXNnX2Rpc2FibGUgdW51c2VkaW5jbCIKK0NGTEFHUz0iJENGTEFHUyAtbXNnX2Rpc2FibGUgdW5rbm93bm1hY3JvIgorQ0ZMQUdTPSIkQ0ZMQUdTIC1tc2dfZGlzYWJsZSBzdHJjdHBhZGRpbmciCitDRkxBR1M9IiRDRkxBR1MgLW1zZ19kaXNhYmxlIGFuc2lhbGlhc2Nhc3QiCitDRkxBR1M9IiRDRkxBR1MgLW1zZ19kaXNhYmxlIGlubGluZXN0b2Nsc21vZCIKK0NGTEFHUz0iJENGTEFHUyAtbXNnX2Rpc2FibGUgY3h4a2V5d29yZCIKK0NGTEFHUz0iJENGTEFHUyAtbXNnX2Rpc2FibGUgbG9uZ2xvbmdzdWZ4IgorCisjIFNUVUIKK0NGTEFHUz0iJENGTEFHUyAtbXNnX2Rpc2FibGUgdHJ1bmNpbnRjYXN0IgorQ0ZMQUdTPSIkQ0ZMQUdTIC1tc2dfZGlzYWJsZSB0cnVuY2xvbmdjYXN0IgorQ0ZMQUdTPSIkQ0ZMQUdTIC1tc2dfZGlzYWJsZSB0cnVuY2ludGFzbiIKK0NGTEFHUz0iJENGTEFHUyAtbXNnX2Rpc2FibGUgdHJ1bmNsb25naW50IgorQ0ZMQUdTPSIkQ0ZMQUdTIC1tc2dfZGlzYWJsZSBpbnRjb25jYXN0c2duIgorQ0ZMQUdTPSIkQ0ZMQUdTIC1tc2dfZGlzYWJsZSBpbnRjb25zdHNpZ24iCitDRkxBR1M9IiRDRkxBR1MgLW1zZ19kaXNhYmxlIGhleG9jdHVuc2lnbiIKK0NGTEFHUz0iJENGTEFHUyAtbXNnX2Rpc2FibGUgc3dpdGNobG9uZyIKK0NGTEFHUz0iJENGTEFHUyAtbXNnX2Rpc2FibGUgdmFsdWVwcmVzIgorQ0ZMQUdTPSIkQ0ZMQUdTIC1tc2dfZGlzYWJsZSBzdWJzY3Jib3VuZHMyIgorQ0ZMQUdTPSIkQ0ZMQUdTIC1tc2dfZGlzYWJsZSBpZ25vcmVjYWxsdmFsIgorQ0ZMQUdTPSIkQ0ZMQUdTIC1tc2dfZGlzYWJsZSBub25zdGFuZGNhc3QiCitDRkxBR1M9IiRDRkxBR1MgLW1zZ19kaXNhYmxlIGVtYmVkY29tbWVudCIKK0NGTEFHUz0iJENGTEFHUyAtbXNnX2Rpc2FibGUgdW5yZWFjaGNvZGUiCitDRkxBR1M9IiRDRkxBR1MgLW1zZ19kaXNhYmxlIHF1ZXN0Y29tcGFyZTIiCitDRkxBR1M9IiRDRkxBR1MgLW1zZ19kaXNhYmxlIHVudXNlZHRvcCIKK0NGTEFHUz0iJENGTEFHUyAtbXNnX2Rpc2FibGUgdW5yZWZkZWNsIgorQ0ZMQUdTPSIkQ0ZMQUdTIC1tc2dfZGlzYWJsZSBiaXRub3RpbnQiCmRpZmYgLS1naXQgYS9hdXRvL2NjL2NvbmYgYi9hdXRvL2NjL2NvbmYKaW5kZXggZjA2NGJjYS4uYjJlYWJlYiAxMDA2NDQKLS0tIGEvYXV0by9jYy9jb25mCisrKyBiL2F1dG8vY2MvY29uZgpAQCAtNDIsMzAgKzQyLDMwIEBACiAKICAgICBjYXNlICROR1hfQ0NfTkFNRSBpbgogICAgICAgICBnY2MpCi0gICAgICAgICAgICAjIGdjYyAyLjcuMi4zLCAyLjguMSwgMi45NS40LAotICAgICAgICAgICAgIyAgICAgMy4wLjQsIDMuMS4xLCAzLjIuMywgMy4zLjIsIDMuMy4zLCAzLjMuNCwgMy40CisgICAgICAgICAgICAjIGdjYyAyLjcuMi4zLCAyLjguMSwgMi45NS40LCBlZ2NzLTEuMS4yCisgICAgICAgICAgICAjICAgICAzLjAuNCwgMy4xLjEsIDMuMi4zLCAzLjMuMiwgMy4zLjMsIDMuMy40LCAzLjQuMCwgMy40LjIKKyAgICAgICAgICAgICMgICAgIDQuMC4wCiAKICAgICAgICAgICAgIC4gYXV0by9jYy9nY2MKICAgICAgICAgOzsKIAogICAgICAgICBpY2MpCi0gICAgICAgICAgICAjIEludGVsIEMrKyBjb21waWxlciA3LjEsIDguMAorICAgICAgICAgICAgIyBJbnRlbCBDKysgY29tcGlsZXIgNy4xLCA4LjAsIDguMQogCiAgICAgICAgICAgICAuIGF1dG8vY2MvaWNjCiAgICAgICAgIDs7CiAKICAgICAgICAgY2NjKQotIyAgICAgICAgICAgICMgQ29tcGFxIEMgVjYuNS0yMDcKLSMKLSMgICAgICAgICAgICAuIGF1dG8vY2MvY2NjCi0gICAgICAgICAgICAgbmd4X2luY2x1ZGVfb3B0PSItSSIKKyAgICAgICAgICAgICMgQ29tcGFxIEMgVjYuNS0yMDcKKworICAgICAgICAgICAgLiBhdXRvL2NjL2NjYwogICAgICAgICA7OwogCi0jICAgICAgICBhY2MpCi0jICAgICAgICAgICAgIyBhQ0M6IEhQIEFOU0kgQysrIEIzOTEwQiBBLjAzLjU1LjAyCi0jCi0jICAgICAgICAgICAgLiBhdXRvL2NjL2FjYwotIyAgICAgICAgOzsKKyAgICAgICAgYWNjKQorICAgICAgICAgICAgIyBhQ0M6IEhQIEFOU0kgQysrIEIzOTEwQiBBLjAzLjU1LjAyCisKKyAgICAgICAgICAgIC4gYXV0by9jYy9hY2MKKyAgICAgICAgOzsKIAogICAgICAgICBtc3ZjKikKICAgICAgICAgICAgICMgTVNWQysrIDYuMCBTUDIsIE1TVkMrKyBUb29sa2l0IDIwMDMKQEAgLTg3LDcgKzg3LDcgQEAKIAogICAgIGVzYWMKIAotICAgIENDX1RFU1RfRkxBR1M9JE5HWF9DQ19PUFQKKyAgICBDQ19URVNUX0ZMQUdTPSIkQ0NfVEVTVF9GTEFHUyAkTkdYX0NDX09QVCIKIAogZmkKIApAQCAtMTI0LDE2ICsxMjQsMjAgQEAKICAgICAuIGF1dG8vZmVhdHVyZQogCiAKLSAgICBuZ3hfZmVhdHVyZT0iQzk5IHZhcmlhZGljIG1hY3JvcyIKLSAgICBuZ3hfZmVhdHVyZV9uYW1lPSJOR1hfSEFWRV9DOTlfVkFSSUFESUNfTUFDUk9TIgotICAgIG5neF9mZWF0dXJlX3J1bj15ZXMKLSAgICBuZ3hfZmVhdHVyZV9pbmNzPSIjaW5jbHVkZSA8c3RkaW8uaD4KLSNkZWZpbmUgdmFyKGR1bW15LCAuLi4pIHNwcmludGYoX19WQV9BUkdTX18pIgotICAgIG5neF9mZWF0dXJlX2xpYnM9Ci0gICAgbmd4X2ZlYXR1cmVfdGVzdD0iY2hhciAgYnVmWzMwXTsgYnVmWzBdID0gJzAnOwotICAgICAgICAgICAgICAgICAgICAgIHZhcigwLCBidWYsIFwiJWRcIiwgMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZlswXSAhPSAnMScpIHJldHVybiAxIgotICAgIC4gYXV0by9mZWF0dXJlCisgICAgaWYgWyAkTkdYX0NDX05BTUUgPSAnY2NjJyBdOyB0aGVuCisgICAgICAgIGVjaG8gImNoZWNraW5nIGZvciBDOTkgdmFyaWFkaWMgbWFjcm9zIC4uLiBkaXNhYmxlZCIKKyAgICBlbHNlCisgICAgICAgIG5neF9mZWF0dXJlPSJDOTkgdmFyaWFkaWMgbWFjcm9zIgorICAgICAgICBuZ3hfZmVhdHVyZV9uYW1lPSJOR1hfSEFWRV9DOTlfVkFSSUFESUNfTUFDUk9TIgorICAgICAgICBuZ3hfZmVhdHVyZV9ydW49eWVzCisgICAgICAgIG5neF9mZWF0dXJlX2luY3M9IiNpbmNsdWRlIDxzdGRpby5oPgorI2RlZmluZSB2YXIoZHVtbXksIC4uLikgIHNwcmludGYoX19WQV9BUkdTX18pIgorICAgICAgICBuZ3hfZmVhdHVyZV9saWJzPQorICAgICAgICBuZ3hfZmVhdHVyZV90ZXN0PSJjaGFyICBidWZbMzBdOyBidWZbMF0gPSAnMCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcigwLCBidWYsIFwiJWRcIiwgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWZbMF0gIT0gJzEnKSByZXR1cm4gMSIKKyAgICAgICAgLiBhdXRvL2ZlYXR1cmUKKyAgICAgZmkKIAogCiAjICAgIG5neF9mZWF0dXJlPSJpbmxpbmUiCmRpZmYgLS1naXQgYS9hdXRvL2NvbmZpZ3VyZSBiL2F1dG8vY29uZmlndXJlCmluZGV4IGQwNDZiNTkuLmY1NGVmMjQgMTAwNzU1Ci0tLSBhL2F1dG8vY29uZmlndXJlCisrKyBiL2F1dG8vY29uZmlndXJlCkBAIC0yNyw2ICsyNyw3IEBACiAuIGF1dG8vb3MvY29uZgogCiBpZiBbICIkTkdYX1BMQVRGT1JNIiAhPSB3aW4zMiBdOyB0aGVuCisgICAgLiBhdXRvL29zL2ZlYXR1cmVzCiAgICAgLiBhdXRvL3RocmVhZHMKIGZpCiAKZGlmZiAtLWdpdCBhL2F1dG8vb3MvY29uZiBiL2F1dG8vb3MvY29uZgppbmRleCBmMmE0OWNlLi4yMjZmOGRkIDEwMDY0NAotLS0gYS9hdXRvL29zL2NvbmYKKysrIGIvYXV0by9vcy9jb25mCkBAIC0yMywxNSArMjMsNiBAQAogICAgICAgICAuIGF1dG8vb3MvZnJlZWJzZAogICAgIDs7CiAKLSAgICBEYXJ3aW46KikKLSAgICAgICAgaGF2ZT1OR1hfREFSV0lOIC4gYXV0by9oYXZlX2hlYWRlcnMKLSAgICAgICAgaGF2ZT1OR1hfSEFWRV9JTkhFUklURURfTk9OQkxPQ0sgLiBhdXRvL2hhdmUKLSAgICAgICAgQ09SRV9JTkNTPSIkVU5JWF9JTkNTIgotICAgICAgICBDT1JFX0RFUFM9IiRVTklYX0RFUFMgJFBPU0lYX0RFUFMiCi0gICAgICAgIENPUkVfU1JDUz0iJFVOSVhfU1JDUyIKLSAgICAgICAgQ1JZUFRfTElCPQotICAgIDs7Ci0KICAgICBMaW51eDoqKQogICAgICAgICAuIGF1dG8vb3MvbGludXgKICAgICA7OwpAQCAtNDQsMTEgKzM1LDM1IEBACiAgICAgICAgIC4gYXV0by9vcy93aW4zMgogICAgIDs7CiAKKyAgICBEYXJ3aW46KikKKyAgICAgICAgaGF2ZT1OR1hfREFSV0lOIC4gYXV0by9oYXZlX2hlYWRlcnMKKyAgICAgICAgaGF2ZT1OR1hfSEFWRV9JTkhFUklURURfTk9OQkxPQ0sgLiBhdXRvL2hhdmUKKyAgICAgICAgQ09SRV9JTkNTPSIkVU5JWF9JTkNTIgorICAgICAgICBDT1JFX0RFUFM9IiRVTklYX0RFUFMgJFBPU0lYX0RFUFMiCisgICAgICAgIENPUkVfU1JDUz0iJFVOSVhfU1JDUyIKKyAgICA7OworCisgICAgSFAtVVg6KikKKyAgICAgICAgIyBIUC9VWAorICAgICAgICBoYXZlPU5HWF9IUFVYIC4gYXV0by9oYXZlX2hlYWRlcnMKKyAgICAgICAgQ09SRV9JTkNTPSIkVU5JWF9JTkNTIgorICAgICAgICBDT1JFX0RFUFM9IiRVTklYX0RFUFMgJFBPU0lYX0RFUFMiCisgICAgICAgIENPUkVfU1JDUz0iJFVOSVhfU1JDUyIKKyAgICAgICAgQ0NfQVVYX0ZMQUdTPSIkQ0NfQVVYX0ZMQUdTIC1EX1hPUEVOX1NPVVJDRSAtRF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQ9MSIKKyAgICA7OworCisgICAgT1NGMToqKQorICAgICAgICAjIEhQIFRydTY0CisgICAgICAgIGhhdmU9TkdYX1RSVTY0IC4gYXV0by9oYXZlX2hlYWRlcnMKKyAgICAgICAgQ09SRV9JTkNTPSIkVU5JWF9JTkNTIgorICAgICAgICBDT1JFX0RFUFM9IiRVTklYX0RFUFMgJFBPU0lYX0RFUFMiCisgICAgICAgIENPUkVfU1JDUz0iJFVOSVhfU1JDUyIKKyAgICA7OworCiAgICAgKikKICAgICAgICAgQ09SRV9JTkNTPSIkVU5JWF9JTkNTIgogICAgICAgICBDT1JFX0RFUFM9IiRVTklYX0RFUFMgJFBPU0lYX0RFUFMiCiAgICAgICAgIENPUkVfU1JDUz0iJFVOSVhfU1JDUyIKLSAgICAgICAgQ1JZUFRfTElCPSItbGNyeXB0IgogICAgIDs7CiAKIGVzYWMKQEAgLTU2LDExOSArNzEsOCBAQAogCiBjYXNlICIkTkdYX01BQ0hJTkUiIGluCiAKLSAgICBpMzg2fGk2ODZ8aTg2cGN8YW1kNjQpCisgICAgaTM4NiB8IGk2ODYgfCBpODZwYyB8IGFtZDY0KQogICAgICAgICBoYXZlPU5HWF9IQVZFX05PTkFMSUdORUQgLiBhdXRvL2hhdmUKICAgICA7OwogCiBlc2FjCi0KLQotaWYgWyAiJE5HWF9QTEFURk9STSIgIT0gd2luMzIgXTsgdGhlbgotCi0gICAgTkdYX1VTRVI9JHtOR1hfVVNFUjotbm9ib2R5fQotCi0gICAgaWYgWyAteiAiJE5HWF9HUk9VUCIgLWEgJE5HWF9VU0VSID0gbm9ib2R5IF0gOyB0aGVuCi0gICAgICAgaWYgZ3JlcCBub2JvZHkgL2V0Yy9ncm91cCAyPiYxID4vZGV2L251bGw7IHRoZW4KLSAgICAgICAgICAgZWNobyAiY2hlY2tpbmcgZm9yIG5vYm9keSBncm91cCAuLi4gZm91bmQiCi0gICAgICAgICAgIE5HWF9HUk9VUD1ub2JvZHkKLSAgICAgICBlbHNlCi0gICAgICAgICAgIGVjaG8gImNoZWNraW5nIGZvciBub2JvZHkgZ3JvdXAgLi4uIG5vdCBmb3VuZCIKLQotICAgICAgICAgICBpZiBncmVwIG5vZ3JvdXAgL2V0Yy9ncm91cCAyPiYxID4vZGV2L251bGw7IHRoZW4KLSAgICAgICAgICAgICAgIGVjaG8gImNoZWNraW5nIGZvciBub2dyb3VwIGdyb3VwIC4uLiBmb3VuZCIKLSAgICAgICAgICAgICAgIE5HWF9HUk9VUD1ub2dyb3VwCi0gICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICAgICBlY2hvICJjaGVja2luZyBmb3Igbm9ncm91cCBncm91cCAuLi4gbm90IGZvdW5kIgotICAgICAgICAgICAgICAgTkdYX0dST1VQPW5vYm9keQotICAgICAgICAgICBmaQotICAgICAgIGZpCi0KLSAgICBlbHNlCi0gICAgICAgIE5HWF9HUk9VUD0kTkdYX1VTRVIKLSAgICBmaQotCi0KLSAgICBuZ3hfZmVhdHVyZT0icG9sbCgpIgotICAgIG5neF9mZWF0dXJlX25hbWU9Ci0gICAgbmd4X2ZlYXR1cmVfcnVuPW5vCi0gICAgbmd4X2ZlYXR1cmVfaW5jcz0iI2luY2x1ZGUgPHBvbGwuaD4iCi0gICAgbmd4X2ZlYXR1cmVfbGlicz0KLSAgICBuZ3hfZmVhdHVyZV90ZXN0PSJpbnQgIG4sIGRwOyBzdHJ1Y3QgcG9sbGZkICBwbDsKLSAgICAgICAgICAgICAgICAgICAgICBkcCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgcGwuZmQgPSAwOwotICAgICAgICAgICAgICAgICAgICAgIHBsLmV2ZW50cyA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgcGwucmV2ZW50cyA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgbiA9IHBvbGwoJnBsLCAxLCAwKSIKLSAgICAuIGF1dG8vZmVhdHVyZQotCi0gICAgaWYgWyAkbmd4X2ZvdW5kID0gbm8gXTsgdGhlbgotICAgICAgICBFVkVOVF9QT0xMPU5PTkUKLSAgICBmaQotCi0KLSAgICBuZ3hfZmVhdHVyZT0iL2Rldi9wb2xsIgotICAgIG5neF9mZWF0dXJlX25hbWU9Ik5HWF9IQVZFX0RFVlBPTEwiCi0gICAgbmd4X2ZlYXR1cmVfcnVuPW5vCi0gICAgbmd4X2ZlYXR1cmVfaW5jcz0iI2luY2x1ZGUgPHN5cy9kZXZwb2xsLmg+IgotICAgIG5neF9mZWF0dXJlX2xpYnM9Ci0gICAgbmd4X2ZlYXR1cmVfdGVzdD0iaW50ICBuLCBkcDsgc3RydWN0IGR2cG9sbCAgZHZwOwotICAgICAgICAgICAgICAgICAgICAgIGRwID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICBkdnAuZHBfZmRzID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgICBkdnAuZHBfbmZkcyA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgZHZwLmRwX3RpbWVvdXQgPSAwOwotICAgICAgICAgICAgICAgICAgICAgIG4gPSBpb2N0bChkcCwgRFBfUE9MTCwgJmR2cCkiCi0gICAgLiBhdXRvL2ZlYXR1cmUKLQotICAgIGlmIFsgJG5neF9mb3VuZCA9IHllcyBdOyB0aGVuCi0gICAgICAgIENPUkVfU1JDUz0iJENPUkVfU1JDUyAkREVWUE9MTF9TUkNTIgotICAgICAgICBFVkVOVF9NT0RVTEVTPSIkRVZFTlRfTU9EVUxFUyAkREVWUE9MTF9NT0RVTEUiCi0gICAgICAgIEVWRU5UX0ZPVU5EPVlFUwotICAgIGZpCi0KLQotICAgIGlmIHRlc3QgLXogIiROR1hfS1FVRVVFX0NIRUNLRUQiOyB0aGVuCi0gICAgICAgIG5neF9mZWF0dXJlPSJrcXVldWUiCi0gICAgICAgIG5neF9mZWF0dXJlX25hbWU9Ik5HWF9IQVZFX0tRVUVVRSIKLSAgICAgICAgbmd4X2ZlYXR1cmVfcnVuPW5vCi0gICAgICAgIG5neF9mZWF0dXJlX2luY3M9IiNpbmNsdWRlIDxzeXMvZXZlbnQuaD4iCi0gICAgICAgIG5neF9mZWF0dXJlX2xpYnM9Ci0gICAgICAgIG5neF9mZWF0dXJlX3Rlc3Q9ImludCBrcTsga3EgPSBrcXVldWUoKSIKLSAgICAgICAgLiBhdXRvL2ZlYXR1cmUKLQotICAgICAgICBpZiBbICRuZ3hfZm91bmQgPSB5ZXMgXTsgdGhlbgotCi0gICAgICAgICAgICBoYXZlPU5HWF9IQVZFX0NMRUFSX0VWRU5UIC4gYXV0by9oYXZlCi0gICAgICAgICAgICBFVkVOVF9NT0RVTEVTPSIkRVZFTlRfTU9EVUxFUyAkS1FVRVVFX01PRFVMRSIKLSAgICAgICAgICAgIENPUkVfU1JDUz0iJENPUkVfU1JDUyAkS1FVRVVFX1NSQ1MiCi0gICAgICAgICAgICBFVkVOVF9GT1VORD1ZRVMKLQotICAgICAgICAgICAgbmd4X2ZlYXR1cmU9ImtxdWV1ZSdzIE5PVEVfTE9XQVQiCi0gICAgICAgICAgICBuZ3hfZmVhdHVyZV9uYW1lPSJOR1hfSEFWRV9MT1dBVF9FVkVOVCIKLSAgICAgICAgICAgIG5neF9mZWF0dXJlX3J1bj1ubwotICAgICAgICAgICAgbmd4X2ZlYXR1cmVfaW5jcz0iI2luY2x1ZGUgPHN5cy9ldmVudC5oPiIKLSAgICAgICAgICAgIG5neF9mZWF0dXJlX2xpYnM9Ci0gICAgICAgICAgICBuZ3hfZmVhdHVyZV90ZXN0PSJzdHJ1Y3Qga2V2ZW50ICBrZXY7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXYuZmZsYWdzID0gTk9URV9MT1dBVDsiCi0gICAgICAgICAgICAuIGF1dG8vZmVhdHVyZQotICAgICAgICBmaQotICAgIGZpCi0KLSAgICBpZiBbICIkTkdYX1NZU1RFTSIgPSAiTmV0QlNEIiBdOyB0aGVuCi0KLSAgICAgICAgIyBOZXRCU0QgMi4wIGluY29tcGF0aWJseSBkZWZpbmVzIGtldmVudC51ZGF0YSBhcyAiaW50cHRyX3QiCi0KLSAgICAgICAgY2F0IDw8IEVORCA+PiAkTkdYX0FVVE9fQ09ORklHX0gKLQotI2RlZmluZSBOR1hfS1FVRVVFX1VEQVRBX1QKLQotRU5ECi0KLSAgICBlbHNlCi0gICAgICAgIGNhdCA8PCBFTkQgPj4gJE5HWF9BVVRPX0NPTkZJR19ICi0KLSNkZWZpbmUgTkdYX0tRVUVVRV9VREFUQV9UICAodm9pZCAqKQotCi1FTkQKLQotICAgIGZpCi1maQpkaWZmIC0tZ2l0IGEvYXV0by9vcy9mZWF0dXJlcyBiL2F1dG8vb3MvZmVhdHVyZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRjMzNjZAotLS0gL2Rldi9udWxsCisrKyBiL2F1dG8vb3MvZmVhdHVyZXMKQEAgLTAsMCArMSwxMzEgQEAKKworIyBDb3B5cmlnaHQgKEMpIElnb3IgU3lzb2V2CisKKworTkdYX1VTRVI9JHtOR1hfVVNFUjotbm9ib2R5fQorCitpZiBbIC16ICIkTkdYX0dST1VQIiAtYSAkTkdYX1VTRVIgPSBub2JvZHkgXSA7IHRoZW4KKyAgICBpZiBncmVwIG5vYm9keSAvZXRjL2dyb3VwIDI+JjEgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICBlY2hvICJjaGVja2luZyBmb3Igbm9ib2R5IGdyb3VwIC4uLiBmb3VuZCIKKyAgICAgICAgTkdYX0dST1VQPW5vYm9keQorICAgIGVsc2UKKyAgICAgICAgZWNobyAiY2hlY2tpbmcgZm9yIG5vYm9keSBncm91cCAuLi4gbm90IGZvdW5kIgorCisgICAgICAgIGlmIGdyZXAgbm9ncm91cCAvZXRjL2dyb3VwIDI+JjEgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgICAgZWNobyAiY2hlY2tpbmcgZm9yIG5vZ3JvdXAgZ3JvdXAgLi4uIGZvdW5kIgorICAgICAgICAgICAgTkdYX0dST1VQPW5vZ3JvdXAKKyAgICAgICAgZWxzZSAKKyAgICAgICAgICAgIGVjaG8gImNoZWNraW5nIGZvciBub2dyb3VwIGdyb3VwIC4uLiBub3QgZm91bmQiCisgICAgICAgICAgICBOR1hfR1JPVVA9bm9ib2R5CisgICAgICAgIGZpCisgICAgZmkKKworZWxzZQorICAgIE5HWF9HUk9VUD0kTkdYX1VTRVIKK2ZpCisgICAgCisKK25neF9mZWF0dXJlPSJwb2xsKCkiCituZ3hfZmVhdHVyZV9uYW1lPQorbmd4X2ZlYXR1cmVfcnVuPW5vCituZ3hfZmVhdHVyZV9pbmNzPSIjaW5jbHVkZSA8cG9sbC5oPiIKK25neF9mZWF0dXJlX2xpYnM9CituZ3hfZmVhdHVyZV90ZXN0PSJpbnQgIG4sIGRwOyBzdHJ1Y3QgcG9sbGZkICBwbDsKKyAgICAgICAgICAgICAgICAgIGRwID0gMDsgCisgICAgICAgICAgICAgICAgICBwbC5mZCA9IDA7CisgICAgICAgICAgICAgICAgICBwbC5ldmVudHMgPSAwOworICAgICAgICAgICAgICAgICAgcGwucmV2ZW50cyA9IDA7CisgICAgICAgICAgICAgICAgICBuID0gcG9sbCgmcGwsIDEsIDApIgorLiBhdXRvL2ZlYXR1cmUKKyAgICAKK2lmIFsgJG5neF9mb3VuZCA9IG5vIF07IHRoZW4KKyAgICBFVkVOVF9QT0xMPU5PTkUKK2ZpCisgICAgCisKK25neF9mZWF0dXJlPSIvZGV2L3BvbGwiCituZ3hfZmVhdHVyZV9uYW1lPSJOR1hfSEFWRV9ERVZQT0xMIgorbmd4X2ZlYXR1cmVfcnVuPW5vCituZ3hfZmVhdHVyZV9pbmNzPSIjaW5jbHVkZSA8c3lzL2RldnBvbGwuaD4iCituZ3hfZmVhdHVyZV9saWJzPQorbmd4X2ZlYXR1cmVfdGVzdD0iaW50ICBuLCBkcDsgc3RydWN0IGR2cG9sbCAgZHZwOworICAgICAgICAgICAgICAgICAgZHAgPSAwOworICAgICAgICAgICAgICAgICAgZHZwLmRwX2ZkcyA9IE5VTEw7CisgICAgICAgICAgICAgICAgICBkdnAuZHBfbmZkcyA9IDA7CisgICAgICAgICAgICAgICAgICBkdnAuZHBfdGltZW91dCA9IDA7CisgICAgICAgICAgICAgICAgICBuID0gaW9jdGwoZHAsIERQX1BPTEwsICZkdnApIgorLiBhdXRvL2ZlYXR1cmUKKworaWYgWyAkbmd4X2ZvdW5kID0geWVzIF07IHRoZW4KKyAgICBDT1JFX1NSQ1M9IiRDT1JFX1NSQ1MgJERFVlBPTExfU1JDUyIKKyAgICBFVkVOVF9NT0RVTEVTPSIkRVZFTlRfTU9EVUxFUyAkREVWUE9MTF9NT0RVTEUiCisgICAgRVZFTlRfRk9VTkQ9WUVTCitmaQorCisKK2lmIHRlc3QgLXogIiROR1hfS1FVRVVFX0NIRUNLRUQiOyB0aGVuCisgICAgbmd4X2ZlYXR1cmU9ImtxdWV1ZSIKKyAgICBuZ3hfZmVhdHVyZV9uYW1lPSJOR1hfSEFWRV9LUVVFVUUiCisgICAgbmd4X2ZlYXR1cmVfcnVuPW5vCisgICAgbmd4X2ZlYXR1cmVfaW5jcz0iI2luY2x1ZGUgPHN5cy9ldmVudC5oPiIKKyAgICBuZ3hfZmVhdHVyZV9saWJzPQorICAgIG5neF9mZWF0dXJlX3Rlc3Q9ImludCBrcTsga3EgPSBrcXVldWUoKSIKKyAgICAuIGF1dG8vZmVhdHVyZQorCisgICAgaWYgWyAkbmd4X2ZvdW5kID0geWVzIF07IHRoZW4KKworICAgICAgICBoYXZlPU5HWF9IQVZFX0NMRUFSX0VWRU5UIC4gYXV0by9oYXZlCisgICAgICAgIEVWRU5UX01PRFVMRVM9IiRFVkVOVF9NT0RVTEVTICRLUVVFVUVfTU9EVUxFIgorICAgICAgICBDT1JFX1NSQ1M9IiRDT1JFX1NSQ1MgJEtRVUVVRV9TUkNTIgorICAgICAgICBFVkVOVF9GT1VORD1ZRVMKKworICAgICAgICBuZ3hfZmVhdHVyZT0ia3F1ZXVlJ3MgTk9URV9MT1dBVCIKKyAgICAgICAgbmd4X2ZlYXR1cmVfbmFtZT0iTkdYX0hBVkVfTE9XQVRfRVZFTlQiCisgICAgICAgIG5neF9mZWF0dXJlX3J1bj1ubworICAgICAgICBuZ3hfZmVhdHVyZV9pbmNzPSIjaW5jbHVkZSA8c3lzL2V2ZW50Lmg+IgorICAgICAgICBuZ3hfZmVhdHVyZV9saWJzPQorICAgICAgICBuZ3hfZmVhdHVyZV90ZXN0PSJzdHJ1Y3Qga2V2ZW50ICBrZXY7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGtldi5mZmxhZ3MgPSBOT1RFX0xPV0FUOyIKKyAgICAgICAgLiBhdXRvL2ZlYXR1cmUKKyAgICBmaQorZmkKKworaWYgWyAiJE5HWF9TWVNURU0iID0gIk5ldEJTRCIgXTsgdGhlbgorCisgICAgIyBOZXRCU0QgMi4wIGluY29tcGF0aWJseSBkZWZpbmVzIGtldmVudC51ZGF0YSBhcyAiaW50cHRyX3QiCisKKyAgICBjYXQgPDwgRU5EID4+ICROR1hfQVVUT19DT05GSUdfSAorCisjZGVmaW5lIE5HWF9LUVVFVUVfVURBVEFfVAorCitFTkQKKworZWxzZQorICAgIGNhdCA8PCBFTkQgPj4gJE5HWF9BVVRPX0NPTkZJR19ICisKKyNkZWZpbmUgTkdYX0tRVUVVRV9VREFUQV9UICAodm9pZCAqKQorCitFTkQKKworZmkKKworCituZ3hfZmVhdHVyZT0iY3J5cHQoKSIKK25neF9mZWF0dXJlX25hbWU9CituZ3hfZmVhdHVyZV9ydW49bm8KK25neF9mZWF0dXJlX2luY3M9CituZ3hfZmVhdHVyZV9saWJzPQorbmd4X2ZlYXR1cmVfdGVzdD0iY3J5cHQoXCJ0ZXN0XCIsIFwic2FsdFwiKTsiCisuIGF1dG8vZmVhdHVyZQorCisKK2lmIFsgJG5neF9mb3VuZCA9IG5vIF07IHRoZW4KKworICAgIG5neF9mZWF0dXJlPSJjcnlwdCgpIGluIGxpYmNyeXB0IgorICAgIG5neF9mZWF0dXJlX2xpYnM9LWxjcnlwdAorICAgIC4gYXV0by9mZWF0dXJlCisKKyAgICBpZiBbICRuZ3hfZm91bmQgPSB5ZXMgXTsgdGhlbgorICAgICAgICBDUllQVF9MSUI9Ii1sY3J5cHQiCisgICAgZmkKK2ZpCmRpZmYgLS1naXQgYS9hdXRvL29zL2ZyZWVic2QgYi9hdXRvL29zL2ZyZWVic2QKaW5kZXggZjkxNjg2MC4uZTU0NTEyMiAxMDA2NDQKLS0tIGEvYXV0by9vcy9mcmVlYnNkCisrKyBiL2F1dG8vb3MvZnJlZWJzZApAQCAtNyw3ICs3LDYgQEAKIENPUkVfSU5DUz0iJFVOSVhfSU5DUyIKIENPUkVfREVQUz0iJFVOSVhfREVQUyAkRlJFRUJTRF9ERVBTIgogQ09SRV9TUkNTPSIkVU5JWF9TUkNTICRGUkVFQlNEX1NSQ1MiCi1DUllQVF9MSUI9Ii1sY3J5cHQiCiAKIG5neF9zcGFjZXI9JwogJwpkaWZmIC0tZ2l0IGEvYXV0by9vcy9saW51eCBiL2F1dG8vb3MvbGludXgKaW5kZXggNTkyNjIxMS4uMzJlZjRjYiAxMDA2NDQKLS0tIGEvYXV0by9vcy9saW51eAorKysgYi9hdXRvL29zL2xpbnV4CkBAIC03LDcgKzcsNiBAQAogQ09SRV9JTkNTPSIkVU5JWF9JTkNTIgogQ09SRV9ERVBTPSIkVU5JWF9ERVBTICRMSU5VWF9ERVBTIgogQ09SRV9TUkNTPSIkVU5JWF9TUkNTICRMSU5VWF9TUkNTIgotQ1JZUFRfTElCPSItbGNyeXB0IgogCiBuZ3hfc3BhY2VyPScKICcKZGlmZiAtLWdpdCBhL2F1dG8vdW5peCBiL2F1dG8vdW5peAppbmRleCBlOWUwYzdhLi42Mjk1ZWMyIDEwMDc1NQotLS0gYS9hdXRvL3VuaXgKKysrIGIvYXV0by91bml4CkBAIC0zMiw3ICszMiw3IEBACiAuIGF1dG8vdHlwZXMvc2l6ZW9mCiBuZ3hfcGFyYW09TkdYX1NJR19BVE9NSUNfVF9TSVpFOyBuZ3hfdmFsdWU9JG5neF9zaXplOyAuIGF1dG8vdHlwZXMvdmFsdWUKIAotbmd4X3R5cGU9InNvY2tsZW5fdCI7IG5neF90eXBlcz0idWludDMyX3QiOyAuIGF1dG8vdHlwZXMvdHlwZWRlZgorbmd4X3R5cGU9InNvY2tsZW5fdCI7IG5neF90eXBlcz0iaW50IjsgLiBhdXRvL3R5cGVzL3R5cGVkZWYKIAogbmd4X3R5cGU9ImluX2FkZHJfdCI7IG5neF90eXBlcz0idWludDMyX3QiOyAuIGF1dG8vdHlwZXMvdHlwZWRlZgogCmRpZmYgLS1naXQgYS9kb2NzL3htbC9uZ2lueC9jaGFuZ2VzLnhtbCBiL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sCmluZGV4IDI5MDBlMmQuLmNlN2Y2YzMgMTAwNjQ0Ci0tLSBhL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sCisrKyBiL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sCkBAIC05LDYgKzksNTIgQEAKIDx0aXRsZSBsYW5nPSJlbiI+bmdpbnggY2hhbmdlbG9nPC90aXRsZT4KIAogCis8Y2hhbmdlcyB2ZXI9IjAuMS4zMiIgZGF0ZT0iMTkuMDUuMjAwNSI+CisKKzxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KKzxwYXJhIGxhbmc9InJ1Ij4KK9cg0sXEydLFy9TByCwg19nEwdfBxc3ZyCDTINDPzc/d2MAgxMnSxcvUydfZIHJld3JpdGUsIM7FINDF0sXEwdfBzMnT2CDB0sfVzcXO1Nk7CivP28nCy8Eg0M/R18nMwdPYINcgMC4xLjI5LgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgordGhlIGFyZ3VtZW50cyB3ZXJlIG9taXR0ZWQgaW4gdGhlIHJlZGlyZWN0cywgaXNzdWVkIGJ5IHRoZSAicmV3cml0ZSIgZGlyZWN0aXZlOworYnVnIGFwcGVhcmVkIGluIDAuMS4yOS4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImZlYXR1cmUiPgorPHBhcmEgbGFuZz0icnUiPgorxMnSxcvUydfBIGlmINDPxMTF0tbJ18HF1CDX2cTFzMXOydEg1yDSxcfVzNHSztnIINfZ0sHWxc7J0cguCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgImlmIiBkaXJlY3RpdmUgc3VwcG9ydHMgdGhlIGNhcHR1cmVzIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCis8L3BhcmE+Cis8L2NoYW5nZT4KKworPGNoYW5nZSB0eXBlPSJmZWF0dXJlIj4KKzxwYXJhIGxhbmc9InJ1Ij4KK8TJ0sXL1MnXwSBzZXQg0M/ExMXS1snXwcXUINDF0sXNxc7O2cUgySDX2cTFzMXOydEgydog0sXH1czR0s7ZyCDX2dLB1sXOycouCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgInNldCIgZGlyZWN0aXZlIHN1cHBvcnRzIHRoZSB2YXJpYWJsZXMgYW5kIHRoZSBjYXB0dXJlcyBvZiByZWd1bGFyCitleHByZXNzaW9ucy4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImZlYXR1cmUiPgorPHBhcmEgbGFuZz0icnUiPgor1yDSxdbJzcUg0NLPy9PJIMkgRmFzdENHSSDQz8TExdLWydfBxdTT0SDT1NLPy8Eg2sHHz8zP18vBIFgtQWNjZWwtUmVkaXJlY3QKK9cgz9TXxdTFIMLcy8XOxMEuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgIlgtQWNjZWwtUmVkaXJlY3QiIHJlc3BvbnNlIGhlYWRlciBsaW5lIGlzIHN1cHBvcnRlZCBpbiBwcm94eSBhbmQgRmFzdENHSQorbW9kZS4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8L2NoYW5nZXM+CisKKwogPGNoYW5nZXMgdmVyPSIwLjEuMzEiIGRhdGU9IjE2LjA1LjIwMDUiPgogCiA8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+CmRpZmYgLS1naXQgYS9zcmMvY29yZS9uZ2lueC5oIGIvc3JjL2NvcmUvbmdpbnguaAppbmRleCA0NGM4NzBiLi5kMWE1NjkzIDEwMDY0NAotLS0gYS9zcmMvY29yZS9uZ2lueC5oCisrKyBiL3NyYy9jb3JlL25naW54LmgKQEAgLTgsNyArOCw3IEBACiAjZGVmaW5lIF9OR0lOWF9IX0lOQ0xVREVEXwogCiAKLSNkZWZpbmUgTkdJTlhfVkVSICAgICAgICAgICJuZ2lueC8wLjEuMzEiCisjZGVmaW5lIE5HSU5YX1ZFUiAgICAgICAgICAibmdpbngvMC4xLjMyIgogCiAjZGVmaW5lIE5HSU5YX1ZBUiAgICAgICAgICAiTkdJTlgiCiAjZGVmaW5lIE5HWF9ORVdQSURfRVhUICAgICAiLm5ld2JpbiIKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25neF9pbmV0LmMgYi9zcmMvY29yZS9uZ3hfaW5ldC5jCmluZGV4IDFhZTc4MjkuLmU3YmRjNDEgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25neF9pbmV0LmMKKysrIGIvc3JjL2NvcmUvbmd4X2luZXQuYwpAQCAtNDE5LDcgKzQxOSw3IEBACiAgICAgdS0+aG9zdC5kYXRhID0gdXJsLT5kYXRhOwogICAgIHUtPmhvc3RfaGVhZGVyID0gKnVybDsKIAotICAgIGZvciAoLyogdm9pZCAqLzsgaSA8IHVybC0+bGVuOyBpKyspIHsKKyAgICBmb3IgKCAvKiB2b2lkICovIDsgaSA8IHVybC0+bGVuOyBpKyspIHsKIAogICAgICAgICBpZiAodXJsLT5kYXRhW2ldID09ICc6JykgewogICAgICAgICAgICAgdS0+cG9ydF90ZXh0LmRhdGEgPSAmdXJsLT5kYXRhW2ldICsgMTsKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25neF9sb2cuaCBiL3NyYy9jb3JlL25neF9sb2cuaAppbmRleCA1OTUyYjUyLi5kZjBkNTI1IDEwMDY0NAotLS0gYS9zcmMvY29yZS9uZ3hfbG9nLmgKKysrIGIvc3JjL2NvcmUvbmd4X2xvZy5oCkBAIC0xMzAsNiArMTMwLDcgQEAKICNkZWZpbmUgbmd4X2xvZ19kZWJ1ZzcgIG5neF9sb2dfZGVidWcKICNkZWZpbmUgbmd4X2xvZ19kZWJ1ZzggIG5neF9sb2dfZGVidWcKIAorCiAjZWxzZSAvKiBOTyBWQVJJQURJQyBNQUNST1MgKi8KIAogI2RlZmluZSBuZ3hfbG9nX2RlYnVnMChsZXZlbCwgbG9nLCBlcnIsIGZtdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbmd4X3N0cmluZy5oIGIvc3JjL2NvcmUvbmd4X3N0cmluZy5oCmluZGV4IDI0YTIzNzkuLmM3MmE3NzYgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25neF9zdHJpbmcuaAorKysgYi9zcmMvY29yZS9uZ3hfc3RyaW5nLmgKQEAgLTU5LDEyICs1OSwxMiBAQAogICogd2hpbGUgWmVyb01lbW9yeSgpIGFuZCBiemVybygpIGFyZSB0aGUgY2FsbHMuCiAgKiBpY2MgbWF5IGFsc28gaW5saW5lIHNldmVyYWwgbW92J3Mgb2YgYSB6ZXJvZWQgcmVnaXN0ZXIgZm9yIHNtYWxsIGJsb2Nrcy4KICAqLwotI2RlZmluZSBuZ3hfbWVtemVybyhidWYsIG4pICAgICAgIG1lbXNldChidWYsIDAsIG4pCi0jZGVmaW5lIG5neF9tZW1zZXQoYnVmLCBjLCBuKSAgICAgbWVtc2V0KGJ1ZiwgYywgbikKKyNkZWZpbmUgbmd4X21lbXplcm8oYnVmLCBuKSAgICAgICAodm9pZCkgbWVtc2V0KGJ1ZiwgMCwgbikKKyNkZWZpbmUgbmd4X21lbXNldChidWYsIGMsIG4pICAgICAodm9pZCkgbWVtc2V0KGJ1ZiwgYywgbikKIAogCiAvKiBtc3ZjIGFuZCBpY2MgY29tcGlsZSBtZW1jcHkoKSB0byB0aGUgaW5saW5lICJyZXAgbW92cyIgKi8KLSNkZWZpbmUgbmd4X21lbWNweShkc3QsIHNyYywgbikgICBtZW1jcHkoZHN0LCBzcmMsIG4pCisjZGVmaW5lIG5neF9tZW1jcHkoZHN0LCBzcmMsIG4pICAgKHZvaWQpIG1lbWNweShkc3QsIHNyYywgbikKICNkZWZpbmUgbmd4X2NweW1lbShkc3QsIHNyYywgbikgICAoKHVfY2hhciAqKSBtZW1jcHkoZHN0LCBzcmMsIG4pKSArIChuKQogCiAKZGlmZiAtLWdpdCBhL3NyYy9ldmVudC9uZ3hfZXZlbnRfdGltZXIuYyBiL3NyYy9ldmVudC9uZ3hfZXZlbnRfdGltZXIuYwppbmRleCBmZGVjNDQ2Li41M2JiYzVmIDEwMDY0NAotLS0gYS9zcmMvZXZlbnQvbmd4X2V2ZW50X3RpbWVyLmMKKysrIGIvc3JjL2V2ZW50L25neF9ldmVudF90aW1lci5jCkBAIC0xMjEsNyArMTIxLDcgQEAKIAogICAgICAgICAgICAgbmd4X2xvZ19kZWJ1ZzIoTkdYX0xPR19ERUJVR19FVkVOVCwgZXYtPmxvZywgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJldmVudCB0aW1lciBkZWw6ICVkOiAlaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmd4X2V2ZW50X2lkZW50KGV2LT5kYXRhKSwgZXYtPnJidHJlZV9rZXkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgbmd4X2V2ZW50X2lkZW50KGV2LT5kYXRhKSwgZXYtPnJidHJlZV9rZXkpOwogCiAgICAgICAgICAgICBuZ3hfcmJ0cmVlX2RlbGV0ZSgobmd4X3JidHJlZV90ICoqKSAmbmd4X2V2ZW50X3RpbWVyX3JidHJlZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZ3hfZXZlbnRfdGltZXJfc2VudGluZWwsCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2Zhc3RjZ2lfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2Zhc3RjZ2lfbW9kdWxlLmMKaW5kZXggY2Y5ZDAwOC4uMGU3NDUyOCAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9mYXN0Y2dpX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfZmFzdGNnaV9tb2R1bGUuYwpAQCAtMzMsNyArMzMsNyBAQAogICAgIG5neF9odHRwX2Zhc3RjZ2lfc3RfcGFkZGluZ19sZW5ndGgsCiAgICAgbmd4X2h0dHBfZmFzdGNnaV9zdF9yZXNlcnZlZCwKICAgICBuZ3hfaHR0cF9mYXN0Y2dpX3N0X2RhdGEsCi0gICAgbmd4X2h0dHBfZmFzdGNnaV9zdF9wYWRkaW5nLAorICAgIG5neF9odHRwX2Zhc3RjZ2lfc3RfcGFkZGluZwogfSBuZ3hfaHR0cF9mYXN0Y2dpX3N0YXRlX2U7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9wcm94eV9tb2R1bGUuYyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfcHJveHlfbW9kdWxlLmMKaW5kZXggNTUwNDYxMC4uYTI0YmUyNCAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9wcm94eV9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3Byb3h5X21vZHVsZS5jCkBAIC01NDIsNyArNTQyLDkgQEAKIAogICAgIHdoaWxlICgqKHVpbnRwdHJfdCAqKSBsZS5pcCkgewogICAgICAgICBsY29kZSA9ICoobmd4X2h0dHBfc2NyaXB0X2xlbl9jb2RlX3B0ICopIGxlLmlwOwotICAgICAgICBsY29kZSgmbGUpOworCisgICAgICAgIC8qIHNraXAgdGhlIGhlYWRlciBsaW5lIG5hbWUgbGVuZ3RoICovCisgICAgICAgICh2b2lkKSBsY29kZSgmbGUpOwogCiAgICAgICAgIGlmICgqKG5neF9odHRwX3NjcmlwdF9sZW5fY29kZV9wdCAqKSBsZS5pcCkgewogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3Jld3JpdGVfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3Jld3JpdGVfbW9kdWxlLmMKaW5kZXggMmRjN2E3Zi4uNDdmZjhjNSAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9yZXdyaXRlX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfcmV3cml0ZV9tb2R1bGUuYwpAQCAtMTYsMTYgKzE2LDEwIEBACiAKIAogdHlwZWRlZiBzdHJ1Y3QgewotICAgIG5neF9zdHJfdCAgICAgICAgICAgICAgICAgICpuYW1lOwotICAgIG5neF9odHRwX3ZhcmlhYmxlX3ZhbHVlX3QgICp2YWx1ZTsKLX0gbmd4X2h0dHBfcmV3cml0ZV92YXJpYWJsZV90OwotCi0KLXR5cGVkZWYgc3RydWN0IHsKICAgICBuZ3hfYXJyYXlfdCAgICAgICAgICAgICAgICAqY29kZXM7ICAgICAgICAvKiB1aW50cHRyX3QgKi8KICAgICBuZ3hfYXJyYXlfdCAgICAgICAgICAgICAgICAqcmVmZXJlcnM7ICAgICAvKiBuZ3hfaHR0cF9yZXdyaXRlX3JlZmVyZXJfdCAqLwogCi0gICAgbmd4X3VpbnRfdCAgICAgICAgICAgICAgICAgIG1heF9jYXB0dXJlczsKKyAgICBuZ3hfdWludF90ICAgICAgICAgICAgICAgICAgY2FwdHVyZXM7CiAgICAgbmd4X3VpbnRfdCAgICAgICAgICAgICAgICAgIHN0YWNrX3NpemU7CiAKICAgICBuZ3hfZmxhZ190ICAgICAgICAgICAgICAgICAgbG9nOwpAQCAtMTU5LDggKzE1Myw4IEBACiAgICAgICAgIHJldHVybiBOR1hfSFRUUF9JTlRFUk5BTF9TRVJWRVJfRVJST1I7CiAgICAgfQogCi0gICAgaWYgKGNmLT5tYXhfY2FwdHVyZXMpIHsKLSAgICAgICAgZS0+Y2FwdHVyZXMgPSBuZ3hfcGFsbG9jKHItPnBvb2wsIGNmLT5tYXhfY2FwdHVyZXMgKiBzaXplb2YoaW50KSk7CisgICAgaWYgKGNmLT5jYXB0dXJlcykgeworICAgICAgICBlLT5jYXB0dXJlcyA9IG5neF9wYWxsb2Moci0+cG9vbCwgY2YtPmNhcHR1cmVzICogc2l6ZW9mKGludCkpOwogICAgICAgICBpZiAoZS0+Y2FwdHVyZXMgPT0gTlVMTCkgewogICAgICAgICAgICAgcmV0dXJuIE5HWF9IVFRQX0lOVEVSTkFMX1NFUlZFUl9FUlJPUjsKICAgICAgICAgfQpAQCAtNTQyLDEwICs1MzYsMTAgQEAKIAogICAgIGlmIChyZWdleC0+bmNhcHR1cmVzKSB7CiAgICAgICAgIHJlZ2V4LT5uY2FwdHVyZXMgPSAocmVnZXgtPm5jYXB0dXJlcyArIDEpICogMzsKLSAgICB9CiAKLSAgICBpZiAobGNmLT5tYXhfY2FwdHVyZXMgPCByZWdleC0+bmNhcHR1cmVzKSB7Ci0gICAgICAgIGxjZi0+bWF4X2NhcHR1cmVzID0gcmVnZXgtPm5jYXB0dXJlczsKKyAgICAgICAgaWYgKGxjZi0+Y2FwdHVyZXMgPCByZWdleC0+bmNhcHR1cmVzKSB7CisgICAgICAgICAgICBsY2YtPmNhcHR1cmVzID0gcmVnZXgtPm5jYXB0dXJlczsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJlZ2V4X2VuZCA9IG5neF9odHRwX3NjcmlwdF9hZGRfY29kZShsY2YtPmNvZGVzLApAQCAtNzM1LDcgKzcyOSw3IEBACiBuZ3hfaHR0cF9yZXdyaXRlX2lmX2NvbmRpdGlvbihuZ3hfY29uZl90ICpjZiwgbmd4X2h0dHBfcmV3cml0ZV9sb2NfY29uZl90ICpsY2YpCiB7CiAgICAgbmd4X3N0cl90ICAgICAgICAgICAgICAgICAgICAgKnZhbHVlLCBlcnI7Ci0gICAgbmd4X3VpbnRfdCAgICAgICAgICAgICAgICAgICAgIGN1ciwgbGFzdDsKKyAgICBuZ3hfdWludF90ICAgICAgICAgICAgICAgICAgICAgY3VyLCBsYXN0LCBuOwogICAgIG5neF9odHRwX3NjcmlwdF9yZWdleF9jb2RlX3QgICpyZWdleDsKICAgICB1X2NoYXIgICAgICAgICAgICAgICAgICAgICAgICAgZXJyc3RyW05HWF9NQVhfQ09ORl9FUlJTVFJdOwogCkBAIC04MjMsNiArODE3LDE2IEBACiAgICAgICAgIHJlZ2V4LT50ZXN0ID0gMTsKICAgICAgICAgcmVnZXgtPm5hbWUgPSB2YWx1ZVtsYXN0XTsKIAorICAgICAgICBuID0gbmd4X3JlZ2V4X2NhcHR1cmVfY291bnQocmVnZXgtPnJlZ2V4KTsKKworICAgICAgICBpZiAobikgeworICAgICAgICAgICAgcmVnZXgtPm5jYXB0dXJlcyA9IChuICsgMSkgKiAzOworCisgICAgICAgICAgICBpZiAobGNmLT5jYXB0dXJlcyA8IHJlZ2V4LT5uY2FwdHVyZXMpIHsKKyAgICAgICAgICAgICAgICBsY2YtPmNhcHR1cmVzID0gcmVnZXgtPm5jYXB0dXJlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIHJldHVybiBOR1hfQ09ORl9PSzsKICAgICB9CiAKQEAgLTk3NywxMSArOTgxLDEzIEBACiB7CiAgICAgbmd4X2h0dHBfcmV3cml0ZV9sb2NfY29uZl90ICpsY2YgPSBjb25mOwogCi0gICAgbmd4X2ludF90ICAgICAgICAgICAgICAgICAgICAgIG4sIGluZGV4OwotICAgIG5neF9zdHJfdCAgICAgICAgICAgICAgICAgICAgICp2YWx1ZTsKLSAgICBuZ3hfaHR0cF92YXJpYWJsZV90ICAgICAgICAgICAqdjsKLSAgICBuZ3hfaHR0cF9zY3JpcHRfdmFyX2NvZGVfdCAgICAqdmFyOwotICAgIG5neF9odHRwX3NjcmlwdF92YWx1ZV9jb2RlX3QgICp2YWw7CisgICAgbmd4X2ludF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiwgaW5kZXg7CisgICAgbmd4X3N0cl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmFsdWU7CisgICAgbmd4X2h0dHBfdmFyaWFibGVfdCAgICAgICAgICAgICAgICAgICAqdjsKKyAgICBuZ3hfaHR0cF9zY3JpcHRfY29tcGlsZV90ICAgICAgICAgICAgICBzYzsKKyAgICBuZ3hfaHR0cF9zY3JpcHRfdmFyX2NvZGVfdCAgICAgICAgICAgICp2YXI7CisgICAgbmd4X2h0dHBfc2NyaXB0X3ZhbHVlX2NvZGVfdCAgICAgICAgICAqdmFsOworICAgIG5neF9odHRwX3NjcmlwdF9jb21wbGV4X3ZhbHVlX2NvZGVfdCAgKmNvbXBsZXg7CiAKICAgICB2YWx1ZSA9IGNmLT5hcmdzLT5lbHRzOwogCkBAIC0xMDA3LDIzICsxMDEzLDUwIEBACiAgICAgdi0+aGFuZGxlciA9IG5neF9odHRwX3Jld3JpdGVfdmFyOwogICAgIHYtPmRhdGEgPSBpbmRleDsKIAotICAgIHZhbCA9IG5neF9odHRwX3NjcmlwdF9zdGFydF9jb2RlKGNmLT5wb29sLCAmbGNmLT5jb2RlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yobmd4X2h0dHBfc2NyaXB0X3ZhbHVlX2NvZGVfdCkpOwotICAgIGlmICh2YWwgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gTkdYX0NPTkZfRVJST1I7CisgICAgbiA9IG5neF9odHRwX3NjcmlwdF92YXJpYWJsZXNfY291bnQoJnZhbHVlWzJdKTsKKworICAgIGlmIChuID09IDApIHsKKyAgICAgICAgdmFsID0gbmd4X2h0dHBfc2NyaXB0X3N0YXJ0X2NvZGUoY2YtPnBvb2wsICZsY2YtPmNvZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yobmd4X2h0dHBfc2NyaXB0X3ZhbHVlX2NvZGVfdCkpOworICAgICAgICBpZiAodmFsID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOR1hfQ09ORl9FUlJPUjsKKyAgICAgICAgfQorCisgICAgICAgIG4gPSBuZ3hfYXRvaSh2YWx1ZVsyXS5kYXRhLCB2YWx1ZVsyXS5sZW4pOworCisgICAgICAgIGlmIChuID09IE5HWF9FUlJPUikgeworICAgICAgICAgICAgbiA9IDA7CisgICAgICAgIH0KKworICAgICAgICB2YWwtPmNvZGUgPSBuZ3hfaHR0cF9zY3JpcHRfdmFsdWVfY29kZTsKKyAgICAgICAgdmFsLT52YWx1ZSA9ICh1aW50cHRyX3QpIG47CisgICAgICAgIHZhbC0+dGV4dF9sZW4gPSAodWludHB0cl90KSB2YWx1ZVsyXS5sZW47CisgICAgICAgIHZhbC0+dGV4dF9kYXRhID0gKHVpbnRwdHJfdCkgdmFsdWVbMl0uZGF0YTsKKworICAgIH0gZWxzZSB7CisgICAgICAgIGNvbXBsZXggPSBuZ3hfaHR0cF9zY3JpcHRfc3RhcnRfY29kZShjZi0+cG9vbCwgJmxjZi0+Y29kZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yobmd4X2h0dHBfc2NyaXB0X2NvbXBsZXhfdmFsdWVfY29kZV90KSk7CisgICAgICAgIGlmIChjb21wbGV4ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOR1hfQ09ORl9FUlJPUjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXBsZXgtPmNvZGUgPSBuZ3hfaHR0cF9zY3JpcHRfY29tcGxleF92YWx1ZV9jb2RlOworICAgICAgICBjb21wbGV4LT5sZW5ndGhzID0gTlVMTDsKKworICAgICAgICBuZ3hfbWVtemVybygmc2MsIHNpemVvZihuZ3hfaHR0cF9zY3JpcHRfY29tcGlsZV90KSk7CisKKyAgICAgICAgc2MuY2YgPSBjZjsgCisgICAgICAgIHNjLnNvdXJjZSA9ICZ2YWx1ZVsyXTsKKyAgICAgICAgc2MubGVuZ3RocyA9ICZjb21wbGV4LT5sZW5ndGhzOworICAgICAgICBzYy52YWx1ZXMgPSAmbGNmLT5jb2RlczsKKyAgICAgICAgc2MudmFyaWFibGVzID0gbjsKKyAgICAgICAgc2MuY29tcGxldGVfbGVuZ3RocyA9IDE7CisKKyAgICAgICAgaWYgKG5neF9odHRwX3NjcmlwdF9jb21waWxlKCZzYykgIT0gTkdYX09LKSB7CisgICAgICAgICAgICByZXR1cm4gTkdYX0NPTkZfRVJST1I7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBuID0gbmd4X2F0b2kodmFsdWVbMl0uZGF0YSwgdmFsdWVbMl0ubGVuKTsKLQotICAgIGlmIChuID09IE5HWF9FUlJPUikgewotICAgICAgICBuID0gMDsKLSAgICB9Ci0KLSAgICB2YWwtPmNvZGUgPSBuZ3hfaHR0cF9zY3JpcHRfdmFsdWVfY29kZTsKLSAgICB2YWwtPnZhbHVlID0gKHVpbnRwdHJfdCkgbjsKLSAgICB2YWwtPnRleHRfbGVuID0gKHVpbnRwdHJfdCkgdmFsdWVbMl0ubGVuOwotICAgIHZhbC0+dGV4dF9kYXRhID0gKHVpbnRwdHJfdCkgdmFsdWVbMl0uZGF0YTsKLQogICAgIHZhciA9IG5neF9odHRwX3NjcmlwdF9zdGFydF9jb2RlKGNmLT5wb29sLCAmbGNmLT5jb2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yobmd4X2h0dHBfc2NyaXB0X3Zhcl9jb2RlX3QpKTsKICAgICBpZiAodmFyID09IE5VTEwpIHsKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX3NjcmlwdC5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfc2NyaXB0LmMKaW5kZXggMzYyODA3YS4uZWExZTU2YiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfc2NyaXB0LmMKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfc2NyaXB0LmMKQEAgLTQwNSwxNyArNDA1LDIxIEBACiAKICAgICBlLT5pcCArPSBzaXplb2Yobmd4X2h0dHBfc2NyaXB0X2NvcHlfY2FwdHVyZV9jb2RlX3QpOwogCi0gICAgaWYgKChlLT5hcmdzIHx8IGUtPnF1b3RlKQotICAgICAgICAmJiAoZS0+cmVxdWVzdC0+cXVvdGVkX3VyaSB8fCBlLT5yZXF1ZXN0LT5wbHVzX2luX3VyaSkpCi0gICAgewotICAgICAgICByZXR1cm4gZS0+Y2FwdHVyZXNbY29kZS0+biArIDFdIC0gZS0+Y2FwdHVyZXNbY29kZS0+bl0KLSAgICAgICAgICAgICAgICsgbmd4X2VzY2FwZV91cmkoTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmUtPmxpbmUtPmRhdGFbZS0+Y2FwdHVyZXNbY29kZS0+bl1dLAorICAgIGlmIChjb2RlLT5uIDwgZS0+bmNhcHR1cmVzKSB7CisgICAgICAgIGlmICgoZS0+YXJncyB8fCBlLT5xdW90ZSkKKyAgICAgICAgICAgICYmIChlLT5yZXF1ZXN0LT5xdW90ZWRfdXJpIHx8IGUtPnJlcXVlc3QtPnBsdXNfaW5fdXJpKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGUtPmNhcHR1cmVzW2NvZGUtPm4gKyAxXSAtIGUtPmNhcHR1cmVzW2NvZGUtPm5dCisgICAgICAgICAgICAgICAgICAgKyBuZ3hfZXNjYXBlX3VyaShOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZS0+bGluZS5kYXRhW2UtPmNhcHR1cmVzW2NvZGUtPm5dXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+Y2FwdHVyZXNbY29kZS0+biArIDFdIC0gZS0+Y2FwdHVyZXNbY29kZS0+bl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5HWF9FU0NBUEVfQVJHUyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuIGUtPmNhcHR1cmVzW2NvZGUtPm4gKyAxXSAtIGUtPmNhcHR1cmVzW2NvZGUtPm5dOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGUtPmNhcHR1cmVzW2NvZGUtPm4gKyAxXSAtIGUtPmNhcHR1cmVzW2NvZGUtPm5dOworICAgICAgICB9CiAgICAgfQorCisgICAgcmV0dXJuIDA7CiB9CiAKIApAQCAtNDI4LDE3ICs0MzIsMTkgQEAKIAogICAgIGUtPmlwICs9IHNpemVvZihuZ3hfaHR0cF9zY3JpcHRfY29weV9jYXB0dXJlX2NvZGVfdCk7CiAKLSAgICBpZiAoKGUtPmFyZ3MgfHwgZS0+cXVvdGUpCi0gICAgICAgICYmIChlLT5yZXF1ZXN0LT5xdW90ZWRfdXJpIHx8IGUtPnJlcXVlc3QtPnBsdXNfaW5fdXJpKSkKLSAgICB7Ci0gICAgICAgIGUtPnBvcyA9ICh1X2NoYXIgKikgbmd4X2VzY2FwZV91cmkoZS0+cG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZS0+bGluZS0+ZGF0YVtlLT5jYXB0dXJlc1tjb2RlLT5uXV0sCisgICAgaWYgKGNvZGUtPm4gPCBlLT5uY2FwdHVyZXMpIHsKKyAgICAgICAgaWYgKChlLT5hcmdzIHx8IGUtPnF1b3RlKQorICAgICAgICAgICAgJiYgKGUtPnJlcXVlc3QtPnF1b3RlZF91cmkgfHwgZS0+cmVxdWVzdC0+cGx1c19pbl91cmkpKQorICAgICAgICB7CisgICAgICAgICAgICBlLT5wb3MgPSAodV9jaGFyICopIG5neF9lc2NhcGVfdXJpKGUtPnBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmUtPmxpbmUuZGF0YVtlLT5jYXB0dXJlc1tjb2RlLT5uXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUtPmNhcHR1cmVzW2NvZGUtPm4gKyAxXSAtIGUtPmNhcHR1cmVzW2NvZGUtPm5dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOR1hfRVNDQVBFX0FSR1MpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGUtPnBvcyA9IG5neF9jcHltZW0oZS0+cG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlLT5saW5lLT5kYXRhW2UtPmNhcHR1cmVzW2NvZGUtPm5dXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT5jYXB0dXJlc1tjb2RlLT5uICsgMV0gLSBlLT5jYXB0dXJlc1tjb2RlLT5uXSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlLT5wb3MgPSBuZ3hfY3B5bWVtKGUtPnBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZS0+bGluZS5kYXRhW2UtPmNhcHR1cmVzW2NvZGUtPm5dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT5jYXB0dXJlc1tjb2RlLT5uICsgMV0gLSBlLT5jYXB0dXJlc1tjb2RlLT5uXSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBuZ3hfbG9nX2RlYnVnMShOR1hfTE9HX0RFQlVHX0hUVFAsIGUtPnJlcXVlc3QtPmNvbm5lY3Rpb24tPmxvZywgMCwKQEAgLTQ3NiwyMCArNDgyLDIzIEBACiAgICAgICAgICAgICAgICAgICAgImh0dHAgc2NyaXB0IHJlZ2V4OiBcIiVWXCIiLCAmY29kZS0+bmFtZSk7CiAKICAgICBpZiAoY29kZS0+dXJpKSB7Ci0gICAgICAgIGUtPmxpbmUgPSAmci0+dXJpOworICAgICAgICBlLT5saW5lID0gci0+dXJpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGUtPnNwLS07Ci0gICAgICAgIGUtPmxpbmUgPSAmZS0+c3AtPnRleHQ7CisgICAgICAgIGUtPmxpbmUgPSBlLT5zcC0+dGV4dDsKICAgICB9CiAKLSAgICByYyA9IG5neF9yZWdleF9leGVjKGNvZGUtPnJlZ2V4LCBlLT5saW5lLCBlLT5jYXB0dXJlcywgY29kZS0+bmNhcHR1cmVzKTsKKyAgICByYyA9IG5neF9yZWdleF9leGVjKGNvZGUtPnJlZ2V4LCAmZS0+bGluZSwgZS0+Y2FwdHVyZXMsIGNvZGUtPm5jYXB0dXJlcyk7CiAKICAgICBpZiAocmMgPT0gTkdYX1JFR0VYX05PX01BVENIRUQpIHsKICAgICAgICAgaWYgKGUtPmxvZykgewogICAgICAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX05PVElDRSwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiXCIlVlwiIGRvZXMgbm90IG1hdGNoIFwiJVZcIiIsICZjb2RlLT5uYW1lLCBlLT5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlwiJVZcIiBkb2VzIG5vdCBtYXRjaCBcIiVWXCIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmY29kZS0+bmFtZSwgJmUtPmxpbmUpOwogICAgICAgICB9CiAKKyAgICAgICAgZS0+bmNhcHR1cmVzID0gMDsKKwogICAgICAgICBpZiAoY29kZS0+dGVzdCkgewogICAgICAgICAgICAgZS0+c3AtPnZhbHVlID0gMDsgCiAgICAgICAgICAgICBlLT5zcC0+dGV4dC5sZW4gPSAwOwpAQCAtNTA3LDcgKzUxNiw3IEBACiAgICAgaWYgKHJjIDwgMCkgewogICAgICAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfQUxFUlQsIHItPmNvbm5lY3Rpb24tPmxvZywgMCwKICAgICAgICAgICAgICAgICAgICAgICBuZ3hfcmVnZXhfZXhlY19uICIgZmFpbGVkOiAlZCBvbiBcIiVWXCIgdXNpbmcgXCIlVlwiIiwKLSAgICAgICAgICAgICAgICAgICAgICByYywgZS0+bGluZSwgJmNvZGUtPm5hbWUpOworICAgICAgICAgICAgICAgICAgICAgIHJjLCAmZS0+bGluZSwgJmNvZGUtPm5hbWUpOwogCiAgICAgICAgIGUtPmlwID0gbmd4X2h0dHBfc2NyaXB0X2V4aXQ7CiAgICAgICAgIGUtPnN0YXR1cyA9IE5HWF9IVFRQX0lOVEVSTkFMX1NFUlZFUl9FUlJPUjsKQEAgLTUxNiw5ICs1MjUsMTEgQEAKIAogICAgIGlmIChlLT5sb2cpIHsKICAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX05PVElDRSwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAotICAgICAgICAgICAgICAgICAgICAgICJcIiVWXCIgbWF0Y2hlcyBcIiVWXCIiLCAmY29kZS0+bmFtZSwgZS0+bGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgIlwiJVZcIiBtYXRjaGVzIFwiJVZcIiIsICZjb2RlLT5uYW1lLCAmZS0+bGluZSk7CiAgICAgfQogCisgICAgZS0+bmNhcHR1cmVzID0gY29kZS0+bmNhcHR1cmVzOworCiAgICAgaWYgKGNvZGUtPnRlc3QpIHsKICAgICAgICAgZS0+c3AtPnZhbHVlID0gMTsgCiAgICAgICAgIGUtPnNwLT50ZXh0LmxlbiA9IDE7CkBAIC01NzAsNiArNTgxLDcgQEAKICAgICAgICAgbGUuaXAgPSBjb2RlLT5sZW5ndGhzLT5lbHRzOwogICAgICAgICBsZS5yZXF1ZXN0ID0gcjsKICAgICAgICAgbGUuY2FwdHVyZXMgPSBlLT5jYXB0dXJlczsKKyAgICAgICAgbGUubmNhcHR1cmVzID0gZS0+bmNhcHR1cmVzOwogCiAgICAgICAgIGxlbiA9IDE7ICAvKiByZXNlcnZlIDEgYnl0ZSBmb3IgcG9zc2libGUgIj8iICovCiAKQEAgLTU4MSw3ICs1OTMsNyBAQAogICAgICAgICBlLT5idWYubGVuID0gbGVuOwogICAgIH0KIAotICAgIGlmIChjb2RlLT5hcmdzICYmIGNvZGUtPmFkZF9hcmdzICYmIHItPmFyZ3MubGVuKSB7CisgICAgaWYgKGNvZGUtPmFkZF9hcmdzICYmIHItPmFyZ3MubGVuKSB7CiAgICAgICAgIGUtPmJ1Zi5sZW4gKz0gci0+YXJncy5sZW4gKyAxOwogICAgIH0KIApAQCAtNzI0LDYgKzczNiw0OCBAQAogCiAKIHZvaWQKK25neF9odHRwX3NjcmlwdF9jb21wbGV4X3ZhbHVlX2NvZGUobmd4X2h0dHBfc2NyaXB0X2VuZ2luZV90ICplKQoreworICAgIHNpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbjsKKyAgICBuZ3hfaHR0cF9zY3JpcHRfZW5naW5lX3QgICAgICAgICAgICAgICBsZTsKKyAgICBuZ3hfaHR0cF9zY3JpcHRfbGVuX2NvZGVfcHQgICAgICAgICAgICBsY29kZTsKKyAgICBuZ3hfaHR0cF9zY3JpcHRfY29tcGxleF92YWx1ZV9jb2RlX3QgICpjb2RlOworCisgICAgY29kZSA9IChuZ3hfaHR0cF9zY3JpcHRfY29tcGxleF92YWx1ZV9jb2RlX3QgKikgZS0+aXA7CisKKyAgICBlLT5pcCArPSBzaXplb2Yobmd4X2h0dHBfc2NyaXB0X2NvbXBsZXhfdmFsdWVfY29kZV90KTsKKworICAgIG5neF9sb2dfZGVidWcwKE5HWF9MT0dfREVCVUdfSFRUUCwgZS0+cmVxdWVzdC0+Y29ubmVjdGlvbi0+bG9nLCAwLAorICAgICAgICAgICAgICAgICAgICJodHRwIHNjcmlwdCBjb21wbGV4IHZhbHVlIik7CisKKyAgICBuZ3hfbWVtemVybygmbGUsIHNpemVvZihuZ3hfaHR0cF9zY3JpcHRfZW5naW5lX3QpKTsKKworICAgIGxlLmlwID0gY29kZS0+bGVuZ3Rocy0+ZWx0czsKKyAgICBsZS5yZXF1ZXN0ID0gZS0+cmVxdWVzdDsKKyAgICBsZS5jYXB0dXJlcyA9IGUtPmNhcHR1cmVzOworICAgIGxlLm5jYXB0dXJlcyA9IGUtPm5jYXB0dXJlczsKKworICAgIGZvciAobGVuID0gMDsgKih1aW50cHRyX3QgKikgbGUuaXA7IGxlbiArPSBsY29kZSgmbGUpKSB7CisgICAgICAgIGxjb2RlID0gKihuZ3hfaHR0cF9zY3JpcHRfbGVuX2NvZGVfcHQgKikgbGUuaXA7CisgICAgfQorCisgICAgZS0+YnVmLmxlbiA9IGxlbjsKKyAgICBlLT5idWYuZGF0YSA9IG5neF9wYWxsb2MoZS0+cmVxdWVzdC0+cG9vbCwgbGVuKTsKKyAgICBpZiAoZS0+YnVmLmRhdGEgPT0gTlVMTCkgeworICAgICAgICBlLT5pcCA9IG5neF9odHRwX3NjcmlwdF9leGl0OworICAgICAgICBlLT5zdGF0dXMgPSBOR1hfSFRUUF9JTlRFUk5BTF9TRVJWRVJfRVJST1I7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBlLT5wb3MgPSBlLT5idWYuZGF0YTsKKworICAgIGUtPnNwLT52YWx1ZSA9IDA7CisgICAgZS0+c3AtPnRleHQgPSBlLT5idWY7CisgICAgZS0+c3ArKzsKK30KKworCit2b2lkCiBuZ3hfaHR0cF9zY3JpcHRfdmFsdWVfY29kZShuZ3hfaHR0cF9zY3JpcHRfZW5naW5lX3QgKmUpCiB7CiAgICAgbmd4X2h0dHBfc2NyaXB0X3ZhbHVlX2NvZGVfdCAgKmNvZGU7CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9zY3JpcHQuaCBiL3NyYy9odHRwL25neF9odHRwX3NjcmlwdC5oCmluZGV4IDIxOTI3YzEuLmNmODBmMjIgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL25neF9odHRwX3NjcmlwdC5oCisrKyBiL3NyYy9odHRwL25neF9odHRwX3NjcmlwdC5oCkBAIC0xOSw3ICsxOSw3IEBACiAgICAgbmd4X2h0dHBfdmFyaWFibGVfdmFsdWVfdCAgICAgICpzcDsKIAogICAgIG5neF9zdHJfdCAgICAgICAgICAgICAgICAgICAgICAgYnVmOwotICAgIG5neF9zdHJfdCAgICAgICAgICAgICAgICAgICAgICAqbGluZTsKKyAgICBuZ3hfc3RyX3QgICAgICAgICAgICAgICAgICAgICAgIGxpbmU7CiAKICAgICAvKiB0aGUgc3RhcnQgb2YgdGhlIHJld3JpdHRlbiBhcmd1bWVudHMgKi8KICAgICB1X2NoYXIgICAgICAgICAgICAgICAgICAgICAgICAgKmFyZ3M7CkBAIC0yOSw2ICsyOSw3IEBACiAgICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgICAgICBsb2c6MTsKIAogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY2FwdHVyZXM7CisgICAgbmd4X3VpbnRfdCAgICAgICAgICAgICAgICAgICAgICBuY2FwdHVyZXM7CiAKICAgICBuZ3hfaW50X3QgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czsKICAgICBuZ3hfaHR0cF9yZXF1ZXN0X3QgICAgICAgICAgICAgKnJlcXVlc3Q7CkBAIC0xMzAsNiArMTMxLDEyIEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBuZ3hfaHR0cF9zY3JpcHRfY29kZV9wdCAgICAgICAgICBjb2RlOworICAgIG5neF9hcnJheV90ICAgICAgICAgICAgICAgICAgICAgKmxlbmd0aHM7Cit9IG5neF9odHRwX3NjcmlwdF9jb21wbGV4X3ZhbHVlX2NvZGVfdDsKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgbmd4X2h0dHBfc2NyaXB0X2NvZGVfcHQgICAgICAgICAgY29kZTsKICAgICB1aW50cHRyX3QgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTsKICAgICB1aW50cHRyX3QgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0X2xlbjsKICAgICB1aW50cHRyX3QgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0X2RhdGE7CkBAIC0xNTUsNiArMTYyLDcgQEAKIHZvaWQgbmd4X2h0dHBfc2NyaXB0X3N0YXJ0X2FyZ3NfY29kZShuZ3hfaHR0cF9zY3JpcHRfZW5naW5lX3QgKmUpOwogdm9pZCBuZ3hfaHR0cF9zY3JpcHRfcmV0dXJuX2NvZGUobmd4X2h0dHBfc2NyaXB0X2VuZ2luZV90ICplKTsKIHZvaWQgbmd4X2h0dHBfc2NyaXB0X2lmX2NvZGUobmd4X2h0dHBfc2NyaXB0X2VuZ2luZV90ICplKTsKK3ZvaWQgbmd4X2h0dHBfc2NyaXB0X2NvbXBsZXhfdmFsdWVfY29kZShuZ3hfaHR0cF9zY3JpcHRfZW5naW5lX3QgKmUpOwogdm9pZCBuZ3hfaHR0cF9zY3JpcHRfdmFsdWVfY29kZShuZ3hfaHR0cF9zY3JpcHRfZW5naW5lX3QgKmUpOwogdm9pZCBuZ3hfaHR0cF9zY3JpcHRfc2V0X3Zhcl9jb2RlKG5neF9odHRwX3NjcmlwdF9lbmdpbmVfdCAqZSk7CiB2b2lkIG5neF9odHRwX3NjcmlwdF92YXJfY29kZShuZ3hfaHR0cF9zY3JpcHRfZW5naW5lX3QgKmUpOwpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfdXBzdHJlYW0uYyBiL3NyYy9odHRwL25neF9odHRwX3Vwc3RyZWFtLmMKaW5kZXggMDkyOGZiZC4uNTFmZmJjMCAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfdXBzdHJlYW0uYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF91cHN0cmVhbS5jCkBAIC03Nyw3MSArNzcsODAgQEAKICAgICB7IG5neF9zdHJpbmcoIlN0YXR1cyIpLAogICAgICAgICAgICAgICAgICBuZ3hfaHR0cF91cHN0cmVhbV9wcm9jZXNzX2hlYWRlcl9saW5lLAogICAgICAgICAgICAgICAgICBvZmZzZXRvZihuZ3hfaHR0cF91cHN0cmVhbV9oZWFkZXJzX2luX3QsIHN0YXR1cyksCi0gICAgICAgICAgICAgICAgIC8qIFNUVUIgKi8gbmd4X2h0dHBfdXBzdHJlYW1faWdub3JlX2hlYWRlcl9saW5lLCAwIH0sCisgICAgICAgICAgICAgICAgIC8qIFNUVUIgKi8gbmd4X2h0dHBfdXBzdHJlYW1faWdub3JlX2hlYWRlcl9saW5lLCAwLCAwIH0sCiAKICAgICB7IG5neF9zdHJpbmcoIkNvbnRlbnQtVHlwZSIpLAogICAgICAgICAgICAgICAgICBuZ3hfaHR0cF91cHN0cmVhbV9wcm9jZXNzX2hlYWRlcl9saW5lLAogICAgICAgICAgICAgICAgICBvZmZzZXRvZihuZ3hfaHR0cF91cHN0cmVhbV9oZWFkZXJzX2luX3QsIGNvbnRlbnRfdHlwZSksCi0gICAgICAgICAgICAgICAgIG5neF9odHRwX3Vwc3RyZWFtX2NvcHlfY29udGVudF90eXBlLCAwIH0sCisgICAgICAgICAgICAgICAgIG5neF9odHRwX3Vwc3RyZWFtX2NvcHlfY29udGVudF90eXBlLCAwLCAwIH0sCiAKICAgICB7IG5neF9zdHJpbmcoIkNvbnRlbnQtTGVuZ3RoIiksCiAgICAgICAgICAgICAgICAgIG5neF9odHRwX3Vwc3RyZWFtX3Byb2Nlc3NfaGVhZGVyX2xpbmUsCiAgICAgICAgICAgICAgICAgIG9mZnNldG9mKG5neF9odHRwX3Vwc3RyZWFtX2hlYWRlcnNfaW5fdCwgY29udGVudF9sZW5ndGgpLAotICAgICAgICAgICAgICAgICBuZ3hfaHR0cF91cHN0cmVhbV9jb3B5X2NvbnRlbnRfbGVuZ3RoLCAwIH0sCisgICAgICAgICAgICAgICAgIG5neF9odHRwX3Vwc3RyZWFtX2NvcHlfY29udGVudF9sZW5ndGgsIDAsIDAgfSwKIAogICAgIHsgbmd4X3N0cmluZygiRGF0ZSIpLAogICAgICAgICAgICAgICAgICBuZ3hfaHR0cF91cHN0cmVhbV9wcm9jZXNzX2hlYWRlcl9saW5lLAogICAgICAgICAgICAgICAgICBvZmZzZXRvZihuZ3hfaHR0cF91cHN0cmVhbV9oZWFkZXJzX2luX3QsIGRhdGUpLAogICAgICAgICAgICAgICAgICBuZ3hfaHR0cF91cHN0cmVhbV9jb25kaXRpb25hbF9jb3B5X2hlYWRlcl9saW5lLAotICAgICAgICAgICAgICAgICBvZmZzZXRvZihuZ3hfaHR0cF91cHN0cmVhbV9jb25mX3QsIHBhc3NfZGF0ZSkgfSwKKyAgICAgICAgICAgICAgICAgb2Zmc2V0b2Yobmd4X2h0dHBfdXBzdHJlYW1fY29uZl90LCBwYXNzX2RhdGUpLCAwIH0sCiAKICAgICB7IG5neF9zdHJpbmcoIlNlcnZlciIpLAogICAgICAgICAgICAgICAgICBuZ3hfaHR0cF91cHN0cmVhbV9wcm9jZXNzX2hlYWRlcl9saW5lLAogICAgICAgICAgICAgICAgICBvZmZzZXRvZihuZ3hfaHR0cF91cHN0cmVhbV9oZWFkZXJzX2luX3QsIHNlcnZlciksCiAgICAgICAgICAgICAgICAgIG5neF9odHRwX3Vwc3RyZWFtX2NvbmRpdGlvbmFsX2NvcHlfaGVhZGVyX2xpbmUsCi0gICAgICAgICAgICAgICAgIG9mZnNldG9mKG5neF9odHRwX3Vwc3RyZWFtX2NvbmZfdCwgcGFzc19zZXJ2ZXIpIH0sCisgICAgICAgICAgICAgICAgIG9mZnNldG9mKG5neF9odHRwX3Vwc3RyZWFtX2NvbmZfdCwgcGFzc19zZXJ2ZXIpLCAwIH0sCiAKICAgICB7IG5neF9zdHJpbmcoIkxvY2F0aW9uIiksCiAgICAgICAgICAgICAgICAgIG5neF9odHRwX3Vwc3RyZWFtX2lnbm9yZV9oZWFkZXJfbGluZSwgMCwKLSAgICAgICAgICAgICAgICAgbmd4X2h0dHBfdXBzdHJlYW1fcmV3cml0ZV9sb2NhdGlvbiwgMCB9LAorICAgICAgICAgICAgICAgICBuZ3hfaHR0cF91cHN0cmVhbV9yZXdyaXRlX2xvY2F0aW9uLCAwLCAwIH0sCiAKICAgICB7IG5neF9zdHJpbmcoIlJlZnJlc2giKSwKICAgICAgICAgICAgICAgICAgbmd4X2h0dHBfdXBzdHJlYW1faWdub3JlX2hlYWRlcl9saW5lLCAwLAotICAgICAgICAgICAgICAgICBuZ3hfaHR0cF91cHN0cmVhbV9yZXdyaXRlX3JlZnJlc2gsIDAgfSwKKyAgICAgICAgICAgICAgICAgbmd4X2h0dHBfdXBzdHJlYW1fcmV3cml0ZV9yZWZyZXNoLCAwLCAwIH0sCisKKyAgICB7IG5neF9zdHJpbmcoIlNldC1Db29raWUiKSwKKyAgICAgICAgICAgICAgICAgbmd4X2h0dHBfdXBzdHJlYW1faWdub3JlX2hlYWRlcl9saW5lLCAwLAorICAgICAgICAgICAgICAgICBuZ3hfaHR0cF91cHN0cmVhbV9jb3B5X2hlYWRlcl9saW5lLCAwLCAxIH0sCiAKICAgICB7IG5neF9zdHJpbmcoIkNhY2hlLUNvbnRyb2wiKSwKICAgICAgICAgICAgICAgICAgbmd4X2h0dHBfdXBzdHJlYW1fcHJvY2Vzc19tdWx0aV9oZWFkZXJfbGluZXMsCiAgICAgICAgICAgICAgICAgIG9mZnNldG9mKG5neF9odHRwX3Vwc3RyZWFtX2hlYWRlcnNfaW5fdCwgY2FjaGVfY29udHJvbCksCiAgICAgICAgICAgICAgICAgIG5neF9odHRwX3Vwc3RyZWFtX2NvcHlfbXVsdGlfaGVhZGVyX2xpbmVzLAotICAgICAgICAgICAgICAgICBvZmZzZXRvZihuZ3hfaHR0cF9oZWFkZXJzX291dF90LCBjYWNoZV9jb250cm9sKSB9LAorICAgICAgICAgICAgICAgICBvZmZzZXRvZihuZ3hfaHR0cF9oZWFkZXJzX291dF90LCBjYWNoZV9jb250cm9sKSwgMSB9LAogCiAgICAgeyBuZ3hfc3RyaW5nKCJDb25uZWN0aW9uIiksCiAgICAgICAgICAgICAgICAgIG5neF9odHRwX3Vwc3RyZWFtX2lnbm9yZV9oZWFkZXJfbGluZSwgMCwKLSAgICAgICAgICAgICAgICAgbmd4X2h0dHBfdXBzdHJlYW1faWdub3JlX2hlYWRlcl9saW5lLCAwIH0sCisgICAgICAgICAgICAgICAgIG5neF9odHRwX3Vwc3RyZWFtX2lnbm9yZV9oZWFkZXJfbGluZSwgMCwgMCB9LAogCiAgICAgeyBuZ3hfc3RyaW5nKCJYLVBhZCIpLAogICAgICAgICAgICAgICAgICBuZ3hfaHR0cF91cHN0cmVhbV9pZ25vcmVfaGVhZGVyX2xpbmUsIDAsCi0gICAgICAgICAgICAgICAgIG5neF9odHRwX3Vwc3RyZWFtX2lnbm9yZV9oZWFkZXJfbGluZSwgMCB9LAorICAgICAgICAgICAgICAgICBuZ3hfaHR0cF91cHN0cmVhbV9pZ25vcmVfaGVhZGVyX2xpbmUsIDAsIDAgfSwKIAogICAgIHsgbmd4X3N0cmluZygiWC1Qb3dlcmVkLUJ5IiksCiAgICAgICAgICAgICAgICAgIG5neF9odHRwX3Vwc3RyZWFtX2lnbm9yZV9oZWFkZXJfbGluZSwgMCwKICAgICAgICAgICAgICAgICAgbmd4X2h0dHBfdXBzdHJlYW1fY29uZGl0aW9uYWxfY29weV9oZWFkZXJfbGluZSwKLSAgICAgICAgICAgICAgICAgb2Zmc2V0b2Yobmd4X2h0dHBfdXBzdHJlYW1fY29uZl90LCBwYXNzX3hfcG93ZXJlZF9ieSkgfSwKKyAgICAgICAgICAgICAgICAgb2Zmc2V0b2Yobmd4X2h0dHBfdXBzdHJlYW1fY29uZl90LCBwYXNzX3hfcG93ZXJlZF9ieSksIDAgfSwKIAogICAgIHsgbmd4X3N0cmluZygiWC1BY2NlbC1FeHBpcmVzIiksCiAgICAgICAgICAgICAgICAgIG5neF9odHRwX3Vwc3RyZWFtX3Byb2Nlc3NfaGVhZGVyX2xpbmUsCiAgICAgICAgICAgICAgICAgIG9mZnNldG9mKG5neF9odHRwX3Vwc3RyZWFtX2hlYWRlcnNfaW5fdCwgeF9hY2NlbF9leHBpcmVzKSwKICAgICAgICAgICAgICAgICAgbmd4X2h0dHBfdXBzdHJlYW1fY29uZGl0aW9uYWxfY29weV9oZWFkZXJfbGluZSwKLSAgICAgICAgICAgICAgICAgb2Zmc2V0b2Yobmd4X2h0dHBfdXBzdHJlYW1fY29uZl90LCBwYXNzX3hfYWNjZWxfZXhwaXJlcykgfSwKKyAgICAgICAgICAgICAgICAgb2Zmc2V0b2Yobmd4X2h0dHBfdXBzdHJlYW1fY29uZl90LCBwYXNzX3hfYWNjZWxfZXhwaXJlcyksIDAgfSwKKworICAgIHsgbmd4X3N0cmluZygiWC1BY2NlbC1SZWRpcmVjdCIpLAorICAgICAgICAgICAgICAgICBuZ3hfaHR0cF91cHN0cmVhbV9wcm9jZXNzX2hlYWRlcl9saW5lLAorICAgICAgICAgICAgICAgICBvZmZzZXRvZihuZ3hfaHR0cF91cHN0cmVhbV9oZWFkZXJzX2luX3QsIHhfYWNjZWxfcmVkaXJlY3QpLAorICAgICAgICAgICAgICAgICBuZ3hfaHR0cF91cHN0cmVhbV9pZ25vcmVfaGVhZGVyX2xpbmUsIDAsIDAgfSwKIAogI2lmIChOR1hfSFRUUF9HWklQKQogICAgIHsgbmd4X3N0cmluZygiQ29udGVudC1FbmNvZGluZyIpLAogICAgICAgICAgICAgICAgICBuZ3hfaHR0cF91cHN0cmVhbV9wcm9jZXNzX2hlYWRlcl9saW5lLAogICAgICAgICAgICAgICAgICBvZmZzZXRvZihuZ3hfaHR0cF91cHN0cmVhbV9oZWFkZXJzX2luX3QsIGNvbnRlbnRfZW5jb2RpbmcpLAotICAgICAgICAgICAgICAgICBuZ3hfaHR0cF91cHN0cmVhbV9jb3B5X2NvbnRlbnRfZW5jb2RpbmcsIDAgfSwKKyAgICAgICAgICAgICAgICAgbmd4X2h0dHBfdXBzdHJlYW1fY29weV9jb250ZW50X2VuY29kaW5nLCAwLCAwIH0sCiAjZW5kaWYKIAotICAgIHsgbmd4X251bGxfc3RyaW5nLCBOVUxMLCAwLCBOVUxMLCAwIH0KKyAgICB7IG5neF9udWxsX3N0cmluZywgTlVMTCwgMCwgTlVMTCwgMCwgMCB9CiB9OwogCiAKQEAgLTY5OCwxNCArNzA3LDE4IEBACiBzdGF0aWMgdm9pZAogbmd4X2h0dHBfdXBzdHJlYW1fcHJvY2Vzc19oZWFkZXIobmd4X2V2ZW50X3QgKnJldikKIHsKLSAgICBzc2l6ZV90ICAgICAgICAgICAgICAgICAgICBuOwotICAgIG5neF9pbnRfdCAgICAgICAgICAgICAgICAgIHJjOwotICAgIG5neF91aW50X3QgICAgICAgICAgICAgICAgIGk7Ci0gICAgbmd4X2Nvbm5lY3Rpb25fdCAgICAgICAgICAqYzsKLSAgICBuZ3hfaHR0cF9yZXF1ZXN0X3QgICAgICAgICpyOwotICAgIG5neF9odHRwX3Vwc3RyZWFtX3QgICAgICAgKnU7Ci0gICAgbmd4X2h0dHBfZXJyX3BhZ2VfdCAgICAgICAqZXJyX3BhZ2U7Ci0gICAgbmd4X2h0dHBfY29yZV9sb2NfY29uZl90ICAqY2xjZjsKKyAgICBzc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgIG47CisgICAgbmd4X2ludF90ICAgICAgICAgICAgICAgICAgICAgICByYzsKKyAgICBuZ3hfdWludF90ICAgICAgICAgICAgICAgICAgICAgIGksIGtleTsKKyAgICBuZ3hfbGlzdF9wYXJ0X3QgICAgICAgICAgICAgICAgKnBhcnQ7CisgICAgbmd4X3RhYmxlX2VsdF90ICAgICAgICAgICAgICAgICpoOworICAgIG5neF9jb25uZWN0aW9uX3QgICAgICAgICAgICAgICAqYzsKKyAgICBuZ3hfaHR0cF9yZXF1ZXN0X3QgICAgICAgICAgICAgKnI7CisgICAgbmd4X2h0dHBfdXBzdHJlYW1fdCAgICAgICAgICAgICp1OworICAgIG5neF9odHRwX2Vycl9wYWdlX3QgICAgICAgICAgICAqZXJyX3BhZ2U7CisgICAgbmd4X2h0dHBfY29yZV9sb2NfY29uZl90ICAgICAgICpjbGNmOworICAgIG5neF9odHRwX3Vwc3RyZWFtX2hlYWRlcl90ICAgICAqaGg7CisgICAgbmd4X2h0dHBfdXBzdHJlYW1fbWFpbl9jb25mX3QgICp1bWNmOwogCiAgICAgYyA9IHJldi0+ZGF0YTsKICAgICByID0gYy0+ZGF0YTsKQEAgLTg3NSw2ICs4ODgsNDggQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmIChyLT51cHN0cmVhbS0+aGVhZGVyc19pbi54X2FjY2VsX3JlZGlyZWN0KSB7CisgICAgICAgIG5neF9odHRwX3Vwc3RyZWFtX2ZpbmFsaXplX3JlcXVlc3QociwgdSwgTkdYX0RFQ0xJTkVEKTsKKworICAgICAgICB1bWNmID0gbmd4X2h0dHBfZ2V0X21vZHVsZV9tYWluX2NvbmYociwgbmd4X2h0dHBfdXBzdHJlYW1fbW9kdWxlKTsKKyAgICAgICAgaGggPSAobmd4X2h0dHBfdXBzdHJlYW1faGVhZGVyX3QgKikgdW1jZi0+aGVhZGVyc19pbl9oYXNoLmJ1Y2tldHM7CisKKyAgICAgICAgcGFydCA9ICZyLT51cHN0cmVhbS0+aGVhZGVyc19pbi5oZWFkZXJzLnBhcnQ7CisgICAgICAgIGggPSBwYXJ0LT5lbHRzOworCisgICAgICAgIGZvciAoaSA9IDA7IC8qIHZvaWQgKi87IGkrKykgeworCisgICAgICAgICAgICBpZiAoaSA+PSBwYXJ0LT5uZWx0cykgeworICAgICAgICAgICAgICAgIGlmIChwYXJ0LT5uZXh0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgICAgIHBhcnQgPSBwYXJ0LT5uZXh0OworICAgICAgICAgICAgICAgIGggPSBwYXJ0LT5lbHRzOworICAgICAgICAgICAgICAgIGkgPSAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBrZXkgPSBoW2ldLmhhc2ggJSB1bWNmLT5oZWFkZXJzX2luX2hhc2guaGFzaF9zaXplOworCisgICAgICAgICAgICBpZiAoaGhba2V5XS5yZWRpcmVjdAorICAgICAgICAgICAgICAgICYmIGhoW2tleV0ubmFtZS5sZW4gPT0gaFtpXS5rZXkubGVuCisgICAgICAgICAgICAgICAgJiYgbmd4X3N0cmNhc2VjbXAoaGhba2V5XS5uYW1lLmRhdGEsIGhbaV0ua2V5LmRhdGEpID09IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGhoW2tleV0uY29weV9oYW5kbGVyKHIsICZoW2ldLCBoaFtrZXldLmNvbmYpICE9IE5HWF9PSykgeworICAgICAgICAgICAgICAgICAgICBuZ3hfaHR0cF91cHN0cmVhbV9maW5hbGl6ZV9yZXF1ZXN0KHIsIHUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5HWF9IVFRQX0lOVEVSTkFMX1NFUlZFUl9FUlJPUik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIG5neF9odHRwX2ludGVybmFsX3JlZGlyZWN0KHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmci0+dXBzdHJlYW0tPmhlYWRlcnNfaW4ueF9hY2NlbF9yZWRpcmVjdC0+dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG5neF9odHRwX3Vwc3RyZWFtX3NlbmRfcmVzcG9uc2UociwgdSk7CiB9CiAKQEAgLTEzMDcsNiArMTM2MiwxMSBAQAogI2VuZGlmCiAKICAgICByLT5sb2dfaGFuZGxlciA9IHUtPnNhdmVkX2xvZ19oYW5kbGVyOworCisgICAgaWYgKHJjID09IE5HWF9ERUNMSU5FRCkgeworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgci0+Y29ubmVjdGlvbi0+bG9nLT5hY3Rpb24gPSAic2VuZGluZyB0byBjbGllbnQiOwogCiAgICAgaWYgKHJjID09IDAgJiYgci0+bWFpbiA9PSBOVUxMKSB7CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF91cHN0cmVhbS5oIGIvc3JjL2h0dHAvbmd4X2h0dHBfdXBzdHJlYW0uaAppbmRleCBjZjJhZWFhLi4wMGE2NGFjIDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF91cHN0cmVhbS5oCisrKyBiL3NyYy9odHRwL25neF9odHRwX3Vwc3RyZWFtLmgKQEAgLTg3LDYgKzg3LDcgQEAKICAgICBuZ3hfdWludF90ICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDsKICAgICBuZ3hfaHR0cF9oZWFkZXJfaGFuZGxlcl9wdCAgICAgIGNvcHlfaGFuZGxlcjsKICAgICBuZ3hfdWludF90ICAgICAgICAgICAgICAgICAgICAgIGNvbmY7CisgICAgbmd4X3VpbnRfdCAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdDsgIC8qIHVuc2lnbmVkICAgcmVkaXJlY3Q6MTsgKi8KIH0gbmd4X2h0dHBfdXBzdHJlYW1faGVhZGVyX3Q7CiAKIApAQCAtMTAxLDYgKzEwMiw3IEBACiAgICAgbmd4X3RhYmxlX2VsdF90ICAgICAgICAgICAgICAgICpleHBpcmVzOwogICAgIG5neF90YWJsZV9lbHRfdCAgICAgICAgICAgICAgICAqZXRhZzsKICAgICBuZ3hfdGFibGVfZWx0X3QgICAgICAgICAgICAgICAgKnhfYWNjZWxfZXhwaXJlczsKKyAgICBuZ3hfdGFibGVfZWx0X3QgICAgICAgICAgICAgICAgKnhfYWNjZWxfcmVkaXJlY3Q7CiAKICAgICBuZ3hfdGFibGVfZWx0X3QgICAgICAgICAgICAgICAgKmNvbnRlbnRfdHlwZTsKICAgICBuZ3hfdGFibGVfZWx0X3QgICAgICAgICAgICAgICAgKmNvbnRlbnRfbGVuZ3RoOwpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfdmFyaWFibGVzLmMgYi9zcmMvaHR0cC9uZ3hfaHR0cF92YXJpYWJsZXMuYwppbmRleCA0ODhlZmNjLi4xMmFiNTE1IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF92YXJpYWJsZXMuYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF92YXJpYWJsZXMuYwpAQCAtMTUsNiArMTUsOCBAQAogc3RhdGljIG5neF9odHRwX3ZhcmlhYmxlX3ZhbHVlX3QgKgogICAgIG5neF9odHRwX3ZhcmlhYmxlX2hlYWRlcihuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsIHVpbnRwdHJfdCBkYXRhKTsKIHN0YXRpYyBuZ3hfaHR0cF92YXJpYWJsZV92YWx1ZV90ICoKKyAgICBuZ3hfaHR0cF92YXJpYWJsZV9oZWFkZXJzKG5neF9odHRwX3JlcXVlc3RfdCAqciwgdWludHB0cl90IGRhdGEpOworc3RhdGljIG5neF9odHRwX3ZhcmlhYmxlX3ZhbHVlX3QgKgogICAgIG5neF9odHRwX3ZhcmlhYmxlX3Vua25vd25faGVhZGVyKG5neF9odHRwX3JlcXVlc3RfdCAqciwgdWludHB0cl90IGRhdGEpOwogc3RhdGljIG5neF9odHRwX3ZhcmlhYmxlX3ZhbHVlX3QgKgogICAgIG5neF9odHRwX3ZhcmlhYmxlX2hvc3Qobmd4X2h0dHBfcmVxdWVzdF90ICpyLCB1aW50cHRyX3QgZGF0YSk7CkBAIC02Myw2ICs2NSw5IEBACiAgICAgICBvZmZzZXRvZihuZ3hfaHR0cF9yZXF1ZXN0X3QsIGhlYWRlcnNfaW4ueF9mb3J3YXJkZWRfZm9yKSwgMCB9LAogI2VuZGlmCiAKKyAgICB7IG5neF9zdHJpbmcoImh0dHBfY29va2llIiksIG5neF9odHRwX3ZhcmlhYmxlX2hlYWRlcnMsCisgICAgICBvZmZzZXRvZihuZ3hfaHR0cF9yZXF1ZXN0X3QsIGhlYWRlcnNfaW4uY29va2llcyksIDAgfSwKKwogICAgIHsgbmd4X3N0cmluZygiY29udGVudF9sZW5ndGgiKSwgbmd4X2h0dHBfdmFyaWFibGVfaGVhZGVyLAogICAgICAgb2Zmc2V0b2Yobmd4X2h0dHBfcmVxdWVzdF90LCBoZWFkZXJzX2luLmNvbnRlbnRfbGVuZ3RoKSwgMCB9LAogCkBAIC0zMzQsNiArMzM5LDYyIEBACiAKIAogc3RhdGljIG5neF9odHRwX3ZhcmlhYmxlX3ZhbHVlX3QgKgorbmd4X2h0dHBfdmFyaWFibGVfaGVhZGVycyhuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsIHVpbnRwdHJfdCBkYXRhKQoreworICAgIHVfY2hhciAgICAgICAgICAgICAgICAgICAgICAqcDsKKyAgICBuZ3hfdWludF90ICAgICAgICAgICAgICAgICAgIGk7CisgICAgbmd4X2FycmF5X3QgICAgICAgICAgICAgICAgICphOworICAgIG5neF90YWJsZV9lbHRfdCAgICAgICAgICAgICoqaDsKKyAgICBuZ3hfaHR0cF92YXJpYWJsZV92YWx1ZV90ICAgKnZ2OworCisgICAgYSA9IChuZ3hfYXJyYXlfdCAqKSAoKGNoYXIgKikgciArIGRhdGEpOworCisgICAgaWYgKGEtPm5lbHRzID09IDApIHsKKyAgICAgICAgcmV0dXJuIE5HWF9IVFRQX1ZBUl9OT1RfRk9VTkQ7CisgICAgfQorCisgICAgdnYgPSBuZ3hfcGFsbG9jKHItPnBvb2wsIHNpemVvZihuZ3hfaHR0cF92YXJpYWJsZV92YWx1ZV90KSk7CisgICAgaWYgKHZ2ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgdnYtPnZhbHVlID0gMDsKKworICAgIGggPSBhLT5lbHRzOworCisgICAgaWYgKGEtPm5lbHRzID09IDEpIHsKKyAgICAgICAgdnYtPnRleHQgPSAoKmgpLT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIHZ2OworICAgIH0KKworICAgIHZ2LT50ZXh0LmxlbiA9IChzaXplX3QpIC0gKHNzaXplX3QpIChzaXplb2YoIjsgIikgLSAxKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBhLT5uZWx0czsgaSsrKSB7CisgICAgICAgIHZ2LT50ZXh0LmxlbiArPSBoW2ldLT52YWx1ZS5sZW4gKyBzaXplb2YoIjsgIikgLSAxOworICAgIH0KKworICAgIHZ2LT50ZXh0LmRhdGEgPSBuZ3hfcGFsbG9jKHItPnBvb2wsIHZ2LT50ZXh0Lmxlbik7CisgICAgaWYgKHZ2LT50ZXh0LmRhdGEgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBwID0gdnYtPnRleHQuZGF0YTsKKworICAgIGZvciAoaSA9IDA7IC8qIHZvaWQgKi8gOyBpKyspIHsKKyAgICAgICAgcCA9IG5neF9jcHltZW0ocCwgaFtpXS0+dmFsdWUuZGF0YSwgaFtpXS0+dmFsdWUubGVuKTsKKworICAgICAgICBpZiAoaSA9PSBhLT5uZWx0cyAtIDEpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgKnArKyA9ICc7JzsgKnArKyA9ICcgJzsKKyAgICB9CisKKyAgICByZXR1cm4gdnY7Cit9CisKKworc3RhdGljIG5neF9odHRwX3ZhcmlhYmxlX3ZhbHVlX3QgKgogbmd4X2h0dHBfdmFyaWFibGVfdW5rbm93bl9oZWFkZXIobmd4X2h0dHBfcmVxdWVzdF90ICpyLCB1aW50cHRyX3QgZGF0YSkKIHsKICAgICBuZ3hfc3RyX3QgICp2YXIgPSAobmd4X3N0cl90ICopIGRhdGE7CmRpZmYgLS1naXQgYS9zcmMvb3MvdW5peC9uZ3hfb3MuaCBiL3NyYy9vcy91bml4L25neF9vcy5oCmluZGV4IGUzOWFhYjAuLjk3YTI5ZTYgMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF9vcy5oCisrKyBiL3NyYy9vcy91bml4L25neF9vcy5oCkBAIC0zMSw3ICszMSw3IEBACiB9IG5neF9vc19pb190OwogCiAKLXZvaWQgbmd4X2RlYnVnX2luaXQoKTsKK3ZvaWQgbmd4X2RlYnVnX2luaXQodm9pZCk7CiBuZ3hfaW50X3Qgbmd4X29zX2luaXQobmd4X2xvZ190ICpsb2cpOwogdm9pZCBuZ3hfb3Nfc3RhdHVzKG5neF9sb2dfdCAqbG9nKTsKIG5neF9pbnRfdCBuZ3hfZGFlbW9uKG5neF9sb2dfdCAqbG9nKTsKZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9wb3NpeF9jb25maWcuaCBiL3NyYy9vcy91bml4L25neF9wb3NpeF9jb25maWcuaAppbmRleCAwODYyNzI2Li41OTJmZjc2IDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfcG9zaXhfY29uZmlnLmgKKysrIGIvc3JjL29zL3VuaXgvbmd4X3Bvc2l4X2NvbmZpZy5oCkBAIC04LDEzICs4LDEzIEBACiAjZGVmaW5lIF9OR1hfUE9TSVhfQ09ORklHX0hfSU5DTFVERURfCiAKIAotI2lmIDAKKyNpZiAoTkdYX0hQVVgpCiAjZGVmaW5lIF9YT1BFTl9TT1VSQ0UKICNkZWZpbmUgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCAgMQogI2VuZGlmCiAKIAotI2lmIDAKKyNpZiAoTkdYX1RSVTY0KQogI2RlZmluZSBfUkVFTlRSQU5UCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X3Byb2Nlc3MuYyBiL3NyYy9vcy91bml4L25neF9wcm9jZXNzLmMKaW5kZXggMDU2MmE0Ni4uZjk2ODljOSAxMDA2NDQKLS0tIGEvc3JjL29zL3VuaXgvbmd4X3Byb2Nlc3MuYworKysgYi9zcmMvb3MvdW5peC9uZ3hfcHJvY2Vzcy5jCkBAIC0yMyw5ICsyMyw5IEBACiBuZ3hfcHJvY2Vzc190ICAgIG5neF9wcm9jZXNzZXNbTkdYX01BWF9QUk9DRVNTRVNdOwogCiAKLW5neF9waWRfdCBuZ3hfc3Bhd25fcHJvY2VzcyhuZ3hfY3ljbGVfdCAqY3ljbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmd4X3NwYXduX3Byb2NfcHQgcHJvYywgdm9pZCAqZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpuYW1lLCBuZ3hfaW50X3QgcmVzcGF3bikKK25neF9waWRfdAorbmd4X3NwYXduX3Byb2Nlc3Mobmd4X2N5Y2xlX3QgKmN5Y2xlLCBuZ3hfc3Bhd25fcHJvY19wdCBwcm9jLCB2b2lkICpkYXRhLAorICAgIGNoYXIgKm5hbWUsIG5neF9pbnRfdCByZXNwYXduKQogewogICAgIHVfbG9uZyAgICAgb247CiAgICAgbmd4X3BpZF90ICBwaWQ7CkBAIC0xODUsMTQgKzE4NSwxNiBAQAogfQogCiAKLW5neF9waWRfdCBuZ3hfZXhlY3V0ZShuZ3hfY3ljbGVfdCAqY3ljbGUsIG5neF9leGVjX2N0eF90ICpjdHgpCituZ3hfcGlkX3QKK25neF9leGVjdXRlKG5neF9jeWNsZV90ICpjeWNsZSwgbmd4X2V4ZWNfY3R4X3QgKmN0eCkKIHsKICAgICByZXR1cm4gbmd4X3NwYXduX3Byb2Nlc3MoY3ljbGUsIG5neF9leGVjdXRlX3Byb2MsIGN0eCwgY3R4LT5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOR1hfUFJPQ0VTU19ERVRBQ0hFRCk7CiB9CiAKIAotc3RhdGljIHZvaWQgbmd4X2V4ZWN1dGVfcHJvYyhuZ3hfY3ljbGVfdCAqY3ljbGUsIHZvaWQgKmRhdGEpCitzdGF0aWMgdm9pZAorbmd4X2V4ZWN1dGVfcHJvYyhuZ3hfY3ljbGVfdCAqY3ljbGUsIHZvaWQgKmRhdGEpCiB7CiAgICAgbmd4X2V4ZWNfY3R4X3QgICpjdHggPSBkYXRhOwogCkBAIC0yMDYsNyArMjA4LDggQEAKIH0KIAogCi12b2lkIG5neF9wcm9jZXNzX2dldF9zdGF0dXMoKQordm9pZAorbmd4X3Byb2Nlc3NfZ2V0X3N0YXR1cyh2b2lkKQogewogICAgIGludCAgICAgICAgICAgICAgc3RhdHVzOwogICAgIGNoYXIgICAgICAgICAgICAqcHJvY2VzczsKQEAgLTMwMSw3ICszMDQsOCBAQAogfQogCiAKLXZvaWQgbmd4X2RlYnVnX3BvaW50KCkKK3ZvaWQKK25neF9kZWJ1Z19wb2ludCh2b2lkKQogewogICAgIG5neF9jb3JlX2NvbmZfdCAgKmNjZjsKIApkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X3NldHByb2N0aXRsZS5oIGIvc3JjL29zL3VuaXgvbmd4X3NldHByb2N0aXRsZS5oCmluZGV4IDEwNzcyNWEuLjIyZjdlM2UgMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF9zZXRwcm9jdGl0bGUuaAorKysgYi9zcmMvb3MvdW5peC9uZ3hfc2V0cHJvY3RpdGxlLmgKQEAgLTE2LDMwICsxNiwzNiBAQAogI2RlZmluZSBuZ3hfc2V0cHJvY3RpdGxlICAgICAgICAgICBzZXRwcm9jdGl0bGUKIAogCi0jZWxpZiAhZGVmaW5lZCBOR1hfU0VUUFJPQ1RJVExFX1VTRVNfRU5WCisjZWxzZSAvKiAhTkdYX0hBVkVfU0VUUFJPQ1RJVExFICovCiAKLSNkZWZpbmUgTkdYX1NFVFBST0NUSVRMRV9VU0VTX0VOViAgMQorI2lmICFkZWZpbmVkIE5HWF9TRVRQUk9DVElUTEVfVVNFU19FTlYKIAogI2lmIChOR1hfU09MQVJJUykKIAorI2RlZmluZSBOR1hfU0VUUFJPQ1RJVExFX1VTRVNfRU5WICAxCiAjZGVmaW5lIE5HWF9TRVRQUk9DVElUTEVfUEFEICAgICAgICcgJwogCi0jZWxpZiAoTkdYX0xJTlVYKSB8fCAoTkdYX0RBUldJTikKLQotI2RlZmluZSBOR1hfU0VUUFJPQ1RJVExFX1BBRCAgICAgICAnXDAnCi0KLSNlbmRpZgotCiBuZ3hfaW50X3Qgbmd4X2luaXRfc2V0cHJvY3RpdGxlKG5neF9sb2dfdCAqbG9nKTsKIHZvaWQgbmd4X3NldHByb2N0aXRsZShjaGFyICp0aXRsZSk7CiAKKyNlbGlmIChOR1hfTElOVVgpIHx8IChOR1hfREFSV0lOKQogCi0jZWxzZSAvKiAhTkdYX1NFVFBST0NUSVRMRV9VU0VTX0VOViAqLworI2RlZmluZSBOR1hfU0VUUFJPQ1RJVExFX1VTRVNfRU5WICAxCisjZGVmaW5lIE5HWF9TRVRQUk9DVElUTEVfUEFEICAgICAgICdcMCcKKworbmd4X2ludF90IG5neF9pbml0X3NldHByb2N0aXRsZShuZ3hfbG9nX3QgKmxvZyk7Cit2b2lkIG5neF9zZXRwcm9jdGl0bGUoY2hhciAqdGl0bGUpOworCisjZWxzZQogCiAjZGVmaW5lIG5neF9pbml0X3NldHByb2N0aXRsZShsb2cpCiAjZGVmaW5lIG5neF9zZXRwcm9jdGl0bGUodGl0bGUpCiAKLSNlbmRpZgorI2VuZGlmIC8qIE9TZXMgKi8KKworI2VuZGlmIC8qIE5HWF9TRVRQUk9DVElUTEVfVVNFU19FTlYgKi8KKworI2VuZGlmIC8qIE5HWF9IQVZFX1NFVFBST0NUSVRMRSAqLwogCiAKICNlbmRpZiAvKiBfTkdYX1NFVFBST0NUSVRMRV9IX0lOQ0xVREVEXyAqLwo=