From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 07/13] drm/i915/cnl: DVFS for PLL enabling Date: Tue, 17 Oct 2017 21:02:05 +0300 Message-ID: <20171017180205.GC10981@intel.com> References: <20171003070614.18396-1-rodrigo.vivi@intel.com> <20171003070614.18396-8-rodrigo.vivi@intel.com> <20171017154421.GX10981@intel.com> <20171017164705.jyltjdk52oyoquo6@intel.com> <20171017172320.GB10981@intel.com> <20171017174522.y3xomf52bb6wgfpz@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 116C46E02F for ; Tue, 17 Oct 2017 18:02:09 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20171017174522.y3xomf52bb6wgfpz@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi Cc: intel-gfx@lists.freedesktop.org, "Runyan, Arthur J" , Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBPY3QgMTcsIDIwMTcgYXQgMTA6NDU6MjJBTSAtMDcwMCwgUm9kcmlnbyBWaXZpIHdy b3RlOgo+IE9uIFR1ZSwgT2N0IDE3LCAyMDE3IGF0IDA1OjIzOjIwUE0gKzAwMDAsIFZpbGxlIFN5 cmrDpGzDpCB3cm90ZToKPiA+IE9uIFR1ZSwgT2N0IDE3LCAyMDE3IGF0IDA5OjQ3OjA1QU0gLTA3 MDAsIFJvZHJpZ28gVml2aSB3cm90ZToKPiA+ID4gT24gVHVlLCBPY3QgMTcsIDIwMTcgYXQgMDM6 NDQ6MjFQTSArMDAwMCwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4gPiA+IE9uIFR1ZSwgT2N0 IDAzLCAyMDE3IGF0IDEyOjA2OjA4QU0gLTA3MDAsIFJvZHJpZ28gVml2aSB3cm90ZToKPiA+ID4g PiA+IEZyb206ICJLYWhvbGEsIE1pa2EiIDxtaWthLmthaG9sYUBpbnRlbC5jb20+Cj4gPiA+ID4g PiAKPiA+ID4gPiA+IERpc3BsYXkgVm9sdGFnZSBhbmQgRnJlcXVlbmN5IFN3aXRjaGluZyAoRFZG UykgaXMgdXNlZCB0byBhZGp1c3QgdGhlCj4gPiA+ID4gPiBkaXNwbGF5IHZvbHRhZ2UgdG8gbWF0 Y2ggdGhlIGRpc3BsYXkgY2xvY2sgZnJlcXVlbmNpZXMuIElmIHZvbHRhZ2UgaXMKPiA+ID4gPiA+ IHNldCB0b28gbG93LCBpdCB3aWxsIGJyZWFrIGZ1bmN0aW9uYWxpdHkuIElmIHZvbHRhZ2UgaXMg c2V0IHRvbyBoaWdoLAo+ID4gPiA+ID4gaXQgd2lsbCB3YXN0ZSBwb3dlci4gVm9sdGFnZSBsZXZl bCBpcyBzZWxlY3RlZCBiYXNlZCBvbiBDRCBjbG9jayBhbmQKPiA+ID4gPiA+IERESSBjbG9jay4K PiA+ID4gPiA+IAo+ID4gPiA+ID4gVGhlIHNlcXVlbmNlIGJlZm9yZSBmcmVxdWVuY3kgY2hhbmdl IGlzIHRoZSBmb2xsb3dpbmcgYW5kIGl0IHJlcXVlc3RzCj4gPiA+ID4gPiB0aGUgcG93ZXIgY29u dHJvbGxlciB0byByYWlzZSB2b2x0YWdlIHRvIG1heGltdW0KPiA+ID4gPiA+IAo+ID4gPiA+ID4g LSBFbnN1cmUgYW55IHByZXZpb3VzIEdUIERyaXZlciBNYWlsYm94IHRyYW5zYWN0aW9uIGlzIGNv bXBsZXRlLgo+ID4gPiA+ID4gLSBXcml0ZSBHVCBEcml2ZXIgTWFpbGJveCBEYXRhIExvdyA9IDB4 My4KPiA+ID4gPiA+IC0gV3JpdGUgR1QgRHJpdmVyIE1haWxib3ggRGF0YSBIaWdoID0gMHgwLgo+ ID4gPiA+ID4gLSBXcml0ZSBHVCBEcml2ZXIgTWFpbGJveCBJbnRlcmZhY2UgPSAweDgwMDAwMDA3 Lgo+ID4gPiA+ID4gLSBQb2xsIEdUIERyaXZlciBNYWlsYm94IEludGVyZmFjZSBmb3IgUnVuL0J1 c3kgaW5kaWNhdGlvbiBjbGVhcmVkIChiaXQgMzEgPSAwKS4KPiA+ID4gPiA+IC0gUmVhZCBHVCBE cml2ZXIgTWFpbGJveCBEYXRhIExvdywgaWYgYml0IDAgaXMgMHgxLCBjb250aW51ZSwgZWxzZSBy ZXN0YXJ0IHRoZSBzZXF1ZW5jZS4KPiA+ID4gPiA+ICAgVGltZW91dCBhZnRlciAzbXMKPiA+ID4g PiA+IAo+ID4gPiA+ID4gVGhlIHNlcXVlbmNlIGFmdGVyIGZyZXF1ZW5jeSBjaGFuZ2UgaXMgdGhl IGZvbGxvd2luZyBhbmQgaXQgcmVxdWVzdHMKPiA+ID4gPiA+IHRoZSBwb3J0IGNvbnRyb2xsZXIg dG8gcmFpc2Ugdm9sdGFnZSB0byB0aGUgcmVxdWVzdGVkIGxldmVsLgo+ID4gPiA+ID4gCj4gPiA+ ID4gPiAtIFdyaXRlIEdUIERyaXZlciBNYWlsYm94IERhdGEgTG93Cj4gPiA+ID4gPiAgKiBGb3Ig bGV2ZWwgMCwgd3JpdGUgMHgwCj4gPiA+ID4gPiAgKiBGb3IgbGV2ZWwgMSwgd3JpdGUgMHgxCj4g PiA+ID4gPiAgKiBGb3IgbGV2ZWwgMiwgd3JpdGUgMHgyCj4gPiA+ID4gPiAgKiBGb3IgbGV2ZWwg Mywgd3JpdGUgMHgzCj4gPiA+ID4gPiAgICAtIFdyaXRlIEdUIERyaXZlciBNYWlsYm94IERhdGEg SGlnaCA9IDB4MC4KPiA+ID4gPiA+ICAgIC0gV3JpdGUgR1QgRHJpdmVyIE1haWxib3ggSW50ZXJm YWNlID0gMHg4MDAwMDAwNy4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gRm9yIENhbm5vbmxha2UsIHRo ZSBsZXZlbCAzIGlzIG5vdCB1c2VkIGFuZCBpdCBhbGlhc2VzIHRvIGxldmVsIDIuCj4gPiA+ID4g PiAKPiA+ID4gPiA+IHYyOiByZXVzZSBQYXVsbydzIHdvcmsgb24gY2RjbGsuIFRoaXMgcGF0Y2gg ZGVwZW5kcyBvbiBQYXVsbydzIHBhdGNoCj4gPiA+ID4gPiAgICAgW1BBVENIIDAyLzEyXSBkcm0v aTkxNS9jbmw6IGV4dHJhY3QgY25sX2R2ZnNfe3ByZSxwb3N0fV9jaGFuZ2UKPiA+ID4gPiA+IHYz OiAoQnkgUm9kcmlnbyk6IFJlbW92ZSBkdXBsaWNhdGVkIGNvbW1lbmQgYW5kIGZpeCB0eXBvIG9u IFBhdWxvJ3MgbmFtZS4KPiA+ID4gPiA+IHY0OiAoQnkgUm9kcmlnbyk6IFJlYmFzZSBvbiB0b3Ag IlVuaWZ5IGFuZCBleHBvcnQgZ2VuOSsgcG9ydF9jbG9jayBjYWxjdWxhdGlvbiIKPiA+ID4gPiA+ ICAgICBUaGUgcG9ydCBjbG9jayBjYWxjdWxhdGlvbiBoZXJlIHdhcyBvbmx5IGFkZHJlc3Npbmcg RFAsIHNvIGxldCdzIHJldXNlCj4gPiA+ID4gPiAgICAgdGhlIGN1cnJlbnQgcG9ydCBjYWxjdWxh dGlvbiB0aGF0IGlzIGFscmVhZHkgaW4gcGxhY2Ugd2l0aG91dCBhbnkgZHVwbGljYXRpb24uCj4g PiA+ID4gPiAgICAgQWxvcyBmaXggcG9ydGNsayA8PSA1OTQwMDAgaW5zdGVhZCBvZiBwb3J0Y2xr IDwgNTk0MDAwLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBDYzogUGF1bG8gWmFub25pIDxwYXVsby5y Lnphbm9uaUBpbnRlbC5jb20+Cj4gPiA+ID4gPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5z eXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEthaG9sYSwg TWlrYSA8bWlrYS5rYWhvbGFAaW50ZWwuY29tPgo+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogUm9k cmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgo+ID4gPiA+ID4gLS0tCj4gPiA+ID4g PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYyB8IDMwICsrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLQo+ID4gPiA+ID4gIDEgZmlsZSBjaGFuZ2VkLCAyMiBpbnNlcnRp b25zKCspLCA4IGRlbGV0aW9ucygtKQo+ID4gPiA+ID4gCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwbGxfbWdyLmMKPiA+ID4gPiA+IGluZGV4IGEyYTNkOTNkNjdiZC4uNjAzMGZi YWZhNTgwIDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHBsbF9tZ3IuYwo+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBs bF9tZ3IuYwo+ID4gPiA+ID4gQEAgLTE5NjYsMTAgKzE5NjYsMjMgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBpbnRlbF9kcGxsX21nciBieHRfcGxsX21nciA9IHsKPiA+ID4gPiA+ICAJLmR1bXBfaHdf c3RhdGUgPSBieHRfZHVtcF9od19zdGF0ZSwKPiA+ID4gPiA+ICB9Owo+ID4gPiA+ID4gIAo+ID4g PiA+ID4gK3N0YXRpYyBpbnQgY25sX2dldF9kdmZzX2xldmVsKGludCBjZGNsaywgaW50IHBvcnRj bGspCj4gPiA+ID4gPiArewo+ID4gPiA+ID4gKwlpZiAoY2RjbGsgPT0gMTY4MDAwICYmIHBvcnRj bGsgPD0gNTk0MDAwKQo+ID4gPiA+ID4gKwkJcmV0dXJuIDA7Cj4gPiA+ID4gPiArCWVsc2UgaWYg KGNkY2xrID09IDMzNjAwMCAmJiBwb3J0Y2xrIDw9IDU5NDAwMCkKPiA+ID4gPiA+ICsJCXJldHVy biAxOwo+ID4gPiA+ID4gKwllbHNlCj4gPiA+ID4gPiArCQlyZXR1cm4gMjsKPiA+ID4gPiA+ICt9 Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAgc3RhdGljIHZvaWQgY25sX2RkaV9wbGxfZW5hYmxlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gPiA+ICAJCQkgICAgICAgc3Ry dWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwpCj4gPiA+ID4gPiAgewo+ID4gPiA+ID4gIAl1aW50 MzJfdCB2YWw7Cj4gPiA+ID4gPiArCWludCByZXQ7Cj4gPiA+ID4gPiArCWludCBsZXZlbDsKPiA+ ID4gPiA+ICsJaW50IGNkY2xrLCBwb3J0Y2xrOwo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gIAkvKiAx LiBFbmFibGUgRFBMTCBwb3dlciBpbiBEUExMX0VOQUJMRS4gKi8KPiA+ID4gPiA+ICAJdmFsID0g STkxNV9SRUFEKENOTF9EUExMX0VOQUJMRShwbGwtPmlkKSk7Cj4gPiA+ID4gPiBAQCAtMjAwNiwx MSArMjAxOSw5IEBAIHN0YXRpYyB2b2lkIGNubF9kZGlfcGxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ID4gPiAgCS8qCj4gPiA+ID4gPiAgCSAqIDUuIElm IHRoZSBmcmVxdWVuY3kgd2lsbCByZXN1bHQgaW4gYSBjaGFuZ2UgdG8gdGhlIHZvbHRhZ2UKPiA+ ID4gPiA+ICAJICogcmVxdWlyZW1lbnQsIGZvbGxvdyB0aGUgRGlzcGxheSBWb2x0YWdlIEZyZXF1 ZW5jeSBTd2l0Y2hpbmcKPiA+ID4gPiA+IC0JICogU2VxdWVuY2UgQmVmb3JlIEZyZXF1ZW5jeSBD aGFuZ2UKPiA+ID4gPiA+IC0JICoKPiA+ID4gPiA+IC0JICogRklYTUU6IChEVkZTKSBpcyB1c2Vk IHRvIGFkanVzdCB0aGUgZGlzcGxheSB2b2x0YWdlIHRvIG1hdGNoIHRoZQo+ID4gPiA+ID4gLQkg KiBkaXNwbGF5IGNsb2NrIGZyZXF1ZW5jaWVzCj4gPiA+ID4gPiArCSAqIChEVkZTKSBTZXF1ZW5j ZSBCZWZvcmUgRnJlcXVlbmN5IENoYW5nZQo+ID4gPiA+ID4gIAkgKi8KPiA+ID4gPiA+ICsJcmV0 ID0gY25sX2R2ZnNfcHJlX2NoYW5nZShkZXZfcHJpdik7Cj4gPiA+ID4gPiAgCj4gPiA+ID4gPiAg CS8qIDYuIEVuYWJsZSBEUExMIGluIERQTExfRU5BQkxFLiAqLwo+ID4gPiA+ID4gIAl2YWwgPSBJ OTE1X1JFQUQoQ05MX0RQTExfRU5BQkxFKHBsbC0+aWQpKTsKPiA+ID4gPiA+IEBAIC0yMDI4LDEx ICsyMDM5LDE0IEBAIHN0YXRpYyB2b2lkIGNubF9kZGlfcGxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ID4gPiAgCS8qCj4gPiA+ID4gPiAgCSAqIDguIElm IHRoZSBmcmVxdWVuY3kgd2lsbCByZXN1bHQgaW4gYSBjaGFuZ2UgdG8gdGhlIHZvbHRhZ2UKPiA+ ID4gPiA+ICAJICogcmVxdWlyZW1lbnQsIGZvbGxvdyB0aGUgRGlzcGxheSBWb2x0YWdlIEZyZXF1 ZW5jeSBTd2l0Y2hpbmcKPiA+ID4gPiA+IC0JICogU2VxdWVuY2UgQWZ0ZXIgRnJlcXVlbmN5IENo YW5nZQo+ID4gPiA+ID4gLQkgKgo+ID4gPiA+ID4gLQkgKiBGSVhNRTogKERWRlMpIGlzIHVzZWQg dG8gYWRqdXN0IHRoZSBkaXNwbGF5IHZvbHRhZ2UgdG8gbWF0Y2ggdGhlCj4gPiA+ID4gPiAtCSAq IGRpc3BsYXkgY2xvY2sgZnJlcXVlbmNpZXMKPiA+ID4gPiA+ICsJICogKERWRlMpIFNlcXVlbmNl IEFmdGVyIEZyZXF1ZW5jeSBDaGFuZ2UKPiA+ID4gPiA+ICAJICovCj4gPiA+ID4gPiArCWlmIChy ZXQgPT0gMCkgewo+ID4gPiA+ID4gKwkJY2RjbGsgPSBkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGs7 Cj4gPiA+ID4gPiArCQlwb3J0Y2xrID0gaW50ZWxfZGRpX3BvcnRfY2xvY2soZGV2X3ByaXYsIHBs bC0+aWQpOwo+ID4gPiA+ID4gKwkJbGV2ZWwgPSBjbmxfZ2V0X2R2ZnNfbGV2ZWwoY2RjbGssIHBv cnRjbGspOwo+ID4gPiA+ID4gKwkJY25sX2R2ZnNfcG9zdF9jaGFuZ2UoZGV2X3ByaXYsIGxldmVs KTsKPiA+ID4gPiAKPiA+ID4gPiBUaGlzIGlzbid0IGhvdyBJIGltYWdpbmVkIHdlJ2QgaGFuZGxl IHRoaXMuIFdoYXQgSSB3YXMgYWZ0ZXIgaXMKPiA+ID4gPiBwcmUtY29tcHV0aW5nIHRoZSBjb3Jy ZWN0ICJkZnZmcyBsZXZlbCIgKG9yIHdoYXQgSSdkIHByb2JhYmx5IGp1c3QgY2FsbAo+ID4gPiA+ ICJ2b2x0YWdlIiBvciBzb21ldGhpbmcgbGlrZSB0aGF0KSwgYW5kIHRoZW4gd2UnZCBqdXN0IGxl dCB0aGUgbm9ybWFsCj4gPiA+ID4gY2RjbGsgcHJvZ3JhbW1pbmcgc2VxdWVuY2UgZG8gaXRzIHRo aW5nLgo+ID4gPiA+IAo+ID4gPiA+IElzIGl0IGV2ZW4gc2FmZSB0byBkbyB0aGlzIHdpdGggb3Ro ZXIgcGlwZXMvcG9ydHMgZW5hYmxlZD8gSSB3b3VsZAo+ID4gPiA+IGhhdmUgYXNzdW1lZCBubywg YnV0IG1heWJlIEknbSBtaXN0YWtlbj8KPiA+ID4gCj4gPiA+IFdlbGwsIHRoaXMgaXMgaG93IHRo ZSBzcGVjIGlzIHdyaXR0ZW4uIFNvIEkgYXNzdW1lIGl0IGlzIHNhZmUgdG8gY2hhbmdlCj4gPiA+ IHRoYXQgYXQgdGhhdCBwb2ludC4KPiA+ID4gCj4gPiA+IEFsc28gd2UgZW5hYmxlIENEQ0xLIGR1 cmluZyBib290IHdoaWxlIHdlIGhhdmUgbm8gd2F5IHRvIGNvbXB1dGUgdGhlCj4gPiA+IGxpbmsg cmF0ZS4gU28gSSBkb24ndCBzZWUgYSBiZXR0ZXIgd2F5IG9mIGhhZGxpbmcgdGhhdC4KPiA+IAo+ ID4gV2UgZG8gYSBmdWxsIHN0YXRlIHJlYWRvdXQsIHdoaWNoIHNob3VsZCB0ZWxsIHVzIHdoYXQg dm9sdGFnZSB3ZSBuZWVkLgo+ID4gQW5kIGlmIHRoZSBjZGNsayBpc24ndCBldmVuIGVuYWJsZWQs IHRoZW4gb2J2aW91c2x5IHdlIGNhbid0IGhhdmUgYW55Cj4gPiBwaXBlcyBydW5uaW5nIGVpdGhl ciwgc28gd2UgY2FuIHNhZmVseSBlbmFibGUgaXQgd2l0aCBhbnkgZnJlcXVlbmN5Cj4gPiBldmVu IGJlZm9yZSB0aGUgZnVsbCBzdGF0ZSByZWFkb3V0Lgo+ID4gCj4gPiA+IFNvLCBBcnQgaXMgaXQg b2sgaW4gdGhlIHdheSB0aGF0IEknbSBwcm9wb3NpbmcgaGVyZToKPiA+ID4gCj4gPiA+IG9uIGNv cmUgZGlzcGxheSBpbml0Ogo+ID4gPiAKPiA+ID4gLSBkdmZzLXByZTsKPiA+ID4gLSBlbmFibGUg Y2RjbGs7Cj4gPiA+IC0gZHZmcy1wb3N0IGNvbnNpZGVyaW5nIGNkY2xrIG9ubHkgYW5kIGxpbmsg cmF0ZSAwOyAKPiA+ID4gCj4gPiA+IG9uIHBsbCBpbml0Ogo+ID4gPiAKPiA+ID4gLSBjb25zaWRl ciBjZGNsayBhbmQgbGluayByYXRlIGFuZCBpZiBkZXNpcmVkIGxldmVsIGlzIGRpZmZlcmVudCBm cm9tIHdoYXQgaXMgY3VycmVudGx5IHNldDogZHZmcy1wcmUKPiA+ID4gLSBlbmFibGUgcGxsCj4g PiA+IC0gY29uc2lkZXIgY2RjbGsgYW5kIGxpbmsgcmF0ZSBhbmQgaWYgZGVzaXJlZCBsZXZlbCBp cyBkaWZmZXJlbnQgZnJvbSB3aGF0IGlzIGN1cnJlbnRseSBzZXQ6IGR2ZnMtcG9zdCB3aXRoIG5l dyBsZXZlbC4KPiA+ID4gCj4gPiA+IFRoaXMgaXMgaG93IEkgcmVhZCB0aGUgc3BlYywgYnV0IHBs ZWFzZSBsZXQgbWUga25vdyB3aGF0IEknbSBtaXNzaW5nLgo+ID4gCj4gPiBIbW0uIE9LLCBzbyBt YXliZSB3ZSBjYW4gY2hhbmdlIHRoZSB2b2x0YWdlIHdoaWxlIHRoaW5ncyBhcmUgdXAgYW5kCj4g PiBydW5uaW5nLgo+ID4gCj4gPiBUaGF0IHNhaWQsIHRoZSB2b2x0YWdlIGxldmVsIGlzIGEgZ2xv YmFsIHRoaW5nLCBzbyB3aGVuZXZlciB3ZSBjaGFuZ2UgaXQKPiA+IHdlIG11c3QgY29uc2lkZXIg dGhlIHN0YXRlIG9mIGFsbCBwb3J0cywgYW5kIHRoZSBjZGNsay4gVGhpcyBsb29rcyBsaWtlCj4g PiBpdCBvbmx5IGNvbnNpZGVycyB0aGUgY3VycmVudCBwb3J0LiBUaHVzIGlmIHdlIGZpcnN0IGVu YWJsZSBhIHBvcnQgdGhhdAo+ID4gbmVlZHMgaGlnaCB2b2x0YWdlLCBhbmQgbGF0ZXIgYSBwb3J0 IHRoYXQgY2FuIG1ha2UgZHVlIHdpdGggYSBsb3dlcgo+ID4gdm9sdGFnZSB3ZSdsbCBlbmQgdXAg d2l0aCBzb21ldGhpbmcgbm90IHdvcmtpbmcuCj4gCj4gb3VjaCEgdGhpcyBpcyB0cnVlISBTbywg d2hhdCBsaW5rIHJhdGUgc2hvdWxkIHdlIGNvbnNpZGVyIG9uIHRoYXQgZHZmcyBzcGVjPwo+IHNv LCBhbHdheXMgdGhlIGhpZ2hlc3QgYXZhaWJsYWJsZSBhdCB0aGF0IHRpbWU/CgpZZXMuCgo+IAo+ IFNvIHdlIGNhY2hlIHNvbWV3aGVyZSB0aGUgaGlnaGVzdCBvbiBhdG9taWMgY2hlY2s/IGFuZCB0 aGVuIGR1cmluZwo+IHRoZXNlIGR2ZnMgc2VxdWVuY2VzIHdlIGp1c3QgY2hlY2sgZm9yIHRoZSBo aWdoZXN0PwoKSUlSQyBJIHBhc3RlYmlubmVkIGEgc2tldGNoIGZvciB0aGlzIGF0IHNvbWUgcG9p bnQuIEhtbS4gRm91bmQgaXQsIGFuZApwdXNoZWQgaXQgaGVyZToKZ2l0Oi8vZ2l0aHViLmNvbS92 c3lyamFsYS9saW51eC5naXQgZHZmc192b2x0YWdlXzIKCkkgdHJpZWQgdG8gYWxzbyBwaW1wIGl0 IGEgbGl0dGxlIGJpdCB0byBub3QgZm9yY2UgYSBtb2Rlc2V0IG9uIGFsbApwaXBlcyBpZiBqdXN0 IHRoZSB2b2x0YWdlIGNoYW5nZXMuCgpJICp0aGluayogdGhpcyBzaG91bGQgd29yaywgYWZ0ZXIg c29tZW9uZSBmaWxscyBvdXQgdGhlIGNvZGUgZm9yCkRESSAuY29tcHV0ZV9jb25maWcoKSBhbmQg LmdldF9jb25maWcoKS4gQnV0IHRvdGFsbHkgdW50ZXN0ZWQgb2YgY291cnNlCnNvIFlNTVYuCgo+ IAo+ID4gCj4gPiBXZSBtaWd0aCBhbHNvIGVuZCB1cCBjaGFuZ2luZyB0aGUgdm9sdGFnZSBtdWx0 aXBsZSB0aW1lcyBpZiB3ZSBlbmFibGUKPiA+IG11bHRpcGxlIHBvcnRzIHdpdGggb25lIGF0b21p YyBvcGVyYXRpb24uIElmIHRoaW5ncyB3ZW50IHZpYSB0aGUgbm9ybWFsCj4gPiBjZGNsayBwYXRo IHdlJ2QganVzdCBkbyB0aGUgdm9sdGFnZSBjaGFuZ2UgdGhlIG9uY2UuCj4gPiAKPiA+IEFkZGl0 b25hbGx5IEkgZG9uJ3QgbGlrZSB0aGF0IHRoZSBjb2RlIGlzIGdldHRpbmcgdGhlIGN1cnJlbnQg Y2xvY2sgYnkKPiA+IG1lYW5zIG9mIHJlYWRvdXQgaW4gdGhlIG1pZGRsZSB0aGUgbW9kZXNldC4g V2l0aCBhdG9taWMgdGhlIGRlc2lnbiBpcwo+ID4gcHJldHR5IG11Y2ggdG8gcGFzcyBhbGwgc3Rh dGUgaW4gZXhwbGljaXRseSwgYW5kIHJlYWRvdXQgaXMgb25seSB1c2VkCj4gPiB0byB0YWtlIG92 ZXIgdGhlIGZyb20gdGhlIEJJT1MsIGFuZCB0byB2ZXJpZnkgdGhhdCB3ZSBwcm9ncmFtbWVkIHRo ZQo+ID4gaGFyZHdhcmUgY29ycmVjdGx5Lgo+IAo+IGhtbS4uLgo+IEkgdGhvdWdodCB0aGUgc2Ft ZSByZWNlbnRseSB3aGVuIEkgd2FzIGNoZWNraW5nIHRoYXQgc2tsIFdhLi4uCj4gU28sIHdlIHBy b2JhYmx5IHdhbnQgdG8gY2FjaGUgb3V0IGxpbmsgcmF0ZXMgc3BlY2lmaWNhbGx5IG9uIGF0b21p YyBjYWNoZT8KPiBPciBzaG91bGQgd2UganVzdCBtb3ZlIHRoZSBmdW5jdGlvbnMgdG8gcGFyc2Ug Y2ZnY3IxIG9uIGh3X3N0YXRlIHRoYXQgd2FzCj4gY3JlYXRlZCBkdXJpbmcgY2hlY2sgcGhhc2U/ Cj4gCj4gPiAgCj4gPiA+IAo+ID4gPiBNYXliZSBJJ20gbWlzc2luZyB0aGUgbGluayByYXRlIGZv ciBlRFAgZHVyaW5nIGNvcmUgZGlzcGxheSBpbml0IGxpa2Ugd2UgYXJlIGN1cnJlbnRseSBraW5k IG9mIG1pc3NpbmcgZm9yIFNLTD8KPiA+IAo+ID4gSG1tLiBXaGF0IGV4YWN0bHkgYXJlIHdlIG1p c3Npbmc/Cj4gCj4gSSBqdXN0IHNlbnQgYSB3YSBmb3Igc2tsLi4uIHdoZW4gZG9pbmcgdGhhdCBJ IHNhdyB0aGF0IHdlIGFyZSBub3QgZm9sbG93aW5nCj4gdGhlIHNwZWMgZm9yIGluaXRpYWxpemUg dGhlIGRpc3BsYXkgaW4gbWFueSBhc3BlY3RzLi4uCgpOb3Qgc3VyZSB3aGljaCBwYXJ0IHdlJ3Jl IG5vdCBmb2xsb3dpbmcuCgo+IGJ1dCBzcGVjaWFsbHkgdGhlIGRwbGwwCj4gbGluayByYXRlLi4u IFdlIGNvbnNpZGVyIHRoZSB2Y28gZm9yIGVEUCBidXQgbm90IHRoZSBhY2N1cmF0ZSBsaW5rIHJh dGUuLi4KPiBhbmQgdGhlbiB3ZSB1cGRhdGUgdGhlIGRwbGwwIGxpbmsgcmF0ZSBkdXJpbmcgbW9k ZXNldC4gQXBwYXJlbnRseSBIVyBuZXZlcgo+IGV4cGVjdHMgd2UgY2hhbmdlIGRwbGwwIGxpbmsg cmF0ZSBvbiBydW50aW1lIGxpa2Ugd2UgYXJlIGN1cnJlbnRseSBkb2luZy4KCldlIGRvbid0IGNo YW5nZSBpdCwgZXhjZXB0IHBlcmhhcHMgb25jZSBpZiBvdXIgaW5pdGlhbCBndWVzcyB3YXMgd3Jv bmcuCkFuZCB0aGF0IGNvdWxkIG9ubHkgaGFwcGVuIHdoZW4gZURQIHdhc24ndCBlbmFibGVkIGR1 cmluZyBib290LiBBZnRlcgp3ZSd2ZSBkZXRlcm1pbmVkIHRoZSBsaW5rIGZyZXEgbmVlZGVkIGJ5 IGVEUCB3ZSBzaG91bGQgYmUgc3RpY2tpbmcgdG8KdGhlIHNhbWUgRFBMTDAgVkNPIGZyZXF1ZW5j eS4KCj4gCj4gQnV0IHByb2JhYmx5IGEgZGlzY3Vzc2lvbiB0byBtb3ZlIHRvIHRoYXQgb3RoZXIg cGF0Y2guLi4gb3Igbm90IHNpbmNlIGFsbAo+IGludm9sdmUgYSBsaW5rIHJhdGUgYW5kIHBvc3Np Ymx5IGEgY2FjaGUgb2YgdGhlIHZhbHVlLgo+IAo+ID4gCj4gPiAtLSAKPiA+IFZpbGxlIFN5cmrD pGzDpAo+ID4gSW50ZWwgT1RDCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK