From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from f306.i.mail.ru (f306.i.mail.ru [217.69.130.138]) (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 C1041445320 for ; Sun, 12 Jul 2020 22:59:02 +0300 (MSK) From: =?UTF-8?B?SWx5YSBLb3NhcmV2?= MIME-Version: 1.0 Date: Sun, 12 Jul 2020 22:59:02 +0300 Reply-To: =?UTF-8?B?SWx5YSBLb3NhcmV2?= Message-ID: <1594583942.373866337@f306.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--a15C51e64bC473A734818aD45f5D2eBe1594583942" In-Reply-To: References: <20200703133255.23820-1-i.kosarev@tarantool.org> Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH=5D_engine=3A_validate_key_?= =?utf-8?q?in_space=5Fbefore=5Freplace?= List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?B?VmxhZGlzbGF2IFNocGlsZXZveQ==?= Cc: tarantool-patches@dev.tarantool.org ----ALT--a15C51e64bC473A734818aD45f5D2eBe1594583942 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CsKgSGkhCsKgClRoYW5rcyBmb3IgdGhlIHJldmlldy4KwqAKU2VuZCB2MiBvZiB0aGUgdGhlIHBh dGNoIGNvbnNpZGVyaW5nIHlvdXIgY29tbWVudHMsIGFuc3dlcnMgYmVsb3cuIAo+0KHRg9Cx0LHQ vtGC0LAsIDQg0LjRjtC70Y8gMjAyMCwgMDo0OSArMDM6MDAg0L7RgiBWbGFkaXNsYXYgU2hwaWxl dm95IDx2LnNocGlsZXZveUB0YXJhbnRvb2wub3JnPjoKPsKgCj5IaSEgVGhhbmtzIGZvciB0aGUg cGF0Y2ghCj4KPlNlZSAyIGNvbW1lbnRzIGJlbG93Lgo+Cj5PbiAwMy8wNy8yMDIwIDE1OjMyLCBJ bHlhIEtvc2FyZXYgd3JvdGU6Cj4+IFNpbmNlIDlmYmEyOWFiYjRlMDViYWJiOWIyM2I0NDEzYmQ4 MDgzZjBmYmE5MzMgKG1lbXR4OiBpbnRyb2R1Y2UgdHVwbGUKPj4gY29tcGFyZSBoaW50KSBpbmRl eF9nZXQgdXNlcyBrZXlfaGludCB0byBnZXQgYSBjb21wYXJpc29uIGhpbnQgZm9yIHRoZQo+PiBr ZXkuIEl0IHJlcXVpcmVzIGtleSB0eXBlIHRvIGJlIHZhbGlkYXRlZC4gSG93ZXZlciBpbgo+PiBz cGFjZV9iZWZvcmVfcmVwbGFjZSBpbmRleF9nZXQgd2FzIHVzZWQgd2l0aG91dCBrZXkgdmFsaWRh dGlvbiBvbiBzb21lCj4+IGV4ZWN1dGlvbiBwYXRocy4gTm93IGl0IGlzIGZpeGVkIGFuZCB2YWxp ZGF0aW9uIGlzIGJlaW5nIHBlcmZvcm1lZCBpZgo+PiBuZWVkZWQuIENvcnJlc3BvbmRpbmcgdGVz dCBjYXNlIGlzIGludHJvZHVjZWQuCj4+Cj4+IENsb3NlcyAjNTA5Mwo+PiAtLS0KPj4gQnJhbmNo OiAgaHR0cHM6Ly9naXRodWIuY29tL3RhcmFudG9vbC90YXJhbnRvb2wvdHJlZS9pLmtvc2FyZXYv Z2gtNTA5My1iZWZvcmVfcmVwbGFjZS1rZXktdmFsaWRhdGlvbgo+PiBJc3N1ZTogIGh0dHBzOi8v Z2l0aHViLmNvbS90YXJhbnRvb2wvdGFyYW50b29sL2lzc3Vlcy81MDkzCj4+Cj4+IEBDaGFuZ2VM b2c6Cj4+ICogQWRkIG5lZWRlZCBrZXkgdmFsaWRhdGlvbiB0byBzcGFjZV9iZWZvcmVfcmVwbGFj ZS4KPj4KPj4gc3JjL2JveC9zcGFjZS5jIHwgNiArKystLS0KPj4gLi4uL2doLTUwOTMtYmVmb3Jl X3JlcGxhY2Uta2V5LXR5cGUucmVzdWx0IHwgMjEgKysrKysrKysrKysrKysrKysrKwo+PiAuLi4v Z2gtNTA5My1iZWZvcmVfcmVwbGFjZS1rZXktdHlwZS50ZXN0Lmx1YSB8IDcgKysrKysrKwo+PiAz IGZpbGVzIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4+IGNyZWF0 ZSBtb2RlIDEwMDY0NCB0ZXN0L2VuZ2luZS9naC01MDkzLWJlZm9yZV9yZXBsYWNlLWtleS10eXBl LnJlc3VsdAo+PiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC9lbmdpbmUvZ2gtNTA5My1iZWZvcmVf cmVwbGFjZS1rZXktdHlwZS50ZXN0Lmx1YQo+Pgo+PiBkaWZmIC0tZ2l0IGEvc3JjL2JveC9zcGFj ZS5jIGIvc3JjL2JveC9zcGFjZS5jCj4+IGluZGV4IGVlY2JkZTdmYTcuLjY2NzY4MjA4YjMgMTAw NjQ0Cj4+IC0tLSBhL3NyYy9ib3gvc3BhY2UuYwo+PiArKysgYi9zcmMvYm94L3NwYWNlLmMKPj4g QEAgLTM1OSw5ICszNTksNiBAQCBzcGFjZV9iZWZvcmVfcmVwbGFjZShzdHJ1Y3Qgc3BhY2UgKnNw YWNlLCBzdHJ1Y3QgdHhuICp0eG4sCj4+IHJldHVybiAtMTsKPj4ga2V5ID0gcmVxdWVzdC0+a2V5 Owo+PiBwYXJ0X2NvdW50ID0gbXBfZGVjb2RlX2FycmF5KCZrZXkpOwo+PiAtIGlmIChleGFjdF9r ZXlfdmFsaWRhdGUoaW5kZXgtPmRlZi0+a2V5X2RlZiwKPj4gLSBrZXksIHBhcnRfY291bnQpICE9 IDApCj4+IC0gcmV0dXJuIC0xOwo+PiBicmVhazsKPj4gY2FzZSBJUFJPVE9fSU5TRVJUOgo+PiBj YXNlIElQUk9UT19SRVBMQUNFOgo+PiBAQCAtMzgwLDYgKzM3Nyw5IEBAIHNwYWNlX2JlZm9yZV9y ZXBsYWNlKHN0cnVjdCBzcGFjZSAqc3BhY2UsIHN0cnVjdCB0eG4gKnR4biwKPj4gLyogVW5rbm93 biByZXF1ZXN0IHR5cGUsIG5vdGhpbmcgdG8gZG8uICovCj4+IHJldHVybiAwOwo+PiB9Cj4+ICsg aWYgKGtleSAhPSBOVUxMICYmCj4+ICsgZXhhY3Rfa2V5X3ZhbGlkYXRlKGluZGV4LT5kZWYtPmtl eV9kZWYsIGtleSwgcGFydF9jb3VudCkgIT0gMCkKPj4gKyByZXR1cm4gLTE7Cj4KPjEuIFRoZSBw YXRjaCBpcyB0ZWNobmljYWxseSBjb3JyZWN0LiBCdXQgSSBkb24ndCBsaWtlIHRoYXQgeW91Cj5h ZGQga2V5ICE9IE5VTEwgY2hlY2sgdG8gdGhlIGhvdCBwYXRoLiBFdmVuIHRob3VnaCBpdCBpcyBh bHdheXMgIT0gTlVMTAo+ZXhjZXB0IGJsYWNraG9sZSBlbmdpbmUgc3BhY2UsIHdoaWNoIGRvZXNu J3QgaGF2ZSBpbmRleGVzIGVpdGhlci4KPgo+Q29uc2lkZXIgdGhlIHJlZmFjdG9yaW5nIGJlbG93 LiBJIGtub3cgaXQgY2F1c2VzIGJpZ2dlciBkaWZmLCBidXQKPkkgY29uc2lkZXIgaXQgb2sgZm9y IHRoZSBzYWtlIHBlcmZvcm1hbmNlLiBBcyB3ZSBsZWFybmVkIHJlY2VudGx5LAo+ZXZlbiArMSBv ciAyIGlmcyBpbiBhIGhvdCBwYXRoIG1heSBjb3N0LgpSaWdodCwgSSB0b3RhbGx5IGFncmVlIGhl cmUsIGRpZG7igJl0IGdpdmUgdGhpcyBlbm91Z2ggdGhvdWdodC4KPgo+PT09PT09PT09PT09PT09 PT09PT0KPmRpZmYgLS1naXQgYS9zcmMvYm94L3NwYWNlLmMgYi9zcmMvYm94L3NwYWNlLmMKPmlu ZGV4IDY2NzY4MjA4Yi4uNzMxNzJkZGQyIDEwMDY0NAo+LS0tIGEvc3JjL2JveC9zcGFjZS5jCj4r KysgYi9zcmMvYm94L3NwYWNlLmMKPkBAIC0zNDcsNiArMzQ3LDcgQEAgc3BhY2VfYmVmb3JlX3Jl cGxhY2Uoc3RydWN0IHNwYWNlICpzcGFjZSwgc3RydWN0IHR4biAqdHhuLAo+wqAgY29uc3QgY2hh ciAqa2V5ID0gTlVMTDsKPsKgIHVpbnQzMl90IHBhcnRfY291bnQgPSAwOwo+wqAgc3RydWN0IGlu ZGV4ICppbmRleCA9IE5VTEw7Cj4rIHN0cnVjdCB0dXBsZSAqb2xkX3R1cGxlID0gTlVMTDsKPsKg Cj7CoCAvKgo+wqAgKiBMb29rdXAgdGhlIG9sZCB0dXBsZS4KPkBAIC0zNjQsNyArMzY1LDcgQEAg c3BhY2VfYmVmb3JlX3JlcGxhY2Uoc3RydWN0IHNwYWNlICpzcGFjZSwgc3RydWN0IHR4biAqdHhu LAo+wqAgY2FzZSBJUFJPVE9fUkVQTEFDRToKPsKgIGNhc2UgSVBST1RPX1VQU0VSVDoKPsKgIGlm IChwayA9PSBOVUxMKQo+LSBicmVhazsKPisgZ290byBhZnRlcl9nZXR0aW5nX29sZDsKPsKgIGlu ZGV4ID0gcGs7Cj7CoCBrZXkgPSB0dXBsZV9leHRyYWN0X2tleV9yYXcocmVxdWVzdC0+dHVwbGUs IHJlcXVlc3QtPnR1cGxlX2VuZCwKPsKgIGluZGV4LT5kZWYtPmtleV9kZWYsIE1VTFRJS0VZX05P TkUsCj5AQCAtMzc3LDE1ICszNzgsMTEgQEAgc3BhY2VfYmVmb3JlX3JlcGxhY2Uoc3RydWN0IHNw YWNlICpzcGFjZSwgc3RydWN0IHR4biAqdHhuLAo+wqAgLyogVW5rbm93biByZXF1ZXN0IHR5cGUs IG5vdGhpbmcgdG8gZG8uICovCj7CoCByZXR1cm4gMDsKPsKgIH0KPi0gaWYgKGtleSAhPSBOVUxM ICYmCj4tIGV4YWN0X2tleV92YWxpZGF0ZShpbmRleC0+ZGVmLT5rZXlfZGVmLCBrZXksIHBhcnRf Y291bnQpICE9IDApCj4rIGlmIChleGFjdF9rZXlfdmFsaWRhdGUoaW5kZXgtPmRlZi0+a2V5X2Rl Ziwga2V5LCBwYXJ0X2NvdW50KSAhPSAwKQo+wqAgcmV0dXJuIC0xOwo+LQo+LSBzdHJ1Y3QgdHVw bGUgKm9sZF90dXBsZSA9IE5VTEw7Cj4tIGlmIChpbmRleCAhPSBOVUxMICYmCj4tIGluZGV4X2dl dChpbmRleCwga2V5LCBwYXJ0X2NvdW50LCAmb2xkX3R1cGxlKSAhPSAwKQo+KyBpZiAoaW5kZXhf Z2V0KGluZGV4LCBrZXksIHBhcnRfY291bnQsICZvbGRfdHVwbGUpICE9IDApCj7CoCByZXR1cm4g LTE7Cj4tCj4rYWZ0ZXJfZ2V0dGluZ19vbGQ6Owo+wqAgLyoKPsKgICogQ3JlYXRlIHRoZSBuZXcg dHVwbGUuCj7CoCAqLwo+PT09PT09PT09PT09PT09PT09PT0KPgo+PiBkaWZmIC0tZ2l0IGEvdGVz dC9lbmdpbmUvZ2gtNTA5My1iZWZvcmVfcmVwbGFjZS1rZXktdHlwZS50ZXN0Lmx1YSBiL3Rlc3Qv ZW5naW5lL2doLTUwOTMtYmVmb3JlX3JlcGxhY2Uta2V5LXR5cGUudGVzdC5sdWEKPj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMC4uOWNiYTNjMTU5Nwo+PiAtLS0gL2Rl di9udWxsCj4+ICsrKyBiL3Rlc3QvZW5naW5lL2doLTUwOTMtYmVmb3JlX3JlcGxhY2Uta2V5LXR5 cGUudGVzdC5sdWEKPj4gQEAgLTAsMCArMSw3IEBACj4+ICt0ZXN0X3J1biA9IHJlcXVpcmUoJ3Rl c3RfcnVuJykubmV3KCkKPj4gK3RyaWdnZXIgPSBmdW5jdGlvbigpIGVuZAo+PiArCj4+ICtzID0g Ym94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ2doLTUwOTMnLCB7ZW5naW5lPXRlc3RfcnVuOmdldF9j ZmcoJ2VuZ2luZScpfSkKPj4gK18gPSBzOmNyZWF0ZV9pbmRleCgndmFsdWUnLCB7cGFydHM9e3sx LCB0eXBlPSdkZWNpbWFsJ319fSkKPj4gK18gPSBzOmJlZm9yZV9yZXBsYWNlKHRyaWdnZXIpCj4+ ICtzOnJlcGxhY2V7JzExMTEuMTExMSd9Cj4KPjIuIFBsZWFzZSwgY2xlYW51cC4gRG8gczpkcm9w KCkuClJpZ2h0LgrCoAotLQpJbHlhIEtvc2FyZXYKwqA= ----ALT--a15C51e64bC473A734818aD45f5D2eBe1594583942 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXY+PGRpdj4mbmJzcDtIaSE8YnI+Jm5ic3A7PC9kaXY+PGRpdj5UaGFu a3MgZm9yIHRoZSByZXZpZXcuPC9kaXY+PGRpdj4mbmJzcDs8L2Rpdj48ZGl2PlNlbmQgdjIgb2Yg dGhlIHRoZSBwYXRjaCBjb25zaWRlcmluZyB5b3VyIGNvbW1lbnRzLCBhbnN3ZXJzIGJlbG93Ljwv ZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFy Z2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPtCh0YPQsdCx0L7RgtCwLCA0INC40Y7Qu9GP IDIwMjAsIDA6NDkgKzAzOjAwINC+0YIgVmxhZGlzbGF2IFNocGlsZXZveSAmbHQ7di5zaHBpbGV2 b3lAdGFyYW50b29sLm9yZyZndDs6PGJyPiZuYnNwOzxkaXYgaWQ9IiI+PGRpdiBjbGFzcz0ianMt aGVscGVyIGpzLXJlYWRtc2ctbXNnIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwvc3R5bGU+PGRp dj48ZGl2IGlkPSJzdHlsZV8xNTkzODEyOTU0MDMwNjMwOTc2Ml9CT0RZIj5IaSEgVGhhbmtzIGZv ciB0aGUgcGF0Y2ghPGJyPjxicj5TZWUgMiBjb21tZW50cyBiZWxvdy48YnI+PGJyPk9uIDAzLzA3 LzIwMjAgMTU6MzIsIElseWEgS29zYXJldiB3cm90ZTo8YnI+Jmd0OyBTaW5jZSA5ZmJhMjlhYmI0 ZTA1YmFiYjliMjNiNDQxM2JkODA4M2YwZmJhOTMzIChtZW10eDogaW50cm9kdWNlIHR1cGxlPGJy PiZndDsgY29tcGFyZSBoaW50KSBpbmRleF9nZXQgdXNlcyBrZXlfaGludCB0byBnZXQgYSBjb21w YXJpc29uIGhpbnQgZm9yIHRoZTxicj4mZ3Q7IGtleS4gSXQgcmVxdWlyZXMga2V5IHR5cGUgdG8g YmUgdmFsaWRhdGVkLiBIb3dldmVyIGluPGJyPiZndDsgc3BhY2VfYmVmb3JlX3JlcGxhY2UgaW5k ZXhfZ2V0IHdhcyB1c2VkIHdpdGhvdXQga2V5IHZhbGlkYXRpb24gb24gc29tZTxicj4mZ3Q7IGV4 ZWN1dGlvbiBwYXRocy4gTm93IGl0IGlzIGZpeGVkIGFuZCB2YWxpZGF0aW9uIGlzIGJlaW5nIHBl cmZvcm1lZCBpZjxicj4mZ3Q7IG5lZWRlZC4gQ29ycmVzcG9uZGluZyB0ZXN0IGNhc2UgaXMgaW50 cm9kdWNlZC48YnI+Jmd0Ozxicj4mZ3Q7IENsb3NlcyAjNTA5Mzxicj4mZ3Q7IC0tLTxicj4mZ3Q7 IEJyYW5jaDogPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RhcmFudG9vbC90YXJhbnRvb2wv dHJlZS9pLmtvc2FyZXYvZ2gtNTA5My1iZWZvcmVfcmVwbGFjZS1rZXktdmFsaWRhdGlvbiIgdGFy Z2V0PSJfYmxhbmsiPmh0dHBzOi8vZ2l0aHViLmNvbS90YXJhbnRvb2wvdGFyYW50b29sL3RyZWUv aS5rb3NhcmV2L2doLTUwOTMtYmVmb3JlX3JlcGxhY2Uta2V5LXZhbGlkYXRpb248L2E+PGJyPiZn dDsgSXNzdWU6IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90YXJhbnRvb2wvdGFyYW50b29s L2lzc3Vlcy81MDkzIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9naXRodWIuY29tL3RhcmFudG9v bC90YXJhbnRvb2wvaXNzdWVzLzUwOTM8L2E+PGJyPiZndDs8YnI+Jmd0OyBAQ2hhbmdlTG9nOjxi cj4mZ3Q7ICogQWRkIG5lZWRlZCBrZXkgdmFsaWRhdGlvbiB0byBzcGFjZV9iZWZvcmVfcmVwbGFj ZS48YnI+Jmd0Ozxicj4mZ3Q7IHNyYy9ib3gvc3BhY2UuYyB8IDYgKysrLS0tPGJyPiZndDsgLi4u L2doLTUwOTMtYmVmb3JlX3JlcGxhY2Uta2V5LXR5cGUucmVzdWx0IHwgMjEgKysrKysrKysrKysr KysrKysrKzxicj4mZ3Q7IC4uLi9naC01MDkzLWJlZm9yZV9yZXBsYWNlLWtleS10eXBlLnRlc3Qu bHVhIHwgNyArKysrKysrPGJyPiZndDsgMyBmaWxlcyBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCsp LCAzIGRlbGV0aW9ucygtKTxicj4mZ3Q7IGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0L2VuZ2luZS9n aC01MDkzLWJlZm9yZV9yZXBsYWNlLWtleS10eXBlLnJlc3VsdDxicj4mZ3Q7IGNyZWF0ZSBtb2Rl IDEwMDY0NCB0ZXN0L2VuZ2luZS9naC01MDkzLWJlZm9yZV9yZXBsYWNlLWtleS10eXBlLnRlc3Qu bHVhPGJyPiZndDs8YnI+Jmd0OyBkaWZmIC0tZ2l0IGEvc3JjL2JveC9zcGFjZS5jIGIvc3JjL2Jv eC9zcGFjZS5jPGJyPiZndDsgaW5kZXggZWVjYmRlN2ZhNy4uNjY3NjgyMDhiMyAxMDA2NDQ8YnI+ Jmd0OyAtLS0gYS9zcmMvYm94L3NwYWNlLmM8YnI+Jmd0OyArKysgYi9zcmMvYm94L3NwYWNlLmM8 YnI+Jmd0OyBAQCAtMzU5LDkgKzM1OSw2IEBAIHNwYWNlX2JlZm9yZV9yZXBsYWNlKHN0cnVjdCBz cGFjZSAqc3BhY2UsIHN0cnVjdCB0eG4gKnR4biw8YnI+Jmd0OyByZXR1cm4gLTE7PGJyPiZndDsg a2V5ID0gcmVxdWVzdC0mZ3Q7a2V5Ozxicj4mZ3Q7IHBhcnRfY291bnQgPSBtcF9kZWNvZGVfYXJy YXkoJmFtcDtrZXkpOzxicj4mZ3Q7IC0gaWYgKGV4YWN0X2tleV92YWxpZGF0ZShpbmRleC0mZ3Q7 ZGVmLSZndDtrZXlfZGVmLDxicj4mZ3Q7IC0ga2V5LCBwYXJ0X2NvdW50KSAhPSAwKTxicj4mZ3Q7 IC0gcmV0dXJuIC0xOzxicj4mZ3Q7IGJyZWFrOzxicj4mZ3Q7IGNhc2UgSVBST1RPX0lOU0VSVDo8 YnI+Jmd0OyBjYXNlIElQUk9UT19SRVBMQUNFOjxicj4mZ3Q7IEBAIC0zODAsNiArMzc3LDkgQEAg c3BhY2VfYmVmb3JlX3JlcGxhY2Uoc3RydWN0IHNwYWNlICpzcGFjZSwgc3RydWN0IHR4biAqdHhu LDxicj4mZ3Q7IC8qIFVua25vd24gcmVxdWVzdCB0eXBlLCBub3RoaW5nIHRvIGRvLiAqLzxicj4m Z3Q7IHJldHVybiAwOzxicj4mZ3Q7IH08YnI+Jmd0OyArIGlmIChrZXkgIT0gTlVMTCAmYW1wOyZh bXA7PGJyPiZndDsgKyBleGFjdF9rZXlfdmFsaWRhdGUoaW5kZXgtJmd0O2RlZi0mZ3Q7a2V5X2Rl Ziwga2V5LCBwYXJ0X2NvdW50KSAhPSAwKTxicj4mZ3Q7ICsgcmV0dXJuIC0xOzxicj48YnI+MS4g VGhlIHBhdGNoIGlzIHRlY2huaWNhbGx5IGNvcnJlY3QuIEJ1dCBJIGRvbid0IGxpa2UgdGhhdCB5 b3U8YnI+YWRkIGtleSAhPSBOVUxMIGNoZWNrIHRvIHRoZSBob3QgcGF0aC4gRXZlbiB0aG91Z2gg aXQgaXMgYWx3YXlzICE9IE5VTEw8YnI+ZXhjZXB0IGJsYWNraG9sZSBlbmdpbmUgc3BhY2UsIHdo aWNoIGRvZXNuJ3QgaGF2ZSBpbmRleGVzIGVpdGhlci48YnI+PGJyPkNvbnNpZGVyIHRoZSByZWZh Y3RvcmluZyBiZWxvdy4gSSBrbm93IGl0IGNhdXNlcyBiaWdnZXIgZGlmZiwgYnV0PGJyPkkgY29u c2lkZXIgaXQgb2sgZm9yIHRoZSBzYWtlIHBlcmZvcm1hbmNlLiBBcyB3ZSBsZWFybmVkIHJlY2Vu dGx5LDxicj5ldmVuICsxIG9yIDIgaWZzIGluIGEgaG90IHBhdGggbWF5IGNvc3QuPC9kaXY+PC9k aXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjwvZGl2PjxkaXY+UmlnaHQsIEkgdG90YWxseSBh Z3JlZSBoZXJlLCBkaWRu4oCZdCBnaXZlIHRoaXMgZW5vdWdoIHRob3VnaHQuPC9kaXY+PGRpdj48 YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjox MHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1y ZWFkbXNnLW1zZyI+PGRpdj48ZGl2Pjxicj49PT09PT09PT09PT09PT09PT09PTxicj5kaWZmIC0t Z2l0IGEvc3JjL2JveC9zcGFjZS5jIGIvc3JjL2JveC9zcGFjZS5jPGJyPmluZGV4IDY2NzY4MjA4 Yi4uNzMxNzJkZGQyIDEwMDY0NDxicj4tLS0gYS9zcmMvYm94L3NwYWNlLmM8YnI+KysrIGIvc3Jj L2JveC9zcGFjZS5jPGJyPkBAIC0zNDcsNiArMzQ3LDcgQEAgc3BhY2VfYmVmb3JlX3JlcGxhY2Uo c3RydWN0IHNwYWNlICpzcGFjZSwgc3RydWN0IHR4biAqdHhuLDxicj4mbmJzcDsgY29uc3QgY2hh ciAqa2V5ID0gTlVMTDs8YnI+Jm5ic3A7IHVpbnQzMl90IHBhcnRfY291bnQgPSAwOzxicj4mbmJz cDsgc3RydWN0IGluZGV4ICppbmRleCA9IE5VTEw7PGJyPisgc3RydWN0IHR1cGxlICpvbGRfdHVw bGUgPSBOVUxMOzxicj4mbmJzcDs8YnI+Jm5ic3A7IC8qPGJyPiZuYnNwOyAqIExvb2t1cCB0aGUg b2xkIHR1cGxlLjxicj5AQCAtMzY0LDcgKzM2NSw3IEBAIHNwYWNlX2JlZm9yZV9yZXBsYWNlKHN0 cnVjdCBzcGFjZSAqc3BhY2UsIHN0cnVjdCB0eG4gKnR4biw8YnI+Jm5ic3A7IGNhc2UgSVBST1RP X1JFUExBQ0U6PGJyPiZuYnNwOyBjYXNlIElQUk9UT19VUFNFUlQ6PGJyPiZuYnNwOyBpZiAocGsg PT0gTlVMTCk8YnI+LSBicmVhazs8YnI+KyBnb3RvIGFmdGVyX2dldHRpbmdfb2xkOzxicj4mbmJz cDsgaW5kZXggPSBwazs8YnI+Jm5ic3A7IGtleSA9IHR1cGxlX2V4dHJhY3Rfa2V5X3JhdyhyZXF1 ZXN0LSZndDt0dXBsZSwgcmVxdWVzdC0mZ3Q7dHVwbGVfZW5kLDxicj4mbmJzcDsgaW5kZXgtJmd0 O2RlZi0mZ3Q7a2V5X2RlZiwgTVVMVElLRVlfTk9ORSw8YnI+QEAgLTM3NywxNSArMzc4LDExIEBA IHNwYWNlX2JlZm9yZV9yZXBsYWNlKHN0cnVjdCBzcGFjZSAqc3BhY2UsIHN0cnVjdCB0eG4gKnR4 biw8YnI+Jm5ic3A7IC8qIFVua25vd24gcmVxdWVzdCB0eXBlLCBub3RoaW5nIHRvIGRvLiAqLzxi cj4mbmJzcDsgcmV0dXJuIDA7PGJyPiZuYnNwOyB9PGJyPi0gaWYgKGtleSAhPSBOVUxMICZhbXA7 JmFtcDs8YnI+LSBleGFjdF9rZXlfdmFsaWRhdGUoaW5kZXgtJmd0O2RlZi0mZ3Q7a2V5X2RlZiwg a2V5LCBwYXJ0X2NvdW50KSAhPSAwKTxicj4rIGlmIChleGFjdF9rZXlfdmFsaWRhdGUoaW5kZXgt Jmd0O2RlZi0mZ3Q7a2V5X2RlZiwga2V5LCBwYXJ0X2NvdW50KSAhPSAwKTxicj4mbmJzcDsgcmV0 dXJuIC0xOzxicj4tPGJyPi0gc3RydWN0IHR1cGxlICpvbGRfdHVwbGUgPSBOVUxMOzxicj4tIGlm IChpbmRleCAhPSBOVUxMICZhbXA7JmFtcDs8YnI+LSBpbmRleF9nZXQoaW5kZXgsIGtleSwgcGFy dF9jb3VudCwgJmFtcDtvbGRfdHVwbGUpICE9IDApPGJyPisgaWYgKGluZGV4X2dldChpbmRleCwg a2V5LCBwYXJ0X2NvdW50LCAmYW1wO29sZF90dXBsZSkgIT0gMCk8YnI+Jm5ic3A7IHJldHVybiAt MTs8YnI+LTxicj4rYWZ0ZXJfZ2V0dGluZ19vbGQ6Ozxicj4mbmJzcDsgLyo8YnI+Jm5ic3A7ICog Q3JlYXRlIHRoZSBuZXcgdHVwbGUuPGJyPiZuYnNwOyAqLzxicj49PT09PT09PT09PT09PT09PT09 PTxicj48YnI+Jmd0OyBkaWZmIC0tZ2l0IGEvdGVzdC9lbmdpbmUvZ2gtNTA5My1iZWZvcmVfcmVw bGFjZS1rZXktdHlwZS50ZXN0Lmx1YSBiL3Rlc3QvZW5naW5lL2doLTUwOTMtYmVmb3JlX3JlcGxh Y2Uta2V5LXR5cGUudGVzdC5sdWE8YnI+Jmd0OyBuZXcgZmlsZSBtb2RlIDEwMDY0NDxicj4mZ3Q7 IGluZGV4IDAwMDAwMDAwMDAuLjljYmEzYzE1OTc8YnI+Jmd0OyAtLS0gL2Rldi9udWxsPGJyPiZn dDsgKysrIGIvdGVzdC9lbmdpbmUvZ2gtNTA5My1iZWZvcmVfcmVwbGFjZS1rZXktdHlwZS50ZXN0 Lmx1YTxicj4mZ3Q7IEBAIC0wLDAgKzEsNyBAQDxicj4mZ3Q7ICt0ZXN0X3J1biA9IHJlcXVpcmUo J3Rlc3RfcnVuJykubmV3KCk8YnI+Jmd0OyArdHJpZ2dlciA9IGZ1bmN0aW9uKCkgZW5kPGJyPiZn dDsgKzxicj4mZ3Q7ICtzID0gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ2doLTUwOTMnLCB7ZW5n aW5lPXRlc3RfcnVuOmdldF9jZmcoJ2VuZ2luZScpfSk8YnI+Jmd0OyArXyA9IHM6Y3JlYXRlX2lu ZGV4KCd2YWx1ZScsIHtwYXJ0cz17ezEsIHR5cGU9J2RlY2ltYWwnfX19KTxicj4mZ3Q7ICtfID0g czpiZWZvcmVfcmVwbGFjZSh0cmlnZ2VyKTxicj4mZ3Q7ICtzOnJlcGxhY2V7JzExMTEuMTExMSd9 PGJyPjxicj4yLiBQbGVhc2UsIGNsZWFudXAuIERvIHM6ZHJvcCgpLjwvZGl2PjwvZGl2PjwvZGl2 PjwvZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48ZGl2PlJpZ2h0LjwvZGl2PjxkaXY+PGRpdj4mbmJz cDs8L2Rpdj48ZGl2IGRhdGEtc2lnbmF0dXJlLXdpZGdldD0iY29udGFpbmVyIj48ZGl2IGRhdGEt c2lnbmF0dXJlLXdpZGdldD0iY29udGVudCI+PGRpdj4tLTxicj5JbHlhIEtvc2FyZXY8L2Rpdj48 L2Rpdj48L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjwvZGl2PjwvQk9EWT48L0hUTUw+Cg== ----ALT--a15C51e64bC473A734818aD45f5D2eBe1594583942--