From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTP id 2A007251D3 for ; Fri, 25 May 2018 12:19:43 -0400 (EDT) Received: from turing.freelists.org ([127.0.0.1]) by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 09W5XLnn5wcE for ; Fri, 25 May 2018 12:19:43 -0400 (EDT) Received: from f401.i.mail.ru (f401.i.mail.ru [185.5.136.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id EEE84251CB for ; Fri, 25 May 2018 12:19:41 -0400 (EDT) From: =?UTF-8?B?SXZhbiBLb3B0ZWxvdg==?= Subject: [tarantool-patches] =?UTF-8?B?UmU6IFtQQVRDSF0gc3FsOiBhZGQgaW5kZXhfZGVmIHRvIHN0cnVjdCBJbmRl?= =?UTF-8?B?eA==?= MIME-Version: 1.0 Date: Fri, 25 May 2018 19:19:38 +0300 Message-ID: <1527265178.779881612@f401.i.mail.ru> Content-Type: multipart/mixed; boundary="----A0xNJPsnoIfNexmYmsv6OPyvtiNBT4a3-016AIHbRkUl7M2G7-1527265178" In-Reply-To: <23542530-7a35-0cf5-9c6b-7d60afdb4389@tarantool.org> References: <20180522160320.83110-1-ivan.koptelov@tarantool.org> <23542530-7a35-0cf5-9c6b-7d60afdb4389@tarantool.org> Sender: tarantool-patches-bounce@freelists.org Errors-to: tarantool-patches-bounce@freelists.org Reply-To: tarantool-patches@freelists.org List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: tarantool-patches List-subscribe: List-owner: List-post: List-archive: To: tarantool-patches@freelists.org Cc: =?UTF-8?B?VmxhZGlzbGF2IFNocGlsZXZveQ==?= ------A0xNJPsnoIfNexmYmsv6OPyvtiNBT4a3-016AIHbRkUl7M2G7-1527265178 Content-Type: multipart/alternative; boundary="--ALT--A0xNJPsnoIfNexmYmsv6OPyvtiNBT4a31527265178" ----ALT--A0xNJPsnoIfNexmYmsv6OPyvtiNBT4a31527265178 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CgoKPtCS0YLQvtGA0L3QuNC6LCAyMiDQvNCw0Y8gMjAxOCwgMjI6MTAgKzAzOjAwINC+0YIgVmxh ZGlzbGF2IFNocGlsZXZveSA8di5zaHBpbGV2b3lAdGFyYW50b29sLm9yZz46Cj4KPkhlbGxvLiBU aGFua3MgZm9yIHRoZSBwYXRjaCEgU2VlIDI2IGNvbW1lbnRzIGJlbG93Lgo+Cj5PbiAyMi8wNS8y MDE4IDE5OjAzLCBJdmFuIEtvcHRlbG92IHdyb3RlOgo+PiBDdXJyZW50bHkgdGhlcmUgaXMgYSBw cm9ibGVtIHdpdGgKPj4gbm9uLWRldGVybWluaXN0aWMgbnVsbGFiaWxpdHkgaW4KPj4gaW5kZXhf ZGVmLiBUbyBzZWUgdGhlIGVycm9yIGp1c3QKPj4gdW5jb21tZW50IHByaW50ZnMgb24gYnVpbGQu YyAyOTk5Cj4+IGFuZCBydW4gYW55IHNxbC10YXAgdGVzdCB0aGF0Cj4+IGhhcyB0byBkbyB3aXRo IGluZGV4ZXMsIGUuZwo+PiBkaXN0aW5jdC50ZXN0Lmx1YS4KPj4gZ2l0aHViIGJyYW5jaDogIGh0 dHBzOi8vZ2l0aHViLmNvbS90YXJhbnRvb2wvdGFyYW50b29sL3RyZWUvc2IvZ2gtMzM2OS11c2Ut aW5kZXgtZGVmLWluLXNlbGVjdC1hbmQtd2hlcmUKPj4gLS0tCj4+ICAgc3JjL2JveC9zcWwvYnVp bGQuYyAgICAgfCAxNzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystCj4+ICAgc3JjL2JveC9zcWwvc3FsaXRlSW50LmggfCAgIDIgKwo+PiAgIDIgZmlsZXMg Y2hhbmdlZCwgMTc5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4+IAo+PiBkaWZmIC0t Z2l0IGEvc3JjL2JveC9zcWwvYnVpbGQuYyBiL3NyYy9ib3gvc3FsL2J1aWxkLmMKPj4gaW5kZXgg NzQyZjhhNTcyLi42YmQ3MGZhOWYgMTAwNjQ0Cj4+IC0tLSBhL3NyYy9ib3gvc3FsL2J1aWxkLmMK Pj4gKysrIGIvc3JjL2JveC9zcWwvYnVpbGQuYwo+PiBAQCAtNDMsNiArNDMsNyBAQAo+PiAgICAq ICAgICBDT01NSVQKPj4gICAgKiAgICAgUk9MTEJBQ0sKPj4gICAgKi8KPj4gKyNpbmNsdWRlIDxj dHlwZS5oPgo+Cj4xLiBTZWUgdGhlIGNvbW1lbnQgMiBhbmQgcmVtb3ZlIGl0LCBwbGVhc2UuCj4K Pj4gICAjaW5jbHVkZSAic3FsaXRlSW50LmgiCj4+ICAgI2luY2x1ZGUgInZkYmVJbnQuaCIKPj4g ICAjaW5jbHVkZSAidGFyYW50b29sSW50LmgiCj4+IEBAIC0yODQxLDkgKzI4NDIsMTczIEBAIGlu ZGV4X2lzX3VuaXF1ZShJbmRleCAqaWR4KQo+PiAgIAlyZXR1cm4gdG50X2luZGV4LT5kZWYtPm9w dHMuaXNfdW5pcXVlOwo+PiAgIH0KPj4gCj4+ICsvKgo+PiArICogSW4gQ1JFQVRFIElOREVYIHJl cXVlc3RzIHVzZXIgbWF5IHNldCBiaW5hcnkgY29sbGF0aW9uIHdpdGggQ09MTEFURQo+PiArICog W0JJTkFSWSwgYmluYXJ5LCAiYmluYXJ5IiBhbmQgImJJbmFyWSJdIFRoaXMgZnVuY3Rpb24gaXMg dG8gaGFuZGxlIGFsbAo+PiArICogdGhlc2UgY2FzZXMuCj4+ICsgKi8KPj4gK2Jvb2wgaXNfYmlu YXJ5X2NvbGxhdGlvbihjb25zdCBjaGFyICpjb2xsX25hbWUpCj4+ICt7Cj4+ICsJY2hhciAqdXBw ZXJfY2FzZV9uYW1lID0KPj4gKwkJbWFsbG9jKHNpemVvZigqY29sbF9uYW1lKSAqIHN0cmxlbihj b2xsX25hbWUpKTsKPj4gKwlmb3IgKGludCBpID0gMDsgaSA8IChpbnQpIHN0cmxlbihjb2xsX25h bWUpOyBpKyspIHsKPj4gKwkJdXBwZXJfY2FzZV9uYW1lW2ldID0gdG91cHBlcihjb2xsX25hbWVb aV0pOwo+PiArCX0KPj4gKwo+PiArCWJvb2wgcmVzID0gKHN0cmNtcCh1cHBlcl9jYXNlX25hbWUs ICJCSU5BUlkiKSA9PSAwKTsKPj4gKwlmcmVlKHVwcGVyX2Nhc2VfbmFtZSk7Cj4+ICsJcmV0dXJu IHJlczsKPgo+Mi4gQWxsIHRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvIHNpbXBsZSBzdHJj YXNlY21wKGNvbGxfbmFtZSwgImJpbmFyeSIpLgo+Cj4+ICt9Cj4+ICsKPj4gKy8vYm9vbCBpc19p bmRleF9lcXVhbChJbmRleCAqIG9sZCwgc3RydWN0IGluZGV4X2RlZiAqbmV3KQo+PiArLy97Cj4+ ICsvLwlhc3NlcnQoc3RyY21wKG9sZC0+ek5hbWUsIG5ldy0+bmFtZSk7Cj4+ICsvLwlyZXR1cm4g dHJ1ZTsKPj4gKy8vfQo+Cj4zLiBHYXJiYWdlIGRpZmYuCj4KPj4gKwo+PiArc3RydWN0IGluZGV4 X2RlZiAqY3JlYXRlX2luZGV4X2RlZihUYWJsZSAqcFRhYiwgY29uc3QgY2hhciAqbmFtZSwKPj4g KwkJCQkgICB1aW50MzJfdCBuYW1lX2xlbiwgaW50IG9uRXJyb3IsCj4+ICsJCQkJICAgRXhwckxp c3QgKnBMaXN0LCB1OCBpZHhUeXBlKQo+Cj40LiBBY2NvcmRpbmcgdG8gVGFyYW50b29sIGNvZGUg c3R5bGUgeW91IHNob3VsZCB3cmFwIGxpbmUgYWZ0ZXIgcmV0dXJuIHR5cGUKPmRlZmluaXRpb24u IEFuZCBwbGVhc2UsIHVzZSBzbmFrZV9jYXNlIGZvciB2YXJpYWJsZSBuYW1lcy4KPgo+PiArewo+ PiArCXN0cnVjdCBzcGFjZV9kZWYgKnNwYWNlX2RlZiA9IHBUYWItPmRlZjsKPj4gKwlzdHJ1Y3Qg c3BhY2UgKnNwYWNlID0gc3BhY2VfYnlfaWQoc3BhY2VfZGVmLT5pZCk7Cj4KPjUuIHNwYWNlX2J5 X2lkIHRha2VzIGEgc3BhY2UgZnJvbSB0aGUgc3BhY2UgY2FjaGUsIGJ1dCBkdXJpbmcKPidDUkVB VEUgVEFCTEUnIGdlbmVyYXRpb24gdGhlIHNwYWNlIGlzIG5vdCBpbiB0aGUgY2FjaGUuIFRoaXMg d2lsbAo+cmV0dXJuIE5VTEwuCj4KPllvdSBtdXN0IG5vdCB1c2Ugc3BhY2UgKiBoZXJlIGF0IGFs bC4gSSBzZWUsIHRoYXQgeW91IHVzZSBpdAo+aW4gYSBzaW5nbGUgcGxhY2UgdG8gZmluZCBhIHBy aW1hcnkgaW5kZXgga2V5X2RlZiwgYnV0IHlvdSBjYW4gZ2V0IGl0Cj5mcm9tIHRoZSBwVGFiIGZy b20gdGhlIGZpcnN0IHBJbmRleCAtIGl0IGlzIGFsd2F5cyBwcmltYXJ5IG9uZS4KPgo+PiArCj4+ ICsJdWludDMyX3QgaWlkID0gMDsKPj4gKwlJbmRleCAqdGVtcCA9IHBUYWItPnBJbmRleDsKPj4g Kwl3aGlsZSAodGVtcCAhPSBOVUxMKSB7Cj4+ICsJCWlpZCsrOwo+PiArCQl0ZW1wID0gdGVtcC0+ cE5leHQ7Cj4KPjYuIEJhZCBpZGVhLiBZb3UgbXVzdCB0YWtlIEluZGV4ICogYXMgdGhlIGZ1bmN0 aW9uIGFyZ3VtZW50LCBhbmQgaW5pdGlhbGl6ZSBpdHMKPmluZGV4X2RlZi4KPgo+PiArCX0KPj4g Kwo+PiArCXN0cnVjdCBpbmRleF9vcHRzICpvcHRzID0gKHN0cnVjdCBpbmRleF9vcHRzICopIG1h bGxvYyhzaXplb2YoKm9wdHMpKTsKPgo+Ny4gV2h5IGNhbiBub3QgeW91IGRlY2xhcmUgaXQgb24g dGhlIHN0YWNrPwo+Cj4+ICsJaW5kZXhfb3B0c19jcmVhdGUob3B0cyk7Cj4+ICsJb3B0cy0+c3Fs ID0gTlVMTDsKPj4gKwo+PiArCWlmIChvbkVycm9yID09IE9OX0NPTkZMSUNUX0FDVElPTl9OT05F KSB7Cj4+ICsJCW9wdHMtPmlzX3VuaXF1ZSA9IGZhbHNlOwo+PiArCX0gZWxzZSB7Cj4+ICsJCW9w dHMtPmlzX3VuaXF1ZSA9IHRydWU7Cj4+ICsJfQo+Cj44LiBEbyBub3QgcHV0ICdpZicgYm9keSBp biB7fSB3aGVuIGl0IGNvbnNpc3RzIG9mIGEgc2luZ2xlIGxpbmUuCj4KPjkuIEhlcmUgeW91IGNh biBzaW1wbHkgZG8gdGhpczoKPm9wdHMtPmlzX3VuaXF1ZSA9IG9uRXJyb3IgIT0gT05fQ09ORkxJ Q1RfQUNUSU9OX05PTkU7Cj4KPj4gKwo+PiArCXN0cnVjdCBrZXlfcGFydF9kZWYgKnBhcnRfZGVm X3RtcCA9IChzdHJ1Y3Qga2V5X3BhcnRfZGVmICopCj4+ICsJCW1hbGxvYyhzaXplb2YoKnBhcnRf ZGVmX3RtcCkgKiBwTGlzdC0+bkV4cHIpOwo+Cj4xMC4gUGxlYXNlLCBkbyBub3QgZG8gdGhpcy4g VXNlIGtleV9kZWZfbmV3ICsgbXVsdGlwbGUga2V5X2RlZl9zZXRfcGFydC4KPllvdSB1c2UgdG9v IG1hbnkgbWFsbG9jcy4KPgo+PiArCj4+ICsJdWludDMyX3QgcGFydF9jb3VudCA9IDA7Cj4+ICsJ aW50IGkgPSAwOwo+PiArCXN0cnVjdCBFeHByTGlzdF9pdGVtICpwTGlzdEl0ZW07Cj4+ICsKPj4g KwkvKgo+PiArCSAqIEluIGNhc2Ugb2Ygb3JkaW5hcnkgaW5kZXggY3JlYXRpb24gd2Ugd2FudCBv dCBzdG9yZSBhCj4+ICsJICogU1FMIHN0YXRlbWVudCBvZiB0aGlzIGNyZWF0aW9uLgo+PiArCSAq Lwo+PiArCWlmIChpZHhUeXBlID09IFNRTElURV9JRFhUWVBFX0FQUERFRikgewo+PiArCQlhc3By aW50Zigmb3B0cy0+c3FsLCJDUkVBVEUgSU5ERVggJXMgT04gJXMoIiwKPj4gKwkJCSBuYW1lLCBz cGFjZV9kZWYtPm5hbWUpOwo+Cj4xMS4gWW91IHNob3VsZCBjaGVjayBpZiBhc3ByaW50ZiBpcyBm YWlsZWQuIE9yIGRvIG5vdCB1c2UgYXNwcmludGYgYXQKPmFsbC4gU2VlIGJlbG93IGhvdy4KPgo+ PiArCX0KPj4gKwo+PiArCWZvciAoaSA9IDAsIHBMaXN0SXRlbSA9IHBMaXN0LT5hOyBpIDwgcExp c3QtPm5FeHByOyBwTGlzdEl0ZW0rKywgaSsrKSB7Cj4+ICsJCUV4cHIgKnBDRXhwciA9IHNxbGl0 ZTNFeHByU2tpcENvbGxhdGUocExpc3RJdGVtLT5wRXhwcik7Cj4+ICsKPj4gKwkJaWYgKHBDRXhw ci0+b3AgPT0gVEtfQ09MVU1OKSB7Cj4+ICsJCQl1aW50MzJfdCBmaWVsZG5vID0gcENFeHByLT5p Q29sdW1uOwo+PiArCQkJcGFydF9kZWZfdG1wW2ldLmZpZWxkbm8gPSBmaWVsZG5vOwo+PiArCQkJ cGFydF9kZWZfdG1wW2ldLm51bGxhYmxlX2FjdGlvbiA9Cj4+ICsJCQkJT05fQ09ORkxJQ1RfQUNU SU9OX0RFRkFVTFQ7Cj4KPjEyLiBXcm9uZyAtIGFjdGlvbiBkZWZhdWx0IGlzIGludGVybmFsIHRo aW5nLCB0aGF0IGNhbiBub3QgYmUKPnNldCBpbiBrZXlfcGFydCBhY3R1YWxseS4gWW91IG11c3Qg c2V0IGFjdGlvbiB0byB0aGUgc2FtZSB2YWx1ZSBhcwo+dGhlIHNwYWNlIGZpZWxkIGlzIHNldC4K Pgo+PiArCQkJcGFydF9kZWZfdG1wW2ldLnR5cGUgPQo+PiArCQkJCXNwYWNlX2RlZi0+ZmllbGRz W2ZpZWxkbm9dLnR5cGU7Cj4+ICsKPj4gKy8vCQkJcGFydF9kZWZfdG1wW2ldLmlzX251bGxhYmxl ID0KPj4gKy8vCQkJCShmaWVsZG5vIDwgc3BhY2VfZGVmLT5maWVsZF9jb3VudCA/Cj4+ICsvLwkJ CQkgc3BhY2VfZGVmLT5maWVsZHNbZmllbGRub10uaXNfbnVsbGFibGUgOgo+PiArLy8JCQkJIGZh bHNlKTsKPj4gKwo+PiArCQkJcGFydF9kZWZfdG1wW2ldLmlzX251bGxhYmxlID0KPj4gKwkJCQl0 YWJsZV9jb2x1bW5faXNfbnVsbGFibGUocFRhYi0+ZGVmLCBmaWVsZG5vKTsKPgo+MTMuIFBsZWFz ZSwgZG8gbm90IHVzZSB0YWJsZV9jb2x1bW5faXNfbnVsbGFibGUuIEl0IGRvZXMgc3BhY2VfYnlf aWQoZGVmLT5pZCksCj5idXQgaGVyZSBkZWYtPmlkIGlzIG5vdCBkZWZpbmVkIHdoZW4geW91IGNy ZWF0ZSBhIHByaW1hcnkgaW5kZXggaW5zaWRlIGEgQ1JFQVRFCj5UQUJMRSByZXF1ZXN0Lgo+Cj4+ ICsKPj4gKwkJCXBhcnRfZGVmX3RtcFtpXS5jb2xsX2lkID0KPj4gKwkJCQlzcGFjZV9kZWYtPmZp ZWxkc1tmaWVsZG5vXS5jb2xsX2lkID8KPj4gKwkJCQlzcGFjZV9kZWYtPmZpZWxkc1tmaWVsZG5v XS5jb2xsX2lkIDogQ09MTF9OT05FOwo+Cj4xNC4gRG8gbm90IHVzZSBpbnRlZ2VycyBhcyBib29s ZWFucy4KPgo+MTUuIFdoeSBub3QganVzdCBwYXJ0X2RlZl90bXBbaV0uY29sbF9pZCA9IHNwYWNl X2RlZi0+ZmllbGRzW2ZpZWxkbm9dLmNvbGxfaWQ/Cj5CZXNpZGVzLCBjb2xsX2lkID09IDAgaXMg dmFsaWQgY29sbGF0aW9uIGlkZW50aWZpZXIuIEl0IGlzIG5vdCB0aGUgc2FtZSBhcyBDT0xMX05P TkUuCj4KPj4gKwkJCXBhcnRfY291bnQrKzsKPgo+MTYuIFdoeSBkbyB5b3UgbmVlZCB0aGlzIGNv dW50ZXI/IFlvdSBhbHJlYWR5IGtub3cgcGFydCBjb3VudCAtIGl0IGlzIGVxdWFsCj50byBwTGlz dC0+bkV4cHIuCj4KPj4gKwo+PiArCQkJaWYgKG9wdHMtPnNxbCAhPSBOVUxMKSB7Cj4KPjE3LiBI b3cgY2FuIGl0IGJlIE5VTEw/Cj4KPj4gKwkJCQlpZiAocGFydF9jb3VudCA9PSAxKSB7Cj4+ICsJ CQkJCWFzcHJpbnRmKCZvcHRzLT5zcWwsIiVzJXMsIixvcHRzLT5zcWwsCj4+ICsJCQkJCQkgc3Bh Y2VfZGVmLT5maWVsZHNbZmllbGRub10ubmFtZSk7Cj4+ICsJCQkJfSBlbHNlIHsKPj4gKwkJCQkJ YXNwcmludGYoJm9wdHMtPnNxbCwiJXMgJXMsIixvcHRzLT5zcWwsCj4+ICsJCQkJCQkgc3BhY2Vf ZGVmLT5maWVsZHNbZmllbGRub10ubmFtZSk7Cj4+ICsJCQkJfQo+PiArCQkJfQo+PiArCQl9IGVs c2Ugewo+PiArCQkJYXNzZXJ0KHBDRXhwci0+b3AgPT0gVEtfQ09MVU1OKTsKPgo+MTguIFNvIEkg c2VlIHRoaXM6Cj5pZiAoc29tZXRoaW5nKSB7Cj7CoMKgLi4uCj59IGVsc2Ugewo+wqDCoGFzc2Vy dChzb21ldGhpbmcpOwo+fQo+Cj5WZXJ5IHN0cmFuZ2UuIFRoaXMgYXNzZXJ0IGZhaWxzIGFsd2F5 cy4KPgo+PiArCQl9Cj4+ICsKPj4gKwkJaWYgKHBMaXN0SXRlbS0+cEV4cHItPm9wID09IFRLX0NP TExBVEUpIHsKPgo+MTkuIEhlcmUgeW91IGNvbXBsZXRlbHkgc2tpcHBlZCBjb2x1bW4gaW5pdGlh bGl6YXRpb24gd2hlbiBpdCBoYXMKPkNPTExBVEUuIFNlZSBzcWxpdGUzRXhwclNraXBDb2xsYXRl LCB0aGUgc2FtZSBjb2RlIG9uIGxpbmUgMzIzNSwgYW5kCj5ob3cgQ09MTEFURSBpcyBzdG9yZWQg aW4gRXhwciB0cmVlIChpdCByZXBsYWNlcyB0aGUgb3JpZ2luYWwgRXhwciBtYWtpbmcKPml0IHRv IGJlIENPTExBVEUncyBjaGlscykuIFRoaXMgaXMgd2h5IGhlcmUgcExpc3QtPm5FeHByIGlzIHRo ZSBzYW1lIGFzCj5wYXJ0IGNvdW50Lgo+Cj4+ICsJCQljb25zdCBjaGFyICpjb2xsX25hbWUgPSBw TGlzdEl0ZW0tPnBFeHByLT51LnpUb2tlbjsKPj4gKwkJCWFzc2VydChjb2xsX25hbWUgIT0gTlVM TCk7Cj4+ICsJCQlzaXplX3QgY29sbF9uYW1lX2xlbiA9IHN0cmxlbihjb2xsX25hbWUpOwo+PiAr CQkJc3RydWN0IGNvbGwgKmNvbGwgPSBjb2xsX2J5X25hbWUoY29sbF9uYW1lLCBjb2xsX25hbWVf bGVuKTsKPj4gKwo+PiArCQkJaWYgKGlzX2JpbmFyeV9jb2xsYXRpb24oY29sbF9uYW1lKSkgewo+ PiArCQkJCXBhcnRfZGVmX3RtcFtpXS5jb2xsX2lkID0gQ09MTF9OT05FOwo+PiArCQkJfSBlbHNl IHsKPj4gKwkJCQlhc3NlcnQoY29sbCAhPSBOVUxMKTsKPgo+MjAuIFdoeT8gQ29sbGF0aW9uIGNh biBiZSBub3QgZm91bmQuIFVzZSBzcWxpdGUzR2V0Q29sbFNlcS4gQnV0IGJlZm9yZSBkbwo+cmVi YXNlIG9uIHRoZSBsYXRlc3QgMi4wLiBZb3UgYnJhbmNoIGxvb2tzIHZlcnkgb3V0IG9mIGRhdGUu IE1hbnkgdGhpbmdzCj53ZXJlIGNoYW5nZWQgYWZ0ZXIgdGhlIGxhdGVzdCAxLjEwIGludG8gMi4w IG1lcmdlLgo+Cj4+ICsJCQkJcGFydF9kZWZfdG1wW2ldLmNvbGxfaWQgPSBjb2xsLT5pZDsKPj4g KwkJCX0KPj4gKwo+PiArCQkJaWYgKG9wdHMtPnNxbCAhPSBOVUxMKSB7Cj4KPjIxLiBIb3cgY2Fu IGl0IGJlIE5VTEw/Cj4KPj4gKwkJCQkvKgo+PiArCQkJCSAqIElmIGluZGV4IHBhcnQgaGFzIGEg Y29sbGF0aW9uIHRoZW4KPj4gKwkJCQkgKiBjb3JyZXNwb25kaW5nIHBhcnQgb2Ygc3RhdGVtZW50 IHNob3VsZAo+PiArCQkJCSAqIGJlIGNoYW5nZWQgZnJvbSAnY29sdW1uX25hbWUsJyB0bwo+PiAr CQkJCSAqICdjb2x1bW5fbmFtZSBDT0xMQVRFIGNvbGxhdGlvbl9uYW1lLCcuCj4+ICsJCQkJICov Cj4+ICsJCQkJb3B0cy0+c3FsW3N0cmxlbihvcHRzLT5zcWwpIC0gMV0gPSAnICc7Cj4+ICsJCQkJ YXNwcmludGYoJm9wdHMtPnNxbCwiJXNDT0xMQVRFICVzLCIsIG9wdHMtPnNxbCwKPj4gKwkJCQkJ IGNvbGxfbmFtZSk7Cj4KPjIyLiBIZXJlIGFuZCBpbiBhbGwgb3RoZXJzIGFzcHJpbnRmIHlvdSBo YXZlIGxlYWsgLSB5b3UgcmVzZXQgb3B0cy0+c3FsIHdpdGggbmV3Cj5tYWxsb2MgKGNhbGxlZCBp biBhc3ByaW50ZiksIGJ1dCBkbyBub3QgZnJlZSB0aGUgb3JpZ2luYWwuIEFuZCBwbGVhc2UsIHVz ZSByZWdpb24KPmluc3RlYWQuIFlvdSBjYW4gYWNjdW11bGF0ZSBTUUwgcGFydHMgdmlhIG11bHRp cGxlIHJlZ2lvbl9hbGxvYyArIHNpbmdsZQo+cmVnaW9uX2pvaW4gKyBzdHJkdXAgYXQgdGhlIGVu ZC4gSXQgbWFrZXMgbGVha3MgYmUgaW1wb3NzaWJsZSwgYW5kIGRvZXMgbm90Cj5yZXF1aXJlIGFu eSBtYWxsb2MgKyBmcmVlLgo+Cj4+ICsJCQl9Cj4+ICsJCX0KPj4gKwkJaWYgKHBMaXN0SXRlbS0+ cEV4cHItPm9wICE9IFRLX0NPTFVNTiAmJgo+PiArCQkgICAgcExpc3RJdGVtLT5wRXhwci0+b3Ag IT0gVEtfQ09MTEFURSkgewo+PiArCQkJcHJpbnRmKCJlcnJvciAlZFxuIiwgcExpc3RJdGVtLT5w RXhwci0+b3ApOwo+PiArCQl9Cj4+ICsJfQo+PiArCj4+ICsJaWYgKGlkeFR5cGUgPT0gU1FMSVRF X0lEWFRZUEVfQVBQREVGKSB7Cj4+ICsJCW9wdHMtPnNxbFtzdHJsZW4ob3B0cy0+c3FsKSAtIDFd ID0gJyknOwo+PiArCX0KPj4gKwo+PiArCXN0cnVjdCBrZXlfcGFydF9kZWYgKnBhcnRfZGVmID0g KHN0cnVjdCBrZXlfcGFydF9kZWYgKikKPj4gKwkJbWFsbG9jKHNpemVvZigqcGFydF9kZWYpICog cGFydF9jb3VudCArIDEpOwo+PiArCj4+ICsJbWVtY3B5KHBhcnRfZGVmLCBwYXJ0X2RlZl90bXAs IHNpemVvZigqcGFydF9kZWYpICogcGFydF9jb3VudCk7Cj4+ICsJZnJlZShwYXJ0X2RlZl90bXAp Owo+PiArCj4+ICsJc3RydWN0IGtleV9kZWYgKmtleV9kZWYgPSBrZXlfZGVmX25ld193aXRoX3Bh cnRzKHBhcnRfZGVmLCBwYXJ0X2NvdW50KTsKPj4gKwlhc3NlcnQoa2V5X2RlZiAhPSBOVUxMKTsK Pgo+MjMuIEFsbCB0aGlzIHRoaW5ncyBjYW4gYmUgcmVtb3ZlZCBieSB1c2FnZSBvZiBrZXlfZGVm X25ldyArCj5tdWx0aXBsZSBrZXlfZGVmX3NldF9wYXJ0Lgo+Cj4+ICsKPj4gKwlzdHJ1Y3Qga2V5 X2RlZiAqcGtfa2V5X2RlZjsKPj4gKwlpZiAoaWR4VHlwZSA9PSBTUUxJVEVfSURYVFlQRV9BUFBE RUYpIHsKPj4gKwkJcGtfa2V5X2RlZiA9IHNwYWNlX2luZGV4X2tleV9kZWYoc3BhY2UsIDApOwo+ Cj4yNC4gWW91IG11c3Qgbm90IHVzZSBhIHNwYWNlIGhlcmUuCj4KPj4gKwl9IGVsc2Ugewo+PiAr CQlwa19rZXlfZGVmID0gTlVMTDsKPj4gKwl9Cj4+ICsKPj4gKwllbnVtIGluZGV4X3R5cGUgZGVm YXVsdF90eXBlID0gVFJFRTsKPj4gKwo+PiArCXByaW50Zigic3BhY2UgaWQgJWQgaW5kZXggbmFt ZSAlcyBpbmRleCBpaWQgJWRcbiIsIHNwYWNlX2RlZi0+aWQsIG5hbWUsIGlpZCk7Cj4+ICsJcHJp bnRmKCJudWxsYWJsZXNcbiIpOwo+PiArCWZvciAodWludDMyX3QgaiA9IDA7IGogPCBrZXlfZGVm LT5wYXJ0X2NvdW50OyBqKyspewo+PiArCQlwcmludGYoIiVkXG4iLCBrZXlfcGFydF9pc19udWxs YWJsZSgma2V5X2RlZi0+cGFydHNbaV0pKTsKPgpGaXhlZCBhbGwgb2YgdGhlIGNvbW1lbnRzJyBp c3N1ZXMuCgotLSAKSXZhbiBLb3B0ZWxvdgo= ----ALT--A0xNJPsnoIfNexmYmsv6OPyvtiNBT4a31527265178 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxicj48YnI+PGJyPjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDox cHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPgoJ0JLR gtC+0YDQvdC40LosIDIyINC80LDRjyAyMDE4LCAyMjoxMCArMDM6MDAg0L7RgiBWbGFkaXNsYXYg U2hwaWxldm95ICZsdDt2LnNocGlsZXZveUB0YXJhbnRvb2wub3JnJmd0Ozo8YnI+Cgk8YnI+Cgk8 ZGl2IGlkPSIiPgoKCgoKCgo8ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPgoJ PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPgogCTxkaXY+CgkJPGJhc2UgdGFyZ2V0PSJf c2VsZiIgaHJlZj0iaHR0cHM6Ly9lLm1haWwucnUvIj4KCQkKICAgICAgICAgICAgPGRpdiBpZD0i c3R5bGVfMTUyNzAxNjIyODAwMDAwMDA3OTFfQk9EWSI+SGVsbG8uIFRoYW5rcyBmb3IgdGhlIHBh dGNoISBTZWUgMjYgY29tbWVudHMgYmVsb3cuPGJyPgo8YnI+Ck9uIDIyLzA1LzIwMTggMTk6MDMs IEl2YW4gS29wdGVsb3Ygd3JvdGU6PGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmZ3Q7IEN1cnJlbnRseSB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aDxicj4KJmd0OyBub24tZGV0 ZXJtaW5pc3RpYyBudWxsYWJpbGl0eSBpbjxicj4KJmd0OyBpbmRleF9kZWYuIFRvIHNlZSB0aGUg ZXJyb3IganVzdDxicj4KJmd0OyB1bmNvbW1lbnQgcHJpbnRmcyBvbiBidWlsZC5jIDI5OTk8YnI+ CiZndDsgYW5kIHJ1biBhbnkgc3FsLXRhcCB0ZXN0IHRoYXQ8YnI+CiZndDsgaGFzIHRvIGRvIHdp dGggaW5kZXhlcywgZS5nPGJyPgomZ3Q7IGRpc3RpbmN0LnRlc3QubHVhLjxicj4KJmd0OyBnaXRo dWIgYnJhbmNoOiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGFyYW50b29sL3RhcmFudG9v bC90cmVlL3NiL2doLTMzNjktdXNlLWluZGV4LWRlZi1pbi1zZWxlY3QtYW5kLXdoZXJlIiB0YXJn ZXQ9Il9ibGFuayI+aHR0cHM6Ly9naXRodWIuY29tL3RhcmFudG9vbC90YXJhbnRvb2wvdHJlZS9z Yi9naC0zMzY5LXVzZS1pbmRleC1kZWYtaW4tc2VsZWN0LWFuZC13aGVyZTwvYT48YnI+CiZndDsg LS0tPGJyPgomZ3Q7ICAgc3JjL2JveC9zcWwvYnVpbGQuYyAgICAgfCAxNzkgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystPGJyPgomZ3Q7ICAgc3JjL2JveC9z cWwvc3FsaXRlSW50LmggfCAgIDIgKzxicj4KJmd0OyAgIDIgZmlsZXMgY2hhbmdlZCwgMTc5IGlu c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pPGJyPgomZ3Q7IDxicj4KJmd0OyBkaWZmIC0tZ2l0 IGEvc3JjL2JveC9zcWwvYnVpbGQuYyBiL3NyYy9ib3gvc3FsL2J1aWxkLmM8YnI+CiZndDsgaW5k ZXggNzQyZjhhNTcyLi42YmQ3MGZhOWYgMTAwNjQ0PGJyPgomZ3Q7IC0tLSBhL3NyYy9ib3gvc3Fs L2J1aWxkLmM8YnI+CiZndDsgKysrIGIvc3JjL2JveC9zcWwvYnVpbGQuYzxicj4KJmd0OyBAQCAt NDMsNiArNDMsNyBAQDxicj4KJmd0OyAgICAqICAgICBDT01NSVQ8YnI+CiZndDsgICAgKiAgICAg Uk9MTEJBQ0s8YnI+CiZndDsgICAgKi88YnI+CiZndDsgKyNpbmNsdWRlICZsdDtjdHlwZS5oJmd0 Ozxicj4KICAgICAgPGJyPgoxLiBTZWUgdGhlIGNvbW1lbnQgMiBhbmQgcmVtb3ZlIGl0LCBwbGVh c2UuPGJyPgo8YnI+CiZndDsgICAjaW5jbHVkZSAic3FsaXRlSW50LmgiPGJyPgomZ3Q7ICAgI2lu Y2x1ZGUgInZkYmVJbnQuaCI8YnI+CiZndDsgICAjaW5jbHVkZSAidGFyYW50b29sSW50LmgiPGJy PgomZ3Q7IEBAIC0yODQxLDkgKzI4NDIsMTczIEBAIGluZGV4X2lzX3VuaXF1ZShJbmRleCAqaWR4 KTxicj4KJmd0OyAgIAlyZXR1cm4gdG50X2luZGV4LSZndDtkZWYtJmd0O29wdHMuaXNfdW5pcXVl Ozxicj4KJmd0OyAgIH08YnI+CiZndDsgICA8YnI+CiZndDsgKy8qPGJyPgomZ3Q7ICsgKiBJbiBD UkVBVEUgSU5ERVggcmVxdWVzdHMgdXNlciBtYXkgc2V0IGJpbmFyeSBjb2xsYXRpb24gd2l0aCBD T0xMQVRFPGJyPgomZ3Q7ICsgKiBbQklOQVJZLCBiaW5hcnksICJiaW5hcnkiIGFuZCAiYkluYXJZ Il0gVGhpcyBmdW5jdGlvbiBpcyB0byBoYW5kbGUgYWxsPGJyPgomZ3Q7ICsgKiB0aGVzZSBjYXNl cy48YnI+CiZndDsgKyAqLzxicj4KJmd0OyArYm9vbCBpc19iaW5hcnlfY29sbGF0aW9uKGNvbnN0 IGNoYXIgKmNvbGxfbmFtZSk8YnI+CiZndDsgK3s8YnI+CiZndDsgKwljaGFyICp1cHBlcl9jYXNl X25hbWUgPTxicj4KJmd0OyArCQltYWxsb2Moc2l6ZW9mKCpjb2xsX25hbWUpICogc3RybGVuKGNv bGxfbmFtZSkpOzxicj4KJmd0OyArCWZvciAoaW50IGkgPSAwOyBpICZsdDsgKGludCkgc3RybGVu KGNvbGxfbmFtZSk7IGkrKykgezxicj4KJmd0OyArCQl1cHBlcl9jYXNlX25hbWVbaV0gPSB0b3Vw cGVyKGNvbGxfbmFtZVtpXSk7PGJyPgomZ3Q7ICsJfTxicj4KJmd0OyArPGJyPgomZ3Q7ICsJYm9v bCByZXMgPSAoc3RyY21wKHVwcGVyX2Nhc2VfbmFtZSwgIkJJTkFSWSIpID09IDApOzxicj4KJmd0 OyArCWZyZWUodXBwZXJfY2FzZV9uYW1lKTs8YnI+CiZndDsgKwlyZXR1cm4gcmVzOzxicj4KPGJy PgoyLiBBbGwgdGhpcyBmdW5jdGlvbiBpcyBpZGVudGljYWwgdG8gc2ltcGxlIHN0cmNhc2VjbXAo Y29sbF9uYW1lLCAiYmluYXJ5IikuPGJyPgo8YnI+CiZndDsgK308YnI+CiZndDsgKzxicj4KJmd0 OyArLy9ib29sIGlzX2luZGV4X2VxdWFsKEluZGV4ICogb2xkLCBzdHJ1Y3QgaW5kZXhfZGVmICpu ZXcpPGJyPgomZ3Q7ICsvL3s8YnI+CiZndDsgKy8vCWFzc2VydChzdHJjbXAob2xkLSZndDt6TmFt ZSwgbmV3LSZndDtuYW1lKTs8YnI+CiZndDsgKy8vCXJldHVybiB0cnVlOzxicj4KJmd0OyArLy99 PGJyPgo8YnI+CjMuIEdhcmJhZ2UgZGlmZi48YnI+Cjxicj4KJmd0OyArPGJyPgomZ3Q7ICtzdHJ1 Y3QgaW5kZXhfZGVmICpjcmVhdGVfaW5kZXhfZGVmKFRhYmxlICpwVGFiLCBjb25zdCBjaGFyICpu YW1lLDxicj4KJmd0OyArCQkJCSAgIHVpbnQzMl90IG5hbWVfbGVuLCBpbnQgb25FcnJvciw8YnI+ CiZndDsgKwkJCQkgICBFeHByTGlzdCAqcExpc3QsIHU4IGlkeFR5cGUpPGJyPgo8YnI+CjQuIEFj Y29yZGluZyB0byBUYXJhbnRvb2wgY29kZSBzdHlsZSB5b3Ugc2hvdWxkIHdyYXAgbGluZSBhZnRl ciByZXR1cm4gdHlwZTxicj4KZGVmaW5pdGlvbi4gQW5kIHBsZWFzZSwgdXNlIHNuYWtlX2Nhc2Ug Zm9yIHZhcmlhYmxlIG5hbWVzLjxicj4KPGJyPgomZ3Q7ICt7PGJyPgomZ3Q7ICsJc3RydWN0IHNw YWNlX2RlZiAqc3BhY2VfZGVmID0gcFRhYi0mZ3Q7ZGVmOzxicj4KJmd0OyArCXN0cnVjdCBzcGFj ZSAqc3BhY2UgPSBzcGFjZV9ieV9pZChzcGFjZV9kZWYtJmd0O2lkKTs8YnI+Cjxicj4KNS4gc3Bh Y2VfYnlfaWQgdGFrZXMgYSBzcGFjZSBmcm9tIHRoZSBzcGFjZSBjYWNoZSwgYnV0IGR1cmluZzxi cj4KJ0NSRUFURSBUQUJMRScgZ2VuZXJhdGlvbiB0aGUgc3BhY2UgaXMgbm90IGluIHRoZSBjYWNo ZS4gVGhpcyB3aWxsPGJyPgpyZXR1cm4gTlVMTC48YnI+Cjxicj4KWW91IG11c3Qgbm90IHVzZSBz cGFjZSAqIGhlcmUgYXQgYWxsLiBJIHNlZSwgdGhhdCB5b3UgdXNlIGl0PGJyPgppbiBhIHNpbmds ZSBwbGFjZSB0byBmaW5kIGEgcHJpbWFyeSBpbmRleCBrZXlfZGVmLCBidXQgeW91IGNhbiBnZXQg aXQ8YnI+CmZyb20gdGhlIHBUYWIgZnJvbSB0aGUgZmlyc3QgcEluZGV4IC0gaXQgaXMgYWx3YXlz IHByaW1hcnkgb25lLjxicj4KPGJyPgomZ3Q7ICs8YnI+CiZndDsgKwl1aW50MzJfdCBpaWQgPSAw Ozxicj4KJmd0OyArCUluZGV4ICp0ZW1wID0gcFRhYi0mZ3Q7cEluZGV4Ozxicj4KJmd0OyArCXdo aWxlICh0ZW1wICE9IE5VTEwpIHs8YnI+CiZndDsgKwkJaWlkKys7PGJyPgomZ3Q7ICsJCXRlbXAg PSB0ZW1wLSZndDtwTmV4dDs8YnI+Cjxicj4KNi4gQmFkIGlkZWEuIFlvdSBtdXN0IHRha2UgSW5k ZXggKiBhcyB0aGUgZnVuY3Rpb24gYXJndW1lbnQsIGFuZCBpbml0aWFsaXplIGl0czxicj4KaW5k ZXhfZGVmLjxicj4KPGJyPgomZ3Q7ICsJfTxicj4KJmd0OyArPGJyPgomZ3Q7ICsJc3RydWN0IGlu ZGV4X29wdHMgKm9wdHMgPSAoc3RydWN0IGluZGV4X29wdHMgKikgbWFsbG9jKHNpemVvZigqb3B0 cykpOzxicj4KPGJyPgo3LiBXaHkgY2FuIG5vdCB5b3UgZGVjbGFyZSBpdCBvbiB0aGUgc3RhY2s/ PGJyPgo8YnI+CiZndDsgKwlpbmRleF9vcHRzX2NyZWF0ZShvcHRzKTs8YnI+CiZndDsgKwlvcHRz LSZndDtzcWwgPSBOVUxMOzxicj4KJmd0OyArPGJyPgomZ3Q7ICsJaWYgKG9uRXJyb3IgPT0gT05f Q09ORkxJQ1RfQUNUSU9OX05PTkUpIHs8YnI+CiZndDsgKwkJb3B0cy0mZ3Q7aXNfdW5pcXVlID0g ZmFsc2U7PGJyPgomZ3Q7ICsJfSBlbHNlIHs8YnI+CiZndDsgKwkJb3B0cy0mZ3Q7aXNfdW5pcXVl ID0gdHJ1ZTs8YnI+CiZndDsgKwl9PGJyPgo8YnI+CjguIERvIG5vdCBwdXQgJ2lmJyBib2R5IGlu IHt9IHdoZW4gaXQgY29uc2lzdHMgb2YgYSBzaW5nbGUgbGluZS48YnI+Cjxicj4KOS4gSGVyZSB5 b3UgY2FuIHNpbXBseSBkbyB0aGlzOjxicj4Kb3B0cy0mZ3Q7aXNfdW5pcXVlID0gb25FcnJvciAh PSBPTl9DT05GTElDVF9BQ1RJT05fTk9ORTs8YnI+Cjxicj4KJmd0OyArPGJyPgomZ3Q7ICsJc3Ry dWN0IGtleV9wYXJ0X2RlZiAqcGFydF9kZWZfdG1wID0gKHN0cnVjdCBrZXlfcGFydF9kZWYgKik8 YnI+CiZndDsgKwkJbWFsbG9jKHNpemVvZigqcGFydF9kZWZfdG1wKSAqIHBMaXN0LSZndDtuRXhw cik7PGJyPgo8YnI+CjEwLiBQbGVhc2UsIGRvIG5vdCBkbyB0aGlzLiBVc2Uga2V5X2RlZl9uZXcg KyBtdWx0aXBsZSBrZXlfZGVmX3NldF9wYXJ0Ljxicj4KWW91IHVzZSB0b28gbWFueSBtYWxsb2Nz Ljxicj4KPGJyPgomZ3Q7ICs8YnI+CiZndDsgKwl1aW50MzJfdCBwYXJ0X2NvdW50ID0gMDs8YnI+ CiZndDsgKwlpbnQgaSA9IDA7PGJyPgomZ3Q7ICsJc3RydWN0IEV4cHJMaXN0X2l0ZW0gKnBMaXN0 SXRlbTs8YnI+CiZndDsgKzxicj4KJmd0OyArCS8qPGJyPgomZ3Q7ICsJICogSW4gY2FzZSBvZiBv cmRpbmFyeSBpbmRleCBjcmVhdGlvbiB3ZSB3YW50IG90IHN0b3JlIGE8YnI+CiZndDsgKwkgKiBT UUwgc3RhdGVtZW50IG9mIHRoaXMgY3JlYXRpb24uPGJyPgomZ3Q7ICsJICovPGJyPgomZ3Q7ICsJ aWYgKGlkeFR5cGUgPT0gU1FMSVRFX0lEWFRZUEVfQVBQREVGKSB7PGJyPgomZ3Q7ICsJCWFzcHJp bnRmKCZhbXA7b3B0cy0mZ3Q7c3FsLCJDUkVBVEUgSU5ERVggJXMgT04gJXMoIiw8YnI+CiZndDsg KwkJCSBuYW1lLCBzcGFjZV9kZWYtJmd0O25hbWUpOzxicj4KPGJyPgoxMS4gWW91IHNob3VsZCBj aGVjayBpZiBhc3ByaW50ZiBpcyBmYWlsZWQuIE9yIGRvIG5vdCB1c2UgYXNwcmludGYgYXQ8YnI+ CmFsbC4gU2VlIGJlbG93IGhvdy48YnI+Cjxicj4KJmd0OyArCX08YnI+CiZndDsgKzxicj4KJmd0 OyArCWZvciAoaSA9IDAsIHBMaXN0SXRlbSA9IHBMaXN0LSZndDthOyBpICZsdDsgcExpc3QtJmd0 O25FeHByOyBwTGlzdEl0ZW0rKywgaSsrKSB7PGJyPgomZ3Q7ICsJCUV4cHIgKnBDRXhwciA9IHNx bGl0ZTNFeHByU2tpcENvbGxhdGUocExpc3RJdGVtLSZndDtwRXhwcik7PGJyPgomZ3Q7ICs8YnI+ CiZndDsgKwkJaWYgKHBDRXhwci0mZ3Q7b3AgPT0gVEtfQ09MVU1OKSB7PGJyPgomZ3Q7ICsJCQl1 aW50MzJfdCBmaWVsZG5vID0gcENFeHByLSZndDtpQ29sdW1uOzxicj4KJmd0OyArCQkJcGFydF9k ZWZfdG1wW2ldLmZpZWxkbm8gPSBmaWVsZG5vOzxicj4KJmd0OyArCQkJcGFydF9kZWZfdG1wW2ld Lm51bGxhYmxlX2FjdGlvbiA9PGJyPgomZ3Q7ICsJCQkJT05fQ09ORkxJQ1RfQUNUSU9OX0RFRkFV TFQ7PGJyPgo8YnI+CjEyLiBXcm9uZyAtIGFjdGlvbiBkZWZhdWx0IGlzIGludGVybmFsIHRoaW5n LCB0aGF0IGNhbiBub3QgYmU8YnI+CnNldCBpbiBrZXlfcGFydCBhY3R1YWxseS4gWW91IG11c3Qg c2V0IGFjdGlvbiB0byB0aGUgc2FtZSB2YWx1ZSBhczxicj4KdGhlIHNwYWNlIGZpZWxkIGlzIHNl dC48YnI+Cjxicj4KJmd0OyArCQkJcGFydF9kZWZfdG1wW2ldLnR5cGUgPTxicj4KJmd0OyArCQkJ CXNwYWNlX2RlZi0mZ3Q7ZmllbGRzW2ZpZWxkbm9dLnR5cGU7PGJyPgomZ3Q7ICs8YnI+CiZndDsg Ky8vCQkJcGFydF9kZWZfdG1wW2ldLmlzX251bGxhYmxlID08YnI+CiZndDsgKy8vCQkJCShmaWVs ZG5vICZsdDsgc3BhY2VfZGVmLSZndDtmaWVsZF9jb3VudCA/PGJyPgomZ3Q7ICsvLwkJCQkgc3Bh Y2VfZGVmLSZndDtmaWVsZHNbZmllbGRub10uaXNfbnVsbGFibGUgOjxicj4KJmd0OyArLy8JCQkJ IGZhbHNlKTs8YnI+CiZndDsgKzxicj4KJmd0OyArCQkJcGFydF9kZWZfdG1wW2ldLmlzX251bGxh YmxlID08YnI+CiZndDsgKwkJCQl0YWJsZV9jb2x1bW5faXNfbnVsbGFibGUocFRhYi0mZ3Q7ZGVm LCBmaWVsZG5vKTs8YnI+Cjxicj4KMTMuIFBsZWFzZSwgZG8gbm90IHVzZSB0YWJsZV9jb2x1bW5f aXNfbnVsbGFibGUuIEl0IGRvZXMgc3BhY2VfYnlfaWQoZGVmLSZndDtpZCksPGJyPgpidXQgaGVy ZSBkZWYtJmd0O2lkIGlzIG5vdCBkZWZpbmVkIHdoZW4geW91IGNyZWF0ZSBhIHByaW1hcnkgaW5k ZXggaW5zaWRlIGEgQ1JFQVRFPGJyPgpUQUJMRSByZXF1ZXN0Ljxicj4KPGJyPgomZ3Q7ICs8YnI+ CiZndDsgKwkJCXBhcnRfZGVmX3RtcFtpXS5jb2xsX2lkID08YnI+CiZndDsgKwkJCQlzcGFjZV9k ZWYtJmd0O2ZpZWxkc1tmaWVsZG5vXS5jb2xsX2lkID88YnI+CiZndDsgKwkJCQlzcGFjZV9kZWYt Jmd0O2ZpZWxkc1tmaWVsZG5vXS5jb2xsX2lkIDogQ09MTF9OT05FOzxicj4KPGJyPgoxNC4gRG8g bm90IHVzZSBpbnRlZ2VycyBhcyBib29sZWFucy48YnI+Cjxicj4KMTUuIFdoeSBub3QganVzdCBw YXJ0X2RlZl90bXBbaV0uY29sbF9pZCA9IHNwYWNlX2RlZi0mZ3Q7ZmllbGRzW2ZpZWxkbm9dLmNv bGxfaWQ/PGJyPgpCZXNpZGVzLCBjb2xsX2lkID09IDAgaXMgdmFsaWQgY29sbGF0aW9uIGlkZW50 aWZpZXIuIEl0IGlzIG5vdCB0aGUgc2FtZSBhcyBDT0xMX05PTkUuPGJyPgo8YnI+CiZndDsgKwkJ CXBhcnRfY291bnQrKzs8YnI+Cjxicj4KMTYuIFdoeSBkbyB5b3UgbmVlZCB0aGlzIGNvdW50ZXI/ IFlvdSBhbHJlYWR5IGtub3cgcGFydCBjb3VudCAtIGl0IGlzIGVxdWFsPGJyPgp0byBwTGlzdC0m Z3Q7bkV4cHIuPGJyPgo8YnI+CiZndDsgKzxicj4KJmd0OyArCQkJaWYgKG9wdHMtJmd0O3NxbCAh PSBOVUxMKSB7PGJyPgo8YnI+CjE3LiBIb3cgY2FuIGl0IGJlIE5VTEw/PGJyPgo8YnI+CiZndDsg KwkJCQlpZiAocGFydF9jb3VudCA9PSAxKSB7PGJyPgomZ3Q7ICsJCQkJCWFzcHJpbnRmKCZhbXA7 b3B0cy0mZ3Q7c3FsLCIlcyVzLCIsb3B0cy0mZ3Q7c3FsLDxicj4KJmd0OyArCQkJCQkJIHNwYWNl X2RlZi0mZ3Q7ZmllbGRzW2ZpZWxkbm9dLm5hbWUpOzxicj4KJmd0OyArCQkJCX0gZWxzZSB7PGJy PgomZ3Q7ICsJCQkJCWFzcHJpbnRmKCZhbXA7b3B0cy0mZ3Q7c3FsLCIlcyAlcywiLG9wdHMtJmd0 O3NxbCw8YnI+CiZndDsgKwkJCQkJCSBzcGFjZV9kZWYtJmd0O2ZpZWxkc1tmaWVsZG5vXS5uYW1l KTs8YnI+CiZndDsgKwkJCQl9PGJyPgomZ3Q7ICsJCQl9PGJyPgomZ3Q7ICsJCX0gZWxzZSB7PGJy PgomZ3Q7ICsJCQlhc3NlcnQocENFeHByLSZndDtvcCA9PSBUS19DT0xVTU4pOzxicj4KPGJyPgox OC4gU28gSSBzZWUgdGhpczo8YnI+CmlmIChzb21ldGhpbmcpIHs8YnI+CiZuYnNwOyZuYnNwOy4u Ljxicj4KfSBlbHNlIHs8YnI+CiZuYnNwOyZuYnNwO2Fzc2VydChzb21ldGhpbmcpOzxicj4KfTxi cj4KPGJyPgpWZXJ5IHN0cmFuZ2UuIFRoaXMgYXNzZXJ0IGZhaWxzIGFsd2F5cy48YnI+Cjxicj4K Jmd0OyArCQl9PGJyPgomZ3Q7ICs8YnI+CiZndDsgKwkJaWYgKHBMaXN0SXRlbS0mZ3Q7cEV4cHIt Jmd0O29wID09IFRLX0NPTExBVEUpIHs8YnI+Cjxicj4KMTkuIEhlcmUgeW91IGNvbXBsZXRlbHkg c2tpcHBlZCBjb2x1bW4gaW5pdGlhbGl6YXRpb24gd2hlbiBpdCBoYXM8YnI+CkNPTExBVEUuIFNl ZSBzcWxpdGUzRXhwclNraXBDb2xsYXRlLCB0aGUgc2FtZSBjb2RlIG9uIGxpbmUgMzIzNSwgYW5k PGJyPgpob3cgQ09MTEFURSBpcyBzdG9yZWQgaW4gRXhwciB0cmVlIChpdCByZXBsYWNlcyB0aGUg b3JpZ2luYWwgRXhwciBtYWtpbmc8YnI+Cml0IHRvIGJlIENPTExBVEUncyBjaGlscykuIFRoaXMg aXMgd2h5IGhlcmUgcExpc3QtJmd0O25FeHByIGlzIHRoZSBzYW1lIGFzPGJyPgpwYXJ0IGNvdW50 Ljxicj4KPGJyPgomZ3Q7ICsJCQljb25zdCBjaGFyICpjb2xsX25hbWUgPSBwTGlzdEl0ZW0tJmd0 O3BFeHByLSZndDt1LnpUb2tlbjs8YnI+CiZndDsgKwkJCWFzc2VydChjb2xsX25hbWUgIT0gTlVM TCk7PGJyPgomZ3Q7ICsJCQlzaXplX3QgY29sbF9uYW1lX2xlbiA9IHN0cmxlbihjb2xsX25hbWUp Ozxicj4KJmd0OyArCQkJc3RydWN0IGNvbGwgKmNvbGwgPSBjb2xsX2J5X25hbWUoY29sbF9uYW1l LCBjb2xsX25hbWVfbGVuKTs8YnI+CiZndDsgKzxicj4KJmd0OyArCQkJaWYgKGlzX2JpbmFyeV9j b2xsYXRpb24oY29sbF9uYW1lKSkgezxicj4KJmd0OyArCQkJCXBhcnRfZGVmX3RtcFtpXS5jb2xs X2lkID0gQ09MTF9OT05FOzxicj4KJmd0OyArCQkJfSBlbHNlIHs8YnI+CiZndDsgKwkJCQlhc3Nl cnQoY29sbCAhPSBOVUxMKTs8YnI+Cjxicj4KMjAuIFdoeT8gQ29sbGF0aW9uIGNhbiBiZSBub3Qg Zm91bmQuIFVzZSBzcWxpdGUzR2V0Q29sbFNlcS4gQnV0IGJlZm9yZSBkbzxicj4KcmViYXNlIG9u IHRoZSBsYXRlc3QgMi4wLiBZb3UgYnJhbmNoIGxvb2tzIHZlcnkgb3V0IG9mIGRhdGUuIE1hbnkg dGhpbmdzPGJyPgp3ZXJlIGNoYW5nZWQgYWZ0ZXIgdGhlIGxhdGVzdCAxLjEwIGludG8gMi4wIG1l cmdlLjxicj4KPGJyPgomZ3Q7ICsJCQkJcGFydF9kZWZfdG1wW2ldLmNvbGxfaWQgPSBjb2xsLSZn dDtpZDs8YnI+CiZndDsgKwkJCX08YnI+CiZndDsgKzxicj4KJmd0OyArCQkJaWYgKG9wdHMtJmd0 O3NxbCAhPSBOVUxMKSB7PGJyPgo8YnI+CjIxLiBIb3cgY2FuIGl0IGJlIE5VTEw/PGJyPgo8YnI+ CiZndDsgKwkJCQkvKjxicj4KJmd0OyArCQkJCSAqIElmIGluZGV4IHBhcnQgaGFzIGEgY29sbGF0 aW9uIHRoZW48YnI+CiZndDsgKwkJCQkgKiBjb3JyZXNwb25kaW5nIHBhcnQgb2Ygc3RhdGVtZW50 IHNob3VsZDxicj4KJmd0OyArCQkJCSAqIGJlIGNoYW5nZWQgZnJvbSAnY29sdW1uX25hbWUsJyB0 bzxicj4KJmd0OyArCQkJCSAqICdjb2x1bW5fbmFtZSBDT0xMQVRFIGNvbGxhdGlvbl9uYW1lLCcu PGJyPgomZ3Q7ICsJCQkJICovPGJyPgomZ3Q7ICsJCQkJb3B0cy0mZ3Q7c3FsW3N0cmxlbihvcHRz LSZndDtzcWwpIC0gMV0gPSAnICc7PGJyPgomZ3Q7ICsJCQkJYXNwcmludGYoJmFtcDtvcHRzLSZn dDtzcWwsIiVzQ09MTEFURSAlcywiLCBvcHRzLSZndDtzcWwsPGJyPgomZ3Q7ICsJCQkJCSBjb2xs X25hbWUpOzxicj4KPGJyPgoyMi4gSGVyZSBhbmQgaW4gYWxsIG90aGVycyBhc3ByaW50ZiB5b3Ug aGF2ZSBsZWFrIC0geW91IHJlc2V0IG9wdHMtJmd0O3NxbCB3aXRoIG5ldzxicj4KbWFsbG9jIChj YWxsZWQgaW4gYXNwcmludGYpLCBidXQgZG8gbm90IGZyZWUgdGhlIG9yaWdpbmFsLiBBbmQgcGxl YXNlLCB1c2UgcmVnaW9uPGJyPgppbnN0ZWFkLiBZb3UgY2FuIGFjY3VtdWxhdGUgU1FMIHBhcnRz IHZpYSBtdWx0aXBsZSByZWdpb25fYWxsb2MgKyBzaW5nbGU8YnI+CnJlZ2lvbl9qb2luICsgc3Ry ZHVwIGF0IHRoZSBlbmQuIEl0IG1ha2VzIGxlYWtzIGJlIGltcG9zc2libGUsIGFuZCBkb2VzIG5v dDxicj4KcmVxdWlyZSBhbnkgbWFsbG9jICsgZnJlZS48YnI+Cjxicj4KJmd0OyArCQkJfTxicj4K Jmd0OyArCQl9PGJyPgomZ3Q7ICsJCWlmIChwTGlzdEl0ZW0tJmd0O3BFeHByLSZndDtvcCAhPSBU S19DT0xVTU4gJmFtcDsmYW1wOzxicj4KJmd0OyArCQkgICAgcExpc3RJdGVtLSZndDtwRXhwci0m Z3Q7b3AgIT0gVEtfQ09MTEFURSkgezxicj4KJmd0OyArCQkJcHJpbnRmKCJlcnJvciAlZFxuIiwg cExpc3RJdGVtLSZndDtwRXhwci0mZ3Q7b3ApOzxicj4KJmd0OyArCQl9PGJyPgomZ3Q7ICsJfTxi cj4KJmd0OyArPGJyPgomZ3Q7ICsJaWYgKGlkeFR5cGUgPT0gU1FMSVRFX0lEWFRZUEVfQVBQREVG KSB7PGJyPgomZ3Q7ICsJCW9wdHMtJmd0O3NxbFtzdHJsZW4ob3B0cy0mZ3Q7c3FsKSAtIDFdID0g JyknOzxicj4KJmd0OyArCX08YnI+CiZndDsgKzxicj4KJmd0OyArCXN0cnVjdCBrZXlfcGFydF9k ZWYgKnBhcnRfZGVmID0gKHN0cnVjdCBrZXlfcGFydF9kZWYgKik8YnI+CiZndDsgKwkJbWFsbG9j KHNpemVvZigqcGFydF9kZWYpICogcGFydF9jb3VudCArIDEpOzxicj4KJmd0OyArPGJyPgomZ3Q7 ICsJbWVtY3B5KHBhcnRfZGVmLCBwYXJ0X2RlZl90bXAsIHNpemVvZigqcGFydF9kZWYpICogcGFy dF9jb3VudCk7PGJyPgomZ3Q7ICsJZnJlZShwYXJ0X2RlZl90bXApOzxicj4KJmd0OyArPGJyPgom Z3Q7ICsJc3RydWN0IGtleV9kZWYgKmtleV9kZWYgPSBrZXlfZGVmX25ld193aXRoX3BhcnRzKHBh cnRfZGVmLCBwYXJ0X2NvdW50KTs8YnI+CiZndDsgKwlhc3NlcnQoa2V5X2RlZiAhPSBOVUxMKTs8 YnI+Cjxicj4KMjMuIEFsbCB0aGlzIHRoaW5ncyBjYW4gYmUgcmVtb3ZlZCBieSB1c2FnZSBvZiBr ZXlfZGVmX25ldyArPGJyPgptdWx0aXBsZSBrZXlfZGVmX3NldF9wYXJ0Ljxicj4KPGJyPgomZ3Q7 ICs8YnI+CiZndDsgKwlzdHJ1Y3Qga2V5X2RlZiAqcGtfa2V5X2RlZjs8YnI+CiZndDsgKwlpZiAo aWR4VHlwZSA9PSBTUUxJVEVfSURYVFlQRV9BUFBERUYpIHs8YnI+CiZndDsgKwkJcGtfa2V5X2Rl ZiA9IHNwYWNlX2luZGV4X2tleV9kZWYoc3BhY2UsIDApOzxicj4KPGJyPgoyNC4gWW91IG11c3Qg bm90IHVzZSBhIHNwYWNlIGhlcmUuPGJyPgo8YnI+CiZndDsgKwl9IGVsc2Ugezxicj4KJmd0OyAr CQlwa19rZXlfZGVmID0gTlVMTDs8YnI+CiZndDsgKwl9PGJyPgomZ3Q7ICs8YnI+CiZndDsgKwll bnVtIGluZGV4X3R5cGUgZGVmYXVsdF90eXBlID0gVFJFRTs8YnI+CiZndDsgKzxicj4KJmd0OyAr CXByaW50Zigic3BhY2UgaWQgJWQgaW5kZXggbmFtZSAlcyBpbmRleCBpaWQgJWRcbiIsIHNwYWNl X2RlZi0mZ3Q7aWQsIG5hbWUsIGlpZCk7PGJyPgomZ3Q7ICsJcHJpbnRmKCJudWxsYWJsZXNcbiIp Ozxicj4KJmd0OyArCWZvciAodWludDMyX3QgaiA9IDA7IGogJmx0OyBrZXlfZGVmLSZndDtwYXJ0 X2NvdW50OyBqKyspezxicj4KJmd0OyArCQlwcmludGYoIiVkXG4iLCBrZXlfcGFydF9pc19udWxs YWJsZSgmYW1wO2tleV9kZWYtJmd0O3BhcnRzW2ldKSk7PGJyPjxicj4KPC9kaXY+CiAgICAgICAg ICAgIAogICAgICAgIAoJCTxiYXNlIHRhcmdldD0iX3NlbGYiIGhyZWY9Imh0dHBzOi8vZS5tYWls LnJ1LyI+Cgk8L2Rpdj4KCgkKPC9kaXY+CgoKPC9kaXY+CjwvYmxvY2txdW90ZT4KRml4ZWQgYWxs IG9mIHRoZSBjb21tZW50cycgaXNzdWVzLjxicj4KPGJyPi0tIDxicj5JdmFuIEtvcHRlbG92PGJy PjwvQk9EWT48L0hUTUw+Cg== ----ALT--A0xNJPsnoIfNexmYmsv6OPyvtiNBT4a31527265178-- ------A0xNJPsnoIfNexmYmsv6OPyvtiNBT4a3-016AIHbRkUl7M2G7-1527265178 Content-Type: application/x-patch; name="=?UTF-8?B?MDAwMS1hZGQtaW5kZXhfZGVmLXRvLUluZGV4LnBhdGNo?=" Content-Disposition: attachment; filename="=?UTF-8?B?MDAwMS1hZGQtaW5kZXhfZGVmLXRvLUluZGV4LnBhdGNo?=" Content-Transfer-Encoding: base64 RnJvbSBmNzYzMzg2YzYxNGI1MzA4ZWUwNTBiOWQ2YTA5Mzk4NzhmYTY0OGJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJdmFuIEtvcHRlbG92IDxpdmFuLmtvcHRlbG92QHRhcmFudG9v bC5vcmc+CkRhdGU6IEZyaSwgMjUgTWF5IDIwMTggMTk6MTE6MzUgKzAzMDAKU3ViamVjdDogW1BB VENIXSBhZGQgaW5kZXhfZGVmIHRvIEluZGV4CgpnaXRodWIgYnJhbmNoOiBodHRwczovL2dpdGh1 Yi5jb20vdGFyYW50b29sL3RhcmFudG9vbC90cmVlL3NiL2doLTMzNjktdXNlLWluZGV4LWRlZi1p bi1zZWxlY3QtYW5kLXdoZXJlCi0tLQogc3JjL2JveC9zcWwvYnVpbGQuYyAgICAgfCAxNTYgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYm94L3Nx bC9zcWxpdGVJbnQuaCB8ICAgMSArCiAyIGZpbGVzIGNoYW5nZWQsIDE1NyBpbnNlcnRpb25zKCsp CgpkaWZmIC0tZ2l0IGEvc3JjL2JveC9zcWwvYnVpbGQuYyBiL3NyYy9ib3gvc3FsL2J1aWxkLmMK aW5kZXggZTM3NjI5NTllLi4wOWUwNTk4NTggMTAwNjQ0Ci0tLSBhL3NyYy9ib3gvc3FsL2J1aWxk LmMKKysrIGIvc3JjL2JveC9zcWwvYnVpbGQuYwpAQCAtMjUxLDYgKzI1MSw4IEBAIHNxbGl0ZTNM b2NhdGVJbmRleChzcWxpdGUzICogZGIsIGNvbnN0IGNoYXIgKnpOYW1lLCBjb25zdCBjaGFyICp6 VGFibGUpCiBzdGF0aWMgdm9pZAogZnJlZUluZGV4KHNxbGl0ZTMgKiBkYiwgSW5kZXggKiBwKQog eworCWlmIChwLT5kZWYgIT0gTlVMTCkKKwkJaW5kZXhfZGVmX2RlbGV0ZShwLT5kZWYpOwogCXNx bF9leHByX2ZyZWUoZGIsIHAtPnBQYXJ0SWR4V2hlcmUsIGZhbHNlKTsKIAlzcWxpdGUzRXhwckxp c3REZWxldGUoZGIsIHAtPmFDb2xFeHByKTsKIAlzcWxpdGUzRGJGcmVlKGRiLCBwLT56Q29sQWZm KTsKQEAgLTI4MjAsNiArMjgyMiwxNTEgQEAgaW5kZXhfaXNfdW5pcXVlKEluZGV4ICppZHgpCiAJ cmV0dXJuIHRudF9pbmRleC0+ZGVmLT5vcHRzLmlzX3VuaXF1ZTsKIH0KIAordWludDMyX3QKK2dl dF9uZXdfaWlkKEluZGV4ICppbmRleGVzKQoreworCXVpbnQzMl90IG1heF9paWQgPSAwOworCUlu ZGV4ICppZHg7CisKKwlpZiAoaW5kZXhlcyA9PSBOVUxMKQorCQlyZXR1cm4gMDsKKworCWZvciAo aWR4ID0gaW5kZXhlczsgaWR4OyBpZHggPSBpZHgtPnBOZXh0KQorCQltYXhfaWlkID0gaWR4LT5k ZWYtPmlpZCA+IG1heF9paWQgPyBpZHgtPmRlZi0+aWlkIDogbWF4X2lpZDsKKworCXJldHVybiBt YXhfaWlkICsgMTsKK30KKwordm9pZAorYXBwZW5kKHN0cnVjdCByZWdpb24gKnIsIGNvbnN0IGNo YXIgKnN0ciwgY2hhciAqKnNxbF9hcnIsIGludCBpZHgsIGludCB0b3RhbF9zcWxfc3RyX3NpemUp Cit7CisJc3FsX2FycltpZHhdID0gcmVnaW9uX2FsbG9jKHIsIHN0cmxlbihzdHIpKTsKKwlzdHJj cHkoc3FsX2FycltpZHhdLCBzdHIpOworCXRvdGFsX3NxbF9zdHJfc2l6ZSArPSBzdHJsZW4oc3Ry KTsKK30KKworY2hhciAqCitjcmVhdGVfc3FsKGNvbnN0IGNoYXIgKmlkeF9uYW1lLCBzdHJ1Y3Qg c3BhY2VfZGVmICpzcGFjZV9kZWYsIEV4cHJMaXN0ICpleHByX2xpc3QpCit7CisJc3RydWN0IHJl Z2lvbiAqciA9ICZmaWJlcigpLT5nYzsKKwkvKgorCSAqIENSRUFURV9JTkRFWF8gKyBJTkRFWF9O QU1FICsgX09OXyArIFRBQkxFX05BTUUgKyBfKAorCSAqLworCXVpbnQzMl90IHNxbF9wYXJ0c19j b3VudCA9IDU7CisJRXhwciAqY29sdW1uX2V4cHI7CisJZm9yICh1aW50MzJfdCBpID0gMDsgaSA8 ICh1aW50MzJfdCkgZXhwcl9saXN0LT5uRXhwcjsgaSsrKXsKKwkJY29sdW1uX2V4cHIgPSBzcWxp dGUzRXhwclNraXBDb2xsYXRlKGV4cHJfbGlzdC0+YVtpXS5wRXhwcik7CisJCXNxbF9wYXJ0c19j b3VudCArPSBleHByX2xpc3QtPmFbaV0ucEV4cHIgPT0gY29sdW1uX2V4cHIgPyAyIDogNDsKKwl9 CisKKwlzaXplX3QgdG90YWxfc3FsX3N0cl9zaXplID0gMDsKKworCWNoYXIgKipzcWwgPSByZWdp b25fYWxsb2Mociwgc2l6ZW9mKGNoYXIqKSAqIHNxbF9wYXJ0c19jb3VudCk7CisKKwljaGFyICpD UkVBVEVfSU5ERVggPSAiQ1JFQVRFIElOREVYICI7CisJYXBwZW5kKHIsIENSRUFURV9JTkRFWCwg c3FsLCAwLCB0b3RhbF9zcWxfc3RyX3NpemUpOworCWFwcGVuZChyLCBpZHhfbmFtZSwgc3FsLCAx LCB0b3RhbF9zcWxfc3RyX3NpemUpOworCisJY2hhciAqT04gPSAiIE9OICI7CisJYXBwZW5kKHIs IE9OLCBzcWwsIDIsIHRvdGFsX3NxbF9zdHJfc2l6ZSk7CisKKwljaGFyICpuYW1lID0gc3BhY2Vf ZGVmLT5uYW1lOworCWFwcGVuZChyLCBuYW1lLCBzcWwsIDMsIHRvdGFsX3NxbF9zdHJfc2l6ZSk7 CisJYXBwZW5kKHIsICIgKCIsIHNxbCwgNCwgdG90YWxfc3FsX3N0cl9zaXplKTsKKworCUV4cHIg KmNvbGxhdGlvbl9leHByOworCXVpbnQzMl90IHNxbF9pZHggPSA1OworCWZvciAoaW50IGkgPSAw OyBpIDwgZXhwcl9saXN0LT5uRXhwcjsgaSsrKXsKKwkJY29sdW1uX2V4cHIgPSBzcWxpdGUzRXhw clNraXBDb2xsYXRlKGV4cHJfbGlzdC0+YVtpXS5wRXhwcik7CisJCWNvbGxhdGlvbl9leHByID0g ZXhwcl9saXN0LT5hW2ldLnBFeHByID09IGNvbHVtbl9leHByID8KKwkJCQkgTlVMTCA6IGV4cHJf bGlzdC0+YVtpXS5wRXhwcjsKKworCQluYW1lID0gc3BhY2VfZGVmLT5maWVsZHNbY29sdW1uX2V4 cHItPmlDb2x1bW5dLm5hbWU7CisKKwkJaWYgKGNvbGxhdGlvbl9leHByID09IE5VTEwpeworCQkJ YXBwZW5kKHIsIG5hbWUsIHNxbCwgc3FsX2lkeCwgdG90YWxfc3FsX3N0cl9zaXplKTsKKwkJCXNx bF9pZHgrKzsKKworCQkJYXBwZW5kKHIsICIsICIsIHNxbCwgc3FsX2lkeCwgdG90YWxfc3FsX3N0 cl9zaXplKTsKKwkJCXNxbF9pZHgrKzsKKworCQl9IGVsc2UgeworCQkJYXBwZW5kKHIsIG5hbWUs IHNxbCwgc3FsX2lkeCwgdG90YWxfc3FsX3N0cl9zaXplKTsKKwkJCXNxbF9pZHgrKzsKKworCQkJ Y2hhciAqQ09MTEFURSA9ICIgQ09MTEFURSAiOworCQkJYXBwZW5kKHIsIENPTExBVEUsIHNxbCwg c3FsX2lkeCwgdG90YWxfc3FsX3N0cl9zaXplKTsKKwkJCXNxbF9pZHgrKzsKKworCQkJY2hhciAq Y29sbF9uYW1lID0gY29sbGF0aW9uX2V4cHItPnUuelRva2VuOworCQkJYXBwZW5kKHIsIGNvbGxf bmFtZSwgc3FsLCBzcWxfaWR4LCB0b3RhbF9zcWxfc3RyX3NpemUpOworCQkJc3FsX2lkeCsrOwor CisJCQlhcHBlbmQociwgIiwgIiwgc3FsLCBzcWxfaWR4LCB0b3RhbF9zcWxfc3RyX3NpemUpOwor CQkJc3FsX2lkeCsrOworCQl9CisJfQorCisJLy8gZml4IGxhc3QgIiwgIiB3aXRoICIpXDAiCisJ c3RyY3B5KHNxbFtzcWxfaWR4IC0gMV0sICIpXDAiKTsKKwljaGFyICpyZXMgPSByZWdpb25fam9p bihyLCB0b3RhbF9zcWxfc3RyX3NpemUpOworCXJldHVybiByZXM7Cit9CisKK3ZvaWQKK3NldF9p bmRleF9kZWYoUGFyc2UgKnBhcnNlLCBJbmRleCAqaW5kZXgsIFRhYmxlICp0YWJsZSwKKwkJCQkg ICBjb25zdCBjaGFyICpuYW1lLAorCQkJCSAgIHVpbnQzMl90IG5hbWVfbGVuLCBpbnQgb25fZXJy b3IsCisJCQkJICAgRXhwckxpc3QgKmV4cHJfbGlzdCwgdTggaWR4X3R5cGUpCit7CisJc3RydWN0 IHNwYWNlX2RlZiAqc3BhY2VfZGVmID0gdGFibGUtPmRlZjsKKworCXVpbnQzMl90IGlpZCA9IGdl dF9uZXdfaWlkKHRhYmxlLT5wSW5kZXgpOworCXN0cnVjdCBpbmRleF9vcHRzIG9wdHM7CisJaW5k ZXhfb3B0c19jcmVhdGUoJm9wdHMpOworCW9wdHMuc3RhdCA9IE5VTEw7CisJb3B0cy5pc191bmlx dWUgPSBvbl9lcnJvciAhPSBPTl9DT05GTElDVF9BQ1RJT05fTk9ORTsKKworCXN0cnVjdCBrZXlf ZGVmICprZXlfZGVmID0ga2V5X2RlZl9uZXcoZXhwcl9saXN0LT5uRXhwcik7CisKKwlpZiAoaWR4 X3R5cGUgPT0gU1FMSVRFX0lEWFRZUEVfQVBQREVGKSB7CisJCW9wdHMuc3FsID0gY3JlYXRlX3Nx bChuYW1lLCB0YWJsZS0+ZGVmLCBleHByX2xpc3QpOworCX0KKworCWludCBpID0gMDsKKwlFeHBy ICpjb2x1bW5fZXhwcjsKKwlFeHByICpjb2xsYXRpb25fZXhwcjsKKwlmb3IgKGkgPSAwOyBpIDwg ZXhwcl9saXN0LT5uRXhwcjsgaSsrKSB7CisJCWNvbHVtbl9leHByID0gc3FsaXRlM0V4cHJTa2lw Q29sbGF0ZShleHByX2xpc3QtPmFbaV0ucEV4cHIpOworCQljb2xsYXRpb25fZXhwciA9IGV4cHJf bGlzdC0+YVtpXS5wRXhwciA9PSBjb2x1bW5fZXhwciA/CisJCQkJIE5VTEwgOiBleHByX2xpc3Qt PmFbaV0ucEV4cHI7CisKKwkJdWludDMyX3QgZmllbGRubyA9IGNvbHVtbl9leHByLT5pQ29sdW1u OworCisJCXVpbnQzMl90IGNvbGxfaWQ7CisJCXN0cnVjdCBjb2xsICpjb2xsOworCQlpZiAoY29s bGF0aW9uX2V4cHIgIT0gTlVMTCkKKwkJCWNvbGwgPSBzcWxfZ2V0X2NvbGxfc2VxKHBhcnNlLCBj b2xsYXRpb25fZXhwci0+dS56VG9rZW4sJmNvbGxfaWQpOworCQllbHNlCisJCQljb2xsID0gc3Fs X2NvbHVtbl9jb2xsYXRpb24oc3BhY2VfZGVmLCBmaWVsZG5vLCAmY29sbF9pZCk7CisKKwkJa2V5 X2RlZl9zZXRfcGFydChrZXlfZGVmLCBpLCBmaWVsZG5vLAorCQkJCXNwYWNlX2RlZi0+ZmllbGRz W2ZpZWxkbm9dLnR5cGUsCisJCQkJc3BhY2VfZGVmLT5maWVsZHNbZmllbGRub10ubnVsbGFibGVf YWN0aW9uLAorCQkJCWNvbGwsIGNvbGxfaWQsIFNPUlRfT1JERVJfQVNDKTsKKwl9CisKKwlzdHJ1 Y3Qga2V5X2RlZiAqcGtfa2V5X2RlZjsKKwlpZiAoaWR4X3R5cGUgPT0gU1FMSVRFX0lEWFRZUEVf QVBQREVGKSB7CisJCXBrX2tleV9kZWYgPSB0YWJsZS0+cEluZGV4LT5kZWYtPmtleV9kZWY7CisJ fSBlbHNlIHsKKwkJcGtfa2V5X2RlZiA9IE5VTEw7CisJfQorCisJaW5kZXgtPmRlZiA9IGluZGV4 X2RlZl9uZXcoc3BhY2VfZGVmLT5pZCwgaWlkLCBuYW1lLCBuYW1lX2xlbiwKKwkJCSAgICAgVFJF RSwgJm9wdHMsIGtleV9kZWYsIHBrX2tleV9kZWYpOworfQorCiB2b2lkCiBzcWxfY3JlYXRlX2lu ZGV4KHN0cnVjdCBQYXJzZSAqcGFyc2UsIHN0cnVjdCBUb2tlbiAqdG9rZW4sCiAJCSBzdHJ1Y3Qg U3JjTGlzdCAqdGJsX25hbWUsIHN0cnVjdCBFeHByTGlzdCAqY29sX2xpc3QsCkBAIC0zMTMzLDYg KzMyODAsMTAgQEAgc3FsX2NyZWF0ZV9pbmRleChzdHJ1Y3QgUGFyc2UgKnBhcnNlLCBzdHJ1Y3Qg VG9rZW4gKnRva2VuLAogCQkJCX0KIAkJCQlpZiAoaWR4X3R5cGUgPT0gU1FMSVRFX0lEWFRZUEVf UFJJTUFSWUtFWSkKIAkJCQkJcElkeC0+aWR4VHlwZSA9IGlkeF90eXBlOworCisJCQkJc2V0X2lu ZGV4X2RlZihwYXJzZSwgcEluZGV4LCBwVGFiLCB6TmFtZSwKKwkJCQkJICAgICAgbk5hbWUsIG9u X2Vycm9yLCBjb2xfbGlzdCwKKwkJCQkJICAgICAgaWR4X3R5cGUpOwogCQkJCWdvdG8gZXhpdF9j cmVhdGVfaW5kZXg7CiAJCQl9CiAJCX0KQEAgLTMxNDEsNiArMzI5MiwxMSBAQCBzcWxfY3JlYXRl X2luZGV4KHN0cnVjdCBQYXJzZSAqcGFyc2UsIHN0cnVjdCBUb2tlbiAqdG9rZW4sCiAJLyogTGlu ayB0aGUgbmV3IEluZGV4IHN0cnVjdHVyZSB0byBpdHMgdGFibGUgYW5kIHRvIHRoZSBvdGhlcgog CSAqIGluLW1lbW9yeSBkYXRhYmFzZSBzdHJ1Y3R1cmVzLgogCSAqLworCisJc2V0X2luZGV4X2Rl ZihwYXJzZSwgcEluZGV4LCBwVGFiLCB6TmFtZSwKKwkJICAgICAgbk5hbWUsIG9uX2Vycm9yLCBj b2xfbGlzdCwKKwkJICAgICAgaWR4X3R5cGUpOworCiAJYXNzZXJ0KHBhcnNlLT5uRXJyID09IDAp OwogCWlmIChkYi0+aW5pdC5idXN5KSB7CiAJCUluZGV4ICpwOwpkaWZmIC0tZ2l0IGEvc3JjL2Jv eC9zcWwvc3FsaXRlSW50LmggYi9zcmMvYm94L3NxbC9zcWxpdGVJbnQuaAppbmRleCA5NTA0MDlk OTMuLmZlNjFkYWNmZSAxMDA2NDQKLS0tIGEvc3JjL2JveC9zcWwvc3FsaXRlSW50LmgKKysrIGIv c3JjL2JveC9zcWwvc3FsaXRlSW50LmgKQEAgLTIxMjQsNiArMjEyNCw3IEBAIHN0cnVjdCBJbmRl eCB7CiAJCQkJICogb3IgX05PTkUKIAkJCQkgKi8KIAl1bnNpZ25lZCBpZHhUeXBlOjI7CS8qIDE9 PVVOSVFVRSwgMj09UFJJTUFSWSBLRVksIDA9PUNSRUFURSBJTkRFWCAqLworICAgIAlzdHJ1Y3Qg aW5kZXhfZGVmICpkZWY7CiB9OwogCiAvKioKLS0gCjIuMTQuMyAoQXBwbGUgR2l0LTk4KQoK ------A0xNJPsnoIfNexmYmsv6OPyvtiNBT4a3-016AIHbRkUl7M2G7-1527265178--