KnF1b3Rlcy50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjIuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKCgoJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKCgoJCQkJCQkJKnF1b3RlcyoKSGVyZSBhcmUgc29tZSBuaWNlIHF1b3RlcyBhYm91dCBWaW0gdGhhdCBJIGNvbGxlY3RlZCBmcm9tIG5ld3MgYW5kIG1haWwuCgoKdmltICh2aW0pIG5vdW4gLSBFYnVsbGllbnQgdml0YWxpdHkgYW5kIGVuZXJneS4gIFtMYXRpbiwgYWNjdXNhdGl2ZSBvZiB2aXMsCnN0cmVuZ3RoXSAgKERpY3Rpb25hcnkpCgpWaW0gaXMgc28gbXVjaCBiZXR0ZXIgdGhhbiB2aSB0aGF0IGEgZ3JlYXQgbWFueSBvZiBteSBvbGQgdmkgOm1hcCdzIGJlY2FtZQppbW1lZGlhdGVseSBvYnNvbGV0ZSEgKFRvbnkgTnVnZW50LCBBdXN0cmFsaWEpCgpDb21pbmcgd2l0aCBhIHZlcnkgR1VJIG1pbmRzZXQgZnJvbSBXaW5kb3dzLCBJIGFsd2F5cyB0aG91Z2h0IG9mIHBlb3BsZSB1c2luZwpWaSBhcyBzb21lIGtpbmQgb2Ygb3V0ZXIgc3BhY2UgYWxpZW4gaW4gaHVtYW4gY2xvdGhlcy4gIE9uY2UgSSB0cmllZCBJIHJlYWxseQpnb3QgYWRkaWN0ZWQgYnkgaXRzIHBvd2VyIGFuZCBub3cgSSBmb3VuZCBteXNlbGYgdHlwaW5nIFZpbSBrZXlwcmVzc2VzIGluIHRoZQpvZGRlc3QgcGxhY2VzISBUaGF0J3Mgd2h5IEkgd291bGQgbGlrZSB0byBzZWUgVmltIGVtYmVkZGVkIGluIGV2ZXJ5CmFwcGxpY2F0aW9uIHdoaWNoIGRlYWxzIHdpdGggdGV4dCBlZGl0aW5nLiAgKEpvc+kgRm9uc2VjYSkKCkkgd2FzIGEgMTIteWVhciBlbWFjcyB1c2VyIHdobyBzd2l0Y2hlZCB0byBWaW0gYWJvdXQgYSB5ZWFyIGFnbyBhZnRlciBmaW5hbGx5CmdpdmluZyB1cCBvbiB0aGUgbXVsdGlwbGUgaW5jb21wYXRpYmxlIHZlcnNpb25zLCBmbGFreSBjb250cmlidXRlZCBwYWNrYWdlcywKZGlzb3JnYW5pemVkIGtleXN0cm9rZXMsIGV0Yy4gIEFuZCBpdCB3YXMgb25lIG9mIHRoZSBiZXN0IG1vdmVzIEkgZXZlciBtYWRlLgooSm9lbCBCdXJ0b24pCgpBbHRob3VnaCBhbGwgb2YgdGhlIHByb2dyYW1zIHdlcmUgdXNlZCBkdXJpbmcgdGhlIHByZXBhcmF0aW9uIG9mIHRoZSBuZXcgYW5kCnJldmlzZWQgbWF0ZXJpYWwsIG1vc3Qgb2YgdGhlIGVkaXRpbmcgd2FzIGRvbmUgd2l0aCBWaW0gdmVyc2lvbnMgNC41IGFuZCA1LjAKdW5kZXIgR05VLUxpbnV4IChSZWRoYXQgNC4yKS4gIChBcm5vbGQgUm9iYmlucywgSXNyYWVsLCBhdXRob3Igb2YgIkxlYXJuaW5nCnRoZSBWaSBlZGl0b3IiKQoKT3V0IG9mIGFsbCB0aGUgb3BlbiBzb2Z0d2FyZSBpJ3ZlIGV2ZXIgc2VlbiBhbmQgdXNlZCwgYW5kIGkndmUgc2VlbiBhIGxvdCwgVmltCmlzIHRoZSBiZXN0LCBtb3N0IHVzZWZ1bCBhbmQgaGlnaGVzdCBxdWFsaXR5IHRvIHdvcmsgd2l0aCwgc2Vjb25kIG9ubHkgdG8gdGhlCmxpbnV4IGtlcm5lbCBpdHNlbGYuICAoUGV0ZXIgSmF5IFNhbHptYW4pCgpJdCdzIHdlbGwgd29ydGggbm90aW5nIHRoYXQgdGhlIF9lbnRpcmV0eV8gb2YgU291cmNlRm9yZ2Ugd2FzIHdyaXR0ZW4gdXNpbmcKVmltIGFuZCBpdHMgbmlmdHkgUEhQIHN5bnRheCBoaWdobGlnaHRpbmcuICBJIHRoaW5rIHRoZSBlbnRpcmUgU0YubmV0IHRlY2gKc3RhZmYgdXNlcyBWaW0gYW5kIHdlJ3JlIGFsbCBleGNpdGVkIHRvIGhhdmUgeW91IGFib2FyZCEgKFRpbSBQZXJkdWUpCgpWaW0gaXMgb25lIG9mIGEgc2VsZWN0IGJ1bmNoIG9mIHRvb2xzIGZvciB3aGljaCBJIGhhdmUgbm8gc3Vic3RpdHV0ZS4gIEl0IGlzCmEgYnJpbGxpYW50IHBpZWNlIG9mIHdvcmshIChCaWp1IENoYWNrbykKCkEgcHJldmlvdXMgZ2lybGZyaWVuZCBvZiBtaW5lIHN3aXRjaGVkIHRvIGVtYWNzLiAgTmVlZGxlc3MgdG8gc2F5LCB0aGUKcmVsYXRpb25zaGlwIHdlbnQgbm93aGVyZS4gIChHZW9mZnJleSBNYW5uKQoKSSByYXJlbHkgdGhpbmsgYWJvdXQgVmltLCBpbiB0aGUgc2FtZSB3YXkgdGhhdCBJIGd1ZXNzIGEgZmlzaCByYXJlbHkgdGhpbmtzCmFib3V0IHdhdGVyLiAgSXQncyB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggZXZlcnl0aGluZyBlbHNlIGhhcHBlbnMuICBJJ20gYQpmYWlybHkgYnVzeSBzeXN0ZW0gYWRtaW5pc3RyYXRvciB3b3JraW5nIG9uIGEgbG90IG9mIGRpZmZlcmVudCBwbGF0Zm9ybXMuICBWaW0KaXMgdGhlIG9ubHkgdGhpbmcgdGhhdCdzIGNvbnNpc3RlbnQgYWNyb3NzIGFsbCBteSBzeXN0ZW1zLCBhbmQgaXQncyBqdXN0IGFib3V0CnRoZSBvbmx5IHRoaW5nIHRoYXQgZG9lc24ndCBicmVhayBmcm9tIHRpbWUgdG8gdGltZS4gIFdoZW4gYSBuZXcgc3lzdGVtIGNvbWVzCmluIHRoZSBkb29yIHdpdGhvdXQgVmltLCBJIGluc3RhbGwgaXQgcmlnaHQgYXdheS4gIEdyZWF0IHRvIGhhdmUgYSB0b29sIHRoYXQncwp0aGUgc2FtZSBldmVyeXdoZXJlLCB0aGF0J3MgY29tcGxldGVseSByZWxpYWJsZSwgc28gSSBjYW4gaWdub3JlIGl0IGFuZCB0aGluawphYm91dCBvdGhlciB0aGluZ3MuICAoUGV0ZSBTY2hhZWZmZXIpCgpIYXZpbmcgcmVjZW50bHkgc3VjY2VlZGVkIGluIHJ1bm5pbmcgVmltIHZpYSB0ZWxuZXQgdGhyb3VnaCBhIE5va2lhCkNvbW11bmljYXRvciwgSSBjYW4gbm93IHJlcG9ydCB0aGF0IGl0IHdvcmtzIG5pY2VseSBvbiBhIFBhbG0gUGlsb3QgdG9vLgooQWxsYW4gS2VsbHksIFNjb3RsYW5kKQoKWW91J3ZlIGRvbmUgYSB0cmVtZW5kb3VzIGpvYiB3aXRoICdWSU0nLCBCcmFtISAgVGhlIG1vcmUgSSB1c2UgaXQsIHRoZSBtb3JlCmltcHJlc3NlZCBJIGdldCAoSSBhbSBhbiBvbGQgJ3ZpJyBkaWUgaGFyZCB3aG8gb25jZSBzdGFydGVkIG91dCB3aXRoIGVhcmx5CnZlcnNpb25zIG9mICdlbWFjcycgaW4gdGhlIGxhdGUgMTk3MCdzIGFuZCB3YXMgcmVsaWV2ZWQgYnkgZmluZGluZyAndmknIGluIHRoZQpmaXJzdCBVTklYIEkgY2FtZSBhY3Jvc3MgaW4gMTk4MykuICBJbiBteSBvcGluaW9uLCBpdCdzIGFib3V0IHRpbWUgJ1ZJTScKcmVwbGFjZSAnZW1hY3MnIGFzIHRoZSBzdGFuZGFyZCBmb3IgdG9wIGVkaXRvcnMuICAoQm8gVGhpZGUnLCBTd2VkZW4pCgpJIGxvdmUgYW5kIHVzZSBWSU0gaGVhdmlseSB0b28uICAoTGFycnkgV2FsbCkKClZpIGlzIGxpa2UgYSBGZXJyYXJpLCBpZiB5b3UncmUgYSBiZWdpbm5lciwgaXQgaGFuZGxlcyBsaWtlIGEgYml0Y2gsIGJ1dCBvbmNlCnlvdSBnZXQgdGhlIGhhbmcgb2YgaXQsIGl0J3Mgc21hbGwsIHBvd2VyZnVsIGFuZCBGQVNUISAoVW5rbm93bikKVklNIGlzIGxpa2UgYSBuZXcgbW9kZWwgRmVycmFyaSwgYW5kIHNvdW5kcyBsaWtlIG9uZSB0b28gLSAiVklJSUlJSU1NTSEiCihTdGVwaGVuIFJpZWhtLCBHZXJtYW55KQoKU2Nob24gYmVpIE51dHp1bmcgZWluZXMgQnJ1Y2h0ZWlscyBkZXIgVklNLUZ1bmt0aW9uZW4gd2lyZCBkZXIgQmVudXR6ZXIgcmVjaHQKc2NobmVsbCBkaWUgVm9yenVlZ2UgZGllc2VzIEVkaXRvcnMga2VubmVuLSB1bmQgc2NoYWV0emVubGVybmVuLgpUcmFuc2xhdGVkOiBFdmVuIHdoZW4gb25seSB1c2luZyBhIGZyYWN0aW9uIG9mIFZJTS1mdW5jdGlvbnMsIHRoZSB1c2VyIHdpbGwKcXVpY2tseSBnZXQgdXNlZCB0byBhbmQgYXBwcmVjaWF0ZSB0aGUgYWR2YW50YWdlcyBvZiB0aGlzIGVkaXRvci4gIChHYXJyeQpHbGVuZG93biwgY29uY2x1c2lvbiBvZiBhbiBhcnRpY2xlIG9uIFZJTSBpbiBpWCBtYWdhemluZSA5LzE5OTgpCgpJJ3ZlIHJlY2VudGx5IGFjcXVpcmVkIHRoZSBPJ1JlaWxseSBib29rIG9uIFZJIChpdCBhbHNvIGRpc2N1c3NlcyBWSU0KaW4tZGVwdGgpLCBhbmQgSSdtIGFtYXplZCBhdCBqdXN0IGhvdyBwb3dlcmZ1bCB0aGlzIGFwcGxpY2F0aW9uIGlzLiAgKEplZmZyZXkKUmFua2luKQoKVGhpcyBndWlkZSB3YXMgd3JpdHRlbiB1c2luZyB0aGUgV2luZG93cyA5LnggZGlzdHJpYnV0aW9uIG9mIEdWSU0sIHdoaWNoIGlzCnF1aXRlIHBvc3NpYmx5IHRoZSBncmVhdGVzdCB0aGluZyB0byBjb21lIGFsb25nIHNpbmNlIEdvZCBjcmVhdGVkIHRoZSBuYWtlZApnaXJsLiAgKE1pY2hhZWwgRGlCZXJuYXJkbykKCkJveSwgSSB0aG91Z2h0IEkga25ldyBhbG1vc3QgZXZlcnl0aGluZyBhYm91dCBWSU0sIGJ1dCBldmVyeSB0aW1lIEkgYnJvd3NlIHRoZQpvbmxpbmUgZG9jdW1lbnRhdGlvbiwgSSBoaXQgdXBvbiBhIG1pbm9yIGJ1dCBjb29sIGFzcGVjdCBvZiBhIFZJTSBmZWF0dXJlIHRoYXQKSSBkaWRuJ3Qga25vdyBiZWZvcmUhICBJIG11c3Qgc2F5IHRoZSBkb2N1bWVudGF0aW9uIGlzIG9uZSB0aGUgZmluZXN0IEkndmUKZXZlciBzZWVuIGluIGEgcHJvZHVjdCAtLSBldmVuIGJldHRlciB0aGFuIG1vc3QgY29tbWVyY2lhbCBwcm9kdWN0cy4KKEdhdXRhbSBNdWR1bnVyaSkKClZJTSA0LjUgaXMgcmVhbGx5IGEgZmFudGFzdGljIGVkaXRvci4gIEl0IGhhcyBzb29vb28gbWFueSBmZWF0dXJlcyBhbmQgbW9yZQppbXBvcnRhbnRseSwgdGhlIGRlZmF1bHRzIGFyZSBzbyB3ZWxsIHRob3VnaHQgb3V0IHRoYXQgeW91IHJlYWxseSBkb24ndCBoYXZlCnRvIGNoYW5nZSBhbnl0aGluZyEhICBXb3JkcyBjYW5ub3QgZXhwcmVzcyBteSBhbWF6ZW1lbnQgYW5kIGdyYXRpdHVkZSB0byB0aGUKY3JlYXRvcnMgb2YgVklNLiAgS2VlcCBpdCB1cC4gIChWaWthcywgVVNBKQoKSSB3b25kZXIgaG93IGxvbmcgaXQgd2lsbCBiZSBiZWZvcmUgcGVvcGxlIHdpbGwgcmVmZXIgdG8gb3RoZXIgVmkgZWRpdG9ycyBhcwpWSU0gY2xvbmVzPyAgKERhcnJlbiBIaWViZXJ0KQoKSSByZWFkIGFib3V0IFthdXRvLXBvc2l0aW9uaW5nLWluLWZpbGUtYmFzZWQtb24tdGhlLWVycm9ycy1mcm9tLW1ha2VdIGluIG9uZQpvZiB0aG9zZSAiUGVyZmVjdCBQcm9ncmFtbWVyJ3MgRWRpdG9yIiB0aHJlYWRzIGFuZCB3YXMgZGVsaWdodGVkIHRvIGRpc2NvdmVyCnRoYXQgVklNIGFscmVhZHkgc3VwcG9ydHMgaXQuICAoQnJlbmRhbiBNYWNtaWxsYW4sIEF1c3RyYWxpYSkKCkkganVzdCBkaXNjb3ZlcmVkIFZJTSAoNS4wKSBhbmQgSSdtIHRlbGxpbmcgZXZlcnlvbmUgSSBrbm93IGFib3V0IGl0IQpJIHRlbGwgdGhlbSBWSU0gc3RhbmRzIGZvciBWSSBmb3IgdGhlIG5ldyAoTSlpbGxlbml1bS4gIFRoYW5rcyBzbyBtdWNoIQooTWF0dCBGLiBWYWxlbnRpbmUpCgpJIHRoaW5rIGZyb20gbm93IG9uICJ2aSIgc2hvdWxkIGJlIGNhbGxlZCAiVmltIEltaXRhdGlvbiIsIG5vdCB0aGUgb3RoZXIgd2F5CmFyb3VuZC4gIChSdW5ndW4gUmFtYW5hdGhhbikKClRoZSBMYXcgb2YgVklNOgpGb3IgZWFjaCBtZW1iZXIgYiBvZiB0aGUgcG9zc2libGUgYmVoYXZpb3VyIHNwYWNlIEIgb2YgcHJvZ3JhbSBQLCB0aGVyZSBleGlzdHMKYSBmaW5pdGUgdGltZSB0IGJlZm9yZSB3aGljaCBhdCBsZWFzdCBvbmUgdXNlciB1IGluIHRoZSB0b3RhbCB1c2VyIHNwYWNlIFUgb2YKcHJvZ3JhbSBQIHdpbGwgcmVxdWVzdCBiIGJlY29tZXMgYSBtZW1iZXIgb2YgdGhlIGFsbG93ZWQgYmVoYXZpb3VyIHNwYWNlIEInCihCJyA8PSBCKS4KSW4gb3RoZXIgd29yZHM6IFNvb25lciBvciBsYXRlciBldmVyeW9uZSB3YW50cyBldmVyeXRoaW5nIGFzIGFuIG9wdGlvbi4KKE5lZ3JpKQoKV2hlbmV2ZXIgSSBtb3ZlIHRvIGEgbmV3IGNvbXB1dGluZyBwbGF0Zm9ybSwgdGhlIGZpcnN0IHRoaW5nIEkgZG8gaXMgdG8gcG9ydApWSU0uICBMYXRlbHksIEkgYW0gc2ltcGx5IHN0dW5uZWQgYnkgaXRzIGVhc2Ugb2YgY29tcGlsYXRpb24gdXNpbmcgdGhlCmNvbmZpZ3VyZSBmYWNpbGl0eS4gIChBLk0uIFNhYnVuY3UsIFR1cmtleSkKClRoZSBvcHRpb25zIGFyZSByZWFsbHkgZXhjZWxsZW50IGFuZCB2ZXJ5IHBvd2VyZnVsLiAgKEFuaXNoIE1haGFyYWopCgpUaGUgU3ByaW5nIHVzZXItaW50ZXJmYWNlIGRlc2lnbnMgYXJlIGluLCBhbmQgd29yZCBmcm9tIHRoZSBib3V0aXF1ZXMgaXMgdGhhdAo4MHgyNCB0ZXh0LW9ubHkgbW9kZSBpcyBiYWNrIHdpdGggYSAqdmVuZ2VhbmNlISBWaSBlZGl0b3IgY2xvbmUgVklNIGJ1cnN0IG9udG8KTWFyY2ggZGVzay10b3BzIHdpdGggYSBkYXp6bGluZyBzaG93IG9mIHBhc3RlbCBzeW50YXggaGlnaGxpZ2h0cyBmb3IgaXRzIDUuMApsb29rLiAgU3RyaWRlbnQgYW5kIGN1c3RvbWl6YWJsZSwgVklNIHJhaXNlcyBleWVicm93cyB3aXRoIGl0cyBpbnRlcnByZXRhdGlvbgpvZiB0aGUgY2xhc3NpYyBWaSBzaW5nbGUta2V5IG1hY3JvIGNvbGxlY3Rpb24uCmh0dHA6Ly93d3cubnRrLm5ldC9pbmRleC5jZ2k/YmFjaz1hcmNoaXZlOTgvbm93MDMyNy50eHQmbGluZT0xNzkjbAoKSSBqdXN0IHdhbnRlZCB0byB0YWtlIHRoaXMgb3Bwb3J0dW5pdHkgdG8gbGV0IHlvdSBrbm93IHRoYXQgVklNIDUgUk9DS1MhClN5bnRheCBoaWdobGlnaHRpbmc6IGhvdyBkaWQgSSBzdXJ2aXZlIHdpdGhvdXQgaXQ/ISAgVGhhbmsgeW91IGZvciBjcmVhdGluZwptYW5raW5kJ3MgYmVzdCBlZGl0b3IhICAoTXVuIEpvaGwsIFVTQSkKClRoYW5rcyBhZ2FpbiBmb3IgVklNLiAgSSB1c2UgaXQgZXZlcnkgZGF5IG9uIExpbnV4LiAgKEVyaWMgRm9zdGVyLUpvaG5zb24sCmF1dGhvciBvZiB0aGUgYm9vayAiVU5JWCBQcm9ncmFtbWluZyBUb29scyIpCgpUaGUgQkVTVCBFRElUT1IgRVZFUiAoU3R1YXJ0IFdvb2xmb3JkKQoKSSBoYXZlIHVzZWQgbW9zdCBvZiBWSU0ncyBmYW5jeSBmZWF0dXJlcyBhdCBsZWFzdCBvbmNlLCBtYW55IGZyZXF1ZW50bHksIGFuZCBJCmNhbiBob25lc3RseSBzYXkgdGhhdCBJIGNvdWxkbid0IGxpdmUgd2l0aCBhbnl0aGluZyBsZXNzIGFueW1vcmUuICBNeQpwcm9kdWN0aXZpdHkgaGFzIGVhc2lseSBkb3VibGVkIGNvbXBhcmVkIHRvIHdoYXQgaXQgd2FzIHdoZW4gSSB1c2VkIHZpLgooU2l0YXJhbSBDaGFtYXJ0eSkKCkkgbHV2IFZJTS4gIEl0IGlzIGluY3JlZGlibGUuICBJJ20gbmFtaW5nIG15IGZpcnN0LWJvcm4gVmltYmVybHkuICAoSm9zZQpVbnBpbmdjbywgVVNBKQoKSGludDogICJWSU0iIGlzICJ2aSBpbXByb3ZlZCIgLSBtdWNoIGJldHRlciEgKFN2ZW4gR3Vja2VzLCBHZXJtYW55KQoKSSB1c2UgVklNIGV2ZXJ5IGRheS4gIEkgc3BlbmQgbW9yZSB0aW1lIGluIFZJTSB0aGFuIGluIGFueSBvdGhlciBwcm9ncmFtLi4uCkl0J3MgdGhlIGJlc3QgdmkgY2xvbmUgdGhlcmUgaXMuICBJIHRoaW5rIGl0J3MgZ3JlYXQuICAoQ3JhaWcgU2FuZGVycywKQXVzdHJhbGlhKQoKSSBzdHJvbmdseSBhZHZpc2UgdXNpbmcgVklNLS1pdHMgaW5maW5pdGUgdW5kby9yZWRvIHNhdmVkIG1lIG11Y2ggZ3JpZWYuCihUZXJyeSBCcm93bikKClRoYW5rcyB2ZXJ5IG11Y2ggZm9yIHdyaXRpbmcgd2hhdCBpbiBteSBvcGluaW9uIGlzIHRoZSBmaW5lc3QgdGV4dCBlZGl0b3Igb24KdGhlIHBsYW5ldC4gIElmIEkgd2VyZSB0byBnZXQgYW5vdGhlciBjYXQsIEkgd291bGQgbmFtZSBpdCAiVmltIi4KKEJvYiBTaGVlaGFuLCBVU0EpCgpJIHR5cGVkIDpzZXQgYWxsIGFuZCB0aGUgc2NyZWVuIEZJTExFRCB1cCB3aXRoIG9wdGlvbnMuICBBIHdob2xlIHNjcmVlbiBvZgp0aGluZ3MgdG8gYmUgc2V0IGFuZCB1bnNldC4gIEkgc2F3IHNvbWUgb2YgbXkgb2xkIGZyaWVuZHMgbGlrZSB3cmFwbWFyZ2luLAptb2RlbGluZXMgYW5kIHNob3dtb2RlLCBidXQgdGhlIHNjcmVlbiB3YXMgRklMTEVEIHdpdGggbmV3IGZyaWVuZHMhICAgSSBsb3ZlCnRoZW0gYWxsISAgIEkgbG92ZSBWSU0hICAgSSdtIHNvIGhhcHB5IHRoYXQgSSd2ZSBmb3VuZCB0aGlzIGVkaXRvciEgIEkgZmVlbApsaWtlIGhvdyBJIG9uY2UgZmVsdCB3aGVuIEkgc3RhcnRlZCB1c2luZyB2aSBhZnRlciBhIGNvdXBsZSBvZiB5ZWFycyBvZiB1c2luZwplZC4gIEkgbmV2ZXIgdGhvdWdodCBJJ2QgZm9yc2FrZSBteSBiZWxvdmVkIGVkLCBidXQgdmkgLi4uIG9oIGdvZCwgdmkgd2FzCmdyZWF0LiAgQW5kIG5vdywgVklNLiAgKFBldGVyIEpheSBTYWx6bWFuLCBVU0EpCgpJIGFtIHJlYWxseSBoYXBweSB3aXRoIHN1Y2ggYSB3b25kZXJmdWwgc29mdHdhcmUgcGFja2FnZS4gIE11Y2ggYmV0dGVyIHRoYW4KYWxtb3N0IGFueSBleHBlbnNpdmUsIG9mZiB0aGUgc2hlbGYgcHJvZ3JhbS4gIChKZWZmIFdhbGtlcikKCldoZW5ldmVyIEkgcmVyZWFkIHRoZSBWSU0gZG9jdW1lbnRhdGlvbiBJJ20gb3ZlcmNvbWUgd2l0aCBleGNpdGVtZW50IGF0IHRoZQpwb3dlciBvZiB0aGUgZWRpdG9yLiAgKFdpbGxpYW0gRWR3YXJkIFdlYmJlciwgQXVzdHJhbGlhKQoKSHVycmFoIGZvciBWSU0hISBJdCBpcyAiYXQgeW91ciBmaW5nZXJ0aXBzIiBsaWtlIHZpLCBhbmQgaGFzIHRoZSBleHRlbnNpb25zCnRoYXQgdmkgc29yZWx5IG5lZWRzOiBoaWdobGlnaHRpbmcgZm9yIGV4ZWN1dGluZyBjb21tYW5kcyBvbiBibG9ja3MsIGFuIGVhc2lseQpuYXZpZ2FibGUgYW5kIGRpZ2VzdGlibGUgaGVscCBzY3JlZW4sIGFuZCBtb3JlLiAgKFBhdWwgUGF4KQoKVGhlIHJlYXNvbiBXSFkgSSBkb24ndCBoYXZlIHRoaXMgYW1hemluZ2x5IHVzZWZ1bCBtYWNybyBhbnkgbW9yZSwgaXMgdGhhdCBJCm5vdyB1c2UgVklNIC0gYW5kIHRoaXMgaXMgYnVpbHQgaW4hISAoU3RlcGhlbiBSaWVobSwgR2VybWFueSkKCkkgYW0gYSB1c2VyIG9mIFZJTSBhbmQgSSBsb3ZlIGl0LiAgSSB1c2UgaXQgdG8gZG8gYWxsIG15IHByb2dyYW1taW5nLCBDLApDKyssIEhUTUwgd2hhdCBldmVyLiAgKFRpbSBBbGx3aW5lKQoKSSBkaXNjb3ZlcmVkIFZJTSBhZnRlciB5ZWFycyBvZiBzdHJ1Z2dsaW5nIHdpdGggdGhlIG9yaWdpbmFsIHZpLCBhbmQgSSBqdXN0CmNhbid0IGxpdmUgd2l0aG91dCBpdCBhbnkgbW9yZS4gIChFbW1hbnVlbCBNb2dlbmV0LCBVU0EpCgpFbWFjcyBoYXMgbm90IGEgYml0IG9mIGNoYW5jZSB0byBzdXJ2aXZlIHNvIGxvbmcgYXMgVklNIGlzIGFyb3VuZC4gIEJlc2lkZXMsCml0IGFsc28gaGFzIHRoZSBtb3N0IGRldGFpbGVkIHNvZnR3YXJlIGRvY3VtZW50YXRpb24gSSBoYXZlIGV2ZXIgc2Vlbi0tLW11Y2gKYmV0dGVyIHRoYW4gbW9zdCBjb21tZXJjaWFsIHNvZnR3YXJlISAgKExlaW1pbmcgUWlhbikKClRoaXMgdmVyc2lvbiBvZiBWSU0gd2lsbCBqdXN0IGJsb3cgcGVvcGxlIGFwYXJ0IHdoZW4gdGhleSBkaXNjb3ZlciBqdXN0IGhvdwpmYW50YXN0aWMgaXQgaXMhIChUb255IE51Z2VudCwgQXVzdHJhbGlhKQoKSSB0b29rIHlvdXIgYWR2aWNlICYgZmluYWxseSBnb3QgVklNICYgSSdtIHJlYWxseSBpbXByZXNzZWQuICBJbnN0YW50IGNvbnZlcnQuCihQYXRyaWNrIEtpbGxlbGVhLCBVU0EpCgpWSU0gaXMgYnkgZmFyIG15IGZhdm9yaXRlIHBpZWNlIG9mIHNoYXJld2FyZSBhbmQgSSBoYXZlIGJlZW4gcGFydGljdWxhcmx5CnBsZWFzZWQgd2l0aCB2ZXJzaW9uIDMuMC4gIFRoaXMgaXMgcmVhbGx5IGEgc29saWQgcGllY2Ugb2Ygd29yay4gIChSb2JlcnQKQ29sb24sIFVTQSkKClZJTSBpcyBhIGpveSB0byB1c2UsIGl0IGlzIHNvIHdlbGwgdGhvdWdodCBhbmQgcHJhY3RpY2FsIHRoYXQgSSB3b25kZXIgd2h5CmFueWJvZHkgd291bGQgdXNlIHZpc3VhbCBkZXZlbG9wbWVudCB0b29scy4gIFZJTSBpcyBwb3dlcmZ1bCBhbmQgZWxlZ2FudCwgaXQKbG9va3MgZGVjZXB0aXZlbHkgc2ltcGxlIGJ1dCBpcyBhbG1vc3QgYXMgY29tcGxleCBhcyBhIDc0NyAoZXNwZWNpYWxseSB3aGVuIEkKbG9vayBhdCBteSBncm93aW5nIC52aW1yYyksIGtlZXAgdXAgdGhhdCB3b25kZXJmdWwgam9iLCBWSU0gaXMgYSBjZW50ZXJwaWVjZQpvZiB0aGUgZnJlZSBzb2Z0d2FyZSB3b3JsZC4gIChMb3Vpcy1EYXZpZCBNaXR0ZXJhbmQsIFVTQSkKCkkgY2Fubm90IGJlbGlldmUgaG93IGdyZWF0IGl0IGlzIHRvIHVzZSBWSU0uICBJIHRoaW5rIHRoZSBndXlzIGF0IHdvcmsgYXJlCmdldHRpbmcgdGlyZWQgb2YgaGVhcmluZyBtZSBicmFnZ2luZyBhYm91dCBpdC4gIE90aGVycyBleWVzIGFyZSBsaWdodGluZyB1cC4KKFJpY2sgQ3Jvb3RlKQoKRW1hY3MgdGFrZXMgd2F5IHRvIG11Y2ggdGltZSB0byBzdGFydCB1cCBhbmQgcnVuLCBpdCBpcyB0byBiaWcgYW5kIGJ1bGt5IGZvcgplZmZlY3RpdmUgdXNlIGFuZCB0aGUgaW50ZXJmYWNlIGlzIG1vcmUgY29uZnVzaW5nIHRoYW4gaXQgaXMgb2YgYW55IGhlbHAuICBWSU0KaG93ZXZlciBpcyBzaG9ydCwgaXQgaXMgZmFzdCwgaXQgaXMgcG93ZXJmdWwsIGl0IGhhcyBhIGdvb2QgaW50ZXJmYWNlIGFuZCBpdAppcyBhbGwgcHVycG9zZS4gIChQYWFsIERpdGxlZnNlbiBFa3JhbikKCkZyb20gdGhlIGZpcnN0IHRpbWUgSSBnb3QgVklNMy4wLCBJIHdhcyB2ZXJ5IGVudGh1c2lhc3RpYy4gIEl0IGhhcyBhbG1vc3Qgbm8KcHJvYmxlbXMuICBUaGUgc3dhcGZpbGUgaGFuZGxpbmcgYW5kIHRoZSBiYWNrdXAgcG9zc2liaWxpdGllcyBhcmUgcm9idXN0LCBhbHNvCnRoZSBwcm90ZWN0aW9uIGFnYWluc3QgZWRpdGluZyBvbmUgZmlsZSB0d2ljZS4gIEl0IGlzIHZlcnkgY29tcGF0aWJsZSB0byB0aGUKcmVhbCBWSSAoYW5kIHRoYXQgaXMgYSBNVVNULCBiZWNhdXNlIG15IGJyYWluIGlzIHRyYWluZWQgb3ZlciB5ZWFycyBpbiB1c2luZwppdCkuICAoR2VydCB2YW4gQW50d2VycGVuLCBIb2xsYW5kKQoKVmlzdWFsIG1vZGUgaW4gVklNIGlzIGEgdmVyeSBwb3dlcmZ1bCB0aGluZyEgKFRvbnkgTnVnZW50LCBBdXN0cmFsaWEpCgpJIGhhdmUgdG8gc2F5IHRoYXQgVklNIGlzID1USEU9IHNpbmdsZSBncmVhdGVzdCBwaWVjZSBvZiBzb3VyY2UgY29kZSB0byBldmVyCmNvbWUgYWNyb3NzIHRoZSBuZXQgKEppbSBCYXR0bGUsIFVTQSkuCgpJbiBmYWN0LCBpZiB5b3UgZG8gd2FudCB0byBnZXQgYSBuZXcgdmkgSSdkIHN1Z2dlc3QgVklNLTMuMC4gIFRoaXMgaXMsIGJ5CmZhciwgdGhlIGJlc3QgdmVyc2lvbiBvZiB2aSBJJ3ZlIGV2ZXIgc2VlbiAoQWxiZXJ0IFcuIFNjaHVlbGxlcikuCgpJIHNob3VsZCBtZW50aW9uIHRoYXQgVklNIGlzIGEgdmVyeSBnb29kIGVkaXRvciBhbmQgY2FuIGNvbXBldGUgd2l0aCBhbnl0aGluZwooSWx5YSBCZWxvb3plcm92KS4KClRvIHRlbGwgdGhlIHRydXRoIHNvbWV0aW1lcyBJIHVzZWQgZWx2aXMsIHZpbGUsIHh2aSwgY2FsdmluLCBldGMuICBBbmQgdGhpcyBpcwp0aGUgcmVhc29uIHRoYXQgSSBjYW4gc3RhdGUgdGhhdCBWSU0gaXMgdGhlIGJlc3QhIChGZXJlbmMgRGVhaywgSHVuZ2FyeSkKClZJTSBpcyBieSBmYXIgdGhlIGJlc3QgZWRpdG9yIHRoYXQgSSBoYXZlIHVzZWQgaW4gYSBsb25nIHRpbWUsIGFuZCBJIGhhdmUKbG9va2VkIGF0IGp1c3QgYWJvdXQgZXZlcnkgdGhpbmcgdGhhdCBpcyBhdmFpbGFibGUgZm9yIGV2ZXJ5IHBsYXRmb3JtIHRoYXQgSQp1c2UuICBWSU0gaXMgdGhlIGJlc3Qgb24gYWxsIG9mIHRoZW0uICAoR3V5IEwuIE9saXZlcikKClZJTSBpcyB0aGUgZ3JlYXRlc3QgZWRpdG9yIHNpbmNlIHRoZSBzdG9uZSBjaGlzZWwuICAoSm9zZSBVbnBpbmdjbywgVVNBKQoKSSB3b3VsZCBsaWtlIHRvIHNheSB0aGF0IHdpdGggVklNIEkgYW0gZmluYWxseSBtYWtpbmcgdGhlICdlbWFjcyB0byB2aScKdHJhbnNpdGlvbiAtIGFzIGFuIEVkaXRvciBpdCBpcyBzbyBtdWNoIGJldHRlciBpbiBtYW55IHdheXM6IGtleWJvYXJkIGxheW91dCwKbWVtb3J5IHVzYWdlLCB0ZXh0IGFsdGVyYXRpb24gdG8gbmFtZSAzLiAgKE1hcmsgQWRhbSkKCkluIGZhY3QsIG5vdyBpZiBJIHdhbnQgdG8ga25vdyB3aGF0IGEgcGFydGljdWxhciBzZXR0aW5nIGRvZXMgaW4gdmksIEkgZmlyZSB1cApWSU0gYW5kIGNoZWNrIG91dCBpdCdzIGhlbHAhICAoTmlraGlsIFBhdGVsLCBVU0EpCgpBcyBhIHZpIHVzZXIsIFZJTSBoYXMgbWFkZSB3b3JraW5nIHdpdGggdGV4dCBhIGZhciBtb3JlIHBsZWFzYW50IHRhc2sgdGhhbgpiZWZvcmUgSSBlbmNvdW50ZXJlZCB0aGlzIHByb2dyYW0uICAoU3RlaW5hciBLbnV0c2VuLCBOb3J3YXkpCgpJIHVzZSBWSU0gc2luY2UgdmVyc2lvbiAzLjAuICBTaW5jZSB0aGF0IHRpbWUsIGl0IGlzIHRoZSBPTkxZIGVkaXRvciBJIHVzZSwKd2l0aCBTb2xhcmlzLCBMaW51eCBhbmQgT1MvMiBXYXJwLiAgSSBzdWdnZXN0IGFsbCBteSBmcmllbmRzIHRvIHVzZSBWSU0sIHRoZXkKdHJ5LCBhbmQgdGhleSBjb250aW51ZSB1c2luZyBpdC4gIFZJTSBpcyByZWFsbHkgdGhlIGJlc3Qgc29mdHdhcmUgSSBoYXZlIGV2ZXIKZG93bmxvYWRlZCBmcm9tIHRoZSBJbnRlcm5ldCwgYW5kIHRoZSBiZXN0IGVkaXRvciBJIGtub3cgb2YuICAoTWFyY28KRWNjZXR0dWF0bywgSXRhbHkpCgoKSW4gc3VtbWFyeToKICAgICBfXyAgICAgX19fCQkgICAgXwkgICAgXwlfICBfX18gX19fX18KICAgICBcIFwgICAvIChfKV8gX18gX19fICAgKF8pX19fICB8IHwgfCB8LyBfIFxfICAgX3wKICAgICAgXCBcIC8gL3wgfCAnXyBgIF8gXCAgfCAvIF9ffCB8IHxffCB8IHwgfCB8fCB8CiAgICAgICBcIFYgLyB8IHwgfCB8IHwgfCB8IHwgXF9fIFwgfCAgXyAgfCB8X3wgfHwgfAoJXF8vICB8X3xffCB8X3wgfF98IHxffF9fXy8gfF98IHxffFxfX18vIHxffAoJICAgICBfX19fIF9fX19fIF8gICBfIF9fX19fIF9fX19fIF8gXwoJICAgIC8gX19ffF8gICBffCB8IHwgfAlfX198ICBfX198IHwgfAoJICAgIFxfX18gXCB8IHwgfCB8IHwgfCB8XyAgfCB8XyAgfCB8IHwKCSAgICAgX19fKSB8fCB8IHwgfF98IHwJX3wgfCAgX3wgfF98X3wKCSAgICB8X19fXy8gfF98CVxfX18vfF98ICAgfF98CSAoX3xfKQkgICAgICAoVG9ueSBOdWdlbnQsIEF1c3RyYWxpYSkKCiB2aW06dHc9Nzg6dHM9ODpmdD1oZWxwOm5vcmw6Cg==