ZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9zcF9jb25zdGFudC5oIGIvc3Vwd2lzZG9tL3NwX2NvbnN0YW50LmgKaW5kZXggYWY1YjQzYy4uNjk3MTc3NSAxMDA2NDQKLS0tIGEvc3Vwd2lzZG9tL3NwX2NvbnN0YW50LmgKKysrIGIvc3Vwd2lzZG9tL3NwX2NvbnN0YW50LmgKQEAgLTIzLDYgKzIzLDggQEAKICNkZWZpbmUgUkNfTk9UX1NBTUVfQ0FSRAkJCQkzMAkvL7K7zay/qAogCiAjZGVmaW5lIFJDX1VQRFBST0dfRVJSCQkJCQk0MwkvL8n9vLbKp7DcCisjZGVmaW5lIFJDX1dBVEVSX0xJTUlUX09VVAkJCQk0NCAgLy8gtaW0zsH3wb+zrM/eCisjZGVmaW5lIFJDX0FNT1VOVF9MSU1JVF9PVVQJCQkJNDUgIC8vILWltM7P+7fRvfC27rOsz94KIAogI2RlZmluZSBSQ19DT05GUEFSQV9DUkNfRVJSICAgCQkJNTUgIC8vxeTWw7LOyv1jcmO07c7zCiAjZGVmaW5lIFJDX1RSQU5TRFRMX0ZVTEwJCQkJNTgJLy8JwffLrtLRwvoKZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9zcF9jb25zdW1lLmMgYi9zdXB3aXNkb20vc3BfY29uc3VtZS5jCmluZGV4IGZmNTNiMjcuLmQxNGY3MjggMTAwNjQ0Ci0tLSBhL3N1cHdpc2RvbS9zcF9jb25zdW1lLmMKKysrIGIvc3Vwd2lzZG9tL3NwX2NvbnN1bWUuYwpAQCAtMzEzLDYgKzMxMywxNSBAQAogCiAgIGlmKHBvcy0+cHVyY2hhc2UucHJlcGFpZF9udW0gPiAwKQogICB7CisgICAgaWYoKHBvcy0+cHVyY2hhc2UucGFpZF9udW0gK3Bvcy0+cHVyY2hhc2UucHJlcGFpZF9udW0pID49IGNhcmQtPndhdGVybGltaXQpCisgICAgeworICAgICAgcmV0dXJuIFJDX1dBVEVSX0xJTUlUX09VVDsKKyAgICB9CisgICAgZWxzZSBpZigocG9zLT5wdXJjaGFzZS5wYWlkX3N1bSArcG9zLT5wdXJjaGFzZS5wcmVwYWlkX2FtdCkgPj0gY2FyZC0+YW1vdW50bGltaXQpCisgICAgeworICAgICAgcmV0dXJuIFJDX0FNT1VOVF9MSU1JVF9PVVQ7CisgICAgfQorCiAgICAgcG9zLT5wdXJjaGFzZS5wYWlkX251bSArPSBwb3MtPnB1cmNoYXNlLnByZXBhaWRfbnVtOwogICAgIHBvcy0+cHVyY2hhc2UucGFpZF9zdW0gKz0gcG9zLT5wdXJjaGFzZS5wcmVwYWlkX2FtdDsKICAgICBwb3MtPnB1cmNoYXNlLnByZXBhaWRfbnVtID0gMDsKQEAgLTQ0Miw4ICs0NTEsMjMgQEAKICAgICB9CiAgICAgY2FyZFdvcmtTdGF0ZS0+cGF1c2Vfc3RhdHVzID0gMDsKICAgICByZXQgPSBkb193b3JrKHBvcywgY2FyZCk7CisgICAgaWYoUkNfV0FURVJfTElNSVRfT1VUID09IHJldCkKKyAgICB7CisgICAgICBzcF92YWx2ZV9vZmYoKTsKKyAgICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsICLNo9a5s/bLriIsItLRtO+1pbTOs/bLrsnPz94iLCBERUxBWV9USU1FMnMpOworICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX1NUT1BQSU5HOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGVsc2UgaWYoUkNfQU1PVU5UX0xJTUlUX09VVCA9PSByZXQpCisgICAgeworICAgICAgc3BfdmFsdmVfb2ZmKCk7CisgICAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCAizaPWubP2y64iLCLS0bTvtaW0zr3wtu7Jz8/eIiwgREVMQVlfVElNRTJzKTsKKyAgICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19TVE9QUElORzsKKyAgICAgIGJyZWFrOworICAgIH0KICAgICBpZihyZXQpCiAgICAgeworICAgICAgc3BfdmFsdmVfb2ZmKCk7CiAgICAgICBzaG93X2Vycm9yKHBvcywiz/u30cqnsNwiLHJldCk7CiAgICAgICBlcnIgPSBkb19zdG9wKHBvcywgY2FyZCk7CiAgICAgICBpZihlcnIgIT0gMCkKQEAgLTQ1MywxOCArNDc3LDYgQEAKICAgICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19FUlJPUjsKICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBpZihwb3MtPnB1cmNoYXNlLnVzZWRfbnVtID49IGNhcmQtPndhdGVybGltaXQpCi0gICAgewotICAgICAgc3BfdmFsdmVfb2ZmKCk7Ci0gICAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCAizaPWubP2y64iLCLS0bTvtaW0zrP2y67Jz8/eIiwgREVMQVlfVElNRTJzKTsKLSAgICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19TVE9QUElORzsKLSAgICB9Ci0gICAgZWxzZSBpZihwb3MtPnB1cmNoYXNlLnBhaWRfc3VtID49IGNhcmQtPmFtb3VudGxpbWl0KQotICAgIHsKLSAgICAgIHNwX3ZhbHZlX29mZigpOwotICAgICAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywgIs2j1rmz9suuIiwi0tG077WltM698Lbuyc/P3iIsIERFTEFZX1RJTUUycyk7Ci0gICAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfU1RPUFBJTkc7Ci0gICAgfQogICAgIGNhcmRXb3JrU3RhdGUtPnBhdXNlX3RpY2sgPSB0aW1lcl9nZXRfdGlja2VyKCk7CiAgICAgYnJlYWs7CiAgIGNhc2UgQ0FSRFdPUktTVEFUVVNfU1RPUFBJTkc6CkBAIC03MDYsOCArNzE4LDIzIEBACiAgICAgYnJlYWs7CiAgIGNhc2UgQ0FSRFdPUktTVEFUVVNfV09SS0lORzoKICAgICByZXQgPSBkb193b3JrKHBvcywgJkNBUkQpOworICAgIGlmKFJDX1dBVEVSX0xJTUlUX09VVCA9PSByZXQpCisgICAgeworICAgICAgc3BfdmFsdmVfb2ZmKCk7CisgICAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCAizaPWubP2y64iLCLS0bTvtaW0zrP2y67Jz8/eIiwgREVMQVlfVElNRTJzKTsKKyAgICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19TVE9QUElORzsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBlbHNlIGlmKFJDX0FNT1VOVF9MSU1JVF9PVVQgPT0gcmV0KQorICAgIHsKKyAgICAgIHNwX3ZhbHZlX29mZigpOworICAgICAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywgIs2j1rmz9suuIiwi0tG077WltM698Lbuyc/P3iIsIERFTEFZX1RJTUUycyk7CisgICAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfU1RPUFBJTkc7CisgICAgICBicmVhazsKKyAgICB9CiAgICAgaWYocmV0KQogICAgIHsKKyAgICAgIHNwX3ZhbHZlX29mZigpOwogICAgICAgc2hvd19lcnJvcihwb3MsIs/7t9HKp7DcIixyZXQpOwogICAgICAgcmV0ID0gZG9fc3RvcChwb3MsICZDQVJEKTsKICAgICAgIGlmKHJldCkKQEAgLTcxNywxOCArNzQ0LDYgQEAKICAgICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19FUlJPUjsKICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBpZihwb3MtPnB1cmNoYXNlLnVzZWRfbnVtID49IENBUkQud2F0ZXJsaW1pdCkKLSAgICB7Ci0gICAgICBzcF92YWx2ZV9vZmYoKTsKLSAgICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsICLNo9a5s/bLriIsItLRtO+1pbTOs/bLrsnPz94iLCBERUxBWV9USU1FMnMpOwotICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX1NUT1BQSU5HOwotICAgIH0KLSAgICBlbHNlIGlmKHBvcy0+cHVyY2hhc2UucGFpZF9zdW0gPj0gQ0FSRC5hbW91bnRsaW1pdCkKLSAgICB7Ci0gICAgICBzcF92YWx2ZV9vZmYoKTsKLSAgICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsICLNo9a5s/bLriIsItLRtO+1pbTOvfC27snPz94iLCBERUxBWV9USU1FMnMpOwotICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX1NUT1BQSU5HOwotICAgIH0KICAgICAvKirIt8jPs/bLrrrzs6y5/bXItP3KsbzkzrSz9suuzaPWubP2y64qKi8KICAgICBDQVJELnFyY29kZS5ub3d0aW1lID0gc3BfZ2V0X3RpY2tlcigpOwogICAgIGlmKChDQVJELnFyY29kZS5ub3d0aW1lIC0gQ0FSRC5xcmNvZGUuc3RhcnR0aW1lKSA+PSBDQVJELnFyY29kZS53YWl0dGltZSpERUxBWV9USU1FMXMpCg==