From: Tor Didriksen Date: July 26 2010 10:39am Subject: bzr commit into mysql-next-mr-bugfixing branch (tor.didriksen:3331) Bug#54805 List-Archive: http://lists.mysql.com/commits/114331 X-Bug: 54805 Message-Id: <20100726103943.2635D3592@atum07.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============5399350552717967972==" --===============5399350552717967972== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vZXhwb3J0L2hvbWUvZGlkcmlrL3JlcG8vbmV4dC1tci1iZi1idWc1NDgwNS1w cC8gYmFzZWQgb24gcmV2aWQ6YWxpa0BzdW4uY29tLTIwMTAwNzI2MDg0ODA0LWJqemZtMnd4cXl6 MmVrMm8KCiAzMzMxIFRvciBEaWRyaWtzZW4JMjAxMC0wNy0yNgogICAgICBCdWcgIzU0ODA1IGRl ZmluaXRpb25zIGluIHJlZ2V4L215X3JlZ2V4LmggY29uZmxpY3Qgd2l0aCAvdXNyL2luY2x1ZGUv cmVnZXguaAogICAgICAKICAgICAgVGhlIG15c3FsIHNvdXJjZSBoYXMgaXRzIG93biB2ZXJzaW9u IG9mIHJlZ2NvbXAgZXRjLiBjb21waWxlZCBpbi4KICAgICAgQWxsIHN5bWJvbHMgd2l0aCBsaW5r YWdlIChpLmUuIGdsb2JhbCBmdW5jdGlvbnMpIGhhdmUgYmVlbiByZW5hbWVkCiAgICAgIChhZGRl ZCBteV8gcHJlZml4KSB0byBhdm9pZCBsaW5rYWdlIHByb2JsZW1zLgogICAgICAKICAgICAgVGhp cyBidWdmaXggcmVuYW1lcyBjb21waWxlLXRpbWUgc3ltYm9scyBpbiBhIHNpbWlsYXIgZmFzaGlv biwKICAgICAgUkVHX1NUQVJURU5EID0+IE1ZX1JFR19TVEFSVEVORCBldGMuCiAgICAgQCBjbGll bnQvbXlzcWx0ZXN0LmNjCiAgICAgICAgUmVuYW1lIFJFR194eHggbWFjcm9zIHRvIE1ZX1JFR194 eHgKICAgICBAIG15c3FsLXRlc3Qvci9mdW5jX3JlZ2V4cC5yZXN1bHQKICAgICAgICBBZGQgdGVz dCBjYXNlIHNob3dpbmcgdGhhdCAnXHQnIGlzIG5vdCBjb25zaWRlcmVkIGEgYmxhbmsgYnkgTXlT UUwuCiAgICAgQCBteXNxbC10ZXN0L3QvZnVuY19yZWdleHAudGVzdAogICAgICAgIEFkZCB0ZXN0 IGNhc2Ugc2hvd2luZyB0aGF0ICdcdCcgaXMgbm90IGNvbnNpZGVyZWQgYSBibGFuayBieSBNeVNR TC4KICAgICBAIHJlZ2V4L0NNYWtlTGlzdHMudHh0CiAgICAgICAgQWRkIHRhcmdldCBmb3IgYnVp bGRpbmcgcmVncmVzc2lvbiB0ZXN0IG1haW4gcHJvZ3JhbS4KICAgICAgICBBZGQgdGVzdCB0YXJn ZXRzIGFzIHdlbGwuCiAgICAgQCByZWdleC9lbmdpbmUuYwogICAgICAgIFJlbmFtZSBSRUdfeHh4 IG1hY3JvcyB0byBNWV9SRUdfeHh4CiAgICAgQCByZWdleC9tYWluLmMKICAgICAgICBSZW5hbWUg UkVHX3h4eCBtYWNyb3MgdG8gTVlfUkVHX3h4eAogICAgICAgIEFkZCBnZXRvcHQgZm9yIHdpbmRv d3MuCiAgICAgQCByZWdleC9teV9yZWdleC5oCiAgICAgICAgTW92ZSBpbmNsdXNpb24gb2YgbV9j dHlwZS5oIG91dHNpZGUgb2YgJ2V4dGVybiAiQyInIGRlY2xhcmF0aW9uCiAgICAgICAgKGdhdmUg ZXJyb3I6IHRlbXBsYXRlIHdpdGggQyBsaW5rYWdlKQogICAgICAgIAogICAgICAgIFJlbmFtZSBS RUdfeHh4IG1hY3JvcyB0byBNWV9SRUdfeHh4CiAgICAgICAgCiAgICAgICAgVXNlIG15X3JlZ29m Zl90IHJhdGhlciB0aGFuIHJlZ29mZl90LgogICAgIEAgcmVnZXgvcmVnY29tcC5jCiAgICAgICAg UmVuYW1lIFJFR194eHggbWFjcm9zIHRvIE1ZX1JFR194eHgKICAgICBAIHJlZ2V4L3JlZ2Vycm9y LmMKICAgICAgICBSZW5hbWUgUkVHX3h4eCBtYWNyb3MgdG8gTVlfUkVHX3h4eAogICAgIEAgcmVn ZXgvcmVnZXgyLmgKICAgICAgICBVc2UgbXlfcmVnb2ZmX3QgcmF0aGVyIHRoYW4gcmVnb2ZmX3QK ICAgICBAIHJlZ2V4L3JlZ2V4ZWMuYwogICAgICAgIFJlbmFtZSBSRUdfeHh4IG1hY3JvcyB0byBN WV9SRUdfeHh4CiAgICAgQCByZWdleC90ZXN0cwogICAgICAgIENoYW5nZSBvbmUgdGVzdCBjYXNl IGluIHJlZ3Jlc3Npb24gdGVzdCwKICAgICAgICBhcyBNeVNRTCBkb2VzIG5vdCByZWNvZ25pemUg J1x0JyBhcyBibGFuay4KICAgICBAIHNxbC9pdGVtX2NtcGZ1bmMuY2MKICAgICAgICBSZW5hbWUg UkVHX3h4eCBtYWNyb3MgdG8gTVlfUkVHX3h4eAogICAgIEAgdW5pdHRlc3QvZ3VuaXQvQ01ha2VM aXN0cy50eHQKICAgICAgICBBZGQgdW5pdCB0ZXN0IGZvciBteV9yZWdleC4KICAgICBAIHVuaXR0 ZXN0L2d1bml0L215X3JlZ2V4LXQuY2MKICAgICAgICBOZXcgdW5pdCB0ZXN0LgoKICAgIGFkZGVk OgogICAgICB1bml0dGVzdC9ndW5pdC9teV9yZWdleC10LmNjCiAgICBtb2RpZmllZDoKICAgICAg Y2xpZW50L215c3FsdGVzdC5jYwogICAgICBteXNxbC10ZXN0L3IvZnVuY19yZWdleHAucmVzdWx0 CiAgICAgIG15c3FsLXRlc3QvdC9mdW5jX3JlZ2V4cC50ZXN0CiAgICAgIHJlZ2V4L0NNYWtlTGlz dHMudHh0CiAgICAgIHJlZ2V4L2VuZ2luZS5jCiAgICAgIHJlZ2V4L21haW4uYwogICAgICByZWdl eC9teV9yZWdleC5oCiAgICAgIHJlZ2V4L3JlZ2NvbXAuYwogICAgICByZWdleC9yZWdlcnJvci5j CiAgICAgIHJlZ2V4L3JlZ2V4Mi5oCiAgICAgIHJlZ2V4L3JlZ2V4ZWMuYwogICAgICByZWdleC90 ZXN0cwogICAgICBzcWwvaXRlbV9jbXBmdW5jLmNjCiAgICAgIHVuaXR0ZXN0L2d1bml0L0NNYWtl TGlzdHMudHh0Cj09PSBtb2RpZmllZCBmaWxlICdjbGllbnQvbXlzcWx0ZXN0LmNjJwotLS0gYS9j bGllbnQvbXlzcWx0ZXN0LmNjCTIwMTAtMDctMjQgMTM6NDc6NDIgKzAwMDAKKysrIGIvY2xpZW50 L215c3FsdGVzdC5jYwkyMDEwLTA3LTI2IDEwOjM5OjM4ICswMDAwCkBAIC03NDc4LDE1ICs3NDc4 LDE0IEBAIHZvaWQgcnVuX3F1ZXJ5KHN0cnVjdCBzdF9jb25uZWN0aW9uICpjbiwKIGNoYXIgKnJl X2VwcmludChpbnQgZXJyKQogewogICBzdGF0aWMgY2hhciBlcGJ1ZlsxMDBdOwotICBzaXplX3Qg bGVuPSBteV9yZWdlcnJvcihSRUdfSVRPQXxlcnIsIChteV9yZWdleF90ICopTlVMTCwKLQkJCSAg ZXBidWYsIHNpemVvZihlcGJ1ZikpOworICBzaXplX3QgbGVuPSBteV9yZWdlcnJvcihNWV9SRUdf SVRPQSB8IGVyciwgTlVMTCwgZXBidWYsIHNpemVvZihlcGJ1ZikpOwogICBhc3NlcnQobGVuIDw9 IHNpemVvZihlcGJ1ZikpOwogICByZXR1cm4oZXBidWYpOwogfQogCiB2b2lkIGluaXRfcmVfY29t cChteV9yZWdleF90ICpyZSwgY29uc3QgY2hhciogc3RyKQogewotICBpbnQgZXJyPSBteV9yZWdj b21wKHJlLCBzdHIsIChSRUdfRVhURU5ERUQgfCBSRUdfSUNBU0UgfCBSRUdfTk9TVUIpLAorICBp bnQgZXJyPSBteV9yZWdjb21wKHJlLCBzdHIsIChNWV9SRUdfRVhURU5ERUQgfCBNWV9SRUdfSUNB U0UgfCBNWV9SRUdfTk9TVUIpLAogICAgICAgICAgICAgICAgICAgICAgICZteV9jaGFyc2V0X2xh dGluMSk7CiAgIGlmIChlcnIpCiAgIHsKQEAgLTc1NDIsNyArNzU0MSw3IEBAIGludCBtYXRjaF9y ZShteV9yZWdleF90ICpyZSwgY2hhciAqc3RyKQogCiAgIGlmIChlcnIgPT0gMCkKICAgICByZXR1 cm4gMTsKLSAgZWxzZSBpZiAoZXJyID09IFJFR19OT01BVENIKQorICBlbHNlIGlmIChlcnIgPT0g TVlfUkVHX05PTUFUQ0gpCiAgICAgcmV0dXJuIDA7CiAKICAgewpAQCAtODk0Myw3ICs4OTQyLDcg QEAgaW50IHJlZ19yZXBsYWNlKGNoYXIqKiBidWZfcCwgaW50KiBidWZfbAogICBjaGFyICpidWY9 ICpidWZfcDsKICAgaW50IGxlbjsKICAgaW50IGJ1Zl9sZW4sIG5lZWRfYnVmX2xlbjsKLSAgaW50 IGNmbGFncz0gUkVHX0VYVEVOREVEOworICBpbnQgY2ZsYWdzPSBNWV9SRUdfRVhURU5ERUQ7CiAg IGludCBlcnJfY29kZTsKICAgY2hhciAqcmVzX3AsKnN0cl9wLCpzdHJfZW5kOwogCkBAIC04OTYw LDcgKzg5NTksNyBAQCBpbnQgcmVnX3JlcGxhY2UoY2hhcioqIGJ1Zl9wLCBpbnQqIGJ1Zl9sCiAg IFNFQ1VSRV9SRUdfQlVGCiAKICAgaWYgKGljYXNlKQotICAgIGNmbGFnc3w9IFJFR19JQ0FTRTsK KyAgICBjZmxhZ3N8PSBNWV9SRUdfSUNBU0U7CiAKICAgaWYgKChlcnJfY29kZT0gbXlfcmVnY29t cCgmcixwYXR0ZXJuLGNmbGFncywmbXlfY2hhcnNldF9sYXRpbjEpKSkKICAgewpAQCAtODk4MCwx MCArODk3OSwxMCBAQCBpbnQgcmVnX3JlcGxhY2UoY2hhcioqIGJ1Zl9wLCBpbnQqIGJ1Zl9sCiAg IHsKICAgICAvKiBmaW5kIHRoZSBtYXRjaCAqLwogICAgIGVycl9jb2RlPSBteV9yZWdleGVjKCZy LHN0cl9wLCByLnJlX25zdWIrMSwgc3VicywKLSAgICAgICAgICAgICAgICAgICAgICAgICAoc3Ry X3AgPT0gc3RyaW5nKSA/IFJFR19OT1RCT0wgOiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAoc3RyX3AgPT0gc3RyaW5nKSA/IE1ZX1JFR19OT1RCT0wgOiAwKTsKIAogICAgIC8qIGlmIHJl Z3VsYXIgZXhwcmVzc2lvbiBlcnJvciAoZWcuIGJhZCBzeW50YXgsIG9yIG91dCBvZiBtZW1vcnkp ICovCi0gICAgaWYgKGVycl9jb2RlICYmIGVycl9jb2RlICE9IFJFR19OT01BVENIKQorICAgIGlm IChlcnJfY29kZSAmJiBlcnJfY29kZSAhPSBNWV9SRUdfTk9NQVRDSCkKICAgICB7CiAgICAgICBj aGVja19yZWdlcnIoJnIsZXJyX2NvZGUpOwogICAgICAgbXlfcmVnZnJlZSgmcik7CkBAIC05MDE2 LDcgKzkwMTUsNyBAQCBpbnQgcmVnX3JlcGxhY2UoY2hhcioqIGJ1Zl9wLCBpbnQqIGJ1Zl9sCiAg ICAgICAgIC8qIGZvdW5kIGEgdmFsaWQgYmFja19yZWYgKGVnLiBcMSkqLwogICAgICAgICBpZiAo YmFja19yZWZfbnVtID49IDAgJiYgYmFja19yZWZfbnVtIDw9IChpbnQpci5yZV9uc3ViKQogICAg ICAgICB7Ci0gICAgICAgICAgcmVnb2ZmX3Qgc3RhcnRfb2ZmLCBlbmRfb2ZmOworICAgICAgICAg IG15X3JlZ29mZl90IHN0YXJ0X29mZiwgZW5kX29mZjsKICAgICAgICAgICBpZiAoKHN0YXJ0X29m Zj1zdWJzW2JhY2tfcmVmX251bV0ucm1fc28pID4gLTEgJiYKICAgICAgICAgICAgICAgKGVuZF9v ZmY9c3Vic1tiYWNrX3JlZl9udW1dLnJtX2VvKSA+IC0xKQogICAgICAgICAgIHsKQEAgLTkwNTks NyArOTA1OCw3IEBAIGludCByZWdfcmVwbGFjZShjaGFyKiogYnVmX3AsIGludCogYnVmX2wKIAog ICAgICAgICBpZiAoYmFja19yZWZfbnVtID49IDAgJiYgYmFja19yZWZfbnVtIDw9IChpbnQpci5y ZV9uc3ViKQogICAgICAgICB7Ci0gICAgICAgICAgcmVnb2ZmX3Qgc3RhcnRfb2ZmLCBlbmRfb2Zm OworICAgICAgICAgIG15X3JlZ29mZl90IHN0YXJ0X29mZiwgZW5kX29mZjsKICAgICAgICAgICBp ZiAoKHN0YXJ0X29mZj1zdWJzW2JhY2tfcmVmX251bV0ucm1fc28pID4gLTEgJiYKICAgICAgICAg ICAgICAgKGVuZF9vZmY9c3Vic1tiYWNrX3JlZl9udW1dLnJtX2VvKSA+IC0xKQogICAgICAgICAg IHsKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3IvZnVuY19yZWdleHAucmVzdWx0Jwot LS0gYS9teXNxbC10ZXN0L3IvZnVuY19yZWdleHAucmVzdWx0CTIwMDktMTAtMTkgMTE6MTM6MjYg KzAwMDAKKysrIGIvbXlzcWwtdGVzdC9yL2Z1bmNfcmVnZXhwLnJlc3VsdAkyMDEwLTA3LTI2IDEw OjM5OjM4ICswMDAwCkBAIC0xNDUsMyArMTQ1LDE1IEBAIGEKIERFQUxMT0NBVEUgUFJFUEFSRSBz dG10MTsKIERST1AgVEFCTEUgdDE7CiBFbmQgb2YgNS4xIHRlc3RzCitTRUxFQ1QgJyAnICBSRUdF WFAgJ1tbOmJsYW5rOl1dJzsKKycgJyAgUkVHRVhQICdbWzpibGFuazpdXScKKzEKK1NFTEVDVCAn XHQnIFJFR0VYUCAnW1s6Ymxhbms6XV0nOworJ1x0JyBSRUdFWFAgJ1tbOmJsYW5rOl1dJworMAor U0VMRUNUICcgJyAgUkVHRVhQICdbWzpzcGFjZTpdXSc7CisnICcgIFJFR0VYUCAnW1s6c3BhY2U6 XV0nCisxCitTRUxFQ1QgJ1x0JyBSRUdFWFAgJ1tbOnNwYWNlOl1dJzsKKydcdCcgUkVHRVhQICdb WzpzcGFjZTpdXScKKzEKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3QvZnVuY19yZWdl eHAudGVzdCcKLS0tIGEvbXlzcWwtdGVzdC90L2Z1bmNfcmVnZXhwLnRlc3QJMjAwOC0wOS0wNSAw ODozNjowMiArMDAwMAorKysgYi9teXNxbC10ZXN0L3QvZnVuY19yZWdleHAudGVzdAkyMDEwLTA3 LTI2IDEwOjM5OjM4ICswMDAwCkBAIC05MiwzICs5MiwxNyBAQCBEUk9QIFRBQkxFIHQxOwogCiAK IC0tZWNobyBFbmQgb2YgNS4xIHRlc3RzCisKKyMKKyMgQnVnICM1NDgwNSBkZWZpbml0aW9ucyBp biByZWdleC9teV9yZWdleC5oIGNvbmZsaWN0IHdpdGggL3Vzci9pbmNsdWRlL3JlZ2V4LmgKKyMK KyMgVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgJ1x0JyBpcyByZWNvZ25pemVkIGFzIHNwYWNlLCBi dXQgbm90IGFzIGJsYW5rLgorIyBUaGlzIGlzICpub3QqIGFjY29yZGluZyB0byB0aGUgUE9TSVgg c3RhbmRhcmQsIGJ1dCBzZWVtcyB0byBoYXZlIGJlZW4gTXlTUUwKKyMgYmVoYXZpb3VyIGV2ZXIg c2luY2UgcmVndWxhciBleHByZXNzaW9ucyB3ZXJlIGludHJvZHVjZWQuCisjIFNlZTogQnVnICM1 NTQyNyBSRUdFWFAgZG9lcyBub3QgcmVjb2duaXplICdcdCcgYXMgWzpibGFuazpdCisjCitTRUxF Q1QgJyAnICBSRUdFWFAgJ1tbOmJsYW5rOl1dJzsKK1NFTEVDVCAnXHQnIFJFR0VYUCAnW1s6Ymxh bms6XV0nOworCitTRUxFQ1QgJyAnICBSRUdFWFAgJ1tbOnNwYWNlOl1dJzsKK1NFTEVDVCAnXHQn IFJFR0VYUCAnW1s6c3BhY2U6XV0nOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3JlZ2V4L0NNYWtlTGlz dHMudHh0JwotLS0gYS9yZWdleC9DTWFrZUxpc3RzLnR4dAkyMDEwLTA3LTAzIDIzOjE3OjAzICsw MDAwCisrKyBiL3JlZ2V4L0NNYWtlTGlzdHMudHh0CTIwMTAtMDctMjYgMTA6Mzk6MzggKzAwMDAK QEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAwNiBNeVNRTCBBQgorIyBDb3B5cmln aHQgKGMpIDIwMDAsIDIwMTAsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdo dHMgcmVzZXJ2ZWQuCiAjIAogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMTgsMyAr MTgsMTAgQEAgSU5DTFVERV9ESVJFQ1RPUklFUygke0NNQUtFX1NPVVJDRV9ESVJ9LwogCiBTRVQo UkVHRVhfU09VUkNFUyByZWdjb21wLmMgcmVnZXJyb3IuYyByZWdleGVjLmMgcmVnZnJlZS5jIHJl Z2luaXQuYykKIEFERF9DT05WRU5JRU5DRV9MSUJSQVJZKHJlZ2V4ICR7UkVHRVhfU09VUkNFU30p CisKK0FERF9FWEVDVVRBQkxFKHJlIG1haW4uYyBzcGxpdC5jIGRlYnVnLmMpCitUQVJHRVRfTElO S19MSUJSQVJJRVMocmUgcmVnZXggc3RyaW5ncykKKworQUREX1RFU1QocmVnZXgxIHJlICAgICAt aSR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS90ZXN0cykKK0FERF9URVNUKHJlZ2V4MiByZSAt ZWwgLWkke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vdGVzdHMpCitBRERfVEVTVChyZWdleDMg cmUgLWVyIC1pJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3Rlc3RzKQoKPT09IG1vZGlmaWVk IGZpbGUgJ3JlZ2V4L2VuZ2luZS5jJwotLS0gYS9yZWdleC9lbmdpbmUuYwkyMDA1LTA5LTI5IDAx OjIwOjMxICswMDAwCisrKyBiL3JlZ2V4L2VuZ2luZS5jCTIwMTAtMDctMjYgMTA6Mzk6MzggKzAw MDAKQEAgLTUwLDcgKzUwLDcgQEAgc3RydWN0IG1hdGNoIHsKICNpZmRlZiBSRURFQlVHCiAjZGVm aW5lCVNQKHQsIHMsIGMpCXByaW50KG0sIHQsIHMsIGMsIHN0ZG91dCkKICNkZWZpbmUJQVQodCwg cDEsIHAyLCBzMSwgczIpCWF0KG0sIHQsIHAxLCBwMiwgczEsIHMyKQotI2RlZmluZQlOT1RFKHN0 cikJeyBpZiAobS0+ZWZsYWdzJlJFR19UUkFDRSkgcHJpbnRmKCI9JXNcbiIsIChzdHIpKTsgfQor I2RlZmluZQlOT1RFKHN0cikJeyBpZiAobS0+ZWZsYWdzJk1ZX1JFR19UUkFDRSkgcHJpbnRmKCI9 JXNcbiIsIChzdHIpKTsgfQogI2Vsc2UKICNkZWZpbmUJU1AodCwgcywgYykJLyogbm90aGluZyAq LwogI2RlZmluZQlBVCh0LCBwMSwgcDIsIHMxLCBzMikJLyogbm90aGluZyAqLwpAQCAtNjIsNyAr NjIsNyBAQCBzdHJ1Y3QgbWF0Y2ggewogID09IHN0YXRpYyBpbnQgbWF0Y2hlcihyZWdpc3RlciBz dHJ1Y3QgcmVfZ3V0cyAqZywgY2hhciAqc3RyaW5nLCBcCiAgPT0Jc2l6ZV90IG5tYXRjaCwgcmVn bWF0Y2hfdCBwbWF0Y2hbXSwgaW50IGVmbGFncyk7CiAgKi8KLXN0YXRpYyBpbnQJCQkvKiAwIHN1 Y2Nlc3MsIFJFR19OT01BVENIIGZhaWx1cmUgKi8KK3N0YXRpYyBpbnQJCQkvKiAwIHN1Y2Nlc3Ms IE1ZX1JFR19OT01BVENIIGZhaWx1cmUgKi8KIG1hdGNoZXIoY2hhcnNldCxnLCBzdHIsIG5tYXRj aCwgcG1hdGNoLCBlZmxhZ3MpCiBDSEFSU0VUX0lORk8gKmNoYXJzZXQ7CiByZWdpc3RlciBzdHJ1 Y3QgcmVfZ3V0cyAqZzsKQEAgLTgyLDkgKzgyLDkgQEAgaW50IGVmbGFnczsKIAljaGFyICpzdG9w OwogCiAJLyogc2ltcGxpZnkgdGhlIHNpdHVhdGlvbiB3aGVyZSBwb3NzaWJsZSAqLwotCWlmIChn LT5jZmxhZ3MmUkVHX05PU1VCKQorCWlmIChnLT5jZmxhZ3MmTVlfUkVHX05PU1VCKQogCQlubWF0 Y2ggPSAwOwotCWlmIChlZmxhZ3MmUkVHX1NUQVJURU5EKSB7CisJaWYgKGVmbGFncyZNWV9SRUdf U1RBUlRFTkQpIHsKIAkJc3RhcnQgPSBzdHIgKyBwbWF0Y2hbMF0ucm1fc287CiAJCXN0b3AgPSBz dHIgKyBwbWF0Y2hbMF0ucm1fZW87CiAJfSBlbHNlIHsKQEAgLTkyLDcgKzkyLDcgQEAgaW50IGVm bGFnczsKIAkJc3RvcCA9IHN0YXJ0ICsgc3RybGVuKHN0YXJ0KTsKIAl9CiAJaWYgKHN0b3AgPCBz dGFydCkKLQkJcmV0dXJuKFJFR19JTlZBUkcpOworCQlyZXR1cm4oTVlfUkVHX0lOVkFSRyk7CiAK IAkvKiBwcmVzY3JlZW5pbmc7IHRoaXMgZG9lcyB3b25kZXJzIGZvciB0aGlzIHJhdGhlciBzbG93 IGNvZGUgKi8KIAlpZiAoZy0+bXVzdCAhPSBOVUxMKSB7CkBAIC0xMDEsNyArMTAxLDcgQEAgaW50 IGVmbGFnczsKIAkJCQltZW1jbXAoZHAsIGctPm11c3QsIChzaXplX3QpZy0+bWxlbikgPT0gMCkK IAkJCQlicmVhazsKIAkJaWYgKGRwID09IHN0b3ApCQkvKiB3ZSBkaWRuJ3QgZmluZCBnLT5tdXN0 ICovCi0JCQlyZXR1cm4oUkVHX05PTUFUQ0gpOworCQkJcmV0dXJuKE1ZX1JFR19OT01BVENIKTsK IAl9CiAKIAkvKiBtYXRjaCBzdHJ1Y3Qgc2V0dXAgKi8KQEAgLTEyOCw3ICsxMjgsNyBAQCBpbnQg ZWZsYWdzOwogCQkgIGlmIChtLT5sYXN0cG9zICE9IE5VTEwpCiAJCSAgICBmcmVlKChjaGFyICop bS0+bGFzdHBvcyk7CiAJCSAgU1RBVEVURUFSRE9XTihtKTsKLQkJICByZXR1cm4oUkVHX05PTUFU Q0gpOworCQkgIHJldHVybihNWV9SRUdfTk9NQVRDSCk7CiAJCX0KIAkJaWYgKG5tYXRjaCA9PSAw ICYmICFnLT5iYWNrcmVmcykKIAkJCWJyZWFrOwkJLyogbm8gZnVydGhlciBpbmZvIG5lZWRlZCAq LwpAQCAtMTU0LDExICsxNTQsMTEgQEAgaW50IGVmbGFnczsKIAkJICAJaWYgKG0tPmxhc3Rwb3Mg IT0gTlVMTCkKIAkJICAgIAlmcmVlKChjaGFyICopbS0+bGFzdHBvcyk7CiAJCQlTVEFURVRFQVJE T1dOKG0pOwotCQkJcmV0dXJuKFJFR19FU1BBQ0UpOworCQkJcmV0dXJuKE1ZX1JFR19FU1BBQ0Up OwogCQl9CiAJCWZvciAoaSA9IDE7IGkgPD0gbS0+Zy0+bnN1YjsgaSsrKQogCQkJbS0+cG1hdGNo W2ldLnJtX3NvID0gbS0+cG1hdGNoW2ldLnJtX2VvID0gLTE7Ci0JCWlmICghZy0+YmFja3JlZnMg JiYgIShtLT5lZmxhZ3MmUkVHX0JBQ0tSKSkgeworCQlpZiAoIWctPmJhY2tyZWZzICYmICEobS0+ ZWZsYWdzJk1ZX1JFR19CQUNLUikpIHsKIAkJCU5PVEUoImRpc3NlY3RpbmciKTsKIAkJCWRwID0g ZGlzc2VjdChjaGFyc2V0LCBtLCBtLT5jb2xkcCwgZW5kcCwgZ2YsIGdsKTsKIAkJfSBlbHNlIHsK QEAgLTE2OCw3ICsxNjgsNyBAQCBpbnQgZWZsYWdzOwogCQkJaWYgKGctPm5wbHVzID4gMCAmJiBt LT5sYXN0cG9zID09IE5VTEwpIHsKIAkJCQlmcmVlKG0tPnBtYXRjaCk7CiAJCQkJU1RBVEVURUFS RE9XTihtKTsKLQkJCQlyZXR1cm4oUkVHX0VTUEFDRSk7CisJCQkJcmV0dXJuKE1ZX1JFR19FU1BB Q0UpOwogCQkJfQogCQkJTk9URSgiYmFja3JlZiBkaXNzZWN0Iik7CiAJCQlkcCA9IGJhY2tyZWYo Y2hhcnNldCwgbSwgbS0+Y29sZHAsIGVuZHAsIGdmLCBnbCwgKHNvcG5vKTApOwpAQCAtNDQ0LDcg KzQ0NCw3IEBAIHNvcG5vIGxldjsJCQkvKiBQTFVTIG5lc3RpbmcgbGV2ZWwgKi8KIAlyZWdpc3Rl ciBzaXplX3QgbGVuOwogCXJlZ2lzdGVyIGludCBoYXJkOwogCXJlZ2lzdGVyIHNvcCBzOwotCXJl Z2lzdGVyIHJlZ29mZl90IG9mZnNhdmU7CisJcmVnaXN0ZXIgbXlfcmVnb2ZmX3Qgb2Zmc2F2ZTsK IAlyZWdpc3RlciBjc2V0ICpjczsKIAogCUFUKCJiYWNrIiwgc3RhcnQsIHN0b3AsIHN0YXJ0c3Qs IHN0b3BzdCk7CkBAIC00NjksMjUgKzQ2OSwyNSBAQCBzb3BubyBsZXY7CQkJLyogUExVUyBuZXN0 aW5nIGxldmVsICovCiAJCQkJcmV0dXJuKE5VTEwpOwogCQkJYnJlYWs7CiAJCWNhc2UgT0JPTDoK LQkJCWlmICggKHNwID09IG0tPmJlZ2lucCAmJiAhKG0tPmVmbGFncyZSRUdfTk9UQk9MKSkgfHwK KwkJCWlmICggKHNwID09IG0tPmJlZ2lucCAmJiAhKG0tPmVmbGFncyZNWV9SRUdfTk9UQk9MKSkg fHwKIAkJCQkJKHNwIDwgbS0+ZW5kcCAmJiAqKHNwLTEpID09ICdcbicgJiYKLQkJCQkJCShtLT5n LT5jZmxhZ3MmUkVHX05FV0xJTkUpKSApCisJCQkJCQkobS0+Zy0+Y2ZsYWdzJk1ZX1JFR19ORVdM SU5FKSkgKQogCQkJCXsgLyogeWVzICovIH0KIAkJCWVsc2UKIAkJCQlyZXR1cm4oTlVMTCk7CiAJ CQlicmVhazsKIAkJY2FzZSBPRU9MOgotCQkJaWYgKCAoc3AgPT0gbS0+ZW5kcCAmJiAhKG0tPmVm bGFncyZSRUdfTk9URU9MKSkgfHwKKwkJCWlmICggKHNwID09IG0tPmVuZHAgJiYgIShtLT5lZmxh Z3MmTVlfUkVHX05PVEVPTCkpIHx8CiAJCQkJCShzcCA8IG0tPmVuZHAgJiYgKnNwID09ICdcbicg JiYKLQkJCQkJCShtLT5nLT5jZmxhZ3MmUkVHX05FV0xJTkUpKSApCisJCQkJCQkobS0+Zy0+Y2Zs YWdzJk1ZX1JFR19ORVdMSU5FKSkgKQogCQkJCXsgLyogeWVzICovIH0KIAkJCWVsc2UKIAkJCQly ZXR1cm4oTlVMTCk7CiAJCQlicmVhazsKIAkJY2FzZSBPQk9XOgotCQkJaWYgKCggKHNwID09IG0t PmJlZ2lucCAmJiAhKG0tPmVmbGFncyZSRUdfTk9UQk9MKSkgfHwKKwkJCWlmICgoIChzcCA9PSBt LT5iZWdpbnAgJiYgIShtLT5lZmxhZ3MmTVlfUkVHX05PVEJPTCkpIHx8CiAJCQkJCShzcCA8IG0t PmVuZHAgJiYgKihzcC0xKSA9PSAnXG4nICYmCi0JCQkJCQkobS0+Zy0+Y2ZsYWdzJlJFR19ORVdM SU5FKSkgfHwKKwkJCQkJCShtLT5nLT5jZmxhZ3MmTVlfUkVHX05FV0xJTkUpKSB8fAogCQkJCQko c3AgPiBtLT5iZWdpbnAgJiYKIAkJCQkJCQkhSVNXT1JEKGNoYXJzZXQsKihzcC0xKSkpICkgJiYK IAkJCQkJKHNwIDwgbS0+ZW5kcCAmJiBJU1dPUkQoY2hhcnNldCwqc3ApKSApCkBAIC00OTYsOSAr NDk2LDkgQEAgc29wbm8gbGV2OwkJCS8qIFBMVVMgbmVzdGluZyBsZXZlbCAqLwogCQkJCXJldHVy bihOVUxMKTsKIAkJCWJyZWFrOwogCQljYXNlIE9FT1c6Ci0JCQlpZiAoKCAoc3AgPT0gbS0+ZW5k cCAmJiAhKG0tPmVmbGFncyZSRUdfTk9URU9MKSkgfHwKKwkJCWlmICgoIChzcCA9PSBtLT5lbmRw ICYmICEobS0+ZWZsYWdzJk1ZX1JFR19OT1RFT0wpKSB8fAogCQkJCQkoc3AgPCBtLT5lbmRwICYm ICpzcCA9PSAnXG4nICYmCi0JCQkJCQkobS0+Zy0+Y2ZsYWdzJlJFR19ORVdMSU5FKSkgfHwKKwkJ CQkJCShtLT5nLT5jZmxhZ3MmTVlfUkVHX05FV0xJTkUpKSB8fAogCQkJCQkoc3AgPCBtLT5lbmRw ICYmICFJU1dPUkQoY2hhcnNldCwqc3ApKSApICYmCiAJCQkJCShzcCA+IG0tPmJlZ2lucCAmJiBJ U1dPUkQoY2hhcnNldCwqKHNwLTEpKSkgKQogCQkJCXsgLyogeWVzICovIH0KQEAgLTY2NSwxMyAr NjY1LDEzIEBAIHNvcG5vIHN0b3BzdDsKIAkJLyogaXMgdGhlcmUgYW4gRU9MIGFuZC9vciBCT0wg YmV0d2VlbiBsYXN0YyBhbmQgYz8gKi8KIAkJZmxhZ2NoID0gJ1wwJzsKIAkJaSA9IDA7Ci0JCWlm ICggKGxhc3RjID09ICdcbicgJiYgbS0+Zy0+Y2ZsYWdzJlJFR19ORVdMSU5FKSB8fAotCQkJCShs YXN0YyA9PSBPVVQgJiYgIShtLT5lZmxhZ3MmUkVHX05PVEJPTCkpICkgeworCQlpZiAoIChsYXN0 YyA9PSAnXG4nICYmIG0tPmctPmNmbGFncyZNWV9SRUdfTkVXTElORSkgfHwKKwkJCQkobGFzdGMg PT0gT1VUICYmICEobS0+ZWZsYWdzJk1ZX1JFR19OT1RCT0wpKSApIHsKIAkJCWZsYWdjaCA9IEJP TDsKIAkJCWkgPSBtLT5nLT5uYm9sOwogCQl9Ci0JCWlmICggKGMgPT0gJ1xuJyAmJiBtLT5nLT5j ZmxhZ3MmUkVHX05FV0xJTkUpIHx8Ci0JCQkJKGMgPT0gT1VUICYmICEobS0+ZWZsYWdzJlJFR19O T1RFT0wpKSApIHsKKwkJaWYgKCAoYyA9PSAnXG4nICYmIG0tPmctPmNmbGFncyZNWV9SRUdfTkVX TElORSkgfHwKKwkJCQkoYyA9PSBPVVQgJiYgIShtLT5lZmxhZ3MmTVlfUkVHX05PVEVPTCkpICkg ewogCQkJZmxhZ2NoID0gKGZsYWdjaCA9PSBCT0wpID8gQk9MRU9MIDogRU9MOwogCQkJaSArPSBt LT5nLT5uZW9sOwogCQl9CkBAIC03NTUsMTMgKzc1NSwxMyBAQCBzb3BubyBzdG9wc3Q7CiAJCS8q IGlzIHRoZXJlIGFuIEVPTCBhbmQvb3IgQk9MIGJldHdlZW4gbGFzdGMgYW5kIGM/ICovCiAJCWZs YWdjaCA9ICdcMCc7CiAJCWkgPSAwOwotCQlpZiAoIChsYXN0YyA9PSAnXG4nICYmIG0tPmctPmNm bGFncyZSRUdfTkVXTElORSkgfHwKLQkJCQkobGFzdGMgPT0gT1VUICYmICEobS0+ZWZsYWdzJlJF R19OT1RCT0wpKSApIHsKKwkJaWYgKCAobGFzdGMgPT0gJ1xuJyAmJiBtLT5nLT5jZmxhZ3MmTVlf UkVHX05FV0xJTkUpIHx8CisJCQkJKGxhc3RjID09IE9VVCAmJiAhKG0tPmVmbGFncyZNWV9SRUdf Tk9UQk9MKSkgKSB7CiAJCQlmbGFnY2ggPSBCT0w7CiAJCQlpID0gbS0+Zy0+bmJvbDsKIAkJfQot CQlpZiAoIChjID09ICdcbicgJiYgbS0+Zy0+Y2ZsYWdzJlJFR19ORVdMSU5FKSB8fAotCQkJCShj ID09IE9VVCAmJiAhKG0tPmVmbGFncyZSRUdfTk9URU9MKSkgKSB7CisJCWlmICggKGMgPT0gJ1xu JyAmJiBtLT5nLT5jZmxhZ3MmTVlfUkVHX05FV0xJTkUpIHx8CisJCQkJKGMgPT0gT1VUICYmICEo bS0+ZWZsYWdzJk1ZX1JFR19OT1RFT0wpKSApIHsKIAkJCWZsYWdjaCA9IChmbGFnY2ggPT0gQk9M KSA/IEJPTEVPTCA6IEVPTDsKIAkJCWkgKz0gbS0+Zy0+bmVvbDsKIAkJfQpAQCAtOTU0LDcgKzk1 NCw3IEBAIEZJTEUgKmQ7CiAJcmVnaXN0ZXIgaW50IGZpcnN0ID0gMTsKIAljaGFyIGJ1ZlsxMF07 CiAKLQlpZiAoIShtLT5lZmxhZ3MmUkVHX1RSQUNFKSkKKwlpZiAoIShtLT5lZmxhZ3MmTVlfUkVH X1RSQUNFKSkKIAkJcmV0dXJuOwogCiAJZnByaW50ZihkLCAiJXMiLCBjYXB0aW9uKTsKQEAgLTk4 NSw3ICs5ODUsNyBAQCBzb3BubyBzdGFydHN0Owogc29wbm8gc3RvcHN0OwogewogCWNoYXIgYnVm WzEwXTsKLQlpZiAoIShtLT5lZmxhZ3MmUkVHX1RSQUNFKSkKKwlpZiAoIShtLT5lZmxhZ3MmTVlf UkVHX1RSQUNFKSkKIAkJcmV0dXJuOwogCiAJcHJpbnRmKCIlcyAlcy0iLCB0aXRsZSwgcHJpbnRj aGFyKCpzdGFydCxidWYpKTsKCj09PSBtb2RpZmllZCBmaWxlICdyZWdleC9tYWluLmMnCi0tLSBh L3JlZ2V4L21haW4uYwkyMDA1LTA5LTI5IDAxOjIwOjMxICswMDAwCisrKyBiL3JlZ2V4L21haW4u YwkyMDEwLTA3LTI2IDEwOjM5OjM4ICswMDAwCkBAIC0xMSwxNSArMTEsNDUgQEAgaW50IGRlYnVn ID0gMDsKIGludCBsaW5lID0gMDsKIGludCBzdGF0dXMgPSAwOwogCi1pbnQgY29wdHMgPSBSRUdf RVhURU5ERUQ7CitpbnQgY29wdHMgPSBNWV9SRUdfRVhURU5ERUQ7CiBpbnQgZW9wdHMgPSAwOwot cmVnb2ZmX3Qgc3RhcnRvZmYgPSAwOwotcmVnb2ZmX3QgZW5kb2ZmID0gMDsKK215X3JlZ29mZl90 IHN0YXJ0b2ZmID0gMDsKK215X3JlZ29mZl90IGVuZG9mZiA9IDA7CiAKIAogZXh0ZXJuIGludCBz cGxpdCgpOwogZXh0ZXJuIHZvaWQgcmVncHJpbnQoKTsKIAorCisjaWZkZWYgX19XSU5fXworY2hh ciAqb3B0YXJnPSAiIjsKK2ludCBvcHRpbmQ9IDE7CitpbnQgb3B0ZXJyOworCisvKiBBICh2ZXJ5 KSBzaW1wbGlmaWVkIHZlcnNpb24gb2YgZ2V0b3B0LCBlbm91Z2ggdG8gcnVuIHRoZSByZWdpc3Rl cmVkIHRlc3RzLiAqLworaW50IGdldG9wdChpbnQgYXJnYywgY2hhciAqYXJndltdLCBjb25zdCBj aGFyICpvcHRzdHJpbmcpCit7CisgIGNoYXIgKm9wdD0gTlVMTDsKKyAgaW50IHJldHZhbD0gLTE7 CisgIGlmIChvcHRpbmQgPj0gYXJnYykKKyAgICByZXR1cm4gcmV0dmFsOworCisgIG9wdD0gYXJn dltvcHRpbmRdOworICBpZiAoKm9wdCAhPSAnLScpCisgICAgcmV0dXJuIHJldHZhbDsKKworICBy ZXR2YWw9ICoob3B0KzEpOworICBpZiAoKihvcHQrMSkgJiYgKihvcHQrMikpCisgICAgb3B0YXJn PSBvcHQgKyAyOworICBlbHNlCisgICAgb3B0YXJnPSAiIjsKKworICArK29wdGluZDsKKyAgcmV0 dXJuIHJldHZhbDsKK30KKyNlbmRpZgorCisKIC8qCiAgLSBtYWluIC0gZG8gdGhlIHNpbXBsZSBj YXNlLCBoYW5kIG9mZiB0byByZWdyZXNzKCkgZm9yIHJlZ3Jlc3Npb24KICAqLwpAQCAtMzYsMTIg KzY2LDEzIEBAIGNoYXIgKmFyZ3ZbXTsKIAlpbnQgYzsKIAlpbnQgZXJyZmxnID0gMDsKIAlyZWdp c3RlciBpbnQgaTsKKyAgICAgICAgY2hhciAqaW5wdXRfZmlsZV9uYW1lPSBOVUxMOwogCWV4dGVy biBpbnQgb3B0aW5kOwogCWV4dGVybiBjaGFyICpvcHRhcmc7CiAKIAlwcm9nbmFtZSA9IGFyZ3Zb MF07CiAKLQl3aGlsZSAoKGMgPSBnZXRvcHQoYXJnYywgYXJndiwgImM6ZTpTOkU6eCIpKSAhPSBF T0YpCisJd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJjOmU6aTpTOkU6eCIpKSAhPSBF T0YpCiAJCXN3aXRjaCAoYykgewogCQljYXNlICdjJzoJLyogY29tcGlsZSBvcHRpb25zICovCiAJ CQljb3B0cyA9IG9wdGlvbnMoJ2MnLCBvcHRhcmcpOwpAQCAtNDksMTEgKzgwLDE0IEBAIGNoYXIg KmFyZ3ZbXTsKIAkJY2FzZSAnZSc6CS8qIGV4ZWN1dGUgb3B0aW9ucyAqLwogCQkJZW9wdHMgPSBv cHRpb25zKCdlJywgb3B0YXJnKTsKIAkJCWJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ2kn OgorICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfZmlsZV9uYW1lPSBvcHRhcmc7CisJCQli cmVhazsKIAkJY2FzZSAnUyc6CS8qIHN0YXJ0IG9mZnNldCAqLwotCQkJc3RhcnRvZmYgPSAocmVn b2ZmX3QpYXRvaShvcHRhcmcpOworCQkJc3RhcnRvZmYgPSAobXlfcmVnb2ZmX3QpYXRvaShvcHRh cmcpOwogCQkJYnJlYWs7CiAJCWNhc2UgJ0UnOgkvKiBlbmQgb2Zmc2V0ICovCi0JCQllbmRvZmYg PSAocmVnb2ZmX3QpYXRvaShvcHRhcmcpOworCQkJZW5kb2ZmID0gKG15X3JlZ29mZl90KWF0b2ko b3B0YXJnKTsKIAkJCWJyZWFrOwogCQljYXNlICd4JzoJLyogRGVidWdnaW5nLiAqLwogCQkJZGVi dWcrKzsKQEAgLTY1LDE1ICs5OSwyOCBAQCBjaGFyICphcmd2W107CiAJCX0KIAlpZiAoZXJyZmxn KSB7CiAJCWZwcmludGYoc3RkZXJyLCAidXNhZ2U6ICVzICIsIHByb2duYW1lKTsKLQkJZnByaW50 ZihzdGRlcnIsICJbLWMgY29wdF1bLUNdWy1kXSBbcmVdXG4iKTsKKwkJZnByaW50ZihzdGRlcnIs CisgICAgICAgICAgICAgICAgICAgICAgICAiWy1jIGNvcHRdWy1lIGVvcHRdWy1pIGZpbGVuYW1l XVstU11bLUVdWy14XSBbcmVdXG4iKTsKIAkJZXhpdCgyKTsKIAl9CiAKLQlpZiAob3B0aW5kID49 IGFyZ2MpIHsKKwlpZiAob3B0aW5kID49IGFyZ2MgJiYgIWlucHV0X2ZpbGVfbmFtZSkgewogCQly ZWdyZXNzKHN0ZGluKTsKIAkJZXhpdChzdGF0dXMpOwogCX0KIAorICAgICAgICBpZiAoaW5wdXRf ZmlsZV9uYW1lKSB7CisgICAgICAgICAgRklMRSAqaW5wdXRfZmlsZT0gZm9wZW4oaW5wdXRfZmls ZV9uYW1lLCAiciIpOworICAgICAgICAgIGlmICghaW5wdXRfZmlsZSkgeworICAgICAgICAgICAg ZnByaW50ZihzdGRlcnIsICJDb3VsZCBub3Qgb3BlbiAnJXMnIDogIiwgaW5wdXRfZmlsZV9uYW1l KTsKKyAgICAgICAgICAgIHBlcnJvcihOVUxMKTsKKyAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlM VVJFKTsKKyAgICAgICAgICB9CisgICAgICAgICAgcmVncmVzcyhpbnB1dF9maWxlKTsKKyAgICAg ICAgICBmY2xvc2UoaW5wdXRfZmlsZSk7CisgICAgICAgICAgZXhpdChzdGF0dXMpOworICAgICAg ICB9CisKIAllcnIgPSBteV9yZWdjb21wKCZyZSwgYXJndltvcHRpbmQrK10sIGNvcHRzLCAmbXlf Y2hhcnNldF9sYXRpbjEpOwogCWlmIChlcnIpIHsKIAkJbGVuID0gbXlfcmVnZXJyb3IoZXJyLCAm cmUsIGVyYnVmLCBzaXplb2YoZXJidWYpKTsKQEAgLTg4LDcgKzEzNSw3IEBAIGNoYXIgKmFyZ3Zb XTsKIAkJZXhpdChzdGF0dXMpOwogCX0KIAotCWlmIChlb3B0cyZSRUdfU1RBUlRFTkQpIHsKKwlp ZiAoZW9wdHMmTVlfUkVHX1NUQVJURU5EKSB7CiAJCXN1YnNbMF0ucm1fc28gPSBzdGFydG9mZjsK IAkJc3Vic1swXS5ybV9lbyA9IHN0cmxlbihhcmd2W29wdGluZF0pIC0gZW5kb2ZmOwogCX0KQEAg LTk5LDcgKzE0Niw3IEBAIGNoYXIgKmFyZ3ZbXTsKIAkJCWVwcmludChlcnIpLCAoaW50KSBsZW4s IChpbnQpIHNpemVvZihlcmJ1ZiksIGVyYnVmKTsKIAkJZXhpdChzdGF0dXMpOwogCX0KLQlpZiAo IShjb3B0cyZSRUdfTk9TVUIpKSB7CisJaWYgKCEoY29wdHMmTVlfUkVHX05PU1VCKSkgewogCQls ZW4gPSAoaW50KShzdWJzWzBdLnJtX2VvIC0gc3Vic1swXS5ybV9zbyk7CiAJCWlmIChzdWJzWzBd LnJtX3NvICE9IC0xKSB7CiAJCQlpZiAobGVuICE9IDApCkBAIC0xMzUsNyArMTgyLDcgQEAgRklM RSAqaW47CiAJc2l6ZV90IG5lOwogCWNvbnN0IGNoYXIgKmJhZHBhdCA9ICJpbnZhbGlkIHJlZ3Vs YXIgZXhwcmVzc2lvbiI7CiAjCWRlZmluZQlTSE9SVAkxMAotCWNvbnN0IGNoYXIgKmJwbmFtZSA9 ICJSRUdfQkFEUEFUIjsKKwljb25zdCBjaGFyICpicG5hbWUgPSAiTVlfUkVHX0JBRFBBVCI7CiAJ bXlfcmVnZXhfdCByZTsKIAogCXdoaWxlIChmZ2V0cyhpbmJ1Ziwgc2l6ZW9mKGluYnVmKSwgaW4p ICE9IE5VTEwpIHsKQEAgLTE2MCwzNyArMjA3LDM3IEBAIEZJTEUgKmluOwogCQlyeF90cnkoZlsw XSwgZlsxXSwgZlsyXSwgZlszXSwgZls0XSwgb3B0aW9ucygnYycsIGZbMV0pKTsKIAkJaWYgKG9w dCgnJicsIGZbMV0pKQkvKiB0cnkgd2l0aCBlaXRoZXIgdHlwZSBvZiBSRSAqLwogCQkJcnhfdHJ5 KGZbMF0sIGZbMV0sIGZbMl0sIGZbM10sIGZbNF0sCi0JCQkJCW9wdGlvbnMoJ2MnLCBmWzFdKSAm fiBSRUdfRVhURU5ERUQpOworCQkJCQlvcHRpb25zKCdjJywgZlsxXSkgJn4gTVlfUkVHX0VYVEVO REVEKTsKIAl9CiAKLQluZSA9IG15X3JlZ2Vycm9yKFJFR19CQURQQVQsIChteV9yZWdleF90ICop TlVMTCwgZXJidWYsIHNpemVvZihlcmJ1ZikpOworCW5lID0gbXlfcmVnZXJyb3IoTVlfUkVHX0JB RFBBVCwgKG15X3JlZ2V4X3QgKilOVUxMLCBlcmJ1Ziwgc2l6ZW9mKGVyYnVmKSk7CiAJaWYgKHN0 cmNtcChlcmJ1ZiwgYmFkcGF0KSAhPSAwIHx8IG5lICE9IHN0cmxlbihiYWRwYXQpKzEpIHsKIAkJ ZnByaW50ZihzdGRlcnIsICJlbmQ6IHJlZ2Vycm9yKCkgdGVzdCBnYXZlIGAlcycgbm90IGAlcydc biIsCiAJCQkJCQkJZXJidWYsIGJhZHBhdCk7CiAJCXN0YXR1cyA9IDE7CiAJfQotCW5lID0gbXlf cmVnZXJyb3IoUkVHX0JBRFBBVCwgKG15X3JlZ2V4X3QgKilOVUxMLCBlcmJ1ZiwgKHNpemVfdClT SE9SVCk7CisJbmUgPSBteV9yZWdlcnJvcihNWV9SRUdfQkFEUEFULCAobXlfcmVnZXhfdCAqKU5V TEwsIGVyYnVmLCAoc2l6ZV90KVNIT1JUKTsKIAlpZiAoc3RybmNtcChlcmJ1ZiwgYmFkcGF0LCBT SE9SVC0xKSAhPSAwIHx8IGVyYnVmW1NIT1JULTFdICE9ICdcMCcgfHwKIAkJCQkJCW5lICE9IHN0 cmxlbihiYWRwYXQpKzEpIHsKIAkJZnByaW50ZihzdGRlcnIsICJlbmQ6IHJlZ2Vycm9yKCkgc2hv cnQgdGVzdCBnYXZlIGAlcycgbm90IGAlLipzJ1xuIiwKIAkJCQkJCWVyYnVmLCBTSE9SVC0xLCBi YWRwYXQpOwogCQlzdGF0dXMgPSAxOwogCX0KLQluZSA9IG15X3JlZ2Vycm9yKFJFR19JVE9BfFJF R19CQURQQVQsIChteV9yZWdleF90ICopTlVMTCwgZXJidWYsIHNpemVvZihlcmJ1ZikpOworCW5l ID0gbXlfcmVnZXJyb3IoTVlfUkVHX0lUT0F8TVlfUkVHX0JBRFBBVCwgKG15X3JlZ2V4X3QgKilO VUxMLCBlcmJ1Ziwgc2l6ZW9mKGVyYnVmKSk7CiAJaWYgKHN0cmNtcChlcmJ1ZiwgYnBuYW1lKSAh PSAwIHx8IG5lICE9IHN0cmxlbihicG5hbWUpKzEpIHsKIAkJZnByaW50ZihzdGRlcnIsICJlbmQ6 IHJlZ2Vycm9yKCkgSVRPQSB0ZXN0IGdhdmUgYCVzJyBub3QgYCVzJ1xuIiwKIAkJCQkJCWVyYnVm LCBicG5hbWUpOwogCQlzdGF0dXMgPSAxOwogCX0KIAlyZS5yZV9lbmRwID0gYnBuYW1lOwotCW5l ID0gbXlfcmVnZXJyb3IoUkVHX0FUT0ksICZyZSwgZXJidWYsIHNpemVvZihlcmJ1ZikpOwotCWlm IChhdG9pKGVyYnVmKSAhPSAoaW50KVJFR19CQURQQVQpIHsKKwluZSA9IG15X3JlZ2Vycm9yKE1Z X1JFR19BVE9JLCAmcmUsIGVyYnVmLCBzaXplb2YoZXJidWYpKTsKKwlpZiAoYXRvaShlcmJ1Zikg IT0gKGludClNWV9SRUdfQkFEUEFUKSB7CiAJCWZwcmludGYoc3RkZXJyLCAiZW5kOiByZWdlcnJv cigpIEFUT0kgdGVzdCBnYXZlIGAlcycgbm90IGAlbGQnXG4iLAotCQkJCQkJZXJidWYsIChsb25n KVJFR19CQURQQVQpOworCQkJCQkJZXJidWYsIChsb25nKU1ZX1JFR19CQURQQVQpOwogCQlzdGF0 dXMgPSAxOwogCX0gZWxzZSBpZiAobmUgIT0gc3RybGVuKGVyYnVmKSsxKSB7CiAJCWZwcmludGYo c3RkZXJyLCAiZW5kOiByZWdlcnJvcigpIEFUT0kgdGVzdCBsZW4oYCVzJykgPSAlbGRcbiIsCi0J CQkJCQllcmJ1ZiwgKGxvbmcpUkVHX0JBRFBBVCk7CisJCQkJCQllcmJ1ZiwgKGxvbmcpTVlfUkVH X0JBRFBBVCk7CiAJCXN0YXR1cyA9IDE7CiAJfQogfQpAQCAtMjE3LDE0ICsyNjQsMTQgQEAgaW50 IG9wdHM7CQkJLyogbWF5IG5vdCBtYXRjaCBmMSAqLwogCWNoYXIgZXJidWZbMTAwXTsKIAlpbnQg ZXJyOwogCWludCBsZW47Ci0JY29uc3QgY2hhciAqdHlwZSA9IChvcHRzICYgUkVHX0VYVEVOREVE KSA/ICJFUkUiIDogIkJSRSI7CisJY29uc3QgY2hhciAqdHlwZSA9IChvcHRzICYgTVlfUkVHX0VY VEVOREVEKSA/ICJFUkUiIDogIkJSRSI7CiAJcmVnaXN0ZXIgaW50IGk7CiAJY2hhciAqZ3J1bXA7 CiAJY2hhciBmMGNvcHlbMTAwMF07CiAJY2hhciBmMmNvcHlbMTAwMF07CiAKIAlzdHJjcHkoZjBj b3B5LCBmMCk7Ci0JcmUucmVfZW5kcCA9IChvcHRzJlJFR19QRU5EKSA/IGYwY29weSArIHN0cmxl bihmMGNvcHkpIDogTlVMTDsKKwlyZS5yZV9lbmRwID0gKG9wdHMmTVlfUkVHX1BFTkQpID8gZjBj b3B5ICsgc3RybGVuKGYwY29weSkgOiBOVUxMOwogCWZpeHN0cihmMGNvcHkpOwogCWVyciA9IG15 X3JlZ2NvbXAoJnJlLCBmMGNvcHksIG9wdHMsICZteV9jaGFyc2V0X2xhdGluMSk7CiAJaWYgKGVy ciAhPSAwICYmICghb3B0KCdDJywgZjEpIHx8IGVyciAhPSBlZmluZChmMikpKSB7CkBAIC0yMzYs NyArMjgzLDcgQEAgaW50IG9wdHM7CQkJLyogbWF5IG5vdCBtYXRjaCBmMSAqLwogCQlzdGF0dXMg PSAxOwogCX0gZWxzZSBpZiAoZXJyID09IDAgJiYgb3B0KCdDJywgZjEpKSB7CiAJCS8qIHVuZXhw ZWN0ZWQgc3VjY2VzcyAqLwotCQlmcHJpbnRmKHN0ZGVyciwgIiVkOiAlcyBzaG91bGQgaGF2ZSBn aXZlbiBSRUdfJXNcbiIsCisJCWZwcmludGYoc3RkZXJyLCAiJWQ6ICVzIHNob3VsZCBoYXZlIGdp dmVuIE1ZX1JFR18lc1xuIiwKIAkJCQkJCWxpbmUsIHR5cGUsIGYyKTsKIAkJc3RhdHVzID0gMTsK IAkJZXJyID0gMTsJLyogc28gd2Ugd29uJ3QgdHJ5IHJlZ2V4ZWMgKi8KQEAgLTI1MCw3ICsyOTcs NyBAQCBpbnQgb3B0czsJCQkvKiBtYXkgbm90IG1hdGNoIGYxICovCiAJc3RyY3B5KGYyY29weSwg ZjIpOwogCWZpeHN0cihmMmNvcHkpOwogCi0JaWYgKG9wdGlvbnMoJ2UnLCBmMSkmUkVHX1NUQVJU RU5EKSB7CisJaWYgKG9wdGlvbnMoJ2UnLCBmMSkmTVlfUkVHX1NUQVJURU5EKSB7CiAJCWlmIChz dHJjaHIoZjIsICcoJykgPT0gTlVMTCB8fCBzdHJjaHIoZjIsICcpJykgPT0gTlVMTCkKIAkJCWZw cmludGYoc3RkZXJyLCAiJWQ6IGJhZCBTVEFSVEVORCBzeW50YXhcbiIsIGxpbmUpOwogCQlzdWJz WzBdLnJtX3NvID0gc3RyY2hyKGYyLCAnKCcpIC0gZjIgKyAxOwpAQCAtMjU4LDcgKzMwNSw3IEBA IGludCBvcHRzOwkJCS8qIG1heSBub3QgbWF0Y2ggZjEgKi8KIAl9CiAJZXJyID0gbXlfcmVnZXhl YygmcmUsIGYyY29weSwgTlNVQlMsIHN1YnMsIG9wdGlvbnMoJ2UnLCBmMSkpOwogCi0JaWYgKGVy ciAhPSAwICYmIChmMyAhPSBOVUxMIHx8IGVyciAhPSBSRUdfTk9NQVRDSCkpIHsKKwlpZiAoZXJy ICE9IDAgJiYgKGYzICE9IE5VTEwgfHwgZXJyICE9IE1ZX1JFR19OT01BVENIKSkgewogCQkvKiB1 bmV4cGVjdGVkIGVycm9yIG9yIHdyb25nIGVycm9yICovCiAJCWxlbiA9IG15X3JlZ2Vycm9yKGVy ciwgJnJlLCBlcmJ1Ziwgc2l6ZW9mKGVyYnVmKSk7CiAJCWZwcmludGYoc3RkZXJyLCAiJWQ6ICVz IGV4ZWMgZXJyb3IgJXMsICVkLyVkIGAlcydcbiIsCkBAIC0yNzMsNyArMzIwLDcgQEAgaW50IG9w dHM7CQkJLyogbWF5IG5vdCBtYXRjaCBmMSAqLwogCQkJCQkJbGluZSwgdHlwZSk7CiAJCXN0YXR1 cyA9IDE7CiAJCWVyciA9IDE7CQkvKiBqdXN0IG9uIHByaW5jaXBsZSAqLwotCX0gZWxzZSBpZiAo b3B0cyZSRUdfTk9TVUIpIHsKKwl9IGVsc2UgaWYgKG9wdHMmTVlfUkVHX05PU1VCKSB7CiAJCS8q IG5vdGhpbmcgbW9yZSB0byBjaGVjayAqLwogCX0gZWxzZSBpZiAoKGdydW1wID0gY2hlY2soZjIs IHN1YnNbMF0sIGYzKSkgIT0gTlVMTCkgewogCQlmcHJpbnRmKHN0ZGVyciwgIiVkOiAlcyAlc1xu IiwgbGluZSwgdHlwZSwgZ3J1bXApOwpAQCAtMzIzLDQxICszNzAsNDEgQEAgY2hhciAqczsKIAkJ aWYgKHN0cmNocihsZWdhbCwgKnApICE9IE5VTEwpCiAJCQlzd2l0Y2ggKCpwKSB7CiAJCQljYXNl ICdiJzoKLQkJCQlvICY9IH5SRUdfRVhURU5ERUQ7CisJCQkJbyAmPSB+TVlfUkVHX0VYVEVOREVE OwogCQkJCWJyZWFrOwogCQkJY2FzZSAnaSc6Ci0JCQkJbyB8PSBSRUdfSUNBU0U7CisJCQkJbyB8 PSBNWV9SRUdfSUNBU0U7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdzJzoKLQkJCQlvIHw9IFJFR19O T1NVQjsKKwkJCQlvIHw9IE1ZX1JFR19OT1NVQjsKIAkJCQlicmVhazsKIAkJCWNhc2UgJ24nOgot CQkJCW8gfD0gUkVHX05FV0xJTkU7CisJCQkJbyB8PSBNWV9SRUdfTkVXTElORTsKIAkJCQlicmVh azsKIAkJCWNhc2UgJ20nOgotCQkJCW8gJj0gflJFR19FWFRFTkRFRDsKLQkJCQlvIHw9IFJFR19O T1NQRUM7CisJCQkJbyAmPSB+TVlfUkVHX0VYVEVOREVEOworCQkJCW8gfD0gTVlfUkVHX05PU1BF QzsKIAkJCQlicmVhazsKIAkJCWNhc2UgJ3AnOgotCQkJCW8gfD0gUkVHX1BFTkQ7CisJCQkJbyB8 PSBNWV9SRUdfUEVORDsKIAkJCQlicmVhazsKIAkJCWNhc2UgJ14nOgotCQkJCW8gfD0gUkVHX05P VEJPTDsKKwkJCQlvIHw9IE1ZX1JFR19OT1RCT0w7CiAJCQkJYnJlYWs7CiAJCQljYXNlICckJzoK LQkJCQlvIHw9IFJFR19OT1RFT0w7CisJCQkJbyB8PSBNWV9SRUdfTk9URU9MOwogCQkJCWJyZWFr OwogCQkJY2FzZSAnIyc6Ci0JCQkJbyB8PSBSRUdfU1RBUlRFTkQ7CisJCQkJbyB8PSBNWV9SRUdf U1RBUlRFTkQ7CiAJCQkJYnJlYWs7CiAJCQljYXNlICd0JzoJLyogdHJhY2UgKi8KLQkJCQlvIHw9 IFJFR19UUkFDRTsKKwkJCQlvIHw9IE1ZX1JFR19UUkFDRTsKIAkJCQlicmVhazsKIAkJCWNhc2Ug J2wnOgkvKiBmb3JjZSBsb25nIHJlcHJlc2VudGF0aW9uICovCi0JCQkJbyB8PSBSRUdfTEFSR0U7 CisJCQkJbyB8PSBNWV9SRUdfTEFSR0U7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdyJzoJLyogZm9y Y2UgYmFja3JlZiB1c2UgKi8KLQkJCQlvIHw9IFJFR19CQUNLUjsKKwkJCQlvIHw9IE1ZX1JFR19C QUNLUjsKIAkJCQlicmVhazsKIAkJCX0KIAlyZXR1cm4obyk7CkBAIC00ODUsNyArNTMyLDcgQEAg aW50IGVycjsKIAlzdGF0aWMgY2hhciBlcGJ1ZlsxMDBdOwogCXNpemVfdCBsZW47CiAKLQlsZW4g PSBteV9yZWdlcnJvcihSRUdfSVRPQXxlcnIsIChteV9yZWdleF90ICopTlVMTCwgZXBidWYsIHNp emVvZihlcGJ1ZikpOworCWxlbiA9IG15X3JlZ2Vycm9yKE1ZX1JFR19JVE9BfGVyciwgKG15X3Jl Z2V4X3QgKilOVUxMLCBlcGJ1Ziwgc2l6ZW9mKGVwYnVmKSk7CiAJYXNzZXJ0KGxlbiA8PSBzaXpl b2YoZXBidWYpKTsKIAlyZXR1cm4oZXBidWYpOwogfQpAQCAtNTAxLDkgKzU0OCw5IEBAIGNoYXIg Km5hbWU7CiAJc3RhdGljIGNoYXIgZWZidWZbMTAwXTsKIAlteV9yZWdleF90IHJlOwogCi0Jc3By aW50ZihlZmJ1ZiwgIlJFR18lcyIsIG5hbWUpOworCXNwcmludGYoZWZidWYsICJNWV9SRUdfJXMi LCBuYW1lKTsKIAlhc3NlcnQoc3RybGVuKGVmYnVmKSA8IHNpemVvZihlZmJ1ZikpOwogCXJlLnJl X2VuZHAgPSBlZmJ1ZjsKLQkodm9pZCkgbXlfcmVnZXJyb3IoUkVHX0FUT0ksICZyZSwgZWZidWYs IHNpemVvZihlZmJ1ZikpOworCSh2b2lkKSBteV9yZWdlcnJvcihNWV9SRUdfQVRPSSwgJnJlLCBl ZmJ1Ziwgc2l6ZW9mKGVmYnVmKSk7CiAJcmV0dXJuKGF0b2koZWZidWYpKTsKIH0KCj09PSBtb2Rp ZmllZCBmaWxlICdyZWdleC9teV9yZWdleC5oJwotLS0gYS9yZWdleC9teV9yZWdleC5oCTIwMDUt MDktMjkgMDA6MDg6MjQgKzAwMDAKKysrIGIvcmVnZXgvbXlfcmVnZXguaAkyMDEwLTA3LTI2IDEw OjM5OjM4ICswMDAwCkBAIC0xLDc0ICsxLDc1IEBACiAjaWZuZGVmIF9SRUdFWF9IXwogI2RlZmlu ZQlfUkVHRVhfSF8JLyogbmV2ZXIgYWdhaW4gKi8KIC8qID09PT09PT09PSBiZWdpbiBoZWFkZXIg Z2VuZXJhdGVkIGJ5IC4vbWtoID09PT09PT09PSAqLworCisjaW5jbHVkZSAibV9jdHlwZS5oIgor CiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLSNpbmNsdWRlICJt X2N0eXBlLmgiCi0KIC8qID09PSByZWdleDIuaCA9PT0gKi8KICNpZmRlZiBfV0lONjQKLXR5cGVk ZWYgX19pbnQ2NCByZWdvZmZfdDsKK3R5cGVkZWYgX19pbnQ2NCBteV9yZWdvZmZfdDsKICNlbHNl Ci10eXBlZGVmIG9mZl90IHJlZ29mZl90OwordHlwZWRlZiBvZmZfdCBteV9yZWdvZmZfdDsKICNl bmRpZgogc3RydWN0IHJlX2d1dHM7CQkJLyogbm9uZSBvZiB5b3VyIGJ1c2luZXNzIDotKSAqLwog dHlwZWRlZiBzdHJ1Y3QgewogCWludCByZV9tYWdpYzsKIAlzaXplX3QgcmVfbnN1YjsJCS8qIG51 bWJlciBvZiBwYXJlbnRoZXNpemVkIHN1YmV4cHJlc3Npb25zICovCi0JY29uc3QgY2hhciAqcmVf ZW5kcDsJLyogZW5kIHBvaW50ZXIgZm9yIFJFR19QRU5EICovCisJY29uc3QgY2hhciAqcmVfZW5k cDsJLyogZW5kIHBvaW50ZXIgZm9yIE1ZX1JFR19QRU5EICovCiAJc3RydWN0IHJlX2d1dHMgKnJl X2c7CS8qIG5vbmUgb2YgeW91ciBidXNpbmVzcyA6LSkgKi8KIAlDSEFSU0VUX0lORk8gKmNoYXJz ZXQ7CS8qIEZvciBjdHlwZSB0aGluZ3MgKi8KIH0gbXlfcmVnZXhfdDsKIHR5cGVkZWYgc3RydWN0 IHsKLQlyZWdvZmZfdCBybV9zbzsJCS8qIHN0YXJ0IG9mIG1hdGNoICovCi0JcmVnb2ZmX3Qgcm1f ZW87CQkvKiBlbmQgb2YgbWF0Y2ggKi8KKwlteV9yZWdvZmZfdCBybV9zbzsJCS8qIHN0YXJ0IG9m IG1hdGNoICovCisJbXlfcmVnb2ZmX3Qgcm1fZW87CQkvKiBlbmQgb2YgbWF0Y2ggKi8KIH0gbXlf cmVnbWF0Y2hfdDsKIAogCiAvKiA9PT0gcmVnY29tcC5jID09PSAqLwogZXh0ZXJuIGludCBteV9y ZWdjb21wKG15X3JlZ2V4X3QgKiwgY29uc3QgY2hhciAqLCBpbnQsIENIQVJTRVRfSU5GTyAqY2hh cnNldCk7Ci0jZGVmaW5lCVJFR19CQVNJQwkwMDAwCi0jZGVmaW5lCVJFR19FWFRFTkRFRAkwMDAx Ci0jZGVmaW5lCVJFR19JQ0FTRQkwMDAyCi0jZGVmaW5lCVJFR19OT1NVQgkwMDA0Ci0jZGVmaW5l CVJFR19ORVdMSU5FCTAwMTAKLSNkZWZpbmUJUkVHX05PU1BFQwkwMDIwCi0jZGVmaW5lCVJFR19Q RU5ECTAwNDAKLSNkZWZpbmUJUkVHX0RVTVAJMDIwMAorI2RlZmluZQlNWV9SRUdfQkFTSUMJMDAw MAorI2RlZmluZQlNWV9SRUdfRVhURU5ERUQJMDAwMQorI2RlZmluZQlNWV9SRUdfSUNBU0UJMDAw MgorI2RlZmluZQlNWV9SRUdfTk9TVUIJMDAwNAorI2RlZmluZQlNWV9SRUdfTkVXTElORQkwMDEw CisjZGVmaW5lCU1ZX1JFR19OT1NQRUMJMDAyMAorI2RlZmluZQlNWV9SRUdfUEVORAkwMDQwCisj ZGVmaW5lCU1ZX1JFR19EVU1QCTAyMDAKIAogCiAvKiA9PT0gcmVnZXJyb3IuYyA9PT0gKi8KLSNk ZWZpbmUJUkVHX05PTUFUQ0gJIDEKLSNkZWZpbmUJUkVHX0JBRFBBVAkgMgotI2RlZmluZQlSRUdf RUNPTExBVEUJIDMKLSNkZWZpbmUJUkVHX0VDVFlQRQkgNAotI2RlZmluZQlSRUdfRUVTQ0FQRQkg NQotI2RlZmluZQlSRUdfRVNVQlJFRwkgNgotI2RlZmluZQlSRUdfRUJSQUNLCSA3Ci0jZGVmaW5l CVJFR19FUEFSRU4JIDgKLSNkZWZpbmUJUkVHX0VCUkFDRQkgOQotI2RlZmluZQlSRUdfQkFEQlIJ MTAKLSNkZWZpbmUJUkVHX0VSQU5HRQkxMQotI2RlZmluZQlSRUdfRVNQQUNFCTEyCi0jZGVmaW5l CVJFR19CQURSUFQJMTMKLSNkZWZpbmUJUkVHX0VNUFRZCTE0Ci0jZGVmaW5lCVJFR19BU1NFUlQJ MTUKLSNkZWZpbmUJUkVHX0lOVkFSRwkxNgotI2RlZmluZQlSRUdfQVRPSQkyNTUJLyogY29udmVy dCBuYW1lIHRvIG51bWJlciAoISkgKi8KLSNkZWZpbmUJUkVHX0lUT0EJMDQwMAkvKiBjb252ZXJ0 IG51bWJlciB0byBuYW1lICghKSAqLworI2RlZmluZQlNWV9SRUdfTk9NQVRDSAkgMQorI2RlZmlu ZQlNWV9SRUdfQkFEUEFUCSAyCisjZGVmaW5lCU1ZX1JFR19FQ09MTEFURQkgMworI2RlZmluZQlN WV9SRUdfRUNUWVBFCSA0CisjZGVmaW5lCU1ZX1JFR19FRVNDQVBFCSA1CisjZGVmaW5lCU1ZX1JF R19FU1VCUkVHCSA2CisjZGVmaW5lCU1ZX1JFR19FQlJBQ0sJIDcKKyNkZWZpbmUJTVlfUkVHX0VQ QVJFTgkgOAorI2RlZmluZQlNWV9SRUdfRUJSQUNFCSA5CisjZGVmaW5lCU1ZX1JFR19CQURCUgkx MAorI2RlZmluZQlNWV9SRUdfRVJBTkdFCTExCisjZGVmaW5lCU1ZX1JFR19FU1BBQ0UJMTIKKyNk ZWZpbmUJTVlfUkVHX0JBRFJQVAkxMworI2RlZmluZQlNWV9SRUdfRU1QVFkJMTQKKyNkZWZpbmUJ TVlfUkVHX0FTU0VSVAkxNQorI2RlZmluZQlNWV9SRUdfSU5WQVJHCTE2CisjZGVmaW5lCU1ZX1JF R19BVE9JCTI1NQkvKiBjb252ZXJ0IG5hbWUgdG8gbnVtYmVyICghKSAqLworI2RlZmluZQlNWV9S RUdfSVRPQQkwNDAwCS8qIGNvbnZlcnQgbnVtYmVyIHRvIG5hbWUgKCEpICovCiBleHRlcm4gc2l6 ZV90IG15X3JlZ2Vycm9yKGludCwgY29uc3QgbXlfcmVnZXhfdCAqLCBjaGFyICosIHNpemVfdCk7 CiAKIAogLyogPT09IHJlZ2V4ZWMuYyA9PT0gKi8KIGV4dGVybiBpbnQgbXlfcmVnZXhlYyhjb25z dCBteV9yZWdleF90ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBteV9yZWdtYXRjaF90IFtdLCBp bnQpOwotI2RlZmluZQlSRUdfTk9UQk9MCTAwMDAxCi0jZGVmaW5lCVJFR19OT1RFT0wJMDAwMDIK LSNkZWZpbmUJUkVHX1NUQVJURU5ECTAwMDA0Ci0jZGVmaW5lCVJFR19UUkFDRQkwMDQwMAkvKiB0 cmFjaW5nIG9mIGV4ZWN1dGlvbiAqLwotI2RlZmluZQlSRUdfTEFSR0UJMDEwMDAJLyogZm9yY2Ug bGFyZ2UgcmVwcmVzZW50YXRpb24gKi8KLSNkZWZpbmUJUkVHX0JBQ0tSCTAyMDAwCS8qIGZvcmNl IHVzZSBvZiBiYWNrcmVmIGNvZGUgKi8KKyNkZWZpbmUJTVlfUkVHX05PVEJPTAkwMDAwMQorI2Rl ZmluZQlNWV9SRUdfTk9URU9MCTAwMDAyCisjZGVmaW5lCU1ZX1JFR19TVEFSVEVORAkwMDAwNAor I2RlZmluZQlNWV9SRUdfVFJBQ0UJMDA0MDAJLyogdHJhY2luZyBvZiBleGVjdXRpb24gKi8KKyNk ZWZpbmUJTVlfUkVHX0xBUkdFCTAxMDAwCS8qIGZvcmNlIGxhcmdlIHJlcHJlc2VudGF0aW9uICov CisjZGVmaW5lCU1ZX1JFR19CQUNLUgkwMjAwMAkvKiBmb3JjZSB1c2Ugb2YgYmFja3JlZiBjb2Rl ICovCiAKIAogLyogPT09IHJlZ2ZyZWUuYyA9PT0gKi8KCj09PSBtb2RpZmllZCBmaWxlICdyZWdl eC9yZWdjb21wLmMnCi0tLSBhL3JlZ2V4L3JlZ2NvbXAuYwkyMDEwLTA3LTIzIDIwOjE2OjI5ICsw MDAwCisrKyBiL3JlZ2V4L3JlZ2NvbXAuYwkyMDEwLTA3LTI2IDEwOjM5OjM4ICswMDAwCkBAIC05 MCwxNiArOTAsMTYgQEAgc3RhdGljIGludCBuZXZlciA9IDA7CQkvKiBmb3IgdXNlIGluIGFzcwog LyoKICAtIHJlZ2NvbXAgLSBpbnRlcmZhY2UgZm9yIHBhcnNlciBhbmQgY29tcGlsYXRpb24KICA9 IGV4dGVybiBpbnQgcmVnY29tcChyZWdleF90ICosIGNvbnN0IGNoYXIgKiwgaW50KTsKLSA9ICNk ZWZpbmUJUkVHX0JBU0lDCTAwMDAKLSA9ICNkZWZpbmUJUkVHX0VYVEVOREVECTAwMDEKLSA9ICNk ZWZpbmUJUkVHX0lDQVNFCTAwMDIKLSA9ICNkZWZpbmUJUkVHX05PU1VCCTAwMDQKLSA9ICNkZWZp bmUJUkVHX05FV0xJTkUJMDAxMAotID0gI2RlZmluZQlSRUdfTk9TUEVDCTAwMjAKLSA9ICNkZWZp bmUJUkVHX1BFTkQJMDA0MAotID0gI2RlZmluZQlSRUdfRFVNUAkwMjAwCisgPSAjZGVmaW5lCU1Z X1JFR19CQVNJQwkwMDAwCisgPSAjZGVmaW5lCU1ZX1JFR19FWFRFTkRFRAkwMDAxCisgPSAjZGVm aW5lCU1ZX1JFR19JQ0FTRQkwMDAyCisgPSAjZGVmaW5lCU1ZX1JFR19OT1NVQgkwMDA0CisgPSAj ZGVmaW5lCU1ZX1JFR19ORVdMSU5FCTAwMTAKKyA9ICNkZWZpbmUJTVlfUkVHX05PU1BFQwkwMDIw CisgPSAjZGVmaW5lCU1ZX1JFR19QRU5ECTAwNDAKKyA9ICNkZWZpbmUJTVlfUkVHX0RVTVAJMDIw MAogICovCi1pbnQJCQkJLyogMCBzdWNjZXNzLCBvdGhlcndpc2UgUkVHX3NvbWV0aGluZyAqLwor aW50CQkJCS8qIDAgc3VjY2Vzcywgb3RoZXJ3aXNlIE1ZX1JFR19zb21ldGhpbmcgKi8KIG15X3Jl Z2NvbXAocHJlZywgcGF0dGVybiwgY2ZsYWdzLCBjaGFyc2V0KQogbXlfcmVnZXhfdCAqcHJlZzsK IGNvbnN0IGNoYXIgKnBhdHRlcm47CkBAIC0xMTQsMTggKzExNCwxOCBAQCBDSEFSU0VUX0lORk8g KmNoYXJzZXQ7CiAjaWZkZWYgUkVERUJVRwogIwlkZWZpbmUJR09PREZMQUdTKGYpCShmKQogI2Vs c2UKLSMJZGVmaW5lCUdPT0RGTEFHUyhmKQkoKGYpJn5SRUdfRFVNUCkKKyMJZGVmaW5lCUdPT0RG TEFHUyhmKQkoKGYpJn5NWV9SRUdfRFVNUCkKICNlbmRpZgogCiAJbXlfcmVnZXhfaW5pdChjaGFy c2V0KTsJLyogSW5pdCBjY2xhc3MgaWYgbmVhZGVkICovCiAJcHJlZy0+Y2hhcnNldD1jaGFyc2V0 OwogCWNmbGFncyA9IEdPT0RGTEFHUyhjZmxhZ3MpOwotCWlmICgoY2ZsYWdzJlJFR19FWFRFTkRF RCkgJiYgKGNmbGFncyZSRUdfTk9TUEVDKSkKLQkJcmV0dXJuKFJFR19JTlZBUkcpOworCWlmICgo Y2ZsYWdzJk1ZX1JFR19FWFRFTkRFRCkgJiYgKGNmbGFncyZNWV9SRUdfTk9TUEVDKSkKKwkJcmV0 dXJuKE1ZX1JFR19JTlZBUkcpOwogCi0JaWYgKGNmbGFncyZSRUdfUEVORCkgeworCWlmIChjZmxh Z3MmTVlfUkVHX1BFTkQpIHsKIAkJaWYgKHByZWctPnJlX2VuZHAgPCBwYXR0ZXJuKQotCQkJcmV0 dXJuKFJFR19JTlZBUkcpOworCQkJcmV0dXJuKE1ZX1JFR19JTlZBUkcpOwogCQlsZW4gPSBwcmVn LT5yZV9lbmRwIC0gcGF0dGVybjsKIAl9IGVsc2UKIAkJbGVuID0gc3RybGVuKChjaGFyICopcGF0 dGVybik7CkBAIC0xMzQsMTMgKzEzNCwxMyBAQCBDSEFSU0VUX0lORk8gKmNoYXJzZXQ7CiAJZyA9 IChzdHJ1Y3QgcmVfZ3V0cyAqKW1hbGxvYyhzaXplb2Yoc3RydWN0IHJlX2d1dHMpICsKIAkJCQkJ CQkoTkMtMSkqc2l6ZW9mKGNhdF90KSk7CiAJaWYgKGcgPT0gTlVMTCkKLQkJcmV0dXJuKFJFR19F U1BBQ0UpOworCQlyZXR1cm4oTVlfUkVHX0VTUEFDRSk7CiAJcC0+c3NpemUgPSAobG9uZykgKGxl bi8oc2l6ZV90KTIqKHNpemVfdCkzICsgKHNpemVfdCkxKTsgLyogdWdoICovCiAJcC0+c3RyaXAg PSAoc29wICopbWFsbG9jKHAtPnNzaXplICogc2l6ZW9mKHNvcCkpOwogCXAtPnNsZW4gPSAwOwog CWlmIChwLT5zdHJpcCA9PSBOVUxMKSB7CiAJCWZyZWUoKGNoYXIgKilnKTsKLQkJcmV0dXJuKFJF R19FU1BBQ0UpOworCQlyZXR1cm4oTVlfUkVHX0VTUEFDRSk7CiAJfQogCiAJLyogc2V0IHRoaW5n cyB1cCAqLwpAQCAtMTczLDkgKzE3Myw5IEBAIENIQVJTRVRfSU5GTyAqY2hhcnNldDsKIAkvKiBk byBpdCAqLwogCUVNSVQoT0VORCwgMCk7CiAJZy0+Zmlyc3RzdGF0ZSA9IFRIRVJFKCk7Ci0JaWYg KGNmbGFncyZSRUdfRVhURU5ERUQpCisJaWYgKGNmbGFncyZNWV9SRUdfRVhURU5ERUQpCiAJCXBf ZXJlKHAsIE9VVCk7Ci0JZWxzZSBpZiAoY2ZsYWdzJlJFR19OT1NQRUMpCisJZWxzZSBpZiAoY2Zs YWdzJk1ZX1JFR19OT1NQRUMpCiAJCXBfc3RyKHApOwogCWVsc2UKIAkJcF9icmUocCwgT1VULCBP VVQpOwpAQCAtMTk0LDcgKzE5NCw3IEBAIENIQVJTRVRfSU5GTyAqY2hhcnNldDsKICNpZm5kZWYg UkVERUJVRwogCS8qIG5vdCBkZWJ1Z2dpbmcsIHNvIGNhbid0IHJlbHkgb24gdGhlIGFzc2VydCgp IGluIHJlZ2V4ZWMoKSAqLwogCWlmIChnLT5pZmxhZ3MmQkFEKQotCQlTRVRFUlJPUihSRUdfQVNT RVJUKTsKKwkJU0VURVJST1IoTVlfUkVHX0FTU0VSVCk7CiAjZW5kaWYKIAogCS8qIHdpbiBvciBs b3NlLCB3ZSdyZSBkb25lICovCkBAIC0yMjMsNyArMjIzLDcgQEAgaW50IHN0b3A7CQkJLyogY2hh cmFjdGVyIHRoaXMgRVJFIHNob3VsZAogCQljb25jID0gSEVSRSgpOwogCQl3aGlsZSAoTU9SRSgp ICYmIChjID0gUEVFSygpKSAhPSAnfCcgJiYgYyAhPSBzdG9wKQogCQkJcF9lcmVfZXhwKHApOwot CQlpZihSRVFVSVJFKEhFUkUoKSAhPSBjb25jLCBSRUdfRU1QVFkpKSB7fS8qIHJlcXVpcmUgbm9u ZW1wdHkgKi8KKwkJaWYoUkVRVUlSRShIRVJFKCkgIT0gY29uYywgTVlfUkVHX0VNUFRZKSkge30v KiByZXF1aXJlIG5vbmVtcHR5ICovCiAKIAkJaWYgKCFFQVQoJ3wnKSkKIAkJCWJyZWFrOwkJLyog Tk9URSBCUkVBSyBPVVQgKi8KQEAgLTI3MCw3ICsyNzAsNyBAQCByZWdpc3RlciBzdHJ1Y3QgcGFy c2UgKnA7CiAJcG9zID0gSEVSRSgpOwogCXN3aXRjaCAoYykgewogCWNhc2UgJygnOgotCQlpZihS RVFVSVJFKE1PUkUoKSwgUkVHX0VQQVJFTikpIHt9CisJCWlmKFJFUVVJUkUoTU9SRSgpLCBNWV9S RUdfRVBBUkVOKSkge30KIAkJcC0+Zy0+bnN1YisrOwogCQlzdWJubyA9IChzb3BubykgcC0+Zy0+ bnN1YjsKIAkJaWYgKHN1Ym5vIDwgTlBBUkVOKQpAQCAtMjgzLDcgKzI4Myw3IEBAIHJlZ2lzdGVy IHN0cnVjdCBwYXJzZSAqcDsKIAkJCWFzc2VydChwLT5wZW5kW3N1Ym5vXSAhPSAwKTsKIAkJfQog CQlFTUlUKE9SUEFSRU4sIHN1Ym5vKTsKLQkJaWYoTVVTVEVBVCgnKScsIFJFR19FUEFSRU4pKSB7 fQorCQlpZihNVVNURUFUKCcpJywgTVlfUkVHX0VQQVJFTikpIHt9CiAJCWJyZWFrOwogCWNhc2Ug J14nOgogCQlFTUlUKE9CT0wsIDApOwpAQCAtMjk3LDE1ICsyOTcsMTUgQEAgcmVnaXN0ZXIgc3Ry dWN0IHBhcnNlICpwOwogCQlwLT5nLT5uZW9sKys7CiAJCWJyZWFrOwogCWNhc2UgJ3wnOgotCQlT RVRFUlJPUihSRUdfRU1QVFkpOworCQlTRVRFUlJPUihNWV9SRUdfRU1QVFkpOwogCQlicmVhazsK IAljYXNlICcqJzoKIAljYXNlICcrJzoKIAljYXNlICc/JzoKLQkJU0VURVJST1IoUkVHX0JBRFJQ VCk7CisJCVNFVEVSUk9SKE1ZX1JFR19CQURSUFQpOwogCQlicmVhazsKIAljYXNlICcuJzoKLQkJ aWYgKHAtPmctPmNmbGFncyZSRUdfTkVXTElORSkKKwkJaWYgKHAtPmctPmNmbGFncyZNWV9SRUdf TkVXTElORSkKIAkJCW5vbm5ld2xpbmUocCk7CiAJCWVsc2UKIAkJCUVNSVQoT0FOWSwgMCk7CkBA IC0zMTQsMTIgKzMxNCwxMiBAQCByZWdpc3RlciBzdHJ1Y3QgcGFyc2UgKnA7CiAJCXBfYnJhY2tl dChwKTsKIAkJYnJlYWs7CiAJY2FzZSAnXFwnOgotCQlpZihSRVFVSVJFKE1PUkUoKSwgUkVHX0VF U0NBUEUpKSB7fQorCQlpZihSRVFVSVJFKE1PUkUoKSwgTVlfUkVHX0VFU0NBUEUpKSB7fQogCQlj ID0gR0VUTkVYVCgpOwogCQlvcmRpbmFyeShwLCBjKTsKIAkJYnJlYWs7CiAJY2FzZSAneyc6CQkv KiBva2F5IGFzIG9yZGluYXJ5IGV4Y2VwdCBpZiBkaWdpdCBmb2xsb3dzICovCi0JCWlmKFJFUVVJ UkUoIU1PUkUoKSB8fCAhbXlfaXNkaWdpdChwLT5jaGFyc2V0LFBFRUsoKSksIFJFR19CQURSUFQp KSB7fQorCQlpZihSRVFVSVJFKCFNT1JFKCkgfHwgIW15X2lzZGlnaXQocC0+Y2hhcnNldCxQRUVL KCkpLCBNWV9SRUdfQkFEUlBUKSkge30KIAkJLyogRkFMTFRIUk9VR0ggKi8KIAlkZWZhdWx0Ogog CQlvcmRpbmFyeShwLCBjKTsKQEAgLTMzNiw3ICszMzYsNyBAQCByZWdpc3RlciBzdHJ1Y3QgcGFy c2UgKnA7CiAJCXJldHVybjsJCS8qIG5vIHJlcGV0aXRpb24sIHdlJ3JlIGRvbmUgKi8KIAlORVhU KCk7CiAKLQlpZihSRVFVSVJFKCF3YXNjYXJldCwgUkVHX0JBRFJQVCkpIHt9CisJaWYoUkVRVUlS RSghd2FzY2FyZXQsIE1ZX1JFR19CQURSUFQpKSB7fQogCXN3aXRjaCAoYykgewogCWNhc2UgJyon OgkvKiBpbXBsZW1lbnRlZCBhcyArPyAqLwogCQkvKiB0aGlzIGNhc2UgZG9lcyBub3QgcmVxdWly ZSB0aGUgKHl8KSB0cmljaywgbm9LTFVER0UgKi8KQEAgLTM2Myw3ICszNjMsNyBAQCByZWdpc3Rl ciBzdHJ1Y3QgcGFyc2UgKnA7CiAJCWlmIChFQVQoJywnKSkgewogCQkJaWYgKG15X2lzZGlnaXQo cC0+Y2hhcnNldCxQRUVLKCkpKSB7CiAJCQkJY291bnQyID0gcF9jb3VudChwKTsKLQkJCQlpZihS RVFVSVJFKGNvdW50IDw9IGNvdW50MiwgUkVHX0JBREJSKSkge30KKwkJCQlpZihSRVFVSVJFKGNv dW50IDw9IGNvdW50MiwgTVlfUkVHX0JBREJSKSkge30KIAkJCX0gZWxzZQkJLyogc2luZ2xlIG51 bWJlciB3aXRoIGNvbW1hICovCiAJCQkJY291bnQyID0gUkVfSU5GSU5JVFk7CiAJCX0gZWxzZQkJ LyoganVzdCBhIHNpbmdsZSBudW1iZXIgKi8KQEAgLTM3Miw4ICszNzIsOCBAQCByZWdpc3RlciBz dHJ1Y3QgcGFyc2UgKnA7CiAJCWlmICghRUFUKCd9JykpIHsJLyogZXJyb3IgaGV1cmlzdGljcyAq LwogCQkJd2hpbGUgKE1PUkUoKSAmJiBQRUVLKCkgIT0gJ30nKQogCQkJCU5FWFQoKTsKLQkJCWlm KFJFUVVJUkUoTU9SRSgpLCBSRUdfRUJSQUNFKSkge30KLQkJCVNFVEVSUk9SKFJFR19CQURCUik7 CisJCQlpZihSRVFVSVJFKE1PUkUoKSwgTVlfUkVHX0VCUkFDRSkpIHt9CisJCQlTRVRFUlJPUihN WV9SRUdfQkFEQlIpOwogCQl9CiAJCWJyZWFrOwogCX0KQEAgLTM4NSw3ICszODUsNyBAQCByZWdp c3RlciBzdHJ1Y3QgcGFyc2UgKnA7CiAJCQkJKGMgPT0gJ3snICYmIE1PUkUyKCkgJiYgCiAJCQkJ IG15X2lzZGlnaXQocC0+Y2hhcnNldCxQRUVLMigpKSkgKSApCiAJCXJldHVybjsKLQlTRVRFUlJP UihSRUdfQkFEUlBUKTsKKwlTRVRFUlJPUihNWV9SRUdfQkFEUlBUKTsKIH0KIAogLyoKQEAgLTM5 Niw3ICszOTYsNyBAQCBzdGF0aWMgdm9pZAogcF9zdHIocCkKIHJlZ2lzdGVyIHN0cnVjdCBwYXJz ZSAqcDsKIHsKLQlpZihSRVFVSVJFKE1PUkUoKSwgUkVHX0VNUFRZKSkge30KKwlpZihSRVFVSVJF KE1PUkUoKSwgTVlfUkVHX0VNUFRZKSkge30KIAl3aGlsZSAoTU9SRSgpKQogCQlvcmRpbmFyeShw LCBHRVRORVhUKCkpOwogfQpAQCAtNDM5LDcgKzQzOSw3IEBAIHJlZ2lzdGVyIGludCBlbmQyOwkJ Lyogc2Vjb25kIHRlcm1pbmF0aW4KIAkJcC0+Zy0+bmVvbCsrOwogCX0KIAotCWlmKFJFUVVJUkUo SEVSRSgpICE9IHN0YXJ0LCBSRUdfRU1QVFkpKSB7fQkvKiByZXF1aXJlIG5vbmVtcHR5ICovCisJ aWYoUkVRVUlSRShIRVJFKCkgIT0gc3RhcnQsIE1ZX1JFR19FTVBUWSkpIHt9CS8qIHJlcXVpcmUg bm9uZW1wdHkgKi8KIH0KIAogLyoKQEAgLTQ2NCwxMiArNDY0LDEyIEBAIGludCBzdGFyb3JkaW5h cnk7CQkvKiBpcyBhIGxlYWRpbmcgKiBhbiAKIAlhc3NlcnQoTU9SRSgpKTsJCS8qIGNhbGxlciBz aG91bGQgaGF2ZSBlbnN1cmVkIHRoaXMgKi8KIAljID0gR0VUTkVYVCgpOwogCWlmIChjID09ICdc XCcpIHsKLQkJaWYoUkVRVUlSRShNT1JFKCksIFJFR19FRVNDQVBFKSkge30KKwkJaWYoUkVRVUlS RShNT1JFKCksIE1ZX1JFR19FRVNDQVBFKSkge30KIAkJYyA9IEJBQ0tTTCB8ICh1bnNpZ25lZCBj aGFyKUdFVE5FWFQoKTsKIAl9CiAJc3dpdGNoIChjKSB7CiAJY2FzZSAnLic6Ci0JCWlmIChwLT5n LT5jZmxhZ3MmUkVHX05FV0xJTkUpCisJCWlmIChwLT5nLT5jZmxhZ3MmTVlfUkVHX05FV0xJTkUp CiAJCQlub25uZXdsaW5lKHApOwogCQllbHNlCiAJCQlFTUlUKE9BTlksIDApOwpAQCAtNDc4LDcg KzQ3OCw3IEBAIGludCBzdGFyb3JkaW5hcnk7CQkvKiBpcyBhIGxlYWRpbmcgKiBhbiAKIAkJcF9i cmFja2V0KHApOwogCQlicmVhazsKIAljYXNlIEJBQ0tTTHwneyc6Ci0JCVNFVEVSUk9SKFJFR19C QURSUFQpOworCQlTRVRFUlJPUihNWV9SRUdfQkFEUlBUKTsKIAkJYnJlYWs7CiAJY2FzZSBCQUNL U0x8JygnOgogCQlwLT5nLT5uc3ViKys7CkBAIC00OTQsMTEgKzQ5NCwxMSBAQCBpbnQgc3Rhcm9y ZGluYXJ5OwkJLyogaXMgYSBsZWFkaW5nICogYW4gCiAJCQlhc3NlcnQocC0+cGVuZFtzdWJub10g IT0gMCk7CiAJCX0KIAkJRU1JVChPUlBBUkVOLCBzdWJubyk7Ci0JCWlmKFJFUVVJUkUoRUFUVFdP KCdcXCcsICcpJyksIFJFR19FUEFSRU4pKSB7fQorCQlpZihSRVFVSVJFKEVBVFRXTygnXFwnLCAn KScpLCBNWV9SRUdfRVBBUkVOKSkge30KIAkJYnJlYWs7CiAJY2FzZSBCQUNLU0x8JyknOgkvKiBz aG91bGQgbm90IGdldCBoZXJlIC0tIG11c3QgYmUgdXNlciAqLwogCWNhc2UgQkFDS1NMfCd9JzoK LQkJU0VURVJST1IoUkVHX0VQQVJFTik7CisJCVNFVEVSUk9SKE1ZX1JFR19FUEFSRU4pOwogCQli cmVhazsKIAljYXNlIEJBQ0tTTHwnMSc6CiAJY2FzZSBCQUNLU0x8JzInOgpAQCAtNTIwLDExICs1 MjAsMTEgQEAgaW50IHN0YXJvcmRpbmFyeTsJCS8qIGlzIGEgbGVhZGluZyAqIGFuIAogCQkJKHZv aWQpIGR1cGwocCwgcC0+cGJlZ2luW2ldKzEsIHAtPnBlbmRbaV0pOwogCQkJRU1JVChPX0JBQ0ss IGkpOwogCQl9IGVsc2UKLQkJCVNFVEVSUk9SKFJFR19FU1VCUkVHKTsKKwkJCVNFVEVSUk9SKE1Z X1JFR19FU1VCUkVHKTsKIAkJcC0+Zy0+YmFja3JlZnMgPSAxOwogCQlicmVhazsKIAljYXNlICcq JzoKLQkJaWYoUkVRVUlSRShzdGFyb3JkaW5hcnksIFJFR19CQURSUFQpKSB7fQorCQlpZihSRVFV SVJFKHN0YXJvcmRpbmFyeSwgTVlfUkVHX0JBRFJQVCkpIHt9CiAJCS8qIEZBTExUSFJPVUdIICov CiAJZGVmYXVsdDoKIAkJb3JkaW5hcnkocCwgYyAmfiBCQUNLU0wpOwpAQCAtNTQyLDcgKzU0Miw3 IEBAIGludCBzdGFyb3JkaW5hcnk7CQkvKiBpcyBhIGxlYWRpbmcgKiBhbiAKIAkJaWYgKEVBVCgn LCcpKSB7CiAJCQlpZiAoTU9SRSgpICYmIG15X2lzZGlnaXQocC0+Y2hhcnNldCxQRUVLKCkpKSB7 CiAJCQkJY291bnQyID0gcF9jb3VudChwKTsKLQkJCQlpZihSRVFVSVJFKGNvdW50IDw9IGNvdW50 MiwgUkVHX0JBREJSKSkge30KKwkJCQlpZihSRVFVSVJFKGNvdW50IDw9IGNvdW50MiwgTVlfUkVH X0JBREJSKSkge30KIAkJCX0gZWxzZQkJLyogc2luZ2xlIG51bWJlciB3aXRoIGNvbW1hICovCiAJ CQkJY291bnQyID0gUkVfSU5GSU5JVFk7CiAJCX0gZWxzZQkJLyoganVzdCBhIHNpbmdsZSBudW1i ZXIgKi8KQEAgLTU1MSw4ICs1NTEsOCBAQCBpbnQgc3Rhcm9yZGluYXJ5OwkJLyogaXMgYSBsZWFk aW5nICogYW4gCiAJCWlmICghRUFUVFdPKCdcXCcsICd9JykpIHsJLyogZXJyb3IgaGV1cmlzdGlj cyAqLwogCQkJd2hpbGUgKE1PUkUoKSAmJiAhU0VFVFdPKCdcXCcsICd9JykpCiAJCQkJTkVYVCgp OwotCQkJaWYoUkVRVUlSRShNT1JFKCksIFJFR19FQlJBQ0UpKSB7fQotCQkJU0VURVJST1IoUkVH X0JBREJSKTsKKwkJCWlmKFJFUVVJUkUoTU9SRSgpLCBNWV9SRUdfRUJSQUNFKSkge30KKwkJCVNF VEVSUk9SKE1ZX1JFR19CQURCUik7CiAJCX0KIAl9IGVsc2UgaWYgKGMgPT0gKHVuc2lnbmVkIGNo YXIpJyQnKQkvKiAkIChidXQgbm90IFwkKSBlbmRzIGl0ICovCiAJCXJldHVybigxKTsKQEAgLTU3 Niw3ICs1NzYsNyBAQCByZWdpc3RlciBzdHJ1Y3QgcGFyc2UgKnA7CiAJCW5kaWdpdHMrKzsKIAl9 CiAKLQlpZihSRVFVSVJFKG5kaWdpdHMgPiAwICYmIGNvdW50IDw9IERVUE1BWCwgUkVHX0JBREJS KSkge30KKwlpZihSRVFVSVJFKG5kaWdpdHMgPiAwICYmIGNvdW50IDw9IERVUE1BWCwgTVlfUkVH X0JBREJSKSkge30KIAlyZXR1cm4oY291bnQpOwogfQogCkBAIC02MTYsMTIgKzYxNiwxMiBAQCBy ZWdpc3RlciBzdHJ1Y3QgcGFyc2UgKnA7CiAJCXBfYl90ZXJtKHAsIGNzKTsKIAlpZiAoRUFUKCct JykpCiAJCUNIYWRkKGNzLCAnLScpOwotCWlmKE1VU1RFQVQoJ10nLCBSRUdfRUJSQUNLKSkge30K KwlpZihNVVNURUFUKCddJywgTVlfUkVHX0VCUkFDSykpIHt9CiAKIAlpZiAocC0+ZXJyb3IgIT0g MCkJLyogZG9uJ3QgbWVzcyB0aGluZ3MgdXAgZnVydGhlciAqLwogCQlyZXR1cm47CiAKLQlpZiAo cC0+Zy0+Y2ZsYWdzJlJFR19JQ0FTRSkgeworCWlmIChwLT5nLT5jZmxhZ3MmTVlfUkVHX0lDQVNF KSB7CiAJCXJlZ2lzdGVyIGludCBpOwogCQlyZWdpc3RlciBpbnQgY2k7CiAKQEAgLTY0Miw3ICs2 NDIsNyBAQCByZWdpc3RlciBzdHJ1Y3QgcGFyc2UgKnA7CiAJCQkJQ0hzdWIoY3MsIGkpOwogCQkJ ZWxzZQogCQkJCUNIYWRkKGNzLCBpKTsKLQkJaWYgKHAtPmctPmNmbGFncyZSRUdfTkVXTElORSkK KwkJaWYgKHAtPmctPmNmbGFncyZNWV9SRUdfTkVXTElORSkKIAkJCUNIc3ViKGNzLCAnXG4nKTsK IAkJaWYgKGNzLT5tdWx0aXMgIT0gTlVMTCkKIAkJCW1jaW52ZXJ0KHAsIGNzKTsKQEAgLTY3Niw3 ICs2NzYsNyBAQCByZWdpc3RlciBjc2V0ICpjczsKIAkJYyA9IChNT1JFMigpKSA/IFBFRUsyKCkg OiAnXDAnOwogCQlicmVhazsKIAljYXNlICctJzoKLQkJU0VURVJST1IoUkVHX0VSQU5HRSk7CisJ CVNFVEVSUk9SKE1ZX1JFR19FUkFOR0UpOwogCQlyZXR1cm47CQkJLyogTk9URSBSRVRVUk4gKi8K IAlkZWZhdWx0OgogCQljID0gJ1wwJzsKQEAgLTY4NiwyMSArNjg2LDIxIEBAIHJlZ2lzdGVyIGNz ZXQgKmNzOwogCXN3aXRjaCAoYykgewogCWNhc2UgJzonOgkJLyogY2hhcmFjdGVyIGNsYXNzICov CiAJCU5FWFQyKCk7Ci0JCWlmKFJFUVVJUkUoTU9SRSgpLCBSRUdfRUJSQUNLKSkge30KKwkJaWYo UkVRVUlSRShNT1JFKCksIE1ZX1JFR19FQlJBQ0spKSB7fQogCQljID0gUEVFSygpOwotCQlpZihS RVFVSVJFKGMgIT0gJy0nICYmIGMgIT0gJ10nLCBSRUdfRUNUWVBFKSkge30KKwkJaWYoUkVRVUlS RShjICE9ICctJyAmJiBjICE9ICddJywgTVlfUkVHX0VDVFlQRSkpIHt9CiAJCXBfYl9jY2xhc3Mo cCwgY3MpOwotCQlpZihSRVFVSVJFKE1PUkUoKSwgUkVHX0VCUkFDSykpIHt9Ci0JCWlmKFJFUVVJ UkUoRUFUVFdPKCc6JywgJ10nKSwgUkVHX0VDVFlQRSkpIHt9CisJCWlmKFJFUVVJUkUoTU9SRSgp LCBNWV9SRUdfRUJSQUNLKSkge30KKwkJaWYoUkVRVUlSRShFQVRUV08oJzonLCAnXScpLCBNWV9S RUdfRUNUWVBFKSkge30KIAkJYnJlYWs7CiAJY2FzZSAnPSc6CQkvKiBlcXVpdmFsZW5jZSBjbGFz cyAqLwogCQlORVhUMigpOwotCQlpZihSRVFVSVJFKE1PUkUoKSwgUkVHX0VCUkFDSykpIHt9CisJ CWlmKFJFUVVJUkUoTU9SRSgpLCBNWV9SRUdfRUJSQUNLKSkge30KIAkJYyA9IFBFRUsoKTsKLQkJ aWYoUkVRVUlSRShjICE9ICctJyAmJiBjICE9ICddJywgUkVHX0VDT0xMQVRFKSkge30KKwkJaWYo UkVRVUlSRShjICE9ICctJyAmJiBjICE9ICddJywgTVlfUkVHX0VDT0xMQVRFKSkge30KIAkJcF9i X2VjbGFzcyhwLCBjcyk7Ci0JCWlmKFJFUVVJUkUoTU9SRSgpLCBSRUdfRUJSQUNLKSkge30KLQkJ aWYoUkVRVUlSRShFQVRUV08oJz0nLCAnXScpLCBSRUdfRUNPTExBVEUpKSB7fQorCQlpZihSRVFV SVJFKE1PUkUoKSwgTVlfUkVHX0VCUkFDSykpIHt9CisJCWlmKFJFUVVJUkUoRUFUVFdPKCc9Jywg J10nKSwgTVlfUkVHX0VDT0xMQVRFKSkge30KIAkJYnJlYWs7CiAJZGVmYXVsdDoJCS8qIHN5bWJv bCwgb3JkaW5hcnkgY2hhcmFjdGVyLCBvciByYW5nZSAqLwogLyogeHh4IHJldmlzaW9uIG5lZWRl ZCBmb3IgbXVsdGljaGFyIHN0dWZmICovCkBAIC03MTUsNyArNzE1LDcgQEAgcmVnaXN0ZXIgY3Nl dCAqY3M7CiAJCX0gZWxzZQogCQkJZmluaXNoID0gc3RhcnQ7CiAvKiB4eHggd2hhdCBhYm91dCBz aWduZWQgY2hhcnMgaGVyZS4uLiAqLwotCQlpZihSRVFVSVJFKHN0YXJ0IDw9IGZpbmlzaCwgUkVH X0VSQU5HRSkpIHt9CisJCWlmKFJFUVVJUkUoc3RhcnQgPD0gZmluaXNoLCBNWV9SRUdfRVJBTkdF KSkge30KIAkJZm9yIChpID0gc3RhcnQ7IGkgPD0gZmluaXNoOyBpKyspCiAJCQlDSGFkZChjcywg aSk7CiAJCWJyZWFrOwpAQCAtNzQzLDcgKzc0Myw3IEBAIHJlZ2lzdGVyIGNzZXQgKmNzOwogCQkJ YnJlYWs7CiAJaWYgKGNwLT5uYW1lID09IE5VTEwpIHsKIAkJLyogb29wcywgZGlkbid0IGZpbmQg aXQgKi8KLQkJU0VURVJST1IoUkVHX0VDVFlQRSk7CisJCVNFVEVSUk9SKE1ZX1JFR19FQ1RZUEUp OwogCQlyZXR1cm47CiAJfQogCkBAIC03OTYsMTMgKzc5NiwxMyBAQCByZWdpc3RlciBzdHJ1Y3Qg cGFyc2UgKnA7CiB7CiAJcmVnaXN0ZXIgY2hhciB2YWx1ZTsKIAotCWlmKFJFUVVJUkUoTU9SRSgp LCBSRUdfRUJSQUNLKSkge30KKwlpZihSRVFVSVJFKE1PUkUoKSwgTVlfUkVHX0VCUkFDSykpIHt9 CiAJaWYgKCFFQVRUV08oJ1snLCAnLicpKQogCQlyZXR1cm4oR0VUTkVYVCgpKTsKIAogCS8qIGNv bGxhdGluZyBzeW1ib2wgKi8KIAl2YWx1ZSA9IHBfYl9jb2xsX2VsZW0ocCwgJy4nKTsKLQlpZihS RVFVSVJFKEVBVFRXTygnLicsICddJyksIFJFR19FQ09MTEFURSkpIHt9CisJaWYoUkVRVUlSRShF QVRUV08oJy4nLCAnXScpLCBNWV9SRUdfRUNPTExBVEUpKSB7fQogCXJldHVybih2YWx1ZSk7CiB9 CiAKQEAgLTgyNSw3ICs4MjUsNyBAQCBpbnQgZW5kYzsJCQkvKiBuYW1lIGVuZGVkIGJ5IGVuZGMs J10nICovCiAJd2hpbGUgKE1PUkUoKSAmJiAhU0VFVFdPKGVuZGMsICddJykpCiAJCU5FWFQoKTsK IAlpZiAoIU1PUkUoKSkgewotCQlTRVRFUlJPUihSRUdfRUJSQUNLKTsKKwkJU0VURVJST1IoTVlf UkVHX0VCUkFDSyk7CiAJCXJldHVybigwKTsKIAl9CiAJbGVuID0gcC0+bmV4dCAtIHNwOwpAQCAt ODM0LDcgKzgzNCw3IEBAIGludCBlbmRjOwkJCS8qIG5hbWUgZW5kZWQgYnkgZW5kYywnXScgKi8K IAkJCXJldHVybihjcC0+Y29kZSk7CS8qIGtub3duIG5hbWUgKi8KIAlpZiAobGVuID09IDEpCiAJ CXJldHVybigqc3ApOwkvKiBzaW5nbGUgY2hhcmFjdGVyICovCi0JU0VURVJST1IoUkVHX0VDT0xM QVRFKTsJCQkvKiBuZWl0aGVyICovCisJU0VURVJST1IoTVlfUkVHX0VDT0xMQVRFKTsJCQkvKiBu ZWl0aGVyICovCiAJcmV0dXJuKDApOwogfQogCkBAIC05MTEsNyArOTExLDcgQEAgcmVnaXN0ZXIg aW50IGNoOwogewogCXJlZ2lzdGVyIGNhdF90ICpjYXAgPSBwLT5nLT5jYXRlZ29yaWVzOwogCi0J aWYgKChwLT5nLT5jZmxhZ3MmUkVHX0lDQVNFKSAmJiBteV9pc2FscGhhKHAtPmNoYXJzZXQsY2gp ICYmIAorCWlmICgocC0+Zy0+Y2ZsYWdzJk1ZX1JFR19JQ0FTRSkgJiYgbXlfaXNhbHBoYShwLT5j aGFyc2V0LGNoKSAmJiAKIAkgICAgIG90aGVyY2FzZShwLT5jaGFyc2V0LGNoKSAhPSBjaCkKIAkJ Ym90aGNhc2VzKHAsIGNoKTsKIAllbHNlIHsKQEAgLTkyMiw3ICs5MjIsNyBAQCByZWdpc3RlciBp bnQgY2g7CiB9CiAKIC8qCi0gLSBub25uZXdsaW5lIC0gZW1pdCBSRUdfTkVXTElORSB2ZXJzaW9u IG9mIE9BTlkKKyAtIG5vbm5ld2xpbmUgLSBlbWl0IE1ZX1JFR19ORVdMSU5FIHZlcnNpb24gb2Yg T0FOWQogID09IHN0YXRpYyB2b2lkIG5vbm5ld2xpbmUocmVnaXN0ZXIgc3RydWN0IHBhcnNlICpw KTsKICAqCiAgKiBCb3ksIGlzIHRoaXMgaW1wbGVtZW50YXRpb24gZXZlciBhIGtsdWRnZS4uLgpA QCAtMTAxNCw3ICsxMDE0LDcgQEAgaW50IHRvOwkJCQkvKiB0byB0aGlzIG51bWJlciBvZiB0aW1l cyAobQogCQlyZXBlYXQocCwgY29weSwgZnJvbS0xLCB0byk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6 CQkJLyogImNhbid0IGhhcHBlbiIgKi8KLQkJU0VURVJST1IoUkVHX0FTU0VSVCk7CS8qIGp1c3Qg aW4gY2FzZSAqLworCQlTRVRFUlJPUihNWV9SRUdfQVNTRVJUKTsJLyoganVzdCBpbiBjYXNlICov CiAJCWJyZWFrOwogCX0KIH0KQEAgLTEwNzQsNyArMTA3NCw3IEBAIHJlZ2lzdGVyIHN0cnVjdCBw YXJzZSAqcDsKIAkJCQkJCQkJMCwgY3NzKTsKIAkJZWxzZSB7CiAJCQlubyA9IDA7Ci0JCQlTRVRF UlJPUihSRUdfRVNQQUNFKTsKKwkJCVNFVEVSUk9SKE1ZX1JFR19FU1BBQ0UpOwogCQkJLyogY2Fs bGVyJ3MgcmVzcG9uc2liaWxpdHkgbm90IHRvIGRvIHNldCBvcHMgKi8KIAkJfQogCX0KQEAgLTEx MTUsNyArMTExNSw3IEBAIHJlZ2lzdGVyIGNzZXQgKmNzOwogICoKICAqIFRoZSBtYWluIHRhc2sg aGVyZSBpcyBtZXJnaW5nIGlkZW50aWNhbCBzZXRzLiAgVGhpcyBpcyB1c3VhbGx5IGEgd2FzdGUK ICAqIG9mIHRpbWUgKGFsdGhvdWdoIHRoZSBoYXNoIGNvZGUgbWluaW1pemVzIHRoZSBvdmVyaGVh ZCksIGJ1dCBjYW4gd2luCi0gKiBiaWcgaWYgUkVHX0lDQVNFIGlzIGJlaW5nIHVzZWQuICBSRUdf SUNBU0UsIGJ5IHRoZSB3YXksIGlzIHdoeSB0aGUgaGFzaAorICogYmlnIGlmIE1ZX1JFR19JQ0FT RSBpcyBiZWluZyB1c2VkLiAgTVlfUkVHX0lDQVNFLCBieSB0aGUgd2F5LCBpcyB3aHkgdGhlIGhh c2gKICAqIGlzIGRvbmUgdXNpbmcgYWRkaXRpb24gcmF0aGVyIHRoYW4geG9yIC0tIGFsbCBBU0NJ SSBbYUFdIHNldHMgeG9yIHRvCiAgKiB0aGUgc2FtZSB2YWx1ZSEKICAqLwpAQCAtMTIwNyw3ICsx MjA3LDcgQEAgcmVnaXN0ZXIgY2hhciAqY3A7CiAJZWxzZQogCQljcy0+bXVsdGlzID0gcmVhbGxv Yyhjcy0+bXVsdGlzLCBjcy0+c211bHRpcyk7CiAJaWYgKGNzLT5tdWx0aXMgPT0gTlVMTCkgewot CQlTRVRFUlJPUihSRUdfRVNQQUNFKTsKKwkJU0VURVJST1IoTVlfUkVHX0VTUEFDRSk7CiAJCXJl dHVybjsKIAl9CiAKQEAgLTE0NTEsNyArMTQ1MSw3IEBAIHJlZ2lzdGVyIHNvcG5vIHNpemU7CiAK IAlzcCA9IChzb3AgKilyZWFsbG9jKHAtPnN0cmlwLCBzaXplKnNpemVvZihzb3ApKTsKIAlpZiAo c3AgPT0gTlVMTCkgewotCQlTRVRFUlJPUihSRUdfRVNQQUNFKTsKKwkJU0VURVJST1IoTVlfUkVH X0VTUEFDRSk7CiAJCXJldHVybjsKIAl9CiAJcC0+c3RyaXAgPSBzcDsKQEAgLTE0NzAsNyArMTQ3 MCw3IEBAIHJlZ2lzdGVyIHN0cnVjdCByZV9ndXRzICpnOwogCWctPm5zdGF0ZXMgPSBwLT5zbGVu OwogCWctPnN0cmlwID0gKHNvcCAqKXJlYWxsb2MoKGNoYXIgKilwLT5zdHJpcCwgcC0+c2xlbiAq IHNpemVvZihzb3ApKTsKIAlpZiAoZy0+c3RyaXAgPT0gTlVMTCkgewotCQlTRVRFUlJPUihSRUdf RVNQQUNFKTsKKwkJU0VURVJST1IoTVlfUkVHX0VTUEFDRSk7CiAJCWctPnN0cmlwID0gcC0+c3Ry aXA7CiAJfQogfQoKPT09IG1vZGlmaWVkIGZpbGUgJ3JlZ2V4L3JlZ2Vycm9yLmMnCi0tLSBhL3Jl Z2V4L3JlZ2Vycm9yLmMJMjAwNS0wOS0yOSAwMToyMDozMSArMDAwMAorKysgYi9yZWdleC9yZWdl cnJvci5jCTIwMTAtMDctMjYgMTA6Mzk6MzggKzAwMDAKQEAgLTcsNDYgKzcsNDYgQEAKICNpbmNs dWRlICJyZWdlcnJvci5paCIKIAogLyoKLSA9ICNkZWZpbmUJUkVHX05PTUFUQ0gJIDEKLSA9ICNk ZWZpbmUJUkVHX0JBRFBBVAkgMgotID0gI2RlZmluZQlSRUdfRUNPTExBVEUJIDMKLSA9ICNkZWZp bmUJUkVHX0VDVFlQRQkgNAotID0gI2RlZmluZQlSRUdfRUVTQ0FQRQkgNQotID0gI2RlZmluZQlS RUdfRVNVQlJFRwkgNgotID0gI2RlZmluZQlSRUdfRUJSQUNLCSA3Ci0gPSAjZGVmaW5lCVJFR19F UEFSRU4JIDgKLSA9ICNkZWZpbmUJUkVHX0VCUkFDRQkgOQotID0gI2RlZmluZQlSRUdfQkFEQlIJ MTAKLSA9ICNkZWZpbmUJUkVHX0VSQU5HRQkxMQotID0gI2RlZmluZQlSRUdfRVNQQUNFCTEyCi0g PSAjZGVmaW5lCVJFR19CQURSUFQJMTMKLSA9ICNkZWZpbmUJUkVHX0VNUFRZCTE0Ci0gPSAjZGVm aW5lCVJFR19BU1NFUlQJMTUKLSA9ICNkZWZpbmUJUkVHX0lOVkFSRwkxNgotID0gI2RlZmluZQlS RUdfQVRPSQkyNTUJLy8gY29udmVydCBuYW1lIHRvIG51bWJlciAoISkKLSA9ICNkZWZpbmUJUkVH X0lUT0EJMDQwMAkvLyBjb252ZXJ0IG51bWJlciB0byBuYW1lICghKQorID0gI2RlZmluZQlNWV9S RUdfTk9NQVRDSAkgMQorID0gI2RlZmluZQlNWV9SRUdfQkFEUEFUCSAyCisgPSAjZGVmaW5lCU1Z X1JFR19FQ09MTEFURQkgMworID0gI2RlZmluZQlNWV9SRUdfRUNUWVBFCSA0CisgPSAjZGVmaW5l CU1ZX1JFR19FRVNDQVBFCSA1CisgPSAjZGVmaW5lCU1ZX1JFR19FU1VCUkVHCSA2CisgPSAjZGVm aW5lCU1ZX1JFR19FQlJBQ0sJIDcKKyA9ICNkZWZpbmUJTVlfUkVHX0VQQVJFTgkgOAorID0gI2Rl ZmluZQlNWV9SRUdfRUJSQUNFCSA5CisgPSAjZGVmaW5lCU1ZX1JFR19CQURCUgkxMAorID0gI2Rl ZmluZQlNWV9SRUdfRVJBTkdFCTExCisgPSAjZGVmaW5lCU1ZX1JFR19FU1BBQ0UJMTIKKyA9ICNk ZWZpbmUJTVlfUkVHX0JBRFJQVAkxMworID0gI2RlZmluZQlNWV9SRUdfRU1QVFkJMTQKKyA9ICNk ZWZpbmUJTVlfUkVHX0FTU0VSVAkxNQorID0gI2RlZmluZQlNWV9SRUdfSU5WQVJHCTE2CisgPSAj ZGVmaW5lCU1ZX1JFR19BVE9JCTI1NQkvLyBjb252ZXJ0IG5hbWUgdG8gbnVtYmVyICghKQorID0g I2RlZmluZQlNWV9SRUdfSVRPQQkwNDAwCS8vIGNvbnZlcnQgbnVtYmVyIHRvIG5hbWUgKCEpCiAg Ki8KIHN0YXRpYyBzdHJ1Y3QgcmVyciB7CiAJaW50IGNvZGU7CiAJY29uc3QgY2hhciAqbmFtZTsK ICAgICAgICAgY29uc3QgY2hhciAqZXhwbGFpbjsKIH0gcmVycnNbXSA9IHsKLQl7UkVHX05PTUFU Q0gsCSJSRUdfTk9NQVRDSCIsCSJyZWdleGVjKCkgZmFpbGVkIHRvIG1hdGNoIn0sCi0Je1JFR19C QURQQVQsCSJSRUdfQkFEUEFUIiwJImludmFsaWQgcmVndWxhciBleHByZXNzaW9uIn0sCi0Je1JF R19FQ09MTEFURSwJIlJFR19FQ09MTEFURSIsCSJpbnZhbGlkIGNvbGxhdGluZyBlbGVtZW50In0s Ci0Je1JFR19FQ1RZUEUsCSJSRUdfRUNUWVBFIiwJImludmFsaWQgY2hhcmFjdGVyIGNsYXNzIn0s Ci0Je1JFR19FRVNDQVBFLAkiUkVHX0VFU0NBUEUiLAkidHJhaWxpbmcgYmFja3NsYXNoIChcXCki fSwKLQl7UkVHX0VTVUJSRUcsCSJSRUdfRVNVQlJFRyIsCSJpbnZhbGlkIGJhY2tyZWZlcmVuY2Ug bnVtYmVyIn0sCi0Je1JFR19FQlJBQ0ssCSJSRUdfRUJSQUNLIiwJImJyYWNrZXRzIChbIF0pIG5v dCBiYWxhbmNlZCJ9LAotCXtSRUdfRVBBUkVOLAkiUkVHX0VQQVJFTiIsCSJwYXJlbnRoZXNlcyBu b3QgYmFsYW5jZWQifSwKLQl7UkVHX0VCUkFDRSwJIlJFR19FQlJBQ0UiLAkiYnJhY2VzIG5vdCBi YWxhbmNlZCJ9LAotCXtSRUdfQkFEQlIsCSJSRUdfQkFEQlIiLAkiaW52YWxpZCByZXBldGl0aW9u IGNvdW50KHMpIn0sCi0Je1JFR19FUkFOR0UsCSJSRUdfRVJBTkdFIiwJImludmFsaWQgY2hhcmFj dGVyIHJhbmdlIn0sCi0Je1JFR19FU1BBQ0UsCSJSRUdfRVNQQUNFIiwJIm91dCBvZiBtZW1vcnki fSwKLQl7UkVHX0JBRFJQVCwJIlJFR19CQURSUFQiLAkicmVwZXRpdGlvbi1vcGVyYXRvciBvcGVy YW5kIGludmFsaWQifSwKLQl7UkVHX0VNUFRZLAkiUkVHX0VNUFRZIiwJImVtcHR5IChzdWIpZXhw cmVzc2lvbiJ9LAotCXtSRUdfQVNTRVJULAkiUkVHX0FTU0VSVCIsCSJcImNhbid0IGhhcHBlblwi IC0tIHlvdSBmb3VuZCBhIGJ1ZyJ9LAotCXtSRUdfSU5WQVJHLAkiUkVHX0lOVkFSRyIsCSJpbnZh bGlkIGFyZ3VtZW50IHRvIHJlZ2V4IHJvdXRpbmUifSwKKwl7TVlfUkVHX05PTUFUQ0gsCSJNWV9S RUdfTk9NQVRDSCIsCSJyZWdleGVjKCkgZmFpbGVkIHRvIG1hdGNoIn0sCisJe01ZX1JFR19CQURQ QVQsCSJNWV9SRUdfQkFEUEFUIiwJImludmFsaWQgcmVndWxhciBleHByZXNzaW9uIn0sCisJe01Z X1JFR19FQ09MTEFURSwJIk1ZX1JFR19FQ09MTEFURSIsCSJpbnZhbGlkIGNvbGxhdGluZyBlbGVt ZW50In0sCisJe01ZX1JFR19FQ1RZUEUsCSJNWV9SRUdfRUNUWVBFIiwJImludmFsaWQgY2hhcmFj dGVyIGNsYXNzIn0sCisJe01ZX1JFR19FRVNDQVBFLAkiTVlfUkVHX0VFU0NBUEUiLAkidHJhaWxp bmcgYmFja3NsYXNoIChcXCkifSwKKwl7TVlfUkVHX0VTVUJSRUcsCSJNWV9SRUdfRVNVQlJFRyIs CSJpbnZhbGlkIGJhY2tyZWZlcmVuY2UgbnVtYmVyIn0sCisJe01ZX1JFR19FQlJBQ0ssCSJNWV9S RUdfRUJSQUNLIiwJImJyYWNrZXRzIChbIF0pIG5vdCBiYWxhbmNlZCJ9LAorCXtNWV9SRUdfRVBB UkVOLAkiTVlfUkVHX0VQQVJFTiIsCSJwYXJlbnRoZXNlcyBub3QgYmFsYW5jZWQifSwKKwl7TVlf UkVHX0VCUkFDRSwJIk1ZX1JFR19FQlJBQ0UiLAkiYnJhY2VzIG5vdCBiYWxhbmNlZCJ9LAorCXtN WV9SRUdfQkFEQlIsCSJNWV9SRUdfQkFEQlIiLAkiaW52YWxpZCByZXBldGl0aW9uIGNvdW50KHMp In0sCisJe01ZX1JFR19FUkFOR0UsCSJNWV9SRUdfRVJBTkdFIiwJImludmFsaWQgY2hhcmFjdGVy IHJhbmdlIn0sCisJe01ZX1JFR19FU1BBQ0UsCSJNWV9SRUdfRVNQQUNFIiwJIm91dCBvZiBtZW1v cnkifSwKKwl7TVlfUkVHX0JBRFJQVCwJIk1ZX1JFR19CQURSUFQiLAkicmVwZXRpdGlvbi1vcGVy YXRvciBvcGVyYW5kIGludmFsaWQifSwKKwl7TVlfUkVHX0VNUFRZLAkiTVlfUkVHX0VNUFRZIiwJ ImVtcHR5IChzdWIpZXhwcmVzc2lvbiJ9LAorCXtNWV9SRUdfQVNTRVJULAkiTVlfUkVHX0FTU0VS VCIsCSJcImNhbid0IGhhcHBlblwiIC0tIHlvdSBmb3VuZCBhIGJ1ZyJ9LAorCXtNWV9SRUdfSU5W QVJHLAkiTVlfUkVHX0lOVkFSRyIsCSJpbnZhbGlkIGFyZ3VtZW50IHRvIHJlZ2V4IHJvdXRpbmUi fSwKIAl7MCwJCSIiLAkJIioqKiB1bmtub3duIHJlZ2V4cCBlcnJvciBjb2RlICoqKiJ9LAogfTsK IApAQCAtNjAsMjIgKzYwLDIyIEBAIG15X3JlZ2Vycm9yKGludCBlcnJjb2RlLCBjb25zdCBteV9y ZWdleF8KIHsKIAlyZWdpc3RlciBzdHJ1Y3QgcmVyciAqcjsKIAlyZWdpc3RlciBzaXplX3QgbGVu OwotCXJlZ2lzdGVyIGludCB0YXJnZXQgPSBlcnJjb2RlICZ+IFJFR19JVE9BOworCXJlZ2lzdGVy IGludCB0YXJnZXQgPSBlcnJjb2RlICZ+IE1ZX1JFR19JVE9BOwogCXJlZ2lzdGVyIGNoYXIgKnM7 CiAJY2hhciBjb252YnVmWzUwXTsKIAotCWlmIChlcnJjb2RlID09IFJFR19BVE9JKQorCWlmIChl cnJjb2RlID09IE1ZX1JFR19BVE9JKQogCQlzID0gcmVnYXRvaShwcmVnLCBjb252YnVmKTsKIAll bHNlIHsKIAkJZm9yIChyID0gcmVycnM7IHItPmNvZGUgIT0gMDsgcisrKQogCQkJaWYgKHItPmNv ZGUgPT0gdGFyZ2V0KQogCQkJCWJyZWFrOwogCi0JCWlmIChlcnJjb2RlJlJFR19JVE9BKSB7CisJ CWlmIChlcnJjb2RlJk1ZX1JFR19JVE9BKSB7CiAJCQlpZiAoci0+Y29kZSAhPSAwKQogCQkJCSh2 b2lkKSBzdHJjcHkoY29udmJ1Ziwgci0+bmFtZSk7CiAJCQllbHNlCi0JCQkJc3ByaW50Zihjb252 YnVmLCAiUkVHXzB4JXgiLCB0YXJnZXQpOworCQkJCXNwcmludGYoY29udmJ1ZiwgIk1ZX1JFR18w eCV4IiwgdGFyZ2V0KTsKIAkJCWFzc2VydChzdHJsZW4oY29udmJ1ZikgPCBzaXplb2YoY29udmJ1 ZikpOwogCQkJcyA9IGNvbnZidWY7CiAJCX0gZWxzZQpAQCAtOTYsNyArOTYsNyBAQCBteV9yZWdl cnJvcihpbnQgZXJyY29kZSwgY29uc3QgbXlfcmVnZXhfCiB9CiAKIC8qCi0gLSByZWdhdG9pIC0g aW50ZXJuYWwgcm91dGluZSB0byBpbXBsZW1lbnQgUkVHX0FUT0kKKyAtIHJlZ2F0b2kgLSBpbnRl cm5hbCByb3V0aW5lIHRvIGltcGxlbWVudCBNWV9SRUdfQVRPSQogID09IHN0YXRpYyBjaGFyICpy ZWdhdG9pKGNvbnN0IHJlZ2V4X3QgKnByZWcsIGNoYXIgKmxvY2FsYnVmKTsKICAqLwogc3RhdGlj IGNoYXIgKgoKPT09IG1vZGlmaWVkIGZpbGUgJ3JlZ2V4L3JlZ2V4Mi5oJwotLS0gYS9yZWdleC9y ZWdleDIuaAkyMDA5LTExLTA5IDExOjMyOjQ4ICswMDAwCisrKyBiL3JlZ2V4L3JlZ2V4Mi5oCTIw MTAtMDctMjYgMTA6Mzk6MzggKzAwMDAKQEAgLTEsMTUgKzEsMTUgQEAKIC8qCiAgKiBGaXJzdCwg dGhlIHN0dWZmIHRoYXQgZW5kcyB1cCBpbiB0aGUgb3V0c2lkZS13b3JsZCBpbmNsdWRlIGZpbGUK LSA9IHR5cGVkZWYgb2ZmX3QgcmVnb2ZmX3Q7CisgPSB0eXBlZGVmIG9mZl90IG15X3JlZ29mZl90 OwogID0gdHlwZWRlZiBzdHJ1Y3QgewogID0gCWludCByZV9tYWdpYzsKICA9IAlzaXplX3QgcmVf bnN1YjsJCS8vIG51bWJlciBvZiBwYXJlbnRoZXNpemVkIHN1YmV4cHJlc3Npb25zCi0gPSAJY29u c3QgY2hhciAqcmVfZW5kcDsJLy8gZW5kIHBvaW50ZXIgZm9yIFJFR19QRU5ECisgPSAJY29uc3Qg Y2hhciAqcmVfZW5kcDsJLy8gZW5kIHBvaW50ZXIgZm9yIE1ZX1JFR19QRU5ECiAgPSAJc3RydWN0 IHJlX2d1dHMgKnJlX2c7CS8vIG5vbmUgb2YgeW91ciBidXNpbmVzcyA6LSkKICA9IH0gcmVnZXhf dDsKICA9IHR5cGVkZWYgc3RydWN0IHsKLSA9IAlyZWdvZmZfdCBybV9zbzsJCS8vIHN0YXJ0IG9m IG1hdGNoCi0gPSAJcmVnb2ZmX3Qgcm1fZW87CQkvLyBlbmQgb2YgbWF0Y2gKKyA9IAlteV9yZWdv ZmZfdCBybV9zbzsJCS8vIHN0YXJ0IG9mIG1hdGNoCisgPSAJbXlfcmVnb2ZmX3Qgcm1fZW87CQkv LyBlbmQgb2YgbWF0Y2gKICA9IH0gcmVnbWF0Y2hfdDsKICAqLwogLyoKCj09PSBtb2RpZmllZCBm aWxlICdyZWdleC9yZWdleGVjLmMnCi0tLSBhL3JlZ2V4L3JlZ2V4ZWMuYwkyMDA3LTAzLTI4IDE3 OjQ2OjQyICswMDAwCisrKyBiL3JlZ2V4L3JlZ2V4ZWMuYwkyMDEwLTA3LTI2IDEwOjM5OjM4ICsw MDAwCkBAIC03Niw3ICs3Niw3IEBACiAjZGVmaW5lCUVRKGEsIGIpCShtZW1jbXAoYSwgYiwgbS0+ Zy0+bnN0YXRlcykgPT0gMCkKICNkZWZpbmUJU1RBVEVWQVJTCWludCB2bjsgY2hhciAqc3BhY2UK ICNkZWZpbmUJU1RBVEVTRVRVUChtLCBudikJeyAobSktPnNwYWNlID0gbWFsbG9jKChudikqKG0p LT5nLT5uc3RhdGVzKTsgXAotCQkJCWlmICgobSktPnNwYWNlID09IE5VTEwpIHJldHVybihSRUdf RVNQQUNFKTsgXAorCQkJCWlmICgobSktPnNwYWNlID09IE5VTEwpIHJldHVybihNWV9SRUdfRVNQ QUNFKTsgXAogCQkJCShtKS0+dm4gPSAwOyB9CiAjZGVmaW5lCVNUQVRFVEVBUkRPV04obSkJeyBm cmVlKChtKS0+c3BhY2UpOyB9CiAjZGVmaW5lCVNFVFVQKHYpCSgodikgPSAmbS0+c3BhY2VbbS0+ dm4rKyAqIG0tPmctPm5zdGF0ZXNdKQpAQCAtOTgsMTggKzk4LDE4IEBACiAgLSByZWdleGVjIC0g aW50ZXJmYWNlIGZvciBtYXRjaGluZwogID0gZXh0ZXJuIGludCByZWdleGVjKGNvbnN0IHJlZ2V4 X3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIFwKICA9CQkJCQlyZWdtYXRjaF90IFtdLCBpbnQp OwotID0gI2RlZmluZQlSRUdfTk9UQk9MCTAwMDAxCi0gPSAjZGVmaW5lCVJFR19OT1RFT0wJMDAw MDIKLSA9ICNkZWZpbmUJUkVHX1NUQVJURU5ECTAwMDA0Ci0gPSAjZGVmaW5lCVJFR19UUkFDRQkw MDQwMAkvLyB0cmFjaW5nIG9mIGV4ZWN1dGlvbgotID0gI2RlZmluZQlSRUdfTEFSR0UJMDEwMDAJ Ly8gZm9yY2UgbGFyZ2UgcmVwcmVzZW50YXRpb24KLSA9ICNkZWZpbmUJUkVHX0JBQ0tSCTAyMDAw CS8vIGZvcmNlIHVzZSBvZiBiYWNrcmVmIGNvZGUKKyA9ICNkZWZpbmUJTVlfUkVHX05PVEJPTAkw MDAwMQorID0gI2RlZmluZQlNWV9SRUdfTk9URU9MCTAwMDAyCisgPSAjZGVmaW5lCU1ZX1JFR19T VEFSVEVORAkwMDAwNAorID0gI2RlZmluZQlNWV9SRUdfVFJBQ0UJMDA0MDAJLy8gdHJhY2luZyBv ZiBleGVjdXRpb24KKyA9ICNkZWZpbmUJTVlfUkVHX0xBUkdFCTAxMDAwCS8vIGZvcmNlIGxhcmdl IHJlcHJlc2VudGF0aW9uCisgPSAjZGVmaW5lCU1ZX1JFR19CQUNLUgkwMjAwMAkvLyBmb3JjZSB1 c2Ugb2YgYmFja3JlZiBjb2RlCiAgKgogICogV2UgcHV0IHRoaXMgaGVyZSBzbyB3ZSBjYW4gZXhw bG9pdCBrbm93bGVkZ2Ugb2YgdGhlIHN0YXRlIHJlcHJlc2VudGF0aW9uCiAgKiB3aGVuIGNob29z aW5nIHdoaWNoIG1hdGNoZXIgdG8gY2FsbC4gIEFsc28sIGJ5IHRoaXMgcG9pbnQgdGhlIG1hdGNo ZXJzCiAgKiBoYXZlIGJlZW4gcHJvdG90eXBlZC4KICAqLwotaW50CQkJCS8qIDAgc3VjY2Vzcywg UkVHX05PTUFUQ0ggZmFpbHVyZSAqLworaW50CQkJCS8qIDAgc3VjY2VzcywgTVlfUkVHX05PTUFU Q0ggZmFpbHVyZSAqLwogbXlfcmVnZXhlYyhwcmVnLCBzdHIsIG5tYXRjaCwgcG1hdGNoLCBlZmxh Z3MpCiBjb25zdCBteV9yZWdleF90ICpwcmVnOwogY29uc3QgY2hhciAqc3RyOwpAQCAtMTIxLDE4 ICsxMjEsMTggQEAgaW50IGVmbGFnczsKICNpZmRlZiBSRURFQlVHCiAjCWRlZmluZQlHT09ERkxB R1MoZikJKGYpCiAjZWxzZQotIwlkZWZpbmUJR09PREZMQUdTKGYpCSgoZikmKFJFR19OT1RCT0x8 UkVHX05PVEVPTHxSRUdfU1RBUlRFTkQpKQorIwlkZWZpbmUJR09PREZMQUdTKGYpCSgoZikmKE1Z X1JFR19OT1RCT0x8TVlfUkVHX05PVEVPTHxNWV9SRUdfU1RBUlRFTkQpKQogI2VuZGlmCiAKIAlp ZiAocHJlZy0+cmVfbWFnaWMgIT0gTUFHSUMxIHx8IGctPm1hZ2ljICE9IE1BR0lDMikKLQkJcmV0 dXJuKFJFR19CQURQQVQpOworCQlyZXR1cm4oTVlfUkVHX0JBRFBBVCk7CiAJYXNzZXJ0KCEoZy0+ aWZsYWdzJkJBRCkpOwogCWlmIChnLT5pZmxhZ3MmQkFEKQkJLyogYmFja3N0b3AgZm9yIG5vLWRl YnVnIGNhc2UgKi8KLQkJcmV0dXJuKFJFR19CQURQQVQpOworCQlyZXR1cm4oTVlfUkVHX0JBRFBB VCk7CiAJZWZsYWdzID0gR09PREZMQUdTKGVmbGFncyk7CiAKIAlpZiAoKHNpemVfdCkgZy0+bnN0 YXRlcyA8PSBDSEFSX0JJVCpzaXplb2Yoc3RhdGVzMSkgJiYKLQkgICAgIShlZmxhZ3MmUkVHX0xB UkdFKSkKKwkgICAgIShlZmxhZ3MmTVlfUkVHX0xBUkdFKSkKIAkJcmV0dXJuKHNtYXRjaGVyKHBy ZWctPmNoYXJzZXQsIGcsIChjaGFyICopc3RyLCBubWF0Y2gsIHBtYXRjaCwgZWZsYWdzKSk7CiAJ ZWxzZQogCQlyZXR1cm4obG1hdGNoZXIocHJlZy0+Y2hhcnNldCwgZywgKGNoYXIgKilzdHIsIG5t YXRjaCwgcG1hdGNoLCBlZmxhZ3MpKTsKCj09PSBtb2RpZmllZCBmaWxlICdyZWdleC90ZXN0cycK LS0tIGEvcmVnZXgvdGVzdHMJMjAwMC0wNy0zMSAxOToyOToxNCArMDAwMAorKysgYi9yZWdleC90 ZXN0cwkyMDEwLTA3LTI2IDEwOjM5OjM4ICswMDAwCkBAIC0yODMsNyArMjgzLDEwIEBAIGFbWzph bHBoOl1dCSZDCUVDVFlQRQogYVtbOmFscGhhYmV0Ol1dCSZDCUVDVFlQRQogW1s6YWxudW06XV0r CS0JLSVAYe+/vS0JYe+/vQogW1s6YWxwaGE6XV0rCS0JLSVAYVgwLQlhWAotW1s6Ymxhbms6XV0r CS0JYVNTVGIJU1NUCisjIGN0eXBlX2xhdGluMSBkb2VzIG5vdCB0YWcgJ1x0JyBhcyBibGFuaywg c28gd2Ugd2lsbCBtYXRjaCBvbmx5IHR3byBzcGFjZXMuCisjIFNlZTogQnVnICM1NTQyNyBSRUdF WFAgZG9lcyBub3QgcmVjb2duaXplICdcdCcgYXMgWzpibGFuazpdCisjW1s6Ymxhbms6XV0rCS0J YVNTVGIJU1NUCitbWzpibGFuazpdXSsJLQlhU1NUYglTUwogW1s6Y250cmw6XV0rCS0JYU5UYglO VAogW1s6ZGlnaXQ6XV0rCS0JYTAxOWIJMDE5CiBbWzpncmFwaDpdXSsJLQlTYSViUwlhJWIKCj09 PSBtb2RpZmllZCBmaWxlICdzcWwvaXRlbV9jbXBmdW5jLmNjJwotLS0gYS9zcWwvaXRlbV9jbXBm dW5jLmNjCTIwMTAtMDctMjMgMjA6NTk6NDIgKzAwMDAKKysrIGIvc3FsL2l0ZW1fY21wZnVuYy5j YwkyMDEwLTA3LTI2IDEwOjM5OjM4ICswMDAwCkBAIC00Nzk1LDggKzQ3OTUsOCBAQCBJdGVtX2Z1 bmNfcmVnZXg6OmZpeF9maWVsZHMoVEhEICp0aGQsIEl0CiAKICAgcmVnZXhfbGliX2ZsYWdzPSAo Y21wX2NvbGxhdGlvbi5jb2xsYXRpb24tPnN0YXRlICYKICAgICAgICAgICAgICAgICAgICAgKE1Z X0NTX0JJTlNPUlQgfCBNWV9DU19DU1NPUlQpKSA/Ci0gICAgICAgICAgICAgICAgICAgUkVHX0VY VEVOREVEIHwgUkVHX05PU1VCIDoKLSAgICAgICAgICAgICAgICAgICBSRUdfRVhURU5ERUQgfCBS RUdfTk9TVUIgfCBSRUdfSUNBU0U7CisgICAgICAgICAgICAgICAgICAgTVlfUkVHX0VYVEVOREVE IHwgTVlfUkVHX05PU1VCIDoKKyAgICAgICAgICAgICAgICAgICBNWV9SRUdfRVhURU5ERUQgfCBN WV9SRUdfTk9TVUIgfCBNWV9SRUdfSUNBU0U7CiAgIC8qCiAgICAgSWYgdGhlIGNhc2Ugb2YgVUNT MiBhbmQgb3RoZXIgbm9uLUFTQ0lJIGNoYXJhY3RlciBzZXRzLAogICAgIHdlIHdpbGwgY29udmVy dCBwYXR0ZXJucyBhbmQgc3RyaW5ncyB0byBVVEY4LgoKPT09IG1vZGlmaWVkIGZpbGUgJ3VuaXR0 ZXN0L2d1bml0L0NNYWtlTGlzdHMudHh0JwotLS0gYS91bml0dGVzdC9ndW5pdC9DTWFrZUxpc3Rz LnR4dAkyMDEwLTA2LTE4IDA5OjA5OjQwICswMDAwCisrKyBiL3VuaXR0ZXN0L2d1bml0L0NNYWtl TGlzdHMudHh0CTIwMTAtMDctMjYgMTA6Mzk6MzggKzAwMDAKQEAgLTE4NSw2ICsxODUsNyBAQCBF TkRJRigpCiBJTkNMVURFX0RJUkVDVE9SSUVTKAogICAke0dURVNUX0lOQ0xVREVfRElSU30KICAg JHtDTUFLRV9TT1VSQ0VfRElSfS9pbmNsdWRlCisgICR7Q01BS0VfU09VUkNFX0RJUn0vcmVnZXgK ICAgJHtDTUFLRV9TT1VSQ0VfRElSfS9zcWwKICAgJHtDTUFLRV9TT1VSQ0VfRElSfS91bml0dGVz dC9teXRhcAogKQpAQCAtMjA2LDcgKzIwNyw3IEBAIElGIChDTUFLRV9DWFhfQ09NUElMRVJfSUQg U1RSRVFVQUwgIlN1blAKIEVORElGKCkKIAogIyBBZGQgdGVzdHMgKGxpbmsgdGhlbSB3aXRoIHNx bCBsaWJyYXJ5KSAKLVNFVChURVNUUyBzcWxfbGlzdCBtZGwgbWRsX215dGFwIHRocmVhZF91dGls cykKK1NFVChURVNUUyBzcWxfbGlzdCBtZGwgbWRsX215dGFwIG15X3JlZ2V4IHRocmVhZF91dGls cykKIEZPUkVBQ0godGVzdCAke1RFU1RTfSkKICAgQUREX0VYRUNVVEFCTEUoJHt0ZXN0fS10ICR7 dGVzdH0tdC5jYykKICAgVEFSR0VUX0xJTktfTElCUkFSSUVTKCR7dGVzdH0tdCBndW5pdCBzcWwp Cgo9PT0gYWRkZWQgZmlsZSAndW5pdHRlc3QvZ3VuaXQvbXlfcmVnZXgtdC5jYycKLS0tIGEvdW5p dHRlc3QvZ3VuaXQvbXlfcmVnZXgtdC5jYwkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBi L3VuaXR0ZXN0L2d1bml0L215X3JlZ2V4LXQuY2MJMjAxMC0wNy0yNiAxMDozOTozOCArMDAwMApA QCAtMCwwICsxLDgyIEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMTAsIE9yYWNsZSBhbmQvb3IgaXRz IGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIAorCisgICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBv ZiB0aGUgTGljZW5zZS4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3 YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9z dG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBICovCisKKy8vIE11c3QgaW5jbHVkZSBndGVzdCBmaXJz dCwgc2luY2UgTXlTUUwgc291cmNlIGhhcyBtYWNyb3MgZm9yIG1pbigpIGV0YyAuLi4uCisjaW5j bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworI2luY2x1ZGUgIm15X3JlZ2V4LmgiCisKKy8qCisgIFRo aXN0IGlzIGp1c3QgYSAqdmVyeSogYmFzaWMgdGVzdCB0aGF0IHRoaW5ncyBjb21waWxlL2xpbmsg YW5kIGV4ZWN1dGUuCisgIFRoZSB0ZXN0IGRhdGEgaXMgdGFrZW4gZnJvbSB0aGUgZmlyc3QgZmV3 IGxpbmVzIGluIHJlZ2V4L3Rlc3RzLgorICBGb3IgYSBmdWxsIHRlc3Qgc3VpdGUsIHNlZSByZWdl eC9tYWluLmMgd2hpY2ggcGFyc2VzIHRlc3QgaW5wdXQKKyAgYW5kIHRlc3RzIGV4cGVjdGVkIHN1 Y2Vzcy9mYWlsdXJlIHdpdGggYmFzaWMvZXh0ZW5kZWQgcmVnZXhwcyBldGMuIGV0Yy4KKyAqLwor CituYW1lc3BhY2UgeworCitjb25zdCBpbnQgTlNVQlM9IDEwOworCitjbGFzcyBSZWdleF90ZXN0 IDogcHVibGljIDo6dGVzdGluZzo6VGVzdAoreworcHJvdGVjdGVkOgorICBSZWdleF90ZXN0KCkK KyAgeworICAgIG1lbXNldCgmcmUsIDAsIHNpemVvZihyZSkpOworICB9CisgIHN0YXRpYyB2b2lk IFRlYXJEb3duVGVzdENhc2UoKQorICB7CisgICAgbXlfcmVnZXhfZW5kKCk7CisgIH0KKworICBt eV9yZWdtYXRjaF90IHN1YnNbTlNVQlNdOworICBteV9yZWdleF90IHJlOworfTsKKworc3RydWN0 IFJlX3Rlc3RfZGF0YQoreworICBjb25zdCBjaGFyKiBwYXR0ZXJuOyAgICAgICAgICAgICAgICAg ICAgICAgICAgLy8gQ29sdW1uIDEgaW4gcmVnZXgvdGVzdHMuCisgIGNvbnN0IGludCAgIGNmbGFn czsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb2x1bW4gMiBpbiByZWdleC90ZXN0cy4K KyAgY29uc3QgY2hhciogaW5wdXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbHVt biAzIGluIHJlZ2V4L3Rlc3RzLgorfTsKKworUmVfdGVzdF9kYXRhIGJhc2ljX2RhdGFbXT0gCit7 CisgIHsgImEiLCAgICAgIE1ZX1JFR19CQVNJQywgICAgImEiICAgfSwKKyAgeyAiYWJjIiwgICAg TVlfUkVHX0JBU0lDLCAgICAiYWJjIiB9LAorICB7ICJhYmN8ZGUiLCBNWV9SRUdfRVhURU5ERUQs ICJhYmMiIH0sCisgIHsgImF8YnxjIiwgIE1ZX1JFR19FWFRFTkRFRCwgImFiYyIgfSwKKyAgeyBO VUxMLCAwLCBOVUxMIH0KK307CisKK1RFU1RfRihSZWdleF90ZXN0LCBiYXNpY190ZXN0KQorewor ICBmb3IgKGludCBpeD0wOyBiYXNpY19kYXRhW2l4XS5wYXR0ZXJuOyArK2l4KQorICB7CisgICAg RVhQRUNUX0VRKDAsIG15X3JlZ2NvbXAoJnJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJhc2ljX2RhdGFbaXhdLnBhdHRlcm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFz aWNfZGF0YVtpeF0uY2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZteV9jaGFy c2V0X2xhdGluMSkpOworCisgICAgaW50IGVycj0gbXlfcmVnZXhlYygmcmUsIGJhc2ljX2RhdGFb aXhdLmlucHV0LCBOU1VCUywgc3VicywgMCk7CisgICAgRVhQRUNUX0VRKDAsIGVycikKKyAgICAg IDw8ICJteV9yZWdleGVjIHJldHVybmVkICIgPDwgZXJyCisgICAgICA8PCAiIGZvciBwYXR0ZXJu ICciIDw8IGJhc2ljX2RhdGFbaXhdLnBhdHRlcm4gPDwgIiciCisgICAgICA8PCAiIHdpdGggaW5w dXQgJyIgPDwgYmFzaWNfZGF0YVtpeF0uaW5wdXQgPDwgIiciOworICAgIG15X3JlZ2ZyZWUoJnJl KTsKKyAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UKCg== --===============5399350552717967972== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/tor.didriksen@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: tor.didriksen@stripped\ # g2d9e272cs7w7fs0 # target_branch: file:///export/home/didrik/repo/next-mr-bf-bug54805-\ # pp/ # testament_sha1: ad95669cfeaef2bcf7bcaff8ef6106bc4daf4208 # timestamp: 2010-07-26 12:39:42 +0200 # base_revision_id: alik@stripped # # Begin bundle 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 7vSAWGXtDKfHMH/xdyRThQkOlOsnQA== --===============5399350552717967972==--