From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from f556.i.mail.ru (f556.i.mail.ru [94.100.184.135]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id E72F846970F for ; Thu, 28 Nov 2019 18:26:51 +0300 (MSK) From: =?UTF-8?B?U2VyZ2V5IE9zdGFuZXZpY2g=?= MIME-Version: 1.0 Date: Thu, 28 Nov 2019 18:26:50 +0300 Reply-To: =?UTF-8?B?U2VyZ2V5IE9zdGFuZXZpY2g=?= Message-ID: <1574954810.711214075@f556.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--8QO9imZRcoNFb62jMqcMS9PTMQSAXuS51574954810" In-Reply-To: References: Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH_v5_1/8=5D_refactoring=3A_w?= =?utf-8?q?rap_new_operator_calls_in_triggers?= List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?B?SWx5YSBLb3NhcmV2?= Cc: tarantool-patches@dev.tarantool.org ----ALT--8QO9imZRcoNFb62jMqcMS9PTMQSAXuS51574954810 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CkxHVE0uwqAKU2VyZ29zCgo+V2VkbmVzZGF5LCBOb3ZlbWJlciAyNywgMjAxOSA4OjExIFBNICsw MzowMCBmcm9tIElseWEgS29zYXJldiA8aS5rb3NhcmV2QHRhcmFudG9vbC5vcmc+Ogo+Cj5zdGQg b3BlcmF0b3IgbmV3IG1pZ2h0IHRocm93IHNvIHdlIG5lZWQgdG8gd3JhcCBpdCBpbiB0cmlnZ2Vy cyB0bwo+cHJvdmlkZSBub24tdGhyb3dpbmcgdHJpZ2dlcnMuIEl0IGFsc28gbWVhbnMgYWx0ZXJf c3BhY2VfbW92ZV9pbmRleGVzCj5yZXR1cm5zIGFuIGVycm9yIGNvZGUgbm93LiBJdCdzIHVzYWdl cyBhcmUgdXBkYXRlZC4KPgo+UGFydCBvZiAjNDI0Nwo+LS0tCj7CoHNyYy9ib3gvYWx0ZXIuY2Mg fCAxMzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KPsKg MSBmaWxlIGNoYW5nZWQsIDk1IGluc2VydGlvbnMoKyksIDQwIGRlbGV0aW9ucygtKQo+Cj5kaWZm IC0tZ2l0IGEvc3JjL2JveC9hbHRlci5jYyBiL3NyYy9ib3gvYWx0ZXIuY2MKPmluZGV4IDRhMzI0 MWE3OTYuLmJiNzhhZjZhNWMgMTAwNjQ0Cj4tLS0gYS9zcmMvYm94L2FsdGVyLmNjCj4rKysgYi9z cmMvYm94L2FsdGVyLmNjCj5AQCAtMTgxNCw3ICsxODE0LDcgQEAgb25fY3JlYXRlX3NwYWNlX3Jv bGxiYWNrKHN0cnVjdCB0cmlnZ2VyICp0cmlnZ2VyLCB2b2lkICpldmVudCkKPsKgwqAqIENyZWF0 ZSBNb3ZlSW5kZXggb3BlcmF0aW9uIGZvciBhIHJhbmdlIG9mIGluZGV4ZXMgaW4gYSBzcGFjZQo+ wqDCoCogZm9yIHJhbmdlIFtiZWdpbiwgZW5kKQo+wqDCoCovCj4tdm9pZAo+K2ludAo+wqBhbHRl cl9zcGFjZV9tb3ZlX2luZGV4ZXMoc3RydWN0IGFsdGVyX3NwYWNlICphbHRlciwgdWludDMyX3Qg YmVnaW4sCj7CoAkJCSB1aW50MzJfdCBlbmQpCj7CoHsKPkBAIC0xODM5LDkgKzE4MzksMTcgQEAg YWx0ZXJfc3BhY2VfbW92ZV9pbmRleGVzKHN0cnVjdCBhbHRlcl9zcGFjZSAqYWx0ZXIsIHVpbnQz Ml90IGJlZ2luLAo+wqAJCQkJbmV3X2RlZiA9IGluZGV4X2RlZl9kdXAob2xkX2RlZik7Cj7CoAkJ CQlpbmRleF9kZWZfdXBkYXRlX29wdGlvbmFsaXR5KG5ld19kZWYsCj7CoAkJCQkJCQkgICAgIG1p bl9maWVsZF9jb3VudCk7Cj4tCQkJCSh2b2lkKSBuZXcgTW9kaWZ5SW5kZXgoYWx0ZXIsIG9sZF9p bmRleCwgbmV3X2RlZik7Cj4rCQkJCXRyeSB7Cj4rCQkJCQkodm9pZCkgbmV3IE1vZGlmeUluZGV4 KGFsdGVyLCBvbGRfaW5kZXgsIG5ld19kZWYpOwo+KwkJCQl9IGNhdGNoIChFeGNlcHRpb24gKmUp IHsKPisJCQkJCXJldHVybiAtMTsKPisJCQkJfQo+wqAJCQl9IGVsc2Ugewo+LQkJCQkodm9pZCkg bmV3IE1vdmVJbmRleChhbHRlciwgb2xkX2RlZi0+aWlkKTsKPisJCQkJdHJ5IHsKPisJCQkJCSh2 b2lkKSBuZXcgTW92ZUluZGV4KGFsdGVyLCBvbGRfZGVmLT5paWQpOwo+KwkJCQl9IGNhdGNoIChF eGNlcHRpb24gKmUpIHsKPisJCQkJCXJldHVybiAtMTsKPisJCQkJfQo+wqAJCQl9Cj7CoAkJCWNv bnRpbnVlOwo+wqAJCX0KPkBAIC0xODU2LDExICsxODY0LDIwIEBAIGFsdGVyX3NwYWNlX21vdmVf aW5kZXhlcyhzdHJ1Y3QgYWx0ZXJfc3BhY2UgKmFsdGVyLCB1aW50MzJfdCBiZWdpbiwKPsKgCQlp bmRleF9kZWZfdXBkYXRlX29wdGlvbmFsaXR5KG5ld19kZWYsIG1pbl9maWVsZF9jb3VudCk7Cj7C oAkJYXV0byBndWFyZCA9IG1ha2Vfc2NvcGVkX2d1YXJkKFs9XSB7IGluZGV4X2RlZl9kZWxldGUo bmV3X2RlZik7IH0pOwo+wqAJCWlmICghaW5kZXhfZGVmX2NoYW5nZV9yZXF1aXJlc19yZWJ1aWxk KG9sZF9pbmRleCwgbmV3X2RlZikpCj4tCQkJKHZvaWQpIG5ldyBNb2RpZnlJbmRleChhbHRlciwg b2xkX2luZGV4LCBuZXdfZGVmKTsKPisJCQl0cnkgewo+KwkJCQkodm9pZCkgbmV3IE1vZGlmeUlu ZGV4KGFsdGVyLCBvbGRfaW5kZXgsIG5ld19kZWYpOwo+KwkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiAq ZSkgewo+KwkJCQlyZXR1cm4gLTE7Cj4rCQkJfQo+wqAJCWVsc2UKPi0JCQkodm9pZCkgbmV3IFJl YnVpbGRJbmRleChhbHRlciwgbmV3X2RlZiwgb2xkX2RlZik7Cj4rCQkJdHJ5IHsKPisJCQkJKHZv aWQpIG5ldyBSZWJ1aWxkSW5kZXgoYWx0ZXIsIG5ld19kZWYsIG9sZF9kZWYpOwo+KwkJCX0gY2F0 Y2ggKEV4Y2VwdGlvbiAqZSkgewo+KwkJCQlyZXR1cm4gLTE7Cj4rCQkJfQo+wqAJCWd1YXJkLmlz X2FjdGl2ZSA9IGZhbHNlOwo+wqAJfQo+KwlyZXR1cm4gMDsKPsKgfQo+wqAKPsKgLyoqCj5AQCAt MjMwMSwxNSArMjMxOCwyMSBAQCBvbl9yZXBsYWNlX2RkX3NwYWNlKHN0cnVjdCB0cmlnZ2VyICog LyogdHJpZ2dlciAqLywgdm9pZCAqZXZlbnQpCj7CoAkJCQkJCSAgICAgb2xkX3NwYWNlLT5pbmRl eF9jb3VudCwKPsKgCQkJCQkJICAgICBkZWYtPmZpZWxkcywKPsKgCQkJCQkJICAgICBkZWYtPmZp ZWxkX2NvdW50KTsKPi0JCSh2b2lkKSBuZXcgQ2hlY2tTcGFjZUZvcm1hdChhbHRlcik7Cj4tCQko dm9pZCkgbmV3IE1vZGlmeVNwYWNlKGFsdGVyLCBkZWYpOwo+LQkJKHZvaWQpIG5ldyBSZWJ1aWxk Q2tDb25zdHJhaW50cyhhbHRlcik7Cj4rCQl0cnkgewo+KwkJCSh2b2lkKSBuZXcgQ2hlY2tTcGFj ZUZvcm1hdChhbHRlcik7Cj4rCQkJKHZvaWQpIG5ldyBNb2RpZnlTcGFjZShhbHRlciwgZGVmKTsK PisJCQkodm9pZCkgbmV3IFJlYnVpbGRDa0NvbnN0cmFpbnRzKGFsdGVyKTsKPisJCX0gY2F0Y2gg KEV4Y2VwdGlvbiAqZSkgewo+KwkJCXJldHVybiAtMTsKPisJCX0KPsKgCQlkZWZfZ3VhcmQuaXNf YWN0aXZlID0gZmFsc2U7Cj7CoAkJLyogQ3JlYXRlIE1vdmVJbmRleCBvcHMgZm9yIGFsbCBzcGFj ZSBpbmRleGVzLiAqLwo+LQkJYWx0ZXJfc3BhY2VfbW92ZV9pbmRleGVzKGFsdGVyLCAwLCBvbGRf c3BhY2UtPmluZGV4X2lkX21heCArIDEpOwo+LQkJLyogUmVtZW1iZXIgdG8gdXBkYXRlIHNjaGVt YV92ZXJzaW9uLiAqLwo+LQkJKHZvaWQpIG5ldyBVcGRhdGVTY2hlbWFWZXJzaW9uKGFsdGVyKTsK PisJCWlmIChhbHRlcl9zcGFjZV9tb3ZlX2luZGV4ZXMoYWx0ZXIsIDAsCj4rCQkgICAgb2xkX3Nw YWNlLT5pbmRleF9pZF9tYXggKyAxKSAhPSAwKQo+KwkJCXJldHVybiAtMTsKPsKgCQl0cnkgewo+ KwkJCS8qIFJlbWVtYmVyIHRvIHVwZGF0ZSBzY2hlbWFfdmVyc2lvbi4gKi8KPisJCQkodm9pZCkg bmV3IFVwZGF0ZVNjaGVtYVZlcnNpb24oYWx0ZXIpOwo+wqAJCQlhbHRlcl9zcGFjZV9kbyhzdG10 LCBhbHRlcik7Cj7CoAkJfSBjYXRjaCAoRXhjZXB0aW9uICplKSB7Cj7CoAkJCXJldHVybiAtMTsK PkBAIC0yNDc2LDEzICsyNDk5LDI0IEBAIG9uX3JlcGxhY2VfZGRfaW5kZXgoc3RydWN0IHRyaWdn ZXIgKiAvKiB0cmlnZ2VyICovLCB2b2lkICpldmVudCkKPsKgCQkJCSAgImNhbiBub3QgZHJvcCBh IHJlZmVyZW5jZWQgaW5kZXgiKTsKPsKgCQkJcmV0dXJuIC0xOwo+wqAJCX0KPi0JCWFsdGVyX3Nw YWNlX21vdmVfaW5kZXhlcyhhbHRlciwgMCwgaWlkKTsKPi0JCSh2b2lkKSBuZXcgRHJvcEluZGV4 KGFsdGVyLCBvbGRfaW5kZXgpOwo+KwkJaWYgKGFsdGVyX3NwYWNlX21vdmVfaW5kZXhlcyhhbHRl ciwgMCwgaWlkKSAhPSAwKQo+KwkJCXJldHVybiAtMTsKPisJCXRyeSB7Cj4rCQkJKHZvaWQpIG5l dyBEcm9wSW5kZXgoYWx0ZXIsIG9sZF9pbmRleCk7Cj4rCQl9IGNhdGNoIChFeGNlcHRpb24gKmUp IHsKPisJCQlyZXR1cm4gLTE7Cj4rCQl9Cj7CoAl9Cj7CoAkvKiBDYXNlIDI6IGNyZWF0ZSBhbiBp bmRleCwgaWYgaXQgaXMgc2ltcGx5IGNyZWF0ZWQuICovCj7CoAlpZiAob2xkX2luZGV4ID09IE5V TEwgJiYgbmV3X3R1cGxlICE9IE5VTEwpIHsKPi0JCWFsdGVyX3NwYWNlX21vdmVfaW5kZXhlcyhh bHRlciwgMCwgaWlkKTsKPi0JCUNyZWF0ZUluZGV4ICpjcmVhdGVfaW5kZXggPSBuZXcgQ3JlYXRl SW5kZXgoYWx0ZXIpOwo+KwkJaWYgKGFsdGVyX3NwYWNlX21vdmVfaW5kZXhlcyhhbHRlciwgMCwg aWlkKSkKPisJCQlyZXR1cm4gLTE7Cj4rCQlDcmVhdGVJbmRleCAqY3JlYXRlX2luZGV4Owo+KwkJ dHJ5IHsKPisJCQljcmVhdGVfaW5kZXggPSBuZXcgQ3JlYXRlSW5kZXgoYWx0ZXIpOwo+KwkJfSBj YXRjaCAoRXhjZXB0aW9uICplKSB7Cj4rCQkJcmV0dXJuIC0xOwo+KwkJfQo+wqAJCWNyZWF0ZV9p bmRleC0+bmV3X2luZGV4X2RlZiA9Cj7CoAkJCWluZGV4X2RlZl9uZXdfZnJvbV90dXBsZShuZXdf dHVwbGUsIG9sZF9zcGFjZSk7Cj7CoAkJaWYgKGNyZWF0ZV9pbmRleC0+bmV3X2luZGV4X2RlZiA9 PSBOVUxMKQo+QEAgLTI1MzYsMTAgKzI1NzAsMTYgQEAgb25fcmVwbGFjZV9kZF9pbmRleChzdHJ1 Y3QgdHJpZ2dlciAqIC8qIHRyaWdnZXIgKi8sIHZvaWQgKmV2ZW50KQo+wqAJCQkJCQkgICAgIGRl Zi0+ZmllbGRfY291bnQpOwo+wqAJCWluZGV4X2RlZl91cGRhdGVfb3B0aW9uYWxpdHkoaW5kZXhf ZGVmLAo+wqAJCQkJCSAgICAgYWx0ZXItPm5ld19taW5fZmllbGRfY291bnQpOwo+LQkJYWx0ZXJf c3BhY2VfbW92ZV9pbmRleGVzKGFsdGVyLCAwLCBpaWQpOwo+KwkJaWYgKGFsdGVyX3NwYWNlX21v dmVfaW5kZXhlcyhhbHRlciwgMCwgaWlkKSkKPisJCQlyZXR1cm4gLTE7Cj7CoAkJaWYgKGluZGV4 X2RlZl9jbXAoaW5kZXhfZGVmLCBvbGRfaW5kZXgtPmRlZikgPT0gMCkgewo+wqAJCQkvKiBJbmRl eCBpcyBub3QgY2hhbmdlZCBzbyBqdXN0IG1vdmUgaXQuICovCj4tCQkJKHZvaWQpIG5ldyBNb3Zl SW5kZXgoYWx0ZXIsIG9sZF9pbmRleC0+ZGVmLT5paWQpOwo+KwkJCXRyeSB7Cj4rCQkJCSh2b2lk KSBuZXcgTW92ZUluZGV4KGFsdGVyLCBvbGRfaW5kZXgtPmRlZi0+aWlkKTsKPisJCQl9IGNhdGNo IChFeGNlcHRpb24gKmUpIHsKPisJCQkJcmV0dXJuIC0xOwo+KwkJCX0KPisKPsKgCQl9IGVsc2Ug aWYgKGluZGV4X2RlZl9jaGFuZ2VfcmVxdWlyZXNfcmVidWlsZChvbGRfaW5kZXgsCj7CoAkJCQkJ CQkgICAgIGluZGV4X2RlZikpIHsKPsKgCQkJaWYgKGluZGV4X2lzX3VzZWRfYnlfZmtfY29uc3Ry YWludCgmb2xkX3NwYWNlLT5wYXJlbnRfZmtfY29uc3RyYWludCwKPkBAIC0yNTUyLDggKzI1OTIs MTIgQEAgb25fcmVwbGFjZV9kZF9pbmRleChzdHJ1Y3QgdHJpZ2dlciAqIC8qIHRyaWdnZXIgKi8s IHZvaWQgKmV2ZW50KQo+wqAJCQkvKgo+wqAJCQkgKiBPcGVyYXRpb24gZGVtYW5kcyBhbiBpbmRl eCByZWJ1aWxkLgo+wqAJCQkgKi8KPi0JCQkodm9pZCkgbmV3IFJlYnVpbGRJbmRleChhbHRlciwg aW5kZXhfZGVmLAo+LQkJCQkJCW9sZF9pbmRleC0+ZGVmKTsKPisJCQl0cnkgewo+KwkJCQkodm9p ZCkgbmV3IFJlYnVpbGRJbmRleChhbHRlciwgaW5kZXhfZGVmLAo+KwkJCQkJCQlvbGRfaW5kZXgt PmRlZik7Cj4rCQkJfSBjYXRjaCAoRXhjZXB0aW9uICplKSB7Cj4rCQkJCXJldHVybiAtMTsKPisJ CQl9Cj7CoAkJCWluZGV4X2RlZl9ndWFyZC5pc19hY3RpdmUgPSBmYWxzZTsKPsKgCQl9IGVsc2Ug ewo+wqAJCQkvKgo+QEAgLTI1NjEsOCArMjYwNSwxMiBAQCBvbl9yZXBsYWNlX2RkX2luZGV4KHN0 cnVjdCB0cmlnZ2VyICogLyogdHJpZ2dlciAqLywgdm9pZCAqZXZlbnQpCj7CoAkJCSAqIGJ1dCB3 ZSBzdGlsbCBuZWVkIHRvIGNoZWNrIHRoYXQgdHVwbGVzIHN0b3JlZAo+wqAJCQkgKiBpbiB0aGUg c3BhY2UgY29uZm9ybSB0byB0aGUgbmV3IGZvcm1hdC4KPsKgCQkJICovCj4tCQkJKHZvaWQpIG5l dyBDaGVja1NwYWNlRm9ybWF0KGFsdGVyKTsKPi0JCQkodm9pZCkgbmV3IE1vZGlmeUluZGV4KGFs dGVyLCBvbGRfaW5kZXgsIGluZGV4X2RlZik7Cj4rCQkJdHJ5IHsKPisJCQkJKHZvaWQpIG5ldyBD aGVja1NwYWNlRm9ybWF0KGFsdGVyKTsKPisJCQkJKHZvaWQpIG5ldyBNb2RpZnlJbmRleChhbHRl ciwgb2xkX2luZGV4LCBpbmRleF9kZWYpOwo+KwkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiAqZSkgewo+ KwkJCQlyZXR1cm4gLTE7Cj4rCQkJfQo+wqAJCQlpbmRleF9kZWZfZ3VhcmQuaXNfYWN0aXZlID0g ZmFsc2U7Cj7CoAkJfQo+wqAJfQo+QEAgLTI1NzAsMTEgKzI2MTgsMTIgQEAgb25fcmVwbGFjZV9k ZF9pbmRleChzdHJ1Y3QgdHJpZ2dlciAqIC8qIHRyaWdnZXIgKi8sIHZvaWQgKmV2ZW50KQo+wqAJ ICogQ3JlYXRlIE1vdmVJbmRleCBvcHMgZm9yIHRoZSByZW1haW5pbmcgaW5kZXhlcyBpbiB0aGUK PsKgCSAqIG9sZCBzcGFjZS4KPsKgCSAqLwo+LQlhbHRlcl9zcGFjZV9tb3ZlX2luZGV4ZXMoYWx0 ZXIsIGlpZCArIDEsIG9sZF9zcGFjZS0+aW5kZXhfaWRfbWF4ICsgMSk7Cj4tCSh2b2lkKSBuZXcg TW92ZUNrQ29uc3RyYWludHMoYWx0ZXIpOwo+LQkvKiBBZGQgYW4gb3AgdG8gdXBkYXRlIHNjaGVt YV92ZXJzaW9uIG9uIGNvbW1pdC4gKi8KPi0JKHZvaWQpIG5ldyBVcGRhdGVTY2hlbWFWZXJzaW9u KGFsdGVyKTsKPisJaWYgKGFsdGVyX3NwYWNlX21vdmVfaW5kZXhlcyhhbHRlciwgaWlkICsgMSwg b2xkX3NwYWNlLT5pbmRleF9pZF9tYXggKyAxKSAhPSAwKQo+KwkJcmV0dXJuIC0xOwo+wqAJdHJ5 IHsKPisJCSh2b2lkKSBuZXcgTW92ZUNrQ29uc3RyYWludHMoYWx0ZXIpOwo+KwkJLyogQWRkIGFu IG9wIHRvIHVwZGF0ZSBzY2hlbWFfdmVyc2lvbiBvbiBjb21taXQuICovCj4rCQkodm9pZCkgbmV3 IFVwZGF0ZVNjaGVtYVZlcnNpb24oYWx0ZXIpOwo+wqAJCWFsdGVyX3NwYWNlX2RvKHN0bXQsIGFs dGVyKTsKPsKgCX0gY2F0Y2ggKEV4Y2VwdGlvbiAqZSkgewo+wqAJCXJldHVybiAtMTsKPkBAIC0y NjU0LDE2ICsyNzAzLDE2IEBAIG9uX3JlcGxhY2VfZGRfdHJ1bmNhdGUoc3RydWN0IHRyaWdnZXIg KiAvKiB0cmlnZ2VyICovLCB2b2lkICpldmVudCkKPsKgCQlzdG10LT5yb3ctPmdyb3VwX2lkID0g R1JPVVBfTE9DQUw7Cj7CoAl9Cj7CoAo+LQkvKgo+LQkgKiBSZWNyZWF0ZSBhbGwgaW5kZXhlcyBv ZiB0aGUgdHJ1bmNhdGVkIHNwYWNlLgo+LQkgKi8KPi0JZm9yICh1aW50MzJfdCBpID0gMDsgaSA8 IG9sZF9zcGFjZS0+aW5kZXhfY291bnQ7IGkrKykgewo+LQkJc3RydWN0IGluZGV4ICpvbGRfaW5k ZXggPSBvbGRfc3BhY2UtPmluZGV4W2ldOwo+LQkJKHZvaWQpIG5ldyBUcnVuY2F0ZUluZGV4KGFs dGVyLCBvbGRfaW5kZXgtPmRlZi0+aWlkKTsKPi0JfQo+LQo+LQkodm9pZCkgbmV3IE1vdmVDa0Nv bnN0cmFpbnRzKGFsdGVyKTsKPsKgCXRyeSB7Cj4rCQkvKgo+KwkJICogUmVjcmVhdGUgYWxsIGlu ZGV4ZXMgb2YgdGhlIHRydW5jYXRlZCBzcGFjZS4KPisJCSAqLwo+KwkJZm9yICh1aW50MzJfdCBp ID0gMDsgaSA8IG9sZF9zcGFjZS0+aW5kZXhfY291bnQ7IGkrKykgewo+KwkJCXN0cnVjdCBpbmRl eCAqb2xkX2luZGV4ID0gb2xkX3NwYWNlLT5pbmRleFtpXTsKPisJCQkodm9pZCkgbmV3IFRydW5j YXRlSW5kZXgoYWx0ZXIsIG9sZF9pbmRleC0+ZGVmLT5paWQpOwo+KwkJfQo+Kwo+KwkJKHZvaWQp IG5ldyBNb3ZlQ2tDb25zdHJhaW50cyhhbHRlcik7Cj7CoAkJYWx0ZXJfc3BhY2VfZG8oc3RtdCwg YWx0ZXIpOwo+wqAJfSBjYXRjaCAoRXhjZXB0aW9uICplKSB7Cj7CoAkJcmV0dXJuIC0xOwo+QEAg LTU1NjIsMTMgKzU2MTEsMTkgQEAgb25fcmVwbGFjZV9kZF9mdW5jX2luZGV4KHN0cnVjdCB0cmln Z2VyICp0cmlnZ2VyLCB2b2lkICpldmVudCkKPsKgCWlmIChhbHRlciA9PSBOVUxMKQo+wqAJCXJl dHVybiAtMTsKPsKgCWF1dG8gc2NvcGVkX2d1YXJkID0gbWFrZV9zY29wZWRfZ3VhcmQoWz1dIHth bHRlcl9zcGFjZV9kZWxldGUoYWx0ZXIpO30pOwo+LQlhbHRlcl9zcGFjZV9tb3ZlX2luZGV4ZXMo YWx0ZXIsIDAsIGluZGV4LT5kZWYtPmlpZCk7Cj4tCSh2b2lkKSBuZXcgUmVidWlsZEZ1bmNJbmRl eChhbHRlciwgaW5kZXgtPmRlZiwgZnVuYyk7Cj4tCWFsdGVyX3NwYWNlX21vdmVfaW5kZXhlcyhh bHRlciwgaW5kZXgtPmRlZi0+aWlkICsgMSwKPi0JCQkJIHNwYWNlLT5pbmRleF9pZF9tYXggKyAx KTsKPi0JKHZvaWQpIG5ldyBNb3ZlQ2tDb25zdHJhaW50cyhhbHRlcik7Cj4tCSh2b2lkKSBuZXcg VXBkYXRlU2NoZW1hVmVyc2lvbihhbHRlcik7Cj4rCWlmIChhbHRlcl9zcGFjZV9tb3ZlX2luZGV4 ZXMoYWx0ZXIsIDAsIGluZGV4LT5kZWYtPmlpZCkgIT0gMCkKPisJCXJldHVybiAtMTsKPsKgCXRy eSB7Cj4rCQkodm9pZCkgbmV3IFJlYnVpbGRGdW5jSW5kZXgoYWx0ZXIsIGluZGV4LT5kZWYsIGZ1 bmMpOwo+Kwl9IGNhdGNoIChFeGNlcHRpb24gKmUpIHsKPisJCXJldHVybiAtMTsKPisJfQo+Kwlp ZiAoYWx0ZXJfc3BhY2VfbW92ZV9pbmRleGVzKGFsdGVyLCBpbmRleC0+ZGVmLT5paWQgKyAxLAo+ KwkJCQkgICAgIHNwYWNlLT5pbmRleF9pZF9tYXggKyAxKSAhPSAwKQo+KwkJcmV0dXJuIC0xOwo+ Kwl0cnkgewo+KwkJKHZvaWQpIG5ldyBNb3ZlQ2tDb25zdHJhaW50cyhhbHRlcik7Cj4rCQkodm9p ZCkgbmV3IFVwZGF0ZVNjaGVtYVZlcnNpb24oYWx0ZXIpOwo+wqAJCWFsdGVyX3NwYWNlX2RvKHN0 bXQsIGFsdGVyKTsKPsKgCX0gY2F0Y2ggKEV4Y2VwdGlvbiAqZSkgewo+wqAJCXJldHVybiAtMTsK Pi0tIAo+Mi4xNy4xCj4KCgrCoCDCoCDCoAo= ----ALT--8QO9imZRcoNFb62jMqcMS9PTMQSAXuS51574954810 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxicj5MR1RNLiZuYnNwOzxicj5TZXJnb3M8YnI+PGJyPjxibG9ja3F1b3Rl IHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRp bmc6MCAwIDAgMTBweDsiPgoJV2VkbmVzZGF5LCBOb3ZlbWJlciAyNywgMjAxOSA4OjExIFBNICsw MzowMCBmcm9tIElseWEgS29zYXJldiAmbHQ7aS5rb3NhcmV2QHRhcmFudG9vbC5vcmcmZ3Q7Ojxi cj4KCTxicj4KCTxkaXYgaWQ9IiI+CgoKCgoKCjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFk bXNnLW1zZyI+Cgk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwvc3R5bGU+CiAJPGRpdj4KCQkKCQkK ICAgICAgICAgICAgPGRpdiBpZD0ic3R5bGVfMTU3NDg3NDY5MTE0MjQ2MjIxODFfQk9EWSI+c3Rk IG9wZXJhdG9yIG5ldyBtaWdodCB0aHJvdyBzbyB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gdHJpZ2dl cnMgdG88YnI+CnByb3ZpZGUgbm9uLXRocm93aW5nIHRyaWdnZXJzLiBJdCBhbHNvIG1lYW5zIGFs dGVyX3NwYWNlX21vdmVfaW5kZXhlczxicj4KcmV0dXJucyBhbiBlcnJvciBjb2RlIG5vdy4gSXQn cyB1c2FnZXMgYXJlIHVwZGF0ZWQuPGJyPgo8YnI+ClBhcnQgb2YgIzQyNDc8YnI+Ci0tLTxicj4K Jm5ic3A7c3JjL2JveC9hbHRlci5jYyB8IDEzNSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLTxicj4KJm5ic3A7MSBmaWxlIGNoYW5nZWQsIDk1IGluc2VydGlv bnMoKyksIDQwIGRlbGV0aW9ucygtKTxicj4KPGJyPgpkaWZmIC0tZ2l0IGEvc3JjL2JveC9hbHRl ci5jYyBiL3NyYy9ib3gvYWx0ZXIuY2M8YnI+CmluZGV4IDRhMzI0MWE3OTYuLmJiNzhhZjZhNWMg MTAwNjQ0PGJyPgotLS0gYS9zcmMvYm94L2FsdGVyLmNjPGJyPgorKysgYi9zcmMvYm94L2FsdGVy LmNjPGJyPgpAQCAtMTgxNCw3ICsxODE0LDcgQEAgb25fY3JlYXRlX3NwYWNlX3JvbGxiYWNrKHN0 cnVjdCB0cmlnZ2VyICp0cmlnZ2VyLCB2b2lkICpldmVudCk8YnI+CiZuYnNwOyZuYnNwOyogQ3Jl YXRlIE1vdmVJbmRleCBvcGVyYXRpb24gZm9yIGEgcmFuZ2Ugb2YgaW5kZXhlcyBpbiBhIHNwYWNl PGJyPgombmJzcDsmbmJzcDsqIGZvciByYW5nZSBbYmVnaW4sIGVuZCk8YnI+CiZuYnNwOyZuYnNw OyovPGJyPgotdm9pZDxicj4KK2ludDxicj4KJm5ic3A7YWx0ZXJfc3BhY2VfbW92ZV9pbmRleGVz KHN0cnVjdCBhbHRlcl9zcGFjZSAqYWx0ZXIsIHVpbnQzMl90IGJlZ2luLDxicj4KJm5ic3A7CQkJ IHVpbnQzMl90IGVuZCk8YnI+CiZuYnNwO3s8YnI+CkBAIC0xODM5LDkgKzE4MzksMTcgQEAgYWx0 ZXJfc3BhY2VfbW92ZV9pbmRleGVzKHN0cnVjdCBhbHRlcl9zcGFjZSAqYWx0ZXIsIHVpbnQzMl90 IGJlZ2luLDxicj4KJm5ic3A7CQkJCW5ld19kZWYgPSBpbmRleF9kZWZfZHVwKG9sZF9kZWYpOzxi cj4KJm5ic3A7CQkJCWluZGV4X2RlZl91cGRhdGVfb3B0aW9uYWxpdHkobmV3X2RlZiw8YnI+CiZu YnNwOwkJCQkJCQkgICAgIG1pbl9maWVsZF9jb3VudCk7PGJyPgotCQkJCSh2b2lkKSBuZXcgTW9k aWZ5SW5kZXgoYWx0ZXIsIG9sZF9pbmRleCwgbmV3X2RlZik7PGJyPgorCQkJCXRyeSB7PGJyPgor CQkJCQkodm9pZCkgbmV3IE1vZGlmeUluZGV4KGFsdGVyLCBvbGRfaW5kZXgsIG5ld19kZWYpOzxi cj4KKwkJCQl9IGNhdGNoIChFeGNlcHRpb24gKmUpIHs8YnI+CisJCQkJCXJldHVybiAtMTs8YnI+ CisJCQkJfTxicj4KJm5ic3A7CQkJfSBlbHNlIHs8YnI+Ci0JCQkJKHZvaWQpIG5ldyBNb3ZlSW5k ZXgoYWx0ZXIsIG9sZF9kZWYtJmd0O2lpZCk7PGJyPgorCQkJCXRyeSB7PGJyPgorCQkJCQkodm9p ZCkgbmV3IE1vdmVJbmRleChhbHRlciwgb2xkX2RlZi0mZ3Q7aWlkKTs8YnI+CisJCQkJfSBjYXRj aCAoRXhjZXB0aW9uICplKSB7PGJyPgorCQkJCQlyZXR1cm4gLTE7PGJyPgorCQkJCX08YnI+CiZu YnNwOwkJCX08YnI+CiZuYnNwOwkJCWNvbnRpbnVlOzxicj4KJm5ic3A7CQl9PGJyPgpAQCAtMTg1 NiwxMSArMTg2NCwyMCBAQCBhbHRlcl9zcGFjZV9tb3ZlX2luZGV4ZXMoc3RydWN0IGFsdGVyX3Nw YWNlICphbHRlciwgdWludDMyX3QgYmVnaW4sPGJyPgombmJzcDsJCWluZGV4X2RlZl91cGRhdGVf b3B0aW9uYWxpdHkobmV3X2RlZiwgbWluX2ZpZWxkX2NvdW50KTs8YnI+CiZuYnNwOwkJYXV0byBn dWFyZCA9IG1ha2Vfc2NvcGVkX2d1YXJkKFs9XSB7IGluZGV4X2RlZl9kZWxldGUobmV3X2RlZik7 IH0pOzxicj4KJm5ic3A7CQlpZiAoIWluZGV4X2RlZl9jaGFuZ2VfcmVxdWlyZXNfcmVidWlsZChv bGRfaW5kZXgsIG5ld19kZWYpKTxicj4KLQkJCSh2b2lkKSBuZXcgTW9kaWZ5SW5kZXgoYWx0ZXIs IG9sZF9pbmRleCwgbmV3X2RlZik7PGJyPgorCQkJdHJ5IHs8YnI+CisJCQkJKHZvaWQpIG5ldyBN b2RpZnlJbmRleChhbHRlciwgb2xkX2luZGV4LCBuZXdfZGVmKTs8YnI+CisJCQl9IGNhdGNoIChF eGNlcHRpb24gKmUpIHs8YnI+CisJCQkJcmV0dXJuIC0xOzxicj4KKwkJCX08YnI+CiZuYnNwOwkJ ZWxzZTxicj4KLQkJCSh2b2lkKSBuZXcgUmVidWlsZEluZGV4KGFsdGVyLCBuZXdfZGVmLCBvbGRf ZGVmKTs8YnI+CisJCQl0cnkgezxicj4KKwkJCQkodm9pZCkgbmV3IFJlYnVpbGRJbmRleChhbHRl ciwgbmV3X2RlZiwgb2xkX2RlZik7PGJyPgorCQkJfSBjYXRjaCAoRXhjZXB0aW9uICplKSB7PGJy PgorCQkJCXJldHVybiAtMTs8YnI+CisJCQl9PGJyPgombmJzcDsJCWd1YXJkLmlzX2FjdGl2ZSA9 IGZhbHNlOzxicj4KJm5ic3A7CX08YnI+CisJcmV0dXJuIDA7PGJyPgombmJzcDt9PGJyPgombmJz cDs8YnI+CiZuYnNwOy8qKjxicj4KQEAgLTIzMDEsMTUgKzIzMTgsMjEgQEAgb25fcmVwbGFjZV9k ZF9zcGFjZShzdHJ1Y3QgdHJpZ2dlciAqIC8qIHRyaWdnZXIgKi8sIHZvaWQgKmV2ZW50KTxicj4K Jm5ic3A7CQkJCQkJICAgICBvbGRfc3BhY2UtJmd0O2luZGV4X2NvdW50LDxicj4KJm5ic3A7CQkJ CQkJICAgICBkZWYtJmd0O2ZpZWxkcyw8YnI+CiZuYnNwOwkJCQkJCSAgICAgZGVmLSZndDtmaWVs ZF9jb3VudCk7PGJyPgotCQkodm9pZCkgbmV3IENoZWNrU3BhY2VGb3JtYXQoYWx0ZXIpOzxicj4K LQkJKHZvaWQpIG5ldyBNb2RpZnlTcGFjZShhbHRlciwgZGVmKTs8YnI+Ci0JCSh2b2lkKSBuZXcg UmVidWlsZENrQ29uc3RyYWludHMoYWx0ZXIpOzxicj4KKwkJdHJ5IHs8YnI+CisJCQkodm9pZCkg bmV3IENoZWNrU3BhY2VGb3JtYXQoYWx0ZXIpOzxicj4KKwkJCSh2b2lkKSBuZXcgTW9kaWZ5U3Bh Y2UoYWx0ZXIsIGRlZik7PGJyPgorCQkJKHZvaWQpIG5ldyBSZWJ1aWxkQ2tDb25zdHJhaW50cyhh bHRlcik7PGJyPgorCQl9IGNhdGNoIChFeGNlcHRpb24gKmUpIHs8YnI+CisJCQlyZXR1cm4gLTE7 PGJyPgorCQl9PGJyPgombmJzcDsJCWRlZl9ndWFyZC5pc19hY3RpdmUgPSBmYWxzZTs8YnI+CiZu YnNwOwkJLyogQ3JlYXRlIE1vdmVJbmRleCBvcHMgZm9yIGFsbCBzcGFjZSBpbmRleGVzLiAqLzxi cj4KLQkJYWx0ZXJfc3BhY2VfbW92ZV9pbmRleGVzKGFsdGVyLCAwLCBvbGRfc3BhY2UtJmd0O2lu ZGV4X2lkX21heCArIDEpOzxicj4KLQkJLyogUmVtZW1iZXIgdG8gdXBkYXRlIHNjaGVtYV92ZXJz aW9uLiAqLzxicj4KLQkJKHZvaWQpIG5ldyBVcGRhdGVTY2hlbWFWZXJzaW9uKGFsdGVyKTs8YnI+ CisJCWlmIChhbHRlcl9zcGFjZV9tb3ZlX2luZGV4ZXMoYWx0ZXIsIDAsPGJyPgorCQkgICAgb2xk X3NwYWNlLSZndDtpbmRleF9pZF9tYXggKyAxKSAhPSAwKTxicj4KKwkJCXJldHVybiAtMTs8YnI+ CiZuYnNwOwkJdHJ5IHs8YnI+CisJCQkvKiBSZW1lbWJlciB0byB1cGRhdGUgc2NoZW1hX3ZlcnNp b24uICovPGJyPgorCQkJKHZvaWQpIG5ldyBVcGRhdGVTY2hlbWFWZXJzaW9uKGFsdGVyKTs8YnI+ CiZuYnNwOwkJCWFsdGVyX3NwYWNlX2RvKHN0bXQsIGFsdGVyKTs8YnI+CiZuYnNwOwkJfSBjYXRj aCAoRXhjZXB0aW9uICplKSB7PGJyPgombmJzcDsJCQlyZXR1cm4gLTE7PGJyPgpAQCAtMjQ3Niwx MyArMjQ5OSwyNCBAQCBvbl9yZXBsYWNlX2RkX2luZGV4KHN0cnVjdCB0cmlnZ2VyICogLyogdHJp Z2dlciAqLywgdm9pZCAqZXZlbnQpPGJyPgombmJzcDsJCQkJICAiY2FuIG5vdCBkcm9wIGEgcmVm ZXJlbmNlZCBpbmRleCIpOzxicj4KJm5ic3A7CQkJcmV0dXJuIC0xOzxicj4KJm5ic3A7CQl9PGJy PgotCQlhbHRlcl9zcGFjZV9tb3ZlX2luZGV4ZXMoYWx0ZXIsIDAsIGlpZCk7PGJyPgotCQkodm9p ZCkgbmV3IERyb3BJbmRleChhbHRlciwgb2xkX2luZGV4KTs8YnI+CisJCWlmIChhbHRlcl9zcGFj ZV9tb3ZlX2luZGV4ZXMoYWx0ZXIsIDAsIGlpZCkgIT0gMCk8YnI+CisJCQlyZXR1cm4gLTE7PGJy PgorCQl0cnkgezxicj4KKwkJCSh2b2lkKSBuZXcgRHJvcEluZGV4KGFsdGVyLCBvbGRfaW5kZXgp Ozxicj4KKwkJfSBjYXRjaCAoRXhjZXB0aW9uICplKSB7PGJyPgorCQkJcmV0dXJuIC0xOzxicj4K KwkJfTxicj4KJm5ic3A7CX08YnI+CiZuYnNwOwkvKiBDYXNlIDI6IGNyZWF0ZSBhbiBpbmRleCwg aWYgaXQgaXMgc2ltcGx5IGNyZWF0ZWQuICovPGJyPgombmJzcDsJaWYgKG9sZF9pbmRleCA9PSBO VUxMICZhbXA7JmFtcDsgbmV3X3R1cGxlICE9IE5VTEwpIHs8YnI+Ci0JCWFsdGVyX3NwYWNlX21v dmVfaW5kZXhlcyhhbHRlciwgMCwgaWlkKTs8YnI+Ci0JCUNyZWF0ZUluZGV4ICpjcmVhdGVfaW5k ZXggPSBuZXcgQ3JlYXRlSW5kZXgoYWx0ZXIpOzxicj4KKwkJaWYgKGFsdGVyX3NwYWNlX21vdmVf aW5kZXhlcyhhbHRlciwgMCwgaWlkKSk8YnI+CisJCQlyZXR1cm4gLTE7PGJyPgorCQlDcmVhdGVJ bmRleCAqY3JlYXRlX2luZGV4Ozxicj4KKwkJdHJ5IHs8YnI+CisJCQljcmVhdGVfaW5kZXggPSBu ZXcgQ3JlYXRlSW5kZXgoYWx0ZXIpOzxicj4KKwkJfSBjYXRjaCAoRXhjZXB0aW9uICplKSB7PGJy PgorCQkJcmV0dXJuIC0xOzxicj4KKwkJfTxicj4KJm5ic3A7CQljcmVhdGVfaW5kZXgtJmd0O25l d19pbmRleF9kZWYgPTxicj4KJm5ic3A7CQkJaW5kZXhfZGVmX25ld19mcm9tX3R1cGxlKG5ld190 dXBsZSwgb2xkX3NwYWNlKTs8YnI+CiZuYnNwOwkJaWYgKGNyZWF0ZV9pbmRleC0mZ3Q7bmV3X2lu ZGV4X2RlZiA9PSBOVUxMKTxicj4KQEAgLTI1MzYsMTAgKzI1NzAsMTYgQEAgb25fcmVwbGFjZV9k ZF9pbmRleChzdHJ1Y3QgdHJpZ2dlciAqIC8qIHRyaWdnZXIgKi8sIHZvaWQgKmV2ZW50KTxicj4K Jm5ic3A7CQkJCQkJICAgICBkZWYtJmd0O2ZpZWxkX2NvdW50KTs8YnI+CiZuYnNwOwkJaW5kZXhf ZGVmX3VwZGF0ZV9vcHRpb25hbGl0eShpbmRleF9kZWYsPGJyPgombmJzcDsJCQkJCSAgICAgYWx0 ZXItJmd0O25ld19taW5fZmllbGRfY291bnQpOzxicj4KLQkJYWx0ZXJfc3BhY2VfbW92ZV9pbmRl eGVzKGFsdGVyLCAwLCBpaWQpOzxicj4KKwkJaWYgKGFsdGVyX3NwYWNlX21vdmVfaW5kZXhlcyhh bHRlciwgMCwgaWlkKSk8YnI+CisJCQlyZXR1cm4gLTE7PGJyPgombmJzcDsJCWlmIChpbmRleF9k ZWZfY21wKGluZGV4X2RlZiwgb2xkX2luZGV4LSZndDtkZWYpID09IDApIHs8YnI+CiZuYnNwOwkJ CS8qIEluZGV4IGlzIG5vdCBjaGFuZ2VkIHNvIGp1c3QgbW92ZSBpdC4gKi88YnI+Ci0JCQkodm9p ZCkgbmV3IE1vdmVJbmRleChhbHRlciwgb2xkX2luZGV4LSZndDtkZWYtJmd0O2lpZCk7PGJyPgor CQkJdHJ5IHs8YnI+CisJCQkJKHZvaWQpIG5ldyBNb3ZlSW5kZXgoYWx0ZXIsIG9sZF9pbmRleC0m Z3Q7ZGVmLSZndDtpaWQpOzxicj4KKwkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiAqZSkgezxicj4KKwkJ CQlyZXR1cm4gLTE7PGJyPgorCQkJfTxicj4KKzxicj4KJm5ic3A7CQl9IGVsc2UgaWYgKGluZGV4 X2RlZl9jaGFuZ2VfcmVxdWlyZXNfcmVidWlsZChvbGRfaW5kZXgsPGJyPgombmJzcDsJCQkJCQkJ ICAgICBpbmRleF9kZWYpKSB7PGJyPgombmJzcDsJCQlpZiAoaW5kZXhfaXNfdXNlZF9ieV9ma19j b25zdHJhaW50KCZhbXA7b2xkX3NwYWNlLSZndDtwYXJlbnRfZmtfY29uc3RyYWludCw8YnI+CkBA IC0yNTUyLDggKzI1OTIsMTIgQEAgb25fcmVwbGFjZV9kZF9pbmRleChzdHJ1Y3QgdHJpZ2dlciAq IC8qIHRyaWdnZXIgKi8sIHZvaWQgKmV2ZW50KTxicj4KJm5ic3A7CQkJLyo8YnI+CiZuYnNwOwkJ CSAqIE9wZXJhdGlvbiBkZW1hbmRzIGFuIGluZGV4IHJlYnVpbGQuPGJyPgombmJzcDsJCQkgKi88 YnI+Ci0JCQkodm9pZCkgbmV3IFJlYnVpbGRJbmRleChhbHRlciwgaW5kZXhfZGVmLDxicj4KLQkJ CQkJCW9sZF9pbmRleC0mZ3Q7ZGVmKTs8YnI+CisJCQl0cnkgezxicj4KKwkJCQkodm9pZCkgbmV3 IFJlYnVpbGRJbmRleChhbHRlciwgaW5kZXhfZGVmLDxicj4KKwkJCQkJCQlvbGRfaW5kZXgtJmd0 O2RlZik7PGJyPgorCQkJfSBjYXRjaCAoRXhjZXB0aW9uICplKSB7PGJyPgorCQkJCXJldHVybiAt MTs8YnI+CisJCQl9PGJyPgombmJzcDsJCQlpbmRleF9kZWZfZ3VhcmQuaXNfYWN0aXZlID0gZmFs c2U7PGJyPgombmJzcDsJCX0gZWxzZSB7PGJyPgombmJzcDsJCQkvKjxicj4KQEAgLTI1NjEsOCAr MjYwNSwxMiBAQCBvbl9yZXBsYWNlX2RkX2luZGV4KHN0cnVjdCB0cmlnZ2VyICogLyogdHJpZ2dl ciAqLywgdm9pZCAqZXZlbnQpPGJyPgombmJzcDsJCQkgKiBidXQgd2Ugc3RpbGwgbmVlZCB0byBj aGVjayB0aGF0IHR1cGxlcyBzdG9yZWQ8YnI+CiZuYnNwOwkJCSAqIGluIHRoZSBzcGFjZSBjb25m b3JtIHRvIHRoZSBuZXcgZm9ybWF0Ljxicj4KJm5ic3A7CQkJICovPGJyPgotCQkJKHZvaWQpIG5l dyBDaGVja1NwYWNlRm9ybWF0KGFsdGVyKTs8YnI+Ci0JCQkodm9pZCkgbmV3IE1vZGlmeUluZGV4 KGFsdGVyLCBvbGRfaW5kZXgsIGluZGV4X2RlZik7PGJyPgorCQkJdHJ5IHs8YnI+CisJCQkJKHZv aWQpIG5ldyBDaGVja1NwYWNlRm9ybWF0KGFsdGVyKTs8YnI+CisJCQkJKHZvaWQpIG5ldyBNb2Rp ZnlJbmRleChhbHRlciwgb2xkX2luZGV4LCBpbmRleF9kZWYpOzxicj4KKwkJCX0gY2F0Y2ggKEV4 Y2VwdGlvbiAqZSkgezxicj4KKwkJCQlyZXR1cm4gLTE7PGJyPgorCQkJfTxicj4KJm5ic3A7CQkJ aW5kZXhfZGVmX2d1YXJkLmlzX2FjdGl2ZSA9IGZhbHNlOzxicj4KJm5ic3A7CQl9PGJyPgombmJz cDsJfTxicj4KQEAgLTI1NzAsMTEgKzI2MTgsMTIgQEAgb25fcmVwbGFjZV9kZF9pbmRleChzdHJ1 Y3QgdHJpZ2dlciAqIC8qIHRyaWdnZXIgKi8sIHZvaWQgKmV2ZW50KTxicj4KJm5ic3A7CSAqIENy ZWF0ZSBNb3ZlSW5kZXggb3BzIGZvciB0aGUgcmVtYWluaW5nIGluZGV4ZXMgaW4gdGhlPGJyPgom bmJzcDsJICogb2xkIHNwYWNlLjxicj4KJm5ic3A7CSAqLzxicj4KLQlhbHRlcl9zcGFjZV9tb3Zl X2luZGV4ZXMoYWx0ZXIsIGlpZCArIDEsIG9sZF9zcGFjZS0mZ3Q7aW5kZXhfaWRfbWF4ICsgMSk7 PGJyPgotCSh2b2lkKSBuZXcgTW92ZUNrQ29uc3RyYWludHMoYWx0ZXIpOzxicj4KLQkvKiBBZGQg YW4gb3AgdG8gdXBkYXRlIHNjaGVtYV92ZXJzaW9uIG9uIGNvbW1pdC4gKi88YnI+Ci0JKHZvaWQp IG5ldyBVcGRhdGVTY2hlbWFWZXJzaW9uKGFsdGVyKTs8YnI+CisJaWYgKGFsdGVyX3NwYWNlX21v dmVfaW5kZXhlcyhhbHRlciwgaWlkICsgMSwgb2xkX3NwYWNlLSZndDtpbmRleF9pZF9tYXggKyAx KSAhPSAwKTxicj4KKwkJcmV0dXJuIC0xOzxicj4KJm5ic3A7CXRyeSB7PGJyPgorCQkodm9pZCkg bmV3IE1vdmVDa0NvbnN0cmFpbnRzKGFsdGVyKTs8YnI+CisJCS8qIEFkZCBhbiBvcCB0byB1cGRh dGUgc2NoZW1hX3ZlcnNpb24gb24gY29tbWl0LiAqLzxicj4KKwkJKHZvaWQpIG5ldyBVcGRhdGVT Y2hlbWFWZXJzaW9uKGFsdGVyKTs8YnI+CiZuYnNwOwkJYWx0ZXJfc3BhY2VfZG8oc3RtdCwgYWx0 ZXIpOzxicj4KJm5ic3A7CX0gY2F0Y2ggKEV4Y2VwdGlvbiAqZSkgezxicj4KJm5ic3A7CQlyZXR1 cm4gLTE7PGJyPgpAQCAtMjY1NCwxNiArMjcwMywxNiBAQCBvbl9yZXBsYWNlX2RkX3RydW5jYXRl KHN0cnVjdCB0cmlnZ2VyICogLyogdHJpZ2dlciAqLywgdm9pZCAqZXZlbnQpPGJyPgombmJzcDsJ CXN0bXQtJmd0O3Jvdy0mZ3Q7Z3JvdXBfaWQgPSBHUk9VUF9MT0NBTDs8YnI+CiZuYnNwOwl9PGJy PgombmJzcDs8YnI+Ci0JLyo8YnI+Ci0JICogUmVjcmVhdGUgYWxsIGluZGV4ZXMgb2YgdGhlIHRy dW5jYXRlZCBzcGFjZS48YnI+Ci0JICovPGJyPgotCWZvciAodWludDMyX3QgaSA9IDA7IGkgJmx0 OyBvbGRfc3BhY2UtJmd0O2luZGV4X2NvdW50OyBpKyspIHs8YnI+Ci0JCXN0cnVjdCBpbmRleCAq b2xkX2luZGV4ID0gb2xkX3NwYWNlLSZndDtpbmRleFtpXTs8YnI+Ci0JCSh2b2lkKSBuZXcgVHJ1 bmNhdGVJbmRleChhbHRlciwgb2xkX2luZGV4LSZndDtkZWYtJmd0O2lpZCk7PGJyPgotCX08YnI+ Ci08YnI+Ci0JKHZvaWQpIG5ldyBNb3ZlQ2tDb25zdHJhaW50cyhhbHRlcik7PGJyPgombmJzcDsJ dHJ5IHs8YnI+CisJCS8qPGJyPgorCQkgKiBSZWNyZWF0ZSBhbGwgaW5kZXhlcyBvZiB0aGUgdHJ1 bmNhdGVkIHNwYWNlLjxicj4KKwkJICovPGJyPgorCQlmb3IgKHVpbnQzMl90IGkgPSAwOyBpICZs dDsgb2xkX3NwYWNlLSZndDtpbmRleF9jb3VudDsgaSsrKSB7PGJyPgorCQkJc3RydWN0IGluZGV4 ICpvbGRfaW5kZXggPSBvbGRfc3BhY2UtJmd0O2luZGV4W2ldOzxicj4KKwkJCSh2b2lkKSBuZXcg VHJ1bmNhdGVJbmRleChhbHRlciwgb2xkX2luZGV4LSZndDtkZWYtJmd0O2lpZCk7PGJyPgorCQl9 PGJyPgorPGJyPgorCQkodm9pZCkgbmV3IE1vdmVDa0NvbnN0cmFpbnRzKGFsdGVyKTs8YnI+CiZu YnNwOwkJYWx0ZXJfc3BhY2VfZG8oc3RtdCwgYWx0ZXIpOzxicj4KJm5ic3A7CX0gY2F0Y2ggKEV4 Y2VwdGlvbiAqZSkgezxicj4KJm5ic3A7CQlyZXR1cm4gLTE7PGJyPgpAQCAtNTU2MiwxMyArNTYx MSwxOSBAQCBvbl9yZXBsYWNlX2RkX2Z1bmNfaW5kZXgoc3RydWN0IHRyaWdnZXIgKnRyaWdnZXIs IHZvaWQgKmV2ZW50KTxicj4KJm5ic3A7CWlmIChhbHRlciA9PSBOVUxMKTxicj4KJm5ic3A7CQly ZXR1cm4gLTE7PGJyPgombmJzcDsJYXV0byBzY29wZWRfZ3VhcmQgPSBtYWtlX3Njb3BlZF9ndWFy ZChbPV0ge2FsdGVyX3NwYWNlX2RlbGV0ZShhbHRlcik7fSk7PGJyPgotCWFsdGVyX3NwYWNlX21v dmVfaW5kZXhlcyhhbHRlciwgMCwgaW5kZXgtJmd0O2RlZi0mZ3Q7aWlkKTs8YnI+Ci0JKHZvaWQp IG5ldyBSZWJ1aWxkRnVuY0luZGV4KGFsdGVyLCBpbmRleC0mZ3Q7ZGVmLCBmdW5jKTs8YnI+Ci0J YWx0ZXJfc3BhY2VfbW92ZV9pbmRleGVzKGFsdGVyLCBpbmRleC0mZ3Q7ZGVmLSZndDtpaWQgKyAx LDxicj4KLQkJCQkgc3BhY2UtJmd0O2luZGV4X2lkX21heCArIDEpOzxicj4KLQkodm9pZCkgbmV3 IE1vdmVDa0NvbnN0cmFpbnRzKGFsdGVyKTs8YnI+Ci0JKHZvaWQpIG5ldyBVcGRhdGVTY2hlbWFW ZXJzaW9uKGFsdGVyKTs8YnI+CisJaWYgKGFsdGVyX3NwYWNlX21vdmVfaW5kZXhlcyhhbHRlciwg MCwgaW5kZXgtJmd0O2RlZi0mZ3Q7aWlkKSAhPSAwKTxicj4KKwkJcmV0dXJuIC0xOzxicj4KJm5i c3A7CXRyeSB7PGJyPgorCQkodm9pZCkgbmV3IFJlYnVpbGRGdW5jSW5kZXgoYWx0ZXIsIGluZGV4 LSZndDtkZWYsIGZ1bmMpOzxicj4KKwl9IGNhdGNoIChFeGNlcHRpb24gKmUpIHs8YnI+CisJCXJl dHVybiAtMTs8YnI+CisJfTxicj4KKwlpZiAoYWx0ZXJfc3BhY2VfbW92ZV9pbmRleGVzKGFsdGVy LCBpbmRleC0mZ3Q7ZGVmLSZndDtpaWQgKyAxLDxicj4KKwkJCQkgICAgIHNwYWNlLSZndDtpbmRl eF9pZF9tYXggKyAxKSAhPSAwKTxicj4KKwkJcmV0dXJuIC0xOzxicj4KKwl0cnkgezxicj4KKwkJ KHZvaWQpIG5ldyBNb3ZlQ2tDb25zdHJhaW50cyhhbHRlcik7PGJyPgorCQkodm9pZCkgbmV3IFVw ZGF0ZVNjaGVtYVZlcnNpb24oYWx0ZXIpOzxicj4KJm5ic3A7CQlhbHRlcl9zcGFjZV9kbyhzdG10 LCBhbHRlcik7PGJyPgombmJzcDsJfSBjYXRjaCAoRXhjZXB0aW9uICplKSB7PGJyPgombmJzcDsJ CXJldHVybiAtMTs8YnI+Ci0tIDxicj4KMi4xNy4xPGJyPgo8YnI+CjwvZGl2PgogICAgICAgICAg ICAKICAgICAgICAKCQkKCTwvZGl2PgoKCQo8L2Rpdj4KCgo8L2Rpdj4KPC9ibG9ja3F1b3RlPgo8 YnI+Cjxicj4mbmJzcDsgJm5ic3A7ICZuYnNwOzxicj48L0JPRFk+PC9IVE1MPgo= ----ALT--8QO9imZRcoNFb62jMqcMS9PTMQSAXuS51574954810--