From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Antoine Subject: Re: [PATCH v4] drm/i915 : Added Programming of the MOCS Date: Wed, 1 Jul 2015 08:29:01 +0100 (BST) Message-ID: References: <1434554362-22384-1-git-send-email-peter.antoine@intel.com> <87ioact03d.fsf@riseup.net> <878ub13zdi.fsf@riseup.net> <874mlp3vtc.fsf@riseup.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 802116EA28 for ; Wed, 1 Jul 2015 00:29:03 -0700 (PDT) In-Reply-To: <874mlp3vtc.fsf@riseup.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Francisco Jerez Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAzMCBKdW4gMjAxNSwgRnJhbmNpc2NvIEplcmV6IHdyb3RlOgoKPiBGcmFuY2lzY28g SmVyZXogPGN1cnJvamVyZXpAcmlzZXVwLm5ldD4gd3JpdGVzOgo+Cj4+IFBldGVyIEFudG9pbmUg PHBldGVyLmFudG9pbmVAaW50ZWwuY29tPiB3cml0ZXM6Cj4+Cj4+PiBPbiBNb24sIDI5IEp1biAy MDE1LCBQZXRlciBBbnRvaW5lIHdyb3RlOgo+Pj4KPj4+PiBPbiBUaHUsIDI1IEp1biAyMDE1LCBG cmFuY2lzY28gSmVyZXogd3JvdGU6Cj4+Pj4KPj4+Pj4gUGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50 b2luZUBpbnRlbC5jb20+IHdyaXRlczoKPj4+Pj4KPj4+Pj4+IFRoaXMgY2hhbmdlIGFkZHMgdGhl IHByb2dyYW1taW5nIG9mIHRoZSBNT0NTIHJlZ2lzdGVycyB0byB0aGUgZ2VuIDkrCj4+Pj4+PiBw bGF0Zm9ybXMuIFRoaXMgY2hhbmdlIHNldCBwcm9ncmFtcyB0aGUgTU9DUyByZWdpc3RlciB2YWx1 ZXMgdG8gYSBzZXQKPj4+Pj4+IG9mIHZhbHVlcyB0aGF0IGFyZSBkZWZpbmVkIHRvIGJlIG9wdGlt YWwuCj4+Pj4+Pgo+Pj4+Pj4gSXQgY3JlYXRlcyBhIGZpeGVkIHJlZ2lzdGVyIHNldCB0aGF0IGlz IHByb2dyYW1tZWQgYWNyb3NzIHRoZSBkaWZmZXJlbnQKPj4+Pj4+IGVuZ2luZXMgc28gdGhhdCBh bGwgZW5naW5lcyBoYXZlIHRoZSBzYW1lIHRhYmxlLiBUaGlzIGlzIGRvbmUgYXMgdGhlCj4+Pj4+ PiBtYWluIFJDUyBjb250ZXh0IG9ubHkgaG9sZHMgdGhlIHJlZ2lzdGVycyBmb3IgaXRzZWxmIGFu ZCB0aGUgc2hhcmVkCj4+Pj4+PiBMMyB2YWx1ZXMuIEJ5IHRyeWluZyB0byBrZWVwIHRoZSByZWdp c3RlcnMgY29uc2lzdGVudCBhY3Jvc3MgdGhlCj4+Pj4+PiBkaWZmZXJlbnQgZW5naW5lcyBpdCBz aG91bGQgbWFrZSB0aGUgcHJvZ3JhbW1pbmcgZm9yIHRoZSByZWdpc3RlcnMKPj4+Pj4+IGNvbnNp c3RlbnQuCj4+Pj4+Pgo+Pj4+Pj4gdjI6Cj4+Pj4+PiAtJ3N0YXRpYyBjb25zdCcgZm9yIHByaXZh dGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBzdHlsZSBjaGFuZ2VzLihNYXR0Cj4+Pj4gVHVybmVyKQo+ Pj4+Pj4gdjM6Cj4+Pj4+PiAtIE1ha2UgdGhlIHRhYmxlcyAic2xpZ2h0bHkiIG1vcmUgcmVhZGFi bGUuIChEYW1pZW4gTGVzcGlhdSkKPj4+Pj4+IC0gVXBkYXRlZCB0YWJsZXMgZml4IHBlcmZvcm1h bmNlIHJlZ3Jlc3Npb24uCj4+Pj4+PiB2NDoKPj4+Pj4+IC0gQ29kZSBmb3JtYXR0aW5nLiAoQ2hy aXMgV2lsc29uKQo+Pj4+Pj4gLSByZS1wcml2YXRpc2VkIG1vY3MgY29kZS4gKERhbmllbCBWZXR0 ZXIpCj4+Pj4+Pgo+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogUGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50 b2luZUBpbnRlbC5jb20+Cj4+Pj4+PiAtLS0KPj4+Pj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9N YWtlZmlsZSAgICAgfCAgIDEgKwo+Pj4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVn LmggICB8ICAgOSArCj4+Pj4+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgIHwg IDEwICstCj4+Pj4+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmggIHwgICA0ICsK Pj4+Pj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMgfCAzNzMKPj4+PiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4+Pj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX21vY3MuaCB8ICA2NCArKysrKysrCj4+Pj4+PiAgNiBmaWxlcyBjaGFuZ2Vk LCA0NjAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+Pj4+Pj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMKPj4+Pj4+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5oCj4+Pj4+Pgo+Pj4+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUKPj4+Pj4+IGluZGV4IGI3ZGRmNDguLmM3ODFlMTkgMTAwNjQ0Cj4+ Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+Pj4+Pj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPj4+Pj4+IEBAIC0zNSw2ICszNSw3IEBAIGk5MTUt eSArPSBpOTE1X2NtZF9wYXJzZXIubyBcCj4+Pj4+PiAgCSAgaTkxNV9pcnEubyBcCj4+Pj4+PiAg CSAgaTkxNV90cmFjZV9wb2ludHMubyBcCj4+Pj4+PiAgCSAgaW50ZWxfbHJjLm8gXAo+Pj4+Pj4g KwkgIGludGVsX21vY3MubyBcCj4+Pj4+PiAgCSAgaW50ZWxfcmluZ2J1ZmZlci5vIFwKPj4+Pj4+ ICAJICBpbnRlbF91bmNvcmUubwo+Pj4+Pj4KPj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5oCj4+Pj4+PiBpbmRleCA3MjEzMjI0Li4zYTQzNWI1IDEwMDY0NAo+Pj4+Pj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaAo+Pj4+Pj4gQEAgLTc4MjksNCArNzgyOSwxMyBAQCBlbnVtIHNrbF9k aXNwX3Bvd2VyX3dlbGxzIHsKPj4+Pj4+ICAjZGVmaW5lIF9QQUxFVFRFX0EgKGRldl9wcml2LT5p bmZvLmRpc3BsYXlfbW1pb19vZmZzZXQgKyAweGEwMDApCj4+Pj4+PiAgI2RlZmluZSBfUEFMRVRU RV9CIChkZXZfcHJpdi0+aW5mby5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHhhODAwKQo+Pj4+Pj4K Pj4+Pj4+ICsvKiBNT0NTIChNZW1vcnkgT2JqZWN0IENvbnRyb2wgU3RhdGUpIHJlZ2lzdGVycyAq Lwo+Pj4+Pj4gKyNkZWZpbmUgR0VOOV9MTkNGQ01PQ1MwCQkoMHhCMDIwKQkvKiBMMyBDYWNoZSBD b250cm9sCj4+Pj4gYmFzZSAqLwo+Pj4+Pj4gKwo+Pj4+Pj4gKyNkZWZpbmUgR0VOOV9HRlhfTU9D U18wCQkoMHhjODAwKQkvKiBHcmFwaGljcyBNT0NTIGJhc2UKPj4+PiByZWdpc3RlciovCj4+Pj4+ PiArI2RlZmluZSBHRU45X01GWDBfTU9DU18wCSgweGM5MDApCS8qIE1lZGlhIDAgTU9DUyBiYXNl Cj4+Pj4gcmVnaXN0ZXIqLwo+Pj4+Pj4gKyNkZWZpbmUgR0VOOV9NRlgxX01PQ1NfMAkoMHhjQTAw KQkvKiBNZWRpYSAxIE1PQ1MgYmFzZQo+Pj4+IHJlZ2lzdGVyKi8KPj4+Pj4+ICsjZGVmaW5lIEdF TjlfVkVCT1hfTU9DU18wCSgweGNCMDApCS8qIFZpZGVvIE1PQ1MgYmFzZSByZWdpc3RlciovCj4+ Pj4+PiArI2RlZmluZSBHRU45X0JMVF9NT0NTXzAJCSgweGNjMDApCS8qIEJsaXR0ZXIgTU9DUyBi YXNlCj4+Pj4gcmVnaXN0ZXIqLwo+Pj4+Pj4gKwo+Pj4+Pj4gICNlbmRpZiAvKiBfSTkxNV9SRUdf SF8gKi8KPj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu Ywo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4+Pj4+IGluZGV4IDlm NTQ4NWQuLjczYjkxOWQgMTAwNjQ0Cj4+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYwo+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMK Pj4+Pj4+IEBAIC0xMzUsNiArMTM1LDcgQEAKPj4+Pj4+ICAjaW5jbHVkZSA8ZHJtL2RybVAuaD4K Pj4+Pj4+ICAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+Cj4+Pj4+PiAgI2luY2x1ZGUgImk5MTVf ZHJ2LmgiCj4+Pj4+PiArI2luY2x1ZGUgImludGVsX21vY3MuaCIKPj4+Pj4+Cj4+Pj4+PiAgI2Rl ZmluZSBHRU45X0xSX0NPTlRFWFRfUkVOREVSX1NJWkUgKDIyICogUEFHRV9TSVpFKQo+Pj4+Pj4g ICNkZWZpbmUgR0VOOF9MUl9DT05URVhUX1JFTkRFUl9TSVpFICgyMCAqIFBBR0VfU0laRSkKPj4+ Pj4+IEBAIC03OTYsNyArNzk3LDcgQEAgc3RhdGljIGludCBsb2dpY2FsX3JpbmdfcHJlcGFyZShz dHJ1Y3QKPj4+PiBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAo+Pj4+Pj4gICAqCj4+Pj4+PiAg ICogUmV0dXJuOiBub24temVybyBpZiB0aGUgcmluZ2J1ZmZlciBpcyBub3QgcmVhZHkgdG8gYmUg d3JpdHRlbiB0by4KPj4+Pj4+ICAgKi8KPj4+Pj4+IC1zdGF0aWMgaW50IGludGVsX2xvZ2ljYWxf cmluZ19iZWdpbihzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKPj4+Pj4+ICtpbnQg aW50ZWxfbG9naWNhbF9yaW5nX2JlZ2luKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVm LAo+Pj4+Pj4gIAkJCQkgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwgaW50Cj4+Pj4gbnVt X2R3b3JkcykKPj4+Pj4+ICB7Cj4+Pj4+PiAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcg PSByaW5nYnVmLT5yaW5nOwo+Pj4+Pj4gQEAgLTEzNzksNiArMTM4MCwxMyBAQCBzdGF0aWMgaW50 IGdlbjhfaW5pdF9yY3NfY29udGV4dChzdHJ1Y3QKPj4+PiBpbnRlbF9lbmdpbmVfY3MgKnJpbmcs Cj4+Pj4+PiAgCWlmIChyZXQpCj4+Pj4+PiAgCQlyZXR1cm4gcmV0Owo+Pj4+Pj4KPj4+Pj4+ICsJ LyoKPj4+Pj4+ICsJICogRmFpbGluZyB0byBwcm9ncmFtIHRoZSBNT0NTIGlzIG5vbi1mYXRhbC5U aGUgc3lzdGVtIHdpbGwgbm90Cj4+Pj4+PiArCSAqIHJ1biBhdCBwZWFrIHBlcmZvcm1hbmNlLiBT byBnZW5lcmF0ZSBhIHdhcm5pbmcgYW5kIGNhcnJ5IG9uLgo+Pj4+Pj4gKwkgKi8KPj4+Pj4+ICsJ aWYgKGdlbjlfcHJvZ3JhbV9tb2NzKHJpbmcsIGN0eCkgIT0gMCkKPj4+Pj4+ICsJCURSTV9FUlJP UigiTU9DUyBmYWlsZWQgdG8gcHJvZ3JhbTogZXhwZWN0IHBlcmZvcm1hbmNlCj4+Pj4gaXNzdWVz LiIpOwo+Pj4+Pj4gKwo+Pj4+Pj4gIAlyZXR1cm4gaW50ZWxfbHJfY29udGV4dF9yZW5kZXJfc3Rh dGVfaW5pdChyaW5nLCBjdHgpOwo+Pj4+Pj4gIH0KPj4+Pj4+Cj4+Pj4+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5oCj4+Pj4+PiBpbmRleCAwNGQzYTZkLi5kYmJkNmFmIDEwMDY0NAo+Pj4+ Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKPj4+Pj4+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCj4+Pj4+PiBAQCAtNDQsNiArNDQsMTAgQEAg aW50IGludGVsX2xvZ2ljYWxfcmluZ3NfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPj4+ Pj4+Cj4+Pj4+PiAgaW50IGxvZ2ljYWxfcmluZ19mbHVzaF9hbGxfY2FjaGVzKHN0cnVjdCBpbnRl bF9yaW5nYnVmZmVyICpyaW5nYnVmLAo+Pj4+Pj4gIAkJCQkgIHN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjdHgpOwo+Pj4+Pj4gKwo+Pj4+Pj4gK2ludCBpbnRlbF9sb2dpY2FsX3JpbmdfYmVnaW4oc3Ry dWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCj4+Pj4+PiArCQkJCSAgICBzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY3R4LCBpbnQKPj4+PiBudW1fZHdvcmRzKTsKPj4+Pj4+ICsKPj4+Pj4+ICAv KioKPj4+Pj4+ICAgKiBpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZSgpIC0gYWR2YW5jZSB0aGUg cmluZ2J1ZmZlciB0YWlsCj4+Pj4+PiAgICogQHJpbmdidWY6IFJpbmdidWZmZXIgdG8gYWR2YW5j ZS4KPj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMK Pj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYwo+Pj4+Pj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPj4+Pj4+IGluZGV4IDAwMDAwMDAuLjdjMDllNjcKPj4+Pj4+IC0tLSAvZGV2 L251bGwKPj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYwo+Pj4+ Pj4gQEAgLTAsMCArMSwzNzMgQEAKPj4+Pj4+ICsvKgo+Pj4+Pj4gKyAqIENvcHlyaWdodCAoYykg MjAxNSBJbnRlbCBDb3Jwb3JhdGlvbgo+Pj4+Pj4gKyAqCj4+Pj4+PiArICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n Cj4+Pj4gYQo+Pj4+Pj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk b2N1bWVudGF0aW9uIGZpbGVzICh0aGUKPj4+PiAiU29mdHdhcmUiKSwKPj4+Pj4+ICsgKiB0byBk ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dAo+Pj4+IGxpbWl0YXRpb24KPj4+Pj4+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9k aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwKPj4+PiBzdWJsaWNlbnNlLAo+Pj4+Pj4g KyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVy c29ucyB0byB3aG9tIHRoZQo+Pj4+Pj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICoKPj4+Pj4+ICsgKiBUaGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVk aW5nIHRoZQo+Pj4+IG5leHQKPj4+Pj4+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVk IGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YKPj4+PiB0aGUKPj4+Pj4+ ICsgKiBTb2Z0d2FyZS4KPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAo+Pj4+IEVYUFJFU1Mg T1IKPj4+Pj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GCj4+Pj4gTUVSQ0hBTlRBQklMSVRZLAo+Pj4+Pj4gKyAqIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVAo+ Pj4+IFNIQUxMCj4+Pj4+PiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKPj4+PiBPVEhFUgo+Pj4+Pj4gKyAqIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX SVNFLAo+Pj4+IEFSSVNJTkcgRlJPTSwKPj4+Pj4+ICsgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4+Pj4gSU4g VEhFCj4+Pj4+PiArICogU09GVFdBUkUuCj4+Pj4+PiArICoKPj4+Pj4+ICsgKiBBdXRob3JzOgo+ Pj4+Pj4gKyAqICAgIFBldGVyIEFudG9pbmUgPHBldGVyLmFudG9pbmVAaW50ZWwuY29tPgo+Pj4+ Pj4gKyAqLwo+Pj4+Pj4gKwo+Pj4+Pj4gKyNpbmNsdWRlICJpbnRlbF9tb2NzLmgiCj4+Pj4+PiAr I2luY2x1ZGUgImludGVsX2xyYy5oIgo+Pj4+Pj4gKyNpbmNsdWRlICJpbnRlbF9yaW5nYnVmZmVy LmgiCj4+Pj4+PiArCj4+Pj4+PiArLyogc3RydWN0dXJlcyByZXF1aXJlZCAqLwo+Pj4+Pj4gK3N0 cnVjdCBkcm1faTkxNV9tb2NzX2VudHJ5IHsKPj4+Pj4+ICsJdTMyCWNvbnRyb2xfdmFsdWU7Cj4+ Pj4+PiArCXUxNglsM2NjX3ZhbHVlOwo+Pj4+Pj4gK307Cj4+Pj4+PiArCj4+Pj4+PiArc3RydWN0 IGRybV9pOTE1X21vY3NfdGFibGUgewo+Pj4+Pj4gKwl1MzIJCQkJCXNpemU7Cj4+Pj4+PiArCWNv bnN0IHN0cnVjdCBkcm1faTkxNV9tb2NzX2VudHJ5CSp0YWJsZTsKPj4+Pj4+ICt9Owo+Pj4+Pj4g Kwo+Pj4+Pj4gKy8qIERlZmluZXMgZm9yIHRoZSB0YWJsZXMgKFhYWF9NT0NTXzAgLSBYWFhfTU9D U182MykgKi8KPj4+Pj4+ICsjZGVmaW5lCU1PQ1NfQ0FDSEVBQklMSVRZKHZhbHVlKQkodmFsdWUg PDwgMCkKPj4+Pj4+ICsjZGVmaW5lCU1PQ1NfVEdUX0NBQ0hFKHZhbHVlKQkJKHZhbHVlIDw8IDIp Cj4+Pj4+PiArI2RlZmluZQlNT0NTX0xSVU0odmFsdWUpCQkodmFsdWUgPDwgNCkKPj4+Pj4+ICsj ZGVmaW5lCU1PQ1NfQU9NKHZhbHVlKQkJCSh2YWx1ZSA8PCA2KQo+Pj4+Pj4gKyNkZWZpbmUJTU9D U19MRUNDX0VTQyh2YWx1ZSkJCSh2YWx1ZSA8PCA3KQo+Pj4+Pj4gKyNkZWZpbmUJTU9DU19MRUND X1NDQyh2YWx1ZSkJCSh2YWx1ZSA8PCA4KQo+Pj4+Pj4gKyNkZWZpbmUJTU9DX1BGTSh2YWx1ZSkJ CQkodmFsdWUgPDwgMTEpCj4+Pj4+PiArI2RlZmluZQlNT0NTX1NDRih2YWx1ZSkJCQkodmFsdWUg PDwgMTQpCj4+Pj4+PiArCj4+Pj4+PiArLyogRGVmaW5lcyBmb3IgdGhlIHRhYmxlcyAoTE5DRk1P Q1MwIC0gTE5DRk1PQ1MzMSkgLSB0d28gZW50cmllcyBwZXIgd29yZAo+Pj4+ICovCj4+Pj4+PiAr I2RlZmluZQlNT0NTX0VTQyh2YWx1ZSkJCQkodmFsdWUgPDwgMCkKPj4+Pj4+ICsjZGVmaW5lCU1P Q1NfU0NDKHZhbHVlKQkJCSh2YWx1ZSA8PCAxKQo+Pj4+Pj4gKyNkZWZpbmUJTU9DU19MM19DQUNI RUFCSUxJVFkodmFsdWUpCSh2YWx1ZSA8PCA0KQo+Pj4+Pj4gKwo+Pj4+Pj4gKy8qIEhlbHBlciBk ZWZpbmVzICovCj4+Pj4+PiArI2RlZmluZSBHRU45X05VTV9NT0NTX1JJTkdTCSg1KQkvKiBOdW1i ZXIgb2YgbW9jcyBlbmdpbmVzIHRvIHByb2dyYW0KPj4+PiAqLwo+Pj4+Pj4gKyNkZWZpbmUgR0VO OV9OVU1fTU9DU19FTlRSSUVTCSg2MykJLyogNjMgb3V0IG9mIDY0IC0gNjQgaXMgcnN2cmQKPj4+ PiAqLwo+Pj4+Pj4gKwo+Pj4+Pj4gKy8qIEVEUkFNIENhY2hpbmcgb3B0aW9ucyAqLwo+Pj4+Pj4g KyNkZWZpbmUgRURSQU1fUEFHRVRBQkxFCQkoMCkKPj4+Pj4+ICsjZGVmaW5lIEVEUkFNX1VDCQko MSkKPj4+Pj4+ICsjZGVmaW5lIEVEUkFNX1JFU0VSVkVECQkoMikKPj4+Pj4KPj4+Pj4gQWNjb3Jk aW5nIHRvIHRoZSBCU3BlYyB0aGlzIGlzIFdUIHJhdGhlciB0aGFuIHJlc2VydmVkP2EKPj4+PiBK dXN0IGNoZWNrZWQgdGhlIEJzcGVjIGFuZCB5b3UgYXJlIGNvcnJlY3QsIGNoYW5naW5nIHRoZSB0 ZXh0Lgo+Pj4+IEFzIHdlbGwgYXMgZm9yIHRoZSBpdGVtcyBiZWxvdy4KPj4+IEp1c3QgdG8gYWRk IC0gSSB3YXMgbG9va2luZyBhdCB0aGUgd3JvbmcgZ2VuLgo+Pj4+Pgo+Pj4+Pj4gKyNkZWZpbmUg RURSQU1fV0IJCSgzKQo+Pj4+Pj4gKwo+Pj4+Pj4gKy8qIEwzIENhY2hpbmcgb3B0aW9ucyAqLwo+ Pj4+Pj4gKyNkZWZpbmUgTDNfRElSRUNUCQkoMCkKPj4+Pj4+ICsjZGVmaW5lIEwzX1VDCQkJKDEp Cj4+Pj4+PiArI2RlZmluZSBMM19SRVNFUlZFRAkJKDIpCj4+Pj4+PiArI2RlZmluZSBMM19XQgkJ CSgzKQo+Pj4+Pj4gKwo+Pj4+Pj4gKy8qIHRhcmdldCBjYWNoZSAqLwo+Pj4+Pj4gKyNkZWZpbmUg RUxMQwkJCSgwKQo+Pj4+Pgo+Pj4+PiBCU3BlYyBzYXlzIHRoYXQgdGhpcyBpcyAiVXNlIFRDL0xS VSBjb250cm9scyBmcm9tIHBhZ2UgdGFibGUiLCBidXQgdXBvbgo+Pj4+PiBhIGNsb3NlciBsb29r IGl0IHNlZW1zIGxpa2UgdGhlIEJTcGVjIGlzIHdyb25nIGFuZCB5b3VyIHBhdGNoIGlzCj4+Pj4+ IGNvcnJlY3QuICBDYW4geW91IGNvbmZpcm0gdGhhdCB0aGlzIGlzIHdoYXQgeW91IGludGVuZGVk Pwo+Pj4+IFRoZXNlIHZhbHVlcyBsb29rIGdvb2QsIHRoZXkgYXJlIGJpdHMgMzoyIGZvciB0aGUg WFhYX01PQ1NfTiByZWdpc3RlcnMKPj4+PiAoYzgwMCkgYW5kIGZyaWVuZHMuCj4+Pj4+Cj4+Pj4+ PiArI2RlZmluZSBMTEMJCQkoMSkKPj4+Pj4+ICsjZGVmaW5lIExMQ19FTExDCQkoMikKPj4+Pj4+ ICsKPj4+Pj4+ICsvKgo+Pj4+Pj4gKyAqIE1PQ1MgdGFibGVzCj4+Pj4+PiArICoKPj4+Pj4+ICsg KiBUaGVzZSBhcmUgdGhlIE1PQ1MgdGFibGVzIHRoYXQgYXJlIHByb2dyYW1tZWQgYWNyb3NzIGFs bCB0aGUgcmluZ3MuCj4+Pj4+PiArICogVGhlIGNvbnRyb2wgdmFsdWUgaXMgcHJvZ3JhbW1lZCB0 byBhbGwgdGhlIHJpbmdzIHRoYXQgc3VwcG9ydCB0aGUKPj4+Pj4+ICsgKiBNT0NTIHJlZ2lzdGVy cy4gV2hpbGUgdGhlIGwzY2NfdmFsdWVzIGFyZSBvbmx5IHByb2dyYW1tZWQgdG8gdGhlCj4+Pj4+ PiArICogTE5DRkNNT0NTMCAtIExOQ0ZDTU9DUzMyIHJlZ2lzdGVycy4KPj4+Pj4+ICsgKgo+Pj4+ Pj4gKyAqIE5PVEU6IFRoZXNlIHRhYmxlcyBNVVNUIHN0YXJ0IHdpdGggYmVpbmcgdW5jYWNoZWQg YW5kIHRoZSBsZW5ndGggTVVTVAo+Pj4+IGJlCj4+Pj4+PiArICogICAgICAgbGVzcyB0aGFuIDYz IGFzIHRoZSBsYXN0IHR3byByZWdpc3RlcnMgYXJlIHJlc2VydmVkIGJ5IHRoZQo+Pj4+IGhhcmR3 YXJlLgo+Pj4+Pj4gKyAqLwo+Pj4+Pj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2k5MTVfbW9jc19lbnRy eSBza3lsYWtlX21vY3NfdGFibGVbXSA9IHsKPj4+Pj4+ICsJIC8qIHsweDAwMDAwMDA5LCAweDAw MTB9ICovCj4+Pj4+PiArCXsoTU9DU19DQUNIRUFCSUxJVFkoRURSQU1fVUMpIHwgTU9DU19UR1Rf Q0FDSEUoTExDX0VMTEMpIHwKPj4+Pj4+ICsJCU1PQ1NfTFJVTSgwKSB8IE1PQ1NfQU9NKDApIHwg TU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwKPj4+Pj4+ICsJCU1PQ19QRk0oMCkgfCBN T0NTX1NDRigwKSksCj4+Pj4+PiArCQkoTU9DU19FU0MoMCkgfCBNT0NTX1NDQygwKSB8IE1PQ1Nf TDNfQ0FDSEVBQklMSVRZKEwzX1VDKSl9LAo+Pj4+Pj4gKwkgLyogezB4MDAwMDAwM2IsIDB4MDAz MH0gKi8KPj4+Pj4+ICsJeyhNT0NTX0NBQ0hFQUJJTElUWShFRFJBTV9XQikgfCBNT0NTX1RHVF9D QUNIRShMTENfRUxMQykgfAo+Pj4+Pj4gKwkJTU9DU19MUlVNKDMpIHwgTU9DU19BT00oMCkgfCBN T0NTX0xFQ0NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfAo+Pj4+Pj4gKwkJTU9DX1BGTSgwKSB8IE1P Q1NfU0NGKDApKSwKPj4+Pj4+ICsJCShNT0NTX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9DU19M M19DQUNIRUFCSUxJVFkoTDNfV0IpKX0sCj4+Pj4+PiArCSAvKiB7MHgwMDAwMDAzOSwgMHgwMDEw fSAqLwo+Pj4+Pj4gKwl7KE1PQ1NfQ0FDSEVBQklMSVRZKEVEUkFNX1VDKSB8IE1PQ1NfVEdUX0NB Q0hFKExMQ19FTExDKSB8Cj4+Pj4+PiArCQlNT0NTX0xSVU0oMykgfCBNT0NTX0FPTSgwKSB8IE1P Q1NfTEVDQ19FU0MoMCkgfCBNT0NTX1NDQygwKSB8Cj4+Pj4+PiArCQlNT0NfUEZNKDApIHwgTU9D U19TQ0YoMCkpLAo+Pj4+Pj4gKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wz X0NBQ0hFQUJJTElUWShMM19VQykpfSwKPj4+Pj4+ICsJIC8qIHsweDAwMDAwMDE3LCAweDAwMzB9 ICovCj4+Pj4+PiArCXsoTU9DU19DQUNIRUFCSUxJVFkoRURSQU1fV0IpIHwgTU9DU19UR1RfQ0FD SEUoTExDKSB8Cj4+Pj4+PiArCQlNT0NTX0xSVU0oMSkgfCBNT0NTX0FPTSgwKSB8IE1PQ1NfTEVD Q19FU0MoMCkgfCBNT0NTX1NDQygwKSB8Cj4+Pj4+PiArCQlNT0NfUEZNKDApIHwgTU9DU19TQ0Yo MCkpLAo+Pj4+Pj4gKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hF QUJJTElUWShMM19XQikpfSwKPj4+Pj4+ICsJIC8qIHsweDAwMDAwMDE3LCAweDAwMTB9ICovCj4+ Pj4+PiArCXsoTU9DU19DQUNIRUFCSUxJVFkoRURSQU1fV0IpIHwgTU9DU19UR1RfQ0FDSEUoTExD KSB8Cj4+Pj4+PiArCQlNT0NTX0xSVU0oMSkgfCBNT0NTX0FPTSgwKSB8IE1PQ1NfTEVDQ19FU0Mo MCkgfCBNT0NTX1NDQygwKSB8Cj4+Pj4+PiArCQlNT0NfUEZNKDApIHwgTU9DU19TQ0YoMCkpLAo+ Pj4+Pj4gKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElU WShMM19VQykpfSwKPj4+Pj4+ICsJIC8qIHsweDAwMDAwMDE5LCAweDAwMTB9ICovCj4+Pj4+PiAr CXsoTU9DU19DQUNIRUFCSUxJVFkoRURSQU1fVUMpIHwgTU9DU19UR1RfQ0FDSEUoTExDX0VMTEMp IHwKPj4+Pj4+ICsJCU1PQ1NfTFJVTSgxKSB8IE1PQ1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygw KSB8IE1PQ1NfU0NDKDApIHwKPj4+Pj4+ICsJCU1PQ19QRk0oMCkgfCBNT0NTX1NDRigwKSksCj4+ Pj4+PiArCQkoTU9DU19FU0MoMCkgfCBNT0NTX1NDQygwKSB8IE1PQ1NfTDNfQ0FDSEVBQklMSVRZ KEwzX1VDKSl9LAo+Pj4+Pj4gKwkgLyogezB4MDAwMDAwMzcsIDB4MDAzMH0gKi8KPj4+Pj4+ICsJ eyhNT0NTX0NBQ0hFQUJJTElUWShFRFJBTV9XQikgfCBNT0NTX1RHVF9DQUNIRShMTEMpIHwKPj4+ Pj4+ICsJCU1PQ1NfTFJVTSgzKSB8IE1PQ1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1P Q1NfU0NDKDApIHwKPj4+Pj4+ICsJCU1PQ19QRk0oMCkgfCBNT0NTX1NDRigwKSksCj4+Pj4+PiAr CQkoTU9DU19FU0MoMCkgfCBNT0NTX1NDQygwKSB8IE1PQ1NfTDNfQ0FDSEVBQklMSVRZKEwzX1dC KSl9LAo+Pj4+Pj4gKwkgLyogezB4MDAwMDAwMzcsIDB4MDAxMH0gKi8KPj4+Pj4+ICsJeyhNT0NT X0NBQ0hFQUJJTElUWShFRFJBTV9XQikgfCBNT0NTX1RHVF9DQUNIRShMTEMpIHwKPj4+Pj4+ICsJ CU1PQ1NfTFJVTSgzKSB8IE1PQ1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0ND KDApIHwKPj4+Pj4+ICsJCU1PQ19QRk0oMCkgfCBNT0NTX1NDRigwKSksCj4+Pj4+PiArCQkoTU9D U19FU0MoMCkgfCBNT0NTX1NDQygwKSB8IE1PQ1NfTDNfQ0FDSEVBQklMSVRZKEwzX1VDKSl9LAo+ Pj4+Pj4gKwkgLyogezB4MDAwMDAwM2IsIDB4MDAxMH0gKi8KPj4+Pj4+ICsJeyhNT0NTX0NBQ0hF QUJJTElUWShFRFJBTV9XQikgfCBNT0NTX1RHVF9DQUNIRShMTENfRUxMQykgfAo+Pj4+Pj4gKwkJ TU9DU19MUlVNKDMpIHwgTU9DU19BT00oMCkgfCBNT0NTX0xFQ0NfRVNDKDApIHwgTU9DU19TQ0Mo MCkgfAo+Pj4+Pj4gKwkJTU9DX1BGTSgwKSB8IE1PQ1NfU0NGKDApKSwKPj4+Pj4+ICsJCShNT0NT X0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9DU19MM19DQUNIRUFCSUxJVFkoTDNfVUMpKX0sCj4+ Pj4+PiArfTsKPj4+Pj4KPj4+Pj4gTWVzYSB3aWxsIHdhbnQgYW4gYWRkaXRpb25hbCBlbnRyeSB3 aXRoIFRDPUxMQy9lTExDLCBMZUNDPVBURSwgTDNDQz1XQiwKPj4+Pj4gZXZlcnl0aGluZyBlbHNl IHVuc2V0LCBJJ2xsIHJlcGx5IHdpdGggYSB1c2Vyc3BhY2UgcGF0Y2ggbWFraW5nIHVzZSBvZgo+ Pj4+PiB5b3VyIGNoYW5nZSBpZiB5b3UgYWRkIHN1Y2ggYW4gZW50cnkuCj4+PiBPay4gSSB0aGlu ayB3aGF0IHlvdSB3YW50IGlzLCBzYW1lIGFzIGVudHJ5IHR3bywgYnV0IHVzZSB0aGUgdW5kZXJs eWluZwo+Pj4gcGFnZXRhYmxlIHNldHRpbmdzIGFuZCBub3Qgc3BlY2lmeSB0aGUgRURSQU0gc2V0 dGluZ3MuIFBsZWFzZSBjb25maXJtIGluCj4+PiB0aGUgbmV3IHBhdGNoc2V0Lgo+Pgo+PiBZZWFo LCB0aGF0IHNvdW5kcyBnb29kLgo+Pgo+Pj4+Pgo+Pj4+PiBBbm90aGVyIHRoaW5nIHdvcnRoIG1l bnRpb25pbmcgaXMgdGhhdCBlbnRyaWVzIDAsIDIgYW5kIDUgc2VlbSB0byBkbyB0aGUKPj4+Pj4g c2FtZSB0aGluZyBzdXNwaWNpb3VzbHksIHRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhlIExSVU0g ZmllbGQgd2hpY2gKPj4+Pj4gQUZBSUsgZG9lc24ndCBoYXZlIGFueSBlZmZlY3QgZm9yIExlQ0M9 VUMuICBJcyBteSB1bmRlcnN0YW5kaW5nIGNvcnJlY3Q/Cj4+Pj4+Cj4+Pj4gVGhlc2UgdGFibGVz IGFyZSBnZW5lcmF0ZWQgdmlhIHJlcXVlc3RzIGFuZCB0aGVuIGJvaWxlZCBkb3duIHRvIHRoZSBh Ym92ZS4KPj4+PiBTbyBzb21lIG9mIHRoZSBlbnRyaWVzIGFyZSBieSByZXF1ZXN0LiBTd2luZ3Mg YW5kIHJvdW5kYWJvdXRzLCBjYW4gcmVtb3ZlCj4+Pj4gdGhlIG9uZXMgdGhhdCBsb29rIHJlZHVu ZGFudCBidXQgdGhlbiB0aGUgdHVuaW5nIHRoYXQgaGFzIGJlZW4gZG9uZSB3b250Cj4+Pj4gbWF0 Y2guIEknbGwgYWRkIHRoZSBuZXcgZW50cnkgYXQgdGhlIGVuZCBvZiB0aGUgdGFibGUuCj4KPiBB cmUgeW91IHBsYW5uaW5nIHRvIHByb3BhZ2F0ZSB0aGUgZW50cnkgeW91IGp1c3QgYWRkZWQgYmFj ayB0byB0aGUKPiBvcmlnaW5hbCB0YWJsZSB0aGlzIHdhcyBnZW5lcmF0ZWQgZnJvbT8gIFdoYXQg YWJvdXQgbmV3IGVudHJpZXMgd2UgbWF5Cj4gbmVlZCB0byBhZGQgaW4gdGhlIGZ1dHVyZT8gIFdo YXQgc2hvdWxkIGJlIHRoZSBwcm9jZXNzIHRvIG1ha2Ugc3VyZSB0aGF0Cj4gb3VyIHRhYmxlIGFu ZCB0aGUgbWFzdGVyIHRhYmxlIGRvbid0IGRpdmVyZ2UgYW5kIGVuZCB1cCB3aXRoIGNvbmZsaWN0 aW5nCj4gZW50cmllcyB3ZSBjYW5ub3QgcmVtb3ZlIGJlY2F1c2Ugb2YgQUJJIGNvbXBhdGliaWxp dHk/ICBJIGd1ZXNzIHRoZXJlCj4gc2hvdWxkIGJlIGEgY29tbWVudCBvbiB0aGUgdG9wIHdhcm5p bmcgdGhhdCB0aGUgdGFibGUgaXMgcGFydCBvZiB0aGUKPiBrZXJuZWwgQUJJIGFuZCBzdXBwb3Nl ZCB0byBiZSBrZXB0IGluIHN5bmMgd2l0aCB5b3VyIHRhYmxlLCBzbyBvdGhlcgo+IHBlb3BsZSBk b24ndCBjaGFuZ2UgaXQgdW5rbm93aW5nbHk/Cj4KPiBUaGFua3MuCkkgYW0gdGFsa2luZyB0byB0 aGUgdGVhbSB0aGF0IGhhbmRsZXMgdGhpcyBhbmQgc2VlIGlmIHRoZXkgd2lsbCBhZGQgdGhpcyAK KHNvIGZ1dHVyZSBnZW5zIHRoaXMgaXMgYmFrZWQgaW4pIGJ1dCBpdCBpcyB1bmxpa2VseSB0aGF0 IHRoZSBvdGhlciB0YWJsZXMgCndpbGwgc3RheSBpbiBzdGVwIGFzIGdldHRpbmcgaW4gY2hhbmdl cyB3aWxsIGNhdXNlIHRvbyBtdWNoIGdyaWVmIGdldHRpbmcgCnRoZW0gdXBzdHJlYW1lZCBhbmQg YXMgdGhlIHRhYmxlIGlzIGF1dG8tZ2VuZXJhdGVkIHdlIHdpbGwgbm90IGJlIGFibGUgdG8gCmd1 YXJhbnRlZSB0aGUgb3JkZXJpbmcuIEl0IHdpbGwgaGF2ZSB0byBiZSBtYW51YWwgam9iIGZvciBh bnlvbmUgZG9pbmcgCnRoaXMuIEl0IGlzIHJlcXVpcmVkIGZvciBvdGhlciBwbGF0Zm9ybXMgZm9y IHRoZSB0YWJsZXMgdG8gbWF0Y2ggdGhlIAp1c2Vyc3BhY2UgZm9yIHBlcmZvcm1hbmNlIHJlYXNv bnMsIGJ1dCBvbiBMaW51eCBpdCB3aWxsIGJlIGJ5IHJlcXVlc3QgaWYgCnRoZXJlIGlzIGEgcHJv YmxlbS4gV2Ugd2lsbCBzZWUgd2hhdCBoYXBwZW5zLgoKUGV0ZXIuCgo+Cj4+Pj4+PiArCj4+Pj4+ PiArc3RhdGljIHN0cnVjdCBkcm1faTkxNV9tb2NzX2VudHJ5IGJyb3h0b25fbW9jc190YWJsZVtd ID0gewo+Pj4+Pj4gKwkgLyogezB4MDAwMDAwMDEsIDB4MDAxMH0gKi8KPj4+Pj4+ICsJeyhNT0NT X0NBQ0hFQUJJTElUWShFRFJBTV9VQykgfCBNT0NTX1RHVF9DQUNIRShFTExDKSB8Cj4+Pj4+PiAr CQlNT0NTX0xSVU0oMCkgfCBNT0NTX0FPTSgwKSB8IE1PQ1NfTEVDQ19FU0MoMCkgfCBNT0NTX1ND QygwKSB8Cj4+Pj4+PiArCQlNT0NfUEZNKDApIHwgTU9DU19TQ0YoMCkpLAo+Pj4+Pj4gKwkJKE1P Q1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElUWShMM19VQykpfSwK Pj4+Pj4+ICsJIC8qIHsweDAwMDAwMDA1LCAweDAwMTB9ICovCj4+Pj4+PiArCXsoTU9DU19DQUNI RUFCSUxJVFkoRURSQU1fVUMpIHwgTU9DU19UR1RfQ0FDSEUoTExDKSB8Cj4+Pj4+PiArCQlNT0NT X0xSVU0oMCkgfCBNT0NTX0FPTSgwKSB8IE1PQ1NfTEVDQ19FU0MoMCkgfCBNT0NTX1NDQygwKSB8 Cj4+Pj4+PiArCQlNT0NfUEZNKDApIHwgTU9DU19TQ0YoMCkpLAo+Pj4+Pj4gKwkJKE1PQ1NfRVND KDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElUWShMM19VQykpfSwKPj4+Pj4+ ICsJIC8qIHsweDAwMDAwMDA1LCAweDAwMzB9ICovCj4+Pj4+PiArCXsoTU9DU19DQUNIRUFCSUxJ VFkoRURSQU1fVUMpIHwgTU9DU19UR1RfQ0FDSEUoTExDKSB8Cj4+Pj4+PiArCQlNT0NTX0xSVU0o MCkgfCBNT0NTX0FPTSgwKSB8IE1PQ1NfTEVDQ19FU0MoMCkgfCBNT0NTX1NDQygwKSB8Cj4+Pj4+ PiArCQlNT0NfUEZNKDApIHwgTU9DU19TQ0YoMCkpLAo+Pj4+Pj4gKwkJKE1PQ1NfRVNDKDApIHwg TU9DU19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElUWShMM19XQikpfSwKPj4+Pj4+ICsJIC8q IHsweDAwMDAwMDE3LCAweDAwMzB9ICovCj4+Pj4+PiArCXsoTU9DU19DQUNIRUFCSUxJVFkoRURS QU1fV0IpIHwgTU9DU19UR1RfQ0FDSEUoTExDKSB8Cj4+Pj4+PiArCQlNT0NTX0xSVU0oMSkgfCBN T0NTX0FPTSgwKSB8IE1PQ1NfTEVDQ19FU0MoMCkgfCBNT0NTX1NDQygwKSB8Cj4+Pj4+PiArCQlN T0NfUEZNKDApIHwgTU9DU19TQ0YoMCkpLAo+Pj4+Pj4gKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19T Q0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElUWShMM19XQikpfSwKPj4+Pj4+ICsJIC8qIHsweDAw MDAwMDE3LCAweDAwMTB9ICovCj4+Pj4+PiArCXsoTU9DU19DQUNIRUFCSUxJVFkoRURSQU1fV0Ip IHwgTU9DU19UR1RfQ0FDSEUoTExDKSB8Cj4+Pj4+PiArCQlNT0NTX0xSVU0oMSkgfCBNT0NTX0FP TSgwKSB8IE1PQ1NfTEVDQ19FU0MoMCkgfCBNT0NTX1NDQygwKSB8Cj4+Pj4+PiArCQlNT0NfUEZN KDApIHwgTU9DU19TQ0YoMCkpLAo+Pj4+Pj4gKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkg fCBNT0NTX0wzX0NBQ0hFQUJJTElUWShMM19VQykpfSwKPj4+Pj4+ICsJIC8qIHsweDAwMDAwMDE5 LCAweDAwMTB9ICovCj4+Pj4+PiArCXsoTU9DU19DQUNIRUFCSUxJVFkoRURSQU1fVUMpIHwgTU9D U19UR1RfQ0FDSEUoTExDX0VMTEMpIHwKPj4+Pj4+ICsJCU1PQ1NfTFJVTSgxKSB8IE1PQ1NfQU9N KDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwKPj4+Pj4+ICsJCU1PQ19QRk0o MCkgfCBNT0NTX1NDRigwKSksCj4+Pj4+PiArCQkoTU9DU19FU0MoMCkgfCBNT0NTX1NDQygwKSB8 IE1PQ1NfTDNfQ0FDSEVBQklMSVRZKEwzX1VDKSl9LAo+Pj4+Pj4gKwkgLyogezB4MDAwMDAwMzcs IDB4MDAzMH0gKi8KPj4+Pj4+ICsJeyhNT0NTX0NBQ0hFQUJJTElUWShFRFJBTV9XQikgfCBNT0NT X1RHVF9DQUNIRShMTEMpIHwKPj4+Pj4+ICsJCU1PQ1NfTFJVTSgzKSB8IE1PQ1NfQU9NKDApIHwg TU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwKPj4+Pj4+ICsJCU1PQ19QRk0oMCkgfCBN T0NTX1NDRigwKSksCj4+Pj4+PiArCQkoTU9DU19FU0MoMCkgfCBNT0NTX1NDQygwKSB8IE1PQ1Nf TDNfQ0FDSEVBQklMSVRZKEwzX1dCKSl9LAo+Pj4+Pj4gKwkgLyogezB4MDAwMDAwMzcsIDB4MDAx MH0gKi8KPj4+Pj4+ICsJeyhNT0NTX0NBQ0hFQUJJTElUWShFRFJBTV9XQikgfCBNT0NTX1RHVF9D QUNIRShMTEMpIHwKPj4+Pj4+ICsJCU1PQ1NfTFJVTSgzKSB8IE1PQ1NfQU9NKDApIHwgTU9DU19M RUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwKPj4+Pj4+ICsJCU1PQ19QRk0oMCkgfCBNT0NTX1ND RigwKSksCj4+Pj4+PiArCQkoTU9DU19FU0MoMCkgfCBNT0NTX1NDQygwKSB8IE1PQ1NfTDNfQ0FD SEVBQklMSVRZKEwzX1VDKSl9LAo+Pj4+Pj4gKwkgLyogezB4MDAwMDAwM2IsIDB4MDAxMH0gKi8K Pj4+Pj4+ICsJeyhNT0NTX0NBQ0hFQUJJTElUWShFRFJBTV9XQikgfCBNT0NTX1RHVF9DQUNIRShM TENfRUxMQykgfAo+Pj4+Pj4gKwkJTU9DU19MUlVNKDMpIHwgTU9DU19BT00oMCkgfCBNT0NTX0xF Q0NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfAo+Pj4+Pj4gKwkJTU9DX1BGTSgwKSB8IE1PQ1NfU0NG KDApKSwKPj4+Pj4+ICsJCShNT0NTX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9DU19MM19DQUNI RUFCSUxJVFkoTDNfVUMpKX0sCj4+Pj4+PiArfTsKPj4+Pj4+ICsKPj4+Pj4KPj4+Pj4gV291bGRu J3QgaXQgYmUgYSBnb29kIGlkZWEgdG8gaGF2ZSBCWFQncyBlbnRyaWVzIG1hdGNoIFNLTCdzIGZv ciBhIGdpdmVuCj4+Pj4+IGluZGV4PyAgVGhlIFRDLCBMZUNDIGFuZCBMUlVNIHNldHRpbmdzIHlv dSBkbyBoZXJlIGFyZ3VhYmx5IGRvbid0IGhhdmUKPj4+Pj4gYW55IGVmZmVjdCBvbiBCWFQsIEwz Q0MgZG9lcyBidXQgaXQgZG9lc24ndCBtYXRjaCBTS0wncyBzZXR0aW5nIGZvcgo+Pj4+PiBlbnRy aWVzIDEgYW5kIDIuICBJcyB0aGVyZSBhbnkgcmVhc29uIGZvciB0aGlzPwo+Pj4+IEFzIG1lbnRp b25lZCBhYm92ZSB0aGlzIHRhYmxlIGlzIGF1dG8tZ2VuZXJhdGVkIGFuZCBtYXRjaGVzIGFub3Ro ZXIgdHVuZWQKPj4+PiB0YWJsZSwgc2ltcGx5IGtlZXBpbmcgdGhlbSB0aGUgc2FtZSBhbGxvd3Mg Zm9yIHRoZSB0dW5pbmcgdG8gYmUgY29uc2lzdGVudAo+Pj4+IGFjcm9zcyBwbGF0Zm9ybXMuCj4+ Pj4KPj4+PiBQZXRlci4KPj4+Pj4KPj4+Pj4gT3RoZXIgdGhhbiB0aGF0IGxvb2tzIGdvb2QuCj4+ Pj4+Cj4+Pj4+PiArLyoqCj4+Pj4+PiArICogZ2V0X21vY3Nfc2V0dGluZ3MKPj4+Pj4+ICsgKgo+ Pj4+Pj4gKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIHZhbHVlcyBvZiB0aGUgTU9D UyB0YWJsZSB0aGF0IG5lZWRzIHRvCj4+Pj4+PiArICogYmUgcHJvZ3JhbW1lZCBmb3IgdGhlIHBs YXRmb3JtLiBJdCB3aWxsIHJldHVybiB0aGUgdmFsdWVzIHRoYXQgbmVlZAo+Pj4+Pj4gKyAqIHRv IGJlIHByb2dyYW1tZWQgYW5kIGlmIHRoZXkgbmVlZCB0byBiZSBwcm9ncmFtbWVkLgo+Pj4+Pj4g KyAqCj4+Pj4+PiArICogSWYgdGhlIHJldHVybiB2YWx1ZXMgaXMgZmFsc2UgdGhlbiB0aGUgcmVn aXN0ZXJzIGRvIG5vdCBuZWVkCj4+Pj4gcHJvZ3JhbW1pbmcuCj4+Pj4+PiArICovCj4+Pj4+PiAr c3RhdGljIGJvb2wgZ2V0X21vY3Nfc2V0dGluZ3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4+ Pj4+ICsJCQkgICAgICBzdHJ1Y3QgZHJtX2k5MTVfbW9jc190YWJsZSAqdGFibGUpIHsKPj4+Pj4+ ICsJYm9vbAlyZXN1bHQgPSBmYWxzZTsKPj4+Pj4+ICsKPj4+Pj4+ICsJaWYgKElTX1NLWUxBS0Uo ZGV2KSkgewo+Pj4+Pj4gKwkJdGFibGUtPnNpemUgID0gQVJSQVlfU0laRShza3lsYWtlX21vY3Nf dGFibGUpOwo+Pj4+Pj4gKwkJdGFibGUtPnRhYmxlID0gc2t5bGFrZV9tb2NzX3RhYmxlOwo+Pj4+ Pj4gKwkJcmVzdWx0ID0gdHJ1ZTsKPj4+Pj4+ICsJfSBlbHNlIGlmIChJU19CUk9YVE9OKGRldikp IHsKPj4+Pj4+ICsJCXRhYmxlLT5zaXplICA9IEFSUkFZX1NJWkUoYnJveHRvbl9tb2NzX3RhYmxl KTsKPj4+Pj4+ICsJCXRhYmxlLT50YWJsZSA9IGJyb3h0b25fbW9jc190YWJsZTsKPj4+Pj4+ICsJ CXJlc3VsdCA9IHRydWU7Cj4+Pj4+PiArCX0gZWxzZSB7Cj4+Pj4+PiArCQkvKiBQbGF0Zm9ybSB0 aGF0IHNob3VsZCBoYXZlIGEgTU9DUyB0YWJsZSBkb2VzIG5vdCAqLwo+Pj4+Pj4gKwkJV0FSTl9P TihJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KTsKPj4+Pj4+ICsJfQo+Pj4+Pj4gKwo+Pj4+Pj4g KwlyZXR1cm4gcmVzdWx0Owo+Pj4+Pj4gK30KPj4+Pj4+ICsKPj4+Pj4+ICsvKioKPj4+Pj4+ICsg KiBlbWl0X21vY3NfY29udHJvbF90YWJsZSgpIC0gZW1pdCB0aGUgbW9jcyBjb250cm9sIHRhYmxl Cj4+Pj4+PiArICogQHJpbmdidWY6CURSTSBkZXZpY2UuCj4+Pj4+PiArICogQHRhYmxlOglUaGUg dmFsdWVzIHRvIHByb2dyYW0gaW50byB0aGUgY29udHJvbCByZWdzLgo+Pj4+Pj4gKyAqIEByZWdf YmFzZToJVGhlIGJhc2UgZm9yIHRoZSBFbmdpbmUgdGhhdCBuZWVkcyB0byBiZSBwcm9ncmFtbWVk Lgo+Pj4+Pj4gKyAqCj4+Pj4+PiArICogVGhpcyBmdW5jdGlvbiBzaW1wbHkgZW1pdHMgYSBNSV9M T0FEX1JFR0lTVEVSX0lNTSBjb21tYW5kIGZvciB0aGUKPj4+Pj4+ICsgKiBnaXZlbiB0YWJsZSBz dGFydGluZyBhdCB0aGUgZ2l2ZW4gYWRkcmVzcy4KPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqIFJldHVy bjogTm90aGluZy4KPj4+Pj4+ICsgKi8KPj4+Pj4+ICtzdGF0aWMgdm9pZCBlbWl0X21vY3NfY29u dHJvbF90YWJsZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKPj4+Pj4+ICsJCQkJ ICAgIHN0cnVjdCBkcm1faTkxNV9tb2NzX3RhYmxlICp0YWJsZSwKPj4+Pj4+ICsJCQkJICAgIHUz MiByZWdfYmFzZSkKPj4+Pj4+ICt7Cj4+Pj4+PiArCXVuc2lnbmVkIGludCBpbmRleDsKPj4+Pj4+ ICsKPj4+Pj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwKPj4+Pj4+ICsJCQlN SV9MT0FEX1JFR0lTVEVSX0lNTShHRU45X05VTV9NT0NTX0VOVFJJRVMpKTsKPj4+Pj4+ICsKPj4+ Pj4+ICsJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgdGFibGUtPnNpemU7IGluZGV4KyspIHsKPj4+ Pj4+ICsJCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIHJlZ19iYXNlICsgKGluZGV4 ICogNCkpOwo+Pj4+Pj4gKwkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwKPj4+Pj4+ ICsJCQkJCXRhYmxlLT50YWJsZVtpbmRleF0uY29udHJvbF92YWx1ZSk7Cj4+Pj4+PiArCX0KPj4+ Pj4+ICsKPj4+Pj4+ICsJLyoKPj4+Pj4+ICsJICogT2ssIG5vdyBzZXQgdGhlIHVudXNlZCBlbnRy aWVzIHRvIHVuY2FjaGVkLiBUaGVzZSBlbnRyaWVzIGFyZQo+Pj4+Pj4gKwkgKiBvZmZpY2lhbGx5 IHVuZGVmaW5lZCBhbmQgbm8gY29udGFjdCBpcyBnaXZlbiBmb3IgdGhlIGNvbnRlbnRzIGFuZAo+ Pj4+Pj4gKwkgKiBzZXR0aW5ncyBpcyBnaXZlbiBmb3IgdGhlc2UgZW50cmllcy4KPj4+Pj4+ICsJ ICoKPj4+Pj4+ICsJICogRW50cnkgMCBpbiB0aGUgdGFibGUgaXMgdW5jYWNoZWQgLSBzbyB3ZSBh cmUganVzdCB3cml0dGVuIHRoYXQKPj4+Pj4+ICsJICogdmFsdWUgdG8gYWxsIHRoZSB1c2VkIGVu dHJpZXMuCj4+Pj4+PiArCSAqLwo+Pj4+Pj4gKwlmb3IgKDsgaW5kZXggPCBHRU45X05VTV9NT0NT X0VOVFJJRVM7IGluZGV4KyspIHsKPj4+Pj4+ICsJCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJp bmdidWYsIHJlZ19iYXNlICsgKGluZGV4ICogNCkpOwo+Pj4+Pj4gKwkJaW50ZWxfbG9naWNhbF9y aW5nX2VtaXQocmluZ2J1ZiwKPj4+PiB0YWJsZS0+dGFibGVbMF0uY29udHJvbF92YWx1ZSk7Cj4+ Pj4+PiArCX0KPj4+Pj4+ICsKPj4+Pj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1 ZiwgTUlfTk9PUCk7Cj4+Pj4+PiArfQo+Pj4+Pj4gKwo+Pj4+Pj4gKy8qKgo+Pj4+Pj4gKyAqIGVt aXRfbW9jc19sM2NjX3RhYmxlKCkgLSBlbWl0IHRoZSBtb2NzIGNvbnRyb2wgdGFibGUKPj4+Pj4+ ICsgKiBAcmluZ2J1ZjoJRFJNIGRldmljZS4KPj4+Pj4+ICsgKiBAdGFibGU6CVRoZSB2YWx1ZXMg dG8gcHJvZ3JhbSBpbnRvIHRoZSBjb250cm9sIHJlZ3MuCj4+Pj4+PiArICoKPj4+Pj4+ICsgKiBU aGlzIGZ1bmN0aW9uIHNpbXBseSBlbWl0cyBhIE1JX0xPQURfUkVHSVNURVJfSU1NIGNvbW1hbmQg Zm9yIHRoZQo+Pj4+Pj4gKyAqIGdpdmVuIHRhYmxlIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiBhZGRy ZXNzLiBUaGlzIHJlZ2lzdGVyIHNldCBpcwo+Pj4+IHByb2dyYW1tZWQKPj4+Pj4+ICsgKiBpbiBw YWlycy4KPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqIFJldHVybjogTm90aGluZy4KPj4+Pj4+ICsgKi8K Pj4+Pj4+ICtzdGF0aWMgdm9pZCBlbWl0X21vY3NfbDNjY190YWJsZShzdHJ1Y3QgaW50ZWxfcmlu Z2J1ZmZlciAqcmluZ2J1ZiwKPj4+Pj4+ICsJCQkgc3RydWN0IGRybV9pOTE1X21vY3NfdGFibGUg KnRhYmxlKSB7Cj4+Pj4+PiArCXVuc2lnbmVkIGludCBjb3VudDsKPj4+Pj4+ICsJdW5zaWduZWQg aW50IGk7Cj4+Pj4+PiArCXUzMiB2YWx1ZTsKPj4+Pj4+ICsJdTMyIGZpbGxlciA9ICh0YWJsZS0+ dGFibGVbMF0ubDNjY192YWx1ZSAmIDB4ZmZmZikgfAo+Pj4+Pj4gKwkJCSgodGFibGUtPnRhYmxl WzBdLmwzY2NfdmFsdWUgJiAweGZmZmYpIDw8IDE2KTsKPj4+Pj4+ICsKPj4+Pj4+ICsJaW50ZWxf bG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwKPj4+Pj4+ICsJCQlNSV9MT0FEX1JFR0lTVEVSX0lN TShHRU45X05VTV9NT0NTX0VOVFJJRVMgLyAyKSk7Cj4+Pj4+PiArCj4+Pj4+PiArCWZvciAoaSA9 IDAsIGNvdW50ID0gMDsgaSA8IHRhYmxlLT5zaXplIC8gMjsgaSsrLCBjb3VudCArPSAyKSB7Cj4+ Pj4+PiArCQl2YWx1ZSA9ICh0YWJsZS0+dGFibGVbY291bnRdLmwzY2NfdmFsdWUgJiAweGZmZmYp IHwKPj4+Pj4+ICsJCQkoKHRhYmxlLT50YWJsZVtjb3VudCArIDFdLmwzY2NfdmFsdWUgJiAweGZm ZmYpIDw8Cj4+Pj4gMTYpOwo+Pj4+Pj4gKwo+Pj4+Pj4gKwkJaW50ZWxfbG9naWNhbF9yaW5nX2Vt aXQocmluZ2J1ZiwgR0VOOV9MTkNGQ01PQ1MwICsgKGkgKiA0KSk7Cj4+Pj4+PiArCQlpbnRlbF9s b2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCB2YWx1ZSk7Cj4+Pj4+PiArCX0KPj4+Pj4+ICsKPj4+ Pj4+ICsJaWYgKHRhYmxlLT5zaXplICYgMHgwMSkgewo+Pj4+Pj4gKwkJLyogT2RkIHRhYmxlIHNp emUgLSAxIGxlZnQgb3ZlciAqLwo+Pj4+Pj4gKwkJdmFsdWUgPSAodGFibGUtPnRhYmxlW2NvdW50 XS5sM2NjX3ZhbHVlICYgMHhmZmZmKSB8Cj4+Pj4+PiArCQkJKCh0YWJsZS0+dGFibGVbMF0ubDNj Y192YWx1ZSAmIDB4ZmZmZikgPDwgMTYpOwo+Pj4+Pj4gKwl9IGVsc2UKPj4+Pj4+ICsJCXZhbHVl ID0gZmlsbGVyOwo+Pj4+Pj4gKwo+Pj4+Pj4gKwkvKgo+Pj4+Pj4gKwkgKiBOb3cgc2V0IHRoZSBy ZXN0IG9mIHRoZSB0YWJsZSB0byB1bmNhY2hlZCAtIHVzZSBlbnRyeSAwIGFzIHRoaXMKPj4+Pj4+ ICsJICogd2lsbCBiZSB1bmNhY2hlZC4gTGVhdmUgdGhlIGxhc3QgcGFpciBhcyBpbml0aWFsaXNl ZCBhcyB0aGV5IGFyZQo+Pj4+Pj4gKwkgKiByZXNlcnZlZCBieSB0aGUgaGFyZHdhcmUuCj4+Pj4+ PiArCSAqLwo+Pj4+Pj4gKwlmb3IgKDsgaSA8IChHRU45X05VTV9NT0NTX0VOVFJJRVMgLyAyKSAt IDE7IGkrKykgewo+Pj4+Pj4gKwkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgR0VO OV9MTkNGQ01PQ1MwICsgKGkgKiA0KSk7Cj4+Pj4+PiArCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1p dChyaW5nYnVmLCB2YWx1ZSk7Cj4+Pj4+PiArCj4+Pj4+PiArCQl2YWx1ZSA9IGZpbGxlcjsKPj4+ Pj4+ICsJfQo+Pj4+Pj4gKwo+Pj4+Pj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVm LCBNSV9OT09QKTsKPj4+Pj4+ICt9Cj4+Pj4+PiArCj4+Pj4+PiArLyoKPj4+Pj4+ICsgKiBnZW45 X3Byb2dyYW1fbW9jcygpIC0gcHJvZ3JhbSB0aGUgTU9DUyByZWdpc3Rlci4KPj4+Pj4+ICsgKgo+ Pj4+Pj4gKyAqIHJpbmc6CVRoZSByaW5nIHRoYXQgdGhlIHByb2dyYW1taW5nIGJhdGNoIHdpbGwg YmUgcnVuIGluLgo+Pj4+Pj4gKyAqIGN0eDoJCVRoZSBpbnRlbF9jb250ZXh0IHRvIGJlIHVzZWQu Cj4+Pj4+PiArICoKPj4+Pj4+ICsgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgZW1pdCBhIGJhdGNoIGJ1 ZmZlciB3aXRoIHRoZSB2YWx1ZXMgcmVxdWlyZWQgZm9yCj4+Pj4+PiArICogcHJvZ3JhbW1pbmcg dGhlIE1PQ1MgcmVnaXN0ZXIgdmFsdWVzIGZvciBhbGwgdGhlIGN1cnJlbnRseSBzdXBwb3J0ZWQK Pj4+Pj4+ICsgKiByaW5ncy4KPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqIFRoZXNlIHJlZ2lzdGVycyBh cmUgcGFydGlhbGx5IHN0b3JlZCBpbiB0aGUgUkNTIGNvbnRleHQsIHNvIHRoZXkgYXJlCj4+Pj4+ PiArICogZW1pdHRlZCBhdCB0aGUgc2FtZSB0aW1lIHNvIHRoYXQgd2hlbiBhIGNvbnRleHQgaXMg Y3JlYXRlZCB0aGVzZQo+Pj4+IHJlZ2lzdGVycwo+Pj4+Pj4gKyAqIGFyZSBzZXQgdXAuIFRoZXNl IHJlZ2lzdGVycyBoYXZlIHRvIGJlIGVtaXR0ZWQgaW50byB0aGUgc3RhcnQgb2YgdGhlCj4+Pj4+ PiArICogY29udGV4dCBhcyBzZXR0aW5nIHRoZSBFTFNQIHdpbGwgcmUtaW5pdCBzb21lIG9mIHRo ZXNlIHJlZ2lzdGVycyBiYWNrCj4+Pj4+PiArICogdG8gdGhlIGh3IHZhbHVlcy4KPj4+Pj4+ICsg Kgo+Pj4+Pj4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvdGhlcndpc2UgdGhlIGVycm9yIHN0 YXR1cy4KPj4+Pj4+ICsgKi8KPj4+Pj4+ICtpbnQgZ2VuOV9wcm9ncmFtX21vY3Moc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZywKPj4+Pj4+ICsJCQkgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj dHgpCj4+Pj4+PiArewo+Pj4+Pj4gKwlpbnQgcmV0ID0gMDsKPj4+Pj4+ICsKPj4+Pj4+ICsJc3Ry dWN0IGRybV9pOTE1X21vY3NfdGFibGUgdDsKPj4+Pj4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IHJpbmctPmRldjsKPj4+Pj4+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYg PSBjdHgtPmVuZ2luZVtyaW5nLT5pZF0ucmluZ2J1ZjsKPj4+Pj4+ICsKPj4+Pj4+ICsJaWYgKGdl dF9tb2NzX3NldHRpbmdzKGRldiwgJnQpKSB7Cj4+Pj4+PiArCQl1MzIgdGFibGVfc2l6ZTsKPj4+ Pj4+ICsKPj4+Pj4+ICsJCS8qCj4+Pj4+PiArCQkgKiBPSy4gRm9yIGVhY2ggc3VwcG9ydGVkIHJp bmc6Cj4+Pj4+PiArCQkgKiAgbnVtYmVyIG9mIG1vY3MgZW50cmllcyAqIDIgZHdvcmRzIGZvciBl YWNoIGNvbnRyb2xfdmFsdWUKPj4+Pj4+ICsJCSAqICBwbHVzIG51bWJlciBvZiBtb2NzIGVudHJp ZXMgLzIgZHdvcmRzIGZvciBsM2NjIHZhbHVlcy4KPj4+Pj4+ICsJCSAqCj4+Pj4+PiArCQkgKiAg UGx1cyAxIGZvciB0aGUgbG9hZCBjb21tYW5kIGFuZCAxIGZvciB0aGUgTk9PUCBwZXIgcmluZwo+ Pj4+Pj4gKwkJICogIGFuZCB0aGUgbDNjYyBwcm9ncmFtbWluZy4KPj4+Pj4+ICsJCSAqLwo+Pj4+ Pj4gKwkJdGFibGVfc2l6ZSA9IEdFTjlfTlVNX01PQ1NfUklOR1MgKgo+Pj4+Pj4gKwkJCQkoKDIg KiBHRU45X05VTV9NT0NTX0VOVFJJRVMpICsgMikgKwo+Pj4+Pj4gKwkJCQlHRU45X05VTV9NT0NT X0VOVFJJRVMgKyAyOwo+Pj4+Pj4gKwkJcmV0ID0gaW50ZWxfbG9naWNhbF9yaW5nX2JlZ2luKHJp bmdidWYsIGN0eCwgdGFibGVfc2l6ZSk7Cj4+Pj4+PiArCQlpZiAocmV0KSB7Cj4+Pj4+PiArCQkJ RFJNX0RFQlVHKCJpbnRlbF9sb2dpY2FsX3JpbmdfYmVnaW4gZmFpbGVkICVkXG4iLAo+Pj4+IHJl dCk7Cj4+Pj4+PiArCQkJcmV0dXJuIHJldDsKPj4+Pj4+ICsJCX0KPj4+Pj4+ICsKPj4+Pj4+ICsJ CS8qIHByb2dyYW0gdGhlIGNvbnRyb2wgcmVnaXN0ZXJzICovCj4+Pj4+PiArCQllbWl0X21vY3Nf Y29udHJvbF90YWJsZShyaW5nYnVmLCAmdCwgR0VOOV9HRlhfTU9DU18wKTsKPj4+Pj4+ICsJCWVt aXRfbW9jc19jb250cm9sX3RhYmxlKHJpbmdidWYsICZ0LCBHRU45X01GWDBfTU9DU18wKTsKPj4+ Pj4+ICsJCWVtaXRfbW9jc19jb250cm9sX3RhYmxlKHJpbmdidWYsICZ0LCBHRU45X01GWDFfTU9D U18wKTsKPj4+Pj4+ICsJCWVtaXRfbW9jc19jb250cm9sX3RhYmxlKHJpbmdidWYsICZ0LCBHRU45 X1ZFQk9YX01PQ1NfMCk7Cj4+Pj4+PiArCQllbWl0X21vY3NfY29udHJvbF90YWJsZShyaW5nYnVm LCAmdCwgR0VOOV9CTFRfTU9DU18wKTsKPj4+Pj4+ICsKPj4+Pj4+ICsJCS8qIG5vdyBwcm9ncmFt IHRoZSBsM2NjIHJlZ2lzdGVycyAqLwo+Pj4+Pj4gKwkJZW1pdF9tb2NzX2wzY2NfdGFibGUocmlu Z2J1ZiwgJnQpOwo+Pj4+Pj4gKwo+Pj4+Pj4gKwkJaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2Uo cmluZ2J1Zik7Cj4+Pj4+PiArCj4+Pj4+PiArCQlEUk1fREVCVUcoIk1PQ1M6IFRhYmxlIHNldCBp biBDb250ZXh0XG4iKTsKPj4+Pj4+ICsJfSBlbHNlIHsKPj4+Pj4+ICsJCURSTV9ERUJVRygiTU9D UzogVGFibGUgTm90IHN1cHBvcnRlZCBvbiBwbGF0Zm9ybVxuIik7Cj4+Pj4+PiArCX0KPj4+Pj4+ ICsKPj4+Pj4+ICsJcmV0dXJuIHJldDsKPj4+Pj4+ICt9Cj4+Pj4+PiArCj4+Pj4+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5oCj4+Pj4gYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9tb2NzLmgKPj4+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4+ PiBpbmRleCAwMDAwMDAwLi5lMjc4MGNlCj4+Pj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmgKPj4+Pj4+IEBAIC0wLDAgKzEsNjQg QEAKPj4+Pj4+ICsvKgo+Pj4+Pj4gKyAqIENvcHlyaWdodCAoYykgMjAxNSBJbnRlbCBDb3Jwb3Jh dGlvbgo+Pj4+Pj4gKyAqCj4+Pj4+PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCj4+Pj4gYQo+Pj4+Pj4gKyAq IGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz ICh0aGUKPj4+PiAiU29mdHdhcmUiKSwKPj4+Pj4+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2Fy ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dAo+Pj4+IGxpbWl0YXRpb24K Pj4+Pj4+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwKPj4+PiBzdWJsaWNlbnNlLAo+Pj4+Pj4gKyAqIGFuZC9vciBzZWxsIGNv cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ Pj4+Pj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4+Pj4+PiArICoKPj4+Pj4+ICsgKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZQo+ Pj4+IG5leHQKPj4+Pj4+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBj b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YKPj4+PiB0aGUKPj4+Pj4+ICsgKiBTb2Z0 d2FyZS4KPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAo+Pj4+IEVYUFJFU1MgT1IKPj4+Pj4+ ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT IE9GCj4+Pj4gTUVSQ0hBTlRBQklMSVRZLAo+Pj4+Pj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVAo+Pj4+IFNIQUxM Cj4+Pj4+PiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKPj4+PiBPVEhFUgo+Pj4+Pj4gKyAqIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAo+Pj4+ IEFSSVNJTkcgRlJPTSwKPj4+Pj4+ICsgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4+Pj4gSU4gVEhFCj4+Pj4+ PiArICogU09GVFdBUkUuCj4+Pj4+PiArICoKPj4+Pj4+ICsgKiBBdXRob3JzOgo+Pj4+Pj4gKyAq ICAgIFBldGVyIEFudG9pbmUgPHBldGVyLmFudG9pbmVAaW50ZWwuY29tPgo+Pj4+Pj4gKyAqLwo+ Pj4+Pj4gKwo+Pj4+Pj4gKyNpZm5kZWYgSU5URUxfTU9DU19ICj4+Pj4+PiArI2RlZmluZSBJTlRF TF9NT0NTX0gKPj4+Pj4+ICsKPj4+Pj4+ICsvKioKPj4+Pj4+ICsgKiBET0M6IE1lbW9yeSBPYmpl Y3RzIENvbnRyb2wgU3RhdGUgKE1PQ1MpCj4+Pj4+PiArICoKPj4+Pj4+ICsgKiBNb3RpdmF0aW9u Ogo+Pj4+Pj4gKyAqIEluIHByZXZpb3VzIEdlbnMgdGhlIE1PQ1Mgc2V0dGluZ3Mgd2FzIGEgdmFs dWUgdGhhdCB3YXMgc2V0IGJ5IHVzZXIKPj4+PiBsYW5kIGFzCj4+Pj4+PiArICogcGFydCBvZiB0 aGUgYmF0Y2guIEluIEdlbjkgdGhpcyBoYXMgY2hhbmdlZCB0byBiZSBhIHNpbmdsZSB0YWJsZSAo cGVyCj4+Pj4gcmluZykKPj4+Pj4+ICsgKiB0aGF0IGFsbCBiYXRjaGVzIG5vdyByZWZlcmVuY2Ug YnkgaW5kZXggaW5zdGVhZCBvZiBwcm9ncmFtbWluZyB0aGUKPj4+PiBNT0NTCj4+Pj4+PiArICog ZGlyZWN0bHkuCj4+Pj4+PiArICoKPj4+Pj4+ICsgKiBUaGUgb25lIHdyaW5rbGUgaW4gdGhpcyBp cyB0aGF0IG9ubHkgUEFSVCBvZiB0aGUgTU9DUyB0YWJsZXMgYXJlCj4+Pj4gaW5jbHVkZWQKPj4+ Pj4+ICsgKiBpbiBjb250ZXh0IChUaGUgR0ZYX01PQ1NfMCAtIEdGWF9NT0NTXzY0IGFuZCB0aGUg TE5DRkNNT0NTMCAtCj4+Pj4gTE5DRkNNT0NTMzIKPj4+Pj4+ICsgKiByZWdpc3RlcnMpLiBUaGUg cmVzdCBhcmUgbm90ICh0aGUgc2V0dGluZ3MgZm9yIHRoZSBvdGhlciByaW5ncykuCj4+Pj4+PiAr ICoKPj4+Pj4+ICsgKiBUaGlzIHRhYmxlIG5lZWRzIHRvIGJlIHNldCBhdCBzeXN0ZW0gc3RhcnQt dXAgYmVjYXVzZSB0aGUgd2F5IHRoZQo+Pj4+IHRhYmxlCj4+Pj4+PiArICogaW50ZXJhY3RzIHdp dGggdGhlIGNvbnRleHRzIGFuZCB0aGUgR21tTGliIGludGVyZmFjZS4KPj4+Pj4+ICsgKgo+Pj4+ Pj4gKyAqCj4+Pj4+PiArICogSW1wbGVtZW50YXRpb246Cj4+Pj4+PiArICoKPj4+Pj4+ICsgKiBU aGUgdGFibGUgaXMgcHJvZ3JhbW1lZCBvbiBhIHBsYXRmb3JtIGJhc2lzIGZyb20gYSB0YWJsZSB0 aGF0IGlzCj4+Pj4gZ2VuZXJhdGVkCj4+Pj4+PiArICogZnJvbSB0aGUgb25lIHRoYXQgaGFzIGJl ZW4gYWdyZWVkIGJ5IHRoZSBkaWZmZXJlbnQgcmVzcG9uc2libGUKPj4+PiBwYXJ0aWVzLiBUaGlz Cj4+Pj4+PiArICogdGFibGVzIChvbmUgcGVyIHN1cHBvcnRlZCBwbGF0Zm9ybSkgaXMgZGVmaW5l ZCBpbiBpbnRlbF9tb2NzLmMgYW5kIGlzCj4+Pj4+PiArICogcHJvZ3JhbW1lZCBpbiB0aGUgZmly c3QgYmF0Y2ggYWZ0ZXIgdGhlIGNvbnRleHQgaXMgbG9hZGVkICh3aXRoIHRoZQo+Pj4+IGhhcmR3 YXJlCj4+Pj4+PiArICogd29ya2Fyb3VuZHMpLiBUaGlzIHdpbGwgdGhlbiBsZXQgdGhlIHVzdWFs IGNvbnRleHQgaGFuZGxpbmcga2VlcCB0aGUKPj4+PiBNT0NTIGluCj4+Pj4+PiArICogc3RlcC4K Pj4+Pj4+ICsgKi8KPj4+Pj4+ICsKPj4+Pj4+ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPj4+Pj4+ ICsjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPj4+Pj4+ICsKPj4+Pj4+ICtpbnQgZ2VuOV9wcm9ncmFt X21vY3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPj4+Pj4+ICsJCQlzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY3R4KTsKPj4+Pj4+ICsKPj4+Pj4+ICsjZW5kaWYKPj4+Pj4+ICsKPj4+Pj4+ IC0tCj4+Pj4+PiAxLjkuMQo+Pj4+Pj4KPj4+Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCj4+Pj4+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+Pj4+ PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4+PiBodHRwOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4+Pj4+Cj4+Pj4KPj4+PiAt LQo+Pj4+ICAgIFBldGVyIEFudG9pbmUgKEFuZHJvaWQgR3JhcGhpY3MgRHJpdmVyIFNvZnR3YXJl IEVuZ2luZWVyKQo+Pj4+ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4+ICAgIEludGVsIENvcnBvcmF0aW9u IChVSykgTGltaXRlZAo+Pj4+ICAgIFJlZ2lzdGVyZWQgTm8uIDExMzQ5NDUgKEVuZ2xhbmQpCj4+ Pj4gICAgUmVnaXN0ZXJlZCBPZmZpY2U6IFBpcGVycyBXYXksIFN3aW5kb24gU04zIDFSSgo+Pj4+ ICAgIFZBVCBObzogODYwIDIxNzMgNDcKPj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwo+Pj4+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPj4+PiBJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+Pj4+Cj4+Pgo+Pj4gLS0KPj4+ICAgICBQ ZXRlciBBbnRvaW5lIChBbmRyb2lkIEdyYXBoaWNzIERyaXZlciBTb2Z0d2FyZSBFbmdpbmVlcikK Pj4+ICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+ICAgICBJbnRlbCBDb3Jwb3JhdGlvbiAoVUspIExpbWl0 ZWQKPj4+ICAgICBSZWdpc3RlcmVkIE5vLiAxMTM0OTQ1IChFbmdsYW5kKQo+Pj4gICAgIFJlZ2lz dGVyZWQgT2ZmaWNlOiBQaXBlcnMgV2F5LCBTd2luZG9uIFNOMyAxUkoKPj4+ICAgICBWQVQgTm86 IDg2MCAyMTczIDQ3Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCj4+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwo+PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cj4KCi0tCiAgICBQZXRlciBBbnRvaW5lIChBbmRyb2lkIEdyYXBoaWNzIERy aXZlciBTb2Z0d2FyZSBFbmdpbmVlcikKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgSW50ZWwgQ29ycG9y YXRpb24gKFVLKSBMaW1pdGVkCiAgICBSZWdpc3RlcmVkIE5vLiAxMTM0OTQ1IChFbmdsYW5kKQog ICAgUmVnaXN0ZXJlZCBPZmZpY2U6IFBpcGVycyBXYXksIFN3aW5kb24gU04zIDFSSgogICAgVkFU IE5vOiA4NjAgMjE3MyA0NwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=