sabato 1 gennaio 2000

[AL CORPUS] Invisible Helpers [1/2]

SU5WSVNJQkxFIEhFTFBFUlMgCgoKQlkgCgpDLiBXLiBMRUFEQkVBVEVSIAoKCkZpcnN0IFB1Ymxpc2hlZCBpbiBMb25kb24gLCA3ODk2IApGaXJzdCBQdWJsaXNoZWQgYXQgQWR5YXIgdCAoUmV2aXNlZCBhbmQgRW5sYXJnZWQpICwgMTkyOCAKCgoxOTQ2IAoKVEhFT1NPUEhJQ0FMIFBVQkxJU0hJTkcgSE9VU0UgCgpBZHlhciwgTWFkcmFzLCBJbmRpYSAKCgpDT1BZUklHSFQgCgpUcmFuc2xhdGlvbiBhbmQgb3RoZXIgcmlnaHRzIApyZXNlcnZlZCBieSB0aGUgUHVibGlzaGVycyAKCgpDT05URU5UUyAKCgpDSEFQLiAKCkkuIAoKVGhlIFVuaXZlcnNhbCBCZWxpZWYgaW4gVGhlbSAKClBBR0UgCgoxIAoKSUkuIAoKU29tZSBNb2Rlcm4gSW5zdGFuY2VzIAoKLiAxMyAKCklJSS4gCgpBIFBlcnNvbmFsIEV4cGVyaWVuY2UgCgouIDI0IAoKSVYuIAoKVGhlIEhlbHBlcnMgLi4uLiAKCi4gMzEgCgpWLiAKClRoZSBSZWFsaXR5IG9mIFN1cGVycGh5c2ljYWwgTGlmZSAKCi4gNDEgCgpWSS4gCgpBIFRpbWVseSBJbnRlcnZlbnRpb24gLiAKCi4gNDYgCgpWSUkuIAoKVGhlIOKAnCBBbmdlbOKAnSBTdG9yeSAKCi4gNDkgCgpWSUlJLiAKClRoZSBTdG9yeSBvZiBhIEZpcmUgCgouIDU2IAoKSVguIAoKTWF0ZXJpYWxpemF0aW9uIGFuZCBSZXBlcmN1c3Npb24gLiAKCi4gNjIgCgpYLiAKClRoZSBUd28gQnJvdGhlcnMgCgouIDY5IAoKWEkuIAoKQSBTdWljaWRlIFByZXZlbnRlZCAKCi4gNzggCgpYSUkuIAoKVGhlIExvc3QgQm95IC4gLiAuIAoKLiA4MiAKClhJSUkuIAoKVGhlIFN0b3J5IG9mIEl2eSAuIAoKLiA4OSAKClhJVi4gCgpUeXBpY2FsIE9yZGluYXJ5IENhc2VzIAoKLiA5OSAKClhWLiAKCldyZWNrcyBhbmQgQ2F0YXN0cm9waGVzIAoKLiAxMDggCgpYVkkuIAoKV29yayBBbW9uZyB0aGUgRGVhZCAuIAoKLiAxMTQgCgpYVklJLiAKCldvcmsgaW4gQ29ubmVjdGlvbiB3aXRoIHRoZSBXYXIgCgouIDEzMyAKClhWSUlJLiAKCk90aGVyIEJyYW5jaGVzIG9mIHRoZSBXb3JrIAoKLiAxNTUgCgpYSVguIAoKVGhlIFF1YWxpZmljYXRpb25zIFJlcXVpcmVkIC4gCgouIDE2MSAKClhYLiAKClRoZSBQcm9iYXRpb25hcnkgUGF0aCAKCi4gMTcxIAoKWFhJLiAKClRoZSBQYXRoIFByb3BlciAuIAoKLiAxODEgCgpYWElJLiAKCldoYXQgTGllcyBCZXlvbmQgCgouIDE5MiAKCgpJbmRleCAqIAoKLiAxOTkgCgoKQ0hBUFRFUiBJIAoKClRIRSBVTklWRVJTQUwgQkVMSUVGIElOIFRIRU0gCgpJdCBpcyBvbmUgb2YgdGhlIG1vc3QgYmVhdXRpZnVsIGNoYXJhY3RlcmlzdGljcyBvZiAKVGhlb3NvcGh5IHRoYXQgaXQgZ2l2ZXMgYmFjayB0byBwZW9wbGUgaW4gYSBtb3JlIApyYXRpb25hbCBmb3JtIGV2ZXJ5dGhpbmcgd2hpY2ggd2FzIHJlYWxseSB1c2VmdWwgCmFuZCBoZWxwZnVsIHRvIHRoZW0gaW4gdGhlIHJlbGlnaW9ucyB3aGljaCB0aGV5IApoYXZlIG91dGdyb3duLiBNYW55IHdobyBoYXZlIGJyb2tlbiB0aHJvdWdoIAp0aGUgY2hyeXNhbGlzIG9mIGJsaW5kIGZhaXRoLCBhbmQgbW91bnRlZCBvbiB0aGUgCndpbmdzIG9mIHJlYXNvbiBhbmQgaW50dWl0aW9uIHRvIHRoZSBmcmVlciwgbm9ibGVyIAptZW50YWwgbGlmZSBvZiBtb3JlIGV4YWx0ZWQgbGV2ZWxzLCBuZXZlcnRoZWxlc3MgZmVlbCAKdGhhdCBpbiB0aGUgcHJvY2VzcyBvZiB0aGlzIGdsb3Jpb3VzIGdhaW4gYSBzb21ldGhpbmcgCmhhcyBiZWVuIGxvc3Qg4oCUIHRoYXQgaW4gZ2l2aW5nIHVwIHRoZSBiZWxpZWZzIG9mIHRoZWlyIApjaGlsZGhvb2QgdGhleSBoYXZlIGFsc28gY2FzdCBhc2lkZSBtdWNoIG9mIHRoZSAKYmVhdXR5IGFuZCB0aGUgcG9ldHJ5IG9mIGxpZmUuIAoKSWYsIGhvd2V2ZXIsIHRoZWlyIGxpdmVzIGluIHRoZSBwYXN0IGhhdmUgYmVlbiAKc3VmZmljaWVudGx5IGdvb2QgdG8gZWFybiBmb3IgdGhlbSB0aGUgb3Bwb3J0dW5pdHkgb2YgCmNvbWluZyB1bmRlciB0aGUgYmVuaWduIGluZmx1ZW5jZSBvZiBUaGVvc29waHksIAp0aGV5IHZlcnkgc29vbiBkaXNjb3ZlciB0aGF0IGV2ZW4gaW4gdGhpcyBwYXJ0aWN1bGFyIAp0aGVyZSBoYXMgYmVlbiBubyBsb3NzIGF0IGFsbCwgYnV0IGFuIGV4Y2VlZGluZyBncmVhdCAKZ2FpbiDigJQgdGhhdCB0aGUgZ2xvcnkgYW5kIHRoZSBiZWF1dHkgYW5kIHRoZSBwb2V0cnkgCmFyZSB0aGVyZSBpbiBmdWxsZXIgbWVhc3VyZSB0aGFuIHRoZXkgaGFkIGV2ZXIgaG9wZWQgCmJlZm9yZSwgYW5kIG5vIGxvbmdlciBhcyBhIG1lcmUgcGxlYXNhbnQgZHJlYW0gZnJvbSAKCgoyIAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCndoaWNoIHRoZSBjb2xkIGxpZ2h0IG9mIGNvbW1vbiBzZW5zZSBtYXkgYXQgYW55IAp0aW1lIHJ1ZGVseSBhd2FrZW4gdGhlbSwgYnV0IGFzIHRydXRocyBvZiBuYXR1cmUgCndoaWNoIHdpbGwgYmVhciBpbnZlc3RpZ2F0aW9uIOKAlCB3aGljaCBiZWNvbWUgb25seSAKYnJpZ2h0ZXIsIGZ1bGxlciBhbmQgbW9yZSBwZXJmZWN0IGFzIHRoZXkgYXJlIG1vcmUgCmFjY3VyYXRlbHkgdW5kZXJzdG9vZC4gCgpBIG1hcmtlZCBpbnN0YW5jZSBvZiB0aGlzIGJlbmVmaWNlbnQgYWN0aW9uIG9mIApUaGVvc29waHkgaXMgdGhlIHdheSBpbiB3aGljaCB0aGUgaW52aXNpYmxlIHdvcmxkIAood2hpY2gsIGJlZm9yZSB0aGUgZ3JlYXQgd2F2ZSBvZiBtYXRlcmlhbGlzbSBlbmd1bGYtIAplZCB1cywgdXNlZCB0byBiZSByZWdhcmRlZCBhcyB0aGUgc291cmNlIG9mIGFsbCBsaXZpbmcgCmhlbHApIGhhcyBiZWVuIHJlc3RvcmVkIGJ5IGl0IHRvIG1vZGVybiBsaWZlLiBBbGwgCnRoZSBjaGFybWluZyBmb2xrLWxvcmUgb2YgdGhlIGVsZiwgdGhlIGJyb3duaWUgYW5kIAp0aGUgZ25vbWUsIG9mIHRoZSBzcGlyaXRzIG9mIGFpciBhbmQgd2F0ZXIsIG9mIHRoZSAKZm9yZXN0LCB0aGUgbW91bnRhaW4gYW5kIHRoZSBtaW5lLCBpcyBzaG93biBieSBpdCB0byAKYmUgbm8gbWVyZSBtZWFuaW5nbGVzcyBzdXBlcnN0aXRpb24sIGJ1dCB0byBoYXZlIGEgCmJhc2lzIG9mIGFjdHVhbCBhbmQgc2NpZW50aWZpYyBmYWN0IGJlaGluZCBpdC4gSXRzIAphbnN3ZXIgdG8gdGhlIGdyZWF0IGZ1bmRhbWVudGFsIHF1ZXN0aW9uOiDigJxJZiBhIAptYW4gZGllLCBzaGFsbCBoZSBsaXZlIGFnYWluP+KAnSBpcyBlcXVhbGx5IGRlZmluaXRlIGFuZCAKc2NpZW50aWZpYywgYW5kIGl0cyB0ZWFjaGluZyBvbiB0aGUgbmF0dXJlIGFuZCBjb25kaS0gCnRpb25zIG9mIHRoZSBsaWZlIGFmdGVyIGRlYXRoIHRocm93cyBhIGZsb29kIG9mIGxpZ2h0IAp1cG9uIG11Y2ggdGhhdCwgZm9yIHRoZSBXZXN0ZXJuIHdvcmxkIGF0IGxlYXN0LCB3YXMgCnByZXZpb3VzbHkgd3JhcHBlZCBpbiBpbXBlbmV0cmFibGUgZGFya25lc3MuIAoKSXQgY2Fubm90IGJlIHRvbyBvZnRlbiByZXBlYXRlZCB0aGF0IGluIHRoaXMgdGVhY2gtIAppbmcgYXMgdG8gdGhlIGltbW9ydGFsaXR5IG9mIHRoZSBzb3VsIGFuZCB0aGUgbGlmZSAKYWZ0ZXIgZGVhdGgsIFRoZW9zb3BoeSBzdGFuZHMgaW4gYSBwb3NpdGlvbiB0b3RhbGx5IApkaWZmZXJlbnQgZnJvbSB0aGF0IG9mIG9yZGluYXJ5IHJlbGlnaW9uLiBJdCBkb2VzIApub3QgcHV0IGZvcndhcmQgdGhlc2UgZ3JlYXQgdHJ1dGhzIG1lcmVseSBvbiB0aGUgCmF1dGhvcml0eSBvZiBzb21lIHNhY3JlZCBib29rIG9mIGxvbmcgYWdvOyBpbiBzcGVhay0gCmluZyBvZiB0aGVzZSBzdWJqZWN0cyBpdCBpcyBub3QgZGVhbGluZyB3aXRoIHBpb3VzIAoKClRIRSBVTklWRVJTQUwgQkVMSUVGIElOIFRIRU0gCgoKMyAKCgpvcGluaW9ucywgb3IgbWV0YXBoeXNpY2FsIHNwZWN1bGF0aW9ucywgYnV0IHdpdGggCnNvbGlkLCBkZWZpbml0ZSBmYWN0cywgYXMgcmVhbCBhbmQgYXMgY2xvc2UgdG8gdXMgYXMgdGhlIAphaXIgd2UgYnJlYXRoZSBvciB0aGUgaG91c2VzIGluIHdoaWNoIHdlIGxpdmUg4oCUIApmYWN0cyBvZiB3aGljaCBtYW55IGFtb25nIHVzIGhhdmUgY29uc3RhbnQgZXgtIApwZXJpZW5jZSDigJQgZmFjdHMgYW1vbmcgd2hpY2ggbGllcyB0aGUgZGFpbHkgd29yayBvZiAKc29tZSBvZiBvdXIgc3R1ZGVudHMsIGFzIHdpbGwgcHJlc2VudGx5IGJlIHNlZW4uIE1vdCAKcXVpIHZvdGlzIHBhcmxlIOKAlCBJIHdobyBub3cgd3JpdGUgdGhlc2Ugd29yZHMg4oCUIGFtIAp0ZWxsaW5nIHlvdSBvZiB0aGluZ3Mgd2hpY2ggaGF2ZSBiZWVuIGZhbWlsYXIgdG8gbWUgCmZvciBtb3JlIHRoYW4gZm9ydHkgeWVhcnMsIHdoaWNoIGFyZSBub3cgbXVjaCAKbW9yZSByZWFsIGFuZCBpbXBvcnRhbnQgdG8gbWUgdGhhbiB0aGUgbWF0dGVycyBvZiAKdGhlIHBoeXNpY2FsIHBsYW5lLiAKCkkgdGFrZSBpdCB0aGF0IG1vc3Qgb2YgbXkgcmVhZGVycyBhcmUgYWxyZWFkeSAKYWNxdWFpbnRlZCB3aXRoIHRoZSBnZW5lcmFsIFRoZW9zb3BoaWNhbCBjb25jZXAtIAp0aW9uIG9mIHRoZSB3b3JsZCBiZXlvbmQgdGhlIGdyYXZl4oCUIHRoYXQgaXQgaXMgbm90IApmYXIgYXdheSBvciBpbnRyaW5zaWNhbGx5IGRpZmZlcmVudCBmcm9tIHRoaXMgd29ybGQsIApidXQgb24gdGhlIGNvbnRyYXJ5IHRoYXQgaXQgaXMgcmVhbGx5IGEgbWVyZSBjb250aW51LSAKYXRpb24gb2YgaXQsIGEgbGlmZSB3aXRob3V0IHRoZSBkcmF3YmFjayBvZiBhIHBoeXNpY2FsIApib2R5IOKAlCBhIGxpZmUgd2hpY2ggZm9yIHRob3NlIHdobyBhcmUgaW4gYW55IHdheSAKaW50ZWxsZWN0dWFsIG9yIGFydGlzdGljIGlzIHF1aXRlIGluZmluaXRlbHkgc3VwZXJpb3IgdG8gCnRoaXMsIGFsdGhvdWdoIGl0IG1heSBzb21ldGltZXMgc2VlbSBtb25vdG9ub3VzIAp0byB0aG9zZSB3aG8gaGF2ZSBuZWl0aGVyIHNwaXJpdHVhbCwgaW50ZWxsZWN0dWFsIG5vciAKYXJ0aXN0aWMgZGV2ZWxvcG1lbnQuIAoKSW4gdGhzXnQgbGlmZSwgYXMgaW4gdGhpcywgdGhlcmUgYXJlIG1hbnkgcGVvcGxlIHdobyAKbmVlZCBhc3Npc3RhbmNlLCBhbmQgd2Ugc2hvdWxkIGJlIHJlYWR5IHRvIHRyeSB0byAKZ2l2ZSBpdCBpbiBhbnkgd2F5IHRoYXQgd2UgY2FuLCBmb3IgdGhlcmUgaXMgYSB2YXN0IAphbW91bnQgdG8gYmUgZG9uZSwgYW5kIHRoYXQgYWxvbmcgbWFueSBkaWZmZXJlbnQgCmxpbmVzLiBUaGUgaWRlYSBvZiBoZWxwaW5nIGluIHRoYXQgd29ybGQgaXMgbm90IApjb25maW5lZCB0byBUaGVvc29waGlzdHMsIGJ1dCBJIGRvIG5vdCB0aGluayB0aGF0LCAKCgo0IAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCnVudGlsIHRoZSBUaGVvc29waGljYWwgU29jaWV0eSBwcm9wb3VuZGVkIGl0LCBpdCB3YXMgCmV2ZXIgdGFrZW4gdXAgaW4gYSBzY2llbnRpZmljLCBkZWZpbml0ZSBhbmQgb3JnYW5pemVkIAp3YXkuIFN0aWxsLCBieSBubyBtZWFucyBhbGwgdGhlIGhlbHBlcnMgYXJlIG1lbS0gCmJlcnMgb2Ygb3VyIFNvY2lldHkuIFRoZSBkZWFkIGhhdmUgYWx3YXlzIGFpZGVkIAp0aGUgZGVhZCwgYW5kIHRoZXkgaGF2ZSBvZnRlbiB0cmllZCB0byBjb21mb3J0IHRoZSAKbGl2aW5nLCBidXQgdW50aWwgdGhlIFRoZW9zb3BoaWNhbCBsaW5lIG9mIHN0dWR5IApvcGVuZWQgYmVmb3JlIHVzLCBJIHRoaW5rIHRoYXQgY29tcGFyYXRpdmVseSBmZXcsIApsaXZpbmcgcGVvcGxlIHdvcmtlZCBkaXJlY3RseSBpbiB0aGUgYXN0cmFsIHdvcmxkLiBBIApncmVhdCBudW1iZXIgb2YgbGl2aW5nIHBlb3BsZSBoYXZlIGFsd2F5cyB3b3JrZWQgCmluZGlyZWN0bHksIGFzIGZvciBleGFtcGxlIGJ5IHByYXllcnMgZm9yIHRoZSBkZWFkOyAKYnV0IHN1Y2ggZWZmb3J0IGlzIGdlbmVyYWxseSBzb21ld2hhdCB2YWd1ZSwgYmVjYXVzZSAKdGhvc2Ugd2hvIG1ha2UgaXQgZG8gbm90IHVzdWFsbHkga25vdyBtdWNoIG9mIAp0aGUgcmVhbCBzdGF0ZSBvZiBhZmZhaXJzIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSAKZ3JhdmUuIEJ1dCBpbiB0aGUgZ3JlYXQgUm9tYW4gQ2F0aG9saWMgQ2h1cmNoIAptZW4gaGF2ZSBhbHdheXMgcHJheWVkIGZvciB0aG9zZSB3aG8gaGF2ZSBkZXBhcnQtIAplZCB0aGlzIGxpZmUgaW4gR29k4oCZcyBmYWl0aCBhbmQgZmVhciwgYW5kIHRoYXQgcHJheWVyIAppcyBieSBubyBtZWFucyBhbiBlbXB0eSBmb3JtLiAKClByYXllciBpcyBwZXJoYXBzIG5vdCBuZWNlc3NhcnkgaW4gdGhlIHdheSB3aGljaCAKdGhvc2Ugd2hvIHByYXkgb2Z0ZW4gdGhpbms7IGl0IGlzIG5vdCBuZWVkZnVsIHRoYXQgCndlIHNob3VsZCB0ZWxsIG91ciBHb2Qgd2hhdCB3ZSBzaG91bGQgbGlrZSBIaW0gdG8tIApkbzsgYnV0IHRoYXQgaXMgbm90IHRvIHNheSB0aGF0IHByYXllciBwcm9kdWNlcyBubyAKcmVzdWx0LiBJdCBpcyBhIGdyZWF0IG91dHBvdXJpbmcgb2YgZm9yY2Ugb24gaGlnaGVyIApwbGFuZXMg4oCUIGEgZ3JlYXQgbWVudGFsIGFuZCBlbW90aW9uYWwgZWZmb3J0OyBhbmQgaW4gCmEgd29ybGQgd2hpY2ggaXMgZ292ZXJuZWQgYnkgbGF3IHRoZXJlIGNhbiBiZSBubyAKZWZmb3J0IG1hZGUgd2hpY2ggZG9lcyBub3QgcHJvZHVjZSBzb21lIGtpbmQgCm9mIHJlc3VsdCwgYmVjYXVzZSBhY3Rpb24gYW5kIHJlYWN0aW9uIGFyIGUgaW5leHRyaWMtIAphYmx5LiB3b3ZlbiB0b2dlIHRoZXIsIGFuZCBhbnkgZWZmb3J0LCB3aGV0aGVyIAppdCBiZSBwaHlzaWNhbCwgZW1vdGlvbmFsIG9yIG1lbnRhbCwgbXVzIHQgcHJvZCB1Y2UgCgoKVEhFIFVOSVZFUlNBTCBCRUxJRUYgSU4gVEhFTSAKCgo1IAoKCnNvbWV0aGluZyBpbmp0aGUgLCBhbiAu4pagZWZmZSBjdCBvciByZWFjdGlvbiA7IGFuZCAKCnVucXVlc3Rpb25hYmx5IHByYXllcnMgZm9yIHRoZSBkZWFkIGhhdmUgaGFkIGEgdmVyeSAK4oCiZ3JlYXQgZWZmZWN0IHVwb24gdGhlIGRlYWQuLCBUaGV5IGhhdmUgbGliZXJhdGVkIGEgCmdyZWF0IGRlYWwgb2Ygc3Bpcml0dWFsIGZvcmNlOyB0aGV5IGhhdmUgYmVuZWZpdGVkIAphbmQgaGVscGVkIGluIGV2b2x1dGlvbiB0aG9zZSBmb3Igd2hvbSB0aGV5IHdlcmUgCmludGVuZGVkLCBzbyB0aGF0IGV2ZW4gd2l0aG91dCBrbm93aW5nIG9mIHRoZSBwb3MtIApzaWJpbGl0eSBvZiBkaXJlY3Qgd29yayBvbiBoaWdoZXIgcGxhbmVzLCB0aGUgbGl2aW5nIApoYXZlIGFsd2F5cyBpbmZsdWVuY2VkIHRob3NlIHdobyBoYXZlIHBhc3NlZCBhd2F5LiAKCkl0IG1pZ2h0IG9jY3VyIHRvIHNvbWUgaW5xdWlyZXIgdG8gYXNrIHdoeSwgc2luY2UgCmJlZm9yZSBUaGVvc29waHkgd2FzIGRpdnVsZ2VkIHRoZSBHcmVhdCBXaGl0ZSAKQnJvdGhlcmhvb2Qgb2YgdGhlIEFkZXB0cyBleGlzdGVkLCBkaWQgbm90IFRoZXkgb3IgClRoZWlyIHB1cGlscyBnaXZlIHRoaXMgaGVscD8gV2UgbXVzdCB1bmRlcnN0YW5kIAp0aGF0IHRoZSBBZGVwdHMgYXJlIGVuZ2FnZWQgaW4gdmVyeSBtdWNoIGhpZ2hlciAKd29yayBvZiBmYXIgbW9yZSBpbXBvcnRhbmNlIHRoYW4gdGhpcy4gT3VyIGlkZWFzIApvZiByZWxhdGl2ZSBpbXBvcnRhbmNlIGFyZSBzbyB1dHRlcmx5IG91dCBvZiBwcm9wb3ItIAp0aW9uLiBXZSB0aGluayB0aGF0IGV2ZXJ5dGhpbmcgdGhhdCBjb25jZXJucyB1cyAKcGVyc29uYWxseSBtdXN0IGJlIG9mIGZpcnN0IGltcG9ydGFuY2UsIGFuZCBkbyBub3QgCnJlYWxpemUgdGhhdCB0aGUgZm9yY2VzIHdoaWNoIGFyZSB3b3JraW5nIG91dCB0aGUgCmV2b2x1dGlvbiBvZiB0aGUgZ2xvYmUgZGVhbCB3aXRoIHBlb3BsZSBub3QgaW5kaXZpZC0gCnVhbCF9IDcgLCBub3QgZXZlbiBieSBzY29yZXMgYW5kIGh1bmRyZWRzLCBidXQgYnkgCnRob3VzYW5kcyBhbmQgbWlsbGlvbnMuIEl0IGNvdWxkIG5vdCBiZSB0aGF0IHRoZSAKQWRlcHRzIHNob3VsZCBkZXZvdGUgdGhlaXIgdGltZSB0byB3b3JrIG9mIHRoaXMgCmtpbmQuIFRoZWlyIHB1cGlscyBtaWdodCwgYnV0IHVudGlsIFRoZW9zb3BoeSAKcHJvbXVsZ2F0ZWQgdGhlc2UgaWRlYXMgaW4gdGhlIFdlc3QgbW9zdCBvZiB0aGUgCnB1cGlscyBvZiB0aGUgTWFzdGVycyB3ZXJlIEluZGlhbjsgYW5kIGFueSBvZiB5b3UgCndobyBrbm93IGFueXRoaW5nIG9mIHRoZSBIaW5kdSByZWxpZ2lvbiB3aWxsIAp1bmRlcnN0YW5kIHRoYXQgdGhpcyBpZGVhIG9mIGhlbHBpbmcgaW5kaXZpZHVhbCBkZWFkIApwZW9wbGUgd291bGQgbm90IGJlIGxpa2VseSB0byBvY2N1ciB0byBpdHMgc3R1ZGVudHMuIAoKCjYgCgoKSU5WSVNJQkxFIEhFTFBFUlMgCgoKVGhlaXIgaWRlYSBvZiB0aGUgYWZ0ZXItZGVhdGggc3RhdGUgd291bGQgYmUgcmF0aGVyIAp0byBsZXQgdGhlbXNlbHZlcyBiZSBhYnNvcmJlZCBpbiBzb21lIHJlcHJlc2VudGF0aW9uIApvZiB0aGUgRGVpdHksIGFuZCBzbyBvYnRhaW4gZ3JlYXQgYWR2YW5jZW1lbnQuIE5vLSAKZG91YnQsIGFmdGVyIHRoZSBhZHZhbmNlbWVudCB3YXMgYXR0YWluZWQgdGhleSAKbWlnaHQgYmUgb2YgdXNlIHRvIGh1bWFuaXR5LCBidXQgaGFyZGx5IGF0IHRoZSAKcHJlc2VudCBpbnRlcm1lZGlhdGUgc3RhZ2UuIEFsc28gdGhlcmUgd2FzIGxpdHRsZS0gCm5lZWQgb2YgaGVscCBhbW9uZyB0aGUgZGVhZCBvZiB0aGVpciBvd24gcGVvcGxlLCAKYmVjYXVzZSB0aGUgSGluZHUgcmVsaWdpb24gdGVhY2hlcyBpdHMgZm9sbG93ZXJzIApzb21ldGhpbmcgb2YgdGhlIHN0YXRlcyBhZnRlciBkZWF0aCwgc28gdGhhdCB0aGUgCnwgSW5kaWFuIHdoZW4gaGUgZGllcyB3b3VsZCBiZSBieSBubyBtZWFucyBhbGFybWVkIAosb3IgZGlzdHVyYmVkLiBUaGUgdGhvdWdodCB0aGF0IHRoZSBkZWFkIG1pZ2h0IApuZWVkIGhlbHAgYmV5b25kIHRoZSBvcmRpbmFyeSBTaHJhZGRoYSBjZXJlbW9ueSAKd291bGQgYmUgc29tZXdoYXQgZm9yZWlnbiB0byB0aGUgSW5kaWFuIG1pbmQ7IHNvIAp0aGUgZmFjdCByZW1haW5zIHRoYXQgdmVyeSBsaXR0bGUgb3JnYW5pemVkIHdvcmsgd2FzIApkb25lLiAKClRoZSBmZWVsaW5nIG9mIHRoZSBUaGVvc29waGlzdHMgd2hvIGluIHRoZSBiZWdpbi0gCm5pbmcgdG9vayB1cCB0aGlzIHdvcmsgd2FzLCBmaXJzdCBvZiBhbGwsIHRoYXQgdGhleSAKc2hvdWxkIG5vdCB3YXN0ZSB0aGUgaG91cnMgb2Ygc2xlZXAsIGFuZCBzZWNvbmRseSwgCnRoYXQgaGVyZSB3YXMgZ3JlYXQgc2NvcGUgZm9yIGFuIGFjdGl2aXR5IGluIHdoaWNoIApldmVyeSBwZXJzb24gd2hvIGtuZXcgZXZlbiBhIGxpdHRsZSBhYm91dCB0aGUgCmNvbmRpdGlvbnMgb2YgdGhhdCB3b3JsZCBjb3VsZCBiZSBvZiB1c2UuIFNvIAp0aGV5IHRocmV3IHRoZW1zZWx2ZXMgaW50byBpdCBhbmQgZGlkIHdoYXQgdGhleSAKY291bGQuIAoKVGhlcmUgaGF2ZSBiZWVuIG90aGVyIHJlbGlnaW9ucyB3aGljaCB0YXVnaHQgaW4gCm1pbnV0ZSBkZXRhaWwgdGhlIGNvbmRpdGlvbnMgb2YgdGhlIGxpZmUgYWZ0ZXIgZGVhdGgqLiAKVGhlIEVneXB0aWFuIHJlbGlnaW9uIGRpZCBzbywgYnV0IGl0cyBtZXRob2RzIHdlcmUgCkF0bGFudGVhbjsgaXRzIHZvdGFyaWVzIGhhZCBubyBpZGVhIG9mIGdlbmVyYWxpemF0aW9uLiAKVGhleSBrbmV3IGEgdmFzdCBtdWx0aXBsaWNpdHkgb2YgY2FzZXMsIGJ1dCBuZXZlciAKCgpUSEUgVU5JVkVSU0FMIEJFTElFRiBJTiBUSEVNIAoKCjcgCgoKc2VlbWVkIHRvIGluZmVyIGdlbmVyYWwgcnVsZXMgZnJvbSB0aGVtLSBJbiB0aGUgCkJvb2gtIG9mIHRoZSBEZWFkIHdlIGZpbmQgYW4gZW5vcm1vdXMgYW1vdW50IG9mIApkZXRhaWwsIGFuZCBpbiBlYWNoIGNhc2UgdGhlIG1ldGhvZCBvZiBkZWFsaW5nIHdpdGggCml0IGlzIGNhcmVmdWxseSBjaHJvbmljbGVkOyBidXQgdGhleSBuZXZlciBzZWVtIHRvIApoYXZlIGFycml2ZWQgYXQgdGhlIGZhY3QgdGhhdCBhbGwgdGhlc2UgbWV0aG9kcyB3ZXJlIAptYW5pZmVzdGF0aW9ucyBvZiB0aGUgaHVtYW4gd2lsbCwgYW5kIHRoYXQgYSBzdHJvbmcgCndpbGwgd291bGQgY2FycnkgYSBtYW4gdGhyb3VnaCB3aXRob3V0IHRoZSBkZXRhaWxlZCAKa25vd2xlZGdlLCBzbyB0aGF0IGFsbCB0aGVpciBjaGFybXMgYW5kIGN1cmlvdXMgCnJlY2l0YXRpb25zIHdlcmUgdW5uZWNlc3NhcnkuIAoKVW50aWwgVGhlb3NvcGh5IHRvb2sgdXAgdGhlIG1hdHRlciB3ZSBuZXZlciAKaGFkIGluIHRoZSBXZXN0IGFueSBzdGF0ZW1lbnQgYWJvdXQgdGhlIHdvcmxkIAphZnRlciBkZWF0aCB3aGljaCB3YXMgaW4gaGFybW9ueSB3aXRoIHRoZSBsaW5lIG9mIAptb2Rlcm4gc2NpZW5jZS4gU3Bpcml0dWFsaXNtIGRpZCBzb21ldGhpbmcgZm9yIHVzIAppbiB0aGUgd2F5IG9mIGNvbGxlY3RpbmcgaW5mb3JtYXRpb24sIGJ1dCBpdHMgbWV0aG9kcyAKd2VyZSBzcG9yYWRpYy4gSXQgZGlkIG5vdCB0ZWxsIHVzIG11Y2ggYWJvdXQgdGhhdCAKb3RoZXIgd29ybGQgYXMgYSB3aG9sZS4gSSB0aGluayB3ZSBtYXkgY2xhaW0gdGhhdCAKVGhlb3NvcGh5IGhhcyBkb25lIHRoYXQgZm9yIHVzOyBpdCBoYXMgYXBwbGllZCB0aGUgCm1vZGVybiBzY2llbnRpZmljIHNwaXJpdCB0byB0aGlzIHByb2JsZW0gb2YgdGhlIHVuc2VlbiAKd29ybGQsIGFuZCBoYXMgdGFidWxhdGVkIGl0cyBvYnNlcnZhdGlvbnMgYW5kIGJ1aWx0IAp1cCBhIGNvaGVyZW50IHN5c3RlbS4gT2YgY291cnNlIHdlIGhhdmUgbm8gc3BlY2lhbCAKcHJlcm9nYXRpdmUgaW4gYWxsIHRoaXM7IGFsbCB0aGUgaW5mb3JtYXRpb24gd2hpY2ggd2UgCmhhdmUgYWJvdXQgdGhlIGFzdHJhbCB3b3JsZCBtaWdodCBiZSBvYnRhaW5lZCBieSAKYW55IGludGVsbGlnZW50IGRlbml6ZW4gb2YgdGhhdCB3b3JsZC4gU28gd2UgCmZyZXF1ZW50bHkgZmluZCBwYXJ0aWN1bGFycyB3aGljaCB3ZSBhcmUgaW4gdGhlIGhhYml0IApvZiBjYWxsaW5nIFRoZW9zb3BoaWNhbCBjb21pbmcgdGhyb3VnaCBvdGhlciBjaGFuLSAKbmVsczsgYW5kIHRoYXQgd291bGQgYmUgc28gc3RpbGwgbW9yZSBvZnRlbiBpZiBpdCB3ZXJlIApub3QgZm9yIHRoZSBmYWN0IHRoYXQgbW9zdCBkZWFkIHBlb3BsZSBhcmUgbm90IHRyYWluZWQgCnNjaWVudGlmaWMgb2JzZXJ2ZXJzOyB0aGV5IGRlc2NyaWJlIGp1c3Qgd2hhdCB0aGV5IAoKCjggCgoKSU5WSVNJQkxFIEhFTFBFUlMgCgoKc2VlIGNsb3NlIHJvdW5kIHRoZW0sIGFuZCBkbyBub3QgdHJ5IHRvIHNlZSB0aGVpciAKd29ybGQgYXMgYSB3aG9sZS4gCgpXaGVuIHdlIGZpcnN0IGJlZ2FuIHRvIHRyeSB0byBkbyB3b3JrIGR1cmluZyAKc2xlZXAsIHdlIHNvb24gZm91bmQgdGhhdCB0aGVyZSB3ZXJlIG1hbnkgbGluZXMgCmFsb25nIHdoaWNoIGhlbHAgd2FzIHdhbnRlZCwgYm90aCBieSB0aGUgbGl2aW5nIAphbmQgdGhlIGRlYWQuIEkgYW0gdXNpbmcgdGhlc2Ugd29yZHMg4oCcbGl2aW5n4oCdIGFuZCAK4oCcZGVhZOKAnSBpbiB0aGUgb3JkaW5hcnkgYWNjZXB0YXRpb24sIGFuZCBJIHN1cHBvc2UgCkkgb3VnaHQgbm90IHRvIGRvIHNvIHdpdGhvdXQgZW50ZXJpbmcgYSBwcm90ZXN0LiAKVGhvc2UgZGVhZCBwZW9wbGUsIGFzIHRoZXkgYXJlIG5ldmVyIHRpcmVkIG9mIHRlbGxpbmcgCnVzLCBhcmUgbXVjaCBtb3JlIGFsaXZlIHRoYW4gd2UuIFRoZXkgc3BlYWsgb2YgCnVzIGFzIGRlYWQsIGJlY2F1c2Ugd2UgYXJlIGJ1cmllZCBpbiB0aGVzZSB0b21icyBvZiAKZmxlc2ggYW5kIHNodXQgb3V0IGZyb20gaGlnaGVyIGluZmx1ZW5jZXMuIFRoZXkgCm5ldmVyIHJlZ3JldCB0aGVpciBjb25kaXRpb24sIGJ1dCByYXRoZXIgcGl0eSB1cyBpbiAKb3Vycy4gV2Ugd2lsbCB0aGluayBvZiB0aGVtIGxhdGVyOyBsZXQgdXMgZmlyc3Qgc2VlIAp3aGF0IHdlIGNhbiBkbyB0byBoZWxwIGxpdmluZyBwZW9wbGUuIAoKUmVtZW1iZXIgdGhhdCBldmVyeSBuaWdodCB3aGVuIHlvdSBmYWxsIGFzbGVlcCAKeW91IGFiYW5kb24geW91ciBib2R5LiBZb3UgYXJlIHRoZW4gbGl2aW5nIGFzIApmcmVlbHkgaW4gdGhlIGFzdHJhbCB3b3JsZCBhcyBhbnkgZGVhZCBtYW4sIHRob3VnaCAKeW91IHJldGFpbiB0aGUgcG93ZXIgdG8gcmV0dXJuIHRvIHlvdXIgcGh5c2ljYWwgCnZlaGljbGUgaW4gdGhlIG1vcm5pbmcuIEJ1dCBmb3IgdGhlIHRpbWUgeW91IG1lZXQgCnRoZSBtb3JlIHBlcm1hbmVudCBhc3RyYWwgcmVzaWRlbnQgdXBvbiBlcXVhbCB0ZXJtcywgCmFuZCBjYW4gY29udmVyc2Ugd2l0aCBoaW0gZmFjZSB0byBmYWNlIHByZWNpc2VseSAKYXMgeW91IG1lZXQgeW91ciBwaHlzaWNhbCBmcmllbmRzIGV2ZXJ5IGRheSBkb3duIApoZXJlLiAKCk9uIHRoYXQgcGxhbmUgYXMgb24gdGhpcywgeW91IGNhbiBjb21mb3J0IHRoZSAKc3VmZmVyZXJzOyBldmVuIHRob3NlIHdobyBzdGlsbCBsaXZlIGluIHRoaXMgZGVuc2VyIAp3b3JsZCBjYW4gYmUgYWlkZWQgYnkgeW91ciBraW5kbHkgZmVlbGluZy4gQXMgYSAKcnVsZSB5b3UgY2Fubm90IHNob3cgeW91cnNlbGYgdG8gYW55IHBlcnNvbiB3aG8gCgoKVEhFIFVOSVZFUlNBTCBCRUxJRUYgSU4gVEhFTSAKCgo5IAoKCmlzIGF3YWtlIGluIGhpcyBwaHlzaWNhbCBib2R5OyB0byBkbyB0aGF0IG1hdGVyaWFsaS0gCnphdGlvbiBpcyBuZWVkZWQg4oCUIHRoYXQgaXMgdG8gc2F5LCB5b3UgbXVzdCBkcmF3IApyb3VuZCB5b3VyIGFzdHJhbCBib2R5IGEgdmVpbCBvZiBwaHlzaWNhbCBtYXR0ZXIsIAphbmQgdGhhdCBpcyBhbiBhcnQgd2hpY2ggaGFzIHRvIGJlIGFjcXVpcmVkLCBhbmQgaXMgCm5vdCBlYXNpbHkgd29uLiBZb3UgY2FuIHBvdXIgbG92ZSBhbmQgc3ltcGF0aHkgCnVwb24gaGltIGF0IGFueSB0aW1lOyBidXQgdG8gc2hvdyB5b3Vyc2VsZiB0byBoaW0gCm9yIHRvIHNwZWFrIHRvIGhpbSwgaXQgaXMgYmV0dGVyIHRvIHdhaXQgdGlsbCBoZSBpcyAKYXNsZWVwLiBFdmVuIGZyb20geW91ciBhc3RyYWwgYm9keSB5b3UgY2FuIHNlbmQgCm91dCBzb290aGluZyBhbmQgY2FsbWluZyBjdXJyZW50cyB3aGljaCB3aWxsIApxdWlldGVuIG92ZXJzdHJhaW5lZCBwaHlzaWNhbCBuZXJ2ZXMsIGFuZCBlbmFibGUgYSAKcGVyc29uIHRvIHNsZWVwIHdobyBjb3VsZCBub3Qgb3RoZXJ3aXNlIGRvIHNvLiAKQWxzbyB5b3UgY2FuIG9mdGVuIHJlbGlldmUgbWVudGFsIGFuZ3Vpc2ggYnkgcHV0dGluZyAKY2hlZXJmdWwgdGhvdWdodHMgaW50byBhIG1hbuKAmXMgbWluZCwgYW5kIHNob3dpbmcgCmhpbSB3aXRob3V0IHdvcmRzIHRoYXQgaGlzIGNhc2UsIGFmdGVyIGFsbCwgbWlnaHQgYmUgCnZlcnkgbXVjaCB3b3JzZSB0aGFuIGl0IGlzLiAKCllvdSBjYW4gb2Z0ZW4gZG8gc29tZXRoaW5nIHRvd2FyZHMgY2FsbWluZyEgCnBlb3BsZSB3aG8gYXJlIGluIGEgc3RhdGUgb2Ygd29ycnkgYW5kIGV4Y2l0ZW0gZW50Zi0gClRoZXJlIGFyZSB0aG91c2FuZHMgb2YgdGhlbSB3aG8gbmV2ZXIga25vdyB3aGF0IAppdCBpcyB0byBiZSBmcmVlIGZyb20gd29ycnksIGFuZCB2ZXJ5IG9mdGVuIGl0IGlzIAphYm91dCBzb21lIHRyaWZsaW5nIGFmZmFpciB3aGljaCByZWFsbHkgZG9lcyBub3QgCm1hdHRlciBpbiB0aGUgbGVhc3QuIFN1Y2ggbWVuIGFyZSBtZW50YWxseSBpbGwg4oCUIAppbiBhIGNvbmRpdGlvbiBvZiB2ZXJ5IHNlcmlvdXMgaWxsbmVzcyBhcyByZWdhcmRzIHRoZWlyIApoaWdoZXIgdmVoaWNsZXMuIFRoZW4gdGhlcmUgYXJlIHRoZSBwZW9wbGUgd2hvIAphcmUgYWx3YXlzIGRvdWJ0aW5nIGV2ZXJ5dGhpbmc7IHRoYXQgaXMgYW5vdGhlciBmb3JtIApvZiBtZW50YWwgZGlzZWFzZSwgYW5kIHNvbWV0aW1lcyB5b3UgY2FuIGRvIG11Y2ggCnRvIHJlbGlldmUgaXQgYnkgZ2l2aW5nIHRoZW0gdGhlIHBsYWluIGNvbW1vbiBzZW5zZSAK4oCib2YgVGhlb3NvcGh5LiBUaGV5IGFyZSBvZnRlbiBtYXRlcmlhbGlzdHMsIGFuZCAK4oCiY2xhaW0gdGhhdCB0aGVpciBkb2N0cmluZSBpcyBjb21tb20gc2Vuc2U7IGJ1dCB5b3UgCgoKMTAgCgoKSU5WSVNJQkxFIEhFTFBFUlMgCgoKY2FuIGV4cGxhaW4gdGhhdCBhIHRoZW9yeSB3aGljaCBkZWNsaW5lcyB0byB0YWtlKiAKaW50byBhY2NvdW50IG5vbi1waHlzaWNhbCBmYWN0cyBpcyBoYXJkbHkgd29ydGh5IG9mIAp0aGF0IG5hbWUsIGFuZCBvbiB0aGUgYXN0cmFsIHBsYW5lIHRob3NlIGZhY3RzIGFyZSAKZmFyIG1vcmUgZWFzaWx5IGRlbW9uc3RyYXRlZCB0aGFuIG9uIHRoaXMuIAoKQWdhaW4sIHdlIGNhbiB0cnkgdG8gaGVscCB0aG9zZSB3aG9tIHdlIGxvdmUgYnkgCmZsb29kaW5nIHRoZW0gd2l0aCBxdWFsaXRpZXMgd2hpY2ggd2Ugc2VlIHRvIGJlIApsYWNraW5nIGluIHRoZW0uIElmIHdlIGhhdmUgYSBmcmllbmQgd2hvIGlzIHBhaW4tIApmdWxseSBzaHkgYW5kIG5lcnZvdXMsIHdlIGNhbiBvZnRlbiBzZW5kIGhpbSAKdGhvdWdodHMgb2YgY291cmFnZSwgc3RyZW5ndGggYW5kIGNvbmZpZGVuY2U7IGlmIHdlIApmaW5kIGhpbSBhcHQgdG8gYmUgaGFyc2ggYW5kIGludG9sZXJhbnQgaW4gaGlzIGp1ZGctIAptZW50cywgd2UgY2FuIGVuZm9sZCBoaW0gaW4gY2xvdWRzIG9mIGxvdmUgYW5kIApnZW50bGVuZXNzLiBCdXQgc3VjaCB3b3JrIG11c3QgYmUgZG9uZSB3aXRoIHRoZSAKdmVyeSBncmVhdGVzdCBjYXJlIOKAlCBhbHdheXMgYnkgcXVpZXQgc3VnZ2VzdGlvbiwgYW5kIApuZXZlciBmb3IgYSBtb21lbnQgYnkgZG9taW5hdGlvbi4gSXQgaXMgbm90IGRpZmZpLSAKY3VsdCBmcm9tIHRoYXQgaGlnaGVyIHdvcmxkIHRvIGltcHJlc3MgYSBzdHJvbmc7IAp0aG91Z2h0IHVwb24gYSBwZXJzb247IGl0IHdvdWxkIGJlIHF1aXRlIHBvc3NpYmxlKiAKdG8gZG9taW5hdGUgYW4gYXZlcmFnZSBtYW4sIGFuZCBwcmFjdGljYWxseSBjb2VyY2UgCmhpbSBieSB0aG91Z2h0IHRvIGFkb3B0IGEgY2VydGFpbiBsaW5lIG9mIGFjdGlvbjs7IApidXQgd2Ugc2hvdWxkIGNvbnNpZGVyIHRoYXQgZW50aXJlbHkgaW5hZG1pc3NpYmxlLiAKCkFtb25nIHRoZSBiZWF1dGlmdWwgY29uY2VwdGlvbnMgd2hpY2ggVGhlb3NvLSAKcGh5IGhhcyByZXN0b3JlZCB0byB1cyBzdGFuZHMgcHJlLWVtaW5lbnQgdGhhdCBvZiAKdGhlIGdyZWF0IGhlbHBmdWwgYWdlbmNpZXMgb2YgbmF0dXJlLiBUaGUgYmVsaWVmIGluIAp0aGVzZSBoYXMgYmVlbiB3b3JsZC13aWRlIGZyb20gdGhlIGVhcmxpZXN0IGRhd24gb2YgCmhpc3RvcnksIGFuZCBpcyB1bml2ZXJzYWwgZXZlbiBub3cgb3V0c2lkZSB0aGUgbmFyLSAKcm93IGRvbWFpbnMgb2YgcHJvdGVzdGFudGlzbSwgd2hpY2ggaGFzIGVtcHRpZWQgCmFuZCBkYXJrZW5lZCB0aGUgd29ybGQgZm9yIGl0cyB2b3RhcmllcyBieSBpdHMtIAphdHRlbXB0IHRvIGRvIGF3YXkgd2l0aCB0aGUgbmF0dXJhbCBhbmQgcGVyZmVjdGx5IAp0cnVlIGlkZWEgb2YgaW50ZXJtZWRpYXRlIGFnZW50cywgYW5kIHJlZHVjZSAKCgpUSEUgVU5JVkVSU0FMIEJFTElFRiBJTiBUSEVNIAoKCjExIAoKCmV2ZXJ5dGhpbmcgdG8gdGhlIHR3byBmYWN0b3JzIG9mIG1hbiBhbmQgRGVpdHkg4oCUIGEgCmRldmljZSB3aGVyZWJ5IHRoZSBjb25jZXB0aW9uIG9mIERlaXR5IGhhcyBiZWVuIGluLSAKZmluaXRlbHkgZGVncmFkZWQsIGFuZCBtYW4gaGFzIHJlbWFpbmVkKiB1bmhlbHBlZC4uIAoKQSBtb21lbnTigJlzIHRob3VnaHQgd2lsbCBzaG93IHRoYXQgdGhlIG9yZGluYXJ5IAp2aWV3IG9mIFByb3ZpZGVuY2Ug4oCUIHRoZSBjb25jZXB0aW9uIG9mIGFuIGVycmF0aWMgCmludGVyZmVyZW5jZSBieSB0aGUgQ2VudHJhbCBQb3dlciBvZiB0aGUgdW5pdmVyc2UtIAp3aXRoIHRoZSByZXN1bHQgb2YgSGlzIG93biBkZWNyZWVzIOKAlCB3b3VsZCBpbXBseSAKdGhlIGludHJvZHVjdGlvbiBvZiBwYXJ0aWFsaXR5IGludG8gdGhlIHNjaGVtZSwgYW5kIAp0aGVyZWZvcmUgb2YgdGhlIHdob2xlIHRyYWluIG9mIGV2aWxzIHdoaWNoIG11c3QgCm5lY2Vzc2FyaWx5IGZvbGxvdyB1cG9uIGl0cyBoZWVscy4gVGhlIFRoZW9zb3BoaS0gCmNhbCB0ZWFjaGluZywgdGhhdCBhIG1hbiBjYW4gYmUgdGh1cyBzcGVjaWFsbHkgaGVscC0gCmVkIG9ubHkgd2hlbiBoaXMgcGFzdCBhY3Rpb25zIGhhdmUgYmVlbiBzdWNoIGFzIHRvKiAKZGVzZXJ2ZSB0aGlzIGFzc2lzdGFuY2UsIGFuZCB0aGF0IGV2ZW4gdGhlbiB0aGUgaGVscCAKd2lsbCBiZSBnaXZlbiB0aHJvdWdoIHRob3NlIHdobyBhcmUgY29tcGFyYXRpdmVseSAKbmVhciBoaXMgb3duIGxldmVsLCBpcyBmcmVlIGZyb20gdGhpcyBzZXJpb3VzIG9iamVjLSAKdGlvbjsgYW5kIGl0IGZ1cnRoZXJtb3JlIGJyaW5ncyBiYWNrIHRvIHVzIHRoZSBvbGRlciAKYW5kIGZhciBncmFuZGVyIGNvbmNlcHRpb24gb2YgYW4gdW5icm9rZW4gbGFkZGVyIG9mIApsaXZpbmcgYmVpbmdzIGV4dGVuZGluZyBkb3duIGZyb20gdGhlIExvZ29zIEhpbS0gCnNlbGYgdG8gdGhlIHZlcnkgZHVzdCBiZW5lYXRoIG91ciBmZWV0LiAKCkluIHRoZSBFYXN0IHRoZSBleGlzdGVuY2Ugb2YgdGhlIGludmlzaWJsZSBoZWxwZXJzIApoYXMgYWh2YXlzIGJlZW4gcmVjb2duaXplZCwgdGhvdWdoIHRoZSBuYW1lcyBnaXZlbiAKYW5kIHRoZSBjaGFyYWN0ZXJpc3RpY3MgYXR0cmlidXRlZCB0byB0aGVtIG5hdHVyYWxseSAKdmFyeSBpbiBkaWZmZXJlbnQgY291bnRyaWVzOyBhbmQgZXZlbiBoZXJlIGluIEV1cm9wZSAKd2UgaGF2ZSBoYWQgdGhlIG9sZCBHcmVlayBzdG9yaWVzIG9mIHRoZSBjb25zdGFudCAKaW50ZXJmZXJlbmNlIG9mIHRoZSBnb2RzIGluIGh1bWFuIGFmZmFpcnMsIGFuZCB0aGUgClJvbWFuIGxlZ2VuZCB0aGF0IENhc3RvciBhbmQgUG9sbHV4IGxlZCB0aGUgbGVnaW9ucyAKb2YgdGhlIGluZmFudCByZXB1YmxpYyBpbiB0aGUgYmF0dGxlIG9mIExha2UgUmVnaWxsdXMuIApOb3IgZGlkIHN1Y2ggYSBjb25jZXB0aW9uIGRpZSBvdXQgd2hlbiB0aGUgY2xhc3NpY2FsIAoKCjEyIAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCnBlcmlvZCBlbmRlZCwgZm9yIHRoZXNlIHN0b3JpZXMgaGF2ZSB0aGVpciBsZWdpdGktIAptYXRlIHN1Y2Nlc3NvcnMgaW4gbWVkaWFldmFsIHRhbGVzIG9mIHNhaW50cyB3aG8gCmFwcGVhcmVkIGF0IGNyaXRpY2FsIG1vbWVudHMgYW5kIHR1cm5lZCB0aGUgZm9ydHVuZSAKb2Ygd2FyIGluIGZhdm91ciBvZiB0aGUgQ2hyaXN0aWFuIGhvc3RzLCBvciBvZiBndWFyLSAKZGlhbiBBbmdlbHMgd2hvIHNvbWV0aW1lcyBzdGVwcGVkIGluIGFuZCBzYXZlZCBhIApwaW91cyB0cmF2ZWxsZXIgZnJvbSB3aGF0IHdvdWxkIG90aGVyd2lzZSBoYXZlIApiZWVuIGNlcnRhaW4gZGVzdHJ1Y3Rpb24uIAoKCkNIQVBURVIgSUkgCgoKU09NRSBNT0RFUk4gSU5TVEFOQ0VTIAoKRXZlbiBpbiB0aGlzIGluY3JlZHVsb3VzIGFnZSwgYW5kIGFtaWRzdCB0aGUgZnVsbCcgCndoaXJsIG9mIG91ciB0d2VudGlldGgtY2VudHVyeSBjaXZpbGl6YXRpb24sIGluIHNwaXRlIApvZiB0aGUgZG9nbWF0aXNtIG9mIG91ciBzY2llbmNlIGFuZCB0aGUgZGVhZGx5IApkdWxuZXNzIG9mIG91ciBwcm90ZXN0YW50aXNtLCBpbnN0YW5jZXMgb2YgaW50ZXJ2ZW4tIAp0aW9uIGluZXhwbGljYWJsZSBmcm9tIHRoZSBtYXRlcmlhbGlzdGljIHN0YW5kcG9pbnQgCm1heSBzdGlsbCBiZSBmb3VuZCBieSBhbnlvbmUgd2hvIHdpbGwgdGFrZSB0aGUgCnRyb3VibGUgdG8gbG9vayBmb3IgdGhlbTsgYW5kIGluIG9yZGVyIHRvIGRlbW9uLSAKc3RyYXRlIHRoaXMgdG8gdGhlIHJlYWRlciBJIHdpbGwgYnJpZWZseSBlcGl0b21pemUgYSAKZmV3IG9mIHRoZSBleGFtcGxlcyBnaXZlbiBpbiBvbmUgb3Igb3RoZXIgb2YgdGhlIApyZWNlbnQgY29sbGVjdGlvbnMgb2Ygc3VjaCBzdG9yaWVzLCBhZGRpbmcgdGhlcmV0byBvbmUgCm9yIHR3byB0aGF0IGhhdmUgY29tZSB3aXRoaW4gbXkgb3duIG5vdGljZS4gCgpPbmUgdmVyeSByZW1hcmthYmxlIGZlYXR1cmUgb2YgdGhlc2UgbW9yZSByZWNlbnQgCmV4YW1wbGVzIGlzIHRoYXQgdGhlIGludGVydmVudGlvbiBzZWVtcyBzbyBvZnRlbiB0byAKaGF2ZSBiZWVuIGRpcmVjdGVkIHRvd2FyZHMgdGhlIGhlbHBpbmcgb3Igc2F2aW5nIG9mIApjaGlsZHJlbi4gCgpBbiBpbnRlcmVzdGluZyBjYXNlIHdoaWNoIG9jY3VycmVkIGluIExvbmRvbiAKb25seSBhIGZldyB5ZWFycyBhZ28gd2FzIGNvbm5lY3RlZCB3aXRoIHRoZSBwcmUtIApzZXJ2YXRpb24gb2YgYSBjaGlsZOKAmXMgbGlmZSBpbiB0aGUgbWlkc3Qgb2YgYSB0ZXJyaWJsZSAKZmlyZSwgd2hpY2ggYnJva2Ugb3V0IGluIGEgc3RyZWV0IG5lYXIgSG9sYm9ybiwgYW5kIAplbnRpcmVseSBkZXN0cm95ZWQgdHdvIG9mIHRoZSBob3VzZXMgdGhlcmUuIFRoZSAKCgoxNCAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgpmbGFtZXMgaGFkIG9idGFpbmVkIHN1Y2ggaG9sZCBiZWZvcmUgdGhleSB3ZXJlIGRpcy0gCmNvdmVyZWQgdGhhdCB0aGUgZmlyZW1lbiB3ZXJlIHVuYWJsZSB0byBzYXZlIHRoZSAKaG91c2VzLCBidXQgdGhleSBzdWNjZWVkZWQgaW4gcmVzY3VpbmcgYWxsIHRoZSBpbi0gCm1hdGVzIGV4Y2VwdCB0d28g4oCUIGFuIG9sZCB3b21hbiB3aG8gd2FzIHN1ZmZvLSAKY2F0ZWQgYnkgdGhlIHNtb2tlIGJlZm9yZSB0aGV5IGNvdWxkIHJlYWNoIGhlciwgCmFuZCBhIGNoaWxkIGFib3V0IGZpdmUgeWVhcnMgb2xkLCB3aG9zZSBwcmVzZW5jZSBpbiAKdGhlIGhvdXNlIGhhZCBiZWVuIGZvcmdvdHRlbiBpbiB0aGUgaHVycnkgYW5kIApleGNpdGVtZW50IG9mIHRoZSBtb21lbnQuIAoKVGhlIG1vdGhlciBvZiB0aGUgY2hpbGQsIGl0IHNlZW1zLCB3YXMgYSBmcmllbmQgCuKAoiBvciByZWxhdGl2ZSBvZiB0aGUgbGFuZGxhZHkgb2YgdGhlIGhvdXNlLCBhbmQgaGFkIApsZWZ0IHRoZSBsaXR0bGUgY3JlYXR1cmUgaW4gaGVyIGNoYXJnZSBmb3IgdGhlIG5pZ2h0LCAKYmVjYXVzZSBzaGUgd2FzIGhlcnNlbGYgb2JsaWdlZCB0byBnbyBkb3duIHRvIApDb2xjaGVzdGVyIG9uIGJ1c2luZXNzLiBJdCB3YXMgbm90IHVudGlsIGV2ZXJ5IG9uZSAKLWVsc2UgaGFkIGJlZW4gcmVzY3VlZCwgYW5kIHRoZSB3aG9sZSBob3VzZSB3YXMgCndyYXBwZWQgaW4gZmxhbWUsIHRoYXQgdGhlIGxhbmRsYWR5IHJlbWVtYmVyZWQgCndpdGheZ0xedCBncnJpYmxlLiBwYW4gZyB0aGUgdHJ1c3QgdGhhdCBoYWQgYmVlbiBjb24tIApmaWRlZCB0byBoZXIuIEl0IHNlZW1lZCBob3BlbGVzcyB0aGVuIHRvIGF0dGVtcHQgCnRvIHJlYWNoIHRoZSBnYXJyZXQgd2hlcmUgdGhlIGNoaWxkIGhhZCBiZWVuIHB1dCB0byAKYmVkLCBidXQgb25lIG9mIHRoZSBmaXJlbWVuIGhlcm9pY2FsbHkgcmVzb2x2ZWQsIHRvIAptYWtlIHRoZSBkZXNwZXJhdGUgZWZmb3J0LCAuYW5kLCBhZnRlciByZWNlaXZpbmcgCm1pbnV0ZSBkaXJlY3Rpb25zIGFzIHRvIHRoZSBleGFjdCBzaXR1YXRpb24gb2YgdGhlIApyb29tLCBwbHVuZ2VkIGluIGFtb25nIHRoZSBzbW9rZSBhbmQgZmxhbWUuIC4uLiAKCkhlIGZvdW5kIHRoZSBjaGlsZCwgYW5kIGJyb3VnaHQgaGltIGZvcnRoIAotZW50aXJlbHkgdW5oYXJtZWQ7IGJ1dCB3aGVuIGhlIHJlam9pbmVkIGhpcyBjb20tIApyYWRlcyBoZSBoYWQgYSB2ZXJ5IHNpbmd1bGFyIHN0b3J5IHRvIHRlbGwuIEhlIApeZGVjbGFyZWQgdGhhdCB3aGVuIGhlIHJlYWNoZWQgdGhlIHJvb20gaGUgZm91bmQgCml0IGluIGZsYW1lcywgYW5kIG1vc3Qgb2YgdGhlIGZsb29yIGFscmVhZHkgZmFsbGVuOyAKYnV0IHRoZSBmaXJlIGhhZCBjdXJ2ZWQgcm91bmQgdGhlIHJvb20gdG93YXJkcyAKCgpTT01FIE1PREVSTiBJTlNUQU5DRVMgCgoKMTUgCgoKdGhlIHdpbmRvdyBpbiBhbiB1bm5hdHVyYWwgYW5kIHVuYWNjb3VudGFibGUgCm1hbm5lciwgdGhlIGxpa2Ugb2Ygd2hpY2ggaW4gYWxsIGhpcyBleHBlcmllbmNlIGhlIApoYWQgbmV2ZXIgc2VlbiBiZWZvcmUsIHNvIHRoYXQgdGhlIGNvcm5lciBpbiB3aGljaCAKdGhlIGNoaWxkIGxheSB3YXMgd2hvbGx5IHVudG91Y2hlZCwgYWx0aG91Z2ggdGhlIAp2ZXJ5IHJhZnRlcnMgb2YgdGhlIGZyYWdtZW50IG9mIGZsb29yIG9uIHdoaWNoIGhpcyAKbGl0dGxlIGNyaWIgc3Rvb2QgdyBzIGVyZSBoYWxmIGJ1cm50IGF3YXkuIFRoZSBjaGlsZCAKd2FzIG5hdHVyYWxseSB2ZXJ5IG11Y2ggdGVycmlmaWVkLCBidXQgdGhlIGZpcmVtYW4gCmRpc3RpbmN0bHkgYW5kIHJlcGVhdGVkbHkgZGVjbGFyZWQgdGhhdCBhcyBhdCBncmVhdCAKcmlzayBoZSBtYWRlIGhpcyB3YXkgdG93YXJkcyBoaW0gaGUgc2F3IGEgZm9ybSAKbGlrZSBhbiBBbmdlbCDigJQgLWhlcmUgaGlzIGV4YWN0IHdvcmRzIGFyZSBnaXZlbiDigJQgYSAKc29tZXRoaW5nIOKAnGFsbCBnbG9yaW91c2x5IHdoaXRlIGFuZCBzaWx2ZXJ5LCBiZW5kLSAKaW5nIG92ZXIgdGhlIGJlZCBhbmQgc21vb3RoaW5nIGRvd24gdGhlIGNvdW50ZXItIApwYW5lLuKAnSBIZSBjb3VsZCBub3QgcG9zc2libHkgaGF2ZSBtYWRlIGFueSAKbWlzdGFrZSBhYm91dCBpdCwgaGUgc2FpZCwgZm9yIGl0IHdhcyB2aXNpYmxlIGluIArigKJhIGdsYXJlIG9mIGxpZ2h0IGZvciBzb21lIG1vbWVudHMsIGFuZCBpbiBmYWN0LCAKZGlzYXBwZWFyZWQgb25seSB3aGVuIGhlIHdhcyB3aXRoaW4gYSBmZXcgCmxlZXQgb2YgaXQuIAoKQW5vdGhlciBjdXJpb3VzIGZlYXR1cmUgb2YgdGhpcyBzdG9yeSBpcyB0aGF0IHRoZSAKY2hpbGTigJlzIG1vdGhlciBmb3VuZCBoZXJzZWxmIHVuYWJsZSB0byBzbGVlcCB0aGF0IAoKbmlnaHQgZG93biBhdCBDb2xjaGVzdGVyLCDigJ4gYnV0IHdhcyBjb25zdGFudGx5IAoKaGFyYXNzZWQgYnkgYSBzdHJvbmctZmVlbGluZyB0aGF0IHNvbWV0aGluZyBceWFzIAoKd3Jvbmcgd2l0aCBoZXIgY2hpbGQsIGluc29tdWNoIF8gdGhhdCBhdCBsYXN0IHNoZSAKCndhcyBjb21wZWxsZWQgdG8gcmlzZSBhbmQgc3BlbmQgc29tZSB0aW1lIGluIAplYXJuZXN0IHByYXllciB0aGF0IHRoZSBsaXR0bGUgb25lIG1pZ2h0IGJlIHByb3RlY3RlZCAKZnJvbSB0aGUgZGFuZ2VyIHdoaWNoIHNoZSBpbnN0aW5jdGl2ZWx5IGZlbHQgdG8gYmUgCmhhbmdpbmcgb3ZlciBoaW0uIFRoZSBpbnRlcnZlbnRpb24gd2FzIHRodXMgCl5ldmlkZW50bHkgd2hhdCBhIENocmlzdGlhbiB3b3VsZCBjYWxsIGFuIGFuc3dlciB0byAKcHJheWVyOyB8bCBUaGVvc29waGlzdCwgcHV0dGluZyB0aGUgc2FtZSBpZGVhIGluIAoKCjE2IAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCm1vcmUgc2NpZW50aWZpYyBwaHJhc2VvbG9neSwgd291bGQgc2F5IHRoYXQgaGVyIAppbnRlbnNlIG91dHBvdXJpbmcgb2YgbG92ZSBjb25zdGl0dXRlZCBhIGZvcmNlIHdoaWNoIApvbmUgb2Ygb3VyIGludmlzaWJsZSBoZWxwZXJzIHdhcyBhYmxlIHRvIHVzZSBmb3IgdGhlIApyZXNjdWUgb2YgaGVyIGNoaWxkIGZyb20gYSB0ZXJyaWJsZSBkZWF0aC4gCgpBIHJlbWFya2FibGUgY2FzZSBpbiB3aGljaCBjaGlsZHJlbiB3ZXJlIGFibm9yLSAKbWFsbHkgcHJvdGVjdGVkIG9jY3VycmVkIG9uIHRoZSBiYW5rcyBvZiB0aGUgClRoYW1lcyBuZWFyIE1haWRlbmhlYWQgYSBmZXcgeWVhcnMgZWFybGllciB0aGFuIApvdXIgbGFzdCBleGFtcGxlLiBUaGlzIHRpbWUgdGhlIGRhbmdlciBmcm9tIHdoaWNoIAp0aGV5IHdlcmUgc2F2ZWQgYXJvc2Ugbm90IGZyb20gZmlyZSBidXQgZnJvbSB3YXRlci4gClRocmVlIGxpdHRsZSBvbmVzLCB3aG8gbGl2ZWQsIGlmIEkgcmVjb2xsZWN0IHJpZ2h0bHksIGluIApvciBuZWFyIHRoZSB2aWxsYWdlIG9mIFNob3R0ZXNicm9vaywgd2VyZSB0YWtlbiBvdXQgCmZvciBhIHdhbGsgYWxvbmcgdGhlIHRvd2luZy1wYXRoIGJ5IHRoZWlyIG51cnNlLiAKVGhleSBydXNoZWQgc3VkZGVubHkgcm91bmQgYSBjb3JuZXIgdXBvbiBhIGhvcnNlIAp3aGljaCB3YXMgZHJhd2luZyBhIGJhcmdlLCBhbmQgaW4gdGhlIGNvbmZ1c2lvbiAxIAp0d28gb2YgdGhlbSBmb3VuZCB0aGVtc2VsdmVzIG9uIHRoZSB3cm9uZyBzaWRlIG9mIAp0aGUgdG93LXJvcGUgYW5kIHdlcmUgdGhyb3duIGludG8gdGhlIHdhdGVyLiAKClRoZSBib2F0bWFuLCB3aG8gc2F3IHRoZSBhY2NpZGVudCwgc3ByYW5nIGZvci0gCndhcmQgdG8gdHJ5IHRvIHNhdmUgdGhlbSwgYW5kIGhlIG5vdGljZWQgdGhhdCB0aGV5IAp3ZXJlIGZsb2F0aW5nIGhpZ2ggaW4gdGhlIHdhdGVyIOKAnGluIHF1aXRlIGFuIAp1bm5hdHVyYWwgd2F5LCBsaWtlLOKAnSBhcyBoZSBzYWlkLCBhbmQgbW92aW5nIHF1aWV0bHkgCnRvd2FyZHMgdGhlIGJhbmsuIFRoaXMgd2FzIGFsbCB0aGF0IGhlIGFuZCB0aGUgCm51cnNlIHNhdywgYnV0IHRoZSBjaGlsZHJlbiBlYWNoIGRlY2xhcmVkIHRoYXQg4oCcYSAKYmVhdXRpZnVsIHBlcnNvbiwgYWxsIHdoaXRlIGFuZCBzaGluaW5nLOKAnSBzdG9vZCAKYmVzaWRlIHRoZW0gaW4gdGhlIHdhdGVyLCBoZWxkIHRoZW0gdXAgYW5kIGd1aWRlZCAKdGhlbSB0byB0aGUgc2hvcmUuIE5vciB3YXMgdGhlaXIgc3Rvcnkgd2l0aG91dCAKY29ycm9ib3JhdGlvbiwgZm9yIHRoZSBiYXJnZW1hbuKAmXMgbGl0dGxlIGRhdWdodGVyLCwgCndobyByYW4gdXAgZnJvbSB0aGUgY2FiaW4gd2hlbiBzaGUgaGVhcmQgdGhlIApzY3JlYW1zIG9mIHRoZSBudXJzZSwgYWxzbyBhZmZpcm1lZCB0aGF0IHNoZSBzYXcgYSAKCgpTT01FIE1PREVSTiBJTlNUQU5DRVMgCgoKMTcgCgoKbG92ZWx5IGxhZHkgaW4gdGhlIHdhdGVyIGRyYWdnaW5nIHRoZSB0d28gY2hpbGRyZW4gCnRvIHRoZSBiYW5rLiAKCldpdGhvdXQgZnVsbGVyIHBhcnRpY3VsYXJzIHRoYW4gdGhlIHN0b3J5IGdpdmVzIHVzLCAKaXQgaXMgaW1wb3NzaWJsZSB0byBzYXkgd2l0aCBjZXJ0YWludHkgZnJvbSB3aGF0IApjbGFzcyBvZiBoZWxwZXJzIHRoaXMg4oCcQW5nZWzigJ0gd2FzIGRyYXduOyBidXQgdGhlIApwcm9iYWJpbGl0aWVzIGFyZSBpbiBmYXZvdXIgb2YgaXRzIGhhdmluZyBiZWVuIGEgCmRldmVsb3BlZCBodW1hbiBiZWluZyBmdW5jdGlvbmluZyBpbiB0aGUgYXN0cmFsIApib2R5LCBhcyB3aWxsIGJlIHNlZW4gd2hlbiBsYXRlciBvbiB3ZSBkZWFsIHdpdGggCnRoaXMgU3ViamVjdCBmcm9tIHRoZSBvdGhlciBzaWRlLCBhcyBpdCB3ZXJlIOKAlCBmcm9tIHRoZSAKcG9pbnQgb2YgdmlldyBvZiB0aGUgaGVscGVycyByYXRoZXIgdGhhbiB0aGUgaGVscGVkLiAKCkEgY2FzZSBpbiB3aGljaCB0aGUgYWdlbmN5IGlzIHNvbWV3aGF0IAptb3JlIGRlZmluaXRlbHkgZGlzdGluZ3Vpc2hhYmxlIGlzIHJlbGF0ZWQgYnkgdGhlIAp3ZWxsLWtub3duIGNsZXJneW1hbiwgRHIuIEpvaG4gTWFzb24gTmVhbGUuIEhlIApzdGF0ZXMgdGhhdCBhIG1hbiB3aG8gaGFkIHJlY2VudGx5IGxvc3QgaGlzIHdpZmUgCndhcyBvbiBhIHZpc2l0IHdpdGggaGlzIGxpdHRsZSBjaGlsZHJlbiBhdCB0aGUgY291bnRyeSAKaG91c2Ugb2YgYSBmcmllbmQuIEl0IHdhcyBhbiBvbGQsIHJhbWJsaW5nIG1hbi0gCnNpb24sIGFuZCBpbiB0aGUgbG93ZXIgcGFydCBvZiBpdCB0aGVyZSB3ZXJlIGxvbmcsIApkYXJrIHBhc3NhZ2VzLCBpbiB3aGljaCB0aGUgY2hpbGRyZW4gcGxheWVkIGFib3V0IAp3aXRoIGdyZWF0IGRlbGlnaHQuIEJ1dCBwcmVzZW50bHkgdGhleSBjYW1lIHVwc3RhaXJzIAp2ZXJ5IGdyYXZlbHksIGFuZCB0d28gb2YgdGhlbSByZWxhdGVkIHRoYXQgYXMgdGhleSAKd2VyZSBydW5uaW5nIGRvd24gb25lIG9mIHRoZXNlIHBhc3NhZ2VzIHRoZXkgd2VyZSAKbWV0IGJ5IHRoZWlyIG1vdGhlciwgd2hvIHRvbGQgdGhlbSB0byBnbyBiYWNrIAphZ2FpbiwgYW5kIHRoZW4gZGlzYXBwZWFyZWQuIEludiBlc3RpZ2F0aW9uIHJldmVhbGVkIAp0aGUgZmFjdCB0aGF0IGlmIHRoZSBjIGhpbGRyZW4gaGFkIExybUxpP1BKTGFeZmV3X3N0ZUVwIApmYXJ0aGVyIHRoZXkgd291bGQgaCBhdmUgZmFsbGVuX2QgbyB3IGEtIGEgXiBkZWVwIHVuLS4gCmNvdmVyZWQgd2VsbCB3aGljaCB5YXduZWQgZnVsbCBpbiB0aGVpciBwYXRoLCBzbyDigJ4gCnRoYXQgdGhlLCBhcHAgYXJpdGlvbiBvZiB0aGVpciBtb3RoZXIgaGFkIHNhdmVkIHRoZW0gCmZyb20gYWxtb3N0IGNlcnRhaW4gZGVhdGguIAoKMiAKCgoxOCAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgpJbiB0aGlzIGluc3RhbmNlIHRoZXJlIHNlZW1zIG5vIHJlYXNvbiB0byBkb3VidCAKdGhhdCB0aGUgbW90aGVyIGhlcnNlbGYgd2FzIHN0aWxsIGtlZXBpbmcgYSBsb3ZpbmcgCndhdGNoIG92ZXIgaGVyIGNoaWxkcmVuIGZyb20gdGhlIGFzdHJhbCBwbGFuZSwgYW5kIAp0aGF0IChhcyBoYXMgaGFwcGVuZWQgaW4gc29tZSBvdGhlciBjYXNlcykgaGVyIGluLSAKdGVuc2UgZGVzaXJlIHRvIHdhcm4gdGhlbSBvZiB0aGUgZGFuZ2VyIGludG8gd2hpY2ggCnRoZXkgd2VyZSBzbyBoZWVkbGVzc2x5IHJ1c2hpbmcgZ2F2ZSBoZXIgdGhlIHBvd2VyIAp0byBtYWtlIGhlcnNlbGYgdmlzaWJsZSBhbmQgYXVkaWJsZSB0byB0aGVtIGZvciAKdGhlIG1vbWVudCDigJQgb3IgcGVyaGFwcyBtZXJlbHkgdG8gaW1wcmVzcyB0aGVpciAKbWluZHMgd2l0aCB0aGUgaWRlYSB0aGF0IHRoZXkgc2F3IGFuZCBoZWFyZCBoZXIuIApJdCBpcyBwb3NzaWJsZSwgb2YgY291cnNlLCB0aGF0IHRoZSBoZWxwZXIgbWF5IGhhdmUgCmJlZW4gc29tZW9uZSBlbHNlLCB3aG8gdG9vayB0aGUgZmFtaWxpYXIgZm9ybSBvZiB0aGUgCm1vdGhlciBpbiBvcmRlciBub3QgdG8gYWxhcm0gdGhlIGNoaWxkcmVuOyBidXQgdGhlIApzaW1wbGVzdCBoeXBvdGhlc2lzIGlzIHRvIGF0dHJpYnV0ZSB0aGUgaW50ZXJ2ZW50aW9uIAp0byB0aGUgYWN0aW9uIG9mIHRoZSBldmVyLXdha2VmdWwgbW90aGVyLWxvdmUgaXRzZWxmLCAKdW5kaW1tZWQgYnkgdGhlIHBhc3NhZ2UgdGhyb3VnaCB0aGUgZ2F0ZXMgb2YgCmRlYXRoLiAKClRoaXMgbW90aGVyLWxvdmUsIGJlaW5nIG9uZSBvZiB0aGUgaG9saWVzdCBhbmQgCm1vc3QgdW5zZWxmaXNoIG9mIGh1bWFuIGZlZWxpbmdzLCBpcyBhbHNvIG9uZSBvZiB0aGUgCm1vc3QgcGVyc2lzdGVudCBvbiBoaWdoZXIgcGxhbmVzLiBOb3Qgb25seSBkb2VzIAp0aGUgbW90aGVyIHdobyBmaW5kcyBoZXJzZWxmIHVwb24gdGhlIGxvd2VyIGxldmVscyAKb2YgdGhlIGFzdHJhbCBwbGFuZSwgYW5kIGNvbnNlcXVlbnRseSBzdGlsbCB3aXRoaW4gCnRvdWNoIG9mIHRoZSBlYXJ0aCwgbWFpbnRhaW4gaGVyIGludGVyZXN0IGluIGFuZCBoZXIgCmNhcmUgZm9yIGhlciBjaGlsZHJlbiBhcyBsb25nIGFzIHNoZSBpcyBhYmxlIHRvIHNlZSAKdGhlbTsgZXZlbiBhZnRlciBoZXIgZW50cnkgaW50byB0aGUgaGVhdmVuIC13b3JsZCAKdGhlc2UgbGl0dGxlIG9uZXMgYXJlIHN0aWxsIHRoZSBtb3N0IHByb21pbmVudCBvYmplY3RzIAppbiBoZXIgdGhvdWdodCwgYW5kIHRoZSB3ZWFsdGggb2YgbG92ZSB0aGF0IHNoZSAKbGF2aXNoZXMgdXBvbiB0aGUgaW1hZ2VzIHdoaWNoIHNoZSB0aGVyZSBtYWtlcyAKb2YgdGhlbSBpcyBhIGdyZWF0IG91dHBvdXJpbmcgb2Ygc3Bpcml0dWFsIGZvcmNlIAoKClNPTUUgTU9ERVJOIElOU1RBTkNFUyAKCgozOSAKCgp3aGljaCBmbG93cyBkb3duIHVwb24gaGVyIG9mZnNwcmluZyB3aG8gYXJlIHN0aWxsIApzdHJ1Z2dsaW5nIGluIHRoaXMgbG93ZXIgd29ybGQsIGFuZCBzdXJyb3VuZHMgdGhlbSAKd2l0aCBsaXZpbmcgY2VudHJlcyBvZiBiZW5lZmljZW50IGVuZXJneSB3aGljaCBtYXkgCm5vdCBpbmFwdGx5IGJlIGRlc2NyaWJlZCBhcyB2ZXJpdGFibGUgZ3VhcmRpYW4gCkFuZ2Vscy4gCgpUaGlzIHdhcyB3ZWxsIGlsbHVzdHJhdGVkIGJ5IGEgY2FzZSB3aGljaCBzb21lIAp0aW1lIGFnbyBjYW1lIHVuZGVyIHRoZSBub3RpY2Ugb2Ygb3VyIGludmVzdGlnYXRvcnMuIApJdCB3YXMgdGhhdCBvZiBhIG1vdGhlciB3aG8gaGFkIGRpZWQgcGVyaGFwcyAKdHdlbnR5IHllYXJzIGJlZm9yZSwgbGVhdmluZyBiZWhpbmQgaGVyIHR3byBib3lzIAp0byB3aG9tIHNoZSB3YXMgZGVlcGx5IGF0dGFjaGVkLiBOYXR1cmFsbHkgdGhleSAKd2VyZSB0aGUgbW9zdCBwcm9taW5lbnQgZmlndXJlcyBpbiBoZXIgaGVhdmVuLWxpZmUsIAphbmQgcXVpdGUgbmF0dXJhbGx5LCB0b28sIHNoZSB0aG91Z2h0IG9mIHRoZW0gYXMgCnNoZSBoYWQgbGVmdCB0aGVtLCBhcyBib3lzIG9mIGZpZnRlZW4gb3Igc2l4dGVlbiB5ZWFycyAKb2YgYWdlLiBUaGUgbG92ZSB3aGljaCBzaGUgdGh1cyBjZWFzZWxlc3NseSBwb3VyZWQgCm51dCB1cG9uIHRoZXNlIGltYWdlcyBpbiB0aGUgaGVhdmVuLXdvcmxkIHdhcyAKcmVhbGx5IGFjdGluZyBhcyBhIGJlbmVmaWNlbnQgZm9yY2Ugc2hvd2VyZWQgZG93biAKdXBvbiB0aGUgZ3Jvd24tdXAgbWVuIGluIHRoaXMgcGh5c2ljYWwgd29ybGQsIGJ1dCAKaXQgZGlkIG5vdCBhZmZlY3QgdGhlbSBib3RoIHRvIHRoZSBzYW1lIGV4dGVudCDigJQgbm90IAp0aGF0IGhlciBsb3ZlIHdhcyBzdHJvbmdlciBmb3Igb25lIHRoYW4gZm9yIHRoZSAKb3RoZXIsIGJ1dCBiZWNhdXNlIHRoZXJlIHdhcyBhIGdyZWF0IGRpZmZlcmVuY2UgCmJldHdlZW4gdGhlIGltYWdlcyB0aGVtc2VsdmVzLiAKCk5vdCBhIGRpZmZlcmVuY2UsIGJlIGl0IHVuZGVyc3Rvb2QsIHRoYXQgdGhlIArilqBtb3RoZXIgY291bGQgc2VlOyB0byBoZXIgYm90aCBhcHBlYXJlZCBlcXVhbGx5IHdpdGggCmhlciwgYW5kIGVxdWFsbHkgYWxsIHRoYXQgc2hlIGNvdWxkIHBvc3NpYmx5IGRlc2lyZTogCnlldCB0byB0aGUgZXllcyBvZiB0aGUgaW52ZXN0aWdhdG9ycyBpdCB3YXMgdmVyeSAK4oCiZXZpZGVudCB0aGF0IG9uZSBvZiB0aGVzZSBpbWFnZXMgd2FzIGEgbWVyZSAKdGhvdWdodC1mb3JtIG9mIHRoZSBtb3RoZXLigJlzLCB3aXRob3V0IGFueXRoaW5nIAp0aGF0IGNvdWxkIGJlIGNhbGxlZCBhIHJlYWxpdHkgYXQgdGhlIGJhY2sgb2YgaXQsIAoKCjIwIAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCndoaWxlLCB0aGUgb3RoZXIgd2FzIGRpc3RpbmN0bHkgbXVjaCBtb3JlIHRoYW4gYSAKbWVyZSBpbWFnZSwgZm9yIGl0IHdhcyBpbnN0aW5jdCB3aXRoIGxpdmluZyBmb3JjZS0gCk9uIHRyYWNpbmcgdGhpcyBpbnRlcmVzdGluZyBwaGVub21lbm9uIHRvIGl0cyAKc291cmNlLCBpdCB3YXMgZm91bmQgdGhhdCBpbiB0aGUgZmlyc3QgY2FzZSB0aGUgc29uIApoYWQgZ3Jvd24gdXAgaW50byBhbiBvcmRpbmFyeSBtYW4gb2YgYnVzaW5lc3Mg4oCUIApub3Qgc3BlY2lhbGx5IGV2aWwgaW4gYW55IHdheSwgYnV0IGJ5IG5vIG1lYW5zIApzcGlyaXR1YWxseS1taW5kZWQg4oCUIHdoaWxlIHRoZSBzZWNvbmQgaGFkIGJlY29tZSBhIAptYW4gb2YgaGlnaCB1bnNlbGZpc2ggYXNwaXJhdGlvbiwgYW5kIG9mIGNvbnNpZGVyLSAKYWJsZSByZWZpbmVtZW50IGFuZCBjdWx0dXJlLiBIaXMgbGlmZSBoYWQgYmVlbiAKc3VjaCBhcyB0byBkZXZlbG9wIGEgbXVjaCBncmVhdGVyIGFtb3VudCBvZiBjb24tIApzY2lvdXNuZXNzIGluIHRoZSBlZ28gdGhhbiBoaXMgYnJvdGhlcuKAmXMsIGFuZCBjb24tIApzZXF1ZW50bHkgaGlzIGhpZ2hlciBzZWxmIHdhcyBhYmxlIHRvIGVuZXJnaXplIHRoZSAKaW1hZ2Ugb2YgaGltc2VsZiBhcyBhIGJveSB3aGljaCBoaXMgbW90aGVyIGhhZCAKZm9ybWVkIGluIGhlciBoZWF2ZW4tbGlmZSDigJQgdG8gcHV0IHNvbWV0aGluZyBvZiAKaGltc2VsZiBpbnRvIGl0LCBhcyBpdCB3ZXJlLiAKClRoYXQgc29tZSBjaGlsZHJlbiwgYXQgbGVhc3QsIGNhbiBzZWUgQW5nZWxzIGlzIAp0aGUgYmVsaWVmIG9mIHRoZSBCaXNob3Agb2YgTG9uZG9uLiAKClByZWFjaGluZyBhdCBTdC4gUGF1bOKAmXMsIEhhcnJpbmdheSwgaGlzIGxvcmRzaGlwIApzdGF0ZWQgdGhhdCBHb2QgYW5kIHRoZSBBbmdlbHMgd2VyZSBhbHdheXMgbmVhciAKdXMsIGFuZCBoZSBhc2tlZCB0aGUgY29uZ3JlZ2F0aW9uIG5vdCB0byByZWdhcmQgYSAKcmVtYXJrIHRoYXQgaGUgb3Igc2hlIGhhZCBzIGVlbiBzdWNoIGJlaW5ncyAKYXMgbWVyZSBmYW5jeS4gSGUgdG9sZCB0aGVtIHRoYXQgaGUgd2FzIG9uY2UgCmNvbmZpcm1pbmcgaW4gV2VzdG1pbnN0ZXIgQWJiZXksIGFuZCBhbW9uZyB0aGUgCmNvbmdyZWdhdGlvbiB3YXMgYSBjaGlsZCBvZiB0aGlydGVlbiwgd2hvIGhhZCBjb21lIAp0byBzZWUgaGVyIGJyb3RoZXIgY29uZmlybWVkLiAKCk5vdGhpbmcgYXQgYWxsIG9uIHRoZSBtYXR0ZXIgaGFkIGJlZW4gcHV0IGludG8gCmhlciBtaW5kLCBidXQgYXQgdGhlIHNlcnZpY2Ugc2hlIHNhaWQgdG8gaGVyIG1vdGhlcnIgCuKAnERvIHlvdSBzZWUgdGhlbSwgbW90aGVyP+KAnSAKCgpTT01FIE1PREVSTiBJTlNUQU5DRSdTIDIxIDovIiAKCiInU2VlIHdoYXQ/4oCdIGFza2VkIHRoZSBtb3RoZXI7IHRhbmQgdGhlIGNoaWxkIAp7cmVwbGllZDogaSAvIHYg4oCiIAoKIuKAmEFuZ2VscyBvbiBlYWNoIHNpZGUgb2YgdGhlIEJpc2hvcDtqXj5eXiDigJQg4oCUIAoKSXQgd2FzIHNhaWQgdGhhdCB0aGUgcHVyZSBpbiBoZWFydCAKYW5kIHdhcyBpdCBub3QgdGhlcmVmb3JlIHBvc3NpYmxlIHRoYXQgYSBjaGlsZCBwZXItIApmZmVjdGx5IHB1cmUgY291bGQgc2VlIHRoaW5ncyB3aGljaCBhZHVsdHMgY291bGQgbm90IApzZWU/IAoKVGhlIEJpc2hvcCBhbHNvIHRvbGQgYSBzdG9yeSBvZiBmaXZlIGdpcmxzIHdob3NlIArigJhmYXRoZXIsIGZlZWxpbmcgaWxsLCB3ZW50IHRvIGxpZSBkb3duLiBUaGUgeW91bmdlc3QgCmdpcmwgd2VudCB1cCB0byBiZWQsIGJ1dCBjYW1lIGZyb20gaGVyIHJvb20gCmNhbGxpbmc6IAoK4oCcQ29tZSBvdXQhIHRoZXJlIGFyZSB0d28gQW5nZWxzIHdhbGtpbmcgdXAgdGhlIApzdGFpcmNhc2Uh4oCdIAoKTm8gb25lIGVsc2UgY291bGQgc2VlIGFueXRoaW5nLiBMYXRlciB0aGUgY2hpbGQgCmFnYWluIGNhbGxlZDogCgrigJxDb21lIG91dCEgdGhlIEFuZ2VscyBhcmUgd2Fsa2luZyBkb3duIHRoZSAKc3RhaXJjYXNlIG5vdywgYW5kIGZhdGhlciBpcyB3YWxraW5nIGJldHdlZW4gdGhlbS7igJ0gCkFsbCBmaXZlIGdpcmxzIHRoaXMgdGltZSBzYXcgdGhlIHNhbWUgdGhpbmcsIGFuZCAK4oCiZ29pbmcgdG8gdGhlaXIgZmF0aGVyJ3Mgcm9vbSB0aGV5IGZvdW5kIGhpcyBkZWFkIApib2R5LiAKCk5vdCBsb25nIGFnbyB0aGUgbGl0dGxlIGRhdWdodGVyIG9mIGFub3RoZXIgb2Ygb3VyIApFbmdsaXNoIEJpc2hvcHMgd2FzIG91dCB3YWxraW5nIHdpdGggaGVyIG1vdGhlciAKaW4gdGhlIHRvd24gd2hlcmUgdGhleSBsaXZlZCwgYW5kIGluIHJ1bm5pbmcgaGVlZC0gCmxlc3NseSBhY3Jvc3MgYSBzdHJlZXQgdGhlIGNoaWxkIHdhcyBrbm9ja2VkIGRvd24gCmJ5IHRoZSBob3JzZXMgb2YgYSBjYXJyaWFnZSB3aGljaCBjYW1lIHF1aWNrbHkgCuKWoHVwb24gaGVyIHJvdW5kIOKAmGEgY29ybmVyLiBTZWVpbmcgaGVyIGFtb25nIHRoZSAKaG9yc2VzJyBmZWV0LCB0aGUgbW90aGVyIHJ1c2hlZCBmb3J3YXJkLCBleHBlY3RpbmcgCi10byBmaW5kIGhlciB2ZXJ5IGJhZGx5IGluanVyZWQsIGJ1dCBzaGUgc3ByYW5nIHVwIAoKCjIyIAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCnF1aXRlIG1lcnJpbHksIHNheWluZzogKGkgTyBtYW1tYSwgSSBhbSBub3QgYXQgYWxsIApodXJ0LCBmb3Igc29tZXRoaW5nIGFsbCBpbiB3aGl0ZSBrZXB0IHRoZSBob3JzZXMqIApmcm9tIHRyZWFkaW5nIHVwb24gbWUsIGFuZCB0b2xkIG1lIG5vdCB0byBiZSAKYWZyYWlkLuKAnSAKCkEgY2FzZSB3aGljaCBvY2N1cnJlZCBpbiBCdWNraW5naGFtc2hpcmUqIApzb21ld2hlcmUgaW4gdGhlIG5laWdoYm91cmhvb2Qgb2YgQnVybmhhbSAKQmVlY2hlcywgaXMgcmVtYXJrYWJsZSBvbiBhY2NvdW50IG9mIHRoZSBsZW5ndGggb2YgCnRpbWUgdGhyb3VnaCB3aGljaCB0aGUgcGh5c2ljYWwgbWFuaWZlc3RhdGlvbiBvZiB0aGUgCnN1Y2NvdXJpbmcgYWdlbmN5IHNlZW1zIHRvIGhhdmUgbWFpbnRhaW5lZCwgaXRzZWxmLSAKSXQgd2lsbCBoYXZlIGJlZW4gc2VlbiB0aGF0IGluIHRoZSBpbnN0YW5jZXMgaGl0aGVydG8gCmdpdmVuIHRoZSBpbnRlcnZlbnRpb24gd2FzIGEgbWF0dGVyIG9mIGJ1dCBhIGZldyAKbW9tZW50cywgd2hlcmVhcyBpbiB0aGlzIGEgcGhlbm9tZW5vbiB3YXMgcHJvLSAKZHVjZWQgd2hpY2ggYXBwZWFycyB0byBoYXZlIHBlcnNpc3RlZCBmb3IgbW9yZSAKdGhhbiBoYWxmIGFuIGhvdXIuIAoKVHdvIG9mIHRoZSBsaXR0bGUgY2hpbGRyZW4gb2YgYSBzbWFsbCBmYXJtZXIgd2VyZSAKbGVmdCB0byBhbXVzZSB0aGVtc2VsdmVzIHdoaWxlIHRoZWlyIHBhcmVudHMgYW5kIAp0aGVpciBlbnRpcmUgaG91c2Vob2xkIHdlcmUgZW5nYWdlZCBpbiB0aGUgd29yayBvZiAKaGFydmVzdGluZy4gVGhlIGxpdHRsZSBvbmVzIHN0YXJ0ZWQgZm9yIGEgd2FsayBpbiAKdGhlLiB3b29kcywgd2FuZGVyZWQgZmFyIGZyb20gaG9tZSwgYW5kIHRoZW4gbWFuLSAKYWdlZCB0byBsb3NlIHRoZWlyIHdheS4gV2hlbiB0aGUgd2VhcnkgcGFyZW50cyAKcmV0dXJuZWQgYXQgZHVzayBpdCB3YXMgZGlzY292ZXJlZCB0aGF0IHRoZSBjaGlsZHJlbiAKd2VyZSBtaXNzaW5nLCBhbmQgYWZ0ZXIgZW5xdWlyaW5nIGF0IHNvbWUgb2YgdGhlKiAKbmVpZ2hib3Vyc+KAmSBob3VzZXMgdGhlIGZhdGhlciBzZW50IHNlcnZhbnRzIGFuZCAKbGFib3VyZXJzIGluIHZhcmlvdXMgZGlyZWN0aW9ucyB0byBzZWVrIGZvciB0aGVtLiAKClRoZWlyIGVmZm9ydHMgd2VyZSwgaG93ZXZlciwgdW5zdWNjZXNzZnVsLCBhbmQgCnRoZWlyIHNob3V0cyB1bmFuc3dlcmVkOyBhbmQgdGhleSBoYWQgcmVhc3NlbWJsZWQgCmF0IHRoZSBmYXJtIGluIGEgc29tZXdoYXQgZGVzcG9uZGVudCBmcmFtZSBvZiBtaW5kKiAKd2hlbiB0aGV5IGFsbCBzYXcgYSBjdXJpb3VzIGxpZ2h0IHNvbWUgZGlzdGFuY2UgCgoKU09NRSBNT0RFUk4gSU5TVEFOQ0VTIAoKCjIzIAoKCmF3YXkgbW92aW5nIHNsb3dseSBhY3Jvc3Mgc29tZSBmaWVsZHMgdG93YXJkcyAKdGhlIHJvYWQuIEl0IHdhcyBkZXNjcmliZWQgYXMgYSBsYXJnZSBnbG9idWxhciBtYXNzIApvZiByaWNoIGdvbGRlbiBnbG93LCBxdWl0ZSB1bmxpa2Ugb3JkaW5hcnkgbGFtcC0gCmxpZ2h0OyBhbmQgYXMgaXQgZHJldyBuZWFyZXIgaXQgd2FzIHNlZW4gdGhhdCB0aGUgCnR3byBtaXNzaW5nIGNoaWxkcmVuIHdlcmUgd2Fsa2luZyBzdGVhZGlseSBhbG9uZyAKaW4gdGhlIG1pZHN0IG9mIGl0LiBUaGUgZmF0aGVyIGFuZCBzb21lIG90aGVycyBpbS0gCm1lZGlhdGVseSBzZXQgb2ZmIHJ1bm5pbmcgdG93YXJkcyBpdDsgdGhlIGFwcGVhcmFuY2UgCnBlcnNpc3RlZCB1bnRpbCB0aGV5IHdlcmUgY2xvc2UgdG8gaXQsIGJ1dCBqdXN0IGFzIAp0aGV5IGdyYXNwZWQgdGhlIGNoaWxkcmVuIGl0IHZhbmlzaGVkLCBsZWF2aW5nIHRoZW0gCmluIHRoZSBkYXJrbmVzcy4gCgpUaGUgY2hpbGRyZW7igJlzIHN0b3J5IHdhcyB0aGF0IGFmdGVyIG5pZ2h0IGNhbWUgb24gCnRoZXkgaGFkIHdhbmRlcmVkIGFib3V0IGNyeWluZyBpbiB0aGUgd29vZHMgZm9yIApzb21lIHRpbWUsIGFuZCBoYWQgYXQgbGFzdCBsYWluIGRvd24gdW5kZXIgYSB0cmVlIAp0byBzbGVlcC4gLSBUaGV5IGhhZCBiZWVuIHJvdXNlZCwgdGhleSBzYWlkLCBieSBhIApiZWF1dGlmdWwgbGFkeSB3aXRoIGEgbGFtcCwgd2hvIHRvb2sgdGhlbSBieSB0aGUgCmhhbmQgYW5kIGxlZCB0aGVtIGhvbWU7IHdoZW4gdGhleSBxdWVzdGlvbmVkIGhlciAKc2hlIHNtaWxlZCBhdCB0aGVtLCBidXQgbmV2ZXIgc3Bva2UgYSB3b3JkLiBUby0gCnRoaXMgc3RyYW5nZSB0YWxlIHRoZXkgYm90aCBzdGVhZGlseSBhZGhlcmVkLCBub3Igd2FzIAppdCBwb3NzaWJsZSBpbiBhbnkgd2F5IHRvIHNoYWtlIHRoZWlyIGZhaXRoIGluIHdoYXQgCnRoZXkgaGFkIHNlZW4uIEl0IGlzIG5vdGV3byByIHRoIHkgLCBob3dldmVyLCB0aGF0IAp0aG91Z2ggYWxsIHByZXNlbnQgc2F3IHRoZSBsaWdodCwgYW5kIG5vdGljZWQgdGhhdCBpdCAKbGl0IHVwIHRoZSB0cmVlcyBhbmQgaGVkZ2VzIHdoaWNoIGNhbWUgd2l0aGluIGl0cyAKc3BoZXJlIHByZWNpc2VseSBhcyBhbiBvcmRpbmFyeSBsaWdodCB3b3VsZCwgeWV0IHRoZSAKZm9ybSBvZiB0aGUgbGFkeSB3YXMgdmlzaWJsZSB0byBub25lIGJ1dCB0aGUgCmNoaWxkcmVuLiAKCgpDSEFQVEVSIElJSSAKCgpBIFBFUlNPTkFMIEVYUEVSSUVOQ0UgCgpBTEwgdGhlIGFib3ZlIHN0b3JpZXMgYXJlIGNvbXBhcmF0aXZlbHkgd2VsbCBrbm93biDigJ4gCmFuZCBtYXkgYmUgZm91bmQgaW4gc29tZSBvZiB0aGUgYm9va3Mgd2hpY2ggY29uLSAKdGFpbiBjb2xsZWN0aW9ucyBvZiBzdWNoIGFjY291bnRzIOKAlCBtb3N0IG9mIHRoZW0gaW4gCkRyLiBMZWXigJlzIE1vcmUgR2xpbXBzZXMgb2YgdGhlIFdvcmxkIFVuc2VlbiA7IGJ1dCAKdGhlIHR3byBpbnN0YW5jZXMgd2hpY2ggSSBhbSBub3cgYWJvdXQgdG8gZ2l2ZSAKaGF2ZSBuZXZlciBiZWVuIGluIHByaW50IGJlZm9yZSwgYW5kIGJvdGggb2NjdXJyZWQgCndpdGhpbiB0aGUgbGFzdCBmZXcgeWVhcnMg4oCUIG9uZSB0byBteXNlbGYsIGFuZCB0aGUgCm90aGVyIHRvIG91ciBncmVhdCBQcmVzaWRlbnQsIHRoZSBhY2N1cmFjeSBvZiB3aG9zZSAKb2JzZXJ2YXRpb24gaXMgYmV5b25kIGFsbCBzaGFkb3cgb2YgZG91YnQuIAoKTXkgb3duIHN0b3J5IGlzIHNpbXBsZSBlbm91Z2gsIHRob3VnaCBub3QgdW4tIAppbXBvcnRhbnQgdG8gbWUsIHNpbmNlIHRoZSBpbnRlcnBvc2l0aW9uIHVuZG91YnRlZGx5IApzYXZlZCBteSBsaWZlLiBJIHdhcyB3YWxraW5nIG9uZSBleGNlZWRpbmdseSB3ZXQgCmFuZCBzdG9ybXkgbmlnaHQgZG93biBhIHF1aWV0IGJhY2sgc3RyZWV0IG5lYXIgCldlc3Rib3VybmUgR3JvdmUsIHN0cnVnZ2xpbmcgd2l0aCBzY2FudCBzdWNjZXNzIHRvIApob2xkIHVwIGFuIHVtYnJlbGxhIGFnYWluc3QgdGhlIHNhdmFnZSBndXN0cyBvZiAKd2luZCB0aGF0IHRocmVhdGVuZWQgZXZlcnkgbW9tZW50IHRvIHRlYXIgaXQgZnJvbSAKLiBteSBncmFzcCwgYW5kIHRyamRuZyBhcyBJIGxhYm91cmVkIGFsb25nLCB0byB0aGluayAKb3V0IHRoZSBkZXRhaWxzIG9mIHNvbWUgd29yayB1cG9uIHdoaWNoIEkgd2FzIGp1c3QgCnRoZW4gZW5nYWdlZC4gCgoKQSBQRVJTT05BTCBFWFBFUklFTkNFIAoKCjI1IAoKCldpdGggc3RhcnRpbmcgc3VkZGVubmVzcyBhIHZvaWNlIHdoaWNoIEkga25vdyAKd2VsbCDigJQgdGhlIHZvaWNlIG9mIGFuIEluZGlhbiB0ZWFjaGVyIOKAlCBjcmllZCBpbiBteSAKXmVhciDigJxTcHJpbmcgYmFjayHigJ0gYW5kIGluIG1lY2hhbmljYWwgb2JlZGllbmNlIEkgCnN0YXJ0ZWQgdmlvbGVudGx5IGJhY2t3YXJkcyBhbG1vc3QgYmVmb3JlIDEgaGFkIHRpbWUgCnRvIHRoaW5rLiBBcyBJIGRpZCBzbyBteSB1bWJyZWxsYSwgd2hpY2ggaGFkIHN3dW5nIApmb3J3YXJkIHdpdGggdGhlIHN1ZGRlbiBtb3ZlbWVudCwgdyxhcyBzdHJ1Y2sgCmZyb20gbXkgaGFuZCwgYW5kIGEgaHVnZSBtZXRhbCBjaGltbmV5LXBvdCBjcmFzaC0gCmVkIHVwb24gdGhlIHBhdmVtZW50IGxlc3MgdGhhbiBhIHlhcmQgaW4gZnJvbnQgb2YgCm15IGZhY2UuIFRoZSBncmVhdCB3ZWlnaHQgb2YgdGhpcyBhcnRpY2xlLCBhbmQgdGhlIAp0cmVtZW5kb3VzIGZvcmNlIHdpdGggd2hpY2ggaXQgZmVsbCwgbWFrZSBpdCBhYnNvLSAKbHV0ZWx5IGNlcnRhaW4gdGhhdCBidXQgZm9yIHRoZSB3YXJuaW5nIHZvaWNlIEkgc2hvdWxkIApoYXZlIGJlZW4ga2lsbGVkIG9uIHRoZSBzcG90OyB5ZXQgdGhlIHN0cmVldCB3YXMgCmVtcHR5LCBhbmQgdGhlIHZvaWNlIHdhcyB0aGF0IG9mIG9uZSB3aG9tIEkga25ldyAKdG8gYmUgc2V2ZW4gdGhvdXNhbmQgbWlsZXMgYXdheSBmcm9tIG1lLCBhcyBmYXIgYXMgCnRoZSBwaHlzaWNhbCBib2R5IHdhcyBjb25jZXJuZWQuIAoKTm9yIHdhcyB0aGlzIHRoZSBvbmx5IG9jY2FzaW9uIHVwb24gd2hpY2ggSSAKcmVjZWl2ZWQgYXNzaXN0YW5jZSBvZiB0aGlzIHN1cGVybm9ybWFsIGtpbmQsIGZvciBpbiAKZWFybHkgbGlmZSwgbG9uZyBiZWZvcmUgdGhlIGZvdW5kYXRpb24gb2YgdGhlIFRoZW8tIApzb3BoaWNhbCBTb2NpZXR5LCB0aGUgYXBwYXJpdGlvbiBvZiBhIGRlYXIgb25lIHdobyAKaGFkIHJlY2VudGx5IGRpZWQgcHJldmVudGVkIG1lIGZyb20gY29tbWl0dGluZyAKd2hhdCBJIG5vdyBzZWUgd291bGQgaGF2ZSBiZWVuIGEgc2VyaW91cyBjcmltZSwgCmFsdGhvdWdoIGJ5IHRoZSBsaWdodCBvZiBzdWNoIGtub3dsZWRnZSBhcyBJIHRoZW4gCmhhZCBpdCBhcHBlYXJlZCBub3Qgb25seSBhIGp1c3RpZmlhYmxlIGJ1dCBldmVuKiBhIApsYXVkYWJsZSBhY3Qgb2YgcmV0YWxpYXRpb24uIEFnYWluLCBhdCBhIGxhdGVyIGRhdGUsIAp0aG91Z2ggc3RpbGwgYmVmb3JlIHRoZSBmb3VuZGF0aW9uIG9mIHRoaXMgU29jaWV0eSwgCmEgd2FybmluZyBjb252ZXllZCB0byBtZSBmcm9tIGEgaGlnaGVyIHBsYW5lIGFtaWQgCm1vc3QgaW1wcmVzc2l2ZSBzdXJyb3VuZGluZ3MgZW5hYmxlZCBtZSB0byBwcmUtIAp2ZW50IGFub3RoZXIgbWFuIGZyb20gZW50ZXJpbmcgdXBvbiBhIGNvdXJzZSAKCgoyNiAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgp3aGljaCBJIG5vdyBrbm93IHdvdWxkIGhhdmUgZW5kZWQgZGlzYXN0cm91c2x5LCwgCnRob3VnaCBJIGhhZCogbm8gcmVhc29uIHRvIHN1cHBvc2Ugc28gYXQgdGhlIHRpbWUuLiAKU28gaXQgd2lsbCBiZSBzZWVuIHRoYXQgSSBoYXZlIGEgY2VydGFpbiBhbW91bnQgb2YgCnBlcnNvbmFsIGV4cGVyaWVuY2UgdG8gc3RyZW5ndGhlbiBteSBiZWxpZWYgaW4gdGhlLiAKZG9jdHJpbmUgb2YgaW52aXNpYmxlIGhlbHBlcnMsIGV2ZW4gYXBhcnQgZnJvbSBteSAKa25vd2xlZGdlIG9mIHRoZSBoZWxwIHRoYXQgaXMgY29uc3RhbnRseSBiZWluZyBnaXZlbiwgCmF0IHRoZSBwcmVzZW50IHRpbWUuIAoKVGhlIG90aGVyIGNhc2UgaXMgbXVjaCBtb3JlIHN0cmlraW5nLiBXaGVuKiAKdGhpcyBib29rIHdhcyBmaXJzdCBwdWJsaXNoZWQsIG1vcmUgdGhhbiB0aGlydHkgeWVhcnMgCmFnbywgb3VyIGJlbG92ZWQgUHJlc2lkZW50LCB0aG91Z2ggc2hlIGdhdmUgbWUgcGVyLSAKbWlzc2lvbiB0byBwdWJsaXNoIHNldmVyYWwgc3RvcmllcyBvZiBoZXIgd29yayBhbmQgCmhlciBhZHZlbnR1cmVzIHVwb24gaGlnaGVyIHBsYW5lcywgZGlkIG5vdCB3aXNoIApoZXIgbmFtZSBtZW50aW9uZWQgaW4gY29ubmVjdGlvbiB3aXRoIHRoZW07IGJ1dCAKYXQgdGhpcyBkaXN0YW5jZSBvZiB0aW1lIHRoZXJlIHNlZW1zIG5vIGxvbmdlciBhbnkgCnJlYXNvbiB3aHkgaGVyIG1hbnkgdGhvdXNhbmRzIG9mIGRldm90ZWQgZm9sLSAKbG93ZXJzIHNob3VsZCBiZSBkZXByaXZlZCBvZiB0aGUgaW1tZW5zZSBwbGVhc3VyZSAKd2hpY2ggdGhleSB3aWxsIGRlcml2ZSBmcm9tIHRoZSBpZGVudGlmaWNhdGlvbiBvZiB0aGUgCmhlcm9pbmUgb2Ygc3VjaCB3b25kZXJmdWwgYW5kIGJlYXV0aWZ1bCBleHBlcmllbmNlcywgCndpdGggYSBUZWFjaGVyIHdob20gdGhleSBzbyBkZWVwbHkgbG92ZSBhbmReIApyZXZlcmUuIFNvIEkgdGhpbmsgc2hlIHdpbGwgcGFyZG9uIG1lIGlmIEkgcmV2ZWFsIGEgCnNlY3JldCBvZiB0aGlydHkgeWVhcnPigJkgc3RhbmRpbmcgISAKCk91ciBncmVhdCBMZWFkZXIsIHRoZW4sIG9uY2UgZm91bmQgaGVyc2VsZiBpbiogCnNlcmlvdXMgcGh5c2ljYWwgcGVyaWwuIE93aW5nIHRvIGNpcmN1bXN0YW5jZXMqIAp3aGljaCBuZWVkIG5vdCBiZSBkZXRhaWxlZCBoZXJlLCBzaGUgd2FzIGluIHRoZSB2ZXJ5IApjZW50cmUgb2YgYSBkYW5nZXJvdXMgc3RyZWV0IGZyYWNhcywgYW5kIHNlZWluZyBzZXZlcmFsJyAKbWVuIHN0cnVjayBkb3dtIGFuZCBldmlkZW50bHkgYmFkbHkgaHVydCBjbG9zZSB0byogCmhlciwgd2FzIGluIG1vbWVudGFyeSBleHBlY3RhdGlvbiBvZiBhIHNpbWlsYXJqYXRlLCAKc2luY2UgZXNjYXBlIGZyb20gdGhlIGNydXNoIHNlZW1lZCBxdWl0ZSBpbXBvc3NpYmxlLi4gCgoKQSBQRVJTT05BTCBFWFBFUklFTkNFIAoKCjI3IAoKClN1ZGRlbmx5IHNoZSBleHBlcmllbmNlZCBhIGN1cmlvdXMgc2Vuc2F0aW9uIG9mIApiZWluZyB3aGlybGVkIG91dCBvZiB0aGUgY3Jvd2QgYW5kIGZvdW5kIGhlcnNlbGYgCnN0YW5kaW5nIHF1aXRlIHVuaW5qdXJlZCBhbmQgZW50aXJlbHkgYWxvbmUgaW4gYS0gCnNtYWxsIGJ5LXN0cmVldCBwYXJhbGxlbCB3aXRoIHRoYXQgaW4gd2hpY2ggdGhlIGRpcy0gCnR1cmJhbmNlIGhhZCB0YWtlbiBwbGFjZS4gU2hlIHN0aWxsIGhlYXJkIHRoZSBub2lzZSAKb2YgdGhlIHN0cnVnZ2xlLCBhbmQgd2hpbGUgc2hlIHN0b29kIHdvbmRlcmluZyAKd2hhdCBvbiBlYXJ0aCBoYWQgaGFwcGVuZWQgdG8gaGVyLCB0d28gb3IgdGhyZWUgCm1lbiB3aG8gaGFkIGVzY2FwZWQgZnJvbSB0aGUgY3Jvd2QgY2FtZSBydW4tIApuaW5nIHJvdW5kIHRoZSBjb3JuZXIgb2YgdGhlIHN0cmVldCwgYW5kIG9uIHNlZWluZyAKaGVyIGV4cHJlc3NlZCBncmVhdCBhc3RvbmlzaG1lbnQgYW5kIHBsZWFzdXJlLCwgCnNheWluZyB0aGF0IHdoZW4gdGhlIGJyYXZlIGxhZHkgc28gc3VkZGVubHkgZGlzLSAKYXBwZWFyZWQgZnJvbSB0aGUgbWlkc3Qgb2YgdGhlIGZpZ2h0IHRoZXkgaGFkIGZlbHQgCmNlcnRhaW4gdGhhdCBzaGUgaGFkIGJlZW4gc3RydWNrIGRvd24uIAoKQXQgdGhlIHRpbWUgbm8gc29ydCBvZiBleHBsYW5hdGlvbiB3YXMgZm9ydGgtIApjb21pbmcsIGFuZCBzaGUgcmV0dXJuZWQgaG9tZSBpbiBhIHZlcnkgbXlzdGlmaWVkIApjb25kaXRpb247IGJ1dCB3aGVuIGF0IGEgbGF0ZXIgcGVyaW9kIHNoZSBtZW50aW9uZWQgCnRoaXMgc3RyYW5nZSBvY2N1cnJlbmNlIHRvIE1hZGFtZSBCbGF2YXRza3kgc2hlIAp3YXMgaW5mb3JtZWQgdGhhdCwgaGVyIGthcm1hIGJlaW5nIHN1Y2ggYXMgdG8gCmVuYWJsZSBoZXIgdG8gYmUgc2F2ZWQgZnJvbSBoZXIgZXhjZWVkaW5nbHkgZGFuZ2VyLSAKb3VzIHBvc2l0aW9uLCBvbmUgb2YgdGhlIE1hc3RlcnMgaGFkIHNwZWNpYWxseSBzZW50IApzb21lb25lIHRvIHByb3RlY3QgaGVyLCBpbiB2aWV3IG9mIHRoZSBmYWN0IHRoYXQgaGVyIApsaWZlIHdhcyBuZWVkZWQgZm9yIHRoZSB3b3JrLiAKCk5ldmVydGhlbGVzcyB0aGUgY2FzZSByZW1haW5zIHZlcnkgZXh0cmFvcmRpbmFyeSwgCmJvdGggd2l0aCByZWdhcmQgdG8gdGhlIGdyZWF0IGFtb3VudCBvZiBwb3dlciAKZXhlcmNpc2VkIGFuZCB0aGUgdW51c3VhbGx5IHB1YmxpYyBuYXR1cmUgb2YgaXRzIAptYW5pZmVzdGF0aW9uLiBJdCBpcyBub3QgZGlmZmljdWx0IHRvIGltYWdpbmUgdGhlIAptb2R1cyBvcGVyYW5kXiBzaGUgbXVzdCBoYXZlIGJlZW4gbGlmdGVkIGJvZGlseSAKb3ZlciB0aGUgaW50ZXJ2ZW5pbmcgYmxvY2sgb2YgaG91c2VzLCBhbmQgc2ltcGx5LSAKCgoyOCAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgpzZXQgZG93biBpbiB0aGUgbmV4dCBzdHJlZXQ7IGJ1dCBzaW5jZSBoZXIgcGh5c2ljYWwgCmJvZHkgd2FzIG5vdCB2aXNpYmxlIGZsb2F0aW5nIGluIHRoZSBhaXIsIGl0IGlzIGFsc28gCmV2aWRlbnQgdGhhdCBhIHZlaWwgb2Ygc29tZSBzb3J0IChwcm9iYWJseSBvZiBldGhlcmljIAptYXR0ZXIpIG11c3QgaGF2ZSBiZWVuIHRocm93biByb3VuZCBoZXIgd2hpbGUgaW4gCnRyYW5zaXQuIAoKSWYgaXQgYmUgb2JqZWN0ZWQgdGhhdCB3aGF0ZXZlciBjYW4gaGlkZSBwaHlzaWNhbCAKbWF0dGVyIG11c3QgaXRzZWxmIGJlIHBoeXNpY2FsLCBhbmQgdGhlcmVmb3JlIHZpc2libGUsIAppdCBtYXkgYmUgcmVwbGllZCB0aGF0IGJ5IGEgcHJvY2VzcyBmYW1pbGlhciB0byBhbGwgCm9jY3VsdCBzdHVkZW50cyBpdCBpcyBwb3NzaWJsZSB0byBiZW5kIHJheXMgb2YgbGlnaHQgCih3aGljaCwgdW5kZXIgYWxsIGNvbmRpdGlvbnMgYXQgcHJlc2VudCBrbm93biB0byAKc2NpZW5jZSwgdHJhdmVsIG9ubHkgaW4gc3RyYWlnaHQgbGluZXMgdW5sZXNzIHJlZnJhY3RlZCkgCnNvIHRoYXQgYWZ0ZXIgcGFzc2luZyByb3VuZCBhbiBvYmplY3QgdGhleSBtYXkgCnJlc3VtZSBleGFjdGx5IHRoZWlyIGZvcm1lciBjb3Vyc2U7IGFuZCBpdCB3aWxsIGF0IApvbmNlIGJlIHNlZW4gdGhhdCBpZiB0aGlzIHdlcmUgZG9uZSBzdWNoIGFuIG9iamVjdCAKd291bGQgdG8gYWxsIHBoeXNpY2FsIGV5ZXMgYmUgYWJzb2x1dGVseSBpbnZpc2libGUgCnVudGlsIHRoZSByYXlzIHdlcmUgYWxsb3dlZCB0byByZXN1bWUgdGhlaXIgbm9ybWFsIApjb3Vyc2UuIEkgYW0gZnVsbHkgYXdhcmUgdGhhdCB0aGlzIG9uZSBzdGF0ZW1lbnQgCmFsb25lIGlzIHN1ZmZpY2llbnQgdG8gYnJhbmQgbXkgcmVtYXJrcyBhcyBub25zZW5zZSAKaW4gdGhlIGV5ZXMgb2YgdGhlIHNjaWVudGlzdCBvZiB0aGUgcHJlc2VudCBkYXksIGJ1dCAKSSBjYW5ub3QgaGVscCB0aGF0OyBJIGFtIG1lcmVseSBzdGF0aW5nIGEgcG9zc2liaWxpdHkgCmluIG5hdHVyZSB3aGljaCB0aGUgc2NpZW5jZSBvZiB0aGUgZnV0dXJlIHdpbGwgbm8gCmRvdWJ0IG9uZSBkYXkgZGlzY292ZXIsIGFuZCBmb3IgdGhvc2Ugd2hvIGFyZSBub3QgCnN0dWRlbnRzIG9mIG9jY3VsdGlzbSB0aGUgcmVtYXJrIG11c3Qgd2FpdCB1bnRpbCAKdGhlbiBmb3IgaXRzIGp1c3RpZmljYXRpb24uIAoKVGhlIHByb2Nlc3MsIGFzIEkgc2F5LCBpcyBjb21wcmVoZW5zaWJsZSBlbm91Z2ggCnRvIGFueW9uZSB3aG8gdW5kZXJzdGFuZHMgYSBsaXR0bGUgYWJvdXQgdGhlIG1vcmUgCm9jY3VsdCBmb3JjZXMgb2YgbmF0dXJlOyBidXQgdGhlIHBoZW5vbWVub24gc3RpbGwgCnJlbWFpbnMgZXhjZWVkaW5nbHkgZHJhbWF0aWMuIAoKCkEgUEVSU09OQUwgRVhQRVJJRU5DRSAKCgoyOSAKCgpBbm90aGVyIHJlY2VudCBpbnN0YW5jZSBvZiBpbnRlcnBvc2l0aW9uLCBsZXNzIApzdHJpa2luZywgcGVyaGFwcywgYnV0IGVudGlyZWx5IHN1Y2Nlc3NmdWwsIGhhcyBiZWVuIApyZXBvcnRlZCB0byBtZSBzaW5jZSB0aGUgcHVibGljYXRpb24gb2YgdGhlIGZpcnN0IAplZGl0aW9uIG9mIHRoaXMgYm9vay4gQSBsYWR5LCBiZWluZyBvYmxpZ2VkIHRvIAp1bmRlcnRha2UgYSBsb25nIHJhaWx3YXkgam91cm5leSBhbG9uZSwgaGFkIHRha2VuIAp0aGUgcHJlY2F1dGlvbiB0byBzZWN1cmUgYW4gZW1wdHkgY29tcGFydG1lbnQ7IGJ1dCAKanVzdCBhcyB0aGUgdHJhaW4gd2FzIGxlYXZpbmcgdGhlIHN0YXRpb24sIGEgbWFuIG9mIApmb3JiaWRkaW5nIGFuZCB2aWxsYWlub3VzIGFwcGVhcmFuY2Ugc3ByYW5nIGluIGFuZCAKc2VhdGVkIGhpbXNlbGYgYXQgdGhlIG90aGVyIGVuZCBvZiB0aGUgY2FycmlhZ2UqIApUaGUgbGFkeSB3YXMgbXVjaCBhbGFybWVkLCB0aHVzIHRvIGJlIGxlZnQgYWxvbmUgCndpdGggc28gZG91YnRmdWwtbG9va2luZyBhIGNoYXJhY3RlciwgYnV0IGl0IHdhcyAKdG9vIGxhdGUgdG8gY2FsbCBmb3IgaGVscCwgc28gc2hlIHNhdCBzdGlsbCBhbmQgY29tLSAKbWVuZGVkIGhlcnNlbGYgZWFybmVzdGx5IHRvIHRoZSBjYXJlIG9mIGhlciBwYXRyb24gCnNhaW50LiAKClNvb24gaGVyIGZlYXJzIHdlcmUgcmVkb3VibGVkLCBmb3IgdGhlIG1hbiBhcm9zZSAKYW5kIHR1cm5lZCB0b3dhcmQgaGVyIHdpdGggYW4gZXZpbCBncmluLCBidXQgaGUgCmhhZCBoYXJkbHkgdGFrZW4gb25lIHN0ZXAgd2hlbiBoZSBzdGFydGVkIGJhY2sgCndpdGggYSBsb29rIG9mIHRoZSBtb3N0IGludGVuc2UgYXN0b25pc2htZW50IAphbmQgdGVycm9yLiBGb2xsb3dpbmcgdGhlIGRpcmVjdGlvbiBvZiBoaXMgZ2xhbmNlKiAKc2hlIHdhcyBzdGFydGxlZCB0byBzZWUgYSBnZW50bGVtYW4gc2VhdGVkIGRpcmVjdGx5IApvcHBvc2l0ZSB0byBoZXIsIGdhemluZyBxdWlldGx5IGJ1dCBmaXJtbHkgYXQgdGhlIApiYWZmbGVkIHJvYmJlciDigJQgYSBnZW50bGVtYW4gd2hvIGNlcnRhaW5seSBjb3VsZCAKbm90IGhhdmUgZW50ZXJlZCB0aGUgY2FycmlhZ2UgYnkgYW55IG9yZGluYXJ5IAptZWFucy4gVG9vIG11Y2ggYXdlZCB0byBzcGVhaywgc2hlIHdhdGNoZWQgaGltIAphcyB0aG91Z2ggZmFzY2luYXRlZCBmb3IgYSBmdWxsIGhhbGYtaG91cjsgaGUgdXR0ZXJlZCAKbm8gd29yZCwgYW5kIGRpZCBub3QgZXZlbiBsb29rIGF0IGhlciwgYnV0IGtlcHQgaGlzIApleWVzIHN0ZWFkaWx5IHVwb24gdGhlIHZpbGxhaW4gLCAxIHdobyBjb3dlcmVkIHRyZW0tIApibGluZyBpbiB0aGUgZnVydGhlc3QgY29ybmVyISBvZiB0aGUgY29tcGFydG1lbnQtIAoKCjMwIAoKCklOVklTSUJMRSBIRUxQRVJTIAoKClRoZSBtb21lbnQgdGhhdCB0aGUgdHJhaW4gcmVhY2hlZCB0aGUgbmV4dCBzdGF0aW9uLCAKYW5kIGV2ZW4gYmVmb3JlIGl0IGNhbWUgdG8gYSBzdGFuZHN0aWxsLCB0aGUgd291bGTigJkgCmJlIHRoaWVmIHRvcmUgb3BlbiB0aGUgZG9vciBhbmQgc3ByYW5nIGh1cnJpZWRseSAKb3V0LiBUaGUgbGFkeSwgZGVlcGx5IHRoYW5rZnVsIHRvIGJlIHJpZCBvZiBoaW0sIAp0dXJuZWQgdG8gZXhwcmVzcyBoZXIgZ3JhdGl0dWRlIHRvIHRoZSBnZW50bGVtYW4sIAotYnV0IGZvdW5kIG9ubHkgYW4gZW1wdHkgc2VhdCwgdGhvdWdoIGl0IHdvdWxkIApoYXZlIGJlZW4gaW1wb3NzaWJsZSBmb3IgYW55IHBoeXNpY2FsIGJvZHkgdG8gaGF2ZSAKbGVmdCB0aGUgY2FycmlhZ2UgaW4gdGhlIHRpbWUuIAoKVGhlIG1hdGVyaWFsaXphdGlvbiB3YXMgaW4gdGhpcyBjYXNlIG1haW50YWluZWQgCmZvciBhIGxvbmdlciBwZXJpb2QgdGhhbiB1c3VhbCwgYnV0IG9uIHRoZSBvdGhlciAKaGFuZCBpdCBleHBlbmRlZCBubyBmb3JjZSBpbiBhY3Rpb24gb2YgYW55IGtpbmQg4oCUIApub3IgaW5kZWVkIHdhcyBpdCBuZWNlc3NhcnkgdGhhdCBpdCBzaG91bGQgZG8gc28sIGFzIAppdHMgbWVyZSBhcHBlYXJhbmNlIHdhcyBzdWZmaWNpZW50IHRvIGVmZmVjdCBpdHMgCnB1cnBvc2UuIAoKQnV0IHRoZXNlIHN0b3JpZXMsIGFsbCByZWZlcnJpbmcgYXMgdGhleSBkbyB0byB3aGF0IAp3b3VsZCBjb21tb25seSBiZSBjYWxsZWQgYW5nZWxpYyBpbnRlcnZlbnRpb24sIAppbGx1c3RyYXRlIG9ubHkgb25lIHNtYWxsIHBhcnQgb2YgdGhlIGFjdGl2aXRpZXMgb2YgCm91ciBpbnZpc2libGUgaGVscGVycy4gQmVmb3JlLCBob3dldmVyLCB3ZSBjYW4gCnByb2ZpdGFibHkgY29uc2lkZXIgdGhlIG90aGVyIGRlcGFydG1lbnRzIG9mIHRoZWlyIAp3b3JrIGl0IHdpbGwgYmUgd2VsbCB0aGF0IHdlIHNob3VsZCBoYXZlIGNsZWFybHkgCmluIG91ciBtaW5kcyB0aGUgdmFyaW91cyBjbGFzc2VzIG9mIGVudGl0aWVzIHRvIHdoaWNoIAppdCBpcyBwb3NzaWJsZSB0aGF0IHRoZXNlIGhlbHBlcnMgbWF5IGJlbG9uZy4gTGV0IAp0aGF0LCB0aGVuLCBiZSB0aGUgcG9ydGlvbiBvZiBvdXIgc3ViamVjdCB0byBiZSBuZXh0IArilqB0cmVhdGVkLiAKCgpDSEFQVEVSIElWIAoKClRIRSBIRUxQRVJTIAoKIkhlbHAsIHRoZW4sIG1heSBiZSBnaXZlbiBieSBzZXZlcmFsIG9mIHRoZSBtYW55IApjbGFzc2VzIG9mIGluaGFiaXRhbnRzIG9mIHRoZSBhc3RyYWwgcGxhbmUuIEl0IG1heSAKY29tZSBmcm9tIGRldmFzLCBmcm9tIG5hdHVyZS1zcGlyaXRzLCBvciBmcm9tIHRob3NlIAp3aG9tIHdlIGNhbGwgdGhlIGRlYWQsIGFzIHdlbGwgYXMgZnJvbSB0aG9zZSB3aG8gCmZ1bmN0aW9uIGNvbnNjaW91c2x5IHVwb24gdGhlIGFzdHJhbCBwbGFuZSBkdXJpbmcgCmxpZmUg4oCUIGNoaWVmbHkgdGhlIEFkZXB0cyBhbmQgdGhlaXIgcHVwaWxzLiBCdXQgaWYgCndlIGV4YW1pbmUgdGhlIG1hdHRlciBhIGxpdHRsZSBtb3JlIGNsb3NlbHkgd2Ugc2hhbGwgCnNlZSB0aGF0IHRob3VnaCBhbGwgdGhlIGNsYXNzZXMgbWVudGlvbmVkIG1heSwgYW5kIApzb21ldGltZXMgZG8sIHRha2UgYSBwYXJ0IGluIHRoaXMgd29yaywgeWV0IHRoZWlyIApzaGFyZXMgaW4gaXQgYXJlIHNvIHVuZXF1YWwgdGhhdCBpdCBpcyBwcmFjdGljYWxseSBsZWZ0IAphbG1vc3QgZW50aXJlbHkgdG8gb25lIGNsYXNzLiAKClRoZSB2ZXJ5IGZhY3QgdGhhdCBzbyBtdWNoIG9mIHRoaXMgd29yayBvZiBoZWxwLSAKaW5nIGhhcyB0byBiZSBkb25lIGVpdGhlciB1cG9uIG9yIGZyb20gdGhlIGFzdHJhbCAKcGxhbmUgZ29lcyBmYXIgaW4gaXRzZWxmIHRvd2FyZHMgZXhwbGFpbmluZyB0aGlzLiBUbyAKYW55b25lIHdobyBoYXMgZXZlbiBhIGZhaW50IGlkZWEgb2Ygd2hhdCB0aGUgCnBvd2VycyBhdCB0aGUgY29tbWFuZCBvZiBhbiBBZGVwdCByZWFsbHkgYXJlLCBpdCAKd2lsbCBiZSBhdCBvbmNlIG9idmlvdXMgdGhhdCBmb3IgaGltIHRvIHdvcmsgdXBvbiAKdGhlIGFzdHJhbCBwbGFuZSB3b3VsZCBiZSBhIGZhciBncmVhdGVyIHdhc3RlIG9mIAplbmVyZ3kgdGhhbiBmb3Igb3VyIGxlYWRpbmcgcGh5c2ljaWFucyBvciBzY2llbnRpc3RzIAp0byBzcGVuZCB0aGVpciB0aW1lIGluIGJyZWFraW5nIHN0b25lcyB1cG9uIHRoZSByb2FkLiAKCgozMiAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgpUaGUgd29yayBvZiB0aGUgQWRlcHQgbGllcyBpbiBsb2Z0aWVyIHJlZ2lvbnPigJQgCmNoaWVmbHkgdXBvbiB0aGUgdGppcmVlIGhpZ2hlciBsZXZlbHMgb2YgdGhlIG1lbnRhbCAKcGxhbmUsIHdoZXJlIGhlIG1heSBkaXJlY3QgaGlzIGVuZXJnaWVzIHRvIHRoZSBpbi0gCmZsdWVuY2luZyBvZiB0aGUgZWdvIG9yIHRydWUgaW5kaXZpZHVhbGl0eSBvZiBtYW4sLCAKYW5kIG5vdCB0aGUgbWVyZSBwZXJzb25hbGl0eSB3aGljaCBpcyBhbGwgdGhhdCBjYW4gCmJlIHJlYWNoZWQgaW4gdGhlIGFzdHJhbCBvciBwaHlzaWNhbCB3b3JsZC4gVGhlIApzdHJlbmd0aCB3aGljaCBoZSBwdXRzIGZvcnRoIGluIHRoYXQgbW9yZSBleGFsdGVkIApyZWFsbSBwcm9kdWNlcyByZXN1bHRzIGdyZWF0ZXIsIG1vcmUgZmFyLXJlYWNoaW5nIAphbmQgbW9yZSBsYXN0aW5nIHRoYW4gYW55IHdoaWNoIGNhbiBiZSBhdHRhaW5lZCAKYnkgdGhlIGV4cGVuZGl0dXJlIG9mIGV2ZW4gdGVuIHRpbWVzIHRoZSBmb3JjZSBkb3duIApoZXJlOyBhbmQgdGhlIHdvcmsgdXAgdGhlcmUgaXMgc3VjaCBhcyBoZSBhbG9uZSBjYW4gCmZ1bGx5IGFjY29tcGxpc2gsIHdoaWxlIHRoYXQgb24gbG93ZXIgcGxhbmVzIG1heSBiZSAKYXQgYW55IHJhdGUgdG8gc29tZSBleHRlbnQgYWNoaWV2ZWQgYnkgdGhvc2Ugd2hvc2UgCmZlZXQgYXJlIHlldCB1cG9uIHRoZSBlYXJsaWVyIHN0ZXBzIG9mIHRoZSBncmVhdCBzdGFpci0gCndheSB3aGljaCB3aWxsIG9uZSBkYXkgbGVhZCB0aGVtIHRvIHRoZSBwb3NpdGlvbiAKdyByIGhlcmUgaGUgc3RhbmRzLiAKClRoZSBzYW1lIHJlbWFya3MgYXBwbHkgYWxzbyBpbiB0aGUgY2FzZSBvZiB0aGUgCmRldmFzIG9yIEFuZ2Vscy4gQmVsb25naW5nLCBhcyB0aGV5IGRvLCB0byBhIGhpZ2hlciAKa2luZ2RvbSBvZiBuYXR1cmUgdGhhbiBvdXJzLCB0aGVpciB3b3JrIHNlZW1zIGZvciAKdGhlIG1vc3QgcGFydCBlbnRpcmVseSB1bmNvbm5lY3RlZCB3aXRoIGh1bWFuaXR5OywgCmFuZCBldmVuIHRob3NlIG9mIHRoZWlyIG9yZGVycyDigJQgYW5kIHRoZXJlIGFyZSBzb21lIApzdWNoIOKAlCB3aGljaCBkbyBzb21ldGltZXMgcmVzcG9uZCB0byBvdXIgaGlnaGVyIAp5ZWFybmluZ3Mgb3IgYXBwZWFscywgZG8gc28gb24gdGhlIG1lbnRhbCBwbGFuZSAKcmF0aGVyIHRoYW4gb24gdGhlIHBoeXNpY2FsIG9yIGFzdHJhbCwgYW5kIG1vcmUgCmZyZXF1ZW50bHkgaW4gdGhlIHBlcmlvZHMgYmV0d2VlbiBvdXIgaW5jYXJuYXRpb25zIAp0aGFuIGR1cmluZyBvdXIgZWFydGhseSBsaXZlcy4gCgpJdCBtYXkgYmUgcmVtZW1iZXJlZCB0aGF0IHNvbWUgaW5zdGFuY2VzIG9mIHN1Y2ggCmhlbHAgd2VyZSBvYnNlcnZlZCBpbiB0aGUgY291cnNlIG9mIGludmVzdGlnYXRpb25zIAoKClRIRSBIRUxQRVJTIAoKCjMzIAoKCmludG8gdGhlIHN1YmRpdmlzaW9ucyBvZiB0aGUgbWVudGFsIHBsYW5lIHdoaWNoIAp3ZXJlIHVuZGVydGFrZW4gd2hlbiB0aGUgVGhlb3NvcGhpY2FsIG1hbnVhbCBvbiAKdGhlIHN1YmplY3Qgd2FzIGluIHByZXBhcmF0aW9uLiBJbiBvbmUgY2FzZSBhbiAKQW5nZWwgd2FzIGZvdW5kIHRlYWNoaW5nIHRoZSBtb3N0IHdvbmRlcmZ1bCAKY2VsZXN0aWFsIG11c2ljIHRvIGEgY2hvcmlzdGVyOyBhbmQgaW4gYW5vdGhlciBvbmUgb2YgCmEgZGlmZmVyZW50IGNsYXNzIHdhcyBnaXZpbmcgaW5zdHJ1Y3Rpb24gYW5kIGd1aWRhbmNlIAp0byBhbiBhc3Ryb25vbWVyIHdobyB3YXMgc2Vla2luZyB0byBjb21wcmVoZW5kIAp0aGUgZm9ybSBhbmQgc3RydWN0dXJlIG9mIHRoZSB1bml2ZXJzZS4gCgpUaGVzZSB0d28gd2VyZSBidXQgZXhhbXBsZXMgb2YgbWFueSBpbnN0YW5jZXMgCmluIHdoaWNoIHRoZSBncmVhdCBhbmdlbGljIGtpbmdkb20gd2FzIGZvdW5kIHRvIGJlIApoZWxwaW5nIG9ud2FyZCB0aGUgZXZvbHV0aW9uIGFuZCByZXNwb25kaW5nIHRvIHRoZSAKaGlnaGVyIGFzcGlyYXRpb25zIG9mIG1hbiBhZnRlciBkZWF0aDsgYW5kIHRoZXJlIGFyZSAKbWV0aG9kcyBieSB3aGljaCwgZXZlbiBkdXJpbmcgZWFydGgtbGlmZSwgdGhlc2UgCmdyZWF0IG9uZXMgbWF5IGJlIGFwcHJvYWNoZWQsIGFuZCBhbiBpbmZpbml0eSBvZiAKa25vd2xlZGdlIGFjcXVpcmVkIGZyb20gdGhlbSwgdGhvdWdoIGV2ZW4gdGhlbiAKc3VjaCBpbnRlcmNvdXJzZSBpcyBnYWluZWQgcmF0aGVyIGJ5IHJpc2luZyB0byB0aGVpciAKcGxhbmUgdGhhbiBieSBpbnZva2luZyB0aGVtIHRvIGRlc2NlbmQgdG8gb3Vycy4gCgpJbiB0aGUgb3JkaW5hcnkgZXZlbnRzIG9mIG91ciBwaHlzaWNhbCBsaWZlIHRoZSAKQW5nZWwgdmVyeSByYXJlbHkgaW50ZXJmZXJlc+KAlCBpbmRlZWQsIGhlIGlzIHNvIGZ1bGx5IApvY2N1cGllZCB3aXRoIHRoZSBmYXIgZ3JhbmRlciB3b3JrIG9mIGhpcyBvd24gcGxhbmUgCnRoYXQgaGUgaXMgcHJvYmFibHkgc2NhcmNlbHkgY29uc2Npb3VzIG9mIHRoaXM7IGFuZCAKdGhvdWdoIGl0IG1heSBvY2Nhc2lvbmFsbHkgaGFwcGVuIHRoYXQgaGUgYmVjb21lcyAKYXdhcmUgb2Ygc29tZSBodW1hbiBzb3Jyb3cgb3IgZGlmZmljdWx0eSB3aGljaCAKZXhjaXRlcyBoaXMgcGl0eSBhbmQgbW92ZXMgaGltIHRvIGVuZGVhdm91ciB0byBoZWxwIAppbiBzb21lIHdheSwgaGlzIHdpZGVyIHZpc2lvbiB1bmRvdWJ0ZWRseSByZWNvZ25pemVzIAp0aGF0IGF0IHRoZSBwcmVzZW50IHN0YWdlIG9mIGV2b2x1dGlvbiBzdWNoIGludGVyLSAKcG9zaXRpb25zIHdvdWxkLCBpbiB0aGUgdmFzdCBtYWpvcml0eSBvZiBjYXNlcywgYmUgCnByb2R1Y3RpdmUgb2YgaW5maW5pdGVseSBtb3JlIGhhcm0gdGhhbiBnb29kLiAKCjMgCgoKMzQgCgoKSU5WSVNJQkxFIEhFTFBFUlMgCgoKVGhlcmUgd2FzIGluZHViaXRhYmx5IGEgcGVyaW9kIGluIHRoZSBwYXN0IOKAlCBpbiAKdGhlIGluZmFuY3kgb2YgdGhlIGh1bWFuIHJhY2Ug4oCUIHdoZW4gaXQgd2FzIG11Y2ggCm1vcmUgbGFyZ2VseSBhc3Npc3RlZCBmcm9tIG91dHNpZGUgdGhhbiBpcyBhdCBwcmVzZW50IAp0aGUgY2FzZS4gQXQgdGhlIHRpbWUgd2hlbiBhbGwgaXRzIEJ1ZGRoYXMgYW5kIApNYW51cywgYW5kIGV2ZW4gaXRzIG1vcmUgb3JkaW5hcnkgbGVhZGVycyBhbmQgCnRlYWNoZXJzLCB3ZXJlIGRyYXduIGVpdGhlciBmcm9tIHRoZSByYW5rcyBvZiB0aGUgCmFuZ2VsaWMgZXZvbHV0aW9uIG9yIGZyb20gdGhlIHBlcmZlY3RlZCBodW1hbml0eSBvZiAKYSBtb3JlIGFkdmFuY2VkIHBsYW5ldCwgYW55IHN1Y2ggYXNzaXN0YW5jZSBhcyB3ZSAKYXJlIGNvbnNpZGVyaW5nIGluIHRoaXMgdHJlYXRpc2UgbXVzdCBhbHNvIGhhdmUgYmVlbiAKZ2l2ZW4gYnkgdGhlc2UgZXhhbHRlZCBiZWluZ3MuIEJ1dCBhcyBtYW4gcHJvLSAKZ3Jlc3NlcyBoZSBiZWNvbWVzIGhpbXNlbGYgcXVhbGlmaWVkIHRvIGFjdCBhcyBhIApoZWxwZXIsIGZpcnN0IG9uIHRoZSBwaHlzaWNhbCBwbGFuZSBhbmQgdGhlbiBvbiBoaWdoZXIgCmxldmVsczsgYW5kIHdlIGhhdmUgbm93IHJlYWNoZWQgYSBzdGFnZSBhdCB3aGljaCAKaHVtYW5pdHkgb3VnaHQgdG8gYmUgYWJsZSB0byBwcm92aWRlLCBhbmQgdG8gc29tZSAKc2xpZ2h0IGV4dGVudCBkb2VzIHByb3ZpZGUsIGludmlzaWJsZSBoZWxwZXJzIGZvciBpdHNlbGYsIAp0aHVzIHNldHRpbmcgZnJlZSBmb3Igc3RpbGwgbW9yZSB1c2VmdWwgYW5kIGVsZXZhdGVkIAp3b3JrIHRob3NlIGJlaW5ncyB3aG8gYXJlIGNhcGFibGUgb2YgaXQuIAoKQXQgdGhlIHByZXNlbnQgdGltZSwgaG93ZXZlciwgdGhlcmUgaXMgYW5vdGhlciAKZmFjdG9yIHRvIGJlIHRha2VuIGludG8gYWNjb3VudC4gSW4gdGhlIHByb2Nlc3Mgb2YgCml0cyBldm9sdXRpb24gdGhlIHdvcmxkLCB3aGljaCBpcyBzd2F5ZWQgYW5kIGhlbHBlZCAKaW4gdHVybiBieSBlYWNoIG9mIHRoZSBTZXZlbiBncmVhdCBSYXlzLCBpcyBqdXN0IGVuLSAKdGVyaW5nIHVwb24gYSBwZXJpb2Qgd2hlbiB0aGUgc3BlY2lhbCBpbmZsdWVuY2Ugb2YgCnRoZSBTZXZlbnRoIG9mIHRob3NlIFJheXMgaXMgZG9taW5hbnQ7IGFuZCBvbmUgb2YgCnRoZSBtb3N0IG1hcmtlZCBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhhdCBSYXkgaXMgdGhhdCAKaXQgcHJvbW90ZXMgY28tb3BlcmF0aW9uIGJldHdlZW4gdGhlIGh1bWFuIGFuZCAKdGhlIGFuZ2VsaWMga2luZ2RvbXMgb2YgbmF0dXJlLiBUaGUgcmVsYXRpb25zIApiZXR3ZWVuIHRoZXNlIHR3byBraW5nZG9tcyBhcmUgdGhlcmVmb3JlIGxpa2VseSAKdG8gYmVjb21lIGNsb3NlciBhbmQgbW9yZSBwcm9taW5lbnQgaW4gdGhlIG5lYXIgCgoKVEhFIEhFTFBFUlMgCgoKMzUgCgoKZnV0dXJlOyBhbmQgdGhlaXIgbmVhcmVyIGFwcHJvYWNoIG1heSBwcm9iYWJseSAKbWFuaWZlc3QgaXRzZWxmIGluIHRoZSBtdWx0aXBsaWNhdGlvbiBvZiBjYXNlcyBvZiAKaW5kaXZpZHVhbCBhc3Npc3RhbmNlIGFuZCBpbnRlcmNvdXJzZSwgYXMgd2VsbCBhcyBpbiAKY29sbGFib3JhdGlvbiBpbiBtYWduaWZpY2VudCBjZXJlbW9uaWFsIG9mIHZhcmlvdXMgCmtpbmRzIC4gMSAKClN0aWxsLCB0aGF0IGRvZXMgbm90IGFsdGVyIHRoZSBvYnZpb3VzIGZhY3QgdGhhdCAKc3VjaCBhc3Npc3RhbmNlIGFzIHRoYXQgdG8gd2hpY2ggd2UgYXJlIGhlcmUgCnJlZmVycmluZyBtYXkgbW9zdCBmaXRseSBiZSBnaXZlbiBieSBtZW4gYW5kIAp3b21lbiBhdCBhIHBhcnRpY3VsYXIgc3RhZ2Ugb2YgdGhlaXIgZXZvbHV0aW9uOyBub3QgCmJ5IHRoZSBBZGVwdHMsIHNpbmNlIHRoZXkgYXJlIGNhcGFibGUgb2YgZG9pbmcgZmFyIApncmFuZGVyIGFuZCBtb3JlIHdpZGVseSB1c2VmdWwgd29yaywgYW5kIG5vdCBieSAKdGhlIG9yZGluYXJ5IHBlcnNvbiBvZiBubyBzcGVjaWFsIHNwaXJpdHVhbCBkZXZlbG9wLSAKbWVudCwgZm9yIGhlIHdvdWxkIGJlIHVuYWJsZSB0byBiZSBvZiBhbnkgdXNlLiAKSnVzdCBhcyB0aGVzZSBjb25zaWRlcmF0aW9ucyB3b3VsZCBsZWFkIHVzIHRvIApleHBlY3QsIHdlIGZpbmQgdGhhdCB0aGlzIHdvcmsgb2YgaGVscGluZyBvbiB0aGUgCmFzdHJhbCBhbmQgbG93ZXIgbWVudGFsIHBsYW5lcyBpcyBjaGllZmx5JyBpbiB0aGUgCmhhbmRzIG9mIHRoZSBwdXBpbHMgb2YgdGhlIE1hc3RlcnMg4oCUIG1lbiB3aG8sIAp0aG91Z2ggeWV0IGZhciBmcm9tIHRoZSBhdHRhaW5tZW50IG9mIEFkZXB0c2hpcCwgCmhhdmUgZXZvbHZlZCB0aGVtc2VsdmVzIHRvIHRoZSBleHRlbnQgb2YgYmVpbmcgYWJsZSAKdG8gZnVuY3Rpb24gY29uc2Npb3VzbHkgdXBvbiB0aGUgcGxhbmVzIGluIHF1ZXN0aW9uLiAKClNvbWUgb2YgdGhlc2UgaGF2ZSB0YWtlbiB0aGUgZnVydGhlciBzdGVwIG9mIGNvbS0gCnBsZXRpbmcgdGhlIGxpbmtzIGJldHdlZW4gdGhlIHBoeXNpY2FsIGNvbnNjaW91c25lc3MgCmFuZCB0aGF0IG9mIHRoZSBoaWdoZXIgbGV2ZWxzLCBhbmQgdGhleSB0aGVyZWZvcmUgCmhhdmUgdGhlIHVuZG91YnRlZCBhZHZhbnRhZ2Ugb2YgcmVjb2xsZWN0aW5nIGluIAp3YWtpbmcgbGlmZSB3aGF0IHRoZXkgaGF2ZSBkb25lIGFuZCB3aGF0IHRoZXkgCgoxIEZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIGFib3V0IHRoZSBSYXlzLCBzZWUgVGhlIE1hc3RlcnMgYW5kIAp0aGUgUGF0aCAoMm5kIEVkaXRpb24pLCBwcC4gMzczLTQwNiwgYW5kIFByb2Zlc3NvciBXb29k4oCZcyBib29rLiAKVGhlIFNldmVuIFJheXMg4oCUIGJvdGggdG8gYmUgaGFkIGZyb20gVGhlIFRoZW9zb3BoaWNhbCBQdWJsaXNoLSAKaW5nIEhvdXNlLCBBZHlhciwgTWFkcmFzLiAKCgozNiAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgpoYXZlIGxlYXJudCBpbiB0aG9zZSBvdGhlciB3b3JsZHM7IGJ1dCB0aGVyZSBhcmUgCm1hbnkgb3RoZXJzIHdobywgdGhvdWdoIGFzIHlldCB1bmFibGUgdG8gY2FycnkgCnRoZWlyIGNvbnNjaW91c25lc3MgdGhyb3VnaCB1bmJyb2tlbiwgYXJlIG5ldmVyLSAKdGhlbGVzcyBieSBubyBtZWFucyB3YXN0aW5nIHRoZSBob3VycyB3aGVuIHRoZXkgCnRoaW5rIHRoZXkgYXJlIGFzbGVlcCwgYnV0IHNwZW5kaW5nIHRoZW0gaW4gbm9ibGUgCmFuZCB1bnNlbGZpc2ggbGFib3VyIGZvciB0aGVpciBmZWxsb3ctbWVuLiAKCldoYXQgdGhpcyBsYWJvdXIgaXMgd2Ugc2hhbGwgcHJvY2VlZCB0byBjb25zaWRlciwsIApidXQgYmVmb3JlIHdlIGVudGVyIHVwb24gdGhhdCBwYXJ0IG9mIHRoZSBzdWJqZWN0IAp3ZSB3aWxsIGZpcnN0IHJlZmVyIHRvIGFuIG9iamVjdGlvbiB3aGljaCBpcyBmcmUtIApxdWVudGx5IGJyb3VnaHQgZm9yd2FyZCB3aXRoIHJlZ2FyZCB0byBzdWNoIHdvcmssLCAKYW5kIHdlIHdpbGwgYWxzbyBkaXNwb3NlIG9mIHRoZSBjb21wYXJhdGl2ZWx5IHJhcmUgCmNhc2VzIGluIHdoaWNoIHRoZSBhZ2VudHMgYXJlIGRpdGhlciBuYXR1cmUtc3Bpcml0cyAKb3IgbWVuIHdobyBoYXZlIGNhc3Qgb2ZmIHRoZSBwaHlzaWNhbCBib2R5LiAKClBlb3BsZSB3aG9zZSBncmFzcCBvZiBUaGVvc29waGljYWwgaWRlYXMgaXMgYXMgCnlldCBpbXBlcmZlY3QgYXJlIG9mdGVuIGluIGRvdWJ0IGFzIHRvIHdoZXRoZXIgaXQgaXMgCmFsbG93YWJsZSBmb3IgdGhlbSB0byB0cnkgdG8gaGVscCBzb21lb25lIHdob20gCnRoZXkgZmluZCBpbiBzb3Jyb3cgb3IgZGlmZmljdWx0eSwgbGVzdCB0aGV5IHNob3VsZCAKaW50ZXJmZXJlIHdpdGggdGhlIGZhdGUgd2hpY2ggaGFzIGJlZW4gZGVjcmVlZCBmb3IgCmhpbSBieSB0aGUgYWJzb2x1dGUganVzdGljZSBvZiB0aGUgZXRlcm5hbCBsYXcgb2YgCmthcm1hLiDigJxUaGUgbWFuIGlzIGluIGhpcyBwcmVzZW50IHBvc2l0aW9uLOKAmeKAmSB0aGV5IApzYXkgaW4gZWZmZWN0LCDigJxiZWNhdXNlIGhlIGhhcyBkZXNlcnZlZCBpdDsgaGUgaXMgCm5vdyB3b3JraW5nIG91dCB0aGUgcGVyZmVjdGx5IG5hdHVyYWwgcmVzdWx0IG9mIApzb21lIGV2aWwgd2hpY2ggaGUgaGFzIGNvbW1pdHRlZCBpbiB0aGUgcGFzdDsgd2hhdCAKcmlnaHQgaGF2ZSAxIHRvIGludGVyZmVyZSB3aXRoIHRoZSBhY3Rpb24gb2YgdGhlIGdyZWF0IApjb3NtaWMgbGF3IGJ5IHRyeWluZyB0byBhbWVsaW9yYXRlIGhpcyBjb25kaXRpb24sIAplaXRoZXIgb24gdGhlIGFzdHJhbCBwbGFuZSBvciB0aGUgcGh5c2ljYWw/4oCdIAoKTm93IHRoZSBnb29kIHBlb3BsZSB3IHIgaG8gbWFrZSBzdWNoIHN1Z2dlc3Rpb25zIAphcmUgcmVhbGx5LCBob3dldmVyIHVuY29uc2Npb3VzbHkgdG8gdGhlbXNlbHZlcy4gCgoKVEhFIEhFTFBFUlMgCgoKMzcgCgoKZXhoaWJpdGluZyB0aGUgbW9zdCBjb2xvc3NhbCBjb25jZWl0LCBmb3IgdGhlaXIgcG9zaS0gCnRpb24gaW1wbGllcyB0d28gYXN0b3VuZGluZyBhc3N1bXB0aW9uczsgZmlyc3QsIHRoYXQgCnRoZXkga25vdyBleGFjdGx5IHdoYXQgYW5vdGhlciBtYW7igJlzIGthcm1hIGhhcyAKYmVlbiwgYW5kIGhvdyBsb25nIGl0IGhhcyBkZWNyZWVkIHRoYXQgaGlzIHN1ZmZlcmluZ3MgCnNoYWxsIGxhc3Q7IGFuZCBzZWNvbmRseSwgdGhhdCB0aGV5IOKAlCB0aGUgaW5zZWN0cyBvZiBhIApkYXkg4oCUIGNvdWxkIGFic29sdXRlbHkgb3ZlcnJpZGUgdGhlIGNvc21pYyBsYXcgYW5kIApwcmV2ZW50IHRoZSBkdWUgd29ya2luZy1vdXQgb2Yga2FybWEgYnkgYW55IGFjdGlvbiAKb2YgdGhlaXJzLiBXZSBtYXkgYmUgd2VsbCBhc3N1cmVkIHRoYXQgdGhlIGdyZWF0IAprYXJtaWMgZGVpdGllcyBhcmUgcGVyZmVjdGx5IHdlbGwgYWJsZSB0byBtYW5hZ2UgCnRoZWlyIGJ1c2luZXNzIHdpdGhvdXQgb3VyIGFzc2lzdGFuY2UsIGFuZCB3ZSBuZWVkIApoYXZlIG5vIGZlYXIgdGhhdCBhbnkgc3RlcHMgd2UgbWF5IHRha2UgY2FuIGJ5IAphbnkgcG9zc2liaWxpdHkgY2F1c2UgdGhlbSB0aGUgc2xpZ2h0ZXN0IGRpZmZpY3VsdHkgb3IgCnVuZWFzaW5lc3MuIAoKSWYgYSBtYW7igJlzIGthcm1hIGlzIHN1Y2ggdGhhdCBoZSBjYW5ub3QgYmUgCmhlbHBlZCwgdGhlbiBhbGwgb3VyIHdlbGwtbWVhbnQgZWZmb3J0cyBpbiB0aGF0IApkaXJlY3Rpb24gd2lsbCBmYWlsLCB0aG91Z2ggd2Ugc2hhbGwgbmV2ZXJ0aGVsZXNzIGhhdmUgCmdhaW5lZCBnb29kIGthcm1hIGZvciBvdXJzZWx2ZXMgYnkgbWFraW5nIHRoZW0uIApXaGF0IHRoZSBtYW7igJlzIGthcm1hIGhhcyBiZWVuIGlzIG5vIGJ1c2luZXNzIG9mIApvdXJzOyBvdXIgZHV0eSBpcyB0byBnaXZlIGhlbHAgdG8gdGhlIHV0bW9zdCBvZiBvdXIgCnBvd2VyLCBhbmQgb3VyIHJpZ2h0IGlzIG9ubHkgdG8gdGhlIGFjdDsgdGhlIHJlc3VsdCBpcyAKaW4gb3RoZXIgYW5kIGhpZ2hlciBoYW5kcy4gSG93IGNhbiB3ZSB0ZWxsIGhvdyBhIAptYW7igJlzIGFjY291bnQgc3RhbmRzPyBGb3IgYWxsIHdlIGtub3cgaGUgbWF5IApqdXN0IGhhdmUgZXhoYXVzdGVkIGhpcyBldmlsIGthcm1hLCBhbmQgYmUgYXQgdGhpcyAKbW9tZW50IGF0IHRoZSB2ZXJ5IHBvaW50IHdoZXJlIGEgaGVscGluZyBoYW5kIGlzIApuZWVkZWQgdG8gZ2l2ZSByZWxpZWYgYW5kIHJhaXNlIGhpbSBvdXQgb2YgaGlzIAp0cm91YmxlIG9yIGRlcHJlc3Npb247IHdoeSBzaG91bGQgbm90IHdlIGhhdmUgdGhlIApwbGVhc3VyZSBhbmQgcHJpdmlsZWdlIG9mIGRvaW5nIHRoYXQgZ29vZCBkZWVkIGFzIAp3ZWxsIGFzIGFub3RoZXI/IElmIHdlIGNhbiBoZWxwIGhpbSwgdGhlbiB0aGF0IGZhY3QgCgoKMzggCgoKSU5WSVNJQkxFIEhFTFBFUlMgCgoKb2YgaXRzZWxmIHNob3dzIHRoYXQgaGUgaGFzIGRlc2VydmVkIHRvIGJlIGhlbHBlZDstIApidXQgd2UgY2FuIG5ldmVyIGtub3cgdW5sZXNzIHdlIHRyeS4gSW4gYW55IGNhc2UgCnRoZSBsYXcgb2Yga2FybWEgd2lsbCB0YWtlIGNhcmUgb2YgaXRzZWxmLCBhbmQgd2UgCm5lZWQgbm90IHRyb3VibGUgb3Vyc2VsdmVzIGFib3V0IGl0LiAKClRoZSBjYXNlcyBpbiB3aGljaCBhc3Npc3RhbmNlIGlzIGdpdmVuIHRvIG1hbi0gCmtpbmQgYnkgbmF0dXJlLXNwaXJpdHMgYXJlIGZldy4gVGhlIG1ham9yaXR5IG9mIApzdWNoIGNyZWF0dXJlcyBzaHVuIHRoZSBoYXVudHMgb2YgbWFuLCBhbmQgcmV0aXJlIApiZWZvcmUgaGltLCBkaXNsaWtpbmcgaGlzIGVtYW5hdGlvbnMgYW5kIHRoZSBwZXItIApwZXR1YWwgYnVzdGxlIGFuZCB1bnJlc3Qgd2hpY2ggaGUgY3JlYXRlcyBhbGwgYXJvdW5kIApoaW0uIEFsc28gZXhjZXB0IHNvbWUgb2YgdGhlaXIgaGlnaGVyIG9yZGVycywgdGhleSAKYXJlIGdlbmVyYWxseSBpbmNvbnNlcXVlbnQgYW5kIHRob3VnaHRsZXNzIOKAlCBtb3JlIApsaWtlIGhhcHB5IGNoaWxkcmVuIGF0IHBsYXkgdW5kZXIgZXhjZWVkaW5nbHkgCmZhdm91cmFibGUgcGh5c2ljYWwgY29uZGl0aW9ucyB0aGFuIGxpa2UgZ3JhdmUgYW5kIApyZXNwb25zaWJsZSBlbnRpdGllcy4gU3RpbGwgaXQgc29tZXRpbWVzIGhhcHBlbnMgCnRoYXQgb25lIG9mIHRoZW0gd2lsbCBiZWNvbWUgYXR0YWNoZWQgdG8gYSBodW1hbiAKYmVpbmcgYW5kIGRvIGhpbSBtYW55IGEgZ29vZCB0dXJuOyBidXQgYXQgdGhlIApwcmVzZW50IHN0YWdlIG9mIGl0cyBldm9sdXRpb24gdGhpcyBkZXBhcnRtZW50IG9mIApuYXR1cmUgY2Fubm90IGJlIHJlbGllZCB1cG9uIGZvciBhbnl0aGluZyBsaWtlIHN0ZWFkeSAKY28tb3BlcmF0aW9uIGluIHRoZSB3b3JrIG9mIGludmlzaWJsZSBoZWxwZXJzLiBGb3IgCmEgZnVsbGVyIGFjY291bnQgb2YgdGhlIG5hdHVyZS1zcGlyaXRzIHRoZSByZWFkZXIgaXMgCnJlZmVycmVkIHRvIHRoZSBmaWZ0aCBvZiBvdXIgVGhlb3NvcGhpY2FsIG1hbnVhbHMsIAphbmQgdG8gYSBib29rIHdoaWNoIEkgd3JvdGUgb24gVGhlIEhpZGRlbiBTaWRlIG9mIApUaGluZ3MgLiAKCkFnYWluLCBhcyBJIGhhdmUgYWxyZWFkeSBzYWlkLCBoZWxwIGlzIHNvbWUtIAp0aW1lcyBnaXZlbiBieSB0aG9zZSByZWNlbnRseSBkZXBhcnRlZCDigJQgdGhvc2Ugd2hvIAoiIGFyZSBzdGlsbCBsaW5nZXJpbmcgb24gdGhlIGFzdHJhbCBwbGFuZSwgYW5kIHN0aWxsIGluIApjbG9zZSB0b3VjaCB3aXRoIGVhcnRobHkgYWZmYWlycywgYXMgKHByb2JhYmx5KSBpbiB0aGUgCmFib3ZlLW1lbnRpb25lZCBjYXNlIG9mIHRoZSBtb3RoZXIgd2hvIHNhdmVkIGhlciAKCgpUSEUgSEVMUEVSUyAKCgozOSAnIAoKCmNoaWxkcmVuIGZyb20gZmFsbGluZyBkb3duIGEgd2VsbC4gQnV0IGl0IHdpbGwgCnJlYWRpbHkgYmUgc2VlbiB0aGF0IHRoZSBhbW91bnQgb2Ygc3VjaCBoZWxwIAphdmFpbGFibGUgbXVzdCBuYXR1cmFsbHkgYmUgZXhjZWVkaW5nbHkgbGltaXRlZC4gClRoZSBtb3JlIHVuc2VsZmlzaCBhbmQgaGVscGZ1bCBhIHBlcnNvbiBpcywgdGhlIGxlc3MgCmxpa2VseSBpcyBoZSB0byBiZSBmb3VuZCBhZnRlciBkZWF0aCBsaW5nZXJpbmcgaW4gZnVsbCAKY29uc2Npb3VzbmVzcyBvbiB0aGUgbG93ZXIgbGV2ZWxzIG9mIHRoZSBhc3RyYWwgcGxhbmUsLCAKZnJvbSB3aGljaCB0aGUgZWFydGggaXMgbW9zdCByZWFkaWx5IGFjY2Vzc2libGUuIEluIAphbnkgY2FzZSwgdW5sZXNzIGhlIHdlcmUgYW4gZXhjZXB0aW9uYWxseSBiYWQgbWFuLCAKaGlzIHN0YXkgd2l0aGluIHRoZSByZWFsbSB3aGVuY2UgYWxvbmUgYW55IGludGVyLSAKZmVyZW5jZSB3b3VsZCBiZSBwb3NzaWJsZSB3b3VsZCBiZSBjb21wYXJhdGl2ZWx5IApzaG9ydDsgYW5kIGFsdGhvdWdoIGZyb20gdGhlIGhlYXZlbi13b3JsZCBoZSBtYXkgCnN0aWxsIHNoZWQgYmVuaWduIGluZmx1ZW5jZSB1cG9uIHRob3NlIHdob20gaGUgaGFzIApsb3ZlZCBvbiBlYXJ0aCwgaXQgd2lsbCB1c3VhbGx5IGJlIHJhdGhlciBvZiB0aGUgCm5hdHVyZSBvZiBhIGdlbmVyYWwgYmVuZWRpY3Rpb24gdGhhbiBhIGZvcmNlIGNhcGFibGUgCm9mIGJyaW5naW5nIGFib3V0IGRlZmluaXRlIHJlc3VsdHMgaW4gYSBzcGVjaWZpYyBjYXNlLCAKc3VjaCBhcyB0aG9zZSB3aGljaCB3ZSBoYXZlIGJlZW4gY29uc2lkZXJpbmcuIAoKQWdhaW4sIG1hbnkgb2YgdGhlIGRlcGFydGVkIHdobyB3aXNoIHRvIGhlbHAgCnRob3NlIHdob20gdGhleSBsZWZ0IGJlaGluZCwgZmluZCB0aGVtc2VsdmVzIHF1aXRlIAp1bmFibGUgdG8gaW5mbHVlbmNlIHRoZW0gaW4gYW55IHdheSwgc2luY2UgdG8gd29yayAKZnJvbSBvbmUgcGxhbmUgdXBvbiBhbiBlbnRpdHkgb24gYW5vdGhlciByZXF1aXJlcyAKZWl0aGVyIGdyZWF0IHNlbnNpdGl2ZW5lc3Mgb24gdGhlIHBhcnQgb2YgdGhhdCBlbnRpdHksIApvciBhIGNlcnRhaW4gYW1vdW50IG9mIGtub3dsZWRnZSBhbmQgc2tpbGwgb24gdGhlIApwYXJ0IG9mIHRoZSBvcGVyYXRvci4gVGhlcmVmb3JlLCBhbHRob3VnaCBpbnN0YW5jZXMgCm9mIGFwcGFyaXRpb25zIHNob3J0bHkgYWZ0ZXIgZGVhdGggYXJlIGJ5IG5vIG1lYW5zIAp1bmNvbW1vbiwgaXQgaXMgcmFyZSB0byBmaW5kIG9uZSBpbiB3aGljaCB0aGUgZGUtIApwYXJ0ZWQgcGVyc29uIGhhcyByZWFsbHkgZG9uZSBhbnl0aGluZyB1c2VmdWwsIG9yIApzdWNjZWVkZWQgaW4gaW1wcmVzc2luZyB3aGF0IGhlIHdpc2hlZCB1cG9uIHRoZSAKZnJpZW5kIG9yIHJlbGF0aW9uIHdob20gaGUgdmlzaXRlZC4gVGhlcmUgYXJlIHN1Y2ggCgoKNDAgCgoKSU5WSVNJQkxFIEhFTFBFUlMgCgoKY2FzZXMsIG9mIGNvdXJzZSDigJQgYSBnb29kIG1hbnkgb2YgdGhlbSB3aGVuIHdlIApjb21lIHRvIHB1dCB0aGVtIGFsbCB0b2dldGhlcjsgYnV0IHRoZXkgYXJlIG5vdCAKbnVtZXJvdXMgY29tcGFyZWQgdG8gdGhlIGdyZWF0IG51bWJlciBvZiBnaG9zdHMgCndobyBoYXZlIHN1Y2NlZWRlZCBpbiBzaG93aW5nIHRoZW1zZWx2ZXMuIFNvIAp0aGF0IGJ1dCBsaXR0bGUgaGVscCBpcyB1c3VhbGx5IGdpdmVuIHRvIHRoZSBsaXZpbmcgYnkgCnRoZSBkZWFkIOKAlCBpbmRlZWQsIGFzIHdpbGwgcHJlc2VudGx5IGJlIGV4cGxhaW5lZCwgaXQgCmlzIGZhciBtb3JlIGNvbW1vbiBmb3IgdGhlbSB0byBiZSB0aGVtc2VsdmVzIGluIApuZWVkIG9mIGFzc2lzdGFuY2UgdGhhbiB0byBiZSBhYmxlIHRvIGFjY29yZCBpdCB0byAKb3RoZXJzLiAKCkF0IHByZXNlbnQsIHRoZXJlZm9yZSwgdGhlIG1haW4gYnVsayBvZiB0aGUuIHdvcmsgCndoaWNoIGhhcyB0byBiZSBkb25lIGFsb25nIHRoZXNlIGxpbmVzIGZhbGxzIHRvIHRoZSAKc2hhcmUgb2YgdGhvc2UgbGl2aW5nIHBlcnNvbnMgd2hvIGFyZSBhYmxlIHRvIGZ1bmMtIAp0aW9uIGNvbnNjaW91c2x5IG9uIHRoZSBhc3RyYWwgcGxhbmUuIAoKCkNIQVBURVIgViAKCgpUSEUgUkVBTElUWSBPRiBTVVBFUlBIWVNJQ0FMIApMSUZFIAoKSXQgc2VlbXMgZGlmZmljdWx0IGZvciB0aG9zZSB3aG8gYXJlIGFjY3VzdG9tZWQgCm9ubHkgdG8gdGhlIG9yZGluYXJ5IGFuZCBzb21ld2hhdCBtYXRlcmlhbGlzdGljIApsaW5lcyBvZiB0aG91Z2h0IG9mIHRoZSBwcmVzZW50IGNlbnR1cnksIHRvIGJlbGlldmUgaW4gCmFuZCByZWFsaXplIGZ1bGx5IGEgY29uZGl0aW9uIG9mIHBlcmZlY3QgY29uc2Npb3VzLSAKbmVzcyBhcGFydCBmcm9tIHRoZSBwaHlzaWNhbCBib2R5LiBFdmVyeSBDaHJpcy0gCnRpYW4sIGF0IGFueSByYXRlLCBpcyBib3VuZCBieSB0aGUgdmVyeSBmb3VuZGF0aW9ucyAKb2YgaGlzIGNyZWVkIHRvIGJlbGlldmUgdGhhdCBoZSBwb3NzZXNzZXMgYSBzb3VsOyBidXQgCmlmIHlvdSBzdWdnZXN0IHRvIGhpbSB0aGUgcG9zc2liaWxpdHkgdGhhdCB0aGF0IHNvdWwgCm1heSBiZSBhIHN1ZmZpY2llbnRseSByZWFsIHRoaW5nIHRvIGJlY29tZSB2aXNpYmxlIAp1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMgYXBhcnQgZnJvbSB0aGUgYm9keSBlaXRoZXIgCmR1cmluZyBsaWZlIG9yIGFmdGVyIGRlYXRoLCB0aGUgY2hhbmNlcyBhcmUgdGVuIHRvIApvbmUgdGhhdCBoZSB3aWxsIHNjb3JuZnVsbHkgdGVsbCB5b3UgdGhhdCBoZSBkb2VzIG5vdCAKYmVsaWV2ZSBpbiBnaG9zdHMsIGFuZCB0aGF0IHN1Y2ggYW4gaWRlYSBpcyBub3RoaW5nIApidXQgYW4gYW5hY2hyb25pc3RpYyBzdXJ2aXZhbCBvZiBhbiBleHBsb2RlZCBtZWRpLSAKYWV2YWwgc3VwZXJzdGl0aW9uLiAKCklmLCB0aGVyZWZvcmUsIHcgNyBlIGFyZSBhdCBhbGwgdG8gY29tcHJlaGVuZCB0aGUgCndvcmsgb2YgdGhlIGJhbmQgb2YgaW52aXNpYmxlIGhlbHBlcnMsIGFuZCBwZXJjaGFuY2UgCm91cnNlbHZlcyB0byBsZWFybiB0byBhc3Npc3QgaW4gaXQsIHdlIG11c3Qgc2hha2UgCm91cnNlbHZlcyBmcmVlIGZyb20gdGhlIHRyYW1tZWxzIG9mIGNvbnRlbXBvcmFyeSAKCgo0MiAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgp0aG91Z2h0IG9uIHRoZXNlIHN1YmplY3RzLCBhbmQgZW5kZWF2b3VyIHRvIGdyYXNwIAp0aGUgZ3JlYXQgdHJ1dGggKG5vdyBhIGRlbW9uc3RyYXRlZCBmYWN0IHRvIG1hbnkgCmFtb25nIHVzKSB0aGF0IHRoZSBwaHlzaWNhbCBib2R5IGlzIGluIHNpbXBsZSB0cnV0aCAKbm90aGluZyBidXQgYSB2ZWhpY2xlIG9yIHZlc3R1cmUgb2YgdGhlIHJlYWwgbWFuLiAKSXQgaXMgcHV0IG9mZiBwZXJtYW5lbnRseSBhdCBkZWF0aCwgYnV0IGl0IGlzIGFsc28gcHV0IApvZmYgdGVtcG9yYXJpbHkgZXZlcnkgbmlnaHQgd2hlbiB3ZSBnbyB0byBzbGVlcCDigJQgCmluZGVlZCB0aGUgcHJvY2VzcyBvZiBmYWxsaW5nIGFzbGVlcCBjb25zaXN0cyBpbiB0aGlzIAp2ZXJ5IGFjdGlvbiBvZiB0aGUgcmVhbCBtYW4gaW4gaGlzIGFzdHJhbCB2ZWhpY2xlIApzbGlwcGluZyBvdXQgb2YgdGhlIHBoeXNpY2FsIGJvZHkuIAoKQWdhaW4gSSByZXBlYXQsIHRoaXMgaXMgbm8gbWVyZSBoeXBvdGhlc2lzIG9yIGluLSAKZ2VuaW91cyBzdXBwb3NpdGlvbi4gVGhlcmUgYXJlIG1hbnkgYW1vbmcgdXMgCndobyBhcmUgYWJsZSB0byBwZXJmb3JtIChhbmQgZG8gcGVyZm9ybSBldmVyeSBkYXkgCm9mIHRoZWlyIGxpdmVzKSB0aGlzIGVsZW1lbnRhcnkgYWN0IG9mIG1hZ2ljIGluIGZ1bGwgCmNvbnNjaW91c25lc3Mg4oCUIHdobyBwYXNzIGZyb20gb25lIHBsYW5lIHRvIHRoZSAKb3RoZXIgYXQgd2lsbDsgYW5kIGlmIHRoYXQgaXMgY2xlYXJseSByZWFsaXplZCwgaXQgd2lsbCAKYmVjb21lIGFwcGFyZW50IGhvdyBncm90ZXNxdWVseSBhYnN1cmQgdG8gdGhlbSwgCm11c3QgYXBwZWFyIHRoZSBvcmRpbmFyeSB1bnJlYXNvbmluZyBhc3NlcnRpb24gdGhhdCAKc3VjaCBhIHRoaW5nIGlzIHV0dGVybHkgaW1wb3NzaWJsZS4gSXQgaXMgbGlrZSB0ZWxsaW5nIAphIG1hbiB0aGF0IGl0IGlzIGltcG9zc2libGUgZm9yIGhpbSB0byBmYWxsIGFzbGVlcCwgCmFuZCB0aGF0IGlmIGhlIHRoaW5rcyBoZSBoYXMgZXZlciBkb25lIHNvIGhlIGlzIAp1bmRlciBhIGhhbGx1Y2luYXRpb24uIAoKTm93IHRoZSBtYW4gd2hvIGhhcyBub3QgeWV0IGRldmVsb3BlZCB0aGUgbGluazsgCmJldHdlZW4gdGhlIGFzdHJhbCBhbmQgcGh5c2ljYWwgY29uc2Npb3VzbmVzcyBpcyAKdW5hYmxlIHRvIGxlYXZlIGhpcyBkZW5zZXIgYm9keSBhdCB3aWxsLCBvciB0byByZWNvbC0gCmxlY3QgbW9zdCBvZiB3aGF0IGhhcHBlbnMgdG8gaGltIHdoaWxlIGF3YXkgZnJvbSAKaXQ7IGJ1dCB0aGUgZmFjdCBuZXZlcnRoZWxlc3MgcmVtYWlucyB0aGF0IGhlIGxlYXZlcyAKaXQgZXZlcnkgdGltZSBoZSBzbGVlcHMsIGFuZCBtYXkgYmUgc2VlbiBieSBhbnkgCnRyYWluZWQgY2xhaXJ2b3lhbnQgZWl0aGVyIGhvdmVyaW5nIG92ZXIgaXQgb3IgCgoKVEhFIFJFQUxJVFkgT0YgU1VQRVJQSFlTSUNBTCBMSUZFIDQzIAoKd2FuZGVyaW5nIGFib3V0IGF0IGEgZ3JlYXRlciBvciBsZXNzIGRpc3RhbmNlIGZyb20gCml0LCBhcyB0aGUgY2FzZSBtYXkgYmUuIAoKVGhlIGVudGlyZWx5IHVuZGV2ZWxvcGVkIHBlcnNvbiB1c3VhbGx5IGZsb2F0cyAKY2xvc2UgYWJvdmUgaGlzIHBoeXNpY2FsIGJvZHksIHNjYXJjZWx5IGxlc3MgYXNsZWVwIAp0aGFuIGl0IGlzLCBjb21wYXJhdGl2ZWx5IHNoYXBlbGVzcyBhbmQgaW5jaG9hdGUsLCAKYW5kIGl0IGlzIGZvdW5kIHRoYXQgaGUgY2Fubm90IGJlIGRyYXduIGF3YXkgZnJvbSAKdGhlIGltbWVkaWF0ZSBuZWlnaGJvdXJob29kIG9mIHRoYXQgcGh5c2ljYWwgYm9keSAKd2l0aG91dCBjYXVzaW5nIHNlcmlvdXMgZGlzY29tZm9ydCB3aGljaCB3b3VsZCBpbiAKZmFjdCBhd2FrZW4gaXQuIEFzIHRoZSBtYW4gZXZvbHZlcywgaG93ZXZlciwgaGlzIAphc3RyYWwgYm9keSBncm93cyBtb3JlIGRlZmluaXRlIGFuZCBtb3JlIGNvbnNjaW91cywgCmFuZCBzbyBiZWNvbWVzIGEgZml0dGVyIHZlaGljbGUgZm9yIGhpbS4gSW4gdGhlIApjYXNlIG9mIHRoZSBtYWpvcml0eSBvZiBpbnRlbGxpZ2VudCBhbmQgY3VsdHVyZWQgCnBlb3BsZSB0aGUgZGVncmVlIG9mIGNvbnNjaW91c25lc3MgaXMgYWxyZWFkeSBjb24tIApzaWRlcmFibGUsIGFuZCBhIG1hbiB3aG8gaXMgYXQgYWxsIHNwaXJpdHVhbGx5IApkZXZlbG9wZWQgaXMgYXMgZnVsbH0gNyBoaW1zZWxmIGluIHRoYXQgdmVoaWNsZSBhcyBpbiAKdGhpcyBkZW5zZXIgYm9keS4gCgpCdXQgdGhvdWdoIGhlIG1heSBiZSBmdWxseSBjb25zY2lvdXMgb24gdGhlIAphc3RyYWwgcGxhbmUgZHVyaW5nIHNsZWVwLCBhbmQgYWJsZSB0byBtb3ZlIGFib3V0IG9uIAppdCBmcmVlbHkgaWYgaGUgd2lzaGVzIHRvIGRvIHNvLCBpdCBkb2VzIG5vdCB5ZXQgZm9sbG93IAp0aGF0IGhlIGlzIHJlYWR5IHRvIGpvaW4gdGhlIGJhbmQgb2YgaGVscGVycy4gTW9zdCAKcGVvcGxlIGF0IHRoaXMgc3RhZ2UgYXJlIHNvIHdyYXBwZWQgdXAgaW4gdGhlaXIgb3duIAp0cmFpbiBvZiB0aG91Z2h0IOKAlCB1c3VhbGx5IGEgY29udGludWF0aW9uIG9mIHNvbWUgCmxpbmUgdGFrZW4gdXAgaW4gd2FraW5nIGhvdXJzIOKAlCB0aGF0IHRoZXkgYXJlIGxpa2UgYSAKbWFuIGluIGEgYnJvd24gc3R1ZHksIHNvIG11Y2ggYWJzb3JiZWQgYXMgdG8gYmUgCnByYWN0aWNhbGx5IGVudGlyZWx5IGhlZWRsZXNzIG9mIGFsbCB0aGF0IGlzIGdvaW5nIG9uIAphYm91dCB0aGVtLiBBbmQgaW4gbWFueSB3YXlzIGl0IGlzIHdlbGwgdGhhdCB0aGlzIAppcyBzbywgZm9yIHRoZXJlIGlzIG11Y2ggdXBvbiB0aGUgYXN0cmFsIHBsYW5lIHdoaWNoIAptaWdodCBiZSB1bm5lcnZpbmcgYW5kIHRlcnJpZnlpbmcgdG8gb25lIHdobyBoYWQ6IAoKCi00NCAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgptb3QgdGhlIGNvdXJhZ2UgYm9ybiBvZiBmdWxsIGtub3dsZWRnZSBhcyB0byB0aGUgcmVhbCAKbmF0dXJlIG9mIGFsbCB0aGF0IGhlIHdvdWxkIHNlZS4gCgpTb21ldGltZXMgYSBtYW4gZ3JhZHVhbGx5IHJvdXNlcyBoaW1zZWxmIG91dCBvZiAKdGhpcyBjb25kaXRpb24g4oCUIHdha2VzIHVwIHRvIHRoZSBhc3RyYWwgd29ybGQgYXJvdW5kIApoaW0sIGFzIGl0IHdlcmU7IGJ1dCBtb3JlIG9mdGVuIGhlIHJlbWFpbnMgaW4gdGhhdCAKc3RhdGUgdW50aWwgc29tZW9uZSB3aG8gaXMgYWxyZWFkeSBhY3RpdmUgdGhlcmUgCnRha2VzIGhpbSBpbiBoYW5kIGFuZCB3YWtlbnMgaGltLiBUaGlzIGlzLCBob3ctIApldmVyLCBub3QgYSByZXNwb25zaWJpbGl0eSB0byBiZSBsaWdodGx5IHVuZGVydGFrZW4sIGZvciAKd2hpbGUgaXQgaXMgY29tcGFyYXRpdmVseSBlYXN5IHRodXMgdG8gd2FrZSBhIG1hbiAKdXAgb24gdGhlIGFzdHJhbCBwbGFuZSwgaXQgaXMgcHJhY3RpY2FsbHkgaW1wb3NzaWJsZSwgCmV4Y2VwdCBieSBhIG1vc3QgdW5kZXNpcmFibGUgZXhlcmNpc2Ugb2YgbWVzbWVyaWMgCmluZmx1ZW5jZSwgdG8gcHV0IGhpbSB0byBzbGVlcCBhZ2Fpbi4gU28gdGhhdCBiZS0gCmZvcmUgYSBtZW1iZXIgb2YgdGhlIGJhbmQgb2Ygd29ya2VycyB3aWxsIHRodXMgCmF3YWtlbiBhIGRyZWFtZXIsIGhlIG11c3QgZnVsbHkgc2F0aXNmeSBoaW1zZWxmIAp0aGF0IHRoZSBtYW7igJlzIGRpc3Bvc2l0aW9uIGlzIHN1Y2ggdGhhdCBoZSB3aWxsIG1ha2UgCmdvb2QgdXNlIG9mIHRoZSBhZGRpdGlvbmFsIHBvd2VycyB0aGF0IHdpbGwgdGhlbiBiZSAKcHV0IGludG8gaGlzIGhhbmRzLCBhbmQgYWxzbyB0aGF0IGhpcyBrbm93bGVkZ2UgYW5kIApoaXMgY291cmFnZSBhcmUgc3VmZmljaWVudCB0byBtYWtlIGl0IHJlYXNvbmFibHkgCi1jZXJ0YWluIHRoYXQgbm8gaGFybSB3aWxsIGNvbWUgdG8gaGltIGFzIGEgcmVzdWx0IApvZiB0aGUgYWN0aW9uLiAKClN1Y2ggYXdha2VuaW5nIHNvIHBlcmZvcm1lZCB3aWxsIHB1dCBhIG1hbiBpbiAKYSBwb3NpdGlvbiB0byBqb2luIGlmIGhlIHdpbGwgdGhlIGJhbmQgb2YgdGhvc2Ugd2hvIApoZWxwIG1hbmtpbmQuIEJ1dCBpdCBtdXN0IGJlIGNsZWFybHkgdW5kZXJzdG9vZCAKdGhhdCB0aGlzIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG9yIGV2ZW4gdXN1YWxseSBicmluZyAKd2l0aCBpdCB0aGUgcG93ZXIgb2YgcmVtZW1iZXJpbmcgaW4gdGhlIHdha2luZyAKY29uc2Npb3VzbmVzcyBhbnl0aGluZyB3aGljaC0gaGFzIGJlZW4gZG9uZS4gVGhhdCAKY2FwYWNpdHkgaGFzIHRvIGJlIGF0dGFpbmVkIGJ5IHRoZSBtYW4gZm9yIGhpbXNlbGYsIAphbmQgaW4gbW9zdCBjYXNlcyBpdCBkb2VzIG5vdCBjb21lIGZvciB5ZWFycyAKCgpUSEUgUkVBTElUWSBPRiBTVVBFUlBIWVNJQ0FMIExJRkUgNDUgCgphZnRlcndhcmRzIOKAlCBwZXJoYXBzIG5vdCBldmVuIGluIHRoZSBzYW1lIGxpZmUuIEJ1dCAKaGFwcGlseSB0aGlzIGxhY2sgb2YgbWVtb3J5IGluIHRoZSBib2R5IGluIG5vIHdheSAKaW1wZWRlcyB0aGUgd29yayBvdXQgb2YgdGhlIGJvZHk7IHNvIHRoYXQsIGV4Y2VwdCAKZm9yIHRoZSBzYXRpc2ZhY3Rpb24gdG8gYSBtYW4gb2Yga25vd2luZyBkdXJpbmcgaGlzIAp3YWtpbmcgaG91cnMgdXBvbiB3aGF0IHdvcmsgaGUgaGFzIGJlZW4gZW5nYWdlZCAKZHVyaW5nIGhpcyBzbGVlcCwgaXQgaXMgbm90IGEgbWF0dGVyIG9mIGltcG9ydGFuY2UuIApXaGF0IHJlYWxseSBtYXR0ZXJzIGlzIHRoYXQgdGhlIHdvcmsgc2hvdWxkIGJlIApkb25lIOKAlCBub3QgdGhhdCB3ZSBzaG91bGQgcmVtZW1iZXIgd2hvIGRpZCBpdC4gCgoKQ0hBUFRFUiBWSSAKCgpBIFRJTUVMWSBJTlRFUlZFTlRJT04gCgpWYXJpZWQgYXMgaXMgdGhpcyB3b3JrIG9uIHRoZSBhc3RyYWwgcGxhbmUsIGl0IGlzIGFsbCAKZGlyZWN0ZWQgdG8gb25lIGdyZWF0IGVuZCDigJQgdGhlIGZ1cnRoZXJhbmNlLCBpbiAKaG93ZXZlciBodW1ibGUgYSBkZWdyZWUsIG9mIHRoZSBwcm9jZXNzZXMgb2YgCmV2b2x1dGlvbi4gT2NjYXNpb25hbGx5IGl0IGlzIGNvbm5lY3RlZCB3aXRoIHRoZSAKZGV2ZWxvcG1lbnQgb2YgdGhlIGxvd2VyIGtpbmdkb21zLCB3aGljaCBpdCBpcyAKcG9zc2libGUgc2xpZ2h0bHkgdG8gYWNjZWxlcmF0ZSB1bmRlciBjZXJ0YWluIGNvbmRpLSAKdGlvbnMuIEEgZHV0eSB0b3dhcmRzIHRoZXNlIGxvd2VyIGtpbmdkb21zLCBlbGUtIAptZW50YWwgYXMgd2VsbCBhcyBhbmltYWwgYW5kIHZlZ2V0YWJsZSwgaXMgZGlzdGluY3RseSAKcmVjb2duaXplZCBieSBvdXIgQWRlcHQgbGVhZGVycywgc2luY2UgaXQgaXMgaW4gc29tZSAKY2FzZXMgb25seSB0aHJvdWdoIGNvbm5lY3Rpb24gd2l0aCBvciB1c2UgYnkgbWFuIAp0aGF0IHRoZWlyIHByb2dyZXNzIHRha2VzIHBsYWNlLiAKCkJ1dCBuYXR1cmFsbHkgYnkgZmFyIHRoZSBsYXJnZXN0IGFuZCBtb3N0IGltcG9yLSAKdGFudCBwYXJ0IG9mIHRoZSB3b3JrIGlzIGNvbm5lY3RlZCB3aXRmaSBodW1hbml0eSAKaW4gc29tZSB3YXkgb3Igb3RoZXIuIFRoZSBzZXJ2aWNlcyByZW5kZXJlZCBhcmUgCm9mIG1hbnkgYW5kIHZhcmlvdXMga2luZHMsIGJ1dCBjaGllZmx5IGNvbmNlcm5lZCAKd2l0aCBtYW7igJlzIHNwaXJpdHVhbCBkZXZlbG9wbWVudCwgc3VjaCBwaHlzaWNhbCAKaW50ZXJ2ZW50aW9ucyBhcyBhcmUgcmVjb3VudGVkIGluIHRoZSBlYXJsaWVyIHBhcnQgCm9mIHRoaXMgYm9vayBiZWluZyBleGNlZWRpbmdseSByYXJlLiBUaGV5IGRvLCAKaG93ZXZlciwgb2NjYXNpb25hbGx5IHRha2UgcGxhY2UsIGFuZCB0aG91Z2ggaXQgaXMgCm15IHdpc2ggdG8gZW1waGFzaXplIHJhdGhlciB0aGUgcG9zc2liaWxpdHkgb2YgCmV4dGVuZGluZyBtZW50YWwgYW5kIG1vcmFsIGhlbHAgdG8gb3VyIGZlbGxvdy0gCm1lbiwgaXQgd2lsbCBwZXJoYXBzIGJlIHdlbGwgdG8gZ2l2ZSB0d28gb3IgdGhyZWUgCgoKQSBUSU1FTFkgSU5URVJWRU5USU9OIAoKCjQ3IAoKCmluc3RhbmNlcyBpbiB3aGljaCBmcmllbmRzIHBlcnNvbmFsbHkga25vd24gdG8gbWUgCmhhdmUgcmVuZGVyZWQgcGh5c2ljYWwgYXNzaXN0YW5jZSB0byB0aG9zZSBpbiBzb3JlIApuZWVkIG9mIGl0LCBpbiBvcmRlciB0aGF0IGl0IG1heSBiZSBzZWVuIGhvdyB0aGVzZSAKZXhhbXBsZXMgZnJvbSB0aGUgZXhwZXJpZW5jZSBvZiB0aGUgaGVscGVycyBnZWFyIGluIAp3aXRoIHRoZSBhY2NvdW50cyBnaXZlbiBieSB0aG9zZSB3aG8gaGF2ZSByZWNlaXZlZCAKdGhlIHN1cGVybm9ybWFsIGFpZCDigJQgc3VjaCBzdG9yaWVzLCBJIG1lYW4sIGFzIHRob3NlIAp3aGljaCBhcmUgdG8gYmUgZm91bmQgaW4gdGhlIGxpdGVyYXR1cmUgb2Ygc28tY2FsbGVkIArigJxzdXBlcm5hdHVyYWwgb2NjdXJyZW5jZXMu4oCdIAoKSW4gdGhlIGNvdXJzZSBvZiB0aGUgcmViZWxsaW9uIGluIE1hdGFiZWxlbGFuZCAKb25lIG9mIG91ciBtZW1iZXJzIHdhcyBzZW50IHVwb24gYW4gZXJyYW5kIG9mIAptZXJjeSB3aGljaCBtYXkgc2VydmUgYXMgYW4gaWxsdXN0cmF0aW9uIG9mIHRoZSAKd2F5IGluIHdoaWNoIGhlbHAgdXBvbiB0aGlzIGxvd2VyIHBsYW5lIGhhcyBvY2NhLSAKc2lvbmFsbHkgYmVlbiBnaXZlbi4gSXQgc2VlbXMgdGhhdCBvbmUgbmlnaHQgYSAK4oCiY2VydGFpbiBmYXJtZXIgYW5kIGhpcyBmYW1pbHkgaW4gdGhhdCBjb3VudHJ5IHdlcmUgCnNsZWVwaW5nIHRyYW5xdWlsbHkgaW4gZmFuY2llZCBzZWN1cml0eSwgcXVpdGUgdW4tIAphd2FyZSB0aGF0IG9ubHkgYSBmZXcgbWlsZXMgYXdheSByZWxlbnRsZXNzIGhvcmRlcyAKb2Ygc2F2YWdlIGZvZXMgd2VyZSBseWluZyBpbiBhbWJ1c2ggbWF0dXJpbmcgCmZpZW5kaXNoIHBsb3RzIG9mIG11cmRlciBhbmQgcmFwaW5lLiBPdXIgbWVtLSAKYmVy4oCZcyBidXNpbmVzcyB3YXMgaW4gc29tZSB3YXkgb3Igb3RoZXIgdG8gYXJvdXNlIAp0aGUgc2xlZXBpbmcgZmFtaWx5IHRvIGEgc2Vuc2Ugb2YgdGhlIHRlcnJpYmxlIGRhbmdlciAKd2hpY2ggc28gdW5leHBlY3RlZGx5IG1lbmFjZWQgdGhlbSwgYW5kIHNoZSAKZm91bmQgdGhpcyBieSBubyBtZWFucyBhbiBlYXN5IG1hdHRlci4gCgpBbiBhdHRlbXB0IHRvIGltcHJlc3MgdGhlIGlkZWEgb2YgaW1taW5lbnQgcGVyaWwgCnVwb24gdGhlIGJyYWluIG9mIHRoZSBmYXJtZXIgZmFpbGVkIHV0dGVybHksIGFuZCBhcyAKdGhlIHVyZ2VuY3kgb2YgdGhlIGNhc2Ugc2VlbWVkIHRvIGRlbWFuZCBzdHJvbmcgCm1lYXN1cmVzLCBvdXIgZnJpZW5kIGRlY2lkZWQgdG8gbWF0ZXJpYWxpemUgaGVyc2VsZiAKc3VmZmljaWVudGx5IHRvIHNoYWtlIHRoZSBob3VzZXdpZmUgYnkgdGhlIHNob3VsZGVyIAphbmQgYWRqdXJlIGhlciB0byByaXNlIGFuZCBsb29rIGFib3V0IGhlci4gVGhlIAoKCjQ4IAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCm1vbWVudCBzaGUgc2F3IHRoYXQgc2hlIGhhZCBiZWVuIHN1Y2Nlc3NmdWwgaW4gCmF0dHJhY3RpbmcgYXR0ZW50aW9uIHNoZSB2YW5pc2hlZCwgYW5kIHRoZSBmYXJtZXLigJlzIAp3aWZlIGhhcyBuZXZlciBmcm9tIHRoYXQgZGF5IHRvIHRoaXMgYmVlbiBhYmxlIHRvKiAKZmluZCBvdXQgd2hpY2ggb2YgaGVyIG5laWdoYm91cnMgaXQgd2FzIHdobyByb3VzZWQgCmhlciBzbyBvcHBvcnR1bmVseSwgYW5kIHRodXMgc2F2ZWQgdGhlIGxpdmVzIG9mIHRoZSAKZW50aXJlIGZhbWlseSwgd2hvIGJ1dCBmb3IgdGhpcyBteXN0ZXJpb3VzIGludGVyLSAKdmVudGlvbiB3b3VsZCB1bmRvdWJ0ZWRseSBoYXZlIGJlZW4gbWFzc2FjcmVkIGluIAp0aGVpciBiZWRzIGhhbGYgYW4gaG91ciBsYXRlcjsgbm9yIGNhbiBzaGUgZXZlbiBub3cgCnVuZGVyc3RhbmQgaG93IHRoaXMgZnJpZW5kIGluIG5lZWQgY29udHJpdmVkIHRvIAptYWtlIGhlciB3YXkgaW4gd2hlbiBhbGwgdGhlIHdpbmRvd3MgYW5kIGRvb3JzIAp3ZXJlIGZvdW5kIHNvIHNlY3VyZWx5IGJhcnJlZC4gCgpCZWluZyB0aHVzIGFicnVwdGx5IGF3YWtlbmVkLCB0aGUgaG91c2V3aWZlJyAKd2FzIGhhbGYgaW5jbGluZWQgdG8gY29uc2lkZXIgdGhlIHdhcm5pbmcgYXMgYSBtZXJlIApkcmVhbTsgaG93ZXZlciwgc2hlIGFyb3NlIGFuZCBsb29rZWQgcm91bmQganVzdCAKdG8gc2VlIHRoYXQgYWxsIHdhcyByaWdodCwgYW5kIGZvcnR1bmF0ZSBpdCB3YXMgdGhhdCAKc2hlIGRpZCBzbywgZm9yIHRob3VnaCBzaGUgZm91bmQgbm90aGluZyBhbWlzcyBpbi0gCmRvb3JzIHNoZSBoYWQgbm8gc29vbmVyIHRocm93biBvcGVuIGEgc2h1dHRlciAKdGhhbiBzaGUgc2F3IHRoZSBza3kgcmVkIHdpdGggYSBkaXN0YW50IGNvbmZsYWctIApyYXRpb24uIFNoZSBhdCBvbmNlIHJvdXNlZCBoZXIgaHVzYmFuZCBhbmQgdGhlIApyZXN0IG9mIGhlciBmYW1pbHksIGFuZCBvd2luZyB0byB0aGlzIHRpbWVseSBub3RpY2UgCnRoZXkgd2VyZSBhYmxlIHRvIGVzY2FwZSB0byBhIHBsYWNlIG9mIGNvbmNlYWxtZW50IApuZWFyIGF0IGhhbmQganVzdCBiZWZvcmUgdGhlIGFycml2YWwgb2YgdGhlIGhvcmRlIG9mIApzYXZhZ2VzLCB3aG8gZGVzdHJveWVkIHRoZSBob3VzZSBhbmQgcmF2YWdlZCB0aGUgCmZpZWxkcyBpbmRlZWQsIGJ1dCB3ZXJlIGRpc2FwcG9pbnRlZCBvZiB0aGUgaHVtYW4gCnByZXkgd2hpY2ggdGhleSBoYWQgZXhwZWN0ZWQuIFRoZSBmZWVsaW5ncyBvZiB0aGUgCnJlc2N1ZXIgbWF5IGJlIGltYWdpbmVkIHdoZW4gc2hlIHJlYWQgaW4gdGhlIApuZXdzcGFwZXIgc29tZSB0aW1lIGFmdGVyd2FyZHMgYW4gYWNjb3VudCBvZiB0aGUgCnByb3ZpZGVudGlhbCBkZWxpdmVyYW5jZSBvZiB0aGlzIGZhbWlseS4gCgoKQ0hBUFRFUiBWSUkgCgoKVEhFIOKAnEFOR0VMIFNUT1JZ4oCdIAoKQW5vdGhlciBpbnN0YW5jZSBvZiBpbnRlcnZlbnRpb24gb24gdGhlIHBoeXNpY2FsIApwbGFuZSB3aGljaCBvY2N1cnJlZCBhIHNob3J0IHRpbWUgYWdvIG1ha2VzIGEgCmJlYXV0aWZ1bCBsaXR0bGUgc3RvcnksIHRob3VnaCB0aGlzIHRpbWUgb25seSBvbmUgbGlmZSAKd2FzIHNhdmVkLiBJdCBuZWVkcywgaG93ZXZlciwgYSBmZXcgd29yZHMgb2YgcHJlLSAKbGltaW5hcnkgZXhwbGFuYXRpb24uIEFtb25nIG91ciBiYW5kIG9mIGhlbHBlcnMgCmhlcmUgaW4gRXVyb3BlIGFyZSB0d28gd2hvIHdlcmUgYnJvdGhlcnMgbG9uZyBhZ28gCmluIGFuY2llbnQgRWd5cHQsIGFuZCBhcmUgc3RpbGwgd2FybWx5IGF0dGFjaGVkIHRvIApvbmUgYW5vdGhlci4gSW4gdGhpcyBwcmVzZW50IGluY2FybmF0aW9uIHRoZXJlIGlzIGEgCndpZGUgZGlmZmVyZW5jZSBpbiBhZ2UgYmV0d2VlbiB0aGVtLCBvbmUgYmVpbmcgCmFkdmFuY2VkIGluIG1pZGRsZSBsaWZlLCB3aGlsZSB0aGUgb3RoZXIgd2FzIGF0IHRoYXQgCnRpbWUgYSBtZXJlIGNoaWxkIGluIHRoZSBwaHlzaWNhbCBib2R5LCB0aG91Z2ggYW4gCmVnbyBvZiBjb25zaWRlcmFibGUgYWR2YW5jZW1lbnQgYW5kIHByb21pc2UuIApOYXR1cmFsbHkgaXQgZmFsbHMgdG8gdGhlIGxvdCBvZiB0aGUgZWxkZXIgdG8gdHJhaW4gYW5kIApndWlkZSB0aGUgeW91bmdlciBpbiB0aGUgb2NjdWx0IHdvcmsgdG8gd2hpY2ggdGhleSAKYXJlIHNvIGhlYXJ0aWx5IGRldm90ZWQsIGFuZCBhcyBib3RoIGFyZSBmdWxseSBjb24tIApzY2lvdXMgYW5kIGFjdGl2ZSBvbiB0aGUgYXN0cmFsIHBsYW5lIHRoZXkgc3BlbmQgCm1vc3Qgb2YgdGhlIHRpbWUgZHVyaW5nIHdoaWNoIHRoZWlyIGdyb3NzZXIgYm9kaWVzIAphcmUgYXNsZWVwIGluIGxhYm91cmluZyB0b2dldGhlciB1bmRlciB0aGUgZGlyZWN0aW9uIApvZiB0aGVpciBjb21tb24gTWFzdGVyLCBhbmQgZ2l2aW5nIHRvIGJvdGggbGl2aW5nIAphbmQgZGVhZCBzdWNoIGhlbHAgYXMgaXMgd2l0aGluIHRoZWlyIHBvd2VyLiAKCjQgCgoKNTAgCgoKSU5WSVNJQkxFIEhFTFBFUlMgCgoKSSB3aWxsIHF1b3RlIHRoZSBzdG9yeSBvZiB0aGUgcGFydGljdWxhciBpbmNpZGVudCAKd2hpY2ggSSB3aXNoIHRvIHJlbGF0ZSBmcm9tIGEgbGV0dGVyIHdyaXR0ZW4gYnkgdGhlIAplbGRlciBvZiB0aGUgdHdvIGhlbHBlcnMgaW1tZWRpYXRlbHkgYWZ0ZXIgaXRzIApvY2N1cnJlbmNlLCBhcyB0aGUgZGVzY3JpcHRpb24gdGhlcmUgZ2l2ZW4gaXMgbW9yZSAKdml2aWQgYW5kIHBpY3R1cmVzcXVlIHRoYW4gYW55IGFjY291bnQgaW4gdGhlIHRoaXJkIApwZXJzb24gY291bGQgcG9zc2libHkgYmUuIAoK4oCcV2Ugd2VyZSBnb2luZyBhYm91dCBxdWl0ZSBvdGhlciBidXNpbmVzcywgd2hlbiAKQ3lyaWwgc3VkZGVubHkgY3JpZWQ6IOKAmFdoYXTigJlzIHRoYXQ/4oCZIGZvciB3ZSBoZWFyZCAKYSB0ZXJyaWJsZSBzY3JlYW0gb2YgcGFpbiBvciBmcmlnaHQuIEluIGEgbW9tZW50IAp3ZSB3ZXJlIG9uIHRoZSBzcG90LCBhbmQgZm91bmQgdGhhdCBhIGJveSBvZiBhYm91dCAKZWxldmVuIG9yIHR3ZWx2ZSBoYWQgZmFsbGVuIG92ZXIgYSBjbGlmZiBvbiB0byBzb21lIApyb2NrcyBiZWxvdywgYW5kIHdhcyB2ZXJ5IGJhZGx5IGh1cnQuIEhlIGhhZCAKYnJva2VuIGEgbGVnIGFuZCBhbiBhcm0sIHBvb3IgZmVsbG93LCBidXQgd2hhdCB3YXMgCnN0aWxsIHdvcnNlIHdhcyBhIGRyZWFkZnVsIGN1dCBpbiB0aGUgdGhpZ2gsIGZyb20gCndoaWNoIGJsb29kIHdhcyBwb3VyaW5nIGluIGEgdG9ycmVudC4gQ3lyaWwgY3JpZWQ6IArigJhMZXQgdXMgaGVscCBoaW0gcXVpY2ssIG9yIGhl4oCZbGwgZGllIeKAmSAKCuKAnEluIGVtZXJnZW5jaWVzIG9mIHRoaXMga2luZCBvbmUgaGFzIHRvIHRoaW5rIApxdWlja2x5LiBUaGVyZSB3ZXJlIGNsZWFybHkgdHdvIHRoaW5ncyB0byBiZSBkb25lOyAKdGhhdCBibGVlZGluZyBtdXN0IGJlIHN0b3BwZWQsIGFuZCBwaHlzaWNhbCBoZWxwIAptdXN0IGJlIHByb2N1cmVkLiBJIHdhcyBvYmxpZ2VkIHRvIG1hdGVyaWFsaXplIAplaXRoZXIgQ3lyaWwgb3IgbXlzZWxmLCBmb3Igd2Ugd2FudGVkIHBoeXNpY2FsIGhhbmRzIAphdCBvbmNlIHRvIHRpZSBhIGJhbmRhZ2UsIGFuZCBiZXNpZGVzIGl0IHNlZW1lZCBiZXR0ZXIgCnRoYXQgdGhlIHBvb3IgYm95IHNob3VsZCBzZWUgc29tZW9uZSBzdGFuZGluZyBieSAKaGltIGluIGhpcyB0cm91YmxlLiBJIGZlbHQgdGhhdCB3aGlsZSB1bmRvdWJ0ZWRseSAKaGUgd291bGQgYmUgbW9yZSBhdCBob21lIHdpdGggQ3lyaWwgdGhhbiB3aXRoIG1lLCAKSSBzaG91bGQgcHJvYmFibHkgYmUgbW9yZSByZWFkaWx5IGFibGUgdG8gcHJvY3VyZSAKaGVscCB0aGFuIEN5cmlsIHdvdWxkLCBzbyB0aGUgZGl2aXNpb24gb2YgbGFib3VyIHdhcyAKb2J2aW91cy4gCgoKLSDigJQgSCAKClRIRSDigJxBTkdFTCBTVE9IJDUqIHwgXiAzMSAKCsK7YSpyIFwgCgrigJxUaGUgcGxhbiB3b3JrZWQgY2FwaXRhbGx5LiBJIHJyXl4hwqtpbGl6ZWRDeV4gCmluc3RhbnRseSAoaGUgZG9lcyBub3Qga25vdyB5ZXQgCmhpbXNlbGYpLCBhbmQgdG9sZCBoaW0gdG8gdGFrZSB0aGUgYm95J3NeXmZlYV5DZWYgCmFuZCB0aWUgaXQgcm91bmQgdGhlIHRoaWdoLCBhbmQgdHdpc3QgYSBzdGljayB0aHJvdWdoIAppdC4gJ1dvbuKAmXQgaXQgaHVydCBoaW0gdGVycmlibHk/IDUgc2FpZCBDeXJpbDsgYnV0IGhlIApkaWQgaXQsIGFuZCB0aGUgYmxvb2Qgc3RvcHBlZCBmbG93aW5nLiBUaGUgaW5qdXJlZCAKYm95IHNlZW1lZCBoYWxmIHVuY29uc2Npb3VzLCBhbmQgY291bGQgc2NhcmNlbHkgCnNwZWFrLCBidXQgaGUgbG9va2VkIHVwIGF0IHRoZSBzaGluaW5nIGxpdHRsZSBmb3JtIApiZW5kaW5nIHNvIGFueGlvdXNseSBvdmVyIGhpbSwgYW5kIGFza2VkOiAnQmUgeW91IAphbiBBbmdlbCwgbWFzdGVyP+KAmSBDeXJpbCBzbWlsZWQgc28gcHJldHRpbHksIGFuZCAKcmVwbGllZDogJ05vLCBJ4oCZbSBvbmx5IGEgYm95LCBidXQgSeKAmXZlIGNvbWUgdG8gaGVscCAKeW914oCZOyBhbmQgdGhlbiBJIGxlZnQgaGltIHRvIGNvbWZvcnQgdGhlIHN1ZmZlcmVyIAp3aGlsZSAxIHJ1c2hlZCBvZmYgZm9yIHRoZSBib3nigJlzIG1vdGhlciwgd2hvIGxpdmVkIAphYm91dCBhIG1pbGUgYXdheS4gCgrigJxUaGUgdHJvdWJsZSBJIGhhZCB0byBmb3JjZSBpbnRvIHRoYXQgd29tYW7igJlzIApoZWFkIHRoZSBjb252aWN0aW9uIHRoYXQgc29tZXRoaW5nIHdhcyB3cm9uZywgYW5kIAp0aGF0IHNoZSBtdXN0IGdvIGFuZCBzZWUgYWJvdXQgaXQsIHlvdSB3b3VsZCBuZXZlciAKYmVsaWV2ZTsgYnV0IGF0IGxhc3Qgc2hlIHRocmV3IGRvd24gdGhlIHBhbiBzaGUgd2FzIApjbGVhbmluZywgYW5kIHNhaWQgYWxvdWQ6ICdXZWxsLCBJIGRvbuKAmXQga25vdyB3aGF04oCZcyAKY29tZSBvdmVyIG1lLCBidXQgSSBtdXN0IGdvIGFuZCBmaW5kIHRoZSBib3kuIApXaGVuIHNoZSBvbmNlIHN0YXJ0ZWQgSSB3YXMgYWJsZSB0byBndWlkZSBoZXIgd2l0aC0gCm91dCBtdWNoIGRpZmZpY3VsdHksIHRob3VnaCBhbGwgdGhlIHRpbWUgSSB3YXMgaG9sZC0gCmluZyBDeXJpbCB0b2dldGhlciBieSB3aWxsLXBvd2VyLCBsZXN0IHRoZSBwb29yIApjaGlsZOKAmXMgQW5nZWwgc2hvdWxkIHN1ZGRlbmx5IHZhbmlzaCBmcm9tIGJlZm9yZScgCmhpcyBleWVzLiAKCuKAnFlvdSBzZWUsIHdoZW4geW91IG1hdGVyaWFsaXplIGEgZm9ybSB5b3UgYXJlIApjaGFuZ2luZyBtYXR0ZXIgZnJvbSBpdHMgbmF0dXJhbCBzdGF0ZSBpbnRvIGFub3RoZXIgCuKAlCB0ZW1wb3JhcmlseSBvcHBvc2luZyB0aGUgY29zbWljIHdpbGwsIGFzIGl0IHdlcmU7IAoKCjUyIAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCmFuZCBpZiB5b3UgdGFrZSB5b3VyIG1pbmQgb2ZmIGl0IGZvciBvbmUgaGFsZi1zZWNvbmQsIApiYWNrIGl0IGZsaWVzIGludG8gaXRzIG9yaWdpbmFsIGNvbmRpdGlvbiBsaWtlIGEgZmxhc2ggb2YgCmxpZ2h0bmluZy4gU28gSSBjb3VsZCBub3QgZ2l2ZSBtb3JlIHRoYW4gaGFsZiBteSAKYXR0ZW50aW9uIHRvIHRoYXQgd29tYW4sIGJ1dCBzdGlsbCBJIGRyYWdnZWQgaGVyIAphbG9uZyBzb21laG93LCBhbmQgYXMgc29vbiBhcyBzaGUgY2FtZSByb3VuZCB0aGUgCmNvcm5lciBvZiB0aGUgY2xpZmYgSSBsZXQgQ3lyaWwgZGlzYXBwZWFyOyBidXQgc2hlIApoYWQgc2VlbiBoaW0sIGFuZCBub3cgdGhhdCB2aWxsYWdlIGhhcyBvbmUgb2YgCnRoZSBiZXN0LWF0dGVzdGVkIHN0b3JpZXMgb2YgYW5nZWxpYyBpbnRlcnZlbnRpb24gb24gCnJlY29yZCEgCgrigJxUaGUgYWNjaWRlbnQgaGFwcGVuZWQgaW4gdGhlIGVhcmx5IG1vcm5pbmcsIAphbmQgdGhlIHNhbWUgZXZlbmluZyBJIGxvb2tlZCBpbiAoYXN0cmFsbHkpIHVwb24gCnRoZSBmYW1pbHkgdG8gc2VlIGhvdyBtYXR0ZXJzIHdlcmUgZ29pbmcgb24uIFRoZSAKcG9vciBib3kncyBsZWcgYW5kIGFybSBoYWQgYmVlbiBzZXQsIGFuZCB0aGUgZ3JlYXQgCmN1dCBiYW5kYWdlZCwgYW5kIGhlIGxheSBpbiBiZWQgbG9va2luZyB2ZXJ5IHBhbGUgCmFuZCB3ZWFrLCBidXQgZXZpZGVudGx5IGdvaW5nIHRvIHJlY292ZXIgaW4gdGltZS4gClRoZSBtb3RoZXIgaGFkIGEgY291cGxlIG9mIG5laWdoYm91cnMgaW4sIGFuZCB3YXMgCnRlbGxpbmcgdGhlbSB0aGUgc3Rvcnk7IGFuZCBhIGN1cmlvdXMgdGFsZSBpdCBzb3VuZGVkIAp0byBvbmUgd2hvIGtuZXcgdGhlIHJlYWwgZmFjdHMuIAoK4oCcU2hlIGV4cGxhaW5lZCwgaW4gdmVyeSBtYW55IHdvcmRzLCBob3cgc2hlIApjb3VsZG7igJl0IHRlbGwgd2hhdCBpdCB3YXMsIGJ1dCBzb21ldGhpbmcgY2FtZSBvdmVyIApoZXIgYWxsIGluIGEgbWludXRlIGxpa2UsIG1ha2luZyBoZXIgZmVlbCBzb21ldGhpbmcgCmhhZCBoYXBwZW5lZCB0byB0aGUgYm95LCBhbmQgc2hlIG11c3QgZ28gb3V0IGFuZCAKc2VlIGFmdGVyIGhpbTsgaG93IGF0IGZpcnN0IHNoZSB0aG91Z2h0IGl0IHdhcyBub24tIApzZW5zZSwgYW5kIHRyaWVkIHRvIHRocm93IG9mZiB0aGUgZmVlbGluZywgZSBidXQgaXQgCndhcm7igJl0IG5vIHVzZSDigJQgc2hlIGp1c3QgaGFkIHRvIGdvLuKAmSBTaGUgdG9sZCBob3cgCnNoZSBkaWRuJ3Qga25vdyB3aGF0IG1hZGUgaGVyIGdvIHJvdW5kIGJ5IHRoYXQgCmNsaWZmIG1vcmUgdGhhbiBhbnkgb3RoZXIgd2F5LCBidXQgaXQganVzdCBoYXBwZW5lZCAKc28sIGFuZCBhcyBzaGUgdHVybmVkIHJvdW5kIHRoZSBjb3JuZXIgdGhlcmUgc2hlIAoKClRIRSDigJxBTkdFTCBTVE9SWeKAnSAKCgo1MyAKCgpzYXcgaGltIGx5aW5nIHByb3BwZWQgdXAgYWdhaW5zdCBhIHJvY2ssIGFuZCAKa25lZWxpbmcgYmVzaWRlIGhpbSB3YXMgdGhlIOKAmGJlYXV0aWZ1bGxlc3QgY2hpbGQgZXZlciAKc2hlIHNhdywgZHJlc3NlZCBhbGwgaW4gd2hpdGUgYW5kIHNoaW5pbmcsIHdpdGggcm9zeSAKY2hlZWtzIGFuZCBsb3ZlbHkgYnJvd24gZXllc+KAmTsgYW5kIGhvdyBoZSBzbWlsZWQgCmF0IGhlciDigJhzbyBoZWF2ZW5seSBsaWtlLOKAmSBhbmQgdGhlbiBhbGwgaW4gYSBtb21lbnQgCmhlIHdhcyBub3QgdGhlcmUsIGFuZCBhdCBmaXJzdCBzaGUgd2FzIHNvIHN0YXJ0bGVkIApzaGUgZGlkbuKAmXQga25vdyB3aGF0IHRvIHRoaW5rOyBhbmQgdGhlbiBhbGwgYXQgb25jZSAKc2hlIGZlbHQgd2hhdCBpdCB3YXMsIGFuZCBmZWxsIG9uIGhlciBrbmVlcyBhbmQgCnRoYW5rZWQgR29kIGZvciBzZW5kaW5nIG9uZSBvZiBIaXMgQW5nZWxzIHRvIGhlbHAgCmhlciBwb29yIGJveS4gCgpUaGVuIHNoZSB0b2xkIGhvdyB3aGVuIHNoZSBsaWZ0ZWQgaGltIHRvIGNhcnJ5IApoaW0gaG9tZSBzaGUgd2FudGVkIHRvIHRha2Ugb2ZmIHRoZSBoYW5ka2VyY2hpZWYgCnRoYXQgd2FzIGN1dHRpbmcgaW50byBoaXMgcG9vciBsZWcgc28sIGJ1dCBoZSB3b3VsZCAKbm90IGxldCBoZXIsIGJlY2F1c2UgaGUgc2FpZCB0aGUgQW5nZWwgaGFkIHRpZWQgaXQgCmFuZCBzYWlkIGhlIHdhcyBub3QgdG8gdG91Y2ggaXQ7IGFuZCBob3cgd2hlbiBzaGUgCnRvbGQgdGhlIGRvY3RvciB0aGlzIGFmdGVyd2FyZHMgaGUgZXhwbGFpbmVkIHRvIGhlciAKdGhhdCBpZiBzaGUgaGFkIHVuZmFzdGVuZWQgaXQgdGhlIGJveSB3b3VsZCBjZXJ0YWlubHkgCmhhdmUgZGllZC4gCgrigJxUaGVuIHNoZSByZXBlYXRlZCB0aGUgYm954oCZcyBwYXJ0IG9mIHRoZSB0YWxlLSAKaG93IHRoZSBtb21lbnQgYWZ0ZXIgaGUgZmVsbCB0aGlzIGxvdmVseSBsaXR0bGUgQW5nZWwgCmNhbWUgdG8gaGltIChoZSBrbmV3IGl0IHdhcyBhbiBBbmdlbCBiZWNhdXNlIGhlIAprbmV3IHRoZXJlIGhhZCBiZWVuIG5vYm9keSBpbiBzaWdodCBmb3IgaGFsZiBhIAptaWxlIHJvdW5kIHdoZW4gaGUgd2FzIGF0IHRoZSB0b3Agb2YgdGhlIGNsaWZmIGp1c3QgCmJlZm9yZSBvbmx5IGhlIGNvdWxkIG5vdCB1bmRlcnN0YW5kIHdoeSBpdCBoYWRu4oCZdCAKYW55IHdpbmdzLCBhbmQgd2h5IGl0IHNhaWQgaXQgd2FzIG9ubHkgYSBib3kpIOKAlCBob3cgCml0IGxpZnRlZCBoaW0gYWdhaW5zdCB0aGUgcm9jayBhbmQgdGllZCB1cCBoaXMgbGVnLCAKYW5kIHRoZW4gYmVnYW4gdG8gdGFsayB0byBoaW0gYW5kIHRlbGwgaGltIGhlIG5lZWQgXiAKbm90IGJlIGZyaWdodGVuZWQsIGJlY2F1c2Ugc29tZWJvZHkgd2FzIGdvbmUgdG8gCgoKNTQgCgoKSU5WSVNJQkxFIEhFTFBFUlMgCgoKZmV0Y2ggbW90aGVyLCBhbmQgc2hlIHdvdWxkIGJlIHRoZXJlIGRpcmVjdGx5OyBob3cgCml0IGtpc3NlZCwgaGltIGFuZCB0cmllZCB0byBtYWtlIGhpbSBjb21mb3J0YWJsZSwgCmFuZCBob3cgaXRzIHNvZnQsIHdhcm0sIGxpdHRsZSBoYW5kIGhlbGQgaGlzIGFsbCB0aGUgCnRpbWUsIHdoaWxlIGl0IHRvbGQgaGltIHN0cmFuZ2UsIGJlYXV0aWZ1bCBzdG9yaWVzIAp3aGljaCBoZSBjb3VsZCBub3QgY2xlYXJseSByZW1lbWJlciwgYnV0IGhlIGtuZXcgCnRoZXkgd2VyZSB2ZXJ5IGdvb2QsIGJlY2F1c2UgaGUgaGFkIGFsbW9zdCBmb3ItIApnb3R0ZW4gaGUgd2FzIGh1cnQgdW50aWwgaGUgc2F3IG1vdGhlciBjb21pbmc7IAphbmQgaG93IHRoZW4gaXQgYXNzdXJlZCBoaW0gaGUgd291bGQgc29vbiBiZSB3ZWxsIAphZ2FpbiwgYW5kIHNtaWxlZCBhbmQgc3F1ZWV6ZWQgaGlzIGhhbmQsIGFuZCB0aGVuIApzb21laG93IGl0IHdhcyBnb25lLiAKCuKAnFNpbmNlIHRoZW4gdGhlcmUgaGFzIGJlZW4gcXVpdGUgYSByZWxpZ2lvdXMgCnJldml2YWwgaW4gdGhhdCB2aWxsYWdlISBUaGVpciBtaW5pc3RlciBoYXMgdG9sZCB0aGVtIAp0aGF0IHNvIHNpZ25hbCBhbiBpbnRlcnBvc2l0aW9uIG9mIGRpdmluZSBQcm92aWRlbmNlIAptdXN0IGhhdmUgYmVlbiBtZWFudCBhcyBhIHNpZ24gdG8gdGhlbSwgdG8gcmVidWtlIApzY29mZmVycyBhbmQgdG8gcHJvdmUgdGhlIHRydXRoIG9mIGhvbHkgU2NyaXB0dXJlIGFuZCAKb2YgdGhlIENocmlzdGlhbiByZWxpZ2lvbiDigJQgYW5kIG5vYm9keSBzZWVtcyB0byBzZWUgCnRoZSBjb2xvc3NhbCBjb25jZWl0IGludm9sdmVkIGluIHN1Y2ggYW4gYXN0b25pc2hpbmcgCnByb3Bvc2l0aW9uLiAKCuKAnEJ1dCB0aGUgZWZmZWN0IG9uIHRoZSBib3kgaGFzIGJlZW4gdW5kb3VidGVkbHkgCmdvb2QsIG1vcmFsbHkgYXMgd2VsbCBhcyBwaHlzaWNhbGx5OyBieSBhbGwgYWNjb3VudHMgCmhlIHdhcyBhIGNhcmVsZXNzIGVub3VnaCB5b3VuZyBzY2FtcCBiZWZvcmUsIGJ1dCAKbm93IGhlIGZlZWxzIOKAmGhpcyBBbmdlbOKAmSBtYXkgYmUgbmVhciBoaW0gYXQgYW55IAp0aW1lLCBhbmQgaGUgd2lsbCBuZXZlciBkbyBvciBzYXkgYW55dGhpbmcgcm91Z2ggb3IgCmNvYXJzZSBvciBhbmdyeSwgbGVzdCBpdCBzaG91bGQgc2VlIG9yIGhlYXIuIFRoZSAKb25lIGdyZWF0IGRlc2lyZSBvZiBoaXMgbGlmZSBpcyB0aGF0IHNvbWUgZGF5IGhlIG1heSAKc2VlIGl0IGFnYWluLCBhbmQgaGUga25vd3MgdGhhdCB3aGVuIGhlIGRpZXMgaXRzIApsb3ZlbHkgZmFjZSB3aWxsIGJlIHRoZSBmaXJzdCB0byBncmVldCBoaW0gb24gdGhlIApvdGhlciBzaWRlLuKAnSAKCgpUSEUg4oCcQU5HRUwgU1RPUlnigJ0gCgoKNTUgCgoKQSBiZWF1dGlmdWwgYW5kIHBhdGhldGljIGxpdHRsZSBzdG9yeSwgdHJ1bHkuIFRoZSAKbW9yYWwgZHJhd24gZnJvbSB0aGUgb2NjdXJyZW5jZSBieSB0aGUgdmlsbGFnZSAKYW5kIGl0cyBtaW5pc3RlciBpcyBwZXJoYXBzIHNvbWV3aGF0IG9mIGEgbm9uIApzZXF1aXR1cjsgeWV0IHRoZSB0ZXN0aW1vbnkgdG8gdGhlIGV4aXN0ZW5jZSBvZiBhdCAKbGVhc3Qgc29tZXRoaW5nIGJleW9uZCB0aGlzIG1hdGVyaWFsIHBsYW5lIG11c3QgCnN1cmVseSBkbyB0aGUgcGVvcGxlIG1vcmUgZ29vZCB0aGFuIGhhcm0sIGFuZCAKYWZ0ZXIgYWxsIHRoZSBtb3RoZXLigJlzIGNvbmNsdXNpb24gZnJvbSB3aGF0IHNoZSBzYXcgCndhcyBwZXJmZWN0bHkgY29ycmVjdCwgdGhvdWdoIG1vcmUgYWNjdXJhdGUga25vd2wtIAplZGdlIHdvdWxkIHByb2JhYmx5IGhhdmUgbGVkIGhlciB0byBleHByZXNzIGl0IGEgCmxpdHRsZSBkaWZmZXJlbnRseS4gCgpBbiBpbnRlcmVzdGluZyBmYWN0IGFmdGVyd2FyZHMgZGlzY292ZXJlZCBieSB0aGUgCmludmVzdGlnYXRpb25zIG9mIHRoZSB3cml0ZXIgb2YgdGhlIGxldHRlciB0aHJvd3MgYSAKY3VyaW91cyBzaWRlbGlnaHQgdXBvbiB0aGUgcmVhc29ucyB1bmRlcmx5aW5nIHN1Y2ggCmluY2lkZW50cy4gSXQgd2FzIGZvdW5kIHRoYXQgdGhlIHR3byBib3lzIGhhZCBtZXQgCmJlZm9yZSwgYW5kIHRoYXQgc29tZSB0aG91c2FuZHMgb2YgeWVhcnMgYWdvIGhlIAp3aG8gZmVsbCBmcm9tIHRoZSBjbGlmZiBoYWQgYmVlbiB0aGUgc2xhdmUgb2YgdGhlIApvdGhlciwgYW5kIGhhZCBvbmNlIHNhdmVkIGhpcyB5b3VuZyBtYXN0ZXLigJlzIGxpZmUgYXQgCnRoZSByaXNrIG9mIGhpcyBvd24sIGFuZCBoYWQgYmVlbiBsaWJlcmF0ZWQgaW4gY29uLSAKc2VxdWVuY2U7IGFuZCBub3csIGxvbmcgYWZ0ZXJ3YXJkcywgdGhlIG1hc3RlciBub3QgCm9ubHkgcmVwYXlzIHRoZSBkZWJ0IGluIGtpbmQsIGJ1dCBhbHNvIGdpdmVzIGhpcyAKZm9ybWVyIHNsYXZlIGEgaGlnaCBpZGVhbCBhbmQgYW4gaW5kdWNlbWVudCB0byAKbW9yYWxpdHkgb2YgbGlmZSB3aGljaCB3aWxsIHByb2JhYmx5IGNoYW5nZSB0aGUgCndob2xlIGNvdXJzZSBvZiBoaXMgZnV0dXJlIGV2b2x1dGlvbi4gU28gdHJ1ZSBpcyBpdCAKdGhhdCBubyBnb29kIGRlZWQgZXZlciBnb2VzIHVucmV3YXJkZWQgYnkga2FybWEqIApob3dldmVyIHRhcmR5IGl0IG1heSBzZWVtIGluIGl0cyBhY3Rpb24g4oCUIHRoYXQgCgpUaG91Z2ggdGhlIG1pbGxzIG9mIEdvZCBncmluZCBzbG93bHksIAoKWWV0IHRoZXkgZ3JpbmQgZXhjZWVkaW5nIHNtYWxsOyAKClRob3VnaCB3aXRoIHBhdGllbmNlIHN0YW5kcyBIZSB3YWl0aW5nLCAKCldpdGggZXhhY3RuZXNzIGdyaW5kcyBIZSBhbGwuIAoKCkNIQVBURVIgVklJSSAKCgpUSEUgU1RPUlkgT0YgQSBGSVJFIAoKQW5vdGhlciBwaWVjZSBvZiB3b3JrIGRvbmUgYnkgdGhlIHNhbWUgYm95IApDeXJpbCBmdXJuaXNoZXMgYW4gYWxtb3N0IGV4YWN0IHBhcmFsbGVsIHRvIHNvbWUgb2YgCnRoZSBzdG9yaWVzIGZyb20gdGhlIGJvb2tzIHdoaWNoIEkgaGF2ZSBnaXZlbiBpbiAKZWFybGllciBwYWdlcy4gSGUgYW5kIGhpcyBvbGRlciBmcmllbmQsIGl0IHNlZW1zLCAKd2VyZSBwYXNzaW5nIGFsb25nIGluIHRoZSBwcm9zZWN1dGlvbiBvZiB0aGVpciB1c3VhbCAKd29yayBvbmUgbmlnaHQsIHdoZW4gdGhleSBub3RpY2VkIHRoZSBmaWVyY2UgZ2xhcmUgCm9mIGEgYmlnIGZpcmUgYmVsb3cgdGhlbSwgYW5kIHByb21wdGx5IGRpdmVkIGRvd24gCnRvIHNlZSB3aGV0aGVyIHRoZXkgY291bGQgYmUgb2YgYW55IHVzZS4gCgpJdCB3YXMgYSBncmVhdCBob3RlbCB3aGljaCB3YXMgaW4gZmxhbWVzLCBhIGh1Z2UgCmNhcmF2YW5zZXJhaSBvbiB0aGUgZWRnZSBvZiBhIGdyZWF0IGxha2UuIFRoZSAKaG91c2UsIG1hbnkgc3RvcmllcyBpbiBoZWlnaHQsIGZvcm1lZCB0aHJlZSBzaWRlcyAKb2YgYSBzcXVhcmUgcm91bmQgYSBzb3J0IG9mIGdhcmRlbiwgcGxhbnRlZCB3aXRoIAp0cmVlcyBhbmQgZmxvd2Vycywgd2hpbGUgdGhlIGxha2UgZm9ybWVkIHRoZSBmb3VydGggCnNpZGUuIFRoZSB0d28gd2luZ3MgcmFuIGRvd24gdG8gdGhlIGxha2UsIHRoZSAKYmlnIGJheSB3aW5kb3dzIHdoaWNoIHRlcm1pbmF0ZWQgdGhlbSBhbG1vc3QgCnByb2plY3Rpbmcgb3ZlciB0aGUgd2F0ZXIsIHNvIGFzIHRvIGxlYXZlIG9ubHkgcXVpdGUgCmEgbmFycm93IHBhc3NhZ2V3YXkgdW5kZXIgdGhlbSBhdCB0aGUgdHdvIHNpZGVzLiAKClRoZSBmcm9udCBhbmQgd2luZ3Mgd2VyZSBidWlsdCByb3VuZCBpbnNpZGUgCndlbGxzLCB3aGljaCBjb250YWluZWQgYWxzbyB0aGUgbGF0dGljZS13b3JrIHNoYWZ0cyAKb2YgdGhlIGxpZnRzLCBzbyB0aGF0IHdoZW4gb25jZSB0aGUgZmlyZSBicm9rZSBvdXQsIAoKClRIRSBTVE9SWSBPRiBBIEZJUkUgCgoKNTcgCgoKaXQgc3ByZWFkIHdpdGggYWxtb3N0IGluY3JlZGlibGUgcmFwaWRpdHksIGFuZCBiZS0gCmZvcmUgb3VyIGZyaWVuZHMgc2F3IGl0IG9uIHRoZWlyIGFzdHJhbCBqb3VybmV5IGFsbCB0aGUgCm1pZGRsZSBmbG9vcnMgaW4gZWFjaCBvZiB0aGUgdGhyZWUgZ3JlYXQgYmxvY2tzIHdlcmUgCmluIGZsYW1lcy4gRm9ydHVuYXRlbHkgdGhlIGlubWF0ZXMg4oCUIGV4Y2VwdCBvbmUgCmxpdHRsZSBib3kg4oCUIGhhZCBhbHJlYWR5IGJlZW4gcmVzY3VlZCwgdGhvdWdoIHNvbWUgCm9mIHRoZW0gaGFkIHN1c3RhaW5lZCBzZXJpb3VzIGJ1cm5zIGFuZCBvdGhlciAKaW5qdXJpZXMuIAoKVGhpcyBsaXR0bGUgZmVsbG93IGhhZCBiZWVuIGZvcmdvdHRlbiBpbiBvbmUgb2YgdGhlIAp1cHBlciByb29tcyBvZiB0aGUgbGVmdCB3aW5nLCBmb3IgaGlzIHBhcmVudHMgd2VyZSAKb3V0IGF0IGEgYmFsbCwgYW5kIGtuZXcgbm90aGluZyBvZiB0aGUgZmlyZSwgd2hpbGUgCm5hdHVyYWxseSBlbm91Z2ggbm8gb25lIGVsc2UgdGhvdWdodCBvZiB0aGUgbGFkIHRpbGwgCml0IHdhcyBmYXIgdG9vIGxhdGUuIFRoZSBmaXJlIGhhZCBnYWluZWQgc3VjaCBhIGhvbGQgCm9uIHRoZSBtaWRkbGUgZmxvb3JzIG9mIHRoYXQgd2luZyB0aGF0IG5vdGhpbmcgY291bGQgCmhhdmUgYmVlbiBkb25lLCBldmVuIGlmIGFueW9uZSBoYWQgcmVtZW1iZXJlZCAKaGltLCBhcyBoaXMgcm9vbSBmYWNlZCBvbiB0byB0aGUgaW5uZXIgZ2FyZGVuIHdoaWNoIApoYXMgYmVlbiBtZW50aW9uZWQsIHNvIHRoYXQgaGUgd2FzIGNvbXBsZXRlbHkgY3V0IApvZmYgZnJvbSBhbGwgb3V0c2lkZSBoZWxwLiBCZXNpZGVzLCBoZSB3YXMgbm90IGV2ZW4gCmF3YXJlIG9mIGhpcyBkYW5nZXIsIGZvciB0aGUgZGVuc2UsIHN1ZmZvY2F0aW5nIHNtb2tlIApoYWQgc28gZ3JhZHVhbGx5IGZpbGxlZCB0aGUgcm9vbSB0aGF0IGhpcyBzbGVlcCBoYWQgCmdyb3duIGRlZXBlciBhbmQgZGVlcGVyLCB0aWxsIGhlIHdhcyBhbGwgYnV0IApzdHVwZWZpZWQuIAoKSW4gdGhpcyBzdGF0ZSBoZSB3YXMgZGlzY292ZXJlZCBieSBDeXJpbCwgd2hvIApzZWVtcyB0byBiZSBzcGVjaWFsbHkgYXR0cmFjdGVkIHRvd2FyZHMgY2hpbGRyZW4gaW4gCm5lZWQgb3IgZGFuZ2VyLiBIZSBmaXJzdCB0cmllZCB0byBtYWtlIHNvbWUgb2YgdGhlIApwZW9wbGUgcmVtZW1iZXIgdGhlIGJveSwgYnV0IGluIHZhaW47IGFuZCBpbiBhbnkgCmNhc2UgaXQgc2VlbWVkIHNjYXJjZWx5IHBvc3NpYmxlIHRoYXQgdGhleSBjb3VsZCBoYXZlIApoZWxwZWQgaGltLCBzbyB0aGF0IGl0IHdhcyBzb29uIGV2aWRlbnQgdGhhdCB0aGlzIAp3YXMgbWVyZWx5IGEgd2FzdGUgb2YgdGltZS4gVGhlIG9sZGVyIGhlbHBlciB0aGVuIAoKCjU4IAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCm1hdGVyaWFsaXplZCBDeXJpbCwgYXMgYmVmb3JlLCBpbiB0aGUgcm9vbSwgYW5kIHNldCAKaGltIHRvIHdvcmsgdG8gYXdha2VuIGFuZCByb3VzZSB1cCB0aGUgbW9yZSB0aGFuIApoYWxmLXN0dXBlZmllZCBjaGlsZC4gQWZ0ZXIgYSBnb29kIGRlYWwgb2YgZGlmZmljdWx0eSAKdGhpcyB3YXMgYWNjb21wbGlzaGVkIHRvIHNvbWUgZXh0ZW50LCBidXQgdGhlIGJveSAKcmVtYWluZWQgaW4gYSBoYWxmLWRhemVkLCBzZW1pLWNvbnNjaW91cyBjb25kaXRpb24gCnRocm91Z2ggYWxsIHRoYXQgZm9sbG93ZWQsIHNvIHRoYXQgaGUgbmVlZGVkIHRvIGJlIApwdXNoZWQgYW5kIHB1bGxlZCBhYm91dCwgZ3VpZGVkIGFuZCBoZWxwZWQgYXQgCmV2ZXJ5IHR1cm4uIAoKVGhlIHR3byBib3lzIGZpcnN0IGNyZXB0IG91dCBvZiB0aGUgcm9vbSBpbnRvIHRoZSAKY2VudHJhbCBwYXNzYWdlIHdoaWNoIHJhbiB0aHJvdWdoIHRoZSB3aW5nLCBhbmQgCnRoZW4sIGZpbmRpbmcgdGhhdCB0aGUgc21va2UgYW5kIHRoZSBmbGFtZXMgYmVnaW5uaW5nIAp0byBjb21lIHRocm91Z2ggdGhlIGZsb29yIG1hZGUgaXQgaW1wYXNzYWJsZSBmb3IgYSAKcGh5c2ljYWwgYm9keSwgQ3lyaWwgdG9vayB0aGUgb3RoZXIgYm95IGJhY2sgaW50byAKdGhlIHJvb20gYWdhaW4gYW5kIG91dCBvZiB0aGUgd2luZG93IG9uIGEgc3RvbmUgCmxlZGdlLCBhYm91dCBhIGZvb3Qgd2lkZSwgd2hpY2ggcmFuIGFsb25nIHRoZSBibG9jayAKanVzdCBiZWxvdyB0aGUgd2luZG93cy4gQWxvbmcgdGhpcyBoZSBtYW5hZ2VkIHRvIApndWlkZSBoaXMgY29tcGFuaW9uLCBoYWxmIGJhbGFuY2luZyBoaW1zZWxmIG9uIHRoZSAKZXh0cmVtZSBlZGdlIG9mIHRoZSBsZWRnZSwgYW5kIGhhbGYgZmxvYXRpbmcgb24gYWlyID8gCmJ1dCBhbHdheXMgcGxhY2luZyBoaW1zZWxmIG91dHNpZGUgb2YgdGhlIG90aGVyLCBzbyAKYXMgdG8ga2VlcCBoaW0gZnJvbSBkaXp6aW5lc3MgYW5kIHByZXZlbnQgaGltIGZyb20gCmZlZWxpbmcgYWZyYWlkIG9mIGEgZmFsbC4gCgpUb3dhcmRzIHRoZSBlbmQgb2YgdGhlIGJsb2NrIG5lYXJlc3QgdGhlIGxha2UsIGluIAp3aGljaCBkaXJlY3Rpb24gdGhlIGZpcmUgc2VlbWVkIGxlc3MgZGV2ZWxvcGVkLCB0aGV5IApjbGltYmVkIGluIHRocm91Z2ggYW4gb3BlbiB3aW5kb3cgYW5kIGFnYWluIApyZWFjaGVkIHRoZSBwYXNzYWdlLCBob3BpbmcgdG8gZmluZCB0aGUgc3RhaXJjYXNlIGF0IAp0aGF0IGVuZCBzdGlsbCBwYXNzYWJsZS4gQnV0IGl0LCB0b28sIHdhcyBmdWxsIG9mIGZsYW1lIAphbmQgc21va2U7IHNvIHRoZXkgY3Jhd2xlZCBiYWNrIGFsb25nIHRoZSBwYXNzYWdlLCAKQ3lyaWwgYWR2aXNpbmcgaGlzIGNvbXBhbmlvbiB0byBrZWVwIGhpcyBtb3V0aCAKCgpUSEUgU1RPUlkgT0YgQSBGSVJFIAoKCjU5IAoKCmNsb3NlIHRvIHRoZSBncm91bmQsIHRpbGwgdGhleSByZWFjaGVkIHRoZSBsYXR0aWNlZCAKY2FnZSBvZiB0aGUgbGlmdCBydW5uaW5nIGRvd24gdGhlIGxvbmcgd2VsbCBpbiB0aGUgCmNlbnRyZSBvZiB0aGUgYmxvY2suIAoKVGhlIGxpZnQgb2YgY291cnNlIHdhcyBhdCB0aGUgYm90dG9tLCBidXQgdGhleSAKbWFuYWdlZCB0byBjbGFtYmVyIGRvd24gdGhlIGxhdHRpY2Ugd29yayBpbnNpZGUgCnRoZSBjYWdlIHRpbGwgdGhleSBzdG9vZCBvbiB0aGUgcm9vZiBvZiB0aGUgZWxldmF0b3IgCml0c2VsZi4gSGVyZSB0aGV5IGZvdW5kIHRoZW1zZWx2ZXMgYmxvY2tlZCwgYnV0IApsdWNraWx5IEN5cmlsIGRpc2NvdmVyZWQgYSBkb29yd2F5IG9wZW5pbmcgZnJvbSB0aGUgCmNhZ2Ugb2YgdGhlIGxpZnQgb24gdG8gYSBzb3J0IG9mIGVudHJlc29sIGp1c3QgYWJvdmUgCnRoZSBncm91bmQgZmxvb3IuIFRocm91Z2ggdGhpcyB0aGV5IHJlYWNoZWQgYSBwYXMtIApzYWdlLCB3aGljaCB0aGV5IGNyb3NzZWQsIHRoZSBsaXR0bGUgYm95IGJlaW5nIGhhbGYtIApzdGlmbGVkIGJ5IHRoZSBzbW9rZTsgdGhlbiB0aGV5IG1hZGUgdGhlaXIgd2F5IAp0aHJvdWdoIG9uZSBvZiB0aGUgcm9vbXMgb3Bwb3NpdGUsIGFuZCBmaW5hbGx5LCAKY2xhbWJlcmluZyBvdXQgb2YgdGhlIHdpbmRvdywgZm91bmQgdGhlbXNlbHZlcyBvbiAKdGhlIHRvcCBvZiB0aGUgdmVyYW5kYWggd2hpY2ggcmFuIGFsbCBhbG9uZyBpbiBmcm9udCAKb2YgdGhlIGdyb3VuZCBmbG9vciwgYmV0d2VlbiBpdCBhbmQgdGhlIGdhcmRlbi4gCgpUaGVuY2UgaXQgd2FzIGVhc3kgZW5vdWdoIHRvIHN3YXJtIGRvd24gb25lIApvZiB0aGUgcGlsbGFycyBhbmQgcmVhY2ggdGhlIGdhcmRlbiBpdHNlbGY7IGJ1dCBldmVuIAp0aGVyZSB0aGUgaGVhdCB3YXMgaW50ZW5zZSwgYW5kIHRoZSBkYW5nZXIsIHdoZW4gdGhlIAp3YWxscyBzaG91bGQgZmFsbCwgdmVyeSBjb25zaWRlcmFibGUuIFNvIEN5cmlsIHRyaWVkIAp0byBjb25kdWN0IGhpcyBjaGFyZ2Ugcm91bmQgdGhlIGVuZCBmaXJzdCBvZiBvbmUsIAp0aGVuIG9mIHRoZSBvdGhlciB3aW5nOyBidXQgaW4gYm90aCBjYXNlcyB0aGUgZmxhbWVzIApoYWQgYnVyc3QgdGhyb3VnaCwgYW5kIHRoZSBuYXJyb3csIG92ZXJodW5nIHBhc3NhZ2VzIAp3ZXJlIHF1aXRlIGltcGFzc2FibGUuIEZpbmFsbHkgdGhleSB0b29rIHJlZnVnZSBpbiAKb25lIG9mIHRoZSBwbGVhc3VyZSBib2F0cyB3aGljaCB3ZXJlIG1vb3JlZCB0byB0aGUgCnN0ZXBzIG9mIHRoZSBxdWF5IGF0IHRoZSBzaWRlIG9mIHRoZSBnYXJkZW4gbmV4dCAKdGhlIGxha2UsIGFuZCwgY2FzdGluZyBsb29zZSwgcm93ZWQgb3V0IG9uIHRvIHRoZSAKd2F0ZXIuIAoKCjYwIAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCkN5cmlsIGludGVuZGVkIHRvIHJvdyByb3VuZCBwYXN0IHRoZSBidXJuaW5nIHdpbmcgCmFuZCBsYW5kIHRoZSBib3kgd2hvbSBoZSBoYWQgc2F2ZWQ7IGJ1dCB3aGVuIAp0aGV5IHdlcmUgc29tZSBsaXR0bGUgd2F5IG91dCwgdGhleSBmZWxsIGluIHdpdGggYSAKcGFzc2luZyBsYWtlIHN0ZWFtZXIsIGFuZCB3ZXJlIHNlZW4g4oCUIGZvciB0aGUgd2hvbGUgCnNjZW5lIHdhcyBsaXQgdXAgYnkgdGhlIGdsYXJlIG9mIHRoZSBidXJuaW5nIGhvdGVsLCAKdGlsbCBldmVyeXRoaW5nIHdhcyBhcyBwbGFpbiBhcyBpbiBicm9hZCBkYXlsaWdodC4gClRoZSBzdGVhbWVyIGNhbWUgYWxvbmdzaWRlIHRoZSBib2F0IHRvIHRha2UgdGhlbSAKb2ZmOyBidXQgaW5zdGVhZCBvZiB0aGUgdHdvIGJveXMgdGhleSBoYWQgc2VlbiwgdGhlIApjcmV3IGZvdW5kIG9ubHkgb25lIOKAlCBmb3IgaGlzIG9sZGVyIGZyaWVuZCBoYWQgCnByb21wdGx5IGFsbG93ZWQgQ3lyaWwgdG8gc2xpcCBiYWNrIGludG8gaGlzIGFzdHJhbCAKZm9ybSwgZGlzc2lwYXRpbmcgdGhlIGRlbnNlciBtYXR0ZXIgd2hpY2ggaGFkIG1hZGUgCmZvciB0aGUgdGltZSBhIG1hdGVyaWFsIGJvZHksIGFuZCBoZSB3YXMgdGhlcmVmb3JlIApub3cgaW52aXNpYmxlLiAKCkEgY2FyZWZ1bCBzZWFyY2ggd2FzIG1hZGUsIG9mIGNvdXJzZSwgYnV0IG5vIHRyYWNlIApvZiB0aGUgc2Vjb25kIGJveSBjb3VsZCBiZSBmb3VuZCwgYW5kIHNvIGl0IHdhcyBjb24tIApjbHVkZWQgdGhhdCBoZSBtdXN0IGhhdmUgZmFsbGVuIG92ZXJib2FyZCBhbmQgYmVlbiAKZHJvd25lZCBqdXN0IGFzIHRoZXkgY2FtZSBhbG9uZ3NpZGUuIFRoZSBjaGlsZCAKd2hvIGhhZCBiZWVuIHJlc2N1ZWQgZmVsbCBpbnRvIGEgZGVhZCBmYWludCBhcyBzb29uIAphcyBoZSB3YXMgc2FmZSBvbiBib2FyZCwgc28gdGhleSBjb3VsZCBleHRyYWN0IG5vIGluLSAKZm9ybWF0aW9uIGZyb20gaGltLCBhbmQgd2hlbiBoZSBkaWQgcmVjb3ZlciwgYWxsIApoZSBjb3VsZCBzYXkgd2FzIHRoYXQgaGUgaGFkIHNlZW4gdGhlIG90aGVyIGJveSB0aGUgCm1vbWVudCBiZWZvcmUgdGhleSBjYW1lIGFsb25nc2lkZSwgYW5kIHRoZW4ga25ldyAKbm90aGluZyBtb3JlLiAKClRoZSBzdGVhbWVyIHdhcyBib3VuZCBkb3duIHRoZSBsYWtlIHRvIGEgcGxhY2UgCnNvbWUgdHdvIGRheXPigJkgc2FpbCBkaXN0YW50LCBhbmQgaXQgd2FzIGEgd2VlayBvciAKc28gYmVmb3JlIHRoZSByZXNjdWVkIGJveSBjb3VsZCBiZSByZXN0b3JlZCB0byBoaXMgCnBhcmVudHMsIHdobyBvZiBjb3Vyc2UgdGhvdWdodCB0aGF0IGhlIGhhZCBwZXJpc2hlZCAKaW4gdGhlIGZsYW1lcywgZm9yIHRob3VnaCBhbiBlZmZvcnQgd2FzIG1hZGUgdG8gCgoKVEhFIFNUT1JZIE9GIEEgRklSRSAKCgo2MSAKCgppbXByZXNzIG9uIHRoZWlyIG1pbmRzIHRoZSBmYWN0IHRoYXQgdGhlaXIgc29uIGhhZCAKYmVlbiBzYXZlZCwgaXQgd2FzIGZvdW5kIGltcG9zc2libGUgdG8gY29udmV5IHRoZSAKaWRlYSB0byB0aGVtLCBzbyBpdCBtYXkgYmUgaW1hZ2luZWQgaG93IGdyZWF0IHdhcyAKdGhlIGpveSBvZiB0aGUgbWVldGluZy4gCgpUaGUgYm95IGlzIHN0aWxsIHdlbGwgYW5kIGhhcHB5LCBhbmQgaXMgbmV2ZXIgCndlYXJ5IG9mIHJlbGF0aW5nIGhpcyB3b25kZXJmdWwgYWR2ZW50dXJlLiBNYW55IAphIHRpbWUgaGUgaGFzIHJlZ3JldHRlZCB0aGF0IHRoZSBraW5kIGZyaWVuZCB3aG8gCnNhdmVkIGhpbSBzaG91bGQgaGF2ZSBwZXJpc2hlZCBzbyBteXN0ZXJpb3VzbHkgYXQgCnRoZSB2ZXJ5IG1vbWVudCB3aGVuIGFsbCB0aGUgZGFuZ2VyIHNlZW1lZCBvdmVyIAphdCBsYXN0LiBJbmRlZWQsIGhlIGhhcyBldmVuIHZlbnR1cmVkIHRvIHN1Z2dlc3QgCnRoYXQgcGVyaGFwcyBoZSBkaWRuJ3QgcGVyaXNoIGFmdGVyIGFsbCDigJQgdGhhdCBwZXJoYXBzIApoZSB3YXMgYSBmYWlyeSBwcmluY2U7IGJ1dCBvZiBjb3Vyc2UgdGhpcyBpZGVhIGVsaWNpdHMgCm5vdGhpbmcgYnV0IHRvbGVyYW50IHNtaWxlcyBvZiBzdXBlcmlvcml0eSBmcm9tIGhpcyAKZWxkZXJzLiBUaGUga2FybWljIGxpbmsgYmV0d2VlbiBoaW0gYW5kIGhpcyBwcmUtIApzZXJ2ZXIgaGFzIG5vdCB5ZXQgYmVlbiB0cmFjZWQsIGJ1dCBubyBkb3VidCB0aGVyZSAKbXVzdCBiZSBvbmUgc29tZXdoZXJlLiAKCgpDSEFQVEVSIElYIAoKCk1BVEVSSUFMSVpBVElPTiBBTkQgClJFUEVSQ1VTU0lPTiAKCk9uIG1lZXRpbmcgd2l0aCBhIHN0b3J5IHN1Y2ggYXMgdGhpcywgc3R1ZGVudHMgb2Z0ZW4gCmVucXVpcmUgd2hldGhlciB0aGUgaW52aXNpYmxlIGhlbHBlciBpcyBwZXJmZWN0bHkgc2FmZSAKYW1pZHN0IHRoZXNlIHNjZW5lcyBvZiBkZWFkbHkgcGVyaWwg4oCUIHdoZXRoZXIsIGZvciAKZXhhbXBsZSwgdGhpcyBib3kgd2hvIHdhcyBtYXRlcmlhbGl6ZWQgaW4gb3JkZXIgdG8gCnNhdmUgYW5vdGhlciBmcm9tIGEgYnVybmluZyBob3VzZSB3YXMgbm90IGhpbXNlbGYgCmluIHNvbWUgZGFuZ2VyIOKAlCB3aGV0aGVyIGhpcyBwaHlzaWNhbCBib2R5IHdvdWxkIApub3QgaGF2ZSBzdWZmZXJlZCBpbiBhbnkgd2F5IGJ5IHJlcGVyY3Vzc2lvbiBpZiBoaXMgCm1hdGVyaWFsaXplZCBmb3JtIGhhZCBwYXNzZWQgdGhyb3VnaCB0aGUgZmxhbWVzLCBvciAKZmFsbGVuIGZyb20gdGhlIGhpZ2ggbGVkZ2Ugb24gdGhlIGVkZ2Ugb2Ygd2hpY2ggaGUgCndhbGtlZCBzbyB1bmNvbmNlcm5lZGx5LiBJbiBmYWN0LCBzaW5jZSB3ZSBrbm93IAp0aGF0IGluIG1hbnkgY2FzZXMgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBhIG1hdGVyaS0gCmFsaXplZCBmb3JtIGFuZCBhIHBoeXNpY2FsIGJvZHkgaXMgc3VmZmljaWVudGx5IGNsb3NlIAp0byBwcm9kdWNlIHJlcGVyY3Vzc2lvbiwgbWlnaHQgaXQgbm90IGhhdmUgb2NjdXJyZWQgCmluIHRoaXMgY2FzZT8gCgpOb3cgdGhpcyBzdWJqZWN0IG9mIHJlcGVyY3Vzc2lvbiBpcyBleGNlZWRpbmdseSAKYWJzdHJ1c2UgYW5kIGRpZmZpY3VsdCwgYW5kIHdlIGFyZSBieSBubyBtZWFucyB5ZXQgCmluIGEgcG9zaXRpb24gZnVsbHkgdG8gZXhwbGFpbiBpdHMgcmVtYXJrYWJsZSBwaGVub20tIAplbmE7IGluZGVlZCwgaW4gb3JkZXIgdG8gdW5kZXJzdGFuZCB0aGUgbWF0dGVyIApwZXJmZWN0bHksIGl0IHdvdWxkIHByb2JhYmx5IGJlIG5lY2Vzc2FyeSB0byBjb20tIApwcmVoZW5kIHRoZSBsYXdzIG9mIHN5bXBhdGhldGljIHZpYnJhdGlvbiBvbiBtb3JlIAoKCk1BVEVSSUFMSVpBVElPTiBBTkQgUkVQRVJDVVNTSU9OIDYzIAoKcGxhbmVzIHRoYW4gb25lLiBTdGlsbCwgd2UgZG8ga25vdyBieSBvYnNlcnZhdGlvbiAKc29tZSBvZiB0aGUgY29uZGl0aW9ucyB3aGljaCBwZXJtaXQgaXRzIGFjdGlvbiwgYW5kIApzb21lIHdoaWNoIGRlZmluaXRlbHkgZXhjbHVkZSBpdCwgYW5kIEkgdGhpbmsgd2UgYXJlIAp3YXJyYW50ZWQgaW4gc2F5aW5nIHRoYXQgaXQgd2FzIGFic29sdXRlbHkgaW1wb3MtIApzaWJsZSBoZXJlLiAKClRvIHNlZSB3aHkgdGhpcyBpcyBzbyB3ZSBtdXN0IGZpcnN0IHJlbWVtYmVyIAp0aGF0IHRoZXJlIGFyZSBhdCBsZWFzdCB0aHJlZSB3ZWxsLWRlZmluZWQgdmFyaWV0aWVzIG9mIAptYXRlcmlhbGl6YXRpb24sIGFzIGFueW9uZSB3aG8gaGFzIGF0IGFsbCBhbiBleHRlbmRlZCAKZXhwZXJpZW5jZSBvZiBzcGlyaXR1YWxpc20gd2lsbCBiZSBhd2FyZS4gSSBhbSBub3QgCmNvbmNlcm5lZCBhdCB0aGUgbW9tZW50IHRvIGVudGVyIHVwb24gYW55IGV4cGxhLSAKbmF0aW9uIGFzIHRvIGhvdyB0aGVzZSB0aHJlZSB2YXJpZXRpZXMgYXJlIHJlc3BlY3RpdmVseSAKcHJvZHVjZWQsIGJ1dCBhbSBtZXJlbHkgc3RhdGluZyB0aGUgaW5kdWJpdGFibGUgZmFjdCAKb2YgdGhlaXIgZXhpc3RlbmNlLiAKCjEuIFRoZXJlIGlzIHRoZSBtYXRlcmlhbGl6YXRpb24gd2hpY2gsIHRob3VnaCAKdGFuZ2libGUsIGlzLSBub3QgdmlzaWJsZSB0byBvcmRpbmFyeSBwaHlzaWNhbCBzaWdodC4gCk9mIHRoaXMgbmF0dXJlIGFyZSB0aGUgdW5zZWVuIGhhbmRzIHdoaWNoIHNvIG9mdGVuIApjbGFzcCBvbmXigJlzIGFybSBvciAuIHN0cm9rZSBvbmXigJlzIGZhY2UgYXQgYSBzZWFuY2UgLCAKd2hpY2ggc29tZXRpbWVzIGNhcnJ5IHBoeXNpY2FsIG9iamVjdHMgdGhyb3VnaCB0aGUgCmFpciBvciBtYWtlIHJhcHMgdXBvbiB0aGUgdGFibGUg4oCUIHRob3VnaCBvZiBjb3Vyc2UgCmJvdGggdGhlc2UgbGF0dGVyIHBoZW5vbWVuYSBtYXkgZWFzaWx5IGJlIHByb2R1Y2VkIAp3aXRob3V0IGEgbWF0ZXJpYWxpemVkIGhhbmQgYXQgYWxsLiAKCjIuIFRoZXJlIGlzIHRoZSBtYXRlcmlhbGl6YXRpb24gd2hpY2ggdGhvdWdoIAp2aXNpYmxlIGlzIG5vdCB0YW5naWJsZSDigJQgdGhlIHNwaXJpdC1mb3JtIHRocm91Z2ggCndoaWNoIG9uZeKAmXMgaGFuZCBwYXNzZXMgYXMgdGhyb3VnaCBlbXB0eSBhaXIuIEluIApzb21lIGNhc2VzIHRoaXMgdmFyaWV0eSBpcyBvYnZpb3VzbHkgbWlzdHkgYW5kIGltLSAKcGFscGFibGUsIGJ1dCBpbiBvdGhlcnMgaXRzIGFwcGVhcmFuY2UgaXMgc28gZW50aXJlbHkgCm5vcm1hbCB0aGF0IGl0cyBzb2xpZGl0eSBpcyBuZXZlciBkb3VidGVkIHVudGlsIHNvbWUtIApvbmUgZW5kZWF2b3VycyB0byBncmFzcCBpdC4gCgoKNjQgCgoKSU5WSVNJQkxFIEhFTFBFUlMgCgoKMy4gVGhlcmUgaXMgdGhlIHBlcmZlY3QgbWF0ZXJpYWxpemF0aW9uIHdoaWNoIGlzIApib3RoIHZpc2libGUgYW5kIHRhbmdpYmxlIOKAlCB3aGljaCBub3Qgb25seSBiZWFycyB0aGUgCm91dHdhcmQgc2VtYmxhbmNlIG9mIHlvdXIgZGVwYXJ0ZWQgZnJpZW5kLCBidXQgCnNoYWtlcyB5b3UgY29yZGlhbGx5IGJ5IHRoZSBoYW5kIHdpdGggdGhlIHZlcnkgY2xhc3AgCnlvdSBrbm93IHNvIHdlbGwuIAoKTm93IHdoaWxlIHRoZXJlIGlzIGEgZ29vZCBkZWFsIG9mIGV2aWRlbmNlIHRvIApzaG93IHRoYXQgcmVwZXJjdXNzaW9uIHRha2VzIHBsYWNlIHVuZGVyIGNlcnRhaW4gCmNvbmRpdGlvbnMgaW4gdGhlIGNhc2Ugb2YgdGhpcyB0aGlyZCBraW5kIG9mIG1hdGVyaWFsaS0gCnphdGlvbiwgaXQgaXMgYnkgbm8gbWVhbnMgc28gY2VydGFpbiB0aGF0IGl0IGNhbiBvY2N1ciAKd2l0aCB0aGUgZmlyc3Qgb3Igc2Vjb25kIGNsYXNzLiBJbiB0aGUgY2FzZSBvZiB0aGUgCmJveS1oZWxwZXIgaXQgaXMgcHJvYmFibGUgdGhhdCB0aGUgbWF0ZXJpYWxpemF0aW9uIAp3b3VsZCBub3QgYmUgb2YgdGhlIHRoaXJkIHR5cGUsIHNpbmNlIHRoZSBncmVhdGVzdCAKY2FyZSBpcyBhbHdheXMgdGFrZW4gbm90IHRvIGV4cGVuZCBtb3JlIGZvcmNlIHRoYW4gCmlzIGFic29sdXRlbHkgbmVjZXNzYXJ5IHRvIHByb2R1Y2Ugd2hhdGV2ZXIgcmVzdWx0IAptYXkgYmUgcmVxdWlyZWQsIGFuZCBpdCBpcyBvYnZpb3VzIHRoYXQgbGVzcyAKZW5lcmd5IHdvdWxkIGJlIHVzZWQgaW4gdGhlIHByb2R1Y3Rpb24gb2YgdGhlIAptb3JlIHBhcnRpYWwgZm9ybXMgd2hpY2ggd2UgaGF2ZSBjYWxsZWQgdGhlIGZpcnN0IAphbmQgc2Vjb25kIGNsYXNzZXMuIFRoZSBwcm9iYWJpbGl0eSBpcyB0aGF0IG9ubHkgCnRoZSBhcm0gd2l0aCB3aGljaCB0aGUgYm95IGh8fGQgaGlzIGxpdHRsZSBjb20tIApwYW5pb24gdyByIG91bGQgYmUgc29saWQgdG8gdGhlIHRvdWNoLCBhbmQgdGhhdCB0aGUgCnJlc3Qgb2YgaGlzIGJvZHksIHRob3VnaCBsb29raW5nIHBlcmZlY3RseSBuYXR1cmFsLCAKd291bGQgaGF2ZSBwcm92ZWQgZmFyIGxlc3MgcGFscGFibGUgaWYgaXQgaGFkIGJlZW4gCnRlc3RlZC4gCgpCdXQsIGFwYXJ0IGZyb20gdGhpcyBwcm9iYWJpbGl0eSwgdGhlcmUgaXMgYW5vdGhlciAKcG9pbnQgdG8gYmUgY29uc2lkZXJlZC4gV2hlbiBhIGZ1bGwgbWF0ZXJpYWxpemF0aW9uIAp0YWtlcyBwbGFjZSwgd2hldGhlciB0aGUgc3ViamVjdCBiZSBsaXZpbmcgb3IgZGVhZCwgCnBoeXNpY2FsIG1hdHRlciBvZiBzb21lIHNvcnQgaGFzIHRvIGJlIGdhdGhlcmVkIAp0b2dldGhlciBmb3IgdGhlIHB1cnBvc2UuIEF0IGEgc3Bpcml0dWFsaXN0aWMgc2VhbmNlIAoKCk1BVEVSSUFMSVpBVElPTiBBTkQgUkVQRVJDVVNTSU9OIDY1IAoKCnRoaXMgbWF0dGVyIGlzIG9idGFpbmVkIGJ5IGRyYXdpbmcgbGFyZ2VseSB1cG9uIHRoZSAKZXRoZXJpYyBkb3VibGUgb2YgdGhlIG1lZGl1bSDigJQgYW5kIHNvbWV0aW1lcyBldmVuIAp1cG9uIGhpcyBwaHlzaWNhbCBib2R5IGFsc28sIHNpbmNlIGNhc2VzIGFyZSBvbiByZWNvcmQgCmluIHdoaWNoIGhpcyB3ZWlnaHQgaGFzIGJlZW4gdmVyeSBjb25zaWRlcmFibHkgCmRlY3JlYXNlZCB3aGlsZSBtYW5pZmVzdGF0aW9ucyBvZiB0aGlzIGNoYXJhY3RlciAKd2VyZSB0YWtpbmcgcGxhY2UuIAoKVGhpcyBtZXRob2QgaXMgZW1wbG95ZWQgYnkgdGhlIGRpcmVjdGluZyBlbnRpdGllcyAKb2YgdGhlIHNlYW5jZSBzaW1wbHkgYmVjYXVzZSB3aGVuIGFuIGF2YWlsYWJsZSAKbWVkaXVtIGlzIHdpdGhpbiByZWFjaCBpdCBpcyBtdWNoIHRoZSBlYXNpZXN0IHdheSAKaW4gd2hpY2ggYSBtYXRlcmlhbGl6YXRpb24gY2FuIGJlIHByb2R1Y2VkOyBhbmQgdGhlIApjb25zZXF1ZW5jZSBpcyB0aGF0IGEgdmVyeSBjbG9zZSBjb25uZWN0aW9uIGlzIHRodXMgCnNldCB1cCBiZXR3ZWVuIHRoYXQgbWVkaXVtIGFuZCB0aGUgbWF0ZXJpYWxpemVkIApib2R5LCBzbyB0aGF0IHRoZSBwaGVub21lbm9uIHdoaWNoIChhbHRob3VnaCBvbmx5IAppbXBlcmZlY3RseSB1bmRlcnN0YW5kaW5nIGl0KSB3ZSBjYWxsIHJlcGVyY3Vzc2lvbiwgCm9jY3VycyBpbiBpdHMgY2xlYXJlc3QgZm9ybS4gSWYsIGZvciBleGFtcGxlLCB0aGUgCmhhbmRzIG9mIHRoZSBtYXRlcmlhbGl6ZWQgYm9keSBiZSBydWJiZWQgd2l0aCAKY2hhbGssIHRoYXQgY2hhbGsgd2lsbCBhZnRlcndhcmRzIGJlIGZvdW5kIG9uIHRoZSAKaGFuZHMgb2YgdGhlIG1lZGl1bSwgZXZlbiB0aG91Z2ggaGUgbWF5IGhhdmUgCmJlZW4gYWxsIHRoZSB0aW1lIGNhcmVmdWxseSBsb2NrZWQgdXAgaW4gYSBjYWJpbmV0IAp1bmRlciBjaXJjdW1zdGFuY2VzIHdoaWNoIGFic29sdXRlbHkgcHJlY2x1ZGUgYW55IApzdXNwaWNpb24gb2YgZnJhdWQuIElmIGFueSBpbmp1cnkgYmUgaW5mbGljdGVkIHVwb24gCnRoZSBtYXRlcmlhbGl6ZWQgZm9ybSwgdGhhdCBpbmp1cnkgd2lsbCBiZSBhY2N1cmF0ZWx5IApyZXByb2R1Y2VkIHVwb24gdGhlIGNvcnJlc3BvbmRpbmcgcGFydCBvZiB0aGUgCm1lZGl1beKAmXMgYm9keTsgd2hpbGUgc29tZXRpbWVzIGZvb2Qgb2Ygd2hpY2ggdGhlIApzcGlyaXQtZm9ybSAqIGhhcyBwYXJ0YWtlbiB3aWxsIGJlIGZvdW5kIHRvIGhhdmUgCnBhc3NlZCBpbnRvIHRoZSBib2R5IG9mIHRoZSBtZWRpdW0g4oCUIGF0IGxlYXN0IHRoYXQgCmhhcHBlbmVkIGluIG9uZSBjYXNlIGF0IGFueSByYXRlIHdpdGhpbiBteSBvd24gCmV4cGVyaWVuY2UuIAoKNSAKCgo2NiAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgpJdCB3b3VsZCBiZSBmYXIgb3RoZXJ3aXNlLCBob3dldmVyLCBpbiB0aGUgY2FzZSAKd2hpY2ggd2UgaGF2ZSBiZWVuIGRlc2NyaWJpbmcuIEN5cmlsIHdhcyB0aG91LSAKc2FuZHMgb2YgbWlsZXMgZnJvbSBoaXMgc2xlZXBpbmcgcGh5c2ljYWwgYm9keSwgYW5kIAppdCB3b3VsZCB0aGVyZWZvcmUgYmUgcXVpdGUgaW1wb3NzaWJsZSBmb3IgaGlzIGZyaWVuZCAKdG8gZHJhdyBldGhlcmljIG1hdHRlciBmcm9tIGl0LCB3aGlsZSB0aGUgcmVndWxhdGlvbnMgCnVuZGVyIHdoaWNoIGFsbCBwdXBpbHMgb2YgdGhlIGdyZWF0IE1hc3RlcnMgb2YgCldpc2RvbSBwZXJmb3JtIHRoZWlyIHdvcmsgb2YgaGVscGluZyBtYW4gd291bGQgCmFzc3VyZWRseSBwcmV2ZW50IGhpbSwgZXZlbiBmb3IgdGhlIG5vYmxlc3QgcHVycG9zZSwgCmZyb20gcHV0dGluZyBzdWNoIGEgc3RyYWluIHVwb24gYW55b25lIGVsc2XigJlzIGJvZHkuIApCZXNpZGVzLCBpdCB3b3VsZCBiZSBxdWl0ZSB1bm5lY2Vzc2FyeSwgZm9yIHRoZSAKZmFyIGxlc3MgZGFuZ2Vyb3VzIG1ldGhvZCBpbnZhcmlhYmx5IGVtcGxveWVkIGJ5IAp0aGUgaGVscGVycyB3aGVuIG1hdGVyaWFsaXphdGlvbiBzZWVtcyBkZXNpcmFibGUgCndvdWxkIGJlIHJlYWR5IHRvIGhpcyBoYW5kIOKAlCB0aGUgY29uZGVuc2F0aW9uIApmcm9tIHRoZSBjaXJjdW1hbWJpZW50IGV0aGVyLCBvciBldmVuIGZyb20gdGhlIApwaHlzaWNhbCBhaXIsIG9mIHN1Y2ggYW1vdW50IG9mIG1hdHRlciBhcyBtYXkgCmJlIHJlcXVpc2l0ZS4gVGhpcyBmZWF0LCB0aG91Z2ggbm8gZG91YnQgYmV5b25kIAp0aGUgcG93ZXIgb2YgdGhlIGF2ZXJhZ2UgZW50aXR5IG1hbmlmZXN0aW5nIGF0IGEgCnNlYW5jZSAsIHByZXNlbnRzIG5vIGRpZmZpY3VsdHkgdG8gYSBzdHVkZW50IG9mIG9jY3VsdCAKY2hlbWlzdHJ5LiAKCkJ1dCBtYXJrIHRoZSBkaWZmZXJlbmNlIGluIHRoZSByZXN1bHQgb2J0YWluZWQuIEluIAp0aGUgY2FzZSBvZiB0aGUgbWVkaXVtIHdlIGhhdmUgYSBtYXRlcmlhbGl6ZWQgZm9ybSAKaW4gdGhlIGNsb3Nlc3QgcG9zc2libGUgY29ubmVjdGlvbiB3aXRoIHRoZSBwaHlzaWNhbCAKYm9keSwgbWFkZSBvdXQgb2YgaXRzIHZlcnkgc3Vic3RhbmNlLCBhbmQgdGhlcmVmb3JlIApjYXBhYmxlIG9mIHByb2R1Y2luZyBhbGwgdGhlIHBoZW5vbWVuYSBvZiByZXBlcmN1cy0gCnNpb24uIEluIHRoZSBjYXNlIG9mIHRoZSBoZWxwZXIgd2UgaGF2ZSBpbmRlZWQgYW4gCmV4YWN0IHJlcHJvZHVjdGlvbiBvZiB0aGUgcGh5c2ljYWwgYm9keTsgYnV0IGl0IGlzIApjcmVhdGVkIGJ5IGEgbWVudGFsIGVmZm9ydCBvdXQgb2YgbWF0dGVyIGVudGlyZWx5IApmb3JlaWduIHRvIHRoYXQgYm9keSwgYW5kIGlzIG5vIG1vcmUgY2FwYWJsZSBvZiBhY3RpbmcgCgoKTUFURVJJQUxJWkFUSU9OIEFORCBSRVBFUkNVU1NJT04gNjcgCgoKdXBvbiBpdCBieSByZXBlcmN1c3Npb24gdGhhbiBhbiBvcmRpbmFyeSBtYXJibGUgCnN0YXR1ZSBvZiB0aGUgbWFuIHdvdWxkIGJlLiAKClRodXMgaXQgaXMgdGhhdCBhIHBhc3NhZ2UgdGhyb3VnaCB0aGUgZmxhbWVzIG9yIGEgCmZhbGwgZnJvbSBhIGhpZ2ggd2luZG93LWxlZGdlIHdvdWxkIGhhdmUgaGFkIG5vIAp0ZXJyb3JzIGZvciB0aGUgYm95LWhlbHBlciwgYW5kIHRoYXQgb24gYW5vdGhlciBvY2NhLSAKc2lvbiBhIG1lbWJlciBvZiB0aGUgYmFuZCwgdGhvdWdoIG1hdGVyaWFsaXplZCwgCndhcyBhYmxlIHdpdGhvdXQgYW55IGluY29udmVuaWVuY2UgdG8gdGhlIHBoeXNpY2FsIApib2R5IHRvIGdvIGRvd24gaW4gYSBzaW5raW5nIHZlc3NlbCAoc2VlIGNoLiBYVikuIAoKSW4gYm90aCB0aGUgaW5jaWRlbnRzIG9mIGhpcyB3b3JrIHRoYXQgaGF2ZSBiZWVuIApkZXNjcmliZWQgYWJvdmUsIGl0IHdpbGwgaGF2ZSBiZWVuIG5vdGljZWQgdGhhdCB0aGUgCmJveSBDeXJpbCB3YXMgdW5hYmxlIHRvIG1hdGVyaWFsaXplIGhpbXNlbGYsIGFuZCB0aGF0IAp0aGUgb3BlcmF0aW9uIGhhZCB0byBiZSBwZXJmb3JtZWQgZm9yIGhpbSBieSBhbiAKb2xkZXIgZnJpZW5kLiBPbmUgbW9yZSBvZiBoaXMgZXhwZXJpZW5jZXMgaXMgd29ydGggCnJlbGF0aW5nLCBmb3IgaXQgZ2l2ZXMgdXMgYSBjYXNlIGluIHdoaWNoIGJ5IGludGVuc2l0eSAKb2YgcGl0eSBhbmQgZGV0ZXJtaW5hdGlvbiBvZiB3aWxsIGhlIHdhcyBhYmxlIHRvIApzaG93IGhpbXNlbGYg4oCUIGEgY2FzZSBzb21ld2hhdCDigJhwYXJhbGxlbCB0byB0aGF0IApwcmV2aW91c2x5IHJlbGF0ZWQgb2YgdGhlIG1vdGhlciB3IFQgaG9zZSBsb3ZlIGVuYWJsZWQgCmhlciBzb21laG93IHRvIG1hbmlmZXN0IGhlcnNlbGYgaW4gb3JkZXIgdG8gc2F2ZSBoZXIgCmNoaWxkcmVu4oCZcyBsaXZlcy4gCgpJbmV4cGxpY2FibGUgYXMgaXQgbWF5IHNlZW0sIHRoZXJlIGlzIG5vIGRvdWJ0IAp3aGF0ZXZlciBvZiB0aGUgZXhpc3RlbmNlIGluIG5hdHVyZSBvZiB0aGlzIHN0dXBlbi0gCmRvdXMgcG93ZXIgb2Ygd2lsbCBvdmVyIG1hdHRlciBvZiBhbGwgcGxhbmVzLCBzbyAKdGhhdCBpZiBvbmx5IHRoZSBwb3dlciBiZSBncmVhdCBlbm91Z2gsIHByYWN0aWNhbGx5IAphbnkgcmVzdWx0IG1heSBiZSBwcm9kdWNlZCBieSBpdHMgZGlyZWN0IGFjdGlvbiwgCndpdGhvdXQgYW55IGtub3dsZWRnZSBvciBldmVuIHRob3VnaHQgb24gdGhlIHBhcnQgCm9mIHRoZSBtYW4gZXhlcmNpc2luZyB0aGF0IHdpbGwgYXMgdG8gaG93IGl0IGlzIHRvIGRvIAppdHMgd29yay4gV2UgaGF2ZSBoYWQgcGxlbnR5IG9mIGV2aWRlbmNlIHRoYXQgdGhpcyAKcG93ZXIgaG9sZHMgZ29vZCBpbiB0aGUgY2FzZSBvZiBtYXRlcmlhbGl6YXRpb24uIAoKCjY4IAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCmFsdGhvdWdoIG9yZGluYXJpbHkgaXQgaXMgYW4gYXJ0IHdoaWNoIG11c3QgYmUgbGVhcm50IApqdXN0IGxpa2UgYW55IG90aGVyLiBBc3N1cmVkbHkgYW4gYXZlcmFnZSBtYW4gb24gCnRoZSBhc3RyYWwgcGxhbmUgY291bGQgbm8gbW9yZSBtYXRlcmlhbGl6ZSBoaW1zZWxmIAp3aXRob3V0IGhhdmluZyBwcmV2aW91c2x5IGxlYXJudCBob3cgdG8gZG8gaXQgdGhhbiAKdGhlIGF2ZXJhZ2UgbWFuIG9uIHRoaXMgcGxhbmUgY291bGQgcGxheSB0aGUgdmlvbGluIAp3aXRob3V0IGhhdmluZyBwcmV2aW91c2x5IGxlYXJudCBpdDsgYnV0IHRoZXJlIGFyZSAKZXhjZXB0aW9uYWwgY2FzZXMsIGFzIHdpbGwgYmUgc2VlbiBmcm9tIHRoZSBmb2xsb3dpbmcgCm5hcnJhdGl2ZS4gCgoKQ0hBUFRFUiBYIAoKClRIRSBUV08gQlJPVEhFUlMgCgpUaGlzIHN0b3J5IGhhcyBiZWVuIHRvbGQgYnkgYSBwZW4gb2YgZmFyIGdyZWF0ZXIgCmRyYW1hdGljIGNhcGFiaWxpdHkgdGhhbiBtaW5lLCBhbmQgd2l0aCBhIHdlYWx0aCBvZiAKZGV0YWlsIGZvciB3aGljaCBJIGhhdmUgaGVyZSBubyBzcGFjZSwgaW4gdGhlIFRoZW8gLSAKc29waGljYWwgUmV2aWV3IG9mIE5vdmVtYmVyLCAxODk3LCBwLiAyMjkuIFRvIAp0aGF0IGFjY291bnQgSSB3b3VsZCByZWZlciB0aGUgcmVhZGVyLCBzaW5jZSBteSBvd24gCmRlc2NyaXB0aW9uIG9mIHRoZSBjYXNlIHdpbGwgYmUgYSBtZXJlIG91dGxpbmUsIGFzIApicmllZiBhcyBpcyBjb25zaXN0ZW50IHdpdGggY2xlYXJuZXNzLiBUaGUgbmFtZXMgCmdpdmVuIGFyZSBvZiBjb3Vyc2UgZmljdGl0aW91cywgYnV0IHRoZSBpbmNpZGVudHMgYXJlIApyZWxhdGVkIHdpdGggc2NydXB1bG91cyBhY2N1cmFjeS4gCgpPdXIgZHJhbWF0aXMgcGVyc29uYWUgYXJlIHR3byBicm90aGVycywgdGhlIHNvbnMgCm9mIGEgY291bnRyeSBnZW50bGVtYW4g4oCUIExhbmNlbG90LCBhZ2VkIGZvdXJ0ZWVuLCAKYW5kIFdhbHRlciwgYWdlZCBlbGV2ZW4g4oCUIHZlcnkgZ29vZCBib3lzIG9mIHRoZSAKb3JkaW5hcnkgaGVhbHRoeSwgbWFubHkgdHlwZSwgbGlrZSBodW5kcmVkcyBvZiBvdGhlcnMgCmluIHRoaXMgZmFpciByZWFsbSwgd2l0aCBubyBvYnZpb3VzIHBzeWNoaWMgcXVhbGlmaS0gCmNhdGlvbnMgb2YgYW55IHNvcnQsIGV4Y2VwdCB0aGUgcG9zc2Vzc2lvbiBvZiBhIGdvb2QgCmRlYWwgb2YgQ2VsdGljIGJsb29kLiBQZXJoYXBzIHRoZSBtb3N0IHJlbWFya2FibGUgCmZlYXR1cmUgYWJvdXQgdGhlbSB3YXMgdGhlIGludGVuc2l0eSwgb2YgdGhlIGFmZmVjdGlvbiAKdGhhdCBleGlzdGVkIGJldHdlZW4gdGhlbSwgZm9yIHRoZXksIHdlcmUgc2ltcGx5IAppbnNlcGFyYWJsZSDigJQgbmVpdGhlciB3b3VsZCBnbyBhbnl3aGVyZSB3aXRob3V0IHRoZSAKCgo3MCAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgpvdGhlciwgYW5kIHRoZSB5b3VuZ2VyIGlkb2xpemVkIHRoZSBlbGRlciBhcyBvbmx5IGEgCnlvdW5nZXIgYm95IGNhbi4gCgpPbmUgdW5sdWNreSBkYXkgTGFuY2Vsb3Qgd2FzIHRocm93biBmcm9tIGhpcyAKcG9ueSBhbmQga2lsbGVkLCBhbmQgZm9yIFdhbHRlciB0aGUgd29ybGQgYmVjYW1lIAplbXB0eS4gVGhlIGNoaWxk4oCZcyBncmllZiB3YXMgc28gcmVhbCBhbmQgdGVycmlibGUgCnRoYXQgaGUgY291bGQgbmVpdGhlciBlYXQgbm9yIHNsZWVwLCBhbmQgaGlzIG1vdGhlciAKYW5kIG51cnNlIHdlcmUgYXQgdGhlaXIgd2l0c+KAmSBlbmQgYXMgdG8gd2hhdCB0byBkbyAKZm9yIGhpbS4gSGUgc2VlbWVkIGRlYWYgYWxpa2UgdG8gcGVyc3Vhc2lvbiBhbmQgCmJsYW1lOyB3aGVuIHRoZXkgdG9sZCBoaW0gdGhhdCBncmllZiB3YXMgd2lja2VkLCAKYW5kIHRoYXQgaGlzIGJyb3RoZXIgd2FzIGluIGhlYXZlbiwgaGUgc2ltcGx5IGFuLSAKc3dlcmVkIHRoYXQgaGUgY291bGQgbm90IGJlIGNlcnRhaW4gb2YgdGhhdCwgYW5kIHRoYXQgCmV2ZW4gaWYgaXQgd2VyZSB0cnVlLCBoZSBrbmV3IHRoYXQgTGFuY2Vsb3QgY291bGQgCm5vIG1vcmUgYmUgaGFwcHkgaW4gaGVhdmVuIHdpdGhvdXQgaGltIHRoYW4gaGUgCmNvdWxkIG9uIGVhcnRoIHdpdGhvdXQgTGFuY2Vsb3QuIAoKSW5jcmVkaWJsZSBhcyBpdCBtYXkgc291bmQsIHRoZSBwb29yIGNoaWxkIHdhcyAKYWN0dWFsbHkgZHlpbmcgb2YgZ3JpZWYsIGFuZCB3aGF0IG1hZGUgdGhlIGNhc2UgCmV2ZW4gbW9yZSBwYXRoZXRpYyB3YXMgdGhlIGZhY3QgdGhhdCwgYWxsIHVua25vd24gCnRvIGhpbSwgaGlzIGJyb3RoZXIgc3Rvb2QgYXQgaGlzIHNpZGUgYWxsIHRoZSB0aW1lLCAKZnVsbHkgY29uc2Npb3VzIG9mIGhpcyBtaXNlcnksIGFuZCBoaW1zZWxmIGhhbGYtZGlzLSAKdHJhY3RlZCBhdCB0aGUgZmFpbHVyZSBvZiBoaXMgcmVwZWF0ZWQgYXR0ZW1wdHMgdG8gCnRvdWNoIGhpbSBvciBzcGVhayB0byBoaW0uIAoKQWZmYWlycyB3ZXJlIHN0aWxsIGluIHRoaXMgbW9zdCBwaXRpYWJsZSBjb25kaXRpb24gCm9uIHRoZSB0aGlyZCBldmVuaW5nIGFmdGVyIHRoZSBhY2NpZGVudCwgd2hlbiBDeXJpbOKAmXMgCmF0dGVudGlvbiB3YXMgZHJhd24gdG8gdGhlIHR3byBicm90aGVycyDigJQgaGUgY2Fubm90IAp0ZWxsIGhvdy4g4oCcSGUganVzdCBoYXBwZW5lZCB0byBiZSBwYXNzaW5nLOKAnSBoZSAKc2F5czsgeWV0IHN1cmVseSwgdGhlIHdpbGwgb2YgdGhlIExvcmRzIG9mIENvbXBhc3Npb24gCmd1aWRlZCBoaW0gdG8gdGhlIHNjZW5lLiBQb29yIFdhbHRlciBsYXkgZXhoYXVzdC0gCmVkIHlldCBzbGVlcGxlc3PigJQgYWxvbmUgaW4gaGlzIGRlc29sYXRpb24sIHNvIGZhciAKCgpUSEUgVFdPIEJST1RIRVJTIAoKCjcxIAoKCmFzIGhlIGtuZXcsIHRob3VnaCBhbGwgdGhlIHRpbWUgaGlzIHNvcnJvd2luZyAKYnJvdGhlciBzdG9vZCBiZXNpZGUgaGltLiBMYW5jZWxvdCwgZnJlZSBmcm9tIHRoZSAKY2hhaW5zIG9mIHRoZSBmbGVzaCwgY291bGQgc2VlIGFuZCBoZWFyIEN5cmlsLCBzbyAKb2J2aW91c2x5IHRoZSBmaXJzdCB0aGluZyB0byBkbyB3YXMgdG8gc29vdGhlIGhpcyBwYWluIAp3aXRoIGEgcHJvbWlzZSBvZiBmcmllbmRzaGlwIGFuZCBoZWxwIGluIGNvbW11bmktIApjYXRpbmcgd2l0aCBoaXMgYnJvdGhlci4gCgpBcyBzb29uIGFzIHRoZSBkZWFkIGJveSdzIG1pbmQgd2FzIHRodXMgY2hlZXJlZCAKd2l0aCBob3BlLCBDeXJpbCB0dXJuZWQgdG8gdGhlIGxpdmluZyBjaGlsZCwgYW5kIAp0cmllZCB3aXRoIGFsbCBoaXMgc3RyZW5ndGggdG8gaW1wcmVzcyB1cG9uIGhpcyBicmFpbiAKdGhlIGtub3dsZWRnZSB0aGF0IGhpcyBicm90aGVyIHN0b29kIGJlc2lkZSBoaW0sIApub3QgZGVhZCwgYnV0IGxpdmluZyBhbmQgbG92aW5nIGFzIG9mIHlvcmUuIEJ1dCBhbGwgCmhpcyBlZmZvcnRzIHdlcmUgaW4gdmFpbjsgdGhlIGR1bGwgYXBhdGh5IG9mIGdyaWVmIHNvIApmaWxsZWQgcG9vciBXYWx0ZXLigJlzIG1pbmQgdGhhdCBubyBzdWdnZXN0aW9uIGZyb20gCndpdGhvdXQgY291bGQgZW50ZXIsIGFuZCBDeXJpbCBrbmV3IG5vdCB3aGF0IHRvIApkby4gWWV0IHNvIGRlZXBseSB3YXMgaGUgbW92ZWQgYnkgdGhlIHNhZCBzaWdodCwgCnNvIGludGVuc2Ugd2FzIGhpcyBzeW1wYXRoeSBhbmQgc28gZmlybSBoaXMgZGV0ZXItIAptaW5hdGlvbiB0byBoZWxwIGluIHNvbWUgd2F5IG9yIG90aGVyIGF0IGFueSAKY29zdCBvZiBzdHJlbmd0aCB0byBoaW1zZWxmLCB0aGF0IHNvbWVob3cgKGV2ZW4gdG8gCnRoaXMgZGF5IGhlIGNhbm5vdCB0ZWxsIGhvdykgaGUgZm91bmQgaGltc2VsZiAKYWJsZSB0byB0b3VjaCBhbmQgdG8gc3BlYWsgdG8gdGhlIGhlYXJ0LWJyb2tlbiAKY2hpbGQuIAoKUHV0dGluZyBhc2lkZSBXYWx0ZXLigJlzIHF1ZXN0aW9ucyBhcyB0byB3aG8gaGUgCndhcyBhbmQgaG93IGhlIGNhbWUgdGhlcmUsIGhlIHdlbnQgc3RyYWlnaHQgdG8gdGhlIApwb2ludCwgdGVsbGluZyBoaW0gdGhhdCBoaXMgYnJvdGhlciBzdG9vZCBiZXNpZGUgaGltLCAKdHJ5aW5nIGhhcmQgdG8gbWFrZSBoaW0gaGVhciBoaXMgY29uc3RhbnRseSByZS0gCnBlYXRlZCBhc3N1cmFuY2VzIHRoYXQgaGUgd2FzIG5vdCBkZWFkLCBidXQgbGl2aW5nIAphbmQgeWVhcm5pbmcgdG8gaGVscCBhbmQgY29tZm9ydCBoaW0uIExpdHRsZSAKV2FsdGVyIGxvbmdlZCB0byBiZWxpZXZlLCB5ZXQgaGFyZGx5IGRhcmVkIHRvIGhvcGU7IAoKCjcyIAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCmJ1dCBDeXJpbCdzIGVhZ2VyIGluc2lzdGVuY2UgdmFucXVpc2hlZCBoaXMgZG91YnRzIAphdCBsYXN0LCBhbmQgaGUgc2FpZDogCgrigJwgTyAhIEkgZG8gYmVsaWV2ZSB5b3UsIGJlY2F1c2UgeW91J3JlIHNvIGtpbmQ7IApidXQgaWYgSSBjb3VsZCBvbmx5IHNlZSBoaW0sIHRoZW4gSSBzaG91bGQga25vdyAsIAp0aGVuIEkgc2hvdWxkIGJlIHF1aXRlIHN1cmU7IGFuZCBpZiBJIGNvdWxkIG9ubHkgCmhlYXIgaGlzIHZvaWNlIHRlbGxpbmcgbWUgaGUgd2FzIGhhcHB5LCBJIHNob3VsZG7igJl0IAptaW5kIGEgYml0IGhpcyBnb2luZyBhd2F5IGFnYWluIGFmdGVyd2FyZHMu4oCdIAoKWW91bmcgdGhvdWdoIGhlIHdhcyBhdCB0aGUgd29yaywgQ3lyaWwga25ldyAKZW5vdWdoIHRvIGJlIGF3YXJlIHRoYXQgV2FsdGVy4oCZcyB3aXNoIHdhcyBvbmUgbm90IApvcmRpbmFyaWx5IGdyYW50ZWQsIGFuZCB3YXMgYmVnaW5uaW5nIHJlZ3JldGZ1bGx5IAp0byB0ZWxsIGhpbSBzbywgd2hlbiBzdWRkZW5seSBoZSBmZWx0IGEgUHJlc2VuY2UgCnRoYXQgYWxsIHRoZSBoZWxwZXJzIGtub3csIGFuZCB0aG91Z2ggbm8gd29yZCB3YXMgCnNwb2tlbiBpdCB3YXMgYm9ybmUgaW4gdXBvbiBoaXMgbWluZCB0aGF0IGluc3RlYWQgCm9mIHdoYXQgaGUgaGFkIG1lYW50IHRvIHNheSwgaGUgd2FzIHRvIHByb21pc2UgCldhbHRlciB0aGUgYm9vbiBoaXMgaGVhcnQgZGVzaXJlZC4g4oCcV2FpdCB0aWxsIEkgCmNvbWUgYmFjayzigJ0gaGUgc2FpZCwg4oCcYW5kIHlvdSBzaGFsbCBzZWUgaGltIHRoZW4u4oCdIApBbmQgdGhlbiDigJQgaGUgdmFuaXNoZWQuIAoKVGhhdCBvbmUgdG91Y2ggZnJvbSB0aGUgTWFzdGVyIGhhZCBzaG93biBoaW0gCndoYXQgdG8gZG8gYW5kIGhvdyB0byBkbyBpdCwgYW5kIGhlIHJ1c2hlZCB0byBmZXRjaCAKdGhlIG9sZGVyIGZyaWVuZCB3aG8gaGFkIHNvIG9mdGVuIGhlbHBlZCBoaW0gYmUtIApmb3JlLiBUaGlzIG9sZGVyIG1hbiBoYWQgbm90IHlldCByZXRpcmVkIGZvciB0aGUgCm5pZ2h0LCBidXQgb24gaGVhcmluZyBDeXJpbOKAmXMgaHVycmllZCBzdW1tb25zLCBoZSAKbG9zdCBubyB0aW1lIGluIGFjY29tcGFueWluZyBoaW0sIGFuZCBpbiBhIGZldyAKbWludXRlcyB0aGV5IHdlcmUgYmFjayBhdCBXYWx0ZXLigJlzIGJlZHNpZGUuIFRoZSAKcG9vciBjaGlsZCB3YXMganVzdCBiZWdpbm5pbmcgdG8gYmVsaWV2ZSBpdCBhbGwgYSAKbG92ZWx5IGRyZWFtLCBhbmQgaGlzIGRlbGlnaHQgYW5kIHJlbGllZiB3aGVuIEN5cmlsIApyZWFwcGVhcmVkIHdlcmUgYmVhdXRpZnVsIHRvIHNlZS4gWWV0IGhvdyBtdWNoIAoKClRIRSBUV08gQlJPVEhFUlMgCgoKNzMgCgoKaW4gb2JlZGllbmNlIHRvIGEgd29yZCBmcm9tIHRoZSBNYXN0ZXIsIHRoZSBlbGRlciAKbWFuIG1hdGVyaWFsaXplZCB0aGUgZWFnZXIgTGFuY2Vsb3QsIGFuZCB0aGUgbGl2aW5nIAphbmQgdGhlIGRlYWQgc3Rvb2QgaGFuZCBpbiBoYW5kIG9uY2UgbW9yZSEgCgpOb3cgaW4gdmVyeSB0cnV0aCBmb3IgYm90aCB0aGUgYnJvdGhlcnMgaGFkIApzb3Jyb3cg4oCZYmVlbiB0dXJuZWQgaW50byBqb3kgdW5zcGVha2FibGUsIGFuZCBhZ2FpbiAKYW5kIGFnYWluIHRoZXkgYm90aCBkZWNsYXJlZCB0aGF0IG5vdyB0aGV5IHNob3VsZCAKbmV2ZXIgZmVlbCBzYWQgYW55IG1vcmUsIGJlY2F1c2UgdGhleSBrbmV3IHRoYXQgCmRlYXRoIGhhZCBubyBwb3dlciB0byBwYXJ0IHRoZW0uIE5vciB3YXMgdGhlaXIgCmdsYWRuZXNzIGRhbXBlZCBldmVuIHdoZW4gQ3lyaWwgZXhwbGFpbmVkIGNhcmUtIApmdWxseSB0byB0aGVtLCBhdCBoaXMgb2xkZXIgZnJpZW5k4oCZcyBzdWdnZXN0aW9uLCB0aGF0IAp0aGlzIHN0cmFuZ2UgcGh5c2ljYWwgcmV1bmlvbiB3b3VsZCBub3QgYmUgcmVwZWF0ZWQsIApidXQgdGhhdCBhbGwgZGF5IGxvbmcgTGFuY2Vsb3Qgd291bGQgYmUgbmVhciAKV2FsdGVyLCBldmVuIHRob3VnaCB0aGUgbGF0dGVyIGNvdWxkIG5vdCBzZWUgCmhpbSwgYW5kIGV2ZXJ5IG5pZ2h0IFdhbHRlciB3b3VsZCBzbGlwIG91dCBvZiAKaGlzIGJvZHkgYW5kIGJlIGNvbnNjaW91c2x5IHdpdGggaGlzIGJyb3RoZXIgCm9uY2UgbW9yZS4gCgpIZWFyaW5nIHRoaXMsIHBvb3Igd2VhcnkgV2FsdGVyIHNhbmsgdG8gc2xlZXAgYXQgCuKAom9uY2UgYW5kIHByb3ZlZCBpdHMgdHJ1dGgsIGFuZCB3YXMgYW1hemVkIHRvIGZpbmQgCndpdGggd2hhdCBoaXRoZXJ0byB1bmtub3duIHJhcGlkaXR5IGhlIGFuZCBoaXMgCmJyb3RoZXIgY291bGQgZmx5IHRvZ2V0aGVyIGZyb20gb25lIHRvIGFub3RoZXIgb2YgCnRoZWlyIG9sZCBmYW1pbGlhciBoYXVudHMuIEN5cmlsIHRob3VnaHRmdWxseSAKd2FybmVkIGhpbSB0aGF0IGhlIHdvdWxkIHByb2JhYmx5IGZvcmdldCBtb3N0IG9mIApoaXMgZnJlZXIgbGlmZSB3aGVuIGhlIGF3b2tlIG5leHQgZGF5OyBidXQgYnkgcmFyZSAKZ29vZCBmb2Z0aW5lIGhlIGRpZCBub3QgZm9yZ2V0LCBhcyBzbyBtYW55IG9mIHVzIGRvLiAKUGVyaGFwcyB0aGUgc2hvY2sgb2YgdGhlIGdyZWF0IGpveSBoYWQgc29tZXdoYXQgCmFyb3VzZWQgdGhlIGxhdGVudCBwc3ljaGljIGZhY3VsdHkgd2hpY2ggYmVsb25ncyB0byAKdGhlIENlbHRpYyBibG9vZDsgYXQgYW55IHJhdGUgaGUgZm9yZ290IG5vIHNpbmdsZSAKZGV0YWlsIG9mIGFsbCB0aGF0IGhhZCBoYXBwZW5lZCwgYW5kIG5leHQgbW9ybmluZyAKCgo3NCAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgpoZSBidXJzdCB1cG9uIHRoZSBob3VzZSBvZiBtb3VybmluZyB3aXRoIGEgd29uLSAKZHJvdXMgdGFsZSB3aGljaCBzdWl0ZWQgaXQgYnV0IGlsbC4gCgpIaXMgcGFyZW50cyB0aG91Z2h0IHRoYXQgZ3JpZWYgaGFkIHR1cm5lZCBoaXMgCmJyYWluLCBhbmQsIHNpbmNlIGhlIGlzIG5vdyB0aGUgaGVpciwgdGhleSBoYXZlIGJlZW4gCndhdGNoaW5nIGxvbmcgYW5kIGFueGlvdXNseSBmb3IgZnVydGhlciBzeW1wdG9tcyAKb2YgaW5zYW5pdHksIHdoaWNoIGhhcHBpbHkgdGhleSBoYXZlIG5vdCBmb3VuZC4gClRoZXkgc3RpbGwgdGhpbmsgaGltIGEgbW9ub21hbmlhYyBvbiB0aGlzIHBvaW50LCwgCnRob3VnaCB0aGV5IGZ1bGx5IHJlY29nbml6ZSB0aGF0IGhpcyDigJxkZWx1c2lvbuKAnSBoYXMgCnNhdmVkIGhpcyBsaWZlOyBidXQgaGlzIG9sZCBudXJzZSAod2hvIGlzIGEgQ2F0aG9saWMpIAppcyBmaXJtIGluIGhlciBiZWxpZWYgdGhhdCBhbGwgaGUgc2F5cyBpcyB0cnVlIOKAlCB0aGF0IAp0aGUgTG9yZCBKZXN1cywgd2hvIHdhcyBvbmNlIGEgQ2hpbGQgSGltc2VsZiwgCnRvb2sgcGl0eSBvbiB0aGF0IG90aGVyIGNoaWxkIGFzIGhlIGxheSBkeWluZyBvZiAKZ3JpZWYsIGFuZCBzZW50IG9uZSBvZiBIaXMgQW5nZWxzIHRvIGJyaW5nIGhpcyAKYnJvdGhlciBiYWNrIHRvIGhpbSBmcm9tIHRoZSBkZWFkIGFzIGEgcmV3YXJkIGZvciAKYSBsb3ZlIHdoaWNoIHdhcyBzdHJvbmdlciB0aGFuIGRlYXRoLiBTb21ldGltZXMgCnBvcHVsYXIgc3VwZXJzdGl0aW9uIGNvbWVzIGEgZ29vZCBkZWFsIG5lYXJlciB0byB0aGUgCmhlYXJ0IG9mIHRoaW5ncyB0aGFuIGRvZXMgZWR1Y2F0ZWQgc2NlcHRpY2lzbSEgCgpOb3IgZG9lcyB0aGUgc3RvcnkgZW5kIGhlcmUsIGZvciB0aGUgZ29vZCB3b3JrIApiZWd1biB0aGF0IG5pZ2h0IGlzIHN0aWxsIHByb2dyZXNzaW5nLCBhbmQgbm9uZSBjYW4gCnNheSBob3cgZmFyIHRoZSBpbmZsdWVuY2Ugb2YgdGhhdCBvbmUgYWN0IG1heSAKcmFtaWZ5LiBXYWx0ZXLigJlzIGFzdHJhbCBjb25zY2lvdXNuZXNzLiwgb25jZSBoYXZpbmcgCmJlZW4gdGh1cyB0aG9yb3VnaGx5IGF3YWtlbmVkLCByZW1haW5zIGluIGFjdGl2aXR5OyAKZXZlcnkgbW9ybmluZyBoZSBicmluZ3MgYmFjayBpbnRvIGhpcyBwaHlzaWNhbCAKYnJhaW4gdGhlIG1lbW9yeSBvZiBoaXMgbmlnaHTigJlzIGFkdmVudGZ0ZXMgd2l0aCAKaGlzIGJyb3RoZXI7IGV2ZXJ5IG5pZ2h0IHRoZXkgbWVldCB0aGVpciBkZWFyIGZyaWVuZCAKQ3lyaWwsIGZyb20gd2hvbSB0aGV5IGhhdmUgbGVhcm5lZCBzbyBtdWNoIGFib3V0IAp0aGUgd29uZGVyZnVsIG5ld+KAmSB3b3JsZCB0aGF0IGhhcyBvcGVuZWQgYmVmb3JlIAp0aGVtLCBhbmQgdGhlIG90aGVyIHdvcmxkcyB0byBjb21lIHRoYXQgbGllIGhpZ2hlciAKCgpUSEUgVFdPIEJST1RIRVJTIAoKCjc1IAoKCnlldC4gVW5kZXIgQ3lyaWzigJlzIGd1aWRhbmNlIHRoZXkgYWxzbyDigJQgdGhlIGxpdmluZyAKYW5kIHRoZSBkZWFkIGFsaWtlIOKAlCBoYXZlIGJlY29tZSBlYWdlciBhbmQgZWFybmVzdCAKbWVtYmVycyBvZiB0aGUgYmFuZCBvZiBoZWxwZXJzOyBhbmQgcHJvYmFibHkgZm9yIAp5ZWFycyB0byBjb21lIOKAlCB1bnRpbCBMYW5jZWxvdOKAmXMgdmlnb3JvdXMgeWZjdW5nIAphc3RyYWwgYm9keSBkaXNpbnRlZ3JhdGVzIOKAlCBtYW55IGEgZHlpbmcgY2hpbGQgd2lsbCAKaGF2ZSBjYXVzZSB0byBiZSBncmF0ZWZ1bCB0byB0aGVzZSB0aHJlZSB3aG8gYXJlIAp0cnlpbmcgdG8gcGFzcyBvbiB0byBvdGhlcnMgc29tZXRoaW5nIG9mIHRoZSBqb3kgCnRoYXQgdGhleSBoYXZlIHRoZW1zZWx2ZXMgcmVjZWl2ZWQuIAoKTm9yIGlzIGl0IHRvIHRoZSBkZWFkIGFsb25lIHRoYXQgdGhlc2UgbmV3IGNvbi0gCnZlcnRzIGhhdmUgYmVlbiBvZiB1c2UsIGZvciB0aGV5IGhhdmUgc291Z2h0IGFuZCAKZm91bmQgc29tZSBvdGhlciBsaXZpbmcgY2hpbGRyZW4gd2hvIHNob3cgY29uLSAKc2Npb3VzbmVzcyBvbiB0aGUgYXN0cmFsIHBsYW5lIGR1cmluZyBzbGVlcDsgYW5kIG9uZSAKYXQgbGVhc3Qgb2YgdGhvc2Ugd2hvbSB0aGV5IGhhdmUgdGh1cyBicm91Z2h0IHRvIApDeXJpbCBoYXMgYWxyZWFkeSBwcm92ZWQgYSB2YWx1YWJsZSBsaXR0bGUgcmVjcnVpdCB0byAKdGhlIGNoaWxkcmVu4oCZcyBiYW5kLCBhcyB3ZWxsIGFzIGEga2luZCBsaXR0bGUgZnJpZW5kIApkb3duIGhlcmUgb24gdGhlIHBoeXNpY2FsIHBsYW5lLiAKClRob3NlIHRvIHdob20gYWxsIHRoZXNlIGlkZWFzIGFyZSBuZXcgc29tZS0gCnRpbWVzIGZpbmQgaXQgZGlmZmljdWx0IHRvIHVuZGVyc3RhbmQgaG93IGNoaWxkcmVuIGNhbiAKYmUgb2YgYW55IHVzZSBpbiB0aGUgYXN0cmFsIHdvcmxkLiBTZWVpbmcsIHRoZXkgCndvdWxkIHNheSwgdGhhdCB0aGUgYXN0cmFsIGJvZHkgb2YgYSBjaGlsZCBtdXN0IGJlIAp1bmRldmVsb3BlZCwsIGFuZCB0aGUgZWdvIHRodXMgbGltaXRlZCBieSBjaGlsZGhvb2QgCm9uIHRoZSBhc3RyYWwgYXMgd2VsbCBhcyB0aGUgcGh5c2ljYWwgcGxhbmUsIGluIHdoYXQgCndhdiBjb3VsZCBzdWNoIGFuIGVnbyBiZSBvZiB1c2UsIG9yIGJlIGFibGUgdG8gaGVscCAKdG93YXJkcyB0aGUgc3Bpcml0dWFsLCBtZW50YWwgYW5kIG1vcmFsIGV2b2x1dGlvbiBvZiAKaHVtYW5pdHksIHdoaWNoIHdlIGFyZSB0b2xkIGlzIHRoZSBjaGllZiBjb25jZXJuIG9mIAp0aGUgaGVscGVycz8gCgpXaGVuIGZpcnN0IHN1Y2ggYSBxdWVzdGlvbiB3YXMgYXNrZWQsIHNob3J0bHkgCmFmdGVyIHRoZSBwdWJsaWNhdGlvbiBvZiBvbmUgb2YgdGhlc2Ugc3RvcmllcyBpbiBvdXIgCgoKNzYgCgoKSU5WSVNJQkxFIEhFTFBFUlMgCgoKbWFnYXppbmUsIEkgc2VudCBpdCB0byBDeXJpbCBoaW1zZWxmLCB0byBzZWUgd2hhdCBoZSAKd291bGQgc2F5IHRvIGl0LCBhbmQgaGlzIGFuc3dlciB3YXMgdGhpczogCgrigJxJdCBpcyBxdWl0ZSB0cnVlLCBhcyB0aGUgd3JpdGVyIHNheXMsIHRoYXQgSSBhbSAKb25secKrdSBib3ksIGFuZCBrbm93IHZlcnkgbGl0dGxlIHlldCwgYW5kIHRoYXQgSSBzaGFsbCAKYmUgbXVjaCBtb3JlIHVzZWZ1bCB3aGVuIEkgaGF2ZSBsZWFybnQgbW9yZS4gQnV0IApJIGFtIGFibGUgdG8gZG8gYSBsaXR0bGUgZXZlbiBub3csIGJlY2F1c2UgdGhlcmUgYXJlIApzbyBtYW55IHBlb3BsZSB3aG8gaGF2ZSBsZWFybnQgbm90aGluZyBhYm91dCAKVGhlb3NvcGh5IHlldCwgdGhvdWdoIHRoZXkgbWF5IGtub3cgdmVyeSBtdWNoIAptb3JlIHRoYW4gSSBkbyBhYm91dCBldmVyeXRoaW5nIGVsc2UuIEFuZCB5b3Ugc2VlIAp3aGVuIHlvdSB3YW50IHRvIGdldCB0byBhIGNlcnRhaW4gcGxhY2UsIGEgbGl0dGxlIGJveSAKd2hvIGtub3dzIHRoZSB3YXkgY2FuIGRvIG1vcmUgZm9yIHlvdSB0aGFuIGEgCmh1bmRyZWQgd2lzZSBtZW4gd2hvIGRvbuKAmXQga25vdyBpdC7igJ0gCgpJdCBtYXkgYmUgYWRkZWQgdGhhdCB3aGVuIGV2ZW4gYSBjaGlsZCBoYXMgYmVlbiAKYXdha2VuZWQgdXBvbiB0aGUgYXN0cmFsIHBsYW5lLCB0aGUgZGV2ZWxvcG1lbnQgCm9mIHRoZSBhc3RyYWwgYm9keSBwcm9jZWVkcyBzbyByYXBpZGx5IHRoYXQgaGUgaXMgdmVyeSAKc29vbiBpbiBhIHBvc2l0aW9uIHVwb24gdGhhdCBwbGFuZSBidXQgbGl0dGxlIGluZmVyaW9yIAp0byB0aGF0IG9mIHRoZSBhd2FrZW5lZCBhZHVsdCwgYW5kIGlzIG9mIGNvdXJzZSBtdWNoIAppbiBhZHZhbmNlLCBzbyBmYXIgYXMgdXNlZnVsbmVzcyBpcyBjb25jZXJuZWQsIG9mIHRoZSAKd2lzZXN0IG1hbiB3aG8gaXMgYXMgeWV0IHVuYXdha2VuZWQuIEJ1dCB1bmxlc3MgCnRoZSBlZ28gZXhwcmVzc2luZyBoaW1zZWxmIHRocm91Z2ggdGhhdCBjaGlsZC1ib2R5IApwb3NzZXNzZXMgdGhlIG5lY2Vzc2FyeSBxdWFsaWZpY2F0aW9uIG9mIGEgZGV0ZXJtaW5lZCAKeWV0IGxvdmluZyBkaXNwb3NpdGlvbiwgYW5kIGhhcyBjbGVhcmx5IG1hbmlmZXN0ZWQgaXQgCmluIGhpcyBwcmV2aW91cyBsaXZlcywgbm8gb2NjdWx0aXN0IHdpbGwgdGFrZSB0aGUgc2VyaS0gCm91cyByZXNwb25zaWJpbGl0eSBvZiBhd2FrZW5pbmcgaGltIHVwb24gdGhlIGFzdHJhbCAKcGxhbmUuIFdoZW4sIGhvd2V2ZXIsIHRoZWlyIGthcm1hIGlzIHN1Y2ggdGhhdCBpdCAKaXMgcG9zc2libGUgZm9yIHRoZW0gdG8gYmUgdGh1cyBhcm91c2VkLCBjaGlsZHJlbiAKb2Z0ZW4gcHJvdmUgbW9zdCBlZmZpY2llbnQgaGVscGVycywgYW5kIHRocm93IHRoZW0tIAoKClRIRSBUV08gQlJPVEhFUlMgCgoKNzcgCgoKd2hpY2ggaXMgYmVhdXRpZnVsIHRvIHNlZS4gQW5kIHNvIGlzIGZ1bGZpbGxlZCBvbmNlIAptb3JlIHRoZSBhbmNpZW50IHByb3BoZWN5IOKAnGEgbGl0dGxlIGNoaWxkIHNoYWxsIGxlYWQgCnRoZW0u4oCdIAoKQW5vdGhlciBxdWVzdGlvbiB0aGF0IHN1Z2dlc3RzIGl0c2VsZiB0byBvbmXigJlzIG1pbmQgCmluIHJlYWRpbmcgdGhpcyBsYXN0IHN0b3J5IG9mIHRoZSB0d28gYnJvdGhlcnMgaXMgdGhpczogCnNpbmNlIEN5cmlsIHdhcyBzb21laG93IGFibGUgdG8gbWF0ZXJpYWxpemUgaGltLSAKc2VsZiBieSBzaGVlciBmb3JjZSBvZiBsb3ZlIGFuZCBwaXR5IGFuZCBzdHJlbmd0aCBvZiAKd2lsbCwgaXMgaXQgbm90IHN0cmFuZ2UgdGhhdCBMYW5jZWxvdCwgd2hvIGhhZCBiZWVuIAp0cnlpbmcgc28gbXVjaCBsb25nZXIgdG8gY29tbXVuaWNhdGUsIGhhZCBub3Qgc3VjLSAKY2VlZGVkIGluIGRvaW5nIHRoZSBzYW1lIHRoaW5nPyAKCldlbGwsIHRoZXJlIGlzIG9mIGNvdXJzZSBubyBkaWZmaWN1bHR5IGluIHNlZWluZyB3aHkgCnBvb3IgTGFuY2Vsb3Qgd2FzIHVuYWJsZSB0byBjb21tdW5pY2F0ZSB3aXRoIGhpcyAKYnJvdGhlciwgZm9yIHRoYXQgaW5hYmlsaXR5IGlzIHNpbXBseSB0aGUgbm9ybWFsIGNvbi0gCmRpdGlvbiBvZiBhZmZhaXJzOyB0aGUgd29uZGVyIGlzIHRoYXQgQ3lyaWwgd2FzIGFibGUgCnRvIG1hdGVyaWFsaXplIGhpbXNlbGYsIG5vdCB0aGF0IExhbmNlbG90IHdhcyBub3QgLiAKTm90IG9ubHksIGhvd2V2ZXIsIHdhcyB0aGUgZmVlbGluZyBwcm9iYWJseSBzdHJvbmdlciAKaW4gQ3lyaWzigJlzIGNhc2UsIGJ1dCBoZSBhbHNvIGtuZXcgZXhhY3RseSB3aGF0IGhlIAp3YW50ZWQgdG8gZG8g4oCUIGtuZXcgdGhhdCBzdWNoIGEgdGhpbmcgYXMgbWF0ZXJpYWxpLSAKemF0aW9uIHdhcyBhIHBvc3NpYmlsaXR5LCBhbmQgaGFkIHNvbWUgZ2VuZXJhbCBpZGVhIAphcyB0byBob3cgaXQgd2FzIGRvbmUg4oCUIHdoaWxlIExhbmNlbG90IG5hdHVyYWxseSAKa25ldyBub3RoaW5nIG9mIGFsbCB0aGlzIHRoZW4sIHRob3VnaCBoZSBkb2VzIG5vdy4gCgoKQ0hBUFRFUiBYSSAKCgpBIFNVSUNJREUgUFJFVkVOVEVEIAoKT25lIGV2ZW5pbmcgSSB3YXMgZGljdGF0aW5nIGluIG15IHJvb20gYXQgQWR5YXIgCmEgbGl0dGxlIGxhdGVyIHRoYW4gdXN1YWwsIHdoZW4gb25lIG9mIG91ciB5b3VuZyAKaGVscGVycyBjYWxsZWQgKGJ5IGFwcG9pbnRtZW50KSBpbiBoaXMgYXN0cmFsIGJvZHkgdG8gCmFjY29tcGFueSBtZSBvbiBteSBuaWdodOKAmXMgcm91bmQuIEkgYXNrZWQgaGltIAp0byB3YWl0IGZvciBhIGZldyBtaW51dGVzIHdoaWxlIEkgZmluaXNoZWQgdGhlIHBpZWNlIApvZiB3b3JrIHVwb24gd2hpY2ggSSB3YXMgdGhlbiBlbmdhZ2VkLCBzbyBoZSAKY2lyY2xlZCBhYm91dCB0aGUgbmVpZ2hib3VyaG9vZCBhIGxpdHRsZSwgYW5kIGhvdmVyZWQgCm92ZXIgdGhlIEJheSBvZiBCZW5nYWwuIFNlZWluZyBhIHBhc3Npbmcgc3RlYW1lciAKaGUgc3dvb3BlZCBkb3duIHVwb24gaXQgKGluIG1lcmUgY3VyaW9zaXR5LCBhcyBoZSAKc2F5cykgYW5kIGFsbW9zdCBpbW1lZGlhdGVseSBoaXMgYXR0ZW50aW9uIHdhcyBhdC0gCnRyYWN0ZWQgYnkgYSBob3JyaWJsZSBncmV5IGF1cmEgb2YgZGVlcCBkZXByZXNzaW9uIApwcm9qZWN0aW5nIHRocm91Z2ggdGhlIGNsb3NlZCBkb29yIG9mIGEgY2FiaW4uIFRydWUgCnRvIGhpcyBpbnN0cnVjdGlvbnMsIG9uIHNpZ2h0IG9mIHN1Y2ggYSBkaXN0cmVzcy1zaWduYWwgCmhlIGF0IG9uY2UgcHJvY2VlZGVkIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIsIGFuZCBvbiAKZW50ZXJpbmcgdGhlIHJvb20gaGUgZm91bmQgYSBtYW4gc2l0dGluZyBvbiB0aGUgCnNpZGUgb2YgYSBidW5rIHdpdGggYSBwaXN0b2wgaW4gaGlzIGhhbmQsIHdoaWNoIGhlIApyYWlzZWQgdG8gaGlzIGZvcmVoZWFkIGFuZCB0aGVuIGxhaWQgZG93biBhZ2Fpbi4gClRoZSB5b3VuZyBoZWxwZXIgZmVsdCB0aGF0IHNvbWV0aGluZyBvdWdodCB0byBiZSAKZG9uZSBwcm9tcHRseSwgYnV0IGJlaW5nIG5ldyB0byB0aGUgd29yayBoZSBkaWQgCm5vdCBxdWl0ZSBrbm93IGhvdyB0byBhY3QgZm9yIHRoZSBiZXN0LCBzbyBoZSB3YXMgCgoKQSBTVUlDSURFIFBSRVZFTlRFRCAKCgo3OSAKCgppbiBteSByb29tIGFnYWluIGluIGEgZmxhc2ggKGFuZCBpbiBhIGdyZWF0IHN0YXRlIG9mIApleGNpdGVtZW50KSBjcnlpbmc6IAoKdSBDb21lIGF0IG9uY2U7IGhlcmUgaXMgYSBtYW4gZ29pbmcgdG8ga2lsbCAKaGltc2VsZiHigJ0gCgpJIHN0b3BwZWQgZGljdGF0aW5nLCB0aHJldyBteSBib2R5IG9uIHRvIGEgc29mYSwgCmFuZCBhY2NvbXBhbmllZCBoaW0gdG8gdGhlIHNoaXAuIEFzIHNvb24gYXMgSSAKZ3Jhc3BlZCB0aGUgc3RhdGUgb2YgYWZmYWlycywgSSBkZWNpZGVkIHRvIHRlbXBvcml6ZSwgCmFzIEkgaGFkIHRvIHJldHVybiBhbmQgZmluaXNoIHRoZSB3b3JrIHVwb24gd2hpY2ggSSAKaGFkIGJlZW4gZW5nYWdlZDsgc28gSSBzdHJvbmdseSBpbXByZXNzZWQgdXBvbiB0aGUgCndvdWxkLWJlIHN1aWNpZGXigJlzIG1pbmQgdGhhdCB0aGlzIHdhcyBub3QgdGhlIHRpbWUgCmZvciBoaXMgcmFzaCBhY3Qg4oCUIHRoYXQgaGUgc2hvdWxkIHdhaXQgdW50aWwgdGhlIG1pZC0gCmRsZSB3YXRjaCwgd2hlbiBoZSB3IFQgb3VsZCBub3QgYmUgZGlzdHVyYmVkLiBJZiBJIApoYWQgdHJpZWQgdG8gaW1wcmVzcyB0aGUgdGhvdWdodCBvZiB0aGUgd2lja2VkbmVzcyAKb2Ygc3VpY2lkZSB1cG9uIGhpcyBicmFpbiBoZSB3b3VsZCBoYXZlIGJlZ3VuIHRvIAphcmd1ZSwgYW5kIEkgaGFkIG5vIHRpbWUgZm9yIHRoYXQ7IGJ1dCBoZSBpbnN0YW50bHkgCmFjY2VwdGVkIHRoZSBpZGVhIG9mIHBvc3Rwb25lbWVudC4gSSBsZWZ0IG15IHlvdW5nIAphc3Npc3RhbnQgaW4gY2hhcmdlLCB0ZWxsaW5nIGhpbSB0byBmbHkgYXQgb25jZSBmb3IgbWUgCmlmIHRoZSBtYW4gc28gbXVjaCBhcyBvcGVuZWQgdGhlIGRyYXdlciBpbiB3aGljaCAKSSBoYWQgbWFkZSBoaW0gcHV0IHRoZSBwaXN0b2wuIFRoZW4gSSByZXR1cm5lZCB0byAKbXkgYm9keSBhbmQgZGlkIGEgbGl0dGxlIG1vcmUgZGljdGF0aW9uLCBicmluZ2luZyAKdGhlIHdvcmsgdG8gYSBwb2ludCB3aGVyZSBpdCBjb3VsZCBiZSBjb252ZW5pZW50bHkgCmxlZnQgZm9yIHRoZSBuaWdodC4gCgpBcyB0d2VsdmUgb+KAmWNsb2NrIGFwcHJvYWNoZWQgSSByZXR1cm5lZCB0byByZWxpZXZlIApteSB5b3VuZyBoZWxwZXIsIHdob20gSSBmb3VuZCBpbiBhIHZlcnkgYW54aW91cyAKZnJhbWUgb2YgbWluZCwgdGhvdWdoIGhlIHJlcG9ydGVkIHRoYXQgbm90aGluZyAKcGFydGljdWxhciBoYWQgb2NjdXJyZWQuIFRoZSB3b3VsZC1iZSBzdWljaWRlIHdhcyAKc3RpbGwgaW4gdGhlIHNhbWUgc3RhdGUgb2YgZGVwcmVzc2lvbiwgYW5kIGhpcyByZXNvbHUtIAp0aW9uIGhhZCBub3Qgd2F2ZXJlZC4gSSB0aGVuIHByb2NlZWRlZCB0byBpbnZlc3RpZ2F0ZSAKCgo4MCAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgp0aGUgcmVhc29ucyBpbiBoaXMgbWluZCwgYW5kIGZvdW5kIHRoYXQgaGUgd2FzIApvbmUgb2YgdGhlIHNoaXDigJlzIG9mZmljZXJzLCBhbmQgdGhhdCB0aGUgaW1tZWRpYXRlIApjYXVzZSBvZiBoaXMgZGVwcmVzc2lvbiB3YXMgdGhlIGZhY3QgdGhhdCBoZSBoYWQgYmVlbiAKZ3VpbHR5IG9mIHNvbWUgZGVmYWxjYXRpb25zIGluIGNvbm5lY3Rpb24gd2l0aCB0aGUgCnNoaXDigJlzIGFjY291bnRzLCB3aGljaCB3b3VsZCBpbmV2aXRhYmx5IGJlIHNob3J0bHkgCmRpc2NvdmVyZWQsIGFuZCBoZSB3YXMgdW5hYmxlIHRvIGZhY2UgdGhlIGNvbnNlLSAKcXVlbnQgZXhwb3N1cmUgYW5kIGRpc2dyYWNlLiBJdCB3YXMgaW4gb3JkZXIgdG8gCnN0YW5kIHdlbGwgd2l0aCBhIGNlcnRhaW4geW91bmcgbGFkeSBhbmQgdG8gbWFrZSAKZXh0cmF2YWdhbnQgcHJlc2VudHMgdG8gaGVyIHRoYXQgaGUgaGFkIG5lZWRlZCwgb3IgCnRob3VnaHQgaGUgbmVlZGVkLCB0aGUgbW9uZXk7IGFuZCB3aGlsZSB0aGUgYWN0dWFsIAphbW91bnQgaW52b2x2ZWQgd2FzIGJ5IG5vIG1lYW5zIGEgbGFyZ2Ugb25lLCBpdCAKd2FzIHN0aWxsIGZhciBiZXlvbmQgaGlzIHBvd2VyIHRvIHJlcGxhY2UgaXQuIAoKSGUgc2VlbWVkIGEgZ29vZC1oZWFydGVkIHlvdW5nIGZlbGxvdywgd2l0aCBhIApmYWlybHkgY2xlYW4gcmVjb3JkIGJlaGluZCBoaW0sIGFuZCAoZXhjZXB0IGZvciBoaXMgCmluZmF0dWF0aW9uIGFib3V0IHRoZSBnaXJsLCB3aGljaCBoYWQgbGVkIGhpbSBpbnRvIApzbyBzZXJpb3VzIGFuIGVycm9yKSBhIHNlbnNpYmxlIGFuZCBob25vdXJhYmxlIG1hbi4gCkdsYW5jaW5nIGJhY2sgaHVycmllZGx5IG92ZXIgaGlzIGhpc3RvcnkgdG8gZmluZCAKc29tZSBsZXZlciBieSB3aGljaCB0byBtb3ZlIGhpbSBmcm9tIGhpcyBjdWxwYWJsZSAKZGV0ZXJtaW5hdGlvbiwgSSBmb3VuZCB0aGF0IHRoZSBtb3N0IHBvd2VyZnVsIAp0aG91Z2h0IGZvciB0aGF0IHB1cnBvc2Ugd2FzIHRoYXQgb2YgYW4gYWdlZCBtb3RoZXIgCmF0IGhvbWUsIHRvIHdob20gaGUgd2FzIGRlYXIgYmV5b25kIGFsbCBvdGhlcnMuIApJdCB3YXMgZWFzeSB0byBpbXByZXNzIHRoZSBtZW1vcnkgb2YgaGVyIGZvcm0gCnN0cm9uZ2x5IHVwb24gaGltLCB0byBtYWtlIGhpbSB0YWtlIG91dCBhIHBvcnRyYWl0IApvZiBoZXIsIGFuZCB0aGVuIHRvIHNob3cgaGltIGhvdyB0aGlzIGFjdCB3b3VsZCAKcnVpbiB0aGUgcmVtYWluZGVyIG9mIGhlciBsaWZlLCBieSBwbHVuZ2luZyBoZXIgaW50byAKaW5leHRpbmd1aXNoYWJsZSBzb3Jyb3csIG5vdCBvbmx5IGJlY2F1c2Ugb2YgaGVyIApsb3NzIG9mIGhpbSBvbiB0aGUgcGh5c2ljYWwgcGxhbmUsIGJ1dCBhbHNvIGJlY2F1c2UgCm9mIGhlciBkb3VidHMgYXMgdG8gdGhlIGZhdGUgb2YgaGlzIHNvdWwgaGVyZWFmdGVyLSBJdCAKCgpBIFNVSUNJREUgUFJFVkVOVEVEIAoKCjgxIAoKCndhcyBuZWNlc3NhcnkgYWxzbyB0byBkaXNjb3ZlciBhIHdheSBvZiBlc2NhcGUgZnJvbSAKdGhlIGRpbGVtbWEgaW4gd2hpY2ggaGUgaGFkIHNvIGZvb2xpc2hseSBwbGFjZWQgCmhpbXNlbGY7IHNvIEkgZXhhbWluZWQgdGhlIGNhcHRhaW4gb2YgdGhlIHN0ZWFtZXIgCmFuZCwgZmluZGluZyBoaW0gYSBtYW4gb2YgdW5kZXJzdGFuZGluZyBhbmQgb2YgCmtpbmRseSBoZWFydCwgaXQgc2VlbWVkIHRvIG1lIGZlYXNpYmxlIHRvIHN1Z2dlc3QgYW4gCmFwcGVhbCB0byBoaW0uIAoKVGhpcyB0aGVuIHdhcyB0aGUgaWRlYSB3aGljaCBJIHB1dCBpbnRvIHRoZSAKeW91bmcgbWFuJ3MgbWluZCDigJQgdGhhdCwgaW4gb3JkZXIgdG8gYXZvaWQgdGhlIAphd2Z1bCBzb3Jyb3cgd2hpY2ggaGlzIHN1aWNpZGUgbXVzdCBpbmV2aXRhYmx5IApicmluZyB0byB0aGUgaGVhcnQgb2YgaGlzIG1vdGhlciwgaGUgbXVzdCBmYWNlIHRoZSAKYWxtb3N0IGltcG9zc2libGUgYWx0ZXJuYXRpdmUgb2YgZ29pbmcgdG8gaGlzIGNhcHRhaW4sIApsYXlpbmcgdGhlIHdob2xlIGNhc2UgYmVmb3JlIGhpbSwgYW5kIGFza2luZyBmb3IgYSAKdGVtcG9yYXJ5IHN1c3BlbnNpb24gb2YganVkZ21lbnQgdW50aWwgaGUgc2hvdWxkIApwcm92ZSBoaW1zZWxmIHRvIGJlIHdvcnRoeSBvZiBzdWNoIGNsZW1lbmN5LiBTbyAKdGhlIHlvdW5nIG9mZmljZXIgYWN0dWFsbHkgd2VudCwgdGhlbiBhbmQgdGhlcmUsIGluIAp0aGUgZGVhZCBvZiBuaWdodC4gQSBzYWlsb3IgaXMgZXZlciBvbiB0aGUgYWxlcnQsIAphbmQgaXQgd2FzIG5vdCBkaWZmaWN1bHQgdG8gYXJyYW5nZSB0aGF0IHRoZSBjYXB0YWluIApzaG91bGQgYmUgYXdha2UgYW5kIHNob3VsZCBhcHBlYXIgYXQgaGlzIGRvb3IganVzdCAKYXQgdGhlIHJpZ2h0IG1vbWVudC4gVGhlIHdob2xlIHN0b3J5IHdhcyB0b2xkIGluIApsZXNzIHRoYW4gaGFsZiBhbiBob3VyLCBhbmQgd2l0aCBtdWNoIGZhdGhlcmx5IAphZHZpY2UgZnJvbSB0aGUga2luZCBjYXB0YWluIHRoZSBtYXR0ZXIgd2FzIHNldHRsZWQ7IAp0aGUgYW1vdW50IGFwcHJvcHJpYXRlZCB3YXMgcmVwbGFjZWQgYnkgdGhlIApjYXB0YWluLCB0byBiZSByZXBhaWQgdG8gaGltIGJ5IHRoZSBvZmZpY2VyIGluIHN1Y2ggCmluc3RhbG1lbnRzIGFzIGhlIGNvdWxkIGFmZm9yZCwgYW5kIHRodXMgYSB5b3VuZyAKYW5kIHByb21pc2luZyBsaWZlIHdhcyBzYXZlZC4gCgoKNiAKCgpDSEFQVEVSIFhJSSAKCgpUSEUgTE9TVCBCT1kgCgpUbyBzaG93IHRoZSBkaXZlcnNpdHkgb2YgdGhlIGFzdHJhbCB3b3JrIHRoYXQgb3BlbnMgCmJlZm9yZSB1cywgSSB3aWxsIG1lbnRpb24gYW5vdGhlciBjYXNlIGluIHdoaWNoIHRoZSAKc2FtZSB5b3VuZyBuZW9waHl0ZSB3YXMgZW5nYWdlZCB3aXRoaW4gYSBmZXcgCmRheXMgb2YgdGhhdCBkZXNjcmliZWQgYWJvdmUuIAoKRXZlcnkgYXN0cmFsIHdvcmtlciBoYXMgYWx3YXlzIG9uIGhhbmQgYSBjZXJ0YWluIApudW1iZXIgb2YgcmVndWxhciBjYXNlcywgd2hvIGZvciB0aGUgdGltZSBuZWVkIApuaWdodGx5IHZpc2l0cywganVzdCBhcyBhIGRvY3RvciBoYXMgYSBkYWlseSByb3VuZCBpbiAKd2hpY2ggaGUgY2FsbHMgdXBvbiBhIG51bWJlciBvZiBwYXRpZW50czsgc28gd2hlbiAKbmVvcGh5dGVzIGFyZSBkZWxpdmVyZWQgaW50byBteSBjaGFyZ2UgZm9yIGluc3RydWMtIAp0aW9uIEkgYWx3YXlzIHRha2UgdGhlbSB3aXRoIG1lIG9uIHRob3NlIHJvdW5kcywgCmp1c3QgYXMgYW4gb2xkZXIgZG9jdG9yIG1pZ2h0IHRha2Ugd2l0aCBoaW0gYSAKeW91bmdlciBtYW4gaW4gb3JkZXIgdGhhdCBoZSBtaWdodCBnYWluIGV4cGVyaWVuY2UgCmJ5IHdhdGNoaW5nIGhvdyBjYXNlcyBhcmUgdHJlYXRlZC4gT2YgY291cnNlLCB0aGVyZSAKaXMgb3RoZXIgZGVmaW5pdGUgdGVhY2hpbmcgdG8gYmUgZ2l2ZW47IHRoZSBiZWdpbm5lciAKbXVzdCBwYXNzIHRoZSB0ZXN0cyBvZiBlYXJ0aCwgd2F0ZXIsIGFpciBhbmQgZmlyZTsgaGUgCm11c3QgbGVhcm4gYnkgY29uc3RhbnQgcHJhY3RpY2UgaG93IHRvIGRpc3Rpbmd1aXNoIApiZXR3ZWVuIHRob3VnaHQtZm9ybXMgYW5kIGxpdmluZyBiZWluZ3M7IGhvdyB0byAKa25vdyBhbmQgdXNlIHRoZSAyLDQwMSB2YXJpZXRpZXMgb2YgZWxlbWVudGFsIAplc3NlbmNlOyBob3cgdG8gbWF0ZXJpYWxpemUgaGltc2VsZiBvciBvdGhlcnMgd2hlbiAKCgpUSEUgTE9TVCBCT1kgCgoKODMgCgoKbmVjZXNzYXJ5OyBob3cgdG8gZGVhbCB3aXRoIHRoZSB0aG91c2FuZHMgb2YgZW1lci0gCmdlbmNpZXMgd2hpY2ggYXJlIGNvbnN0YW50bHkgYXJpc2luZzsgYWJvdmUgYWxsLCBoZSAKbXVzdCBsZWFybiBuZXZlciB1bmRlciBhbnkgY2lyY3Vtc3RhbmNlcyB0byBsb3NlIApoaXMgYmFsYW5jZSBvciBhbGxvdyBoaW1zZWxmIHRvIGZlZWwgdGhlIGxlYXN0IHRpbmdlIApvZiBmZWFyLCBubyBtYXR0ZXIgaG93IGFsYXJtaW5nIG9yIHVudXN1YWwgbWF5IApiZSB0aGUgbWFuaWZlc3RhdGlvbnMgd2hpY2ggb2NjdXIuIFRoZSBwcmltYXJ5IApuZWNlc3NpdHkgZm9yIGFuIGFzdHJhbCB3b3JrZXIgaXMgYWx3YXlzIHRvIHJlbWFpbiAKbWFzdGVyIG9mIHRoZSBzaXR1YXRpb24sIHdoYXRldmVyIGl0IG1heSBiZS4gSGUgCm11c3QgYWxzbyBiZSBmdWxsIG9mIGxvdmUgYW5kIG9mIGVhZ2VyIGRlc2lyZSB0byBoZWxwOyAKYnV0IHRoZXNlIHF1YWxpZmljYXRpb25zIDEgZG8gbm90IG5lZWQgdG8gdGVhY2gsIGZvciAKdW5sZXNzIHRoZSBjYW5kaWRhdGUgYWxyZWFkeSBwb3NzZXNzZWQgdGhlbSBoZSAKd291bGQgbm90IGJlIHNlbnQgdG8gbWUuIAoKSSB3YXMgb24gbXkgd2F5IG9uZSBuaWdodCB0byB2aXNpdCBjZXJ0YWluIG9mIG15IApyZWd1bGFyIGNhc2VzLCBhbmQgd2FzIHBhc3Npbmcgb3ZlciBhIHBpY3R1cmVzcXVlIAphbmQgaGlsbHkgcGFydCBvZiB0aGUgY291bnRyeS4gTXkgYXR0ZW5kYW50IApuZW9waHl0ZXMgd2VyZSByYW5naW5nIGFib3V0IGFuZCBzd2VlcGluZyBvdmVyIAphcmVhcyBvZiBhZGpvaW5pbmcgbGFuZCwgYXMgbmVvcGh5dGVzIHdpbGwg4oCUIGp1c3QgYXMgCmEgZm94LXRlcnJpZXIgcnVucyBvbiBhaGVhZCBhbmQgcmV0dXJucyBhZ2FpbiBhbmQgCm1ha2VzIGV4Y3Vyc2lvbnMgb24gZWFjaCBzaWRlLCBhbmQgY292ZXJzIHRocmVlIG9yIApmb3VyIHRpbWVzIHRoZSBncm91bmQgdHJvZGRlbiBieSB0aGUgbWFuIHdob20gaGUgCmFjY29tcGFuaWVzLiBNeSB5b3VuZyBmcmllbmQsIHdobyBoYWQgYSBmZXcgZGF5cyAKYmVmb3JlIHNhdmVkIHRoZSBsaWZlIG9mIHRoZSBvZmZpY2VyLCBzdWRkZW5seSBjYW1lIApydXNoaW5nIHVwIGluIGhpcyB1c3VhbCBpbXB1bHNpdmUgd2F5IHRvIHNheSB0aGF0IApoZSBoYWQgZGlzY292ZXJlZCBzb21ldGhpbmcgd3Jvbmcg4oCUIGEgYm95IGR5aW5nIApkb3duIHVuZGVyIHRoZSBncm91bmQsIGFzIGhlIHB1dCBpdC4gCgpJbnZlc3RpZ2F0aW9uIHNvb24gcmV2ZWFsZWQgYSBjaGlsZCBvZiBwZXJoYXBzIAplaWdodCB5ZWFycyBvbGQgbG9zdCBpbiB0aGUgaW5tb3N0IHJlY2Vzc2VzIG9mIGEgaHVnZSAKY2F2ZXJuLCBmYXIgZnJvbSB0aGUgbGlnaHQgb2YgZGF5LCBhcHBhcmVudGx5IGR5aW5nIAoKCjg0IAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCm9mIGh1bmdlciwgdGhpcnN0IGFuZCBkZXNwYWlyLiBUaGUgY2FzZSByZW1pbmRlZCAKbWUgc29tZXdoYXQgb2YgdGhlIEFuZ2VsIHN0b3J5IGluIGNoYXB0ZXIgdmlpLCBhbmQgCnNlZW1lZCB0byByZXF1aXJlIG11Y2ggdGhlIHNhbWUga2luZCBvZiB0cmVhdC0gCm1lbnQ7IHNvIG9uIHRoaXMgb2NjYXNpb24sIGFzIG9uIHRoYXQsIEkgbWF0ZXJpYWxpemVkIAp0aGUgeW91bmcgaGVscGVyIOKAlCBub3QgQ3lyaWwgdGhpcyB0aW1lLCBidXQgYSBib3kgb2YgCmFub3RoZXIgcmFjZS4gSW4gdGhpcyBpbnN0YW5jZSBpdCB3YXMgbmVjZXNzYXJ5IAphbHNvIHRvIHByb3ZpZGUgYSBsaWdodCwgYXMgd2Ugd2VyZSBwaHlzaWNhbGx5IGluIAp1dHRlciBkYXJrbmVzczsgc28gdGhlIGhhbGYtZmFpbnRpbmcgY2hpbGQgd2FzIHJvdXNlZCAKZnJvbSBoaXMgc3R1cG9yIGJ5IGZpbmRpbmcgYSBib3kgd2l0aCBhbiBhbWF6aW5nbHkgCmJyaWxsaWFudCBsYW50ZXJuIGJlbmRpbmcgb3ZlciBoaW0uIFRoZSBmaXJzdCBhbmQgCm1vc3QgcHJlc3NpbmcgbmVlZCB3YXMgb2J2aW91c2x5IHdhdGVyLCBhbmQgdGhlcmUgCndhcyBhIHJpbGwgbm90IGZhciBhd2F5LCB0aG91Z2ggdGhlIGV4aGF1c3RlZCBjaGlsZCAKY291bGQgbm90IGhhdmUgcmVhY2hlZCBpdC4gV2UgaGFkIG5vIGN1cDsgd2UgCmNvdWxkIGhhdmUgbWFkZSBvbmUsIG9mIGNvdXJzZSwgYnV0IG15IGVhZ2VyIApuZW9waHl0ZSBkaWQgbm90IHRoaW5rIG9mIHRoYXQsIGJ1dCBydXNoZWQgb2ZmIGFuZCAKYnJvdWdodCBhIGRyaW5rIG9mIHdhdGVyIGluIGhpcyBob2xsb3dlZCBoYW5kcyAKVGhpcyByZXZpdmVkIHRoZSBjaGlsZCBzbyBtdWNoIHRoYXQgaGUgd2FzIGFibGUgdG8gCnNpdCB1cCwgYW5kIGFmdGVyIHR3byBtb3JlIHNpbWlsYXJseSBwcm92aWRlZCAKZHJhdWdodHMgaGUgY291bGQgc3BlYWsgYSBsaXR0bGUuIAoKSGUgc2FpZCB0aGF0IGhlIGxpdmVkIGluIHRoZSBuZXh0IHZhbGxleSwgYnV0IG9uIApyaXNpbmcgdGhyb3VnaCB0aGUgZWFydGggYW5kIGxvb2tpbmcgcm91bmQgKGxlYXZpbmcgCm15IG1hdGVyaWFsaXplZCBib3kgdG8gY2hlZXIgdGhlIHN1ZmZlcmVyLCBzbyB0aGF0IApoZSBzaG91bGQgbm90IGZlZWwgZGVzZXJ0ZWQpIEkgY291bGQgbm90IGZpbmQgYW55LSAKdGhpbmcgYW5zd2VyaW5nIHRvIGhpcyBkZXNjcmlwdGlvbiwgYW5kIEkgaGFkIHRvIApyZXR1cm4gdG8gdGhlIGNoaWxkIGFuZCBtYWtlIGhpbSB0aGluayBvZiBoaXMgaG9tZSwgCnNvIGFzIHRvIGhhdmUgYSBtZW50YWwgcGljdHVyZSBvZiBpdCwgYW5kIHRoZW4gaXNzdWUgCmZvcnRoIGFnYWluIHdpdGggdGhlIGltYWdlIHBob3RvZ3JhcGhlZCBpbiBteSAKbWluZC4gVGhlbiBJIGZvdW5kIHRoZSBob3VzZSwgYnV0IGZ1cnRoZXIgYXdheSAKCgpUSEUgTE9TVCBCT1kgCgoKODUgCgoKdGhhbiBoZSBoYWQgZGVzY3JpYmVkIGl0LiBUaGVyZSB3ZXJlIHNldmVyYWwgcGVvcGxlIAp0aGVyZSwgYW5kIEkgdHJpZWQgdG8gaW1wcmVzcyB0aGVtIHdpdGggdGhlIGNoaWxk4oCZcyAKcHJlZGljYW1lbnQsIGJ1dCB3YXMgdW5mb3J0dW5hdGVseSB1bnN1Y2Nlc3NmdWw7IApub3Qgb25lIG9mIHRoZW0gc2VlbWVkIGluIHRoZSBsZWFzdCByZWNlcHRpdmUsIGFuZCAKSSBjb3VsZCBub3QgY29udmV5IG15IGlkZWFzIGNsZWFybHkgdG8gdGhlbS4gVGhleSAKd2VyZSBtdWNoIHRyb3VibGVkIGFib3V0IHRoZSBjaGlsZOKAmXMgYWJzZW5jZSwgYW5kIApoYWQgYmVlbiBzZWVraW5nIGZvciBoaW07IGluZGVlZCB0aGV5IGhhZCBqdXN0IHNlbnQgCnRvIGdhdGhlciB0b2dldGhlciBzb21lIG5laWdoYm91cnMgZnJvbSB0aGVpciB2YWxsZXlzIAp0byBtYWtlIGEgbW9yZSB0aG9yb3VnaCBzZWFyY2g7IGFuZCBwZXJoYXBzIGl0IAptYXkgaGF2ZSBiZWVuIHBhcnRseSBiZWNhdXNlIG9mIHRoZWlyIHByZW9jY3VwYS0gCnRpb24gdGhhdCB0aGV5IHdlcmUgaG9wZWxlc3NseSB1bmltcHJlc3NpYmxlLiAKCkxvbmcgZW5vdWdoIHBlcnNpc3RlbmNlIHdvdWxkIHByb2JhYmx5IGhhdmU6IApicm9rZW4gZG93biB0aGUgYmFycmllcnMsIGJ1dCB0aGUgY2hpbGTigJlzIHN0YXRlIGxlZnQgCnVzIG5vIHRpbWUgZm9yIHRoYXQsIHNvIEkgYWJhbmRvbmVkIHRoZSB0YXNrIGFuZCAKbG9va2VkIHJvdW5kIGZvciBhdmFpbGFibGUgZm9vZCB0byBkZW1hdGVyaWFsaXplLCBmb3IgCmFzIGl0IHdhcyB0aGUgY2hpbGTigJlzIG93biBob21lIEkgZmVsdCB0aGF0IGhlIGhhZCBhIApyaWdodCB0byBpdCwgYW5kIHRoYXQgaXQgd291bGQgbm90IGJlIGRpc2hvbmVzdCB0byAKdGFrZSBpdC4gSSBodXJyaWVkbHkgc2VsZWN0ZWQgc29tZSBicmVhZCwgc29tZSAKY2hlZXNlLCBhbmQgdHdvIGZpbmUgYmlnIGFwcGxlcywgYW5kIGhhc3RlbmVkIGJhY2sgCnRvIHRoZSBjYXZlLCBhbmQgcmVtYXRlcmlhbGl6ZWQgdGhpcyBtaXNjZWxsYW5lb3VzIApwbHVuZGVyIGluIHRoZSBlYWdlciBoYW5kcyBvZiBteSBuZW9waHl0ZSwgd2hvIApwcm9jZWVkZWQgdG8gZmVlZCB0aGUgY2hpbGQuIFRoZSBsYXR0ZXIgd2FzIHNvb24gCmFibGUgdG8gYXR0ZW5kIHRvIGhpcyBvd24gd2FudHMsIGFuZCBxdWlja2x5IGZpbmlzaGVkIApldmVyeSBzY3JhcCB0aGF0IEkgaGFkIGJyb3VnaHQsIGFuZCBhc2tlZCBmb3IgbW9yZS4gCgpJIGZlYXJlZCBsZXN0IHRvbyBtdWNoLCBhZnRlciBhIHByb2xvbmdlZCBmYXN0LCBzaG91bGQgCmRvIG1vcmUgaGFybSB0aGFuIGdvb2QsIHNvIEkgdG9sZCBteSByZXByZXNlbnRhLSAKdGl2ZSB0byBzYXkgdGhhdCBoZSBoYWQgbm8gbW9yZSwgYW5kIHRoYXQgd2UgbXVzdCAKbm93IHRyeSB0byBjbGltYiBvdXQgb2YgdGhlIGNhdmUuIAoKCjg2IAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCldpdGggYSB2aWV3IHRvIHRoYXQgSSBzdWdnZXN0ZWQgdG8gbXkgYm95IHRvIGFzayAKdGhlIG90aGVyIGhvdyBoZSBjYW1lIHRvIGJlIHRoZXJlLiBIaXMgc3Rvcnkgd2FzIAp0aGF0IGhlIGhhZCBiZWVuIHJhbWJsaW5nIGFib3V0IG9uIHRoZSBoaWxscyBpbiBhIAp2YWxsZXkgbmVhciBoaXMgaG9tZSwgYW5kIGhhZCBvYnNlcnZlZCBhIHNtYWxsIGNhdmUgCmluIHRoZSBoaWxsLXNpZGUsIHdoaWNoIGhlIGhhZCBuZXZlciBub3RpY2VkIGJlZm9yZS4gCkhlIG5hdHVyYWxseSB3ZW50IGluIHRvIGludmVzdGlnYXRlLCBidXQgaGUgaGFkIG5vdCAKd2Fsa2VkIG1vcmUgdGhhbiBhIGZldyB5YXJkcyB3aGVuIHRoZSBmbG9vciBvZiB0aGUgCmNhdmUgZ2F2ZSB3YXkgdW5kZXIgaGltLCBhbmQgaGUgd2FzIHByZWNpcGl0YXRlZCAKaW50byBhIGZhciB2YXN0ZXIgY2F2ZXJuIGJlbmVhdGguIEZyb20gaGlzIGFjY291bnQgCmhlIG11c3QgaGF2ZSBiZWVuIHN0dW5uZWQgZm9yIGEgdGltZSwgZm9yIHdoZW4gaGUgCuKAnGF3b2tlLCDigJ0gYXMgaGUgcHV0IGl0LCBpdCB3YXMgcXVpdGUgZGFyaywgYW5kIGhlIApjb3VsZCBub3Qgc2VlIHRoZSBob2xlIHRocm91Z2ggd2hpY2ggaGUgaGFkIGZhbGxlbi4gCldlIGFmdGVyd2FyZHMgaW5zcGVjdGVkIHRoZSBzcG90IGFuZCB3b25kZXJlZCAKdGhhdCBoZSBoYWQgbm90IGJlZW4gYmFkbHkgaHVydCwgZm9yIHRoZSBmYWxsIHdhcyAKY29uc2lkZXJhYmxlOyBidXQgaXQgaGFkIGJlZW4gYnJva2VuIGZvciBoaW0gYnkgCnRoZSBmYWN0IHRoYXQgYSBtYXNzIG9mIHNvZnQgZWFydGggaGFkIGZhbGxlbiB1bmRlci0gCm5lYXRoIGhpbS4gCgpJdCB3YXMgaW1wb3NzaWJsZSB0byBicmluZyBoaW0gdXAgdGhhdCB3YXksIGZvciAKdGhlIHNpZGVzIG9mIHRoZSBjYXZlIHdlcmUgc21vb3RoIGFuZCBwZXJwZW5kaS0gCmN1bGFyOyBiZXNpZGVzLCBoZSBoYWQgd2FuZGVyZWQgZm9yIHR3byB3aG9sZSBkYXlzIAphbW9uZyB0aGUgZ2FsbGVyaWVzIGFuZCB3YXMgbm93IHNvbWUgbWlsZXMgZnJvbSAKdGhhdCBzcG90LiBBZnRlciBhIGdvb2QgZGVhbCBvZiBwcm9zcGVjdGluZyB3ZSAKZm91bmQsIHdpdGhpbiBhIHJlYXNvbmFibGUgZGlzdGFuY2UsIGEgcGxhY2Ugd2hlcmUgYSAKbGl0dGxlIHN0cmVhbSBwYXNzZWQgZnJvbSB0aGUgY2F2ZSBpbnRvIHRoZSBvcGVuIGFpciAKb24gdGhlIGhpbGwtc2lkZTsgdGhlIGNoaWxkLCBub3cgc3RyZW5ndGhlbmVkIGJ5IApmb29kIGFuZCBkcmluaywgd2FzIGFibGUgdG8gd2FsayB0aGVyZSwgYW5kIHRoZSB0d28gCmJveXMgc29vbiBlbmxhcmdlZCB0aGUgb3BlbmluZyB3aXRoIHRoZWlyIGhhbmRzIHNvIAp0aGF0IGhlIHdhcyBhYmxlIHRvIGNyYXdsIG91dC4gSXQgd2FzIGV2aWRlbnQgdGhhdCAKCgpUSEUgTE9TVCBCT1kgCgoKODcgCgoKbm93IGhlIHdvdWxkIGJlIGFibGUgdG8gZmluZCBoaXMgd2F5IGhvbWUgaW4gYW55IApjYXNlLCBhbmQgd2UgYWxzbyBob3BlZCB0byBiZSBhYmxlIHRvIGluZmx1ZW5jZSAKc29tZSBvZiB0aGUgc2VhcmNoZXJzIHRvIGNvbWUgaW4gdGhhdCBkaXJlY3Rpb24sIApzbyB0aGlzIHNlZW1lZCBhIGZhdm91cmFibGUgb3Bwb3J0dW5pdHkgdG8gcGFydCAKY29tcGFueS4gCgpUaGUgZmF0aGVyIGhhZCBhIHBsYW4gb2Ygc2VhcmNoIGZpeGVkIGluIGhpcyBtaW5kIArigJQgYSBzY2hlbWUgb2YgZXhhbWluaW5nIHRoZSB2YWxsZXlzIGluIGEgY2VydGFpbiAKb3JkZXIg4oCUIGFuZCBubyBzdWdnZXN0aW9uIG9mIG91cnMgY291bGQgbWFrZSBoaW0gCmRldmlhdGUgZnJvbSBpdDsgYnV0IGZvcnR1bmF0ZWx5IHRoZXJlIHdhcyBpbiB0aGUgCnBhcnR5IGEgZG9nIHdobyBwcm92ZWQgbW9yZSBpbXByZXNzaW9uYWJsZSwgYW5kIAp3aGVuIGhlIHNlaXplZCB0aGUgdHJvdXNlci1sZWcgb2Ygb25lIG9mIHRoZSBmYXJtLSAKbWVuIGFuZCB0cmllZCB0byBkcmF3IGhpbSBpbiBvdXIgZGlyZWN0aW9uLCB0aGUgCm1hbiB0aG91Z2h0IHRoZXJlIG1pZ2h0IGJlIHNvbWUgcmVhc29uIGZvciBpdCwgYW5kIApzbyB5aWVsZGVkLCBhbmQgZm9sbG93ZWQgdGhlIGRvZy4gVGh1cyBieSB0aGUgdGltZSAKdGhhdCB0aGUgY2hpbGQgd2FzIHNhZmVseSBvdXQgb2YgdGhlIGNhdmUsIHRoZSBtYW4gCmFuZCBkb2cgd2VyZSBhbHJlYWR5IHdpdGhpbiBhIGZldyBtaWxlcy4gVGhlIApjaGlsZCBuYXR1cmFsbHkgYmVnZ2VkIGhpcyBteXN0ZXJpb3VzIG5ld2x5LWZvdW5kIApmcmllbmQgdG8gYWNjb21wYW55IGhpbSBob21lLCBhbmQgY2x1bmcgdG8gaGltIAp3aXRoIHRvdWNoaW5nIGdyYXRpdHVkZSwgYnV0IHRoZSBoZWxwZXIgd2FzIG9ibGlnZWQgCmdlbnRseSB0byB0ZWxsIGhpbSB0aGF0IGhlIGNvdWxkIG5vdCBkbyB0aGF0LCBhcyBoZSAKaGFkIG90aGVyIGJ1c2luZXNzOyBidXQgaGUgY29udmV5ZWQgaGltIHRvIHRoZSB0b3AgCm9mIGEgcmlkZ2UgZnJvbSB3aGljaCBoZSBjb3VsZCBzZWUgdGhlIGZhcm0taGFuZCAKZmFyIGF3YXkgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIHZhbGxleS4gQSBzaG91dCAKc29vbiBhdHRyYWN0ZWQgaGlzIGF0dGVudGlvbiwgYW5kIGFzIHNvb24gYXMgdGhhdCB3YXMgCmNlcnRhaW4sIG91ciB5b3VuZyBoZWxwZXIgc2FpZCBnb29kLWJ5ZSB0byB0aGUgYm95IAp3aG9tIGhlIGhhZCByZXNjdWVkLCBzZW50IGhpbSBvZmYgcnVubmluZyBmZWVibHkgCnRvd2FyZHMgaGlzIGZyaWVuZHMsIGFuZCB0aGVuIGhpbXNlbGYgcHJvbXB0bHkgCmRlbWF0ZXJpYWxpemVkLiAKCgo4OCAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgpUaGUgc21hbGwgYm95IHdobyB3YXMgaGVscGVkIGNhbiBuZXZlciBoYXZlIApoYWQgdGhlIHNsaWdodGVzdCBpZGVhIHRoYXQgaGlzIHJlc2N1ZXIgd2FzIGFueXRoaW5nIApidXQgcHVyZWx5IHBoeXNpY2FsOyBoZSBhc2tlZCBvbmUgb3IgdHdvIGluY29uLSAKdmVuaWVudCBxdWVzdGlvbnMsIGJ1dCB3YXMgZWFzaWx5IGRpdmVydGVkIGZyb20gCmRhbmdlcm91cyBncm91bmQuIFBlcmhhcHMgaGlzIHJlbGF0aW9ucywgd2hlbiBoZSAKY2FtZSB0byB0ZWxsIGhpcyBzdG9yeSwgZm91bmQgbW9yZSBkaWZmaWN1bHR5IHRoYW4gaGUgCmRpZCBpbiBhY2NvdW50aW5nIGZvciB0aGUgcHJlc2VuY2UgaW4gYSBsb25lbHkgcGxhY2UgCm9mIGEgY2FzdWFsIHN0cmFuZ2VyIG9mIGRlY2lkZWRseSBub24tYnVjb2xpYyBhcC0gCnBlYXJhbmNlOyBidXQgYXQgYW55IHJhdGUgaXQgd2lsbCBiZSBpbXBvc3NpYmxlIGluIAp0aGlzIGNhc2UgdG8gYnJpbmcgYW55IGRlZmluaXRlIGV2aWRlbmNlIG9mIG5vbi0gCnBoeXNpY2FsIGludGVydmVudGlvbi4gCgoKQ0hBUFRFUiBYSUlJIAoKClRIRSBTVE9SWSBPRiBJVlkgCgpUaGUgaGVyb2luZSBvZiB0aGlzIHN0b3J5LCB3aG9zZSBuYW1lIGlzIEl2eSwgaXMgCm9uZSBvZiBvdXIgYmVzdCB3b3JrZXJzIG9uIHRoZSBhc3RyYWwgcGxhbmUuIFNoZSAKd2FzIGR1cmluZyBlYXJ0aCBsaWZlIGEgbWVtYmVyIG9mIG9uZSBvZiBvdXIgTG90dXMgCkNpcmNsZXMsIGFuZCBoZXIgd29yayBpcyBhIGZpbmUgZXhhbXBsZSBvZiB0aGUgZ29vZCAKd2hpY2ggc3VjaCBjaXJjbGVzIGNhbiBkby4gU2hlIHdhcyphIGJyaWdodCBhbmQgCmxpdmVseSBnaXJsLCBtdXNpY2FsLCBhcnRpc3RpYyBhbmQgYXRobGV0aWMg4oCUIGEgY2xldmVyIAplbG9jdXRpb25pc3QgdG9vOyBidXQgYWJvdmUgYWxsIGEgdGhvcm91Z2hseSBnb29kIApnaXJsLCBraW5kbHkgYW5kIGFmZmVjdGlvbmF0ZSwgYW5kIHdpbGxpbmcgdG8gdGFrZSAKYW55IGFtb3VudCBvZiB0cm91YmxlIHRvIGhlbHAgb3RoZXJzOyBhbmQgYSBwZXJzb24gCndobyBoYXMgdGhhdCBjaGFyYWN0ZXJpc3RpYyBvbiB0aGUgcGh5c2ljYWwgcGxhbmUgCmFsd2F5cyBtYWtlcyBhIGdvb2QgaGVscGVyIG9uIHRoZSBhc3RyYWwuIEkgZmVlbCAKc3VyZSB0aGF0IHNoZSB3b3VsZCBoYXZlIGxlZCBhbiBleGVtcGxhcnkgYW5kIAp1c2VmdWwgbGlmZSBvbiB0aGlzIHBsYW5lIGlmIGhlciBrYXJtYSBoYWQgd29ya2VkIAp0aGF0IHdheSwgYnV0IGl0IGlzIG5vdCBjb25jZWl2YWJsZSB0aGF0IGluIHRoYXQgY2FzZSAKc2hlIGNvdWxkIGhhdmUgZm91bmQgdGhlIG9wcG9ydHVuaXR5IGV2ZW4gZHVyaW5nIAphIGxvbmcgbGlmZSB0byBkbyBhbnl0aGluZyBhdCBhbGwgYXBwcm9hY2hpbmcgdG8gdGhlIAphbW91bnQgb2YgZ29vZCB3aGljaCBzaGUgaGFzIGV2ZW4gYWxyZWFkeSBkb25lIG9uIAp0aGUgYXN0cmFsIHBsYW5lIHNpbmNlIGhlciBkZWF0aC4gSSBuZWVkIG5vdCBnbyAKaW50byBkZXRhaWxzIG9mIHRoYXQ7IGl0IGlzIGVub3VnaCB0byBzYXkgdGhhdCB3aGVuIApec2hlIHdhcyBzY2FyY2VseSBlaWdodGVlbiBzaGUgd2FzIGRyb3duZWQgaW4gYSAKCgo5MCAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgp5YWNodGluZyBhY2NpZGVudC4gU2hlIGNhbWUgc3RyYWlnaHQgdG8gQ3lyaWwsIHdobyAKaXMgaGVyIHNwZWNpYWwgZ3VydSAsIGFzIHNvb24gYXMgc2hlIHJlY292ZXJlZCBoZXIgCmNvbnNjaW91c25lc3MsIGFuZCBhcyBzb29uIGFzIHNoZSBoYWQgY29tZm9ydGVkIApoZXIgcmVsYXRpb25zIGFuZCBmcmllbmRzIHNoZSBkZW1hbmRlZCB0byBiZSB0cmFpbmVkIApmb3IgcmVndWxhciB3b3JrLiBUaGlzIHdhcyBvbmUgb2YgaGVyIG1vc3QgcGxlYXNpbmcgCmNoYXJhY3RlcmlzdGljcywgYW5kIGFsdGhvdWdoIHNoZSBoYWQgZ3JlYXQgb3JpZ2luYWwtIAppdHkgYW5kIGluZ2VudWl0eSBzaGUgd2FzIHlldCB2ZXJ5IGh1bWJsZSBhYm91dCAKaGVyIG93biBxdWFsaWZpY2F0aW9ucywgbW9zdCB3aWxsaW5nIHRvIGJlIHRhdWdodCAKZXhhY3RseSBob3cgdG8gd29yaywgYW5kIGVhZ2VyIHRvIGxlYXJuIGFuZCB1bmRlci0gCnN0YW5kLiAKClNoZSBpcyBlc3BlY2lhbGx5IGZvbmQgb2YgY2hpbGRyZW4sIGFuZCBoZXIgZmllbGQgCm9mIHVzZWZ1bG5lc3MgaGFzIGxhaW4gc3BlY2lhbGx5IHdpdGggZ2lybHMgb2YgaGVyIG93biAKYWdlIGFuZCB5b3VuZ2VyLiBTaGUgaGFzIGJlZW4ga2Vlbmx5IGludGVyZXN0ZWQgCmluIG1ha2luZyB0aG91Z2h0LWZvcm1zIGZvciBwZW9wbGUsIGFuZCBoYXMgYWNxdWlyZWQgCmV4Y2VwdGlvbmFsIHBvd2VycyBhbG9uZyB0aGF0IGxpbmUuIFNoZSB0YWtlcyB1cCAKY2FzZXMgb2YgY2hpbGRyZW4gd2hvIGFyZSBmcmlnaHRlbmVkIGF0IG5pZ2h0LCBhbmQgCm9mIG90aGVycyB3aG8gaGF2ZSBiZXNldHRpbmcgdGhvdWdodHMgb2YgcHJpZGUsIApqZWFsb3VzeSBvciBzZW5zdWFsaXR5LiBJbiBtb3N0IG9mIHRoZXNlIHNoZSBmaW5kcyAKb3V0IHRoZSBjaGlsZOKAmXMgaGlnaGVzdCBpZGVhbCBvciBncmVhdGVzdCBoZXJvIG9yIApoZXJvaW5lLCBtYWtlcyBhIHN0cm9uZyB0aG91Z2h0LWZvcm0gb2YgdGhhdCBpZGVhbCwgCmFuZCBzZXRzIGl0IHRvIGFjdCBhcyBhIGd1YXJkaWFuIGFuZ2VsIHRvIHRoZSBjaGlsZC4gCgpUaGVuIHNoZSBtYWtlcyBpdCBhIHJlZ3VsYXIgYnVzaW5lc3MgdG8gZ28gcm91bmQgCmF0IHN0YXRlZCB0aW1lcyByZXZpdmlmeWluZyBhbGwgdGhlc2UgdGhvdWdodC1mb3JtcywgCnNvIGFzIHRvIGtlZXAgdGhlbSBhbHdheXMgdGhvcm91Z2hseSB1cCB0byB0aGVpciAKd29yay4gSW4gdGhpcyB3YXkgc2hlIGhhcyBiZWVuIGFjdHVhbGx5IHRoZSBzYWx2YS0gCnRpb24gb2YgbWFueSBjaGlsZHJlbi4gSSBrbm93IG9mIG9uZSBjYXNlIGluIHdoaWNoIApzaGUgd2FzIGFibGUgdG8gY2hlY2sgaW5jaXBpZW50IGluc2FuaXR5LCBhbmQgdHdvIApvdGhlcnMgaW4gd2hpY2gsIGJ1dCBmb3IgaGVyIG1pbmlzdHJhdGlvbnMsIGVhcmx5IAoKClRIRSBTVE9SWSBPRiBJVlkgCgoKOTEgCgoKZGVhdGggd291bGQgaGF2ZSBjZXJ0YWlubHkgZW5zdWVkLCBiZXNpZGVzIG1hbnkgCm90aGVycyBpbiB3aGljaCBjaGFyYWN0ZXIgaGFzIGJlZW4gaW1wcm92ZWQgYmV5b25kIAphbGwgcmVjb2duaXRpb24uIEluZGVlZCwgaXQgaXMgaW1wb3NzaWJsZSB0byBzcGVhayAKdG9vIGhpZ2hseSBvZiB0aGUgZ29vZCB3b3JrIHdoaWNoIHNoZSBoYXMgZG9uZSBpbiAKdGhhdCB3YXkuIAoKQW5vdGhlciBvZiBoZXIgbGluZXMgb2YgYWN0aXZpdHkgd2lsbCBhcHBlYWwgdG8gCnRob3NlIHdobyBoYXZlIG5vdCBmb3Jnb3R0ZW4gdGhlaXIgb3duIGNoaWxkaG9vZC4gCk1hbnkgY2hpbGRyZW4gbGl2ZSBjb25zdGFudGx5IGluIGEgc29ydCBvZiByb3N5IGRheS0gCmRyZWFtIOKAlCDigJx0ZWxsaW5nIHRoZW1zZWx2ZXMgc3RvcmllcyzigJ0gdGhleSBzb21ldGltZXMgCmNhbGwgaXQuIFRoZSBsaXR0bGUgYm95IGZhbmNpZXMgaGltc2VsZiB0aGUgaGVybyBvZiAKYWxsIHNvcnRzIG9mIHRocmlsbGluZyBhZHZlbnR1cmVzIOKAlCB0aGUgY2VudHJhbCBmaWd1cmUgCmluIHNjZW5lcyBvZiBnbG9yeSwgbmF2YWwsIG1pbGl0YXJ5IG9yIGF0aGxldGljOyB0aGUgCmxpdHRsZSBnaXJsIGZhbmNpZXMgaGVyc2VsZiBiZWluZyBhZG9yZWQgYnkgY3Jvd2RzIG9mIAprbmlnaHRzIGFuZCBjb3VydGllcnMsIG9yIHRoaW5rcyBvZiBoZXJzZWxmIGFzIGdvci0gCmdlb3VzbHkgYXR0aXJlZCBhbmQgaW4gcG9zaXRpb25zIG9mIGdyZWF0IHdlYWx0aCBhbmQgCmluZmx1ZW5jZSwgYW5kIHNvIG9uLiBOb3cgSXZ5IG1ha2VzIGEgc3BlY2lhbGl0eSAKb2YgdGFraW5nIHRoZXNlIGRheS1kcmVhbXMgYW5kIHZpdmlmeWluZyB0aGVtLCAKbWFraW5nIHRoZW0gdGVuIHRpbWVzIG1vcmUgcmVhbCB0byB0aGUgZGVsaWdodGVkIApkcmVhbWVycywgYnV0IGF0IHRoZSBzYW1lIHRpbWUgbW91bGRpbmcgYW5kIGRpcmVjdC0gCmluZyB0aGVtLiBTaGUgZ3JhZHVhbGx5IHR1cm5zIHRoZSBkcmVhbXMgZnJvbSAKc2VsZmlzaG5lc3MgdG8gdW5zZWxmaXNobmVzcywgZ3VpZGVzIHRoZSBjaGlsZHJlbiB0byAKaW1hZ2UgdGhlbXNlbHZlcyBhcyBoZWxwZXJzIGFuZCBiZW5lZmFjdG9ycywgYW5kIAppbmZsdWVuY2VzIHRoZW0gdG8gdGhpbmsgbm90IG9mIHdoYXQgdGhleSBjYW4gCnJlY2VpdmUgYnV0IG9mIHdoYXQgZ29vZCB0aGV5IGNhbiBkbywgYW5kIHNvIGJ5IApkZWdyZWVzIGVudGlyZWx5IGNoYW5nZXMgdGhlaXIgY2hhcmFjdGVycy4g4oCcQXMgYSAKbWFuIHRoaW5rZXRoIGluIGhpcyBoZWFydCwgc28gaXMgaGUs4oCdIGFuZCB0aGlzIGlzIHRydWUgCm9mIGNoaWxkcmVuIGFsc287IHNvIHRoYXQgb25lIHdobyB1bmRlcnN0YW5kcyB0aGUgCmVub3Jtb3VzIHBvd2VyIG9mIHRob3VnaHQgd2lsbCBub3QgYmUgc3VycHJpc2VkIHRvIAoKCjkyIAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCmhlYXIgdGhhdCBxdWl0ZSBpbmNhbGN1bGFibGUgZ29vZCBoYXMgYmVlbiBkb25lIGluIAp0aGlzIHdheSwgYnkgdGFraW5nIHRoZSB5b3VuZyBhdCB0aGUgbW9zdCBpbXByZXNzLSAKaWJsZSBhZ2UuIAoKTm9yIGhhcyBzaGUgbmVnbGVjdGVkIG1vcmUgb3JkaW5hcnkgbGluZXMgb2YgCndvcmsuIEZvciBleGFtcGxlLCBhIHlvdW5nIGdpcmwgaW4gd2hvbSBJIGFtIApkZWVwbHkgaW50ZXJlc3RlZCBoYWQgcmVjZW50bHkgdG8gdW5kZXJnbyBhIGxvbmcgYW5kIAp3ZWFyaXNvbWUgY29udmFsZXNjZW5jZSBhZnRlciBhIHNlcmlvdXMgaWxsbmVzcywgYW5kIApJIGFza2VkIEl2eSB0byB0YWtlIGhlciBpbiBjaGFyZ2UuIEkgYmVsaWV2ZSBteSAKeW91bmcgZnJpZW5kIGhhZCBub3QgYSBkcmVhcnkgaG91ciBkdXJpbmcgYWxsIHRob3NlIAp3ZWVrcywgZm9yIEl2eSBrZXB0IHVwIGEgc3RlYWR5IHN0cmVhbSBvZiB0aG91Z2h0cyAKb2YgdGhlIG1vc3QgZGVsaWdodGZ1bCBhbmQgYWJzb3JiaW5nIG5hdHVyZSDigJQgc3RvcmllcyAKb2YgYWxsIHNvcnRzLCBzY2VuZXMgZnJvbSBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIHdvcmxkIAp3aXRoIGV4cGxhbmF0b3J5IGNvbW1lbnRzLCB2aXNpb25zIG9mIGNyZWF0dXJlcywgCmFzdHJhbCBhcyB3ZWxsIGFzIHBoeXNpY2FsLCBtdXNpYyBvZiBzdXBlcmh1bWFuIApzd2VldG5lc3Mg4oCUIG1vcmUgaW5nZW5pb3VzIGRldmljZXMgdGhhbiBJIGNhbiByZS0gCm1lbWJlciwgdG8gaGVscCB0byBwYXNzIHRoZSB0aW1lIHBsZWFzYW50bHkgYW5kIAppbnN0cnVjdGl2ZV4uIAoKQnV0IGFsbCB0aGlzIGdlbmVyYWwgZGVzY3JpcHRpb24gb2YgaGVyIHdvcmsgaXMgCm9ubHkgYW4gaW50cm9kdWN0aW9uIHRvIHRoZSBwYXJ0aWN1bGFyIHN0b3J5IHdoaWNoIEkgCmFtIGFib3V0IHRvIHRlbGwsIGEgc3Rvcnkgd2hpY2gsIEkgdGhpbmssIG15IHJlYWRlcnMgCndpbGwgdW5kZXJzdGFuZCBhbGwgdGhlIGJldHRlciBmb3IgaGF2aW5nIHNvbWUgCmFjcXVhaW50YW5jZSB3aXRoIHRoZSBjaGFyYWN0ZXIgb2YgdGhlIHByaW5jaXBhbCAKYWN0b3IgaW4gaXQuIEl0IGlzIGEgY2FzZSBhYm91dCB3aGljaCBzaGUgd2FzIHZlcnkgCmVhZ2VyIOKAlCBpbiBmYWN0LCBmb3IgdGhlIG1vbWVudCBpdCB3YXMgaGVyIHByaW5jaXBhbCAKaW50ZXJlc3QsIGFuZCBzaGUgd2FzIHZlcnkgdHJpdW1waGFudCBhdCBoYXZpbmcgCmNhcnJpZWQgaXQgdG8gYSBzdWNjZXNzZnVsIGlzc3VlLiAKCkkgd2lsbCB0ZWxsIHRoZSB0YWxlIGJyaWVmbHksIGFuZCB3aWxsIHRyeSB0byBwdXQgaXQgCmludG8gY2hyb25vbG9naWNhbCBvcmRlci4gSXQgY2FtZSB0byBtZSBhbGwgdXBzaWRlIAoKClRIRSBTVE9SWSBPRiBJVlkgCgoKOTMgCgoKZG93biwgYmVnaW5uaW5nIHdpdGggYW4gYWN1dGUgY3Jpc2lzIHdoaWNoIGlzIHJlYWxseSAKaW4gdGhlIG1pZGRsZSBvZiB0aGUgc3Rvcnk7IGFuZCB0aGUgZWFybGllciBwYXJ0IAood2hpY2ggYWNjb3VudHMgZm9yIGFsbCB0aGUgcmVzdCkgSSBkaWQgbm90IGxlYXJuIAp1bnRpbCBzb21lIHRpbWUgYWZ0ZXIuIEl0IHNlZW1zIHRoYXQgbG9uZyBhZ28gSXZ5IApoYWQgYSBiaXJ0aCBpbiBSb21lIOKAlCBhbHNvIGFzIGEgZ2lybCDigJQgYW5kIG9uIHRoYXQgCm9jY2FzaW9uIHNoZSBoYWQgYSBzY2hvb2wtZnJpZW5kIHdob20gd2Ugd2lsbCBjYWxsIApSb3NhLiBUaGUgdHdvIGxpdHRsZSBnaXJscyB3ZXJlIHZlcnkgZGV2b3RlZCB0byAKb25lIGFub3RoZXIsIGFuZCBncmV3IHVwIGFzIGFsbW9zdCBpbnNlcGFyYWJsZSAKY29tcGFuaW9ucy4gUm9zYSB3YXMgc3RyaWtpbmdseSBoYW5kc29tZSwgYW5kIAp3YXMgc2NhcmNlbHkgbW9yZSB0aGFuIGZpZnRlZW4gd2hlbiB0aGUgaW5ldml0YWJsZSAKeW91bmcgbWFuIGNhbWUgaW50byB0aGUgc3RvcnkuIFRocm91Z2ggdHJ1c3RpbmcgCmhpbSB0b28gZmFyIHNoZSBoYWQgdG8gcnVuIGF3YXkgZnJvbSBob21lLCBmZWFyaW5nIAp0byBmYWNlIGRpc2Nsb3N1cmVzLiBJdnksIHRob3VnaCBtdWNoIHNob2NrZWQgYW5kIApwYWluZWQsIGxveWFsbHkgc3Rvb2QgYnkgaGVyIGZyaWVuZCwgaGlkIGhlciBmb3Igc29tZSAKdGltZSwgYW5kIGhlbHBlZCBoZXIgdG8gZXNjYXBlIGZyb20gdGhlIGNpdHkuIEl0IApzZWVtcywgaG93ZXZlciwgdGhhdCBSb3NhIHdhcyBub3QgdG8gZXNjYXBlIHRoZSAKY29uc2VxdWVuY2VzIG9mIGhlciBtaXNwbGFjZWQgY29uZmlkZW5jZSwgZm9yIHNoZSAKZmVsbCBpbnRvIGJhZCBoYW5kcyBhbmQgZGllZCBlYXJseSB1bmRlciByYXRoZXIgbWlzLSAKZXJhYmxlIGNvbmRpdGlvbnMuIAoKUm9zYSBhbmQgdGhlIDMnb3VuZyBtYW4gd2hvIHdhcyBpbnZvbHZlZCBzZWVtIAp0byBoYXZlIGhhZCBhIGJpcnRoIHRvZ2V0aGVyICh3aXRob3V0IEl2eSkgc29tZS0gCndoZXJlIGluIHRoZSBNaWRkbGUgQWdlcywgaW4gd2hpY2ggdGhleSBkaWQgcHJhY3RpLSAKY2FsbHkgZXhhY3RseSB0aGUgc2FtZSB0aGluZyBvdmVyIGFnYWluIOKAlCBqdXN0IApyZXBlYXRlZCB0aGUgcHJldmlvdXMgZHJhbWEuIAoKSW4gdGhpcyBwcmVzZW50IGxpZmUgUm9zYSB3YXMgYm9ybiByYXRoZXIgbGF0ZXIsIApJIHRoaW5rLCB0aGFuIEl2eSwgYnV0IGluIGEgZGlmZmVyZW50IHBhcnQgb2YgdGhlIAp3b3JsZC4gU2hlIHdhcywgdW5mb3J0dW5hdGVseSBmb3IgaGVyc2VsZiwgYW4gCmlsbGVnaXRpbWF0ZSBjaGlsZCwgYW5kIGhlciBtb3RoZXIgZGllZCBzb29uIGFmdGVyIAoKCjk0IAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCmhlciBiaXJ0aC4gSSBkbyBub3Qga25vdyB3aGV0aGVyIHRoaXMgd2FzIHRoZSAKa2FybWEgb2YgaGVyIG93biBwcm9jZWVkaW5ncyBhbG9uZyBzaW1pbGFyIGxpbmVzIGluIApwcmV2aW91cyBiaXJ0aHMsIGJ1dCBpdCBhcHBlYXJzIHJhdGhlciBwcm9iYWJsZS4gVGhlIAptb3RoZXLigJlzIHN0b3J5IGhhZCBiZWVuIGEgc2FkIG9uZSwgYW5kLCBhbmQgdGhlIAphdW50IHdobyBicm91Z2h0IHVwIHBvb3IgUm9zYSBuZXZlciBmb3JnYXZlIGhlciAKZm9yIGJlaW5nLCBhcyBzaGUgcHV0IGl0LCB0aGUgY2F1c2Ugb2YgdGhlIGRlYXRoIG9mIGEgCmRlYXJseS1sb3ZlZCBzaXN0ZXIuIEluIGFkZGl0aW9uLCB0aGUgYXVudCB3YXMgYSAKc3Rlcm4gb2xkIHB1cml0YW4gb2YgdGhlIHdvcnN0IHR5cGUsIHNvIHdlIG1heSAKaW1hZ2luZSB0aGF0IFJvc2EgaGFkIGEgbWlzZXJhYmxlIGNoaWxkaG9vZC4gCgpJbnRvIGhlciBsaWZlLCBhYm91dCBhIHllYXIgYmVmb3JlIHRoZSB0aW1lIG9mIAp3aGljaCBJIGFtIHdyaXRpbmcsIGNhbWUgdGhhdCB2ZXJ5IHNhbWUgeW91bmcgCm1hbiDigJQgYSB3YW5kZXJpbmcgYXJ0aXN0IG9yIGFuZ2xlciBvciBzb21ldGhpbmcgb2YgCnRoYXQgc29ydCB0aGlzIHRpbWUg4oCUIGFuZCB0aGV5IGRpbGlnZW50bHkgcGxheWVkIG91dCAKdGhlaXIgcGxheSBhbG9uZyB0aGUgc2FtZSBvbGQgbGluZXMuIFRoZSBtYW4gCnNlZW1lZCBhIG5pY2UgZW5vdWdoIHlvdW5nIGZlbGxvdywgdGhvdWdoIHdlYWsg4oCUIApieSBubyBtZWFucyB0aGUgc29ydCBvZiBkZXNpZ25pbmcgcnVmZmlhbiB0aGF0IG9uZSAKbWlnaHQgZXhwZWN0LiBJIHRoaW5rIHRoaXMgdGltZSBoZSB3b3VsZCBoYXZlIAptYXJyaWVkIGhlciwgdGhvdWdoIGhlIGNvdWxkIG5vdCBpbiB0aGUgbGVhc3QgYWZmb3JkIAppdDsgYnV0LCBob3dldmVyIHRoYXQgbWF5IGhhdmUgYmVlbiwgaGUgaGFkIG5vdCAKdGhlIG9wcG9ydHVuaXR5LCBmb3IgaGUgd2FzIHByb21wdGx5IGtpbGxlZCBpbiBhbiAKYWNjaWRlbnQsIGFuZCBsZWZ0IGhlciBpbiB0aGUgdXN1YWwgY29uZGl0aW9uLiBTaGUgCmRpZCBub3Qga25vdyB3aGF0IHRvIGRvOyBvZiBjb3Vyc2Ugc2hlIGNvdWxkIG5vdCAKZmFjZSBzdWNoIGFuIGF1bnQgd2l0aCBzdWNoIGEgc3RvcnksIGFuZCBldmVudHVhbGx5IApzaGUgbWFkZSB1cCBoZXIgbWluZCB0byBkcm93biBoZXJzZWxmLiBTaGUgCndhbmRlcmVkIG91dCBvbmUgZGF5IGZvciB0aGF0IHB1cnBvc2UsIGhhdmluZyBsZWZ0IAphIGxldHRlciBmb3IgaGVyIGF1bnQgYW5ub3VuY2luZyBoZXIgaW50ZW50aW9uOyBhbmQgCnNoZSBzYXQgZG93biBvbiB0aGUgYmFuayBvZiB0aGUgcml2ZXIsIG1vb2RpbHkgCmxvb2tpbmcgYXQgdGhlIHdhdGVyLiAKCgpUSEUgU1RPUlkgT0YgSVZZIAoKCjk1IAoKClVwIHRvIHRoaXMgcG9pbnQsIGl0IHdpbGwgYmUgdW5kZXJzdG9vZCwgSXZ5IGhhZCAKa25vd24gbm90aGluZyB3aGF0ZXZlciBvZiBhbGwgdGhhdCBJIGhhdmUgcmVsYXRlZCwgCmJ1dCBhdCB0aGlzIGNyaXNpcyBzaGUgYXJyaXZlZCBvbiB0aGUgc2NlbmUgKGFzdHJhbGx5IApvZiBjb3Vyc2UpIGFwcGFyZW50bHkgYnkgdGhlIG1lcmVzdCBjaGFuY2U7IGJ1dCBJIApkbyBub3QgYmVsaWV2ZSB0aGF0IHRoZXJlIGlzIGFueSBzdWNoIHRoaW5nIGFzIApjaGFuY2UgaW4gdGhlc2UgbWF0dGVycy4gT2YgY291cnNlIHNoZSBkaWQgbm90IApyZWNvZ25pemUgUm9zYSBhcyBhIGZyaWVuZCBvZiB0d28gdGhvdXNhbmQgeWVhcnMgCmFnbyogYnV0IHNoZSBzYXcgaGVyIHRlcnJpYmxlIGRlc3BhaXIsIGFuZCBmZWx0IHN0cm9uZy0gCmx5IGF0dHJhY3RlZCB0b3dhcmRzIGhlciBhbmQgZnVsbCBvZiBwaXR5IGZvciBoZXIuIApOb3cgaXQgaGFwcGVucyB0aGF0IGEgZmV3IHdlZWtzIGJlZm9yZSwgaW4gY29ubmVjLSAKdGlvbiB3aXRoIHF1aXRlIGFub3RoZXIgYnVzaW5lc3MsIEkgaGFkIHNob3duIEl2eSAKaG93IHRvIG1lc21lcml6ZSwgYW5kIGV4cGxhaW5lZCB0byBoZXIgdW5kZXIgd2RpYXQgCmNpcmN1bXN0YW5jZXMgdGhlIHBvd2VyIGNvdWxkIGxlZ2l0aW1hdGVseSBiZSBlbS0gCnBsb3llZC4gU28gc2hlIHB1dCB0aG9zZSBpbnN0cnVjdGlvbnMgaW50byBwcmFjdGljZSAKaGVyZSwgYW5kIG1hZGUgUm9zYSBmYWxsIGFzbGVlcCB1cG9uIHRoZSBiYW5rIG9mIAp0aGUgcml2ZXIuIAoKQXMgc29vbiBhcyBzaGUgaGFkIGRyYXduIGhlciBvdXQgb2YgaGVyIGJvZHksIApzaGUgcHJlc2VudGVkIGhlcnNlbGYgdG8gaGVyIGFzIGEgZnJpZW5kLCBzaG93ZWQgdGhlIApkZWVwZXN0IGFmZmVjdGlvbiBhbmQgc3ltcGF0aHkgZm9yIGhlciwgYW5kIGF0IGxhc3QgCnN1Y2NlZWRlZCBpbiBhcmd1aW5nIGhlciBvdXQgb2YgaGVyIGludGVudGlvbiBvZiAKc3VpY2lkZS4gTmVpdGhlciBvZiB0aGVtIGtuZXcgZXhhY3RseSB3aGF0IHRvIGRvIApuZXh0LCBzbyBJdnksIHRha2luZyBSb3NhIHdpdGggaGVyLCBydXNoZWQgb2ZmIHRvIApmaW5kIEN5cmlsLiBCdXQgYXMgaXQgd2FzIGJyb2FkIGRheWxpZ2h0IGhlIHdhcyAKcXVpdGUgb24gdGhlIHBoeXNpY2FsIHBsYW5lIGFuZCBidXNpbHkgZW5nYWdlZCwgYW5kIApzbyBub3QgYXZhaWxhYmxlIGF0IHRoZSBtb21lbnQgZm9yIGFzdHJhbCBjb21tdW5pLSAKY2F0aW9ucy4gVGhpcyBiZWluZyBzbywgSXZ5IGJyb3VnaHQgaGVyIGNhcHR1cmUgCm92ZXIgaGVyZSB0byBtZSwgYW5kIGh1cnJpZWRseSByZWxhdGVkIHRoZSBjaXJjdW0tIApzdGFuY2VzLiAKCgo5NiAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgpJIHN1Z2dlc3RlZCB0aGF0IGZvciB0aGUgcHJlc2VudCBhdCBsZWFzdCBSb3NzdCAKbXVzdCBnbyBob21lIGFnYWluLCBidXQgbm90aGluZyB3b3VsZCBpbmR1Y2UgaGVyIAp0byBkbyB0aGF0LCBzbyBncmVhdCB3YXMgaGVyIGhvcnJvciBvZiBoZXIgYXVudOKAmXMgCmNvbGQgY3J1ZWx0eS4gVGhlIG9ubHkgb3RoZXIgYWx0ZXJuYXRpdmUgd2FzIHRoZSAKdmVyeSByaXNreSBvbmUgb2YgZ29pbmcgb3V0IHZhZ3VlbHkgaW50byB0aGUgd29ybGQg4oCUIApzaW5jZSBJIG1hZGUgaGVyIHJlbmV3IGhlciB2b3cgbm90IHRvIGdvIG91dCBvZiBpdCAKYnkgc3VpY2lkZS4gU2luY2Ugd2UgY291bGQgbm90IHBlcm1pdCB0aGF0LCBzaGUgCnNlZW1lZCB3aWxsaW5nIHRvIGZhY2UgdGhlIGRpZmZpY3VsdGllcyBvZiBiZWdpbm5pbmdzIAphIG5ldyBsaWZlLCBzYXlpbmcgdGhhdCBpdCBjb3VsZCBub3QgcG9zc2libHkgYmUgCnNvIG1pc2VyYWJsZSBhcyB0aGUgb2xkIG9uZSwgZXZlbiB0aG91Z2ggaXQgbGVkIApoZXIgdG8gc3RhcnZhdGlvbi4gSXZ5IGFwcHJvdmVkIGFuZCBlbnRodXNpYXN0aS0gCmNhbGx5IHByb21pc2VkIHRvIGhlbHAgaGVyLCB0aG91Z2ggaXQgZGlkIG5vdCAKc2VlbSBxdWl0ZSBjbGVhciB0byBtZSBhdCB0aGUgbW9tZW50IHdoYXQgc2hlIApjb3VsZCBkby4gCgpJdCB3YXMgZXZlbnR1YWxseSBkZWNpZGVkIHRodXMsIGJlY2F1c2UgdGhlcmUgCnNlZW1lZCBubyBhbHRlcm5hdGl2ZSwgc28gUm9zYSB3YXMgc2VudCBiYWNrIGludG8qIApoZXIgYm9keSBvbiB0aGUgcml2ZXIgYmFuaywgYW5kIGZvcnR1bmF0ZWx5IHdoZW4gCnNoZSB3b2tlIHNoZSByZW1lbWJlcmVkIGVub3VnaCBvZiB3aGF0IHNoZSBjYWxsZWQgCmhlciBkcmVhbSB0byByZWNvaWwgd2l0aCBob3Jyb3IgZnJvbSB0aGUgd2F0ZXIsIGFuZCAKc3RhcnQgb2ZmIHRvIHdhbGsgdG8gYSBuZWlnaGJvdXJpbmcgdG93bi4gT2YgY291cnNlIApzaGUgaGFkIHNjYXJjZWx5IGFueSBtb25leSDigJQgcGVvcGxlIG5ldmVyIGhhdmUgb24gCnRoZXNlIG9jY2FzaW9ucyDigJQgYnV0IHNoZSB3YXMgYWJsZSB0byBmaW5kIGEgY2hlYXAgCmxvZGdpbmcgZm9yIHRoYXQgbmlnaHQgYW5kIHRvIGJ1eSBhIGxpdHRsZSBmb29kLCBhbmQgCmR1cmluZyBoZXIgc2xlZXAgSXZ5IGNoZWVyZWQsIGVuY291cmFnZWQgYW5kIGNvbS0gCmZvcnRlZCBoZXIgaW4gdGhlIGludGVydmFscyBvZiBwcm9zZWN1dGluZyBhIHZpZ29yb3VzIAphbmQgZGV0ZXJtaW5lZCBzZWFyY2ggZm9yIHNvbWVib2R5IHdobyBjb3VsZCBiZSAKaW5mbHVlbmNlZCB0byBoZWxwIG9uIHRoZSBwaHlzaWNhbCBwbGFuZS4gQnkgdGhpcyAKdGltZSBDeXJpbCB3YXMgYXNsZWVwIGFuZCBzaGUgaGFkIHNlY3VyZWQgaGlzIAoKClRIRSBTVE9SWSBPRiBJVlkgCgoKOTcgKiAKCgpjby1vcGVyYXRpb247IGFuZCBmb3J0dW5hdGVseSBiZXR3ZWVuIHRoZW0gdGhleSAKd2VyZSBzdWNjZXNzZnVsIGluIGRpc2NvdmVyaW5nIGEgZGVsaWdodGZ1bGx5IGJlbmUtIAp2b2xlbnQgb2xkIGxhZHkgd2hvIGxpdmVkIGFsb25lIHdpdGggb25lIHNlcnZhbnQgaW4gYSwgCnByZXR0eSBsaXR0bGUgdmlsbGEgaW4gYSB2aWxsYWdlIHNvbWUgbWlsZXMgYXdheSwgYW5kIApieSB1bnJlbWl0dGluZyBlZmZvcnQgdGhleSBtYWRlIHRoZSB0d28gcGVvcGxlIAooUm9zYSBhbmQgdGhlIG9sZCBsYWR5KSBkcmVhbSBvZiBvbmUgYW5vdGhlciAsIHNvIAp0aGF0IHRoZXJlIHNob3VsZCBiZSBhIHN0cm9uZyBtdXR1YWwgaW50ZXJlc3QgYW5kIAphdHRyYWN0aW9uIGJldHdlZW4gdGhlbSB3aGVuIHRoZXkgbWV0IG9uIHRoZSAKcGh5c2ljYWwgcGxhbmUuIAoKTmV4dCBtb3JuaW5nIEl2eSBkaXJlY3RlZCBSb3Nh4oCZcyBzdGVwcyB0b3dhcmQgCnRoZSB2aWxsYWdlIHdoZXJlIHRoZSBvbGQgbGFkeSBsaXZlZCwgYW5kIHRob3VnaCBpdCAKd2FzIGEgbG9uZyBhbmQgd2Vhcnkgd2FsayBmb3IgaGVyIGl0IHdhcyBhdCBsYXN0IAphY2hpZXZlZC4gQnV0IHRvd2FyZHMgdGhlIGVuZCBvZiBpdCBleHRyZW1lIApwaHlzaWNhbCBmYXRpZ3VlIGxhaWQgaGVyIG9wZW4gdG8gZGVwcmVzc2luZyBpbmZsdS0gCmVuY2VzLCBhbmQgc2hlIGJlZ2FuIHRvIGJlIHZpdmlkbHkgY29uc2Npb3VzIHRoYXQgCnNoZSBoYWQgbm93IG9ubHkgYSBmZXcgcGVuY2UgbGVmdCwgdGhhdCBzaGUgZGlkIG5vdCAKa25vdyBpbiB0aGUgbGVhc3Qgd2hlcmUgdG8gZ28gb3Igd2hhdCB0byBkbywgYW5kIAp0aGF0LCBhZnRlciBhbGwsIHRoZSBob3BlIGFuZCBjaGVlciB0aGF0IGhhZCBidW95ZWQgCmhlciB1cCBkdXJpbmcgdGhlIGxvbmcgZGF5IHdlcmUgYmFzZWQgb25seSB1cG9uIAp3aGF0IHNlZW1lZCB0byBoZXIgYSBkcmVhbS4gQXQgbGFzdCBpbiBzaGVlciAKZXhoYXVzdGlvbiBzaGUgc2F0IGRvd24gdXBvbiBhIGJhbmsgYnkgdGhlIHJvYWQtIApzaWRlIGxvb2tpbmcgdGhlIHBpY3R1cmUgb2YgbWlzZXJ5LCBhbmQgaXQgd2FzIHRoZXJlIAp0aGF0IHRoZSBvbGQgbGFkeSBmb3VuZCBoZXIsIGFuZCBhdCBvbmNlIGtuZXcgaGVyIAphcyB0aGUgZ2lybCB3aG9tIHNoZSBoYWQgbG92ZWQgc28gZGVlcGx5IGluIGhlciAKZHJlYW0uIFRoZWlyIG11dHVhbCByZWNvZ25pdGlvbiB3YXMgaW5kZWVkIGEgCnN0cmFuZ2UgYW5kIHdvbmRlcmZ1bCBleHBlcmllbmNlLCBhbmQgdGhleSB3ZXJlIApib3RoIHByb2ZvdW5kbHkgc3VycHJpc2VkIGFuZCBtb3ZlZCwgeWV0IGluIGEgCmNlcnRhaW4gd2F2IHZlcnYgaGFub3YgYWJvdXQgaXQuIAoKCjk4IAoKCklOVklTSUJMRSBIRUxQRVJTIAoKClRoZSBvbGQgbGFkeSBsZWQgdGhlIGdpcmwgZm9ydGh3aXRoIHRvIGhlciBwcmV0dHkgCmxpdHRsZSBob21lLCBhbmQgc29vbiBkcmV3IGZyb20gaGVyIHRoZSB3aG9sZSBzdG9yeSAKb2YgaGVyIHRyb3VibGUsIHdoaWNoIGFyb3VzZWQgaW4gaGVyIHRoZSBrZWVuZXN0IApzeW1wYXRoeS4gU2hlIGF0IG9uY2Ugb2ZmZXJlZCBzaGVsdGVyIGFuZCBoZWxwIGF0IApsZWFzdCB1bnRpbCBhZnRlciB0aGUgYmlydGggb2YgdGhlIGV4cGVjdGVkIGNoaWxkLCBhbmQgCml0IGlzIGJ5IG5vIG1lYW5zIGltcHJvYmFibGUgdGhhdCBzaGUgbWF5IGRlY2lkZSAKdG8gYWRvcHQgUm9zYS4gQXQgbGVhc3QsIEl2eSBpcyB3b3JraW5nIGluIHRoYXQgCmRpcmVjdGlvbiwgYW5kIGhhcyBzdHJvbmcgaG9wZXMgb2Ygc3VjY2VzczsgYW5kIAp3aGVuIHNoZSBtYWtlcyB1cCBoZXIgbWluZCBhYm91dCBhbnl0aGluZyBzaGUgCmdlbmVyYWxseSBjYXJyaWVzIGl0IHRocm91Z2guIAoKCkNIQVBURVIgWElWIAoKClRZUElDQUwgT1JESU5BUlkgQ0FTRVMgCgpBIHNhZCBjYXNlIGluIHdoaWNoIGl0IHdhcyBub3QgcG9zc2libGUgdG8gZG8gCm11Y2ggZGlyZWN0bHkgd2FzIHRoYXQgb2YgdGhyZWUgbGl0dGxlIGNoaWxkcmVuIApiZWxvbmdpbmcgdG8gYSBkcnVua2VuIG1vdGhlci4gU2hlIHJlY2VpdmVkIHNvbWUgCnRyaWZsaW5nIHBlbnNpb24gb24gYWNjb3VudCBvZiB0aGVtLCBhbmQgdGhlcmVmb3JlIApjb3VsZCBub3QgYXQgZmlyc3QgYmUgaW5kdWNlZCB0byBwYXJ0IHdpdGggdGhlbSwgCnRob3VnaCBzaGUgbmVnbGVjdGVkIHRoZW0gc2hhbWVmdWxseSBhbmQgc2VlbWVkIAp0byBmZWVsIGJ1dCBsaXR0bGUgYWZmZWN0aW9uIGZvciB0aGVtLiBUaGUgZWxkZXN0IG9mIAp0aGVtIHdhcyBvbmx5IHRlbiB5ZWFycyBvZiBhZ2UsIGFuZCB0aGUgY29uZGl0aW9ucyAKc3Vycm91bmRpbmcgdGhlbSwgbWVudGFsbHksIGFzdHJhbGx5IGFuZCBldGhlcmljYWxseSwgCndlcmUgYXMgYmFkIGFzIHRoZXkgY291bGQgYmUuIFRoZSBtb3RoZXIgc2VlbWVkIApmb3IgdGhlIHRpbWUgcXVpdGUgYmV5b25kIHRoZSByZWFjaCBvZiBhbnkgaGlnaGVyIAppbmZsdWVuY2UsIHRob3VnaCBtYW55IGVmZm9ydHMgaGFkIGJlZW4gbWFkZSB0byAKYXBwZWFsIHRvIGhlciBiZXR0ZXIgbmF0dXJlLiBUaGUgb25seSB0aGluZyB0aGF0IApjb3VsZCBiZSBkb25lIHdhcyB0byBsZWF2ZSBvbmUgb2YgbXkgeW91bmcgCmFzc2lzdGFudHMgYnkgdGhlIGJlZHNpZGUgb2YgdGhlIGNoaWxkcmVuIHRvIHdhcmQgCm9mZiBwYXRpZW50bHkgZnJvbSB0aGVtIHRoZSBob3JyaWJsZSB0aG91Z2h0LSBmb3JtcyAKYW5kIHRoZSBjb2Fyc2UgbGl2aW5nIGVudGl0aWVzIHdoaWNoIGNsdXN0ZXJlZCBzbyAKdGhpY2tseSByb3VuZCB0aGUgZGVncmFkZWQgbW90aGVyLiBFdmVudHVhbGx5IApJIHNob3dlZCB0aGUgbmVvcGh5dGUgaG93IHRvIG1ha2UgYSBzdHJvbmcgc2hlbGwgCgoKMTAwIAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCnJvdW5kIHRoZSBjaGlsZHJlbiwgYW5kIHRvIHNldCBhcnRpZmljaWFsIGVsZW1lbnRhbCAKdG8gZ3VhcmQgdGhlbSBhcyBmYXIgYXMgbWlnaHQgYmUuIAoKQSBkaWZmaWN1bHR5IGhlcmUgaXMgdGhhdCBuYXR1cmUtc3Bpcml0cyB3aWxsIG5vdCAKd29yayB1bmRlciBzdWNoIGhvcnJpYmxlIGNvbmRpdGlvbnMsIGFuZCB0aG91Z2ggCnRoZXkgY2FuIGJlIGZvcmNlZCB0byBkbyBzbyBieSBjZXJ0YWluIG1hZ2ljYWwgCmNlcmVtb25pZXMsIHRoaXMgcGxhbiBpcyBub3QgYWRvcHRlZCBieSB0aG9zZSB3aG8gCndvcmsgdW5kZXIgdGhlIEdyZWF0IFdoaXRlIExvZGdlLiBXZSBhY2NlcHQgCm9ubHkgd2lsbGluZyBjby1vcGVyYXRpb24sIGFuZCB3ZSBjYW5ub3QgZXhwZWN0IAplbnRpdGllcyBhdCB0aGUgbGV2ZWwgb2YgZGV2ZWxvcG1lbnQgb2Ygc3VjaCBuYXR1cmUtIApzcGlyaXRzIGFzIHdvdWxkIGJlIHVzZWQgaW4gYSBjYXNlIG9mIHRoaXMga2luZCB0byAKaGF2ZSBhbHJlYWR5IGFjcXVpcmVkIHN1Y2ggYSBzcGlyaXQgb2Ygc2VsZi1zYWNyaWZpY2UgCmFzIHdvdWxkIGNhdXNlIHRoZW0gdm9sdW50YXJpbHkgdG8gd29yayBhbWlkc3QgCnN1cnJvdW5kaW5ncyBzbyB0ZXJyaWJsZSB0byB0aGVtLiBNZXJlIHRob3VnaHQtIApmb3JtcyBjYW4gYmUgbWFkZSBhbmQgbGVmdCB0byB3b3JrIHVuZGVyIGFueSAKY29uZGl0aW9ucywgYnV0IHRoZSBpbnRlbGxpZ2VudCBsaXZpbmcgY28tb3BlcmF0aW9uIG9mIAphIG5hdHVyZS1zcGlyaXQgdG8gZW5zb3VsIHN1Y2ggdGhvdWdodC1mb3JtcyBjYW4gYmUgCmhhZCBvbmx5IHdoZW4gdGhlIG5hdHVyZS1zcGlyaXQgaXMgcmVhc29uYWJseSBhdCAKZWFzZSBpbiBoaXMgd29yay4gCgpMYXRlciBvbiwgaG93ZXZlciwgd2UgbWFkZSBiZXR0ZXIgcHJvZ3Jlc3Mgd2l0aCAKdGhpcyBjYXNlLiBEZXRlcm1pbmVkIGVmZm9ydHMgd2VyZSBtYWRlIHVwb24gdGhlIApwaHlzaWNhbCBwbGFuZSBhcyB3ZWxsIGFzIHVwb24gdGhlIGFzdHJhbCwgYW5kIEkgYW0gCmhhcHB5IHRvIHNheSB0aGF0IHRoZXkgd2VyZSBldmVudHVhbGx5IGNyb3duZWQgCndpdGggYXQgbGVhc3QgdGVtcG9yYXJ5IHN1Y2Nlc3MuIFRoZSB0d28gZWxkZXIgCmNoaWxkcmVuIGhhdmUgYmVlbiBzZW50IHRvIGEgY2hpbGRyZW7igJlzIEhvbWUsIGFuZCAKdGhvdWdoIHRoZSBtb3RoZXIgc3RpbGwgcmV0YWlucyB0aGUgeW91bmdlc3Qgd2l0aCAKaGVyLCBzaGUgaGFzIGJlZW4gcGVyc3VhZGVkIHRvIHB1dCBoZXJzZWxmIHVuZGVyIHRoZSAKY2FyZSBvZiBzb21lIHJlbGlnaW91cyBmcmllbmRzLCBhbmQgaXMgYXQgcHJlc2VudCBhIAoKClRZUElDQUwgT1JESU5BUlkgQ0FTRVMgCgoKMTAxIAoKClRoZXJlIGFyZSBpbiBhc3RyYWwgd29yayBtYW55IGNhc2VzIGluIHdoaWNoIApjb250aW51b3VzIGFjdGlvbiBpcyBuZWNlc3Nhcnkg4oCUIHRoYXQgaXMgdG8gc2F5LCBpbiAKd2hpY2ggc29tZW9uZSB3aG8gaXMgd2lsbGluZyB0byB0YWtlIHRoZSB0cm91YmxlIAptdXN0LCBhcyBpdCB3ZXJlLCBzdGFuZCBvdmVyIHRoZSBwZXJzb24gd2hvIHJlcXVpcmVzIAphc3Npc3RhbmNlLCBhbmQgYmUgY29uc3RhbnRseSByZWFkeSB0byBnaXZlIGl0LiAKTmF0dXJhbGx5IHRob3NlIHdobyBhcmUgaW4gY2hhcmdlIG9mIGEgdmFzdCBhc3NvcnQtIAptZW50IG9mIHZhcmllZCBhc3RyYWwgd29yayBjYW5ub3Qgd2l0aCBqdXN0aWNlIApkZXZvdGUgdGhlbXNlbHZlcyB0byB0aGlzIGV4dGVudCB0byBhbnkgc2luZ2xlIGNhc2UsIApzbyB0aGF0IHVzdWFsbHkgc29tZSByZWxhdGlvbiBvZiB0aGUgc3VmZmVyZXIgaXMgcHV0IAppbiBjaGFyZ2UsIGlmIG9uZSBjYW4gYmUgZm91bmQgd2hvIGlzIHN1ZmZpY2llbnRseSAKY2FwYWJsZSBhbmQgdHJ1c3R3b3J0aHkuIAoKQSBtYW4gcmVjZW50bHkgZGVhZCwgd2hvbSBJIGhhZCBiZWVuIGFza2VkIChieSAKYSByZWxhdGlvbiBvZiBoaXMpIHRvIGhlbHAsIHdhcyBmb3VuZCB0byBiZSBpbiBhIHN0YXRlIApvZiB0ZXJyaWJsZSBkZXByZXNzaW9uLCBzdXJyb3VuZGVkIGJ5IGEgdmFzdCBjbG91ZCBvZiAKZ2xvb215IHRob3VnaHQsIGluIHRoZSBtaWRzdCBvZiB3aGljaCBoZSBmZWx0IGhpbS0gCnNlbGYgdXR0ZXJseSBoZWxwbGVzcyBhbmQgaW1wb3RlbnQuIEhpcyBsaWZlIGhhZCAKYmVlbiBmYXIgZnJvbSBzcG90bGVzcywgYW5kIHRoZXJlIHdlcmUgdGhvc2Ugd2hvbSAKaGUgaGFkIGluanVyZWQgd2hvIHRob3VnaHQgb2YgaGltIG9mdGVuIHdpdGggCm1hbGljZSBhbmQgcmV2ZW5nZSBpbiB0aGVpciBoZWFydHMuIFN1Y2ggdGhvdWdodC0gCmZvcm1zIGFjdGVkIHVwb24gaGltIHRocm91Z2ggdGhlIGNsb3VkcyBvZiBkZXByZXMtIApzaW9uLCBmYXN0ZW5lZCB0aGVtc2VsdmVzIHVwb24gaGltIGxpa2UgbGVlY2hlcyBhbmQgCnN1Y2tlZCBvdXQgZnJvbSBoaW0gYWxsIHZpdGFsaXR5IGFuZCBob3BlIGFuZCAKYnVveWFuY3ksIGxlYXZpbmcgaGltIGEgcHJleSB0byB0aGUgbW9zdCBhYmplY3QgCmRlc3BhaXIuIAoKSSBzcG9rZSB0byBoaW0gYXMgaG9wZWZ1bGx5IGFzIEkgY291bGQsIGFuZCAKcG9pbnRlZCBvdXQgdG8gaGltIHRoYXQsIHRob3VnaCBpdCB3YXMgcXVpdGUgdHJ1ZSAKdGhhdCBoaXMgbGlmZSBoYWQgbm90IGJlZW4gYWxsIHRoYXQgaXQgc2hvdWxkIGhhdmUgCmJlZW4sIGFuZCB0aGF0IHRoZXJlIHdhcyBpbiBhIGNlcnRhaW4gd2F5IG11Y2ggCgoKMTAyIAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCmp1c3RpZmljYXRpb24gZm9yIHRoZSB3YXkgaW4gd2hpY2ggb3RoZXJzIHdlcmUgcmUtIApnYXJkaW5nIGhpbSwgaXQgd2FzIG5ldmVydGhlbGVzcyBib3RoIHdyb25nIGFuZCAKdXNlbGVzcyB0byBnaXZlIHdheSB0byBkZXNwYWlyLiBJIGV4cGxhaW5lZCB0byBoaW0gCnRoYXQgaGUgd2FzIGRvaW5nIHNlcmlvdXMgaGFybSB0byBhIHN1cnZpdmluZyAKcmVsYXRpb24gYnkgaGlzIGRlcHJlc3Npb24sIHNpbmNlIHRoZXNlIHRob3VnaHRzIG9mIApoaXMsIHF1aXRlIHdpdGhvdXQgaGlzIG93biB2b2xpdGlvbiwgY29uc3RhbnRseSAKcmVhY3RlZCB1cG9uIGhlciBhbmQgbWFkZSBoZXIgbGlmZSBvbmUgb2YgdXR0ZXIgCm1pc2VyeS4gSSB0b2xkIGhpbSB0aGF0IHdoaWxlIHRoZSBwYXN0IGNvdWxkIG5vdCAKYmUgdW5kb25lLCBhdCBsZWFzdCBpdHMgZWZmZWN0cyBtaWdodCBiZSBtaW5pbWl6ZWQgCmJ5IHRoZSBlbmRlYXZvdXIgdG8gaG9sZCBhIGNhbG0gZnJvbnQgaW4gdGhlIApwcmVzZW5jZSBvZiB0aGUgZGlzbGlrZSB3aGljaCBoZSBoYWQgYnJvdWdodCB1cG9uIApoaW1zZWxmIGJ5IGhpcyBhY3Rpb25zLCBhbmQgdGhhdCBoZSBzaG91bGQgZW5kZWF2b3VyIAp0byByZXNwb25kIHRvIGl0IGJ5IGtpbmRseSB3aXNoZXMsIGluc3RlYWQgb2YgYnkgCmFsdGVybmF0aW5nIGd1c3RzIG9mIGhhdHJlZCBhbmQgZGVzcGFpci4gSW4gZmFjdCwgCnRoZSBtYWluIHRleHQgb2YgbXkgc2VybW9uIHdhcyB0aGF0IGhlIG11c3QgZm9yZ2V0IApoaW1zZWxmIGFuZCBoaXMgc29ycm93cywgYW5kIHRoaW5rIG9ubHkgb2YgdGhlIGVmZmVjdCAKb2YgaGlzIGF0dGl0dWRlIHVwb24gaGlzIHN1cnZpdmluZyByZWxhdGlvbi4gCgpUaGUgcG9vciBmZWxsb3cgcmVzcG9uZGVkIHRvIHRoaXMsIHRob3VnaCBvbmx5IGluIAphIGhhbGYtaGVhcnRlZCB3YXk7IGhlIHNhaWQgdGhhdCBoZSB3b3VsZCByZWFsbHkgCnRyeSwgYW5kIGhlIGNlcnRhaW5seSBtZWFudCBpdCwgYnV0IEkgY291bGQgc2VlIHRoYXQgCmhlIGhhZCBsaXR0bGUgaG9wZSBvZiBzdWNjZXNzLCBvciBwZXJoYXBzIEkgc2hvdWxkIApyYXRoZXIgc2F5IHRoYXQgaGUgaGFkIG5vIGhvcGUgYXQgYWxsLCBidXQgZmVsdCBxdWl0ZSAKY2VydGFpbiBiZWZvcmVoYW5kIHRoYXQgaGUgd2FzIGZvcmVkb29tZWQgdG8gZmFpbHVyZS4gCkkgdG9sZCBoaW0gcGxhaW5seSBhbGwgdGhpczsgSSBicm9rZSB1cCB0aGUgcmluZ3Mgb2YgCmRlcHJlc3Npb24gd2hpY2ggc2h1dCBoaW0gaW4sIGFuZCBkaXNzaXBhdGVkIHRoZSAKZGFyayBjbG91ZHMgd2hpY2ggc3Vycm91bmRlZCBoaW0sIHNvIHRoYXQgdGhlIAp1bmtpbmRseSB0aG91Z2h0LWZvcm1zIG9mIHRob3NlIHdob20gaGUgaGFkIAppbmp1cmVkLSBzaG91bGQgaGF2ZSBsZXNzIHVwb24gd2hpY2ggdGhleSBjb3VsZCAKCgpUWVBJQ0FMIE9SRElOQVJZIENBU0VTIAoKCjEwMyAKCgpmYXN0ZW4uIEZvciB0aGUgbW9tZW50IGhlIHNlZW1lZCBhbG1vc3QgY2hlZXJmdWwsIAphcyBJIGhlbGQgYmVmb3JlIGhpbSBhIHN0cm9uZyB0aG91Z2h0LWltYWdlIG9mIHRoZSAKc3Vydml2aW5nIHJlbGF0aW9uLCB3aG9tIGhlIGhhZCBkZWVwbHkgbG92ZWQsIGFuZCAKaGUgc2FpZDogCgrigJxXaGlsZSB5b3UgYXJlIGhlcmUgSSBzZWVtIHRvIHVuZGVyc3RhbmQsIGFuZCBJIAphbG1vc3QgdGhpbmsgdGhhdCBJIGNhbiByZXNpc3QgdGhlIGRlc3BhaXI7IGJ1dCBJIAprbm93IHRoYXQsIGFzIHlvdSBzYXksIG15IGNvdXJhZ2Ugd2lsbCBmYWRlIGFzIHNvb24gCmFzIHlvdSBhcmUgZ29uZS7igJ0gCgpTbyBJIHRvbGQgaGltIHRoYXQgdGhpcyBtdXN0IG5vdCBiZSBzbyDigJQgLXRoYXQsIApob3BlbGVzcyBhcyBoZSBmZWx0IG5vdywgZXZlcnkgZGV0ZXJtaW5lZCBlZmZvcnQgdG8gCmNvbnF1ZXIgdGhlIGRlc3BhaXIgd291bGQgbWFrZSBpdCBlYXNpZXIgdG8gZG8gc28gCm5leHQgdGltZSwgYW5kIHRoYXQgaGUgbXVzdCByZWdhcmQgdGhpcyByZXNpc3RhbmNlIAphcyBhIGR1dHkgaW4gd2hpY2ggaGUgY291bGQgbm90IGFsbG93IGhpbXNlbGYgdG8gCmZhaWwuIEkgaGFkIHRvIGdvIGFib3V0IG15IGJ1c2luZXNzLCBidXQgSSBhc2tlZCAKb25lIG9mIG15IHlvdW5nIGFzc2lzdGFudHMgdG8gc3RheSBieSB0aGlzIG1hbiBmb3IgCmEgd2hpbGUsIHRvIHdhdGNoIHRoZSBhY2N1bXVsYXRpb24gb2YgdGhlIGRlcHJlc3NpbmcgCnRob3VnaHRzLCBhbmQgdG8gYnJlYWsgdGhlbSB1cCBkZXRlcm1pbmVkbHkgZXZlcnkgCnRpbWUgdGhhdCB0aGV5IHRvb2sgaG9sZCBvZiB0aGUgdmljdGltLiBJIGtuZXcgCnRoYXQgaWYgdGhpcyB3ZXJlIGRvbmUgd2l0aCBzdWZmaWNpZW50IHBlcnNpc3RlbmNlIHdlIApzaG91bGQgZXZlbnR1YWxseSByZWFjaCBhIGNvbmRpdGlvbiBpbiB3aGljaCB0aGUgCm1hbiBjb3VsZCByZXNpc3QgZm9yIGhpbXNlbGYsIGFuZCBtYWludGFpbiBoaXMgb3duIApwb3NpdGlvbiwgYWx0aG91Z2ggZnJvbSBsb25nLWNvbnRpbnVlZCBzdWJtaXNzaW9uIApoZSBoYWQgYXQgZmlyc3Qgc2NhcmNlbHkgYW55IHN0cmVuZ3RoIHRvIHN1c3RhaW4gdGhlIApzdHJ1Z2dsZS4gTXkgeW91bmcgZnJpZW5kIGtlcHQgdXAgdGhpcyBiYXR0bGUgZm9yIApzb21lIHR3byBvciB0aHJlZSBob3VycywgdW50aWwgdGhlIGRhcmsgdGhvdWdodHMgCmNhbWUgbXVjaCBsZXNzIGZyZXF1ZW50bHkgYW5kIHRoZSBtYW4gaGltc2VsZiB3YXMgCmJlY29taW5nIGFibGUgdG8gYSBsYXJnZSBleHRlbnQgdG8gaG9sZCBoaXMgb3duLCBzbyAKdGhlIGhlbHBlciBmZWx0IGhpbXNlbGYganVzdGlmaWVkIGluIHJldHVybmluZyB0byBtZS4gCgoKMTA0IAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCkhlIHdhcyBqdXN0IGFib3V0IHRvIHRha2UgaGlzIGRlcGFydHVyZSwgbGVhdmluZyAKYSBmZXcgbGFzdCBzdHJvbmcgZW5jb3VyYWdpbmcgdGhvdWdodHMgZm9yIHRoZSBub3cgCmFsbW9zdCBjaGVlcmZ1bCBzdWZmZXJlciwgd2hlbiBoZSBzYXcgYSBsaXR0bGUgZ2lybCAKKGluIGhlciBhc3RyYWwgYm9keSkgZmx5aW5nIGluIGhlYWRsb25nIHRlcnJvciBiZWZvcmUgCnNvbWUga2luZCBvZiBob2Jnb2JsaW4gb2YgdGhlIGNvbnZlbnRpb25hbCBvZ3JlIAp0eXBlLiBIZSBwcm9tcHRseSBwdXQgaGltc2VsZiBpbiB0aGUgd2F5LCBzYXlpbmc6IArigJxXaGF0IGlzIHRoaXM/4oCdIGFuZCB0aGUgZnJpZ2h0ZW5lZCBjaGlsZCBjbHVuZyB0byAKaGltIGNvbnZ1bHNpdmVseSBhbmQgcG9pbnRlZCB0byB0aGUgcHVyc3VpbmcgCmRlbW9uLiBUaGUgaGVscGVyIGhhcyBzaW5jZSBhZG1pdHRlZCB0aGF0IGhlIGRpZCAKbm90IGF0IGFsbCBsaWtlIHRoZSBsb29rIG9mIGl0IGhpbXNlbGYsIGJ1dCBoZSBzZWVtcyAKdG8gaGF2ZSBmZWx0IHNvbWV3aGF0IGluZGlnbmFudCBvbiBiZWhhbGYgb2YgdGhlIApnaXJsLCBhbmQgaGlzIGluc3RydWN0aW9ucyB3ZXJlIHRoYXQgdG8gYW55dGhpbmcgCndoYXRldmVyIG9mIHRoaXMgbmF0dXJlIGEgYm9sZCBmcm9udCBtdXN0IGFsd2F5cyAKYmUgc2hvd24uIFNvIGhlIHN0b29kIGhpcyBncm91bmQgYW5kIHNldCBoaXMgd2lsbCAKYWdhaW5zdCB0aGUgb2dyZSwgd2hpY2ggZGlkIG5vdCBhcHByb2FjaCB0aGVtLCBidXQgCnJlbWFpbmVkIGF0IGEgbGl0dGxlIGRpc3RhbmNlIHdyaXRoaW5nIGFib3V0LCBnbmFzaC0gCmluZyBpdHMgaHVnZSBwcm9qZWN0aW5nIHRlZXRoLCBhbmQgZXZpZGVudGx5IHRyeWluZyAKdG8gbWFrZSBpdHNlbGYgbG9vayBhcyB0ZXJyaWJsZSBhcyBwb3NzaWJsZS4gCgpBcyB0aGUgc2l0dWF0aW9uIHNob3dlZCBubyBzaWducyBvZiBjaGFuZ2luZywgdGhlIApuZW9waHl0ZSBwcmVzZW50bHkgYmVjYW1lIGltcGF0aWVudCwgYnV0IGhlIGhhZCAKYmVlbiB3YXJuZWQgYWdhaW5zdCBhZ2dyZXNzaXZlIGFjdGlvbiBvZiBhbnkga2luZCAKZXhjZXB0IHVuZGVyIHZlcnkgZGVmaW5pdGUgaW5zdHJ1Y3Rpb25zLCBzbyBoZSBkaWQgCm5vdCBrbm93IHByZWNpc2VseSB3aGF0IHRvIGRvLiBIZSB0aGVyZWZvcmUgY2FtZSAKaW4gc2VhcmNoIG9mIG1lLCBicmluZ2luZyB0aGUgdGVycmlmaWVkIGNoaWxkIHdpdGggCmhpbSwgYnV0IG1vdmluZyB2ZXJ5IHNsb3dseSBhbmQgY2lyY3Vtc3BlY3RseSwgYW5kIAphbHdheXMga2VlcGluZyBoaXMgZmFjZSB0b3dhcmRzIHRoZSB1bnBsZWFzYW50LSAKbG9va2luZyBvYmplY3Qgd2hpY2ggZm9sbG93ZWQgdGhlbSBwZXJzaXN0ZW50bHkgYXQgCmEgbGl0dGxlIGRpc3RhbmNlLiAKCgpUWVBJQ0FMIE9SRElOQVJZLiBDQVNFUyAKCgoxMDUgCgoKKuKAoiBXaGVuIEkgaGFkIHRpbWUgdG8gYXR0ZW5kIHRvIGhpbSwgSSBpbnZlc3RpZ2F0ZWQgCnRoZSBxdWVzdGlvbiwgYW5kIGZvdW5kIHRoYXQgdGhpcyBwb29yIGxpdHRsZSBjaGlsZCAKd2FzIGZyZXF1ZW50bHkgc3ViamVjdCB0byB0aGVzZSBob3JyaWJsZSBuaWdodG1hcmVzLCAKZnJvbSB3aGljaCBoZXIgcGh5c2ljYWwgYm9keSB3b3VsZCB3YWtlIHVwIGluIApxdWl0ZSBhIGNvbnZ1bHNpdmUgY29uZGl0aW9uLCBzb21ldGltZXMgd2l0aCB0ZXJyaWJsZSAK4oCic2hyaWVrcy4gVGhlIHB1cnN1aW5nIGVudGl0eSB3YXMgbm90aGluZyAuYnV0IGFuIAp1bnBsZWFzYW50IHRob3VnaHQtZm9ybSB0ZW1wb3JhcmlseSBhbmltYXRlZCBieSAKYSBtaXNjaGlldm91cyBuYXR1cmUtc3Bpcml0IG9mIGEgbG93IHR5cGUsIHdobyAKc2VlbWVkIHRvIGJlIGluIGdyZWF0IGdsZWUgYW5kIHRvIGRlcml2ZSBhIGtpbmQgb2YgCnNwaXRlZnVsIHBsZWFzdXJlIGZyb20gdGhlIHRlcnJvcnMgb2YgdGhlIGdpcmwuIEkgCmV4cGxhaW5lZCBhbGwgdGhpcyB0byB0aGUgY2hpbGRyZW4sIGFuZCB0aGUgaW5kaWduYW50IApib3kgcHJvbXB0bHkgZGVub3VuY2VkIHRoZSBuYXR1cmUtc3Bpcml0IGFzIHdpY2tlZCAKYW5kIG1hbGljaW91cywgYnV0IEkgcG9pbnRlZCBvdXQgdG8gaGltIHRoYXQgaXQgd2FzIApubyBtb3JlIHNvIHRoYW4gYSBjYXQgcGxheWluZyB3aXRoIGEgbW91c2UsIGFuZCAKdGhhdCBlbnRpdGllcyBhdCBzdWNoIGEgbG93IHN0YWdlIG9mIGV2b2x1dGlvbiB3ZXJlIApzaW1wbHkgZm9sbG93aW5nIHRoZWlyIHVuZGV2ZWxvcGVkIG5hdHVyZXMsIGFuZCAKdGhlcmVmb3JlIGNvdWxkIG5vdCByaWdodGx5IGJlIGRlc2NyaWJlZCBhcyB3aWNrZWQuIAoKQXQgdGhlIHNhbWUgdGltZSB0aGVpciBmb29saXNoIG1pc2NoaWVmIGNvdWxkIG5vdCAKYmUgYWxsb3dlZCB0byBjYXVzZSBzdWZmZXJpbmcgYW5kIHRlcnJvciB0byBodW1hbiAKYmVpbmdzLCBzbyBJIHNob3dlZCBoaW0gaG93IHRvIHNldCBoaXMgd2lsbCBhZ2FpbnN0IAp0aGUgbmF0dXJlLXNwaXJpdCwgYW5kIGRyaXZlIGl0IG91dCBmcm9tIHRoZSBmb3JtLCAKYW5kIHRoZW4gaG93IHRvIGRpc3NpcGF0ZSB0aGUgZm9ybSBieSBhIGRlZmluaXRlIAplZmZvcnQgb2YgaGlzIHdpbGwuIFRoZSBsaXR0bGUgZ2lybCB3YXMgaGFsZi1mZWFyZnVsLCAKYnV0IHdob2xseSBkZWxpZ2h0ZWQgd2hlbiBzaGUgc2F3IGhlciBvZ3JlIGV4cGxvZGUsIAphbmQgdGhlcmUgaXMgcmVhc29uIHRvIGhvcGUgdGhhdCBzaGUgd2lsbCBnYWluIApjb3VyYWdlIGZyb20gdGhpcyBleHBlcmllbmNlLCBhbmQgdGhhdCBmb3IgdGhlIGZ1dHVyZSAKaGVyIHNsZWVwIHdpbGwgYmUgbGVzcyBkaXN0dXJiZWQuIFRoZXJlIGFyZSBzbyBtYW55IAp2YXJpZXRpZXMgb2YgdW5wbGVhc2FudCB0aG91Z2h0LWZvcm1zIHRvIGJlIGZvdW5kIAoKCjEwNiAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgpvbiB0aGUgYXN0cmFsIHBsYW5lLCB0aGUgd29yc3Qgb2YgYWxsIGJlaW5nIHRob3NlIApjb25uZWN0ZWQgd2l0aCBmYWxzZSBhbmQgZm9vbGlzaCByZWxpZ2lvdXMgYmVsaWVmcyAKZGVtb25zIG9mIHZhcmlvdXMga2luZHMsIGFuZCBhbmdyeSBkZWl0aWVzLiBJdCBpcyAKcXVpdGUgYWxsb3dhYmxlIGZvciB0aGUgb2NjdWx0aXN0IHRvIGRlc3Ryb3kgc3VjaCAKY3JlYXR1cmVzLCBzaW5jZSB0aGV5IGFyZSBpbiBubyB3YXkgcmVhbGx5IGFsaXZlLCB0aGF0IAppcyB0byBzYXksIHRoZXkgcmVwcmVzZW50IG5vIHBlcm1hbmVudCBldm9sdmluZyBsaWZlKiAKYnV0IGFyZSBzaW1wbHkgdGVtcG9yYXJ5IGNyZWF0aW9ucy4gCgpBIGNhc2Ugb2Ygc29tZSBpbnRlcmVzdCB3aGljaCBoYXMganVzdCBjb21lIAp1bmRlciBvdXIgbm90aWNlIGlzIHRoYXQgb2YgYSBicm90aGVyIGFuZCBzaXN0ZXIsIAp3aG8gaGFkIGJlZW4gdmVyeSBjbG9zZWx5IGF0dGFjaGVkIHRvIG9uZSBhbm90aGVyIAppbiB5b3V0aC4gVW5mb3J0dW5hdGVseSwgbGF0ZXIsIGEgZGVzaWduaW5nIHdvbWFuIApjYW1lIGJldHdlZW4gdGhlbTsgdGhlIGJyb3RoZXIgY2FtZSB1bmRlciBoZXIgCmluZmx1ZW5jZSBhbmQgd2FzIHRhdWdodCBieSBoZXIgdG8gc3VzcGVjdCBoaXMgCnNpc3RlcuKAmXMgbW90aXZlcy4gVGhlIHNpc3RlciBxdWl0ZSByZWFzb25hYmx5IGRpcy0gCnRydXN0ZWQgdGhlIG90aGVyIHdvbWFuIGFuZCB3YXJuZWQgdGhlIGJyb3RoZXIgCmFnYWluc3QgaGVyOyB0aGUgd2FybmluZyB3YXMgbm90IHRha2VuIGluIGdvb2QgcGFydCwgCmFuZCBhIHNlcmlvdXMgYnJlYWNoIGVuc3VlZC4gVGhlIGluZmF0dWF0aW9uIG9mIAp0aGUgYnJvdGhlciBsYXN0ZWQgZm9yIG1vcmUgdGhhbiBhIHllYXIsIGFuZCBhbGwgdGhpcyAKdGltZSB0aGUgc2lzdGVyIGhlbGQgZW50aXJlbHkgYWxvb2YsIGZvciBzaGUgaGFkIGJlZW4gCmdyb3NzbHkgaW5zdWx0ZWQgYW5kIHdhcyBwcm91ZCBhbmQgdW5mb3JnaXZpbmcuIApCeSBkZWdyZWVzIHRoZSBicm90aGVyIGRpc2NvdmVyZWQgdGhlIHRydWUgY2hhcmFjdGVyIApvZiB0aGUgd29tYW4sIHRob3VnaCBmb3IgbG9uZyBoZSB3b3VsZCBub3QgYmVsaWV2ZSAKaXQsIGFuZCBjbHVuZyB0byBoaXMgZGVsdXNpb25zLiBFdmVuIHdoZW4gaXQgd2FzIAppbXBvc3NpYmxlIGxvbmdlciB0byBtYWludGFpbiBoaXMgYmxpbmQgZmFpdGgsIGhlIApzdGlsbCByZW1haW5lZCBzb21ld2hhdCBzb3JlIHdpdGggcmVnYXJkIHRvIGhpcyAKc2lzdGVyLCBwZXJzdWFkaW5nIGhpbXNlbGYgc29tZWhvdyB0aGF0IGJ1dCBmb3IgaGVyIAppbnRlcmZlcmVuY2UsIGFzIGhlIGNhbGxlZCBpdCwgdGhlIG90aGVyIHdvbWFuIAptaWdodCBoYXZlIHJlbWFpbmVkIGZhaXRoZnVsIHRvIGhpbSwgc28gdGhhdCB0aGUgCgoKVFlQSUNBTCBPUkRJTkFSWSBDQVNFUyAKCgoxMDcgCgoKZXN0cmFuZ2VtZW50IHN0aWxsIHBlcnNpc3RlZCwgZXZlbiB0aG91Z2ggdGhlIHJlYXNvbnMgCmZvciBpdCBoYWQgbGFyZ2VseSBwYXNzZWQgb3V0IG9mIHRoZSBicm90aGVy4oCZcyBsaWZlLiAKCkluIHRoaXMgY2FzZSB0aGUgYmVzdCB0aGluZyB0byBkbyBzZWVtZWQgdG8gYmUgdG8gCnNldCB0d28gYXNzaXN0YW50cyB0byB3b3JrLCBvbmUgd2l0aCB0aGUgYnJvdGhlciBhbmQgCm9uZSB3aXRoIHRoZSBzaXN0ZXIsIHRvIGNhbGwgdXAgcGVyc2lzdGVudGx5IGJlZm9yZSAKdGhlaXIgbWluZHMgcGljdHVyZXMgb2YgdGhlIG9sZCBkYXlzIHdoZW4gdGhleSBsb3ZlZCAKZWFjaCBvdGhlciBzbyBkZWFybHkuIFByZXNlbnRseSwgYWZ0ZXIgdGhlc2UgY3VycmVudHMgCmhhZCBiZWVuIHRob3JvdWdobHkgc2V0IGdvaW5nLCBJIHRhdWdodCB0aGUgYXNzaXN0LSAKYW50cyBob3cgdG8gbWFrZSB0aG91Z2h0LWZvcm1zIHdoaWNoIHdvdWxkIApjb250aW51ZSB0aGlzIHRyZWF0bWVudC4gVGhlIGJyb3RoZXIgYW5kIHNpc3RlciBoYWQgCm9mIGNvdXJzZSBubyBpZGVhIHRoYXQgdGhleSB3ZXJlIGJlaW5nIHRyZWF0ZWQ7IGl0IApqdXN0IHNlZW1lZCB0byBlYWNoIG9mIHRoZW0gdGhhdCB0aG91Z2h0cyBvZiB0aGUgCm90aGVyIHdlcmUgcGVyc2lzdGVudGx5IGFyaXNpbmcg4oCUIHRoYXQgYWxsIHNvcnRzIG9mIAp1bmV4cGVjdGVkIGxpdHRsZSBoYXBwZW5pbmdzIHJlbWluZGVkIHRoZW0gb2YgCmhhcHBpZXIgdGltZXMuIEZvciBhIGxvbmcgdGltZSBwcmlkZSBoZWxkIG91dCwgYnV0IAphdCBsYXN0IHRoZSBicm90aGVyIHJlc3BvbmRlZCB0byB0aGUgY29uc3RhbnQgc3VnZ2VzLSAKdGlvbiwgd2VudCB0byBjYWxsIG9uIGhpcyBzaXN0ZXIsIGFuZCBmb3VuZCBoZXIgCnVuZXhwZWN0ZWRseSBncmFjaW91cywgZm9yZ2l2aW5nLCBhbmQgZ2xhZCB0byBzZWUgCmhpbS4gUmVjb25jaWxpYXRpb24gd2FzIGluc3RhbnRseSBlZmZlY3RlZCwgYW5kIGl0IGlzIApsaXR0bGUgbGlrZWx5IG5vdyB0aGF0IHRoZXkgd2lsbCBhbGxvdyBhbnkgY2xvdWQgdG8gCmNvbWUgYmV0d2VlbiB0aGVtIGFnYWluLiAKCgpDSEFQVEVSIFhWIAoKCldSRUNLUyBBTkQgQ0FUQVNUUk9QSEVTIAoKU29tZXRpbWVzIGl0IGlzIHBvc3NpYmxlIGZvciBtZW1iZXJzIG9mIHRoZSBiYW5kIApvZiBoZWxwZXJzIHRvIGF2ZXJ0IGltcGVuZGluZyBjYXRhc3Ryb3BoZXMgb2YgYSAKc29tZXdoYXQgbGFyZ2VyIG9yZGVyLiBJbiBtb3JlIHRoYW4gb25lIGNhc2UgCndoZW4gdGhlIGNhcHRhaW4gb2YgYSB2ZXNzZWwgaGFzIGJlZW4gY2FycmllZCB1bi0gCnN1c3BlY3RpbmcgZmFyIG91dCBvZiBoaXMgY291cnNlIGJ5IHNvbWUgdW5rbm93biAKY3VycmVudCBvciB0aHJvdWdoIHNvbWUgbWlzdGFrZW4gcmVja29uaW5nLCBhbmQgCmhhcyB0aGVyZWJ5IHJ1biBpbnRvIHNlcmlvdXMgZGFuZ2VyLCBpdCBoYXMgYmVlbiAKcG9zc2libGUgdG8gcHJldmVudCBzaGlwd3JlY2sgYnkgcmVwZWF0ZWRseSBpbXByZXNzLSAKaW5nIHVwb24gaGlzIG1pbmQgYSBmZWVsaW5nIHRoYXQgc29tZXRoaW5nIHdhcyAKd3Jvbmc7IGFuZCBhbHRob3VnaCB0aGlzIGdlbmVyYWxseSBjb21lcyB0aHJvdWdoIAppbnRvIHRoZSBjYXB0YWluJ3MgYnJhaW4nIG1lcmVseSBhcyBhIHZhZ3VlbHkgd2Fybi0gCmluZyBpbnR1aXRpb24sIHlldCBpZiBpdCBvY2N1cnMgYWdhaW4gYW5kIGFnYWluIGhlIGlzIAphbG1vc3QgY2VydGFpbiB0byBnaXZlIGl0IHNvbWUgYXR0ZW50aW9uIGFuZCB0YWtlIApzdWNoIHByZWNhdXRpb25zIGFzIHN1Z2dlc3QgdGhlbXNlbHZlcyB0byBoaW0uIAoKSW4gb25lIGNhc2UsIGZvciBleGFtcGxlLCBpbiB3aGljaCB0aGUgbWFzdGVyIG9mIAphIGJhcnF1ZSB3YXMgbXVjaCBuZWFyZXIgaW4gdG8gdGhlIGxhbmQgdGhhbiBoZSAKc3VwcG9zZWQsIGhlIHdhcyBhZ2FpbiBhbmQgYWdhaW4gcHJlc3NlZCB0byBoZWF2ZSAKdGhlIGxlYWQsIGFuZCB0aG91Z2ggaGUgcmVzaXN0ZWQgdGhpcyBzdWdnZXN0aW9uIGZvciAKc29tZSB0aW1lIGFzIGJlaW5nIHVubmVjZXNzYXJ5IGFuZCBhYnN1cmQsIGhlIGF0IApsYXN0IGdhdmUgdGhlIG9yZGVyIGluIGEgc29tZXdoYXQgaGVzaXRhdGluZyB3YXkuIAoKCldSRUNLUyBBTkQgQ0FUQVNUUk9QSEVTIAoKCjEwOSAKCgpUaGUgcmVzdWx0IGFzdG91bmRlZCBoaW0sIGFuZCBoZSBhdCBvbmNlIHB1dCBoaXMgCnZlc3NlbCBhYm91dCBhbmQgc3Rvb2Qgb2ZmIGZyb20gdGhlIGNvYXN0LCB0aG91Z2ggaXQgCndhcyBub3QgdW50aWwgbW9ybmluZyBjYW1lIHRoYXQgaGUgcmVhbGl6ZWQgYm93IApjbG9zZSBoZSBoYWQgYmVlbiB0byBhbiBhcHBhbGxpbmcgZGlzYXN0ZXIuIAoKT2Z0ZW4sIGhvd2V2ZXIsIGEgY2F0YXN0cm9waGUgaXMga2FybWljIGluIGl0cyAKbmF0dXJlLCBhbmQgY29uc2VxdWVudGx5IGNhbm5vdCBiZSBhdmVydGVkOyBidXQgaXQgCm11c3Qgbm90IHRoZXJlZm9yZSBiZSBzdXBwb3NlZCB0aGF0IGluIHN1Y2ggY2FzZXMgCm5vIGhlbHAgY2FuIGJlIGdpdmVuLiBJdCBtYXkgYmUgdGhhdCB0aGUgcGVvcGxlIApjb25jZXJuZWQgYXJlIGRlc3RpbmVkIHRvIGRpZSwgYW5kIHRoZXJlZm9yZSBjYW5ub3QgCmJlIHNhdmVkIGZyb20gZGVhdGg7IGJ1dCBpbiBtYW55IGNhc2VzIHRoZXkgbWF5IApzdGlsbCBiZSB0byBzb21lIGV4dGVudCBwcmVwYXJlZCBmb3IgaXQsIGFuZCBtYXkgCmNlcnRhaW5seSBiZSBoZWxwZWQgdXBvbiB0aGUgb3RoZXIgc2lkZSBhZnRlciBpdCBpcyAKb3Zlci4gSW5kZWVkLCBpdCBtYXkgYmUgZGVmaW5pdGVseSBzdGF0ZWQgdGhhdCAKd2hlbmV2ZXIgYSBncmVhdCBjYXRhc3Ryb3BoZSBvZiBhbnkga2luZCB0YWtlcyAKcGxhY2UsIHRoZXJlIGlzIGFsc28gYSBzcGVjaWFsIHNlbmRpbmcgb2YgaGVscC4gCgpUd28gcmVjZW50IGNhc2VzIGluIHdoaWNoIHN1Y2ggaGVscCB3YXMgZ2l2ZW4gCndlcmUgdGhlIHNpbmtpbmcgb2YgdGhlIOKAnERydW1tb25kIENhc3RsZeKAmSAxIG9mZiAKQ2FwZSBVc2hhbnQsIGFuZCB0aGUgdGVycmlibGUgY3ljbG9uZSB3aGljaCBkZS0gCnZhc3RhdGVkIHRoZSBjaXR5IG9mIFN0LiBMb3VpcyBpbiBBbWVyaWNhLiBPbiBib3RoIAp0aGVzZSBvY2Nhc2lvbnMgYSBmZXcgbWludXRlc+KAmSBub3RpY2Ugd2FzIGdpdmVuLCBhbmQgCnRoZSBoZWxwZXJzIGRpZCB0aGVpciBiZXN0IHRvIGNhbG0gYW5kIHJhaXNlIG1lbuKAmXMgCm1pbmRzLCBzbyB0aGF0IHdoZW4gdGhlIHNob2NrIGNhbWUgdXBvbiB0aGVtIGl0IAp3YXMgbGVzcyBkaXN0dXJiaW5nIHRoYW4gaXQgbWlnaHQgb3RoZXJ3aXNlIGhhdmUgCmJlZW4uIE5hdHVyYWxseSwgaG93ZXZlciwgdGhlIGdyZWF0ZXIgcGFydCBvZiB0aGUgCndvcmsgZG9uZSB3aXRoIHRoZSB2aWN0aW1zIGluIGJvdGggdGhlc2UgY2FsYW1pdGllcyAKd2FzIGRvbmUgdXBvbiB0aGUgYXN0cmFsIHBsYW5lIGFmdGVyIHRoZXkgaGFkIGxlZnQgCnRoZWlyIHBoeXNpY2FsIGJvZGllczsgYnV0IG9mIHRoaXMgd2Ugc2hhbGwgc3BlYWsgCmxhdGVyLiAKCgpubyAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgpJdCBpcyBzYWQgdG8gcmVsYXRlIGhvdyBvZnRlbiB3aGVuIHNvbWUgY2F0YXMqIAp0cm9waGUgaXMgaW1wZW5kaW5nIHRoZSBoZWxwZXJzIGFyZSBoaW5kZXJlZCBpbiAKdGhlaXIga2luZGx5IG9mZmljZXMgYnkgd2lsZCBwYW5pYyBhbW9uZyB0aG9zZSB3aG9tIAp0aGUgZGFuZ2VyIHRocmVhdGVucyDigJQgb3Igc29tZXRpbWVzLCB3b3JzZSBzdGlsbCwgYnkgCmEgbWFkIG91dGJ1cnN0IG9mIGRydW5rZW5uZXNzIGFtb25nIHRob3NlIHdob20gCnRoZXkgYXJlIHRyeWluZyB0byBhc3Npc3QuIE1hbnkgYSBzaGlwIGhhcyBnb25lIHRvIApoZXIgZG9vbSB3aXRoIGFsbW9zdCBldmVyeSBzb3VsIG9uIGJvYXJkIG1hZCB3aXRoIApkcmluaywgYW5kIHRoZXJlZm9yZSB1dHRlcmx5IGluY2FwYWJsZSBvZiBwcm9maXRpbmcgCmJ5IGFueSBhc3Npc3RhbmNlIG9mZmVyZWQgZWl0aGVyIGJlZm9yZSBkZWF0aCBvciBmb3IgCmEgbG9uZyB0aW1lIGFmdGVyd2FyZHMuIAoKSWYgaXQgc2hvdWxkIGV2ZXIgaGFwcGVuIHRvIGFueSBvZiB1cyB0byBmaW5kIG91ci0gCnNlbHZlcyBpbiBhIHBvc2l0aW9uIG9mIGltbWluZW50IGRhbmdlciB3aGljaCB3ZSAKY2FuIGRvIG5vdGhpbmcgdG8gYXZlcnQsIHdlIHNob3VsZCB0cnkgdG8gcmVtZW1iZXIgCnRoYXQgaGVscCBpcyBjZXJ0YWlubHkgbmVhciB1cywgYW5kIHRoYXQgaXQgcmVzdHMgCmVudGlyZWx5IHdpdGggb3Vyc2VsdmVzIHRvIG1ha2UgdGhlIGhlbHBlcuKAmXMgd29yayAKZWFzeSBvciBkaWZmaWN1bHQuIElmIHdlIGZhY2UgdGhlIGRhbmdlciBjYWxtbHkgYW5kIApicmF2ZWx5LCByZWNvZ25pemluZyB0aGF0IHRoZSB0cnVlIGVnbyBjYW4gaW4gbm8gCndheSBiZSBhZmZlY3RlZCBieSBpdCwgb3VyIG1pbmRzIHdpbGwgdGhlbiBiZSBvcGVuIAp0byByZWNlaXZlIHRoZSBndWlkYW5jZSB3aGljaCB0aGUgaGVscGVycyBhcmUgdHJ5aW5nIAp0byBnaXZlLCBhbmQgdGhpcyBjYW5ub3QgYnV0IGJlIGJlc3QgZm9yIHVzLCB3aGV0aGVyIAppdHMgb2JqZWN0IGJlIHRvIHNhdmUgdXMgZnJvbSBkZWF0aCBvciwgd2hlbiB0aGF0IGlzIAppbXBvc3NpYmxlLCB0byBjb25kdWN0IHVzIHNhZmVseSB0aHJvdWdoIGl0LiAKCkFzc2lzdGFuY2Ugb2YgdGhpcyBsYXR0ZXIga2luZCBoYXMgbm90IGluZnJlcXVlbnRseSAKYmVlbiBnaXZlbiBpbiBjYXNlcyBvZiBhY2NpZGVudHMgdG8gaW5kaXZpZHVhbHMsIGFzIAp3ZWxsIGFzIG9mIG1vcmUgZ2VuZXJhbCBjYXRhc3Ryb3BoZXMuIEl0IHdpbGwgYmUgCnN1ZmZpY2llbnQgdG8gbWVudGlvbiBvbmUgZXhhbXBsZSBhcyBhbiBpbGx1c3RyYXRpb24gCm9mIHdoYXQgaXMgbWVhbnQuIEluIG9uZSBvZiB0aGUgZ3JlYXQgc3Rvcm1zIHdoaWNoIApkaWQgc28gbXVjaCBkYW1hZ2UgYXJvdW5kIG91ciBjb2FzdHMgYSBmZXcgeWVhcnMgCgoKV1JFQ0tTIEFORCBDQVRBU1RST1BIRVMgMTExIAoKYWdvLCBpdCBoYXBwZW5lZCB0aGF0IGEgZmlzaGluZyBib2F0IHdhcyBjYXBzaXplZCAKZmFyIG91dCBhdCBzZWEuIFRoZSBvbmx5IHBlb3BsZSBvbiBib2FyZCB3ZXJlIGFuIApvbGQgZmlzaGVybWFuIGFuZCBhIGJveSwgYW5kIHRoZSBmb3JtZXIgY29udHJpdmVkIAp0byBjbGluZyBmb3IgYSBmZXcgbWludXRlcyB0byB0aGUgb3ZlcnR1cm5lZCBib2F0LiAKVGhlcmUgd2FzIG5vIHBoeXNpY2FsIGhlbHAgYXQgaGFuZCwgYW5kIGV2ZW4gaWYgCnRoZXJlIGhhZCBiZWVuLCBpbiBzdWNoIGEgcmFnaW5nIHN0b3JtIGl0IHdvdWxkIApoYXZlIGJlZW4gaW1wb3NzaWJsZSB0byBkbyBhbnl0aGluZywgc28gdGhhdCB0aGUgCmZpc2hlcm1hbiBrbmV3IHdlbGwgZW5vdWdoIHRoYXQgdGhlcmUgd2FzIG5vIGhvcGUgCm9mIGVzY2FwZSwgYW5kIHRoYXQgZGVhdGggY291bGQgb25seSBiZSBhIHF1ZXN0aW9uIApvZiBhIGZldyBtb21lbnRzLiBIZSBmZWx0IGdyZWF0IHRlcnJvciBhdCB0aGUgCnByb3NwZWN0LCBiZWluZyBlc3BlY2lhbGx5IGltcHJlc3NlZCBieSB0aGUgYXdmdWwgCmxvbmVsaW5lc3Mgb2YgdGhhdCB2YXN0IHdhc3RlIG9mIHdhdGVyczsgYW5kIGhlIHdhcyAKYWxzbyBtdWNoIHRyb3VibGVkIHdpdGggdGhvdWdodHMgb2YgaGlzIHdpZmUgYW5kIApmYW1pbHksIGFuZCB0aGUgZGlmZmljdWx0aWVzIGluIHdoaWNoIHRoZXkgd291bGQgYmUgCmxlZnQgYnkgaGlzIHN1ZGRlbiBkZWNlYXNlLiAKCk91ciBQcmVzaWRlbnQsIHdobyBoYXBwZW5lZCB0byBiZSBwYXNzaW5nLCBzZWUtIAppbmcgYWxsIHRoaXMsIGVuZGVhdm91cmVkIHRvIGNvbWZvcnQgaGltLCBidXQgZmluZGluZyAKaGlzIG1pbmQgdG9vIG11Y2ggZGlzdHVyYmVkIHRvIGJlIGltcHJlc3Npb25hYmxlLCAKc2hlIHRob3VnaHQgaXQgYWR2aXNhYmxlIHRvIHNob3cgaGVyc2VsZiB0byBoaW0gaW4gCm9yZGVyIHRvIGFzc2lzdCBoaW0gdGhlIGJldHRlci4gSW4gcmVsYXRpbmcgdGhlIHN0b3J5IAphZnRlcndhcmRzIHNoZSBzYWlkIHRoYXQgdGhlIGNoYW5nZSB3aGljaCBjYW1lIApvdmVyIHRoZSBmaXNoZXJtYW7igJlzIGZhY2UgYXQgc2lnaHQgb2YgaGVyIHdhcyB3b25kZXItIApmdWwgYW5kIGJlYXV0aWZ1bCB0byBzZWU7IHdpdGggdGhlIHNoaW5pbmcgZm9ybSAKc3RhbmRpbmcgdXBvbiB0aGUgYm9hdCBhYm92ZSBoaW0gaGUgY291bGQgbm90IGJ1dCAKdGhpbmsgdGhhdCBhbiBBbmdlbCBoYWQgYmVlbiBzZW50IHRvIGNvbWZvcnQgaGltIAppbiBoaXMgdHJvdWJsZSwgYW5kIHRoZXJlZm9yZSBoZSBmZWx0IHRoYXQgbm90IG9ubHkgCndvdWxkIGhlIGhpbXNlbGYgYmUgY2FycmllZCBzYWZlbHkgdGhyb3VnaCB0aGUgCmdhdGVzIG9mIGRlYXRoLCBidXQgdGhhdCBwcm92aXNpb24gd291bGQgYXNzdXJlZGx5IAoKCjExMiAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgpiZSBtYWRlIGZvciBoaXMgZmFtaWx5IGFsc28uIFNvLCB3aGVuIGRlYXRoIGNhbWUgCnRvIGhpbSBhIGZldyBtb21lbnRzIGxhdGVyLCBoZSB3YXMgaW4gYSBmcmFtZSBvZiAKbWluZCB2ZXJ5IGRpZmZlcmVudCBmcm9tIHRoZSB0ZXJyb3IgYW5kIHBlcnBsZXhpdHkgCndoaWNoIGhhZCBwcmV2aW91c2x5IG92ZXItY29tZSBoaW07IGFuZCBuYXR1cmFsbHkgCndoZW4gaGUgcmVjb3ZlcmVkIGNvbnNjaW91c25lc3MgdXBvbiB0aGUgYXN0cmFsIApwbGFuZSBhbmQgZm91bmQgdGhlICLigJhBbmdlbOKAnSBzdGlsbCBiZXNpZGUgaGltLCBoZSAKZmVsdCBoaW1zZWxmIGF0IGhvbWUgd2l0aCBoZXIsIGFuZCB3YXMgcHJlcGFyZWQgdG8gCmFjY2VwdCBoZXIgYWR2aWNlIGFzIHJlZ2FyZHMgdGhlIG5ldyBsaWZlIHVwb24gd2hpY2ggCmhlIGhhZCBlbnRlcmVkLiAKClNvbWUgdGltZSBsYXRlciBzaGUgd2FzIGVuZ2FnZWQgaW4gYW5vdGhlciBwaWVjZSAKb2Ygd29yayBvZiBzaW1pbGFyIGNoYXJhY3RlciwgdGhlIHN0b3J5IG9mIHdoaWNoIHNoZSAKaGFzIHNpbmNlIHRvbGQgYXMgZm9sbG93czogCgrigJxZb3UgcmVtZW1iZXIgdGhhdCBzdGVhbWVyIHRoYXQgd2VudCBkb3duIGluIAp0aGUgY3ljbG9uZSBhdCB0aGUgZW5kIG9mIGxhc3QgTm92ZW1iZXI7IEkgYmV0b29rIApteXNlbGYgdG8gdGhlIGNhYmluIHdoZXJlIGFib3V0IGEgZG96ZW4gd29tZW4gaGFkIApiZWVuIHNodXQgaW4sIGFuZCBmb3VuZCB0aGVtIHdhaWxpbmcgaW4gdGhlIG1vc3QgCnBpdGlmdWwgbWFubmVyLCBzb2JiaW5nIGFuZCBtb2FuaW5nIHcgVCBpdGggZmVhci4gClRoZSAuIHNoaXAgaGFkIHRvIGZvdW5kZXIg4oCUIG5vIGFpZCB3YXMgcG9zc2libGUg4oCUIGFuZCAKdG8gZ28gb3V0IG9mIHRoZSB3b3JsZCBpbiB0aGlzIHN0YXRlIG9mIGZyYW50aWMgdGVycm9yIAppcyB0aGUgd29yc3QgcG9zc2libGUgd2F5IHRvIGVudGVyIHRoZSBuZXh0LiBTbyBpbiAKb3JkZXIgdG8gY2FsbSB0aGVtIEkgbWF0ZXJpYWxpemVkIG15c2VsZiwgYW5kIG9mIApjb3Vyc2UgdGhleSB0aG91Z2h0IEkgd2FzIGFuIEFuZ2VsLCBwb29yIHNvdWxzOyAKdGhleSBhbGwgZmVsbCBvbiB0aGVpciBrbmVlcyBhbmQgcHJheWVkIG1lIHRvIHNhdmUgCnRoZW0sIGFuZCBvbmUgcG9vciBtb3RoZXIgcHVzaGVkIGhlciBiYWJ5IGludG8gCm15IGFybXMsIGltcGxvcmluZyBtZSB0byBzYXZlIHRoYXQgYXQgbGVhc3QuIFRoZXkgCnNvb24gZ3JldyBxdWlldCBhbmQgY29tcG9zZWQgYXMgd2UgdGFsa2VkLCBhbmQgCnRoZSB3ZWUgYmFieSB3ZW50IHRvIHNsZWVwIHNtaWxpbmcsIGFuZCBwcmVzZW50bHkgCnRoZXkgYWxsIGZlbGwgYXNsZWVwIHBlYWNlZnVsbHksIGFuZCBJIGZpbGxlZCB0aGVpciAKCgpXUkVDS1MgQU5EIENBVEFTVFJPUEhFUyAKCgoxMTMgCgoKbWluZHMgd2l0aCB0aG91Z2h0cyBvZiB0aGUgaGVhdmVuLXdvcmxkLCBzbyB0aGF0IAp0aGV5IGRpZCBub3Qgd2FrZSB3aGVuIHRoZSBzaGlwIG1hZGUgaGVyIGZpbmFsIApwbHVuZ2UgZG93bndhcmRzLiAxIHdlbnQgZG93biB3aXRoIHRoZW0gdG8gCmVuc3VyZSB0aGVpciBzbGVlcGluZyB0aHJvdWdoIHRoZSBsYXN0IG1vbWVudHMsLCAKYW5kIHRoZXkgbmV2ZXIgc3RpcnJlZCBhcyB0aGVpciBzbGVlcCBiZWNhbWUgZGVhdGgu4oCZKiAKRXZpZGVudGx5IGluIHRoaXMgY2FzZSwgdG9vLCB0aG9zZSB3aG8gd2VyZSB0aHVzLSAKaGVscGVkIGhhZCBub3Qgb25seSB0aGUgZW5vcm1vdXMgYWR2YW50YWdlIG9mIApiZWluZyBlbmFibGVkIHRvIG1lZXQgZGVhdGggY2FsbWx5IGFuZCByZWFzb25hYmx5LCwgCmJ1dCBhbHNvIHRoZSBzdGlsbCBncmVhdGVyIGFpZCBvZiBiZWluZyByZWNlaXZlZCBvbiAKaXRzIGZhcnRoZXIgc2hvcmUgYnkgb25lIHdob20gdGhleSB3ZXJlIGFscmVhZHkgCmRpc3Bvc2VkIHRvIGxvdmUgYW5kIHRydXN0IOKAlCBvbmUgd2hvIHRob3JvdWdobHkgCnVuZGVyc3Rvb2QgdGhlIG5ldyB3b3JsZCBpbiB3aGljaCB0aGV5IGZvdW5kIAp0aGVtc2VsdmVzLCBhbmQgY291bGQgbm90IG9ubHkgcmVhc3N1cmUgdGhlbSBhcyB0byAKdGhlaXIgc2FmZXR5LCBidXQgYWR2aXNlIHRoZW0gaG93IHRvIG9yZGVyIHRoZWlyIApsaXZlcyB1bmRlciB0aGVzZSBtdWNoLWFsdGVyZWQgY2lyY3Vtc3RhbmNlcy4gQW5kIAp0aGlzIGJyaW5ncyB1cyB0byB0aGUgY29uc2lkZXJhdGlvbiBvZiBvbmUgb2YgdGhlIApsYXJnZXN0IGFuZCBtb3N0IGltcG9ydGFudCBkZXBhcnRtZW50cyBvZiB0aGUgd29yayAKb2YgaW52aXNpYmxlIGhlbHBlcnMg4oCUIHRoZSBndWlkYW5jZSBhbmQgYXNzaXN0YW5jZSAKd2hpY2ggdGhleSBhcmUgYWJsZSB0byBnaXZlIHRvIHRoZSBkZWFkLiAKCgo4IAoKCkNIQVBURVIgWFZJIAoKCldPUksgQU1PTkcgVEhFIERFQUQgCgpJdCBpcyBvbmUgb2YgdGhlIG1hbnkgZXZpbHMgcmVzdWx0aW5nIGZyb20gdGhlIAphYnN1cmRseSBlcnJvbmVvdXMgdGVhY2hpbmcgYXMgdG8gY29uZGl0aW9ucyAKYWZ0ZXIgZGVhdGggd2hpY2ggaXMgdW5mb3J0dW5hdGVseSBjdXJyZW50IGluIG91ciAKd2VzdGVybiB3b3JsZCwgdGhhdCB0aG9zZSB3aG8gaGF2ZSByZWNlbnRseSBzaGFrZW4gCm9mZiB0aGlzIG1vcnRhbCBjb2lsIGFyZSB1c3VhbGx5IG11Y2ggcHV6emxlZCBhbmQgCm9mdGVuIHNlcmlvdXNseSBmcmlnaHRlbmVkIGF0IGZpbmRpbmcgZXZlcnl0aGluZyBzbyAKZGlmZmVyZW50IGZyb20gd2hhdCB0aGVpciByZWxpZ2lvbiBoYWQgbGVkIHRoZW0gdG8gCmV4cGVjdC4gVGhlIG1lbnRhbCBhdHRpdHVkZSBvZiBhIGxhcmdlIG51bWJlciBvZiAKc3VjaCBwZW9wbGUgJ3dhcyBwaXRoaWx5IHZvaWNlZCB0aGUgb3RoZXIgZGF5IGJ5IGFuIApFbmdsaXNoIGdlbmVyYV0sIHdobyB0aHJlZSBkYXlzIGFmdGVyIGhpcyBkZWF0aCBtZXQgCm9uZSBvZiB0aGUgYmFuZCBvZiBoZWxwZXJzIHdob20gaGUgaGFkIGtub3duIGluIApwaHlzaWNhbCBsaWZlLiBBZnRlciBleHByZXNzaW5nIGhpcyBncmVhdCByZWxpZWYgdGhhdCAKaGUgaGFkIGF0IGxhc3QgZm91bmQgc29tZW9uZSB3aXRoIHdob20gaGUgd2FzIAphYmxlIHRvIGNvbW11bmljYXRlLCBoaXMgZmlyc3QgcmVtYXJrIHdhczog4oCcQnV0IGlmIApJIGFtIGRlYWQsIHdoZXJlIGFtIEk/IEZvciBpZiB0aGlzIGlzIGhlYXZlbiBJIApkb27igJl0IHRoaW5rIG11Y2ggb2YgaXQ7IGFuZCBpZiBpdCBpcyBoZWxsLCBpdCBpcyBiZXR0ZXIgCnRoYW4gSSBleHBlY3RlZC7igJ0gCgpCdXQgdW5mb3J0dW5hdGVseSBhIGZhciBncmVhdGVyIG51bWJlciB0YWtlIAp0aGluZ3MgbGVzcyBwaGlsb3NvcGhpY2FsbHkuIFRoZXkgaGF2ZSBiZWVuIHRhdWdodCAKCgpXT1JLIEFNT05HIFRIRSBERUFEIAoKCjExNSAKCgp0aGF0IGFsbCBtZW4gYXJlIGRlc3RpbmVkIHRvIGV0ZXJuYWwgZmxhbWVzIGV4Y2VwdCBhIApmYXZvdXJlZCBmZXcgd2hvIGFyZSBzdXBlcmh1bWFubHkgZ29vZDsgYW5kIApzaW5jZSBhIHZlcnkgc21hbGwgYW1vdW50IG9mIHNlbGYtZXhhbWluYXRpb24gY29uLSAKdmluY2VzIHRoZW0gdGhhdCB0aGV5IGRvIG5vdCBiZWxvbmcgdG8gdGhhdCBjYXRlLSAKZ29yeSwgdGhleSBhcmUgYnV0IHRvbyBvZnRlbiBpbiBhIGNvbmRpdGlvbiBvZiBwYW5pYyAKdGVycm9yLCBkcmVhZGluZyBldmVyeSBtb21lbnQgdGhhdCB0aGUgbmV3IHdvcmxkIAppbiB3aGljaCB0aGV5IGZpbmQgdGhlbXNlbHZlcyBtYXkgZGlzc29sdmUgYW5kIApkcm9wIHRoZW0gaW50byB0aGUgY2x1dGNoZXMgb2YgdGhlIGRldmlsLCBpbiB3aG9tIAp0aGV5IGhhdmUgYmVlbiBzZWR1bG91c2x5IHRhdWdodCB0byBiZWxpZXZlLiBJbiBtYW55IApjYXNlcyB0aGV5IHNwZW5kIGxvbmcgcGVyaW9kcyBvZiBhY3V0ZSBtZW50YWwgc3VmLSAKZmVyaW5nIGJlZm9yZSB0aGV5IGNhbiBmcmVlIHRoZW1zZWx2ZXMgZnJvbSB0aGUgZmF0YWwgCmluZmx1ZW5jZSBvZiB0aGlzIGJsYXNwaGVtb3VzIGRvY3RyaW5lIG9mIGV2ZXJsYXN0LSAKaW5nIHB1bmlzaG1lbnQg4oCUIGJlZm9yZSB0aGV5IGNhbiByZWFsaXplIHRoYXQgdGhlIAp3b3JsZCBpcyBnb3Zlcm5lZCwgbm90IGFjY29yZGluZyB0byB0aGUgY2FwcmljZSBvZiAKYSBoaWRlb3VzIGRlbW9uIHdobyBnbG9hdHMgb3ZlciBodW1hbiBhbmd1aXNoLCAKYnV0IGFjY29yZGluZyB0byBhIGJlbmV2b2xlbnQgYW5kIHdvbmRlcmZ1bGx5IApwYXRpZW50IGxhdyBvZiBldm9sdXRpb24sIHdoaWNoIGlzIGFic29sdXRlbHkganVzdCAKaW5kZWVkLCBidXQgeWV0IGFnYWluIGFuZCBhZ2FpbiBvZmZlcnMgdG8gbWFuIG9wcG9yLSAKdHVuaXRpZXMgb2YgcHJvZ3Jlc3MsIGlmIGhlIHdpbGwgYnV0IHRha2UgdGhlbSwgYXQgCmV2ZXJ5IHN0YWdlIG9mIGhpcyBjYXJlZXIuIAoKSXQgb3VnaHQgaW4gZmFpcm5lc3MgdG8gYmUgbWVudGlvbmVkIHRoYXQgaXQgaXMgCm9ubHkgYW1vbmcgd2hhdCBhcmUgY2FsbGVkIHByb3Rlc3RhbnQgY29tbXVuaXRpZXMgCnRoYXQgdGhpcyB0ZXJyaWJsZSBldmlsIGFzc3VtZXMgaXRzIG1vc3QgYWdncmF2YXRlZCAKZm9ybS4g4oCcIFRoZSBncmVhdCBSb21hbiBDYXRob2xpYyBDaHVyY2gsIHdpdGggaXRzIApkb2N0cmluZSBvZiBwdXJnYXRvcnksIGFwcHJvYWNoZXMgbXVjaCBtb3JlIG5lYXJseSAKdG8gYSBjb25jZXB0aW9uIG9mIHRoZSBhc3RyYWwgcGxhbmUsIGFuZCBpdHMgZGV2b3V0IAptZW1iZXJzIGF0IGFueSByYXRlIHJlYWxpemUgdGhhdCB0aGUgc3RhdGUgaW4gd2hpY2ggCnRoZXkgZmluZCB0aGVtc2VsdmVzIHNob3J0bHkgYWZ0ZXIgZGVhdGggaXMgbWVyZWx5IAoKCjExNiAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgp0ZW1wb3JhcnksIGFuZCB0aGF0IGl0IGlzIHRoZWlyIGJ1c2luZXNzIHRvIGVuZGVhdi0gCm91ciB0byByYWlzZSB0aGVtc2VsdmVzIG91dCBvZiBpdCBhcyBzb29uIGFzIG1heSBiZSAKYnkgaW50ZW5zZSBzcGlyaXR1YWwgYXNwaXJhdGlvbiwgd2hpbGUgdGhleSBhY2NlcHQgCmFueSBzdWZmZXJpbmcgd2hpY2ggbWF5IGNvbWUgdG8gdGhlbSBhcyBuZWNlc3NhcnkgCmZvciB0aGUgd2VhcmluZyBhd2F5IG9mIHRoZSBpbXBlcmZlY3Rpb25zIGluIHRoZWlyIApjaGFyYWN0ZXIgYmVmb3JlIHRoZXkgY2FuIHBhc3MgdG8gaGlnaGVyIGFuZCBicmlnaHQtIAplciByZWdpb25zLiAKCkl0IHdpbGwgdGh1cyBiZSBzZWVuIHRoYXQgdGhlcmUgaXMgcGxlbnR5IG9mIHdvcmssIApmb3IgdGhlIGhlbHBlcnMgdG8gZG8gYW1vbmcgdGhlIG5ld2x5IGRlYWQsIGZvciBpbiAKdGhlIHZhc3QgbWFqb3JpdHkgb2YgY2FzZXMgdGhleSBuZWVkIHRvIGJlIGNhbG1lZCAKYW5kIHJlYXNzdXJlZCwgdG8gYmUgY29tZm9ydGVkIGFuZCBpbnN0cnVjdGVkLiBJbiAKdGhlIGFzdHJhbCwganVzdCBhcyBpbiB0aGUgcGh5c2ljYWwgd29ybGQsIHRoZXJlIGFyZSAKbWFueSB3aG8gYXJlIGJ1dCBsaXR0bGUgZGlzcG9zZWQgdG8gdGFrZSBhZHZpY2UgCmZyb20gdGhvc2Ugd2hvIGtub3cgYmV0dGVyIHRoYW4gdGhleTsgeWV0IHRoZSB2ZXJ5IApzdHJhbmdlbmVzcyBvZiB0aGUgY29uZGl0aW9ucyBzdXJyb3VuZGluZyB0aGVtIDEgCnJlbmRlcnMgbWFueSBvZiB0aGUgZGVhZCB3aWxsaW5nIHRvIGFjY2VwdCB0aGUgZ3VpLSAKZGFuY2Ugb2YgdGhvc2UgdG8gd2hvbSB0aGVzZSBjb25kaXRpb25zIGFyZSBvYnZpLSAKb3VzbHkgZmFtaWxpYXI7IGFuZCBtYW55IGEgbWFu4oCZcyBzdGF5IG9uIHRoYXQgcGxhbmUgCmhhcyBiZWVuIGNvbnNpZGVyYWJseSBzaG9ydGVuZWQgYnkgdGhlIGVhcm5lc3QgCmVmZm9ydHMgb2YgdGhpcyBiYW5kIG9mIGVuZXJnZXRpYyB3b3JrZXJzLiAKCk5vdCwgYmUgaXQgdW5kZXJzdG9vZCwgdGhhdCB0aGUga2FybWEgb2YgdGhlIGRlYWQgCm1hbiBjYW4gaW4gYW55IHdheSBoZSBhbHRlcmVkOyBoZSBoYXMgYnVpbHQgZm9yIApoaW1zZWxmIGR1cmluZyBsaWZlIGFuIGFzdHJhbCBib2R5IG9mIGEgY2VydGFpbiBkZWdyZWUgCm9mIGRlbnNpdHksIGFuZCB1bnRpbCB0aGF0IGJvZHkgaXMgc3VmZmljaWVudGx5IGRpcy0gCnNvbHZlZCwgaGUgY2Fubm90IHBhc3Mgb24gaW50byB0aGUgaGVhdmVuLXdvcmxkIApiZXlvbmQ7IGJ1dCBoZSBuZWVkIG5vdCBsZW5ndGhlbiB0aGUgcGVyaW9kIG5lY2VzLSAKc2FyeSBmb3IgdGhhdCBwcm9jZXNzIGJ5IGFkb3B0aW5nIGFuIGltcHJvcGVyIAphdHRpdHVkZS4gCgoKV09SSyBBTU9ORyBUSEUgREVBRCAKCgoxMTcgCgoKQWxsIHN0dWRlbnRzIG91Z2h0IGNsZWFybHkgdG8gZ3Jhc3AgdGhlIHRydXRoIHRoYXQgCnRoZSBsZW5ndGggb2YgYSBtYW7igJlzIGFzdHJhbCBsaWZlIGFmdGVyIGhlIGhhcyBwdXQgb2ZmIApoaXMgcGh5c2ljYWwgYm9keSBkZXBlbmRzIG1haW5seSB1cG9uIHR3byBmYWN0b3JzIArigJQgdGhlIG5hdHVyZSBvZiBoaXMgcGFzdCBwaHlzaWNhbCBsaWZlLCBhbmQgaGlzIGF0dGktIAp0dWRlIG9mIG1pbmQgYWZ0ZXIgd2hhdCB3ZSBjYWxsIGRlYXRoLiBEdXJpbmcgaGlzIAplYXJ0aC1saWZlIGhlIGlzIGNvbnN0YW50bHkgaW5mbHVlbmNpbmcgdGhlIGJ1aWxkaW5nIApvZiBtYXR0ZXIgaW50byBoaXMgYXN0cmFsIGJvZHkuIEhlIGFmZmVjdHMgaXQgZGlyZWN0bHkgCmJ5IHRoZSBwYXNzaW9ucywgZW1vdGlvbnMgYW5kIGRlc2lyZXMgd2hpY2ggaGUgYWxsb3dzIAp0byBob2xkIHN3YXkgb3ZlciBoaW07IGhlIGFmZmVjdHMgaXQgaW5kaXJlY3RseSBmcm9tIAphYm92ZSBieSB0aGUgYWN0aW9uIHVwb24gaXQgb2YgaGlzIHRob3VnaHRzLCBhbmQgCmZyb20gYmVsb3cgYnkgdGhlIGRldGFpbHMgb2YgaGlzIHBoeXNpY2FsIGxpZmUg4oCUIGhpcyAKY29udGluZW5jZSBvciBoaXMgZGViYXVjaGVyeSwgaGlzIGNsZWFubGluZXNzIG9yIGhpcyAKdW5jbGVhbmxpbmVzcywgaGlzIGZvb2QgYW5kIGhpcyBkcmluay4gCgpJZiBieSBwZXJzaXN0ZW5jZSBpbiBwZXJ2ZXJzaXR5IGFsb25nIGFueSBvZiB0aGVzZSAKbGluZXMgaGUgaXMgc28gc3R1cGlkIGFzIHRvIGJ1aWxkIGZvciBoaW1zZWxmIGEgY29hcnNlIAphbmQgZ3Jvc3MgYXN0cmFsIHZlaGljbGUsIGhhYml0dWF0ZWQgdG8gcmVzcG9uZGluZyAKb25seSB0byB0aGUgbG93ZXIgdmlicmF0aW9ucyBvZiB0aGUgcGxhbmUsIGhlIHdpbGwgCmZpbmQgaGltc2VsZiBhZnRlciBkZWF0aCBib3VuZCB0byB0aGF0IHBsYW5lIGR1cmluZyAnIAphIGxvbmcgYW5kIHNsb3cgcHJvY2VzcyBvZiB0aGF0IGFzdHJhbCBib2R54oCZcyBkaXMtIAppbnRlZ3JhdGlvbi4gT24gdGhlIG90aGVyIGhhbmQgaWYgYnkgZGVjZW50IGFuZCAKY2FyZWZ1bCBsaXZpbmcgaGUgZ2l2ZXMgaGltc2VsZiBhIHZlaGljbGUgbWFpbmx5IApjb21wb3NlZCBvZiBmaW5lciBtYXRlcmlhbCwgaGUgd2lsbCBoYXZlIHZlcnkgbXVjaCAKbGVzcyBwb3N0LW1vcnRlbSB0cm91YmxlIGFuZCBkaXNjb21mb3J0LCBhbmQgaGlzIApldm9sdXRpb24gd2lsbCBwcm9jZWVkIG11Y2ggbW9yZSByYXBpZGx5IGFuZCAKZWFzaWx5LiAKClRoaXMgbXVjaCBpcyBnZW5lcmFsbHkgdW5kZXJzdG9vZCwgYnV0IHRoZSAKc2Vjb25kIGdyZWF0IGZhY3RvciDigJQgaGlzIGF0dGl0dWRlIG9mIG1pbmQgYWZ0ZXIgCmRlYXRoIOKAlCBzZWVtcyBvZnRlbiB0byBiZSBmb3Jnb3R0ZW4uIFRoZSBkZXNpcmFibGUgCgoKMTE4IAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCnRoaW5nIGlzIGZvciBoaW0gdG8gcmVhbGl6ZSBoaXMgcG9zaXRpb24gb24gdGhpcyAKcGFydGljdWxhciBsaXR0bGUgYXJjIG9mIGhpcyBldm9sdXRpb24g4oCUIHRvIGxlYXJuIHRoYXQgCmhlIGlzIGF0IHRoaXMgc3RhZ2Ugd2l0aGRyYXdpbmcgc3RlYWRpbHkgaW53YXJkIAp0b3dhcmRzIHRoZSBwbGFuZSBvZiB0aGUgdHJ1ZSBlZ28sIGFuZCB0aGF0IGNvbi0gCnNlcXVlbnRseSBpdCBpcyBoaXMgYnVzaW5lc3MgdG8gZGlzZW5nYWdlIGhpcyB0aG91Z2h0cyAKYXMgZmFyIGFzIG1heSBiZSBmcm9tIHRoaW5ncyBwaHlzaWNhbCwgYW5kIHRvIGZpeCAKaGlzIGF0dGVudGlvbiBtb3JlIGFuZCBtb3JlIHVwb24gdGhvc2Ugc3Bpcml0dWFsIAptYXR0ZXJzIHdoaWNoIHdpbGwgb2NjdXB5IGhpbSBkdXJpbmcgaGlzIGxpZmUgaW4gdGhlIApoZWF2ZW4td29ybGQuIEJ5IGRvaW5nIHRoaXMgaGUgd2lsbCBncmVhdGx5IGZhY2lsaS0gCnRhdGUgdGhlIG5hdHVyYWwgYXN0cmFsIGRpc2ludGVncmF0aW9uLCBhbmQgd2lsbCBhdm9pZCAKdGhlIHNhZGx5IGNvbW1vbiBtaXN0YWtlIG9mIHVubmVjZXNzYXJpbHkgZGVsYXlpbmcgCmhpbXNlbGYgdXBvbiB0aGUgbG93ZXIgbGV2ZWxzIG9mIHdoYXQgc2hvdWxkIGJlIHNvIAp0ZW1wb3JhcnkgYSByZXNpZGVuY2UuIAoKQnV0IG1hbnkgb2YgdGhlIGRlYWQgY29uc2lkZXJhYmx5IHJldGFyZCB0aGUgCnByb2Nlc3Mgb2YgZGlzc29sdXRpb24gYnkgY2xpbmdpbmcgcGFzc2lvbmF0ZWx5IHRvIAp0aGUgZWFydGggd2hpY2ggdGhleSBoYXZlIGxlZnQ7IHRoZXkgc2ltcGx5IHdpbGwgCm5vdCB0dXJuIHRoZWlyIHRob3VnaHRzIGFuZCBkZXNpcmVzIHVwd2FyZCwgYnV0IApzcGVuZCB0aGVpciB0aW1lIGluIHN0cnVnZ2xpbmcgd2l0aCBhbGwgdGhlaXIgbWlnaHQgCnRvIGtlZXAgaW4gZnVsbCB0b3VjaCB3aXRoIHRoZSBwaHlzaWNhbCBwbGFuZSwgdGh1cyAKY2F1c2luZyBncmVhdCB0cm91YmxlIHRvIGFueW9uZSB3aG8gbWF5IGJlIHRyeWluZyAKdG8gaGVscCB0aGVtLiBPbmx5IGluIGVhcnRobHkgbWF0dGVycyBoYXZlIHRoZXkgCmV2ZXIgaGFkIGFueSBsaXZpbmcgaW50ZXJlc3QsIGFuZCB0aGV5IGNsaW5nIHRvIHRoZW0gCndpdGggZGVzcGVyYXRlIHRlbmFjaXR5IGV2ZW4gYWZ0ZXIgZGVhdGguIE5hdHVyYWxseSAKYXMgdGltZSBwYXNzZXMgb24gdGhleSBmaW5kIGl0IGluY3JlYXNpbmdseSBkaWZmaWN1bHQgCnRvIGtlZXAgaG9sZCBvZiB0aGluZ3MgZG93biBoZXJlLCBidXQgaW5zdGVhZCBvZiAKd2VsY29taW5nIGFuZCBlbmNvdXJhZ2luZyB0aGlzIHByb2Nlc3Mgb2YgZ3JhZHVhbCAKcmVmaW5lbWVudCBhbmQgc3Bpcml0dWFsaXphdGlvbiB0aGV5IHJlc2lzdCBpdCB2aWdvci0gCm91c2x5IGJ5IGV2ZXJ5IG1lYW5zIGluIHRoZWlyIHBvd2VyLiAKCgpXT1JLIEFNT05HIFRIRSBERUFEIAoKCjExOSAKCgpPZiBjb3Vyc2UgdGhlIG1pZ2h0eSBmb3JjZSBvZiBldm9sdXRpb24gaXMgZXZlbi0gCnR1YWxseSB0b28gc3Ryb25nIGZvciB0aGVtLCBhbmQgdGhleSBhcmUgc3dlcHQgb24gCmluIGl0cyBiZW5lZmljZW50IGN1cnJlbnQsIHlldCB0aGV5IGZpZ2h0IGV2ZXJ5IHN0ZXAgCm9mIHRoZSB3YXksIHRoZXJlYnkgbm90IG9ubHkgY2F1c2luZyB0aGVtc2VsdmVzIGEgCnZhc3QgYW1vdW50IG9mIGVudGlyZWx5IHVubmVjZXNzYXJ5IHBhaW4gYW5kIHNvcnJvdywgCmJ1dCBhbHNvIHNlcmlvdXNseSBkZWxheWluZyB0aGVpciB1cHdhcmQgcHJvZ3Jlc3MgCmFuZCBwcm9sb25naW5nIHRoZWlyIHN0YXkgaW4gYXN0cmFsIHJlZ2lvbnMgdG8gYW4gCmFsbW9zdCBpbmRlZmluaXRlIGV4dGVudC4gSW4gY29udmluY2luZyB0aGVtIHRoYXQgCnRoaXMgaWdub3JhbnQgYW5kIGRpc2FzdHJvdXMgb3Bwb3NpdGlvbiB0byB0aGUgY29zbWljIAp3aWxsIGlzIGNvbnRyYXJ5IHRvIHRoZSBsYXdzIG9mIG5hdHVyZSwgYW5kIHBlcnN1YWQtIAppbmcgdGhlbSB0byBhZG9wdCBhbiBhdHRpdHVkZSBvZiBtaW5kIHdoaWNoIGlzIHRoZSAKZXhhY3QgcmV2ZXJzYWwgb2YgaXQsIGxpZXMgYSBncmVhdCBwYXJ0IG9mIHRoZSB3b3JrIG9mIAp0aG9zZSB3aG8gYXJlIHRyeWluZyB0byBoZWxwLiAKClZlcnkgbXVjaCBtb3JlIHRoYW4gdGhpcyBjYW4gYmUgZG9uZSBieSB0aGUgCmhlbHBlcnMgZm9yIHRob3NlIHdobyBoYXZlIHN0dWRpZWQgdGhlc2Ugc3ViamVjdHMsIAphbmQgaGF2ZSBsZWFybnQgZHVyaW5nIGxpZmUgdG8gY29udHJvbCB0aGUgbG93ZXIgCm5hdHVyZS4gQXMgd2FzIHN0YXRlZCBpbiB0aGUgbWFudWFsIG9uIFRoZSBBc3RyYWwgClBsYW5lLCBhbmQgaW4gbXkgYm9vayBvbiBUaGUgT3RoZXIgU2lkZSBvZiBEZWF0aCAqIAp0aGUgbWF0dGVyIG9mIHRoZSBhc3RyYWwgYm9keSBpcyBhbHdheXMgcmVhcnJhbmdlZCAKaW4gY29uY2VudHJpYyBzaGVsbHMgaW1tZWRpYXRlbHkgYWZ0ZXIgZGVhdGggYnkgdGhlIAphY3Rpb24gb2YgdGhlIGRlc2lyZS1lbGVtZW50YWw7IGFuZCBpdCBpcyB0aGlzIHdoaWNoIApsaW1pdHMgdGhlIGNvbnNjaW91c25lc3MgZm9yIHRoZSB0aW1lIHRvIHRoZSBsb3dlc3QgCnN1YnBsYW5lLiBCdXQgdGhlIGRlYWQgbWFuIGlzIGluIG5vIHdheSBib3VuZCAKdG8gc3VibWl0IGhpbXNlbGYgd2l0aG91dCByZXNpc3RhbmNlIHRvIHRoaXMgcmUtIAphcnJhbmdlbWVudDsganVzdCBhcyBkdXJpbmcgZWFydGgtbGlmZSBoZSBjYW4gY29uLSAKcXVlciB0aGUgd2lsZCBzdXJnaW5ncyBvZiBkZXNpcmUgYnkgYSBkZXRlcm1pbmVkIAplZmZvcnQgb2YgdGhlIHdpbGwsIHNvIGFmdGVyIGRlYXRoIGFsc28gaGUgaXMgbWFzdGVyIG9mIApoaXMgb3duIHZlaGljbGUsIGlmIGhlIHdpbGwgb25seSBleGVydCBoaXMgcG93ZXIuIAoKCjEyMCAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgpIZSBtYXkgZGVjbGluZSBhbHRvZ2V0aGVyIHRvIGFsbG93IHRoZSByZWFycmFuZ2UtIAptZW50IHRvIGNvbnRpbnVlLCBhbmQgYnkgYW4gZWZmb3J0IG9mIGhpcyB3aWxsIGhlIAptYXkgcmVzdG9yZSB0byBoaXMgYXN0cmFsIGJvZHkgaXRzIG9yaWdpbmFsIGZsZXhpYmlsaXR5LiAKSGUgbWF5IGluc2lzdCB1cG9uIHJldGFpbmluZyBpdCBpbiBleGFjdGx5IHRoZSBzYW1lIArilqBjb25kaXRpb24gYXMgZHVyaW5nIGhpcyBlYXJ0aC1saWZlLCBhbHRob3VnaCB0byBkbyAKdGhpcyB3aWxsIHByb2JhYmx5IG1lYW4gYSBwcm90cmFjdGVkIHN0cnVnZ2xlIHdpdGggCnRoZSBlbGVtZW50YWwsIHByZWNpc2VseSBhbmFsb2dvdXMgdG8gdGhlIHN0cnVnZ2xlIAp3aGljaCB0YWtlcyBwbGFjZSB3aGVuIGEgbWFuIHNldHMgaGltc2VsZiB0byBjb24tIApxdWVyIHNvbWUgc3Ryb25nIGRlc2lyZSBpbiBwaHlzaWNhbCBsaWZlLiBCdXQgaXQgaXMgCnZlcnkgd2VsbCB3b3J0aCBoaXMgd2hpbGUgdG8gbWFrZSB0aGlzIGVmZm9ydCwgZm9yIAp3aGVuIGhlIGhhcyBzdWNjZWVkZWQgaGUgd2lsbCBmaW5kIGhpbXNlbGYgZnJlZSB0byAKbW92ZSBhcyBoZSB3aWxsIGluIHRoZSBhc3RyYWwgd29ybGQ7IGNvbnNjaW91cyBub3QgCm9mIG9uZSBzdWJwbGFuZSBvbmx5LCBidXQgb2YgYWxsIHRoZSBzdWJwbGFuZXMgCnNpbXVsdGFuZW91c2x5LCBqdXN0IGFzIGlzIHRoZSBjYXNlIHdpdGggYSBtYW4gd2hvIAplbnRlcnMgYXN0cmFsIGxpZmUgaW4gZnVsbCBjb25zY2lvdXNuZXNzIHdoaWxlIHN0aWxsIAphbGl2ZS4gSW4gdGhpcyB3YXkgbm90IG9ubHkgY2FuIGhpcyBhc3RyYWwgbGlmZSBiZSAKY29uc2lkZXJhYmx5IHNob3J0ZW5lZCwgYnV0IGl0IGNhbiBhbHNvIGJlIG1hZGUgCm11Y2ggaGFwcGllciBhbmQgbW9yZSB1c2VmdWwgd2hpbGUgaXQgbGFzdHMuIFRoZSAKbWFuIHdobyB0aHVzIHNldHMgaGltc2VsZiBmcmVlIGlzIGF0IG9uY2UgaW4gYSAKcG9zaXRpb24gdG8gZ2l2ZSBtdWNoIGhlbHAgdG8gb3RoZXJzLiBIZSBtYXkgaW4gCmZhY3QsIGlmIHN1ZmZpY2llbnRseSB3IHkgZWxsLWluc3RydWN0ZWQsIGpvaW4gdGhlIGJhbmQgb2YgCmhlbHBlcnMgYW5kIHVuZGVydGFrZSByZWd1bGFyIHdvcmsgd2l0aCB0aGVtLCB0aHVzIApiZWluZyBxZiBncmVhdCB1c2UgdG8gaGlzIGZlbGxvd3MgaW4gYXN0cmFsIGxpZmUsIGFuZCAKaW5jaWRlbnRhbGx5IHN0b3JpbmcgdXAgbXVjaCBnb29kIGthcm1hIGZvciAKaGltc2VsZi4gCgpBbm90aGVyIHJlYXNvbiBmb3IgcmVzaXN0aW5nIHRoZSBjb25jZW50cmljIAphcnJhbmdlbWVudCBpcyB0aGF0IGl0IG9mdGVuIHByZXZlbnRzIG9yIGRlbGF5cyB0aGUgCnJldW5pb24gb2YgZnJpZW5kcy4gVGhlIGFzdHJhbCBib2R5IGhhcyBub3Qgc2VwYXJhdGUgCgoKV09SSyBBTU9ORyBUSEUgREVBRCAKCgoxMjEgCgoKc2Vuc2Utb3JnYW5zLCBhcyB0aGUgcGh5c2ljYWwgYm9keSBoYXMuIFRoZSBmaWd1cmUgCm9mIGRlbnNlciBtYXR0ZXIgaW4gdGhlIG1pZGRsZSBvZiBpdHMgb3ZvaWQgcmVwcm8tIApkdWNlcyBleGFjdGx5IHRoZSBmb3JtIG9mIHRoZSBwaHlzaWNhbCBib2R5IGluIApldmVyeSBwYXJ0aWN1bGFyOyBidXQgdGhvdWdoIGl0IGhhcyB0aGUgYXBwZWFyYW5jZSAKb2YgZXllcywgaXQgZG9lcyBub3Qgc2VlIHdpdGggdGhlbTsgaXQgaGFzIHRoZSAKc2VtYmxhbmNlIG9mIGVhcnMsIGJ1dCBpdCBkb2VzIG5vdCBoZWFyIGJ5IHRoZWlyIAptZWFucy4gSXQgc2VlcyBhbmQgaGVhcnMgKG9yLCBtb3JlIGFjY3VyYXRlbHksIGl0IApyZWNlaXZlcyB0aGUgdmlicmF0aW9ucyB3aGljaCBwcm9kdWNlIGZvciBpdCB0aGUgCmVxdWl2YWxlbnQgb2Ygd2hhdCBpbiB0aGUgcGh5c2ljYWwgd29ybGQgd2UgY2FsbCAKc2VlaW5nIGFuZCBoZWFyaW5nKSBub3QgdGhyb3VnaCBzcGVjaWFsIG9yZ2FucywgYnV0IAp0aHJvdWdoIGFueSBvZiBpdHMgcGFydGljbGVzIHdoaWNoIGhhcHBlbiBhdCBhbnkgCmdpdmVuIG1vbWVudCB0byBiZSBvbiBpdHMgc3VyZmFjZS4gCgpJdCBjb250YWlucyB3aXRoaW4gaXQgbWF0dGVyIGJlbG9uZ2luZyB0byBlYWNoIG9mIAp0aGUgc3VicGxhbmVzIG9mIHRoZSBhc3RyYWwsIGJ1dCBlYWNoIG9mIHRoZXNlIHR5cGVzIApvZiBtYXR0ZXIgY2FuIHJlY2VpdmUgb25seSB0aGUgdmlicmF0aW9ucyBhcHByb3ByaWF0ZSAKdG8gaXQuIER1cmluZyBsaWZlIGFsbCBpdHMgcGFydGljbGVzIGFyZSBjb25zdGFudGx5IGluIApyYXBpZCBtb3Rpb24gYW5kIGNpcmN1bGF0aW9uLCBleGFjdGx5IGxpa2UgdGhvc2Ugb2YgCmJvaWxpbmcgd2F0ZXIsIHNvIHBhcnRpY2xlcyBvZiBldmVyeSBzdWJwbGFuZSBhcmUgCmFsd2F5cyBlbnRlcmluZyBhbmQgbGVhdmluZyB0aGUgc3VyZmFjZSBmaWxtLCBhbmQgCnRoZXJlZm9yZSB0aGUgbWFuIHdpdGhpbiBjYW4gYXQgYW55IHRpbWUgc2VlIHRoZSAKc2NlbmVyeSBhbmQgdGhlIGluaGFiaXRhbnRzIG9mIGFueSBzdWJwbGFuZS4gSWYgaGUgCm1lZXRzIGEgZnJpZW5kIG9uIHRoZSBhc3RyYWwgcGxhbmUgYXQgbmlnaHQsIGhlIHNlZXMgCnRoZSB3aG9sZSBhc3RyYWwgYm9keSBvZiB0aGF0IGZyaWVuZCDigJQgc2VlcyBoaW0gCmV4YWN0bHkgYXMgaGUgaXMuIAoKQnV0IGlmIHRoZSBkZXNpcmUtZWxlbWVudGFsIGlzIGFsbG93ZWQgdG8gcmVhcnJhbmdlIAp0aGUgbWF0dGVyIG9mIHRoZSBtYW7igJlzIGFzdHJhbCBib2R5IGluIGNvbmNlbnRyaWMgCnNoZWF0aHMgYXQgZGVhdGgsIG9ubHkgdGhlIGNvYXJzZSBwYXJ0aWNsZXMgb2YgdGhlIApsb3dlc3Qgc3VicGxhbmUgYXJlIG9uIGl0cyBzdXJmYWNlIDsgYW5kIHRoZSBlZmZlY3QgCgoKMTIyIAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCm9mIHRoYXQgaXMgdGhhdCB0aGUgbWFuIGNhbiBzZWUgbm90aGluZyBiYXQgbWF0dGVyIApvZiB0aGF0IHR5cGUuIFRoZSB1bnBsZWFzYW50IHN1cnJvdW5kaW5ncyBvZiB0aGF0IApzdWJwbGFuZSB3aWxsIGJlIHRoZSBvbmx5IHNjZW5lcnkgdmlzaWJsZSB0byBoaW0gOyAKaWYgaGUgbWVldHMgYSBmcmllbmQsIGhlIGNhbm5vdCBzZWUgdGhhdCBmcmllbmQgYXMgCmhlIGlzLCBidXQgb25seSBzbyBtdWNoIG9mIGhpbSBhcyBjYW4gYmUgZXhwcmVzc2VkIAp0aHJvdWdoIHRoZSBjb2Fyc2UgbWF0dGVyIOKAlCB0aGF0IGlzIHRvIHNheSwgb25seSBoaXMgCmxlYXN0IGRlc2lyYWJsZSBzaWRlIOKAlCBoaXMgc2Vuc3VhbGl0eSwgaGlzIG1lYW5uZXNzLCwgCmhpcyBqZWFsb3VzeSwgaGlzIGlycml0YWJpbGl0eSwgaWYgaGUgaGFzIGFueSBvZiB0aGVzZSAKZXZpbCBxdWFsaXRpZXMuIEJ1dCBpZiB0aGUgZnJpZW5kIGhhcyBiZWVuIGRlYWQgZm9yIApzb21lIHRpbWUsIGhlIHdpbGwgcHJvYmFibHkgaGF2ZSByaWQgaGltc2VsZiBvZiAKdGhlc2UgY2hhcmFjdGVyaXN0aWNzLCBhbmQgbG9zdCB0aGUgY29hcnNlIG1hdHRlciAKdGhyb3VnaCB3aGljaCB0aGV5IHdlcmUgZXhwcmVzc2VkOyBhbmQgaW4gdGhhdCAKY2FzZSBoaXMgbmV3bHktYXJyaXZlZCBmcmllbmQgKHdob3NlIGJvZHkgaGFzIGJlZW4gCnJlYXJyYW5nZWQpIHdpbGwgbm90IGJlIGFibGUgdG8gc2VlIGhpbSBhdCBhbGwhIAoKV2hlbiBhbiBpbnZpc2libGUgaGVscGVyIGNvbWVzIGFsb25nLCBicmVha3MgdXAgCnRoZSBjb25jZW50cmljIHNoZWxscyBhbmQgcmVzdG9yZXMgdGhlIGNpcmN1bGF0aW9uLCwgCnRoZSBuZXdseS1hcnJpdmVkIG1hbiB3aWxsIGJlIGFibGUgdG8gc2VlIHRoZSB3aG9sZSAKcGxhbmUgYW5kIHRvIGVuam95IHRoZSBzb2NpZXR5IG9mIHRoZSBmcmllbmQgd2hvIGhhcyAKYmVlbiBsb25nZXIgaW4gdGhlIGFzdHJhbCB3b3JsZC4gU28gb24gYWxsIGFjY291bnRzIAp0aGUgcHJvY2VlZGluZ3Mgb2YgdGhlIGVsZW1lbnRhbCBzaG91bGQgYmUgZGlzLSAKY291cmFnZWQuIAoKSXQgaGFwcGVucyBvY2Nhc2lvbmFsbHkgdGhhdCB0aGUgZGVhZCBhcmUgZWFydGgtIApib3VuZCBieSBhbnhpZXR5IOKAlCBhbnhpZXR5IHNvbWV0aW1lcyBhYm91dCBkdXRpZXMgCnVucGVyZm9ybWVkIG9yIGRlYnRzIHVuZGlzY2hhcmdlZCwgYnV0IG1vcmUgb2Z0ZW4gCm9uIGFjY291bnQgb2Ygd2lmZSBvciBjaGlsZHJlbiBsZWZ0IHdpdGhvdXQgYWRlcXVhdGUgCnByb3Zpc2lvbi4gSW4gc3VjaCBjYXNlcyBhcyB0aGlzIGl0IGhhcyBtb3JlIHRoYW4gCm9uY2UgYmVlbiBuZWNlc3NhcnksIGJlZm9yZSB0aGUgZGVhZCBtYW4gd2FzIApzYXRpc2ZpZWQgdG8gcHVyc3VlIGhpcyB1cHdhcmQgcGF0aCBpbiBwZWFjZSwgdGhhdCAKCgpXT1JLIEFNT05HIFRIRSBERUFEIAoKCjEyNSAKCgp0aGUgaGVscGVyIHNob3VsZCB0byBzb21lIGV4dGVudCBhY3QgYXMgaGlzIHJlLSAKcHJlc2VudGF0aXZlIHVwb24gdGhlIHBoeXNpY2FsIHBsYW5lLCBhbmQgYXR0ZW5kIG9uLiAKaGlzIGJlaGFsZiB0byB0aGUgc2V0dGxlbWVudCBvZiB0aGUgYnVzaW5lc3Mgd2hpY2ggCndhcyB0cm91YmxpbmcgaGltLiBBbiBpbGx1c3RyYXRpb24gdGFrZW4gZnJvbSBvdXIgCnJlY2VudCBleHBlcmllbmNlIHdpbGwgcGVyaGFwcyBtYWtlIHRoaXMgY2xlYXJlci4gCgpPbmUgb2YgdGhlIGJhbmQgb2YgcHVwaWxzIHdhcyB0cnlpbmcgdG8gYXNzaXN0IGEgCnBvb3IgbWFuIHdobyBoYWQgZGllZCBpbiBvbmUgb2Ygb3VyIHdlc3Rlcm4gY2l0aWVzLCwgCmJ1dCBmb3VuZCBpdCBpbXBvc3NpYmxlIHRvIHdpdGhkcmF3IGhpcyBtaW5kIGZyb20tIAplYXJ0aGx5IHRoaW5ncyBiZWNhdXNlIG9mIGhpcyBhbnhpZXR5IGFib3V0IHR3by0gCnlvdW5nIGNoaWxkcmVuIHdob20gaGlzIGRlYXRoIGhhZCBsZWZ0IHdpdGhvdXQgCm1lYW5zIG9mIHN1cHBvcnQuIEhlIGhhZCBiZWVuIGEgd29ya2luZyBtYW4gb2YgCnNvbWUgc29ydCwgYW5kIGhhZCBiZWVuIHVuYWJsZSB0byBsYXkgYnkgYW55IAptb25leSBmb3IgdGhlbTsgaGlzIHdpZmUgaGFkIGRpZWQgc29tZSB0d28geWVhcnMtIApwcmV2aW91c2x5LCBhbmQgaGlzIGxhbmRsYWR5LCB0aG91Z2ggZXhjZWVkaW5nbHkgCmtpbmQtaGVhcnRlZCBhbmQgd2lsbGluZyB0byBkbyBhbnl0aGluZyBpbiBoZXIgCnBvd2VyIGZvciB0aGVtLCB3YXMgaGVyc2VsZiBmYXIgdG9vIHBvb3IgdG8gYmUgYWJsZSAKdG8gYWRvcHQgdGhlbSwgYW5kIHZlcnkgcmVsdWN0YW50bHkgY2FtZSB0byB0aGUgCmNvbmNsdXNpb24gdGhhdCBzaGUgd291bGQgYmUgb2JsaWdlZCB0byBoYW5kIHRoZW0gCm92ZXIgdG8gdGhlIHBhcmlzaCBhdXRob3JpdGllcy4gVGhpcyB3YXMgYSBncmVhdCAKZ3JpZWYgdG8gdGhlIGRlYWQgZmF0aGVyLCB0aG91Z2ggaGUgY291bGQgbm90IGJsYW1lIAp0aGUgbGFuZGxhZHksIGFuZCB3YXMgaGltc2VsZiB1bmFibGUgdG8gc3VnZ2VzdCBhbnkgCm90aGVyIGNvdXJzZS4gCgpPdXIgZnJpZW5kIGFza2VkIGhpbSB3aGV0aGVyIGhlIGhhZCBubyByZWxhdGl2ZSAKdG8gd2hvbSBoZSBjb3VsZCBlbnRydXN0IHRoZW0sIGJ1dCB0aGUgZmF0aGVyIAprbmV3IG9mIG5vbmUuIEhlIGhhZCBhIHlvdW5nZXIgYnJvdGhlciwgaGUgc2FpZCwsIAp3aG8gd291bGQgY2VydGFpbmx5IGhhdmUgZG9uZSBzb21ldGhpbmcgZm9yIGhpbSogCmluIHRoaXMgZXh0cmVtaXR5LCBidXQgaGUgaGFkIGxvc3Qgc2lnaHQgb2YgaGltIGZvciAKZmlmdGVlbiB5ZWFycywgYW5kIGRpZCBub3QgZXZlbiBrbm93IHdoZXRoZXIgaGUgCgoKMTI0IElOVklTSUJMRSBIRUxQRVJTIAoKd2FzIGxpdmluZyBvciBkZWFkLiBXaGVuIGhlIGxhc3QgaGVhcmQgb2YgaGltLCBoZSAKaGFkIGJlZW4gYXBwcmVudGljZWQgdG8gYSBjYXJwZW50ZXIgaW4gdGhlIG5vcnRoLCAKYW5kIGhlIHdhcyB0aGVuIGRlc2NyaWJlZCBhcyBhIHN0ZWFkeSB5b3VuZyBmZWxsb3cgCndobywgaWYgaGUgbGl2ZWQsIHdvdWxkIHN1cmVseSBnZXQgb24uIAoKVGhlIGNsdWVzIGF0IGhhbmQgd2VyZSBjZXJ0YWlubHkgc2xpZ2h0LCBidXQgc2luY2UgCnRoZXJlIHNlZW1lZCBubyBvdGhlciBwcm9zcGVjdCBvZiBoZWxwIGZvciB0aGUgCuKAomNoaWxkcmVuLCBvdXIgZnJpZW5kIHRob3VnaHQgaXQgd29ydGggd2hpbGUgdG8gbWFrZSAKYSBzcGVjaWFsIGVmZm9ydCB0byBmb2xsb3cgdGhlbSB1cC4gVGFraW5nIHRoZSBkZWFkIAptYW4gd2l0aCBoaW0gaGUgY29tbWVuY2VkIGEgcGF0aWVudCBzZWFyY2ggYWZ0ZXIgCnRoZSBicm90aGVyIGluIHRoZSB0b3duIGluZGljYXRlZDsgYW5kIGFmdGVyIGEgZ3JlYXQgCuKWoGRlYWwgb2YgdHJvdWJsZSB0aGV5IHdlcmUgYWN0dWFsbHkgc3VjY2Vzc2Z1bCBpbiAKZmluZGluZyBoaW0uIEhlIHdhcyBub3cgYSBtYXN0ZXIgY2FycGVudGVyIGluIGEgCmZhaXJseSBmbG91cmlzaGluZyB3YXkgb2YgYnVzaW5lc3Mg4oCUIG1hcnJpZWQsIGJ1dCAKd2l0aG91dCBjaGlsZHJlbiB0aG91Z2ggZWFybmVzdGx5IGRlc2lyaW5nIHRoZW0sIGFuZCAKdGhlcmVmb3JlIGFwcGFyZW50bHkganVzdCB0aGUgbWFuIGZvciB0aGUgZW1lcmdlbmN5LiAKClRoZSBxdWVzdGlvbiBub3cgd2FzIGhvdyB0aGUgaW5mb3JtYXRpb24gY291bGQgCmJlc3QgYmUgY29udmV5ZWQgdG8gdGhpcyBicm90aGVyLiBGb3J0dW5hdGVseSBoZSAKd2FzIGZvdW5kIHRvIGJlIHNvIGZhciBpbXByZXNzaW9uYWJsZSB0aGF0IHRoZSBjaXItIApjdW1zdGFuY2VzIG9mIGhpcyBicm90aGVy4oCZcyBkZWF0aCBhbmQgdGhlIGRlc3RpdHV0aW9uIApvZiBoaXMgY2hpbGRyZW4gY291bGQgYmUgcHV0IHZpdmlkbHkgYmVmb3JlIGhpbSBpbiBhIApkcmVhbSwgYW5kIHRoaXMgd2FzIHJlcGVhdGVkIHRocmVlIHRpbWVzLCB0aGUgcGxhY2UgCmFuZCBldmVuIHRoZSBuYW1lIG9mIHRoZSBsYW5kbGFkeSBiZWluZyBjbGVhcmx5IAppbmRpY2F0ZWQgdG8gaGltLiBIZSB3YXMgaW1tZW5zZWx5IGltcHJlc3NlZCBieSAKdGhpcyByZWN1cnJpbmcgdmlzaW9uLCBhbmQgZGlzY3Vzc2VkIGl0IGVhcm5lc3RseSB3aXRoIApoaXMgd2lmZSwgd2hvIC0gYWR2aXNlZCBoaW0gdG8gd3JpdGUgdG8gdGhlIGFkZHJlc3MgCmdpdmVuLiBUaGlzIGhlIGRpZCBub3QgbGlrZSB0byBkbywgYnV0IHdhcyBzdHJvbmdseSAKaW5jbGluZWQgdG8gdHJhdmVsIGRvd24gaW50byB0aGUgd2VzdCBjb3VudHJ5LCBmaW5kIApvdXQgd2hldGhlciB0aGVyZSB3YXMgc3VjaCBhIGhvdXNlIGFzIHRoYXQgd2hpY2ggCgoKV09SSyBBTU9ORyBUSEUgREVBRCAKCgoxMj4gCgoKaGUgaGFkIHNlZW4sIGFuZCBpZiBzbyBtYWtlIHNvbWUgZXhjdXNlIHRvIGNhbGwgCnRoZXJlLiBIZSB3YXMgYSBidXN5IG1hbiwgaG93ZXZlciwgYW5kIGhlIGZpbmFsbHkgCmRlY2lkZWQgdGhhdCBoZSBjb3VsZCBub3QgYWZmb3JkIHRvIGxvc2UgYSBkYXnigJlzIHdvcmssIApmb3Igd2hhdCDigJxhZnRlciBhbGwgbWlnaHQgd2VsbCBwcm92ZSB0byBiZSBub3RoaW5nIApidXQgdGhlIGJhc2VsZXNzIGZhYnJpYyBvZiBhIGRyZWFtLiAKClRoZSBhdHRlbXB0IGFsb25nIHRoZXNlIGxpbmVzIGhhdmluZyBhcHBhcmVudGx5IApmYWlsZWQsIGl0IHdhcyBkZXRlcm1pbmVkIHRvIHRyeSBhbm90aGVyIG1ldGhvZCwgc28gCm9uZSBvZiB0aGUgaGVscGVycyB3cm90ZSBhIGxldHRlciB0byB0aGUgbWFuIGRldGFpbGluZywgCnRoZSBjaXJjdW1zdGFuY2VzIG9mIGhpcyBicm90aGVy4oCZcyBkZWF0aCBhbmQgdGhlIApwb3NpdGlvbiBvZiB0aGUgY2hpbGRyZW4sIGV4YWN0bHkgYXMgaGUgaGFkIHNlZW4gdGhlbSAKaW4gaGlzIGRyZWFtLiBPbiByZWNlaXB0IG9mIHRoaXMgY29uZmlybWF0aW9uIGhlIApubyBsb25nZXIgaGVzaXRhdGVkLCBidXQgc2V0IG9mZiB0aGUgdmVyeSBuZXh0IGRheSAKZm9yIHRoZSB0b3duIGluZGljYXRlZCwgYW5kIHdhcyByZWNlaXZlZCB3aXRoIG9wZW4gCmFybXMgYnkgdGhlIGtpbmQtaGVhcnRlZCBsYW5kbGFkeS4gSXQgaGFkIGJlZW4qIAplYXN5IGVub3VnaCBmb3IgdGhlIGhlbHBlcnMgdG8gcGVyc3VhZGUgaGVyLCBnb29kIApzb3VsIHRoYXQgc2hlIHdhcywgdG8ga2VlcCB0aGUgY2hpbGRyZW4gd2l0aCBoZXIgZm9yIAphIGZldyBkYXlzIG9uIHRoZSBjaGFuY2UgdGhhdCBzb21ldGhpbmcgb3Igb3RoZXIgCndvdWxkIHR1cm4gdXAgZm9yIHRoZW0sIGFuZCBzaGUgaGFzIGV2ZXIgc2luY2UgCmNvbmdyYXR1bGF0ZWQgaGVyc2VsZiB0aGF0IHNoZSBkaWQgc28uIFRoZSBjYXJwZW50ZXIgCm9mIGNvdXJzZSB0b29rIHRoZSBjaGlsZHJlbiBiYWNrIHdpdGggaGltIGFuZCAKcHJvdmlkZWQgdGhlbSB3aXRoIGEgaGFwcHkgaG9tZSwgYW5kIHRoZSBkZWFkIApmYXRoZXIsIG5vdyBubyBsb25nZXIgYW54aW91cywgcGFzc2VkIHJlam9pY2luZyBvbiAKaGlzIHVwd2FyZCB3YXkuIAoKU2luY2Ugc29tZSBUaGVvc29waGljYWwgd3JpdGVycyBoYXZlIGZlbHQgaXQgdGhlaXIgCmR1dHkgdG8gaW5zaXN0IGluIHZpZ29yb3VzIHRlcm1zIHVwb24gdGhlIGV2aWxzIHNvIApmcmVxdWVudGx5IGF0dGVuZGFudCB1cG9uIHRoZSBob2xkaW5nIG9mIHNwaXJpdHVhbGlzdGljIApzZWFuY2VzICwgaXQgaXMgb25seSBmYWlyIHRvIGFkbWl0IHRoYXQgb24gc2V2ZXJhbCBvY2NhLSAKc2lvbnMgZ29vZCB3b3JrIHNpbWlsYXIgdG8gdGhhdCBvZiB0aGUgaGVscGVyIGluIHRoZSAKCgoxMjYgCgoKSU5WSVNJQkxFIEhFTFBFUlMgCgoK4pagY2FzZSBqdXN0IGRlc2NyaWJlZCBoYXMgYmVlbiBkb25lIHRocm91Z2ggdGhlIGFnZW5jeSAKb2YgYSBtZWRpdW0gb3Igb2Ygc29tZW9uZSBwcmVzZW50IGF0IGEgY2lyY2xlLiBUaHVzLCAKdGhvdWdoIHNwaXJpdHVhbGlzbSBoYXMgc29tZXRpbWVzIGRldGFpbmVkIHNvdWxzIHdobyAKaHV0IGZvciBpdCB3b3VsZCBoYXZlIGF0dGFpbmVkIHNwZWVkaWVyIGxpYmVyYXRpb24sIGl0IAptdXN0IGJlIHNldCB0byB0aGUgY3JlZGl0IG9mIGl0cyBhY2NvdW50IHRoYXQgaXQgaGFzIAphbHNvIGZ1cm5pc2hlZCB0aGUgbWVhbnMgb2YgZXNjYXBlIHRvIG90aGVycywgYW5kIAp0aHVzIG9wZW5lZCB1cCB0aGUgcGF0aCBvZiBhZHZhbmNlbWVudCBmb3IgdGhlbS4gClRoZXJlIGhhdmUgYmVlbiBpbnN0YW5jZXMgaW4gd2hpY2ggdGhlIGRlZnVuY3QgaGFzIApiZWVuIGFibGUgdG8gYXBwZWFyIHVuYXNzaXN0ZWQgdG8gaGlzIHJlbGF0aXZlcyBvciAKZnJpZW5kcyBhbmQgZXhwbGFpbiBoaXMgd2lzaGVzIHRvIHRoZW07IGJ1dCB0aGVzZSAKLmFyZSBuYXR1cmFsbHkgcmFyZSwgYW5kIG1vc3Qgc291bHMgd2hvIGFyZSBlYXJ0aC0gCmJvdW5kIGJ5IGFueGlldGllcyBvZiB0aGUga2luZCBpbmRpY2F0ZWQgY2FuIHNhdGlzZnkgCnRoZW1zZWx2ZXMgb25seSBieSBtZWFucyBvZiB0aGUgc2VydmljZXMgb2YgdGhlIAptZWRpdW0gb3IgdGhlIGNvbnNjaW91cyBoZWxwZXIuIAoKQW5vdGhlciBjYXNlIGZyZXF1ZW50bHkgZW5jb3VudGVyZWQgb24gdGhlIGFzdHJhbCAKcGxhbmUgaXMgdGhhdCBvZiB0aGUgbWFuIHdobyBjYW5ub3QgYmVsaWV2ZSB0aGF0IGhlIAppcyBkZWFkIGF0IGFsbC4gSW5kZWVkLCBtb3N0IHBlb3BsZSBjb25zaWRlciB0aGUgCnZlcnkgZmFjdCB0aGF0IHRoZXkgYXJlIHN0aWxsIGNvbnNjaW91cyB0byBiZSBhbiAKLmFic29sdXRlIHByb29mIHRoYXQgdGhleSBoYXZlIG5vdCBwYXNzZWQgdGhyb3VnaCAKdGhlIHBvcnRhbHMgb2YgZGVhdGg7IHNvbWV3aGF0IG9mIGEgc2F0aXJlIHRoaXMsIGlmIApvbmUgdGhpbmtzIG9mIGl0LCBvbiB0aGUgcHJhY3RpY2FsIHZhbHVlIG9mIG91ciBtdWNoLSAKdmF1bnRlZCBiZWxpZWYgaW4gdGhlIGltbW9ydGFsaXR5IG9mIHRoZSBzb3VsISBIb3ctIApldmVyIHRoZXkgbWF5IGhhdmUgbGFiZWxsZWQgdGhlbXNlbHZlcyBkdXJpbmcgbGlmZSwgCnRoZSBncmVhdCBtYWpvcml0eSBvZiB0aG9zZSB3aG8gZGllLCBpbiB0aGlzIGNvdW50cnkgCmF0IGFueSByYXRlLCBzaG93IHRoZW1zZWx2ZXMgYnkgdGhlaXIgc3Vic2VxdWVudCAKYXR0aXR1ZGUgdG8gaGF2ZSBiZWVuIHRvIGFsbCBpbnRlbnRzIGFuZCBwdXJwb3NlcyAKbWF0ZXJpYWxpc3RzIGF0IGhlYXJ0OyBhbmQgdGhvc2Ugd2hvIG9uIGVhcnRoIGhhdmUgCgoKV09SSyBBTU9ORyBUSEUgREVBRCAKCgoxMjcgCgoKZGlmZmljdWx0IHRvIGRlYWwgd2l0aCB0aGFuIG90aGVycyB3aG8gd291bGQgaGF2ZSAKYmVlbiBzaG9ja2VkIGF0IHRoZSB2ZXJ5IG5hbWUuIAoKQSByZWNlbnQgaW5zdGFuY2Ugd2FzIHRoYXQgb2YgYSBzY2llbnRpZmljIG1hbiAKd2hvLCBmaW5kaW5nIGhpbXNlbGYgZnVsbHkgY29uc2Npb3VzLCBhbmQgeWV0IHVuZGVyIApjb25kaXRpb25zIGRpZmZlcmluZyByYWRpY2FsbHkgZnJvbSBhbnkgdGhhdCBoZSBoYWQgCuKAomV2ZXIgZXhwZXJpZW5jZWQgYmVmb3JlLCBoYWQgcGVyc3VhZGVkIGhpbXNlbGYgdGhhdCAKaGUgd2FzIHN0aWxsIGFsaXZlLCBhbmQgbWVyZWx5IHRoZSB2aWN0aW0gb2YgYSBwcm9sb25nLSAKZWQgYW5kIHVucGxlYXNhbnQgZHJlYW0uIEZvcnR1bmF0ZWx5IGZvciBoaW0gCnRoZXJlIGhhcHBlbmVkIHRvIGJlIGFtb25nIHRoZSBiYW5kIG9mIHRob3NlIGFibGUgCnRvIGZ1bmN0aW9uIHVwb24gdGhlIGFzdHJhbCBwbGFuZSBhIHNvbiBvZiBhbiBvbGQgCmZyaWVuZCBvZiBoaXMsIGEgeW91bmcgbWFuIHdob3NlIGZhdGhlciBoYWQgY29tLSAKbWlzc2lvbmVkIGhpbSB0byBzZWFyY2ggZm9yIHRoZSBkZXBhcnRlZCBzY2llbnRpc3QgCmFuZCBlbmRlYXZvdXIgdG8gcmVuZGVyIGhpbSBzb21lIGFzc2lzdGFuY2UuIApXaGVuIGFmdGVyIHNvbWUgdHJvdWJsZSB0aGUgeW91dGggZm91bmQgYW5kIAphY2Nvc3RlZCBoaW0sIGhlIGZyYW5rbHkgYWRtaXR0ZWQgdGhhdCBoZSB3YXMgaW4gYSAKY29uZGl0aW9uIG9mIGdyZWF0IGJld2lsZGVybWVudCBhbmQgZGlzY29tZm9ydCwgYnV0IApzdGlsbCBjbHVuZyBkZXNwZXJhdGVseSB0byBoaXMgZHJlYW0gaHlwb3RoZXNpcyBhcyAKb24gdGhlIHdob2xlIHRoZSBtb3N0IHByb2JhYmxlIGV4cGxhbmF0aW9uIG9mIHdoYXQgCmhlIHNhdywgYW5kIGV2ZW4gd2VudCBzbyBmYXIgYXMgdG8gc3VnZ2VzdCB0aGF0IGhpcyAKdmlzaXRvciB3YXMgbm90aGluZyBidXQgYSBkcmVhbS1maWd1cmUgaGltc2VsZiEgCgpBdCBsYXN0LCBob3dldmVyLCBoZSBzbyBmYXIgZ2F2ZSB3YXkgYXMgdG8gcHJvcG9zZSAKYSBraW5kIG9mIHRlc3QsIGFuZCBzYWlkIHRvIHRoZSB5b3VuZyBtYW46IDzCoyBJZiB5b3UgCmFyZSwgYXMgeW91IGFzc2VydCwgYSBsaXZpbmcgcGVyc29uLCBhbmQgdGhlIHNvbiBvZiAKbXkgb2xkIGZyaWVuZCwgYnJpbmcgbWUgZnJvbSBoaW0gc29tZSBtZXNzYWdlIAp0aGF0IHNoYWxsIHByb3ZlIHRvIG1lIHlvdXIgb2JqZWN0aXZlIHJlYWxpdHku4oCdIE5vdyAKYWx0aG91Z2ggdW5kZXIgYWxsIG9yZGluYXJ5IGNvbmRpdGlvbnMgb2YgdGhlIHBoeXNpLSAKY2FsIHBsYW5lIHRoZSBnaXZpbmcgb2YgYW55IGtpbmQgb2YgcGhlbm9tZW5hbCAKcHJvb2YgaXMgc3RyaWN0bHkgZm9yYmlkZGVuIHRvIHRoZSBwdXBpbHMgb2YgdGhlIAoKCjEyOCAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgpNYXN0ZXJzLCBpdCBzZWVtZWQgYXMgdGhvdWdoIGEgY2FzZSBvZiB0aGlzIGtpbmQgCmhhcmRseSBjYW1lIHVuZGVyIHRoZSBydWxlczsgYW5kIHRoZXJlZm9yZSwgd2hlbiAKaXQgaGFkIGJlZW4gYXNjZXJ0YWluZWQgdGhhdCB0aGVyZSB3YXMgbm8gb2JqZWN0aW9uIApvbiB0aGUgcGFydCBvZiBoaWdoZXIgYXV0aG9yaXRpZXMsIGFuIGFwcGxpY2F0aW9uIHdhcy4gCm1hZGUgdG8gdGhlIGZhdGhlciwgd2hvIGF0IG9uY2Ugc2VudCBhIG1lc3NhZ2UgcmUtIApmZXJyaW5nIHRvIGEgc2VyaWVzIG9mIGV2ZW50cyB3aGljaCBoYWQgb2NjdXJyZWQgCmJlZm9yZSAsdGhlIHNvbuKAmXMgYmlydGguIFRoaXMgY29udmluY2VkIHRoZSBkZWFkIAptYW4gb2YgdGhlIHJlYWwgZXhpc3RlbmNlIG9mIGhpcyB5b3VuZyBmcmllbmQsIGFuZCAKdGhlcmVmb3JlIG9mIHRoZSBwbGFuZSB1cG9uIHdoaWNoIHRoZXkgd2VyZSBib3RoIApmdW5jdGlvbmluZzsgYW5kIGFzIHNvb24gYXMgaGUgZmVsdCB0aGlzIGVzdGFibGlzaGVkLCAKaGlzIHNjaWVudGlmaWMgdHJhaW5pbmcgYXQgb25jZSByZWFzc2VydGVkIGl0c2VsZiwgYW5kIApoZSBiZWNhbWUgZXhjZWVkaW5nbHkgZWFnZXIgdG8gYWNxdWlyZSBhbGwgcG9zc2libGUgCmluZm9ybWF0aW9uIGFib3V0IHRoaXMgbmV3IHJlZ2lvbi4gCgpPZiBjb3Vyc2UgdGhlIG1lc3NhZ2Ugd2hpY2ggaGUgc28gcmVhZGlseSAKYWNjZXB0ZWQgYXMgZXZpZGVuY2Ugd2FzIGluIHJlYWxpdHkgbm8gcHJvb2YgYXQgYWxsLCAKc2luY2UgdGhlIGZhY3RzIHRvIHdoaWNoIGl0IHJlZmVycmVkIG1pZ2h0IGhhdmUgYmVlbiAKcmVhZCBmcm9tIGhpcyBvd24gbWluZCBvciBmcm9tIHRoZSByZWNvcmRzIG9mIHRoZSAKcGFzdCBieSBhbnkgY3JlYXR1cmUgcG9zc2Vzc2VkIG9mIGFzdHJhbCBzZW5zZXMqIApCdXQgaGlzIGlnbm9yYW5jZSBvZiB0aGVzZSBwb3NzaWJpbGl0aWVzIGVuYWJsZWQgdGhpcyAKZGVmaW5pdGUgaW1wcmVzc2lvbiB0byBiZSBtYWRlIHVwb24gaGltLCBhbmQgdGhlIApUaGVvc29waGljYWwgaW5zdHJ1Y3Rpb24gd2hpY2ggaGlzIHlvdW5nIGZyaWVuZCBpcyAKbm93IG5pZ2h0bHkgZ2l2aW5nIHRvIGhpbSB3aWxsIHVuZG91YnRlZGx5IGhhdmUgCmEgc3R1cGVuZG91cyBlZmZlY3QgdXBvbiBoaXMgZnV0dXJlLCBmb3IgaXQgY2Fubm90IApidXQgZ3JlYXRseSBtb2RpZnkgbm90IG9ubHkgdGhlIGhlYXZlbi1zdGF0ZSB3aGljaCAKbGllcyBpbW1lZGlhdGVseSBiZWZvcmUgaGlt4oCZLCBidXQgYWxzbyBoaXMgbmV4dCBpbi0gCmNhcm5hdGlvbiB1cG9uIGVhcnRoLiAKClRoZSBtYWluIHdvcmssIHRoZW4sIGRvbmUgZm9yIHRoZSBuZXdseSBkZWFkIApieSBvdXIgaGVscGVycyBpcyB0aGF0IG9mIHNvb3RoaW5nIGFuZCBjb21mb3J0aW5nIAoKCldPQksgQU1PTkcgVEhFIERFQUQgCgoKMTI5IAoKCnRoZW07IG9mIGRlbGl2ZXJpbmcgdGhlbSB3aGVuIHBvc3NpYmxlIGZyb20gdGhlIAp0ZXJyaWJsZSB0aG91Z2ggdW5yZWFzb25pbmcgZmVhciB3aGljaCBvZnRlbiBzZWl6ZXMgCnRoZW0sIGFuZCBub3Qgb25seSBjYXVzZXMgdGhlbSBtdWNoIHVubmVjZXNzYXJ5IApzdWZmZXJpbmcsIGJ1dCByZXRhcmRzIHRoZWlyIHByb2dyZXNzIHRvIGhpZ2hlciAKc3BoZXJlczsgYW5kIG9mIGVuYWJsaW5nIHRoZW0gYXMgZmFyIGFzIG1heSBiZSAKdG8gY29tcHJlaGVuZCB0aGUgZnV0dXJlIHRoYXQgbGllcyBiZWZvcmUgdGhlbS4gCgpUYWtpbmcgbXkgb3duIHdvcmsgYXMgYW4gZXhhbXBsZSwgSSBoYXZlIHF1aXRlIAphIGxhcmdlIGNvbm5lY3Rpb24sIGEgbGFyZ2UgbnVtYmVyIG9mIGRlYWQgcGVvcGxlIAp3aG9tIEkgdmlzaXQgZWFjaCBuaWdodDsgYW5kIG5ldyBjYXNlcyBhcmUgY29uLSAKc3RhbnRseSB0dXJuaW5nIHVwLiBJdCBpcyBvbmUgb2YgdGhlIHBlY3VsaWFyaXRpZXMgb2YgCndvcmsgd2l0aCB0aGUgZGVhZCB0aGF0IHRoZXkgYXJlIG9mdGVuIHZlcnkgbmVydi0gCm91cywgbXVjaCBsaWtlIGNoaWxkcmVuIGluIHRoZSBkYXJrLiBBcyBsb25nIGFzIAp5b3Ugd2lsbCBzaXQgYnkgdGhlIGJlZHNpZGUgb2YgYSBjaGlsZCBhbmQgaG9sZCBoaXMgCmhhbmQsIGhlIGZlZWxzIHNhZmUgYW5kIGhhcHB5OyBidXQgd2hlbiB5b3UgbGVhdmUgCmhpbSB0aGUgZGFya25lc3MgY2xvc2VzIHJvdW5kIGhpbSwgYW5kIGhlIGJlY29tZXMgCnRpbWlkIGFnYWluOyBzbyB5b3Ugc2l0IGJlc2lkZSBoaW0gYW5kIGhvbGQgaGlzIApoYW5kIHRpbGwgaGUgZmFsbHMgYXNsZWVwLiBTaW1pbGFybHkgd2l0aCBtYW55IG9mIAp0aGUgZGVhZC4gU29tZSB3b3J0aHkgb2xkIGRlYWQgcGVyc29uIGlzIHZlcnkgCnRpbW9yb3VzLCBhbmQgZG9lcyBub3Qga25vdyB3aGVuIHRoZSBmbG9vciBpcyAKZ29pbmcgdG8gb3BlbiBhbmQgZHJvcCBoZXIgaW50byBoZWxsOyBzaGUgaXMgcmUtIAphc3N1cmVkIGFzIGxvbmcgYXMgSSBzdGFuZCBiZXNpZGUgaGVyLCBidXQgYXMgc29vbiAKYXMgSSBnbyBhd2F5LCB0aGUgZmVhciBiZWdpbnMgdG8gcmVhc3NlcnQgaXRzZWxmLCBhbmQgCnNoZSB3b25kZXJzIHdoZXRoZXIgSSB3YXMgbm90IGEgZGV2aWwgaW4gZGlzZ3Vpc2UuIApTbyBJIGRvIHdpdGggaGVyIGFzIHdlIGRvIHdpdGggbGl0dGxlIGNoaWxkcmVuOyBJIApsZWF2ZSBzb21lYm9keSB3aXRoIGhlci4gQSBuZW9waHl0ZSBpbiBhc3RyYWwgCndvcmsgbWF5IG5vdCBrbm93IHdoYXQgdG8gZG8gd2l0aCBhbiB1bnVzdWFsIAphbmQgZGlmZmljdWx0IGNhc2UsIGJ1dCBoZSBjYW4gc2l0IGJlc2lkZSB0aGUgb2xkIGxhZHkgCmFuZCBjb21mb3J0IGhlciwgYW5kIHRlbGwgaGVyIG11Y2ggYWJvdXQgdGhpcyBuZXcgCjkgCgoKMTMwIAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCmxpZmUtIEhlIGhhcyBvbmx5IHRvIGJlIHRoZXJlLCBhbmQgdG8gYmUgb2J2aW91c2x5IAphdCBlYXNlIGFuZCB1bmFmcmFpZDsgdGhhdCBpcyB3aGF0IHJlYXNzdXJlcyB0aGUgCmRlYWQuIElmIHRoZSBoZWxwZXIgc2hvd2VkIG5lcnZvdXNuZXNzLCB0aGUgZGVhZCAKcGVyc29uIHdvdWxkIGF0IG9uY2UgYmUgYWZyYWlkIHRvby4gCgpBIGNvbnNpZGVyYWJsZSBudW1iZXIgb2Ygbm92aWNlcyB0cmF2ZWwgYWJvdXQgCmVhY2ggbmlnaHQgd2l0aCBlYWNoIG9mIHRoZSBvbGRlciBoZWxwZXJzLiBTdXBwb3NlIAp3ZSBjb21lIGFjcm9zcyBhIGNhc2Ugb2Ygc29tZSB3b21hbiBpbiBncmVhdCAKc29ycm93LiBJIHNheSB0byBoZXI6IAoK4oCcV2hhdCBpcyB0aGUgbWF0dGVyPyBXaGF0IGNhbiB3ZSBkbyBmb3IgeW91PyAKSSBhbSBzb3JyeSBmb3IgeW91LCBidXQgSSBhc3N1cmUgeW91IHRoYXQgeW91IHdpbGwgCmZlZWwgbXVjaCBiZXR0ZXIsIG5vdyB0aGF0IHlvdSBoYXZlIHRvbGQgbWUgYWxsIAphYm91dCBpdC7igJ0gCgpUaGVuLCB0dXJuaW5nIHRvIG9uZSBvZiB0aGUgbGVhcm5lcnMsIEkgc2F5OiDigJxPIApNaXNzIFNvLWFuZC1Tbywgd291bGQgeW91IG1pbmQgc2l0dGluZyB3aXRoIHRoaXMgCmxhZHkgZm9yIGEgdGltZT/igJ0gCgpQcmVzZW50bHkgd2UgbWVldCB3aXRoIGFub3RoZXIgY2FzZSwgYW5kIGRyb3AgCmFub3RoZXIgb2Ygb3VyIHR5cm9zLCB1bnRpbCBhbGwgdGhlIGF0dGVuZGFudHMgYXJlIGF0IAp3b3JrOyBidXQgYnkgdGhhdCB0aW1lIHVzdWFsbHkgc29tZSBvZiB0aGVtIHJldHVybiwgCmhhdmluZyBjb21wbGV0ZWQgdGhlaXIgdGFzay4gU28gaW4gdGltZSB0aGV5IGxlYXJuIAp0byBiZSBhYmxlIHRvIGRvIHN1Y2ZoIHdvcmsgb24gdGhlaXIgb3duIGFjY291bnQ7IAp0aGV5IGNhbiBkbyBpdCBqdXN0IGFzIHNvb24gYXMgdGhleSBoYXZlIGNvbmZpZGVuY2UgCmluIHRoZW1zZWx2ZXMsIGFuZCB0aGVuIHRoZXkgY2FuIHNldCB1cCBpbiBidXNpbmVzcyAKYXMgZnVsbC1mbGVkZ2VkIGhlbHBlcnMuIAoKT3RoZXIgZGVhZCBwZW9wbGUgd2hvIGhhdmUgYmVlbiBsb25nZXIgb24gdGhlIAo0IGFzdHJhbCBwbGFuZSBtYXkgYWxzbyByZWNlaXZlIG11Y2ggaGVscCwgaWYgdGhleSB3aWxsIApidXQgYWNjZXB0IGl0LCBmcm9tIGV4cGxhbmF0aW9ucyBhbmQgYWR2aWNlIGFzIHRvIAp0aGVpciBjb3Vyc2UgdGhyb3VnaCBpdHMgZGlmZmVyZW50IHN0YWdlcy4gVGhleSAKCgpXT1JLIEFNT05HIFRIRSBERUFEIAoKCjEzMSAKCgotZGVsYXkgY2F1c2VkIGJ5IGF0dGVtcHRpbmcgdG8gY29tbXVuaWNhdGUgd2l0aCAKdGhlIGxpdmluZyB0aHJvdWdoIGEgbWVkaXVtLCBhbmQgc29tZXRpbWVzICh0aG91Z2ggCnJhcmVseSkgYW4gZW50aXR5IGFscmVhZHkgZHJhd24gaW50byBhIHNwaXJpdHVhbGlzdGljIApjaXJjbGUgbWF5IGJlIGd1aWRlZCBpbnRvIGhpZ2hlciBhbmQgaGVhbHRoaWVyIGxpZmUuIApUZWFjaGluZyB0aHVzIGdpdmVuIHRvIHBlcnNvbnMgb24gdGhpcyBwbGFuZSBpcyBieSAKbm8gbWVhbnMgbG9zdCwgZm9yIHRob3VnaCB0aGUgbWVtb3J5IG9mIGl0IGNhbm5vdCAKdXN1YWxseSBiZSBkaXJlY3RseSBjYXJyaWVkIG92ZXIgdG8gdGhlIG5leHQgaW5jYXJuYS0gCnRpb24sIHRoZXJlIGFsd2F5cyByZW1haW5zIHRoZSByZWFsIGlubmVyIGtub3dsZWRnZSwgCmFuZCB0aGVyZWZvcmUgdGhlIHN0cm9uZyBwcmVkaXNwb3NpdGlvbiB0byBhY2NlcHQgaXQgCmltbWVkaWF0ZWx5IHdoZW4gaGVhcmQgYWdhaW4gaW4gdGhlIG5ldyBsaWZlLiAKCkEgcmF0aGVyIHJlbWFya2FibGUgaW5zdGFuY2Ugb2Ygc2VydmljZSByZW5kZXJlZCAKdG8gdGhlIGRlYWQgd2FzIHRoZSBmaXJzdCBhY2hpZXZlbWVudCBvZiBhIHJlY2VudCAKcmVjcnVpdCB0byB0aGUgYmFuZCBvZiBoZWxwZXJzIOKAlCBvbmUgd2hvIGlzIGhhcmRseSAKYXMgeWV0IGEgZnVsbC1mbGVkZ2VkIG1lbWJlci4gVGhpcyB5b3VuZyBhc3BpcmFudCAKaGFkIG5vdCBsb25nIGJlZm9yZSBsb3N0IGFuIGFnZWQgcmVsYXRpb24sIGZvciB3aG9tIApoZSBoYWQgZmVsdCBhbiBlc3BlY2lhbGx5IHdhcm0gYWZmZWN0aW9uOyBhbmQgaGlzIAplYXJsaWVzdCByZXF1ZXN0IHdhcyB0byBiZSB0YWtlbiBieSBhIG1vcmUgZXhwZXJpLSAKZW5jZWQgZnJpZW5kIHRvIHZpc2l0IGhlciBpbiB0aGUgaG9wZSB0aGF0IGhlIG1pZ2h0IApiZSBvZiBzb21lIHNlcnZpY2UgdG8gaGVyLiBUaGlzIHdhcyBkb25lLCBhbmQgdGhlIAplZmZlY3Qgb2YgdGhlIG1lZXRpbmcgb2YgdGhlIGxpdmluZyBhbmQgdGhlIGRlYWQgd2FzIApiZWF1dGlmdWwgYW5kIHRvdWNoaW5nLiBUaGUgb2xkZXIgcGVyc29u4oCZcyBhc3RyYWwgCmxpZmUgd2FzIGFscmVhZHkgYXBwcm9hY2hpbmcgaXRzIGVuZCwgYnV0IGEgY29uZGl0aW9uIApvZiBhcGF0aHksIGR1bG5lc3MgYW5kIHVuY2VydGFpbnR5IHByZXZlbnRlZCBoZXIgCmZyb20gbWFraW5nJ2FueSBpbW1lZGlhdGUgcHJvZ3Jlc3MuIAoKQnV0IHdoZW4gdGhlIGJveSwgd2hvIGhhZCBiZWVuIHNvIG11Y2ggdG8gaGVyIAppbiBlYXJ0aC1saWZlLCBzdG9vZCBvbmNlIG1vcmUgYmVmb3JlIGhlciBhbmQgZGlzLSAKc29sdmVkIGJ5IHRoZSBzdW5saWdodCBvZiBoaXMgbG92ZSB0aGUgZ3JleSBtaXN0IG9mIApkZXByZXNzaW9uIHdoaWNoIGhhZCBnYXRoZXJlZCBhcm91bmQgaGVyLCBzaGUgd2FzIAoKCjEzMiAKCgpJTlZJU0lCTEUgSEVMUEVSUyAKCgphcm91c2VkIGZyb20gaGVyIHN0dXBvcjsgYW5kIHNvb24gc2hlIHVuZGVyc3Rvb2QgCnRoYXQgaGUgaGFkIGNvbWUgaW4gb3JkZXIgdG8gZXhwbGFpbiB0byBoZXIgaGVyIApzaXR1YXRpb24sIGFuZCB0byB0ZWxsIGhlciBvZiB0aGUgZ2xvcmllcyBvZiB0aGUgaGlnaGVyIApsaWZlIHRvd2FyZCB3aGljaCBoZXIgdGhvdWdodHMgYW5kIGFzcGlyYXRpb25zIApvdWdodCBub3cgdG8gYmUgZGlyZWN0ZWQuIEJ1dCB3aGVuIHRoaXMgd2FzIGZ1bGx5IApyZWFsaXplZCwgdGhlcmUgd2FzIHN1Y2ggYW4gYXdha2VuaW5nIG9mIGRvcm1hbnQgCmZlZWxpbmcgaW4gaGVyIGFuZCBzdWNoIGFuIG91dHJ1c2ggb2YgZGV2b3RlZCAKYWZmZWN0aW9uIHRvd2FyZHMgaGVyIGVhcm5lc3QgeW91bmcgaGVscGVyLCB0aGF0IHRoZSAKbGFzdCBmZXR0ZXJzIHdoaWNoIGJvdW5kIGhlciB0byB0aGUgYXN0cmFsIGxpZmUgd2VyZSAKYnJva2VuLCBhbmQgdGhhdCBvbmUgZ3JlYXQgb3V0YnVyc3Qgb2YgbG92ZSBhbmQgCmdyYXRpdHVkZSBzd2VwdCBoZXIgZm9ydGh3aXRoIGludG8gdGhlIGhpZ2hlciBjb24tIApzY2lvdXNuZXNzIG9mIHRoZSBoZWF2ZW4td29ybGQuIFRydWx5IHRoZXJlIGlzIG5vIApncmVhdGVyIGFuZCBtb3JlIGJlbmVmaWNlbnQgcG93ZXIgaW4gdGhlIHVuaXZlcnNlIAp0aGFuIHRoYXQgb2YgcHVyZSwgdW5zZWxmaXNoIGxvdmUuIAoKCkNIQVBURVIgWFZJSSAKCgpXT1JLIElOIENPTk5FQ1RJT04gV0lUSCAKVEhFIFdBUiAKCk1hbnkgaGF2ZSBhc2tlZCB3aGF0LCBpZiBhbnl0aGluZywgaXQgd2FzIGZvdW5kIApwb3NzaWJsZSBmb3IgdGhlIGJhbmQgb2YgaW52aXNpYmxlIGhlbHBlcnMgdG8gZG8gaW4gCmNvbm5lY3Rpb24gd2l0aCB0aGUgd2FyLiBJdHMgbWVtYmVycyB3b3JrZWQgCm5vYmx5IGR1cmluZyB0aGF0IGF3ZnVsIHRpbWUsIGFuZCBJIHRoaW5rIEkgbWF5IHNheSAKdGhhdCB0aGV5IHdlcmUgb2YgaW5jYWxjdWxhYmxlIHVzZSBhbmQgYXNzaXN0YW5jZS4gCkF0IHRoYXQgcGVyaW9kIGFuZCBmb3IgdGhhdCBwdXJwb3NlIG91ciBiYW5kIHdhcyAKbGFyZ2VseSBhdWdtZW50ZWQuIEV2ZW4gaW4gb3JkaW5hcnkgZGF5cyB0aGVyZSAKYXJlIG51bWJlcnMgb2YgaGVscGVycyBvdXRzaWRlIHRoZSBUaGVvc29waGljYWwgCmNpcmNsZSwgYW5kIGR1cmluZyB0aGUgd2FyIHRob3VzYW5kcyBvZiBwZW9wbGUgCm9mZmVyZWQgdGhlbXNlbHZlcyB3aG8gaGFkIHByb2JhYmx5IG5ldmVyIHRob3VnaHQgCm9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIHdvcmsgYmVmb3JlLiAKClRoZSBjb25kaXRpb25zIGludHJvZHVjZWQgYnkgdGhlIHdhciB3ZXJlIGluIAp2YXJpb3VzIHdheXMgdW51c3VhbC4gSXQgd2FzIG5vdCBvbmx5IHRoYXQgdGhvdS0gCnNhbmRzIG9mIG1lbiB3ZXJlIHN1ZGRlbmx5IHRocm93biBvdXQgaW50byB0aGUgCmFzdHJhbCB3b3JsZCwgYnV0IHRoYXQgYWxsIHRoZXNlIG1lbiB3ZXJlIHlvdW5nIGFuZCAKc3Ryb25nIGFuZCBuZWFybHkgYWxsIG9mIHRoZW0gYmVsb25nZWQgdG8gdGhlIG1vc3QgCmFkdmFuY2VkIHJhY2VzIG9mIHRoZSB3b3JsZC4gQSBtYW4gd2hvIGRpZXMgaW4gCm9sZCBhZ2UgaGFzIGFscmVhZHkgZXhoYXVzdGVkIG1vc3Qgb2YgaGlzIGVtb3Rpb25hbCAKCgoxMzQgCgoKSU5WSVNJQkxFIEhFTFBFUlMgCgoKZm9yY2VzOyB0aG9zZSB3aGljaCBhcmUgc3RpbGwgcGxheWluZyB0aHJvdWdoIGhpbSBhcmUgCmNvbXBhcmF0aXZlbHkgd2VhayBhbmQgZWFzaWx5IGNvbnRyb2xsZWQsIGFuZCBhcmUgCm5vdCBsaWtlbHkgdG8gZ2l2ZSBoaW0gbXVjaCB0cm91YmxlLiBCdXQgdGhlIG1hbiAKd2hvIGRpZXMgaW4gdGhlIGZ1bGwgZmx1c2ggb2YgeW91dGggYW5kIHN0cmVuZ3RoIGhhcy0gCmhpcyBlbW90aW9ucyBhbGwgYXQgdGhlaXIgaGlnaGVzdCBwb2ludDsgdGhlcmVmb3JlIGhlIAppcyBjYXBhYmxlIG9mIHN1ZmZlcmluZyB0aHJvdWdoIHRoZW0ganVzdCBhcyBvbiB0aGUgCm90aGVyIGhhbmQgaGUgaXMgY2FwYWJsZSBvZiBtb3JlIGVuam95bWVudCB0aHJvdWdoIAp0aGVtLiBUaGVyZWZvcmUgaGlzIGFzdHJhbCBsaWZlIHVzdWFsbHkgcHJlc2VudHMgYSAKZGlmZmVyZW50IHNldCBvZiBwcm9ibGVtcyBmb3Igc29sdXRpb24uIAoKV2hhdCBpcyB0aGUgY29uZGl0aW9uIG9mIHRoZXNlIHBlb3BsZSB3aG8gZGllIHNvIApzdWRkZW5seT8gU29tZSBvZiB0aGVtIGFyZSBmb3IgcXVpdGUgYSBsb25nIHRpbWUgCmFmdGVyIGRlYXRoIHByYWN0aWNhbGx5IHVuY29uc2Npb3VzIG9mIHRoZSBzdXJyb3VuZC0gCmluZyB3b3JsZC4gVGhhdCBpcyBvbmUgb2YgdGhlIGNvbnNlcXVlbmNlcyBvZiB0aGF0IApyZWFycmFuZ2VtZW50IG9mIHRoZSBtYXR0ZXIgb2YgdGhlIGFzdHJhbCBib2R5IHRvIAp3aGljaCBJIHJlZmVycmVkIGluIGEgcHJldmlvdXMgY2hhcHRlci4gQWxsIHRoZSAKY29hcnNlc3QgYW5kIGdyb3NzZXN0IGFzdHJhbCBtYXR0ZXIgaXMgcHV0IG91dHNpZGUgb24gCnRoZSBwZXJpcGhlcnkgb2YgdGhlIGFzdHJhbCBvdm9pZDsgYW5kIHRoZSByZXN1bHQgaXMgCnRoYXQgb25seSBpbXByZXNzaW9ucyBzdWNoIGFzIGNhbiB3b3JrIHRocm91Z2ggdGhhdCAKZ3Jvc3NlciB0eXBlIG9mIG1hdHRlciDigJQgdmlicmF0aW9ucyB0byB3aGljaCBpdCB3aWxsIApyZXNwb25kIOKAlCBjYW4gZWl0aGVyIHJlYWNoIHRoZSBtYW4gb3IgYmUgZXhwcmVzc2VkJyAKYnkgaGltLiAKClRoZSBtYW4gd2hvIGhhcyBiZWVuIGxpdmluZyBhbiBvcmRpbmFyaWx5IGRlY2VudCAKcGh5c2ljYWwgbGlmZSBoYXMgbm90IGJlZW4gaW4gdGhlIGhhYml0IG9mIHVzaW5nIHRoYXQgCmdyb3NzZXIgbWF0dGVyLiBBbGwgdGhlIGhpZ2hlciBlbW90aW9ucyDigJQgbG92ZSwgCmRldm90aW9uLCBzeW1wYXRoeSwgcGF0cmlvdGlzbSDigJQgdXNlIHRoZSBmaW5lciBwYXJ0aS0gCmNsZXMgb2YgdGhlIGFzdHJhbCBib2R5OyBvbmx5IHRoZSBsb3dlciBlbW90aW9ucywgCnN1Y2ggYXMgc2Vuc3VhbGl0eSwgYW5nZXIsIGVudnksIGhhdHJlZCwgdXNlIHRoZSAKZ3Jvc3NlciBwYXJ0IG9mIGl0LiBBIG1hbiBkb2VzIG5vdCBzdWRkZW5seSBjaGFuZ2UgCgoKV09SSyBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFdBUiAxMzUgCgpoaXMgbmF0dXJlIHdoZW4gaGUgZGllcywgYW5kIGJlZ2luIHRvIHVzZSB2aWJyYXRpb25zIAp0byB3aGljaCBoZSBpcyBub3QgYWNjdXN0b21lZDsgYW5kIGFzIGhlIGNhbiBiZSAKY29uc2Npb3VzIG9ubHkgdGhyb3VnaCB0aGUgb3V0ZXIgZmlsbSBvZiBoaXMgYXN0cmFsIApib2R5LCB0aGUgY29uc2VxdWVuY2UgaXMgdGhhdCBoZSByZW1haW5zIHNodXQgdXAgCmluc2lkZSB0aGF0IHNoZWxsIG9mIGRlbnNlIG1hdHRlciwgbGl2aW5nIGluIGEgc29ydCBvZiAKcm9zeSBkcmVhbSwgaGFwcGlseSB1bmNvbnNjaW91cyBvZiBhbGwgdGhlIHVucGxlYS0gCnNhbnRuZXNzIGFyb3VuZCBoaW0sIHVudGlsIHRob3NlIGdyb3NzZXIgcGFydGljbGVzIApncmFkdWFsbHkg4oCcd2VhciBhd2F5LCBhbmQgaGUgd2FrZXMgdXAgYXQgYSBoaWdoZXIgCmxldmVsLiBCdXQgdGhhdCBtYXkgbm90IGJlIGZvciB3ZWVrcywgb3Igc29tZXRpbWVzIApldmVuIG1vbnRocy4gCgpPdGhlcnMgZXhwZXJpZW5jZSBub3RoaW5nIGJ1dCBhIG1vbWVudGFyeSAKdW5jb25zY2lvdXNuZXNzIGF0IGRlYXRoIOKAlCBqdXN0IGEgc2hhcnAgc2hvY2ssIGFuZCAKdGhlbiB0aGV5IGZlZWwgZmFyIGJldHRlciBhbmQgbGlnaHRlciB0aGFuIHRoZXkgZXZlciAKZmVsdCBiZWZvcmUuIEl0IGlzIG5vdCBvbmx5IHRoZSB3ZWlnaHQgb2YgdGhlIHBoeXNpY2FsIApib2R5IG9mIHdoaWNoIHRoZXkgYXJlIHJlbGlldmVkOyBpdCBpcyBmYXIgbW9yZSB0aGUgCnByZXNzdXJlIG9mIHRoZSBhdG1vc3BoZXJlIGZpZnRlZW4gcG91bmRzIHRvIHRoZSAKc3F1YXJlIGluY2gg4oCUIHBlcmhhcHMgYWJvdXQgdHdvIHRvbnMgb24gdGhlIHdob2xlIApib2R5LiBXZSBhcmUgc28gYWNjdXN0b21lZCB0byB0aGlzIHRoYXQgd2UgYmVhciAKaXQgYWxsIHRoZSB0aW1lIHdpdGhvdXQga25vd2luZyB0aGF0IGl0IGlzIHRoZXJlOyBidXQgCndoZW4gd2UgYXJlIHNldCBmcmVlIGZyb20gaXQsIHdeZSByZWFsaXplIHRoYXQgd2UgCmhhdmUgbG9zdCBzb21ldGhpbmcgaW5jcmVkaWJseSBoZWF2eSBhbmQgZGVwcmVzc2luZy4gCgpPZnRlbiBzdWNoIGEgbWFuIGRvZXMgbm90IGtub3cgdGhhdCBoZSBpcyBkZWFkKiAKYW5kIHdpbGwgbm90IGJlbGlldmUgaXQuIEhlIHdpbGwgcGVyaGFwcyB0cnkgdG8gcGljayAKdXAgaGlzIHJpZmxlOyBoZSBjYW5ub3QgZ3Jhc3AgaXQuIEhlIHdhbGwgdHJ5IHRvIApzcGVhayB0byBhIGxpdmluZyBjb21yYWRlOyBoZSBkb2VzIG5vdCBoZWFyIGhpbTsgCmhlIHdpbGwgdHJ5IHRvIHRvdWNoIHNvbWUgcGh5c2ljYWwgZnJpZW5kOyB0aGVyZSBpcyAKbm8gcmVzdWx0LiBIZSB3aWxsIHNheSB0byBhIGhlbHBlcjog4oCcWW91IHNheSBJIGFtIApkZWFkOyBJIGZlZWwgbXVjaCBtb3JlIGFsaXZlIHRoYW4gSSBkaWQgdGVuIG1pbnV0ZXMgCgoKMTM2IAoKCklOVklTSUJMRSBIRUxQRVJTIAoKCmFnby7igJ0gU29tZXRpbWVzIGhlIHdhbnRzIHRvIGdvIG9uIGZpZ2h0aW5nOyB0aGVuIAppdCBpcyBuZWNlc3NhcnkgdG8gY2FsbSBoaW0gYW5kIGV4cGxhaW4gdGhpbmdzIHRvIApoaW0uIFdoZW4gYXQgbGFzdCBzdWNoIGEgc29sZGllciByZWFsaXplZCBoaXMgCnBvc2l0aW9uLCBoZSB3YXMgZ2VuZXJhbGx5IGltbWVuc2VseSBpbnRlcmVzdGVkLCBmb3IgCmhlIGZvdW5kIHRoYXQgaGUgaGFkIGFsbCBzb3J0cyBvZiBuZXcgb3Bwb3J0dW5pLSAKdGllcy4gSGUgY291bGQgZ28gdW5zZWVuIGludG8gdGhlIGVuZW154oCZcyBsaW5lcywgCmFuZCBoZSB3YXMgb2Z0ZW4gdmVyeSBhbnhpb3VzIHRvIGNvbW11bmljYXRlIGhpcyAKb2JzZXJ2YXRpb25zLCB0aG91Z2ggaXQgd2FzIG9ubHkgdmVyeSByYXJlbHkgdGhhdCBoZSAKY291bGQgc3VjY2VlZCBpbiBkb2luZyBzby4gU3RpbGwsIHRoZXJlIHdlcmUgYSBmZXcgCmNhc2VzIGluIHdoaWNoIGhlIGRpZCBtYW5hZ2UgdG8gbWFrZSBhbiBpbXByZXMtIApzaW9uIG9uIHNvbWVib2R54oCZcyBtaW5kOyBidXQgZXZlbiB0aGVuLCB0aGUgcmUtIApjaXBpZW50IHVzdWFsbHkgdGhvdWdodCB0aGF0IGl0IHdhcyBvbmx5IGltYWdpbmF0aW9uLCAKYW5kIHRvb2sgbm8gaGVlZC4gCgpTb21lIG1lbiB3ZXJlIGNoaWVmbHkgYW54aW91cyBhYm91dCB0aGVpciBmYW1pbGllczsgCm90aGVycyB3ZXJlIGRlc2lyb3VzIHRvIGxlYXJuIGFsbCB0aGV5IGNvdWxkIG9mIHRoZSAKbmV3IGNvbmRpdGlvbnMgaW4gd2hpY2ggdGhleSBmb3VuZCB0aGVtc2VsdmVzLiAKVGhlIGJ1c2luZXNzIG9mIHRoZSBpbnZpc2libGUgaGVscGVyIGlzIHRvIGJlIHJlYWR5IAp0byBtZWV0IGFsbCB0aGVzZSBkaWZmZXJlbnQgcmVxdWlyZW1lbnRzLiBUaGUgCnByaW5jaXBhbCBkZW1hbmQgbWFkZSB1cG9uIGhpbSBpcyBmb3IgdGVhY2hpbmcgb2YgCnNvbWUgc29ydDsgaXQgdXN1YWxseSBhbW91bnRzIHRvIGdpdmluZyB0aGVtIFRoZW8tIApzb3BoaWNhbCBpbmZvcm1hdGlvbiDigJQgbm90IHRoYXQgd2Ugd2lzaCB0byBpbXBvc2UgCm91ciBiZWxpZWYgdXBvbiB0aGVtLCBidXQgYmVjYXVzZSBpdCByZXByZXNlbnRzIHRoZSAKZmFjdHMgb2YgdGhlIGNhc2UgYW5kIGl0IGlzIGZvciB0aG9zZSB0aGF0IHRoZXkgYXNrLiAKV2hlbiBtYXR0ZXJzIHdlcmUgZXhwbGFpbmVkIHRvIHRoZW0sIG1hbnkgb2YgdGhlIApkZWFkIHNvbGRpZXJzIHdlcmUgcmVhZHkgYW5kIGVhZ2VyIHRvIGRvIHdoYXRldmVyIAp0aGV5IGNvdWxkIGZvciB0aGVpciBjb21yYWRlcywgd2hldGhlciB0aGUgbGF0dGVyIHdlcmUgCmFscmVhZHkgb24gdGhlIGFzdHJhbCBvciBzdGlsbCBvbiB0aGUgcGh5c2ljYWwgcGxhbmUsIAphbmQgdGhlaXIgYWN0aXZpdGllcyB3ZXJlIHZhcmllZCBhbmQgbW9zdCB1c2VmdWwuIAoKCldPUksgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBXQVIgMTM3IAoKSSBjYW5ub3QgaGVyZSBlbnRlciB1cG9uIHNvIHZhc3QgYSBmaWVsZCBhcyB0aGUgCmRlc2NyaXB0aW9uIG9mIHRoZXNlIG11bHRpZmFyaW91cyBlbnRlcnByaXNlczsgYnV0IEkgCndpbGwgZ2l2ZSBhIGZldyBzYW1wbGVzIG9mIHRoZSB3b3JrIGRvbmUgaW4gY29uLSAKbmVjdGlvbiB3aXRoIHRoZSB3YXIgYnkgc29tZSBvZiB0aGUganV2ZW5pbGUgCm1lbWJlcnMgb2YgdGhlIGJhbmQgb2YgaGVscGVycyB3aG9zZSBleHBsb2l0cyB3ZSAKaGF2ZSBiZWVuIG5hcnJhdGluZyBpbiBwcmV2aW91cyBjaGFwdGVycy4gVGhlIApvcmlnaW5hbCBDeXJpbCBvZiBsYXN0IGNlbnR1cnksIHdobyBmaWd1cmVkIGluIHRoZSAKc3RvcmllcyBvZiB0aGUgaG90ZWwgZmlyZSBhbmQgdGhlIHR3byBicm90aGVycywgd2FzIArigKJhbiBvZmZpY2VyIGluIHRoZSBCcml0aXNoIGFybXksIHdhcyB0d2ljZSBiYWRseSAKd291bmRlZCwgYW5kIHN1ZmZlcmVkIHRoZSB0ZXJyaWJsZSBmYXRlIG9mIGNhcHR1cmUgCmFuZCBpbXByaXNvbm1lbnQgaW4gR2VybWFueSwgZnJvbSB3aGljaCBoZSB3YXMgCmV2ZW50dWFsbHkgcmVsZWFzZWQgYnkgZXhjaGFuZ2UuIEEgeW91bmcgaGVscGVyIApvZiBhIGxhdGVyIGdlbmVyYXRpb24sIHdobyB3YXMgYW4gZW50aHVzaWFzdGljIAphZG1pcmVyIG9mIGhpcywgc2hvd2VkIGhpcyBhcHByZWNpYXRpb24gYnkgYWRvcHRpbmcgCnRoZSBzYW1lIHBzZXVkb255bTsgYW5kIGl0IGlzIG9mIHNvbWUgb2YgaGlzIAphY2hpZXZlbWVudHMgdGhhdCBJIHNoYWxsIG5vdyB3cml0ZS4gCgpUaGUgU3Rvcnkgb2YgVXJzdWxhIAoKCkluIHRoZSBjb3Vyc2Ugb2Ygb3VyIHdvcmsgYXMgaW52aXNpYmxlIGhlbHBlcnMgb24gCnRoZSBiYXR0bGVmaWVsZCB3ZSBlbmNvdW50ZXJlZCBhIGNlcnRhaW4gQ2FwdGFpbiwgCndobyBoYWQgcmVjZW50bHkgcGFzc2VkIG92ZXIgaW50byB0aGUgYXN0cmFsIHdvcmxkLCAKdG8gd2hvbSB3ZSB3aWxsIGdpdmUgdGhlIG5hbWUgb2YgSGFyb2xkLiBIZSAKcmVhZGlseSBhYnNvcmJlZCBzdWNoIGV4cGxhbmF0aW9ucyBhYm91dCB0aGUgbmV3IApsaWZlIGluIHdoaWNoIGhlIGZvdW5kIGhpbXNlbGYgYXMgd2Ugd2VyZSBhYmxlIHRvIApnaXZlLCBhbmQgc29vbiBiZWNhbWUgcXVpdGUgcmVjb25jaWxlZCBhbmQgaGFwcHksIApleGNlcHQgZm9yIG9uZSBtYXR0ZXIgdGhhdCBwcmV5ZWQgZ3JlYXRseSB1cG9uIGhpcyAKLm1pbmQuIEhlIHdhcyBoaXMgZmF0aGVy4oCZcyBlbGRlc3Qgc29uLCBhbmQgaGFkIG9uZSAKCgoxMzg=

Nessun commento:

Posta un commento

[AL CORPUS] Occult Chemistry [2/2]

VGhlc2UgdW5pdHMgYXJlIGFsbCBhbGlrZSwgc3BoZXJpY2FsIGFuZCBhYnNvbHV0ZWx5IHNpbXBsZSBpbiAKY29uc3RydWN0aW9uLiBUaG91Z2ggdGhleSBhcmUgdGhlIGJhc2lzIG9m...