From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v2 1/4] drm/i915/icl: Assign Master slave crtc links for Transcoder Port Sync Date: Wed, 12 Jun 2019 12:11:02 -0700 Message-ID: <20190612191101.GB5765@intel.com> References: <20190423154901.15222-1-manasi.d.navare@intel.com> <20190423154901.15222-2-manasi.d.navare@intel.com> <22e58e8c-53be-3fa6-46b8-8ed6c5a446da@linux.intel.com> <20190612190426.GQ5942@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id CE812897EE for ; Wed, 12 Jun 2019 19:09:16 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190612190426.GQ5942@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKdW4gMTIsIDIwMTkgYXQgMTA6MDQ6MjZQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFdlZCwgSnVuIDEyLCAyMDE5IGF0IDExOjM5OjAzQU0gKzAyMDAsIE1hYXJ0 ZW4gTGFua2hvcnN0IHdyb3RlOgo+ID4gT3AgMjMtMDQtMjAxOSBvbSAxNzo0OCBzY2hyZWVmIE1h bmFzaSBOYXZhcmU6Cj4gPiA+IEluIGNhc2Ugb2YgdGlsZWQgZGlzcGxheXMgd2hlbiB0aGUgdHdv IHRpbGVzIGFyZSBzZW50IGFjcm9zcyB0d28gQ1JUQ3MKPiA+ID4gb3ZlciB0d28gc2VwYXJhdGUg RFAgU1NUIGNvbm5lY3RvcnMsIHdlIG5lZWQgYSBtZWNoYW5pc20gdG8gc3luY2hyb25pemUKPiA+ ID4gdGhlIHR3byBDUlRDcyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyB0cmFuc2NvZGVycy4KPiA+ ID4gU28gdXNlIHRoZSBtYXN0ZXItc2xhdmUgbW9kZSB3aGVyZSB0aGVyZSBpcyBvbmUgbWFzdGVy IGNvcnJlc3BvbmRpbmcKPiA+ID4gdG8gbGFzdCBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCB0aWxl IHRoYXQgbmVlZHMgdG8gYmUgZ2VubG9ja2VkIHdpdGgKPiA+ID4gYWxsIG90aGVyIHNsYXZlIHRp bGVzLgo+ID4gPiBUaGlzIHBhdGNoIGlkZW50aWZpZXMgc2F2ZXMgdGhlIG1hc3RlciBDUlRDIHBv aW50ZXIgaW4gYWxsIHRoZSBzbGF2ZQo+ID4gPiBDUlRDIHN0YXRlcy4gVGhpcyBwb2ludGVyIGlz IG5lZWRlZCB0byBzZWxlY3QgdGhlIG1hc3RlciBDUlRDL3RyYW5zY29kZXIKPiA+ID4gd2hpbGUg Y29uZmlndXJpbmcgdHJhbnNjb2RlciBwb3J0IHN5bmMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHNs YXZlcy4KPiA+ID4KPiA+ID4gdjI6Cj4gPiA+ICogTW92ZSB0aGlzIHRvIGludGVsX21vZGVfc2V0 X3BpcGVfY29uZmlnKEphbmkgTiwgVmlsbGUpCj4gPiA+ICogVXNlIHNsYXZlX2JpdG1hc2sgdG8g c2F2ZSBhc3NvY2lhdGVkIHNsYXZlcyBpbiBtYXN0ZXIgY3J0YyBzdGF0ZSAoVmlsbGUpCj4gPiA+ Cj4gPiA+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+ID4gPiBD YzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+ID4g Q2M6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+ Cj4gPiA+IENjOiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgo+ID4gPiBT aWduZWQtb2ZmLWJ5OiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+ ID4gPiAtLS0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDg5 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oICAgICB8ICA2ICsrCj4gPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDk1IGluc2Vy dGlvbnMoKykKPiA+ID4KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4g PiBpbmRleCBiMjc2MzQ1Nzc5ZTYuLjkyZGVhMjIzMTQ5OSAxMDA2NDQKPiA+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gPiBAQCAtMTEzMTYsNiArMTEzMTYsODYgQEAg c3RhdGljIGludCBpY2xfY2hlY2tfbnYxMl9wbGFuZXMoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpCj4gPiA+ICAJcmV0dXJuIDA7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gK3N0 YXRpYyBpbnQgaWNsX2FkZF9nZW5sb2NrX2NydGNzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ ID4gKwkJCQkgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPiA+ICsJCQkJ IHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0 Yy0+ZGV2KTsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqbWFzdGVyX2Nvbm5lY3Rvciwg KmNvbm5lY3RvcjsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubmVjdG9y X3N0YXRlOwo+ID4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yX2xpc3RfaXRlciBjb25uX2l0ZXI7 Cj4gPiA+ICsJc3RydWN0IGRybV9jcnRjICptYXN0ZXJfY3J0YyA9IE5VTEw7Cj4gPiA+ICsJc3Ry dWN0IGRybV9jcnRjX3N0YXRlICptYXN0ZXJfY3J0Y19zdGF0ZTsKPiA+ID4gKwlpbnQgaSwgdGls ZV9ncm91cF9pZDsKPiA+ID4gKwo+ID4gPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEp Cj4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiArCj4gPiA+ICsJLyoKPiA+ID4gKwkgKiBJbiBjYXNl IG9mIHRpbGVkIGRpc3BsYXlzIHRoZXJlIGNvdWxkIGJlIG9uZSBvciBtb3JlIHNsYXZlcyBidXQg dGhlcmUgaXMKPiA+ID4gKwkgKiBvbmx5IG9uZSBtYXN0ZXIuIExldHMgbWFrZSB0aGUgQ1JUQyB1 c2VkIGJ5IHRoZSBjb25uZWN0b3IgY29ycmVzcG9uZGluZwo+ID4gPiArCSAqIHRvIHRoZSBsYXN0 IGhvcml6b25hbCBhbmQgbGFzdCB2ZXJ0aWNhbCB0aWxlIGEgbWFzdGVyL2dlbmxvY2sgQ1JUQy4K PiA+ID4gKwkgKiBBbGwgdGhlIG90aGVyIENSVENzIGNvcnJlc3BvbmRpbmcgdG8gb3RoZXIgdGls ZXMgb2YgdGhlIHNhbWUgVGlsZSBncm91cAo+ID4gPiArCSAqIGFyZSB0aGUgc2xhdmUgQ1JUQ3Mg YW5kIGhvbGQgYSBwb2ludGVyIHRvIHRoZWlyIGdlbmxvY2sgQ1JUQy4KPiA+ID4gKwkgKi8KPiA+ ID4gKwlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IsIGNv bm5lY3Rvcl9zdGF0ZSwgaSkgewo+ID4gPiArCQlpZiAoY29ubmVjdG9yX3N0YXRlLT5jcnRjICE9 IGNydGMpCj4gPiA+ICsJCQljb250aW51ZTsKPiA+ID4gKwkJaWYgKCFjb25uZWN0b3ItPmhhc190 aWxlKQo+ID4gPiArCQkJY29udGludWU7Cj4gPiA+ICsJCWlmIChjb25uZWN0b3ItPnRpbGVfaF9s b2MgPT0gY29ubmVjdG9yLT5udW1faF90aWxlIC0gMSAmJgo+ID4gPiArCQkgICAgY29ubmVjdG9y LT50aWxlX3ZfbG9jID09IGNvbm5lY3Rvci0+bnVtX3ZfdGlsZSAtIDEpCj4gPiA+ICsJCQljb250 aW51ZTsKPiA+ID4gKwkJY3J0Y19zdGF0ZS0+bWFzdGVyX2NydGMgPSBOVUxMOwo+ID4gPiArCQl0 aWxlX2dyb3VwX2lkID0gY29ubmVjdG9yLT50aWxlX2dyb3VwLT5pZDsKPiA+ID4gKwkJZHJtX2Nv bm5lY3Rvcl9saXN0X2l0ZXJfYmVnaW4oJmRldl9wcml2LT5kcm0sICZjb25uX2l0ZXIpOwo+ID4g PiArCQlkcm1fZm9yX2VhY2hfY29ubmVjdG9yX2l0ZXIobWFzdGVyX2Nvbm5lY3RvciwgJmNvbm5f aXRlcikgewo+ID4gPiArCQkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm1hc3Rlcl9jb25u X3N0YXRlID0gTlVMTDsKPiA+ID4gKwo+ID4gPiArCQkJaWYgKCFtYXN0ZXJfY29ubmVjdG9yLT5o YXNfdGlsZSkKPiA+ID4gKwkJCQljb250aW51ZTsKPiA+ID4gKwkJCWlmIChtYXN0ZXJfY29ubmVj dG9yLT50aWxlX2hfbG9jICE9IG1hc3Rlcl9jb25uZWN0b3ItPm51bV9oX3RpbGUgLSAxIHx8Cj4g PiA+ICsJCQkgICAgbWFzdGVyX2Nvbm5lY3Rvci0+dGlsZV92X2xvYyAhPSBtYXN0ZXJfY29ubmVj dG9yLT5udW1fdl90aWxlIC0gMSkKPiA+ID4gKwkJCQljb250aW51ZTsKPiA+ID4gKwkJCWlmICht YXN0ZXJfY29ubmVjdG9yLT50aWxlX2dyb3VwLT5pZCAhPSB0aWxlX2dyb3VwX2lkKQo+ID4gPiAr CQkJCWNvbnRpbnVlOwo+ID4gPiArCj4gPiA+ICsJCQltYXN0ZXJfY29ubl9zdGF0ZSA9IGRybV9h dG9taWNfZ2V0X2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwKPiA+ID4gKwkJCQkJCQkJCSAgIG1hc3Rl cl9jb25uZWN0b3IpOwo+ID4gPiArCQkJaWYgKElTX0VSUihtYXN0ZXJfY29ubl9zdGF0ZSkpIHsK PiA+ID4gKwkJCQlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9lbmQoJmNvbm5faXRlcik7Cj4gPiA+ ICsJCQkJcmV0dXJuIFBUUl9FUlIobWFzdGVyX2Nvbm5fc3RhdGUpOwo+ID4gPiArCQkJfQo+ID4g PiArCQkJaWYgKG1hc3Rlcl9jb25uX3N0YXRlLT5jcnRjKSB7Cj4gPiA+ICsJCQkJbWFzdGVyX2Ny dGMgPSBtYXN0ZXJfY29ubl9zdGF0ZS0+Y3J0YzsKPiA+ID4gKwkJCQlicmVhazsKPiA+ID4gKwkJ CX0KPiA+ID4gKwkJfQo+ID4gPiArCQlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9lbmQoJmNvbm5f aXRlcik7Cj4gPiA+ICsKPiA+ID4gKwkJaWYgKCFtYXN0ZXJfY3J0Yykgewo+ID4gPiArCQkJRFJN X0RFQlVHX0tNUygiQ291bGQgbm90IGFkZCBNYXN0ZXIgQ1JUQyBmb3IgU2xhdmUgQ1JUQyAlZFxu IiwKPiA+ID4gKwkJCQkgICAgICBjb25uZWN0b3Jfc3RhdGUtPmNydGMtPmJhc2UuaWQpOwo+ID4g PiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ICsJCX0KPiA+ID4gKwo+ID4gPiArCQltYXN0ZXJf Y3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsCj4gPiA+ICsJCQkJ CQkJICAgICAgbWFzdGVyX2NydGMpOwo+ID4gPiArCQlpZiAoSVNfRVJSKG1hc3Rlcl9jcnRjX3N0 YXRlKSkKPiA+ID4gKwkJCXJldHVybiBQVFJfRVJSKG1hc3Rlcl9jcnRjX3N0YXRlKTsKPiA+ID4g Kwo+ID4gPiArCQljcnRjX3N0YXRlLT5tYXN0ZXJfY3J0YyA9IHRvX2ludGVsX2NydGMobWFzdGVy X2NydGMpOwo+ID4gPiArCQl0b19pbnRlbF9jcnRjX3N0YXRlKG1hc3Rlcl9jcnRjX3N0YXRlKS0+ dHJhbnNfcG9ydF9zeW5jX3NsYXZlcyB8PQo+ID4gPiArCQkJQklUKHRvX2ludGVsX2NydGMoY3J0 YyktPnBpcGUpOwo+ID4gPiArCQlEUk1fREVCVUdfS01TKCJNYXN0ZXIgQ1JUQyA9ICVkIGFkZGVk IGZvciBTbGF2ZSBDUlRDID0gJWRcbiwgc2xhdmUgYml0bWFzdCA9ICVkIiwKPiA+ID4gKwkJCSAg ICAgIG1hc3Rlcl9jcnRjLT5iYXNlLmlkLAo+ID4gPiArCQkJICAgICAgY3J0Y19zdGF0ZS0+YmFz ZS5jcnRjLT5iYXNlLmlkLAo+ID4gPiArCQkJICAgICAgdG9faW50ZWxfY3J0Y19zdGF0ZShtYXN0 ZXJfY3J0Y19zdGF0ZSktPnRyYW5zX3BvcnRfc3luY19zbGF2ZXMpOwo+ID4gPiArCX0KPiA+ID4g Kwo+ID4gPiArCXJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICBzdGF0aWMgaW50IGlu dGVsX2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ID4gIAkJCQkg ICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gPiA+ICB7Cj4gPiA+IEBAIC0x MTc5NSw2ICsxMTg3NSw5IEBAIGNsZWFyX2ludGVsX2NydGNfc3RhdGUoc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gPiA+ICAJaWYgKElTX0c0WChkZXZfcHJpdikgfHwKPiA+ ID4gIAkgICAgSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJp dikpCj4gPiA+ICAJCXNhdmVkX3N0YXRlLT53bSA9IGNydGNfc3RhdGUtPndtOwo+ID4gPiArCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQo+ID4gPiArCQlzYXZlZF9zdGF0ZS0+dHJhbnNf cG9ydF9zeW5jX3NsYXZlcyA9Cj4gPiA+ICsJCQljcnRjX3N0YXRlLT50cmFuc19wb3J0X3N5bmNf c2xhdmVzOwo+ID4gPiAgCj4gPiA+ICAJLyogS2VlcCBiYXNlIGRybV9jcnRjX3N0YXRlIGludGFj dCwgb25seSBjbGVhciBvdXIgZXh0ZW5kZWQgc3RydWN0ICovCj4gPiA+ICAJQlVJTERfQlVHX09O KG9mZnNldG9mKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlLCBiYXNlKSk7Cj4gPiA+IEBAIC0xMTg4 OCw2ICsxMTk3MSwxMiBAQCBpbnRlbF9tb2Rlc2V0X3BpcGVfY29uZmlnKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiA+ID4gIAlkcm1fbW9kZV9zZXRfY3J0Y2luZm8oJnBpcGVfY29uZmlnLT5iYXNl LmFkanVzdGVkX21vZGUsCj4gPiA+ICAJCQkgICAgICBDUlRDX1NURVJFT19ET1VCTEUpOwo+ID4g PiAgCj4gPiA+ICsJcmV0ID0gaWNsX2FkZF9nZW5sb2NrX2NydGNzKGNydGMsIHBpcGVfY29uZmln LCBzdGF0ZSk7Cj4gPiA+ICsJaWYgKHJldCkgewo+ID4gPiArCQlEUk1fREVCVUdfS01TKCJcbjhL IERlYnVnOiBDYW5ub3QgYXNzaWduIGdlbmxvY2sgY3J0Y3MiKTsKPiA+ID4gKwkJcmV0dXJuIHJl dDsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gIAkvKiBQYXNzIG91ciBtb2RlIHRvIHRoZSBjb25u ZWN0b3JzIGFuZCB0aGUgQ1JUQyB0byBnaXZlIHRoZW0gYSBjaGFuY2UgdG8KPiA+ID4gIAkgKiBh ZGp1c3QgaXQgYWNjb3JkaW5nIHRvIGxpbWl0YXRpb25zIG9yIGNvbm5lY3RvciBwcm9wZXJ0aWVz LCBhbmQgYWxzbwo+ID4gPiAgCSAqIGEgY2hhbmNlIHRvIHJlamVjdCB0aGUgbW9kZSBlbnRpcmVs eS4KPiA+IAo+ID4gSSB0aGdpbmsgd2Ugc2hvdWxkIGV4dGVuZCBvbiB0aGlzIHRvIG1ha2UgbWFz dGVyL3NsYXZlIG1vZGUgd29yayBieSBkb2luZyB3aGF0IG1hdHQgcm9wZXIgd2FzIHdvcmtpbmcg b24sIGluIGNvbGxhYm9yYXRpb24gd2l0aCBWaWxsZT8KPiA+IAo+ID4gY3J0Yy0+c3RhdGUgcG9p bnRzIHRvIGRybV9jcnRjX3N0YXRlLCB3aGljaCBpcyB0aGUgdWFwaSBzdGF0ZSwgYnV0IGFsc28g Y29udGFpbnMgYSBzaGFkb3cgc3RydWN0IGludGVsX2NydGNfc3RhdGUsIHdoaWNoIGlzIHRoZSBh Y3R1YWwgaHcgc3RhdGUuIEl0IGhhcyBpdHMgb3duIGRybV9jcnRjX3N0YXRlIG9iamVjdCBmb3Ig dGhlIHJlYWwgc3RhdGUsIHdoaWNoIGdldHMgY29waWVkIGFmdGVyIGNoZWNrLgo+ID4gCj4gPiBU aGlzIHNob3VsZCB0aGVuIGFsc28gYmUgZG9uZSBmb3IgaW50ZWxfcGxhbmVfc3RhdGUsIHdoaWNo IHdpbGwgYWxsb3cgdXMgdG8gY29ycmVjdGx5IGhhbmRsZSB0aGlzIG1vZGUuCj4gCj4gSSBkb24n dCB0aGluayB0aGVyZSdzIGFueSBsaW5rYWdlIGJldHdlZW4gdGhpcyBhbmQgdGhlIDItcGlwZS0x LXBvcnQKPiBjYXNlcyBvdGhlciB0aGFuIHdlIG1pZ2h0IHdhbnQgdG8gaGFuZGxlIHRpbGVkIGRp c3BsYXlzIHRoYXQgd2F5IG9uZQo+IGRheSB0byBtYWtlIGxpZmUgZWFzaWVyIGZvciB1c2Vyc3Bh Y2UuIEJ1dCB0aGF0IGhhcyBvdGhlciBpc3N1ZXMgc3VjaAo+IGFzIHdlJ2QgaGF2ZSB0byBnZW5l cmF0ZSBhIG5ldyBFRElEIGZvciB0aGUgd2hvbGUgZGlzcGxheSBmcm9tIHRoZSBFRElEcwo+IG9m IHRoZSB0aWxlcy4KPiAKPiBBbHNvIHdlIG1heWJlIHdhbnQgcG9ydCBzeW5jIGZvciAxMDAlIGlu ZGVwZW5kZW50IGRpc3BsYXlzIHRvby4gU28gSU1PCj4gbm8gcG9pbnQgaW4gdHJ5aW5nIHRvIHNo b2Vob3JuIGJvdGggdGhpbmdzIGludG8gdGhlIHNhbWUgYnVja2V0LgoKSSBhZ3JlZSwgYWxzbyB0 aGUgdGlsZWQgZGlzcGxheSBjYXNlIGlzIHNpbXBsZSBpbiB0ZXJtcyBvZiB0aGUgc3RhdGVzIHNp bmNlIGl0cyAyIGNvbm5lY3RvcnMgYW5kIDIgY3J0Y3MgZXhwb3NlZCB0byB0aGUgdXNlcnNwYWNl CnNvIHRoZSB1c2Vyc3BhY2Ugd2lsbCBjcmVhdGUgdHdvIHN0YXRlcyBhbmQgdGhleSBhcmUgdXNl ZCBhcyBpcyBmb3IgdGhlIHR3byBjcnRjcywgdGhlIG9ubHkgZGlmZmVyZW5jZSBpcyB0aGF0IHdl IG5lZWQgdG8gcHJvZ3JhbQpvbmUgYXMgYSBzbGF2ZSBhbmQgdGhlIG90aGVyIGFzIG1hc3RlciBh bmQgZmluZCBhIHdheSB0byBzdG9yZSBhIHBvaW50ZXIgdG8gbWFzdGVyIGZyb20gdGhlIHNsYXZl IHNpbmNlIHdlIG5lZWQgdG8gdXNlIHRoYXQKdG8gY29uZmlndXJlIGFuZCBlbmFibGUgdHJhbnNj b2RlciBwb3J0IHN5bmMgd2hpbGUgZW5hYmxpbmcgc2xhdmUgQ1JUQy4KClNvIG9uIHRob3NlIGxp bmVzLCBpZiBpIHN0b3JlIHRoZSBtYXN0ZXIgdHJhbnNjb2RlciBkaXJlY3RseSBpbiB0aGUgc2xh dmUgY3J0YyBzdGF0ZSB0aGVuIHRyYW5zID0gMCBpcyB2YWxpZCBmb3IgdHJhbnMgQSB0aGVuIGhv dwpkbyBJIGlkZW50aWZ5IHdoaWNoIGNydGMgaXMgc2xhdmU/CkN1cnJlbnRseSBJIGNoZWNrIGZv ciAhbWFzdGVyX2NydGMgYW5kIHRoYXQgdGVsbHMgbWUgdGhhdCBpdCBpcyBub3Qgc2xhdmUuCgpN YW5hc2kKCj4gCj4gLS0gCj4gVmlsbGUgU3lyasOkbMOkCj4gSW50ZWwKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4