From mboxrd@z Thu Jan 1 00:00:00 1970 From: Libin Yang Subject: Re: [V2 PATCH 2/2] drm/i915: start adding dp mst audio Date: Mon, 23 Nov 2015 10:23:09 +0800 Message-ID: <5652788D.2010704@linux.intel.com> References: <1447220002-82030-1-git-send-email-libin.yang@linux.intel.com> <1447220002-82030-2-git-send-email-libin.yang@linux.intel.com> <1447931273.2693.12.camel@gmail.com> 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 0CECA6E376 for ; Sun, 22 Nov 2015 18:25:24 -0800 (PST) In-Reply-To: <1447931273.2693.12.camel@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ander Conselvan De Oliveira , intel-gfx@lists.freedesktop.org, jani.nikula@linux.intel.com, daniel.vetter@intel.com, ville.syrjala@linux.intel.com Cc: Dave Airlie List-Id: intel-gfx@lists.freedesktop.org Ck9uIDExLzE5LzIwMTUgMDc6MDcgUE0sIEFuZGVyIENvbnNlbHZhbiBEZSBPbGl2ZWlyYSB3cm90 ZToKPiAoQ2MnaW5nIFBhdWxvIGZvciB0aGUgYXVkaW8gcG93ZXIgZG9tYWluIHF1ZXN0aW9uKQo+ Cj4gT24gV2VkLCAyMDE1LTExLTExIGF0IDEzOjMzICswODAwLCBsaWJpbi55YW5nQGxpbnV4Lmlu dGVsLmNvbSB3cm90ZToKPj4gRnJvbTogTGliaW4gWWFuZyA8bGliaW4ueWFuZ0BsaW51eC5pbnRl bC5jb20+Cj4+Cj4+IFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBEUCBNU1QgYXVkaW8gaW4g aTkxNS4KPj4KPj4gRW5hYmxlIGF1ZGlvIGNvZGVjIHdoZW4gRFAgTVNUIGlzIGVuYWJsZWQgaWYg aGFzX2F1ZGlvIGZsYWcgaXMgc2V0Lgo+PiBEaXNhYmxlIGF1ZGlvIGNvZGVjIHdoZW4gRFAgTVNU IGlzIGRpc2FibGVkIGlmIGhhc19hdWRpbyBmbGFnIGlzIHNldC4KPj4KPj4gU2lnbmVkLW9mZi1i eTogTGliaW4gWWFuZyA8bGliaW4ueWFuZ0BsaW51eC5pbnRlbC5jb20+Cj4+IFNpZ25lZC1vZmYt Ynk6IERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+Cj4+IC0tLQo+PiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIHwgMTQgKysrKysrKysrKysrKysKPj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jICB8ICA5ICsrKysrKy0tLQo+PiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jIHwgMjUgKysrKysrKysrKysrKysrKysrKysr KysrKwo+PiAgIDMgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMo LSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j Cj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPj4gaW5kZXggNTY1OWQ0 Yy4uMzhjN2E1ZCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPj4gQEAg LTI4NzMsNiArMjg3MywxOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9pbmZvKHN0cnVjdCBzZXFf ZmlsZSAqbSwKPj4gICAJCWludGVsX3BhbmVsX2luZm8obSwgJmludGVsX2Nvbm5lY3Rvci0+cGFu ZWwpOwo+PiAgIH0KPj4KPj4gK3N0YXRpYyB2b2lkIGludGVsX2RwX21zdF9pbmZvKHN0cnVjdCBz ZXFfZmlsZSAqbSwKPj4gKwkJCSAgc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVj dG9yKQo+PiArewo+PiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0gaW50 ZWxfY29ubmVjdG9yLT5lbmNvZGVyOwo+PiArCXN0cnVjdCBpbnRlbF9kcF9tc3RfZW5jb2RlciAq aW50ZWxfbXN0ID0KPj4gKwkJZW5jX3RvX21zdCgmaW50ZWxfZW5jb2Rlci0+YmFzZSk7Cj4+ICsJ c3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBpbnRlbF9tc3QtPnBy aW1hcnk7Cj4+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9ICZpbnRlbF9kaWdfcG9ydC0+ ZHA7Cj4+ICsKPj4gKwlzZXFfcHJpbnRmKG0sICJcdGF1ZGlvIHN1cHBvcnQ6ICVzXG4iLAo+PiBk cm1fZHBfbXN0X3BvcnRfaGFzX2F1ZGlvKCZpbnRlbF9kcC0+bXN0X21nciwgaW50ZWxfY29ubmVj dG9yLT5wb3J0KSA/ICJ5ZXMiIDoKPj4gIm5vIik7Cj4KPiBUb28gbXVjaCBnb2luZyBvbiBpbiBq dXN0IG9uZSBsaW5lLiBZb3UgY2FuIHJlcGxhY2UgdGhlIHRlcm5hcnkgb3BlcmF0b3Igd2l0aAo+ IHllc25vKCkuIFlvdSBjb3VsZCBhbHNvIGFkZCBhIGhhc19hdWRpbyBib29sOgo+Cj4gYm9vbCBo YXNfYXVkaW8gPSBkcm1fZHBfbXN0X3BvcnRfaGFzX2F1ZGlvKC4uLik7Cj4gc2VxX3ByaW50Zigu Li4sIHllc25vKGhhc19hdWRpbykpOwoKR2V0IGl0LiBUaGFua3MuCgo+Cj4KPj4gK30KPj4gKwo+ PiAgIHN0YXRpYyB2b2lkIGludGVsX2hkbWlfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCj4+ICAg CQkJICAgIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKPj4gICB7Cj4+ IEBAIC0yOTE2LDYgKzI5MjgsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jb25uZWN0b3JfaW5mbyhz dHJ1Y3Qgc2VxX2ZpbGUgKm0sCj4+ICAgCQkJaW50ZWxfaGRtaV9pbmZvKG0sIGludGVsX2Nvbm5l Y3Rvcik7Cj4+ICAgCQllbHNlIGlmIChpbnRlbF9lbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBV VF9MVkRTKQo+PiAgIAkJCWludGVsX2x2ZHNfaW5mbyhtLCBpbnRlbF9jb25uZWN0b3IpOwo+PiAr CQllbHNlIGlmIChpbnRlbF9lbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9EUF9NU1QpCj4+ ICsJCQlpbnRlbF9kcF9tc3RfaW5mbyhtLCBpbnRlbF9jb25uZWN0b3IpOwo+PiAgIAl9Cj4+Cj4+ ICAgCXNlcV9wcmludGYobSwgIlx0bW9kZXM6XG4iKTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9hdWRpby5jCj4+IGluZGV4IDYzZDQ3MDYuLjA3YjJhYTYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfYXVkaW8uYwo+PiBAQCAtMjYyLDcgKzI2Miw4IEBAIHN0YXRpYyB2b2lkIGhzd19h dWRpb19jb2RlY19kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyCj4+ICplbmNvZGVyKQo+PiAg IAl0bXAgfD0gQVVEX0NPTkZJR19OX1BST0dfRU5BQkxFOwo+PiAgIAl0bXAgJj0gfkFVRF9DT05G SUdfVVBQRVJfTl9NQVNLOwo+PiAgIAl0bXAgJj0gfkFVRF9DT05GSUdfTE9XRVJfTl9NQVNLOwo+ PiAtCWlmIChpbnRlbF9waXBlX2hhc190eXBlKGludGVsX2NydGMsIElOVEVMX09VVFBVVF9ESVNQ TEFZUE9SVCkpCj4+ICsJaWYgKGludGVsX3BpcGVfaGFzX3R5cGUoaW50ZWxfY3J0YywgSU5URUxf T1VUUFVUX0RJU1BMQVlQT1JUKSB8fAo+PiArCQlpbnRlbF9waXBlX2hhc190eXBlKGludGVsX2Ny dGMsIElOVEVMX09VVFBVVF9EUF9NU1QpKQo+Cj4gVGhlIHNlY29uZCBsaW5lIHNob3VsZCBiZSBh bGlnbmVkIHdpdGggJygnLgoKT0ssIEkgc2VlLgoKPgo+PiAgIAkJdG1wIHw9IEFVRF9DT05GSUdf Tl9WQUxVRV9JTkRFWDsKPj4gICAJSTkxNV9XUklURShIU1dfQVVEX0NGRyhwaXBlKSwgdG1wKTsK Pj4KPj4gQEAgLTQ3OCw3ICs0NzksOCBAQCBzdGF0aWMgdm9pZCBpbGtfYXVkaW9fY29kZWNfZW5h YmxlKHN0cnVjdCBkcm1fY29ubmVjdG9yCj4+ICpjb25uZWN0b3IsCj4+ICAgCXRtcCAmPSB+QVVE X0NPTkZJR19OX1ZBTFVFX0lOREVYOwo+PiAgIAl0bXAgJj0gfkFVRF9DT05GSUdfTl9QUk9HX0VO QUJMRTsKPj4gICAJdG1wICY9IH5BVURfQ09ORklHX1BJWEVMX0NMT0NLX0hETUlfTUFTSzsKPj4g LQlpZiAoaW50ZWxfcGlwZV9oYXNfdHlwZShpbnRlbF9jcnRjLCBJTlRFTF9PVVRQVVRfRElTUExB WVBPUlQpKQo+PiArCWlmIChpbnRlbF9waXBlX2hhc190eXBlKGludGVsX2NydGMsIElOVEVMX09V VFBVVF9ESVNQTEFZUE9SVCkgfHwKPj4gKwkJaW50ZWxfcGlwZV9oYXNfdHlwZShpbnRlbF9jcnRj LCBJTlRFTF9PVVRQVVRfRFBfTVNUKSkKPgo+IFNhbWUgaGVyZS4KPgo+PiAgIAkJdG1wIHw9IEFV RF9DT05GSUdfTl9WQUxVRV9JTkRFWDsKPj4gICAJZWxzZQo+PiAgIAkJdG1wIHw9IGF1ZGlvX2Nv bmZpZ19oZG1pX3BpeGVsX2Nsb2NrKGFkanVzdGVkX21vZGUpOwo+PiBAQCAtNTE2LDcgKzUxOCw4 IEBAIHZvaWQgaW50ZWxfYXVkaW9fY29kZWNfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyCj4+ ICppbnRlbF9lbmNvZGVyKQo+Pgo+PiAgIAkvKiBFTEQgQ29ubl9UeXBlICovCj4+ICAgCWNvbm5l Y3Rvci0+ZWxkWzVdICY9IH4oMyA8PCAyKTsKPj4gLQlpZiAoaW50ZWxfcGlwZV9oYXNfdHlwZShj cnRjLCBJTlRFTF9PVVRQVVRfRElTUExBWVBPUlQpKQo+PiArCWlmIChpbnRlbF9waXBlX2hhc190 eXBlKGNydGMsIElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCkgfHwKPj4gKwkJaW50ZWxfcGlwZV9o YXNfdHlwZShjcnRjLCBJTlRFTF9PVVRQVVRfRFBfTVNUKSkKPj4gICAJCWNvbm5lY3Rvci0+ZWxk WzVdIHw9ICgxIDw8IDIpOwo+Cj4gQW5kIGhlcmUuCj4KPj4KPj4gICAJY29ubmVjdG9yLT5lbGRb Nl0gPSBkcm1fYXZfc3luY19kZWxheShjb25uZWN0b3IsIGFkanVzdGVkX21vZGUpIC8gMjsKPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCj4+IGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKPj4gaW5kZXggMDYzOTI3NS4uNGRlZDBm YiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKPj4gQEAgLTc4LDYgKzc4 LDggQEAgc3RhdGljIGJvb2wgaW50ZWxfZHBfbXN0X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRl bF9lbmNvZGVyCj4+ICplbmNvZGVyLAo+PiAgIAkJcmV0dXJuIGZhbHNlOwo+PiAgIAl9Cj4+Cj4+ ICsJaWYgKGRybV9kcF9tc3RfcG9ydF9oYXNfYXVkaW8oJmludGVsX2RwLT5tc3RfbWdyLCBmb3Vu ZC0+cG9ydCkpCj4+ICsJCXBpcGVfY29uZmlnLT5oYXNfYXVkaW8gPSB0cnVlOwo+PiAgIAltc3Rf cGJuID0gZHJtX2RwX2NhbGNfcGJuX21vZGUoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jaywgYnBw KTsKPj4KPj4gICAJcGlwZV9jb25maWctPnBibiA9IG1zdF9wYm47Cj4+IEBAIC0xMDIsNiArMTA0 LDExIEBAIHN0YXRpYyB2b2lkIGludGVsX21zdF9kaXNhYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNv ZGVyCj4+ICplbmNvZGVyKQo+PiAgIAlzdHJ1Y3QgaW50ZWxfZHBfbXN0X2VuY29kZXIgKmludGVs X21zdCA9IGVuY190b19tc3QoJmVuY29kZXItPmJhc2UpOwo+PiAgIAlzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGludGVsX21zdC0+cHJpbWFyeTsKPj4gICAJc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCA9ICZpbnRlbF9kaWdfcG9ydC0+ZHA7Cj4+ICsJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2Owo+PiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+ICsJc3RydWN0IGRybV9j cnRjICpjcnRjID0gZW5jb2Rlci0+YmFzZS5jcnRjOwo+PiArCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPj4gKwo+PiAgIAlpbnQgcmV0Owo+Pgo+ PiAgIAlEUk1fREVCVUdfS01TKCIlZFxuIiwgaW50ZWxfZHAtPmFjdGl2ZV9tc3RfbGlua3MpOwo+ PiBAQCAtMTEyLDYgKzExOSwxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tc3RfZGlzYWJsZV9kcChz dHJ1Y3QgaW50ZWxfZW5jb2Rlcgo+PiAqZW5jb2RlcikKPj4gICAJaWYgKHJldCkgewo+PiAgIAkJ RFJNX0VSUk9SKCJmYWlsZWQgdG8gdXBkYXRlIHBheWxvYWQgJWRcbiIsIHJldCk7Cj4+ICAgCX0K Pj4gKwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfYXVkaW8pIHsKPj4gKwkJaW50ZWxfYXVk aW9fY29kZWNfZGlzYWJsZShlbmNvZGVyKTsKPj4gKwkJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQo ZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9BVURJTyk7Cj4+ICsJfQo+Cj4gSXQgc2VlbXMgdGhlIHBv d2VyIGRvbWFpbiBpcyBvbmx5IG5lZWQgZm9yIERESSBwbGF0Zm9ybXMuIFBlcmhhcHMgaXQgd291 bGQgbWFrZQo+IHNlbnNlIHRvIG1vdmUgdGhhdCBpbnRvIGhzd19hdWRpb19jb2RlY197ZW4sZGlz fWFibGUuIFBhdWxvPwo+Cj4+ICAgfQo+Pgo+PiAgIHN0YXRpYyB2b2lkIGludGVsX21zdF9wb3N0 X2Rpc2FibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4+IEBAIC0yMTQsNiAr MjI1LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfbXN0X2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5j b2Rlcgo+PiAqZW5jb2RlcikKPj4gICAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9ICZpbnRl bF9kaWdfcG9ydC0+ZHA7Cj4+ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kaWdf cG9ydC0+YmFzZS5iYXNlLmRldjsKPj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRv X2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKPj4gICAJZW51bSBwb3J0IHBvcnQgPSBp bnRlbF9kaWdfcG9ydC0+cG9ydDsKPj4gICAJaW50IHJldDsKPj4KPj4gQEAgLTIyNiw2ICsyMzgs MTMgQEAgc3RhdGljIHZvaWQgaW50ZWxfbXN0X2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2Rl cgo+PiAqZW5jb2RlcikKPj4gICAJcmV0ID0gZHJtX2RwX2NoZWNrX2FjdF9zdGF0dXMoJmludGVs X2RwLT5tc3RfbWdyKTsKPj4KPj4gICAJcmV0ID0gZHJtX2RwX3VwZGF0ZV9wYXlsb2FkX3BhcnQy KCZpbnRlbF9kcC0+bXN0X21ncik7Cj4+ICsKPj4gKwlpZiAoY3J0Yy0+Y29uZmlnLT5oYXNfYXVk aW8pIHsKPj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiRW5hYmxpbmcgRFAgYXVkaW8gb24gcGlwZSAl Y1xuIiwKPj4gKwkJCQkgcGlwZV9uYW1lKGNydGMtPnBpcGUpKTsKPj4gKwkJaW50ZWxfZGlzcGxh eV9wb3dlcl9nZXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9BVURJTyk7Cj4+ICsJCWludGVsX2F1 ZGlvX2NvZGVjX2VuYWJsZShlbmNvZGVyKTsKPj4gKwl9Cj4+ICAgfQo+Pgo+PiAgIHN0YXRpYyBi b29sIGludGVsX2RwX21zdF9lbmNfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+PiBAQCAtMjUxLDYgKzI3MCwxMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9tc3Rf ZW5jX2dldF9jb25maWcoc3RydWN0Cj4+IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4+Cj4+ICAg CXBpcGVfY29uZmlnLT5oYXNfZHBfZW5jb2RlciA9IHRydWU7Cj4+Cj4+ICsJaWYgKGludGVsX2Rp c3BsYXlfcG93ZXJfaXNfZW5hYmxlZChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0FVRElPKSkgewo+ PiArCQl0ZW1wID0gSTkxNV9SRUFEKEhTV19BVURfUElOX0VMRF9DUF9WTEQpOwo+PiArCQlpZiAo dGVtcCAmIEFVRElPX09VVFBVVF9FTkFCTEUoY3J0Yy0+cGlwZSkpCj4+ICsJCQlwaXBlX2NvbmZp Zy0+aGFzX2F1ZGlvID0gdHJ1ZTsKPj4gKwl9Cj4+ICsKPgo+IFRoaXMgY29kZSBpcyBEREkgc3Bl Y2lmaWMuIFRoYXQgc2hvdWxkbid0IGJlIGEgcHJvYmxlbSBzaW5jZSB3ZSBvbmx5IHN1cHBvcnQg RFAKPiBNU1Qgb24gRERJIHBsYXRmb3JtcywgYnV0IHdlIHNob3VsZG4ndCBkdXBsaWNhdGUgdGhh dCBsb2dpYyBoZXJlLiBTbyBJIHRoaW5rCj4gdGhpcyBzaG91bGQgYmUgYWRkZWQgdG8gYSBmdW5j dGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgYm90aCBmcm9tIGhlcmUgYW5kCj4gaW50ZWxfZGRpLmMu CgpPSywgSSB3aWxsIHRyeSB0byBhZGQgYSBoZWxwZXIgZnVuY3Rpb24uIFdoaWNoIGZpbGUgZG8g eW91IHN1Z2dlc3QgCmFkZGluZyB0aGUgZnVuY3Rpb24gaXQ/CgpCZXN0IFJlZ2FyZHMsCkxpYmlu Cgo+Cj4gQW5kZXIKPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=