From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from f180.i.mail.ru (f180.i.mail.ru [128.140.171.89]) (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 6E1EF4765E4 for ; Tue, 22 Dec 2020 03:50:11 +0300 (MSK) From: =?UTF-8?B?SWx5YSBLb3NhcmV2?= MIME-Version: 1.0 Date: Tue, 22 Dec 2020 03:50:10 +0300 Reply-To: =?UTF-8?B?SWx5YSBLb3NhcmV2?= Message-ID: <1608598210.19658708@f180.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--14e33B6644848dDa3bC08B37e4BaB2351608598210" In-Reply-To: References: <2152c51f6222f2d3d9d412183063c8646872ff68.1608373787.git.i.kosarev@tarantool.org> Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH_v7_3/3=5D_iproto=3A_move_g?= =?utf-8?q?reeting_from_tx_thread_to_iproto?= List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?B?VmxhZGlzbGF2IFNocGlsZXZveQ==?= Cc: tarantool-patches@dev.tarantool.org ----ALT--14e33B6644848dDa3bC08B37e4BaB2351608598210 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CkhpIQoKU2VudCB2OCBvZiB0aGUgcGF0Y2guIEl0IGluY2x1ZGVzIGltcHJvdmVtZW50IHRvIGZp eMKgdGhlIHByb2JsZW0uIAo+0J/QvtC90LXQtNC10LvRjNC90LjQuiwgMjEg0LTQtdC60LDQsdGA 0Y8gMjAyMCwgMTk6MjAgKzAzOjAwINC+0YIgVmxhZGlzbGF2IFNocGlsZXZveSA8di5zaHBpbGV2 b3lAdGFyYW50b29sLm9yZz46Cj7CoAo+SGkhIFRoYW5rcyBmb3IgdGhlIGZpeGVzIQo+Cj5VbmZv cnR1bmF0ZWx5LCBpdCBzZWVtcyB0aGUgcGF0Y2ggZG9lcyBub3QgaGVscC4gUHJvYmFibHkgaXQg ZGlkIGVhcmxpZXIsCj5idXQgbm93IHRoZSBkZXNjcmlwdG9ycyBhcmUgbm90IGNsb3NlZC4KPgo+ VGhlIGV4YW1wbGUgeW91IHVzZSBpbiB0aGUgdGlja2V0IGlzIG5vdCByZWFsbHkgaGFyZCBlbm91 Z2ggLSB5b3UKPnVzZSBvbmx5IG9uZSBjb25uZWN0aW9uLCBhbmQgeW91IHRyZWF0ICdmZXRjaF9z Y2hlbWEnIGFzIHN1Y2Nlc3MuCj5BbHNvIHlvdSBhc3N1bWUgdGhlIGNvbm5lY3Rpb24gd29uJ3Qg YmUgcmUtY3JlYXRlZCByZXBlYXRlZGx5IGJ5IHRoZQo+ZXh0ZXJuYWwgY29kZS4KPgo+VG8gdGVz dCBpdCBtb3JlIHRob3JvdWdobHkgSSB1c2VkIHRoZXNlIHNjcmlwdHM6Cj4KPkluc3RhbmNlIDE6 Cj4KPmJveC5jZmcoe2xpc3RlbiA9IDMzMDF9KQo+Ym94LnNjaGVtYS51c2VyLmdyYW50KCdndWVz dCcsICdzdXBlcicpCj53aGlsZSB0cnVlIGRvIG9zLmV4ZWN1dGUoInNsZWVwIDEwMDAiKSBlbmQK Pgo+SSB1c2VkIGJpZyBzbGVlcCBzbyBhcyB0aGUgaW5zdGFuY2Ugd291bGRuJ3QgaGF2ZSBhIGNo YW5jZSB0byBoYW5kbGUKPnRoZSBwZW5kaW5nIGNvbm5lY3Rpb24gcmVxdWVzdHMuCj4KPkluc3Rh bmNlIDI6Cj4KPmZpYmVyID0gcmVxdWlyZSgnZmliZXInKQo+bmV0Ym94ID0gcmVxdWlyZSgnbmV0 LmJveCcpCj5ob3N0ID0gJ2xvY2FsaG9zdDozMzAxJwo+Y291bnQgPSAwCj4KPmZ1bmN0aW9uIG1h bnlfY29ubmVjdCgpCj53aGlsZSB0cnVlIGRvCj5sb2NhbCBjID0gbmV0Ym94LmNvbm5lY3QoaG9z dCwge3dhaXRfY29ubmVjdGVkID0gZmFsc2V9KQo+d2hpbGUgYy5zdGF0ZSB+PSAnZmV0Y2hfc2No ZW1hJyBkbyBmaWJlci55aWVsZCgpIGVuZAo+Y291bnQgPSBjb3VudCArIDEKPmM6Y2xvc2UoKQo+ ZW5kCj5lbmQKPgo+ZjEgPSBmaWJlci5uZXcobWFueV9jb25uZWN0KQo+ZjIgPSBmaWJlci5uZXco bWFueV9jb25uZWN0KQo+ZjMgPSBmaWJlci5uZXcobWFueV9jb25uZWN0KQo+ZjQgPSBmaWJlci5u ZXcobWFueV9jb25uZWN0KQo+Cj5JIGNyZWF0ZSA0IGZpYmVycyB0byByZWFjaCB0aGUgZGVzY3Jp cHRvciBsaW1pdCBmYXN0ZXIuIFlvdQo+Y2FuIHRyeSBtb3JlIG9yIGxlc3MsIGJ1dCB3aXRoIGJp ZyBlbm91Z2ggc2xlZXAoKSB0aW1lb3V0IHRoZQo+cmVzdWx0IHdpbGwgYmUgdGhlIHNhbWUuIE9u IG15IG1hY2hpbmUgd2l0aCA0IGZpYmVycyBJIGhpdCB0aGUKPmRlc2NyaXB0b3IgbGltaXQgKDI1 NjAgaW4gbXkgY2FzZSkgYWxtb3N0IGltbWVkaWF0ZWx5Lgo+Cj5FYWNoIGZpYmVyIGRvZXMgYSB0 b3RhbGx5IG5vcm1hbCB0aGluZyAtIGNyZWF0ZXMgYSBjb25uZWN0aW9uIGFuZAo+Y2xvc2VzIGl0 LiBMZXRzIGFzc3VtZSwgdGhleSBhbHNvIHRyaWVkIHRvIGV4ZWN1dGUgc29tZSByZXF1ZXN0LAo+ aXQgZmFpbGVkIGEgdGltZW91dCwgYW5kIHRoZXkgZGVjaWRlIHRvIHJlLWNyZWF0ZSB0aGUgY29u bmVjdGlvbi4KPgo+SWYgdGhlIGRlc2NyaXB0b3JzIHdvdWxkIGJlIGNsb3NlZCBvbiBJbnN0YW5j ZSAxLCB0aGVzZSBmaWJlcnMKPndvdWxkIHdvcmsgZmluZSwgYW5kICdjb3VudCcgd291bGQgZ3Jv dyB1bnRpbCBJbnN0YW5jZSAxIHN0b3BzCj50aGUgc2xlZXAoKS4gT3IgdW50aWwgaXQgd2lsbCBo aXQgT09NIGR1ZSB0byB0b28gbWFueSBoZWF2eQo+c3RydWN0IGlwcm90b19jb25uZWN0aW9uIG9i amVjdHMsIHdoaWNoIGlzIG5vdCBhZGRyZXNzZWQgaGVyZSwgYnV0Cj53ZSBhZ3JlZWQgdG8gZG8g aXQgc2VwYXJhdGVseSwgc28gaXQgaXMgb2sgZm9yIG5vdyBtYXliZS4KPgo+QnV0IHdoYXQgaGFw cGVucyBpcyB0aGF0IGl0IHByaW50cwo+Cj5TeXN0ZW1FcnJvciBhY2NlcHQsIGNhbGxlZCBvbiBm ZCAxNiwgYWthIFs6Ol06MzMwMTogVG9vIG1hbnkgb3BlbiBmaWxlcwo+Cj5BbmQgbm8gbmV3IGNv bm5lY3Rpb25zIGNhbiBiZSBhY2NlcHRlZC4gSSBraWxsZWQgSW5zdGFuY2UgMiBhbmQKPnN0YXJ0 ZWQgaXQgYWdhaW4gLSBpdCBzdGFydHMgZmFpbGluZyBpbW1lZGlhdGVseS4gV2hpY2ggbWVhbnMg dGhlCj5kZXNjcmlwdG9ycyBhcmUgbm90IGNsb3NlZC4KWWVzLCBhbGwgdHJ1ZS4gSSBhY3R1YWxs eSBmb3Jnb3QgdGhhdCBpcHJvdG8gaGFzIHRvIGJlIGFibGUgdG8KY2xvc2UgdGhlIHNvY2tldCBi eSBpdHNlbGYuIFdlbGwsIG5vdyBpdCBpcyBmaXhlZC4gVGhlIGlkZWEKaXMgdGhhdCB3ZSBhY3R1 YWxseSBuZWVkIHRvIHN0YXJ0IHJlYWRpbmcgaW1tZWRpYXRlbHkgd2hlbgp0aGUgZ3JlZXRpbmcg aXMgc2VudC4gVGhlbiB3ZSBvbmx5IG5lZWQgdG8gY2FyZSBhYm91dCBub3QKcHJvY2Vzc2luZyBl eHRyYSByZXF1ZXN0IG9uIGFjdHVhbGx5wqBjbG9zZWQgY29ubmVjdGlvbi4KSXQgaXMgYWNoaWV2 ZWQgdGhyb3VnaCBwYXRjaGluZyBvZiB0eF9hY2NlcHRfbXNnKCkgYW5kCml04oCZcyBjYWxsZWVz LiBTbyBpbiBjYXNlIHRoZSBjb25uZWN0aW9ucyBjbG9zZXMsIHRoZQppcHJvdG9fY29ubmVjdGlv bl9jbG9zZSgpIGluIGludm9rZWQgYW5kIGl0IGNsb3NlcyB0aGUgc29ja2V0LgpXaGVuIGV2ZXJ5 dGhpbmcgZmluYWxseSBtb3ZlcyB0byB0aGUgdHgsIGFsbCByZXF1ZXN0cyBhcmUgYmVpbmcKaWdu b3JlZCBkZXBlbmRpbmcgb24gdGhlIHRoZSBjb25uZWN0aW9uIHN0YXRlLiBGaXhlZCBpbiB2OCBv ZiB0aGUgcGF0Y2guCj4KPj4gZGlmZiAtLWdpdCBhL3NyYy9ib3gvaXByb3RvLmNjIGIvc3JjL2Jv eC9pcHJvdG8uY2MKPj4gaW5kZXggZjczMzBhZjIxZC4uOTNiZjg2OTI5OSAxMDA2NDQKPj4gLS0t IGEvc3JjL2JveC9pcHJvdG8uY2MKPj4gKysrIGIvc3JjL2JveC9pcHJvdG8uY2M+IEBAIC0xOTM4 LDUwICsxOTk2LDYzIEBAIG5ldF9lbmRfc3Vic2NyaWJlKHN0cnVjdCBjbXNnICptKQo+PiArCj4+ ICsvKioKPj4gKyAqIENyZWF0ZSB0aGUgc2Vzc2lvbiBhbmQgaW52b2tlIHRoZSBvbl9jb25uZWN0 IHRyaWdnZXJzLgo+PiAqLwo+PiBzdGF0aWMgdm9pZAo+PiB0eF9wcm9jZXNzX2Nvbm5lY3Qoc3Ry dWN0IGNtc2cgKm0pCj4+IHsKPj4gc3RydWN0IGlwcm90b19tc2cgKm1zZyA9IChzdHJ1Y3QgaXBy b3RvX21zZyAqKSBtOwo+PiBzdHJ1Y3QgaXByb3RvX2Nvbm5lY3Rpb24gKmNvbiA9IG1zZy0+Y29u bmVjdGlvbjsKPj4gLSBzdHJ1Y3Qgb2J1ZiAqb3V0ID0gbXNnLT5jb25uZWN0aW9uLT50eC5wX29i dWY7Cj4+IC0gdHJ5IHsgLyogY29ubmVjdC4gKi8KPj4gLSBjb24tPnNlc3Npb24gPSBzZXNzaW9u X2NyZWF0ZShTRVNTSU9OX1RZUEVfQklOQVJZKTsKPj4gLSBpZiAoY29uLT5zZXNzaW9uID09IE5V TEwpCj4+IC0gZGlhZ19yYWlzZSgpOwo+PiAtIGNvbi0+c2Vzc2lvbi0+bWV0YS5jb25uZWN0aW9u ID0gY29uOwo+PiAtIHR4X2ZpYmVyX2luaXQoY29uLT5zZXNzaW9uLCAwKTsKPj4gLSBjaGFyICpn cmVldGluZyA9IChjaGFyICopIHN0YXRpY19hbGxvYyhJUFJPVE9fR1JFRVRJTkdfU0laRSk7Cj4+ IC0gLyogVE9ETzogZGlydHkgcmVhZCBmcm9tIHR4IHRocmVhZCAqLwo+PiAtIHN0cnVjdCB0dF91 dWlkIHV1aWQgPSBJTlNUQU5DRV9VVUlEOwo+PiAtIHJhbmRvbV9ieXRlcyhjb24tPnNhbHQsIElQ Uk9UT19TQUxUX1NJWkUpOwo+PiAtIGdyZWV0aW5nX2VuY29kZShncmVldGluZywgdGFyYW50b29s X3ZlcnNpb25faWQoKSwgJnV1aWQsCj4+IC0gY29uLT5zYWx0LCBJUFJPVE9fU0FMVF9TSVpFKTsK Pj4gLSBvYnVmX2R1cF94YyhvdXQsIGdyZWV0aW5nLCBJUFJPVE9fR1JFRVRJTkdfU0laRSk7Cj4+ IC0gaWYgKCEgcmxpc3RfZW1wdHkoJnNlc3Npb25fb25fY29ubmVjdCkpIHsKPj4gLSBpZiAoc2Vz c2lvbl9ydW5fb25fY29ubmVjdF90cmlnZ2Vycyhjb24tPnNlc3Npb24pICE9IDApCj4+IC0gZGlh Z19yYWlzZSgpOwo+PiAtIH0KPj4gLSBpcHJvdG9fd3Bvc19jcmVhdGUoJm1zZy0+d3Bvcywgb3V0 KTsKPj4gLSB9IGNhdGNoIChFeGNlcHRpb24gKmUpIHsKPj4gKwo+PiArIGNvbi0+c2Vzc2lvbiA9 IHNlc3Npb25fY3JlYXRlKFNFU1NJT05fVFlQRV9CSU5BUlkpOwo+PiArIGlmIChjb24tPnNlc3Np b24gPT0gTlVMTCkgewo+PiB0eF9yZXBseV9lcnJvcihtc2cpOwo+PiBtc2ctPmNsb3NlX2Nvbm5l Y3Rpb24gPSB0cnVlOwo+PiArIHJldHVybjsKPj4gKyB9Cj4+ICsgY29uLT5zZXNzaW9uLT5tZXRh LmNvbm5lY3Rpb24gPSBjb247Cj4+ICsKPj4gKyB0eF9maWJlcl9pbml0KGNvbi0+c2Vzc2lvbiwg MCk7Cj4+ICsgaWYgKCEgcmxpc3RfZW1wdHkoJnNlc3Npb25fb25fY29ubmVjdCkpIHsKPgo+SW4g dGhlIG5ldyBjb2RlIHdlIGRvbid0IHVzZSAnICcgYWZ0ZXIgdW5hcnkgb3BlcmF0b3JzLgpGaXhl ZCBpbiB2OC4KPgo+PiArIGlmIChzZXNzaW9uX3J1bl9vbl9jb25uZWN0X3RyaWdnZXJzKGNvbi0+ c2Vzc2lvbikgIT0gMCkgewo+PiArIHR4X3JlcGx5X2Vycm9yKG1zZyk7Cj4+ICsgbXNnLT5jbG9z ZV9jb25uZWN0aW9uID0gdHJ1ZTsKPj4gKyB9Cj4+IH0KPj4gfSAKwqAKwqAKLS0KSWx5YSBLb3Nh cmV2CsKg ----ALT--14e33B6644848dDa3bC08B37e4BaB2351608598210 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXY+SGkhPGJyPjxicj5TZW50IHY4IG9mIHRoZSBwYXRjaC4gSXQgaW5j bHVkZXMgaW1wcm92ZW1lbnQgdG8gZml4Jm5ic3A7dGhlIHByb2JsZW0uPGJsb2NrcXVvdGUgc3R5 bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzow IDAgMCAxMHB4OyI+0J/QvtC90LXQtNC10LvRjNC90LjQuiwgMjEg0LTQtdC60LDQsdGA0Y8gMjAy MCwgMTk6MjAgKzAzOjAwINC+0YIgVmxhZGlzbGF2IFNocGlsZXZveSAmbHQ7di5zaHBpbGV2b3lA dGFyYW50b29sLm9yZyZndDs6PGJyPiZuYnNwOzxkaXYgaWQ9IiI+PGRpdiBjbGFzcz0ianMtaGVs cGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXYgaWQ9InN0eWxlXzE2MDg1Njc2MjAxMjkyMDA4 NTAzX0JPRFkiPkhpISBUaGFua3MgZm9yIHRoZSBmaXhlcyE8YnI+PGJyPlVuZm9ydHVuYXRlbHks IGl0IHNlZW1zIHRoZSBwYXRjaCBkb2VzIG5vdCBoZWxwLiBQcm9iYWJseSBpdCBkaWQgZWFybGll ciw8YnI+YnV0IG5vdyB0aGUgZGVzY3JpcHRvcnMgYXJlIG5vdCBjbG9zZWQuPGJyPjxicj5UaGUg ZXhhbXBsZSB5b3UgdXNlIGluIHRoZSB0aWNrZXQgaXMgbm90IHJlYWxseSBoYXJkIGVub3VnaCAt IHlvdTxicj51c2Ugb25seSBvbmUgY29ubmVjdGlvbiwgYW5kIHlvdSB0cmVhdCAnZmV0Y2hfc2No ZW1hJyBhcyBzdWNjZXNzLjxicj5BbHNvIHlvdSBhc3N1bWUgdGhlIGNvbm5lY3Rpb24gd29uJ3Qg YmUgcmUtY3JlYXRlZCByZXBlYXRlZGx5IGJ5IHRoZTxicj5leHRlcm5hbCBjb2RlLjxicj48YnI+ VG8gdGVzdCBpdCBtb3JlIHRob3JvdWdobHkgSSB1c2VkIHRoZXNlIHNjcmlwdHM6PGJyPjxicj5J bnN0YW5jZSAxOjxicj48YnI+Ym94LmNmZyh7bGlzdGVuID0gMzMwMX0pPGJyPmJveC5zY2hlbWEu dXNlci5ncmFudCgnZ3Vlc3QnLCAnc3VwZXInKTxicj53aGlsZSB0cnVlIGRvIG9zLmV4ZWN1dGUo InNsZWVwIDEwMDAiKSBlbmQ8YnI+PGJyPkkgdXNlZCBiaWcgc2xlZXAgc28gYXMgdGhlIGluc3Rh bmNlIHdvdWxkbid0IGhhdmUgYSBjaGFuY2UgdG8gaGFuZGxlPGJyPnRoZSBwZW5kaW5nIGNvbm5l Y3Rpb24gcmVxdWVzdHMuPGJyPjxicj5JbnN0YW5jZSAyOjxicj48YnI+ZmliZXIgPSByZXF1aXJl KCdmaWJlcicpPGJyPm5ldGJveCA9IHJlcXVpcmUoJ25ldC5ib3gnKTxicj5ob3N0ID0gJ2xvY2Fs aG9zdDozMzAxJzxicj5jb3VudCA9IDA8YnI+PGJyPmZ1bmN0aW9uIG1hbnlfY29ubmVjdCgpPGJy PndoaWxlIHRydWUgZG88YnI+bG9jYWwgYyA9IG5ldGJveC5jb25uZWN0KGhvc3QsIHt3YWl0X2Nv bm5lY3RlZCA9IGZhbHNlfSk8YnI+d2hpbGUgYy5zdGF0ZSB+PSAnZmV0Y2hfc2NoZW1hJyBkbyBm aWJlci55aWVsZCgpIGVuZDxicj5jb3VudCA9IGNvdW50ICsgMTxicj5jOmNsb3NlKCk8YnI+ZW5k PGJyPmVuZDxicj48YnI+ZjEgPSBmaWJlci5uZXcobWFueV9jb25uZWN0KTxicj5mMiA9IGZpYmVy Lm5ldyhtYW55X2Nvbm5lY3QpPGJyPmYzID0gZmliZXIubmV3KG1hbnlfY29ubmVjdCk8YnI+ZjQg PSBmaWJlci5uZXcobWFueV9jb25uZWN0KTxicj48YnI+SSBjcmVhdGUgNCBmaWJlcnMgdG8gcmVh Y2ggdGhlIGRlc2NyaXB0b3IgbGltaXQgZmFzdGVyLiBZb3U8YnI+Y2FuIHRyeSBtb3JlIG9yIGxl c3MsIGJ1dCB3aXRoIGJpZyBlbm91Z2ggc2xlZXAoKSB0aW1lb3V0IHRoZTxicj5yZXN1bHQgd2ls bCBiZSB0aGUgc2FtZS4gT24gbXkgbWFjaGluZSB3aXRoIDQgZmliZXJzIEkgaGl0IHRoZTxicj5k ZXNjcmlwdG9yIGxpbWl0ICgyNTYwIGluIG15IGNhc2UpIGFsbW9zdCBpbW1lZGlhdGVseS48YnI+ PGJyPkVhY2ggZmliZXIgZG9lcyBhIHRvdGFsbHkgbm9ybWFsIHRoaW5nIC0gY3JlYXRlcyBhIGNv bm5lY3Rpb24gYW5kPGJyPmNsb3NlcyBpdC4gTGV0cyBhc3N1bWUsIHRoZXkgYWxzbyB0cmllZCB0 byBleGVjdXRlIHNvbWUgcmVxdWVzdCw8YnI+aXQgZmFpbGVkIGEgdGltZW91dCwgYW5kIHRoZXkg ZGVjaWRlIHRvIHJlLWNyZWF0ZSB0aGUgY29ubmVjdGlvbi48YnI+PGJyPklmIHRoZSBkZXNjcmlw dG9ycyB3b3VsZCBiZSBjbG9zZWQgb24gSW5zdGFuY2UgMSwgdGhlc2UgZmliZXJzPGJyPndvdWxk IHdvcmsgZmluZSwgYW5kICdjb3VudCcgd291bGQgZ3JvdyB1bnRpbCBJbnN0YW5jZSAxIHN0b3Bz PGJyPnRoZSBzbGVlcCgpLiBPciB1bnRpbCBpdCB3aWxsIGhpdCBPT00gZHVlIHRvIHRvbyBtYW55 IGhlYXZ5PGJyPnN0cnVjdCBpcHJvdG9fY29ubmVjdGlvbiBvYmplY3RzLCB3aGljaCBpcyBub3Qg YWRkcmVzc2VkIGhlcmUsIGJ1dDxicj53ZSBhZ3JlZWQgdG8gZG8gaXQgc2VwYXJhdGVseSwgc28g aXQgaXMgb2sgZm9yIG5vdyBtYXliZS48YnI+PGJyPkJ1dCB3aGF0IGhhcHBlbnMgaXMgdGhhdCBp dCBwcmludHM8YnI+PGJyPlN5c3RlbUVycm9yIGFjY2VwdCwgY2FsbGVkIG9uIGZkIDE2LCBha2Eg Wzo6XTozMzAxOiBUb28gbWFueSBvcGVuIGZpbGVzPGJyPjxicj5BbmQgbm8gbmV3IGNvbm5lY3Rp b25zIGNhbiBiZSBhY2NlcHRlZC4gSSBraWxsZWQgSW5zdGFuY2UgMiBhbmQ8YnI+c3RhcnRlZCBp dCBhZ2FpbiAtIGl0IHN0YXJ0cyBmYWlsaW5nIGltbWVkaWF0ZWx5LiBXaGljaCBtZWFucyB0aGU8 YnI+ZGVzY3JpcHRvcnMgYXJlIG5vdCBjbG9zZWQuPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9i bG9ja3F1b3RlPjwvZGl2PjxkaXY+WWVzLCBhbGwgdHJ1ZS4gSSBhY3R1YWxseSBmb3Jnb3QgdGhh dCBpcHJvdG8gaGFzIHRvIGJlIGFibGUgdG88L2Rpdj48ZGl2PmNsb3NlIHRoZSBzb2NrZXQgYnkg aXRzZWxmLiBXZWxsLCBub3cgaXQgaXMgZml4ZWQuIFRoZSBpZGVhPC9kaXY+PGRpdj5pcyB0aGF0 IHdlIGFjdHVhbGx5IG5lZWQgdG8gc3RhcnQgcmVhZGluZyBpbW1lZGlhdGVseSB3aGVuPC9kaXY+ PGRpdj50aGUgZ3JlZXRpbmcgaXMgc2VudC4gVGhlbiB3ZSBvbmx5IG5lZWQgdG8gY2FyZSBhYm91 dCBub3Q8L2Rpdj48ZGl2PnByb2Nlc3NpbmcgZXh0cmEgcmVxdWVzdCBvbiBhY3R1YWxseSZuYnNw O2Nsb3NlZCBjb25uZWN0aW9uLjwvZGl2PjxkaXY+SXQgaXMgYWNoaWV2ZWQgdGhyb3VnaCBwYXRj aGluZyBvZiB0eF9hY2NlcHRfbXNnKCkgYW5kPC9kaXY+PGRpdj5pdOKAmXMgY2FsbGVlcy4gU28g aW4gY2FzZSB0aGUgY29ubmVjdGlvbnMgY2xvc2VzLCB0aGU8L2Rpdj48ZGl2Pmlwcm90b19jb25u ZWN0aW9uX2Nsb3NlKCkgaW4gaW52b2tlZCBhbmQgaXQgY2xvc2VzIHRoZSBzb2NrZXQuPC9kaXY+ PGRpdj5XaGVuIGV2ZXJ5dGhpbmcgZmluYWxseSBtb3ZlcyB0byB0aGUgdHgsIGFsbCByZXF1ZXN0 cyBhcmUgYmVpbmc8L2Rpdj48ZGl2Pmlnbm9yZWQgZGVwZW5kaW5nIG9uIHRoZSB0aGUgY29ubmVj dGlvbiBzdGF0ZS4gRml4ZWQgaW4gdjggb2YgdGhlIHBhdGNoLjwvZGl2PjxkaXY+PGJsb2NrcXVv dGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFk ZGluZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1t c2ciPjxkaXY+PGRpdj48YnI+Jmd0OyBkaWZmIC0tZ2l0IGEvc3JjL2JveC9pcHJvdG8uY2MgYi9z cmMvYm94L2lwcm90by5jYzxicj4mZ3Q7IGluZGV4IGY3MzMwYWYyMWQuLjkzYmY4NjkyOTkgMTAw NjQ0PGJyPiZndDsgLS0tIGEvc3JjL2JveC9pcHJvdG8uY2M8YnI+Jmd0OyArKysgYi9zcmMvYm94 L2lwcm90by5jYyZndDsgQEAgLTE5MzgsNTAgKzE5OTYsNjMgQEAgbmV0X2VuZF9zdWJzY3JpYmUo c3RydWN0IGNtc2cgKm0pPGJyPiZndDsgKzxicj4mZ3Q7ICsvKio8YnI+Jmd0OyArICogQ3JlYXRl IHRoZSBzZXNzaW9uIGFuZCBpbnZva2UgdGhlIG9uX2Nvbm5lY3QgdHJpZ2dlcnMuPGJyPiZndDsg Ki88YnI+Jmd0OyBzdGF0aWMgdm9pZDxicj4mZ3Q7IHR4X3Byb2Nlc3NfY29ubmVjdChzdHJ1Y3Qg Y21zZyAqbSk8YnI+Jmd0OyB7PGJyPiZndDsgc3RydWN0IGlwcm90b19tc2cgKm1zZyA9IChzdHJ1 Y3QgaXByb3RvX21zZyAqKSBtOzxicj4mZ3Q7IHN0cnVjdCBpcHJvdG9fY29ubmVjdGlvbiAqY29u ID0gbXNnLSZndDtjb25uZWN0aW9uOzxicj4mZ3Q7IC0gc3RydWN0IG9idWYgKm91dCA9IG1zZy0m Z3Q7Y29ubmVjdGlvbi0mZ3Q7dHgucF9vYnVmOzxicj4mZ3Q7IC0gdHJ5IHsgLyogY29ubmVjdC4g Ki88YnI+Jmd0OyAtIGNvbi0mZ3Q7c2Vzc2lvbiA9IHNlc3Npb25fY3JlYXRlKFNFU1NJT05fVFlQ RV9CSU5BUlkpOzxicj4mZ3Q7IC0gaWYgKGNvbi0mZ3Q7c2Vzc2lvbiA9PSBOVUxMKTxicj4mZ3Q7 IC0gZGlhZ19yYWlzZSgpOzxicj4mZ3Q7IC0gY29uLSZndDtzZXNzaW9uLSZndDttZXRhLmNvbm5l Y3Rpb24gPSBjb247PGJyPiZndDsgLSB0eF9maWJlcl9pbml0KGNvbi0mZ3Q7c2Vzc2lvbiwgMCk7 PGJyPiZndDsgLSBjaGFyICpncmVldGluZyA9IChjaGFyICopIHN0YXRpY19hbGxvYyhJUFJPVE9f R1JFRVRJTkdfU0laRSk7PGJyPiZndDsgLSAvKiBUT0RPOiBkaXJ0eSByZWFkIGZyb20gdHggdGhy ZWFkICovPGJyPiZndDsgLSBzdHJ1Y3QgdHRfdXVpZCB1dWlkID0gSU5TVEFOQ0VfVVVJRDs8YnI+ Jmd0OyAtIHJhbmRvbV9ieXRlcyhjb24tJmd0O3NhbHQsIElQUk9UT19TQUxUX1NJWkUpOzxicj4m Z3Q7IC0gZ3JlZXRpbmdfZW5jb2RlKGdyZWV0aW5nLCB0YXJhbnRvb2xfdmVyc2lvbl9pZCgpLCAm YW1wO3V1aWQsPGJyPiZndDsgLSBjb24tJmd0O3NhbHQsIElQUk9UT19TQUxUX1NJWkUpOzxicj4m Z3Q7IC0gb2J1Zl9kdXBfeGMob3V0LCBncmVldGluZywgSVBST1RPX0dSRUVUSU5HX1NJWkUpOzxi cj4mZ3Q7IC0gaWYgKCEgcmxpc3RfZW1wdHkoJmFtcDtzZXNzaW9uX29uX2Nvbm5lY3QpKSB7PGJy PiZndDsgLSBpZiAoc2Vzc2lvbl9ydW5fb25fY29ubmVjdF90cmlnZ2Vycyhjb24tJmd0O3Nlc3Np b24pICE9IDApPGJyPiZndDsgLSBkaWFnX3JhaXNlKCk7PGJyPiZndDsgLSB9PGJyPiZndDsgLSBp cHJvdG9fd3Bvc19jcmVhdGUoJmFtcDttc2ctJmd0O3dwb3MsIG91dCk7PGJyPiZndDsgLSB9IGNh dGNoIChFeGNlcHRpb24gKmUpIHs8YnI+Jmd0OyArPGJyPiZndDsgKyBjb24tJmd0O3Nlc3Npb24g PSBzZXNzaW9uX2NyZWF0ZShTRVNTSU9OX1RZUEVfQklOQVJZKTs8YnI+Jmd0OyArIGlmIChjb24t Jmd0O3Nlc3Npb24gPT0gTlVMTCkgezxicj4mZ3Q7IHR4X3JlcGx5X2Vycm9yKG1zZyk7PGJyPiZn dDsgbXNnLSZndDtjbG9zZV9jb25uZWN0aW9uID0gdHJ1ZTs8YnI+Jmd0OyArIHJldHVybjs8YnI+ Jmd0OyArIH08YnI+Jmd0OyArIGNvbi0mZ3Q7c2Vzc2lvbi0mZ3Q7bWV0YS5jb25uZWN0aW9uID0g Y29uOzxicj4mZ3Q7ICs8YnI+Jmd0OyArIHR4X2ZpYmVyX2luaXQoY29uLSZndDtzZXNzaW9uLCAw KTs8YnI+Jmd0OyArIGlmICghIHJsaXN0X2VtcHR5KCZhbXA7c2Vzc2lvbl9vbl9jb25uZWN0KSkg ezxicj48YnI+SW4gdGhlIG5ldyBjb2RlIHdlIGRvbid0IHVzZSAnICcgYWZ0ZXIgdW5hcnkgb3Bl cmF0b3JzLjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48ZGl2PkZp eGVkIGluIHY4LjwvZGl2PjxkaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBz b2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2 IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdj48YnI+Jmd0OyArIGlm IChzZXNzaW9uX3J1bl9vbl9jb25uZWN0X3RyaWdnZXJzKGNvbi0mZ3Q7c2Vzc2lvbikgIT0gMCkg ezxicj4mZ3Q7ICsgdHhfcmVwbHlfZXJyb3IobXNnKTs8YnI+Jmd0OyArIG1zZy0mZ3Q7Y2xvc2Vf Y29ubmVjdGlvbiA9IHRydWU7PGJyPiZndDsgKyB9PGJyPiZndDsgfTxicj4mZ3Q7IH08L2Rpdj48 L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+Jm5ic3A7PGRpdj4mbmJzcDs8L2Rpdj48ZGl2 IGRhdGEtc2lnbmF0dXJlLXdpZGdldD0iY29udGFpbmVyIj48ZGl2IGRhdGEtc2lnbmF0dXJlLXdp ZGdldD0iY29udGVudCI+PGRpdj4tLTxicj5JbHlhIEtvc2FyZXY8L2Rpdj48L2Rpdj48L2Rpdj48 ZGl2PiZuYnNwOzwvZGl2PjwvZGl2PjwvQk9EWT48L0hUTUw+Cg== ----ALT--14e33B6644848dDa3bC08B37e4BaB2351608598210--