MIL OSI Translation. Government of the Republic of France statements from English to French – Published June 14, 20180c15004ea8ba13065332e41e67b7d1142a6fc80dc31db62379f85334eea4389b.eyJibG9ja05hbWUiOm51bGwsImF0dHJzIjp7ImRpc2FibGVDYWNoZSI6ZmFsc2V9LCJpbm5lckJsb2NrcyI6W10sImlubmVySFRNTCI6Ik1JTCBPU0kgVHJhbnNsYXRpb24uIEdvdmVybm1lbnQgb2YgdGhlIFJlcHVibGljIG9mIEZyYW5jZSBzdGF0ZW1lbnRzIGZyb20gRW5nbGlzaCB0byBGcmVuY2ggLSBQdWJsaXNoZWQgSnVuZSAxNCwgMjAxODxwPlNlY3Rpb246IEhlYWx0aCBhbmQgc29saWRhcml0eTxcL3A+XG48cCBjbGFzcz1cImMzXCI+T25seSB0aGUgZGVsaXZlcnkgaXMgYXV0aGVudGljTW9udHBlbGxpZXIgLSBXZWRuZXNkYXksIEp1bmUgMTMsIDIwMTg8XC9wPlxuPHA+VGhhbmsgeW91IE1yIFByZXNpZGVudCwgdGhhbmsgeW91IGZvciB0aGlzIHNwZWVjaCBhbmQgeW91ciB3ZWxjb21lLCBNciBQcmVzaWRlbnQsIE1hZGFtIE1pbmlzdGVyLCBMYWRpZXMgYW5kIEdlbnRsZW1lbiBQYXJsaWFtZW50YXJpYW5zLCBNYWRhbSBSZWdpb25hbCBQcmVzaWRlbnQsIE1heW9yLCBsYWRpZXMgYW5kIGdlbnRsZW1lbi48XC9wPlxuPHA+VGhhbmsgeW91IE1heW9yIHRvIHdlbGNvbWUgdXMgaW4gdGhpcyBiZWF1dGlmdWwgY2l0eSBvZiBNb250cGVsbGllciwgSSB1bmRlcnN0b29kIHRoYXQgb25jZSBhIGNlbnR1cnksIHRoaXMgY2l0eSBob3N0ZWQgTXV0dWFsaXR5LCBhbmQgdGhhdCBpdCBpcyB0aGUgbW9tZW50IC0gaXQgaXMgbm90IHRoZSBvbmx5IG9uZSAtIHdoZXJlIHRoZSBwcmVzaWRlbnRzIGNvbWUgdG8gZXhwcmVzcyB0aGVtc2VsdmVzLCBhbmQgdGhlcmUgaXMgYSBsaXR0bGUgbW9yZSB0aGFuIGEgY2VudHVyeSwgaXQgaXMgdGhlIHByZXNpZGVudCBQT0lOQ0FSRSB3aGljaCwgaW4gdGhpcyBzYW1lIGNpdHksIHlvdSBmb3VuZCwgcHJvb2YgaWYgaXQgd2VyZSwgdGhhdCB5b3VyIG1vdmVtZW50IGlzIHJvb3RlZCBpbiB0aGUgaGlzdG9yeSBvZiB0aGUgUmVwdWJsaWMgYW5kIGhhcyBhbHdheXMgaGFkIHRoYXQgc3BlY2lhbCBjb25uZWN0aW9uLCBQcmVzaWRlbnQsIHRoYXQgeW91IGp1c3QgcmVjYWxsZWQuPFwvcD5cbjxwPlNvY2lhbCBqdXN0aWNlLCBzb2xpZGFyaXR5LCBkaWduaXR5LCB0aGVzZSBhcmUgdGhlIHJlcHVibGljYW4gY29tbWl0bWVudHMsIGFuZCB5b3UgaGF2ZSBqdXN0IG5vdyByZXRyYWNlZCwgaW4gc29tZSBmdW5kYW1lbnRhbCBzZWN0b3JzLCBvbiBzb21lIGVzc2VudGlhbCBpc3N1ZXMgb2Ygb3VyIHNvY2lldHksIHRoZSBpbXBvcnRhbmNlIG9mIHRoZXNlIGNvbW1pdG1lbnRzIGFuZCB0aGVzZSB2YWx1ZXMsIG9mIGNvdXJzZSwgd2UgY29udGludWUgdG8gcHJvbWlzZSBldmVyeSBGcmVuY2h3b21hbiBhbmQgZXZlcnkgRnJlbmNod29tYW4gdGhlaXIgZnVuZGFtZW50YWwgcmlnaHRzLiBPZiBjb3Vyc2UsIHdlIGNvbnRpbnVlIHRvIG1ha2UgYSBzb2NpYWwgcHJvdGVjdGlvbiBzeXN0ZW0gd29yayB3aGljaCBnaXZlcyBzb2xpZGFyaXR5IGEgdW5pdmVyc2FsIGRpbWVuc2lvbi4gQnV0IGluIGZhY3QsIHdoYXQgd2Ugc2VlIGlzIHRoYXQgZXZlcnkgZGF5IHRoZSBlZmZlY3RpdmVuZXNzIG9mIHRoZXNlIHJpZ2h0cyBpcyBjaGFsbGVuZ2VkLCBldmVyeSBkYXksIG1hbnkgb2Ygb3VyIGZlbGxvdyBjaXRpemVucyBmaW5kIHRoYXQgdW5pdmVyc2FsaXR5IGlzIGZyYXVnaHQgd2l0aCBleGNlcHRpb25zLCBkaXNwYXJpdGllcywgZGVhZGxvY2ssIHRoYXQgdGhlIHNpdHVhdGlvbnMgb3IgcmlnaHRzIHByb21pc2VkIGFyZSBub3QgcmVhbCByaWdodHMsIGFuZCB0aGV5IGRpc2NvdmVyIGl0IHRvbyBsYXRlLCB3aGVuIHRoZSBlbWVyZ2VuY3kgaXMgdGhlcmUsIHdoZW4gdGhlIGRpc3RyZXNzIGlzIHRoZXJlLCB3aGVuIHRoZXkgbmVlZCBhIGZvdW5kYXRpb24gb2Ygc29saWRhcml0eSBuYXRpb25hbCwgdGhleSBzb21ldGltZXMgZmVlbCBpdCwgdG9vIG9mdGVuLCB0byBoaWRlIHVuZGVyIHRoZWlyIGZlZXQuPFwvcD5cbjxwPldlIGxpdmUgaW4gYSBjb3VudHJ5IHdoZXJlIHRoZSByZXB1YmxpY2FuIHByb21pc2UgaXMgc28gb2Z0ZW4gZGlzYXBwb2ludGVkLCBiZWNhdXNlIHdlIGhhdmUgbWFpbnRhaW5lZCB0aGUgZm9ybWFsIHJpZ2h0cyB3aXRob3V0IHdvcnJ5aW5nIGVub3VnaCB0byBtYWtlIHRoZW0gcmVhbCByaWdodHMgZm9yIGV2ZXJ5b25lLCBhdCBzY2hvb2wsIGluIHRoZSB3b3JsZCBvZiB3b3JrLCBpbiB0aGUgd29ybGQgb2YgaGVhbHRoLCB0aGUgRnJlbmNoIGFyZSB2aXNjZXJhbGx5IGF0dGFjaGVkIHRvIHJpZ2h0cywgYnV0IHRoZXkgdG9vIG9mdGVuIHJlYWxpemUgdGhhdCBmb3IgbWFueSwgdGhleSBleGlzdCBvbmx5IG9uIHBhcGVyIGFuZCBtb3JlIGluIGZhY3Q7IHRoaXMgaXMgdGhlIEZyZW5jaCBpbmRpZ25hdGlvbiBjb250ZW1wb3JhcnkuIFlldCwgYW5kIHRoaXMgaXMgYSByZWFsIHBhcmFkb3gsIHdlIGFyZSBkZXZvdGluZyBhbiBldmVyIGdyZWF0ZXIgc2hhcmUgb2Ygb3VyIG5hdGlvbmFsIHdlYWx0aCB0byBzb2NpYWwgcHJvdGVjdGlvbi4gU28sIHllcywgd2UgY2FuIGJlIHByb3VkIG9mIG91ciBzeXN0ZW0gb2Ygc29jaWFsIHByb3RlY3Rpb24sIGl0IGhvbm9ycyB1cywgYW5kIGl0IGhhcywgb3ZlciB0aGUgZGVjYWRlcywgcmVzcG9uZGVkIHRvIHRoZXNlIGluZGlnbmF0aW9ucywgdGhlIHNhbWUgd2hpY2ggSSBpbW1lZGlhdGVseSBlY2hvLCBidXQgaXQgd291bGQgaGF2ZSwgaW4gYSB3YXksIGRpc3BlbnNlZCBmcm9tIGEgc3RpbGwgbW9yZSBkZW1hbmRpbmcgZWZmb3J0LCB0aGF0IG9mIGxvb2tpbmcgYXQgdGhlIHJlYWxpdHkgb2Ygb3VyIHNvY2lldHkgaW4gdGhlIGZhY2UsIHRoZSBlZmZlY3RpdmVuZXNzIG9mIGVhY2ggb2YgdGhlIHJpZ2h0cywgdGhlIGZvbGRzIG9mIHNvY2lldHksIHRoZSBvYnNjdXJlLCBjdXJzZWQgcGFydHMgd2hlcmUgdGhlc2UgcHJvbWlzZWQgcmlnaHRzIGFyZSBsb3N0LCB3aGVyZSB0aGVzZSBmb3JtYWwgcmlnaHRzIGFyZSBubyBsb25nZXIgcmVhbGl0eS4gQSBzb2NpZXR5IHRoYXQgaXMgaW5jcmVhc2luZ2x5IHNlY3JldGl2ZSBvZiBkZXN0aW55LCBvZiBjb3Vyc2UsIG9mIG9wcG9ydHVuaXRpZXMsIGEgc29jaWV0eSB0aGF0IGV4Y2x1ZGVzIHRoZSBwb3NzaWJpbGl0eSBvZiByZWNvdXJzZSB0byBlbnRpcmUgc2VjdGlvbnMgb2Ygb3VyIHBvcHVsYXRpb24sIGEgc29jaWV0eSB0aGF0IGNhbiBub3Qgb25seSByZWRlZW0gdGhpcyBwb2xpdGljYWwgYW5kIG1vcmFsIGJhbmtydXB0Y3kgYnkgbW9uZXRhcnkgcmVkaXN0cmlidXRpb24sIG5lY2Vzc2FyaWx5IGFsd2F5cyBpbnN1ZmZpY2llbnQuIEFuZCB0aGlzIGlzIHRoZSBtaXN1bmRlcnN0YW5kaW5nIHRoYXQgSSB3b3VsZCBsaWtlIHRvIHN0YXJ0IHdpdGggdGhpcyBtb3JuaW5nIHdpdGggeW91LCBJIGhlYXJkIG1hbnkgY29tbWVudGF0b3JzIHNheSAmcXVvdDtpdCB3aWxsIGdvIGJlZm9yZSB0aGUgbXV0dWFscyBhbmQgaXQgd2lsbCBtYWtlIGEgZ3JlYXQgc29jaWFsIHR1cm5pbmcgcG9pbnQuJnF1b3Q7PFwvcD5cbjxwPkJ1dCBJJiMzOTttIGdvaW5nIHRvIHRlbGwgeW91LCBJIGRvIG5vdCBmZWVsIHRoYXQgd2hlbiB5b3UgZ2V0IGJhY2sgb24gdGhlIGVjb25vbXksIHdoZW4geW91IGFsbG93IHBlb3BsZSB0byBwcm9kdWNlIG1vcmUsIHlvdSYjMzk7cmUgbm90IGFnYWluc3QgdGhlIHNvY2lhbCBtb2RlbCwgeW91JiMzOTtyZSBhbiBleGFtcGxlLiBhbGl2ZSwgYnV0IGl0IGlzIHRvIHByb2R1Y2UgdG8gcmVkaXN0cmlidXRlLCBJIGRvIG5vdCBmZWVsIHRoYXQgd2hlbiB3ZSBtYWtlIHRoZSByZWZvcm1zIG9mIHRoZSBzY2hvb2wsIGNvbGxlZ2UsIGhpZ2ggc2Nob29sLCB1bml2ZXJzaXR5IG1hZGUgZm9yIGEgbGl0dGxlIG92ZXIgYSB5ZWFyLCB3ZSB0aGUgZW5lbXkgb2YganVzdGljZSwgYnV0IHRoZSByb290IG9mIHRoZSBldmlsIGlzIGF0dGFja2VkLiBUaGUgZmFjdCB0aGF0IHdlIGhhdmUsIGZvciBkZWNhZGVzLCBiZWVuIGNvbnRlbnQgd2l0aCBmb3JtYWwgcmlnaHRzLCBzdHJpY3RseSBtb25ldGFyeSByZWRpc3RyaWJ1dGlvbiwgZm9yZ2V0dGluZyB0aGUgaW5lcXVhbGl0aWVzIG9mIGRlc3RpbnksIG91ciBzeXN0ZW0gdG9kYXkgaXMgbW9yZSB1bmVxdWFsIHRoYW4gMzAgeWVhcnMgYWdvIG9uIHRoZSBhY2FkZW1pYyBsZXZlbCwgb24gdGhlIHBsYW4gZm9yIGFjY2VzcyB0byB0aGUgbW9zdCBxdWFsaWZpZWQgam9icywgYmUgaXQgdGhlIGNvbXBhbnkgb3IgdGhlIHNlbmlvciBjaXZpbCBzZXJ2aWNlLCBvdXIgc3lzdGVtIGlzIG1vcmUgZGV0ZXJtaW5pc3RpYyB0aGFuIGl0IHdhcyAzMCB5ZWFycyBhZ28sIGl0IGlzIGEgcmVhbGl0eS4gQW5kIHNvIHRvIHRhY2tsZSB0aGUgaW5lcXVhbGl0aWVzIGlzIHRvIGF0dGFjayB0aGVpciByb290cywgaXQmIzM5O3Mgd2FudGluZyB0byBzaGFrZSB1cCBhIHNvY2lldHkgdGhhdCBoYXMgYmVjb21lIGEgc29jaWV0eSBvZiBzdGF0dXMsIGl0JiMzOTtzIHdhbnRpbmcgdG8gcmVjb2duaXplIHRoYXQgYWxsIHRoZXNlIGNoYWxsZW5nZXMgYXJlIG5vdCBqdXN0IG1vbmV0YXJ5LCBpdCYjMzk7cyB3YW50aW5nLCBpbiBhIHdheSwgdG8gcmVpbnZlbnQgLSBidXQgeW91JiMzOTtsbCBoaXNzIG1lIGF0IHRoZSBlbmQgaWYgeW91IHdpc2gsIGJ1dCBsZXQgbWUgZmluaXNoLCBlc3BlY2lhbGx5IHNpbmNlIEkgZG8gbm90IHNlZSB5b3UgLSBhbmQgaXQmIzM5O3Mga25vd2luZyBob3cgdG8gcmVpbnZlbnQgb3VyIHdlbGZhcmUgc3RhdGUsIHRoaXMgb25lIGRvZXMgbm90IG9mZmVyIFRvbyBvZnRlbiBhcyB0aGUgbGFzdCBuZWNlc3Nhcnkgc2FmZXR5IG5ldCwgd2hpY2ggd2Ugd2lsbCBtYWludGFpbiwgYnV0IGl0IGRvZXMgbm90IHN1ZmZpY2llbnRseSBndWFyYW50ZWUgdGhlIGNvbmRpdGlvbnMgb2YgYSBkaWduaWZpZWQgbGlmZS4gVGhhdCYjMzk7cyB0aGUgZmlnaHQgSSB3YW50IGZvciB0aGlzIGZpdmUteWVhciwgZGlnbmlmaWVkIGxpZmUhIEFuZCBhIGRpZ25pZmllZCBsaWZlLCB0aGF0IGRvZXMgbm90IG1lYW4gdG8gcHJvbWlzZSB0byBzdGF5IHdoZXJlIHdlIGFyZSBib3JuLCBpdCBkb2VzIG5vdCBtZWFuIHRvIHByb21pc2UgdG8gc3RheSB3aGVyZSB3ZSBmZWxsLCBpdCBtZWFucyB0byBiZSBhYmxlIHRvIGNob29zZSBhdCBhbnkgbW9tZW50IHdoZXJlIHdlIGNhbiBoaXMgbGlmZSwgYW5kIHRoYXQgbWVhbnMgaGF2aW5nIGEgc29jaWV0eSB0aGF0IGdpdmVzIHlvdSB0aGUgY29uZGl0aW9ucyBvZiB0aGF0IGRpZ25pdHkuPFwvcD5cbjxwPldlIGhhdmUgaW5oZXJpdGVkIGEgd2VsZmFyZSBzdGF0ZSBmcm9tIHRoZSAyMHRoIGNlbnR1cnksIGFuZCB3ZSBtdXN0IHN0cmVuZ3RoZW4gaXQsIGJ1dCB3ZSBtdXN0IGJ1aWxkIGEgd2VsZmFyZSBzdGF0ZSBmb3IgZGlnbml0eSBhbmQgZW1hbmNpcGF0aW9uIGZvciB0aGUgMjFzdCBjZW50dXJ5LCBhbmQgd2UgbmVlZCBhIGNvbGxlY3RpdmUgb3JnYW5pemF0aW9uIG9mIGZyYXRlcm5pdHksIHdoaWNoIGVuc3VyZXMgdGhlIGRpZ25pdHkgb2YgZXZlcnlvbmUsIHRoYXQgaXMgbXkgbWFpbiBvYmplY3RpdmUsIGl0IGlzIHRoYXQgb2YgdGhlIFN0YXRlLCBidXQgeW91IGFyZSBwZXJmZWN0bHkgcmlnaHQsIGl0IGNhbiBub3QgYmUgYWxvbmUsIGl0IGlzIHRoYXQgb2YgbG9jYWwgYXV0aG9yaXRpZXMsIHdoaWNoLCBhbGwsIGFyZSBlbmdhZ2VkIGluIHRoaXMgYWN0aW9uLCByZWdpb25zLCBkZXBhcnRtZW50cywgbWV0cm9wb2xpc2VzLCBtdW5pY2lwYWxpdGllcyBpcyB0aGUgd29yayBvZiB0aGUgc29jaWFsIHBhcnRuZXJzIGluIGNvbnRhY3Qgd2l0aCB0aGUgcmVhbCwgdGhlIHNvY2lhbCBldmVyeSBkYXkuIEFuZCBpdCBpcyB0aGF0IG9mIGFsbCB0aGUgc29jaWFsIGFjdG9ycyBhbmQgdGhlc2UgYWN0b3JzIGEgbGl0dGxlIHBhcnRpY3VsYXIgeW91IHJlY2FsbGVkIHRoZSBoaXN0b3J5IGFuZCBzdHJlbmd0aCB0aGF0IGFyZSBpbmRlZWQgdGhlIG11dHVhbGlzdHMsIGFjdG9ycyBvZiBuYXRpb25hbCBzb2xpZGFyaXR5LCBjb21taXR0ZWQgdG8gdGhpcyBjYXVzZSB3aGljaCwgeW91IGhhdmUgcmVjYWxsZWQsIGFsbCBhdCB0aGUgc2FtZSB0aW1lIHByb3RlY3QgYW5kIGFjdCwgaGF2ZSBidWlsdCB0aHJvdWdoIHRoZSBjZW50dXJpZXMgdGhpcyBhYmlsaXR5IHRvIHByb3ZpZGUgYW5zd2VycyBpbiB0ZXJtcyBvZiBwcm90ZWN0aW9uLCBidXQgYWxzbyB0byBhY3Qgb24gdGhlIGdyb3VuZCwgdG8gb2ZmZXIgY2FyZSwgYXR0ZW50aW9uLCBhbmQgSSB3aWxsIG5vdCBmb3JnZXQsIGluIG90aGVyIHRpbWVzLCB0aGUgaG91cnMgc3BlbnQgbm90IGZhciBmcm9tIExvcmllbnQsIHRvIEtlcnBhcGUsIHNlZWluZyB0aGUgd29yayB0aGF0IGhhZCBiZWVuIGRvbmUgYW5kIHRoZSBleGNlbGxlbmNlIG9mIHRoaXMgb25lLiBCdXQgaXQgaXMgYWxzbyB0aGUgY29tbWl0bWVudCwgdGhlIHRpbWUgZ2l2ZW4gb24gYSB2b2x1bnRhcnkgYmFzaXMgaW4gY291bmNpbHMgYW5kIGluIHRoZSBhY3Rpb24gb24gdGhlIGdyb3VuZCB0byBjaGFuZ2UuIEl0IGlzIHRoZSBwYXJ0aWNpcGF0aW9uIG9mIHlvdXIgbW92ZW1lbnQgaW4gdGhlIFJlcHVibGljYW4gcHJvamVjdCB0aGF0IHdpbGwgYWxsb3csIHdpdGggYWxsIHRoZSBhY3RvcnMgdGhhdCBJIGhhdmUgbWVudGlvbmVkLCB0aGlzIHJhZGljYWwgcmVmb3VuZGF0aW9uIHRoYXQgd2UgbmVlZCB0b2RheS4gT3VyIGNob2ljZSBpcyBzaW1wbGUsIGl0IGlzIHRoZSBjaG9pY2UgYmV0d2VlbiwgaW4gYSB3YXksIHR3byBsb3lhbHRpZXMsIHRoYXQgaXMsIHdlIHJlbWFpbiBmYWl0aGZ1bCB0byBhIHN5c3RlbSB0aGF0IG5vIGxvbmdlciBtZWV0cyB0aGUgb2JqZWN0aXZlcyBvZiBzb2NpYWwganVzdGljZSB0aGF0IGl0IGhhZCBvcmlnaW5hbGx5IGFzc2lnbmVkLCBhbmQgd2hpY2ggZG9lcyBub3QgaXMsIG1vcmVvdmVyLCBtb3JlIGluIGxpbmUgd2l0aCB0aGUgZXhwZWN0YXRpb25zIG9mIG91ciBmZWxsb3cgY2l0aXplbnMgYW5kIHRoZSBhY3RvcnMgd2hvIGRvIGl0LiBFaXRoZXIgd2UgY2hvb3NlIHRvZ2V0aGVyIHRvIGJlIGZhaXRoZnVsIHRvIHRoZSB2YWx1ZXMgXHUyMDBiXHUyMDBidGhhdCB1bml0ZSB1cywgdG8gcmVpbnZlbnQgYSBzeXN0ZW0gdGhhdCBtYWtlcyB0aGUgcmlnaHRzIGVmZmVjdGl2ZSBhbmQgY29uY3JldGUgZm9yIGFsbCBvdXIgZmVsbG93IGNpdGl6ZW5zLiBJdCBpcyB0aGlzIHNlY29uZCB3YXkgd2l0aCB5b3UgdGhhdCBJIHdpbGwgY2hvb3NlLCBpdCBpcyBtb3JlIGRpZmZpY3VsdCwgaXQgcHJvYmFibHkgdGFrZXMgbW9yZSB0aW1lLCBpdCBpcyBub3Qgc2V0dGxlZCBzaW1wbHkgYnkgYnVkZ2V0IHByb21pc2VzIG9yIGNvbW1pdG1lbnRzIHRoYXQgd2lsbCBiZSBoZWxkIGxhdGUuIEl0IGltcGxpZXMgb3VyIGltbWVkaWF0ZSBhY3Rpb24gYW5kIGl0IGludml0ZXMgdXMgY29sbGVjdGl2ZWx5IHRvIGdpdmUgaW4gdG8gbmVpdGhlciBjeW5pY2lzbSBub3IgaHlwb2NyaXN5LiBUaGUgbW9zdCBwcmVjaW91cyBwYXJ0IG9mIG91ciBzb2NpYWwgc3lzdGVtIGlzIHRoZSBzcGlyaXQgdGhhdCBnaXZlcyBpdCBiaXJ0aC4gSXQgaXMgdGhpcyB2aXNpb25hcnkgc29saWRhcml0eSBvZiB0aGUgbWVtYmVycyBvZiB0aGUgTmF0aW9uYWwgQ291bmNpbCBvZiBSZXNpc3RhbmNlIHdobyBpbnZlbnRlZCB0aGUgc3lzdGVtIHRoYXQgaXMgcGVyZmVjdGx5IHN1aXRlZCB0byBhIGJydWlzZWQgcGVvcGxlIGFuZCBhIG5hdGlvbiB1bmRlcmdvaW5nIHJlY29uc3RydWN0aW9uLiBPdXIgbWlzc2lvbiBpcyB0byByZWNvbm5lY3Qgd2l0aCB0aGlzIHNwaXJpdCwgbm90IHRvIGJlIGFmcmFpZCBvZiBjaGFuZ2UsIGJlY2F1c2Ugc29jaWV0eSBoYXMgY2hhbmdlZCwgYW5kIG5vdCB0byBtYWtlIHVzIHRoZSB2ZXN0YWxzIG9mIGEgc29jaWFsIG9yZGVyIHRoYXQsIGZvciAyNSB5ZWFycywgdGhlIGV2b2x1dGlvbiBvZiB0aGUgd29ybGQsIG1vcmFscywgc29jaWV0eSBoYXMgY29tZSB0byBzaGFrZSBpdHMgZm91bmRhdGlvbnMgYW5kIHdob3NlIGVmZmVjdGl2ZW5lc3MgaXQgaGFzIGNvbWUgdG8gdW5kZXJtaW5lLiBXZSB0b28gY291bGQsIGFmdGVyIHNvIG1hbnkgb3RoZXJzLCB5aWVsZCB0byB0aGUgd29yc2hpcCBvZiB0b3RlbXMsIGJ1dCBJIHdvdWxkIGFsd2F5cyBwcmVmZXIgZWZmZWN0aXZlIHNvY2lhbCBqdXN0aWNlIHRvIGluY2FudGF0aW9ucywgYW5kIGVmZmljaWVuY3kgdG8gZmV0aXNoaXNtLiBUaGF0IGlzIHdoeSwgd2hhdCB3ZSBtdXN0IGRvIGluIHRlcm1zIG9mIG5hdGlvbmFsIHNvbGlkYXJpdHksIGlzIGEgcHJvZm91bmQgcmV2b2x1dGlvbiB0aGF0IGdpdmVzIHRoZSBGcmVuY2ggdGhlaXIgcmlnaHRzLCB0aGVpciBkaWduaXR5LCB0aGVpciBob3BlLCBhbmQgSSB3aWxsIHN1bW1hcml6ZSBpdCBhcm91bmQgdGhyZWUgcHJpbmNpcGxlczogcHJldmVudGlvbiwgd2hpY2ggYXR0YWNrcyB0aGUgaW5lcXVhbGl0aWVzIGJlZm9yZSBpdCBpcyB0b28gbGF0ZSwgYmVjYXVzZSBpdCBpcyBib3RoIG1vcmUgZWZmaWNpZW50IGFuZCBtb3JlIGp1c3QsIHVuaXZlcnNhbGl0eSwgd2hpY2ggZ2l2ZXMgdGhlIHNhbWUgcmlnaHRzIHRvIGV2ZXJ5b25lLCBpbiBhIHRyYW5zcGFyZW50IHdheSwgYmVjYXVzZSBpdCBpcyB0aGUgb25seSB3YXkgdG8gcmVidWlsZCB0cnVzdCBpbiBvdXIgc3lzdGVtLCBkaWduaXR5IHRocm91Z2ggaGVscCwgYWNjb21wYW5pbWVudCwgcHJlc2VuY2UsIHdvcmsgYXMgdGhlIGtleSB0byBlbWFuY2lwYXRpb24gZm9yIGFsbCB3aG8gY2FuIGFjY2VzcyBpdCwgYmVjYXVzZSB0aGF0IGlzIHdoYXQgYWxsb3dzIGV2ZXJ5b25lIHRvIHRydWx5IGJ1aWxkIHlvdXIgbGlmZS4gVGhlIHNvbHV0aW9uIGlzIG5vdCB0byBzcGVuZCBtb3JlIG1vbmV5IG9yIHRvIGNvbnNpZGVyIHRoYXQgdGhlcmUgd291bGQgYmUsIG9uIHRoZSBvbmUgaGFuZCwgdGhvc2Ugd2hvIGJlbGlldmUgaW4gc29jaWFsIHRyYW5zZm9ybWF0aW9uIGFuZCB3aG8gd291bGQgYWxpZ24gbGluZXMgb2YgY3JlZGl0LCBhbmQgdGhvc2Ugd2hvIGRvIG5vdCBiZWxpZXZlIGl0LiBhbmQgdGhhdCB3b3VsZCBuZWNlc3NhcmlseSBiZSB0byByZWR1Y2UgdGhlIGV4cGVuc2VzLiBGaXJzdCwgYmFkIG5ld3MsIHNvY2lhbCBleHBlbnNlcywgeW91IHBheSB0aGVtLCB3ZSBwYXkgdGhlbSwgYW5kIHRvbyBvZnRlbiwgaW4gb3VyIGNvdW50cnksIHdlIGNvbnNpZGVyIHRoYXQgd2hlbiBpdCBpcyB0aGUgU3RhdGUsIGl0IHdvdWxkIGJlIHRoZSBvdGhlciwgaXQgaXMgdXMsIGV2ZW4gd29yc2UsIGl0IG1heSBiZSBvdXIgY2hpbGRyZW4sIHdoZW4gdGhlIGFjY3VtdWxhdGVkIGRlZmljaXQgYmVjb21lcyBkZWJ0LjxcL3A+XG48cD5UaGUgcXVlc3Rpb24gaXMgdG8gbG9vayBpdCBpbiB0aGUgZmFjZSB0aHJlZSBtYWpvciBjaGFsbGVuZ2VzIG9uIHdoaWNoIEkgd291bGQgbGlrZSB0byBjb21lIGJhY2ssIG1lIGVudGVyaW5nIGluIHNvbWUgd2F5IGludG8geW91ciBzdGVwcywgYW5kIHRyeSBvbiB0aGUgYmFzaXMgb2YgdGhyZWUgcHJpbmNpcGxlcywgd2hpY2ggSSBoYXZlIGp1c3QgbWVudGlvbmVkLCB0byBwcm92aWRlIHNvbWUgYW5zd2VycywgdGhlIGhlYWx0aCwgYWdlIGFuZCBleGNsdXNpb24uIEhlYWx0aCwgdGhpbmdzIGhhdmUgYmVlbiBwcm9mb3VuZGx5IGNoYW5nZWQgZHVyaW5nIHRoZSBkZWNhZGVzIHRoYXQgaGF2ZSBnb25lIGJ5LCBvdXIgc3lzdGVtIGlzIGluIGNyaXNpcywgYnV0IGl0IGlzIG5vdCB5ZXN0ZXJkYXksIHRoZSBpbXBhdGllbmNlIGlzIHRoZXJlLCBhbmQgaXQgaXMgbGVnaXRpbWF0ZSwgdGhlIHN1ZmZlcmluZyBvbiBhIGRhaWx5IGJhc2lzIGZvciB3b21lbiBhbmQgbWVuIHdobyBldmVyeSBkYXkgY2FyZSBmb3IgdGhvc2Ugd2hvIGNhbm5vdCB3YWl0LCB0aG9zZSB3aG8gc3VmZmVyIGFuZCB0aG9zZSB3aG8gY2FsbCBmb3IgYW4gaW1tZWRpYXRlIHJlc3BvbnNlLiBBbmQgaWYgd2UgbG9vayBpbiB0aGUgZmFjZSBvZiBvdXIgaGVhbHRoIHN5c3RlbSwgaXQgaGVhbHMgd2VsbCwgYW5kIHdlIHNob3VsZCBiZSBwcm91ZCBvZiwgaXQgaXMgZWZmZWN0aXZlIHdoZW4gY29tcGFyZWQgdG8gb3RoZXIgbGFyZ2Ugc3lzdGVtcywgYnV0IGl0IHByZXZlbnRzIHBvb3JseSwgbXVjaCBsZXNzIHdlbGwgdGhhbiB0aGUgb3RoZXJzLCBpdCBpcyB3aXRob3V0IGEgZG91YnQgaGlzIGZpcnN0IGZlYXR1cmUsIGhvd2V2ZXIsIGlmIHdlIHByZXZlbnQgZXZpbCwgd2UgbGV0IG91ciBmZWxsb3cgY2l0aXplbnMgZ28gdG8gcGF0aG9sb2dpZXMgd2hpY2ggYXJlIGhlYXZpZXIgYW5kIHRoZXJlZm9yZSBtb3JlIGV4cGVuc2l2ZSwgc29tZXRpbWVzIG91dCBvZiB0aGUgY29tcGFueS4gSGF2aW5nIGEgc3lzdGVtIHRoYXQgcHJldmVudHMgYmV0dGVyIGlzIGF0IG9uY2UgYmV0dGVyIG9uIHRoZSBwbGFuIG9mIHRoZSBjb2xsZWN0aXZlIGhlYWx0aCBhbmQgb2YgdGhlIGVmZmVjdGl2ZW5lc3Mgb2Ygb3VyIHN5c3RlbS4gSXQgaXMgdGhpcyBwb2xpY3ksIGNhcnJpZWQgb3V0IHNpbmNlIHNldmVyYWwgeWVhcnMgYnkgb3VyIHByZWRlY2Vzc29ycywgY29udGludWVkIGFuZCBpbnRlbnNpZmllZCBieSB0aGUgZ292ZXJubWVudCwgZm9yIGV4YW1wbGUsIGluIHRoZSBmaWVsZCBvZiB0b2JhY2NvLCBpcyBpbiB0aGUgcHJvY2VzcyBvZiBwZXJtaXR0aW5nLCB3aXRoIHRoZSBmaXJzdCByZXN1bHRzIHdoaWNoLCBncmFkdWFsbHksIHdpbGwgZ2l2ZSBpbiB0aGUgdGltZSBvZiB0aGVpciBlZmZlY3RpdmVuZXNzIDxcL3A+XG48cD5UaGUgc2Vjb25kIGNoYWxsZW5nZSB3ZSBmYWNlIGlzIHRoYXQgb2YgYWdlLCB5b3UgaGF2ZSAtIGFuZCBJIHdpbGwgbm90IHJldHVybiAtIHBlcmZlY3RseSBkZXNjcmliZWQgb25lIG9mIG91ciBjb2xsZWN0aXZlIHN1Y2Nlc3NlcywgdGhlIHN1Y2Nlc3Mgb2Ygb3VyIGVjb25vbWllcyBhbmQgZGV2ZWxvcGVkIHNvY2lldGllcywgd2UgbGl2ZSBtb3JlIG9sZCwgYW5kIHdlIGFsc28gbGl2ZSBvbGRlciBpbiBnb29kIGhlYWx0aC4gVGhpcyBvYnZpb3VzbHkgcmFpc2VzIHNldmVyYWwgcXVlc3Rpb25zIGZvciBvdXIgY29sbGVjdGl2ZSBvcmdhbml6YXRpb24gdGhhdCBzaG91bGQgbm90IGJlIGlnbm9yZWQsIHRoZSBwZW5zaW9uIHN5c3RlbSBjYW4gYmUgdG90YWxseSB1bmNoYW5nZWQgaW4gYSBzb2NpZXR5IHRoYXQgY29udGludWVzIHRvIGFnZSBhbmQgd2hlcmUgdGhlIGxpZmUgZXhwZWN0YW5jeSAtIGFuZCB3ZSBtdXN0IHJlam9pY2UgLSBpbiB0aGUgdGltZSBhZnRlciB0aGUgYWN0aXZlIGxpZmUsIGFzIHdlIGhhdmUgdGhvdWdodCB1bnRpbCB0aGVuLCBsZW5ndGhlbnMsIHdoZXJlIGFsc28gdGhlIHRpbWUgb2YgdGhlIHN0dWRpZXMgbGVuZ3RoZW5lZCBiZWZvcmUgdGhlIGFjdGl2ZSBsaWZlLiBUaGUgY2hyb25vbG9neSBvZiBvdXIgbGl2ZXMgaXMgbm8gbG9uZ2VyIHRoYXQgb2YgMjAgb3IgMzAgeWVhcnMgYWdvLCB0aGUgdGltZSBvZiBzdHVkaWVzIGhhcyBncm93biwgdGhlIHRpbWUgZm9yIHJlbGVhcm5pbmcgdGhyb3VnaG91dCBsaWZlIGlzIHRha2luZyBob2xkLCBhbmQgdGhlIGR1cmF0aW9uIHJldGlyZW1lbnQgaXMgZ2V0dGluZyBsb25nZXIgdG9vLiBIb3dldmVyLCB3ZSBzcGVuZCBhIGxvdCBvbiBvdXIgcGVuc2lvbiBzeXN0ZW0sIG9mdGVuIG1vcmUgdGhhbiBvdXIgbmVpZ2hib3JzLCBidXQgd2UgaGF2ZSBub3QsIGRlc3BpdGUgYWxsIHRoZSByZWZvcm1zIG9mIG91ciBwcmVkZWNlc3NvcnMsIGZhaWxlZCB0byBmdWxseSBpbXBsZW1lbnQgdGhlIHZpYWJpbGl0eSBvZiB0aGlzIHN5c3RlbSBpbiB0aGUgbG9uZyB0ZXJtLCBhbmQgbW9zdCBpbXBvcnRhbnRseSwgZmFpbGVkIHRvIHJlYnVpbGQgdGhlIGNvbmZpZGVuY2Ugb2Ygb3VyIGZlbGxvdyBjaXRpemVucyBvdmVyIHRpbWUuIEEgdmVyeSBsYXJnZSBtYWpvcml0eSBvZiB5b3VuZyBwZW9wbGUgd2hvIGFyZSBlbnRlcmluZyB0aGUgbGFib3IgbWFya2V0IHRoaW5rIHRoYXQgdGhleSB3aWxsIG5vdCBoYXZlIGEgcGVuc2lvbiwgdGhhdCB0aGVpciByZXRpcmVtZW50IHdpbGwgbm90IGJlIGVuc3VyZWQgYnkgYSBzeXN0ZW0gb2YgaW50ZXJnZW5lcmF0aW9uYWwgc29saWRhcml0eSwgdGhpcyBzeXN0ZW0gb2YgcmVkaXN0cmlidXRpb24gdGhhdCBJIGhvbGQgYW5kIHdoaWNoIHdpbGwgYmUgbWFpbnRhaW5lZCBiZWNhdXNlIG1pc3RydXN0IGhhcyBlc3RhYmxpc2hlZCBpdHNlbGYsIGRpc3RydXN0IGhhcyBhbHNvIHNldCBpbiBiZWNhdXNlIHdlIGhhdmUgNDIgcmVnaW1lcywgd2hpY2gsIGJ5IHNlZGltZW50YXRpb24sIGhhdmUgY29uc3RydWN0ZWQgdGhlIHNtYWxsIGRpZmZlcmVuY2VzLCBhbmQgd2l0aCB0aGVtLCB0aGUgc21hbGwgaW5lcXVhbGl0aWVzIHdoaWNoIG1heSBoYXZlIGJlZW4ganVzdGlmaWVkLCBidXQgZG8gdGhleSBzdGlsbCBoYXZlIGl0PyBNb3N0IG9mIHRoZSB0aW1lLCBuby4gQmVjYXVzZSB0aGV5IGhhdmUgcmVzcG9uZGVkIHRvIGEgc3RhdHVzIHNvY2lldHksIGJ1dCB0aGV5IG5vIGxvbmdlciBjb3JyZXNwb25kIHRvIGNvbnRlbXBvcmFyeSBjaGFsbGVuZ2VzLiBBcyB5b3Ugc2FpZCwgdGhlcmUgYXJlIHN0aWxsIHJlYWwgaW5lcXVhbGl0aWVzIGluIG9sZCBhZ2UsIGJ1dCBvZnRlbiB0aGV5IGRvIG5vdCBmaXQgd2l0aCB0aGUgc3RhdHV0ZXMgb3IgdGhlIHBlbnNpb24gcGxhbnMsIGJlY2F1c2UgdGhleSBjb3JyZXNwb25kIHRvIHF1aXRlIHBhcnRpY3VsYXIsIGluZGl2aWR1YWwgc2l0dWF0aW9ucywgcmVsYXRlZCB0byB0aGUgYWNjaWRlbnRzIG9mIGxpZmUsIHRvIHRoZSBleHBvc3VyZSB0byBjZXJ0YWluIHJpc2tzIHRoYXQgZXZlcnlvbmUgaGFzIGtub3duLCBhbmQgbm90IHRvIHRoZSBzdGF0dXMgaGUgaGFzIG1hcnJpZWQgYXQgYSB0aW1lIGluIGhpcyBsaWZlIGFuZCB3aGljaCBoZSB3aWxsIGNoYW5nZSBmb3IgdGhlIGdlbmVyYXRpb24gdGhhdCBjb21lcyB0byBsaWZlIHRvZGF5IGFjdGl2ZS4gQW5kIHNvIHRoaXMgc3lzdGVtLCB3aGljaCBoYXMgZ3JhZHVhbGx5IGJlZW4gZGVzaWduZWQgb3ZlciB0aW1lIGFuZCB3aGljaCByZXNwb25kcyB0byB0aGUgY2hhbGxlbmdlcyBvZiBhIHBvc3Qtd2FyLCBpbmR1c3RyaWFsLCBsb25nLWN5Y2xlIHNvY2lldHksIGlzIG5vIGxvbmdlciBzdWl0YWJsZSBmb3IgYW4gYWdpbmcgc29jaWV0eSwgd2hlcmUgdGhlIGNvdXJzZXMgYXJlIG1vcmUgYW5kIG1vcmUgaHVyZGxlcywgd2hlcmUgdGhlIGNvdXJzZXMgYXJlIG1vcmUgYW5kIG1vcmUgaW5kaXZpZHVhbGl6ZWQsIGFuZCB3aGVyZSB0aGUgaW5lcXVhbGl0aWVzIGhhdmUgYmVjb21lIHN0YXR1dG9yeS4gQW5kIG91ciBhYmlsaXR5IHRvIHJlc3BvbmQgdG8gaXQgd2lsbCBiZSB0aGUgY29uZGl0aW9uIG9mIGNvbGxlY3RpdmUgdHJ1c3QgaW4gdGhlIHN5c3RlbS48XC9wPlxuPHA+QnV0IHRoZSBhZ2luZyBvZiBvdXIgcG9wdWxhdGlvbiByYWlzZXMgYSBzZWNvbmQgY2hhbGxlbmdlLCBhcyB5b3UgcmlnaHRseSBwb2ludGVkIG91dCwgdGhhdCBvZiBvbGQgYWdlLCBvZiBkZXBlbmRlbmNlLCBhIHN1YmplY3Qgd2hpY2ggYXQgdGhlIHNhbWUgdGltZSB1cHNldHMgdXMsIGFuZCB3aGljaCBtYW55IG9mIHVzIHdvdWxkIGxpa2UgdG8gaG9sZCBvbiB0by4gYXdheSwgb3VyIHNvY2lldHkgZG9lcyBub3Qgd2FudCB0byBzZWUgYXQgdGhlIHNhbWUgdGltZSB0aGUgZ3JlYXQgdnVsbmVyYWJpbGl0eSwgYnV0IGFsc28gdGhlIHBsYWNlIG9mIGRlYXRoIHdoaWNoLCBhdCBhIG1vbWVudCBvZiB0aGlzIHBhdGgsIGFycml2ZXMuIFRoYXQgc2FpZCBhIGxvdCBvZiB1cywgYW5kIEkgd2lsbCBub3QgZHdlbGwgb24gdGhpcyBwb2ludCB0b2RheSwgSSB3b3VsZCBiZSB0b28gbG9uZywgYnV0IHRoZSBhZGRpY3Rpb24gaXMgdGhlcmUsIGFuZCB0aGlzIG5ldyB2dWxuZXJhYmxlIGFnZSBvZiBsaWZlIGlzIHNldHRsaW5nIGRvd24uIFRvIG5vdCBzZWUgaXQgb3IgdG8gY29uc2lkZXIgdGhhdCBpdCB3b3VsZCBiZSB0aGUgYnVzaW5lc3Mgb2YgYSBmZXcsIGlzIG5vdCB0byB0cmVhdCBvdXJzZWx2ZXMgd2l0aCBkaWduaXR5LCBpdCBpcyBub3QgdG8gdHJlYXQgd2l0aCBkaWduaXR5IHdvbWVuIGFuZCBtZW4gd2hvLCBvbmNlIGFnYWluLCBoYXZlIHRoZSByZXNwb25zaWJpbGl0eSB0aGUgZGFpbHkgbGl2ZXMgb2Ygd29tZW4gYW5kIG1lbiB3aG8gc29tZXRpbWVzIGxpdmUgdGhlaXIgbGFzdCBob3VycywgdGhlaXIgbGFzdCB3ZWVrcywgYW5kIG9mIHdoaWNoIHRoZXksIHRob3NlIHdobyBjYXJlIGZvciB0aGVtLCBvZnRlbiB0aGUgbGFzdCBmYW1pbHkuIE91ciBpbmFiaWxpdHkgdG9kYXkgdG8gcmVzcG9uZCB0byB0aGlzIGNoYWxsZW5nZSBoYXMgYnVpbHQgc29jaWFsIHN1ZmZlcmluZyBpbiBsb25nLXRlcm0gY2FyZSBob21lcywgaW4gZGVwZW5kZW50IHBlcnNvbnMgb3IgZm9yIHRoZWlyIGZhbWlsaWVzLCB3ZSBtdXN0IGZhY2UgdGhpcywgaXQgaXMgYSBjb2xsZWN0aXZlIGZhaWx1cmUsIGFuZCBJIHdlYXIgaXQgZnJvbSB3aGVyZSBJIGFtIHdpdGggdGhlIHNvbGVtbml0eSB0aGF0IG11c3QgYmUgbWluZS4gV2Ugd2lsbCBub3Qgc29sdmUgaXQgb3Zlcm5pZ2h0LCBidXQgd2UgbXVzdCBmYWNlIHRoaXMgY2hhbmdpbmcgc29jaWV0eSwgdW5kZXJzdGFuZCBpdCBhbmQgY29uc2lkZXIgdGhhdCBvdXIgcmVzcG9uc2UgaXMgbm90IGF0IHRoZSByaWdodCBoZWlnaHQgaW4gdGVybXMgb2YgY29sbGVjdGl2ZSBzb2xpZGFyaXR5IGFuZCB0aGF0LCBiZWNhdXNlIG91ciBmZWxsb3cgY2l0aXplbnMgb2xkZXIgcGVvcGxlIGFyZSByZXR1cm5pbmcgdG8gbnVyc2luZyBob21lcyBvciBpbnN0aXR1dGlvbnMsIHRoZXkgYWxzbyBuZWVkIG1vcmUgYW5kIG1vcmUgZWFybHkgY2FyZSwgYW5kIHRoYXQgdGhlc2UgZXN0YWJsaXNobWVudHMgdGhhdCB3ZXJlIGNyZWF0ZWQgdG8gYWNjb21wYW55IGEgbW9tZW50IGluIGxpZmUsIHdoZXJlIG9yIGNvdWxkIG5vdCBzdGF5IGluIHRoZSBmYW1pbHksIGFyZSBjaGFuZ2luZyBhbmQgYmVjb21lIHBsYWNlcyB3aGVyZSB3ZSBhbHNvIG5lZWQgYSBjYXJlIHRvIHdlYXIsIGEgbWVkaWNhbGl6YXRpb24gdGhhdCBkb2VzIG5vdCBleGlzdCBldmVyeXdoZXJlIG9yIG5vdCBlbm91Z2gsIGFuZCB0aGVyZWZvcmUgZm9yIHdoaWNoIG91ciByZXNwb25zZSBtdXN0IGJlIGRpZmZlcmVudCBhbmQgb24gd2hpY2ggd2UgbXVzdCB0aGluayBhIGNvbGxlY3RpdmUgcmVvcmdhbml6YXRpb24uPFwvcD5cbjxwPlRoZSB0aGlyZCBjaGFsbGVuZ2UgZmFjaW5nIHVzIGlzIHRoYXQgb2YgZXhjbHVzaW9uLCBpZiB3ZSBkbyBub3QgbG9vayBhdCBvdXIgcG9vcmVzdCBmZWxsb3cgY2l0aXplbnMsIGlmIHdlIGRvIG5vdCBsb29rIGF0IHRoaXMgcGFydCBvZiBzb2NpZXR5IHdoaWNoIG5hdGlvbiBhcmUgd2U/IEkgaGF2ZSBvZnRlbiBiZWVuIGNyaXRpY2l6ZWQgZm9yIGJlaW5nIG9ubHkgZm9yIG1ldHJvcG9saXNlcywgc29ycnkgZm9yIE1vbnRwZWxsaWVyLCBmb3IgdGhpcyBGcmFuY2UgdGhhdCBzdWNjZWVkcywgdGhhdCBmb3IgZ3JlYXQgcGVvcGxlLCBldGMuLCB5ZXMsIEkgd2FudCB0byBlbmNvdXJhZ2UgdGhlbSBiZWNhdXNlIGlmIHRoZXkgY2FuIG5vdCBkbyBpdCB0aGVyZSBpcyBubyBjaGFuY2UgdGhhdCB0aGUgcmVzdCBvZiBzb2NpZXR5IGNhbiBnZXQgYXdheSB3aXRoIGl0LCBJIGNvbmZpcm0gaXQuIEFuZCBzbyBJIHdhbnQgdGhvc2Ugd2hvIGNhbiBwcm9kdWNlLCBzdWNjZWVkIGhpcmluZywgZG8gaXQgZXZlbiBtb3JlLCBiZWNhdXNlIEkgbG9vayBldmVyeXdoZXJlIGFyb3VuZCB1cywgYW5kIHB1dHRpbmcgYSBjYXAgb24gc3VjY2VzcyBoYXMgbmV2ZXIgc29sdmVkIHRoZSBwcm9ibGVtIG9mIGV4Y2x1c2lvbiAuIEJ1dCBJIHNheSBpdCwgSSByZXBlYXQgaXQgYW5kIEkgd2lsbCBjb250aW51ZSBpdCB0aXJlbGVzc2x5IHRvIGRvIGl0LCB3aGVuIHRob3NlIHdobyBzdWNjZWVkIGRvIG5vdCB3YW50IHRvIGxvb2sgYXQgdGhvc2Ugd2hvIGFyZSBsZWZ0IGF0IHRoZSBlZGdlIG9mIHRoZSByb2FkLCBpbiB3aGF0IHNvY2lldHkgZG8gdGhleSB3YW50IHRvIGxpdmU/IEFzIHRoZXkgd2F0Y2ggdGhlIGV4dHJlbWVzIG1vdW50IGFyb3VuZCB0aGVtLCB0aGUgaGF0ZSBzcGVlY2ggaWduaXRlcyBkZW1vY3JhY2llcy4gSXQgaXMgdGhlIGZydWl0IG9mIHNlbGZpc2huZXNzIGFuZCBibGluZG5lc3MuIEFuZCBzbyB3ZSBtdXN0LCB3aGlsZSBtYWtpbmcgb3VyIGVjb25vbXkgYSBzdHJvbmdlciBlY29ub215LCBtb3JlIHByb2R1Y3RpdmUsIHdoaWxlIGJlaW5nIHRoZSBwcm9wb25lbnRzIG9mIGlubm92YXRpb24sIGEgcmV2aXRhbGl6ZWQgZWNvbm9taWMgZm9yY2UsIGFsc28gd2FudCB0byBhZGRyZXNzIHRoZSBwcm9ibGVtIG9mIHBvdmVydHkgYW5kIHBvdmVydHkuIGV4Y2x1c2lvbiBpbiBvdXIgc29jaWV0eS4gQW5kIGhlcmUgdG9vLCBsZXQmIzM5O3MgZmFjZSByZWFsaXR5LiBXZSBoYXZlIGluIHJlY2VudCBkZWNhZGVzLCBzcGVudCBtb3JlIGFuZCBtb3JlIG9uIHRoaXMgdG9waWMuIEFuZCBkaWQgd2Ugc29sdmUgdGhlIHByb2JsZW0/IE5vLiBEaWQgd2Ugd2FybiBoaW0gYmV0dGVyPyBOby4gSGF2ZSB3ZSBjaGFuZ2VkIHRoZSB0cmFqZWN0b3JpZXMsIGFsbG93ZWQgcGVvcGxlIHRvIGdldCBvdXQgbW9yZT8gTm8uIEhhdmUgd2UgYmV0dGVyIGFjY29tcGFuaWVkPyBSYXJlbHkuIFdoZW4gSSBsb29rIGF0IHRoZSBmaWd1cmVzIHRvZGF5LCB0aGUgcmVhbGl0eSBpcyB0aGF0IHdlIGhhdmUgbWFueSBkZXZpY2VzLCBidXQgY2hpbGRyZW4gYm9ybiBpbiBwb3ZlcnR5IGFyZSBzdGlsbCB0b28gb2Z0ZW4gYW5kIGRldGVybWluaXNtIGhhcyBiZWNvbWUgZXN0YWJsaXNoZWQuIFRvZGF5IHRoZSBmYWNlIG9mIHBvdmVydHksIHdoYXQgaXMgaXQ/IE9uZSBpbiBmaXZlIGNoaWxkcmVuLCBvbmUgaW4gdGhyZWUgc2luZ2xlIHBhcmVudCBmYW1pbGllcy4gVGhpcyBpcyB0aGUgZmFjZSBvZiBwb3ZlcnR5LCBpdCBpcyBwbHVyYWwsIGl0IGlzIGRpdmVyc2UsIGl0IGlzIG5vdCBhIGJpZyB3aG9sZSBpbiB3aGljaCBvbmUgY291bGQgc29tZWhvdyBpbmNsdWRlIGEgc3RhdGljIHBhcnQgb2YgdGhlIHNvY2lldHkgdGhhdCBpcyBvdXJzLiBXZSBoYXZlIGNyZWF0ZWQgYSBzeXN0ZW0gdGhhdCBoYXMgcHJvZ3Jlc3NpdmVseSBiZWNvbWUgdGhlIGRlaHVtYW5pemVkIHN0YXRlLiBJdCB3YXMgdGhvdWdodCB0aGF0IHRoZSBhbnN3ZXIgdG8gZXhjbHVzaW9uIGFuZCBwb3ZlcnR5IHdhcyBtb25leS4gV2UgaGF2ZSwgaW4gdGhlIGxhc3QgdGVuIHllYXJzLCBpbmNyZWFzZWQgdGhlIFJTQSBieSA4MCUsIGJ1dCB3ZSBoYXZlIHJlZHVjZWQgc3VwcG9ydCBieSA0MCUgaW4gdGVybXMgb2YgZXhwZW5kaXR1cmUuIFRoaXMgZmlndXJlIHNheXMgaXQgYWxsLiBUb2RheSB3ZSBoYXZlIDUwJSBvZiB0aG9zZSB3aG8gYXJlIGF0IFJTQSwgd2hvIGFmdGVyIGZvdXIgNCB5ZWFycyBhcmUgc3RpbGwgYXQgUlNBLiBXZSBoYXZlIDMwJSBvZiB3b21lbiBhbmQgbWVuIHdobyBkbyBub3QsIHdobyBkbyBub3QgZ28gdG8gdGhlIGJlbmVmaXRzIHRoYXQgYXJlIHByb21pc2VkIHRvIHRoZW0sIGJlY2F1c2UgdGhleSBhcmUgdG9vIGNvbXBsZXggb3Igc3RpZ21hdGl6aW5nLCBhbmQgdGhlcmVmb3JlIHdlIGhhdmUgYSBzeXN0ZW0gdGhhdCBwcmV2ZW50cyBiYWRseSwgc3RpZ21hdGl6ZXMgYW5kIGlzIHRvbyBjb21wbGV4LCB3aGljaCBpcyBub3QgdmVyeSBodW1hbmUgYW5kIHdoaWNoIGRvZXMgbm90IGFsbG93IHRob3NlIHdobyBmYWxsIGludG8gaXQsIHdobyBmYWxsIGludG8gdGhlc2Ugc2l0dWF0aW9ucyBvZiBleGNsdXNpb24gb3IgcG92ZXJ0eSwgdG8gZ2V0IG91dCBvZiBpdCBhcyBxdWlja2x5IGFzIHBvc3NpYmxlLCB0byBmaW5kIHRoZWlyIGZ1bGwgcGxhY2UgaW4gdGhlIHNvY2lldHkuIEFuZCBoZXJlIHRvbyB3ZSBtdXN0LCB3aXRoIGFsbCB0aGUgaGFyc2huZXNzIG9mIHRoZSBzdGF0ZW1lbnQgSSBtYWtlLCBhbmQgSSBkbyBpdCBmb3IgbXlzZWxmLCB0aGlzIG9ic2VydmF0aW9uIEkgbWFrZSBmb3IgdXMsIEkgZG8gbm90IGRvIGl0IGZvciB0aG9zZSB3aG8gYXJlIGluIHRoZXNlIHNpdHVhdGlvbnMsIGJlY2F1c2UgdGhhdCB0aGV5IGFyZSB0aGUgZmlyc3QgdmljdGltcywgYmVjYXVzZSBvbmUgZG9lcyBub3QgY2hvb3NlIG9uZSYjMzk7cyBzaXR1YXRpb24sIGJ1dCBpZiB3ZSBkbyBub3QgZmFjZSB0aGUgcmVhbGl0eSBvZiBvdXIgb3duLCBhbmQgdGhlIGZhaWx1cmVzIG9mIG91ciBhY3Rpb24sIGhvdyBjYW4gd2UgYW5zd2VyIGl0PzxcL3A+XG48cD5PbiB0aGVzZSB0aHJlZSBtYWpvciBjaGFsbGVuZ2VzOiBoZWFsdGgsIGFnaW5nIGFuZCBleGNsdXNpb24sIHdlIGFyZSBoZXJlLiBTbywgdGhlIHNvbHV0aW9uIGlzIHRvIHRhY2tsZSBpbiBteSBleWVzIHRoZSBwcm9ibGVtIGF0IHRoZSByb290LCB0aGUgZHlzZnVuY3Rpb25zIG9mIGEgc29jaWFsIHN5c3RlbSB0b28gZm9jdXNlZCBvbiB0aGUgYWN0b3JzIGFuZCBub3QgZW5vdWdoIG9uIG91ciBjb21wYXRyaW90cywgdG8gaGF2ZSBtb3JlIHByZXZlbnRpb24sIG1vcmUgc3VwcG9ydCwgbW9yZSBvZiBjb2xsZWN0aXZlIHJlc3BvbnNpYmlsaXR5IG9mIGVhY2ggb2YgdXMsIGFuZCB0cnkgdG8gYnJpbmcsIGJ5IGEgcHJvZm91bmQgdHJhbnNmb3JtYXRpb24gdGhhdCB3aWxsIHRha2UgdGltZSwgd2hpY2ggaXMgcGVyaGFwcyBsZXNzIHN0YWdnZXJpbmcgdGhhbiBtb25leSBwdXQgb24gdGhlIHRhYmxlLCBidXQgSSBhbSBzdXJlIG11Y2ggbW9yZSBlZmZpY2llbnQsIGJlY2F1c2UgaXQgd2lsbCBnbyB3aXRoIGludmVzdG1lbnQgaW4gY2VydGFpbiBwdWJsaWMgcG9saWNpZXMsIGFuZCBpbmRlZWQgb2YgdGhlIGV4cGVuc2UgdGhhdCB3ZSB3aWxsIGFzc3VtZSwgYnV0IGFsc28gb2YgdGhlIHRyYW5zZm9ybWF0aW9uIGFuZCB0aGUgc2F2aW5ncyB3aGljaCB3aWxsIGhhdmUgdG8ga25vdyBob3cgdG8gbWFrZSBvbiB0aGUgdXNlbGVzcyBwYXJ0cyBvZiB0aGUgZXhwZW5zZXMgd2hpY2ggSSBoYXZlIGp1c3QgZGVzY3JpYmVkLjxcL3A+XG48cD5UaGlzIGNvbGxlY3RpdmUgdHJhbnNmb3JtYXRpb24sIEkgd2FudCB1cyB0byBsZWFkIGl0IHRvZ2V0aGVyIG9uIHRoZSB0aHJlZSBjaGFsbGVuZ2VzIEkganVzdCBtZW50aW9uZWQuIE9uIGhlYWx0aCBmaXJzdCBhbmQgZm9yZW1vc3QsIHdlIHBvc3QgYSB0b3RhbCBkZXBlbmRlbnQgYnVyZGVuIG9uIGhlYWx0aCBleHBlbmRpdHVyZXMgb2YgYXJvdW5kIDguNSUuIEJ1dCB3aGF0IGlzIHRoZSByZWFsaXR5IG9mIHRoaXMgc3lzdGVtIGZvciB0aG9zZSB3aG8gaGF2ZSBhIGxpdHRsZSBsZXNzIG1vbmV5LCBhIGxpdHRsZSBsZXNzIGFjY2VzcyB0byBwcmFjdGl0aW9uZXJzLCBhIGxpdHRsZSBsZXNzIGhhYml0cyBhbHNvIHRvIGNvbnN1bHQgcmVndWxhcmx5PyBBbmQgb24gdGhlIGJhc2ljIHNlcnZpY2VzIHRoYXQgbWFrZSBldmVyeWRheSBsaWZlLCB3aGF0IGlzIHRoZSByZWFsaXR5IG9mIHRoZSBzeXN0ZW0/IElmIHdlIHdhbnQgaGltIHRvIGJldHRlciB3YXJuIGFuZCB0cmVhdCBiZXR0ZXIgY2xvc2UgdG8gdGhlIGZpZWxkLCBhbmQgYXMgc29vbiBhcyBwb3NzaWJsZSByZWFsaXRpZXMuIFRoaXMgaXMgdGhlIHJlc3Qgb2YgdGhlIGNoYXJnZSBmb3IgZGVudGFsIHByb3N0aGVzZXMsIHRvZGF5IGlzIGFuIGF2ZXJhZ2Ugb2YgNDMlLCB3aGljaCBtZWFucyBvbiBhdmVyYWdlIDIwMCBcdTIwYWMgZm9yIGEgY3Jvd24sIGl0IGlzIDIyJSBvbiBvcHRpY3MsIHdoaWNoIGlzIG9uIGF2ZXJhZ2UsIGV2ZW4gaWYgdGhlIGRpZmZlcmVuY2VzIGFyZSB2ZXJ5IGltcG9ydGFudCBpbiBoaXMgc2VjdG9yLCA2NSBcdTIwYWMgZm9yIHRoZSBjb3JyZWN0aW9uIG9mIG15b3BpYS4gSXQgaXMgNTMlIG9uIGhlYXJpbmcgYWlkcywgdGhhdCBpcyB0byBzYXkgMSw3MDAgXHUyMGFjIG9uIGF2ZXJhZ2UsIHRvIGJlIGVxdWlwcGVkLiBJJiMzOTttIHRhbGtpbmcgYWJvdXQgdGhlIHJlc3Qgb2YgdGhlIGNoYXJnZS4gRG9lcyB0aGlzIG1lYW4gdGhhdCBtYW55IG9mIG91ciBmZWxsb3cgY2l0aXplbnMsIHdobyBoYXZlIHNpbXBsZSBwYXRob2xvZ2llcywgaGF2ZSB0byBnaXZlIHVwIHRyZWF0bWVudD8gQnV0IHdoYXQgZG9lcyB0aGF0IG1lYW4gdmVyeSBjb25jcmV0ZWx5PyBCZWNhdXNlIHdlIHB1dCBvdXIgd29yZHMgdGhhdCBhcmUgc29tZXRpbWVzIGEgYml0IHRlY2huaWNhbC4gVGhhdCBtZWFucyB0aGF0IHRoZSBwb3NzaWJpbGl0eSBvZiBzbWlsaW5nLCBzZWVpbmcsIGhlYXJpbmcsIHNvbWV0aW1lcyBlYXRpbmcgbm9ybWFsbHksIG91ciBmZWxsb3cgY2l0aXplbnMsIHdobyBiZWNhdXNlIG9mIHRoZSByZXN0IG9mIHRoZSBjaGFyZ2UgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlc2UgcHJvc3RoZXNlcywgYXJlIGRlcHJpdmVkLiBUaGlzIG1lYW5zIHRoYXQgYmVoaW5kIHRoZW0gYXJlIGNoaWxkcmVuIHdobyBjYW4gbm90IHJlYWQgYXQgc2Nob29sIGFzIHRoZXkgc2hvdWxkLCBzaW5jZSB0aGUgYWJpbGl0eSB0byB3ZWFyIGdsYXNzZXMgaXMgb25lIG9mIHRoZSBtYWluIGNhdXNlcyBvZiBwb29yIGxlYXJuaW5nIGFuZCBsZWFybmluZy4gSWxsaXRlcmFjeSBhdCB0aGUgZW5kIG9mIHByaW1hcnkgc2Nob29sLiBUaGlzIG1lYW5zIHRoYXQgc29tZSBvZiBvdXIgZmVsbG93IGNpdGl6ZW5zLCB3aG8gYXJlIGV4Y2x1ZGVkIGZyb20gd29yaywgY2FuIG5vdCBjb21lIGJhY2sgdG8gd29yayBiZWNhdXNlIHRoZXkgY2FuIG5vdCBhZmZvcmQgdG8gaGVhbCB0aGVpciB0ZWV0aCBvciBiZWNhdXNlIHRoZXkgY2FuIG5vdCBhZmZvcmQgdG8gZml4IHRoZWlyIHRlZXRoLiBhIGhlYXJpbmcgdGhhdCBoYXMgYmVjb21lIGRlZmVjdGl2ZSBtZWFucyB0aGF0IG91ciBvbGRlciBjaXRpemVucywgd2hlbiB0aGV5IGJlZ2luIHRvIGxvc2UgaGVhcmluZyBhbmQgY2FuIG5vdCBhZmZvcmQgdG8gY29ycmVjdCBpdCwgd2lsbCBmYWxsIG1vcmUgcXVpY2tseSBpbnRvIGRlcGVuZGVuY3kuIFNvcnJ5IHRvIGJlIGNvbmNyZXRlLCBidXQgdGhhdCYjMzk7cyBpdC4gQW5kIGJlaGluZCB3aGF0IEkgZGVzY3JpYmUgY29uY3JldGUgc2l0dWF0aW9ucywgd2hpY2ggYXJlIG1vcmUgcHJvc2FpYyB0aGFuIG91ciB3b3JkcyB0aGF0IHNvbWV0aW1lcyBwcm90ZWN0IHRoZSByZWFsaXR5LCBpdCBpcyBlYWNoIHRpbWUgaW5kaXZpZHVhbCBkcmFtYXMsIGl0IGlzIHRoaXMgaW5lcXVhbGl0eSBvZiB0cmFqZWN0b3J5IG9mIHdoaWNoIEkgc3Bva2UgdG8geW91LiBJdCBkb2VzIG5vdCBzZWVtIGFueXRoaW5nLCBidXQgYWZ0ZXIgYSB3aGlsZSwgaXQgYmVjb21lcyBpcnJhdHRyYXBhYmxlLiBTbyB5ZXMsIHdlIG5lZWQgdG8gaW50ZXJ2ZW5lIHNvb25lciwgZmFzdGVyLCBtb3JlIG1hc3NpdmVseSwgaXQmIzM5O3MgdGhlIGJlc3Qgd2F5IHRvIGZpZ2h0IGFnYWluc3QgaW5lcXVhbGl0aWVzLCBhbmQgdGhhdCYjMzk7cyB3aGF0IHdlIGRpZCwgd2l0aCB0aGUgcmVzdCBiZWluZyB6ZXJvLWxvYWQgb3IgMTAwJSBoZWFsdGguIFRoZSBwcm9mb3VuZCB0cmFuc2Zvcm1hdGlvbiB0aGF0IHdlIGhhdmUgdW5kZXJ0YWtlbiwgd2lsbCBjZXJ0YWlubHkgYmUgcHJlc2VudGVkIGZpcnN0IGluIGl0cyBmaW5hbmNpYWwgYXNwZWN0LCBpdCBpcyByZWFsIGFuZCBpdCBpcyBvYnZpb3VzIHRoYXQgdG8gYWxsb3cgYWxsIHRob3NlIHdobyBoaXRoZXJ0byBjb3VsZCBub3QsIGZvciBtb25ldGFyeSByZWFzb25zLCBiZW5lZml0IGZyb20gYXVkaXRvcnksIGRlbnRhbCBvciBkZW50YWwgY2FyZS4gb3B0aWNzIGlzIGFuIGVzc2VudGlhbCBzb2NpYWwgY29ucXVlc3QsIGFuZCBpdCBpcyBhbiBpbnZlc3RtZW50IHRoYXQgSSBhc3N1bWUsIGFuIGludmVzdG1lbnQgdGhhdCB3ZSBhcmUgZ29pbmcgdG8gc2hhcmUgdG9nZXRoZXIsIGFuZCB3aGljaCB3aWxsIG1ha2UgaXQgcG9zc2libGUgdG8gcmVkdWNlIHRoaXMgYnVyZGVuIHRvIHplcm8uPFwvcD5cbjxwPltBcnJlc3RzIG9mIHRoZSByb29tIG9uIGxvd2VyIHRheGVzXTxcL3A+XG48cD5USEUgQ0hBSVJQRVJTT046IFNvLCBmb3IgZXZlcnlvbmUgdG8gYmUgY2xlYXIsIEkgdGhpbmsgdGhhdCB0aGUgdHdvIGFycmVzdHMgYXJlIGNvbnZlcmdlbnQsIGl0IGlzIHRoZSBwcm9wb3NhbCB0byByZXR1cm4gdG8gdGhlIHRheGF0aW9uIG9mIHRoZSBzZWN0b3IsIHRvIGFsbG93IGl0IHRvIGludmVzdCBtb3JlLiBJIHdpbGwgYmUgcGVyZmVjdGx5IGNsZWFyOiB0aGUgYWdyZWVtZW50IGJ1aWx0IHRocm91Z2ggdGhlIGludm9sdmVtZW50IG9mIGFsbCwgYW5kIEkgcmVhbGx5IHdhbnQgdG8gdGhhbmsgeW91IGZvciBpdCBhbmQgdGhlIHdvcmsgYW5kIGNvbW1pdG1lbnQgb2YgdGhlIG1pbmlzdGVyLCBpcyBpbmRlcGVuZGVudCBvZiB0aGVzZSBtZWFzdXJlcy4gU28gaWYgd2UgZ28gaW4gdGhhdCBkaXJlY3Rpb24sIEkmIzM5O2xsIGFzayB5b3UgbW9yZSwgYnV0IEkmIzM5O20gcmVhZHkgdG8gb3BlbiB0aGF0IGRpc2N1c3Npb24uIEJ1dCwgSSB3b3VsZCBub3Qgd2FudCB1cyB0byBiZSBtaXN1bmRlcnN0b29kIGJlY2F1c2UgdGhlIGFncmVlbWVudCByZWFjaGVkIGlzIG5vdCBzdWJqZWN0IHRvIGEgcmVmb3JtIG9mIHRoZSBzZWN0b3ImIzM5O3MgdGF4YXRpb24uIE5vdyBJIGFtIHJlYWR5IHRvIG9wZW4gYSBkaXNjdXNzaW9uIG9uIHRoZSB0YXhhdGlvbiBvZiB0aGUgc2VjdG9yLCBzbyB0aGF0IHRvZ2V0aGVyIHdlIGNhbiBkbyBtb3JlIGFuZCBiZSBtb3JlIGVmZmVjdGl2ZSBpbiB0aGUgZW5nYWdlbWVudCBvZiB0aGUgc2VjdG9yLiBBbmQgdGhhdCwgeW91IHdpbGwgYWx3YXlzIGhhdmUgd2l0aCB5b3UgaWYgaXQgaXMgbmVjZXNzYXJ5IHRvIGdvIGluIGEgc3lzdGVtIG9mIGNvbW1vbiBzZW5zZSBvbiB3aGljaCB5b3UgY2FsbCBtZS4gSSYjMzk7bSBjb21pbmcgYmFjaywgYnV0IEkgd291bGQgbm90IHdhbnQgdGhpcyBpbXByb3Zpc2VkIGRpYWxvZ3VlIHRvIGdldCBpbiB0aGUgd2F5IHRoYXQgSSB3YXMgZGVub3VuY2luZywgd2hlcmUgdGhlIHN0YXRlIHdvdWxkIGRpc2N1c3Mgd2l0aCB0aGUgbXV0dWFsIHNlY3RvciwgZm9yZ2V0dGluZyB0aGF0IGJlaGluZCBpdCBhcmUgb3VyIGZlbGxvdyBjaXRpemVucyBhbmQgdGhlaXIgaW50ZXJlc3RzLjxcL3A+XG48cD5TbyBiYWNrIHRvIG91ciBkZW50dXJlcywgb3B0aWNzIGFuZCBoZWFyaW5nIGFuZCB0aGVpciByZWltYnVyc2VtZW50LiBUaGUgbG9naWMgYmVoaW5kIHRoaXMgZnVuZGFtZW50YWwgYWR2YW5jZSBpcywgYXMgSSBzYWlkLCBhIG1vbmV0YXJ5IG9uZSwgYnV0IGl0IGlzIGJhc2VkIGZpcnN0IGFuZCBmb3JlbW9zdCBvbiBhbiBpbmNyZWFzZWQgdXNlIG9mIGNhcmUuIFRoaXMgaXMgdG8gcHJldmVudCB0aGF0IHRoZSBwYXRob2xvZ2llcyBjb25jZXJuZWQgYmVjb21lIG1vcmUgc2VyaW91cywgbW9yZSBkaXNhYmxpbmcsIGFuZCBmb3IgdGhpcywgaXQgaXMgdG8gc2lnbmlmaWNhbnRseSBzdHJlbmd0aGVuIHByZXZlbnRpb24sIHBhcnRpY3VsYXJseSBhbW9uZyB0aGUgeW91bmdlc3QsIHdpdGggc3lzdGVtYXRpYyBzY3JlZW5pbmdzLCBhbmQgdGhhdCYjMzk7cyBpdCBmb3IgbWUsIHdoYXQgeW91IGhhdmUgY29sbGVjdGl2ZWx5IG1hbmFnZWQgdG8gbmVnb3RpYXRlIGluIHJlY2VudCBtb250aHMgYW5kIHRoYXQgaXMgZXNzZW50aWFsLiBXZSB3aWxsIHB1dCBpbiBwbGFjZSBzY3JlZW5pbmcgZm9yIHZpc3VhbCBhbmQgYXVkaXRvcnkgZGlzb3JkZXJzLCByZWluZm9yY2VkIGF0IGFuIGVhcmx5IGFnZSwgd2l0aCB0aHJlZSBuZXcgY29uc3VsdGF0aW9ucyBvZiB0aGUgYXR0ZW5kaW5nIHBoeXNpY2lhbiBvciBzY2hvb2wuIFRvIHJlZHVjZSB0aGUgdXNlIG9mIGRlbnRhbCBwcm9zdGhldGljIGNhcmUsIHdlIHdpbGwgaW50cm9kdWNlIGEgdGVzdCBmb3IgMy15ZWFyLW9sZHMsIGJ1dCBhbHNvIGZvciAyNC15ZWFyLW9sZHMuIFRoaXMgaXMgcHJldmVudGlvbiwgaXQgaXMgdG8gZW5zdXJlIHRoYXQsIGF0IHRoZSBlYXJsaWVzdCwgZm9yIG91ciBmZWxsb3cgY2l0aXplbnMsIHRoZXJlIGlzIGFjY2VzcyB0byBjb25zdWx0YXRpb24gdG8gc2VlIGlmIHRoZXJlIGlzIGEgbmVlZCBmb3IgY2FyZSwgb3IgdGhlcmUgYXJlIGJlaGF2aW9ycyB0byBjaGFuZ2UuIEFuZCB0aGlzIGlzIHBhcnQgb2YgdGhlIGFncmVlbWVudCwgYW5kIHRoYXQgdG9vIGlzIGludGVyZXN0aW5nIGZvciBtdXR1YWxzLCBmb3IgcHJvZmVzc2lvbmFscywgZm9yIHRoZSBTdGF0ZSwgYmVjYXVzZSBieSBpbnN0aXR1dGluZyB0aGVzZSBjb25zdWx0YXRpb25zIGF0IHRoZSBlYXJsaWVzdCwgd2Ugd2FybiBiZXR0ZXIgYW5kIHRoZXJlZm9yZSB3ZSB3aWxsIHNwZW5kIGxlc3MuIFRoaXMgcHJldmVudGlvbiwgaXQgYWxzbyBnb2VzIHdpdGggYW4gYWNjb3VudGFiaWxpdHkgb2YgYWxsIHByb2Zlc3Npb25hbHMsIGFuZCB0aGUgcmV2YWxvcml6YXRpb24gb2YgY2VydGFpbiBhY3RzLiBUaGlzIGlzIHRoZSBjb2hlcmVuY2UgSSB3YW50IHRvIGVtcGhhc2l6ZSBoZXJlLCB0aGUgYWdyZWVtZW50IHRoYXQgaGFzIGJlZW4gcmVhY2hlZC4gRm9yIGV4YW1wbGUsIGZvciBkZW50aXN0cywgdGhlIGZhY3Qgb2YgZ3JlYXRseSBpbmNyZWFzaW5nIHRoZSB2YWx1ZSBvZiBjb25zZXJ2YXRpdmUgY2FyZSwgYmVjYXVzZSBwcm9mZXNzaW9uYWxzIHRvZGF5IHdlcmUgbm90IHdlbGwgcGFpZCBmb3IgdGhpcyBjYXJlLCB3aGVyZSB0aGV5IHdlcmUgZXNzZW50aWFsbHkgbWFraW5nIHRoZWlyIGluY29tZSwgd2hpY2ggd2FzIGxlZ2l0aW1hdGUsIG9uIG1vcmUgc2VyaW91cyBhY3RzLiBsYXRlIGFuZCBtb3JlIGV4cGVuc2l2ZSBmb3Igb3VyIGZlbGxvdyBjaXRpemVucywgYXMgZm9yIHRoZSBjb21tdW5pdHkuIEJ1dCB3ZSBtdXN0IGFsc28gYmUgcmVzcG9uc2libGUsIHdlIHdhbnQgZGVudGlzdHMgd2hvIGNhbiBsaXZlIHdlbGwgaW4gdGhlaXIgcHJvZmVzc2lvbiwgd2hvIGNhbiBjb250aW51ZSB0byBzZXR0bGUgYW5kIHRoZXJlZm9yZSB0aGUgY29sbGVjdGl2ZSBjaG9pY2UgdGhhdCBpcyBiZXR0ZXIgdG8gcGF5IGZvciBjb25zZXJ2YXRpdmUgY2FyZSwgZ29lcyBpbiB0aGlzIGRpcmVjdGlvbiwgYW5kIGFsc28gYWxsb3dzIGhhdmUgYSBtdWNoIG1vcmUgY29uc2lzdGVudCBhcHByb2FjaCB0byBoZWFsaW5nLjxcL3A+XG48cD5UaGUgb3RoZXIgcGFydCBvZiB0aGUgcHJldmVudGlvbiByZXZvbHV0aW9uIHdpbGwgYmUgYmFzZWQgb24gZWFzeSBhY2Nlc3MgdG8gaGVhbHRoIHByb2Zlc3Npb25hbHMsIGJlY2F1c2UgdGhlIGZ1bGwgcmVpbWJ1cnNlbWVudCBvZiB0aGUgZ2xhc3NlcywgZXNzZW50aWFsLCBpcyB1c2VsZXNzIGlmIGl0IHRha2VzIDEyIG1vbnRocyB0byBoYXZlIGFuIGFwcG9pbnRtZW50IHdpdGggYW4gb3BodGhhbG1vbG9naXN0LiBBbmQgc28gZm9yIHRoYXQsIHdlIHdpbGwgZ28gZnVydGhlciBpbiB0aGUgb3JnYW5pemF0aW9uIG9mIHByb2Zlc3Npb25hbCBjb29wZXJhdGlvbi4gVGhlIHByb2Zlc3Npb24gb2YgZGVudGFsIGFzc2lzdGFudCB3aWxsIGJlIGV4cGFuZGVkLCB3ZSB3aWxsIGdvIGZ1cnRoZXIgaW4gdGhlIHRyYWluaW5nIG9mIG9wdGljaWFucyBhbmQgaW5jcmVhc2UgdGhlIG51bWJlciBvZiBoZWFyaW5nIGNhcmUgcHJvZmVzc2lvbmFscy4gSXQgaXMgYSBzZXQgb2YgdGhlIG9yZ2FuaXphdGlvbiBvZiB0aGUgcHJvZmVzc2lvbnMgdG8gd2hpY2ggd2UgbXVzdCBnby4gQnV0IHdoYXQgSSB3YW50IHlvdSB0byB0b3VjaCBoZXJlLCB0aHJvdWdoIHRoaXMgcmVmb3JtLCBpcyB0aGF0IHdlIHdpbGwsIGJ5IHRoZSBjb2xsZWN0aXZlIGNvbW1pdG1lbnQsIGJ5IHRoZSBpbGx1c3RyYXRpb24gb2Ygd2hhdCB5b3UgY2FsbGVkIHlvdXIgd2lzaGVzIE1yLiBQcmVzaWRlbnQsIGlzIGl0LSB0byBzYXkgdGhlIGNvbW1pdG1lbnQgb2YgdGhlIFN0YXRlLCB0aGUgY29tbWl0bWVudCBvZiBtdXR1YWxzLCBpbnN1cmVycywgYWxsIGhlYWx0aCBwcm9mZXNzaW9uYWxzIGFuZCB0aG9zZSB3aG8gcHJvdmlkZSBwcmVjaXNlbHkgdGhlIHByb3RlY3Rpb24sIHRoZSBjb21taXRtZW50IG9mIHRoZSBzb2NpYWwgcGFydG5lcnMgYW5kIGhlYWx0aCBpbnN1cmFuY2Ugd2UgaGF2ZSBmb3VuZCBhbiBpbnRlbGxpZ2VudCBzb2x1dGlvbiB0aGF0IGFsbG93cyBvbmUgaGFuZCB0byBoYXZlIGFuIGFuc3dlciBpbiB0ZXJtcyBvZiBwdXJjaGFzaW5nIHBvd2VyLCB3ZSB3aWxsIHNwZW5kIDEsNzAwIFx1MjBhYyB0byB6ZXJvLCAyMDAgXHUyMGFjIHRvIHplcm8sIDY1IFx1MjBhYyB0byB6ZXJvISBTbyBpdCYjMzk7cyBwdXJjaGFzaW5nIHBvd2VyIGZvciBvdXIgZmVsbG93IGNpdGl6ZW5zLiBXZSB3aWxsIGFsbG93IGJldHRlciBwcmV2ZW50aW9uIGFuZCB3ZSB3aWxsIGFsbG93IGFuIG9yZ2FuaXphdGlvbiBvbiB0aGVzZSB0aHJlZSBwcm9mZXNzaW9ucyBvZiB0aGUgY2FyZSBzeXN0ZW0sIG11Y2ggc21hcnRlciBhbmQgdGhhdCByZXNwb25kcyB0byB0aGUgY2hhbGxlbmdlcyB0aGF0IGl0IGhhcyBqdXN0IGRlc2NyaWJlZC4gQW5kIHNvLCB5b3UgaGF2ZSBvbiB0aGVzZSB0aHJlZSB0b3BpY3MsIGNvbGxlY3RpdmVseSwgYmVlbiBhYmxlIHRvIGJyaW5nIGFuIGFuc3dlciB0byB0aGUgY2hhbGxlbmdlcywgdG8gdGhlIHN0YWxlbWF0ZSBpbiB3aGljaCB3ZSB3ZXJlIHVudGlsIHRoZW4uIFB1cmNoYXNpbmcgcG93ZXIsIHByZXZlbnRpb24sIGJldHRlciBzZXJ2aWNlcyBiZWNhdXNlIGJldHRlciBjb2xsZWN0aXZlIG9yZ2FuaXphdGlvbiBvZiBjYXJlLiBXZSBoYXZlIGZvciB0aGlzLCBhcyBJIHNhaWQsIGFuZCB0aGF0IGlzIHdoeSBJIGFsc28gd2FudGVkIHRvIHRoYW5rIHlvdSwgbmVlZCB0aGUgY29tbWl0bWVudCBhbmQgcmVzcG9uc2liaWxpdHkgb2YgYWxsLiBBbmQgeW91IGFyZSB0aGUgZXhhbXBsZSwgbGFkaWVzIGFuZCBnZW50bGVtZW4sIG9uIHRoZSAxMDAlIGhlYWx0aCBvZiB0aGlzIGNvbW1pdG1lbnQuIFRoZSBjb21wdWxzb3J5IGhlYWx0aCBpbnN1cmFuY2Ugd2lsbCBjb250cmlidXRlIHRvIHRoZSBmaW5hbmNpbmcgb2YgdGhlIHJlZm9ybSwgYnkgZG91YmxpbmcgaXRzIHN1cHBvcnQgZm9yIGhlYXJpbmcgYWlkcyBmb3IgYWR1bHRzIGJ5IDIwMjIsIGJ1dCBhbG9uZ3NpZGUgdGhlIGNvbXB1bHNvcnkgaGVhbHRoIGluc3VyYW5jZSwgdGhlIGNvbXBsZW1lbnRhcnkgb3JnYW5pemF0aW9ucyB0aGF0IHlvdSByZXByZXNlbnQsIGhhdmUgYWxzbyBjb21taXR0ZWQgdG8gdGFraW5nIHRoZWlyIHBhcnQgaW4gdGhlIGNvdmVyYWdlIG9mIHRoaXMgMTAwJSBoZWFsdGggYmFza2V0LiBDb21wbGVtZW50YXJ5IGhlYWx0aCBjYXJlIGNvbnRyYWN0cywgd2hpY2ggZW5zdXJlIG1vcmUgdGhhbiA5MCUgb2YgdGhlIEZyZW5jaCwgd2lsbCBoYXZlIHRvIGNvdmVyIHRoaXMgYmFza2V0LiBBbmQgb2YgY291cnNlLCB0aGlzIHJlZm9ybSBjYW4gbm90IGdlbmVyYXRlIGEgc3BlY2lmaWMgaW5jcmVhc2UgaW4gdGhlIGNvc3Qgb2YgYWNxdWlyaW5nIGEgY29tcGxlbWVudGFyeSBoZWFsdGggaW5zdXJhbmNlIGZvciB0aGUgaW5zdXJlZCwgaXQgaXMgdGhlIGNvbGxlY3RpdmUgY29tbWl0bWVudCB0aGF0IHdlIHRvb2sgYW5kIHRoZXJlIGlzIG5vdCBpbiB0aGlzIGJ1c2luZXNzLCBvZiBkdXBlcyBtYXJrZXQuIEFuZCBJIHNhdyB0aGUgbmFzY2VudCBwb2xlbWljcywgbm90IG9uIHRoaXMgYWdyZWVtZW50IGJ1dCBvbiB0aGUgcGFzdCwgdGhlIGluY3JlYXNlIG9mIHNvbWUgY29tcGxlbWVudGFyeSwgaXQgaXMgdGhlIGNvbW1pdG1lbnQgb2YgdGhlIGNvbGxlY3RpdmUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGFjdG9ycyB3aGljaCBtYWtlcyBpdCBwb3NzaWJsZSB0byBjb250cm9sIHRoZSBjb3N0cywgd2hhdCB5b3Uga25ldyBob3cgdG8gZG8gaW4gc2V2ZXJhbCBzZWN0b3JzLiBJdCBpcyBhbHNvIHRoZSBjb21wbGV0ZSB0cmFuc3BhcmVuY3ksIHRoZSBoZWFsdGh5IGNvbXBldGl0aW9uIG9yZ2FuaXplZCB0aGF0IGF2b2lkcyBwcmFjdGljZXMgd2hvc2UgZmlyc3QgdmljdGltcyBhcmUgb3VyIGZlbGxvdyBjaXRpemVucy4gVGhpcyBpcyB5b3VyIGNvbW1pdG1lbnQgaGVyZSwgYW5kIEkgdGhhbmsgeW91IGFuZCBJIGNvdW50IG9uIHlvdSB0byBzdWNjZWVkIHRoaXMgY2hhbGxlbmdlIHRvIGJlIGF0IHRoZSByZW5kZXp2b3VzIHRoYXQgdGhlIEZyZW5jaCB3aWxsIGV4cGVjdCBjb25jcmV0ZWx5IGZvciBmdWxsIGltcGxlbWVudGF0aW9uLCBvdmVyIHRoZSBuZXh0IHRocmVlIHllYXJzLCBzaW5jZSB0aGlzIHJlZm9ybSB3aWxsIGJlIGZpbmFsaXplZCBieSAyMDIxLiBTbyB5ZXMsIHdlIG11c3QgaW50ZXJ2ZW5lIGVhcmxpZXIsIGZhc3RlciwgbW9yZSBtYXNzaXZlbHksIGJ5IG1vYmlsaXppbmcgYWxsLiBUaGlzIGlzIHRoZSBiZXN0IHdheSB0byBhZGRyZXNzIGhlYWx0aCBpbmVxdWl0aWVzLCB3aGljaCBJIG1lbnRpb25lZCBlYXJsaWVyLiBBbmQgd2UgaGF2ZSBhbHNvIGludmVzdGVkIGNvbnNpZGVyYWJseSwgaW4gdGhpcyBhcmVhLCB3ZSBhcmUgYXMgSSBzYWlkLCBsZWdpdGltYXRlbHkgcHJvdWQgb2Ygb3VyIGhlYWx0aCBzeXN0ZW0sIHRoZSBwZXJmb3JtYW5jZSBvZiBvdXIgaG9zcGl0YWxzLCBidXQgdGhlcmUgYXJlIGFsc28gc2l0dWF0aW9ucyBvZiBmYWlsdXJlIG9uIHdoaWNoIEkgY2FtZSBiYWNrLjxcL3A+XG48cD5UbyBtZWV0IHRoZXNlIGNoYWxsZW5nZXMsIHdlIG11c3QgYWxzbywgZm9yIHRoZSBob3NwaXRhbCwgZm9yIGFsbCBoZWFsdGggcHJvZmVzc2lvbmFscyBhbmQgZm9yIG91ciBmZWxsb3cgY2l0aXplbnMsIHdobyB1c2Ugb3VyIGhlYWx0aCBjYXJlIHN5c3RlbSwgc3VjY2VlZCBpbiBwcm92aWRpbmcgYSBtb3JlIGFwcHJvcHJpYXRlIHJlc3BvbnNlIGFuZCB0cmFuc2Zvcm1pbmcgb3VyIGhpc3RvcmljYWwgbW9kZWwuIFdlIGFyZSBmYWNlZCB3aXRoIGNvbnNpZGVyYWJsZSBkaXNwYXJpdGllcywgYSBtYWxhZGp1c3RtZW50IG9mIHRoaXMgbW9kZWwsIG9yaWVudGVkIHRvd2FyZHMgYW4gaW5kaXZpZHVhbCBhbmQgY3VyYXRpdmUgYXBwcm9hY2ggdG8gYWN1dGUgY2FyZSwgYXMgSSBzYWlkLCBhcyBuZXcgbmVlZHMgZm9yIHByZXZlbnRpb24gYW5kIGxvbmctdGVybSBjYXJlIGVtZXJnZSwgd2l0aCBjaHJvbmljIGRpc2Vhc2VzLCB3aXRoIGFnaW5nLiBJZiB3ZSB3YW50IHRvIHByaXZpbGVnZSBxdWFsaXR5IGFuZCBwcmV2ZW50aW9uLCB3ZSBtdXN0IGFsc28sIGJleW9uZCB0aGlzIGZpcnN0IGFncmVlbWVudCBvYnRhaW5lZCwgbGVhZCBhIHJlb3JpZW50YXRpb24gb2YgdGhlIG9yZ2FuaXphdGlvbiBvZiB0aGUgY2FyZSBzeXN0ZW0sIHRvIHRyZWF0IHBhdGhvbG9naWVzIHZlcnkgZWFybHksIGluIG9yZGVyIHRvIHJldGhpbmsgb3VyIGNvbGxlY3RpdmUgb3JnYW5pemF0aW9uIC4gV2UgbmVlZCB0byBtb3ZlIHByb2dyZXNzaXZlbHkgZnJvbSBsb2dpYywgY2FyZSBzdXBwbHkgbWFuYWdlbWVudCwgb3Zlcmx5IHJpZ2lkIG1hcHBpbmcsIGZyb20gYW4gb3Zlcmx5IG51bWVyaWNhbCBhbmQgYnVkZ2V0YXJ5IGFwcHJvYWNoLCB0byBhIGxvZ2ljIG9mIGRlbWFuZHMgYmFzZWQgb24gdGhlIHNlcnZpY2VzIHRvIGJlIHJlbmRlcmVkIHRvIHRoZSBwb3B1bGF0aW9uIG9uIHRoZSB0ZXJyaXRvcnkuIG9uIHRoZWlyIHBvb2wgb2YgbGlmZSwgYW5kIGEgbG9naWMgbW9yZSBpbmRpdmlkdWFsaXplZCwgdGhhdCBpcyB0byBzYXkgdHVybmVkIHRvd2FyZHMgdGhlIHBhdGllbnQuIFRvIG1lZXQgdGhlc2UgbmVlZHMgZm9yIGxvY2FsIGNhcmUsIHRoZSBhY3RvcnMgbXVzdCBvcmdhbml6ZSB0aGVtc2VsdmVzIGluIG5ldHdvcmtzLCBkZWNvbXBhcnRtZW50YWxpemUgdGhlIGNpdHkgbWVkaWNpbmUgYW5kIHRoZSBob3NwaXRhbCwgYWxzbyBndWFyYW50ZWVpbmcgYWNjZXNzIHRvIGF0IGxlYXN0IGZpdmUgc2VydmljZXMsIGFjY2VzcyB0byBhIGRvY3Rvci4gUGVybWFuZW5jZSBvZiBjYXJlIGFuZCBhY2Nlc3MgdG8gdW5zY2hlZHVsZWQgY2FyZSwgY29udGludWl0eSBvZiBjYXJlLCBncmFkdWFsIGNhcmUsIHNjcmVlbmluZyBhbmQgdmFjY2luYXRpb24uIEFuZCBiZXlvbmQgdGhlc2UgZml2ZSBtaW5pbXVtIHNlcnZpY2VzLCB3ZSBtdXN0IGJ1aWxkIHRoaXMgbWVkaWNpbmUsIHdoaWNoIHdpbGwgYmUgcGF0aWVudC1vcmllbnRlZCBhbmQgdGhhdCB3aWxsIGFsbG93IGl0LCB3aGljaCB3aWxsIGFsbG93LCBzb3JyeSwgdG8gYnVpbGQgaXRzIHBhdGggaW4gdGhlIGhlYWx0aCBzeXN0ZW0sIGFuZCBhdCBldmVyeSBtb21lbnQgdG8gcHJvdGVjdCBpdCB0aGUgYmVzdC4gSSBkbyBub3Qgd2FudCB0byBzcGVhayBhYm91dCB3b3JrIHRoYXQgaGFzIG5vdCBiZWVuIGNvbXBsZXRlZCwgdGhlIG1pbmlzdGVyIGlzIGNvbnRpbnVpbmcgdGhlIGNvbnN1bHRhdGlvbnMsIGFuZCB3ZSB3aWxsIGhhdmUgdGhlIG9wcG9ydHVuaXR5IHRvIGNvbWUgYmFjayBpbiB0aGUgc3VtbWVyLCBhbmQgSSB3aWxsIHNwZWFrIHRvIHRoZSBtaW5pc3Rlci4gc3VtbWVyLCBhdCB0aGUgZW5kIG9mIGFsbCB0aGVzZSBjb25zdWx0YXRpb25zLiBZb3Ugd2lsbCBhbHNvIGhhdmUgc29tZSByZXNwb25zaWJpbGl0eSB0byB0YWtlLCBsYWRpZXMgYW5kIGdlbnRsZW1lbiwgaW4gdGhlIHRyYW5zZm9ybWF0aW9uIG9mIHRoZSBoZWFsdGggc3lzdGVtLiBUaGUgcm9sZSBvZiBjb21wbGVtZW50YXJ5IGluc3VyYW5jZSBpcyBub3QgYWx3YXlzIGxpbWl0ZWQgdG8gdGhlIHJlaW1idXJzZW1lbnQgb2YgY2FyZSwgeW91IGFyZSBoZWFsdGggcHJvdmlkZXJzIHlvdXJzZWxmLCBub3QganVzdCBwYXllcnMgYW5kIHRoZXJlZm9yZSB5b3Uga25vdyB0aGUgaW50aW1hY3ksIGlmIEkgbWF5IHNheSwgb2YgdGhlIGNvbXBsZXhpdHkgdGhhdCBJIGp1c3QgcmVjYWxsZWQgZnJvbSBoZWFsdGggY2FyZSBzZXJ2aWNlcyB0byBoZWFsdGggY2VudGVycyB0byBsb25nLXRlcm0gY2FyZSBob21lcy4gQW5kIHRoZSBtdXR1YWxpc3Qgc3Bpcml0IGlzIGFsc28gaGVscGluZyB0byBidWlsZCBjYXJlIHBhdGh3YXlzIGluIHNvbWV0aW1lcyBpc29sYXRlZCBhcmVhcywgZm9yIHRoZSBiZW5lZml0IG9mIHRoZSBtb3N0IHZ1bG5lcmFibGUgcGF0aWVudHMsIHRvIGludmVzdCBpbiBwcmV2ZW50aW9uLCB0byBjb29wZXJhdGUgd2l0aCBwcm9mZXNzaW9uYWxzLiBCYXNpY2FsbHksIHlvdSBoYXZlIGluIHlvdXIgZ2VuZXMgcGFydCBvZiB0aGUgYW5zd2VycyB3ZSB3YW50IHRvIGJyaW5nIHRvIHRoaXMgY29udGVtcG9yYXJ5IGNoYWxsZW5nZS4gQW5kIHNvLCBhcyB5b3UgY2FuIHNlZSwgb24gdGhpcyBzdWJqZWN0LCB3ZSB3aWxsIGhhdmUgaW4gdGhlIHN1bW1lciwgdG8gdGFrZSBhIHBvc2l0aW9uIHRoZXJlIHRvbyBvbiBhIHByb2ZvdW5kIHRyYW5zZm9ybWF0aW9uLCB3aGljaCBpcyBub3QganVzdCBhIG1vbmV0YXJ5IHN1YmplY3QsIGJ1dCB3aGljaCB3aWxsIGludm9sdmUgYSBwcm9mb3VuZCByZW9yZ2FuaXphdGlvbiwgYW5kIHdoaWNoIHdpbGwgaW52b2x2ZSBhbHNvIHRvIHJldmlldyBhbGwgdGhlIHN0cnVjdHVyZXMgdG8gd2hpY2ggd2UgaGF2ZSBiZWVuIGFjY3VzdG9tZWQgc2luY2UgMTAgeWVhcnMsIGZyb20gdGhlIHByaWNpbmcgdG8gdGhlIGFjdCwgdGhlIHByaWNpbmcgdG8gdGhlIGFjdGl2aXR5LCB0aGUgc2Fjcm8taG9seSBzdW1tYSBkaXZpc2lvLCBiZXR3ZWVuIGEgY2l0eSBtZWRpY2luZSBhbmQgaG9zcGl0YWwgbWVkaWNpbmUsIGFuZCBpdCB3aWxsIGFsc28gYmUgbmVjZXNzYXJ5IHRvIHJldHVybiB0byBoYWJpdHMsIHNvIHRoYXQgYWxsIHRob3NlIHdobyB0YWtlIGNhcmUsIGNhbiB0YWtlIGFsbCB0aGVpciByZXNwb25zaWJpbGl0aWVzLjxcL3A+XG48cD5UaGUgYW5zd2VyIHRvIHRoZSBzZWNvbmQgY2hhbGxlbmdlIG9mIGFnaW5nLCBhbmQgaXQgd2lsbCBiZSBvbiB0aGlzIHBvaW50LCBmYXN0ZXIsIGl0IGlzIGFsc28gaW5kaXNwZW5zYWJsZS4gWW91IG1lbnRpb25lZCBpdCBmb3IgdGhlIGZpcnN0IHBvaW50IHRoYXQgbWF0dGVycyB0byBtZSwgdGhhdCBvZiBwcmV2ZW50aW5nLiBXZSBtdXN0LCBhbmQgdGhpcyB3aWxsIGJlIGF0IHRoZSBoZWFydCBvZiB0aGUgcGVuc2lvbiBzeXN0ZW0gdGhhdCBpcyBiZWluZyBidWlsdCwgdW5kZXIgdGhlIGF1dGhvcml0eSBvZiB0aGUgbWluaXN0ZXIgYW5kIHdob3NlIGNvbnN1bHRhdGlvbiBpcyBvbmdvaW5nLCB3ZSBtdXN0IGJldHRlciBwcmV2ZW50LCBhbmQgdGhlcmVmb3JlIHRocm91Z2hvdXQgbGlmZSwgdG8gZW5jb3VyYWdlIGVtcGxveWVycywgdG8gZW5jb3VyYWdlIHRoZSB3aG9sZSBjb21tdW5pdHksIGhlcmUgdG9vLCB0byBwcmV2ZW50IHNvIHRoYXQgZXZlcnlvbmUgY2FuIGFnZSBiZXR0ZXIgYW5kIHRoYXQgdGhlIGluZXF1YWxpdGllcyBhcmUgZ3JhZHVhbGx5IHNtb290aGVkLCBpbiBmcm9udCBvZiBvbGQgYWdlLiBBbmQgd2UgbmVlZCB0byB0YWtlIGludG8gYWNjb3VudCBhbGwgdGhlIGRpc3Bhcml0aWVzIGluIHRoZSBwZW5zaW9uIHN5c3RlbSwgYXMgd2UgYXJlIGJ1aWxkaW5nIGl0LiBJdCBpcyB0aGVuIG5lY2Vzc2FyeSB0byBicmluZyB0aGUgYW5zd2VycyBvZiBzb2xpZGFyaXR5LCBub3QgbmVnb3RpYWJsZSwgaXQgaXMgbW9yZW92ZXIgd2hhdCBoYWQgYmVlbiB0aGUgb2JqZWN0IG9mIG15IGNvbW1pdG1lbnQgZm9yIHRoZSBtaW5pbXVtIG9sZCBhZ2UsIHdoaWNoIGluY3JlYXNlZCBmcm9tIDMwIFx1MjBhYyBwZXIgbW9udGggdG8gdGhlIDFzdCBvZiBBcHJpbCBsYXN0IGFuZCB3aGljaCB3aWxsIGluY3JlYXNlIHRvIHRoZSAxc3QgbmV4dCBKYW51YXJ5IDMwIFx1MjBhYy4gQW5kIEkgaGVhciBtdXJtdXIgaW4gdGhlIHJvb20sIGZldyBwZW9wbGUgYXQgbGVhc3Qgb2xkIGFnZSB3aG8gcGF5IHRoZSBDU0cgYXQgZnVsbCByYXRlLiBTbyB0aGVzZSBhcmUgcGVvcGxlIHdobyBoYXZlIG9ubHkgZ2FpbmVkIHB1cmNoYXNpbmcgcG93ZXIuIE5vLCBidXQgaXQmIzM5O3MgYSByZWFsaXR5LiBCdXQgaXQmIzM5O3MgYSByZWFsaXR5LCBpdCYjMzk7cyBpbXBvcnRhbnQgbm90IHRvIGFsbG93IG1pc3VuZGVyc3RhbmRpbmdzLiBBbnlvbmUgd2l0aCBhIG1pbmltdW0gb2Ygb2xkIGFnZSBvciB3aG8gaGFzIGEgbW9kZXN0IHBlbnNpb24sIHBheXMgYSBDU0csIHdoaWNoIGlzIHF1aXRlIG5vcm1hbCwgYW5kIHRoZSBjaG9pY2Ugd2FzIG5vdCB0byBtb3ZlIGl0LCB3aGljaCBpcyBhIENTRyBhdCB0aGUgcmVkdWNlZCByYXRlLCBJIHdvdWxkIG5vdCBzdWdnZXN0IHRoYXQgcGVvcGxlIHdob3NlIG1pbmltdW0gb2xkIGFnZSBoYXMgYmVlbiByYWlzZWQsIHdvdWxkIGhhdmUgYSBDU0cgdGhhdCB3b3VsZCBoYXZlIGluY3JlYXNlZC4gT24gdGhlIG9sZCBhZ2UsIHRoZSBhbnN3ZXIsIGFuZCB0aGVyZWZvcmUgb24gcmV0aXJlbWVudCwgdGhlIGFuc3dlciBpcyBvYnZpb3VzbHkgdGhlIGNvbXBsZXRlIG92ZXJoYXVsIG9mIG91ciBwZW5zaW9uIHN5c3RlbSwgd2l0aCBwcmluY2lwbGVzIHRoYXQgSSB3YW50IGhlcmUgdG9vIGNsZWFyIGFuZCBzaW1wbGUuIEkgd2FudCB1cyB0byBiZSBhYmxlIHRvIG1haW50YWluIG91ciBwYXktYXMteW91LWdvIHBlbnNpb24gc3lzdGVtIGFuZCBpbnRlcmdlbmVyYXRpb25hbCBzb2xpZGFyaXR5LiBJdCBpcyB0aGUgY2hvaWNlIHRoYXQgaGFzIGJlZW4gbWFkZSwgaXQgaXMgdGhlIGNob2ljZSB0aGF0IGhhcyBiZWVuIG1hZGUsIG9uIHdoaWNoIEkgYW0gY29tbWl0dGVkIGFuZCBpdCBpcyB0aGUgc29saWRhcmlzbSB0aGF0IGlzIGF0IHRoZSBoZWFydCBvZiBvdXIgUmVwdWJsaWMuIFNpbXBseSwgdGhpcyBjb21wbGV0ZSBzb2xpZGFyaXNtLCBpdCBhbHNvIGdvZXMgd2l0aCB0aGUgZW5kIG9mIGEgc3RhdHVzIHNvY2lldHksIGFuZCBzbyBpdCBnb2VzIHRvIGEgc3lzdGVtIHRoYXQgd2UgYXJlIGJ1aWxkaW5nLCBuZWdvdGlhdGluZywgY29uY2VydGVyLCB3aGljaCB3aWxsIGFsbG93IGEgZXVybyBjb250cmlidXRlZCB0byBnaXZlIHRoZSBzYW1lIGFtb3VudCBvZiByaWdodHMuIEFuZCBzbyB0aGF0IHdlIGdyYWR1YWxseSBjb252ZXJnZSBhbGwgdGhlIGV4aXN0aW5nIHJlZ2ltZXMsIHdoaWNoIGhhZCBiZWVuIGJ1aWx0IGludG8gZGlmZmVyZW5jZXMgdGhhdCBoYXZlIGJlY29tZSBpbmV4cGxpY2FibGUgdG9kYXkuIFRoYXQmIzM5O3MgdGhlIGtleSB0byBlc3RhYmxpc2hpbmcgd2hhdD8gT24gdGhlIG9uZSBoYW5kLCB0aGUganVzdGljZSBvZiB0aGUgc3lzdGVtIGluIHRoZSBsb25nIHRlcm0sIGhhdmluZyBhIHRyYW5zaXRpb24gcGVyaW9kIHRoYXQgd2UgYXNzdW1lIGFuZCBhbHNvIGFsbG93IGNvbmZpZGVuY2UgaW4gdGhlIHN5c3RlbSwgc28gdGhhdCBldmVyeW9uZSBjYW4gcmVhZCwgaW1tZWRpYXRlbHksIGtub3cgaGlzIHJpZ2h0cyBhbmQgZm9yIHRoZW0ga25vdyB0aGF0IGhpcyByaWdodHMgdG8gYSBcdTIwYWMgMSBjb250cmlidXRpb24sIGFyZSB0aGUgc2FtZSBhcyB0aGF0IG9mIHRoZSBuZWlnaGJvci4gVGhpcyBpcyB0aGUga2V5IHRvIHJlc3BvbmRpbmcgdG8gdGhlIGNvbGxlY3RpdmUgbWlzdHJ1c3QgaW4gd2hpY2ggd2UgaGF2ZSBzZXR0bGVkLCBhbmQgYWxzbyB0byBtZWV0IHRoZSBjaGFsbGVuZ2VzIG9mIGFnaW5nLCB3aGljaCBJIHJlY2FsbGVkIGEgbW9tZW50IGFnby4gT24gdGhpcyBzdWJqZWN0LCBhIGxhdyB3aWxsIGJlIHByZXNlbnRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB5ZWFyIDIwMTkgYW5kIHdpbGwgYmUgdm90ZWQgaW4gdGhlIGZpcnN0IGhhbGYgb2YgdGhlIHllYXIgMjAxOS4gVGhlIGRlY2lzaW9ucyB3aWxsIGJlIHRha2VuLCB0aGV5IHdpbGwgYmUgY2xlYXIsIGEgdHJhbnNpdGlvbiB0aW1lIHdpbGwgYmUgZ3JhbnRlZCwgYW5kIHdlIGhhdmUgY2hvc2VuLCBmdW5kYW1lbnRhbGx5LCBub3QgdG8gbWFrZSBhbiB1bXB0ZWVudGggYnVkZ2V0YXJ5IHJlZm9ybSBwcml2aWxlZ2luZyB0aGUgc2hvcnQtdGVybSwgdG8gZmluYWxseSBtYWtlIHRoZSByZWZvcm0gdGhhdCBhbGxvd3MgdG8gcHV0IGZsYXQgdGhlIGJ1aWxkaW5nLCB0byByZWNyZWF0ZSBjb25maWRlbmNlIGFuZCBqdXN0aWNlLCBhY2NlcHRpbmcgYSBsb25nIHRyYWRpdGlvbi48XC9wPlxuPHA+U3BlYWtlcjogKEluYXVkaWJsZSk8XC9wPlxuPHA+VEhFIFBSRVNJREVOVDogQnV0IHlvdSBhcmUgYWJzb2x1dGVseSByaWdodCwgd2UgYXJlIGluIGEgZnJlZSBpbnF1aXJ5IGhhbGwsIGJ1dCBJIGxpa2UgdGhhdC4gT24gdGhpcyBzdWJqZWN0LCBvbiB0aGlzIHN1YmplY3QsIHlvdSBhcmUgYWJzb2x1dGVseSByaWdodCwgd2UgbXVzdCBub3QgZm9yZ2V0IHdvbWVuLCBmb3JnZXQgYWJvdXQgYnJva2VuIGFuZCBmcmFjdHVyZWQgY2FyZWVycywgZm9yZ2V0IGFib3V0IHdvbWVuIGFuZCBtZW4gbGl2aW5nIHdpdGggZGlzYWJpbGl0aWVzLCBub3IgZm9yZ2V0IHRoZSBzaXR1YXRpb24gb2YgZ3JlYXQgZGlmZmljdWx0aWVzLiBhbmQgaW5lcXVhbGl0aWVzIGluIHNvY2lvLXByb2Zlc3Npb25hbCByaXNrcywgYW5kIHNvIGl0IGlzIGFsc28gYWxsIHRoYXQgYSB0cmFuc3BhcmVudCBzeXN0ZW0gd2lsbCBpbnRlZ3JhdGUgaW50byB0aGUgcGFyYW1ldGVycyBhbmQgd2hpY2ggd2lsbCBiZSB0cmFuc3BhcmVudCwgY29uY2VydGVkLCBuZWdvdGlhdGVkIGFuZCB2b3RlZCBieSBQYXJsaWFtZW50LiBTbyB5b3UgYXJlIGFic29sdXRlbHkgcmlnaHQuPFwvcD5cbjxwPkZpbmFsbHksIG9uIG9sZCBhZ2UsIGl0IGlzIG9idmlvdXMgdGhhdCB3ZSBjYW4gbm8gbG9uZ2VyIGRlbGF5IHRoZSBhbnN3ZXIgdG8gYmUgZ2l2ZW4gaW4gdGVybXMgb2YgZGVwZW5kZW5jZS4gSSBtZW50aW9uZWQgZWFybGllciB0aGUgcmVhbGl0eSwgdGhlIGRhaWx5IGxpZmUgZm9yIG1hbnkgb2Ygb3VyIGZlbGxvdyBjaXRpemVucyBmb3IgY2FyZWdpdmVycywgZm9yIHRob3NlIHdobyBzaGFyZSB0aGVzZSBvZnRlbiBkcmFtYXRpYyByZWFsaXRpZXMuIE9uIHRoaXMgcG9pbnQsIHdlIGFsc28gbmVlZCB0aGlzLCB3aGlsZSBwcmV2ZW50aW5nIGJldHRlciB0byBtb2JpbGl6ZSBhbGwgdGhlIGFjdG9ycywgdG8gcmVjb2duaXplIHRoZSBwYXJ0IG9mIHRoZSBmYW1pbHkgc29saWRhcml0eSBhbmQgdG8gZ2l2ZSBpdCBhIHN0YXR1cyBhbmQgYSBwbGFjZS4gVGhlIHNoYXJlIG9mIGNvbGxlY3RpdmUgc29saWRhcml0eSwgc29jaWFsLCBmaW5hbGx5IGJ1aWxkIHRoZSBtZWNoYW5pc21zIHJlc3BvbnNpYmxlIGZvciBmdW5kaW5nIGFuZCBmaW5hbGx5IGFncmVlIHRvIGhhdmUgdGhlIG5lY2Vzc2FyeSBuYXRpb25hbCBkZWJhdGUsIHdoaWNoIHdpbGwgbWVldCB0aGlzIG5ldyByaXNrLCB3aGljaCBpcyB0aGVyZSBhbmQgd2hpY2ggd2UgbmVlZCBzbyByZXBseS4gV2Uga25vdyB0aGUgZmlyc3QgZXN0aW1hdGVzLCA5IHRvIDEwIGJpbGxpb24gZXVyb3MgdGVsbCB1cyBzb21lLiBXZSBhbHNvIGtub3cgdGhhdCB0aGUgYW5zd2VyIGlzIGluIGEgbW9iaWxpemF0aW9uIG9mIGFsbCB0aGUgYWN0b3JzLCBpdCBpcyBpbiB0aGUgaW5ub3ZhdGlvbiwgaXQgaXMgaW4gdGhlIGNhcGFjaXR5IHRvIGdpdmUgYSBwbGFjZSBpbiB0aGUgc29jaWV0eSBhbmQgdG8gYmV0dGVyIHJlY29nbml6ZSBhbmQgcmVtdW5lcmF0ZSB0aGUgd29yayBvZiB0aG9zZSBhbmQgdGhvc2UgdGhhdCBhY2NvbXBhbnkgdGhlIGRlcGVuZGVudHMsIGFuZCB0byBlbnN1cmUgdGhlIHRyYW5zZm9ybWF0aW9uIG9mIHRoZSBlc3RhYmxpc2htZW50cywgaW4gZXN0YWJsaXNobWVudHMgbW9yZSBtZWRpY2FsaXplZCB0aGFuIHRoZXkgYXJlIHRvZGF5LiBUaGlzIGdyZWF0IHRyYW5zZm9ybWF0aW9uLCBpdCB3aWxsIG5vdCBoYXBwZW4sIGVpdGhlciwgb3Zlcm5pZ2h0LCB0aGUgbWluaXN0ZXIgaGFzIGJyb3VnaHQgYSBmZXcgd2Vla3MgYWdvIGZpcnN0IGVzc2VudGlhbCBhbmQgdXJnZW50IGFuc3dlcnMuIEkga25vdyB0aGF0IHRoZXkgZG8gbm90IGZ1bGx5IHJlc3BvbmQgdG8gdGhlIHN1ZmZlcmluZyBvZiB0aG9zZSB3aG8gd29yayBpbiB0aGVzZSBpbnN0aXR1dGlvbnMuIEkga25vdyB0aGF0IHRoZXkgZG8gbm90IGZ1bGx5IHJlc3BvbmQgdG8gdGhlIGluZGlnbmF0aW9uLCBsZWdpdGltYXRlLCBvZiBtYW55IG9mIG91ciBmZWxsb3cgY2l0aXplbnMuIFdlIHdpbGwgbm90IGZpeCBpdCBvdmVybmlnaHQsIEkmIzM5O20gbm90IGdvaW5nIHRvIG1ha2UgeW91IGNvb2tpZSBwcm9taXNlcywgcG9kaXVtIHByb21pc2VzLCBhbmQgaXQmIzM5O3Mgbm90IGp1c3QgYSBmaW5hbmNpYWwgY29tbWl0bWVudCwgaXQmIzM5O3MgZ29pbmcgdG8gYmUgdGhlcmUsIGJlY2F1c2Ugd2UgbmVlZCB0byBpbnZlc3Qgb24gdGhpcyB0b3BpYy4gTm8sIHdlIG11c3QgYnVpbGQgYSBuZXcgcmlzaywgd2UgbXVzdCByZXNwb25kIHRvIHRoaXMgbmV3IHNvY2lhbCB2dWxuZXJhYmlsaXR5LCB3aGljaCBpcyBkZXBlbmRlbmNlLiBPbiB0aGlzIHN1YmplY3QsIHRoZSB5ZWFyIDIwMTkgd2lsbCBhbHNvIGJlIGRldm90ZWQgdG8gYSBsYXcgdGhhdCB3aWxsIGJlIHBhc3NlZCBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgeWVhci48XC9wPlxuPHA+PFwvcD5cbjxwPkludmVzdCBtb3JlIGluIHBlb3BsZSwgYWNjb21wYW55IHRoZW0gc28gdGhhdCB0aGV5IHJlZ2FpbiB0aGVpciBkaWduaXR5IHdoZW5ldmVyIHRoZXkgY2FuLCBhbmQgYWNjb21wYW55IGFsbCB0aG9zZSB3aG8gY2FuIHJldHVybiB0byB0aGUgd29yayB0b3dhcmRzIGl0LCBiZWNhdXNlIHRoZSBlbWFuY2lwYXRpb24gaXMgYnVpbHQgYnkgdGhlIHdvcmsgYXMgc29vbiBhcyB3ZSBjYW4sIHRoZXJlIHdpbGwgYWx3YXlzIGJlIHRob3NlIHdobyBjYW4gbm90LCBhbmQgd2UgbXVzdCBwcm90ZWN0IHRoZW0sIGFuZCBiZSB0aGVyZSwgYW5kIHRha2UgY2FyZSBvZiB0aGVtLCBhbmQgcmVjb2duaXplIHRoZWlyIHBhcnQgaW4gb3VyIHNvY2lldHksIGJ1dCBhbGwgdGhvc2UgYW5kIHRob3NlIHdobyBjYW4sIGJlIGFjY29tcGFuaWVkIHRvIGRvIHNvLCBhbmQgYWxsb3cgb3VyIHB1YmxpYyBwb2xpY2llcywgb3VyIGNvbGxlY3RpdmUgY29tbWl0bWVudCwgYW5kIHlvdXIgY29tbWl0bWVudCBhcyB3ZWxsLCB0byBiZSB0aGUgcGF0aCBvZiBhY2NvbXBhbmltZW50IGFuZCBlbXBvd2VybWVudCB0aGF0IGVuYWJsZXMgZW1hbmNpcGF0aW9uIGluIGFuZCB0aHJvdWdoIHdvcmsuIEJlY2F1c2UgaWYgYWxsIHRob3NlIHdobyBjYW4gZG8gdGhpcyB3YXkgZG8gbm90IGRvIGl0LCB3ZSB3aWxsIG5vdCBsZWdpdGltYXRlbHkgaGF2ZSB0aGUgbWVhbnMgdG8gZ28gdG8gZmluYW5jZSB0aGUgbGVnaXRpbWF0ZSByaXNrcyBhbmQgdGhlIGdyZWF0IHZ1bG5lcmFiaWxpdHkgdGhhdCBJIGV2b2tlZCBqdXN0IG5vdy4gaXMgbm90IHRydWUsIGFuZCB3ZSBhbHNvIGhhdmUgdG8gZmFjZSBpdCwgYmVjYXVzZSBvdGhlcndpc2Ugd2Ugd291bGQgYmUgbHlpbmcgdG8gZWFjaCBvdGhlciwgYW5kIGFsbCB0aG9zZSB3aG8gd291bGQgbm90IHdhbnQgdG8gY2hhbmdlIGFueXRoaW5nLCB3aG8gaW4gYSBzZW5zZSBjb25zaWRlciB0aGUgdGVjaG5vbG9naWNhbCBmcm9udGllciBvZiBzb2NpYWwganVzdGljZSwgd291bGQgc3BlbmQgbW9yZSBieSBub3QgZW1wb3dlcmluZyBhbnlvbmUsIHRlbGwgbWUgd2hvIGZpbmFuY2VzIGluIHRoZSBlbmQ/IEFsd2F5cyBzb21lb25lLCB5b3Ugb3IgeW91ciBjaGlsZHJlbiBvciB0aG9zZSB3aG8gYXJlIG5vdCB5ZXQgYm9ybi4gQW5kIHNvIGxldCB1cyBtYWtlIHRoaXMgd29yayBvZiB0cmFuc2Zvcm1pbmcgb3VyIHNvY2lhbCBwb2xpY3ksIGJ5IHByb3ZpZGluZyB0aGlzIHN1cHBvcnQsIGJ5IGFsc28gdHJhbnNmb3JtaW5nIHRoaXMgcGxhY2Ugb2Ygc29jaWFsIHdvcmssIGFuZCBmb3IgbWUsIHRoaXMgdHJhbnNmb3JtYXRpb24gaXMgaW5kaXNwZW5zYWJsZSBpZiB3ZSB3YW50IHRvIHN1Y2NlZWQgaW4gdGhpcyBwYXRoIHRoYXQgSSBldm9rZS4gQW5kIHRoYXQmIzM5O3MgYWxzbyB3aHkgd2hhdCB3ZSBhcmUgZG9pbmcgdG8gZW5hYmxlIHRoaXMgZW1hbmNpcGF0aW9uLCBpcyB0byBidWlsZCwgYXQgZWFjaCBzdGFnZSBvZiBsaWZlLCB0aGUgbmV3IGluZGl2aWR1YWwgc2VjdXJpdHksIHRoZSBuZXcgc2VjdXJpdGllcyBhcmUgbm8gbG9uZ2VyIHN0YXR1cywgaXQgaXMgbm90IGlzIG1vcmUgaW4gdGhlIHNvY2lldHkgb2YgdG9tb3Jyb3cgbmVpdGhlciB1bmVtcGxveW1lbnQgYXMgaXQgZXhpc3RlZCwgbm9yIHRoZSBSU0EsIGl0IGlzIHRoZSBwb3NzaWJpbGl0eSBhdCBldmVyeSBtb21lbnQgb2YgbGlmZSB0byBiZSByZWZvcm1lZCwgcmVvcmllbnRlZCwgdG8gYmUgYm90aCBwcm90ZWN0ZWQgYW5kIGFjY29tcGFuaWVkIGZvciB0byBiZSBhYmxlIHRvIGVtYW5jaXBhdGUgYXQgYW55IG1vbWVudCBieSB0aGlzIHdvcmsuIFRoZSBoZWFydCBvZiB0aGUgbGF3IHRoYXQgaXMgY29taW5nIHRvIFBhcmxpYW1lbnQgcmlnaHQgbm93IG9uIHRoZSB0cmFuc2Zvcm1hdGlvbiBvZiBhcHByZW50aWNlc2hpcCBhbmQgc2tpbGxzIHRyYWluaW5nIGlzIHRoYXQsIGFuZCBpdCYjMzk7cyBhIGNvbnRpbnV1bSwgZnJvbSBncmVhdCBwb3ZlcnR5IHRvIGxpZmUgYWxsIHRoZSB3YXkgdGhyb3VnaC4gam9iLiBXaGF0IHdlIG5lZWQgdG8gZG8gaXMgcmVpbnZlc3QgaW4gdGhlIHBlcnNvbiwgaXQmIzM5O3MgbW9yZSBzdXBwb3J0LCBtb3JlIGVtcG93ZXJtZW50LCBhbmQgbm90IHRoZSBvbmx5IGFuc3dlciBpcyB0aGUgY29tbXVuaXR5JiMzOTtzIG1vbmV5IGZvciBwZXJzb25hbCBzaXR1YXRpb25zLiBiZWNvbWUgaW1wZXJzb25hbC4gV2UgbXVzdCBnbyBvdXQgb24gYWxsIHRoZXNlIHRvcGljcyBvZiBhIGxvZ2ljIG9mIHdpbmRvdyBmb3IgYSBsb2dpYyBvZiBhY2NvbXBhbmltZW50LjxcL3A+XG48cD5IZXJlLCBsYWRpZXMgYW5kIGdlbnRsZW1lbiwgd2hhdCBJIHdhbnRlZCB0byB0ZWxsIHlvdSBhYm91dCB0aGVzZSB0aHJlZSBjaGFsbGVuZ2VzLiBJIHdpbGwgY29tZSBiYWNrIGluIHRoZSBjb21pbmcgbW9udGhzIHRvIGJvdGggcG92ZXJ0eSBhbmQgaGVhbHRoLiBCdXQgSSBmdWxseSBlbWJyYWNlIHRoaXMgZGlzY291cnNlIG9mIHRydXRoLCBvZiBjb2xsZWN0aXZlIHJlc3BvbnNpYmlsaXR5IHdoaWNoIG1ha2VzIG1lLCBpbiBteSB2aWV3LCB0aGUgYW5zd2VycyB0byBvdXIgY29udGVtcG9yYXJ5IGNoYWxsZW5nZXMgY2FuIG5vdCBiZSB0aGUgc29sdXRpb25zIG9mIHllc3RlcmRheSwgYmVjYXVzZSB0aGV5IGRpZCBub3QgYW5zd2VyIHRvIHRoZXNlIGNoYWxsZW5nZXMgYW5kIGJlY2F1c2UgdGhleSBoYXZlIGxlYWRzIHRvIHdoYXQ/IFRvIHNwZW5kIG1vcmUgYW5kIG1vcmUsIGVhY2ggdGltZSByZXNwb25kaW5nIGEgbGl0dGxlIGxlc3MgdG8gdGhlIGRhaWx5IHJlYWxpdHkuIFdoYXQgSSB3YW50IHRvZ2V0aGVyLCB3ZSBjYW4gcmVidWlsZCwgaW5zcGlyZSBkZWVwIHZhbHVlcywgd2hpY2ggYXJlIHlvdXJzLCB3aGljaCBhcmUgdGhvc2Ugb2YgdGhlIFJlcHVibGljLCB3aGljaCBhcmUgdGhvc2Ugb2YgdGhlIHNwaXJpdCBvZiA0NSwgaXMgdG8gZmFjZSB0aGUgc29jaWV0eSB0aGF0IGlzIG91cnMsIGEgc29jaWV0eSBtYWRlIG9mIHJ1cHR1cmVzLCBncmVhdCB0cmFuc2Zvcm1hdGlvbnMsIGdyZWF0IGFueGlldGllcywgdGhpcyBhZ2luZyB0aGF0IHdlIGhhdmUgbG9uZyBkaXNjdXNzZWQsIHNvIHRoYXQgdGhlIGhlYXJ0IG9mIG91ciByZXNwb25zZSBpcyBiZXR0ZXIgcHJldmVudGVkLCBvciB0byByZS1odW1hbml6ZSBhbmQgdG8gYWNjb21wYW55LCBub3QgdG8gaGVscCBsaXZlIGluIHNpY2tuZXNzIG9yIHRvIGxpdmUgaW4gcG92ZXJ0eSwgYnV0IHRvIGhlbHAgZ2V0IG91dCBvZiB0aGUgZGlzZWFzZSBhbmQgb3V0IG9mIHBvdmVydHkuPFwvcD5cbjxwPkFuZCB0byBlbXBvd2VyIGFsbCBhY3RvcnMsIHRvIGVuc3VyZSB0aGF0IGV2ZXJ5b25lIGluIHRoaXMgc29jaWV0eSBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYmVpbmcgaW4gYSBzdGF0ZSBvZiBzb2NpYWwgb3IgaW50ZWxsZWN0dWFsIG1pbm9yaXR5LCBidXQgdGhhdCBldmVyeW9uZSBoYXMgYSBwYXJ0IG9mIHRoZSBzb2x1dGlvbi4gU28geWVzLCBNciBQcmVzaWRlbnQsIHRvIHN1Y2NlZWQgaW4gdGhpcyB0cmFuc2Zvcm1hdGlvbiwgSSBkbyBub3QgdGhpbmsgZm9yIGEgc2luZ2xlIHNlY29uZCB0aGF0IHRoZSBzdGF0ZSBjYW4gZG8gaXQgYWxvbmUsIEkgZGVlcGx5IHRoaW5rIHRoYXQgdGhpcyB0cmFuc2Zvcm1hdGlvbiB3aWxsIG5vdyBiZSBhIG1hdHRlciBvZiBkZWNpc2lvbnMsIGFjdHMsIGRldGFpbHMsIHdpbGwgYmUgYSBkYWlseSB3b3JrIG9mIHRoZSBkYXksIHdoZXJlIHRoZSBTdGF0ZSB3aWxsIGhhdmUgdG8gdGFrZSBpdHMgc2hhcmUgb2YgcmVzcG9uc2liaWxpdHksIGJ1dCB3aGVyZSBhbGwgdGhlIGFjdG9ycywgd2hvIG1ha2UgdGhlIG5hdGlvbmFsIHNvbGlkYXJpdHksIHdpbGwgaGF2ZSB0byBsZWFybiB0byByZWludmVudCB0aGVpciByb2xlIHRvIHRoaW5rIHRoZXNlIGNoYWxsZW5nZXMgYW5kIHRvIHBhcnRpY2lwYXRlIGluIHRoaXMgdHJhbnNmb3JtYXRpb24uIEZyb20gdGhhdCwgSSBrbm93IHlvdSBjYXBhYmxlIG9mIHRoYXQsIEkga25vdyB3ZSBhcmUgY2FwYWJsZS4gTG9uZyBsaXZlIHRoZSBSZXB1YmxpYyBhbmQgbG9uZyBsaXZlIEZyYW5jZS48XC9wPlxuPHA+RURJVE9SJiMzOTtTIE5PVEU6IFRoaXMgYXJ0aWNsZSBpcyBhIHRyYW5zbGF0aW9uLiBQbGVhc2UgYWNjZXB0IG91ciBhcG9sb2dpZXMgc2hvdWxkIHRoZSBncmFtbWFyIGFuZCBcLyBvciBzZW50ZW5jZSBzdHJ1Y3R1cmUgbm90IGJlIHBlcmZlY3QuPFwvcD4iLCJpbm5lckNvbnRlbnQiOlsiTUlMIE9TSSBUcmFuc2xhdGlvbi4gR292ZXJubWVudCBvZiB0aGUgUmVwdWJsaWMgb2YgRnJhbmNlIHN0YXRlbWVudHMgZnJvbSBFbmdsaXNoIHRvIEZyZW5jaCAtIFB1Ymxpc2hlZCBKdW5lIDE0LCAyMDE4PHA+U2VjdGlvbjogSGVhbHRoIGFuZCBzb2xpZGFyaXR5PFwvcD5cbjxwIGNsYXNzPVwiYzNcIj5Pbmx5IHRoZSBkZWxpdmVyeSBpcyBhdXRoZW50aWNNb250cGVsbGllciAtIFdlZG5lc2RheSwgSnVuZSAxMywgMjAxODxcL3A+XG48cD5UaGFuayB5b3UgTXIgUHJlc2lkZW50LCB0aGFuayB5b3UgZm9yIHRoaXMgc3BlZWNoIGFuZCB5b3VyIHdlbGNvbWUsIE1yIFByZXNpZGVudCwgTWFkYW0gTWluaXN0ZXIsIExhZGllcyBhbmQgR2VudGxlbWVuIFBhcmxpYW1lbnRhcmlhbnMsIE1hZGFtIFJlZ2lvbmFsIFByZXNpZGVudCwgTWF5b3IsIGxhZGllcyBhbmQgZ2VudGxlbWVuLjxcL3A+XG48cD5UaGFuayB5b3UgTWF5b3IgdG8gd2VsY29tZSB1cyBpbiB0aGlzIGJlYXV0aWZ1bCBjaXR5IG9mIE1vbnRwZWxsaWVyLCBJIHVuZGVyc3Rvb2QgdGhhdCBvbmNlIGEgY2VudHVyeSwgdGhpcyBjaXR5IGhvc3RlZCBNdXR1YWxpdHksIGFuZCB0aGF0IGl0IGlzIHRoZSBtb21lbnQgLSBpdCBpcyBub3QgdGhlIG9ubHkgb25lIC0gd2hlcmUgdGhlIHByZXNpZGVudHMgY29tZSB0byBleHByZXNzIHRoZW1zZWx2ZXMsIGFuZCB0aGVyZSBpcyBhIGxpdHRsZSBtb3JlIHRoYW4gYSBjZW50dXJ5LCBpdCBpcyB0aGUgcHJlc2lkZW50IFBPSU5DQVJFIHdoaWNoLCBpbiB0aGlzIHNhbWUgY2l0eSwgeW91IGZvdW5kLCBwcm9vZiBpZiBpdCB3ZXJlLCB0aGF0IHlvdXIgbW92ZW1lbnQgaXMgcm9vdGVkIGluIHRoZSBoaXN0b3J5IG9mIHRoZSBSZXB1YmxpYyBhbmQgaGFzIGFsd2F5cyBoYWQgdGhhdCBzcGVjaWFsIGNvbm5lY3Rpb24sIFByZXNpZGVudCwgdGhhdCB5b3UganVzdCByZWNhbGxlZC48XC9wPlxuPHA+U29jaWFsIGp1c3RpY2UsIHNvbGlkYXJpdHksIGRpZ25pdHksIHRoZXNlIGFyZSB0aGUgcmVwdWJsaWNhbiBjb21taXRtZW50cywgYW5kIHlvdSBoYXZlIGp1c3Qgbm93IHJldHJhY2VkLCBpbiBzb21lIGZ1bmRhbWVudGFsIHNlY3RvcnMsIG9uIHNvbWUgZXNzZW50aWFsIGlzc3VlcyBvZiBvdXIgc29jaWV0eSwgdGhlIGltcG9ydGFuY2Ugb2YgdGhlc2UgY29tbWl0bWVudHMgYW5kIHRoZXNlIHZhbHVlcywgb2YgY291cnNlLCB3ZSBjb250aW51ZSB0byBwcm9taXNlIGV2ZXJ5IEZyZW5jaHdvbWFuIGFuZCBldmVyeSBGcmVuY2h3b21hbiB0aGVpciBmdW5kYW1lbnRhbCByaWdodHMuIE9mIGNvdXJzZSwgd2UgY29udGludWUgdG8gbWFrZSBhIHNvY2lhbCBwcm90ZWN0aW9uIHN5c3RlbSB3b3JrIHdoaWNoIGdpdmVzIHNvbGlkYXJpdHkgYSB1bml2ZXJzYWwgZGltZW5zaW9uLiBCdXQgaW4gZmFjdCwgd2hhdCB3ZSBzZWUgaXMgdGhhdCBldmVyeSBkYXkgdGhlIGVmZmVjdGl2ZW5lc3Mgb2YgdGhlc2UgcmlnaHRzIGlzIGNoYWxsZW5nZWQsIGV2ZXJ5IGRheSwgbWFueSBvZiBvdXIgZmVsbG93IGNpdGl6ZW5zIGZpbmQgdGhhdCB1bml2ZXJzYWxpdHkgaXMgZnJhdWdodCB3aXRoIGV4Y2VwdGlvbnMsIGRpc3Bhcml0aWVzLCBkZWFkbG9jaywgdGhhdCB0aGUgc2l0dWF0aW9ucyBvciByaWdodHMgcHJvbWlzZWQgYXJlIG5vdCByZWFsIHJpZ2h0cywgYW5kIHRoZXkgZGlzY292ZXIgaXQgdG9vIGxhdGUsIHdoZW4gdGhlIGVtZXJnZW5jeSBpcyB0aGVyZSwgd2hlbiB0aGUgZGlzdHJlc3MgaXMgdGhlcmUsIHdoZW4gdGhleSBuZWVkIGEgZm91bmRhdGlvbiBvZiBzb2xpZGFyaXR5IG5hdGlvbmFsLCB0aGV5IHNvbWV0aW1lcyBmZWVsIGl0LCB0b28gb2Z0ZW4sIHRvIGhpZGUgdW5kZXIgdGhlaXIgZmVldC48XC9wPlxuPHA+V2UgbGl2ZSBpbiBhIGNvdW50cnkgd2hlcmUgdGhlIHJlcHVibGljYW4gcHJvbWlzZSBpcyBzbyBvZnRlbiBkaXNhcHBvaW50ZWQsIGJlY2F1c2Ugd2UgaGF2ZSBtYWludGFpbmVkIHRoZSBmb3JtYWwgcmlnaHRzIHdpdGhvdXQgd29ycnlpbmcgZW5vdWdoIHRvIG1ha2UgdGhlbSByZWFsIHJpZ2h0cyBmb3IgZXZlcnlvbmUsIGF0IHNjaG9vbCwgaW4gdGhlIHdvcmxkIG9mIHdvcmssIGluIHRoZSB3b3JsZCBvZiBoZWFsdGgsIHRoZSBGcmVuY2ggYXJlIHZpc2NlcmFsbHkgYXR0YWNoZWQgdG8gcmlnaHRzLCBidXQgdGhleSB0b28gb2Z0ZW4gcmVhbGl6ZSB0aGF0IGZvciBtYW55LCB0aGV5IGV4aXN0IG9ubHkgb24gcGFwZXIgYW5kIG1vcmUgaW4gZmFjdDsgdGhpcyBpcyB0aGUgRnJlbmNoIGluZGlnbmF0aW9uIGNvbnRlbXBvcmFyeS4gWWV0LCBhbmQgdGhpcyBpcyBhIHJlYWwgcGFyYWRveCwgd2UgYXJlIGRldm90aW5nIGFuIGV2ZXIgZ3JlYXRlciBzaGFyZSBvZiBvdXIgbmF0aW9uYWwgd2VhbHRoIHRvIHNvY2lhbCBwcm90ZWN0aW9uLiBTbywgeWVzLCB3ZSBjYW4gYmUgcHJvdWQgb2Ygb3VyIHN5c3RlbSBvZiBzb2NpYWwgcHJvdGVjdGlvbiwgaXQgaG9ub3JzIHVzLCBhbmQgaXQgaGFzLCBvdmVyIHRoZSBkZWNhZGVzLCByZXNwb25kZWQgdG8gdGhlc2UgaW5kaWduYXRpb25zLCB0aGUgc2FtZSB3aGljaCBJIGltbWVkaWF0ZWx5IGVjaG8sIGJ1dCBpdCB3b3VsZCBoYXZlLCBpbiBhIHdheSwgZGlzcGVuc2VkIGZyb20gYSBzdGlsbCBtb3JlIGRlbWFuZGluZyBlZmZvcnQsIHRoYXQgb2YgbG9va2luZyBhdCB0aGUgcmVhbGl0eSBvZiBvdXIgc29jaWV0eSBpbiB0aGUgZmFjZSwgdGhlIGVmZmVjdGl2ZW5lc3Mgb2YgZWFjaCBvZiB0aGUgcmlnaHRzLCB0aGUgZm9sZHMgb2Ygc29jaWV0eSwgdGhlIG9ic2N1cmUsIGN1cnNlZCBwYXJ0cyB3aGVyZSB0aGVzZSBwcm9taXNlZCByaWdodHMgYXJlIGxvc3QsIHdoZXJlIHRoZXNlIGZvcm1hbCByaWdodHMgYXJlIG5vIGxvbmdlciByZWFsaXR5LiBBIHNvY2lldHkgdGhhdCBpcyBpbmNyZWFzaW5nbHkgc2VjcmV0aXZlIG9mIGRlc3RpbnksIG9mIGNvdXJzZSwgb2Ygb3Bwb3J0dW5pdGllcywgYSBzb2NpZXR5IHRoYXQgZXhjbHVkZXMgdGhlIHBvc3NpYmlsaXR5IG9mIHJlY291cnNlIHRvIGVudGlyZSBzZWN0aW9ucyBvZiBvdXIgcG9wdWxhdGlvbiwgYSBzb2NpZXR5IHRoYXQgY2FuIG5vdCBvbmx5IHJlZGVlbSB0aGlzIHBvbGl0aWNhbCBhbmQgbW9yYWwgYmFua3J1cHRjeSBieSBtb25ldGFyeSByZWRpc3RyaWJ1dGlvbiwgbmVjZXNzYXJpbHkgYWx3YXlzIGluc3VmZmljaWVudC4gQW5kIHRoaXMgaXMgdGhlIG1pc3VuZGVyc3RhbmRpbmcgdGhhdCBJIHdvdWxkIGxpa2UgdG8gc3RhcnQgd2l0aCB0aGlzIG1vcm5pbmcgd2l0aCB5b3UsIEkgaGVhcmQgbWFueSBjb21tZW50YXRvcnMgc2F5ICZxdW90O2l0IHdpbGwgZ28gYmVmb3JlIHRoZSBtdXR1YWxzIGFuZCBpdCB3aWxsIG1ha2UgYSBncmVhdCBzb2NpYWwgdHVybmluZyBwb2ludC4mcXVvdDs8XC9wPlxuPHA+QnV0IEkmIzM5O20gZ29pbmcgdG8gdGVsbCB5b3UsIEkgZG8gbm90IGZlZWwgdGhhdCB3aGVuIHlvdSBnZXQgYmFjayBvbiB0aGUgZWNvbm9teSwgd2hlbiB5b3UgYWxsb3cgcGVvcGxlIHRvIHByb2R1Y2UgbW9yZSwgeW91JiMzOTtyZSBub3QgYWdhaW5zdCB0aGUgc29jaWFsIG1vZGVsLCB5b3UmIzM5O3JlIGFuIGV4YW1wbGUuIGFsaXZlLCBidXQgaXQgaXMgdG8gcHJvZHVjZSB0byByZWRpc3RyaWJ1dGUsIEkgZG8gbm90IGZlZWwgdGhhdCB3aGVuIHdlIG1ha2UgdGhlIHJlZm9ybXMgb2YgdGhlIHNjaG9vbCwgY29sbGVnZSwgaGlnaCBzY2hvb2wsIHVuaXZlcnNpdHkgbWFkZSBmb3IgYSBsaXR0bGUgb3ZlciBhIHllYXIsIHdlIHRoZSBlbmVteSBvZiBqdXN0aWNlLCBidXQgdGhlIHJvb3Qgb2YgdGhlIGV2aWwgaXMgYXR0YWNrZWQuIFRoZSBmYWN0IHRoYXQgd2UgaGF2ZSwgZm9yIGRlY2FkZXMsIGJlZW4gY29udGVudCB3aXRoIGZvcm1hbCByaWdodHMsIHN0cmljdGx5IG1vbmV0YXJ5IHJlZGlzdHJpYnV0aW9uLCBmb3JnZXR0aW5nIHRoZSBpbmVxdWFsaXRpZXMgb2YgZGVzdGlueSwgb3VyIHN5c3RlbSB0b2RheSBpcyBtb3JlIHVuZXF1YWwgdGhhbiAzMCB5ZWFycyBhZ28gb24gdGhlIGFjYWRlbWljIGxldmVsLCBvbiB0aGUgcGxhbiBmb3IgYWNjZXNzIHRvIHRoZSBtb3N0IHF1YWxpZmllZCBqb2JzLCBiZSBpdCB0aGUgY29tcGFueSBvciB0aGUgc2VuaW9yIGNpdmlsIHNlcnZpY2UsIG91ciBzeXN0ZW0gaXMgbW9yZSBkZXRlcm1pbmlzdGljIHRoYW4gaXQgd2FzIDMwIHllYXJzIGFnbywgaXQgaXMgYSByZWFsaXR5LiBBbmQgc28gdG8gdGFja2xlIHRoZSBpbmVxdWFsaXRpZXMgaXMgdG8gYXR0YWNrIHRoZWlyIHJvb3RzLCBpdCYjMzk7cyB3YW50aW5nIHRvIHNoYWtlIHVwIGEgc29jaWV0eSB0aGF0IGhhcyBiZWNvbWUgYSBzb2NpZXR5IG9mIHN0YXR1cywgaXQmIzM5O3Mgd2FudGluZyB0byByZWNvZ25pemUgdGhhdCBhbGwgdGhlc2UgY2hhbGxlbmdlcyBhcmUgbm90IGp1c3QgbW9uZXRhcnksIGl0JiMzOTtzIHdhbnRpbmcsIGluIGEgd2F5LCB0byByZWludmVudCAtIGJ1dCB5b3UmIzM5O2xsIGhpc3MgbWUgYXQgdGhlIGVuZCBpZiB5b3Ugd2lzaCwgYnV0IGxldCBtZSBmaW5pc2gsIGVzcGVjaWFsbHkgc2luY2UgSSBkbyBub3Qgc2VlIHlvdSAtIGFuZCBpdCYjMzk7cyBrbm93aW5nIGhvdyB0byByZWludmVudCBvdXIgd2VsZmFyZSBzdGF0ZSwgdGhpcyBvbmUgZG9lcyBub3Qgb2ZmZXIgVG9vIG9mdGVuIGFzIHRoZSBsYXN0IG5lY2Vzc2FyeSBzYWZldHkgbmV0LCB3aGljaCB3ZSB3aWxsIG1haW50YWluLCBidXQgaXQgZG9lcyBub3Qgc3VmZmljaWVudGx5IGd1YXJhbnRlZSB0aGUgY29uZGl0aW9ucyBvZiBhIGRpZ25pZmllZCBsaWZlLiBUaGF0JiMzOTtzIHRoZSBmaWdodCBJIHdhbnQgZm9yIHRoaXMgZml2ZS15ZWFyLCBkaWduaWZpZWQgbGlmZSEgQW5kIGEgZGlnbmlmaWVkIGxpZmUsIHRoYXQgZG9lcyBub3QgbWVhbiB0byBwcm9taXNlIHRvIHN0YXkgd2hlcmUgd2UgYXJlIGJvcm4sIGl0IGRvZXMgbm90IG1lYW4gdG8gcHJvbWlzZSB0byBzdGF5IHdoZXJlIHdlIGZlbGwsIGl0IG1lYW5zIHRvIGJlIGFibGUgdG8gY2hvb3NlIGF0IGFueSBtb21lbnQgd2hlcmUgd2UgY2FuIGhpcyBsaWZlLCBhbmQgdGhhdCBtZWFucyBoYXZpbmcgYSBzb2NpZXR5IHRoYXQgZ2l2ZXMgeW91IHRoZSBjb25kaXRpb25zIG9mIHRoYXQgZGlnbml0eS48XC9wPlxuPHA+V2UgaGF2ZSBpbmhlcml0ZWQgYSB3ZWxmYXJlIHN0YXRlIGZyb20gdGhlIDIwdGggY2VudHVyeSwgYW5kIHdlIG11c3Qgc3RyZW5ndGhlbiBpdCwgYnV0IHdlIG11c3QgYnVpbGQgYSB3ZWxmYXJlIHN0YXRlIGZvciBkaWduaXR5IGFuZCBlbWFuY2lwYXRpb24gZm9yIHRoZSAyMXN0IGNlbnR1cnksIGFuZCB3ZSBuZWVkIGEgY29sbGVjdGl2ZSBvcmdhbml6YXRpb24gb2YgZnJhdGVybml0eSwgd2hpY2ggZW5zdXJlcyB0aGUgZGlnbml0eSBvZiBldmVyeW9uZSwgdGhhdCBpcyBteSBtYWluIG9iamVjdGl2ZSwgaXQgaXMgdGhhdCBvZiB0aGUgU3RhdGUsIGJ1dCB5b3UgYXJlIHBlcmZlY3RseSByaWdodCwgaXQgY2FuIG5vdCBiZSBhbG9uZSwgaXQgaXMgdGhhdCBvZiBsb2NhbCBhdXRob3JpdGllcywgd2hpY2gsIGFsbCwgYXJlIGVuZ2FnZWQgaW4gdGhpcyBhY3Rpb24sIHJlZ2lvbnMsIGRlcGFydG1lbnRzLCBtZXRyb3BvbGlzZXMsIG11bmljaXBhbGl0aWVzIGlzIHRoZSB3b3JrIG9mIHRoZSBzb2NpYWwgcGFydG5lcnMgaW4gY29udGFjdCB3aXRoIHRoZSByZWFsLCB0aGUgc29jaWFsIGV2ZXJ5IGRheS4gQW5kIGl0IGlzIHRoYXQgb2YgYWxsIHRoZSBzb2NpYWwgYWN0b3JzIGFuZCB0aGVzZSBhY3RvcnMgYSBsaXR0bGUgcGFydGljdWxhciB5b3UgcmVjYWxsZWQgdGhlIGhpc3RvcnkgYW5kIHN0cmVuZ3RoIHRoYXQgYXJlIGluZGVlZCB0aGUgbXV0dWFsaXN0cywgYWN0b3JzIG9mIG5hdGlvbmFsIHNvbGlkYXJpdHksIGNvbW1pdHRlZCB0byB0aGlzIGNhdXNlIHdoaWNoLCB5b3UgaGF2ZSByZWNhbGxlZCwgYWxsIGF0IHRoZSBzYW1lIHRpbWUgcHJvdGVjdCBhbmQgYWN0LCBoYXZlIGJ1aWx0IHRocm91Z2ggdGhlIGNlbnR1cmllcyB0aGlzIGFiaWxpdHkgdG8gcHJvdmlkZSBhbnN3ZXJzIGluIHRlcm1zIG9mIHByb3RlY3Rpb24sIGJ1dCBhbHNvIHRvIGFjdCBvbiB0aGUgZ3JvdW5kLCB0byBvZmZlciBjYXJlLCBhdHRlbnRpb24sIGFuZCBJIHdpbGwgbm90IGZvcmdldCwgaW4gb3RoZXIgdGltZXMsIHRoZSBob3VycyBzcGVudCBub3QgZmFyIGZyb20gTG9yaWVudCwgdG8gS2VycGFwZSwgc2VlaW5nIHRoZSB3b3JrIHRoYXQgaGFkIGJlZW4gZG9uZSBhbmQgdGhlIGV4Y2VsbGVuY2Ugb2YgdGhpcyBvbmUuIEJ1dCBpdCBpcyBhbHNvIHRoZSBjb21taXRtZW50LCB0aGUgdGltZSBnaXZlbiBvbiBhIHZvbHVudGFyeSBiYXNpcyBpbiBjb3VuY2lscyBhbmQgaW4gdGhlIGFjdGlvbiBvbiB0aGUgZ3JvdW5kIHRvIGNoYW5nZS4gSXQgaXMgdGhlIHBhcnRpY2lwYXRpb24gb2YgeW91ciBtb3ZlbWVudCBpbiB0aGUgUmVwdWJsaWNhbiBwcm9qZWN0IHRoYXQgd2lsbCBhbGxvdywgd2l0aCBhbGwgdGhlIGFjdG9ycyB0aGF0IEkgaGF2ZSBtZW50aW9uZWQsIHRoaXMgcmFkaWNhbCByZWZvdW5kYXRpb24gdGhhdCB3ZSBuZWVkIHRvZGF5LiBPdXIgY2hvaWNlIGlzIHNpbXBsZSwgaXQgaXMgdGhlIGNob2ljZSBiZXR3ZWVuLCBpbiBhIHdheSwgdHdvIGxveWFsdGllcywgdGhhdCBpcywgd2UgcmVtYWluIGZhaXRoZnVsIHRvIGEgc3lzdGVtIHRoYXQgbm8gbG9uZ2VyIG1lZXRzIHRoZSBvYmplY3RpdmVzIG9mIHNvY2lhbCBqdXN0aWNlIHRoYXQgaXQgaGFkIG9yaWdpbmFsbHkgYXNzaWduZWQsIGFuZCB3aGljaCBkb2VzIG5vdCBpcywgbW9yZW92ZXIsIG1vcmUgaW4gbGluZSB3aXRoIHRoZSBleHBlY3RhdGlvbnMgb2Ygb3VyIGZlbGxvdyBjaXRpemVucyBhbmQgdGhlIGFjdG9ycyB3aG8gZG8gaXQuIEVpdGhlciB3ZSBjaG9vc2UgdG9nZXRoZXIgdG8gYmUgZmFpdGhmdWwgdG8gdGhlIHZhbHVlcyBcdTIwMGJcdTIwMGJ0aGF0IHVuaXRlIHVzLCB0byByZWludmVudCBhIHN5c3RlbSB0aGF0IG1ha2VzIHRoZSByaWdodHMgZWZmZWN0aXZlIGFuZCBjb25jcmV0ZSBmb3IgYWxsIG91ciBmZWxsb3cgY2l0aXplbnMuIEl0IGlzIHRoaXMgc2Vjb25kIHdheSB3aXRoIHlvdSB0aGF0IEkgd2lsbCBjaG9vc2UsIGl0IGlzIG1vcmUgZGlmZmljdWx0LCBpdCBwcm9iYWJseSB0YWtlcyBtb3JlIHRpbWUsIGl0IGlzIG5vdCBzZXR0bGVkIHNpbXBseSBieSBidWRnZXQgcHJvbWlzZXMgb3IgY29tbWl0bWVudHMgdGhhdCB3aWxsIGJlIGhlbGQgbGF0ZS4gSXQgaW1wbGllcyBvdXIgaW1tZWRpYXRlIGFjdGlvbiBhbmQgaXQgaW52aXRlcyB1cyBjb2xsZWN0aXZlbHkgdG8gZ2l2ZSBpbiB0byBuZWl0aGVyIGN5bmljaXNtIG5vciBoeXBvY3Jpc3kuIFRoZSBtb3N0IHByZWNpb3VzIHBhcnQgb2Ygb3VyIHNvY2lhbCBzeXN0ZW0gaXMgdGhlIHNwaXJpdCB0aGF0IGdpdmVzIGl0IGJpcnRoLiBJdCBpcyB0aGlzIHZpc2lvbmFyeSBzb2xpZGFyaXR5IG9mIHRoZSBtZW1iZXJzIG9mIHRoZSBOYXRpb25hbCBDb3VuY2lsIG9mIFJlc2lzdGFuY2Ugd2hvIGludmVudGVkIHRoZSBzeXN0ZW0gdGhhdCBpcyBwZXJmZWN0bHkgc3VpdGVkIHRvIGEgYnJ1aXNlZCBwZW9wbGUgYW5kIGEgbmF0aW9uIHVuZGVyZ29pbmcgcmVjb25zdHJ1Y3Rpb24uIE91ciBtaXNzaW9uIGlzIHRvIHJlY29ubmVjdCB3aXRoIHRoaXMgc3Bpcml0LCBub3QgdG8gYmUgYWZyYWlkIG9mIGNoYW5nZSwgYmVjYXVzZSBzb2NpZXR5IGhhcyBjaGFuZ2VkLCBhbmQgbm90IHRvIG1ha2UgdXMgdGhlIHZlc3RhbHMgb2YgYSBzb2NpYWwgb3JkZXIgdGhhdCwgZm9yIDI1IHllYXJzLCB0aGUgZXZvbHV0aW9uIG9mIHRoZSB3b3JsZCwgbW9yYWxzLCBzb2NpZXR5IGhhcyBjb21lIHRvIHNoYWtlIGl0cyBmb3VuZGF0aW9ucyBhbmQgd2hvc2UgZWZmZWN0aXZlbmVzcyBpdCBoYXMgY29tZSB0byB1bmRlcm1pbmUuIFdlIHRvbyBjb3VsZCwgYWZ0ZXIgc28gbWFueSBvdGhlcnMsIHlpZWxkIHRvIHRoZSB3b3JzaGlwIG9mIHRvdGVtcywgYnV0IEkgd291bGQgYWx3YXlzIHByZWZlciBlZmZlY3RpdmUgc29jaWFsIGp1c3RpY2UgdG8gaW5jYW50YXRpb25zLCBhbmQgZWZmaWNpZW5jeSB0byBmZXRpc2hpc20uIFRoYXQgaXMgd2h5LCB3aGF0IHdlIG11c3QgZG8gaW4gdGVybXMgb2YgbmF0aW9uYWwgc29saWRhcml0eSwgaXMgYSBwcm9mb3VuZCByZXZvbHV0aW9uIHRoYXQgZ2l2ZXMgdGhlIEZyZW5jaCB0aGVpciByaWdodHMsIHRoZWlyIGRpZ25pdHksIHRoZWlyIGhvcGUsIGFuZCBJIHdpbGwgc3VtbWFyaXplIGl0IGFyb3VuZCB0aHJlZSBwcmluY2lwbGVzOiBwcmV2ZW50aW9uLCB3aGljaCBhdHRhY2tzIHRoZSBpbmVxdWFsaXRpZXMgYmVmb3JlIGl0IGlzIHRvbyBsYXRlLCBiZWNhdXNlIGl0IGlzIGJvdGggbW9yZSBlZmZpY2llbnQgYW5kIG1vcmUganVzdCwgdW5pdmVyc2FsaXR5LCB3aGljaCBnaXZlcyB0aGUgc2FtZSByaWdodHMgdG8gZXZlcnlvbmUsIGluIGEgdHJhbnNwYXJlbnQgd2F5LCBiZWNhdXNlIGl0IGlzIHRoZSBvbmx5IHdheSB0byByZWJ1aWxkIHRydXN0IGluIG91ciBzeXN0ZW0sIGRpZ25pdHkgdGhyb3VnaCBoZWxwLCBhY2NvbXBhbmltZW50LCBwcmVzZW5jZSwgd29yayBhcyB0aGUga2V5IHRvIGVtYW5jaXBhdGlvbiBmb3IgYWxsIHdobyBjYW4gYWNjZXNzIGl0LCBiZWNhdXNlIHRoYXQgaXMgd2hhdCBhbGxvd3MgZXZlcnlvbmUgdG8gdHJ1bHkgYnVpbGQgeW91ciBsaWZlLiBUaGUgc29sdXRpb24gaXMgbm90IHRvIHNwZW5kIG1vcmUgbW9uZXkgb3IgdG8gY29uc2lkZXIgdGhhdCB0aGVyZSB3b3VsZCBiZSwgb24gdGhlIG9uZSBoYW5kLCB0aG9zZSB3aG8gYmVsaWV2ZSBpbiBzb2NpYWwgdHJhbnNmb3JtYXRpb24gYW5kIHdobyB3b3VsZCBhbGlnbiBsaW5lcyBvZiBjcmVkaXQsIGFuZCB0aG9zZSB3aG8gZG8gbm90IGJlbGlldmUgaXQuIGFuZCB0aGF0IHdvdWxkIG5lY2Vzc2FyaWx5IGJlIHRvIHJlZHVjZSB0aGUgZXhwZW5zZXMuIEZpcnN0LCBiYWQgbmV3cywgc29jaWFsIGV4cGVuc2VzLCB5b3UgcGF5IHRoZW0sIHdlIHBheSB0aGVtLCBhbmQgdG9vIG9mdGVuLCBpbiBvdXIgY291bnRyeSwgd2UgY29uc2lkZXIgdGhhdCB3aGVuIGl0IGlzIHRoZSBTdGF0ZSwgaXQgd291bGQgYmUgdGhlIG90aGVyLCBpdCBpcyB1cywgZXZlbiB3b3JzZSwgaXQgbWF5IGJlIG91ciBjaGlsZHJlbiwgd2hlbiB0aGUgYWNjdW11bGF0ZWQgZGVmaWNpdCBiZWNvbWVzIGRlYnQuPFwvcD5cbjxwPlRoZSBxdWVzdGlvbiBpcyB0byBsb29rIGl0IGluIHRoZSBmYWNlIHRocmVlIG1ham9yIGNoYWxsZW5nZXMgb24gd2hpY2ggSSB3b3VsZCBsaWtlIHRvIGNvbWUgYmFjaywgbWUgZW50ZXJpbmcgaW4gc29tZSB3YXkgaW50byB5b3VyIHN0ZXBzLCBhbmQgdHJ5IG9uIHRoZSBiYXNpcyBvZiB0aHJlZSBwcmluY2lwbGVzLCB3aGljaCBJIGhhdmUganVzdCBtZW50aW9uZWQsIHRvIHByb3ZpZGUgc29tZSBhbnN3ZXJzLCB0aGUgaGVhbHRoLCBhZ2UgYW5kIGV4Y2x1c2lvbi4gSGVhbHRoLCB0aGluZ3MgaGF2ZSBiZWVuIHByb2ZvdW5kbHkgY2hhbmdlZCBkdXJpbmcgdGhlIGRlY2FkZXMgdGhhdCBoYXZlIGdvbmUgYnksIG91ciBzeXN0ZW0gaXMgaW4gY3Jpc2lzLCBidXQgaXQgaXMgbm90IHllc3RlcmRheSwgdGhlIGltcGF0aWVuY2UgaXMgdGhlcmUsIGFuZCBpdCBpcyBsZWdpdGltYXRlLCB0aGUgc3VmZmVyaW5nIG9uIGEgZGFpbHkgYmFzaXMgZm9yIHdvbWVuIGFuZCBtZW4gd2hvIGV2ZXJ5IGRheSBjYXJlIGZvciB0aG9zZSB3aG8gY2Fubm90IHdhaXQsIHRob3NlIHdobyBzdWZmZXIgYW5kIHRob3NlIHdobyBjYWxsIGZvciBhbiBpbW1lZGlhdGUgcmVzcG9uc2UuIEFuZCBpZiB3ZSBsb29rIGluIHRoZSBmYWNlIG9mIG91ciBoZWFsdGggc3lzdGVtLCBpdCBoZWFscyB3ZWxsLCBhbmQgd2Ugc2hvdWxkIGJlIHByb3VkIG9mLCBpdCBpcyBlZmZlY3RpdmUgd2hlbiBjb21wYXJlZCB0byBvdGhlciBsYXJnZSBzeXN0ZW1zLCBidXQgaXQgcHJldmVudHMgcG9vcmx5LCBtdWNoIGxlc3Mgd2VsbCB0aGFuIHRoZSBvdGhlcnMsIGl0IGlzIHdpdGhvdXQgYSBkb3VidCBoaXMgZmlyc3QgZmVhdHVyZSwgaG93ZXZlciwgaWYgd2UgcHJldmVudCBldmlsLCB3ZSBsZXQgb3VyIGZlbGxvdyBjaXRpemVucyBnbyB0byBwYXRob2xvZ2llcyB3aGljaCBhcmUgaGVhdmllciBhbmQgdGhlcmVmb3JlIG1vcmUgZXhwZW5zaXZlLCBzb21ldGltZXMgb3V0IG9mIHRoZSBjb21wYW55LiBIYXZpbmcgYSBzeXN0ZW0gdGhhdCBwcmV2ZW50cyBiZXR0ZXIgaXMgYXQgb25jZSBiZXR0ZXIgb24gdGhlIHBsYW4gb2YgdGhlIGNvbGxlY3RpdmUgaGVhbHRoIGFuZCBvZiB0aGUgZWZmZWN0aXZlbmVzcyBvZiBvdXIgc3lzdGVtLiBJdCBpcyB0aGlzIHBvbGljeSwgY2FycmllZCBvdXQgc2luY2Ugc2V2ZXJhbCB5ZWFycyBieSBvdXIgcHJlZGVjZXNzb3JzLCBjb250aW51ZWQgYW5kIGludGVuc2lmaWVkIGJ5IHRoZSBnb3Zlcm5tZW50LCBmb3IgZXhhbXBsZSwgaW4gdGhlIGZpZWxkIG9mIHRvYmFjY28sIGlzIGluIHRoZSBwcm9jZXNzIG9mIHBlcm1pdHRpbmcsIHdpdGggdGhlIGZpcnN0IHJlc3VsdHMgd2hpY2gsIGdyYWR1YWxseSwgd2lsbCBnaXZlIGluIHRoZSB0aW1lIG9mIHRoZWlyIGVmZmVjdGl2ZW5lc3MgPFwvcD5cbjxwPlRoZSBzZWNvbmQgY2hhbGxlbmdlIHdlIGZhY2UgaXMgdGhhdCBvZiBhZ2UsIHlvdSBoYXZlIC0gYW5kIEkgd2lsbCBub3QgcmV0dXJuIC0gcGVyZmVjdGx5IGRlc2NyaWJlZCBvbmUgb2Ygb3VyIGNvbGxlY3RpdmUgc3VjY2Vzc2VzLCB0aGUgc3VjY2VzcyBvZiBvdXIgZWNvbm9taWVzIGFuZCBkZXZlbG9wZWQgc29jaWV0aWVzLCB3ZSBsaXZlIG1vcmUgb2xkLCBhbmQgd2UgYWxzbyBsaXZlIG9sZGVyIGluIGdvb2QgaGVhbHRoLiBUaGlzIG9idmlvdXNseSByYWlzZXMgc2V2ZXJhbCBxdWVzdGlvbnMgZm9yIG91ciBjb2xsZWN0aXZlIG9yZ2FuaXphdGlvbiB0aGF0IHNob3VsZCBub3QgYmUgaWdub3JlZCwgdGhlIHBlbnNpb24gc3lzdGVtIGNhbiBiZSB0b3RhbGx5IHVuY2hhbmdlZCBpbiBhIHNvY2lldHkgdGhhdCBjb250aW51ZXMgdG8gYWdlIGFuZCB3aGVyZSB0aGUgbGlmZSBleHBlY3RhbmN5IC0gYW5kIHdlIG11c3QgcmVqb2ljZSAtIGluIHRoZSB0aW1lIGFmdGVyIHRoZSBhY3RpdmUgbGlmZSwgYXMgd2UgaGF2ZSB0aG91Z2h0IHVudGlsIHRoZW4sIGxlbmd0aGVucywgd2hlcmUgYWxzbyB0aGUgdGltZSBvZiB0aGUgc3R1ZGllcyBsZW5ndGhlbmVkIGJlZm9yZSB0aGUgYWN0aXZlIGxpZmUuIFRoZSBjaHJvbm9sb2d5IG9mIG91ciBsaXZlcyBpcyBubyBsb25nZXIgdGhhdCBvZiAyMCBvciAzMCB5ZWFycyBhZ28sIHRoZSB0aW1lIG9mIHN0dWRpZXMgaGFzIGdyb3duLCB0aGUgdGltZSBmb3IgcmVsZWFybmluZyB0aHJvdWdob3V0IGxpZmUgaXMgdGFraW5nIGhvbGQsIGFuZCB0aGUgZHVyYXRpb24gcmV0aXJlbWVudCBpcyBnZXR0aW5nIGxvbmdlciB0b28uIEhvd2V2ZXIsIHdlIHNwZW5kIGEgbG90IG9uIG91ciBwZW5zaW9uIHN5c3RlbSwgb2Z0ZW4gbW9yZSB0aGFuIG91ciBuZWlnaGJvcnMsIGJ1dCB3ZSBoYXZlIG5vdCwgZGVzcGl0ZSBhbGwgdGhlIHJlZm9ybXMgb2Ygb3VyIHByZWRlY2Vzc29ycywgZmFpbGVkIHRvIGZ1bGx5IGltcGxlbWVudCB0aGUgdmlhYmlsaXR5IG9mIHRoaXMgc3lzdGVtIGluIHRoZSBsb25nIHRlcm0sIGFuZCBtb3N0IGltcG9ydGFudGx5LCBmYWlsZWQgdG8gcmVidWlsZCB0aGUgY29uZmlkZW5jZSBvZiBvdXIgZmVsbG93IGNpdGl6ZW5zIG92ZXIgdGltZS4gQSB2ZXJ5IGxhcmdlIG1ham9yaXR5IG9mIHlvdW5nIHBlb3BsZSB3aG8gYXJlIGVudGVyaW5nIHRoZSBsYWJvciBtYXJrZXQgdGhpbmsgdGhhdCB0aGV5IHdpbGwgbm90IGhhdmUgYSBwZW5zaW9uLCB0aGF0IHRoZWlyIHJldGlyZW1lbnQgd2lsbCBub3QgYmUgZW5zdXJlZCBieSBhIHN5c3RlbSBvZiBpbnRlcmdlbmVyYXRpb25hbCBzb2xpZGFyaXR5LCB0aGlzIHN5c3RlbSBvZiByZWRpc3RyaWJ1dGlvbiB0aGF0IEkgaG9sZCBhbmQgd2hpY2ggd2lsbCBiZSBtYWludGFpbmVkIGJlY2F1c2UgbWlzdHJ1c3QgaGFzIGVzdGFibGlzaGVkIGl0c2VsZiwgZGlzdHJ1c3QgaGFzIGFsc28gc2V0IGluIGJlY2F1c2Ugd2UgaGF2ZSA0MiByZWdpbWVzLCB3aGljaCwgYnkgc2VkaW1lbnRhdGlvbiwgaGF2ZSBjb25zdHJ1Y3RlZCB0aGUgc21hbGwgZGlmZmVyZW5jZXMsIGFuZCB3aXRoIHRoZW0sIHRoZSBzbWFsbCBpbmVxdWFsaXRpZXMgd2hpY2ggbWF5IGhhdmUgYmVlbiBqdXN0aWZpZWQsIGJ1dCBkbyB0aGV5IHN0aWxsIGhhdmUgaXQ/IE1vc3Qgb2YgdGhlIHRpbWUsIG5vLiBCZWNhdXNlIHRoZXkgaGF2ZSByZXNwb25kZWQgdG8gYSBzdGF0dXMgc29jaWV0eSwgYnV0IHRoZXkgbm8gbG9uZ2VyIGNvcnJlc3BvbmQgdG8gY29udGVtcG9yYXJ5IGNoYWxsZW5nZXMuIEFzIHlvdSBzYWlkLCB0aGVyZSBhcmUgc3RpbGwgcmVhbCBpbmVxdWFsaXRpZXMgaW4gb2xkIGFnZSwgYnV0IG9mdGVuIHRoZXkgZG8gbm90IGZpdCB3aXRoIHRoZSBzdGF0dXRlcyBvciB0aGUgcGVuc2lvbiBwbGFucywgYmVjYXVzZSB0aGV5IGNvcnJlc3BvbmQgdG8gcXVpdGUgcGFydGljdWxhciwgaW5kaXZpZHVhbCBzaXR1YXRpb25zLCByZWxhdGVkIHRvIHRoZSBhY2NpZGVudHMgb2YgbGlmZSwgdG8gdGhlIGV4cG9zdXJlIHRvIGNlcnRhaW4gcmlza3MgdGhhdCBldmVyeW9uZSBoYXMga25vd24sIGFuZCBub3QgdG8gdGhlIHN0YXR1cyBoZSBoYXMgbWFycmllZCBhdCBhIHRpbWUgaW4gaGlzIGxpZmUgYW5kIHdoaWNoIGhlIHdpbGwgY2hhbmdlIGZvciB0aGUgZ2VuZXJhdGlvbiB0aGF0IGNvbWVzIHRvIGxpZmUgdG9kYXkgYWN0aXZlLiBBbmQgc28gdGhpcyBzeXN0ZW0sIHdoaWNoIGhhcyBncmFkdWFsbHkgYmVlbiBkZXNpZ25lZCBvdmVyIHRpbWUgYW5kIHdoaWNoIHJlc3BvbmRzIHRvIHRoZSBjaGFsbGVuZ2VzIG9mIGEgcG9zdC13YXIsIGluZHVzdHJpYWwsIGxvbmctY3ljbGUgc29jaWV0eSwgaXMgbm8gbG9uZ2VyIHN1aXRhYmxlIGZvciBhbiBhZ2luZyBzb2NpZXR5LCB3aGVyZSB0aGUgY291cnNlcyBhcmUgbW9yZSBhbmQgbW9yZSBodXJkbGVzLCB3aGVyZSB0aGUgY291cnNlcyBhcmUgbW9yZSBhbmQgbW9yZSBpbmRpdmlkdWFsaXplZCwgYW5kIHdoZXJlIHRoZSBpbmVxdWFsaXRpZXMgaGF2ZSBiZWNvbWUgc3RhdHV0b3J5LiBBbmQgb3VyIGFiaWxpdHkgdG8gcmVzcG9uZCB0byBpdCB3aWxsIGJlIHRoZSBjb25kaXRpb24gb2YgY29sbGVjdGl2ZSB0cnVzdCBpbiB0aGUgc3lzdGVtLjxcL3A+XG48cD5CdXQgdGhlIGFnaW5nIG9mIG91ciBwb3B1bGF0aW9uIHJhaXNlcyBhIHNlY29uZCBjaGFsbGVuZ2UsIGFzIHlvdSByaWdodGx5IHBvaW50ZWQgb3V0LCB0aGF0IG9mIG9sZCBhZ2UsIG9mIGRlcGVuZGVuY2UsIGEgc3ViamVjdCB3aGljaCBhdCB0aGUgc2FtZSB0aW1lIHVwc2V0cyB1cywgYW5kIHdoaWNoIG1hbnkgb2YgdXMgd291bGQgbGlrZSB0byBob2xkIG9uIHRvLiBhd2F5LCBvdXIgc29jaWV0eSBkb2VzIG5vdCB3YW50IHRvIHNlZSBhdCB0aGUgc2FtZSB0aW1lIHRoZSBncmVhdCB2dWxuZXJhYmlsaXR5LCBidXQgYWxzbyB0aGUgcGxhY2Ugb2YgZGVhdGggd2hpY2gsIGF0IGEgbW9tZW50IG9mIHRoaXMgcGF0aCwgYXJyaXZlcy4gVGhhdCBzYWlkIGEgbG90IG9mIHVzLCBhbmQgSSB3aWxsIG5vdCBkd2VsbCBvbiB0aGlzIHBvaW50IHRvZGF5LCBJIHdvdWxkIGJlIHRvbyBsb25nLCBidXQgdGhlIGFkZGljdGlvbiBpcyB0aGVyZSwgYW5kIHRoaXMgbmV3IHZ1bG5lcmFibGUgYWdlIG9mIGxpZmUgaXMgc2V0dGxpbmcgZG93bi4gVG8gbm90IHNlZSBpdCBvciB0byBjb25zaWRlciB0aGF0IGl0IHdvdWxkIGJlIHRoZSBidXNpbmVzcyBvZiBhIGZldywgaXMgbm90IHRvIHRyZWF0IG91cnNlbHZlcyB3aXRoIGRpZ25pdHksIGl0IGlzIG5vdCB0byB0cmVhdCB3aXRoIGRpZ25pdHkgd29tZW4gYW5kIG1lbiB3aG8sIG9uY2UgYWdhaW4sIGhhdmUgdGhlIHJlc3BvbnNpYmlsaXR5IHRoZSBkYWlseSBsaXZlcyBvZiB3b21lbiBhbmQgbWVuIHdobyBzb21ldGltZXMgbGl2ZSB0aGVpciBsYXN0IGhvdXJzLCB0aGVpciBsYXN0IHdlZWtzLCBhbmQgb2Ygd2hpY2ggdGhleSwgdGhvc2Ugd2hvIGNhcmUgZm9yIHRoZW0sIG9mdGVuIHRoZSBsYXN0IGZhbWlseS4gT3VyIGluYWJpbGl0eSB0b2RheSB0byByZXNwb25kIHRvIHRoaXMgY2hhbGxlbmdlIGhhcyBidWlsdCBzb2NpYWwgc3VmZmVyaW5nIGluIGxvbmctdGVybSBjYXJlIGhvbWVzLCBpbiBkZXBlbmRlbnQgcGVyc29ucyBvciBmb3IgdGhlaXIgZmFtaWxpZXMsIHdlIG11c3QgZmFjZSB0aGlzLCBpdCBpcyBhIGNvbGxlY3RpdmUgZmFpbHVyZSwgYW5kIEkgd2VhciBpdCBmcm9tIHdoZXJlIEkgYW0gd2l0aCB0aGUgc29sZW1uaXR5IHRoYXQgbXVzdCBiZSBtaW5lLiBXZSB3aWxsIG5vdCBzb2x2ZSBpdCBvdmVybmlnaHQsIGJ1dCB3ZSBtdXN0IGZhY2UgdGhpcyBjaGFuZ2luZyBzb2NpZXR5LCB1bmRlcnN0YW5kIGl0IGFuZCBjb25zaWRlciB0aGF0IG91ciByZXNwb25zZSBpcyBub3QgYXQgdGhlIHJpZ2h0IGhlaWdodCBpbiB0ZXJtcyBvZiBjb2xsZWN0aXZlIHNvbGlkYXJpdHkgYW5kIHRoYXQsIGJlY2F1c2Ugb3VyIGZlbGxvdyBjaXRpemVucyBvbGRlciBwZW9wbGUgYXJlIHJldHVybmluZyB0byBudXJzaW5nIGhvbWVzIG9yIGluc3RpdHV0aW9ucywgdGhleSBhbHNvIG5lZWQgbW9yZSBhbmQgbW9yZSBlYXJseSBjYXJlLCBhbmQgdGhhdCB0aGVzZSBlc3RhYmxpc2htZW50cyB0aGF0IHdlcmUgY3JlYXRlZCB0byBhY2NvbXBhbnkgYSBtb21lbnQgaW4gbGlmZSwgd2hlcmUgb3IgY291bGQgbm90IHN0YXkgaW4gdGhlIGZhbWlseSwgYXJlIGNoYW5naW5nIGFuZCBiZWNvbWUgcGxhY2VzIHdoZXJlIHdlIGFsc28gbmVlZCBhIGNhcmUgdG8gd2VhciwgYSBtZWRpY2FsaXphdGlvbiB0aGF0IGRvZXMgbm90IGV4aXN0IGV2ZXJ5d2hlcmUgb3Igbm90IGVub3VnaCwgYW5kIHRoZXJlZm9yZSBmb3Igd2hpY2ggb3VyIHJlc3BvbnNlIG11c3QgYmUgZGlmZmVyZW50IGFuZCBvbiB3aGljaCB3ZSBtdXN0IHRoaW5rIGEgY29sbGVjdGl2ZSByZW9yZ2FuaXphdGlvbi48XC9wPlxuPHA+VGhlIHRoaXJkIGNoYWxsZW5nZSBmYWNpbmcgdXMgaXMgdGhhdCBvZiBleGNsdXNpb24sIGlmIHdlIGRvIG5vdCBsb29rIGF0IG91ciBwb29yZXN0IGZlbGxvdyBjaXRpemVucywgaWYgd2UgZG8gbm90IGxvb2sgYXQgdGhpcyBwYXJ0IG9mIHNvY2lldHkgd2hpY2ggbmF0aW9uIGFyZSB3ZT8gSSBoYXZlIG9mdGVuIGJlZW4gY3JpdGljaXplZCBmb3IgYmVpbmcgb25seSBmb3IgbWV0cm9wb2xpc2VzLCBzb3JyeSBmb3IgTW9udHBlbGxpZXIsIGZvciB0aGlzIEZyYW5jZSB0aGF0IHN1Y2NlZWRzLCB0aGF0IGZvciBncmVhdCBwZW9wbGUsIGV0Yy4sIHllcywgSSB3YW50IHRvIGVuY291cmFnZSB0aGVtIGJlY2F1c2UgaWYgdGhleSBjYW4gbm90IGRvIGl0IHRoZXJlIGlzIG5vIGNoYW5jZSB0aGF0IHRoZSByZXN0IG9mIHNvY2lldHkgY2FuIGdldCBhd2F5IHdpdGggaXQsIEkgY29uZmlybSBpdC4gQW5kIHNvIEkgd2FudCB0aG9zZSB3aG8gY2FuIHByb2R1Y2UsIHN1Y2NlZWQgaGlyaW5nLCBkbyBpdCBldmVuIG1vcmUsIGJlY2F1c2UgSSBsb29rIGV2ZXJ5d2hlcmUgYXJvdW5kIHVzLCBhbmQgcHV0dGluZyBhIGNhcCBvbiBzdWNjZXNzIGhhcyBuZXZlciBzb2x2ZWQgdGhlIHByb2JsZW0gb2YgZXhjbHVzaW9uIC4gQnV0IEkgc2F5IGl0LCBJIHJlcGVhdCBpdCBhbmQgSSB3aWxsIGNvbnRpbnVlIGl0IHRpcmVsZXNzbHkgdG8gZG8gaXQsIHdoZW4gdGhvc2Ugd2hvIHN1Y2NlZWQgZG8gbm90IHdhbnQgdG8gbG9vayBhdCB0aG9zZSB3aG8gYXJlIGxlZnQgYXQgdGhlIGVkZ2Ugb2YgdGhlIHJvYWQsIGluIHdoYXQgc29jaWV0eSBkbyB0aGV5IHdhbnQgdG8gbGl2ZT8gQXMgdGhleSB3YXRjaCB0aGUgZXh0cmVtZXMgbW91bnQgYXJvdW5kIHRoZW0sIHRoZSBoYXRlIHNwZWVjaCBpZ25pdGVzIGRlbW9jcmFjaWVzLiBJdCBpcyB0aGUgZnJ1aXQgb2Ygc2VsZmlzaG5lc3MgYW5kIGJsaW5kbmVzcy4gQW5kIHNvIHdlIG11c3QsIHdoaWxlIG1ha2luZyBvdXIgZWNvbm9teSBhIHN0cm9uZ2VyIGVjb25vbXksIG1vcmUgcHJvZHVjdGl2ZSwgd2hpbGUgYmVpbmcgdGhlIHByb3BvbmVudHMgb2YgaW5ub3ZhdGlvbiwgYSByZXZpdGFsaXplZCBlY29ub21pYyBmb3JjZSwgYWxzbyB3YW50IHRvIGFkZHJlc3MgdGhlIHByb2JsZW0gb2YgcG92ZXJ0eSBhbmQgcG92ZXJ0eS4gZXhjbHVzaW9uIGluIG91ciBzb2NpZXR5LiBBbmQgaGVyZSB0b28sIGxldCYjMzk7cyBmYWNlIHJlYWxpdHkuIFdlIGhhdmUgaW4gcmVjZW50IGRlY2FkZXMsIHNwZW50IG1vcmUgYW5kIG1vcmUgb24gdGhpcyB0b3BpYy4gQW5kIGRpZCB3ZSBzb2x2ZSB0aGUgcHJvYmxlbT8gTm8uIERpZCB3ZSB3YXJuIGhpbSBiZXR0ZXI/IE5vLiBIYXZlIHdlIGNoYW5nZWQgdGhlIHRyYWplY3RvcmllcywgYWxsb3dlZCBwZW9wbGUgdG8gZ2V0IG91dCBtb3JlPyBOby4gSGF2ZSB3ZSBiZXR0ZXIgYWNjb21wYW5pZWQ/IFJhcmVseS4gV2hlbiBJIGxvb2sgYXQgdGhlIGZpZ3VyZXMgdG9kYXksIHRoZSByZWFsaXR5IGlzIHRoYXQgd2UgaGF2ZSBtYW55IGRldmljZXMsIGJ1dCBjaGlsZHJlbiBib3JuIGluIHBvdmVydHkgYXJlIHN0aWxsIHRvbyBvZnRlbiBhbmQgZGV0ZXJtaW5pc20gaGFzIGJlY29tZSBlc3RhYmxpc2hlZC4gVG9kYXkgdGhlIGZhY2Ugb2YgcG92ZXJ0eSwgd2hhdCBpcyBpdD8gT25lIGluIGZpdmUgY2hpbGRyZW4sIG9uZSBpbiB0aHJlZSBzaW5nbGUgcGFyZW50IGZhbWlsaWVzLiBUaGlzIGlzIHRoZSBmYWNlIG9mIHBvdmVydHksIGl0IGlzIHBsdXJhbCwgaXQgaXMgZGl2ZXJzZSwgaXQgaXMgbm90IGEgYmlnIHdob2xlIGluIHdoaWNoIG9uZSBjb3VsZCBzb21laG93IGluY2x1ZGUgYSBzdGF0aWMgcGFydCBvZiB0aGUgc29jaWV0eSB0aGF0IGlzIG91cnMuIFdlIGhhdmUgY3JlYXRlZCBhIHN5c3RlbSB0aGF0IGhhcyBwcm9ncmVzc2l2ZWx5IGJlY29tZSB0aGUgZGVodW1hbml6ZWQgc3RhdGUuIEl0IHdhcyB0aG91Z2h0IHRoYXQgdGhlIGFuc3dlciB0byBleGNsdXNpb24gYW5kIHBvdmVydHkgd2FzIG1vbmV5LiBXZSBoYXZlLCBpbiB0aGUgbGFzdCB0ZW4geWVhcnMsIGluY3JlYXNlZCB0aGUgUlNBIGJ5IDgwJSwgYnV0IHdlIGhhdmUgcmVkdWNlZCBzdXBwb3J0IGJ5IDQwJSBpbiB0ZXJtcyBvZiBleHBlbmRpdHVyZS4gVGhpcyBmaWd1cmUgc2F5cyBpdCBhbGwuIFRvZGF5IHdlIGhhdmUgNTAlIG9mIHRob3NlIHdobyBhcmUgYXQgUlNBLCB3aG8gYWZ0ZXIgZm91ciA0IHllYXJzIGFyZSBzdGlsbCBhdCBSU0EuIFdlIGhhdmUgMzAlIG9mIHdvbWVuIGFuZCBtZW4gd2hvIGRvIG5vdCwgd2hvIGRvIG5vdCBnbyB0byB0aGUgYmVuZWZpdHMgdGhhdCBhcmUgcHJvbWlzZWQgdG8gdGhlbSwgYmVjYXVzZSB0aGV5IGFyZSB0b28gY29tcGxleCBvciBzdGlnbWF0aXppbmcsIGFuZCB0aGVyZWZvcmUgd2UgaGF2ZSBhIHN5c3RlbSB0aGF0IHByZXZlbnRzIGJhZGx5LCBzdGlnbWF0aXplcyBhbmQgaXMgdG9vIGNvbXBsZXgsIHdoaWNoIGlzIG5vdCB2ZXJ5IGh1bWFuZSBhbmQgd2hpY2ggZG9lcyBub3QgYWxsb3cgdGhvc2Ugd2hvIGZhbGwgaW50byBpdCwgd2hvIGZhbGwgaW50byB0aGVzZSBzaXR1YXRpb25zIG9mIGV4Y2x1c2lvbiBvciBwb3ZlcnR5LCB0byBnZXQgb3V0IG9mIGl0IGFzIHF1aWNrbHkgYXMgcG9zc2libGUsIHRvIGZpbmQgdGhlaXIgZnVsbCBwbGFjZSBpbiB0aGUgc29jaWV0eS4gQW5kIGhlcmUgdG9vIHdlIG11c3QsIHdpdGggYWxsIHRoZSBoYXJzaG5lc3Mgb2YgdGhlIHN0YXRlbWVudCBJIG1ha2UsIGFuZCBJIGRvIGl0IGZvciBteXNlbGYsIHRoaXMgb2JzZXJ2YXRpb24gSSBtYWtlIGZvciB1cywgSSBkbyBub3QgZG8gaXQgZm9yIHRob3NlIHdobyBhcmUgaW4gdGhlc2Ugc2l0dWF0aW9ucywgYmVjYXVzZSB0aGF0IHRoZXkgYXJlIHRoZSBmaXJzdCB2aWN0aW1zLCBiZWNhdXNlIG9uZSBkb2VzIG5vdCBjaG9vc2Ugb25lJiMzOTtzIHNpdHVhdGlvbiwgYnV0IGlmIHdlIGRvIG5vdCBmYWNlIHRoZSByZWFsaXR5IG9mIG91ciBvd24sIGFuZCB0aGUgZmFpbHVyZXMgb2Ygb3VyIGFjdGlvbiwgaG93IGNhbiB3ZSBhbnN3ZXIgaXQ/PFwvcD5cbjxwPk9uIHRoZXNlIHRocmVlIG1ham9yIGNoYWxsZW5nZXM6IGhlYWx0aCwgYWdpbmcgYW5kIGV4Y2x1c2lvbiwgd2UgYXJlIGhlcmUuIFNvLCB0aGUgc29sdXRpb24gaXMgdG8gdGFja2xlIGluIG15IGV5ZXMgdGhlIHByb2JsZW0gYXQgdGhlIHJvb3QsIHRoZSBkeXNmdW5jdGlvbnMgb2YgYSBzb2NpYWwgc3lzdGVtIHRvbyBmb2N1c2VkIG9uIHRoZSBhY3RvcnMgYW5kIG5vdCBlbm91Z2ggb24gb3VyIGNvbXBhdHJpb3RzLCB0byBoYXZlIG1vcmUgcHJldmVudGlvbiwgbW9yZSBzdXBwb3J0LCBtb3JlIG9mIGNvbGxlY3RpdmUgcmVzcG9uc2liaWxpdHkgb2YgZWFjaCBvZiB1cywgYW5kIHRyeSB0byBicmluZywgYnkgYSBwcm9mb3VuZCB0cmFuc2Zvcm1hdGlvbiB0aGF0IHdpbGwgdGFrZSB0aW1lLCB3aGljaCBpcyBwZXJoYXBzIGxlc3Mgc3RhZ2dlcmluZyB0aGFuIG1vbmV5IHB1dCBvbiB0aGUgdGFibGUsIGJ1dCBJIGFtIHN1cmUgbXVjaCBtb3JlIGVmZmljaWVudCwgYmVjYXVzZSBpdCB3aWxsIGdvIHdpdGggaW52ZXN0bWVudCBpbiBjZXJ0YWluIHB1YmxpYyBwb2xpY2llcywgYW5kIGluZGVlZCBvZiB0aGUgZXhwZW5zZSB0aGF0IHdlIHdpbGwgYXNzdW1lLCBidXQgYWxzbyBvZiB0aGUgdHJhbnNmb3JtYXRpb24gYW5kIHRoZSBzYXZpbmdzIHdoaWNoIHdpbGwgaGF2ZSB0byBrbm93IGhvdyB0byBtYWtlIG9uIHRoZSB1c2VsZXNzIHBhcnRzIG9mIHRoZSBleHBlbnNlcyB3aGljaCBJIGhhdmUganVzdCBkZXNjcmliZWQuPFwvcD5cbjxwPlRoaXMgY29sbGVjdGl2ZSB0cmFuc2Zvcm1hdGlvbiwgSSB3YW50IHVzIHRvIGxlYWQgaXQgdG9nZXRoZXIgb24gdGhlIHRocmVlIGNoYWxsZW5nZXMgSSBqdXN0IG1lbnRpb25lZC4gT24gaGVhbHRoIGZpcnN0IGFuZCBmb3JlbW9zdCwgd2UgcG9zdCBhIHRvdGFsIGRlcGVuZGVudCBidXJkZW4gb24gaGVhbHRoIGV4cGVuZGl0dXJlcyBvZiBhcm91bmQgOC41JS4gQnV0IHdoYXQgaXMgdGhlIHJlYWxpdHkgb2YgdGhpcyBzeXN0ZW0gZm9yIHRob3NlIHdobyBoYXZlIGEgbGl0dGxlIGxlc3MgbW9uZXksIGEgbGl0dGxlIGxlc3MgYWNjZXNzIHRvIHByYWN0aXRpb25lcnMsIGEgbGl0dGxlIGxlc3MgaGFiaXRzIGFsc28gdG8gY29uc3VsdCByZWd1bGFybHk/IEFuZCBvbiB0aGUgYmFzaWMgc2VydmljZXMgdGhhdCBtYWtlIGV2ZXJ5ZGF5IGxpZmUsIHdoYXQgaXMgdGhlIHJlYWxpdHkgb2YgdGhlIHN5c3RlbT8gSWYgd2Ugd2FudCBoaW0gdG8gYmV0dGVyIHdhcm4gYW5kIHRyZWF0IGJldHRlciBjbG9zZSB0byB0aGUgZmllbGQsIGFuZCBhcyBzb29uIGFzIHBvc3NpYmxlIHJlYWxpdGllcy4gVGhpcyBpcyB0aGUgcmVzdCBvZiB0aGUgY2hhcmdlIGZvciBkZW50YWwgcHJvc3RoZXNlcywgdG9kYXkgaXMgYW4gYXZlcmFnZSBvZiA0MyUsIHdoaWNoIG1lYW5zIG9uIGF2ZXJhZ2UgMjAwIFx1MjBhYyBmb3IgYSBjcm93biwgaXQgaXMgMjIlIG9uIG9wdGljcywgd2hpY2ggaXMgb24gYXZlcmFnZSwgZXZlbiBpZiB0aGUgZGlmZmVyZW5jZXMgYXJlIHZlcnkgaW1wb3J0YW50IGluIGhpcyBzZWN0b3IsIDY1IFx1MjBhYyBmb3IgdGhlIGNvcnJlY3Rpb24gb2YgbXlvcGlhLiBJdCBpcyA1MyUgb24gaGVhcmluZyBhaWRzLCB0aGF0IGlzIHRvIHNheSAxLDcwMCBcdTIwYWMgb24gYXZlcmFnZSwgdG8gYmUgZXF1aXBwZWQuIEkmIzM5O20gdGFsa2luZyBhYm91dCB0aGUgcmVzdCBvZiB0aGUgY2hhcmdlLiBEb2VzIHRoaXMgbWVhbiB0aGF0IG1hbnkgb2Ygb3VyIGZlbGxvdyBjaXRpemVucywgd2hvIGhhdmUgc2ltcGxlIHBhdGhvbG9naWVzLCBoYXZlIHRvIGdpdmUgdXAgdHJlYXRtZW50PyBCdXQgd2hhdCBkb2VzIHRoYXQgbWVhbiB2ZXJ5IGNvbmNyZXRlbHk/IEJlY2F1c2Ugd2UgcHV0IG91ciB3b3JkcyB0aGF0IGFyZSBzb21ldGltZXMgYSBiaXQgdGVjaG5pY2FsLiBUaGF0IG1lYW5zIHRoYXQgdGhlIHBvc3NpYmlsaXR5IG9mIHNtaWxpbmcsIHNlZWluZywgaGVhcmluZywgc29tZXRpbWVzIGVhdGluZyBub3JtYWxseSwgb3VyIGZlbGxvdyBjaXRpemVucywgd2hvIGJlY2F1c2Ugb2YgdGhlIHJlc3Qgb2YgdGhlIGNoYXJnZSBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0aGVzZSBwcm9zdGhlc2VzLCBhcmUgZGVwcml2ZWQuIFRoaXMgbWVhbnMgdGhhdCBiZWhpbmQgdGhlbSBhcmUgY2hpbGRyZW4gd2hvIGNhbiBub3QgcmVhZCBhdCBzY2hvb2wgYXMgdGhleSBzaG91bGQsIHNpbmNlIHRoZSBhYmlsaXR5IHRvIHdlYXIgZ2xhc3NlcyBpcyBvbmUgb2YgdGhlIG1haW4gY2F1c2VzIG9mIHBvb3IgbGVhcm5pbmcgYW5kIGxlYXJuaW5nLiBJbGxpdGVyYWN5IGF0IHRoZSBlbmQgb2YgcHJpbWFyeSBzY2hvb2wuIFRoaXMgbWVhbnMgdGhhdCBzb21lIG9mIG91ciBmZWxsb3cgY2l0aXplbnMsIHdobyBhcmUgZXhjbHVkZWQgZnJvbSB3b3JrLCBjYW4gbm90IGNvbWUgYmFjayB0byB3b3JrIGJlY2F1c2UgdGhleSBjYW4gbm90IGFmZm9yZCB0byBoZWFsIHRoZWlyIHRlZXRoIG9yIGJlY2F1c2UgdGhleSBjYW4gbm90IGFmZm9yZCB0byBmaXggdGhlaXIgdGVldGguIGEgaGVhcmluZyB0aGF0IGhhcyBiZWNvbWUgZGVmZWN0aXZlIG1lYW5zIHRoYXQgb3VyIG9sZGVyIGNpdGl6ZW5zLCB3aGVuIHRoZXkgYmVnaW4gdG8gbG9zZSBoZWFyaW5nIGFuZCBjYW4gbm90IGFmZm9yZCB0byBjb3JyZWN0IGl0LCB3aWxsIGZhbGwgbW9yZSBxdWlja2x5IGludG8gZGVwZW5kZW5jeS4gU29ycnkgdG8gYmUgY29uY3JldGUsIGJ1dCB0aGF0JiMzOTtzIGl0LiBBbmQgYmVoaW5kIHdoYXQgSSBkZXNjcmliZSBjb25jcmV0ZSBzaXR1YXRpb25zLCB3aGljaCBhcmUgbW9yZSBwcm9zYWljIHRoYW4gb3VyIHdvcmRzIHRoYXQgc29tZXRpbWVzIHByb3RlY3QgdGhlIHJlYWxpdHksIGl0IGlzIGVhY2ggdGltZSBpbmRpdmlkdWFsIGRyYW1hcywgaXQgaXMgdGhpcyBpbmVxdWFsaXR5IG9mIHRyYWplY3Rvcnkgb2Ygd2hpY2ggSSBzcG9rZSB0byB5b3UuIEl0IGRvZXMgbm90IHNlZW0gYW55dGhpbmcsIGJ1dCBhZnRlciBhIHdoaWxlLCBpdCBiZWNvbWVzIGlycmF0dHJhcGFibGUuIFNvIHllcywgd2UgbmVlZCB0byBpbnRlcnZlbmUgc29vbmVyLCBmYXN0ZXIsIG1vcmUgbWFzc2l2ZWx5LCBpdCYjMzk7cyB0aGUgYmVzdCB3YXkgdG8gZmlnaHQgYWdhaW5zdCBpbmVxdWFsaXRpZXMsIGFuZCB0aGF0JiMzOTtzIHdoYXQgd2UgZGlkLCB3aXRoIHRoZSByZXN0IGJlaW5nIHplcm8tbG9hZCBvciAxMDAlIGhlYWx0aC4gVGhlIHByb2ZvdW5kIHRyYW5zZm9ybWF0aW9uIHRoYXQgd2UgaGF2ZSB1bmRlcnRha2VuLCB3aWxsIGNlcnRhaW5seSBiZSBwcmVzZW50ZWQgZmlyc3QgaW4gaXRzIGZpbmFuY2lhbCBhc3BlY3QsIGl0IGlzIHJlYWwgYW5kIGl0IGlzIG9idmlvdXMgdGhhdCB0byBhbGxvdyBhbGwgdGhvc2Ugd2hvIGhpdGhlcnRvIGNvdWxkIG5vdCwgZm9yIG1vbmV0YXJ5IHJlYXNvbnMsIGJlbmVmaXQgZnJvbSBhdWRpdG9yeSwgZGVudGFsIG9yIGRlbnRhbCBjYXJlLiBvcHRpY3MgaXMgYW4gZXNzZW50aWFsIHNvY2lhbCBjb25xdWVzdCwgYW5kIGl0IGlzIGFuIGludmVzdG1lbnQgdGhhdCBJIGFzc3VtZSwgYW4gaW52ZXN0bWVudCB0aGF0IHdlIGFyZSBnb2luZyB0byBzaGFyZSB0b2dldGhlciwgYW5kIHdoaWNoIHdpbGwgbWFrZSBpdCBwb3NzaWJsZSB0byByZWR1Y2UgdGhpcyBidXJkZW4gdG8gemVyby48XC9wPlxuPHA+W0FycmVzdHMgb2YgdGhlIHJvb20gb24gbG93ZXIgdGF4ZXNdPFwvcD5cbjxwPlRIRSBDSEFJUlBFUlNPTjogU28sIGZvciBldmVyeW9uZSB0byBiZSBjbGVhciwgSSB0aGluayB0aGF0IHRoZSB0d28gYXJyZXN0cyBhcmUgY29udmVyZ2VudCwgaXQgaXMgdGhlIHByb3Bvc2FsIHRvIHJldHVybiB0byB0aGUgdGF4YXRpb24gb2YgdGhlIHNlY3RvciwgdG8gYWxsb3cgaXQgdG8gaW52ZXN0IG1vcmUuIEkgd2lsbCBiZSBwZXJmZWN0bHkgY2xlYXI6IHRoZSBhZ3JlZW1lbnQgYnVpbHQgdGhyb3VnaCB0aGUgaW52b2x2ZW1lbnQgb2YgYWxsLCBhbmQgSSByZWFsbHkgd2FudCB0byB0aGFuayB5b3UgZm9yIGl0IGFuZCB0aGUgd29yayBhbmQgY29tbWl0bWVudCBvZiB0aGUgbWluaXN0ZXIsIGlzIGluZGVwZW5kZW50IG9mIHRoZXNlIG1lYXN1cmVzLiBTbyBpZiB3ZSBnbyBpbiB0aGF0IGRpcmVjdGlvbiwgSSYjMzk7bGwgYXNrIHlvdSBtb3JlLCBidXQgSSYjMzk7bSByZWFkeSB0byBvcGVuIHRoYXQgZGlzY3Vzc2lvbi4gQnV0LCBJIHdvdWxkIG5vdCB3YW50IHVzIHRvIGJlIG1pc3VuZGVyc3Rvb2QgYmVjYXVzZSB0aGUgYWdyZWVtZW50IHJlYWNoZWQgaXMgbm90IHN1YmplY3QgdG8gYSByZWZvcm0gb2YgdGhlIHNlY3RvciYjMzk7cyB0YXhhdGlvbi4gTm93IEkgYW0gcmVhZHkgdG8gb3BlbiBhIGRpc2N1c3Npb24gb24gdGhlIHRheGF0aW9uIG9mIHRoZSBzZWN0b3IsIHNvIHRoYXQgdG9nZXRoZXIgd2UgY2FuIGRvIG1vcmUgYW5kIGJlIG1vcmUgZWZmZWN0aXZlIGluIHRoZSBlbmdhZ2VtZW50IG9mIHRoZSBzZWN0b3IuIEFuZCB0aGF0LCB5b3Ugd2lsbCBhbHdheXMgaGF2ZSB3aXRoIHlvdSBpZiBpdCBpcyBuZWNlc3NhcnkgdG8gZ28gaW4gYSBzeXN0ZW0gb2YgY29tbW9uIHNlbnNlIG9uIHdoaWNoIHlvdSBjYWxsIG1lLiBJJiMzOTttIGNvbWluZyBiYWNrLCBidXQgSSB3b3VsZCBub3Qgd2FudCB0aGlzIGltcHJvdmlzZWQgZGlhbG9ndWUgdG8gZ2V0IGluIHRoZSB3YXkgdGhhdCBJIHdhcyBkZW5vdW5jaW5nLCB3aGVyZSB0aGUgc3RhdGUgd291bGQgZGlzY3VzcyB3aXRoIHRoZSBtdXR1YWwgc2VjdG9yLCBmb3JnZXR0aW5nIHRoYXQgYmVoaW5kIGl0IGFyZSBvdXIgZmVsbG93IGNpdGl6ZW5zIGFuZCB0aGVpciBpbnRlcmVzdHMuPFwvcD5cbjxwPlNvIGJhY2sgdG8gb3VyIGRlbnR1cmVzLCBvcHRpY3MgYW5kIGhlYXJpbmcgYW5kIHRoZWlyIHJlaW1idXJzZW1lbnQuIFRoZSBsb2dpYyBiZWhpbmQgdGhpcyBmdW5kYW1lbnRhbCBhZHZhbmNlIGlzLCBhcyBJIHNhaWQsIGEgbW9uZXRhcnkgb25lLCBidXQgaXQgaXMgYmFzZWQgZmlyc3QgYW5kIGZvcmVtb3N0IG9uIGFuIGluY3JlYXNlZCB1c2Ugb2YgY2FyZS4gVGhpcyBpcyB0byBwcmV2ZW50IHRoYXQgdGhlIHBhdGhvbG9naWVzIGNvbmNlcm5lZCBiZWNvbWUgbW9yZSBzZXJpb3VzLCBtb3JlIGRpc2FibGluZywgYW5kIGZvciB0aGlzLCBpdCBpcyB0byBzaWduaWZpY2FudGx5IHN0cmVuZ3RoZW4gcHJldmVudGlvbiwgcGFydGljdWxhcmx5IGFtb25nIHRoZSB5b3VuZ2VzdCwgd2l0aCBzeXN0ZW1hdGljIHNjcmVlbmluZ3MsIGFuZCB0aGF0JiMzOTtzIGl0IGZvciBtZSwgd2hhdCB5b3UgaGF2ZSBjb2xsZWN0aXZlbHkgbWFuYWdlZCB0byBuZWdvdGlhdGUgaW4gcmVjZW50IG1vbnRocyBhbmQgdGhhdCBpcyBlc3NlbnRpYWwuIFdlIHdpbGwgcHV0IGluIHBsYWNlIHNjcmVlbmluZyBmb3IgdmlzdWFsIGFuZCBhdWRpdG9yeSBkaXNvcmRlcnMsIHJlaW5mb3JjZWQgYXQgYW4gZWFybHkgYWdlLCB3aXRoIHRocmVlIG5ldyBjb25zdWx0YXRpb25zIG9mIHRoZSBhdHRlbmRpbmcgcGh5c2ljaWFuIG9yIHNjaG9vbC4gVG8gcmVkdWNlIHRoZSB1c2Ugb2YgZGVudGFsIHByb3N0aGV0aWMgY2FyZSwgd2Ugd2lsbCBpbnRyb2R1Y2UgYSB0ZXN0IGZvciAzLXllYXItb2xkcywgYnV0IGFsc28gZm9yIDI0LXllYXItb2xkcy4gVGhpcyBpcyBwcmV2ZW50aW9uLCBpdCBpcyB0byBlbnN1cmUgdGhhdCwgYXQgdGhlIGVhcmxpZXN0LCBmb3Igb3VyIGZlbGxvdyBjaXRpemVucywgdGhlcmUgaXMgYWNjZXNzIHRvIGNvbnN1bHRhdGlvbiB0byBzZWUgaWYgdGhlcmUgaXMgYSBuZWVkIGZvciBjYXJlLCBvciB0aGVyZSBhcmUgYmVoYXZpb3JzIHRvIGNoYW5nZS4gQW5kIHRoaXMgaXMgcGFydCBvZiB0aGUgYWdyZWVtZW50LCBhbmQgdGhhdCB0b28gaXMgaW50ZXJlc3RpbmcgZm9yIG11dHVhbHMsIGZvciBwcm9mZXNzaW9uYWxzLCBmb3IgdGhlIFN0YXRlLCBiZWNhdXNlIGJ5IGluc3RpdHV0aW5nIHRoZXNlIGNvbnN1bHRhdGlvbnMgYXQgdGhlIGVhcmxpZXN0LCB3ZSB3YXJuIGJldHRlciBhbmQgdGhlcmVmb3JlIHdlIHdpbGwgc3BlbmQgbGVzcy4gVGhpcyBwcmV2ZW50aW9uLCBpdCBhbHNvIGdvZXMgd2l0aCBhbiBhY2NvdW50YWJpbGl0eSBvZiBhbGwgcHJvZmVzc2lvbmFscywgYW5kIHRoZSByZXZhbG9yaXphdGlvbiBvZiBjZXJ0YWluIGFjdHMuIFRoaXMgaXMgdGhlIGNvaGVyZW5jZSBJIHdhbnQgdG8gZW1waGFzaXplIGhlcmUsIHRoZSBhZ3JlZW1lbnQgdGhhdCBoYXMgYmVlbiByZWFjaGVkLiBGb3IgZXhhbXBsZSwgZm9yIGRlbnRpc3RzLCB0aGUgZmFjdCBvZiBncmVhdGx5IGluY3JlYXNpbmcgdGhlIHZhbHVlIG9mIGNvbnNlcnZhdGl2ZSBjYXJlLCBiZWNhdXNlIHByb2Zlc3Npb25hbHMgdG9kYXkgd2VyZSBub3Qgd2VsbCBwYWlkIGZvciB0aGlzIGNhcmUsIHdoZXJlIHRoZXkgd2VyZSBlc3NlbnRpYWxseSBtYWtpbmcgdGhlaXIgaW5jb21lLCB3aGljaCB3YXMgbGVnaXRpbWF0ZSwgb24gbW9yZSBzZXJpb3VzIGFjdHMuIGxhdGUgYW5kIG1vcmUgZXhwZW5zaXZlIGZvciBvdXIgZmVsbG93IGNpdGl6ZW5zLCBhcyBmb3IgdGhlIGNvbW11bml0eS4gQnV0IHdlIG11c3QgYWxzbyBiZSByZXNwb25zaWJsZSwgd2Ugd2FudCBkZW50aXN0cyB3aG8gY2FuIGxpdmUgd2VsbCBpbiB0aGVpciBwcm9mZXNzaW9uLCB3aG8gY2FuIGNvbnRpbnVlIHRvIHNldHRsZSBhbmQgdGhlcmVmb3JlIHRoZSBjb2xsZWN0aXZlIGNob2ljZSB0aGF0IGlzIGJldHRlciB0byBwYXkgZm9yIGNvbnNlcnZhdGl2ZSBjYXJlLCBnb2VzIGluIHRoaXMgZGlyZWN0aW9uLCBhbmQgYWxzbyBhbGxvd3MgaGF2ZSBhIG11Y2ggbW9yZSBjb25zaXN0ZW50IGFwcHJvYWNoIHRvIGhlYWxpbmcuPFwvcD5cbjxwPlRoZSBvdGhlciBwYXJ0IG9mIHRoZSBwcmV2ZW50aW9uIHJldm9sdXRpb24gd2lsbCBiZSBiYXNlZCBvbiBlYXN5IGFjY2VzcyB0byBoZWFsdGggcHJvZmVzc2lvbmFscywgYmVjYXVzZSB0aGUgZnVsbCByZWltYnVyc2VtZW50IG9mIHRoZSBnbGFzc2VzLCBlc3NlbnRpYWwsIGlzIHVzZWxlc3MgaWYgaXQgdGFrZXMgMTIgbW9udGhzIHRvIGhhdmUgYW4gYXBwb2ludG1lbnQgd2l0aCBhbiBvcGh0aGFsbW9sb2dpc3QuIEFuZCBzbyBmb3IgdGhhdCwgd2Ugd2lsbCBnbyBmdXJ0aGVyIGluIHRoZSBvcmdhbml6YXRpb24gb2YgcHJvZmVzc2lvbmFsIGNvb3BlcmF0aW9uLiBUaGUgcHJvZmVzc2lvbiBvZiBkZW50YWwgYXNzaXN0YW50IHdpbGwgYmUgZXhwYW5kZWQsIHdlIHdpbGwgZ28gZnVydGhlciBpbiB0aGUgdHJhaW5pbmcgb2Ygb3B0aWNpYW5zIGFuZCBpbmNyZWFzZSB0aGUgbnVtYmVyIG9mIGhlYXJpbmcgY2FyZSBwcm9mZXNzaW9uYWxzLiBJdCBpcyBhIHNldCBvZiB0aGUgb3JnYW5pemF0aW9uIG9mIHRoZSBwcm9mZXNzaW9ucyB0byB3aGljaCB3ZSBtdXN0IGdvLiBCdXQgd2hhdCBJIHdhbnQgeW91IHRvIHRvdWNoIGhlcmUsIHRocm91Z2ggdGhpcyByZWZvcm0sIGlzIHRoYXQgd2Ugd2lsbCwgYnkgdGhlIGNvbGxlY3RpdmUgY29tbWl0bWVudCwgYnkgdGhlIGlsbHVzdHJhdGlvbiBvZiB3aGF0IHlvdSBjYWxsZWQgeW91ciB3aXNoZXMgTXIuIFByZXNpZGVudCwgaXMgaXQtIHRvIHNheSB0aGUgY29tbWl0bWVudCBvZiB0aGUgU3RhdGUsIHRoZSBjb21taXRtZW50IG9mIG11dHVhbHMsIGluc3VyZXJzLCBhbGwgaGVhbHRoIHByb2Zlc3Npb25hbHMgYW5kIHRob3NlIHdobyBwcm92aWRlIHByZWNpc2VseSB0aGUgcHJvdGVjdGlvbiwgdGhlIGNvbW1pdG1lbnQgb2YgdGhlIHNvY2lhbCBwYXJ0bmVycyBhbmQgaGVhbHRoIGluc3VyYW5jZSB3ZSBoYXZlIGZvdW5kIGFuIGludGVsbGlnZW50IHNvbHV0aW9uIHRoYXQgYWxsb3dzIG9uZSBoYW5kIHRvIGhhdmUgYW4gYW5zd2VyIGluIHRlcm1zIG9mIHB1cmNoYXNpbmcgcG93ZXIsIHdlIHdpbGwgc3BlbmQgMSw3MDAgXHUyMGFjIHRvIHplcm8sIDIwMCBcdTIwYWMgdG8gemVybywgNjUgXHUyMGFjIHRvIHplcm8hIFNvIGl0JiMzOTtzIHB1cmNoYXNpbmcgcG93ZXIgZm9yIG91ciBmZWxsb3cgY2l0aXplbnMuIFdlIHdpbGwgYWxsb3cgYmV0dGVyIHByZXZlbnRpb24gYW5kIHdlIHdpbGwgYWxsb3cgYW4gb3JnYW5pemF0aW9uIG9uIHRoZXNlIHRocmVlIHByb2Zlc3Npb25zIG9mIHRoZSBjYXJlIHN5c3RlbSwgbXVjaCBzbWFydGVyIGFuZCB0aGF0IHJlc3BvbmRzIHRvIHRoZSBjaGFsbGVuZ2VzIHRoYXQgaXQgaGFzIGp1c3QgZGVzY3JpYmVkLiBBbmQgc28sIHlvdSBoYXZlIG9uIHRoZXNlIHRocmVlIHRvcGljcywgY29sbGVjdGl2ZWx5LCBiZWVuIGFibGUgdG8gYnJpbmcgYW4gYW5zd2VyIHRvIHRoZSBjaGFsbGVuZ2VzLCB0byB0aGUgc3RhbGVtYXRlIGluIHdoaWNoIHdlIHdlcmUgdW50aWwgdGhlbi4gUHVyY2hhc2luZyBwb3dlciwgcHJldmVudGlvbiwgYmV0dGVyIHNlcnZpY2VzIGJlY2F1c2UgYmV0dGVyIGNvbGxlY3RpdmUgb3JnYW5pemF0aW9uIG9mIGNhcmUuIFdlIGhhdmUgZm9yIHRoaXMsIGFzIEkgc2FpZCwgYW5kIHRoYXQgaXMgd2h5IEkgYWxzbyB3YW50ZWQgdG8gdGhhbmsgeW91LCBuZWVkIHRoZSBjb21taXRtZW50IGFuZCByZXNwb25zaWJpbGl0eSBvZiBhbGwuIEFuZCB5b3UgYXJlIHRoZSBleGFtcGxlLCBsYWRpZXMgYW5kIGdlbnRsZW1lbiwgb24gdGhlIDEwMCUgaGVhbHRoIG9mIHRoaXMgY29tbWl0bWVudC4gVGhlIGNvbXB1bHNvcnkgaGVhbHRoIGluc3VyYW5jZSB3aWxsIGNvbnRyaWJ1dGUgdG8gdGhlIGZpbmFuY2luZyBvZiB0aGUgcmVmb3JtLCBieSBkb3VibGluZyBpdHMgc3VwcG9ydCBmb3IgaGVhcmluZyBhaWRzIGZvciBhZHVsdHMgYnkgMjAyMiwgYnV0IGFsb25nc2lkZSB0aGUgY29tcHVsc29yeSBoZWFsdGggaW5zdXJhbmNlLCB0aGUgY29tcGxlbWVudGFyeSBvcmdhbml6YXRpb25zIHRoYXQgeW91IHJlcHJlc2VudCwgaGF2ZSBhbHNvIGNvbW1pdHRlZCB0byB0YWtpbmcgdGhlaXIgcGFydCBpbiB0aGUgY292ZXJhZ2Ugb2YgdGhpcyAxMDAlIGhlYWx0aCBiYXNrZXQuIENvbXBsZW1lbnRhcnkgaGVhbHRoIGNhcmUgY29udHJhY3RzLCB3aGljaCBlbnN1cmUgbW9yZSB0aGFuIDkwJSBvZiB0aGUgRnJlbmNoLCB3aWxsIGhhdmUgdG8gY292ZXIgdGhpcyBiYXNrZXQuIEFuZCBvZiBjb3Vyc2UsIHRoaXMgcmVmb3JtIGNhbiBub3QgZ2VuZXJhdGUgYSBzcGVjaWZpYyBpbmNyZWFzZSBpbiB0aGUgY29zdCBvZiBhY3F1aXJpbmcgYSBjb21wbGVtZW50YXJ5IGhlYWx0aCBpbnN1cmFuY2UgZm9yIHRoZSBpbnN1cmVkLCBpdCBpcyB0aGUgY29sbGVjdGl2ZSBjb21taXRtZW50IHRoYXQgd2UgdG9vayBhbmQgdGhlcmUgaXMgbm90IGluIHRoaXMgYnVzaW5lc3MsIG9mIGR1cGVzIG1hcmtldC4gQW5kIEkgc2F3IHRoZSBuYXNjZW50IHBvbGVtaWNzLCBub3Qgb24gdGhpcyBhZ3JlZW1lbnQgYnV0IG9uIHRoZSBwYXN0LCB0aGUgaW5jcmVhc2Ugb2Ygc29tZSBjb21wbGVtZW50YXJ5LCBpdCBpcyB0aGUgY29tbWl0bWVudCBvZiB0aGUgY29sbGVjdGl2ZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgYWN0b3JzIHdoaWNoIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGNvbnRyb2wgdGhlIGNvc3RzLCB3aGF0IHlvdSBrbmV3IGhvdyB0byBkbyBpbiBzZXZlcmFsIHNlY3RvcnMuIEl0IGlzIGFsc28gdGhlIGNvbXBsZXRlIHRyYW5zcGFyZW5jeSwgdGhlIGhlYWx0aHkgY29tcGV0aXRpb24gb3JnYW5pemVkIHRoYXQgYXZvaWRzIHByYWN0aWNlcyB3aG9zZSBmaXJzdCB2aWN0aW1zIGFyZSBvdXIgZmVsbG93IGNpdGl6ZW5zLiBUaGlzIGlzIHlvdXIgY29tbWl0bWVudCBoZXJlLCBhbmQgSSB0aGFuayB5b3UgYW5kIEkgY291bnQgb24geW91IHRvIHN1Y2NlZWQgdGhpcyBjaGFsbGVuZ2UgdG8gYmUgYXQgdGhlIHJlbmRlenZvdXMgdGhhdCB0aGUgRnJlbmNoIHdpbGwgZXhwZWN0IGNvbmNyZXRlbHkgZm9yIGZ1bGwgaW1wbGVtZW50YXRpb24sIG92ZXIgdGhlIG5leHQgdGhyZWUgeWVhcnMsIHNpbmNlIHRoaXMgcmVmb3JtIHdpbGwgYmUgZmluYWxpemVkIGJ5IDIwMjEuIFNvIHllcywgd2UgbXVzdCBpbnRlcnZlbmUgZWFybGllciwgZmFzdGVyLCBtb3JlIG1hc3NpdmVseSwgYnkgbW9iaWxpemluZyBhbGwuIFRoaXMgaXMgdGhlIGJlc3Qgd2F5IHRvIGFkZHJlc3MgaGVhbHRoIGluZXF1aXRpZXMsIHdoaWNoIEkgbWVudGlvbmVkIGVhcmxpZXIuIEFuZCB3ZSBoYXZlIGFsc28gaW52ZXN0ZWQgY29uc2lkZXJhYmx5LCBpbiB0aGlzIGFyZWEsIHdlIGFyZSBhcyBJIHNhaWQsIGxlZ2l0aW1hdGVseSBwcm91ZCBvZiBvdXIgaGVhbHRoIHN5c3RlbSwgdGhlIHBlcmZvcm1hbmNlIG9mIG91ciBob3NwaXRhbHMsIGJ1dCB0aGVyZSBhcmUgYWxzbyBzaXR1YXRpb25zIG9mIGZhaWx1cmUgb24gd2hpY2ggSSBjYW1lIGJhY2suPFwvcD5cbjxwPlRvIG1lZXQgdGhlc2UgY2hhbGxlbmdlcywgd2UgbXVzdCBhbHNvLCBmb3IgdGhlIGhvc3BpdGFsLCBmb3IgYWxsIGhlYWx0aCBwcm9mZXNzaW9uYWxzIGFuZCBmb3Igb3VyIGZlbGxvdyBjaXRpemVucywgd2hvIHVzZSBvdXIgaGVhbHRoIGNhcmUgc3lzdGVtLCBzdWNjZWVkIGluIHByb3ZpZGluZyBhIG1vcmUgYXBwcm9wcmlhdGUgcmVzcG9uc2UgYW5kIHRyYW5zZm9ybWluZyBvdXIgaGlzdG9yaWNhbCBtb2RlbC4gV2UgYXJlIGZhY2VkIHdpdGggY29uc2lkZXJhYmxlIGRpc3Bhcml0aWVzLCBhIG1hbGFkanVzdG1lbnQgb2YgdGhpcyBtb2RlbCwgb3JpZW50ZWQgdG93YXJkcyBhbiBpbmRpdmlkdWFsIGFuZCBjdXJhdGl2ZSBhcHByb2FjaCB0byBhY3V0ZSBjYXJlLCBhcyBJIHNhaWQsIGFzIG5ldyBuZWVkcyBmb3IgcHJldmVudGlvbiBhbmQgbG9uZy10ZXJtIGNhcmUgZW1lcmdlLCB3aXRoIGNocm9uaWMgZGlzZWFzZXMsIHdpdGggYWdpbmcuIElmIHdlIHdhbnQgdG8gcHJpdmlsZWdlIHF1YWxpdHkgYW5kIHByZXZlbnRpb24sIHdlIG11c3QgYWxzbywgYmV5b25kIHRoaXMgZmlyc3QgYWdyZWVtZW50IG9idGFpbmVkLCBsZWFkIGEgcmVvcmllbnRhdGlvbiBvZiB0aGUgb3JnYW5pemF0aW9uIG9mIHRoZSBjYXJlIHN5c3RlbSwgdG8gdHJlYXQgcGF0aG9sb2dpZXMgdmVyeSBlYXJseSwgaW4gb3JkZXIgdG8gcmV0aGluayBvdXIgY29sbGVjdGl2ZSBvcmdhbml6YXRpb24gLiBXZSBuZWVkIHRvIG1vdmUgcHJvZ3Jlc3NpdmVseSBmcm9tIGxvZ2ljLCBjYXJlIHN1cHBseSBtYW5hZ2VtZW50LCBvdmVybHkgcmlnaWQgbWFwcGluZywgZnJvbSBhbiBvdmVybHkgbnVtZXJpY2FsIGFuZCBidWRnZXRhcnkgYXBwcm9hY2gsIHRvIGEgbG9naWMgb2YgZGVtYW5kcyBiYXNlZCBvbiB0aGUgc2VydmljZXMgdG8gYmUgcmVuZGVyZWQgdG8gdGhlIHBvcHVsYXRpb24gb24gdGhlIHRlcnJpdG9yeS4gb24gdGhlaXIgcG9vbCBvZiBsaWZlLCBhbmQgYSBsb2dpYyBtb3JlIGluZGl2aWR1YWxpemVkLCB0aGF0IGlzIHRvIHNheSB0dXJuZWQgdG93YXJkcyB0aGUgcGF0aWVudC4gVG8gbWVldCB0aGVzZSBuZWVkcyBmb3IgbG9jYWwgY2FyZSwgdGhlIGFjdG9ycyBtdXN0IG9yZ2FuaXplIHRoZW1zZWx2ZXMgaW4gbmV0d29ya3MsIGRlY29tcGFydG1lbnRhbGl6ZSB0aGUgY2l0eSBtZWRpY2luZSBhbmQgdGhlIGhvc3BpdGFsLCBhbHNvIGd1YXJhbnRlZWluZyBhY2Nlc3MgdG8gYXQgbGVhc3QgZml2ZSBzZXJ2aWNlcywgYWNjZXNzIHRvIGEgZG9jdG9yLiBQZXJtYW5lbmNlIG9mIGNhcmUgYW5kIGFjY2VzcyB0byB1bnNjaGVkdWxlZCBjYXJlLCBjb250aW51aXR5IG9mIGNhcmUsIGdyYWR1YWwgY2FyZSwgc2NyZWVuaW5nIGFuZCB2YWNjaW5hdGlvbi4gQW5kIGJleW9uZCB0aGVzZSBmaXZlIG1pbmltdW0gc2VydmljZXMsIHdlIG11c3QgYnVpbGQgdGhpcyBtZWRpY2luZSwgd2hpY2ggd2lsbCBiZSBwYXRpZW50LW9yaWVudGVkIGFuZCB0aGF0IHdpbGwgYWxsb3cgaXQsIHdoaWNoIHdpbGwgYWxsb3csIHNvcnJ5LCB0byBidWlsZCBpdHMgcGF0aCBpbiB0aGUgaGVhbHRoIHN5c3RlbSwgYW5kIGF0IGV2ZXJ5IG1vbWVudCB0byBwcm90ZWN0IGl0IHRoZSBiZXN0LiBJIGRvIG5vdCB3YW50IHRvIHNwZWFrIGFib3V0IHdvcmsgdGhhdCBoYXMgbm90IGJlZW4gY29tcGxldGVkLCB0aGUgbWluaXN0ZXIgaXMgY29udGludWluZyB0aGUgY29uc3VsdGF0aW9ucywgYW5kIHdlIHdpbGwgaGF2ZSB0aGUgb3Bwb3J0dW5pdHkgdG8gY29tZSBiYWNrIGluIHRoZSBzdW1tZXIsIGFuZCBJIHdpbGwgc3BlYWsgdG8gdGhlIG1pbmlzdGVyLiBzdW1tZXIsIGF0IHRoZSBlbmQgb2YgYWxsIHRoZXNlIGNvbnN1bHRhdGlvbnMuIFlvdSB3aWxsIGFsc28gaGF2ZSBzb21lIHJlc3BvbnNpYmlsaXR5IHRvIHRha2UsIGxhZGllcyBhbmQgZ2VudGxlbWVuLCBpbiB0aGUgdHJhbnNmb3JtYXRpb24gb2YgdGhlIGhlYWx0aCBzeXN0ZW0uIFRoZSByb2xlIG9mIGNvbXBsZW1lbnRhcnkgaW5zdXJhbmNlIGlzIG5vdCBhbHdheXMgbGltaXRlZCB0byB0aGUgcmVpbWJ1cnNlbWVudCBvZiBjYXJlLCB5b3UgYXJlIGhlYWx0aCBwcm92aWRlcnMgeW91cnNlbGYsIG5vdCBqdXN0IHBheWVycyBhbmQgdGhlcmVmb3JlIHlvdSBrbm93IHRoZSBpbnRpbWFjeSwgaWYgSSBtYXkgc2F5LCBvZiB0aGUgY29tcGxleGl0eSB0aGF0IEkganVzdCByZWNhbGxlZCBmcm9tIGhlYWx0aCBjYXJlIHNlcnZpY2VzIHRvIGhlYWx0aCBjZW50ZXJzIHRvIGxvbmctdGVybSBjYXJlIGhvbWVzLiBBbmQgdGhlIG11dHVhbGlzdCBzcGlyaXQgaXMgYWxzbyBoZWxwaW5nIHRvIGJ1aWxkIGNhcmUgcGF0aHdheXMgaW4gc29tZXRpbWVzIGlzb2xhdGVkIGFyZWFzLCBmb3IgdGhlIGJlbmVmaXQgb2YgdGhlIG1vc3QgdnVsbmVyYWJsZSBwYXRpZW50cywgdG8gaW52ZXN0IGluIHByZXZlbnRpb24sIHRvIGNvb3BlcmF0ZSB3aXRoIHByb2Zlc3Npb25hbHMuIEJhc2ljYWxseSwgeW91IGhhdmUgaW4geW91ciBnZW5lcyBwYXJ0IG9mIHRoZSBhbnN3ZXJzIHdlIHdhbnQgdG8gYnJpbmcgdG8gdGhpcyBjb250ZW1wb3JhcnkgY2hhbGxlbmdlLiBBbmQgc28sIGFzIHlvdSBjYW4gc2VlLCBvbiB0aGlzIHN1YmplY3QsIHdlIHdpbGwgaGF2ZSBpbiB0aGUgc3VtbWVyLCB0byB0YWtlIGEgcG9zaXRpb24gdGhlcmUgdG9vIG9uIGEgcHJvZm91bmQgdHJhbnNmb3JtYXRpb24sIHdoaWNoIGlzIG5vdCBqdXN0IGEgbW9uZXRhcnkgc3ViamVjdCwgYnV0IHdoaWNoIHdpbGwgaW52b2x2ZSBhIHByb2ZvdW5kIHJlb3JnYW5pemF0aW9uLCBhbmQgd2hpY2ggd2lsbCBpbnZvbHZlIGFsc28gdG8gcmV2aWV3IGFsbCB0aGUgc3RydWN0dXJlcyB0byB3aGljaCB3ZSBoYXZlIGJlZW4gYWNjdXN0b21lZCBzaW5jZSAxMCB5ZWFycywgZnJvbSB0aGUgcHJpY2luZyB0byB0aGUgYWN0LCB0aGUgcHJpY2luZyB0byB0aGUgYWN0aXZpdHksIHRoZSBzYWNyby1ob2x5IHN1bW1hIGRpdmlzaW8sIGJldHdlZW4gYSBjaXR5IG1lZGljaW5lIGFuZCBob3NwaXRhbCBtZWRpY2luZSwgYW5kIGl0IHdpbGwgYWxzbyBiZSBuZWNlc3NhcnkgdG8gcmV0dXJuIHRvIGhhYml0cywgc28gdGhhdCBhbGwgdGhvc2Ugd2hvIHRha2UgY2FyZSwgY2FuIHRha2UgYWxsIHRoZWlyIHJlc3BvbnNpYmlsaXRpZXMuPFwvcD5cbjxwPlRoZSBhbnN3ZXIgdG8gdGhlIHNlY29uZCBjaGFsbGVuZ2Ugb2YgYWdpbmcsIGFuZCBpdCB3aWxsIGJlIG9uIHRoaXMgcG9pbnQsIGZhc3RlciwgaXQgaXMgYWxzbyBpbmRpc3BlbnNhYmxlLiBZb3UgbWVudGlvbmVkIGl0IGZvciB0aGUgZmlyc3QgcG9pbnQgdGhhdCBtYXR0ZXJzIHRvIG1lLCB0aGF0IG9mIHByZXZlbnRpbmcuIFdlIG11c3QsIGFuZCB0aGlzIHdpbGwgYmUgYXQgdGhlIGhlYXJ0IG9mIHRoZSBwZW5zaW9uIHN5c3RlbSB0aGF0IGlzIGJlaW5nIGJ1aWx0LCB1bmRlciB0aGUgYXV0aG9yaXR5IG9mIHRoZSBtaW5pc3RlciBhbmQgd2hvc2UgY29uc3VsdGF0aW9uIGlzIG9uZ29pbmcsIHdlIG11c3QgYmV0dGVyIHByZXZlbnQsIGFuZCB0aGVyZWZvcmUgdGhyb3VnaG91dCBsaWZlLCB0byBlbmNvdXJhZ2UgZW1wbG95ZXJzLCB0byBlbmNvdXJhZ2UgdGhlIHdob2xlIGNvbW11bml0eSwgaGVyZSB0b28sIHRvIHByZXZlbnQgc28gdGhhdCBldmVyeW9uZSBjYW4gYWdlIGJldHRlciBhbmQgdGhhdCB0aGUgaW5lcXVhbGl0aWVzIGFyZSBncmFkdWFsbHkgc21vb3RoZWQsIGluIGZyb250IG9mIG9sZCBhZ2UuIEFuZCB3ZSBuZWVkIHRvIHRha2UgaW50byBhY2NvdW50IGFsbCB0aGUgZGlzcGFyaXRpZXMgaW4gdGhlIHBlbnNpb24gc3lzdGVtLCBhcyB3ZSBhcmUgYnVpbGRpbmcgaXQuIEl0IGlzIHRoZW4gbmVjZXNzYXJ5IHRvIGJyaW5nIHRoZSBhbnN3ZXJzIG9mIHNvbGlkYXJpdHksIG5vdCBuZWdvdGlhYmxlLCBpdCBpcyBtb3Jlb3ZlciB3aGF0IGhhZCBiZWVuIHRoZSBvYmplY3Qgb2YgbXkgY29tbWl0bWVudCBmb3IgdGhlIG1pbmltdW0gb2xkIGFnZSwgd2hpY2ggaW5jcmVhc2VkIGZyb20gMzAgXHUyMGFjIHBlciBtb250aCB0byB0aGUgMXN0IG9mIEFwcmlsIGxhc3QgYW5kIHdoaWNoIHdpbGwgaW5jcmVhc2UgdG8gdGhlIDFzdCBuZXh0IEphbnVhcnkgMzAgXHUyMGFjLiBBbmQgSSBoZWFyIG11cm11ciBpbiB0aGUgcm9vbSwgZmV3IHBlb3BsZSBhdCBsZWFzdCBvbGQgYWdlIHdobyBwYXkgdGhlIENTRyBhdCBmdWxsIHJhdGUuIFNvIHRoZXNlIGFyZSBwZW9wbGUgd2hvIGhhdmUgb25seSBnYWluZWQgcHVyY2hhc2luZyBwb3dlci4gTm8sIGJ1dCBpdCYjMzk7cyBhIHJlYWxpdHkuIEJ1dCBpdCYjMzk7cyBhIHJlYWxpdHksIGl0JiMzOTtzIGltcG9ydGFudCBub3QgdG8gYWxsb3cgbWlzdW5kZXJzdGFuZGluZ3MuIEFueW9uZSB3aXRoIGEgbWluaW11bSBvZiBvbGQgYWdlIG9yIHdobyBoYXMgYSBtb2Rlc3QgcGVuc2lvbiwgcGF5cyBhIENTRywgd2hpY2ggaXMgcXVpdGUgbm9ybWFsLCBhbmQgdGhlIGNob2ljZSB3YXMgbm90IHRvIG1vdmUgaXQsIHdoaWNoIGlzIGEgQ1NHIGF0IHRoZSByZWR1Y2VkIHJhdGUsIEkgd291bGQgbm90IHN1Z2dlc3QgdGhhdCBwZW9wbGUgd2hvc2UgbWluaW11bSBvbGQgYWdlIGhhcyBiZWVuIHJhaXNlZCwgd291bGQgaGF2ZSBhIENTRyB0aGF0IHdvdWxkIGhhdmUgaW5jcmVhc2VkLiBPbiB0aGUgb2xkIGFnZSwgdGhlIGFuc3dlciwgYW5kIHRoZXJlZm9yZSBvbiByZXRpcmVtZW50LCB0aGUgYW5zd2VyIGlzIG9idmlvdXNseSB0aGUgY29tcGxldGUgb3ZlcmhhdWwgb2Ygb3VyIHBlbnNpb24gc3lzdGVtLCB3aXRoIHByaW5jaXBsZXMgdGhhdCBJIHdhbnQgaGVyZSB0b28gY2xlYXIgYW5kIHNpbXBsZS4gSSB3YW50IHVzIHRvIGJlIGFibGUgdG8gbWFpbnRhaW4gb3VyIHBheS1hcy15b3UtZ28gcGVuc2lvbiBzeXN0ZW0gYW5kIGludGVyZ2VuZXJhdGlvbmFsIHNvbGlkYXJpdHkuIEl0IGlzIHRoZSBjaG9pY2UgdGhhdCBoYXMgYmVlbiBtYWRlLCBpdCBpcyB0aGUgY2hvaWNlIHRoYXQgaGFzIGJlZW4gbWFkZSwgb24gd2hpY2ggSSBhbSBjb21taXR0ZWQgYW5kIGl0IGlzIHRoZSBzb2xpZGFyaXNtIHRoYXQgaXMgYXQgdGhlIGhlYXJ0IG9mIG91ciBSZXB1YmxpYy4gU2ltcGx5LCB0aGlzIGNvbXBsZXRlIHNvbGlkYXJpc20sIGl0IGFsc28gZ29lcyB3aXRoIHRoZSBlbmQgb2YgYSBzdGF0dXMgc29jaWV0eSwgYW5kIHNvIGl0IGdvZXMgdG8gYSBzeXN0ZW0gdGhhdCB3ZSBhcmUgYnVpbGRpbmcsIG5lZ290aWF0aW5nLCBjb25jZXJ0ZXIsIHdoaWNoIHdpbGwgYWxsb3cgYSBldXJvIGNvbnRyaWJ1dGVkIHRvIGdpdmUgdGhlIHNhbWUgYW1vdW50IG9mIHJpZ2h0cy4gQW5kIHNvIHRoYXQgd2UgZ3JhZHVhbGx5IGNvbnZlcmdlIGFsbCB0aGUgZXhpc3RpbmcgcmVnaW1lcywgd2hpY2ggaGFkIGJlZW4gYnVpbHQgaW50byBkaWZmZXJlbmNlcyB0aGF0IGhhdmUgYmVjb21lIGluZXhwbGljYWJsZSB0b2RheS4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIGVzdGFibGlzaGluZyB3aGF0PyBPbiB0aGUgb25lIGhhbmQsIHRoZSBqdXN0aWNlIG9mIHRoZSBzeXN0ZW0gaW4gdGhlIGxvbmcgdGVybSwgaGF2aW5nIGEgdHJhbnNpdGlvbiBwZXJpb2QgdGhhdCB3ZSBhc3N1bWUgYW5kIGFsc28gYWxsb3cgY29uZmlkZW5jZSBpbiB0aGUgc3lzdGVtLCBzbyB0aGF0IGV2ZXJ5b25lIGNhbiByZWFkLCBpbW1lZGlhdGVseSwga25vdyBoaXMgcmlnaHRzIGFuZCBmb3IgdGhlbSBrbm93IHRoYXQgaGlzIHJpZ2h0cyB0byBhIFx1MjBhYyAxIGNvbnRyaWJ1dGlvbiwgYXJlIHRoZSBzYW1lIGFzIHRoYXQgb2YgdGhlIG5laWdoYm9yLiBUaGlzIGlzIHRoZSBrZXkgdG8gcmVzcG9uZGluZyB0byB0aGUgY29sbGVjdGl2ZSBtaXN0cnVzdCBpbiB3aGljaCB3ZSBoYXZlIHNldHRsZWQsIGFuZCBhbHNvIHRvIG1lZXQgdGhlIGNoYWxsZW5nZXMgb2YgYWdpbmcsIHdoaWNoIEkgcmVjYWxsZWQgYSBtb21lbnQgYWdvLiBPbiB0aGlzIHN1YmplY3QsIGEgbGF3IHdpbGwgYmUgcHJlc2VudGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHllYXIgMjAxOSBhbmQgd2lsbCBiZSB2b3RlZCBpbiB0aGUgZmlyc3QgaGFsZiBvZiB0aGUgeWVhciAyMDE5LiBUaGUgZGVjaXNpb25zIHdpbGwgYmUgdGFrZW4sIHRoZXkgd2lsbCBiZSBjbGVhciwgYSB0cmFuc2l0aW9uIHRpbWUgd2lsbCBiZSBncmFudGVkLCBhbmQgd2UgaGF2ZSBjaG9zZW4sIGZ1bmRhbWVudGFsbHksIG5vdCB0byBtYWtlIGFuIHVtcHRlZW50aCBidWRnZXRhcnkgcmVmb3JtIHByaXZpbGVnaW5nIHRoZSBzaG9ydC10ZXJtLCB0byBmaW5hbGx5IG1ha2UgdGhlIHJlZm9ybSB0aGF0IGFsbG93cyB0byBwdXQgZmxhdCB0aGUgYnVpbGRpbmcsIHRvIHJlY3JlYXRlIGNvbmZpZGVuY2UgYW5kIGp1c3RpY2UsIGFjY2VwdGluZyBhIGxvbmcgdHJhZGl0aW9uLjxcL3A+XG48cD5TcGVha2VyOiAoSW5hdWRpYmxlKTxcL3A+XG48cD5USEUgUFJFU0lERU5UOiBCdXQgeW91IGFyZSBhYnNvbHV0ZWx5IHJpZ2h0LCB3ZSBhcmUgaW4gYSBmcmVlIGlucXVpcnkgaGFsbCwgYnV0IEkgbGlrZSB0aGF0LiBPbiB0aGlzIHN1YmplY3QsIG9uIHRoaXMgc3ViamVjdCwgeW91IGFyZSBhYnNvbHV0ZWx5IHJpZ2h0LCB3ZSBtdXN0IG5vdCBmb3JnZXQgd29tZW4sIGZvcmdldCBhYm91dCBicm9rZW4gYW5kIGZyYWN0dXJlZCBjYXJlZXJzLCBmb3JnZXQgYWJvdXQgd29tZW4gYW5kIG1lbiBsaXZpbmcgd2l0aCBkaXNhYmlsaXRpZXMsIG5vciBmb3JnZXQgdGhlIHNpdHVhdGlvbiBvZiBncmVhdCBkaWZmaWN1bHRpZXMuIGFuZCBpbmVxdWFsaXRpZXMgaW4gc29jaW8tcHJvZmVzc2lvbmFsIHJpc2tzLCBhbmQgc28gaXQgaXMgYWxzbyBhbGwgdGhhdCBhIHRyYW5zcGFyZW50IHN5c3RlbSB3aWxsIGludGVncmF0ZSBpbnRvIHRoZSBwYXJhbWV0ZXJzIGFuZCB3aGljaCB3aWxsIGJlIHRyYW5zcGFyZW50LCBjb25jZXJ0ZWQsIG5lZ290aWF0ZWQgYW5kIHZvdGVkIGJ5IFBhcmxpYW1lbnQuIFNvIHlvdSBhcmUgYWJzb2x1dGVseSByaWdodC48XC9wPlxuPHA+RmluYWxseSwgb24gb2xkIGFnZSwgaXQgaXMgb2J2aW91cyB0aGF0IHdlIGNhbiBubyBsb25nZXIgZGVsYXkgdGhlIGFuc3dlciB0byBiZSBnaXZlbiBpbiB0ZXJtcyBvZiBkZXBlbmRlbmNlLiBJIG1lbnRpb25lZCBlYXJsaWVyIHRoZSByZWFsaXR5LCB0aGUgZGFpbHkgbGlmZSBmb3IgbWFueSBvZiBvdXIgZmVsbG93IGNpdGl6ZW5zIGZvciBjYXJlZ2l2ZXJzLCBmb3IgdGhvc2Ugd2hvIHNoYXJlIHRoZXNlIG9mdGVuIGRyYW1hdGljIHJlYWxpdGllcy4gT24gdGhpcyBwb2ludCwgd2UgYWxzbyBuZWVkIHRoaXMsIHdoaWxlIHByZXZlbnRpbmcgYmV0dGVyIHRvIG1vYmlsaXplIGFsbCB0aGUgYWN0b3JzLCB0byByZWNvZ25pemUgdGhlIHBhcnQgb2YgdGhlIGZhbWlseSBzb2xpZGFyaXR5IGFuZCB0byBnaXZlIGl0IGEgc3RhdHVzIGFuZCBhIHBsYWNlLiBUaGUgc2hhcmUgb2YgY29sbGVjdGl2ZSBzb2xpZGFyaXR5LCBzb2NpYWwsIGZpbmFsbHkgYnVpbGQgdGhlIG1lY2hhbmlzbXMgcmVzcG9uc2libGUgZm9yIGZ1bmRpbmcgYW5kIGZpbmFsbHkgYWdyZWUgdG8gaGF2ZSB0aGUgbmVjZXNzYXJ5IG5hdGlvbmFsIGRlYmF0ZSwgd2hpY2ggd2lsbCBtZWV0IHRoaXMgbmV3IHJpc2ssIHdoaWNoIGlzIHRoZXJlIGFuZCB3aGljaCB3ZSBuZWVkIHNvIHJlcGx5LiBXZSBrbm93IHRoZSBmaXJzdCBlc3RpbWF0ZXMsIDkgdG8gMTAgYmlsbGlvbiBldXJvcyB0ZWxsIHVzIHNvbWUuIFdlIGFsc28ga25vdyB0aGF0IHRoZSBhbnN3ZXIgaXMgaW4gYSBtb2JpbGl6YXRpb24gb2YgYWxsIHRoZSBhY3RvcnMsIGl0IGlzIGluIHRoZSBpbm5vdmF0aW9uLCBpdCBpcyBpbiB0aGUgY2FwYWNpdHkgdG8gZ2l2ZSBhIHBsYWNlIGluIHRoZSBzb2NpZXR5IGFuZCB0byBiZXR0ZXIgcmVjb2duaXplIGFuZCByZW11bmVyYXRlIHRoZSB3b3JrIG9mIHRob3NlIGFuZCB0aG9zZSB0aGF0IGFjY29tcGFueSB0aGUgZGVwZW5kZW50cywgYW5kIHRvIGVuc3VyZSB0aGUgdHJhbnNmb3JtYXRpb24gb2YgdGhlIGVzdGFibGlzaG1lbnRzLCBpbiBlc3RhYmxpc2htZW50cyBtb3JlIG1lZGljYWxpemVkIHRoYW4gdGhleSBhcmUgdG9kYXkuIFRoaXMgZ3JlYXQgdHJhbnNmb3JtYXRpb24sIGl0IHdpbGwgbm90IGhhcHBlbiwgZWl0aGVyLCBvdmVybmlnaHQsIHRoZSBtaW5pc3RlciBoYXMgYnJvdWdodCBhIGZldyB3ZWVrcyBhZ28gZmlyc3QgZXNzZW50aWFsIGFuZCB1cmdlbnQgYW5zd2Vycy4gSSBrbm93IHRoYXQgdGhleSBkbyBub3QgZnVsbHkgcmVzcG9uZCB0byB0aGUgc3VmZmVyaW5nIG9mIHRob3NlIHdobyB3b3JrIGluIHRoZXNlIGluc3RpdHV0aW9ucy4gSSBrbm93IHRoYXQgdGhleSBkbyBub3QgZnVsbHkgcmVzcG9uZCB0byB0aGUgaW5kaWduYXRpb24sIGxlZ2l0aW1hdGUsIG9mIG1hbnkgb2Ygb3VyIGZlbGxvdyBjaXRpemVucy4gV2Ugd2lsbCBub3QgZml4IGl0IG92ZXJuaWdodCwgSSYjMzk7bSBub3QgZ29pbmcgdG8gbWFrZSB5b3UgY29va2llIHByb21pc2VzLCBwb2RpdW0gcHJvbWlzZXMsIGFuZCBpdCYjMzk7cyBub3QganVzdCBhIGZpbmFuY2lhbCBjb21taXRtZW50LCBpdCYjMzk7cyBnb2luZyB0byBiZSB0aGVyZSwgYmVjYXVzZSB3ZSBuZWVkIHRvIGludmVzdCBvbiB0aGlzIHRvcGljLiBObywgd2UgbXVzdCBidWlsZCBhIG5ldyByaXNrLCB3ZSBtdXN0IHJlc3BvbmQgdG8gdGhpcyBuZXcgc29jaWFsIHZ1bG5lcmFiaWxpdHksIHdoaWNoIGlzIGRlcGVuZGVuY2UuIE9uIHRoaXMgc3ViamVjdCwgdGhlIHllYXIgMjAxOSB3aWxsIGFsc28gYmUgZGV2b3RlZCB0byBhIGxhdyB0aGF0IHdpbGwgYmUgcGFzc2VkIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSB5ZWFyLjxcL3A+XG48cD48XC9wPlxuPHA+SW52ZXN0IG1vcmUgaW4gcGVvcGxlLCBhY2NvbXBhbnkgdGhlbSBzbyB0aGF0IHRoZXkgcmVnYWluIHRoZWlyIGRpZ25pdHkgd2hlbmV2ZXIgdGhleSBjYW4sIGFuZCBhY2NvbXBhbnkgYWxsIHRob3NlIHdobyBjYW4gcmV0dXJuIHRvIHRoZSB3b3JrIHRvd2FyZHMgaXQsIGJlY2F1c2UgdGhlIGVtYW5jaXBhdGlvbiBpcyBidWlsdCBieSB0aGUgd29yayBhcyBzb29uIGFzIHdlIGNhbiwgdGhlcmUgd2lsbCBhbHdheXMgYmUgdGhvc2Ugd2hvIGNhbiBub3QsIGFuZCB3ZSBtdXN0IHByb3RlY3QgdGhlbSwgYW5kIGJlIHRoZXJlLCBhbmQgdGFrZSBjYXJlIG9mIHRoZW0sIGFuZCByZWNvZ25pemUgdGhlaXIgcGFydCBpbiBvdXIgc29jaWV0eSwgYnV0IGFsbCB0aG9zZSBhbmQgdGhvc2Ugd2hvIGNhbiwgYmUgYWNjb21wYW5pZWQgdG8gZG8gc28sIGFuZCBhbGxvdyBvdXIgcHVibGljIHBvbGljaWVzLCBvdXIgY29sbGVjdGl2ZSBjb21taXRtZW50LCBhbmQgeW91ciBjb21taXRtZW50IGFzIHdlbGwsIHRvIGJlIHRoZSBwYXRoIG9mIGFjY29tcGFuaW1lbnQgYW5kIGVtcG93ZXJtZW50IHRoYXQgZW5hYmxlcyBlbWFuY2lwYXRpb24gaW4gYW5kIHRocm91Z2ggd29yay4gQmVjYXVzZSBpZiBhbGwgdGhvc2Ugd2hvIGNhbiBkbyB0aGlzIHdheSBkbyBub3QgZG8gaXQsIHdlIHdpbGwgbm90IGxlZ2l0aW1hdGVseSBoYXZlIHRoZSBtZWFucyB0byBnbyB0byBmaW5hbmNlIHRoZSBsZWdpdGltYXRlIHJpc2tzIGFuZCB0aGUgZ3JlYXQgdnVsbmVyYWJpbGl0eSB0aGF0IEkgZXZva2VkIGp1c3Qgbm93LiBpcyBub3QgdHJ1ZSwgYW5kIHdlIGFsc28gaGF2ZSB0byBmYWNlIGl0LCBiZWNhdXNlIG90aGVyd2lzZSB3ZSB3b3VsZCBiZSBseWluZyB0byBlYWNoIG90aGVyLCBhbmQgYWxsIHRob3NlIHdobyB3b3VsZCBub3Qgd2FudCB0byBjaGFuZ2UgYW55dGhpbmcsIHdobyBpbiBhIHNlbnNlIGNvbnNpZGVyIHRoZSB0ZWNobm9sb2dpY2FsIGZyb250aWVyIG9mIHNvY2lhbCBqdXN0aWNlLCB3b3VsZCBzcGVuZCBtb3JlIGJ5IG5vdCBlbXBvd2VyaW5nIGFueW9uZSwgdGVsbCBtZSB3aG8gZmluYW5jZXMgaW4gdGhlIGVuZD8gQWx3YXlzIHNvbWVvbmUsIHlvdSBvciB5b3VyIGNoaWxkcmVuIG9yIHRob3NlIHdobyBhcmUgbm90IHlldCBib3JuLiBBbmQgc28gbGV0IHVzIG1ha2UgdGhpcyB3b3JrIG9mIHRyYW5zZm9ybWluZyBvdXIgc29jaWFsIHBvbGljeSwgYnkgcHJvdmlkaW5nIHRoaXMgc3VwcG9ydCwgYnkgYWxzbyB0cmFuc2Zvcm1pbmcgdGhpcyBwbGFjZSBvZiBzb2NpYWwgd29yaywgYW5kIGZvciBtZSwgdGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyBpbmRpc3BlbnNhYmxlIGlmIHdlIHdhbnQgdG8gc3VjY2VlZCBpbiB0aGlzIHBhdGggdGhhdCBJIGV2b2tlLiBBbmQgdGhhdCYjMzk7cyBhbHNvIHdoeSB3aGF0IHdlIGFyZSBkb2luZyB0byBlbmFibGUgdGhpcyBlbWFuY2lwYXRpb24sIGlzIHRvIGJ1aWxkLCBhdCBlYWNoIHN0YWdlIG9mIGxpZmUsIHRoZSBuZXcgaW5kaXZpZHVhbCBzZWN1cml0eSwgdGhlIG5ldyBzZWN1cml0aWVzIGFyZSBubyBsb25nZXIgc3RhdHVzLCBpdCBpcyBub3QgaXMgbW9yZSBpbiB0aGUgc29jaWV0eSBvZiB0b21vcnJvdyBuZWl0aGVyIHVuZW1wbG95bWVudCBhcyBpdCBleGlzdGVkLCBub3IgdGhlIFJTQSwgaXQgaXMgdGhlIHBvc3NpYmlsaXR5IGF0IGV2ZXJ5IG1vbWVudCBvZiBsaWZlIHRvIGJlIHJlZm9ybWVkLCByZW9yaWVudGVkLCB0byBiZSBib3RoIHByb3RlY3RlZCBhbmQgYWNjb21wYW5pZWQgZm9yIHRvIGJlIGFibGUgdG8gZW1hbmNpcGF0ZSBhdCBhbnkgbW9tZW50IGJ5IHRoaXMgd29yay4gVGhlIGhlYXJ0IG9mIHRoZSBsYXcgdGhhdCBpcyBjb21pbmcgdG8gUGFybGlhbWVudCByaWdodCBub3cgb24gdGhlIHRyYW5zZm9ybWF0aW9uIG9mIGFwcHJlbnRpY2VzaGlwIGFuZCBza2lsbHMgdHJhaW5pbmcgaXMgdGhhdCwgYW5kIGl0JiMzOTtzIGEgY29udGludXVtLCBmcm9tIGdyZWF0IHBvdmVydHkgdG8gbGlmZSBhbGwgdGhlIHdheSB0aHJvdWdoLiBqb2IuIFdoYXQgd2UgbmVlZCB0byBkbyBpcyByZWludmVzdCBpbiB0aGUgcGVyc29uLCBpdCYjMzk7cyBtb3JlIHN1cHBvcnQsIG1vcmUgZW1wb3dlcm1lbnQsIGFuZCBub3QgdGhlIG9ubHkgYW5zd2VyIGlzIHRoZSBjb21tdW5pdHkmIzM5O3MgbW9uZXkgZm9yIHBlcnNvbmFsIHNpdHVhdGlvbnMuIGJlY29tZSBpbXBlcnNvbmFsLiBXZSBtdXN0IGdvIG91dCBvbiBhbGwgdGhlc2UgdG9waWNzIG9mIGEgbG9naWMgb2Ygd2luZG93IGZvciBhIGxvZ2ljIG9mIGFjY29tcGFuaW1lbnQuPFwvcD5cbjxwPkhlcmUsIGxhZGllcyBhbmQgZ2VudGxlbWVuLCB3aGF0IEkgd2FudGVkIHRvIHRlbGwgeW91IGFib3V0IHRoZXNlIHRocmVlIGNoYWxsZW5nZXMuIEkgd2lsbCBjb21lIGJhY2sgaW4gdGhlIGNvbWluZyBtb250aHMgdG8gYm90aCBwb3ZlcnR5IGFuZCBoZWFsdGguIEJ1dCBJIGZ1bGx5IGVtYnJhY2UgdGhpcyBkaXNjb3Vyc2Ugb2YgdHJ1dGgsIG9mIGNvbGxlY3RpdmUgcmVzcG9uc2liaWxpdHkgd2hpY2ggbWFrZXMgbWUsIGluIG15IHZpZXcsIHRoZSBhbnN3ZXJzIHRvIG91ciBjb250ZW1wb3JhcnkgY2hhbGxlbmdlcyBjYW4gbm90IGJlIHRoZSBzb2x1dGlvbnMgb2YgeWVzdGVyZGF5LCBiZWNhdXNlIHRoZXkgZGlkIG5vdCBhbnN3ZXIgdG8gdGhlc2UgY2hhbGxlbmdlcyBhbmQgYmVjYXVzZSB0aGV5IGhhdmUgbGVhZHMgdG8gd2hhdD8gVG8gc3BlbmQgbW9yZSBhbmQgbW9yZSwgZWFjaCB0aW1lIHJlc3BvbmRpbmcgYSBsaXR0bGUgbGVzcyB0byB0aGUgZGFpbHkgcmVhbGl0eS4gV2hhdCBJIHdhbnQgdG9nZXRoZXIsIHdlIGNhbiByZWJ1aWxkLCBpbnNwaXJlIGRlZXAgdmFsdWVzLCB3aGljaCBhcmUgeW91cnMsIHdoaWNoIGFyZSB0aG9zZSBvZiB0aGUgUmVwdWJsaWMsIHdoaWNoIGFyZSB0aG9zZSBvZiB0aGUgc3Bpcml0IG9mIDQ1LCBpcyB0byBmYWNlIHRoZSBzb2NpZXR5IHRoYXQgaXMgb3VycywgYSBzb2NpZXR5IG1hZGUgb2YgcnVwdHVyZXMsIGdyZWF0IHRyYW5zZm9ybWF0aW9ucywgZ3JlYXQgYW54aWV0aWVzLCB0aGlzIGFnaW5nIHRoYXQgd2UgaGF2ZSBsb25nIGRpc2N1c3NlZCwgc28gdGhhdCB0aGUgaGVhcnQgb2Ygb3VyIHJlc3BvbnNlIGlzIGJldHRlciBwcmV2ZW50ZWQsIG9yIHRvIHJlLWh1bWFuaXplIGFuZCB0byBhY2NvbXBhbnksIG5vdCB0byBoZWxwIGxpdmUgaW4gc2lja25lc3Mgb3IgdG8gbGl2ZSBpbiBwb3ZlcnR5LCBidXQgdG8gaGVscCBnZXQgb3V0IG9mIHRoZSBkaXNlYXNlIGFuZCBvdXQgb2YgcG92ZXJ0eS48XC9wPlxuPHA+QW5kIHRvIGVtcG93ZXIgYWxsIGFjdG9ycywgdG8gZW5zdXJlIHRoYXQgZXZlcnlvbmUgaW4gdGhpcyBzb2NpZXR5IHNob3VsZCBub3QgYmUgdHJlYXRlZCBhcyBiZWluZyBpbiBhIHN0YXRlIG9mIHNvY2lhbCBvciBpbnRlbGxlY3R1YWwgbWlub3JpdHksIGJ1dCB0aGF0IGV2ZXJ5b25lIGhhcyBhIHBhcnQgb2YgdGhlIHNvbHV0aW9uLiBTbyB5ZXMsIE1yIFByZXNpZGVudCwgdG8gc3VjY2VlZCBpbiB0aGlzIHRyYW5zZm9ybWF0aW9uLCBJIGRvIG5vdCB0aGluayBmb3IgYSBzaW5nbGUgc2Vjb25kIHRoYXQgdGhlIHN0YXRlIGNhbiBkbyBpdCBhbG9uZSwgSSBkZWVwbHkgdGhpbmsgdGhhdCB0aGlzIHRyYW5zZm9ybWF0aW9uIHdpbGwgbm93IGJlIGEgbWF0dGVyIG9mIGRlY2lzaW9ucywgYWN0cywgZGV0YWlscywgd2lsbCBiZSBhIGRhaWx5IHdvcmsgb2YgdGhlIGRheSwgd2hlcmUgdGhlIFN0YXRlIHdpbGwgaGF2ZSB0byB0YWtlIGl0cyBzaGFyZSBvZiByZXNwb25zaWJpbGl0eSwgYnV0IHdoZXJlIGFsbCB0aGUgYWN0b3JzLCB3aG8gbWFrZSB0aGUgbmF0aW9uYWwgc29saWRhcml0eSwgd2lsbCBoYXZlIHRvIGxlYXJuIHRvIHJlaW52ZW50IHRoZWlyIHJvbGUgdG8gdGhpbmsgdGhlc2UgY2hhbGxlbmdlcyBhbmQgdG8gcGFydGljaXBhdGUgaW4gdGhpcyB0cmFuc2Zvcm1hdGlvbi4gRnJvbSB0aGF0LCBJIGtub3cgeW91IGNhcGFibGUgb2YgdGhhdCwgSSBrbm93IHdlIGFyZSBjYXBhYmxlLiBMb25nIGxpdmUgdGhlIFJlcHVibGljIGFuZCBsb25nIGxpdmUgRnJhbmNlLjxcL3A+XG48cD5FRElUT1ImIzM5O1MgTk9URTogVGhpcyBhcnRpY2xlIGlzIGEgdHJhbnNsYXRpb24uIFBsZWFzZSBhY2NlcHQgb3VyIGFwb2xvZ2llcyBzaG91bGQgdGhlIGdyYW1tYXIgYW5kIFwvIG9yIHNlbnRlbmNlIHN0cnVjdHVyZSBub3QgYmUgcGVyZmVjdC48XC9wPiJdLCJjb250ZXh0X3R5cGUiOiJzaW5nbGUifQ==

MIL OSI Translation. Government of the Republic of France statements from English to French – Published June 14, 2018