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 752EC20A1B for ; Sun, 22 Apr 2018 03:25:51 -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 1a_ML7klYSM0 for ; Sun, 22 Apr 2018 03:25:51 -0400 (EDT) Received: from f303.i.mail.ru (f303.i.mail.ru [128.140.169.167]) (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 A155B20736 for ; Sun, 22 Apr 2018 03:25:50 -0400 (EDT) From: =?UTF-8?B?QnVsYXQgTmlhdHNoaW4=?= Subject: [tarantool-patches] =?UTF-8?B?UmU6IFt0YXJhbnRvb2wtcGF0Y2hlc10gUmU6IFtQQVRDSCBWMl0gc3FsOiBm?= =?UTF-8?B?aXggbm9uLXdvcmtpbmcgUkVQTEFDRSBvcHRpbWl6YXRpb24=?= MIME-Version: 1.0 Date: Sun, 22 Apr 2018 10:25:47 +0300 Message-ID: <1524381947.78992174@f303.i.mail.ru> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 In-Reply-To: <9A6F0200-0C9B-41A8-8184-FFA395864139@tarantool.org> References: <20180409051748.91507-1-niatshin@tarantool.org> <9A6F0200-0C9B-41A8-8184-FFA395864139@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, =?UTF-8?B?TmlraXRhIFBldHRpaw==?= SXNzdWU6Cmh0dHBzOi8vZ2l0aHViLmNvbS90YXJhbnRvb2wvdGFyYW50b29sL2lzc3Vlcy8zMjkz CgpCcmFuY2g6Cmh0dHBzOi8vZ2l0aHViLmNvbS90YXJhbnRvb2wvdGFyYW50b29sL3RyZWUvYm4v Z2gtMjk2My1wcm9wZXItcmVwbGFjZQoKSSBjbGVhcmx5IHVuZGVyc3RhbmQgdGhhdCBuZXcgYnJh bmNoIGlzIGRpZmZlcmVudCBmcm9tIHByZXZpb3VzIG9uZSwgYnV0IHRoaXMgcGF0Y2gKd2FzIG5l Y2Vzc2FyeSBmb3IgMzI5My4gQmVjYXVzZSBpbiBsYXN0IHJldmlldyB0aGVyZSB3ZXJlIG9ubHkg cmVtYXJrcyBhYm91dCBjb2Rlc3R5bGUsCkkgZGVjaWRlZCB0byB1c2UgdGhpcyBwYXRjaCBpbiBv cmRlciB0byBhY2NvbXBsaXNoIDMyOTMuCgoKPj5UaGlzIHBhdGNoIGNvbnRhaW5zIGZpeCBmb3Ig dGhhdCwgaW4gYWRkaXRpb24KPj5yZWxhdGVkIGNvZGUgd2FzIHJlZmFjdG9yZWQgYW5kIG5lY2Vz c2FyeSBjb21tZW50cyB3ZXJlIGFkZGVkLgo+Cj5Gcm9tIHRoaXMgbWVzc2FnZSBpdCBpcyBub3Qg Y2xlYXIgd2hhdCBidWcgeW91IGhhdmUgZml4ZWQuCj5JIGd1ZXNzIHRoYXQgdGhpcyBmaXggaXMg Zm9yIHBhcnRpY3VsYXIgY2FzZSwgd2hlbiDigJhPTiBDT05GTElDVCBSRVBMQUNF4oCZCj5pcyBh cHBsaWVkIHRvIFBLLiBCdXQgaXQgd291bGQgYmUgYmV0dGVyIHRvIGRlc2NyaWJlIG9yaWdpbnMg b2YgYnVnIGluIHRpY2tldC9jb21taXQgbWVzc2FnZS4KCkRvbmUsIG5ldyBjb21taXQgbWVzc2Fn ZToKCkluIHNvbWUgY2FzZXMgT04gQ09ORkxJQ1QgUkVQTEFDRS9JR05PUkUgY2FuIGJlIG9wdGlt aXplZC4gSWYKZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHRydWU6CjEpIFNwYWNlIGhhcyBQUklN QVJZIEtFWSBpbmRleCBvbmx5LgoyKSBUaGVyZSBhcmUgbm8gZm9yZWlnbiBrZXlzIHRvIG90aGVy IHNwYWNlcy4KMykgVGhlcmUgYXJlIG5vIGRlbGV0ZSB0cmlnZ2VycyB0byBiZSBmaXJlZCBpZiBj b25mbGljdCBoYXBwZW5zLgo0KSBUaGUgZXJyb3IgYWN0aW9uIGlzIFJFUExBQ0Ugb3IgSUdOT1JF LgoKVGhlbiB1bmlxdWVuZXNzIGNhbiBiZSBlbnN1cmVkIGJ5IFRhcmFudG9vbCBmYWNpbGl0aWVz LCB3aXRob3V0ClZEQkUgYnl0ZWNvZGUuIEhvd2V2ZXIsIGl0IGRpZG4ndCB3b3JrLCB0aGVyZSB3 YXMgYSBkdWJsaWNhdGUga2V5CmVycm9yIGR1cmluZyBpbnNlcnRpb24uIFRoaXMgcGF0Y2ggY29u dGFpbnMgZml4IGZvciB0aGF0LCBpbgphZGRpdGlvbiByZWxhdGVkIGNvZGUgd2FzIHJlZmFjdG9y ZWQgYW5kIG5lY2Vzc2FyeSBjb21tZW50cyB3ZXJlCmFkZGVkLgoKPj4gKyAqIFdoaWNoIGFjdGlv biB0byB0YWtlIGlzIGRldGVybWluZWQgYnkgdGhlIG92ZXJyaWRlX2Vycm9yIHBhcmFtZXRlcgo+ Cj5OaXRwaWNraW5nOiBkb2VzbuKAmXQgZml0IGludG8gNjYgY2hhcnMuCgpEb25lLgoKKyAqIFdo aWNoIGFjdGlvbiB0byB0YWtlIGlzIGRldGVybWluZWQgYnkgdGhlIG92ZXJyaWRlX2Vycm9yCisg KiBwYXJhbWV0ZXIgaW4gc3RydWN0IG9uX2NvbmZsaWN0LgorICogT3IgaWYgb3ZlcnJpZGVfZXJy b3I9PU9OX0NPTkZMSUNUX0FDVElPTl9ERUZBVUxULCB0aGVuIHRoZQorICogcFBhcnNlLT5vbkVy cm9yIHBhcmFtZXRlciBpcyB1c2VkLiBPciBpZgorICogcFBhcnNlLT5vbkVycm9yPT1PTl9DT05G TElDVF9BQ1RJT05fREVGQVVMVCB0aGVuIHRoZSBvbl9lcnJvcgorICogdmFsdWUgZm9yIHRoZSBj b25zdHJhaW50IGlzIHVzZWQuCgo+Cj4+IGludCBzZWVuUmVwbGFjZSA9IDA7LyogVHJ1ZSBpZiBS RVBMQUNFIGlzIHVzZWQgdG8gcmVzb2x2ZSBJTlQgUEsgY29uZmxpY3QgKi8KPj4gaW50IG5Qa0Zp ZWxkOy8qIE51bWJlciBvZiBmaWVsZHMgaW4gUFJJTUFSWSBLRVkuICovCj4+IHU4IGlzVXBkYXRl Oy8qIFRydWUgaWYgdGhpcyBpcyBhbiBVUERBVEUgb3BlcmF0aW9uICovCj4+IHU4IGJBZmZpbml0 eURvbmUgPSAwOy8qIFRydWUgaWYgdGhlIE9QX0FmZmluaXR5IG9wZXJhdGlvbiBoYXMgYmVlbiBy dW4gKi8KPj4gc3RydWN0IHNlc3Npb24gKnVzZXJfc2Vzc2lvbiA9IGN1cnJlbnRfc2Vzc2lvbigp Owo+PiArZW51bSBvbl9jb25mbGljdF9hY3Rpb24gb3ZlcnJpZGVfZXJyb3IgPSBvbl9jb25mbGlj dC0+b3ZlcnJpZGVfZXJyb3I7Cj4+ICtlbnVtIG9uX2NvbmZsaWN0X2FjdGlvbiBvbl9lcnJvcjsK Pgo+Tml0cGlja2luZzogeW91IGRvbuKAmXQgaGF2ZSB0byBkZWNsYXJlIHZhcmlhYmxlcwo+YmVm b3JlaGFuZCBhcyBpdCBoYXBwZW5zIGluIEM4OS4KCkRvbmUsCgorCWVudW0gb25fY29uZmxpY3Rf YWN0aW9uIG92ZXJyaWRlX2Vycm9yID0gb25fY29uZmxpY3QtPm92ZXJyaWRlX2Vycm9yOworCWVu dW0gb25fY29uZmxpY3RfYWN0aW9uIG9uX2Vycm9yOwogCS8qIFRlc3QgYWxsIE5PVCBOVUxMIGNv bnN0cmFpbnRzLgogCSovCiAJZm9yIChpID0gMDsgaSA8IG5Db2w7IGkrKykgewo+Cj4+ICtvbl9l cnJvciA9IHRhYmxlX2NvbHVtbl9udWxsYWJsZV9hY3Rpb24ocFRhYiwgaSk7Cj4+ICtpZiAob3Zl cnJpZGVfZXJyb3IgIT0gT05fQ09ORkxJQ1RfQUNUSU9OX0RFRkFVTFQpIHsKPj4gK29uX2Vycm9y ID0gb3ZlcnJpZGVfZXJyb3I7Cj4+ICt9IGVsc2UgaWYgKG9uX2Vycm9yID09IE9OX0NPTkZMSUNU X0FDVElPTl9ERUZBVUxUKSB7Cj4+ICtvbl9lcnJvciA9IE9OX0NPTkZMSUNUX0FDVElPTl9BQk9S VDsKPgo+Tml0cGlja2luZzogSSBndWVzcywgdGhpcyBlbHNlLWlmIGlzIHJlZHVuZGFudC4KPkl0 IHdvdWxkIGJlIGVub3VnaCBqdXN0IHRvIHVzZSDigJhlbHNl4oCZLCBzaW5jZSB5b3UgaGF2ZSBv bmx5IHR3byB2YXJpYW50czoKPm9uX2Vycm9yIGVxdWFscyB0byBkZWZhdWx0IGFjdGlvbiBvciBu b3QuCj5Nb3Jlb3ZlciwgZm9yIHRoaXMgcmVhc29uLCBvbl9lcnJvciA9IHRhYmxlX2NvbHVtbl9u dWxsYWJsZeKApiAtCj5pcyByZWR1bmRhbnQgZnVuY3Rpb24gY2FsbC4KCkl0IGlzIG5vdCByZWR1 bmRhbnQuIElmIG92ZXJyaWRlIGVycm9yIGlzIG5vdCBkZWZhdWx0LCB0aGVuIGl0IHNob3VsZCBi ZSB1c2VkCmluc3RlYWQgb2YgZXJyb3IgYWN0aW9uIGZvciBwYXJ0aWN1bGFyIE5PVCBOVUxML1VO SVFVRSBjb25zdHJhaW50LgpBQk9SVCBpcyBhIGRlZmF1bHQgZXJyb3IgYWN0aW9uLCBzbyB3ZSBz aG91bGQgZXhwbGljaXRseSBhc3NpZ24gaXQgaWYKZXJyb3IgYWN0aW9uIGluIGluZGV4L2NvbHVt biBpcyBkZWZhdWx0LiBSZWZhY3RvcmVkIHZlcnNpb246CgorCW9uX2Vycm9yID0gdGFibGVfY29s dW1uX251bGxhYmxlX2FjdGlvbihwVGFiLCBpKTsKKwlpZiAob3ZlcnJpZGVfZXJyb3IgIT0gT05f Q09ORkxJQ1RfQUNUSU9OX0RFRkFVTFQpCisJb25fZXJyb3IgPSBvdmVycmlkZV9lcnJvcjsKKwkv KiBBQk9SVCBpcyBhIGRlZmF1bHQgZXJyb3IgYWN0aW9uICovCisJaWYgKG9uX2Vycm9yID09IE9O X0NPTkZMSUNUX0FDVElPTl9ERUZBVUxUKQorCW9uX2Vycm9yID0gT05fQ09ORkxJQ1RfQUNUSU9O X0FCT1JUOworCgo+Cj4+IC1hc3NlcnQob25FcnJvciA9PSBPTl9DT05GTElDVF9BQ1RJT05fUk9M TEJBQ0sKPj4gLSAgICAgICB8fCBvbkVycm9yID09IE9OX0NPTkZMSUNUX0FDVElPTl9BQk9SVAo+ PiAtICAgICAgIHx8IG9uRXJyb3IgPT0gT05fQ09ORkxJQ1RfQUNUSU9OX0ZBSUwKPj4gLSAgICAg ICB8fCBvbkVycm9yID09IE9OX0NPTkZMSUNUX0FDVElPTl9JR05PUkUKPj4gLSAgICAgICB8fCBv bkVycm9yID09IE9OX0NPTkZMSUNUX0FDVElPTl9SRVBMQUNFKTsKPgo+SSBndWVzcywgdGhpcyBh c3NlcnQgdXNlZCB0byBjaGVjayB0aGF0IG9uX2Vycm9yIGFjdGlvbiBpcyBub3QgTk9ORS4KPkFu ZCBzaW5jZSB5b3UgYXJlIHVzaW5nIGVudW0sIGFkZCBzaW1wbGUgYXNzZXQob25fZXJyb3IgIT0g 4oCmX05PTkUpCgotCWFzc2VydChvbkVycm9yID09IE9OX0NPTkZMSUNUX0FDVElPTl9ST0xMQkFD SwotCXx8IG9uRXJyb3IgPT0gT05fQ09ORkxJQ1RfQUNUSU9OX0FCT1JUCi0JfHwgb25FcnJvciA9 PSBPTl9DT05GTElDVF9BQ1RJT05fRkFJTAotCXx8IG9uRXJyb3IgPT0gT05fQ09ORkxJQ1RfQUNU SU9OX0lHTk9SRQotCXx8IG9uRXJyb3IgPT0gT05fQ09ORkxJQ1RfQUNUSU9OX1JFUExBQ0UpOwot CXN3aXRjaCAob25FcnJvcikgeworCWFzc2VydChvbl9lcnJvciAhPSBPTl9DT05GTElDVF9BQ1RJ T05fTk9ORSk7CisJc3dpdGNoIChvbl9lcnJvcikgewoKPj4gLWlmIChvdmVycmlkZUVycm9yICE9 IE9OX0NPTkZMSUNUX0FDVElPTl9ERUZBVUxUKSB7Cj4+IC1vbkVycm9yID0gb3ZlcnJpZGVFcnJv cjsKPj4gLX0gZWxzZSBpZiAob25FcnJvciA9PSBPTl9DT05GTElDVF9BQ1RJT05fREVGQVVMVCkg ewo+PiAtb25FcnJvciA9IE9OX0NPTkZMSUNUX0FDVElPTl9BQk9SVDsKPj4gKwo+PiAraWYgKG92 ZXJyaWRlX2Vycm9yICE9IE9OX0NPTkZMSUNUX0FDVElPTl9ERUZBVUxUKSB7Cj4+ICtvbl9lcnJv ciA9IG92ZXJyaWRlX2Vycm9yOwo+PiArfSBlbHNlIGlmIChvbl9lcnJvciA9PSBPTl9DT05GTElD VF9BQ1RJT05fREVGQVVMVCkgewo+PiArb25fZXJyb3IgPSBPTl9DT05GTElDVF9BQ1RJT05fQUJP UlQ7Cj4+IH0KPgo+Tml0cGlja2luZzogdGhlIHNhbWUgaXMgaGVyZTogJ2Vsc2UtaWbigJkgY2Fu IGJlIHJlcGxhY2VkIHdpdGggc2ltcGxlIOKAmGVsc2XigJkuCgpTYW1lLCBzZWUgY2hhbmdlcyBh Ym92ZS4KCj4KPj4gaWYgKChpeCA9PSAwICYmIHBJZHgtPnBOZXh0ID09IDApLyogQ29uZGl0aW9u IDIgKi8KPj4gLSAgICAmJiBvbkVycm9yID09IE9OX0NPTkZMSUNUX0FDVElPTl9SRVBMQUNFLyog Q29uZGl0aW9uIDEgKi8KPj4gLSAgICAmJiAoMCA9PSAodXNlcl9zZXNzaW9uLT5zcWxfZmxhZ3Mg JiBTUUxJVEVfUmVjVHJpZ2dlcnMpLyogQ29uZGl0aW9uIDMgKi8KPj4gKyAgICAvKiBDb25kaXRp b24gMSAqLwo+PiArICAgICYmIChvbl9lcnJvciA9PSBPTl9DT05GTElDVF9BQ1RJT05fUkVQTEFD RSB8fAo+PiArb25fZXJyb3IgPT0gT05fQ09ORkxJQ1RfQUNUSU9OX0lHTk9SRSkKPj4gKyAgICAv KiBDb25kaXRpb24gMyAqLwo+PiArICAgICYmICgwID09ICh1c2VyX3Nlc3Npb24tPnNxbF9mbGFn cyAmIFNRTElURV9SZWNUcmlnZ2VycykKPj4gfHwwID09IHNxbGl0ZTNUcmlnZ2Vyc0V4aXN0KHBU YWIsIFRLX0RFTEVURSwgMCwgMCkpCj4KPk5pdHBpY2tpbmc6IHBsYWNlIHNwYWNlIGFmdGVyIHx8 LiBPdmVyYWxsLCB0aGlzIGh1Z2Ug4oCYaWYnIGxvb2tzIGJhZC1mb3JtYXR0ZWQuCgorCS8qCisJ KiBDb2xsaXNpb24gZGV0ZWN0aW9uIG1heSBiZSBvbWl0dGVkIGlmIGFsbCBvZgorCSogdGhlIGZv bGxvd2luZyBhcmUgdHJ1ZToKKwkqICgxKSBUaGUgY29uZmxpY3QgcmVzb2x1dGlvbiBhbGdvcml0 aG0gaXMKKwkqIFJFUExBQ0Ugb3IgSUdOT1JFLgorCSogKDIpIFRoZXJlIGFyZSBubyBzZWNvbmRh cnkgaW5kZXhlcyBvbiB0aGUKKwkqIHRhYmxlLgorCSogKDMpIE5vIGRlbGV0ZSB0cmlnZ2VycyBu ZWVkIHRvIGJlIGZpcmVkIGlmCisJKiB0aGVyZSBpcyBhIGNvbmZsaWN0LgorCSogKDQpIE5vIEZL IGNvbnN0cmFpbnQgY291bnRlcnMgbmVlZCB0byBiZQorCSogdXBkYXRlZCBpZiBhIGNvbmZsaWN0 IG9jY3Vycy4KIAkqLwotCWlmICgoaXggPT0gMCAmJiBwSWR4LT5wTmV4dCA9PSAwKQkvKiBDb25k aXRpb24gMiAqLwotCSYmIG9uRXJyb3IgPT0gT05fQ09ORkxJQ1RfQUNUSU9OX1JFUExBQ0UJLyog Q29uZGl0aW9uIDEgKi8KLQkmJiAoMCA9PSAodXNlcl9zZXNzaW9uLT5zcWxfZmxhZ3MgJiBTUUxJ VEVfUmVjVHJpZ2dlcnMpCS8qIENvbmRpdGlvbiAzICovCi0JfHwwID09IHNxbGl0ZTNUcmlnZ2Vy c0V4aXN0KHBUYWIsIFRLX0RFTEVURSwgMCwgMCkpCi0JJiYgKDAgPT0gKHVzZXJfc2Vzc2lvbi0+ c3FsX2ZsYWdzICYgU1FMSVRFX0ZvcmVpZ25LZXlzKSB8fAkvKiBDb25kaXRpb24gNCAqLwotCSgw ID09IHBUYWItPnBGS2V5ICYmIDAgPT0gc3FsaXRlM0ZrUmVmZXJlbmNlcyhwVGFiKSkpCi0JKSB7 CisJYm9vbCBub19zZWNvbmRhcnlfaW5kZXhlcyA9IChpeCA9PSAwICYmCisJcElkeC0+cE5leHQg PT0gMCk7CisJYm9vbCBwcm9wZXJfZXJyb3JfYWN0aW9uID0KKwkob25fZXJyb3IgPT0gT05fQ09O RkxJQ1RfQUNUSU9OX1JFUExBQ0UgfHwKKwlvbl9lcnJvciA9PSBPTl9DT05GTElDVF9BQ1RJT05f SUdOT1JFKTsKKwlib29sIG5vX2RlbGV0ZV90cmlnZ2VycyA9CisJKDAgPT0gKHVzZXJfc2Vzc2lv bi0+c3FsX2ZsYWdzICYKKwlTUUxJVEVfUmVjVHJpZ2dlcnMpIHx8CisJMCA9PSBzcWxpdGUzVHJp Z2dlcnNFeGlzdChwVGFiLAorCVRLX0RFTEVURSwKKwkwLCAwKSk7CisJYm9vbCBub19mb3JlaWdu X2tleXMgPQorCSgwID09ICh1c2VyX3Nlc3Npb24tPnNxbF9mbGFncyAmCisJU1FMSVRFX0ZvcmVp Z25LZXlzKSB8fAorCSgwID09IHBUYWItPnBGS2V5ICYmCisJMCA9PSBzcWxpdGUzRmtSZWZlcmVu Y2VzKHBUYWIpKSk7CisKKwlpZiAobm9fc2Vjb25kYXJ5X2luZGV4ZXMgJiYgbm9fZm9yZWlnbl9r ZXlzICYmCisJcHJvcGVyX2Vycm9yX2FjdGlvbiAmJiBub19kZWxldGVfdHJpZ2dlcnMpIHsKKwkv KgorCSogU2F2ZSB0aGF0IHBvc3NpYmxlIG9wdGltaXplZCBlcnJvcgorCSogYWN0aW9uLCB3aGlj aCBjYW4gYmUgdXNlZCBsYXRlcgorCSogZHVyaW5nIGV4ZWN1dGlvbiBvZgorCSogdmRiZV9lbWl0 X2luc2VydGlvbl9jb21wbGV0aW9uKCkuCisJKi8KKwlvbl9jb25mbGljdC0+b3B0aW1pemVkX2Fj dGlvbiA9IG9uX2Vycm9yOwogCXNxbGl0ZTNWZGJlUmVzb2x2ZUxhYmVsKHYsIGFkZHJVbmlxdWVP ayk7CiAJY29udGludWU7CiAJfQoKCj4KPj4gLS8qIEdlbmVyYXRlIGNvZGUgdGhhdCBleGVjdXRl cyBpZiB0aGUgbmV3IGluZGV4IGVudHJ5IGlzIG5vdCB1bmlxdWUgKi8KPj4gLWFzc2VydChvbkVy cm9yID09IE9OX0NPTkZMSUNUX0FDVElPTl9ST0xMQkFDSwo+PiAtICAgICAgIHx8IG9uRXJyb3Ig PT0gT05fQ09ORkxJQ1RfQUNUSU9OX0FCT1JUCj4+IC0gICAgICAgfHwgb25FcnJvciA9PSBPTl9D T05GTElDVF9BQ1RJT05fRkFJTAo+PiAtICAgICAgIHx8IG9uRXJyb3IgPT0gT05fQ09ORkxJQ1Rf QUNUSU9OX0lHTk9SRQo+PiAtICAgICAgIHx8IG9uRXJyb3IgPT0gT05fQ09ORkxJQ1RfQUNUSU9O X1JFUExBQ0UpOwo+Cj5UaGUgc2FtZSBpcyBoZXJlOiBhZGQgc2ltcGxlIGFzc2VydChvbl9lcnJv ciAhPSBPTl9DT05GTElDVF9BQ1RJT05fTk9ORSkuCgpEb25lLAorCWFzc2VydChvbl9lcnJvciAh PSBPTl9DT05GTElDVF9BQ1RJT05fTk9ORSk7CisJc3dpdGNoIChvbl9lcnJvcikgewoKCj4KPj4g dm9pZAo+PiAtdmRiZV9lbWl0X2luc2VydGlvbl9jb21wbGV0aW9uKFZkYmUgKnYsIGludCBjdXJz b3JfaWQsIGludCB0dXBsZV9pZCwgdTggb25fZXJyb3IpCj4+ICt2ZGJlX2VtaXRfaW5zZXJ0aW9u X2NvbXBsZXRpb24oVmRiZSAqdiwgaW50IGN1cnNvcl9pZCwgaW50IHR1cGxlX2lkLAo+PiArICAg ICAgIHN0cnVjdCBvbl9jb25mbGljdCAqb25fY29uZmxpY3QpCj4KPlVwZGF0ZSBjb21tZW50IGF0 IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGluIHNxbGl0ZUludC5oCj5BbHNvLCB5b3UgaGF2ZSBub3Rp Y2VhYmx5IGNoYW5nZWQgZnVuY3Rpb27igJlzIGxvZ2ljLAo+c28gcmVmbGVjdCBpdCBpbiBjb21t ZW50cyBzb21ld2hlcmUuCgogLyoqCiAgKiBUaGlzIHJvdXRpbmUgZ2VuZXJhdGVzIGNvZGUgdG8g ZmluaXNoIHRoZSBJTlNFUlQgb3IgVVBEQVRFCiAgKiBvcGVyYXRpb24gdGhhdCB3YXMgc3RhcnRl ZCBieSBhIHByaW9yIGNhbGwgdG8KQEAgLTM2OTEsMTEgKzM3MTgsMTMgQEAgdm9pZCBzcWxpdGUz R2VuZXJhdGVDb25zdHJhaW50Q2hlY2tzKFBhcnNlICosIFRhYmxlICosIGludCAqLCBpbnQsIGlu dCwgaW50LAogICogQHBhcmFtIHYgVmlydHVhbCBkYXRhYmFzZSBlbmdpbmUuCiAgKiBAcGFyYW0g Y3Vyc29yX2lkIFByaW1hcnkgaW5kZXggY3Vyc29yLgogICogQHBhcmFtIHR1cGxlX2lkIFJlZ2lz dGVyIHdpdGggZGF0YSB0byBpbnNlcnQuCi0gKiBAcGFyYW0gb25fZXJyb3IgRXJyb3IgYWN0aW9u IG9uIGZhaWxlZCBpbnNlcnQvcmVwbGFjZS4KKyAqIEBwYXJhbSBvbl9jb25mbGljdCBTdHJ1Y3R1 cmUsIHdoaWNoIGNvbnRhaW5zIG92ZXJyaWRlIGVycm9yCisgKiBhY3Rpb24gb24gZmFpbGVkIGlu c2VydC9yZXBsYWNlYW5kIGFuZCBvcHRpbWl6ZWQgZXJyb3IKKyAqIGFjdGlvbiBhZnRlciBnZW5l cmF0aW5nIGJ5dGVjb2RlIGZvciBjb25zdHJhaW50cyBjaGVja3MuCiAgKi8KIHZvaWQKIHZkYmVf ZW1pdF9pbnNlcnRpb25fY29tcGxldGlvbihWZGJlICp2LCBpbnQgY3Vyc29yX2lkLCBpbnQgdHVw bGVfaWQsCi0JdTggb25fZXJyb3IpOworCXN0cnVjdCBvbl9jb25mbGljdCAqb25fY29uZmxpY3Qp OwoKCj4KPj4gLWVsc2UKPj4gK30gZWxzZSB7Cj4+IG9wY29kZSA9IE9QX0lkeEluc2VydDsKPj4g K30KPj4gCj4KPk5pdHBpY2tpbmc6IGRvbuKAmXQgc2VwYXJhdGUgb25lLWxpbmUg4oCYaWYtZWxz ZScgd2l0aCBicmFja2V0cy4KCkRvbmUsCisJb3ZlcnJpZGVfZXJyb3IgPT0gT05fQ09ORkxJQ1Rf QUNUSU9OX0RFRkFVTFQpKQogCW9wY29kZSA9IE9QX0lkeFJlcGxhY2U7CiAJZWxzZQogCW9wY29k ZSA9IE9QX0lkeEluc2VydDsKCj4KPj4gdTE2IHBpa19mbGFncyA9IE9QRkxBR19OQ0hBTkdFOwo+ PiAtaWYgKG9uX2Vycm9yID09IE9OX0NPTkZMSUNUX0FDVElPTl9JR05PUkUpCj4+ICtpZiAob3Zl cnJpZGVfZXJyb3IgPT0gT05fQ09ORkxJQ1RfQUNUSU9OX0lHTk9SRSkKPj4gK3Bpa19mbGFncyB8 PSBPUEZMQUdfT0VfSUdOT1JFOwo+PiAraWYgKG92ZXJyaWRlX2Vycm9yID09IE9OX0NPTkZMSUNU X0FDVElPTl9JR05PUkUgfHwKPj4gKyAgICAob3B0aW1pemVkX2FjdGlvbiA9PSBPTl9DT05GTElD VF9BQ1RJT05fSUdOT1JFICYmCj4+ICsgICAgIG92ZXJyaWRlX2Vycm9yID09IE9OX0NPTkZMSUNU X0FDVElPTl9ERUZBVUxUKSkgewo+PiBwaWtfZmxhZ3MgfD0gT1BGTEFHX09FX0lHTk9SRTsKPgo+ WW91IGNhbiBtZXJnZSB0aGlzIOKAmGlm4oCZIGFuZCBwcmV2aW91cyBpbnRvIG9uZS4KCiAJdTE2 IHBpa19mbGFncyA9IE9QRkxBR19OQ0hBTkdFOwotCWlmIChvbl9lcnJvciA9PSBPTl9DT05GTElD VF9BQ1RJT05fSUdOT1JFKQorCWlmIChvdmVycmlkZV9lcnJvciA9PSBPTl9DT05GTElDVF9BQ1RJ T05fSUdOT1JFKQorCXBpa19mbGFncyB8PSBPUEZMQUdfT0VfSUdOT1JFOworCWVsc2UgaWYgKG92 ZXJyaWRlX2Vycm9yID09IE9OX0NPTkZMSUNUX0FDVElPTl9JR05PUkUgfHwKKwkob3B0aW1pemVk X2FjdGlvbiA9PSBPTl9DT05GTElDVF9BQ1RJT05fSUdOT1JFICYmCisJb3ZlcnJpZGVfZXJyb3Ig PT0gT05fQ09ORkxJQ1RfQUNUSU9OX0RFRkFVTFQpKQogCXBpa19mbGFncyB8PSBPUEZMQUdfT0Vf SUdOT1JFOwotCWVsc2UgaWYgKG9uX2Vycm9yID09IE9OX0NPTkZMSUNUX0FDVElPTl9GQUlMKQor CWVsc2UgaWYgKG92ZXJyaWRlX2Vycm9yID09IE9OX0NPTkZMSUNUX0FDVElPTl9GQUlMKQogCXBp a19mbGFncyB8PSBPUEZMQUdfT0VfRkFJTDsKPgo+PiAtZWxzZSBpZiAob25fZXJyb3IgPT0gT05f Q09ORkxJQ1RfQUNUSU9OX0ZBSUwpCj4+ICt9Cj4+ICtlbHNlIGlmIChvdmVycmlkZV9lcnJvciA9 PSBPTl9DT05GTElDVF9BQ1RJT05fRkFJTCkgewo+Cj5QdXQgJ2Vsc2UtaWbigJkgb24gcHJldmlv dXMgbGluZS4KCkJyYWNrZXRzIHdlcmUgcmVtb3ZlZCwgc28gdGhhdCByZW1hcmtzIGlzIHVzZWxl c3Mgbm93LgoKLS0K