From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 021056E44E for ; Tue, 3 Dec 2019 09:41:59 +0000 (UTC) Date: Tue, 3 Dec 2019 10:41:56 +0100 From: Katarzyna Dec Message-ID: <20191203094156.GH5980@kdec5-desk.ger.corp.intel.com> References: <20191201190942.6077-1-zbigniew.kempczynski@intel.com> <20191203092529.GG5980@kdec5-desk.ger.corp.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191203092529.GG5980@kdec5-desk.ger.corp.intel.com> Subject: Re: [igt-dev] [PATCH i-g-t v2 1/2] lib/intel_bufops: Introduce buffer operations List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Zbigniew =?utf-8?Q?Kempczy=C5=84ski?= , igt-dev@lists.freedesktop.org List-ID: T24gVHVlLCBEZWMgMDMsIDIwMTkgYXQgMTA6MjU6MjlBTSArMDEwMCwgS2F0YXJ6eW5hIERlYyB3 cm90ZToKPiBPbiBTdW4sIERlYyAwMSwgMjAxOSBhdCAwODowOTo0MVBNICswMTAwLCBaYmlnbmll dyBLZW1wY3p5xYRza2kgd3JvdGU6Cj4gPiBEaWZmZXJlbnQgR0VOcyBzdXBwb3J0cyBkaWZmZXJl bnQgdGlsZSBzdXJmYWNlcy4gT2xkZXIgR0VOcwo+ID4gaGF2ZSBIVyBmZW5jZXMgdG8gYWxsb3cg WCAvIFkgc3VyZmFjZSB0aWxpbmcgLyBkZXRpbGluZy4KPiA+IE5ld2VyIEdFTnMgaGF2ZSB0byB0 aWxlIC8gZGV0aWxlIHN1Y2ggc3VyZmFjZSBpbiBzb2Z0d2FyZS4KPiA+IAo+ID4gVG8gbWFrZSB0 ZXN0IGRldmVsb3BlciBsaWZlIGVhc2llciB0aGlzIGNvZGUgYWRkcyBidWZmZXIKPiA+IG9wZXJh dGlvbnMgKHNob3J0IGJ1Zm9wcykgdG8gdXNlIGFwcHJvcHJpYXRlIGZ1bmN0aW9ucyBhbGxvd2lu Zwo+ID4gY29weWluZyBsaW5lYXIgYnVmZmVyIHRvIEJPIGFuZCBmcm9tIEJPIHRvIGxpbmVhciBi dWZmZXIKPiA+IHJlZ2FyZGxlc3MgR1BVIGdlbmVyYXRpb24gYW5kIHRpbGluZyB3aXRoaW4gQk8u IEZvciBHRU5zIGhhdmluZwo+ID4gZmVuY2VzIHN1cHBvcnQgcHJlZmVyZW5jZSBpcyB0byB1c2Ug dGhlbSBpZiB0aGV5IGFyZSBhdmFpbGFibGUKPiA+IChYIC8gWSB0aWxpbmcgaXMgcHJvYmVkIG9u IGJ1Zm9wcyBpbml0YWxpemF0aW9uKS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogWmJpZ25pZXcg S2VtcGN6ecWEc2tpIDx6Ymlnbmlldy5rZW1wY3p5bnNraUBpbnRlbC5jb20+Cj4gPiBDYzogQ2hy aXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gPiBDYzogSW1yZSBEZWFrIDxp bXJlLmRlYWtAaW50ZWwuY29tPgo+ID4gQ2M6IEthdGFyenluYSBEZWMgPGthdGFyenluYS5kZWNA aW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgbGliL01ha2VmaWxlLnNvdXJjZXMgfCAgIDIgKwo+ID4g IGxpYi9pbnRlbF9idWZvcHMuYyAgIHwgNjg5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKPiA+ICBsaWIvaW50ZWxfYnVmb3BzLmggICB8ICAyNCArKwo+ID4gIGxp Yi9tZXNvbi5idWlsZCAgICAgIHwgICAxICsKPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDcxNiBpbnNl cnRpb25zKCspCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pbnRlbF9idWZvcHMuYwo+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaW50ZWxfYnVmb3BzLmgKPiA+IAo+ID4gZGlmZiAtLWdp dCBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKPiA+IGluZGV4 IDlkMWE0ZTA2Li5iODA4ZjI5NCAxMDA2NDQKPiA+IC0tLSBhL2xpYi9NYWtlZmlsZS5zb3VyY2Vz Cj4gPiArKysgYi9saWIvTWFrZWZpbGUuc291cmNlcwo+ID4gQEAgLTY1LDYgKzY1LDggQEAgbGli X3NvdXJjZV9saXN0ID0JIAlcCj4gPiAgCWludGVsX2F1Yi5oCQlcCj4gPiAgCWludGVsX2JhdGNo YnVmZmVyLmMJXAo+ID4gIAlpbnRlbF9iYXRjaGJ1ZmZlci5oCVwKPiA+ICsJaW50ZWxfYnVmb3Bz LmMJCVwKPiA+ICsJaW50ZWxfYnVmb3BzLmgJCVwKPiA+ICAJaW50ZWxfY2hpcHNldC5jCQlcCj4g PiAgCWludGVsX2NoaXBzZXQuaAkJXAo+ID4gIAlpbnRlbF9kZXZpY2VfaW5mby5jCVwKPiA+IGRp ZmYgLS1naXQgYS9saWIvaW50ZWxfYnVmb3BzLmMgYi9saWIvaW50ZWxfYnVmb3BzLmMKPiA+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMC4uZmRiOGJkYzcKPiA+IC0tLSAv ZGV2L251bGwKPiA+ICsrKyBiL2xpYi9pbnRlbF9idWZvcHMuYwo+ID4gQEAgLTAsMCArMSw2ODkg QEAKPiA+ICsjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Cj4gPiArI2luY2x1ZGUgImlndC5oIgo+ID4g KyNpbmNsdWRlICJpZ3RfeDg2LmgiCj4gPiArI2luY2x1ZGUgImludGVsX2J1Zm9wcy5oIgo+ID4g Kwo+ID4gKyNkZWZpbmUgVElMRV9OT05FICAgKDEgPDwgSTkxNV9USUxJTkdfTk9ORSkKPiA+ICsj ZGVmaW5lIFRJTEVfWCAgICAgICgxIDw8IEk5MTVfVElMSU5HX1gpCj4gPiArI2RlZmluZSBUSUxF X1kgICAgICAoMSA8PCBJOTE1X1RJTElOR19ZKQo+ID4gKyNkZWZpbmUgVElMRV9ZZiAgICAgKDEg PDwgSTkxNV9USUxJTkdfWWYpCj4gPiArI2RlZmluZSBUSUxFX1lzICAgICAoMSA8PCBJOTE1X1RJ TElOR19ZcykKPiA+ICsKPiA+ICt0eXBlZGVmIHZvaWQgKCpib19jb3B5KShpbnQsIHN0cnVjdCBp Z3RfYnVmICosIHVpbnQzMl90ICopOwo+ID4gKwo+ID4gK3N0cnVjdCBidWZfb3BzIHsKPiA+ICsJ aW50IGZkOwo+ID4gKwlkcm1faW50ZWxfYnVmbWdyICpidWZtZ3I7Cj4gPiArCWludCBnZW5fc3Rh cnQ7Cj4gPiArCWludCBnZW5fZW5kOwo+ID4gKwlpbnQgaW50ZWxfZ2VuOwo+ID4gKwl1aW50MzJf dCBzdXBwb3J0ZWRfdGlsZXM7Cj4gPiArCXVpbnQzMl90IGh3X3RpbGVzOwo+ID4gKwlib19jb3B5 IGxpbmVhcl90bzsKPiA+ICsJYm9fY29weSBsaW5lYXJfdG9feDsKPiA+ICsJYm9fY29weSBsaW5l YXJfdG9feTsKPiA+ICsJYm9fY29weSBsaW5lYXJfdG9feWY7Cj4gPiArCWJvX2NvcHkgbGluZWFy X3RvX3lzOwo+ID4gKwlib19jb3B5IHRvX2xpbmVhcjsKPiA+ICsJYm9fY29weSB4X3RvX2xpbmVh cjsKPiA+ICsJYm9fY29weSB5X3RvX2xpbmVhcjsKPiA+ICsJYm9fY29weSB5Zl90b19saW5lYXI7 Cj4gPiArCWJvX2NvcHkgeXNfdG9fbGluZWFyOwo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIHZv aWQgKnhfcHRyKHZvaWQgKnB0ciwKPiA+ICsJCSAgIHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBp bnQgeSwKPiA+ICsJCSAgIHVuc2lnbmVkIGludCBzdHJpZGUsIHVuc2lnbmVkIGludCBjcHApCj4g PiArewo+ID4gKwljb25zdCBpbnQgdGlsZV93aWR0aCA9IDUxMjsKPiA+ICsJY29uc3QgaW50IHRp bGVfaGVpZ2h0ID0gODsKPiBJdCBjYW4gYmUgcmVhbGx5IHNpbGx5IHF1ZXN0aW9uIC0gYXJlIHRo ZXNlIF4gdmFsdWVzIGFsd2F5cyB0aGUgc2FtZT8KPiA+ICsJY29uc3QgaW50IHRpbGVfc2l6ZSA9 IHRpbGVfd2lkdGggKiB0aWxlX2hlaWdodDsKPiA+ICsJaW50IHRpbGVfeCwgdGlsZV95Owo+ID4g KwlpbnQgb2Zmc2V0X3gsIG9mZnNldF95LCBwb3M7Cj4gPiArCj4gPiArCXggKj0gY3BwOwo+ID4g Kwl0aWxlX3ggPSB4IC8gdGlsZV93aWR0aDsKPiA+ICsJdGlsZV95ID0geSAvIHRpbGVfaGVpZ2h0 Owo+ID4gKwlvZmZzZXRfeCA9ICh0aWxlX3ggKiB0aWxlX3NpemUpOwo+ID4gKwlvZmZzZXRfeSA9 ICh0aWxlX3kgKiBzdHJpZGUgKiB0aWxlX2hlaWdodCk7Cj4gPiArCj4gPiArCXBvcyA9IG9mZnNl dF95ICsgb2Zmc2V0X3ggKwo+ID4gKwkJCSh5ICUgdGlsZV9oZWlnaHQgKiB0aWxlX3dpZHRoKSAr ICh4ICUgdGlsZV93aWR0aCk7Cj4gPiArCj4gPiArCXJldHVybiBwdHIgKyBwb3M7Cj4gPiArfQo+ ID4gKwo+ID4gK3N0YXRpYyB2b2lkICp5X3B0cih2b2lkICpwdHIsCj4gPiArCQkgICB1bnNpZ25l ZCBpbnQgeCwgdW5zaWduZWQgaW50IHksCj4gPiArCQkgICB1bnNpZ25lZCBpbnQgc3RyaWRlLCB1 bnNpZ25lZCBpbnQgY3BwKQo+ID4gK3sKPiA+ICsJY29uc3QgaW50IHRpbGVfd2lkdGggPSAxMjg7 Cj4gPiArCWNvbnN0IGludCB0aWxlX2hlaWdodCA9IDMyOwo+ID4gKwljb25zdCBpbnQgb3dvcmRz ID0gMTY7Cj4gU2ltaWxhciBxdWVzdGlvbi4gSSBndWVzcyB0aGlzIGlzIHNvbWV0aGluZyBzcGVj aWZpYyBlaXRoZXIgdG8gSW50ZWwgR2VuIG9yIHRvCj4gdGVzdGNhc2VzLgo+ID4gKwljb25zdCBp bnQgdGlsZV9zaXplID0gdGlsZV93aWR0aCAqIHRpbGVfaGVpZ2h0Owo+ID4gKwlpbnQgdGlsZV94 LCB0aWxlX3k7Cj4gPiArCWludCBvZmZzZXRfeCwgb2Zmc2V0X3ksIHBvczsKPiA+ICsJaW50IHNo aWZ0X3gsIHNoaWZ0X3k7Cj4gPiArCj4gPiArCXggKj0gY3BwOwo+ID4gKwl0aWxlX3ggPSB4IC8g dGlsZV93aWR0aDsKPiA+ICsJdGlsZV95ID0geSAvIHRpbGVfaGVpZ2h0Owo+ID4gKwlvZmZzZXRf eCA9IHRpbGVfeCAqIHRpbGVfc2l6ZTsKPiA+ICsJb2Zmc2V0X3kgPSB0aWxlX3kgKiBzdHJpZGUg KiB0aWxlX2hlaWdodDsKPiA+ICsJc2hpZnRfeCA9IHggJSBvd29yZHMgKyAoeCAlIHRpbGVfd2lk dGgpIC8gb3dvcmRzICogdGlsZV93aWR0aCAqIGNwcDsKPiA+ICsJc2hpZnRfeSA9IHkgJSB0aWxl X2hlaWdodCAqIG93b3JkczsKPiA+ICsKPiA+ICsJcG9zID0gb2Zmc2V0X3kgKyBvZmZzZXRfeCAr IHNoaWZ0X3ggKyBzaGlmdF95Owo+ID4gKwo+ID4gKwlyZXR1cm4gcHRyICsgcG9zOwo+ID4gK30K PiA+ICsKPiA+ICtzdGF0aWMgdm9pZCAqeWZfcHRyKHZvaWQgKnB0ciwKPiA+ICsJCSAgICB1bnNp Z25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksCj4gPiArCQkgICAgdW5zaWduZWQgaW50IHN0cmlk ZSwgdW5zaWduZWQgaW50IGNwcCkKPiA+ICt7Cj4gPiArCWNvbnN0IGludCB0aWxlX3NpemUgPSA0 ICogMTAyNDsKPiA+ICsJY29uc3QgaW50IHRpbGVfd2lkdGggPSAxMjg7Cj4gPiArCWludCByb3df c2l6ZSA9IChzdHJpZGUgLyB0aWxlX3dpZHRoKSAqIHRpbGVfc2l6ZTsKPiA+ICsKPiA+ICsJeCAq PSBjcHA7IC8qIGNvbnZlcnQgdG8gQnl0ZSBvZmZzZXQgKi8KPiA+ICsKPiA+ICsKPiA+ICsJLyoK PiA+ICsJICogV2l0aGluIGEgNGsgWWYgdGlsZSwgdGhlIGJ5dGUgc3dpenpsaW5nIHBhdHRlcm4g aXMKPiA+ICsJICogbXNiLi4uLi4ubHNiCj4gPiArCSAqIHh5eHl4eXl5eHh4eAo+ID4gKwkgKiBU aGUgdGlsZXMgdGhlbXNlbHZlcyBhcmUgbGFpZCBvdXQgaW4gcm93IG1ham9yIG9yZGVyLgo+ID4g KwkgKi8KPiA+ICsJcmV0dXJuIHB0ciArCj4gPiArCQkJKCh4ICYgMHhmKSAqIDEpICsgLyogNHgx IHBpeGVscygzMmJwcCkgPSAxNkIgKi8KPiA+ICsJCQkoKHkgJiAweDMpICogMTYpICsgLyogNHg0 IHBpeGVscyA9IDY0QiAqLwo+ID4gKwkJCSgoKHkgJiAweDQpID4+IDIpICogNjQpICsgLyogMXgy IDY0QiBibG9ja3MgKi8KPiA+ICsJCQkoKCh4ICYgMHgxMCkgPj4gNCkgKiAxMjgpICsgLyogMngy IDY0QiBibG9ja3MgPSAyNTZCIGJsb2NrICovCj4gPiArCQkJKCgoeSAmIDB4OCkgPj4gMykgKiAy NTYpICsgLyogMngxIDI1NkIgYmxvY2tzICovCj4gPiArCQkJKCgoeCAmIDB4MjApID4+IDUpICog NTEyKSArIC8qIDJ4MiAyNTZCIGJsb2NrcyAqLwo+ID4gKwkJCSgoKHkgJiAweDEwKSA+PiA0KSAq IDEwMjQpICsgLyogNHgyIDI1NiBibG9ja3MgKi8KPiA+ICsJCQkoKCh4ICYgMHg0MCkgPj4gNikg KiAyMDQ4KSArIC8qIDR4NCAyNTZCIGJsb2NrcyA9IDRrIHRpbGUgKi8KPiA+ICsJCQkoKCh4ICYg fjB4N2YpID4+IDcpICogdGlsZV9zaXplKSArIC8qIHJvdyBvZiB0aWxlcyAqLwo+ID4gKwkJCSgo KHkgJiB+MHgxZikgPj4gNSkgKiByb3dfc2l6ZSk7Cj4gPiArfQo+ID4gKwo+ID4gK3R5cGVkZWYg dm9pZCAqKCpmbl9wdHIpKHZvaWQgKiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsCj4gPiAr CQkJdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpOwo+ID4gK3N0YXRpYyBmbl9wdHIgX19nZXRf dGlsZV9mbl9wdHIoaW50IHRpbGluZykKPiA+ICt7Cj4gPiArCWZuX3B0ciBmbiA9IE5VTEw7Cj4g PiArCj4gPiArCXN3aXRjaCAodGlsaW5nKSB7Cj4gPiArCWNhc2UgSTkxNV9USUxJTkdfWDoKPiA+ ICsJCWZuID0geF9wdHI7Cj4gPiArCQlicmVhazsKPiA+ICsJY2FzZSBJOTE1X1RJTElOR19ZOgo+ ID4gKwkJZm4gPSB5X3B0cjsKPiA+ICsJCWJyZWFrOwo+ID4gKwljYXNlIEk5MTVfVElMSU5HX1lm Ogo+ID4gKwkJZm4gPSB5Zl9wdHI7Cj4gPiArCQlicmVhazsKPiA+ICsJY2FzZSBJOTE1X1RJTElO R19ZczoKPiA+ICsJCS8qIFRvIGJlIGltcGxlbWVudGVkICovCj4gPiArCQlicmVhazsKPiA+ICsJ fQo+ID4gKwo+ID4gKwlpZ3RfYXNzZXJ0X2YoZm4sICJDYW4ndCBmaW5kIHRpbGUgZnVuY3Rpb24g Zm9yIHRpbGluZzogJWRcbiIsIHRpbGluZyk7Cj4gPiArCj4gPiArCXJldHVybiBmbjsKPiA+ICt9 Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgX19jb3B5X2xpbmVhcl90byhpbnQgZmQsIHN0cnVjdCBp Z3RfYnVmICpidWYsCj4gPiArCQkJICAgICBjb25zdCB1aW50MzJfdCAqbGluZWFyLCBpbnQgdGls aW5nKQo+ID4gK3sKPiA+ICsJaW50IGhlaWdodCA9IGlndF9idWZfaGVpZ2h0KGJ1Zik7Cj4gPiAr CWludCB3aWR0aCA9IGlndF9idWZfd2lkdGgoYnVmKTsKPiA+ICsJZm5fcHRyIGZuID0gX19nZXRf dGlsZV9mbl9wdHIodGlsaW5nKTsKPiA+ICsJdm9pZCAqbWFwOwo+ID4gKwo+ID4gKwlnZW1fc2V0 X2RvbWFpbihmZCwgYnVmLT5iby0+aGFuZGxlLAo+ID4gKwkJICAgICAgIEk5MTVfR0VNX0RPTUFJ Tl9DUFUsIEk5MTVfR0VNX0RPTUFJTl9DUFUpOwo+ID4gKwltYXAgPSBnZW1fbW1hcF9fY3B1KGZk LCBidWYtPmJvLT5oYW5kbGUsIDAsCj4gPiArCQkJICAgIGJ1Zi0+Ym8tPnNpemUsIFBST1RfUkVB RCB8IFBST1RfV1JJVEUpOwo+ID4gKwo+ID4gKwlmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsg eSsrKSB7Cj4gPiArCQlmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKPiA+ICsJCQl1 aW50MzJfdCAqcHRyID0gZm4obWFwLCB4LCB5LAo+ID4gKwkJCQkJICAgYnVmLT5zdHJpZGUsIGJ1 Zi0+YnBwIC8gOCk7Cj4gPiArCj4gPiArCQkJKnB0ciA9IGxpbmVhclt5ICogd2lkdGggKyB4XTsK PiA+ICsJCX0KPiA+ICsJfQo+ID4gKwo+ID4gKwltdW5tYXAobWFwLCBidWYtPmJvLT5zaXplKTsK PiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgY29weV9saW5lYXJfdG9feChpbnQgZmQsIHN0 cnVjdCBpZ3RfYnVmICpidWYsCj4gPiArCQkJICAgICB1aW50MzJfdCAqbGluZWFyKQo+ID4gK3sK PiA+ICsJX19jb3B5X2xpbmVhcl90byhmZCwgYnVmLCBsaW5lYXIsIEk5MTVfVElMSU5HX1gpOwo+ ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBjb3B5X2xpbmVhcl90b195KGludCBmZCwgc3Ry dWN0IGlndF9idWYgKmJ1ZiwKPiA+ICsJCQkgICAgIHVpbnQzMl90ICpsaW5lYXIpCj4gPiArewo+ ID4gKwlfX2NvcHlfbGluZWFyX3RvKGZkLCBidWYsIGxpbmVhciwgSTkxNV9USUxJTkdfWSk7Cj4g PiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIGNvcHlfbGluZWFyX3RvX3lmKGludCBmZCwgc3Ry dWN0IGlndF9idWYgKmJ1ZiwKPiA+ICsJCQkgICAgICB1aW50MzJfdCAqbGluZWFyKQo+ID4gK3sK PiA+ICsJX19jb3B5X2xpbmVhcl90byhmZCwgYnVmLCBsaW5lYXIsIEk5MTVfVElMSU5HX1lmKTsK PiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgX19jb3B5X3RvX2xpbmVhcihpbnQgZmQsIHN0 cnVjdCBpZ3RfYnVmICpidWYsCj4gPiArCQkJICAgICB1aW50MzJfdCAqbGluZWFyLCBpbnQgdGls aW5nKQo+ID4gK3sKPiA+ICsJaW50IGhlaWdodCA9IGlndF9idWZfaGVpZ2h0KGJ1Zik7Cj4gPiAr CWludCB3aWR0aCA9IGlndF9idWZfd2lkdGgoYnVmKTsKPiA+ICsJZm5fcHRyIGZuID0gX19nZXRf dGlsZV9mbl9wdHIodGlsaW5nKTsKPiA+ICsJdm9pZCAqbWFwOwo+ID4gKwo+ID4gKwlnZW1fc2V0 X2RvbWFpbihmZCwgYnVmLT5iby0+aGFuZGxlLAo+ID4gKwkJICAgICAgIEk5MTVfR0VNX0RPTUFJ Tl9DUFUsIDApOwo+ID4gKwltYXAgPSBnZW1fbW1hcF9fY3B1KGZkLCBidWYtPmJvLT5oYW5kbGUs IDAsCj4gPiArCQkJICAgIGJ1Zi0+Ym8tPnNpemUsIFBST1RfUkVBRCk7Cj4gPiArCj4gPiArCWZv ciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKPiA+ICsJCWZvciAoaW50IHggPSAwOyB4 IDwgd2lkdGg7IHgrKykgewo+ID4gKwkJCXVpbnQzMl90ICpwdHIgPSBmbihtYXAsIHgsIHksCj4g PiArCQkJCQkgICBidWYtPnN0cmlkZSwgYnVmLT5icHAgLyA4KTsKPiA+ICsKPiA+ICsJCQlsaW5l YXJbeSAqIHdpZHRoICsgeF0gPSAqcHRyOwo+ID4gKwkJfQo+ID4gKwl9Cj4gPiArCj4gPiArCW11 bm1hcChtYXAsIGJ1Zi0+Ym8tPnNpemUpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBj b3B5X3lmX3RvX2xpbmVhcihpbnQgZmQsIHN0cnVjdCBpZ3RfYnVmICpidWYsCj4gPiArCQkJICAg ICAgdWludDMyX3QgKmxpbmVhcikKPiA+ICt7Cj4gPiArCV9fY29weV90b19saW5lYXIoZmQsIGJ1 ZiwgbGluZWFyLCBJOTE1X1RJTElOR19ZZik7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lk IGNvcHlfeF90b19saW5lYXIoaW50IGZkLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAo+ID4gKwkJCSAg ICAgdWludDMyX3QgKmxpbmVhcikKPiA+ICt7Cj4gPiArCV9fY29weV90b19saW5lYXIoZmQsIGJ1 ZiwgbGluZWFyLCBJOTE1X1RJTElOR19YKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQg Y29weV95X3RvX2xpbmVhcihpbnQgZmQsIHN0cnVjdCBpZ3RfYnVmICpidWYsCj4gPiArCQkJICAg ICB1aW50MzJfdCAqbGluZWFyKQo+ID4gK3sKPiA+ICsJX19jb3B5X3RvX2xpbmVhcihmZCwgYnVm LCBsaW5lYXIsIEk5MTVfVElMSU5HX1kpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBj b3B5X2xpbmVhcl90b19ndHQoaW50IGZkLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAo+ID4gKwkJCSAg ICAgICB1aW50MzJfdCAqbGluZWFyKQo+ID4gK3sKPiA+ICsJdm9pZCAqbWFwOwo+ID4gKwo+ID4g KwlnZW1fc2V0X2RvbWFpbihmZCwgYnVmLT5iby0+aGFuZGxlLAo+ID4gKwkJICAgICAgIEk5MTVf R0VNX0RPTUFJTl9HVFQsIEk5MTVfR0VNX0RPTUFJTl9HVFQpOwo+ID4gKwo+ID4gKwltYXAgPSBn ZW1fbW1hcF9fZ3R0KGZkLCBidWYtPmJvLT5oYW5kbGUsCj4gPiArCQkJICAgIGJ1Zi0+Ym8tPnNp emUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwo+ID4gKwo+ID4gKwltZW1jcHkobWFwLCBsaW5l YXIsIGJ1Zi0+Ym8tPnNpemUpOwo+ID4gKwo+ID4gKwltdW5tYXAobWFwLCBidWYtPmJvLT5zaXpl KTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgY29weV9ndHRfdG9fbGluZWFyKGludCBm ZCwgc3RydWN0IGlndF9idWYgKmJ1ZiwKPiA+ICsJCQkgICAgICAgdWludDMyX3QgKmxpbmVhcikK PiA+ICt7Cj4gPiArCXZvaWQgKm1hcDsKPiA+ICsKPiA+ICsJZ2VtX3NldF9kb21haW4oZmQsIGJ1 Zi0+Ym8tPmhhbmRsZSwKPiA+ICsJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fR1RULCAwKTsKPiA+ ICsKPiA+ICsJbWFwID0gZ2VtX21tYXBfX2d0dChmZCwgYnVmLT5iby0+aGFuZGxlLAo+ID4gKwkJ CSAgICBidWYtPmJvLT5zaXplLCBQUk9UX1JFQUQpOwo+ID4gKwo+ID4gKwlpZ3RfbWVtY3B5X2Zy b21fd2MobGluZWFyLCBtYXAsIGJ1Zi0+Ym8tPnNpemUpOwo+ID4gKwo+ID4gKwltdW5tYXAobWFw LCBidWYtPmJvLT5zaXplKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgY29weV9saW5l YXJfdG9fd2MoaW50IGZkLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAo+ID4gKwkJCSAgICAgIHVpbnQz Ml90ICpsaW5lYXIpCj4gPiArewo+ID4gKwl2b2lkICptYXA7Cj4gPiArCj4gPiArCWdlbV9zZXRf ZG9tYWluKGZkLCBidWYtPmJvLT5oYW5kbGUsCj4gPiArCQkgICAgICAgSTkxNV9HRU1fRE9NQUlO X0dUVCwgSTkxNV9HRU1fRE9NQUlOX0dUVCk7Cj4gPiArCj4gPiArCW1hcCA9IGdlbV9tbWFwX193 YyhmZCwgYnVmLT5iby0+aGFuZGxlLCAwLAo+ID4gKwkJCSAgIGJ1Zi0+Ym8tPnNpemUsIFBST1Rf UkVBRCB8IFBST1RfV1JJVEUpOwo+ID4gKwo+ID4gKwltZW1jcHkobWFwLCBsaW5lYXIsIGJ1Zi0+ Ym8tPnNpemUpOwo+ID4gKwo+ID4gKwltdW5tYXAobWFwLCBidWYtPmJvLT5zaXplKTsKPiA+ICt9 Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgY29weV93Y190b19saW5lYXIoaW50IGZkLCBzdHJ1Y3Qg aWd0X2J1ZiAqYnVmLAo+ID4gKwkJCSAgICAgIHVpbnQzMl90ICpsaW5lYXIpCj4gPiArewo+ID4g Kwl2b2lkICptYXA7Cj4gPiArCj4gPiArCWdlbV9zZXRfZG9tYWluKGZkLCBidWYtPmJvLT5oYW5k bGUsCj4gPiArCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0dUVCwgMCk7Cj4gPiArCj4gPiArCW1h cCA9IGdlbV9tbWFwX193YyhmZCwgYnVmLT5iby0+aGFuZGxlLCAwLAo+ID4gKwkJCSAgIGJ1Zi0+ Ym8tPnNpemUsIFBST1RfUkVBRCk7Cj4gPiArCj4gPiArCWlndF9tZW1jcHlfZnJvbV93YyhsaW5l YXIsIG1hcCwgYnVmLT5iby0+c2l6ZSk7Cj4gPiArCj4gPiArCW11bm1hcChtYXAsIGJ1Zi0+Ym8t PnNpemUpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBjb3B5X2xpbmVhcl90b19jcHUo aW50IGZkLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAo+ID4gKwkJCSAgICAgICB1aW50MzJfdCAqbGlu ZWFyKQo+ID4gK3sKPiA+ICsJdm9pZCAqbWFwOwo+ID4gKwo+ID4gKwlnZW1fc2V0X2RvbWFpbihm ZCwgYnVmLT5iby0+aGFuZGxlLAo+ID4gKwkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9DUFUsIEk5 MTVfR0VNX0RPTUFJTl9DUFUpOwo+ID4gKwo+ID4gKwltYXAgPSBnZW1fbW1hcF9fY3B1KGZkLCBi dWYtPmJvLT5oYW5kbGUsIDAsCj4gPiArCQkJICAgIGJ1Zi0+Ym8tPnNpemUsIFBST1RfUkVBRCB8 IFBST1RfV1JJVEUpOwo+ID4gKwo+ID4gKwltZW1jcHkobWFwLCBsaW5lYXIsIGJ1Zi0+Ym8tPnNp emUpOwo+ID4gKwo+ID4gKwltdW5tYXAobWFwLCBidWYtPmJvLT5zaXplKTsKPiA+ICt9Cj4gPiAr Cj4gPiArc3RhdGljIHZvaWQgY29weV9jcHVfdG9fbGluZWFyKGludCBmZCwgc3RydWN0IGlndF9i dWYgKmJ1ZiwKPiA+ICsJCQkgICAgICAgdWludDMyX3QgKmxpbmVhcikKPiA+ICt7Cj4gPiArCXZv aWQgKm1hcDsKPiA+ICsKPiA+ICsJZ2VtX3NldF9kb21haW4oZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwK PiA+ICsJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fQ1BVLCAwKTsKPiA+ICsKPiA+ICsJbWFwID0g Z2VtX21tYXBfX2NwdShmZCwgYnVmLT5iby0+aGFuZGxlLCAwLAo+ID4gKwkJCSAgICBidWYtPmJv LT5zaXplLCBQUk9UX1JFQUQpOwo+ID4gKwo+ID4gKwltZW1jcHkobGluZWFyLCBtYXAsIGJ1Zi0+ Ym8tPnNpemUpOwo+ID4gKwo+ID4gKwltdW5tYXAobWFwLCBidWYtPmJvLT5zaXplKTsKPiA+ICt9 Cj4gPiArCj4gPiArdm9pZCBjb3B5X2J1Zl90b19saW5lYXIoc3RydWN0IGJ1Zl9vcHMgKmJvcHMs IHN0cnVjdCBpZ3RfYnVmICpidWYsCj4gPiArCQkJdWludDMyX3QgKmxpbmVhcikKPiA+ICt7Cj4g PiArCWlndF9hc3NlcnQoYm9wcyk7Cj4gPiArCj4gPiArCXN3aXRjaCAoYnVmLT50aWxpbmcpIHsK PiA+ICsJY2FzZSBJOTE1X1RJTElOR19OT05FOgo+ID4gKwkJaWd0X2Fzc2VydChib3BzLT50b19s aW5lYXIpOwo+ID4gKwkJYm9wcy0+dG9fbGluZWFyKGJvcHMtPmZkLCBidWYsIGxpbmVhcik7Cj4g PiArCQlicmVhazsKPiA+ICsJY2FzZSBJOTE1X1RJTElOR19YOgo+ID4gKwkJaWd0X2Fzc2VydChi b3BzLT54X3RvX2xpbmVhcik7Cj4gPiArCQlib3BzLT54X3RvX2xpbmVhcihib3BzLT5mZCwgYnVm LCBsaW5lYXIpOwo+ID4gKwkJYnJlYWs7Cj4gPiArCWNhc2UgSTkxNV9USUxJTkdfWToKPiA+ICsJ CWlndF9hc3NlcnQoYm9wcy0+eV90b19saW5lYXIpOwo+ID4gKwkJYm9wcy0+eV90b19saW5lYXIo Ym9wcy0+ZmQsIGJ1ZiwgbGluZWFyKTsKPiA+ICsJCWJyZWFrOwo+ID4gKwljYXNlIEk5MTVfVElM SU5HX1lmOgo+ID4gKwkJaWd0X2Fzc2VydChib3BzLT55Zl90b19saW5lYXIpOwo+ID4gKwkJYm9w cy0+eWZfdG9fbGluZWFyKGJvcHMtPmZkLCBidWYsIGxpbmVhcik7Cj4gPiArCQlicmVhazsKPiA+ ICsJY2FzZSBJOTE1X1RJTElOR19ZczoKPiA+ICsJCWlndF9hc3NlcnQoYm9wcy0+eXNfdG9fbGlu ZWFyKTsKPiA+ICsJCWJvcHMtPnlzX3RvX2xpbmVhcihib3BzLT5mZCwgYnVmLCBsaW5lYXIpOwo+ ID4gKwkJYnJlYWs7Cj4gPiArCX0KPiA+ICt9Cj4gPiArCj4gPiArdm9pZCBjb3B5X2xpbmVhcl90 b19idWYoc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIHN0cnVjdCBpZ3RfYnVmICpidWYsCj4gPiArCQkJ dWludDMyX3QgKmxpbmVhcikKPiA+ICt7Cj4gPiArCWlndF9hc3NlcnQoYm9wcyk7Cj4gPiArCj4g PiArCXN3aXRjaCAoYnVmLT50aWxpbmcpIHsKPiA+ICsJY2FzZSBJOTE1X1RJTElOR19OT05FOgo+ ID4gKwkJaWd0X2Fzc2VydChib3BzLT5saW5lYXJfdG8pOwo+ID4gKwkJYm9wcy0+bGluZWFyX3Rv KGJvcHMtPmZkLCBidWYsIGxpbmVhcik7Cj4gPiArCQlicmVhazsKPiA+ICsJY2FzZSBJOTE1X1RJ TElOR19YOgo+ID4gKwkJaWd0X2Fzc2VydChib3BzLT5saW5lYXJfdG9feCk7Cj4gPiArCQlib3Bz LT5saW5lYXJfdG9feChib3BzLT5mZCwgYnVmLCBsaW5lYXIpOwo+ID4gKwkJYnJlYWs7Cj4gPiAr CWNhc2UgSTkxNV9USUxJTkdfWToKPiA+ICsJCWlndF9hc3NlcnQoYm9wcy0+bGluZWFyX3RvX3kp Owo+ID4gKwkJYm9wcy0+bGluZWFyX3RvX3koYm9wcy0+ZmQsIGJ1ZiwgbGluZWFyKTsKPiA+ICsJ CWJyZWFrOwo+ID4gKwljYXNlIEk5MTVfVElMSU5HX1lmOgo+ID4gKwkJaWd0X2Fzc2VydChib3Bz LT5saW5lYXJfdG9feWYpOwo+ID4gKwkJYm9wcy0+bGluZWFyX3RvX3lmKGJvcHMtPmZkLCBidWYs IGxpbmVhcik7Cj4gPiArCQlicmVhazsKPiA+ICsJY2FzZSBJOTE1X1RJTElOR19ZczoKPiA+ICsJ CWlndF9hc3NlcnQoYm9wcy0+bGluZWFyX3RvX3lzKTsKPiA+ICsJCWJvcHMtPmxpbmVhcl90b195 cyhib3BzLT5mZCwgYnVmLCBsaW5lYXIpOwo+ID4gKwkJYnJlYWs7Cj4gPiArCX0KPiA+ICt9Cj4g PiArCj4gPiArc3RydWN0IGJ1Zl9vcHMgYnVmX29wc19hcnJbXSA9IHsKPiA+ICsJLyogR2VuZXJh dGlvbnMgMCAtIDggKi8KPiA+ICt7Cj4gPiArCS5nZW5fc3RhcnQgICAgICAgICA9IDAsCj4gPiAr CS5nZW5fZW5kICAgICAgICAgICA9IDgsCj4gPiArCS5zdXBwb3J0ZWRfdGlsZXMgICA9IFRJTEVf Tk9ORSB8IFRJTEVfWCB8IFRJTEVfWSwKPiA+ICsJLmh3X3RpbGVzICAgICAgICAgID0gVElMRV9Y IHwgVElMRV9ZLAo+ID4gKwkubGluZWFyX3RvICAgICAgICAgPSBjb3B5X2xpbmVhcl90b19jcHUs Cj4gPiArCS5saW5lYXJfdG9feCAgICAgICA9IGNvcHlfbGluZWFyX3RvX2d0dCwKPiA+ICsJLmxp bmVhcl90b195ICAgICAgID0gY29weV9saW5lYXJfdG9fZ3R0LAo+ID4gKwkudG9fbGluZWFyICAg ICAgICAgPSBjb3B5X2NwdV90b19saW5lYXIsCj4gPiArCS54X3RvX2xpbmVhciAgICAgICA9IGNv cHlfZ3R0X3RvX2xpbmVhciwKPiA+ICsJLnlfdG9fbGluZWFyICAgICAgID0gY29weV9ndHRfdG9f bGluZWFyLAo+ID4gK30sCj4gPiArLyogR2VuZXJhdGlvbnMgOSAtIDExICovCj4gPiArewo+ID4g KwkuZ2VuX3N0YXJ0ICAgICAgICAgPSA5LAo+ID4gKwkuZ2VuX2VuZCAgICAgICAgICAgPSAxMSwK PiA+ICsJLnN1cHBvcnRlZF90aWxlcyAgID0gVElMRV9OT05FIHwgVElMRV9YIHwgVElMRV9ZIHwg VElMRV9ZZiwKPiA+ICsJLmh3X3RpbGVzICAgICAgICAgID0gVElMRV9YIHwgVElMRV9ZLAo+ID4g KwkubGluZWFyX3RvICAgICAgICAgPSBjb3B5X2xpbmVhcl90b19jcHUsCj4gPiArCS5saW5lYXJf dG9feCAgICAgICA9IGNvcHlfbGluZWFyX3RvX2d0dCwKPiA+ICsJLmxpbmVhcl90b195ICAgICAg ID0gY29weV9saW5lYXJfdG9fZ3R0LAo+ID4gKwkubGluZWFyX3RvX3lmICAgICAgPSBjb3B5X2xp bmVhcl90b195ZiwKPiA+ICsJLnRvX2xpbmVhciAgICAgICAgID0gY29weV9jcHVfdG9fbGluZWFy LAo+ID4gKwkueF90b19saW5lYXIgICAgICAgPSBjb3B5X2d0dF90b19saW5lYXIsCj4gPiArCS55 X3RvX2xpbmVhciAgICAgICA9IGNvcHlfZ3R0X3RvX2xpbmVhciwKPiA+ICsJLnlmX3RvX2xpbmVh ciAgICAgID0gY29weV95Zl90b19saW5lYXIsCj4gPiArfSwKPiA+ICsvKiBHZW5lcmF0aW9uIDEy ICovCj4gPiArewo+ID4gKwkuZ2VuX3N0YXJ0ICAgICAgICAgPSAxMiwKPiA+ICsJLmdlbl9lbmQg ICAgICAgICAgID0gMTIsCj4gPiArCS5zdXBwb3J0ZWRfdGlsZXMgICA9IFRJTEVfTk9ORSB8IFRJ TEVfWCB8IFRJTEVfWSB8IFRJTEVfWWYgfCBUSUxFX1lzLAo+ID4gKwkubGluZWFyX3RvICAgICAg ICAgPSBjb3B5X2xpbmVhcl90b193YywKPiA+ICsJLmxpbmVhcl90b194ICAgICAgID0gY29weV9s aW5lYXJfdG9feCwKPiA+ICsJLmxpbmVhcl90b195ICAgICAgID0gY29weV9saW5lYXJfdG9feSwK PiA+ICsJLmxpbmVhcl90b195ZiAgICAgID0gY29weV9saW5lYXJfdG9feWYsCj4gPiArCS5saW5l YXJfdG9feXMgICAgICA9IE5VTEwsICAgICAgICAgICAgICAgLyogdG8gYmUgaW1wbGVtZW50ZWQg Ki8KPiA+ICsJLnRvX2xpbmVhciAgICAgICAgID0gY29weV93Y190b19saW5lYXIsCj4gPiArCS54 X3RvX2xpbmVhciAgICAgICA9IGNvcHlfeF90b19saW5lYXIsCj4gPiArCS55X3RvX2xpbmVhciAg ICAgICA9IGNvcHlfeV90b19saW5lYXIsCj4gPiArCS55Zl90b19saW5lYXIgICAgICA9IGNvcHlf eWZfdG9fbGluZWFyLAo+ID4gKwkueXNfdG9fbGluZWFyICAgICAgPSBOVUxMLCAgICAgICAgICAg ICAgIC8qIHRvIGJlIGltcGxlbWVudGVkICovCj4gPiArfSwKPiA+ICt9Owo+ID4gKwo+ID4gK3N0 YXRpYyBpbnQgX19nZW1fZ2V0X3RpbGluZyhpbnQgZmQsIHN0cnVjdCBkcm1faTkxNV9nZW1fZ2V0 X3RpbGluZyAqYXJnKQo+ID4gK3sKPiA+ICsJaW50IGVycjsKPiA+ICsKPiA+ICsJZXJyID0gMDsK PiA+ICsJaWYgKGlndF9pb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VNX0dFVF9USUxJTkcsIGFy ZykpCj4gPiArCQllcnIgPSAtZXJybm87Cj4gPiArCWVycm5vID0gMDsKPiA+ICsKPiA+ICsJcmV0 dXJuIGVycjsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGJvb2wgX19nZXRfdGlsaW5nKGludCBm ZCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCAqdGlsaW5nLAo+ID4gKwkJCSB1aW50MzJfdCAq c3dpenpsZSkKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fZ2V0X3RpbGluZyBnZXRf dGlsaW5nOwo+ID4gKwo+ID4gKwltZW1zZXQoJmdldF90aWxpbmcsIDAsIHNpemVvZihnZXRfdGls aW5nKSk7Cj4gPiArCWdldF90aWxpbmcuaGFuZGxlID0gaGFuZGxlOwo+ID4gKwo+ID4gKwlpZiAo X19nZW1fZ2V0X3RpbGluZyhmZCwgJmdldF90aWxpbmcpICE9IDApCj4gPiArCQlyZXR1cm4gZmFs c2U7Cj4gPiArCj4gPiArCSp0aWxpbmcgPSBnZXRfdGlsaW5nLnRpbGluZ19tb2RlOwo+ID4gKwkq c3dpenpsZSA9IGdldF90aWxpbmcuc3dpenpsZV9tb2RlOwo+ID4gKwo+ID4gKwlyZXR1cm4gZ2V0 X3RpbGluZy5waHlzX3N3aXp6bGVfbW9kZSA9PSBnZXRfdGlsaW5nLnN3aXp6bGVfbW9kZTsKPiA+ ICt9Cj4gPiArCj4gPiArc3RhdGljIGJvb2wgcHJvYmVfaHdfdGlsaW5nKGludCBmZCwgdWludDMy X3QgdGlsaW5nKQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9zZXRfdGlsaW5nIHN0 Owo+ID4gKwl1aW50NjRfdCBzaXplID0gMTAyNCAqIDEwMjQ7Cj4gPiArCXVpbnQzMl90IGhhbmRs ZSwgYnVmX3RpbGluZywgYnVmX3N3aXp6bGU7Cj4gPiArCXVpbnQzMl90IHN0cmlkZTsKPiA+ICsJ aW50IHJldDsKPiA+ICsJYm9vbCBpc19zZXQ7Cj4gPiArCj4gPiArCWlmICh0aWxpbmcgPT0gSTkx NV9USUxJTkdfWCkKPiA+ICsJCXN0cmlkZSA9IDUxMjsKPiA+ICsJZWxzZSBpZiAodGlsaW5nID09 IEk5MTVfVElMSU5HX1kpCj4gPiArCQlzdHJpZGUgPSAxMjg7Cj4gPiArCWVsc2UKPiA+ICsJCXJl dHVybiBmYWxzZTsKPiA+ICsKPiA+ICsJaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgc2l6ZSk7Cj4g PiArCj4gPiArCS8qIFNpbmdsZSBzaG90LCBpZiBubyBmZW5jZXMgYXJlIGF2YWlsYWJsZSB3ZSBm YWlsIGltbWVkaWF0ZWx5ICovCj4gPiArCXN0LmhhbmRsZSA9IGhhbmRsZTsKPiA+ICsJc3QudGls aW5nX21vZGUgPSB0aWxpbmc7Cj4gPiArCXN0LnN0cmlkZSA9IHRpbGluZyA/IHN0cmlkZSA6IDA7 Cj4gPiArCXJldCA9IGlvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fU0VUX1RJTElORywgJnN0 KTsKPiA+ICsJaWYgKHJldCkKPiA+ICsJCWdvdG8gZW5kOwo+ID4gKwo+ID4gKwlpc19zZXQgPSBf X2dldF90aWxpbmcoZmQsIGhhbmRsZSwgJmJ1Zl90aWxpbmcsICZidWZfc3dpenpsZSk7Cj4gPiAr Cj4gPiArZW5kOgo+ID4gKwlnZW1fY2xvc2UoZmQsIGhhbmRsZSk7Cj4gPiArCj4gPiArCXJldHVy biBpc19zZXQ7Cj4gPiArfQo+ID4gKwo+ID4gK3N0cnVjdCBidWZfb3BzICpidWZfb3BzX2dldChp bnQgZmQsIGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncikKPiA+ICt7Cj4gPiArCXN0cnVjdCBidWZf b3BzICpib3BzID0gY2FsbG9jKDEsIHNpemVvZigqYm9wcykpOwo+ID4gKwl1aW50MzJfdCBkZXZp ZDsKPiA+ICsJaW50IGdlbmVyYXRpb247Cj4gPiArCj4gPiArCWlndF9hc3NlcnQoYnVmbWdyKTsK PiA+ICsJaWd0X2Fzc2VydChib3BzKTsKPiA+ICsKPiA+ICsJZGV2aWQgPSBpbnRlbF9nZXRfZHJt X2RldmlkKGZkKTsKPiA+ICsJZ2VuZXJhdGlvbiA9IGludGVsX2dlbihkZXZpZCk7Cj4gPiArCj4g PiArCS8qIFByZWRlZmluZWQgc2V0dGluZ3MgKi8KPiA+ICsJZm9yIChpbnQgaSA9IDA7IGkgPCBB UlJBWV9TSVpFKGJ1Zl9vcHNfYXJyKTsgaSsrKSB7Cj4gPiArCQlpZiAoZ2VuZXJhdGlvbiA+PSBi dWZfb3BzX2FycltpXS5nZW5fc3RhcnQgJiYKPiA+ICsJCQkJZ2VuZXJhdGlvbiA8PSBidWZfb3Bz X2FycltpXS5nZW5fZW5kKSB7Cj4gPiArCQkJbWVtY3B5KGJvcHMsICZidWZfb3BzX2FycltpXSwg c2l6ZW9mKCpib3BzKSk7Cj4gPiArCQkJYm9wcy0+ZmQgPSBmZDsKPiA+ICsJCQlib3BzLT5idWZt Z3IgPSBidWZtZ3I7Cj4gPiArCQkJYm9wcy0+aW50ZWxfZ2VuID0gZ2VuZXJhdGlvbjsKPiA+ICsJ CQlpZ3RfZGVidWcoImdlbmVyYXRpb246ICVkLCBzdXBwb3J0ZWQgdGlsZXM6IDB4JTAyeFxuIiwK PiA+ICsJCQkJICBnZW5lcmF0aW9uLCBib3BzLT5zdXBwb3J0ZWRfdGlsZXMpOwo+ID4gKwkJCWJy ZWFrOwo+ID4gKwkJfQo+ID4gKwl9Cj4gPiArCj4gPiArCS8qIExldCdzIHByb2JlIFggYW5kIFkg aHcgdGlsaW5nIHN1cHBvcnQgKi8KPiA+ICsJaWYgKGJvcHMtPmh3X3RpbGVzICYgVElMRV9YKSB7 Cj4gPiArCQlib29sIHN1cHBvcnRlZCA9IHByb2JlX2h3X3RpbGluZyhmZCwgSTkxNV9USUxJTkdf WCk7Cj4gPiArCj4gPiArCQlpZ3RfZGVidWcoIlggZmVuY2Ugc3VwcG9ydDogJXNcbiIsIHN1cHBv cnRlZCA/ICJ5ZXMiIDogIm5vIik7Cj4gPiArCQlpZiAoIXN1cHBvcnRlZCkgewo+ID4gKwkJCWJv cHMtPmh3X3RpbGVzICY9IH5USUxFX1g7Cj4gPiArCQkJYm9wcy0+bGluZWFyX3RvX3ggPSBjb3B5 X2xpbmVhcl90b194Owo+ID4gKwkJCWJvcHMtPnhfdG9fbGluZWFyID0gY29weV94X3RvX2xpbmVh cjsKPiA+ICsJCX0KPiA+ICsJfQo+ID4gKwo+ID4gKwlpZiAoYm9wcy0+aHdfdGlsZXMgJiBUSUxF X1kpIHsKPiA+ICsJCWJvb2wgc3VwcG9ydGVkID0gcHJvYmVfaHdfdGlsaW5nKGZkLCBJOTE1X1RJ TElOR19ZKTsKPiA+ICsKPiA+ICsJCWlndF9kZWJ1ZygiWSBmZW5jZSBzdXBwb3J0OiAlc1xuIiwg c3VwcG9ydGVkID8gInllcyIgOiAibm8iKTsKPiA+ICsJCWlmICghc3VwcG9ydGVkKSB7Cj4gPiAr CQkJYm9wcy0+aHdfdGlsZXMgJj0gflRJTEVfWTsKPiA+ICsJCQlib3BzLT5saW5lYXJfdG9feSA9 IGNvcHlfbGluZWFyX3RvX3k7Cj4gPiArCQkJYm9wcy0+eV90b19saW5lYXIgPSBjb3B5X3lfdG9f bGluZWFyOwo+ID4gKwkJfQo+ID4gKwl9Cj4gPiArCj4gPiArCWlndF9hc3NlcnQoYm9wcy0+aW50 ZWxfZ2VuKTsKPiA+ICsKPiA+ICsJcmV0dXJuIGJvcHM7Cj4gPiArfQo+ID4gKwo+ID4gK3ZvaWQg YnVmX29wc19zd2l0Y2hfdG9fc29md2FyZV90aWxpbmcoc3RydWN0IGJ1Zl9vcHMgKmJvcHMpCj4g c28gZmFyIHNvIGdvb2QgOikgZmlyc3QgdHlwbyBeIHMvc29md2FyZS9zb2Z0d2FyZS8KPiBDaGVj ayBkZWNsYXJhdGlvbiB0b28gOikKPiA+ICt7Cj4gPiArCWlndF9kZWJ1ZygiU3dpdGNoIHRvIHNv ZnR3YXJlIHRpbGluZy9kZXRpbGluZyBvZiBYL1kgc3VyZmFjZXNcbiIpOwo+ID4gKwo+ID4gKwlp Z3RfYXNzZXJ0KGJvcHMpOwo+ID4gKwo+ID4gKwlib3BzLT5od190aWxlcyA9IDA7Cj4gPiArCWJv cHMtPmxpbmVhcl90b194ID0gY29weV9saW5lYXJfdG9feDsKPiA+ICsJYm9wcy0+bGluZWFyX3Rv X3kgPSBjb3B5X2xpbmVhcl90b195Owo+ID4gKwlib3BzLT54X3RvX2xpbmVhciA9IGNvcHlfeF90 b19saW5lYXI7Cj4gPiArCWJvcHMtPnlfdG9fbGluZWFyID0gY29weV95X3RvX2xpbmVhcjsKPiA+ ICt9Cj4gPiArCj4gPiArYm9vbCBidWZfb3BzX2hhc19od19mZW5jZShzdHJ1Y3QgYnVmX29wcyAq Ym9wcywgdWludDMyX3QgdGlsaW5nKQo+ID4gK3sKPiA+ICsJdWludDMyX3QgdGlsZV9tYXNrID0g KDEgPDwgdGlsaW5nKTsKPiA+ICsKPiA+ICsJaWd0X2Fzc2VydChib3BzKTsKPiA+ICsKPiA+ICsJ aWYgKHRpbGVfbWFzayAmIGJvcHMtPmh3X3RpbGVzKQo+ID4gKwkJcmV0dXJuIHRydWU7Cj4gPiAr Cj4gPiArCXJldHVybiBmYWxzZTsKPiA+ICt9Cj4gPiArCj4gPiArYm9vbCBidWZfb3BzX2hhc190 aWxpbmdfc3VwcG9ydChzdHJ1Y3QgYnVmX29wcyAqYm9wcywgdWludDMyX3QgdGlsaW5nKQo+ID4g K3sKPiA+ICsJdWludDMyX3QgdGlsZV9tYXNrID0gKDEgPDwgdGlsaW5nKTsKPiA+ICsKPiA+ICsJ aWd0X2Fzc2VydChib3BzKTsKPiA+ICsKPiA+ICsJaWYgKHRpbGVfbWFzayAmIGJvcHMtPnN1cHBv cnRlZF90aWxlcykKPiA+ICsJCXJldHVybiB0cnVlOwo+ID4gKwo+ID4gKwlyZXR1cm4gZmFsc2U7 Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgYnVmX2F1eF93aWR0aChpbnQgZ2VuLCBjb25z dCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmKQpTaW1pbGFyIGZ1Y3Rpb25zIChidWZfYXV4X2hlaWdodCkg YXMgd2VsbCBhcmUgc3RpbGwgaW4KdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkgLiBJcyBpdCBi eSBwdXJwb3NlPwpBbmQgaXQgbG9va3MgbGlrZSB0aGVzZSAyIF4gdiBhcmUgb25seSB1c2VkIGlu IGxpYiB3aGlsZSBjb3VsZCBiZSB1c2VkIGluIHRlc3QKZnVuY3Rpb25zLiAKCkJUVyAtIGZpbmFs bHkgd2UgaGF2ZSBzb21lb25lIHdobyB3YW50cyB0byBtYWtlIGxpZmUgZWFzaWVyIHdpdGggcmVu ZGVyY29weS4KS2FzaWEgOikKPiA+ICt7Cj4gPiArCS8qCj4gPiArCSAqIEdFTjEyKzogVGhlIEFV WCBDQ1MgdW5pdCBzaXplIGlzIDY0IGJ5dGVzIG1hcHBpbmcgNCBtYWluIHN1cmZhY2UKPiA+ICsJ ICogdGlsZXMuIFRodXMgdGhlIHdpZHRoIG9mIHRoZSBDQ1MgdW5pdCBpcyA0KjMyPTEyOCBwaXhl bHMgb24gdGhlCj4gPiArCSAqIG1haW4gc3VyZmFjZS4KPiA+ICsJICovCj4gPiArCWlmIChnZW4g Pj0gMTIpCj4gPiArCQlyZXR1cm4gRElWX1JPVU5EX1VQKGlndF9idWZfd2lkdGgoYnVmKSwgMTI4 KSAqIDY0Owo+ID4gKwo+ID4gKwlyZXR1cm4gRElWX1JPVU5EX1VQKGlndF9idWZfd2lkdGgoYnVm KSwgMTAyNCkgKiAxMjg7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgYnVmX2F1eF9oZWln aHQoaW50IGdlbiwgY29uc3Qgc3RydWN0IGlndF9idWYgKmJ1ZikKPiA+ICt7Cj4gPiArCS8qCj4g PiArCSAqIEdFTjEyKzogVGhlIEFVWCBDQ1MgdW5pdCBzaXplIGlzIDY0IGJ5dGVzIG1hcHBpbmcg NCBtYWluIHN1cmZhY2UKPiA+ICsJICogdGlsZXMuIFRodXMgdGhlIGhlaWdodCBvZiB0aGUgQ0NT IHVuaXQgaXMgMzIgcGl4ZWwgcm93cyBvbiB0aGUgbWFpbgo+ID4gKwkgKiBzdXJmYWNlLgo+ID4g KwkgKi8KPiA+ICsJaWYgKGdlbiA+PSAxMikKPiA+ICsJCXJldHVybiBESVZfUk9VTkRfVVAoaWd0 X2J1Zl9oZWlnaHQoYnVmKSwgMzIpOwo+ID4gKwo+ID4gKwlyZXR1cm4gRElWX1JPVU5EX1VQKGln dF9idWZfaGVpZ2h0KGJ1ZiksIDUxMikgKiAzMjsKPiA+ICt9Cj4gPiArCj4gPiArdm9pZCBpZ3Rf YnVmX2luaXQoc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIHN0cnVjdCBpZ3RfYnVmICpidWYsCj4gPiAr CQkgIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGJwcCwKPiA+ICsJCSAgdWludDMyX3QgcmVx X3RpbGluZywgYm9vbCBjY3MpCj4gPiArewo+ID4gKwl1aW50MzJfdCB0aWxpbmcgPSByZXFfdGls aW5nOwo+ID4gKwlib29sIHN1cHBvcnRzX2h3X2ZlbmNlczsKPiA+ICsKPiA+ICsJaWd0X2Fzc2Vy dChib3BzKTsKPiA+ICsKPiA+ICsJc3VwcG9ydHNfaHdfZmVuY2VzID0gYnVmX29wc19oYXNfaHdf ZmVuY2UoYm9wcywgcmVxX3RpbGluZyk7Cj4gPiArCj4gPiArCW1lbXNldChidWYsIDAsIHNpemVv ZigqYnVmKSk7Cj4gPiArCj4gPiArCWlmIChjY3MpIHsKPiA+ICsJCWludCBhdXhfd2lkdGgsIGF1 eF9oZWlnaHQ7Cj4gPiArCQlpbnQgc2l6ZTsKPiA+ICsKPiA+ICsJCWlndF9yZXF1aXJlKGJvcHMt PmludGVsX2dlbiA+PSA5KTsKPiA+ICsJCWlndF9hc3NlcnQocmVxX3RpbGluZyA9PSBJOTE1X1RJ TElOR19ZIHx8Cj4gPiArCQkJICAgcmVxX3RpbGluZyA9PSBJOTE1X1RJTElOR19ZZik7Cj4gPiAr Cj4gPiArCQkvKgo+ID4gKwkJICogT24gR0VOMTIrIHdlIGFsaWduIHRoZSBtYWluIHN1cmZhY2Ug dG8gNCAqIDQgbWFpbiBzdXJmYWNlCj4gPiArCQkgKiB0aWxlcywgd2hpY2ggaXMgNjRrQi4gVGhl c2UgMTYgdGlsZXMgYXJlIG1hcHBlZCBieSA0IEFVWAo+ID4gKwkJICogQ0NTIHVuaXRzLCB0aGF0 IGlzIDQgKiA2NCBieXRlcy4gVGhlc2UgNCBDQ1MgdW5pdHMgYXJlIGluCj4gPiArCQkgKiB0dXJu IG1hcHBlZCBieSBvbmUgTDEgQVVYIHBhZ2UgdGFibGUgZW50cnkuCj4gPiArCQkgKi8KPiA+ICsJ CWlmIChib3BzLT5pbnRlbF9nZW4gPj0gMTIpCj4gPiArCQkJYnVmLT5zdHJpZGUgPSBBTElHTih3 aWR0aCAqIChicHAgLyA4KSwgMTI4ICogNCk7Cj4gPiArCQllbHNlCj4gPiArCQkJYnVmLT5zdHJp ZGUgPSBBTElHTih3aWR0aCAqIChicHAgLyA4KSwgMTI4KTsKPiA+ICsKPiA+ICsJCWlmIChib3Bz LT5pbnRlbF9nZW4gPj0gMTIpCj4gPiArCQkJaGVpZ2h0ID0gQUxJR04oaGVpZ2h0LCA0ICogMzIp Owo+ID4gKwo+ID4gKwkJYnVmLT5zaXplID0gYnVmLT5zdHJpZGUgKiBoZWlnaHQ7Cj4gPiArCQli dWYtPnRpbGluZyA9IHRpbGluZzsKPiA+ICsJCWJ1Zi0+YnBwID0gYnBwOwo+ID4gKwo+ID4gKwkJ YXV4X3dpZHRoID0gYnVmX2F1eF93aWR0aChib3BzLT5pbnRlbF9nZW4sIGJ1Zik7Cj4gPiArCQlh dXhfaGVpZ2h0ID0gYnVmX2F1eF9oZWlnaHQoYm9wcy0+aW50ZWxfZ2VuLCBidWYpOwo+ID4gKwo+ ID4gKwkJYnVmLT5hdXgub2Zmc2V0ID0gYnVmLT5zdHJpZGUgKiBBTElHTihoZWlnaHQsIDMyKTsK PiA+ICsJCWJ1Zi0+YXV4LnN0cmlkZSA9IGF1eF93aWR0aDsKPiA+ICsKPiA+ICsJCXNpemUgPSBi dWYtPmF1eC5vZmZzZXQgKyBhdXhfd2lkdGggKiBhdXhfaGVpZ2h0Owo+ID4gKwo+ID4gKwkJYnVm LT5ibyA9IGRybV9pbnRlbF9ib19hbGxvYyhib3BzLT5idWZtZ3IsICIiLCBzaXplLCA0MDk2KTsK PiA+ICsKPiA+ICsJCWlmICh0aWxpbmcgPT0gSTkxNV9USUxJTkdfWSAmJiBzdXBwb3J0c19od19m ZW5jZXMpIHsKPiA+ICsJCQlkcm1faW50ZWxfYm9fc2V0X3RpbGluZyhidWYtPmJvLCAmdGlsaW5n LCBidWYtPnN0cmlkZSk7Cj4gPiArCQkJaWd0X2Fzc2VydF9lcSh0aWxpbmcsIHJlcV90aWxpbmcp Owo+ID4gKwkJfQo+ID4gKwl9IGVsc2Ugewo+ID4gKwkJLyogUmVxdWVzdGVkIGJvIG11c3QgYmUg aHcgdGlsZWQgKi8KPiA+ICsJCWlmIChzdXBwb3J0c19od19mZW5jZXMpIHsKPiA+ICsJCQl1bnNp Z25lZCBsb25nIHBpdGNoOwo+ID4gKwo+ID4gKwkJCWJ1Zi0+Ym8gPSBkcm1faW50ZWxfYm9fYWxs b2NfdGlsZWQoYm9wcy0+YnVmbWdyLCAiIiwKPiA+ICsJCQkJCQkJICAgd2lkdGgsIGhlaWdodCwK PiA+ICsJCQkJCQkJICAgYnBwIC8gOCwKPiA+ICsJCQkJCQkJICAgJnRpbGluZywgJnBpdGNoLCAw KTsKPiA+ICsJCQlpZ3RfYXNzZXJ0X2VxKHRpbGluZywgcmVxX3RpbGluZyk7Cj4gPiArCQkJaWd0 X2Fzc2VydChidWYtPmJvKTsKPiA+ICsKPiA+ICsJCQlidWYtPnN0cmlkZSA9IHBpdGNoOwo+ID4g KwkJCWJ1Zi0+dGlsaW5nID0gdGlsaW5nOwo+ID4gKwkJCWJ1Zi0+c2l6ZSA9IHBpdGNoICogaGVp Z2h0Owo+ID4gKwkJCWJ1Zi0+YnBwID0gYnBwOwo+ID4gKwkJfSBlbHNlIHsKPiA+ICsJCQkvKiBV c2UgYm8gYWxsb2MgYW5kIHNvZnR3YXJlIHRpbGluZy9kZXRpbGluZyAqLwo+ID4gKwkJCWludCBz aXplOwo+ID4gKwo+ID4gKwkJCWJ1Zi0+c3RyaWRlID0gQUxJR04od2lkdGggKiAoYnBwIC8gOCks IDEyOCk7Cj4gPiArCQkJYnVmLT5zaXplID0gYnVmLT5zdHJpZGUgKiBoZWlnaHQ7Cj4gPiArCQkJ YnVmLT50aWxpbmcgPSB0aWxpbmc7Cj4gPiArCQkJYnVmLT5icHAgPSBicHA7Cj4gPiArCj4gPiAr CQkJc2l6ZSA9IGJ1Zi0+c3RyaWRlICogQUxJR04oaGVpZ2h0LCAzMik7Cj4gPiArCj4gPiArCQkJ YnVmLT5ibyA9IGRybV9pbnRlbF9ib19hbGxvYyhib3BzLT5idWZtZ3IsICIiLCBzaXplLAo+ID4g KwkJCQkJCSAgICAgNDA5Nik7Cj4gPiArCQkJaWd0X2Fzc2VydChidWYtPmJvKTsKPiA+ICsJCX0K PiA+ICsJfQo+ID4gK30KPiA+IGRpZmYgLS1naXQgYS9saWIvaW50ZWxfYnVmb3BzLmggYi9saWIv aW50ZWxfYnVmb3BzLmgKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAw MC4uZTUzYzZlYmMKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2xpYi9pbnRlbF9idWZvcHMu aAo+ID4gQEAgLTAsMCArMSwyNCBAQAo+ID4gKyNpZm5kZWYgX19JTlRFTF9CVUZPUFNfSF9fCj4g PiArI2RlZmluZSBfX0lOVEVMX0JVRk9QU19IX18KPiA+ICsKPiA+ICsjaW5jbHVkZSAiaW50ZWxf YmF0Y2hidWZmZXIuaCIKPiA+ICsKPiA+ICtzdHJ1Y3QgYnVmX29wczsKPiA+ICsKPiA+ICtzdHJ1 Y3QgYnVmX29wcyAqYnVmX29wc19nZXQoaW50IGZkLCBkcm1faW50ZWxfYnVmbWdyICpidWZtZ3Ip Owo+ID4gK3ZvaWQgYnVmX29wc19zd2l0Y2hfdG9fc29md2FyZV90aWxpbmcoc3RydWN0IGJ1Zl9v cHMgKmJvcHMpOwo+ID4gKwo+ID4gK3ZvaWQgY29weV9idWZfdG9fbGluZWFyKHN0cnVjdCBidWZf b3BzICpib3BzLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAo+ID4gKwkJCXVpbnQzMl90ICpsaW5lYXIp Owo+ID4gKwo+ID4gK3ZvaWQgY29weV9saW5lYXJfdG9fYnVmKHN0cnVjdCBidWZfb3BzICpib3Bz LCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAo+ID4gKwkJCXVpbnQzMl90ICpsaW5lYXIpOwo+ID4gKwo+ ID4gK2Jvb2wgYnVmX29wc19oYXNfaHdfZmVuY2Uoc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIHVpbnQz Ml90IHRpbGluZyk7Cj4gPiArYm9vbCBidWZfb3BzX2hhc190aWxpbmdfc3VwcG9ydChzdHJ1Y3Qg YnVmX29wcyAqYm9wcywgdWludDMyX3QgdGlsaW5nKTsKPiA+ICsKPiA+ICt2b2lkIGlndF9idWZf aW5pdChzdHJ1Y3QgYnVmX29wcyAqYm9wcywgc3RydWN0IGlndF9idWYgKmJ1ZiwKPiA+ICsJCSAg aW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgYnBwLAo+ID4gKwkJICB1aW50MzJfdCByZXFfdGls aW5nLCBib29sIGNjcyk7Cj4gPiArCj4gPiArI2VuZGlmCj4gPiBkaWZmIC0tZ2l0IGEvbGliL21l c29uLmJ1aWxkIGIvbGliL21lc29uLmJ1aWxkCj4gPiBpbmRleCAzZjkwODkxMi4uYTg4YzNlODkg MTAwNjQ0Cj4gPiAtLS0gYS9saWIvbWVzb24uYnVpbGQKPiA+ICsrKyBiL2xpYi9tZXNvbi5idWls ZAo+ID4gQEAgLTI2LDYgKzI2LDcgQEAgbGliX3NvdXJjZXMgPSBbCj4gPiAgCSdpZ3RfeDg2LmMn LAo+ID4gIAknaW5zdGRvbmUuYycsCj4gPiAgCSdpbnRlbF9iYXRjaGJ1ZmZlci5jJywKPiA+ICsJ J2ludGVsX2J1Zm9wcy5jJywKPiA+ICAJJ2ludGVsX2NoaXBzZXQuYycsCj4gPiAgCSdpbnRlbF9k ZXZpY2VfaW5mby5jJywKPiA+ICAJJ2ludGVsX29zLmMnLAo+ID4gLS0gCj4gPiAyLjIzLjAKPiA+ Cj4gSHVnZSBhbmQgcXVpdGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBpbnRyb2R1Y2VkIQo+IEthc2lh Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBpZ3Qt ZGV2IG1haWxpbmcgbGlzdAo+IGlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBs aXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==