From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: Re: [RFC PATCH 00/31] CPUFreq on ARM Date: Wed, 15 Nov 2017 14:28:12 +0000 Message-ID: <5d7f3995-6301-ca2c-99ee-bc928cfa821e@linaro.org> References: <1510247421-24094-1-git-send-email-olekstysh@gmail.com> <085fd901-3161-f891-13bf-d20361bf6645@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eEyfq-00082A-Pd for xen-devel@lists.xenproject.org; Wed, 15 Nov 2017 14:28:19 +0000 Received: by mail-wm0-f42.google.com with SMTP id z3so3377232wme.3 for ; Wed, 15 Nov 2017 06:28:16 -0800 (PST) In-Reply-To: Content-Language: en-GB List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Oleksandr Tyshchenko Cc: "Edgar E . Iglesias" , Stefano Stabellini , Jassi Brar , Andrew Cooper , Julien Grall , Oleksandr Tyshchenko , Jan Beulich , Sudeep Holla , xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org SGksCgpPbiAxNC8xMS8xNyAyMDo0NiwgT2xla3NhbmRyIFR5c2hjaGVua28gd3JvdGU6Cj4gT24g VHVlLCBOb3YgMTQsIDIwMTcgYXQgMTI6NDkgUE0sIEFuZHJlIFByenl3YXJhCj4gPGFuZHJlLnBy enl3YXJhQGxpbmFyby5vcmc+IHdyb3RlOgo+PiBIaSwKPiBIaSBBbmRyZQo+IAo+Pgo+PiBPbiAx My8xMS8xNyAxOTo0MCwgT2xla3NhbmRyIFR5c2hjaGVua28gd3JvdGU6Cj4+PiBPbiBNb24sIE5v diAxMywgMjAxNyBhdCA1OjIxIFBNLCBBbmRyZSBQcnp5d2FyYQo+Pj4gPGFuZHJlLnByenl3YXJh QGxpbmFyby5vcmc+IHdyb3RlOgo+Pj4+IEhpLAo+Pj4gSGkgQW5kcmUsCj4+Pgo+Pj4+Cj4+Pj4g dGhhbmtzIHZlcnkgbXVjaCBmb3IgeW91ciB3b3JrIG9uIHRoaXMhCj4+PiBUaGFuayB5b3UgZm9y IHlvdXIgY29tbWVudHMuCj4+Pgo+Pj4+Cj4+Pj4gT24gMDkvMTEvMTcgMTc6MDksIE9sZWtzYW5k ciBUeXNoY2hlbmtvIHdyb3RlOgo+Pj4+PiBGcm9tOiBPbGVrc2FuZHIgVHlzaGNoZW5rbyA8b2xl a3NhbmRyX3R5c2hjaGVua29AZXBhbS5jb20+Cj4+Pj4+Cj4+Pj4+IEhpLCBhbGwuCj4+Pj4+Cj4+ Pj4+IFRoZSBwdXJwb3NlIG9mIHRoaXMgUkZDIHBhdGNoIHNlcmllcyBpcyB0byBhZGQgQ1BVRnJl cSBzdXBwb3J0IHRvIFhlbiBvbiBBUk0uCj4+Pj4+IE1vdGl2YXRpb24gb2YgaHlwZXJ2aXNvciBi YXNlZCBDUFVGcmVxIGlzIHRvIGVuYWJsZSBvbmUgb2YgdGhlIG1haW4gUE0gdXNlLWNhc2VzIGlu IHZpcnR1YWxpemVkIHN5c3RlbSBwb3dlcmVkIGJ5IFhlbiBoeXBlcnZpc29yLiBSYXRpb25hbGUg YmVoaW5kIHRoaXMgYWN0aXZpdHkgaXMgdGhhdCBDUFUgdmlydHVhbGl6YXRpb24gaXMgZG9uZSBi eSBoeXBlcnZpc29yIGFuZCB0aGUgZ3Vlc3QgT1MgZG9lc24ndCBhY3R1YWxseSBrbm93IGFueXRo aW5nIGFib3V0IHBoeXNpY2FsIENQVXMgYmVjYXVzZSBpdCBpcyBydW5uaW5nIG9uIHZpcnR1YWwg Q1BVcy4gSXQgaXMgcXVpdGUgY2xlYXIgdGhhdCBhIGRlY2lzaW9uIGFib3V0IGZyZXF1ZW5jeSBj aGFuZ2Ugc2hvdWxkIGJlIHRha2VuIGJ5IGh5cGVydmlzb3IgYXMgb25seSBpdCBoYXMgaW5mb3Jt YXRpb24gYWJvdXQgYWN0dWFsIENQVSBsb2FkLgo+Pj4+Cj4+Pj4gQ2FuIHlvdSBwbGVhc2Ugc2tl dGNoIHlvdXIgdXNhZ2Ugc2NlbmFyaW8gb3Igd29ya2xvYWRzIGhlcmU/IEkgY2FuIHRoaW5rCj4+ Pj4gb2YgcXVpdGUgZGlmZmVyZW50IHNjZW5hcmlvcyAob3ZlcnN1YnNjcmliZWQgc2VydmVyIHZz LiBwYXJ0aXRpb25pbmcKPj4+PiBSVE9TIGd1ZXN0cywgZm9yIGluc3RhbmNlKS4gVGhlIHVzZWZ1 bG5lc3Mgb2YgQ1BVRnJlcSBhbmQgdGhlIHRyYWRlLW9mZnMKPj4+PiBpbiB0aGUgZGVzaWduIGFy ZSBxdWl0ZSBkaWZmZXJlbnQgYmV0d2VlbiB0aG9zZS4KPj4+IFdlIGtlZXAgZW1iZWRkZWQgdXNl LWNhc2VzIGluIG1pbmQuIEZvciBleGFtcGxlLCBpdCBpcyBhIHN5c3RlbSB3aXRoCj4+PiBzZXZl cmFsIGRvbWFpbnMsCj4+PiB3aGVyZSBvbmUgZG9tYWluIGhhcyBtb3N0IGNyaXRpY2FsIFNXIHJ1 bm5pbmcgb24gYW5kIG90aGVyIGRvbWFpbihzKQo+Pj4gYXJlLCBsZXQgc2F5LCBmb3IgZW50ZXJ0 YWlubWVudCBwdXJwb3Nlcy4KPj4+IEkgdGhpbmssIHRoZSBDUFVGcmVxIGlzIHVzZWZ1bCB3aGVy ZSBwb3dlciBjb25zdW1wdGlvbiBpcyBhIHF1ZXN0aW9uLgo+Pgo+PiBEb2VzIHRoZSBTb0MgeW91 IHVzZSBhbGxvdyBkaWZmZXJlbnQgZnJlcXVlbmNpZXMgZm9yIGVhY2ggY29yZT8gT3IgaXMgaXQK Pj4gb25lIGZyZXF1ZW5jeSBmb3IgYWxsIGNvcmVzPyBNb3N0IHg4NiBDUFUgYWxsb3cgZGlmZmVy ZW50IGZyZXF1ZW5jaWVzCj4+IGZvciBlYWNoIGNvcmUsIEFGQUlLLiBKdXN0IGhhdmluZyB0aGUg c2FtZSBPUFAgZm9yIHRoZSB3aG9sZSBTb0MgbWlnaHQKPj4gbGltaXQgdGhlIHVzZWZ1bG5lc3Mg b2YgdGhpcyBhcHByb2FjaCBpbiBnZW5lcmFsLgo+IEdvb2QgcXVlc3Rpb24uIEFsbCBjb3JlcyBp biBhIGNsdXN0ZXIgc2hhcmUgdGhlIHNhbWUgY2xvY2suIEl0IGlzCj4gaW1wb3NzaWJsZSB0byBz ZXQgZGlmZmVyZW50IGZyZXF1ZW5jaWVzIG9uIHRoZSBjb3JlcyBpbnNpZGUgb25lCj4gY2x1c3Rl ci4KPiAKPj4KPj4+PiBJbiBnZW5lcmFsIEkgZG91YnQgdGhhdCBhIGh5cGVydmlzb3Igc2NoZWR1 bGluZyB2Q1BVcyBpcyBpbiBhIGdvb2QKPj4+PiBwb3NpdGlvbiB0byBtYWtlIGEgZGVjaXNpb24g b24gdGhlIHByb3BlciBmcmVxdWVuY3kgcGh5c2ljYWwgQ1BVcyBzaG91bGQKPj4+PiBydW4gd2l0 aC4gRnJvbSBhbGwgSSBrbm93IGl0J3MgYWxyZWFkeSBoYXJkIGZvciBhbiBPUyBrZXJuZWwgdG8g bWFrZQo+Pj4+IHRoYXQgY2FsbC4gU28gSSB3b3VsZCBhY3R1YWxseSBleHBlY3QgdGhhdCBndWVz dHMgcHJvdmlkZSBzb21lIGlucHV0LAo+Pj4+IGZvciBpbnN0YW5jZSBieSBzaWduYWxsaW5nIE9Q UCBjaGFuZ2UgcmVxdWVzdCB1cCB0byB0aGUgaHlwZXJ2aXNvci4gVGhpcwo+Pj4+IGNvdWxkIHRo ZW4gZGVjaWRlIHRvIGFjdCBvbiBpdCAtIG9yIG5vdC4KPj4+IEVhY2ggcnVubmluZyBndWVzdCBz ZWVzIG9ubHkgcGFydCBvZiB0aGUgcGljdHVyZSwgYnV0IGh5cGVydmlzb3IgaGFzCj4+PiB0aGUg d2hvbGUgcGljdHVyZSwgaXQga25vd3MgYWxsIGFib3V0IENQVSwgbWVhc3VyZXMgQ1BVIGxvYWQg YW5kIGFibGUKPj4+IHRvIGNob29zZSByZXF1aXJlZCBDUFUgZnJlcXVlbmN5IHRvIHJ1biBvbi4K Pj4KPj4gQnV0IGJhc2VkIG9uIHdoYXQgZGF0YT8gQWxsIFhlbiBzZWVzIGlzIGEgdkNQVSB0cmFw cGluZyBvbiBNTUlPLCBhCj4+IGh5cGVyY2FsbCBvciBvbiBXRkksIGZvciB0aGF0IG1hdHRlci4g SXQgZG9lcyBub3Qga25vdyBtdWNoIG1vcmUgYWJvdXQKPj4gdGhlIGd1ZXN0LCBlc3BlY2lhbGx5 IGl0J3MgcmF0aGVyIGNsdWVsZXNzIGFib3V0IHdoYXQgdGhlIGd1ZXN0IE9TCj4+IGFjdHVhbGx5 IGludGVuZGVkIHRvIGRvLgo+PiBGb3IgaW5zdGFuY2UgTGludXggY2FuIHRyYWNrIHRoZSBhY3R1 YWwgdXRpbGl6YXRpb24gb2YgYSBjb3JlIGJ5IGtlZXBpbmcKPj4gc3RhdGlzdGljcyBvZiBydW5u YWJsZSBwcm9jZXNzZXMgYW5kIG1vbml0b3JpbmcgdGhlaXIgdGltZSBzbGljZSB1c2FnZS4KPj4g SXQgY2FuIHNlZSB0aGF0IGEgY2VydGFpbiBwcm9jZXNzIGV4aGliaXRzIHBlcmlvZGljYWwsIGJ1 dCBidXJzdHkgQ1BVCj4+IHVzYWdlLCB3aGljaCBtYXkgaGludCB0aGF0IGlzIGNvdWxkIHJ1biBh dCBsb3dlciBmcmVxdWVuY3kuIFhlbiBkb2VzIG5vdAo+PiBzZWUgdGhpcyBmaW5lIGdyYW51bGFy IGluZm9ybWF0aW9uLgo+Pgo+Pj4gSSBhbSB3b25kZXJpbmcsIGRvZXMgWGVuCj4+PiBuZWVkIGFk ZGl0aW9uYWwgaW5wdXQgZnJvbSBndWVzdHMgZm9yIG1ha2UgYSBkZWNpc2lvbj8KPj4KPj4gSSB2 ZXJ5IG11Y2ggYmVsaWV2ZSBzby4gVGhlIGd1ZXN0IE9TIGlzIGluIGEgbXVjaCBiZXR0ZXIgcG9z aXRpb24gdG8KPj4gbWFrZSB0aGF0IGNhbGwuCj4+Cj4+PiBCVFcsIGN1cnJlbnRseSBndWVzdCBk b21haW4gb24gQVJNIGRvZXNuJ3QgZXZlbiBrbm93IGhvdyBtYW55IHBoeXNpY2FsCj4+PiBDUFVz IHRoZSBzeXN0ZW0gaGFzIGFuZCB3aGF0IGFyZSB0aGVzZSBPUFBzLiBXaGVuIGNyZWF0aW5nIGd1 ZXN0Cj4+PiBkb21haW4gWGVuIGluc2VydHMgb25seSBkdW1teSBDUFUgbm9kZXMuIEFsbCBDUFUg aW5mbywgc3VjaCBhcyBjbG9ja3MsCj4+PiBPUFBzLCB0aGVybWFsLCBldGMgYXJlIG5vdCBwYXNz ZWQgdG8gZ3Vlc3QuCj4+Cj4+IFN1cmUsIGJlY2F1c2UgdGhpcyBpcyB3aGF0IHZpcnR1YWxpemF0 aW9uIGlzIGFib3V0LiBBbmQgSSBhbSBub3QgYXNraW5nCj4+IGZvciB1bmNvbmRpdGlvbmFsbHkg YWxsb3dpbmcgYW55IGd1ZXN0IHRvIGNoYW5nZSBmcmVxdWVuY3kuCj4+IEJ1dCB0aGVyZSBjb3Vs ZCBiZSBjZXJ0YWluIHVzZSBjYXNlcyB3aGVyZSB0aGlzIGNvdWxkIGJlIGNvbnNpZGVyZWQ6Cj4+ IFRoaW5rIGFib3V0IHlvdXIgImNyaXRpY2FsIFNXIiBtZW50aW9uZWQgYWJvdmUsIHdoaWNoIGlz IHByb2JhYmx5IHNvbWUKPj4gUlRPUywgYWxzbyBwb3NzaWJseSBydW5uaW5nIG9uIHBpbm5lZCB2 Q1BVcy4gRm9yIHRoYXQKPj4gKGxhdGVuY3ktc2Vuc2l0aXZlKSBndWVzdCBpdCBtaWdodCBiZSB3 ZWxsIHN1aXRlZCB0byBydW4gYXQgYSBsb3dlcgo+PiBmcmVxdWVuY3kgZm9yIHNvbWUgdGltZSwg YnV0IGhvdyBzaG91bGQgWGVuIGtub3cgYWJvdXQgdGhpcz8KPj4gIk5vcm1hbGx5IiB0aGUgYmVz dCBzdHJhdGVneSB0byBzYXZlIHBvd2VyIGlzIHRvIHJ1biBhcyBmYXN0IGFzCj4+IHBvc3NpYmxl LCBmaW5pc2ggYWxsIG91dHN0YW5kaW5nIHdvcmssIHRoZW4gcHV0IHRoZSBjb3JlIHRvIHNsZWVw Lgo+PiBCZWNhdXNlIG5vdCBydW5uaW5nIGF0IGFsbCBjb25zdW1lcyBtdWNoIGxlc3MgZW5lcmd5 IHRoYW4gcnVubmluZyBhdCBhCj4+IHJlZHVjZWQgZnJlcXVlbmN5LiBCdXQgdGhpcyBtYXkgbm90 IGJlIHN1aXRhYmxlIGZvciBhbiBSVE9TLgo+IFNheWluZyAib25lIGRvbWFpbiBoYXMgbW9zdCBj cml0aWNhbCBTVyBydW5uaW5nIG9uIiBJIG1lYW50IGhhcmR3YXJlCj4gZG9tYWluL2RyaXZlciBk b21haW4gb3IgZXZlbiBvdGhlcgo+IGRvbWFpbiB3aGljaCBwZXJmb3JtIHNvbWUgaW1wb3J0YW50 IHRhc2tzIChkaXNrLCBuZXQsIGRpc3BsYXksIGNhbWVyYSwKPiB3aGF0ZXZlcikgd2hpY2ggdHJl YXRlZCBieSB0aGUgd2hvbGUgc3lzdGVtIGFzIGNyaXRpY2FsCj4gYW5kIG11c3QgbmV2ZXIgZmFp bC4gT3RoZXIgZG9tYWlucywgZm9yIGV4YW1wbGUsIGl0IG1pZ2h0IGJlIEFuZHJvaWQKPiBhcyB3 ZWxsLCBhcmUgbm90IGNyaXRpY2FsIGF0IGFsbCBmcm9tIHRoZSBzeXN0ZW0gcG9pbnQgb2Ygdmll dy4KPiBCZWluZyBob25lc3QsIEkgaGF2ZW4ndCBjb25zaWRlcmVkIHlldCB1c2luZyBDUFVGcmVx IGluIHN5c3RlbSB3aGVyZQo+IHNvbWUgUlQgZ3Vlc3QgaXMgcHJlc2VudC4KPiBJIHRoaW5rIGl0 IGlzIHNvbWV0aGluZyB0aGF0IHNob3VsZCBiZSAqdGhvcm91Z2hseSogaW52ZXN0aWdhdGVkIGFu ZAo+IHRoZW4gd29ya2VkIG91dC4KClllcywgYXMgbWVudGlvbmVkIGJlZm9yZSB0aGVyZSBhcmUg cXVpdGUgZGlmZmVyZW50IHVzZSBjYXNlcyB3aXRoIHF1aXRlCmRpZmZlcmVudCByZXF1aXJlbWVu dHMgd2hlbiBpdCBjb21lcyB0byBEVkZTLgpJIGJlbGlldmUgdGhlIGJlc3Qgd291bGQgYmUgdG8g ZGVmaW5lIHR5cGljYWwgc2NlbmFyaW9zLCB0aGVuIGFzc2VzcyB0aGUKdXNlZnVsbmVzcyBvZiBD UFVGcmVxIHNlcGFyYXRlbHkgZm9yIGVhY2ggb25lIG9mIHRoZW0uCkJhc2VkIG9uIHRoaXMgd2Ug dGhlbiBzaG91bGQgYmUgYWJsZSB0byBtYWtlIGEgZGVjaXNpb24uCgo+IEkgYW0gbm90IGZhbWls aWFyIHdpdGggUlQgc3lzdGVtIHJlcXVpcmVtZW50cywgSSBzdXBwb3NlLCBidXQgbm90Cj4gZW50 aXJlbHkgc3VyZSwgdGhhdCBDUFVGcmVxIHNob3VsZCB1c2UgY29uc3QKPiBmcmVxdWVuY3kgZm9y IGFsbCBjb3JlcyB0aGUgUlQgc3lzdGVtIGlzIHJ1bm5pbmcgb24sIG9yIFJUIHN5c3RlbQo+IHBh cmFtZXRlcnMgc2hvdWxkIGJlIHJlY2FsY3VsYXRlZCBlYWNoIHRpbWUgdGhlIENQVSBmcmVxdWVu Y3kgaXMgYmVpbmcKPiBjaGFuZ2VkCj4gKGluIHN1Y2ggY2FzZSBndWVzdCBuZWVkcyBzb21lIGlu cHV0IGZyb20gWGVuKS4KPiAKPiBBbnl3YXksIEkgZ290IHlvdXIgcG9pbnQgYWJvdXQgc29tZSBn dWVzdCBpbnB1dC4gQ291bGQgeW91LCBwbGVhc2UsCj4gZGVzY3JpYmUgaG93IHlvdSB0aGluayBp dCBzaG91bGQgbG9vayBsaWtlOgo+IDEuIFhlbiBkb2Vzbid0IGhhdmUgQ1BVRnJlcSBsb2dpYyBh dCBhbGwuIEl0IG9ubHkgY29sbGVjdHMgT1BQIGNoYW5nZQo+IHJlcXVlc3RzIGZyb20gYWxsIGd1 ZXN0cyBhbmQgbWFrZQo+IGEgZGVjaXNpb24gYmFzZWQgb24gdGhlc2UgcmVxdWVzdHMgYW5kIG1h eWJlIHNvbWUgcG9saWN5IGZvcgo+IHByaW9yaXRpemluZyByZXF1ZXN0cy4gVGhlbiBpdCBzZW5k cyBPUFAgY2hhbmdlIHJlcXVlc3QgdG8gU0NQLgo+IDIuIFhlbiBoYXMgQ1BVRnJlcSBsb2dpYy4g SW4gYWRkaXRpb24gaXQgY2FuIGNvbGxlY3QgT1BQIGNoYW5nZQo+IHJlcXVlc3RzIGZyb20gYWxs IGd1ZXN0cyBhbmQgbWFrZQo+IGEgZGVjaXNpb24gYmFzZWQgb24gYm90aDogaXQncyBvd24gdmll dyBhbmQgZ3Vlc3QgcmVxdWVzdHMuIFRoZW4gaXQKPiBzZW5kcyBPUFAgY2hhbmdlIHJlcXVlc3Qg dG8gU0NQLgoKSSBhbSBsZWFuaW5nIHRvd2FyZHMgMSkgY29uY2VwdHVhbGx5LiBCdXQgaWYgdGhl cmUgaXMgc29tZSBraW5kIG9mCnJlYXNvbmFibGUgaW1wbGVtZW50YXRpb24gb2YgMikgYWxyZWFk eSBpbiBYZW4gKGZvciB4ODYpLCB0aGlzIG1pZ2h0IGJlCmZlYXNpYmxlIGFzIHdlbGwuCgo+IEJv dGggdmFyaWFudCBpbXBsaWVzIHRoYXQgc29tZXRoaW5nIGxpa2UgUFYgQ1BVRnJlcSBzaG91bGQg YmUgaW52b2x2ZWQKPiB3aXRoIGZyb250ZW5kIGRyaXZlcnMgYXJlIGxvY2F0ZWQgaW4gZ3Vlc3Rz LiBBbSBJIGNvcnJlY3Q/CgpBbmQgaGVyZSB0aGUgU01DIG1haWxib3ggY29tZXMgaW50byBwbGF5 IGFnYWluLCBidXQgd2l0aCBhIHR3aXN0LiBGb3IKZ3Vlc3RzIHdlIGNyZWF0ZSBTQ1BJLCBtYWls Ym94IGFuZCBzaG1lbSBEVCBub2RlcywgYW5kIHVzZSB0aGUgU01DCm1haWxib3ggd2l0aDogbWV0 aG9kID0gImh2YyI7LiBYZW4ncyBIVkMgaGFuZGxlcyB0aGVuIHJlZGlyZWN0cyB0aGlzIHRvCnRo ZSBDUFVGcmVxIGNvZGUuClRoaXMgd291bGQgYmUgcGxhdGZvcm0gYWdub3N0aWMgZm9yIHRoZSBn dWVzdHMsIHdoaWxlIG1ha2luZyBhbGwgQ1BVRnJlcQpyZXF1ZXN0cyBlbmRpbmcgdXAgaW4gWGVu LiBTbyB0aGVyZSBpcyBubyBuZWVkIGZvciBhbiBleHRyYSBQViBwcm90b2NvbC4KCj4+IFNvIEkg dGhpbmsgd2Ugd291bGQgbmVlZCBhIGNvbWJpbmVkIGFwcHJvYWNoOgo+PiBhKSBMZXQgYW4gYWRt aW5pc3RyYXRvciAodmlhIHRvb2xzIHJ1bm5pbmcgaW4gRG9tMCkgdGVsbCBYZW4gYWJvdXQgcG93 ZXIKPj4gbWFuYWdlbWVudCBzdHJhdGVnaWVzIHRvIHVzZSBmb3IgY2VydGFpbiBndWVzdHMuIEFu IFJUT1MgY291bGQgYmUKPj4gdHJlYXRlZCBkaWZmZXJlbnRseSAobG93ZXIsIGJ1dCBjb25zdGFu dCBmcmVxdWVuY3kpIHRoYW4gYW4KPj4gImVudGVydGFpbm1lbnQiIGd1ZXN0ICh2YXJ5aW5nIGZy ZXF1ZW5jeSwgYmFzZWQgb24gZ3Vlc3QgT1MgaW5wdXQpLCBhbHNvCj4+IGRpZmZlcmVudGx5IHRo YW4gc29tZSBiYWNrZ3JvdW5kIGd1ZXN0IGRvaW5nIGxvZ2dpbmcsIE9UQSB1cGRhdGUsIGV0Yy4K Pj4gKGNvbnN0YW50IGhpZ2ggZnJlcXVlbmN5LCBidXQgcHV0dGluZyBjb3JlcyB0byBzbGVlcCBp bnN0ZWFkIGFzIG9mdGVuIGFzCj4+IHBvc3NpYmxlKS4KPj4gYikgQWxsb3cgc29tZSBndWVzdHMg KGJhc2VkIG9uIHBvbGljeSBmcm9tIChhKSkgdG8gc2lnbmFsIENQVUZyZXEgY2hhbmdlCj4+IHJl cXVlc3RzIHRvIHRoZSBoeXBlcnZpc29yLiBYZW4gdGFrZXMgdGhvc2UgaW50byBhY2NvdW50LCB0 aG91Z2ggaXQgbWF5Cj4+IGRlY2lkZSB0byBub3QgYWN0IGltbWVkaWF0ZWx5IG9uIGl0LCBiZWNh dXNlIGl0IGlzIGdvaW5nIHRvIHNjaGVkdWxlCj4+IGFub3RoZXIgdkNQVSwgZm9yIGluc3RhbmNl Lgo+PiBjKSBIYXZlIHNvbWUgd2F5IG9mIGFjdHVhbGx5IHJlYWxpc2luZyBjZXJ0YWluIE9QUHMu IFRoaXMgY291bGQgYmUgdmlhCj4+IGFuIFNDUEkgY2xpZW50IGluIFhlbiwgb3Igc29tZSBvdGhl ciB3YXkuIE1pZ2h0IGJlIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4KPiAKPiBKdXN0IHRvIGNs YXJpZnkgaWYgSSBnb3QgdGhlIG1haW4gaWRlYSBjb3JyZWN0Ogo+IDEuIEd1ZXN0cyBoYXZlIENQ VUZyZXEgbG9naWMsIHRoZXkgc2VuZCBPUFAgY2hhbmdlIHJlcXVlc3RzIHRvIFhlbi4KPiAyLiBY ZW4gaGFzIENQVUZyZXEgbG9naWMgdG9vLCBidXQgaW4gYWRkaXRpb25hbCBpdCBjYW4gdGFrZSBp bnRvIHRoZSBhY2NvdW50IE9QUAo+ICAgICBjaGFuZ2UgcmVxdWVzdHMgZnJvbSBndWVzdHMuIFhl biBzZW5kcyBmaW5hbCBPUFAgY2hhbmdlIHJlcXVlc3QuCj4gSXMgbXkgdW5kZXJzdGFuZGluZyBj b3JyZWN0PwoKWWVzLCBJIHRoaW5rIHRoaXMgc291bmRzIGxpa2UgdGhlIG1vc3QgZmxleGlibGUu IFhlbidzIENQVUZyZXEgbG9naWMKY291bGQgYmUgcXVpdGUgc2ltcGxlLCBwb3NzaWJseSBzdGFy dGluZyB3aXRoIHNvbWUgc3RhdGljIGFzc2lnbm1lbnQKYmFzZWQgb24gYWRtaW5pc3RyYXRvciBp bnB1dCwgZS5nLiBnaXZlbiBhdCBndWVzdCBjcmVhdGlvbiB0aW1lLgpJdCBtaWdodCBub3QgaW52 b2x2ZSBmdXJ0aGVyIHJ1bnRpbWUgZGVjaXNpb25zLgoKPiBBbHNvICJEaWZmZXJlbnQgcG93ZXIg bWFuYWdlbWVudCBzdHJhdGVnaWVzIHRvIHVzZSBmb3IgY2VydGFpbiBndWVzdHMiCj4gbWVhbnMg dGhhdCBpdCBzaG91bGQgYmUKPiBoYXJkIHZDUFUtPnBDUFUgcGlubmluZyBmb3IgZWFjaCBndWVz dCB0b2dldGhlciB3aXRoIHBvc3NpYmlsaXR5IGluCj4gWGVuIHRvIGhhdmUgZGlmZmVyZW50IENQ VUZyZXEgZ292ZXJub3JzCj4gcnVubmluZyBhdCB0aGUgc2FtZSB0aW1lIChlYWNoIGdvdmVybm9y IGZvciBlYWNoIENQVSBwb29sKT8KClRoYXQgd291bGQgbmVlZCB0byBiZSB3b3JrZWQgb3V0LCBi dXQgSSBzdXNwZWN0IHRoYXQgQ1BVIHBpbm5pbmcgbWlnaHQKYmUgKm9uZSogb3B0aW9uIGZvciBh IGNlcnRhaW4gY2xhc3Mgb2YgZ3Vlc3RzLiBUaGlzIHdvdWxkIHByb2JhYmx5IGJlCnJlbGF0ZWQg dG8gdGhlIENQVUZyZXEgcG9saWN5LiBXaXRob3V0IHBpbm5pbmcgdGhlIGRlY2lzaW9uIG1pZ2h0 IGJlY29tZQpxdWl0ZSBpbnZvbHZlZDogSWYgWGVuIHdhbnRzIHRvIG1pZ3JhdGUgYSB2Q1BVIHRv IGEgZGlmZmVyZW50IHBDUFUsIGl0Cm5lZWRzIHRvIHRha2UgdGhlIGRpZmZlcmVudCBQLXN0YXRl cyBpbnRvIGFjY291bnQsIGluY2x1ZGluZyB0aGUgY29zdCB0bwpjaGFuZ2UgdGhlIE9QUC4gSSBh bSBub3Qgc3VyZSB0aGUgYmVuZWZpdCBqdXN0aWZpZXMgdGhlIGVmZm9ydC4gU29tZQpudW1iZXJz IHdvdWxkIGhlbHAgaGVyZS4KCj4+Pj4+IEFsdGhvdWdoIHRoZXNlIHJlcXVpcmVkIGNvbXBvbmVu dHMgKENQVUZyZXEgY29yZSwgZ292ZXJub3JzLCBldGMpIGFscmVhZHkgZXhpc3QgaW4gWGVuLCBp dCBpcyB3b3J0aCB0byBtZW50aW9uIHRoYXQgdGhleSBhcmUgQUNQSSBzcGVjaWZpYy4gU28sIGEg cGFydCBvZiB0aGUgY3VycmVudCBwYXRjaCBzZXJpZXMgbWFrZXMgdGhlbSBtb3JlIGdlbmVyaWMg aW4gb3JkZXIgdG8gbWFrZSBwb3NzaWJsZSBhIENQVUZyZXEgdXNhZ2Ugb24gYXJjaGl0ZWN0dXJl cyB3aXRob3V0IEFDUEkgc3VwcG9ydCBpbi4KPj4+Pgo+Pj4+IEhhdmUgeW91IGxvb2tlZCBhdCBo b3cgdGhpcyBpcyB1c2VkIG9uIHg4NiB0aGVzZSBkYXlzPyBDYW4geW91IGJyaWVmbHkKPj4+PiBk ZXNjcmliZSBob3cgdGhpcyB3b3JrcyBhbmQgaXQncyB1c2VkIHRoZXJlPwo+Pj4gWGVuIHN1cHBv cnRzIENQVUZyZXEgZmVhdHVyZSBvbiB4ODYgWzFdLiBJIGRvbid0IGtub3cgaG93IHdpZGVseSBp dCBpcwo+Pj4gdXNlZCBhdCB0aGUgbW9tZW50LCBidXQgaXQgaXMgYW5vdGhlciBxdWVzdGlvbi4g U28sIHRoZXJlIGFyZSB0d28KPj4+IHBvc3NpYmxlIG1vZGVzOiBEb21haW4wIGJhc2VkIENQVUZy ZXEgYW5kIEh5cGVydmlzb3IgYmFzZWQgQ1BVRnJlcQo+Pj4gWzJdLiBBcyBJIHVuZGVyc3RhbmQs IHRoZSBzZWNvbmQgb3B0aW9uIGlzIG1vcmUgcG9wdWxhci4KPj4+IFR3byBkaWZmZXJlbnQgaW1w bGVtZW50YXRpb25zIG9mICJIeXBlcnZpc29yIGJhc2VkIENQVUZyZXEiIGFyZQo+Pj4gcHJlc2Vu dDogQUNQSSBQcm9jZXNzb3IgUC1TdGF0ZXMgRHJpdmVyIGFuZCBBTUQgQXJjaGl0ZWN0dXJhbCBQ LXN0YXRlCj4+PiBEcml2ZXIuIFlvdSBjYW4gZmluZCBib3RoIHRoZW0gaW4geGVuL2FyY2gveDg2 L2FjcGkvY3B1ZnJlcS8gZGlyLgo+Pj4KPj4+IFsxXSBodHRwczovL3dpa2kueGVucHJvamVjdC5v cmcvd2lraS9YZW5fcG93ZXJfbWFuYWdlbWVudCNDUFVfUC1zdGF0ZXNfLjI4Y3B1ZnJlcS4yOQo+ Pj4gWzJdIGh0dHBzOi8vd2lraS54ZW5wcm9qZWN0Lm9yZy93aWtpL1hlbl9wb3dlcl9tYW5hZ2Vt ZW50I0h5cGVydmlzb3JfYmFzZWRfY3B1ZnJlcQo+Pgo+PiBUaGFua3MgZm9yIHRoZSByZXNlYXJj aCBhbmQgdGhlIHBvaW50ZXJzLCB3aWxsIGxvb2sgYXQgaXQgbGF0ZXIuCj4+Cj4+Pj4+IEJ1dCwg dGhlIG1haW4gcXVlc3Rpb24gd2UgaGF2ZSB0byBhbnN3ZXIgaXMgYWJvdXQgZnJlcXVlbmN5IGNo YW5naW5nIGludGVyZmFjZSBpbiB2aXJ0dWFsaXplZCBzeXN0ZW0uIFRoZSBmcmVxdWVuY3kgY2hh bmdpbmcgaW50ZXJmYWNlIGFuZCBhbGwgZGVwZW5kZW50IGNvbXBvbmVudHMgd2hpY2ggbmVlZGVk IENQVUZyZXEgdG8gYmUgZnVuY3Rpb25hbCBvbiBBUk0gYXJlIG5vdCBwcmVzZW50IGluIFhlbiB0 aGVzZSBkYXlzLiBUaGUgbGlzdCBvZiByZXF1aXJlZCBjb21wb25lbnRzIGlzIHF1aXRlIGJpZyBh bmQgbWF5IGNoYW5nZSBhY3Jvc3MgZGlmZmVyZW50IEFSTSBTb0MgdmVuZG9ycy4gQXMgYW4gZXhh bXBsZSwgdGhlIGZvbGxvd2luZyBjb21wb25lbnRzIGFyZSBpbnZvbHZlZCBpbiBEVkZTIG9uIFJl bmVzYXMgU2FsdmF0b3ItWCBib2FyZCB3aGljaCBoYXMgUi1DYXIgR2VuMyBTb0MgaW5zdGFsbGVk OiBnZW5lcmljIGNsb2NrLCByZWd1bGF0b3IgYW5kIHRoZXJtYWwgZnJhbWV3b3JrcywgVmVuZG9y 4oCZcyBDUEcsIFBNSUMsIEFWUywgVEhTIGRyaXZlcnMsIGkyYyBzdXBwb3J0LCBldGMuCj4+Pj4+ Cj4+Pj4+IFdlIHdlcmUgY29uc2lkZXJpbmcgYSBmZXcgcG9zc2libGUgYXBwcm9hY2hlcyBvZiBo eXBlcnZpc29yIGJhc2VkIENQVUZyZXFzIG9uIEFSTSBhbmQgY2FtZSB0byBjb25jbHVzaW9uIHRv IGJhc2UgdGhpcyBzb2x1dGlvbiBvbiBwb3B1bGFyIGF0IHRoZSBtb21lbnQsIGFscmVhZHkgdXBz dHJlYW1lZCB0byBMaW51eCwgQVJNIFN5c3RlbSBDb250cm9sIGFuZCBQb3dlciBJbnRlcmZhY2Uo U0NQSSkgcHJvdG9jb2wgWzFdLiBXZSBjaG9zZSBTQ1BJIHByb3RvY29sIGluc3RlYWQgb2YgbmV3 ZXIgQVJNIFN5c3RlbSBDb250cm9sIGFuZCBNYW5hZ2VtZW50IEludGVyZmFjZSAoU0NNSSkgcHJv dG9jb2wgWzJdIHNpbmNlIGl0IGlzIHdpZGVseSBzcHJlYWQgaW4gTGludXgsIHRoZXJlIGFyZSBn b29kIGV4YW1wbGVzIGhvdyB0byB1c2UgaXQsIHRoZSByYW5nZSBvZiBjYXBhYmlsaXRpZXMgaXQg aGFzIGlzIGVub3VnaCBmb3IgaW1wbGVtZW50aW5nIGh5cGVydmlzb3IgYmFzZWQgQ1BVRnJlcSBh bmQsIHdoYXQgaXMgbW9yZSwgdXBzdHJlYW0gTGludXggc3VwcG9ydCBmb3IgU0NNSSBpcyBtaXNz ZWQgc28gZmFyLCBidXQgU0NNSSBjb3VsZCBiZSB1c2VkIGFzIHdlbGwuCj4+Pj4+Cj4+Pj4+IEJy aWVmbHkgc3BlYWtpbmcsIHRoZSBTQ1BJIHByb3RvY29sIGlzIHVzZWQgYmV0d2VlbiB0aGUgU3lz dGVtIENvbnRyb2wgUHJvY2Vzc29yKFNDUCkgYW5kIHRoZSBBcHBsaWNhdGlvbiBQcm9jZXNzb3Jz KEFQKS4gVGhlIG1haWxib3ggZmVhdHVyZSBwcm92aWRlcyBhIG1lY2hhbmlzbSBmb3IgaW50ZXIt cHJvY2Vzc29yIGNvbW11bmljYXRpb24gYmV0d2VlbiBTQ1AgYW5kIEFQLiBUaGUgbWFpbiBwdXJw b3NlIG9mIFNDUCBpcyB0byBvZmZsb2FkIGRpZmZlcmVudCBQTSByZWxhdGVkIHRhc2tzIGZyb20g QVAgYW5kIG9uZSBvZiB0aGUgc2VydmljZXMgdGhhdCBTQ1AgcHJvdmlkZXMgaXMgRHluYW1pYyB2 b2x0YWdlIGFuZCBmcmVxdWVuY3kgc2NhbGluZyAoRFZGUyksIGl0IGlzIHdoYXQgd2UgYWN0dWFs bHkgbmVlZCBmb3IgQ1BVRnJlcS4gSSB3aWxsIGRlc2NyaWJlIHRoaXMgYXBwcm9hY2ggaW4gZGV0 YWlscyBkb3duIHRoZSB0ZXh0Lgo+Pj4+Pgo+Pj4+PiBMZXQgbWUgZXhwbGFpbiBhIGJpdCBtb3Jl IHdoYXQgdGhlc2UgcG9zc2libGUgYXBwcm9hY2hlcyBhcmU6Cj4+Pj4+Cj4+Pj4+IDEuIOKAnFhl bitod2RvbeKAnSBzb2x1dGlvbi4KPj4+Pj4gR2xvYmFsTG9naWMgdGVhbSBwcm9wb3NlZCBzcGxp dCBtb2RlbCBbM10sIHdoZXJlIOKAnGh3ZG9tLWNwdWZyZXHigJ0gZnJvbnRlbmQgZHJpdmVyIGlu IFhlbiBpbnRlcmFjdHMgd2l0aCB0aGUg4oCceGVuLWNwdWZyZXHigJ0gYmFja2VuZCBkcml2ZXIg aW4gTGludXggaHdkb20gKHBvc3NpYmx5IGRvbTApIGluIG9yZGVyIHRvIHNjYWxlIHBoeXNpY2Fs IENQVXMuIFRoaXMgc29sdXRpb24gaGFzbuKAmXQgYmVlbiBhY2NlcHRlZCBieSBYZW4gY29tbXVu aXR5IHlldCBhbmQgc2VlbXMgaXQgaXMgbm90IGdvaW5nIHRvIGJlIGFjY2VwdGVkIHdpdGhvdXQg dGFraW5nIGludG8gdGhlIGFjY291bnQgc3RpbGwgdW5hbnN3ZXJlZCBtYWpvciBxdWVzdGlvbnMg YW5kIHByb3ZpbmcgdGhhdCDigJxhbGwtaW4tWGVu4oCdIHNvbHV0aW9uLCB3aGljaCBYZW4gY29t bXVuaXR5IGNvbnNpZGVyZWQgYXMgbW9yZSBhcmNoaXRlY3R1cmFsbHkgY2xlYW5lciBvcHRpb24s IHdvdWxkIGJlIHVud29ya2FibGUgaW4gcHJhY3RpY2UuCj4+Pj4+IFRoZSBvdGhlciByZWFzb25z IHdoeSB3ZSBkZWNpZGVkIG5vdCB0byBzdGljayB0byB0aGlzIGFwcHJvYWNoIGFyZSBjb21wbGV4 IGNvbW11bmljYXRpb24gaW50ZXJmYWNlIGJldHdlZW4gWGVuIGFuZCBod2RvbTogZXZlbnQgY2hh bm5lbCwgaHlwZXJjYWxscywgc3lzY2FsbHMsIHBhc3NpbmcgQ1BVIGluZm8gdmlhIERULCBldGMg YW5kIHBvc3NpYmxlIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgd2l0aCBhIHByb3Bvc2VkIHNvbHV0 aW9uLgo+Pj4+PiBBbHRob3VnaCBpdCBpcyB3b3J0aCB0byBtZW50aW9uIHRoYXQgdGhlIGJlYXV0 eSBvZiB0aGlzIGFwcHJvYWNoIHdhcyB0aGF0IHRoZXJlIHdvdWxkbuKAmXQgYmUgYSBuZWVkIHRv IHBvcnQgYSBsb3Qgb2YgdGhpbmdzIHRvIFhlbi4gQWxsIGZyZXF1ZW5jeSBjaGFuZ2luZyBpbnRl cmZhY2UgYW5kIGFsbCBkZXBlbmRlbnQgY29tcG9uZW50cyB3aGljaCBuZWVkZWQgQ1BVRnJlcSB0 byBiZSBmdW5jdGlvbmFsIHdlcmUgYWxyZWFkeSBpbiBwbGFjZS4KPj4+Pgo+Pj4+IFN0ZWZhbm8s IEp1bGllbiBhbmQgSSB3ZXJlIHRoaW5raW5nIGFib3V0IHRoaXM6IFdvdWxkbid0IGl0IGJlIHBv c3NpYmxlCj4+Pj4gdG8gY29tZSB1cCB3aXRoIHNvbWUgaGFyZHdhcmUgZG9tYWluLCBzb2xlbHkg ZGVhbGluZyB3aXRoIENQVUZyZXEKPj4+PiBjaGFuZ2VzPyBUaGlzIGNvdWxkIHJ1biBhIExpbnV4 IGtlcm5lbCwgYnV0IG5vIG9yIHZlcnkgbGl0dGxlIHVzZXJsYW5kLgo+Pj4+IEFsbCBpdHMgdkNQ VXMgd291bGQgYmUgcGlubmVkIHRvIHBDUFVzIGFuZCB3b3VsZCBub3JtYWxseSBub3QgYmUKPj4+ PiBzY2hlZHVsZWQgYnkgWGVuLiBJZiBYZW4gd2FudHMgdG8gY2hhbmdlIHRoZSBmcmVxdWVuY3ks IGl0IHNjaGVkdWxlcyB0aGUKPj4+PiByZXNwZWN0aXZlIHZDUFUgdG8gdGhlIHJpZ2h0IHBDUFUg YW5kIHBhc3NlcyBkb3duIHRoZSBmcmVxdWVuY3kgY2hhbmdlCj4+Pj4gcmVxdWVzdC4gU291bmRz IGEgYml0IGludm9sdmVkLCB0aG91Z2gsIGFuZCBwcm9iYWJseSBkb2Vzbid0IHNvbHZlIHRoZQo+ Pj4+IHByb2JsZW0gd2hlcmUgdGhpcyBkb21haW4gbmVlZHMgdG8gc2hhcmUgYWNjZXNzIHRvIGhh cmR3YXJlIHdpdGggRG9tMAo+Pj4+IChjbG9ja3MgY29tZSB0byBtaW5kKS4KPj4+IFllcywgYW5v dGhlciBxdWVzdGlvbiBpcyBob3cgdG8gZ2V0IHRoaXMgTGludXgga2VybmVsIHN0dWZmIChiYWNr ZW5kLAo+Pj4gdG9wIGxldmVsIGRyaXZlciwgZXRjKSB1cHN0cmVhbWVkLgo+Pgo+PiBXZWxsLCB0 aGUgaWRlYSB3b3VsZCBiZSB0byB1c2UgYWxyZWFkeSB1cHN0cmVhbSBkcml2ZXJzIHRvIGFjdHVh bGx5Cj4+IGltcGxlbWVudCBPUFAgY2hhbmdlcyAodmlhIExpbnV4IGNsb2NrIGFuZCByZWd1bGF0 b3IgZHJpdmVycyksIHRoZW4gdXNlCj4+IGV4aXN0aW5nIGludGVyZmFjZXMgbGlrZSB0aGUgdXNl cnNwYWNlIGdvdmVybm9yLCBmb3IgaW5zdGFuY2UsIHRvCj4+IHRyaWdnZXIgdGhvc2UuIEkgZG9u J3QgdGhpbmsgd2UgbmVlZCBtdWNoIGV4dHJhIGtlcm5lbCBjb2RlIGZvciB0aGF0Lgo+IEkgdW5k ZXJzdGFuZC4gQmFja2VuZCBpbiB1c2Vyc3BhY2Ugc2V0cyBkZXNpcmVkIGZyZXF1ZW5jeSBieSBy ZXF1ZXN0Cj4gZnJvbSBmcm9udGVuZCBpbiBYZW4uCgpZZWFoLCBzb21ldGhpbmcgbGlrZSB0aGF0 LiBJdCB3YXMganVzdCBhbiBpZGVhLCBub3QgZnVsbHkgdGhvdWdodAp0aHJvdWdoIHlldC4KCj4+ Pj4+IEFsdGhvdWdoIHRoaXMgYXBwcm9hY2ggaXMgbm90IHVzZWQsIHN0aWxsIEkgcGlja2VkIGEg ZmV3IGFscmVhZHkgYWNrZWQgcGF0Y2hlcyB3aGljaCBtYWRlIEFDUEkgc3BlY2lmaWMgQ1BVRnJl cSBzdHVmZiBtb3JlIGdlbmVyaWMuCj4+Pj4+Cj4+Pj4+IDIuIOKAnGFsbC1pbi1YZW7igJ0gc29s dXRpb24uCj4+Pj4+IFRoaXMgaW1wbGllcyB0aGF0IGFsbCBDUFVGcmVxIHJlbGF0ZWQgc3R1ZmYg c2hvdWxkIGJlIGxvY2F0ZWQgaW4gWGVuLgo+Pj4+PiBDb21tdW5pdHkgY29uc2lkZXJlZCB0aGlz IHNvbHV0aW9uIGFzIG1vcmUgYXJjaGl0ZWN0dXJhbGx5IGNsZWFuZXIgb3B0aW9uIHRoYW4g4oCc WGVuK2h3ZG9t4oCdIG9uZS4gTm8gbGF5ZXJpbmcgdmlvbGF0aW9uIGNvbXBhcmluZyB3aXRoIHRo ZSBwcmV2aW91cyBhcHByb2FjaCAobGV0dGluZyBndWVzdCBPUyBtYW5hZ2Ugb25lIG9yIG1vcmUg cGh5c2ljYWwgQ1BVcyBpcyBtb3JlIG9mIGEgbGF5ZXJpbmcgdmlvbGF0aW9uKS4KPj4+Pj4gVGhp cyBzb2x1dGlvbiBsb29rcyBiZXR0ZXIsIGJ1dCB0byBiZSBob25lc3QsIHdlIGFyZSBub3QgaW4g ZmF2b3Igb2YgdGhpcyBzb2x1dGlvbiBhcyB3ZWxsLiBXZSBleHBlY3QgZW5vcm1vdXMgZGV2ZWxv cGluZyBlZmZvcnQgdG8gZ2V0IHRoaXMgc3VwcG9ydCBpbiAodGhlIHNjb3BlIG9mIHJlcXVpcmVk IGNvbXBvbmVudHMgbG9va3MgdW5yZWFsKSBhbmQgbWFpbnRhaW4gaXQuIFNvLCB3ZSBkZWNpZGVk IG5vdCB0byBzdGljayB0byB0aGlzIGFwcHJvYWNoIGFzIHdlbGwuCj4+Pj4KPj4+PiBZZXMsIEkg ZXZlbiB0aGluayBpdCdzIG5vdCBmZWFzaWJsZSB0byBpbXBsZW1lbnQgdGhpcy4gV2l0aCBhIG1v ZGVybgo+Pj4+IGNsb2NrIGltcGxlbWVudGF0aW9uIHRoZXJlIGlzIG9uZSBkcml2ZXIgdG8gY29u dHJvbCAqYWxsKiBjbG9ja3Mgb2YgYW4KPj4+PiBTb0MsIHNvIHlvdSBjYW4ndCBzaW5nbGUgb3V0 IHRoZSBDUFUgY2xvY2sgZWFzaWx5LCBmb3IgaW5zdGFuY2UuIE9uZQo+Pj4+IHdvdWxkIHByb2Jh Ymx5IHJ1biBpbnRvIHN5bmNocm9uaXNhdGlvbiBpc3N1ZXMsIGF0IGJlc3QuCj4+Pj4KPj4+Pj4g My4g4oCcWGVuK1NDUChBUk0gVEYp4oCdIHNvbHV0aW9uLgo+Pj4+PiBJdCBpcyB5ZXQgYW5vdGhl ciBzb2x1dGlvbiBiYXNlZCBvbiBBUk0gU0NQSSBwcm90b2NvbC4gVGhlIGdlbmVyaWMgaWRlYSBo ZXJlIGlzIHRoYXQgdGhlcmUgaXMgYSBmaXJtd2FyZSwgd2hpY2ggYmVpbmcgYSBzZXJ2ZXIgcnVu cyBvbiBzb21lIGRlZGljYXRlZCBJUCBjb3JlIChzZXJ2ZXIpLCBwcm92aWRlcyBkaWZmZXJlbnQg UE0gc2VydmljZXMgKERWRlMsIHNlbnNvcnMsIGV0YykuIE9uIHRoZSBvdGhlciBzaWRlIHRoZXJl IGlzIGEgQ1BVRnJlcSBkcml2ZXIgaW4gWGVuLCB3aGljaCBpcyBydW5uaW5nIG9uIHRoZSBBUCAo Y2xpZW50KSwgY29uc3VtZXMgdGhlc2Ugc2VydmljZXMuIENQVUZyZXEgZHJpdmVyIG5laXRoZXIg Y2hhbmdlcyB0aGUgQ1BVIGZyZXF1ZW5jeS92b2x0YWdlIGJ5IGl0c2VsZiBub3IgY29vcGVyYXRl cyB3aXRoIExpbnV4IGluIG9yZGVyIHRvIGRvIHN1Y2ggam9iLiBJdCBqdXN0IGNvbW11bmljYXRl cyB3aXRoIFNDUCBkaXJlY3RseSB1c2luZyBTQ1BJIHByb3RvY29sLiBBcyBJIHNhaWQgYmVmb3Jl LCBzb21lIGludGVncmF0ZWQgaW50byBhIFNvQyBtYWlsYm94IElQIG5lZWQgdG8gYmUgdXNlZCBm b3IgSVBDIChkb29yYmVsbCBmb3IgdHJpZ2dlcmluZyBhY3Rpb24gYW5kIHNoYXJlZCBtZW1vcnkg cmVnaW9uIGZvciBjb21tYW5kcykuIENQVUZyZXEgZHJpdmVyIGRvZXNu4oCZdCBldmVuIG5lZWQg dG8ga25vdyB3aGF0IHNob3VsZCBiZSBwaHlzaWNhbGx5IGNoYW5nZWQgZm9yIHRoZSBuZXcgZnJl cXVlbmN5IHRvIHRha2UgZWZmZWN0LiBJdCBpcyBhIGNlcnRhaW5seSBTQ1DigJlzIHJlc3BvbnNp YmlsaXR5LiBUaGlzIGFsbCBhdm9pZCBDUFVGcmVxIGluZnJhc3RydWN0dXJlIGluIFhlbiBvbiBB Uk0gZnJvbSBkaXZpbmcgaW50byBlYWNoIHN1cHBvcnRlZCBTb0MgaW50ZXJuYWxzIGFuZCBhcyB0 aGUgcmVzdWx0IGhhdmluZyBhIGxvdCBvZiBjb2RlLgo+Pj4+Pgo+Pj4+PiBUaGUgcG9zc2libGUg aXNzdWUgaGVyZSBjb3VsZCBiZSBpbiBTQ1AsIHRoZSBwcm9ibGVtIGlzIHRoYXQgc29tZSBkZWRp Y2F0ZWQgSVAgY29yZSBtYXkgYmUgYWJzZW50IGF0IGFsbCBvciBwZXJmb3JtcyBvdGhlciB0aGFu IFBNIHRhc2tzLiBGb3J0dW5hdGVseSwgdGhlcmUgaXMgYSBicmlsbGlhbnQgc29sdXRpb24gdG8g dGVhY2ggZmlybXdhcmUgcnVubmluZyBpbiB0aGUgRUwzIGV4Y2VwdGlvbiBsZXZlbCAoQVJNIFRG KSB0byBwZXJmb3JtIFNDUCBmdW5jdGlvbnMgYW5kIHVzZSBTTUMgY2FsbHMgZm9yIGNvbW11bmlj YXRpb25zIFs0XS4gRXhhY3RseSB0aGlzIHRyYW5zcG9ydCBpbXBsZW1lbnRhdGlvbiBJIHdhbnQg dG8gYnJpbmcgdG8gWGVuIHRoZSBmaXJzdC4gU3VjaCBzb2x1dGlvbiBpcyBnb2luZyB0byBiZSBn ZW5lcmljIGFjcm9zcyBhbGwgQVJNIHBsYXRmb3JtcyB0aGF0IGRvIGhhdmUgZmlybXdhcmUgcnVu bmluZyBpbiB0aGUgRUwzIGV4Y2VwdGlvbiBsZXZlbCBhbmQgZG9u4oCZdCBoYXZlIGNhbmRpZGF0 ZSBmb3IgYmVpbmcgU0NQLgo+Pj4+Cj4+Pj4gV2hpbGUgSSBmZWVsIGZsYXR0ZXJlZCB0aGF0IHlv dSBsaWtlIHRoYXQgaWRlYSBhcyB3ZWxsIDstKSwgeW91IHNob3VsZAo+Pj4+IG1lbnRpb24gdGhh dCB0aGlzIHJlcXVpcmVzIGFjdHVhbCBmaXJtd2FyZSBwcm92aWRpbmcgdGhvc2Ugc2VydmljZXMu Cj4+PiBZZXMsIGEgc29tZSBmaXJtd2FyZSwgd2hpY2ggcHJvdmlkZXMgdGhlc2Ugc2VydmljZXMs IG11c3QgYmUgcHJlc2VudAo+Pj4gb24gdGhlIG90aGVyIGVuZC4KPj4+IEl0IGlzIGEgZmlybXdh cmUgd2hpY2ggcnVucyBvbiB0aGUgZGVkaWNhdGVkIElQIGNvcmUocykgaW4gY29tbW9uIGNhc2Uu Cj4+PiBBbmQgaXQgaXMgYSBmaXJtd2FyZSB3aGljaCBydW5zIG9uIHRoZSBzYW1lIGNvcmUocykg YXMgdGhlIGh5cGVydmlzb3IKPj4+IGluIHBhcnRpY3VsYXIgY2FzZS4KPj4+Cj4+Pj4gSQo+Pj4+ IGFtIG5vdCBzdXJlIHRoZXJlIGlzIGFjdHVhbGx5ICphbnkqIGltcGxlbWVudGF0aW9uIG9mIHRo aXMgYXQgdGhlCj4+Pj4gbW9tZW50LCBhcGFydCBmcm9tIG15IFBvQyBjb2RlIGZvciBBbGx3aW5u ZXIuCj4+PiBZb3VyIFBvQyBpcyBhIGdvb2QgZXhhbXBsZSBmb3Igd3JpdGluZyBmaXJtd2FyZSBz aWRlLiBTbywgd2h5IGRvbid0Cj4+PiB1c2UgaXQgYXMgYSBiYXNlIGZvcgo+Pj4gb3RoZXIgcGxh dGZvcm0uCj4+Cj4+IFN1cmUsIGJ1dCBub3JtYWxseSBmaXJtd2FyZSBpcyBwcm92aWRlZCBieSB0 aGUgdmVuZG9yLiBBbmQgdW50aWwgbW9yZQo+PiB2ZW5kb3JzIGFjdHVhbGx5IGltcGxlbWVudCB0 aGlzLCBpdCdzIGEgYml0IHdlaXJkIHRvIGFzayBYZW4gdXNlcnMgdG8KPj4gaW5zdGFsbCB0aGlz IGhhbmQtY3JhZnRlZCBob21lLWJyZXcgZmlybXdhcmUgdG8gdXNlIHRoaXMgZmVhdHVyZS4KPj4g Rm9yIGEgcGFydGljdWxhciBlbWJlZGRlZCB1c2UgY2FzZSBsaWtlIHlvdXJzIHRoaXMgbWlnaHQg YmUgZmVhc2libGUsCj4+IHRob3VnaC4KPiBBZ3JlZS4gaXQgaXMgZXhhY3RseSBmb3IgQVJNIFNv Q3Mgd2l0aCBzZWN1cml0eSBleHRlbnNpb25zIGVuYWJsZWQsCj4gYnV0IHdoZXJlIFNDUCBpc24n dCBhdmFpbGFibGUuCj4gQW5kIHRoZXNlIFNvQ3MgYXJlIGV4aXN0cy4KClN1cmUsIGFsc28gaXQg ZGVwZW5kcyBvbiB0aGUgYWNjZXNzaWJpbGl0eSBvZiBmaXJtd2FyZS4gU29tZSBTb0NzIG9ubHkK cnVuIHNpZ25lZCBmaXJtd2FyZSwgb3IgdGhlcmUgaXMgbm8gc291cmNlIGNvZGUgZm9yIGNydWNp YWwgZmlybXdhcmUKY29tcG9uZW50cyAoU29DIHNldHVwLCBEUkFNIGluaXQpLCBzbyBjaGFuZ2lu ZyB0aGUgZmlybXdhcmUgbWlnaHQgbm90IGJlCmFuIG9wdGlvbi4KCj4+Pj4gQW5kIGZyb20gYSBY ZW4gcG9pbnQgb2YgdmlldyBJIGFtIG5vdCBzdXJlIHdlIGFyZSBpbiB0aGUgcG9zaXRpb24gdG8K Pj4+PiBmb3JjZSB1c2VycyB0byB1c2UgdGhpcyBmaXJtd2FyZS4gVGhpcyBtYXkgYmUgZmVhc2li bGUgaW4gYSBjbGFzc2ljCj4+Pj4gZW1iZWRkZWQgc2NlbmFyaW8sIHdoZXJlIGJvdGggZmlybXdh cmUgYW5kIHNvZnR3YXJlIGFyZSBwcm92aWRlZCBieSB0aGUKPj4+PiBzYW1lIGVudGl0eSwgYnV0 IHRoYXQgc2hvdWxkIGJlIGNsZWFybHkgbm90ZWQgYXMgYSByZXN0cmljdGlvbi4KPj4+IEFncmVl Lgo+Pj4KPj4+Pgo+Pj4+PiBIZXJlIHdlIGhhdmUgY29tcGxldGVseSBzeW5jaHJvbm91cyBjYXNl IGJlY2F1c2Ugb2YgU01DIGNhbGxzIG5hdHVyZS4gU01DIHRyaWdnZXJlZCBtYWlsYm94IGRyaXZl ciBlbXVsYXRlcyBhIG1haWxib3ggd2hpY2ggc2lnbmFscyB0cmFuc21pdHRlZCBkYXRhIHZpYSBT ZWN1cmUgTW9uaXRvciBDYWxsIChTTUMpIGluc3RydWN0aW9uIFs1XS4gVGhlIG1haWxib3ggcmVj ZWl2ZXIgaXMgaW1wbGVtZW50ZWQgaW4gZmlybXdhcmUgYW5kIHN5bmNocm9ub3VzbHkgcmV0dXJu cyBkYXRhIHdoZW4gaXQgcmV0dXJucyBleGVjdXRpb24gdG8gdGhlIG5vbi1zZWN1cmUgd29ybGQg YWdhaW4uIFRoaXMgd291bGQgYWxsb3cgdXMgYm90aCB0byB0cmlnZ2VyIGEgcmVxdWVzdCBhbmQg dHJhbnNmZXIgZXhlY3V0aW9uIHRvIHRoZSBmaXJtd2FyZSBjb2RlIGluIGEgc2FmZSBhbmQgYXJj aGl0ZWN0ZWQgd2F5LiBMaWtlIFBTQ0kgcmVxdWVzdHMuCj4+Pj4+IEFzIHlvdSBjYW4gc2VlIHRo aXMgbWV0aG9kIGlzIGZyZWUgZnJvbSBzeW5jaHJvbml6YXRpb24gaXNzdWVzLiBXaGF0IGlzIG1v cmUsIHRoaXMgc29sdXRpb24gaXMgbW9yZSBhcmNoaXRlY3R1cmFsbHkgY2xlYW5lciBzb2x1dGlv biB0aGFuIHNwbGl0IG1vZGVsIOKAnFhlbitod2RvbeKAnSBvbmUuIEZyb20gdGhlIHNlY3VyaXR5 IHBvaW50IG9mIHZpZXcsIEkgaG9wZSwgZXZlcnl0aGluZyB3aWxsIGJlIG11Y2ggbW9yZSBjb3Jy ZWN0IHNpbmNlIHRoZSBBUk0gVEYsIHdoaWNoIHdlIHdhbnQgdG8gc2VlIGluIGNoYXJnZSBvZiBj b250cm9sbGluZyBDUFUgZnJlcXVlbmN5L3ZvbHRhZ2UsIGlzIGEgdHJ1c3RlZCBTVyBsYXllci4g TW9yZW92ZXIsIEFSTSBURiBpcyByZXNwb25zaWJsZSBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIENQ VSAoUFNDSSkgYW5kIG5vYm9keSBjb21wbGFpbnMgYWJvdXQgaXQsIHNvIGxldCBpdCBkbyBEVkZT IHRvby4KPj4+Pgo+Pj4+IEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IHRoaXMgc3luY2hyb25vdXMg bmF0dXJlIG9mIHRoZSBjb21tdW5pY2F0aW9uIGNhbgo+Pj4+IGFjdHVhbGx5IGJlIGEgcHJvYmxl bTogYSBEVkZTIHJlcXVlc3QgdXN1YWxseSBpbnZvbHZlcyByZWd1bGF0b3IgYW5kIFBMTAo+Pj4+ IGNoYW5nZXMsIHdoaWNoIGNvdWxkIHRha2Ugc29tZSB0aW1lIHRvIHNldHRsZSBpbi4gQmxvY2tp bmcgYWxsIG9mIHRoaXMKPj4+PiB0aW1lIChtaWxsaXNlY29uZHM/KSBpbiBFTDMgKHByb2JhYmx5 IGJ1c3ktd2FpdGluZykgbWlnaHQgbm90IGJlIGRlc2lyYWJsZS4KPj4+IEFncmVlLiBJIGhhdmVu J3QgbWVhc3VyZWQgdGltZSB5ZXQgdG8gc2F5IGhvdyBsb25nIGlzIGl0LCBzaW5jZSBJCj4+PiBk b24ndCBoYXZlIGEgd29ya2luZyBmaXJtd2FyZSBhdCB0aGUgbW9tZW50LCBqdXN0IGFuIGVtdWxh dG9yLAo+Pj4gYnV0LCB5ZXMsIGl0IHdpbGwgZGVmaW5pdGVseSB0YWtlIHNvbWUgdGltZS4gVGhl IHdob2xlIHN5c3RlbSB3b24ndCBiZQo+Pj4gYmxvY2tlZCwgb25seSB0aGUgQ1BVIHdoaWNoIHBl cmZvcm1zIFNNQyBjYWxsLgo+Pj4gQnV0LCBpZiB3ZSBhc2sgaHdkb20gdG8gY2hhbmdlIGZyZXF1 ZW5jeSB3ZSB3aWxsIHdhaXQgdG9vPyBPciBpZiBYZW4KPj4+IG1hbmFnZXMgUExML3JlZ3VsYXRv ciBieSBpdHNlbGYsIGl0IHdpbGwgd2FpdCBhbnl3YXk/Cj4+Cj4+IE5vcm1hbGx5IHRoaXMgaXMg ZG9uZSBhc3luY2hyb25vdXNseS4gRm9yIGluc3RhbmNlIHRoZSBPUyBwcm9ncmFtcyB0aGUKPj4g cmVndWxhdG9yIHRvIGNoYW5nZSB0aGUgdm9sdGFnZSwgdGhlbiBkb2VzIG90aGVyIHRoaW5ncyB1 bnRpbCB0aGUKPj4gcmVndWxhdG9yIHNpZ25hbHMgdGhlIGNoYW5nZSBoYXMgYmVlbiByZWFsaXNl ZC4gVGhlIGl0IHJlLXByb2dyYW1zIHRoZQo+PiBQTEwsIGFnYWluIGV4ZWN1dGluZyBvdGhlciBj b2RlLCBldmVudHVhbGx5IGJlaW5nIGludGVycnVwdGVkIGJ5IGEKPj4gY29tcGxldGlvbiBpbnRl cnJ1cHQgKG9yIGJ5IHBlcmlvZGljYWxseSBwb2xsaW5nIGEgYml0KS4gSWYgd2UgbmVlZCB0bwo+ PiBzcGVuZCBhbGwgb2YgdGhpcyB0aW1lIGluIEVMMywgdGhlIEhWIGlzIGJsb2NrZWQgb24gdGhp cy4gVGhpcyBtaWdodCBvcgo+PiBtaWdodCBub3QgYmUgYSBwcm9ibGVtLCBidXQgaXQgc2hvdWxk IGJlIG5vdGVkLgo+IEFncmVlLgo+IAo+Pgo+Pj4+PiBJIGhhdmUgdG8gYWRtaXQgdGhhdCBJIGhh dmUgY2hlY2tlZCB0aGlzIHNvbHV0aW9uIG9ubHkgZHVlIHRvIGEgbGFjayBvZiBjYW5kaWRhdGUg Zm9yIGJlaW5nIFNDUC4gQnV0LCBJIGhvcGUsIHRoYXQgb3RoZXIgQVJNIFNvQ3Mgd2hlcmUgZGVk aWNhdGVkIFNDUCBpcyBwcmVzZW50IChhc3luY2hyb25vdXMgY2FzZSkgd2lsbCB3b3JrIHRvbywg YnV0IHdpdGggc29tZSBsaW1pdGF0aW9ucy4gVGhlIG1haWxib3ggSVBzIGZvciB0aGVzZSBBUk0g U29DcyBtdXN0IGhhdmUgVFgvUlgtZG9uZSBpcnFzLiBJIGhhdmUgZGVzY3JpYmVkIGluIHRoZSBj b3JyZXNwb25kaW5nIHBhdGNoZXMgd2h5IHRoaXMgbGltaXRhdGlvbiBpcyBwcmVzZW50Lgo+Pj4+ Pgo+Pj4+PiBUbyBiZSBob25lc3QgSSBoYXZlIFJlbmVzYXMgUi1DYXIgR2VuMyBTb0NzIGluIG1p bmQgYXMgb3VyIG5lYXJlc3QgdGFyZ2V0LCBidXQgSSB3b3VsZCBsaWtlIHRvIG1ha2UgdGhpcyBz b2x1dGlvbiBhcyBnZW5lcmljIGFzIHBvc3NpYmxlLiBJIGRvbuKAmXQgdHJlYXQgcHJvcG9zZWQg c29sdXRpb24gYXMgd29ybGQtd2lkZSBnZW5lcmljLCBidXQgSSBob3BlLCB0aGlzIHNvbHV0aW9u IG1heSBiZSBzdWl0YWJsZSBmb3Igb3RoZXIgQVJNIFNvQ3Mgd2hpY2ggbWVldCBzdWNoIHJlcXVp cmVtZW50cy4gQW55d2F5LCBoYXZpbmcgc29tZXRoaW5nIHdoaWNoIHdvcmtzLCBidXQgZG9lc27i gJl0IGNvdmVyIGFsbCBjYXNlcyBpcyBiZXR0ZXIgdGhhbiBoYXZpbmcgbm90aGluZy4KPj4+Pj4K Pj4+Pj4gSSB3b3VsZCBsaWtlIHRvIG5vdGljZSB0aGF0IHRoZSBwYXRjaGVzIGFyZSBQT0Mgc3Rh dGUgYW5kIEkgcG9zdCB0aGVtIGp1c3QgdG8gaWxsdXN0cmF0ZSBpbiBtb3JlIGRldGFpbCBvZiB3 aGF0IEkgYW0gdGFsa2luZyBhYm91dC4gUGF0Y2ggc2VyaWVzIGNvbnNpc3Qgb2YgdGhlIGZvbGxv d2luZyBwYXJ0czoKPj4+Pj4gMS4gR0zigJlzIHBhdGNoZXMgd2hpY2ggbWFrZSBBQ1BJIHNwZWNp ZmljIENQVUZyZXEgc3R1ZmYgbW9yZSBnZW5lcmljLiBBbHRob3VnaCB0aGVzZSBwYXRjaGVzIGhh cyBiZWVuIGFscmVhZHkgYWNrZWQgYnkgWGVuIGNvbW11bml0eSBhbmQgdGhlIENQVUZyZXEgY29k ZSBiYXNlIGhhc27igJl0IGNoYW5nZWQgaW4gYSBsYXN0IGZldyB5ZWFycyBJIGRyb3AgYWxsIEEt Yi4KPj4+Pj4gMi4gQSBidW5jaCBvZiBkZXZpY2UtdHJlZSBoZWxwZXJzIGFuZCBtYWNyb3MuCj4+ Pj4+IDMuIERpcmVjdCBwb3J0ZWQgU0NQSSBwcm90b2NvbCwgbWFpbGJveCBpbmZyYXN0cnVjdHVy ZSBhbmQgdGhlIEFSTSBTTUMgdHJpZ2dlcmVkIG1haWxib3ggZHJpdmVyLiBBbGwgY29tcG9uZW50 cyBleGNlcHQgbWFpbGJveCBkcml2ZXIgYXJlIGluIG1haW5saW5lIExpbnV4Lgo+Pj4+Cj4+Pj4g V2h5IGRvIHlvdSBhY3R1YWxseSBuZWVkIHRoaXMgbWFpbGJveCBmcmFtZXdvcms/IEFjdHVhbGx5 IEkganVzdAo+Pj4+IHByb3Bvc2VkIHRoZSBTTUMgZHJpdmVyIHRoZSBtYWtlIGl0IGZpdCBpbnRv IHRoZSBMaW51eCBmcmFtZXdvcmsuIEFsbCB3ZQo+Pj4+IGFjdHVhbGx5IG5lZWQgZm9yIFNDUEkg aXMgdG8gd3JpdGUgYSBzaW1wbGUgY29tbWFuZCBpbnRvIHNvbWUgbWVtb3J5IGFuZAo+Pj4+ICJw cmVzcyBhIGJ1dHRvbiIuIEkgZG9uJ3Qgc2VlIGEgbmVlZCB0byBpbXBvcnQgdGhlIHdob2xlIExp bnV4Cj4+Pj4gZnJhbWV3b3JrLCBlc3BlY2lhbGx5IGFzIG91ciBtYWlsYm94IHVzYWdlIGlzIGFj dHVhbGx5IGp1c3QgYSBjb3JuZXIKPj4+PiBjYXNlIG9mIHRoZSBtYWlsYm94J3MgY2FwYWJpbGl0 eSAobmFtZWx5IGEgInNpbmdsZS1iaXQiIGRvb3JiZWxsKS4KPj4+PiBUaGUgU01DIHVzZSBjYXNl IGlzIHRyaXZpYWwgdG8gaW1wbGVtZW50LCBhbmQgSSBiZWxpZXZlIHVzaW5nIHRoZSBKdW5vCj4+ Pj4gbWFpbGJveCBpcyBzaW1pbGFybHkgc2ltcGxlLCBmb3IgaW5zdGFuY2UuCj4+PiBJIGRpZCBh IGRpcmVjdCBwb3J0IGZvciBTQ1BJIHByb3RvY29sLiBJIHRoaW5rLCBpdCBpcyBzb21ldGhpbmcg dGhhdAo+Pj4gc2hvdWxkIGJlIHJldGFpbmVkIGFzIG11Y2ggYXMgcG9zc2libGUuCj4+Cj4+IEJ1 dCB0aGUgYWN0dWFsIHByb3RvY29sIGlzIHJlYWxseSBzaW1wbGUuIEFuZCB3ZSBqdXN0IG5lZWQg YSBzdWJzZXQgb2YKPj4gaXQsIG5hbWVseSB0byBxdWVyeSBhbmQgdHJpZ2dlciBPUFBzLgo+IFll cy4gSSB0aGluaywgdGhhdCAiU2Vuc29ycyBzZXJ2aWNlIiBpcyBuZWVkZWQgYXMgd2VsbC4gSSB0 aGluayB0aGF0Cj4gQ1BVRnJlcSBpcyBub3QgY29tcGxldGVkIHdpdGhvdXQgdGhlcm1hbCBmZWVk YmFjay4KClBlcnNvbmFsbHkgSSB0aGluayB0aGlzIHNob3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBT Q1BJIGZpcm13YXJlOiBpZiB0aGUKcmVxdWVzdGVkIE9QUCB3b3VsZCB2aW9sYXRlIHRoZXJtYWwg Y29uc3RyYWludCwgdGhlIGZpcm13YXJlIHdvdWxkIGp1c3QKbm90IHNldCBpdC4gQWxzbyAoc2Vj dXJlKSB0ZW1wZXJhdHVyZSBhbGFybSBpbnRlcnJ1cHRzIGNvdWxkIGxvd2VyIHRoZSBPUFAuCkRv aW5nIHRoaXMgaW4gZmlybXdhcmUgbWVhbnMgaXQgd291bGQganVzdCBuZWVkIHRvIGJlIGltcGxl bWVudGVkIG9uY2UsCmFuZCBJIGNvbnNpZGVyIHRoaXMgc3lzdGVtIGNyaXRpY2FsLCBzbyBmaXJt d2FyZSBpcyBjb25jZXB0dWFsbHkgdGhlCmJldHRlciBwbGFjZSBmb3IgdGhpcyBjb2RlLgoKPj4+ IFByb3RvY29sIHJlbGllcyBvbiBtYWlsYm94IGZlYXR1cmUsIHNvIEkgcG9ydGVkIG1haWxib3gg dG9vLiBJIHRoaW5rLAo+Pj4gaXQgd291bGQgYmUgbXVjaCBtb3JlIGVhc3kgZm9yIG1lIHRvIGp1 c3QgYWRkCj4+PiBhIGZldyByZXF1aXJlZCBjb21tYW5kcyBoYW5kbGluZyB3aXRoIGlzc3Vpbmcg U01DIGNhbGwgYW5kIHdpdGhvdXQgYW55Cj4+PiBtYWlsYm94IGluZnJhc3RydWN0dXJlIGludm9s dmVkLgo+Pj4gQnV0LCBJIHdhbnQgdG8gc2hvdyB3aGF0IGlzIGdvaW5nIG9uIGFuZCB3aGF0IHBs YWNlIHRoZXNlIHRoaW5ncyBjb21lIGZyb20uCj4+Cj4+IEkgYXBwcmVjaWF0ZSB0aGF0LCBidXQg SSB0aGluayB3ZSBhbHJlYWR5IGhhdmUgZW5vdWdoICJibG9hdGVkIiBMaW51eCArCj4+IGdsdWUg Y29kZSBpbiBYZW4uIEFuZCBpbiBwYXJ0aWN1bGFyIHRoZSBMaW51eCBtYWlsYm94IGZyYW1ld29y ayBpcyBtdWNoCj4+IG1vcmUgcG93ZXJmdWwgdGhhbiB3ZSBuZWVkIGZvciBTQ1BJLCBzbyB3ZSBo YXZlIGEgbG90IG9mIHVubmVlZGVkCj4+IGZ1bmN0aW9uYWxpdHkuCj4+IElmIHdlIGp1c3Qgd2Fu dCB0byBzdXBwb3J0IENQVWZyZXEgdXNpbmcgU0NQSSB2aWEgU01DL0p1bm8gTUhVL1JvY2tjaGlw Cj4+IG1haWxib3gsIHdlIGNhbiBnZXQgYXdheSB3aXRoIGEgKm11Y2gqIHNpbXBsZXIgc29sdXRp b24uCj4gCj4gQWdyZWUsIGJ1dCBJIGFtIGFmcmFpZCB0aGF0IHNpbXBsaWZ5aW5nIHRoaW5ncyBu b3cgbWlnaHQgbGVhZCB0byBzb21lCj4gZGlmZmljdWx0aWVzIHdoZW4gdGhlcmUgaXMgYSBuZWVk Cj4gdG8gaW50ZWdyYXRlIGEgbGl0dGxlIGJpdCBkaWZmZXJlbnQgbWFpbGJveCBJUC4gQWxzbywg d2UgbmVlZCB0bwo+IHJlY2hlY2sgaWYgU0NNSSwgd2UgbWlnaHQgd2FudCB0byBzdXBwb3J0IGFz IHdlbGwsCj4gaGF2ZSB0aGUgc2ltaWxhciBpbnRlcmZhY2Ugd2l0aCBtYWlsYm94Lgo+IAo+PiAt IFdlIHdvdWxkIG5lZWQgdG8gcG9ydCBtYWlsYm94IGRyaXZlcnMgb25lLWJ5LW9uZSBhbnl3YXks IHNvIHdlIGNvdWxkCj4+IGFzIHdlbGwgaW1wbGVtZW50IHRoZSBzaW1wbGUgInByZXNzLXRoZS1i dXR0b24iIHN1YnNldCBmb3IgZWFjaCBtYWlsYm94Cj4+IHNlcGFyYXRlbHkuIFRoZSBpbnRlcmZh Y2UgYmV0d2VlbiB0aGUgU0NQSSBjb2RlIGFuZCB0aGUgbWFpbGJveCBpcwo+PiBwcm9iYWJseSBq dXN0ICJzaWduYWxfbWFpbGJveCgpIi4gRm9yIFNNQyBpdCdzIHRyaXZpYWwsIGFuZCBmb3IgdGhl IEp1bm8KPj4gTUhVIGl0J3MgYWxzbyBzaW1wbGUsIEkgZ3Vlc3MgKFsxXSwgY2hhcHRlciAzLjYp Lgo+PiAtIFRoZSBTQ1BJIG1lc3NhZ2UgYXNzZW1ibHkgaXMgZWFzeSBhcyB3ZWxsLgo+PiAtIFRo ZSBvbmx5IG90aGVyIGNvZGUgbmVlZGVkIGlzIHNvbWUgRFQgcGFyc2luZyBjb2RlIHRvIGJlIGNv bXBhdGlibGUKPj4gd2l0aCB0aGUgZXhpc3RpbmcgRFRzIGRlc2NyaWJpbmcgdGhlIFNDUEkgaW1w bGVtZW50YXRpb24uIFdlIHdvdWxkIGNsYWltCj4+IHRvIGhhdmUgYSBtYWlsYm94IGRyaXZlciBm b3IgdGhvc2UgY29tcGF0aWJsZXMsIGJ1dCBjaGVhdCBhIGJpdCBzaW5jZSB3ZQo+PiBvbmx5IHVz ZSBpdCBmb3IgU0NQSSBhbmQganVzdCBuZWVkIHRoZSBzaW5nbGUgYml0IHN1YnNldCBvZiB0aGUg bWFpbGJveC4KPiBZZXMsIEkgdGhpbmssIHdlIGNhbiBvcHRpbWl6ZSBpbiBhIHN1Y2ggd2F5Lgo+ IAo+IEp1c3QgdG8gY2xhcmlmeToKPiBQcm9wb3NlZCAic2lnbmFsX21haWxib3giIGlzIGludGVu ZGVkIGZvciBib3RoIGFjdGlvbnM6IHNlbmRpbmcKPiByZXF1ZXN0IGFuZCByZWNlaXZpbmcgcmVz cG9uc2U/Cj4gU28gd2hlbiBpdCByZXR1cm5zIHdlIHdpbGwgaGF2ZSBlaXRoZXIgcmVzcG9uc2Ug b3IgdGltZW91dCBlcnJvciBvcgo+IHNvbWUgY2FsbGJhY2sgd2lsbCBiZSBuZWVkZWQgYW55d2F5 Pwo+IAo+IEkgZG9uJ3QgaGF2ZSBhbnkgb2JqZWN0aW9ucyByZWdhcmRpbmcgb3B0aW1pemF0aW9u cywgd2UgbmVlZCB0bwo+IGRlY2lkZSB3aGF0IG1haWxib3hlcyB3ZSBzaG91bGQgc3RpY2sgdG8g KHdlIGNhbiBzdXBwb3J0KSBhbmQgaW4gd2hhdAo+IGZvcm0gd2Ugc2hvdWxkIGtlZXAKPiBhbGwg dGhpcyBzdHVmZiBpbi4KPiBBbHNvIHdoaWxlIG1ha2luZyBhIGRlY2lzaW9uLCB3ZSBuZWVkIHRv IGtlZXAgaW4gbWluZCAiZGlyZWN0IHBvcnRlZAo+IGNvZGUiIGFkdmFudGFnZXM6Cj4gLSAiZGly ZWN0IHBvcnRlZCBjb2RlIiAoU0NQSSArIG1haWxib3gpIGhhdmUgaGFkIGEgdGhvcm91Z2ggcmV2 aWV3IGJ5Cj4gdGhlIExpbnV4IGNvbW11bml0eSBhbmQgWGVuIGNvbW11bml0eQo+ICAgbWF5IHJl bHkgb24gdGhlaXIgcmV2aWV3Lgo+IC0gQXMgImRpcmVjdCBwb3J0ZWQgY29kZSIgd2Fzbid0IGNo YW5nZWQgaGVhdmlseSwgSSBiZWxpZXZlLCBpdCB3b3VsZAo+IGJlIGVhc3kgdG8gYmFja3BvcnQg Zml4ZXMvZmVhdHVyZXMgdG8gWGVuLgoKSSB1bmRlcnN0YW5kIHRoYXQsIGJ1dCBhcyBJIHdyb3Rl IGluIHRoZSBvdGhlciBtYWlsOiBUaGlzIGlzIGEgbGVhbgpoeXBlcnZpc29yLCBub3QgYSBkcml2 ZXIgYW5kIHN1YnN5c3RlbSBkdW1wIHNpdGUuIFRoZSBzZWN1cml0eSBhc3BlY3Qgb2YKIGp1c3Qg aGF2aW5nIG11Y2ggbGVzcyBjb2RlIGlzIGNydWNpYWwgaGVyZS4KCj4gU28sIGxldCdzIGRlY2lk ZS4KPiAKPj4KPj4+IFdoYXQgaXMgbW9yZSwgSSBkb24ndCB3YW50IHRvIHJlc3RyaWN0IGEgdXNh Z2Ugb2YgdGhpcyBDUFVGcmVxIGJ5IG9ubHkKPj4+IGNvdmVyaW5nIHNpbmdsZSBzY2VuYXJpbyB3 aGVyZSBhCj4+PiBmaXJtd2FyZSwgd2hpY2ggcHJvdmlkZXMgRFZGUyBzZXJ2aWNlLCBpcyBpbiBB Uk0gVEYuIEkgaG9wZSwgdGhhdCB0aGlzCj4+PiBzb2x1dGlvbiB3aWxsIGJlIHN1aXRhYmxlIGZv ciBBUk0gU29DcyB3aGVyZSBhIHN0YW5kYWxvbmUgU0NQCj4+PiBpcyBwcmVzZW50IGFuZCByZWFs IG1haWxib3ggSVAsIHdoaWNoIGhhcyBhc3luY2hyb25vdXMgbmF0dXJlLCBpcyB1c2VkCj4+PiBm b3IgSVBDLiBPZiBjb3Vyc2UsIHRoaXMgbWFpbGJveCBtdXN0IGhhdmUgVFgvUlgtZG9uZSBpcnFz Lgo+Pj4gVGhpcyBpcyBhIGxpbWl0YXRpb24gYXQgdGhlIG1vbWVudC4KPj4KPj4gU3VyZSwgc2Vl IGFib3ZlIGFuZCB0aGUgZG9jdW1lbnQgWzFdIGJlbG93Lgo+IFRoYW5rIHlvdSBmb3IgdGhlIGxp bmssIGl0IHNlZW1zIHdpdGggTUhVIHdlIGhhdmUgdG8gcG9sbCBmb3IgdGhlCj4gbGFzdF90eF9k b25lICh3aGVyZSBkZWFzc2VydGVkIGludGVycnVwdCBsaW5lIGluIGEgc3RhdHVzIHJlZ2lzdGVy IGlzCj4gYSBjb25kaXRpb24gZm9yKQo+IGFmdGVyIHByZXNzaW5nIHRoZSBidXR0b24uIE9yIEkg bWlzc2VkIHNvbWV0aGluZz8KCkl0IGRlcGVuZHMgb24gd2hldGhlciB3ZSBjYXJlLiBXZSBjb3Vs ZCBqdXN0IHRyZWF0IHRoaXMgcmVxdWVzdCBpbiBhCmZpcmUtYW5kLWZvcmdldCBtYW5uZXIuIEkg YW0gbm90IHN1cmUgaW4gaG93IGZhciBYZW4gcmVhbGx5IG5lZWRzIHRvCmtub3cgdGhlIGFjdHVh bCBPUFAgdXNlZCBhbmQgd2hlbiBpdCdzIHJlYWR5LgoKQ2hlZXJzLApBbmRyZS4KCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1k ZXZlbAo=