From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from f736.i.mail.ru (f736.i.mail.ru [128.140.172.156]) (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 26DD64765E0 for ; Thu, 24 Dec 2020 17:14:59 +0300 (MSK) From: =?UTF-8?B?TGVvbmlkIFZhc2lsaWV2?= MIME-Version: 1.0 Date: Thu, 24 Dec 2020 17:14:58 +0300 Reply-To: =?UTF-8?B?TGVvbmlkIFZhc2lsaWV2?= Message-ID: <1608819298.555311954@f736.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--d96840E879039b0FD89e93284b0C77391608819298" Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH_v3_2/2=5D_base64=3A_improv?= =?utf-8?q?e_decoder_performance?= List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?B?U2VyZ2V5IE5pa2lmb3Jvdg==?= , tarantool-patches@dev.tarantool.org Cc: =?UTF-8?B?VmxhZGlzbGF2IFNocGlsZXZveQ==?= ----ALT--d96840E879039b0FD89e93284b0C77391608819298 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CkhpISBUaGFuayB5b3UgZm9yIHRoZSBwYXRjaC4KQUZBSVUgdGhlIHN0YXR1cyBvZiB0aGUgcGF0 Y2ggaXMgZm9sbG93czoKCsKgPiBCdXQgSSBzZWUgd2UgYXJlIG5vdCBnb2luZyBhbnl3aGVyZSBo ZXJlLiBZb3UgZG9uJ3QgcmVhbGx5IG5lZWQgTEdUTQrCoD4gZnJvbSBtZSBvbiB0aGlzIHBhdGNo LCBpZiB5b3UgZG9uJ3Qgd2FudCB0byBmaW5pc2ggaXQuIEkgYW0gbm90CsKgPiBzdHJpY3RseSBh Z2FpbnN0IHRoZXNlIGNoYW5nZXMsIGJlY2F1c2UgKnByb2JhYmx5KiB0aGV5IGRvbid0IGFkZCBu ZXcKwqA+IGJ1Z3MsIGFuZCBzZWVtIHRvIGJlIGEgdGlueSBiaXQgYmV0dGVyIGZvciBwZXJmLiBJ IG9ubHkgZG9uJ3QgbGlrZSBpdArCoD4gYmVpbmcgbm90IGZpbmlzaGVkLgoKSSB0aGluayB0aGUg Y2hhbmdlcyBhcmUgb2ssIGJlY2F1c2UgdGhleSBhcmUgZ29vZCBmb3IgcGVyZiAoYW5kIHdlIGhh dmUKY29uZmlybWF0aW9uKSBhbmQgZG9uJ3QgYWRkIGRlZ3JhZGF0aW9uIChvdXIgdGVzdHMgc2hv dWxkIGd1YXJhbnRlZQp0aGlzKS4KClNlZSBzb21lIGNvbW1lbnRzIGJlbG93OgoKV2hhdCBhYm91 dCBhIGJlbmNobWFyay4gQUZBSUsgQS4gTHlhcHVub3YgcHJvcG9zZSBzYXZpbmcgYWxsIGJlbmNo bWFya3MKdGhhdCB3ZSB1c2VkLiBEaWQgeW91IGhhdmUgYSBjb252ZXJzYXRpb24gd2l0aCBoaW0/ CgpPbiAyMi4xMi4yMDIwIDEzOjQxLCBTZXJnZXkgTmlraWZvcm92IHdyb3RlOgo+IFVubmVjZXNz YXJ5IGNoZWNrcyB3ZXJlIHJlbW92ZWQgZnJvbSBpbnRlcm5hbCBsb29wcy4KPiBCZW5jaG1hcmsg c2hvd3MgdGhhdCBwZXJmb3JtYW5jZSBpcyBub3cgfjEuMTkgdGltZXMgaGlnaGVyCj4gKHJlbGVh c2UgYnVpbGQsIEludGVsIENvcmUgSTctOTcwMEssIG9ubHkgb25lIHRocmVhZCkuCj4gLS0tCj4K PiBCcmFuY2g6ICBodHRwczovL2dpdGh1Yi5jb20vdGFyYW50b29sL3RhcmFudG9vbC90cmVlL3Zv aWQyMzQvZ2gtMzA2OS1maXgtYmFzZTY0LW1lbW9yeS1vdmVycnVuLXYzCj4KPiB0ZXN0L3VuaXQv YmFzZTY0LmMgfCA3ICsrKy0KPiB0ZXN0L3VuaXQvYmFzZTY0LnJlc3VsdCB8IDg0ICsrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCj4gdGhpcmRfcGFydHkvYmFzZTY0LmMg fCAzNiArKysrKysrKysrKysrLS0tLS0KPiAzIGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMo KyksIDM4IGRlbGV0aW9ucygtKQo+CgpJIGxlZnQgbXkgcXVlc3Rpb25zIGFib3V0IHRoZSB0ZXN0 IGluIHRoZSByZXZpZXcgb2YgdGhlIHByZXZpb3VzIHBhdGNoLgoKPiBkaWZmIC0tZ2l0IGEvdGVz dC91bml0L2Jhc2U2NC5jIGIvdGVzdC91bml0L2Jhc2U2NC5jCj4gaW5kZXggYWRhNDk3YWRmLi43 NmRiN2Q3ODIgMTAwNjQ0Cj4gLS0tIGEvdGVzdC91bml0L2Jhc2U2NC5jCj4gKysrIGIvdGVzdC91 bml0L2Jhc2U2NC5jCj4gQEAgLTcsNyArNyw3IEBAIHN0YXRpYyB2b2lkCj4gYmFzZTY0X3Rlc3Qo Y29uc3QgY2hhciAqc3RyLCBpbnQgb3B0aW9ucywgY29uc3QgY2hhciAqbm9fc3ltYm9scywKPiBp bnQgbm9fc3ltYm9sc19sZW4pCj4gewo+IC0gcGxhbigzICsgbm9fc3ltYm9sc19sZW4pOwo+ICsg cGxhbig0ICsgbm9fc3ltYm9sc19sZW4pOwo+Cj4gaW50IGxlbiA9IHN0cmxlbihzdHIpOwo+IGlu dCBiYXNlNjRfYnVmbGVuID0gYmFzZTY0X2J1ZnNpemUobGVuICsgMSwgb3B0aW9ucyk7Cj4gQEAg LTM0LDYgKzM0LDExIEBAIGJhc2U2NF90ZXN0KGNvbnN0IGNoYXIgKnN0ciwgaW50IG9wdGlvbnMs IGNvbnN0IGNoYXIgKm5vX3N5bWJvbHMsCj4gZnJlZShiYXNlNjRfYnVmKTsKPiBmcmVlKHN0cmJ1 Zik7Cj4KPiArIGNvbnN0IGNoYXIgKmluID0gInNJSXBIdz09IjsKPiArIGludCBpbl9sZW4gPSBz dHJsZW4oaW4pOwo+ICsgcmMgPSBiYXNlNjRfZGVjb2RlKGluLCBpbl9sZW4sIE5VTEwsIDApOwo+ ICsgaXMocmMsIDAsICJubyBzcGFjZSBpbiBvdXQgYnVmZmVyIik7Cj4gKwo+IGNoZWNrX3BsYW4o KTsKPiB9Cj4KPiBkaWZmIC0tZ2l0IGEvdGVzdC91bml0L2Jhc2U2NC5yZXN1bHQgYi90ZXN0L3Vu aXQvYmFzZTY0LnJlc3VsdAo+IGluZGV4IGNkMWYyYjNmNi4uZDYwNjc3MmVhIDEwMDY0NAo+IC0t LSBhL3Rlc3QvdW5pdC9iYXNlNjQucmVzdWx0Cj4gKysrIGIvdGVzdC91bml0L2Jhc2U2NC5yZXN1 bHQKPiBAQCAtMSwxNzggKzEsMjA2IEBACj4gMS4uMjgKPiAqKiogbWFpbiAqKioKPiAtIDEuLjMK PiArIDEuLjQKPiBvayAxIC0gbGVuZ3RoCj4gb2sgMiAtIGRlY29kZSBsZW5ndGggb2sKPiBvayAz IC0gZW5jb2RlL2RlY29kZQo+ICsgb2sgNCAtIG5vIHNwYWNlIGluIG91dCBidWZmZXIKPiBvayAx IC0gc3VidGVzdHMKPiAtIDEuLjYKPiArIDEuLjcKPiBvayAxIC0gbGVuZ3RoCj4gb2sgMiAtIG5v IFxuIHN5bWJvbHMKPiBvayAzIC0gbm8gKyBzeW1ib2xzCj4gb2sgNCAtIG5vID0gc3ltYm9scwo+ IG9rIDUgLSBkZWNvZGUgbGVuZ3RoIG9rCj4gb2sgNiAtIGVuY29kZS9kZWNvZGUKPiArIG9rIDcg LSBubyBzcGFjZSBpbiBvdXQgYnVmZmVyCj4gb2sgMiAtIHN1YnRlc3RzCj4gLSAxLi40Cj4gKyAx Li41Cj4gb2sgMSAtIGxlbmd0aAo+IG9rIDIgLSBubyA9IHN5bWJvbHMKPiBvayAzIC0gZGVjb2Rl IGxlbmd0aCBvawo+IG9rIDQgLSBlbmNvZGUvZGVjb2RlCj4gKyBvayA1IC0gbm8gc3BhY2UgaW4g b3V0IGJ1ZmZlcgo+IG9rIDMgLSBzdWJ0ZXN0cwo+IC0gMS4uNAo+ICsgMS4uNQo+IG9rIDEgLSBs ZW5ndGgKPiBvayAyIC0gbm8gXG4gc3ltYm9scwo+IG9rIDMgLSBkZWNvZGUgbGVuZ3RoIG9rCj4g b2sgNCAtIGVuY29kZS9kZWNvZGUKPiArIG9rIDUgLSBubyBzcGFjZSBpbiBvdXQgYnVmZmVyCj4g b2sgNCAtIHN1YnRlc3RzCj4gLSAxLi4zCj4gKyAxLi40Cj4gb2sgMSAtIGxlbmd0aAo+IG9rIDIg LSBkZWNvZGUgbGVuZ3RoIG9rCj4gb2sgMyAtIGVuY29kZS9kZWNvZGUKPiArIG9rIDQgLSBubyBz cGFjZSBpbiBvdXQgYnVmZmVyCj4gb2sgNSAtIHN1YnRlc3RzCj4gLSAxLi42Cj4gKyAxLi43Cj4g b2sgMSAtIGxlbmd0aAo+IG9rIDIgLSBubyBcbiBzeW1ib2xzCj4gb2sgMyAtIG5vICsgc3ltYm9s cwo+IG9rIDQgLSBubyA9IHN5bWJvbHMKPiBvayA1IC0gZGVjb2RlIGxlbmd0aCBvawo+IG9rIDYg LSBlbmNvZGUvZGVjb2RlCj4gKyBvayA3IC0gbm8gc3BhY2UgaW4gb3V0IGJ1ZmZlcgo+IG9rIDYg LSBzdWJ0ZXN0cwo+IC0gMS4uNAo+ICsgMS4uNQo+IG9rIDEgLSBsZW5ndGgKPiBvayAyIC0gbm8g PSBzeW1ib2xzCj4gb2sgMyAtIGRlY29kZSBsZW5ndGggb2sKPiBvayA0IC0gZW5jb2RlL2RlY29k ZQo+ICsgb2sgNSAtIG5vIHNwYWNlIGluIG91dCBidWZmZXIKPiBvayA3IC0gc3VidGVzdHMKPiAt IDEuLjQKPiArIDEuLjUKPiBvayAxIC0gbGVuZ3RoCj4gb2sgMiAtIG5vIFxuIHN5bWJvbHMKPiBv ayAzIC0gZGVjb2RlIGxlbmd0aCBvawo+IG9rIDQgLSBlbmNvZGUvZGVjb2RlCj4gKyBvayA1IC0g bm8gc3BhY2UgaW4gb3V0IGJ1ZmZlcgo+IG9rIDggLSBzdWJ0ZXN0cwo+IC0gMS4uMwo+ICsgMS4u NAo+IG9rIDEgLSBsZW5ndGgKPiBvayAyIC0gZGVjb2RlIGxlbmd0aCBvawo+IG9rIDMgLSBlbmNv ZGUvZGVjb2RlCj4gKyBvayA0IC0gbm8gc3BhY2UgaW4gb3V0IGJ1ZmZlcgo+IG9rIDkgLSBzdWJ0 ZXN0cwo+IC0gMS4uNgo+ICsgMS4uNwo+IG9rIDEgLSBsZW5ndGgKPiBvayAyIC0gbm8gXG4gc3lt Ym9scwo+IG9rIDMgLSBubyArIHN5bWJvbHMKPiBvayA0IC0gbm8gPSBzeW1ib2xzCj4gb2sgNSAt IGRlY29kZSBsZW5ndGggb2sKPiBvayA2IC0gZW5jb2RlL2RlY29kZQo+ICsgb2sgNyAtIG5vIHNw YWNlIGluIG91dCBidWZmZXIKPiBvayAxMCAtIHN1YnRlc3RzCj4gLSAxLi40Cj4gKyAxLi41Cj4g b2sgMSAtIGxlbmd0aAo+IG9rIDIgLSBubyA9IHN5bWJvbHMKPiBvayAzIC0gZGVjb2RlIGxlbmd0 aCBvawo+IG9rIDQgLSBlbmNvZGUvZGVjb2RlCj4gKyBvayA1IC0gbm8gc3BhY2UgaW4gb3V0IGJ1 ZmZlcgo+IG9rIDExIC0gc3VidGVzdHMKPiAtIDEuLjQKPiArIDEuLjUKPiBvayAxIC0gbGVuZ3Ro Cj4gb2sgMiAtIG5vIFxuIHN5bWJvbHMKPiBvayAzIC0gZGVjb2RlIGxlbmd0aCBvawo+IG9rIDQg LSBlbmNvZGUvZGVjb2RlCj4gKyBvayA1IC0gbm8gc3BhY2UgaW4gb3V0IGJ1ZmZlcgo+IG9rIDEy IC0gc3VidGVzdHMKPiAtIDEuLjMKPiArIDEuLjQKPiBvayAxIC0gbGVuZ3RoCj4gb2sgMiAtIGRl Y29kZSBsZW5ndGggb2sKPiBvayAzIC0gZW5jb2RlL2RlY29kZQo+ICsgb2sgNCAtIG5vIHNwYWNl IGluIG91dCBidWZmZXIKPiBvayAxMyAtIHN1YnRlc3RzCj4gLSAxLi42Cj4gKyAxLi43Cj4gb2sg MSAtIGxlbmd0aAo+IG9rIDIgLSBubyBcbiBzeW1ib2xzCj4gb2sgMyAtIG5vICsgc3ltYm9scwo+ IG9rIDQgLSBubyA9IHN5bWJvbHMKPiBvayA1IC0gZGVjb2RlIGxlbmd0aCBvawo+IG9rIDYgLSBl bmNvZGUvZGVjb2RlCj4gKyBvayA3IC0gbm8gc3BhY2UgaW4gb3V0IGJ1ZmZlcgo+IG9rIDE0IC0g c3VidGVzdHMKPiAtIDEuLjQKPiArIDEuLjUKPiBvayAxIC0gbGVuZ3RoCj4gb2sgMiAtIG5vID0g c3ltYm9scwo+IG9rIDMgLSBkZWNvZGUgbGVuZ3RoIG9rCj4gb2sgNCAtIGVuY29kZS9kZWNvZGUK PiArIG9rIDUgLSBubyBzcGFjZSBpbiBvdXQgYnVmZmVyCj4gb2sgMTUgLSBzdWJ0ZXN0cwo+IC0g MS4uNAo+ICsgMS4uNQo+IG9rIDEgLSBsZW5ndGgKPiBvayAyIC0gbm8gXG4gc3ltYm9scwo+IG9r IDMgLSBkZWNvZGUgbGVuZ3RoIG9rCj4gb2sgNCAtIGVuY29kZS9kZWNvZGUKPiArIG9rIDUgLSBu byBzcGFjZSBpbiBvdXQgYnVmZmVyCj4gb2sgMTYgLSBzdWJ0ZXN0cwo+IC0gMS4uMwo+ICsgMS4u NAo+IG9rIDEgLSBsZW5ndGgKPiBvayAyIC0gZGVjb2RlIGxlbmd0aCBvawo+IG9rIDMgLSBlbmNv ZGUvZGVjb2RlCj4gKyBvayA0IC0gbm8gc3BhY2UgaW4gb3V0IGJ1ZmZlcgo+IG9rIDE3IC0gc3Vi dGVzdHMKPiAtIDEuLjYKPiArIDEuLjcKPiBvayAxIC0gbGVuZ3RoCj4gb2sgMiAtIG5vIFxuIHN5 bWJvbHMKPiBvayAzIC0gbm8gKyBzeW1ib2xzCj4gb2sgNCAtIG5vID0gc3ltYm9scwo+IG9rIDUg LSBkZWNvZGUgbGVuZ3RoIG9rCj4gb2sgNiAtIGVuY29kZS9kZWNvZGUKPiArIG9rIDcgLSBubyBz cGFjZSBpbiBvdXQgYnVmZmVyCj4gb2sgMTggLSBzdWJ0ZXN0cwo+IC0gMS4uNAo+ICsgMS4uNQo+ IG9rIDEgLSBsZW5ndGgKPiBvayAyIC0gbm8gPSBzeW1ib2xzCj4gb2sgMyAtIGRlY29kZSBsZW5n dGggb2sKPiBvayA0IC0gZW5jb2RlL2RlY29kZQo+ICsgb2sgNSAtIG5vIHNwYWNlIGluIG91dCBi dWZmZXIKPiBvayAxOSAtIHN1YnRlc3RzCj4gLSAxLi40Cj4gKyAxLi41Cj4gb2sgMSAtIGxlbmd0 aAo+IG9rIDIgLSBubyBcbiBzeW1ib2xzCj4gb2sgMyAtIGRlY29kZSBsZW5ndGggb2sKPiBvayA0 IC0gZW5jb2RlL2RlY29kZQo+ICsgb2sgNSAtIG5vIHNwYWNlIGluIG91dCBidWZmZXIKPiBvayAy MCAtIHN1YnRlc3RzCj4gLSAxLi4zCj4gKyAxLi40Cj4gb2sgMSAtIGxlbmd0aAo+IG9rIDIgLSBk ZWNvZGUgbGVuZ3RoIG9rCj4gb2sgMyAtIGVuY29kZS9kZWNvZGUKPiArIG9rIDQgLSBubyBzcGFj ZSBpbiBvdXQgYnVmZmVyCj4gb2sgMjEgLSBzdWJ0ZXN0cwo+IC0gMS4uNgo+ICsgMS4uNwo+IG9r IDEgLSBsZW5ndGgKPiBvayAyIC0gbm8gXG4gc3ltYm9scwo+IG9rIDMgLSBubyArIHN5bWJvbHMK PiBvayA0IC0gbm8gPSBzeW1ib2xzCj4gb2sgNSAtIGRlY29kZSBsZW5ndGggb2sKPiBvayA2IC0g ZW5jb2RlL2RlY29kZQo+ICsgb2sgNyAtIG5vIHNwYWNlIGluIG91dCBidWZmZXIKPiBvayAyMiAt IHN1YnRlc3RzCj4gLSAxLi40Cj4gKyAxLi41Cj4gb2sgMSAtIGxlbmd0aAo+IG9rIDIgLSBubyA9 IHN5bWJvbHMKPiBvayAzIC0gZGVjb2RlIGxlbmd0aCBvawo+IG9rIDQgLSBlbmNvZGUvZGVjb2Rl Cj4gKyBvayA1IC0gbm8gc3BhY2UgaW4gb3V0IGJ1ZmZlcgo+IG9rIDIzIC0gc3VidGVzdHMKPiAt IDEuLjQKPiArIDEuLjUKPiBvayAxIC0gbGVuZ3RoCj4gb2sgMiAtIG5vIFxuIHN5bWJvbHMKPiBv ayAzIC0gZGVjb2RlIGxlbmd0aCBvawo+IG9rIDQgLSBlbmNvZGUvZGVjb2RlCj4gKyBvayA1IC0g bm8gc3BhY2UgaW4gb3V0IGJ1ZmZlcgo+IG9rIDI0IC0gc3VidGVzdHMKPiAtIDEuLjMKPiArIDEu LjQKPiBvayAxIC0gbGVuZ3RoCj4gb2sgMiAtIGRlY29kZSBsZW5ndGggb2sKPiBvayAzIC0gZW5j b2RlL2RlY29kZQo+ICsgb2sgNCAtIG5vIHNwYWNlIGluIG91dCBidWZmZXIKPiBvayAyNSAtIHN1 YnRlc3RzCj4gLSAxLi42Cj4gKyAxLi43Cj4gb2sgMSAtIGxlbmd0aAo+IG9rIDIgLSBubyBcbiBz eW1ib2xzCj4gb2sgMyAtIG5vICsgc3ltYm9scwo+IG9rIDQgLSBubyA9IHN5bWJvbHMKPiBvayA1 IC0gZGVjb2RlIGxlbmd0aCBvawo+IG9rIDYgLSBlbmNvZGUvZGVjb2RlCj4gKyBvayA3IC0gbm8g c3BhY2UgaW4gb3V0IGJ1ZmZlcgo+IG9rIDI2IC0gc3VidGVzdHMKPiAtIDEuLjQKPiArIDEuLjUK PiBvayAxIC0gbGVuZ3RoCj4gb2sgMiAtIG5vID0gc3ltYm9scwo+IG9rIDMgLSBkZWNvZGUgbGVu Z3RoIG9rCj4gb2sgNCAtIGVuY29kZS9kZWNvZGUKPiArIG9rIDUgLSBubyBzcGFjZSBpbiBvdXQg YnVmZmVyCj4gb2sgMjcgLSBzdWJ0ZXN0cwo+IC0gMS4uNAo+ICsgMS4uNQo+IG9rIDEgLSBsZW5n dGgKPiBvayAyIC0gbm8gXG4gc3ltYm9scwo+IG9rIDMgLSBkZWNvZGUgbGVuZ3RoIG9rCj4gb2sg NCAtIGVuY29kZS9kZWNvZGUKPiArIG9rIDUgLSBubyBzcGFjZSBpbiBvdXQgYnVmZmVyCj4gb2sg MjggLSBzdWJ0ZXN0cwo+ICoqKiBtYWluOiBkb25lICoqKgo+IGRpZmYgLS1naXQgYS90aGlyZF9w YXJ0eS9iYXNlNjQuYyBiL3RoaXJkX3BhcnR5L2Jhc2U2NC5jCj4gaW5kZXggMzM1MGE5OGZmLi45 MzQ0MmMwNGIgMTAwNjQ0Cj4gLS0tIGEvdGhpcmRfcGFydHkvYmFzZTY0LmMKPiArKysgYi90aGly ZF9wYXJ0eS9iYXNlNjQuYwo+IEBAIC0yNTcsMTAgKzI1NywxMSBAQCBiYXNlNjRfZGVjb2RlX2Js b2NrKGNvbnN0IGNoYXIgKmluX2Jhc2U2NCwgaW50IGluX2xlbiwKPiB7Cj4gY2FzZSBzdGVwX2E6 Cj4gZG8gewo+IC0gaWYgKGluX3BvcyA9PSBpbl9lbmQgfHwgb3V0X3BvcyA+PSBvdXRfZW5kKQo+ ICsgaWYgKGluX3BvcyA+PSBpbl9lbmQpCj4gewo+IHN0YXRlLT5zdGVwID0gc3RlcF9hOwo+IC0g c3RhdGUtPnJlc3VsdCA9IGN1cnJfYnl0ZTsKPiArIC8qIGN1cnJfYnl0ZSBpcyB1c2VsZXNzIG5v dyAqLwo+ICsgLyogc3RhdGUtPnJlc3VsdCA9IGN1cnJfYnl0ZTsgKi8KCkZvciBtdWx0aS1saW5l IGNvbW1lbnQsIHdlIHVzZSB0aGUgZm9sbG93aW5nIGZvcm1hdDoKLyoKwqDCoCogRmlyc3QgbGlu ZQrCoMKgKiBTZWNvbmQgbGluZQrCoMKgKi8KCkFuZCBsZWF2aW5nIGEgY29tbWVudGVkIGNvZGUg aXMgbm90IGJlc3QgcHJhY3RpY2UuCgo+IHJldHVybiBvdXRfcG9zIC0gb3V0X2JpbjsKPiB9Cj4g ZnJhZ21lbnQgPSBiYXNlNjRfZGVjb2RlX3ZhbHVlKCppbl9wb3MrKyk7Cj4gQEAgLTI2OCw3ICsy NjksNyBAQCBiYXNlNjRfZGVjb2RlX2Jsb2NrKGNvbnN0IGNoYXIgKmluX2Jhc2U2NCwgaW50IGlu X2xlbiwKPiBjdXJyX2J5dGUgPSAoZnJhZ21lbnQgJiAweDAzZikgPDwgMjsKPiBjYXNlIHN0ZXBf YjoKPiBkbyB7Cj4gLSBpZiAoaW5fcG9zID09IGluX2VuZCB8fCBvdXRfcG9zID49IG91dF9lbmQp Cj4gKyBpZiAoaW5fcG9zID49IGluX2VuZCkKPiB7Cj4gc3RhdGUtPnN0ZXAgPSBzdGVwX2I7Cj4g c3RhdGUtPnJlc3VsdCA9IGN1cnJfYnl0ZTsKPiBAQCAtMjc2LDE0ICsyNzcsMTkgQEAgYmFzZTY0 X2RlY29kZV9ibG9jayhjb25zdCBjaGFyICppbl9iYXNlNjQsIGludCBpbl9sZW4sCj4gfQo+IGZy YWdtZW50ID0gYmFzZTY0X2RlY29kZV92YWx1ZSgqaW5fcG9zKyspOwo+IH0gd2hpbGUgKGZyYWdt ZW50IDwgMCk7Cj4gKyBpZiAob3V0X3BvcyA+PSBvdXRfZW5kKQo+ICsgewo+ICsgLyogV2UgYXJl IGxvc2luZyBzb21lIGRhdGEgKi8KCkFjY29yZGluZyB0bwpodHRwczovL2dpdGh1Yi5jb20vdGFy YW50b29sL3RhcmFudG9vbC93aWtpL0NvZGUtcmV2aWV3LXByb2NlZHVyZSA6CiJTdGFydCBzZW50 ZW5jZXMgZnJvbSBhIGNhcGl0YWwgbGV0dGVyLCBlbmQgd2l0aCBhIGRvdC4iClRoZSBzYW1lIGZv ciB0aGUgY29tbWVudHMgYmVsbG93LgoKPiArIHN0YXRlLT5zdGVwID0gc3RlcF9iOwo+ICsgc3Rh dGUtPnJlc3VsdCA9IGN1cnJfYnl0ZTsKPiArIHJldHVybiBvdXRfcG9zIC0gb3V0X2JpbjsKPiAr IH0KPiBjdXJyX2J5dGUgfD0gKGZyYWdtZW50ICYgMHgwMzApID4+IDQ7Cj4gKm91dF9wb3MrKyA9 IGN1cnJfYnl0ZTsKPiBjdXJyX2J5dGUgPSAoZnJhZ21lbnQgJiAweDAwZikgPDwgNDsKPiAtIGlm IChvdXRfcG9zIDwgb3V0X2VuZCkKPiAtICpvdXRfcG9zID0gY3Vycl9ieXRlOwo+IGNhc2Ugc3Rl cF9jOgo+IGRvIHsKPiAtIGlmIChpbl9wb3MgPT0gaW5fZW5kIHx8IG91dF9wb3MgPj0gb3V0X2Vu ZCkKPiArIGlmIChpbl9wb3MgPj0gaW5fZW5kKQo+IHsKPiBzdGF0ZS0+c3RlcCA9IHN0ZXBfYzsK PiBzdGF0ZS0+cmVzdWx0ID0gY3Vycl9ieXRlOwo+IEBAIC0yOTEsMTQgKzI5NywxOSBAQCBiYXNl NjRfZGVjb2RlX2Jsb2NrKGNvbnN0IGNoYXIgKmluX2Jhc2U2NCwgaW50IGluX2xlbiwKPiB9Cj4g ZnJhZ21lbnQgPSBiYXNlNjRfZGVjb2RlX3ZhbHVlKCppbl9wb3MrKyk7Cj4gfSB3aGlsZSAoZnJh Z21lbnQgPCAwKTsKPiArIGlmIChvdXRfcG9zID49IG91dF9lbmQpCj4gKyB7Cj4gKyAvKiBXZSBh cmUgbG9zaW5nIHNvbWUgZGF0YSAqLwo+ICsgc3RhdGUtPnN0ZXAgPSBzdGVwX2M7Cj4gKyBzdGF0 ZS0+cmVzdWx0ID0gY3Vycl9ieXRlOwo+ICsgcmV0dXJuIG91dF9wb3MgLSBvdXRfYmluOwo+ICsg fQo+IGN1cnJfYnl0ZSB8PSAoZnJhZ21lbnQgJiAweDAzYykgPj4gMjsKPiAqb3V0X3BvcysrID0g Y3Vycl9ieXRlOwo+IGN1cnJfYnl0ZSA9IChmcmFnbWVudCAmIDB4MDAzKSA8PCA2Owo+IC0gaWYg KG91dF9wb3MgPCBvdXRfZW5kKQo+IC0gKm91dF9wb3MgPSBjdXJyX2J5dGU7Cj4gY2FzZSBzdGVw X2Q6Cj4gZG8gewo+IC0gaWYgKGluX3BvcyA9PSBpbl9lbmQgfHwgb3V0X3BvcyA+PSBvdXRfZW5k KQo+ICsgaWYgKGluX3BvcyA+PSBpbl9lbmQpCj4gewo+IHN0YXRlLT5zdGVwID0gc3RlcF9kOwo+ IHN0YXRlLT5yZXN1bHQgPSBjdXJyX2J5dGU7Cj4gQEAgLTMwNiw2ICszMTcsMTMgQEAgYmFzZTY0 X2RlY29kZV9ibG9jayhjb25zdCBjaGFyICppbl9iYXNlNjQsIGludCBpbl9sZW4sCj4gfQo+IGZy YWdtZW50ID0gYmFzZTY0X2RlY29kZV92YWx1ZSgqaW5fcG9zKyspOwo+IH0gd2hpbGUgKGZyYWdt ZW50IDwgMCk7Cj4gKyBpZiAob3V0X3BvcyA+PSBvdXRfZW5kKQo+ICsgewo+ICsgLyogV2UgYXJl IGxvc2luZyBzb21lIGRhdGEgKi8KPiArIHN0YXRlLT5zdGVwID0gc3RlcF9kOwo+ICsgc3RhdGUt PnJlc3VsdCA9IGN1cnJfYnl0ZTsKPiArIHJldHVybiBvdXRfcG9zIC0gb3V0X2JpbjsKPiArIH0K PiBjdXJyX2J5dGUgfD0gKGZyYWdtZW50ICYgMHgwM2YpOwo+ICpvdXRfcG9zKysgPSBjdXJyX2J5 dGU7Cj4gfQo+CsKg ----ALT--d96840E879039b0FD89e93284b0C77391608819298 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48 ZGl2IGlkPSJzdHlsZV8xNjA4ODE4ODY5MTcwOTE3NDUyMV9CT0RZIj5IaSEgVGhhbmsgeW91IGZv ciB0aGUgcGF0Y2guPGJyPkFGQUlVIHRoZSBzdGF0dXMgb2YgdGhlIHBhdGNoIGlzIGZvbGxvd3M6 PGJyPjxicj4mbmJzcDsmZ3Q7IEJ1dCBJIHNlZSB3ZSBhcmUgbm90IGdvaW5nIGFueXdoZXJlIGhl cmUuIFlvdSBkb24ndCByZWFsbHkgbmVlZCBMR1RNPGJyPiZuYnNwOyZndDsgZnJvbSBtZSBvbiB0 aGlzIHBhdGNoLCBpZiB5b3UgZG9uJ3Qgd2FudCB0byBmaW5pc2ggaXQuIEkgYW0gbm90PGJyPiZu YnNwOyZndDsgc3RyaWN0bHkgYWdhaW5zdCB0aGVzZSBjaGFuZ2VzLCBiZWNhdXNlICpwcm9iYWJs eSogdGhleSBkb24ndCBhZGQgbmV3PGJyPiZuYnNwOyZndDsgYnVncywgYW5kIHNlZW0gdG8gYmUg YSB0aW55IGJpdCBiZXR0ZXIgZm9yIHBlcmYuIEkgb25seSBkb24ndCBsaWtlIGl0PGJyPiZuYnNw OyZndDsgYmVpbmcgbm90IGZpbmlzaGVkLjxicj48YnI+SSB0aGluayB0aGUgY2hhbmdlcyBhcmUg b2ssIGJlY2F1c2UgdGhleSBhcmUgZ29vZCBmb3IgcGVyZiAoYW5kIHdlIGhhdmU8YnI+Y29uZmly bWF0aW9uKSBhbmQgZG9uJ3QgYWRkIGRlZ3JhZGF0aW9uIChvdXIgdGVzdHMgc2hvdWxkIGd1YXJh bnRlZTxicj50aGlzKS48YnI+PGJyPlNlZSBzb21lIGNvbW1lbnRzIGJlbG93Ojxicj48YnI+V2hh dCBhYm91dCBhIGJlbmNobWFyay4gQUZBSUsgQS4gTHlhcHVub3YgcHJvcG9zZSBzYXZpbmcgYWxs IGJlbmNobWFya3M8YnI+dGhhdCB3ZSB1c2VkLiBEaWQgeW91IGhhdmUgYSBjb252ZXJzYXRpb24g d2l0aCBoaW0/PGJyPjxicj5PbiAyMi4xMi4yMDIwIDEzOjQxLCBTZXJnZXkgTmlraWZvcm92IHdy b3RlOjxicj4mZ3Q7IFVubmVjZXNzYXJ5IGNoZWNrcyB3ZXJlIHJlbW92ZWQgZnJvbSBpbnRlcm5h bCBsb29wcy48YnI+Jmd0OyBCZW5jaG1hcmsgc2hvd3MgdGhhdCBwZXJmb3JtYW5jZSBpcyBub3cg fjEuMTkgdGltZXMgaGlnaGVyPGJyPiZndDsgKHJlbGVhc2UgYnVpbGQsIEludGVsIENvcmUgSTct OTcwMEssIG9ubHkgb25lIHRocmVhZCkuPGJyPiZndDsgLS0tPGJyPiZndDs8YnI+Jmd0OyBCcmFu Y2g6IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90YXJhbnRvb2wvdGFyYW50b29sL3RyZWUv dm9pZDIzNC9naC0zMDY5LWZpeC1iYXNlNjQtbWVtb3J5LW92ZXJydW4tdjMiIHRhcmdldD0iX2Js YW5rIj5odHRwczovL2dpdGh1Yi5jb20vdGFyYW50b29sL3RhcmFudG9vbC90cmVlL3ZvaWQyMzQv Z2gtMzA2OS1maXgtYmFzZTY0LW1lbW9yeS1vdmVycnVuLXYzPC9hPjxicj4mZ3Q7PGJyPiZndDsg dGVzdC91bml0L2Jhc2U2NC5jIHwgNyArKystPGJyPiZndDsgdGVzdC91bml0L2Jhc2U2NC5yZXN1 bHQgfCA4NCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLTxicj4mZ3Q7 IHRoaXJkX3BhcnR5L2Jhc2U2NC5jIHwgMzYgKysrKysrKysrKysrKy0tLS0tPGJyPiZndDsgMyBm aWxlcyBjaGFuZ2VkLCA4OSBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSk8YnI+Jmd0Ozxi cj48YnI+SSBsZWZ0IG15IHF1ZXN0aW9ucyBhYm91dCB0aGUgdGVzdCBpbiB0aGUgcmV2aWV3IG9m IHRoZSBwcmV2aW91cyBwYXRjaC48YnI+PGJyPiZndDsgZGlmZiAtLWdpdCBhL3Rlc3QvdW5pdC9i YXNlNjQuYyBiL3Rlc3QvdW5pdC9iYXNlNjQuYzxicj4mZ3Q7IGluZGV4IGFkYTQ5N2FkZi4uNzZk YjdkNzgyIDEwMDY0NDxicj4mZ3Q7IC0tLSBhL3Rlc3QvdW5pdC9iYXNlNjQuYzxicj4mZ3Q7ICsr KyBiL3Rlc3QvdW5pdC9iYXNlNjQuYzxicj4mZ3Q7IEBAIC03LDcgKzcsNyBAQCBzdGF0aWMgdm9p ZDxicj4mZ3Q7IGJhc2U2NF90ZXN0KGNvbnN0IGNoYXIgKnN0ciwgaW50IG9wdGlvbnMsIGNvbnN0 IGNoYXIgKm5vX3N5bWJvbHMsPGJyPiZndDsgaW50IG5vX3N5bWJvbHNfbGVuKTxicj4mZ3Q7IHs8 YnI+Jmd0OyAtIHBsYW4oMyArIG5vX3N5bWJvbHNfbGVuKTs8YnI+Jmd0OyArIHBsYW4oNCArIG5v X3N5bWJvbHNfbGVuKTs8YnI+Jmd0Ozxicj4mZ3Q7IGludCBsZW4gPSBzdHJsZW4oc3RyKTs8YnI+ Jmd0OyBpbnQgYmFzZTY0X2J1ZmxlbiA9IGJhc2U2NF9idWZzaXplKGxlbiArIDEsIG9wdGlvbnMp Ozxicj4mZ3Q7IEBAIC0zNCw2ICszNCwxMSBAQCBiYXNlNjRfdGVzdChjb25zdCBjaGFyICpzdHIs IGludCBvcHRpb25zLCBjb25zdCBjaGFyICpub19zeW1ib2xzLDxicj4mZ3Q7IGZyZWUoYmFzZTY0 X2J1Zik7PGJyPiZndDsgZnJlZShzdHJidWYpOzxicj4mZ3Q7PGJyPiZndDsgKyBjb25zdCBjaGFy ICppbiA9ICJzSUlwSHc9PSI7PGJyPiZndDsgKyBpbnQgaW5fbGVuID0gc3RybGVuKGluKTs8YnI+ Jmd0OyArIHJjID0gYmFzZTY0X2RlY29kZShpbiwgaW5fbGVuLCBOVUxMLCAwKTs8YnI+Jmd0OyAr IGlzKHJjLCAwLCAibm8gc3BhY2UgaW4gb3V0IGJ1ZmZlciIpOzxicj4mZ3Q7ICs8YnI+Jmd0OyBj aGVja19wbGFuKCk7PGJyPiZndDsgfTxicj4mZ3Q7PGJyPiZndDsgZGlmZiAtLWdpdCBhL3Rlc3Qv dW5pdC9iYXNlNjQucmVzdWx0IGIvdGVzdC91bml0L2Jhc2U2NC5yZXN1bHQ8YnI+Jmd0OyBpbmRl eCBjZDFmMmIzZjYuLmQ2MDY3NzJlYSAxMDA2NDQ8YnI+Jmd0OyAtLS0gYS90ZXN0L3VuaXQvYmFz ZTY0LnJlc3VsdDxicj4mZ3Q7ICsrKyBiL3Rlc3QvdW5pdC9iYXNlNjQucmVzdWx0PGJyPiZndDsg QEAgLTEsMTc4ICsxLDIwNiBAQDxicj4mZ3Q7IDEuLjI4PGJyPiZndDsgKioqIG1haW4gKioqPGJy PiZndDsgLSAxLi4zPGJyPiZndDsgKyAxLi40PGJyPiZndDsgb2sgMSAtIGxlbmd0aDxicj4mZ3Q7 IG9rIDIgLSBkZWNvZGUgbGVuZ3RoIG9rPGJyPiZndDsgb2sgMyAtIGVuY29kZS9kZWNvZGU8YnI+ Jmd0OyArIG9rIDQgLSBubyBzcGFjZSBpbiBvdXQgYnVmZmVyPGJyPiZndDsgb2sgMSAtIHN1YnRl c3RzPGJyPiZndDsgLSAxLi42PGJyPiZndDsgKyAxLi43PGJyPiZndDsgb2sgMSAtIGxlbmd0aDxi cj4mZ3Q7IG9rIDIgLSBubyBcbiBzeW1ib2xzPGJyPiZndDsgb2sgMyAtIG5vICsgc3ltYm9sczxi cj4mZ3Q7IG9rIDQgLSBubyA9IHN5bWJvbHM8YnI+Jmd0OyBvayA1IC0gZGVjb2RlIGxlbmd0aCBv azxicj4mZ3Q7IG9rIDYgLSBlbmNvZGUvZGVjb2RlPGJyPiZndDsgKyBvayA3IC0gbm8gc3BhY2Ug aW4gb3V0IGJ1ZmZlcjxicj4mZ3Q7IG9rIDIgLSBzdWJ0ZXN0czxicj4mZ3Q7IC0gMS4uNDxicj4m Z3Q7ICsgMS4uNTxicj4mZ3Q7IG9rIDEgLSBsZW5ndGg8YnI+Jmd0OyBvayAyIC0gbm8gPSBzeW1i b2xzPGJyPiZndDsgb2sgMyAtIGRlY29kZSBsZW5ndGggb2s8YnI+Jmd0OyBvayA0IC0gZW5jb2Rl L2RlY29kZTxicj4mZ3Q7ICsgb2sgNSAtIG5vIHNwYWNlIGluIG91dCBidWZmZXI8YnI+Jmd0OyBv ayAzIC0gc3VidGVzdHM8YnI+Jmd0OyAtIDEuLjQ8YnI+Jmd0OyArIDEuLjU8YnI+Jmd0OyBvayAx IC0gbGVuZ3RoPGJyPiZndDsgb2sgMiAtIG5vIFxuIHN5bWJvbHM8YnI+Jmd0OyBvayAzIC0gZGVj b2RlIGxlbmd0aCBvazxicj4mZ3Q7IG9rIDQgLSBlbmNvZGUvZGVjb2RlPGJyPiZndDsgKyBvayA1 IC0gbm8gc3BhY2UgaW4gb3V0IGJ1ZmZlcjxicj4mZ3Q7IG9rIDQgLSBzdWJ0ZXN0czxicj4mZ3Q7 IC0gMS4uMzxicj4mZ3Q7ICsgMS4uNDxicj4mZ3Q7IG9rIDEgLSBsZW5ndGg8YnI+Jmd0OyBvayAy IC0gZGVjb2RlIGxlbmd0aCBvazxicj4mZ3Q7IG9rIDMgLSBlbmNvZGUvZGVjb2RlPGJyPiZndDsg KyBvayA0IC0gbm8gc3BhY2UgaW4gb3V0IGJ1ZmZlcjxicj4mZ3Q7IG9rIDUgLSBzdWJ0ZXN0czxi cj4mZ3Q7IC0gMS4uNjxicj4mZ3Q7ICsgMS4uNzxicj4mZ3Q7IG9rIDEgLSBsZW5ndGg8YnI+Jmd0 OyBvayAyIC0gbm8gXG4gc3ltYm9sczxicj4mZ3Q7IG9rIDMgLSBubyArIHN5bWJvbHM8YnI+Jmd0 OyBvayA0IC0gbm8gPSBzeW1ib2xzPGJyPiZndDsgb2sgNSAtIGRlY29kZSBsZW5ndGggb2s8YnI+ Jmd0OyBvayA2IC0gZW5jb2RlL2RlY29kZTxicj4mZ3Q7ICsgb2sgNyAtIG5vIHNwYWNlIGluIG91 dCBidWZmZXI8YnI+Jmd0OyBvayA2IC0gc3VidGVzdHM8YnI+Jmd0OyAtIDEuLjQ8YnI+Jmd0OyAr IDEuLjU8YnI+Jmd0OyBvayAxIC0gbGVuZ3RoPGJyPiZndDsgb2sgMiAtIG5vID0gc3ltYm9sczxi cj4mZ3Q7IG9rIDMgLSBkZWNvZGUgbGVuZ3RoIG9rPGJyPiZndDsgb2sgNCAtIGVuY29kZS9kZWNv ZGU8YnI+Jmd0OyArIG9rIDUgLSBubyBzcGFjZSBpbiBvdXQgYnVmZmVyPGJyPiZndDsgb2sgNyAt IHN1YnRlc3RzPGJyPiZndDsgLSAxLi40PGJyPiZndDsgKyAxLi41PGJyPiZndDsgb2sgMSAtIGxl bmd0aDxicj4mZ3Q7IG9rIDIgLSBubyBcbiBzeW1ib2xzPGJyPiZndDsgb2sgMyAtIGRlY29kZSBs ZW5ndGggb2s8YnI+Jmd0OyBvayA0IC0gZW5jb2RlL2RlY29kZTxicj4mZ3Q7ICsgb2sgNSAtIG5v IHNwYWNlIGluIG91dCBidWZmZXI8YnI+Jmd0OyBvayA4IC0gc3VidGVzdHM8YnI+Jmd0OyAtIDEu LjM8YnI+Jmd0OyArIDEuLjQ8YnI+Jmd0OyBvayAxIC0gbGVuZ3RoPGJyPiZndDsgb2sgMiAtIGRl Y29kZSBsZW5ndGggb2s8YnI+Jmd0OyBvayAzIC0gZW5jb2RlL2RlY29kZTxicj4mZ3Q7ICsgb2sg NCAtIG5vIHNwYWNlIGluIG91dCBidWZmZXI8YnI+Jmd0OyBvayA5IC0gc3VidGVzdHM8YnI+Jmd0 OyAtIDEuLjY8YnI+Jmd0OyArIDEuLjc8YnI+Jmd0OyBvayAxIC0gbGVuZ3RoPGJyPiZndDsgb2sg MiAtIG5vIFxuIHN5bWJvbHM8YnI+Jmd0OyBvayAzIC0gbm8gKyBzeW1ib2xzPGJyPiZndDsgb2sg NCAtIG5vID0gc3ltYm9sczxicj4mZ3Q7IG9rIDUgLSBkZWNvZGUgbGVuZ3RoIG9rPGJyPiZndDsg b2sgNiAtIGVuY29kZS9kZWNvZGU8YnI+Jmd0OyArIG9rIDcgLSBubyBzcGFjZSBpbiBvdXQgYnVm ZmVyPGJyPiZndDsgb2sgMTAgLSBzdWJ0ZXN0czxicj4mZ3Q7IC0gMS4uNDxicj4mZ3Q7ICsgMS4u NTxicj4mZ3Q7IG9rIDEgLSBsZW5ndGg8YnI+Jmd0OyBvayAyIC0gbm8gPSBzeW1ib2xzPGJyPiZn dDsgb2sgMyAtIGRlY29kZSBsZW5ndGggb2s8YnI+Jmd0OyBvayA0IC0gZW5jb2RlL2RlY29kZTxi cj4mZ3Q7ICsgb2sgNSAtIG5vIHNwYWNlIGluIG91dCBidWZmZXI8YnI+Jmd0OyBvayAxMSAtIHN1 YnRlc3RzPGJyPiZndDsgLSAxLi40PGJyPiZndDsgKyAxLi41PGJyPiZndDsgb2sgMSAtIGxlbmd0 aDxicj4mZ3Q7IG9rIDIgLSBubyBcbiBzeW1ib2xzPGJyPiZndDsgb2sgMyAtIGRlY29kZSBsZW5n dGggb2s8YnI+Jmd0OyBvayA0IC0gZW5jb2RlL2RlY29kZTxicj4mZ3Q7ICsgb2sgNSAtIG5vIHNw YWNlIGluIG91dCBidWZmZXI8YnI+Jmd0OyBvayAxMiAtIHN1YnRlc3RzPGJyPiZndDsgLSAxLi4z PGJyPiZndDsgKyAxLi40PGJyPiZndDsgb2sgMSAtIGxlbmd0aDxicj4mZ3Q7IG9rIDIgLSBkZWNv ZGUgbGVuZ3RoIG9rPGJyPiZndDsgb2sgMyAtIGVuY29kZS9kZWNvZGU8YnI+Jmd0OyArIG9rIDQg LSBubyBzcGFjZSBpbiBvdXQgYnVmZmVyPGJyPiZndDsgb2sgMTMgLSBzdWJ0ZXN0czxicj4mZ3Q7 IC0gMS4uNjxicj4mZ3Q7ICsgMS4uNzxicj4mZ3Q7IG9rIDEgLSBsZW5ndGg8YnI+Jmd0OyBvayAy IC0gbm8gXG4gc3ltYm9sczxicj4mZ3Q7IG9rIDMgLSBubyArIHN5bWJvbHM8YnI+Jmd0OyBvayA0 IC0gbm8gPSBzeW1ib2xzPGJyPiZndDsgb2sgNSAtIGRlY29kZSBsZW5ndGggb2s8YnI+Jmd0OyBv ayA2IC0gZW5jb2RlL2RlY29kZTxicj4mZ3Q7ICsgb2sgNyAtIG5vIHNwYWNlIGluIG91dCBidWZm ZXI8YnI+Jmd0OyBvayAxNCAtIHN1YnRlc3RzPGJyPiZndDsgLSAxLi40PGJyPiZndDsgKyAxLi41 PGJyPiZndDsgb2sgMSAtIGxlbmd0aDxicj4mZ3Q7IG9rIDIgLSBubyA9IHN5bWJvbHM8YnI+Jmd0 OyBvayAzIC0gZGVjb2RlIGxlbmd0aCBvazxicj4mZ3Q7IG9rIDQgLSBlbmNvZGUvZGVjb2RlPGJy PiZndDsgKyBvayA1IC0gbm8gc3BhY2UgaW4gb3V0IGJ1ZmZlcjxicj4mZ3Q7IG9rIDE1IC0gc3Vi dGVzdHM8YnI+Jmd0OyAtIDEuLjQ8YnI+Jmd0OyArIDEuLjU8YnI+Jmd0OyBvayAxIC0gbGVuZ3Ro PGJyPiZndDsgb2sgMiAtIG5vIFxuIHN5bWJvbHM8YnI+Jmd0OyBvayAzIC0gZGVjb2RlIGxlbmd0 aCBvazxicj4mZ3Q7IG9rIDQgLSBlbmNvZGUvZGVjb2RlPGJyPiZndDsgKyBvayA1IC0gbm8gc3Bh Y2UgaW4gb3V0IGJ1ZmZlcjxicj4mZ3Q7IG9rIDE2IC0gc3VidGVzdHM8YnI+Jmd0OyAtIDEuLjM8 YnI+Jmd0OyArIDEuLjQ8YnI+Jmd0OyBvayAxIC0gbGVuZ3RoPGJyPiZndDsgb2sgMiAtIGRlY29k ZSBsZW5ndGggb2s8YnI+Jmd0OyBvayAzIC0gZW5jb2RlL2RlY29kZTxicj4mZ3Q7ICsgb2sgNCAt IG5vIHNwYWNlIGluIG91dCBidWZmZXI8YnI+Jmd0OyBvayAxNyAtIHN1YnRlc3RzPGJyPiZndDsg LSAxLi42PGJyPiZndDsgKyAxLi43PGJyPiZndDsgb2sgMSAtIGxlbmd0aDxicj4mZ3Q7IG9rIDIg LSBubyBcbiBzeW1ib2xzPGJyPiZndDsgb2sgMyAtIG5vICsgc3ltYm9sczxicj4mZ3Q7IG9rIDQg LSBubyA9IHN5bWJvbHM8YnI+Jmd0OyBvayA1IC0gZGVjb2RlIGxlbmd0aCBvazxicj4mZ3Q7IG9r IDYgLSBlbmNvZGUvZGVjb2RlPGJyPiZndDsgKyBvayA3IC0gbm8gc3BhY2UgaW4gb3V0IGJ1ZmZl cjxicj4mZ3Q7IG9rIDE4IC0gc3VidGVzdHM8YnI+Jmd0OyAtIDEuLjQ8YnI+Jmd0OyArIDEuLjU8 YnI+Jmd0OyBvayAxIC0gbGVuZ3RoPGJyPiZndDsgb2sgMiAtIG5vID0gc3ltYm9sczxicj4mZ3Q7 IG9rIDMgLSBkZWNvZGUgbGVuZ3RoIG9rPGJyPiZndDsgb2sgNCAtIGVuY29kZS9kZWNvZGU8YnI+ Jmd0OyArIG9rIDUgLSBubyBzcGFjZSBpbiBvdXQgYnVmZmVyPGJyPiZndDsgb2sgMTkgLSBzdWJ0 ZXN0czxicj4mZ3Q7IC0gMS4uNDxicj4mZ3Q7ICsgMS4uNTxicj4mZ3Q7IG9rIDEgLSBsZW5ndGg8 YnI+Jmd0OyBvayAyIC0gbm8gXG4gc3ltYm9sczxicj4mZ3Q7IG9rIDMgLSBkZWNvZGUgbGVuZ3Ro IG9rPGJyPiZndDsgb2sgNCAtIGVuY29kZS9kZWNvZGU8YnI+Jmd0OyArIG9rIDUgLSBubyBzcGFj ZSBpbiBvdXQgYnVmZmVyPGJyPiZndDsgb2sgMjAgLSBzdWJ0ZXN0czxicj4mZ3Q7IC0gMS4uMzxi cj4mZ3Q7ICsgMS4uNDxicj4mZ3Q7IG9rIDEgLSBsZW5ndGg8YnI+Jmd0OyBvayAyIC0gZGVjb2Rl IGxlbmd0aCBvazxicj4mZ3Q7IG9rIDMgLSBlbmNvZGUvZGVjb2RlPGJyPiZndDsgKyBvayA0IC0g bm8gc3BhY2UgaW4gb3V0IGJ1ZmZlcjxicj4mZ3Q7IG9rIDIxIC0gc3VidGVzdHM8YnI+Jmd0OyAt IDEuLjY8YnI+Jmd0OyArIDEuLjc8YnI+Jmd0OyBvayAxIC0gbGVuZ3RoPGJyPiZndDsgb2sgMiAt IG5vIFxuIHN5bWJvbHM8YnI+Jmd0OyBvayAzIC0gbm8gKyBzeW1ib2xzPGJyPiZndDsgb2sgNCAt IG5vID0gc3ltYm9sczxicj4mZ3Q7IG9rIDUgLSBkZWNvZGUgbGVuZ3RoIG9rPGJyPiZndDsgb2sg NiAtIGVuY29kZS9kZWNvZGU8YnI+Jmd0OyArIG9rIDcgLSBubyBzcGFjZSBpbiBvdXQgYnVmZmVy PGJyPiZndDsgb2sgMjIgLSBzdWJ0ZXN0czxicj4mZ3Q7IC0gMS4uNDxicj4mZ3Q7ICsgMS4uNTxi cj4mZ3Q7IG9rIDEgLSBsZW5ndGg8YnI+Jmd0OyBvayAyIC0gbm8gPSBzeW1ib2xzPGJyPiZndDsg b2sgMyAtIGRlY29kZSBsZW5ndGggb2s8YnI+Jmd0OyBvayA0IC0gZW5jb2RlL2RlY29kZTxicj4m Z3Q7ICsgb2sgNSAtIG5vIHNwYWNlIGluIG91dCBidWZmZXI8YnI+Jmd0OyBvayAyMyAtIHN1YnRl c3RzPGJyPiZndDsgLSAxLi40PGJyPiZndDsgKyAxLi41PGJyPiZndDsgb2sgMSAtIGxlbmd0aDxi cj4mZ3Q7IG9rIDIgLSBubyBcbiBzeW1ib2xzPGJyPiZndDsgb2sgMyAtIGRlY29kZSBsZW5ndGgg b2s8YnI+Jmd0OyBvayA0IC0gZW5jb2RlL2RlY29kZTxicj4mZ3Q7ICsgb2sgNSAtIG5vIHNwYWNl IGluIG91dCBidWZmZXI8YnI+Jmd0OyBvayAyNCAtIHN1YnRlc3RzPGJyPiZndDsgLSAxLi4zPGJy PiZndDsgKyAxLi40PGJyPiZndDsgb2sgMSAtIGxlbmd0aDxicj4mZ3Q7IG9rIDIgLSBkZWNvZGUg bGVuZ3RoIG9rPGJyPiZndDsgb2sgMyAtIGVuY29kZS9kZWNvZGU8YnI+Jmd0OyArIG9rIDQgLSBu byBzcGFjZSBpbiBvdXQgYnVmZmVyPGJyPiZndDsgb2sgMjUgLSBzdWJ0ZXN0czxicj4mZ3Q7IC0g MS4uNjxicj4mZ3Q7ICsgMS4uNzxicj4mZ3Q7IG9rIDEgLSBsZW5ndGg8YnI+Jmd0OyBvayAyIC0g bm8gXG4gc3ltYm9sczxicj4mZ3Q7IG9rIDMgLSBubyArIHN5bWJvbHM8YnI+Jmd0OyBvayA0IC0g bm8gPSBzeW1ib2xzPGJyPiZndDsgb2sgNSAtIGRlY29kZSBsZW5ndGggb2s8YnI+Jmd0OyBvayA2 IC0gZW5jb2RlL2RlY29kZTxicj4mZ3Q7ICsgb2sgNyAtIG5vIHNwYWNlIGluIG91dCBidWZmZXI8 YnI+Jmd0OyBvayAyNiAtIHN1YnRlc3RzPGJyPiZndDsgLSAxLi40PGJyPiZndDsgKyAxLi41PGJy PiZndDsgb2sgMSAtIGxlbmd0aDxicj4mZ3Q7IG9rIDIgLSBubyA9IHN5bWJvbHM8YnI+Jmd0OyBv ayAzIC0gZGVjb2RlIGxlbmd0aCBvazxicj4mZ3Q7IG9rIDQgLSBlbmNvZGUvZGVjb2RlPGJyPiZn dDsgKyBvayA1IC0gbm8gc3BhY2UgaW4gb3V0IGJ1ZmZlcjxicj4mZ3Q7IG9rIDI3IC0gc3VidGVz dHM8YnI+Jmd0OyAtIDEuLjQ8YnI+Jmd0OyArIDEuLjU8YnI+Jmd0OyBvayAxIC0gbGVuZ3RoPGJy PiZndDsgb2sgMiAtIG5vIFxuIHN5bWJvbHM8YnI+Jmd0OyBvayAzIC0gZGVjb2RlIGxlbmd0aCBv azxicj4mZ3Q7IG9rIDQgLSBlbmNvZGUvZGVjb2RlPGJyPiZndDsgKyBvayA1IC0gbm8gc3BhY2Ug aW4gb3V0IGJ1ZmZlcjxicj4mZ3Q7IG9rIDI4IC0gc3VidGVzdHM8YnI+Jmd0OyAqKiogbWFpbjog ZG9uZSAqKio8YnI+Jmd0OyBkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYmFzZTY0LmMgYi90aGly ZF9wYXJ0eS9iYXNlNjQuYzxicj4mZ3Q7IGluZGV4IDMzNTBhOThmZi4uOTM0NDJjMDRiIDEwMDY0 NDxicj4mZ3Q7IC0tLSBhL3RoaXJkX3BhcnR5L2Jhc2U2NC5jPGJyPiZndDsgKysrIGIvdGhpcmRf cGFydHkvYmFzZTY0LmM8YnI+Jmd0OyBAQCAtMjU3LDEwICsyNTcsMTEgQEAgYmFzZTY0X2RlY29k ZV9ibG9jayhjb25zdCBjaGFyICppbl9iYXNlNjQsIGludCBpbl9sZW4sPGJyPiZndDsgezxicj4m Z3Q7IGNhc2Ugc3RlcF9hOjxicj4mZ3Q7IGRvIHs8YnI+Jmd0OyAtIGlmIChpbl9wb3MgPT0gaW5f ZW5kIHx8IG91dF9wb3MgJmd0Oz0gb3V0X2VuZCk8YnI+Jmd0OyArIGlmIChpbl9wb3MgJmd0Oz0g aW5fZW5kKTxicj4mZ3Q7IHs8YnI+Jmd0OyBzdGF0ZS0mZ3Q7c3RlcCA9IHN0ZXBfYTs8YnI+Jmd0 OyAtIHN0YXRlLSZndDtyZXN1bHQgPSBjdXJyX2J5dGU7PGJyPiZndDsgKyAvKiBjdXJyX2J5dGUg aXMgdXNlbGVzcyBub3cgKi88YnI+Jmd0OyArIC8qIHN0YXRlLSZndDtyZXN1bHQgPSBjdXJyX2J5 dGU7ICovPGJyPjxicj5Gb3IgbXVsdGktbGluZSBjb21tZW50LCB3ZSB1c2UgdGhlIGZvbGxvd2lu ZyBmb3JtYXQ6PGJyPi8qPGJyPiZuYnNwOyZuYnNwOyogRmlyc3QgbGluZTxicj4mbmJzcDsmbmJz cDsqIFNlY29uZCBsaW5lPGJyPiZuYnNwOyZuYnNwOyovPGJyPjxicj5BbmQgbGVhdmluZyBhIGNv bW1lbnRlZCBjb2RlIGlzIG5vdCBiZXN0IHByYWN0aWNlLjxicj48YnI+Jmd0OyByZXR1cm4gb3V0 X3BvcyAtIG91dF9iaW47PGJyPiZndDsgfTxicj4mZ3Q7IGZyYWdtZW50ID0gYmFzZTY0X2RlY29k ZV92YWx1ZSgqaW5fcG9zKyspOzxicj4mZ3Q7IEBAIC0yNjgsNyArMjY5LDcgQEAgYmFzZTY0X2Rl Y29kZV9ibG9jayhjb25zdCBjaGFyICppbl9iYXNlNjQsIGludCBpbl9sZW4sPGJyPiZndDsgY3Vy cl9ieXRlID0gKGZyYWdtZW50ICZhbXA7IDB4MDNmKSAmbHQ7Jmx0OyAyOzxicj4mZ3Q7IGNhc2Ug c3RlcF9iOjxicj4mZ3Q7IGRvIHs8YnI+Jmd0OyAtIGlmIChpbl9wb3MgPT0gaW5fZW5kIHx8IG91 dF9wb3MgJmd0Oz0gb3V0X2VuZCk8YnI+Jmd0OyArIGlmIChpbl9wb3MgJmd0Oz0gaW5fZW5kKTxi cj4mZ3Q7IHs8YnI+Jmd0OyBzdGF0ZS0mZ3Q7c3RlcCA9IHN0ZXBfYjs8YnI+Jmd0OyBzdGF0ZS0m Z3Q7cmVzdWx0ID0gY3Vycl9ieXRlOzxicj4mZ3Q7IEBAIC0yNzYsMTQgKzI3NywxOSBAQCBiYXNl NjRfZGVjb2RlX2Jsb2NrKGNvbnN0IGNoYXIgKmluX2Jhc2U2NCwgaW50IGluX2xlbiw8YnI+Jmd0 OyB9PGJyPiZndDsgZnJhZ21lbnQgPSBiYXNlNjRfZGVjb2RlX3ZhbHVlKCppbl9wb3MrKyk7PGJy PiZndDsgfSB3aGlsZSAoZnJhZ21lbnQgJmx0OyAwKTs8YnI+Jmd0OyArIGlmIChvdXRfcG9zICZn dDs9IG91dF9lbmQpPGJyPiZndDsgKyB7PGJyPiZndDsgKyAvKiBXZSBhcmUgbG9zaW5nIHNvbWUg ZGF0YSAqLzxicj48YnI+QWNjb3JkaW5nIHRvPGJyPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNv bS90YXJhbnRvb2wvdGFyYW50b29sL3dpa2kvQ29kZS1yZXZpZXctcHJvY2VkdXJlIiB0YXJnZXQ9 Il9ibGFuayI+aHR0cHM6Ly9naXRodWIuY29tL3RhcmFudG9vbC90YXJhbnRvb2wvd2lraS9Db2Rl LXJldmlldy1wcm9jZWR1cmU8L2E+IDo8YnI+IlN0YXJ0IHNlbnRlbmNlcyBmcm9tIGEgY2FwaXRh bCBsZXR0ZXIsIGVuZCB3aXRoIGEgZG90LiI8YnI+VGhlIHNhbWUgZm9yIHRoZSBjb21tZW50cyBi ZWxsb3cuPGJyPjxicj4mZ3Q7ICsgc3RhdGUtJmd0O3N0ZXAgPSBzdGVwX2I7PGJyPiZndDsgKyBz dGF0ZS0mZ3Q7cmVzdWx0ID0gY3Vycl9ieXRlOzxicj4mZ3Q7ICsgcmV0dXJuIG91dF9wb3MgLSBv dXRfYmluOzxicj4mZ3Q7ICsgfTxicj4mZ3Q7IGN1cnJfYnl0ZSB8PSAoZnJhZ21lbnQgJmFtcDsg MHgwMzApICZndDsmZ3Q7IDQ7PGJyPiZndDsgKm91dF9wb3MrKyA9IGN1cnJfYnl0ZTs8YnI+Jmd0 OyBjdXJyX2J5dGUgPSAoZnJhZ21lbnQgJmFtcDsgMHgwMGYpICZsdDsmbHQ7IDQ7PGJyPiZndDsg LSBpZiAob3V0X3BvcyAmbHQ7IG91dF9lbmQpPGJyPiZndDsgLSAqb3V0X3BvcyA9IGN1cnJfYnl0 ZTs8YnI+Jmd0OyBjYXNlIHN0ZXBfYzo8YnI+Jmd0OyBkbyB7PGJyPiZndDsgLSBpZiAoaW5fcG9z ID09IGluX2VuZCB8fCBvdXRfcG9zICZndDs9IG91dF9lbmQpPGJyPiZndDsgKyBpZiAoaW5fcG9z ICZndDs9IGluX2VuZCk8YnI+Jmd0OyB7PGJyPiZndDsgc3RhdGUtJmd0O3N0ZXAgPSBzdGVwX2M7 PGJyPiZndDsgc3RhdGUtJmd0O3Jlc3VsdCA9IGN1cnJfYnl0ZTs8YnI+Jmd0OyBAQCAtMjkxLDE0 ICsyOTcsMTkgQEAgYmFzZTY0X2RlY29kZV9ibG9jayhjb25zdCBjaGFyICppbl9iYXNlNjQsIGlu dCBpbl9sZW4sPGJyPiZndDsgfTxicj4mZ3Q7IGZyYWdtZW50ID0gYmFzZTY0X2RlY29kZV92YWx1 ZSgqaW5fcG9zKyspOzxicj4mZ3Q7IH0gd2hpbGUgKGZyYWdtZW50ICZsdDsgMCk7PGJyPiZndDsg KyBpZiAob3V0X3BvcyAmZ3Q7PSBvdXRfZW5kKTxicj4mZ3Q7ICsgezxicj4mZ3Q7ICsgLyogV2Ug YXJlIGxvc2luZyBzb21lIGRhdGEgKi88YnI+Jmd0OyArIHN0YXRlLSZndDtzdGVwID0gc3RlcF9j Ozxicj4mZ3Q7ICsgc3RhdGUtJmd0O3Jlc3VsdCA9IGN1cnJfYnl0ZTs8YnI+Jmd0OyArIHJldHVy biBvdXRfcG9zIC0gb3V0X2Jpbjs8YnI+Jmd0OyArIH08YnI+Jmd0OyBjdXJyX2J5dGUgfD0gKGZy YWdtZW50ICZhbXA7IDB4MDNjKSAmZ3Q7Jmd0OyAyOzxicj4mZ3Q7ICpvdXRfcG9zKysgPSBjdXJy X2J5dGU7PGJyPiZndDsgY3Vycl9ieXRlID0gKGZyYWdtZW50ICZhbXA7IDB4MDAzKSAmbHQ7Jmx0 OyA2Ozxicj4mZ3Q7IC0gaWYgKG91dF9wb3MgJmx0OyBvdXRfZW5kKTxicj4mZ3Q7IC0gKm91dF9w b3MgPSBjdXJyX2J5dGU7PGJyPiZndDsgY2FzZSBzdGVwX2Q6PGJyPiZndDsgZG8gezxicj4mZ3Q7 IC0gaWYgKGluX3BvcyA9PSBpbl9lbmQgfHwgb3V0X3BvcyAmZ3Q7PSBvdXRfZW5kKTxicj4mZ3Q7 ICsgaWYgKGluX3BvcyAmZ3Q7PSBpbl9lbmQpPGJyPiZndDsgezxicj4mZ3Q7IHN0YXRlLSZndDtz dGVwID0gc3RlcF9kOzxicj4mZ3Q7IHN0YXRlLSZndDtyZXN1bHQgPSBjdXJyX2J5dGU7PGJyPiZn dDsgQEAgLTMwNiw2ICszMTcsMTMgQEAgYmFzZTY0X2RlY29kZV9ibG9jayhjb25zdCBjaGFyICpp bl9iYXNlNjQsIGludCBpbl9sZW4sPGJyPiZndDsgfTxicj4mZ3Q7IGZyYWdtZW50ID0gYmFzZTY0 X2RlY29kZV92YWx1ZSgqaW5fcG9zKyspOzxicj4mZ3Q7IH0gd2hpbGUgKGZyYWdtZW50ICZsdDsg MCk7PGJyPiZndDsgKyBpZiAob3V0X3BvcyAmZ3Q7PSBvdXRfZW5kKTxicj4mZ3Q7ICsgezxicj4m Z3Q7ICsgLyogV2UgYXJlIGxvc2luZyBzb21lIGRhdGEgKi88YnI+Jmd0OyArIHN0YXRlLSZndDtz dGVwID0gc3RlcF9kOzxicj4mZ3Q7ICsgc3RhdGUtJmd0O3Jlc3VsdCA9IGN1cnJfYnl0ZTs8YnI+ Jmd0OyArIHJldHVybiBvdXRfcG9zIC0gb3V0X2Jpbjs8YnI+Jmd0OyArIH08YnI+Jmd0OyBjdXJy X2J5dGUgfD0gKGZyYWdtZW50ICZhbXA7IDB4MDNmKTs8YnI+Jmd0OyAqb3V0X3BvcysrID0gY3Vy cl9ieXRlOzxicj4mZ3Q7IH08YnI+Jmd0OzwvZGl2PjwvZGl2PjwvZGl2PjxkaXY+Jm5ic3A7PC9k aXY+PC9CT0RZPjwvSFRNTD4K ----ALT--d96840E879039b0FD89e93284b0C77391608819298--