From: marko.makela Date: September 24 2012 12:02pm Subject: bzr push into mysql-5.6-wl6494 branch (marko.makela:4307 to 4309) WL#6494 List-Archive: http://lists.mysql.com/commits/144864 Message-Id: <20120924120211.9532.31872.4309@x220> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDQzMDkgTWFya28gTcOka2Vsw6QJMjAxMi0wOS0yNAogICAgICBXTCM2NDk0IGNyYXNoIGluamVj dGlvbiBmb3Igc2VydmVyIHN0YXJ0dXAgKGlubm9kYl9mb3JjZV9yZWNvdmVyeV9jcmFzaCkKICAg ICAgCiAgICAgIFJFQ09WRVJZX0NSQVNIKHgpOiBBIG1hY3JvIGZvciBjcmFzaGluZyB0aGUgc2Vy dmVyIGlmCiAgICAgIGlubm9kYl9mb3JjZV9yZWNvdmVyeV9jcmFzaCBpcyBzZXQgdG8gYSBwYXJ0 aWN1bGFyIHZhbHVlLgogICAgICAKICAgICAgY3JlYXRlX2xvZ19maWxlcygpLCBjcmVhdGVfbG9n X2ZpbGVzX3JlbmFtZSgpLAogICAgICBpbm5vYmFzZV9zdGFydF9vcl9jcmVhdGVfZm9yX215c3Fs KCk6IEFkZCBSRUNPVkVSWV9DUkFTSCgpIGluamVjdGlvbi4KCiAgICBhZGRlZDoKICAgICAgbXlz cWwtdGVzdC9zdWl0ZS9zeXNfdmFycy9yL2lubm9kYl9mb3JjZV9yZWNvdmVyeV9jcmFzaF9iYXNp Yy5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9zeXNfdmFycy90L2lubm9kYl9mb3JjZV9y ZWNvdmVyeV9jcmFzaF9iYXNpYy50ZXN0CiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9pbm5v YmFzZS9oYW5kbGVyL2hhX2lubm9kYi5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv c3J2MHNydi5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzcnYuY2MKICAgICAgc3Rv cmFnZS9pbm5vYmFzZS9zcnYvc3J2MHN0YXJ0LmNjCiA0MzA4IE1hcmtvIE3DpGtlbMOkCTIwMTIt MDktMjQKICAgICAgV0wjNjQ5NCBmYXVsdCB0b2xlcmFuY2UgaW1wcm92ZW1lbnRzCiAgICAgIAog ICAgICBmaWxfY2xvc2VfbG9nX2ZpbGVzKCk6IEFkZCBhIHBhcmFtZXRlciB0byBzcGVjaWZ5IHdo ZXRoZXIgdGhlIGZpbGUKICAgICAgc3BhY2Ugb2JqZWN0cyBzaG91bGQgYmUgZnJlZWQgYXMgd2Vs bC4KICAgICAgCiAgICAgIElOSVRfTE9HX0ZJTEUwOiBJbml0aWFsIG51bWJlciBvZiB0aGUgZmly c3QgcmVkbyBsb2cgZmlsZS4KICAgICAgCiAgICAgIGNyZWF0ZV9sb2dfZmlsZXMoKTogTmV3IGZ1 bmN0aW9uLCBmb3IgY3JlYXRpbmcgdGhlIHJlZG8gbG9nIGZpbGVzLgogICAgICBEZWxldGUgYW55 IGxvZyBmaWxlcyBmaXJzdCwgYW5kIGNyZWF0ZSBhIGxvZyBjaGVja3BvaW50IGFmdGVyCiAgICAg IGNyZWF0aW5nIHRoZSBmaWxlcy4KICAgICAgCiAgICAgIGNyZWF0ZV9sb2dfZmlsZXNfcmVuYW1l KCk6IE5ldyBmdW5jdGlvbiwgZm9yIHJlbmFtaW5nIHRoZSBmaXJzdCByZWRvCiAgICAgIGxvZyBm aWxlIGFmdGVyIGV2ZXJ5dGhpbmcgaGFzIGJlZW4gc2V0IHVwLiBBdCBkYXRhYmFzZSBjcmVhdGlv biwgdGhlCiAgICAgIGRhdGFiYXNlIHdpbGwgYmUgdW5yZWNvdmVyYWJsZSB1bnRpbCB3ZSBoYXZl IGluaXRpYWxpemVkIHRoZSBzeXN0ZW0KICAgICAgcGFnZXMuIFRoaXMgaXMgd2h5IHRoZSByZW5h bWluZyBoYXMgdG8gYmUgc2VwYXJhdGUgZnJvbQogICAgICBjcmVhdGVfbG9nX2ZpbGVzKCkuCiAg ICAgIAogICAgICBpbm5vYmFzZV9zdGFydF9vcl9jcmVhdGVfZm9yX215c3FsKCk6IENyZWF0ZSB0 aGUgZmlyc3QgbG9nIGZpbGUgYXMKICAgICAgaWJfbG9nZmlsZTEwMCBhbmQgb25seSByZW5hbWUg aXQgdG8gaWJfbG9nZmlsZTAgd2hlbiBkb25lLiBJbiB0aGlzCiAgICAgIHdheSwgYSBzdWJzZXF1 ZW50IHJlc3RhcnQgb2YgdGhlIHNlcnZlciBzaG91bGQgc2ltcGx5IGNyZWF0ZSBhbGwgbG9nCiAg ICAgIGZpbGVzIGZyb20gdGhlIHNjcmF0Y2guCgogICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2Uv aW5ub2Jhc2UvZmlsL2ZpbDBmaWwuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2Zp bDBmaWwuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL3Nydi9zcnYwc3RhcnQuY2MKIDQzMDcgTWFy a28gTcOka2Vsw6QJMjAxMi0wOS0yMQogICAgICBXTCM2NDk0IGVycm9yIGxvZyBjbGVhbnVwOgog ICAgICBjcmVhdGVfbG9nX2ZpbGUoKTogVXNlIGliX2xvZ2YoKSBmb3IgZGlhZ25vc3RpY3MuCgog ICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzdGFydC5jYwo9PT0g YWRkZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9zeXNfdmFycy9yL2lubm9kYl9mb3JjZV9yZWNv dmVyeV9jcmFzaF9iYXNpYy5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvc3lzX3ZhcnMv ci9pbm5vZGJfZm9yY2VfcmVjb3ZlcnlfY3Jhc2hfYmFzaWMucmVzdWx0CTE5NzAtMDEtMDEgMDA6 MDA6MDAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9zeXNfdmFycy9yL2lubm9kYl9mb3Jj ZV9yZWNvdmVyeV9jcmFzaF9iYXNpYy5yZXN1bHQJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMjA5MjQxMjAwMjMtZ3Frd2FyMTBuam5tOXJpcgpAQCAtMCwwICsxLDMzIEBACitzZWxl Y3QgQEBnbG9iYWwuaW5ub2RiX2ZvcmNlX3JlY292ZXJ5X2NyYXNoIGluICgwLCAxKTsKK0BAZ2xv YmFsLmlubm9kYl9mb3JjZV9yZWNvdmVyeV9jcmFzaCBpbiAoMCwgMSkKKzEKK3NlbGVjdCBAQGds b2JhbC5pbm5vZGJfZm9yY2VfcmVjb3ZlcnlfY3Jhc2g7CitAQGdsb2JhbC5pbm5vZGJfZm9yY2Vf cmVjb3ZlcnlfY3Jhc2gKKzAKK3NlbGVjdCBAQHNlc3Npb24uaW5ub2RiX2ZvcmNlX3JlY292ZXJ5 X2NyYXNoOworRVJST1IgSFkwMDA6IFZhcmlhYmxlICdpbm5vZGJfZm9yY2VfcmVjb3ZlcnlfY3Jh c2gnIGlzIGEgR0xPQkFMIHZhcmlhYmxlCitzaG93IGdsb2JhbCB2YXJpYWJsZXMgbGlrZSAnaW5u b2RiX2ZvcmNlX3JlY292ZXJ5X2NyYXNoJzsKK1ZhcmlhYmxlX25hbWUJVmFsdWUKK2lubm9kYl9m b3JjZV9yZWNvdmVyeV9jcmFzaAkwCitzaG93IHNlc3Npb24gdmFyaWFibGVzIGxpa2UgJ2lubm9k Yl9mb3JjZV9yZWNvdmVyeV9jcmFzaCc7CitWYXJpYWJsZV9uYW1lCVZhbHVlCitpbm5vZGJfZm9y Y2VfcmVjb3ZlcnlfY3Jhc2gJMAorc2VsZWN0ICogZnJvbSBpbmZvcm1hdGlvbl9zY2hlbWEuZ2xv YmFsX3ZhcmlhYmxlcyB3aGVyZSB2YXJpYWJsZV9uYW1lPSdpbm5vZGJfZm9yY2VfcmVjb3Zlcnlf Y3Jhc2gnOworVkFSSUFCTEVfTkFNRQlWQVJJQUJMRV9WQUxVRQorSU5OT0RCX0ZPUkNFX1JFQ09W RVJZX0NSQVNICTAKK3NlbGVjdCAqIGZyb20gaW5mb3JtYXRpb25fc2NoZW1hLnNlc3Npb25fdmFy aWFibGVzIHdoZXJlIHZhcmlhYmxlX25hbWU9J2lubm9kYl9mb3JjZV9yZWNvdmVyeV9jcmFzaCc7 CitWQVJJQUJMRV9OQU1FCVZBUklBQkxFX1ZBTFVFCitJTk5PREJfRk9SQ0VfUkVDT1ZFUllfQ1JB U0gJMAorc2V0IGdsb2JhbCBpbm5vZGJfZm9yY2VfcmVjb3ZlcnlfY3Jhc2g9MTsKK0VSUk9SIEhZ MDAwOiBWYXJpYWJsZSAnaW5ub2RiX2ZvcmNlX3JlY292ZXJ5X2NyYXNoJyBpcyBhIHJlYWQgb25s eSB2YXJpYWJsZQorc2V0IGdsb2JhbCBpbm5vZGJfZm9yY2VfcmVjb3ZlcnlfY3Jhc2g9MDsKK0VS Uk9SIEhZMDAwOiBWYXJpYWJsZSAnaW5ub2RiX2ZvcmNlX3JlY292ZXJ5X2NyYXNoJyBpcyBhIHJl YWQgb25seSB2YXJpYWJsZQorc2VsZWN0IEBAZ2xvYmFsLmlubm9kYl9mb3JjZV9yZWNvdmVyeV9j cmFzaDsKK0BAZ2xvYmFsLmlubm9kYl9mb3JjZV9yZWNvdmVyeV9jcmFzaAorMAorc2V0IHNlc3Np b24gaW5ub2RiX2ZvcmNlX3JlY292ZXJ5X2NyYXNoPSdzb21lJzsKK0VSUk9SIEhZMDAwOiBWYXJp YWJsZSAnaW5ub2RiX2ZvcmNlX3JlY292ZXJ5X2NyYXNoJyBpcyBhIHJlYWQgb25seSB2YXJpYWJs ZQorc2V0IEBAc2Vzc2lvbi5pbm5vZGJfZm9yY2VfcmVjb3ZlcnlfY3Jhc2g9J3NvbWUnOworRVJS T1IgSFkwMDA6IFZhcmlhYmxlICdpbm5vZGJfZm9yY2VfcmVjb3ZlcnlfY3Jhc2gnIGlzIGEgcmVh ZCBvbmx5IHZhcmlhYmxlCitzZXQgZ2xvYmFsIGlubm9kYl9mb3JjZV9yZWNvdmVyeV9jcmFzaD0n c29tZSc7CitFUlJPUiBIWTAwMDogVmFyaWFibGUgJ2lubm9kYl9mb3JjZV9yZWNvdmVyeV9jcmFz aCcgaXMgYSByZWFkIG9ubHkgdmFyaWFibGUKCj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0L3N1 aXRlL3N5c192YXJzL3QvaW5ub2RiX2ZvcmNlX3JlY292ZXJ5X2NyYXNoX2Jhc2ljLnRlc3QnCi0t LSBhL215c3FsLXRlc3Qvc3VpdGUvc3lzX3ZhcnMvdC9pbm5vZGJfZm9yY2VfcmVjb3ZlcnlfY3Jh c2hfYmFzaWMudGVzdAkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBiL215c3FsLXRlc3Qv c3VpdGUvc3lzX3ZhcnMvdC9pbm5vZGJfZm9yY2VfcmVjb3ZlcnlfY3Jhc2hfYmFzaWMudGVzdAly ZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDkyNDEyMDAyMy1ncWt3YXIxMG5qbm05 cmlyCkBAIC0wLDAgKzEsMjggQEAKKy0tc291cmNlIGluY2x1ZGUvaGF2ZV9pbm5vZGIuaW5jCist LXNvdXJjZSBpbmNsdWRlL2hhdmVfZGVidWcuaW5jCisKKyMKKyMgZXhpc3RzIGFzIGdsb2JhbCBv bmx5CisjCitzZWxlY3QgQEBnbG9iYWwuaW5ub2RiX2ZvcmNlX3JlY292ZXJ5X2NyYXNoIGluICgw LCAxKTsKK3NlbGVjdCBAQGdsb2JhbC5pbm5vZGJfZm9yY2VfcmVjb3ZlcnlfY3Jhc2g7CistLWVy cm9yIEVSX0lOQ09SUkVDVF9HTE9CQUxfTE9DQUxfVkFSCitzZWxlY3QgQEBzZXNzaW9uLmlubm9k Yl9mb3JjZV9yZWNvdmVyeV9jcmFzaDsKK3Nob3cgZ2xvYmFsIHZhcmlhYmxlcyBsaWtlICdpbm5v ZGJfZm9yY2VfcmVjb3ZlcnlfY3Jhc2gnOworc2hvdyBzZXNzaW9uIHZhcmlhYmxlcyBsaWtlICdp bm5vZGJfZm9yY2VfcmVjb3ZlcnlfY3Jhc2gnOworc2VsZWN0ICogZnJvbSBpbmZvcm1hdGlvbl9z Y2hlbWEuZ2xvYmFsX3ZhcmlhYmxlcyB3aGVyZSB2YXJpYWJsZV9uYW1lPSdpbm5vZGJfZm9yY2Vf cmVjb3ZlcnlfY3Jhc2gnOworc2VsZWN0ICogZnJvbSBpbmZvcm1hdGlvbl9zY2hlbWEuc2Vzc2lv bl92YXJpYWJsZXMgd2hlcmUgdmFyaWFibGVfbmFtZT0naW5ub2RiX2ZvcmNlX3JlY292ZXJ5X2Ny YXNoJzsKKworIyBzaG93IHRoYXQgaXQncyByZWFkLW9ubHkKKyMKKy0tZXJyb3IgRVJfSU5DT1JS RUNUX0dMT0JBTF9MT0NBTF9WQVIKK3NldCBnbG9iYWwgaW5ub2RiX2ZvcmNlX3JlY292ZXJ5X2Ny YXNoPTE7CistLWVycm9yIEVSX0lOQ09SUkVDVF9HTE9CQUxfTE9DQUxfVkFSCitzZXQgZ2xvYmFs IGlubm9kYl9mb3JjZV9yZWNvdmVyeV9jcmFzaD0wOworc2VsZWN0IEBAZ2xvYmFsLmlubm9kYl9m b3JjZV9yZWNvdmVyeV9jcmFzaDsKKy0tZXJyb3IgRVJfSU5DT1JSRUNUX0dMT0JBTF9MT0NBTF9W QVIKK3NldCBzZXNzaW9uIGlubm9kYl9mb3JjZV9yZWNvdmVyeV9jcmFzaD0nc29tZSc7CistLWVy cm9yIEVSX0lOQ09SUkVDVF9HTE9CQUxfTE9DQUxfVkFSCitzZXQgQEBzZXNzaW9uLmlubm9kYl9m b3JjZV9yZWNvdmVyeV9jcmFzaD0nc29tZSc7CistLWVycm9yIEVSX0lOQ09SUkVDVF9HTE9CQUxf TE9DQUxfVkFSCitzZXQgZ2xvYmFsIGlubm9kYl9mb3JjZV9yZWNvdmVyeV9jcmFzaD0nc29tZSc7 Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9maWwvZmlsMGZpbC5jYycKLS0t IGEvc3RvcmFnZS9pbm5vYmFzZS9maWwvZmlsMGZpbC5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDEyMDkyMTEwNTIwOS1nYW1lODNjdWRycjhjcTI3CisrKyBiL3N0b3JhZ2UvaW5u b2Jhc2UvZmlsL2ZpbDBmaWwuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA5 MjQxMjAwMjMtZ3Frd2FyMTBuam5tOXJpcgpAQCAtMTc2OSw4ICsxNzY5LDkgQEAgQ2xvc2VzIHRo ZSByZWRvIGxvZyBmaWxlcy4gVGhlcmUgbXVzdCBubwogZmx1c2hlZCBtb2RpZmljYXRpb25zIGlu IHRoZSBmaWxlcy4gKi8KIFVOSVZfSU5URVJOCiB2b2lkCi1maWxfY2xvc2VfbG9nX2ZpbGVzKHZv aWQpCi0vKj09PT09PT09PT09PT09PT09PT09PSovCitmaWxfY2xvc2VfbG9nX2ZpbGVzKAorLyo9 PT09PT09PT09PT09PT09Ki8KKwlib29sCWZyZWUpCS8qITwgaW46IHdoZXRoZXIgdG8gZnJlZSB0 aGUgbWVtb3J5IG9iamVjdCAqLwogewogCWZpbF9zcGFjZV90KglzcGFjZTsKIApAQCAtMTc5OCw3 ICsxNzk5LDkgQEAgZmlsX2Nsb3NlX2xvZ19maWxlcyh2b2lkKQogCiAJCXNwYWNlID0gVVRfTElT VF9HRVRfTkVYVChzcGFjZV9saXN0LCBzcGFjZSk7CiAKLQkJZmlsX3NwYWNlX2ZyZWUocHJldl9z cGFjZS0+aWQsIEZBTFNFKTsKKwkJaWYgKGZyZWUpIHsKKwkJCWZpbF9zcGFjZV9mcmVlKHByZXZf c3BhY2UtPmlkLCBGQUxTRSk7CisJCX0KIAl9CiAKIAltdXRleF9leGl0KCZmaWxfc3lzdGVtLT5t dXRleCk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lu bm9kYi5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5jYwlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDkyMTEwNTIwOS1nYW1lODNjdWRycjhjcTI3 CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYV9pbm5vZGIuY2MJcmV2aWQ6bWFya28u bWFrZWxhQG9yYWNsZS5jb20tMjAxMjA5MjQxMjAwMjMtZ3Frd2FyMTBuam5tOXJpcgpAQCAtMTI1 LDcgKzEyNSw2IEBAIHN0YXRpYyBsb25nIGlubm9iYXNlX2xvZ19maWxlc19pbl9ncm91cDsKIHN0 YXRpYyBsb25nIGlubm9iYXNlX2xvZ19idWZmZXJfc2l6ZTsKIHN0YXRpYyBsb25nIGlubm9iYXNl X2FkZGl0aW9uYWxfbWVtX3Bvb2xfc2l6ZTsKIHN0YXRpYyBsb25nIGlubm9iYXNlX2ZpbGVfaW9f dGhyZWFkczsKLXN0YXRpYyBsb25nIGlubm9iYXNlX2ZvcmNlX3JlY292ZXJ5Owogc3RhdGljIGxv bmcgaW5ub2Jhc2Vfb3Blbl9maWxlczsKIHN0YXRpYyBsb25nIGlubm9iYXNlX2F1dG9pbmNfbG9j a19tb2RlOwogc3RhdGljIHVsb25nIGlubm9iYXNlX2NvbW1pdF9jb25jdXJyZW5jeSA9IDA7CkBA IC0zMTQwLDggKzMxMzksNiBAQCBpbm5vYmFzZV9jaGFuZ2VfYnVmZmVyaW5nX2luaXRlZF9vazoK IAlzcnZfbl9yZWFkX2lvX3RocmVhZHMgPSAodWxpbnQpIGlubm9iYXNlX3JlYWRfaW9fdGhyZWFk czsKIAlzcnZfbl93cml0ZV9pb190aHJlYWRzID0gKHVsaW50KSBpbm5vYmFzZV93cml0ZV9pb190 aHJlYWRzOwogCi0Jc3J2X2ZvcmNlX3JlY292ZXJ5ID0gKHVsaW50KSBpbm5vYmFzZV9mb3JjZV9y ZWNvdmVyeTsKLQogCXNydl91c2VfZG91Ymxld3JpdGVfYnVmID0gKGlib29sKSBpbm5vYmFzZV91 c2VfZG91Ymxld3JpdGU7CiAKIAlwYWdlX2NvbXByZXNzaW9uX2xldmVsID0gKHVsaW50KSBpbm5v YmFzZV9jb21wcmVzc2lvbl9sZXZlbDsKQEAgLTE1Njc4LDExICsxNTY3NSwxOCBAQCBzdGF0aWMg TVlTUUxfU1lTVkFSX1VMT05HKHdyaXRlX2lvX3RocmVhCiAgICJOdW1iZXIgb2YgYmFja2dyb3Vu ZCB3cml0ZSBJL08gdGhyZWFkcyBpbiBJbm5vREIuIiwKICAgTlVMTCwgTlVMTCwgNCwgMSwgNjQs IDApOwogCi1zdGF0aWMgTVlTUUxfU1lTVkFSX0xPTkcoZm9yY2VfcmVjb3ZlcnksIGlubm9iYXNl X2ZvcmNlX3JlY292ZXJ5LAorc3RhdGljIE1ZU1FMX1NZU1ZBUl9VTE9ORyhmb3JjZV9yZWNvdmVy eSwgc3J2X2ZvcmNlX3JlY292ZXJ5LAogICBQTFVHSU5fVkFSX1JRQ01EQVJHIHwgUExVR0lOX1ZB Ul9SRUFET05MWSwKICAgIkhlbHBzIHRvIHNhdmUgeW91ciBkYXRhIGluIGNhc2UgdGhlIGRpc2sg aW1hZ2Ugb2YgdGhlIGRhdGFiYXNlIGJlY29tZXMgY29ycnVwdC4iLAogICBOVUxMLCBOVUxMLCAw LCAwLCA2LCAwKTsKIAorI2lmbmRlZiBEQlVHX09GRgorc3RhdGljIE1ZU1FMX1NZU1ZBUl9VTE9O Ryhmb3JjZV9yZWNvdmVyeV9jcmFzaCwgc3J2X2ZvcmNlX3JlY292ZXJ5X2NyYXNoLAorICBQTFVH SU5fVkFSX1JRQ01EQVJHIHwgUExVR0lOX1ZBUl9SRUFET05MWSwKKyAgIkhlbHBzIHRvIHNhdmUg eW91ciBkYXRhIGluIGNhc2UgdGhlIGRpc2sgaW1hZ2Ugb2YgdGhlIGRhdGFiYXNlIGJlY29tZXMg Y29ycnVwdC4iLAorICBOVUxMLCBOVUxMLCAwLCAwLCAxMCwgMCk7CisjZW5kaWYgLyogIURCVUdf T0ZGICovCisKIHN0YXRpYyBNWVNRTF9TWVNWQVJfVUxPTkcocGFnZV9zaXplLCBzcnZfcGFnZV9z aXplLAogICBQTFVHSU5fVkFSX09QQ01EQVJHIHwgUExVR0lOX1ZBUl9SRUFET05MWSwKICAgIlBh Z2Ugc2l6ZSB0byB1c2UgZm9yIGFsbCBJbm5vREIgdGFibGVzcGFjZXMuIiwKQEAgLTE1OTk0LDYg KzE1OTk4LDkgQEAgc3RhdGljIHN0cnVjdCBzdF9teXNxbF9zeXNfdmFyKiBpbm5vYmFzZQogICBN WVNRTF9TWVNWQVIoZmx1c2hfbG9nX2F0X3RyeF9jb21taXQpLAogICBNWVNRTF9TWVNWQVIoZmx1 c2hfbWV0aG9kKSwKICAgTVlTUUxfU1lTVkFSKGZvcmNlX3JlY292ZXJ5KSwKKyNpZm5kZWYgREJV R19PRkYKKyAgTVlTUUxfU1lTVkFSKGZvcmNlX3JlY292ZXJ5X2NyYXNoKSwKKyNlbmRpZiAvKiAh REJVR19PRkYgKi8KICAgTVlTUUxfU1lTVkFSKGZ0X2NhY2hlX3NpemUpLAogICBNWVNRTF9TWVNW QVIoZnRfZW5hYmxlX3N0b3B3b3JkKSwKICAgTVlTUUxfU1lTVkFSKGZ0X21heF90b2tlbl9zaXpl KSwKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZmlsMGZpbC5o JwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZmlsMGZpbC5oCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTIwOTIxMTA1MjA5LWdhbWU4M2N1ZHJyOGNxMjcKKysrIGIvc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL2ZpbDBmaWwuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDEyMDkyNDEyMDAyMy1ncWt3YXIxMG5qbm05cmlyCkBAIC0zMzEsOCArMzMxLDkgQEAg Q2xvc2VzIHRoZSByZWRvIGxvZyBmaWxlcy4gVGhlcmUgbXVzdCBubwogZmx1c2hlZCBtb2RpZmlj YXRpb25zIGluIHRoZSBmaWxlcy4gKi8KIFVOSVZfSU5URVJOCiB2b2lkCi1maWxfY2xvc2VfbG9n X2ZpbGVzKHZvaWQpOwotLyo9PT09PT09PT09PT09PT09PT09PT0qLworZmlsX2Nsb3NlX2xvZ19m aWxlcygKKy8qPT09PT09PT09PT09PT09PSovCisJYm9vbAlmcmVlKTsJLyohPCBpbjogd2hldGhl ciB0byBmcmVlIHRoZSBtZW1vcnkgb2JqZWN0ICovCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFNldHMgdGhl IG1heCB0YWJsZXNwYWNlIGlkIGNvdW50ZXIgaWYgdGhlIGdpdmVuIG51bWJlciBpcyBiaWdnZXIg dGhhbiB0aGUKIHByZXZpb3VzIHZhbHVlLiAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS9zcnYwc3J2LmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS9zcnYwc3J2LmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA5MjExMDUyMDkt Z2FtZTgzY3VkcnI4Y3EyNworKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvc3J2MHNydi5o CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwOTI0MTIwMDIzLWdxa3dhcjEwbmpu bTlyaXIKQEAgLTMxOSw3ICszMTksMTAgQEAgZXh0ZXJuIHVsb25nCXNydl9tYXhfZGlydHlfcGFn ZXNfcGN0X2x3bQogZXh0ZXJuIHVsb25nCXNydl9hZGFwdGl2ZV9mbHVzaGluZ19sd207CiBleHRl cm4gdWxvbmcJc3J2X2ZsdXNoaW5nX2F2Z19sb29wczsKIAotZXh0ZXJuIHVsaW50CXNydl9mb3Jj ZV9yZWNvdmVyeTsKK2V4dGVybiB1bG9uZwlzcnZfZm9yY2VfcmVjb3Zlcnk7CisjaWZuZGVmIERC VUdfT0ZGCitleHRlcm4gdWxvbmcJc3J2X2ZvcmNlX3JlY292ZXJ5X2NyYXNoOworI2VuZGlmIC8q ICFEQlVHX09GRiAqLwogCiBleHRlcm4gdWxpbnQJc3J2X2Zhc3Rfc2h1dGRvd247CS8qITwgSWYg dGhpcyBpcyAxLCBkbyBub3QgZG8gYQogCQkJCQlwdXJnZSBhbmQgaW5kZXggYnVmZmVyIG1lcmdl LgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzcnYuY2MnCi0t LSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzcnYuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9y YWNsZS5jb20tMjAxMjA5MjExMDUyMDktZ2FtZTgzY3VkcnI4Y3EyNworKysgYi9zdG9yYWdlL2lu bm9iYXNlL3Nydi9zcnYwc3J2LmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIw OTI0MTIwMDIzLWdxa3dhcjEwbmpubTlyaXIKQEAgLTI5NywxMCArMjk3LDE2IEBAIFVOSVZfSU5U RVJOIHNydl9zdGF0c190CXNydl9zdGF0czsKIC8qIHN0cnVjdHVyZSB0byBwYXNzIHN0YXR1cyB2 YXJpYWJsZXMgdG8gTXlTUUwgKi8KIFVOSVZfSU5URVJOIGV4cG9ydF92YXJfdCBleHBvcnRfdmFy czsKIAotLyogSWYgdGhlIGZvbGxvd2luZyBpcyAhPSAwIHdlIGRvIG5vdCBhbGxvdyBpbnNlcnRz IGV0Yy4gVGhpcyBwcm90ZWN0cwotdGhlIHVzZXIgZnJvbSBmb3JnZXR0aW5nIHRoZSBpbm5vZGJf Zm9yY2VfcmVjb3Zlcnkga2V5d29yZCB0byBteS5jbmYgKi8KLQotVU5JVl9JTlRFUk4gdWxpbnQJ c3J2X2ZvcmNlX3JlY292ZXJ5CT0gMDsKKy8qKiBOb3JtYWxseSAwLiBXaGVuIG5vbnplcm8sIHNr aXAgc29tZSBwaGFzZXMgb2YgY3Jhc2ggcmVjb3ZlcnksCitzdGFydGluZyBmcm9tIFNSVl9GT1JD RV9JR05PUkVfQ09SUlVQVCwgc28gdGhhdCBkYXRhIGNhbiBiZSByZWNvdmVyZWQKK2J5IFNFTEVD VCBvciBteXNxbGR1bXAuIFdoZW4gdGhpcyBpcyBub256ZXJvLCB3ZSBkbyBub3QgYWxsb3cgYW55 IHVzZXIKK21vZGlmaWNhdGlvbnMgdG8gdGhlIGRhdGEuICovCitVTklWX0lOVEVSTiB1bG9uZwlz cnZfZm9yY2VfcmVjb3Zlcnk7CisjaWZuZGVmIERCVUdfT0ZGCisvKiogSW5qZWN0IGEgY3Jhc2gg YXQgZGlmZmVyZW50IHN0ZXBzIG9mIHRoZSByZWNvdmVyeSBwcm9jZXNzLgorVGhpcyBpcyBmb3Ig dGVzdGluZyBhbmQgZGVidWdnaW5nIG9ubHkuICovCitVTklWX0lOVEVSTiB1bG9uZwlzcnZfZm9y Y2VfcmVjb3ZlcnlfY3Jhc2g7CisjZW5kaWYgLyogIURCVUdfT0ZGICovCiAKIC8qKiBQcmludCBh bGwgdXNlci1sZXZlbCB0cmFuc2FjdGlvbnMgZGVhZGxvY2tzIHRvIG15c3FsZCBzdGRlcnIgKi8K IAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzdGFydC5jYycK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHN0YXJ0LmNjCXJldmlkOm1hcmtvLm1ha2Vs YUBvcmFjbGUuY29tLTIwMTIwOTIxMTA1MjA5LWdhbWU4M2N1ZHJyOGNxMjcKKysrIGIvc3RvcmFn ZS9pbm5vYmFzZS9zcnYvc3J2MHN0YXJ0LmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTIwOTI0MTIwMDIzLWdxa3dhcjEwbmpubTlyaXIKQEAgLTU0MCw2ICs1NDAsMTQ3IEBAIGNy ZWF0ZV9sb2dfZmlsZSgKIAlyZXR1cm4oREJfU1VDQ0VTUyk7CiB9CiAKKy8qKiBJbml0aWFsIG51 bWJlciBvZiB0aGUgZmlyc3QgcmVkbyBsb2cgZmlsZSAqLworI2RlZmluZSBJTklUX0xPR19GSUxF MAkxMDEKKworI2lmZGVmIERCVUdfT0ZGCisjIGRlZmluZSBSRUNPVkVSWV9DUkFTSCh4KSBkbyB7 fSB3aGlsZSgwKQorI2Vsc2UKKyMgZGVmaW5lIFJFQ09WRVJZX0NSQVNIKHgpIGlmIChzcnZfZm9y Y2VfcmVjb3ZlcnlfY3Jhc2ggPT0geCkgREJVR19TVUlDSURFKCkKKyNlbmRpZgorCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLy8qKgorQ3JlYXRlcyBhbGwgbG9nIGZpbGVzLgorQHJldHVybglEQl9TVUNDRVNTIG9y IGVycm9yIGNvZGUgKi8KK3N0YXRpYworZGJlcnJfdAorY3JlYXRlX2xvZ19maWxlcygKKy8qPT09 PT09PT09PT09PSovCisJY2hhcioJbG9nZmlsZW5hbWUsCS8qITwgaW4vb3V0OiBidWZmZXIgZm9y IGxvZyBmaWxlIG5hbWUgKi8KKwlzaXplX3QJZGlybmFtZWxlbiwJLyohPCBpbjogbGVuZ3RoIG9m IHRoZSBkaXJlY3RvcnkgcGF0aCAqLworCWxzbl90CWxzbiwJCS8qITwgaW46IEZJTF9QQUdFX0ZJ TEVfRkxVU0hfTFNOIHZhbHVlICovCisJY2hhciomCWxvZ2ZpbGUwKQkvKiE8IG91dDogbmFtZSBv ZiB0aGUgZmlyc3QgbG9nIGZpbGUgKi8KK3sKKwkvKiBSZW1vdmUgYW55IG9sZCBsb2cgZmlsZXMu ICovCisJZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8PSBJTklUX0xPR19GSUxFMDsgaSsrKSB7CisJ CXNwcmludGYobG9nZmlsZW5hbWUgKyBkaXJuYW1lbGVuLCAiaWJfbG9nZmlsZSV1IiwgaSk7CisK KwkJLyogSWdub3JlIGVycm9ycyBhYm91dCBub24tZXhpc3RlbnQgZmlsZXMgb3IgZmlsZXMKKwkJ dGhhdCBjYW5ub3QgYmUgcmVtb3ZlZC4gVGhlIGNyZWF0ZV9sb2dfZmlsZSgpIHdpbGwKKwkJcmV0 dXJuIGFuIGVycm9yIHdoZW4gdGhlIGZpbGUgZXhpc3RzLiAqLworI2lmZGVmIF9fV0lOX18KKwkJ RGVsZXRlRmlsZSgoTFBDVFNUUikgbG9nZmlsZW5hbWUpOworI2Vsc2UKKwkJdW5saW5rKGxvZ2Zp bGVuYW1lKTsKKyNlbmRpZgorCQkvKiBDcmFzaGluZyBhZnRlciBkZWxldGluZyB0aGUgZmlyc3QK KwkJZmlsZSBzaG91bGQgYmUgcmVjb3ZlcmFibGUuIFRoZSBidWZmZXIKKwkJcG9vbCB3YXMgY2xl YW4sIGFuZCB3ZSBjYW4gc2ltcGx5IGNyZWF0ZQorCQlhbGwgbG9nIGZpbGVzIGZyb20gdGhlIHNj cmF0Y2guICovCisJCVJFQ09WRVJZX0NSQVNIKDYpOworCX0KKworCXV0X2FkKCFidWZfcG9vbF9j aGVja19ub19wZW5kaW5nX2lvKCkpOworCisJUkVDT1ZFUllfQ1JBU0goNyk7CisKKwlmb3IgKHVu c2lnbmVkIGkgPSAwOyBpIDwgc3J2X25fbG9nX2ZpbGVzOyBpKyspIHsKKwkJc3ByaW50Zihsb2dm aWxlbmFtZSArIGRpcm5hbWVsZW4sCisJCQkiaWJfbG9nZmlsZSV1IiwgaSA/IGkgOiBJTklUX0xP R19GSUxFMCk7CisKKwkJZGJlcnJfdCBlcnIgPSBjcmVhdGVfbG9nX2ZpbGUoJmZpbGVzW2ldLCBs b2dmaWxlbmFtZSk7CisKKwkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7CisJCQlyZXR1cm4oZXJy KTsKKwkJfQorCX0KKworCVJFQ09WRVJZX0NSQVNIKDgpOworCisJLyogV2UgZGlkIG5vdCBjcmVh dGUgdGhlIGZpcnN0IGxvZyBmaWxlIGluaXRpYWxseSBhcworCWliX2xvZ2ZpbGUwLCBzbyB0aGF0 IGNyYXNoIHJlY292ZXJ5IGNhbm5vdCBmaW5kIGl0IHVudGlsIGl0CisJaGFzIGJlZW4gY29tcGxl dGVkIGFuZCByZW5hbWVkLiAqLworCXNwcmludGYobG9nZmlsZW5hbWUgKyBkaXJuYW1lbGVuLCAi aWJfbG9nZmlsZSV1IiwgSU5JVF9MT0dfRklMRTApOworCisJZmlsX3NwYWNlX2NyZWF0ZSgKKwkJ bG9nZmlsZW5hbWUsIFNSVl9MT0dfU1BBQ0VfRklSU1RfSUQsCisJCWZzcF9mbGFnc19zZXRfcGFn ZV9zaXplKDAsIFVOSVZfUEFHRV9TSVpFKSwKKwkJRklMX0xPRyk7CisJdXRfYShmaWxfdmFsaWRh dGUoKSk7CisKKwlsb2dmaWxlMCA9IGZpbF9ub2RlX2NyZWF0ZSgKKwkJbG9nZmlsZW5hbWUsICh1 bGludCkgc3J2X2xvZ19maWxlX3NpemUsCisJCVNSVl9MT0dfU1BBQ0VfRklSU1RfSUQsIEZBTFNF KTsKKwl1dF9hKGxvZ2ZpbGUwKTsKKworCWZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBzcnZfbl9s b2dfZmlsZXM7IGkrKykgeworCQlzcHJpbnRmKGxvZ2ZpbGVuYW1lICsgZGlybmFtZWxlbiwgImli X2xvZ2ZpbGUldSIsIGkpOworCisJCWlmICghZmlsX25vZGVfY3JlYXRlKAorCQkJICAgIGxvZ2Zp bGVuYW1lLAorCQkJICAgICh1bGludCkgc3J2X2xvZ19maWxlX3NpemUsCisJCQkgICAgU1JWX0xP R19TUEFDRV9GSVJTVF9JRCwgRkFMU0UpKSB7CisJCQl1dF9lcnJvcjsKKwkJfQorCX0KKworCWxv Z19ncm91cF9pbml0KDAsIHNydl9uX2xvZ19maWxlcywKKwkJICAgICAgIHNydl9sb2dfZmlsZV9z aXplICogVU5JVl9QQUdFX1NJWkUsCisJCSAgICAgICBTUlZfTE9HX1NQQUNFX0ZJUlNUX0lELAor CQkgICAgICAgU1JWX0xPR19TUEFDRV9GSVJTVF9JRCArIDEpOworCisJZmlsX29wZW5fbG9nX2Fu ZF9zeXN0ZW1fdGFibGVzcGFjZV9maWxlcygpOworCisJLyogQ3JlYXRlIGEgbG9nIGNoZWNrcG9p bnQuICovCisJbXV0ZXhfZW50ZXIoJmxvZ19zeXMtPm11dGV4KTsKKwl1dF9kKHJlY3Zfbm9fbG9n X3dyaXRlID0gRkFMU0UpOworCXJlY3ZfcmVzZXRfbG9ncyhsc24sIFRSVUUpOworCW11dGV4X2V4 aXQoJmxvZ19zeXMtPm11dGV4KTsKKworCXJldHVybihEQl9TVUNDRVNTKTsKK30KKworLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKK1JlbmFtZXMgdGhlIGZpcnN0IGFsbCBsb2cgZmlsZS4gKi8KK3N0YXRpYwor dm9pZAorY3JlYXRlX2xvZ19maWxlc19yZW5hbWUoCisvKj09PT09PT09PT09PT09PT09PT09Ki8K KwljaGFyKglsb2dmaWxlbmFtZSwJLyohPCBpbi9vdXQ6IGJ1ZmZlciBmb3IgbG9nIGZpbGUgbmFt ZSAqLworCXNpemVfdAlkaXJuYW1lbGVuLAkvKiE8IGluOiBsZW5ndGggb2YgdGhlIGRpcmVjdG9y eSBwYXRoICovCisJbHNuX3QJbHNuLAkJLyohPCBpbjogRklMX1BBR0VfRklMRV9GTFVTSF9MU04g dmFsdWUgKi8KKwljaGFyKglsb2dmaWxlMCkJLyohPCBpbi9vdXQ6IG5hbWUgb2YgdGhlIGZpcnN0 IGxvZyBmaWxlICovCit7CisJLyogQ2xvc2UgdGhlIGxvZyBmaWxlcywgc28gdGhhdCB3ZSBjYW4g cmVuYW1lCisJdGhlIGZpcnN0IG9uZS4gKi8KKwlmaWxfY2xvc2VfbG9nX2ZpbGVzKGZhbHNlKTsK KworCS8qIFJlbmFtZSB0aGUgZmlyc3QgbG9nIGZpbGUsIG5vdyB0aGF0IGEgbG9nCisJY2hlY2tw b2ludCBoYXMgYmVlbiBjcmVhdGVkLiAqLworCXNwcmludGYobG9nZmlsZW5hbWUgKyBkaXJuYW1l bGVuLCAiaWJfbG9nZmlsZSV1IiwgMCk7CisKKwlSRUNPVkVSWV9DUkFTSCg5KTsKKworCWliX2xv Z2YoSUJfTE9HX0xFVkVMX0lORk8sCisJCSJSZW5hbWluZyBsb2cgZmlsZSAlcyB0byAlcyIsIGxv Z2ZpbGUwLCBsb2dmaWxlbmFtZSk7CisKKwltdXRleF9lbnRlcigmbG9nX3N5cy0+bXV0ZXgpOwor CXV0X2FkKHN0cmxlbihsb2dmaWxlMCkgPT0gMiArIHN0cmxlbihsb2dmaWxlbmFtZSkpOworCWli b29sIHN1Y2Nlc3MgPSBvc19maWxlX3JlbmFtZSgKKwkJaW5ub2RiX2ZpbGVfbG9nX2tleSwgbG9n ZmlsZTAsIGxvZ2ZpbGVuYW1lKTsKKwl1dF9hKHN1Y2Nlc3MpOworCisJUkVDT1ZFUllfQ1JBU0go MTApOworCisJLyogUmVwbGFjZSB0aGUgZmlyc3QgZmlsZSB3aXRoIGliX2xvZ2ZpbGUwLiAqLwor CXN0cmNweShsb2dmaWxlMCwgbG9nZmlsZW5hbWUpOworCW11dGV4X2V4aXQoJmxvZ19zeXMtPm11 dGV4KTsKKworCWZpbF9vcGVuX2xvZ19hbmRfc3lzdGVtX3RhYmxlc3BhY2VfZmlsZXMoKTsKKwor CWliX2xvZ2YoSUJfTE9HX0xFVkVMX1dBUk4sICJOZXcgbG9nIGZpbGVzIGNyZWF0ZWQsIExTTj0i IExTTl9QRiwgbHNuKTsKK30KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIE9wZW5zIGEgbG9nIGZpbGUu CiBAcmV0dXJuCURCX1NVQ0NFU1Mgb3IgZXJyb3IgY29kZSAqLwpAQCAtMTI2Niw3ICsxNDA3LDYg QEAgaW5ub2Jhc2Vfc3RhcnRfb3JfY3JlYXRlX2Zvcl9teXNxbCh2b2lkKQogLyo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogewogCWlib29sCQljcmVhdGVfbmV3X2RiOwot CWlib29sCQlsb2dfY3JlYXRlZDsKIAlsc25fdAkJbWluX2ZsdXNoZWRfbHNuOwogCWxzbl90CQlt YXhfZmx1c2hlZF9sc247CiAjaWZkZWYgVU5JVl9MT0dfQVJDSElWRQpAQCAtMTI3NywxMSArMTQx NywxMyBAQCBpbm5vYmFzZV9zdGFydF9vcl9jcmVhdGVfZm9yX215c3FsKHZvaWQpCiAJdWxpbnQJ CXN1bV9vZl9kYXRhX2ZpbGVfc2l6ZXM7CiAJdWxpbnQJCXRhYmxlc3BhY2Vfc2l6ZV9pbl9oZWFk ZXI7CiAJZGJlcnJfdAkJZXJyOwotCXVsaW50CQlpOworCXVuc2lnbmVkCWk7CisJdWxpbnQJCXNy dl9uX2xvZ19maWxlc19mb3VuZCA9IHNydl9uX2xvZ19maWxlczsKIAl1bGludAkJaW9fbGltaXQ7 CiAJbXRyX3QJCW10cjsKIAlpYl9iaF90KglpYl9iaDsKIAljaGFyCQlsb2dmaWxlbmFtZVsxMDAw MF07CisJY2hhcioJCWxvZ2ZpbGUwCT0gTlVMTDsKIAlzaXplX3QJCWRpcm5hbWVsZW47CiAKICNp ZmRlZiBIQVZFX0RBUldJTl9USFJFQURTCkBAIC0xODAxLDM5ICsxOTQzLDY4IEBAIGlubm9iYXNl X3N0YXJ0X29yX2NyZWF0ZV9mb3JfbXlzcWwodm9pZCkKIAl9CiAKIAlzcnZfbG9nX2ZpbGVfc2l6 ZV9yZXF1ZXN0ZWQgPSBzcnZfbG9nX2ZpbGVfc2l6ZTsKLQlsb2dfY3JlYXRlZCA9IEZBTFNFOwog CiAJaWYgKGNyZWF0ZV9uZXdfZGIpIHsKLWNyZWF0ZV9sb2dfZmlsZXM6Ci0JCWZvciAoaSA9IDA7 IGkgPCBzcnZfbl9sb2dfZmlsZXM7IGkrKykgewotCQkJc3ByaW50Zihsb2dmaWxlbmFtZSArIGRp cm5hbWVsZW4sCi0JCQkJImliX2xvZ2ZpbGUlbHUiLCAodWxvbmcpIGkpOworCQl7CisJCQlib29s IHN1Y2Nlc3MgPSBidWZfZmx1c2hfbGlzdCgKKwkJCQlVTElOVF9NQVgsIExTTl9NQVgsIE5VTEwp OworCQkJdXRfYShzdWNjZXNzKTsKKwkJfQogCi0JCQllcnIgPSBjcmVhdGVfbG9nX2ZpbGUoJmZp bGVzW2ldLCBsb2dmaWxlbmFtZSk7CisJCW1pbl9mbHVzaGVkX2xzbiA9IG1heF9mbHVzaGVkX2xz biA9IGxvZ19nZXRfbHNuKCk7CiAKLQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewotCQkJCXJl dHVybihlcnIpOwotCQkJfQorCQlidWZfZmx1c2hfd2FpdF9iYXRjaF9lbmQoTlVMTCwgQlVGX0ZM VVNIX0xJU1QpOworY3JlYXRlX2xvZ19maWxlczoKKwkJZXJyID0gY3JlYXRlX2xvZ19maWxlcyhs b2dmaWxlbmFtZSwgZGlybmFtZWxlbiwKKwkJCQkgICAgICAgbWF4X2ZsdXNoZWRfbHNuLCBsb2dm aWxlMCk7CisKKwkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7CisJCQlyZXR1cm4oZXJyKTsKIAkJ fQogCi0JCWxvZ19jcmVhdGVkID0gVFJVRTsKKwkJaWYgKCFjcmVhdGVfbmV3X2RiKSB7CisJCQlj cmVhdGVfbG9nX2ZpbGVzX3JlbmFtZShsb2dmaWxlbmFtZSwgZGlybmFtZWxlbiwKKwkJCQkJCW1h eF9mbHVzaGVkX2xzbiwgbG9nZmlsZTApOworCQl9CiAJfSBlbHNlIHsKIAkJZm9yIChpID0gMDsg aSA8IDEwMC8qIG1heCBvZiBzcnZfbl9sb2dfZmlsZXMgKi87IGkrKykgewogCQkJb3Nfb2Zmc2V0 X3QJc2l6ZTsKIAkJCW9zX2ZpbGVfc3RhdF90CXN0YXRfaW5mbzsKIAogCQkJc3ByaW50Zihsb2dm aWxlbmFtZSArIGRpcm5hbWVsZW4sCi0JCQkJImliX2xvZ2ZpbGUlbHUiLCAodWxvbmcpIGkpOwor CQkJCSJpYl9sb2dmaWxlJXUiLCBpKTsKIAogCQkJZXJyID0gb3NfZmlsZV9nZXRfc3RhdHVzKAog CQkJCWxvZ2ZpbGVuYW1lLCAmc3RhdF9pbmZvLCBmYWxzZSk7CiAKIAkJCWlmIChlcnIgPT0gREJf Tk9UX0ZPVU5EKSB7CiAJCQkJaWYgKGkgPT0gMCkgewotCQkJCQlnb3RvIGNyZWF0ZV9sb2dfZmls ZXM7Ci0JCQkJfQorCQkJCQlpZiAobWF4X2ZsdXNoZWRfbHNuICE9IG1pbl9mbHVzaGVkX2xzbikg eworCQkJCQkJaWJfbG9nZihJQl9MT0dfTEVWRUxfRVJST1IsCisJCQkJCQkJIkNhbm5vdCBjcmVh dGUiCisJCQkJCQkJIiBsb2cgZmlsZXMgYmVjYXVzZSIKKwkJCQkJCQkiIGRhdGEgZmlsZXMgYXJl IgorCQkJCQkJCSIgY29ycnVwdCBvciIKKwkJCQkJCQkiIG5vdCBpbiBzeW5jIgorCQkJCQkJCSIg d2l0aCBlYWNoIG90aGVyIik7CisJCQkJCQlyZXR1cm4oREJfRVJST1IpOworCQkJCQl9CisKKwkJ CQkJaWYgKG1heF9mbHVzaGVkX2xzbiA8IChsc25fdCkgMTAwMCkgeworCQkJCQkJaWJfbG9nZihJ Ql9MT0dfTEVWRUxfRVJST1IsCisJCQkJCQkJIkNhbm5vdCBjcmVhdGUiCisJCQkJCQkJIiBsb2cg ZmlsZXMgYmVjYXVzZSIKKwkJCQkJCQkiIGRhdGEgZmlsZXMgYXJlIgorCQkJCQkJCSIgY29ycnVw dCBvciB0aGUiCisJCQkJCQkJIiBkYXRhYmFzZSB3YXMgbm90IgorCQkJCQkJCSIgc2h1dCBkb3du IGNsZWFubHkiCisJCQkJCQkJIiBhZnRlciBjcmVhdGluZyIKKwkJCQkJCQkiIHRoZSBkYXRhIGZp bGVzLiIpOworCQkJCQkJcmV0dXJuKERCX0VSUk9SKTsKKwkJCQkJfQogCi0JCQkJaWYgKGkgPCAy KSB7CisJCQkJCWdvdG8gY3JlYXRlX2xvZ19maWxlczsKKwkJCQl9IGVsc2UgaWYgKGkgPCAyKSB7 CiAJCQkJCS8qIG11c3QgaGF2ZSBhdCBsZWFzdCAyIGxvZyBmaWxlcyAqLwogCQkJCQlyZXR1cm4o ZXJyKTsKIAkJCQl9CkBAIC0xODgwLDQ1ICsyMDUxLDQ4IEBAIGNyZWF0ZV9sb2dfZmlsZXM6CiAJ CQkJcmV0dXJuKERCX0VSUk9SKTsKIAkJCX0KIAkJfQotCX0KIAotCS8qIENyZWF0ZSB0aGUgaW4t bWVtb3J5IGZpbGUgc3BhY2Ugb2JqZWN0cy4gKi8KKwkJc3J2X25fbG9nX2ZpbGVzX2ZvdW5kID0g aTsKIAotCXNwcmludGYobG9nZmlsZW5hbWUgKyBkaXJuYW1lbGVuLCAiaWJfbG9nZmlsZSVsdSIs IDBVTCk7CisJCS8qIENyZWF0ZSB0aGUgaW4tbWVtb3J5IGZpbGUgc3BhY2Ugb2JqZWN0cy4gKi8K IAotCWZpbF9zcGFjZV9jcmVhdGUobG9nZmlsZW5hbWUsCi0JCQkgU1JWX0xPR19TUEFDRV9GSVJT VF9JRCwKLQkJCSBmc3BfZmxhZ3Nfc2V0X3BhZ2Vfc2l6ZSgwLCBVTklWX1BBR0VfU0laRSksCi0J CQkgRklMX0xPRyk7CisJCXNwcmludGYobG9nZmlsZW5hbWUgKyBkaXJuYW1lbGVuLCAiaWJfbG9n ZmlsZSV1IiwgMCk7CiAKLQl1dF9hKGZpbF92YWxpZGF0ZSgpKTsKKwkJZmlsX3NwYWNlX2NyZWF0 ZShsb2dmaWxlbmFtZSwKKwkJCQkgU1JWX0xPR19TUEFDRV9GSVJTVF9JRCwKKwkJCQkgZnNwX2Zs YWdzX3NldF9wYWdlX3NpemUoMCwgVU5JVl9QQUdFX1NJWkUpLAorCQkJCSBGSUxfTE9HKTsKIAot CS8qIHNydl9sb2dfZmlsZV9zaXplIGlzIG1lYXN1cmVkIGluIHBhZ2VzOyBpZiBwYWdlIHNpemUg aXMgMTZLQiwKLQl0aGVuIHdlIGhhdmUgYSBsaW1pdCBvZiA2NFRCIG9uIDMyIGJpdCBzeXN0ZW1z ICovCi0JdXRfYShzcnZfbG9nX2ZpbGVfc2l6ZSA8PSBVTElOVF9NQVgpOwotCi0JZm9yICh1bGlu dCBqID0gMDsgaiA8IGk7IGorKykgewotCQlzcHJpbnRmKGxvZ2ZpbGVuYW1lICsgZGlybmFtZWxl biwgImliX2xvZ2ZpbGUlbHUiLAotCQkJKHVsb25nKSBqKTsKKwkJdXRfYShmaWxfdmFsaWRhdGUo KSk7CiAKLQkJaWYgKCFmaWxfbm9kZV9jcmVhdGUobG9nZmlsZW5hbWUsICh1bGludCkgc3J2X2xv Z19maWxlX3NpemUsCi0JCQkJICAgICBTUlZfTE9HX1NQQUNFX0ZJUlNUX0lELCBGQUxTRSkpIHsK LQkJCXJldHVybihEQl9FUlJPUik7CisJCS8qIHNydl9sb2dfZmlsZV9zaXplIGlzIG1lYXN1cmVk IGluIHBhZ2VzOyBpZiBwYWdlIHNpemUgaXMgMTZLQiwKKwkJdGhlbiB3ZSBoYXZlIGEgbGltaXQg b2YgNjRUQiBvbiAzMiBiaXQgc3lzdGVtcyAqLworCQl1dF9hKHNydl9sb2dfZmlsZV9zaXplIDw9 IFVMSU5UX01BWCk7CisKKwkJZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGk7IGorKykgeworCQkJ c3ByaW50Zihsb2dmaWxlbmFtZSArIGRpcm5hbWVsZW4sICJpYl9sb2dmaWxlJXUiLCBqKTsKKwor CQkJaWYgKCFmaWxfbm9kZV9jcmVhdGUobG9nZmlsZW5hbWUsCisJCQkJCSAgICAgKHVsaW50KSBz cnZfbG9nX2ZpbGVfc2l6ZSwKKwkJCQkJICAgICBTUlZfTE9HX1NQQUNFX0ZJUlNUX0lELCBGQUxT RSkpIHsKKwkJCQlyZXR1cm4oREJfRVJST1IpOworCQkJfQogCQl9Ci0JfQogCiAjaWZkZWYgVU5J Vl9MT0dfQVJDSElWRQotCS8qIENyZWF0ZSB0aGUgZmlsZSBzcGFjZSBvYmplY3QgZm9yIGFyY2hp dmVkIGxvZ3MuIFVuZGVyCi0JTXlTUUwsIG5vIGFyY2hpdmluZyBldmVyIGRvbmUuICovCi0JZmls X3NwYWNlX2NyZWF0ZSgiYXJjaF9sb2dfc3BhY2UiLCBTUlZfTE9HX1NQQUNFX0ZJUlNUX0lEICsg MSwKLQkJCSAwLCBGSUxfTE9HKTsKKwkJLyogQ3JlYXRlIHRoZSBmaWxlIHNwYWNlIG9iamVjdCBm b3IgYXJjaGl2ZWQgbG9ncy4gVW5kZXIKKwkJTXlTUUwsIG5vIGFyY2hpdmluZyBldmVyIGRvbmUu ICovCisJCWZpbF9zcGFjZV9jcmVhdGUoImFyY2hfbG9nX3NwYWNlIiwgU1JWX0xPR19TUEFDRV9G SVJTVF9JRCArIDEsCisJCQkJIDAsIEZJTF9MT0cpOwogI2VuZGlmIC8qIFVOSVZfTE9HX0FSQ0hJ VkUgKi8KLQlsb2dfZ3JvdXBfaW5pdCgwLCBpLCBzcnZfbG9nX2ZpbGVfc2l6ZSAqIFVOSVZfUEFH RV9TSVpFLAotCQkgICAgICAgU1JWX0xPR19TUEFDRV9GSVJTVF9JRCwKLQkJICAgICAgIFNSVl9M T0dfU1BBQ0VfRklSU1RfSUQgKyAxKTsgLyogZHVtbXkgYXJjaCBzcGFjZSBpZCAqLworCQlsb2df Z3JvdXBfaW5pdCgwLCBpLCBzcnZfbG9nX2ZpbGVfc2l6ZSAqIFVOSVZfUEFHRV9TSVpFLAorCQkJ ICAgICAgIFNSVl9MT0dfU1BBQ0VfRklSU1RfSUQsCisJCQkgICAgICAgU1JWX0xPR19TUEFDRV9G SVJTVF9JRCArIDEpOworCX0KIAotCS8qIE9wZW4gYWxsIGxvZyBmaWxlcyBhbmQgZGF0YSBmaWxl cyBpbiB0aGUgc3lzdGVtIHRhYmxlc3BhY2U6IHdlCi0Ja2VlcCB0aGVtIG9wZW4gdW50aWwgZGF0 YWJhc2Ugc2h1dGRvd24gKi8KKwkvKiBPcGVuIGFsbCBsb2cgZmlsZXMgYW5kIGRhdGEgZmlsZXMg aW4gdGhlIHN5c3RlbQorCXRhYmxlc3BhY2U6IHdlIGtlZXAgdGhlbSBvcGVuIHVudGlsIGRhdGFi YXNlCisJc2h1dGRvd24gKi8KIAogCWZpbF9vcGVuX2xvZ19hbmRfc3lzdGVtX3RhYmxlc3BhY2Vf ZmlsZXMoKTsKIApAQCAtMTk0MCw2OCArMjExNCw2IEBAIGNyZWF0ZV9sb2dfZmlsZXM6CiAJY2Fu IGFsc28gYmUgdXNlZCBieSByZWNvdmVyeSBpZiBpdCB0cmllcyB0byBkcm9wIHNvbWUgdGFibGUg Ki8KIAlkaWN0X3N0YXRzX3RocmVhZF9pbml0KCk7CiAKLQlpZiAobG9nX2NyZWF0ZWQgJiYgIWNy ZWF0ZV9uZXdfZGIKLSNpZmRlZiBVTklWX0xPR19BUkNISVZFCi0JICAgICYmICFzcnZfYXJjaGl2 ZV9yZWNvdmVyeQotI2VuZGlmIC8qIFVOSVZfTE9HX0FSQ0hJVkUgKi8KLQkgICAgKSB7Ci0JCWlm IChtYXhfZmx1c2hlZF9sc24gIT0gbWluX2ZsdXNoZWRfbHNuCi0jaWZkZWYgVU5JVl9MT0dfQVJD SElWRQotCQkgICAgfHwgbWF4X2FyY2hfbG9nX25vICE9IG1pbl9hcmNoX2xvZ19ubwotI2VuZGlm IC8qIFVOSVZfTE9HX0FSQ0hJVkUgKi8KLQkJICAgICkgewotCQkJdXRfcHJpbnRfdGltZXN0YW1w KHN0ZGVycik7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkiIElubm9EQjogQ2Fubm90IGluaXRp YWxpemUgY3JlYXRlZCIKLQkJCQkiIGxvZyBmaWxlcyBiZWNhdXNlXG4iKTsKLQkJCXV0X3ByaW50 X3RpbWVzdGFtcChzdGRlcnIpOwotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJIiBJbm5vREI6IGRh dGEgZmlsZXMgd2VyZSBub3QgaW4gc3luYyIKLQkJCQkiIHdpdGggZWFjaCBvdGhlclxuIik7Ci0J CQl1dF9wcmludF90aW1lc3RhbXAoc3RkZXJyKTsKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCSIg SW5ub0RCOiBvciB0aGUgZGF0YSBmaWxlcyBhcmUgY29ycnVwdC5cbiIpOwotCi0JCQlyZXR1cm4o REJfRVJST1IpOwotCQl9Ci0KLQkJaWYgKG1heF9mbHVzaGVkX2xzbiA8IChsc25fdCkgMTAwMCkg ewotCQkJdXRfcHJpbnRfdGltZXN0YW1wKHN0ZGVycik7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJ CQkiIElubm9EQjogQ2Fubm90IGluaXRpYWxpemUgY3JlYXRlZCIKLQkJCQkiIGxvZyBmaWxlcyBi ZWNhdXNlXG4iKTsKLQkJCXV0X3ByaW50X3RpbWVzdGFtcChzdGRlcnIpOwotCQkJZnByaW50Zihz dGRlcnIsCi0JCQkJIiBJbm5vREI6IGRhdGEgZmlsZXMgYXJlIGNvcnJ1cHQsIgotCQkJCSIgb3Ig bmV3IGRhdGEgZmlsZXMgd2VyZVxuIik7Ci0JCQl1dF9wcmludF90aW1lc3RhbXAoc3RkZXJyKTsK LQkJCWZwcmludGYoc3RkZXJyLAotCQkJCSIgSW5ub0RCOiBjcmVhdGVkIHdoZW4gdGhlIGRhdGFi YXNlIgotCQkJCSIgd2FzIHN0YXJ0ZWQgcHJldmlvdXNcbiIpOwotCQkJdXRfcHJpbnRfdGltZXN0 YW1wKHN0ZGVycik7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkiIElubm9EQjogdGltZSBidXQg dGhlIGRhdGFiYXNlIgotCQkJCSIgd2FzIG5vdCBzaHV0IGRvd25cbiIpOwotCQkJdXRfcHJpbnRf dGltZXN0YW1wKHN0ZGVycik7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkiIElubm9EQjogbm9y bWFsbHkgYWZ0ZXIgdGhhdC5cbiIpOwotCi0JCQlyZXR1cm4oREJfRVJST1IpOwotCQl9Ci0KLQkJ bXV0ZXhfZW50ZXIoJihsb2dfc3lzLT5tdXRleCkpOwotCi0jaWZkZWYgVU5JVl9MT0dfQVJDSElW RQotCQkvKiBEbyBub3QgKyAxIGFyY2hfbG9nX25vIGJlY2F1c2Ugd2UgZG8gbm90IHVzZSBsb2cK LQkJYXJjaGl2aW5nICovCi0JCXJlY3ZfcmVzZXRfbG9ncyhtYXhfZmx1c2hlZF9sc24sIG1heF9h cmNoX2xvZ19ubywgVFJVRSk7Ci0jZWxzZQotCQlyZWN2X3Jlc2V0X2xvZ3MobWF4X2ZsdXNoZWRf bHNuLCBUUlVFKTsKLSNlbmRpZiAvKiBVTklWX0xPR19BUkNISVZFICovCi0KLQkJbXV0ZXhfZXhp dCgmKGxvZ19zeXMtPm11dGV4KSk7Ci0JfQotCiAJdHJ4X3N5c19maWxlX2Zvcm1hdF9pbml0KCk7 CiAKIAl0cnhfc3lzX2NyZWF0ZSgpOwpAQCAtMjAzMCw2ICsyMTQyLDIwIEBAIGNyZWF0ZV9sb2df ZmlsZXM6CiAKIAkJc3J2X3N0YXJ0dXBfaXNfYmVmb3JlX3RyeF9yb2xsYmFja19waGFzZSA9IEZB TFNFOwogCisJCWJvb2wgc3VjY2VzcyA9IGJ1Zl9mbHVzaF9saXN0KFVMSU5UX01BWCwgTFNOX01B WCwgTlVMTCk7CisJCXV0X2Eoc3VjY2Vzcyk7CisKKwkJbWluX2ZsdXNoZWRfbHNuID0gbWF4X2Zs dXNoZWRfbHNuID0gbG9nX2dldF9sc24oKTsKKworCQlidWZfZmx1c2hfd2FpdF9iYXRjaF9lbmQo TlVMTCwgQlVGX0ZMVVNIX0xJU1QpOworCisJCS8qIFN0YW1wIHRoZSBMU04gdG8gdGhlIGRhdGEg ZmlsZXMuICovCisJCWZpbF93cml0ZV9mbHVzaGVkX2xzbl90b19kYXRhX2ZpbGVzKG1heF9mbHVz aGVkX2xzbiwgMCk7CisKKwkJZmlsX2ZsdXNoX2ZpbGVfc3BhY2VzKEZJTF9UQUJMRVNQQUNFKTsK KworCQljcmVhdGVfbG9nX2ZpbGVzX3JlbmFtZShsb2dmaWxlbmFtZSwgZGlybmFtZWxlbiwKKwkJ CQkJbWF4X2ZsdXNoZWRfbHNuLCBsb2dmaWxlMCk7CiAjaWZkZWYgVU5JVl9MT0dfQVJDSElWRQog CX0gZWxzZSBpZiAoc3J2X2FyY2hpdmVfcmVjb3ZlcnkpIHsKIAkJdXRfcHJpbnRfdGltZXN0YW1w KHN0ZGVycik7CkBAIC0yMTQzLDcgKzIyNjksNyBAQCBjcmVhdGVfbG9nX2ZpbGVzOgogCQlpZiAo IXNydl9mb3JjZV9yZWNvdmVyeQogCQkgICAgJiYgIXJlY3Zfc3lzLT5mb3VuZF9jb3JydXB0X2xv ZwogCQkgICAgJiYgKHNydl9sb2dfZmlsZV9zaXplX3JlcXVlc3RlZCAhPSBzcnZfbG9nX2ZpbGVf c2l6ZQotCQkJfHwgaSAhPSBzcnZfbl9sb2dfZmlsZXMpKSB7CisJCQl8fCBzcnZfbl9sb2dfZmls ZXNfZm91bmQgIT0gc3J2X25fbG9nX2ZpbGVzKSkgewogCQkJLyogUHJlcGFyZSB0byByZXBsYWNl IHRoZSByZWRvIGxvZyBmaWxlcy4gKi8KIAogCQkJLyogQ2xlYW4gdGhlIGJ1ZmZlciBwb29sLiAq LwpAQCAtMjE1MSw2ICsyMjc3LDggQEAgY3JlYXRlX2xvZ19maWxlczoKIAkJCQlVTElOVF9NQVgs IExTTl9NQVgsIE5VTEwpOwogCQkJdXRfYShzdWNjZXNzKTsKIAorCQkJUkVDT1ZFUllfQ1JBU0go MSk7CisKIAkJCW1pbl9mbHVzaGVkX2xzbiA9IG1heF9mbHVzaGVkX2xzbiA9IGxvZ19nZXRfbHNu KCk7CiAKIAkJCWliX2xvZ2YoSUJfTE9HX0xFVkVMX1dBUk4sCkBAIC0yMTY0LDYgKzIyOTIsOCBA QCBjcmVhdGVfbG9nX2ZpbGVzOgogCiAJCQlidWZfZmx1c2hfd2FpdF9iYXRjaF9lbmQoTlVMTCwg QlVGX0ZMVVNIX0xJU1QpOwogCisJCQlSRUNPVkVSWV9DUkFTSCgyKTsKKwogCQkJLyogRmx1c2gg dGhlIG9sZCBsb2cgZmlsZXMuICovCiAJCQlsb2dfYnVmZmVyX2ZsdXNoX3RvX2Rpc2soKTsKIApA QCAtMjE3MiwxNSArMjMwMiwyMSBAQCBjcmVhdGVfbG9nX2ZpbGVzOgogCQkJdXRfZChyZWN2X25v X2xvZ193cml0ZSA9IFRSVUUpOwogCQkJdXRfYWQoIWJ1Zl9wb29sX2NoZWNrX25vX3BlbmRpbmdf aW8oKSk7CiAKKwkJCVJFQ09WRVJZX0NSQVNIKDMpOworCiAJCQkvKiBTdGFtcCB0aGUgTFNOIHRv IHRoZSBkYXRhIGZpbGVzLiAqLwogCQkJZmlsX3dyaXRlX2ZsdXNoZWRfbHNuX3RvX2RhdGFfZmls ZXMoCiAJCQkJbWF4X2ZsdXNoZWRfbHNuLCAwKTsKIAogCQkJZmlsX2ZsdXNoX2ZpbGVfc3BhY2Vz KEZJTF9UQUJMRVNQQUNFKTsKIAotCQkJLyogQ2xvc2UgdGhlIHJlZG8gbG9nIGZpbGVzLCBzbyB0 aGF0IHdlIGNhbgotCQkJcmVwbGFjZSB0aGVtLiAqLwotCQkJZmlsX2Nsb3NlX2xvZ19maWxlcygp OworCQkJUkVDT1ZFUllfQ1JBU0goNCk7CisKKwkJCS8qIENsb3NlIGFuZCBmcmVlIHRoZSByZWRv IGxvZyBmaWxlcywgc28gdGhhdAorCQkJd2UgY2FuIHJlcGxhY2UgdGhlbS4gKi8KKwkJCWZpbF9j bG9zZV9sb2dfZmlsZXModHJ1ZSk7CisKKwkJCVJFQ09WRVJZX0NSQVNIKDUpOwogCiAJCQkvKiBG cmVlIHRoZSBvbGQgbG9nIGZpbGUgc3BhY2UuICovCiAJCQlsb2dfZ3JvdXBfY2xvc2VfYWxsKCk7 CkBAIC0yMTg4LDgyICsyMzI0LDE3IEBAIGNyZWF0ZV9sb2dfZmlsZXM6CiAJCQlpYl9sb2dmKElC X0xPR19MRVZFTF9XQVJOLAogCQkJCSJTdGFydGluZyB0byBkZWxldGUgYW5kIHJld3JpdGUgbG9n IGZpbGVzLiIpOwogCi0JCQkvKiBSZW1vdmUgdGhlIG9sZCBsb2cgZmlsZXMuICovCi0JCQlmb3Ig KHVsaW50IGogPSAwOyBqIDwgaTsgaisrKSB7Ci0JCQkJb3NfZmlsZV9zdGF0X3QJc3RhdF9pbmZv OwotCi0JCQkJc3ByaW50Zihsb2dmaWxlbmFtZSArIGRpcm5hbWVsZW4sCi0JCQkJCSJpYl9sb2dm aWxlJWx1IiwgKHVsb25nKSBqKTsKLQotCQkJCWVyciA9IG9zX2ZpbGVfZ2V0X3N0YXR1cygKLQkJ CQkJbG9nZmlsZW5hbWUsICZzdGF0X2luZm8sIGZhbHNlKTsKLQotCQkJCWlmIChlcnIgPT0gREJf Tk9UX0ZPVU5EKSB7Ci0JCQkJCWJyZWFrOwotCQkJCX0KLQotCQkJCWlmICghb3NfZmlsZV9kZWxl dGUobG9nZmlsZW5hbWUpKSB7Ci0JCQkJCXJldHVybihEQl9FUlJPUik7Ci0JCQkJfQotCQkJfQot Ci0JCQl1dF9hZCghYnVmX3Bvb2xfY2hlY2tfbm9fcGVuZGluZ19pbygpKTsKLQogCQkJc3J2X2xv Z19maWxlX3NpemUgPSBzcnZfbG9nX2ZpbGVfc2l6ZV9yZXF1ZXN0ZWQ7CiAKLQkJCS8qIENyZWF0 ZSBuZXcgbG9nIGZpbGVzLiAqLwotCQkJZm9yIChpID0gMDsgaSA8IHNydl9uX2xvZ19maWxlczsg aSsrKSB7Ci0JCQkJc3ByaW50Zihsb2dmaWxlbmFtZSArIGRpcm5hbWVsZW4sCi0JCQkJCSJpYl9s b2dmaWxlJWx1IiwgKHVsb25nKSBpKTsKLQotCQkJCWVyciA9IGNyZWF0ZV9sb2dfZmlsZSgmZmls ZXNbaV0sIGxvZ2ZpbGVuYW1lKTsKLQotCQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewotCQkJ CQlyZXR1cm4oZXJyKTsKLQkJCQl9Ci0JCQl9Ci0KLQkJCWxvZ19jcmVhdGVkID0gVFJVRTsKKwkJ CWVyciA9IGNyZWF0ZV9sb2dfZmlsZXMobG9nZmlsZW5hbWUsIGRpcm5hbWVsZW4sCisJCQkJCSAg ICAgICBtYXhfZmx1c2hlZF9sc24sIGxvZ2ZpbGUwKTsKIAotCQkJc3ByaW50Zihsb2dmaWxlbmFt ZSArIGRpcm5hbWVsZW4sCi0JCQkJImliX2xvZ2ZpbGUlbHUiLCAwVUwpOwotCi0JCQlmaWxfc3Bh Y2VfY3JlYXRlKAotCQkJCWxvZ2ZpbGVuYW1lLCBTUlZfTE9HX1NQQUNFX0ZJUlNUX0lELAotCQkJ CWZzcF9mbGFnc19zZXRfcGFnZV9zaXplKDAsIFVOSVZfUEFHRV9TSVpFKSwKLQkJCQlGSUxfTE9H KTsKLQkJCXV0X2EoZmlsX3ZhbGlkYXRlKCkpOwotCi0JCQlmb3IgKGkgPSAwOyBpIDwgc3J2X25f bG9nX2ZpbGVzOyBpKyspIHsKLQkJCQlzcHJpbnRmKGxvZ2ZpbGVuYW1lICsgZGlybmFtZWxlbiwK LQkJCQkJImliX2xvZ2ZpbGUlbHUiLCAodWxvbmcpIGkpOwotCi0JCQkJaWYgKCFmaWxfbm9kZV9j cmVhdGUoCi0JCQkJCSAgICBsb2dmaWxlbmFtZSwKLQkJCQkJICAgICh1bGludCkgc3J2X2xvZ19m aWxlX3NpemUsCi0JCQkJCSAgICBTUlZfTE9HX1NQQUNFX0ZJUlNUX0lELCBGQUxTRSkpIHsKLQkJ CQkJdXRfZXJyb3I7Ci0JCQkJfQorCQkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7CisJCQkJcmV0 dXJuKGVycik7CiAJCQl9CiAKLQkJCWxvZ19ncm91cF9pbml0KDAsIHNydl9uX2xvZ19maWxlcywK LQkJCQkgICAgICAgc3J2X2xvZ19maWxlX3NpemUgKiBVTklWX1BBR0VfU0laRSwKLQkJCQkgICAg ICAgU1JWX0xPR19TUEFDRV9GSVJTVF9JRCwKLQkJCQkgICAgICAgU1JWX0xPR19TUEFDRV9GSVJT VF9JRCArIDEpOwotCi0JCQlmaWxfb3Blbl9sb2dfYW5kX3N5c3RlbV90YWJsZXNwYWNlX2ZpbGVz KCk7Ci0KLQkJCS8qIENyZWF0ZSBhIGxvZyBjaGVja3BvaW50LiAqLwotCQkJbXV0ZXhfZW50ZXIo JmxvZ19zeXMtPm11dGV4KTsKLQkJCXV0X2QocmVjdl9ub19sb2dfd3JpdGUgPSBGQUxTRSk7Ci0J CQl1dF9hZChtYXhfZmx1c2hlZF9sc24gPT0gbG9nX3N5cy0+bHNuKTsKLQkJCXJlY3ZfcmVzZXRf bG9ncyhtYXhfZmx1c2hlZF9sc24sIFRSVUUpOwotCQkJbXV0ZXhfZXhpdCgmbG9nX3N5cy0+bXV0 ZXgpOwotCi0JCQlpYl9sb2dmKElCX0xPR19MRVZFTF9XQVJOLAotCQkJCSJOZXcgbG9nIGZpbGVz IGNyZWF0ZWQiCi0JCQkJIiwgTFNOPSIgTFNOX1BGLAotCQkJCW1heF9mbHVzaGVkX2xzbik7CisJ CQljcmVhdGVfbG9nX2ZpbGVzX3JlbmFtZShsb2dmaWxlbmFtZSwgZGlybmFtZWxlbiwKKwkJCQkJ CW1heF9mbHVzaGVkX2xzbiwgbG9nZmlsZTApOwogCQl9CiAKIAkJc3J2X3N0YXJ0dXBfaXNfYmVm b3JlX3RyeF9yb2xsYmFja19waGFzZSA9IEZBTFNFOwoKTm8gYnVuZGxlIChyZWFzb246IHVzZWxl c3MgZm9yIHB1c2ggZW1haWxzKS4=