ZGlmZiAtLWdpdCBhL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKaW5kZXggMTZjYTY0Yi4uMzYyZGIyMyAxMDA2NDQKLS0tIGEvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKKysrIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKQEAgLTksNiArOSw0NCBAQAogPHRpdGxlIGxhbmc9ImVuIj5uZ2lueCBjaGFuZ2Vsb2c8L3RpdGxlPgogCiAKKzxjaGFuZ2VzIHZlcj0iMC4xLjM3IiBkYXRlPSIyMy4wNi4yMDA1Ij4KKworPGNoYW5nZSB0eXBlPSJjaGFuZ2UiPgorPHBhcmEgbGFuZz0icnUiPgor1yDLz87DxSDGwcrMwSBuZ2lueC5waWQg1MXQxdLYIMTPwsHXzNHF1NPRICJcbiIuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Citub3cgdGhlICJcbiIgaXMgYWRkZWQgdG8gdGhlIGVuZCBvZiB0aGUgIm5naW54LnBpZCIgZmlsZS4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+Cis8cGFyYSBsYW5nPSJydSI+CivQ0skg18vMwN7FzsnJIMLPzNjbz8fPIMvPzMnexdPU18Eg19PUwdfPyyDJzMkgzsXTy8/M2MvJyCDCz8zY28nIINfT1MHXz8sKK9Mg0M/Nz93YwCBTU0kgz9TXxdQgzc/HINDF0sXEwdfB1NjT0SDOxSDQz8zOz9PU2MAuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgcmVzcG9uc2VzIG1heSBiZSB0cmFuc2ZlcnJlZCBub3QgY29tcGxldGVseSwKK2lmIG1hbnkgcGFydHMgb3IgdGhlIGJpZyBwYXJ0cyB3ZXJlIGluY2x1ZGVkIGJ5IFNTSS4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+Cis8cGFyYSBsYW5nPSJydSI+CivF08zJINfTxSDC3MvFzsTZINfP2tfSwd3BzMkgz9TXxdQgNDA0LCDUzyDQ0skgydPQz8zY2s/Xwc7JySDQwdLBzcXU0sEgaHR0cF80MDQKK9cgxMnSxcvUydfByCBwcm94eV9uZXh0X3Vwc3RyZWFtIMnMySBmYXN0Y2dpX25leHRfdXBzdHJlYW0sIG5naW54CivOwd7JzsHMINrB0NLB28nXwdTYINfTxSDC3MvFzsTZINPOz9fBLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgoraWYgYWxsIGJhY2tlbmRzIGhhZCByZXR1cm5lZCB0aGUgNDA0IHJlcG9uc2UgYW5kIHRoZSAiaHR0cF80MDQiIHBhcmFtZXRlciBvZgordGhlICJwcm94eV9uZXh0X3Vwc3RyZWFtIiBvciAiZmFzdGNnaV9uZXh0X3Vwc3RyZWFtIiBkaXJlY3RpdmVzIHdhcyB1c2VkLAordGhlbiBuZ2lueCBzdGFydGVkIHRvIHJlcXVlc3QgYWxsIGJhY2tlbmRzIGFnYWluLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzwvY2hhbmdlcz4KKworCiA8Y2hhbmdlcyB2ZXI9IjAuMS4zNiIgZGF0ZT0iMTUuMDYuMjAwNSI+CiAKIDxjaGFuZ2UgdHlwZT0iY2hhbmdlIj4KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25naW54LmggYi9zcmMvY29yZS9uZ2lueC5oCmluZGV4IDRlOWZmNzkuLmY5ZjFhMDYgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25naW54LmgKKysrIGIvc3JjL2NvcmUvbmdpbnguaApAQCAtOCw3ICs4LDcgQEAKICNkZWZpbmUgX05HSU5YX0hfSU5DTFVERURfCiAKIAotI2RlZmluZSBOR0lOWF9WRVIgICAgICAgICAgIm5naW54LzAuMS4zNiIKKyNkZWZpbmUgTkdJTlhfVkVSICAgICAgICAgICJuZ2lueC8wLjEuMzciCiAKICNkZWZpbmUgTkdJTlhfVkFSICAgICAgICAgICJOR0lOWCIKICNkZWZpbmUgTkdYX05FV1BJRF9FWFQgICAgICIubmV3YmluIgpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbmd4X2N5Y2xlLmMgYi9zcmMvY29yZS9uZ3hfY3ljbGUuYwppbmRleCA1NzgwNjQzLi5iNjcyMjNhIDEwMDY0NAotLS0gYS9zcmMvY29yZS9uZ3hfY3ljbGUuYworKysgYi9zcmMvY29yZS9uZ3hfY3ljbGUuYwpAQCAtNzQ0LDcgKzc0NCw3IEBACiAgICAgfQogCiAgICAgaWYgKCFuZ3hfdGVzdF9jb25maWcpIHsKLSAgICAgICAgbGVuID0gbmd4X3NwcmludGYocGlkLCAiJVAiLCBuZ3hfcGlkKSAtIHBpZDsKKyAgICAgICAgbGVuID0gbmd4X3NwcmludGYocGlkLCAiJVAlTiIsIG5neF9waWQpIC0gcGlkOwogCiAgICAgICAgIGlmIChuZ3hfd3JpdGVfZmlsZSgmZmlsZSwgcGlkLCBsZW4sIDApID09IE5HWF9FUlJPUikgewogICAgICAgICAgICAgcmV0dXJuIE5HWF9FUlJPUjsKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25neF9zdHJpbmcuYyBiL3NyYy9jb3JlL25neF9zdHJpbmcuYwppbmRleCA5Y2JmM2M5Li5lMjFhOWZjIDEwMDY0NAotLS0gYS9zcmMvY29yZS9uZ3hfc3RyaW5nLmMKKysrIGIvc3JjL2NvcmUvbmd4X3N0cmluZy5jCkBAIC02Miw2ICs2Miw3IEBACiAgKiAgICAlViAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXIgdG8gbmd4X3N0cl90CiAgKiAgICAlcyAgICAgICAgICAgICAgICAgICAgICAgIG51bGwtdGVybWluYXRlZCBzdHJpbmcKICAqICAgICVaICAgICAgICAgICAgICAgICAgICAgICAgJ1wwJworICogICAgJU4gICAgICAgICAgICAgICAgICAgICAgICAnXG4nCiAgKiAgICAlYyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIKICAqICAgICUlICAgICAgICAgICAgICAgICAgICAgICAgJQogICoKQEAgLTMxNSw2ICszMTYsMTUgQEAKIAogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCisgICAgICAgICAgICBjYXNlICdOJzoKKyNpZiAoTkdYX1dJTjMyKQorICAgICAgICAgICAgICAgICpidWYrKyA9IENSOworI2VuZGlmCisgICAgICAgICAgICAgICAgKmJ1ZisrID0gTEY7CisgICAgICAgICAgICAgICAgZm10Kys7CisKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAgY2FzZSAnJSc6CiAgICAgICAgICAgICAgICAgKmJ1ZisrID0gJyUnOwogICAgICAgICAgICAgICAgIGZtdCsrOwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbmd4X3RpbWVzLmMgYi9zcmMvY29yZS9uZ3hfdGltZXMuYwppbmRleCBmNDM5ODdlLi4zYjBkYzM3IDEwMDY0NAotLS0gYS9zcmMvY29yZS9uZ3hfdGltZXMuYworKysgYi9zcmMvY29yZS9uZ3hfdGltZXMuYwpAQCAtNjAsMTEgKzYwLDExIEBACiAKIAogc3RhdGljIHVfY2hhciAgY2FjaGVkX2Vycl9sb2dfdGltZVtOR1hfVElNRV9TTE9UU10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpemVvZigiMTk3MC8wOS8yOCAxMjowMDowMCIpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2l6ZW9mKCIxOTcwLzA5LzI4IDEyOjAwOjAwIildOwogc3RhdGljIHVfY2hhciAgY2FjaGVkX2h0dHBfdGltZVtOR1hfVElNRV9TTE9UU10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2l6ZW9mKCJNb24sIDI4IFNlcCAxOTcwIDA2OjAwOjAwIEdNVCIpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2l6ZW9mKCJNb24sIDI4IFNlcCAxOTcwIDA2OjAwOjAwIEdNVCIpXTsKIHN0YXRpYyB1X2NoYXIgIGNhY2hlZF9odHRwX2xvZ190aW1lW05HWF9USU1FX1NMT1RTXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplb2YoIjI4L1NlcC8xOTcwOjEyOjAwOjAwICswNjAwIildOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplb2YoIjI4L1NlcC8xOTcwOjEyOjAwOjAwICswNjAwIildOwogCiAKIHN0YXRpYyBjaGFyICAqd2Vla1tdID0geyAiU3VuIiwgIk1vbiIsICJUdWUiLCAiV2VkIiwgIlRodSIsICJGcmkiLCAiU2F0IiB9OwpkaWZmIC0tZ2l0IGEvc3JjL2V2ZW50L25neF9ldmVudF9jb25uZWN0LmMgYi9zcmMvZXZlbnQvbmd4X2V2ZW50X2Nvbm5lY3QuYwppbmRleCAyZjU1OWEzLi5lMDdhMzNkIDEwMDY0NAotLS0gYS9zcmMvZXZlbnQvbmd4X2V2ZW50X2Nvbm5lY3QuYworKysgYi9zcmMvZXZlbnQvbmd4X2V2ZW50X2Nvbm5lY3QuYwpAQCAtMzc2LDE4ICszNzYsMjAgQEAKIAogCiB2b2lkCi1uZ3hfZXZlbnRfY29ubmVjdF9wZWVyX2ZhaWxlZChuZ3hfcGVlcl9jb25uZWN0aW9uX3QgKnBjKQorbmd4X2V2ZW50X2Nvbm5lY3RfcGVlcl9mYWlsZWQobmd4X3BlZXJfY29ubmVjdGlvbl90ICpwYywgbmd4X3VpbnRfdCBkb3duKQogewogICAgIHRpbWVfdCAgbm93OwogCi0gICAgbm93ID0gbmd4X3RpbWUoKTsKKyAgICBpZiAoZG93bikgeworICAgICAgICBub3cgPSBuZ3hfdGltZSgpOwogCi0gICAgLyogbmd4X2xvY2tfbXV0ZXgocGMtPnBlZXJzLT5tdXRleCk7ICovCisgICAgICAgIC8qIG5neF9sb2NrX211dGV4KHBjLT5wZWVycy0+bXV0ZXgpOyAqLwogCi0gICAgcGMtPnBlZXJzLT5wZWVyW3BjLT5jdXJfcGVlcl0uZmFpbHMrKzsKLSAgICBwYy0+cGVlcnMtPnBlZXJbcGMtPmN1cl9wZWVyXS5hY2Nlc3NlZCA9IG5vdzsKKyAgICAgICAgcGMtPnBlZXJzLT5wZWVyW3BjLT5jdXJfcGVlcl0uZmFpbHMrKzsKKyAgICAgICAgcGMtPnBlZXJzLT5wZWVyW3BjLT5jdXJfcGVlcl0uYWNjZXNzZWQgPSBub3c7CiAKLSAgICAvKiBuZ3hfdW5sb2NrX211dGV4KHBjLT5wZWVycy0+bXV0ZXgpOyAqLworICAgICAgICAvKiBuZ3hfdW5sb2NrX211dGV4KHBjLT5wZWVycy0+bXV0ZXgpOyAqLworICAgIH0KIAogICAgIHBjLT5jdXJfcGVlcisrOwogCmRpZmYgLS1naXQgYS9zcmMvZXZlbnQvbmd4X2V2ZW50X2Nvbm5lY3QuaCBiL3NyYy9ldmVudC9uZ3hfZXZlbnRfY29ubmVjdC5oCmluZGV4IDQ4ODYzYWIuLmM4ZTcwNzQgMTAwNjQ0Ci0tLSBhL3NyYy9ldmVudC9uZ3hfZXZlbnRfY29ubmVjdC5oCisrKyBiL3NyYy9ldmVudC9uZ3hfZXZlbnRfY29ubmVjdC5oCkBAIC02Nyw3ICs2Nyw3IEBACiAKIAogbmd4X2ludF90IG5neF9ldmVudF9jb25uZWN0X3BlZXIobmd4X3BlZXJfY29ubmVjdGlvbl90ICpwYyk7Ci12b2lkIG5neF9ldmVudF9jb25uZWN0X3BlZXJfZmFpbGVkKG5neF9wZWVyX2Nvbm5lY3Rpb25fdCAqcGMpOwordm9pZCBuZ3hfZXZlbnRfY29ubmVjdF9wZWVyX2ZhaWxlZChuZ3hfcGVlcl9jb25uZWN0aW9uX3QgKnBjLCBuZ3hfdWludF90IGRvd24pOwogCiAKICNlbmRpZiAvKiBfTkdYX0VWRU5UX0NPTk5FQ1RfSF9JTkNMVURFRF8gKi8KZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfYXV0b2luZGV4X21vZHVsZS5jIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9hdXRvaW5kZXhfbW9kdWxlLmMKaW5kZXggYWI0NDE4Zi4uZTI2ZDI5NCAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9hdXRvaW5kZXhfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9hdXRvaW5kZXhfbW9kdWxlLmMKQEAgLTI0LDYgKzI0LDcgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIG5neF9zdHJfdCAgICAgIG5hbWU7CisgICAgc2l6ZV90ICAgICAgICAgdXRmX2xlbjsKICAgICBuZ3hfdWludF90ICAgICBlc2NhcGU7CiAgICAgbmd4X3VpbnRfdCAgICAgZGlyOwogICAgIHRpbWVfdCAgICAgICAgIG10aW1lOwpAQCAtMjEyLDcgKzIxMyw3IEBACiAjZW5kaWYKIAogICAgIGlmIChuZ3hfYXJyYXlfaW5pdCgmZW50cmllcywgcG9vbCwgNTAsIHNpemVvZihuZ3hfaHR0cF9hdXRvaW5kZXhfZW50cnlfdCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PSBOR1hfRVJST1IpCisgICAgICAgID09IE5HWF9FUlJPUikKICAgICB7CiAgICAgICAgIHJldHVybiBuZ3hfaHR0cF9hdXRvaW5kZXhfZXJyb3IociwgJmRpciwgZG5hbWUuZGF0YSk7CiAgICAgfQpAQCAtMzA0LDYgKzMwNSw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBlbnRyeS0+bmFtZS5sZW4gPSBsZW47ICAgICAgICAKKwogICAgICAgICBlbnRyeS0+ZXNjYXBlID0gMiAqIG5neF9lc2NhcGVfdXJpKE5VTEwsIG5neF9kZV9uYW1lKCZkaXIpLCBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkdYX0VTQ0FQRV9IVE1MKTsKIApAQCAtMzE0LDYgKzMxNiwxMiBAQAogCiAgICAgICAgIG5neF9jcHlzdHJuKGVudHJ5LT5uYW1lLmRhdGEsIG5neF9kZV9uYW1lKCZkaXIpLCBsZW4gKyAxKTsKIAorICAgICAgICBpZiAoci0+dXRmOCkgeworICAgICAgICAgICAgZW50cnktPnV0Zl9sZW4gPSBuZ3hfdXRmX2xlbmd0aCgmZW50cnktPm5hbWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW50cnktPnV0Zl9sZW4gPSBsZW47CisgICAgICAgIH0KKwogICAgICAgICBlbnRyeS0+ZGlyID0gbmd4X2RlX2lzX2RpcigmZGlyKTsKICAgICAgICAgZW50cnktPm10aW1lID0gbmd4X2RlX210aW1lKCZkaXIpOwogICAgICAgICBlbnRyeS0+c2l6ZSA9IG5neF9kZV9zaXplKCZkaXIpOwpAQCAtMzM2LDE4ICszNDQsMTUgQEAKICAgICBlbnRyeSA9IGVudHJpZXMuZWx0czsKICAgICBmb3IgKGkgPSAwOyBpIDwgZW50cmllcy5uZWx0czsgaSsrKSB7CiAgICAgICAgIGxlbiArPSBzaXplb2YoIjxhIGhyZWY9XCIiKSAtIDEKLSAgICAgICAgICAgICAgICsgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDEgaXMgZm9yICIvIiAqLwotICAgICAgICAgICAgICAgKyBlbnRyeVtpXS5uYW1lLmxlbiArIGVudHJ5W2ldLmVzY2FwZQotICAgICAgICAgICAgICAgKyBzaXplb2YoIlwiPiIpIC0gMQotICAgICAgICAgICAgICAgKyBOR1hfSFRUUF9BVVRPSU5ERVhfTkFNRV9MRU4gKyBzaXplb2YoIiZndDsiKSAtIDIKLSAgICAgICAgICAgICAgICsgc2l6ZW9mKCI8L2E+IikgLSAxCi0gICAgICAgICAgICAgICArIHNpemVvZigiIDI4LVNlcC0xOTcwIDEyOjAwICIpIC0gMQotICAgICAgICAgICAgICAgKyAxOQotICAgICAgICAgICAgICAgKyAyOwotCi0gICAgICAgIGlmIChyLT51dGY4KSB7Ci0gICAgICAgICAgICBsZW4gKz0gZW50cnlbaV0ubmFtZS5sZW4gLSBuZ3hfdXRmX2xlbmd0aCgmZW50cnlbaV0ubmFtZSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgICsgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDEgaXMgZm9yICIvIiAqLworICAgICAgICAgICAgKyBlbnRyeVtpXS5uYW1lLmxlbiArIGVudHJ5W2ldLmVzY2FwZQorICAgICAgICAgICAgKyBzaXplb2YoIlwiPiIpIC0gMQorICAgICAgICAgICAgKyBlbnRyeVtpXS5uYW1lLmxlbiAtIGVudHJ5W2ldLnV0Zl9sZW4KKyAgICAgICAgICAgICsgTkdYX0hUVFBfQVVUT0lOREVYX05BTUVfTEVOICsgc2l6ZW9mKCImZ3Q7IikgLSAyCisgICAgICAgICAgICArIHNpemVvZigiPC9hPiIpIC0gMQorICAgICAgICAgICAgKyBzaXplb2YoIiAyOC1TZXAtMTk3MCAxMjowMCAiKSAtIDEKKyAgICAgICAgICAgICsgMTkKKyAgICAgICAgICAgICsgMjsKICAgICB9CiAKICAgICBiID0gbmd4X2NyZWF0ZV90ZW1wX2J1ZihyLT5wb29sLCBsZW4pOwpAQCAtMzk0LDExICszOTksNyBAQAogICAgICAgICBiLT5sYXN0ID0gbmd4X2NweXN0cm4oYi0+bGFzdCwgZW50cnlbaV0ubmFtZS5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkdYX0hUVFBfQVVUT0lOREVYX05BTUVfTEVOICsgMSk7CiAKLSAgICAgICAgaWYgKHItPnV0ZjgpIHsKLSAgICAgICAgICAgIGxlbiA9IG5neF91dGZfbGVuZ3RoKCZlbnRyeVtpXS5uYW1lKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxlbiA9IGVudHJ5W2ldLm5hbWUubGVuOwotICAgICAgICB9CisgICAgICAgIGxlbiA9IGVudHJ5W2ldLnV0Zl9sZW47CiAKICAgICAgICAgaWYgKGxlbiA+IE5HWF9IVFRQX0FVVE9JTkRFWF9OQU1FX0xFTikgewogICAgICAgICAgICAgYi0+bGFzdCA9IG5neF9jcHltZW0oYi0+bGFzdCAtIDMsICIuLiZndDs8L2E+IiwKZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfY2hhcnNldF9maWx0ZXJfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2NoYXJzZXRfZmlsdGVyX21vZHVsZS5jCmluZGV4IDExNzI4MWMuLmNhZjNmM2YgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfY2hhcnNldF9maWx0ZXJfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9jaGFyc2V0X2ZpbHRlcl9tb2R1bGUuYwpAQCAtMzQsNyArMzQsNiBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgbmd4X2ZsYWdfdCAgIGVuYWJsZTsKLSAgICBuZ3hfZmxhZ190ICAgYXV0b2RldGVjdDsKIAogICAgIG5neF9pbnRfdCAgICBkZWZhdWx0X2NoYXJzZXQ7CiAgICAgbmd4X2ludF90ICAgIHNvdXJjZV9jaGFyc2V0OwpAQCAtOTYsMTMgKzk1LDYgQEAKICAgICAgIG9mZnNldG9mKG5neF9odHRwX2NoYXJzZXRfbG9jX2NvbmZfdCwgZW5hYmxlKSwKICAgICAgIE5VTEwgfSwKIAotICAgIHsgbmd4X3N0cmluZygiYXV0b2RldGVjdF9jaGFyc2V0IiksCi0gICAgICBOR1hfSFRUUF9NQUlOX0NPTkZ8TkdYX0hUVFBfU1JWX0NPTkZ8TkdYX0hUVFBfTE9DX0NPTkZ8TkdYX0NPTkZfRkxBRywKLSAgICAgIG5neF9jb25mX3NldF9mbGFnX3Nsb3QsCi0gICAgICBOR1hfSFRUUF9MT0NfQ09ORl9PRkZTRVQsCi0gICAgICBvZmZzZXRvZihuZ3hfaHR0cF9jaGFyc2V0X2xvY19jb25mX3QsIGF1dG9kZXRlY3QpLAotICAgICAgTlVMTCB9LAotCiAgICAgICBuZ3hfbnVsbF9jb21tYW5kCiB9OwogCkBAIC01NzAsNyArNTYyLDYgQEAKICAgICB9CiAKICAgICBsY2YtPmVuYWJsZSA9IE5HWF9DT05GX1VOU0VUOwotICAgIGxjZi0+YXV0b2RldGVjdCA9IE5HWF9DT05GX1VOU0VUOwogICAgIGxjZi0+ZGVmYXVsdF9jaGFyc2V0ID0gTkdYX0NPTkZfVU5TRVQ7CiAgICAgbGNmLT5zb3VyY2VfY2hhcnNldCA9IE5HWF9DT05GX1VOU0VUOwogCkBAIC01ODUsOCArNTc2LDYgQEAKICAgICBuZ3hfaHR0cF9jaGFyc2V0X2xvY19jb25mX3QgKmNvbmYgPSBjaGlsZDsKIAogICAgIG5neF9jb25mX21lcmdlX3ZhbHVlKGNvbmYtPmVuYWJsZSwgcHJldi0+ZW5hYmxlLCAwKTsKLSAgICBuZ3hfY29uZl9tZXJnZV92YWx1ZShjb25mLT5hdXRvZGV0ZWN0LCBwcmV2LT5hdXRvZGV0ZWN0LCAwKTsKLQogCiAgICAgaWYgKGNvbmYtPmRlZmF1bHRfY2hhcnNldCA9PSBOR1hfQ09ORl9VTlNFVCkgewogICAgICAgICBjb25mLT5kZWZhdWx0X2NoYXJzZXQgPSBwcmV2LT5kZWZhdWx0X2NoYXJzZXQ7CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmMgYi9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmMKaW5kZXggYzNlMWFiNy4uOWNlZDAyOCAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuYwpAQCAtMzEsNyArMzEsNyBAQAogc3RhdGljIG5neF9pbnRfdCBuZ3hfaHR0cF9maW5kX3ZpcnR1YWxfc2VydmVyKG5neF9odHRwX3JlcXVlc3RfdCAqcik7CiAKIHN0YXRpYyB2b2lkIG5neF9odHRwX3JlcXVlc3RfaGFuZGxlcihuZ3hfZXZlbnRfdCAqZXYpOwotc3RhdGljIHZvaWQgbmd4X2h0dHBfc2V0X3dyaXRlX2hhbmRsZXIobmd4X2h0dHBfcmVxdWVzdF90ICpyKTsKK3N0YXRpYyBuZ3hfaW50X3Qgbmd4X2h0dHBfc2V0X3dyaXRlX2hhbmRsZXIobmd4X2h0dHBfcmVxdWVzdF90ICpyKTsKIHN0YXRpYyB2b2lkIG5neF9odHRwX3dyaXRlcihuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIpOwogc3RhdGljIG5neF9pbnRfdCBuZ3hfaHR0cF9wb3N0cG9uZWRfaGFuZGxlcihuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIpOwogCkBAIC0xNDMzLDcgKzE0MzMsOSBAQAogICAgIH0KIAogICAgIGlmIChyLT5wYXJlbnQgfHwgcmMgPT0gTkdYX0FHQUlOKSB7Ci0gICAgICAgIHItPndyaXRlX2V2ZW50X2hhbmRsZXIgPSBuZ3hfaHR0cF93cml0ZXI7CisgICAgICAgIGlmIChuZ3hfaHR0cF9zZXRfd3JpdGVfaGFuZGxlcihyKSAhPSBOR1hfT0spIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHItPmRvbmUgPSAxOwpAQCAtMTQ5Nyw3ICsxNDk5LDcgQEAKICAgICAgICAgcmV0dXJuOwogCiAgICAgfSBlbHNlIGlmIChyYyA9PSBOR1hfQUdBSU4gfHwgci0+b3V0KSB7Ci0gICAgICAgIG5neF9odHRwX3NldF93cml0ZV9oYW5kbGVyKHIpOworICAgICAgICAodm9pZCkgbmd4X2h0dHBfc2V0X3dyaXRlX2hhbmRsZXIocik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE1NDEsNyArMTU0Myw3IEBACiB9CiAKIAotc3RhdGljIHZvaWQKK3N0YXRpYyBuZ3hfaW50X3QKIG5neF9odHRwX3NldF93cml0ZV9oYW5kbGVyKG5neF9odHRwX3JlcXVlc3RfdCAqcikKIHsKICAgICBuZ3hfZXZlbnRfdCAgICAgICAgICAgICAgICp3ZXY7CkBAIC0xNTQ5LDEwICsxNTUxLDEyIEBACiAKICAgICByLT5odHRwX3N0YXRlID0gTkdYX0hUVFBfV1JJVElOR19SRVFVRVNUX1NUQVRFOwogCisgICAgci0+d3JpdGVfZXZlbnRfaGFuZGxlciA9IG5neF9odHRwX3dyaXRlcjsKKwogICAgIHdldiA9IHItPmNvbm5lY3Rpb24tPndyaXRlOwogCiAgICAgaWYgKHdldi0+cmVhZHkgJiYgd2V2LT5kZWxheWVkKSB7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIE5HWF9PSzsKICAgICB9CiAKICAgICBjbGNmID0gbmd4X2h0dHBfZ2V0X21vZHVsZV9sb2NfY29uZihyLCBuZ3hfaHR0cF9jb3JlX21vZHVsZSk7CkBAIC0xNTYzLDcgKzE1NjcsMTAgQEAKICAgICBpZiAobmd4X2hhbmRsZV93cml0ZV9ldmVudCh3ZXYsIGNsY2YtPnNlbmRfbG93YXQpID09IE5HWF9FUlJPUikgewogICAgICAgICBuZ3hfaHR0cF9jbG9zZV9yZXF1ZXN0KHIsIDApOwogICAgICAgICBuZ3hfaHR0cF9jbG9zZV9jb25uZWN0aW9uKHItPmNvbm5lY3Rpb24pOworICAgICAgICByZXR1cm4gTkdYX0VSUk9SOwogICAgIH0KKworICAgIHJldHVybiBOR1hfT0s7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfdXBzdHJlYW0uYyBiL3NyYy9odHRwL25neF9odHRwX3Vwc3RyZWFtLmMKaW5kZXggNTFmZmJjMC4uZDdlZTA4ZiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfdXBzdHJlYW0uYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF91cHN0cmVhbS5jCkBAIC0xMjMwLDcgKzEyMzAsNyBAQAogbmd4X2h0dHBfdXBzdHJlYW1fbmV4dChuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsIG5neF9odHRwX3Vwc3RyZWFtX3QgKnUsCiAgICAgbmd4X3VpbnRfdCBmdF90eXBlKQogewotICAgIG5neF91aW50X3QgIHN0YXR1czsKKyAgICBuZ3hfdWludF90ICBzdGF0dXMsIGRvd247CiAKICAgICBuZ3hfbG9nX2RlYnVnMShOR1hfTE9HX0RFQlVHX0hUVFAsIHItPmNvbm5lY3Rpb24tPmxvZywgMCwKICAgICAgICAgICAgICAgICAgICAiaHR0cCBuZXh0IHVwc3RyZWFtLCAleEQiLCBmdF90eXBlKTsKQEAgLTEyMzksMTAgKzEyMzksMTQgQEAKICAgICBuZ3hfaHR0cF9idXN5X3VubG9jayh1LT5jb25mLT5idXN5X2xvY2ssICZ1LT5idXN5X2xvY2spOwogI2VuZGlmCiAKLSAgICBpZiAoZnRfdHlwZSAhPSBOR1hfSFRUUF9VUFNUUkVBTV9GVF9IVFRQXzQwNCkgewotICAgICAgICBuZ3hfZXZlbnRfY29ubmVjdF9wZWVyX2ZhaWxlZCgmdS0+cGVlcik7CisgICAgaWYgKGZ0X3R5cGUgPT0gTkdYX0hUVFBfVVBTVFJFQU1fRlRfSFRUUF80MDQpIHsKKyAgICAgICAgZG93biA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZG93biA9IDE7CiAgICAgfQotICAgIAorCisgICAgbmd4X2V2ZW50X2Nvbm5lY3RfcGVlcl9mYWlsZWQoJnUtPnBlZXIsIGRvd24pOworCiAgICAgaWYgKGZ0X3R5cGUgPT0gTkdYX0hUVFBfVVBTVFJFQU1fRlRfVElNRU9VVCkgewogICAgICAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfRVJSLCByLT5jb25uZWN0aW9uLT5sb2csIE5HWF9FVElNRURPVVQsCiAgICAgICAgICAgICAgICAgICAgICAgInVwc3RyZWFtIHRpbWVkIG91dCIpOwpAQCAtMTI4NSwxNCArMTI4OSwxMyBAQAogICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgdS0+c3RhdGUtPnN0YXR1cyA9IHN0YXR1czsKIAotICAgICAgICBpZiAodS0+cGVlci50cmllcyA9PSAwIHx8ICEodS0+Y29uZi0+bmV4dF91cHN0cmVhbSAmIGZ0X3R5cGUpKQotICAgICAgICB7CisgICAgICAgIGlmICh1LT5wZWVyLnRyaWVzID09IDAgfHwgISh1LT5jb25mLT5uZXh0X3Vwc3RyZWFtICYgZnRfdHlwZSkpIHsKIAogI2lmIChOR1hfSFRUUF9DQUNIRSkKIAogICAgICAgICAgICAgaWYgKHUtPnN0YWxlICYmICh1LT5jb25mLT51c2Vfc3RhbGUgJiBmdF90eXBlKSkgewogICAgICAgICAgICAgICAgIG5neF9odHRwX3Vwc3RyZWFtX2ZpbmFsaXplX3JlcXVlc3QociwgdSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5neF9odHRwX3NlbmRfY2FjaGVkX3Jlc3BvbnNlKHIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5neF9odHRwX3NlbmRfY2FjaGVkX3Jlc3BvbnNlKHIpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbWFwL25neF9pbWFwLmggYi9zcmMvaW1hcC9uZ3hfaW1hcC5oCmluZGV4IDM4ZjQ0OTguLjViYTM5MDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbWFwL25neF9pbWFwLmgKKysrIGIvc3JjL2ltYXAvbmd4X2ltYXAuaApAQCAtMTM2LDYgKzEzNiw3IEBACiAKIHZvaWQgbmd4X2ltYXBfaW5pdF9jb25uZWN0aW9uKG5neF9jb25uZWN0aW9uX3QgKmMpOwogdm9pZCBuZ3hfaW1hcF9jbG9zZV9jb25uZWN0aW9uKG5neF9jb25uZWN0aW9uX3QgKmMpOwordm9pZCBuZ3hfaW1hcF9zZXNzaW9uX2ludGVybmFsX3NlcnZlcl9lcnJvcihuZ3hfaW1hcF9zZXNzaW9uX3QgKnMpOwogCiBuZ3hfaW50X3Qgbmd4X3BvcDNfcGFyc2VfY29tbWFuZChuZ3hfaW1hcF9zZXNzaW9uX3QgKnMpOwogCmRpZmYgLS1naXQgYS9zcmMvaW1hcC9uZ3hfaW1hcF9hdXRoX2h0dHBfbW9kdWxlLmMgYi9zcmMvaW1hcC9uZ3hfaW1hcF9hdXRoX2h0dHBfbW9kdWxlLmMKaW5kZXggN2U2YzQ0Yi4uZmE5ODRiOCAxMDA2NDQKLS0tIGEvc3JjL2ltYXAvbmd4X2ltYXBfYXV0aF9odHRwX21vZHVsZS5jCisrKyBiL3NyYy9pbWFwL25neF9pbWFwX2F1dGhfaHR0cF9tb2R1bGUuYwpAQCAtMjMsNiArMjMsNyBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgbmd4X2J1Zl90ICAgICAgICAgICAgICAqcmVxdWVzdDsKKyAgICBuZ3hfYnVmX3QgICAgICAgICAgICAgICpyZXNwb25zZTsKICAgICBuZ3hfcGVlcl9jb25uZWN0aW9uX3QgICBwZWVyOwogfSBuZ3hfaW1hcF9hdXRoX2h0dHBfY3R4X3Q7CiAKQEAgLTkxLDcgKzkyLDcgQEAKIAogICAgIGN0eCA9IG5neF9wY2FsbG9jKHMtPmNvbm5lY3Rpb24tPnBvb2wsIHNpemVvZihuZ3hfaW1hcF9hdXRoX2h0dHBfY3R4X3QpKTsKICAgICBpZiAoY3R4ID09IE5VTEwpIHsKLSAgICAgICAgbmd4X2ltYXBfY2xvc2VfY29ubmVjdGlvbihzLT5jb25uZWN0aW9uKTsKKyAgICAgICAgbmd4X2ltYXBfc2Vzc2lvbl9pbnRlcm5hbF9zZXJ2ZXJfZXJyb3Iocyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTk5LDcgKzEwMCw3IEBACiAKICAgICBjdHgtPnJlcXVlc3QgPSBuZ3hfaW1hcF9hdXRoX2h0dHBfY3JlYXRlX3JlcXVlc3QocywgYWhjZik7CiAgICAgaWYgKGN0eC0+cmVxdWVzdCA9PSBOVUxMKSB7Ci0gICAgICAgIG5neF9pbWFwX2Nsb3NlX2Nvbm5lY3Rpb24ocy0+Y29ubmVjdGlvbik7CisgICAgICAgIG5neF9pbWFwX3Nlc3Npb25faW50ZXJuYWxfc2VydmVyX2Vycm9yKHMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTIsNyArMTEzLDcgQEAKICAgICByYyA9IG5neF9ldmVudF9jb25uZWN0X3BlZXIoJmN0eC0+cGVlcik7CiAKICAgICBpZiAocmMgPT0gTkdYX0VSUk9SKSB7Ci0gICAgICAgIG5neF9pbWFwX2Nsb3NlX2Nvbm5lY3Rpb24ocy0+Y29ubmVjdGlvbik7CisgICAgICAgIG5neF9pbWFwX3Nlc3Npb25faW50ZXJuYWxfc2VydmVyX2Vycm9yKHMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNTMsOCArMTU0LDggQEAKICAgICBpZiAod2V2LT50aW1lZG91dCkgeyAgCiAgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19FUlIsIHdldi0+bG9nLCBOR1hfRVRJTUVET1VULAogICAgICAgICAgICAgICAgICAgICAgICJhdXRoIGh0dHAgc2VydmVyIHRpbWVkIG91dCIpOwotICAgICAgICBuZ3hfaW1hcF9jbG9zZV9jb25uZWN0aW9uKGN0eC0+cGVlci5jb25uZWN0aW9uKTsKLSAgICAgICAgbmd4X2ltYXBfY2xvc2VfY29ubmVjdGlvbihzLT5jb25uZWN0aW9uKTsKKyAgICAgICAgbmd4X2Nsb3NlX2Nvbm5lY3Rpb24oY3R4LT5wZWVyLmNvbm5lY3Rpb24pOworICAgICAgICBuZ3hfaW1hcF9zZXNzaW9uX2ludGVybmFsX3NlcnZlcl9lcnJvcihzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTYzLDggKzE2NCw4IEBACiAgICAgbiA9IG5neF9zZW5kKGMsIGN0eC0+cmVxdWVzdC0+cG9zLCBzaXplKTsKIAogICAgIGlmIChuID09IE5HWF9FUlJPUikgewotICAgICAgICBuZ3hfaW1hcF9jbG9zZV9jb25uZWN0aW9uKGN0eC0+cGVlci5jb25uZWN0aW9uKTsKLSAgICAgICAgbmd4X2ltYXBfY2xvc2VfY29ubmVjdGlvbihzLT5jb25uZWN0aW9uKTsKKyAgICAgICAgbmd4X2Nsb3NlX2Nvbm5lY3Rpb24oY3R4LT5wZWVyLmNvbm5lY3Rpb24pOworICAgICAgICBuZ3hfaW1hcF9zZXNzaW9uX2ludGVybmFsX3NlcnZlcl9lcnJvcihzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTkyLDIzICsxOTMsNTIgQEAKIHN0YXRpYyB2b2lkCiBuZ3hfaW1hcF9hdXRoX2h0dHBfcmVhZF9oYW5kbGVyKG5neF9ldmVudF90ICpyZXYpCiB7CisgICAgc3NpemVfdCAgICAgICAgICAgICAgICAgICAgIG4sIHNpemU7CiAgICAgbmd4X3BlZXJzX3QgICAgICAgICAgICAgICAgKnBlZXJzOwogICAgIG5neF9jb25uZWN0aW9uX3QgICAgICAgICAgKmM7CiAgICAgbmd4X2ltYXBfc2Vzc2lvbl90ICAgICAgICAqczsKLSNpZiAwCiAgICAgbmd4X2ltYXBfYXV0aF9odHRwX2N0eF90ICAqY3R4OwotI2VuZGlmCiAKICAgICBjID0gcmV2LT5kYXRhOwogICAgIHMgPSBjLT5kYXRhOwogCi0jaWYgMAotICAgIGN0eCA9IG5neF9pbWFwX2dldF9tb2R1bGVfY3R4KHMsIG5neF9pbWFwX2F1dGhfaHR0cF9tb2R1bGUpOwotI2VuZGlmCi0KICAgICBuZ3hfbG9nX2RlYnVnMChOR1hfTE9HX0RFQlVHX0lNQVAsIHJldi0+bG9nLCAwLAogICAgICAgICAgICAgICAgICAgICJpbWFwIGF1dGggaHR0cCByZWFkIGhhbmRsZXIiKTsKIAorICAgIGN0eCA9IG5neF9pbWFwX2dldF9tb2R1bGVfY3R4KHMsIG5neF9pbWFwX2F1dGhfaHR0cF9tb2R1bGUpOworCisgICAgaWYgKHJldi0+dGltZWRvdXQpIHsgIAorICAgICAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfRVJSLCByZXYtPmxvZywgTkdYX0VUSU1FRE9VVCwKKyAgICAgICAgICAgICAgICAgICAgICAiYXV0aCBodHRwIHNlcnZlciB0aW1lZCBvdXQiKTsKKyAgICAgICAgbmd4X2Nsb3NlX2Nvbm5lY3Rpb24oY3R4LT5wZWVyLmNvbm5lY3Rpb24pOworICAgICAgICBuZ3hfaW1hcF9zZXNzaW9uX2ludGVybmFsX3NlcnZlcl9lcnJvcihzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChjdHgtPnJlc3BvbnNlID09IE5VTEwpIHsKKyAgICAgICAgY3R4LT5yZXNwb25zZSA9IG5neF9jcmVhdGVfdGVtcF9idWYocy0+Y29ubmVjdGlvbi0+cG9vbCwgMTAyNCk7CisgICAgICAgIGlmIChjdHgtPnJlc3BvbnNlID09IE5VTEwpIHsKKyAgICAgICAgICAgIG5neF9jbG9zZV9jb25uZWN0aW9uKGN0eC0+cGVlci5jb25uZWN0aW9uKTsKKyAgICAgICAgICAgIG5neF9pbWFwX3Nlc3Npb25faW50ZXJuYWxfc2VydmVyX2Vycm9yKHMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgc2l6ZSA9IGN0eC0+cmVzcG9uc2UtPmxhc3QgLSBjdHgtPnJlc3BvbnNlLT5wb3M7CisKKyAgICBuID0gbmd4X3JlY3YoYywgY3R4LT5yZXNwb25zZS0+cG9zLCBzaXplKTsKKworICAgIGlmIChuID09IE5HWF9FUlJPUiB8fCBuID09IDApIHsKKyAgICAgICAgbmd4X2Nsb3NlX2Nvbm5lY3Rpb24oY3R4LT5wZWVyLmNvbm5lY3Rpb24pOworICAgICAgICBuZ3hfaW1hcF9zZXNzaW9uX2ludGVybmFsX3NlcnZlcl9lcnJvcihzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisKKworCisKICAgICBwZWVycyA9IE5VTEw7CiAKICAgICBuZ3hfaW1hcF9wcm94eV9pbml0KHMsIHBlZXJzKTsKQEAgLTIzMSw4ICsyNjEsOCBAQAogCiAgICAgICAgIGN0eCA9IG5neF9pbWFwX2dldF9tb2R1bGVfY3R4KHMsIG5neF9pbWFwX2F1dGhfaHR0cF9tb2R1bGUpOwogCi0gICAgICAgIG5neF9pbWFwX2Nsb3NlX2Nvbm5lY3Rpb24oY3R4LT5wZWVyLmNvbm5lY3Rpb24pOwotICAgICAgICBuZ3hfaW1hcF9jbG9zZV9jb25uZWN0aW9uKHMtPmNvbm5lY3Rpb24pOworICAgICAgICBuZ3hfY2xvc2VfY29ubmVjdGlvbihjdHgtPnBlZXIuY29ubmVjdGlvbik7CisgICAgICAgIG5neF9pbWFwX3Nlc3Npb25faW50ZXJuYWxfc2VydmVyX2Vycm9yKHMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2ltYXAvbmd4X2ltYXBfaGFuZGxlci5jIGIvc3JjL2ltYXAvbmd4X2ltYXBfaGFuZGxlci5jCmluZGV4IGJlMmM5ZDEuLjY4MGJmMjAgMTAwNjQ0Ci0tLSBhL3NyYy9pbWFwL25neF9pbWFwX2hhbmRsZXIuYworKysgYi9zcmMvaW1hcC9uZ3hfaW1hcF9oYW5kbGVyLmMKQEAgLTI0LDYgKzI0LDExIEBACiAgICBuZ3hfc3RyaW5nKCIqIE9LICIgTkdJTlhfVkVSICIgcmVhZHkiIENSTEYpCiB9OwogCitzdGF0aWMgbmd4X3N0cl90ICBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3JzW10gPSB7CisgICBuZ3hfc3RyaW5nKCItRVJSIGludGVybmFsIHNlcnZlciBlcnJvciIgQ1JMRiksCisgICBuZ3hfc3RyaW5nKCIqIEJBRCBpbnRlcm5hbCBzZXJ2ZXIgZXJyb3IiIENSTEYpLAorfTsKKwogc3RhdGljIHVfY2hhciAgcG9wM19va1tdID0gIitPSyIgQ1JMRjsKIHN0YXRpYyB1X2NoYXIgIHBvcDNfaW52YWxpZF9jb21tYW5kW10gPSAiLUVSUiBpbnZhbGlkIGNvbW1hbmQiIENSTEY7CiAKQEAgLTM0Miw2ICszNDcsMTYgQEAKIAogCiB2b2lkCituZ3hfaW1hcF9zZXNzaW9uX2ludGVybmFsX3NlcnZlcl9lcnJvcihuZ3hfaW1hcF9zZXNzaW9uX3QgKnMpCit7CisgICAgKHZvaWQpIG5neF9zZW5kKHMtPmNvbm5lY3Rpb24sIGludGVybmFsX3NlcnZlcl9lcnJvcnNbcy0+cHJvdG9jb2xdLmRhdGEsCisgICAgICAgICAgICAgICAgICAgIGludGVybmFsX3NlcnZlcl9lcnJvcnNbcy0+cHJvdG9jb2xdLmxlbik7CisKKyAgICBuZ3hfaW1hcF9jbG9zZV9jb25uZWN0aW9uKHMtPmNvbm5lY3Rpb24pOworfQorCisKK3ZvaWQKIG5neF9pbWFwX2Nsb3NlX2Nvbm5lY3Rpb24obmd4X2Nvbm5lY3Rpb25fdCAqYykKIHsKICAgICBuZ3hfcG9vbF90ICAqcG9vbDsKZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9hdG9taWMuaCBiL3NyYy9vcy91bml4L25neF9hdG9taWMuaAppbmRleCBkOTBjZjY2Li43NDZhNzE1IDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfYXRvbWljLmgKKysrIGIvc3JjL29zL3VuaXgvbmd4X2F0b21pYy5oCkBAIC0yODUsNyArMjg1LDcgQEAKIH0KIAogCi0jZWxpZiAoIF9fcHBjX18gKQorI2VsaWYgKCBfX3BwY19fIHx8IF9fcG93ZXJwY19fICkKIAogI2RlZmluZSBOR1hfSEFWRV9BVE9NSUNfT1BTICAxCiAK