From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jakub Jelinek To: git-commits@fedoraproject.org Subject: [rpms/gcc] rhel-f41-base: 8.0.1-0.13 Date: Mon, 29 Jun 2026 12:27:51 GMT Message-ID: <178273607108.1.7428178949254746596.rpms-gcc-497de73bd75a@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: 497de73bd75ae2e2ad3d880e733f9dee0c8cf09c QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogNDk3ZGU3M2JkNzVhZTJlMmFkM2Q4ODBlNzMzZjlkZWUw YzhjZjA5YwpBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPgpEYXRlICAg OiAyMDE4LTAyLTEwVDE5OjQ0OjQ3KzAxOjAwClN0YXRzICA6ICsyNjc5Ly0wIGluIDEgZmlsZShz KQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2djYy9jLzQ5N2Rl NzNiZDc1YWUyZTJhZDNkODgwZTczM2Y5ZGVlMGM4Y2YwOWM/YnJhbmNoPXJoZWwtZjQxLWJhc2UK CkxvZzoKOC4wLjEtMC4xMwoKLS0tCmRpZmYgLS1naXQgYS9nY2M4LWx2dS1yZXZlcnQucGF0Y2gg Yi9nY2M4LWx2dS1yZXZlcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uYzQ3Y2ExYwotLS0gL2Rldi9udWxsCisrKyBiL2djYzgtbHZ1LXJldmVydC5wYXRjaApAQCAt MCwwICsxLDI2NzkgQEAKK1JldmVydDoKKworMjAxOC0wMi0wOSAgQWxleGFuZHJlIE9saXZhIDxh b2xpdmFAcmVkaGF0LmNvbT4KKworCSogY2ZnZXhwYW5kLmMgKGV4cGFuZF9naW1wbGVfYmFzaWNf YmxvY2spOiBIYW5kbGUgaW5saW5lIGVudHJ5CisJbWFya2Vycy4KKwkqIGR3YXJmMm91dC5jIChk d2FyZjJfZGVidWdfaG9va3MpOiBFbmFibGUgaW5saW5lX2VudHJ5IGhvb2suCisJKEJMT0NLX0lO TElORV9FTlRSWV9MQUJFTCk6IE5ldy4KKwkoZHdhcmYyb3V0X3Zhcl9sb2NhdGlvbik6IERpc3Jl Z2FyZCBpbmxpbmUgZW50cnkgbWFya2Vycy4KKwkoaW5saW5lX2VudHJ5X2RhdGEpOiBOZXcgc3Ry dWN0LgorCShpbmxpbmVfZW50cnlfZGF0YV9oYXNoZXIpOiBOZXcgaGFzaHRhYmxlIHR5cGUuCisJ KGlubGluZV9lbnRyeV9kYXRhX2hhc2hlcjo6aGFzaCk6IE5ldy4KKwkoaW5saW5lX2VudHJ5X2Rh dGFfaGFzaGVyOjplcXVhbCk6IE5ldy4KKwkoaW5saW5lX2VudHJ5X2RhdGFfdGFibGUpOiBOZXcg dmFyaWFibGUuCisJKGFkZF9oaWdoX2xvd19hdHRyaWJ1dGVzKTogQWRkIERXX0FUX2VudHJ5X3Bj IGFuZAorCURXX0FUX0dOVV9lbnRyeV92aWV3IGF0dHJpYnV0ZXMgaWYgYSBwZW5kaW5nIGVudHJ5 IGlzIGZvdW5kCisJaW4gaW5saW5lX2VudHJ5X2RhdGFfdGFibGUuICBBZGQgb2xkIGVudHJ5X3Bj IGF0dHJpYnV0ZSBvbmx5CisJaWYgZGVidWcgbm9uYmluZGluZyBtYXJrZXJzIGFyZSBkaXNhYmxl ZC4KKwkoZ2VuX2lubGluZWRfc3Vicm91dGluZV9kaWUpOiBTZXQgQkxPQ0tfRElFIGlmIG5vbmJp bmRpbmcKKwltYXJrZXJzIGFyZSBlbmFibGVkLgorCShibG9ja193aXRoaW5fYmxvY2tfcCwgZHdh cmYyb3V0X2lubGluZV9lbnRyeSk6IE5ldy4KKwkoZHdhcmYyb3V0X2ZpbmlzaCk6IENoZWNrIHRo YXQgbm8gZW50cmllcyByZW1haW5lZCBpbgorCWlubGluZV9lbnRyeV9kYXRhX3RhYmxlLgorCSog ZmluYWwuYyAocmVlbWl0X2luc25fYmxvY2tfbm90ZXMpOiBIYW5kbGUgaW5saW5lIGVudHJ5IG5v dGVzLgorCShmaW5hbF9zY2FuX2luc24sIG5vdGljZV9zb3VyY2VfbGluZSk6IExpa2V3aXNlLgor CShyZXN0X29mX2NsZWFuX3N0YXRlKTogU2tpcCBpbmxpbmUgZW50cnkgbWFya2Vycy4KKwkqIGdp bXBsZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9naW1wbGVfZGVidWcpOiBIYW5kbGUgaW5saW5lIGVu dHJ5CisJbWFya2Vycy4KKwkqIGdpbXBsZS5jIChnaW1wbGVfYnVpbGRfZGVidWdfaW5saW5lX2Vu dHJ5KTogTmV3LgorCSogZ2ltcGxlLmggKGVudW0gZ2ltcGxlX2RlYnVnX3N1YmNvZGUpOiBBZGQK KwlHSU1QTEVfREVCVUdfSU5MSU5FX0VOVFJZLgorCShnaW1wbGVfYnVpbGRfZGVidWdfaW5saW5l X2VudHJ5KTogRGVjbGFyZS4KKwkoZ2ltcGxlX2RlYnVnX2lubGluZV9lbnRyeV9wKTogTmV3Lgor CShnaW1wbGVfZGVidWdfbm9uYmluZF9tYXJrZXJfcCk6IEFkanVzdC4KKwkqIGluc24tbm90ZXMu ZGVmIChJTkxJTkVfRU5UUlkpOiBOZXcuCisJKiBwcmludC1ydGwuYyAocnR4X3dyaXRlcjo6cHJp bnRfcnR4X29wZXJhbmRfY29kZV8wKTogSGFuZGxlCisJaW5saW5lIGVudHJ5IG1hcmtlciBub3Rl cy4KKwkocHJpbnRfaW5zbik6IExpa2V3aXNlLgorCSogcnRsLmgJKE5PVEVfTUFSS0VSX1ApOiBB ZGQgSU5MSU5FX0VOVFJZIHN1cHBvcnQuCisJKElOU05fREVCVUdfTUFSS0VSX0tJTkQpOiBMaWtl d2lzZS4KKwkoR0VOX1JUWF9ERUJVR19NQVJLRVJfSU5MSU5FX0VOVFJZX1BBVCk6IE5ldy4KKwkq IHRyZWUtaW5saW5lLmMJKGV4cGFuZF9jYWxsX2lubGluZSk6IEJ1aWxkIGFuZCBpbnNlcnQKKwlk ZWJ1Z19pbmxpbmVfZW50cnkgc3RtdC4KKwkqIHRyZWUtc3NhLWxpdmUuYyAocmVtb3ZlX3VudXNl ZF9zY29wZV9ibG9ja19wKTogUHJlc2VydmUKKwlpbmxpbmUgZW50cnkgYmxvY2tzIGVhcmx5LCBp ZiBub25iaW5kIG1hcmtlcnMgYXJlIGVuYWJsZWQuCisJKGR1bXBfc2NvcGVfYmxvY2spOiBEdW1w IGZyYWdtZW50IGluZm8uCisJKiB2YXItdHJhY2tpbmcuYyAocmVlbWl0X21hcmtlcl9hc19ub3Rl KTogSGFuZGxlIGlubGluZSBlbnRyeSBub3RlLgorCSogZG9jL2dpbXBsZS50ZXhpIChnaW1wbGVf ZGVidWdfaW5saW5lX2VudHJ5X3ApOiBOZXcuCisJKGdpbXBsZV9idWlsZF9kZWJ1Z19pbmxpbmVf ZW50cnkpOiBOZXcuCisJKiBkb2MvaW52b2tlLnRleGkgKGdzdGF0ZW1lbnQtZnJvbnRpZXJzLCBn bm8tc3RhdGVtZW50LWZyb250aWVycyk6CisJRW5hYmxlL2Rpc2FibGUgaW5saW5lIGVudHJ5IHBv aW50cyB0b28uCisJKiBkb2MvcnRsLnRleGkgKE5PVEVfSU5TTl9JTkxJTkVfRU5UUlkpOiBOZXcu CisJKERFQlVHX0lOU04pOiBEZXNjcmliZSBpbmxpbmUgZW50cnkgbWFya2Vycy4KKworCSogY29t bW9uLm9wdCAoZ3ZhcmlhYmxlLWxvY2F0aW9uLXZpZXdzKTogTmV3LgorCShndmFyaWFibGUtbG9j YXRpb24tdmlld3M9aW5jb21wYXQ1KTogTmV3LgorCSogY29uZmlnLmluOiBSZWJ1aWx0LgorCSog Y29uZmlndXJlOiBSZWJ1aWx0LgorCSogY29uZmlndXJlLmFjOiBUZXN0IGFzc2VtYmxlciBmb3Ig dmlldyBzdXBwb3J0LgorCSogZHdhcmYyYXNtLmMgKGR3Ml9hc21fb3V0cHV0X3N5bW5hbWVfdWxl YjEyOCk6IE5ldy4KKwkqIGR3YXJmMmFzbS5oIChkdzJfYXNtX291dHB1dF9zeW1uYW1lX3VsZWIx MjgpOiBEZWNsYXJlLgorCSogZHdhcmYyb3V0LmMgKHZhcl9sb2Nfdmlldyk6IE5ldyB0eXBlZGVm LgorCShzdHJ1Y3QgZHdfbG9jX2xpc3Rfc3RydWN0KTogQWRkIHZsX3N5bWJvbCwgdmJlZ2luLCB2 ZW5kLgorCShkd2FyZjJvdXRfbG9jdmlld3NfaW5fYXR0cmlidXRlKTogTmV3LgorCShkd2FyZjJv dXRfbG9jdmlld3NfaW5fbG9jbGlzdCk6IE5ldy4KKwkoZHdfdmFsX2VxdWFsX3ApOiBDb21wYXJl IHZhbF92aWV3X2xpc3Qgb2YgZHdfdmFsX2NsYXNzX3ZpZXdfbGlzdHMuCisJKGVudW0gZHdfbGlu ZV9pbmZvX29wY29kZSk6IEFkZCBMSV9hZHZfYWRkcmVzcy4KKwkoc3RydWN0IGR3X2xpbmVfaW5m b190YWJsZSk6IEFkZCB2aWV3LgorCShSRVNFVF9ORVhUX1ZJRVcsIFJFU0VUVElOR19WSUVXX1Ap OiBOZXcgbWFjcm9zLgorCShEV0FSRjJfQVNNX1ZJRVdfREVCVUdfSU5GTyk6IERlZmluZSBkZWZh dWx0LgorCSh6ZXJvX3ZpZXdfcCk6IE5ldyB2YXJpYWJsZS4KKwkoWkVST19WSUVXX1ApOiBOZXcg bWFjcm8uCisJKG91dHB1dF9hc21fbGluZV9kZWJ1Z19pbmZvKTogTmV3LgorCShzdHJ1Y3QgdmFy X2xvY19ub2RlKTogQWRkIHZpZXcuCisJKGFkZF9BVF92aWV3X2xpc3QsIEFUX2xvY19saXN0KTog TmV3LgorCShhZGRfdmFyX2xvY190b19kZWNsKTogQWRkIHZpZXcgcGFyYW0uICBUZXN0IGl0IGFn YWluc3QgbGFzdC4KKwkobmV3X2xvY19saXN0KTogQWRkIHZpZXcgcGFyYW1zLiAgUmVjb3JkIHRo ZW0uCisJKEFUX2xvY19saXN0X3B0cik6IEhhbmRsZSBsb2MgYW5kIHZpZXcgbGlzdHMuCisJKHZp ZXdfbGlzdF90b19sb2NfbGlzdF92YWxfbm9kZSk6IE5ldy4KKwkocHJpbnRfZHdfdmFsKTogSGFu ZGxlIGR3X3ZhbF9jbGFzc192aWV3X2xpc3QuCisJKHNpemVfb2ZfZGllKTogTGlrZXdpc2UuCisJ KHZhbHVlX2Zvcm1hdCk6IExpa2V3aXNlLgorCShsb2NfbGlzdF9oYXNfdmlld3MpOiBOZXcuCisJ KGdlbl9sbHN5bSk6IFNldCB2bF9zeW1ib2wgdG9vLgorCShtYXliZV9nZW5fbGxzeW0sIHNraXBf bG9jX2xpc3RfZW50cnkpOiBOZXcuCisJKGR3YXJmMm91dF9tYXliZV9vdXRwdXRfbG9jbGlzdF92 aWV3X3BhaXIpOiBOZXcuCisJKG91dHB1dF9sb2NfbGlzdCk6IE91dHB1dCB2aWV3IGxpc3Qgb3Ig ZW50cmllcyB0b28uCisJKG91dHB1dF92aWV3X2xpc3Rfb2Zmc2V0KTogTmV3LgorCShvdXRwdXRf ZGllKTogSGFuZGxlIGR3X3ZhbF9jbGFzc192aWV3X2xpc3QuCisJKG91dHB1dF9kd2FyZl92ZXJz aW9uKTogTmV3LgorCShvdXRwdXRfY29tcGlsYXRpb25fdW5pdF9oZWFkZXIpOiBVc2UgaXQuCisJ KG91dHB1dF9za2VsZXRvbl9kZWJ1Z19zZWN0aW9ucyk6IExpa2V3aXNlLgorCShvdXRwdXRfcm5n bGlzdHMsIG91dHB1dF9saW5lX2luZm8pOiBMaWtld2lzZS4KKwkob3V0cHV0X3B1Ym5hbWVzLCBv dXRwdXRfYXJhbmdlcyk6IFVwZGF0ZSB2ZXJzaW9uIGNvbW1lbnRzLgorCShvdXRwdXRfb25lX2xp bmVfaW5mb190YWJsZSk6IE91dHB1dCB2aWV3IG51bWJlcnMgaW4gYXNtIGNvbW1lbnRzLgorCShk d19sb2NfbGlzdCk6IERldGVybWluZSBjdXJyZW50IGVuZHZpZXcsIHBhc3MgaXQgdG8gbmV3X2xv Y19saXN0LgorCUNhbGwgbWF5YmVfZ2VuX2xsc3ltLgorCShsb2NfbGlzdF9mcm9tX3RyZWVfMSk6 IEFkanVzdC4KKwkoYWRkX0FUX2xvY2F0aW9uX2Rlc2NyaXB0aW9uKTogQ3JlYXRlIHZpZXcgbGlz dCBhdHRyaWJ1dGUgaWYKKwluZWVkZWQsIGNoZWNrIGl0J3MgYWJzZW50IG90aGVyd2lzZS4KKwko Y29udmVydF9jZmFfdG9fZmJfbG9jX2xpc3QpOiBBZGp1c3QuCisJKG1heWJlX2VtaXRfZmlsZSk6 IENhbGwgb3V0cHV0X2FzbV9saW5lX2RlYnVnX2luZm8gZm9yIHRlc3QuCisJKGR3YXJmMm91dF92 YXJfbG9jYXRpb24pOiBSZXNldCB2aWV3cyBhcyBuZWVkZWQuICBQcmVjb21wdXRlCisJYWRkX3Zh cl9sb2NfdG9fZGVjbCBhcmdzLiAgQ2FsbCBnZXRfYXR0cl9taW5fbGVuZ3RoIG9ubHkgaWYgd2Ug aGF2ZSB0aGUKKwlhdHRyaWJ1dGUuICBTZXQgdmlldy4KKwkobmV3X2xpbmVfaW5mb190YWJsZSk6 IFJlc2V0IG5leHQgdmlldy4KKwkoc2V0X2N1cl9saW5lX2luZm9fdGFibGUpOiBDYWxsIG91dHB1 dF9hc21fbGluZV9kZWJ1Z19pbmZvIGZvciB0ZXN0LgorCShkd2FyZjJvdXRfc291cmNlX2xpbmUp OiBMaWtld2lzZS4gIE91dHB1dCB2aWV3IHJlc2V0cyBhbmQgbGFiZWxzIHRvCisJdGhlIGFzc2Vt Ymxlciwgb3Igc2VsZWN0IGFwcHJvcHJpYXRlIGxpbmUgaW5mbyBvcGNvZGVzLgorCShwcnVuZV91 bnVzZWRfdHlwZXNfd2Fsa19hdHRyaWJzKTogSGFuZGxlIGR3X3ZhbF9jbGFzc192aWV3X2xpc3Qu CisJKG9wdGltaXplX3N0cmluZ19sZW5ndGgpOiBDYXRjaCBpdC4gIEFkanVzdC4KKwkocmVzb2x2 ZV9hZGRyKTogQ29weSB2bF9zeW1ib2wgYWxvbmcgd2l0aCBsbF9zeW1ib2wuICBIYW5kbGUKKwlk d192YWxfY2xhc3Nfdmlld19saXN0LCBhbmQgcmVtb3ZlIGl0IGlmIG5vIGxvbmdlciBuZWVkZWQu CisJKGhhc2hfbG9jX2xpc3QpOiBIYXNoIHZpZXcgbnVtYmVycy4KKwkobG9jX2xpc3RfaGFzaGVy OjplcXVhbCk6IENvbXBhcmUgdGhlbS4KKwkob3B0aW1pemVfbG9jYXRpb25fbGlzdHMpOiBDaGVj ayB3aGV0aGVyIGEgdmlldyBsaXN0IHN5bWJvbCBpcworCW5lZWRlZCwgYW5kIHdoZXRoZXIgdGhl IGxvY3ZpZXcgYXR0cmlidXRlIGlzIHByZXNlbnQsIGFuZAorCXdoZXRoZXIgdGhleSBtYXRjaC4g IFJlbW92ZSB0aGUgbG9jdmlldyBhdHRyaWJ1dGUgaWYgbm8gbG9uZ2VyCisJbmVlZGVkLgorCShp bmRleF9sb2NhdGlvbl9saXN0cyk6IENhbGwgc2tpcF9sb2NfbGlzdF9lbnRyeSBmb3IgdGVzdC4K KwkoZHdhcmYyb3V0X2ZpbmlzaCk6IENhbGwgb3V0cHV0X2FzbV9saW5lX2RlYnVnX2luZm8gZm9y IHRlc3QuCisJVXNlIG91dHB1dF9kd2FyZl92ZXJzaW9uLgorCSogZHdhcmYyb3V0LmggKGVudW0g ZHdfdmFsX2NsYXNzKTogQWRkIGR3X3ZhbF9jbGFzc192aWV3X2xpc3QuCisJKHN0cnVjdCBkd192 YWxfbm9kZSk6IEFkZCB2YWxfdmlld19saXN0LgorCSogZmluYWwuYyAoU0VFTl9ORVhUX1ZJRVcp OiBOZXcuCisJKHNldF9uZXh0X3ZpZXdfbmVlZGVkKTogTmV3LgorCShjbGVhcl9uZXh0X3ZpZXdf bmVlZGVkKTogTmV3LgorCShtYXliZV9vdXRwdXRfbmV4dF92aWV3KTogTmV3LgorCShmaW5hbF9z dGFydF9mdW5jdGlvbik6IFJlbmFtZSB0by4uLgorCShmaW5hbF9zdGFydF9mdW5jdGlvbl8xKTog Li4uIHRoaXMuICBUYWtlIHBvaW50ZXIgdG8gRklSU1QsCisJYWRkIFNFRU4gcGFyYW1ldGVyLiAg RW1pdCBwYXJhbSBiaW5kaW5ncyBpbiB0aGUgaW5pdGlhbCB2aWV3LgorCShmaW5hbF9zdGFydF9m dW5jdGlvbik6IFJlaW50cm9kdWNlIFNFRU4tbGVzcyBpbnRlcmZhY2UuCisJKGZpbmFsKTogUmVu YW1lIHRvLi4uCisJKGZpbmFsXzEpOiAuLi4gdGhpcy4gIFRha2UgU0VFTiBwYXJhbWV0ZXIuICBP dXRwdXQgZmluYWwgcGVuZGluZworCW5leHQgdmlldyBhdCB0aGUgZW5kLgorCShmaW5hbCk6IFJl aW50cm9kdWNlIHNlZW4tbGVzcyBpbnRlcmZhY2UuCisJKGZpbmFsX3NjYW5faW5zbik6IE91dHB1 dCBwZW5kaW5nIG5leHQgdmlldyBiZWZvcmUgc3dpdGNoaW5nCisJc2VjdGlvbnMgb3IgZW5kaW5n IGEgYmxvY2suICBNYXJrIHRoZSBuZXh0IHZpZXcgYXMgbmVlZGVkIHdoZW4KKwlvdXRwdXR0aW5n IHZhcmlhYmxlIGxvY2F0aW9ucy4gIE5vdGlmeSBkZWJ1ZyBiYWNrZW5kIG9mIHNlY3Rpb24KKwlj aGFuZ2VzLCBhbmQgb2YgbG9jYXRpb24gdmlldyBjaGFuZ2VzLgorCShyZXN0X29mX2hhbmRsZV9m aW5hbCk6IEFkanVzdC4KKwkqIHRvcGxldi5jIChwcm9jZXNzX29wdGlvbnMpOiBBdXRvZGV0ZWN0 IHZhbHVlIGZvciBkZWJ1ZyB2YXJpYWJsZQorCWxvY2F0aW9uIHZpZXdzIG9wdGlvbi4gIFdhcm4g b24gaW5jb21wYXQ1IHdpdGhvdXQgLWdkd2FyZi01LgorCSogZG9jL2ludm9rZS50ZXhpIChndmFy aWFibGUtbG9jYXRpb24tdmlld3MpOiBOZXcuCisJKGd2YXJpYWJsZS1sb2NhdGlvbi12aWV3cz1p bmNvbXBhdDUpOiBOZXcuCisJKGduby12YXJpYWJsZS1sb2NhdGlvbi12aWV3cyk6IE5ldy4KK2lu Y2x1ZGUvCisJKiBkd2FyZjIuZGVmIChEV19BVF9HTlVfZW50cnlfdmlldyk6IE5ldy4KKworCSog ZHdhcmYyLmRlZiAoRFdfQVRfR05VX2xvY3ZpZXdzKTogTmV3LgorCSogZHdhcmYyLmggKGVudW0g ZHdhcmZfbG9jYXRpb25fbGlzdF9lbnRyeV90eXBlKTogQWRkCisJRFdfTExFX0dOVV92aWV3X3Bh aXIuCisJKERXX0xMRV92aWV3X3BhaXIpOiBEZWZpbmUuCisKKy0tLSBpbmNsdWRlL2R3YXJmMi5k ZWYJKHJldmlzaW9uIDI1NzUxMSkKKysrKyBpbmNsdWRlL2R3YXJmMi5kZWYJKHJldmlzaW9uIDI1 NzUwOSkKK0BAIC00NDMsOCArNDQzLDYgQEAgRFdfQVQgKERXX0FUX0dOVV9wdWJ0eXBlcywgMHgy MTM1KQorIC8qIEF0dHJpYnV0ZSBmb3IgZGlzY3JpbWluYXRvci4KKyAgICBTZWUgaHR0cDovL2dj Yy5nbnUub3JnL3dpa2kvRGlzY3JpbWluYXRvciAgKi8KKyBEV19BVCAoRFdfQVRfR05VX2Rpc2Ny aW1pbmF0b3IsIDB4MjEzNikKKy1EV19BVCAoRFdfQVRfR05VX2xvY3ZpZXdzLCAweDIxMzcpCist RFdfQVQgKERXX0FUX0dOVV9lbnRyeV92aWV3LCAweDIxMzgpCisgLyogVk1TIGV4dGVuc2lvbnMu ICAqLworIERXX0FUIChEV19BVF9WTVNfcnRuYmVnX3BkX2FkZHJlc3MsIDB4MjIwMSkKKyAvKiBH TkFUIGV4dGVuc2lvbnMuICAqLworLS0tIGluY2x1ZGUvZHdhcmYyLmgJKHJldmlzaW9uIDI1NzUx MSkKKysrKyBpbmNsdWRlL2R3YXJmMi5oCShyZXZpc2lvbiAyNTc1MDkpCitAQCAtMjk4LDE0ICsy OTgsNiBAQCBlbnVtIGR3YXJmX2xvY2F0aW9uX2xpc3RfZW50cnlfdHlwZQorICAgICBEV19MTEVf c3RhcnRfZW5kID0gMHgwNywKKyAgICAgRFdfTExFX3N0YXJ0X2xlbmd0aCA9IDB4MDgsCisgCist ICAgIC8qIDxodHRwOi8vbGlzdHMuZHdhcmZzdGQub3JnL3ByaXZhdGUuY2dpL2R3YXJmLWRpc2N1 c3MtZHdhcmZzdGQub3JnLzIwMTctQXByaWwvMDA0MzQ3Lmh0bWw+CistICAgICAgIGhhcyB0aGUg cHJvcG9zYWwgZm9yIG5vdzsgb25seSBhdmFpbGFibGUgdG8gbGlzdCBtZW1iZXJzLgorLQorLSAg ICAgICBBIChwb3NzaWJseSB1cGRhdGVkKSBjb3B5IG9mIHRoZSBwcm9wb3NhbCBpcyBhdmFpbGFi bGUgYXQKKy0gICAgICAgPGh0dHA6Ly9wZW9wbGUucmVkaGF0LmNvbS9hb2xpdmEvcGFwZXJzL3Nm bi9kd2FyZjYtc2ZuLWx2dS50eHQ+LiAgKi8KKy0gICAgRFdfTExFX0dOVV92aWV3X3BhaXIgPSAw eDA5LAorLSNkZWZpbmUgRFdfTExFX3ZpZXdfcGFpciBEV19MTEVfR05VX3ZpZXdfcGFpcgorLQor ICAgICAvKiBGb3JtZXIgZXh0ZW5zaW9uIGZvciBGaXNzaW9uLgorICAgICAgICBTZWUgaHR0cDov L2djYy5nbnUub3JnL3dpa2kvRGVidWdGaXNzaW9uLiAgKi8KKyAgICAgRFdfTExFX0dOVV9lbmRf b2ZfbGlzdF9lbnRyeSA9IDB4MDAsCistLS0gZ2NjL2RvYy9naW1wbGUudGV4aQkocmV2aXNpb24g MjU3NTExKQorKysrIGdjYy9kb2MvZ2ltcGxlLnRleGkJKHJldmlzaW9uIDI1NzUwOSkKK0BAIC04 MzYsMTEgKzgzNiw2IEBAIFJldHVybiB0cnVlIGlmIGcgaXMgYSBAY29kZXtHSU1QTEVfREVCVUcK KyBhIHNvdXJjZSBzdGF0ZW1lbnQuCisgQGVuZCBkZWZ0eXBlZm4KKyAKKy1AZGVmdHlwZWZuIHtH SU1QTEUgZnVuY3Rpb259IGdpbXBsZV9kZWJ1Z19pbmxpbmVfZW50cnlfcCAoZ2ltcGxlIGcpCist UmV0dXJuIHRydWUgaWYgZyBpcyBhIEBjb2Rle0dJTVBMRV9ERUJVR30gdGhhdCBtYXJrcyB0aGUg ZW50cnkKKy1wb2ludCBvZiBhbiBpbmxpbmVkIGZ1bmN0aW9uLgorLUBlbmQgZGVmdHlwZWZuCist CisgQGRlZnR5cGVmbiB7R0lNUExFIGZ1bmN0aW9ufSBnaW1wbGVfZGVidWdfbm9uYmluZF9tYXJr ZXJfcCAoZ2ltcGxlIGcpCisgUmV0dXJuIHRydWUgaWYgZyBpcyBhIEBjb2Rle0dJTVBMRV9ERUJV R30gdGhhdCBtYXJrcyBhIHByb2dyYW0gbG9jYXRpb24sCisgd2l0aG91dCBhbnkgdmFyaWFibGUg YmluZGluZy4KK0BAIC0xNTQ2LDcgKzE1NDEsNiBAQCBTZXQgdGhlIGNvbmRpdGlvbmFsIEBjb2Rl e0NPTkRfU1RNVH0gdG8KKyBAY2luZGV4IEBjb2Rle0dJTVBMRV9ERUJVR30KKyBAY2luZGV4IEBj b2Rle0dJTVBMRV9ERUJVR19CSU5EfQorIEBjaW5kZXggQGNvZGV7R0lNUExFX0RFQlVHX0JFR0lO X1NUTVR9CistQGNpbmRleCBAY29kZXtHSU1QTEVfREVCVUdfSU5MSU5FX0VOVFJZfQorIAorIEBk ZWZ0eXBlZm4ge0dJTVBMRSBmdW5jdGlvbn0gZ2RlYnVnICpnaW1wbGVfYnVpbGRfZGVidWdfYmlu ZCAodHJlZSB2YXIsIEAKKyB0cmVlIHZhbHVlLCBnaW1wbGUgc3RtdCkKK0BAIC0xNjMyLDE4ICsx NjI2LDYgQEAgb2JzZXJ2YWJsZSwgYW5kIHRoYXQgbm9uZSBvZiB0aGUgc2lkZSBlZgorIHN0YXRl bWVudHMgYXJlLgorIEBlbmQgZGVmdHlwZWZuCisgCistQGRlZnR5cGVmbiB7R0lNUExFIGZ1bmN0 aW9ufSBnaW1wbGUgZ2ltcGxlX2J1aWxkX2RlYnVnX2lubGluZV9lbnRyeSAodHJlZSBibG9jaywg bG9jYXRpb25fdCBsb2NhdGlvbikKKy1CdWlsZCBhIEBjb2Rle0dJTVBMRV9ERUJVR30gc3RhdGVt ZW50IHdpdGgKKy1AY29kZXtHSU1QTEVfREVCVUdfSU5MSU5FX0VOVFJZfSBAY29kZXtzdWJjb2Rl fS4gIFRoZSBlZmZlY3Qgb2YgdGhpcworLXN0YXRlbWVudCBpcyB0byB0ZWxsIGRlYnVnIGluZm9y bWF0aW9uIGdlbmVyYXRpb24gbWFjaGluZXJ5IHRoYXQgYQorLWZ1bmN0aW9uIGNhbGwgYXQgQGNv ZGV7bG9jYXRpb259IHVuZGVyd2VudCBpbmxpbmUgc3Vic3RpdHV0aW9uLCB0aGF0CistQGNvZGV7 YmxvY2t9IGlzIHRoZSBlbmNsb3NpbmcgbGV4aWNhbCBibG9jayBjcmVhdGVkIGZvciB0aGUKKy1z dWJzdGl0dXRpb24sIGFuZCB0aGF0IGF0IHRoZSBwb2ludCBvZiB0aGUgcHJvZ3JhbSBpbiB3aGlj aCB0aGUgc3RtdCBpcworLWluc2VydGVkLCBhbGwgcGFyYW1ldGVycyBmb3IgdGhlIGlubGluZWQg ZnVuY3Rpb24gYXJlIGJvdW5kIHRvIHRoZQorLXJlc3BlY3RpdmUgYXJndW1lbnRzLCBhbmQgbm9u ZSBvZiB0aGUgc2lkZSBlZmZlY3RzIG9mIGl0cyBzdG10cyBhcmUKKy1vYnNlcnZhYmxlLgorLUBl bmQgZGVmdHlwZWZuCistCisgQG5vZGUgQGNvZGV7R0lNUExFX0VIX0ZJTFRFUn0KKyBAc3Vic2Vj dGlvbiBAY29kZXtHSU1QTEVfRUhfRklMVEVSfQorIEBjaW5kZXggQGNvZGV7R0lNUExFX0VIX0ZJ TFRFUn0KKy0tLSBnY2MvZG9jL2ludm9rZS50ZXhpCShyZXZpc2lvbiAyNTc1MTEpCisrKysgZ2Nj L2RvYy9pbnZva2UudGV4aQkocmV2aXNpb24gMjU3NTA5KQorQEAgLTM0OCw3ICszNDgsNiBAQCBP YmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCisgLWdzdGFicyAgLWdzdGFi cysgIC1nc3RyaWN0LWR3YXJmICAtZ25vLXN0cmljdC1kd2FyZiBAZ29sCisgLWdjb2x1bW4taW5m byAgLWduby1jb2x1bW4taW5mbyBAZ29sCisgLWdzdGF0ZW1lbnQtZnJvbnRpZXJzICAtZ25vLXN0 YXRlbWVudC1mcm9udGllcnMgQGdvbAorLS1ndmFyaWFibGUtbG9jYXRpb24tdmlld3MgIC1nbm8t dmFyaWFibGUtbG9jYXRpb24tdmlld3MgQGdvbAorIC1ndm1zICAtZ3hjb2ZmICAtZ3hjb2ZmKyAg LWd6QHJ7W309QHZhcnt0eXBlfUBye119IEBnb2wKKyAtZmRlYnVnLXByZWZpeC1tYXA9QHZhcntv bGR9PUB2YXJ7bmV3fSAgLWZkZWJ1Zy10eXBlcy1zZWN0aW9uIEBnb2wKKyAtZm5vLWVsaW1pbmF0 ZS11bnVzZWQtZGVidWctdHlwZXMgQGdvbAorQEAgLTcyNTYsMzQgKzcyNTUsNiBAQCBtYXJrZXJz IGluIHRoZSBsaW5lIG51bWJlciB0YWJsZS4gIFRoaXMKKyBjb21waWxpbmcgd2l0aCBvcHRpbWl6 YXRpb24gKEBvcHRpb257LU9zfSwgQG9wdGlvbnstT30sIEBvcHRpb257LU8yfSwKKyBAZG90c3t9 KSwgYW5kIG91dHB1dHRpbmcgRFdBUkYgMiBkZWJ1ZyBpbmZvcm1hdGlvbiBhdCB0aGUgbm9ybWFs IGxldmVsLgorIAorLUBpdGVtIC1ndmFyaWFibGUtbG9jYXRpb24tdmlld3MKKy1AaXRlbSAtZ3Zh cmlhYmxlLWxvY2F0aW9uLXZpZXdzPWluY29tcGF0NQorLUBpdGVtIC1nbm8tdmFyaWFibGUtbG9j YXRpb24tdmlld3MKKy1Ab3BpbmRleCBndmFyaWFibGUtbG9jYXRpb24tdmlld3MKKy1Ab3BpbmRl eCBndmFyaWFibGUtbG9jYXRpb24tdmlld3M9aW5jb21wYXQ1CistQG9waW5kZXggZ25vLXZhcmlh YmxlLWxvY2F0aW9uLXZpZXdzCistQXVnbWVudCB2YXJpYWJsZSBsb2NhdGlvbiBsaXN0cyB3aXRo IHByb2dyZXNzaXZlIHZpZXcgbnVtYmVycyBpbXBsaWVkCistZnJvbSB0aGUgbGluZSBudW1iZXIg dGFibGUuICBUaGlzIGVuYWJsZXMgZGVidWcgaW5mb3JtYXRpb24gY29uc3VtZXJzIHRvCistaW5z cGVjdCBzdGF0ZSBhdCBjZXJ0YWluIHBvaW50cyBvZiB0aGUgcHJvZ3JhbSwgZXZlbiBpZiBubyBp bnN0cnVjdGlvbnMKKy1hc3NvY2lhdGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGxv Y2F0aW9ucyBhcmUgcHJlc2VudCBhdCB0aGF0CistcG9pbnQuICBJZiB0aGUgYXNzZW1ibGVyIGxh Y2tzIHN1cHBvcnQgZm9yIHZpZXcgbnVtYmVycyBpbiBsaW5lIG51bWJlcgorLXRhYmxlcywgdGhp cyB3aWxsIGNhdXNlIHRoZSBjb21waWxlciB0byBlbWl0IHRoZSBsaW5lIG51bWJlciB0YWJsZSwK Ky13aGljaCBnZW5lcmFsbHkgbWFrZXMgdGhlbSBzb21ld2hhdCBsZXNzIGNvbXBhY3QuICBUaGUg YXVnbWVudGVkIGxpbmUKKy1udW1iZXIgdGFibGVzIGFuZCBsb2NhdGlvbiBsaXN0cyBhcmUgZnVs bHkgYmFja3dhcmQtY29tcGF0aWJsZSwgc28gdGhleQorLWNhbiBiZSBjb25zdW1lZCBieSBkZWJ1 ZyBpbmZvcm1hdGlvbiBjb25zdW1lcnMgdGhhdCBhcmUgbm90IGF3YXJlIG9mCistdGhlc2UgYXVn bWVudGF0aW9ucywgYnV0IHRoZXkgd29uJ3QgZGVyaXZlIGFueSBiZW5lZml0IGZyb20gdGhlbSBl aXRoZXIuCistVGhpcyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgd2hlbiBvdXRwdXR0aW5nIERXQVJG IDIgZGVidWcgaW5mb3JtYXRpb24gYXQKKy10aGUgbm9ybWFsIGxldmVsLCBhcyBsb25nIGFzIEBv cHRpb257LWZ2YXItdHJhY2tpbmctYXNzaWdubWVudHN9IGlzCistZW5hYmxlZCBhbmQgQG9wdGlv bnstZ3N0cmljdC1kd2FyZn0gaXMgbm90LgorLQorLVRoZXJlIGlzIGEgcHJvcG9zZWQgcmVwcmVz ZW50YXRpb24gZm9yIHZpZXcgbnVtYmVycyB0aGF0IGlzIG5vdCBiYWNrd2FyZAorLWNvbXBhdGli bGUgd2l0aCB0aGUgbG9jYXRpb24gbGlzdCBmb3JtYXQgaW50cm9kdWNlZCBpbiBEV0FSRiA1LCB0 aGF0IGNhbgorLWJlIGVuYWJsZWQgd2l0aCBAb3B0aW9uey1ndmFyaWFibGUtbG9jYXRpb24tdmll d3M9aW5jb21wYXQ1fS4gIFRoaXMKKy1vcHRpb24gbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVy ZSwgaXMgb25seSBwcm92aWRlZCBhcyBhIHJlZmVyZW5jZQorLWltcGxlbWVudGF0aW9uIG9mIHRo ZSBwcm9wb3NlZCByZXByZXNlbnRhdGlvbi4gIERlYnVnIGluZm9ybWF0aW9uCistY29uc3VtZXJz IGFyZSBub3QgZXhwZWN0ZWQgdG8gc3VwcG9ydCB0aGlzIGV4dGVuZGVkIGZvcm1hdCwgYW5kIHRo ZXkKKy13b3VsZCBiZSByZW5kZXJlZCB1bmFibGUgdG8gZGVjb2RlIGxvY2F0aW9uIGxpc3RzIHVz aW5nIGl0LgorLQorIEBpdGVtIC1nekBye1t9PUB2YXJ7dHlwZX1AcntdfQorIEBvcGluZGV4IGd6 CisgUHJvZHVjZSBjb21wcmVzc2VkIGRlYnVnIHNlY3Rpb25zIGluIERXQVJGIGZvcm1hdCwgaWYg dGhhdCBpcyBzdXBwb3J0ZWQuCistLS0gZ2NjL2RvYy9ydGwudGV4aQkocmV2aXNpb24gMjU3NTEx KQorKysrIGdjYy9kb2MvcnRsLnRleGkJKHJldmlzaW9uIDI1NzUwOSkKK0BAIC0zNjcwLDEwICsz NjcwLDcgQEAgUmVmZXJzIHRvIGEgcGFyYW1ldGVyIHRoYXQgd2FzIGNvbXBsZXRlbAorIEBpdGVt IChkZWJ1Z19tYXJrZXI6QHZhcnttb2RlfSkKKyBNYXJrcyBhIHByb2dyYW0gbG9jYXRpb24uICBX aXRoIEBjb2Rle1ZPSURtb2RlfSwgaXQgc3RhbmRzIGZvciB0aGUKKyBiZWdpbm5pbmcgb2YgYSBz dGF0ZW1lbnQsIGEgcmVjb21tZW5kZWQgaW5zcGVjdGlvbiBwb2ludCBsb2dpY2FsbHkgYWZ0ZXIK Ky1hbGwgcHJpb3Igc2lkZSBlZmZlY3RzLCBhbmQgYmVmb3JlIGFueSBzdWJzZXF1ZW50IHNpZGUg ZWZmZWN0cy4gIFdpdGgKKy1AY29kZXtCTEttb2RlfSwgaXQgaW5kaWNhdGVzIGFuIGlubGluZSBl bnRyeSBwb2ludDogdGhlIGxleGljYWwgYmxvY2sKKy1lbmNvZGVkIGluIHRoZSBAY29kZXtJTlNO X0xPQ0FUSU9OfSBpcyB0aGUgZW5jbG9zaW5nIGJsb2NrIHRoYXQgZW5jbG9zZXMKKy10aGUgaW5s aW5lZCBmdW5jdGlvbi4KKythbGwgcHJpb3Igc2lkZSBlZmZlY3RzLCBhbmQgYmVmb3JlIGFueSBz dWJzZXF1ZW50IHNpZGUgZWZmZWN0cy4KKyAKKyBAZW5kIHRhYmxlCisgCitAQCAtMzk1NywxMyAr Mzk1NCw2IEBAIFRoaXMgbm90ZSBpcyB1c2VkIHRvIGdlbmVyYXRlIEBjb2Rle2lzX3MKKyBkZWJ1 Z2dpZ24gaW5mb3JtYXRpb24uICBJdCBpbmRpY2F0ZXMgdGhlIGJlZ2lubmluZyBvZiBhIHVzZXIK KyBzdGF0ZW1lbnQuCisgCistQGZpbmRleCBOT1RFX0lOU05fSU5MSU5FX0VOVFJZCistQGl0ZW0g Tk9URV9JTlNOX0lOTElORV9FTlRSWQorLVRoaXMgbm90ZSBpcyB1c2VkIHRvIGdlbmVyYXRlIEBj b2Rle2VudHJ5X3BjfSBmb3IgaW5saW5lZCBzdWJyb3V0aW5lcyBpbgorLWRlYnVnZ2luZyBpbmZv cm1hdGlvbi4gIEl0IGluZGljYXRlcyBhbiBpbnNwZWN0aW9uIHBvaW50IGF0IHdoaWNoIGFsbAor LWFyZ3VtZW50cyBmb3IgdGhlIGlubGluZWQgZnVuY3Rpb24gaGF2ZSBiZWVuIGJvdW5kLCBhbmQg YmVmb3JlIGl0cyBmaXJzdAorLXN0YXRlbWVudC4KKy0KKyBAZW5kIHRhYmxlCisgCisgVGhlc2Ug Y29kZXMgYXJlIHByaW50ZWQgc3ltYm9saWNhbGx5IHdoZW4gdGhleSBhcHBlYXIgaW4gZGVidWdn aW5nIGR1bXBzLgorQEAgLTM5ODEsMTIgKzM5NzEsOCBAQCBiaW5kcyBhIHVzZXIgdmFyaWFibGUg dHJlZSB0byBhbiBSVEwgcmVwCisgaXQgc3RhbmRzIGZvciB0aGUgdmFsdWUgYm91bmQgdG8gdGhl IGNvcnJlc3BvbmRpbmcKKyBAY29kZXtERUJVR19FWFBSX0RFQ0x9LgorIAorLUBjb2Rle0dJTVBM RV9ERUJVR19CRUdJTl9TVE1UfSBhbmQgQGNvZGV7R0lNUExFX0RFQlVHX0lOTElORV9FTlRSWX0g YXJlCistZXhwYW5kZWQgdG8gUlRMIGFzIGEgQGNvZGV7REVCVUdfSU5TTn0gd2l0aCBhIEBjb2Rl e0RFQlVHX01BUktFUn0KKy1AY29kZXtQQVRURVJOfTsgdGhlIGRpZmZlcmVuY2UgaXMgdGhlIFJU TCBtb2RlOiB0aGUgZm9ybWVyJ3MKKy1AY29kZXtERUJVR19NQVJLRVJ9IGlzIEBjb2Rle1ZPSURt b2RlfSwgd2hlcmVhcyB0aGUgbGF0dGVyIGlzCistQGNvZGV7QkxLbW9kZX07IGluZm9ybWF0aW9u IGFib3V0IHRoZSBpbmxpbmVkIGZ1bmN0aW9uIGNhbiBiZSB0YWtlbiBmcm9tCistdGhlIGxleGlj YWwgYmxvY2sgZW5jb2RlZCBpbiB0aGUgQGNvZGV7SU5TTl9MT0NBVElPTn0uICBUaGVzZQorK0Bj b2Rle0dJTVBMRV9ERUJVR19CRUdJTl9TVE1UfSBpcyBleHBhbmRlZCB0byBSVEwgYXMgYSBAY29k ZXtERUJVR19JTlNOfQorK3dpdGggYSBAY29kZXtWT0lEbW9kZX0gQGNvZGV7REVCVUdfTUFSS0VS fSBAY29kZXtQQVRURVJOfS4gIFRoZXNlCisgQGNvZGV7REVCVUdfSU5TTn1zLCB0aGF0IGRvIG5v dCBjYXJyeSBAY29kZXtWQVJfTE9DQVRJT059IGluZm9ybWF0aW9uLAorIGp1c3QgQGNvZGV7REVC VUdfTUFSS0VSfXMsIGNhbiBiZSBkZXRlY3RlZCBieSB0ZXN0aW5nCisgQGNvZGV7REVCVUdfTUFS S0VSX0lOU05fUH0sIHdoZXJlYXMgdGhvc2UgdGhhdCBkbyBjYW4gYmUgcmVjb2duaXplZCBhcwor QEAgLTM5OTcsOCArMzk4Myw4IEBAIHdpdGggcmVzcGVjdCB0byBlYWNoIG90aGVyLCBwYXJ0aWN1 bGFybHkKKyBpbmZvcm1hdGlvbiBpcyBrZXB0IGluIHBzZXVkby1pbnN0cnVjdGlvbiBmb3JtLCBz byB0aGF0LCB1bmxpa2Ugbm90ZXMsCisgaXQgZ2V0cyB0aGUgc2FtZSB0cmVhdG1lbnQgYW5kIGFk anVzdG1lbnRzIHRoYXQgcmVndWxhciBpbnN0cnVjdGlvbnMKKyB3b3VsZC4gIEl0IGlzIHRoZSB2 YXJpYWJsZSB0cmFja2luZyBwYXNzIHRoYXQgdHVybnMgdGhlc2UKKy1wc2V1ZG8taW5zdHJ1Y3Rp b25zIGludG8gQGNvZGV7Tk9URV9JTlNOX1ZBUl9MT0NBVElPTn0sCistQGNvZGV7Tk9URV9JTlNO X0JFR0lOX1NUTVR9IGFuZCBAY29kZXtOT1RFX0lOU05fSU5MSU5FX0VOVFJZfSBub3RlcywKKytw c2V1ZG8taW5zdHJ1Y3Rpb25zIGludG8gQGNvZGV7Tk9URV9JTlNOX1ZBUl9MT0NBVElPTn0gYW5k CisrQGNvZGV7Tk9URV9JTlNOX0JFR0lOX1NUTVR9IG5vdGVzLAorIGFuYWx5emluZyBjb250cm9s IGZsb3csIHZhbHVlIGVxdWl2YWxlbmNlcyBhbmQgY2hhbmdlcyB0byByZWdpc3RlcnMgYW5kCisg bWVtb3J5IHJlZmVyZW5jZWQgaW4gdmFsdWUgZXhwcmVzc2lvbnMsIHByb3BhZ2F0aW5nIHRoZSB2 YWx1ZXMgb2YgZGVidWcKKyB0ZW1wb3JhcmllcyBhbmQgZGV0ZXJtaW5pbmcgZXhwcmVzc2lvbnMg dGhhdCBjYW4gYmUgdXNlZCB0byBjb21wdXRlIHRoZQorLS0tIGdjYy9kd2FyZjJhc20uYwkocmV2 aXNpb24gMjU3NTExKQorKysrIGdjYy9kd2FyZjJhc20uYwkocmV2aXNpb24gMjU3NTA5KQorQEAg LTc2NywzNSArNzY3LDYgQEAgZHcyX2FzbV9vdXRwdXRfZGF0YV9zbGViMTI4IChIT1NUX1dJREVf SQorICAgdmFfZW5kIChhcCk7CisgfQorIAorLS8qIE91dHB1dCBzeW1ib2wgTEFCMSBhcyBhbiB1 bnNpZ25lZCBMRUIxMjggcXVhbnRpdHkuICBMQUIxIHNob3VsZCBiZQorLSAgIGFuIGFzc2VtYmxl ci1jb21wdXRlZCBjb25zdGFudCwgZS5nLiBhIHZpZXcgbnVtYmVyLCBiZWNhdXNlIHdlCistICAg Y2FuJ3QgaGF2ZSByZWxvY2F0aW9ucyBpbiBMRUIxMjggcXVhbnRpdGllcy4gICovCistCistdm9p ZAorLWR3Ml9hc21fb3V0cHV0X3N5bW5hbWVfdWxlYjEyOCAoY29uc3QgY2hhciAqbGFiMSBBVFRS SUJVVEVfVU5VU0VELAorLQkJCQljb25zdCBjaGFyICpjb21tZW50LCAuLi4pCisteworLSAgdmFf bGlzdCBhcDsKKy0KKy0gIHZhX3N0YXJ0IChhcCwgY29tbWVudCk7CistCistI2lmZGVmIEhBVkVf QVNfTEVCMTI4CistICBmcHV0cyAoIlx0LnVsZWIxMjggIiwgYXNtX291dF9maWxlKTsKKy0gIGFz c2VtYmxlX25hbWUgKGFzbV9vdXRfZmlsZSwgbGFiMSk7CistI2Vsc2UKKy0gIGdjY191bnJlYWNo YWJsZSAoKTsKKy0jZW5kaWYKKy0KKy0gIGlmIChmbGFnX2RlYnVnX2FzbSAmJiBjb21tZW50KQor LSAgICB7CistICAgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHQlcyAiLCBBU01fQ09NTUVO VF9TVEFSVCk7CistICAgICAgdmZwcmludGYgKGFzbV9vdXRfZmlsZSwgY29tbWVudCwgYXApOwor LSAgICB9CistICBmcHV0YyAoJ1xuJywgYXNtX291dF9maWxlKTsKKy0KKy0gIHZhX2VuZCAoYXAp OworLX0KKy0KKyB2b2lkCisgZHcyX2FzbV9vdXRwdXRfZGVsdGFfdWxlYjEyOCAoY29uc3QgY2hh ciAqbGFiMSBBVFRSSUJVVEVfVU5VU0VELAorIAkJCSAgICAgIGNvbnN0IGNoYXIgKmxhYjIgQVRU UklCVVRFX1VOVVNFRCwKKy0tLSBnY2MvZHdhcmYyYXNtLmgJKHJldmlzaW9uIDI1NzUxMSkKKysr KyBnY2MvZHdhcmYyYXNtLmgJKHJldmlzaW9uIDI1NzUwOSkKK0BAIC03MCwxMCArNzAsNiBAQCBl eHRlcm4gdm9pZCBkdzJfYXNtX291dHB1dF9kYXRhX3NsZWIxMjgKKyAJCQkJCSBjb25zdCBjaGFy ICosIC4uLikKKyAgICAgIEFUVFJJQlVURV9OVUxMX1BSSU5URl8yOworIAorLWV4dGVybiB2b2lk IGR3Ml9hc21fb3V0cHV0X3N5bW5hbWVfdWxlYjEyOCAoY29uc3QgY2hhciAqLAorLQkJCQkJICAg IGNvbnN0IGNoYXIgKiwgLi4uKQorLSAgICAgQVRUUklCVVRFX05VTExfUFJJTlRGXzI7CistCisg ZXh0ZXJuIHZvaWQgZHcyX2FzbV9vdXRwdXRfZGVsdGFfdWxlYjEyOCAoY29uc3QgY2hhciAqLCBj b25zdCBjaGFyICosCisgCQkJCQkgIGNvbnN0IGNoYXIgKiwgLi4uKQorICAgICAgQVRUUklCVVRF X05VTExfUFJJTlRGXzM7CistLS0gZ2NjL2NvbmZpZ3VyZQkocmV2aXNpb24gMjU3NTExKQorKysr IGdjYy9jb25maWd1cmUJKHJldmlzaW9uIDI1NzUwOSkKK0BAIC0yNzgyNSw1MiArMjc4MjUsNiBA QCAkYXNfZWNobyAiJGdjY19jdl9hc19kd2FyZjJfZmlsZV9idWdneSIKKyAKKyAkYXNfZWNobyAi I2RlZmluZSBIQVZFX0FTX0RXQVJGMl9ERUJVR19MSU5FIDEiID4+Y29uZmRlZnMuaAorIAorLQor LSAgICBpZiB0ZXN0ICRnY2NfY3ZfYXNfbGViMTI4ID0geWVzOyB0aGVuCistCWNvbmZ0ZXN0X3M9 IlwKKy0JLmZpbGUgMSBcImNvbmZ0ZXN0LnNcIgorLQkubG9jIDEgMyAwIHZpZXcgLkxWVTEKKy0J JGluc24KKy0JLmRhdGEKKy0JLnVsZWIxMjggLkxWVTEKKy0JLnVsZWIxMjggLkxWVTEKKy0iCist CXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYXNzZW1i bGVyIGZvciBkd2FyZjIgZGVidWdfdmlldyBzdXBwb3J0IiA+JjUKKy0kYXNfZWNob19uICJjaGVj a2luZyBhc3NlbWJsZXIgZm9yIGR3YXJmMiBkZWJ1Z192aWV3IHN1cHBvcnQuLi4gIiA+JjY7IH0K Ky1pZiB0ZXN0ICIke2djY19jdl9hc19kd2FyZjJfZGVidWdfdmlldytzZXR9IiA9IHNldDsgdGhl biA6CistICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorLWVsc2UKKy0gIGdjY19jdl9hc19k d2FyZjJfZGVidWdfdmlldz1ubworLSAgICBpZiB0ZXN0ICRpbl90cmVlX2dhcyA9IHllczsgdGhl bgorLSAgICBpZiB0ZXN0ICRpbl90cmVlX2dhc19pc19lbGYgPSB5ZXMgXAorLSAgJiYgdGVzdCAk Z2NjX2N2X2dhc192ZXJzIC1nZSBgZXhwciBcKCBcKCAyIFwqIDEwMDAgXCkgKyAyNyBcKSBcKiAx MDAwICsgMGAKKy0gIHRoZW4gZ2NjX2N2X2FzX2R3YXJmMl9kZWJ1Z192aWV3PXllcworLWZpCist ICBlbGlmIHRlc3QgeCRnY2NfY3ZfYXMgIT0geDsgdGhlbgorLSAgICAkYXNfZWNobyAiJGNvbmZ0 ZXN0X3MiID4gY29uZnRlc3QucworLSAgICBpZiB7IGFjX3RyeT0nJGdjY19jdl9hcyAkZ2NjX2N2 X2FzX2ZsYWdzICAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LnMgPiY1JworLSAgeyB7IGV2YWwgZWNo byAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX3RyeVwiIjsgfSA+JjUK Ky0gIChldmFsICRhY190cnkpIDI+JjUKKy0gIGFjX3N0YXR1cz0kPworLSAgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CistICB0ZXN0 ICRhY19zdGF0dXMgPSAwOyB9OyB9CistICAgIHRoZW4KKy0JZ2NjX2N2X2FzX2R3YXJmMl9kZWJ1 Z192aWV3PXllcworLSAgICBlbHNlCistICAgICAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJv Z3JhbSB3YXMiID4mNQorLSAgICAgIGNhdCBjb25mdGVzdC5zID4mNQorLSAgICBmaQorLSAgICBy bSAtZiBjb25mdGVzdC5vIGNvbmZ0ZXN0LnMKKy0gIGZpCistZmkKKy17ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdjY19jdl9hc19kd2FyZjJfZGVidWdf dmlldyIgPiY1CistJGFzX2VjaG8gIiRnY2NfY3ZfYXNfZHdhcmYyX2RlYnVnX3ZpZXciID4mNjsg fQorLWlmIHRlc3QgJGdjY19jdl9hc19kd2FyZjJfZGVidWdfdmlldyA9IHllczsgdGhlbgorLQor LSRhc19lY2hvICIjZGVmaW5lIEhBVkVfQVNfRFdBUkYyX0RFQlVHX1ZJRVcgMSIgPj5jb25mZGVm cy5oCistCistZmkKKy0gICAgZmkKKyAgZmkKKyAKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhc3NlbWJsZXIgZm9yIC0tZ2R3YXJmMiBvcHRpb24i ID4mNQorLS0tIGdjYy9maW5hbC5jCShyZXZpc2lvbiAyNTc1MTEpCisrKysgZ2NjL2ZpbmFsLmMJ KHJldmlzaW9uIDI1NzUwOSkKK0BAIC0xMTAsNyArMTEwLDYgQEAgYWxvbmcgd2l0aCBHQ0M7IHNl ZSB0aGUgZmlsZSBDT1BZSU5HMy4KKyAvKiBCaXRmbGFncyB1c2VkIGJ5IGZpbmFsX3NjYW5faW5z bi4gICovCisgI2RlZmluZSBTRUVOX05PVEUJMQorICNkZWZpbmUgU0VFTl9FTUlUVEVECTIKKy0j ZGVmaW5lIFNFRU5fTkVYVF9WSUVXCTQKKyAKKyAvKiBMYXN0IGluc24gcHJvY2Vzc2VkIGJ5IGZp bmFsX3NjYW5faW5zbi4gICovCisgc3RhdGljIHJ0eF9pbnNuICpkZWJ1Z19pbnNuOworQEAgLTE2 MTEsNyArMTYxMCw2IEBAIHJlZW1pdF9pbnNuX2Jsb2NrX25vdGVzICh2b2lkKQorIAkgICAgYnJl YWs7CisgCisgCSAgY2FzZSBOT1RFX0lOU05fQkVHSU5fU1RNVDoKKy0JICBjYXNlIE5PVEVfSU5T Tl9JTkxJTkVfRU5UUlk6CisgCSAgICB0aGlzX2Jsb2NrID0gTE9DQVRJT05fQkxPQ0sgKE5PVEVf TUFSS0VSX0xPQ0FUSU9OIChpbnNuKSk7CisgCSAgICBnb3RvIHNldF9jdXJfYmxvY2tfdG9fdGhp c19ibG9jazsKKyAKK0BAIC0xNjk0LDY3ICsxNjkyLDYgQEAgZ2V0X3NvbWVfbG9jYWxfZHluYW1p Y19uYW1lICgpCisgICByZXR1cm4gMDsKKyB9CisgCistLyogQXJyYW5nZSBmb3IgdXMgdG8gZW1p dCBhIHNvdXJjZSBsb2NhdGlvbiBub3RlIGJlZm9yZSBhbnkgZnVydGhlcgorLSAgIHJlYWwgaW5z bnMgb3Igc2VjdGlvbiBjaGFuZ2VzLCBieSBzZXR0aW5nIHRoZSBTRUVOX05FWFRfVklFVyBiaXQg aW4KKy0gICAqU0VFTiwgYXMgbG9uZyBhcyB3ZSBhcmUga2VlcGluZyB0cmFjayBvZiBsb2NhdGlv biB2aWV3cy4gIFRoZSBiaXQKKy0gICBpbmRpY2F0ZXMgd2UgaGF2ZSByZWZlcmVuY2VkIHRoZSBu ZXh0IHZpZXcgYXQgdGhlIGN1cnJlbnQgUEMsIHNvIHdlCistICAgaGF2ZSB0byBlbWl0IGl0LiAg VGhpcyBzaG91bGQgYmUgY2FsbGVkIG5leHQgdG8gdGhlIHZhcl9sb2NhdGlvbgorLSAgIGRlYnVn IGhvb2suICAqLworLQorLXN0YXRpYyBpbmxpbmUgdm9pZAorLXNldF9uZXh0X3ZpZXdfbmVlZGVk IChpbnQgKnNlZW4pCisteworLSAgaWYgKGRlYnVnX3ZhcmlhYmxlX2xvY2F0aW9uX3ZpZXdzKQor LSAgICAqc2VlbiB8PSBTRUVOX05FWFRfVklFVzsKKy19CistCistLyogQ2xlYXIgdGhlIGZsYWcg aW4gKlNFRU4gaW5kaWNhdGluZyB3ZSBuZWVkIHRvIGVtaXQgdGhlIG5leHQgdmlldy4KKy0gICBU aGlzIHNob3VsZCBiZSBjYWxsZWQgbmV4dCB0byB0aGUgc291cmNlX2xpbmUgZGVidWcgaG9vay4g ICovCistCistc3RhdGljIGlubGluZSB2b2lkCistY2xlYXJfbmV4dF92aWV3X25lZWRlZCAoaW50 ICpzZWVuKQorLXsKKy0gICpzZWVuICY9IH5TRUVOX05FWFRfVklFVzsKKy19CistCistLyogVGVz dCB3aGV0aGVyIHdlIGhhdmUgYSBwZW5kaW5nIHJlcXVlc3QgdG8gZW1pdCB0aGUgbmV4dCB2aWV3 IGluCistICAgKlNFRU4sIGFuZCBlbWl0IGl0IGlmIG5lZWRlZCwgY2xlYXJpbmcgdGhlIHJlcXVl c3QgYml0LiAgKi8KKy0KKy1zdGF0aWMgaW5saW5lIHZvaWQKKy1tYXliZV9vdXRwdXRfbmV4dF92 aWV3IChpbnQgKnNlZW4pCisteworLSAgaWYgKCgqc2VlbiAmIFNFRU5fTkVYVF9WSUVXKSAhPSAw KQorLSAgICB7CistICAgICAgY2xlYXJfbmV4dF92aWV3X25lZWRlZCAoc2Vlbik7CistICAgICAg KCpkZWJ1Z19ob29rcy0+c291cmNlX2xpbmUpIChsYXN0X2xpbmVudW0sIGxhc3RfY29sdW1ubnVt LAorLQkJCQkgICBsYXN0X2ZpbGVuYW1lLCBsYXN0X2Rpc2NyaW1pbmF0b3IsCistCQkJCSAgIGZh bHNlKTsKKy0gICAgfQorLX0KKy0KKy0vKiBXZSB3YW50IHRvIGVtaXQgcGFyYW0gYmluZGluZ3Mg KGJlZm9yZSB0aGUgZmlyc3QgYmVnaW5fc3RtdCkgaW4gdGhlCistICAgaW5pdGlhbCB2aWV3LCBp ZiB3ZSBhcmUgZW1pdHRpbmcgdmlld3MuICBUbyB0aGF0IGVuZCwgd2UgbWF5CistICAgY29uc3Vt ZSBpbml0aWFsIG5vdGVzIGluIHRoZSBmdW5jdGlvbiwgcHJvY2Vzc2luZyB0aGVtIGluCistICAg ZmluYWxfc3RhcnRfZnVuY3Rpb24sIGJlZm9yZSBzaWduYWxpbmcgdGhlIGJlZ2lubmluZyBvZiB0 aGUKKy0gICBwcm9sb2d1ZSwgcmF0aGVyIHRoYW4gaW4gZmluYWwuCistCistICAgV2UgZG9uJ3Qg dGVzdCB3aGV0aGVyIHRoZSBERUNMcyBhcmUgUEFSTV9ERUNMczogdGhlIGFzc3VtcHRpb24gaXMK Ky0gICB0aGF0IHRoZXJlIHdpbGwgYmUgYSBOT1RFX0lOU05fQkVHSU5fU1RNVCBtYXJrZXIgYmVm b3JlIGFueQorLSAgIG5vbi1wYXJhbWV0ZXIgTk9URV9JTlNOX1ZBUl9MT0NBVElPTi4gIEl0J3Mg b2sgaWYgdGhlIG1hcmtlciBpcyBub3QKKy0gICB0aGVyZSwgd2UnbGwganVzdCBoYXZlIG1vcmUg dmFyaWFibGUgbG9jYXRpb25zIGJvdW5kIGluIHRoZSBpbml0aWFsCistICAgdmlldywgd2hpY2gg aXMgY29uc2lzdGVudCB3aXRoIHRoZWlyIGJlaW5nIGJvdW5kIHdpdGhvdXQgYW55IGNvZGUKKy0g ICB0aGF0IHdvdWxkIGdpdmUgdGhlbSBhIHZhbHVlLiAgKi8KKy0KKy1zdGF0aWMgaW5saW5lIGJv b2wKKy1pbl9pbml0aWFsX3ZpZXdfcCAocnR4X2luc24gKmluc24pCisteworLSAgcmV0dXJuICgh REVDTF9JR05PUkVEX1AgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkKKy0JICAmJiBkZWJ1Z192YXJp YWJsZV9sb2NhdGlvbl92aWV3cworLQkgICYmIGluc24gJiYgR0VUX0NPREUgKGluc24pID09IE5P VEUKKy0JICAmJiAoTk9URV9LSU5EIChpbnNuKSA9PSBOT1RFX0lOU05fVkFSX0xPQ0FUSU9OCist CSAgICAgIHx8IE5PVEVfS0lORCAoaW5zbikgPT0gTk9URV9JTlNOX0RFTEVURUQpKTsKKy19Cist CisgLyogT3V0cHV0IGFzc2VtYmxlciBjb2RlIGZvciB0aGUgc3RhcnQgb2YgYSBmdW5jdGlvbiwK KyAgICBhbmQgaW5pdGlhbGl6ZSBzb21lIG9mIHRoZSB2YXJpYWJsZXMgaW4gdGhpcyBmaWxlCisg ICAgZm9yIHRoZSBuZXcgZnVuY3Rpb24uICBUaGUgbGFiZWwgZm9yIHRoZSBmdW5jdGlvbiBhbmQg YXNzb2NpYXRlZAorQEAgLTE3NjIsMTUgKzE2OTksMTIgQEAgaW5faW5pdGlhbF92aWV3X3AgKHJ0 eF9pbnNuICppbnNuKQorIAorICAgIEZJUlNUIGlzIHRoZSBmaXJzdCBpbnNuIG9mIHRoZSBydGwg Zm9yIHRoZSBmdW5jdGlvbiBiZWluZyBjb21waWxlZC4KKyAgICBGSUxFIGlzIHRoZSBmaWxlIHRv IHdyaXRlIGFzc2VtYmxlciBjb2RlIHRvLgorLSAgIFNFRU4gc2hvdWxkIGJlIGluaXRpYWxseSBz ZXQgdG8gemVybywgYW5kIGl0IG1heSBiZSB1cGRhdGVkIHRvCistICAgaW5kaWNhdGUgd2UgaGF2 ZSByZWZlcmVuY2VzIHRvIHRoZSBuZXh0IGxvY2F0aW9uIHZpZXcsIHRoYXQgd291bGQKKy0gICBy ZXF1aXJlIHVzIHRvIGVtaXQgaXQgYXQgdGhlIGN1cnJlbnQgUEMuCisgICAgT1BUSU1JWkVfUCBp cyBub256ZXJvIGlmIHdlIHNob3VsZCBlbGltaW5hdGUgcmVkdW5kYW50CisgICAgICB0ZXN0IGFu ZCBjb21wYXJlIGluc25zLiAgKi8KKyAKKy1zdGF0aWMgdm9pZAorLWZpbmFsX3N0YXJ0X2Z1bmN0 aW9uXzEgKHJ0eF9pbnNuICoqZmlyc3RwLCBGSUxFICpmaWxlLCBpbnQgKnNlZW4sCistCQkJaW50 IG9wdGltaXplX3AgQVRUUklCVVRFX1VOVVNFRCkKKyt2b2lkCisrZmluYWxfc3RhcnRfZnVuY3Rp b24gKHJ0eF9pbnNuICpmaXJzdCwgRklMRSAqZmlsZSwKKysJCSAgICAgIGludCBvcHRpbWl6ZV9w IEFUVFJJQlVURV9VTlVTRUQpCisgeworICAgYmxvY2tfZGVwdGggPSAwOworIAorQEAgLTE3ODgs MjEgKzE3MjIsOCBAQCBmaW5hbF9zdGFydF9mdW5jdGlvbl8xIChydHhfaW5zbiAqKmZpcnN0Cisg ICBpZiAoZmxhZ19zYW5pdGl6ZSAmIFNBTklUSVpFX0FERFJFU1MpCisgICAgIGFzYW5fZnVuY3Rp b25fc3RhcnQgKCk7CisgCistICBydHhfaW5zbiAqZmlyc3QgPSAqZmlyc3RwOworLSAgaWYgKGlu X2luaXRpYWxfdmlld19wIChmaXJzdCkpCistICAgIHsKKy0gICAgICBkbworLQl7CistCSAgZmlu YWxfc2Nhbl9pbnNuIChmaXJzdCwgZmlsZSwgMCwgMCwgc2Vlbik7CistCSAgZmlyc3QgPSBORVhU X0lOU04gKGZpcnN0KTsKKy0JfQorLSAgICAgIHdoaWxlIChpbl9pbml0aWFsX3ZpZXdfcCAoZmly c3QpKTsKKy0gICAgICAqZmlyc3RwID0gZmlyc3Q7CistICAgIH0KKy0KKyAgIGlmICghREVDTF9J R05PUkVEX1AgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkpCistICAgIGRlYnVnX2hvb2tzLT5iZWdp bl9wcm9sb2d1ZSAobGFzdF9saW5lbnVtLCBsYXN0X2NvbHVtbm51bSwKKy0JCQkJIGxhc3RfZmls ZW5hbWUpOworKyAgICBkZWJ1Z19ob29rcy0+YmVnaW5fcHJvbG9ndWUgKGxhc3RfbGluZW51bSwg bGFzdF9jb2x1bW5udW0sIGxhc3RfZmlsZW5hbWUpOworIAorICAgaWYgKCFkd2FyZjJfZGVidWdf aW5mb19lbWl0dGVkX3AgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkpCisgICAgIGR3YXJmMm91dF9i ZWdpbl9wcm9sb2d1ZSAoMCwgMCwgTlVMTCk7CitAQCAtMTg3OCwxNyArMTc5OSw2IEBAIGZpbmFs X3N0YXJ0X2Z1bmN0aW9uXzEgKHJ0eF9pbnNuICoqZmlyc3QKKyAgICAgcHJvZmlsZV9hZnRlcl9w cm9sb2d1ZSAoZmlsZSk7CisgfQorIAorLS8qIFRoaXMgaXMgYW4gZXhwb3J0ZWQgZmluYWxfc3Rh cnRfZnVuY3Rpb25fMSwgY2FsbGFibGUgd2l0aG91dCBTRUVOLiAgKi8KKy0KKy12b2lkCistZmlu YWxfc3RhcnRfZnVuY3Rpb24gKHJ0eF9pbnNuICpmaXJzdCwgRklMRSAqZmlsZSwKKy0JCSAgICAg IGludCBvcHRpbWl6ZV9wIEFUVFJJQlVURV9VTlVTRUQpCisteworLSAgaW50IHNlZW4gPSAwOwor LSAgZmluYWxfc3RhcnRfZnVuY3Rpb25fMSAoJmZpcnN0LCBmaWxlLCAmc2Vlbiwgb3B0aW1pemVf cCk7CistICBnY2NfYXNzZXJ0IChzZWVuID09IDApOworLX0KKy0KKyBzdGF0aWMgdm9pZAorIHBy b2ZpbGVfYWZ0ZXJfcHJvbG9ndWUgKEZJTEUgKmZpbGUgQVRUUklCVVRFX1VOVVNFRCkKKyB7CitA QCAtMjAxOCwxMCArMTkyOCwxMSBAQCBkdW1wX2Jhc2ljX2Jsb2NrX2luZm8gKEZJTEUgKmZpbGUs IHJ0eF9pCisgLyogT3V0cHV0IGFzc2VtYmxlciBjb2RlIGZvciBzb21lIGluc25zOiBhbGwgb3Ig cGFydCBvZiBhIGZ1bmN0aW9uLgorICAgIEZvciBkZXNjcmlwdGlvbiBvZiBhcmdzLCBzZWUgYGZp bmFsX3N0YXJ0X2Z1bmN0aW9uJywgYWJvdmUuICAqLworIAorLXN0YXRpYyB2b2lkCistZmluYWxf MSAocnR4X2luc24gKmZpcnN0LCBGSUxFICpmaWxlLCBpbnQgc2VlbiwgaW50IG9wdGltaXplX3Ap Cisrdm9pZAorK2ZpbmFsIChydHhfaW5zbiAqZmlyc3QsIEZJTEUgKmZpbGUsIGludCBvcHRpbWl6 ZV9wKQorIHsKKyAgIHJ0eF9pbnNuICppbnNuLCAqbmV4dDsKKysgIGludCBzZWVuID0gMDsKKyAK KyAgIC8qIFVzZWQgZm9yIC1kQSBkdW1wLiAgKi8KKyAgIGJhc2ljX2Jsb2NrICpzdGFydF90b19i YiA9IE5VTEw7CitAQCAtMjA4OCw4ICsxOTk5LDYgQEAgZmluYWxfMSAocnR4X2luc24gKmZpcnN0 LCBGSUxFICpmaWxlLCBpbgorICAgICAgIGluc24gPSBmaW5hbF9zY2FuX2luc24gKGluc24sIGZp bGUsIG9wdGltaXplX3AsIDAsICZzZWVuKTsKKyAgICAgfQorIAorLSAgbWF5YmVfb3V0cHV0X25l eHRfdmlldyAoJnNlZW4pOworLQorICAgaWYgKGZsYWdfZGVidWdfYXNtKQorICAgICB7CisgICAg ICAgZnJlZSAoc3RhcnRfdG9fYmIpOworQEAgLTIxMDYsMjMgKzIwMTUsNiBAQCBmaW5hbF8xIChy dHhfaW5zbiAqZmlyc3QsIEZJTEUgKmZpbGUsIGluCisgCWRlbGV0ZV9pbnNuIChpbnNuKTsKKyAg ICAgfQorIH0KKy0KKy0vKiBUaGlzIGlzIGFuIGV4cG9ydGVkIGZpbmFsXzEsIGNhbGxhYmxlIHdp dGhvdXQgU0VFTi4gICovCistCistdm9pZAorLWZpbmFsIChydHhfaW5zbiAqZmlyc3QsIEZJTEUg KmZpbGUsIGludCBvcHRpbWl6ZV9wKQorLXsKKy0gIC8qIFRob3NlIHRoYXQgdXNlIHRoZSBpbnRl cm5hbCBmaW5hbF9zdGFydF9mdW5jdGlvbl8xL2ZpbmFsXzEgQVBJCistICAgICBza2lwIGluaXRp YWwgZGVidWcgYmluZCBub3RlcyBpbiBmaW5hbF9zdGFydF9mdW5jdGlvbl8xLCBhbmQgcGFzcwor LSAgICAgdGhlIG1vZGlmaWVkIEZJUlNUIHRvIGZpbmFsXzEuICBCdXQgdGhvc2UgdGhhdCB1c2Ug dGhlIHB1YmxpYworLSAgICAgZmluYWxfc3RhcnRfZnVuY3Rpb24vZmluYWwgQVBJcywgZmluYWxf c3RhcnRfZnVuY3Rpb24gY2FuJ3QgbW92ZQorLSAgICAgRklSU1QgYmVjYXVzZSBpdCdzIG5vdCBw YXNzZWQgYnkgcmVmZXJlbmNlLCBzbyBpZiB0aGV5IHdlcmUKKy0gICAgIHNraXBwZWQgdGhlcmUs IHNraXAgdGhlbSBhZ2FpbiBoZXJlLiAgKi8KKy0gIHdoaWxlIChpbl9pbml0aWFsX3ZpZXdfcCAo Zmlyc3QpKQorLSAgICBmaXJzdCA9IE5FWFRfSU5TTiAoZmlyc3QpOworLQorLSAgZmluYWxfMSAo Zmlyc3QsIGZpbGUsIDAsIG9wdGltaXplX3ApOworLX0KKyAMCisgY29uc3QgY2hhciAqCisgZ2V0 X2luc25fdGVtcGxhdGUgKGludCBjb2RlLCBydHggaW5zbikKK0BAIC0yMjYzLDggKzIxNTUsNiBA QCBmaW5hbF9zY2FuX2luc24gKHJ0eF9pbnNuICppbnNuLCBGSUxFICpmCisgCSAgYnJlYWs7Cisg CisgCWNhc2UgTk9URV9JTlNOX1NXSVRDSF9URVhUX1NFQ1RJT05TOgorLQkgIG1heWJlX291dHB1 dF9uZXh0X3ZpZXcgKHNlZW4pOworLQorIAkgIGluX2NvbGRfc2VjdGlvbl9wID0gIWluX2NvbGRf c2VjdGlvbl9wOworIAorIAkgIGlmIChpbl9jb2xkX3NlY3Rpb25fcCkKK0BAIC0yNDExLDggKzIz MDEsNiBAQCBmaW5hbF9zY2FuX2luc24gKHJ0eF9pbnNuICppbnNuLCBGSUxFICpmCisgCSAgYnJl YWs7CisgCisgCWNhc2UgTk9URV9JTlNOX0JMT0NLX0VORDoKKy0JICBtYXliZV9vdXRwdXRfbmV4 dF92aWV3IChzZWVuKTsKKy0KKyAJICBpZiAoZGVidWdfaW5mb19sZXZlbCA9PSBESU5GT19MRVZF TF9OT1JNQUwKKyAJICAgICAgfHwgZGVidWdfaW5mb19sZXZlbCA9PSBESU5GT19MRVZFTF9WRVJC T1NFCisgCSAgICAgIHx8IHdyaXRlX3N5bWJvbHMgPT0gRFdBUkYyX0RFQlVHCitAQCAtMjQ2OSwx MCArMjM1Nyw3IEBAIGZpbmFsX3NjYW5faW5zbiAocnR4X2luc24gKmluc24sIEZJTEUgKmYKKyAJ Y2FzZSBOT1RFX0lOU05fVkFSX0xPQ0FUSU9OOgorIAljYXNlIE5PVEVfSU5TTl9DQUxMX0FSR19M T0NBVElPTjoKKyAJICBpZiAoIURFQ0xfSUdOT1JFRF9QIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wp KQorLQkgICAgeworLQkgICAgICBkZWJ1Z19ob29rcy0+dmFyX2xvY2F0aW9uIChpbnNuKTsKKy0J ICAgICAgc2V0X25leHRfdmlld19uZWVkZWQgKHNlZW4pOworLQkgICAgfQorKwkgICAgZGVidWdf aG9va3MtPnZhcl9sb2NhdGlvbiAoaW5zbik7CisgCSAgYnJlYWs7CisgCisgCWNhc2UgTk9URV9J TlNOX0JFR0lOX1NUTVQ6CitAQCAtMjQ4MCwyMyArMjM2NSw5IEBAIGZpbmFsX3NjYW5faW5zbiAo cnR4X2luc24gKmluc24sIEZJTEUgKmYKKyAJICBpZiAoIURFQ0xfSUdOT1JFRF9QIChjdXJyZW50 X2Z1bmN0aW9uX2RlY2wpCisgCSAgICAgICYmIG5vdGljZV9zb3VyY2VfbGluZSAoaW5zbiwgTlVM TCkpCisgCSAgICB7CistCSAgICBvdXRwdXRfc291cmNlX2xpbmU6CisgCSAgICAgICgqZGVidWdf aG9va3MtPnNvdXJjZV9saW5lKSAobGFzdF9saW5lbnVtLCBsYXN0X2NvbHVtbm51bSwKKyAJCQkJ CSAgIGxhc3RfZmlsZW5hbWUsIGxhc3RfZGlzY3JpbWluYXRvciwKKyAJCQkJCSAgIHRydWUpOwor LQkgICAgICBjbGVhcl9uZXh0X3ZpZXdfbmVlZGVkIChzZWVuKTsKKy0JICAgIH0KKy0JICBicmVh azsKKy0KKy0JY2FzZSBOT1RFX0lOU05fSU5MSU5FX0VOVFJZOgorLQkgIGdjY19jaGVja2luZ19h c3NlcnQgKGNmdW4tPmRlYnVnX25vbmJpbmRfbWFya2Vycyk7CistCSAgaWYgKCFERUNMX0lHTk9S RURfUCAoY3VycmVudF9mdW5jdGlvbl9kZWNsKSkKKy0JICAgIHsKKy0JICAgICAgaWYgKCFub3Rp Y2Vfc291cmNlX2xpbmUgKGluc24sIE5VTEwpKQorLQkJYnJlYWs7CistCSAgICAgICgqZGVidWdf aG9va3MtPmlubGluZV9lbnRyeSkgKExPQ0FUSU9OX0JMT0NLCistCQkJCQkgICAgKE5PVEVfTUFS S0VSX0xPQ0FUSU9OIChpbnNuKSkpOworLQkgICAgICBnb3RvIG91dHB1dF9zb3VyY2VfbGluZTsK KyAJICAgIH0KKyAJICBicmVhazsKKyAKK0BAIC0yNjkyLDEwICsyNTYzLDYgQEAgZmluYWxfc2Nh bl9pbnNuIChydHhfaW5zbiAqaW5zbiwgRklMRSAqZgorIAorIAkgICAgc3dpdGNoX3RvX3NlY3Rp b24gKGN1cnJlbnRfZnVuY3Rpb25fc2VjdGlvbiAoKSk7CisgCistCSAgICBpZiAoZGVidWdfdmFy aWFibGVfbG9jYXRpb25fdmlld3MKKy0JCSYmICFERUNMX0lHTk9SRURfUCAoY3VycmVudF9mdW5j dGlvbl9kZWNsKSkKKy0JICAgICAgZGVidWdfaG9va3MtPnZhcl9sb2NhdGlvbiAoaW5zbik7Cist CisgCSAgICBicmVhazsKKyAJICB9CisgCS8qIE91dHB1dCB0aGlzIGxpbmUgbm90ZSBpZiBpdCBp cyB0aGUgZmlyc3Qgb3IgdGhlIGxhc3QgbGluZQorQEAgLTI3MDgsMTIgKzI1NzUsNyBAQCBmaW5h bF9zY2FuX2luc24gKHJ0eF9pbnNuICppbnNuLCBGSUxFICpmCisgCSAgICAoKmRlYnVnX2hvb2tz LT5zb3VyY2VfbGluZSkgKGxhc3RfbGluZW51bSwgbGFzdF9jb2x1bW5udW0sCisgCQkJCQkgbGFz dF9maWxlbmFtZSwgbGFzdF9kaXNjcmltaW5hdG9yLAorIAkJCQkJIGlzX3N0bXQpOworLQkgICAg Y2xlYXJfbmV4dF92aWV3X25lZWRlZCAoc2Vlbik7CisgCSAgfQorLQllbHNlCistCSAgbWF5YmVf b3V0cHV0X25leHRfdmlldyAoc2Vlbik7CistCistCWdjY19jaGVja2luZ19hc3NlcnQgKCFERUJV R19JTlNOX1AgKGluc24pKTsKKyAKKyAJaWYgKEdFVF9DT0RFIChib2R5KSA9PSBQQVJBTExFTAor IAkgICAgJiYgR0VUX0NPREUgKFhWRUNFWFAgKGJvZHksIDAsIDApKSA9PSBBU01fSU5QVVQpCitA QCAtMzE4MCw4ICszMDQyLDcgQEAgZmluYWxfc2Nhbl9pbnNuIChydHhfaW5zbiAqaW5zbiwgRklM RSAqZgorIAkvKiBMZXQgdGhlIGRlYnVnIGluZm8gYmFjay1lbmQga25vdyBhYm91dCB0aGlzIGNh bGwuICBXZSBkbyB0aGlzIG9ubHkKKyAJICAgYWZ0ZXIgdGhlIGluc3RydWN0aW9uIGhhcyBiZWVu IGVtaXR0ZWQgYmVjYXVzZSBsYWJlbHMgdGhhdCBtYXkgYmUKKyAJICAgY3JlYXRlZCB0byByZWZl cmVuY2UgdGhlIGNhbGwgaW5zdHJ1Y3Rpb24gbXVzdCBhcHBlYXIgYWZ0ZXIgaXQuICAqLworLQlp ZiAoKGRlYnVnX3ZhcmlhYmxlX2xvY2F0aW9uX3ZpZXdzIHx8IGNhbGxfaW5zbiAhPSBOVUxMKQor LQkgICAgJiYgIURFQ0xfSUdOT1JFRF9QIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wpKQorKwlpZiAo Y2FsbF9pbnNuICE9IE5VTEwgJiYgIURFQ0xfSUdOT1JFRF9QIChjdXJyZW50X2Z1bmN0aW9uX2Rl Y2wpKQorIAkgIGRlYnVnX2hvb2tzLT52YXJfbG9jYXRpb24gKGluc24pOworIAorIAljdXJyZW50 X291dHB1dF9pbnNuID0gZGVidWdfaW5zbiA9IDA7CitAQCAtMzIwMywxNyArMzA2NCw2IEBAIG5v dGljZV9zb3VyY2VfbGluZSAocnR4X2luc24gKmluc24sIGJvb2wKKyAgIGlmIChOT1RFX01BUktF Ul9QIChpbnNuKSkKKyAgICAgeworICAgICAgIGxvY2F0aW9uX3QgbG9jID0gTk9URV9NQVJLRVJf TE9DQVRJT04gKGluc24pOworLSAgICAgIC8qIFRoZSBpbmxpbmUgZW50cnkgbWFya2VycyAoZ2lt cGxlLCBpbnNuLCBub3RlKSBjYXJyeSB0aGUKKy0JIGxvY2F0aW9uIG9mIHRoZSBjYWxsLCBiZWNh dXNlIHRoYXQncyB3aGF0IHdlIHdhbnQgdG8gY2FycnkKKy0JIGR1cmluZyBjb21waWxhdGlvbiwg YnV0IHRoZSBsb2NhdGlvbiB3ZSB3YW50IHRvIG91dHB1dCBpbgorLQkgZGVidWcgaW5mb3JtYXRp b24gZm9yIHRoZSBpbmxpbmUgZW50cnkgcG9pbnQgaXMgdGhlIGxvY2F0aW9uCistCSBvZiB0aGUg ZnVuY3Rpb24gaXRzZWxmLiAgKi8KKy0gICAgICBpZiAoTk9URV9LSU5EIChpbnNuKSA9PSBOT1RF X0lOU05fSU5MSU5FX0VOVFJZKQorLQl7CistCSAgdHJlZSBibG9jayA9IExPQ0FUSU9OX0JMT0NL IChsb2MpOworLQkgIHRyZWUgZm4gPSBibG9ja191bHRpbWF0ZV9vcmlnaW4gKGJsb2NrKTsKKy0J ICBsb2MgPSBERUNMX1NPVVJDRV9MT0NBVElPTiAoZm4pOworLQl9CisgICAgICAgZXhwYW5kZWRf bG9jYXRpb24geGxvYyA9IGV4cGFuZF9sb2NhdGlvbiAobG9jKTsKKyAgICAgICBpZiAoeGxvYy5s aW5lID09IDApCisgCXsKK0BAIC00NjMxLDEwICs0NDgxLDggQEAgcmVzdF9vZl9oYW5kbGVfZmlu YWwgKHZvaWQpCisgICAgIGRlbGV0ZV92dGFfZGVidWdfaW5zbnMgKGZhbHNlKTsKKyAKKyAgIGFz c2VtYmxlX3N0YXJ0X2Z1bmN0aW9uIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wsIGZubmFtZSk7Cist ICBydHhfaW5zbiAqZmlyc3QgPSBnZXRfaW5zbnMgKCk7CistICBpbnQgc2VlbiA9IDA7CistICBm aW5hbF9zdGFydF9mdW5jdGlvbl8xICgmZmlyc3QsIGFzbV9vdXRfZmlsZSwgJnNlZW4sIG9wdGlt aXplKTsKKy0gIGZpbmFsXzEgKGZpcnN0LCBhc21fb3V0X2ZpbGUsIHNlZW4sIG9wdGltaXplKTsK KysgIGZpbmFsX3N0YXJ0X2Z1bmN0aW9uIChnZXRfaW5zbnMgKCksIGFzbV9vdXRfZmlsZSwgb3B0 aW1pemUpOworKyAgZmluYWwgKGdldF9pbnNucyAoKSwgYXNtX291dF9maWxlLCBvcHRpbWl6ZSk7 CisgICBpZiAoZmxhZ19pcGFfcmEKKyAgICAgICAmJiAhbG9va3VwX2F0dHJpYnV0ZSAoIm5vaXBh IiwgREVDTF9BVFRSSUJVVEVTIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wpKSkKKyAgICAgY29sbGVj dF9mbl9oYXJkX3JlZ191c2FnZSAoKTsKK0BAIC00ODIwLDcgKzQ2NjgsNiBAQCByZXN0X29mX2Ns ZWFuX3N0YXRlICh2b2lkKQorIAkgICYmICghTk9URV9QIChpbnNuKSB8fAorIAkgICAgICAoTk9U RV9LSU5EIChpbnNuKSAhPSBOT1RFX0lOU05fVkFSX0xPQ0FUSU9OCisgCSAgICAgICAmJiBOT1RF X0tJTkQgKGluc24pICE9IE5PVEVfSU5TTl9CRUdJTl9TVE1UCistCSAgICAgICAmJiBOT1RFX0tJ TkQgKGluc24pICE9IE5PVEVfSU5TTl9JTkxJTkVfRU5UUlkKKyAJICAgICAgICYmIE5PVEVfS0lO RCAoaW5zbikgIT0gTk9URV9JTlNOX0NBTExfQVJHX0xPQ0FUSU9OCisgCSAgICAgICAmJiBOT1RF X0tJTkQgKGluc24pICE9IE5PVEVfSU5TTl9CTE9DS19CRUcKKyAJICAgICAgICYmIE5PVEVfS0lO RCAoaW5zbikgIT0gTk9URV9JTlNOX0JMT0NLX0VORAorLS0tIGdjYy9pbnNuLW5vdGVzLmRlZgko cmV2aXNpb24gMjU3NTExKQorKysrIGdjYy9pbnNuLW5vdGVzLmRlZgkocmV2aXNpb24gMjU3NTA5 KQorQEAgLTcxLDEwICs3MSw2IEBAIElOU05fTk9URSAoQ0FMTF9BUkdfTE9DQVRJT04pCisgLyog VGhlIGJlZ2lubmluZyBvZiBhIHN0YXRlbWVudC4gICovCisgSU5TTl9OT1RFIChCRUdJTl9TVE1U KQorIAorLS8qIFRoZSBlbnRyeSBwb2ludCBmb3IgYW4gaW5saW5lZCBmdW5jdGlvbi4gIEl0cyBO T1RFX0JMT0NLIHJlZmVyZW5jZXMKKy0gICB0aGUgbGV4aWNhbCBibG9jayB3aG9zZSBhYnN0cmFj dCBvcmlnaW4gaXMgdGhlIGlubGluZWQgZnVuY3Rpb24uICAqLworLUlOU05fTk9URSAoSU5MSU5F X0VOVFJZKQorLQorIC8qIFJlY29yZCB0aGUgc3RydWN0IGZvciB0aGUgZm9sbG93aW5nIGJhc2lj IGJsb2NrLiAgVXNlcworICAgIE5PVEVfQkFTSUNfQkxPQ0suICBGSVhNRTogUmVkdW5kYW50IHdp dGggdGhlIGJhc2ljIGJsb2NrIHBvaW50ZXIKKyAgICBub3cgaW5jbHVkZWQgaW4gZXZlcnkgaW5z bi4gIE5PVEU6IElmIHRoZXJlJ3Mgbm8gQ0ZHIGFueW1vcmUsIGluIG90aGVyIHdvcmRzLAorLS0t IGdjYy90b3BsZXYuYwkocmV2aXNpb24gMjU3NTExKQorKysrIGdjYy90b3BsZXYuYwkocmV2aXNp b24gMjU3NTA5KQorQEAgLTE1NTgsMjIgKzE1NTgsNiBAQCBwcm9jZXNzX29wdGlvbnMgKHZvaWQp CisgCSAgICAgfHwgd3JpdGVfc3ltYm9scyA9PSBWTVNfQU5EX0RXQVJGMl9ERUJVRykKKyAJICYm ICEoZmxhZ19zZWxlY3RpdmVfc2NoZWR1bGluZyB8fCBmbGFnX3NlbGVjdGl2ZV9zY2hlZHVsaW5n MikpOworIAorLSAgaWYgKGRlYnVnX3ZhcmlhYmxlX2xvY2F0aW9uX3ZpZXdzID09IEFVVE9ERVRF Q1RfVkFMVUUpCistICAgIHsKKy0gICAgICBkZWJ1Z192YXJpYWJsZV9sb2NhdGlvbl92aWV3cyA9 IGZsYWdfdmFyX3RyYWNraW5nCistCSYmIGRlYnVnX2luZm9fbGV2ZWwgPj0gRElORk9fTEVWRUxf Tk9STUFMCistCSYmICh3cml0ZV9zeW1ib2xzID09IERXQVJGMl9ERUJVRworLQkgICAgfHwgd3Jp dGVfc3ltYm9scyA9PSBWTVNfQU5EX0RXQVJGMl9ERUJVRykKKy0JJiYgIWR3YXJmX3N0cmljdDsK Ky0gICAgfQorLSAgZWxzZSBpZiAoZGVidWdfdmFyaWFibGVfbG9jYXRpb25fdmlld3MgPT0gLTEg JiYgZHdhcmZfdmVyc2lvbiAhPSA1KQorLSAgICB7CistICAgICAgd2FybmluZ19hdCAoVU5LTk9X Tl9MT0NBVElPTiwgMCwKKy0JCSAgIndpdGhvdXQgLWdkd2FyZi01LCAtZ3ZhcmlhYmxlLWxvY2F0 aW9uLXZpZXdzPWluY29tcGF0NSAiCistCQkgICJpcyBlcXVpdmFsZW50IHRvIC1ndmFyaWFibGUt bG9jYXRpb24tdmlld3MiKTsKKy0gICAgICBkZWJ1Z192YXJpYWJsZV9sb2NhdGlvbl92aWV3cyA9 IDE7CistICAgIH0KKy0KKyAgIGlmIChmbGFnX3RyZWVfY3NlbGltID09IEFVVE9ERVRFQ1RfVkFM VUUpCisgICAgIHsKKyAgICAgICBpZiAoSEFWRV9jb25kaXRpb25hbF9tb3ZlKQorLS0tIGdjYy9j b25maWcuaW4JKHJldmlzaW9uIDI1NzUxMSkKKysrKyBnY2MvY29uZmlnLmluCShyZXZpc2lvbiAy NTc1MDkpCitAQCAtMzU4LDEyICszNTgsNiBAQAorICNlbmRpZgorIAorIAorLS8qIERlZmluZSBp ZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyB2aWV3cyBpbiBkd2FyZjIgLmxvYyBkaXJlY3RpdmVz LiAqLworLSNpZm5kZWYgVVNFRF9GT1JfVEFSR0VUCistI3VuZGVmIEhBVkVfQVNfRFdBUkYyX0RF QlVHX1ZJRVcKKy0jZW5kaWYKKy0KKy0KKyAvKiBEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3Vw cG9ydHMgdGhlIFJfUFBDNjRfRU5UUlkgcmVsb2NhdGlvbi4gKi8KKyAjaWZuZGVmIFVTRURfRk9S X1RBUkdFVAorICN1bmRlZiBIQVZFX0FTX0VOVFJZX01BUktFUlMKKy0tLSBnY2MvZHdhcmYyb3V0 LmMJKHJldmlzaW9uIDI1NzUxMSkKKysrKyBnY2MvZHdhcmYyb3V0LmMJKHJldmlzaW9uIDI1NzUw OSkKK0BAIC0xMjkxLDggKzEyOTEsNiBAQCBzdHJ1Y3QgR1RZKChmb3JfdXNlcikpIGFkZHJfdGFi bGVfZW50cnkKKyAgIEdUWSAoKGRlc2MgKCIlMS5raW5kIikpKSBhZGRyOworIH07CisgCistdHlw ZWRlZiB1bnNpZ25lZCBpbnQgdmFyX2xvY192aWV3OworLQorIC8qIExvY2F0aW9uIGxpc3RzIGFy ZSByYW5nZXMgKyBsb2NhdGlvbiBkZXNjcmlwdGlvbnMgZm9yIHRoYXQgcmFuZ2UsCisgICAgc28g eW91IGNhbiB0cmFjayB2YXJpYWJsZXMgdGhhdCBhcmUgaW4gZGlmZmVyZW50IHBsYWNlcyBvdmVy CisgICAgdGhlaXIgZW50aXJlIGxpZmUuICAqLworQEAgLTEzMDIsMTEgKzEzMDAsOSBAQCB0eXBl ZGVmIHN0cnVjdCBHVFkoKCkpIGR3X2xvY19saXN0X3N0cnVjCisgICBhZGRyX3RhYmxlX2VudHJ5 ICpiZWdpbl9lbnRyeTsKKyAgIGNvbnN0IGNoYXIgKmVuZDsgIC8qIExhYmVsIGZvciBlbmQgb2Yg cmFuZ2UgKi8KKyAgIGNoYXIgKmxsX3N5bWJvbDsgLyogTGFiZWwgZm9yIGJlZ2lubmluZyBvZiBs b2NhdGlvbiBsaXN0LgorLQkJICAgICAgT25seSBvbiBoZWFkIG9mIGxpc3QuICAqLworLSAgY2hh ciAqdmxfc3ltYm9sOyAvKiBMYWJlbCBmb3IgYmVnaW5uaW5nIG9mIHZpZXcgbGlzdC4gIERpdHRv LiAgKi8KKysJCSAgICAgIE9ubHkgb24gaGVhZCBvZiBsaXN0ICovCisgICBjb25zdCBjaGFyICpz ZWN0aW9uOyAvKiBTZWN0aW9uIHRoaXMgbG9jbGlzdCBpcyByZWxhdGl2ZSB0byAqLworICAgZHdf bG9jX2Rlc2NyX3JlZiBleHByOworLSAgdmFyX2xvY192aWV3IHZiZWdpbiwgdmVuZDsKKyAgIGhh c2h2YWxfdCBoYXNoOworICAgLyogVHJ1ZSBpZiBhbGwgYWRkcmVzc2VzIGluIHRoaXMgYW5kIHN1 YnNlcXVlbnQgbGlzdHMgYXJlIGtub3duIHRvIGJlCisgICAgICByZXNvbHZlZC4gICovCitAQCAt MTM0MywyOSArMTMzOSw2IEBAIGR3YXJmX3N0YWNrX29wX25hbWUgKHVuc2lnbmVkIGludCBvcCkK KyAgIHJldHVybiAiT1BfPHVua25vd24+IjsKKyB9CisgCistLyogUmV0dXJuIFRSVUUgaWZmIHdl J3JlIHRvIG91dHB1dCBsb2NhdGlvbiB2aWV3IGxpc3RzIGFzIGEgc2VwYXJhdGUKKy0gICBhdHRy aWJ1dGUgbmV4dCB0byB0aGUgbG9jYXRpb24gbGlzdHMsIGFzIGFuIGV4dGVuc2lvbiBjb21wYXRp YmxlCistICAgd2l0aCBEV0FSRiAyIGFuZCBhYm92ZS4gICovCistCistc3RhdGljIGlubGluZSBi b29sCistZHdhcmYyb3V0X2xvY3ZpZXdzX2luX2F0dHJpYnV0ZSAoKQorLXsKKy0gIHJldHVybiBk ZWJ1Z192YXJpYWJsZV9sb2NhdGlvbl92aWV3cyA9PSAxOworLX0KKy0KKy0vKiBSZXR1cm4gVFJV RSBpZmYgd2UncmUgdG8gb3V0cHV0IGxvY2F0aW9uIHZpZXcgbGlzdHMgYXMgcGFydCBvZiB0aGUK Ky0gICBsb2NhdGlvbiBsaXN0cywgYXMgcHJvcG9zZWQgZm9yIHN0YW5kYXJkaXphdGlvbiBhZnRl ciBEV0FSRiA1LiAgKi8KKy0KKy1zdGF0aWMgaW5saW5lIGJvb2wKKy1kd2FyZjJvdXRfbG9jdmll d3NfaW5fbG9jbGlzdCAoKQorLXsKKy0jaWZuZGVmIERXX0xMRV92aWV3X3BhaXIKKy0gIHJldHVy biBmYWxzZTsKKy0jZWxzZQorLSAgcmV0dXJuIGRlYnVnX3ZhcmlhYmxlX2xvY2F0aW9uX3ZpZXdz ID09IC0xOworLSNlbmRpZgorLX0KKy0KKyAvKiBSZXR1cm4gYSBwb2ludGVyIHRvIGEgbmV3bHkg YWxsb2NhdGVkIGxvY2F0aW9uIGRlc2NyaXB0aW9uLiAgTG9jYXRpb24KKyAgICBkZXNjcmlwdGlv bnMgYXJlIHNpbXBsZSBleHByZXNzaW9uIHRlcm1zIHRoYXQgY2FuIGJlIHN0cnVuZworICAgIHRv Z2V0aGVyIHRvIGZvcm0gbW9yZSBjb21wbGljYXRlZCBsb2NhdGlvbiAoYWRkcmVzcykgZGVzY3Jp cHRpb25zLiAgKi8KK0BAIC0xNDI4LDggKzE0MDEsNiBAQCBkd192YWxfZXF1YWxfcCAoZHdfdmFs X25vZGUgKmEsIGR3X3ZhbF9uCisgICAgICAgcmV0dXJuIGEtPnYudmFsX2xvYyA9PSBiLT52LnZh bF9sb2M7CisgICAgIGNhc2UgZHdfdmFsX2NsYXNzX2xvY19saXN0OgorICAgICAgIHJldHVybiBh LT52LnZhbF9sb2NfbGlzdCA9PSBiLT52LnZhbF9sb2NfbGlzdDsKKy0gICAgY2FzZSBkd192YWxf Y2xhc3Nfdmlld19saXN0OgorLSAgICAgIHJldHVybiBhLT52LnZhbF92aWV3X2xpc3QgPT0gYi0+ di52YWxfdmlld19saXN0OworICAgICBjYXNlIGR3X3ZhbF9jbGFzc19kaWVfcmVmOgorICAgICAg IHJldHVybiBhLT52LnZhbF9kaWVfcmVmLmRpZSA9PSBiLT52LnZhbF9kaWVfcmVmLmRpZTsKKyAg ICAgY2FzZSBkd192YWxfY2xhc3NfZmRlX3JlZjoKK0BAIC0yNzQ3LDcgKzI3MTgsNiBAQCBzdGF0 aWMgdm9pZCBkd2FyZjJvdXRfaW1wb3J0ZWRfbW9kdWxlX29yCisgCQkJCQkJIGR3X2RpZV9yZWYp OworIHN0YXRpYyB2b2lkIGR3YXJmMm91dF9hYnN0cmFjdF9mdW5jdGlvbiAodHJlZSk7Cisgc3Rh dGljIHZvaWQgZHdhcmYyb3V0X3Zhcl9sb2NhdGlvbiAocnR4X2luc24gKik7Cistc3RhdGljIHZv aWQgZHdhcmYyb3V0X2lubGluZV9lbnRyeSAodHJlZSk7Cisgc3RhdGljIHZvaWQgZHdhcmYyb3V0 X3NpemVfZnVuY3Rpb24gKHRyZWUpOworIHN0YXRpYyB2b2lkIGR3YXJmMm91dF9iZWdpbl9mdW5j dGlvbiAodHJlZSk7Cisgc3RhdGljIHZvaWQgZHdhcmYyb3V0X2VuZF9mdW5jdGlvbiAodW5zaWdu ZWQgaW50KTsKK0BAIC0yODAxLDcgKzI3NzEsNyBAQCBjb25zdCBzdHJ1Y3QgZ2NjX2RlYnVnX2hv b2tzIGR3YXJmMl9kZWJ1CisgICBkZWJ1Z19ub3RoaW5nX3J0eF9jb2RlX2xhYmVsLAkvKiBsYWJl bCAqLworICAgZGVidWdfbm90aGluZ19pbnQsCQkvKiBoYW5kbGVfcGNoICovCisgICBkd2FyZjJv dXRfdmFyX2xvY2F0aW9uLAorLSAgZHdhcmYyb3V0X2lubGluZV9lbnRyeSwJLyogaW5saW5lX2Vu dHJ5ICovCisrICBkZWJ1Z19ub3RoaW5nX3RyZWUsCQkvKiBpbmxpbmVfZW50cnkgKi8KKyAgIGR3 YXJmMm91dF9zaXplX2Z1bmN0aW9uLAkvKiBzaXplX2Z1bmN0aW9uICovCisgICBkd2FyZjJvdXRf c3dpdGNoX3RleHRfc2VjdGlvbiwKKyAgIGR3YXJmMm91dF9zZXRfbmFtZSwKK0BAIC0yOTA1LDE1 ICsyODc1LDcgQEAgZW51bSBkd19saW5lX2luZm9fb3Bjb2RlIHsKKyAgIExJX3NldF9lcGlsb2d1 ZV9iZWdpbiwKKyAKKyAgIC8qIEVtaXQgYSBEV19MTkVfc2V0X2Rpc2NyaW1pbmF0b3IuICAqLwor LSAgTElfc2V0X2Rpc2NyaW1pbmF0b3IsCistCistICAvKiBPdXRwdXQgYSBGaXhlZCBBZHZhbmNl IFBDOyB0aGUgdGFyZ2V0IFBDIGlzIHRoZSBsYWJlbCBpbmRleDsgdGhlCistICAgICBiYXNlIFBD IGlzIHRoZSBwcmV2aW91cyBMSV9hZHZfYWRkcmVzcyBvciBMSV9zZXRfYWRkcmVzcyBlbnRyeS4K Ky0gICAgIFdlIG9ubHkgdXNlIHRoaXMgd2hlbiBlbWl0dGluZyBkZWJ1ZyB2aWV3cyB3aXRob3V0 IGFzc2VtYmxlcgorLSAgICAgc3VwcG9ydCwgYXQgZXhwbGljaXQgdXNlciByZXF1ZXN0LiAgSWRl YWxseSwgd2Ugc2hvdWxkIG9ubHkgdXNlCistICAgICBpdCB3aGVuIHRoZSBvZmZzZXQgbWlnaHQg YmUgemVybyBidXQgd2UgY2FuJ3QgdGVsbDogaXQncyB0aGUgb25seQorLSAgICAgd2F5IHRvIG1h eWJlIGNoYW5nZSB0aGUgUEMgd2l0aG91dCByZXNldHRpbmcgdGhlIHZpZXcgbnVtYmVyLiAgKi8K Ky0gIExJX2Fkdl9hZGRyZXNzCisrICBMSV9zZXRfZGlzY3JpbWluYXRvcgorIH07CisgCisgdHlw ZWRlZiBzdHJ1Y3QgR1RZKCgpKSBkd19saW5lX2luZm9fc3RydWN0IHsKK0BAIC0yOTM1LDI1ICsy ODk3LDYgQEAgc3RydWN0IEdUWSgoKSkgZHdfbGluZV9pbmZvX3RhYmxlIHsKKyAgIGJvb2wgaXNf c3RtdDsKKyAgIGJvb2wgaW5fdXNlOworIAorLSAgLyogVGhpcyBkZW5vdGVzIHRoZSBORVhUIHZp ZXcgbnVtYmVyLgorLQorLSAgICAgSWYgaXQgaXMgMCwgaXQgaXMga25vd24gdGhhdCB0aGUgTkVY VCB2aWV3IHdpbGwgYmUgdGhlIGZpcnN0IHZpZXcKKy0gICAgIGF0IHRoZSBnaXZlbiBQQy4KKy0K Ky0gICAgIElmIGl0IGlzIC0xLCB3ZSd2ZSBhZHZhbmNlZCBQQyBidXQgd2UgaGF2ZW4ndCBlbWl0 dGVkIGEgbGluZSBsb2NhdGlvbiB5ZXQsCistICAgICBzbyB3ZSBzaG91bGRuJ3QgdXNlIHRoaXMg dmlldyBudW1iZXIuCistCistICAgICBUaGUgbWVhbmluZyBvZiBvdGhlciBub256ZXJvIHZhbHVl cyBkZXBlbmRzIG9uIHdoZXRoZXIgd2UncmUKKy0gICAgIGNvbXB1dGluZyB2aWV3cyBpbnRlcm5h bGx5IG9yIGxlYXZpbmcgaXQgZm9yIHRoZSBhc3NlbWJsZXIgdG8gZG8KKy0gICAgIHNvLiAgSWYg d2UncmUgZW1pdHRpbmcgdGhlbSBpbnRlcm5hbGx5LCB2aWV3IGRlbm90ZXMgdGhlIHZpZXcKKy0g ICAgIG51bWJlciBzaW5jZSB0aGUgbGFzdCBrbm93biBhZHZhbmNlIG9mIFBDLiAgSWYgd2UncmUg bGVhdmluZyBpdAorLSAgICAgZm9yIHRoZSBhc3NlbWJsZXIsIGl0IGRlbm90ZXMgdGhlIExWVSBs YWJlbCBudW1iZXIgdGhhdCB3ZSdyZQorLSAgICAgZ29pbmcgdG8gYXNrIHRoZSBhc3NlbWJsZXIg dG8gYXNzaWduLiAgKi8KKy0gIHZhcl9sb2NfdmlldyB2aWV3OworLQorLSNkZWZpbmUgUkVTRVRf TkVYVF9WSUVXKHgpICgoeCkgPSAodmFyX2xvY192aWV3KTApCistI2RlZmluZSBSRVNFVFRJTkdf VklFV19QKHgpICgoeCkgPT0gKHZhcl9sb2NfdmlldykwKQorLQorICAgdmVjPGR3X2xpbmVfaW5m b19lbnRyeSwgdmFfZ2M+ICplbnRyaWVzOworIH07CisgCitAQCAtMzE1NSw3MSArMzA5OCw2IEBA IHNrZWxldG9uX2NoYWluX25vZGU7CisgI2VuZGlmCisgI2VuZGlmCisgCistLyogVXNlIGFzc2Vt YmxlciB2aWV3cyBpbiBsaW5lIGRpcmVjdGl2ZXMgaWYgYXZhaWxhYmxlLiAgKi8KKy0jaWZuZGVm IERXQVJGMl9BU01fVklFV19ERUJVR19JTkZPCistI2lmZGVmIEhBVkVfQVNfRFdBUkYyX0RFQlVH X1ZJRVcKKy0jZGVmaW5lIERXQVJGMl9BU01fVklFV19ERUJVR19JTkZPIDEKKy0jZWxzZQorLSNk ZWZpbmUgRFdBUkYyX0FTTV9WSUVXX0RFQlVHX0lORk8gMAorLSNlbmRpZgorLSNlbmRpZgorLQor LS8qIEEgYml0IGlzIHNldCBpbiBaRVJPX1ZJRVdfUCBpZiB3ZSBhcmUgdXNpbmcgdGhlIGFzc2Vt Ymxlci1zdXBwb3J0ZWQKKy0gICB2aWV3IGNvbXB1dGF0aW9uLCBhbmQgaXQgcmVmZXJzIHRvIGEg dmlldyBpZGVudGlmaWVyIGZvciB3aGljaCB3ZQorLSAgIHdpbGwgbm90IGVtaXQgYSBsYWJlbCBi ZWNhdXNlIGl0IGlzIGtub3duIHRvIG1hcCB0byBhIHZpZXcgbnVtYmVyCistICAgemVyby4gIFdl IHdvbid0IGFsbG9jYXRlIHRoZSBiaXRtYXAgaWYgd2UncmUgbm90IHVzaW5nIGFzc2VtYmxlcgor LSAgIHN1cHBvcnQgZm9yIGxvY2F0aW9uIHZpZXdzLCBidXQgd2UgaGF2ZSB0byBtYWtlIHRoZSB2 YXJpYWJsZQorLSAgIHZpc2libGUgZm9yIEdHQyBhbmQgZm9yIGNvZGUgdGhhdCB3aWxsIGJlIG9w dGltaXplZCBvdXQgZm9yIGxhY2sgb2YKKy0gICBzdXBwb3J0IGJ1dCB0aGF0J3Mgc3RpbGwgcGFy c2VkIGFuZCBjb21waWxlZC4gIFdlIGNvdWxkIGFic3RyYWN0IGl0CistICAgb3V0IHdpdGggbWFj cm9zLCBidXQgaXQncyBub3Qgd29ydGggaXQuICAqLworLXN0YXRpYyBHVFkoKCkpIGJpdG1hcCB6 ZXJvX3ZpZXdfcDsKKy0KKy0vKiBFdmFsdWF0ZSB0byBUUlVFIGlmZiBOIGlzIGtub3duIHRvIGlk ZW50aWZ5IHRoZSBmaXJzdCBsb2NhdGlvbiB2aWV3CistICAgYXQgaXRzIFBDLiAgV2hlbiBub3Qg dXNpbmcgYXNzZW1ibGVyIGxvY2F0aW9uIHZpZXcgY29tcHV0YXRpb24sCistICAgdGhhdCBtdXN0 IGJlIHZpZXcgbnVtYmVyIHplcm8uICBPdGhlcndpc2UsIFpFUk9fVklFV19QIGlzIGFsbG9jYXRl ZAorLSAgIGFuZCB2aWV3cyBsYWJlbCBudW1iZXJzIHJlY29yZGVkIGluIGl0IGFyZSB0aGUgb25l cyBrbm93biB0byBiZQorLSAgIHplcm8uICAqLworLSNkZWZpbmUgWkVST19WSUVXX1AoTikgKHpl cm9fdmlld19wCQkJCVwKKy0JCQk/IGJpdG1hcF9iaXRfcCAoemVyb192aWV3X3AsIChOKSkJXAor LQkJCTogKE4pID09IDApCistCistLyogUmV0dXJuIHRydWUgaWZmIHdlJ3JlIHRvIGVtaXQgLmxv YyBkaXJlY3RpdmVzIGZvciB0aGUgYXNzZW1ibGVyIHRvCistICAgZ2VuZXJhdGUgbGluZSBudW1i ZXIgc2VjdGlvbnMuCistCistICAgV2hlbiB3ZSdyZSBub3QgZW1pdHRpbmcgdmlld3MsIGFsbCB3 ZSBuZWVkIGZyb20gdGhlIGFzc2VtYmxlciBpcworLSAgIHN1cHBvcnQgZm9yIC5sb2MgZGlyZWN0 aXZlcy4KKy0KKy0gICBJZiB3ZSBhcmUgZW1pdHRpbmcgdmlld3MsIHdlIGNhbiBvbmx5IHVzZSB0 aGUgYXNzZW1ibGVyJ3MgLmxvYworLSAgIHN1cHBvcnQgaWYgaXQgYWxzbyBzdXBwb3J0cyB2aWV3 cy4KKy0KKy0gICBXaGVuIHRoZSBjb21waWxlciBpcyBlbWl0dGluZyB0aGUgbGluZSBudW1iZXIg cHJvZ3JhbXMgYW5kCistICAgY29tcHV0aW5nIHZpZXcgbnVtYmVycyBpdHNlbGYsIGl0IHJlc2V0 cyB2aWV3IG51bWJlcnMgYXQga25vd24gUEMKKy0gICBjaGFuZ2VzIGFuZCBjb3VudHMgZnJvbSB0 aGF0LCBhbmQgdGhlbiBpdCBlbWl0cyB2aWV3IG51bWJlcnMgYXMKKy0gICBsaXRlcmFsIGNvbnN0 YW50cyBpbiBsb2N2aWV3bGlzdHMuICBUaGVyZSBhcmUgY2FzZXMgaW4gd2hpY2ggdGhlCistICAg Y29tcGlsZXIgaXMgbm90IHN1cmUgYWJvdXQgUEMgY2hhbmdlcywgZS5nLiB3aGVuIGV4dHJhIGFs aWdubWVudCBpcworLSAgIHJlcXVlc3RlZCBmb3IgYSBsYWJlbC4gIEluIHRoZXNlIGNhc2VzLCB0 aGUgY29tcGlsZXIgbWF5IG5vdCByZXNldAorLSAgIHRoZSB2aWV3IGNvdW50ZXIsIGFuZCB0aGUg cG90ZW50aWFsIFBDIGFkdmFuY2UgaW4gdGhlIGxpbmUgbnVtYmVyCistICAgcHJvZ3JhbSB3aWxs IHVzZSBhbiBvcGNvZGUgdGhhdCBkb2VzIG5vdCByZXNldCB0aGUgdmlldyBjb3VudGVyCistICAg ZXZlbiBpZiB0aGUgUEMgYWN0dWFsbHkgY2hhbmdlcywgc28gdGhhdCBjb21waWxlciBhbmQgZGVi dWcgaW5mbworLSAgIGNvbnN1bWVyIGNhbiBrZWVwIHZpZXcgbnVtYmVycyBpbiBzeW5jLgorLQor LSAgIFdoZW4gdGhlIGNvbXBpbGVyIGRlZmVycyB2aWV3IGNvbXB1dGF0aW9uIHRvIHRoZSBhc3Nl bWJsZXIsIGl0CistICAgZW1pdHMgc3ltYm9saWMgdmlldyBudW1iZXJzIGluIGxvY3ZpZXdsaXN0 cywgd2l0aCB0aGUgZXhjZXB0aW9uIG9mCistICAgdmlld3Mga25vd24gdG8gYmUgemVybyAoZm9y Y2VkIHJlc2V0cywgb3IgcmVzZXQgYWZ0ZXIKKy0gICBjb21waWxlci12aXNpYmxlIFBDIGNoYW5n ZXMpOiBpbnN0ZWFkIG9mIGVtaXR0aW5nIHN5bWJvbHMgZm9yCistICAgdGhlc2UsIHdlIGVtaXQg bGl0ZXJhbCB6ZXJvIGFuZCBhc3NlcnQgdGhlIGFzc2VtYmxlciBhZ3JlZXMgd2l0aAorLSAgIHRo ZSBjb21waWxlcidzIGFzc2Vzc21lbnQuICBXZSBjb3VsZCB1c2Ugc3ltYm9saWMgdmlld3MgZXZl cnl3aGVyZSwKKy0gICBpbnN0ZWFkIG9mIHNwZWNpYWwtY2FzaW5nIHplcm8gdmlld3MsIGJ1dCB0 aGVuIHdlJ2QgYmUgdW5hYmxlIHRvCistICAgb3B0aW1pemUgb3V0IGxvY3ZpZXdsaXN0cyB0aGF0 IGNvbnRhaW4gb25seSB6ZXJvcy4gICovCistCistc3RhdGljIGJvb2wKKy1vdXRwdXRfYXNtX2xp bmVfZGVidWdfaW5mbyAodm9pZCkKKy17CistICByZXR1cm4gKERXQVJGMl9BU01fVklFV19ERUJV R19JTkZPCistCSAgfHwgKERXQVJGMl9BU01fTElORV9ERUJVR19JTkZPCistCSAgICAgICYmICFk ZWJ1Z192YXJpYWJsZV9sb2NhdGlvbl92aWV3cykpOworLX0KKy0KKyAvKiBNaW5pbXVtIGxpbmUg b2Zmc2V0IGluIGEgc3BlY2lhbCBsaW5lIGluZm8uIG9wY29kZS4KKyAgICBUaGlzIHZhbHVlIHdh cyBjaG9zZW4gdG8gZ2l2ZSBhIHJlYXNvbmFibGUgcmFuZ2Ugb2YgdmFsdWVzLiAgKi8KKyAjZGVm aW5lIERXQVJGX0xJTkVfQkFTRSAgLTEwCitAQCAtMzMyOSw3ICszMjA3LDYgQEAgc3RydWN0IEdU WSAoKGNoYWluX25leHQgKCIlaC5uZXh0IikpKSB2YQorICAgcnR4IEdUWSAoKCkpIGxvYzsKKyAg IGNvbnN0IGNoYXIgKiBHVFkgKCgpKSBsYWJlbDsKKyAgIHN0cnVjdCB2YXJfbG9jX25vZGUgKiBH VFkgKCgpKSBuZXh0OworLSAgdmFyX2xvY192aWV3IHZpZXc7CisgfTsKKyAKKyAvKiBWYXJpYWJs ZSBsb2NhdGlvbiBsaXN0LiAgKi8KK0BAIC0zNTM4LDggKzM0MTUsNiBAQCBzdGF0aWMgaW5saW5l IGR3X2xvY19kZXNjcl9yZWYgQVRfbG9jIChkCisgc3RhdGljIHZvaWQgYWRkX0FUX2xvY19saXN0 IChkd19kaWVfcmVmLCBlbnVtIGR3YXJmX2F0dHJpYnV0ZSwKKyAJCQkgICAgIGR3X2xvY19saXN0 X3JlZik7Cisgc3RhdGljIGlubGluZSBkd19sb2NfbGlzdF9yZWYgQVRfbG9jX2xpc3QgKGR3X2F0 dHJfbm9kZSAqKTsKKy1zdGF0aWMgdm9pZCBhZGRfQVRfdmlld19saXN0IChkd19kaWVfcmVmLCBl bnVtIGR3YXJmX2F0dHJpYnV0ZSk7Cistc3RhdGljIGlubGluZSBkd19sb2NfbGlzdF9yZWYgQVRf bG9jX2xpc3QgKGR3X2F0dHJfbm9kZSAqKTsKKyBzdGF0aWMgYWRkcl90YWJsZV9lbnRyeSAqYWRk X2FkZHJfdGFibGVfZW50cnkgKHZvaWQgKiwgZW51bSBhdGVfa2luZCk7Cisgc3RhdGljIHZvaWQg cmVtb3ZlX2FkZHJfdGFibGVfZW50cnkgKGFkZHJfdGFibGVfZW50cnkgKik7Cisgc3RhdGljIHZv aWQgYWRkX0FUX2FkZHIgKGR3X2RpZV9yZWYsIGVudW0gZHdhcmZfYXR0cmlidXRlLCBydHgsIGJv b2wpOworQEAgLTM1NzYsNyArMzQ1MSw3IEBAIHN0YXRpYyB2b2lkIGVxdWF0ZV90eXBlX251bWJl cl90b19kaWUgKHQKKyBzdGF0aWMgZHdfZGllX3JlZiBsb29rdXBfZGVjbF9kaWUgKHRyZWUpOwor IHN0YXRpYyB2YXJfbG9jX2xpc3QgKmxvb2t1cF9kZWNsX2xvYyAoY29uc3RfdHJlZSk7Cisgc3Rh dGljIHZvaWQgZXF1YXRlX2RlY2xfbnVtYmVyX3RvX2RpZSAodHJlZSwgZHdfZGllX3JlZik7Cist c3RhdGljIHN0cnVjdCB2YXJfbG9jX25vZGUgKmFkZF92YXJfbG9jX3RvX2RlY2wgKHRyZWUsIHJ0 eCwgY29uc3QgY2hhciAqLCB2YXJfbG9jX3ZpZXcpOworK3N0YXRpYyBzdHJ1Y3QgdmFyX2xvY19u b2RlICphZGRfdmFyX2xvY190b19kZWNsICh0cmVlLCBydHgsIGNvbnN0IGNoYXIgKik7Cisgc3Rh dGljIHZvaWQgcHJpbnRfc3BhY2VzIChGSUxFICopOworIHN0YXRpYyB2b2lkIHByaW50X2RpZSAo ZHdfZGllX3JlZiwgRklMRSAqKTsKKyBzdGF0aWMgdm9pZCBsb2NfY2hlY2tzdW0gKGR3X2xvY19k ZXNjcl9yZWYsIHN0cnVjdCBtZDVfY3R4ICopOworQEAgLTM3NzYsOCArMzY1MSw4IEBAIHN0YXRp YyB2b2lkIGdlbl90YWdnZWRfdHlwZV9kaWUgKHRyZWUsIGQKKyBzdGF0aWMgdm9pZCBnZW5fdHlw ZV9kaWVfd2l0aF91c2FnZSAodHJlZSwgZHdfZGllX3JlZiwgZW51bSBkZWJ1Z19pbmZvX3VzYWdl KTsKKyBzdGF0aWMgdm9pZCBzcGxpY2VfY2hpbGRfZGllIChkd19kaWVfcmVmLCBkd19kaWVfcmVm KTsKKyBzdGF0aWMgaW50IGZpbGVfaW5mb19jbXAgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAq KTsKKy1zdGF0aWMgZHdfbG9jX2xpc3RfcmVmIG5ld19sb2NfbGlzdCAoZHdfbG9jX2Rlc2NyX3Jl ZiwgY29uc3QgY2hhciAqLCB2YXJfbG9jX3ZpZXcsCistCQkJCSAgICAgY29uc3QgY2hhciAqLCB2 YXJfbG9jX3ZpZXcsIGNvbnN0IGNoYXIgKik7Cisrc3RhdGljIGR3X2xvY19saXN0X3JlZiBuZXdf bG9jX2xpc3QgKGR3X2xvY19kZXNjcl9yZWYsIGNvbnN0IGNoYXIgKiwKKysJCQkJICAgICBjb25z dCBjaGFyICosIGNvbnN0IGNoYXIgKik7Cisgc3RhdGljIHZvaWQgb3V0cHV0X2xvY19saXN0IChk d19sb2NfbGlzdF9yZWYpOworIHN0YXRpYyBjaGFyICpnZW5faW50ZXJuYWxfc3ltIChjb25zdCBj aGFyICopOworIHN0YXRpYyBib29sIHdhbnRfcHVibmFtZXMgKHZvaWQpOworQEAgLTQwNjksOSAr Mzk0NCw2IEBAIHN0YXRpYyBjaGFyIHJhbmdlc19iYXNlX2xhYmVsWzIgKiBNQVhfQVIKKyAjaWZu ZGVmIEJMT0NLX0JFR0lOX0xBQkVMCisgI2RlZmluZSBCTE9DS19CRUdJTl9MQUJFTAkiTEJCIgor ICNlbmRpZgorLSNpZm5kZWYgQkxPQ0tfSU5MSU5FX0VOVFJZX0xBQkVMCistI2RlZmluZSBCTE9D S19JTkxJTkVfRU5UUllfTEFCRUwgIkxCSSIKKy0jZW5kaWYKKyAjaWZuZGVmIEJMT0NLX0VORF9M QUJFTAorICNkZWZpbmUgQkxPQ0tfRU5EX0xBQkVMCQkiTEJFIgorICNlbmRpZgorQEAgLTQ3NzYs NjUgKzQ2NDgsMTEgQEAgQVRfbG9jX2xpc3QgKGR3X2F0dHJfbm9kZSAqYSkKKyAgIHJldHVybiBh LT5kd19hdHRyX3ZhbC52LnZhbF9sb2NfbGlzdDsKKyB9CisgCistLyogQWRkIGEgdmlldyBsaXN0 IGF0dHJpYnV0ZSB0byBESUUuICBJdCBtdXN0IGhhdmUgYSBEV19BVF9sb2NhdGlvbgorLSAgIGF0 dHJpYnV0ZSwgYmVjYXVzZSB0aGUgdmlldyBsaXN0IGNvbXBsZW1lbnRzIHRoZSBsb2NhdGlvbiBs aXN0LiAgKi8KKy0KKy1zdGF0aWMgaW5saW5lIHZvaWQKKy1hZGRfQVRfdmlld19saXN0IChkd19k aWVfcmVmIGRpZSwgZW51bSBkd2FyZl9hdHRyaWJ1dGUgYXR0cl9raW5kKQorLXsKKy0gIGR3X2F0 dHJfbm9kZSBhdHRyOworLQorLSAgaWYgKFhDT0ZGX0RFQlVHR0lOR19JTkZPICYmICFIQVZFX1hD T0ZGX0RXQVJGX0VYVFJBUykKKy0gICAgcmV0dXJuOworLQorLSAgYXR0ci5kd19hdHRyID0gYXR0 cl9raW5kOworLSAgYXR0ci5kd19hdHRyX3ZhbC52YWxfY2xhc3MgPSBkd192YWxfY2xhc3Nfdmll d19saXN0OworLSAgYXR0ci5kd19hdHRyX3ZhbC52YWxfZW50cnkgPSBOVUxMOworLSAgYXR0ci5k d19hdHRyX3ZhbC52LnZhbF92aWV3X2xpc3QgPSBkaWU7CistICBhZGRfZHdhcmZfYXR0ciAoZGll LCAmYXR0cik7CistICBnY2NfY2hlY2tpbmdfYXNzZXJ0IChnZXRfQVQgKGRpZSwgRFdfQVRfbG9j YXRpb24pKTsKKy0gIGdjY19hc3NlcnQgKGhhdmVfbG9jYXRpb25fbGlzdHMpOworLX0KKy0KKy0v KiBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBsb2NhdGlvbiBsaXN0IHJlZmVyZW5jZWQgYnkgdGhl IGF0dHJpYnV0ZS4KKy0gICBJZiB0aGUgbmFtZWQgYXR0cmlidXRlIGlzIGEgdmlldyBsaXN0LCBs b29rIHVwIHRoZSBjb3JyZXNwb25kaW5nCistICAgRFdfQVRfbG9jYXRpb24gYXR0cmlidXRlIGFu ZCByZXR1cm4gaXRzIGxvY2F0aW9uIGxpc3QuICAqLworLQorIHN0YXRpYyBpbmxpbmUgZHdfbG9j X2xpc3RfcmVmICoKKyBBVF9sb2NfbGlzdF9wdHIgKGR3X2F0dHJfbm9kZSAqYSkKKyB7CistICBn Y2NfYXNzZXJ0IChhKTsKKy0gIHN3aXRjaCAoQVRfY2xhc3MgKGEpKQorLSAgICB7CistICAgIGNh c2UgZHdfdmFsX2NsYXNzX2xvY19saXN0OgorLSAgICAgIHJldHVybiAmYS0+ZHdfYXR0cl92YWwu di52YWxfbG9jX2xpc3Q7CistICAgIGNhc2UgZHdfdmFsX2NsYXNzX3ZpZXdfbGlzdDoKKy0gICAg ICB7CistCWR3X2F0dHJfbm9kZSAqbDsKKy0JbCA9IGdldF9BVCAoYS0+ZHdfYXR0cl92YWwudi52 YWxfdmlld19saXN0LCBEV19BVF9sb2NhdGlvbik7CistCWlmICghbCkKKy0JICByZXR1cm4gTlVM TDsKKy0JZ2NjX2NoZWNraW5nX2Fzc2VydCAobCArIDEgPT0gYSk7CistCXJldHVybiBBVF9sb2Nf bGlzdF9wdHIgKGwpOworLSAgICAgIH0KKy0gICAgZGVmYXVsdDoKKy0gICAgICBnY2NfdW5yZWFj aGFibGUgKCk7CistICAgIH0KKy19CistCistLyogUmV0dXJuIHRoZSBsb2NhdGlvbiBhdHRyaWJ1 dGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEgdmlldyBsaXN0CistICAgYXR0cmlidXRlIHZhbHVl LiAgKi8KKy0KKy1zdGF0aWMgaW5saW5lIGR3X3ZhbF9ub2RlICoKKy12aWV3X2xpc3RfdG9fbG9j X2xpc3RfdmFsX25vZGUgKGR3X3ZhbF9ub2RlICp2YWwpCisteworLSAgZ2NjX2Fzc2VydCAodmFs LT52YWxfY2xhc3MgPT0gZHdfdmFsX2NsYXNzX3ZpZXdfbGlzdCk7CistICBkd19hdHRyX25vZGUg KmxvYyA9IGdldF9BVCAodmFsLT52LnZhbF92aWV3X2xpc3QsIERXX0FUX2xvY2F0aW9uKTsKKy0g IGlmICghbG9jKQorLSAgICByZXR1cm4gTlVMTDsKKy0gIGdjY19jaGVja2luZ19hc3NlcnQgKCYo bG9jICsgMSktPmR3X2F0dHJfdmFsID09IHZhbCk7CistICBnY2NfYXNzZXJ0IChBVF9jbGFzcyAo bG9jKSA9PSBkd192YWxfY2xhc3NfbG9jX2xpc3QpOworLSAgcmV0dXJuICZsb2MtPmR3X2F0dHJf dmFsOworKyAgZ2NjX2Fzc2VydCAoYSAmJiBBVF9jbGFzcyAoYSkgPT0gZHdfdmFsX2NsYXNzX2xv Y19saXN0KTsKKysgIHJldHVybiAmYS0+ZHdfYXR0cl92YWwudi52YWxfbG9jX2xpc3Q7CisgfQor IAorIHN0cnVjdCBhZGRyX2hhc2hlciA6IGdnY19wdHJfaGFzaDxhZGRyX3RhYmxlX2VudHJ5Pgor QEAgLTYwODksNyArNTkwNyw3IEBAIGFkanVzdF9waWVjZV9saXN0IChydHggKmRlc3QsIHJ0eCAq c3JjLAorIC8qIEFkZCBhIHZhcmlhYmxlIGxvY2F0aW9uIG5vZGUgdG8gdGhlIGxpbmtlZCBsaXN0 IGZvciBERUNMLiAgKi8KKyAKKyBzdGF0aWMgc3RydWN0IHZhcl9sb2Nfbm9kZSAqCistYWRkX3Zh cl9sb2NfdG9fZGVjbCAodHJlZSBkZWNsLCBydHggbG9jX25vdGUsIGNvbnN0IGNoYXIgKmxhYmVs LCB2YXJfbG9jX3ZpZXcgdmlldykKKythZGRfdmFyX2xvY190b19kZWNsICh0cmVlIGRlY2wsIHJ0 eCBsb2Nfbm90ZSwgY29uc3QgY2hhciAqbGFiZWwpCisgeworICAgdW5zaWduZWQgaW50IGRlY2xf aWQ7CisgICB2YXJfbG9jX2xpc3QgKnRlbXA7CitAQCAtNjE3OCw3ICs1OTk2LDcgQEAgYWRkX3Zh cl9sb2NfdG9fZGVjbCAodHJlZSBkZWNsLCBydHggbG9jXworICAgICAgIC8qIFRFTVAtPkxBU1Qg aGVyZSBpcyBlaXRoZXIgcG9pbnRlciB0byB0aGUgbGFzdCBidXQgb25lIG9yCisgCSBsYXN0IGVs ZW1lbnQgaW4gdGhlIGNoYWluZWQgbGlzdCwgTEFTVCBpcyBwb2ludGVyIHRvIHRoZQorIAkgbGFz dCBlbGVtZW50LiAgKi8KKy0gICAgICBpZiAobGFiZWwgJiYgc3RyY21wIChsYXN0LT5sYWJlbCwg bGFiZWwpID09IDAgJiYgbGFzdC0+dmlldyA9PSB2aWV3KQorKyAgICAgIGlmIChsYWJlbCAmJiBz dHJjbXAgKGxhc3QtPmxhYmVsLCBsYWJlbCkgPT0gMCkKKyAJeworIAkgIC8qIEZvciBTUkEgb3B0 aW1pemVkIHZhcmlhYmxlcyBpZiB0aGVyZSB3ZXJlbid0IGFueSByZWFsCisgCSAgICAgaW5zbnMg c2luY2UgbGFzdCBub3RlLCBqdXN0IG1vZGlmeSB0aGUgbGFzdCBub2RlLiAgKi8KK0BAIC02MTk0 LDcgKzYwMTIsNyBAQCBhZGRfdmFyX2xvY190b19kZWNsICh0cmVlIGRlY2wsIHJ0eCBsb2NfCisg CSAgICAgIHRlbXAtPmxhc3QtPm5leHQgPSBOVUxMOworIAkgICAgICB1bnVzZWQgPSBsYXN0Owor IAkgICAgICBsYXN0ID0gdGVtcC0+bGFzdDsKKy0JICAgICAgZ2NjX2Fzc2VydCAoc3RyY21wIChs YXN0LT5sYWJlbCwgbGFiZWwpICE9IDAgfHwgbGFzdC0+dmlldyAhPSB2aWV3KTsKKysJICAgICAg Z2NjX2Fzc2VydCAoc3RyY21wIChsYXN0LT5sYWJlbCwgbGFiZWwpICE9IDApOworIAkgICAgfQor IAkgIGVsc2UKKyAJICAgIHsKK0BAIC02MzI5LDEyICs2MTQ3LDYgQEAgcHJpbnRfZHdfdmFsIChk d192YWxfbm9kZSAqdmFsLCBib29sIHJlYworICAgICAgIGZwcmludGYgKG91dGZpbGUsICJsb2Nh dGlvbiBsaXN0IC0+IGxhYmVsOiVzIiwKKyAJICAgICAgIHZhbC0+di52YWxfbG9jX2xpc3QtPmxs X3N5bWJvbCk7CisgICAgICAgYnJlYWs7CistICAgIGNhc2UgZHdfdmFsX2NsYXNzX3ZpZXdfbGlz dDoKKy0gICAgICB2YWwgPSB2aWV3X2xpc3RfdG9fbG9jX2xpc3RfdmFsX25vZGUgKHZhbCk7Cist ICAgICAgZnByaW50ZiAob3V0ZmlsZSwgImxvY2F0aW9uIGxpc3Qgd2l0aCB2aWV3cyAtPiBsYWJl bHM6JXMgYW5kICVzIiwKKy0JICAgICAgIHZhbC0+di52YWxfbG9jX2xpc3QtPmxsX3N5bWJvbCwK Ky0JICAgICAgIHZhbC0+di52YWxfbG9jX2xpc3QtPnZsX3N5bWJvbCk7CistICAgICAgYnJlYWs7 CisgICAgIGNhc2UgZHdfdmFsX2NsYXNzX3JhbmdlX2xpc3Q6CisgICAgICAgZnByaW50ZiAob3V0 ZmlsZSwgInJhbmdlIGxpc3QiKTsKKyAgICAgICBicmVhazsKK0BAIC05MTk1LDcgKzkwMDcsNiBA QCBzaXplX29mX2RpZSAoZHdfZGllX3JlZiBkaWUpCisgCSAgfQorIAkgIGJyZWFrOworIAljYXNl IGR3X3ZhbF9jbGFzc19sb2NfbGlzdDoKKy0JY2FzZSBkd192YWxfY2xhc3Nfdmlld19saXN0Ogor IAkgIGlmIChkd2FyZl9zcGxpdF9kZWJ1Z19pbmZvICYmIGR3YXJmX3ZlcnNpb24gPj0gNSkKKyAJ ICAgIHsKKyAJICAgICAgZ2NjX2Fzc2VydCAoQVRfbG9jX2xpc3QgKGEpLT5udW1fYXNzaWduZWQp OworQEAgLTk1NjcsNyArOTM3OCw2IEBAIHZhbHVlX2Zvcm1hdCAoZHdfYXR0cl9ub2RlICphKQor IAkgIGdjY191bnJlYWNoYWJsZSAoKTsKKyAJfQorICAgICBjYXNlIGR3X3ZhbF9jbGFzc19sb2Nf bGlzdDoKKy0gICAgY2FzZSBkd192YWxfY2xhc3Nfdmlld19saXN0OgorICAgICAgIGlmIChkd2Fy Zl9zcGxpdF9kZWJ1Z19pbmZvCisgCSAgJiYgZHdhcmZfdmVyc2lvbiA+PSA1CisgCSAgJiYgQVRf bG9jX2xpc3QgKGEpLT5udW1fYXNzaWduZWQpCitAQCAtOTg0Miw4ICs5NjUyLDcgQEAgb3V0cHV0 X2FiYnJldl9zZWN0aW9uICh2b2lkKQorICAgIGV4cHJlc3Npb24uICAqLworIAorIHN0YXRpYyBp bmxpbmUgZHdfbG9jX2xpc3RfcmVmCistbmV3X2xvY19saXN0IChkd19sb2NfZGVzY3JfcmVmIGV4 cHIsIGNvbnN0IGNoYXIgKmJlZ2luLCB2YXJfbG9jX3ZpZXcgdmJlZ2luLAorLQkgICAgICBjb25z dCBjaGFyICplbmQsIHZhcl9sb2NfdmlldyB2ZW5kLAorK25ld19sb2NfbGlzdCAoZHdfbG9jX2Rl c2NyX3JlZiBleHByLCBjb25zdCBjaGFyICpiZWdpbiwgY29uc3QgY2hhciAqZW5kLAorIAkgICAg ICBjb25zdCBjaGFyICpzZWN0aW9uKQorIHsKKyAgIGR3X2xvY19saXN0X3JlZiByZXRsaXN0ID0g Z2djX2NsZWFyZWRfYWxsb2M8ZHdfbG9jX2xpc3Rfbm9kZT4gKCk7CitAQCAtOTg1MywyOCArOTY2 MiwxMCBAQCBuZXdfbG9jX2xpc3QgKGR3X2xvY19kZXNjcl9yZWYgZXhwciwgY29uCisgICByZXRs aXN0LT5lbmQgPSBlbmQ7CisgICByZXRsaXN0LT5leHByID0gZXhwcjsKKyAgIHJldGxpc3QtPnNl Y3Rpb24gPSBzZWN0aW9uOworLSAgcmV0bGlzdC0+dmJlZ2luID0gdmJlZ2luOworLSAgcmV0bGlz dC0+dmVuZCA9IHZlbmQ7CisgCisgICByZXR1cm4gcmV0bGlzdDsKKyB9CisgCistLyogUmV0dXJu IHRydWUgaWZmIHRoZXJlJ3MgYW55IG5vbnplcm8gdmlldyBudW1iZXIgaW4gdGhlIGxvYyBsaXN0 LiAgKi8KKy0KKy1zdGF0aWMgYm9vbAorLWxvY19saXN0X2hhc192aWV3cyAoZHdfbG9jX2xpc3Rf cmVmIGxpc3QpCisteworLSAgaWYgKCFkZWJ1Z192YXJpYWJsZV9sb2NhdGlvbl92aWV3cykKKy0g ICAgcmV0dXJuIGZhbHNlOworLQorLSAgZm9yIChkd19sb2NfbGlzdF9yZWYgbG9jID0gbGlzdDsK Ky0gICAgICAgbG9jICE9IE5VTEw7IGxvYyA9IGxvYy0+ZHdfbG9jX25leHQpCistICAgIGlmICgh WkVST19WSUVXX1AgKGxvYy0+dmJlZ2luKSB8fCAhWkVST19WSUVXX1AgKGxvYy0+dmVuZCkpCist ICAgICAgcmV0dXJuIHRydWU7CistCistICByZXR1cm4gZmFsc2U7CistfQorLQorIC8qIEdlbmVy YXRlIGEgbmV3IGludGVybmFsIHN5bWJvbCBmb3IgdGhpcyBsb2NhdGlvbiBsaXN0IG5vZGUsIGlm IGl0CisgICAgaGFzbid0IGdvdCBvbmUgeWV0LiAgKi8KKyAKK0BAIC05ODgzLDk4ICs5Njc0LDYg QEAgZ2VuX2xsc3ltIChkd19sb2NfbGlzdF9yZWYgbGlzdCkKKyB7CisgICBnY2NfYXNzZXJ0ICgh bGlzdC0+bGxfc3ltYm9sKTsKKyAgIGxpc3QtPmxsX3N5bWJvbCA9IGdlbl9pbnRlcm5hbF9zeW0g KCJMTFNUIik7CistCistICBpZiAoIWxvY19saXN0X2hhc192aWV3cyAobGlzdCkpCistICAgIHJl dHVybjsKKy0KKy0gIGlmIChkd2FyZjJvdXRfbG9jdmlld3NfaW5fYXR0cmlidXRlICgpKQorLSAg ICB7CistICAgICAgLyogVXNlIHRoZSBzYW1lIGxhYmVsX251bSBmb3IgdGhlIHZpZXcgbGlzdC4g ICovCistICAgICAgbGFiZWxfbnVtLS07CistICAgICAgbGlzdC0+dmxfc3ltYm9sID0gZ2VuX2lu dGVybmFsX3N5bSAoIkxWVVMiKTsKKy0gICAgfQorLSAgZWxzZQorLSAgICBsaXN0LT52bF9zeW1i b2wgPSBsaXN0LT5sbF9zeW1ib2w7CistfQorLQorLS8qIEdlbmVyYXRlIGEgc3ltYm9sIGZvciB0 aGUgbGlzdCwgYnV0IG9ubHkgaWYgd2UgcmVhbGx5IHdhbnQgdG8gZW1pdAorLSAgIGl0IGFzIGEg bGlzdC4gICovCistCistc3RhdGljIGlubGluZSB2b2lkCistbWF5YmVfZ2VuX2xsc3ltIChkd19s b2NfbGlzdF9yZWYgbGlzdCkKKy17CistICBpZiAoIWxpc3QgfHwgKCFsaXN0LT5kd19sb2NfbmV4 dCAmJiAhbG9jX2xpc3RfaGFzX3ZpZXdzIChsaXN0KSkpCistICAgIHJldHVybjsKKy0KKy0gIGdl bl9sbHN5bSAobGlzdCk7CistfQorLQorLS8qIERldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0byBz a2lwIGxvY19saXN0IGVudHJ5IENVUlIuICBJZiB3ZSdyZSBub3QKKy0gICB0byBza2lwIGl0LCBh bmQgU0laRVAgaXMgbm9uLW51bGwsIHN0b3JlIHRoZSBzaXplIG9mIENVUlItPmV4cHIncworLSAg IHJlcHJlc2VudGF0aW9uIGluICpTSVpFUC4gICovCistCistc3RhdGljIGJvb2wKKy1za2lwX2xv Y19saXN0X2VudHJ5IChkd19sb2NfbGlzdF9yZWYgY3VyciwgdW5zaWduZWQgbG9uZyAqc2l6ZXAg PSAwKQorLXsKKy0gIC8qIERvbid0IG91dHB1dCBhbiBlbnRyeSB0aGF0IHN0YXJ0cyBhbmQgZW5k cyBhdCB0aGUgc2FtZSBhZGRyZXNzLiAgKi8KKy0gIGlmIChzdHJjbXAgKGN1cnItPmJlZ2luLCBj dXJyLT5lbmQpID09IDAKKy0gICAgICAmJiBjdXJyLT52YmVnaW4gPT0gY3Vyci0+dmVuZCAmJiAh Y3Vyci0+Zm9yY2UpCistICAgIHJldHVybiB0cnVlOworLQorLSAgdW5zaWduZWQgbG9uZyBzaXpl ID0gc2l6ZV9vZl9sb2NzIChjdXJyLT5leHByKTsKKy0KKy0gIC8qIElmIHRoZSBleHByZXNzaW9u IGlzIHRvbyBsYXJnZSwgZHJvcCBpdCBvbiB0aGUgZmxvb3IuICBXZSBjb3VsZAorLSAgICAgcGVy aGFwcyBwdXQgaXQgaW50byBEV19UQUdfZHdhcmZfcHJvY2VkdXJlIGFuZCByZWZlciB0byB0aGF0 CistICAgICBpbiB0aGUgZXhwcmVzc2lvbiwgYnV0ID49IDY0S0IgZXhwcmVzc2lvbnMgZm9yIGEg c2luZ2xlIHZhbHVlCistICAgICBpbiBhIHNpbmdsZSByYW5nZSBhcmUgdW5saWtlbHkgdmVyeSB1 c2VmdWwuICAqLworLSAgaWYgKGR3YXJmX3ZlcnNpb24gPCA1ICYmIHNpemUgPiAweGZmZmYpCist ICAgIHJldHVybiB0cnVlOworLQorLSAgaWYgKHNpemVwKQorLSAgICAqc2l6ZXAgPSBzaXplOwor LQorLSAgcmV0dXJuIGZhbHNlOworLX0KKy0KKy0vKiBPdXRwdXQgYSB2aWV3IHBhaXIgbG9jbGlz dCBlbnRyeSBmb3IgQ1VSUiwgaWYgaXQgcmVxdWlyZXMgb25lLiAgKi8KKy0KKy1zdGF0aWMgdm9p ZAorLWR3YXJmMm91dF9tYXliZV9vdXRwdXRfbG9jbGlzdF92aWV3X3BhaXIgKGR3X2xvY19saXN0 X3JlZiBjdXJyKQorLXsKKy0gIGlmICghZHdhcmYyb3V0X2xvY3ZpZXdzX2luX2xvY2xpc3QgKCkp CistICAgIHJldHVybjsKKy0KKy0gIGlmIChaRVJPX1ZJRVdfUCAoY3Vyci0+dmJlZ2luKSAmJiBa RVJPX1ZJRVdfUCAoY3Vyci0+dmVuZCkpCistICAgIHJldHVybjsKKy0KKy0jaWZkZWYgRFdfTExF X3ZpZXdfcGFpcgorLSAgZHcyX2FzbV9vdXRwdXRfZGF0YSAoMSwgRFdfTExFX3ZpZXdfcGFpciwg IkRXX0xMRV92aWV3X3BhaXIiKTsKKy0KKy0jIGlmIERXQVJGMl9BU01fVklFV19ERUJVR19JTkZP CistICBpZiAoWkVST19WSUVXX1AgKGN1cnItPnZiZWdpbikpCistICAgIGR3Ml9hc21fb3V0cHV0 X2RhdGFfdWxlYjEyOCAoMCwgIkxvY2F0aW9uIHZpZXcgYmVnaW4iKTsKKy0gIGVsc2UKKy0gICAg eworLSAgICAgIGNoYXIgbGFiZWxbTUFYX0FSVElGSUNJQUxfTEFCRUxfQllURVNdOworLSAgICAg IEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAobGFiZWwsICJMVlUiLCBjdXJyLT52YmVnaW4p OworLSAgICAgIGR3Ml9hc21fb3V0cHV0X3N5bW5hbWVfdWxlYjEyOCAobGFiZWwsICJMb2NhdGlv biB2aWV3IGJlZ2luIik7CistICAgIH0KKy0KKy0gIGlmIChaRVJPX1ZJRVdfUCAoY3Vyci0+dmVu ZCkpCistICAgIGR3Ml9hc21fb3V0cHV0X2RhdGFfdWxlYjEyOCAoMCwgIkxvY2F0aW9uIHZpZXcg ZW5kIik7CistICBlbHNlCistICAgIHsKKy0gICAgICBjaGFyIGxhYmVsW01BWF9BUlRJRklDSUFM X0xBQkVMX0JZVEVTXTsKKy0gICAgICBBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwgKGxhYmVs LCAiTFZVIiwgY3Vyci0+dmVuZCk7CistICAgICAgZHcyX2FzbV9vdXRwdXRfc3ltbmFtZV91bGVi MTI4IChsYWJlbCwgIkxvY2F0aW9uIHZpZXcgZW5kIik7CistICAgIH0KKy0jIGVsc2UgLyogIURX QVJGMl9BU01fVklFV19ERUJVR19JTkZPICovCistICBkdzJfYXNtX291dHB1dF9kYXRhX3VsZWIx MjggKGN1cnItPnZiZWdpbiwgIkxvY2F0aW9uIHZpZXcgYmVnaW4iKTsKKy0gIGR3Ml9hc21fb3V0 cHV0X2RhdGFfdWxlYjEyOCAoY3Vyci0+dmVuZCwgIkxvY2F0aW9uIHZpZXcgZW5kIik7CistIyBl bmRpZiAvKiBEV0FSRjJfQVNNX1ZJRVdfREVCVUdfSU5GTyAqLworLSNlbmRpZiAvKiBEV19MTEVf dmlld19wYWlyICovCistCistICByZXR1cm47CisgfQorIAorIC8qIE91dHB1dCB0aGUgbG9jYXRp b24gbGlzdCBnaXZlbiB0byB1cy4gICovCitAQCAtOTk4Miw4NSArOTY4MSwzNCBAQCBkd2FyZjJv dXRfbWF5YmVfb3V0cHV0X2xvY2xpc3Rfdmlld19wYWlyCisgc3RhdGljIHZvaWQKKyBvdXRwdXRf bG9jX2xpc3QgKGR3X2xvY19saXN0X3JlZiBsaXN0X2hlYWQpCisgeworLSAgaW50IHZjb3VudCA9 IDAsIGxjb3VudCA9IDA7CistCisgICBpZiAobGlzdF9oZWFkLT5lbWl0dGVkKQorICAgICByZXR1 cm47CisgICBsaXN0X2hlYWQtPmVtaXR0ZWQgPSB0cnVlOworIAorLSAgaWYgKGxpc3RfaGVhZC0+ dmxfc3ltYm9sICYmIGR3YXJmMm91dF9sb2N2aWV3c19pbl9hdHRyaWJ1dGUgKCkpCistICAgIHsK Ky0gICAgICBBU01fT1VUUFVUX0xBQkVMIChhc21fb3V0X2ZpbGUsIGxpc3RfaGVhZC0+dmxfc3lt Ym9sKTsKKy0KKy0gICAgICBmb3IgKGR3X2xvY19saXN0X3JlZiBjdXJyID0gbGlzdF9oZWFkOyBj dXJyICE9IE5VTEw7CistCSAgIGN1cnIgPSBjdXJyLT5kd19sb2NfbmV4dCkKKy0JeworLQkgIGlm IChza2lwX2xvY19saXN0X2VudHJ5IChjdXJyKSkKKy0JICAgIGNvbnRpbnVlOworLQorLQkgIHZj b3VudCsrOworLQorLQkgIC8qID8/IGR3YXJmX3NwbGl0X2RlYnVnX2luZm8/ICAqLworLSNpZiBE V0FSRjJfQVNNX1ZJRVdfREVCVUdfSU5GTworLQkgIGNoYXIgbGFiZWxbTUFYX0FSVElGSUNJQUxf TEFCRUxfQllURVNdOworLQorLQkgIGlmICghWkVST19WSUVXX1AgKGN1cnItPnZiZWdpbikpCist CSAgICB7CistCSAgICAgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAobGFiZWwsICJMVlUi LCBjdXJyLT52YmVnaW4pOworLQkgICAgICBkdzJfYXNtX291dHB1dF9zeW1uYW1lX3VsZWIxMjgg KGxhYmVsLAorLQkJCQkJICAgICAgIlZpZXcgbGlzdCBiZWdpbiAoJXMpIiwKKy0JCQkJCSAgICAg IGxpc3RfaGVhZC0+dmxfc3ltYm9sKTsKKy0JICAgIH0KKy0JICBlbHNlCistCSAgICBkdzJfYXNt X291dHB1dF9kYXRhX3VsZWIxMjggKDAsCistCQkJCQkgIlZpZXcgbGlzdCBiZWdpbiAoJXMpIiwK Ky0JCQkJCSBsaXN0X2hlYWQtPnZsX3N5bWJvbCk7CistCistCSAgaWYgKCFaRVJPX1ZJRVdfUCAo Y3Vyci0+dmVuZCkpCistCSAgICB7CistCSAgICAgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJF TCAobGFiZWwsICJMVlUiLCBjdXJyLT52ZW5kKTsKKy0JICAgICAgZHcyX2FzbV9vdXRwdXRfc3lt bmFtZV91bGViMTI4IChsYWJlbCwKKy0JCQkJCSAgICAgICJWaWV3IGxpc3QgZW5kICglcykiLAor LQkJCQkJICAgICAgbGlzdF9oZWFkLT52bF9zeW1ib2wpOworLQkgICAgfQorLQkgIGVsc2UKKy0J ICAgIGR3Ml9hc21fb3V0cHV0X2RhdGFfdWxlYjEyOCAoMCwKKy0JCQkJCSAiVmlldyBsaXN0IGVu ZCAoJXMpIiwKKy0JCQkJCSBsaXN0X2hlYWQtPnZsX3N5bWJvbCk7CistI2Vsc2UgLyogIURXQVJG Ml9BU01fVklFV19ERUJVR19JTkZPICovCistCSAgZHcyX2FzbV9vdXRwdXRfZGF0YV91bGViMTI4 IChjdXJyLT52YmVnaW4sCistCQkJCSAgICAgICAiVmlldyBsaXN0IGJlZ2luICglcykiLAorLQkJ CQkgICAgICAgbGlzdF9oZWFkLT52bF9zeW1ib2wpOworLQkgIGR3Ml9hc21fb3V0cHV0X2RhdGFf dWxlYjEyOCAoY3Vyci0+dmVuZCwKKy0JCQkJICAgICAgICJWaWV3IGxpc3QgZW5kICglcykiLAor LQkJCQkgICAgICAgbGlzdF9oZWFkLT52bF9zeW1ib2wpOworLSNlbmRpZgorLQl9CistICAgIH0K Ky0KKyAgIEFTTV9PVVRQVVRfTEFCRUwgKGFzbV9vdXRfZmlsZSwgbGlzdF9oZWFkLT5sbF9zeW1i b2wpOworIAorKyAgZHdfbG9jX2xpc3RfcmVmIGN1cnIgPSBsaXN0X2hlYWQ7CisgICBjb25zdCBj aGFyICpsYXN0X3NlY3Rpb24gPSBOVUxMOworICAgY29uc3QgY2hhciAqYmFzZV9sYWJlbCA9IE5V TEw7CisgCisgICAvKiBXYWxrIHRoZSBsb2NhdGlvbiBsaXN0LCBhbmQgb3V0cHV0IGVhY2ggcmFu Z2UgKyBleHByZXNzaW9uLiAgKi8KKy0gIGZvciAoZHdfbG9jX2xpc3RfcmVmIGN1cnIgPSBsaXN0 X2hlYWQ7IGN1cnIgIT0gTlVMTDsKKy0gICAgICAgY3VyciA9IGN1cnItPmR3X2xvY19uZXh0KQor KyAgZm9yIChjdXJyID0gbGlzdF9oZWFkOyBjdXJyICE9IE5VTEw7IGN1cnIgPSBjdXJyLT5kd19s b2NfbmV4dCkKKyAgICAgeworICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZTsKKy0KKy0gICAgICAv KiBTa2lwIHRoaXMgZW50cnk/ICBJZiB3ZSBza2lwIGl0IGhlcmUsIHdlIG11c3Qgc2tpcCBpdCBp biB0aGUKKy0JIHZpZXcgbGlzdCBhYm92ZSBhcyB3ZWxsLiAqLworLSAgICAgIGlmIChza2lwX2xv Y19saXN0X2VudHJ5IChjdXJyLCAmc2l6ZSkpCisrICAgICAgLyogRG9uJ3Qgb3V0cHV0IGFuIGVu dHJ5IHRoYXQgc3RhcnRzIGFuZCBlbmRzIGF0IHRoZSBzYW1lIGFkZHJlc3MuICAqLworKyAgICAg IGlmIChzdHJjbXAgKGN1cnItPmJlZ2luLCBjdXJyLT5lbmQpID09IDAgJiYgIWN1cnItPmZvcmNl KQorKwljb250aW51ZTsKKysgICAgICBzaXplID0gc2l6ZV9vZl9sb2NzIChjdXJyLT5leHByKTsK KysgICAgICAvKiBJZiB0aGUgZXhwcmVzc2lvbiBpcyB0b28gbGFyZ2UsIGRyb3AgaXQgb24gdGhl IGZsb29yLiAgV2UgY291bGQKKysJIHBlcmhhcHMgcHV0IGl0IGludG8gRFdfVEFHX2R3YXJmX3By b2NlZHVyZSBhbmQgcmVmZXIgdG8gdGhhdAorKwkgaW4gdGhlIGV4cHJlc3Npb24sIGJ1dCA+PSA2 NEtCIGV4cHJlc3Npb25zIGZvciBhIHNpbmdsZSB2YWx1ZQorKwkgaW4gYSBzaW5nbGUgcmFuZ2Ug YXJlIHVubGlrZWx5IHZlcnkgdXNlZnVsLiAgKi8KKysgICAgICBpZiAoZHdhcmZfdmVyc2lvbiA8 IDUgJiYgc2l6ZSA+IDB4ZmZmZikKKyAJY29udGludWU7CistCistICAgICAgbGNvdW50Kys7Cist CisgICAgICAgaWYgKGR3YXJmX3ZlcnNpb24gPj0gNSkKKyAJeworIAkgIGlmIChkd2FyZl9zcGxp dF9kZWJ1Z19pbmZvKQorIAkgICAgeworLQkgICAgICBkd2FyZjJvdXRfbWF5YmVfb3V0cHV0X2xv Y2xpc3Rfdmlld19wYWlyIChjdXJyKTsKKyAJICAgICAgLyogRm9yIC1nc3BsaXQtZHdhcmYsIGVt aXQgRFdfTExFX3N0YXJ4X2xlbmd0aCwgd2hpY2ggaGFzCisgCQkgdWxlYjEyOCBpbmRleCBpbnRv IC5kZWJ1Z19hZGRyIGFuZCB1bGViMTI4IGxlbmd0aC4gICovCisgCSAgICAgIGR3Ml9hc21fb3V0 cHV0X2RhdGEgKDEsIERXX0xMRV9zdGFydHhfbGVuZ3RoLAorQEAgLTEwMDc4LDcgKzk3MjYsNiBA QCBvdXRwdXRfbG9jX2xpc3QgKGR3X2xvY19saXN0X3JlZiBsaXN0X2hlCisgCSAgICB9CisgCSAg ZWxzZSBpZiAoIWhhdmVfbXVsdGlwbGVfZnVuY3Rpb25fc2VjdGlvbnMgJiYgSEFWRV9BU19MRUIx MjgpCisgCSAgICB7CistCSAgICAgIGR3YXJmMm91dF9tYXliZV9vdXRwdXRfbG9jbGlzdF92aWV3 X3BhaXIgKGN1cnIpOworIAkgICAgICAvKiBJZiBhbGwgY29kZSBpcyBpbiAudGV4dCBzZWN0aW9u LCB0aGUgYmFzZSBhZGRyZXNzIGlzCisgCQkgYWxyZWFkeSBwcm92aWRlZCBieSB0aGUgQ1UgYXR0 cmlidXRlcy4gIFVzZQorIAkJIERXX0xMRV9vZmZzZXRfcGFpciB3aGVyZSBib3RoIGFkZHJlc3Nl cyBhcmUgdWxlYjEyOCBlbmNvZGVkCitAQCAtMTAxMjksNyArOTc3Niw2IEBAIG91dHB1dF9sb2Nf bGlzdCAoZHdfbG9jX2xpc3RfcmVmIGxpc3RfaGUKKyAJCSBsZW5ndGguICAqLworIAkgICAgICBp ZiAobGFzdF9zZWN0aW9uID09IE5VTEwpCisgCQl7CistCQkgIGR3YXJmMm91dF9tYXliZV9vdXRw dXRfbG9jbGlzdF92aWV3X3BhaXIgKGN1cnIpOworIAkJICBkdzJfYXNtX291dHB1dF9kYXRhICgx LCBEV19MTEVfc3RhcnRfbGVuZ3RoLAorIAkJCQkgICAgICAgIkRXX0xMRV9zdGFydF9sZW5ndGgg KCVzKSIsCisgCQkJCSAgICAgICBsaXN0X2hlYWQtPmxsX3N5bWJvbCk7CitAQCAtMTAxNDQsNyAr OTc5MCw2IEBAIG91dHB1dF9sb2NfbGlzdCAoZHdfbG9jX2xpc3RfcmVmIGxpc3RfaGUKKyAJCSBE V19MTEVfYmFzZV9hZGRyZXNzLiAgKi8KKyAJICAgICAgZWxzZQorIAkJeworLQkJICBkd2FyZjJv dXRfbWF5YmVfb3V0cHV0X2xvY2xpc3Rfdmlld19wYWlyIChjdXJyKTsKKyAJCSAgZHcyX2FzbV9v dXRwdXRfZGF0YSAoMSwgRFdfTExFX29mZnNldF9wYWlyLAorIAkJCQkgICAgICAgIkRXX0xMRV9v ZmZzZXRfcGFpciAoJXMpIiwKKyAJCQkJICAgICAgIGxpc3RfaGVhZC0+bGxfc3ltYm9sKTsKK0BA IC0xMDE2MCw3ICs5ODA1LDYgQEAgb3V0cHV0X2xvY19saXN0IChkd19sb2NfbGlzdF9yZWYgbGlz dF9oZQorIAkgICAgIERXX0xMRV9zdGFydF9lbmQgd2l0aCBhIHBhaXIgb2YgYWJzb2x1dGUgYWRk cmVzc2VzLiAgKi8KKyAJICBlbHNlCisgCSAgICB7CistCSAgICAgIGR3YXJmMm91dF9tYXliZV9v dXRwdXRfbG9jbGlzdF92aWV3X3BhaXIgKGN1cnIpOworIAkgICAgICBkdzJfYXNtX291dHB1dF9k YXRhICgxLCBEV19MTEVfc3RhcnRfZW5kLAorIAkJCQkgICAiRFdfTExFX3N0YXJ0X2VuZCAoJXMp IiwKKyAJCQkJICAgbGlzdF9oZWFkLT5sbF9zeW1ib2wpOworQEAgLTEwMjM5LDkgKzk4ODMsNiBA QCBvdXRwdXRfbG9jX2xpc3QgKGR3X2xvY19saXN0X3JlZiBsaXN0X2hlCisgCQkJICAgIkxvY2F0 aW9uIGxpc3QgdGVybWluYXRvciBlbmQgKCVzKSIsCisgCQkJICAgbGlzdF9oZWFkLT5sbF9zeW1i b2wpOworICAgICB9CistCistICBnY2NfYXNzZXJ0ICghbGlzdF9oZWFkLT52bF9zeW1ib2wKKy0J ICAgICAgfHwgdmNvdW50ID09IGxjb3VudCAqIChkd2FyZjJvdXRfbG9jdmlld3NfaW5fYXR0cmli dXRlICgpID8gMSA6IDApKTsKKyB9CisgCisgLyogT3V0cHV0IGEgcmFuZ2VfbGlzdCBvZmZzZXQg aW50byB0aGUgLmRlYnVnX3JhbmdlcyBvciAuZGVidWdfcm5nbGlzdHMKK0BAIC0xMDMwNiwyMiAr OTk0Nyw2IEBAIG91dHB1dF9sb2NfbGlzdF9vZmZzZXQgKGR3X2F0dHJfbm9kZSAqYSkKKyAJCQkg ICIlcyIsIGR3YXJmX2F0dHJfbmFtZSAoYS0+ZHdfYXR0cikpOworIH0KKyAKKy0vKiBPdXRwdXQg dGhlIG9mZnNldCBpbnRvIHRoZSBkZWJ1Z19sb2Mgc2VjdGlvbi4gICovCistCistc3RhdGljIHZv aWQKKy1vdXRwdXRfdmlld19saXN0X29mZnNldCAoZHdfYXR0cl9ub2RlICphKQorLXsKKy0gIGNo YXIgKnN5bSA9ICgqQVRfbG9jX2xpc3RfcHRyIChhKSktPnZsX3N5bWJvbDsKKy0KKy0gIGdjY19h c3NlcnQgKHN5bSk7CistICBpZiAoZHdhcmZfc3BsaXRfZGVidWdfaW5mbykKKy0gICAgZHcyX2Fz bV9vdXRwdXRfZGVsdGEgKERXQVJGX09GRlNFVF9TSVpFLCBzeW0sIGxvY19zZWN0aW9uX2xhYmVs LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIiwgZHdhcmZfYXR0cl9uYW1lIChhLT5k d19hdHRyKSk7CistICBlbHNlCistICAgIGR3Ml9hc21fb3V0cHV0X29mZnNldCAoRFdBUkZfT0ZG U0VUX1NJWkUsIHN5bSwgZGVidWdfbG9jX3NlY3Rpb24sCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgIiVzIiwgZHdhcmZfYXR0cl9uYW1lIChhLT5kd19hdHRyKSk7CistfQorLQorIC8qIE91 dHB1dCBhbiBhdHRyaWJ1dGUncyBpbmRleCBvciB2YWx1ZSBhcHByb3ByaWF0ZWx5LiAgKi8KKyAK KyBzdGF0aWMgdm9pZAorQEAgLTEwNTQ3LDEwICsxMDE3Miw2IEBAIG91dHB1dF9kaWUgKGR3X2Rp ZV9yZWYgZGllKQorIAkgIG91dHB1dF9sb2NfbGlzdF9vZmZzZXQgKGEpOworIAkgIGJyZWFrOwor IAorLQljYXNlIGR3X3ZhbF9jbGFzc192aWV3X2xpc3Q6CistCSAgb3V0cHV0X3ZpZXdfbGlzdF9v ZmZzZXQgKGEpOworLQkgIGJyZWFrOworLQorIAljYXNlIGR3X3ZhbF9jbGFzc19kaWVfcmVmOgor IAkgIGlmIChBVF9yZWZfZXh0ZXJuYWwgKGEpKQorIAkgICAgeworQEAgLTEwNzM1LDI4ICsxMDM1 Niw2IEBAIG91dHB1dF9kaWUgKGR3X2RpZV9yZWYgZGllKQorIAkJCSAodW5zaWduZWQgbG9uZykg ZGllLT5kaWVfb2Zmc2V0KTsKKyB9CisgCistLyogT3V0cHV0IHRoZSBkd2FyZiB2ZXJzaW9uIG51 bWJlci4gICovCistCistc3RhdGljIHZvaWQKKy1vdXRwdXRfZHdhcmZfdmVyc2lvbiAoKQorLXsK Ky0gIC8qID8/PyBGb3Igbm93LCBpZiAtZ2R3YXJmLTYgaXMgc3BlY2lmaWVkLCB3ZSBvdXRwdXQg dmVyc2lvbiA1IHdpdGgKKy0gICAgIHZpZXdzIGluIGxvY2xpc3QuICBUaGF0IHdpbGwgY2hhbmdl IGV2ZW50dWFsbHkuICAqLworLSAgaWYgKGR3YXJmX3ZlcnNpb24gPT0gNikKKy0gICAgeworLSAg ICAgIHN0YXRpYyBib29sIG9uY2U7CistICAgICAgaWYgKCFvbmNlKQorLQl7CistCSAgd2Fybmlu ZyAoMCwKKy0JCSAgICItZ2R3YXJmLTYgaXMgb3V0cHV0IGFzIHZlcnNpb24gNSB3aXRoIGluY29t cGF0aWJpbGl0aWVzIik7CistCSAgb25jZSA9IHRydWU7CistCX0KKy0gICAgICBkdzJfYXNtX291 dHB1dF9kYXRhICgyLCA1LCAiRFdBUkYgdmVyc2lvbiBudW1iZXIiKTsKKy0gICAgfQorLSAgZWxz ZQorLSAgICBkdzJfYXNtX291dHB1dF9kYXRhICgyLCBkd2FyZl92ZXJzaW9uLCAiRFdBUkYgdmVy c2lvbiBudW1iZXIiKTsKKy19CistCisgLyogT3V0cHV0IHRoZSBjb21waWxhdGlvbiB1bml0IHRo YXQgYXBwZWFycyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQorICAgIC5kZWJ1Z19pbmZvIHNlY3Rp b24sIGFuZCBwcmVjZWRlcyB0aGUgRElFIGRlc2NyaXB0aW9ucy4gICovCisgCitAQCAtMTA3NzMs NyArMTAzNzIsNyBAQCBvdXRwdXRfY29tcGlsYXRpb25fdW5pdF9oZWFkZXIgKGVudW0gZHdhCisg CQkJICAgIkxlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0IEluZm8iKTsKKyAgICAgfQorIAorLSAg b3V0cHV0X2R3YXJmX3ZlcnNpb24gKCk7CisrICBkdzJfYXNtX291dHB1dF9kYXRhICgyLCBkd2Fy Zl92ZXJzaW9uLCAiRFdBUkYgdmVyc2lvbiBudW1iZXIiKTsKKyAgIGlmIChkd2FyZl92ZXJzaW9u ID49IDUpCisgICAgIHsKKyAgICAgICBjb25zdCBjaGFyICpuYW1lOworQEAgLTEwOTg1LDcgKzEw NTg0LDcgQEAgb3V0cHV0X3NrZWxldG9uX2RlYnVnX3NlY3Rpb25zIChkd19kaWVfcgorICAgICAg ICAgICAgICAgICAgICAgICAgLSBEV0FSRl9JTklUSUFMX0xFTkdUSF9TSVpFCisgICAgICAgICAg ICAgICAgICAgICAgICArIHNpemVfb2ZfZGllIChjb21wX3VuaXQpLAorICAgICAgICAgICAgICAg ICAgICAgICAiTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgSW5mbyIpOworLSAgb3V0cHV0X2R3 YXJmX3ZlcnNpb24gKCk7CisrICBkdzJfYXNtX291dHB1dF9kYXRhICgyLCBkd2FyZl92ZXJzaW9u LCAiRFdBUkYgdmVyc2lvbiBudW1iZXIiKTsKKyAgIGlmIChkd2FyZl92ZXJzaW9uID49IDUpCisg ICAgIHsKKyAgICAgICBkdzJfYXNtX291dHB1dF9kYXRhICgxLCBEV19VVF9za2VsZXRvbiwgIkRX X1VUX3NrZWxldG9uIik7CitAQCAtMTEyODQsNyArMTA4ODMsNyBAQCBvdXRwdXRfcHVibmFtZXMg KHZlYzxwdWJuYW1lX2VudHJ5LCB2YV9nCisgICAgIH0KKyAKKyAgIC8qIFZlcnNpb24gbnVtYmVy IGZvciBwdWJuYW1lcy9wdWJ0eXBlcyBpcyBpbmRlcGVuZGVudCBvZiBkd2FyZiB2ZXJzaW9uLiAg Ki8KKy0gIGR3Ml9hc21fb3V0cHV0X2RhdGEgKDIsIDIsICJEV0FSRiBwdWJuYW1lcy9wdWJ0eXBl cyB2ZXJzaW9uIik7CisrICBkdzJfYXNtX291dHB1dF9kYXRhICgyLCAyLCAiRFdBUkYgVmVyc2lv biIpOworIAorICAgaWYgKGR3YXJmX3NwbGl0X2RlYnVnX2luZm8pCisgICAgIGR3Ml9hc21fb3V0 cHV0X29mZnNldCAoRFdBUkZfT0ZGU0VUX1NJWkUsIGRlYnVnX3NrZWxldG9uX2luZm9fc2VjdGlv bl9sYWJlbCwKK0BAIC0xMTM2Niw3ICsxMDk2NSw3IEBAIG91dHB1dF9hcmFuZ2VzICh2b2lkKQor ICAgICB9CisgCisgICAvKiBWZXJzaW9uIG51bWJlciBmb3IgYXJhbmdlcyBpcyBzdGlsbCAyLCBl dmVuIHVwIHRvIERXQVJGNS4gICovCistICBkdzJfYXNtX291dHB1dF9kYXRhICgyLCAyLCAiRFdB UkYgYXJhbmdlcyB2ZXJzaW9uIik7CisrICBkdzJfYXNtX291dHB1dF9kYXRhICgyLCAyLCAiRFdB UkYgVmVyc2lvbiIpOworICAgaWYgKGR3YXJmX3NwbGl0X2RlYnVnX2luZm8pCisgICAgIGR3Ml9h c21fb3V0cHV0X29mZnNldCAoRFdBUkZfT0ZGU0VUX1NJWkUsIGRlYnVnX3NrZWxldG9uX2luZm9f c2VjdGlvbl9sYWJlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19za2VsZXRv bl9pbmZvX3NlY3Rpb24sCitAQCAtMTE2MzEsNyArMTEyMzAsNyBAQCBvdXRwdXRfcm5nbGlzdHMg KHVuc2lnbmVkIGdlbmVyYXRpb24pCisgICBkdzJfYXNtX291dHB1dF9kZWx0YSAoRFdBUkZfT0ZG U0VUX1NJWkUsIGwyLCBsMSwKKyAJCQkiTGVuZ3RoIG9mIFJhbmdlIExpc3RzIik7CisgICBBU01f T1VUUFVUX0xBQkVMIChhc21fb3V0X2ZpbGUsIGwxKTsKKy0gIG91dHB1dF9kd2FyZl92ZXJzaW9u ICgpOworKyAgZHcyX2FzbV9vdXRwdXRfZGF0YSAoMiwgZHdhcmZfdmVyc2lvbiwgIkRXQVJGIFZl cnNpb24iKTsKKyAgIGR3Ml9hc21fb3V0cHV0X2RhdGEgKDEsIERXQVJGMl9BRERSX1NJWkUsICJB ZGRyZXNzIFNpemUiKTsKKyAgIGR3Ml9hc21fb3V0cHV0X2RhdGEgKDEsIDAsICJTZWdtZW50IFNp emUiKTsKKyAgIC8qIEVtaXQgdGhlIG9mZnNldCB0YWJsZSBvbmx5IGZvciAtZ3NwbGl0LWR3YXJm LiAgSWYgd2UgZG9uJ3QgY2FyZQorQEAgLTEyMjY1LDExICsxMTg2NCw4IEBAIG91dHB1dF9vbmVf bGluZV9pbmZvX3RhYmxlIChkd19saW5lX2luZm8KKyAgIGNoYXIgbGluZV9sYWJlbFtNQVhfQVJU SUZJQ0lBTF9MQUJFTF9CWVRFU107CisgICB1bnNpZ25lZCBpbnQgY3VycmVudF9saW5lID0gMTsK KyAgIGJvb2wgY3VycmVudF9pc19zdG10ID0gRFdBUkZfTElORV9ERUZBVUxUX0lTX1NUTVRfU1RB UlQ7CistICBkd19saW5lX2luZm9fZW50cnkgKmVudCwgKnByZXZfYWRkcjsKKysgIGR3X2xpbmVf aW5mb19lbnRyeSAqZW50OworICAgc2l6ZV90IGk7CistICB1bnNpZ25lZCBpbnQgdmlldzsKKy0K Ky0gIHZpZXcgPSAwOworIAorICAgRk9SX0VBQ0hfVkVDX1NBRkVfRUxUICh0YWJsZS0+ZW50cmll cywgaSwgZW50KQorICAgICB7CitAQCAtMTIyODQsMzYgKzExODgwLDE0IEBAIG91dHB1dF9vbmVf bGluZV9pbmZvX3RhYmxlIChkd19saW5lX2luZm8KKyAJICAgICB0byBkZXRlcm1pbmUgd2hlbiBp dCBpcyBzYWZlIHRvIHVzZSBEV19MTlNfZml4ZWRfYWR2YW5jZV9wYy4gICovCisgCSAgQVNNX0dF TkVSQVRFX0lOVEVSTkFMX0xBQkVMIChsaW5lX2xhYmVsLCBMSU5FX0NPREVfTEFCRUwsIGVudC0+ dmFsKTsKKyAKKy0JICB2aWV3ID0gMDsKKy0KKyAJICAvKiBUaGlzIGNhbiBoYW5kbGUgYW55IGRl bHRhLiAgVGhpcyB0YWtlcworIAkgICAgIDQrRFdBUkYyX0FERFJfU0laRSBieXRlcy4gICovCist CSAgZHcyX2FzbV9vdXRwdXRfZGF0YSAoMSwgMCwgInNldCBhZGRyZXNzICVzJXMiLCBsaW5lX2xh YmVsLAorLQkJCSAgICAgICBkZWJ1Z192YXJpYWJsZV9sb2NhdGlvbl92aWV3cworLQkJCSAgICAg ICA/ICIsIHJlc2V0IHZpZXcgdG8gMCIgOiAiIik7CisrCSAgZHcyX2FzbV9vdXRwdXRfZGF0YSAo MSwgMCwgInNldCBhZGRyZXNzICVzIiwgbGluZV9sYWJlbCk7CisgCSAgZHcyX2FzbV9vdXRwdXRf ZGF0YV91bGViMTI4ICgxICsgRFdBUkYyX0FERFJfU0laRSwgTlVMTCk7CisgCSAgZHcyX2FzbV9v dXRwdXRfZGF0YSAoMSwgRFdfTE5FX3NldF9hZGRyZXNzLCBOVUxMKTsKKyAJICBkdzJfYXNtX291 dHB1dF9hZGRyIChEV0FSRjJfQUREUl9TSVpFLCBsaW5lX2xhYmVsLCBOVUxMKTsKKy0KKy0JICBw cmV2X2FkZHIgPSBlbnQ7CisgCSAgYnJlYWs7CisgCistCWNhc2UgTElfYWR2X2FkZHJlc3M6Cist CSAgeworLQkgICAgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChsaW5lX2xhYmVsLCBMSU5F X0NPREVfTEFCRUwsIGVudC0+dmFsKTsKKy0JICAgIGNoYXIgcHJldl9sYWJlbFtNQVhfQVJUSUZJ Q0lBTF9MQUJFTF9CWVRFU107CistCSAgICBBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwgKHBy ZXZfbGFiZWwsIExJTkVfQ09ERV9MQUJFTCwgcHJldl9hZGRyLT52YWwpOworLQorLQkgICAgdmll dysrOworLQorLQkgICAgZHcyX2FzbV9vdXRwdXRfZGF0YSAoMSwgRFdfTE5TX2ZpeGVkX2FkdmFu Y2VfcGMsICJmaXhlZCBhZHZhbmNlIFBDLCBpbmNyZW1lbnQgdmlldyB0byAlaSIsIHZpZXcpOwor LQkgICAgZHcyX2FzbV9vdXRwdXRfZGVsdGEgKDIsIGxpbmVfbGFiZWwsIHByZXZfbGFiZWwsCist CQkJCSAgImZyb20gJXMgdG8gJXMiLCBwcmV2X2xhYmVsLCBsaW5lX2xhYmVsKTsKKy0KKy0JICAg IHByZXZfYWRkciA9IGVudDsKKy0JICAgIGJyZWFrOworLQkgIH0KKy0KKyAJY2FzZSBMSV9zZXRf bGluZToKKyAJICBpZiAoZW50LT52YWwgPT0gY3VycmVudF9saW5lKQorIAkgICAgeworQEAgLTEy NDIxLDcgKzExOTk1LDcgQEAgb3V0cHV0X2xpbmVfaW5mbyAoYm9vbCBwcm9sb2d1ZV9vbmx5KQor IAorICAgQVNNX09VVFBVVF9MQUJFTCAoYXNtX291dF9maWxlLCBsMSk7CisgCistICBvdXRwdXRf ZHdhcmZfdmVyc2lvbiAoKTsKKysgIGR3Ml9hc21fb3V0cHV0X2RhdGEgKDIsIGR3YXJmX3ZlcnNp b24sICJEV0FSRiBWZXJzaW9uIik7CisgICBpZiAoZHdhcmZfdmVyc2lvbiA+PSA1KQorICAgICB7 CisgICAgICAgZHcyX2FzbV9vdXRwdXRfZGF0YSAoMSwgRFdBUkYyX0FERFJfU0laRSwgIkFkZHJl c3MgU2l6ZSIpOworQEAgLTE2ODc5LDcgKzE2NDUzLDYgQEAgc3RhdGljIGR3X2xvY19saXN0X3Jl ZgorIGR3X2xvY19saXN0ICh2YXJfbG9jX2xpc3QgKmxvY19saXN0LCB0cmVlIGRlY2wsIGludCB3 YW50X2FkZHJlc3MpCisgeworICAgY29uc3QgY2hhciAqZW5kbmFtZSwgKnNlY25hbWU7CistICB2 YXJfbG9jX3ZpZXcgZW5kdmlldzsKKyAgIHJ0eCB2YXJsb2M7CisgICBlbnVtIHZhcl9pbml0X3N0 YXR1cyBpbml0aWFsaXplZDsKKyAgIHN0cnVjdCB2YXJfbG9jX25vZGUgKm5vZGU7CitAQCAtMTY5 NDQsMjcgKzE2NTE3LDI0IEBAIGR3X2xvY19saXN0ICh2YXJfbG9jX2xpc3QgKmxvY19saXN0LCB0 cmUKKyAJCSAgJiYgY3VycmVudF9mdW5jdGlvbl9kZWNsKQorIAkJeworIAkJICBlbmRuYW1lID0g Y2Z1bi0+ZmRlLT5kd19mZGVfZW5kOworLQkJICBlbmR2aWV3ID0gMDsKKyAJCSAgcmFuZ2VfYWNy b3NzX3N3aXRjaCA9IHRydWU7CisgCQl9CisgCSAgICAgIC8qIFRoZSB2YXJpYWJsZSBoYXMgYSBs b2NhdGlvbiBiZXR3ZWVuIE5PREUtPkxBQkVMIGFuZAorIAkJIE5PREUtPk5FWFQtPkxBQkVMLiAg Ki8KKyAJICAgICAgZWxzZSBpZiAobm9kZS0+bmV4dCkKKy0JCWVuZG5hbWUgPSBub2RlLT5uZXh0 LT5sYWJlbCwgZW5kdmlldyA9IG5vZGUtPm5leHQtPnZpZXc7CisrCQllbmRuYW1lID0gbm9kZS0+ bmV4dC0+bGFiZWw7CisgCSAgICAgIC8qIElmIHRoZSB2YXJpYWJsZSBoYXMgYSBsb2NhdGlvbiBh dCB0aGUgbGFzdCBsYWJlbAorIAkJIGl0IGtlZXBzIGl0cyBsb2NhdGlvbiB1bnRpbCB0aGUgZW5k IG9mIGZ1bmN0aW9uLiAgKi8KKyAJICAgICAgZWxzZSBpZiAoIWN1cnJlbnRfZnVuY3Rpb25fZGVj bCkKKy0JCWVuZG5hbWUgPSB0ZXh0X2VuZF9sYWJlbCwgZW5kdmlldyA9IDA7CisrCQllbmRuYW1l ID0gdGV4dF9lbmRfbGFiZWw7CisgCSAgICAgIGVsc2UKKyAJCXsKKyAJCSAgQVNNX0dFTkVSQVRF X0lOVEVSTkFMX0xBQkVMIChsYWJlbF9pZCwgRlVOQ19FTkRfTEFCRUwsCisgCQkJCQkgICAgICAg Y3VycmVudF9mdW5jdGlvbl9mdW5jZGVmX25vKTsKKyAJCSAgZW5kbmFtZSA9IGdnY19zdHJkdXAg KGxhYmVsX2lkKTsKKy0JCSAgZW5kdmlldyA9IDA7CisgCQl9CisgCistCSAgICAgICpsaXN0cCA9 IG5ld19sb2NfbGlzdCAoZGVzY3IsIG5vZGUtPmxhYmVsLCBub2RlLT52aWV3LAorLQkJCQkgICAg IGVuZG5hbWUsIGVuZHZpZXcsIHNlY25hbWUpOworKwkgICAgICAqbGlzdHAgPSBuZXdfbG9jX2xp c3QgKGRlc2NyLCBub2RlLT5sYWJlbCwgZW5kbmFtZSwgc2VjbmFtZSk7CisgCSAgICAgIGlmIChU UkVFX0NPREUgKGRlY2wpID09IFBBUk1fREVDTAorIAkJICAmJiBub2RlID09IGxvY19saXN0LT5m aXJzdAorIAkJICAmJiBOT1RFX1AgKG5vZGUtPmxvYykKK0BAIC0xNjk5OSwxMSArMTY1NjksMTEg QEAgZHdfbG9jX2xpc3QgKHZhcl9sb2NfbGlzdCAqbG9jX2xpc3QsIHRyZQorIAkgIC8qIFRoZSB2 YXJpYWJsZSBoYXMgYSBsb2NhdGlvbiBiZXR3ZWVuIE5PREUtPkxBQkVMIGFuZAorIAkgICAgIE5P REUtPk5FWFQtPkxBQkVMLiAgKi8KKyAJICBpZiAobm9kZS0+bmV4dCkKKy0JICAgIGVuZG5hbWUg PSBub2RlLT5uZXh0LT5sYWJlbCwgZW5kdmlldyA9IG5vZGUtPm5leHQtPnZpZXc7CisrCSAgICBl bmRuYW1lID0gbm9kZS0+bmV4dC0+bGFiZWw7CisgCSAgZWxzZQorLQkgICAgZW5kbmFtZSA9IGNm dW4tPmZkZS0+ZHdfZmRlX3NlY29uZF9lbmQsIGVuZHZpZXcgPSAwOworLQkgICpsaXN0cCA9IG5l d19sb2NfbGlzdCAoZGVzY3IsIGNmdW4tPmZkZS0+ZHdfZmRlX3NlY29uZF9iZWdpbiwgMCwKKy0J CQkJIGVuZG5hbWUsIGVuZHZpZXcsIHNlY25hbWUpOworKwkgICAgZW5kbmFtZSA9IGNmdW4tPmZk ZS0+ZHdfZmRlX3NlY29uZF9lbmQ7CisrCSAgKmxpc3RwID0gbmV3X2xvY19saXN0IChkZXNjciwg Y2Z1bi0+ZmRlLT5kd19mZGVfc2Vjb25kX2JlZ2luLAorKwkJCQkgZW5kbmFtZSwgc2VjbmFtZSk7 CisgCSAgbGlzdHAgPSAmKCpsaXN0cCktPmR3X2xvY19uZXh0OworIAl9CisgICAgIH0KK0BAIC0x NzAxNCw3ICsxNjU4NCw4IEBAIGR3X2xvY19saXN0ICh2YXJfbG9jX2xpc3QgKmxvY19saXN0LCB0 cmUKKyAgICAgIHJlcHJlc2VudGFibGUsIHdlIGRvbid0IHdhbnQgdG8gcHJldGVuZCBhIHNpbmds ZSBlbnRyeSB0aGF0IHdhcworICAgICAgYXBwbGllcyB0byB0aGUgZW50aXJlIHNjb3BlIGluIHdo aWNoIHRoZSB2YXJpYWJsZSBpcworICAgICAgYXZhaWxhYmxlLiAgKi8KKy0gIG1heWJlX2dlbl9s bHN5bSAobGlzdCk7CisrICBpZiAobGlzdCAmJiBsb2NfbGlzdC0+Zmlyc3QtPm5leHQpCisrICAg IGdlbl9sbHN5bSAobGlzdCk7CisgCisgICByZXR1cm4gbGlzdDsKKyB9CitAQCAtMTc4MzMsNyAr MTc0MDQsNyBAQCBsb2NfbGlzdF9mcm9tX3RyZWVfMSAodHJlZSBsb2MsIGludCB3YW50CisgICAg IHsKKyAgICAgICBpZiAoZHdhcmZfdmVyc2lvbiA+PSAzIHx8ICFkd2FyZl9zdHJpY3QpCisgCXJl dHVybiBuZXdfbG9jX2xpc3QgKG5ld19sb2NfZGVzY3IgKERXX09QX3B1c2hfb2JqZWN0X2FkZHJl c3MsIDAsIDApLAorLQkJCSAgICAgTlVMTCwgMCwgTlVMTCwgMCwgTlVMTCk7CisrCQkJICAgICBO VUxMLCBOVUxMLCBOVUxMKTsKKyAgICAgICBlbHNlCisgCXJldHVybiBOVUxMOworICAgICB9CitA QCAtMTg2NDksNyArMTgyMjAsNyBAQCBsb2NfbGlzdF9mcm9tX3RyZWVfMSAodHJlZSBsb2MsIGlu dCB3YW50CisgCWFkZF9sb2NfZGVzY3JfdG9fZWFjaCAobGlzdF9yZXQsIG5ld19sb2NfZGVzY3Ig KG9wLCBzaXplLCAwKSk7CisgICAgIH0KKyAgIGlmIChyZXQpCistICAgIGxpc3RfcmV0ID0gbmV3 X2xvY19saXN0IChyZXQsIE5VTEwsIDAsIE5VTEwsIDAsIE5VTEwpOworKyAgICBsaXN0X3JldCA9 IG5ld19sb2NfbGlzdCAocmV0LCBOVUxMLCBOVUxMLCBOVUxMKTsKKyAKKyAgIHJldHVybiBsaXN0 X3JldDsKKyB9CitAQCAtMTg5NzMsMjUgKzE4NTQ0LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZAor IGFkZF9BVF9sb2NhdGlvbl9kZXNjcmlwdGlvbiAoZHdfZGllX3JlZiBkaWUsIGVudW0gZHdhcmZf YXR0cmlidXRlIGF0dHJfa2luZCwKKyAJCQkgICAgIGR3X2xvY19saXN0X3JlZiBkZXNjcikKKyB7 CistICBib29sIGNoZWNrX25vX2xvY3ZpZXdzID0gdHJ1ZTsKKyAgIGlmIChkZXNjciA9PSAwKQor ICAgICByZXR1cm47CisgICBpZiAoc2luZ2xlX2VsZW1lbnRfbG9jX2xpc3RfcCAoZGVzY3IpKQor ICAgICBhZGRfQVRfbG9jIChkaWUsIGF0dHJfa2luZCwgZGVzY3ItPmV4cHIpOworICAgZWxzZQor LSAgICB7CistICAgICAgYWRkX0FUX2xvY19saXN0IChkaWUsIGF0dHJfa2luZCwgZGVzY3IpOwor LSAgICAgIGdjY19hc3NlcnQgKGRlc2NyLT5sbF9zeW1ib2wpOworLSAgICAgIGlmIChhdHRyX2tp bmQgPT0gRFdfQVRfbG9jYXRpb24gJiYgZGVzY3ItPnZsX3N5bWJvbAorLQkgICYmIGR3YXJmMm91 dF9sb2N2aWV3c19pbl9hdHRyaWJ1dGUgKCkpCistCXsKKy0JICBhZGRfQVRfdmlld19saXN0IChk aWUsIERXX0FUX0dOVV9sb2N2aWV3cyk7CistCSAgY2hlY2tfbm9fbG9jdmlld3MgPSBmYWxzZTsK Ky0JfQorLSAgICB9CistCistICBpZiAoY2hlY2tfbm9fbG9jdmlld3MpCistICAgIGdjY19hc3Nl cnQgKCFnZXRfQVQgKGRpZSwgRFdfQVRfR05VX2xvY3ZpZXdzKSk7CisrICAgIGFkZF9BVF9sb2Nf bGlzdCAoZGllLCBhdHRyX2tpbmQsIGRlc2NyKTsKKyB9CisgCisgLyogQWRkIERXX0FUX2FjY2Vz c2liaWxpdHkgYXR0cmlidXRlIHRvIERJRSBpZiBuZWVkZWQuICAqLworQEAgLTIwMTgwLDcgKzE5 NzM4LDcgQEAgY29udmVydF9jZmFfdG9fZmJfbG9jX2xpc3QgKEhPU1RfV0lERV9JTgorICAgICAg IC8qIElmIHRoZSBmaXJzdCBwYXJ0aXRpb24gY29udGFpbmVkIG5vIENGSSBhZGp1c3RtZW50cywg dGhlCisgCSBDSUUgb3Bjb2RlcyBhcHBseSB0byB0aGUgd2hvbGUgZmlyc3QgcGFydGl0aW9uLiAg Ki8KKyAgICAgICAqbGlzdF90YWlsID0gbmV3X2xvY19saXN0IChidWlsZF9jZmFfbG9jICgmbGFz dF9jZmEsIG9mZnNldCksCistCQkJCSBmZGUtPmR3X2ZkZV9iZWdpbiwgMCwgZmRlLT5kd19mZGVf ZW5kLCAwLCBzZWN0aW9uKTsKKysJCQkJIGZkZS0+ZHdfZmRlX2JlZ2luLCBmZGUtPmR3X2ZkZV9l bmQsIHNlY3Rpb24pOworICAgICAgIGxpc3RfdGFpbCA9JigqbGlzdF90YWlsKS0+ZHdfbG9jX25l eHQ7CisgICAgICAgc3RhcnRfbGFiZWwgPSBsYXN0X2xhYmVsID0gZmRlLT5kd19mZGVfc2Vjb25k X2JlZ2luOworICAgICB9CitAQCAtMjAxOTYsNyArMTk3NTQsNyBAQCBjb252ZXJ0X2NmYV90b19m Yl9sb2NfbGlzdCAoSE9TVF9XSURFX0lOCisgCSAgaWYgKCFjZmFfZXF1YWxfcCAoJmxhc3RfY2Zh LCAmbmV4dF9jZmEpKQorIAkgICAgeworIAkgICAgICAqbGlzdF90YWlsID0gbmV3X2xvY19saXN0 IChidWlsZF9jZmFfbG9jICgmbGFzdF9jZmEsIG9mZnNldCksCistCQkJCQkgc3RhcnRfbGFiZWws IDAsIGxhc3RfbGFiZWwsIDAsIHNlY3Rpb24pOworKwkJCQkJIHN0YXJ0X2xhYmVsLCBsYXN0X2xh YmVsLCBzZWN0aW9uKTsKKyAKKyAJICAgICAgbGlzdF90YWlsID0gJigqbGlzdF90YWlsKS0+ZHdf bG9jX25leHQ7CisgCSAgICAgIGxhc3RfY2ZhID0gbmV4dF9jZmE7CitAQCAtMjAyMTgsMTQgKzE5 Nzc2LDE0IEBAIGNvbnZlcnRfY2ZhX3RvX2ZiX2xvY19saXN0IChIT1NUX1dJREVfSU4KKyAJICBp ZiAoIWNmYV9lcXVhbF9wICgmbGFzdF9jZmEsICZuZXh0X2NmYSkpCisgCSAgICB7CisgCSAgICAg ICpsaXN0X3RhaWwgPSBuZXdfbG9jX2xpc3QgKGJ1aWxkX2NmYV9sb2MgKCZsYXN0X2NmYSwgb2Zm c2V0KSwKKy0JCQkJCSBzdGFydF9sYWJlbCwgMCwgbGFzdF9sYWJlbCwgMCwgc2VjdGlvbik7Cisr CQkJCQkgc3RhcnRfbGFiZWwsIGxhc3RfbGFiZWwsIHNlY3Rpb24pOworIAorIAkgICAgICBsaXN0 X3RhaWwgPSAmKCpsaXN0X3RhaWwpLT5kd19sb2NfbmV4dDsKKyAJICAgICAgbGFzdF9jZmEgPSBu ZXh0X2NmYTsKKyAJICAgICAgc3RhcnRfbGFiZWwgPSBsYXN0X2xhYmVsOworIAkgICAgfQorIAkg ICpsaXN0X3RhaWwgPSBuZXdfbG9jX2xpc3QgKGJ1aWxkX2NmYV9sb2MgKCZsYXN0X2NmYSwgb2Zm c2V0KSwKKy0JCQkJICAgICBzdGFydF9sYWJlbCwgMCwgZmRlLT5kd19mZGVfZW5kLCAwLCBzZWN0 aW9uKTsKKysJCQkJICAgICBzdGFydF9sYWJlbCwgZmRlLT5kd19mZGVfZW5kLCBzZWN0aW9uKTsK KyAJICBsaXN0X3RhaWwgPSAmKCpsaXN0X3RhaWwpLT5kd19sb2NfbmV4dDsKKyAJICBzdGFydF9s YWJlbCA9IGxhc3RfbGFiZWwgPSBmZGUtPmR3X2ZkZV9zZWNvbmRfYmVnaW47CisgCX0KK0BAIC0y MDIzNCwxOCArMTk3OTIsMTkgQEAgY29udmVydF9jZmFfdG9fZmJfbG9jX2xpc3QgKEhPU1RfV0lE RV9JTgorICAgaWYgKCFjZmFfZXF1YWxfcCAoJmxhc3RfY2ZhLCAmbmV4dF9jZmEpKQorICAgICB7 CisgICAgICAgKmxpc3RfdGFpbCA9IG5ld19sb2NfbGlzdCAoYnVpbGRfY2ZhX2xvYyAoJmxhc3Rf Y2ZhLCBvZmZzZXQpLAorLQkJCQkgc3RhcnRfbGFiZWwsIDAsIGxhc3RfbGFiZWwsIDAsIHNlY3Rp b24pOworKwkJCQkgc3RhcnRfbGFiZWwsIGxhc3RfbGFiZWwsIHNlY3Rpb24pOworICAgICAgIGxp c3RfdGFpbCA9ICYoKmxpc3RfdGFpbCktPmR3X2xvY19uZXh0OworICAgICAgIHN0YXJ0X2xhYmVs ID0gbGFzdF9sYWJlbDsKKyAgICAgfQorIAorICAgKmxpc3RfdGFpbCA9IG5ld19sb2NfbGlzdCAo YnVpbGRfY2ZhX2xvYyAoJm5leHRfY2ZhLCBvZmZzZXQpLAorLQkJCSAgICAgc3RhcnRfbGFiZWws IDAsCisrCQkJICAgICBzdGFydF9sYWJlbCwKKyAJCQkgICAgIGZkZS0+ZHdfZmRlX3NlY29uZF9i ZWdpbgorLQkJCSAgICAgPyBmZGUtPmR3X2ZkZV9zZWNvbmRfZW5kIDogZmRlLT5kd19mZGVfZW5k LCAwLAorKwkJCSAgICAgPyBmZGUtPmR3X2ZkZV9zZWNvbmRfZW5kIDogZmRlLT5kd19mZGVfZW5k LAorIAkJCSAgICAgc2VjdGlvbik7CisgCistICBtYXliZV9nZW5fbGxzeW0gKGxpc3QpOworKyAg aWYgKGxpc3QgJiYgbGlzdC0+ZHdfbG9jX25leHQpCisrICAgIGdlbl9sbHN5bSAobGlzdCk7Cisg CisgICByZXR1cm4gbGlzdDsKKyB9CitAQCAtMjMyMTksNDggKzIyNzc4LDYgQEAgYmxvY2tfZGll X2hhc2hlcjo6ZXF1YWwgKGRpZV9zdHJ1Y3QgKngsCisgICByZXR1cm4geC0+ZGVjbF9pZCA9PSB5 LT5kZWNsX2lkICYmIHgtPmRpZV9wYXJlbnQgPT0geS0+ZGllX3BhcmVudDsKKyB9CisgCistLyog SG9sZCBpbmZvcm1hdGlvbiBhYm91dCBtYXJrZXJzIGZvciBpbmxpbmVkIGVudHJ5IHBvaW50cy4g ICovCistc3RydWN0IEdUWSAoKGZvcl91c2VyKSkgaW5saW5lX2VudHJ5X2RhdGEKKy17CistICAv KiBUaGUgYmxvY2sgdGhhdCdzIHRoZSBpbmxpbmVkX2Z1bmN0aW9uX291dGVyX3Njb3BlIGZvciBh biBpbmxpbmVkCistICAgICBmdW5jdGlvbi4gICovCistICB0cmVlIGJsb2NrOworLQorLSAgLyog VGhlIGxhYmVsIGF0IHRoZSBpbmxpbmVkIGVudHJ5IHBvaW50LiAgKi8KKy0gIGNvbnN0IGNoYXIg KmxhYmVsX3BmeDsKKy0gIHVuc2lnbmVkIGludCBsYWJlbF9udW07CistCistICAvKiBUaGUgdmll dyBudW1iZXIgdG8gYmUgdXNlZCBhcyB0aGUgaW5saW5lZCBlbnRyeSBwb2ludC4gICovCistICB2 YXJfbG9jX3ZpZXcgdmlldzsKKy19OworLQorLXN0cnVjdCBpbmxpbmVfZW50cnlfZGF0YV9oYXNo ZXIgOiBnZ2NfcHRyX2hhc2ggPGlubGluZV9lbnRyeV9kYXRhPgorLXsKKy0gIHR5cGVkZWYgdHJl ZSBjb21wYXJlX3R5cGU7CistICBzdGF0aWMgaW5saW5lIGhhc2h2YWxfdCBoYXNoIChjb25zdCBp bmxpbmVfZW50cnlfZGF0YSAqKTsKKy0gIHN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbCAoY29uc3Qg aW5saW5lX2VudHJ5X2RhdGEgKiwgY29uc3RfdHJlZSk7CistfTsKKy0KKy0vKiBIYXNoIHRhYmxl IHJvdXRpbmVzIGZvciBpbmxpbmVfZW50cnlfZGF0YS4gICovCistCistaW5saW5lIGhhc2h2YWxf dAorLWlubGluZV9lbnRyeV9kYXRhX2hhc2hlcjo6aGFzaCAoY29uc3QgaW5saW5lX2VudHJ5X2Rh dGEgKmRhdGEpCisteworLSAgcmV0dXJuIGh0YWJfaGFzaF9wb2ludGVyIChkYXRhLT5ibG9jayk7 CistfQorLQorLWlubGluZSBib29sCistaW5saW5lX2VudHJ5X2RhdGFfaGFzaGVyOjplcXVhbCAo Y29uc3QgaW5saW5lX2VudHJ5X2RhdGEgKmRhdGEsCistCQkJCSBjb25zdF90cmVlIGJsb2NrKQor LXsKKy0gIHJldHVybiBkYXRhLT5ibG9jayA9PSBibG9jazsKKy19CistCistLyogSW5saW5lZCBl bnRyeSBwb2ludHMgcGVuZGluZyBESUUgY3JlYXRpb24gaW4gdGhpcyBjb21waWxhdGlvbiB1bml0 LiAgKi8KKy0KKy1zdGF0aWMgR1RZKCgpKSBoYXNoX3RhYmxlPGlubGluZV9lbnRyeV9kYXRhX2hh c2hlcj4gKmlubGluZV9lbnRyeV9kYXRhX3RhYmxlOworLQorLQorIC8qIFJldHVybiBUUlVFIGlm IERFQ0wsIHdoaWNoIG1heSBoYXZlIGJlZW4gcHJldmlvdXNseSBnZW5lcmF0ZWQgYXMKKyAgICBP TERfRElFLCBpcyBhIGNhbmRpZGF0ZSBmb3IgYSBEV19BVF9zcGVjaWZpY2F0aW9uLiAgREVDTEFS QVRJT04gaXMKKyAgICB0cnVlIGlmIGRlY2wgKG9yIGl0cyBvcmlnaW4pIGlzIGVpdGhlciBhbiBl eHRlcm4gZGVjbGFyYXRpb24gb3IgYQorQEAgLTIzNzEzLDQyICsyMzIzMCw2IEBAIGFkZF9oaWdo X2xvd19hdHRyaWJ1dGVzICh0cmVlIHN0bXQsIGR3X2QKKyB7CisgICBjaGFyIGxhYmVsW01BWF9B UlRJRklDSUFMX0xBQkVMX0JZVEVTXTsKKyAKKy0gIGlmIChpbmxpbmVfZW50cnlfZGF0YSAqKmll ZHAKKy0gICAgICA9ICFpbmxpbmVfZW50cnlfZGF0YV90YWJsZSA/IE5VTEwKKy0gICAgICA6IGlu bGluZV9lbnRyeV9kYXRhX3RhYmxlLT5maW5kX3Nsb3Rfd2l0aF9oYXNoIChzdG10LAorLQkJCQkJ CSAgICAgIGh0YWJfaGFzaF9wb2ludGVyIChzdG10KSwKKy0JCQkJCQkgICAgICBOT19JTlNFUlQp KQorLSAgICB7CistICAgICAgaW5saW5lX2VudHJ5X2RhdGEgKmllZCA9ICppZWRwOworLSAgICAg IGdjY19hc3NlcnQgKE1BWV9IQVZFX0RFQlVHX01BUktFUl9JTlNOUyk7CistICAgICAgZ2NjX2Fz c2VydCAoaW5saW5lZF9mdW5jdGlvbl9vdXRlcl9zY29wZV9wIChzdG10KSk7CistICAgICAgQVNN X0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChsYWJlbCwgaWVkLT5sYWJlbF9wZngsIGllZC0+bGFi ZWxfbnVtKTsKKy0gICAgICBhZGRfQVRfbGJsX2lkIChkaWUsIERXX0FUX2VudHJ5X3BjLCBsYWJl bCk7CistCistICAgICAgaWYgKGRlYnVnX3ZhcmlhYmxlX2xvY2F0aW9uX3ZpZXdzICYmICFaRVJP X1ZJRVdfUCAoaWVkLT52aWV3KSkKKy0JeworLQkgIGlmICghb3V0cHV0X2FzbV9saW5lX2RlYnVn X2luZm8gKCkpCistCSAgICBhZGRfQVRfdW5zaWduZWQgKGRpZSwgRFdfQVRfR05VX2VudHJ5X3Zp ZXcsIGllZC0+dmlldyk7CistCSAgZWxzZQorLQkgICAgeworLQkgICAgICBBU01fR0VORVJBVEVf SU5URVJOQUxfTEFCRUwgKGxhYmVsLCAiTFZVIiwgaWVkLT52aWV3KTsKKy0JICAgICAgLyogRklY TUU6IHRoaXMgd2lsbCByZXNvbHZlIHRvIGEgc21hbGwgbnVtYmVyLiAgQ291bGQgd2UKKy0JCSBw b3NzaWJseSBlbWl0IHNtYWxsZXIgZGF0YT8gIElkZWFsbHkgd2UnZCBlbWl0IGEKKy0JCSB1bGVi MTI4LCBidXQgdGhhdCB3b3VsZCBtYWtlIHRoZSBzaXplIG9mIERJRXMKKy0JCSBpbXBvc3NpYmxl IGZvciB0aGUgY29tcGlsZXIgdG8gY29tcHV0ZSwgc2luY2UgaXQncworLQkJIHRoZSBhc3NlbWJs ZXIgdGhhdCBjb21wdXRlcyB0aGUgdmFsdWUgb2YgdGhlIHZpZXcKKy0JCSBsYWJlbCBpbiB0aGlz IGNhc2UuICBJZGVhbGx5LCB3ZSdkIGhhdmUgYSBzaW5nbGUgZm9ybQorLQkJIGVuY29tcGFzc2lu ZyBib3RoIHRoZSBhZGRyZXNzIGFuZCB0aGUgdmlldywgYW5kCistCQkgaW5kaXJlY3RpbmcgdGhl bSB0aHJvdWdoIGEgdGFibGUgbWlnaHQgbWFrZSB0aGluZ3MKKy0JCSBlYXNpZXIsIGJ1dCBldmVu IHRoYXQgd291bGQgYmUgbW9yZSB3YXN0ZWZ1bCwKKy0JCSBzcGFjZS13aXNlLCB0aGFuIHdoYXQg d2UgaGF2ZSBub3cuICAqLworLQkgICAgICBhZGRfQVRfbGJsX2lkIChkaWUsIERXX0FUX0dOVV9l bnRyeV92aWV3LCBsYWJlbCk7CistCSAgICB9CistCX0KKy0KKy0gICAgICBpbmxpbmVfZW50cnlf ZGF0YV90YWJsZS0+Y2xlYXJfc2xvdCAoaWVkcCk7CistICAgIH0KKy0KKyAgIGlmIChCTE9DS19G UkFHTUVOVF9DSEFJTiAoc3RtdCkKKyAgICAgICAmJiAoZHdhcmZfdmVyc2lvbiA+PSAzIHx8ICFk d2FyZl9zdHJpY3QpKQorICAgICB7CitAQCAtMjM3NTYsNyArMjMyMzcsNyBAQCBhZGRfaGlnaF9s b3dfYXR0cmlidXRlcyAodHJlZSBzdG10LCBkd19kCisgICAgICAgZHdfZGllX3JlZiBwZGllOwor ICAgICAgIGR3X2F0dHJfbm9kZSAqYXR0ciA9IE5VTEw7CisgCistICAgICAgaWYgKCFNQVlfSEFW RV9ERUJVR19NQVJLRVJfSU5TTlMgJiYgaW5saW5lZF9mdW5jdGlvbl9vdXRlcl9zY29wZV9wIChz dG10KSkKKysgICAgICBpZiAoaW5saW5lZF9mdW5jdGlvbl9vdXRlcl9zY29wZV9wIChzdG10KSkK KyAJeworIAkgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAobGFiZWwsIEJMT0NLX0JFR0lO X0xBQkVMLAorIAkJCQkgICAgICAgQkxPQ0tfTlVNQkVSIChzdG10KSk7CitAQCAtMjM5MjEsNyAr MjM0MDIsNyBAQCBnZW5faW5saW5lZF9zdWJyb3V0aW5lX2RpZSAodHJlZSBzdG10LCBkCisgICAg ICAgZHdfZGllX3JlZiBzdWJyX2RpZQorIAk9IG5ld19kaWUgKERXX1RBR19pbmxpbmVkX3N1YnJv dXRpbmUsIGNvbnRleHRfZGllLCBzdG10KTsKKyAKKy0gICAgICBpZiAoY2FsbF9hcmdfbG9jYXRp b25zIHx8IE1BWV9IQVZFX0RFQlVHX01BUktFUl9JTlNOUykKKysgICAgICBpZiAoY2FsbF9hcmdf bG9jYXRpb25zKQorIAlCTE9DS19ESUUgKHN0bXQpID0gc3Vicl9kaWU7CisgICAgICAgYWRkX2Fi c3RyYWN0X29yaWdpbl9hdHRyaWJ1dGUgKHN1YnJfZGllLCBkZWNsKTsKKyAgICAgICBpZiAoVFJF RV9BU01fV1JJVFRFTiAoc3RtdCkpCitAQCAtMjY2ODMsNyArMjYxNjQsNyBAQCBtYXliZV9lbWl0 X2ZpbGUgKHN0cnVjdCBkd2FyZl9maWxlX2RhdGEKKyAJZmQtPmVtaXR0ZWRfbnVtYmVyID0gMTsK KyAgICAgICBsYXN0X2VtaXR0ZWRfZmlsZSA9IGZkOworIAorLSAgICAgIGlmIChvdXRwdXRfYXNt X2xpbmVfZGVidWdfaW5mbyAoKSkKKysgICAgICBpZiAoRFdBUkYyX0FTTV9MSU5FX0RFQlVHX0lO Rk8pCisgCXsKKyAJICBmcHJpbnRmIChhc21fb3V0X2ZpbGUsICJcdC5maWxlICV1ICIsIGZkLT5l bWl0dGVkX251bWJlcik7CisgCSAgb3V0cHV0X3F1b3RlZF9zdHJpbmcgKGFzbV9vdXRfZmlsZSwK K0BAIC0yNjg3NywxMyArMjYzNTgsMTEgQEAgZHdhcmYyb3V0X3Zhcl9sb2NhdGlvbiAocnR4X2lu c24gKmxvY19ubworICAgc3RhdGljIHJ0eF9pbnNuICpleHBlY3RlZF9uZXh0X2xvY19ub3RlOwor ICAgdHJlZSBkZWNsOworICAgYm9vbCB2YXJfbG9jX3A7CistICB2YXJfbG9jX3ZpZXcgdmlldyA9 IDA7CisgCisgICBpZiAoIU5PVEVfUCAobG9jX25vdGUpKQorICAgICB7CisgICAgICAgaWYgKENB TExfUCAobG9jX25vdGUpKQorIAl7CistCSAgUkVTRVRfTkVYVF9WSUVXIChjdXJfbGluZV9pbmZv X3RhYmxlLT52aWV3KTsKKyAJICBjYWxsX3NpdGVfY291bnQrKzsKKyAJICBpZiAoU0lCTElOR19D QUxMX1AgKGxvY19ub3RlKSkKKyAJICAgIHRhaWxfY2FsbF9zaXRlX2NvdW50Kys7CitAQCAtMjY5 MTcsMTggKzI2Mzk2LDYgQEAgZHdhcmYyb3V0X3Zhcl9sb2NhdGlvbiAocnR4X2luc24gKmxvY19u bworIAkJfQorIAkgICAgfQorIAl9CistICAgICAgZWxzZSBpZiAoIWRlYnVnX3ZhcmlhYmxlX2xv Y2F0aW9uX3ZpZXdzKQorLQlnY2NfdW5yZWFjaGFibGUgKCk7CistICAgICAgZWxzZSBpZiAoSlVN UF9UQUJMRV9EQVRBX1AgKGxvY19ub3RlKSkKKy0JUkVTRVRfTkVYVF9WSUVXIChjdXJfbGluZV9p bmZvX3RhYmxlLT52aWV3KTsKKy0gICAgICBlbHNlIGlmIChHRVRfQ09ERSAobG9jX25vdGUpID09 IFVTRQorLQkgICAgICAgfHwgR0VUX0NPREUgKGxvY19ub3RlKSA9PSBDTE9CQkVSCistCSAgICAg ICB8fCBHRVRfQ09ERSAobG9jX25vdGUpID09IEFTTV9JTlBVVAorLQkgICAgICAgfHwgYXNtX25v cGVyYW5kcyAobG9jX25vdGUpID49IDApCistCTsKKy0gICAgICBlbHNlIGlmIChnZXRfYXR0cl9t aW5fbGVuZ3RoIChsb2Nfbm90ZSkgPiAwKQorLQlSRVNFVF9ORVhUX1ZJRVcgKGN1cl9saW5lX2lu Zm9fdGFibGUtPnZpZXcpOworLQorICAgICAgIHJldHVybjsKKyAgICAgfQorIAorQEAgLTI2OTUz LDcgKzI2NDIwLDYgQEAgZHdhcmYyb3V0X3Zhcl9sb2NhdGlvbiAocnR4X2luc24gKmxvY19ubwor ICAgICAgIHx8ICEgTk9URV9QIChuZXh0X25vdGUpCisgICAgICAgfHwgKE5PVEVfS0lORCAobmV4 dF9ub3RlKSAhPSBOT1RFX0lOU05fVkFSX0xPQ0FUSU9OCisgCSAgJiYgTk9URV9LSU5EIChuZXh0 X25vdGUpICE9IE5PVEVfSU5TTl9CRUdJTl9TVE1UCistCSAgJiYgTk9URV9LSU5EIChuZXh0X25v dGUpICE9IE5PVEVfSU5TTl9JTkxJTkVfRU5UUlkKKyAJICAmJiBOT1RFX0tJTkQgKG5leHRfbm90 ZSkgIT0gTk9URV9JTlNOX0NBTExfQVJHX0xPQ0FUSU9OKSkKKyAgICAgbmV4dF9ub3RlID0gTlVM TDsKKyAKK0BAIC0yNjk5MywxMSArMjY0NTksMTAgQEAgY3JlYXRlX2xhYmVsOgorIAorICAgaWYg KHZhcl9sb2NfcCkKKyAgICAgeworLSAgICAgIGNvbnN0IGNoYXIgKmxhYmVsCistCT0gTk9URV9E VVJJTkdfQ0FMTF9QIChsb2Nfbm90ZSkgPyBsYXN0X3Bvc3RjYWxsX2xhYmVsIDogbGFzdF9sYWJl bDsKKy0gICAgICB2aWV3ID0gY3VyX2xpbmVfaW5mb190YWJsZS0+dmlldzsKKyAgICAgICBkZWNs ID0gTk9URV9WQVJfTE9DQVRJT05fREVDTCAobG9jX25vdGUpOworLSAgICAgIG5ld2xvYyA9IGFk ZF92YXJfbG9jX3RvX2RlY2wgKGRlY2wsIGxvY19ub3RlLCBsYWJlbCwgdmlldyk7CisrICAgICAg bmV3bG9jID0gYWRkX3Zhcl9sb2NfdG9fZGVjbCAoZGVjbCwgbG9jX25vdGUsCisrCQkJCSAgICBO T1RFX0RVUklOR19DQUxMX1AgKGxvY19ub3RlKQorKwkJCQkgICAgPyBsYXN0X3Bvc3RjYWxsX2xh YmVsIDogbGFzdF9sYWJlbCk7CisgICAgICAgaWYgKG5ld2xvYyA9PSBOVUxMKQorIAlyZXR1cm47 CisgICAgIH0KK0BAIC0yNzAzOCw4ICsyNjUwMyw4IEBAIGNyZWF0ZV9sYWJlbDoKKyAJCWVsc2Ug aWYgKEdFVF9DT0RFIChib2R5KSA9PSBBU01fSU5QVVQKKyAJCQkgfHwgYXNtX25vcGVyYW5kcyAo Ym9keSkgPj0gMCkKKyAJCSAgY29udGludWU7CistI2lmZGVmIEhBVkVfQVRUUl9sZW5ndGggLyog Pz8/IFdlIGRvbid0IGluY2x1ZGUgaW5zbi1hdHRyLmguICAqLworLQkJZWxzZSBpZiAoSEFWRV9B VFRSX2xlbmd0aCAmJiBnZXRfYXR0cl9taW5fbGVuZ3RoIChpbnNuKSA9PSAwKQorKyNpZmRlZiBI QVZFX2F0dHJfbGVuZ3RoCisrCQllbHNlIGlmIChnZXRfYXR0cl9taW5fbGVuZ3RoIChpbnNuKSA9 PSAwKQorIAkJICBjb250aW51ZTsKKyAjZW5kaWYKKyAJCWVsc2UKK0BAIC0yNzEwNywxMCArMjY1 NzIsNyBAQCBjcmVhdGVfbGFiZWw6CisgICAgICAgY2FsbF9hcmdfbG9jX2xhc3QgPSBjYV9sb2M7 CisgICAgIH0KKyAgIGVsc2UgaWYgKGxvY19ub3RlICE9IE5VTExfUlRYICYmICFOT1RFX0RVUklO R19DQUxMX1AgKGxvY19ub3RlKSkKKy0gICAgeworLSAgICAgIG5ld2xvYy0+bGFiZWwgPSBsYXN0 X2xhYmVsOworLSAgICAgIG5ld2xvYy0+dmlldyA9IHZpZXc7CistICAgIH0KKysgICAgbmV3bG9j LT5sYWJlbCA9IGxhc3RfbGFiZWw7CisgICBlbHNlCisgICAgIHsKKyAgICAgICBpZiAoIWxhc3Rf cG9zdGNhbGxfbGFiZWwpCitAQCAtMjcxMTksNyArMjY1ODEsNiBAQCBjcmVhdGVfbGFiZWw6Cisg CSAgbGFzdF9wb3N0Y2FsbF9sYWJlbCA9IGdnY19zdHJkdXAgKGxvY2xhYmVsKTsKKyAJfQorICAg ICAgIG5ld2xvYy0+bGFiZWwgPSBsYXN0X3Bvc3RjYWxsX2xhYmVsOworLSAgICAgIG5ld2xvYy0+ dmlldyA9IHZpZXc7CisgICAgIH0KKyAKKyAgIGlmICh2YXJfbG9jX3AgJiYgZmxhZ19kZWJ1Z19h c20pCitAQCAtMjcxNDcsMTEzICsyNjYwOCw2IEBAIGNyZWF0ZV9sYWJlbDoKKyAgIGxhc3RfaW5f Y29sZF9zZWN0aW9uX3AgPSBpbl9jb2xkX3NlY3Rpb25fcDsKKyB9CisgCistLyogQ2hlY2sgd2hl dGhlciBCTE9DSywgYSBsZXhpY2FsIGJsb2NrLCBpcyBuZXN0ZWQgd2l0aGluIE9VVEVSLCBvciBp cworLSAgIE9VVEVSIGl0c2VsZi4gIElmIEJPVEhXQVlTLCBjaGVjayBub3Qgb25seSB0aGF0IEJM T0NLIGNhbiByZWFjaAorLSAgIE9VVEVSIHRocm91Z2ggQkxPQ0tfU1VQRVJDT05URVhUIGxpbmtz LCBidXQgYWxzbyB0aGF0IHRoZXJlIGlzIGEKKy0gICBwYXRoIGZyb20gT1VURVIgdG8gQkxPQ0sg dGhyb3VnaCBCTE9DS19TVUJCTE9DS3MgYW5kCistICAgQkxPQ0tfRlJBR01FTlRfT1JJR0lOIGxp bmtzLiAgKi8KKy1zdGF0aWMgYm9vbAorLWJsb2NrX3dpdGhpbl9ibG9ja19wICh0cmVlIGJsb2Nr LCB0cmVlIG91dGVyLCBib29sIGJvdGh3YXlzKQorLXsKKy0gIGlmIChibG9jayA9PSBvdXRlcikK Ky0gICAgcmV0dXJuIHRydWU7CistCistICAvKiBRdWlja2x5IGNoZWNrIHRoYXQgT1VURVIgaXMg dXAgQkxPQ0sncyBzdXBlcmNvbnRleHQgY2hhaW4uICAqLworLSAgZm9yICh0cmVlIGNvbnRleHQg PSBCTE9DS19TVVBFUkNPTlRFWFQgKGJsb2NrKTsKKy0gICAgICAgY29udGV4dCAhPSBvdXRlcjsK Ky0gICAgICAgY29udGV4dCA9IEJMT0NLX1NVUEVSQ09OVEVYVCAoY29udGV4dCkpCistICAgIGlm ICghY29udGV4dCB8fCBUUkVFX0NPREUgKGNvbnRleHQpICE9IEJMT0NLKQorLSAgICAgIHJldHVy biBmYWxzZTsKKy0KKy0gIGlmICghYm90aHdheXMpCistICAgIHJldHVybiB0cnVlOworLQorLSAg LyogTm93IGNoZWNrIHRoYXQgZWFjaCBibG9jayBpcyBhY3R1YWxseSByZWZlcmVuY2VkIGJ5IGl0 cworLSAgICAgcGFyZW50LiAgKi8KKy0gIGZvciAodHJlZSBjb250ZXh0ID0gQkxPQ0tfU1VQRVJD T05URVhUIChibG9jayk7IDsKKy0gICAgICAgY29udGV4dCA9IEJMT0NLX1NVUEVSQ09OVEVYVCAo Y29udGV4dCkpCistICAgIHsKKy0gICAgICBpZiAoQkxPQ0tfRlJBR01FTlRfT1JJR0lOIChjb250 ZXh0KSkKKy0JeworLQkgIGdjY19hc3NlcnQgKCFCTE9DS19TVUJCTE9DS1MgKGNvbnRleHQpKTsK Ky0JICBjb250ZXh0ID0gQkxPQ0tfRlJBR01FTlRfT1JJR0lOIChjb250ZXh0KTsKKy0JfQorLSAg ICAgIGZvciAodHJlZSBzdWIgPSBCTE9DS19TVUJCTE9DS1MgKGNvbnRleHQpOworLQkgICBzdWIg IT0gYmxvY2s7CistCSAgIHN1YiA9IEJMT0NLX0NIQUlOIChzdWIpKQorLQlpZiAoIXN1YikKKy0J ICByZXR1cm4gZmFsc2U7CistICAgICAgaWYgKGNvbnRleHQgPT0gb3V0ZXIpCistCXJldHVybiB0 cnVlOworLSAgICAgIGVsc2UKKy0JYmxvY2sgPSBjb250ZXh0OworLSAgICB9CistfQorLQorLS8q IENhbGxlZCBkdXJpbmcgZmluYWwgd2hpbGUgYXNzZW1ibGluZyB0aGUgbWFya2VyIG9mIHRoZSBl bnRyeSBwb2ludAorLSAgIGZvciBhbiBpbmxpbmVkIGZ1bmN0aW9uLiAgKi8KKy0KKy1zdGF0aWMg dm9pZAorLWR3YXJmMm91dF9pbmxpbmVfZW50cnkgKHRyZWUgYmxvY2spCisteworLSAgLyogSWYg d2UgY2FuJ3QgcmVwcmVzZW50IGl0LCBkb24ndCBib3RoZXIuICAqLworLSAgaWYgKCEoZHdhcmZf dmVyc2lvbiA+PSAzIHx8ICFkd2FyZl9zdHJpY3QpKQorLSAgICByZXR1cm47CistCistICBnY2Nf YXNzZXJ0IChERUNMX1AgKGJsb2NrX3VsdGltYXRlX29yaWdpbiAoYmxvY2spKSk7CistCistICAv KiBTYW5pdHkgY2hlY2sgdGhlIGJsb2NrIHRyZWUuICBUaGlzIHdvdWxkIGNhdGNoIGEgY2FzZSBp biB3aGljaAorLSAgICAgQkxPQ0sgZ290IHJlbW92ZWQgZnJvbSB0aGUgdHJlZSByZWFjaGFibGUg ZnJvbSB0aGUgb3V0ZXJtb3N0CistICAgICBsZXhpY2FsIGJsb2NrLCBidXQgZ290IHJldGFpbmVk IGluIG1hcmtlcnMuICBJdCB3b3VsZCBzdGlsbCBsaW5rCistICAgICBiYWNrIHRvIGl0cyBwYXJl bnRzLCBidXQgc29tZSBhbmNlc3RvciB3b3VsZCBiZSBtaXNzaW5nIGEgbGluaworLSAgICAgZG93 biB0aGUgcGF0aCB0byB0aGUgc3ViIEJMT0NLLiAgSWYgdGhlIGJsb2NrIGdvdCByZW1vdmVkLCBp dHMKKy0gICAgIEJMT0NLX05VTUJFUiB3aWxsIG5vdCBiZSBhIHVzYWJsZSB2YWx1ZS4gICovCist ICBpZiAoZmxhZ19jaGVja2luZykKKy0gICAgZ2NjX2Fzc2VydCAoYmxvY2tfd2l0aGluX2Jsb2Nr X3AgKGJsb2NrLAorLQkJCQkgICAgICBERUNMX0lOSVRJQUwgKGN1cnJlbnRfZnVuY3Rpb25fZGVj bCksCistCQkJCSAgICAgIHRydWUpKTsKKy0KKy0gIGdjY19hc3NlcnQgKGlubGluZWRfZnVuY3Rp b25fb3V0ZXJfc2NvcGVfcCAoYmxvY2spKTsKKy0gIGdjY19hc3NlcnQgKCFCTE9DS19ESUUgKGJs b2NrKSk7CistCistICBpZiAoQkxPQ0tfRlJBR01FTlRfT1JJR0lOIChibG9jaykpCistICAgIGJs b2NrID0gQkxPQ0tfRlJBR01FTlRfT1JJR0lOIChibG9jayk7CistICAvKiBDYW4gdGhlIGVudHJ5 IHBvaW50IGV2ZXIgbm90IGJlIGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4KKy0gICAgIHVuZnJhZ21l bnRlZCBsZXhpY2FsIGJsb2NrPyAgKi8KKy0gIGVsc2UgaWYgKCEoQkxPQ0tfRlJBR01FTlRfQ0hB SU4gKGJsb2NrKQorLQkgICAgIHx8IChjdXJfbGluZV9pbmZvX3RhYmxlCistCQkgJiYgIVpFUk9f VklFV19QIChjdXJfbGluZV9pbmZvX3RhYmxlLT52aWV3KSkpKQorLSAgICByZXR1cm47CistCist ICBpZiAoIWlubGluZV9lbnRyeV9kYXRhX3RhYmxlKQorLSAgICBpbmxpbmVfZW50cnlfZGF0YV90 YWJsZQorLSAgICAgID0gaGFzaF90YWJsZTxpbmxpbmVfZW50cnlfZGF0YV9oYXNoZXI+OjpjcmVh dGVfZ2djICgxMCk7CistCistCistICBpbmxpbmVfZW50cnlfZGF0YSAqKmllZHAKKy0gICAgPSBp bmxpbmVfZW50cnlfZGF0YV90YWJsZS0+ZmluZF9zbG90X3dpdGhfaGFzaCAoYmxvY2ssCistCQkJ CQkJICAgIGh0YWJfaGFzaF9wb2ludGVyIChibG9jayksCistCQkJCQkJICAgIElOU0VSVCk7Cist ICBpZiAoKmllZHApCistICAgIC8qID8/PyBJZGVhbGx5LCB3ZSdkIHJlY29yZCBhbGwgZW50cnkg cG9pbnRzIGZvciB0aGUgc2FtZSBpbmxpbmVkCistICAgICAgIGZ1bmN0aW9uIChzb21lIG1heSBo YXZlIGJlZW4gZHVwbGljYXRlZCBieSBlLmcuIHVucm9sbGluZyksIGJ1dAorLSAgICAgICB3ZSBo YXZlIG5vIHdheSB0byByZXByZXNlbnQgdGhhdCBBVE0uICAqLworLSAgICByZXR1cm47CistCist ICBpbmxpbmVfZW50cnlfZGF0YSAqaWVkID0gKmllZHAgPSBnZ2NfY2xlYXJlZF9hbGxvYzxpbmxp bmVfZW50cnlfZGF0YT4gKCk7CistICBpZWQtPmJsb2NrID0gYmxvY2s7CistICBpZWQtPmxhYmVs X3BmeCA9IEJMT0NLX0lOTElORV9FTlRSWV9MQUJFTDsKKy0gIGllZC0+bGFiZWxfbnVtID0gQkxP Q0tfTlVNQkVSIChibG9jayk7CistICBpZiAoY3VyX2xpbmVfaW5mb190YWJsZSkKKy0gICAgaWVk LT52aWV3ID0gY3VyX2xpbmVfaW5mb190YWJsZS0+dmlldzsKKy0KKy0gIGNoYXIgbGFiZWxbTUFY X0FSVElGSUNJQUxfTEFCRUxfQllURVNdOworLQorLSAgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xB QkVMIChsYWJlbCwgQkxPQ0tfSU5MSU5FX0VOVFJZX0xBQkVMLAorLQkJCSAgICAgICBCTE9DS19O VU1CRVIgKGJsb2NrKSk7CistICBBU01fT1VUUFVUX0xBQkVMIChhc21fb3V0X2ZpbGUsIGxhYmVs KTsKKy19CistCisgLyogQ2FsbGVkIGZyb20gZmluYWxpemVfc2l6ZV9mdW5jdGlvbnMgZm9yIHNp emUgZnVuY3Rpb25zIHNvIHRoYXQgdGhlaXIgYm9keQorICAgIGNhbiBiZSBlbmNvZGVkIGluIHRo ZSBkZWJ1ZyBpbmZvIHRvIGRlc2NyaWJlIHRoZSBsYXlvdXQgb2YgdmFyaWFibGUtbGVuZ3RoCisg ICAgc3RydWN0dXJlcy4gICovCitAQCAtMjcyOTgsNyArMjY2NTIsNiBAQCBuZXdfbGluZV9pbmZv X3RhYmxlICh2b2lkKQorICAgdGFibGUtPmZpbGVfbnVtID0gMTsKKyAgIHRhYmxlLT5saW5lX251 bSA9IDE7CisgICB0YWJsZS0+aXNfc3RtdCA9IERXQVJGX0xJTkVfREVGQVVMVF9JU19TVE1UX1NU QVJUOworLSAgUkVTRVRfTkVYVF9WSUVXICh0YWJsZS0+dmlldyk7CisgCisgICByZXR1cm4gdGFi bGU7CisgfQorQEAgLTI3MzQ3LDcgKzI2NzAwLDcgQEAgc2V0X2N1cl9saW5lX2luZm9fdGFibGUg KHNlY3Rpb24gKnNlYykKKyAgICAgICB2ZWNfc2FmZV9wdXNoIChzZXBhcmF0ZV9saW5lX2luZm8s IHRhYmxlKTsKKyAgICAgfQorIAorLSAgaWYgKG91dHB1dF9hc21fbGluZV9kZWJ1Z19pbmZvICgp KQorKyAgaWYgKERXQVJGMl9BU01fTElORV9ERUJVR19JTkZPKQorICAgICB0YWJsZS0+aXNfc3Rt dCA9IChjdXJfbGluZV9pbmZvX3RhYmxlCisgCQkgICAgICA/IGN1cl9saW5lX2luZm9fdGFibGUt PmlzX3N0bXQKKyAJCSAgICAgIDogRFdBUkZfTElORV9ERUZBVUxUX0lTX1NUTVRfU1RBUlQpOwor QEAgLTI3NTI4LDcgKzI2ODgxLDcgQEAgZHdhcmYyb3V0X3NvdXJjZV9saW5lICh1bnNpZ25lZCBp bnQgbGluZQorIAkJIGZpbGVuYW1lLCBsaW5lKTsKKyAgICAgfQorIAorLSAgaWYgKG91dHB1dF9h c21fbGluZV9kZWJ1Z19pbmZvICgpKQorKyAgaWYgKERXQVJGMl9BU01fTElORV9ERUJVR19JTkZP KQorICAgICB7CisgICAgICAgLyogRW1pdCB0aGUgLmxvYyBkaXJlY3RpdmUgdW5kZXJzdG9vZCBi eSBHTlUgYXMuICAqLworICAgICAgIC8qICJcdC5sb2MgJXUgJXUgMCBpc19zdG10ICV1IGRpc2Ny aW1pbmF0b3IgJXUiLAorQEAgLTI3NTUxLDUwICsyNjkwNCw2IEBAIGR3YXJmMm91dF9zb3VyY2Vf bGluZSAodW5zaWduZWQgaW50IGxpbmUKKyAJICBmcHV0cyAoIiBkaXNjcmltaW5hdG9yICIsIGFz bV9vdXRfZmlsZSk7CisgCSAgZnByaW50X3VsIChhc21fb3V0X2ZpbGUsICh1bnNpZ25lZCBsb25n KSBkaXNjcmltaW5hdG9yKTsKKyAJfQorLSAgICAgIGlmIChkZWJ1Z192YXJpYWJsZV9sb2NhdGlv bl92aWV3cykKKy0JeworLQkgIHN0YXRpYyB2YXJfbG9jX3ZpZXcgbHZ1Z2lkOworLQkgIGlmICgh bHZ1Z2lkKQorLQkgICAgeworLQkgICAgICBnY2NfYXNzZXJ0ICghemVyb192aWV3X3ApOworLQkg ICAgICB6ZXJvX3ZpZXdfcCA9IEJJVE1BUF9HR0NfQUxMT0MgKCk7CistCSAgICAgIGJpdG1hcF9z ZXRfYml0ICh6ZXJvX3ZpZXdfcCwgMCk7CistCSAgICB9CistCSAgaWYgKCFSRVNFVFRJTkdfVklF V19QICh0YWJsZS0+dmlldykpCistCSAgICB7CistCSAgICAgIC8qIFdoZW4gd2UncmUgdXNpbmcg dGhlIGFzc2VtYmxlciB0byBjb21wdXRlIHZpZXcKKy0JCSBudW1iZXJzLCB3ZSBvdXRwdXQgc3lt Ym9saWMgbGFiZWxzIGFmdGVyICJ2aWV3IiBpbgorLQkJIC5sb2MgZGlyZWN0aXZlcywgYW5kIHRo ZSBhc3NlbWJsZXIgd2lsbCBzZXQgdGhlbSBmb3IKKy0JCSB1cywgc28gdGhhdCB3ZSBjYW4gcmVm ZXIgdG8gdGhlIHZpZXcgbnVtYmVycyBpbgorLQkJIGxvY2F0aW9uIGxpc3RzLiAgVGhlIG9ubHkg ZXhjZXB0aW9ucyBhcmUgd2hlbiB3ZSBrbm93CistCQkgYSB2aWV3IHdpbGwgYmUgemVybzogIi0w IiBpcyBhIGZvcmNlZCByZXNldCwgdXNlZAorLQkJIGUuZy4gaW4gdGhlIGJlZ2lubmluZyBvZiBm dW5jdGlvbnMsIHdoZXJlYXMgIjAiIHRlbGxzCistCQkgdGhlIGFzc2VtYmxlciB0byBjaGVjayB0 aGF0IHRoZXJlIHdhcyBhIFBDIGNoYW5nZQorLQkJIHNpbmNlIHRoZSBwcmV2aW91cyB2aWV3LCBp biBhIHdheSB0aGF0IGltcGxpY2l0bHkKKy0JCSByZXNldHMgdGhlIG5leHQgdmlldy4gICovCist CSAgICAgIGZwdXRzICgiIHZpZXcgIiwgYXNtX291dF9maWxlKTsKKy0JICAgICAgY2hhciBsYWJl bFtNQVhfQVJUSUZJQ0lBTF9MQUJFTF9CWVRFU107CistCSAgICAgIEFTTV9HRU5FUkFURV9JTlRF Uk5BTF9MQUJFTCAobGFiZWwsICJMVlUiLCB0YWJsZS0+dmlldyk7CistCSAgICAgIGFzc2VtYmxl X25hbWUgKGFzbV9vdXRfZmlsZSwgbGFiZWwpOworLQkgICAgICB0YWJsZS0+dmlldyA9ICsrbHZ1 Z2lkOworLQkgICAgfQorLQkgIGVsc2UKKy0JICAgIHsKKy0JICAgICAgaWYgKCF0YWJsZS0+aW5f dXNlKQorLQkJZnB1dHMgKCIgdmlldyAtMCIsIGFzbV9vdXRfZmlsZSk7CistCSAgICAgIGVsc2UK Ky0JCWZwdXRzICgiIHZpZXcgMCIsIGFzbV9vdXRfZmlsZSk7CistCSAgICAgIC8qIE1hcmsgdGhl IHByZXNlbnQgdmlldyBhcyBhIHplcm8gdmlldy4gIEVhcmxpZXIgZGVidWcKKy0JCSBiaW5kcyBt YXkgaGF2ZSBhbHJlYWR5IGFkZGVkIGl0cyBpZCB0byBsb2NsaXN0cyB0byBiZQorLQkJIGVtaXR0 ZWQgbGF0ZXIsIHNvIHdlIGNhbid0IHJldXNlIHRoZSBpZCBmb3Igc29tZXRoaW5nCistCQkgZWxz ZS4gIEhvd2V2ZXIsIGl0J3MgZ29vZCB0byBrbm93IHdoZXRoZXIgYSB2aWV3IGlzCistCQkga25v d24gdG8gYmUgemVybywgYmVjYXVzZSB0aGVuIHdlIG1heSBiZSBhYmxlIHRvCistCQkgb3B0aW1p emUgb3V0IGxvY3ZpZXdzIHRoYXQgYXJlIGFsbCB6ZXJvcywgc28gdGFrZQorLQkJIG5vdGUgb2Yg aXQgaW4gemVyb192aWV3X3AuICAqLworLQkgICAgICBiaXRtYXBfc2V0X2JpdCAoemVyb192aWV3 X3AsIGx2dWdpZCk7CistCSAgICAgIHRhYmxlLT52aWV3ID0gKytsdnVnaWQ7CistCSAgICB9Cist CX0KKyAgICAgICBwdXRjICgnXG4nLCBhc21fb3V0X2ZpbGUpOworICAgICB9CisgICBlbHNlCitA QCAtMjc2MDMsMTkgKzI2OTEyLDcgQEAgZHdhcmYyb3V0X3NvdXJjZV9saW5lICh1bnNpZ25lZCBp bnQgbGluZQorIAorICAgICAgIHRhcmdldG0uYXNtX291dC5pbnRlcm5hbF9sYWJlbCAoYXNtX291 dF9maWxlLCBMSU5FX0NPREVfTEFCRUwsIGxhYmVsX251bSk7CisgCistICAgICAgaWYgKGRlYnVn X3ZhcmlhYmxlX2xvY2F0aW9uX3ZpZXdzICYmIHRhYmxlLT52aWV3KQorLQlwdXNoX2R3X2xpbmVf aW5mb19lbnRyeSAodGFibGUsIExJX2Fkdl9hZGRyZXNzLCBsYWJlbF9udW0pOworLSAgICAgIGVs c2UKKy0JcHVzaF9kd19saW5lX2luZm9fZW50cnkgKHRhYmxlLCBMSV9zZXRfYWRkcmVzcywgbGFi ZWxfbnVtKTsKKy0gICAgICBpZiAoZGVidWdfdmFyaWFibGVfbG9jYXRpb25fdmlld3MpCistCXsK Ky0JICBpZiAoZmxhZ19kZWJ1Z19hc20pCistCSAgICBmcHJpbnRmIChhc21fb3V0X2ZpbGUsICJc dCVzIHZpZXcgJXMlZFxuIiwKKy0JCSAgICAgQVNNX0NPTU1FTlRfU1RBUlQsCistCQkgICAgIHRh YmxlLT5pbl91c2UgPyAiIiA6ICItIiwKKy0JCSAgICAgdGFibGUtPnZpZXcpOworLQkgIHRhYmxl LT52aWV3Kys7CistCX0KKysgICAgICBwdXNoX2R3X2xpbmVfaW5mb19lbnRyeSAodGFibGUsIExJ X3NldF9hZGRyZXNzLCBsYWJlbF9udW0pOworICAgICAgIGlmIChmaWxlX251bSAhPSB0YWJsZS0+ ZmlsZV9udW0pCisgCXB1c2hfZHdfbGluZV9pbmZvX2VudHJ5ICh0YWJsZSwgTElfc2V0X2ZpbGUs IGZpbGVfbnVtKTsKKyAgICAgICBpZiAoZGlzY3JpbWluYXRvciAhPSB0YWJsZS0+ZGlzY3JpbV9u dW0pCitAQCAtMjgyOTEsMTAgKzI3NTg4LDkgQEAgaW5pdF9zZWN0aW9uc19hbmRfbGFiZWxzIChi b29sIGVhcmx5X2x0bworIAkJCQkJICAgIFNFQ1RJT05fREVCVUcsIE5VTEwpOworICAgICAgIGRl YnVnX3N0cl9zZWN0aW9uID0gZ2V0X3NlY3Rpb24gKERFQlVHX1NUUl9TRUNUSU9OLAorIAkJCQkg ICAgICAgREVCVUdfU1RSX1NFQ1RJT05fRkxBR1MsIE5VTEwpOworLSAgICAgIGlmICghZHdhcmZf c3BsaXRfZGVidWdfaW5mbyAmJiAhb3V0cHV0X2FzbV9saW5lX2RlYnVnX2luZm8gKCkpCisrICAg ICAgaWYgKCFkd2FyZl9zcGxpdF9kZWJ1Z19pbmZvICYmICFEV0FSRjJfQVNNX0xJTkVfREVCVUdf SU5GTykKKyAJZGVidWdfbGluZV9zdHJfc2VjdGlvbiA9IGdldF9zZWN0aW9uIChERUJVR19MSU5F X1NUUl9TRUNUSU9OLAorIAkJCQkJICAgICAgREVCVUdfU1RSX1NFQ1RJT05fRkxBR1MsIE5VTEwp OworLQorICAgICAgIGRlYnVnX3Jhbmdlc19zZWN0aW9uID0gZ2V0X3NlY3Rpb24gKGR3YXJmX3Zl cnNpb24gPj0gNQorIAkJCQkJICA/IERFQlVHX1JOR0xJU1RTX1NFQ1RJT04KKyAJCQkJCSAgOiBE RUJVR19SQU5HRVNfU0VDVElPTiwKK0BAIC0yODY4MCwxMSArMjc5NzYsNiBAQCBwcnVuZV91bnVz ZWRfdHlwZXNfd2Fsa19hdHRyaWJzIChkd19kaWVfCisgCSAgICBwcnVuZV91bnVzZWRfdHlwZXNf d2Fsa19sb2NfZGVzY3IgKGxpc3QtPmV4cHIpOworIAkgIGJyZWFrOworIAorLQljYXNlIGR3X3Zh bF9jbGFzc192aWV3X2xpc3Q6CistCSAgLyogVGhpcyBwb2ludHMgdG8gYSBsb2NfbGlzdCBpbiBh bm90aGVyIGF0dHJpYnV0ZSwgc28gaXQncworLQkgICAgIGFscmVhZHkgY292ZXJlZC4gICovCist CSAgYnJlYWs7CistCisgCWNhc2UgZHdfdmFsX2NsYXNzX2RpZV9yZWY6CisgCSAgLyogQSByZWZl cmVuY2UgdG8gYW5vdGhlciBESUUuCisgCSAgICAgTWFrZSBzdXJlIHRoYXQgaXQgd2lsbCBnZXQg ZW1pdHRlZC4KK0BAIC0yOTc4NCw4ICsyOTA3NSw2IEBAIG9wdGltaXplX3N0cmluZ19sZW5ndGgg KGR3X2F0dHJfbm9kZSAqYSkKKyAJaWYgKGQtPmV4cHIgJiYgbm9uX2R3YXJmX2V4cHJlc3Npb24g KGQtPmV4cHIpKQorIAkgIG5vbl9kd2FyZl9leHByID0gdHJ1ZTsKKyAgICAgICBicmVhazsKKy0g ICAgY2FzZSBkd192YWxfY2xhc3Nfdmlld19saXN0OgorLSAgICAgIGdjY191bnJlYWNoYWJsZSAo KTsKKyAgICAgY2FzZSBkd192YWxfY2xhc3NfbG9jOgorICAgICAgIGx2ID0gQVRfbG9jIChhdik7 CisgICAgICAgaWYgKGx2ID09IE5VTEwpCitAQCAtMjk4MzAsNyArMjkxMTksNyBAQCBvcHRpbWl6 ZV9zdHJpbmdfbGVuZ3RoIChkd19hdHRyX25vZGUgKmEpCisgCSAgbHYgPSBjb3B5X2RlcmVmX2V4 cHJsb2MgKGQtPmV4cHIpOworIAkgIGlmIChsdikKKyAJICAgIHsKKy0JICAgICAgKnAgPSBuZXdf bG9jX2xpc3QgKGx2LCBkLT5iZWdpbiwgZC0+dmJlZ2luLCBkLT5lbmQsIGQtPnZlbmQsIGQtPnNl Y3Rpb24pOworKwkgICAgICAqcCA9IG5ld19sb2NfbGlzdCAobHYsIGQtPmJlZ2luLCBkLT5lbmQs IGQtPnNlY3Rpb24pOworIAkgICAgICBwID0gJigqcCktPmR3X2xvY19uZXh0OworIAkgICAgfQor IAkgIGVsc2UgaWYgKCFkd2FyZl9zdHJpY3QgJiYgZC0+ZXhwcikKK0BAIC0yOTkwMCw3ICsyOTE4 OSw2IEBAIHJlc29sdmVfYWRkciAoZHdfZGllX3JlZiBkaWUpCisgCQkgICAgICB7CisgCQkJZ2Nj X2Fzc2VydCAoIW5leHQtPmxsX3N5bWJvbCk7CisgCQkJbmV4dC0+bGxfc3ltYm9sID0gKCpjdXJy KS0+bGxfc3ltYm9sOworLQkJCW5leHQtPnZsX3N5bWJvbCA9ICgqY3VyciktPnZsX3N5bWJvbDsK KyAJCSAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIGlmIChkd2FyZl9zcGxpdF9kZWJ1Z19p bmZvKQorICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVfbG9jX2xpc3RfYWRkcl90YWJsZV9l bnRyaWVzIChsKTsKK0BAIC0yOTkyNiwyMSArMjkyMTQsNiBAQCByZXNvbHZlX2FkZHIgKGR3X2Rp ZV9yZWYgZGllKQorIAkgICAgaXgtLTsKKyAJICB9CisgCWJyZWFrOworLSAgICAgIGNhc2UgZHdf dmFsX2NsYXNzX3ZpZXdfbGlzdDoKKy0JeworLQkgIGdjY19jaGVja2luZ19hc3NlcnQgKGEtPmR3 X2F0dHIgPT0gRFdfQVRfR05VX2xvY3ZpZXdzKTsKKy0JICBnY2NfY2hlY2tpbmdfYXNzZXJ0IChk d2FyZjJvdXRfbG9jdmlld3NfaW5fYXR0cmlidXRlICgpKTsKKy0JICBkd192YWxfbm9kZSAqbGxu b2RlCistCSAgICA9IHZpZXdfbGlzdF90b19sb2NfbGlzdF92YWxfbm9kZSAoJmEtPmR3X2F0dHJf dmFsKTsKKy0JICAvKiBJZiB3ZSBubyBsb25nZXIgaGF2ZSBhIGxvY2xpc3QsIG9yIGl0IG5vIGxv bmdlciBuZWVkcworLQkgICAgIHZpZXdzLCBkcm9wIHRoaXMgYXR0cmlidXRlLiAgKi8KKy0JICBp ZiAoIWxsbm9kZSB8fCAhbGxub2RlLT52LnZhbF9sb2NfbGlzdC0+dmxfc3ltYm9sKQorLQkgICAg eworLQkgICAgICByZW1vdmVfQVQgKGRpZSwgYS0+ZHdfYXR0cik7CistCSAgICAgIGl4LS07Cist CSAgICB9CistCSAgYnJlYWs7CistCX0KKyAgICAgICBjYXNlIGR3X3ZhbF9jbGFzc19sb2M6Cisg CXsKKyAJICBkd19sb2NfZGVzY3JfcmVmIGwgPSBBVF9sb2MgKGEpOworQEAgLTMwMzM3LDggKzI5 NjEwLDYgQEAgaGFzaF9sb2NfbGlzdCAoZHdfbG9jX2xpc3RfcmVmIGxpc3RfaGVhZAorICAgICB7 CisgICAgICAgaHN0YXRlLmFkZCAoY3Vyci0+YmVnaW4sIHN0cmxlbiAoY3Vyci0+YmVnaW4pICsg MSk7CisgICAgICAgaHN0YXRlLmFkZCAoY3Vyci0+ZW5kLCBzdHJsZW4gKGN1cnItPmVuZCkgKyAx KTsKKy0gICAgICBoc3RhdGUuYWRkX29iamVjdCAoY3Vyci0+dmJlZ2luKTsKKy0gICAgICBoc3Rh dGUuYWRkX29iamVjdCAoY3Vyci0+dmVuZCk7CisgICAgICAgaWYgKGN1cnItPnNlY3Rpb24pCisg CWhzdGF0ZS5hZGQgKGN1cnItPnNlY3Rpb24sIHN0cmxlbiAoY3Vyci0+c2VjdGlvbikgKyAxKTsK KyAgICAgICBoYXNoX2xvY3MgKGN1cnItPmV4cHIsIGhzdGF0ZSk7CitAQCAtMzA1NjAsNyArMjk4 MzEsNiBAQCBsb2NfbGlzdF9oYXNoZXI6OmVxdWFsIChjb25zdCBkd19sb2NfbGlzCisgCXx8IHN0 cmNtcCAoYS0+ZW5kLCBiLT5lbmQpICE9IDAKKyAJfHwgKGEtPnNlY3Rpb24gPT0gTlVMTCkgIT0g KGItPnNlY3Rpb24gPT0gTlVMTCkKKyAJfHwgKGEtPnNlY3Rpb24gJiYgc3RyY21wIChhLT5zZWN0 aW9uLCBiLT5zZWN0aW9uKSAhPSAwKQorLQl8fCBhLT52YmVnaW4gIT0gYi0+dmJlZ2luIHx8IGEt PnZlbmQgIT0gYi0+dmVuZAorIAl8fCAhY29tcGFyZV9sb2NzIChhLT5leHByLCBiLT5leHByKSkK KyAgICAgICBicmVhazsKKyAgIHJldHVybiBhID09IE5VTEwgJiYgYiA9PSBOVUxMOworQEAgLTMw NTc5LDggKzI5ODQ5LDYgQEAgb3B0aW1pemVfbG9jYXRpb25fbGlzdHNfMSAoZHdfZGllX3JlZiBk aQorICAgZHdfYXR0cl9ub2RlICphOworICAgdW5zaWduZWQgaXg7CisgICBkd19sb2NfbGlzdF9z dHJ1Y3QgKipzbG90OworLSAgYm9vbCBkcm9wX2xvY3ZpZXdzID0gZmFsc2U7CistICBib29sIGhh c19sb2N2aWV3cyA9IGZhbHNlOworIAorICAgRk9SX0VBQ0hfVkVDX1NBRkVfRUxUIChkaWUtPmRp ZV9hdHRyLCBpeCwgYSkKKyAgICAgaWYgKEFUX2NsYXNzIChhKSA9PSBkd192YWxfY2xhc3NfbG9j X2xpc3QpCitAQCAtMzA1OTEsMzMgKzI5ODU5LDExIEBAIG9wdGltaXplX2xvY2F0aW9uX2xpc3Rz XzEgKGR3X2RpZV9yZWYgZGkKKyAJaGFzaF9sb2NfbGlzdCAobGlzdCk7CisgCXNsb3QgPSBodGFi LT5maW5kX3Nsb3Rfd2l0aF9oYXNoIChsaXN0LCBsaXN0LT5oYXNoLCBJTlNFUlQpOworIAlpZiAo KnNsb3QgPT0gTlVMTCkKKy0JICB7CistCSAgICAqc2xvdCA9IGxpc3Q7CistCSAgICBpZiAobG9j X2xpc3RfaGFzX3ZpZXdzIChsaXN0KSkKKy0JICAgICAgZ2NjX2Fzc2VydCAobGlzdC0+dmxfc3lt Ym9sKTsKKy0JICAgIGVsc2UgaWYgKGxpc3QtPnZsX3N5bWJvbCkKKy0JICAgICAgeworLQkJZHJv cF9sb2N2aWV3cyA9IHRydWU7CistCQlsaXN0LT52bF9zeW1ib2wgPSBOVUxMOworLQkgICAgICB9 CistCSAgfQorKwkgICpzbG90ID0gbGlzdDsKKyAJZWxzZQorLQkgIHsKKy0JICAgIGlmIChsaXN0 LT52bF9zeW1ib2wgJiYgISgqc2xvdCktPnZsX3N5bWJvbCkKKy0JICAgICAgZHJvcF9sb2N2aWV3 cyA9IHRydWU7CistCSAgICBhLT5kd19hdHRyX3ZhbC52LnZhbF9sb2NfbGlzdCA9ICpzbG90Owor LQkgIH0KKy0gICAgICB9CistICAgIGVsc2UgaWYgKEFUX2NsYXNzIChhKSA9PSBkd192YWxfY2xh c3Nfdmlld19saXN0KQorLSAgICAgIHsKKy0JZ2NjX2NoZWNraW5nX2Fzc2VydCAoYS0+ZHdfYXR0 ciA9PSBEV19BVF9HTlVfbG9jdmlld3MpOworLQloYXNfbG9jdmlld3MgPSB0cnVlOworKyAgICAg ICAgICBhLT5kd19hdHRyX3ZhbC52LnZhbF9sb2NfbGlzdCA9ICpzbG90OworICAgICAgIH0KKyAK Ky0KKy0gIGlmIChkcm9wX2xvY3ZpZXdzICYmIGhhc19sb2N2aWV3cykKKy0gICAgcmVtb3ZlX0FU IChkaWUsIERXX0FUX0dOVV9sb2N2aWV3cyk7CistCisgICBGT1JfRUFDSF9DSElMRCAoZGllLCBj LCBvcHRpbWl6ZV9sb2NhdGlvbl9saXN0c18xIChjLCBodGFiKSk7CisgfQorIAorQEAgLTMwNjQy LDcgKzI5ODg4LDcgQEAgaW5kZXhfbG9jYXRpb25fbGlzdHMgKGR3X2RpZV9yZWYgZGllKQorICAg ICAgICAgICAgIC8qIERvbid0IGluZGV4IGFuIGVudHJ5IHRoYXQgaGFzIGFscmVhZHkgYmVlbiBp bmRleGVkCisgICAgICAgICAgICAgICAgb3Igd29uJ3QgYmUgb3V0cHV0LiAgKi8KKyAgICAgICAg ICAgICBpZiAoY3Vyci0+YmVnaW5fZW50cnkgIT0gTlVMTAorLSAgICAgICAgICAgICAgICB8fCBz a2lwX2xvY19saXN0X2VudHJ5IChjdXJyKSkKKysgICAgICAgICAgICAgICAgfHwgKHN0cmNtcCAo Y3Vyci0+YmVnaW4sIGN1cnItPmVuZCkgPT0gMCAmJiAhY3Vyci0+Zm9yY2UpKQorICAgICAgICAg ICAgICAgY29udGludWU7CisgCisgICAgICAgICAgICAgY3Vyci0+YmVnaW5fZW50cnkKK0BAIC0z MDc1MCw5ICsyOTk5Niw2IEBAIGR3YXJmMm91dF9maW5pc2ggKGNvbnN0IGNoYXIgKikKKyAgIC8q IEZsdXNoIG91dCBhbnkgbGF0ZWNvbWVycyB0byB0aGUgbGltYm8gcGFydHkuICAqLworICAgZmx1 c2hfbGltYm9fZGllX2xpc3QgKCk7CisgCistICBpZiAoaW5saW5lX2VudHJ5X2RhdGFfdGFibGUp CistICAgIGdjY19hc3NlcnQgKGlubGluZV9lbnRyeV9kYXRhX3RhYmxlLT5lbGVtZW50cyAoKSA9 PSAwKTsKKy0KKyAgIGlmIChmbGFnX2NoZWNraW5nKQorICAgICB7CisgICAgICAgdmVyaWZ5X2Rp ZSAoY29tcF91bml0X2RpZSAoKSk7CitAQCAtMzEwNjksNyArMzAzMTIsNyBAQCBkd2FyZjJvdXRf ZmluaXNoIChjb25zdCBjaGFyICopCisgCSAgZHcyX2FzbV9vdXRwdXRfZGVsdGEgKERXQVJGX09G RlNFVF9TSVpFLCBsMiwgbDEsCisgCQkJICAgICJMZW5ndGggb2YgTG9jYXRpb24gTGlzdHMiKTsK KyAJICBBU01fT1VUUFVUX0xBQkVMIChhc21fb3V0X2ZpbGUsIGwxKTsKKy0JICBvdXRwdXRfZHdh cmZfdmVyc2lvbiAoKTsKKysJICBkdzJfYXNtX291dHB1dF9kYXRhICgyLCBkd2FyZl92ZXJzaW9u LCAiRFdBUkYgVmVyc2lvbiIpOworIAkgIGR3Ml9hc21fb3V0cHV0X2RhdGEgKDEsIERXQVJGMl9B RERSX1NJWkUsICJBZGRyZXNzIFNpemUiKTsKKyAJICBkdzJfYXNtX291dHB1dF9kYXRhICgxLCAw LCAiU2VnbWVudCBTaXplIik7CisgCSAgZHcyX2FzbV9vdXRwdXRfZGF0YSAoNCwgZHdhcmZfc3Bs aXRfZGVidWdfaW5mbyA/IGxvY19saXN0X2lkeCA6IDAsCitAQCAtMzExMjgsNyArMzAzNzEsNyBA QCBkd2FyZjJvdXRfZmluaXNoIChjb25zdCBjaGFyICopCisgICAgICB1c2VkIGJ5IHRoZSBkZWJ1 Z19pbmZvIHNlY3Rpb24gYXJlIG1hcmtlZCBhcyAndXNlZCcuICAqLworICAgc3dpdGNoX3RvX3Nl Y3Rpb24gKGRlYnVnX2xpbmVfc2VjdGlvbik7CisgICBBU01fT1VUUFVUX0xBQkVMIChhc21fb3V0 X2ZpbGUsIGRlYnVnX2xpbmVfc2VjdGlvbl9sYWJlbCk7CistICBpZiAoISBvdXRwdXRfYXNtX2xp bmVfZGVidWdfaW5mbyAoKSkKKysgIGlmICghIERXQVJGMl9BU01fTElORV9ERUJVR19JTkZPKQor ICAgICBvdXRwdXRfbGluZV9pbmZvIChmYWxzZSk7CisgCisgICBpZiAoZHdhcmZfc3BsaXRfZGVi dWdfaW5mbyAmJiBpbmZvX3NlY3Rpb25fZW1pdHRlZCkKKy0tLSBnY2MvZHdhcmYyb3V0LmgJKHJl dmlzaW9uIDI1NzUxMSkKKysrKyBnY2MvZHdhcmYyb3V0LmgJKHJldmlzaW9uIDI1NzUwOSkKK0BA IC0xNjAsOCArMTYwLDcgQEAgZW51bSBkd192YWxfY2xhc3MKKyAgIGR3X3ZhbF9jbGFzc19kaXNj cl9saXN0LAorICAgZHdfdmFsX2NsYXNzX2NvbnN0X2ltcGxpY2l0LAorICAgZHdfdmFsX2NsYXNz X3Vuc2lnbmVkX2NvbnN0X2ltcGxpY2l0LAorLSAgZHdfdmFsX2NsYXNzX2ZpbGVfaW1wbGljaXQs CistICBkd192YWxfY2xhc3Nfdmlld19saXN0CisrICBkd192YWxfY2xhc3NfZmlsZV9pbXBsaWNp dAorIH07CisgCisgLyogRGVzY3JpYmUgYSBmbG9hdGluZyBwb2ludCBjb25zdGFudCB2YWx1ZSwg b3IgYSB2ZWN0b3IgY29uc3RhbnQgdmFsdWUuICAqLworQEAgLTIwNCw3ICsyMDMsNiBAQCBzdHJ1 Y3QgR1RZKCgpKSBkd192YWxfbm9kZSB7CisgICAgICAgcnR4IEdUWSAoKHRhZyAoImR3X3ZhbF9j bGFzc19hZGRyIikpKSB2YWxfYWRkcjsKKyAgICAgICB1bnNpZ25lZCBIT1NUX1dJREVfSU5UIEdU WSAoKHRhZyAoImR3X3ZhbF9jbGFzc19vZmZzZXQiKSkpIHZhbF9vZmZzZXQ7CisgICAgICAgZHdf bG9jX2xpc3RfcmVmIEdUWSAoKHRhZyAoImR3X3ZhbF9jbGFzc19sb2NfbGlzdCIpKSkgdmFsX2xv Y19saXN0OworLSAgICAgIGR3X2RpZV9yZWYgR1RZICgodGFnICgiZHdfdmFsX2NsYXNzX3ZpZXdf bGlzdCIpKSkgdmFsX3ZpZXdfbGlzdDsKKyAgICAgICBkd19sb2NfZGVzY3JfcmVmIEdUWSAoKHRh ZyAoImR3X3ZhbF9jbGFzc19sb2MiKSkpIHZhbF9sb2M7CisgICAgICAgSE9TVF9XSURFX0lOVCBH VFkgKChkZWZhdWx0KSkgdmFsX2ludDsKKyAgICAgICB1bnNpZ25lZCBIT1NUX1dJREVfSU5UCist LS0gZ2NjL2dpbXBsZS1wcmV0dHktcHJpbnQuYwkocmV2aXNpb24gMjU3NTExKQorKysrIGdjYy9n aW1wbGUtcHJldHR5LXByaW50LmMJKHJldmlzaW9uIDI1NzUwOSkKK0BAIC0xMzcxLDE5ICsxMzcx LDYgQEAgZHVtcF9naW1wbGVfZGVidWcgKHByZXR0eV9wcmludGVyICpidWZmZQorIAlkdW1wX2dp bXBsZV9mbXQgKGJ1ZmZlciwgc3BjLCBmbGFncywgIiMgREVCVUcgQkVHSU5fU1RNVCIpOworICAg ICAgIGJyZWFrOworIAorLSAgICBjYXNlIEdJTVBMRV9ERUJVR19JTkxJTkVfRU5UUlk6CistICAg ICAgaWYgKGZsYWdzICYgVERGX1JBVykKKy0JZHVtcF9naW1wbGVfZm10IChidWZmZXIsIHNwYywg ZmxhZ3MsICIlRyBJTkxJTkVfRU5UUlkgJVQiLCBncywKKy0JCQkgZ2ltcGxlX2Jsb2NrIChncykK Ky0JCQkgPyBibG9ja191bHRpbWF0ZV9vcmlnaW4gKGdpbXBsZV9ibG9jayAoZ3MpKQorLQkJCSA6 IE5VTExfVFJFRSk7CistICAgICAgZWxzZQorLQlkdW1wX2dpbXBsZV9mbXQgKGJ1ZmZlciwgc3Bj LCBmbGFncywgIiMgREVCVUcgSU5MSU5FX0VOVFJZICVUIiwKKy0JCQkgZ2ltcGxlX2Jsb2NrIChn cykKKy0JCQkgPyBibG9ja191bHRpbWF0ZV9vcmlnaW4gKGdpbXBsZV9ibG9jayAoZ3MpKQorLQkJ CSA6IE5VTExfVFJFRSk7CistICAgICAgYnJlYWs7CistCisgICAgIGRlZmF1bHQ6CisgICAgICAg Z2NjX3VucmVhY2hhYmxlICgpOworICAgICB9CistLS0gZ2NjL2NvbmZpZ3VyZS5hYwkocmV2aXNp b24gMjU3NTExKQorKysrIGdjYy9jb25maWd1cmUuYWMJKHJldmlzaW9uIDI1NzUwOSkKK0BAIC00 OTAyLDI1ICs0OTAyLDkgQEAgaWYgdGVzdCB4IiRpbnNuIiAhPSB4OyB0aGVuCisgCisgIGlmIHRl c3QgJGdjY19jdl9hc19kd2FyZjJfZGVidWdfbGluZSA9IHllcyBcCisgICYmIHRlc3QgJGdjY19j dl9hc19kd2FyZjJfZmlsZV9idWdneSA9IG5vOyB0aGVuCistICAgIEFDX0RFRklORShIQVZFX0FT X0RXQVJGMl9ERUJVR19MSU5FLCAxLAorKwlBQ19ERUZJTkUoSEFWRV9BU19EV0FSRjJfREVCVUdf TElORSwgMSwKKyAgIFtEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgZHdhcmYyIC5m aWxlLy5sb2MgZGlyZWN0aXZlcywKKyAgICBhbmQgcHJlc2VydmVzIGZpbGUgdGFibGUgaW5kaWNl cyBleGFjdGx5IGFzIGdpdmVuLl0pCistCistICAgIGlmIHRlc3QgJGdjY19jdl9hc19sZWIxMjgg PSB5ZXM7IHRoZW4KKy0JY29uZnRlc3Rfcz0iXAorLQkuZmlsZSAxIFwiY29uZnRlc3Quc1wiCist CS5sb2MgMSAzIDAgdmlldyAuTFZVMQorLQkkaW5zbgorLQkuZGF0YQorLQkudWxlYjEyOCAuTFZV MQorLQkudWxlYjEyOCAuTFZVMQorLSIKKy0JZ2NjX0dBU19DSEVDS19GRUFUVVJFKFtkd2FyZjIg ZGVidWdfdmlldyBzdXBwb3J0XSwKKy0JICBnY2NfY3ZfYXNfZHdhcmYyX2RlYnVnX3ZpZXcsCist CSAgW2VsZiwyLDI3LDBdLCxbJGNvbmZ0ZXN0X3NdLCwKKy0JICBbQUNfREVGSU5FKEhBVkVfQVNf RFdBUkYyX0RFQlVHX1ZJRVcsIDEsCistICBbRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBv cnRzIHZpZXdzIGluIGR3YXJmMiAubG9jIGRpcmVjdGl2ZXMuXSldKQorLSAgICBmaQorICBmaQor IAorICBnY2NfR0FTX0NIRUNLX0ZFQVRVUkUoWy0tZ2R3YXJmMiBvcHRpb25dLAorLS0tIGdjYy9w cmludC1ydGwuYwkocmV2aXNpb24gMjU3NTExKQorKysrIGdjYy9wcmludC1ydGwuYwkocmV2aXNp b24gMjU3NTA5KQorQEAgLTI3Niw3ICsyNzYsNiBAQCBydHhfd3JpdGVyOjpwcmludF9ydHhfb3Bl cmFuZF9jb2RlXzAgKGNvCisgCSAgYnJlYWs7CisgCisgCWNhc2UgTk9URV9JTlNOX0JFR0lOX1NU TVQ6CistCWNhc2UgTk9URV9JTlNOX0lOTElORV9FTlRSWToKKyAjaWZuZGVmIEdFTkVSQVRPUl9G SUxFCisgCSAgeworIAkgICAgZXhwYW5kZWRfbG9jYXRpb24geGxvYworQEAgLTE4ODAsMTAgKzE4 NzksNiBAQCBwcmludF9pbnNuIChwcmV0dHlfcHJpbnRlciAqcHAsIGNvbnN0IHJ0CisgCQlwcF9z dHJpbmcgKHBwLCAiZGVidWcgYmVnaW4gc3RtdCBtYXJrZXIiKTsKKyAJCWJyZWFrOworIAorLQkg ICAgICBjYXNlIE5PVEVfSU5TTl9JTkxJTkVfRU5UUlk6CistCQlwcF9zdHJpbmcgKHBwLCAiZGVi dWcgaW5saW5lIGVudHJ5IG1hcmtlciIpOworLQkJYnJlYWs7CistCisgCSAgICAgIGRlZmF1bHQ6 CisgCQlnY2NfdW5yZWFjaGFibGUgKCk7CisgCSAgICAgIH0KKy0tLSBnY2MvY2ZnZXhwYW5kLmMJ KHJldmlzaW9uIDI1NzUxMSkKKysrKyBnY2MvY2ZnZXhwYW5kLmMJKHJldmlzaW9uIDI1NzUwOSkK K0BAIC01NzMxLDE1ICs1NzMxLDYgQEAgZXhwYW5kX2dpbXBsZV9iYXNpY19ibG9jayAoYmFzaWNf YmxvY2sgYgorIAkJZ290byBkZWxpbmtfZGVidWdfc3RtdDsKKyAJICAgICAgZWxzZSBpZiAoZ2lt cGxlX2RlYnVnX2JlZ2luX3N0bXRfcCAoc3RtdCkpCisgCQl2YWwgPSBHRU5fUlRYX0RFQlVHX01B UktFUl9CRUdJTl9TVE1UX1BBVCAoKTsKKy0JICAgICAgZWxzZSBpZiAoZ2ltcGxlX2RlYnVnX2lu bGluZV9lbnRyeV9wIChzdG10KSkKKy0JCXsKKy0JCSAgdHJlZSBibG9jayA9IGdpbXBsZV9ibG9j ayAoc3RtdCk7CistCistCQkgIGlmIChibG9jaykKKy0JCSAgICB2YWwgPSBHRU5fUlRYX0RFQlVH X01BUktFUl9JTkxJTkVfRU5UUllfUEFUICgpOworLQkJICBlbHNlCistCQkgICAgZ290byBkZWxp bmtfZGVidWdfc3RtdDsKKy0JCX0KKyAJICAgICAgZWxzZQorIAkJZ2NjX3VucmVhY2hhYmxlICgp OworIAorLS0tIGdjYy90cmVlLXNzYS1saXZlLmMJKHJldmlzaW9uIDI1NzUxMSkKKysrKyBnY2Mv dHJlZS1zc2EtbGl2ZS5jCShyZXZpc2lvbiAyNTc1MDkpCitAQCAtNTIwLDExICs1MjAsNiBAQCBy ZW1vdmVfdW51c2VkX3Njb3BlX2Jsb2NrX3AgKHRyZWUgc2NvcGUsCisgICAgZWxzZSBpZiAoIUJM T0NLX1NVUEVSQ09OVEVYVCAoc2NvcGUpCisgICAgICAgICAgICAgfHwgVFJFRV9DT0RFIChCTE9D S19TVVBFUkNPTlRFWFQgKHNjb3BlKSkgPT0gRlVOQ1RJT05fREVDTCkKKyAgICAgIHVudXNlZCA9 IGZhbHNlOworLSAgIC8qIFByZXNlcnZlIHRoZSBibG9jaywgaXQgaXMgcmVmZXJlbmNlZCBieSBh dCBsZWFzdCB0aGUgaW5saW5lCistICAgICAgZW50cnkgcG9pbnQgbWFya2VyLiAgKi8KKy0gICBl bHNlIGlmIChkZWJ1Z19ub25iaW5kX21hcmtlcnNfcAorLQkgICAgJiYgaW5saW5lZF9mdW5jdGlv bl9vdXRlcl9zY29wZV9wIChzY29wZSkpCistICAgICB1bnVzZWQgPSBmYWxzZTsKKyAgICAvKiBJ bm5lcm1vc3QgYmxvY2tzIHdpdGggbm8gbGl2ZSB2YXJpYWJsZXMgbm9yIHN0YXRlbWVudHMgY2Fu IGJlIGFsd2F5cworICAgICAgIGVsaW1pbmF0ZWQuICAqLworICAgIGVsc2UgaWYgKCFuc3ViYmxv Y2tzKQorQEAgLTU1MywxMyArNTQ4LDExIEBAIHJlbW92ZV91bnVzZWRfc2NvcGVfYmxvY2tfcCAo dHJlZSBzY29wZSwKKyAgICAgIH0KKyAgICBlbHNlIGlmIChCTE9DS19WQVJTIChzY29wZSkgfHwg QkxPQ0tfTlVNX05PTkxPQ0FMSVpFRF9WQVJTIChzY29wZSkpCisgICAgICB1bnVzZWQgPSBmYWxz ZTsKKy0gICAvKiBTZWUgaWYgdGhpcyBibG9jayBpcyBpbXBvcnRhbnQgZm9yIHJlcHJlc2VudGF0 aW9uIG9mIGlubGluZWQKKy0gICAgICBmdW5jdGlvbi4gIElubGluZWQgZnVuY3Rpb25zIGFyZSBh bHdheXMgcmVwcmVzZW50ZWQgYnkgYmxvY2sKKy0gICAgICB3aXRoIGJsb2NrX3VsdGltYXRlX29y aWdpbiBiZWluZyBzZXQgdG8gRlVOQ1RJT05fREVDTCBhbmQKKy0gICAgICBERUNMX1NPVVJDRV9M T0NBVElPTiBzZXQsIHVubGVzcyB0aGV5IGV4cGFuZCB0byBub3RoaW5nLi4uICBCdXQKKy0gICAg ICBzZWUgYWJvdmUgZm9yIHRoZSBjYXNlIG9mIHN0YXRlbWVudCBmcm9udGllcnMuICAqLworLSAg IGVsc2UgaWYgKCFkZWJ1Z19ub25iaW5kX21hcmtlcnNfcAorLQkgICAgJiYgaW5saW5lZF9mdW5j dGlvbl9vdXRlcl9zY29wZV9wIChzY29wZSkpCisrICAgLyogU2VlIGlmIHRoaXMgYmxvY2sgaXMg aW1wb3J0YW50IGZvciByZXByZXNlbnRhdGlvbiBvZiBpbmxpbmVkIGZ1bmN0aW9uLgorKyAgICAg IElubGluZWQgZnVuY3Rpb25zIGFyZSBhbHdheXMgcmVwcmVzZW50ZWQgYnkgYmxvY2sgd2l0aAor KyAgICAgIGJsb2NrX3VsdGltYXRlX29yaWdpbiBiZWluZyBzZXQgdG8gRlVOQ1RJT05fREVDTCBh bmQgREVDTF9TT1VSQ0VfTE9DQVRJT04KKysgICAgICBzZXQuLi4gICovCisrICAgZWxzZSBpZiAo aW5saW5lZF9mdW5jdGlvbl9vdXRlcl9zY29wZV9wIChzY29wZSkpCisgICAgICB1bnVzZWQgPSBm YWxzZTsKKyAgICBlbHNlCisgICAgLyogVmVyZmlmeSB0aGF0IG9ubHkgYmxvY2tzIHdpdGggc291 cmNlIGxvY2F0aW9uIHNldAorQEAgLTY0NywxNiArNjQwLDYgQEAgZHVtcF9zY29wZV9ibG9jayAo RklMRSAqZmlsZSwgaW50IGluZGVudAorIAkgICAgZnByaW50ZiAoZmlsZSwgIiMlaSIsIEJMT0NL X05VTUJFUiAob3JpZ2luKSk7CisgCX0KKyAgICAgfQorLSAgaWYgKEJMT0NLX0ZSQUdNRU5UX09S SUdJTiAoc2NvcGUpKQorLSAgICBmcHJpbnRmIChmaWxlLCAiIEZyYWdtZW50IG9mIDogIyVpIiwK Ky0JICAgICBCTE9DS19OVU1CRVIgKEJMT0NLX0ZSQUdNRU5UX09SSUdJTiAoc2NvcGUpKSk7Cist ICBlbHNlIGlmIChCTE9DS19GUkFHTUVOVF9DSEFJTiAoc2NvcGUpKQorLSAgICB7CistICAgICAg ZnByaW50ZiAoZmlsZSwgIiBGcmFnbWVudCBjaGFpbiA6Iik7CistICAgICAgZm9yICh0ID0gQkxP Q0tfRlJBR01FTlRfQ0hBSU4gKHNjb3BlKTsgdCA7CistCSAgIHQgPSBCTE9DS19GUkFHTUVOVF9D SEFJTiAodCkpCistCWZwcmludGYgKGZpbGUsICIgIyVpIiwgQkxPQ0tfTlVNQkVSICh0KSk7Cist ICAgIH0KKyAgIGZwcmludGYgKGZpbGUsICIgXG4iKTsKKyAgIGZvciAodmFyID0gQkxPQ0tfVkFS UyAoc2NvcGUpOyB2YXI7IHZhciA9IERFQ0xfQ0hBSU4gKHZhcikpCisgICAgIHsKKy0tLSBnY2Mv Y29tbW9uLm9wdAkocmV2aXNpb24gMjU3NTExKQorKysrIGdjYy9jb21tb24ub3B0CShyZXZpc2lv biAyNTc1MDkpCitAQCAtMjk1NiwxMyArMjk1Niw2IEBAIGd0b2dnbGUKKyBDb21tb24gRHJpdmVy IFJlcG9ydCBWYXIoZmxhZ19ndG9nZ2xlKQorIFRvZ2dsZSBkZWJ1ZyBpbmZvcm1hdGlvbiBnZW5l cmF0aW9uLgorIAorLWd2YXJpYWJsZS1sb2NhdGlvbi12aWV3cworLUNvbW1vbiBEcml2ZXIgVmFy KGRlYnVnX3ZhcmlhYmxlX2xvY2F0aW9uX3ZpZXdzLCAxKSBJbml0KDIpCistQXVnbWVudCB2YXJp YWJsZSBsb2NhdGlvbiBsaXN0cyB3aXRoIHByb2dyZXNzaXZlIHZpZXdzLgorLQorLWd2YXJpYWJs ZS1sb2NhdGlvbi12aWV3cz1pbmNvbXBhdDUKKy1Db21tb24gRHJpdmVyIFJlamVjdE5lZ2F0aXZl IFZhcihkZWJ1Z192YXJpYWJsZV9sb2NhdGlvbl92aWV3cywgLTEpIEluaXQoMikKKy0KKyBndm1z CisgQ29tbW9uIERyaXZlciBKb2luZWRPck1pc3NpbmcgTmVnYXRpdmUoZ3hjb2ZmKQorIEdlbmVy YXRlIGRlYnVnIGluZm9ybWF0aW9uIGluIFZNUyBmb3JtYXQuCistLS0gZ2NjL3J0bC5oCShyZXZp c2lvbiAyNTc1MTEpCisrKysgZ2NjL3J0bC5oCShyZXZpc2lvbiAyNTc1MDkpCitAQCAtMTY1NCw4 ICsxNjU0LDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCByZWdfbm90ZV9uYW1lWworICAg IGZvciB3aGljaCBOT1RFX01BUktFUl9MT0NBVElPTiBjYW4gYmUgdXNlZC4gICovCisgI2RlZmlu ZSBOT1RFX01BUktFUl9QKElOU04pCQkJCVwKKyAgIChOT1RFX1AgKElOU04pICYmCQkJCQlcCist ICAgKE5PVEVfS0lORCAoSU5TTikgPT0gTk9URV9JTlNOX0JFR0lOX1NUTVQJCVwKKy0gICAgfHwg Tk9URV9LSU5EIChJTlNOKSA9PSBOT1RFX0lOU05fSU5MSU5FX0VOVFJZKSkKKysgICAoTk9URV9L SU5EIChJTlNOKSA9PSBOT1RFX0lOU05fQkVHSU5fU1RNVCkpCisgCisgLyogVmFyaWFibGUgZGVj bGFyYXRpb24gYW5kIHRoZSBsb2NhdGlvbiBvZiBhIHZhcmlhYmxlLiAgKi8KKyAjZGVmaW5lIFBB VF9WQVJfTE9DQVRJT05fREVDTChQQVQpIChYQ1RSRUUgKChQQVQpLCAwLCBWQVJfTE9DQVRJT04p KQorQEAgLTE2OTMsOCArMTY5Miw2IEBAIGV4dGVybiBjb25zdCBjaGFyICogY29uc3QgcmVnX25v dGVfbmFtZVsKKyAgIChHRVRfQ09ERSAoUEFUVEVSTiAoSU5TTikpID09IERFQlVHX01BUktFUgkg IFwKKyAgICA/IChHRVRfTU9ERSAoUEFUVEVSTiAoSU5TTikpID09IFZPSURtb2RlCSAgXAorICAg ICAgID8gTk9URV9JTlNOX0JFR0lOX1NUTVQJCQkgIFwKKy0gICAgICA6IEdFVF9NT0RFIChQQVRU RVJOIChJTlNOKSkgPT0gQkxLbW9kZQkgIFwKKy0gICAgICA/IE5PVEVfSU5TTl9JTkxJTkVfRU5U UlkJCQkgIFwKKyAgICAgICA6IChlbnVtIGluc25fbm90ZSktMSkgCQkJICBcCisgICAgOiAoZW51 bSBpbnNuX25vdGUpLTEpCisgLyogQ3JlYXRlIHBhdHRlcm5zIGZvciBkZWJ1ZyBtYXJrZXJzLiAg VGhlc2UgYW5kIHRoZSBhYm92ZSBhYnN0cmFjdAorQEAgLTE3MDQsOCArMTcwMSw2IEBAIGV4dGVy biBjb25zdCBjaGFyICogY29uc3QgcmVnX25vdGVfbmFtZVsKKyAgICB3b3VsZG4ndCBiZSBhIHBy b2JsZW0uICAqLworICNkZWZpbmUgR0VOX1JUWF9ERUJVR19NQVJLRVJfQkVHSU5fU1RNVF9QQVQo KSBcCisgICBnZW5fcnR4X0RFQlVHX01BUktFUiAoVk9JRG1vZGUpCistI2RlZmluZSBHRU5fUlRY X0RFQlVHX01BUktFUl9JTkxJTkVfRU5UUllfUEFUKCkgXAorLSAgZ2VuX3J0eF9ERUJVR19NQVJL RVIgKEJMS21vZGUpCisgCisgLyogVGhlIFZBUl9MT0NBVElPTiBydHggaW4gYSBERUJVR19JTlNO LiAgKi8KKyAjZGVmaW5lIElOU05fVkFSX0xPQ0FUSU9OKElOU04pIFwKKy0tLSBnY2MvdHJlZS1p bmxpbmUuYwkocmV2aXNpb24gMjU3NTExKQorKysrIGdjYy90cmVlLWlubGluZS5jCShyZXZpc2lv biAyNTc1MDkpCitAQCAtNDYwNSwxMyArNDYwNSw2IEBAIGV4cGFuZF9jYWxsX2lubGluZSAoYmFz aWNfYmxvY2sgYmIsIGdpbXAKKyAJCQlHU0lfTkVXX1NUTVQpOworICAgICB9CisgICBpbml0aWFs aXplX2lubGluZWRfcGFyYW1ldGVycyAoaWQsIHN0bXQsIGZuLCBiYik7CistICBpZiAoZGVidWdf bm9uYmluZF9tYXJrZXJzX3AgJiYgaWQtPmJsb2NrCistICAgICAgJiYgaW5saW5lZF9mdW5jdGlv bl9vdXRlcl9zY29wZV9wIChpZC0+YmxvY2spKQorLSAgICB7CistICAgICAgZ2ltcGxlX3N0bXRf aXRlcmF0b3Igc2kgPSBnc2lfbGFzdF9iYiAoYmIpOworLSAgICAgIGdzaV9pbnNlcnRfYWZ0ZXIg KCZzaSwgZ2ltcGxlX2J1aWxkX2RlYnVnX2lubGluZV9lbnRyeQorLQkJCShpZC0+YmxvY2ssIGlu cHV0X2xvY2F0aW9uKSwgR1NJX05FV19TVE1UKTsKKy0gICAgfQorIAorICAgaWYgKERFQ0xfSU5J VElBTCAoZm4pKQorICAgICB7CistLS0gZ2NjL3Zhci10cmFja2luZy5jCShyZXZpc2lvbiAyNTc1 MTEpCisrKysgZ2NjL3Zhci10cmFja2luZy5jCShyZXZpc2lvbiAyNTc1MDkpCitAQCAtOTk1OSw3 ICs5OTU5LDYgQEAgcmVlbWl0X21hcmtlcl9hc19ub3RlIChydHhfaW5zbiAqaW5zbikKKyAgIHN3 aXRjaCAoa2luZCkKKyAgICAgeworICAgICBjYXNlIE5PVEVfSU5TTl9CRUdJTl9TVE1UOgorLSAg ICBjYXNlIE5PVEVfSU5TTl9JTkxJTkVfRU5UUlk6CisgICAgICAgeworIAlydHhfaW5zbiAqbm90 ZSA9IE5VTEw7CisgCWlmIChjZnVuLT5kZWJ1Z19ub25iaW5kX21hcmtlcnMpCistLS0gZ2NjL2dp bXBsZS5jCShyZXZpc2lvbiAyNTc1MTEpCisrKysgZ2NjL2dpbXBsZS5jCShyZXZpc2lvbiAyNTc1 MDkpCitAQCAtODc0LDI3ICs4NzQsNiBAQCBnaW1wbGVfYnVpbGRfZGVidWdfYmVnaW5fc3RtdCAo dHJlZSBibG9jCisgfQorIAorIAorLS8qIEJ1aWxkIGEgbmV3IEdJTVBMRV9ERUJVR19JTkxJTkVf RU5UUlkgc3RhdGVtZW50IGluIEJMT0NLIGF0CistICAgTE9DQVRJT04uICBUaGUgQkxPQ0sgbGlu a3MgdG8gdGhlIGlubGluZWQgZnVuY3Rpb24uICAqLworLQorLWdkZWJ1ZyAqCistZ2ltcGxlX2J1 aWxkX2RlYnVnX2lubGluZV9lbnRyeSAodHJlZSBibG9jaywgbG9jYXRpb25fdCBsb2NhdGlvbgor LQkJCQkgICAgICBNRU1fU1RBVF9ERUNMKQorLXsKKy0gIGdkZWJ1ZyAqcAorLSAgICA9IGFzX2Eg PGdkZWJ1ZyAqPiAoCistICAgICAgICBnaW1wbGVfYnVpbGRfd2l0aF9vcHNfc3RhdCAoR0lNUExF X0RFQlVHLAorLQkJCQkgICAgKHVuc2lnbmVkKUdJTVBMRV9ERUJVR19JTkxJTkVfRU5UUlksIDAK Ky0JCQkJICAgIFBBU1NfTUVNX1NUQVQpKTsKKy0KKy0gIGdpbXBsZV9zZXRfbG9jYXRpb24gKHAs IGxvY2F0aW9uKTsKKy0gIGdpbXBsZV9zZXRfYmxvY2sgKHAsIGJsb2NrKTsKKy0gIGNmdW4tPmRl YnVnX21hcmtlcl9jb3VudCsrOworLQorLSAgcmV0dXJuIHA7CistfQorLQorLQorIC8qIEJ1aWxk IGEgR0lNUExFX09NUF9DUklUSUNBTCBzdGF0ZW1lbnQuCisgCisgICAgQk9EWSBpcyB0aGUgc2Vx dWVuY2Ugb2Ygc3RhdGVtZW50cyBmb3Igd2hpY2ggb25seSBvbmUgdGhyZWFkIGNhbiBleGVjdXRl LgorLS0tIGdjYy9naW1wbGUuaAkocmV2aXNpb24gMjU3NTExKQorKysrIGdjYy9naW1wbGUuaAko cmV2aXNpb24gMjU3NTA5KQorQEAgLTIwMiw4ICsyMDIsNyBAQCBlbnVtIGdmX21hc2sgeworIGVu dW0gZ2ltcGxlX2RlYnVnX3N1YmNvZGUgeworICAgR0lNUExFX0RFQlVHX0JJTkQgPSAwLAorICAg R0lNUExFX0RFQlVHX1NPVVJDRV9CSU5EID0gMSwKKy0gIEdJTVBMRV9ERUJVR19CRUdJTl9TVE1U ID0gMiwKKy0gIEdJTVBMRV9ERUJVR19JTkxJTkVfRU5UUlkgPSAzCisrICBHSU1QTEVfREVCVUdf QkVHSU5fU1RNVCA9IDIKKyB9OworIAorIC8qIE1hc2tzIGZvciBzZWxlY3RpbmcgYSBwYXNzIGxv Y2FsIGZsYWcgKFBMRikgdG8gd29yayBvbi4gIFRoZXNlCitAQCAtMTQ1NSw3ICsxNDU0LDYgQEAg Z2VoX2Rpc3BhdGNoICpnaW1wbGVfYnVpbGRfZWhfZGlzcGF0Y2ggKAorIGdkZWJ1ZyAqZ2ltcGxl X2J1aWxkX2RlYnVnX2JpbmQgKHRyZWUsIHRyZWUsIGdpbXBsZSAqIENYWF9NRU1fU1RBVF9JTkZP KTsKKyBnZGVidWcgKmdpbXBsZV9idWlsZF9kZWJ1Z19zb3VyY2VfYmluZCAodHJlZSwgdHJlZSwg Z2ltcGxlICogQ1hYX01FTV9TVEFUX0lORk8pOworIGdkZWJ1ZyAqZ2ltcGxlX2J1aWxkX2RlYnVn X2JlZ2luX3N0bXQgKHRyZWUsIGxvY2F0aW9uX3QgQ1hYX01FTV9TVEFUX0lORk8pOworLWdkZWJ1 ZyAqZ2ltcGxlX2J1aWxkX2RlYnVnX2lubGluZV9lbnRyeSAodHJlZSwgbG9jYXRpb25fdCBDWFhf TUVNX1NUQVRfSU5GTyk7CisgZ29tcF9jcml0aWNhbCAqZ2ltcGxlX2J1aWxkX29tcF9jcml0aWNh bCAoZ2ltcGxlX3NlcSwgdHJlZSwgdHJlZSk7CisgZ29tcF9mb3IgKmdpbXBsZV9idWlsZF9vbXBf Zm9yIChnaW1wbGVfc2VxLCBpbnQsIHRyZWUsIHNpemVfdCwgZ2ltcGxlX3NlcSk7CisgZ29tcF9w YXJhbGxlbCAqZ2ltcGxlX2J1aWxkX29tcF9wYXJhbGxlbCAoZ2ltcGxlX3NlcSwgdHJlZSwgdHJl ZSwgdHJlZSk7CitAQCAtNDc4NiwyNSArNDc4NCwxMyBAQCBnaW1wbGVfZGVidWdfYmVnaW5fc3Rt dF9wIChjb25zdCBnaW1wbGUKKyAgIHJldHVybiBmYWxzZTsKKyB9CisgCistLyogUmV0dXJuIHRy dWUgaWYgUyBpcyBhIEdJTVBMRV9ERUJVRyBJTkxJTkVfRU5UUlkgc3RhdGVtZW50LiAgKi8KKy0K Ky1zdGF0aWMgaW5saW5lIGJvb2wKKy1naW1wbGVfZGVidWdfaW5saW5lX2VudHJ5X3AgKGNvbnN0 IGdpbXBsZSAqcykKKy17CistICBpZiAoaXNfZ2ltcGxlX2RlYnVnIChzKSkKKy0gICAgcmV0dXJu IHMtPnN1YmNvZGUgPT0gR0lNUExFX0RFQlVHX0lOTElORV9FTlRSWTsKKy0KKy0gIHJldHVybiBm YWxzZTsKKy19CistCisgLyogUmV0dXJuIHRydWUgaWYgUyBpcyBhIEdJTVBMRV9ERUJVRyBub24t YmluZGluZyBtYXJrZXIgc3RhdGVtZW50LiAgKi8KKyAKKyBzdGF0aWMgaW5saW5lIGJvb2wKKyBn aW1wbGVfZGVidWdfbm9uYmluZF9tYXJrZXJfcCAoY29uc3QgZ2ltcGxlICpzKQorIHsKKyAgIGlm IChpc19naW1wbGVfZGVidWcgKHMpKQorLSAgICByZXR1cm4gcy0+c3ViY29kZSA9PSBHSU1QTEVf REVCVUdfQkVHSU5fU1RNVAorLSAgICAgIHx8IHMtPnN1YmNvZGUgPT0gR0lNUExFX0RFQlVHX0lO TElORV9FTlRSWTsKKysgICAgcmV0dXJuIHMtPnN1YmNvZGUgPT0gR0lNUExFX0RFQlVHX0JFR0lO X1NUTVQ7CisgCisgICByZXR1cm4gZmFsc2U7CisgfQo=