From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from f425.i.mail.ru (f425.i.mail.ru [185.5.136.96]) (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 9F39F430407 for ; Fri, 21 Aug 2020 11:51:14 +0300 (MSK) From: =?UTF-8?B?U2VyZ2UgUGV0cmVua28=?= MIME-Version: 1.0 Date: Fri, 21 Aug 2020 11:51:13 +0300 Reply-To: =?UTF-8?B?U2VyZ2UgUGV0cmVua28=?= Message-ID: <1597999873.222856578@f425.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--f4EdC38e208efAaE3A964293DaA6dC4f1597999873" In-Reply-To: <20200819213442.1099018-6-gorcunov@gmail.com> References: <20200819213442.1099018-1-gorcunov@gmail.com> <20200819213442.1099018-6-gorcunov@gmail.com> Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH_v9_5/7=5D_applier=3A_proce?= =?utf-8?q?ss_synchro_requests_without_txn_engine?= List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?B?Q3lyaWxsIEdvcmN1bm92?= Cc: =?UTF-8?B?dG1s?= , =?UTF-8?B?VmxhZGlzbGF2IFNocGlsZXZveQ==?= ----ALT--f4EdC38e208efAaE3A964293DaA6dC4f1597999873 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CkhpISBUaGFua3MgZm9yIHRoZSBwYXRjaC4KTEdUTSB3aXRoIG9uZSBjb21tZW50IHdoaWNo4oCZ cyB1cCB0byB5b3UuCsKgCsKgIAo+0KfQtdGC0LLQtdGA0LMsIDIwINCw0LLQs9GD0YHRgtCwIDIw MjAsIDA6MzYgKzAzOjAwINC+0YIgQ3lyaWxsIEdvcmN1bm92IDxnb3JjdW5vdkBnbWFpbC5jb20+ Ogo+wqAKPlRyYW5zYWN0aW9uIHByb2Nlc3NpbmcgY29kZSBpcyB2ZXJ5IGhlYXZ5IHNpbXBseSBi ZWNhdXNlCj50cmFuc2FjdGlvbnMgYXJlIGNhcnJ5aW5nIHZhcmlvdXMgZGF0YSBhbmQgaW52b2x2 ZXMgYSBudW1iZXIKPm9mIG90aGVyIG1lY2hhbmlzbXMgdG8gcHJvY2VlZC4KPgo+SW4gdHVybiwg d2hlbiB3ZSByZWNlaXZlIGNvbmZpcm0gb3Igcm9sbGJhY2sgcGFja2VkIGZyb20KPmFub3RoZXIg bm9kZSBpbiBhIGNsdXN0ZXIgd2UganVzdCBuZWVkIHRvIGluc3BlY3QgbGltYm8KPnF1ZXVlIGFu ZCB3cml0ZSB0aGlzIHBhY2tlZCBpbnRvIGEgV0FMIGpvdXJuYWwuIFNvIGNhbGxpbmcKPmEgYnVu Y2ggb2YgdHhuIGVuZ2luZSBoZWxwZXJzIGlzIHNpbXBseSB3YXN0ZSBvZiBjeWNsZXMuCj4KPlRo dXMgbGV0cyByYXRoZXIgaGFuZGxlIHRoZW0gaW4gYSBzcGVjaWFsIGxpZ2h0IHdheToKPgo+wqAt IGFsbG9jYXRlIHN5bmNocm9fZW50cnkgc3RydWN0dXJlIHdoaWNoIHdvdWxkIGNhcnJ5Cj7CoMKg wqB0aGUgam91cm5hbCBlbnRyeSBpdHNlbGYgYW5kIGVuY29kZWQgbWVzc2FnZQo+wqAtIHByb2Nl c3MgbGltYm8gcXVldWUgdG8gbWFyayBjb25maXJtZWQvcm9sbGJhY2snZWQKPsKgwqDCoG1lc3Nh Z2VzCj7CoC0gZmluYWxseSB3cml0ZSB0aGlzIHN5bmNocm9fZW50cnkgaW50byBhIGpvdXJuYWwK Pgo+V2hpY2ggaXMgYSB3YXkgc2ltcGxpZXIuCj4KPlBhcnQtb2YgIzUxMjkKPgo+U3VnZ2Vkc3Rl ZC1ieTogVmxhZGlzbGF2IFNocGlsZXZveSA8IHYuc2hwaWxldm95QHRhcmFudG9vbC5vcmcgPgo+ Q28tZGV2ZWxvcGVkLWJ5OiBWbGFkaXNsYXYgU2hwaWxldm95IDwgdi5zaHBpbGV2b3lAdGFyYW50 b29sLm9yZyA+Cj5TaWduZWQtb2ZmLWJ5OiBDeXJpbGwgR29yY3Vub3YgPCBnb3JjdW5vdkBnbWFp bC5jb20gPgo+LS0tCj7CoHNyYy9ib3gvYXBwbGllci5jYyB8IDIwMCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KPsKgMSBmaWxlIGNoYW5nZWQsIDE0OCBpbnNl cnRpb25zKCspLCA1MiBkZWxldGlvbnMoLSkKPgo+ZGlmZiAtLWdpdCBhL3NyYy9ib3gvYXBwbGll ci5jYyBiL3NyYy9ib3gvYXBwbGllci5jYwo+aW5kZXggMTM4N2Q1MThjLi5jMWQwN2NhNTQgMTAw NjQ0Cj4tLS0gYS9zcmMvYm94L2FwcGxpZXIuY2MKPisrKyBiL3NyYy9ib3gvYXBwbGllci5jYwo+ QEAgLTUxLDggKzUxLDEwIEBACj7CoCNpbmNsdWRlICJzY2hlbWEuaCIKPsKgI2luY2x1ZGUgInR4 bi5oIgo+wqAjaW5jbHVkZSAiYm94LmgiCj4rI2luY2x1ZGUgInhyb3cuaCIKPsKgI2luY2x1ZGUg InNjb3BlZF9ndWFyZC5oIgo+wqAjaW5jbHVkZSAidHhuX2xpbWJvLmgiCj4rI2luY2x1ZGUgImpv dXJuYWwuaCIKPsKgCj7CoFNUUlMoYXBwbGllcl9zdGF0ZSwgYXBwbGllcl9TVEFURSk7Cj7CoAo+ QEAgLTI2OCw0NSArMjcwLDExIEBAIHByb2Nlc3Nfbm9wKHN0cnVjdCByZXF1ZXN0ICpyZXF1ZXN0 KQo+wqAgcmV0dXJuIHR4bl9jb21taXRfc3RtdCh0eG4sIHJlcXVlc3QpOwo+wqB9Cj7CoAo+LS8q Cj4tICogQ09ORklSTS9ST0xMQkFDSyByb3dzIGFyZW4ndCBkbWwgcmVxdWVzdHMgYW5kIHJlcXVp cmUgc3BlY2lhbAo+LSAqIGhhbmRsaW5nOiBpbnN0ZWFkIG9mIHBlcmZvcm1pbmcgc29tZSBvcGVy YXRpb25zIG9uIHNwYWNlcywKPi0gKiBwcm9jZXNzaW5nIHRoZXNlIHJlcXVlc3RzIHJlcXVpcmVz IHR4bl9saW1ibyB0byBlaXRoZXIgY29uZmlybQo+LSAqIG9yIHJvbGxiYWNrIHNvbWUgb2YgaXRz IGVudHJpZXMuCj4tICovCj4tc3RhdGljIGludAo+LXByb2Nlc3Nfc3luY2hyb19yb3coc3RydWN0 IHJlcXVlc3QgKnJlcXVlc3QpCj4tewo+LSBhc3NlcnQoaXByb3RvX3R5cGVfaXNfc3luY2hyb19y ZXF1ZXN0KHJlcXVlc3QtPmhlYWRlci0+dHlwZSkpOwo+LSBzdHJ1Y3QgdHhuICp0eG4gPSBpbl90 eG4oKTsKPi0KPi0gc3RydWN0IHN5bmNocm9fcmVxdWVzdCBzeW5fcmVxOwo+LSBpZiAoeHJvd19k ZWNvZGVfc3luY2hybyhyZXF1ZXN0LT5oZWFkZXIsICZzeW5fcmVxKSAhPSAwKQo+LSByZXR1cm4g LTE7Cj4tIGFzc2VydCh0eG4tPm5fYXBwbGllcl9yb3dzID09IDApOwo+LSAvKgo+LSAqIFRoaXMg aXMgbm90IHJlYWxseSBhIHRyYW5zYWN0aW9uLiBJdCBqdXN0IHVzZXMgdHhuIEFQSQo+LSAqIHRv IHB1dCB0aGUgZGF0YSBpbnRvIFdBTC4gQW5kIG9idmlvdXNseSBpdCBzaG91bGQgbm90Cj4tICog Z28gdG8gdGhlIGxpbWJvIGFuZCBibG9jayBvbiB0aGUgdmVyeSBzYW1lIHN5bmMKPi0gKiB0cmFu c2FjdGlvbiB3aGljaCBpdCB0cmllcyB0byBjb25maXJtIG5vdy4KPi0gKi8KPi0gdHhuX3NldF9m bGFnKHR4biwgVFhOX0ZPUkNFX0FTWU5DKTsKPi0KPi0gaWYgKHR4bl9iZWdpbl9zdG10KHR4biwg TlVMTCkgIT0gMCkKPi0gcmV0dXJuIC0xOwo+LSBpZiAodHhuX2NvbW1pdF9zdG10KHR4biwgcmVx dWVzdCkgIT0gMCkKPi0gcmV0dXJuIC0xOwo+LSByZXR1cm4gdHhuX2xpbWJvX3Byb2Nlc3MoJnR4 bl9saW1ibywgJnN5bl9yZXEpOwo+LX0KPi0KPsKgc3RhdGljIGludAo+wqBhcHBseV9yb3coc3Ry dWN0IHhyb3dfaGVhZGVyICpyb3cpCj7CoHsKPsKgIHN0cnVjdCByZXF1ZXN0IHJlcXVlc3Q7Cj4t IGlmIChpcHJvdG9fdHlwZV9pc19zeW5jaHJvX3JlcXVlc3Qocm93LT50eXBlKSkgewo+LSByZXF1 ZXN0LmhlYWRlciA9IHJvdzsKPi0gcmV0dXJuIHByb2Nlc3Nfc3luY2hyb19yb3coJnJlcXVlc3Qp Owo+LSB9Cj4rIGFzc2VydCghaXByb3RvX3R5cGVfaXNfc3luY2hyb19yZXF1ZXN0KHJvdy0+dHlw ZSkpOwo+wqAgaWYgKHhyb3dfZGVjb2RlX2RtbChyb3csICZyZXF1ZXN0LCBkbWxfcmVxdWVzdF9r ZXlfbWFwKHJvdy0+dHlwZSkpICE9IDApCj7CoCByZXR1cm4gLTE7Cj7CoCBpZiAocmVxdWVzdC50 eXBlID09IElQUk9UT19OT1ApCj5AQCAtNzUzLDE5ICs3MjEsOSBAQCBhcHBsaWVyX3JlYWRfdHgo c3RydWN0IGFwcGxpZXIgKmFwcGxpZXIsIHN0cnVjdCBzdGFpbHEgKnJvd3MpCj7CoCBuZXh0KS0+ cm93LmlzX2NvbW1pdCk7Cj7CoH0KPsKgCj4tc3RhdGljIGludAo+LWFwcGxpZXJfdHhuX3JvbGxi YWNrX2NiKHN0cnVjdCB0cmlnZ2VyICp0cmlnZ2VyLCB2b2lkICpldmVudCkKPitzdGF0aWMgdm9p ZAo+K2FwcGxpZXJfcm9sbGJhY2tfYnlfd2FsX2lvKHZvaWQpCj7CoHsKPi0gKHZvaWQpIHRyaWdn ZXI7Cj4tIHN0cnVjdCB0eG4gKnR4biA9IChzdHJ1Y3QgdHhuICopIGV2ZW50Owo+LSAvKgo+LSAq IFN5bmNocm9ub3VzIHRyYW5zYWN0aW9uIHJvbGxiYWNrIGR1ZSB0byByZWNlaXZpbmcgYQo+LSAq IFJPTExCQUNLIGVudHJ5IGlzIGEgbm9ybWFsIGV2ZW50IGFuZCByZXF1aXJlcyBubwo+LSAqIHNw ZWNpYWwgaGFuZGxpbmcuCj4tICovCj4tIGlmICh0eG4tPnNpZ25hdHVyZSA9PSBUWE5fU0lHTkFU VVJFX1NZTkNfUk9MTEJBQ0spCj4tIHJldHVybiAwOwo+LQo+wqAgLyoKPsKgICogU2V0dXAgc2hh cmVkIGFwcGxpZXIgZGlhZ25vc3RpYyBhcmVhLgo+wqAgKgo+QEAgLTc3NCw5ICs3MzIsOSBAQCBh cHBsaWVyX3R4bl9yb2xsYmFja19jYihzdHJ1Y3QgdHJpZ2dlciAqdHJpZ2dlciwgdm9pZCAqZXZl bnQpCj7CoCAqIGRpYWcgdXNlIHBlci1hcHBsaWVyIGRpYWcgaW5zdGVhZCBhbGwgdGhlIHRpbWUK PsKgICogKHdoaWNoIGFjdHVhbGx5IGFscmVhZHkgcHJlc2VudCBpbiB0aGUgc3RydWN0dXJlKS4K PsKgICoKPi0gKiBCdXQgcmVtZW1iZXIgdGhhdCB0cmFuc2FjdGlvbnMgYXJlIGFzeW5jaHJvbm91 cwo+LSAqIGFuZCByb2xsYmFjayBtYXkgaGFwcGVuIGEgd2F5IGxhdHRlciBhZnRlciBpdAo+LSAq IHBhc3NlZCB0byB0aGUgam91cm5hbCBlbmdpbmUuCj4rICogQnV0IHJlbWVtYmVyIHRoYXQgV0FM IHdyaXRlcyBhcmUgYXN5bmNocm9ub3VzIGFuZAo+KyAqIHJvbGxiYWNrIG1heSBoYXBwZW4gYSB3 YXkgbGF0ZXIgYWZ0ZXIgaXQgd2FzIHBhc3NlZCB0bwo+KyAqIHRoZSBqb3VybmFsIGVuZ2luZS4K PsKgICovCj7CoCBkaWFnX3NldChDbGllbnRFcnJvciwgRVJfV0FMX0lPKTsKPsKgIGRpYWdfc2V0 X2Vycm9yKCZyZXBsaWNhc2V0LmFwcGxpZXIuZGlhZywKPkBAIC03ODcsNiArNzQ1LDIwIEBAIGFw cGxpZXJfdHhuX3JvbGxiYWNrX2NiKHN0cnVjdCB0cmlnZ2VyICp0cmlnZ2VyLCB2b2lkICpldmVu dCkKPsKgCj7CoCAvKiBSb2xsYmFjayBhcHBsaWVyIHZjbG9jayB0byB0aGUgY29tbWl0dGVkIG9u ZS4gKi8KPsKgIHZjbG9ja19jb3B5KCZyZXBsaWNhc2V0LmFwcGxpZXIudmNsb2NrLCAmcmVwbGlj YXNldC52Y2xvY2spOwo+K30KPisKPitzdGF0aWMgaW50Cj4rYXBwbGllcl90eG5fcm9sbGJhY2tf Y2Ioc3RydWN0IHRyaWdnZXIgKnRyaWdnZXIsIHZvaWQgKmV2ZW50KQo+K3sKPisgKHZvaWQpIHRy aWdnZXI7Cj4rIHN0cnVjdCB0eG4gKnR4biA9IChzdHJ1Y3QgdHhuICopIGV2ZW50Owo+KyAvKgo+ KyAqIFN5bmNocm9ub3VzIHRyYW5zYWN0aW9uIHJvbGxiYWNrIGR1ZSB0byByZWNlaXZpbmcgYQo+ KyAqIFJPTExCQUNLIGVudHJ5IGlzIGEgbm9ybWFsIGV2ZW50IGFuZCByZXF1aXJlcyBubwo+KyAq IHNwZWNpYWwgaGFuZGxpbmcuCj4rICovCj4rIGlmICh0eG4tPnNpZ25hdHVyZSAhPSBUWE5fU0lH TkFUVVJFX1NZTkNfUk9MTEJBQ0spCj4rIGFwcGxpZXJfcm9sbGJhY2tfYnlfd2FsX2lvKCk7Cj7C oCByZXR1cm4gMDsKPsKgfQo+wqAKPkBAIC04MDAsNiArNzcyLDExMCBAQCBhcHBsaWVyX3R4bl93 YWxfd3JpdGVfY2Ioc3RydWN0IHRyaWdnZXIgKnRyaWdnZXIsIHZvaWQgKmV2ZW50KQo+wqAgcmV0 dXJuIDA7Cj7CoH0KPsKgCj4rc3RydWN0IHN5bmNocm9fZW50cnkgewo+KyAvKiogRW5jb2RlZCBm b3JtIG9mIGEgc3luY2hybyByZWNvcmQuICovCj4rIHN0cnVjdCBzeW5jaHJvX2JvZHlfYmluIGJv ZHlfYmluOwo+Kwo+KyAvKiogeHJvdyB0byB3cml0ZSwgdXNlZCBieSB0aGUgam91cm5hbCBlbmdp bmUuICovCj4rIHN0cnVjdCB4cm93X2hlYWRlciByb3c7Cj4rCj4rIC8qKgo+KyAqIFRoZSBqb3Vy bmFsIGVudHJ5IGl0c2VsZi4gTm90ZSBzaW5jZQo+KyAqIGl0IGhhcyB1bnNpemVkIGFycmF5IGl0 IG11c3QgYmUgdGhlCj4rICogbGFzdCBlbnRyeSBpbiB0aGUgc3RydWN0dXJlLgo+KyAqLwo+KyBz dHJ1Y3Qgam91cm5hbF9lbnRyeSBqb3VybmFsX2VudHJ5Owo+K307Cj4rCj4rc3RhdGljIHZvaWQK PitzeW5jaHJvX2VudHJ5X2RlbGV0ZShzdHJ1Y3Qgc3luY2hyb19lbnRyeSAqZW50cnkpCj4rewo+ KyBmcmVlKGVudHJ5KTsKPit9Cj4rCj4rLyoqCj4rICogQXN5bmMgd3JpdGUgam91cm5hbCBjb21w bGV0aW9uLgo+KyAqLwo+K3N0YXRpYyB2b2lkCj4rYXBwbHlfc3luY2hyb19yb3dfY2Ioc3RydWN0 IGpvdXJuYWxfZW50cnkgKmVudHJ5KQo+K3sKPisgYXNzZXJ0KGVudHJ5LT5jb21wbGV0ZV9kYXRh ICE9IE5VTEwpOwo+KyBzdHJ1Y3Qgc3luY2hyb19lbnRyeSAqc3luY2hyb19lbnRyeSA9Cj4rIChz dHJ1Y3Qgc3luY2hyb19lbnRyeSAqKWVudHJ5LT5jb21wbGV0ZV9kYXRhOwo+KyBpZiAoZW50cnkt PnJlcyA8IDApCj4rIGFwcGxpZXJfcm9sbGJhY2tfYnlfd2FsX2lvKCk7Cj4rIGVsc2UKPisgdHJp Z2dlcl9ydW4oJnJlcGxpY2FzZXQuYXBwbGllci5vbl93YWxfd3JpdGUsIE5VTEwpOwo+Kwo+KyBz eW5jaHJvX2VudHJ5X2RlbGV0ZShzeW5jaHJvX2VudHJ5KTsKPit9Cj4rCj4rLyoqCj4rICogQWxs b2NhdGUgYSBuZXcgc3luY2hyb19lbnRyeSB0byBiZSBwYXNzZWQgdG8KPisgKiB0aGUgam91cm5h bCBlbmdpbmUgaW4gYXN5bmMgd3JpdGUgd2F5Lgo+KyAqLwo+K3N0YXRpYyBzdHJ1Y3Qgc3luY2hy b19lbnRyeSAqCj4rc3luY2hyb19lbnRyeV9uZXcoc3RydWN0IHhyb3dfaGVhZGVyICphcHBsaWVy X3JvdywKPisgc3RydWN0IHN5bmNocm9fcmVxdWVzdCAqcmVxKQo+K3sKPisgc3RydWN0IHN5bmNo cm9fZW50cnkgKmVudHJ5Owo+KyBzaXplX3Qgc2l6ZSA9IHNpemVvZigqZW50cnkpICsgc2l6ZW9m KHN0cnVjdCB4cm93X2hlYWRlciAqKTsKPisKPisgLyoKPisgKiBGb3Igc2ltcGxpY2l0eSB3ZSB1 c2UgbWFsbG9jIGhlcmUgYnV0Cj4rICogcHJvYmFibHkgc2hvdWxkIHByb3ZpZGUgc29tZSBjYWNo ZSBzaW1pbGFyCj4rICogdG8gdHhuIGNhY2hlLgo+KyAqLwo+KyBlbnRyeSA9IChzdHJ1Y3Qgc3lu Y2hyb19lbnRyeSAqKW1hbGxvYyhzaXplKTsKPisgaWYgKGVudHJ5ID09IE5VTEwpIHsKPisgZGlh Z19zZXQoT3V0T2ZNZW1vcnksIHNpemUsICJtYWxsb2MiLCAic3luY2hyb19lbnRyeSIpOwo+KyBy ZXR1cm4gTlVMTDsKPisgfQo+Kwo+KyBzdHJ1Y3Qgam91cm5hbF9lbnRyeSAqam91cm5hbF9lbnRy eSA9ICZlbnRyeS0+am91cm5hbF9lbnRyeTsKPisgc3RydWN0IHN5bmNocm9fYm9keV9iaW4gKmJv ZHlfYmluID0gJmVudHJ5LT5ib2R5X2JpbjsKPisgc3RydWN0IHhyb3dfaGVhZGVyICpyb3cgPSAm ZW50cnktPnJvdzsKPisKPisgam91cm5hbF9lbnRyeS0+cm93c1swXSA9IHJvdzsKPisKPisgeHJv d19lbmNvZGVfc3luY2hybyhyb3csIGJvZHlfYmluLCByZXEpOwo+Kwo+KyByb3ctPmxzbiA9IGFw cGxpZXJfcm93LT5sc247Cj4rIHJvdy0+cmVwbGljYV9pZCA9IGFwcGxpZXJfcm93LT5yZXBsaWNh X2lkOwo+Kwo+KyBqb3VybmFsX2VudHJ5X2NyZWF0ZShqb3VybmFsX2VudHJ5LCAxLCB4cm93X2Fw cHJveF9sZW4ocm93KSwKPisgYXBwbHlfc3luY2hyb19yb3dfY2IsIGVudHJ5KTsKPisgcmV0dXJu IGVudHJ5Owo+K30KPisKPisvKiogUHJvY2VzcyBhIHN5bmNocm8gcmVxdWVzdC4gKi8KPitzdGF0 aWMgaW50Cj4rYXBwbHlfc3luY2hyb19yb3coc3RydWN0IHhyb3dfaGVhZGVyICpyb3cpCj4rewo+ KyBhc3NlcnQoaXByb3RvX3R5cGVfaXNfc3luY2hyb19yZXF1ZXN0KHJvdy0+dHlwZSkpOwo+Kwo+ KyBzdHJ1Y3Qgc3luY2hyb19yZXF1ZXN0IHJlcTsKPisgaWYgKHhyb3dfZGVjb2RlX3N5bmNocm8o cm93LCAmcmVxKSAhPSAwKQo+KyBnb3RvIGVycjsKPisKPisgaWYgKHR4bl9saW1ib19wcm9jZXNz KCZ0eG5fbGltYm8sICZyZXEpKQo+KyBnb3RvIGVycjsKPisKPisgc3RydWN0IHN5bmNocm9fZW50 cnkgKmVudHJ5Owo+KyBlbnRyeSA9IHN5bmNocm9fZW50cnlfbmV3KHJvdywgJnJlcSk7Cj4rIGlm IChlbnRyeSA9PSBOVUxMKQo+KyBnb3RvIGVycjsKPisKPisgaWYgKGpvdXJuYWxfd3JpdGVfYXN5 bmMoJmVudHJ5LT5qb3VybmFsX2VudHJ5KSAhPSAwKSB7Cj4rIGRpYWdfc2V0KENsaWVudEVycm9y LCBFUl9XQUxfSU8pOwo+KyBnb3RvIGVycjsKPisgfQo+KyByZXR1cm4gMDsKPitlcnI6Cj4rIGRp YWdfbG9nKCk7Cj4rIHJldHVybiAtMTsKPit9Cj4rCj7CoC8qKgo+wqDCoCogQXBwbHkgYWxsIHJv d3MgaW4gdGhlIHJvd3MgcXVldWUgYXMgYSBzaW5nbGUgdHJhbnNhY3Rpb24uCj7CoMKgKgo+QEAg LTg0NywxMyArOTIzLDI2IEBAIGFwcGxpZXJfYXBwbHlfdHgoc3RydWN0IHN0YWlscSAqcm93cykK PsKgIH0KPsKgIH0KPsKgCj4rIGlmICh1bmxpa2VseShpcHJvdG9fdHlwZV9pc19zeW5jaHJvX3Jl cXVlc3QoZmlyc3Rfcm93LT50eXBlKSkpIHsKPisgLyoKPisgKiBTeW5jaHJvIG1lc3NhZ2VzIGFy ZSBub3QgdHJhbnNhY3Rpb25zLCBpbiB0ZXJtcwo+KyAqIG9mIERNTC4gQWx3YXlzIHNlbnQgYW5k IHdyaXR0ZW4gaXNvbGF0ZWQgZnJvbQo+KyAqIGVhY2ggb3RoZXIuCj4rICovCj4rIGFzc2VydChm aXJzdF9yb3cgPT0gbGFzdF9yb3cpOwo+KyBpZiAoYXBwbHlfc3luY2hyb19yb3coZmlyc3Rfcm93 KSAhPSAwKQo+KyBkaWFnX3JhaXNlKCk7Cj4rIGdvdG8gc3VjY2VzczsKPisgfQo+Kwo+wqAgLyoq Cj7CoCAqIEV4cGxpY2l0bHkgYmVnaW4gdGhlIHRyYW5zYWN0aW9uIHNvIHRoYXQgd2UgY2FuCj7C oCAqIGNvbnRyb2wgZmliZXItPmdjIGxpZmUgY3ljbGUgYW5kLCBpbiBjYXNlIG9mIGFwcGx5Cj7C oCAqIGNvbmZsaWN0IHNhZmVseSBhY2Nlc3MgZmFpbGVkIHhyb3cgb2JqZWN0IGFuZCBhbGxvY2F0 ZQo+wqAgKiBJUFJPVE9fTk9QIG9uIGdjLgo+wqAgKi8KPi0gc3RydWN0IHR4biAqdHhuID0gdHhu X2JlZ2luKCk7Cj4rIHN0cnVjdCB0eG4gKnR4bjsKPisgdHhuID0gdHhuX2JlZ2luKCk7CsKgCldo eSB0aGlzIGNoYW5nZT8KwqAKPsKgIHN0cnVjdCBhcHBsaWVyX3R4X3JvdyAqaXRlbTsKPsKgIGlm ICh0eG4gPT0gTlVMTCkgewo+wqAgbGF0Y2hfdW5sb2NrKGxhdGNoKTsKPkBAIC05MjIsNiArMTAx MSw3IEBAIGFwcGxpZXJfYXBwbHlfdHgoc3RydWN0IHN0YWlscSAqcm93cykKPsKgIGlmICh0eG5f Y29tbWl0X2FzeW5jKHR4bikgPCAwKQo+wqAgZ290byBmYWlsOwo+wqAKPitzdWNjZXNzOgo+wqAg LyoKPsKgICogVGhlIHRyYW5zYWN0aW9uIHdhcyBzZW50IHRvIGpvdXJuYWwgc28gcHJvbW90ZSB2 Y2xvY2suCj7CoCAqCj5AQCAtMTA4OSw3ICsxMTc5LDEzIEBAIGFwcGxpZXJfc3Vic2NyaWJlKHN0 cnVjdCBhcHBsaWVyICphcHBsaWVyKQo+wqAKPsKgIGFwcGxpZXItPmxhZyA9IFRJTUVPVVRfSU5G SU5JVFk7Cj7CoAo+LSAvKiBSZWdpc3RlciB0cmlnZ2VycyB0byBoYW5kbGUgV0FMIHdyaXRlcyBh bmQgcm9sbGJhY2tzLiAqLwo+KyAvKgo+KyAqIFJlZ2lzdGVyIHRyaWdnZXJzIHRvIGhhbmRsZSBX QUwgd3JpdGVzIGFuZCByb2xsYmFja3MuCj4rICoKPisgKiBOb3RlIHdlIHVzZSB0aGVtIGZvciBz eW5jcm9ub3VzIHBhY2tldHMgaGFuZGxpbmcgYXMgd2VsbAo+KyAqIHRodXMgd2hlbiBjaGFuZ2lu ZyBtYWtlIHN1cmUgdGhhdCBzeW5jaHJvIGhhbmRsaW5nIHdvbid0Cj4rICogYmUgYnJva2VuLgo+ KyAqLwo+wqAgc3RydWN0IHRyaWdnZXIgb25fd2FsX3dyaXRlOwo+wqAgdHJpZ2dlcl9jcmVhdGUo Jm9uX3dhbF93cml0ZSwgYXBwbGllcl9vbl93YWxfd3JpdGUsIGFwcGxpZXIsIE5VTEwpOwo+wqAg dHJpZ2dlcl9hZGQoJnJlcGxpY2FzZXQuYXBwbGllci5vbl93YWxfd3JpdGUsICZvbl93YWxfd3Jp dGUpOwo+LS0KPjIuMjYuMgo+wqAKwqAKLS0KU2VyZ2XCoFBldHJlbmtv ----ALT--f4EdC38e208efAaE3A964293DaA6dC4f1597999873 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXY+SGkhIFRoYW5rcyBmb3IgdGhlIHBhdGNoLjwvZGl2PjxkaXY+TEdU TSB3aXRoIG9uZSBjb21tZW50IHdoaWNo4oCZcyB1cCB0byB5b3UuPC9kaXY+PGRpdj4mbmJzcDs8 L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDoxcHgg c29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPtCn0LXRgtCy 0LXRgNCzLCAyMCDQsNCy0LPRg9GB0YLQsCAyMDIwLCAwOjM2ICswMzowMCDQvtGCIEN5cmlsbCBH b3JjdW5vdiAmbHQ7Z29yY3Vub3ZAZ21haWwuY29tJmd0Ozo8YnI+Jm5ic3A7PGRpdiBpZD0iIj48 ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxzdHlsZSB0eXBlPSJ0ZXh0L2Nz cyI+PC9zdHlsZT48ZGl2PjxkaXYgaWQ9InN0eWxlXzE1OTc4NzI5NjExODU2NjMzMDkzX0JPRFki PlRyYW5zYWN0aW9uIHByb2Nlc3NpbmcgY29kZSBpcyB2ZXJ5IGhlYXZ5IHNpbXBseSBiZWNhdXNl PGJyPnRyYW5zYWN0aW9ucyBhcmUgY2FycnlpbmcgdmFyaW91cyBkYXRhIGFuZCBpbnZvbHZlcyBh IG51bWJlcjxicj5vZiBvdGhlciBtZWNoYW5pc21zIHRvIHByb2NlZWQuPGJyPjxicj5JbiB0dXJu LCB3aGVuIHdlIHJlY2VpdmUgY29uZmlybSBvciByb2xsYmFjayBwYWNrZWQgZnJvbTxicj5hbm90 aGVyIG5vZGUgaW4gYSBjbHVzdGVyIHdlIGp1c3QgbmVlZCB0byBpbnNwZWN0IGxpbWJvPGJyPnF1 ZXVlIGFuZCB3cml0ZSB0aGlzIHBhY2tlZCBpbnRvIGEgV0FMIGpvdXJuYWwuIFNvIGNhbGxpbmc8 YnI+YSBidW5jaCBvZiB0eG4gZW5naW5lIGhlbHBlcnMgaXMgc2ltcGx5IHdhc3RlIG9mIGN5Y2xl cy48YnI+PGJyPlRodXMgbGV0cyByYXRoZXIgaGFuZGxlIHRoZW0gaW4gYSBzcGVjaWFsIGxpZ2h0 IHdheTo8YnI+PGJyPiZuYnNwOy0gYWxsb2NhdGUgc3luY2hyb19lbnRyeSBzdHJ1Y3R1cmUgd2hp Y2ggd291bGQgY2Fycnk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7dGhlIGpvdXJuYWwgZW50cnkgaXRz ZWxmIGFuZCBlbmNvZGVkIG1lc3NhZ2U8YnI+Jm5ic3A7LSBwcm9jZXNzIGxpbWJvIHF1ZXVlIHRv IG1hcmsgY29uZmlybWVkL3JvbGxiYWNrJ2VkPGJyPiZuYnNwOyZuYnNwOyZuYnNwO21lc3NhZ2Vz PGJyPiZuYnNwOy0gZmluYWxseSB3cml0ZSB0aGlzIHN5bmNocm9fZW50cnkgaW50byBhIGpvdXJu YWw8YnI+PGJyPldoaWNoIGlzIGEgd2F5IHNpbXBsaWVyLjxicj48YnI+UGFydC1vZiAjNTEyOTxi cj48YnI+U3VnZ2Vkc3RlZC1ieTogVmxhZGlzbGF2IFNocGlsZXZveSAmbHQ7PGEgaHJlZj0iL2Nv bXBvc2U/VG89di5zaHBpbGV2b3lAdGFyYW50b29sLm9yZyI+di5zaHBpbGV2b3lAdGFyYW50b29s Lm9yZzwvYT4mZ3Q7PGJyPkNvLWRldmVsb3BlZC1ieTogVmxhZGlzbGF2IFNocGlsZXZveSAmbHQ7 PGEgaHJlZj0iL2NvbXBvc2U/VG89di5zaHBpbGV2b3lAdGFyYW50b29sLm9yZyI+di5zaHBpbGV2 b3lAdGFyYW50b29sLm9yZzwvYT4mZ3Q7PGJyPlNpZ25lZC1vZmYtYnk6IEN5cmlsbCBHb3JjdW5v diAmbHQ7PGEgaHJlZj0iL2NvbXBvc2U/VG89Z29yY3Vub3ZAZ21haWwuY29tIj5nb3JjdW5vdkBn bWFpbC5jb208L2E+Jmd0Ozxicj4tLS08YnI+Jm5ic3A7c3JjL2JveC9hcHBsaWVyLmNjIHwgMjAw ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLTxicj4mbmJzcDsx IGZpbGUgY2hhbmdlZCwgMTQ4IGluc2VydGlvbnMoKyksIDUyIGRlbGV0aW9ucygtKTxicj48YnI+ ZGlmZiAtLWdpdCBhL3NyYy9ib3gvYXBwbGllci5jYyBiL3NyYy9ib3gvYXBwbGllci5jYzxicj5p bmRleCAxMzg3ZDUxOGMuLmMxZDA3Y2E1NCAxMDA2NDQ8YnI+LS0tIGEvc3JjL2JveC9hcHBsaWVy LmNjPGJyPisrKyBiL3NyYy9ib3gvYXBwbGllci5jYzxicj5AQCAtNTEsOCArNTEsMTAgQEA8YnI+ Jm5ic3A7I2luY2x1ZGUgInNjaGVtYS5oIjxicj4mbmJzcDsjaW5jbHVkZSAidHhuLmgiPGJyPiZu YnNwOyNpbmNsdWRlICJib3guaCI8YnI+KyNpbmNsdWRlICJ4cm93LmgiPGJyPiZuYnNwOyNpbmNs dWRlICJzY29wZWRfZ3VhcmQuaCI8YnI+Jm5ic3A7I2luY2x1ZGUgInR4bl9saW1iby5oIjxicj4r I2luY2x1ZGUgImpvdXJuYWwuaCI8YnI+Jm5ic3A7PGJyPiZuYnNwO1NUUlMoYXBwbGllcl9zdGF0 ZSwgYXBwbGllcl9TVEFURSk7PGJyPiZuYnNwOzxicj5AQCAtMjY4LDQ1ICsyNzAsMTEgQEAgcHJv Y2Vzc19ub3Aoc3RydWN0IHJlcXVlc3QgKnJlcXVlc3QpPGJyPiZuYnNwOyByZXR1cm4gdHhuX2Nv bW1pdF9zdG10KHR4biwgcmVxdWVzdCk7PGJyPiZuYnNwO308YnI+Jm5ic3A7PGJyPi0vKjxicj4t ICogQ09ORklSTS9ST0xMQkFDSyByb3dzIGFyZW4ndCBkbWwgcmVxdWVzdHMgYW5kIHJlcXVpcmUg c3BlY2lhbDxicj4tICogaGFuZGxpbmc6IGluc3RlYWQgb2YgcGVyZm9ybWluZyBzb21lIG9wZXJh dGlvbnMgb24gc3BhY2VzLDxicj4tICogcHJvY2Vzc2luZyB0aGVzZSByZXF1ZXN0cyByZXF1aXJl cyB0eG5fbGltYm8gdG8gZWl0aGVyIGNvbmZpcm08YnI+LSAqIG9yIHJvbGxiYWNrIHNvbWUgb2Yg aXRzIGVudHJpZXMuPGJyPi0gKi88YnI+LXN0YXRpYyBpbnQ8YnI+LXByb2Nlc3Nfc3luY2hyb19y b3coc3RydWN0IHJlcXVlc3QgKnJlcXVlc3QpPGJyPi17PGJyPi0gYXNzZXJ0KGlwcm90b190eXBl X2lzX3N5bmNocm9fcmVxdWVzdChyZXF1ZXN0LSZndDtoZWFkZXItJmd0O3R5cGUpKTs8YnI+LSBz dHJ1Y3QgdHhuICp0eG4gPSBpbl90eG4oKTs8YnI+LTxicj4tIHN0cnVjdCBzeW5jaHJvX3JlcXVl c3Qgc3luX3JlcTs8YnI+LSBpZiAoeHJvd19kZWNvZGVfc3luY2hybyhyZXF1ZXN0LSZndDtoZWFk ZXIsICZhbXA7c3luX3JlcSkgIT0gMCk8YnI+LSByZXR1cm4gLTE7PGJyPi0gYXNzZXJ0KHR4bi0m Z3Q7bl9hcHBsaWVyX3Jvd3MgPT0gMCk7PGJyPi0gLyo8YnI+LSAqIFRoaXMgaXMgbm90IHJlYWxs eSBhIHRyYW5zYWN0aW9uLiBJdCBqdXN0IHVzZXMgdHhuIEFQSTxicj4tICogdG8gcHV0IHRoZSBk YXRhIGludG8gV0FMLiBBbmQgb2J2aW91c2x5IGl0IHNob3VsZCBub3Q8YnI+LSAqIGdvIHRvIHRo ZSBsaW1ibyBhbmQgYmxvY2sgb24gdGhlIHZlcnkgc2FtZSBzeW5jPGJyPi0gKiB0cmFuc2FjdGlv biB3aGljaCBpdCB0cmllcyB0byBjb25maXJtIG5vdy48YnI+LSAqLzxicj4tIHR4bl9zZXRfZmxh Zyh0eG4sIFRYTl9GT1JDRV9BU1lOQyk7PGJyPi08YnI+LSBpZiAodHhuX2JlZ2luX3N0bXQodHhu LCBOVUxMKSAhPSAwKTxicj4tIHJldHVybiAtMTs8YnI+LSBpZiAodHhuX2NvbW1pdF9zdG10KHR4 biwgcmVxdWVzdCkgIT0gMCk8YnI+LSByZXR1cm4gLTE7PGJyPi0gcmV0dXJuIHR4bl9saW1ib19w cm9jZXNzKCZhbXA7dHhuX2xpbWJvLCAmYW1wO3N5bl9yZXEpOzxicj4tfTxicj4tPGJyPiZuYnNw O3N0YXRpYyBpbnQ8YnI+Jm5ic3A7YXBwbHlfcm93KHN0cnVjdCB4cm93X2hlYWRlciAqcm93KTxi cj4mbmJzcDt7PGJyPiZuYnNwOyBzdHJ1Y3QgcmVxdWVzdCByZXF1ZXN0Ozxicj4tIGlmIChpcHJv dG9fdHlwZV9pc19zeW5jaHJvX3JlcXVlc3Qocm93LSZndDt0eXBlKSkgezxicj4tIHJlcXVlc3Qu aGVhZGVyID0gcm93Ozxicj4tIHJldHVybiBwcm9jZXNzX3N5bmNocm9fcm93KCZhbXA7cmVxdWVz dCk7PGJyPi0gfTxicj4rIGFzc2VydCghaXByb3RvX3R5cGVfaXNfc3luY2hyb19yZXF1ZXN0KHJv dy0mZ3Q7dHlwZSkpOzxicj4mbmJzcDsgaWYgKHhyb3dfZGVjb2RlX2RtbChyb3csICZhbXA7cmVx dWVzdCwgZG1sX3JlcXVlc3Rfa2V5X21hcChyb3ctJmd0O3R5cGUpKSAhPSAwKTxicj4mbmJzcDsg cmV0dXJuIC0xOzxicj4mbmJzcDsgaWYgKHJlcXVlc3QudHlwZSA9PSBJUFJPVE9fTk9QKTxicj5A QCAtNzUzLDE5ICs3MjEsOSBAQCBhcHBsaWVyX3JlYWRfdHgoc3RydWN0IGFwcGxpZXIgKmFwcGxp ZXIsIHN0cnVjdCBzdGFpbHEgKnJvd3MpPGJyPiZuYnNwOyBuZXh0KS0mZ3Q7cm93LmlzX2NvbW1p dCk7PGJyPiZuYnNwO308YnI+Jm5ic3A7PGJyPi1zdGF0aWMgaW50PGJyPi1hcHBsaWVyX3R4bl9y b2xsYmFja19jYihzdHJ1Y3QgdHJpZ2dlciAqdHJpZ2dlciwgdm9pZCAqZXZlbnQpPGJyPitzdGF0 aWMgdm9pZDxicj4rYXBwbGllcl9yb2xsYmFja19ieV93YWxfaW8odm9pZCk8YnI+Jm5ic3A7ezxi cj4tICh2b2lkKSB0cmlnZ2VyOzxicj4tIHN0cnVjdCB0eG4gKnR4biA9IChzdHJ1Y3QgdHhuICop IGV2ZW50Ozxicj4tIC8qPGJyPi0gKiBTeW5jaHJvbm91cyB0cmFuc2FjdGlvbiByb2xsYmFjayBk dWUgdG8gcmVjZWl2aW5nIGE8YnI+LSAqIFJPTExCQUNLIGVudHJ5IGlzIGEgbm9ybWFsIGV2ZW50 IGFuZCByZXF1aXJlcyBubzxicj4tICogc3BlY2lhbCBoYW5kbGluZy48YnI+LSAqLzxicj4tIGlm ICh0eG4tJmd0O3NpZ25hdHVyZSA9PSBUWE5fU0lHTkFUVVJFX1NZTkNfUk9MTEJBQ0spPGJyPi0g cmV0dXJuIDA7PGJyPi08YnI+Jm5ic3A7IC8qPGJyPiZuYnNwOyAqIFNldHVwIHNoYXJlZCBhcHBs aWVyIGRpYWdub3N0aWMgYXJlYS48YnI+Jm5ic3A7ICo8YnI+QEAgLTc3NCw5ICs3MzIsOSBAQCBh cHBsaWVyX3R4bl9yb2xsYmFja19jYihzdHJ1Y3QgdHJpZ2dlciAqdHJpZ2dlciwgdm9pZCAqZXZl bnQpPGJyPiZuYnNwOyAqIGRpYWcgdXNlIHBlci1hcHBsaWVyIGRpYWcgaW5zdGVhZCBhbGwgdGhl IHRpbWU8YnI+Jm5ic3A7ICogKHdoaWNoIGFjdHVhbGx5IGFscmVhZHkgcHJlc2VudCBpbiB0aGUg c3RydWN0dXJlKS48YnI+Jm5ic3A7ICo8YnI+LSAqIEJ1dCByZW1lbWJlciB0aGF0IHRyYW5zYWN0 aW9ucyBhcmUgYXN5bmNocm9ub3VzPGJyPi0gKiBhbmQgcm9sbGJhY2sgbWF5IGhhcHBlbiBhIHdh eSBsYXR0ZXIgYWZ0ZXIgaXQ8YnI+LSAqIHBhc3NlZCB0byB0aGUgam91cm5hbCBlbmdpbmUuPGJy PisgKiBCdXQgcmVtZW1iZXIgdGhhdCBXQUwgd3JpdGVzIGFyZSBhc3luY2hyb25vdXMgYW5kPGJy PisgKiByb2xsYmFjayBtYXkgaGFwcGVuIGEgd2F5IGxhdGVyIGFmdGVyIGl0IHdhcyBwYXNzZWQg dG88YnI+KyAqIHRoZSBqb3VybmFsIGVuZ2luZS48YnI+Jm5ic3A7ICovPGJyPiZuYnNwOyBkaWFn X3NldChDbGllbnRFcnJvciwgRVJfV0FMX0lPKTs8YnI+Jm5ic3A7IGRpYWdfc2V0X2Vycm9yKCZh bXA7cmVwbGljYXNldC5hcHBsaWVyLmRpYWcsPGJyPkBAIC03ODcsNiArNzQ1LDIwIEBAIGFwcGxp ZXJfdHhuX3JvbGxiYWNrX2NiKHN0cnVjdCB0cmlnZ2VyICp0cmlnZ2VyLCB2b2lkICpldmVudCk8 YnI+Jm5ic3A7PGJyPiZuYnNwOyAvKiBSb2xsYmFjayBhcHBsaWVyIHZjbG9jayB0byB0aGUgY29t bWl0dGVkIG9uZS4gKi88YnI+Jm5ic3A7IHZjbG9ja19jb3B5KCZhbXA7cmVwbGljYXNldC5hcHBs aWVyLnZjbG9jaywgJmFtcDtyZXBsaWNhc2V0LnZjbG9jayk7PGJyPit9PGJyPis8YnI+K3N0YXRp YyBpbnQ8YnI+K2FwcGxpZXJfdHhuX3JvbGxiYWNrX2NiKHN0cnVjdCB0cmlnZ2VyICp0cmlnZ2Vy LCB2b2lkICpldmVudCk8YnI+K3s8YnI+KyAodm9pZCkgdHJpZ2dlcjs8YnI+KyBzdHJ1Y3QgdHhu ICp0eG4gPSAoc3RydWN0IHR4biAqKSBldmVudDs8YnI+KyAvKjxicj4rICogU3luY2hyb25vdXMg dHJhbnNhY3Rpb24gcm9sbGJhY2sgZHVlIHRvIHJlY2VpdmluZyBhPGJyPisgKiBST0xMQkFDSyBl bnRyeSBpcyBhIG5vcm1hbCBldmVudCBhbmQgcmVxdWlyZXMgbm88YnI+KyAqIHNwZWNpYWwgaGFu ZGxpbmcuPGJyPisgKi88YnI+KyBpZiAodHhuLSZndDtzaWduYXR1cmUgIT0gVFhOX1NJR05BVFVS RV9TWU5DX1JPTExCQUNLKTxicj4rIGFwcGxpZXJfcm9sbGJhY2tfYnlfd2FsX2lvKCk7PGJyPiZu YnNwOyByZXR1cm4gMDs8YnI+Jm5ic3A7fTxicj4mbmJzcDs8YnI+QEAgLTgwMCw2ICs3NzIsMTEw IEBAIGFwcGxpZXJfdHhuX3dhbF93cml0ZV9jYihzdHJ1Y3QgdHJpZ2dlciAqdHJpZ2dlciwgdm9p ZCAqZXZlbnQpPGJyPiZuYnNwOyByZXR1cm4gMDs8YnI+Jm5ic3A7fTxicj4mbmJzcDs8YnI+K3N0 cnVjdCBzeW5jaHJvX2VudHJ5IHs8YnI+KyAvKiogRW5jb2RlZCBmb3JtIG9mIGEgc3luY2hybyBy ZWNvcmQuICovPGJyPisgc3RydWN0IHN5bmNocm9fYm9keV9iaW4gYm9keV9iaW47PGJyPis8YnI+ KyAvKiogeHJvdyB0byB3cml0ZSwgdXNlZCBieSB0aGUgam91cm5hbCBlbmdpbmUuICovPGJyPisg c3RydWN0IHhyb3dfaGVhZGVyIHJvdzs8YnI+Kzxicj4rIC8qKjxicj4rICogVGhlIGpvdXJuYWwg ZW50cnkgaXRzZWxmLiBOb3RlIHNpbmNlPGJyPisgKiBpdCBoYXMgdW5zaXplZCBhcnJheSBpdCBt dXN0IGJlIHRoZTxicj4rICogbGFzdCBlbnRyeSBpbiB0aGUgc3RydWN0dXJlLjxicj4rICovPGJy Pisgc3RydWN0IGpvdXJuYWxfZW50cnkgam91cm5hbF9lbnRyeTs8YnI+K307PGJyPis8YnI+K3N0 YXRpYyB2b2lkPGJyPitzeW5jaHJvX2VudHJ5X2RlbGV0ZShzdHJ1Y3Qgc3luY2hyb19lbnRyeSAq ZW50cnkpPGJyPit7PGJyPisgZnJlZShlbnRyeSk7PGJyPit9PGJyPis8YnI+Ky8qKjxicj4rICog QXN5bmMgd3JpdGUgam91cm5hbCBjb21wbGV0aW9uLjxicj4rICovPGJyPitzdGF0aWMgdm9pZDxi cj4rYXBwbHlfc3luY2hyb19yb3dfY2Ioc3RydWN0IGpvdXJuYWxfZW50cnkgKmVudHJ5KTxicj4r ezxicj4rIGFzc2VydChlbnRyeS0mZ3Q7Y29tcGxldGVfZGF0YSAhPSBOVUxMKTs8YnI+KyBzdHJ1 Y3Qgc3luY2hyb19lbnRyeSAqc3luY2hyb19lbnRyeSA9PGJyPisgKHN0cnVjdCBzeW5jaHJvX2Vu dHJ5ICopZW50cnktJmd0O2NvbXBsZXRlX2RhdGE7PGJyPisgaWYgKGVudHJ5LSZndDtyZXMgJmx0 OyAwKTxicj4rIGFwcGxpZXJfcm9sbGJhY2tfYnlfd2FsX2lvKCk7PGJyPisgZWxzZTxicj4rIHRy aWdnZXJfcnVuKCZhbXA7cmVwbGljYXNldC5hcHBsaWVyLm9uX3dhbF93cml0ZSwgTlVMTCk7PGJy Pis8YnI+KyBzeW5jaHJvX2VudHJ5X2RlbGV0ZShzeW5jaHJvX2VudHJ5KTs8YnI+K308YnI+Kzxi cj4rLyoqPGJyPisgKiBBbGxvY2F0ZSBhIG5ldyBzeW5jaHJvX2VudHJ5IHRvIGJlIHBhc3NlZCB0 bzxicj4rICogdGhlIGpvdXJuYWwgZW5naW5lIGluIGFzeW5jIHdyaXRlIHdheS48YnI+KyAqLzxi cj4rc3RhdGljIHN0cnVjdCBzeW5jaHJvX2VudHJ5ICo8YnI+K3N5bmNocm9fZW50cnlfbmV3KHN0 cnVjdCB4cm93X2hlYWRlciAqYXBwbGllcl9yb3csPGJyPisgc3RydWN0IHN5bmNocm9fcmVxdWVz dCAqcmVxKTxicj4rezxicj4rIHN0cnVjdCBzeW5jaHJvX2VudHJ5ICplbnRyeTs8YnI+KyBzaXpl X3Qgc2l6ZSA9IHNpemVvZigqZW50cnkpICsgc2l6ZW9mKHN0cnVjdCB4cm93X2hlYWRlciAqKTs8 YnI+Kzxicj4rIC8qPGJyPisgKiBGb3Igc2ltcGxpY2l0eSB3ZSB1c2UgbWFsbG9jIGhlcmUgYnV0 PGJyPisgKiBwcm9iYWJseSBzaG91bGQgcHJvdmlkZSBzb21lIGNhY2hlIHNpbWlsYXI8YnI+KyAq IHRvIHR4biBjYWNoZS48YnI+KyAqLzxicj4rIGVudHJ5ID0gKHN0cnVjdCBzeW5jaHJvX2VudHJ5 ICopbWFsbG9jKHNpemUpOzxicj4rIGlmIChlbnRyeSA9PSBOVUxMKSB7PGJyPisgZGlhZ19zZXQo T3V0T2ZNZW1vcnksIHNpemUsICJtYWxsb2MiLCAic3luY2hyb19lbnRyeSIpOzxicj4rIHJldHVy biBOVUxMOzxicj4rIH08YnI+Kzxicj4rIHN0cnVjdCBqb3VybmFsX2VudHJ5ICpqb3VybmFsX2Vu dHJ5ID0gJmFtcDtlbnRyeS0mZ3Q7am91cm5hbF9lbnRyeTs8YnI+KyBzdHJ1Y3Qgc3luY2hyb19i b2R5X2JpbiAqYm9keV9iaW4gPSAmYW1wO2VudHJ5LSZndDtib2R5X2Jpbjs8YnI+KyBzdHJ1Y3Qg eHJvd19oZWFkZXIgKnJvdyA9ICZhbXA7ZW50cnktJmd0O3Jvdzs8YnI+Kzxicj4rIGpvdXJuYWxf ZW50cnktJmd0O3Jvd3NbMF0gPSByb3c7PGJyPis8YnI+KyB4cm93X2VuY29kZV9zeW5jaHJvKHJv dywgYm9keV9iaW4sIHJlcSk7PGJyPis8YnI+KyByb3ctJmd0O2xzbiA9IGFwcGxpZXJfcm93LSZn dDtsc247PGJyPisgcm93LSZndDtyZXBsaWNhX2lkID0gYXBwbGllcl9yb3ctJmd0O3JlcGxpY2Ff aWQ7PGJyPis8YnI+KyBqb3VybmFsX2VudHJ5X2NyZWF0ZShqb3VybmFsX2VudHJ5LCAxLCB4cm93 X2FwcHJveF9sZW4ocm93KSw8YnI+KyBhcHBseV9zeW5jaHJvX3Jvd19jYiwgZW50cnkpOzxicj4r IHJldHVybiBlbnRyeTs8YnI+K308YnI+Kzxicj4rLyoqIFByb2Nlc3MgYSBzeW5jaHJvIHJlcXVl c3QuICovPGJyPitzdGF0aWMgaW50PGJyPithcHBseV9zeW5jaHJvX3JvdyhzdHJ1Y3QgeHJvd19o ZWFkZXIgKnJvdyk8YnI+K3s8YnI+KyBhc3NlcnQoaXByb3RvX3R5cGVfaXNfc3luY2hyb19yZXF1 ZXN0KHJvdy0mZ3Q7dHlwZSkpOzxicj4rPGJyPisgc3RydWN0IHN5bmNocm9fcmVxdWVzdCByZXE7 PGJyPisgaWYgKHhyb3dfZGVjb2RlX3N5bmNocm8ocm93LCAmYW1wO3JlcSkgIT0gMCk8YnI+KyBn b3RvIGVycjs8YnI+Kzxicj4rIGlmICh0eG5fbGltYm9fcHJvY2VzcygmYW1wO3R4bl9saW1ibywg JmFtcDtyZXEpKTxicj4rIGdvdG8gZXJyOzxicj4rPGJyPisgc3RydWN0IHN5bmNocm9fZW50cnkg KmVudHJ5Ozxicj4rIGVudHJ5ID0gc3luY2hyb19lbnRyeV9uZXcocm93LCAmYW1wO3JlcSk7PGJy PisgaWYgKGVudHJ5ID09IE5VTEwpPGJyPisgZ290byBlcnI7PGJyPis8YnI+KyBpZiAoam91cm5h bF93cml0ZV9hc3luYygmYW1wO2VudHJ5LSZndDtqb3VybmFsX2VudHJ5KSAhPSAwKSB7PGJyPisg ZGlhZ19zZXQoQ2xpZW50RXJyb3IsIEVSX1dBTF9JTyk7PGJyPisgZ290byBlcnI7PGJyPisgfTxi cj4rIHJldHVybiAwOzxicj4rZXJyOjxicj4rIGRpYWdfbG9nKCk7PGJyPisgcmV0dXJuIC0xOzxi cj4rfTxicj4rPGJyPiZuYnNwOy8qKjxicj4mbmJzcDsmbmJzcDsqIEFwcGx5IGFsbCByb3dzIGlu IHRoZSByb3dzIHF1ZXVlIGFzIGEgc2luZ2xlIHRyYW5zYWN0aW9uLjxicj4mbmJzcDsmbmJzcDsq PGJyPkBAIC04NDcsMTMgKzkyMywyNiBAQCBhcHBsaWVyX2FwcGx5X3R4KHN0cnVjdCBzdGFpbHEg KnJvd3MpPGJyPiZuYnNwOyB9PGJyPiZuYnNwOyB9PGJyPiZuYnNwOzxicj4rIGlmICh1bmxpa2Vs eShpcHJvdG9fdHlwZV9pc19zeW5jaHJvX3JlcXVlc3QoZmlyc3Rfcm93LSZndDt0eXBlKSkpIHs8 YnI+KyAvKjxicj4rICogU3luY2hybyBtZXNzYWdlcyBhcmUgbm90IHRyYW5zYWN0aW9ucywgaW4g dGVybXM8YnI+KyAqIG9mIERNTC4gQWx3YXlzIHNlbnQgYW5kIHdyaXR0ZW4gaXNvbGF0ZWQgZnJv bTxicj4rICogZWFjaCBvdGhlci48YnI+KyAqLzxicj4rIGFzc2VydChmaXJzdF9yb3cgPT0gbGFz dF9yb3cpOzxicj4rIGlmIChhcHBseV9zeW5jaHJvX3JvdyhmaXJzdF9yb3cpICE9IDApPGJyPisg ZGlhZ19yYWlzZSgpOzxicj4rIGdvdG8gc3VjY2Vzczs8YnI+KyB9PGJyPis8YnI+Jm5ic3A7IC8q Kjxicj4mbmJzcDsgKiBFeHBsaWNpdGx5IGJlZ2luIHRoZSB0cmFuc2FjdGlvbiBzbyB0aGF0IHdl IGNhbjxicj4mbmJzcDsgKiBjb250cm9sIGZpYmVyLSZndDtnYyBsaWZlIGN5Y2xlIGFuZCwgaW4g Y2FzZSBvZiBhcHBseTxicj4mbmJzcDsgKiBjb25mbGljdCBzYWZlbHkgYWNjZXNzIGZhaWxlZCB4 cm93IG9iamVjdCBhbmQgYWxsb2NhdGU8YnI+Jm5ic3A7ICogSVBST1RPX05PUCBvbiBnYy48YnI+ Jm5ic3A7ICovPGJyPi0gc3RydWN0IHR4biAqdHhuID0gdHhuX2JlZ2luKCk7PGJyPisgc3RydWN0 IHR4biAqdHhuOzxicj4rIHR4biA9IHR4bl9iZWdpbigpOzwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2 PjwvYmxvY2txdW90ZT48ZGl2PiZuYnNwOzwvZGl2PjxkaXY+V2h5IHRoaXMgY2hhbmdlPzwvZGl2 PjxkaXY+Jm5ic3A7PC9kaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xp ZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNs YXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdj4mbmJzcDsgc3RydWN0IGFw cGxpZXJfdHhfcm93ICppdGVtOzxicj4mbmJzcDsgaWYgKHR4biA9PSBOVUxMKSB7PGJyPiZuYnNw OyBsYXRjaF91bmxvY2sobGF0Y2gpOzxicj5AQCAtOTIyLDYgKzEwMTEsNyBAQCBhcHBsaWVyX2Fw cGx5X3R4KHN0cnVjdCBzdGFpbHEgKnJvd3MpPGJyPiZuYnNwOyBpZiAodHhuX2NvbW1pdF9hc3lu Yyh0eG4pICZsdDsgMCk8YnI+Jm5ic3A7IGdvdG8gZmFpbDs8YnI+Jm5ic3A7PGJyPitzdWNjZXNz Ojxicj4mbmJzcDsgLyo8YnI+Jm5ic3A7ICogVGhlIHRyYW5zYWN0aW9uIHdhcyBzZW50IHRvIGpv dXJuYWwgc28gcHJvbW90ZSB2Y2xvY2suPGJyPiZuYnNwOyAqPGJyPkBAIC0xMDg5LDcgKzExNzks MTMgQEAgYXBwbGllcl9zdWJzY3JpYmUoc3RydWN0IGFwcGxpZXIgKmFwcGxpZXIpPGJyPiZuYnNw Ozxicj4mbmJzcDsgYXBwbGllci0mZ3Q7bGFnID0gVElNRU9VVF9JTkZJTklUWTs8YnI+Jm5ic3A7 PGJyPi0gLyogUmVnaXN0ZXIgdHJpZ2dlcnMgdG8gaGFuZGxlIFdBTCB3cml0ZXMgYW5kIHJvbGxi YWNrcy4gKi88YnI+KyAvKjxicj4rICogUmVnaXN0ZXIgdHJpZ2dlcnMgdG8gaGFuZGxlIFdBTCB3 cml0ZXMgYW5kIHJvbGxiYWNrcy48YnI+KyAqPGJyPisgKiBOb3RlIHdlIHVzZSB0aGVtIGZvciBz eW5jcm9ub3VzIHBhY2tldHMgaGFuZGxpbmcgYXMgd2VsbDxicj4rICogdGh1cyB3aGVuIGNoYW5n aW5nIG1ha2Ugc3VyZSB0aGF0IHN5bmNocm8gaGFuZGxpbmcgd29uJ3Q8YnI+KyAqIGJlIGJyb2tl bi48YnI+KyAqLzxicj4mbmJzcDsgc3RydWN0IHRyaWdnZXIgb25fd2FsX3dyaXRlOzxicj4mbmJz cDsgdHJpZ2dlcl9jcmVhdGUoJmFtcDtvbl93YWxfd3JpdGUsIGFwcGxpZXJfb25fd2FsX3dyaXRl LCBhcHBsaWVyLCBOVUxMKTs8YnI+Jm5ic3A7IHRyaWdnZXJfYWRkKCZhbXA7cmVwbGljYXNldC5h cHBsaWVyLm9uX3dhbF93cml0ZSwgJmFtcDtvbl93YWxfd3JpdGUpOzxicj4tLTxicj4yLjI2LjI8 YnI+Jm5ic3A7PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+Jm5ic3A7 PC9kaXY+PGRpdj4tLTxicj5TZXJnZSZuYnNwO1BldHJlbmtvPC9kaXY+PC9CT0RZPjwvSFRNTD4K ----ALT--f4EdC38e208efAaE3A964293DaA6dC4f1597999873--