From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from [87.239.111.99] (localhost [127.0.0.1]) by dev.tarantool.org (Postfix) with ESMTP id B051E4405B7; Fri, 19 May 2023 16:00:33 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org B051E4405B7 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1684501233; bh=nY+0J/kCCinysnXr9RJaWPo9MOr2pJh7uEc/ATFBSQ4=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=JCjFZoEYrNXWcyWH0AFLyNGyBdApL6gJBSqGNDIOjO+GhU39zPapp4WluafgcvTLF xWopS2mR7/T1HiAaxCfgLw6ErCnrTL/Bs+bfiaMFEppaKh+6cXoif7gmhzrqddGynY DA8PboNMrHGmcvl3628zjU4ASGP8r3cUMtZElkQs= Received: from f310.i.mail.ru (f310.i.mail.ru [45.84.128.123]) (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 DB4FA4405A1 for ; Fri, 19 May 2023 16:00:32 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org DB4FA4405A1 Received: by f310.i.mail.ru with local (envelope-from ) id 1pzziX-0003to-J9; Fri, 19 May 2023 16:00:22 +0300 Received: by e.mail.ru with HTTP; Fri, 19 May 2023 16:00:21 +0300 To: =?UTF-8?B?U2VyZ2V5IEthcGx1bg==?= MIME-Version: 1.0 X-Mailer: Mail.Ru Mailer 1.0 X-SenderField-ReMsg: 16844429450089173137 X-SenderField-Remind: 0 Date: Fri, 19 May 2023 16:00:21 +0300 X-Priority: 3 (Normal) Message-ID: <1684501221.951685952@f310.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--b53C706226E235213a2eBdF8f2A6eDb51684501221" In-Reply-To: <14b188edc970d9e8933c392a2fabd5ad412653e1.1684442182.git.skaplun@tarantool.org> References: <14b188edc970d9e8933c392a2fabd5ad412653e1.1684442182.git.skaplun@tarantool.org> X-7564579A: B8F34718100C35BD X-77F55803: 119C1F4DF6A9251C86B22F0DBD26B6BB8B6FD158511C4A2619CD30E7FDD98D418FD872164937FA4C2BABD1E147DCEC738773E4409EBF6EC660A2CD401D79DDC915A4696EAA0C5BA9 X-C1DE0DAB: 0D63561A33F958A5191E33B548A7CD587BBBD683986BFE7EDB677D9C01209365F87CCE6106E1FC07E67D4AC08A07B9B06A1CB4668A9CA5FACB5012B2E24CD356 X-C8649E89: 1C3962B70DF3F0AD5177F0B940C8B66ECE892A7B2722663E91682638B966EB3F662256BEEFA9527F05738DB991D320FDE64C08163558DD6AF6AB48513DFBF4DB4AD729E1621D083784D4EEF39D2D196A37FD76D11AF80A0D2527E076A2428E466958F79755F617CCEA455F16B58544A2F7A5749D7A90E508 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5+wYjsrrSY/u8Y3PrTqANeitKFiSd6Yd7yPpbiiZ/d5BsxIjK0jGQgCHUM3Ry2Lt2G3MDkMauH3h0dBdQGj+BB/iPzQYh7XS329fgu+/vnDhu5YD317UK1V2c4G5/Dyt8g== X-Mailru-MI: 800 X-Mailru-Sender: 11C2EC085EDE56FA38FD4C59F7EFE4079E1E299F92D614D0BB77FCC1D7B1CB40AB94A9D3FDA6EA5D06CD02445D2D9C8FA2BFD6D8330F0C2D563E610FBBDBB4C842051EA7CBBFB509093DA5C00B83CE8412EB40C6FA10D71EFD657A8799238ED55FEEDEB644C299C0ED14614B50AE0675 X-Mras: OK Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH_v2_luajit_5/6=5D_test=3A_?= =?utf-8?q?rewrite_misclib-sysprof-capi_test_in_C?= X-BeenThere: tarantool-patches@dev.tarantool.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Maxim Kokryashkin via Tarantool-patches Reply-To: =?UTF-8?B?TWF4aW0gS29rcnlhc2hraW4=?= Cc: tarantool-patches@dev.tarantool.org Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" ----ALT--b53C706226E235213a2eBdF8f2A6eDb51684501221 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CkhpLCBTZXJnZXkhClRoYW5rcyBmb3IgdGhlIHBhdGNoIQpMR1RNLCBleGNlcHQgZm9yIHR3byBx dWVzdGlvbnMgYmVsb3cuCsKgCj7CoAo+PlRoaXMgcGF0Y2ggcmV3cml0ZXMgdGhlIGFmb3JlbWVu dGlvbmVkIHRlc3Qgd2l0aCB0aGUgdXNhZ2UgbGlidGVzdAo+PnJlY2VudGx5IGludHJvZHVjZWQu IFRoZSBhcHByb2FjaCBpcyBzaW1pbGFyIHRvIHRoZSBwcmV2aW91cyBwYXRjaC4KPj5gY19wYXls b2FkKClgIGZ1bmN0aW9uIHRvIHByb2ZpbGUgaXMgbm93IHNldCB1cCBnbG9iYWxseSBvbiBzY3Jp cHQKPj5sb2FkaW5nLiBUaGUgcGF5bG9hZCBmb3IgZW5hYmxlZCBhbmQgZGlzYWJsZWQgSklUIGlz IHRoZSBzYW1lLiBBcyBmYXIgYXMKPj5mb3Igc3lzcHJvZiB0ZXN0aW5nIGlzIG5lY2Vzc2FyeSB0 byByZXBsYWNlIGJhY2t0cmFjZSB3aXRoIGxpYnVud2luZAo+PmZpcnN0LCB0aGUgcGF5bG9hZCB0 ZXN0cyBhcmUgbWFya2VkIHdpdGggYHRvZG8oKWAuCj4+Cj4+TmV2ZXJ0aGVsZXNzLCBnbGliYyBg YXNzZXJ0KClgIHN0aWxsIG5lY2Vzc2FyeSB0byBjaGVjayB0aGUgY29ycmVjdG5lc3MKPj5vZiB0 aGUgcHJvZmlsZSB3cml0ZXIsIHNvIGl0IGlzIHN0aWxsIHVzZWQgdGhlcmUuCj4+Cj4+UmVsYXRl cyB0byB0YXJhbnRvb2wvdGFyYW50b29sIzc4MQo+PlBhcnQgb2YgdGFyYW50b29sL3RhcmFudG9v bCM3OTAwCj4+LS0tCj4+wqAuLi4vbWlzY2xpYi1zeXNwcm9mLWNhcGktc2NyaXB0Lmx1YSB8IDM1 ICsrCj4+wqAuLi4vbWlzY2xpYi1zeXNwcm9mLWNhcGkudGVzdC5jIHwgMzI1ICsrKysrKysrKysr KysrKysrKwo+PsKgdGVzdC90YXJhbnRvb2wtdGVzdHMvQ01ha2VMaXN0cy50eHQgfCAxIC0KPj7C oC4uLi9taXNjbGliLXN5c3Byb2YtY2FwaS50ZXN0Lmx1YSB8IDU0IC0tLQo+PsKgLi4uL21pc2Ns aWItc3lzcHJvZi1jYXBpL0NNYWtlTGlzdHMudHh0IHwgMSAtCj4+wqAuLi4vbWlzY2xpYi1zeXNw cm9mLWNhcGkvdGVzdHN5c3Byb2YuYyB8IDI2MCAtLS0tLS0tLS0tLS0tLQo+PsKgNiBmaWxlcyBj aGFuZ2VkLCAzNjAgaW5zZXJ0aW9ucygrKSwgMzE2IGRlbGV0aW9ucygtKQo+PsKgY3JlYXRlIG1v ZGUgMTAwNjQ0IHRlc3QvdGFyYW50b29sLWMtdGVzdHMvbWlzY2xpYi1zeXNwcm9mLWNhcGktc2Ny aXB0Lmx1YQo+PsKgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3QvdGFyYW50b29sLWMtdGVzdHMvbWlz Y2xpYi1zeXNwcm9mLWNhcGkudGVzdC5jCj4+wqBkZWxldGUgbW9kZSAxMDA2NDQgdGVzdC90YXJh bnRvb2wtdGVzdHMvbWlzY2xpYi1zeXNwcm9mLWNhcGkudGVzdC5sdWEKPj7CoGRlbGV0ZSBtb2Rl IDEwMDY0NCB0ZXN0L3RhcmFudG9vbC10ZXN0cy9taXNjbGliLXN5c3Byb2YtY2FwaS9DTWFrZUxp c3RzLnR4dAo+PsKgZGVsZXRlIG1vZGUgMTAwNjQ0IHRlc3QvdGFyYW50b29sLXRlc3RzL21pc2Ns aWItc3lzcHJvZi1jYXBpL3Rlc3RzeXNwcm9mLmMKPj4KPj5kaWZmIC0tZ2l0IGEvdGVzdC90YXJh bnRvb2wtYy10ZXN0cy9taXNjbGliLXN5c3Byb2YtY2FwaS1zY3JpcHQubHVhIGIvdGVzdC90YXJh bnRvb2wtYy10ZXN0cy9taXNjbGliLXN5c3Byb2YtY2FwaS1zY3JpcHQubHVhCj4+bmV3IGZpbGUg bW9kZSAxMDA2NDQKPj5pbmRleCAwMDAwMDAwMC4uZGQ4Mzg3ZGIKPj4tLS0gL2Rldi9udWxsCj4+ KysrIGIvdGVzdC90YXJhbnRvb2wtYy10ZXN0cy9taXNjbGliLXN5c3Byb2YtY2FwaS1zY3JpcHQu bHVhCj4+PHNuaXBwZWQ+Cj4+wqAKPj5kaWZmIC0tZ2l0IGEvdGVzdC90YXJhbnRvb2wtYy10ZXN0 cy9taXNjbGliLXN5c3Byb2YtY2FwaS50ZXN0LmMgYi90ZXN0L3RhcmFudG9vbC1jLXRlc3RzL21p c2NsaWItc3lzcHJvZi1jYXBpLnRlc3QuY25ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+aW5kZXggMDAw MDAwMDAuLmY3NWY4MmNkCj4+LS0tIC9kZXYvbnVsbAo+PisrKyBiL3Rlc3QvdGFyYW50b29sLWMt dGVzdHMvbWlzY2xpYi1zeXNwcm9mLWNhcGkudGVzdC5jCj4+QEAgLTAsMCArMSwzMjUgQEAKPj4r I2luY2x1ZGUgImxhdXhsaWIuaCIKPj4rI2luY2x1ZGUgImxtaXNjbGliLmgiCj4+KyNpbmNsdWRl ICJsdWEuaCIKPj4rI2luY2x1ZGUgImx1YWppdC5oIgo+PisKPj4rI2luY2x1ZGUgInRlc3QuaCIK Pj4rI2luY2x1ZGUgInV0aWxzLmgiCj4+Kwo+PisjaW5jbHVkZSA8ZXJybm8uaD4KPj4rI2luY2x1 ZGUgPGZjbnRsLmg+Cj4+KyNpbmNsdWRlIDxzdGRsaWIuaD4KPj4rI2luY2x1ZGUgPHVuaXN0ZC5o Pgo+PisKPj4rLyogWFhYOiBTdGlsbCBuZWVkIG5vcm1hbCBhc3NlcnQgaW5zaWRlIHdyaXRlciBm dW5jdGlvbnMuICovCj4+KyN1bmRlZiBOREVCVUcKPj4rI2luY2x1ZGUgPGFzc2VydC5oPgo+PisK Pj4rLyogTmVlZCBmb3Igc2tpcGNvbmQgZm9yIE9TIGFuZCBBUkNILiAqLwo+PisjaW5jbHVkZSAi bGpfYXJjaC5oIgo+PisKPj4rI2RlZmluZSBVTlVTRUQoeCkgKCh2b2lkKSh4KSkKPj4rCj4+Ky8q IC0tLSB1dGlscyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSAqLwo+PisKPj4rI2RlZmluZSBTWVNQUk9GX0lOVEVSVkFMX0RFRkFVTFQgMTAwCj4+Kwo+ PisvKgo+PisgKiBZZXAsIDhNYi4gVHVuZWQgaW4gb3JkZXIgbm90IHRvIGJvdGhlciB0aGUgcGxh dGZvcm0gd2l0aCB0b28KPj4rICogb2Z0ZW4gZmx1c2hlcy4KPj4rICovCj4+KyNkZWZpbmUgU1RS RUFNX0JVRkZFUl9TSVpFICg4ICogMTAyNCAqIDEwMjQpCj4+Kwo+PisKPj4rLyogLS0tIEMgUGF5 bG9hZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCj4+ Kwo+PitzdGF0aWMgZG91YmxlIGZpYihkb3VibGUgbikKPj4rewo+PisgaWYgKG4gPD0gMSkKPj4r IHJldHVybiBuOwo+PisgcmV0dXJuIGZpYihuIC0gMSkgKyBmaWIobiAtIDIpOwo+Pit9Cj4+Kwo+ PitzdGF0aWMgaW50IGNfcGF5bG9hZChsdWFfU3RhdGUgKkwpCj4+K3sKPj4rIGZpYihsdWFMX2No ZWNrbnVtYmVyKEwsIDEpKTsKPj4rIGx1YV9wdXNoYm9vbGVhbihMLCAxKTsKPj4rIHJldHVybiAx Owo+Pit9Cj4+Ky8qIC0tLSBzeXNwcm9mIEMgQVBJIHRlc3RzIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSAqLwo+PisKPj4rc3RhdGljIGludCBiYXNlKHZvaWQgKnRlc3Rfc3Rh dGUpCj4+K3sKPj4rIFVOVVNFRCh0ZXN0X3N0YXRlKTsKPj4rIHN0cnVjdCBsdWFtX1N5c3Byb2Zf T3B0aW9ucyBvcHQgPSB7fTsKPj4rIHN0cnVjdCBsdWFtX1N5c3Byb2ZfQ291bnRlcnMgY250ID0g e307Cj4+Kwo+PisgKHZvaWQpb3B0LmludGVydmFsOwo+PisgKHZvaWQpb3B0Lm1vZGU7Cj4+KyAo dm9pZClvcHQuY3R4Owo+PisgKHZvaWQpb3B0LmJ1ZjsKPj4rICh2b2lkKW9wdC5sZW47Cj4+Kwo+ PisgbHVhTV9zeXNwcm9mX3JlcG9ydCgmY250KTsKPj4rCj4+KyAodm9pZCljbnQuc2FtcGxlczsK Pj4rICh2b2lkKWNudC52bXN0X2ludGVycDsKPj4rICh2b2lkKWNudC52bXN0X2xmdW5jOwo+Pisg KHZvaWQpY250LnZtc3RfZmZ1bmM7Cj4+KyAodm9pZCljbnQudm1zdF9jZnVuYzsKPj4rICh2b2lk KWNudC52bXN0X2djOwo+PisgKHZvaWQpY250LnZtc3RfZXhpdDsKPj4rICh2b2lkKWNudC52bXN0 X3JlY29yZDsKPj4rICh2b2lkKWNudC52bXN0X29wdDsKPj4rICh2b2lkKWNudC52bXN0X2FzbTsK Pj4rICh2b2lkKWNudC52bXN0X3RyYWNlOwo+PisKPj4rIHJldHVybiBURVNUX0VYSVRfU1VDQ0VT UzsKPj4rfQo+PisKPj4rc3RhdGljIGludCB2YWxpZGF0aW9uKHZvaWQgKnRlc3Rfc3RhdGUpCj4+ K3sKPj4rIGx1YV9TdGF0ZSAqTCA9IHRlc3Rfc3RhdGU7Cj4+KyBzdHJ1Y3QgbHVhbV9TeXNwcm9m X09wdGlvbnMgb3B0ID0ge307Cj4+KyBpbnQgc3RhdHVzID0gUFJPRklMRV9TVUNDRVNTOwo+PisK Pj4rIC8qIFVua25vd24gbW9kZS4gKi8KPj4rIG9wdC5tb2RlID0gMHg0MDsKPj4rIHN0YXR1cyA9 IGx1YU1fc3lzcHJvZl9zdGFydChMLCAmb3B0KTsKPj4rIGFzc2VydF90cnVlKHN0YXR1cyA9PSBQ Uk9GSUxFX0VSUlVTRSk7Cj4+Kwo+PisgLyogQnVmZmVyIG5vdCBjb25maWd1cmVkLiAqLwo+Pisg b3B0Lm1vZGUgPSBMVUFNX1NZU1BST0ZfQ0FMTEdSQVBIOwo+Pisgb3B0LmJ1ZiA9IE5VTEw7Cj4+ KyBzdGF0dXMgPSBsdWFNX3N5c3Byb2Zfc3RhcnQoTCwgJm9wdCk7Cj4+KyBhc3NlcnRfdHJ1ZShz dGF0dXMgPT0gUFJPRklMRV9FUlJVU0UpOwo+PisKPj4rIC8qIEJhZCBpbnRlcnZhbC4gKi8KPj4r IG9wdC5tb2RlID0gTFVBTV9TWVNQUk9GX0RFRkFVTFQ7Cj4+KyBvcHQuaW50ZXJ2YWwgPSAwOwo+ Pisgc3RhdHVzID0gbHVhTV9zeXNwcm9mX3N0YXJ0KEwsICZvcHQpOwo+PisgYXNzZXJ0X3RydWUo c3RhdHVzID09IFBST0ZJTEVfRVJSVVNFKTsKPj4rCj4+KyAvKiBDaGVjayBpZiBwcm9maWxpbmcg c3RhcnRlZC4gKi8KPj4rIG9wdC5tb2RlID0gTFVBTV9TWVNQUk9GX0RFRkFVTFQ7Cj4+KyBvcHQu aW50ZXJ2YWwgPSBTWVNQUk9GX0lOVEVSVkFMX0RFRkFVTFQ7Cj4+KyBzdGF0dXMgPSBsdWFNX3N5 c3Byb2Zfc3RhcnQoTCwgJm9wdCk7Cj4+KyBhc3NlcnRfdHJ1ZShzdGF0dXMgPT0gUFJPRklMRV9T VUNDRVNTKTsKPj4rCj4+KyAvKiBBbHJlYWR5IHJ1bm5pbmcuICovCj4+KyBzdGF0dXMgPSBsdWFN X3N5c3Byb2Zfc3RhcnQoTCwgJm9wdCk7Cj4+KyBhc3NlcnRfdHJ1ZShzdGF0dXMgPT0gUFJPRklM RV9FUlJSVU4pOwo+PisKPj4rIC8qIFByb2ZpbGVyIHN0b3BwaW5nLiAqLwo+Pisgc3RhdHVzID0g bHVhTV9zeXNwcm9mX3N0b3AoTCk7Cj4+KyBhc3NlcnRfdHJ1ZShzdGF0dXMgPT0gUFJPRklMRV9T VUNDRVNTKTsKPj4rCj4+KyAvKiBTdG9wcGluZyBwcm9maWxlciB3aGljaCBpcyBub3QgcnVubmlu Zy4gKi8KPj4rIHN0YXR1cyA9IGx1YU1fc3lzcHJvZl9zdG9wKEwpOwo+PisgYXNzZXJ0X3RydWUo c3RhdHVzID09IFBST0ZJTEVfRVJSUlVOKTsKPj4rCj4+KyByZXR1cm4gVEVTVF9FWElUX1NVQ0NF U1M7Cj4+K30KPj4rCj4+Ky8qCj4+KyAqIEZJWE1FOiBUaGUgZm9sbG93aW5nIHR3byB0ZXN0cyBh cmUgZGlzYWJsZWQgYmVjYXVzZSBzb21ldGltZXMKPj4rICogYGJhY2t0cmFjZWAgZHluYW1pY2Fs bHkgbG9hZHMgYSBwbGF0Zm9ybS1zcGVjaWZpYyB1bndpbmRlciwKPj4rICogd2hpY2ggaXMgbm90 IHNpZ25hbC1zYWZlLgo+PisgKi8KPj4rCj4+KyNpZiAwCj4+Ky8qCj4+KyAqIFN0cnVjdHVyZSBn aXZlbiBhcyBjdHggdG8gc3lzcHJvZiB3cml0ZXIgYW5kIG9uX3N0b3AgY2FsbGJhY2suCj4+KyAq Lwo+PitzdHJ1Y3Qgc3lzcHJvZl9jdHggewo+PisgLyogT3V0cHV0IGZpbGUgZGVzY3JpcHRvciBm b3IgZGF0YS4gKi8KPj4rIGludCBmZDsKPj4rIC8qIEJ1ZmZlciBmb3IgZGF0YS4gKi8KPj4rIHVp bnQ4X3QgYnVmW1NUUkVBTV9CVUZGRVJfU0laRV07Cj4+K307Cj4+Kwo+PisvKgo+PisgKiBEZWZh dWx0IGJ1ZmZlciB3cml0ZXIgZnVuY3Rpb24uCj4+KyAqIEp1c3QgY2FsbCBmd3JpdGUgdG8gdGhl IGNvcnJlc3BvbmRpbmcgRklMRS4KPj4rICovCj4+K3N0YXRpYyBzaXplX3QgYnVmZmVyX3dyaXRl cl9kZWZhdWx0KGNvbnN0IHZvaWQgKipidWZfYWRkciwgc2l6ZV90IGxlbiwKPj4rIHZvaWQgKm9w dCkKPj4rewo+Pisgc3RydWN0IHN5c3Byb2ZfY3R4ICpjdHggPSBvcHQ7Cj4+KyBpbnQgZmQgPSBj dHgtPmZkOwo+PisgY29uc3Qgdm9pZCAqIGNvbnN0IGJ1Zl9zdGFydCA9ICpidWZfYWRkcjsKPj4r IGNvbnN0IHZvaWQgKmRhdGEgPSAqYnVmX2FkZHI7Cj4+KyBzaXplX3Qgd3JpdGVfdG90YWwgPSAw Owo+PisKPj4rIGFzc2VydChsZW4gPD0gU1RSRUFNX0JVRkZFUl9TSVpFKTsKPj4rCj4+KyBmb3Ig KDs7KSB7Cj4+KyBjb25zdCBzaXplX3Qgd3JpdHRlbiA9IHdyaXRlKGZkLCBkYXRhLCBsZW4gLSB3 cml0ZV90b3RhbCk7Cj4+Kwo+PisgaWYgKHdyaXR0ZW4gPT0gMCkgewo+PisgLyogUmUtdHJpZXMg d3JpdGUgaW4gY2FzZSBvZiBFSU5UUi4gKi8KPj4rIGlmIChlcnJubyAhPSBFSU5UUikgewo+Pisg LyoKPj4rICogV2lsbCBiZSBmcmVlZCBhcyB3aG9sZSBjaHVuawo+PisgKiBsYXRlci4KPj4rICov Cj4+KyAqYnVmX2FkZHIgPSBOVUxMOwo+PisgcmV0dXJuIHdyaXRlX3RvdGFsOwo+PisgfQo+Pisg ZXJybm8gPSAwOwo+PisgY29udGludWU7Cj4+KyB9Cj4+Kwo+Pisgd3JpdGVfdG90YWwgKz0gd3Jp dHRlbjsKPj4rIGFzc2VydCh3cml0ZV90b3RhbCA8PSBsZW4pOwo+PisKPj4rIGlmICh3cml0ZV90 b3RhbCA9PSBsZW4pCj4+KyBicmVhazsKPj4rCj4+KyBkYXRhID0gKHVpbnQ4X3QgKilkYXRhICsg KHB0cmRpZmZfdCl3cml0dGVuOwo+PisgfQo+PisKPj4rICpidWZfYWRkciA9IGJ1Zl9zdGFydDsK Pj4rIHJldHVybiB3cml0ZV90b3RhbDsKPj4rfQo+PisKPj4rLyoKPj4rICogRGVmYXVsdCBvbiBz dG9wIGNhbGxiYWNrLiBKdXN0IGNsb3NlIHRoZSBjb3JyZXNwb25kaW5nIHN0cmVhbS4KPj4rICov Cj4+K3N0YXRpYyBpbnQgb25fc3RvcF9jYl9kZWZhdWx0KHZvaWQgKm9wdCwgdWludDhfdCAqYnVm KQo+Pit7Cj4+KyBVTlVTRUQoYnVmKTsKPj4rIHN0cnVjdCBzeXNwcm9mX2N0eCAqY3R4ID0gb3B0 Owo+PisgaW50IGZkID0gY3R4LT5mZDsKPj4rIGZyZWUoY3R4KTsKPj4rIHJldHVybiBjbG9zZShm ZCk7Cj4+K30KPj4rCj4+K3N0YXRpYyBpbnQgc3RyZWFtX2luaXQoc3RydWN0IGx1YW1fU3lzcHJv Zl9PcHRpb25zICpvcHQpCj4+K3sKPj4rIHN0cnVjdCBzeXNwcm9mX2N0eCAqY3R4ID0gY2FsbG9j KDEsIHNpemVvZihzdHJ1Y3Qgc3lzcHJvZl9jdHgpKTsKPj4rIGlmIChOVUxMID09IGN0eCkKPj4r IHJldHVybiBQUk9GSUxFX0VSUklPOwo+PisKPj4rIGN0eC0+ZmQgPSBvcGVuKCIvZGV2L251bGwi LCBPX1dST05MWSB8IE9fQ1JFQVQsIDA2NDQpOwo+PisgaWYgKC0xID09IGN0eC0+ZmQpIHsKPj4r IGZyZWUoY3R4KTsKPj4rIHJldHVybiBQUk9GSUxFX0VSUklPOwo+PisgfQo+PisKPj4rIG9wdC0+ Y3R4ID0gY3R4Owo+Pisgb3B0LT5idWYgPSBjdHgtPmJ1ZjsKPj4rIG9wdC0+bGVuID0gU1RSRUFN X0JVRkZFUl9TSVpFOwo+PisKPj4rIHJldHVybiBQUk9GSUxFX1NVQ0NFU1M7Cj4+K30KPj4rCj4+ Ky8qIEdldCBmdW5jdGlvbiB0byBwcm9maWxlIG9uIHRvcCwgY2FsbCBpdC4gKi8KPj4rc3RhdGlj IGludCBjaGVja19wcm9maWxlX2Z1bmMobHVhX1N0YXRlICpMKQo+Pit7Cj4+KyBzdHJ1Y3QgbHVh bV9TeXNwcm9mX09wdGlvbnMgb3B0ID0ge307Cj4+KyBzdHJ1Y3QgbHVhbV9TeXNwcm9mX0NvdW50 ZXJzIGNudCA9IHt9Owo+PisgaW50IHN0YXR1cyA9IFBST0ZJTEVfRVJSVVNFOwo+PisgLyoKPj4r ICogU2luY2UgYWxsIHRoZSBvdGhlciBtb2RlcyBmdW5jdGlvbmFsaXR5IGlzIHRoZQo+PisgKiBz dWJzZXQgb2YgQ0FMTEdSQVBIIG1vZGUsIHJ1biB0aGlzIG1vZGUgdG8gdGVzdAo+PisgKiB0aGUg cHJvZmlsZXIncyBiZWhhdmlvci4KPj4rICovCj4+KyBvcHQubW9kZSA9IExVQU1fU1lTUFJPRl9D QUxMR1JBUEg7Cj4+KyBvcHQuaW50ZXJ2YWwgPSBTWVNQUk9GX0lOVEVSVkFMX0RFRkFVTFQ7Cj4+ KyBzdHJlYW1faW5pdCgmb3B0KTsKPj4rCj4+KyAvKgo+PisgKiBYWFg6IFBheWxvYWQgZnVuY3Rp b24gb24gdG9wIHdpbGwgbm90IGJlIHJlbW92ZWQgaWYgYW55Cj4+KyAqIG9mIHRob3NlIGFzc2Vy dGlvbnMgZmFpbC4gU28sIHRoZSBuZXh0IGNhbGwgdG8gdGhlCj4+KyAqIGB1dGlsc19nZXRfYXV4 X2xmdW5jKClgIHdpbGwgZmFpbC4gSXQncyBPSywgc2luY2UKPj4rICogd2UgYXJlIGFscmVhZHkg aW4gdHJvdWJsZSwganVzdCBrZWVwIGl0IGluIG1pbmQuCj4+KyAqLwo+PisgYXNzZXJ0X3RydWUo bHVhTV9zeXNwcm9mX3NldF93cml0ZXIoYnVmZmVyX3dyaXRlcl9kZWZhdWx0KQo+PisgPT0gUFJP RklMRV9TVUNDRVNTKTsKPj4rIGFzc2VydF90cnVlKGx1YU1fc3lzcHJvZl9zZXRfb25fc3RvcChv bl9zdG9wX2NiX2RlZmF1bHQpCj4+KyA9PSBQUk9GSUxFX1NVQ0NFU1MpOwo+PisgYXNzZXJ0X3Ry dWUobHVhTV9zeXNwcm9mX3NldF9iYWNrdHJhY2VyKE5VTEwpID09IFBST0ZJTEVfU1VDQ0VTUyk7 Cj4+Kwo+Pisgc3RhdHVzID0gbHVhTV9zeXNwcm9mX3N0YXJ0KEwsICZvcHQpOwo+PisgYXNzZXJ0 X3RydWUoc3RhdHVzID09IFBST0ZJTEVfU1VDQ0VTUyk7Cj4+Kwo+PisgLyogUnVuIHBheWxvYWQu ICovCj4+KyBpZiAobHVhX3BjYWxsKEwsIDAsIDAsIDApICE9IExVQV9PSykgewo+PisgdGVzdF9j b21tZW50KCJlcnJvciBydW5uaW5nIHBheWxvYWQ6ICVzIiwgbHVhX3Rvc3RyaW5nKEwsIC0xKSk7 Cj4+KyBiYWlsX291dCgiZXJyb3IgcnVubmluZyBzeXNwcm9mIHRlc3QgcGF5bG9hZCIpOwo+Pisg fQo+PisKPj4rIHN0YXR1cyA9IGx1YU1fc3lzcHJvZl9zdG9wKEwpOwo+PisgYXNzZXJ0X3RydWUo c3RhdHVzID09IFBST0ZJTEVfU1VDQ0VTUyk7Cj4+Kwo+Pisgc3RhdHVzID0gbHVhTV9zeXNwcm9m X3JlcG9ydCgmY250KTsKPj4rIGFzc2VydF90cnVlKHN0YXR1cyA9PSBQUk9GSUxFX1NVQ0NFU1Mp Owo+PisKPj4rIGFzc2VydF90cnVlKGNudC5zYW1wbGVzID4gMSk7Cj4+KyBhc3NlcnRfdHJ1ZShj bnQuc2FtcGxlcyA9PSBjbnQudm1zdF9hc20gKwo+PisgY250LnZtc3RfY2Z1bmMgKwo+PisgY250 LnZtc3RfZXhpdCArCj4+KyBjbnQudm1zdF9mZnVuYyArCj4+KyBjbnQudm1zdF9nYyArCj4+KyBj bnQudm1zdF9pbnRlcnAgKwo+PisgY250LnZtc3RfbGZ1bmMgKwo+PisgY250LnZtc3Rfb3B0ICsK Pj4rIGNudC52bXN0X3JlY29yZCArCj4+KyBjbnQudm1zdF90cmFjZSk7Cj4+Kwo+PisgcmV0dXJu IFRFU1RfRVhJVF9TVUNDRVNTOwo+Pit9Cj4+KyNlbmRpZgo+PisKPj4rc3RhdGljIGludCBwcm9m aWxlX2Z1bmNfaml0b2ZmKHZvaWQgKnRlc3Rfc3RhdGUpCj4+K3sKPj4rIFVOVVNFRCh0ZXN0X3N0 YXRlKTsKPj4rIHJldHVybiB0b2RvKCJOZWVkIHRvIHJlcGxhY2UgYmFja3RyYWNlIHdpdGggbGli dW53aW5kIGZpcnN0Iik7Cj4+KyNpZiAwCj4+KyBsdWFfU3RhdGUgKkwgPSB0ZXN0X3N0YXRlOwo+ PisgdXRpbHNfZ2V0X2F1eF9sZnVuYyhMKTsKPj4rICh2b2lkKWx1YUpJVF9zZXRtb2RlKEwsIDAs IExVQUpJVF9NT0RFX0VOR0lORSB8IExVQUpJVF9NT0RFX09GRik7Cj4+KyAodm9pZClsdWFKSVRf c2V0bW9kZShMLCAwLCBMVUFKSVRfTU9ERV9FTkdJTkUgfCBMVUFKSVRfTU9ERV9GTFVTSCk7Cj4+ KyBjaGVja19wcm9maWxlX2Z1bmMoTCk7Cj4+KyAodm9pZClsdWFKSVRfc2V0bW9kZShMLCAwLCBM VUFKSVRfTU9ERV9FTkdJTkUgfCBMVUFKSVRfTU9ERV9PTik7Cj4+KyByZXR1cm4gVEVTVF9FWElU X1NVQ0NFU1M7Cj4+KyNlbmRpZgo+Pit9Cj4+Kwo+PitzdGF0aWMgaW50IHByb2ZpbGVfZnVuY19q aXRvbih2b2lkICp0ZXN0X3N0YXRlKQo+Pit7Cj4+KyBVTlVTRUQodGVzdF9zdGF0ZSk7Cj4+KyBy ZXR1cm4gdG9kbygiTmVlZCB0byByZXBsYWNlIGJhY2t0cmFjZSB3aXRoIGxpYnVud2luZCBmaXJz dCIpOwo+PisjaWYgMAo+PisgbHVhX1N0YXRlICpMID0gdGVzdF9zdGF0ZTsKPj4rIHV0aWxzX2dl dF9hdXhfbGZ1bmMoTCk7Cj4+KyBjaGVja19wcm9maWxlX2Z1bmMoTCk7Cj4+KyByZXR1cm4gVEVT VF9FWElUX1NVQ0NFU1M7Cj4+KyNlbmRpZgo+Pit9Cj4+Kwo+PitpbnQgbWFpbih2b2lkKQo+Pit7 Cj4+KyBpZiAoTFVBSklUX09TICE9IExVQUpJVF9PU19MSU5VWCkKPj4rIHJldHVybiBza2lwX2Fs bCgiU3lzcHJvZiBpcyBpbXBsZW1lbnRlZCBmb3IgTGludXggb25seSIpOwo+PisgaWYgKExVQUpJ VF9UQVJHRVQgIT0gTFVBSklUX0FSQ0hfWDg2Cj4+KyAmJiBMVUFKSVRfVEFSR0VUICE9IExVQUpJ VF9BUkNIX1g2NCkKPj4rIHJldHVybiBza2lwX2FsbCgiU3lzcHJvZiBpcyBpbXBsZW1lbnRlZCBm b3IgeDg2XzY0IG9ubHkiKTsKPj4rCj4+KyBsdWFfU3RhdGUgKkwgPSB1dGlsc19sdWFfaW5pdCgp Owo+PisKPj4rIGx1YV9wdXNoY2Z1bmN0aW9uKEwsIGNfcGF5bG9hZCk7Cj4+KyBsdWFfc2V0Zmll bGQoTCwgTFVBX0dMT0JBTFNJTkRFWCwgImNfcGF5bG9hZCIpOwo+SXMgdGhlcmUgYSBjbGVhbmVy IGFwcHJvYWNoPwo+PisgdXRpbHNfbG9hZF9hdXhfc2NyaXB0KEwpOwo+PisKPj4rIGNvbnN0IHN0 cnVjdCB0ZXN0X3VuaXQgdGdyb3VwW10gPSB7Cj4+KyB0ZXN0X3VuaXRfbmV3KGJhc2UpLAo+Pisg dGVzdF91bml0X25ldyh2YWxpZGF0aW9uKSwKPj4rIHRlc3RfdW5pdF9uZXcocHJvZmlsZV9mdW5j X2ppdG9mZiksCj4+KyB0ZXN0X3VuaXRfbmV3KHByb2ZpbGVfZnVuY19qaXRvbikKPk1heWJlIHdl IHNob3VsZG7igJl0IHB1dCB0aGVzZSB0ZXN0cyBpbnRvIGdyb3VwIGFzIGxvbmcgYXMgdGhleSBh cmUgZGlzYWJsZWQ/Cj4+KyB9Owo+PisgY29uc3QgaW50IHRlc3RfcmVzdWx0ID0gdGVzdF9ydW5f Z3JvdXAodGdyb3VwLCBMKTsKPj4rIHV0aWxzX2x1YV9jbG9zZShMKTsKPj4rIHJldHVybiB0ZXN0 X3Jlc3VsdDsKPj4rfQo+PjxzbmlwcGVkPgo+LS0KPkJlc3QgcmVnYXJkcywKPk1heGltIEtva3J5 YXNoa2luCj7CoA== ----ALT--b53C706226E235213a2eBdF8f2A6eDb51684501221 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXY+SGksIFNlcmdleSE8L2Rpdj48ZGl2PlRoYW5rcyBmb3IgdGhlIHBh dGNoITwvZGl2PjxkaXY+TEdUTSwgZXhjZXB0IGZvciB0d28gcXVlc3Rpb25zIGJlbG93LjwvZGl2 PjxkaXY+Jm5ic3A7PC9kaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xp ZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRpdj4mbmJzcDs8 YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjox MHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2IGlkPSIiPjxkaXYgY2xhc3M9ImpzLWhlbHBl ciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2IGlkPSJzdHlsZV8xNjg0NDQyOTQ1MDA4OTE3MzEz N19CT0RZIj5UaGlzIHBhdGNoIHJld3JpdGVzIHRoZSBhZm9yZW1lbnRpb25lZCB0ZXN0IHdpdGgg dGhlIHVzYWdlIGxpYnRlc3Q8YnI+cmVjZW50bHkgaW50cm9kdWNlZC4gVGhlIGFwcHJvYWNoIGlz IHNpbWlsYXIgdG8gdGhlIHByZXZpb3VzIHBhdGNoLjxicj5gY19wYXlsb2FkKClgIGZ1bmN0aW9u IHRvIHByb2ZpbGUgaXMgbm93IHNldCB1cCBnbG9iYWxseSBvbiBzY3JpcHQ8YnI+bG9hZGluZy4g VGhlIHBheWxvYWQgZm9yIGVuYWJsZWQgYW5kIGRpc2FibGVkIEpJVCBpcyB0aGUgc2FtZS4gQXMg ZmFyIGFzPGJyPmZvciBzeXNwcm9mIHRlc3RpbmcgaXMgbmVjZXNzYXJ5IHRvIHJlcGxhY2UgYmFj a3RyYWNlIHdpdGggbGlidW53aW5kPGJyPmZpcnN0LCB0aGUgcGF5bG9hZCB0ZXN0cyBhcmUgbWFy a2VkIHdpdGggYHRvZG8oKWAuPGJyPjxicj5OZXZlcnRoZWxlc3MsIGdsaWJjIGBhc3NlcnQoKWAg c3RpbGwgbmVjZXNzYXJ5IHRvIGNoZWNrIHRoZSBjb3JyZWN0bmVzczxicj5vZiB0aGUgcHJvZmls ZSB3cml0ZXIsIHNvIGl0IGlzIHN0aWxsIHVzZWQgdGhlcmUuPGJyPjxicj5SZWxhdGVzIHRvIHRh cmFudG9vbC90YXJhbnRvb2wjNzgxPGJyPlBhcnQgb2YgdGFyYW50b29sL3RhcmFudG9vbCM3OTAw PGJyPi0tLTxicj4mbmJzcDsuLi4vbWlzY2xpYi1zeXNwcm9mLWNhcGktc2NyaXB0Lmx1YSB8IDM1 ICsrPGJyPiZuYnNwOy4uLi9taXNjbGliLXN5c3Byb2YtY2FwaS50ZXN0LmMgfCAzMjUgKysrKysr KysrKysrKysrKysrPGJyPiZuYnNwO3Rlc3QvdGFyYW50b29sLXRlc3RzL0NNYWtlTGlzdHMudHh0 IHwgMSAtPGJyPiZuYnNwOy4uLi9taXNjbGliLXN5c3Byb2YtY2FwaS50ZXN0Lmx1YSB8IDU0IC0t LTxicj4mbmJzcDsuLi4vbWlzY2xpYi1zeXNwcm9mLWNhcGkvQ01ha2VMaXN0cy50eHQgfCAxIC08 YnI+Jm5ic3A7Li4uL21pc2NsaWItc3lzcHJvZi1jYXBpL3Rlc3RzeXNwcm9mLmMgfCAyNjAgLS0t LS0tLS0tLS0tLS08YnI+Jm5ic3A7NiBmaWxlcyBjaGFuZ2VkLCAzNjAgaW5zZXJ0aW9ucygrKSwg MzE2IGRlbGV0aW9ucygtKTxicj4mbmJzcDtjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC90YXJhbnRv b2wtYy10ZXN0cy9taXNjbGliLXN5c3Byb2YtY2FwaS1zY3JpcHQubHVhPGJyPiZuYnNwO2NyZWF0 ZSBtb2RlIDEwMDY0NCB0ZXN0L3RhcmFudG9vbC1jLXRlc3RzL21pc2NsaWItc3lzcHJvZi1jYXBp LnRlc3QuYzxicj4mbmJzcDtkZWxldGUgbW9kZSAxMDA2NDQgdGVzdC90YXJhbnRvb2wtdGVzdHMv bWlzY2xpYi1zeXNwcm9mLWNhcGkudGVzdC5sdWE8YnI+Jm5ic3A7ZGVsZXRlIG1vZGUgMTAwNjQ0 IHRlc3QvdGFyYW50b29sLXRlc3RzL21pc2NsaWItc3lzcHJvZi1jYXBpL0NNYWtlTGlzdHMudHh0 PGJyPiZuYnNwO2RlbGV0ZSBtb2RlIDEwMDY0NCB0ZXN0L3RhcmFudG9vbC10ZXN0cy9taXNjbGli LXN5c3Byb2YtY2FwaS90ZXN0c3lzcHJvZi5jPGJyPjxicj5kaWZmIC0tZ2l0IGEvdGVzdC90YXJh bnRvb2wtYy10ZXN0cy9taXNjbGliLXN5c3Byb2YtY2FwaS1zY3JpcHQubHVhIGIvdGVzdC90YXJh bnRvb2wtYy10ZXN0cy9taXNjbGliLXN5c3Byb2YtY2FwaS1zY3JpcHQubHVhPGJyPm5ldyBmaWxl IG1vZGUgMTAwNjQ0PGJyPmluZGV4IDAwMDAwMDAwLi5kZDgzODdkYjxicj4tLS0gL2Rldi9udWxs PGJyPisrKyBiL3Rlc3QvdGFyYW50b29sLWMtdGVzdHMvbWlzY2xpYi1zeXNwcm9mLWNhcGktc2Ny aXB0Lmx1YTxicj4mbHQ7c25pcHBlZCZndDs8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2Nr cXVvdGU+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBt YXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxw ZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdj4mbmJzcDs8L2Rpdj48L2Rpdj48L2Rpdj48L2Rp dj48L2Jsb2NrcXVvdGU+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAj MDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNsYXNz PSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdj5kaWZmIC0tZ2l0IGEvdGVzdC90 YXJhbnRvb2wtYy10ZXN0cy9taXNjbGliLXN5c3Byb2YtY2FwaS50ZXN0LmMgYi90ZXN0L3RhcmFu dG9vbC1jLXRlc3RzL21pc2NsaWItc3lzcHJvZi1jYXBpLnRlc3QuY25ldyBmaWxlIG1vZGUgMTAw NjQ0PGJyPmluZGV4IDAwMDAwMDAwLi5mNzVmODJjZDxicj4tLS0gL2Rldi9udWxsPGJyPisrKyBi L3Rlc3QvdGFyYW50b29sLWMtdGVzdHMvbWlzY2xpYi1zeXNwcm9mLWNhcGkudGVzdC5jPGJyPkBA IC0wLDAgKzEsMzI1IEBAPGJyPisjaW5jbHVkZSAibGF1eGxpYi5oIjxicj4rI2luY2x1ZGUgImxt aXNjbGliLmgiPGJyPisjaW5jbHVkZSAibHVhLmgiPGJyPisjaW5jbHVkZSAibHVhaml0LmgiPGJy Pis8YnI+KyNpbmNsdWRlICJ0ZXN0LmgiPGJyPisjaW5jbHVkZSAidXRpbHMuaCI8YnI+Kzxicj4r I2luY2x1ZGUgJmx0O2Vycm5vLmgmZ3Q7PGJyPisjaW5jbHVkZSAmbHQ7ZmNudGwuaCZndDs8YnI+ KyNpbmNsdWRlICZsdDtzdGRsaWIuaCZndDs8YnI+KyNpbmNsdWRlICZsdDt1bmlzdGQuaCZndDs8 YnI+Kzxicj4rLyogWFhYOiBTdGlsbCBuZWVkIG5vcm1hbCBhc3NlcnQgaW5zaWRlIHdyaXRlciBm dW5jdGlvbnMuICovPGJyPisjdW5kZWYgTkRFQlVHPGJyPisjaW5jbHVkZSAmbHQ7YXNzZXJ0Lmgm Z3Q7PGJyPis8YnI+Ky8qIE5lZWQgZm9yIHNraXBjb25kIGZvciBPUyBhbmQgQVJDSC4gKi88YnI+ KyNpbmNsdWRlICJsal9hcmNoLmgiPGJyPis8YnI+KyNkZWZpbmUgVU5VU0VEKHgpICgodm9pZCko eCkpPGJyPis8YnI+Ky8qIC0tLSB1dGlscyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSAqLzxicj4rPGJyPisjZGVmaW5lIFNZU1BST0ZfSU5URVJWQUxf REVGQVVMVCAxMDA8YnI+Kzxicj4rLyo8YnI+KyAqIFllcCwgOE1iLiBUdW5lZCBpbiBvcmRlciBu b3QgdG8gYm90aGVyIHRoZSBwbGF0Zm9ybSB3aXRoIHRvbzxicj4rICogb2Z0ZW4gZmx1c2hlcy48 YnI+KyAqLzxicj4rI2RlZmluZSBTVFJFQU1fQlVGRkVSX1NJWkUgKDggKiAxMDI0ICogMTAyNCk8 YnI+Kzxicj4rPGJyPisvKiAtLS0gQyBQYXlsb2FkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gKi88YnI+Kzxicj4rc3RhdGljIGRvdWJsZSBmaWIoZG91Ymxl IG4pPGJyPit7PGJyPisgaWYgKG4gJmx0Oz0gMSk8YnI+KyByZXR1cm4gbjs8YnI+KyByZXR1cm4g ZmliKG4gLSAxKSArIGZpYihuIC0gMik7PGJyPit9PGJyPis8YnI+K3N0YXRpYyBpbnQgY19wYXls b2FkKGx1YV9TdGF0ZSAqTCk8YnI+K3s8YnI+KyBmaWIobHVhTF9jaGVja251bWJlcihMLCAxKSk7 PGJyPisgbHVhX3B1c2hib29sZWFuKEwsIDEpOzxicj4rIHJldHVybiAxOzxicj4rfTxicj4rLyog LS0tIHN5c3Byb2YgQyBBUEkgdGVzdHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tICovPGJyPis8YnI+K3N0YXRpYyBpbnQgYmFzZSh2b2lkICp0ZXN0X3N0YXRlKTxicj4rezxi cj4rIFVOVVNFRCh0ZXN0X3N0YXRlKTs8YnI+KyBzdHJ1Y3QgbHVhbV9TeXNwcm9mX09wdGlvbnMg b3B0ID0ge307PGJyPisgc3RydWN0IGx1YW1fU3lzcHJvZl9Db3VudGVycyBjbnQgPSB7fTs8YnI+ Kzxicj4rICh2b2lkKW9wdC5pbnRlcnZhbDs8YnI+KyAodm9pZClvcHQubW9kZTs8YnI+KyAodm9p ZClvcHQuY3R4Ozxicj4rICh2b2lkKW9wdC5idWY7PGJyPisgKHZvaWQpb3B0Lmxlbjs8YnI+Kzxi cj4rIGx1YU1fc3lzcHJvZl9yZXBvcnQoJmFtcDtjbnQpOzxicj4rPGJyPisgKHZvaWQpY250LnNh bXBsZXM7PGJyPisgKHZvaWQpY250LnZtc3RfaW50ZXJwOzxicj4rICh2b2lkKWNudC52bXN0X2xm dW5jOzxicj4rICh2b2lkKWNudC52bXN0X2ZmdW5jOzxicj4rICh2b2lkKWNudC52bXN0X2NmdW5j Ozxicj4rICh2b2lkKWNudC52bXN0X2djOzxicj4rICh2b2lkKWNudC52bXN0X2V4aXQ7PGJyPisg KHZvaWQpY250LnZtc3RfcmVjb3JkOzxicj4rICh2b2lkKWNudC52bXN0X29wdDs8YnI+KyAodm9p ZCljbnQudm1zdF9hc207PGJyPisgKHZvaWQpY250LnZtc3RfdHJhY2U7PGJyPis8YnI+KyByZXR1 cm4gVEVTVF9FWElUX1NVQ0NFU1M7PGJyPit9PGJyPis8YnI+K3N0YXRpYyBpbnQgdmFsaWRhdGlv bih2b2lkICp0ZXN0X3N0YXRlKTxicj4rezxicj4rIGx1YV9TdGF0ZSAqTCA9IHRlc3Rfc3RhdGU7 PGJyPisgc3RydWN0IGx1YW1fU3lzcHJvZl9PcHRpb25zIG9wdCA9IHt9Ozxicj4rIGludCBzdGF0 dXMgPSBQUk9GSUxFX1NVQ0NFU1M7PGJyPis8YnI+KyAvKiBVbmtub3duIG1vZGUuICovPGJyPisg b3B0Lm1vZGUgPSAweDQwOzxicj4rIHN0YXR1cyA9IGx1YU1fc3lzcHJvZl9zdGFydChMLCAmYW1w O29wdCk7PGJyPisgYXNzZXJ0X3RydWUoc3RhdHVzID09IFBST0ZJTEVfRVJSVVNFKTs8YnI+Kzxi cj4rIC8qIEJ1ZmZlciBub3QgY29uZmlndXJlZC4gKi88YnI+KyBvcHQubW9kZSA9IExVQU1fU1lT UFJPRl9DQUxMR1JBUEg7PGJyPisgb3B0LmJ1ZiA9IE5VTEw7PGJyPisgc3RhdHVzID0gbHVhTV9z eXNwcm9mX3N0YXJ0KEwsICZhbXA7b3B0KTs8YnI+KyBhc3NlcnRfdHJ1ZShzdGF0dXMgPT0gUFJP RklMRV9FUlJVU0UpOzxicj4rPGJyPisgLyogQmFkIGludGVydmFsLiAqLzxicj4rIG9wdC5tb2Rl ID0gTFVBTV9TWVNQUk9GX0RFRkFVTFQ7PGJyPisgb3B0LmludGVydmFsID0gMDs8YnI+KyBzdGF0 dXMgPSBsdWFNX3N5c3Byb2Zfc3RhcnQoTCwgJmFtcDtvcHQpOzxicj4rIGFzc2VydF90cnVlKHN0 YXR1cyA9PSBQUk9GSUxFX0VSUlVTRSk7PGJyPis8YnI+KyAvKiBDaGVjayBpZiBwcm9maWxpbmcg c3RhcnRlZC4gKi88YnI+KyBvcHQubW9kZSA9IExVQU1fU1lTUFJPRl9ERUZBVUxUOzxicj4rIG9w dC5pbnRlcnZhbCA9IFNZU1BST0ZfSU5URVJWQUxfREVGQVVMVDs8YnI+KyBzdGF0dXMgPSBsdWFN X3N5c3Byb2Zfc3RhcnQoTCwgJmFtcDtvcHQpOzxicj4rIGFzc2VydF90cnVlKHN0YXR1cyA9PSBQ Uk9GSUxFX1NVQ0NFU1MpOzxicj4rPGJyPisgLyogQWxyZWFkeSBydW5uaW5nLiAqLzxicj4rIHN0 YXR1cyA9IGx1YU1fc3lzcHJvZl9zdGFydChMLCAmYW1wO29wdCk7PGJyPisgYXNzZXJ0X3RydWUo c3RhdHVzID09IFBST0ZJTEVfRVJSUlVOKTs8YnI+Kzxicj4rIC8qIFByb2ZpbGVyIHN0b3BwaW5n LiAqLzxicj4rIHN0YXR1cyA9IGx1YU1fc3lzcHJvZl9zdG9wKEwpOzxicj4rIGFzc2VydF90cnVl KHN0YXR1cyA9PSBQUk9GSUxFX1NVQ0NFU1MpOzxicj4rPGJyPisgLyogU3RvcHBpbmcgcHJvZmls ZXIgd2hpY2ggaXMgbm90IHJ1bm5pbmcuICovPGJyPisgc3RhdHVzID0gbHVhTV9zeXNwcm9mX3N0 b3AoTCk7PGJyPisgYXNzZXJ0X3RydWUoc3RhdHVzID09IFBST0ZJTEVfRVJSUlVOKTs8YnI+Kzxi cj4rIHJldHVybiBURVNUX0VYSVRfU1VDQ0VTUzs8YnI+K308YnI+Kzxicj4rLyo8YnI+KyAqIEZJ WE1FOiBUaGUgZm9sbG93aW5nIHR3byB0ZXN0cyBhcmUgZGlzYWJsZWQgYmVjYXVzZSBzb21ldGlt ZXM8YnI+KyAqIGBiYWNrdHJhY2VgIGR5bmFtaWNhbGx5IGxvYWRzIGEgcGxhdGZvcm0tc3BlY2lm aWMgdW53aW5kZXIsPGJyPisgKiB3aGljaCBpcyBub3Qgc2lnbmFsLXNhZmUuPGJyPisgKi88YnI+ Kzxicj4rI2lmIDA8YnI+Ky8qPGJyPisgKiBTdHJ1Y3R1cmUgZ2l2ZW4gYXMgY3R4IHRvIHN5c3By b2Ygd3JpdGVyIGFuZCBvbl9zdG9wIGNhbGxiYWNrLjxicj4rICovPGJyPitzdHJ1Y3Qgc3lzcHJv Zl9jdHggezxicj4rIC8qIE91dHB1dCBmaWxlIGRlc2NyaXB0b3IgZm9yIGRhdGEuICovPGJyPisg aW50IGZkOzxicj4rIC8qIEJ1ZmZlciBmb3IgZGF0YS4gKi88YnI+KyB1aW50OF90IGJ1ZltTVFJF QU1fQlVGRkVSX1NJWkVdOzxicj4rfTs8YnI+Kzxicj4rLyo8YnI+KyAqIERlZmF1bHQgYnVmZmVy IHdyaXRlciBmdW5jdGlvbi48YnI+KyAqIEp1c3QgY2FsbCBmd3JpdGUgdG8gdGhlIGNvcnJlc3Bv bmRpbmcgRklMRS48YnI+KyAqLzxicj4rc3RhdGljIHNpemVfdCBidWZmZXJfd3JpdGVyX2RlZmF1 bHQoY29uc3Qgdm9pZCAqKmJ1Zl9hZGRyLCBzaXplX3QgbGVuLDxicj4rIHZvaWQgKm9wdCk8YnI+ K3s8YnI+KyBzdHJ1Y3Qgc3lzcHJvZl9jdHggKmN0eCA9IG9wdDs8YnI+KyBpbnQgZmQgPSBjdHgt Jmd0O2ZkOzxicj4rIGNvbnN0IHZvaWQgKiBjb25zdCBidWZfc3RhcnQgPSAqYnVmX2FkZHI7PGJy PisgY29uc3Qgdm9pZCAqZGF0YSA9ICpidWZfYWRkcjs8YnI+KyBzaXplX3Qgd3JpdGVfdG90YWwg PSAwOzxicj4rPGJyPisgYXNzZXJ0KGxlbiAmbHQ7PSBTVFJFQU1fQlVGRkVSX1NJWkUpOzxicj4r PGJyPisgZm9yICg7Oykgezxicj4rIGNvbnN0IHNpemVfdCB3cml0dGVuID0gd3JpdGUoZmQsIGRh dGEsIGxlbiAtIHdyaXRlX3RvdGFsKTs8YnI+Kzxicj4rIGlmICh3cml0dGVuID09IDApIHs8YnI+ KyAvKiBSZS10cmllcyB3cml0ZSBpbiBjYXNlIG9mIEVJTlRSLiAqLzxicj4rIGlmIChlcnJubyAh PSBFSU5UUikgezxicj4rIC8qPGJyPisgKiBXaWxsIGJlIGZyZWVkIGFzIHdob2xlIGNodW5rPGJy PisgKiBsYXRlci48YnI+KyAqLzxicj4rICpidWZfYWRkciA9IE5VTEw7PGJyPisgcmV0dXJuIHdy aXRlX3RvdGFsOzxicj4rIH08YnI+KyBlcnJubyA9IDA7PGJyPisgY29udGludWU7PGJyPisgfTxi cj4rPGJyPisgd3JpdGVfdG90YWwgKz0gd3JpdHRlbjs8YnI+KyBhc3NlcnQod3JpdGVfdG90YWwg Jmx0Oz0gbGVuKTs8YnI+Kzxicj4rIGlmICh3cml0ZV90b3RhbCA9PSBsZW4pPGJyPisgYnJlYWs7 PGJyPis8YnI+KyBkYXRhID0gKHVpbnQ4X3QgKilkYXRhICsgKHB0cmRpZmZfdCl3cml0dGVuOzxi cj4rIH08YnI+Kzxicj4rICpidWZfYWRkciA9IGJ1Zl9zdGFydDs8YnI+KyByZXR1cm4gd3JpdGVf dG90YWw7PGJyPit9PGJyPis8YnI+Ky8qPGJyPisgKiBEZWZhdWx0IG9uIHN0b3AgY2FsbGJhY2su IEp1c3QgY2xvc2UgdGhlIGNvcnJlc3BvbmRpbmcgc3RyZWFtLjxicj4rICovPGJyPitzdGF0aWMg aW50IG9uX3N0b3BfY2JfZGVmYXVsdCh2b2lkICpvcHQsIHVpbnQ4X3QgKmJ1Zik8YnI+K3s8YnI+ KyBVTlVTRUQoYnVmKTs8YnI+KyBzdHJ1Y3Qgc3lzcHJvZl9jdHggKmN0eCA9IG9wdDs8YnI+KyBp bnQgZmQgPSBjdHgtJmd0O2ZkOzxicj4rIGZyZWUoY3R4KTs8YnI+KyByZXR1cm4gY2xvc2UoZmQp Ozxicj4rfTxicj4rPGJyPitzdGF0aWMgaW50IHN0cmVhbV9pbml0KHN0cnVjdCBsdWFtX1N5c3By b2ZfT3B0aW9ucyAqb3B0KTxicj4rezxicj4rIHN0cnVjdCBzeXNwcm9mX2N0eCAqY3R4ID0gY2Fs bG9jKDEsIHNpemVvZihzdHJ1Y3Qgc3lzcHJvZl9jdHgpKTs8YnI+KyBpZiAoTlVMTCA9PSBjdHgp PGJyPisgcmV0dXJuIFBST0ZJTEVfRVJSSU87PGJyPis8YnI+KyBjdHgtJmd0O2ZkID0gb3Blbigi L2Rldi9udWxsIiwgT19XUk9OTFkgfCBPX0NSRUFULCAwNjQ0KTs8YnI+KyBpZiAoLTEgPT0gY3R4 LSZndDtmZCkgezxicj4rIGZyZWUoY3R4KTs8YnI+KyByZXR1cm4gUFJPRklMRV9FUlJJTzs8YnI+ KyB9PGJyPis8YnI+KyBvcHQtJmd0O2N0eCA9IGN0eDs8YnI+KyBvcHQtJmd0O2J1ZiA9IGN0eC0m Z3Q7YnVmOzxicj4rIG9wdC0mZ3Q7bGVuID0gU1RSRUFNX0JVRkZFUl9TSVpFOzxicj4rPGJyPisg cmV0dXJuIFBST0ZJTEVfU1VDQ0VTUzs8YnI+K308YnI+Kzxicj4rLyogR2V0IGZ1bmN0aW9uIHRv IHByb2ZpbGUgb24gdG9wLCBjYWxsIGl0LiAqLzxicj4rc3RhdGljIGludCBjaGVja19wcm9maWxl X2Z1bmMobHVhX1N0YXRlICpMKTxicj4rezxicj4rIHN0cnVjdCBsdWFtX1N5c3Byb2ZfT3B0aW9u cyBvcHQgPSB7fTs8YnI+KyBzdHJ1Y3QgbHVhbV9TeXNwcm9mX0NvdW50ZXJzIGNudCA9IHt9Ozxi cj4rIGludCBzdGF0dXMgPSBQUk9GSUxFX0VSUlVTRTs8YnI+KyAvKjxicj4rICogU2luY2UgYWxs IHRoZSBvdGhlciBtb2RlcyBmdW5jdGlvbmFsaXR5IGlzIHRoZTxicj4rICogc3Vic2V0IG9mIENB TExHUkFQSCBtb2RlLCBydW4gdGhpcyBtb2RlIHRvIHRlc3Q8YnI+KyAqIHRoZSBwcm9maWxlcidz IGJlaGF2aW9yLjxicj4rICovPGJyPisgb3B0Lm1vZGUgPSBMVUFNX1NZU1BST0ZfQ0FMTEdSQVBI Ozxicj4rIG9wdC5pbnRlcnZhbCA9IFNZU1BST0ZfSU5URVJWQUxfREVGQVVMVDs8YnI+KyBzdHJl YW1faW5pdCgmYW1wO29wdCk7PGJyPis8YnI+KyAvKjxicj4rICogWFhYOiBQYXlsb2FkIGZ1bmN0 aW9uIG9uIHRvcCB3aWxsIG5vdCBiZSByZW1vdmVkIGlmIGFueTxicj4rICogb2YgdGhvc2UgYXNz ZXJ0aW9ucyBmYWlsLiBTbywgdGhlIG5leHQgY2FsbCB0byB0aGU8YnI+KyAqIGB1dGlsc19nZXRf YXV4X2xmdW5jKClgIHdpbGwgZmFpbC4gSXQncyBPSywgc2luY2U8YnI+KyAqIHdlIGFyZSBhbHJl YWR5IGluIHRyb3VibGUsIGp1c3Qga2VlcCBpdCBpbiBtaW5kLjxicj4rICovPGJyPisgYXNzZXJ0 X3RydWUobHVhTV9zeXNwcm9mX3NldF93cml0ZXIoYnVmZmVyX3dyaXRlcl9kZWZhdWx0KTxicj4r ID09IFBST0ZJTEVfU1VDQ0VTUyk7PGJyPisgYXNzZXJ0X3RydWUobHVhTV9zeXNwcm9mX3NldF9v bl9zdG9wKG9uX3N0b3BfY2JfZGVmYXVsdCk8YnI+KyA9PSBQUk9GSUxFX1NVQ0NFU1MpOzxicj4r IGFzc2VydF90cnVlKGx1YU1fc3lzcHJvZl9zZXRfYmFja3RyYWNlcihOVUxMKSA9PSBQUk9GSUxF X1NVQ0NFU1MpOzxicj4rPGJyPisgc3RhdHVzID0gbHVhTV9zeXNwcm9mX3N0YXJ0KEwsICZhbXA7 b3B0KTs8YnI+KyBhc3NlcnRfdHJ1ZShzdGF0dXMgPT0gUFJPRklMRV9TVUNDRVNTKTs8YnI+Kzxi cj4rIC8qIFJ1biBwYXlsb2FkLiAqLzxicj4rIGlmIChsdWFfcGNhbGwoTCwgMCwgMCwgMCkgIT0g TFVBX09LKSB7PGJyPisgdGVzdF9jb21tZW50KCJlcnJvciBydW5uaW5nIHBheWxvYWQ6ICVzIiwg bHVhX3Rvc3RyaW5nKEwsIC0xKSk7PGJyPisgYmFpbF9vdXQoImVycm9yIHJ1bm5pbmcgc3lzcHJv ZiB0ZXN0IHBheWxvYWQiKTs8YnI+KyB9PGJyPis8YnI+KyBzdGF0dXMgPSBsdWFNX3N5c3Byb2Zf c3RvcChMKTs8YnI+KyBhc3NlcnRfdHJ1ZShzdGF0dXMgPT0gUFJPRklMRV9TVUNDRVNTKTs8YnI+ Kzxicj4rIHN0YXR1cyA9IGx1YU1fc3lzcHJvZl9yZXBvcnQoJmFtcDtjbnQpOzxicj4rIGFzc2Vy dF90cnVlKHN0YXR1cyA9PSBQUk9GSUxFX1NVQ0NFU1MpOzxicj4rPGJyPisgYXNzZXJ0X3RydWUo Y250LnNhbXBsZXMgJmd0OyAxKTs8YnI+KyBhc3NlcnRfdHJ1ZShjbnQuc2FtcGxlcyA9PSBjbnQu dm1zdF9hc20gKzxicj4rIGNudC52bXN0X2NmdW5jICs8YnI+KyBjbnQudm1zdF9leGl0ICs8YnI+ KyBjbnQudm1zdF9mZnVuYyArPGJyPisgY250LnZtc3RfZ2MgKzxicj4rIGNudC52bXN0X2ludGVy cCArPGJyPisgY250LnZtc3RfbGZ1bmMgKzxicj4rIGNudC52bXN0X29wdCArPGJyPisgY250LnZt c3RfcmVjb3JkICs8YnI+KyBjbnQudm1zdF90cmFjZSk7PGJyPis8YnI+KyByZXR1cm4gVEVTVF9F WElUX1NVQ0NFU1M7PGJyPit9PGJyPisjZW5kaWY8YnI+Kzxicj4rc3RhdGljIGludCBwcm9maWxl X2Z1bmNfaml0b2ZmKHZvaWQgKnRlc3Rfc3RhdGUpPGJyPit7PGJyPisgVU5VU0VEKHRlc3Rfc3Rh dGUpOzxicj4rIHJldHVybiB0b2RvKCJOZWVkIHRvIHJlcGxhY2UgYmFja3RyYWNlIHdpdGggbGli dW53aW5kIGZpcnN0Iik7PGJyPisjaWYgMDxicj4rIGx1YV9TdGF0ZSAqTCA9IHRlc3Rfc3RhdGU7 PGJyPisgdXRpbHNfZ2V0X2F1eF9sZnVuYyhMKTs8YnI+KyAodm9pZClsdWFKSVRfc2V0bW9kZShM LCAwLCBMVUFKSVRfTU9ERV9FTkdJTkUgfCBMVUFKSVRfTU9ERV9PRkYpOzxicj4rICh2b2lkKWx1 YUpJVF9zZXRtb2RlKEwsIDAsIExVQUpJVF9NT0RFX0VOR0lORSB8IExVQUpJVF9NT0RFX0ZMVVNI KTs8YnI+KyBjaGVja19wcm9maWxlX2Z1bmMoTCk7PGJyPisgKHZvaWQpbHVhSklUX3NldG1vZGUo TCwgMCwgTFVBSklUX01PREVfRU5HSU5FIHwgTFVBSklUX01PREVfT04pOzxicj4rIHJldHVybiBU RVNUX0VYSVRfU1VDQ0VTUzs8YnI+KyNlbmRpZjxicj4rfTxicj4rPGJyPitzdGF0aWMgaW50IHBy b2ZpbGVfZnVuY19qaXRvbih2b2lkICp0ZXN0X3N0YXRlKTxicj4rezxicj4rIFVOVVNFRCh0ZXN0 X3N0YXRlKTs8YnI+KyByZXR1cm4gdG9kbygiTmVlZCB0byByZXBsYWNlIGJhY2t0cmFjZSB3aXRo IGxpYnVud2luZCBmaXJzdCIpOzxicj4rI2lmIDA8YnI+KyBsdWFfU3RhdGUgKkwgPSB0ZXN0X3N0 YXRlOzxicj4rIHV0aWxzX2dldF9hdXhfbGZ1bmMoTCk7PGJyPisgY2hlY2tfcHJvZmlsZV9mdW5j KEwpOzxicj4rIHJldHVybiBURVNUX0VYSVRfU1VDQ0VTUzs8YnI+KyNlbmRpZjxicj4rfTxicj4r PGJyPitpbnQgbWFpbih2b2lkKTxicj4rezxicj4rIGlmIChMVUFKSVRfT1MgIT0gTFVBSklUX09T X0xJTlVYKTxicj4rIHJldHVybiBza2lwX2FsbCgiU3lzcHJvZiBpcyBpbXBsZW1lbnRlZCBmb3Ig TGludXggb25seSIpOzxicj4rIGlmIChMVUFKSVRfVEFSR0VUICE9IExVQUpJVF9BUkNIX1g4Njxi cj4rICZhbXA7JmFtcDsgTFVBSklUX1RBUkdFVCAhPSBMVUFKSVRfQVJDSF9YNjQpPGJyPisgcmV0 dXJuIHNraXBfYWxsKCJTeXNwcm9mIGlzIGltcGxlbWVudGVkIGZvciB4ODZfNjQgb25seSIpOzxi cj4rPGJyPisgbHVhX1N0YXRlICpMID0gdXRpbHNfbHVhX2luaXQoKTs8YnI+Kzxicj4rIGx1YV9w dXNoY2Z1bmN0aW9uKEwsIGNfcGF5bG9hZCk7PGJyPisgbHVhX3NldGZpZWxkKEwsIExVQV9HTE9C QUxTSU5ERVgsICJjX3BheWxvYWQiKTs8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVv dGU+PGRpdj5JcyB0aGVyZSBhIGNsZWFuZXIgYXBwcm9hY2g/PC9kaXY+PGJsb2NrcXVvdGUgc3R5 bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzow IDAgMCAxMHB4OyI+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj4rIHV0aWxz X2xvYWRfYXV4X3NjcmlwdChMKTs8YnI+Kzxicj4rIGNvbnN0IHN0cnVjdCB0ZXN0X3VuaXQgdGdy b3VwW10gPSB7PGJyPisgdGVzdF91bml0X25ldyhiYXNlKSw8YnI+KyB0ZXN0X3VuaXRfbmV3KHZh bGlkYXRpb24pLDxicj4rIHRlc3RfdW5pdF9uZXcocHJvZmlsZV9mdW5jX2ppdG9mZiksPGJyPisg dGVzdF91bml0X25ldyhwcm9maWxlX2Z1bmNfaml0b24pPC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+ TWF5YmUgd2Ugc2hvdWxkbuKAmXQgcHV0IHRoZXNlIHRlc3RzIGludG8gZ3JvdXAgYXMgbG9uZyBh cyB0aGV5IGFyZSBkaXNhYmxlZD88L2Rpdj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6 MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2 IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPisgfTs8YnI+KyBjb25zdCBpbnQgdGVz dF9yZXN1bHQgPSB0ZXN0X3J1bl9ncm91cCh0Z3JvdXAsIEwpOzxicj4rIHV0aWxzX2x1YV9jbG9z ZShMKTs8YnI+KyByZXR1cm4gdGVzdF9yZXN1bHQ7PGJyPit9PGJyPiZsdDtzbmlwcGVkJmd0Ozwv ZGl2PjwvYmxvY2txdW90ZT48ZGl2PjxkaXY+LS08YnI+QmVzdCByZWdhcmRzLDwvZGl2PjxkaXY+ TWF4aW0gS29rcnlhc2hraW48L2Rpdj48L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjwvZGl2PjwvYmxv Y2txdW90ZT48L0JPRFk+PC9IVE1MPgo= ----ALT--b53C706226E235213a2eBdF8f2A6eDb51684501221--