From: marko.makela Date: August 29 2011 8:56am Subject: bzr push into mysql-5.5 branch (marko.makela:3506) List-Archive: http://lists.mysql.com/commits/140827 Message-Id: <201108290856.p7T8utCR019251@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM1MDYgTWFya28gTcOka2Vsw6QJMjAxMS0wOC0yOSBbbWVyZ2VdCiAgICAgIE1lcmdlIG15c3Fs LTUuNSB0byB3b3JraW5nIGNvcHkuCgogICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS9zeW5jMHN5bmMuaWMKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jh c2UvYnRyL2J0cjBidHIuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGJ0ci5jCXJl dmlkOmppbW15LnlhbmdAb3JhY2xlLmNvbS0yMDExMDgyOTA4Mjk1Ny1zeWtvdW93bHI0Y3VoY2lv CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBidHIuYwlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDExMDgyOTA4NTUzOC11Nzl6Z3Z4bjhra3c4dXdtCkBAIC05MDYsMjggKzkw NiwyOSBAQCBidHJfcGFnZV9hbGxvY19mb3JfaWJ1ZigKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIEFsbG9jYXRlcyBh IG5ldyBmaWxlIHBhZ2UgdG8gYmUgdXNlZCBpbiBhbiBpbmRleCB0cmVlLiBOT1RFOiB3ZSBhc3N1 bWUKIHRoYXQgdGhlIGNhbGxlciBoYXMgbWFkZSB0aGUgcmVzZXJ2YXRpb24gZm9yIGZyZWUgZXh0 ZW50cyEKLUByZXR1cm4JbmV3IGFsbG9jYXRlZCBibG9jaywgeC1sYXRjaGVkOyBOVUxMIGlmIG91 dCBvZiBzcGFjZSAqLwotVU5JVl9JTlRFUk4KLWJ1Zl9ibG9ja190KgotYnRyX3BhZ2VfYWxsb2Mo Ci0vKj09PT09PT09PT09Ki8KK0ByZXR1cm4JYWxsb2NhdGVkIHBhZ2UgbnVtYmVyLCBGSUxfTlVM TCBpZiBvdXQgb2Ygc3BhY2UgKi8KK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKChub25udWxsKDEsNSks IHdhcm5fdW51c2VkX3Jlc3VsdCkpCit1bGludAorYnRyX3BhZ2VfYWxsb2NfbG93KAorLyo9PT09 PT09PT09PT09PT0qLwogCWRpY3RfaW5kZXhfdCoJaW5kZXgsCQkvKiE8IGluOiBpbmRleCAqLwog CXVsaW50CQloaW50X3BhZ2Vfbm8sCS8qITwgaW46IGhpbnQgb2YgYSBnb29kIHBhZ2UgKi8KIAli eXRlCQlmaWxlX2RpcmVjdGlvbiwJLyohPCBpbjogZGlyZWN0aW9uIHdoZXJlIGEgcG9zc2libGUK IAkJCQkJcGFnZSBzcGxpdCBpcyBtYWRlICovCiAJdWxpbnQJCWxldmVsLAkJLyohPCBpbjogbGV2 ZWwgd2hlcmUgdGhlIHBhZ2UgaXMgcGxhY2VkCiAJCQkJCWluIHRoZSB0cmVlICovCi0JbXRyX3Qq CQltdHIpCQkvKiE8IGluOiBtdHIgKi8KKwltdHJfdCoJCW10ciwJCS8qITwgaW4vb3V0OiBtaW5p LXRyYW5zYWN0aW9uCisJCQkJCWZvciB0aGUgYWxsb2NhdGlvbiAqLworCW10cl90KgkJaW5pdF9t dHIpCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uCisJCQkJCWluIHdoaWNoIHRoZSBwYWdl IHNob3VsZCBiZQorCQkJCQlpbml0aWFsaXplZCAobWF5IGJlIHRoZSBzYW1lCisJCQkJCWFzIG10 ciksIG9yIE5VTEwgaWYgaXQgc2hvdWxkCisJCQkJCW5vdCBiZSBpbml0aWFsaXplZCAodGhlIHBh Z2UKKwkJCQkJYXQgaGludCB3YXMgcHJldmlvdXNseSBmcmVlZAorCQkJCQlpbiBtdHIpICovCiB7 CiAJZnNlZ19oZWFkZXJfdCoJc2VnX2hlYWRlcjsKIAlwYWdlX3QqCQlyb290OwotCWJ1Zl9ibG9j a190KgluZXdfYmxvY2s7Ci0JdWxpbnQJCW5ld19wYWdlX25vOwotCi0JaWYgKGRpY3RfaW5kZXhf aXNfaWJ1ZihpbmRleCkpIHsKLQotCQlyZXR1cm4oYnRyX3BhZ2VfYWxsb2NfZm9yX2lidWYoaW5k ZXgsIG10cikpOwotCX0KIAogCXJvb3QgPSBidHJfcm9vdF9nZXQoaW5kZXgsIG10cik7CiAKQEAg LTk0MSw4ICs5NDIsNDIgQEAgYnRyX3BhZ2VfYWxsb2MoCiAJcmVzZXJ2YXRpb24gZm9yIGZyZWUg ZXh0ZW50cywgYW5kIHRodXMgd2Uga25vdyB0aGF0IGEgcGFnZSBjYW4KIAliZSBhbGxvY2F0ZWQ6 ICovCiAKLQluZXdfcGFnZV9ubyA9IGZzZWdfYWxsb2NfZnJlZV9wYWdlX2dlbmVyYWwoc2VnX2hl YWRlciwgaGludF9wYWdlX25vLAotCQkJCQkJICAgZmlsZV9kaXJlY3Rpb24sIFRSVUUsIG10cik7 CisJcmV0dXJuKGZzZWdfYWxsb2NfZnJlZV9wYWdlX2dlbmVyYWwoCisJCSAgICAgICBzZWdfaGVh ZGVyLCBoaW50X3BhZ2Vfbm8sIGZpbGVfZGlyZWN0aW9uLAorCQkgICAgICAgVFJVRSwgbXRyLCBp bml0X210cikpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovLyoqCitBbGxvY2F0ZXMgYSBuZXcgZmlsZSBwYWdlIHRv IGJlIHVzZWQgaW4gYW4gaW5kZXggdHJlZS4gTk9URTogd2UgYXNzdW1lCit0aGF0IHRoZSBjYWxs ZXIgaGFzIG1hZGUgdGhlIHJlc2VydmF0aW9uIGZvciBmcmVlIGV4dGVudHMhCitAcmV0dXJuCW5l dyBhbGxvY2F0ZWQgYmxvY2ssIHgtbGF0Y2hlZDsgTlVMTCBpZiBvdXQgb2Ygc3BhY2UgKi8KK1VO SVZfSU5URVJOCitidWZfYmxvY2tfdCoKK2J0cl9wYWdlX2FsbG9jKAorLyo9PT09PT09PT09PSov CisJZGljdF9pbmRleF90KglpbmRleCwJCS8qITwgaW46IGluZGV4ICovCisJdWxpbnQJCWhpbnRf cGFnZV9ubywJLyohPCBpbjogaGludCBvZiBhIGdvb2QgcGFnZSAqLworCWJ5dGUJCWZpbGVfZGly ZWN0aW9uLAkvKiE8IGluOiBkaXJlY3Rpb24gd2hlcmUgYSBwb3NzaWJsZQorCQkJCQlwYWdlIHNw bGl0IGlzIG1hZGUgKi8KKwl1bGludAkJbGV2ZWwsCQkvKiE8IGluOiBsZXZlbCB3aGVyZSB0aGUg cGFnZSBpcyBwbGFjZWQKKwkJCQkJaW4gdGhlIHRyZWUgKi8KKwltdHJfdCoJCW10ciwJCS8qITwg aW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uCisJCQkJCWZvciB0aGUgYWxsb2NhdGlvbiAqLworCW10 cl90KgkJaW5pdF9tdHIpCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uCisJCQkJCWZvciB4 LWxhdGNoaW5nIGFuZCBpbml0aWFsaXppbmcKKwkJCQkJdGhlIHBhZ2UgKi8KK3sKKwlidWZfYmxv Y2tfdCoJbmV3X2Jsb2NrOworCXVsaW50CQluZXdfcGFnZV9ubzsKKworCWlmIChkaWN0X2luZGV4 X2lzX2lidWYoaW5kZXgpKSB7CisKKwkJcmV0dXJuKGJ0cl9wYWdlX2FsbG9jX2Zvcl9pYnVmKGlu ZGV4LCBtdHIpKTsKKwl9CisKKwluZXdfcGFnZV9ubyA9IGJ0cl9wYWdlX2FsbG9jX2xvdygKKwkJ aW5kZXgsIGhpbnRfcGFnZV9ubywgZmlsZV9kaXJlY3Rpb24sIGxldmVsLCBtdHIsIGluaXRfbXRy KTsKKwogCWlmIChuZXdfcGFnZV9ubyA9PSBGSUxfTlVMTCkgewogCiAJCXJldHVybihOVUxMKTsK QEAgLTk1MCw5ICs5ODUsMTYgQEAgYnRyX3BhZ2VfYWxsb2MoCiAKIAluZXdfYmxvY2sgPSBidWZf cGFnZV9nZXQoZGljdF9pbmRleF9nZXRfc3BhY2UoaW5kZXgpLAogCQkJCSBkaWN0X3RhYmxlX3pp cF9zaXplKGluZGV4LT50YWJsZSksCi0JCQkJIG5ld19wYWdlX25vLCBSV19YX0xBVENILCBtdHIp OworCQkJCSBuZXdfcGFnZV9ubywgUldfWF9MQVRDSCwgaW5pdF9tdHIpOwogCWJ1Zl9ibG9ja19k YmdfYWRkX2xldmVsKG5ld19ibG9jaywgU1lOQ19UUkVFX05PREVfTkVXKTsKIAorCWlmIChtdHIt PmZyZWVkX2NsdXN0X2xlYWYpIHsKKwkJbXRyX21lbW9fcmVsZWFzZShtdHIsIG5ld19ibG9jaywg TVRSX01FTU9fRlJFRV9DTFVTVF9MRUFGKTsKKwkJdXRfYWQoIW10cl9tZW1vX2NvbnRhaW5zKG10 ciwgbmV3X2Jsb2NrLAorCQkJCQkgTVRSX01FTU9fRlJFRV9DTFVTVF9MRUFGKSk7CisJfQorCisJ dXRfYWQoYnRyX2ZyZWVkX2xlYXZlc192YWxpZGF0ZShtdHIpKTsKIAlyZXR1cm4obmV3X2Jsb2Nr KTsKIH0KIApAQCAtMTA2NSw2ICsxMTA3LDE1IEBAIGJ0cl9wYWdlX2ZyZWVfbG93KAogCWZzZWdf ZnJlZV9wYWdlKHNlZ19oZWFkZXIsCiAJCSAgICAgICBidWZfYmxvY2tfZ2V0X3NwYWNlKGJsb2Nr KSwKIAkJICAgICAgIGJ1Zl9ibG9ja19nZXRfcGFnZV9ubyhibG9jayksIG10cik7CisKKwkvKiBU aGUgcGFnZSB3YXMgbWFya2VkIGZyZWUgaW4gdGhlIGFsbG9jYXRpb24gYml0bWFwLCBidXQgaXQK KwlzaG91bGQgcmVtYWluIGJ1ZmZlci1maXhlZCB1bnRpbCBtdHJfY29tbWl0KG10cikgb3IgdW50 aWwgaXQKKwlpcyBleHBsaWNpdGx5IGZyZWVkIGZyb20gdGhlIG1pbmktdHJhbnNhY3Rpb24uICov CisJdXRfYWQobXRyX21lbW9fY29udGFpbnMobXRyLCBibG9jaywgTVRSX01FTU9fUEFHRV9YX0ZJ WCkpOworCS8qIFRPRE86IERpc2NhcmQgYW55IG9wZXJhdGlvbnMgb24gdGhlIHBhZ2UgZnJvbSB0 aGUgcmVkbyBsb2cKKwlhbmQgcmVtb3ZlIHRoZSBibG9jayBmcm9tIHRoZSBmbHVzaCBsaXN0IGFu ZCB0aGUgYnVmZmVyIHBvb2wuCisJVGhpcyB3b3VsZCBmcmVlIHVwIGJ1ZmZlciBwb29sIGVhcmxp ZXIgYW5kIHJlZHVjZSB3cml0ZXMgdG8KKwlib3RoIHRoZSB0YWJsZXNwYWNlIGFuZCB0aGUgcmVk byBsb2cuICovCiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKQEAgLTEwNzgsMTIgKzExMjksMTM5IEBAIGJ0cl9w YWdlX2ZyZWUoCiAJYnVmX2Jsb2NrX3QqCWJsb2NrLAkvKiE8IGluOiBibG9jayB0byBiZSBmcmVl ZCwgeC1sYXRjaGVkICovCiAJbXRyX3QqCQltdHIpCS8qITwgaW46IG10ciAqLwogewotCXVsaW50 CQlsZXZlbDsKLQotCWxldmVsID0gYnRyX3BhZ2VfZ2V0X2xldmVsKGJ1Zl9ibG9ja19nZXRfZnJh bWUoYmxvY2spLCBtdHIpOworCWNvbnN0IHBhZ2VfdCoJcGFnZQk9IGJ1Zl9ibG9ja19nZXRfZnJh bWUoYmxvY2spOworCXVsaW50CQlsZXZlbAk9IGJ0cl9wYWdlX2dldF9sZXZlbChwYWdlLCBtdHIp OwogCisJdXRfYWQoZmlsX3BhZ2VfZ2V0X3R5cGUoYmxvY2stPmZyYW1lKSA9PSBGSUxfUEFHRV9J TkRFWCk7CiAJYnRyX3BhZ2VfZnJlZV9sb3coaW5kZXgsIGJsb2NrLCBsZXZlbCwgbXRyKTsKKwor CS8qIFRoZSBoYW5kbGluZyBvZiBNVFJfTUVNT19GUkVFX0NMVVNUX0xFQUYgYXNzdW1lcyB0aGlz LiAqLworCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zKG10ciwgYmxvY2ssIE1UUl9NRU1PX1BBR0Vf WF9GSVgpKTsKKworCWlmIChsZXZlbCA9PSAwICYmIGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgp KSB7CisJCS8qIFdlIG1heSBoYXZlIHRvIGNhbGwgYnRyX21hcmtfZnJlZWRfbGVhdmVzKCkgdG8K KwkJdGVtcG9yYXJpbHkgbWFyayB0aGUgYmxvY2sgbm9uZnJlZSBmb3IgaW52b2tpbmcKKwkJYnRy X3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkc19mdW5jKCkgYWZ0ZXIgYW4KKwkJdXBkYXRlLiBS ZW1lbWJlciB0aGF0IHRoZSBibG9jayB3YXMgZnJlZWQuICovCisJCW10ci0+ZnJlZWRfY2x1c3Rf bGVhZiA9IFRSVUU7CisJCW10cl9tZW1vX3B1c2gobXRyLCBibG9jaywgTVRSX01FTU9fRlJFRV9D TFVTVF9MRUFGKTsKKwl9CisKKwl1dF9hZChidHJfZnJlZWRfbGVhdmVzX3ZhbGlkYXRlKG10cikp OworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovLyoqCitNYXJrcyBhbGwgTVRSX01FTU9fRlJFRV9DTFVTVF9MRUFGIHBh Z2VzIG5vbmZyZWUgb3IgZnJlZS4KK0ZvciBpbnZva2luZyBidHJfc3RvcmVfYmlnX3JlY19leHRl cm5fZmllbGRzKCkgYWZ0ZXIgYW4gdXBkYXRlLAord2UgbXVzdCB0ZW1wb3JhcmlseSBtYXJrIGZy ZWVkIGNsdXN0ZXJlZCBpbmRleCBwYWdlcyBhbGxvY2F0ZWQsIHNvCit0aGF0IG9mZi1wYWdlIGNv bHVtbnMgd2lsbCBub3QgYmUgYWxsb2NhdGVkIGZyb20gdGhlbS4gQmV0d2VlbiB0aGUKK2J0cl9z dG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoKSBhbmQgbXRyX2NvbW1pdCgpIHdlIGhhdmUgdG8K K21hcmsgdGhlIHBhZ2VzIGZyZWUgYWdhaW4sIHNvIHRoYXQgbm8gcGFnZXMgd2lsbCBiZSBsZWFr ZWQuICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX21hcmtfZnJlZWRfbGVhdmVzKAorLyo9PT09 PT09PT09PT09PT09PT0qLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW4vb3V0OiBjbHVz dGVyZWQgaW5kZXggKi8KKwltdHJfdCoJCW10ciwJLyohPCBpbi9vdXQ6IG1pbmktdHJhbnNhY3Rp b24gKi8KKwlpYm9vbAkJbm9uZnJlZSkvKiE8IGluOiBUUlVFPW1hcmsgbm9uZnJlZSwgRkFMU0U9 bWFyayBmcmVlZCAqLworeworCS8qIFRoaXMgaXMgbG9vc2VseSBiYXNlZCBvbiBtdHJfbWVtb19y ZWxlYXNlKCkuICovCisKKwl1bGludAlvZmZzZXQ7CisKKwl1dF9hZChkaWN0X2luZGV4X2lzX2Ns dXN0KGluZGV4KSk7CisJdXRfYWQobXRyLT5tYWdpY19uID09IE1UUl9NQUdJQ19OKTsKKwl1dF9h ZChtdHItPnN0YXRlID09IE1UUl9BQ1RJVkUpOworCisJaWYgKCFtdHItPmZyZWVkX2NsdXN0X2xl YWYpIHsKKwkJcmV0dXJuOworCX0KKworCW9mZnNldCA9IGR5bl9hcnJheV9nZXRfZGF0YV9zaXpl KCZtdHItPm1lbW8pOworCisJd2hpbGUgKG9mZnNldCA+IDApIHsKKwkJbXRyX21lbW9fc2xvdF90 KglzbG90OworCQlidWZfYmxvY2tfdCoJCWJsb2NrOworCisJCW9mZnNldCAtPSBzaXplb2YgKnNs b3Q7CisKKwkJc2xvdCA9IGR5bl9hcnJheV9nZXRfZWxlbWVudCgmbXRyLT5tZW1vLCBvZmZzZXQp OworCisJCWlmIChzbG90LT50eXBlICE9IE1UUl9NRU1PX0ZSRUVfQ0xVU1RfTEVBRikgeworCQkJ Y29udGludWU7CisJCX0KKworCQkvKiBCZWNhdXNlIGJ0cl9wYWdlX2FsbG9jKCkgZG9lcyBpbnZv a2UKKwkJbXRyX21lbW9fcmVsZWFzZSBvbiBNVFJfTUVNT19GUkVFX0NMVVNUX0xFQUYsIGFsbAor CQlibG9ja3MgdGFnZ2VkIHdpdGggTVRSX01FTU9fRlJFRV9DTFVTVF9MRUFGIGluIHRoZQorCQlt ZW1vIG11c3Qgc3RpbGwgYmUgY2x1c3RlcmVkIGluZGV4IGxlYWYgdHJlZSBwYWdlcy4gKi8KKwkJ YmxvY2sgPSBzbG90LT5vYmplY3Q7CisJCXV0X2EoYnVmX2Jsb2NrX2dldF9zcGFjZShibG9jaykK KwkJICAgICA9PSBkaWN0X2luZGV4X2dldF9zcGFjZShpbmRleCkpOworCQl1dF9hKGZpbF9wYWdl X2dldF90eXBlKGJ1Zl9ibG9ja19nZXRfZnJhbWUoYmxvY2spKQorCQkgICAgID09IEZJTF9QQUdF X0lOREVYKTsKKwkJdXRfYShwYWdlX2lzX2xlYWYoYnVmX2Jsb2NrX2dldF9mcmFtZShibG9jaykp KTsKKworCQlpZiAobm9uZnJlZSkgeworCQkJLyogQWxsb2NhdGUgdGhlIHNhbWUgcGFnZSBhZ2Fp bi4gKi8KKwkJCXVsaW50CXBhZ2Vfbm87CisJCQlwYWdlX25vID0gYnRyX3BhZ2VfYWxsb2NfbG93 KAorCQkJCWluZGV4LCBidWZfYmxvY2tfZ2V0X3BhZ2Vfbm8oYmxvY2spLAorCQkJCUZTUF9OT19E SVIsIDAsIG10ciwgTlVMTCk7CisJCQl1dF9hKHBhZ2Vfbm8gPT0gYnVmX2Jsb2NrX2dldF9wYWdl X25vKGJsb2NrKSk7CisJCX0gZWxzZSB7CisJCQkvKiBBc3NlcnQgdGhhdCB0aGUgcGFnZSBpcyBh bGxvY2F0ZWQgYW5kIGZyZWUgaXQuICovCisJCQlidHJfcGFnZV9mcmVlX2xvdyhpbmRleCwgYmxv Y2ssIDAsIG10cik7CisJCX0KKwl9CisKKwl1dF9hZChidHJfZnJlZWRfbGVhdmVzX3ZhbGlkYXRl KG10cikpOworfQorCisjaWZkZWYgVU5JVl9ERUJVRworLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorVmFsaWRhdGVzIGFs bCBwYWdlcyBtYXJrZWQgTVRSX01FTU9fRlJFRV9DTFVTVF9MRUFGLgorQHNlZSBidHJfbWFya19m cmVlZF9sZWF2ZXMoKQorQHJldHVybiBUUlVFICovCitVTklWX0lOVEVSTgoraWJvb2wKK2J0cl9m cmVlZF9sZWF2ZXNfdmFsaWRhdGUoCisvKj09PT09PT09PT09PT09PT09PT09PT0qLworCW10cl90 KgltdHIpCS8qITwgaW46IG1pbmktdHJhbnNhY3Rpb24gKi8KK3sKKwl1bGludAlvZmZzZXQ7CisK Kwl1dF9hZChtdHItPm1hZ2ljX24gPT0gTVRSX01BR0lDX04pOworCXV0X2FkKG10ci0+c3RhdGUg PT0gTVRSX0FDVElWRSk7CisKKwlvZmZzZXQgPSBkeW5fYXJyYXlfZ2V0X2RhdGFfc2l6ZSgmbXRy LT5tZW1vKTsKKworCXdoaWxlIChvZmZzZXQgPiAwKSB7CisJCWNvbnN0IG10cl9tZW1vX3Nsb3Rf dCoJc2xvdDsKKwkJY29uc3QgYnVmX2Jsb2NrX3QqCWJsb2NrOworCisJCW9mZnNldCAtPSBzaXpl b2YgKnNsb3Q7CisKKwkJc2xvdCA9IGR5bl9hcnJheV9nZXRfZWxlbWVudCgmbXRyLT5tZW1vLCBv ZmZzZXQpOworCisJCWlmIChzbG90LT50eXBlICE9IE1UUl9NRU1PX0ZSRUVfQ0xVU1RfTEVBRikg eworCQkJY29udGludWU7CisJCX0KKworCQl1dF9hKG10ci0+ZnJlZWRfY2x1c3RfbGVhZik7CisJ CS8qIEJlY2F1c2UgYnRyX3BhZ2VfYWxsb2MoKSBkb2VzIGludm9rZQorCQltdHJfbWVtb19yZWxl YXNlIG9uIE1UUl9NRU1PX0ZSRUVfQ0xVU1RfTEVBRiwgYWxsCisJCWJsb2NrcyB0YWdnZWQgd2l0 aCBNVFJfTUVNT19GUkVFX0NMVVNUX0xFQUYgaW4gdGhlCisJCW1lbW8gbXVzdCBzdGlsbCBiZSBj bHVzdGVyZWQgaW5kZXggbGVhZiB0cmVlIHBhZ2VzLiAqLworCQlibG9jayA9IHNsb3QtPm9iamVj dDsKKwkJdXRfYShmaWxfcGFnZV9nZXRfdHlwZShidWZfYmxvY2tfZ2V0X2ZyYW1lKGJsb2NrKSkK KwkJICAgICA9PSBGSUxfUEFHRV9JTkRFWCk7CisJCXV0X2EocGFnZV9pc19sZWFmKGJ1Zl9ibG9j a19nZXRfZnJhbWUoYmxvY2spKSk7CisJfQorCisJcmV0dXJuKFRSVUUpOwogfQorI2VuZGlmIC8q IFVOSVZfREVCVUcgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogU2V0cyB0aGUgY2hpbGQgbm9kZSBmaWxlIGFk ZHJlc3MgaW4gYSBub2RlIHBvaW50ZXIuICovCkBAIC0xODA5LDcgKzE5ODcsNyBAQCBidHJfcm9v dF9yYWlzZV9hbmRfaW5zZXJ0KAogCiAJbGV2ZWwgPSBidHJfcGFnZV9nZXRfbGV2ZWwocm9vdCwg bXRyKTsKIAotCW5ld19ibG9jayA9IGJ0cl9wYWdlX2FsbG9jKGluZGV4LCAwLCBGU1BfTk9fRElS LCBsZXZlbCwgbXRyKTsKKwluZXdfYmxvY2sgPSBidHJfcGFnZV9hbGxvYyhpbmRleCwgMCwgRlNQ X05PX0RJUiwgbGV2ZWwsIG10ciwgbXRyKTsKIAluZXdfcGFnZSA9IGJ1Zl9ibG9ja19nZXRfZnJh bWUobmV3X2Jsb2NrKTsKIAluZXdfcGFnZV96aXAgPSBidWZfYmxvY2tfZ2V0X3BhZ2VfemlwKG5l d19ibG9jayk7CiAJdXRfYSghbmV3X3BhZ2VfemlwID09ICFyb290X3BhZ2VfemlwKTsKQEAgLTI1 NDUsNyArMjcyMyw3IEBAIGZ1bmNfc3RhcnQ6CiAKIAkvKiAyLiBBbGxvY2F0ZSBhIG5ldyBwYWdl IHRvIHRoZSBpbmRleCAqLwogCW5ld19ibG9jayA9IGJ0cl9wYWdlX2FsbG9jKGN1cnNvci0+aW5k ZXgsIGhpbnRfcGFnZV9ubywgZGlyZWN0aW9uLAotCQkJCSAgIGJ0cl9wYWdlX2dldF9sZXZlbChw YWdlLCBtdHIpLCBtdHIpOworCQkJCSAgIGJ0cl9wYWdlX2dldF9sZXZlbChwYWdlLCBtdHIpLCBt dHIsIG10cik7CiAJbmV3X3BhZ2UgPSBidWZfYmxvY2tfZ2V0X2ZyYW1lKG5ld19ibG9jayk7CiAJ bmV3X3BhZ2VfemlwID0gYnVmX2Jsb2NrX2dldF9wYWdlX3ppcChuZXdfYmxvY2spOwogCWJ0cl9w YWdlX2NyZWF0ZShuZXdfYmxvY2ssIG5ld19wYWdlX3ppcCwgY3Vyc29yLT5pbmRleCwKCj09PSBt b2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3VyLmMnCi0tLSBhL3N0b3Jh Z2UvaW5ub2Jhc2UvYnRyL2J0cjBjdXIuYwlyZXZpZDpqaW1teS55YW5nQG9yYWNsZS5jb20tMjAx MTA4MjkwODI5NTctc3lrb3Vvd2xyNGN1aGNpbworKysgYi9zdG9yYWdlL2lubm9iYXNlL2J0ci9i dHIwY3VyLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA4MjkwODU1MzgtdTc5 emd2eG44a2t3OHV3bQpAQCAtMjUzMiwzOSArMjUzMiw2IEBAIHJldHVybl9hZnRlcl9yZXNlcnZh dGlvbnM6CiAJcmV0dXJuKGVycik7CiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLUNvbW1pdHMgYW5kIHJlc3Rh cnRzIGEgbWluaS10cmFuc2FjdGlvbiBzbyB0aGF0IGl0IHdpbGwgcmV0YWluIGFuCi14LWxvY2sg b24gaW5kZXgtPmxvY2sgYW5kIHRoZSBjdXJzb3IgcGFnZS4gKi8KLVVOSVZfSU5URVJOCi12b2lk Ci1idHJfY3VyX210cl9jb21taXRfYW5kX3N0YXJ0KAotLyo9PT09PT09PT09PT09PT09PT09PT09 PT09Ki8KLQlidHJfY3VyX3QqCWN1cnNvciwJLyohPCBpbjogY3Vyc29yICovCi0JbXRyX3QqCQlt dHIpCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCi17Ci0JYnVmX2Jsb2NrX3QqCWJs b2NrOwotCi0JYmxvY2sgPSBidHJfY3VyX2dldF9ibG9jayhjdXJzb3IpOwotCi0JdXRfYWQobXRy X21lbW9fY29udGFpbnMobXRyLCBkaWN0X2luZGV4X2dldF9sb2NrKGN1cnNvci0+aW5kZXgpLAot CQkJCU1UUl9NRU1PX1hfTE9DSykpOwotCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zKG10ciwgYmxv Y2ssIE1UUl9NRU1PX1BBR0VfWF9GSVgpKTsKLQkvKiBLZWVwIHRoZSBsb2NrcyBhY3Jvc3MgdGhl IG10cl9jb21taXQobXRyKS4gKi8KLQlyd19sb2NrX3hfbG9jayhkaWN0X2luZGV4X2dldF9sb2Nr KGN1cnNvci0+aW5kZXgpKTsKLQlyd19sb2NrX3hfbG9jaygmYmxvY2stPmxvY2spOwotCW11dGV4 X2VudGVyKCZibG9jay0+bXV0ZXgpOwotCWJ1Zl9ibG9ja19idWZfZml4X2luYyhibG9jaywgX19G SUxFX18sIF9fTElORV9fKTsKLQltdXRleF9leGl0KCZibG9jay0+bXV0ZXgpOwotCS8qIFdyaXRl IG91dCB0aGUgcmVkbyBsb2cuICovCi0JbXRyX2NvbW1pdChtdHIpOwotCW10cl9zdGFydChtdHIp OwotCS8qIFJlYXNzb2NpYXRlIHRoZSBsb2NrcyB3aXRoIHRoZSBtaW5pLXRyYW5zYWN0aW9uLgot CVRoZXkgd2lsbCBiZSByZWxlYXNlZCBvbiBtdHJfY29tbWl0KG10cikuICovCi0JbXRyX21lbW9f cHVzaChtdHIsIGRpY3RfaW5kZXhfZ2V0X2xvY2soY3Vyc29yLT5pbmRleCksCi0JCSAgICAgIE1U Ul9NRU1PX1hfTE9DSyk7Ci0JbXRyX21lbW9fcHVzaChtdHIsIGJsb2NrLCBNVFJfTUVNT19QQUdF X1hfRklYKTsKLX0KLQogLyo9PT09PT09PT09PT09PT09PT09PSBCLVRSRUUgREVMRVRFIE1BUksg QU5EIFVOTUFSSyA9PT09PT09PT09PT09PT0qLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKQEAgLTQxOTAsNiAr NDE1Nyw5IEBAIGJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHNfZnVuYygKIAkJCQkJdGhl ICJleHRlcm5hbCBzdG9yYWdlIiBmbGFncyBpbiBvZmZzZXRzCiAJCQkJCXdpbGwgbm90IGNvcnJl c3BvbmQgdG8gcmVjIHdoZW4KIAkJCQkJdGhpcyBmdW5jdGlvbiByZXR1cm5zICovCisJY29uc3Qg YmlnX3JlY190KmJpZ19yZWNfdmVjLAkvKiE8IGluOiB2ZWN0b3IgY29udGFpbmluZyBmaWVsZHMK KwkJCQkJdG8gYmUgc3RvcmVkIGV4dGVybmFsbHkgKi8KKwogI2lmZGVmIFVOSVZfREVCVUcKIAlt dHJfdCoJCWxvY2FsX210ciwJLyohPCBpbjogbXRyIGNvbnRhaW5pbmcgdGhlCiAJCQkJCWxhdGNo IHRvIHJlYyBhbmQgdG8gdGhlIHRyZWUgKi8KQEAgLTQxOTgsOSArNDE2OCwxMSBAQCBidHJfc3Rv cmVfYmlnX3JlY19leHRlcm5fZmllbGRzX2Z1bmMoCiAJaWJvb2wJCXVwZGF0ZV9pbl9wbGFjZSwv KiEgaW46IFRSVUUgaWYgdGhlIHJlY29yZCBpcyB1cGRhdGVkCiAJCQkJCWluIHBsYWNlIChub3Qg ZGVsZXRlK2luc2VydCkgKi8KICNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQkxPQl9MSUdI VF9ERUJVRyAqLwotCWNvbnN0IGJpZ19yZWNfdCpiaWdfcmVjX3ZlYykJLyohPCBpbjogdmVjdG9y IGNvbnRhaW5pbmcgZmllbGRzCi0JCQkJCXRvIGJlIHN0b3JlZCBleHRlcm5hbGx5ICovCi0KKwlt dHJfdCoJCWFsbG9jX210cikJLyohPCBpbi9vdXQ6IGluIGFuIGluc2VydCwgTlVMTDsKKwkJCQkJ aW4gYW4gdXBkYXRlLCBsb2NhbF9tdHIgZm9yCisJCQkJCWFsbG9jYXRpbmcgQkxPQiBwYWdlcyBh bmQKKwkJCQkJdXBkYXRpbmcgQkxPQiBwb2ludGVyczsgYWxsb2NfbXRyCisJCQkJCW11c3Qgbm90 IGhhdmUgZnJlZWQgYW55IGxlYWYgcGFnZXMgKi8KIHsKIAl1bGludAlyZWNfcGFnZV9ubzsKIAli eXRlKglmaWVsZF9yZWY7CkBAIC00MjE5LDYgKzQxOTEsOSBAQCBidHJfc3RvcmVfYmlnX3JlY19l eHRlcm5fZmllbGRzX2Z1bmMoCiAKIAl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZShyZWMsIGluZGV4 LCBvZmZzZXRzKSk7CiAJdXRfYWQocmVjX29mZnNfYW55X2V4dGVybihvZmZzZXRzKSk7CisJdXRf YWQobG9jYWxfbXRyKTsKKwl1dF9hZCghYWxsb2NfbXRyIHx8IGFsbG9jX210ciA9PSBsb2NhbF9t dHIpOworCXV0X2FkKCF1cGRhdGVfaW5fcGxhY2UgfHwgYWxsb2NfbXRyKTsKIAl1dF9hZChtdHJf bWVtb19jb250YWlucyhsb2NhbF9tdHIsIGRpY3RfaW5kZXhfZ2V0X2xvY2soaW5kZXgpLAogCQkJ CU1UUl9NRU1PX1hfTE9DSykpOwogCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zKGxvY2FsX210ciwg cmVjX2Jsb2NrLCBNVFJfTUVNT19QQUdFX1hfRklYKSk7CkBAIC00MjM0LDYgKzQyMDksMjUgQEAg YnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkc19mdW5jKAogCXJlY19wYWdlX25vID0gYnVm X2Jsb2NrX2dldF9wYWdlX25vKHJlY19ibG9jayk7CiAJdXRfYShmaWxfcGFnZV9nZXRfdHlwZShw YWdlX2FsaWduKHJlYykpID09IEZJTF9QQUdFX0lOREVYKTsKIAorCWlmIChhbGxvY19tdHIpIHsK KwkJLyogQmVjYXVzZSBhbGxvY19tdHIgd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIKKwkJbXRyLCBp dCBpcyBwb3NzaWJsZSB0aGF0IHRoZSB0YWJsZXNwYWNlIGhhcyBiZWVuCisJCWV4dGVuZGVkIHdo ZW4gdGhlIEItdHJlZSByZWNvcmQgd2FzIHVwZGF0ZWQgb3IKKwkJaW5zZXJ0ZWQsIG9yIGl0IHdp bGwgYmUgZXh0ZW5kZWQgd2hpbGUgYWxsb2NhdGluZworCQlwYWdlcyBmb3IgYmlnX3JlYy4KKwor CQlUT0RPOiBJbiBtdHIgKG5vdCBhbGxvY19tdHIpLCB3cml0ZSBhIHJlZG8gbG9nIHJlY29yZAor CQlhYm91dCBleHRlbmRpbmcgdGhlIHRhYmxlc3BhY2UgdG8gaXRzIGN1cnJlbnQgc2l6ZSwKKwkJ YW5kIHJlbWVtYmVyIHRoZSBjdXJyZW50IHNpemUuIFdoZW5ldmVyIHRoZSB0YWJsZXNwYWNlCisJ CWdyb3dzIGFzIHBhZ2VzIGFyZSBhbGxvY2F0ZWQsIHdyaXRlIGZ1cnRoZXIgcmVkbyBsb2cKKwkJ cmVjb3JkcyB0byBtdHIuIChDdXJyZW50bHkgdGFibGVzcGFjZSBleHRlbnNpb24gaXMgbm90CisJ CWNvdmVyZWQgYnkgdGhlIHJlZG8gbG9nLiBJZiBpdCB3ZXJlLCB0aGUgcmVjb3JkIHdvdWxkCisJ CW9ubHkgYmUgd3JpdHRlbiB0byBhbGxvY19tdHIsIHdoaWNoIGlzIGNvbW1pdHRlZCBhZnRlcgor CQltdHIuKSAqLworCX0gZWxzZSB7CisJCWFsbG9jX210ciA9ICZtdHI7CisJfQorCiAJaWYgKFVO SVZfTElLRUxZX05VTEwocGFnZV96aXApKSB7CiAJCWludAllcnI7CiAKQEAgLTQzMTAsNyArNDMw NCw3IEBAIGJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHNfZnVuYygKIAkJCX0KIAogCQkJ YmxvY2sgPSBidHJfcGFnZV9hbGxvYyhpbmRleCwgaGludF9wYWdlX25vLAotCQkJCQkgICAgICAg RlNQX05PX0RJUiwgMCwgJm10cik7CisJCQkJCSAgICAgICBGU1BfTk9fRElSLCAwLCBhbGxvY19t dHIsICZtdHIpOwogCQkJaWYgKFVOSVZfVU5MSUtFTFkoYmxvY2sgPT0gTlVMTCkpIHsKIAogCQkJ CW10cl9jb21taXQoJm10cik7CkBAIC00NDM3LDExICs0NDMxLDE1IEBAIGJ0cl9zdG9yZV9iaWdf cmVjX2V4dGVybl9maWVsZHNfZnVuYygKIAkJCQkJZ290byBuZXh0X3ppcF9wYWdlOwogCQkJCX0K IAotCQkJCXJlY19ibG9jayA9IGJ1Zl9wYWdlX2dldChzcGFjZV9pZCwgemlwX3NpemUsCi0JCQkJ CQkJIHJlY19wYWdlX25vLAotCQkJCQkJCSBSV19YX0xBVENILCAmbXRyKTsKLQkJCQlidWZfYmxv Y2tfZGJnX2FkZF9sZXZlbChyZWNfYmxvY2ssCi0JCQkJCQkJU1lOQ19OT19PUkRFUl9DSEVDSyk7 CisJCQkJaWYgKGFsbG9jX210ciA9PSAmbXRyKSB7CisJCQkJCXJlY19ibG9jayA9IGJ1Zl9wYWdl X2dldCgKKwkJCQkJCXNwYWNlX2lkLCB6aXBfc2l6ZSwKKwkJCQkJCXJlY19wYWdlX25vLAorCQkJ CQkJUldfWF9MQVRDSCwgJm10cik7CisJCQkJCWJ1Zl9ibG9ja19kYmdfYWRkX2xldmVsKAorCQkJ CQkJcmVjX2Jsb2NrLAorCQkJCQkJU1lOQ19OT19PUkRFUl9DSEVDSyk7CisJCQkJfQogCiAJCQkJ aWYgKGVyciA9PSBaX1NUUkVBTV9FTkQpIHsKIAkJCQkJbWFjaF93cml0ZV90b180KGZpZWxkX3Jl ZgpAQCAtNDQ3NSw3ICs0NDczLDggQEAgYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkc19m dW5jKAogCiAJCQkJcGFnZV96aXBfd3JpdGVfYmxvYl9wdHIoCiAJCQkJCXBhZ2VfemlwLCByZWMs IGluZGV4LCBvZmZzZXRzLAotCQkJCQliaWdfcmVjX3ZlYy0+ZmllbGRzW2ldLmZpZWxkX25vLCAm bXRyKTsKKwkJCQkJYmlnX3JlY192ZWMtPmZpZWxkc1tpXS5maWVsZF9ubywKKwkJCQkJYWxsb2Nf bXRyKTsKIAogbmV4dF96aXBfcGFnZToKIAkJCQlwcmV2X3BhZ2Vfbm8gPSBwYWdlX25vOwpAQCAt NDUyMCwxOSArNDUxOSwyMyBAQCBuZXh0X3ppcF9wYWdlOgogCiAJCQkJZXh0ZXJuX2xlbiAtPSBz dG9yZV9sZW47CiAKLQkJCQlyZWNfYmxvY2sgPSBidWZfcGFnZV9nZXQoc3BhY2VfaWQsIHppcF9z aXplLAotCQkJCQkJCSByZWNfcGFnZV9ubywKLQkJCQkJCQkgUldfWF9MQVRDSCwgJm10cik7Ci0J CQkJYnVmX2Jsb2NrX2RiZ19hZGRfbGV2ZWwocmVjX2Jsb2NrLAotCQkJCQkJCVNZTkNfTk9fT1JE RVJfQ0hFQ0spOworCQkJCWlmIChhbGxvY19tdHIgPT0gJm10cikgeworCQkJCQlyZWNfYmxvY2sg PSBidWZfcGFnZV9nZXQoCisJCQkJCQlzcGFjZV9pZCwgemlwX3NpemUsCisJCQkJCQlyZWNfcGFn ZV9ubywKKwkJCQkJCVJXX1hfTEFUQ0gsICZtdHIpOworCQkJCQlidWZfYmxvY2tfZGJnX2FkZF9s ZXZlbCgKKwkJCQkJCXJlY19ibG9jaywKKwkJCQkJCVNZTkNfTk9fT1JERVJfQ0hFQ0spOworCQkJ CX0KIAogCQkJCW1sb2dfd3JpdGVfdWxpbnQoZmllbGRfcmVmICsgQlRSX0VYVEVSTl9MRU4sIDAs Ci0JCQkJCQkgTUxPR180QllURVMsICZtdHIpOworCQkJCQkJIE1MT0dfNEJZVEVTLCBhbGxvY19t dHIpOwogCQkJCW1sb2dfd3JpdGVfdWxpbnQoZmllbGRfcmVmCiAJCQkJCQkgKyBCVFJfRVhURVJO X0xFTiArIDQsCiAJCQkJCQkgYmlnX3JlY192ZWMtPmZpZWxkc1tpXS5sZW4KIAkJCQkJCSAtIGV4 dGVybl9sZW4sCi0JCQkJCQkgTUxPR180QllURVMsICZtdHIpOworCQkJCQkJIE1MT0dfNEJZVEVT LCBhbGxvY19tdHIpOwogCiAJCQkJaWYgKHByZXZfcGFnZV9ubyA9PSBGSUxfTlVMTCkgewogCQkJ CQlidHJfYmxvYl9kYmdfYWRkX2Jsb2IoCkBAIC00NTQyLDE4ICs0NTQ1LDE5IEBAIG5leHRfemlw X3BhZ2U6CiAKIAkJCQkJbWxvZ193cml0ZV91bGludChmaWVsZF9yZWYKIAkJCQkJCQkgKyBCVFJf RVhURVJOX1NQQUNFX0lELAotCQkJCQkJCSBzcGFjZV9pZCwKLQkJCQkJCQkgTUxPR180QllURVMs ICZtdHIpOworCQkJCQkJCSBzcGFjZV9pZCwgTUxPR180QllURVMsCisJCQkJCQkJIGFsbG9jX210 cik7CiAKIAkJCQkJbWxvZ193cml0ZV91bGludChmaWVsZF9yZWYKIAkJCQkJCQkgKyBCVFJfRVhU RVJOX1BBR0VfTk8sCi0JCQkJCQkJIHBhZ2Vfbm8sCi0JCQkJCQkJIE1MT0dfNEJZVEVTLCAmbXRy KTsKKwkJCQkJCQkgcGFnZV9ubywgTUxPR180QllURVMsCisJCQkJCQkJIGFsbG9jX210cik7CiAK IAkJCQkJbWxvZ193cml0ZV91bGludChmaWVsZF9yZWYKIAkJCQkJCQkgKyBCVFJfRVhURVJOX09G RlNFVCwKIAkJCQkJCQkgRklMX1BBR0VfREFUQSwKLQkJCQkJCQkgTUxPR180QllURVMsICZtdHIp OworCQkJCQkJCSBNTE9HXzRCWVRFUywKKwkJCQkJCQkgYWxsb2NfbXRyKTsKIAkJCQl9CiAKIAkJ CQlwcmV2X3BhZ2Vfbm8gPSBwYWdlX25vOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5u b2Jhc2UvYnVmL2J1ZjBidWYuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGJ1Zi5j CXJldmlkOmppbW15LnlhbmdAb3JhY2xlLmNvbS0yMDExMDgyOTA4Mjk1Ny1zeWtvdW93bHI0Y3Vo Y2lvCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBidWYuYwlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDExMDgyOTA4NTUzOC11Nzl6Z3Z4bjhra3c4dXdtCkBAIC0xNzE2LDMx ICsxNzE2LDYgQEAgYnVmX3BhZ2Vfc2V0X2FjY2Vzc2VkX21ha2VfeW91bmcoCiB9CiAKIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKLVJlc2V0cyB0aGUgY2hlY2tfaW5kZXhfcGFnZV9hdF9mbHVzaCBmaWVsZCBv ZiBhIHBhZ2UgaWYgZm91bmQgaW4gdGhlIGJ1ZmZlcgotcG9vbC4gKi8KLVVOSVZfSU5URVJOCi12 b2lkCi1idWZfcmVzZXRfY2hlY2tfaW5kZXhfcGFnZV9hdF9mbHVzaCgKLS8qPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0qLwotCXVsaW50CXNwYWNlLAkvKiE8IGluOiBzcGFjZSBpZCAq LwotCXVsaW50CW9mZnNldCkJLyohPCBpbjogcGFnZSBudW1iZXIgKi8KLXsKLQlidWZfYmxvY2tf dCoJYmxvY2s7Ci0JYnVmX3Bvb2xfdCoJYnVmX3Bvb2wgPSBidWZfcG9vbF9nZXQoc3BhY2UsIG9m ZnNldCk7Ci0KLQlidWZfcG9vbF9tdXRleF9lbnRlcihidWZfcG9vbCk7Ci0KLQlibG9jayA9IChi dWZfYmxvY2tfdCopIGJ1Zl9wYWdlX2hhc2hfZ2V0KGJ1Zl9wb29sLCBzcGFjZSwgb2Zmc2V0KTsK LQotCWlmIChibG9jayAmJiBidWZfYmxvY2tfZ2V0X3N0YXRlKGJsb2NrKSA9PSBCVUZfQkxPQ0tf RklMRV9QQUdFKSB7Ci0JCXV0X2FkKCFidWZfcG9vbF93YXRjaF9pc19zZW50aW5lbChidWZfcG9v bCwgJmJsb2NrLT5wYWdlKSk7Ci0JCWJsb2NrLT5jaGVja19pbmRleF9wYWdlX2F0X2ZsdXNoID0g RkFMU0U7Ci0JfQotCi0JYnVmX3Bvb2xfbXV0ZXhfZXhpdChidWZfcG9vbCk7Ci19Ci0KLS8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKIFJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgaXNfaGFzaGVkIG9mIGEg cGFnZS4gRkFMU0UgaWYgdGhlIHBhZ2UgaXMKIG5vdCBpbiB0aGUgcG9vbC4gTk9URSB0aGF0IHRo aXMgb3BlcmF0aW9uIGRvZXMgbm90IGZpeCB0aGUgcGFnZSBpbiB0aGUKIHBvb2wgaWYgaXQgaXMg Zm91bmQgdGhlcmUuCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9mc3AvZnNw MGZzcC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2ZzcC9mc3AwZnNwLmMJcmV2aWQ6amltbXku eWFuZ0BvcmFjbGUuY29tLTIwMTEwODI5MDgyOTU3LXN5a291b3dscjRjdWhjaW8KKysrIGIvc3Rv cmFnZS9pbm5vYmFzZS9mc3AvZnNwMGZzcC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTEwODI5MDg1NTM4LXU3OXpndnhuOGtrdzh1d20KQEAgLTEsNiArMSw2IEBACiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk1LCAyMDEwLCBJbm5vYmFzZSBPeS4g QWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NSwgMjAxMSwgT3JhY2xlIGFu ZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkg aXQgdW5kZXIKIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC0zMTEsOCArMzExLDkgQEAgZnNwX2Zp bGxfZnJlZV9saXN0KAogCQkJCQlkZXNjcmlwdG9yIHBhZ2UgYW5kIGlidWYgYml0bWFwIHBhZ2U7 CiAJCQkJCXRoZW4gd2UgZG8gbm90IGFsbG9jYXRlIG1vcmUgZXh0ZW50cyAqLwogCXVsaW50CQlz cGFjZSwJCS8qITwgaW46IHNwYWNlICovCi0JZnNwX2hlYWRlcl90KgloZWFkZXIsCQkvKiE8IGlu OiBzcGFjZSBoZWFkZXIgKi8KLQltdHJfdCoJCW10cik7CQkvKiE8IGluOiBtdHIgKi8KKwlmc3Bf aGVhZGVyX3QqCWhlYWRlciwJCS8qITwgaW4vb3V0OiBzcGFjZSBoZWFkZXIgKi8KKwltdHJfdCoJ CW10cikJCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCisJVU5JVl9DT0xEIF9fYXR0 cmlidXRlX18oKG5vbm51bGwpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogQWxsb2NhdGVzIGEgc2lu Z2xlIGZyZWUgcGFnZSBmcm9tIGEgc2VnbWVudC4gVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzCiB0 aGUgaW50ZWxsaWdlbnQgYWxsb2NhdGlvbiBzdHJhdGVneSB3aGljaCB0cmllcyB0byBtaW5pbWl6 ZSBmaWxlIHNwYWNlCkBAIC0zMjUsMTQgKzMyNiwyMCBAQCBmc2VnX2FsbG9jX2ZyZWVfcGFnZV9s b3coCiAJdWxpbnQJCXNwYWNlLAkvKiE8IGluOiBzcGFjZSAqLwogCXVsaW50CQl6aXBfc2l6ZSwv KiE8IGluOiBjb21wcmVzc2VkIHBhZ2Ugc2l6ZSBpbiBieXRlcwogCQkJCW9yIDAgZm9yIHVuY29t cHJlc3NlZCBwYWdlcyAqLwotCWZzZWdfaW5vZGVfdCoJc2VnX2lub2RlLCAvKiE8IGluOiBzZWdt ZW50IGlub2RlICovCisJZnNlZ19pbm9kZV90KglzZWdfaW5vZGUsIC8qITwgaW4vb3V0OiBzZWdt ZW50IGlub2RlICovCiAJdWxpbnQJCWhpbnQsCS8qITwgaW46IGhpbnQgb2Ygd2hpY2ggcGFnZSB3 b3VsZCBiZSBkZXNpcmFibGUgKi8KIAlieXRlCQlkaXJlY3Rpb24sIC8qITwgaW46IGlmIHRoZSBu ZXcgcGFnZSBpcyBuZWVkZWQgYmVjYXVzZQogCQkJCW9mIGFuIGluZGV4IHBhZ2Ugc3BsaXQsIGFu ZCByZWNvcmRzIGFyZQogCQkJCWluc2VydGVkIHRoZXJlIGluIG9yZGVyLCBpbnRvIHdoaWNoCiAJ CQkJZGlyZWN0aW9uIHRoZXkgZ28gYWxwaGFiZXRpY2FsbHk6IEZTUF9ET1dOLAogCQkJCUZTUF9V UCwgRlNQX05PX0RJUiAqLwotCW10cl90KgkJbXRyKTsJLyohPCBpbjogbXRyIGhhbmRsZSAqLwor CW10cl90KgkJbXRyLAkvKiE8IGluL291dDogbWluaS10cmFuc2FjdGlvbiAqLworCW10cl90KgkJ aW5pdF9tdHIpLyohPCBpbi9vdXQ6IG1pbmktdHJhbnNhY3Rpb24gaW4gd2hpY2ggdGhlCisJCQkJ cGFnZSBzaG91bGQgYmUgaW5pdGlhbGl6ZWQKKwkJCQkobWF5IGJlIHRoZSBzYW1lIGFzIG10ciks IG9yIE5VTEwgaWYgaXQKKwkJCQlzaG91bGQgbm90IGJlIGluaXRpYWxpemVkICh0aGUgcGFnZSBh dCBoaW50CisJCQkJd2FzIHByZXZpb3VzbHkgZnJlZWQgaW4gbXRyKSAqLworCV9fYXR0cmlidXRl X18oKHdhcm5fdW51c2VkX3Jlc3VsdCwgbm9ubnVsbCgzLDYpKSk7CiAjZW5kaWYgLyogIVVOSVZf SE9UQkFDS1VQICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgpAQCAtNzAwLDE3ICs3MDcsMTggQEAg bGlzdCwgaWYgbm90IGZyZWUgbGltaXQgPT0gc3BhY2Ugc2l6ZS4gVAogZGVzY3JpcHRvciBkZWZp bmVkLCBhcyB0aGV5IGFyZSB1bmluaXRpYWxpemVkIGFib3ZlIHRoZSBmcmVlIGxpbWl0LgogQHJl dHVybiBwb2ludGVyIHRvIHRoZSBleHRlbnQgZGVzY3JpcHRvciwgTlVMTCBpZiB0aGUgcGFnZSBk b2VzIG5vdAogZXhpc3QgaW4gdGhlIHNwYWNlIG9yIGlmIHRoZSBvZmZzZXQgZXhjZWVkcyB0aGUg ZnJlZSBsaW1pdCAqLwotVU5JVl9JTkxJTkUKK1VOSVZfSU5MSU5FIF9fYXR0cmlidXRlX18oKG5v bm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkpCiB4ZGVzX3QqCiB4ZGVzX2dldF9kZXNjcmlwdG9y X3dpdGhfc3BhY2VfaGRyKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQlm c3BfaGVhZGVyX3QqCXNwX2hlYWRlciwvKiE8IGluL291dDogc3BhY2UgaGVhZGVyLCB4LWxhdGNo ZWQgKi8KLQl1bGludAkJc3BhY2UsCS8qITwgaW46IHNwYWNlIGlkICovCi0JdWxpbnQJCW9mZnNl dCwJLyohPCBpbjogcGFnZSBvZmZzZXQ7Ci0JCQkJaWYgZXF1YWwgdG8gdGhlIGZyZWUgbGltaXQs Ci0JCQkJd2UgdHJ5IHRvIGFkZCBuZXcgZXh0ZW50cyB0bwotCQkJCXRoZSBzcGFjZSBmcmVlIGxp c3QgKi8KLQltdHJfdCoJCW10cikJLyohPCBpbjogbXRyIGhhbmRsZSAqLworCWZzcF9oZWFkZXJf dCoJc3BfaGVhZGVyLAkvKiE8IGluL291dDogc3BhY2UgaGVhZGVyLCB4LWxhdGNoZWQKKwkJCQkJ aW4gbXRyICovCisJdWxpbnQJCXNwYWNlLAkJLyohPCBpbjogc3BhY2UgaWQgKi8KKwl1bGludAkJ b2Zmc2V0LAkJLyohPCBpbjogcGFnZSBvZmZzZXQ7IGlmIGVxdWFsCisJCQkJCXRvIHRoZSBmcmVl IGxpbWl0LCB3ZSB0cnkgdG8KKwkJCQkJYWRkIG5ldyBleHRlbnRzIHRvIHRoZSBzcGFjZQorCQkJ CQlmcmVlIGxpc3QgKi8KKwltdHJfdCoJCW10cikJCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0 aW9uICovCiB7CiAJdWxpbnQJbGltaXQ7CiAJdWxpbnQJc2l6ZTsKQEAgLTcxOCwxMSArNzI2LDkg QEAgeGRlc19nZXRfZGVzY3JpcHRvcl93aXRoX3NwYWNlX2hkcigKIAl1bGludAlkZXNjcl9wYWdl X25vOwogCXBhZ2VfdCoJZGVzY3JfcGFnZTsKIAotCXV0X2FkKG10cik7CiAJdXRfYWQobXRyX21l bW9fY29udGFpbnMobXRyLCBmaWxfc3BhY2VfZ2V0X2xhdGNoKHNwYWNlLCBOVUxMKSwKIAkJCQlN VFJfTUVNT19YX0xPQ0spKTsKLQl1dF9hZChtdHJfbWVtb19jb250YWluc19wYWdlKG10ciwgc3Bf aGVhZGVyLCBNVFJfTUVNT19QQUdFX1NfRklYKQotCSAgICAgIHx8IG10cl9tZW1vX2NvbnRhaW5z X3BhZ2UobXRyLCBzcF9oZWFkZXIsIE1UUl9NRU1PX1BBR0VfWF9GSVgpKTsKKwl1dF9hZChtdHJf bWVtb19jb250YWluc19wYWdlKG10ciwgc3BfaGVhZGVyLCBNVFJfTUVNT19QQUdFX1hfRklYKSk7 CiAJdXRfYWQocGFnZV9vZmZzZXQoc3BfaGVhZGVyKSA9PSBGU1BfSEVBREVSX09GRlNFVCk7CiAJ LyogUmVhZCBmcmVlIGxpbWl0IGFuZCBzcGFjZSBzaXplICovCiAJbGltaXQgPSBtYWNoX3JlYWRf ZnJvbV80KHNwX2hlYWRlciArIEZTUF9GUkVFX0xJTUlUKTsKQEAgLTc3Miw3ICs3NzgsNyBAQCBp cyBuZWNlc3NhcnkgdG8gbWFrZSB0aGUgZGVzY3JpcHRvciBkZWZpCiBhYm92ZSB0aGUgZnJlZSBs aW1pdC4KIEByZXR1cm4gcG9pbnRlciB0byB0aGUgZXh0ZW50IGRlc2NyaXB0b3IsIE5VTEwgaWYg dGhlIHBhZ2UgZG9lcyBub3QKIGV4aXN0IGluIHRoZSBzcGFjZSBvciBpZiB0aGUgb2Zmc2V0IGV4 Y2VlZHMgdGhlIGZyZWUgbGltaXQgKi8KLXN0YXRpYworc3RhdGljIF9fYXR0cmlidXRlX18oKG5v bm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkpCiB4ZGVzX3QqCiB4ZGVzX2dldF9kZXNjcmlwdG9y KAogLyo9PT09PT09PT09PT09PT09Ki8KQEAgLTc4MSw3ICs3ODcsNyBAQCB4ZGVzX2dldF9kZXNj cmlwdG9yKAogCQkJb3IgMCBmb3IgdW5jb21wcmVzc2VkIHBhZ2VzICovCiAJdWxpbnQJb2Zmc2V0 LAkvKiE8IGluOiBwYWdlIG9mZnNldDsgaWYgZXF1YWwgdG8gdGhlIGZyZWUgbGltaXQsCiAJCQl3 ZSB0cnkgdG8gYWRkIG5ldyBleHRlbnRzIHRvIHRoZSBzcGFjZSBmcmVlIGxpc3QgKi8KLQltdHJf dCoJbXRyKQkvKiE8IGluOiBtdHIgaGFuZGxlICovCisJbXRyX3QqCW10cikJLyohPCBpbi9vdXQ6 IG1pbmktdHJhbnNhY3Rpb24gKi8KIHsKIAlidWZfYmxvY2tfdCoJYmxvY2s7CiAJZnNwX2hlYWRl cl90KglzcF9oZWFkZXI7CkBAIC0xMTU5LDE0ICsxMTY1LDE0IEBAIGZzcF9oZWFkZXJfZ2V0X3Rh Ymxlc3BhY2Vfc2l6ZSh2b2lkKQogVHJpZXMgdG8gZXh0ZW5kIGEgc2luZ2xlLXRhYmxlIHRhYmxl c3BhY2Ugc28gdGhhdCBhIHBhZ2Ugd291bGQgZml0IGluIHRoZQogZGF0YSBmaWxlLgogQHJldHVy bglUUlVFIGlmIHN1Y2Nlc3MgKi8KLXN0YXRpYworc3RhdGljIFVOSVZfQ09MRCBfX2F0dHJpYnV0 ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQpKQogaWJvb2wKIGZzcF90cnlfZXh0ZW5k X2RhdGFfZmlsZV93aXRoX3BhZ2VzKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PSovCiAJdWxpbnQJCXNwYWNlLAkJLyohPCBpbjogc3BhY2UgKi8KIAl1bGludAkJcGFnZV9ubywJ LyohPCBpbjogcGFnZSBudW1iZXIgKi8KLQlmc3BfaGVhZGVyX3QqCWhlYWRlciwJCS8qITwgaW46 IHNwYWNlIGhlYWRlciAqLwotCW10cl90KgkJbXRyKQkJLyohPCBpbjogbXRyICovCisJZnNwX2hl YWRlcl90KgloZWFkZXIsCQkvKiE8IGluL291dDogc3BhY2UgaGVhZGVyICovCisJbXRyX3QqCQlt dHIpCQkvKiE8IGluL291dDogbWluaS10cmFuc2FjdGlvbiAqLwogewogCWlib29sCXN1Y2Nlc3M7 CiAJdWxpbnQJYWN0dWFsX3NpemU7CkBAIC0xMTkxLDcgKzExOTcsNyBAQCBmc3BfdHJ5X2V4dGVu ZF9kYXRhX2ZpbGVfd2l0aF9wYWdlcygKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFRyaWVzIHRvIGV4 dGVuZCB0aGUgbGFzdCBkYXRhIGZpbGUgb2YgYSB0YWJsZXNwYWNlIGlmIGl0IGlzIGF1dG8tZXh0 ZW5kaW5nLgogQHJldHVybglGQUxTRSBpZiBub3QgYXV0by1leHRlbmRpbmcgKi8KLXN0YXRpYwor c3RhdGljIFVOSVZfQ09MRCBfX2F0dHJpYnV0ZV9fKChub25udWxsKSkKIGlib29sCiBmc3BfdHJ5 X2V4dGVuZF9kYXRhX2ZpbGUoCiAvKj09PT09PT09PT09PT09PT09PT09PSovCkBAIC0xMjAxLDgg KzEyMDcsOCBAQCBmc3BfdHJ5X2V4dGVuZF9kYXRhX2ZpbGUoCiAJCQkJCXRoZSBhY3R1YWwgZmls ZSBzaXplIHJvdW5kZWQgZG93biB0bwogCQkJCQltZWdhYnl0ZSAqLwogCXVsaW50CQlzcGFjZSwJ CS8qITwgaW46IHNwYWNlICovCi0JZnNwX2hlYWRlcl90KgloZWFkZXIsCQkvKiE8IGluOiBzcGFj ZSBoZWFkZXIgKi8KLQltdHJfdCoJCW10cikJCS8qITwgaW46IG10ciAqLworCWZzcF9oZWFkZXJf dCoJaGVhZGVyLAkJLyohPCBpbi9vdXQ6IHNwYWNlIGhlYWRlciAqLworCW10cl90KgkJbXRyKQkJ LyohPCBpbi9vdXQ6IG1pbmktdHJhbnNhY3Rpb24gKi8KIHsKIAl1bGludAlzaXplOwogCXVsaW50 CXppcF9zaXplOwpAQCAtMTMzOCw3ICsxMzQ0LDcgQEAgZnNwX2ZpbGxfZnJlZV9saXN0KAogCQkJ CQl0aGVuIHdlIGRvIG5vdCBhbGxvY2F0ZSBtb3JlIGV4dGVudHMgKi8KIAl1bGludAkJc3BhY2Us CQkvKiE8IGluOiBzcGFjZSAqLwogCWZzcF9oZWFkZXJfdCoJaGVhZGVyLAkJLyohPCBpbi9vdXQ6 IHNwYWNlIGhlYWRlciAqLwotCW10cl90KgkJbXRyKQkJLyohPCBpbjogbXRyICovCisJbXRyX3Qq CQltdHIpCQkvKiE8IGluL291dDogbWluaS10cmFuc2FjdGlvbiAqLwogewogCXVsaW50CWxpbWl0 OwogCXVsaW50CXNpemU7CkBAIC0xNTM3LDkgKzE1NDMsNDYgQEAgZnNwX2FsbG9jX2ZyZWVfZXh0 ZW50KAogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0FsbG9jYXRlcyBhIHNpbmdsZSBmcmVlIHBh Z2UgZnJvbSBhIHNwYWNlLiAqLworc3RhdGljIF9fYXR0cmlidXRlX18oKG5vbm51bGwpKQordm9p ZAorZnNwX2FsbG9jX2Zyb21fZnJlZV9mcmFnKAorLyo9PT09PT09PT09PT09PT09PT09PT0qLwor CWZzcF9oZWFkZXJfdCoJaGVhZGVyLAkvKiE8IGluL291dDogdGFibGVzcGFjZSBoZWFkZXIgKi8K Kwl4ZGVzX3QqCQlkZXNjciwJLyohPCBpbi9vdXQ6IGV4dGVudCBkZXNjcmlwdG9yICovCisJdWxp bnQJCWJpdCwJLyohPCBpbjogc2xvdCB0byBhbGxvY2F0ZSBpbiB0aGUgZXh0ZW50ICovCisJbXRy X3QqCQltdHIpCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCit7CisJdWxpbnQJCWZy YWdfbl91c2VkOworCisJdXRfYWQoeGRlc19nZXRfc3RhdGUoZGVzY3IsIG10cikgPT0gWERFU19G UkVFX0ZSQUcpOworCXV0X2EoeGRlc19nZXRfYml0KGRlc2NyLCBYREVTX0ZSRUVfQklULCBiaXQs IG10cikpOworCXhkZXNfc2V0X2JpdChkZXNjciwgWERFU19GUkVFX0JJVCwgYml0LCBGQUxTRSwg bXRyKTsKKworCS8qIFVwZGF0ZSB0aGUgRlJBR19OX1VTRUQgZmllbGQgKi8KKwlmcmFnX25fdXNl ZCA9IG10cl9yZWFkX3VsaW50KGhlYWRlciArIEZTUF9GUkFHX05fVVNFRCwgTUxPR180QllURVMs CisJCQkJICAgICBtdHIpOworCWZyYWdfbl91c2VkKys7CisJbWxvZ193cml0ZV91bGludChoZWFk ZXIgKyBGU1BfRlJBR19OX1VTRUQsIGZyYWdfbl91c2VkLCBNTE9HXzRCWVRFUywKKwkJCSBtdHIp OworCWlmICh4ZGVzX2lzX2Z1bGwoZGVzY3IsIG10cikpIHsKKwkJLyogVGhlIGZyYWdtZW50IGlz IGZ1bGw6IG1vdmUgaXQgdG8gYW5vdGhlciBsaXN0ICovCisJCWZsc3RfcmVtb3ZlKGhlYWRlciAr IEZTUF9GUkVFX0ZSQUcsIGRlc2NyICsgWERFU19GTFNUX05PREUsCisJCQkgICAgbXRyKTsKKwkJ eGRlc19zZXRfc3RhdGUoZGVzY3IsIFhERVNfRlVMTF9GUkFHLCBtdHIpOworCisJCWZsc3RfYWRk X2xhc3QoaGVhZGVyICsgRlNQX0ZVTExfRlJBRywgZGVzY3IgKyBYREVTX0ZMU1RfTk9ERSwKKwkJ CSAgICAgIG10cik7CisJCW1sb2dfd3JpdGVfdWxpbnQoaGVhZGVyICsgRlNQX0ZSQUdfTl9VU0VE LAorCQkJCSBmcmFnX25fdXNlZCAtIEZTUF9FWFRFTlRfU0laRSwgTUxPR180QllURVMsCisJCQkJ IG10cik7CisJfQorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIEFsbG9jYXRlcyBhIHNpbmdsZSBm cmVlIHBhZ2UgZnJvbSBhIHNwYWNlLiBUaGUgcGFnZSBpcyBtYXJrZWQgYXMgdXNlZC4KIEByZXR1 cm4JdGhlIHBhZ2Ugb2Zmc2V0LCBGSUxfTlVMTCBpZiBubyBwYWdlIGNvdWxkIGJlIGFsbG9jYXRl ZCAqLwotc3RhdGljCitzdGF0aWMgX19hdHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91bnVzZWRf cmVzdWx0KSkKIHVsaW50CiBmc3BfYWxsb2NfZnJlZV9wYWdlKAogLyo9PT09PT09PT09PT09PT09 Ki8KQEAgLTE1NDcsMTkgKzE1OTAsMjIgQEAgZnNwX2FsbG9jX2ZyZWVfcGFnZSgKIAl1bGludAl6 aXBfc2l6ZSwvKiE8IGluOiBjb21wcmVzc2VkIHBhZ2Ugc2l6ZSBpbiBieXRlcwogCQkJb3IgMCBm b3IgdW5jb21wcmVzc2VkIHBhZ2VzICovCiAJdWxpbnQJaGludCwJLyohPCBpbjogaGludCBvZiB3 aGljaCBwYWdlIHdvdWxkIGJlIGRlc2lyYWJsZSAqLwotCW10cl90KgltdHIpCS8qITwgaW46IG10 ciBoYW5kbGUgKi8KKwltdHJfdCoJbXRyLAkvKiE8IGluL291dDogbWluaS10cmFuc2FjdGlvbiAq LworCW10cl90Kglpbml0X210cikvKiE8IGluL291dDogbWluaS10cmFuc2FjdGlvbiBpbiB3aGlj aCB0aGUKKwkJCXBhZ2Ugc2hvdWxkIGJlIGluaXRpYWxpemVkCisJCQkobWF5IGJlIHRoZSBzYW1l IGFzIG10cikgKi8KIHsKIAlmc3BfaGVhZGVyX3QqCWhlYWRlcjsKIAlmaWxfYWRkcl90CWZpcnN0 OwogCXhkZXNfdCoJCWRlc2NyOwogCWJ1Zl9ibG9ja190KglibG9jazsKIAl1bGludAkJZnJlZTsK LQl1bGludAkJZnJhZ19uX3VzZWQ7CiAJdWxpbnQJCXBhZ2Vfbm87CiAJdWxpbnQJCXNwYWNlX3Np emU7CiAJaWJvb2wJCXN1Y2Nlc3M7CiAKIAl1dF9hZChtdHIpOworCXV0X2FkKGluaXRfbXRyKTsK IAogCWhlYWRlciA9IGZzcF9nZXRfc3BhY2VfaGVhZGVyKHNwYWNlLCB6aXBfc2l6ZSwgbXRyKTsK IApAQCAtMTY0MSwzOCArMTY4NywxOSBAQCBmc3BfYWxsb2NfZnJlZV9wYWdlKAogCQl9CiAJfQog Ci0JeGRlc19zZXRfYml0KGRlc2NyLCBYREVTX0ZSRUVfQklULCBmcmVlLCBGQUxTRSwgbXRyKTsK LQotCS8qIFVwZGF0ZSB0aGUgRlJBR19OX1VTRUQgZmllbGQgKi8KLQlmcmFnX25fdXNlZCA9IG10 cl9yZWFkX3VsaW50KGhlYWRlciArIEZTUF9GUkFHX05fVVNFRCwgTUxPR180QllURVMsCi0JCQkJ ICAgICBtdHIpOwotCWZyYWdfbl91c2VkKys7Ci0JbWxvZ193cml0ZV91bGludChoZWFkZXIgKyBG U1BfRlJBR19OX1VTRUQsIGZyYWdfbl91c2VkLCBNTE9HXzRCWVRFUywKLQkJCSBtdHIpOwotCWlm ICh4ZGVzX2lzX2Z1bGwoZGVzY3IsIG10cikpIHsKLQkJLyogVGhlIGZyYWdtZW50IGlzIGZ1bGw6 IG1vdmUgaXQgdG8gYW5vdGhlciBsaXN0ICovCi0JCWZsc3RfcmVtb3ZlKGhlYWRlciArIEZTUF9G UkVFX0ZSQUcsIGRlc2NyICsgWERFU19GTFNUX05PREUsCi0JCQkgICAgbXRyKTsKLQkJeGRlc19z ZXRfc3RhdGUoZGVzY3IsIFhERVNfRlVMTF9GUkFHLCBtdHIpOwotCi0JCWZsc3RfYWRkX2xhc3Qo aGVhZGVyICsgRlNQX0ZVTExfRlJBRywgZGVzY3IgKyBYREVTX0ZMU1RfTk9ERSwKLQkJCSAgICAg IG10cik7Ci0JCW1sb2dfd3JpdGVfdWxpbnQoaGVhZGVyICsgRlNQX0ZSQUdfTl9VU0VELAotCQkJ CSBmcmFnX25fdXNlZCAtIEZTUF9FWFRFTlRfU0laRSwgTUxPR180QllURVMsCi0JCQkJIG10cik7 Ci0JfQorCWZzcF9hbGxvY19mcm9tX2ZyZWVfZnJhZyhoZWFkZXIsIGRlc2NyLCBmcmVlLCBtdHIp OwogCiAJLyogSW5pdGlhbGl6ZSB0aGUgYWxsb2NhdGVkIHBhZ2UgdG8gdGhlIGJ1ZmZlciBwb29s LCBzbyB0aGF0IGl0IGNhbgogCWJlIG9idGFpbmVkIGltbWVkaWF0ZWx5IHdpdGggYnVmX3BhZ2Vf Z2V0IHdpdGhvdXQgbmVlZCBmb3IgYSBkaXNrCiAJcmVhZC4gKi8KIAotCWJ1Zl9wYWdlX2NyZWF0 ZShzcGFjZSwgcGFnZV9ubywgemlwX3NpemUsIG10cik7CisJYnVmX3BhZ2VfY3JlYXRlKHNwYWNl LCBwYWdlX25vLCB6aXBfc2l6ZSwgaW5pdF9tdHIpOwogCi0JYmxvY2sgPSBidWZfcGFnZV9nZXQo c3BhY2UsIHppcF9zaXplLCBwYWdlX25vLCBSV19YX0xBVENILCBtdHIpOworCWJsb2NrID0gYnVm X3BhZ2VfZ2V0KHNwYWNlLCB6aXBfc2l6ZSwgcGFnZV9ubywgUldfWF9MQVRDSCwgaW5pdF9tdHIp OwogCWJ1Zl9ibG9ja19kYmdfYWRkX2xldmVsKGJsb2NrLCBTWU5DX0ZTUF9QQUdFKTsKIAogCS8q IFByaW9yIGNvbnRlbnRzIG9mIHRoZSBwYWdlIHNob3VsZCBiZSBpZ25vcmVkICovCi0JZnNwX2lu aXRfZmlsZV9wYWdlKGJsb2NrLCBtdHIpOworCWZzcF9pbml0X2ZpbGVfcGFnZShibG9jaywgaW5p dF9tdHIpOwogCiAJcmV0dXJuKHBhZ2Vfbm8pOwogfQpAQCAtMTkwOCw3ICsxOTM1LDcgQEAgZnNw X2FsbG9jX3NlZ19pbm9kZV9wYWdlKAogCXppcF9zaXplID0gZGljdF90YWJsZV9mbGFnc190b196 aXBfc2l6ZSgKIAkJbWFjaF9yZWFkX2Zyb21fNChGU1BfU1BBQ0VfRkxBR1MgKyBzcGFjZV9oZWFk ZXIpKTsKIAotCXBhZ2Vfbm8gPSBmc3BfYWxsb2NfZnJlZV9wYWdlKHNwYWNlLCB6aXBfc2l6ZSwg MCwgbXRyKTsKKwlwYWdlX25vID0gZnNwX2FsbG9jX2ZyZWVfcGFnZShzcGFjZSwgemlwX3NpemUs IDAsIG10ciwgbXRyKTsKIAogCWlmIChwYWdlX25vID09IEZJTF9OVUxMKSB7CiAKQEAgLTIzMjAs NyArMjM0Nyw3IEBAIGZzZWdfY3JlYXRlX2dlbmVyYWwoCiAKIAlpZiAocGFnZSA9PSAwKSB7CiAJ CXBhZ2UgPSBmc2VnX2FsbG9jX2ZyZWVfcGFnZV9sb3coc3BhY2UsIHppcF9zaXplLAotCQkJCQkJ aW5vZGUsIDAsIEZTUF9VUCwgbXRyKTsKKwkJCQkJCWlub2RlLCAwLCBGU1BfVVAsIG10ciwgbXRy KTsKIAogCQlpZiAocGFnZSA9PSBGSUxfTlVMTCkgewogCkBAIC0yNTY5LDE0ICsyNTk2LDE5IEBA IGZzZWdfYWxsb2NfZnJlZV9wYWdlX2xvdygKIAl1bGludAkJc3BhY2UsCS8qITwgaW46IHNwYWNl ICovCiAJdWxpbnQJCXppcF9zaXplLC8qITwgaW46IGNvbXByZXNzZWQgcGFnZSBzaXplIGluIGJ5 dGVzCiAJCQkJb3IgMCBmb3IgdW5jb21wcmVzc2VkIHBhZ2VzICovCi0JZnNlZ19pbm9kZV90Kglz ZWdfaW5vZGUsIC8qITwgaW46IHNlZ21lbnQgaW5vZGUgKi8KKwlmc2VnX2lub2RlX3QqCXNlZ19p bm9kZSwgLyohPCBpbi9vdXQ6IHNlZ21lbnQgaW5vZGUgKi8KIAl1bGludAkJaGludCwJLyohPCBp bjogaGludCBvZiB3aGljaCBwYWdlIHdvdWxkIGJlIGRlc2lyYWJsZSAqLwogCWJ5dGUJCWRpcmVj dGlvbiwgLyohPCBpbjogaWYgdGhlIG5ldyBwYWdlIGlzIG5lZWRlZCBiZWNhdXNlCiAJCQkJb2Yg YW4gaW5kZXggcGFnZSBzcGxpdCwgYW5kIHJlY29yZHMgYXJlCiAJCQkJaW5zZXJ0ZWQgdGhlcmUg aW4gb3JkZXIsIGludG8gd2hpY2gKIAkJCQlkaXJlY3Rpb24gdGhleSBnbyBhbHBoYWJldGljYWxs eTogRlNQX0RPV04sCiAJCQkJRlNQX1VQLCBGU1BfTk9fRElSICovCi0JbXRyX3QqCQltdHIpCS8q ITwgaW46IG10ciBoYW5kbGUgKi8KKwltdHJfdCoJCW10ciwJLyohPCBpbi9vdXQ6IG1pbmktdHJh bnNhY3Rpb24gKi8KKwltdHJfdCoJCWluaXRfbXRyKS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0 aW9uIGluIHdoaWNoIHRoZQorCQkJCXBhZ2Ugc2hvdWxkIGJlIGluaXRpYWxpemVkCisJCQkJKG1h eSBiZSB0aGUgc2FtZSBhcyBtdHIpLCBvciBOVUxMIGlmIGl0CisJCQkJc2hvdWxkIG5vdCBiZSBp bml0aWFsaXplZCAodGhlIHBhZ2UgYXQgaGludAorCQkJCXdhcyBwcmV2aW91c2x5IGZyZWVkIGlu IG10cikgKi8KIHsKIAlmc3BfaGVhZGVyX3QqCXNwYWNlX2hlYWRlcjsKIAl1bGludAkJc3BhY2Vf c2l6ZTsKQEAgLTI1ODcsNyArMjYxOSw2IEBAIGZzZWdfYWxsb2NfZnJlZV9wYWdlX2xvdygKIAl1 bGludAkJcmV0X3BhZ2U7CS8qITwgdGhlIGFsbG9jYXRlZCBwYWdlIG9mZnNldCwgRklMX05VTEwK IAkJCQkJaWYgY291bGQgbm90IGJlIGFsbG9jYXRlZCAqLwogCXhkZXNfdCoJCXJldF9kZXNjcjsJ LyohPCB0aGUgZXh0ZW50IG9mIHRoZSBhbGxvY2F0ZWQgcGFnZSAqLwotCWlib29sCQlmcmFnX3Bh Z2VfYWxsb2NhdGVkID0gRkFMU0U7CiAJaWJvb2wJCXN1Y2Nlc3M7CiAJdWxpbnQJCW47CiAKQEAg LTI2MDksNiArMjY0MCw4IEBAIGZzZWdfYWxsb2NfZnJlZV9wYWdlX2xvdygKIAlpZiAoZGVzY3Ig PT0gTlVMTCkgewogCQkvKiBIaW50IG91dHNpZGUgc3BhY2Ugb3IgdG9vIGhpZ2ggYWJvdmUgZnJl ZSBsaW1pdDogcmVzZXQKIAkJaGludCAqLworCQl1dF9hKGluaXRfbXRyKTsKKwkJLyogVGhlIGZp bGUgc3BhY2UgaGVhZGVyIHBhZ2UgaXMgYWx3YXlzIGFsbG9jYXRlZC4gKi8KIAkJaGludCA9IDA7 CiAJCWRlc2NyID0geGRlc19nZXRfZGVzY3JpcHRvcihzcGFjZSwgemlwX3NpemUsIGhpbnQsIG10 cik7CiAJfQpAQCAtMjYxOSwxNSArMjY1MiwyMCBAQCBmc2VnX2FsbG9jX2ZyZWVfcGFnZV9sb3co CiAJICAgICYmIG1hY2hfcmVhZF9mcm9tXzgoZGVzY3IgKyBYREVTX0lEKSA9PSBzZWdfaWQKIAkg ICAgJiYgKHhkZXNfZ2V0X2JpdChkZXNjciwgWERFU19GUkVFX0JJVCwKIAkJCSAgICAgaGludCAl IEZTUF9FWFRFTlRfU0laRSwgbXRyKSA9PSBUUlVFKSkgewotCit0YWtlX2hpbnRlZF9wYWdlOgog CQkvKiAxLiBXZSBjYW4gdGFrZSB0aGUgaGludGVkIHBhZ2UKIAkJPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ki8KIAkJcmV0X2Rlc2NyID0gZGVzY3I7CiAJCXJldF9wYWdlID0gaGlu dDsKKwkJLyogU2tpcCB0aGUgY2hlY2sgZm9yIGV4dGVuZGluZyB0aGUgdGFibGVzcGFjZS4gSWYg dGhlCisJCXBhZ2UgaGludCB3ZXJlIG5vdCB3aXRoaW4gdGhlIHNpemUgb2YgdGhlIHRhYmxlc3Bh Y2UsCisJCXdlIHdvdWxkIGhhdmUgZ290IChkZXNjciA9PSBOVUxMKSBhYm92ZSBhbmQgcmVzZXQg dGhlIGhpbnQuICovCisJCWdvdG8gZ290X2hpbnRlZF9wYWdlOwogCQkvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLQl9IGVsc2Ug aWYgKCh4ZGVzX2dldF9zdGF0ZShkZXNjciwgbXRyKSA9PSBYREVTX0ZSRUUpCi0JCSAgICYmICgo cmVzZXJ2ZWQgLSB1c2VkKSA8IHJlc2VydmVkIC8gRlNFR19GSUxMRkFDVE9SKQotCQkgICAmJiAo dXNlZCA+PSBGU0VHX0ZSQUdfTElNSVQpKSB7CisJfSBlbHNlIGlmICh4ZGVzX2dldF9zdGF0ZShk ZXNjciwgbXRyKSA9PSBYREVTX0ZSRUUKKwkJICAgJiYgKCFpbml0X210cgorCQkgICAgICAgfHwg KChyZXNlcnZlZCAtIHVzZWQgPCByZXNlcnZlZCAvIEZTRUdfRklMTEZBQ1RPUikKKwkJCSAgICYm IHVzZWQgPj0gRlNFR19GUkFHX0xJTUlUKSkpIHsKIAogCQkvKiAyLiBXZSBhbGxvY2F0ZSB0aGUg ZnJlZSBleHRlbnQgZnJvbSBzcGFjZSBhbmQgY2FuIHRha2UKIAkJPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0yNjQ1LDggKzI2ODMs MjAgQEAgZnNlZ19hbGxvY19mcmVlX3BhZ2VfbG93KAogCQkvKiBUcnkgdG8gZmlsbCB0aGUgc2Vn bWVudCBmcmVlIGxpc3QgKi8KIAkJZnNlZ19maWxsX2ZyZWVfbGlzdChzZWdfaW5vZGUsIHNwYWNl LCB6aXBfc2l6ZSwKIAkJCQkgICAgaGludCArIEZTUF9FWFRFTlRfU0laRSwgbXRyKTsKLQkJcmV0 X3BhZ2UgPSBoaW50OworCQlnb3RvIHRha2VfaGludGVkX3BhZ2U7CiAJCS8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCX0gZWxz ZSBpZiAoIWluaXRfbXRyKSB7CisJCXV0X2EoeGRlc19nZXRfc3RhdGUoZGVzY3IsIG10cikgPT0g WERFU19GUkVFX0ZSQUcpOworCQlmc3BfYWxsb2NfZnJvbV9mcmVlX2ZyYWcoc3BhY2VfaGVhZGVy LCBkZXNjciwKKwkJCQkJIGhpbnQgJSBGU1BfRVhURU5UX1NJWkUsIG10cik7CisJCXJldF9wYWdl ID0gaGludDsKKwkJcmV0X2Rlc2NyID0gTlVMTDsKKworCQkvKiBQdXQgdGhlIHBhZ2UgaW4gdGhl IGZyYWdtZW50IHBhZ2UgYXJyYXkgb2YgdGhlIHNlZ21lbnQgKi8KKwkJbiA9IGZzZWdfZmluZF9m cmVlX2ZyYWdfcGFnZV9zbG90KHNlZ19pbm9kZSwgbXRyKTsKKwkJdXRfYShuICE9IEZJTF9OVUxM KTsKKwkJZnNlZ19zZXRfbnRoX2ZyYWdfcGFnZV9ubyhzZWdfaW5vZGUsIG4sIHJldF9wYWdlLCBt dHIpOworCQlnb3RvIGdvdF9oaW50ZWRfcGFnZTsKIAl9IGVsc2UgaWYgKChkaXJlY3Rpb24gIT0g RlNQX05PX0RJUikKIAkJICAgJiYgKChyZXNlcnZlZCAtIHVzZWQpIDwgcmVzZXJ2ZWQgLyBGU0VH X0ZJTExGQUNUT1IpCiAJCSAgICYmICh1c2VkID49IEZTRUdfRlJBR19MSU1JVCkKQEAgLTI3MDUs MTEgKzI3NTUsMTAgQEAgZnNlZ19hbGxvY19mcmVlX3BhZ2VfbG93KAogCX0gZWxzZSBpZiAodXNl ZCA8IEZTRUdfRlJBR19MSU1JVCkgewogCQkvKiA2LiBXZSBhbGxvY2F0ZSBhbiBpbmRpdmlkdWFs IHBhZ2UgZnJvbSB0aGUgc3BhY2UKIAkJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ki8KLQkJcmV0X3BhZ2UgPSBmc3BfYWxsb2NfZnJlZV9wYWdlKHNw YWNlLCB6aXBfc2l6ZSwgaGludCwgbXRyKTsKKwkJcmV0X3BhZ2UgPSBmc3BfYWxsb2NfZnJlZV9w YWdlKHNwYWNlLCB6aXBfc2l6ZSwgaGludCwKKwkJCQkJICAgICAgIG10ciwgaW5pdF9tdHIpOwog CQlyZXRfZGVzY3IgPSBOVUxMOwogCi0JCWZyYWdfcGFnZV9hbGxvY2F0ZWQgPSBUUlVFOwotCiAJ CWlmIChyZXRfcGFnZSAhPSBGSUxfTlVMTCkgewogCQkJLyogUHV0IHRoZSBwYWdlIGluIHRoZSBm cmFnbWVudCBwYWdlIGFycmF5IG9mIHRoZQogCQkJc2VnbWVudCAqLwpAQCAtMjcxOSw2ICsyNzY4 LDEwIEBAIGZzZWdfYWxsb2NfZnJlZV9wYWdlX2xvdygKIAkJCWZzZWdfc2V0X250aF9mcmFnX3Bh Z2Vfbm8oc2VnX2lub2RlLCBuLCByZXRfcGFnZSwKIAkJCQkJCSAgbXRyKTsKIAkJfQorCisJCS8q IGZzcF9hbGxvY19mcmVlX3BhZ2UoKSBpbnZva2VkIGZzcF9pbml0X2ZpbGVfcGFnZSgpCisJCWFs cmVhZHkuICovCisJCXJldHVybihyZXRfcGFnZSk7CiAJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCX0gZWxzZSB7CiAJCS8q IDcuIFdlIGFsbG9jYXRlIGEgbmV3IGV4dGVudCBhbmQgdGFrZSBpdHMgZmlyc3QgcGFnZQpAQCAt Mjc2NiwyNiArMjgxOSwzNCBAQCBmc2VnX2FsbG9jX2ZyZWVfcGFnZV9sb3coCiAJCX0KIAl9CiAK LQlpZiAoIWZyYWdfcGFnZV9hbGxvY2F0ZWQpIHsKK2dvdF9oaW50ZWRfcGFnZToKKwl7CiAJCS8q IEluaXRpYWxpemUgdGhlIGFsbG9jYXRlZCBwYWdlIHRvIGJ1ZmZlciBwb29sLCBzbyB0aGF0IGl0 CiAJCWNhbiBiZSBvYnRhaW5lZCBpbW1lZGlhdGVseSB3aXRoIGJ1Zl9wYWdlX2dldCB3aXRob3V0 IG5lZWQKIAkJZm9yIGEgZGlzayByZWFkICovCiAJCWJ1Zl9ibG9ja190KglibG9jazsKIAkJdWxp bnQJCXppcF9zaXplID0gZGljdF90YWJsZV9mbGFnc190b196aXBfc2l6ZSgKIAkJCW1hY2hfcmVh ZF9mcm9tXzQoRlNQX1NQQUNFX0ZMQUdTICsgc3BhY2VfaGVhZGVyKSk7CisJCW10cl90KgkJYmxv Y2tfbXRyID0gaW5pdF9tdHIgPyBpbml0X210ciA6IG10cjsKIAotCQlibG9jayA9IGJ1Zl9wYWdl X2NyZWF0ZShzcGFjZSwgcmV0X3BhZ2UsIHppcF9zaXplLCBtdHIpOworCQlibG9jayA9IGJ1Zl9w YWdlX2NyZWF0ZShzcGFjZSwgcmV0X3BhZ2UsIHppcF9zaXplLCBibG9ja19tdHIpOwogCQlidWZf YmxvY2tfZGJnX2FkZF9sZXZlbChibG9jaywgU1lOQ19GU1BfUEFHRSk7CiAKIAkJaWYgKFVOSVZf VU5MSUtFTFkoYmxvY2sgIT0gYnVmX3BhZ2VfZ2V0KHNwYWNlLCB6aXBfc2l6ZSwKIAkJCQkJCQly ZXRfcGFnZSwgUldfWF9MQVRDSCwKLQkJCQkJCQltdHIpKSkgeworCQkJCQkJCWJsb2NrX210cikp KSB7CiAJCQl1dF9lcnJvcjsKIAkJfQogCi0JCS8qIFRoZSBwcmlvciBjb250ZW50cyBvZiB0aGUg cGFnZSBzaG91bGQgYmUgaWdub3JlZCAqLwotCQlmc3BfaW5pdF9maWxlX3BhZ2UoYmxvY2ssIG10 cik7CisJCWlmIChpbml0X210cikgeworCQkJLyogVGhlIHByaW9yIGNvbnRlbnRzIG9mIHRoZSBw YWdlIHNob3VsZCBiZSBpZ25vcmVkICovCisJCQlmc3BfaW5pdF9maWxlX3BhZ2UoYmxvY2ssIGlu aXRfbXRyKTsKKwkJfQorCX0KIAorCS8qIHJldF9kZXNjciA9PSBOVUxMIGlmIHRoZSBibG9jayB3 YXMgYWxsb2NhdGVkIGZyb20gZnJlZV9mcmFnCisJKFhERVNfRlJFRV9GUkFHKSAqLworCWlmIChy ZXRfZGVzY3IgIT0gTlVMTCkgewogCQkvKiBBdCB0aGlzIHBvaW50IHdlIGtub3cgdGhlIGV4dGVu dCBhbmQgdGhlIHBhZ2Ugb2Zmc2V0LgogCQlUaGUgZXh0ZW50IGlzIHN0aWxsIGluIHRoZSBhcHBy b3ByaWF0ZSBsaXN0IChGU0VHX05PVF9GVUxMCiAJCW9yIEZTRUdfRlJFRSksIGFuZCB0aGUgcGFn ZSBpcyBub3QgeWV0IG1hcmtlZCBhcyB1c2VkLiAqLwpAQCAtMjc5OCw4ICsyODU5LDYgQEAgZnNl Z19hbGxvY19mcmVlX3BhZ2VfbG93KAogCQlmc2VnX21hcmtfcGFnZV91c2VkKHNlZ19pbm9kZSwg c3BhY2UsIHppcF9zaXplLCByZXRfcGFnZSwgbXRyKTsKIAl9CiAKLQlidWZfcmVzZXRfY2hlY2tf aW5kZXhfcGFnZV9hdF9mbHVzaChzcGFjZSwgcmV0X3BhZ2UpOwotCiAJcmV0dXJuKHJldF9wYWdl KTsKIH0KIApAQCAtMjgxMiw3ICsyODcxLDcgQEAgVU5JVl9JTlRFUk4KIHVsaW50CiBmc2VnX2Fs bG9jX2ZyZWVfcGFnZV9nZW5lcmFsKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQlm c2VnX2hlYWRlcl90KglzZWdfaGVhZGVyLC8qITwgaW46IHNlZ21lbnQgaGVhZGVyICovCisJZnNl Z19oZWFkZXJfdCoJc2VnX2hlYWRlciwvKiE8IGluL291dDogc2VnbWVudCBoZWFkZXIgKi8KIAl1 bGludAkJaGludCwJLyohPCBpbjogaGludCBvZiB3aGljaCBwYWdlIHdvdWxkIGJlIGRlc2lyYWJs ZSAqLwogCWJ5dGUJCWRpcmVjdGlvbiwvKiE8IGluOiBpZiB0aGUgbmV3IHBhZ2UgaXMgbmVlZGVk IGJlY2F1c2UKIAkJCQlvZiBhbiBpbmRleCBwYWdlIHNwbGl0LCBhbmQgcmVjb3JkcyBhcmUKQEAg LTI4MjQsNyArMjg4MywxMSBAQCBmc2VnX2FsbG9jX2ZyZWVfcGFnZV9nZW5lcmFsKAogCQkJCXdp dGggZnNwX3Jlc2VydmVfZnJlZV9leHRlbnRzLCB0aGVuIHRoZXJlCiAJCQkJaXMgbm8gbmVlZCB0 byBkbyB0aGUgY2hlY2sgZm9yIHRoaXMgaW5kaXZpZHVhbAogCQkJCXBhZ2UgKi8KLQltdHJfdCoJ CW10cikJLyohPCBpbjogbXRyIGhhbmRsZSAqLworCW10cl90KgkJbXRyLAkvKiE8IGluL291dDog bWluaS10cmFuc2FjdGlvbiBoYW5kbGUgKi8KKwltdHJfdCoJCWluaXRfbXRyKS8qITwgaW4vb3V0 OiBtdHIgb3IgYW5vdGhlciBtaW5pLXRyYW5zYWN0aW9uCisJCQkJaW4gd2hpY2ggdGhlIHBhZ2Ug c2hvdWxkIGJlIGluaXRpYWxpemVkLAorCQkJCW9yIE5VTEwgaWYgdGhpcyBpcyBhICJmYWtlIGFs bG9jYXRpb24iIG9mCisJCQkJYSBwYWdlIHRoYXQgd2FzIHByZXZpb3VzbHkgZnJlZWQgaW4gbXRy ICovCiB7CiAJZnNlZ19pbm9kZV90Kglpbm9kZTsKIAl1bGludAkJc3BhY2U7CkBAIC0yODY2LDcg KzI5MjksOCBAQCBmc2VnX2FsbG9jX2ZyZWVfcGFnZV9nZW5lcmFsKAogCX0KIAogCXBhZ2Vfbm8g PSBmc2VnX2FsbG9jX2ZyZWVfcGFnZV9sb3coc3BhY2UsIHppcF9zaXplLAotCQkJCQkgICBpbm9k ZSwgaGludCwgZGlyZWN0aW9uLCBtdHIpOworCQkJCQkgICBpbm9kZSwgaGludCwgZGlyZWN0aW9u LAorCQkJCQkgICBtdHIsIGluaXRfbXRyKTsKIAlpZiAoIWhhc19kb25lX3Jlc2VydmF0aW9uKSB7 CiAJCWZpbF9zcGFjZV9yZWxlYXNlX2ZyZWVfZXh0ZW50cyhzcGFjZSwgbl9yZXNlcnZlZCk7CiAJ fQpAQCAtMjg3NSwyOCArMjkzOSw2IEBAIGZzZWdfYWxsb2NfZnJlZV9wYWdlX2dlbmVyYWwoCiB9 CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLy8qKgotQWxsb2NhdGVzIGEgc2luZ2xlIGZyZWUgcGFnZSBmcm9t IGEgc2VnbWVudC4gVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzCi10aGUgaW50ZWxsaWdlbnQgYWxs b2NhdGlvbiBzdHJhdGVneSB3aGljaCB0cmllcyB0byBtaW5pbWl6ZSBmaWxlIHNwYWNlCi1mcmFn bWVudGF0aW9uLgotQHJldHVybglhbGxvY2F0ZWQgcGFnZSBvZmZzZXQsIEZJTF9OVUxMIGlmIG5v IHBhZ2UgY291bGQgYmUgYWxsb2NhdGVkICovCi1VTklWX0lOVEVSTgotdWxpbnQKLWZzZWdfYWxs b2NfZnJlZV9wYWdlKAotLyo9PT09PT09PT09PT09PT09PSovCi0JZnNlZ19oZWFkZXJfdCoJc2Vn X2hlYWRlciwvKiE8IGluOiBzZWdtZW50IGhlYWRlciAqLwotCXVsaW50CQloaW50LAkvKiE8IGlu OiBoaW50IG9mIHdoaWNoIHBhZ2Ugd291bGQgYmUgZGVzaXJhYmxlICovCi0JYnl0ZQkJZGlyZWN0 aW9uLC8qITwgaW46IGlmIHRoZSBuZXcgcGFnZSBpcyBuZWVkZWQgYmVjYXVzZQotCQkJCW9mIGFu IGluZGV4IHBhZ2Ugc3BsaXQsIGFuZCByZWNvcmRzIGFyZQotCQkJCWluc2VydGVkIHRoZXJlIGlu IG9yZGVyLCBpbnRvIHdoaWNoCi0JCQkJZGlyZWN0aW9uIHRoZXkgZ28gYWxwaGFiZXRpY2FsbHk6 IEZTUF9ET1dOLAotCQkJCUZTUF9VUCwgRlNQX05PX0RJUiAqLwotCW10cl90KgkJbXRyKQkvKiE8 IGluOiBtdHIgaGFuZGxlICovCi17Ci0JcmV0dXJuKGZzZWdfYWxsb2NfZnJlZV9wYWdlX2dlbmVy YWwoc2VnX2hlYWRlciwgaGludCwgZGlyZWN0aW9uLAotCQkJCQkgICAgRkFMU0UsIG10cikpOwot fQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8vKioKIENoZWNrcyB0aGF0IHdlIGhhdmUgYXQgbGVhc3QgMiBm cmFnIHBhZ2VzIGZyZWUgaW4gdGhlIGZpcnN0IGV4dGVudCBvZiBhCiBzaW5nbGUtdGFibGUgdGFi bGVzcGFjZSwgYW5kIHRoZXkgYXJlIGFsc28gcGh5c2ljYWxseSBpbml0aWFsaXplZCB0byB0aGUg ZGF0YQogZmlsZS4gVGhhdCBpcyB3ZSBoYXZlIGFscmVhZHkgZXh0ZW5kZWQgdGhlIGRhdGEgZmls ZSBzbyB0aGF0IHRob3NlIHBhZ2VzIGFyZQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5u b2Jhc2UvaW5jbHVkZS9idHIwYnRyLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9i dHIwYnRyLmgJcmV2aWQ6amltbXkueWFuZ0BvcmFjbGUuY29tLTIwMTEwODI5MDgyOTU3LXN5a291 b3dscjRjdWhjaW8KKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBidHIuaAlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDgyOTA4NTUzOC11Nzl6Z3Z4bjhra3c4dXdt CkBAIC01NjgsNyArNTY4LDEyIEBAIGJ0cl9wYWdlX2FsbG9jKAogCQkJCQlwYWdlIHNwbGl0IGlz IG1hZGUgKi8KIAl1bGludAkJbGV2ZWwsCQkvKiE8IGluOiBsZXZlbCB3aGVyZSB0aGUgcGFnZSBp cyBwbGFjZWQKIAkJCQkJaW4gdGhlIHRyZWUgKi8KLQltdHJfdCoJCW10cik7CQkvKiE8IGluOiBt dHIgKi8KKwltdHJfdCoJCW10ciwJCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uCisJCQkJ CWZvciB0aGUgYWxsb2NhdGlvbiAqLworCW10cl90KgkJaW5pdF9tdHIpCS8qITwgaW4vb3V0OiBt aW5pLXRyYW5zYWN0aW9uCisJCQkJCWZvciB4LWxhdGNoaW5nIGFuZCBpbml0aWFsaXppbmcKKwkJ CQkJdGhlIHBhZ2UgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1 bHQpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKIEZyZWVzIGEgZmlsZSBwYWdlIHVzZWQgaW4gYW4gaW5kZXggdHJl ZS4gTk9URTogY2Fubm90IGZyZWUgZmllbGQgZXh0ZXJuYWwKIHN0b3JhZ2UgcGFnZXMgYmVjYXVz ZSB0aGUgcGFnZSBtdXN0IGNvbnRhaW4gaW5mbyBvbiBpdHMgbGV2ZWwuICovCkBAIC01OTEsNiAr NTk2LDMzIEBAIGJ0cl9wYWdlX2ZyZWVfbG93KAogCWJ1Zl9ibG9ja190KglibG9jaywJLyohPCBp bjogYmxvY2sgdG8gYmUgZnJlZWQsIHgtbGF0Y2hlZCAqLwogCXVsaW50CQlsZXZlbCwJLyohPCBp bjogcGFnZSBsZXZlbCAqLwogCW10cl90KgkJbXRyKTsJLyohPCBpbjogbXRyICovCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCitNYXJrcyBhbGwgTVRSX01FTU9fRlJFRV9DTFVTVF9MRUFGIHBhZ2VzIG5vbmZyZWUgb3Ig ZnJlZS4KK0ZvciBpbnZva2luZyBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKCkgYWZ0 ZXIgYW4gdXBkYXRlLAord2UgbXVzdCB0ZW1wb3JhcmlseSBtYXJrIGZyZWVkIGNsdXN0ZXJlZCBp bmRleCBwYWdlcyBhbGxvY2F0ZWQsIHNvCit0aGF0IG9mZi1wYWdlIGNvbHVtbnMgd2lsbCBub3Qg YmUgYWxsb2NhdGVkIGZyb20gdGhlbS4gQmV0d2VlbiB0aGUKK2J0cl9zdG9yZV9iaWdfcmVjX2V4 dGVybl9maWVsZHMoKSBhbmQgbXRyX2NvbW1pdCgpIHdlIGhhdmUgdG8KK21hcmsgdGhlIHBhZ2Vz IGZyZWUgYWdhaW4sIHNvIHRoYXQgbm8gcGFnZXMgd2lsbCBiZSBsZWFrZWQuICovCitVTklWX0lO VEVSTgordm9pZAorYnRyX21hcmtfZnJlZWRfbGVhdmVzKAorLyo9PT09PT09PT09PT09PT09PT0q LworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW4vb3V0OiBjbHVzdGVyZWQgaW5kZXggKi8K KwltdHJfdCoJCW10ciwJLyohPCBpbi9vdXQ6IG1pbmktdHJhbnNhY3Rpb24gKi8KKwlpYm9vbAkJ bm9uZnJlZSkvKiE8IGluOiBUUlVFPW1hcmsgbm9uZnJlZSwgRkFMU0U9bWFyayBmcmVlZCAqLwor CVVOSVZfQ09MRCBfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7CisjaWZkZWYgVU5JVl9ERUJVRwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLy8qKgorVmFsaWRhdGVzIGFsbCBwYWdlcyBtYXJrZWQgTVRSX01FTU9fRlJFRV9DTFVT VF9MRUFGLgorQHNlZSBidHJfbWFya19mcmVlZF9sZWF2ZXMoKQorQHJldHVybiBUUlVFICovCitV TklWX0lOVEVSTgoraWJvb2wKK2J0cl9mcmVlZF9sZWF2ZXNfdmFsaWRhdGUoCisvKj09PT09PT09 PT09PT09PT09PT09PT0qLworCW10cl90KgltdHIpCS8qITwgaW46IG1pbmktdHJhbnNhY3Rpb24g Ki8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKKyNlbmRp ZiAvKiBVTklWX0RFQlVHICovCiAjaWZkZWYgVU5JVl9CVFJfUFJJTlQKIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogUHJp bnRzIHNpemUgaW5mbyBvZiBhIEItdHJlZS4gKi8KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvYnRyMGN1ci5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1 ZGUvYnRyMGN1ci5oCXJldmlkOmppbW15LnlhbmdAb3JhY2xlLmNvbS0yMDExMDgyOTA4Mjk1Ny1z eWtvdW93bHI0Y3VoY2lvCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwY3VyLmgJ cmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA4MjkwODU1MzgtdTc5emd2eG44a2t3 OHV3bQpAQCAtMzI3LDE2ICszMjcsNiBAQCBidHJfY3VyX3Blc3NpbWlzdGljX3VwZGF0ZSgKIAlx dWVfdGhyX3QqCXRociwJLyohPCBpbjogcXVlcnkgdGhyZWFkICovCiAJbXRyX3QqCQltdHIpOwkv KiE8IGluOiBtdHI7IG11c3QgYmUgY29tbWl0dGVkIGJlZm9yZQogCQkJCWxhdGNoaW5nIGFueSBm dXJ0aGVyIHBhZ2VzICovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKLUNvbW1pdHMgYW5kIHJlc3RhcnRzIGEgbWluaS10 cmFuc2FjdGlvbiBzbyB0aGF0IGl0IHdpbGwgcmV0YWluIGFuCi14LWxvY2sgb24gaW5kZXgtPmxv Y2sgYW5kIHRoZSBjdXJzb3IgcGFnZS4gKi8KLVVOSVZfSU5URVJOCi12b2lkCi1idHJfY3VyX210 cl9jb21taXRfYW5kX3N0YXJ0KAotLyo9PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQlidHJf Y3VyX3QqCWN1cnNvciwJLyohPCBpbjogY3Vyc29yICovCi0JbXRyX3QqCQltdHIpCS8qITwgaW4v b3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCi0JVU5JVl9DT0xEIF9fYXR0cmlidXRlX18oKG5vbm51 bGwpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8vKioKIE1hcmtzIGEgY2x1c3RlcmVkIGluZGV4IHJlY29yZCBkZWxldGVkLiBX cml0ZXMgYW4gdW5kbyBsb2cgcmVjb3JkIHRvCiB1bmRvIGxvZyBvbiB0aGlzIGRlbGV0ZSBtYXJr aW5nLiBXcml0ZXMgaW4gdGhlIHRyeCBpZCBmaWVsZCB0aGUgaWQKQEAgLTUyOCw2ICs1MTgsOCBA QCBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzX2Z1bmMoCiAJCQkJCXRoZSAiZXh0ZXJu YWwgc3RvcmFnZSIgZmxhZ3MgaW4gb2Zmc2V0cwogCQkJCQl3aWxsIG5vdCBjb3JyZXNwb25kIHRv IHJlYyB3aGVuCiAJCQkJCXRoaXMgZnVuY3Rpb24gcmV0dXJucyAqLworCWNvbnN0IGJpZ19yZWNf dCpiaWdfcmVjX3ZlYywJLyohPCBpbjogdmVjdG9yIGNvbnRhaW5pbmcgZmllbGRzCisJCQkJCXRv IGJlIHN0b3JlZCBleHRlcm5hbGx5ICovCiAjaWZkZWYgVU5JVl9ERUJVRwogCW10cl90KgkJbG9j YWxfbXRyLAkvKiE8IGluOiBtdHIgY29udGFpbmluZyB0aGUKIAkJCQkJbGF0Y2ggdG8gcmVjIGFu ZCB0byB0aGUgdHJlZSAqLwpAQCAtNTM2LDkgKzUyOCwxMiBAQCBidHJfc3RvcmVfYmlnX3JlY19l eHRlcm5fZmllbGRzX2Z1bmMoCiAJaWJvb2wJCXVwZGF0ZV9pbl9wbGFjZSwvKiEgaW46IFRSVUUg aWYgdGhlIHJlY29yZCBpcyB1cGRhdGVkCiAJCQkJCWluIHBsYWNlIChub3QgZGVsZXRlK2luc2Vy dCkgKi8KICNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQkxPQl9MSUdIVF9ERUJVRyAqLwot CWNvbnN0IGJpZ19yZWNfdCpiaWdfcmVjX3ZlYykJLyohPCBpbjogdmVjdG9yIGNvbnRhaW5pbmcg ZmllbGRzCi0JCQkJCXRvIGJlIHN0b3JlZCBleHRlcm5hbGx5ICovCi0JX19hdHRyaWJ1dGVfXygo bm9ubnVsbCkpOworCW10cl90KgkJYWxsb2NfbXRyKQkvKiE8IGluL291dDogaW4gYW4gaW5zZXJ0 LCBOVUxMOworCQkJCQlpbiBhbiB1cGRhdGUsIGxvY2FsX210ciBmb3IKKwkJCQkJYWxsb2NhdGlu ZyBCTE9CIHBhZ2VzIGFuZAorCQkJCQl1cGRhdGluZyBCTE9CIHBvaW50ZXJzOyBhbGxvY19tdHIK KwkJCQkJbXVzdCBub3QgaGF2ZSBmcmVlZCBhbnkgbGVhZiBwYWdlcyAqLworCV9fYXR0cmlidXRl X18oKG5vbm51bGwoMSwyLDMsNCw1KSwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CiAKIC8qKiBTdG9y ZXMgdGhlIGZpZWxkcyBpbiBiaWdfcmVjX3ZlYyB0byB0aGUgdGFibGVzcGFjZSBhbmQgcHV0cyBw b2ludGVycyB0bwogdGhlbSBpbiByZWMuICBUaGUgZXh0ZXJuIGZsYWdzIGluIHJlYyB3aWxsIGhh dmUgdG8gYmUgc2V0IGJlZm9yZWhhbmQuCkBAIC01NDcsMjEgKzU0MiwyMiBAQCBmaWxlIHNlZ21l bnQgb2YgdGhlIGluZGV4IHRyZWUuCiBAcGFyYW0gaW5kZXgJaW46IGNsdXN0ZXJlZCBpbmRleDsg TVVTVCBiZSBYLWxhdGNoZWQgYnkgbXRyCiBAcGFyYW0gYglpbi9vdXQ6IGJsb2NrIGNvbnRhaW5p bmcgcmVjOyBNVVNUIGJlIFgtbGF0Y2hlZCBieSBtdHIKIEBwYXJhbSByZWMJaW4vb3V0OiBjbHVz dGVyZWQgaW5kZXggcmVjb3JkCi1AcGFyYW0gb2Zmc2V0cwlpbjogcmVjX2dldF9vZmZzZXRzKHJl YywgaW5kZXgpOworQHBhcmFtIG9mZnMJaW46IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4KTsK IAkJdGhlICJleHRlcm5hbCBzdG9yYWdlIiBmbGFncyBpbiBvZmZzZXRzIHdpbGwgbm90IGJlIGFk anVzdGVkCitAcGFyYW0gYmlnCWluOiB2ZWN0b3IgY29udGFpbmluZyBmaWVsZHMgdG8gYmUgc3Rv cmVkIGV4dGVybmFsbHkKIEBwYXJhbSBtdHIJaW46IG1pbmktdHJhbnNhY3Rpb24gdGhhdCBob2xk cyB4LWxhdGNoIG9uIGluZGV4IGFuZCBiCiBAcGFyYW0gdXBkCWluOiBUUlVFIGlmIHRoZSByZWNv cmQgaXMgdXBkYXRlZCBpbiBwbGFjZSAobm90IGRlbGV0ZStpbnNlcnQpCi1AcGFyYW0gYmlnCWlu OiB2ZWN0b3IgY29udGFpbmluZyBmaWVsZHMgdG8gYmUgc3RvcmVkIGV4dGVybmFsbHkKK0BwYXJh bSBybXRyCWluL291dDogaW4gdXBkYXRlcywgdGhlIG1pbmktdHJhbnNhY3Rpb24gdGhhdCBob2xk cyByZWMKIEByZXR1cm4JREJfU1VDQ0VTUyBvciBEQl9PVVRfT0ZfRklMRV9TUEFDRSAqLwogI2lm ZGVmIFVOSVZfREVCVUcKLSMgZGVmaW5lIGJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMo aW5kZXgsYixyZWMsb2Zmc2V0cyxtdHIsdXBkLGJpZykgXAotCWJ0cl9zdG9yZV9iaWdfcmVjX2V4 dGVybl9maWVsZHNfZnVuYyhpbmRleCxiLHJlYyxvZmZzZXRzLG10cix1cGQsYmlnKQorIyBkZWZp bmUgYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkcyhpbmRleCxiLHJlYyxvZmZzLGJpZyxt dHIsdXBkLHJtdHIpIFwKKwlidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzX2Z1bmMoaW5k ZXgsYixyZWMsb2ZmcyxiaWcsbXRyLHVwZCxybXRyKQogI2VsaWYgZGVmaW5lZCBVTklWX0JMT0Jf TElHSFRfREVCVUcKLSMgZGVmaW5lIGJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoaW5k ZXgsYixyZWMsb2Zmc2V0cyxtdHIsdXBkLGJpZykgXAotCWJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVy bl9maWVsZHNfZnVuYyhpbmRleCxiLHJlYyxvZmZzZXRzLHVwZCxiaWcpCisjIGRlZmluZSBidHJf c3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKGluZGV4LGIscmVjLG9mZnMsYmlnLG10cix1cGQs cm10cikgXAorCWJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHNfZnVuYyhpbmRleCxiLHJl YyxvZmZzLGJpZyx1cGQscm10cikKICNlbHNlCi0jIGRlZmluZSBidHJfc3RvcmVfYmlnX3JlY19l eHRlcm5fZmllbGRzKGluZGV4LGIscmVjLG9mZnNldHMsbXRyLHVwZCxiaWcpIFwKLQlidHJfc3Rv cmVfYmlnX3JlY19leHRlcm5fZmllbGRzX2Z1bmMoaW5kZXgsYixyZWMsb2Zmc2V0cyxiaWcpCisj IGRlZmluZSBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKGluZGV4LGIscmVjLG9mZnMs YmlnLG10cix1cGQscm10cikgXAorCWJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHNfZnVu YyhpbmRleCxiLHJlYyxvZmZzLGJpZyxybXRyKQogI2VuZGlmCiAKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgoK PT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idWYwYnVmLmgnCi0t LSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idWYwYnVmLmgJcmV2aWQ6amltbXkueWFuZ0Bv cmFjbGUuY29tLTIwMTEwODI5MDgyOTU3LXN5a291b3dscjRjdWhjaW8KKysrIGIvc3RvcmFnZS9p bm5vYmFzZS9pbmNsdWRlL2J1ZjBidWYuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDExMDgyOTA4NTUzOC11Nzl6Z3Z4bjhra3c4dXdtCkBAIC00OTEsMTUgKzQ5MSw2IEBAIGJ1Zl9w YWdlX3BlZWsoCiAvKj09PT09PT09PT0qLwogCXVsaW50CXNwYWNlLAkvKiE8IGluOiBzcGFjZSBp ZCAqLwogCXVsaW50CW9mZnNldCk7LyohPCBpbjogcGFnZSBudW1iZXIgKi8KLS8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKLVJlc2V0cyB0aGUgY2hlY2tfaW5kZXhfcGFnZV9hdF9mbHVzaCBmaWVsZCBvZiBhIHBh Z2UgaWYgZm91bmQgaW4gdGhlIGJ1ZmZlcgotcG9vbC4gKi8KLVVOSVZfSU5URVJOCi12b2lkCi1i dWZfcmVzZXRfY2hlY2tfaW5kZXhfcGFnZV9hdF9mbHVzaCgKLS8qPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0qLwotCXVsaW50CXNwYWNlLAkvKiE8IGluOiBzcGFjZSBpZCAqLwotCXVs aW50CW9mZnNldCk7LyohPCBpbjogcGFnZSBudW1iZXIgKi8KICNpZiBkZWZpbmVkIFVOSVZfREVC VUdfRklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioK IFNldHMgZmlsZV9wYWdlX3dhc19mcmVlZCBUUlVFIGlmIHRoZSBwYWdlIGlzIGZvdW5kIGluIHRo ZSBidWZmZXIgcG9vbC4KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1 ZGUvZnNwMGZzcC5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZnNwMGZzcC5oCXJl dmlkOmppbW15LnlhbmdAb3JhY2xlLmNvbS0yMDExMDgyOTA4Mjk1Ny1zeWtvdW93bHI0Y3VoY2lv CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9mc3AwZnNwLmgJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMTA4MjkwODU1MzgtdTc5emd2eG44a2t3OHV3bQpAQCAtMSw2ICsx LDYgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMpIDE5OTUsIDIwMDks IElubm9iYXNlIE95LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChjKSAxOTk1LCAy MDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgog CiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeSBpdCB1bmRlcgogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKQEAgLTE3NiwxOSAr MTc2LDE4IEBAIGZzZWdfbl9yZXNlcnZlZF9wYWdlcygKIEFsbG9jYXRlcyBhIHNpbmdsZSBmcmVl IHBhZ2UgZnJvbSBhIHNlZ21lbnQuIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cwogdGhlIGludGVs bGlnZW50IGFsbG9jYXRpb24gc3RyYXRlZ3kgd2hpY2ggdHJpZXMgdG8gbWluaW1pemUKIGZpbGUg c3BhY2UgZnJhZ21lbnRhdGlvbi4KLUByZXR1cm4JdGhlIGFsbG9jYXRlZCBwYWdlIG9mZnNldCBG SUxfTlVMTCBpZiBubyBwYWdlIGNvdWxkIGJlIGFsbG9jYXRlZCAqLwotVU5JVl9JTlRFUk4KLXVs aW50Ci1mc2VnX2FsbG9jX2ZyZWVfcGFnZSgKLS8qPT09PT09PT09PT09PT09PT0qLwotCWZzZWdf aGVhZGVyX3QqCXNlZ19oZWFkZXIsIC8qITwgaW46IHNlZ21lbnQgaGVhZGVyICovCi0JdWxpbnQJ CWhpbnQsCS8qITwgaW46IGhpbnQgb2Ygd2hpY2ggcGFnZSB3b3VsZCBiZSBkZXNpcmFibGUgKi8K LQlieXRlCQlkaXJlY3Rpb24sIC8qITwgaW46IGlmIHRoZSBuZXcgcGFnZSBpcyBuZWVkZWQgYmVj YXVzZQorQHBhcmFtW2luL291dF0gc2VnX2hlYWRlcglzZWdtZW50IGhlYWRlcgorQHBhcmFtW2lu XSBoaW50CQkJaGludCBvZiB3aGljaCBwYWdlIHdvdWxkIGJlIGRlc2lyYWJsZQorQHBhcmFtW2lu XSBkaXJlY3Rpb24JCWlmIHRoZSBuZXcgcGFnZSBpcyBuZWVkZWQgYmVjYXVzZQogCQkJCW9mIGFu IGluZGV4IHBhZ2Ugc3BsaXQsIGFuZCByZWNvcmRzIGFyZQogCQkJCWluc2VydGVkIHRoZXJlIGlu IG9yZGVyLCBpbnRvIHdoaWNoCiAJCQkJZGlyZWN0aW9uIHRoZXkgZ28gYWxwaGFiZXRpY2FsbHk6 IEZTUF9ET1dOLAotCQkJCUZTUF9VUCwgRlNQX05PX0RJUiAqLwotCW10cl90KgkJbXRyKTsJLyoh PCBpbjogbXRyIGhhbmRsZSAqLworCQkJCUZTUF9VUCwgRlNQX05PX0RJUgorQHBhcmFtW2luL291 dF0gbXRyCQltaW5pLXRyYW5zYWN0aW9uCitAcmV0dXJuCXRoZSBhbGxvY2F0ZWQgcGFnZSBvZmZz ZXQgRklMX05VTEwgaWYgbm8gcGFnZSBjb3VsZCBiZSBhbGxvY2F0ZWQgKi8KKyNkZWZpbmUgZnNl Z19hbGxvY19mcmVlX3BhZ2Uoc2VnX2hlYWRlciwgaGludCwgZGlyZWN0aW9uLCBtdHIpCQlcCisJ ZnNlZ19hbGxvY19mcmVlX3BhZ2VfZ2VuZXJhbChzZWdfaGVhZGVyLCBoaW50LCBkaXJlY3Rpb24s CVwKKwkJCQkgICAgIEZBTFNFLCBtdHIsIG10cikKIC8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogQWxsb2Nh dGVzIGEgc2luZ2xlIGZyZWUgcGFnZSBmcm9tIGEgc2VnbWVudC4gVGhpcyBmdW5jdGlvbiBpbXBs ZW1lbnRzCiB0aGUgaW50ZWxsaWdlbnQgYWxsb2NhdGlvbiBzdHJhdGVneSB3aGljaCB0cmllcyB0 byBtaW5pbWl6ZSBmaWxlIHNwYWNlCkBAIC0xOTgsNyArMTk3LDcgQEAgVU5JVl9JTlRFUk4KIHVs aW50CiBmc2VnX2FsbG9jX2ZyZWVfcGFnZV9nZW5lcmFsKAogLyo9PT09PT09PT09PT09PT09PT09 PT09PT09Ki8KLQlmc2VnX2hlYWRlcl90KglzZWdfaGVhZGVyLC8qITwgaW46IHNlZ21lbnQgaGVh ZGVyICovCisJZnNlZ19oZWFkZXJfdCoJc2VnX2hlYWRlciwvKiE8IGluL291dDogc2VnbWVudCBo ZWFkZXIgKi8KIAl1bGludAkJaGludCwJLyohPCBpbjogaGludCBvZiB3aGljaCBwYWdlIHdvdWxk IGJlIGRlc2lyYWJsZSAqLwogCWJ5dGUJCWRpcmVjdGlvbiwvKiE8IGluOiBpZiB0aGUgbmV3IHBh Z2UgaXMgbmVlZGVkIGJlY2F1c2UKIAkJCQlvZiBhbiBpbmRleCBwYWdlIHNwbGl0LCBhbmQgcmVj b3JkcyBhcmUKQEAgLTIxMCw3ICsyMDksMTIgQEAgZnNlZ19hbGxvY19mcmVlX3BhZ2VfZ2VuZXJh bCgKIAkJCQl3aXRoIGZzcF9yZXNlcnZlX2ZyZWVfZXh0ZW50cywgdGhlbiB0aGVyZQogCQkJCWlz IG5vIG5lZWQgdG8gZG8gdGhlIGNoZWNrIGZvciB0aGlzIGluZGl2aWR1YWwKIAkJCQlwYWdlICov Ci0JbXRyX3QqCQltdHIpOwkvKiE8IGluOiBtdHIgaGFuZGxlICovCisJbXRyX3QqCQltdHIsCS8q ITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCisJbXRyX3QqCQlpbml0X210cikvKiE8IGlu L291dDogbXRyIG9yIGFub3RoZXIgbWluaS10cmFuc2FjdGlvbgorCQkJCWluIHdoaWNoIHRoZSBw YWdlIHNob3VsZCBiZSBpbml0aWFsaXplZCwKKwkJCQlvciBOVUxMIGlmIHRoaXMgaXMgYSAiZmFr ZSBhbGxvY2F0aW9uIiBvZgorCQkJCWEgcGFnZSB0aGF0IHdhcyBwcmV2aW91c2x5IGZyZWVkIGlu IG10ciAqLworCV9fYXR0cmlidXRlX18oKHdhcm5fdW51c2VkX3Jlc3VsdCwgbm9ubnVsbCgxLDUp KSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8vKioKIFJlc2VydmVzIGZyZWUgcGFnZXMgZnJvbSBhIHRhYmxl c3BhY2UuIEFsbCBtaW5pLXRyYW5zYWN0aW9ucyB3aGljaCBtYXkKIHVzZSBzZXZlcmFsIHBhZ2Vz IGZyb20gdGhlIHRhYmxlc3BhY2Ugc2hvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbiBiZWZvcmVoYW5k Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL210cjBtdHIuaCcK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL210cjBtdHIuaAlyZXZpZDpqaW1teS55YW5n QG9yYWNsZS5jb20tMjAxMTA4MjkwODI5NTctc3lrb3Vvd2xyNGN1aGNpbworKysgYi9zdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvbXRyMG10ci5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTEwODI5MDg1NTM4LXU3OXpndnhuOGtrdzh1d20KQEAgLTEsNiArMSw2IEBACiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk1LCAyMDA5LCBJbm5vYmFzZSBPeS4g QWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NSwgMjAxMSwgT3JhY2xlIGFu ZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkg aXQgdW5kZXIKIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC01Myw2ICs1Myw4IEBAIGZpcnN0IDMg dmFsdWVzIG11c3QgYmUgUldfU19MQVRDSCwgUldfWF8KICNkZWZpbmUgTVRSX01FTU9fTU9ESUZZ CQk1NAogI2RlZmluZQlNVFJfTUVNT19TX0xPQ0sJCTU1CiAjZGVmaW5lCU1UUl9NRU1PX1hfTE9D SwkJNTYKKy8qKiBUaGUgbWluaS10cmFuc2FjdGlvbiBmcmVlZCBhIGNsdXN0ZXJlZCBpbmRleCBs ZWFmIHBhZ2UuICovCisjZGVmaW5lIE1UUl9NRU1PX0ZSRUVfQ0xVU1RfTEVBRgk1NwogCiAvKiog QG5hbWUgTG9nIGl0ZW0gdHlwZXMKIFRoZSBsb2cgaXRlbXMgYXJlIGRlY2xhcmVkICdieXRlJyBz byB0aGF0IHRoZSBjb21waWxlciBjYW4gd2FybiBpZiB2YWwKQEAgLTM3OCwxMSArMzgwLDE0IEBA IHN0cnVjdCBtdHJfc3RydWN0ewogI2VuZGlmCiAJZHluX2FycmF5X3QJbWVtbzsJLyohPCBtZW1v IHN0YWNrIGZvciBsb2NrcyBldGMuICovCiAJZHluX2FycmF5X3QJbG9nOwkvKiE8IG1pbmktdHJh bnNhY3Rpb24gbG9nICovCi0JaWJvb2wJCWluc2lkZV9pYnVmOworCXVuc2lnbmVkCWluc2lkZV9p YnVmOjE7CiAJCQkJLyohPCBUUlVFIGlmIGluc2lkZSBpYnVmIGNoYW5nZXMgKi8KLQlpYm9vbAkJ bW9kaWZpY2F0aW9uczsKLQkJCQkvKiBUUlVFIGlmIHRoZSBtdHIgbWFkZSBtb2RpZmljYXRpb25z IHRvCi0JCQkJYnVmZmVyIHBvb2wgcGFnZXMgKi8KKwl1bnNpZ25lZAltb2RpZmljYXRpb25zOjE7 CisJCQkJLyohPCBUUlVFIGlmIHRoZSBtaW5pLXRyYW5zYWN0aW9uCisJCQkJbW9kaWZpZWQgYnVm ZmVyIHBvb2wgcGFnZXMgKi8KKwl1bnNpZ25lZAlmcmVlZF9jbHVzdF9sZWFmOjE7CisJCQkJLyoh PCBUUlVFIGlmIE1UUl9NRU1PX0ZSRUVfQ0xVU1RfTEVBRgorCQkJCXdhcyBsb2dnZWQgaW4gdGhl IG1pbmktdHJhbnNhY3Rpb24gKi8KIAl1bGludAkJbl9sb2dfcmVjczsKIAkJCQkvKiBjb3VudCBv ZiBob3cgbWFueSBwYWdlIGluaXRpYWwgbG9nIHJlY29yZHMKIAkJCQloYXZlIGJlZW4gd3JpdHRl biB0byB0aGUgbXRyIGxvZyAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS9tdHIwbXRyLmljJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvbXRyMG10 ci5pYwlyZXZpZDpqaW1teS55YW5nQG9yYWNsZS5jb20tMjAxMTA4MjkwODI5NTctc3lrb3Vvd2xy NGN1aGNpbworKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvbXRyMG10ci5pYwlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDgyOTA4NTUzOC11Nzl6Z3Z4bjhra3c4dXdtCkBA IC0xLDYgKzEsNiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5 NSwgMjAxMCwgSW5ub2Jhc2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMp IDE5OTUsIDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVz ZXJ2ZWQuCiAKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAt NDMsOCArNDMsOSBAQCBtdHJfc3RhcnQoCiAJZHluX2FycmF5X2NyZWF0ZSgmKG10ci0+bG9nKSk7 CiAKIAltdHItPmxvZ19tb2RlID0gTVRSX0xPR19BTEw7Ci0JbXRyLT5tb2RpZmljYXRpb25zID0g RkFMU0U7CiAJbXRyLT5pbnNpZGVfaWJ1ZiA9IEZBTFNFOworCW10ci0+bW9kaWZpY2F0aW9ucyA9 IEZBTFNFOworCW10ci0+ZnJlZWRfY2x1c3RfbGVhZiA9IEZBTFNFOwogCW10ci0+bl9sb2dfcmVj cyA9IDA7CiAKIAl1dF9kKG10ci0+c3RhdGUgPSBNVFJfQUNUSVZFKTsKQEAgLTY2LDcgKzY3LDgg QEAgbXRyX21lbW9fcHVzaCgKIAogCXV0X2FkKG9iamVjdCk7CiAJdXRfYWQodHlwZSA+PSBNVFJf TUVNT19QQUdFX1NfRklYKTsKLQl1dF9hZCh0eXBlIDw9IE1UUl9NRU1PX1hfTE9DSyk7CisJdXRf YWQodHlwZSA8PSBNVFJfTUVNT19GUkVFX0NMVVNUX0xFQUYpOworCXV0X2FkKHR5cGUgIT0gTVRS X01FTU9fRlJFRV9DTFVTVF9MRUFGIHx8IG10ci0+ZnJlZWRfY2x1c3RfbGVhZik7CiAJdXRfYWQo bXRyKTsKIAl1dF9hZChtdHItPm1hZ2ljX24gPT0gTVRSX01BR0lDX04pOwogCXV0X2FkKG10ci0+ c3RhdGUgPT0gTVRSX0FDVElWRSk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFz ZS9tdHIvbXRyMG10ci5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL210ci9tdHIwbXRyLmMJcmV2 aWQ6amltbXkueWFuZ0BvcmFjbGUuY29tLTIwMTEwODI5MDgyOTU3LXN5a291b3dscjRjdWhjaW8K KysrIGIvc3RvcmFnZS9pbm5vYmFzZS9tdHIvbXRyMG10ci5jCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTEwODI5MDg1NTM4LXU3OXpndnhuOGtrdzh1d20KQEAgLTEsNiArMSw2IEBA CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk1LCAyMDA5LCBJbm5v YmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NSwgMjAxMSwg T3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC02NCwxMiArNjQsMTEg QEAgbXRyX21lbW9fc2xvdF9yZWxlYXNlKAogCQkJYnVmX3BhZ2VfcmVsZWFzZSgoYnVmX2Jsb2Nr X3QqKW9iamVjdCwgdHlwZSk7CiAJCX0gZWxzZSBpZiAodHlwZSA9PSBNVFJfTUVNT19TX0xPQ0sp IHsKIAkJCXJ3X2xvY2tfc191bmxvY2soKHJ3X2xvY2tfdCopb2JqZWN0KTsKLSNpZmRlZiBVTklW X0RFQlVHCiAJCX0gZWxzZSBpZiAodHlwZSAhPSBNVFJfTUVNT19YX0xPQ0spIHsKLQkJCXV0X2Fk KHR5cGUgPT0gTVRSX01FTU9fTU9ESUZZKTsKKwkJCXV0X2FkKHR5cGUgPT0gTVRSX01FTU9fTU9E SUZZCisJCQkgICAgICB8fCB0eXBlID09IE1UUl9NRU1PX0ZSRUVfQ0xVU1RfTEVBRik7CiAJCQl1 dF9hZChtdHJfbWVtb19jb250YWlucyhtdHIsIG9iamVjdCwKIAkJCQkJCU1UUl9NRU1PX1BBR0Vf WF9GSVgpKTsKLSNlbmRpZiAvKiBVTklWX0RFQlVHICovCiAJCX0gZWxzZSB7CiAJCQlyd19sb2Nr X3hfdW5sb2NrKChyd19sb2NrX3QqKW9iamVjdCk7CiAJCX0KCj09PSBtb2RpZmllZCBmaWxlICdz dG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5zLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93 L3JvdzBpbnMuYwlyZXZpZDpqaW1teS55YW5nQG9yYWNsZS5jb20tMjAxMTA4MjkwODI5NTctc3lr b3Vvd2xyNGN1aGNpbworKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5zLmMJcmV2aWQ6 bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA4MjkwODU1MzgtdTc5emd2eG44a2t3OHV3bQpA QCAtMjA4OCwxNSArMjA4OCwyMCBAQCByb3dfaW5zX2luZGV4X2VudHJ5X2xvdygKIAkJCWlmIChi aWdfcmVjKSB7CiAJCQkJdXRfYShlcnIgPT0gREJfU1VDQ0VTUyk7CiAJCQkJLyogV3JpdGUgb3V0 IHRoZSBleHRlcm5hbGx5IHN0b3JlZAotCQkJCWNvbHVtbnMgd2hpbGUgc3RpbGwgeC1sYXRjaGlu ZwotCQkJCWluZGV4LT5sb2NrIGFuZCBibG9jay0+bG9jay4gV2UgaGF2ZQotCQkJCXRvIG10cl9j b21taXQobXRyKSBmaXJzdCwgc28gdGhhdCB0aGUKLQkJCQlyZWRvIGxvZyB3aWxsIGJlIHdyaXR0 ZW4gaW4gdGhlCi0JCQkJY29ycmVjdCBvcmRlci4gT3RoZXJ3aXNlLCB3ZSB3b3VsZCBydW4KLQkJ CQlpbnRvIHRyb3VibGUgb24gY3Jhc2ggcmVjb3ZlcnkgaWYgbXRyCi0JCQkJZnJlZWQgQi10cmVl IHBhZ2VzIG9uIHdoaWNoIHNvbWUgb2YKLQkJCQl0aGUgYmlnX3JlYyBmaWVsZHMgd2lsbCBiZSB3 cml0dGVuLiAqLwotCQkJCWJ0cl9jdXJfbXRyX2NvbW1pdF9hbmRfc3RhcnQoJmN1cnNvciwgJm10 cik7CisJCQkJY29sdW1ucywgYnV0IGFsbG9jYXRlIHRoZSBwYWdlcyBhbmQKKwkJCQl3cml0ZSB0 aGUgcG9pbnRlcnMgdXNpbmcgdGhlCisJCQkJbWluaS10cmFuc2FjdGlvbiBvZiB0aGUgcmVjb3Jk IHVwZGF0ZS4KKwkJCQlJZiBhbnkgcGFnZXMgd2VyZSBmcmVlZCBpbiB0aGUgdXBkYXRlLAorCQkJ CXRlbXBvcmFyaWx5IG1hcmsgdGhlbSBhbGxvY2F0ZWQgc28KKwkJCQl0aGF0IG9mZi1wYWdlIGNv bHVtbnMgd2lsbCBub3QKKwkJCQlvdmVyd3JpdGUgdGhlbS4gV2UgbXVzdCBkbyB0aGlzLAorCQkJ CWJlY2F1c2Ugd2Ugd2lsbCB3cml0ZSB0aGUgcmVkbyBsb2cgZm9yCisJCQkJdGhlIEJMT0Igd3Jp dGVzIGJlZm9yZSB3cml0aW5nIHRoZQorCQkJCXJlZG8gbG9nIGZvciB0aGUgcmVjb3JkIHVwZGF0 ZS4gVGh1cywKKwkJCQlyZWRvIGxvZyBhcHBsaWNhdGlvbiBhdCBjcmFzaCByZWNvdmVyeQorCQkJ CXdpbGwgc2VlIEJMT0JzIGJlaW5nIHdyaXR0ZW4gdG8gZnJlZSBwYWdlcy4gKi8KKworCQkJCWJ0 cl9tYXJrX2ZyZWVkX2xlYXZlcyhpbmRleCwgJm10ciwgVFJVRSk7CiAKIAkJCQlyZWMgPSBidHJf Y3VyX2dldF9yZWMoJmN1cnNvcik7CiAJCQkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cygKQEAg LTIxMDUsNyArMjExMCw4IEBAIHJvd19pbnNfaW5kZXhfZW50cnlfbG93KAogCiAJCQkJZXJyID0g YnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkcygKIAkJCQkJaW5kZXgsIGJ0cl9jdXJfZ2V0 X2Jsb2NrKCZjdXJzb3IpLAotCQkJCQlyZWMsIG9mZnNldHMsICZtdHIsIEZBTFNFLCBiaWdfcmVj KTsKKwkJCQkJcmVjLCBvZmZzZXRzLCBiaWdfcmVjLCAmbXRyLAorCQkJCQlGQUxTRSwgJm10cik7 CiAJCQkJLyogSWYgd3JpdGluZyBiaWdfcmVjIGZhaWxzIChmb3IKIAkJCQlleGFtcGxlLCBiZWNh dXNlIG9mIERCX09VVF9PRl9GSUxFX1NQQUNFKSwKIAkJCQl0aGUgcmVjb3JkIHdpbGwgYmUgY29y cnVwdGVkLiBFdmVuIGlmCkBAIC0yMTE4LDYgKzIxMjQsOSBAQCByb3dfaW5zX2luZGV4X2VudHJ5 X2xvdygKIAkJCQl1bmRvIGxvZywgYW5kIHRodXMgdGhlIHJlY29yZCBjYW5ub3QKIAkJCQliZSBy b2xsZWQgYmFjay4gKi8KIAkJCQl1dF9hKGVyciA9PSBEQl9TVUNDRVNTKTsKKwkJCQkvKiBGcmVl IHRoZSBwYWdlcyBhZ2FpbgorCQkJCWluIG9yZGVyIHRvIGF2b2lkIGEgbGVhay4gKi8KKwkJCQli dHJfbWFya19mcmVlZF9sZWF2ZXMoaW5kZXgsICZtdHIsIEZBTFNFKTsKIAkJCQlnb3RvIHN0b3Jl ZF9iaWdfcmVjOwogCQkJfQogCQl9IGVsc2UgewpAQCAtMjE1OSw3ICsyMTY4LDcgQEAgZnVuY3Rp b25fZXhpdDoKIAogCQllcnIgPSBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKAogCQkJ aW5kZXgsIGJ0cl9jdXJfZ2V0X2Jsb2NrKCZjdXJzb3IpLAotCQkJcmVjLCBvZmZzZXRzLCAmbXRy LCBGQUxTRSwgYmlnX3JlYyk7CisJCQlyZWMsIG9mZnNldHMsIGJpZ19yZWMsICZtdHIsIEZBTFNF LCBOVUxMKTsKIAogc3RvcmVkX2JpZ19yZWM6CiAJCWlmIChtb2RpZnkpIHsKQEAgLTI0MzQsNyAr MjQ0Myw3IEBAIHJvd19pbnMoCiAJCW5vZGUtPmluZGV4ID0gZGljdF90YWJsZV9nZXRfbmV4dF9p bmRleChub2RlLT5pbmRleCk7CiAJCW5vZGUtPmVudHJ5ID0gVVRfTElTVF9HRVRfTkVYVCh0dXBs ZV9saXN0LCBub2RlLT5lbnRyeSk7CiAKLQkJLyogU2tpcCBjb3JydXB0ZWQgc2Vjb25kYXIgaW5k ZXggYW5kIGl0cyBlbnRyeSAqLworCQkvKiBTa2lwIGNvcnJ1cHRlZCBzZWNvbmRhcnkgaW5kZXgg YW5kIGl0cyBlbnRyeSAqLwogCQl3aGlsZSAobm9kZS0+aW5kZXggJiYgZGljdF9pbmRleF9pc19j b3JydXB0ZWQobm9kZS0+aW5kZXgpKSB7CiAKIAkJCW5vZGUtPmluZGV4ID0gZGljdF90YWJsZV9n ZXRfbmV4dF9pbmRleChub2RlLT5pbmRleCk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9p bm5vYmFzZS9yb3cvcm93MHJvdy5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwcm93 LmMJcmV2aWQ6amltbXkueWFuZ0BvcmFjbGUuY29tLTIwMTEwODI5MDgyOTU3LXN5a291b3dscjRj dWhjaW8KKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHJvdy5jCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTEwODI5MDg1NTM4LXU3OXpndnhuOGtrdzh1d20KQEAgLTI0Mywx OSArMjQzLDIwIEBAIHJvd19idWlsZCgKIAl9CiAKICNpZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwg ZGVmaW5lZCBVTklWX0JMT0JfTElHSFRfREVCVUcKLQkvKiBUaGlzIGNvbmRpdGlvbiBjYW4gb2Nj dXIgZHVyaW5nIGNyYXNoIHJlY292ZXJ5IGJlZm9yZQotCXRyeF9yb2xsYmFja19hY3RpdmUoKSBo YXMgY29tcGxldGVkIGV4ZWN1dGlvbi4KKwlpZiAocmVjX29mZnNfYW55X251bGxfZXh0ZXJuKHJl Yywgb2Zmc2V0cykpIHsKKwkJLyogVGhpcyBjb25kaXRpb24gY2FuIG9jY3VyIGR1cmluZyBjcmFz aCByZWNvdmVyeQorCQliZWZvcmUgdHJ4X3JvbGxiYWNrX2FjdGl2ZSgpIGhhcyBjb21wbGV0ZWQg ZXhlY3V0aW9uLgogCi0JVGhpcyBjb25kaXRpb24gaXMgcG9zc2libGUgaWYgdGhlIHNlcnZlciBj cmFzaGVkCi0JZHVyaW5nIGFuIGluc2VydCBvciB1cGRhdGUgYmVmb3JlCi0JYnRyX3N0b3JlX2Jp Z19yZWNfZXh0ZXJuX2ZpZWxkcygpIGRpZCBtdHJfY29tbWl0KCkgYWxsCi0JQkxPQiBwb2ludGVy cyB0byB0aGUgY2x1c3RlcmVkIGluZGV4IHJlY29yZC4KLQotCUlmIHRoZSByZWNvcmQgY29udGFp bnMgYSBudWxsIEJMT0IgcG9pbnRlciwgbG9vayB1cCB0aGUKLQl0cmFuc2FjdGlvbiB0aGF0IGhv bGRzIHRoZSBpbXBsaWNpdCBsb2NrIG9uIHRoaXMgcmVjb3JkLCBhbmQKLQlhc3NlcnQgdGhhdCBp dCB3YXMgcmVjb3ZlcmVkIChhbmQgd2lsbCBzb29uIGJlIHJvbGxlZCBiYWNrKS4gKi8KLQl1dF9h KCFyZWNfb2Zmc19hbnlfbnVsbF9leHRlcm4ocmVjLCBvZmZzZXRzKQotCSAgICAgfHwgdHJ4X2Fz c2VydF9yZWNvdmVyZWQocm93X2dldF9yZWNfdHJ4X2lkKHJlYywgaW5kZXgsIG9mZnNldHMpKSk7 CisJCVRoaXMgY29uZGl0aW9uIGlzIHBvc3NpYmxlIGlmIHRoZSBzZXJ2ZXIgY3Jhc2hlZAorCQlk dXJpbmcgYW4gaW5zZXJ0IG9yIHVwZGF0ZS1ieS1kZWxldGUtYW5kLWluc2VydCBiZWZvcmUKKwkJ YnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkcygpIGRpZCBtdHJfY29tbWl0KCkgYWxsCisJ CUJMT0IgcG9pbnRlcnMgdG8gdGhlIGZyZXNobHkgaW5zZXJ0ZWQgY2x1c3RlcmVkIGluZGV4CisJ CXJlY29yZC4gKi8KKwkJdXRfYSh0cnhfYXNzZXJ0X3JlY292ZXJlZCgKKwkJCSAgICAgcm93X2dl dF9yZWNfdHJ4X2lkKHJlYywgaW5kZXgsIG9mZnNldHMpKSk7CisJCXV0X2EodHJ4X3VuZG9fcm9s bF9wdHJfaXNfaW5zZXJ0KAorCQkJICAgICByb3dfZ2V0X3JlY19yb2xsX3B0cihyZWMsIGluZGV4 LCBvZmZzZXRzKSkpOworCX0KICNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQkxPQl9MSUdI VF9ERUJVRyAqLwogCiAJaWYgKHR5cGUgIT0gUk9XX0NPUFlfUE9JTlRFUlMpIHsKCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdXBkLmMnCi0tLSBhL3N0b3JhZ2Uv aW5ub2Jhc2Uvcm93L3JvdzB1cGQuYwlyZXZpZDpqaW1teS55YW5nQG9yYWNsZS5jb20tMjAxMTA4 MjkwODI5NTctc3lrb3Vvd2xyNGN1aGNpbworKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cw dXBkLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA4MjkwODU1MzgtdTc5emd2 eG44a2t3OHV3bQpAQCAtMjAwOCwyMSArMjAwOCwyMiBAQCByb3dfdXBkX2NsdXN0X3JlYygKIAkJ cmVjX29mZnNfaW5pdChvZmZzZXRzXyk7CiAKIAkJdXRfYShlcnIgPT0gREJfU1VDQ0VTUyk7Ci0J CS8qIFdyaXRlIG91dCB0aGUgZXh0ZXJuYWxseSBzdG9yZWQgY29sdW1ucyB3aGlsZSBzdGlsbAot CQl4LWxhdGNoaW5nIGluZGV4LT5sb2NrIGFuZCBibG9jay0+bG9jay4gV2UgaGF2ZSB0bwotCQlt dHJfY29tbWl0KG10cikgZmlyc3QsIHNvIHRoYXQgdGhlIHJlZG8gbG9nIHdpbGwgYmUKLQkJd3Jp dHRlbiBpbiB0aGUgY29ycmVjdCBvcmRlci4gT3RoZXJ3aXNlLCB3ZSB3b3VsZCBydW4KLQkJaW50 byB0cm91YmxlIG9uIGNyYXNoIHJlY292ZXJ5IGlmIG10ciBmcmVlZCBCLXRyZWUKLQkJcGFnZXMg b24gd2hpY2ggc29tZSBvZiB0aGUgYmlnX3JlYyBmaWVsZHMgd2lsbCBiZQotCQl3cml0dGVuLiAq LwotCQlidHJfY3VyX210cl9jb21taXRfYW5kX3N0YXJ0KGJ0cl9jdXIsIG10cik7CisJCS8qIFdy aXRlIG91dCB0aGUgZXh0ZXJuYWxseSBzdG9yZWQgY29sdW1ucywgYnV0CisJCWFsbG9jYXRlIHRo ZSBwYWdlcyBhbmQgd3JpdGUgdGhlIHBvaW50ZXJzIHVzaW5nIHRoZQorCQltaW5pLXRyYW5zYWN0 aW9uIG9mIHRoZSByZWNvcmQgdXBkYXRlLiBJZiBhbnkgcGFnZXMKKwkJd2VyZSBmcmVlZCBpbiB0 aGUgdXBkYXRlLCB0ZW1wb3JhcmlseSBtYXJrIHRoZW0KKwkJYWxsb2NhdGVkIHNvIHRoYXQgb2Zm LXBhZ2UgY29sdW1ucyB3aWxsIG5vdCBvdmVyd3JpdGUKKwkJdGhlbS4gV2UgbXVzdCBkbyB0aGlz LCBiZWNhdXNlIHdlIHdyaXRlIHRoZSByZWRvIGxvZworCQlmb3IgdGhlIEJMT0Igd3JpdGVzIGJl Zm9yZSB3cml0aW5nIHRoZSByZWRvIGxvZyBmb3IKKwkJdGhlIHJlY29yZCB1cGRhdGUuICovCiAK KwkJYnRyX21hcmtfZnJlZWRfbGVhdmVzKGluZGV4LCBtdHIsIFRSVUUpOwogCQlyZWMgPSBidHJf Y3VyX2dldF9yZWMoYnRyX2N1cik7CiAJCWVyciA9IGJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9m aWVsZHMoCiAJCQlpbmRleCwgYnRyX2N1cl9nZXRfYmxvY2soYnRyX2N1ciksIHJlYywKIAkJCXJl Y19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4LCBvZmZzZXRzXywKIAkJCQkJVUxJTlRfVU5ERUZJTkVE LCAmaGVhcCksCi0JCQltdHIsIFRSVUUsIGJpZ19yZWMpOworCQkJYmlnX3JlYywgbXRyLCBUUlVF LCBtdHIpOwogCQkvKiBJZiB3cml0aW5nIGJpZ19yZWMgZmFpbHMgKGZvciBleGFtcGxlLCBiZWNh dXNlIG9mCiAJCURCX09VVF9PRl9GSUxFX1NQQUNFKSwgdGhlIHJlY29yZCB3aWxsIGJlIGNvcnJ1 cHRlZC4KIAkJRXZlbiBpZiB3ZSBkaWQgbm90IHVwZGF0ZSBhbnkgZXh0ZXJuYWxseSBzdG9yZWQK QEAgLTIwMzIsNiArMjAzMyw4IEBAIHJvd191cGRfY2x1c3RfcmVjKAogCQl0byB0aGUgdW5kbyBs b2csIGFuZCB0aHVzIHRoZSByZWNvcmQgY2Fubm90IGJlIHJvbGxlZAogCQliYWNrLiAqLwogCQl1 dF9hKGVyciA9PSBEQl9TVUNDRVNTKTsKKwkJLyogRnJlZSB0aGUgcGFnZXMgYWdhaW4gaW4gb3Jk ZXIgdG8gYXZvaWQgYSBsZWFrLiAqLworCQlidHJfbWFya19mcmVlZF9sZWF2ZXMoaW5kZXgsIG10 ciwgRkFMU0UpOwogCX0KIAogCW10cl9jb21taXQobXRyKTsKCj09PSBtb2RpZmllZCBmaWxlICdz dG9yYWdlL2lubm9iYXNlL3RyeC90cngwdW5kby5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Ry eC90cngwdW5kby5jCXJldmlkOmppbW15LnlhbmdAb3JhY2xlLmNvbS0yMDExMDgyOTA4Mjk1Ny1z eWtvdW93bHI0Y3VoY2lvCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDB1bmRvLmMJcmV2 aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA4MjkwODU1MzgtdTc5emd2eG44a2t3OHV3 bQpAQCAtMSw2ICsxLDYgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMp IDE5OTYsIDIwMDksIElubm9iYXNlIE95LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0 IChjKSAxOTk2LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRz IFJlc2VydmVkLgogCiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgogdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUK QEAgLTkxOCw3ICs5MTgsNyBAQCB0cnhfdW5kb19hZGRfcGFnZSgKIAlwYWdlX25vID0gZnNlZ19h bGxvY19mcmVlX3BhZ2VfZ2VuZXJhbChoZWFkZXJfcGFnZSArIFRSWF9VTkRPX1NFR19IRFIKIAkJ CQkJICAgICAgICsgVFJYX1VORE9fRlNFR19IRUFERVIsCiAJCQkJCSAgICAgICB1bmRvLT50b3Bf cGFnZV9ubyArIDEsIEZTUF9VUCwKLQkJCQkJICAgICAgIFRSVUUsIG10cik7CisJCQkJCSAgICAg ICBUUlVFLCBtdHIsIG10cik7CiAKIAlmaWxfc3BhY2VfcmVsZWFzZV9mcmVlX2V4dGVudHModW5k by0+c3BhY2UsIG5fcmVzZXJ2ZWQpOwogCgpObyBidW5kbGUgKHJlYXNvbjogdXNlbGVzcyBmb3Ig cHVzaCBlbWFpbHMpLg==