ZGlmZiAtLWdpdCBhL3dwYV9zdXBwbGljYW50L2FuZHJvaWQuY29uZmlnIGIvd3BhX3N1cHBsaWNhbnQvYW5kcm9pZC5jb25maWcKaW5kZXggOGIzZDZiNC4uNmNmZDY2ZiAxMDA2NDQKLS0tIGEvd3BhX3N1cHBsaWNhbnQvYW5kcm9pZC5jb25maWcKKysrIGIvd3BhX3N1cHBsaWNhbnQvYW5kcm9pZC5jb25maWcKQEAgLTUxNyw3ICs1MTcsNyBAQAogCiAjIEF1dG9zY2FuCiAjIFRoaXMgY2FuIGJlIHVzZWQgdG8gZW5hYmxlIGF1dG9tYXRpYyBzY2FuIHN1cHBvcnQgaW4gd3BhX3N1cHBsaWNhbnQuCi0joFNlZSB3cGFfc3VwcGxpY2FudC5jb25mIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGF1dG9zY2FuIHVzYWdlLgorIyBTZWUgd3BhX3N1cHBsaWNhbnQuY29uZiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBhdXRvc2NhbiB1c2FnZS4KICMKICMgRW5hYmxpbmcgZGlyZWN0bHkgYSBtb2R1bGUgd2lsbCBlbmFibGUgYXV0b3NjYW4gc3VwcG9ydC4KICMgRm9yIGV4cG9uZW50aWFsIG1vZHVsZToKZGlmZiAtLWdpdCBhL3dwYV9zdXBwbGljYW50L2FwLmMgYi93cGFfc3VwcGxpY2FudC9hcC5jCmluZGV4IGI3YjU4Y2QuLjY4ODc0NjkgMTAwNjQ0Ci0tLSBhL3dwYV9zdXBwbGljYW50L2FwLmMKKysrIGIvd3BhX3N1cHBsaWNhbnQvYXAuYwpAQCAtNzMsNyArNzMsNyBAQAogCQkJCSAgc3RydWN0IHdwYV9zc2lkICpzc2lkLAogCQkJCSAgc3RydWN0IGhvc3RhcGRfY29uZmlnICpjb25mKQogewotCXN0cnVjdCBob3N0YXBkX2Jzc19jb25maWcgKmJzcyA9ICZjb25mLT5ic3NbMF07CisJc3RydWN0IGhvc3RhcGRfYnNzX2NvbmZpZyAqYnNzID0gY29uZi0+YnNzWzBdOwogCiAJY29uZi0+ZHJpdmVyID0gd3BhX3MtPmRyaXZlcjsKIApAQCAtNTYxLDggKzU2MSw4IEBACiAJCSAgc2l6ZW9mKHdwYV9zLT5jb25mLT53bW1fYWNfcGFyYW1zKSk7CiAKIAlpZiAocGFyYW1zLnVhcHNkID4gMCkgewotCQljb25mLT5ic3MtPndtbV9lbmFibGVkID0gMTsKLQkJY29uZi0+YnNzLT53bW1fdWFwc2QgPSAxOworCQljb25mLT5ic3NbMF0tPndtbV9lbmFibGVkID0gMTsKKwkJY29uZi0+YnNzWzBdLT53bW1fdWFwc2QgPSAxOwogCX0KIAogCWlmICh3cGFfc3VwcGxpY2FudF9jb25mX2FwKHdwYV9zLCBzc2lkLCBjb25mKSkgewpAQCAtNTczLDkgKzU3Myw5IEBACiAKICNpZmRlZiBDT05GSUdfUDJQCiAJaWYgKHNzaWQtPm1vZGUgPT0gV1BBU19NT0RFX1AyUF9HTykKLQkJY29uZi0+YnNzWzBdLnAycCA9IFAyUF9FTkFCTEVEIHwgUDJQX0dST1VQX09XTkVSOworCQljb25mLT5ic3NbMF0tPnAycCA9IFAyUF9FTkFCTEVEIHwgUDJQX0dST1VQX09XTkVSOwogCWVsc2UgaWYgKHNzaWQtPm1vZGUgPT0gV1BBU19NT0RFX1AyUF9HUk9VUF9GT1JNQVRJT04pCi0JCWNvbmYtPmJzc1swXS5wMnAgPSBQMlBfRU5BQkxFRCB8IFAyUF9HUk9VUF9PV05FUiB8CisJCWNvbmYtPmJzc1swXS0+cDJwID0gUDJQX0VOQUJMRUQgfCBQMlBfR1JPVVBfT1dORVIgfAogCQkJUDJQX0dST1VQX0ZPUk1BVElPTjsKICNlbmRpZiAvKiBDT05GSUdfUDJQICovCiAKQEAgLTU5MCw3ICs1OTAsNyBAQAogCWZvciAoaSA9IDA7IGkgPCBjb25mLT5udW1fYnNzOyBpKyspIHsKIAkJaGFwZF9pZmFjZS0+YnNzW2ldID0KIAkJCWhvc3RhcGRfYWxsb2NfYnNzX2RhdGEoaGFwZF9pZmFjZSwgY29uZiwKLQkJCQkJICAgICAgICZjb25mLT5ic3NbaV0pOworCQkJCQkgICAgICAgY29uZi0+YnNzW2ldKTsKIAkJaWYgKGhhcGRfaWZhY2UtPmJzc1tpXSA9PSBOVUxMKSB7CiAJCQl3cGFfc3VwcGxpY2FudF9hcF9kZWluaXQod3BhX3MpOwogCQkJcmV0dXJuIC0xOwpAQCAtMTA0Miw5ICsxMDQyLDkgQEAKIAogI2lmZGVmIENPTkZJR19QMlAKIAlpZiAoc3NpZC0+bW9kZSA9PSBXUEFTX01PREVfUDJQX0dPKQotCQlpZmFjZS0+Y29uZi0+YnNzWzBdLnAycCA9IFAyUF9FTkFCTEVEIHwgUDJQX0dST1VQX09XTkVSOworCQlpZmFjZS0+Y29uZi0+YnNzWzBdLT5wMnAgPSBQMlBfRU5BQkxFRCB8IFAyUF9HUk9VUF9PV05FUjsKIAllbHNlIGlmIChzc2lkLT5tb2RlID09IFdQQVNfTU9ERV9QMlBfR1JPVVBfRk9STUFUSU9OKQotCQlpZmFjZS0+Y29uZi0+YnNzWzBdLnAycCA9IFAyUF9FTkFCTEVEIHwgUDJQX0dST1VQX09XTkVSIHwKKwkJaWZhY2UtPmNvbmYtPmJzc1swXS0+cDJwID0gUDJQX0VOQUJMRUQgfCBQMlBfR1JPVVBfT1dORVIgfAogCQkJUDJQX0dST1VQX0ZPUk1BVElPTjsKICNlbmRpZiAvKiBDT05GSUdfUDJQICovCiAKZGlmZiAtLWdpdCBhL3dwYV9zdXBwbGljYW50L2N0cmxfaWZhY2UuYyBiL3dwYV9zdXBwbGljYW50L2N0cmxfaWZhY2UuYwppbmRleCAxYjJiYmJiLi45ZjNmZTQyIDEwMDY0NAotLS0gYS93cGFfc3VwcGxpY2FudC9jdHJsX2lmYWNlLmMKKysrIGIvd3BhX3N1cHBsaWNhbnQvY3RybF9pZmFjZS5jCkBAIC0xODEsNyArMTgxLDcgQEAKIAlzdHJ1Y3Qgd3BhX3NzaWQgKmM7CiAKIAkvKgotCSAqIGRpc2FsbG93X2xpc3QgOjo9IDxzc2lkX3NwZWM+IHwgPGJzc2lkX3NwZWM+IHwgPGRpc2FsbG93X2xpc3Q+IHwgk5QKKwkgKiBkaXNhbGxvd19saXN0IDo6PSA8c3NpZF9zcGVjPiB8IDxic3NpZF9zcGVjPiB8IDxkaXNhbGxvd19saXN0PiB8ICIiCiAJICogU1NJRF9TUEVDIDo6PSBzc2lkIDxTU0lEX0hFWD4KIAkgKiBCU1NJRF9TUEVDIDo6PSBic3NpZCA8QlNTSURfSEVYPgogCSAqLwpkaWZmIC0tZ2l0IGEvd3BhX3N1cHBsaWNhbnQvZGVmY29uZmlnIGIvd3BhX3N1cHBsaWNhbnQvZGVmY29uZmlnCmluZGV4IDk4ZmEzMGYuLjQwOWM2MDMgMTAwNjQ0Ci0tLSBhL3dwYV9zdXBwbGljYW50L2RlZmNvbmZpZworKysgYi93cGFfc3VwcGxpY2FudC9kZWZjb25maWcKQEAgLTUyMSw3ICs1MjEsNyBAQAogCiAjIEF1dG9zY2FuCiAjIFRoaXMgY2FuIGJlIHVzZWQgdG8gZW5hYmxlIGF1dG9tYXRpYyBzY2FuIHN1cHBvcnQgaW4gd3BhX3N1cHBsaWNhbnQuCi0jwqBTZWUgd3BhX3N1cHBsaWNhbnQuY29uZiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBhdXRvc2NhbiB1c2FnZS4KKyMgU2VlIHdwYV9zdXBwbGljYW50LmNvbmYgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gYXV0b3NjYW4gdXNhZ2UuCiAjCiAjIEVuYWJsaW5nIGRpcmVjdGx5IGEgbW9kdWxlIHdpbGwgZW5hYmxlIGF1dG9zY2FuIHN1cHBvcnQuCiAjIEZvciBleHBvbmVudGlhbCBtb2R1bGU6CmRpZmYgLS1naXQgYS93cGFfc3VwcGxpY2FudC9kcml2ZXJfaS5oIGIvd3BhX3N1cHBsaWNhbnQvZHJpdmVyX2kuaAppbmRleCA2MjhiODFiLi4xZTFkYzhjIDEwMDY0NAotLS0gYS93cGFfc3VwcGxpY2FudC9kcml2ZXJfaS5oCisrKyBiL3dwYV9zdXBwbGljYW50L2RyaXZlcl9pLmgKQEAgLTM4MCw3ICszODAsNyBAQAogCWlmICh3cGFfcy0+ZHJpdmVyLT5pZl9hZGQpCiAJCXJldHVybiB3cGFfcy0+ZHJpdmVyLT5pZl9hZGQod3BhX3MtPmRydl9wcml2LCB0eXBlLCBpZm5hbWUsCiAJCQkJCSAgICAgYWRkciwgYnNzX2N0eCwgTlVMTCwgZm9yY2VfaWZuYW1lLAotCQkJCQkgICAgIGlmX2FkZHIsIGJyaWRnZSk7CisJCQkJCSAgICAgaWZfYWRkciwgYnJpZGdlLCAwKTsKIAlyZXR1cm4gLTE7CiB9CiAKZGlmZiAtLWdpdCBhL3dwYV9zdXBwbGljYW50L2V2ZW50cy5jIGIvd3BhX3N1cHBsaWNhbnQvZXZlbnRzLmMKaW5kZXggZmRmMjViNS4uYmZmY2QxYSAxMDA2NDQKLS0tIGEvd3BhX3N1cHBsaWNhbnQvZXZlbnRzLmMKKysrIGIvd3BhX3N1cHBsaWNhbnQvZXZlbnRzLmMKQEAgLTI2NDMsNiArMjY0Myw1MiBAQAogfQogCiAKK3N0YXRpYyB2b2lkIHdwYV9zdXBwbGljYW50X3VwZGF0ZV9jaGFubmVsX2xpc3Qoc3RydWN0IHdwYV9zdXBwbGljYW50ICp3cGFfcykKK3sKKwljb25zdCBjaGFyICpybiwgKnJuMjsKKwlzdHJ1Y3Qgd3BhX3N1cHBsaWNhbnQgKmlmczsKKworCWlmICh3cGFfcy0+ZHJ2X3ByaXYgPT0gTlVMTCkKKwkJcmV0dXJuOyAvKiBJZ25vcmUgZXZlbnQgZHVyaW5nIGRydiBpbml0aWFsaXphdGlvbiAqLworCisJZnJlZV9od19mZWF0dXJlcyh3cGFfcyk7CisJd3BhX3MtPmh3Lm1vZGVzID0gd3BhX2Rydl9nZXRfaHdfZmVhdHVyZV9kYXRhKAorCQl3cGFfcywgJndwYV9zLT5ody5udW1fbW9kZXMsICZ3cGFfcy0+aHcuZmxhZ3MpOworCisjaWZkZWYgQ09ORklHX1AyUAorCXdwYXNfcDJwX3VwZGF0ZV9jaGFubmVsX2xpc3Qod3BhX3MpOworI2VuZGlmIC8qIENPTkZJR19QMlAgKi8KKworCS8qCisJICogQ2hlY2sgb3RoZXIgaW50ZXJmYWNlcyB0byBzZWUgaWYgdGhleSBoYXZlIHRoZSBzYW1lIHJhZGlvLW5hbWUuIElmCisJICogc28sIHRoZXkgZ2V0IHVwZGF0ZWQgd2l0aCB0aGlzIHNhbWUgaHcgbW9kZSBpbmZvLgorCSAqLworCWlmICghd3BhX3MtPmRyaXZlci0+Z2V0X3JhZGlvX25hbWUpCisJCXJldHVybjsKKworCXJuID0gd3BhX3MtPmRyaXZlci0+Z2V0X3JhZGlvX25hbWUod3BhX3MtPmRydl9wcml2KTsKKwlpZiAocm4gPT0gTlVMTCB8fCByblswXSA9PSAnXDAnKQorCQlyZXR1cm47CisKKwl3cGFfZGJnKHdwYV9zLCBNU0dfREVCVUcsICJDaGVja2luZyBmb3Igb3RoZXIgdmlydHVhbCBpbnRlcmZhY2VzICIKKwkJInNoYXJpbmcgc2FtZSByYWRpbyAoJXMpIGluIGV2ZW50X2NoYW5uZWxfbGlzdF9jaGFuZ2UiLCBybik7CisKKwlmb3IgKGlmcyA9IHdwYV9zLT5nbG9iYWwtPmlmYWNlczsgaWZzOyBpZnMgPSBpZnMtPm5leHQpIHsKKwkJaWYgKGlmcyA9PSB3cGFfcyB8fCAhaWZzLT5kcml2ZXItPmdldF9yYWRpb19uYW1lKQorCQkJY29udGludWU7CisKKwkJcm4yID0gaWZzLT5kcml2ZXItPmdldF9yYWRpb19uYW1lKGlmcy0+ZHJ2X3ByaXYpOworCQlpZiAocm4yICYmIG9zX3N0cmNtcChybiwgcm4yKSA9PSAwKSB7CisJCQl3cGFfcHJpbnRmKE1TR19ERUJVRywgIiVzOiBVcGRhdGluZyBodyBtb2RlIiwKKwkJCQkgICBpZnMtPmlmbmFtZSk7CisJCQlmcmVlX2h3X2ZlYXR1cmVzKGlmcyk7CisJCQlpZnMtPmh3Lm1vZGVzID0gd3BhX2Rydl9nZXRfaHdfZmVhdHVyZV9kYXRhKAorCQkJCWlmcywgJmlmcy0+aHcubnVtX21vZGVzLCAmaWZzLT5ody5mbGFncyk7CisJCX0KKwl9Cit9CisKKwogdm9pZCB3cGFfc3VwcGxpY2FudF9ldmVudCh2b2lkICpjdHgsIGVudW0gd3BhX2V2ZW50X3R5cGUgZXZlbnQsCiAJCQkgIHVuaW9uIHdwYV9ldmVudF9kYXRhICpkYXRhKQogewpAQCAtMzE3MCwxNiArMzIxNiw3IEBACiAJCXdwYV9zdXBwbGljYW50X3NldF9zdGF0ZSh3cGFfcywgV1BBX0lOVEVSRkFDRV9ESVNBQkxFRCk7CiAJCWJyZWFrOwogCWNhc2UgRVZFTlRfQ0hBTk5FTF9MSVNUX0NIQU5HRUQ6Ci0JCWlmICh3cGFfcy0+ZHJ2X3ByaXYgPT0gTlVMTCkKLQkJCWJyZWFrOyAvKiBJZ25vcmUgZXZlbnQgZHVyaW5nIGRydiBpbml0aWFsaXphdGlvbiAqLwotCi0JCWZyZWVfaHdfZmVhdHVyZXMod3BhX3MpOwotCQl3cGFfcy0+aHcubW9kZXMgPSB3cGFfZHJ2X2dldF9od19mZWF0dXJlX2RhdGEoCi0JCQl3cGFfcywgJndwYV9zLT5ody5udW1fbW9kZXMsICZ3cGFfcy0+aHcuZmxhZ3MpOwotCi0jaWZkZWYgQ09ORklHX1AyUAotCQl3cGFzX3AycF91cGRhdGVfY2hhbm5lbF9saXN0KHdwYV9zKTsKLSNlbmRpZiAvKiBDT05GSUdfUDJQICovCisJCXdwYV9zdXBwbGljYW50X3VwZGF0ZV9jaGFubmVsX2xpc3Qod3BhX3MpOwogCQlicmVhazsKIAljYXNlIEVWRU5UX0lOVEVSRkFDRV9VTkFWQUlMQUJMRToKICNpZmRlZiBDT05GSUdfUDJQCmRpZmYgLS1naXQgYS93cGFfc3VwcGxpY2FudC9wMnBfc3VwcGxpY2FudC5jIGIvd3BhX3N1cHBsaWNhbnQvcDJwX3N1cHBsaWNhbnQuYwppbmRleCBjNGU0MmVhLi40ZjM0Yjc1IDEwMDY0NAotLS0gYS93cGFfc3VwcGxpY2FudC9wMnBfc3VwcGxpY2FudC5jCisrKyBiL3dwYV9zdXBwbGljYW50L3AycF9zdXBwbGljYW50LmMKQEAgLTQ4Nyw2ICs0ODcsMTAgQEAKIAkJd3BhX3MtPnAycF9pbl9wcm92aXNpb25pbmcgPSAwOwogCX0KIAorCXdwYV9zLT5zaG93X2dyb3VwX3N0YXJ0ZWQgPSAwOworCW9zX2ZyZWUod3BhX3MtPmdvX3BhcmFtcyk7CisJd3BhX3MtPmdvX3BhcmFtcyA9IE5VTEw7CisKIAl3cGFfcHJpbnRmKE1TR19ERUJVRywgIlAyUDogUmVtb3ZlIHRlbXBvcmFyeSBncm91cCBuZXR3b3JrIik7CiAJaWYgKHNzaWQgJiYgKHNzaWQtPnAycF9ncm91cCB8fAogCQkgICAgIHNzaWQtPm1vZGUgPT0gV1BBU19NT0RFX1AyUF9HUk9VUF9GT1JNQVRJT04gfHwKZGlmZiAtLWdpdCBhL3dwYV9zdXBwbGljYW50L3NjYW4uYyBiL3dwYV9zdXBwbGljYW50L3NjYW4uYwppbmRleCBkYzk4MzYxLi4xZDdmYWJmIDEwMDY0NAotLS0gYS93cGFfc3VwcGxpY2FudC9zY2FuLmMKKysrIGIvd3BhX3N1cHBsaWNhbnQvc2Nhbi5jCkBAIC02NjMsOCArNjYzLDkgQEAKICNpZmRlZiBDT05GSUdfUDJQCiAJaWYgKCh3cGFfcy0+cDJwX2luX3Byb3Zpc2lvbmluZyB8fCB3cGFfcy0+c2hvd19ncm91cF9zdGFydGVkKSAmJgogCSAgICB3cGFfcy0+Z29fcGFyYW1zKSB7Ci0JCXdwYV9wcmludGYoTVNHX0RFQlVHLCAiUDJQOiBVc2Ugc3BlY2lmaWMgU1NJRCBmb3Igc2NhbiBkdXJpbmcgIgotCQkJICAgIlAyUCBncm91cCBmb3JtYXRpb24iKTsKKwkJd3BhX3ByaW50ZihNU0dfREVCVUcsICJQMlA6IFVzZSBzcGVjaWZpYyBTU0lEIGZvciBzY2FuIGR1cmluZyBQMlAgZ3JvdXAgZm9ybWF0aW9uIChwMnBfaW5fcHJvdmlzaW9uaW5nPSVkIHNob3dfZ3JvdXBfc3RhcnRlZD0lZCkiLAorCQkJICAgd3BhX3MtPnAycF9pbl9wcm92aXNpb25pbmcsCisJCQkgICB3cGFfcy0+c2hvd19ncm91cF9zdGFydGVkKTsKIAkJcGFyYW1zLnNzaWRzWzBdLnNzaWQgPSB3cGFfcy0+Z29fcGFyYW1zLT5zc2lkOwogCQlwYXJhbXMuc3NpZHNbMF0uc3NpZF9sZW4gPSB3cGFfcy0+Z29fcGFyYW1zLT5zc2lkX2xlbjsKIAkJcGFyYW1zLm51bV9zc2lkcyA9IDE7CmRpZmYgLS1naXQgYS93cGFfc3VwcGxpY2FudC9zbWUuYyBiL3dwYV9zdXBwbGljYW50L3NtZS5jCmluZGV4IDkyNWQxMzIuLjg3YzE0YWUgMTAwNjQ0Ci0tLSBhL3dwYV9zdXBwbGljYW50L3NtZS5jCisrKyBiL3dwYV9zdXBwbGljYW50L3NtZS5jCkBAIC00Niw3ICs0Niw3IEBACiB7CiAJaW50IGk7CiAJZm9yIChpID0gMDsgaSA8IGlkeDsgaSsrKSB7Ci0JCWlmIChhcnJheVtpXSA9PSAtMSkKKwkJaWYgKGFycmF5W2ldIDw9IDApCiAJCQlyZXR1cm4gMDsKIAl9CiAJcmV0dXJuIDE7CkBAIC01Niw5ICs1Niw5IEBACiBzdGF0aWMgaW50IHNtZV9zZXRfc2FlX2dyb3VwKHN0cnVjdCB3cGFfc3VwcGxpY2FudCAqd3BhX3MpCiB7CiAJaW50ICpncm91cHMgPSB3cGFfcy0+Y29uZi0+c2FlX2dyb3VwczsKLQlpbnQgZGVmYXVsdF9ncm91cHNbXSA9IHsgMTksIDIwLCAyMSwgMjUsIDI2IH07CisJaW50IGRlZmF1bHRfZ3JvdXBzW10gPSB7IDE5LCAyMCwgMjEsIDI1LCAyNiwgMCB9OwogCi0JaWYgKCFncm91cHMpCisJaWYgKCFncm91cHMgfHwgZ3JvdXBzWzBdIDw9IDApCiAJCWdyb3VwcyA9IGRlZmF1bHRfZ3JvdXBzOwogCiAJLyogQ29uZmlndXJhdGlvbiBtYXkgaGF2ZSBjaGFuZ2VkLCBzbyB2YWxpZGF0ZSBjdXJyZW50IGluZGV4ICovCkBAIC00MzgsNiArNDM4LDcgQEAKICNpZmRlZiBDT05GSUdfU0FFCiAJd3BhX3MtPnNtZS5zYWUuc3RhdGUgPSBTQUVfTk9USElORzsKIAl3cGFfcy0+c21lLnNhZS5zZW5kX2NvbmZpcm0gPSAwOworCXdwYV9zLT5zbWUuc2FlX2dyb3VwX2luZGV4ID0gMDsKICNlbmRpZiAvKiBDT05GSUdfU0FFICovCiAJc21lX3NlbmRfYXV0aGVudGljYXRpb24od3BhX3MsIGJzcywgc3NpZCwgMSk7CiB9CkBAIC00ODIsMTUgKzQ4MywxOCBAQAogCQlyZXR1cm4gLTE7CiAKIAlpZiAoYXV0aF90cmFuc2FjdGlvbiA9PSAxKSB7CisJCWludCAqZ3JvdXBzID0gd3BhX3MtPmNvbmYtPnNhZV9ncm91cHM7CisKIAkJd3BhX2RiZyh3cGFfcywgTVNHX0RFQlVHLCAiU01FIFNBRSBjb21taXQiKTsKIAkJaWYgKHdwYV9zLT5jdXJyZW50X2JzcyA9PSBOVUxMIHx8CiAJCSAgICB3cGFfcy0+Y3VycmVudF9zc2lkID09IE5VTEwpCiAJCQlyZXR1cm4gLTE7CiAJCWlmICh3cGFfcy0+c21lLnNhZS5zdGF0ZSAhPSBTQUVfQ09NTUlUVEVEKQogCQkJcmV0dXJuIC0xOworCQlpZiAoZ3JvdXBzICYmIGdyb3Vwc1swXSA8PSAwKQorCQkJZ3JvdXBzID0gTlVMTDsKIAkJaWYgKHNhZV9wYXJzZV9jb21taXQoJndwYV9zLT5zbWUuc2FlLCBkYXRhLCBsZW4sIE5VTEwsIE5VTEwsCi0JCQkJICAgICB3cGFfcy0+Y29uZi0+c2FlX2dyb3VwcykgIT0KLQkJICAgIFdMQU5fU1RBVFVTX1NVQ0NFU1MpCisJCQkJICAgICBncm91cHMpICE9IFdMQU5fU1RBVFVTX1NVQ0NFU1MpCiAJCQlyZXR1cm4gLTE7CiAKIAkJaWYgKHNhZV9wcm9jZXNzX2NvbW1pdCgmd3BhX3MtPnNtZS5zYWUpIDwgMCkgewpkaWZmIC0tZ2l0IGEvd3BhX3N1cHBsaWNhbnQvd3BhX3N1cHBsaWNhbnQuY29uZiBiL3dwYV9zdXBwbGljYW50L3dwYV9zdXBwbGljYW50LmNvbmYKaW5kZXggNjQxNGY0NC4uMTFiZThkZCAxMDA2NDQKLS0tIGEvd3BhX3N1cHBsaWNhbnQvd3BhX3N1cHBsaWNhbnQuY29uZgorKysgYi93cGFfc3VwcGxpY2FudC93cGFfc3VwcGxpY2FudC5jb25mCkBAIC0yNDEsMTQgKzI0MSwxNCBAQAogIyBUaGlzIGlzIGFuIG9wdGlvbmFsIHNldCBvZiBwYXJhbWV0ZXJzIGZvciBhdXRvbWF0aWMgc2Nhbm5pbmcKICMgd2l0aGluIGFuIGludGVyZmFjZSBpbiBmb2xsb3dpbmcgZm9ybWF0OgogI2F1dG9zY2FuPTxhdXRvc2NhbiBtb2R1bGUgbmFtZT46PG1vZHVsZSBwYXJhbWV0ZXJzPgotI8KgYXV0b3NjYW4gaXMgbGlrZSBiZ3NjYW4gYnV0IG9uIGRpc2Nvbm5lY3RlZCBvciBpbmFjdGl2ZSBzdGF0ZS4KLSPCoEZvciBpbnN0YW5jZSwgb24gZXhwb25lbnRpYWwgbW9kdWxlIHBhcmFtZXRlcnMgd291bGQgYmUgPGJhc2U+OjxsaW1pdD4KKyMgYXV0b3NjYW4gaXMgbGlrZSBiZ3NjYW4gYnV0IG9uIGRpc2Nvbm5lY3RlZCBvciBpbmFjdGl2ZSBzdGF0ZS4KKyMgRm9yIGluc3RhbmNlLCBvbiBleHBvbmVudGlhbCBtb2R1bGUgcGFyYW1ldGVycyB3b3VsZCBiZSA8YmFzZT46PGxpbWl0PgogI2F1dG9zY2FuPWV4cG9uZW50aWFsOjM6MzAwCiAjIFdoaWNoIG1lYW5zIGEgZGVsYXkgYmV0d2VlbiBzY2FucyBvbiBhIGJhc2UgZXhwb25lbnRpYWwgb2YgMywKLSPCoHVwIHRvIHRoZSBsaW1pdCBvZiAzMDAgc2Vjb25kcyAoMywgOSwgMjcgLi4uIDMwMCkKLSPCoEZvciBwZXJpb2RpYyBtb2R1bGUsIHBhcmFtZXRlcnMgd291bGQgYmUgPGZpeGVkIGludGVydmFsPgorIyB1cCB0byB0aGUgbGltaXQgb2YgMzAwIHNlY29uZHMgKDMsIDksIDI3IC4uLiAzMDApCisjIEZvciBwZXJpb2RpYyBtb2R1bGUsIHBhcmFtZXRlcnMgd291bGQgYmUgPGZpeGVkIGludGVydmFsPgogI2F1dG9zY2FuPXBlcmlvZGljOjMwCi0jwqBTbyBhIGRlbGF5IG9mIDMwIHNlY29uZHMgd2lsbCBiZSBhcHBsaWVkIGJldHdlZW4gZWFjaCBzY2FuCisjIFNvIGEgZGVsYXkgb2YgMzAgc2Vjb25kcyB3aWxsIGJlIGFwcGxpZWQgYmV0d2VlbiBlYWNoIHNjYW4KIAogIyBmaWx0ZXJfc3NpZHMgLSBTU0lELWJhc2VkIHNjYW4gcmVzdWx0IGZpbHRlcmluZwogIyAwID0gZG8gbm90IGZpbHRlciBzY2FuIHJlc3VsdHMgKGRlZmF1bHQpCg==