ZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9zcF9jb25zdW1lLmMgYi9zdXB3aXNkb20vc3BfY29uc3VtZS5jCmluZGV4IGU3MzU5ZTMuLmRhNmFiODMgMTAwNjQ0Ci0tLSBhL3N1cHdpc2RvbS9zcF9jb25zdW1lLmMKKysrIGIvc3Vwd2lzZG9tL3NwX2NvbnN1bWUuYwpAQCAtMzI2LDE3ICszMjYsMjQgQEAKIHN0YXRpYyB1aW50MTYgZG9fc3RvcChzcF9wb3NfdCogcG9zLCBzcF9jYXJkX3QqIGNhcmQpCiB7CiAgIHVpbnQxNiByZXQ7CisgIGNoYXIgbXNnWzMyXTsKICAgc3BfdHJhbnNkdGxfdCByZWNvcmQ7CiAgIHNwX3ZhbHZlX29mZigpOwogCi0gIGlmKHBvcy0+cHVyY2hhc2UucGFpZF9udW0gPiAwKQorICBNRU1DTEVBUigmcmVjb3JkLCBzaXplb2YocmVjb3JkKSk7CisgIHJldCA9IHNwX3ByZXBhcmVfYmVsb3dfdHJhbnNkdGwocG9zLCBjYXJkLCAmcmVjb3JkKTsKKyAgaWYocmV0KQogICB7Ci0gICAgTUVNQ0xFQVIoJnJlY29yZCwgc2l6ZW9mKHJlY29yZCkpOwotICAgIHJldCA9IHNwX3ByZXBhcmVfYmVsb3dfdHJhbnNkdGwocG9zLCBjYXJkLCAmcmVjb3JkKTsKLSAgICBpZihyZXQpCi0gICAgewotICAgICAgcmV0dXJuIHJldDsKLSAgICB9CisgICAgcmV0dXJuIHJldDsKKyAgfQorICBpZihwb3MtPnB1cmNoYXNlLnBhaWRfc3VtID4gMCkKKyAgeworICAgIHNwcmludGYobXNnLCK5srzGICUwLjJm1KoiLHBvcy0+cHVyY2hhc2UucGFpZF9zdW0vMTAwLjBmKTsKKyAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCK94cr4vMa30SIsbXNnLERFTEFZX1RJTUUycyk7CisgIH0KKyAgZWxzZQorICB7CisgICAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywiveHK+LzGt9EiLCLD4rfRyrnTwyIsREVMQVlfVElNRTJzKTsKICAgfQogICBwb3MtPnBheW1vZGUgPSBQQVlNT0RFX0lOSVQ7CiAgIHBvcy0+c3lzY29uZi53b3JrX21vZGUgPSAwOwpAQCAtMzUzLDExICszNjAsMTEgQEAKICAgaWYocG9zLT5wdXJjaGFzZS5wYWlkX3N1bSA+IDApCiAgIHsKICAgICBzcHJpbnRmKG1zZywiubK8xiAlMC4yZtSqIixwb3MtPnB1cmNoYXNlLnBhaWRfc3VtLzEwMC4wZik7Ci0gICAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywiveHK+LzGt9EiLG1zZyxERUxBWV9USU1FMnMpOworICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsItTdzaO8xrfRIixtc2csREVMQVlfVElNRTJzKTsKICAgfQogICBlbHNlCiAgIHsKLSAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCK94cr4vMa30SIsIsPit9HKudPDIixERUxBWV9USU1FMnMpOworICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsItTdzaO8xrfRIiwiw+K30cq508MiLERFTEFZX1RJTUUycyk7CiAgIH0KIH0KIApAQCAtNDkyLDcgKzQ5OSw3IEBACiAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX05PTkU7CiAgICAgYnJlYWs7CiAgIGNhc2UgQ0FSRFdPUktTVEFUVVNfV09SS0lORzoKLSAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfUEFVU0U7CisgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX1NUT1BQSU5HOwogICAgIGJyZWFrOwogICBjYXNlIENBUkRXT1JLU1RBVFVTX1BBVVNFOgogICAgIGlmKE1FTUNNUChwb3MtPmNhcmRTdGF0ZS5zbnIsIGNhcmQtPmNhcmRwaHlpZCwgNCkgPT0gMCkKQEAgLTUyOCw3ICs1MzUsNyBAQAogICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX0VSUk9SOwogICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19TVE9QUEVEOworICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19OT05FOwogICAgIGNhcmRXb3JrU3RhdGUtPnRpY2sgPSB0aW1lcl9nZXRfdGlja2VyKCk7CiAgICAgYnJlYWs7CiAgIGNhc2UgQ0FSRFdPUktTVEFUVVNfU1RPUFBFRDoK