From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Yu, Zhang" Subject: Re: [PATCH v3 1/8] drm/i915: Introduce a PV INFO page structure for Intel GVT-g. Date: Wed, 17 Dec 2014 10:49:53 +0800 Message-ID: <5490EF51.8000702@linux.intel.com> References: <1415880169-7656-1-git-send-email-yu.c.zhang@linux.intel.com> <1415880169-7656-2-git-send-email-yu.c.zhang@linux.intel.com> <5489D54C.5050605@linux.intel.com> <54902ACC.6020203@linux.intel.com> <54903174.9080102@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 4A0356E14F for ; Tue, 16 Dec 2014 18:51:27 -0800 (PST) In-Reply-To: <54903174.9080102@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , Intel-gfx@lists.freedesktop.org, Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org CgpPbiAxMi8xNi8yMDE0IDk6MTkgUE0sIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Cj4gT24gMTIv MTYvMjAxNCAxMjo1MSBQTSwgWXUsIFpoYW5nIHdyb3RlOgo+PiBUaGFuayB5b3UgdmVyeSBtdWNo IGZvciB5b3VyIHRob3JvdWdoIHJldmlldywgVHZydGtvLiA6KQo+Pgo+PiBPbiAxMi8xMi8yMDE0 IDE6MzMgQU0sIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Pj4KPj4+IE9uIDExLzEzLzIwMTQgMTI6 MDIgUE0sIFl1IFpoYW5nIHdyb3RlOgo+Pj4+IEludHJvZHVjZSBhIFBWIElORk8gc3RydWN0dXJl LCB0byBmYWNpbGl0YXRlIHRoZSBJbnRlbCBHVlQtZwo+Pj4+IHRlY2hub2xvZ3ksIHdoaWNoIGlz IGEgR1BVIHZpcnR1YWxpemF0aW9uIHNvbHV0aW9uIHdpdGggbWVkaWF0ZWQKPj4+PiBwYXNzLXRo cm91Z2guIFRoaXMgcGFnZSBjb250YWlucyB0aGUgc2hhcmVkIGluZm9ybWF0aW9uIGJldHdlZW4K Pj4+PiBpOTE1IGRyaXZlciBhbmQgdGhlIGhvc3QgZW11bGF0b3IuIEZvciBub3csIHRoaXMgc3Ry dWN0dXJlIHV0aWxpemVzCj4+Pj4gYW4gYXJlYSBvZiA0SyBieXBlcyBvbiBIU1cgR1BVJ3MgdW51 c2VkIE1NSU8gc3BhY2UgdG8gc3VwcG9ydAo+Pj4KPj4+IGJ5dGVzCj4+IEdvdCBpdC4gVGhhbmtz Lgo+Pj4KPj4+PiBleGlzdGluZyBwcm9kdWN0aW9uLiBGdXR1cmUgaGFyZHdhcmUgd2lsbCBoYXZl IHRoZSByZXNlcnZlZCB3aW5kb3cKPj4+Cj4+PiBJdCBpcyBzbGlnaHRseSB1bmNsZWFyIHRvIG1l IHdoYXQgImV4aXN0aW5nIHByb2R1Y3Rpb24iIG1lYW5zPwo+PiBPdXIgY3VycmVudCBncHUgdmly dHVhbGl6YXRpb24gaW1wbGVtZW50YXRpb24gZm9yIEhTVy4gSXQncyBjb21wYXJlZAo+PiB3aXRo IGZ1dHVyZSBpbXBsZW1hdGF0aW9ucyBmb3IgQkRXIGV0Yy4KPgo+IFNvIG1heWJlIGluc3RlYWQg b2YgImV4aXN0aW5nIHByb2R1Y3Rpb24iIHNheSAiY3VycmVudGx5IHN1cHBvcnRlZAo+IGhhcmR3 YXJlIiBvciBzaW1pbGFyPwpIb3cgYWJvdXQgd2UgcmVtb3ZlICJ0byBzdXBwb3J0IGV4aXN0aW5n IHByb2R1Y3Rpb24iIGluIHRoaXMgc2VudGVuY2U/IApUaGUgImN1cnJlbnRseSBzdXBwb3J0ZWQg aGFyZHdhcmUiIHNlZW1zIGEgYml0IHJlZHVuZGFudC4gOikKPgo+Pj4+IGFyY2hpdGVjdHVyYWxs eSBkZWZpbmVkLCBhbmQgbGF5b3V0IG9mIHRoZSBwYWdlIHdpbGwgYmUgYWRkZWQgaW4KPj4+PiBm dXR1cmUgQlNwZWMuCj4+Pj4KPj4+PiBUaGUgaTkxNSBkcml2ZXIgbG9hZCByb3V0aW5lIGRldGVj dHMgaWYgaXQgaXMgcnVubmluZyBpbiBhIFZNIGJ5Cj4+Pj4gcmVhZGluZyB0aGUgY29udGVudHMg b2YgdGhpcyBQViBJTkZPIHBhZ2UuIFRoZXJlYWZ0ZXIgYSBmbGFnLAo+Pj4+IHZncHUuYWN0aXZl IGlzIHNldCwgYW5kIGludGVsX3ZncHVfYWN0aXZlKCkgaXMgdXNlZCBieSBjaGVja2luZwo+Pj4+ IHRoaXMgZmxhZyB0byBjb25jbHVkZSBpZiBHUFUgaXMgdmlydHVhbGl6ZWQgd2l0aCBJbnRlbCBH VlQtZy4gQnkKPj4+PiBub3csIGludGVsX3ZncHVfYWN0aXZlKCkgd2lsbCByZXR1cm4gdHJ1ZSwg b25seSB3aGVuIHRoZSBkcml2ZXIKPj4+PiBpcyBydW5uaW5nIGFzIGEgZ3Vlc3QgaW4gdGhlIElu dGVsIEdWVC1nIGVuaGFuY2VkIGVudmlyb25tZW50IG9uCj4+Pj4gSFNXIHBsYXRmb3JtLgo+Pj4+ Cj4+Pj4gdjI6Cj4+Pj4gdGFrZSBDaHJpcycgY29tbWVudHM6Cj4+Pj4gICAgIC0gY2FsbCB0aGUg aTkxNV9jaGVja192Z3B1KCkgaW4gaW50ZWxfdW5jb3JlX2luaXQoKQo+Pj4+ICAgICAtIHNhbml0 aXplIGk5MTVfY2hlY2tfdmdwdSgpIGJ5IGFkZGluZyBCVUlMRF9CVUdfT04oKSBhbmQgZGVidWcK Pj4+PiBpbmZvCj4+Pj4gdGFrZSBEYW5pZWwncyBjb21tZW50czoKPj4+PiAgICAgLSBwdXQgdGhl IGRlZmluaXRpb24gb2YgUFYgSU5GTyBpbnRvIGEgbmV3IGhlYWRlciAtIGk5MTVfdmd0X2lmLmgK Pj4+PiBvdGhlciBjaGFuZ2VzOgo+Pj4+ICAgICAtIGFjY2VzcyBtbWlvIHJlZ3MgYnkgcmVhZHEv cmVhZHcgaW4gaTkxNV9jaGVja192Z3B1KCkKPj4+Pgo+Pj4+IHYzOgo+Pj4+IHRha2UgRGFuaWVs J3MgY29tbWVudHM6Cj4+Pj4gICAgIC0gbW92ZSB0aGUgaTkxNS92Z3QgaW50ZXJmYWNlcyBpbnRv IGEgbmV3IGk5MTVfdmdwdS5jCj4+Pj4gICAgIC0gdXBkYXRlIG1ha2VmaWxlCj4+Pj4gICAgIC0g YWRkIGtlcm5lbGRvYyB0byBmdW5jdGlvbnMgd2hpY2ggYXJlIG5vbi1zdGF0aWMKPj4+PiAgICAg LSBhZGQgYSBET0M6IHNlY3Rpb24gZGVzY3JpYmluZyBzb21lIG9mIHRoZSBoaWdoLWxldmVsIGRl c2lnbgo+Pj4+ICAgICAtIHVwZGF0ZSBkcm0gZG9jYm9vawo+Pj4+IG90aGVyIGNoYW5nZXM6Cj4+ Pj4gICAgIC0gcmVuYW1lIGk5MTVfdmd0X2lmLmggdG8gaTkxNV92Z3B1LmgKPj4+Pgo+Pj4+IFNp Z25lZC1vZmYtYnk6IFl1IFpoYW5nIDx5dS5jLnpoYW5nQGxpbnV4LmludGVsLmNvbT4KPj4+PiBT aWduZWQtb2ZmLWJ5OiBKaWtlIFNvbmcgPGppa2Uuc29uZ0BpbnRlbC5jb20+Cj4+Pj4gU2lnbmVk LW9mZi1ieTogRWRkaWUgRG9uZyA8ZWRkaWUuZG9uZ0BpbnRlbC5jb20+Cj4+Pj4gLS0tCj4+Pj4g ICBEb2N1bWVudGF0aW9uL0RvY0Jvb2svZHJtLnRtcGwgICAgICB8ICA1ICsrKwo+Pj4+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgfCAgMyArKwo+Pj4+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgfCAxMSArKysrKwo+Pj4+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV92Z3B1LmMgICAgfCA4NQo+Pj4+ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKPj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oICAg IHwgODUKPj4+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+Pj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYyB8ICAzICsrCj4+Pj4gICA2IGZpbGVz IGNoYW5nZWQsIDE5MiBpbnNlcnRpb25zKCspCj4+Pj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMKPj4+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaAo+Pj4+Cj4+Pj4gZGlmZiAtLWdpdCBhL0Rv Y3VtZW50YXRpb24vRG9jQm9vay9kcm0udG1wbAo+Pj4+IGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29r L2RybS50bXBsCj4+Pj4gaW5kZXggNjRkOWMxZS4uZTRkYjRjZiAxMDA2NDQKPj4+PiAtLS0gYS9E b2N1bWVudGF0aW9uL0RvY0Jvb2svZHJtLnRtcGwKPj4+PiArKysgYi9Eb2N1bWVudGF0aW9uL0Rv Y0Jvb2svZHJtLnRtcGwKPj4+PiBAQCAtMzgzMiw2ICszODMyLDExIEBAIGludCBudW1faW9jdGxz Ozwvc3lub3BzaXM+Cj4+Pj4gICAhRmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgaW50 ZWxfcnVudGltZV9wbV9kaXNhYmxlX2ludGVycnVwdHMKPj4+PiAgICFGZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9pcnEuYyBpbnRlbF9ydW50aW1lX3BtX2VuYWJsZV9pbnRlcnJ1cHRzCj4+Pj4g ICAgICAgICA8L3NlY3QyPgo+Pj4+ICsgICAgICA8c2VjdDI+Cj4+Pj4gKyAgICAgICAgPHRpdGxl PkludGVsIEdWVC1nIEd1ZXN0IFN1cHBvcnQodkdQVSk8L3RpdGxlPgo+Pj4+ICshUGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jIEludGVsIEdWVC1nIGd1ZXN0IHN1cHBvcnQKPj4+PiAr IUlkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYwo+Pj4+ICsgICAgICA8L3NlY3QyPgo+ Pj4+ICAgICAgIDwvc2VjdDE+Cj4+Pj4gICAgICAgPHNlY3QxPgo+Pj4+ICAgICAgICAgPHRpdGxl PkRpc3BsYXkgSGFyZHdhcmUgSGFuZGxpbmc8L3RpdGxlPgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUKPj4+PiBpbmRleCA4OTFlNTg0Li5kOWFhNWNhIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUKPj4+PiBAQCAtNzksNiArNzksOSBAQCBpOTE1LXkgKz0gZHZvX2NoNzAxNy5vIFwK Pj4+PiAgICAgICAgIGludGVsX3Nkdm8ubyBcCj4+Pj4gICAgICAgICBpbnRlbF90di5vCj4+Pj4K Pj4+PiArIyB2aXJ0dWFsIGdwdSBjb2RlCj4+Pj4gK2k5MTUteSArPSBpOTE1X3ZncHUubwo+Pj4+ ICsKPj4+PiAgICMgbGVnYWN5IGhvcnJvcnMKPj4+PiAgIGk5MTUteSArPSBpOTE1X2RtYS5vIFwK Pj4+PiAgICAgICAgIGk5MTVfdW1zLm8KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ Pj4+IGluZGV4IDU0NjkxYmMuLmUxZTIyMWUgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPj4+PiBAQCAtMTQ3MCw2ICsxNDcwLDEwIEBAIHN0cnVjdCBpOTE1X3dvcmthcm91bmRz IHsKPj4+PiAgICAgICB1MzIgY291bnQ7Cj4+Pj4gICB9Owo+Pj4+Cj4+Pj4gK3N0cnVjdCBpOTE1 X3ZpcnR1YWxfZ3B1IHsKPj4+PiArICAgIGJvb2wgYWN0aXZlOwo+Pj4+ICt9Owo+Pj4+ICsKPj4+ PiAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPj4+PiAgICAgICBzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2Owo+Pj4+ICAgICAgIHN0cnVjdCBrbWVtX2NhY2hlICpzbGFiOwo+Pj4+IEBAIC0xNDgy LDYgKzE0ODYsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4+Pj4KPj4+PiAgICAgICBz dHJ1Y3QgaW50ZWxfdW5jb3JlIHVuY29yZTsKPj4+Pgo+Pj4+ICsgICAgc3RydWN0IGk5MTVfdmly dHVhbF9ncHUgdmdwdTsKPj4+PiArCj4+Pj4gICAgICAgc3RydWN0IGludGVsX2dtYnVzIGdtYnVz W0dNQlVTX05VTV9QT1JUU107Cj4+Pj4KPj4+Pgo+Pj4+IEBAIC0yMzExLDYgKzIzMTcsMTEgQEAg ZXh0ZXJuIHZvaWQgaW50ZWxfdW5jb3JlX2NoZWNrX2Vycm9ycyhzdHJ1Y3QKPj4+PiBkcm1fZGV2 aWNlICpkZXYpOwo+Pj4+ICAgZXh0ZXJuIHZvaWQgaW50ZWxfdW5jb3JlX2Zpbmkoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7Cj4+Pj4gICBleHRlcm4gdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtl X3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+Pj4gYm9vbCByZXN0b3JlKTsKPj4+Pgo+ Pj4+ICtzdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfdmdwdV9hY3RpdmUoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPj4+PiArewo+Pj4+ICsgICAgcmV0dXJuIHRvX2k5MTUoZGV2KS0+dmdwdS5hY3Rp dmU7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gICB2b2lkCj4+Pj4gICBpOTE1X2VuYWJsZV9waXBlc3Rh dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZQo+Pj4+IHBpcGUs Cj4+Pj4gICAgICAgICAgICAgICAgdTMyIHN0YXR1c19tYXNrKTsKPj4+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfdmdwdS5jCj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+PiBpbmRleCAwMDAw MDAwLi4zZjZiNzk3Cj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfdmdwdS5jCj4+Pj4gQEAgLTAsMCArMSw4NSBAQAo+Pj4+ICsvKgo+Pj4+ICsg KiBDb3B5cmlnaHQoYykgMjAxMS0yMDE0IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl c2VydmVkLgo+Pj4+ICsgKgo+Pj4+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbgo+Pj4+IG9idGFpbmluZyBhCj4+Pj4gKyAqIGNv cHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0 aGUKPj4+PiAiU29mdHdhcmUiKSwKPj4+PiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQKPj4+PiBsaW1pdGF0aW9uCj4+Pj4g KyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLAo+Pj4+IHN1YmxpY2Vuc2UsCj4+Pj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tCj4+Pj4gdGhlCj4+Pj4g KyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nCj4+Pj4gY29uZGl0aW9uczoKPj4+PiArICoKPj4+PiArICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZwo+Pj4+IHRoZSBu ZXh0Cj4+Pj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucwo+Pj4+IG9mIHRoZQo+Pj4+ICsgKiBTb2Z0d2FyZS4KPj4+ PiArICoKPj4+PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg V0FSUkFOVFkgT0YgQU5ZIEtJTkQsCj4+Pj4gRVhQUkVTUyBPUgo+Pj4+ICsgKiBJTVBMSUVELCBJ TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCj4+Pj4gTUVSQ0hB TlRBQklMSVRZLAo+Pj4+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg Tk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQKPj4+PiBTSEFMTAo+Pj4+ICsgKiBUSEUgQVVU SE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF Uwo+Pj4+IE9SIE9USEVSCj4+Pj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAo+Pj4+IEFSSVNJTkcgRlJPTSwKPj4+PiAr ICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBP UiBPVEhFUgo+Pj4+IERFQUxJTkdTIElOIFRIRQo+Pj4+ICsgKiBTT0ZUV0FSRS4KPj4+PiArICov Cj4+Pj4gKwo+Pj4+ICsjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4+Pj4gKyNpbmNsdWRlICJpOTE1 X3ZncHUuaCIKPj4+PiArCj4+Pj4gKwo+Pj4+ICsvKioKPj4+PiArICogRE9DOiBJbnRlbCBHVlQt ZyBndWVzdCBzdXBwb3J0Cj4+Pj4gKyAqCj4+Pj4gKyAqIEludGVsIEdWVC1nIGlzIGEgZ3JhcGhp Y3MgdmlydHVhbGl6YXRpb24gdGVjaG5vbG9neSB3aGljaCBzaGFyZXMKPj4+PiB0aGUKPj4+PiAr ICogR1BVIGFtb25nIG11bHRpcGxlIHZpcnR1YWwgbWFjaGluZXMgb24gYSB0aW1lLXNoYXJpbmcg YmFzaXMuIEVhY2gKPj4+PiArICogdmlydHVhbCBtYWNoaW5lIGlzIHByZXNlbnRlZCBhIHZpcnR1 YWwgR1BVICh2R1BVKSwgd2hpY2ggaGFzCj4+Pj4gZXF1aXZhbGVudAo+Pj4+ICsgKiBmZWF0dXJl cyBhcyB0aGUgdW5kZXJseWluZyBwaHlzaWNhbCBHUFUgKHBHUFUpLCBzbyBpOTE1IGRyaXZlciBj YW4KPj4+PiBydW4KPj4+PiArICogc2VhbWxlc3NseSBpbiBhIHZpcnR1YWwgbWFjaGluZS4gVGhp cyBmaWxlIHByb3ZpZGVzIHZHUFUgc3BlY2lmaWMKPj4+PiArICogb3B0aW1pemF0aW9ucyB3aGVu IHJ1bm5pbmcgaW4gYSB2aXJ0dWFsIG1hY2hpbmUsIHRvIHJlZHVjZSB0aGUKPj4+PiBjb21wbGV4 aXR5Cj4+Pj4gKyAqIG9mIHZHUFUgZW11bGF0aW9uIGFuZCB0byBpbXByb3ZlIHRoZSBvdmVyYWxs IHBlcmZvcm1hbmNlLgo+Pj4+ICsgKgo+Pj4+ICsgKiBBIHByaW1hcnkgZnVuY3Rpb24gaW50cm9k dWNlZCBoZXJlIGlzIHNvLWNhbGxlZCAiYWRkcmVzcyBzcGFjZQo+Pj4+IGJhbGxvb25pbmciCj4+ Pj4gKyAqIHRlY2huaXF1ZS4gSW50ZWwgR1ZULWcgcGFydGl0aW9ucyBnbG9iYWwgZ3JhcGhpY3Mg bWVtb3J5IGFtb25nCj4+Pj4gbXVsdGlwbGUgVk1zLAo+Pj4+ICsgKiBzbyBlYWNoIFZNIGNhbiBk aXJlY3RseSBhY2Nlc3MgYSBwb3J0aW9uIG9mIHRoZSBtZW1vcnkgdy9vCj4+Pj4gaHlwZXJ2aXNv cidzCj4+Pj4gKyAqIGludGVydmVudGlvbiwgZS5nLiBmaWxsaW5nIHRleHR1cmVzIG9yIHF1ZXVp bmcgY29tbWFuZHMuIEhvd2V2ZXIKPj4+PiB3LyB0aGUKPj4+Cj4+PiBQZXJzb25hbCBwcmVmZXJl bmNlLCBidXQgSXQgbWF5IGJlIG5pY2VyIHRvIGF2b2lkICJ3L28iIGFuZCBzaW1pbGFyCj4+PiBz aG9ydGhhbmQgaW4gZG9jdW1lbnRhdGlvbi4KPj4gT0suIFdpbGwgZml4IGl0LiA6KQo+Pj4KPj4+ PiArICogcGFydGl0aW9uaW5nIGFuIHVubW9kaWZpZWQgaTkxNSBkcml2ZXIgd291bGQgYXNzdW1l IGEgc21hbGxlcgo+Pj4+IGdyYXBoaWNzCj4+Pj4gKyAqIG1lbW9yeSBzdGFydGluZyBmcm9tIGFk ZHJlc3MgWkVSTywgdGhlbiByZXF1aXJlcyB2R1BVIGVtdWxhdGlvbgo+Pj4+IG1vZHVsZSB0bwo+ Pj4+ICsgKiB0cmFuc2xhdGUgdGhlIGdyYXBoaWNzIGFkZHJlc3MgYmV0d2VlbiAnZ3Vlc3Qgdmll dycgYW5kICdob3N0Cj4+Pj4gdmlldycsIGZvcgo+Pj4+ICsgKiBhbGwgcmVnaXN0ZXJzIGFuZCBj b21tYW5kIG9wY29kZXMgd2hpY2ggY29udGFpbiBhIGdyYXBoaWNzIG1lbW9yeQo+Pj4+IGFkZHJl c3MuCj4+Pj4gKyAqIFRvIHJlZHVjZSB0aGUgY29tcGxleGl0eSwgSW50ZWwgR1ZULWcgaW50cm9k dWNlcyAiYWRkcmVzcyBzcGFjZQo+Pj4+IGJhbGxvb25pbmciLAo+Pj4+ICsgKiBieSB0ZWxsaW5n IHRoZSBleGFjdCBwYXJ0aXRpb25pbmcga25vd2xlZGdlIHRvIGVhY2ggZ3Vlc3QgaTkxNQo+Pj4+ IGRyaXZlciwgd2hpY2gKPj4+PiArICogdGhlbiByZXNlcnZlcyBhbmQgcHJldmVudHMgbm9uLWFs bG9jYXRlZCBwb3J0aW9ucyBmcm9tIGFsbG9jYXRpb24uCj4+Pj4gVGh1cyB2R1BVCj4+Pj4gKyAq IGVtdWxhdGlvbiBtb2R1bGUgbW9kdWxlIG9ubHkgbmVlZHMgdG8gc2NhbiBhbmQgdmFsaWRhdGUg Z3JhcGhpY3MKPj4+PiBhZGRyZXNzZXMKPj4+PiArICogdy9vIGNvbXBsZXhpdHkgb2YgYWRkcmVz cyB0cmFuc2xhdGlvbi4KPj4+PiArICoKPj4+PiArICovCj4+Pj4gKwo+Pj4+ICsvKioKPj4+PiAr ICogaTkxNV9jaGVja192Z3B1IC0gZGV0ZWN0IHZpcnR1YWwgR1BVCj4+Pj4gKyAqIEBkZXY6IGRy bSBkZXZpY2UgKgo+Pj4+ICsgKgo+Pj4+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhdCB0 aGUgaW5pdGlhbGl6YXRpb24gc3RhZ2UsIHRvIGRldGVjdAo+Pj4+IHdoZXRoZXIKPj4+PiArICog cnVubmluZyBvbiBhIHZHUFUuCj4+Pj4gKyAqLwo+Pj4+ICt2b2lkIGk5MTVfY2hlY2tfdmdwdShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+Pj4+ICt7Cj4+Pj4gKyAgICBzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4+Pj4gKyAgICB1aW50NjRfdCBtYWdp YzsKPj4+PiArICAgIHVpbnQzMl90IHZlcnNpb247Cj4+Pj4gKwo+Pj4+ICsgICAgQlVJTERfQlVH X09OKHNpemVvZihzdHJ1Y3Qgdmd0X2lmKSAhPSBWR1RfUFZJTkZPX1NJWkUpOwo+Pj4+ICsKPj4+ PiArICAgIGlmICghSVNfSEFTV0VMTChkZXYpKQo+Pj4+ICsgICAgICAgIHJldHVybjsKPj4+PiAr Cj4+Pj4gKyAgICBtYWdpYyA9IHJlYWRxKGRldl9wcml2LT5yZWdzICsgdmd0aWZfcmVnKG1hZ2lj KSk7Cj4+Pj4gKyAgICBpZiAobWFnaWMgIT0gVkdUX01BR0lDKQo+Pj4+ICsgICAgICAgIHJldHVy bjsKPj4+PiArCj4+Pj4gKyAgICB2ZXJzaW9uID0gSU5URUxfVkdUX0lGX1ZFUlNJT05fRU5DT0RF KAo+Pj4+ICsgICAgICAgIHJlYWR3KGRldl9wcml2LT5yZWdzICsgdmd0aWZfcmVnKHZlcnNpb25f bWFqb3IpKSwKPj4+PiArICAgICAgICByZWFkdyhkZXZfcHJpdi0+cmVncyArIHZndGlmX3JlZyh2 ZXJzaW9uX21pbm9yKSkpOwo+Pj4+ICsgICAgaWYgKHZlcnNpb24gIT0gSU5URUxfVkdUX0lGX1ZF UlNJT04pCj4+Pj4gKyAgICAgICAgcmV0dXJuOwo+Pj4KPj4+IFdvdWxkIGl0IGJlIHVzZWZ1bCB0 byBzb21ldGhpbmcgb24gdmVyc2lvbiBtaXNtYXRjaD8KPj4gV2VsbC4gVGhhbmtzIGZvciB5b3Vy IG5vdGlmaWNhdGlvbi4gOikKPj4gSW4gZmFjdCwgdGhpcyB2ZXJzaW9uIGp1ZGdlbWVudCBpcyBq dXN0IGZvciBmdXR1cmUgdXNhZ2VzLiBCeSBub3csIHdlCj4+IGhhdmUgb25seSBvbmUgdmd0IGlu dGVyZmFjZSB2ZXJzaW9uLCAweDEwMDAwLiBCdXQgeW91IGFyZSByaWdodCwgdW5saWtlCj4+IHRo ZSBqdWRnZW1lbnQgZm9yICdtYWdpYycsIHdoaWNoIHNwZWNpZmllcyB0aGUgSW50ZWwgR1ZULWcg ZmVhdHVyZSwgYW5kCj4+IGNhbiBiZSByZXR1cm5lZCBkaXJlY3RseSB3aGVuIGZhbHNlLCBmYWls dXJlIGZvciB0aGUgJ3ZlcnNpb24nIG1heQo+PiBzaG91bGQgdHJpZ2dlciBzb21ldGhpbmcgbGlr ZSB1bmxvYWQgdGhlIGRyaXZlci4gSG93ZXZlciwgaWYgc28sIHRoaXMKPj4gbWVhbnMgd2UgbWF5 IG5lZWQgdG86Cj4+IDE+IHJldHVybiBzb21ldGhpbmcgaW4gaTkxNV9jaGVja192Z3B1KCk7Cj4+ IDI+IGNoYW5nZSB0aGUgcHJvdG90eXBlIG9mIGk5MTVfY2hlY2tfdmdwdSgpIGFuZCBpdHMgY2Fs bGVyCj4+IGludGVsX3VuY29yZV9pbml0KCk7Cj4+IDM+IGNoZWNrIHRoZSByZXR1cm4gdmFsdWUg b2YgaW50ZWxfdW5jb3JlX2luaXQoKSBpbiBpOTE1X2RyaXZlcl9sb2FkKCkKPj4gSXMgdGhpcyBh cHByb2FjaCBhY2NlcHRhYmxlPwo+Cj4gSSB3b3VsZCBsZWF2ZSB0aGlzIGZvciB0aGUgZnV0dXJl IHZlcnNpb24uIEkgd2FzIHNpbXBseSBzdWdnZXN0aW5nCj4gbG9nZ2luZyBzb21ldGhpbmcgb24g dmVyc2lvbiBtaXNtYXRjaC4gSnVzdCBiZWNhdXNlIGl0IGlzIHVuZXhwZWN0ZWQgc28KPiB0aGVy ZSBpcyBhIHRyYWNlIGluIHRoZSBsb2dzIHdoeSBmZWF0dXJlIGlzIG5vdCBhdmFpbGFibGUuIEl0 J3MgdXAgdG8geW91Lgo+Cj4+Pgo+Pj4+ICsgICAgZGV2X3ByaXYtPnZncHUuYWN0aXZlID0gdHJ1 ZTsKPj4+PiArICAgIERSTV9JTkZPKCJWaXJ0dWFsIEdQVSBmb3IgSW50ZWwgR1ZULWcgZGV0ZWN0 ZWQuXG4iKTsKPj4+PiArfQo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3ZncHUuaAo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmgKPj4+PiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAwMDAuLjVmNDFkMDFjCj4+Pj4gLS0t IC9kZXYvbnVsbAo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oCj4+ Pj4gQEAgLTAsMCArMSw4NSBAQAo+Pj4+ICsvKgo+Pj4+ICsgKiBDb3B5cmlnaHQoYykgMjAxMS0y MDE0IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+Pj4+ICsgKgo+Pj4+ ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55 IHBlcnNvbgo+Pj4+IG9idGFpbmluZyBhCj4+Pj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKPj4+PiAiU29mdHdhcmUiKSwK Pj4+PiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j bHVkaW5nIHdpdGhvdXQKPj4+PiBsaW1pdGF0aW9uCj4+Pj4gKyAqIHRoZSByaWdodHMgdG8gdXNl LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLAo+Pj4+IHN1YmxpY2Vu c2UsCj4+Pj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw ZXJtaXQgcGVyc29ucyB0byB3aG9tCj4+Pj4gdGhlCj4+Pj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5p c2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nCj4+Pj4gY29uZGl0aW9uczoK Pj4+PiArICoKPj4+PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZwo+Pj4+IHRoZSBuZXh0Cj4+Pj4gKyAqIHBhcmFncmFw aCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u cwo+Pj4+IG9mIHRoZQo+Pj4+ICsgKiBTb2Z0d2FyZS4KPj4+PiArICoKPj4+PiArICogVEhFIFNP RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs Cj4+Pj4gRVhQUkVTUyBPUgo+Pj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCj4+Pj4gTUVSQ0hBTlRBQklMSVRZLAo+Pj4+ICsgKiBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4g Tk8gRVZFTlQKPj4+PiBTSEFMTAo+Pj4+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUwo+Pj4+IE9SIE9USEVSCj4+Pj4g KyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Ig T1RIRVJXSVNFLAo+Pj4+IEFSSVNJTkcgRlJPTSwKPj4+PiArICogT1VUIE9GIE9SIElOIENPTk5F Q1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgo+Pj4+IERFQUxJTkdT IElOIFRIRQo+Pj4+ICsgKiBTT0ZUV0FSRS4KPj4+PiArICovCj4+Pj4gKwo+Pj4+ICsjaWZuZGVm IF9JOTE1X1ZHUFVfSF8KPj4+PiArI2RlZmluZSBfSTkxNV9WR1BVX0hfCj4+Pj4gKwo+Pj4+ICsv KiBUaGUgTU1JTyBvZmZzZXQgb2YgdGhlIHNoYXJlZCBpbmZvIGJldHdlZW4gZ3Vlc3QgYW5kIGhv c3QKPj4+PiBlbXVsYXRvciAqLwo+Pj4+ICsjZGVmaW5lIFZHVF9QVklORk9fUEFHRSAgICAweDc4 MDAwCj4+Pj4gKyNkZWZpbmUgVkdUX1BWSU5GT19TSVpFICAgIDB4MTAwMAo+Pj4+ICsKPj4+PiAr LyoKPj4+PiArICogVGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgcGFnZXMgYXJlIGRlZmluZWQgaW4g R0VOIE1NSU8gc3BhY2UKPj4+PiArICogZm9yIHZpcnR1YWxpemF0aW9uLiAoT25lIHBhZ2UgZm9y IG5vdykKPj4+PiArICovCj4+Pj4gKyNkZWZpbmUgVkdUX01BR0lDICAgICAgICAgMHg0Nzc2NTQ0 Nzc2NTQ0Nzc2ICAgIC8qICd2R1R2R1R2RycgKi8KPj4+PiArI2RlZmluZSBWR1RfVkVSU0lPTl9N QUpPUiAxCj4+Pj4gKyNkZWZpbmUgVkdUX1ZFUlNJT05fTUlOT1IgMAo+Pj4+ICsKPj4+PiArI2Rl ZmluZSBJTlRFTF9WR1RfSUZfVkVSU0lPTl9FTkNPREUobWFqb3IsIG1pbm9yKSAoKG1ham9yKSA8 PCAxNiB8Cj4+Pj4gKG1pbm9yKSkKPj4+PiArI2RlZmluZSBJTlRFTF9WR1RfSUZfVkVSU0lPTiBc Cj4+Pj4gKyAgICBJTlRFTF9WR1RfSUZfVkVSU0lPTl9FTkNPREUoVkdUX1ZFUlNJT05fTUFKT1Is IFZHVF9WRVJTSU9OX01JTk9SKQo+Pj4+ICsKPj4+PiArc3RydWN0IHZndF9pZiB7Cj4+Pj4gKyAg ICB1aW50NjRfdCBtYWdpYzsgICAgICAgIC8qIFZHVF9NQUdJQyAqLwo+Pj4+ICsgICAgdWludDE2 X3QgdmVyc2lvbl9tYWpvcjsKPj4+PiArICAgIHVpbnQxNl90IHZlcnNpb25fbWlub3I7Cj4+Pj4g KyAgICB1aW50MzJfdCB2Z3RfaWQ7ICAgIC8qIElEIG9mIHZHVCBpbnN0YW5jZSAqLwo+Pj4+ICsg ICAgdWludDMyX3QgcnN2MVsxMl07ICAgIC8qIHBhZCB0byBvZmZzZXQgMHg0MCAqLwo+Pj4KPj4+ IEluIGdlbmVyYWwgSSB0aG91Z2h0IHN0ZGludCB0eXBlcyBzaG91bGQgYmUgYXZvaWRlZCBpbiB0 aGUga2VybmVsIGluCj4+PiBmYXZvdXIgb2YgdTMyIGFuZCBjb21wYW55LiBCdXQgSSBzZWUgaTkx NSBpcyBmdWxsIG9mIHRoZW0gYWxyZWFkeSBzbwo+Pj4gbWF5YmUgbXkgaW5mb3JtYXRpb24gaXMg b3V0ZGF0ZWQuCj4+Pgo+PiBMZXQncyBrZWVwIHRoZSBfdCB0eXBlcywgbGlrZSBleHBsYW5hdGlv bnMgaW4gRGFuaWVsJ3MgbWFpbC4gSXMgdGhpcyBPSz8KPgo+IFllcy4KPgo+Pj4+ICsgICAgLyoK Pj4+PiArICAgICAqICBEYXRhIHN0cnVjdHVyZSB0byBkZXNjcmliZSB0aGUgYmFsb29uaW5nIGlu Zm8gb2YgcmVzb3VyY2VzLgo+Pj4+ICsgICAgICogIEVhY2ggVk0gY2FuIG9ubHkgaGF2ZSBvbmUg cG9ydGlvbiBvZiBjb250aW51b3VzIGFyZWEgZm9yIG5vdy4KPj4+PiArICAgICAqICAoTWF5IHN1 cHBvcnQgc2NhdHRlcmVkIHJlc291cmNlIGluIGZ1dHVyZSkKPj4+PiArICAgICAqICAoc3RhcnRp bmcgZnJvbSBvZmZzZXQgMHg0MCkKPj4+PiArICAgICAqLwo+Pj4+ICsgICAgc3RydWN0IHsKPj4+ PiArICAgICAgICAvKiBBcGVydHVyZSByZWdpc3RlciBiYWxvb25pbmcgKi8KPj4+PiArICAgICAg ICBzdHJ1Y3Qgewo+Pj4+ICsgICAgICAgICAgICB1aW50MzJfdCBteV9iYXNlOwo+Pj4+ICsgICAg ICAgICAgICB1aW50MzJfdCBteV9zaXplOwo+Pj4+ICsgICAgICAgIH0gbG93X2dtYWRyOyAgICAv KiBhcGVydHVyZSAqLwo+Pj4+ICsgICAgICAgIC8qIEdNQURSIHJlZ2lzdGVyIGJhbG9vbmluZyAq Lwo+Pj4+ICsgICAgICAgIHN0cnVjdCB7Cj4+Pj4gKyAgICAgICAgICAgIHVpbnQzMl90IG15X2Jh c2U7Cj4+Pj4gKyAgICAgICAgICAgIHVpbnQzMl90IG15X3NpemU7Cj4+Pj4gKyAgICAgICAgfSBo aWdoX2dtYWRyOyAgICAvKiBub24gYXBlcnR1cmUgKi8KPj4+PiArICAgICAgICAvKiBhbGxvd2Vk IGZlbmNlIHJlZ2lzdGVycyAqLwo+Pj4+ICsgICAgICAgIHVpbnQzMl90IGZlbmNlX251bTsKPj4+ PiArICAgICAgICB1aW50MzJfdCByc3YyWzNdOwo+Pj4+ICsgICAgfSBhdmFpbF9yczsgICAgICAg IC8qIGF2YWlsYWJsZS9hc3NpZ25lZCByZXNvdXJjZSAqLwo+Pj4KPj4+IEkgZGlkbid0IGZpZ3Vy ZSBvdXQgeWV0IHdoeSB0aGUgY29uY2VwdCBpcyB0byBwYXNzIGluIHR3byByYW5nZXMgdG8gbWFy awo+Pj4gYXMgcmVzZXJ2ZWQsIGluc3RlYWQgb2Ygb25lIHVzYWJsZS9hbGxvd2VkIHJhbmdlIGFu ZCB0aGVuIGltcGxpY2l0bHkgYWxsCj4+PiB0aGUgcmVzdCBhcyByZXNlcnZlZD8KPj4+Cj4+IExp a2UgeW91IHNhaWQgaW4gMi8zIGNvbW1lbnRzLCB0aGlzIDIgcGFydCBpcyBmb3IgbWFwcGFibGUg YW5kCj4+IG5vbi1tYXBwbGFibGUgcmVzcGVjdGl2ZWx5LiA6KQo+Cj4gQXJlIGhpZ2ggYW5kIGxv dyBtZW1vcnkgYXMgdGVybXMga25vd24gaW4gdGhlIGk5MTUgc3BhY2Ugc28gZmFyIGFzCj4gc3lu b255bXMgZm9yIG1hcHBhYmxlIGFuZCBub24tbWFwcGFibGU/Cj4KV2VsbCwgSSdtIG5vdCBzdXJl LgpEYW5pZWwsIGRvIHlvdSB0aGluayB0aGUgImxvdyBnbWFkci9oaWdoIGdtYWRyIiB3aWxsIGNh dXNlIGFueSAKbWlzdW5kZXJzdGFuZGluZz8KPj4+PiArICAgIHVpbnQzMl90IHJzdjNbMHgyMDAg LSAyNF07ICAgIC8qIHBhZCB0byBoYWxmIHBhZ2UgKi8KPj4+PiArICAgIC8qCj4+Pj4gKyAgICAg KiBUaGUgYm90dG9tIGhhbGYgcGFnZSBpcyBmb3IgcmVzcG9uc2UgZnJvbSBHZnggZHJpdmVyIHRv Cj4+Pj4gaHlwZXJ2aXNvci4KPj4+PiArICAgICAqIFNldCB0byByZXNlcnZlZCBmaWVsZHMgdGVt cG9yYXJpbHkgYnkgbm93Lgo+Pj4+ICsgICAgICovCj4+Pj4gKyAgICB1aW50MzJfdCByc3Y0Owo+ Pj4+ICsgICAgdWludDMyX3QgZGlzcGxheV9yZWFkeTsgICAgLyogcmVhZHkgZm9yIGRpc3BsYXkg b3duZXIgc3dpdGNoICovCj4+Pj4gKyAgICB1aW50MzJfdCByc3Y1WzB4MjAwIC0gMl07ICAgIC8q IHBhZCB0byBvbmUgcGFnZSAqLwo+Pj4+ICt9IF9fcGFja2VkOwo+Pj4KPj4+IFlvdSBwcm9iYWJs eSBkb24ndCBuZWVkIF9fcGFja2VkIHNpbmNlIHlvdSBoYXZlIEJVSUxEX0JVR19PTiBvbiBzaXpl Cj4+PiBtaXNtYXRjaCBhbmQgcGFkIHRvIGZ1bGwgc2l6ZSB3aXRoIHJlc2VydmVkIGZpZWxkcy4g SSBkb24ndCB0aGluayBpdAo+Pj4gbWF0dGVycyB0aG91Z2guCj4+Pgo+PiBXZWxsLCBJSVJDLCB0 aGlzIF9fcGFja2VkIGlzIGFkZGVkIHRvIGZvbGxvdyBDaHJpcydzIGNvbW1lbnRzLiBIb3cgYWJv dXQKPj4gd2Uga2VlcCBpdD8gT3Igd2lsbCBpdCBodXJ0IGFueSBwbGFjZT8gOikKPgo+IFRoZSBv bmx5IHB1cnBvc2UgZm9yIHBhY2tlZCBoZXJlIEkgY2FuIHNlZSBpcyBhIGRvdWJsZSBndWFyZCBh bG9uZyB0aGUKPiBCVUlMRF9CVUdfT04uIEFzIEkgc2FpZCBJIGRvbid0IHRoaW5rIGl0IG1ha2Vz IGFueSBkaWZmZXJlbmNlIHNvIHlvdSBjYW4KPiBsZWF2ZSBpdCBpbi4KT0suIFRoYW5rcy4KPgo+ IFJlZ2FyZHMsCj4KPiBUdnJ0a28KPgo+CkIuUi4KWXUKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK