From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from f556.i.mail.ru (f556.i.mail.ru [94.100.184.135]) (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 57C1246970E for ; Wed, 25 Dec 2019 15:40:14 +0300 (MSK) From: =?UTF-8?B?U2VyZ2V5IFBldHJlbmtv?= MIME-Version: 1.0 Date: Wed, 25 Dec 2019 15:40:13 +0300 Reply-To: =?UTF-8?B?U2VyZ2V5IFBldHJlbmtv?= Message-ID: <1577277613.853244140@f556.i.mail.ru> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 In-Reply-To: References: Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH_5/5=5D_replication=3A_intr?= =?utf-8?q?oduce_anonymous_replica=2E?= List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?B?VmxhZGlzbGF2IFNocGlsZXZveQ==?= , georgy@tarantool.org Cc: tarantool-patches@dev.tarantool.org CgoKPtCS0L7RgdC60YDQtdGB0LXQvdGM0LUsIDIyINC00LXQutCw0LHRgNGPIDIwMTksIDIwOjU4 ICswMzowMCDQvtGCIFZsYWRpc2xhdiBTaHBpbGV2b3kgPHYuc2hwaWxldm95QHRhcmFudG9vbC5v cmc+Ogo+Cj5UaGFua3MgZm9yIHRoZSBwYXRjaCEKVGhhbmtzIGZvciByZXZpZXchCgo+Cj4KPlNl ZSAxNiBjb21tZW50cy9xdWVzdGlvbnMgYmVsb3cuCj4KPk9uIDE1LzEyLzIwMTkgMjE6NTgsIHNl cmdlcGV0cmVua28gd3JvdGU6Cj4+IFRoaXMgY29tbWl0IGludHJvZHVjZXMgYW5vbnltb3VzIHJl cGxpY2FzLiBTdWNoIHJlcGxpY2FzIGRvIG5vdCBwb2xsdXRlCj4+IF9jbHVzdGVyIHRhYmxlICh0 aGV5IGNhbiBvbmx5IGJlIHJlYWQtb25seSBhbmQgaGF2ZSBhIHplcm8gaWQgaW4gcmV0dXJuKS4K Pj4gQW4gYW5vbnltb3VzIHJlcGxpY2EgY2FuIGJlIHByb21vdGVkIHRvIGEgbm9ybWFsIG9uZSBp ZiBuZWVkZWQuCj4KPjEuIERvIHdlIG5lZWQgdGhlIHByb21vdGlvbj8gU2VlbXMgbGlrZSBpdCB3 YXMgbm90IGFza2VkIGZvciwgYnV0IHdlIHdpbGwKPm5lZWQgdG8gc3VwcG9ydCBpdCBmb3JldmVy IGluIGNhc2Ugd2UgYWxsb3cgdGhpcyBub3cuIEFsc28gaXQgbG9va3Mgbm90Cj5ldmVuLCB3aGVu IEkgY2FuIHByb21vdGUsIGJ1dCBjYW4ndCBkZW1vdGUuCgpXZWxsLCBvbmUgb2YgdGhlIHVzZSBj YXNlcyBmb3IgYW5vbnltb3VzIHJlcGxpY2EsIGluIG15IG9waW5pb24sIGlzIGEgYmFja3VwCmlu c3RhbmNlLCB3aGljaCBjYW4gYmUgcHJvbW90ZWQgb25jZSBvbmUgb2YgdGhlIG5vcm1hbCBpbnN0 YW5jZXMgZ2V0cyBkb3duLgooQWxtb3N0IGxpa2UgYSBob3Qgc3RhbmRieSBpbnN0YW5jZSkuCgpM ZXQncyBhc2sgR29zaGEgd2hldGhlciB3ZSBzaG91bGQga2VlcCBwcm9tb3Rpb24gb3IgZ2V0IHJp ZCBvZiBpdC4KUmVnYXJkaW5nIGRlbW90aW9uLCB3aGF0IGlmIEkgYWRkIGl0IGxhdGVyIGFmdGVy IGdpdmluZyBpdCBzb21lIHRob3VnaHQ/Cgo+Cj4KPj4gCj4+IENsb3NlcyAjMzE4Ngo+PiAKPj4g QFRhcmFudG9vbEJvdCBkb2N1bWVudAo+PiBUaXRsZTogRG9jdW1lbnQgYW5vbnltb3VzIHJlcGxp Y2EKPj4gCj4+IFRoZXJlIGlzIGEgbmV3IHR5cGUgb2YgcmVwbGljYSBpbiB0YXJhbnRvb2wsIGFu b255bW91cyBvbmUuIEFub255bW91cwo+PiByZXBsaWNhIGlzIHJlYWQtb25seSAoYnV0IHlvdSBz dGlsbCBjYW4gd3JpdGUgdG8gdGVtcG9yYXJ5IGFuZAo+PiByZXBsaWNhLWxvY2FsIHNwYWNlcyks IGFuZCBpdCBpc24ndCBwcmVzZW50IGluIF9jbHVzdGVyIHRhYmxlLgo+Cj4yLiBSZXBsaWNhLWxv Y2FsIGFuZCB0ZW1wb3Jhcnkgc3BhY2VzJyBzY2hlbWEgaXMgcmVwbGljYXRlZC4gRnJvbQo+X3Nw YWNlLCBfaW5kZXgsIGFuZCBvdGhlciBzeXN0ZW0gc3BhY2VzLiBEb2VzIG5vdCBpdCBicmVhayBh bnl0aGluZz8KPklmIGl0IGRvZXMgbm90LCB0aGVuIHdoeSBjYW4ndCBhIHVzZXIgY3JlYXRlIG5v bi1sb2NhbCBhbmQgbm9uLXRlbXBvcmFyeQo+c3BhY2VzIG9uIGFuIGFub24gcmVwbGljYT8KPgo+ T3IgZG8geW91IG1lYW4sIHRoYXQgdGhlIG1hc3RlciBzaG91bGQgY3JlYXRlIHRoZSBzcGFjZXMs IGFuZCB0aGUKPnJlcGxpY2EgY2FuIGZpbGwgdGhlbSB3aXRoIGRhdGEsIGFuZCBjYW4ndCBjcmVh dGUgdGhlc2Ugc3BhY2VzIGJ5Cj5pdHNlbGY/CgpJIG1lYW4gdGhlIGxhdHRlci4gU3BhY2VzIGFy ZSBjcmVhdGVkIG9uIG1hc3RlciBhbmQgY2FuIGJlIHVzZWQgb24gYW5vbiByZXBsaWNhcy4KU3Vj aCByZXBsaWNhcyBjYW5ub3QgY3JlYXRlIHNwYWNlcy4gRXZlbiBsb2NhbC90ZW1wb3Jhcnkgb25l cwoKPgo+Cj4+IAo+PiBTaW5jZSBhbm9ueW1vdXMgcmVwbGljYSBpc24ndCByZWdpc3RlcmVkIGlu IF9jbHVzdGVyIHRhYmxlLCB0aGVyZSBpcyBubwo+PiBsaW1pdGF0aW9uIGZvciBhbm9ueW1vdXMg cmVwbGljYSBjb3VudCBpbiBhIHJlcGxpY2FzZXQuIFlvdSBjYW4gaGF2ZSBhcwo+PiBtYW55IG9m IHRoZW0gYXMgeW91IHdhbnQuCj4+IAo+PiBJbiBvcmRlciB0byBtYWtlIGEgcmVwbGljYSBhbm9u eW1vdXMsIHlvdSBoYXZlIHRvIHBhc3MgYW4gb3B0aW9uCj4+IGByZXBsaWNhdGlvbl9hbm9uPXRy dWVgIHRvIGBib3guY2ZnYC4gWW91IGFsc28gaGF2ZSB0byBzZXQgJ3JlYWRfb25seScKPj4gdG8g dHJ1ZS4KPj4gCj4+IExldCdzIGdvIHRocm91Z2ggYW5vbnltb3VzIHJlcGxpY2EgYm9vdHN0cmFw Lgo+PiBTdXBwb3NlIHdlIGhhdmUgYSBtYXN0ZXIgY29uZmlndXJlZCB3aXRoCj4+IGBgYAo+PiBi b3guY2Zne2xpc3Rlbj0zMzAxfQo+PiBgYGAKPj4gQW5kIGNyZWF0ZWQgYSBsb2NhbCBzcGFjZSBj YWxsZWQgImxvYyIKPj4gYGBgCj4+IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCdsb2MnLCB7aXNf bG9jYWw9dHJ1ZX0pCj4+IGJveC5zcGFjZS5sb2M6Y3JlYXRlX2luZGV4KCJwayIpCj4+IGBgYAo+ PiBOb3csIHRvIGNvbmZpZ3VyZSBhbiBhbm9ueW1vdXMgcmVwbGljYSwgd2UgaGF2ZSB0byBpc3N1 ZSBgYm94LmNmZ2AsCj4+IGFzIHVzdWFsLgo+PiBgYGAKPj4gYm94LmNmZ3tyZXBsaWNhdGlvbl9h bm9uPXRydWUsIHJlYWRfb25seT10cnVlLCByZXBsaWNhdGlvbj0zMzAxfQo+PiBgYGAKPj4gQXMg bWVudGlvbmVkIGFib3ZlLCBgcmVwbGljYXRpb25fYW5vbmAgbWF5IGJlIHNldCB0byB0cnVlIG9u bHkgdG9nZXRoZXIKPj4gd2l0aCBgcmVhZF9vbmx5YAo+PiBUaGUgaW5zdGFuY2Ugd2lsbCBmZXRj aCBtYXN0ZXJzIHNuYXBzaG90IGFuZCBwcm9jZWVkIHRvIGZvbGxvd2luZyBpdHMKPj4gY2hhbmdl cy4gSXQgd2lsbCBub3QgcmVjZWl2ZSBhbiBpZCBzbyBpdHMgaWQgd2lsbCByZW1haW4gemVyby4K Pj4gYGBgCj4+IHRhcmFudG9vbD4gYm94LmluZm8uaWQKPj4gLS0tCj4+IC0gMAo+PiAuLi4KPj4g YGBgCj4+IGBgYAo+PiB0YXJhbnRvb2w+IGJveC5pbmZvLnJlcGxpY2F0aW9uCj4+IC0tLQo+PiAt IDE6Cj4+ICAgICBpZDogMQo+PiAgICAgdXVpZDogM2M4NGY4ZDktZTM0ZC00NjUxLTk2OWMtM2Qw ZWQyMTRjNjBmCj4+ICAgICBsc246IDQKPj4gICAgIHVwc3RyZWFtOgo+PiAgICAgICBzdGF0dXM6 IGZvbGxvdwo+PiAgICAgICBpZGxlOiAwLjY5MTIwMjk5OTk5ODUKPj4gICAgICAgcGVlcjoKPj4g ICAgICAgbGFnOiAwLjAwMDE0NjE1MDU4ODk4OTI2Cj4+IC4uLgo+PiBgYGAKPj4gTm93IHdlIGNh biB1c2UgdGhlIHJlcGxpY2EuCj4+IEZvciBleGFtcGxlLCB3ZSBtYXkgZG8gaW5zZXJ0cyBpbnRv IHRoZSBsb2NhbCBzcGFjZToKPj4gYGBgCj4+IHRhcmFudG9vbD4gZm9yIGkgPSAxLDEwIGRvCj4+ ICAgICAgICAgID4gYm94LnNwYWNlLmxvYzppbnNlcnR7aX0KPj4gICAgICAgICAgPiBlbmQKPj4g LS0tCj4+IC4uLgo+PiBgYGAKPj4gTm90ZSwgdGhhdCB3aGlsZSB0aGUgaW5zdGFuY2UgaXMgYW5v bnltb3VzLCBpdCB3aWxsIGluY3JlYXNlIHRoZSAwLXRoCj4+IGNvbXBvbmVudCBvZiBpdHMgdmNs b2NrOgo+PiBgYGAKPj4gdGFyYW50b29sPiBib3guaW5mby52Y2xvY2sKPj4gLS0tCj4+IC0gezA6 IDEwLCAxOiA0fQo+PiAuLi4KPj4gYGBgCj4+IExldCdzIG5vdyBwcm9tb3RlIHRoZSByZXBsaWNh IHRvIGEgbm9ybWFsIG9uZToKPj4gYGBgCj4+IHRhcmFudG9vbD4gYm94LmNmZ3tyZXBsaWNhdGlv bl9hbm9uPWZhbHNlfQo+PiAyMDE5LTEyLTEzIDIwOjM0OjM3LjQyMyBbNzEzMjldIG1haW4gST4g YXNzaWduZWQgaWQgMiB0byByZXBsaWNhIDZhOWMyZWQyLWI5ZTEtNGM1Ny1hMGU4LTUxYTQ2ZGVm NzY2MQo+PiAyMDE5LTEyLTEzIDIwOjM0OjM3LjQyNCBbNzEzMjldIG1haW4vMTAyL2ludGVyYWN0 aXZlIEk+IHNldCAncmVwbGljYXRpb25fYW5vbicgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gZmFs c2UKPj4gLS0tCj4+IC4uLgo+PiAKPj4gdGFyYW50b29sPiAyMDE5LTEyLTEzIDIwOjM0OjM3LjQy NCBbNzEzMjldIG1haW4vMTE3L2FwcGxpZXIvIEk+IHN1YnNjcmliZWQKPj4gMjAxOS0xMi0xMyAy MDozNDozNy40MjQgWzcxMzI5XSBtYWluLzExNy9hcHBsaWVyLyBJPiByZW1vdGUgdmNsb2NrIHsx OiA1fSBsb2NhbCB2Y2xvY2sgezA6IDEwLCAxOiA1fQo+PiAyMDE5LTEyLTEzIDIwOjM0OjM3LjQy NSBbNzEzMjldIG1haW4vMTE4L2FwcGxpZXJ3LyBDPiBsZWF2aW5nIG9ycGhhbiBtb2RlCj4+IGBg YAo+PiBUaGUgcmVwbGljYSBqdXN0IHJlY2VpdmVkIGlkIDIuIFdlIGNhbiBtYWtlIGl0IHJlYWQt d3JpdGUgbm93Lgo+PiBgYGAKPj4gYm94LmNmZ3tyZWFkX29ubHk9ZmFsc2V9Cj4+IDIwMTktMTIt MTMgMjA6MzU6NDYuMzkyIFs3MTMyOV0gbWFpbi8xMDIvaW50ZXJhY3RpdmUgST4gc2V0ICdyZWFk X29ubHknIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGZhbHNlCj4+IC0tLQo+PiAuLi4KPj4gCj4+ IHRhcmFudG9vbD4gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3Rlc3QnKQo+PiAtLS0KPj4gLSBl bmdpbmU6IG1lbXR4Cj4+ICAgYmVmb3JlX3JlcGxhY2U6ICdmdW5jdGlvbjogMHgwMTEwOWY5ZGM4 Jwo+PiAgIG9uX3JlcGxhY2U6ICdmdW5jdGlvbjogMHgwMTEwOWY5ZDkwJwo+PiAgIGNrX2NvbnN0 cmFpbnQ6IFtdCj4+ICAgZmllbGRfY291bnQ6IDAKPj4gICB0ZW1wb3Jhcnk6IGZhbHNlCj4+ICAg aW5kZXg6IFtdCj4+ICAgaXNfbG9jYWw6IGZhbHNlCj4+ICAgZW5hYmxlZDogZmFsc2UKPj4gICBu YW1lOiB0ZXN0Cj4+ICAgaWQ6IDUxMwo+PiAtIGNyZWF0ZWQKPj4gLi4uCj4+IAo+PiB0YXJhbnRv b2w+IGJveC5pbmZvLnZjbG9jawo+PiAtLS0KPj4gLSB7MDogMTAsIDE6IDUsIDI6IDJ9Cj4+IC4u Lgo+PiBgYGAKPj4gTm93IHJlcGxpY2EgdHJhY2tzIGl0cyBjaGFuZ2VzIGluIDJuZCB2Y2xvY2sg Y29tcG9uZW50LCBhcyBleHBlY3RlZC4KPj4gSXQgY2FuIGFsc28gYmVjb21lIHJlcGxpY2F0aW9u IG1hc3RlciBmcm9tIG5vdyBvbi4KPj4gCj4+IFNpZGUgbm90ZXM6Cj4+ICAgKiBZb3UgY2Fubm90 IHJlcGxpY2F0ZSBmcm9tIGFuIGFub255bW91cyBpbnN0YW5jZS4KPj4gICAqIFRvIHByb21vdGUg YW4gYW5vbnltb3VzIGluc3RhbmNlIHRvIGEgcmVndWxhciBvbmUsCj4+ICAgICB5b3UgZmlyc3Qg aGF2ZSB0byBzdGFydCBpdCBhcyBhbm9ueW1vdXMsIGFubyBvbmx5Cj4KPjMuIGFubyAtPiBhbmQu CgpGaXhlZCwgdGhhbmtzIQoKPgo+Cj4+ICAgICB0aGVuIGlzc3VlIGBib3guY2Zne3JlcGxpY2F0 aW9uX2Fub249ZmFsc2V9YAo+PiAgICogSW4gb3JkZXIgZm9yIHRoZSBkZWFub255bWl6YXRpb24g dG8gc3VjY2VlZCwgdGhlCj4+ICAgICBpbnN0YW5jZSBtdXN0IHJlcGxpY2F0ZSBmcm9tIHNvbWUg cmVhZC13cml0ZSBpbnN0YW5jZSwKPj4gICAgIG90aGVyd2lzZSBub29uZSB3aWxsIGJlIGFibGUg dG8gYWRkIGl0IHRvIF9jbHVzdGVyIHRhYmxlLgo+PiAtLS0KPj4gIHNyYy9ib3gvYXBwbGllci5j YyAgICAgICAgICAgICAgfCAgNTggKysrKysrLQo+PiAgc3JjL2JveC9hcHBsaWVyLmggICAgICAg ICAgICAgICB8ICAgNCArCj4+ICBzcmMvYm94L2JveC5jYyAgICAgICAgICAgICAgICAgIHwgMjY3 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4+ICBzcmMvYm94L2JveC5oICAgICAg ICAgICAgICAgICAgIHwgIDExICstCj4+ICBzcmMvYm94L2lwcm90by5jYyAgICAgICAgICAgICAg IHwgIDE2ICstCj4+ICBzcmMvYm94L2lwcm90b19jb25zdGFudHMuaCAgICAgIHwgICA2ICsKPj4g IHNyYy9ib3gvbHVhL2NmZy5jYyAgICAgICAgICAgICAgfCAgMTQgKy0KPj4gIHNyYy9ib3gvbHVh L2luZm8uYyAgICAgICAgICAgICAgfCAgIDQgKy0KPj4gIHNyYy9ib3gvbHVhL2xvYWRfY2ZnLmx1 YSAgICAgICAgfCAgIDQgKwo+PiAgc3JjL2JveC9yZWNvdmVyeS5jYyAgICAgICAgICAgICB8ICAg NyArLQo+PiAgc3JjL2JveC9yZWxheS5jYyAgICAgICAgICAgICAgICB8ICAzMiArKystCj4+ICBz cmMvYm94L3JlcGxpY2F0aW9uLmNjICAgICAgICAgIHwgIDQxICsrKystCj4+ICBzcmMvYm94L3Jl cGxpY2F0aW9uLmggICAgICAgICAgIHwgIDI0ICsrKwo+PiAgc3JjL2JveC93YWwuYyAgICAgICAg ICAgICAgICAgICB8ICAgNCArCj4+ICBzcmMvYm94L3hyb3cuYyAgICAgICAgICAgICAgICAgIHwg IDQ3ICsrKysrLQo+PiAgc3JjL2JveC94cm93LmggICAgICAgICAgICAgICAgICB8ICA2OCArKysr KystLQo+PiAgdGVzdC9hcHAtdGFwL2luaXRfc2NyaXB0LnJlc3VsdCB8ICA0OSArKystLS0KPj4g IHRlc3QvYm94L2FkbWluLnJlc3VsdCAgICAgICAgICAgfCAgIDIgKwo+PiAgdGVzdC9ib3gvY2Zn LnJlc3VsdCAgICAgICAgICAgICB8ICAgNCArCj4+ICB0ZXN0L3JlcGxpY2F0aW9uL2Fub24ubHVh ICAgICAgIHwgIDEzICsrCj4+ICB0ZXN0L3JlcGxpY2F0aW9uL2Fub24ucmVzdWx0ICAgIHwgMjU5 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gIHRlc3QvcmVwbGljYXRpb24vYW5v bi50ZXN0Lmx1YSAgfCAgODkgKysrKysrKysrKysKPj4gIHRlc3QvcmVwbGljYXRpb24vc3VpdGUu Y2ZnICAgICAgfCAgIDEgKwo+PiAgMjMgZmlsZXMgY2hhbmdlZCwgOTU3IGluc2VydGlvbnMoKyks IDY3IGRlbGV0aW9ucygtKQo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3QvcmVwbGljYXRpb24v YW5vbi5sdWEKPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0L3JlcGxpY2F0aW9uL2Fub24ucmVz dWx0Cj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC9yZXBsaWNhdGlvbi9hbm9uLnRlc3QubHVh Cj4+IAo+PiBkaWZmIC0tZ2l0IGEvc3JjL2JveC9hcHBsaWVyLmNjIGIvc3JjL2JveC9hcHBsaWVy LmNjCj4+IGluZGV4IDM1NzM2OTAyNS4uMTQ0NWRkNGQxIDEwMDY0NAo+PiAtLS0gYS9zcmMvYm94 L2FwcGxpZXIuY2MKPj4gKysrIGIvc3JjL2JveC9hcHBsaWVyLmNjCj4+IEBAIC00NTIsNiArNDUy LDIzIEBAIGFwcGxpZXJfZG9fZmV0Y2hfc25hcHNob3Qoc3RydWN0IGFwcGxpZXIgKmFwcGxpZXIp Cj4+ICByZXR1cm4gcm93X2NvdW50Owo+PiAgfQo+PiAKPj4gK3N0YXRpYyB2b2lkCj4+ICthcHBs aWVyX2ZldGNoX3NuYXBzaG90KHN0cnVjdCBhcHBsaWVyICphcHBsaWVyKQo+PiArewo+PiArLyog U2VuZCBGRVRDSCBTTkFQU0hPVCByZXF1ZXN0ICovCj4+ICtzdHJ1Y3QgZXZfaW8gKmNvaW8gPSAm YXBwbGllci0+aW87Cj4+ICtzdHJ1Y3QgeHJvd19oZWFkZXIgcm93Owo+PiArCj4+ICttZW1zZXQo JnJvdywgMCwgc2l6ZW9mKHJvdykpOwo+PiArcm93LnR5cGUgPSBJUFJPVE9fRkVUQ0hfU05BUFNI T1Q7Cj4+ICtjb2lvX3dyaXRlX3hyb3coY29pbywgJnJvdyk7Cj4+ICsKPj4gK2FwcGxpZXJfc2V0 X3N0YXRlKGFwcGxpZXIsIEFQUExJRVJfRkVUQ0hfU05BUFNIT1QpOwo+PiArYXBwbGllcl9kb19m ZXRjaF9zbmFwc2hvdChhcHBsaWVyKTsKPgo+NC4gVGhpcyBpcyB0aW1lIHRvIG1lbnRpb24gRkVU Q0hfU05BUFNIT1QgcmVxdWVzdCBpbiB0aGUKPmFwcGxpZXJfZG9fZmV0Y2hfc25hcHNob3QoKSBj b21tZW50cywgd2hpY2ggbm93IG1lbnRpb24KPm9ubHkgSk9JTi4KCkRvbmUuCgo+Cj4KPj4gK2Fw cGxpZXJfc2V0X3N0YXRlKGFwcGxpZXIsIEFQUExJRVJfRkVUQ0hFRF9TTkFQU0hPVCk7Cj4+ICth cHBsaWVyX3NldF9zdGF0ZShhcHBsaWVyLCBBUFBMSUVSX1JFQURZKTsKPj4gK30KPj4gKwo+PiAg c3RhdGljIHVpbnQ2NF90Cj4+ICBhcHBsaWVyX2RvX3JlZ2lzdGVyKHN0cnVjdCBhcHBsaWVyICph cHBsaWVyLCB1aW50NjRfdCByb3dfY291bnQpCj4+ICB7Cj4+ICAvKiogU3RhdGVzIGZvciB0aGUg YXBwbGllciAqLwo+PiAgRU5VTShhcHBsaWVyX3N0YXRlLCBhcHBsaWVyX1NUQVRFKTsKPj4gZGlm ZiAtLWdpdCBhL3NyYy9ib3gvYm94LmNjIGIvc3JjL2JveC9ib3guY2MKPj4gaW5kZXggOTgxYTVi YWMxLi40YzM5ZTQ5NzEgMTAwNjQ0Cj4+IC0tLSBhL3NyYy9ib3gvYm94LmNjCj4+ICsrKyBiL3Ny Yy9ib3gvYm94LmNjCj4+IEBAIC03NDAsNiArNzcwLDY1IEBAIGJveF9zZXRfcmVwbGljYXRpb25f c2tpcF9jb25mbGljdCh2b2lkKQo+PiAgcmVwbGljYXRpb25fc2tpcF9jb25mbGljdCA9IGNmZ19n ZXRpKCJyZXBsaWNhdGlvbl9za2lwX2NvbmZsaWN0Iik7Cj4+ICB9Cj4+IAo+PiArdm9pZAo+PiAr Ym94X3NldF9yZXBsaWNhdGlvbl9hbm9uKHZvaWQpCj4+ICt7PiArYm9vbCBhbm9uID0gYm94X2No ZWNrX3JlcGxpY2F0aW9uX2Fub24oKTsKPj4gK2lmIChhbm9uID09IHJlcGxpY2F0aW9uX2Fub24p Cj4+ICtyZXR1cm47Cj4+ICsKPj4gK2lmICghYW5vbikgewo+PiArLyogVHVybiBhbm9ueW1vdXMg aW5zdGFuY2UgaW50byBhIG5vcm1hbCBvbmUuICovCj4+ICtyZXBsaWNhdGlvbl9hbm9uID0gYW5v bjsKPj4gKy8qCj4+ICsgKiBSZXNldCBhbGwgYXBwbGllcnMuIFRoaXMgd2lsbCBpbnRlcnJ1cHQK Pj4gKyAqIGFub255bW91cyBmb2xsb3cgdGhleSdyZSBpbiBhbmQgYWxzbyB1cGRhdGUKPj4gKyAq IGNvcnJlc3BvbmRpbmcgaW5zdGFuY2UgYmFsbG90cyBzbyB0aGF0IHdlIGNhbgo+PiArICogdXNl IHRoZSBsYXRlc3QgaW5mbyB3aGVuIGNob29zaW5nIGEgcmVwbGljYSB0bwo+PiArICogcmVnaXN0 ZXIgb24uCj4+ICsgKi8KPj4gK3JlcGxpY2FzZXRfZm9yZWFjaChyZXBsaWNhKSB7Cj4+ICtzdHJ1 Y3QgYXBwbGllciAqYXBwbGllciA9IHJlcGxpY2EtPmFwcGxpZXI7Cj4+ICtpZiAoYXBwbGllciA9 PSBOVUxMKQo+PiArY29udGludWU7Cj4+ICtyZXBsaWNhX2NsZWFyX2FwcGxpZXIocmVwbGljYSk7 Cj4+ICtyZXBsaWNhLT5hcHBsaWVyX3N5bmNfc3RhdGUgPSBBUFBMSUVSX0RJU0NPTk5FQ1RFRDsK Pj4gK2FwcGxpZXJfc3RvcChhcHBsaWVyKTsKPj4gK2FwcGxpZXJfc3RhcnQoYXBwbGllcik7Cj4+ ICtyZXBsaWNhX3NldF9hcHBsaWVyKHJlcGxpY2EsIGFwcGxpZXIpOwo+PiArYXBwbGllcl9yZXN1 bWVfdG9fc3RhdGUoYXBwbGllciwgQVBQTElFUl9DT05ORUNURUQsIFRJTUVPVVRfSU5GSU5JVFkp Owo+PiArfQo+PiArLyogQ2hvb3NlIGEgbWFzdGVyIHRvIHNlbmQgcmVnaXN0ZXIgcmVxdWVzdCB0 by4gKi8KPj4gK3N0cnVjdCByZXBsaWNhICptYXN0ZXIgPSByZXBsaWNhc2V0X2xlYWRlcigpOwo+ PiArYXNzZXJ0KG1hc3RlciAhPSBOVUxMICYmIG1hc3Rlci0+YXBwbGllciAhPSBOVUxMKTsKPj4g K3N0cnVjdCBhcHBsaWVyICptYXN0ZXJfYXBwbGllciA9IG1hc3Rlci0+YXBwbGllcjsKPj4gK2Fw cGxpZXJfcmVzdW1lX3RvX3N0YXRlKG1hc3Rlcl9hcHBsaWVyLCBBUFBMSUVSX1JFR0lTVEVSLCBU SU1FT1VUX0lORklOSVRZKTsKPj4gK2FwcGxpZXJfcmVzdW1lX3RvX3N0YXRlKG1hc3Rlcl9hcHBs aWVyLCBBUFBMSUVSX1JFR0lTVEVSRUQsIFRJTUVPVVRfSU5GSU5JVFkpOwo+PiArYXBwbGllcl9y ZXN1bWVfdG9fc3RhdGUobWFzdGVyX2FwcGxpZXIsIEFQUExJRVJfUkVBRFksIFRJTUVPVVRfSU5G SU5JVFkpOwo+PiArYXBwbGllcl9yZXN1bWUobWFzdGVyX2FwcGxpZXIpOwo+PiArLyoqCj4+ICsg KiBSZXN0YXJ0IG90aGVyIGFwcGxpZXJzIHRvCj4+ICsgKiByZXNlbmQgbm9uLWFub255bW91cyBz dWJzY3JpYmUuCj4+ICsgKi8KPj4gK3JlcGxpY2FzZXRfZm9yZWFjaChyZXBsaWNhKSB7Cj4+ICtp ZiAocmVwbGljYSA9PSBtYXN0ZXIgfHwgcmVwbGljYS0+YXBwbGllciA9PSBOVUxMKQo+PiArY29u dGludWU7Cj4+ICthcHBsaWVyX3Jlc3VtZShyZXBsaWNhLT5hcHBsaWVyKTsKPj4gK30KPgo+NS4g Q29uc2lkZXIgdGhpcyByZWZhY3RvcmluZzoKPgo+PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPgo+ ZGlmZiAtLWdpdCBhL3NyYy9ib3gvYm94LmNjIGIvc3JjL2JveC9ib3guY2MKPmluZGV4IGVmZmZh NjU0Zi4uYWE5MjIxYWFhIDEwMDY0NAo+LS0tIGEvc3JjL2JveC9ib3guY2MKPisrKyBiL3NyYy9i b3gvYm94LmNjCj5AQCAtODA0LDE1ICs4MDQsMTMgQEAgYm94X3NldF9yZXBsaWNhdGlvbl9hbm9u KHZvaWQpCj7CoGFwcGxpZXJfcmVzdW1lX3RvX3N0YXRlKG1hc3Rlcl9hcHBsaWVyLCBBUFBMSUVS X1JFR0lTVEVSLCBUSU1FT1VUX0lORklOSVRZKTsKPsKgYXBwbGllcl9yZXN1bWVfdG9fc3RhdGUo bWFzdGVyX2FwcGxpZXIsIEFQUExJRVJfUkVHSVNURVJFRCwgVElNRU9VVF9JTkZJTklUWSk7Cj7C oGFwcGxpZXJfcmVzdW1lX3RvX3N0YXRlKG1hc3Rlcl9hcHBsaWVyLCBBUFBMSUVSX1JFQURZLCBU SU1FT1VUX0lORklOSVRZKTsKPi1hcHBsaWVyX3Jlc3VtZShtYXN0ZXJfYXBwbGllcik7Cj7CoC8q Kgo+LSAqIFJlc3RhcnQgb3RoZXIgYXBwbGllcnMgdG8KPi0gKiByZXNlbmQgbm9uLWFub255bW91 cyBzdWJzY3JpYmUuCj4rICogUmVzdGFydCBhcHBsaWVycyB0byByZXNlbmQgbm9uLWFub255bW91 cwo+KyAqIHN1YnNjcmliZS4KPsKgICovCj7CoHJlcGxpY2FzZXRfZm9yZWFjaChyZXBsaWNhKSB7 Cj4taWYgKHJlcGxpY2EgPT0gbWFzdGVyIHx8IHJlcGxpY2EtPmFwcGxpZXIgPT0gTlVMTCkKPi1j b250aW51ZTsKPi1hcHBsaWVyX3Jlc3VtZShyZXBsaWNhLT5hcHBsaWVyKTsKPitpZiAocmVwbGlj YS0+YXBwbGllciAhPSBOVUxMKQo+K2FwcGxpZXJfcmVzdW1lKHJlcGxpY2EtPmFwcGxpZXIpOwo+ wqB9Cj7CoH0gZWxzZSBpZiAoIWlzX2JveF9jb25maWd1cmVkKSB7Cj7CoHJlcGxpY2F0aW9uX2Fu b24gPSBhbm9uOwo+Cj49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKSSd2ZSBmb3VuZCBhbiBlcnJv ciBpbiB0aGlzIHBpZWNlIG9mIGNvZGUgZHVyaW5nIHJldmlldy4gSSBhc3N1bWVkIHRoYXQKYXBw bGllcnMgcGF1c2VkIHRoZW1zZWx2ZXMgb24gc3VjY2Vzc2Z1bCBjb25uZWN0LCBoZW5jZSB0aGUg YXBwbGllcl9yZXN1bWUKZm9yIGV2ZXJ5IG9uZSBvZiB0aGVtIGJlbG93LiBUaGlzIHdhc24ndCB0 cnVlLiBUaGUgdHJpZ2dlciB0byBwYXVzZSBhcHBsaWVycyBvbgpjb25uZWN0IGlzIHNldCBvbmx5 IGR1cmluZyBib290c3RyYXAsIHdoaWNoIGlzbid0IG91ciBjYXNlLiBTbyBJJ3ZlIHJld3JpdHRl biB0aGlzIHBhcnQuClJlbW90ZSBpbnN0YW5jZSBiYWxsb3RzIGFyZSBub3QgdXBkYXRlZCBhbnlt b3JlLCB1bmZvcnR1bmF0ZWx5LCBidXQgSSB0aGluayB3ZSBjYW4KbGl2ZSB3aXRoIHRoYXQuCgo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpkaWZmIC0tZ2l0IGEvc3JjL2JveC9ib3guY2MgYi9zcmMvYm94L2JveC5jYwppbmRleCA0ZTQx ZjZiNzYuLmQ3YWE3ZmI0OSAxMDA2NDQKLS0tIGEvc3JjL2JveC9ib3guY2MKKysrIGIvc3JjL2Jv eC9ib3guY2MKQEAgLTc4MiwxMCArNzgyLDkgQEAgYm94X3NldF9yZXBsaWNhdGlvbl9hbm9uKHZv aWQpCsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlcGxpY2F0aW9uX2Fub24gPSBhbm9uOwrCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCAvKgrCoMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICogUmVzZXQg YWxsIGFwcGxpZXJzLiBUaGlzIHdpbGwgaW50ZXJydXB0Ci3CoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCAqIGFub255bW91cyBmb2xsb3cgdGhleSdyZSBpbiBhbmQgYWxzbyB1cGRhdGUKLcKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgICogY29ycmVzcG9uZGluZyBpbnN0YW5jZSBiYWxsb3RzIHNvIHRoYXQg d2UgY2FuCi3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAqIHVzZSB0aGUgbGF0ZXN0IGluZm8gd2hl biBjaG9vc2luZyBhIHJlcGxpY2EgdG8KLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICogcmVnaXN0 ZXIgb24uCisgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiBhbm9ueW1vdXMgZm9sbG93IHRoZXkn cmUgaW4gc28gdGhhdCBvbmUgb2YKKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAqIHRoZW0gY2Fu IHJlZ2lzdGVyIGFuZCBvdGhlcnMgcmVzZW5kIGEKKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAq IG5vbi1hbm9ueW1vdXMgc3Vic2NyaWJlLgrCoMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICovCsKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlcGxpY2FzZXRfZm9yZWFjaChyZXBsaWNhKSB7CsKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN0cnVjdCBhcHBsaWVyICphcHBsaWVyID0g cmVwbGljYS0+YXBwbGllcjsKQEAgLTc5NSwxMiArNzk0LDE0IEBAIGJveF9zZXRfcmVwbGljYXRp b25fYW5vbih2b2lkKQrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhcHBsaWVy X3N0b3AoYXBwbGllcik7CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlcGxp Y2EtPmFwcGxpZXJfc3luY19zdGF0ZSA9IEFQUExJRVJfRElTQ09OTkVDVEVEOwrCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXBsaWNhX3NldF9hcHBsaWVyKHJlcGxpY2EsIGFw cGxpZXIpOwotIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFwcGxpZXJfc3RhcnQo YXBwbGllcik7CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgLyogQ2hvb3NlIGEgbWFzdGVyIHRvIHNlbmQgcmVnaXN0ZXIgcmVxdWVzdCB0by4gKi8KwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgc3RydWN0IHJlcGxpY2EgKm1hc3RlciA9IHJlcGxpY2FzZXRf bGVhZGVyKCk7CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFzc2VydChtYXN0ZXIgIT0gTlVMTCAm JiBtYXN0ZXItPmFwcGxpZXIgIT0gTlVMTCk7CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN0cnVj dCBhcHBsaWVyICptYXN0ZXJfYXBwbGllciA9IG1hc3Rlci0+YXBwbGllcjsKKworIMKgIMKgIMKg IMKgIMKgIMKgIMKgICBhcHBsaWVyX3N0YXJ0KG1hc3Rlcl9hcHBsaWVyKTsKKwrCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBhcHBsaWVyX3Jlc3VtZV90b19zdGF0ZShtYXN0ZXJfYXBwbGllciwgQVBQ TElFUl9SRUdJU1RFUiwgVElNRU9VVF9JTkZJTklUWSk7CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGFwcGxpZXJfcmVzdW1lX3RvX3N0YXRlKG1hc3Rlcl9hcHBsaWVyLCBBUFBMSUVSX1JFR0lTVEVS RUQsIFRJTUVPVVRfSU5GSU5JVFkpOwrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhcHBsaWVyX3Jl c3VtZV90b19zdGF0ZShtYXN0ZXJfYXBwbGllciwgQVBQTElFUl9SRUFEWSwgVElNRU9VVF9JTkZJ TklUWSk7CkBAIC04MTAsOSArODExLDggQEAgYm94X3NldF9yZXBsaWNhdGlvbl9hbm9uKHZvaWQp CsKgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiByZXNlbmQgbm9uLWFub255bW91cyBzdWJzY3Jp YmUuCsKgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKi8KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg cmVwbGljYXNldF9mb3JlYWNoKHJlcGxpY2EpIHsKLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCBpZiAocmVwbGljYSA9PSBtYXN0ZXIgfHwgcmVwbGljYS0+YXBwbGllciA9PSBOVUxM KQotIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbnRpbnVl OwotIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFwcGxpZXJfcmVzdW1lKHJlcGxp Y2EtPmFwcGxpZXIpOworIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICBpZiAocmVw bGljYSAhPSBtYXN0ZXIgJiYgcmVwbGljYS0+YXBwbGllcikKKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAgYXBwbGllcl9zdGFydChyZXBsaWNhLT5hcHBsaWVy KTsKwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQrCoCDCoCDCoCDCoCB9IGVsc2UgaWYgKCFpc19i b3hfY29uZmlndXJlZCkgewrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXBsaWNhdGlvbl9hbm9u ID0gYW5vbjsKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Cgo+Cj4KPldoeSBkbyB5b3UgY2FsbCByZXN1bWUgb24gYWxsIG9mIHRoZW0s IGlmIHlvdSBqdXN0IGNhbGxlZAo+YXBwbGllcl9zdGFydCgpIGFuZCBkaWRuJ3QgY2FsbCBwYXVz ZT8gCgpObyBuZWVkIHRvIGNhbGwgYXBwbGllcl9yZXN1bWUsIHRydWUuIE1lbnRpb25lZCBhYm92 ZS4KCgo+Cj4KPj4gK30gZWxzZSBpZiAoIWlzX2JveF9jb25maWd1cmVkKSB7Cj4+ICtyZXBsaWNh dGlvbl9hbm9uID0gYW5vbjsKPj4gK30gZWxzZSB7Cj4+ICsvKgo+PiArICogSXQgaXMgZm9yYmlk ZGVuIHRvIHR1cm4gYSBub3JtYWwgcmVwbGljYSBpbnRvCj4+ICsgKiBhbiBhbm9ueW1vdXMgb25l Lgo+PiArICovCj4+ICt0bnRfcmFpc2UoQ2xpZW50RXJyb3IsIEVSX0NGRywgInJlcGxpY2F0aW9u X2Fub24iLAo+PiArICAiY2Fubm90IGJlIHR1cm5lZCBvbiBhZnRlciBib290c3RyYXAiCj4+ICsg ICIgaGFzIGZpbmlzaGVkIik7Cj4+ICt9Cj4+ICsKPj4gK30KPj4gKwo+PiAgdm9pZAo+PiAgYm94 X2xpc3Rlbih2b2lkKQo+PiAgewo+PiBAQCAtMTM3OSw2ICsxNDY4LDEzMiBAQCBib3hfcHJvY2Vz c19hdXRoKHN0cnVjdCBhdXRoX3JlcXVlc3QgKnJlcXVlc3QsIGNvbnN0IGNoYXIgKnNhbHQpCj4+ ICBhdXRoZW50aWNhdGUodXNlciwgbGVuLCBzYWx0LCByZXF1ZXN0LT5zY3JhbWJsZSk7Cj4+ICB9 Cj4+IAo+PiArdm9pZAo+PiArYm94X3Byb2Nlc3NfZmV0Y2hfc25hcHNob3Qoc3RydWN0IGV2X2lv ICppbywgc3RydWN0IHhyb3dfaGVhZGVyICpoZWFkZXIpCj4+ICt7Cj4+ICsKPgo+Ni4gRXh0cmEg ZW1wdHkgbGluZS4KCkZpeGVkLgoKPgo+PiArYXNzZXJ0KGhlYWRlci0+dHlwZSA9PSBJUFJPVE9f RkVUQ0hfU05BUFNIT1QpOwo+PiArCj4+ICsvKiBDaGVjayB0aGF0IGJvb3RzdHJhcCBoYXMgYmVl biBmaW5pc2hlZCAqLwo+PiAraWYgKCFpc19ib3hfY29uZmlndXJlZCkKPj4gK3RudF9yYWlzZShD bGllbnRFcnJvciwgRVJfTE9BRElORyk7Cj4+ICsKPj4gKy8qIENoZWNrIHBlcm1pc3Npb25zICov Cj4+ICthY2Nlc3NfY2hlY2tfdW5pdmVyc2VfeGMoUFJJVl9SKTsKPj4gKwo+PiArLyogRm9yYmlk IHJlcGxpY2F0aW9uIHdpdGggZGlzYWJsZWQgV0FMICovCj4+ICtpZiAod2FsX21vZGUoKSA9PSBX QUxfTk9ORSkgewo+PiArdG50X3JhaXNlKENsaWVudEVycm9yLCBFUl9VTlNVUFBPUlRFRCwgIlJl cGxpY2F0aW9uIiwKPj4gKyAgIndhbF9tb2RlID0gJ25vbmUnIik7Cj4+ICt9Cj4+ICsKPj4gK3Nh eV9pbmZvKCJzZW5kaW5nIGN1cnJlbnQgcmVhZC12aWV3IHRvIHJlcGxpY2EgYXQgJXMiLCBzaW9f c29ja2V0bmFtZShpby0+ZmQpKTsKPj4gKwo+PiArLyogU2VuZCB0aGUgc25hcHNob3QgZGF0YSB0 byB0aGUgaW5zdGFuY2UuICovCj4+ICtzdHJ1Y3QgdmNsb2NrIHN0YXJ0X3ZjbG9jazsKPj4gK3Jl bGF5X2luaXRpYWxfam9pbihpby0+ZmQsIGhlYWRlci0+c3luYywgJnN0YXJ0X3ZjbG9jayk7Cj4+ ICtzYXlfaW5mbygicmVhZC12aWV3IHNlbnQuIik7Cj4+ICsKPj4gKy8qIFJlbWVtYmVyIG1hc3Rl cidzIHZjbG9jayBhZnRlciB0aGUgbGFzdCByZXF1ZXN0ICovCj4+ICtzdHJ1Y3QgdmNsb2NrIHN0 b3BfdmNsb2NrOwo+PiArdmNsb2NrX2NvcHkoJnN0b3BfdmNsb2NrLCAmcmVwbGljYXNldC52Y2xv Y2spOwo+PiArCj4+ICsvKiBTZW5kIGVuZCBvZiBzbmFwc2hvdCBkYXRhIG1hcmtlciAqLwo+PiAr c3RydWN0IHhyb3dfaGVhZGVyIHJvdzsKPj4gK3hyb3dfZW5jb2RlX3ZjbG9ja194Yygmcm93LCAm c3RvcF92Y2xvY2spOwo+PiArcm93LnN5bmMgPSBoZWFkZXItPnN5bmM7Cj4+ICtjb2lvX3dyaXRl X3hyb3coaW8sICZyb3cpOwo+PiArfQo+PiArCj4+ICt2b2lkCj4+ICtib3hfcHJvY2Vzc19yZWdp c3RlcihzdHJ1Y3QgZXZfaW8gKmlvLCBzdHJ1Y3QgeHJvd19oZWFkZXIgKmhlYWRlcikKPj4gK3sK Pj4gK2Fzc2VydChoZWFkZXItPnR5cGUgPT0gSVBST1RPX1JFR0lTVEVSKTsKPj4gKwo+PiArc3Ry dWN0IHR0X3V1aWQgaW5zdGFuY2VfdXVpZCA9IHV1aWRfbmlsOwo+PiArc3RydWN0IHZjbG9jayB2 Y2xvY2s7Cj4+ICt4cm93X2RlY29kZV9yZWdpc3Rlcl94YyhoZWFkZXIsICZpbnN0YW5jZV91dWlk LCAmdmNsb2NrKTsKPj4gKwo+PiAraWYgKCFpc19ib3hfY29uZmlndXJlZCkKPj4gK3RudF9yYWlz ZShDbGllbnRFcnJvciwgRVJfTE9BRElORyk7Cj4+ICsKPj4gK2lmICh0dF91dWlkX2lzX2VxdWFs KCZpbnN0YW5jZV91dWlkLCAmSU5TVEFOQ0VfVVVJRCkpCj4+ICt0bnRfcmFpc2UoQ2xpZW50RXJy b3IsIEVSX0NPTk5FQ1RJT05fVE9fU0VMRik7Cj4+ICsKPj4gKy8qIEZvcmJpZCByZXBsaWNhdGlv biBmcm9tIGFuIGFub255bW91cyBpbnN0YW5jZS4gKi8KPj4gK2lmIChyZXBsaWNhdGlvbl9hbm9u KSB7Cj4+ICt0bnRfcmFpc2UoQ2xpZW50RXJyb3IsIEVSX1VOU1VQUE9SVEVELCAiUmVwbGljYXRp b24iLAo+PiArICAicmVwbGljYXRpbmcgZnJvbSBhbiBhbm9ueW1vdXMgaW5zdGFuY2UuIik7Cj4+ ICt9Cj4+ICsKPj4gK2FjY2Vzc19jaGVja191bml2ZXJzZV94YyhQUklWX1IpOwo+PiArLyogV2Ug b25seSBnZXQgcmVnaXN0ZXIgcmVxdWVzdHMgZnJvbSBhbm9ueW1vdXMgaW5zdGFuY2VzLiAqLwo+ PiArc3RydWN0IHJlcGxpY2EgKnJlcGxpY2EgPSByZXBsaWNhX2J5X3V1aWQoJmluc3RhbmNlX3V1 aWQpOwo+PiArYXNzZXJ0KHJlcGxpY2EgPT0gTlVMTCB8fCByZXBsaWNhLT5pZCA9PSBSRVBMSUNB X0lEX05JTCk7Cj4KPjcuIFdoYXQgaWYgSSBzZW5kIGEgbWFsaWNpb3VzIHBhY2tldCB3aXRoIGEg bm90IGV4aXN0aW5nIGluc3RhbmNlCj5VVUlEPwoKRml4ZWQsIHdpbGwgdGhyb3cgYW4gZXJyb3Ig bm93LgoKPgo+PiArLyogU2VlIGJveF9wcm9jZXNzX2pvaW4oKSAqLwo+PiArYm94X2NoZWNrX3dy aXRhYmxlX3hjKCk7Cj4+ICtzdHJ1Y3Qgc3BhY2UgKnNwYWNlID0gc3BhY2VfY2FjaGVfZmluZF94 YyhCT1hfQ0xVU1RFUl9JRCk7Cj4+ICthY2Nlc3NfY2hlY2tfc3BhY2VfeGMoc3BhY2UsIFBSSVZf Vyk7Cj4+ICsKPj4gKy8qIEZvcmJpZCByZXBsaWNhdGlvbiB3aXRoIGRpc2FibGVkIFdBTCAqLwo+ PiAraWYgKHdhbF9tb2RlKCkgPT0gV0FMX05PTkUpIHsKPj4gK3RudF9yYWlzZShDbGllbnRFcnJv ciwgRVJfVU5TVVBQT1JURUQsICJSZXBsaWNhdGlvbiIsCj4+ICsgICJ3YWxfbW9kZSA9ICdub25l JyIpOwo+PiArfQo+PiArCj4+ICsvKgo+PiArICogUmVnaXN0ZXIgdGhlIHJlcGxpY2EgYXMgYSBX QUwgY29uc3VtZXIgc28gdGhhdAo+PiArICogaXQgY2FuIHJlc3VtZSBGSU5BTCBKT0lOIHdoZXJl IElOSVRJQUwgSk9JTiBlbmRzLgo+PiArICovCj4+ICtzdHJ1Y3QgZ2NfY29uc3VtZXIgKmdjID0g Z2NfY29uc3VtZXJfcmVnaXN0ZXIoJnJlcGxpY2FzZXQudmNsb2NrLAo+PiArInJlcGxpY2EgJXMi LCB0dF91dWlkX3N0cigmaW5zdGFuY2VfdXVpZCkpOwo+PiAraWYgKGdjID09IE5VTEwpCj4+ICtk aWFnX3JhaXNlKCk7Cj4+ICthdXRvIGdjX2d1YXJkID0gbWFrZV9zY29wZWRfZ3VhcmQoWyZdIHsg Z2NfY29uc3VtZXJfdW5yZWdpc3RlcihnYyk7IH0pOwo+PiArCj4+ICtzYXlfaW5mbygicmVnaXN0 ZXJpbmcgcmVwbGljYSAlcyBhdCAlcyIsCj4+ICsgdHRfdXVpZF9zdHIoJmluc3RhbmNlX3V1aWQp LCBzaW9fc29ja2V0bmFtZShpby0+ZmQpKTsKPj4gKwo+PiArc3RydWN0IHZjbG9jayBzdGFydF92 Y2xvY2s7Cj4+ICt2Y2xvY2tfY29weSgmc3RhcnRfdmNsb2NrLCAmcmVwbGljYXNldC52Y2xvY2sp Owo+PiArCj4+ICsvKioKPj4gKyAqIENhbGwgdGhlIHNlcnZlci1zaWRlIGhvb2sgd2hpY2ggc3Rv cmVzIHRoZSByZXBsaWNhIHV1aWQKPj4gKyAqIGluIF9jbHVzdGVyIHNwYWNlLgo+PiArICovCj4+ ICtib3hfb25fam9pbigmaW5zdGFuY2VfdXVpZCk7Cj4+ICsKPj4gK0VSUk9SX0lOSkVDVF9ZSUVM RChFUlJJTkpfUkVQTElDQV9KT0lOX0RFTEFZKTsKPj4gKwo+PiArLyogUmVtZW1iZXIgbWFzdGVy J3MgdmNsb2NrIGFmdGVyIHRoZSBsYXN0IHJlcXVlc3QgKi8KPj4gK3N0cnVjdCB2Y2xvY2sgc3Rv cF92Y2xvY2s7Cj4+ICt2Y2xvY2tfY29weSgmc3RvcF92Y2xvY2ssICZyZXBsaWNhc2V0LnZjbG9j ayk7Cj4+ICsKPj4gKy8qCj4+ICsgKiBGZWVkIHJlcGxpY2Egd2l0aCBXQUxzIGluIHJhbmdlIChz dGFydF92Y2xvY2ssIHN0b3BfdmNsb2NrKQo+PiArICogc28gdGhhdCBpdCBnZXRzIGl0cyByZWdp c3RyYXRpb24uCj4+ICsgKi8KPgo+OC4gTGV0cyBrZWVwIDY2IGJvcmRlci4KCkZpeGVkLgoKPgo+ PiArcmVsYXlfZmluYWxfam9pbihpby0+ZmQsIGhlYWRlci0+c3luYywgJnN0YXJ0X3ZjbG9jaywg JnN0b3BfdmNsb2NrKTsKPj4gK3NheV9pbmZvKCJmaW5hbCBkYXRhIHNlbnQuIik7Cj4+ICsKPj4g K3N0cnVjdCB4cm93X2hlYWRlciByb3c7Cj4+ICsvKiBTZW5kIGVuZCBvZiBXQUwgc3RyZWFtIG1h cmtlciAqLwo+PiAreHJvd19lbmNvZGVfdmNsb2NrX3hjKCZyb3csICZyZXBsaWNhc2V0LnZjbG9j ayk7Cj4+ICtyb3cuc3luYyA9IGhlYWRlci0+c3luYzsKPj4gK2NvaW9fd3JpdGVfeHJvdyhpbywg JnJvdyk7Cj4+ICsKPj4gKy8qCj4+ICsgKiBBZHZhbmNlIHRoZSBXQUwgY29uc3VtZXIgc3RhdGUg dG8gdGhlIHBvc2l0aW9uIHdoZXJlCj4+ICsgKiBGSU5BTCBKT0lOIGVuZGVkIGFuZCBhc3NpZ24g aXQgdG8gdGhlIHJlcGxpY2EuCj4+ICsgKi8KPj4gK2djX2NvbnN1bWVyX2FkdmFuY2UoZ2MsICZz dG9wX3ZjbG9jayk7Cj4+ICtyZXBsaWNhID0gcmVwbGljYV9ieV91dWlkKCZpbnN0YW5jZV91dWlk KTsKPj4gK2lmIChyZXBsaWNhLT5nYyAhPSBOVUxMKQo+PiArZ2NfY29uc3VtZXJfdW5yZWdpc3Rl cihyZXBsaWNhLT5nYyk7Cj4KPjkuIEhvdyBpcyB0aGF0IHBvc3NpYmxlIHRoYXQgdGhlIGZvcm1l ciBhbm9uIHJlcGxpY2EgaGFzIGdjPwoKQW5vbiByZXBsaWNhIHJlY2VpdmVzIGEgZ2MgcmVnaXN0 cmF0aW9uIGluIHJlcGxpY2Ffc2V0X2lkLCB3aGljaCBpcyBjYWxsZWQKYWJvdmUuIFNvIEkgY2Fu IHJlbW92ZSB0aGlzIHBpZWNlIG9mIGNvZGUgYWx0b2dldGhlci4gQnV0IEkgZG9uJ3Qga25vdyB3 aGV0aGVyCkkgc2hvdWxkIGRvIGl0IG9yIG5vdC4gSXQgc2VlbXMgbW9yZSB2ZXJib3NlIGlmIEkg bGVhdmUgdGhpcyBwYXJ0IGNvbnNpc3RlbnQgd2l0aApib3hfcHJvY2Vzc19qb2luLiBPdGhlcndp c2UgaXQncyBub3QgY2xlYXIgd2hlcmUgZG9lcyB0aGUgcmVwbGljYSByZWNlaXZlIHRoZQpnYyBy ZWdpc3RyYXRpb24uCkFub3RoZXIgb3B0aW9uIGlzIHRvIHJlbW92ZSB0aGUgcGllY2UgYW5kIGFk ZCBhIGNvbW1lbnQgc3RhdGluZyB0aGF0IHByZXZpb3VzbHkKYW5vbiByZXBsaWNhIGlzIHJlZ2lz dGVyZWQgd2l0aCBnYyBpbiBfY2x1c3RlciBvbl9jb21taXQgdHJpZ2dlci4KV2hpY2ggb25lIGRv IHlvdSBwcmVmZXI/IEkndmUgbGVmdCB0aGUgY3VycmVudCB2YXJpYW50IGludGFjdCBmb3Igbm93 LgoKPgo+PiArcmVwbGljYS0+Z2MgPSBnYzsKPj4gK2djX2d1YXJkLmlzX2FjdGl2ZSA9IGZhbHNl Owo+PiArfQo+PiArCj4+ICB2b2lkCj4+ICBib3hfcHJvY2Vzc19qb2luKHN0cnVjdCBldl9pbyAq aW8sIHN0cnVjdCB4cm93X2hlYWRlciAqaGVhZGVyKQo+PiAgewo+PiBAQCAtMTUzMywyNyArMTc1 NCwzOSBAQCBib3hfcHJvY2Vzc19zdWJzY3JpYmUoc3RydWN0IGV2X2lvICppbywgc3RydWN0IHhy b3dfaGVhZGVyICpoZWFkZXIpCj4+ICBpZiAoIWlzX2JveF9jb25maWd1cmVkKQo+PiAgdG50X3Jh aXNlKENsaWVudEVycm9yLCBFUl9MT0FESU5HKTsKPj4gCj4+ICsKPgo+MTAuIEV4dHJhIGVtcHR5 IGxpbmUuCgpGaXhlZC4KCj4KPj4gIHN0cnVjdCB0dF91dWlkIHJlcGxpY2FfdXVpZCA9IHV1aWRf bmlsOwo+PiAgc3RydWN0IHZjbG9jayByZXBsaWNhX2Nsb2NrOwo+PiAgdWludDMyX3QgcmVwbGlj YV92ZXJzaW9uX2lkOwo+PiAgdmNsb2NrX2NyZWF0ZSgmcmVwbGljYV9jbG9jayk7Cj4+ICtib29s IGFub247Cj4+ICB4cm93X2RlY29kZV9zdWJzY3JpYmVfeGMoaGVhZGVyLCBOVUxMLCAmcmVwbGlj YV91dWlkLAo+PiAtICZyZXBsaWNhX2Nsb2NrLCAmcmVwbGljYV92ZXJzaW9uX2lkKTsKPj4gKyAm cmVwbGljYV9jbG9jaywgJnJlcGxpY2FfdmVyc2lvbl9pZCwgJmFub24pOwo+PiAKPj4gIC8qIEZv cmJpZCBjb25uZWN0aW9uIHRvIGl0c2VsZiAqLwo+PiAgaWYgKHR0X3V1aWRfaXNfZXF1YWwoJnJl cGxpY2FfdXVpZCwgJklOU1RBTkNFX1VVSUQpKQo+PiAgdG50X3JhaXNlKENsaWVudEVycm9yLCBF Ul9DT05ORUNUSU9OX1RPX1NFTEYpOwo+PiAKPj4gKy8qIEZvcmJpZCByZXBsaWNhdGlvbiBmcm9t IGFuIGFub255bW91cyBpbnN0YW5jZS4gKi8KPj4gK2lmIChyZXBsaWNhdGlvbl9hbm9uKSB7Cj4+ ICt0bnRfcmFpc2UoQ2xpZW50RXJyb3IsIEVSX1VOU1VQUE9SVEVELCAiUmVwbGljYXRpb24iLAo+ PiArICAicmVwbGljYXRpbmcgZnJvbSBhbiBhbm9ueW1vdXMgaW5zdGFuY2UuIik7Cj4+ICt9Cj4+ ICsKPj4gIC8qIENoZWNrIHBlcm1pc3Npb25zICovCj4+ICBhY2Nlc3NfY2hlY2tfdW5pdmVyc2Vf eGMoUFJJVl9SKTsKPj4gCj4+ICAvKiBDaGVjayByZXBsaWNhIHV1aWQgKi8KPj4gIHN0cnVjdCBy ZXBsaWNhICpyZXBsaWNhID0gcmVwbGljYV9ieV91dWlkKCZyZXBsaWNhX3V1aWQpOwo+PiAtaWYg KHJlcGxpY2EgPT0gTlVMTCB8fCByZXBsaWNhLT5pZCA9PSBSRVBMSUNBX0lEX05JTCkgewo+PiAr Cj4+ICtpZiAoIWFub24gJiYgKHJlcGxpY2EgPT0gTlVMTCB8fCByZXBsaWNhLT5pZCA9PSBSRVBM SUNBX0lEX05JTCkpIHsKPj4gIHRudF9yYWlzZShDbGllbnRFcnJvciwgRVJfVU5LTk9XTl9SRVBM SUNBLAo+PiAgICB0dF91dWlkX3N0cigmcmVwbGljYV91dWlkKSwKPj4gICAgdHRfdXVpZF9zdHIo JlJFUExJQ0FTRVRfVVVJRCkpOwo+PiAgfQo+PiAraWYgKHJlcGxpY2EgPT0gTlVMTCkgewo+PiAr cmVwbGljYSA9IHJlcGxpY2FzZXRfYWRkX2Fub24oJnJlcGxpY2FfdXVpZCk7Cj4+ICt9Cj4KPjEx LiBJIHByb3Bvc2UgdG8gb21pdCB7fSB3aGVuICdpZicgYm9keSBjb25zaXN0cyBvZiBvbmUgbGlu ZS4KPkluIGFsbCBwbGFjZXMsIGluIGFsbCBjb21taXRzLgoKTm8gcHJvYmxlbS4KCj4KPj4gCj4+ ICAvKiBEb24ndCBhbGxvdyBtdWx0aXBsZSByZWxheXMgZm9yIHRoZSBzYW1lIHJlcGxpY2EgKi8K Pj4gIGlmIChyZWxheV9nZXRfc3RhdGUocmVwbGljYS0+cmVsYXkpID09IFJFTEFZX0ZPTExPVykg ewo+PiBAQCAtMTc3NCwxMyArMjAwNywxNiBAQCBib290c3RyYXBfZnJvbV9tYXN0ZXIoc3RydWN0 IHJlcGxpY2EgKm1hc3RlcikKPj4gICAqLwo+PiAKPj4gIGFzc2VydCghdHRfdXVpZF9pc19uaWwo JklOU1RBTkNFX1VVSUQpKTsKPj4gLWFwcGxpZXJfcmVzdW1lX3RvX3N0YXRlKGFwcGxpZXIsIEFQ UExJRVJfSU5JVElBTF9KT0lOLCBUSU1FT1VUX0lORklOSVRZKTsKPj4gLQo+PiArZW51bSBhcHBs aWVyX3N0YXRlIHdhaXRfc3RhdGUgPSByZXBsaWNhdGlvbl9hbm9uID8gQVBQTElFUl9GRVRDSF9T TkFQU0hPVCA6Cj4+ICsgICAgICBBUFBMSUVSX0lOSVRJQUxfSk9JTjsKPj4gK2FwcGxpZXJfcmVz dW1lX3RvX3N0YXRlKGFwcGxpZXIsIHdhaXRfc3RhdGUsIFRJTUVPVVRfSU5GSU5JVFkpOwo+PiAg LyoKPj4gICAqIFByb2Nlc3MgaW5pdGlhbCBkYXRhIChzbmFwc2hvdCBvciBkaXJ0eSBkaXNrIGRh dGEpLgo+PiAgICovCj4+ICBlbmdpbmVfYmVnaW5faW5pdGlhbF9yZWNvdmVyeV94YyhOVUxMKTsK Pj4gLWFwcGxpZXJfcmVzdW1lX3RvX3N0YXRlKGFwcGxpZXIsIEFQUExJRVJfRklOQUxfSk9JTiwg VElNRU9VVF9JTkZJTklUWSk7Cj4+ICt3YWl0X3N0YXRlID0gcmVwbGljYXRpb25fYW5vbiA/IEFQ UExJRVJfRkVUQ0hFRF9TTkFQU0hPVCA6Cj4+ICsgICBBUFBMSUVSX0ZJTkFMX0pPSU47Cj4+ICth cHBsaWVyX3Jlc3VtZV90b19zdGF0ZShhcHBsaWVyLCB3YWl0X3N0YXRlLCBUSU1FT1VUX0lORklO SVRZKTsKPgo+MTIuIFBsZWFzZSwgZml4IGluZGVudGF0aW9uIGFuZCBrZWVwIDgwIGJvcmRlciBp biB0aGlzCj5odW5rLgoKRG9uZS4KCj4KPj4gCj4+ICAvKgo+PiAgICogUHJvY2VzcyBmaW5hbCBk YXRhIChXQUxzKS4+IGRpZmYgLS1naXQgYS9zcmMvYm94L2lwcm90b19jb25zdGFudHMuaCBiL3Ny Yy9ib3gvaXByb3RvX2NvbnN0YW50cy5oCj4+IGluZGV4IDVlOGE3ZDQ4My4uY2M4ZGQ3Y2Q3IDEw MDY0NAo+PiAtLS0gYS9zcmMvYm94L2lwcm90b19jb25zdGFudHMuaAo+PiArKysgYi9zcmMvYm94 L2lwcm90b19jb25zdGFudHMuaAo+PiBAQCAtMjE2LDYgKzIxOCwxMCBAQCBlbnVtIGlwcm90b190 eXBlIHsKPj4gIElQUk9UT19WT1RFX0RFUFJFQ0FURUQgPSA2NywKPj4gIC8qKiBWb3RlIHJlcXVl c3QgY29tbWFuZCBmb3IgbWFzdGVyIGVsZWN0aW9uICovCj4+ICBJUFJPVE9fVk9URSA9IDY4LAo+ PiArLyoqIEFub255bW91cyByZXBsaWNhdGlvbiBGRVRDSCBTTkFQU0hPVCAqLwo+PiArSVBST1RP X0ZFVENIX1NOQVBTSE9UID0gNjksCj4+ICsvKiogUkVHSVNURVIgcmVxdWVzdCB0byBsZWF2ZSBh bm9ueW1vdXMgcmVwbGljYXRpb24gKi8KPgo+MTMuIFBsZWFzZSwga2VlcCA2NiBhbmQgcHV0IGEg ZG90IGluIHRoZSBlbmQgb2Ygc2VudGVuY2UuCgpEb25lLgoKPgo+PiArSVBST1RPX1JFR0lTVEVS ID0gNzAsCj4+IAo+PiAgLyoqIFZpbnlsIHJ1biBpbmZvIHN0b3JlZCBpbiAuaW5kZXggZmlsZSAq Lwo+PiAgVllfSU5ERVhfUlVOX0lORk8gPSAxMDAsCj4+IGRpZmYgLS1naXQgYS9zcmMvYm94L3Jl bGF5LmNjIGIvc3JjL2JveC9yZWxheS5jYwo+PiBpbmRleCBlODQ5ZmNmNGYuLjE0NjQ0NzE2ZCAx MDA2NDQKPj4gLS0tIGEvc3JjL2JveC9yZWxheS5jYwo+PiArKysgYi9zcmMvYm94L3JlbGF5LmNj Cj4+IEBAIC01NjksMTEgKzU2OSwxNyBAQCByZWxheV9zdWJzY3JpYmVfZih2YV9saXN0IGFwKQo+ PiAgY2J1c19wYWlyKCJ0eCIsIHJlbGF5LT5lbmRwb2ludC5uYW1lLCAmcmVsYXktPnR4X3BpcGUs Cj4+ICAgICZyZWxheS0+cmVsYXlfcGlwZSwgTlVMTCwgTlVMTCwgY2J1c19wcm9jZXNzKTsKPj4g Cj4+IC0vKiBTZXR1cCBnYXJiYWdlIGNvbGxlY3Rpb24gdHJpZ2dlci4gKi8KPj4gKy8qCj4+ICsg KiBTZXR1cCBnYXJiYWdlIGNvbGxlY3Rpb24gdHJpZ2dlci4KPj4gKyAqIE5vdCBuZWVkZWQgZm9y IGFub255bW91cyByZXBsaWNhcywgc2luY2UgdGhleQo+PiArICogYXJlbid0IHJlZ2lzdGVyZWQg d2l0aCBnYyBhdCBhbGwuCj4+ICsgKi8KPgo+MTQuIElmIGEgbWFzdGVyIGRvZXMgbm90IHJlZ2lz dGVyIGFuIGFub24gcmVwbGljYSBhcyBhIGdjIGNvbnN1bWVyLAo+aXQgd2lsbCByZW1vdmUgeGxv Z3MgZXZlbiBpZiB0aGUgcmVwbGljYSBkaWRuJ3QgZ2V0IHRoZW0geWV0LiBOb3QKPnN1cmUsIGlm IHdlIHdhbnQgdGhhdCBiZWhhdmlvdXIuIEFGQUlVLCBwdXJwb3NlIG9mIGFub24gcmVwbGljYXMK PmlzIHRvIGJyZWFrIHRoZSBsaW1pdCBvbiB2bG9jayBzaXplIGFib3V0IDMyIGluc3RhbmNlcyBv bmx5LgoKVHJ1ZSwgYnV0IGlmIHdlIGRvIHJlZ2lzdGVyIHJlcGxpY2FzIGFzIGdjIGNvbnN1bWVy cyB0aGVyZSBpcyBubyB3YXkKdG8gZXhjbHVkZSB0aGVtLCBzbyBzdWNoIGEgcmVwbGljYSwgaW4g Y2FzZSBvZiBmYWlsdXJlLCB3aWxsIHN0YWxsIGdjIG9uIG1hc3Rlcgpmb3JldmVyLiBXZSBuZWVk IHNvbWUgbWVjaGFuaXNtLCB0byByZW1vdmUgYW5vbnltb3VzIHJlcGxpY2FzIGZyb20gZ2MKY29u c3VtZXJzLiBOb3JtYWwgcmVwbGljYXMgY2FuIGJlIHJlbW92ZWQgYnkgZGVsZXRpbmcgdGhlaXIg ZW50cmllcyBmcm9tCl9jbHVzdGVyLCB3ZSBjYW5ub3QgZG8gdGhpcyBmb3IgYW5vbnltb3VzIHJl cGxpY2FzLiBBbmQgaWYgd2UganVzdCByZW1vdmUKcmVwbGljYSBmcm9tIGdjIGNvbnN1bWVyIG9u IGV2ZXJ5IGRpc2Nvbm5lY3QsIHRoZXJlIGlzIG5vIHBvaW50IGluIHJlZ2lzdGVyaW5nCml0IHdp dGggZ2MgYXQgYWxsLCBzaW5jZSB0aGUgcG9pbnQgb2YgZ2MgY29uc3VtZXIsIGFtb25nIG90aGVy cywgaXMgdG8gd2FpdCBmb3IKZGVhZCByZXBsaWNhcyB0byByZWNvbm5lY3QgYW5kIGNvbGxlY3Qg eGxvZ3MuCgo+Cj4+ICBzdHJ1Y3QgdHJpZ2dlciBvbl9jbG9zZV9sb2cgPSB7Cj4+ICBSTElTVF9M SU5LX0lOSVRJQUxJWkVSLCByZWxheV9vbl9jbG9zZV9sb2dfZiwgcmVsYXksIE5VTEwKPj4gIH07 Cj4+IC10cmlnZ2VyX2FkZCgmci0+b25fY2xvc2VfbG9nLCAmb25fY2xvc2VfbG9nKTsKPj4gK2lm ICghcmVsYXktPnJlcGxpY2EtPmFub24pIHsKPj4gK3RyaWdnZXJfYWRkKCZyLT5vbl9jbG9zZV9s b2csICZvbl9jbG9zZV9sb2cpOwo+PiArfQo+PiAKPj4gIC8qIFNldHVwIFdBTCB3YXRjaGVyIGZv ciBzZW5kaW5nIG5ldyByb3dzIHRvIHRoZSByZXBsaWNhLiAqLwo+PiAgd2FsX3NldF93YXRjaGVy KCZyZWxheS0+d2FsX3dhdGNoZXIsIHJlbGF5LT5lbmRwb2ludC5uYW1lLAo+PiBkaWZmIC0tZ2l0 IGEvc3JjL2JveC94cm93LmMgYi9zcmMvYm94L3hyb3cuYwo+PiBpbmRleCAxOGJmMDg5NzEuLjM3 YTU2NWJjYiAxMDA2NDQKPj4gLS0tIGEvc3JjL2JveC94cm93LmMKPj4gKysrIGIvc3JjL2JveC94 cm93LmMKPj4gQEAgLTExODIsNyArMTIxMyw3IEBAIHhyb3dfZW5jb2RlX3N1YnNjcmliZShzdHJ1 Y3QgeHJvd19oZWFkZXIgKnJvdywKPj4gIGludAo+PiAgeHJvd19kZWNvZGVfc3Vic2NyaWJlKHN0 cnVjdCB4cm93X2hlYWRlciAqcm93LCBzdHJ1Y3QgdHRfdXVpZCAqcmVwbGljYXNldF91dWlkLAo+ PiAgICAgICAgc3RydWN0IHR0X3V1aWQgKmluc3RhbmNlX3V1aWQsIHN0cnVjdCB2Y2xvY2sgKnZj bG9jaywKPj4gLSAgICAgIHVpbnQzMl90ICp2ZXJzaW9uX2lkKQo+PiArICAgICAgdWludDMyX3Qg KnZlcnNpb25faWQsIGJvb2wgKmFub24pCj4+ICB7Cj4+ICBpZiAocm93LT5ib2R5Y250ID09IDAp IHsKPj4gIGRpYWdfc2V0KENsaWVudEVycm9yLCBFUl9JTlZBTElEX01TR1BBQ0ssICJyZXF1ZXN0 IGJvZHkiKTsKPj4gQEAgLTEyNDUsNiArMTI3NiwxNiBAQCB4cm93X2RlY29kZV9zdWJzY3JpYmUo c3RydWN0IHhyb3dfaGVhZGVyICpyb3csIHN0cnVjdCB0dF91dWlkICpyZXBsaWNhc2V0X3V1aWQs Cj4+ICB9Cj4+ICAqdmVyc2lvbl9pZCA9IG1wX2RlY29kZV91aW50KCZkKTsKPj4gIGJyZWFrOwo+ PiArY2FzZSBJUFJPVE9fUkVQTElDQV9BTk9OOgo+PiAraWYgKGFub24gPT0gTlVMTCkKPj4gK2dv dG8gc2tpcDsKPj4gK2lmIChtcF90eXBlb2YoKmQpICE9IE1QX0JPT0wpIHsKPj4gK3hyb3dfb25f ZGVjb2RlX2VycihkYXRhLCBlbmQsIEVSX0lOVkFMSURfTVNHUEFDSywKPj4gKyAgICJpbnZhbGlk IFJFUExJQ0FfQU5PTiBmbGFnIik7Cj4+ICtyZXR1cm4gLTE7Cj4+ICt9Cj4+ICsqYW5vbiA9IG1w X2RlY29kZV9ib29sKCZkKTsKPgo+MTUuIEFub24gaXMgbm90IGluaXRpYWxpemVkIGluIGNhc2Ug SVBST1RPX1JFUExJQ0FfQU5PTiB3YXMgbm90IHNwZWNpZmllZC4KPmJveF9wcm9jZXNzX3N1YnNj cmliZSgpIGNhbiBmYWlsIG9uIHRoYXQsIGJlY2F1c2UgaXQgcGFzc2VzIGEgbm90IGluaXRpYWxp emVkCj5hbm9uIHZhcmlhYmxlIHRvIHhyb3dfZGVjb2RlX3N1YnNjcmliZSgpLgoKRml4ZWQuCgo+ Cj4+ICticmVhazsKPj4gIGRlZmF1bHQ6IHNraXA6Cj4+ICBtcF9uZXh0KCZkKTsgLyogdmFsdWUg Ki8KPj4gIH0KPj4gZGlmZiAtLWdpdCBhL3Rlc3QvcmVwbGljYXRpb24vYW5vbi5yZXN1bHQgYi90 ZXN0L3JlcGxpY2F0aW9uL2Fub24ucmVzdWx0Cj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGlu ZGV4IDAwMDAwMDAwMC4uZGY4NDQ4NGIyCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvdGVzdC9y ZXBsaWNhdGlvbi9hbm9uLnJlc3VsdAo+PiBAQCAtMCwwICsxLDI1OSBAQAo+PiArLS0gdGVzdC1y dW4gcmVzdWx0IGZpbGUgdmVyc2lvbiAyCj4+ICtlbnYgPSByZXF1aXJlKCd0ZXN0X3J1bicpCj4+ ICsgfCAtLS0KPj4gKyB8IC4uLgo+PiArdmNsb2NrX2RpZmYgPSByZXF1aXJlKCdmYXN0X3JlcGxp Y2EnKS52Y2xvY2tfZGlmZgo+PiArIHwgLS0tCj4+ICsgfCAuLi4KPj4gK3Rlc3RfcnVuID0gZW52 Lm5ldygpCj4+ICsgfCAtLS0KPj4gKyB8IC4uLgo+PiArCj4+ICstLSBwcmVwYXJlIG1hc3Rlcgo+ Cj4xNi4gTGV0cyBnaXZlIGEgcmVmZXJlbmNlIHRvIHRoZSB0aWNrZXQsIGFuZCB1c2UgY2FwaXRh bCBsZXR0ZXJzCj4rIGRvdHMgaW4gYWxsIHRoZSBzZW50ZW5jZXMuCgpEb25lLgoKPgo+PiArYm94 LnNjaGVtYS51c2VyLmdyYW50KCdndWVzdCcsICdyZXBsaWNhdGlvbicpCj4+ICsgfCAtLS0KPj4g KyB8IC4uLgo+PiArXyA9IGJveC5zY2hlbWEuc3BhY2UuY3JlYXRlKCdsb2MnLCB7aXNfbG9jYWw9 dHJ1ZX0pCj4+ICsgfCAtLS0KPj4gKyB8IC4uLgo+PiArXyA9IGJveC5zY2hlbWEuc3BhY2UuY3Jl YXRlKCd0ZW1wJywge3RlbXBvcmFyeT10cnVlfSkKPj4gKyB8IC0tLQo+PiArIHwgLi4uCj4+ICtf ID0gYm94LnNjaGVtYS5zcGFjZS5jcmVhdGUoJ3Rlc3QnKQo+PiArIHwgLS0tCj4+ICsgfCAuLi4K Pj4gK18gPSBib3guc3BhY2UubG9jOmNyZWF0ZV9pbmRleCgncGsnKQo+PiArIHwgLS0tCj4+ICsg fCAuLi4KPj4gK18gPSBib3guc3BhY2UudGVtcDpjcmVhdGVfaW5kZXgoJ3BrJykKPj4gKyB8IC0t LQo+PiArIHwgLi4uCj4+ICtfID0gYm94LnNwYWNlLnRlc3Q6Y3JlYXRlX2luZGV4KCdwaycpCj4+ ICsgfCAtLS0KPj4gKyB8IC4uLgo+PiArYm94LnNwYWNlLnRlc3Q6aW5zZXJ0ezF9Cj4+ICsgfCAt LS0KPj4gKyB8IC0gWzFdCj4+ICsgfCAuLi4KPj4gKwo+PiArdGVzdF9ydW46Y21kKCdjcmVhdGUg c2VydmVyIHJlcGxpY2FfYW5vbiB3aXRoIHJwbF9tYXN0ZXI9ZGVmYXVsdCwgc2NyaXB0PSJyZXBs aWNhdGlvbi9hbm9uLmx1YSInKQo+PiArIHwgLS0tCj4+ICsgfCAtIHRydWUKPj4gKyB8IC4uLgo+ PiArdGVzdF9ydW46Y21kKCdzdGFydCBzZXJ2ZXIgcmVwbGljYV9hbm9uJykKPj4gKyB8IC0tLQo+ PiArIHwgLSB0cnVlCj4+ICsgfCAuLi4KPj4gK3Rlc3RfcnVuOmNtZCgnc3dpdGNoIHJlcGxpY2Ff YW5vbicpCj4+ICsgfCAtLS0KPj4gKyB8IC0gdHJ1ZQo+PiArIHwgLi4uCj4+ICsKPj4gK2JveC5p bmZvLnN0YXR1cwo+PiArIHwgLS0tCj4+ICsgfCAtIHJ1bm5pbmcKPj4gKyB8IC4uLgo+PiArYm94 LmluZm8uaWQKPj4gKyB8IC0tLQo+PiArIHwgLSAwCj4+ICsgfCAuLi4KPj4gK2JveC5pbmZvLmxz bgo+PiArIHwgLS0tCj4+ICsgfCAtIDAKPj4gKyB8IC4uLgo+PiArdGVzdF9ydW46d2FpdF91cHN0 cmVhbSgxLCB7c3RhdHVzPSdmb2xsb3cnfSkKPj4gKyB8IC0tLQo+PiArIHwgLSB0cnVlCj4+ICsg fCAuLi4KPj4gKwo+PiArLS0gVGVtcG9yYXJ5IHNwYWNlcyBhcmUgYWNjZXNzaWJsZSBhcyByZWFk IC8gd3JpdGUuCj4+ICtmb3IgaSA9IDEsMTAgZG8gYm94LnNwYWNlLnRlbXA6aW5zZXJ0e2l9IGVu ZAo+PiArIHwgLS0tCj4+ICsgfCAuLi4KPj4gK2JveC5zcGFjZS50ZW1wOnNlbGVjdHt9Cj4+ICsg fCAtLS0KPj4gKyB8IC0gLSBbMV0KPj4gKyB8ICAgLSBbMl0KPj4gKyB8ICAgLSBbM10KPj4gKyB8 ICAgLSBbNF0KPj4gKyB8ICAgLSBbNV0KPj4gKyB8ICAgLSBbNl0KPj4gKyB8ICAgLSBbN10KPj4g KyB8ICAgLSBbOF0KPj4gKyB8ICAgLSBbOV0KPj4gKyB8ICAgLSBbMTBdCj4+ICsgfCAuLi4KPj4g Kwo+PiArYm94LmluZm8ubHNuCj4+ICsgfCAtLS0KPj4gKyB8IC0gMAo+PiArIHwgLi4uCj4+ICsK Pj4gKy0tIFNhbWUgZm9yIGxvY2FsIHNwYWNlcy4KPj4gK2ZvciBpID0gMSwxMCBkbyBib3guc3Bh Y2UubG9jOmluc2VydHtpfSBlbmQKPj4gKyB8IC0tLQo+PiArIHwgLi4uCj4+ICtib3guc3BhY2Uu bG9jOnNlbGVjdHt9Cj4+ICsgfCAtLS0KPj4gKyB8IC0gLSBbMV0KPj4gKyB8ICAgLSBbMl0KPj4g KyB8ICAgLSBbM10KPj4gKyB8ICAgLSBbNF0KPj4gKyB8ICAgLSBbNV0KPj4gKyB8ICAgLSBbNl0K Pj4gKyB8ICAgLSBbN10KPj4gKyB8ICAgLSBbOF0KPj4gKyB8ICAgLSBbOV0KPj4gKyB8ICAgLSBb MTBdCj4+ICsgfCAuLi4KPj4gKwo+PiArLS0gUmVwbGljYS1sb2NhbCBjaGFuZ2VzIGFyZSBhY2Nv dW50ZWQgZm9yIGluIDAgdmNsb2NrIGNvbXBvbmVudC4KPj4gK2JveC5pbmZvLmxzbgo+PiArIHwg LS0tCj4+ICsgfCAtIDEwCj4+ICsgfCAuLi4KPj4gK2JveC5pbmZvLnZjbG9ja1swXQo+PiArIHwg LS0tCj4+ICsgfCAtIDEwCj4+ICsgfCAuLi4KPj4gKwo+PiArLS0gUmVwbGljYSBpcyByZWFkLW9u bHkuCj4+ICtib3guY2ZnLnJlYWRfb25seQo+PiArIHwgLS0tCj4+ICsgfCAtIHRydWUKPj4gKyB8 IC4uLgo+PiArYm94LmNmZ3tyZWFkX29ubHk9ZmFsc2V9Cj4+ICsgfCAtLS0KPj4gKyB8IC0gZXJy b3I6ICdJbmNvcnJlY3QgdmFsdWUgZm9yIG9wdGlvbiAnJ3JlYWRfb25seScnOiB0aGUgdmFsdWUg bWF5IGJlIHNldCB0byBmYWxzZQo+PiArIHwgICAgIG9ubHkgd2hlbiByZXBsaWNhdGlvbl9hbm9u IGlzIGZhbHNlJwo+PiArIHwgLi4uCj4+ICsKPj4gK2JveC5zcGFjZS50ZXN0Omluc2VydHsyfQo+ PiArIHwgLS0tCj4+ICsgfCAtIGVycm9yOiBDYW4ndCBtb2RpZnkgZGF0YSBiZWNhdXNlIHRoaXMg aW5zdGFuY2UgaXMgaW4gcmVhZC1vbmx5IG1vZGUuCj4+ICsgfCAuLi4KPj4gKwo+PiArYm94LnNw YWNlLmxvYzpkcm9wKCkKPj4gKyB8IC0tLQo+PiArIHwgLSBlcnJvcjogQ2FuJ3QgbW9kaWZ5IGRh dGEgYmVjYXVzZSB0aGlzIGluc3RhbmNlIGlzIGluIHJlYWQtb25seSBtb2RlLgo+PiArIHwgLi4u Cj4+ICtib3guc3BhY2UubG9jOnRydW5jYXRlKCkKPj4gKyB8IC0tLQo+PiArIHwgLSBlcnJvcjog Q2FuJ3QgbW9kaWZ5IGRhdGEgYmVjYXVzZSB0aGlzIGluc3RhbmNlIGlzIGluIHJlYWQtb25seSBt b2RlLgo+PiArIHwgLi4uCj4+ICsKPj4gK3Rlc3RfcnVuOmNtZCgnc3dpdGNoIGRlZmF1bHQnKQo+ PiArIHwgLS0tCj4+ICsgfCAtIHRydWUKPj4gKyB8IC4uLgo+PiArCj4+ICstLSBSZXBsaWNhIGlz bid0IHZpc2libGUgb24gbWFzdGVyLgo+PiArI2JveC5pbmZvLnJlcGxpY2F0aW9uCj4+ICsgfCAt LS0KPj4gKyB8IC0gMQo+PiArIHwgLi4uCj4+ICsKPj4gK3Rlc3RfcnVuOmNtZCgnc3dpdGNoIHJl cGxpY2FfYW5vbicpCj4+ICsgfCAtLS0KPj4gKyB8IC0gdHJ1ZQo+PiArIHwgLi4uCj4+ICsKPj4g Ky0tIFByb21vdGUgYW5vbnltb3VzIHJlcGxpY2EuCj4+ICtib3guY2Zne3JlcGxpY2F0aW9uX2Fu b249ZmFsc2V9Cj4+ICsgfCAtLS0KPj4gKyB8IC4uLgo+PiArLS0gQ2Fubm90IHN3aXRjaCBiYWNr IGFmdGVyIGJlY29taW5nICJub3JtYWwiLgo+PiArYm94LmNmZ3tyZXBsaWNhdGlvbl9hbm9uPXRy dWV9Cj4+ICsgfCAtLS0KPj4gKyB8IC0gZXJyb3I6ICdJbmNvcnJlY3QgdmFsdWUgZm9yIG9wdGlv biAnJ3JlcGxpY2F0aW9uX2Fub24nJzogY2Fubm90IGJlIHR1cm5lZCBvbiBhZnRlcgo+PiArIHwg ICAgIGJvb3RzdHJhcCBoYXMgZmluaXNoZWQnCj4+ICsgfCAuLi4KPj4gKwo+PiArYm94LmluZm8u aWQKPj4gKyB8IC0tLQo+PiArIHwgLSAyCj4+ICsgfCAuLi4KPj4gKyNib3guaW5mby5yZXBsaWNh dGlvbgo+PiArIHwgLS0tCj4+ICsgfCAtIDIKPj4gKyB8IC4uLgo+PiArdGVzdF9ydW46d2FpdF91 cHN0cmVhbSgxLCB7c3RhdHVzPSdmb2xsb3cnfSkKPj4gKyB8IC0tLQo+PiArIHwgLSB0cnVlCj4+ ICsgfCAuLi4KPj4gK2JveC5pbmZvLnJlcGxpY2F0aW9uLmRvd25zdHJlYW0KPj4gKyB8IC0tLQo+ PiArIHwgLSBudWxsCj4+ICsgfCAuLi4KPj4gKwo+PiArb2xkX2xzbiA9IGJveC5pbmZvLnZjbG9j a1syXSBvciAwCj4+ICsgfCAtLS0KPj4gKyB8IC4uLgo+PiArCj4+ICstLSBOb3cgcmVhZF9vbmx5 IGNhbiBiZSB0dXJuZWQgb2ZmLgo+PiArYm94LmNmZ3tyZWFkX29ubHk9ZmFsc2V9Cj4+ICsgfCAt LS0KPj4gKyB8IC4uLgo+PiArYm94LnNwYWNlLnRlc3Q6aW5zZXJ0ezJ9Cj4+ICsgfCAtLS0KPj4g KyB8IC0gWzJdCj4+ICsgfCAuLi4KPj4gKy0tIE5ldyBjaGFuZ2VzIGFyZSB0cmFja2VkIHVuZGVy IGZyZXNobHkgYXNzaWduZWQgaWQuCj4+ICtib3guaW5mby52Y2xvY2tbMl0gPT0gb2xkX2xzbiAr IDEKPj4gKyB8IC0tLQo+PiArIHwgLSB0cnVlCj4+ICsgfCAuLi4KPj4gKwo+PiArdGVzdF9ydW46 Y21kKCdzd2l0Y2ggZGVmYXVsdCcpCj4+ICsgfCAtLS0KPj4gKyB8IC0gdHJ1ZQo+PiArIHwgLi4u Cj4+ICsKPj4gKy0tIE90aGVyIGluc3RhbmNlcyBtYXkgcmVwbGljYXRlIGZyb20gYSBwcmV2aW91 c2x5LWFub255bW91cyBvbmUuCj4+ICt0ZXN0X3J1bjpjbWQoInNldCB2YXJpYWJsZSByZXBsX3Nv dXJjZSB0byAncmVwbGljYV9hbm9uLmxpc3RlbiciKQo+PiArIHwgLS0tCj4+ICsgfCAtIHRydWUK Pj4gKyB8IC4uLgo+PiArYm94LmNmZ3tyZXBsaWNhdGlvbj1yZXBsX3NvdXJjZX0KPj4gKyB8IC0t LQo+PiArIHwgLi4uCj4+ICsjYm94LmluZm8ucmVwbGljYXRpb24KPj4gKyB8IC0tLQo+PiArIHwg LSAyCj4+ICsgfCAuLi4KPj4gK3Rlc3RfcnVuOndhaXRfdXBzdHJlYW0oMiwge3N0YXR1cz0nZm9s bG93J30pCj4+ICsgfCAtLS0KPj4gKyB8IC0gdHJ1ZQo+PiArIHwgLi4uCj4+ICt0ZXN0X3J1bjp3 YWl0X2Rvd25zdHJlYW0oMiwge3N0YXR1cz0nZm9sbG93J30pCj4+ICsgfCAtLS0KPj4gKyB8IC0g dHJ1ZQo+PiArIHwgLi4uCj4+ICsjYm94LmluZm8udmNsb2NrCj4+ICsgfCAtLS0KPj4gKyB8IC0g Mgo+PiArIHwgLi4uCj4+ICsKPj4gKy0tIGNsZWFudXAKPj4gK2JveC5jZmd7cmVwbGljYXRpb249 IiJ9Cj4+ICsgfCAtLS0KPj4gKyB8IC4uLgo+PiArdGVzdF9ydW46Y21kKCdzdG9wIHNlcnZlciBy ZXBsaWNhX2Fub24gd2l0aCBjbGVhbnVwPTEnKQo+PiArIHwgLS0tCj4+ICsgfCAtIHRydWUKPj4g KyB8IC4uLgo+PiArYm94LnNwYWNlLnRlc3Q6ZHJvcCgpCj4+ICsgfCAtLS0KPj4gKyB8IC4uLgo+ PiArYm94LnNwYWNlLnRlbXA6ZHJvcCgpCj4+ICsgfCAtLS0KPj4gKyB8IC4uLgo+PiArYm94LnNw YWNlLmxvYzpkcm9wKCkKPj4gKyB8IC0tLQo+PiArIHwgLi4uCj4+ICtib3guc2NoZW1hLnVzZXIu cmV2b2tlKCdndWVzdCcsICdyZXBsaWNhdGlvbicpCj4+ICsgfCAtLS0KPj4gKyB8IC4uLgo+PiAr dGVzdF9ydW46Y2xlYW51cF9jbHVzdGVyKCkKPj4gKyB8IC0tLQo+PiArIHwgLi4uCgpJIGd1ZXNz IGl0J3MgZ2V0dGluZyBwcmV0dHkgaGFyZCB0byB0cmFjayBhbGwgdGhlIGNoYW5nZXMgaGVyZSwg c28gSSdsbCByZXNlbmQKdjIuCgotLSAKU2VyZ2V5IFBldHJlbmtv