KnF1b3Rlcy50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjJjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CgoKCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCgoKCQkJCQkJCSpxdW90ZXMqCkhlcmUgYXJlIHNvbWUgbmljZSBxdW90ZXMgYWJvdXQgVmltIHRoYXQgSSBjb2xsZWN0ZWQgZnJvbSBuZXdzIGFuZCBtYWlsLgoKCnZpbSAodmltKSBub3VuIC0gRWJ1bGxpZW50IHZpdGFsaXR5IGFuZCBlbmVyZ3kuICBbTGF0aW4sIGFjY3VzYXRpdmUgb2YgdmlzLApzdHJlbmd0aF0gIChEaWN0aW9uYXJ5KQoKVmltIGlzIHNvIG11Y2ggYmV0dGVyIHRoYW4gdmkgdGhhdCBhIGdyZWF0IG1hbnkgb2YgbXkgb2xkIHZpIDptYXAncyBiZWNhbWUKaW1tZWRpYXRlbHkgb2Jzb2xldGUhIChUb255IE51Z2VudCwgQXVzdHJhbGlhKQoKQ29taW5nIHdpdGggYSB2ZXJ5IEdVSSBtaW5kc2V0IGZyb20gV2luZG93cywgSSBhbHdheXMgdGhvdWdodCBvZiBwZW9wbGUgdXNpbmcKVmkgYXMgc29tZSBraW5kIG9mIG91dGVyIHNwYWNlIGFsaWVuIGluIGh1bWFuIGNsb3RoZXMuICBPbmNlIEkgdHJpZWQgSSByZWFsbHkKZ290IGFkZGljdGVkIGJ5IGl0cyBwb3dlciBhbmQgbm93IEkgZm91bmQgbXlzZWxmIHR5cGluZyBWaW0ga2V5cHJlc3NlcyBpbiB0aGUKb2RkZXN0IHBsYWNlcyEgVGhhdCdzIHdoeSBJIHdvdWxkIGxpa2UgdG8gc2VlIFZpbSBlbWJlZGRlZCBpbiBldmVyeQphcHBsaWNhdGlvbiB3aGljaCBkZWFscyB3aXRoIHRleHQgZWRpdGluZy4gIChKb3PpIEZvbnNlY2EpCgpJIHdhcyBhIDEyLXllYXIgZW1hY3MgdXNlciB3aG8gc3dpdGNoZWQgdG8gVmltIGFib3V0IGEgeWVhciBhZ28gYWZ0ZXIgZmluYWxseQpnaXZpbmcgdXAgb24gdGhlIG11bHRpcGxlIGluY29tcGF0aWJsZSB2ZXJzaW9ucywgZmxha3kgY29udHJpYnV0ZWQgcGFja2FnZXMsCmRpc29yZ2FuaXplZCBrZXlzdHJva2VzLCBldGMuICBBbmQgaXQgd2FzIG9uZSBvZiB0aGUgYmVzdCBtb3ZlcyBJIGV2ZXIgbWFkZS4KKEpvZWwgQnVydG9uKQoKQWx0aG91Z2ggYWxsIG9mIHRoZSBwcm9ncmFtcyB3ZXJlIHVzZWQgZHVyaW5nIHRoZSBwcmVwYXJhdGlvbiBvZiB0aGUgbmV3IGFuZApyZXZpc2VkIG1hdGVyaWFsLCBtb3N0IG9mIHRoZSBlZGl0aW5nIHdhcyBkb25lIHdpdGggVmltIHZlcnNpb25zIDQuNSBhbmQgNS4wCnVuZGVyIEdOVS1MaW51eCAoUmVkaGF0IDQuMikuICAoQXJub2xkIFJvYmJpbnMsIElzcmFlbCwgYXV0aG9yIG9mICJMZWFybmluZwp0aGUgVmkgZWRpdG9yIikKCk91dCBvZiBhbGwgdGhlIG9wZW4gc29mdHdhcmUgaSd2ZSBldmVyIHNlZW4gYW5kIHVzZWQsIGFuZCBpJ3ZlIHNlZW4gYSBsb3QsIFZpbQppcyB0aGUgYmVzdCwgbW9zdCB1c2VmdWwgYW5kIGhpZ2hlc3QgcXVhbGl0eSB0byB3b3JrIHdpdGgsIHNlY29uZCBvbmx5IHRvIHRoZQpsaW51eCBrZXJuZWwgaXRzZWxmLiAgKFBldGVyIEpheSBTYWx6bWFuKQoKSXQncyB3ZWxsIHdvcnRoIG5vdGluZyB0aGF0IHRoZSBfZW50aXJldHlfIG9mIFNvdXJjZUZvcmdlIHdhcyB3cml0dGVuIHVzaW5nClZpbSBhbmQgaXRzIG5pZnR5IFBIUCBzeW50YXggaGlnaGxpZ2h0aW5nLiAgSSB0aGluayB0aGUgZW50aXJlIFNGLm5ldCB0ZWNoCnN0YWZmIHVzZXMgVmltIGFuZCB3ZSdyZSBhbGwgZXhjaXRlZCB0byBoYXZlIHlvdSBhYm9hcmQhIChUaW0gUGVyZHVlKQoKVmltIGlzIG9uZSBvZiBhIHNlbGVjdCBidW5jaCBvZiB0b29scyBmb3Igd2hpY2ggSSBoYXZlIG5vIHN1YnN0aXR1dGUuICBJdCBpcwphIGJyaWxsaWFudCBwaWVjZSBvZiB3b3JrISAoQmlqdSBDaGFja28pCgpBIHByZXZpb3VzIGdpcmxmcmllbmQgb2YgbWluZSBzd2l0Y2hlZCB0byBlbWFjcy4gIE5lZWRsZXNzIHRvIHNheSwgdGhlCnJlbGF0aW9uc2hpcCB3ZW50IG5vd2hlcmUuICAoR2VvZmZyZXkgTWFubikKCkkgcmFyZWx5IHRoaW5rIGFib3V0IFZpbSwgaW4gdGhlIHNhbWUgd2F5IHRoYXQgSSBndWVzcyBhIGZpc2ggcmFyZWx5IHRoaW5rcwphYm91dCB3YXRlci4gIEl0J3MgdGhlIGVudmlyb25tZW50IGluIHdoaWNoIGV2ZXJ5dGhpbmcgZWxzZSBoYXBwZW5zLiAgSSdtIGEKZmFpcmx5IGJ1c3kgc3lzdGVtIGFkbWluaXN0cmF0b3Igd29ya2luZyBvbiBhIGxvdCBvZiBkaWZmZXJlbnQgcGxhdGZvcm1zLiAgVmltCmlzIHRoZSBvbmx5IHRoaW5nIHRoYXQncyBjb25zaXN0ZW50IGFjcm9zcyBhbGwgbXkgc3lzdGVtcywgYW5kIGl0J3MganVzdCBhYm91dAp0aGUgb25seSB0aGluZyB0aGF0IGRvZXNuJ3QgYnJlYWsgZnJvbSB0aW1lIHRvIHRpbWUuICBXaGVuIGEgbmV3IHN5c3RlbSBjb21lcwppbiB0aGUgZG9vciB3aXRob3V0IFZpbSwgSSBpbnN0YWxsIGl0IHJpZ2h0IGF3YXkuICBHcmVhdCB0byBoYXZlIGEgdG9vbCB0aGF0J3MKdGhlIHNhbWUgZXZlcnl3aGVyZSwgdGhhdCdzIGNvbXBsZXRlbHkgcmVsaWFibGUsIHNvIEkgY2FuIGlnbm9yZSBpdCBhbmQgdGhpbmsKYWJvdXQgb3RoZXIgdGhpbmdzLiAgKFBldGUgU2NoYWVmZmVyKQoKSGF2aW5nIHJlY2VudGx5IHN1Y2NlZWRlZCBpbiBydW5uaW5nIFZpbSB2aWEgdGVsbmV0IHRocm91Z2ggYSBOb2tpYQpDb21tdW5pY2F0b3IsIEkgY2FuIG5vdyByZXBvcnQgdGhhdCBpdCB3b3JrcyBuaWNlbHkgb24gYSBQYWxtIFBpbG90IHRvby4KKEFsbGFuIEtlbGx5LCBTY290bGFuZCkKCllvdSd2ZSBkb25lIGEgdHJlbWVuZG91cyBqb2Igd2l0aCAnVklNJywgQnJhbSEgIFRoZSBtb3JlIEkgdXNlIGl0LCB0aGUgbW9yZQppbXByZXNzZWQgSSBnZXQgKEkgYW0gYW4gb2xkICd2aScgZGllIGhhcmQgd2hvIG9uY2Ugc3RhcnRlZCBvdXQgd2l0aCBlYXJseQp2ZXJzaW9ucyBvZiAnZW1hY3MnIGluIHRoZSBsYXRlIDE5NzAncyBhbmQgd2FzIHJlbGlldmVkIGJ5IGZpbmRpbmcgJ3ZpJyBpbiB0aGUKZmlyc3QgVU5JWCBJIGNhbWUgYWNyb3NzIGluIDE5ODMpLiAgSW4gbXkgb3BpbmlvbiwgaXQncyBhYm91dCB0aW1lICdWSU0nCnJlcGxhY2UgJ2VtYWNzJyBhcyB0aGUgc3RhbmRhcmQgZm9yIHRvcCBlZGl0b3JzLiAgKEJvIFRoaWRlJywgU3dlZGVuKQoKSSBsb3ZlIGFuZCB1c2UgVklNIGhlYXZpbHkgdG9vLiAgKExhcnJ5IFdhbGwpCgpWaSBpcyBsaWtlIGEgRmVycmFyaSwgaWYgeW91J3JlIGEgYmVnaW5uZXIsIGl0IGhhbmRsZXMgbGlrZSBhIGJpdGNoLCBidXQgb25jZQp5b3UgZ2V0IHRoZSBoYW5nIG9mIGl0LCBpdCdzIHNtYWxsLCBwb3dlcmZ1bCBhbmQgRkFTVCEgKFVua25vd24pClZJTSBpcyBsaWtlIGEgbmV3IG1vZGVsIEZlcnJhcmksIGFuZCBzb3VuZHMgbGlrZSBvbmUgdG9vIC0gIlZJSUlJSUlNTU0hIgooU3RlcGhlbiBSaWVobSwgR2VybWFueSkKClNjaG9uIGJlaSBOdXR6dW5nIGVpbmVzIEJydWNodGVpbHMgZGVyIFZJTS1GdW5rdGlvbmVuIHdpcmQgZGVyIEJlbnV0emVyIHJlY2h0CnNjaG5lbGwgZGllIFZvcnp1ZWdlIGRpZXNlcyBFZGl0b3JzIGtlbm5lbi0gdW5kIHNjaGFldHplbmxlcm5lbi4KVHJhbnNsYXRlZDogRXZlbiB3aGVuIG9ubHkgdXNpbmcgYSBmcmFjdGlvbiBvZiBWSU0tZnVuY3Rpb25zLCB0aGUgdXNlciB3aWxsCnF1aWNrbHkgZ2V0IHVzZWQgdG8gYW5kIGFwcHJlY2lhdGUgdGhlIGFkdmFudGFnZXMgb2YgdGhpcyBlZGl0b3IuICAoR2FycnkKR2xlbmRvd24sIGNvbmNsdXNpb24gb2YgYW4gYXJ0aWNsZSBvbiBWSU0gaW4gaVggbWFnYXppbmUgOS8xOTk4KQoKSSd2ZSByZWNlbnRseSBhY3F1aXJlZCB0aGUgTydSZWlsbHkgYm9vayBvbiBWSSAoaXQgYWxzbyBkaXNjdXNzZXMgVklNCmluLWRlcHRoKSwgYW5kIEknbSBhbWF6ZWQgYXQganVzdCBob3cgcG93ZXJmdWwgdGhpcyBhcHBsaWNhdGlvbiBpcy4gIChKZWZmcmV5ClJhbmtpbikKClRoaXMgZ3VpZGUgd2FzIHdyaXR0ZW4gdXNpbmcgdGhlIFdpbmRvd3MgOS54IGRpc3RyaWJ1dGlvbiBvZiBHVklNLCB3aGljaCBpcwpxdWl0ZSBwb3NzaWJseSB0aGUgZ3JlYXRlc3QgdGhpbmcgdG8gY29tZSBhbG9uZyBzaW5jZSBHb2QgY3JlYXRlZCB0aGUgbmFrZWQKZ2lybC4gIChNaWNoYWVsIERpQmVybmFyZG8pCgpCb3ksIEkgdGhvdWdodCBJIGtuZXcgYWxtb3N0IGV2ZXJ5dGhpbmcgYWJvdXQgVklNLCBidXQgZXZlcnkgdGltZSBJIGJyb3dzZSB0aGUKb25saW5lIGRvY3VtZW50YXRpb24sIEkgaGl0IHVwb24gYSBtaW5vciBidXQgY29vbCBhc3BlY3Qgb2YgYSBWSU0gZmVhdHVyZSB0aGF0CkkgZGlkbid0IGtub3cgYmVmb3JlISAgSSBtdXN0IHNheSB0aGUgZG9jdW1lbnRhdGlvbiBpcyBvbmUgdGhlIGZpbmVzdCBJJ3ZlCmV2ZXIgc2VlbiBpbiBhIHByb2R1Y3QgLS0gZXZlbiBiZXR0ZXIgdGhhbiBtb3N0IGNvbW1lcmNpYWwgcHJvZHVjdHMuCihHYXV0YW0gTXVkdW51cmkpCgpWSU0gNC41IGlzIHJlYWxseSBhIGZhbnRhc3RpYyBlZGl0b3IuICBJdCBoYXMgc29vb29vIG1hbnkgZmVhdHVyZXMgYW5kIG1vcmUKaW1wb3J0YW50bHksIHRoZSBkZWZhdWx0cyBhcmUgc28gd2VsbCB0aG91Z2h0IG91dCB0aGF0IHlvdSByZWFsbHkgZG9uJ3QgaGF2ZQp0byBjaGFuZ2UgYW55dGhpbmchISAgV29yZHMgY2Fubm90IGV4cHJlc3MgbXkgYW1hemVtZW50IGFuZCBncmF0aXR1ZGUgdG8gdGhlCmNyZWF0b3JzIG9mIFZJTS4gIEtlZXAgaXQgdXAuICAoVmlrYXMsIFVTQSkKCkkgd29uZGVyIGhvdyBsb25nIGl0IHdpbGwgYmUgYmVmb3JlIHBlb3BsZSB3aWxsIHJlZmVyIHRvIG90aGVyIFZpIGVkaXRvcnMgYXMKVklNIGNsb25lcz8gIChEYXJyZW4gSGllYmVydCkKCkkgcmVhZCBhYm91dCBbYXV0by1wb3NpdGlvbmluZy1pbi1maWxlLWJhc2VkLW9uLXRoZS1lcnJvcnMtZnJvbS1tYWtlXSBpbiBvbmUKb2YgdGhvc2UgIlBlcmZlY3QgUHJvZ3JhbW1lcidzIEVkaXRvciIgdGhyZWFkcyBhbmQgd2FzIGRlbGlnaHRlZCB0byBkaXNjb3Zlcgp0aGF0IFZJTSBhbHJlYWR5IHN1cHBvcnRzIGl0LiAgKEJyZW5kYW4gTWFjbWlsbGFuLCBBdXN0cmFsaWEpCgpJIGp1c3QgZGlzY292ZXJlZCBWSU0gKDUuMCkgYW5kIEknbSB0ZWxsaW5nIGV2ZXJ5b25lIEkga25vdyBhYm91dCBpdCEKSSB0ZWxsIHRoZW0gVklNIHN0YW5kcyBmb3IgVkkgZm9yIHRoZSBuZXcgKE0paWxsZW5pdW0uICBUaGFua3Mgc28gbXVjaCEKKE1hdHQgRi4gVmFsZW50aW5lKQoKSSB0aGluayBmcm9tIG5vdyBvbiAidmkiIHNob3VsZCBiZSBjYWxsZWQgIlZpbSBJbWl0YXRpb24iLCBub3QgdGhlIG90aGVyIHdheQphcm91bmQuICAoUnVuZ3VuIFJhbWFuYXRoYW4pCgpUaGUgTGF3IG9mIFZJTToKRm9yIGVhY2ggbWVtYmVyIGIgb2YgdGhlIHBvc3NpYmxlIGJlaGF2aW91ciBzcGFjZSBCIG9mIHByb2dyYW0gUCwgdGhlcmUgZXhpc3RzCmEgZmluaXRlIHRpbWUgdCBiZWZvcmUgd2hpY2ggYXQgbGVhc3Qgb25lIHVzZXIgdSBpbiB0aGUgdG90YWwgdXNlciBzcGFjZSBVIG9mCnByb2dyYW0gUCB3aWxsIHJlcXVlc3QgYiBiZWNvbWVzIGEgbWVtYmVyIG9mIHRoZSBhbGxvd2VkIGJlaGF2aW91ciBzcGFjZSBCJwooQicgPD0gQikuCkluIG90aGVyIHdvcmRzOiBTb29uZXIgb3IgbGF0ZXIgZXZlcnlvbmUgd2FudHMgZXZlcnl0aGluZyBhcyBhbiBvcHRpb24uCihOZWdyaSkKCldoZW5ldmVyIEkgbW92ZSB0byBhIG5ldyBjb21wdXRpbmcgcGxhdGZvcm0sIHRoZSBmaXJzdCB0aGluZyBJIGRvIGlzIHRvIHBvcnQKVklNLiAgTGF0ZWx5LCBJIGFtIHNpbXBseSBzdHVubmVkIGJ5IGl0cyBlYXNlIG9mIGNvbXBpbGF0aW9uIHVzaW5nIHRoZQpjb25maWd1cmUgZmFjaWxpdHkuICAoQS5NLiBTYWJ1bmN1LCBUdXJrZXkpCgpUaGUgb3B0aW9ucyBhcmUgcmVhbGx5IGV4Y2VsbGVudCBhbmQgdmVyeSBwb3dlcmZ1bC4gIChBbmlzaCBNYWhhcmFqKQoKVGhlIFNwcmluZyB1c2VyLWludGVyZmFjZSBkZXNpZ25zIGFyZSBpbiwgYW5kIHdvcmQgZnJvbSB0aGUgYm91dGlxdWVzIGlzIHRoYXQKODB4MjQgdGV4dC1vbmx5IG1vZGUgaXMgYmFjayB3aXRoIGEgKnZlbmdlYW5jZSEgVmkgZWRpdG9yIGNsb25lIFZJTSBidXJzdCBvbnRvCk1hcmNoIGRlc2stdG9wcyB3aXRoIGEgZGF6emxpbmcgc2hvdyBvZiBwYXN0ZWwgc3ludGF4IGhpZ2hsaWdodHMgZm9yIGl0cyA1LjAKbG9vay4gIFN0cmlkZW50IGFuZCBjdXN0b21pemFibGUsIFZJTSByYWlzZXMgZXllYnJvd3Mgd2l0aCBpdHMgaW50ZXJwcmV0YXRpb24Kb2YgdGhlIGNsYXNzaWMgVmkgc2luZ2xlLWtleSBtYWNybyBjb2xsZWN0aW9uLgpodHRwOi8vd3d3Lm50ay5uZXQvaW5kZXguY2dpP2JhY2s9YXJjaGl2ZTk4L25vdzAzMjcudHh0JmxpbmU9MTc5I2wKCkkganVzdCB3YW50ZWQgdG8gdGFrZSB0aGlzIG9wcG9ydHVuaXR5IHRvIGxldCB5b3Uga25vdyB0aGF0IFZJTSA1IFJPQ0tTIQpTeW50YXggaGlnaGxpZ2h0aW5nOiBob3cgZGlkIEkgc3Vydml2ZSB3aXRob3V0IGl0PyEgIFRoYW5rIHlvdSBmb3IgY3JlYXRpbmcKbWFua2luZCdzIGJlc3QgZWRpdG9yISAgKE11biBKb2hsLCBVU0EpCgpUaGFua3MgYWdhaW4gZm9yIFZJTS4gIEkgdXNlIGl0IGV2ZXJ5IGRheSBvbiBMaW51eC4gIChFcmljIEZvc3Rlci1Kb2huc29uLAphdXRob3Igb2YgdGhlIGJvb2sgIlVOSVggUHJvZ3JhbW1pbmcgVG9vbHMiKQoKVGhlIEJFU1QgRURJVE9SIEVWRVIgKFN0dWFydCBXb29sZm9yZCkKCkkgaGF2ZSB1c2VkIG1vc3Qgb2YgVklNJ3MgZmFuY3kgZmVhdHVyZXMgYXQgbGVhc3Qgb25jZSwgbWFueSBmcmVxdWVudGx5LCBhbmQgSQpjYW4gaG9uZXN0bHkgc2F5IHRoYXQgSSBjb3VsZG4ndCBsaXZlIHdpdGggYW55dGhpbmcgbGVzcyBhbnltb3JlLiAgTXkKcHJvZHVjdGl2aXR5IGhhcyBlYXNpbHkgZG91YmxlZCBjb21wYXJlZCB0byB3aGF0IGl0IHdhcyB3aGVuIEkgdXNlZCB2aS4KKFNpdGFyYW0gQ2hhbWFydHkpCgpJIGx1diBWSU0uICBJdCBpcyBpbmNyZWRpYmxlLiAgSSdtIG5hbWluZyBteSBmaXJzdC1ib3JuIFZpbWJlcmx5LiAgKEpvc2UKVW5waW5nY28sIFVTQSkKCkhpbnQ6ICAiVklNIiBpcyAidmkgaW1wcm92ZWQiIC0gbXVjaCBiZXR0ZXIhIChTdmVuIEd1Y2tlcywgR2VybWFueSkKCkkgdXNlIFZJTSBldmVyeSBkYXkuICBJIHNwZW5kIG1vcmUgdGltZSBpbiBWSU0gdGhhbiBpbiBhbnkgb3RoZXIgcHJvZ3JhbS4uLgpJdCdzIHRoZSBiZXN0IHZpIGNsb25lIHRoZXJlIGlzLiAgSSB0aGluayBpdCdzIGdyZWF0LiAgKENyYWlnIFNhbmRlcnMsCkF1c3RyYWxpYSkKCkkgc3Ryb25nbHkgYWR2aXNlIHVzaW5nIFZJTS0taXRzIGluZmluaXRlIHVuZG8vcmVkbyBzYXZlZCBtZSBtdWNoIGdyaWVmLgooVGVycnkgQnJvd24pCgpUaGFua3MgdmVyeSBtdWNoIGZvciB3cml0aW5nIHdoYXQgaW4gbXkgb3BpbmlvbiBpcyB0aGUgZmluZXN0IHRleHQgZWRpdG9yIG9uCnRoZSBwbGFuZXQuICBJZiBJIHdlcmUgdG8gZ2V0IGFub3RoZXIgY2F0LCBJIHdvdWxkIG5hbWUgaXQgIlZpbSIuCihCb2IgU2hlZWhhbiwgVVNBKQoKSSB0eXBlZCA6c2V0IGFsbCBhbmQgdGhlIHNjcmVlbiBGSUxMRUQgdXAgd2l0aCBvcHRpb25zLiAgQSB3aG9sZSBzY3JlZW4gb2YKdGhpbmdzIHRvIGJlIHNldCBhbmQgdW5zZXQuICBJIHNhdyBzb21lIG9mIG15IG9sZCBmcmllbmRzIGxpa2Ugd3JhcG1hcmdpbiwKbW9kZWxpbmVzIGFuZCBzaG93bW9kZSwgYnV0IHRoZSBzY3JlZW4gd2FzIEZJTExFRCB3aXRoIG5ldyBmcmllbmRzISAgIEkgbG92ZQp0aGVtIGFsbCEgICBJIGxvdmUgVklNISAgIEknbSBzbyBoYXBweSB0aGF0IEkndmUgZm91bmQgdGhpcyBlZGl0b3IhICBJIGZlZWwKbGlrZSBob3cgSSBvbmNlIGZlbHQgd2hlbiBJIHN0YXJ0ZWQgdXNpbmcgdmkgYWZ0ZXIgYSBjb3VwbGUgb2YgeWVhcnMgb2YgdXNpbmcKZWQuICBJIG5ldmVyIHRob3VnaHQgSSdkIGZvcnNha2UgbXkgYmVsb3ZlZCBlZCwgYnV0IHZpIC4uLiBvaCBnb2QsIHZpIHdhcwpncmVhdC4gIEFuZCBub3csIFZJTS4gIChQZXRlciBKYXkgU2Fsem1hbiwgVVNBKQoKSSBhbSByZWFsbHkgaGFwcHkgd2l0aCBzdWNoIGEgd29uZGVyZnVsIHNvZnR3YXJlIHBhY2thZ2UuICBNdWNoIGJldHRlciB0aGFuCmFsbW9zdCBhbnkgZXhwZW5zaXZlLCBvZmYgdGhlIHNoZWxmIHByb2dyYW0uICAoSmVmZiBXYWxrZXIpCgpXaGVuZXZlciBJIHJlcmVhZCB0aGUgVklNIGRvY3VtZW50YXRpb24gSSdtIG92ZXJjb21lIHdpdGggZXhjaXRlbWVudCBhdCB0aGUKcG93ZXIgb2YgdGhlIGVkaXRvci4gIChXaWxsaWFtIEVkd2FyZCBXZWJiZXIsIEF1c3RyYWxpYSkKCkh1cnJhaCBmb3IgVklNISEgSXQgaXMgImF0IHlvdXIgZmluZ2VydGlwcyIgbGlrZSB2aSwgYW5kIGhhcyB0aGUgZXh0ZW5zaW9ucwp0aGF0IHZpIHNvcmVseSBuZWVkczogaGlnaGxpZ2h0aW5nIGZvciBleGVjdXRpbmcgY29tbWFuZHMgb24gYmxvY2tzLCBhbiBlYXNpbHkKbmF2aWdhYmxlIGFuZCBkaWdlc3RpYmxlIGhlbHAgc2NyZWVuLCBhbmQgbW9yZS4gIChQYXVsIFBheCkKClRoZSByZWFzb24gV0hZIEkgZG9uJ3QgaGF2ZSB0aGlzIGFtYXppbmdseSB1c2VmdWwgbWFjcm8gYW55IG1vcmUsIGlzIHRoYXQgSQpub3cgdXNlIFZJTSAtIGFuZCB0aGlzIGlzIGJ1aWx0IGluISEgKFN0ZXBoZW4gUmllaG0sIEdlcm1hbnkpCgpJIGFtIGEgdXNlciBvZiBWSU0gYW5kIEkgbG92ZSBpdC4gIEkgdXNlIGl0IHRvIGRvIGFsbCBteSBwcm9ncmFtbWluZywgQywKQysrLCBIVE1MIHdoYXQgZXZlci4gIChUaW0gQWxsd2luZSkKCkkgZGlzY292ZXJlZCBWSU0gYWZ0ZXIgeWVhcnMgb2Ygc3RydWdnbGluZyB3aXRoIHRoZSBvcmlnaW5hbCB2aSwgYW5kIEkganVzdApjYW4ndCBsaXZlIHdpdGhvdXQgaXQgYW55IG1vcmUuICAoRW1tYW51ZWwgTW9nZW5ldCwgVVNBKQoKRW1hY3MgaGFzIG5vdCBhIGJpdCBvZiBjaGFuY2UgdG8gc3Vydml2ZSBzbyBsb25nIGFzIFZJTSBpcyBhcm91bmQuICBCZXNpZGVzLAppdCBhbHNvIGhhcyB0aGUgbW9zdCBkZXRhaWxlZCBzb2Z0d2FyZSBkb2N1bWVudGF0aW9uIEkgaGF2ZSBldmVyIHNlZW4tLS1tdWNoCmJldHRlciB0aGFuIG1vc3QgY29tbWVyY2lhbCBzb2Z0d2FyZSEgIChMZWltaW5nIFFpYW4pCgpUaGlzIHZlcnNpb24gb2YgVklNIHdpbGwganVzdCBibG93IHBlb3BsZSBhcGFydCB3aGVuIHRoZXkgZGlzY292ZXIganVzdCBob3cKZmFudGFzdGljIGl0IGlzISAoVG9ueSBOdWdlbnQsIEF1c3RyYWxpYSkKCkkgdG9vayB5b3VyIGFkdmljZSAmIGZpbmFsbHkgZ290IFZJTSAmIEknbSByZWFsbHkgaW1wcmVzc2VkLiAgSW5zdGFudCBjb252ZXJ0LgooUGF0cmljayBLaWxsZWxlYSwgVVNBKQoKVklNIGlzIGJ5IGZhciBteSBmYXZvcml0ZSBwaWVjZSBvZiBzaGFyZXdhcmUgYW5kIEkgaGF2ZSBiZWVuIHBhcnRpY3VsYXJseQpwbGVhc2VkIHdpdGggdmVyc2lvbiAzLjAuICBUaGlzIGlzIHJlYWxseSBhIHNvbGlkIHBpZWNlIG9mIHdvcmsuICAoUm9iZXJ0CkNvbG9uLCBVU0EpCgpWSU0gaXMgYSBqb3kgdG8gdXNlLCBpdCBpcyBzbyB3ZWxsIHRob3VnaHQgYW5kIHByYWN0aWNhbCB0aGF0IEkgd29uZGVyIHdoeQphbnlib2R5IHdvdWxkIHVzZSB2aXN1YWwgZGV2ZWxvcG1lbnQgdG9vbHMuICBWSU0gaXMgcG93ZXJmdWwgYW5kIGVsZWdhbnQsIGl0Cmxvb2tzIGRlY2VwdGl2ZWx5IHNpbXBsZSBidXQgaXMgYWxtb3N0IGFzIGNvbXBsZXggYXMgYSA3NDcgKGVzcGVjaWFsbHkgd2hlbiBJCmxvb2sgYXQgbXkgZ3Jvd2luZyAudmltcmMpLCBrZWVwIHVwIHRoYXQgd29uZGVyZnVsIGpvYiwgVklNIGlzIGEgY2VudGVycGllY2UKb2YgdGhlIGZyZWUgc29mdHdhcmUgd29ybGQuICAoTG91aXMtRGF2aWQgTWl0dGVyYW5kLCBVU0EpCgpJIGNhbm5vdCBiZWxpZXZlIGhvdyBncmVhdCBpdCBpcyB0byB1c2UgVklNLiAgSSB0aGluayB0aGUgZ3V5cyBhdCB3b3JrIGFyZQpnZXR0aW5nIHRpcmVkIG9mIGhlYXJpbmcgbWUgYnJhZ2dpbmcgYWJvdXQgaXQuICBPdGhlcnMgZXllcyBhcmUgbGlnaHRpbmcgdXAuCihSaWNrIENyb290ZSkKCkVtYWNzIHRha2VzIHdheSB0byBtdWNoIHRpbWUgdG8gc3RhcnQgdXAgYW5kIHJ1biwgaXQgaXMgdG8gYmlnIGFuZCBidWxreSBmb3IKZWZmZWN0aXZlIHVzZSBhbmQgdGhlIGludGVyZmFjZSBpcyBtb3JlIGNvbmZ1c2luZyB0aGFuIGl0IGlzIG9mIGFueSBoZWxwLiAgVklNCmhvd2V2ZXIgaXMgc2hvcnQsIGl0IGlzIGZhc3QsIGl0IGlzIHBvd2VyZnVsLCBpdCBoYXMgYSBnb29kIGludGVyZmFjZSBhbmQgaXQKaXMgYWxsIHB1cnBvc2UuICAoUGFhbCBEaXRsZWZzZW4gRWtyYW4pCgpGcm9tIHRoZSBmaXJzdCB0aW1lIEkgZ290IFZJTTMuMCwgSSB3YXMgdmVyeSBlbnRodXNpYXN0aWMuICBJdCBoYXMgYWxtb3N0IG5vCnByb2JsZW1zLiAgVGhlIHN3YXBmaWxlIGhhbmRsaW5nIGFuZCB0aGUgYmFja3VwIHBvc3NpYmlsaXRpZXMgYXJlIHJvYnVzdCwgYWxzbwp0aGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGVkaXRpbmcgb25lIGZpbGUgdHdpY2UuICBJdCBpcyB2ZXJ5IGNvbXBhdGlibGUgdG8gdGhlCnJlYWwgVkkgKGFuZCB0aGF0IGlzIGEgTVVTVCwgYmVjYXVzZSBteSBicmFpbiBpcyB0cmFpbmVkIG92ZXIgeWVhcnMgaW4gdXNpbmcKaXQpLiAgKEdlcnQgdmFuIEFudHdlcnBlbiwgSG9sbGFuZCkKClZpc3VhbCBtb2RlIGluIFZJTSBpcyBhIHZlcnkgcG93ZXJmdWwgdGhpbmchIChUb255IE51Z2VudCwgQXVzdHJhbGlhKQoKSSBoYXZlIHRvIHNheSB0aGF0IFZJTSBpcyA9VEhFPSBzaW5nbGUgZ3JlYXRlc3QgcGllY2Ugb2Ygc291cmNlIGNvZGUgdG8gZXZlcgpjb21lIGFjcm9zcyB0aGUgbmV0IChKaW0gQmF0dGxlLCBVU0EpLgoKSW4gZmFjdCwgaWYgeW91IGRvIHdhbnQgdG8gZ2V0IGEgbmV3IHZpIEknZCBzdWdnZXN0IFZJTS0zLjAuICBUaGlzIGlzLCBieQpmYXIsIHRoZSBiZXN0IHZlcnNpb24gb2YgdmkgSSd2ZSBldmVyIHNlZW4gKEFsYmVydCBXLiBTY2h1ZWxsZXIpLgoKSSBzaG91bGQgbWVudGlvbiB0aGF0IFZJTSBpcyBhIHZlcnkgZ29vZCBlZGl0b3IgYW5kIGNhbiBjb21wZXRlIHdpdGggYW55dGhpbmcKKElseWEgQmVsb296ZXJvdikuCgpUbyB0ZWxsIHRoZSB0cnV0aCBzb21ldGltZXMgSSB1c2VkIGVsdmlzLCB2aWxlLCB4dmksIGNhbHZpbiwgZXRjLiAgQW5kIHRoaXMgaXMKdGhlIHJlYXNvbiB0aGF0IEkgY2FuIHN0YXRlIHRoYXQgVklNIGlzIHRoZSBiZXN0ISAoRmVyZW5jIERlYWssIEh1bmdhcnkpCgpWSU0gaXMgYnkgZmFyIHRoZSBiZXN0IGVkaXRvciB0aGF0IEkgaGF2ZSB1c2VkIGluIGEgbG9uZyB0aW1lLCBhbmQgSSBoYXZlCmxvb2tlZCBhdCBqdXN0IGFib3V0IGV2ZXJ5IHRoaW5nIHRoYXQgaXMgYXZhaWxhYmxlIGZvciBldmVyeSBwbGF0Zm9ybSB0aGF0IEkKdXNlLiAgVklNIGlzIHRoZSBiZXN0IG9uIGFsbCBvZiB0aGVtLiAgKEd1eSBMLiBPbGl2ZXIpCgpWSU0gaXMgdGhlIGdyZWF0ZXN0IGVkaXRvciBzaW5jZSB0aGUgc3RvbmUgY2hpc2VsLiAgKEpvc2UgVW5waW5nY28sIFVTQSkKCkkgd291bGQgbGlrZSB0byBzYXkgdGhhdCB3aXRoIFZJTSBJIGFtIGZpbmFsbHkgbWFraW5nIHRoZSAnZW1hY3MgdG8gdmknCnRyYW5zaXRpb24gLSBhcyBhbiBFZGl0b3IgaXQgaXMgc28gbXVjaCBiZXR0ZXIgaW4gbWFueSB3YXlzOiBrZXlib2FyZCBsYXlvdXQsCm1lbW9yeSB1c2FnZSwgdGV4dCBhbHRlcmF0aW9uIHRvIG5hbWUgMy4gIChNYXJrIEFkYW0pCgpJbiBmYWN0LCBub3cgaWYgSSB3YW50IHRvIGtub3cgd2hhdCBhIHBhcnRpY3VsYXIgc2V0dGluZyBkb2VzIGluIHZpLCBJIGZpcmUgdXAKVklNIGFuZCBjaGVjayBvdXQgaXQncyBoZWxwISAgKE5pa2hpbCBQYXRlbCwgVVNBKQoKQXMgYSB2aSB1c2VyLCBWSU0gaGFzIG1hZGUgd29ya2luZyB3aXRoIHRleHQgYSBmYXIgbW9yZSBwbGVhc2FudCB0YXNrIHRoYW4KYmVmb3JlIEkgZW5jb3VudGVyZWQgdGhpcyBwcm9ncmFtLiAgKFN0ZWluYXIgS251dHNlbiwgTm9yd2F5KQoKSSB1c2UgVklNIHNpbmNlIHZlcnNpb24gMy4wLiAgU2luY2UgdGhhdCB0aW1lLCBpdCBpcyB0aGUgT05MWSBlZGl0b3IgSSB1c2UsCndpdGggU29sYXJpcywgTGludXggYW5kIE9TLzIgV2FycC4gIEkgc3VnZ2VzdCBhbGwgbXkgZnJpZW5kcyB0byB1c2UgVklNLCB0aGV5CnRyeSwgYW5kIHRoZXkgY29udGludWUgdXNpbmcgaXQuICBWSU0gaXMgcmVhbGx5IHRoZSBiZXN0IHNvZnR3YXJlIEkgaGF2ZSBldmVyCmRvd25sb2FkZWQgZnJvbSB0aGUgSW50ZXJuZXQsIGFuZCB0aGUgYmVzdCBlZGl0b3IgSSBrbm93IG9mLiAgKE1hcmNvCkVjY2V0dHVhdG8sIEl0YWx5KQoKCkluIHN1bW1hcnk6CiAgICAgX18gICAgIF9fXwkJICAgIF8JICAgIF8JXyAgX19fIF9fX19fCiAgICAgXCBcICAgLyAoXylfIF9fIF9fXyAgIChfKV9fXyAgfCB8IHwgfC8gXyBcXyAgIF98CiAgICAgIFwgXCAvIC98IHwgJ18gYCBfIFwgIHwgLyBfX3wgfCB8X3wgfCB8IHwgfHwgfAogICAgICAgXCBWIC8gfCB8IHwgfCB8IHwgfCB8IFxfXyBcIHwgIF8gIHwgfF98IHx8IHwKCVxfLyAgfF98X3wgfF98IHxffCB8X3xfX18vIHxffCB8X3xcX19fLyB8X3wKCSAgICAgX19fXyBfX19fXyBfICAgXyBfX19fXyBfX19fXyBfIF8KCSAgICAvIF9fX3xfICAgX3wgfCB8IHwJX19ffCAgX19ffCB8IHwKCSAgICBcX19fIFwgfCB8IHwgfCB8IHwgfF8gIHwgfF8gIHwgfCB8CgkgICAgIF9fXykgfHwgfCB8IHxffCB8CV98IHwgIF98IHxffF98CgkgICAgfF9fX18vIHxffAlcX19fL3xffCAgIHxffAkgKF98XykJICAgICAgKFRvbnkgTnVnZW50LCBBdXN0cmFsaWEpCgogdmltOnR3PTc4OnRzPTg6ZnQ9aGVscDpub3JsOgo=