T0s= c2VhcmNoUmVzdWx0cw== VFJVRQ== MTEz SWRlbnRpdHkgQ29uc3RydWN0aW9uIGluIExpdGVyYXJ5IFRleHRz SWRlbnRpdHkgQ29uc3RydWN0aW9uIGluIExpdGVyYXJ5IFRleHRz MQ== NTk5OTYzMDM= MzU= MzA= QTIwMDQwNjM= NTQ= MTEwNjc= NTA= RG9jdG9yYWw= bi9h TGl0ZXJhdHVyZQ== TGl0ZXJhdHVyZSAvIFBvZXRyeQ== TGl0ZXJhdHVyZSBSZXZpZXc= MQ== MQ== MQ== NzUw OTc0OA== MTI2ODk2NDAwMA== MQ== SWRlbnRpdHkgQ29uc3RydWN0aW9uIGluIExpdGVyYXJ5IFRleHRzCgpSZXByZXNlbnRhc2llIFZhbiBLbGV1cmxpbmcgSWRlbnRpdGVpdCBJbiBHZXNlbGVrdGVlcmRlIFRla3N0ZQoKVkFOICdOIEtMRVVSTElORyBTS1JZV0VSCgpSRVBSRVNFTlRBVElPTiBvZiBDT0xPVVJFRCBJREVOVElUWQoKSU4gU0VMRUNURUQgVEVYVFMKCiJJZiB3ZSBmb2xsb3cgdGhlIGJhZGdlIG9mIGNvbG9yIGZyb20gJ0FmcmljYW4nICdOZWdybycgdG8gJ2NvbG9yZWQgcmFjZScgdG8gJ2JsYWNrJyB0byAnQWZyby1BbWVyaWNhbicgdG8gJ0FmcmljYW4tQW1lcmljYW4nCgp3ZSBhcmVuJ3QgdGh1cyB0cmFjaW5nIHRoZSBoaXN0b3J5IG5vdCBvbmx5IG9mIGEgc2lnbmlmaWVyLCBhIGxhYmVsLCBidXQgYWxzbyBhIGhpc3Rvcnkgb2YgaXRzIGVmZmVjdHMiCgpSb2JlcnQgRS4gUGFyayAoMTg2NC0xOTQ0KSAoYXMgY2l0ZWQgaW4gQmFjayAmYW1wOyBTb2xvbW9zLCAyMDAwLCBwLjE0NSkuCgpUaGUgImNvbG91cmVkIGNhdGVnb3J5IiBpZGVudGlmaWVkIGluIDE5NTAgaW4gU291dGggQWZyaWNhIGNvbnN0aXR1dGVkIG9uZSBvZiB0aHJlZSBjYXRlZ29yaWVzOiBXaGl0ZSwgYmxhY2sgKEFmcmljYW4pLCBvciBjb2xvcmVkIChvZiBtaXhlZCBkZWNlbnQpLiAiVGhlIGNvbG91cmVkIGNhdGVnb3J5IGluY2x1ZGVkIG1ham9yIHN1Ymdyb3VwcyBvZiBJbmRpYW5zIGFuZCBBc2lhbnMsIE1vbmFsIENob2tzaGksIENhbGUgQ2FydGVyLCBEZWVwYWsgR3VwdGEsIGFuZCBSb2JlcnQgQWxsZW4gKDE5OTUsICZwYXJhOyAzKSBleHBsYWluIGluICJUaGUgaGlzdG9yeSBvZiBhcGFydGhlaWQgaW4gU291dGggQWZyaWNhLiIgRHVyaW5nIHRoaXMgdGltZSwgdGhlIFBvcHVsYXRpb24gUmVnaXN0cmF0aW9uIEFjdCByZXF1aXJlZCBhbGwgU291dGggQWZyaWNhbnMgcmFjaWFsbHkgY2xhc3NpZmllZCBpbnRvIG9uZSBvZiB0aGUgdGhyZWUgbm90ZWQgY2F0ZWdvcmllcywgImJhc2VkIG9uIGFwcGVhcmFuY2UsIHNvY2lhbCBhY2NlcHRhbmNlLCBhbmQgZGVzY2VudCIgKEliaWQuKS4KClRoZSBhcGFydGhlaWQgaW1wb3NlZCBwb2xpY3kgaW4gU291dGggQWZyaWNhIHByb3ZlZCBleHRyZW1lbHkgZWZmZWN0aXZlIGluIGFjaGlldmluZyBpdHMgZ29hbCBvZiBlbnN1cmluZyBwcmVmZXJlbnRpYWwgdHJlYXRtZW50IGZvciB3aGl0ZXMgYXMgaXQgaW1wb3NlZCBzZXZlcmUgcGVuYWx0aWVzIGZvciBwb2xpdGljYWwgcHJvdGVzdCwgZXZlbiBub24tdmlvbGVudCBkaXNzZW50LiBGaWZ0ZWVuIHllYXJzIGFmdGVyIHRoZSBsZWdpc2xhdGVkIGRlbW9jcmF0aXphdGlvbiBvZiBTb3V0aCBBZnJpY2FuIHNvY2lldHksIHRoZSByZXNlYXJjaGVyIGNvbnRpbnVlcyB0byBxdWVzdGlvbiB3aGV0aGVyIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgQ29sb3VyZWQgY29tbXVuaXR5IHJlbWFpbnMgaWRlbnRpY2FsIHRvIHRoYXQgZGVwaWN0ZWQgZHVyaW5nIHRoZSBhcGFydGhlaWQgZXJhLgoKVGhlIHJlc2VhcmNoZXIncyBpbnRlcmVzdCBpbiBzZWN1cmluZyBhbnN3ZXJzIHRvIHRoaXMgcXVlc3Rpb24gcmVsYXRpbmcgdG8gdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBDb2xvdXJlZCBjb21tdW5pdHkgaW5hZHZlcnRlbnRseSBzdGltdWxhdGVkIHRoZSBjb25jZXB0IGZvciB0aGUgY3VycmVudCB0ZXh0dWFsIGFuYWx5c2lzIHdoaWNoIGVtYnJhY2VzIHRoZSBxdWVzdCBvZiByZXNlYXJjaGluZyB0aGUgcG9ydHJheWFsIG9mIENvbG91cmVkcyBpbiBmaWN0aW9uYWwgd3JpdGluZy4gQXMgYSBDb2xvdXJlZCB3aG8gcGVyc29uYWxseSBleHBlcmllbmNlZCB0aGUgaW1wYWN0IG9mIGJlaW5nIGNsYXNzaWZpZWQgQ29sb3VyZWQsIGFuZCBvbmUgd2hvIHdpdG5lc3NlZCB0aGUgdHJhbnNmb3JtYXRpb24gb2YgdGhlIFNvdXRoIEFmcmljYW4gc29jaWV0eSwgdGhlIHJlc2VhcmNoZXIgcG9uZGVycyB3aGV0aGVyIG90aGVycyBzdGlsbCB2aWV3IGNvbG91cmVkcyBhcyBrYXJyZXRqaWVzbWVuc2UsIHJpZWxkYW5zZXJzIG9mIHRoZSBLYXJvbyBhbmQgdGhlIGdhbmdzdGVycyBvZiB0aGUgQ2FwZSBGbGF0cy4gVGhlIGFtYmlndW91cyBuYXR1cmUgb2YgQ29sb3VyZWQgaWRlbnRpdHksIGNvdXBsZWQgd2l0aCB0aGUgYWJzZW5jZSBvZiByZWNvcmRlZCBoaXN0b3JpZXMgYW5kIHVuYW1iaWd1b3VzIGlkZW50aWZpY2F0aW9uIHdpdGggY29sbGVjdGl2ZSBjdWx0dXJhbCBjb2RlcywgcmVzdWx0cyBpbiB0aGUgcmVwcmVzZW50YXRpb24gb2YgIkNvbG91cmVkIiBpZGVudGl0eSBiZWNvbWluZyBjb250ZXN0ZWQgYW5kIG1hcmdpbmFsLgoKQWx0aG91Z2ggZmljdGlvbmFsIHdyaXRpbmcgZG9lcyBub3QgYWx3YXlzIGNvbnN0aXR1dGUgYW4gZWZmZWN0aXZlIHZlaGljbGUgZm9yIHRoZSBob25lc3QgcmVwcmVzZW50YXRpb24gb2YgbGl2ZWQgZXhwZXJpZW5jZSBhbmQgcmVtZW1iZXJlZCBoaXN0b3J5LCBmaWN0aW9uIGNhbiByZWludGVycHJldCBtZW1vcnkgYnkgYWNjZXNzaW5nIHRoZSBlbW90aW9uYWwgdGV4dHVyZXMgb2YgcGFzdCBleHBlcmllbmNlcyBpbiBhIG1vcmUgZGlyZWN0IHdheS4gQXV0aG9ycyBvZiBmaWN0aW9uIGNyZWF0ZSBhIHJlYWxpdHkgdGhhdCBlbnRhaWxzIGNvbnNlcXVlbmNlcyBmb3IgdGhlIGNoYXJhY3RlcnMgImxpdmluZyIgdGhhdCByZWFsaXR5LiBCeSBleHBsb3JpbmcgdGhlIHJlcHJlc2VudGF0aW9uIG9mIENvbG91cmVkIGNoYXJhY3RlcnMsIHRoZSByZXNlYXJjaGVyIHJldmVhbHMgYSBzYW1wbGluZyBvZiB0aGUgY29uc3RydWN0ZWQgcmVhbGl0eSBhcyB3ZWxsIGFzIHRoZSBjb25zZXF1ZW5jZXMgb2Ygc3VjaCByZW5kaXRpb25zLgoKVGhlIHN0dWR5IHNwZWNpZmljYWxseSBzdXJ2ZXlzIHRoZSByZXByZXNlbnRhdGlvbiBvZiBDb2xvdXJlZHMgYXMgY2hhcmFjdGVycyBpbiB0aGUgd3JpdGluZyBvZiBBYnJhaGFtIFBoaWxsaXBzLiBQaGlsbGlwcycgZmlyc3Qgbm92ZWwgaW4gMTk5MiwgRGllIHZlcmR3YWFsZGUgbGFuZC4gU29tZXJzZXQtV2VzdDogUXVlaWxsZXJpZSwgY29uZnJvbnRlZCB0aGUgd2hpdGUgZG9taW5hdGVkIEFmcmlrYW5lciBsaXRlcmFyeSB3b3JsZCB3aXRoIHRoZSByZWFsaXR5IG9mIHRydWUgbGFuZHNjYXBlIG9mIGNvbG91cmVkIEFmcmlrYWFucy4gSGlzIGxpdGVyYXJ5IGRlYnV0IGV4cG9zZWQgdGhlIGhvcnJvcnMgb2YgYXBhcnRoZWlkIGFuZCBvcGVuZWQgdGhpcyB2aWxlIG9jY3VycmVuY2UgdXAgZm9yIHB1YmxpYyBzY3J1dGlueSB3aXRoaW4gdGhlIHdoaXRlLWRvbWluYXRlZCBBZnJpa2FhbnMgbGl0ZXJhcnkgd29ybGQuCgpUaGUgcmVjZW50IHN1Y2Nlc3Mgb2YgQWJyYWhhbSBQaGlsbGlwJ3MgdGhpcmQgbm92ZWwsIERpZSBFdmFuZ2VsaXMgdmFuIEthZ2dlbHNiZXJnIChUYWZlbGJlcmcsIDIwMDkpLCBhbmQgdGhlIDIwMDggYXdhcmRpbmcgb2YgdGhlIFBhdHJpY2sgUGV0ZXJzZW4gUHJpemUgbGFyZ2VseSBpbmZsdWVuY2VkIHRoZSByZXNlYXJjaGVyJ3MgY2hvaWNlIG9mIFBoaWxsaXBzIGZvciBjcml0aWNhbCBhcHByYWlzYWwuIFRoZSBtb3RpdmF0aW9uIGZvciBhd2FyZGluZyB0aGlzIHByaXplIHRvIFBoaWxsaXBzLCBhIENvbG91cmVkIG1hbiB3aG8gbGVmdCBzY2hvb2wgYWZ0ZXIgb25seSBmaXZlIHllYXJzIG9mIGZvcm1hbCBzY2hvb2xpbmcsIHN0ZW1zIGZyb20gdGhlIGZhY3QgaGUgd3JpdGVzIGFib3V0IGFwYXJ0aGVpZCwgYSB0YWJvbyB0aGF0IGhlIGJyaW5ncyBpbnRvIHRoZSBsaXZpbmcgcm9vbXMgb2Ygd2hpdGUgc3VidXJiaWEuIEhpcyBjaGFyYWN0ZXJzLCBsaXZpbmcsIGZlZWxpbmcgYmVpbmdzLCBoYXBwZW4gdG8gYmUgQ29sb3VyZWQgYXMgd2VsbC4KClJhdGlvbmFsZSBmb3IgdGhlIFN0dWR5CgpIb3cgZG9lcyBhIENvbG91cmVkIGluc2lkZXIsIGEgd3JpdGVyLCBjb25zdHJ1Y3QgQ29sb3VyZWQgaWRlbnRpdHk/IFdpbGwgdGhlIHdyaXRlcidzIHJlbmRpdGlvbiBiZSBzdGVyZW90eXBpY2FsIG9yIGEgcmFkaWNhbCByZWRlZmluaXRpb24/IFdpbGwgdGhlIHdyaXRlciBwZXJjZWl2ZSBDb2xvdXJlZHMgYXMgc29jaWFsIHBlcmlwaGVyYWxzIG9yIGFzIGNlbnRyYWwgdG87IGluaGVyZW50IGluIHRoZSBzYW1lIG5ldyAicmFpbmJvdyIgc29jaWV0eSBvZiBwb3N0IGFwYXJ0aGVpZCBTb3V0aCBBZnJpY2E/IFdpbGwgdGhlIGNoYXJhY3Rlcml6YXRpb25zIGFuZCByZXByZXNlbnRhdGlvbnMgbGllIHNvbWV3aGVyZSBvbiB0aG9zZSBjb250aW51dW1zPwoKQSBteXJpYWQgb2YgcXVlc3Rpb25zIGxpa2UgdGhlc2UgaGF2ZSBlbmNvdXJhZ2VkIHRoZSByZXNlYXJjaGVyJ3MgcXVlc3QgdG8gaW52ZXN0aWdhdGUgdGhlIHJlcHJlc2VudGF0aW9uIG9mIENvbG91cmVkcyBieSBhIENvbG91cmVkIHdyaXRlci4gVGhlIGludmVzdGlnYXRpb24gb2YgcGVydGluZW50IGlzc3VlcyBpbiB0aGlzIGFyZWEgZnJvbSBhbiBlbWljIG9yIGVwaWM/IHBlcnNwZWN0aXZlIHJhdGhlciB0aGFuIGFuIGV0aWMgb3IgZXRoaWM/IHBlcnNwZWN0aXZlIHdpdGggdGhlIG91dHNpZGVyIGdhemUgb24gdGhlIE90aGVyLCB0aGUgcmVzZWFyY2hlciBhc3NlcnRzLCBjb250cmlidXRlcyB0byB0aGUgc3R1ZHkncyB2YWx1ZSBhbmQgc2lnbmlmaWNhbmNlLiBBbmFseXNpcyBvZiB0aGUgdGV4dHMgZHVyaW5nIHRoZSBzdHVkeSByZXZlYWxzIGhvdyBhIENvbG91cmVkIGF1dGhvciBoYXMgcmVwcmVzZW50ZWQgaGlzIGNvbW11bmFsIGhpc3RvcnkuIFRocm91Z2ggY29uc3RydWN0aW5nIG5hcnJhdGl2ZXMgb2YgbGl2ZWQgZXhwZXJpZW5jZSwgaHlicmlkIGNvbW11bml0aWVzIGNhbiBjaGFsbGVuZ2UgZG9taW5hbnQgc3RlcmVvdHlwZXMgYW5kIHN1YnZlcnQgZGlzY291cnNlcyBvZiBvdGhlcm5lc3MgYW5kIGRpZmZlcmVuY2UuCgpNdWNoIHJlc2VhcmNoIGhhcyBiZWVuIGNvbmR1Y3RlZCBvbiBzdGVyZW90eXBpbmcgaW4gU291dGggQWZyaWNhbiBsaXRlcmF0dXJlLCBib3RoIGluIEVuZ2xpc2ggYW5kIGluIEFmcmlrYWFucyB3cml0aW5nLCBuZXZlcnRoZWxlc3MsIGEgZGVhcnRoIG9mIHN0dWRpZXMgZXhpc3RzLCByZWxhdGluZyB0byB0aGlzIHN0dWR5J3MgZm9jdXMgd2l0aCB0aGUgQ29sb3VyZWQgYXMgdGhlIG9iamVjdCBvZiBzdHVkeSAocmVmZXJlbmNlcykuIEluIHJlc2VhcmNoIGZvY3VzaW5nIG9uIHRoZSBub24tRXVyb3BlYW4gaW4gbGl0ZXJhdHVyZSwgdGhlIENvbG91cmVkIGhhcyByb3V0aW5lbHkgYmVlbiBsdW1wZWQgd2l0aCBvdGhlciBub24td2hpdGUgZ3JvdXBzLCBhbG1vc3QgbmV2ZXIgcG9ydHJheWVkIGFzIGEgc2VwYXJhdGUgZ3JvdXBpbmcgcmVsYXRpbmcgaXRzIG93biBpZGVudGl0eSBhbmQgY3VsdHVyZSAocmVmZXJlbmNlKS4gUHJldmlvdXMgc3R1ZGllcyBieSBHZXJ3ZWwgKDE5ODgpIGFuZCBWYW4gZGVyIFJvc3MgKDE5NzkpIGhhdmUgZXhwbG9yZWQgdGhlIGxvdCBvZiB0aGUgImNvbG91cmVkIiBpbiBBZnJpa2FhbnMgbGl0ZXJhdHVyZTsgaG93ZXZlciwgdGhlIHJlc2VhcmNoZXIgaGFzIG5vdCBhbnkgcHJldmlvdXMgd29yayB0aGF0IHByaW1hcmlseSBmb2N1c2VkIG9uIHRoZSBDb2xvdXJlZC4KCldoZXJlIHByZXZpb3VzIHN0dWRpZXMgZXhhbWluZWQgdGhlIHN0ZXJlb3R5cGluZyBvZiBDb2xvdXJlZCBjaGFyYWN0ZXJzLCB0aGlzIHN0dWR5IGNyaXRpY2FsbHkgYW5hbHlzZXMgbnVtZXJvdXMgc2VsZWN0ZWQgdGV4dHMgdG8gZXhwbG9yZSB0aGUgdGVycmFpbiBvZiBpZGVudGl0eSBhbmQgcmVwcmVzZW50YXRpb24gb2YgdGhlIENvbG91cmVkIGNoYXJhY3RlciBiZXlvbmQgdGhlIHBzeWNob2xvZ2ljYWwgY29uY2VwdCBvZiBzdGVyZW90eXBpbmcuIFRoZSBzdHVkeSBkb2VzIG5vdCBkdXBsaWNhdGUgcmVzZWFyY2ggdXNpbmcgYSBkaWZmZXJlbnQgcmFjaWFsIGNhdGVnb3J5LCBidXQgdXNlcyBjb25jZXB0aW9ucyBvZiBDb2xvdXJlZG5lc3MgdG8gZW5oYW5jZSB0aGUgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW5mbHVlbmNlIHdyaXRlcnMgbWF5IGV4ZXJ0IG9uIGhvdyBhIHBhcnRpY3VsYXIgZ3JvdXAgb2YgcGVvcGxlIG1heSBiZSBjb25zdHJ1ZWQuCgpSZXNlYXJjaCBRdWVzdGlvbnMgQWRkcmVzc2VkCgpUaGUgbGl0ZXJhdHVyZSByZXZpZXcgYWRkcmVzc2VzIHRoZSBzdHVkeSdzIHByaW1hcnkgcmVzZWFyY2ggcXVlc3Rpb246IEhvdyBtYXkgdGhlIGNoYXJhY3Rlcml6YXRpb25zIGFuZCByZXByZXNlbnRhdGlvbnMgYSAiY29sb3VyZWQiIGluc2lkZXIsIGEgZmljdGlvbiB3cml0ZXIsIGRldmVsb3BzIGluIGhpcyBzdG9yeSBpbmZsdWVuY2UgaG93IHJlYWRlcnMgbWF5IGNvbnN0cnVlIGEgcGFydGljdWxhciBncm91cCBvZiBwZW9wbGU/IFRoZSBmb2xsb3dpbmcgZm91ciByZXNlYXJjaCBxdWVzdGlvbnMsIHByZXNlbnRlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIHRleHR1YWwgYW5hbHlzaXMsIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIHByaW1hcnkgcmVzZWFyY2ggcXVlc3Rpb24gYW5kIGhlbHAgZ3VpZGUgdGhlIHN0dWR5J3MgcmVzZWFyY2ggZWZmb3J0czoKCjEuIFdoYXQgaXMgQ29sb3VyZWQgaWRlbnRpdHk/CgoyLiBIb3cgaXMgQ29sb3VyZWQgaWRlbnRpdHkgY29uc3RydWN0ZWQgaW4gdGhlIHRleHRzIHNlbGVjdGVkIGZvciBpbmNsdXNpb24gaW4gdGhlIHN0dWR5PwoKMy4gYSkgSG93IGRvIHRoZSBhdXRob3JzIHJlcHJlc2VudCAiQ29sb3VyZWRuZXNzIiByZXByZXNlbnRlZCBpbiB0aGUgc2VsZWN0ZWQgdGV4dHM/CgpiKSBXaHkgZG8gdGhlIGF1dGhvcnMgcmVwcmVzZW50ICJDb2xvdXJlZG5lc3MiIGluIHRoaXMgbWFubmVyPwoKNC4gSW4gd2hhdCByZXNwZWN0cyBkbyB0aGUgaWRlbnRpdHkgb2YgdGhlIGF1dGhvciBpbmZsdWVuY2UgaGlzIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjaGFyYWN0ZXJzPwoKT3JnYW5pemF0aW9uIG9mIHRoZSBMaXRlcmF0dXJlIFJldmlldwoKVGhlIG9yZ2FuaXphdGlvbiBvZiB0aGUgdGhlbWF0aWMgbGl0ZXJhdHVyZSBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIHNldmVuIHNlY3Rpb25zOgoKMS4gSW50cm9kdWN0aW9uCgoyLiBDb2xvdXJlZCBJZGVudGl0eQoKMy4gQ29uY2VwdGlvbnMgb2YgQ29sb3VyZWRuZXNzCgo0LiBSZXByZXNlbnRhdGlvbnMgb2YgdGhlIENvbG91cmVkCgo1LiBUaGUgQXV0aG9yJ3MgSWRlbnRpdHkgYW5kIEluZmx1ZW5jZQoKNi4gVGhlIENvbG91cmVkJ3MgQXV0aG9yIENvbnRpbnVpbmcgUG9ydHJheWFsCgo3LiBDb25jbHVzaW9ucwoKRHVyaW5nIHRoZSBsaXRlcmF0dXJlIHJldmlldywgdGhpcyByZXNlYXJjaGVyIGFuYWx5emVzIG51bWVyb3VzIHB1YmxpY2F0aW9ucyBieSBhIG51bWJlciBvZiBDb2xvdXJlZCBhdXRob3JzIGFzIHdlbGwgYXMgaW5mb3JtYXRpb24gb3RoZXIgcmVzZWFyY2hlcnMgaGF2ZSBwdWJsaXNoZWQuIFRoZSBzb3VyY2VzIG9mIGluZm9ybWF0aW9uL2RhdGEgdGhlIHJlc2VhcmNoZXIgYWNjZXNzZWQgaW5jbHVkZToKCk9ubGluZSBMaWJyYXJpZXMKClF1ZXN0aWEKCkhpZ2hiZWFtCgpXZWIgU2VhcmNoIEVuZ2luZXMKCkdvb2dsZQoKQmluZwoKV2Vic2l0ZQoKTm90ZWQgaW4gV29ya3MgQ2l0ZWQgbGlzdAoKTGlicmFyeQoKTm90ZWQgaW4gV29ya3MgQ2l0ZWQgbGlzdAoKVGhlIHJlc2VhcmNoZXIgcGVyZm9ybXMgYW4gZXh0ZW5zaXZlIHJldmlldyBvZiByZWxldmFudCwgY3JlZGlibGUgbGl0ZXJhdHVyZSB0byBjb25kdWN0IHRoZSB0ZXh0dWFsIGFuYWx5c2lzLCB1c2luZyBhIGNyaXRpY2FsIHBhcmFkaWdtIHdoZW4gZXhhbWluaW5nIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgQ29sb3VyZWQgY2hhcmFjdGVycyBpbiB0aGUgc2VsZWN0ZWQgdGV4dHMgYnkgYSBDb2xvdXJlZCBhdXRob3IuCgpbRVhQTEFJTl0gPyB3aHkgdGV4dHVhbCBhbmFseXNpcyA/IHdoeSBjcml0aWNhbCB0aGVvcnkgP3doaWNoIGNyaXRpY2FsIHRoZW9yeSA/IGRhdGEgY29sbGVjdGlvbi9wcm9kdWN0aW9uIHRlY2huaXF1ZXM/IHByb2Nlc3Mgb2YgZGF0YSBhbmFseXNpcz8gZGVzaWduIGxpbWl0YXRpb25zID8gdmFsaWRpdHksIHJlbGlhYmlsaXR5LCB0cnVzdHdvcnRoaW5lc3M/IGV0aGljYWwgaXNzdWVzCgpBIG15cmlhZCBvZiBtZXRob2RzIGhhdmUgZW1lcmdlZCBmcm9tIGhlcm1lbmV1dGljcyBmb3IgYW5hbHl6aW5nIHRleHRzLiBUaGVzZSBtZXRob2RzICJzaGFyZSBhIGNvbW1vbiBwdXJwb3NlOiBUbyBjcml0aWNpemUgb2xkIGFuZCBuZXcgY3VsdHVyYWwgcHJhY3RpY2VzIHNvIHRoYXQgdGhvc2UgbW9zdCBkZXNlcnZpbmcgb2YgYXR0ZW50aW9uIGNhbiBiZSBpZGVudGlmaWVkIGFuZCBleHBsaWNhdGVkIGFuZCB0aGUgbGVzcyBkZXNlcnZpbmcgY2FuIGJlIGRpc21pc3NlZCIgKEJhcmFuICZhbXA7IERhdmlzLCAyMDA4LCBwLiAyMzApLiBDb21taXR0ZWQgdG8gcHJvbW90aW5nIGhpZ2hlciBjdWx0dXJlIHZhbHVlcywgY29udGVtcG9yYXJ5IGNyaXRpY2FsIHRoZW9yeSBpbmNsdWRlcyBib3RoIG5lby1NYXJ4aXN0IGFuZCBoZXJtZW5ldXRpYyBhcHByb2FjaGVzLiBIeWJyaWQgdGhlb3JpZXMgY29tYmluZSBib3RoLiAocmVkIGxldHRlcnMgbm90IHJld3JpdHRlbikKClNvbWUgaGlzdG9yaWNhbGx5IHNpZ25pZmljYW50IHNjaG9vbHMgb2YgY3JpdGljYWwgdGhlb3J5IGluY2x1ZGU6IFRoZSBGcmFua2ZvcnQgU2Nob29sIGRldmVsb3BlZCBhdCB0aGUgVW5pdmVyc2l0eSBvZiBGcmFua2ZvcnQgZHVyaW5nIHRoZSAxOTMwcyBjb21iaW5lZCBNYXJ4aXN0IGNyaXRpY2FsIHRoZW9yeSB3aXRoIGhlcm1lbmV1dGljcy4gV3JpdGluZ3MgaWRlbnRpZmllZCBhbmQgcHJvbW90ZWQgYSB2YXJpZXR5IG9mIGhpZ2ggY3VsdHVyZSBmb3JtcyBsaWtlIGFydCwgZ3JlYXQgbGl0ZXJhdHVyZSBhbmQgc3ltcGhvbnkgbXVzaWMuIChwLiAyMDgpCgpJbiB0aGUgYXJ0aWNsZSwgIkFwcGxpY2F0aW9uIG9mIGEgY2FzZSBzdHVkeSBtZXRob2RvbG9neSwiIFcuIFRlbGxpcyAoMTk5NykgYXJndWVzIHRoYXQgbm8gc2luZ2xlIG9mIGluZm9ybWF0aW9uIHNvdXJjZSBwb3NzZXNzZXMgYSB0b3RhbCBhZHZhbnRhZ2Ugb3ZlciB0aGUgb3RoZXJzLCBidXQgdGhhdCB0aGV5IGluc3RlYWQgbWF5IGNvbXBsZW1lbnQgZWFjaCBvdGhlciBhbmQgdXNlZCB0b2dldGhlci4gSWRlYWxseSBhIHN0dWR5IHNob3VsZCB1c2UgYXMgbWFueSBzb3VyY2VzIGFzIHByb3ZlIHJlbGV2YW50IHRvIHRoZSBzdHVkeS4gVGFibGUgMSBkZXBpY3RzIGEgbnVtYmVyIG9mIHN0cmVuZ3RocyBhbmQgd2Vha25lc3NlcyBvZiBlYWNoIHR5cGUgb2YgImV2aWRlbmNlLiIKClRhYmxlIDE6IFR5cGVzIG9mIEV2aWRlbmNlIChZaW4sIGFzIGNpdGVkIGluIFRlbGxpcywgMTk5NywgUmVjb21tZW5kZWQgUHJvY2VkdXJlcyBTZWN0aW9uKS4KClNvdXJjZSBvZiBFdmlkZW5jZQoKU3RyZW5ndGhzCgpXZWFrbmVzc2VzCgpEb2N1bWVudGF0aW9uCgpTdGFibGUgLSByZXBlYXRlZCByZXZpZXcgdW5vYnRydXNpdmUgLSBleGlzdCBwcmlvciB0byBjYXNlIHN0dWR5IGV4YWN0IC0gbmFtZXMgZXRjLgoKYnJvYWQgY292ZXJhZ2UgLSBleHRlbmRlZCB0aW1lIHNwYW4gcmV0cmlldmFiaWxpdHkgLSBkaWZmaWN1bHQgYmlhc2VkIHNlbGVjdGl2aXR5IHJlcG9ydGluZyBiaWFzIC0gcmVmbGVjdHMgYXV0aG9yIGJpYXMgYWNjZXNzIC0gbWF5IGJlIGJsb2NrZWQKClRoZSByZXNlYXJjaGVyIGNvbnRlbmRzIHRoYXQgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBDb2xvdXJlZCBjaGFyYWN0ZXIgdGV4dHMgb2Z0ZW4gZGVwaWN0IHRoZSBjaGFyYWN0ZXIgYXMgYSBoZWxwbGVzcywgY2hpbGQtbGlrZSBjcmVhdHVyZTsgcGl0aWVkIGJ5IGhpcyBFdXJvcGVhbiBzdXBlcmlvcnMsIHdobyB0aGVuIGJlY29tZSBoaXMgc2F2aW91cnMuIFN1Y2ggcHJlanVkaWNlZCByZXByZXNlbnRhdGlvbiBtYXkgbGVhZCB0byBhIGdlbmVyYWwgYXR0aXR1ZGUgb2Ygd2FudGluZyB0byBoZWxwIHRoZXNlICJoZWxwbGVzcyIgY3JlYXR1cmVzLiBTdWNoIHBhdGVybmFsaXNtIG1ha2VzIGl0IGRpZmZpY3VsdCB0byBwZXJjZWl2ZSBDb2xvdXJlZCBjaGFyYWN0ZXJzIHRvIGFzIGluZGVwZW5kZW50IGluZGl2aWR1YWxzLiBEdXJpbmcgdGhlIGxpdGVyYXR1cmUgcmV2aWV3J3MgbmV4dCBzZWdtZW50LCB0aGUgcmVzZWFyY2hlciByZWxhdGVzIGluZm9ybWF0aW9uIHRoYXQgYWRkcmVzc2VzIHRoZSBmaXJzdCByZXNlYXJjaCBxdWVzdGlvbjogV2hhdCBpcyBDb2xvdXJlZCBpZGVudGl0eT8KCklJOiBDb2xvdXJlZCBJZGVudGl0eQoKUGhpbGxpcHMnIGZpY3Rpb25hbCB3cml0aW5ncyBldm9sdmVkIGZyb20gdGhlIHRpbWUgb2YgdGhlIHByYWN0aWNlIG9mIGFwYXJ0aGVpZCwgd2hpY2gmIzgyMzA7 SWRlbnRpdHkgTG9zaW5nIGFuZCBGaW5kaW5nIGEgU2Vuc2Ugb2Y= SWRlbnRpdHkgTG9zaW5nIGFuZCBGaW5kaW5nIGEgU2Vuc2Ugb2Y= MQ== NjIwNzQ3OA== Mw== OA== QTExNTQ3MTQ= MjEwNDQz MTEwNjc= NTA= QVBB TGl0ZXJhdHVyZQ== TGl0ZXJhdHVyZSAvIFBvZXRyeQ== VGhlc2lz MQ== MQ== MQ== MTY2MTI= MjMzNw== MTI2MDIwODgwMA== MQ== SWRlbnRpdHkKCkxvc2luZyBhbmQgRmluZGluZyBhIFNlbnNlIG9mIFNlbGY6IFBlcnNvbmFsIGFuZCBDdWx0dXJhbCBJZGVudGl0eSBpbiBXaGVyZSBFdXJvcGUgQmVnaW5zIGFuZCBEaWN0ZWUKCkl0IGlzIGhhcmQgdG8gaW1hZ2luZSBhIHdvcmsgb2YgbGl0ZXJhdHVyZSwgZmFjdCBvciBmaWN0aW9uLCBwb2VtIG9yIHByb3NlLCBub3ZlbCBvciBzdG9yeSwgdGhhdCBpcyBub3QgaW4gc29tZSB3YXkgY29uY2VybmVkIHdpdGggdGhlIGlzc3VlIG9mIGlkZW50aXR5LiBBdCB0aGUgZXNzZW5jZSBvZiBhbGwgbGl0ZXJhdHVyZSwgYW5kIGluZGVlZCBvZiBhbGwgYXJ0IGFuZCBhcmd1YWJseSBvZiBhbGwgaHVtYW4gZW5kZWF2b3JzLCBpcyBhIHNlbnNlIG9mIHNlbGYtZXhwcmVzc2lvbiBhbmQgYXNzZXJ0aW9uLiBMaWZlLCB3aGV0aGVyIGNvbnNjaW91c2x5IG9yIG5vdCwgaXMgYWJvdXQgZmluZGluZyBvbmUncyBzZW5zZSBvZiBzZWxmLCBhbmQgY2FydmluZyBvdXQgYSBwbGFjZSBpbiB0aGUgd29ybGQgZm9yIHRoYXQgc2VsZiB0byBicmVhdGhlLiBUaGlzIGVuZGVhdm9yIGlzLCBvZiBjb3Vyc2UsIG1ldCB3aXRoIGdyZWF0ZXIgb3IgbGVzc2VyIGRlZ3JlZXMgb2Ygc3VjY2VzcyBieSB0aGUgbWFueSBpbmRpdmlkdWFscyBhdHRlbXB0aW5nIGl0LCBib3RoIGluIHJlYWwgbGlmZSBhbmQgaW4gdGhlIHdvcmxkIG9mIGxpdGVyYXJ5IGZpY3Rpb24sIGJ1dCBpdCBpcyBjb21tb24gdG8gYWxsLiBTb21lIHdvcmtzLCBob3dldmVyLCBhcmUgbW9yZSBleHBsaWNpdGx5IGFib3V0IHRoaXMgc2VhcmNoIGZvciBhbmQvb3IgY3JlYXRpb24gb2YgaWRlbnRpdHksIGhvd2V2ZXIuCgpUd28gc3VjaCB3b3JrcyBmcm9tIHRoZSBtb2Rlcm4gcGVyaW9kLCBkZWFsaW5nIHdpdGggc2ltaWxhciBpc3N1ZXMgb2YgaWRlbnRpdHkgaW4gbWFya2VkbHkgZGlmZmVyZW50IHdheXMsIGFyZSB0aGUgc2hvcnQgc3RvcnkgY29sbGVjdGlvbiBieSBZb2tvIFRhd2FkYSBlbnRpdGxlZCBXaGVyZSBFdXJvcGUgQmVnaW5zIGFuZCBEaWN0ZWUsIHRoZSBub3ZlbC1lc3F1ZSBjb2xsZWN0aW9uIG9mIHBpZWNlcyBieSBUaGVyZXNhIEhhayBLeXVuZyBDaGEuIEJvdGggb2YgdGhlc2UgYXV0aG9ycyBhcmUgQXNpYW4gd29tZW4gd2hvIGpvaW5lZCB0aGUgV2VzdGVybiB3b3JsZCBkdXJpbmcgdGhlIHBvc3Rjb2xvbmlhbCBwZXJpb2Qgb2YgdGhlIGxhdHRlciBoYWxmIG9mIHRoZSB0d2VudGlldGggY2VudHVyeSwgYW5kIHRoaXMgaGFzIGdyZWF0bHkgaW5mbHVlbmNlZCBib3RoIHRoZSBjcmVhdGlvbiBhbmQgdGhlIHJlY2VwdGlvbiBhbmQgaW50ZXJwcmV0YXRpb24gb2YgdGhlaXIgd29ya3MuIFRoZXJlIGFyZSBpbmRlZWQgYSBncmVhdCBtYW55IHNpbWlsYXJpdGllcyBpbiB0aGVzZSB0d28gd29ya3MgYXMgZmFyIGFzIHRoZSBjcmVhdGlvbiBvZiBhIHNlbnNlIG9mIGlkZW50aXR5IGluIGEgZm9yZWlnbiBhbmQvb3IgY2hhbmdpbmcgY3VsdHVyZSBnb2VzLCBhbmQgdGhlcmUgYXJlIGV2ZW4gc29tZSBzdHlsaXN0aWMgc2ltaWxhcml0aWVzLiBQYXJ0IG9mIHRoaXMgY2FuIGJlIHNlZW4gYXMgdGhlIG5lY2Vzc2l0eSBvZiB0aGUgcG9zdGNvbG9uaWFsIGN1bHR1cmFsIHNpdHVhdGlvbiB0aGF0IGJvdGggd29tZW4gd2VyZSBjb25mcm9udGVkIHdpdGggYW5kIHNoYXBlZCBieSwgd2hpY2ggaXMgZGVtb25zdHJhdGVkIGJ5IHRoZSBmcmFjdHVyZWQgbmF0dXJlIG9mIHRoZWlyIHRhbGVzLgoKQXQgdGhlIHNhbWUgdGltZSwgdGhlIGF1dGhvcnMgaGF2ZSB2ZXJ5IGRpZmZlcmVudCBwZXJzcGVjdGl2ZXMgYW5kIGF0dGl0dWRlcywgYW5kIGl0IGlzIGJvdGggbmFpdmUgYW5kIGZvb2xoYXJkeSB0byBzdWdnZXN0IHRoYXQgdGhlaXIgc3R5bGVzIGFuZCBwZXJzcGVjdGl2ZXMgYXJlIHdob2xseSBkZXJpdmVkIGZvcm0gdGhlaXIgImZvcmVpZ24iIHN0YXR1cyBpbiBhIHBvc3Rjb2xvbmlhbCBXZXN0ZXJuIHdvcmxkLiBUaG91Z2ggdGhlc2UgZmFjdHMgb2YgdGhlaXIgZXhpc3RlbmNlIGFyZSBjZXJ0YWlubHkgaW5lc2NhcGFibGUsIHRoZXkgYXJlIG5vdCBhbGwtcGVydmFzaXZlIG5vciBjb21wbGV0ZWx5IGRpY3RhdG9yaWFsIHdoZW4gaXQgY29tZXMgdG8gc2hhcGluZyBodW1hbiBpZGVudGl0aWVzLCBvZiBhdXRob3JzIG9yIG9mIGNoYXJhY3RlcnMuIFdoYXQgaXMgbW9zdCByZW1hcmthYmxlIGFib3V0IHRoZXNlIHR3byB3b3JrcyB3aGVuIHN0dWRpZWQgaW4gdW5pc29uLCB0aGVuLCBpcyB0aGUgZ3JlYXQgZGVhbCBvZiBzaW1pbGFyaXR5IHRoYXQgZXhpc3RzIGluIHRoZWlyIHJlZmxlY3Rpb25zIGFuZCBjb25jbHVzaW9ucyByZWdhcmRpbmcgdGhlIGZvcm1hdGlvbiBvZiBpZGVudGl0eSBkZXNwaXRlIHRoZSBkaXNwYXJpdHkgaW4gdGhlaXIgc3R5bGVzIGFuZCBwZXJzcGVjdGl2ZXMuIFRob3VnaCB0aGVzZSBhdXRob3JzIGFuZCB0aGVpciB3b3JrcyBjYW4gY2VydGFpbmx5IGJlIHNlZW4gaW4gbGlnaHQgZiB0aGVpciBpbmRpdmlkdWFsIHBlcnNvbmFsIGhpc3RvcmllcywgaXQgaXMgdGhyb3VnaCB0aGUgY29tbW9uYWxpdGllcyBvZiB0aGVpciBsaXRlcmFyeSBlZmZvcnRzIHRoYXQgYSB0cnVlIGNvbmNlcHQgb2YgaWRlbnRpdHkgaW4gdGhlIHBvc3Rjb2xvbmlhbCB3b3JsZCAtLSBhbiBpZGVudGl0eSB0aGF0IGlzIGJvdGggaW5kaXZpZHVhbCBhbmQgdW5pZnlpbmcgLS0gY2FuIGJlIGZpcm1seSBlbHVjaWRhdGVkLgoKV2hlcmUgRXVyb3BlIEJlZ2lucwoKVGhlIGNvbmNlcHQgb2YgaWRlbnRpdHkgYXMgYSBmbHVpZCBhbmQgZXZlbiBjb25zY2lvdXMgY29uc3RydWN0aW9uIGlzIGRlYWx0IHdpdGggZXhwbGljaXRseSByaWdodCBmcm9tIHRoZSBvcGVuaW5nIHBhZ2VzIG9mIFRhd2FkYSdzIFdoZXJlIEV1cm9wZSBCZWdpbnMuIEluIHRoZSBvcGVuaW5nIHN0b3J5LCAiVGhlIEJhdGgsIiB0aGUgbmFycmF0b3Igbm90ZXMgdGhhdCB0aGUgaHVtYW4gYm9keSBpcyBsYXJnZWx5IG1hZGUgdXAgb2Ygd2F0ZXIgYW5kIGlzIHRoZXJlZm9yZSBoaWdobHkgbXV0YWJsZSBhbmQgY2hhbmdpbmc7IGluIHRoZSBsYXJnZXIgY29udGV4dCBvZiB0aGUgc3RvcnkgdGhpcyBiZWNvbWVzIGEgdmVyeSB0aGlubHkgdmVpbGVkIG1ldGFwaG9yIGZvciB0aGUgc3VwcmVtZSBtdXRhYmlsaXR5IG9mIGludGVybmFsIGlkZW50aXR5LCBhbmQgbm90IHNvbGVseSBleHRlcm5hbCBwZXJjZXB0aW9ucy4gVGhlbWVzIG9mIHdhdGVyIGFuZCByZWZsZWN0aW9uIGFzIHRoZXkgcmVsYXRlIHRvIGlkZW50aXR5IGFib3VuZCBpbiB0aGUgb3RoZXIgc3RvcmllcyBvZiB0aGlzIGNvbGxlY3Rpb24sIG1ha2luZyBpdCBxdWl0ZSBjbGVhciBob3cgZmx1aWQgaWRlbnRpdHkgaXMgZm9yIFRhd2FkYS4KCkl0IGlzIG5vdCBtZXJlbHkgcGVyc29uYWwgaWRlbnRpdHkgdGhhdCBUYXdhZGEgY29udGVuZHMgd2l0aCBpbiAiVGhlIEJhdGgiIGFuZCBoZXIgb3RoZXIgc3RvcmllcywgaG93ZXZlciwgYnV0IGFsc28gaGVyIGN1bHR1cmFsIGlkZW50aXR5LiBUaG91Z2ggdGhpcyBpcyBub3QgZXhwbGljaXRseSByZXZlYWxlZCBpbiB0aGUgZmlyc3QgbW9tZW50cyBvZiB0aGUgc3RvcnksIHRoZSBpbXBvcnRhbmNlIG9mIGN1bHR1cmUgYW5kIHRoZSBuYXJyYXRvcidzIHBvc2l0aW9uIGluIGhlciBzdXJyb3VuZGluZyBjdWx0dXJlIHF1aWNrbHkgYmVjb21lcyBhcHBhcmVudC4gSGVyIGpvYiBhcyBhbiBpbnRlcnByZXRlciByZW5kZXJzIGhlciBjdWx0dXJhbCBuZWdvdGlhdGlvbnMgcXVpdGUgZXhwbGljaXQsIGFuZCBhIGNlcnRhaW4gYW1iaXZhbGVuY2UgLS0gbGlrZSB0aGF0IG9mIHdhdGVyLCB3aGljaCBhbHdheXMgZm9sbG93cyB0aGUgcGF0aCBvZiBsZWFzdCByZXNpc3RhbmNlIC0tIGhhcyBiZWVuIGRldGVjdGVkIGluIHRoZSBuYXJyYXRvcidzIGF0dGl0dWRlIChGYWNoaW5nZXIgNDYpLiBJbiB0aGUgbHVuY2ggc2NlbmUgb2YgdGhpcyBzdG9yeSwgZXNwZWNpYWxseSwgd2hlcmUgdGhlIGJsb2F0ZWQgZmlzaCByZWNhbGxzIHRoZSBlYXJsaWVyIHN0b3J5IG9mIHRoZSB3b21hbiB3aG8gdHVybnMgaW50byBhIGZpc2ggZm9yIGhlciBncmVlZCwgdGhlIG5hcnJhdG9yIHBlcmNlaXZlcyBoZXJzZWxmIC0tIGFuZCBpcyBzaG93biB0byB0aGUgcmVhZGVyIC0tIGFzIGNhdWdodCBiZXR3ZWVuIHR3byBjdWx0dXJlcywgdGhhdCBvZiBoZXIgb3duIGV0aG5pY2l0eSBhbmQgdGhhdCBvZiBoZXIgbGFyZ2VyIHNvY2lldHkuIFNoZSBkb2VzIG5vdCB1c2UgdGhpcyBhcyBhbiBhY3RpdmUgbW9tZW50IHRvIGZvcmdlIGFuIGluZGl2aWR1YWwgaWRlbnRpdHksIGhvd2V2ZXIsIGJ1dCByYXRoZXIgaXMgcmVsaWV2ZWQgdG8gaGF2ZSBhIGJyZWFrIGZyb20gaW50ZXJwcmV0aW5nIHdoaWxlIHBlb3BsZSBlYXQgKFRhd2FkYSAxNjsgRmFjaGluZ2VyIDQ2LTcpLiBUaGUgZWZmb3J0IGludm9sdmVkIGluIHNoYXBpbmcgYW4gaWRlbnRpdHkgaXMgc2hvd24gdG8gYmUgZW5vcm1vdXMsIGFuZCBwZXJoYXBzIGEgbGFyZ2VyIHRhc2sgdGhhbiBtb3N0IGluZGl2aWR1YWxzIGFyZSB1cCB0by4KCk5vdCBhbGwgb2YgVGF3YWRhJ3Mgc3Rvcmllcywgc29tZSBvZiB3aGljaCB0YWtlIHRoZSBmb3JtIG9mIHBvZW1zIGZvciBsYXJnZSBwb3J0aW9ucyBvZiB0aGVpciB0ZXh0LCBhcmUgYXMgc3RyYWlnaHRmb3J3YXJkIGFuZCBlYXNpbHkgZGVjaXBoZXJlZCBhcyAiVGhlIEJhdGgsIiB3aGljaCBpcyBjb21wbGV4IGVub3VnaCBiZW5lYXRoIGl0cyBzdXJmYWNlLiBJbiAiVGhlIFJlZmxlY3Rpb24sIiBhIG1vbmsncyBzZW5zZSBvZiBpZGVudGl0eSBpcyBlcXVhbGx5IGFzIGxvc3QgLS0gb3IgcGVyaGFwcyBmb3VuZCAtLSBhcyBpcyB0aGUgbmFycmF0b3IncyBpbiAiVGhlIEJhdGgiOyBmYWxsaW5nIGludG8gYSBwb25kIGluIHB1cnN1aXQgb2YgaGlzIHJlZmxlY3Rpb24gYW5kIGV2ZW50dWFsbHkgZHJvd25pbmcsIHRoaXMgdGFsZSBpcyBhbHNvIGEgY3VyaW91cyBibGVuZCBvZiBXZXN0ZXJuIGFuZCBFYXN0ZXJuIHRyYWRpdGlvbnMgYW5kIG15dGhvbG9naWVzLCBhcyB0aGUgbW9uayBmb3JtcyBhIHNvcnQgb2YgbW9kZXJuLWRheSBOYXJjaXNzdXMuIFRoaXMgdW5kZXJsaW5lcyBtdWNoIG9mIHRoZSBpc3N1ZSBvZiBpZGVudGl0eSBpbiB0aGUgd29ya3Mgb2YgVGF3YWRhIGFzIGEgd2hvbGUuCgpUaG91Z2ggbm90IHdob2xseSBkZWZpbmVkIGJ5IGhlciBKYXBhbmVzZS1HZXJtYW4gaGVyaXRhZ2UsIHdoaWNoIGluIGFuZCBvZiBpdHNlbGYgbWFrZXMgVGF3YWRhIGhpZ2hseSB1bmlxdWUgYW1vbmcgbGl0ZXJhcnkgZmlndXJlcywgYW5kIGVzcGVjaWFsbHkgd29tZW4sIHRoZSBFYXN0L1dlc3QgZGljaG90b215IGFuZCBqdXh0YXBvc2l0aW9uIGlzIGEgaGlnaGx5IGV2aWRlbnQgc3RyYWluIGluIGhlciB3b3JrcywgYm90aCBleHBsaWNpdGx5IGFuZCBzeW1ib2xpY2FsbHkgKEZhY2hpbmdlcikuIFdhdGVyLCByZWZsZWN0aW9ucywgYW5kIHRoZSBpbmRldGVybWluYXRlIG5hdHVyZSBvZiBpZGVudGl0eSBhcmUgYWxsIHRoZW1lcyBpbiBhbm90aGVyIG9mIHRoZSBsb25nZXIgc3RvcmllcyBpbiBXaGVyZSBFdXJvcGUgQmVnaW5zLCAiQSBHdWVzdC4iIEluIHRoaXMgaGlnaGx5IGRpc2pvaW50ZWQgYW5kIHB1cnBvc2VmdWxseSBmcmFnbWVudGVkIHN0b3J5LCB0aGUgbmFycmF0b3IgbHVyY2hlcyBmcm9tIG9uZSBzY2VuZSB0byB0aGUgbmV4dCB3aXRoIGxpdHRsZSBzZW5zZSBvZiBjb2hlc2lvbiAodGhvdWdoIGEgZGVmaW5pdGUgc3Rvcnkgb2Ygc29ydHMgZW1lcmdlcyBldmVudHVhbGx5KSwgd2l0aCB0aGUgc2FtZSBhbWJpdmFsZW5jZSBzbyBoaWdobHkgbm90ZWQgaW4gIlRoZSBCYXRoIiAoRmFjaGluZ2VyKS4gVGhlIG5hcnJhdG9yIG9mIHRoaXMgc3Rvcnkgc3VycHJpc2VzIGhlcnNlbGYgd2l0aCBzb21lIG9mIGhlciB1dHRlcmFuY2VzIGFuZCBhdHRpdHVkZXMsIHVuc3VyZSB3aGVyZSB0aGV5IGNhbWUgZnJvbSwgYnV0IGF0IHRoZSBzYW1lIHRpbWUgc2hlIGlzIG5vdCBvdmVybHkgY29uY2VybmVkIHdpdGggZmluZGluZyB0aGVzZSByb290cywgYnV0IG9ubHkgbm90ZXMgdGhlIGluY3JlYXNpbmcgc2Vuc2Ugb2YgY2hhb3MgdGhhdCBpcyBoZXIgaWRlbnRpdHkgKFRhd2FkYSAxNzM7IDE3NS03KS4gVGhlIG11bHRpdHVkZSBvZiBmb3JjZXMgdGhhdCBhdHRlbXB0IHRvIHNoYXBlIHRoZSBuYXJyYXRvcidzIGlkZW50aXR5IHByZXNlbnQgdGhlbXNlbHZlcyBub3QgbmVjZXNzYXJpbHkgaW4gYW4gYWR2ZXJzYXJpYWwgbWFubmVyLCBidXQgaW4gc3VjaCBhIHdheSB0aGF0IGl0IHNlZW1zIHRoZSBuYXJyYXRvciBzZWVtcyB0byBmZWVsIGl0IGlzIG5vdCB3b3J0aCB0aGUgZWZmb3J0IHRvIGV2ZW4gZGV2ZWxvcCBhIHBlcnNvbmFsIHNlbnNlIG9mIGlkZW50aXR5LgoKVGhlIG92ZXJhbGwgY29tbWVudGFyeSBvbiBpZGVudGl0eSB0aGF0IGlzIGRlcml2ZWQgZnJvbSB0aGUgY29sbGVjdGVkIHN0b3JpZXMgaW4gVGF3YWRhJ3MgV2hlcmUgRXVyb3BlIEJlZ2lucyBpcyB1bmVxdWl2b2NhbGx5IGFtYmlndW91cy4gVGhlcmUgaXMgYSB2ZXJ5IHNvbGlkIHBlcnNwZWN0aXZlIChvZnRlbiBhIGhpZ2hseSBzaW1pbGFyIG9uZSkgZnJvbSB3aGljaCB0aGVzZSBzdG9yaWVzIGFyZSB0b2xkLCBidXQgaXQgaXMgaW1wb3NzaWJsZSB0byBwcmVjaXNlbHkgcGluIGRvd24gdGhlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGlzIHBlcnNwZWN0aXZlLiBUYXdhZGEncyB2aWV3IG9mIGlkZW50aXR5IGFzIGZsdWlkIGFuZCBsYXJnZWx5IGRlcGVuZGVudCBvbiBleHRlcm5hbCBmYWN0b3JzIG1lYW5zIHRoYXQgYW55IGF0dGVtcHQgdG8gcGVyY2VpdmUgb3IgZGVmaW5lIHRoYXQgaWRlbnRpdHkgbmVjZXNzYXJpbHkgbGVhZHMgdG8gYSBmb3JtYXRpb24gb2YgdGhhdCBpZGVudGl0eTsgdGhpcyBpcyB0aGUgcmVhbGl0eSBvZiB0aGUgcG9zdGNvbG9uaWFsIHdvcmxkLgoKRGljdGVlCgpJbiBtYW55IHdheXMsIFRoZXJlc2EgSGFrIEt5dW5nIENoYSdzIERpY3RlZSBjb21lcyB0byB0aGUgc2FtZSBjb25jbHVzaW9ucyBhYm91dCBpZGVudGl0eSBhcyBkb2VzIFlva28gVGF3YWRhJ3MgV2hlcmUgRXVyb3BlIEJlZ2lucywgYnV0IGJvdGggdGhlIHN0cnVjdHVyZSBhbmQgdGhlIHN0eWxlIG9mIHRoZXNlIHR3byBwaWVjZXMgYXJlIGh1Z2VseSBkaWZmZXJlbnQuIE5vdCBvbmx5IGlzIERpY3RlZSBhIHNpbmdsZSBjb25zaXN0ZW50ICh0aG91Z2ggaGlnaGx5IGZyYWdtZW50ZWQpIHN0b3J5LCBidXQgdGhlIHBlcnNwZWN0aXZlIGZyb20gd2hpY2ggdGhlIG5vdmVsIGlzIHRvbGQgaXMgYm90aCBtb3JlIG9wcHJlc3NpdmUgYW5kIG1vcmUgYWN0aXZlIC0tIG9yIHBlcmhhcHMgbW9yZSByZWFjdGl2ZSAtLSBpbiBpdHMgdHJlYXRtZW50IG9mIGlkZW50aXR5LiBUaGF0IGlzLCB0aGUgY2VudHJhbCBjaGFyYWN0ZXIgb2YgdGhlIG5vdmVsIGlzIHNob3duIGJvdGggYXMgbW9yZSBjb250cm9sbGVkIGluIHRlcm1zIG9mIHRoZSBleHRlcm5hbCBmYWN0b3JzIHRoYXQgc2hhcGUgaGVyIGlkZW50aXR5IGluIGEgbW9yZSBhY3RpdmUgd2F5LCBhbmQgaXMgaGVyc2VsZiBtb3JlIGFjdGl2ZSBpbiBoZXIgcmVhY3Rpb25zIHRvIGFuZCAoaW4gc29tZSBpbnN0YW5jZXMpIHJlc2lzdGFuY2Ugb2YgdGhlc2UgZXh0ZXJuYWwgZm9yY2VzLiBUaGUgc2ltaWxhcml0eSBpbiB0aGUgdHdvIHdvcmtzJyB1bHRpbWF0ZSBjb25jbHVzaW9ucyBidXQgZGlmZmVyZW5jZXMgaW4gcGVyc3BlY3RpdmUgYXJlIGFjY29tcGxpc2hlZCBpbiBhIHZhcmlldHkgb2Ygd2F5cy4KCk9uZSBvZiB0aGUgbW9zdCBub3RhYmxlIGRpZmZlcmVuY2VzIGluIERpY3RlZSBpcyB0aGUgdXNlIG9mIGEgbGFyZ2VseSB0aGlyZC1wZXJzb24gbmFycmF0b3IsIGludGVyc3BlcnNlZCB3aXRoIGV4dHJlbWVseSBhbGllbmF0aW5nIHNlY29uZC1wZXJzb24gY29tbWVudGFyeS4gVGhpcyBzdWNjZWVkcywgaW4gdGhlIHdvcmRzIG9mIG9uZSBjcml0aWMsIGluIGJyZWFraW5nIGRvd24gIm5hdGlvbmFsLCBjdWx0dXJhbCwgZXRobmljLCBhbmQgbGluZ3Vpc3RpYyBib3VuZGFyaWVzLCIgYnV0IGF0IHRoZSBzYW1lIHRpbWUgaXQgbGVhdmVzIHRoZSBpbmRpdmlkdWFsIGp1c3QgYXMgaWRlbnRpdHktbGVzcyBhcyB0aGUgaW5hY3RpdmUgbmFycmF0b3JzIG9mIFRhd2FkYSdzIHN0b3JpZXMgKFNwYWhyIDI2KS4gVG93YXJkcyB0aGUgZW5kIG9mIHRoZSBub3ZlbCBpcyBhIHNlY3Rpb24gaW4gd2hpY2ggdGhlIGNvbmNlcHQgb2YgdGhpcyBjaGFyYWN0ZXIncyBodXNiYW5kIGFuZCB0aGVpciByZWxhdGlvbnNoaXAgaXMgaW50cm9kdWNlZCB3aXRoIGEgc2VyaWVzIG9mIHByb2ZvdW5kICJwZXJoYXBzImVzLCBpbmNsdWRpbmcgIlBlcmhhcHMgc2hlIGxvdmVkIGhpbSIgYW5kICJQZXJoYXBzIGluIHRoZSBiZWdpbm5pbmcgaXQgd2FzIG5vdCB0aGlzIHdheSIgKENoYSAxMTApLiBUaG91Z2ggdGhpcyBsZWFkcyB0byBhbiBpbnRyb3NwZWN0aW9uIG9mIHRoZSBodXNiYW5kL3dpZmUgcmVsYXRpb25zaGlwLCBpdCBsZWFkcyB0byBubyBmaXJtIGNvbmNsdXNpb25zIG9yIHVuZGVyc3RhbmRpbmdzIG9mIGl0cyBwcm9ncmVzc2lvbi4KClRoZSBjZW50cmFsIGZpZ3VyZSdzIGxpZmUgYW5kIHRodXMgaWRlbnRpdHkgaXMgYSBjb25zdHJ1Y3Qgb2Ygc2ltaWxhciBzY2VuZXMgYW5kIHN0cmFuZ2UgbGVhcHMgaW4gdGltZTsgdGhlIGh1Z2VseSBkaXNqb2ludGVkIG5hdHVyZSBvZiB0aGUgbm92ZWwgaXMgcmVmbGVjdGl2ZSBvZiBoZXIgaWRlbnRpdHksIHdoaWNoIGlzIGJyb2tlbiBpbnRvIG1hbnkgcGllY2VzLCBub3QgYWxsIG9mIHRoZSBjdXQgZnJvbSB0aGUgc2FtZSBjbG90aC4gVGhvdWdoIHRoZSBhdXRob3IgcHV0cyB0aGlzIGJvb2sgZm9yd2FyZCBhcyBhbiBhdXRvYmlvZ3JhcGh5IG9mIHNvcnRzLCBpdCBhY3R1YWxseSByZXNpc3RzIGFueSBzb3J0IG9mIGFzc29jaWF0aW9uIHdpdGggcmVhbCBwZW9wbGUgb3IgZXZlbnRzLCBlc3BlY2lhbGx5IHdpdGhpbiBhIGxpbmVhciBjb25zdHJ1Y3Qgb2YgaGlzdG9yeSBhbmQmIzgyMzA7 THVocm1hbm4gMjAwMQ== THVocm1hbm4gMjAwMQ== MA== NTIwODU3NTE= MQ== QTExMzQ5Nzc= MTMzMzAw MTE4Mjc= Njc= bi9h V29tZW4ncyBJc3N1ZXMgLSBTZXh1YWxpdHk= U2V4dWFsaXR5IC8gR2VuZGVy VGhlc2lz MQ== MQ== MQ== Mjc1NjM= MzIx MTIyNDI1MjAwMA== MQ== SWRlbnRpdHkKCklzIHRoaXMgZXhwbGFuYXRpb24gc3VmZmljaWVudCwgb3IgZG8geW91IHNlZSBvdGhlciBmYWN0b3JzIChlLmcuLCBnbG9iYWwsIGVjb25vbWljLCByZWxhdGlvbmFsLCBldGMuKSBhdCB3b3JrIGluIHRoZSB3YXkgd2UgdW5kZXJzdGFuZCBpZGVudGl0eT8KCklkZW50aXR5IGlzLCBhcyBMdWhybWFubiBzdWdnZXN0cywgZHluYW1pYy4gSWRlbnRpdHkgY2hhbmdlcyBkcmFtYXRpY2FsbHkgb3ZlciB0aW1lLCBidXQgdGhlIHNwZWVkIGFuZCBpbnRlbnNpdHkgb2YgdGhvc2UgY2hhbmdlcyBkZXBlbmQgb24gcGVyc29uYWxpdHksIGN1bHR1cmFsLCBhbmQgaGlzdG9yaWNhbCBmYWN0b3JzLiBHbG9iYWwsIGVjb25vbWljLCByZWxhdGlvbmFsLCBhbmQgb3RoZXIgZmFjdG9ycyBjb250cmlidXRlIHRvIGhvdyBhbiBpbmRpdmlkdWFsJ3MgaWRlbnRpdHkgaXMgY29uc3RydWN0ZWQgYW5kIGNvbW11bmljYXRlZC4gSWRlbnRpdHkgaXMgY29uY2VwdHVhbGl6ZWQgZGlmZmVyZW50bHkgaW4gYWNhZGVtaWEsIHRvby4gVGhlIGludGVuc2Ugc2NydXRpbnkgb2YgaWRlbnRpdHkgaW4gYWNhZGVtaWEsIGZ1ZWxlZCBieSBwb3N0bW9kZXJuIGRpc2NvdXJzZSwgY2FuIGFjY291bnQgZm9yIHdoeSB3ZSB1bmRlcnN0YW5kIGlkZW50aXR5IGRpZmZlcmVudGx5IG5vdyB0aGFuIHNldmVyYWwgZGVjYWRlcyBhZ28uCgpQYXJ0IG9mIHRoZSByZWFzb24gZm9yIHRoZSBzaGlmdCBpbiBzY2hvbGFzdGljIGRpc2NvdXJzZSBhYm91dCBpZGVudGl0eSBpcyB0aGUgZ2xvYmFsIGZhY3RvcnMgdGhhdCBzaGFwZSBpZGVudGl0eS4gR2xvYmFsaXphdGlvbiBhbmQgdGhlIGludGVncmF0aW9uIG9mIGN1bHR1cmVzIG9uIGEgbGV2ZWwgcHJldmlvdXNseSBpbXBvc3NpYmxlIGluIHRoZSBoaXN0b3J5IG9mIHRoZSBwbGFuZXQgaGFzIGxlZCB0byBhIHJhZGljYWwgc2hpZnQgaW4gdGhlIHdheSB3ZSB2YWx1ZSBjZXJ0YWluIHRyYWl0cyB0aGF0IGNvbXByaXNlIGlkZW50aXR5LiBSZXNwZWN0IGZvciBkaXZlcnNpdHkgaGFzIGFsc28gZW5oYW5jZWQgdGhlIHdheSB3ZSB0aGluayBhYm91dCYjODIzMDs= UGhpbG9zb3BoaWVzIEVtYm9kaWVkIGluIHRoZSBIZXRlcm9ueW1zIG9mIEZlcm5hbmRvIFBlc3NvYSBJZGVudGl0eSBDcmlzaXMgb3IgYSBHcmVhdCBQaGlsb3NvcGhlcg== UGhpbG9zb3BoaWVzIEVtYm9kaWVkIGluIHRoZSBIZXRlcm9ueW1zIG9mIEZlcm5hbmRvIFBlc3NvYSBJZGVudGl0eSBDcmlzaXMgb3IgYSBHcmVhdCBQaGlsb3NvcGhlcg== MQ== NDE0Nzc3ODQ= MjA= MjA= QTIwNzA1MjI= NjQxMTM= MTEwNjc= NTA= TWFzdGVy bi9h TGl0ZXJhdHVyZQ== TGl0ZXJhdHVyZSAvIFBvZXRyeQ== RXNzYXk= MQ== MQ== MQ== NzQ4NjY= NjQxOQ== MTM0MzEyMjE5OA== MQ== UGVzc29hCgoiVGhlIFBoaWxvc29waGllcyBlbWJvZGllZCBpbiB0aGUgSGV0ZXJvbnltcyBvZiBGZXJuYW5kbyBQZXNzb2EuIElkZW50aXR5IENyaXNpcyBvciBhIGdyZWF0IFBoaWxvc29waGVyPyIKCkhldGVyb255bQoKVGhlIFBoaWxvc29waGllcyBlbWJvZGllZCBpbiB0aGUgSGV0ZXJvbnltcyBvZiBGZXJuYW5kbyBQZXNzb2EuIElkZW50aXR5IENyaXNpcyBvciBhIGdyZWF0IFBoaWxvc29waGVyPwoKVGhlIFBoaWxvc29waGllcyBlbWJvZGllZCBpbiB0aGUgSGV0ZXJvbnltcyBvZiBGZXJuYW5kbyBQZXNzb2EuIElkZW50aXR5IENyaXNpcyBvciBhIGdyZWF0IFBoaWxvc29waGVyPwoKSW50cm9kdWN0aW9uIG9mIEZlcm5hbmRvIFBlc3NvYTsgaGlzIExpZmUsIFdvcmsgYW5kIEJhY2tncm91bmQKCkZlcm5hbmRvIFBlc3NvYSAoMTg4OCAtLSAxOTM1KSB3YXMgYSBwb2V0IHdobyB3cm90ZSB1c2luZyB2YXJpb3VzICJoZXRlcm9ueW1zIiBvciBsaXRlcmFyeSBhbHRlciBlZ29zLiBIb3dldmVyLCBhcyB3aWxsIGJlIGRpc2N1c3NlZCwgdGhlc2Ugd2VyZSBub3QgYWx0ZXIgZWdvcyBpbiB0aGUgY29udmVudGlvbmFsIHNlbnNlIGJ1dCB3ZXJlIGluIGZhY3Qgc2VwYXJhdGUgZW50aXRpZXMgdGhhdCB0aGUgd3JpdGVyIGNsYWltZWQgZXhpc3RlZCBhbmQgaW5mb3JtZWQgaGlzIGV4aXN0ZW50aWFsIGFuZCBhcnRpc3RpYyBleHBlcmllbmNlLiBUaGlzIGJlY29tZXMgY2xlYXIgZnJvbSB0aGUgZmFjdCB0aGF0ICJQZXNzb2EgZGV2b3RlZCBoaXMgbGlmZSB0byBjb25mZXJyaW5nIHN1YnN0YW5jZSB0byBlYWNoIGFsdGVyIGVnbywgZ2l2aW5nIGVhY2ggYSBwZXJzb25hbCBiaW9ncmFwaHksIHBzeWNob2xvZ3ksIHBvbGl0aWNzLCBhZXN0aGV0aWNzLCByZWxpZ2lvbiwgYW5kIHBoeXNpcXVlLiIgKEdpYmJzIDIyNikKCkNlbnRyYWwgdG8gaGlzIHdyaXRpbmcgaXMgdGhlIGlzc3VlIGFuZCBwcm9ibGVtYXRpYyBzdGF0dXMgb2YgaW5kaXZpZHVhbCBpZGVudGl0eSAtLSBhbmQgdGhlIGRlY29uc3RydWN0aW9uIG9mIHRoZSBiZWxpZWYgaW4gYSBzaW5nbGUsIHN0YXRpYyBzZW5zZSBvZiAic2VsZi4iIEhpcyB3b3JrcyBjb250aW51YWxseSByYWlzZSBxdWVzdGlvbnMgc3VjaCBhcywgd2hhdCBpcyBpZGVudGl0eSBhbmQgZG9lcyBwZXJzb25hbCBpZGVudGl0eSByZWFsbHkgZXhpc3Q/IEFzIHRoZSBhdXRob3Igc3RhdGVzOyAiSSBhbSwgaW4gbGFyZ2UgbWVhc3VyZSwgdGhlIHNlbGZzYW1lIHByb3NlIEkgd3JpdGUuIEkgdW5yb2xsIG15c2VsZiBpbiBwZXJpb2RzIGFuZCBwYXJhZ3JhcGhzLCBJIG1ha2UgbXlzZWxmIHB1bmN0dWF0aW9uIG1hcmtzOyBpbiBteSB1bmJyaWRsZWQgYWxsb2NhdGlvbiBvZiBpbWFnZXMgSSdtIGxpa2UgYSBjaGlsZCB1c2luZyBuZXdzcGFwZXIgdG8gZHJlc3MgdXAgYXMgYSBraW5nJiM4MjMwOy4gSSd2ZSBtYWRlIG15c2VsZiBpbnRvIHRoZSBjaGFyYWN0ZXIgb2YgYSBib29rLCBhIGxpZmUgb25lIHJlYWRzLiIgKFBvcGxhd3NraSAyOTMpCgpQZXNzb2EgaGFzIGJlZW4gcmVjb2duaXplZCBub3Qgb25seSBhcyBhIG1ham9yIHdyaXRlciBpbiBib3RoIHRoZSBtb2Rlcm5pc3QgYW5kIHBvc3Rtb2Rlcm5pc3QgdHJhZGl0aW9ucyBidXQgYWxzbyBhcyBvbmUgIiYjODIzMDsgb2YgdGhlIG1vc3QgaW50ZXJlc3RpbmcgYW5kIGNvbXBsZXggZmlndXJlcyBvZiBXZXN0ZXJuIGxpdGVyYXR1cmUgaW4gdGhlIHR3ZW50aWV0aCBjZW50dXJ5LiIgKFBvcGxhd3NraSAyOTMpIEhlIHdhcyBib3JuIGluIExpc2JvbiBpbiAxODg4IGFuZCBsaXZlZCBpbiB0aGlzIGNpdHkgZm9yIG1vc3Qgb2YgaGlzIGxpZmUsIGhvd2V2ZXIgYW4gaW1wb3J0YW50IHBlcmlvZCBvZiBoaXMgeW91dGggd2FzIHNwZW50IGluIFNvdXRoIEFmcmljYS4gQWZ0ZXIgaGlzIG1vdGhlciByZW1hcnJpZWQgZnVydGhlciB0byB0aGUgZGVhdGggb2YgaGVyIGh1c2JhbmQsIHRoZSBmYW1pbHkgbW92ZWQgdG8gRHVyYmFuLCBTb3V0aCBBZnJpY2EsIGFzIHRoZSBmYXRoZXIgaGFkIGJlZW4gYXBwb2ludGVkIGFzIHRoZSBQb3J0dWd1ZXNlIGNvbnN1bCB0byB0aGUgY2l0eS4gKFBvcGxhd3NraSAyOTMpIFlvdW5nIFBlc3NvYSBzdGF5ZWQgaW4gdGhlIGNvdW50cnkgZm9yIHRlbiB5ZWFycyBhbmQgaGlzIGVsZW1lbnRhcnkgYW5kIHNlY29uZGFyeSBzY2hvb2xpbmcgdG9vayBwbGFjZSBpbiBFbmdsaXNoIHNjaG9vbHMgaW4gU291dGggQWZyaWNhLiBUaGlzIHBlcmlvZCB3YXMgdG8gaGF2ZSBhIHByb2ZvdW5kIGVmZmVjdCBvbiBoaW0uIFRoaXMgZWR1Y2F0aW9uIGFsc28gbWFkZSBoaW0gd2VsbCByZWFkIGluIEVuZ2xpc2ggTGl0ZXJhdHVyZSBhbmQgIiYjODIzMDt0aGUgcm9vdHMgb2YgaGlzIHBvZXRpYyB0aGVvcnkgYW5kIHByYWN0aWNlIHJlYWNoIGVxdWFsbHkgaW50byBQb3J0dWd1ZXNlIExpdGVyYXR1cmUgYW5kIHRoZSBBbmdsby1BbWVyaWNhbiBsaXRlcmFyeSB0cmFkaXRpb24uIiAoUG9wbGF3c2tpIDI5MykKClRoZSBmaXJzdCBib29rcyB0aGF0IGhlIHB1Ymxpc2hlZCB3ZXJlIGluIGZhY3QgY29sbGVjdGlvbnMgb2YgRW5nbGlzaCBwb2VtcywgaG93ZXZlciB0aGV5IG9ubHkgcmVjZWl2ZWQgImNvdXJ0ZW91cyBidXQgdW5lbnRodXNpYXN0aWMgcmV2aWV3cyBmcm9tIHRoZSBUaW1lcyBhbmQgR2xhc2dvdyBIZXJhbGQuIiAoTGFjaG1hbiBwYXJhLiAyKSBBcGFydCBmcm9tIHZhcmlvdXMgYXJ0aWNsZXMgdmVyeSBsaXR0bGUgZWxzZSBvZiBoaXMgd2FzIGFjdHVhbGx5IHB1Ymxpc2hlZCBkdXJpbmcgaGlzIGxpZmV0aW1lLCBob3dldmVyIGhlIGRpZCBwdWJsaXNoIE1lbnNhZ2VtIChNZXNzYWdlKSwgd2hpY2ggaXMgYW4gZXh0ZW5kZWQgZXNvdGVyaWMgcG9lbSB3aXRoIG5hdGlvbmFsaXN0IG92ZXJ0b25lcy4gVGhpcyBib29rIHJlY2VpdmVkIGEgY29uc29sYXRpb24gcHJpemUgaW4gYSBuYXRpb25hbCBjb21wZXRpdGlvbi4gKExhY2htYW4gcGFyYS4gMikKCkFzIHJlZ2FyZHMgaGlzIHdvcmtpbmcgbGlmZSwgaGUgbWFpbmx5IHN1cHBvcnRlZCBoaW1zZWxmIGFzIGEgZnJlZWxhbmNlIHRyYW5zbGF0b3Igb2YgRnJlbmNoIGFuZCBFbmdsaXNoIGZvciB2YXJpb3VzIGNvbXBhbmllcy4gSGlzIHByaXZhdGUgbGlmZSB3YXMgZXh0cmVtZWx5IHNvbGl0YXJ5IGFuZCBhbG1vc3QgcmVjbHVzaXZlLiBIZSBoYWQgbm8ga25vd24gbGFzdGluZyByb21hbnRpYyBhZmZhaXJzIGFuZCB3YXMgbmV2ZXIgbWFycmllZC4gSGlzIGxvbmVseSBsaWZlIGVuZGVkIGluIDE5MzUgd2hlbiBoZSBkaWVkIGZyb20gaGVwYXRpdGlzIGFzIGEgcmVzdWx0IG9mIGV4Y2Vzc2l2ZSBkcmlua2luZy4KCkl0IGlzIHRoZXJlZm9yZSBwZXJoYXBzIGlyb25pYyB0aGF0IHVudGlsIGZhaXJseSByZWNlbnRseSB0aGUgd29ya3Mgb2YgdGhpcyBjcmVhdGl2ZSBhbmQgY29udGVtcG9yYXJ5IHdyaXRlciB3ZXJlIGxpdHRsZSBrbm93bi4gSG93ZXZlciwgaGlzIHdyaXRpbmdzIGFuZCBlc3BlY2lhbGx5IHRoZSBCb29rIG9mIERpc3F1aWV0LCBoYXZlIGJlZW4gcmVjb2duaXplZCBhbmQgYWNjbGFpbWVkIGJ5IG1hbnkgY3JpdGljcywgaW5jbHVkaW5nIEhhcm9sZCBCbG9vbS4gVGhpcyBib29rIGlzIGEgZnJhZ21lbnRhcnkgY29sbGVjdGlvbiBvZiBtb3N0bHkgdW5maW5pc2hlZCB0ZXh0cyBmb3VuZCBpbiBhIHRydW5rIGFmdGVyIGhpcyBkZWF0aCwgd2hpY2ggcmVmbGVjdCB0aGUgZXhpc3RlbnRpYWwgYW54aWV0eSByZWxhdGVkIHRvIHRoZSBzZWFyY2ggZm9yIHNlbGYgYW5kIGlkZW50aXR5IGluIHRoZSBtb2Rlcm4gd29ybGQuIFRoaXMgd29yayBpcyBzZWVuIGJ5IG1hbnkgY3JpdGljcyB0byBiZSBhIGNvbnRlbXBvcmFyeSByZWZsZWN0aW9uIG9uIHRoZSBjb25kaXRpb24gb2YgbW9kZXJuIGh1bWFuaXR5IGFuZCBzb2NpZXR5LgoKVGhlIGZyYWdtZW50YXJ5IG5hdHVyZSBvZiB0aGVzZSB3cml0aW5ncyAtIGpvdHRlZCBvbiBzY3JhcHMgb2YgcGFwZXIsIHRoZSBiYWNrcyBvZiBlbnZlbG9wZXMsIHRoZSByZXZlcnNlIHNpZGUgb2Ygb3RoZXIgbWFudXNjcmlwdHMgYW5kIG90aGVyIG9kZCBwbGFjZXMgLSBtYWtlcyBQZXNzb2EgYSBwcmltZSBwb3N0bW9kZXJuIGZpZ3VyZSwgYW5kIHRoZSB0cnVuaywgd2hvc2UgY29udGVudHMgYXJlIHN0aWxsIGJlaW5nIGNhdGFsb2d1ZWQgKGl0IGNvbnRhaW5lZCBzb21lIDI1LDAwMCBpdGVtcykgaGFzIHRha2VuIG9uIHRoZSBzYW1lIG15dGhpY2FsIGNoYXJhY3RlciBhcyB0aGUgdmFsaXNlIFdhbHRlciBCZW5qYW1pbiBjYXJyaWVkIG9uIGhpcyBmYXRlZnVsIGVzY2FwZSBmcm9tIFZpY2h5IEZyYW5jZS4gKExhY2htYW4gcGFyYS4gMSkKCkhpcyB3b3JrIGlzIHNlZW4gdG8gYmUgYWxpZ25lZCB3aXRoIHRoZSBwb3N0bW9kZXJuIGFuZCBkZWNvbnN0cnVjdGl2ZSB2aWV3IG9mIHRoZSBmcmFjdHVyZWQgYW5kIGRpc2pvaW50ZWQgbW9kZXJuIGh1bWFuIGV0aG9zLiBUaGlzIHZpZXcgaXMgYWxzbyBsaW5rZWQgdG8gdGhlIHBlcmNlcHRpb24gb2YgaGlzIHBlcnNvbmFsIGxpZmUgYW5kIGhpcyBmcmFnbWVudGFyeSBwc3ljaGUgLS0gd2hpY2ggaGFzIGluIHR1cm4gYmVlbiBsaW5rZWQgdG8gZGlzY3Vzc2lvbiBhYm91dCBwc3ljaG9zaXMgYXMgb3Bwb3NlZCB0byBnZW5pdXMgYXMgR3JheSAoMjAwMSkgbm90ZXM6ICImIzgyMzA7aGUgcGFzc2VkIGhpcyBkYXlzIHdyaXRpbmcsIGRyaW5raW5nIGFuZCBjaGFpbi1zbW9raW5nLCBzY3JhcGluZyBhIG1lYWdyZSBsaXZpbmcgZnJvbSB0cmFuc2xhdGlvbnMgYW5kIGRldmlzaW5nIEVuZ2xpc2ggY3Jvc3N3b3JkcywgYSByZWNsdXNpdmUgZmlndXJlIHdpdGggZmV3IGZyaWVuZHMgYW5kIGFsbW9zdCBubyBsb3ZlIGxpZmUuIFRvIGhpbSwgb2JzY3VyaXR5IGJlY2FtZSBhIGtpbmQgb2Ygdm9jYXRpb24uIiAoR3JheSA1MikKCldoaWxlIGhlIGRpZCBub3QgcmVjZWl2ZSBhbnkgZ3JlYXQgcmVjb2duaXRpb24gb2YgYWNjbGFpbSBpbiBoaXMgbGlmZSwgYWZ0ZXIgaGlzIGRlYXRoIGhlIGJlY2FtZSByZWNvZ25pemVkIGFzIGFuIGFjY29tcGxpc2hlZCBwb2V0IGFuZCBlc3NheWlzdCBpbiBQb3J0dWdhbC4gVGhlIG1vc3Qgc2lnbmlmaWNhbnQgcGFydCBvZiBoaXMgb2V1dnJlIGNvbnNpc3RzIG9mIG1vcmUgdGhhbiAyMDAwIHBpZWNlcyBvZiB0ZXh0IHdoaWNoIHdlcmUgZm91bmQgYWZ0ZXIgaGlzIGRlYXRoLiAoR3JheSA1MikgdGhlIGF1dGhvciBkaWQgbm90IHByb3ZpZGUgaW5kaWNhdGlvbnMgb2YgaG93IHRoZXNlIGZyYWdtZW50cyBzaG91bGQgYmUgYXNzZW1ibGVkIGJ1dCBkaWQgcHJvdmlkZSB0aGUgYm9vaydzIHRpdGxlIC0tIHRoZSBCb29rIG9mIERpc3F1aWV0LiBIZSBhbHNvIHdyb3RlIHBvZXRyeSwgcGxheXMsIHRyZWF0aXNlcyBvbiBhc3Ryb2xvZ3kgYW5kIGEgdmFyaWV0eSBvZiBhdXRvYmlvZ3JhcGhpY2FsIHJlZmxlY3Rpb25zLiAoTGFjaG1hbiBwYXJhLiAxKSBIb3dldmVyIHdoYXQgbWFrZSB0aGlzIHdyaXRlciBzbyB1bmlxdWUgaXMgaGlzIGhldGVyb255bXMsIG9yIHRoZSB3cml0aW5ncyBvZiBvdGhlcnMsIHdoaWNoIGJlY2FtZSBhbiBlc3NlbnRpYWwgcGFydCBvZiBoaXMgb2V1dnJlLgoKMi4gVGhlIENvbmNlcHQgb2YgSGV0ZXJvbnltaWEuCgpUaGUgY29uY2VwdCBvZiBIZXRlcm9ueW1pYSBpcyB1c3VhbGx5IGRlZmluZWQgYXMgZm9sbG93czogIlRlcm0gY29pbmVkIGJ5IHRoZSBQb3J0dWd1ZXNlIHBvZXQgRmVybmFuZG8gUGVzc29hIHRvIGRlc2NyaWJlIGFuIGFsdGVyIGVnbyB0aHJvdWdoIHdoaWNoIHBvZXRzL2F1dGhvcnMgY2FuIGNyZWF0ZSB3b3JrLiIgKEdsb3NzYXJ5IG9mIFBvZXRpYyBUZXJtcykgSG93ZXZlciwgdGhpcyBkZWZpbml0aW9uIGRvZXMgbm90IGRvIGp1c3RpY2UgdG8gdGhlIGNvbXBsZXhpdHkgYW5kIGltcG9ydGFuY2Ugb2YgdGhlIHRlcm0uIEhldGVyb255bWlhIHNob3VsZCBub3QgYmUgdW5kZXJzdG9vZCBzaW1wbGlzdGljYWxseSwgZXNwZWNpYWxseSBpbiB0ZXJtcyBvZiB0aGUgd2F5IHRoYXQgaXMgY3JlYXRpdmVseSBlbXBsb3llZCBieSBQZXNzb2EuIFRoaXMgaXMgbWFkZSBjbGVhciBpbiBhIHN0dWR5IGJ5IFNhZGxlciAoMTk5OCkgd2hvIHN0YXRlcyB0aGF0LCAiT3ZlciB0aGUgeWVhcnMsIG51bWVyb3VzIHRoZW9yaWVzIGhhdmUgYmVlbiBwdXQgZm9ydGggYWJvdXQgdGhlIG1vdGl2ZXMgZm9yIFBlc3NvYSdzIGNyZWF0aW9uIG9mIHRoZSBoZXRlcm9ueW1zLiIgVGhlc2UgdGhlb3JpZXMgcmFuZ2UgZnJvbSBwc3ljaG9sb2dpY2FsIGFzc2Vzc21lbnQgb2YgdGhlIGF1dGhvciB0byB0aGUgaW5mbHVlbmNlIG9mIG90aGVyIHBvZXRzIGFuZCB3cml0ZXJzLiBXaXRoIHJlZ2FyZCB0byB0aGUgbGF0dGVyIHZpZXcsIHNvbWUgY3JpdGljcyBoYXZlIGF0dHJpYnV0ZWQgYXV0aG9ycyBzdWNoIGFzIENhZWlybywgUmVpcywgYW5kIENhbXBvcyB0byB0aGUgaW5mbHVlbmNlIG9mIFBlc3NvYSdzIGZyaWVuZCBNYXJpbyBkZSBTYS1DYXJuZWlybywgd2hvc2UgcG9lbXMgYW5kIHN0b3JpZXMgZnJlcXVlbnRseSBpbmR1Y2VkIHRoZSBpZGVhIG9mIGEgc3BsaXQgd2l0aGluIHRoZSBzZWxmLiBIYXJvbGQgQmxvb20gaGFzIHZpZXdlZCBDYWVpcm8gYW5kIENhbXBvcyBpbiB0ZXJtcyBvZiBQZXNzb2EncyBjbG9zZSByZWFkaW5nIG9mIFdoaXRtYW4sIHdoaWNoIHJlc3VsdGVkIGluIGEgZGVzaXJlIHRvIGRpc3Rpbmd1aXNoIHdoYXQgdGhlIEFtZXJpY2FuIHBvZXQgdGVybWVkIHRoZSAibWUgbXlzZWxmIiBhbmQgInRoZSByZWFsIG1lLCIgb3IgdGhlIHNwaXJpdHVhbCBhbmQgZmxlc2hseSBhc3BlY3RzIG9mIGh1bWFuaXR5LiAoU2FkbGllciA3MikKCkhvd2V2ZXIsIGFub3RoZXIgdGhlb3J5IHRoYXQgd2lsbCBiZSBleHBsb3JlZCBpbiB0aGUgc2VjdGlvbiBiZWxvdyByZWZlcnMgdG8gdGhlIHZpZXcgdGhhdCB0aGUgaGV0ZXJvbnltcyBhcmUgYSBzaWduIGFuZCBhcmUgc3ltcHRvbWF0aWMgb2YgdGhlIG1vZGVybiBxdWVzdGlvbmluZyBhbmQgZGVjb25zdHJ1Y3Rpb24gb2YgdGhlIGlkZWEgb2YgdGhlIHVuaWZpZWQgc2VsZiBvciBzdGF0aWMgZWdvLiBUaGlzIGlzIGFuIGFzcGVjdCB0aGF0IGhhcyByZWNlaXZlZCBhIGdyZWF0IGRlYWwgb2YgYXR0ZW50aW9uIGZvciBib3RoIHBzeWNob2xvZ3kgYW5kIHBoaWxvc29waHkuIEEgZnVydGhlciB2aWV3cG9pbnQgaXMgdGhhdCB0aGUgaGV0ZXJvbnltcyBhcmUgYSByZWZsZWN0aW9uIG9mIHRoZSBhdXRob3IncyBzY2hpem9waHJlbmljIHBlcnNvbmFsaXR5LiAoU2FkbGllciA3MikgZm9yIGV4YW1wbGUsIGNyaXRpY3MgaGF2ZSBzdWdnZXN0ZWQgdGhhdCAiJiM4MjMwOyB0aGUgaGV0ZXJvbnltcyBhcyBzeW1wdG9tcyBvZiBhIGhpc3RvcmljYWwgcGVyaW9kIHdoZW4gdGhlIG5vdGlvbiBvZiB0aGUgdW5pZmllZCBzZWxmIHdhcyBiZWluZyBjYWxsZWQgaW50byBxdWVzdGlvbiBieSBwaGlsb3NvcGh5IGFuZCBwc3ljaG9hbmFseXNpcy4iIEhvd2V2ZXIsIG90aGVycyBoYXZlIHN1Z2dlc3RlZCBvdGhlciBjYXVzYXRpdmUgYW5kIG1vdGl2YXRpbmcgZmFjdG9ycy4gTWFyaW8gZGUgU2FyYWl2YSBmb3IgZXhhbXBsZSBoYXMgIiYjODIzMDsuIGdvbmUgZnVydGhlciBhbG9uZyB0aGVzZSBsaW5lcywgc3VnZ2VzdGluZyB0aGF0IHRoZSBoZXRlcm9ueW1zIHdlcmUgdGhlIHJlc3VsdCBvZiBQZXNzb2EncyBvd24gc2NoaXpvcGhyZW5pYyBwZXJzb25hbGl0eS4iIChTYWRsaWVyIDcyKQoKMy4gSGV0ZXJvbnltcyBvZiBGZXJuYW5kbyBQZXNzb2EKCkluIG9yZGVyIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmNlcHQgb2YgdGhlIGhldGVyb255bXMgb25lIGhhcyB0byB2aWV3IHRoaXMgY29uY2VwdCBpbiB0aGUgY29udGV4dCBvZiB0aGUgd29yayBvZiBQZXNzb2EsIGFuZCBwYXJ0aWN1bGFybHkgaW4gcmVsYXRpb24gdG8gdGhlIEJvb2sgb2YgRGlzcXVpZXQuIFNvbWV0aGluZyBvZiB0aGUgYXV0aG9yJ3MgbW90aXZhdGlvbiB0byBkZXZlbG9wIHRoZXNlIHZhcmlvdXMgY2hhcmFjdGVycyBjYW4gYmUgZ2xlYW5lZCBmcm9tIHRoZSBmb2xsb3dpbmcgcXVvdGF0aW9uOiAiRm9yIHRlbXBlcmFtZW50YWwgcmVhc29ucyB0aGF0IEkgZG8gbm90IHByb3Bvc2UgdG8gYW5hbHl6ZSwgbm9yIGlzIGl0IGltcG9ydGFudCB0aGF0IEkgYW5hbHl6ZSwgSSBjb25zdHJ1Y3RlZCB3aXRoaW4gbWUgdmFyaW91cyBjaGFyYWN0ZXJzIGRpc3RpbmN0IGFtb25nIHRoZW1zZWx2ZXMgYW5kIGZyb20gbWUgLS0gY2hhcmFjdGVycyB0byB3aG9tIEkgYXR0cmlidXRlZCB2YXJpb3VzIHBvZW1zIHRoYXQsIGluIHRlcm1zIG9mIGZlZWxpbmdzIGFuZCBpZGVhcywgYXJlIG5vdCBsaWtlIHRob3NlIHRoYXQgSSB3b3VsZCB3cml0ZS4iIChTYWRsaWVyIDc0KQoKSW4gZXNzZW5jZSwgYXMgUG9wbGF3c2tpICgyMDAzICkgc28gc3VjY2luY3RseSBleHBsYWlucywgUGVzc29hJ3MgaGV0ZXJvbnltcyBhcmUsIGxpdGVyYWxseSwgIiYjODIzMDtvdGhlciBuYW1lcyB3aGljaCBQZXNzb2EgaGltc2VsZiAob3IgIm9ydGhvbnltb3VzIikgZ2F2ZSB0byAib3RoZXIgcG9ldHMiIGhlIGRpc2NvdmVyZWQgaW4gaGltc2VsZiBhbmQgdW5kZXIgd2hvc2UgZGlmZmVyZW50IHBlcnNvbmFsaXRpZXMgaGUgd3JvdGUuIiAoUG9wbGF3c2tpIDI5MykgVGhlcmUgYXJlIGRvemVucyBvZiB0aGVzZSBvdGhlciBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBiZWVuIGZvdW5kIGFtb25nIHRoZSB0ZXh0cyBsZWZ0IGJ5IFBlc3NvYSwgaG93ZXZlciwgdGhlcmUgYXJlIHNvbWUgd2hpY2ggYXJlIG1vcmUgcHJvbWluZW50IGFuZCBpbXBvcnRhbnQgdGhhbiBvdGhlcnMuIFRoZXNlIGNoYXJhY3RlcnMgYXJlOiBBbGJlcnRvIENhZWlybywgUmljYXJkbyBSZWlzLCBhbmQgQWx2YXJvIGRlIENhbXBvcywgYXMgd2VsbCBhcyBCZXJuYXJkbyBTb2FyZXMsIGJ1dCBTb2FyZXMgaXMgZGVzY3JpYmVkIGFzIGEgc2VtaS1oZXRlcm9ueW0gYnkgdGhlIGF1dGhvciBhcyBoZSBpcyBtb3JlIG9mIGFuIGFsdGVyLWVnbyBvZiB0aGUgYXV0aG9yIGhpbXNlbGYgYW5kIGlzIHRoZSBhdXRob3Igb2YgdGhlIEJvb2sgb2YgRGlzcXVpZXR1ZGUuIEFsYmVydG8gQ2FlaXJvIGlzIGRlc2NyaWJlZCBhcyBhbiAiaW5nZW5pb3VzLCB1bmxldHRlcmVkIG1hbiB3aG8gbGl2ZWQgaW4gdGhlIGNvdW50cnkgYW5kIGhhZCBubyBwcm9mZXNzaW9uLiIgKEdpYmJzIDIyNikgdGhlIGNoYXJhY3RlciBvZiBSaWNoYXJkIFJlaXMgaXMgYSBkb2N0b3IgYW5kIGNsYXNzaWNpc3Qgd2hvICImIzgyMzA7d3JvdGUgb2RlcyYjODIzMDs= V3JpbmtsZSBpbiBUaW1lIEZlbWluaW5lIElkZW50aXR5IGluIGFuZA== V3JpbmtsZSBpbiBUaW1lIEZlbWluaW5lIElkZW50aXR5IGluIGFuZA== MQ== NzUyMDg1Mjk= Mg== Ng== QTExNDcwMTM= OTEwMDcz MTEwNjc= NTA= QVBB TGl0ZXJhdHVyZQ== TGl0ZXJhdHVyZSAvIFBvZXRyeQ== RXNzYXk= MQ== MQ== MQ== MjE0NTI= MTg5Ng== MTI0Mzg2NDgwMA== MQ== V3JpbmtsZSBpbiBUaW1lCgpGZW1pbmluZSBJZGVudGl0eSBpbiBhbmQgQXJvdW5kIE1hZGVsZWluZSBMJ0VuZ2xlJ3MgYSBXcmlua2xlIGluIFRpbWUKClRob3VnaCBvZnRlbiBjb25zaWRlcmVkIGEgY2hpbGRyZW4ncyBvciAieW91bmcgYWR1bHQiIG5vdmVsLCBNYWRlbGVpbmUgTCdFbmdsZSdzIEEgV3JpbmtsZSBpbiBUaW1lIGhhcyBtYW55IGNvbXBsZXggdGhlbWVzLCBhbmQgaXRzIGVuZHVyYW5jZSBhbmQgZGV2b3RlZCByZWFkZXJzaGlwIGFyZSBldmlkZW5jZSBvZiBpdHMgY29uc2lkZXJhYmxlIGxpdGVyYXJ5IG1lcml0LiBJdCBzZWVtcyB2aXJ0dWFsbHkgdW5jb25zY2lvbmFibGUsIHRoZW4sIHRoYXQgdGhlIG5vdmVsIHNob3VsZCBoYXZlIGJlZW4gc28gcXVpY2tseSBhbmQgY29tcGxldGVseSByZWxlZ2F0ZWQgdG8gdGhlIHJhbmtzIG9mIGp1dmVuaWxlIGZpY3Rpb247IHRob3VnaCBpdHMgcGxvdCBhbmQgdGhlIGNvbWluZy1vZi1hZ2UgYW5nbGUgb2YgdGhlIHN0b3J5IHJlbmRlciBpdCBhbiBlbm9ybW91c2x5IGVuam95YWJsZSBhbmQgZXZlbiBpbnN0cnVjdGl2ZSBib29rIGluIGFkb2xlc2NlbmNlLCB0aGUgc29waGlzdGljYXRpb24gb2YgaXRzIGNvbnN0cnVjdGlvbiBiZWxpZXMgdGhlIHdvcnRoaW5lc3Mgb2YgY29udGludWluZyBzdHVkeSBhbmQgYW5hbHlzaXMgb24gdGhlIG5vdmVsIGJ5IHNjaG9sYXJzIHdpdGggbW9yZSBkZXZlbG9wZWQgY3JpdGljYWwgc2Vuc2VzLCBhbmQgdGhlIGZvdW5kYXRpb24gaW4gbGl0ZXJhcnkgdGhlb3J5IGFuZCBoaXN0b3J5IHRoYXQgb25seSB0aW1lIGRldm90ZWQgdG8gdGhlIHN0dWR5IG9mIHRoZXNlIHN1YmplY3QgY2FuIHByb3ZpZGUuIFN1Y2ggYmFja2dyb3VuZCBrbm93bGVkZ2UgcHJvdmlkZXMgdGhlIGNhcmVmdWwgcmVhZGVyIG9mIEEgV3JpbmtsZSBpbiBUaW1lIHdpdGggYSB3ZWFsdGggb2Yga25vd2xlZGdlIHRoYXQgcHJvdmlkZXMgYSBtdWNoIGdyZWF0ZXIgY29udGV4dCB0byB0aGUgd29yayB0aGFuIGl0IGNhbiBpdHNlbGYgcHJvdmlkZS4KCk9uZSBvZiB0aGUgbW9yZSBjb21wZWxsaW5nIHRoZW9yZXRpY2FsIGZyYW1ld29ya3Mgd2l0aCB3aGljaCB0byBhcHByb2FjaCBMJ0VuZ2xlJ3MgbWFzdGVycGllY2UgaXMgZmVtaW5pc3QgdGhlb3J5LiBJbiBtYW55IHdheXMsIGluIGZhY3QsIHRoZSBib29rIGNhbiBiZSByZWFkIGFzIGFuIGFsbGVnb3J5IG9mIGZlbWluaW5lIHNlbGYtZXhwbG9yYXRpb24sIHNlbGYtZGlzY292ZXJ5LCBhbmQgaW5kZXBlbmRlbnQgKG9yIGF0IGxlYXN0IGNvbnRyb2wtcmVzaXN0YW50KSBpZGVudGl0eSBtYWtpbmcuIFRoZSBub3ZlbCBpcyBhbG1vc3QgRGlja2Vuc2lhbiBpbiB0aGUgdGhpY2tuZXNzIG9mIGl0cyBwbG90IGFuZCB0aGUgbWFueSB0dXJucywgbm90IHRvIG1lbnRpb24gaXRzIGRlcGljdGlvbiBvZiBhIHZpcnR1YWxseSBwYXJlbnRsZXNzIGNoaWxkLiBCdXQgcmF0aGVyIHRoYW4gYSBWaWN0b3JpYW4tZXJhIG1hc2N1bGluZSBvcnBoYW4gd2FpZiwgdGhlIHByb3RhZ29uaXN0IG9mIHRoaXMgdGFsZSBpcyBhIGdpcmwgbmVhcmluZyBoZXIgYWRvbGVzY2VuY2UsIGFuZCB3aG8gbXVzdCBjb21wbGV0ZWx5IGRldGVybWluZSBoZXIgb3duIGlkZW50aXR5IHJhdGhlciB0aGFuIGFzcGlyaW5nIHRvIGZ1bGZpbGwgYSBkZWZpbmVkIHJvbGUgaW4gc29jaWV0eSwgYXMgYSBQaXAgb3IgT2xpdmVyIFR3aXN0LiBUaG91Z2ggbXVjaCBjdXJyZW50IGxpdGVyYXJ5IHRoZW9yeSBjb25zaWRlcnMgc3VjaCBleGFtaW5hdGlvbiB0YWJvbywgdGhlcmUgaXMgYWxzbyBhIGdyZWF0IGRlYWwgdGhhdCBjYW4gYmUgc2FpZCBhYm91dCB0aGUgYXV0aG9yc2hpcCBvZiB0aGlzIG5vdmVsIGZyb20gdGhlIGZlbWluaW5lIHBlcnNwZWN0aXZlLCBtYWtpbmcgQSBXcmlua2xlIGluIFRpbWUgYSBtb251bWVudGFsIHdvcmsgb2YgZmVtaW5pc3QgbGl0ZXJhdHVyZSBpbnNpZGUgYW5kIG91dC4KClRoaXMgZmVtaW5pc3Qgc3RyYWluIGlzIG9ic2VydmFibGUgZXZlbiBpbiB0aGUgZ2VuZXJhbCBzdHJ1Y3R1cmUsIHN0b3J5LCBhbmQgZXZlbiBhdXRob3JzaGlwIG9mIHRoZSBub3ZlbC4gVGhlcmUgaXMgbm8gZXNjYXBpbmcgdGhlIGZhY3QgdGhhdCB0aGlzIGlzIGEgY29taW5nLW9mLWFnZSBzdG9yeSBvZiBhbiBhZG9sZXNjZW50IGdpcmwsIGluY2x1ZGluZyB0aGUgb2JsaWdhdG9yeSB0ZWVuYWdlIHJvbWFuY2UuIFlldCB0aGlzIGlzIG5vdCB5b3VyIHN0YW5kYXJkIEp1ZHkgQmx1bWUgZmFyZSAtLSB0aGVyZSBpcyBhIGRlZmluaXRlIHNlbnNlIG9mIGFnZW5jeSBhbmQgdXJnZW5jeSBhYm91dCBNZWcgdGhhdCBkb2VzIG5vdCBleGlzdCBmb3IgbWFueSB0ZWVuYWdlcnMsIGVzcGVjaWFsbHkgZmVtYWxlcywgaW4gc2ltaWxhciBub3ZlbHMuIE1lZyB0YWtlcyBvbiB0aGUgdHlwZSBvZiBoZXJvaWMgcm9sZSB0aGF0IGlzIHR5cGljYWxseSByZXNlcnZlZCBmb3IgbWFsZSBmaWd1cmVzLCBhbmQgaW4gYW5vdGhlciBpbnRlcmVzdGluZyB0d2lzdCBpdCBpcyBoZXIgZmF0aGVyIC0tIHRoZSB0cmFkaXRpb25hbCBmaWd1cmUgb2YgbWFsZSBkb21pbmFuY2UgYW5kLCBhY2NvcmRpbmcgdG8gRnJldWRpYW4gdGhlb3J5LCBmZW1pbmluZSBzZXh1YWxpdHkgLS0gdGhhdCBzaGUgbXVzdCByZXNjdWUsIHBsYWNpbmcgaGVyIGluIGEgcG9zaXRpb24gb2YgcG93ZXIgb3ZlciBoaW0sIGFuZCBvdmVyIHRoZSBtZW4gKG9yIGJveXMpIHRoYXQgYWNjb21wYW55IGhlci4gVGhpcyBjb3VsZCBiZSBzZWVuIHRvIHJlZmxlY3QgQ3VsbGVyJ3Mgc3RhdGVtZW50IHRoYXQgYWxsIHJlYWRlcnMgYXJlIGFza2VkIC0tIG9yIGZvcmNlZCAtLSBieSBtb3N0IGxpdGVyYXR1cmUgdG8gYWRvcHQgYSBtYWxlIHBlcnNwZWN0aXZlLiBBIFdyaW5rbGUgaW4gVGltZSBicmVha3Mgd2l0aCB0aGlzIHN0YW5kYXJkIGZyYW1ld29yaywgYW5kIHRoZSBwZXJzcGVjdGl2ZSBvZiB0aGUgbm92ZWwgc2VlbXMgdG8gYXNzdW1lIGEgZmVtYWxlIHJlYWRlci4KCkl0IGlzIGFsc28gd29ydGh5IG9mIG5vdGluZyB0aGUgZmFjdCB0aGF0IE1hZGVsZWluZSBMJ0VuZ2xlIGlzLCBvZiBjb3Vyc2UgYSBmZW1hbGUgYXV0aG9yLCBhbmQgc2NpZW5jZSBmaWN0aW9uIHdhcyAtLSBhbmQgc3RpbGwgaXMsIHRvIGEgbGFyZ2UgZGVncmVlIC0tIG9uZSBvZiB0aGUgbW9zdCBoZWF2aWx5IChwZXJoYXBzIHRoZSBtb3N0IGhlYXZpbHkpIG1hbGUtZG9taW5hdGVkIGdlbnJlcyBvZiBsaXRlcmF0dXJlLiBUaGlzIHNob3dzIGEgZnVydGhlciByZWplY3Rpb24gYW5kL29yIHJlLWFwcHJvcHJpYXRpb24gb2YgbWFsZSBkb21pbmF0ZWQgZnJhbWV3b3JrcywgYW5kIHNlcnZlcyBhcyBhbiBvdXRlciBhbGxlZ29yeSBvZiBzb3J0cyB0aGF0IG1pcnJvcnMgdGhlIGludGVybmFsIHN0b3J5IG9mIHRoZSBub3ZlbC4gSnVzdCBhcyBNZWcgaXMgYWRvcHRpbmcgYSB0cmFkaXRpb25hbGx5IG1hbGUgcm9sZSBhbmQgcmVkZWZpbmluZyBib3RoIHRoZSBwYXJhbWV0ZXJzIGJ5IHdoaWNoIHRoaXMgcm9sZSBhbmQgZmVtYWxlcyBhcmUgYWxsb3dlZCB0byBvcGVyYXRlLCBMJ0VuZ2xlIGlzIG1ha2luZyB0aGUgc2FtZSBzb3J0IG9mIGdlc3R1cmUsIHdoZXRoZXIgcHVycG9zZWZ1bGx5IG9yIG5vLCBpbiB0aGUgZXh0ZXJuYWwgd29ybGQuCgpUaGVyZSBhcmUgYWxzbyBzb21lIHRyYWRpdGlvbmFsIHF1ZXN0aW9ucyBpbiBmZW1pbmlzdCB0aGVvcnkgdGhhdCBhcmUgZGlyZWN0bHkgYWRkcmVzc2VkIGluIEEgV3JpbmtsZSBpbiBUaW1lLiBPbmUgb2YgdGhlIG1vc3Qgc2ltcGxlIGFuZCBvYnZpb3VzIGlzIHRoZSBnZW5lcmFsIHJlamVjdGlvbiBvZiB3b21lbiB3aG8gZG8gbm90IGNvbmZvcm0gdG8gdGhlIGN1bHR1cmFsIGFuZCBzb2NpZXRhbCBub3JtcyBvZiB0aGVpciB3b3JsZC4gTWVnIGlzIHRoZSBtb3N0IG9idmlvdXMgZXhhbXBsZSBvZiB0aGlzIGluIHRoZSBub3ZlbDsgc2hlIGZlZWxzIGxpa2UgYW4gb3V0Y2FzdCBhdCBzY2hvb2wgYW5kIGxhcmdlbHkgaW4gaGVyIGZhbWlseSwgbGFyZ2VseSBiZWNhdXNlIHNoZSBpcyBoZWF2aWx5IGNlcmVicmFsIGFuZCBpbnRlbGxlY3R1YWwgaW5zdGVhZCBvZiBiZWluZyBjb25zdW1lZCB3aXRoIG1vcmUgdHJhZGl0aW9uYWxseSBmZW1pbmluZSBpbnRlcmVzdHMgYW5kIGFjdGl2aXRpZXMgKGkuZS4gaG9tZW1ha2luZyBhbmQgYmVhdXRpZnlpbmcpLiBTaGUgaXMgZmFyIG1vcmUgY29tZm9ydGFibGUgd2l0aCBib29rcyB0aGFuIHdpdGggcGVvcGxlLCBzYXlpbmcgIkkgZG8gZmFjZSB0aGUgZmFjdHMuLi5UaGV5J3JlIGEgbG90IGVhc2llciB0byBmYWNlIHRoYW4gcGVvcGxlIEkgY2FuIHRlbGwgeW91IHRoYXQiIChMRSduZ2xlIDIzKS4gVGhlcmUgYXJlIGFsc28gb3RoZXIgdmVyeSBpbnRlcmVzdGluZyBleGFtcGxlcyBvZiB0aGlzIHJlamVjdGlvbiBvZiBub24tdHlwaWNhbCBmZW1hbGVzLCBob3dldmVyLiBNZWcncyBtb3RoZXIgaXMgc2VlbiBhcyBzb21ldGhpbmcgb2YgYW4gb2RkaXR5IGZvciBtYWludGFpbmluZyBoZXIgZmFpdGggaW4gaGVyIGh1c2JhbmQgZGVzcGl0ZSBoaXMgdW5leHBsYWluZWQgYWJzZW5jZSBmb3IgbW9yZSB0aGFuIGEgeWVhci4gVGhpcyBpbGx1c3RyYXRlcyB0aGUgcGhlbm9tZW5vbiBvZiB0aGUgcmVqZWN0aW9uIG9mIG5vbi10cmFkaXRpb25hbCBmZW1hbGVzIG9uIGFub3RoZXIgbGV2ZWwgdGhhbiBNZWc7IGhlciBtb3RoZXIgaXMgbm90IG9ubHkgcGxhY2VkIG9uIHRoZSBvdXRzaWRlIG9mIGhlciBjb21tdW5pdHkgZHVlIHRvIGEgcGVyY2VpdmVkIHN0cmFuZ2VuZXNzLCBidXQgYWxzbyBiZWNhdXNlIHNoZSBoYXMgbG9zdCBoZXIgbWFsZSBjb3VudGVycGFydC4KCkF0IHRoZSBzYW1lIHRpbWUsIHRoZXNlIGNoYXJhY3RlcnMgY2FuIGJlIHNlZW4gdG8gYmUgcmVqZWN0aW5nIGJvdGggdGhlIG1hbGUgZG9taW5hdGVkIHZpZXdzIGFuZCBmcmFtZXdvcmtzIHVwb24gd2hpY2ggdGhlIGlubmVyIHdvcmxkIG9mIHRoZSBub3ZlbCBvcGVyYXRlcywgYXMgd2VsbCBhcyB0aGUgZXh0ZXJuYWwgdmlldyB0aGF0IHJlamVjdHMgc3VjaCB3b21lbiBhbmQgc3VjaCBmZW1hbGUgY2hhcmFjdGVycy4gQXMgQ3VsbGVyIG5vdGVzLCBnZW5kZXIgaXMgbGFyZ2VseSBwZXJmb3JtYXRpdmUgYW5kIGlzICJtb3JlIGxpa2VseSB0byBiZSB0aGUgcmVzdWx0IG9mIHBvbGl0aWNhbCBjb29wZXJhdGlvbiB0aGFuIGl0IGlzIGEgY29uZGl0aW9uIG9mIHBvc3NpYmlsaXR5IiAoQ3VsbGVyKS4gVGh1cywgTWVnIGFuZCBoZXIgbW90aGVyJ3MgcmVqZWN0aW9uIG9mIHRoZSBwb2xpdGljYWwgbW9kZWwgdGhhdCBkaWN0YXRlcyB3aGF0IGlzIGV4cGVjdGVkIG9mIGZlbWFsZXMgYmFzZWQgb24gdGhlaXIgZ2VuZGVyIGlzIGEgcmVmdXNhbCB0byBwZXJmb3JtIHRoZSBwcmVzY3JpYmVkIGZlbWFsZSByb2xlLiBTbyBldmVuIGFzIHRoZWlyIGN1bHR1cmUgYW5kIHNvY2lldHkgc2VlbXMgdG8gYmUgcmVqZWN0aW5nIHRoZW0gYXMgbm9uLXRyYWRpdGlvbmFsIGFuZCBhYm5vcm1hbCBleGFtcGxlcyBvZiB3b21hbmhvb2QsIHRoZXkgYXJlIHJlamVjdGluZyB0aGlzIHZlcnkgbm90aW9uIG9mIHdvbWFuaG9vZCBhbmQgZXZlbiB0aGUgcmlnaHQgYW5kIGFiaWxpdHkgb2YgdGhlaXIgc29jaWV0eSB0byBkZXZlbG9wIHN1Y2ggYW5kIGltcG9zZSBzdWNoIGxpbWl0YXRpb25zLgoKVGhpcyByZWplY3Rpb24gb2YgdGhlIHBvbGl0aWNhbCBhbmQgc29jaWV0YWwgY29vcGVyYXRpb24gb2ZmZXJlZCBsZWFkcyB0byBzb21lIGNvbXBsaWNhdGlvbnMgZm9yIHRoZXNlIGNoYXJhY3RlcnMgYW5kIGZvciB0aGUgZmVtaW5pc3Qgc2Nob2xhciBleGFtaW5pbmcgdGhlIHdvcmssIGhvd2V2ZXIuIEluIHJlamVjdGluZyB0aGUgbmFycm93IGdlbmRlciByb2xlIGJlaW5nIG9mZmVyZWQgdG8gd29tZW4sIGJvdGggb2YgdGhlc2UgY2hhcmFjdGVycyBzZWVtIHRvIGJlIGF0IHJpc2sgb2YgbW92aW5nIG5vIGZ1cnRoZXIgdGhhbiB0aGUgYXJndWFibHkgbW9yZSBsaWJlcmF0aW5nIGJ1dCBzdGlsbCBuYXJyb3dseSBkZWZpbmVkIG1hc2N1bGluZSByb2xlIGluIHNvY2lldHkuIEN1bGxlbiBub3RlcyB0aGF0IHRoZXJlIGFyZSBwcmVzY3JpYmVkIGF0dGl0dWRlcyBhbmQgbWV0aG9kcyBvZiBwZXJmb3JtaW5nIG1vc3QgZ2l2ZW4gYWN0aW9ucyB0aGF0IGhlbHAgdG8gZGVmaW5lLCBmb3IgYmV0dGVyIG9yIGZvciB3b3JzZSwgdGhlICJzb2NpYWxseSBlc3RhYmxpc2hlZCB3YXlzIG9mIGJlaW5nIGEgbWFuIG9yIGJlaW5nIGEgd29tYW4iIChDdWxsZW4pLiBUaGVzZSBhcmUgbm90IHNpbXBseSB0d28gZGlmZmVyZW50IGNhdGVnb3JpZXMgb2YgYmVoYXZpb3IgYW5kIGlkZW50aXR5OyBpbiBtb3N0IGN1bHR1cmVzIC0tIGFuZCBjZXJ0YWlubHkgaW4gdHdlbnRpZXRoIGNlbnR1cnkgV2VzdGVybiBjdWx0dXJlIC0tIHRoZXNlIGFyZSB0aGUgb25seSB0d28gY2F0ZWdvcmllcyBvZiBiZWhhdmlvciBhbmQgaWRlbnRpdHkuIFRoZSByZWplY3Rpb24gb2Ygb25lIG5vdCBvbmx5IGltcGxpZXMgdGhlIGFkb3B0aW9uIG9mIHRoZSBvdGhlciwgaXQgZGVtYW5kcyBpdCwgYXQgbGVhc3QgZnJvbSBhbiBleHRlcm5hbCBwZXJzcGVjdGl2ZSB0aGF0IGNhbm5vdCBtb3ZlIGJleW9uZCB0aGUgb3ZlcmxhaWQgYW5kIHBlcnZhc2l2ZSBmcmFtZXdvcmsgb2YgZ2VuZGVyLgoKVG8gc3VnZ2VzdCwgZm9yIGluc3RhbmNlLCB0aGF0IE1lZydzIGFnZW5jeSBhbmQgaW50ZWxsZWN0dWFsIGFiaWxpdGllcyBhcmUgbW9yZSB0eXBpY2FsbHkgbWFzY3VsaW5lIGlzIHRvIGFscmVhZHkgYnV5IGludG8gdGhpcyBmcmFtZXdvcmssIGFuZCB0byBsaW1pdCB0aGUgY2hvaWNlcyBhbmQgaWRlbnRpdGllcyBhdmFpbGFibGUgdG8gTWVnLiBUaGlzIHBvaW50LW9mLXZpZXcgc3VnZ2VzdHMgdGhhdCB0aGUgb25seSB3YXkgdG8gbW92ZSBiZXlvbmQgdGhlIHN0ZXJlb3R5cGljYWwgYW5kIHNvY2lhbGx5IGVuZm9yY2VkIGdlbmRlciByb2xlcyBvZiB3b21lbiBpcyBmb3IgZmVtYWxlcyB0byBiZWhhdmUgaW4gYSBtb3JlIG1hc2N1bGluZSBtYW5uZXIsIHJhdGhlciB0aGFuIGFjdHVhbGx5IGJlaW5nIGFibGUgdG8gcmVkZWZpbmUgZmVtaW5pbml0eSBvciBlc2NhcGUgdGhlIGZyYW1ld29yayBvZiBnZW5kZXIgYWx0b2dldGhlci4gVG8gc29tZSBkZWdyZWUsIHRoaXMgaXNzdWUgaXMgdW5hdm9pZGFibGUsIGFzIG5laXRoZXIgYXV0aG9yIG5vciByZWFkZXIgKG5vciBjaGFyYWN0ZXJzLCBmb3IgdGhhdCBtYXR0ZXIpIGFyZSB0cnVseSBhYmxlIHRvIGVzY2FwZSB0aGUgc29jaWV0eSBpbiB3aGljaCB0aGV5IGxpdmUuCgpUaGlzIGRvZXMgbm90IG1lYW4gdGhhdCBBIFdyaW5rbGUgaW4gVGltZSBzdXBwb3J0cyB0aGUgYmluYXJ5IG9wcG9zaXRpb24gdGhhdCBpcyB0aGUgZnJhbWV3b3JrIG9mIGdlbmRlciB1cG9uIHdoaWNoIG1vc3QgcGVvcGxlIHVuY29uc2Npb3VzbHkgb3BlcmF0ZSBtb3N0IG9mIHRoZSB0aW1lLiBBbHRob3VnaCB0aGUgYm9vayBjYW5ub3QgZXNjYXBlIHRoaXMgZnJhbWV3b3JrIGVudGlyZWx5LCBpdCBkb2VzIGF0dGVtcHQgdG8gcmVhZGp1c3QgaXQgYW5kIHBvc3NpYmx5IGV2ZW4gYnJlYWsgaXQgZG93biBhdCBwb2ludHMuIFRoaXMgaXMgbmV2ZXIgZG9uZSBmdWxseSBleHBsaWNpdGx5LCBvZiBjb3Vyc2UsIG5vciBzaG91bGQgKG9yIGNvdWxkKSBhbnkgZGVjZW50IHdvcmsgb2YgbGl0ZXJhdHVyZSBldmVyIGNhcnJ5IGFsbCBvZiBpdHMgbWVhbmluZ3MgYW5kIGltcGxpY2F0aW9ucyBvbiB0aGUgc3VyZmFjZSBvZiB0aGUgdGV4dCwgYnV0IHRoZSBhdHRlbXB0IHRvIGJ1Y2sgdGhlIGVudGlyZSBmcmFtZXdvcmsgb2YgZ2VuZGVyIGlzIG5ldmVydGhlbGVzcyBxdWl0ZSBwcmVzZW50LiBPbiBDYW1hem90eiwgTWVnIGVuY291bnRlcnMgYSBwbGFuZXQgb2YgZXZlbiBncmVhdGVyIHJpZ2lkaXR5IGFuZCBmYXIgbW9yZSByZXN0cmljdGl2ZSByb2xlczsgYXMgc2hlIHdhdGNoZXMgdGhlIGNoaWxkcmVuIG9mIHRoZSBwbGFuZXQgYXQgcGxheSwgc2hlIG5vdGVzIGhvdyB0aGUgYmFsbHMgYW5kIGp1bXAgcm9wZXMgbW92ZSBpbiB1bmlzb24sICJhbGwgaW4gcmh5dGhtLiBBbGwgaWRlbnRpY2FsLiBMaWtlIHRoZSBob3VzZXMuIExpa2UgdGhlIHBhdGhzLiBMaWtlIHRoZSBmbG93ZXJzIChMJ0VuZ2xlIDEwMykuIFRob3VnaCBvZiBjb3Vyc2UgdGhlIGltcGxpY2F0aW9ucyBvZiBzdWNoIGF1dG9tYXRvbi1saWtlIGJlaGF2aW9yIGdvIG11Y2ggZGVlcGVyIGFuZCBicm9hZGVyIHRoYW4gc2ltcGx5IHJlZmVycmluZyB0byBnZW5kZXIsIHRoZSBwaGVub21lbm9uIG9mIHNvY2lldGFsIGNvb3BlcmF0aW9uIGluIGRlZmluaW5nIGFuZCBsaW1pdGluZyBpZGVudGl0eSBpcyB0aGUgc2FtZSwgb25seSBtb3JlIGV4dHJlbWUuIE1lZyBhbmQgaGVyIGNvbXBhbmlvbnMgb2YgY291cnNlIHJlYWxpemUgdGhhdCBzdWNoIGEgd2F5IG9mIGxpZmUgaXMgaW5oZXJlbnRseSBpbmh1bWFuLCBhbmQgdGhlIG5ldyBkaW1lbnNpb24gb2YgZnJlZWluZyB0aGVzZSBwZW9wbGUgaXMgYWRkZWQgdG8gdGhlIHN1Y2Nlc3Mgb2YgdGhlaXIgdmVudHVyZS4KCkV2ZW4gTWVnJ3MgdWx0aW1hdGUgc3VjY2VzcyBpbiBmcmVlaW5nIGhlciBicm90aGVyIENoYXJsZXMgV2FsbGFjZSBmcm9tIHRoZSBncmFzcCBvZiAiSXQiIGNhbiBiZSBzZWVuIG5vdCBhcyBhIHBhcnRpY3VsYXJseSBtYXNjdWxpbmUgb3IgZmVtaW5pbmUgYWN0LCBidXQgcmF0aGVyIGFzIGFuIGF0dGVtcHQgdG8gYnJlYWsgZnJlZSBmcm9tIHN1Y2ggZGVmaW5pdGlvbnMgYW5kIGJvdW5kYXJpZXMuIEl0IGlzIHN0aWxsIGltcG9zc2libGUgLS0gb3IgcGVyaGFwcyBtZXJlbHkgZGlzaW5nZW51b3VzIC0tIHRvIGRlbnkgdGhlIHJvbGUgZ2VuZGVyIHBsYXlzIGluIHRoZSB2YXJpb3VzIGFzcGVjdHMgb2YgdGhpcyBoZXJvaWMgZmluaXNoLCBidXQgdGhlIG1peHR1cmUgb2YgZ2VuZGVyIHJvbGVzIG5lY2Vzc2l0YXRlcyBhIGJyZWFrZG93biBvZiB0aGUgc3lzdGVtLiBXaGlsZSYjODIzMDs= QW5uYSBRdWluZGxlbidzICJUaGUgTmFtZSBJcw== QW5uYSBRdWluZGxlbidzICJUaGUgTmFtZSBJcw== MA== OTA3ODg2NjM= MQ== Mw== QTIwODAwNTc= NTgxODI2Nw== MTEwNjc= NTA= Q29sbGVnZSBGcmVzaG1hbiAoMXN0IHllYXIp bi9h TGl0ZXJhdHVyZQ== TGl0ZXJhdHVyZSAvIFBvZXRyeQ== RXNzYXk= MQ== MTA3MDQ4 OTM3 MTM1MzI2MTM5Mw== IE1vcmVvdmVyLCBRdWluZGxlbiB1bmRlcnN0YW5kcyB0aGF0IG1hcnJpYWdlIGFuZCBwYXJlbnRpbmcgYXJlIG5vdCBuZWNlc3NhcmlseSBwYXRyaWFyY2hhbCBzdHJ1Y3R1cmVzLiBTaGUgdW5kZXJzdGFuZHMgdGhhdCB3b21lbiBjYW4gcmV0YWluIHRoZWlyIGlkZW50aXRpZXMgd2l0aGluIHRoZXNlIHN0cnVjdHVyZXMuIFRoZSBuYW1lIGlzIGEgc3ltYm9sIG9mIHRoYXQgcGVyc29uYWwgaWRlbnRpdHksICJhIHNpbXBsZSBzdGF0ZW1lbnQgdGhhdCBJIHdhcyBzb21lYm9keSBhbmQgbm90IGFuIGFkanVuY3Qgb2YgYW55Ym9keSwgZXNwZWNpYWxseSBhIGh1c2JhbmQsIiAoc2VjdGlvbiAyKS4gVGhlIHRvbmUgaW4gTWFyZ2UgUGllcmN5J3MgIkJhcmJpZSBEb2xsIiBpcyBtb3JlIHBlc3NpbWlzdGljIGJlY2F1c2UgdGhlIHBvZW0gZmluaXNoZXMgd2l0aCBpbWFnZXJ5IHRoYXQgaXMgZ3JpbSBhbmQgbW9yYmlkLiAiU28gc2hlIGN1dCBvZmYgaGVyIG5vc2UgYW5kIGxlZ3MgLyBhbmQgb2ZmZXJlZCB0aGVtIHVwLiAvIEluIHRoZSBjYXNrZXQgZGlzcGxheWVkIG9uIHNhdGluIHNoZSBsYXksIiAocC4gMzg3KS4gVGhlICJoYXBweSBlbmRpbmciIHRoYXQgUGllcmN5IHJlZmVycyB0byBpbiB0aGUgbGFzdCBsaW5lIGlzIHNhcmNhc3RpYywgYW5kIGl0IGFsc28gc3ltYm9saXplcyB0aGUgdW5kZXJncm91bmQgc2V4IHRyYWRlIGluIHdoaWNoIHdvbWVuIGdpdmUgbWFzc2FnZXMgdGhlIGhhdmUgImhhcHB5IGVuZGluZ3MiIGZvciB0aGVpciBtYWxlIHBhdHJvbnMuIEluICJCYXJiaWUgRG9sbCwiIHRoZSBjZW50cmFsIGNoYXJhY3RlciBpcyBhIGZlbWFsZSBib3JuIHdpdGggYW1wbGUgcG90ZW50aWFsIGJlY2F1c2Ugc2hlIGlzICJoZWFsdGh5LCIgImludGVsbGlnZW50LCIgInN0cm9uZywiIGFuZCBoYXMgImFidW5kYW50IHNleCBkcml2ZS4iIEhvd2V2ZXIsIHNoZSBpcyBub3QgZGVlbWVkIHBoeXNpY2FsbHkgYXR0cmFjdGl2ZSBlbm91Z2ggYnkgdGhlIGRvbWluYW50IGN1bHR1cmUgYW5kIHNvIGlzIHNodW5uZWQgaW50byBzdWJtaXNzaW9uIGFuZCBldmVudHVhbGx5LCBkZWF0aC4KCkluIHNwaXRlIG9mIHRoZSBkaWZmZXJlbnQgdG9uZXMgdXNlZCBpbiB0aGVpciByZXNwZWN0aXZlIHNvY2lhbCBjb21tZW50YXJpZXMsIFF1aW5kbGVuIGFuZCBQaWVyY3kgYm90aCB1c2UgaW1hZ2VyeSBkZWZ0bHkgaW4gdGhlaXIgd29yay4gSW4gIlRoZSBOYW1lIGlzIE1pbmUsIiBRdWluZGxlbiBzdGFydHMgb2ZmIHRoZSBuYXJyYXRpdmUgd2l0aCBhbiBhbmVjZG90ZSBhYm91dCBiZWluZyBpbiB0aGUgaG9zcGl0YWwgYW5kIGhhdmluZyBhIG51cnNlIHJlZmVyIHRvIGhlciBhcyBNcnMuIEtyb3ZhdGluLiBLcm92YXRpbiBpcyBoZXIgaHVzYmFuZCdzIG5hbWUuIEZvciB0aGUgZmlyc3QgdGltZSwgdGhlIGF1dGhvciByZXNpc3RzIGNvcnJlY3Rpbmcgc29tZW9uZSBvbiBwcmluY2lwbGUuIFVzaW5nIG1vcmUgaW1hZ2VyeSwgUXVpbmRsZW4gbm90ZXMgdGhhdCB0aGUgZHVhbCBpZGVudGl0eSBoYXMgbWFkZSBoZXIgZmVlbCBsaWtlIGEgIndvcm0mIzgyMzA7Y2hvcHBlZCBpbiBoYWxmLCIgaW4gd2hpY2ggaGVyIGJpcnRoIG5hbWUgd29ya3MgaW4gc29tZSBzaXR1YXRpb25zIGJ1dCBub3QgaW4gb3RoZXJzIChzZWN0aW9uIDkpLiBRdWluZGxlbidzIGltYWdlcnkgY29udmV5cyBoZXIgY2VudHJhbCBpZGVhIHRoYXQgYSBuYW1lIGlzIGEgcG93ZXJmdWwgc2lnbmlmaWVyIG9mIGZlbWFsZSBpZGVudGl0eSBjb25zdHJ1Y3Rpb24uIFBpZXJjeSBsaWtld2lzZSByZWxpZXMgb24gaW1hZ2VyeSB0byBjb252ZXkgYSBmZW1pbmlzdCBpZGVhLiAiQmFyYmllIERvbGwiIGlzIGEgcG9lbSB0aGF0IGlzIHBlcm1lYXRlZCB3aXRoIGltYWdlcnkgYWJvdXQgdGhlIHNleGlzdCB0b3lzIHRoYXQgYXJlIGdpdmVuIHRvIHlvdW5nIGdpcmxzIGxpa2UgdGhlICJkb2xscyB0aGF0IGRpZCBwZWUtcGVlLCIgdGhlICJtaW5pYXR1cmUgR0Ugc3RvdmVzIGFuZCBpcm9ucyIgdGhhdCB0ZWFjaCBjaGlsZHJlbiBob3cgdG8gYmUgc29jaWFsaXplZCBpbnRvIHRoZWlyIGdlbmRlciByb2xlcy4gVGhlIGltYWdlcnkgaW4gIkJhcmJpZSBEb2xsIiBpcyB1c2VkIHRvIHVuZGVyc2NvcmUgdGhlIGlkZWEgdGhhdCB3b21lbiBoYXZlIGJlZW4gb2JqZWN0aWZpZWQgc3lzdGVtYXRpY2FsbHkuIEJvdGggYXV0aG9ycyBhcmUgc3VjY2Vzc2Z1bCBpbiB1c2luZyBpbWFnZXJ5IHRvIGNvbnZleSB0aGVpciBjb3JlIHRoZW1lcy4KCkFubmEgUXVpbmRsZW4ncyAiVGhlIE5hbWUgaXMgTWluZSIgYW5kIE1hcmdlIFBpZXJjeSdzICJCYXJiaWUgRG9sbCIgYXJlIGJvdGggZmVtaW5pc3QgdGV4dHMgdGhhdCB1c2UgcG9pbnQtb2YtdmlldywgdG9uZSwgYW5kIGltYWdlcnkgdG8gY29udmV5IHRoZSBjZW50cmFsIGlkZWEgdGhhdCBwYXRyaWFyY2h5IGlzIGRhbWFnaW5nIHRvIGZlbWFsZSBpZGVudGl0eS4gVGhlIHR3byB3b3JrcyBhcmUgY29tcGxldGVseSBkaWZmZXJlbnQsIGFzIFF1aW5kbGVuJ3MgaXMgYSBmaXJzdCBwZXJzb24gbmFycmF0aXZlIGluIHByb3NlIGZvcm1hdCwgd2hlcmVhcyBQaWVyY3kgdXNlcyBhIHRoaXJkIHBlcnNvbiBwb2VtLiBBbHRob3VnaCBRdWluZGxlbiBpcyBvcHRpbWlzdGljLCB3aGVyZWFzIFBpZXJjeSBpcyBhbmdyeSBhbmQgc2FyY2FzdGljLCBib3RoIGVmZmVjdGl2ZWx5IHVzZSB0b25lIHRvIHBlcnN1YWRlIHRoZSByZWFkZXIuIFRoZWlyIHVzZSBvZiBpbWFnZXJ5IGFsc28gaGVscHMgdGhlIHJlYWRlciB1bmRlcnN0YW5kIGhvdyBwYXRyaWFyY2h5IGlzIGEgZGFtYWdpbmcgc29jaWFsIGluc3RpdHV0aW9uIHRoYXQgY2FuIGxpdGVyYWxseSYjODIzMDs= U2VsZi1FeHByZXNzaW9uIG9mIElkZW50aXR5 U2VsZi1FeHByZXNzaW9uIG9mIElkZW50aXR5 MQ== NzM2NDI2Ng== MzA= MTA= QTExMzE4NDg= NTM1MzMzMg== MTE4Mjc= Njc= QVBB V29tZW4ncyBJc3N1ZXMgLSBTZXh1YWxpdHk= U2V4dWFsaXR5IC8gR2VuZGVy UmVzZWFyY2ggUHJvcG9zYWw= MQ== MQ== MQ== Mjg4Mjc= MzU3NQ== MTIxNjY1NjAwMA== MQ== U2VsZi1FeHByZXNzaW9uIG9mIElkZW50aXR5CgpMaXRlcmF0dXJlIFJldmlldyBkb24ndCBzZWUgdGhlIHBvaW50IGluIHNwZW5kaW5nIG15IHRpbWUgd2l0aCBwZW9wbGUgd2hvIGFyZSBub3QgZ29pbmcgdG8gYmUgYWJsZSB0byByZWxhdGUgdG8gbWUgYW5kIEknbSBub3QgZ29pbmcgdG8gYmUgYWJsZSB0byByZWxhdGUgdG8gdGhlbS4gV2UgYXJlIGZyb20gZGlmZmVyZW50IHdvcmxkcywgc28gSSB0aGluayBJJ3ZlIGhhZCBlbm91Z2ggb2YgdGhhdCBpbiBteSBsaWZlIFsuLi5dIEkgZG9uJ3Qgd2FudCB0byBmZWVsIGFzIGlmIEkgaGF2ZSB0byBwcmV0ZW5kIHRvIGJlIHNvbWVvbmUgSSdtIG5vdCwiIChCb3VyZGlldSwgMTk5NzogNDcxKS4gVGhlIGNvbmNlcHQgb2YgYmVpbmcgZGlmZmVyZW50IHdpdGhpbiB0aGUgY29udGV4dCBvZiBhIGNsYXNzcm9vbSBpcyBhbiBlbm9ybW91cyBmZWFyIGZvciBtYW55IHN0dWRlbnRzLCBzdWNoIGFzIHRob3NlIHdobyBhcmUgZGVhZiBvciBnYXkgYW5kIGxlc2JpYW4uIEhvd2V2ZXIsIHRoaXMgZmVhciBnb2VzIG11Y2ggZGVlcGVyIHRoYW4gc2ltcGxlIHN1cmZhY2UgZGlmZmVyZW5jZXMgb2YgaGVhcmluZyBhbmQgc2V4dWFsaXR5IC0tIGl0IGhpbmRlcnMgdGhlIHRydWUgZGV2ZWxvcG1lbnQgb2YgaW5kaXZpZHVhbCBpZGVudGl0eS4gSG93ZXZlciwgc2V2ZXJhbCB0aGVvcmllcyBoYXZlIGF0dGVtcHRlZCB0byBpc29sYXRlIHRoZXNlIHNwZWNpZmljIGhpbmRyYW5jZXMgYW5kIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXhpdGllcyBvZiBkZXZlbG9waW5nIGFuIGlkZW50aXR5IGluIHRoZSBzaGFkb3cgb2Ygbm9ybWFsIGNsYXNzcm9vbSBleGlzdGVuY2UuCgpUaGUgY29uY2VwdCBvZiBpZGVudGl0eSBpcyBhIHNsaXBwZXJ5IHRlcm0sIHdoaWNoIHJlZmVycyB0byB0aGUgdW5kZXJzdGFuZGluZyBvZiBvbmVzZWxmIGFuZCBvbmUncyBzaXR1YXRpb24gd2l0aGluIHRoZSBleHRlcm5hbCB3b3JsZC4gQWNjb3JkaW5nIHRvIFN0dWFydCBIYWxsIGluIGhpcyAxOTk2IHdvcmssIHRoZSBpZGVhIG9mIGlkZW50aXR5IGlmIGFuIG9uZ29pbmcgcHJvY2VzcyBkZWFsaW5nIHdpdGggYm90aCAiYmVjb21pbmciIGFzIHdlbGwgYXMgImJlaW5nOyIgaXQgcmVmbGVjdHMgYm90aCB3aGF0IGFuIGluZGl2aWR1YWwgaXMgc2xvd2x5IG1vcnBoaW5nIGludG8sIGFzIHdlbGwgYXMgd2hhdCB0aGF0IGluZGl2aWR1YWwgYWxyZWFkeSBpZGVudGlmaWVzIGhpbSBvciBoZXJzZWxmIHdpdGgsIChIYWxsLCAxOTk2OiAyMzcpLiBOb3Qgb25seSBhcmUgdGhlIGNvbW1vbiBjb25jZXB0aW9ucyBvZiB3aG8gb25lIGFscmVhZHkgYmVsaWV2ZSBvbmVzZWxmIHRvIGJlIGhlYXZpbHkgaW5mbHVlbnRpYWwgaW4gdGhlIGNyZWF0aW9uIG9mIGVhY2ggaW5kaXZpZHVhbCBpZGVudGl0eSwgYnV0IHNvIGFyZSB0aGUgZHJlYW1zIGFuZCBhc3BpcmF0aW9ucyBvbmUgaG9sZHMgZm9yIGEgZnV0dXJlIHNlbGYganVzdCBhcyBkZWZpbmluZyBpbiB0ZXJtcyBvZiBpZGVudGl0eSBjcmVhdGlvbi4gVGhpcyBjb250aW51ZXMgaW50byB0aGUgaWRlYSBvZiBpZGVudGl0eSBhcyBiZWluZyBmb3JtZWQgZnJvbSBib3RoIHdob20gb3Igd2hhdCBzb21lb25lIHdhbnRzIHRvIGJlLCBhcyB3ZWxsIGFzIHdobyBvciB3aGF0IGFuIGluZGl2aWR1YWwgZG9lcyBub3Qgd2FudCB0byBiZSwgb3IgYSBzcGVjaWZpYyByb2xlIGluIHdoaWNoIGFuIGluZGl2aWR1YWwgImRpcy1pZGVudGlmaWVzIiBoaXMgb3IgaGVyc2VsZiwgKFNrZWdncywgMTk5NzogMTIzKS4gVGhpcyBjb25jZXB0IGlzIGFsc28gaGlnaGx5IGltcG9ydGFudCBpbiB0aGUgZm9ybWF0aW9uIG9mIGluZGl2aWR1YWwgaWRlbnRpdHksIGZvciBpdCBnaXZlcyBhIHBlcnNvbiBhIGNsZWFyIGxpbWl0YXRpb24gb2Ygd2hhdCB0aGV5IHdpc2ggdGhlaXIgaWRlbnRpdHkgdG8gYmUuCgpUaGVyZSBhcmUgc2V2ZXJhbCBlZHVjYXRpb25hbCB0aGVvcmllcyB3aGljaCBjb2luY2lkZSB3aXRoIHRoZSBmb3JtYXRpb24gb2YgZWFjaCBpbmRpdmlkdWFsJ3MgaWRlbnRpdHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIGEgY2xhc3Nyb29tLiBTb2NpYWwgSnVzdGljZSBFZHVjYXRpb24gdGhlb3JpZXMgcG9zaXQgdGhlIGNvbmNlcHQgdGhhdCBlZHVjYXRpb24gc2hvdWxkIHJlZmxlY3QgdGhlIGNoYW5nZXMgb2YgdGhlIHNvY2lhbCBtb3ZlbWVudCB3aGljaCBoYXZlIGxpYmVyYXRlZCB0aG91c2FuZHMgb2YgQW1lcmljYW5zIHdpdGhpbiB0aGUgcGFzdCBjZW50dXJ5LiBTdHVkZW50cyBhbGwgZmFjZSBkaWZmaWN1bHRpZXMgd2l0aGluIGEgY2xhc3Nyb29tIHNldHRpbmcgYmFzZWQgb24gdGhlaXIgaW5kaXZpZHVhbCBkaWZmZXJlbmNlcyB3aGljaCBtYXkgbWFrZSBsaXZpbmcgd2l0aGluIGEgY2xhc3Nyb29tIGVudmlyb25tZW50IGhhcmRlciwgZm9yIGV4YW1wbGUgYSBzdHVkZW50IGJlaW5nIGVpdGhlciBkZWFmIG9yIEhvbW9zZXh1YWwuIFRoZXJlIGFyZSBzZXZlcmFsIGZhY2V0cyBvZiB0aGlzIGNvbmNlcHRpb24gb2Ygc29jaWFsIGp1c3RpY2UsICJpdCBpcyB2aWV3ZWQgYXMgc2ltdWx0YW5lb3VzbHkgY29uY2VybmluZyB0aGUgZGlzdHJpYnV0aW9uIG9mIGdvb2RzIGFuZCByZXNvdXJjZXMgb24gdGhlIG9uZSBoYW5kIGFuZCB0aGUgdmFsb3JpemF0aW9uIG9mIGEgcmFuZ2Ugb2Ygc29jaWFsIGNvbGxlY3RpdmVzIGFuZCBjdWx0dXJhbCBpZGVudGl0aWVzIG9uIHRoZSBvdGhlciwiIChDcmliYiAmYW1wOyBHZXJ3aXR6LCAyMDAzOiAxNSkuIFRoaXMgcmVmbGVjdHMgYSBjb21tb24gZXF1YWwgdHJlYXRtZW50IGFuZCBmb3N0ZXJpbmcgb2YgYSB2YXJpZXR5IG9mIGRpZmZlcmVudCBpZGVudGl0aWVzIHdpdGhpbiB0aGUgc29jaWV0eSBhdCBsYXJnZXIsIHdoZXRoZXIgdGhvc2UgaWRlbnRpdGllcyBiZSByYWNpYWwsIHNvY2lhbCwgb3Igb2YgYSBwaHlzaWNhbCBoYW5kaWNhcHBlZCBuYXR1cmUuIEluIG1hbnkgY2FzZXMgZWR1Y2F0aW9uIHByb2dyYW1zIGZhaWwgYXQgZnVsZmlsbGluZyB0aGUgbXVsdGlwbGUgZGVmaW5pdGlvbnMgb2YgdGhlIHRlcm07IGFuZCBpbiBtb3N0IGNhc2VzIG1hbnkgY2xhc3Nyb29tcyBmYWlsIHRvIGFja25vd2xlZGdlIGFuZCBzdXBwb3J0IHRoZSB2YXJpb3VzIGN1bHR1cmFsIGlkZW50aXRpZXMgd2l0aGluIHRoZWlyIHdhbGxzLCAoQ3JpYmIgJmFtcDsgR2Vyd2l0eiwgMjAwMzogMTUpLgoKTW9zdCBpZGVudGl0aWVzIGZvcm11bGF0ZWQgd2l0aGluIGEgY2xhc3Nyb29tIHRlbmQgdG8gYmUgYmFzZWQgb24gc29jaWFsIGNsYXNzIGRpZmZlcmVuY2VzIHN1Y2ggYXMgcmljaCBhbmQgcG9vcjsgeWV0IHRoZXJlIGFyZSBvdGhlciBmYWN0b3JzIHdoaWNoIGhlbHAgZm9zdGVyIGluZGl2aWR1YWwgaWRlbnRpdHkgYXMgd2VsbCwgKEVwc3RlaW4sIEhld2l0dCwgTGVvbmFyZCwgTWF1dGhuZXIsICZhbXA7IFdhdGtpbnMsIDIwMDM6IDEyMCkuIFRoZXNlIGZhY3RvcnMgaW5jbHVkZSBwaHlzaWNhbCBoYW5kaWNhcHMgd2hpY2ggc2VwYXJhdGUgY2hpbGRyZW4ncyBleHBlcmllbmNlcyBmcm9tIHRob3NlIG9mIGEgbm9ybWFsIGV4aXN0ZW5jZSwgYXMgd2VsbCBhcyBpc3N1ZXMgb2Ygc2V4dWFsIG9yaWVudGF0aW9uIGFsc28gcmVzcG9uc2libGUgZm9yIGNoaWxkcmVuIGRpcy1pZGVudGlmeWluZyB0aGVtc2VsdmVzIGZyb20gdGhlIG5vcm1hbCBjb25jZXB0aW9uIG9mIHRoZWlyIGNsYXNzcm9vbSdzIHByb2plY3RlZCBpZGVudGl0eS4gU29jaWFsIEp1c3RpY2UgVGhlb3JpZXMgd291bGQgcG9zaXQgdGhlIGNvbmNlcHQgb2YgcHJvdGVjdGluZyBhbmQgZm9zdGVyaW5nIHRoZXNlIHVuaXF1ZSB0eXBlcyBvZiBpZGVudGlmaWNhdGlvbiwgZGVzcGl0ZSB0aGUgaGVhdnkgYmFja2xhc2ggYWdhaW5zdCB0aGVtLgoKTXVjaCBvZiB0aGUgYmFja2xhc2ggdG93YXJkcyB0aGVzZSBpZGVudGl0aWVzIGNvbWVzIGluIGEgc29tZXRpbWVzIHZpb2xlbnQgaG9tb3Bob2JpYyByZWFjdGlvbiBvZiBvdGhlciBzdHVkZW50cy4gQSBzdHVkeSBjb25kdWN0ZWQgaW4gdGhlIFVLIGluIDE5OTcgcmV2ZWxlZCBhbiBhc3RvbmlzaGluZyA4MiUgb2YgdGVhY2hlcnMgd2l0aGluIDYwMCBzY2hvb2xzIGhhZCB3aXRuZXNzZWQgaG9tb3Bob2JpYyBidWxseWluZyBmaXJzdCBoYW5kLCAoRXBzdGVpbiwgSGV3aXR0LCBMZW9uYXJkLCBNYXV0aG5lciwgJmFtcDsgV2F0a2lucywgMjAwMzogMTIzKS4gRm9yIEdheSwgTGVzYmlhbiwgQmktc2V4dWFsLCBhbmQgVHJhbnNnZW5kZXIgc3R1ZGVudHMsIHRoaXMgY29uc3RhbnQgcmVtaW5kZXIgdGhhdCB0aGV5IGFyZSBub3QgdGhlIG5vcm0gaXMgYW4gaW1wb3J0YW50IGZhY3RvciBpbiB0aGUgc2hhcGluZyBvZiB0aGVpciBpZGVudGl0aWVzLiBJbiB0aGUgcGVyZmVjdCBpbXBsZW1lbnRhdGlvbiBvZiBTb2NpYWwgSnVzdGljZSBUaGVvcnksIHRoZXNlIGNsYXNzcm9vbXMgd291bGQgY29tcGxldGVseSBlcmFkaWNhdGUgdGhpcyBob21vcGhvYmljIGF0bW9zcGhlcmUgYXMgYSB3YXkgdG8gZnVydGhlciBhbGxvdyBzdWNoIHN0dWRlbnRzIHRvIGlkZW50aWZ5IHRoZW1zZWx2ZXMgd2l0aCBhIHN0dWRlbnQgaWRlbnRpdHkgYXMgd2VsbCBhcyBHYXkgb3IgTGVzYmlhbiBpZGVudGl0eS4KCldoZXJlYXMgU29jaWFsIEp1c3RpY2UgRWR1Y2F0aW9uIGF0dGVtcHRzIHRvIGNoYW5nZSBhdXRob3JpdGF0aXZlIG1ldGhvZHMgdXNlZCBpbiBlZHVjYXRpb24gaW4gb3JkZXIgdG8gaGVscCBmb3N0ZXIgZGlmZmVyZW50IGN1bHR1cmFsIGlkZW50aXRpZXMsIENyaXRpY2FsIFBlZGFnb2d5IGlzIG1vcmUgZnJvbSB0aGUgc3R1ZGVudCdzIHBvaW50LW9mLXZpZXc7IHRoaXMgdGhlb3J5IGVuY291cmFnZXMgc3R1ZGVudHMgdG8gcXVlc3Rpb24gYXV0aG9yaXR5IGFuZCBhY2hpZXZlIHRoZWlyIG93biB1bmlxdWUgdmVyc2lvbnMgb2YgY3JpdGljYWwgY29uc2Npb3VzbmVzcywgIltDcml0aWNhbF0gcGVkYWdvZ3kuLi4gc2lnbmFscyBob3cgcXVlc3Rpb25zIG9mIGF1ZGllbmNlLCB2b2ljZSwgcG93ZXIsIGFuZCBldmFsdWF0aW9uIGFjdGl2ZWx5IHdvcmsgdG8gY29uc3RydWN0IHBhcnRpY3VsYXIgcmVsYXRpb25zIGJldHdlZW4gdGVhY2hlcnMgYW5kIHN0dWRlbnRzLCBpbnN0aXR1dGlvbnMgYW5kIHNvY2lldHksIGFuZCBjbGFzc3Jvb21zIGFuZCBjb21tdW5pdGllcy4uLi4gUGVkYWdvZ3kgaW4gdGhlIGNyaXRpY2FsIHNlbnNlIGlsbHVtaW5hdGVzIHRoZSByZWxhdGlvbnNoaXAgYW1vbmcga25vd2xlZGdlLCBhdXRob3JpdHksIGFuZCBwb3dlciwiIChHaXJvdXgsIDE5OTQ6IDMwKS4gVGhpcyBwcmFjdGljZSBhbHNvIG9yaWdpbmF0ZWQgd2l0aCBjbGFzcyBhcyBiZWluZyB0aGUgbWFpbiBjb21wb25lbnQgZm9yIGRpdmVyc2lvbiBvZiBjdWx0dXJhbCBpZGVudGl0aWVzLCBidXQgd2FzIGFsc28gbGF0ZXIgYWRvcHRlZCBieSBxdWVlciBhbmQgc3BlY2lhbCBlZHVjYXRpb24gdGhlb3JpZXMuIFRoZSBtYWluIHByb3BvbmVudCBvZiBlYXJseSBDcml0aWNhbCBQZWRhZ29neSwgUGF1bG8gRnJlaXJlLCBleHBsYWluZWQgaG93IHRoaXMgcHJhY3RpY2UgZW1wb3dlcmVkIHN0dWRlbnRzIHRvIGxvb2sgYmV5b25kIHRoZWlyIG93biBpbmRpdmlkdWFsIHNpdHVhdGlvbnMgYW5kIGhvdyB0aG9zZSBzaXR1YXRpb25zIGFyZSBoZWxkIGJhY2sgYnkgdGhlIHNvY2lldHkgd2hpY2ggZ292ZXJucyB0aGVtLCAoRnJpZXJlLCAyMDAwOiA3NikuIEFjY29yZGluZyB0byBJcmEgU2hvciBpbiBoaXMgd29yayBFbXBvd2VyaW5nIEVkdWNhdGlvbiwgdGhlIGlkZWEgb2YgQ3JpdGljYWwgUGVkYWdvZ3kgcmVmZXJzIHRvIHRoZSAiSGFiaXRzIG9mIHRob3VnaHQsIHJlYWRpbmcsIHdyaXRpbmcsIGFuZCBzcGVha2luZyB3aGljaCBnbyBiZW5lYXRoIHN1cmZhY2UgbWVhbmluZywgZmlyc3QgaW1wcmVzc2lvbnMsIGRvbWluYW50IG15dGhzLCBvZmZpY2lhbCBwcm9ub3VuY2VtZW50cywgdHJhZGl0aW9uYWwgY2xpY2hlcywgcmVjZWl2ZWQgd2lzZG9tLCBhbmQgbWVyZSBvcGluaW9ucyB0byB1bmRlcnN0YW5kIHRoZSBkZWVwIG1lYW5pbmcsIHJvb3QgY2F1c2VzLCBzb2NpYWwgY29udGV4dCwgaWRlb2xvZ3ksIGFuZCBwZXJzb25hbCBjb25zZXF1ZW5jZXMgb2YgYW55IGFjdGlvbiwgZXZlbnQsIG9iamVjdCwgcHJvY2Vzcywgb3JnYW5pemF0aW9uLCBleHBlcmllbmNlLCB0ZXh0LCBzdWJqZWN0IG1hdHRlciwgcG9saWN5LCBtYXNzIG1lZGlhLCBvciBkaXNjb3Vyc2UsIiAoU2hvciwgMTk5MjogMTI5KS4gVGhlIHZlcnkgZXhpc3RlbmNlIG9mIENyaXRpY2FsIFBlZGFnb2d5IFRoZW9yeSBhaW1zIGF0IGFsbGV2aWF0aW5nIHRoZSBwYWluIGFuZCBzdWZmZXJpbmcgY2F1c2VkIGJ5IHRoZSBvcHByZXNzaW9uIG9mIHRob3NlIGluZGl2aWR1YWxzIHdob3NlIGlkZW50aXR5IGRvZXMgbm90IGZhbGwgd2l0aGluIHRoZSBub3JtYWwgZ3VpZGVsaW5lcyBvZiB3aGF0IGl0IHNob3VsZCBiZSwgKEtpbmNoZWxvZSwgMjAwODogMjMpLgoKVGhpcyB0aGVvcnkgcG9zaXRzIHRoZSBjb25jZXB0IHRoYXQgc3R1ZGVudHMgd2hvIGZhbGwgb3V0c2lkZSB0aGUgbm9ybSBhcmUgc3RpbGwgZW50aXRsZWQgdG8gY3JlYXRlIGFuIGluZGl2aWR1YWwgaWRlbnRpdHkgYmFzZWQgb24gdGhlIGhpZ2hlciBrbm93bGVkZ2Ugb2YgdGhlaXIgb3BwcmVzc2lvbiBpbiBzb2NpZXR5LiBJbiBpdHMgZWFybGllciBzdGFnZXMgdGhpcyByZWZlcnJlZCBtYWlubHkgdG8gY2xhc3MgZGlmZmVyZW5jZXMsIGJ1dCBoYXMgc2luY2UgYmVlbiBhZG9wdGVkIGJ5IHF1ZWVyIGFuZCBzcGVjaWFsIGVkdWNhdGlvbiBzdHVkaWVzIHRvIGhlbHAgZW1wb3dlciBzdWNoIHN0dWRlbnRzIHRvIHJpc2UgYWJvdmUgdGhlIHNldCB3YWxsIG9mIG9wcHJlc3Npb24gYWdhaW5zdCB0aGVtLiBJbiB0aGUgY2FzZXMgb2YgdGhlIHBoeXNpY2FsbHkgaGFuZGljYXBwZWQgYW5kIHF1ZWVyIHN0dWRlbnRzLCB0aGlzIHRoZW9yeSBiZWNvbWVzIGFuIGVtcG93ZXJtZW50IGZvciB0aGVtIHRvIGluZGl2aWR1YWxseSByaXNlIHVwIGFnYWluc3QgdGhlIG9wcHJlc3Npb24gZm91bmQgb3V0c2lkZSBvZiB0aGUgY2xhc3Nyb29tLCAoS2luY2hlbG9lLCAyMDA4OiAxNTYpLiBDcml0aWNhbCBQZWRhZ29neSBpbiBhIG1vZGVybiB3b3JsZCByZXF1aXJlcyB0aGUgc3R1ZGVudCB0byB1bmRlcnN0YW5kIHRoYXQgdGhlcmUgYXJlIG11bHRpcGxlIGxldmVscyBvZiBvcHByZXNzaW9uIHRoYXQgZ29lcyBmYXIgYmV5b25kIHNpbXBsZSBjbGFzcyBsaW5lcywgKFZhdnJ1cywgV2FsdG9uLCBLaWRvLCBEaWZmZW5kYWwsICZhbXA7IEtpbmcsIDE5OTk6IDExOSkuIERlYWYgc3R1ZGVudHMgY2FuIHVuZGVyc3RhbmQgdGhhdCB0aGVyZSBhcmUgb3RoZXIgd2F5cyB0byBlc3RhYmxpc2ggdGhlaXIgaWRlbnRpdHkgb3V0c2lkZSBvZiB0aGUgdmVyYmFsIGFuZCBzcG9rZW4gd29ybGQgb2YgbW9zdCB0cmFkaXRpb25hbCBjbGFzc3Jvb21zLiBBbHRob3VnaCBkZWVtZWQgc3BlY2lhbCBlZHVjYXRpb24gc3R1ZGVudHMsIHRoaXMgaXMgaW4gbm8gd2F5IGEgbGltaXQgdG8gdGhlaXIgb3duIGNhcGFjaXRpZXMuIE9uY2UgdGhleSBjYW4gZXN0YWJsaXNoIHRoaXMgY29uZmlkZW5jZSBhbmQgY29uc2Npb3VzbmVzcywgQ3JpdGljYWwgUGVkYWdvZ3kgaGFzIHN1Y2NlZWRlZCBpbiBhbGxvd2luZyBkZWFmIHN0dWRlbnRzIHRvIGNyZWF0ZSBhIHVuaXF1ZSwgeWV0IHBlcmZlY3RseSBhY2NlcHRhYmxlIHZlcnNpb24gb2YgdGhlaXIgb3duIGlkZW50aXR5IG91dHNpZGUgb2YgdGhlIGF1ZGlibGUgd29ybGQsIChWYXZydXMsIFdhbHRvbiwgS2lkbywgRGlmZmVuZGFsLCAmYW1wOyBLaW5nLCAxOTk5OiAxMTkpLiBUaGUgc2FtZSBnb2VzIHdpdGggZ2F5LCBsZXNiaWFuLCBiaS1zZXh1YWwsIGFuZCB0cmFuc2dlbmRlciBzdHVkZW50cy4gUmVzZWFyY2ggaGFzIHNob3duIHRoYXQgQ3JpdGljYWwgUGVkYWdvZ3kgaW4gcHJhY3RpY2UgYWxsb3dzIHN0dWRlbnRzIHRvIGVtcG93ZXIgdGhlbXNlbHZlcyBvdXRzaWRlIG9mIHRoZSBub3JtLiBOb3Qgb25seSB3b3VsZCB0aGlzIHByYWN0aWNlIGJlbmVmaXQgdGhlIG1pbmRzIG9mIHF1ZWVyIHN0dWRlbnRzIHRoZW1zZWx2ZXMsIGluIHRoZSBzdHJvbmdlciBjcmVhdGlvbiBvbiBhbiBhY2NlcHRlZCBpZGVudGl0eSwgYnV0IGl0IHdvdWxkIGFsc28gbGVzc2VuIGhvbW9waG9iaWMgdGVuc2lvbnMgaW4gaGV0ZXJvc2V4dWFsIHN0dWRlbnRzIHVwb24gcmVhbGl6YXRpb24gb2YgdGhlIG9wcHJlc3Npb24gaW52b2x2ZWQgd2l0aCBob21vcGhvYmlhLiBCZWNhdXNlIGl0IGNvbmNlcm5zIGFsbCBlbGVtZW50cyBvZiB0aGUgY2xhc3Nyb29tLCBDcml0aWNhbCBQZWRhZ29neSBwcm92ZXMgbW9zdCBlZmZpY2llbnQgaW4gb3BlbmluZyB0aGUgbWluZHMgb2YgYWxsIHN0dWRlbnRzIGNvbmNlcm5pbmcgdGhlIG9wcHJlc3Npb24gYW5kIGlkZW50aXR5IGNyaXNpcyBmYWNlZCBieSBnYXkgYW5kIGxlc2JpYW4gc3R1ZGVudHMsCgpDcml0aWNhbCBwZWRhZ29neSBpcyBwcmltYXJpbHkgY29uY2VybmVkIHdpdGggdGhlIGtpbmRzIG9mIGVkdWNhdGlvbmFsIHRoZW9yaWVzIGFuZCBwcmFjdGljZXMgdGhhdCBlbmNvdXJhZ2UgYm90aCBzdHVkZW50cyBhbmQgdGVhY2hlcnMgdG8gZGV2ZWxvcCBhbiB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbnRlcmNvbm5lY3RpbmcgcmVsYXRpb25zaGlwIGFtb25nIGlkZW9sb2d5LCBwb3dlciwgYW5kIGN1bHR1cmUuLi4gW3RoYXRdIGNoYWxsZW5nZXMgdXMgdG8gcmVjb2duaXplLCBlbmdhZ2UsIGFuZCBjcml0aXF1ZSAoc28gYXMgdG8gdHJhbnNmb3JtKSBhbnkgZXhpc3RpbmcgdW5kZW1vY3JhdGljIHNvY2lhbCBwcmFjdGljZXMgYW5kIGluc3RpdHV0aW9uYWwgc3RydWN0dXJlcyB0aGF0IHByb2R1Y2UgYW5kIHN1c3RhaW4gaW5lcXVhbGl0aWVzIGFuZCBvcHByZXNzaXZlIHNvY2lhbCBpZGVudGl0aWVzIGFuZCByZWxhdGlvbnMsIChMZWlzdHluYSAmYW1wOyBXb29kcnVtLCAxOTk1OiAyLTMpLgoKVGhpcyB0aGVuIGFsbG93cyB0aGUgZW50aXJlIGNsYXNzcm9vbSB0byBiZWNvbWUgbW9yZSBhY2NlcHRpbmcgb2Ygc3VjaCBzdHVkZW50J3MgaWRlbnRpdGllcywgd2hpY2ggd2lsbCBvbmx5IGZ1cnRoZXIgZm9zdGVyIHRoZSBkZXZlbG9wbWVudCBvZiBzdWNoIHF1ZWVyIGlkZW50aXRpZXMuCgpPbmUgb2YgdGhlIG1ham9yIHRoZW9yaWVzIHdoaWNoIGNvaW5jaWRlcyB3aXRoIHRoZSBmb3JtYXRpb24gb2YgaWRlbnRpdHkgaW4gZGlmZmVyZW50IHN0dWRlbnRzIGlzIHRoZSBjb25jZXB0IG9mIHRoZSBTb2NpYWwgSWRlbnRpdHkgVGhlb3J5LiBUaGlzIGlkZW9sb2d5LCBpcyBhbm90aGVyIGNvbmNlcHRpb24gb2YgaG93IHdlIGNyZWF0ZSBpbmRpdmlkdWFsIGlkZW50aXRpZXMgZm9yIG91cnNlbHZlcyBiYXNlZCBvbiB0aGUgdGhlb3JpZXMgb2YgSGVucmkgVGFqZmVsIGFuZCBKb2huIFR1cm5lci4gQWNjb3JkaW5nIHRvIHRoZWlyIGVhcmx5IHJlc2VhcmNoLCBlYWNoIGFuZCBldmVyeSBzb2NpYWwgZ3JvdXAgaGFzIGl0cyBvd24gZm9ybSBvZiBpbnRlcm5hbCBkaXNjcmltaW5hdGlvbiB3aGljaCBsYWJlbHMgZWFjaCBpbmRpdmlkdWFsIGluIHRoZSBsYXJnZXIgZ3JvdXAsIChUYWpmZWwgJmFtcDsgVHVybmVyLCAxOTc5OiA5NCkuIFdpdGhpbiB0aGlzIGRpc2NyaW1pbmF0aW9uLCBlYWNoIGdyb3VwIGNhdGVnb3JpemVzIGV2ZXJ5IGluZGl2aWR1YWwgaW50byBhbiBlYXN5IGxhYmVsLCBmb3IgaW5zdGFuY2UgIkRlYWYiIGJhc2VkJiM4MjMwOw== SnV2ZW5pbGUgRGVsaW5xdWVuY3kgVGhlb3J5IFNvY2lhbCBJZGVudGl0eQ== SnV2ZW5pbGUgRGVsaW5xdWVuY3kgVGhlb3J5IFNvY2lhbCBJZGVudGl0eQ== MQ== ODUzMTg5NDA= NQ== Mw== QTIwNDQyNDM= MTQ2MjQ0OQ== MTEwMjc= MjY= Q29sbGVnZSBKdW5pb3IgKDNyZCB5ZWFyKQ== bi9h Q3JpbWluYWwgSnVzdGljZQ== Q3JpbWUgLyBQb2xpY2UgLyBDcmltaW5hbCBKdXN0aWNl VGVybSBQYXBlcg== MQ== MQ== MQ== NDY1MzI= MTE0NA== MTMxODg4NzE5Mg== IFRoZXkgbWFrZSB1cCA2MiUgb2YgdGhlIHVuZGVyLWFnZWQgcGVyc29ucyBwcm9zZWN1dGVkIGluIHRoZSBhZHVsdCBjcmltaW5hbCBzeXN0ZW0gImFuZCBhcmUgbmluZSB0aW1lcyBtb3JlIGxpa2VseSB0aGFuIHdoaXRlIHlvdXRoIHRvIHJlY2VpdmUgYW4gYWR1bHQgcHJpc29uIHNlbnRlbmNlLi4uIHdoaXRlIHlvdXRoIGFyZSBzaWduaWZpY2FudGx5IG1vcmUgbGlrZWx5IHRoYW4gQWZyaWNhbi1BbWVyaWNhbiB5b3V0aCB0byB1c2UgZHJ1Z3MgYW5kIDMwJSBtb3JlIGxpa2VseSB0byBzZWxsIGRydWdzLCBidXQgQWZyaWNhbi1BbWVyaWNhbiB5b3V0aCBhcmUgdHdpY2UgYXMgbGlrZWx5IHRvIGJlIGFycmVzdGVkIGFuZCBkZXRhaW5lZCBmb3IgZHJ1ZyBvZmZlbnNlcyIgKEh1c3RvbiAyMDA4KS4KClBvc3Rtb2Rlcm5pc20gaXMgYSB0b29sIHRvIGhlbHAgdXMgdW5kZXJzdGFuZCB3aHkgY2VydGFpbiBwZXJzb25zIGhhdmUgYmVlbiBjbGFzc2lmaWVkIGFzIHBhcnQgb2YgYSBjcmltaW5hbCBjbGFzcy4gQ29udmVudGlvbmFsIGNyaW1pbm9sb2d5IHRoZW9yaWVzIG1heSBzdGF0ZSB0aGF0IEFmcmljYW4tQW1lcmljYW5zIGFyZSBtb3JlIGxpa2VseSB0byBjb21taXQgY3JpbWVzIGJlY2F1c2UgdGhleSBhcmUgbWVtYmVycyBvZiBoaXN0b3JpY2FsbHkgZGlzY3JpbWluYXRlZC1hZ2FpbnN0IGdyb3Vwcywgb3IgdGhhdCBwb3ZlcnR5IGFuZCBzb2NpYWwgZGlzZW5mcmFuY2hpc2VtZW50IGNyZWF0ZXMgYSBmZXJ0aWxlIGJyZWVkaW5nLWdyb3VuZCBmb3IgY3JpbWUuIEJ1dCB0aGlzIGRvZXMgbm90IGV4cGxhaW4gd2h5IEFmcmljYW4tQW1lcmljYW5zIGFyZSBsZXNzIGxpa2VseSB0byB1c2UgYW5kIHNlbGwgZHJ1Z3MgeWV0IGFyZSBtb3JlIGxpa2VseSB0byBiZSBpbmNhcmNlcmF0ZWQgZm9yIHRoZXNlIG9mZmVuc2VzIHRoYW4gd2hpdGVzLiBQb3N0bW9kZXJuaXNtIHR1cm5zIHRoZSBsZW5zIG9mIGFuYWx5c2lzIGFuZCBhdHRlbXB0cyB0byB1bmRlcnN0YW5kIHdoeSB3aGF0IHdlIGNhbGwgY3JpbWVzIGFyZSBjcmltZXMgLS0gd2h5LCBmb3IgZXhhbXBsZSwgd2FzIGNyYWNrIGNvbnNpZGVyZWQgdG8gYmUgYSAnd29yc2UnIGRydWcgdGhhbiBjb2NhaW5lIChiZWNhdXNlIG9mIGl0cyBncmVhdGVyIHByZXNlbmNlIGluIHRoZSBpbm5lciBjaXR5KS4gSXRzIG5vdGlvbnMgb2YgdGhlIGNvbnN0cnVjdGlvbiBvZiAndGhlIGNyaW1pbmFsJyBzdWdnZXN0IHRoYXQgcmF0aGVyIHRoYW4gY29uY3JldGUgZGl2aWRlcyBiZXR3ZWVuIGNyaW1pbmFsaXR5IGFuZCBub3JtYWxjeSwgdGhlc2UgYmFycmllcnMgYXJlIHBlcm1lYWJsZS4gVGhpcyBlbmFibGVzIHVzIHRvIGJlIG1vcmUgc2VsZi1jcml0aWNhbCBhcyBhIHNvY2lldHkgb2Ygb3VyIGp1c3RpY2Ugc3lzdGVtLgoKV2Vha25lc3NlcwoKUG9zdG1vZGVybmlzbSBkZW1vbnN0cmF0ZXMgaG93IHN0YW5kYXJkcyBvZiBjcmltaW5hbGl0eSBhcmUgbXV0YWJsZSB0aHJvdWdob3V0IHRoZSBhZ2VzLiBIb3dldmVyLCBsYXcgZW5mb3JjZW1lbnQgb2ZmaWNpYWxzIG11c3QgaGF2ZSBzb21lIHN0YW5kYXJkcyB3aGVuIGVuZm9yY2luZyBiZWhhdmlvci4gVG8gbWVyZWx5IHF1ZXN0aW9uIG9yIHJlbGF0aXZpemUgYWxsIGNyaW1pbmFsIGJlaGF2aW9yIHdpbGwgbm90IGdlbmVyYXRlIGEgZnVuY3Rpb25hbCwgc2FmZSBzb2NpZXR5IGluIHdoaWNoIGFsbCBwZW9wbGUgbWF5IGZsb3VyaXNoLgoKSW1wbGljYXRpb25zCgoiQ3JpbWUgYW5kIGl0cyBjb250cm9sIGNhbm5vdCBiZSBzZXBhcmF0ZWQgZnJvbSB0aGUgdG90YWxpdHkgb2YgdGhlIGRpc2N1cnNpdmVseSBvcmRlcmVkLCBzdHJ1Y3R1cmFsIGFuZCBjdWx0dXJhbCBjb250ZXh0cyBpbiB3aGljaCBpdCBpcyBwcm9kdWNlZCIgKEJhcmFrIGV0IGFsLiAyMDExKS4gR3JlYXRlciBzZWxmLWNyaXRpY2lzbSBvbiB0aGUgcGFydCBvZiBsYXcgZW5mb3JjZW1lbnQgaXMgZXNzZW50aWFsLCByZWdhcmRpbmcgaG93IGNyaW1pbmFscyBhcmUgJ2NvbnN0cnVjdGVkLicgSW4gdGVybXMgb2Ygc3BlY2lmaWMgcG9saWNpZXMsIHRyeWluZyB0byBjcmVhdGUgYSBtb3JlIHRydWx5IGVxdWFsIGp1c3RpY2Ugc3lzdGVtIHRoYXQgaXMgYmFzZWQgbW9yZSB1cG9uIGluZGl2aWR1YWwgcmVoYWJpbGl0YXRpb24gcmF0aGVyIHRoYW4gcmV0cmlidXRpb24gZm9yIGNlcnRhaW4gY2xhc3NlcyBvZiBjcmltZXMgaXMgZXNzZW50aWFsLiBQb3N0bW9kZXJuaXNtIHdvdWxkIGJlIHBhcnRpY3VsYXJseSBhZ2FpbnN0IHRoZSBjb25jZXB0IG9mIGF1dG9tYXRpY2FsbHkgdHJ5aW5nIGNlcnRhaW4ganV2ZW5pbGVzIGFzIGFkdWx0cywgd2hpY2ggZGVlbXMgY2VydGFpbiBjcmltZXMgc28gYmV5b25kIHRoZSBwYWxlIG9mIHNvY2lldHksIHRoZXkgcmVxdWlyZSB0aGUgaW5kaXZpZHVhbCB0byBiZSBpbmNhcmNlcmF0ZWQuIEJ5IHJlamVjdGluZyB0aGUgaWRlYSB0aGF0IHRoZSBpbmRpdmlkdWFsIGlzICJjb25zY2lvdXMsIHdob2xlLCBzZWxmLWRpcmVjdGluZywgcmVmbGVjdGl2ZSwgdW5pdGFyeSwgYW5kIHRyYW5zcGFyZW50LCIgYW5kIHN0cmVzc2luZyB0aGUgYWJpbGl0eSBvZiBzb2NpZXR5IHRvIGNoYW5nZSB0aGUgaW5kaXZpZHVhbCBieSBjaGFuZ2luZyBpdHMgb3duIGlkZWFzIGFuZCBpbnN0aXR1dGlvbnMsIGEgbGVzcyBqdWRnbWVudGFsIGFuZCBtb3JlIHByb2FjdGl2ZSBmb3JtIG9mIGFkZHJlc3NpbmcgdGhlIG1vc3QgdnVsbmVyYWJsZSBhbmQgbWFsbGVhYmxlIHBlcnNvbnMgLS0ganV2ZW5pbGVzIC0tIGlzIHBvc3NpYmxlIHRocm91Z2ggdGhpcyBwaGlsb3NvcGh5IG9mIGNyaW1pbm9sb2d5IChNaWxvdmFub3ZpYyAyMDExKS4KClJlZmVyZW5jZXMKCkJhcmFrLCBHcmVnZyBTdHVhcnQgSGVucnkgJmFtcDsgRHJhZ2FuIE1pbG92YW5vdmljLiAoMjAxMSkuIENvbnN0aXR1dGl2ZSBjcmltaW5vbG9neTogQW4gb3ZlcnZpZXcgb2YgYW4gZW1lcmdpbmcgcG9zdG1vZGVybmlzdCBzY2hvb2wuIFJlZCBGZWF0aGVyIEpvdXJuYWwuIFJlZCBGZWF0aGVyCgpJbnN0aXR1dGUgUG9zdG1vZGVybiBDcmltaW5vbG9neSBTZXJpZXMuIFZvbHVtZSAxLiBSZXRyaWV2ZWQgT2N0b2JlciAxNywgMjAxMSBhdCBodHRwOi8vd3d3LmNyaXRjcmltLm9yZy9yZWRmZWF0aGVyL2pvdXJuYWwtcG9tb2NyaW0vdm9sLTEtaW50cm8vMDAxb3ZlcnZpZXcuaHRtbAoKQ293bGluZywgTWFyay4gKDIwMDYpLiBQb3N0bW9kZXJuIHBvbGljaWVzLiBJbnRlcm5ldCBKb3VybmFsIG9mIENyaW1pbm9sb2d5LgoKUmV0cmlldmVkIE9jdG9iZXIgMTcsIDIwMTEgYXQgaHR0cDovL3d3dy5pbnRlcm5ldGpvdXJuYWxvZmNyaW1pbm9sb2d5LmNvbS9Db3dsaW5nJTIwLSUyMFBvc3Rtb2Rlcm4lMjBQb2xpY2llcy5wZGYKCkh1c3RvbiwgV2VuZGVsbC4gKDIwMDgpLiBDcml0aWNhbCBjb25kaXRpb246IEFmcmljYW4tQW1lcmljYW4geW91dGggaW4gdGhlIGp1c3RpY2Ugc3lzdGVtLgoKTmV3IEFtZXJpY2FuIE1lZGlhLiBSZXRyaWV2ZWQgT2N0b2JlciAxNywgMjAxMSBhdCBodHRwOi8vbmV3cy5uZXdhbWVyaWNhbWVkaWEub3JnL25ld3Mvdmlld19hcnRpY2xlLmh0bWw/YXJ0aWNsZV9pZD01ZWE2NTllOGY0YzZhNTJkMDA2M2Q4Y2I2MWEyNzM2ZQoKTWlsb3Zhbm92aWMsIERyYWdhbi4gKDIwMTEpLiBEdWVsaW5nIHBhcmFkaWdtcy4gUmVkIEZlYXRoZXIgSm91cm5hbC4gUmVkIEZlYXRoZXIKCkluc3RpdHV0ZSBQb3N0bW9kZXJuIENyaW1pbm9sb2d5IFNlcmllcy4gVm9sdW1lIDEuIFJldHJpZXZlZCBPY3RvYmVyIDE3LCAyMDExIGF0IGh0dHA6Ly93d3cuY3JpdGNyaW0ub3JnL3JlZGZlYXRoZXIvam91cm5hbC1wb21vY3JpbS92b2wtMS1pbnRyby8wMDNkdWVsbGluZ3BhcmFkaWdtcy5odG1sCgpXYWx0b24sIFBhdWwgJmFtcDsgSm9jayBZb3VuZy4gKDE5OTgpLiBDcmltaW5vbG9neSBhbmQgcG9zdG1vZGVybml0eS4gVGhlIE5ldyBDcmltaW5vbG9neQoKUmV2aXNpdGVkLiBMb25kb246IE1hY21pbGxhbi4gUmV0cmlldmVkIE9jdG9iZXIgMTcsIDIwMTEgYXQgaHR0cDovL3d3dy5idW5rZXI4LnB3cC5ibHVleW9uZGVyLmNvLnVrL21pc2MvcG1vZC5odG0= UmFjZSBDcml0aWNhbCBUaGVvcmllczogVGV4dCBhbmQgQ29udGV4dCBSZXNwb25zZQ== UmFjZSBDcml0aWNhbCBUaGVvcmllczogVGV4dCBhbmQgQ29udGV4dCBSZXNwb25zZQ== MQ== MTk5NDE3Njc= Mw== Mw== QTExMjI2NzM= MzU0NjY= MTExMTE= NjQ= Q29sbGVnZSBTb3Bob21vcmUgKDJuZCB5ZWFyKQ== TUxB UmFjZQ== UmFjZSAvIEV0aG5pYyBTdHVkaWVzIC8gUmFjaXNt VGVybSBQYXBlcg== MQ== MQ== MQ== MzI2MTI= MTA0NA== MTIwMTU0NjgwMA== MQ== UmFjZSBDcml0aWNhbCBUaGVvcmllczogVGV4dCBBbmQgQ29udGV4dCBSZXNwb25zZQoKQWx0aG91Z2ggYmxhY2sgYW5kIHdoaXRlIGFyZSBvZnRlbiB0aG91Z2h0IG9mIGFzIHRoZSBvcHBvc2luZyAnY2FtcHMnIHRoYXQgZGVmaW5lIGRpc2N1c3Npb25zIG9mIHJhY2UgaW4gQW1lcmljYSB0b2RheSwgdGhlIGVzc2F5ICJEZWZpbmluZyBCbGFjayBGZW1pbmlzdCBUaG91Z2h0IiBieSBQYXRyaWNpYSBIaWxsIENvbGxpbnMgc3VnZ2VzdHMgdGhhdCB0aGUgJ3Byb2JsZW0nIG9mIGJsYWNrIHdvbWFuaG9vZCBhY3RzIGFzIGEgcHJvZm91bmQgY2hhbGxlbmdlIHRvIGNvbnZlbnRpb25hbCBiaW5hcnkgdGhpbmtpbmcgYWJvdXQgcmFjZS4gQ29sbGlucyBjYWxscyB1cG9uIHNjaG9sYXJzIHRvIGFjY2VwdCBtb3JlIGZsdWlkaXR5IGFuZCBvdmVybGFwIGJldHdlZW4gYmxhY2sgZmVtaW5pc3QgdGhvdWdodCBhbmQgdGhlb3JpZXMgb2YgcmFjZS4gU2hlIGJlZ2lucyBoZXIgZXNzYXkgbm90aW5nIHRoYXQgYmxhY2sgZmVtaW5pc3Qgd3JpdGluZ3MgYXJlICJ3aWRlbHkgdXNlZCIgYXMgc2xvZ2FucywgeWV0IGFyZSByYXJlbHkgZGVmaW5lZCwgZXZlbiB0aG91Z2ggYmxhY2sgd29tZW4ncyBuYXJyYXRpdmVzIG9mIHN0cnVnZ2xlIG9mZmVyIGEgcmljaCBzb3VyY2UgZm9yIGFsbCBpbmRpdmlkdWFscyB0byBzZWVraW5nIG92ZXJjb21lIGRpY2hvdG9tb3VzIHRoaW5raW5nIGFib3V0IHJhY2lhbCBhbmQgZ2VuZGVyLWJhc2VkIGlzc3VlcyBhbmQgdGVuc2lvbnMgaW4gc29jaWV0eSAoMTUyKS4KCkNvbGxpbnMgbm90ZXMgdGhhdCBibGFjayB3b21lbiBtYXkgbm90IGZlZWwgYXMgaWYgdGhleSAnZml0JyBpbnRvIGNvbnZlbnRpb25hbCBkaXNjdXNzaW9ucyBvZiBlaXRoZXIgcmFjZSBvciBnZW5kZXIsIHlldCB0aGVpciBsYW5ndWFnZSBhbmQgY29uY2VwdHVhbCBmcmFtZXdvcmsgY2FuIG9mZmVyIHBvd2VyZnVsIGluc2lnaHQgdG8gdGhlIGZlbWluaXN0IGFuZCBzb2Npb2xvZ2ljYWwgcnVicmljcyBvZiBzdHVkeSB0aGF0IGhhdmUgb2Z0ZW4gb3Zlcmxvb2tlZCBibGFjayB3b21lbidzIGNvbnRyaWJ1dGlvbi4gT25lIHBvd2VyZnVsIGV4YW1wbGUgb2YgQ29sbGlucycgaXMgdGhhdCBhIGJsYWNrIGxlc2JpYW4gd29tYW4gd2hvIGRlc2NyaWJlcyBoZXIgZXhwZXJpZW5jZSBhdCBhIGhldGVyb3NleHVhbCB3ZWRkaW5nIGFzIGEga2luZCBvZiBib25kYWdlLiBTaGUgdXNlcyB0aGUgbGFuZ3VhZ2UgdG8gc2xhdmVyeSB0byBzaG93IGhvdyBnYXkgcGVvcGxlIGZlZWwgdGhleSBtdXN0IGNvbmNlYWwgdGhlaXIgdHJ1ZSBmZWVsaW5ncywgZXZlbiBhbW9uZ3N0IG1lbWJlcnMgb2YgYSBmYW1pbHkgZHVyaW5nIGEgam95b3VzIGNlbGVicmF0aW9uICgxNTgpLiBBbHRob3VnaCBDb2xsaW5zIHdpc2hlcyB0byBzdHJlc3MgaW5jbHVzaW9uIG9mIHZhcmlvdXMgYmxhY2sgd29tZW4ncyBwZXJzcGVjdGl2ZXMsIHNoZSBpcyBhbHNvIGNhcmVmdWwgdG8gbm90ZSB0aGF0IHRvbyBlYXN5IGFuIGluY2x1c2lvbiBvZiBhbGwgd3JpdGVycyB1bmRlciB0aGUgaWRlYSB0aGF0ICdldmVyeW9uZScgY2FuIHdyaXRlIGZyb20gYSBCbGFjayBmZW1pbmlzdCBjcml0aWNhbCBwZXJzcGVjdGl2ZSBpcyB0b28gZWFzeSAoMTU0KS4gVG8gc3BlYWsgb2YgdGhlIHNpbmd1bGFyaXR5IG9mIHN1Y2ggYSBwZXJzcGVjdGl2ZSBpcyBpdHNlbGYgbWFyZ2luYWxpemluZywgYW5kIGZhbGxzIHByZXkgdG8gdGhlIHRyYXAgb2Ygc2VlaW5nIGJsYWNrIHdvbWVuIGFzIG9mZmVyaW5nIHRoZSBzYW1lIHZvaWNlIGFuZCByYW5nZSBvZiBpZGVhcywgYSBjb25jZXB0IHRoYXQgaXMgYW5hdGhlbWEgdG8gQ29sbGlucy4gQ29sbGlucyBlbmRvcnNlcyB0aGUgcG9pbnQtb2YtdmlldyB0aGF0IHJhY2UgYW5kIGdlbmRlciBhcmUgc29jaWFsIGNvbnN0cnVjdGlvbnMsIGJ1dCBiZWNhdXNlIHRoZXkgaGF2ZSB3aWVsZGVkIHN1Y2ggZGl2aXNpdmUgYW5kIGN1bHR1cmFsIHBvd2VyLCBvbmUgY2Fubm90IGFzc3VtZSB0aGF0IHdlIGFyZSBhbGwgJ3RoZSBzYW1lJyBiZW5lYXRoIHRoZSBza2luLiBIZXIgZXNzYXkgc3RyaWtlcyBhbiBlbXBvd2VyaW5nIGJhbGFuY2Ugb2Ygc2hvd2luZyB0aGUgY29udHJpYnV0aW9uIHRoYXQgdGhlIGRpdmVyc2l0eSBvZiBibGFjayB3b21lbiB2b2ljZXMgaGFzIG1hZGUgdG8gY3JpdGljYWwgdGhlb3J5LCBldmVuIHdoaWxlIHNoZSBpcyB3cml0aW5nIGFib3V0IHRoZSBzYWQgZmFjdCB0aGF0IHdyaXRlcnMgaGF2ZSBhdHRlbXB0ZWQgdG8gYXBwcm9wcmlhdGUgb3IgaWdub3JlIGJsYWNrIHdvbWVuJ3Mgdm9pY2VzLgoKRXZlcnlkYXkgUmFjaXNtOiBBIE5ldyBBcHByb2FjaCB0byB0aGUgU3R1ZHkgb2YgUmFjaXNtIiBieSBQaGlsb21lbmEgRXNzZWQgZGlzY3Vzc2VzIHRoZSBpbmhlcmVudGx5IGNvbnRyYWRpY3Rvcnkgbm90aW9uIG9mICJpbmRpdmlkdWFsIHJhY2lzbS4iIEZvciBFc3NlZCwgcmFjaXNtIGlzIGFsd2F5cyBhbiBpbnN0aXR1dGlvbmFsIGlzc3VlLiBQb3dlciBwZXJ0YWlucyB0byB0aGUgYWJpbGl0eSBvZiBpbmRpdmlkdWFsIGdyb3VwcyB0byBhY3QgaW4gY29uc29ydC4gVGhpcyBpcyB3aHkgQWZyaWNhbi1BbWVyaWNhbiBjb2xsZWN0aXZlIHBvd2VyIGlzIG9mdGVuIHNvIGZyaWdodGVuaW5nIGFuZCB0aHJlYXRlbmluZyB0byBtZW1iZXJzIG9mIHRoZSB3aGl0ZSBtYWpvcml0eSAoMTgyKS5EZWZpbmluZyBjZXJ0YWluIGZvcm1zIG9mIHJhY2lzbSBhcyBpbnRlcnBlcnNvbmFsIGFuZCBvdGhlciBmb3JtcyBhcyBpbnN0aXR1dGlvbmFsIGlzIGFub3RoZXIgZXhhbXBsZSBvZiB0aGUgZmFsc2UgbmF0dXJlIG9mIGJpbmFyeSB0aGlua2luZyBhYm91dCByYWNlIGluIEFtZXJpY2EsIHdoaWNoIENvbGxpbnMgaXMgYWxzbyB3cml0aW5nIGFnYWluc3QgaW4gaGVyIGVzc2F5IGFib3V0IGdlbmRlci4gSW5zdGVhZCwgRXNzZWQgZmVlbHMgdGhhdCB3aGlsZSBpdCBpcyBzdGlsbCBwcm9ibGVtYXRpYywgdGhlIGNvbmNlcHQgb2Ygc3lzdGVtaWMgcmFjaXNtLCBvciB0aGUgZGF5LXRvLWRheSBpbnRlcmFjdGlvbiBvZiBpbmRpdmlkdWFscyBhbmQgaW5zdGl0dXRpb25zIGlzIGEgbW9yZSBlZmZlY3RpdmUgY2xhcmlmaWNhdGlvbiBvZiB0aGlzIHRlcm0gKDE3OSkuCgpFc3NlZCBzZWVtcyBwcmltYXJpbHkgd3JpdGluZyB0byBvdGhlciBhY2FkZW1pY3MgYXMgc2hlIGF0dGVtcHRzLCBvdmVyIHRoZSBjb3Vyc2Ugb2YgaGVyIGVzc2F5IHRvIGdyYXBwbGUgd2l0aCB0aGUgY2hhbGxlbmdlIG9mJiM4MjMwOw== Um9tYW4gUmVsaWdpb24gQWx0aG91Z2ggdGhlIEFuY2llbnQ= Um9tYW4gUmVsaWdpb24gQWx0aG91Z2ggdGhlIEFuY2llbnQ= MQ== MzMxOTY5MTU= NQ== MTM= QTIwNjMxNzU= NjI2MDQ2Mw== MTE1NzY= NjY= TWFzdGVy bi9h TXl0aG9sb2d5IC0gUmVsaWdpb24= UmVsaWdpb24gLyBHb2QgLyBUaGVvbG9neQ== VGVybSBQYXBlcg== MQ== MQ== MQ== NTY5OTM= MzkzNg== MTMzNTc5ODIyMQ== IgoKQWVuZWFzIG1hcmtzIHRoaXMgYWx0YXIgYXMgc3BlY2lmaWNhbGx5IFJvbWFuIGFjY29yZGluZyB0byBub3Qgb25seSB0aGUgY2l0eSdzIHJlbGlnaW91cyB0cmFkaXRpb24sIGJ1dCBhbHNvIGl0cyBjdWx0dXJhbCB0cmFkaXRpb24gb2YgZHJlc3Mgb2YgbXl0aGljYWwgaGlzdG9yeS4gT25lIGNhbiBzZWUgYSBwb3NzaWJsZSBtb3RpdmF0aW9uIGZvciB0aGlzIGludGVudGlvbmFsIGxpbmtpbmcgd2hlbiBjb25zaWRlcmluZyB0aGUgb3RoZXIgZmlndXJlcyBkZXBpY3RlZCBpbiB0aGUgQXJhIFBhY2lzJyBmcmllemVzLCBhbmQgcGFydGljdWxhcmx5IHRoZSBpbWFnZSBvZiBBdWd1c3R1cy4gVGhlIHByb2Nlc3Npb24gb2Ygd2hpY2ggQXVndXN0dXMgaXMgYSBwYXJ0IHJlcHJlc2VudHMgInRoZSBwcm9jZXNzaW9ucyB0aGF0IHdvdWxkIGhhdmUgdGFrZW4gcGxhY2UgaW4gJ3JlYWwgbGlmZScgYXJvdW5kIHRoZSBzaWRlcyBvZiB0aGUgcHJlY2luY3RzLCBsZWFkaW5nIHVwIHRvIHRoZSBhbHRhciBpdHNlbGYgLS0gYW5kIHBlcmhhcHMsIG1vcmUgc3BlY2lmaWNhbGx5LCB0aGF0IHByb2Nlc3Npb24gd2hpY2ggdG9vayBwbGFjZSBvbiB0aGUgZGF5IHRoZSBhbHRhciB3YXMgZmlyc3QgY29uc2VjcmF0ZWQuIgoKUmVjb2duaXppbmcgdGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkZXBpY3Rpb25zIHJlbGF0aW9uIHRvIGJvdGggUm9tYW4gcmVsaWdpb3VzIHByYWN0aWNlIGFuZCBwb2xpdGljYWwgbGlmZSwgYmVjYXVzZSB0aGUgcGFydGljdWxhciByZXByZXNlbnRhdGlvbiBvZiBBdWd1c3R1cyByZXZlYWxzIHRoZSBjbG9zZSBjb25uZWN0aW9uIGJldHdlZW4gcmVsaWdpb3VzIGFuZCBzZWN1bGFyIGF1dGhvcml0eSwgYW5kIGZ1cnRoZXJtb3JlLCBob3cgQXVndXN0dXMgaGltc2VsZiBwbGF5ZWQgYSBjZW50cmFsIHJvbGUgaW4gc3RyZW5ndGhlbmluZyBhbmQgbWFpbnRhaW5pbmcgdGhpcyBjb25uZWN0aW9uLgoKQXMgbWVudGlvbmVkIGFib3ZlLCB0aGUgQXJhIFBhY2lzIHdhcyBjb25zdHJ1Y3RlZCB0byBjb21tZW1vcmF0ZSBBdWd1c3R1cywgYW5kIHBhcnRpY3VsYXJseSBoaXMgcmV0dXJuIGZvbGxvd2luZyBhIG51bWJlciBvZiBtaWxpdGFyeSB2aWN0b3JpZXMuIFRodXMsIG9uZSBjYW5ub3QgaGVscCBidXQgYWNrbm93bGVkZ2UgdGhlIGltcGxpY2l0IGFzc29jaWF0aW9uIGJldHdlZW4gQXVndXN0dXMgYW5kIEFlbmVhcyB0aGF0IHRoZSBBcmEgUGFjaXMgbWFrZXMsIGJlY2F1c2UganVzdCBhcyBBZW5lYXMgaXMgZGVwaWN0ZWQgc2FjcmlmaWNpbmcgYXMgc293IHdoZW4gaGUgYXJyaXZlcyBpbiBJdGFseSwgc28gdG9vIGlzIEF1Z3VzdHVzIHNob3duIHBhcnRpY2lwYXRpbmcgaW4gdGhpcyBsb25nIHJlbGlnaW91cyB0cmFkaXRpb24gdXBvbiBoaXMgcmV0dXJuIHRvIFJvbWUuIFRoZSB2aXN1YWwgYXNzb2NpYXRpb24gc2VydmVzIGFzIGFuIGltcGxpY2l0IGp1c3RpZmljYXRpb24gYW5kIHJlaWZpY2F0aW9uIG9mIEF1Z3VzdHVzJyBhdXRob3JpdHkgYW5kIHBvd2VyLCBib3RoIGFzIGEgcG9saXRpY2FsIGxlYWRlciBhbmQgcmVsaWdpb3VzIGZpZ3VyZS4gVGhpcyByZXByZXNlbnRzIG9uZSBleGFtcGxlIG9mIHRoZSBwcm9jZXNzIG9mIGlkZW50aXR5IGZvcm1hdGlvbiB0aGF0IG9jY3VycmVkIG92ZXIgdGhlIGNvdXJzZSBvZiB0aGUgZW1waXJlLCBhcyAidGhlIHJlc3RydWN0dXJpbmcgb2YgdGhlIHJlbGlnaW91cyBzeXN0ZW0gb2YgUm9tZSB1bmRlciBBdWd1c3R1cyBbLl0gcHJvbXB0ZWQgbmV3IHdheXMgb2YgZGVmaW5pbmcgd2hhdCB3YXMgJ1JvbWFuLCcgbmV3IHdheXMgb2YgdGhpbmtpbmcgYWJvdXQgd2hhdCB3YXMgdG8gY291bnQgYXMgJ1JvbWFuJyBhbmQgd2hhdCB3YXMgbm90LiIKCk9uIHRoZSBBcmEgUGFjaXMsIEF1Z3VzdHVzIHJlcHJlc2VudHMgaGltc2VsZiBpbiBzdWNoIGEgd2F5IGFzIHRvIHJlZGVmaW5lIGNlcnRhaW4gc3RhbmRhcmRzIGZvciB3aGF0IGl0IG1lYW5zIHRvIGJlIFJvbWFuIHdoaWxlIGFsaWduaW5nIHRob3NlIHN0YW5kYXJkcyB3aXRoIGEgcHJlZXhpc3RpbmcgdHJhZGl0aW9uIGluIHRoZSBmb3JtIG9mIEFlbmVhcy4gSW4gZWZmZWN0LCB0aGUgZnJpZXplcyBvZiB0aGUgQXJhIFBhY2lzIGFsbG93ZWQgQXVndXN0dXMgdG8gZnVydGhlciBsZWdpdGltaXplIGhpcyBwb2xpdGljYWwgcmVpZ24gYnkgYXNzb2NpYXRpbmcgaXQgd2l0aCBSb21lJ3MgcmVsaWdpb3VzLCBteXRoaWNhbCwgYW5kIGN1bHR1cmFsIGhpc3Rvcmllcy4gRnJvbSBoZXJlLCBBdWd1c3R1cyBjb250aW51ZWQgcmVpZ24gaXMgaGludGVkIGF0IGJ5IHRoZSBpbmNsdXNpb24gb2YgdGhlIGltcGVyaWFsIGZhbWlseSwgYmVjYXVzZSB0aGUgcmVwcmVzZW50YXRpb24gb2YgaW1wZXJpYWwgY2hpbGRyZW4gc2VlbXMgdG8gc3VnZ2VzdCBhIGtpbmQgb2YgZHluYXN0aWMgc3VjY2Vzc2lvbiB0aGF0IGltcGxpY2l0bHkgc3VnZ2VzdHMgdGhlIHZpcmlsaXR5IGFuZCBsb25nZXZpdHkgb2YgdGhlIGVtcGVyb3IuCgpUaGUgY2xvc2UgcmVsYXRpb25zaGlwIGJldHdlZW4gcmVsaWdpb3VzIHByYWN0aWNlIGFuZCBwb2xpdGljYWwgcG93ZXIgaXMgZnVydGhlciBldmlkZW5jZWQgYnkgdGhlIHByb2Nlc3Npb24gb2YgcHJpZXN0cyByZXByZXNlbnRlZCBvbiB0aGUgQXJhIFBhY2lzLiBUaGUgbWVtYmVycyBvZiB0aGUgdmFyaW91cyBwcmllc3RseSBjb2xsZWdlcyBkZXBpY3RlZCBvbiB0aGUgbm9ydGhlcm4gZnJpZXplIGNhcnJ5IGEgbnVtYmVyIG9mIHJlbGlnaW91cyBhcnRpZmFjdHMgdGhhdCBzZXJ2ZSB0byBjb25uZWN0IHRoZWlyIHJlbGlnaW91cyBwcmFjdGljZSBib3RoIHdpdGggUm9tYW4gbXl0aG9sb2d5IGFuZCB0aGVpciBjb250ZW1wb3JhcnkgcG9saXRpY3MuIEZvciBleGFtcGxlLCAib25lIHByaWVzdGx5IGF0dGVuZGFudCBbY2Fycmllc10gYSBqdWcgYW5kIGluY2Vuc2UgYm94LCBkZWNvcmF0ZWQgd2l0aCBhIHRyaXBvZCwiIHRoZSBzeW1ib2wgb2YgQXBvbGxvLCBhbmQgdGh1cyByZXByZXNlbnRzIHRoZSBncm91cHMgb2YgcHJpZXN0cyBkaXJlY3RseSByZXNwb25zaWJsZSBmb3IgcmVsaWdpb3VzIHByYWN0aWNlIGFzc29jaWF0ZWQgd2l0aCBBcG9sbG8gYW5kICJ0aGUgcHJvcGhldGljIFNpYnlsbGluZSBCb29rcy4iCgpIb3dldmVyLCBpbiBhZGRpdGlvbiB0byByZWxpZ2lvdXMvbXl0aGljYWwgc3ltYm9scyBzdWNoIGFzIHRoaXMsIHRoZSBmcmllemUgY29udGFpbnMgYSBudW1iZXIgb2Ygc3ltYm9scyB0aGF0IGhpbnQgYXQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHJlbGlnaW91cyBwcmFjdGljZSBhbmQgcG9saXRpY2FsIHBvd2VyLCBhbmQgc3BlY2lmaWNhbGx5IEF1Z3VzdHVzJyByZWlnbiBhdCB0aGUgdGltZSBvZiB0aGUgYWx0YXIncyBjb25zZWNyYXRpb24uIE9uZSBmaWd1cmUgaW4gdGhlIHByaWVzdGx5IHByb2Nlc3Npb24gY2FycmllcyAidGhlIGZhc2NlcywgdGhlIHN5bWJvbCBvZiBvZmZpY2lhbCBwb3dlciBpbiBSb21lLCIgd2hpbGUgYSBudW1iZXIgb2YgZmlndXJlcyBjYXJyeSBzcHJpZ3Mgb2YgbGF1cmVsLCAiYSBwbGFudCB3aWRlbHkgdXNlZCBpbiByZWxpZ2lvdXMgcml0dWFsIGFuZCBhbHNvIGEgc3ltYm9sIG9mIHZpY3RvcnkuIgoKVGhlIGZhc2NlcywgYSBidW5kbGUgb2Ygc3RpY2tzIHdpdGggYW4gYXggYmxhZGUgcHJvdHJ1ZGluZywgcmVwcmVzZW50ZWQgdGhlIG9mZmljaWFsIHBvd2VyIG92ZXIgbGlmZSBhbmQgZGVhdGgsIGFuZCBoaW50cyBhdCBBdWd1c3R1cycgc3VjY2VzcyBhcyBhIGNvbnF1ZXJpbmcgZW1wZXJvci4gU2ltaWxhcmx5LCB0aGUgaW5jbHVzaW9uIG9mIGxhdXJlbCBzcHJpZ3Mgc2ltdWx0YW5lb3VzbHkgc2VydmVzIGEgcmVsaWdpb3VzIHB1cnBvc2UgYW5kIGNvbW1lbW9yYXRlcyBBdWd1c3R1cycgc3VjY2VzcywgaGlnaGxpZ2h0aW5nIHRoZSBjbG9zZSBjb25uZWN0aW9uIGJldHdlZW4gZ2VuZXJhbCByZWxpZ2lvdXMgc3ltYm9scyBhbmQgdGhlIHBhcnRpY3VsYXIgcG9saXRpY2FsIGFuZCBzb2NpYWwgY29uY2VybnMgb2YgdGhlIHRpbWUuCgpXaGlsZSB0aGUgcmVhZGVyIG1heSBub3RlIHRoYXQgdGhlIGFuYWx5c2lzIGNvbmR1Y3RlZCBoZXJlIG9mIHRoZSBBcmEgUGFjaXMgZGVwZW5kcyBtb3N0bHkgb24gZGVzY3JpcHRpb25zIG9mIGdlbmVyYWwgdmlzdWFsIGNvZGVzIGFuZCBtZWFuaW5ncywgYW5kIGRvZXMgbm90IGdvIGludG8gZGV0YWlsIGFib3V0IHRoZSBpbWFnZXMgaW4gYW55IGtpbmQgb2YgdHJ1bHkgImNsb3NlIHJlYWRpbmcsIiB0aGlzIGlzIGJlY2F1c2Ugb25lIG11c3QgYmUgY2FyZWZ1bCBub3QgInRvIGF0dGVtcHQgdG8gaW50ZXJwcmV0IGNvbXBsZXggaW1hZ2VzIG9mIFJvbWFuIGFydCB3aXRob3V0IHRydWx5IHVuZGVyc3RhbmRpbmcgdGhlIHZpc3VhbCB2b2NhYnVsYXJ5IGFuZCBzeW50YXggd2l0aCB3aGljaCB0aGUgaW1hZ2VzIHdlcmUgY29tcG9zZWQsIGFzc3VtaW5nIHRoYXQgdGhlaXIgbWVhbmluZ3Mgd2VyZSBzb21laG93IHNlbGYtZXZpZGVudC4iCgpJbnN0ZWFkLCBvbmUgbWF5IG1ha2UgbW9yZSBnZW5lcmFsIGluc2lnaHRzIGludG8gUm9tYW4gcmVsaWdpb3VzIHByYWN0aWNlIGFuZCBpdHMgY29ubmVjdGlvbiB0byBzb2NpYWwgYW5kIHBvbGl0aWNhbCBsaWZlIGJ5IG5vdGluZyB0aG9zZSB2aXN1YWwgZWxlbWVudHMgYW5kIGFzc29jaWF0aW9ucyB0aGF0IGFyZSByZWxhdGl2ZWx5IHdlbGwgdW5kZXJzdG9vZC4gVGh1cywgd2hpbGUgaXQgd291bGQgbGlrZWx5IHByZXN1bWUgdG9vIG11Y2ggdG8gZGlzY3VzcyB0aGUgbWVhbmluZyBvZiBjZXJ0YWluIHBhcnRpY3VsYXIgZ2VzdHVyZXMgb3Igc3R5bGl6ZWQgZGVwaWN0aW9ucyB3aXRob3V0IHByb3ZpZGluZyBhIG1vcmUgaW4tZGVwdGggYWNjb3VudCBvZiBSb21hbiBhcnQgdGhhbiB0aGlzIGVzc2F5IGNhbiBjb250YWluLCBvbmUgY2FuIHF1aXRlIGNvbWZvcnRhYmx5IGRpc2N1c3MgdGhlIGltcGxpY2l0IGFuZCBleHBsaWNpdCByZWxhdGlvbnNoaXBzIGJldHdlZW4gUm9tYW4gcmVsaWdpb24sIHBvbGl0aWNzLCBhbmQgbXl0aCwgaWYgb25seSBiZWNhdXNlIHRoZXNlIG1vdmVtZW50cyBhcmUgcmVuZGVyZWQgaW4gZmFyIHNpbXBsZSwgYnJvYWRlciBzdHJva2VzOyBmb3IgZXhhbXBsZSwgd2hpbGUgdGhlIHJlcHJlc2VudGF0aW9uIG9mIEFlbmVhcyBsaWtlbHkgaGFkIHN1YnRsZSBkZXRhaWxzIGZyb20gd2hpY2ggdGhlIGF2ZXJhZ2UgUm9tYW4gY291bGQgZ2xlYW4gc29tZXRoaW5nIGludGVsbGlnaWJsZSB0aGF0IHJlbWFpbnMgaW5hY2Nlc3NpYmxlIHRvIHRoZSBtb2Rlcm4gaGlzdG9yaWFuLCBvbmUgbWF5IHJlYXNvbmFibHkgcHJvcG9zZSB0aGF0IHRoaXMgcmVwcmVzZW50YXRpb24sIHJlZ2FyZGxlc3Mgb2YgaXRzIGZpbmVyIHBvaW50cywgc2VydmVzIGEgc2ltdWx0YW5lb3VzbHkgcmVsaWdpb3VzIGFuZCBwb2xpdGljYWwgcHVycG9zZSBieSBsaW5raW5nIGN1cnJlbnQgcmVsaWdpb3VzIGFuZCBwb2xpdGljYWwgcHJhY3RpY2UgdG8gdGhlIG15dGhvbG9naWNhbCBvcmlnaW5zIG9mIFJvbWUgaXRzZWxmLgoKVGhlIHNlY29uZCBub24tbGl0ZXJhcnkgc291cmNlIGZvciBpbmZvcm1hdGlvbiBhYm91dCBSb21hbiByZWxpZ2lvbiBkaXNjdXNzZWQgaGVyZSBpcyB0aGUgRm9ydW0gb2YgQXVndXN0dXMgYW5kIHRoZSB0ZW1wbGUgb2YgTWFycyBVbHRvciBpbmNsdWRlZCB0aGVyZS4gTGlrZSB0aGUgQXJhIFBhY2lzLCB0aGUgZm9ydW0gb2YgQXVndXN0dXMgd2FzIGNvbnN0cnVjdGVkIHRvIGNvbW1lbW9yYXRlIGFuZCBob25vciB0aGUgZW1wZXJvciwgZXZlbiBhcyBpdCBzZXJ2ZWQgbW9yZSBnZW5lcmFsIHJlbGlnaW91cyBwdXJwb3Nlcy4gVGhpcyBmYWN0IGlzIHJldmVhbGVkIHdoZW4gb25lIGNvbnNpZGVycyB0aGUgbGF5b3V0IG9mIHRoZSBmb3J1bSBpdHNlbGYgYXMgd2VsbCBhcyB0aGUgd2lkZSB2YXJpZXR5IG9mIHN0eWxpc3RpYyBpbmZsdWVuY2VzIGl0IGVtYm9kaWVzOgoKVGhlcmUgd2FzIG9ubHkgb25lIHN0YXR1ZSBvZiBBdWd1c3R1cyBoaW1zZWxmLCBpbiBhIGNoYXJpb3QgYXQgdGhlIGNlbnRlciBvZiB0aGUgRm9ydW0uIEJ1dCBpdCB3YXMgaGUgd2hvIHByb3ZpZGVkIHRoZSBsaW5rIGJldHdlZW4gYWxsIHRoZSBvdGhlciB2YXJpZWQgc2N1bHB0dXJlLiBTdGF0dWVzIG9mIFZlbnVzLCBmb3IgZXhhbXBsZSwgaW4gdGhlIHRlbXBsZSBjZWxsYSBhbmQgb24gdGhlIHBlZGltZW50LCBjYWxsZWQgdG8gbWluZCB0aGUgY2xhaW1zIG9mIHRoZSBlbXBlcm9yJ3MgZmFtaWx5IHRvIGJlIGRlc2NlbmRlZCBmcm9tIHRoZSBnb2RkZXNzLiBUaGUgY2VudHJhbCBjdWx0IGltYWdlIG9mIE1hcnMgVWx0b3IgYWxsdWRlZCB0byB0aGUgZ29kJ3MgcHJvdGVjdGlvbiBvZiBBdWd1c3R1cycgZmFtaWx5LCBwYXJ0aWN1bGFybHkgTWFycycgcm9sZSBpbiBhdmVuZ2luZyBDYWVzYXIncyBtdXJkZXI7IHdoaWxlIGEgc3RhdHVlIG9mIEp1bGl1cyBDYWVzYXIgKG5vdyBkaXZ1cyBKdWxpdXMpIG11c3QgYWxzbyBoYXZlIHN0b29kIHNvbWV3aGVyZSBpbiB0aGUgdGVtcGxlLCBhc3NlcnRpbmcgdGhlIGRpdmluZSBzdGF0dXMgb2YgQXVndXN0cycgYWRvcHRpdmUgZmF0aGVyLgoKSW4gYWRkaXRpb24gdG8gdmlzdWFsIGVsZW1lbnRzIGxpbmtpbmcgQXVndXN0dXMgdG8gbW9yZSByZWNlbnQgUm9tYW4gaGlzdG9yeSBhbmQgcmVsaWdpb24sIHRoZSBmb3J1bSBmZWF0dXJlZCAic3RhdHVlcyBvZiB0aGUgdHdvIGxlZ2VuZGFyeSBmb3VuZGVycyBvZiB0aGUgUm9tYW4gcmFjZTogQWVuZWFzLCBzb24gb2YgVmVudXMgYW5kIGFuY2VzdG9yIG9mIEF1Z3VzdHVzJyBmYW1pbHk7IGFuZCBSb211bHVzLCBzb24gb2YgTWFycy4iCgpUaHVzLCBpbiBtdWNoIHRoZSBzYW1lIHdheSB0aGUgZnJpZXplcyBvZiB0aGUgQXJhIFBhY2lzIHNlcnZlZCB0byBsaW5rIEF1Z3VzdHVzJyByZWlnbiB0byB0aGUgbXl0aGljYWwgYW5kIHJlbGlnaW91cyBoaXN0b3J5IG9mIFJvbWUsIHNvIHRvbyBkb2VzIHRoZSBGb3J1bSBvZiBBdWd1c3R1cyBpbnRlbnRpb25hbGx5IGFzc29jaWF0ZSB0aGUgcG9saXRpY2FsIHJ1bGVyIHdpdGggdGhlIHJlbGlnaW91cyBhbmQgbXl0aGljYWwgYXV0aG9yaXRpZXMgb2YgUm9tZSBpdHNlbGYsIHN1Y2ggdGhhdCB0aGUganVzdGlmaWNhdGlvbiBmb3IgcG9saXRpY2FsIHBvd2VyIG5vIGxvbmdlciBjb21lcyBmcm9tIGFueSBlYXJ0aGx5IHNvdXJjZS4KClRoaXMgaXMgZnVydGhlciBldmlkZW5jZWQgYnkgdGhlIGZhY3QgdGhhdCB0aGUgRm9ydW0gb2YgQXVndXN0dXMgZmVhdHVyZWQgInN0YXR1ZXMgb2YgdGhlIG1vc3QgZGlzdGluZ3Vpc2hlZCBnZW5lcmFscyBhbmQgc3RhdGVzbWVuIG9mIHRoZSBSZXB1YmxpYywgW10gdW5kZXJuZWF0aCBbd2hpY2hdIHdhcyBhbiBpbnNjcmliZWQgc3VtbWFyeSBvZiB0aGUgbWFuJ3MgY2FyZWVyLiIKClRoZSByZWNvcmRpbmcgb2YgbWlsaXRhcnkgYW5kIHBvbGl0aWNhbCBsZWFkZXJzJyBleHBsb2l0cyBpbiBtb251bWVudCBpcyBub3QgYSBuZXcgcGhlbm9tZW5vbiwgYnV0IGhlcmUgb25lIGNhbiBzZWUgdGhpcyBwcm9jZXNzIHRha2VuIHRvIGl0cyBsb2dpY2FsIGV4dHJlbWUuIFdoZXJlYXMgcGhhcmFvaHMgYW5kIGVtcGVyb3JzIGhhdmUgbG9uZyBidWlsdCBtb251bWVudHMgdG8gcmVjb3JkIHRoZWlyIG93biBkZWVkcywgaXQgaXMgdGVsbGluZyB0aGF0IHRoZSBGb3J1bSBvZiBBdWd1c3R1cyBsYXVkcyBub3Qgb25seSBBdWd1c3R1cycgc3VwcG9zZWRseSBkaXZpbmUgaGVyaXRhZ2UsIGJ1dCBhbHNvIHRha2VzIHNwYWNlIHRvIGNlbGVicmF0ZSB0aGUgbGFyZ2VyIHBvbGl0aWNhbCBlbGl0ZSB1cG9uIHdoaWNoIEF1Z3VzdHVzJyBwb3dlciB1bHRpbWF0ZWx5IHJlbGllZC4gT25lIG5lZWQgbm90IG1ha2UgcHJlc3VtcHRpb25zIGFib3V0IEF1Z3VzdHVzJyBwb2xpdGljYWwgc2hyZXdkbmVzcyB0byBub3RlIHRoYXQgcmVnYXJkbGVzcyBvZiBpbnRlbnRpb24sIHRoZXNlIHN0YXR1ZXMgbGlrZWx5IHNlcnZlZCB0byBwbGFjYXRlIGFuZCBzdXBwb3J0IHRoZSB2ZXJ5IHNhbWUgcG9saXRpY2FsIGVsaXRlIHJlc3BvbnNpYmxlIGZvciB0aGUgY29uc3RydWN0aW9uIGFuZCBtYWludGVuYW5jZSBvZiBSb21hbiByZWxpZ2lvdXMgYW5kIHBvbGl0aWNhbCBpZGVudGl0eS4KCkluIFJvbWUsIGFuZCB0aHJvdWdob3V0IGhpc3RvcnksICJ0aGUgcGh5c2ljYWwgc2V0dGluZyBvZiBhbmNpZW50IHJlbGlnaW9ucyBoZWxwZWQgdG8gZGVmaW5lIHRoZWlyIGNoYXJhY3RlciBhbmQgbWVhbmluZywiIGFuZCB0aGlzIGlzIG5vd2hlcmUgbW9yZSB0cnVlIHRoYW4gaW4gdGhlIGNhc2Ugb2YgdGhlIGdyb3ZlIG9mIHRoZSBBcnZhbCBicm90aGVycywgYW4gb3JkZXIgb2YgcHJpZXN0cy4KCldoZXJlIHRoZSBleGFtcGxlcyBvZiBub24tbGl0ZXJhcnkgc291cmNlcyBvZiBpbmZvcm1hdGlvbiBhYm91dCBSb21hbiByZWxpZ2lvbiBkaXNjdXNzZWQgYWJvdmUgc2hvd2VkIGEgc3Ryb25nIGluZmx1ZW5jZSBvZiB0aGUgcG9saXRpY2FsIG9uIHRoZSByZXByZXNlbnRhdGlvbiBvZiByZWxpZ2lvbiBpbiBwaHlzaWNhbCBzcGFjZSBhbmQgb2JqZWN0cywgdGhlIGdyb3ZlIG9mIHRoZSBBcnZhbCBicm90aGVycyBoaWdobGlnaHRzIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gcmVsaWdpb3VzIHByYWN0aWNlIGFuZCBzb2NpYWwgbGlmZS4gTG9jYXRlZCBpbiBhIGNsZWFyaW5nIG91dHNpZGUgb2YgUm9tZSwgdGhlIGdyb3ZlIGluY2x1ZGVkOgoKW10gbm90IGp1c3QgYW4gYWVkZXMgd2l0aCBhIHN0YXR1ZSBvZiB0aGUgZ29kZGVzcyBEZWEgRGlhLCBidXQgYWxzbyBhIGJhdGggYnVpbGRpbmcsIHRldHJhc3R5bHVtIChhIGJ1aWxkaW5nIHdpdGggZm91ciBjb2x1bW5zIC0tIGhlcmUgdXNlZCBhcyBhIGRpbmluZyByb29tKSwgYSBzaHJpbmUgb2YgdGhlIGltcGVyaWFsIGN1bHQgKENhZXNhcmV1bSksIGFuZCBhIGNpcmN1cyBidWlsZGluZyAoZm9yIHJhY2VzKS4KCkhlcmUgb25lIGNhbiBzZWUgaG93IHJlbGlnaW91cyBzcGFjZXMgc2VydmVkIGFzIGNvbW11bml0eSBjZW50ZXJzIGFzIG11Y2ggYXMgc2l0ZXMgb2YgcmVsaWdpb3VzIHByYWN0aWNlLCBiZWNhdXNlIHRoZSBncm92ZSBvZiB0aGUgQXJ2YWwgYnJvdGhlcnMsIHdoaWxlIGluY2x1ZGluZyB0aG9zZSBlbGVtZW50cyBuZWNlc3NhcnkgZm9yIHRoZSBwcmllc3RzJyByZWxpZ2lvdXMgcHJhY3RpY2UsIGFsc28gZmVhdHVyZXMgYSBudW1iZXIgb2Ygc3RydWN0dXJlcyBnZWFyZWQgZXhwbGljaXRseSBmb3IgdGhlIGVudGVydGFpbm1lbnQgYW5kIHNvY2lhbGl6YXRpb24gb2YgdGhlIGdlbmVyYWwgcHVibGljLiBUaHVzLCB0aGlzIHNvdXJjZSBwcm92aWRlcyBpbnNpZ2h0cyBub3Qgb25seSBpbnRvIHRoZSByaXR1YWwgcHJhY3RpY2Ugb2YgdGhlIEFydmFsIGJyb3RoZXJzLCBidXQgaG93IHRoaXMgcml0dWFsIHByYWN0aWNlIGZpdCBpbiB3aXRoIHRoZSBsaXZlcyBvZiYjODIzMDs= R2VybWFuIExpdGVyYXR1cmUgU2Nob2xhcnNoaXAgb24gWWFkZSBLYXJhIGFuZA== R2VybWFuIExpdGVyYXR1cmUgU2Nob2xhcnNoaXAgb24gWWFkZSBLYXJhIGFuZA== MQ== ODY0NjU3MTQ= MjA= OA== QTIwNzI1NDM= NDkzNTUyMg== MTEwNjc= NTA= TWFzdGVy bi9h TGl0ZXJhdHVyZQ== TGl0ZXJhdHVyZSAvIFBvZXRyeQ== UmVzZWFyY2ggUGFwZXI= MQ== MQ== NzUzMTY= MjYzNg== MTM0NjE3OTUzNg== MQ== R2VybWFuIExpdGVyYXR1cmUKClNjaG9sYXJzaGlwIG9uIFlhZGUgS2FyYSBhbmQgRW1pbmUgU2V2Z2kgT3pkYW1hcgoKU2Nob2xhcnNoaXAgb24gWWFkZSBLYXJhCgpTY2hvbGFyc2hpcCBvbiBZYWRlIEthcmEgaGFzIHJlcGVhdGVkbHkgcGxhY2VkIGdyZWF0IGVtcGhhc2lzIG9uIHRoZSBhdXRob3IncyBwcmVkaWxlY3Rpb24gZm9yIHRoZW1lcyBzdWNoIGFzIGlkZW50aXR5IGNvbnN0cnVjdGlvbiwgY3VsdHVyYWwgaWRlbnRpdHksIGFuZCBoaXN0b3JpY2FsIHNwZWNpZmljaXR5LiBUaGUgbGF0dGVyIGlzIG9mIHBhcnRpY3VsYXIgYXBwZWFsIGluIHRoYXQgaXQgc2l0dWF0ZXMgS2FyYSdzIG5vdmVscyBhcyBhIHVzZWZ1bCBydWJyaWMgdGhyb3VnaCB3aGljaCB0byBleGFtaW5lIEdlcm1hbiBsaWZlIGluIHRoZSB3YWtlIG9mIHRoZSBmYWxsIG9mIHRoZSBCZXJsaW4gV2FsbC4gS2FyYSdzIHdvcmtzIGFsc28gYWRkcmVzcyB0aGUgbWFzcyBpbW1pZ3JhdGlvbiBvZiB0aGUgMTk2MHMsIHRoZSBwaWNhcmVzcXVlIG5vdmVsLCBhbmQgdGhlIGJpbGR1bmdzcm9tYW4gY29taW5nLW9mLWFnZSBuYXJyYXRpdmUgc3RydWN0dXJlLiBBbHRob3VnaCBzdHVkaWVzIG9mIEthcmEncyB3b3JrcyB0ZW5kIHRvIHJlcGVhdGVkbHkgc3RyZXNzIHRoZXNlIHRoZW1lcywgdGhpcyBwYXBlciBlbHVjaWRhdGVzIHNvbWUgb2YgdGhlIGRpc3RpbmN0aW9ucyBiZXR3ZWVuIGVtcGhhc2VzIGluIEthcmEgc2Nob2xhcnNoaXAuCgpUaGUgdGhlbWUgb2YgaWRlbnRpdHkgY29uc3RydWN0aW9uIGlzIHBlcmhhcHMgdGhlIGZvcmVtb3N0IHRoZW1lIGluIEthcmEncyBsaXRlcmF0dXJlLiBJbiBoZXIgc3R1ZHkgb2YgS2FyYSwgU2FuZHJhIFZsYXN0YSBsaW5rcyBpZGVudGl0eSBjb25zdHJ1Y3Rpb24gYW5kIG1pZ3JhdGlvbiBhcyBiZWluZyBpbmV4dHJpY2FibHkgbGlua2VkIGluIEthcmEncyB3b3JrcyAoYXMgd2VsbCBhcyB0aG9zZSBvZiBJbXJhbiBBeWF0YSBhbmQgRmVyaWR1biBaYWltb2dnbHUuKQoKVmxhc3RhIGFyZ3VlcyB0aGF0IEthcmEncyB3b3JrcyAicmVwcmVzZW50IGEgaHlicmlkIHNvY2lldHksIHN1YnZlcnNpb24gb2YgdGhlICdndWVzdC13b3JrZXInIGNsaWNoZSwgaWRlbnRpZmljYXRpb25zIG9mIHNlbGYgYW5kIG90aGVycyBbYW5kXSBmaW5hbGx5IHRoZSBtaXhpbmcgb2YgbGFuZ3VhZ2VzIGFuZCBvZiBnbG9iYWwgc3BhY2VzLiIgSXQgaXMgbm8gYWNjaWRlbnQgdGhhdCBIYXNhbiBLYXphbiwgdGhlIDE5LXllYXItb2xkIHByb3RhZ29uaXN0IG9mIEthcmEncyBmaXJzdCBub3ZlbCBTZWxhbSBCZXJsaW4sIGlzIGF0IGEgZm9ybWF0aXZlIGFnZSBpbiB3aGljaCBoZSBpcyBlbmdhZ2VkIGluIHRoZSBwcm9jZXNzIG9mIGJlY29taW5nIGFuIGFkdWx0LiBWbGFzdGEncyBwZXJjZXB0aXZlIGRlc2NyaXB0b3Igb2YgYSAiaHlicmlkIHNvY2lldHkiIGFwdGx5IGRlc2NyaWJlcyB0aGUgYmlmdXJjYXRlZCBjdWx0dXJhbCBsYW5kc2NhcGUgb2YgQmVybGluIGFmdGVyIHRoZSBmYWxsIG9mIHRoZSBCZXJsaW4gV2FsbC4gS2F6YW4ncyBhdHRlbXB0IHRvIGNvbWUgb2YgYWdlIGR1cmluZyBzdWNoIGEgdHJhbnNpdGlvbmFsIGN1bHR1cmFsIHBlcmlvZCBmb3JtcyBwZXJoYXBzIHRoZSBiYXNpcyBmb3IgdGhlIG5vdmVsLiBCeSBjaGFyYWN0ZXJpemluZyB0aGUgYm9vayBhcyBmYWxsaW5nIHdpdGhpbiB0aGUgdGF4b25vbXkgb2YgdGhlIEJpbGR1bmdzcm9tYW4gKGNvbWluZy1vZi1hZ2UpIG5vdmVsLCBWbGFzdGEgaW1wbGljaXRseSBhbGlnbnMgdGhlIG5vdmVsIHdpdGggaW5udW1lcmFibGUgY29taW5nLW9mLWFnZSB0YWxlcyBmcm9tIG90aGVyIGN1bHR1cmVzLiBIb3dldmVyLCBhbHRob3VnaCB0aGUgcmV2aWV3ZXIgcHJvdmlkZXMgYSBsdWNpZCBleHBsaWNhdGlvbiBvZiBjZXJ0YWluIHNhbGllbnQgdGhlbWVzLCBpdCB3b3VsZCBoYXZlIHBlcmhhcHMgYmVlbiBwcm9kdWN0aXZlIHRvIHNwZWNpZmljYWxseSBjb21wYXJlIGhvdyBLYXJhJ3Mgbm92ZWxzIGNvbXBhcmUgd2l0aCBzaW1pbGFybHktdGhlbWVkIG5vdmVscyAob3IgbWVkaWEgdGV4dHMpIGZyb20gb3RoZXIgY3VsdHVyZXMuIEZvciBleGFtcGxlLCBWbGFzdGEncyByZWFkaW5nIG9mIEthcmEncyBub3ZlbCBpbW1lZGlhdGVseSBjYWxscyB0byBtaW5kIEFtZXJpY2FuIG5vdmVscyBzdWNoIGFzIEh1Y2tsZWJlcnJ5IEZpbm4sIGluIHdoaWNoIHRoZSBwcm90YWdvbmlzdCBpcyBzaW1pbGFybHkgY2F1Z2h0IHdpdGhpbiBhIHRyYW5zaXRpb25hbCBzb2NpZXR5LCBib3RoIGlkZW9sb2dpY2FsbHkgYW5kIGdlb2dyYXBoaWNhbGx5LiBUaGUgZmlyc3QtcGVyc29uIHN0cnVjdHVyZSB0aGF0IEthcmFrYXMgc2VlcyBhcyBpbnRlZ3JhbCB0byB0aGUgdGV4dCBhbHNvIGludml0ZXMgY29tcGFyaXNvbiB3aXRoIG5vdmVscyBmcm9tIG90aGVyIGN1bHR1cmVzLgoKVGhlIHdvcmsgb2YgQWxwZXIgS2VsZXMgc2ltaWxhcmx5IHBsYWNlcyBncmVhdCBlbXBoYXNpcyBvbiB0aGUgY29taW5nLW9mLWFnZSBzdHJ1Y3R1cmUgaW4gS2FyYSdzIHdvcmssIGFsdGhvdWdoIEtlbGVzIHRha2VzIHRoZSBhZGRlZCBpbml0aWF0aXZlIG9mIHF1ZXN0aW9uaW5nIHdoZXRoZXIgS2F6YW4gcmVsaWVzIGV4Y2Vzc2l2ZWx5IG9uIHRoZSBhc3Npc3RhbmNlIG9mIG90aGVycy4KClRoaXMgcmVwcmVzZW50cyBhbiBpbXBvcnRhbnQgcXVlc3Rpb24gd2l0aCB2YXN0IGltcGxpY2F0aW9uczsgcXVlc3Rpb25pbmcgd2hldGhlciBLYXphbiBkb2VzIG5vdCBhc3N1bWUgc3VmZmljaWVudCByZXNwb25zaWJpbGl0eSBmb3IgaGlzIGFjdGlvbnMgbG9vc2VucyB0aGUgY3VsdHVyYWwgY3JpdGlxdWUgdGhhdCBWbGFzdGEgZmluZHMgYXQgdGhlIGhlYXJ0IG9mIHRoZSBib29rIChpdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBLdXJ1eWF6aWNpIGFsc28gY29uc2lkZXJzIHRoaXMgYSBmb3JlbW9zdCB0cm9wZSBvZiB0aGUgdGV4dCksIGFuZCB1bml2ZXJzYWxpemVzIHRoZSB3b3JrIGFzIGJlaW5nIGEgbW9yZSBnZW5lcmljIHRhbGUgb2YgdGhlIG5lY2Vzc2l0eSBmb3IgeW91bmcgYWR1bHRzIHRvIGJlaGF2ZSBpbiBhbiBhdXRvbm9tb3VzIHdheS4KCktlbGVzJyByZWFkaW5nIG9mIHRoZSBib29rIGRvZXMgcmFpc2UgdGhlIHF1ZXN0aW9uIG9mIGhvdyBWbGFzdGEgdmlld3MgaWRlbnRpdHkgY29uc3RydWN0aW9uLCBhbmQgaW5kZWVkIGhvdyB0aGlzIGNhbiBiZSBhY2hpZXZlZCBpZiBvbmUgaXMgb3Zlci1yZWxpYW50IG9uIGFzc2lzdGFuY2UgZnJvbSBvdGhlcnMuCgpTY2hvbGFyc2hpcCBvbiBZYWRlIEthcmEgcmV2ZWFscyBhIGNvbnNlbnN1cyB0aGF0IGlkZW50aXR5IGNvbnN0cnVjdGlvbiBpcyBhdCB0aGUgaGVhcnQgb2YgaGVyIG5vdmVscy4gSG93ZXZlciwgYSBjb250ZW50aW91cyBpc3N1ZSB0aGF0IGRldmVsb3BzIGNvbmNlcm5zIHdoZXRoZXIgdGhlIHByb3RhZ29uaXN0IHN1ZmZlcnMgZnJvbSBoaXMgZHVhbCBHZXJtYW4tVHVya2lzaCBoZXJpdGFnZS4gSmlsbCBUd2FyayBhcmd1ZXMgdGhhdCB0aGUgcHJvdGFnb25pc3Qgb2YgU2VsYW0gQmVybGluIGRvZXMgbm90IHN1ZmZlciBmcm9tIGhpcyBkdWFsIGN1bHR1cmFsIGhlcml0YWdlLCB3aGlsZSBNYXJpYSBTdGVobGUgdGFrZXMgdGhlIGFkZGVkIHN0ZXAgb2YgY29tcGFyaW5nIFNlbGFtIEJlcmxpbiB3aXRoIHRoZSBmaWxtIEt1cnogdW5kIHNjaG1lcnpsb3MsIGEgMTk5OCBmaWxtIGRpcmVjdGVkIGJ5IEZhdGloIEFraW4gdGhhdCBzaW1pbGFybHkgY29uY2VybnMgdGhlIGlkZW50aXR5IGNvbnN0cnVjdGlvbiBvZiBHZXJtYW4tVHVya2lzaCB5b3V0aHMuCgpHaXZlbiB0aGUgYWR2ZXJzaXR5IGZhY2VkIGJ5IEthemFuLCB0aGlzIGlzIGEgc3VycHJpc2luZyBjb25jbHVzaW9uIGFuZCBvbmUgbXVzdCB3b25kZXIgd2hldGhlciBUd2FyaydzIHJlYWRpbmcgaXMgY29sb3JlZCBieSB0aGUgcmV0cm9zcGVjdGl2ZSBwZXJzcGVjdGl2ZSB0aGF0IHRoZSBub3ZlbCAoYW5kIHVuYXZvaWRhYmx5LCB0aGUgcmVhZGVyIGFzIHdlbGwpIHRha2VzIHRvd2FyZCB0aGUgZmFsbCBvZiB0aGUgQmVybGluIFdhbGwuCgpJbiBkaXNjdXNzaW5nIHRoZSBjdWx0dXJhbCBpZGVudGl0eSBpc3N1ZXMgYXQgd29yayBpbiBLYXJhJ3Mgbm92ZWxzLCBzY2hvbGFycyBoYXZlIHJlY2VudGx5IGFkZHJlc3NlZCB0aGUgZGlzY3JpbWluYXRpb24gdGhhdCBtYW5pZmVzdHMgYmV0d2VlbiBHZXJtYW4gYW5kIFR1cmtpc2ggY3VsdHVyZXMuIEluIGhpcyBzdHVkeSAiVGhyZWUgR2VuZXJhdGlvbnMgb2YgVHVya2lzaCBGaWxtbWFrZXJzIGluIEdlcm1hbnk6IFRocmVlIERpZmZlcmVudCBOYXJyYXRpdmVzLCIgYXQgQ294IHNlZXMgS2FyYSdzIHdvcmtzIGFzIHJlZmxlY3RpbmcgdGhlbWVzIG9mIGN1bHR1cmFsIGRpc2NyaW1pbmF0aW9uIHRoYXQgaGF2ZSBzdXJmYWNlZCBpbiByZWNlbnQgR2VybWFuLVR1cmtpc2ggZmlsbXM6CgoiR2VybWFuIGRpcmVjdG9ycyB3ZXJlIHRoZSBmaXJzdCB0byBwcm92aWRlIHBvcnRyYXlhbHMgb2YgaW1taWdyYW50cyBpbiBHZXJtYW55JiM4MjMwO3RoZSB0aGlyZCBnZW5lcmF0aW9uIGZpbG1tYWtlcnMgYXJlIG5vdyBubyBsb25nZXIgdGhlIHNpbGVuY2VkIGFuZCBkaXNhZHZhbnRhZ2VkIG1lbWJlcnMgb2YgdGhlIGhvc3Qgc29jaWV0eTsgaW5zdGVhZCwgdGhleSBoYXZlIGJlZW4gYWN0aXZlIGFnZW50cyB3aG8gYXJlIHF1YWxpZmllZCwgc2tpbGxlZCwgZWR1Y2F0ZWQgYW5kIHRodXMgc2VsZi1jb25maWRlbnQuIgoKQ294J3Mgb3V0bGluZSB0cmFjZXMgYSBzaGlmdCBmcm9tIGZpbG1tYWtlcnMgbGlrZSBSYWluZXIgV2VybmVyIEZhc3NiaW5kZXIgaW4gdGhlIDE5NjBzIGFuZCAxOTcwcyB0byB0aGUgdGhlbWVzIGZvdW5kIGluIGN1cnJlbnQgY2luZW1hIGFuZCBub3ZlbHMgbGlrZSB0aG9zZSBvZiBLYXJhLiBXaGVyZSBGYXNzYmluZGVyIHBvcnRyYXllZCB0aGUgVHVya3MgYXMgY3VsdHVyYWxseSBzdWJvcmRpbmF0ZSBhbmQgc3VibWlzc2l2ZSwgQ294IGFyZ3VlcyB0aGF0IHRoZSBHZXJtYW4tVHVya2lzaCBjaGFyYWN0ZXJzIGluIHRoZSB0aGlyZC1nZW5lcmF0aW9uIHdvcmtzIGFyZSBtb3JlIGNvbWJhdGl2ZSBhbmQgYXNzZXJ0aXZlLiBCeSByZWFkaW5nIEthcmEncyBub3ZlbHMgZGlhbG9naWNhbGx5LCBDb3ggYWRkcyBhIHRlbXBvcmFsbHkgZGlzY3Vyc2l2ZSBkaW1lbnNpb24gdG8gS2FyYSdzIHdvcmtzIHRoYXQgY29tcGFyZXMgdGhlIG5vdmVsIHdpdGggdGV4dHMgZnJvbSBhdXRob3JzIG9mIHByaW9yIHRpbWUgcGVyaW9kcy4KClRoZSBwaWNhcmVzcXVlIG5vdmVsIGlzIGFub3RoZXIgdGhlbWUgdGhhdCBoYXMgc3VyZmFjZWQgaW4gc2Nob2xhcnNoaXAgb2YgS2FyYS4gQ29ybmVsaWEgR2Vpc3NlciBzZWVzIFNlbGFtIEJlcmxpbiBhcyBhIHRyYXZlbG9ndWUgdGhhdCBwYWludHMgdml2aWQgcG9ydHJheWFscyBvZiBwbGFjZXMgbGlrZSBLYW50c3RyYXNzZSwgU3R1dHRnYXJ0LCBTYXZpZ255cGxhdHosIGFuZCBBZGFsYmVydHN0cmFzc2UuCgpIZXIgYXBwcm9hY2ggZGVlbXBoYXNpemVzIHRoZSBjb21pbmctb2YtYWdlIHRoZW1lIGVtcGhhc2l6ZWQgYnkgdGhlIG1ham9yaXR5IG9mIEthcmEgc2Nob2xhcnMsIGFsdGhvdWdoIGl0IGludHJvZHVjZXMgZ2VvZ3JhcGhpY2FsIHNwZWNpZmljaXR5IHRoYXQgaXMgYWJzZW50IGluIG90aGVyIGFuYWx5c2VzLiBTaW1pbGFybHksIEthcmluIExvcm5zZW4gc2VlcyBTZWxhbSBCZXJsaW4gYXMgZW5nYWdpbmcgaW4gYSBidXJnZW9uaW5nIGZpZWxkIG9mIHNwYXRpYWxseSAidHJhbnNncmVzc2l2ZSIgdGV4dHMgdGhhdCBkZXN0YWJpbGl6ZSB0cmFkaW9uYWwgZGljaG90b21pZXMgaW52b2x2aW5nIGN1bHR1cmUgYW5kIGdlb2dyYXBoeS4KClRoZSBwaWNhcmVzcXVlIGZvcm0gYWxzbyBpbmZvcm1zIEFpbGUgRXNlbiByZWFkaW5nIG9mIFNlbGFtIEJlcmxpbiBhcyBmb2N1c2VkIG9uIHRoZSB0aGVtZSBvZiB0cmF2ZWw7IGhvd2V2ZXIsIEVzZW4ncyBzdHVkeSBkaWZmZXJzIGZyb20gdGhvc2Ugb2Ygb3RoZXIgc2Nob2xhcnMgaW4gdGhhdCBpdCBkb2VzIG5vdCBjb2xsYXBzZSB0aGUgYm91bmRhcmllcyBhbmQgY3JlYXRlIHRoZSAnaHlicmlkJyBjdWx0dXJlIHRoYXQgdGhlIExvcm5zZW4gb3IgR2Vpc3NlciBzZWUgaW4gS2FyYSdzIHRleHQuCgpTY2hvbGFyc2hpcCBvbiBFbWluZSBTZXZnaSBPemRhbWFyCgpTY2hvbGFyc2hpcCBvbiBFbWluZSBTZXZnaSBPemRhbWFyIGhhcyBjZW50ZXJlZCBhcm91bmQgdGhlbWVzIG9mIGN1bHR1cmFsIGRpc3BsYWNlbWVudCwgY3VsdHVyYWwgYXNzaW1pbGF0aW9uLCBkaXNjcmltaW5hdGlvbiBieSBHZXJtYW5zIHRvd2FyZCBUdXJrcywgYW5kIEdlcm1hbiBtb2Rlcm5pemF0aW9uLiBJbiBoaXMgY29tcHJlaGVuc2l2ZSBvdmVydmlldyBvZiBsaXRlcmF0dXJlIGRlYWxpbmcgd2l0aCBUdXJraXNoIGFzc2ltaWxhdGlvbiB3aXRoaW4gR2VybWFuIGN1bHR1cmUsIFRvbSBDaGVlc21hbiBzZWVzIE96ZGFtYXIgYXMgcGFydGljaXBhdGluZyBpbiBhIHNoaWZ0IGZyb20gYSAibGl0ZXJhdHVyZSBvZiBkaXNwbGFjZW1lbnQgdG8gb25lIG9mIHNldHRsZW1lbnQuIgoKQWNjb3JkaW5nbHksIGhlIHNlZXMgT3pkYW1hciBhcyBwcm9ncmVzc2l2ZSBhbmQgY3VsdHVyYWxseSBvcHRpbWlzdGljLCBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgdGhlIGF1dGhvciB3cm90ZSBhdCBhIHRpbWUgb2YgaGFyc2ggcmFjaWFsIGRpc2NyaW1pbmF0aW9uIGJ5IEdlcm1hbiByZWdhcmRpbmcgVHVya3MuIEFsdGhvdWdoIHRoZXJlIGV4aXN0cyBzb21lIGRpc3NlbnNpb24gd2l0aCByZWdhcmQgdG8gdGhlIGRpY2hvdG9teSBhZGRyZXNzZWQgYnkgQ2hlZXNtYW4sIHRoZSB0aGVtZXMgb2YgZGlzcGxhY2VtZW50IGFuZCBzZXR0bGVtZW50IG1hbmlmZXN0IHJlcGVhdGVkbHkgaW4gc2Nob2xhcnNoaXAgZGVhbGluZyB3aXRoIE96ZGFtYXIuCgpJbiB0aGVpciBzdXJ2ZXkgb2YgcG9ydHJheWFscyBvZiBUdXJrcyBpbiBHZXJtYW4gc29jaWV0eSwgRGF2aWQgSG9ycm9ja3MgYW5kIEV2YSBLb2xpbnNreSBhcmd1ZSAod2l0aCByZWdhcmQgdG8gb25lIG9mIE96ZGFtYXIncyBib29rcykgdGhhdCB0aGUgImR1YWxpdHkgb2YgaWRlbnRpdHkgYW5kIGN1bHR1cmUgaXMgdGhlIHRoZW1lIG9mIHRoaXMgYm9vay4iCgpUaGUgaW5zZXBhcmFiaWxpdHkgb2YgaWRlbnRpdHkgYW5kIGN1bHR1cmUgaXMgcmVnYXJkZWQgYXMgYSB0cnVpc20gb2YgY3VsdHVyYWwgdGhlb3J5LCBhbmQgdGhlIHdvcmtzIG9mIE96ZGFtYXIgaGVsZCBlbHVjaWRhdGUgdGhlIG1hbm5lciBpbiB3aGljaCBvbmUncyBpZGVudGl0eSAtLSB0aGVpciBlbnRpcmUgd2F5IG9mIHBlcmNlaXZpbmcgdGhlIHdvcmtkIC0tIGlzIGZvcm1lZCB0aHJvdWdoIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBvbmVzZWxmIGFuZCB0aGUgc29jaWV0eSBpbiB3aGljaCB0aGV5IGV4aXN0LgoKQ29ycmVzcG9uZGluZyB3aXRoIHRoZSB0aGVtZSBlbHVjaWRhdGVkIGJ5IENoZWVzbWFuIGlzIG9uZSBvZiBFYXN0LVdlc3QgZGlzY3JpbWluYXRpb24uIEFsdGhvdWdoIFR1cmtzIGxpdmUgaW4gR2VybWFueSwgYmVjYXVzZSBvZiB0aGVpciBoZXJpdGFnZSB0aGV5IGFyZSBvZnRlbiBicmFuZGVkIGFzIGJlbG9uZ2luZyB0byBBc2lhLiBNb3Jlb3ZlciwgdGhlIEFzaWEgYXNzb2NpYXRpb24gY2FycmllcyB3aXRoIGl0IHBlam9yYXRpdmUgbm90aW9ucyBvZiB0aGUgIk9yaWVudCwiIGFzIHRoZXkgYXJlIGxhYmVsZWQgYXMgYXJjaGFpYywgZm9yZWlnbiBNdXNsaW1zIHJhdGhlciB0aGFuIEdlcm1hbiBDaHJpc3RpYW5zLiBUaGlzIHJlY2FsbHMgdGhlIGdyb3VuZGJyZWFraW5nIHdvcmsgYnkgRWR3YXJkIFNhaWQgY29uY2VybmluZyB0aGUgZGVtZWFuaW5nIGF0dGl0dWRlIGhlbGQgYnkgV2VzdGVybmVycyB0b3dhcmQgdGhvc2UgZnJvbSBBc2lhLiBSZWZlcnJpbmcgdG8gVHVya3MgYXMgIk9yaWVudGFscyIgbm90IG9ubHkgZGVuaWVzIHRoZW0gdGhlaXIgR2VybWFuIGlkZW50aXR5IGJ1dCBhbHNvIHJlaW5mb3JjZXMgYSBHZXJtYW4tY2VudHJpYyBwZXJzcGVjdGl2ZSB0b3dhcmQgdGhlIHdvcmxkIHRoYXQgcHJlY2x1ZGVzIGN1bHR1cmFsIGFzc2ltaWxhdGlvbi4gSXQgaXMgdGhpcyBmdXNpbmcgb2YgYSB0aGVyZXRvZm9yZSBpcnJlcGFyYWJsZSBkaXNjb3JkIGJldHdlZW4gR2VybWFuIGFuZCBUdXJraXNoIGN1bHR1cmVzIHRoYXQgbWFueSBzY2hvbGFycyBwb3NpdGlvbiBhcyBPemRhbWFyJ3MgZm9yZW1vc3QgdGhlbWUuIE1hcnRpbiBFYmVsIGZhbGxzIHZpY3RpbSB0byB0aGlzIHRlbmRlbmN5IGluIGhpcyBvd24gcmVhZGluZyBvZiB0aGUgYXV0aG9yIGhlcnNlbGY7IGhlIHNlZXMgT3pkYW1hciBhcyBUdXJraXNoLCBidXQgaW4gYSBwZWpvcmF0aXZlIHdheSB3aGVyZWJ5IHNoZSBpcyBhIE11c2xpbSBmdW5kYW1lbnRhbGlzdCByYXRoZXIgdGhhbiBhIENocmlzdGlhbi4KCkFsdGhvdWdoIHN1Y2ggb3ZlcnQgZGlzY3JpbWluYXRpb24gaXMgdW5wb3B1bGFyIEF1ZmZlcm1hbm4gYXNzZXJ0cyB0aGF0IHRoZSBpc3N1ZSBvZiBPemRhbWFyJ3MgZXRobmljaXR5IG1heSBiZSBvdmVyZGV0ZXJtaW5lZCBpbiBhbmFseXNlcyBvZiB0aGUgYXV0aG9yLgoKVG8gdGhpcyBlbmQsIHRoZXJlIGlzLCB1bmZvcnR1bmF0ZWx5LCBhIGxvbmctc3RhbmRpbmcgcHJldmFpbGluZyBhbmltb3NpdHkgdG93YXJkIGFjY2VwdGluZyBhIHdvcmsgYnkgYSBUdXJrIGFzIGEgR2VybWFuIHRleHQuCgpBY2NvcmRpbmcgdG8gTWFyZ3JpdCBGcm9saWNoLCB0aGUgYmxpbmQgZW1waGFzaXMgb24gT3pkYW1hcidzIFR1cmtpc2ggZXRobmljaXR5IGhhcyBhY3R1YWxseSBjYXVzZWQgc2Nob2xhcnMgdG8gZGlzcmVnYXJkIHRoZSBzcGVjaWZpY3Mgb2YgaGVyIGJpb2dyYXBoeS4KCkluZGVlZCwgRnJvbGljaCBhcmd1ZXMgdGhhdCBPemRhbWFyIGhhcyBhY3R1YWxseSBsaXZlZCBpbiBHZXJtYW55IGxvbmdlciB0aGFuIFR1cmtleSwgaGF2aW5nIGVtaWdyYXRlZCByb3VnaGx5IGF0IHRoZSBhZ2Ugb2YgMjAuIEFzIHN1Y2gsIEZyb2xpY2ggYXNzZXJ0cyB0aGF0IGl0IGlzIG5vdCB1bnJlYXNvbmFibGUgdG8gYXNzdW1lIHRoYXQgT3pkYW1hciBpcyBtb3JlIGN1bHR1cmFsbHkgdmVyc2VkIGluIEdlcm1hbiBjdWx0dXJlIHRoYW4gdGhlIG1ham9yaXR5IG9mIEdlcm1hbiBuYXRpdmVzLiBXaGV0aGVyIG9yIG5vdCB0aGUgYXV0aG9yIGlzIG1vcmUga25vd2xlZGdlYWJsZSByZWdhcmRpbmcgR2VybWFuIGN1bHR1cmUgdGhhbiBtb3N0IG5hdGl2ZXMsIEZyb2xpY2ggZWZmZWN0aXZlbHkgZGlzcGVscyB0aGUgbm90aW9uIHRoYXQgT3pkYW1hciBpcyB1bnF1YWxpZmllZCB0byBhZG9wdCB0aGUgdmFsdWVzIG9mIEdlcm1hbiBjdWx0dXJlLgoKTGVzbGllIGEuIEFkZWxzb24gYXJndWVzIHRoYXQgT3pkYW1hcidzIHdvcmtzIGZvcmVncm91bmQgR2VybWFuIGN1bHR1cmFsIGFueGlldGllcywgc3RhdGluZyB0aGF0IGhlciB3b3JrcyBjb250YWluOgoKImFmZmVjdGl2ZSBkaW1lbnNpb25zJiM4MjMwO3doaWNoIGluIHZhcnlpbmcgY29uZmlndXJhdGlvbnMgcmVmbGVjdFtzXSBHZXJtYW4gZ3VpbHQsIHNoYW1lLCBvciByZXNlbnRtZW50IGFib3V0IHRoZSBOYXppIHBhc3QsIEdlcm1hbiBmZWFycyBvZiBtaWdyYXRpb24sIFR1cmtpc2ggZmVhcnMgb2YgdmljdGltaXphdGlvbiwgbmF0aW9uYWwgdGFib29zIGluIGJvdGggY291bnRyaWVzLCBhbmQgVHVya2lzaCBwZXJjZXB0aW9ucyBvZiBHZXJtYW4gZmFudGFzaWVzLiIKCkFkZWxzb24gaWRlbnRpZmljYXRpb24gb2YgYSBudW1iZXIgb2YgcG9saXRpY2FsbHkgZ3JvdW5kZWQgdGhlbWVzIHJlbGF0aW5nIHRvIGlzc3VlcyBvZiBjdWx0dXJhbCBpZGVudGlmaWNhdGlvbiBsZW5kcyBjcmVkZW5jZSB0byB0aGUgY29uY2VwdGlvbiB0aGF0IE96ZGFtYXIgaXMgaW5kZWVkIGEgcG9saXRpY2FsbHkmIzgyMzA7 QnVjaGkgRW1lY2hldGEgdGhlIEpveXMgb2YgTW90aGVyaG9vZA== QnVjaGkgRW1lY2hldGEgdGhlIEpveXMgb2YgTW90aGVyaG9vZA== MQ== Nzg1NTMyNDA= NQ== MjA= QTExNTQ2NjI= NjAyNzA0NA== MTEwNjc= NTA= TUxB TGl0ZXJhdHVyZQ== TGl0ZXJhdHVyZSAvIFBvZXRyeQ== VGhlc2lz MQ== MQ== MQ== MTYzNDk= NzEwOQ== MTI2MDY0ODAwMA== MQ== RmVtYWxlIFdheXMgb2YgSWRlbnRpdHkgU2hhcGluZyAtLSB0aGUgSm95cyBvZiBNb3RoZXJob29kCgpUaGlzIGlyb25pYyBhbmQgZXZlbiBjcnlwdGljIHRpdGxlIG9mIEJ1Y2hpIEVtZWNoZXRhJ3MgYm9vayBpcyBhcyBmYXIgZnJvbSB0aGUgc3Vic3RhbmNlIG9mIGhlciBuYXJyYXRpdmUgYXMgQWZyaWNhIGlzIGZyb20gR2VybWFueS4gV2hhdCB0aGUgYm9vayBkb2VzIGNvbnZleSB3aXRoIHBhc3Npb24gYW5kIHJlYWxpc20gaXMgdGhhdCBtb3RoZXJob29kIGluIHRoaXMgQWZyaWNhbiB0YWxlIGlzIGEgc3RydWdnbGUgLS0gYW5kIHBvdGVudGlhbGx5IGEgcmV3YXJkIC0tIGZvciB0aG9zZSB3b21lbiB3aG8gYmF0dGxlIHRocm91Z2ggYWR2ZXJzaXR5IHRoZSB3YXkgdGhhdCBFbWVjaGV0YSdzIGNoYXJhY3RlciBoYXMgZG9uZS4gVGhlIGNhbnZhcyB0aGF0IEVtZWNoZXRhIHBhaW50cyB3aXRoIGhlciB0YWxlbnRlZCBicnVzaHN0cm9rZXMgdGFrZXMgdGhlIHJlYWRlciBvbiBhIGpvdXJuZXkgdGhhdCwgYWxvbmcgdGhlIHdheSwgaGFzIHNlcmlvdXMgcm9hZGJsb2NrcywgcGl0ZmFsbHMgYW5kIGNoYWxsZW5nZXMuIEl0IGlzIGEgZmFzY2luYXRpbmcgbGl0ZXJhcnkgbmFycmF0aXZlLCB3b3J0aHkgb24gaXRzIG93biBtZXJpdHMgYW5kIHdvcmxkIGNsYXNzIGluIGl0cyBhZGhlcmVuY2UgdG8gZGVzY3JpcHRpdmUgZXhjZWxsZW5jZSBhbmQgcXVhbGl0eSBvZiBjaGFyYWN0ZXIgZGV2ZWxvcG1lbnQuIEFuZCBtb3Jlb3ZlciwgdGhlIGlkZW50aXRpZXMgb2YgdGhlIGNoYXJhY3RlcnMgLS0gdGhlaXIgY2hhbmdlcywgdGhlaXIgYWRhcHRpbmcgdG8gdGhlIG5ldyB3b3JsZCAtLSBwcm92aWRlIGEgcG93ZXJmdWwgYW5kIHBpdm90YWwgZHluYW1pYyB0byB0aGUgbm92ZWwuCgpNZXRob2RzIGFuZCBUaGVvcnkKCkVtYnJhY2luZyB0aGUgdGVuZXRzIG9mIE5ldyBIaXN0b3JpY2lzbSwgb25lIGRvZXMgbm90IHF1ZXN0aW9uIHRoZSBhdXRob3IncyBtb3RpdmVzIGZvciBwcmVzZW50aW5nIHRoZSBsaXRlcmF0dXJlIGFzIHNoZSBkb2VzLiBCdXQgcmVzZWFyY2hpbmcgb3RoZXIgc3RyYXRlZ2llcyBhbmQgbW9kZWxzIGluIHRoZSBxdWVzdCB0byBmdWxseSB3cmFwIHNjaG9sYXJseSBhcm1zIGFyb3VuZCB0aGUgYm9vayBoYXMgdmFsaWRpdHkgYW5kIGlzIGludm9rZWQgaW4gdGhpcyBwYXBlci4gTm90aW5nIGFuZCBleGFtaW5pbmcgdGhlIGlkZW50aXRpZXMgb2YgdGhlIGNoYXJhY3RlcnMgYXMgdGhlIGR5bmFtaWNzIG1vdmUgYW5kIGNoYW5nZSBpcyBhbiBpbnZlc3RpZ2F0aXZlIG1ldGhvZCB0aGF0IGlzIGVmZmVjdGl2ZSBpZiB1c2VkIGNvbnNpc3RlbnRseS4KClRoZW9yZXRpY2FsIEFwcHJvYWNoCgpNaWNoaWdhbiBTdGF0ZSBVbml2ZXJzaXR5IHByb2Zlc3NvciBhbmQgYXV0aG9yIEthdGhlcmluZSBGaXNoYnVybiBwcmVzZW50cyBhbiBhcHByb2FjaCB0byByZWFkaW5nIGFuZCB1bmRlcnN0YW5kaW5nIEFmcmljYW4gbGl0ZXJhdHVyZSB0aGF0IHNoZSBiZWxpZXZlcyBzaG91bGQgaGVscCB0aGUgcmVhZGVyIG5lZ290aWF0ZSAiYSBuZXcga2luZCBvZiByZWxhdGlvbnNoaXAmIzgyMzA7YmV0d2VlbiB0aGUgbmVlZHMgb2YgY29tbXVuaXRpZXMgYW5kIHRoZSByaWdodHMgb2YgaW5kaXZpZHVhbHMiIGFzIGFuICJhbGllbiB0ZXh0LiIgV2hlbiB0aGF0IG5ldyBpZGVhIGlzIGFwcHJvYWNoZWQsIGluIHRoaXMgY2FzZSwgQWZyaWNhbiBsaXRlcmF0dXJlIChGaXNoYnVybiwgMTk5NSwgcC4geGkpLCB3aW5kb3dzIG9mIHRoZSBtaW5kIHdpbGwgb3BlbiByYXRoZXIgdGhhbiBjbG9zZS4gSGlzdG9yaWNhbGx5LCBGaXNoYnVybiB3cml0ZXMsIHRoZSBjdWx0dXJhbCBkb21pbmF0aW9uIGFuZCAiZG9nbWF0aXNtIiBvZiB0aGUgV2VzdCB0b3dhcmRzIEFmcmljYSBjYW5ub3QgYmUgZGlzbWlzc2VkIGVhc2lseSBldmVuIHdoZW4gcmVhZGVycyBoYXZlIHRoZSAiYmVzdCBpbnRlbnRpb25zIiAocC4gMSkuIFRoZSB0aGVvcnkgc2hlIGVzcG91c2VzIGZvciByZWFkZXJzIGVuY291bnRlcmluZyBBZnJpY2FuIGxpdGVyYXR1cmUgLS0gYW5kIGluIHBhcnRpY3VsYXIgRW1lY2hldGEncyB3b3JrIC0tIGlzIHRoYXQgaW4gb3JkZXIgdG8gYWNoaWV2ZSB1bmRlcnN0YW5kaW5nLCAid2hlbmV2ZXIgd2UgZW5jb3VudGVyIG90aGVycyAtLSBpbiBwZXJzb24gb3IgaW4gYXJ0IG9yIGluIHRleHRzIC0tIHdlIHNob3VsZCBiZSB3aWxsaW5nIHRvIHN1c3BlbmQgb3VyIHByZWp1ZGljZXMgYW5kIG9wZW4gb3Vyc2VsdmVzIHRvIHRoZW0iIChGaXNoYnVybiwgcC4gMikuIEhlciBib29rLCBSZWFkaW5nIEJ1Y2hpIEVtZWNoZXRhOiBDcm9zcy1DdWx0dXJhbCBDb252ZXJzYXRpb25zLCBGaXNoYnVybiBpbnNpc3RzIHRoYXQgc2hlIGlzICJ1dHRlcmx5IGNvbnZpbmNlZCB3ZSBjYW4gbmV2ZXIgdW5kZXJzdGFuZCBBZnJpY2FuIHRleHRzIG9uIHRoZWlyIG93biB0ZXJtcywiIGhvd2V2ZXIgd2UgY2FuIHZpZXcgdGhlbSB3aXRoICJmZXdlciBXZXN0ZXJuIHByZXN1cHBvc2l0aW9ucyBhbmQgcHJlanVkaWNlcyIgKHAuIDEzKS4gQW5kIGluZGVlZCwgIndlIG11c3QgbGVhcm4gdG8gZG8gdGhpcyAtLSB3ZSBubyBsb25nZXIgcmVhbGx5IGhhdmUgYSBjaG9pY2UgaW4gdGhlIG1hdHRlciIgKHAuIDEzKS4KCkluIG90aGVyIHdvcmRzLCBwcmlvciB0byByZWFkaW5nIEVtZWNoZXRhJ3MgYm9vaywgaW5kaXZpZHVhbHMgc2hvdWxkIGJlY29tZSAicmVjZXB0aXZlIiB0byB0aGUgdXR0ZXIgZnJlc2huZXNzIGFuZCBuZXduZXNzIG9mIEFmcmljYW4gd3JpdGluZy4gSXQgd2lsbCBub3QgYmUgcG9zc2libGUgZm9yIGEgV2VzdGVybiByZWFkZXIgdG8gc3VkZGVubHkgYmVnaW4gdGhpbmtpbmcgdGhlIHdheSAib3VyIGxpdGVyYXJ5IGFuY2VzdG9ycyBkaWQiIGFuZCBoZW5jZSwgYWNoaWV2ZSAiaGlzdG9yaWNhbCBvYmplY3Rpdml0eSIgdGhhdCBvZmZlcnMgcmVhZGVycyBhIGNoYW5jZSB0byBmb2xsb3cgYW5kIHVuZGVyc3RhbmQgdGhlIHRleHQgdGhlIHdheSBpdCB3YXMgb3JpZ2luYWxseSB3cml0dGVuLiBGaXNoYnVybiAocC4gMykgYXNzZXJ0cyB0aGF0IGJlbGlldmluZyBvbmUgY2FuIHNpbXBseSBzdXNwZW5kIGhpcyBvciBoZXIgb3duIGN1bHR1cmFsIGJpYXNlcyBpcyAiYSBuYWl2ZSBjbGFpbSBvZiBoaXN0b3JpY2lzbSI7IGJ5IHJlYWRpbmcgRW1lY2hldGEsIEZpc2hidXJuIGV4cGxhaW5zLCBzaGUgaXMgbm90IGp1c3QgcmVhZGluZyBhYm91dCBBZnJpY2FuIGhlcml0YWdlLgoKSW5zdGVhZCwgRmlzaGJ1cm4gYmVsaWV2ZXMgdGhhdCBzaGUgaXMgYWxsb3dpbmcgInRoZSBUaG91IChFbWVjaGV0YSdzIHRleHQpIHRvIGludGVycm9nYXRlIG1lLCBldmVuIGFzIEkgaW50ZXJyb2dhdGUgaXQuIiBUaGUgYWN0IG9mIHJlYWRpbmcgZm9jdXNlcyBhdHRlbnRpb24gbm90IG9uICJvdXJzZWx2ZXMiIGJ1dCByYXRoZXIgb24gdGhlIHRleHQgaW4gcXVlc3Rpb24uIEZpc2hidXJuIGlzIHN1Z2dlc3RpbmcgdGhhdCBXZXN0ZXJuZXJzIG11c3QgYWJhbmRvbiB0aGVpciB3aGl0ZSwgY29tZm9ydGFibGUgaWRlbnRpdGllcyBhbmQgdHJ5IHRvIGFsbG93IHRoZSBib29rIHRvIGNvbWUgdG8gdGhlbSwgcmF0aGVyIHRoYW4gdGhlbSBnb2luZyB0byB0aGUgYm9vay4gQW5kIHdoaWxlIGFjY29yZGluZyB0byBGaXNoYnVybid0IGlzIG5vdCBwb3NzaWJsZSBmb3IgV2VzdGVybmVycyB0byB1bmRlcnN0YW5kIGZ1bGx5IHRoZSBib29rIGJ5IEVtZWNoZXRhLCB0aHJlZSBzdHJhdGVnaWVzIGNhbiBiZSBlbWJyYWNlZCB3aGVuIHJlYWRpbmcgImFsaWVuIiB0ZXh0cy4gT25lLCBhbiBldGhub2NlbnRyaWMgYXBwcm9hY2ggImZyb20gdGhlIG91dHNpZGUiIHRoYXQgdXNlcyBuZXV0cmFsIGxhbmd1YWdlIHZpcy1hLXZpcyAiTmV3IENyaXRpY2lzbSI7IHR3bywgYW4gImluZGlnZW5vdXMgb25lIiB0aGF0IHJpc2VzIHVwIG91dCBvZiB0aGUgImFsaWVuIGN1bHR1cmUgaXRzZWxmIChhbmQgaW4gd2hpY2ggd2UgY2Fubm90IHBhcnRpY2lwYXRlIjsgYW5kIHRocmVlLCB0aGUgb25lIHRoYXQgRmlzaGJ1cm4gYWR2b2NhdGVzLCAiYSBjcm9zcy1jdWx0dXJhbCBvciBoeWJyaWQgcmVhZGluZyB0aGF0IHNwZWFrcyBhIGxhbmd1YWdlIG9mIHBlcnNwaWN1b3VzIGNvbnRyYXN0IiAoRmlzaGJ1cm4sIHAuIDExLTEyKS4KCk1lYW53aGlsZSwgTGlzYSBGcmllZGxpLUNsYXBpZSwgcHJvZmVzc29yIG9mIEZyZW5jaCBhbmQgSXRhbGlhbiBhdCB0aGUgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uIGluIFNlYXR0bGUsIGhhcyBwdWJsaXNoZWQgYSB3b3J0aHkgYXJ0aWNsZSBpbiB0aGUgam91cm5hbCBXZXN0IFZpcmdpbmlhIFVuaXZlcnNpdHkgUGhpbG9sb2dpY2FsIFBhcGVycyB0aGF0IHNob3VsZCBiZSByZWFkIGJ5IGFueSBlbnRlcnByaXNpbmcgc3R1ZGVudCBwcmlvciB0byBkaXBwaW5nIGludG8gRW1lY2hldGEncyBub3ZlbC4gRnJpZWRsaS1DbGFwaWUgcmVmZXJlbmNlcyBzZXZlcmFsIHNjaG9sYXJzIGluIGhlciBvcGVuaW5nIHBhcmFncmFwaHMgYW5kIGVhY2ggb25lIG9mIHRoZW0gb2ZmZXJzIGEgd2FybmluZyBhYm91dCByZWFkaW5nIHRvbyBtdWNoIGludG8gdGhlIHN0b3J5CgpZZXMgRW1lY2hldGEgdW5kZXJzdG9vZCB3aGlsZSB3cml0aW5nIHRoZSBub3ZlbCB0aGF0ICImIzgyMzA7bW9zdCByZWFkZXJzIG9mIEFmcmljYW4gbGl0ZXJhdHVyZSBhcmUgbm90IGVxdWlwcGVkIHdpdGggdGhlIHNhbWUgaGlzdG9yaWNhbCBhbmQgY3VsdHVyYWwgZXhwZXJpZW5jZSBhcyB0aGUgQWZyaWNhbiBhdXRob3IiIChGcmllZGxpLUNsYXBpZSwgMjAwNSkuIEhlbmNlLCBGcmllZGxpLUNsYXBpZSBhc3NlcnRzIHRoYXQgcmF0aGVyIHRoYW4gc3BlY3VsYXRlIGFib3V0IHdoZXRoZXIgYnkgd3JpdGluZyB0aGUgYm9vayBpbiBFbmdsaXNoIHRoZSBhdXRob3IgaW50ZW5kZWQgdG8gZWR1Y2F0ZSBFbmdsaXNoLXNwZWFraW5nIHJlYWRlcnMgaW4gdGhlIFdlc3QgYWJvdXQgQWZyaWNhbiBjdWx0dXJlIG9yIG5vdCwgYW55IG9mIHRob3NlIGFyZ3VtZW50cyBhcmUgIm92ZXJzaGFkb3dlZCBieSB0aGVtZXMgb2Ygcml2ZXIgc3Bpcml0IG9yIE1hbW15IFdhdGEgd29yc2hpcC4iIE1hbW15IFdhdGEsIHRoZSAic3Bpcml0dWFsIGFuZCBwc3ljaG9sb2dpY2FsIHBlcnNvbmlmaWNhdGlvbiBvZiB3YXRlciBhbmQgYWxsIGl0cyBsaWZlLXN1c3RhaW5pbmcgZm9yY2UsIiBpcyAiYW4gdW5kZXJseWluZyBjdWx0dXJhbCB2YWx1ZSBpbiBOaWdlcmlhbiB3b21lbidzIGxpdGVyYXR1cmUgYXQgbGFyZ2UsIEZyaWVkbGktQ2xhcGllIGFzc2VydHMuIEZyaWVkbGktQ2xhcGllIGRlc2NyaWJlcyBoZXIgdGhlb3J5IGFzIGJhc2VkIG9uICJNYW1teSBXYXRhJ3MgdW5kZXJseWluZyBwcmVzZW5jZSIgaW4gbGl0ZXJhcnksIHNwaXJpdHVhbCwgYmlvbG9naWNhbCBhbmQgbW9uZXRhcnkgZm9ybXM7IGFuZCBNYW1teSBXYXRhLCB3aGljaCBpcyBhY2tub3dsZWRnZWQgYW5kIHdvcnNoaXBlZCBpbiBtYW55IHdheXMgaW4gTmlnZXJpYSwgTGliZXJpYSwgdGhlIENvbmdvIGFuZCBDYW1lcm9vbiwgYnJpbmdzIG91dCAid29tZW4ncyBpbmdlbnVpdHksIHNwaXJpdHVhbCBwcmFjdGljZSwgYW5kIGRlZGljYXRpb24iIChGcmllZGxpLUNsYXBpZSkuCgpUYWtpbmcgdGhlIHN0b3J5IGZvciB3aGF0IGl0IGlzLCBhbmQgbm90IHdoYXQgdGhlIGF1dGhvciBtYXkgaGF2ZSB0cmllZCB0byB3ZWF2ZSBpbnRvIHRoZSBuYXJyYXRpdmUsIGl0IHNob3VsZCBiZSBwb2ludGVkIG91dCB0aGF0IGluIE5pZ2VyaWFuIGN1bHR1cmUsIHRoZSBweXRob24gaXMgYSBtZXNzZW5nZXIgZm9yIHRoZSBNYW1teSBXYXRhLiBBY2NvcmRpbmcgdG8gRnJpZWRsaS1DbGFwaWUncyB0aGVvcnkgT25hIGlzICJvdmVyY29tZSBhZnRlciBhbiB1bnNldHRsaW5nIHNlZHVjdGlvbiIgd2hpY2ggdWx0aW1hdGVseSByZXN1bHRzIGluIHRoZSBiaXJ0aCBvZiBoZXIgZGF1Z2h0ZXIsIE5udSBFZ28sIHRoZSBib29rJ3MgcHJvdGFnb25pc3QuIFRoYXQgdGhlIGF1dGhvciBkZXNjcmliZXMgc2VkdWN0aW9uOiB0aGUgY29udmFsZXNjaW5nIGNoaWVmICJzbGlkIG9uIGhpcyBiZWxseSwgbGlrZSBhIGJpZyBibGFjayBzbmFrZSwgYW5kIGNvdmVyZWQgaGVyIG1vdXRoIHdpdGggaGlzIiAoRnJpZWRsaS1DbGFwaWUpLiBIZW5jZSwgdGhlIGxpbmsgdG8gTWFtbXkgV2F0YSwgYW5kIHRoZSBtYWdpYyBwYXJ0IG9mIHRoYXQgY3VsdHVyYWwgYmVsaWVmLiBXaGVuIEVnbyBpcyBwdW1tZWxlZCBieSB0aGUgcmVjb3ZlcmluZyBjaGllZidzIHBlbmlzIHNoZSBjcmllZCBvdXQgYW5kIGF0IHRoYXQgbW9tZW50IHRoZSBlbGRlc3Qgd2lmZSBvZiB0aGUgY2hpZWYgZmFsbHMgaWxsLiBXaGVuIEVnbyBpcyBib3JuIG5pbmUgbW9udGhzIGxhdGVyLCBzaGUgaGFzIGEgbHVtcCBvbiBoZXIgaGVhZCBhbmQgInRoZSBmYWlyIHNraW4gb2YgdGhlIHdhdGVyIHBlb3BsZS4iCgpJZGVudGl0eSBpbiB0aGUgUmVhbGlzdGljIE5vdmVsCgpObnUgRWdvLCB0aGUgcHJvdGFnb25pc3QsIGNvbmNlaXZlZCBhcyBub3RlZCBhZnRlciBoZXIgbW90aGVyJ3MgcmVjb3ZlcmluZyBjaGllZi1sb3ZlciByb2xsZWQgb3ZlciBsaWtlIGEgImJpZyBibGFjayBzbmFrZSIgaGFzIG1vcmUgdGhhbiBvbmUgaWRlbnRpdHkgYXMgdGhpbmdzIG1vdmUgYWxvbmcgYW5kIGNoYW5jZTsgYW5kIHRoZSBpZGVudGl0aWVzIGNvbWUgaW4gbWFueSBjb2xvcnMgZm9yIG1hbnkgcmVhc29ucy4gVGhhdCBpcyB3aGF0IG1ha2VzIHRoaXMgYm9vayBib3RoIGVudGVydGFpbmluZyBhbmQgcG9pZ25hbnQuIEVnbyBzZWVtcyBhIHN0cm9uZywgaGVhbHRoeSwgYXR0cmFjdGl2ZSB3b21hbiBvbiB0aGUgb25lIGhhbmQuIEJ1dCBvbiB0aGUgb3RoZXIgaGFuZCBzaGUgaGFzIGJlZW4gb3BwcmVzc2VkLCBzaGUgaXMgb2Z0ZW4gaW4gZGVzcGFpciwgaGVyIHNhbml0eSBpcyBjaGFsbGVuZ2VkIG9mdGVuIGFuZCBpbiB0aGUgZW5kLCB0cmFnaWNhbGx5IHNoZSBkaWVzLiBCdXQgYXQgdGhlIG91dHNldCBpdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBpbiB0ZXJtcyBvZiBObnUgRWdvJ3MgaWRlbnRpdGllcyB0aGV5IGFyZSBlbnRpcmVseSB1bmlxdWUgdG8gdGhpcyBzdG9yeSBhbmQgZG8gbm90IG5lY2Vzc2FyaWx5IHJlcHJlc2VudCB0aGUgImF2ZXJhZ2UiIEFmcmljYW4gd29tYW4uIEluZGVlZCB0aGVyZSBtYXkgbm90IGJlIGFuICJhdmVyYWdlIiBBZnJpY2FuIHdvbWFuIHNpbmNlIHRoZXJlIGFyZSA0NyBuYXRpb25zIHdpdGhpbiB0aGUgQWZyaWNhbiBjb250aW5lbnQsIGFuZCBzaXggaXNsYW5kIG5hdGlvbnMgb2Zmc2hvcmUgdGhhdCBhcmUgd2l0aGluIHRoZSBBZnJpY2FuIGp1cmlzZGljdGlvbiwgYnJpbmdpbmcgdGhlIHRvdGFsIHRvIDUzLCBlYWNoIHdpdGggaXRzIHVuaXF1ZSBjdWx0dXJhbCBhbmQgZXRobmljIHZhbHVlcyBhbmQgdHJhZGl0aW9ucy4KClRoZSBiZWdpbm5pbmcgb2YgdGhlIGJvb2sgaXMgYWxzbyBhcHBhcmVudGx5IHRoZSBlbmRpbmcgb2YgaGVyIGxpZmUgKGFsdGhvdWdoIGl0IHR1cm5zIG91dCB0aGF0IHNoZSBkb2VzIG5vdCBkaWUgYXQgdGhpcyB0dXJuIG9mIGV2ZW50cyksIGFuZCB0aHJvdWdoIHRoaXMgdGVjaG5pcXVlIHRoZSByZWFkZXIgaXMgZ2l2ZW4gYSBnb2xkZW4gb3Bwb3J0dW5pdHkgdG8gc3BlY3VsYXRlIHdpdGggZ3JlYXQgY3VyaW9zaXR5IGFzIHRvIHRoZSBwYWluIGFuZCBkaXN0dXJiaW5nIGV2ZW50cyB0aGF0IGhhdmUgZ29uZSBpbnRvIEVnbydzIGxpZmUgaW4gQWZyaWNhLiBPciBwZXJoYXBzIHRoZSBwcm90YWdvbmlzdCBoYXMgbGVkIGEgcHJvZHVjdGl2ZSwgcG9zaXRpdmUgbGlmZSBhbmQgaW4gdGhlIG1vbWVudHMgcHJpb3IgdG8gdGhlIG9wZW5pbmcgY2hhcHRlciBzb21ldGhpbmcgd2VudCB0ZXJyaWJseSB3cm9uZy4gSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgcGFwZXIgdG8gZGV0ZXJtaW5lIHRoZSBlZGl0b3JpYWwgbW90aXZhdGlvbiAtLSBvciBkZWx2ZSBpbnRvIHdoeSBFbWVjaGV0YSBzdHJ1Y3R1cmVkIHRoZSBib29rIG9yIGhvdyBoZXIgb3duIHBlcnNvbmFsIGxpZmUgcGxheWVkIGEgcm9sZSAtLSBidXQgcmF0aGVyIHRvIGZvbGxvdyB0aGUgbmFycmF0aXZlIGFzIGl0IGxlYWRzIGZyb20gb25lIGRheSB0byB0aGUgbmV4dCwgZnJvbSBvbmUgc2NlbmUgYW5kIHNldHRpbmcgdG8gdGhlIG5leHQuCgpBbnRocm9wb2xvZ2ljYWwgYW5kIGN1bHR1cmFsIHJlYWxpdGllcyAtLSB2aXMtYS12aXMgTmlnZXJpYSBvciBBZnJpY2EgLS0gbm90d2l0aHN0YW5kaW5nLCB0aGUgc3RvcnkncyBmbG93IGFuZCB0aGUgY2hhcmFjdGVycycgaWRlbnRpdGllcyBzdGFuZCBvbiB0aGUgbGVncyBnaXZlbiBieSB0aGUgYXV0aG9yLiBBbGwgb3RoZXIgY29uc2lkZXJhdGlvbnMsIGFzIHBlciBOZXcgSGlzdG9yaWNpc20sIGFyZSBuZWdsaWdpYmxlLiBDcml0aWNzIHB1Ymxpc2ggaHVuZHJlZHMgb2Ygdm9sdW1lcyBvZiBzY2hvbGFybHkgYW5kIGludmVzdGlnYXRpdmUgd29yaywgZXhhbWluaW5nIGV2ZXJ5IG51YW5jZSwgZXZlcnkgY29uZmxpY3QsIGV2ZXJ5IGRyYW1hdGljIGNoYW5nZSBieSBpbXBvcnRhbnQgY2hhcmFjdGVycyAtLSBpbiB0ZXJtcyBvZiB3aGF0IERIIExhd3JlbmNlIG9yIEYuIFNjb3R0IEZpdHpnZXJhbGQgbWVhbnQgdG8gY29udmV5IC0tIGJ1dCBpbiBOZXcgSGlzdG9yaWNpc20gdGhlIHN1YnN0YW5jZSBvZiB0aGUgd3JpdGluZyBpcyB0aGUgc3RvcnksIG5vdCB3aGF0IEVtZWNoZXRhIChpbiB0aGlzIGNhc2UpIHdhcyBsaWtlbHkgdGhpbmtpbmcgd2hlbiBzaGUgZmluaXNoZWQgdGhpcyBjaGFwdGVyIG9yIHRoYXQgb25lLgoKRWdvJ3MgaWRlbnRpdHkgYXMgdGhlIGJvb2sgb3BlbnMgaXMgYXMgYSBwZXJzb24gc2VlbWluZ2x5IG93bmVkIGJ5IGFub3RoZXIgcGVyc29uLiBJbiB0aGUgZmlyc3QgcGFyYWdyYXBoIG9mIENoYXB0ZXIgMSAoIlRoZSBNb3RoZXIiKSBzaGUgaXMgcnVubmluZyBhd2F5IGluIDE5MzQuIEFzIHNoZSBodXN0bGVzIG91dCBvZiB0aGUgcm9vbSB3aGVyZSBzaGUgaGFzIGxpdmVkLCBzaGUgYnJ1c2hlcyBhZ2FpbnN0IHRoZSB3YXNoaW5nIHRoYXQgInRoZSB3aGl0ZSBtYXN0ZXIiIGhhcyBodW5nIG9uIHRoZSBsaW5lLiBJbiB0aGUgZGFyayBzaGUgZGlkIG5vdCBrbm93IHdoYXQgc2hlIGhhZCBqdXN0IHJ1biBpbnRvIHNvIHNoZSBxdWlja2x5JiM4MjMwOw== R2VuZGVyIGluIHRoZSAxOVRoIENlbnR1cnkgTm92ZWw= R2VuZGVyIGluIHRoZSAxOVRoIENlbnR1cnkgTm92ZWw= MQ== NDU2MTY0Mjc= OA== NQ== MjEyMzAxMQ== NDI0OTY0MA== MTEwNjc= NTA= RG9jdG9yYWw= bi9h TGl0ZXJhdHVyZQ== TGl0ZXJhdHVyZSAvIFBvZXRyeQ== RXNzYXk= MQ== MTg4NDYw MjM0OQ== MTM5ODM0OTI4MQ== IFNpbWlsYXJseSB0b28gRW1pbHkgQnJvbnRlJ3MgSGVhdGhjbGlmZiAiZm9yZ2V0cyIgb3IgaXMgbWFkZSB0byBmb3JnZXQgd2hvIGFuZCB3aGF0IGhlIHdhczsgTWFyeSBTaGVsbGV5J3MgbW9uc3RlciBpcyAiYm9ybiIgd2l0aG91dCBlaXRoZXIgYSBtZW1vcnkgb3IgYSBmYW1pbHkgaGlzdG9yeSYjODIzMDt3aGF0IGFsbCB0aGVzZSBjaGFyYWN0ZXJzIGFuZCB0aGVpciBhdXRob3JzIHJlYWxseSBmZWFyIHRoZXkgaGF2ZSBmb3Jnb3R0ZW4gaXMgcHJlY2lzZWx5IHRoYXQgYXNwZWN0IG9mIHRoZWlyIGxpdmVzIHdoaWNoIGhhcyBiZWVuIGtlcHQgZnJvbSB0aGVtIGJ5IHBhdHJpYXJjaGFsIHBvZXRpY3M6IHRoZWlyIG1hdHJpbGluZWFsIGhlcml0YWdlIG9mIGxpdGVyYXJ5IHN0cmVuZ3RoLCB0aGVpciAiZmVtYWxlIHBvd2VyIiB3aGljaCYjODIzMDtpcyBpbXBvcnRhbnQgdG8gdGhlbSBiZWNhdXNlIG9mIChub3QgaW4gc3BpdGUgb2YpIHRoZWlyIG1vdGhlcnMuIChHaWxiZXJ0IGFuZCBHdWJhciA1OSkKCkdpbGJlcnQgYW5kIEd1YmFyIGFyZSBjZXJ0YWlubHkgcmlnaHQgaGVyZSwgdGhhdCB0byBhIGNlcnRhaW4gZXh0ZW50IHdoYXQgaXMgY2VudHJhbCBpbiBhIGZlbWluaXN0IGNvbmNlcHRpb24gb2YgdGhlICJtYXRyaWxpbmVhbCBoZXJpdGFnZSIgb2YgbGl0ZXJhcnkgZ2VuZWFsb2dpZXMgaXMgdGhlIHByb3NwZWN0IG9mIGlkZW50aWZ5aW5nIHdpdGggb25lJ3MgcHJlY3Vyc29yLiAoSXQgbWlnaHQgYmUgd29ydGggbm90aW5nIHRoYXQgTWFyeSBTaGVsbGV5IGNvbmR1Y3RlZCBoZXIgY291cnRzaGlwIHdpdGggUGVyY3kgU2hlbGxleSBtYWlubHkgYnkgbWVldGluZyBhdCB0aGUgZ3JhdmUgb2YgTWFyeSBXb2xsc3RvbmVjcmFmdC4pIEJ1dCB0aGVyZSBpcyBhbHNvIGEgY3J1Y2lhbCB3YXkgaW4gd2hpY2ggdGhpcyBtdXN0IGJlIHVuZGVyc3Rvb2QgYXMgcm9sZS1wbGF5aW5nLCB0aGUgZGVsaWJlcmF0ZWx5IHBlcmZvcm1hdGl2ZSBhZG9wdGlvbiBvZiBhbiBpZGVudGl0eS4gQnkgd2F5IG9mIGNvbmNsdXNpb24sIGl0IG1pZ2h0IGJlIHdvcnRoIG5vdGluZyB0aGF0IGV2ZW4gaW4gb25lIG9mIHRoZSBsZWFzdCBsaXRlcmFyeSBuaW5ldGVlbnRoLWNlbnR1cnkgbm92ZWxzLCBFYXN0IEx5bm5lIGJ5IEVsbGVuIFdvb2QsIG1hbmFnZXMgdG8gaW5jbHVkZSBhbGwgb2YgdGhlc2UgdHJvcGVzIGluIGl0cyBsdWRpY3JvdXMgc2Vuc2F0aW9uIG5vdmVsIHBsb3QuIFdoaWxlIG5vdCB0aGUgd29yc3QgRW5nbGlzaCBmZW1hbGUgbm92ZWxpc3Qgb2YgdGhlIG5pbmV0ZWVudGggY2VudHVyeSAoYSB0aXRsZSB0aGF0IHNob3VsZCBwcm9iYWJseSBiZSByZXNlcnZlZCBmb3IgTWFyaWUgQ29yZWxsaSksIFdvb2QncyBzY2FyY2VseS1jcmVkaWJsZSBidW5kbGUgb2YgbHVkaWNyb3VzIGNsaWNoZXMgbm9uZXRoZWxlc3MgbWFuYWdlcyB0byBjb21iaW5lIHRvIGdpdmUgdXMgYWxsIG9mIHRoZXNlIHNhbWUgdHJvcGVzIHNlZW4gaW4gZmFyIG1vcmUgZWxldmF0ZWQgYW5kIGxpdGVyYXJ5IHdvcmtzIGJ5IHRoZSBCcm9udGVzIGFuZCBNYXJ5IFNoZWxsZXk6IGluZGVlZCBtb3RoZXJob29kLCBhbW5lc2lhIGFuZCByb2xlLXBsYXlpbmcgYWxsIGNvbWJpbmUgYXQgdGhlIGNsaW1heCBvZiBFYXN0IEx5bm5lLCB3aGVuIHRoZSBzZXh1YWxseS10cmFuc2dyZXNzaXZlIExhZHkgSXNhYmVsIENhcmx5bGUgaXMgcmV2ZWFsZWQgdG8gYmUgcG9zaW5nIGFzIGEgZ292ZXJuZXNzIHNpbXBseSBmb3IgdGhlIG9wcG9ydHVuaXR5IHRvIGdldCBjbG9zZSB0byBoZXIgaWxsZWdpdGltYXRlIGNoaWxkOgoKTG9vayBhdCB0aGUgZ292ZXJuZXNzLCByZWFkZXIsIGFuZCBzZWUgd2hldGhlciB5b3Uga25vdyBoZXIuIFlvdSB3aWxsIHNheSAiTm8uIiBCdXQgeW91IGRvLCBmb3IgaXQgaXMgTGFkeSBJc2FiZWwgVmFuZS4gQnV0IGhvdyBzdHJhbmdlbHkgc2hlIGlzIGFsdGVyZWQhIFllcywgdGhlIHJhaWx3YXkgYWNjaWRlbnQgZGlkIHRoYXQgZm9yIGhlciwgYW5kIHdoYXQgdGhlIGFjY2lkZW50IGxlZnQgdW5kb25lLCBncmllZiBhbmQgcmVtb3JzZSBhY2NvbXBsaXNoZWQuIFNoZSBsaW1wcyBhcyBzaGUgd2Fsa3MsIGFuZCBzbGlnaHRseSBzdG9vcHMsIHRha2VuIGZyb20gaGVyIGZvcm1lciBoZWlnaHQuIEEgc2NhciBleHRlbmRzIGZyb20gaGVyIGNoaW4gYWJvdmUgaGVyIG1vdXRoLCBjb21wbGV0ZWx5IGNoYW5naW5nIHRoZSBjaGFyYWN0ZXIgb2YgdGhlIGxvd2VyIHBhcnQgb2YgaGVyIGZhY2U7IHNvbWUgb2YgaGVyIHRlZXRoIGFyZSBtaXNzaW5nLCBzbyB0aGF0IHNoZSBzcGVha3Mgd2l0aCBhIGxpc3AsIGFuZCB0aGUgc29iZXIgYmFuZHMgb2YgaGVyIGdyYXkgaGFpciAtLSBpdCBpcyBuZWFybHkgc2lsdmVyIC0tIGFyZSBjb25maW5lZCB1bmRlciBhIGxhcmdlIGFuZCBjbG9zZSBjYXAuIFNoZSBoZXJzZWxmIHRyaWVzIHRvIG1ha2UgdGhlIGNoYW5nZSBncmVhdGVyLCBzbyB0aGF0IGFsbCBjaGFuY2Ugb2YgYmVpbmcgcmVjb2duaXplZCBtYXkgYmUgYXQgYW4gZW5kLCBhbmQgZm9yIHRoYXQgcmVhc29uIHNoZSB3ZWFycyBkaXNmaWd1cmluZyBzcGVjdGFjbGVzLCBhbmQgYSBicm9hZCBiYW5kIG9mIGdyYXkgdmVsdmV0LCBjb21pbmcgZG93biBsb3cgdXBvbiBoZXIgZm9yZWhlYWQuIEhlciBkcmVzcywgdG9vLCBpcyBlcXVhbGx5IGRpc2ZpZ3VyaW5nLiBOZXZlciBpcyBzaGUgc2VlbiBpbiBvbmUgdGhhdCBmaXRzIGhlciBwZXJzb24sIGJ1dCBpbiB0aG9zZSBmcmlnaHRmdWwgImxvb3NlIGphY2tldHMsIiB3aGljaCBtdXN0IHN1cmVseSBoYXZlIGJlZW4gaW52ZW50ZWQgYnkgc29tZWJvZHkgZW52aW91cyBvZiBhIHByZXR0eSBzaGFwZS4gKFdvb2QgWFhYSSkKCldoaWxlIG5vIGNyaXRpYyB3b3VsZCBldmVyIHdhbnQgdG8gbWFrZSBjbGFpbXMgZm9yIHRoZSBmZW1pbmlzbSBvZiBNcnMuIEhlbnJ5IFdvb2QsIHdoYXQgaXMgaW50ZXJlc3RpbmcgaGVyZSBpcyB0aGF0IC0tIGV2ZW4gaW4gdGhpcyBzdWJsaXRlcmFyeSBtZWxvZHJhbWEgLS0gYWxsIG9mIHRoZSBzYW1lIHRyb3BlcyBhcmUgcmVjYXBpdHVsYXRlZC4gTGFkeSBJc2FiZWwgaXMgcGxheWluZyBhIHJvbGUgLS0gYW5kIGhlciBjcmVhdG9yIGlzIGluZGVlZCBkcmVzc2luZyBoZXIgdXAgZXZlbiBmdXJ0aGVyICh3aXRoIHNjYXJzIGFuZCBncmV5IGhhaXIpIHRvIHByb3ZlIGEgaGlnaGx5IG1vcmFsIHBvaW50IGFib3V0IHN1ZmZlcmluZyBmb3Igb25lJ3MgdHJhbnNncmVzc2lvbnMuIFRoZSBjcnVjaWFsIGRpZmZlcmVuY2UsIHBlcmhhcHMsIGlzIHRoYXQgTGFkeSBJc2FiZWwncyBwZXJmb3JtYXRpdml0eSAtLSB1bmxpa2UgdGhhdCBvZiBWaWN0b3IgRnJhbmtlbnN0ZWluIHBsYXlpbmcgbW90aGVyLCBvciBDYXRoZXJpbmUgRWFybnNoYXcgaW1hZ2luaW5nIGhlcnNlbGYgYXMgSGVhdGhjbGlmZiwgb3IgSmFuZSBFeXJlIHN1ZGRlbmx5IHBsYXlpbmcgdGhlIHN0cm9uZyBwcm90ZWN0b3IgdG8gYSByYWRpY2FsbHkgZGltaW5pc2hlZCBSb2NoZXN0ZXIgLS0gaXMgY29uZmlndXJlZCBoZXJlIGV4cGxpY2l0bHkgYWNyb3NzIGNsYXNzIGxpbmVzLiBMYWR5IElzYWJlbCBpcyBwbGF5aW5nIGF0IGJlaW5nIHdvcmtpbmctY2xhc3MsIHNvIGFzIHRvIHZpY2FyaW91c2x5IGV4cGVyaWVuY2Ugc29tZSBvZiB0aGUgam95cyBvZiBtb3RoZXJob29kIGJlaGluZCB0aGUgZGlnbmlmaWVkIHNpbGVuY2Ugb2YgaGVyIHJlcGVudGFuY2UuIFlldCBpbiBzb21lIHNlbnNlLCBhbGwgb2YgdGhlc2UgY2hhcmFjdGVycyBhcmUgZXhwcmVzc2luZywgbWV0YXBob3JpY2FsbHksIHRoZWlyIGF1dGhvcnMnIHNlbnNlIG9mIHRoZSBmdW5kYW1lbnRhbCBkaWZmZXJlbmNlIG9mIHdvbWVuIGluIHRoZSBuaW5ldGVlbnRoIGNlbnR1cnkgLS0gd2hldGhlciB1bmRlcnN0b29kIGFzIGRpZmZlcmVudCBzb2NpYWwgY2xhc3MgKGluIEVhc3QgTHlubmUpLCBvciBldmVuIGFzIGEgZGlmZmVyZW50IGNsYXNzIG9mIGNyZWF0ZWQgYmVpbmcgKGFzIEZyYW5rZW5zdGVpbiBzZWVtcyB0byBoaW50KSwgdGhlIGJhc2ljIGlkZWEgb2YgZ2VuZGVyIGFzIGEgcHJvYmxlbSBhbmQgYSBwZXJmb3JtYXRpdmUgb3Bwb3J0dW5pdHkgaXMgbWFpbnRhaW5lZC4KCldvcmtzIENpdGVkCgpCYXNjaCwgRnJhbmNvaXNlLiBSZWxhdGl2ZSBDcmVhdHVyZXM6IFZpY3RvcmlhbiBXb21lbiBpbiBTb2NpZXR5IGFuZCB0aGUgTm92ZWwuIE5ldyBZb3JrOiBTY2hvY2tlbiwgMTk3NC4gUHJpbnQuCgpCcm9udGUsIENoYXJsb3R0ZS4gSmFuZSBFeXJlLiAxODQ3LiBXZWIuIEFjY2Vzc2VkIDIyIEFwcmlsIDIwMTQgYXQ6IGh0dHA6Ly93d3cuZ3V0ZW5iZXJnLm9yZy9maWxlcy8xMjYwLzEyNjAtaC8xMjYwLWguaHRtCgpCcm9udGUsIEVtaWx5LiBXdXRoZXJpbmcgSGVpZ2h0cy4gMTg0Ny4gV2ViLiBBY2Nlc3NlZCAyMiBBcHJpbCAyMDE0IGF0OiBodHRwOi8vd3d3Lmd1dGVuYmVyZy5vcmcvZmlsZXMvNzY4Lzc2OC1oLzc2OC1oLmh0bQoKQnV0bGVyLCBKdWRpdGguIEdlbmRlciBUcm91YmxlOiBGZW1pbmlzbSBhbmQgdGhlIFN1YnZlcnNpb24gb2YgSWRlbnRpdHkuIE5ldyBZb3JrOiBSb3V0bGVkZ2UsIDIwMDYuIFByaW50LgoKRGUgQmVhdXZvaXIsIFNpbW9uZS4gVGhlIFNlY29uZCBTZXguIFRyYW5zbGF0ZWQgYnkgSC5NLiBQYXJzaGxleS4gTmV3IFlvcms6IFZpbnRhZ2UsIDE5ODkuIFByaW50LgoKR2lsYmVydCwgU2FuZHJhIGFuZCBHdWJhciwgU3VzYW4uIFRoZSBNYWR3b21hbiBpbiB0aGUgQXR0aWMuIFNlY29uZCBFZGl0aW9uLiBOZXcgSGF2ZW46IFlhbGUgVW5pdmVyc2l0eSBQcmVzcywgMjAwMC4gUHJpbnQuCgpTaGVsbGV5LCBNYXJ5LiBGcmFua2Vuc3RlaW4uIDE4MTguIFdlYi4gQWNjZXNzZWQgMjIgQXByaWwgMjAxNCBhdDogaHR0cDovL3d3dy5ndXRlbmJlcmcub3JnL2ZpbGVzLzg0Lzg0LWgvODQtaC5odG0KCldvb2QsIEVsbGVuLiBFYXN0IEx5bm5lLiAxODYxLiBXZWIuIEFjY2Vzc2VkIDIyIEFwcmlsIDIwMTQgYXQ6IGh0dHA6Ly93d3cuZ3V0ZW5iZXJnLm9yZy9maWxlcy8zMzIyLzMzMjItaC8zMzIyLWguaHRt U3R1ZHkgb2YgYSBNYWpvciBJcmlzaCBBdXRob3IgSmFtZXMgSm95Y2U= U3R1ZHkgb2YgYSBNYWpvciBJcmlzaCBBdXRob3IgSmFtZXMgSm95Y2U= MQ== MzYwMzAyMDc= LTQ= Ng== QTIwNDY4Mzg= NDMxMDcwMA== MTEwNjc= NTA= Q29sbGVnZSBTZW5pb3IgKDR0aCB5ZWFyKQ== bi9h TGl0ZXJhdHVyZQ== TGl0ZXJhdHVyZSAvIFBvZXRyeQ== RXNzYXk= MQ== NDc2MDM= MTkwNg== MTMyMTU1NDQxOA== MQ== Sm95Y2UKCkdlbmRlciBwbGF5cyBhIHByb21pbmVudCByb2xlIGluIHRoZSBmaWN0aW9uIG9mIEphbWVzIEpveWNlLCBlc3BlY2lhbGx5IHdpdGggcmVnYXJkcyB0byB0aGUgcHJvdGFnb25pc3RzJyBpZGVudGl0eSBjb25zdHJ1Y3Rpb24gYW5kIGRlY29uc3RydWN0aW9uLiBBcyBTaGVsZG9uIHB1dHMgaXQsICJ0aGUgYWN0aW9uIG9mIEpveWNlYW4gbmFycmF0aXZlIHNob3dzIG1hc2N1bGluaXR5IGJlaW5nIG92ZXJ3aGVsbWVkIGJ5IGZlbWluaW5pdHkgdG8gb3BlbiB1cCBhbHRlcm5hdGl2ZSBwb3NzaWJpbGl0aWVzLCIgKDQ1NykuIFRoZXNlIGFsdGVybmF0aXZlIHBvc3NpYmlsaXRpZXMgYXJlIG5vdCBnZW5kZXIgYmVuZGluZyBub3IgYXJlIHRoZXkgdHJhbnNzZXh1YWwuIEhvd2V2ZXIsIHRoZSBhbHRlcm5hdGl2ZSBwb3NzaWJpbGl0aWVzIGFyZSByZWxhdGVkIHRvIHRoZSBzdWJ2ZXJzaW9uIG9mIHNvY2lhbCBub3JtcyByZWxhdGVkIHRvIHNleHVhbGl0eSBhbmQgZ2VuZGVyLiBDZW50cmFsIGNoYXJhY3RlcnMgaW4gSm95Y2VhbiBuYXJyYXRpdmVzIGFyZSBub3QgbmVjZXNzYXJpbHkgYW5kcm9neW5vdXMgYW5kIHlldCB0aGV5IGZ1c2UgZWxlbWVudHMgb2YgbWFsZSBhbmQgZmVtYWxlIGlkZW50aXR5IGFuZCBzZXh1YWxpdHkuIEluIGZhY3QsIGdlbmRlciBhbWJpZ3VpdHkgcGFyYWxsZWxzIEpveWNlJ3MgdW5jb252ZW50aW9uYWwgcGxvdCBzdHJ1Y3R1cmVzIGFuZCBuYXJyYXRpdmUgZm9ybWF0cy4gIlRoZSBlcXVpdm9jYWxpdHkgb2YgSm95Y2UncyBwbG90cyBwYXJ0aWNpcGF0ZXMgaW4gdGhlIHNhbWUgYmlmdXJjYXRpb24gdGhhdCBwZXJtZWF0ZXMgaGlzIGdlbmRlcnMsIiAoU2hlbGRvbiA0NTcpLiBHZW5kZXJzIGFuZCBwbG90cyBhcmUgbW9yZSBjb21wbGV4IHRoYW4gYmlmdXJjYXRpb24sIGFzIHRoZXkgYXJlIG11bHRpcGxleGVzLiBJbiBib3RoIEEgUG9ydHJhaXQgb2YgdGhlIEFydGlzdCBhcyBhIFlvdW5nIE1hbiBhbmQgaW4gVWx5c3NlcywgSm95Y2UgdW5zZWxmLWNvbnNjaW91c2x5IGltYnVlcyB0aGUgbmFycmF0aXZlIHN0cnVjdHVyZXMgd2l0aCBmZW1pbmlzdCBkaXNjb3Vyc2UsIHN1YnZlcnRpbmcgcGF0cmlhcmNoYWwgbm9ybXMgd2hpbGUgc2ltdWx0YW5lb3VzbHkgd29ya2luZyBjbGV2ZXJseSB3aXRoaW4gdGhlIHJlc3RyaWN0aW9ucyBvZiBhIGRvbWluYW50IHNvY2lldHkuCgpPbmUgb2YgdGhlIG1ldGhvZHMgYnkgd2hpY2ggSm95Y2UgY2FwaXRhbGl6ZXMgb24gZmVtaW5pc3QgZGlzY291cnNlIGlzIGJ5IGFsbG93aW5nIG1hbGUgY2hhcmFjdGVycyB0byBpZGVudGlmeSBmdWxseSB3aXRoIHRoZWlyIGZlbWFsZSBjb3VudGVycGFydHMuIEluIHNvbWUgb2YgSm95Y2UncyB3b3JrLCB0aGlzIGlkZW50aWZpY2F0aW9uIGlzIHRha2VuIHRvIHN1Y2ggbGVuZ3RocyBhcyB0byBzdWdnZXN0IG1pbmQgbWVsZGluZyBhbmQgYSB0aG9yb3VnaCBkaXNpbnRlZ3JhdGlvbiBvZiBjb25zY2lvdXNuZXNzLiBJbiBVbHlzc2VzLCBmb3IgZXhhbXBsZSwgInRoZSBwdXp6bGluZyBjb25uZWN0aW9uIGJldHdlZW4gU3RlcGhlbiBhbmQgQmxvb20gY2FuIG9ubHkgYmUgcmVzb2x2ZWQgYXQgdGhlIGVuZCBieSBnb2luZyBpbnRvIE1vbGx5J3MgbWluZCwiICg0NTgpLiBCeSBzaGlmdGluZyBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIGdlbmRlcnMsIG9yIG1lcmdpbmcgdGhlbSBhbHRvZ2V0aGVyLCBKb3ljZSBjb21taXRzIGEgcG93ZXJmdWwgYWN0IG9mIGxpdGVyYXJ5IHN1YnZlcnNpb24uIFRoZSBhdXRob3IgcG9ydHJheXMgaWRlYXMgb2YgZ2VuZGVyZWQgcmVhbGl0eSBhcyBiZWluZyBwYXJ0aWN1bGFybHkgcHJvYmxlbWF0aWMsIHJlc3RyaWN0aXZlIHRvIHNwaXJpdHVhbCBhbmQgcHN5Y2hvbG9naWNhbCBpZGVudGl0eSBmb3JtYXRpb24gYW5kIHRvIHRoZSBmb3JtYXRpb24gb2YgbWVhbmluZ2Z1bCBodW1hbiByZWxhdGlvbnNoaXBzLiAiSXQgaXMgaW1wb3J0YW50LCIgU2hlbGRvbiBub3RlcywgInRvIHNlZSBvdXIgaWRlYXMgb2YgYm90aCBnZW5kZXJzIGFzIHBhdGhvbG9naWNhbCBmb3JtYXRpb25zIiBhbmQgInVuaGVhbHRoeSBzb2NpYWwgY29uc3RydWN0aW9ucywiICg0NTgpLiBGb3IgZXhhbXBsZSwgRGVkYWx1cyBpbiBBIFBvcnRyYWl0IG9mIHRoZSBBcnRpc3QgYXMgYSBZb3VuZyBNYW4gcmViZWxzIGFnYWluc3QgdGhlIGNvbmZpbmluZyBpZGVudGl0eSBpbXBvc2VkIHVwb24gaGltIGJ5IGEgQ2F0aG9saWMgdXBicmluZ2luZyBpbiBwYXJ0IGJ5IGV4cGxvcmluZyB0aGUgbWVhbmluZyBvZiBib3RoIG1hbGUgYW5kIGZlbWFsZSBzZXh1YWxpdHkuIENhdGhvbGljaXNtIGFuZCBjb252ZW50aW9uYWwgY29uc2VydmF0aXZlIElyaXNoIHNvY2lldHkgYXJlIHByb2JsZW1zIHRoYXQgbmVlZCByZXNvbHZpbmcgaWYgdGhlIHByb3RhZ29uaXN0IGlzIHRvIGJlY29tZSB3aG9sZS4gSW4gVWx5c2VlcywgTWlsbHkgc2VydmVzIGFzIHRoZSBjb3VudGVycG9pbnQgdG8gb3RoZXJ3aXNlIHJlcHJlc3NlZCBtYWxlIGNoYXJhY3RlcnMuIEluIGJvdGggbm92ZWxzLCBmZW1hbGUgY2hhcmFjdGVycyBhaWQgdGhlIGxpYmVyYXRpb24gb2YgdGhlIG1hbGUuIFN1YnZlcnNpb24gb2YgQ2F0aG9saWNpc20sIGFuZCBlc3BlY2lhbGx5IG9mIHRoZSBDYXRob2xpYyB2aXNpb24gb2YgdGhlIGZlbWFsZSBib2R5IGFuZCBzZXh1YWxpdHksIGFyZSBrZXkgdGhlbWVzIGluIEpveWNlIG5hcnJhdGl2ZXMgbGlrZSBBIFBvcnRyYWl0IG9mIHRoZSBBcnRpc3QgYXMgYSBZb3VuZyBNYW4uICJKb3ljZSdzIGluc2lzdGVuY2Ugb24gYSBzdWdnZXN0aXZlIG92ZXJsYXAgYmV0d2VlbiBDYXRob2xpYyBhbmQgc29jaWFsIHB1cmlzdCBpZGVvbG9naWVzIG9mICd0cnVlIG1hbmxpbmVzcycgaXMgZGVlcGx5IHN1YnZlcnNpdmUsIHNpbmNlIEEgUG9ydHJhaXQgcG9pbnRlZGx5IG9ic2VydmVzIGhvdyBkaWxpZ2VudGx5IHR3byBvc3RlbnNpYmx5IHBvbGFyaXplZCBkaXNjb3Vyc2VzIG11dHVhbGx5IHJlaW5mb3JjZSBlYWNoIG90aGVyIHRvIGludGVuc2lmeSBTdGVwaGVuJ3MgZXhwZXJpZW5jZSBvZiBwYXJhbHlzaXMsIiAoTXVsbGluIDgzKS4KClBvd2VyIGFuZCBwYXRyaWFyY2h5IGFyZSBjZW50cmFsIHRvIGZlbWluaXN0IGRpc2NvdXJzZSwgYXMgdGhleSBhcmUgdG8gSm95Y2UncyBub3ZlbHMuIFRoZSAicGVycGV0dWFsIG1hbGUgY29uZmxpY3QiIGluIEpveWNlJ3Mgd29yayAicmVuZGVycyB0aGUgcG93ZXIgc3lzdGVtIHRoYXQgc3VwcG9ydHMgbWFzY3VsaW5pdHkgdW5iZWFyYWJsZSwgeWV0IGZlbWluaW5pdHkgaXMgYWxzbyB1bnRlbmFibGUgZm9yIHRoZSBwcm90YWdvbmlzdCB3aG8gc3RhcnRzIGFzIGEgbWFsZSwiICg0NTgpLiBXaGF0IEpveWNlIHN1Z2dlc3RzIGlzIGEgcmV3b3JraW5nIG9mIHRyYWRpdGlvbmFsIHNvY2lhbCBzdHJ1Y3R1cmVzOiBhIGNvbmNlcHQgc2VlZGVkIHByZW1hdHVyZWx5LiBBZnRlciBhbGwsIEEgUG9ydHJhaXQgb2YgdGhlIEFydGlzdCBhcyBhIFlvdW5nIE1hbiBhbmQgVWx5c3NlcyBkbyBub3QgdGFrZSBwbGFjZSBpbiBzb21lIGlkZWFsaXplZCBzb2NpZXR5IGJ1dCBpbiBhIGZhaXJseSByZWFsaXN0aWMgb25lIGluIHdoaWNoIHBhdHJpYXJjaHkgaXMgYWxpdmUgYW5kIHdlbGwuIFNldmVyYWwgc2VjdGlvbnMgb2YgYm90aCBub3ZlbHMgYXBwZWFyIHRvIGJlIHVwaG9sZGluZyBwYXRyaWFyY2hhbCBzeXN0ZW1zLCBzdHJ1Y3R1cmVzLCBhbmQgc3RlcmVvdHlwZXMuIFlldCBKb3ljZSBleHBvc2VzIHRoZXNlIHN5c3RlbXMgaW4gb3JkZXIgdG8gc3VidmVydCB0aGVtIHdpdGggc2F0aXJlLiBGb3IgZXhhbXBsZSwgd2hlbiBTdGVwaGVuIERlZGFsdXMgaW4gVWx5c3NlcyByZW1hcmtzLCAiRmVhciBub3QgdGhlbSB0aGF0IHNlbGwgdGhlIGJvZHkgYnV0IGhhdmUgbm90IHBvd2VyIHRvIGJ1eSB0aGUgc291bC4gU2hlIGlzIGEgYmFkIG1lcmNoYW50LiBTaGUgYnV5cyBkZWFyIGFuZCBzZWxscyBjaGVhcCwiIGhlIGlzIG1ha2luZyBhIHBvd2VyZnVsIGNvbW1lbnQgYWJvdXQgdGhlIGR5bmFtaWNzIG9mIHByb3N0aXR1dGlvbiAoQm9vayAzKS4KClRoZSBmZW1pbmlzbSBlbWJlZGRlZCBpbiBKb3ljZWFuIG5hcnJhdGl2ZSBpcyBzdWJ0bGUgYW5kIHN1YnZlcnNpdmUsIHJhdGhlciB0aGFuIG92ZXJ0IGFuZCBvYnZpb3VzLiBKb2huc29uIGFza3MsICJXaGVyZSBpbiBoaXMgd29yayBpcyB0aGVyZSBhIHNpbmdsZSBleGFtcGxlIG9mIGFuIGluZGVwZW5kZW50LCBzdWNjZXNzZnVsLCBoYXBwaWx5IGZ1bGZpbGxlZCB3b21hbiBjaGFyYWN0ZXI/IiAoMSkuIFRoZSBub24tZXhpc3RlbmNlIG9mIGEgc3VjY2Vzc2Z1bCwgaW5kZXBlbmRlbnQsIGhhcHBpbHkgZnVsZmlsbGVkIHdvbWFuIGNoYXJhY3RlciBtYXkgaW5kZWVkIGJlIHRoZSBoYWxsbWFyayBvZiBKb3ljZSdzIGZlbWluaXNtLCBhcyB0aGUgYXV0aG9yIGNvbW1lbnRzIG9uIHRoZSBsYWNrIG9mIGhlYWx0aHkgcm9sZXMgZm9yIGVpdGhlciBnZW5kZXIgaW4gdGhlIGNvbnZlbnRpb25hbCBwYXRyaWFyY2hhbCBzdHJ1Y3R1cmUuIFdvbWVuIGNoYXJhY3RlcnMgYXJlIHN1cHByZXNzZWQgYW5kIG9wcHJlc3NlZCwgYXMgdGhleSBhcmUgaW4gdGhlIGhpc3RvcmljYWwgY29udGV4dCBpbiB3aGljaCBKb3ljZSB3cml0ZXMuIEpveWNlJ3MgZmVtYWxlIGNoYXJhY3RlcnMgd291bGQgYmUgZmFuY2lmdWwgYW5kIGZhbHNlIGlmIHRoZXkgd2VyZSBwbGFjZWQgaW4gYXJ0aWZpY2lhbCBwb3NpdGlvbnMgb2YgcG93ZXIuIEluc3RlYWQgb2YgdHJlYWRpbmcgZG93biB1bnJlYWxpc3RpYyB3YXRlcnMsIEpveWNlIG9wdHMgZm9yIGEgbW9yZSByZWFsaXN0aWMgcG9ydHJheWFsIG9mIHRoZSByb2xlIG9mIHdvbWVuIGluIG1vZGVybiBzb2NpZXR5LiBXb21lbiB3ZXJlIHBlcmNlaXZlZCBhcyBhbmNpbGxhcnksIHN1cHBvcnRpdmUgY2hhcmFjdGVycyBhbmQgdGhleSBmdWxmaWxsIHRoYXQgcm9sZSBpbiBKb3ljZSdzIG5hcnJhdGl2ZXMuIE1vbGx5IGluIFVseXNzZXMgZG9lcywgaG93ZXZlciwgcGxheSBhIGNlbnRyYWwgcm9sZSBpbiBwcm9tb3RpbmcgY2hhcmFjdGVyIGFuZCB0aGVtZSBkZXZlbG9wbWVudC4KClRoZSBDYXRob2xpYyBDaHVyY2ggZXBpdG9taXplcyBhbmQgc3ltYm9saXplcyBwYXRyaWFyY2h5IGluIEpveWNlJ3Mgd29yaywgZXNwZWNpYWxseSBpbiBBIFBvcnRyYWl0IG9mIHRoZSBBcnRpc3QgYXMgYSBZb3VuZyBNYW4uIE1vcmVvdmVyLCB0aGUgQ2F0aG9saWMgQ2h1cmNoIGxpdGVyYWxseSBwZXJwZXR1YXRlcyBvdXRtb2RlZCBnZW5kZXIgcm9sZXMgYW5kIG5vcm1zIHRoYXQgcmVzdHJpY3QgYm90aCBtZW4gYW5kIHdvbWVuLiBTdGVwaGVuIERlZGFsdXMgaXMgYXMgbXVjaCBhIHByb2R1Y3Qgb2YgcGF0cmlhcmNoYWwgc29jaWV0eSBhcyBhbnkgZmVtYWxlIGNoYXJhY3RlciBpbiBhIEpveWNlIG5vdmVsLiAiSm95Y2UgcHJlc2VudHMgdGhlIHlvdW5nIFN0ZXBoZW4gYXMgYW4gaW50aW1pZGF0ZWQgYW5kIG92ZXJ3aGVsbWVkIHZpY3RpbSBvZiBjb250ZW1wb3JhcnkgYXR0ZW1wdHMgdG8gcHJvbW90ZSAndHJ1ZSBtYW5saW5lc3MnLCBhdHRlbXB0cyByZWluZm9yY2luZyBhbmQgb2Z0ZW4gZWxhYm9yYXRpbmcgdXBvbiB0aGUgaW5qdW5jdGlvbnMgb2YgdGhlIENhdGhvbGljIENodXJjaCwiIChNdWxsaW4gODUpLiBUcnVlIG1hbmxpbmVzcyBpcyBhbiBlbWVyZ2luZyBidXQgY292ZXJ0IHRoZW1lIGluIEpveWNlIG5hcnJhdGl2ZXMuIEluIGZhY3QsIEpveWNlJ3MgbGFjayBvZiBmb3JtYWwgZGVmaW5pdGlvbiBmb3IgbWFzY3VsaW5pdHkgb3IgbWFubGluZXNzIHVuZGVyc2NvcmVzIHRoZSBmdXRpbGl0eSBvZiBnZW5kZXIgY2F0ZWdvcmllcy4KClNleHVhbCBzZWxmLXJlc3RyYWludCBhbmQgYXJ0aWZpY2lhbCBub3Rpb25zIG9mIHNleHVhbCBwdXJpdHkgYXJlIGFsc28gaGFsbG1hcmtzIG9mIENhdGhvbGljIGRvY3RyaW5lLCB3aGljaCBKb3ljZSBleHBhbmRzIHVwb24gaW4gYm90aCBBIFBvcnRyYWl0IG9mIHRoZSBBcnRpc3QgYXMgYSBZb3VuZyBNYW4gYW5kIGluIFVseXNzZXMuIFRoZSBDaHVyY2gncyBhZG1vbmlzaG1lbnRzIGFnYWluc3Qgc2V4dWFsaXR5IHNlZW0gdW5pcXVlbHkgZGlyZWN0ZWQgYXQgdGhlIGZlbWFsZSBib2R5LCBlc3BlY2lhbGx5IGdpdmVuIEJpYmxpY2FsIHBvcnRyYXlhbHMgb2Ygd29tZW4gc2luY2UgRXZlIGluIHRoZSBHYXJkZW4gb2YgRWRlbi4gTnVucyBpbiBBIFBvcnRyYWl0IG9mIHRoZSBBcnRpc3QgYXMgYSBZb3VuZyBNYW4gYXJlIGdvaW5nIGNyYXp5LCBsaWtlbHkgZHVlIHRvIHRoZWlyIHNleHVhbCByZXByZXNzaW9uOiBzdWNoIGFzIHRoZSAibWFkIG51biBzY3JlZWNoaW5nIGluIHRoZSBudW5zJyBtYWRob3VzZSBiZXlvbmQgdGhlIHdhbGwsIiAoQ2hhcHRlciA1KS4gSW4gVWx5c3NlcywgTW9sbHkgbGliZXJhdGVzIGhlcnNlbGYgc2V4dWFsbHkgYW5kIGhlciBpbnRyb3NwZWN0aXZlIG1vbm9sb2d1ZSBhdCB0aGUgY2xvc2Ugb2YgdGhlIG5vdmVsIGlzIGZpbGxlZCB3aXRoIHNleHVhbCBpbWFnZXJ5IHRoYXQgaW5kaWNhdGVzIGZlbWFsZSBlbXBvd2VybWVudC4gRmluaXNoaW5nIHdpdGggdGhlIGVwaXNvZGUgb2YgTW9sbHkncyBzZXh1YWwgYXdha2VuaW5nIGFsbG93cyBKb3ljZSB0byBjZW1lbnQgZmVtaW5pc3QgdGhlbWVzIGluIFVseXNzZXMuCgpTdGVwaGVuIERlZGFsdXMgaW4gQSBQb3J0cmFpdCBvZiB0aGUgQXJ0aXN0IG9mIGEgWW91bmcgTWFuIGxlYXJucyBmaXJzdCBieSBiZWNvbWluZyBhIHByaWVzdCBhbmQgbGF0ZXIgYnkgcmVqZWN0aW5nIHRoYXQgY2FsbGluZyB0aGF0IGhlYWx0aHkgc2V4dWFsIGlkZW50aXR5IGFuZCBDYXRob2xpY2lzbSBjYW5ub3QgZ28gaGFuZC1pbi1oYW5kLiBJdCBpcyBhY3R1YWxseSB0aHJvdWdoIHRoZSBzcGlyaXR1YWwgbG92ZSBmb3IgYSBmZW1hbGUgdGhhdCBEZWRhbHVzIGNvbWVzIHRvIHRoZSByZWFsaXphdGlvbiB0aGF0IHRoZSBDaHVyY2ggY2FuIG5ldmVyIGVuY29tcGFzcyB0aGUgd2hvbGUgb2YgcmVhbGl0eSBieSBzaHVubmluZyB0aGUgYm9keS4gVW5saWtlIHRoZSBCaWJsaWNhbCBzdG9yeSBvZiBHZW5lc2lzIGluIHdoaWNoIHdvbWFuIHByb3ZlcyB0byBiZSB0aGUgc3Bpcml0dWFsIGRvd25mYWxsIG9mIG1hbiwgaW4gQSBQb3J0cmFpdCBvZiB0aGUgQXJ0aXN0IGFzIGEgWW91bmcgTWFuLCB3b21hbiBwcm92ZXMgdG8gYmUgdGhlIHNwaXJpdHVhbCBsaWJlcmF0aW9uIG9mIGEgbWFuLiBBZnRlciBEZWRhbHVzJ3MgcmVhbGl6YXRpb24gb2YgdGhlIHRydXRoIG9mIGhpcyBvd24gc2V4dWFsIGlkZW50aXR5LCBoaXMgam91cm5leSBvZiBwZXJzb25hbCBhbmQgY3JlYXRpdmUgZnVsZmlsbG1lbnQgY2FuIGJlZ2luIGluIGVhcm5lc3QuIFlldCBzZXh1YWwgcmVwcmVzc2lvbiBpcyBub3Qgc29sZWx5IHRoZSBkb21haW4gb2YgdGhlIGZlbWFsZSBib2R5LiBKb3ljZSBhbHNvIHBpZXJjZXMgdGhyb3VnaCByZXByZXNzZWQgcHVyaXRhbiBub3Rpb25zIHJlbGF0ZWQgdG8gdGhlIG1hbGUgYm9keSBpbmNsdWRpbmcgbWFzdHVyYmF0aW9uLiBNYXN0dXJiYXRpb24gc3ltYm9saXplcyBjb250cm9sIG92ZXIgdGhlIGJvZHksIHdyZXN0aW5nIGl0IGZyb20gdGhlIENodXJjaCBhbmQgYSByZXByZXNzZWQgc29jaWV0eS4gQXMgTXVsbGluIHBvaW50cyBvdXQsIGV4Y2Vzc2l2ZSBzdXJ2ZWlsbGFuY2Ugb2YgdGhlIHNjaG9vbCBjaGlsZHJlbiBpbiBBIFBvcnRyYWl0IG9mIHRoZSBBcnRpc3QgYXMgYSBZb3VuZyBNYW4gcmV2ZWFscyB0aGUgd2F5cyBpbiB3aGljaCBib3RoIG1hc2N1bGluaXR5IGFuZCBmZW1pbmluaXR5IGFyZSBkb21haW5zIG9mIHNvY2lhbCBjb250cm9sLiBJdCBpcyBub3QganVzdCBmZW1hbGUgc2V4dWFsaXR5IHRoYXQgaXMgc3RpZ21hdGl6ZWQgYW5kIHJlcHJlc3NlZCBidXQgYWxzbyBtYWxlIHNleHVhbGl0eS4gQXMgYSBwb2lnbmFudCBmb3JtIG9mIHBlcnNvbmFsIHBvd2VyLCBzZXh1YWxpdHkgaXMgdGhlIGtleSB0byBzdWJ2ZXJzaW9uIGluIEpveWNlJ3MgZmljdGlvbiAtLSBzb2NpYWwgYW5kIHNleHVhbCBhcyB3ZWxsIGFzIHBvbGl0aWNhbCBzdWJ2ZXJzaW9uLgoKQWNjb3JkaW5nIHRvIEJyaXZpYywgIkpveWNlIHNhdyBpbXBlcmlhbGlzbSBhcyBhIHBvd2VyZnVsIGZ1bmRhbWVudGFsIG1vZGVsIGZvciBtYW55IHN5c3RlbXMgb2YgY29udHJvbCwiICg0NjApLiBHZW5kZXJlZCBpZGVudGl0eSBhbmQgc2V4dWFsIGlkZW50aXR5IGFyZSBwc3ljaG9sb2dpY2FsIGZvcm1zIG9mIGltcGVyaWFsaXNtLCB0aGUgcHN5Y2hpYyBjb3VudGVycGFydHMgb2YgaW1wZXJpYWwgZG9taW5pb24gc3VjaCBhcyB3aGljaCBpcyBpbXBvc2VkIGJ5IHRoZSBCcml0aXNoLiBUaGUgQnJpdGlzaCBjb2xvbml6YXRpb24gb2YgSXJlbGFuZCBwYXJhbGxlbHMgdGhlIG1hbGUgY29sb25pemF0aW9uIG9mIHRoZSBmZW1hbGUsIGFuZCBKb3ljZSByZWJlbHMgYWdhaW5zdCBib3RoLiBQcmlkZSBpbiB0aGUgbW90aGVybGFuZCBlbWVyZ2VzIGluIFVseXNzZXMsIGZvciBleGFtcGxlLCBpbiBzZWN0aW9uIDM6ICJIaXMgYWR2aWNlIHRvIGV2ZXJ5IElyaXNobWFuIHdhczogc3RheSBpbiB0aGUgbGFuZCBvZiB5b3VyIGJpcnRoIGFuZCB3b3JrIGZvciBJcmVsYW5kIGFuZCBsaXZlIGZvciBJcmVsYW5kLiBJcmVsYW5kLCBQYXJuZWxsIHNhaWQsIGNvdWxkIG5vdCBzcGFyZSBhIHNpbmdsZSBvbmUgb2YgaGVyIHNvbnMuIiBMaWtld2lzZSwgQmxvb20gZGlzY3Vzc2VzIGhhdmluZyAiYSBjZXJ0YWluIGtpbmQgb2YgYWRtaXJhdGlvbiBmb3IgYSBtYW4gd2hvIGhhZCBhY3R1YWxseSBicmFuZGlzaGVkIGEga25pZmUsIGNvbGQgc3RlZWwsIHdpdGggdGhlIGNvdXJhZ2Ugb2YgaGlzIHBvbGl0aWNhbCBjb252aWN0aW9ucywiIChCb29rIDMpLiBQb2xpdGljYWwgZXF1YWxpdHkgYXMgYW4gYXNwZWN0IG9mIGZlbWluaXNtIGluIEpveWNlJ3Mgd29yayBpcyBldmlkZW50IGFsc28gaW4gQSBQb3J0cmFpdCBvZiB0aGUgQXJ0aXN0IGFzIGEgWW91bmcgTWFuLiBJbiBDaGFwdGVyIDUsIGEgbWFuIG9uIHRoZSBzdHJlZXQgdGFsa3MgcG9saXRpY3MgYW5kIHN0YXRlcywgIkknbSBhIGRlbW9jcmF0IGFuZCBJICdJbCB3b3JrIGFuZCBhY3QgZm9yIHNvY2lhbCBsaWJlcnR5IGFuZCBlcXVhbGl0eSBhbW9uZyBhbGwgY2xhc3NlcyBhbmQgc2V4ZXMgaW4gdGhlIFVuaXRlZCBTdGF0ZXMgb2YgdGhlIEV1cm9wZSBvZiB0aGUgZnV0dXJlLiIKCklzc3VlcyByZWxhdGVkIHRvIHNvY2lhbCBjb250cm9sIGFuZCBwb2xpdGljYWwgcG93ZXIgYXJlIGNlbnRyYWwgdG8gZmVtaW5pc3QgZGlzY291cnNlLCBhbmQgYWxzbyB0byBKb3ljZSBmaWN0aW9uLiBUaGUgcGVyc29uYWwgaXMgdGhlIHBvbGl0aWNhbCwgYW5kIHRoZSBwb2xpdGljYWwgaXMgdGhlIHBlcnNvbmFsLiBNb3N0IG9mIHRoZSB0aW1lLCB0aGVtZXMgb2YgcG93ZXIgYXJlIHN1YnRseSBjcmFmdGVkOiB0aGUgd2F5cyB0aGUgQ2h1cmNoIGNvbnRyb2xzJiM4MjMwOw== QXJ0IFNwaWVnZWxtYW4ncyBNYXVz QXJ0IFNwaWVnZWxtYW4ncyBNYXVz MQ== ODk0ODE5NzE= NA== Ng== MjEzNTE4Mw== NTMwNDY5NQ== MTEwNzk= NTY= Q29sbGVnZSBKdW5pb3IgKDNyZCB5ZWFyKQ== bi9h TXl0aG9sb2d5 TXl0aG9sb2d5IC8gRm9sa2xvcmUgLyBTY2llbmNlIEZpY3Rpb24= VGVybSBQYXBlcg== MQ== MjE1MzExMw== MTkwMw== MTQxNjk3ODM5OA== MQ== TWF1cwoKVXNpbmcgYW5pbWFscyBhcyBwcm94eSBwZW9wbGUgaW4gZ3JhcGhpYyBub3ZlbHMgYW5kIGNvbWljcyBpcyBub3RoaW5nIG5ldy4gVXNpbmcgYW5pbWFscyB0byByZXByZXNlbnQgcGVvcGxlIGluIGEgaG9sb2NhdXN0IG1lbW9pciBpcywgaG93ZXZlciwgaGFzIG5vIHByZWNlZGVudCBwcmlvciB0byBBcnQgU3BpZWdlbG1hbidzIE1hdXMuIFRoZSBjaG9pY2Ugb2YgZ2VucmUgcmVmbGVjdHMgU3BpZWdlbG1hbidzIHNlbGVjdGlvbiBvZiB0aGUgbWVkaWEgaGUgZGVlbWVkIG1vc3QgYXBwcm9wcmlhdGUgZm9yIGNhcHR1cmluZyBoaXMgZmF0aGVyJ3Mgc3RvcnksIGFzIHdlbGwgYXMgdGhlIGNvbGxlY3RpdmUgc3Rvcnkgb2YgdGhlIEpld3MgZHVyaW5nIGFuZCBhZnRlciB0aGUgSG9sb2NhdXN0LiBVc2luZyB0aGUgZ3JhcGhpYyBub3ZlbCBhcyBhIG1lZGl1bSBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHRoYXQgU3BpZWdlbWFuIGJlbGlldmVzIGl0IHRvIGJlIHRoZSBvbmx5IHZhbGlkIGdlbnJlIGZvciBtZW1vcmlhbGl6aW5nLiBSYXRoZXIsIGl0IGlzIHRoZSBtb3N0IGFwcHJvcHJpYXRlIGFydCBmb3JtIGZvciB0ZWxsaW5nIFNwaWVnZWxtYW4ncyBzdG9yeS4gVGhlIGdlbnJlIGFsbG93cyBmb3IgdW5saW1pdGVkIGZsZXhpYmlsaXR5IGluIGRlcGljdGluZyBjaGFyYWN0ZXJzIGFuZCBldmVudHMuIE1vc3QgaW1wb3J0YW50bHkgd2l0aCBNYXVzLCB0aGUgZ3JhcGhpYyBub3ZlbCBhbGxvd3MgZm9yIHRoZSB1c2Ugb2YgbWFza3MuIEluIHRoaXMgY2FzZSwgdGhlIG1hc2sgaXMgdGhhdCBvZiB0aGUgYW5pbWFsIHByb3h5LiBVc2luZyB0aGUgYW5pbWFsIG1hc2ssIFNwaWVnZWxtYW4gYWNjb21wbGlzaGVzIHNldmVyYWwgZ29hbHMgdGhhdCBtaWdodCBoYXZlIGJlZW4gdW5hdHRhaW5hYmxlIHdpdGhvdXQgdGhpcyB0cm9wZS4gVGhlIG1hc2sgb2YgdGhlIGFuaW1hbCBjcmVhdGVzIG5lY2Vzc2FyeSBlbW90aW9uYWwgYW5kIGV4aXN0ZW50aWFsIGRpc3RhbmNlIGJldHdlZW4gc2V2ZXJhbCBiaW5hcmllcywgaW5jbHVkaW5nIHRoYXQgYmV0d2VlbiB0aGUgcmVhZGVyIGFuZCB0aGUgYXV0aG9yLCBidXQgYWxzbyBiZXR3ZWVuIHRoZSBub24tc3Vydml2b3IgYW5kIHRoZSBzdXJ2aXZvci4gU2Vjb25kLCB0aGUgbWFzayBvZiB0aGUgYW5pbWFsIGFsbG93cyB0aGUgZ3JhcGhpYyBub3ZlbCB0byBiZWNvbWUgZWxldmF0ZWQgdG8gdGhlIGxldmVsIG9mIGhpZ2ggYXJ0LCBhcyBpdCBjb25uZWN0cyB0aGUgZ2VucmUgdG8gYW5jaWVudCBHcmVlayB0aGVhdGVyLCBCYWxpbmVzZSBkYW5jZSwgYW5kIG90aGVyIG1hc2stZGVwZW5kZW50IGFuZCBjdWx0dXJhbGx5IHJpY2ggYXJ0IGZvcm1zIChCYWV0ZW5zKS4gVGhpcmQsIHRoZSBhbmltYWwgdHJvcGUgYWxsb3dzIHRoZSBleHBsb3JhdGlvbiBvZiBpbmNvbXByZWhlbnNpYmxlIHRydXRocyBhbmQgaW5kaWdlc3RpYmxlIHRyYXVtYS4gVGhlIGFuaW1hbCBtYXNrIGZ1bmN0aW9ucyBhcyBibGFjayBodW1vciwgd2hpY2ggaXMgYSBwb3RlbnQgeWV0IGNvbnRyb3ZlcnNpYWwgdGhyZWFkIGluIFNwaWVnZWxtYW4ncyB3b3JrLiBGaW5hbGx5LCB0aGUgYW5pbWFsIHRyb3BlIHJhaXNlcyBpbXBvcnRhbnQgYW5kIHJlbGV2YW50IHF1ZXN0aW9ucyBhYm91dCB0aGUgbmF0dXJlIG9mIHBlcnNvbmFsIGlkZW50aXR5LCBjb2xsZWN0aXZlIGlkZW50aXR5LCBhbmQgdGhlIGF1dGhlbnRpY2l0eSBvZiBlYWNoIG9mIHRoZW0uCgpNYXVzIGFuZCBNYXVzIElJIGFyZSBncmFwaGljIG5vdmVscyBwdWJsaXNoZWQgaW4gdGhlIGVhcmx5IDE5OTBzLiBUaGUgcHJlZGVjZXNzb3IgdG8gdGhlIGdyYXBoaWMgbm92ZWwgd2FzIFNwaWVnZWxtYW4ncyBicmllZiBjb21pYywgIk1hdXMsIiB3aGljaCBoZSBwdWJsaXNoZWQgaW4gMTk3Mi4gVGhlIGdyYXBoaWMgbm92ZWwgcmVwcmVzZW50cyB0aGUgc2VsZi1jb25zY2lvdXMgbWV0YW5hcnJhdGl2ZSB0aGF0IGVuc3VlcyBhcyBTcGllZ2VsbWFuIGJ1aWxkcyB1cG9uIHRoZSBjb3JlIHRoZW1lcyBpbiB0aGUgIk1hdXMiIHN0cmlwLCBpbnRlcnZpZXdzIGhpcyBmYXRoZXIgZXh0ZW5zaXZlbHksIGFuZCBkb2N1bWVudHMgdGhlIHJlc3VsdHMgb2YgdGhhdCBpbnRlcnZpZXcgaW4gdGhlIGZvcm0gb2YgYSBncmFwaGljIG5vdmVsLiBNYXVzIGVhcm5lZCBTcGllZ2VsbWFuIHRoZSBQdWxpdHplciBQcml6ZSBpbiAxOTkyLiBTcGllZ2VsbWFuJ3Mgd29yayBkaWQgbm90IGVzY2FwZSB0aGUgZXllIG9mIHNvY2lhbCBjcml0aWNzLCB3aG8gaGF2ZSBmZWx0IHRoYXQgaW4gdXNpbmcgdGhlIGdyYXBoaWMgbm92ZWwgYXMgdGhlIG1lZGl1bSBvZiBtZW1vcmlhbGl6YXRpb24sIHRoZSBoaXN0b3J5IG9mIHRoZSBIb2xvY2F1c3QgaXMgdHJpdmlhbGl6ZWQgYW5kIGNvbW1lcmNpYWxpemVkIChLb2hsaSkuCgpBbiBhc3R1dGUgYW5hbHlzaXMgb2YgTWF1cyBmcm9tIHRoZSBwZXJzcGVjdGl2ZSBvZiBncmFwaGljIG5vdmVsLXNwZWNpZmljIGxpdGVyYXJ5IGNyaXRpY2lzbSBoYXMgYmVlbiBvZmZlcmVkIGJ5IEdlbmUgS2FubmVuYmVyZywgYXMgcGFydCBvZiBCYWV0ZW4ncyBjb2xsZWN0aW9uIG9mIGVzc2F5cyBpbiBUaGUgR3JhcGhpYyBOb3ZlbC4gVW5saWtlIG90aGVyIGFuYWx5c2VzIG9mIE1hdXMsIEthbm5lbmJlcmcgZm9jdXNlcyBzcGVjaWZpY2FsbHkgb24gdGhlIHVzZSBvZiB0aGUgbWFzaywgYW5kIHRoZSBzeW1ib2xpc20gaXQgZW50YWlscy4gS2FubmVuYmVyZyB1c2VzIHRoZSBtYXNrIG1vdGlmIGFzIGEgc3ByaW5nYm9hcmQgZm9yIGRpc2N1c3NpbmcgY2VudHJhbCB0aGVtZXMgaW4gTWF1cywgdG9vLCBzdWNoIGFzIGlkZW50aXR5LiBLYW5uZW5iZXJnIGNsYWltcyB0aGF0IHdoaWxlIHRoZSBhbmltYWwgdHJvcGUgaXMgY29tbW9ucGxhY2UgaW4gdGhlIGdyYXBoaWMgbm92ZWwgZ2VucmUsIGl0IHNlcnZlcyBhIHNwZWNpYWwgZnVuY3Rpb24gaW4gTWF1cyBhcyBpdCBsaW5rcyBmYXRoZXIgYW5kIHNvbiwgaW5zaWRlciBhbmQgb3V0c2lkZXIsIHBhc3QsIHByZXNlbnQsIGFuZCBmdXR1cmUuCgpXaGlsZSBLYW5uZW5iZXJnJ3MgYXNzZXNzbWVudCBvZiB0aGUgbWFzayBtb3RpZiBpbiBNYXVzIGlzIHNraWxsZnVsLCBpdCBmYWxscyBzaG9ydCBvZiBvZmZlcmluZyBhIHN5c3RlbWF0aWMgZXhwbGFuYXRpb24gb2Ygd2hhdCB0aGUgYW5pbWFsIGltYWdlcnkgYWNoaWV2ZXMsIGFuZCB3aHkgU3BpZWdlbG1hbiBkZWRpY2F0ZXMgaGltc2VsZiB0byB0aGUgZ3JhcGhpYyBub3ZlbCBhcyB0aGUgbWVhbnMgYnkgd2hpY2ggdG8gbWFrZSBoaXMgZmF0aGVyJ3MgbWVtb3J5IC0tIGFuZCB0aGUgc2hhcmVkIG1lbW9yeSBvZiBoaXMgcGVvcGxlIC0tIHNhY3Jvc2FuY3QuIEZvciBvbmUsIGFuaW1hbCBpbWFnZXJ5IGFjY29tcGxpc2hlcyBzb21ldGhpbmcgdGhhdCBtb3N0IGRvY3VtZW50YXJ5IG1lbW9pcnMgY2Fubm90IHByb3ZpZGUsIHdoaWNoIGlzIHRoZSBhZG1pc3Npb24gb2YgcHN5Y2hvbG9naWNhbCwgZW1vdGlvbmFsLCBhbmQgZXhpc3RlbnRpYWwgZGlzdGFuY2UgZnJvbSB0aGUgdHJhdW1hdGljIGV2ZW50LiBLYW5uZW5iZXJnIGRvZXMgZGlzY3VzcyB0aGUgaXNzdWUgb2YgZGlzdGFuY2UgY3JlYXRpb24gd2hlbiBoZSByZWZlcnMgdG8gU3BpZWdlbG1hbidzIHVuaXF1ZSBhcHByb2FjaCB0byBNYXVzIElJLCBpbiB3aGljaCBBcnQgZHJhd3MgaGltc2VsZiBkcmF3aW5nIGhpbXNlbGYuIFZpc3VhbGx5LCBTcGllZ2VsbWFuIGFjaGlldmVzIHRoaXMgYWRkZWQgbGF5ZXIgb2YgZGlzdGFuY2UgYnkgZHJhd2luZyBoaW1zZWxmIGFzIGEgaHVtYW4gd2VhcmluZyBhIG1vdXNlIG1hc2ssIGFzIG9wcG9zZWQgdG8gc2ltcGx5IGJlaW5nIGEgbW91c2UgYXMgaGUgaXMgaW4gTWF1cywgYW5kIGFzIGhpcyBmYXRoZXIgYW5kIG90aGVyIEpld3Mgb2YgaGlzIGZhdGhlcidzIGdlbmVyYXRpb24gZm9yZXZlciByZW1haW4uIFRoZSBleHRyYSBsYXllciBvZiBkaXN0YW5jZSBiZXR3ZWVuIFNwaWVnZWxtYW4gYW5kIGhpcyBmYXRoZXIsIGFuZCBiZXR3ZWVuIFNwaWVnZWxtYW4gYW5kIGhpcyB3b3JrLCBzZW5kcyBhIHBvd2VyZnVsIG1lc3NhZ2UgYWJvdXQgdGhlIGZ1bmN0aW9uIG9mIHRoZSBncmFwaGljIG5vdmVsIGdlbnJlIGFzIGFuIGFwcHJvcHJpYXRlIG1lYW5zIG9mIG1lbW9yaWFsaXppbmcgSG9sb2NhdXN0IHRyYXVtYSwgc29tZXRoaW5nIHRoYXQgS2FubmVuYmVyZyBtaXNzZXMuIFRoZSB1c2Ugb2YgdGhlIG1vdXNlIG1hc2sgaW4gTWF1cyBJSSBhbHNvIHRvdWNoZXMgdXBvbiBhIGNlbnRyYWwgaXNzdWUgZm9yIFNwaWVnZWxtYW4gdGhyb3VnaG91dCBNYXVzLCB3aGljaCBpcyBpZGVudGl0eSBhbmQgaGlzIHJvbGUgaW4gaGlzIGZhbWlseS4gVGhlIG1hc2sgYWxzbyBhbGxvd3MgU3BpZWdlbG1hbiB0byBxdWVzdGlvbiBoaXMgbW90aXZlcyBhbmQgaGlzIGF1dGhlbnRpY2l0eSBhcyBhIHdyaXRlciwgYXJ0aXN0LCBhbmQgZG9jdW1lbnRhcmlhbi4gSGUgc2VydmVzIGluIG11bHRpcGxlIHJvbGVzLCB3aGljaCBpcyB3aHkgdGhlIG1vdXNlIG1hc2sgaXMgYW4gYXBwcm9wcmlhdGUgbWV0aG9kIG9mIHNlbGYtcmVwcmVzZW50YXRpb24uIFRoZXJlIGlzIGFsc28gdGhlIHVzZSBvZiB0aGUgbWFzayBhcyBhIG1lYW5zIG9mIHN0cmVzc2luZyBoaXMgY29udGludWVkIGlkZW50aWZpY2F0aW9uIHdpdGggSmV3aXNobmVzcywgd2hpbGUgcmV0YWluaW5nIGEgY29yZSBpZGVudGl0eSB0aGF0IHRyYW5zY2VuZHMgY3VsdHVyZSBhbmQgZXRobmljaXR5LgoKQWx0aG91Z2ggaGUgbWlzc2VzIHRoZSBvcHBvcnR1bml0eSB0byBleHBsb3JlIHRoZSBpc3N1ZSBvZiBpZGVudGl0eSBmdXJ0aGVyLCBLYW5uZW5iZXJnIGRvZXMgbm90ZSB0aGF0IHRoZSBhZGRlZCBsYXllciBvZiBkaXN0YW5jZSBjcmVhdGVkIGJ5IHRoaXMgbW90aWYgZW5hYmxlcyBTcGllZ2VsbWFuIHRvIGVmZmVjdGl2ZWx5IGZpY3Rpb25hbGl6ZSBoaW1zZWxmICJ0byBkaXN0YW5jZSBoaW1zZWxmIGZyb20gdGhlIG5hcnJhdGl2ZSwiIChLYW5uZW5iZXJnIDg2KS4gVGh1cywgS2FubmVuYmVyZyByZWNvZ25pemVzIHRoZSBwb3dlciBpbiBjcmVhdGluZyBhbmQgbWFpbnRhaW5pbmcgZGlzdGFuY2UuIEFmdGVyIGFsbCwgdGhpcyBpcyBWbGFkZWsncyBzdG9yeSB0b2xkIHRocm91Z2ggQXJ0J3MgZXllcy4gVGhlcmUgaXMgYSBkaXN0YW5jZSBiZXR3ZWVuIHNvbiBhbmQgZmF0aGVyLCBqdXN0IGFzIHRoZXJlIGlzIGRpc3RhbmNlIGJldHdlZW4gYXV0aG9yIGFuZCByZWFkZXIuIEthbm5lbmJlcmcgYWxzbyBwb2ludHMgb3V0IHRoYXQgdGhlIGFkZGl0aW9uYWwgbGF5ZXIgb2YgbWFzayBhbHNvIHByb3ZlcyBTcGllZ2VsbWFuJ3MgImF3YXJlbmVzcyBvZiB0aGUgaW1wb3NzaWJpbGl0eSBvZiBkb2luZyBzbywiIG9yIHRoZSBpbXBvc3NpYmlsaXR5IG9mIGRpc3RhbmNpbmcgaGltc2VsZiBmcm9tIHRoZSBuYXJyYXRpdmUsIiAoS2FubmVuYmVyZyA4NikuIEhlIGNhbm5vdCBiZSBkZXRhY2hlZCBmcm9tIHNvbWV0aGluZyB0aGF0IGlzIHNvIGRlZXBseSBwZXJzb25hbC4gSGUgbWlnaHQgbm90IGhhdmUgYmVlbiB0aGUgc3Vydml2b3IsIGJ1dCBoZSBpcyB0aGUgc29uIG9mIHRoZSBzdXJ2aXZvciBhbmQgdGh1cyB0aGUgaGVpciB0byB0cmF1bWF0aWMgbWVtb3J5LiBUaHVzIE1hdXMgSUkgaXMgYW4gZXhwbG9yYXRpb24gb2YgdGhlIHBhcmFkb3hpY2FsIGRpbGVtbWEgb2YgaGlzIHBvc2l0aW9uLCIgKEthbm5lbmJlcmcgODYpLiBUbyBhIGxlc3NlciBleHRlbnQsIHRoZSBodW1hbiB3aXRoIGEgbW91c2UgbWFzayBzaWduaWZpZXMgQXJ0IGJlaW5nIG9mIHRoZSB5b3VuZ2VyIGdlbmVyYXRpb24gdGhhdCBpcyBhIHN0ZXAgcmVtb3ZlZCBmcm9tIGhpcyBmYXRoZXIncyBzdWZmZXJpbmcuIEhlICJpZGVudGlmaWVzIHdpdGggdGhlIEpld3Mgb2YgdGhlIHBhc3QsIHlldCBoZSBhbHNvIHJlYWxpemVzIHRoYXQgdGltZSBhbmQgY2lyY3Vtc3RhbmNlIGhhdmUgY2hhbmdlZCBoaW0gLS0gYW5kIHRoZSB3b3JsZCAtLSBhcyB3ZWxsLCIgKEthbm5lbmJlcmcgODcpLiBBcyBFbG13b29kIHB1dHMgaXQsIFNwaWVnZWxtYW4gInNlZWtzIHRvIG5hcnJvdyB0aGUgcHN5Y2hvbG9naWNhbCByaWZ0IGJldHdlZW4gaGltc2VsZiBhbmQgZWFjaCBvbmUgb2YgaGlzIGZhbWlseSBtZW1iZXJzLCB3aGV0aGVyIGRlY2Vhc2VkIG9yIHN0aWxsIGFsaXZlLCIgKEVsbXdvb2QgNjkxKS4gVGVtcG9yYWwgZGlzdGFuY2UsIGVtb3Rpb25hbCBkaXN0YW5jZSwgYW5kIGV4aXN0ZW50aWFsIGRpc3RhbmNlIGhhdmUgYWxsIGJlZW4gc3VjY2Vzc2Z1bGx5IGFjaGlldmVkIGluIE1hdXMuCgpUaGUgYW5pbWFsIG1hc2sgZm9ybSBoYXMgYmVjb21lIGEgInRyb3BlIiBpbiB0aGUgZ2VucmUgYmVjYXVzZSBpdCBhbGxvd3MgZm9yIHRoZSBpbmRpcmVjdCBleHBsb3JhdGlvbiBvZiBkaWZmaWN1bHQgc3ViamVjdHMgbGlrZSBtYXNzIG11cmRlciwgcmFjaXNtLCBkZWF0aCwgYW5kIGJldHJheWFsIChLYW5uZW5iZXJnIDgwKS4gQW5pbWFsIGlkZW50aXRpZXMgYWxzbyBwYXJhbGxlbCBodW1hbiBpZGVudGl0eSBjb25zdHJ1Y3Rpb24uIFVzaW5nIHRoZSBjYXQgYW5kIG1vdXNlIG1vdGlmIGlzIGRlbGliZXJhdGU7IFNwaWVnZWxtYW4gY291bGQgaGF2ZSBjaG9zZW4gaGFyZXMgYW5kIGhpcHBvcywgYnV0IGhlIGNvbnNjaW91c2x5IGxpbmtzIGhpcyBncmFwaGljIG5vdmVsIHRvIGNsYXNzaWMgY2F0LWFuZC1tb3VzZSBjYXJ0b29ucyBsaWtlIFRvbSBhbmQgSmVycnksIGFzIHdlbGwgYXMgdGhlIFN5bHZlc3RlciBhbmQgVHdlZXRpZSBzZXJpZXMgaW4gdGhlIFdhcm5lciBCcm90aGVycyBjYXJ0b29uIHNlcmllcy4gSW4gZWFjaCBvZiB0aGVzZSBpbnN0YW5jZXMsIGluY2x1ZGluZyBpbiBNYXVzLCB0aGUgY2F0IGlzIHRoZSByZWxlbnRsZXNzIHByZWRhdG9yIGFuZCBoYXMgYSBjbHVzdGVyIG9mIHVuZGVzaXJhYmxlIHF1YWxpdGllcyBsaWtlIHJ1dGhsZXNzbmVzcyBhbmQgYW4gYWJqZWN0IGRlc2lyZSB0byBraWxsLCBtYWltLCBhbmQgdG9ydHVyZS4gVGhlIG1vdXNlLCBmYXIgZnJvbSBiZWluZyBhIHZpY3RpbSwgYWx3YXlzIG91dHJ1bnMgYW5kIG91dHNtYXJ0cyB0aGUgY2F0LiBJbiB0ZWxldmlzaW9uIGNhcnRvb25zLCBlYWNoIGVwaXNvZGUgZW5kcyBpbiB3aGljaCBib3RoIGNhdCBhbmQgbW91c2Ugc3Vydml2ZSB0aGVpciByZXNwZWN0aXZlIGFkdmVudHVyZXMgYW5kIHRoZXkgd2lsbCByZXR1cm4gYWdhaW4gZm9yIG1vcmUuIFRodXMsIHRoZSBtb3VzZSBjYW4gbmV2ZXIgZGllLiBUaGUgaXJvbnkgb2YgTWF1cyBpcyB0aGF0IHNpeCBtaWxsaW9uIHBlb3BsZSBkaWQgZGllIGJlY2F1c2Ugb2YgdGhlIGNhdC4gU3BpZWdlbG1hbiBtYWtlcyBhIGJyb2FkZXIgc3RhdGVtZW50IGFib3V0IHRoZSBpbW1vcnRhbGl0eSBvZiB0aGUgSmV3aXNoIHNvdWwsIEpld2lzaCBjdWx0dXJlLCBhbmQgSmV3aXNoIHNwaXJpdC4gVGhlcmUgYXJlIGFuZCB3ZXJlIHN1cnZpdm9ycyBvZiB0aGUgSG9sb2NhdXN0IGxpa2UgaGlzIGZhdGhlciwgc2hvd2luZyB0aGF0IHRoZSBtaWNlIGluZGVlZCBkbyBzdXJ2aXZlLiBBcyB3aXRoIGNhcnRvb24gY2hhc2VzIGJldHdlZW4gY2F0IGFuZCBtb3VzZSwgdmlvbGVuY2UgY2FuIGJlIHJlbmRlcmVkIGdyYXBoaWNhbGx5IGFuZCBkZWxpYmVyYXRlbHkgYW5kIHlldCBpbiBhIHdheSB0aGF0IHBlcm1pdHMgY2F0aGFyc2lzLiBMaXZlIGFjdGlvbiBmb290YWdlIGNhbiBuZXZlciBhY2NvbXBsaXNoIHRoaXMgY3JpdGljYWwgZ29hbCBvZiB0aGUgZ3JhcGhpYyBub3ZlbCwgd2hpY2ggcmVsaWVzIG9uIHByb3hpZXMsIG9yIGF2YXRhcnMsIGxpa2UgYW5pbWFscyB0byByZXByZXNlbnQgcGVvcGxlLgoKVGhlICJtYXNrIiBvZiB0aGUgcGVyc29uLCBvciB0aGUgYW5pbWFsIGNoYXJhY3Rlcml6YXRpb24sIGRvZXMgbm90IHNheSB3aG8gdGhlIHBlcnNvbiBpcyBvbiB0aGUgaW5zaWRlIG9yIGFzIGFuIGluZGl2aWR1YWwuIE1hdXMgaXMgYWJvdXQgaW5kaXZpZHVhbCBhbmQgY29sbGVjdGl2ZSBpZGVudGl0aWVzLiBUaGUgYW5pbWFsIGlkZW50aXR5IHN5bWJvbGl6ZXMgY29sbGVjdGl2ZSBiZWxvbmdpbmduZXNzIHdpdGggYSBncm91cCBiYXNlZCBvbiBldGhuaWNpdHkgYW5kIGhpc3RvcmljIGNvbm5lY3Rpb24uIFNwaWVnZWxtYW4gc2hvd3MgdGhhdCBvbmUncyBhbmltYWwgbmF0dXJlIGlzIGltbXV0YWJsZTsgaXQgY2Fubm90IGJlIGNoYW5nZWQuIEJlaW5nIEpld2lzaCBpcyBhbiBlc3NlbnRpYWwgZmVhdHVyZSBvZiBvbmUncyBjaGFyYWN0ZXIgYW5kIHNvdWwuIEhlIGRlcGljdHMgdGhpcyBpbW11dGFiaWxpdHkgb2YgaWRlbnRpdHkgdmlhIGFuaW1hbGl6YXRpb24gb2YgcGVvcGxlLiBWbGFkZWsncyBnaXJsZnJpZW5kIGNhbm5vdCBoaWRlIGhlciB0YWlsLCBzeW1ib2xpYyBvZiBoZXIgaW5hYmlsaXR5IHRvICJoaWRlIiBoZXIgSmV3aXNobmVzcyBhbmQgInBhc3MiIGZvciBiZWluZyBQb2xpc2guIE90aGVyIEpld3MgY2FuICJwYXNzIiBmb3IgYmVpbmcgUG9saXNoIGJ1dCBvbmx5IGFmdGVyIGRvbm5pbmcgcGlnIG1hc2tzLiBUaGUgdmlld2VyIGNhbiBzZWUgdGhhdCBiZW5lYXRoIHRoZSBtYXNrLCB0aGVyZSBpcyBhIG1vdXNlLiBLYW5uZW5iZXJnIGFsc28gcG9pbnRzIG91dCB0aGF0IFNwaWVnZWxtYW4gZXhwbG9yZXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgaWRlbnRpdGllcyBhc2NyaWJlZCB0byB0aGUgaW5kaXZpZHVhbCwgYW5kIHRoZSBpZGVudGl0aWVzIHRoYXQgdGhlIGluZGl2aWR1YWwgaGltc2VsZiBkZXNpcmVzIG9yIGNyZWF0ZXMuIFdoZXJlYXMgbW9zdCBtaWNlIGFyZSBzaW1wbHkgbWljZSBib3RoIGluc2lkZSBhbmQgb3V0LCB0aGVyZSBpcyB0aGUgb25lIG1vdXNlIHdobyBpcyBub3QgcmVhbGx5IGEgbW91c2U6IHRoZSBHZXJtYW4gbWFuIHdobyBtYXkgaGF2ZSBiZWVuIG1pc3Rha2VuIGZvciBhIEpldyBhbmQgd2hvIHdhcyBzZW50IHRvIHRoZSBjYW1wcy4gU3BpZWdlbG1hbiBkZXBpY3RzIGhpbSBhcyBhIG1hbiB3ZWFyaW5nIGEgbW91c2UgbWFzaywgd2hpY2ggaXMgb25lIG9mIHRoZSBvbmx5IGluc3RhbmNlcyBpbiB0aGUgZ3JhcGhpYyBub3ZlbCBvZiB0aGlzIG9jY3VycmluZy4gQmVuZWF0aCB0aGUgbWFzaywgdGhlIG1hbiBpcyBvZiB1bmtub3duIGlkZW50aXR5LiBUaGUgY291bnRlcnBhcnQgdG8gdGhpcyBvZiBjb3Vyc2UgaXMgdGhlIGV4aXN0ZW5jZSBvZiBjb21wbGljaXQgSmV3cyB3aG8gd29yayB3aXRoJiM4MjMwOw== SG9ja2V5IFN3ZWF0ZXIgLSBDaGlsZHJlbidzIExpdGVyYXR1cmU= SG9ja2V5IFN3ZWF0ZXIgLSBDaGlsZHJlbidzIExpdGVyYXR1cmU= MQ== ODQ3NjI4OTE= OA== QTEwNTQzNTU= OTA2MjIzMA== MjEwOTA= MjE= Q29sbGVnZSBTZW5pb3IgKDR0aCB5ZWFyKQ== bi9h Q2hpbGRyZW4= Q2hpbGQgRGV2ZWxvcG1lbnQgLyBZb3V0aCAvIFRlZW5z VGVybSBQYXBlcg== MQ== MTc1OTIx MjQ5MQ== MTA5MDA5MDgwMA== IEl0IG1lYW5zIHRoYXQgbG95YWx0eSB0byB0aGUgUGFja2VycyBmb3IgYSBraWQgaW4gR3JlZW4gQmF5LCBXaXNjb25zaW4sIGlzIGEgbm8tYnJhaW5lcjsgbm8ga2lkIGluIGhpcyByaWdodCBtaW5kIGluIEdyZWVuIEJheSB3b3VsZCBnbyB0byBzY2hvb2wgd2l0aCBhIENoaWNhZ28gQmVhcnMnIHN3ZWF0c2hpcnQgb247IGl0IHdvdWxkIHJ1aW4gaGltIGZvcmV2ZXI7IGhlIHdvdWxkIGJlIG1vcmUgdGhhbiB0aGUgYnV0dCBvZiBqb2tlcywgaGUgd291bGQgYmUgZmllcmNlbHkgYW5kIG1lcmNpbGVzc2x5IGhhcmFzc2VkIGZvcmV2ZXIuCgpLaWRzJyBsb3lhbHRpZXMgZ28gZGVlcGVyIHRoYW4gdGhlaXIgcGFyZW50cywgaW4gbWFueSBjYXNlcy4gU28sIHRoaXMgbGVzc29uIG5lZWRzIHRvIGJlIGxlYXJuZWQuIEluIHRoZSBpbnN0YW5jZSBvZiB0aGUgc3RvcnksIG1vbSBzaG91bGQgaGF2ZSBqdXN0IHF1aWNrbHkgc2VudCB0aGUgc3dlYXRlciBiYWNrIHRvIE1vbnNpZXVyIEVhdG9uLCBhc2tpbmcgaGltIHRvIHJlcGxhY2UgaXQgd2l0aCBhIENhbmFkaWFuIHN3ZWF0ZXIuCgpBbmQgbW9tIG5lZWRlZCB0byBsZWFybiBhIHZhbHVhYmxlIGxlc3NvbiwgaW5zdGVhZCBvZiB1dHRlcmluZyB0aGVzZSByZW1hcmtzOiAiWW91IGFyZW4ndCBNYXVyaWNlIFJpY2hhcmQuIEFueXdheSwgaXQgaXNuJ3Qgd2hhdCdzIG9uIHlvdXIgYmFjayB0aGF0IGNvdW50cywgaXQncyB3aGF0IHlvdSd2ZSBnb3QgaW5zaWRlIHlvdXIgaGVhZC4iIFdoYXQgbW9tIG5lZWRlZCB0byBsZWFybiBmcm9tIGFsbCB0aGlzLCBpcyB0aGF0IGhlciBzb24gaGFzIHBsZW50eSBpbnNpZGUgaGlzIGhlYWQgYWxyZWFkeS4gQW5kIHdoYXQgaGVyIHNvbiBoYXMgaW5zaWRlIGhpcyBoZWFkIGlzIGEgY2hpbGQncyB3b3JsZCBmdWxsIG9mIGRyZWFtcyBhbmQgbG95YWx0aWVzIGFuZCBmbGlnaHRzIG9mIGZhbmN5LiBUaGF0LCB0byBhIGtpZCwgaXMgdGhlIHdvcmxkIGFzIGl0IHNob3VsZCBiZSwgYW5kIHdlYXJpbmcgYSBNYXVyaWNlIFJpY2hhcmQgc3dlYXRlciAtIGxpa2UgYWxsIHRoZSBvdGhlciBraWRzIGluIHRvd24gLSBpcyBhIHN5bWJvbCBvZiBoaXMgaW5kZXBlbmRlbmNlIGZyb20gdGhlIGFkdWx0IHdvcmxkLgoKQW5kIHNvIHdoYXQgaWYgTW9uc2lldXIgRWF0b24gaXMgYW4gRW5nbGlzaC1zcGVha2luZyBmYW4gb2YgdGhlIE1hcGxlIExlYWZzPyBNb20gcmVhbGx5LCBzb3JlbHkgbWlzc2VzIHRoZSBwb2ludCBoZXJlLCBieSBicmluZ2luZyB1cCB0aGUgbmFtZSBvZiBhbiBFbmdsaXNoLXNwZWFrZXIgKGhhdGVkIGJ5IEZyZW5jaC1zcGVha2Vycykgd2hvIGhhcHBlbnMgdG8gYmUgYSBmYW4gb2YgYSB0ZWFtIG1vbSdzIHNvbiBoYXRlcywgYW5kIHdobyBoYXBwZW5zIHRvIGJlIGEgYnVzaW5lc3NtYW4uCgpJZiBoZSdzIGluc3VsdGVkIGRvIHlvdSB0aGluayBoZSdsbCBiZSBpbiBhIGh1cnJ5IHRvIGFuc3dlciB1cz8iIHNoZSBhc2tzICg4MCkuICJTcHJpbmcgd2lsbCBiZSBoZXJlIGFuZCB5b3Ugd29uJ3QgaGF2ZSBwbGF5ZWQgYSBzaW5nbGUgZ2FtZSwganVzdCBiZWNhdXNlIHlvdSBkaWRuJ3Qgd2FudCB0byB3ZWFyIHRoYXQgcGVyZmVjdGx5IG5pY2UgYmx1ZSBzd2VhdGVyLCIgbW9tIG9mZmVycyBhcyBhIHJhdGlvbmFsaXphdGlvbiBmb3IgaGVyIG1pc3Rha2UuCgpXaGF0IGlzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB3aW50ZXIgYW5kIGhvY2tleSBpbiBDYW5hZGE/CgpXaW50ZXIgYW5kIGhvY2tleSBpbiBDYW5hZGEgZ28gdG9nZXRoZXIgbGlrZSBhcHBsZSBwaWUgYW5kIGljZSBjcmVhbSwgbGlrZSBwb3Bjb3JuIGFuZCBtb3ZpZXMsIGxpa2Ugc3ByaW5nIHJhaW4gYW5kIHR1bGlwcyBpbiBJbmRpYW5hLiBXaHkgaXMgaXQgdGhhdCBob2NrZXkgd2FzIGludmVudGVkIGluIENhbmFkYT8gSXQgaXMgYmVjYXVzZSB0aGUgd2ludGVycyBhcmUgYnJ1dGFsbHkgY29sZCwgaW50ZXJtaW5hYmx5IGxvbmcsIGFuZCB0aGVyZSBpcyBsaXR0bGUgZm9yIGtpZHMgdG8gZG8gYmVzaWRlcyBzaG92ZWwgd2Fsa3MgYW5kIHN0YXkgaW5kb29ycy4gQW5kIHNvLCBnYW1lcyBpbnZvbHZpbmcgdGhlIGNvbGQgd2VhdGhlciAtIGFuZCB0aGUgcmFtaWZpY2F0aW9ucyBvZiB0aGUgY29sZCAtIHdlcmUgaW52ZW50ZWQuCgpOYXRpdmUgQW1lcmljYW5zIGludmVudGVkIGdhbWVzIGxpa2UgTGFjcm9zc2UgY2VudHVyaWVzIGJlZm9yZSB0aGVyZSB3ZXJlIGJhbGxwYXJrcyBhbmQgZm9vdGJhbGwgZmllbGRzIGFuZCB0ZWxldmlzaW9uIC0gc2ltcGx5IGJlY2F1c2UgdGhlcmUgd2FzIGEgbmVlZCBmb3IgZnVuLCBmb3IgcmVjcmVhdGlvbiwgYW5kIGNyZWF0aXZlIGluZGl2aWR1YWxzIHVzZWQgcmVzb3VyY2VzIGF0IGhhbmQgdG8gaW52ZW50IGdhbWVzLiBTbyBpdCBhbHNvIHdhcyBpbiBDYW5hZGEsIHdoZXJlIGhvY2tleSB3ZW50IGZyb20gcGFydCB0aW1lIG91dGRvb3IgcGFzdGltZSB0byB0aGUgYmlnZ2VzdCB0aGluZyBzaW5jZSBDYW5hZGlhbiBpbmRlcGVuZGVuY2UgZnJvbSBFbmdsYW5kLgoKQW5kIG5vdyB0aGUgc3BvcnQgb2YgaG9ja2V5LCB3aXRoIGl0cyByaWNoIHNwb3J0aW5nIHRyYWRpdGlvbnMgYW5kIHdpdGggaGVyb2VzIHN1Y2ggYXMgUmljaGFyZCwgaGFzIGV4cGFuZGVkIHdlbGwgaW50byB0aGUgc291dGhlcm4gcmVnaW9ucyBvZiB0aGUgVW5pdGVkIFN0YXRlcywgd2hlcmUsIGFsYmVpdCB0aGVyZSBtYXkgYmUgYSBzY2FyY2l0eSBvZiBzbm93IGluIExvcyBBbmdlbGVzLCB3aGVuIFdheW5lIEdyZXRza3kgY2FtZSB0byB0b3duLCBraWRzIGxpbmVkIHVwIHVuZGVyIHRoZSBwYWxtIHRyZWVzIHRvIHdhdGNoIHRoZXNlIG1hZ2ljYWwgc2thdGVycyB0dXJuIGFuIGljZSByaW5rIGludG8gYSBob3RiZWQgb2YgY29tcGV0aXRpb24gYW5kIGdsb3J5LgoKV2hhdCBjYW4gd2UgbGVhcm4gZnJvbSB0aGUgdGV4dCBhYm91dCB0aGUgY3VsdHVyZSdzIGlkZWEgb2YgY2hpbGRob29kLCBhcyBzZWVuIHRocm91Z2ggdGhlIGV5ZXMgb2YgYSBjaGlsZD8KCldoZW4gdGhlIGJveSBpcyAib2JsaWdlZCB0byB3ZWFyIHRoZSBNYXBsZSBMZWFmcyBzd2VhdGVyIiBhdCB0aGUgcmluaywgYWxsIHRoZSBvdGhlciBraWRzIGluIHRoZWlyIE1hdXJpY2UgUmljaGFyZHMnIHN3ZWF0ZXJzICJjYW1lIHVwLCBvbmUgYnkgb25lLCB0byB0YWtlIGEgbG9vay4iIE9uZSBjYW4gY2xlYXJseSBzZWUgdGhpcyBwaWN0dXJlIG9mIHRoZSBib3kgaW4gdGhlIFRvcm9udG8gc3dlYXRlciBiZWluZyBleGFtaW5lZCBieSBhbGwgaGlzIGhpdGhlcnRvIGdyZWF0IGZyaWVuZHMsIGJlaW5nIHB1dCBvbiB0cmlhbCwgaW4gZWZmZWN0LgoKSXQgbXVzdCBoYXZlIGJlZW4gdmVyeSBtdWNoIGxpa2UgYW4gaW5jb21wZXRlbnQgYXJteSByZWNydWl0IGluIHRoZSBoZWF0IG9mIGJhc2ljIHRyYWluaW5nLCB3aG9zZSB1bmlmb3JtIGlzIHNvaWxlZCBhbmQgaW1wcm9wZXJseSBwcmVzZW50ZWQsIGFuZCBoZSdzIG5lcnZvdXNseSBzdGFuZGluZyB0aGVyZSBmb3IgaW5zcGVjdGlvbi4gQW5kIG9uZS1ieS1vbmUsIGEgZG96ZW4gZHJpbGwgc2VyZ2VhbnRzIG1hcmNoIG92ZXIgdG8gc3RhbmQgaW4gZnJvbnQgb2YgaGltIGFuZCBnaXZlIGhpbSB0aGUgImV2aWwgZXllIiAtIHdoaWNoIG1lYW5zIGhlIGhhcyBsaWtlbHkgbG9zdCB0aGVpciByZXNwZWN0IGZvcmV2ZXIuCgpUaGUgTWFwbGUgTGVhZnMgc3dlYXRlciB3ZWlnaGVkIG9uIG15IHNob3VsZGVycyBsaWtlIGEgbW91bnRhaW4iICg4MCksIHRoZSBib3kgY29uZmVzc2VkLiBUaGF0IGlzIHNvbWUgc2VyaW91cyBidXJkZW4gZm9yIGEgbGl0dGxlIGJveSB0byBiZWFyLCBhbmQgaW4gaGlzIHdvcmRzLCBpdCBpcyBhbGwgdGhlIG1vcmUgcG9pZ25hbnQuCgpBbmQgYWZ0ZXIgaGUgaGFkIGJlZW4gc2V2ZXJlbHkgaGFyYXNzZWQgdGhyb3VnaCBwZWVyLWdyb3VwIHN0YXJlcywgaXQgZ290IHdvcnNlLiAiQnkgdGhlIHRoaXJkIHBlcmlvZCBJIHN0aWxsIGhhZG4ndCBwbGF5ZWQuLi5vbmUgb2YgdGhlIGRlZmVuc2VtZW4gd2FzIGhpdCBpbiB0aGUgbm9zZSB3aXRoIGEgc3RpY2sgYW5kIGl0IHdhcyBibGVlZGluZy4uLiIgQW5kIHlldCB3aGVuIGhlIGp1bXBlZCBpbiB0byB0YWtlIG92ZXIgZm9yIHRoZSBpbmp1cmVkIGJveSwgIlRoZSByZWZlcmVlIGJsZXcgaGlzIHdoaXN0bGUuLi4iIGNsYWltaW5nIHRoZSBUb3JvbnRvIE1hcGxlLUxlYWYtd2VhcmluZyBwbGF5ZXJzIHdhcyBvbiB0aGUgaWNlIHRvbyBlYXJseS4gVGhhdCwgdG8gYSBraWQgd2hvIGtub3dzIHRoZSBnYW1lIG9mIGhvY2tleSwgaXMgYmV5b25kIGFuIGluc3VsdCAtIGl0IGlzIGJsYXNwaGVteS4KClRoYXQgd2FzIHRvbyBtdWNoISBJdCB3YXMgdW5mYWlyISBJdCB3YXMgcGVyc2VjdXRpb24hIEl0IHdhcyBiZWNhdXNlIG9mIG15IGJsdWUgc3dlYXRlciEiIGhlIHJhZ2VkLiBBbmQgc28gaGUgYnJva2UgaGlzIHN0aWNrIG9uIHRoZSBpY2UgLSBhIGZpdCBvZiBmdXJ5IHRoYXQgaXMgbm90IG9ubHkgc2lsbHksIGl0J3MgZW1iYXJyYXNzaW5nIC0gYW5kIHRoZW4gdGhlIGZpbmFsIHN0cmF3IGNvbWVzIGZyb20gYSBtYW4gb2YgY2xvdGgsICJ0aGUgdmljYXIuIgoKTXkgY2hpbGQsIiBzYWlkIHRoZSB2aWNhciwgImp1c3QgYmVjYXVzZSB5b3UncmUgd2VhcmluZyBhIG5ldyBUb3JvbnRvIE1hcGxlIExlYWZzIHN3ZWF0ZXIgdW5saWtlIHRoZSBvdGhlcnMsIGl0IGRvZXNuJ3QgbWVhbiB5b3UncmUgZ29pbmcgdG8gbWFrZSB0aGUgbGF3cyBhcm91bmQgaGVyZS4iIFdoYXQgYSBodWdlIGhhbW1lciB0byB0aGUgaGVhZCBvZiBhIGtpZCB3aG8gYWxyZWFkeSBoYXMgYmVlbiBwdW5pc2hlZCBieSBzY2hvb2wsIGNodXJjaCwgaGlzIG1vdGhlciwgYW5kIE1vbnNpZXVyIEVhdG9uLgoKQW5kIHdoZW4gaGUgaXMgb3JkZXJlZCB0byByZW1vdmUgaGlzIHNrYXRlcyBhbmQgZ28gdG8gdGhlIGNodXJjaCB0byBwcmF5IGZvciBmb3JnaXZlbmVzcywgYXV0aG9yIENhcnJpZXIgc2VydmVzIHVwIHNvbWUgb2YgaGlzIHRpbWVseSBhbmQgaW50ZWxsaWdlbnQgaHVtb3IuIE9mIGNvdXJzZSB0aGUgYm95IHdpbGwgcHJheSwgYnV0IGluc3RlYWQgb2YgZm9yZ2l2ZW5lc3MsIGhlIGFza3MgR29kIHRvIHNlbmQsICJhcyBxdWlja2x5IGFzIHBvc3NpYmxlLCBtb3RocyB0aGF0IHdvdWxkIGVhdCB1cCBteSBUb3JvbnRvIE1hcGxlIExlYWZzIHN3ZWF0ZXIuIiBSZWFkZXJzIG5vdGljZSBvZiBjb3Vyc2UgdGhhdCBoZSBkaWRuJ3QgYXNrIGZvciBhIG5ldyBNb250cmVhbCBDYW5hZGlhbnMnIHN3ZWF0ZXIgLSBoZSB3YXMgdG9vIGFuZ3J5IGZvciB0aGF0LiBGcm9tIGhpcyBzaWRlYmFyIHN0b3J5IG9mIGEgY2hpbGQncyB3b3JsZCwgaGUgZmlyc3QgbmVlZGVkIHRvIHJpZCBoaW1zZWxmIG9mIHRoZSBwbGFndWUgdGhhdCB0aGUgTWFwbGUgTGVhZnMnJiM4MjMwOw== QmVsb3ZlZCBhbmQgdGhlIEhhbmRtYWlkJ3MgVGFsZSwgTWVtb3J5IElz QmVsb3ZlZCBhbmQgdGhlIEhhbmRtYWlkJ3MgVGFsZSwgTWVtb3J5IElz MQ== MTQ2NjI1NDY= NA== NQ== QTIwNDMyMTA= NzM1OQ== MTEwNjc= NTA= TWFzdGVy TUxB TGl0ZXJhdHVyZQ== TGl0ZXJhdHVyZSAvIFBvZXRyeQ== Qm9vayBSZXBvcnQ= MQ== MQ== MQ== NDYzMTE= MTQ3MQ== MTMxODM2NDQ1OQ== MQ== JiMxODI7ICYjODIzMDsgQmVsb3ZlZCBhbmQgdGhlIEhhbmRtYWlkJ3MgVGFsZSwgbWVtb3J5IGlzIGNydWNpYWwgZm9yIGlkZW50aXR5IGNvbnN0cnVjdGlvbi4gUmVtZW1iZXJpbmcgdGhlIHBhc3QgcHJvdmlkZXMgdGhlIG1lYW5zIHRvIGNyZWF0ZSBzb2NpYWwsIHBvbGl0aWNhbCwgYW5kIHBzeWNob2xvZ2ljYWwgZW1wb3dlcm1lbnQuIFJlbWVtYmVyaW5nIHRoZSBwYXN0IGltcGxpZXMgdGhlIGFiaWxpdHkgdG8gcmVzaXN0IGEgcmVwcmlzZSBvZiB0cmF1bWEuIEJvdGggU2V0aGUgYW5kIE9mZnJlZCBhcmUgYmVzaWVnZWQgYnkgcGFpbmZ1bCBtZW1vcmllcyB0aGF0IGNvbnN0cnVjdCB0aGVpciB3b3JsZHZpZXcgYW5kIHRoZWlyIHBlcnNvbmFsIGlkZW50aXR5LiBNb3Jlb3ZlciwgbWVtb3J5IHNlcnZlcyBhcyBhIG1lYW5zIHRvIHVzZSB0aGUgcGFzdCBhcyBhIGxlc3NvbiByYXRoZXIgdGhhbiBzdWNjdW1iIHRvIGl0cyBwb3dlciBhcyBhIHNoYWNrbGUuIEluIGl0cyBsaXRlcmFyeSB1c2UsIG1lbW9yeSBpcyAiZXNwZWNpYWxseSBpbXBvcnRhbnQgdG8gYW55b25lIHdobyBjYXJlcyBhYm91dCBjaGFuZ2UsIGZvciBmb3JnZXR0aW5nIGRvb21zIHVzIHRvIHJlcGV0aXRpb24mIzgyMzA7YWxsIG5hcnJhdGl2ZSBpcyBjb25jZXJuZWQgd2l0aCBjaGFuZ2UsIiAoR3JlZW5lIDI5MSkuIFdoZXRoZXIgYXMgd2FybmluZyBvciBsYW1lbnRhdGlvbiwgbWVtb3J5LWJhc2VkIG5hcnJhdGl2ZXMgbGlrZSBUaGUgSGFuZG1haWQncyBUYWxlIGFuZCBCZWxvdmVkIGVuYWJsZSBzZWxmLXJlbmV3YWwuCgpJbiBCZWxvdmVkLCBhIGdob3N0IHN5bWJvbGl6ZXMgdGhlIHBlcnNpc3RlbmNlIG9mIHRoZSBwYXN0IGFuZCBpdHMgdmFyaWFibGUgaW5mbHVlbmNlIG9uIHRoZSBwcmVzZW50LiBGb3IgZXhhbXBsZSwgU2V0aGUgZmVhcnMgdGhlIGdob3N0IG9uIGEgdmlzY2VyYWwgbGV2ZWwuIFRoZSBnaG9zdCByZXByZXNlbnRzIGEgYnJlYWNoIG9mIHJlYWxpdHkgYW5kIHRoZSBsYXdzIG9mIHBoeXNpY3MgYnV0IG1vcmUgaW1wb3J0YW50bHksIHRoZSBnaG9zdCByZXByZXNlbnRzIGRlYWQgbWVtb3JpZXMgcmV0dXJuZWQgdG8gaGF1bnQgU2V0aGUuIFdoZXJlYXMgRGVudmVyIGRvZXMgbm90IHNlZSB0aGUgZ2hvc3QgaW4gdGhlIHNhbWUgbGlnaHQsIFNldGhlIGtub3dzIHRoYXQgdGhlIHNwZWN0ZXIgcmVtaW5kcyBoZXIgdGhhdCB0aGUgcGFzdCBjYW4gbmV2ZXIgYmUgZm9yZ290dGVuLiBUaHVzLCB0aGUgc2FtZSBtZW1vcnkgY2FuIGFmZmVjdCBkaWZmZXJlbnQgcGVvcGxlIGluIGRpZmZlcmVudCB3YXlzLiBUaGUgd2F5IE1vcmlzb24gc3RydWN0dXJlcyBoZXIgbm92ZWwgaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgc3dheSB0aGUgcGFzdCBoYXMgb3ZlciBpbmRpdmlkdWFscy4gRmxhc2hiYWNrcyBhbmQgbm9uLWxpbmVhciB0aW1lIHNob3cgdGhhdCBtZW1vcmllcyBhcmUgYXMgaW50ZWdyYWwgdG8gdGhlIHByZXNlbnQgcmVhbGl0eSBjb25zdHJ1Y3Rpb24gYXMgY3VycmVudCBldmVudHMgYXJlLgoKTWFyZ2FyZXQgQXR3b29kIGFsc28gdXNlcyBtZW1vcmllcyBhcyBhIHN0cnVjdHVyYWwgZWxlbWVudCBpbiBUaGUgSGFuZG1haWQncyBUYWxlLiBPZmZyZWQgZnJlcXVlbnRseSByZWZlcnMgdG8gdGhlIHBhc3QgYmVmb3JlIGhlciBjYXB0aXZpdHkgb24gR2lsZWFkLiBUaGUgbWVtb3JpZXMgb2YgaGVyIHBhc3QgYXJlIHdoYXQgZ2l2ZXMgT2ZmcmVkIGhvcGUgZm9yIHRoZSBmdXR1cmUuIFRoZSBwYXN0IHJldmVhbHMgbm90IG9ubHkgd2hhdCBzaG91bGQgbm90IG9jY3VyIGFnYWluIHN1Y2ggYXMgdHJhdW1hLCBidXQgYWxzbyB3aGF0IGNhbiBiZS4gVGhlIHBsZWFzYW50IG1vbWVudHMgY29udGFpbmVkIGluIHRoZSBwYXN0IGNhbiBiZSByZWNyZWF0ZWQuCgpJbiBib3RoIEJlbG92ZWQgYW5kIFRoZSBIYW5kbWFpZCdzIFRhbGUsIG1lbW9yeSBpcyBhIGJyaWRnZSBiZXR3ZWVuIHBhc3QsIHByZXNlbnQsIGFuZCBmdXR1cmUuIEFzIEdyZWVuZSBwdXRzIGl0LCAiTWVtb3J5IGlzIG91ciBtZWFucyBvZiBjb25uZWN0aW5nIHBhc3QgYW5kIHByZXNlbnQsIGFuZCBjb25zdHJ1Y3RpbmcgYSBzZWxmIGFuZCB2ZXJzaW9ucyBvZiBleHBlcmllbmNlIHdlIGNhbiBsaXZlIHdpdGgsIiAoMjkzKS4gUGFpbmZ1bCBtZW1vcmllcyBhbmQgdHJhdW1hIGFyZSBidXJpZWQgaW4gdGhlIHBhc3QsIGJ1dCByZWNvbGxlY3Rpb25zIHJlc3VyZmFjZSBjb250aW51YWxseS4gVGhvc2UgcmVjb2xsZWN0aW9ucyBhcmUgaW50ZWdyYWwgdG8gdGhlIGlkZW50aXR5IGNvbnN0cnVjdGlvbiBvZiB0aGUgcHJvdGFnb25pc3RzLiBJbiBCZWxvdmVkLCBzbGF2ZXJ5IHByb3ZpZGVzIHRoZSBhdG1vc3BoZXJlIG9mIHNvY2lhbCwgZWNvbm9taWMsIGFuZCBwb2xpdGljYWwgb3BwcmVzc2lvbiB0aGF0IGZyYW1lcyBtZW1vcmllcyBvZiB0aGUgcGFzdC4gVGhlIHByZXNlbnQgcHN5Y2hvbG9naWNhbCBhbmQgc29jaWFsIGlkZW50aXRpZXMgZGVwZW5kIGRpcmVjdGx5IG9uIGhvdyBzbGF2ZXJ5IHdhcyBwZXJjZWl2ZWQsIGl0cyBoYXJzaCBzdGluZyBpbnRlcm5hbGl6ZWQgYnkgcGVvcGxlIGxpa2UgU2V0aGUuIEluIFRoZSBIYW5kbWFpZCdzIFRhbGUsIG1lbW9yaWVzIG9mIGEgc2FuZXIgcGFzdCBmaWx0ZXIgaW4gdGhyb3VnaCB0aGUgaW5zYW5pdHkgb2YgdGhlIHByZXNlbnQgaW4gR2lsZWFkLiBBcyBLaW5nIHBvaW50cyBvdXQgaW4gTWVtb3J5LCBOYXJyYXRpdmUsIElkZW50aXR5LCB0aGUgYWJpbGl0eSB0byBzdHJ1Y3R1cmUgYW5kIG1ha2Ugc2Vuc2Ugb2YgdGhlIHBhc3QgY2FuIGFzc3VhZ2UgdGhlIGlsbC1lZmZlY3RzIG9mIHRyYXVtYS4gSG9sb2NhdXN0IHZpY3RpbXMsIHZpY3RpbXMgb2Ygc2xhdmVyeSwgYW5kIHZpY3RpbXMgb2YgcGF0cmlhcmNoeSBhbGwgc2hhcmUgaW4gY29tbW9uIHRoZSBuZWVkIHRvIHN0cmluZyB0b2dldGhlciBtZW1vcmllcyBhcyBiZWFkcyBvbiBhIG5lY2tsYWNlLgoKV2hlbiB0aGUgd29yZCByZW1lbWJlcmluZyBpcyBkZWNvbnN0cnVjdGVkLCBpdCBhc3N1bWVzIGEgd2hvbGUgbmV3IG1lYW5pbmcgYXMgcmUtbWVtYmVyaW5nLiBUbyBiZSBhIG1lbWJlciBvZiBzb21ldGhpbmcgaXMgdG8gYmUgYW4gaW50ZWdyYWwgcGFydCBvZiBpdCwgdGhlIHdheSBhbiBvcmdhbiBpcyBhIG1lbWJlciBvZiBhIGJvZHkgb3IgYW4gZW1wbG95ZWUgYSBtZW1iZXIgb2YgYW4gb3JnYW5pemF0aW9uLiBUaHVzLCB0byBtZW1iZXIgc29tZXRoaW5nIHdvdWxkIGJlIHRvIG1ha2Ugc29tZXRoaW5nIGZpdCBvciBiZWxvbmcgaW4gYSBnaXZlbiBzb2NpYWwgc3RydWN0dXJlIG9yIGluc3RpdHV0aW9uLiBJdCBmb2xsb3dzIHRoYXQgcmUtbWVtYmVyaW5nIG1lYW5zIHRvIHJlZ2FpbiBlbnRyeSBpbnRvIGEgbG9zdCBzb2NpYWwgb3IgcG9saXRpY2FsIG9yZ2FuaXphdGlvbi4gUmUtbWVtYmVyaW5nIG1pZ2h0IGFsc28gbWVhbiByZWpvaW5pbmcgbWVtYmVyc2hpcCBvciBhdCBsZWFzdCByZWRlZmluaW5nIG9uZSdzIHJlbGF0aW9uc2hpcCB3aXRoIG90aGVycyBpbiBhIHNwZWNpZmljIHNvY2lhbCBtaWxpZXUuIEFjY29yZGluZyB0byBHcmVlbmUsIGZlbWluaXNtIGlzIGl0c2VsZiBhICJyZS1tZW1iZXJpbmcsIGEgcmUtYXNzZW1ibGluZyBvZiBvdXIgbG9zdCBwYXN0IGFuZCBsb3N0IHBhcnRzIG9mIG91cnNlbHZlcywiICgzMDApLgoKTWVtb3J5IGlzIHRoZSBidWlsZGluZyBibG9jayBvZiBuYXJyYXRpdmUsIGFzIG5hcnJhdGl2ZXMgYXJlIGNvbXByaXNlZCBvZiByZS1jb25zdHJ1ZWQgbWVtb3JpZXMuIE5hcnJhdGl2ZSBpcyBhIHZlaGljbGUgZm9yIGhlYWxpbmcgaW4gYm90aCBUaGUgSGFuZG1haWQncyBUYWxlIGFuZCBCZWxvdmVkLiBCb3RoIGJvb2tzIHVzZSBuYXJyYXRpdmUgYXMgYSBtZWFucyB0byBuYXZpZ2F0ZSB0aHJvdWdoIGEgcGFpbmZ1bCBwYXN0IGFuZCBhIG1pbmVmaWVsZCBvZiBtZW1vcmllcy4gSnVzdCBhcyBob2xvY2F1c3QgYW5kIG90aGVyIHRyYXVtYSBzdXJ2aXZvcnMgY2FuIHVzZSBtZW1vaXJzIHRvIGNyZWF0ZSBoZWFsaW5nIG5hcnJhdGl2ZXMgdGhhdCBtYWtlIHNlbnNlIG9mIHRoZSBodW1hbiBjb25kaXRpb24sIHNvIHRvbyBkbyB0aGUgcHJvdGFnb25pc3RzIG9mIEF0d29vZCdzIGFuZCBNb3JyaXNvbidzIG5vdmVscy4gTmFycmF0aXZlIHByb3ZpZGVzIGV4aXN0ZW50aWFsIG1lYW5pbmcgdG8gZXZlbnRzIHRoYXQgY291bGQgZWFzaWx5IGxlYWQgdG8gc2VsZi1kZW5pYWwsIGFibmVnYXRpb24sIG5paGlsaXNtLCBhbmQgZXZlbiBzZWxmLW9ibGl0ZXJhdGlvbi4gVGhlIGNoYXJhY3RlcnMgaW4gQmVsb3ZlZCBhbmQgVGhlIEhhbmRtYWlkJ3MgVGFsZSBhcmUgYmVzaWVnZWQgYnkgcGFpbmZ1bCBwYXN0cywgYnV0IHRoZXkgZm9yZ2Ugb253YXJkcyBpbiBzcGl0ZSBvZiB0aGVpciBwb3N0LXRyYXVtYXRpYyBzdHJlc3MuIE5hcnJhdGl2ZSBpcyB0aGVpciB3YXkgb2YgY29waW5nIG9uIGEgcGVyc29uYWwgbGV2ZWwsIGJ1dCBTZXRoZSBhbmQgT2ZmcmVkIGFsc28gdXNlIG5hcnJhdGl2ZSBhcyBhIHdheSB0byYjODIzMDs= UmFjaXN0IEJlYXV0eSBJZGVhbHMgYW5kIFJhY2lhbA== UmFjaXN0IEJlYXV0eSBJZGVhbHMgYW5kIFJhY2lhbA== MQ== NTY0MTY2OA== MTA= MTU= QTIwMjk1OTY= NDg3MTkxOA== MTExMTE= NjQ= Q29sbGVnZSBTZW5pb3IgKDR0aCB5ZWFyKQ== bi9h UmFjZQ== UmFjZSAvIEV0aG5pYyBTdHVkaWVzIC8gUmFjaXNt VGVybSBQYXBlcg== MQ== MTE5NzUw NDcyMg== MTMwMzIyNTM2MA== IFdlcnJsZWluIGhvbGRzIHRoYXQgdGhlIERpY2sgYW5kIEphbmUgc3RvcmllcyBlcXVhdGUgd2hpdGUgcHJpdmlsZWdlIHdpdGggYSB2ZXJzaW9uIG9mIEFtZXJpY2FubmVzcyB0aGF0IG9jY3VycyBvdXRzaWRlIG9mIGhpc3RvcnksIGFyZ3VpbmcgZnVydGhlciB0aGF0IHRoZSBwb3ZlcnR5IGFuZCBzdWZmZXJpbmcgb2YgdGhlIEJyZWVkbG92ZSBmYW1pbHkgc3ltYm9saXplcyBBbWVyaWNhJ3MgYnJ1dGFsIGhpc3Rvcnkgb2YgcmFjaWFsIHBlcnNlY3V0aW9uLiBUaHJvdWdoIGhlciBwb3J0cmF5YWwgb2YgUGF1bGluZSBhbmQgQ2hvbGx5LCBNb3JyaXNvbiBzdWdnZXN0cyB0aGF0IHBhcmVudHMgd2hvIGVtZXJnZSBmcm9tIGhpc3RvcmllcyBvZiBvcHByZXNzaW9uIG1pZ2h0IHJlcHJvZHVjZSB0aGF0IGRlZ3JhZGF0aW9uIHdpdGhpbiB0aGUgZmFtaWx5IHVuaXQuIEluc3RlYWQgb2YgQ2hvbGx5IHByb3RlY3RpbmcgYW5kIHByb3ZpZGluZyBmb3IgaGlzIGZhbWlseSwgaGUgYnVybnMgZG93biB0aGVpciBob21lIGFuZCBsYXRlciBhc3NhdWx0cyBoaXMgZGF1Z2h0ZXIuIEluc3RlYWQgb2YgbnVydHVyaW5nIGhlciBvZmZzcHJpbmcsIFBhdWxpbmUgcmVqZWN0cyB0aGVtLCBzZWVpbmcgaW4gdGhlbSBhIHJlZmxlY3Rpb24gb2YgaGVyIG93biB1Z2xpbmVzcy4gU2hlIG11Y2ggcHJlZmVycyB0byBzcGVuZCBhbGwgaGVyIHRpbWUgd29ya2luZyBhcyBhIGRvbWVzdGljIGZvciB0aGUgRmlzaGVycy4gUGVjb2xhJ3MgcHJlZ25hbmN5IGFuZCBwc3ljaG9zaXMgcmVwcmVzZW50IGV4dHJlbWUgY29uc2VxdWVuY2VzIG9mIHJhY2lzbS4gV2VycmxlaW4gYXNzZXJ0cyB0aGF0LCBhcyB2YXJpb3VzIGNoYXJhY3RlcnMgaW4gVGhlIEJsdWVzdCBFeWUgImxhYmVsLCBkZWdyYWRlIGFuZCBkZWZpbmUgUGVjb2xhJ3MgYm9keSBzbyBhcyB0byBkaXNhdm93IHRoZSByZWFsaXRpZXMgb2YgcmFjaXNtIGluIHRoZWlyIG93biBsaXZlcywgTW9ycmlzb24gc3VnZ2VzdHMgdGhhdCB0aGV5IG1pcnJvciB0aGUgd29yayBvZiBhIG5hdGlvbiB0aGF0IGlyb25pY2FsbHkgaW52ZXN0cyBpbiB0aGUgaWRlb2xvZ3kgb2YgY2hpbGRob29kIGlubm9jZW5jZSBhdCB0aGUgZXhwZW5zZSBvZiBpdHMgY2hpbGRyZW4iIChXZXJybGVpbiwgNTMtIDcyKS4KCkluIGRpc2N1c3NpbmcgUGVjb2xhJ3Mgc2VsZi1sb2F0aGluZyBhbmQgaXRzIHJvbGUgaW4gaGVyIHBzeWNob2xvZ2ljYWwgZGVzdHJ1Y3Rpb24sIG9uZSBtdXN0IGFkZHJlc3Mgc3RhbmRhcmRzIG9mIGJlYXV0eS4gUGVjb2xhIHdhcyBjb252aW5jZWQgb2YgaGVyIHVnbGluZXNzLCB3aGljaCBrbm93bGVkZ2Ugd2FzIGNvbnRpbnVhbGx5IHJlaW5mb3JjZWQuIE9uZSBvZiB0aGUgc29jaWV0YWwgcHJlc3N1cmVzIHNoZSBzdHJ1Z2dsZWQgYWdhaW5zdCB3YXMgdGhlIHN0ZXJlb3R5cGljYWwgZGVmaW5pdGlvbiBvZiBiZWF1dHkgdGhhdCBzaGUgY291bGQgbmV2ZXIgaG9wZSB0byBhdHRhaW4uIElmIHRoZXJlIHdhcyBldmVyIGFueSBkb3VidCBhcyB0byB0aGUgaW5mbHVlbmNlIG9mIGV0aCBiZWF1dHkgaW5kdXN0cnkgR2VvZmZyZXkgSm9uZXMgZGlzbWlzc2VzIHRoZW0gaW4gaGlzIGV4YW1pbmF0aW9uIG9mIHRoZSBnbG9iYWxpemF0aW9uIG9mIHRoZSBiZWF1dHkgaW5kdXN0cnkuIEpvbmVzIGFyZ3VlcyB0aGF0IHRoZXJlIGlzIGNvbXBlbGxpbmcgcmVzZWFyY2ggZnJvbSBhIHJhbmdlIG9mIHNvY2lhbCBzY2llbmNlcyB0byBwb3NpdCB0aGUgZXhpc3RlbmNlIG9mIGEgImJlYXV0eSBwcmVtaXVtLiIgSGUgZGlzY3Vzc2VzIHRoZSBkcml2ZXJzIGJlaGluZCB0aGUgZ2xvYmFsaXphdGlvbiBvZiBiZWF1dHkgYW5kIHRoZSBzdHJhdGVnaWVzIHRoYXQgZmlybXMgZW1wbG95ZWQgdG8gb3ZlcmNvbWUgY2hhbGxlbmdlcyB0byBnbG9iYWxpemF0aW9uLiBKb25lcyBhbHNvIHJldmlld3MgdGhlIG91dGNvbWVzLCBpbmNsdWRpbmcgdGhlIGV4dGVudCB0byB3aGljaCBnbG9iYWxpemF0aW9uIHJlc3VsdGVkIGluIGhvbW9nZW5pemF0aW9uLCBpLmUuIEFtZXJpY2FuaXphdGlvbi4gSm9uZXMgY29uY2x1ZGVzIGZyb20gaGlzIHJlc2VhcmNoIHRoYXQgZ2xvYmFsaXphdGlvbiBkaWQgbm90IHByb2R1Y2UgaG9tb2dlbmVpdHk7IHJhdGhlciB0aGUgYmVhdXR5IGluZHVzdHJ5IGFmdGVyIDE5ODAgd2FzIGluY3JlYXNpbmdseSBzZWdtZW50ZWQgYnkgZXRobmljaXR5LCBnZW5kZXIsIGFnZSwgaW5jb21lLCBhbmQgb3RoZXIgY2hhcmFjdGVyaXN0aWNzLiBKb25lcyBmb3VuZCB0aGF0IG5ldmVydGhlbGVzcywgY2VydGFpbiBpZGVhbHMsIGVzcGVjaWFsbHkgZm9yIHdvbWVuIGhhZCBiZWNvbWUgd2lkZWx5IGRpZmZ1c2VkIHdvcmxkd2lkZSwgaW5jbHVkaW5nIGEgbGFjayBvZiBib2R5IG9kb3IsIHdoaXRlIG5hdHVyYWwgdGVldGgsIHNsaW0gZmlndXJlcywgcGFsZXIgc2tpbnMgYW5kIHJvdW5kZXIgZXllcy4gQ29ycG9yYXRlIHN0cmF0ZWdpZXMgaGVscGVkIGJyaW5nIGFib3V0IGEgcmVkdWN0aW9uIGluIHRoZSByYW5nZSBvZiBnbG9iYWwgdmFyaWF0aW9uIGluIGJlYXV0eSBpZGVhbHMgYXQgdGhlIHNhbWUgdGltZSB0aGF0IHRoZXkgZGV2ZWxvcGVkIHByb2R1Y3RzIHdoaWNoIGVuYWJsZWQgbW9yZSBhbmQgbW9yZSBjb25zdW1lcnMgdG8gYXNwaXJlIHRvIGNhcHR1cmluZyB0aGUgYmVhdXR5IHByZW1pdW0gKEpvbmVzLCAxMjUtMTU0KS4KClRocm91Z2hvdXQgVGhlIEJsdWVzdCBFeWUgTW9ycmlzb24gcHJlc2VudHMgYSBibGFjayBjb21tdW5pdHkgdGhhdCBoYXMgYWNjZXB0ZWQgdGhlIHdoaXRlIGNyaXRlcmlhIG9mIGJlYXV0eSBmb3IgdGhlaXIgb3duLiBUb3lzLCBjYW5keSwgbW92aWVzIGFuZCBiZWF1dHkgcHJvZHVjdHMsIGFsbCBvZiB0aGVzZSBpbmZvcm1lZCB0aGVpciBzdGFuZGFyZHMgb2YgYmVhdXR5IHRvIGFsaWduIHdpdGggYSB3aGl0ZSBjb25zdW1lciBjdWx0dXJlLiBXaGVuIE1yLiBIZW5yeSwgdGhlIE1hY1RlZXIncyBib2FyZGVyIGlzIGluaXRpYWxseSBpbnRyb2R1Y2VkIHRvIENsYXVkaWEgYW5kIEZyaWVkYSwgaGUgc2Vla3MgdG8gZmxhdHRlciB0aGVtIGJ5IGNvbXBhcmluZyB0aGVtIHRvIG1vdmllIHN0YXJzIEdyZXRhIEdhcmJvIGFuZCBHaW5nZXIgUm9nZXJzLiBUaGVyZSBpcyBhbHNvIFBhdWxpbmUgd2hvIHByZXBhcmVzIHRvIHRha2UgaW4gYSBtb3ZpZSBieSBzdHlsaW5nIGhlciBoYWlyIHRvIHJlc2VtYmxlIEplYW4gSGFybG93J3MuIEFuZCBQZWNvbGEgd2hvIGRyYW5rIG1pbGsganVzdCB0byBlbmpveSBTaGlybGV5IFRlbXBsZSdzIGltYWdlIG9uIGhlciBjdXAuIFBvcHVsYXIgQW1lcmljYW4gY3VsdHVyZSBwcm92aWRlZCBhIHdoaXRlLWRlZmluZWQgc3RhbmRhcmQgb2YgZmVtYWxlIGJlYXV0eSBmb3IgdGhlbSB0byBpbnRlcm5hbGl6ZSB0aGF0IHdhcyBib3RoIHJhY2lzdCBhbmQgZnJpdm9sb3VzLgoKQ2xhdWRpYSBpcyB0aGUgb25seSBvbmUgb2YgdGhlIHRocmVlIGdpcmxzIHdobyBpcyBhYmxlIHRvIHJlamVjdCB0aGUgZnJhdWR1bGVudCBpbWFnZXMsIHdoaWNoIHNoZSBkb2VzIGJ5IGRlc3Ryb3lpbmcgd2hpdGUgYmFieSBkb2xscy4gQmVjYXVzZSB0aGUgTWFjVGVlcnMgcG9zc2VzcyB0aGUgaW5uZXIgc3RyZW5ndGggdG8gd2l0aHN0YW5kIHRoZSBwb3ZlcnR5IGFuZCBkaXNjcmltaW5hdGlvbiBvZiBhIHJhY2lzdCBzb2NpZXR5OyB0aGV5IHByb3ZpZGUgYW4gZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhlaXIgY2hpbGRyZW4gY2FuIGdyb3cuIFBlY29sYSwgb24gdGhlIG90aGVyIGhhbmQsIGRvZXMgbm90IGhhdmUgam95IGFuZCBsb3ZlIHRvIGJhbGFuY2UgdGhlIHBhaW4gYW5kIHVnbGluZXNzIG9mIGhlciBldmVyeWRheSBleHBlcmllbmNlcy4gUGVjb2xhJ3MgZmFtaWx5IGlzIHdpdGhvdXQgdGhlIHJlc291cmNlcyBzaGUgbmVlZHMsIGFuZCB3aXRob3V0IHdoaWNoIHNoZSByZXRyZWF0cyBpbnRvIG1hZG5lc3MgKEtsb3RtYW4sIDEyMy0xMjUpLgoKSW4gaGVyIHN0dWR5IEZyZWVtYW4gKDQ5LTY1KSBleHBsb3JlcyBob3cgc29jaWFsIGlkZW50aXR5IGlzIGZvcm1lZCBpbiB0aGUgVS5TLiBTaGUgcG9zaXRzIHRoYXQgaW4gb3JkZXIgZm9yIEJsYWNrIGNoaWxkcmVuIHRvIGFzc2ltaWxhdGUgaW50byB0aGUgZG9taW5hbnQgY3VsdHVyZSwgaGlzdG9yaWNhbGx5LCB0aGVpciBjdWx0dXJhbCB2YWx1ZXMgaGF2ZSBiZWVuIG1pbmltaXplZC4gIlRoaXMgcHJvY2VzcyBvZiBjdWx0dXJhbCBhc3NpbWlsYXRpb24gb3IgYWxpZW5hdGlvbiBoYXMgaGFkIGEgZGV2YXN0YXRpbmcgZWZmZWN0IG9uIEJsYWNrIGNoaWxkcmVuJ3Mgb3Bwb3J0dW5pdGllcyBhcm91bmQgdGhlIGdsb2JlLCBwYXJ0aWN1bGFybHkgYXMgaXQgcmVsYXRlcyB0byB0aGUgbG9zcyBvZiB0aGVpciBpZGVudGl0eSBhbmQgdG8gdGhlIHVuZGVydXRpbGl6YXRpb24gb2YgdGhlaXIgaHVtYW4gcG90ZW50aWFsICZhbXA7ICM4MjMwOyBBIGdyb3VwJ3MgbG9zcyBvZiBpZGVudGl0eSBvY2N1cnMgdGhyb3VnaCBhIHByb2Nlc3Mgb2YgY3VsdHVyYWwgYWxpZW5hdGlvbiBhbmQgYW5uaWhpbGF0aW9uIGFuZCB0aHJvdWdoIGEgY3VsdHVyZSBvZiBleGNsdXNpb24iIChGcmVlbWFuLCA1MSkuIEZyZWVtYW4gbWFpbnRhaW5zIHRoYXQgZWR1Y2F0aW9uIGhhcyBiZWVuIHVzZWQgYXMgb25lIG9mIHRoZSBwcmltYXJ5IGNoYW5uZWxzIHRocm91Z2ggd2hpY2ggY3VsdHVyYWwgYWxpZW5hdGlvbiBhbmQgYW5uaWhpbGF0aW9uIGhhdmUgb2NjdXJyZWQuIEFjY29yZGluZyB0byBGcmVlbWFuLCBQZWNvbGEgc3ltYm9saXplcyBhbGwgdGhlIEJsYWNrIGNoaWxkcmVuIHdobyBoYXZlIGNvbWUgdG8gYmVsaWV2ZSB0aGF0IGlmIG9ubHkgdGhleSBjb3VsZCBiZSBkaWZmZXJlbnQsIHRoZXkgd291bGQgYmUgdmFsdWVkLgoKVGhyb3VnaG91dCBUaGUgQmx1ZXN0IEV5ZSBNb3JyaXNvbiBleHBsb3JlcyB0aGUgaW1wYWN0IG9mIHBvcHVsYXIgYW5kIGNvbnN1bWVyIGN1bHR1cmVzIG9uIHlvdXRoIGlkZW50aXRpZXMgYW5kIGN1bHR1cmVzLiBTdHVkaWVzIHNob3cgdGhhdCBwYXJhbGxlbHMgZXhpc3QgYmV0d2VlbiBBc2lhbi1BbWVyaWNhbnMgYW5kIEFmcmljYW4tQW1lcmljYW5zIGFzIHRoZXkgbmVnb3RpYXRlIHRoZSBwcm9jZXNzIG9mIEFtZXJpY2FuaXphdGlvbi4gSW4gdGhlaXIgcmVzZWFyY2ggTGVlIGFuZCBWYXVnaHQgYW5hbHl6ZSBzdHVkaWVzIG9mIGZpcnN0IGFuZCBzZWNvbmQgZ2VuZXJhdGlvbiB5b3V0aCBvZiBjb2xvciB0byBleHBsb3JlIHRoZWlyIHZ1bG5lcmFiaWxpdHkgdG8gcmFjaWFsaXplZCBpbWFnZXMgb2YgZ2VuZGVyIGFuZCBzZXh1YWxpdHkuIFRoZXNlIGltYWdlcyBhcmUgcmVmbGVjdGVkIGluIGFuZCBwZXJwZXR1YXRlZCBieSBkb21pbmFudCBmb3JtcyBvZiBwb3B1bGFyIGFuZCBjb25zdW1lciBjdWx0dXJlcy4gTGVlIGFuZCBWYXVnaHQgbWFpbnRhaW4gdGhhdCBnZW5kZXIsIHJhY2UgYW5kIGNsYXNzIGluZm9ybSB0aGUgcHJvY2VzcyBvZiBBbWVyaWNhbml6YXRpb24sIGluY2x1ZGluZyByYWNpYWxpemVkIHNleHVhbGl6YXRpb24uIFRoZWlyIHJlc2VhcmNoIGNsZWFybHkgc2hvd2VkIHRoYXQgdGhlIEFzaWFuLUFtZXJpY2FuIHdvbWVuIGluIGJvdGggc3R1ZGllcyB3ZXJlIHNjaG9vbGVkIGJ5IHBvcHVsYXIgY3VsdHVyZSB0byBvYmplY3RpZnkgdGhlbXNlbHZlcywgdGhlaXIgYm9kaWVzIGFuZCB0aGVpciBjdWx0dXJlcy4gVGhleSByZXBvcnQgdGhhdCB0aGUgeW91bmcgd29tZW4gZXhwZXJpZW5jZWQgYSBwZXJuaWNpb3VzIGludGVybmFsaXphdGlvbiBvZiBkb21pbmFudCBpZGVhcyBvZiBBbWVyaWNhbml6YXRpb24gKExlZSBhbmQgVmF1Z2h0LCA0NTctNDY2KS4gVGhlc2Ugc3R1ZGllcywgd2hpbGUgdGhleSBpbnZvbHZlZCBBc2lhbi1BbWVyaWNhbiBnaXJscyBhbmQgd29tZW4gc2hlZCBsaWdodCBvbiB0aGUgaW1wYWN0LCBjYW4gYmUgZWFzaWx5IHNlZW4gdG8gc2ltaWxhcmx5IGFwcGx5IHRvIEFmcmljYW4tQW1lcmljYW4gdGVlbnMgYW5kIHdvbWVuLiBNb3JyaXNvbidzIHBvcnRyYXlhbCBvZiB3b21lbiBhbmQgZ2lybHMgYXMgdGhleSBzdHJ1Z2dsZWQgd2l0aCByYWNpc3Qgc3RhbmRhcmRzIG9mIGJlYXV0eSBkZW1vbnN0cmF0ZSB0aGUgYWNjdXJhY3kgb2YgdGhpcyBvYnNlcnZhdGlvbi4KClRoZXJlIGNvbnRpbnVlIHRvIGJlIG90aGVyIHN0dWRpZXMgdG8gZXhhbWluZSwgYXMgc3VnZ2VzdGVkIGJ5IFRoZSBCbHVlc3QgRXllIGluIGl0cyBpbnZlc3RpZ2F0aW9uIG9mIHJhY2lzbSBhbmQgYmVhdXR5IHN0YW5kYXJkcy4gUm9ja3F1ZW1vcmUgcG9zaXRzIHRoYXQgc2tpbiBjb2xvciBzdHJhdGlmaWNhdGlvbiB3aXRoaW4gdGhlIEJsYWNrIGNvbW11bml0eSwgY29tYmluZWQgd2l0aCBhIGxvdyByYXRlIG9mIG1hcnJpYWdlYWJsZSBtZW4gYW5kIGhpZ2ggcmF0ZXMgb2YgaW50ZXJyYWNpYWwgbWFycmlhZ2VzIGFtb25nIHRoZSBtb3N0IGVkdWNhdGVkIGFuZCBhZmZsdWVudCBibGFjayBtZW4gaGFzIGNyZWF0ZWQgYSBzb2NpYWwgY29udGV4dCB0aGF0IGRpZmZlcmVudGlhdGVzIHRoZSBpbnRlcmFjdGlvbmFsIGV4cGVyaWVuY2Ugb2YgYmlyYWNpYWwgbWVuIGFuZCB3b21lbi4gQXMgYSByZXN1bHQsIHRoZSBpbnRlcnBlcnNvbmFsIHRlbnNpb24gYmV0d2VlbiBCbGFjayBhbmQgYmlyYWNpYWwgd29tZW4gcnVucyBoaWdoLiBSb2NrcXVlbW9yZSdzIGZpbmRpbmdzIGlsbHVzdHJhdGUgaG93IHNraW4gY29sb3IgYWN0cyBhcyBhIG1pY3JvbGV2ZWwgbWFuaWZlc3RhdGlvbiBvZiBvcHByZXNzaW9uIGZvciB3b21lbiBvZiBBZnJpY2FuIGRlc2NlbnQgKDQ4NS0gNTAzKS4gVGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHN0dWR5IHNlcnZlIHRvIHZhbGlkYXRlIE1vcnJpc29uJ3MgdHJlYXRtZW50IG9mIHJhY2lhbCBpZGVudGl0eSBjb25zdHJ1Y3Rpb24gaW4gVGhlIEJsdWVzdCBFeWUuCgpBbm90aGVyIHRvcGljIHRoYXQgTW9ycmlzb24gZXhwbG9yZXMgaXMgdGhlIGVmZmVjdHMgb2Ygc2tpbiBjb2xvciBpbiB0aGUgY29udGV4dCBvZiByYWNpc20uIEh1bnRlciBleHBsb3JlcyB0aGUgZWZmZWN0cyBvZiBza2luIGNvbG9yIG9uIGxpZmUgb3V0Y29tZXMgZm9yIEFmcmljYW4tQW1lcmljYW4gYW5kIE1leGljYW4tQW1lcmljYW4gd29tZW4uIEh1bnRlciBleHBsYWlucywgdXNpbmcgYSBoaXN0b3JpY2FsIGZyYW1ld29yayBvZiBFdXJvcGVhbiBjb2xvbmlhbGlzbSBhbmQgc2xhdmVyeSwgaG93IHNraW4gY29sb3IgaGllcmFyY2hpZXMgd2VyZSBlc3RhYmxpc2hlZCBhbmQgYXJlIG1haW50YWluZWQuIEh1bnRlciB1c2VzIHRoZSBjb25jZXB0IG9mIHNvY2lhbCBjYXBpdGFsIHRvIGV4cGxhaW4gaG93IGJlYXV0eSwgZGVmaW5lZCB0aHJvdWdoIGxpZ2h0IHNraW4sIHdvcmtzIGFzIGNhcGl0YWwgYW5kIGFzIGEgc3RyYXRpZnlpbmcgYWdlbnQgZm9yIHdvbWVuIG9uIHRoZSBkaW1lbnNpb25zIG9mIGVkdWNhdGlvbiwgaW5jb21lLCBhbmQgc3BvdXNhbCBzdGF0dXMuIEFjY29yZGluZyB0byBIdW50ZXIsIGFuYWx5c2lzIHNob3dzIHRoYXQgbGlnaHQgc2tpbiBwcmVkaWN0cyBoaWdoZXIgZWR1Y2F0aW9uYWwgYXR0YWlubWVudCBmb3IgYm90aCBncm91cHMgb2Ygd29tZW4uIExpZ2h0IHNraW4gZGlyZWN0bHkgcHJlZGljdHMgaGlnaGVyIHBlcnNvbmFsIGVhcm5pbmdzIGZvciBBZnJpY2FuLUFtZXJpY2FuIHdvbWVuLCBhcyB3ZWxsIGFzIGhpZ2hlciBzcG91c2FsIHN0YXR1cyBmb3IgQWZyaWNhbi1BbWVyaWNhbiB3b21lbi4gVGhlIHN0dWR5IHNob3dzIHRoYXQgd2l0aCByZXNwZWN0IHRvIGVkdWNhdGlvbiwgcGVyc29uYWwgaW5jb21lLCBhbmQgc3BvdXNhbCBzdGF0dXMsIHNraW4gY29sb3IgbW9kaWZpZXMgb3V0Y29tZXMgYW5kIHByb2R1Y2VzIGFkdmFudGFnZXMgZm9yIHRoZSBsaWdodCBza2lubmVkLiBIdW50ZXIgc3VnZ2VzdHMgYW4gZXhwbGFuYXRpb24sIHRoYXQsIGl0IGhhcHBlbnMgaW4gcGFydCBiZWNhdXNlIHJhY2lhbCBpZGVvbG9naWVzIGRldmFsdWUgdGhlIHBoZW5vdHlwZXMgb2YgQWZyaWNhbi1BbWVyaWNhbnMgYW5kIE1leGljYW4tQW1lcmljYW5zIGFuZCBhc3NvY2lhdGVzIHRoZWlyIGZlYXR1cmVzIHdpdGggaWdub3JhbmNlIGFuZCB1Z2xpbmVzcy4gSHVudGVyIGNvbmNsdWRlcyB0aGF0IEV1cm9wZWFuIGNvbG9uaXphdGlvbiBhbmQgc2xhdmVyeSBoYXZlIGxlZnQgYSBsYXN0aW5nIGltcHJpbnQgb24gQWZyaWNhbi1BbWVyaWNhbiBhbmQgTWV4aWNhbi1BbWVyaWNhbiB3b21lbjogc2tpbiBjb2xvciBoaWVyYXJjaGllcyB0aGF0IGNvbnRpbnVlIHRvIHByaXZpbGVnZSBsaWdodCBza2luIG92ZXIgZGFyayBza2luIChIdW50ZXIsIDE3NS0xOTMpLiBNb3JyaXNvbiBleHBsb3JlcyB0aGUgZWZmZWN0cyBvZiBza2luIGNvbG9yIHN0cmF0aWZpY2F0aW9uIGluIGhlciB0cmVhdG1lbnQgb2YgdGhlIGFudGlwYXRoeSBiZXR3ZWVuIENsYXVkaWEgYW5kIEZyaWVkYSBhbmQgTWF1cmVlbiBQZWFsLgoKS3VlbnogYWRkcmVzc2VzIHRoZSBkaXNhbGxvd2FuY2Ugb2YgdGhlIHNwZWNpZmljIGN1bHR1cmVzIGFuZCBoaXN0b3JpZXMgb2YgQWZyaWNhbi1BbWVyaWNhbnMgYW5kIGJsYWNrIHdvbWVuIGZpZ3VyZWQgaW4gVGhlIEJsdWVzdCBFeWUsIGFyZ3VpbmcgdGhhdCBpdCBpcyBwcmltYXJpbHkgYXMgYSBjb25zZXF1ZW5jZSBvZiBvciBzaWRlbGluZSB0byB0aGUgbW9yZSBnZW5lcmFsIGFubmloaWxhdGlvbiBvZiBwb3B1bGFyIGZvcm1zIGFuZCBpbWFnZXMgYnkgYW4gZXZlciBtb3JlIGFsbC1wZXJ2YXNpdmUgYW5kIGluc2lkaW91cyBtYXNzIGN1bHR1cmUgaW5kdXN0cnkuIEFjY29yZGluZyB0byBLdWVueiwgdGhpcyBpbmR1c3RyeSBpbmNyZWFzaW5nbHkgZGlzYWxsb3dzIHRoZSByZXByZXNlbnRhdGlvbiBvZiBhbnkgaW1hZ2Ugbm90IHByZW1pc2VkIG9uIGNvbnN1bXB0aW9uIG9yIHRoZSBwcm9kdWN0aW9uIG9mIG5vcm1hdGl2ZSB2YWx1ZXMgY29uZHVjaXZlIHRvIGl0LiBUaGVzZSB2YWx1ZXMgdGVuZCB0byBiZSByaWdpZGx5IHRpZWQgdG8gZ2VuZGVyIGFuZCBhcmUgcmFjZS1zcGVjaWZpYyB0byB0aGUgZXh0ZW50IHRoYXQgcmFjaWFsIGFuZCBldGhuaWMgZGlmZmVyZW5jZXMgYXJlIG5vdCBhbGxvd2VkIHRvIGJlIHJlcHJlc2VudGVkLiBLdWVueiBmdXJ0aGVyIGFzc2VydHMgdGhhdCBmb3IgYW55b25lIG5vdCByZXByZXNlbnRlZCB0aGVyZWluLCBhbmQgZXNwZWNpYWxseSBmb3IgQWZyaWNhbi1BbWVyaWNhbnMsIGludGVyYWN0aW9uIHdpdGggbWFzcyBjdWx0dXJlIGZyZXF1ZW50bHkgcmVxdWlyZXMgYWJkaWNhdGlvbiBvZiBzZWxmIG9yIHRoZSBhYmlsaXR5IHRvIHNlZSBvbmVzZWxmIGluIGV0aCBib2R5IG9mIGFub3RoZXIgKEt1ZW56LCA0MjEtNDMxKS4KCkt1ZW56IG5vdGVzIHRoYXQgdGhlIG5vdmVsJ3MgbW9zdCBvYnZpb3VzIGFuZCBwZXJ2YXNpdmUgaW5zdGFuY2Ugb2YgdGhpcyBpcyBpbiB0aGUgc2VlbWluZ2x5IGVuZGxlc3MgcmVwcm9kdWN0aW9uIG9mIGltYWdlcyBvZiBmZW1pbmluZSBiZWF1dHkgaW4gZXZlcnlkYXkgb2JqZWN0cyBhbmQgY29uc3VtZXIgZ29vZHM6IHdoaXRlIGJhYnkgZG9sbHMsIFNoaXJsZXkgVGVtcGxlIGN1cHMsIE1hcnkgSmFuZSBjYW5kaWVzLCBldmVuIHRoZSBjbG90aGVzIG9mICJkcmVhbSBjaGlsZCIgTWF1cmVlbiBQZWFsLiBLdWVueiBjb21tZW50cyB0aGF0ICJUaGUmIzgyMzA7 S2l0ZSBSdW5uZXIgQW5ub3RhdGVkIEJpYmxpb2dyYXBoeSBCZW5uZXR0LA== S2l0ZSBSdW5uZXIgQW5ub3RhdGVkIEJpYmxpb2dyYXBoeSBCZW5uZXR0LA== MQ== MzEwMTk1NjU= NQ== OQ== QTIwMzgyNTg= MzYyNTAzMg== MTEwNjc= NTA= Q29sbGVnZSBKdW5pb3IgKDNyZCB5ZWFyKQ== bi9h TGl0ZXJhdHVyZQ== TGl0ZXJhdHVyZSAvIFBvZXRyeQ== UmVzZWFyY2ggUGFwZXI= MQ== MTE3ODY2 MjgxNQ== MTMxMTgzMDc0Ng== IFBlbmd1aW4sIDIwMDMuCgpNb3JlIHRoYW4gYXBwbHlpbmcgZm9ybWFsaXN0IGNyaXRpY2lzbSB0byBUaGUgS2l0ZSBSdW5uZXIsIHRoZSBzdG9yeSBzZWVtcyB0byBjcnkgb3V0IGZpcnN0IGFuZCBmb3JlbW9zdCBmb3IgYSBoaXN0b3JpY2FsIG9yIGhpc3RvcmljaXN0IHR5cGUgb2YgYW5hbHlzaXMsIHNpbmNlIGl0IHdvdWxkIGxpdGVyYWxseSBtYWtlIG5vIHNlbnNlIHVubGVzcyB0aGUgcmVhZGVyIGhhZCBzb21lIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGV2ZW50cyBpbiBBZmdoYW5pc3RhbiBmcm9tIDE5NzUgdG8gMjAwMSwgd2hpY2ggbGVmdCB0aGUgY291bnRyeSBkZXZhc3RhdGVkIGFuZCBtaWxsaW9ucyBvZiBpdHMgcGVvcGxlIGFzIHJlZnVnZWVzLiBJbiBhZGRpdGlvbiwgTWFyeGlzdCBhbmFseXNpcyBvZiBzb2NpYWwgY2xhc3NlcyBhbmQgb3BwcmVzc2VkIGV0aG5pYyBncm91cHMgYXMgYXBwbHksIGFsb25nIHdpdGggdGhlIGZhaWx1cmUgb2YgU292aWV0LXN0eWxlIENvbW11bmlzbSB0byBicmluZyB0byBwcm9taXNlZCBsaWJlcmF0aW9uLiBGcm9tIGEgZmVtaW5pc3QgcG9pbnQtb2YtdmlldywgdGhlIHN0b3J5IGlzIHZlcnkgZXhwbGljaXQgaW4gaXRzIGRlc2NyaXB0aW9uIG9mIHRoZSBhdXRob3JpdGFyaWFuIGFuZCBwYXRlcm5hbGlzdGljIG5hdHVyZSBvZiB0aGlzIHNvY2lldHksIGFuZCBpdHMgb3BwcmVzc2lvbiBvZiB3b21lbiBhbmQgY2hpbGRyZW4sIHN5bWJvbGl6ZWQgYnkgdGhlIHJhcGUgb2YgSGFzc2FuIGFuZCBoaXMgc29uIFNvaHJhYiBieSB0aGUgc2FtZSBtYW4uIEluIHBzeWNob2FuYWx5dGljIHRlcm1zLCB0aGUgbm92ZWwgaXMgYWxzbyBhIGNvbWluZyBvZiBhZ2Ugc3RvcnkgaW4gd2hpY2ggdGhlIHNlbGZpc2ggYW5kIGltbWF0dXJlIEFtaXIsIGxpdmluZyBhcyBhIG1lbWJlciBvZiBhIHByaXZpbGVnZWQgY2xhc3MsIGxvc2VzIGV2ZXJ5dGhpbmcgYW5kIHRoZW4gY29tZXMgdG8gbWF0dXJpdHkgaW4gZXhpbGUgaW4gQ2FsaWZvcm5pYS4gQXMgYSBncm93biBtYW4sIGhlIGlzIGdpdmVuIGEgc2Vjb25kIGNoYW5jZSB0byByZWRlZW0gaGltc2VsZiBhbmQgbWFrZSB1cCBmb3IgdGhlIGV2aWwgaGUgaGFzIGRvbmUgdG8gaGlzIGhhbGYtYnJvdGhlciBIYXNzYW4sIGJ5IHNhdmluZyBoaXMgbmVwaGV3IGZyb20gdGhlIHNhbWUgZmF0ZS4gQXMgYSBjaGlsZCwgaGUgd2FzIGplYWxvdXMgb2YgdGhlIGF0dGVudGlvbiBoaXMgZmF0aGVyIEJhYmEgcGFpZCB0byBIYXNzYW4sIGJ1dCBhcyBhIG1hbiBoZSBhZG1pdHMgaGlzIHdyb25nZG9pbmcgYW5kIG1ha2VzIGEgcmVzcG9uc2libGUgZGVjaXNpb24gYXQgdGhlIHJpc2sgb2YgaGlzIG93biBsaWZlIHRvIHJlc2N1ZSBIYXNzYW4ncyBzb24uCgpIaXN0b3JpY2lzdCBhbmFseXNpcyBpcyBlc3NlbnRpYWwgZm9yIHVuZGVyc3RhbmRpbmcgVGhlIEtpdGUgUnVubmVyIHNpbmNlIHRoZSBub3ZlbCBpcyBpbiBmYWN0IGEgaGlnaGx5IHN5bWJvbGljIG5hcnJhdGl2ZSBhYm91dCB0aGUgaGlzdG9yeSBvZiBBZmdoYW5pc3RhbiBmcm9tIDE5NzUgdG8gMjAwMS4gSXQgY292ZXJzIHRoZSBlbnRpcmUgcGVyaW9kIGZyb20gdGhlIG92ZXJ0aHJvdyBvZiB0aGUga2luZyBhbmQgdGhlIG9sZCByZWdpbWUgdG8gdGhlIFNvdmlldCBpbnZhc2lvbiBpbiAxOTc5IGFuZCB0aGUgQW1lcmljYW4gaW50ZXJ2ZW50aW9uIG9mIHRoZSBzaWRlIG9mIHRoZSBBZmdoYW4gJ2ZyZWVkb20gZmlnaHRlcnMnLiBBZnRlciB0aGUgU292aWV0cyBhcmUgZHJpdmVuIG91dCBpbiAxOTg5LCB0aGUgVGFsaWJhbiB0YWtlIG92ZXIsIGFuZCB0aGVpciBhbGx5IE9zYW1hIGJpbiBMYWRlbiBvcmdhbml6ZWQgdGhlIGF0dGFja3Mgb2YgU2VwdGVtYmVyIDExLCAyMDAxIGZyb20gaGlzIGJhc2UgaW4gQWZnaGFuaXN0YW4uIEF0IHRoZSB2ZXJ5IHN0YXJ0IG9mIHRoZSBub3ZlbCwgQW1pciBtYWtlcyB0aGUgb2JzZXJ2YXRpb24gdGhhdCAiaXQncyB3cm9uZyB3aGF0IHRoZXkgc2F0IGFib3V0IHRoZSBwYXN0LCBJJ3ZlIGxlYXJuZWQgYWJvdXQgaG93IHlvdSBjYW4gYnVyeSBpdC4gQmVjYXVzZSB0aGUgcGFzdCBjYW4gY2xhdyBpdHMgd2F5IG91dCIgKEhvc3NlaW5pIDEpLiBBbWlyIGFuZCBoaXMgZmF0aGVyIEJhYmEgZXNjYXBlIGZyb20gdGhlIFNvdmlldHMgdG8gUGFraXN0YW4gYW5kIHRoZW4gdG8gdGhlIFVuaXRlZCBTdGF0ZXMsIGFzIGRpZCBtaWxsaW9ucyBvZiBvdGhlciBBZmdoYW5zIGR1cmluZyB0aGlzIHBlcmlvZC4gQW1pciByZXR1cm5zIHRvIEFmZ2hhbmlzdGFuIHJpZ2h0IGF0IHRoZSB0aW1lIHdoZW4gdGhlIFUuUy4gaGFkIGludGVydmVuZWQgYWdhaW4gdG8gb3ZlcnRocm93IHRoZSBUYWxpYmFuLCBpbiBvcmRlciB0byBzYXZlIGhpcyBuZXBoZXcgU29ocmFiLiBUaGlzIGlzIHRoZSBoaXN0b3JpY2FsIGNvbnRleHQgaW4gd2hpY2ggdGhlc2UgY2hhcmFjdGVycyBtdXN0IG5hdmlnYXRlIGFuZCBzdXJ2aXZlLCBldmVuIHRob3VnaCBpdCBoYXMgbGVmdCB0aGVpciBjb3VudHJ5IGRlc3Ryb3llZC4gUmVwZWF0ZWQgaW52YXNpb24sIGNoYW9zLCByZWZ1Z2VlcywgZGVhdGggYW5kIGRlc3RydWN0aW9uLCB0aGlzIGhhcyBiZWVuIHRoZWlyIGV4cGVyaWVuY2UsIGFsdGhvdWdoIHRocm91Z2ggbW9zdCBvZiBpdCBBbWlyIGFuZCBoaXMgZmF0aGVyIHdlcmUgc2FmZSBpbiBDYWxpZm9ybmlhLiBIaXMgZmF0aGVyJ3Mgb2xkIGZyaWVuZCBSYWhpbSBLaGFuIHJlY2FsbHMgaGltIGZyb20gQ2FsaWZvcm5pYSB0byBQYWtpc3Rhbiwgd2hpY2ggbGVhZHMgaGltIHRvIHJlZmxlY3QgYmFjayBvbiB0aGUgZXZlbnRzIG9mIDE5NzUgdGhhdCAibWFkZSBtZSB3aGF0IEkgYW0gdG9kYXkiIChIb3NzZWluaSAyKS4gQW1pciBkb2VzIG5vdCBwYXJ0aWN1bGFybHkgbGlrZSBoaW1zZWxmIG9yIHdoYXQgaGlzdG9yeSBoYXMgbWFkZSBoaW0uIEluIHRoZSBlbmQsIHRob3VnaCwgaGUgZG9lcyBmaW5kIGEga2luZCBvZiByZWRlbXB0aW9uIGJ5IGJyaW5naW5nIGhpcyBuZXBoZXcgc2FmZWx5IHRvIENhbGlmb3JuaWEsIHRodXMgc2F2aW5nIGhpbSBpbiBvcmRlciB0byBtYWtlIHVwIGZvciB0aGUgd2lja2VkbmVzcyBoZSBjb21taXR0ZWQgYWdhaW5zdCBoaXMgaGFsZi1icm90aGVyIEhhc3Nhbi4gV2hldGhlciB0aGUgY291bnRyeSBhcyBhIHdob2xlIGNhbiBldmVyIGJlZW4gcmVkZWVtZWQgc2VlbXMgZmFyIG1vcmUgcHJvYmxlbWF0aWMsIGJ1dCBtb3JlIHRoYW4gbGlrZWx5IGl0IHdpbGwgbm90LgoKRnJvbSBhIE1hcnhpc3QgcG9pbnQtb2YtdmlldywgQW1pciBhbmQgQmFiYSBjb21lIGZyb20gYW4gdXBwZXIgY2xhc3MgZmFtaWx5IHdoaWxlIEFsaSBhbmQgSGFzc2FuIGFyZSBldGhuaWMgbWlub3JpdGllcyBhbmQgdHJlYXRlZCBhcyBhIHNlcnZhbnQgY2xhc3MuIE92ZXJhbGwsIHRoaXMgaXMgYSBoaWdobHkgYXV0aG9yaXRhcmlhbiBzb2NpZXR5IGluIEFmZ2hhbmlzdGFuLCBhbmQgZXZlbiB0aG91Z2ggQW1pciBhbmQgSGFzc2FuIGFyZSBpbiBmYWN0IGhhbGYtYnJvdGhlcnMsIHRoZXkgYXJlIG5ldmVyIHRvbGQgdGhpcyBkdXJpbmcgdGhlaXIgY2hpbGRob29kLiBBbGkgYW5kIEhhc3NhbiBhcmUgZXh0cmVtZWx5IHN1YnNlcnZpZW50IHRvIEFtaXIsIHdobyBnZW5lcmFsbHkgdHJlYXRzIHRoZW0gd2l0aCBjb250ZW1wdC4gSGUgZG9lcyBub3RoaW5nIHRvIHByZXZlbnQgSGFzc2FuIGZyb20gYmVpbmcgcmFwZWQgYnkgdGhlIHRocmVlIG9sZGVyIGJveXMgYWZ0ZXIgdGhlIGtpdGUgcnVubmluZyBjb250ZXN0LCBub3IgZG9lcyBoZSB0ZWxsIEJhYmEgYW5kIEFsaSB0aGUgdHJ1dGggYWJvdXQgaXQuIEhhc3NhbiBpcyBleHRyZW1lbHkgZGVwcmVzc2VkIGFuZCB3aXRoZHJhd24gYWZ0ZXIgdGhlIHJhcGUsIGJ1dCB3aGVuIEFsaSBhc2tzIGlmIGFueXRoaW5nIGhhcHBlbmVkIGhlIHNpbXBseSBzYXlzICJob3cgc2hvdWxkIEkga25vdyB3aGF0J3Mgd3Jvbmcgd2l0aCBoaW0/LCIgYW5kIHRoZW4gb3JkZXJzIEFsaSB0byBsaWdodCB0aGUgc3RvdmUgYmVjYXVzZSBoZSBmZWVscyBjb2xkIChIb3NzZWluaSA4MSkuIEJhYmEgaXMgYWxzbyBjb25jZXJuZWQgYW5kIEFtaXIgbGllcyB0byBoaW0gYXMgd2VsbCwgYW5kIG5vdGVzIHRoYXQgIkkgY291bGRuJ3QgaGVscCBoYXRpbmcgdGhlIHdheSBoaXMgYnJvdyBmdXJyb3dlZCB3aXRoIHdvcnJ5IiAoSG9zc2VpbmkgODIpLiBUaGlzIGlzIHdoeSBoZSBmaW5hbGx5IGdldHMgSGFzc2FuIGFuZCBBbGkgdGhyb3duIG91dCBvZiB0aGUgaG91c2UsIGJ5IGNsYWltaW5nIHRoYXQgdGhlIGJveSBzdG9sZSBzb21lIG1vbmV5IGFuZCBhIHdhdGNoLiBBbHRob3VnaCB0aGUgU292aWV0cyBjbGFpbSB0byBiZSBNYXJ4aXN0cyBhbmQgcHJvbWlzZSBsaWJlcmF0aW9uIGZyb20gdGhlIHRyYWRpdGlvbmFsIHNvY2lldHksIGluIHJlYWxpdHkgdGhlIG9wcHJlc3Npb24gYW5kIGRlc3RydWN0aW9uIHRoZXkgaW5mbGljdCBvbiBBZmdoYW5pc3RhbiBpcyBmYXIgd29yc2UuIFdoZW4gUmFoaW0gS2hhbiByZXR1cm5lZCB0byBLYWJ1bCBpbiAxOTg2IHRvIGxpdmUgYWxvbmUgaW4gdGhlIG9sZCBob3VzZSwgaGUgZm91bmQgdGhlIGNpdHkgbGFyZ2VseSBkZXNlcnRlZCBhbmQgZGV2YXN0YXRlZCwgYW5kIGhlIHNpbXBseSBzdGF5ZWQgaW5zaWRlICJsaXN0ZW5pbmcgdG8gdGhlIG5ld3MsIHdhdGNoaW5nIHRoZSBjb21tdW5pc3QgcHJvcGFnYW5kYSBvbiB0ZWxldmlzaW9uIiAoSG9zc2VpbmkgMjAzKS4gQWx0aG91Z2ggdGhlIFRhbGliYW4gYWxzbyBwcm9taXNlZCBsaWJlcmF0aW9uIGZyb20gYm90aCB0aGUgV2VzdCBhbmQgdGhlIGZvcm1lciBDb21tdW5pc3QgYWxsaWVzIG9mIHRoZSBTb3ZpZXRzLCBpbiB0aGUgZW5kIHRoZXkgYWxzbyBpbnN0YWxsIGFuIGV4dHJlbWVseSByZXByZXNzaXZlIHBvbGljZSBzdGF0ZS4gT25lIG9mIHRoZSBzaWdodHMgdGhhdCBBbWlyIHNhdyB1cG9uIGhpcyBhcnJpdmFsIGluIEthYnVsIHdhcyAiYSB5b3VuZyBtYW4gZGFuZ2xlZCBmcm9tIHRoZSBlbmQgb2YgYSByb3BlIHRpZWQgdG8gYSBiZWFtLCBoaXMgZmFjZSBwdWZmeSBhbmQgYmx1ZSYjODIzMDsuSGFyZGx5IGFueW9uZSBzZWVtZWQgdG8gbm90aWNlIGhpbSIgKEhvc3NlaW5pIDI1OSkuCgpCb3RoIGZlbWluaXN0IGFuZCBwc3ljaG9hbmFseXRpYyB0aGVtZXMgYXJlIGFsc28gaW1wb3J0YW50IGluIHRoaXMgc3RvcnksIGluIHRoZSB3YXkgdGhhdCBmYW1pbGllcyBhbmQgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIG1lbiBhbmQgd29tZW4gYXJlIHN0cnVjdHVyZWQsIGFzIHdlbGwgYXMgdGhlIHBoeXNpY2FsIGFuZCBzZXh1YWwgYWJ1c2UgdG8gd2hpY2ggd29tZW4gYW5kIGJveXMgYXJlIHN1YmplY3RlZC4gRXZlbiBpbiBBbWVyaWNhLCB0aGUgQWZnaGFucyBmb2xsb3cgc3RyaWN0IHBhdHJpYXJjaGFsIGN1c3RvbXMsIHN1Y2ggYXMgdGhlIGZhY3QgdGhhdCBBbWlyIGlzIG5vdCBhbGxvd2VkIHRvIGJlIGFsb25lIHdpdGggR2VuZXJhbCBUaGFoZXJpJ3MgZGF1Z2h0ZXIgU29yYXlhLCBvciB0byBmbGlydCBhbmQgZ29zc2lwIHdpdGggaGVyLiBCYWJhIHJlbWluZHMgaGltIHRoYXQgdGhlIEdlbmVyYWwgaXMgIlBhc2h0dW4gdG8gdGhlIHJvb3QiIGFuZCB0aGF0IGhvbm9yIGFuZCBwcmlkZSBhcmUgY2VudHJhbCB0byBoaXMgaWRlbnRpdHksICJlc3BlY2lhbGx5IHdoZW4gaXQgY29tZXMgdG8gdGhlIGNoYXN0aXR5IG9mIGEgd2lmZS4gT3IgYSBkYXVnaHRlciIgKEhvc3NlaW5pIDE0NSkuIFdvbWVuIGRvIG5vdCBoYXZlIHNleHVhbCByZWxhdGlvbnMgYmVmb3JlIG1hcnJpYWdlLiBFdmVuIHRoZSBoaW50IG9mIHN1Y2ggY29uZHVjdCBtZWFudCB0aGF0ICJwb2lzb24gdG9uZ3VlcyB3b3VsZCBmbGFwLiBBbmQgc2hlIHdvdWxkIGJlYXIgdGhlIGJydW50IG9mIHRoYXQgcG9pc29uLCBub3QgbWUiIChIb3NzZWluaSAxNDYpLiBBcyBpbiBhbGwgcGF0cmlhcmNoYWwgY3VsdHVyZXMsIGEgZG91YmxlIHN0YW5kYXJkIGV4aXN0cyBmb3IgYWxsIG1lbiBhbmQgd29tZW4sIGFsdGhvdWdoIHlvdW5nZXIgbWVuIGFyZSBhbHNvIHJlcXVpcmVkIHRvIGRlZmVyIHRvIHNlbmlvciBtZW4gb2YgaGlnaGVyIHJhbmsgYW5kIHN0YXR1cy4gQW1pciBpcyBhbHNvIGplYWxvdXMgb2YgSGFzc2FuIGFuZCB0aGUgYXR0ZW50aW9uIGhlIHJlY2VpdmVzIGZyb20gQmFiYSwgYWx0aG91Z2ggaGUgaXMgbm90IGNlcnRhaW4gd2h5LCBidXQgZXZlbiBhcyBhIHNtYWxsIGNoaWxkIGhlIGRlbWFuZHMgdGhhdCBhbGwgb2YgQmFiYSdzIGF0dGVudGlvbiBiZSBmb2N1c2VkIG9uIGhpbS4gU2ltaWxhcmx5LCBoaXMgbmVwaGV3IFNvaHJhaCBhbHNvIGZlZWxzIHNoYW1lIGF0IGhhdmluZyBiZWVuIHJhcGVkIGJ5IHRoZSBzYW1lIG1hbiB3aG8gcmFwZWQgaGlzIGZhdGhlciwgYW5kIHRlbGxzIEFtaXIgdGhhdCBoZSBzaG91bGQgaGF2ZSBzaW1wbHkgbGV0IGhpbSBkaWUuIEluIHRoZSBlbmQsIGhvd2V2ZXIsIEFtaXIgY2Fubm90IGFiYW5kb24gaGltIHRvIGRlYXRoIGxpa2UgaGUgZGlkIHdpdGggSGFzc2FuLCBhbmQgYXJyYW5nZXMgaGlzIHZpc2EgdG8gY29tZSB0byBDYWxpZm9ybmlhLiBIZSBzdWZmZXJzIGEgY3Jpc2lzIG9mIGNvbnNjaWVuY2UgYW5kIHJlYWxpemVzIHRoYXQgQmFiYSB3YXMgd3JvbmcgaW4gYmVsaWV2aW5nIHRoYXQgR29kIGRpZCBub3QgZXhpc3QsIGhvcGluZyBvbmx5IHRoYXQgSGUgd2lsbCAiZm9yZ2l2ZSB0aGF0IEkgaGF2ZSBiZXRyYXllZCwgbGllZCwgYW5kIHNpbm5lZCB3aXRoIGltcHVuaXR5IG9ubHkgdG8gdHVybiB0byBIaW0gbm93IGluIG15IGhvdXIgb2YgbmVlZCIgKEhvc3NlaW5pIDM0NikuCgpPdmVyYWxsLCB0aGlzIGlzIGEgdmVyeSBncmltIGFuZCBkZXByZXNzaW5nIG5vdmVsIGFib3V0IHRoZSBkZXZhc3RhdGlvbiBvZiBhIGNvdW50cnkgb3ZlciBhIHBlcmlvZCBvZiB0aGlydHkgeWVhcnMuIEFsdGhvdWdoIHRoZSBvbGQgYXV0aG9yaXRhcmlhbiBhbmQgcGF0cmlhcmNoYWwgcmVnaW1lIHRoYXQgQmFiYSwgQW1pciBhbmQgSGFzc2FuIHdlcmUgbGl2aW5nIHVuZGVyIGluIDE5NzUgd2FzIGhhcmRseSBhZG1pcmFibGUsIHRoZSBTb3ZpZXQgaW52YXNpb24gaW4gMTk3OSBhbmQgdGhlIHRha2VvdmVyIGJ5IHRoZSBmYXNjaXN0IFRhbGliYW4gbWFkZSB0aGUgY291bnRyeSBkb3ducmlnaHQgaW50b2xlcmFibGUuIFRoaXMgaXMgdGhlIGhpc3RvcmljYWwgYW5kIHBzeWNob2xvZ2ljYWwgbmlnaHRtYXJlIHRocm91Z2ggd2hpY2ggdGhlIGNoYXJhY3RlcnMgbXVzdCBuYXZpZ2F0ZSwgYW5kIGV2ZW4gdGhvc2Ugd2hvIGJlbGlldmVkIHRoZXkgd2VyZSBzYWZlIGluIENhbGlmb3JuaWEsIGxpa2UgQmFiYSBhbmQgQW1pciwgY291bGQgbm90IGVzY2FwZSB0aGUgd2VpZ2h0IG9mIGhpc3RvcnkgaW4gdGhlIGVuZC4gVG8gaGlzIGNyZWRpdCwgQW1pciBhcyBhIGdyb3duIG1hbiBkb2VzIG5vdCBzaW1wbHkgcnVuIGF3YXkgZnJvbSB0aGlzJiM4MjMwOw== VGhpbmdzIEZhbGwgQXBhcnQgYW5kIEdpbGdhbWVzaA== VGhpbmdzIEZhbGwgQXBhcnQgYW5kIEdpbGdhbWVzaA== MA== MTAwMzY3NjM= NQ== Ng== QTIwODEyOTI= MzYxNTIxMQ== MTEwNjc= NTA= Q29sbGVnZSBGcmVzaG1hbiAoMXN0IHllYXIp bi9h TGl0ZXJhdHVyZQ== TGl0ZXJhdHVyZSAvIFBvZXRyeQ== RXNzYXk= MQ== MTA2NDA2 MTc1Mg== MTM1NDQwNTY5Mg== IEdpbGdhbWVzaCBoYXJuZXNzZXMgaGlzIGRlZmlhbnQgcG93ZXIgdG8gb3ZlcmNvbWUgdGhlIEh1bWJhYmEsIGRlc3BpdGUgdGhlIG1vbnN0ZXIncyBwbGVhcyBmb3IgaGlzIGxpZmUsIGRlbGl2ZXJpbmcgYSBsZXRoYWwgYmxvdyB0byB0aGUgYmVhc3QncyBuZWNrIGFuZCBzdHJpa2luZyBoaW0gZG93biB3aXRoIGZpbmFsaXR5LiBUaGlzIHNjZW5lIGJlYXJzIG1hbnkgc2ltaWxhcml0aWVzIHRvIE9rb25rd28ncyBjbGltYWN0aWMgY29uZnJvbnRhdGlvbiB3aXRoIGEgZ3JvdXAgb2YgQ2hyaXN0aWFuIG1pc3Npb25hcmllcywgd2hvIHRlbGwgaGltIGRlcmlzaXZlbHkgdGhhdCAidGhlIHdoaXRlIG1hbiB3aG9zZSBwb3dlciB5b3Uga25vdyB0b28gd2VsbCBoYXMgb3JkZXJlZCB0aGlzIG1lZXRpbmcgdG8gc3RvcCIgKEFjaGViZSAxOTcpLiBmYWNlLXRvLWZhY2Ugd2l0aCB0aGUgb2JqZWN0IG9mIGhpcyByZXByZXNzZWQgaGF0cmVkLCBhIGxpdmluZyBzeW1ib2wgb2YgdGhlIGludmlzaWJsZSBmb3JjZSBlcm9kaW5nIHRoZSBVbXVvZmlhbiB3YXkgb2YgbGlmZSwgdGhlIGZvcm1lcmx5IGZlYXJzb21lIGNsYW4gbGVhZGVyIGFjdHMgZGVjaXNpdmVseSwgYW5kICJpbiBhIGZsYXNoICZhbXA7ICM4MjMwOyBPa29ua3dvJ3MgbWFjaGV0ZSBkZXNjZW5kZWQgdHdpY2UgYW5kIHRoZSBtYW4ncyBoZWFkIGxheSBiZXNpZGUgaGlzIHVuaWZvcm1lZCBib2R5IiAoQWNoZWJlIDE5NykuIFVuaXRlZCBieSB0aGUgZXhpc3RlbnRpYWwgdGhyZWF0cyB0byB0aGVpciBwb3NpdGlvbiB3aXRoaW4gYW4gYW5jaWVudCBzb2NpYWwgc3RydWN0dXJlLCBhbmQgdG8gZGVzdHJ1Y3Rpb24gb2YgdGhlIG9ubHkgd2F5IG9mIGxpdmluZyB0aGV5IGhhdmUgZXZlciBrbm93biwgYm90aCBHaWxnYW1lc2ggYW5kIE9rb25rd28gdGhyb3cgdGhlbXNlbHZlcyBoZWFkbG9uZyBpbnRvIHRoZSBmcmF5IG9mIGEgY3VsdHVyYWwgY2xhc2gsIGFuZCBib3RoIGFyZSB1bHRpbWF0ZWx5IGRvb21lZCB0byBiZSBkZWZlYXRlZC4KCldvcmtzIENpdGVkCgpBY2hlYmUsIENoaW51YS4gVGhpbmdzIEZhbGwgQXBhcnQuIExvbmRvbjogSGVpbmVtYW5uIFByZXNzLCAxOTU4LiBQcmludC4KCkFub255bW91cy4gVGhlIEVwaWMgb2YgR2lsZ2FtZXNoOiBUaGUgQmFieWxvbmlhbiBFcGljIFBvZW0gYW5kIE90aGVyIFRleHRzIGluIEFra2FkaWFuCgphbmQgU3VtZXJpYW4uIFRyYW5zLiBBbmRyZXcgR2VvcmdlLiBMb25kb246IFBlbmd1aW4sIDE5OTkuIFByaW50LgoKRnJhbmtsaW4sIFJ1dGguICJBZnRlciBFbXBpcmU6IENoaW51YSBBY2hlYmUgYW5kIHRoZSBncmVhdCBBZnJpY2FuIG5vdmVsLiIgTmV3IFlvcmtlci4gTWF5IDI2LCAyMDA4OiBQcmludC4KCjxodHRwOi8vd3d3Lm5ld3lvcmtlci5jb20vYXJ0cy9jcml0aWNzL2Jvb2tzLzIwMDgvMDUvMjYvMDgwNTI2Y3Jib19ib29rc19mcmFua2xpbgoKY3VycmVudFBhZ2U9YWxsPi4KCktpcmssIEcuUy4gTXl0aDogSXRzIE1lYW5pbmcgYW5kIEZ1bmN0aW9ucyBpbiBBbmNpZW50IGFuZCBPdGhlciBDdWx0dXJlcy4gQ2FtYnJpZGdlIFVuaXZlcnNpdHkgUHJlc3MgYW5kIENhbGlmb3JuaWEgVW5pdmVyc2l0eSBQcmVzcywgMTk3MC4gUHJpbnQuCgpaaW9sa293c2tpLCBUaGVvZG9yZS4gR2lsZ2FtZXNoIEFtb25nIFVzOiBNb2Rlcm4gRW5jb3VudGVycyBXaXRoIHRoZSBBbmNpZW50IEVwaWMuJiM4MjMwOw== QW1lcmljYW4gTGl0IHRoZSBEZXZlbG9wbWVudCBvZg== QW1lcmljYW4gTGl0IHRoZSBEZXZlbG9wbWVudCBvZg== MA== MzEwMTEz LTQ= NQ== QTEwNDEyNTI= ODUxMDg3OQ== MTEwNjc= NTA= Q29sbGVnZSBTZW5pb3IgKDR0aCB5ZWFyKQ== bi9h TGl0ZXJhdHVyZQ== TGl0ZXJhdHVyZSAvIFBvZXRyeQ== VGVybSBQYXBlcg== MQ== MTU3OTU5 MTc1NQ== MTA3MDQ2NzIwMA== IEFsc28gbm90ZSB0aGF0IGZvciBFcXVpYW5vLCBmcmVlZG9tIGlzIExvbmRvbiwgd2hlcmUgaGlzIGxlZ2FsIHN0YXR1cyBpcyBtb3JlIGZhdm9yYWJsZSwgbm90IEFtZXJpY2EuCgpUaHVzLCBzdGF0dXMgd2FzIG1vcmUgZnVuZ2libGUgYW5kIG11dGFibGUgaW4gdGhlIG5ldyBBbWVyaWNhLiBJdCBjb3VsZCBiZSBjaGFuZ2VkIGJ5IGdhaW5pbmcgbW9uZXksIGxpa2UgRnJhbmtsaW4sIG9yIGxhbmQgbGlrZSB0aGUgYXV0aG9yIG9mIHRoZSAiTGV0dGVycy4iIFlldCBjZXJ0YWluIHN0YXR1c2VzIHN1Y2ggYXMgcmFjZSBjb3VsZCBub3QgYmUgY29uY2VhbGVkLCBldmVuIHRob3VnaCBDaHJpc3RpYW4gY29udmVyc2lvbiBjb3VsZCwgdG8gYSBwb2ludCBvYnNjdXJlIG9uZSdzIGluaXRpYWwgcmFjaWFsIHN0YXR1cyBhcyBpbiB0aGUgY2FzZSBvZiBTYW1zb24gT2Njb20uIEdpdmVuIHRoZSBoaWVyYXJjaHkgb2YgQW1lcmljYW4gcmFjaWFsIGRpZmZlcmVuY2UsIGhvd2V2ZXIsIGFsdGhvdWdoIE9jY29tIGNvdWxkIHRhbmdlbnRpYWxseSAnYmxlbmQgaW4sJyBFcXVpYW5vJ3Mgam91cm5leSB0byBmcmVlZG9tLCB0aG91Z2ggdWx0aW1hdGVseSBhY2NvbXBsaXNoZWQsIGRpZCBub3QgYnJpbmdzIGFzIG1hbnkgc29jaWFsIG9yIGZpbmFuY2lhbCByZXdhcmRzIGdsZWFuZWQgZnJvbSBGcmFua2xpbidzIGhhcmQgd29yay4KCldvcmtzIENpdGVkCgpGcmFua2xpbiwgQmVuamFtaW4uIENvbW1lbnRhcnkgYW5kIFRleHQgb2YgVGhlIEF1dG9iaW9ncmFwaHkuIEFjY2Vzc2VkIG9uIERlY2VtYmVyIDIsIDIwMDMgYXQgVGhlIEVhcmx5IEFtZXJpY2FuIFdlYnNpdGUuIGh0dHA6Ly93d3cuZWFybHlhbWVyaWNhLmNvbS9saXZlcy9mcmFua2xpbi9jaGFwdDEvaW5kZXguaHRtbC4KCkVxdWlhbm8sIE9iYWRpYWguIFRleHQgb2YgTmFycmF0aXZlIGFuZCAiV2VzdCBJbmRpZXMgU2xhdmVyeSIgRXNzYXkgQWNjZXNzZWQgb24gRGVjZW1iZXIgMiwgMjAwMyBodHRwOi8vd3d3LndzdS5lZHU6ODAwMC9+ZGVlL0VxdWlhbm8uaHRtbC4KCkxldHRlcnMgZnJvbSBhbiBBbWVyaWNhbiBGYXJtZXIuIiBMZXR0ZXIgMyBhbmQgQ29tbWVudGFyeS4gaHR0cDovL3hyb2Fkcy52aXJnaW5pYS5lZHUvfkhZUEVSL0NSRVYvbGV0dGVyMDMuaHRtbC4KCk9jY29tLCBTLiAiU3RvcnkgYW5kIEJpb2dyYXBoeS4iIENvbW1lbnRhcnkgYW5kIFRleHQgb2YgVGhlIEF1dG9iaW9ncmFwaHkuIEFjY2Vzc2VkIG9uIERlY2VtYmVyIDIsIDIwMDMgYXQgVGhlIEVhcmx5IEFtZXJpY2FuIFdlYnNpdGUu Q29uY2VwdCBvZiBIb21l Q29uY2VwdCBvZiBIb21l MQ== MTYxNzY0NTU= NA== NQ== QTExNTQ0NTg= NTE0OQ== MTE3NjU= NzU= TUxB U3BvcnRzIC0gV29tZW4= V29tZW4gLyBGZW1pbmlzbQ== VGhlc2lz MQ== MQ== MQ== MTY2MzA= MTU5MQ== MTI2MDE4MzYwMA== MQ== JiMxODI7ICYjODIzMDsgSG9tZQoKU2FuZHJhIENpc25lcm9zJ25vdmVsICIgVGhlIGhvdXNlIG9uIE1hbmdvIFN0cmVldCwiIHB1Ymxpc2hlZCBpbiAxOTg0IGlzIGNvbnNpZGVyZWQgdG8gYmUgYSBCaWxkdW5nc3JvbWFuLCBpbiBvdGhlciB3b3JkcyBhIGJvb2sgZm9sbG93aW5nIHRoZSBkZXZlbG9wbWVudCBvZiBhIHBlcnNvbiwgdGhlIHByb2Nlc3Mgb2YgdHJhbnNmb3JtYXRpb24gZnJvbSBhbiBpbml0aWFsIHN0YXRlIHN5bWJvbGljYWxseSByZXByZXNlbnRpbmcgcG90ZW50aWFsaXR5IHRvIGEgZmluYWwgb25lIHN5bWJvbGljYWxseSByZXByZXNlbnRpbmcgYWN0dWFsaXR5IChpbiB0aGUgQXJpc3RvdGVsaWFuIHNlbnNlIG9mIGZ1bGx5IGFjaGlldmVkIGFuZCBhY3RpdmVseSBtYW5pZmVzdGVkIHBvdGVudGlhbGl0eSkuCgpUaGUgcHVycG9zZSBvZiB0aGUgcHJlc2VudCBwYXBlciBpcyB0byBhbmFseXplIGhvdyBFc3BlcmFuemEgY29uc3RydWN0cyBoZXIgb3duIGlkZW50aXR5IGFuZCBiZWNvbWVzIGF3YXJlIG9mIGl0IHRocm91Z2ggdGhlIHZhcmlvdXMgcmVsYXRpb25zaGlwcyBzaGUgY3JlYXRlcyB3aXRoIGJvdGggYm95cyBhbmQgZ2lybHMgY29taW5nIGZyb20gYSB2YXJpZXR5IG9mIGZhbWlseSBiYWNrZ3JvdW5kcyBhbmQgc29jaWFsIHN0YXR1c2VzLiBUaGUgbWFpbiB0aGVtZSBpcyByZXByZXNlbnRlZCBieSB0aGUgZHluYW1pY3Mgd2hpY2ggb2NjdXIgaW4gdGhlIHJlbGF0aW9uIGJldHdlZW4gdGhlIGluZGl2aWR1YWwgYW5kIHNvY2lldHkuCgpFc3BlcmFuemEsIHRoZSBtYWluIGNoYXJhY3RlciBpcyB1bmRlcmdvaW5nIGEgcHJvY2VzcyBvZiBncm93dGggKGxpdGVyYWwgYW5kIHNwaXJpdHVhbCBhcyB3ZWxsKS4gQXMgc2hlIGludGVyYWN0cyB3aXRoIG90aGVyIGJveXMgYW5kIGdpcmxzIG9mIGhlciBvd24gYWdlLCBzb21lIHJpY2hlciwgc29tZSBwb29yZXIsIHNvbWUgbG9vc2VyLCBzb21lIG1vcmUgY29uc2VydmF0aXZlIHdoYXQgc2hlIGFjdHVhbGx5IGFjaGlldmVzIGlzIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaGVyIG93biB0cnVlIHZhbHVlcy4KCkF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0b3J5IHNoZSBpcyB1bmhhcHB5IHdpdGggaGVyIGhvdXNlLCBhIHN5bWJvbCBvZiBoZXIgc3RhdHVzLCBiZWNhdXNlIHNoZSBjb21wYXJlcyBpdCB0byB0aGUgb25lIG9mIGEgcmljaGVyIGdpcmwgb2YgaGVyIG93biBhZ2UuIFRoaXMgaGFwcGVucyBub3QgbmVjZXNzYXJpbHkgYmVjYXVzZSB0aGUgb3RoZXIncyBnaXJsIGlzIG1vcmUgYmVhdXRpZnVsIGFuZCB0aGF0IGhhdmluZyBpdCB3b3VsZCBtYWtlIGhlciBoYXBwaWVyLCBidXQgYmVjYXVzZSB0aGUgb3RoZXIgZ2lybCBzZWVtcyB0byBpbmNhcm5hdGUgdGhlIGlkZWFsIG9mIHRoZSBwZXJmZWN0IGZhbWlseS4gSW4gdGhpcyBjb250ZXh0IHRoZSBwZXJmZWN0IGhvdXNlIGlzIGEgbWV0YXBob3IgZm9yIGEgcGVyZmVjdCBmYW1pbHkuIEl0IGlzIGludGVyZXN0aW5nIHRvIG5vdGljZSBob3cgdGhlIGNvbmNlcHQgb2YgZmFtaWx5IHNoaWZ0cyBmcm9tIHRoZSBhY3R1YWwgaG91c2UgdG8gdGhlIGVudGlyZSBNYW5nbyBzdHJlZXQsIHdoZXJlIGFsbCB0aGUgYWN0aW9uICJ0YWtlcyBwbGFjZS4iCgpUaGUgcHJvY2VzcyB0aHJvdWdoIHdoaWNoIEVzcGVyYW56YSBjb25zdHJ1Y3RzIGEgc3Ryb25nIGlkZW50aXR5IGZvciBoZXJzZWxmIGlzIGNsb3NlbHkgY29ubmVjdGVkIHdpdGggaXNzdWVzIHN1Y2ggYXMgZmFtaWx5LCBlY29ub21pY2FsIHN0YXR1cyBhbmQgYWxzbyBzZXh1YWxpdHkuIFRoZSBob3VzZSBpcyBhIHByb2JsZW0gYmVjYXVzZSBpdCB3YXMgc3VwcG9zZWQgdG8gYmUgdGhlIGRyZWFtIGhvdXNlLCBtdWNoIGJldHRlciB0aGFuIHRoZSBvbGQgaG91c2Ugd2hlcmUgbm90aGluZyB3b3JrZWQgcHJvcGVybHkuIFJlYWxpdHkgZGlmZmVycyBmcm9tIHRoZSBwcm9taXNlIGhlciBwYXJlbnRzIG1hZGUgc28gc2hlIGlzIGFuZ3J5IHdpdGggcmVhbGl0eSBhbmQgaGVyIGZhbWlseSBhcyB3ZWxsLiBJIGJlbGlldmUgdGhhdCBhIGZ1cnRoZXIgaXNzdWUgdGhhdCBjYW4gYmUgcmVhZCBiZXR3ZWVuIHRoZSBsaWVzIGlzIHRoZSBjb25jZXB0IG9mIHBvd2VyLgoKVGhyb3VnaCBoZXIgcmVhY3Rpb24gb2YgZGlzY29udGVudCB3aXRoIHRoZSBob3VzZSBhbmQgYW5nZXIgd2l0aCBoZXIgZmFtaWx5LCB0aGUgeW91bmcgZ2lybCBhY3R1YWxseSBleHByZXNzZXMgYSByZWFjdGlvbiBvZiBhbmdlciB0b3dhcmRzIGFuIG9yaWdpbiB3aGljaCBnaXZlcyBoZXIgbGl0dGxlIHBvd2VyIChmaW5hbmNpYWwsIHRoZXJlZm9yZSBzb2NpYWwpLiBBbiBlbGVtZW50IGZyb20gdGhlIGJpb2dyYXBoeSBvZiB0aGUgYXV0aG9yIGNhbiBiZSBtZW50aW9uZWQgYXQgdGhpcyBwb2ludCwgdGhhdCBpcyBoZXIgTWV4aWNhbi1BbWVyaWNhbiBvcmlnaW4uCgpXaGVuIGFkZHJlc3NpbmcgdGhlIGlzc3VlIG9mIHNvY2lhbCBzdGF0dXMgYW5kIHNvY2lhbCBwb3dlciBvZiB0aGUgbGl0dGxlIGdpcmwgdGhlIGF1dGhvciBtYXkgYmUgbWFraW5nIGEgcG9pbnQgYWJvdXQgdGhlIGNvbmRpdGlvbnMgdGhhdCBNZXhpY2FuLUFtZXJpY2FucyBhcmUgY29uZnJvbnRlZCB3aXRoIGdlbmVyYWxseSBsaXZpbmcgaW4gdGhlIFVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYS4gVGhlIGZhY3QgdGhhdCB0aGUgZ2lybCBpcyBjYWxsZWQgRXNwZXJhbnphIGlzIGJ5IG5vIG1lYW5zIGNhc3VhbC4gSW4gU3BhbmlzaCwgdGhlIHdvcmQgbGl0ZXJhbGx5IG1lYW5zICJob3BlLiIgVGhlcmVmb3JlLCB0aGUgZGVub3VlbWVudCBvZiB0aGUgbm92ZWwgd2l0aCB0aGUgcG9zaXRpdmUgY2hhbmdlIG9mIHRoZSBnaXJsIGFuZCBoZXIgc3RyZW5ndGhlbmluZyBpcyBhIHN5bWJvbGljYWwgZnV0dXJlIHBlcnNwZWN0aXZlIGZvciBhbGwgdGhlIE1leGljYW4tQW1lcmljYW5zLgoKVGhlIGZpcnN0IHBlb3BsZSB3aG9tIHNoZSBtYWtlcyBmcmllbmRzIHdpdGggaW4gdGhlIG5laWdoYm91cmhvb2QgYXJlIFJhY2hlbCBhbmQgTHVjeS4gU2luY2UgdGhlIGdpcmxzIGFsbCBoYXZlIHRoZSBzYW1lIGZhbWlseSBiYWNrZ3JvdW5kLCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlbSBpcyBlYXNpbHkgY3JlYXRlZC4gT3RoZXIgZ2lybHMgd2hvIGNvbWUgaW50byB0aGUgcGljdHVyZSBhcmUgQWxpY2lhIGFuZCBNYXJpbi4KCkFzIHRoZSBzb2NpYWwgcmVsYXRpb25zIGRldmVsb3Agc28gZG9lcyB0aGUgZ2lybHMgYXdhcmVuZXNzIGFib3V0IGhlciBzb2NpYWwgc3RhdHVzIGFzIGEgcGVyc29uIGFuZCBhcyBhIGZlbWFsZS4gU2hlIGlzIGNvbmZyb250ZWQgd2l0aCB2YXJpb3VzIHJlYWN0aW9ucyByZWdhcmRpbmcgdGhlIHBsYWNlIHdoZXJlIHNoZSBsaXZlcy4gU2luY2UgdGhlcmUgYXJlIG1hbnkgY29sb3VyIHBlb3BsZSBsaXZpbmcgaW4gdGhlIG5laWdoYm91cmhvb2QgaXMgY29uc2lkZXJlZCBkYW5nZXJvdXMgYW5kIG5vdCBhZGFwdGVkIGZvciBhIGNlcnRhaW4gY2F0ZWdvcnkgb2YgcGVvcGxlLgoKU2V4dWFsaXR5IGlzIGFub3RoZXIgaW50ZXJlc3RpbmcgdGhlbWUgd2hpY2ggc2xvd2x5IGRldmVsb3BzIGluIHRoZSBib29rLiBSaWdodCBmcm9tIHRoZSBiZWdpbm5pbmcgdGhlIG5hcnJhdG9yIHdpbGwgdGVsbCB1cyBhYm91dCBsaXR0bGUgRXNwZXJhbnphIGFuZCBoZXIgZnJpZW5kcyB3ZWFyaW5nIGhpZ2ggaGVlbHMgYXMgdGhleSBnbyBvdXQuIE5hdHVyYWxseSB0aGlzIG1ha2VzIHRoZW0gZmVlbCBhdHRyYWN0aXZlIGFuZCBwb3dlcmZ1bC4gUHJldHR5IHNvb24gdGhvdWdoIHRoZSBnaXJsIHdpbGwgaGF2ZSBhIG5lZ2F0aXZlIGNvbnRhY3Qgd2l0aCBhIHBlcnNvbiB3aG8gaW5jYXJuYXRlcyB0aGUgcmVsaWdpb3VzIG1vcmFsaXR5IGNvZGVzLCBtb3RoZXIgc3VwZXJpb3IuCgpUaGlzIHBhcnRpY3VsYXIgY2hhcmFjdGVyIHdpbGwgaW5zaW51YXRlIHRoaW5ncyBhYm91dCBFc3BlcmFuemEncyBtb3JhbGl0eSB3aGlsZSBwcmVzdW1pbmcgdGhhdCBzaGUgY29tZXMgZnJvbSB0aGUgd29yc3QgaG91c2UgaW4gdGhlIG5laWdoYm91cmhvb2QuIFRoZSBjaGFyYWN0ZXIgaGFzIG5vIHJlYWwgbmFtZSwgc2hlIGlzIGNhbGxlZCBNb3RoZXIgU3VwZXJpb3IgYW5kIGZyb20gaGVyZSB0aGUgcmVhZGVyIG11c3QgdW5kZXJzdGFuZCB0aGF0IGl0IGlzIGhlciBzdGF0dXMgd2hpY2ggY29tcGxldGVseSBkZWZpbmVzIGhlci4gU2hlIGlzIGEgc3ltYm9sIG9mIHJpZ2lkaXR5IGFuZCBpbnRvbGVyYW5jZSBhbmQgYWx0aG91Z2ggZGVmaW5lZCBieSBhIHBvc2l0aW9uIHdoaWNoIHRpZXMgaGVyIHRvIHRoZSByZWxpZ2lvdXMgYXJlYSwgc2hlIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggdGhlIHJlbGlnaW91cyBwcmluY2lwbGVzIHJlZ2FyZGluZyBsb3ZlIGZvciB0aGUgb3RoZXJzIGFuZCBvcGVuIG1pbmRlZG5lc3MuCgpGdXJ0aGVybW9yZSwgc2hlIGJlY29tZXMgYSBzeW1ib2wgb2YgdGhlIGZhY3QgdGhhdCBldmVyeXdoZXJlIHlvdSB0dXJuIHlvdSBmaW5kIGEgcG90ZW50aWFsbHkgYmFkIHBlcnNvbi4gQW5vdGhlciBsZXNzb24gdGhhdCBFc3BlcmFuemEgbGVhcm5zIGZyb20gdGhlIGhpZ2ggaGVlbHMgZXBpc29kZSBpcyB0aGF0IHNleCwgbW9yYWxpdHkgYW5kIHJlcHV0YXRpb24gYXJlIGNsb3NlbHkgY29ubmVjdGVkLiBNb3RoZXIgU3VwZXJpb3IgaXMgdGhlIHZvaWNlIG9mIGEgcGFydCBvZiB0aGUgc29jaWV0eS4gVGhlIGxlc3NvbiBjb21lcyBhdCBhIHJpZ2h0IHRpbWluZy4gVGhlIGxpdHRsZSBnaXJsIGxpa2VzIGEgYm95IGFuZCB0aGUgYm95IGxpa2VzIGhlci4gTm90IG9ubHkgdGhhdCwgYnV0IHNoZSBpcyBhd2FyZSBvZiB0aGUgc2l0dWF0aW9uIGFuZCBzaGUgcmVzcG9uZHMgd2hlbiBoZSBpcyBsb29raW5nIGF0IGhlci4KClRoZSBjb25jZXB0IG9mIGZyZWVkb20gaXMgYW5vdGhlciBpbXBvcnRhbnQgYXNwZWN0IG1ldGFwaG9yaWNhbGx5IHByZXNlbnRlZCBpbiB0aGUgYm9vay4gT24gdGhlIG9uZSBoYW5kLCB0aGVyZSBpcyBhIHdvbWFuIGNhbGxlZCBNYW1hY2l0YSB3aG8gcmVmdXNlcyB0byBsZWFybiBFbmdsaXNoLiBUaGlzIG5hdHVyYWxseSBwcmV2ZW50cyBoZXIgZnJvbSBjb21tdW5pY2F0aW5nIHdpdGggdGhlIG90aGVycyBzbyBzaGUgaXMgY29uc3RyYWluZWQgdG8gcmVtYWluIGluIGhlciBob21lLgoKRXNwZXJhbnphIG11c3QgdW5kZXJzdGFuZCB0aGF0IHdoZW4geW91IGxpdmUgaW4gYSBjb21tdW5pdHkgd2hpY2ggaXMgZGlmZmVyZW50IGZyb20gdGhlIG9uZSB0aGF0IHlvdSB3ZXJlIGJvcm4gaXQsIGl0IGlzIGFkdmlzYWJsZSB0byBsZWFybiB0aGUgcnVsZXMgYW5kIHRoZSBjdXN0b21zIG9mIHRoYXQgY29tbXVuaXR5IGluIG9yZGVyIHRvIGJlIGFibGUgdG8gc29jaWFsaXplIGFuZCBpbnRlZ3JhdGUgeW91cnNlbGYuIE9uZSBtaWdodCBhcmd1ZSB0aGF0IGJ5IHJlZnVzaW5nIHRvIGxlYXJuIEVuZ2xpc2ggdGhlIHdvbWFuIGFjdHVhbGx5IHJlZnVzZWQgdG8gYWNxdWlyZSBhIG1hbm5lciBvZiB0aGlua2luZyB3aGljaCBzaGUgZGlkIG5vdCBjb25zaWRlciBwcm9wZXIuCgpBbmQgbm90IG9ubHkgdGhhdC4gQnkgcmVmdXNpbmcgdG8gbGVhcm4gdGhlIG5ldyBsYW5ndWFnZSBzaGUgd2FzIHBlcmZvcm1pbmcgYW4gYWN0IG9mIGRlZmVuZGluZyBoZXIgb3duIGN1bHR1cmFsIGlkZW50aXR5LiBTaGUgYmVjb21lcyBhIHN5bWJvbCBmcm9tIHRoaXMgcG9pbnQtb2YtdmlldywgYnV0IGhlciBpc29sYXRpb24gaXMgdGhlIHByaWNlIHNoZSBuZWVkcyB0byBwYXkuIFRoaXMgY2FuIGFsc28gYmUgY29uc2lkZXJlZCBhIGxlc3NvbiBhYm91dCBmbGV4aWJpbGl0eSBhbmQgaXRzIHBvc3NpYmxlIGFkdmFudGFnZXMuCgpCdXQgTWFtYWNpdGEgaXMgbm90IHRoZSBvbmx5IGZlbWFsZSBjaGFyYWN0ZXIgd2hvIGlzIGxvY2tlZCBpbnNpZGUgaGVyIGhvdXNlLiBJZiBpbiB0aGUgY2FzZSBvZiB0aGUgd29tYW4gd2hvIHJlZnVzZWQgdG8gbGVhcm4gRW5nbGlzaCB0aGlzIHdhcyBjYXVzZWQgYnkgaGVyIG93biB3aWxsLCB0aGlzIHdhcyBub3QgdGhlIGNhc2Ugd2l0aCBSYWZhZWxhIHdobyBoYWQgaGVyIGh1c2JhbmQgbG9ja2luZyBoZXIgdXAgd2hlbiBoZSBsZWZ0IHRoZSBob3VzZS4KCldvbWVuIGFwcGVhciB0byBiZSBlYXNpbHkgcmVuZGVyZWQgcHJpc29uZXJzIGJ5IHNvY2lldHksIG9uIHRoZSBvbmUgaGFuZCB0aHJvdWdoIGl0cyBydWxlcyBhbmQgY29udmVudGlvbnMsIG9uIHRoZSBvdGhlciBoYW5kIHRocm91Z2ggdGhlIHN0YXR1c2VzIHRoYXQgaXQgYWxsb3dzIHRvIGJlIGNyZWF0ZWQgd2l0aGluIGl0LiBJZiB0aGUgaHVzYmFuZCBsb2NrcyB0aGUgd29tYW4gaW5zaWRlIHRoZSBob3VzZSBpcyBiZWNhdXNlIHNoZSB0b28gYWxsb3dzIGhpbSB0b28uIFNoZSBjb3VsZCBkaXZvcmNlIGZvciBleGFtcGxlLCBidXQgc2luY2Ugc2hlIGRvZXMgbm90IHRoZXJlIG11c3QgYmUgYSBzdHJvbmcgcmVhc29uIGZvciB3aGljaCBzaGUgZG9lcyBub3QuCgpZb3VuZyBFc3BlcmFuemEgc2hvdWxkIHVuZGVyc3RhbmQgdGhhdCB0aGUgc3RhdHVzIHdoaWNoIHNvY2lldHkgb2ZmZXJzIHRvIG1lbiBhbmQgd29tZW4gYmFzZWQgc29sZWx5IG9uIGdlbmRlciBpcyBub3QgZXF1YWwuIFRoZSBnZXN0dXJlIG9mIFJhZmFlbGEncyBodXNiYW5kIGlzIHN5bWJvbGljYWwuIEl0IGRlbW9uc3RyYXRlcyBoaXMgcG9zc2Vzc2lvbiBhbmQgdGhlIGZhY3QgdGhhdCBoZSB2aWV3cyBoaXMgd2lmZSBhcyBhbiBvYmplY3QgYmVsb25naW5nIHRvIGhpbS4KCkFuIGludGVyZXN0aW5nIGVwaXNvZGUgaXMgdGhhdCBpbiB3aGljaCB0aGUgZ2lybCB0YWxrcyB0byB0aGUgd2l0Y2ggd29tYW4gd2hvIHRlbGxzIGhlciB0aGF0ICJzaGUgd2lsbCBoYXZlIGEgaG9tZSBpbiB0aGUgaGVhcnQuIiBUaGUgbWFpbiBpZGVhIHRoYXQgdGhlIGF1dGhvciB3aXNoZXMgdG8gY29tbXVuaWNhdGUgaXMgdGhhdCByZWFsIHZhbHVlcyBhcmUgc3Bpcml0dWFsIGFuZCBub3QgbWF0ZXJpYWwgYW5kIHRoYXQgaG9tZSBpcyByYXRoZXIgYSBmZWVsaW5nIGFuZCBub3QgYSBwaHlzaWNhbCBwbGFjZSBhbmQgc2hlbHRlci4gTmF0dXJhbGx5IHRoZSBnaXJsIGlzIHRvbyB5b3VuZyB0byBiZSBhYmxlIHRvIHVuZGVyc3RhbmQgdGhpcyBidXQgYnkgdGhlIGVuZCBvZiB0aGUgbm92ZWwgc2hlIHdpbGwuCgpFc3BlcmFuemEgbWFuYWdlcyB0byB1bmRlcnN0YW5kIGltcG9ydGFudCBhc3BlY3RzIGFib3V0IHRoZSByb2xlIG9mIHdvbWVuIGluIHNvY2lldHksIHRoZSBpbXBvcnRhbmNlIG9mIHNleCBhbmQgb2YgcGh5c2ljYWwgYXNwZWN0LiBBcyBzaGUgZG9lcyBub3QgY29uc2lkZXIgaGVyc2VsZiB0byBiZSBiZWF1dGlmdWwgc2hlIGRlY2lkZXMgdG8gYWN0IHVwb24gcm9sZXMgd2hpY2ggYXJlIGRpZmZlcmVudCBmcm9tIHRoZSBvbmVzIG5vcm1hbGx5IGltcG9zZWQgYnkgc29jaWV0eSB0byB3b21lbi4gU2hlIGFsc28gdW5kZXJzdGFuZHMgdGhhdCBlZHVjYXRpb24gaXMgYSBtZWFucyBvZiBhY2hpZXZpbmcgcG93ZXIgdGhyb3VnaCBhIHNvbGlkIGNvbnN0cnVjdGlvbiBvZiB0aGUmIzgyMzA7 TmV3IFRlc3RhbWVudCBBY2NvcmRpbmcgdG8gSGlzdG9yaWNhbCBhbmQgTGl0ZXJhcnk= TmV3IFRlc3RhbWVudCBBY2NvcmRpbmcgdG8gSGlzdG9yaWNhbCBhbmQgTGl0ZXJhcnk= MA== MjcxMTgw LTI= MQ== QTExNDAzMTc= NDYzNTE= MTE1NzY= NjY= QVBB TXl0aG9sb2d5IC0gUmVsaWdpb24= UmVsaWdpb24gLyBHb2QgLyBUaGVvbG9neQ== RXNzYXk= MQ== MQ== MQ== MjQ4OTg= NDQx MTIzNDM1MzYwMA== MQ== JiMxODI7ICYjODIzMDsgTmV3IFRlc3RhbWVudCBBY2NvcmRpbmcgdG8gSGlzdG9yaWNhbCBhbmQgTGl0ZXJhcnkgQ3JpdGlxdWUKClRvZGF5LCBDaHJpc3RpYW5pdHkgaXMgdGhlIHdvcmxkJ3MgbW9zdCBkb21pbmFudCByZWxpZ2lvbiwgd2l0aCBpdHMgaW5zdGl0dXRpb25zIGFuZCBpdHMgYmVsaWVmIHN5c3RlbSBsZXZ5aW5nIGFuIGltcGFjdCBhcyBncmVhdCBhcyBhbnkgb2YgaGlzdG9yeSdzIHBoaWxvc29waGljYWwgb3IgaWRlb2xvZ2ljYWwgcGhlbm9tZW5hLiBJdHMgZW50cmVuY2htZW50IGluIHNlYXRzIG9mIHdvcmxkIHBvd2VyIGFuZCBpbiB0aGUgbGl2ZXMgb2YgbmVhcmx5IG9uZS10aGlyZCBvZiB0aGUgd29ybGQncyBwb3B1bGF0aW9uIGhhcyBzZWVuIGl0IHRvIGEgc3RhdHVzIHdoaWNoIHRlbmRzIHRvIG9ic2N1cmUgcXVpdGUgYSB0dW11bHR1b3VzIGhpc3RvcnkuIFN1Y2ggaXMgdG8gc2F5IHRoYXQgQ2hyaXN0aWFuaXR5J3MgZ2xvcmllZCBwcmVzZW50IHNlZW1zIHRvIHByb3ZpZGUgbGl0dGxlIGV2aWRlbmNlIHRvIG91dHNpZGVycyBvZiBpdHMgZnJhY3Rpb3VzIGhpc3RvcnkuIE9uZSB3YXkgdG8gcmV2ZWFsIHRoaXMgcGFzdCBpcyB0aHJvdWdoIGEgcmVmbGVjdGlvbiBvbiB0aGUgcmVsaWdpb3VzIGhpc3RvcmljYWwgY3JpdGlxdWUgYW5kIHRoZSBsaXRlcmFyeSBjcml0aXF1ZSB3aGljaCBkaXN0aW5ndWlzaCBvdXIgdW5kZXJzdGFuZGluZyBvZiBpdHMgY2hpZWYgZG9jdHJpbmUsIHRoZSBOZXcgVGVzdGFtZW50LgoKSW5kZWVkLCBzdWNoIGRpc2N1c3Npb25zIGFzIHRoYXQgaW4gdGhlIERhdmlkIEJhcnJldHQgdGV4dCwgdGhlIFdvcmxkIENocmlzdGlhbiBFbmN5Y2xvcGVkaWEsIGZvY3VzIG9uIHRoZSBsaXRlcmFsbHkgdGVucyBvZiB0aG91c2FuZHMgb2YgQ2hyaXN0aWFuIGRlbm9taW5hdGlvbnMgd2hpY2ggaGF2ZSBjb21lIGludG8gcGhhc2Ugb3ZlciB0aGUgZHVyYXRpb24gb2YgdGhlIGZhaXRoJ3MgZXhpc3RlbmNlIGluIG9yZGVyIHRvIGFuc3dlciB0byBpdHMgY29tcGxleCBhcnJheSBvZiBxdWVzdGlvbnMgb24gYmVsaWVmLCBtb3JhbGl0eSBhbmQgY29tbXVuaXR5LiBJbiB0aGlzLCB3ZSBjYW4gZ2xpbXBzZSBhIG1vcmUgYXBwcm9wcmlhdGUgdW5kZXJzdGFuZGluZyBvZiBDaHJpc3RpYW5pdHksIGhpc3RvcmljYWxseSwgYXMgYW4gaWRlb2xvZ3kgd2hpY2ggb25seSBncmFkdWFsbHkgZ2l2ZSByaXNlIHRoZSBldGhub2NlbnRyaWNpdHkgd2hpY2ggaG9sZHMgYWxsIG9mIHRoZXNlIGRlbm9taW5hdGlvbnMgaW4gYSBjb21tb24gY2F0ZWdvcnkuIEEgcHJhY3RpY2FsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIE5ldyBUZXN0YW1lbnQgaW4gdGhpcyBoaXN0b3JpY2FsIGNyaXRpcXVlIHNob3dzIGFuIGltYWdlIG9mIHRoZSBCaWJsZSBhcyYjODIzMDs= UmV2ZW5nZWQgQWN0aXZhdGVzIHRoZSBBY3R1YWwgQWN0aW9u UmV2ZW5nZWQgQWN0aXZhdGVzIHRoZSBBY3R1YWwgQWN0aW9u MQ== ODczODk2MDc= LTI= NA== QTEwNTk0OTM= MTUwNzQ= MTEwMjc= MjY= Q29sbGVnZSBTZW5pb3IgKDR0aCB5ZWFyKQ== bi9h Q3JpbWluYWwgSnVzdGljZQ== Q3JpbWUgLyBQb2xpY2UgLyBDcmltaW5hbCBKdXN0aWNl VGVybSBQYXBlcg== MQ== MQ== MQ== NTc2MDg= MTQ1NQ== MTA5ODg5MjgwMA== IE5vIHNwaXJpdHVhbCBhcHBhcml0aW9uIGlzIG5lY2Vzc2FyeSwgaGUgaGFzIGtub3duIGZvciB0ZW4geWVhcnMgYWJvdXQgaGlzIG9iamVjdCBvZiByZXZlbmdlLiBIZSBqdXN0IG5lZWRzIHRvIGZpbmQgdGhlIHJpZ2h0IHRpbWUuIEZpbmFsbHksIHJldHVybmluZyB0byBIYW1sZXQsIGhlIGlzIHNldCB1cG9uIHJldmVuZ2UgdGhlIG1pbnV0ZSBoZSByZWNlaXZlcyB0aGUgaWRlbnRpdHkgb2YgdGhlIG11cmRlcmVyOiAiSGFzdGUgbWUgdG8ga25vdyd0LCB0aGF0IEksIHdpdGggd2luZ3MgYXMgc3dpZnQgLyBBcyBtZWRpdGF0aW9uIG9yIHRoZSB0aG91Z2h0cyBvZiBsb3ZlLC8KCk1heSBzd2VlcCB0byBteSByZXZlbmdlIiAoVi5pLikuCgpXZSBtYXkgZ2V0IHRoZSBpbXByZXNzaW9uIHRoYXQgaW4gVmluZGljaSdzIGNhc2UsIHRoZSBhY3Qgb2YgcmV2ZW5nZSBvY2N1cnMgYSBsb25nIHRpbWUgYWZ0ZXIgdGhlIGFjdCB0aGF0IHRyaWdnZXJzIHRoZSByZXZlbmdlLCB3aGlsZSBpbiBIYW1sZXQncyBjYXNlLCB3ZSBtYXkgaGF2ZSBhIHNtYWxsZXIgdGltZSBwZXJpb2QsIGZyb20gYSB0ZW1wb3JhbCBwb2ludC1vZi12aWV3LiBUaGlzIGFyZ3VtZW50IG1heSBwYXJ0bHkgc3RhbmQgYW5kIG1heSBzb21ld2hhdCBjb250cmFkaWN0IG91ciB0aGVzaXMsIHdpdGggdGhlIGNvdW50ZXJhcmd1bWVudCB0aGF0IFZpbmRpY2kgaXMgYWxzbyB1bmRlY2lkZWQgYW5kIHdhaXRzIGEgbG9uZyBwZXJpb2Qgb2YgdGltZSwgbXVjaCBsb25nZXIgdGhhbiBIYW1sZXQsIGJlZm9yZSBhY3RpbmcgdGhlIHJldmVuZ2UuCgpXZSB3b3VsZCBiZSBpbiB0aGUgd3JvbmcgaGFkIHdlIG5vdCBjb25zaWRlcmVkIHRoZSBhY3R1YWwgY2F1c2Ugb2YgdGhlIHBlcmlvZCBvZiBlbGFwc2VkIHRpbWUuIEluIEhhbWxldCdzIGNhc2UsIGl0IGlzIHRoZSBjb25zdGFudCBpbmRlY2lzaW9uLCBtZWRpdGF0aW9uIGFuZCBwaGlsb3NvcGhpY2FsIGV2YWx1YXRpb24gb2YgdGhpbmdzLCBvZiBoaXMgYWN0aW9uIGFuZCBvZiB0aGUganVzdGlmaWNhdGlvbnMgZm9yIGl0LiBIZXJlIGhlIGlzIGluIHRoZSBsYXN0IHBhcnQgb2Ygc2NlbmUgMiBvZiBhY3QgMiwgcG9uZGVyaW5nIG92ZXIgaGlzIGNvbmRpdGlvbiwgYW5ncnkgYmVjYXVzZSBoZSBpcyBmZWVsaW5nIHdlYWsgYW5kIGNhbm5vdCBwdXJzdWUgaGlzIHRhc2s6ICJPLCB3aGF0IGEgcm9ndWUgYW5kIHBlYXNhbnQgc2xhdmUgYW0gSSEiIEFuZCAnWWV0IEksCgpBIGR1bGwgYW5kIG11ZGR5LW1ldHRsZWQgcmFzY2FsLCBwZWFrLAoKTGlrZSBKb2huLWEtZHJlYW1zLCB1bnByZWduYW50IG9mIG15IGNhdXNlLAoKQW5kIGNhbiBzYXkgbm90aGluZzsgbm8sIG5vdCBmb3IgYSBraW5nCgpVcG9uIHdob3NlIHByb3BlcnR5IGFuZCBtb3N0IGRlYXIgbGlmZQoKQSBkYW1uJ2QgZGVmZWF0IHdhcyBtYWRlLiBBbSBJIGEgY293YXJkPyIgKEFjdCBJSSwgU2NlbmUgaWkpLgoKT24gdGhlIG90aGVyIGhhbmQsIHdlIGhhdmUgVmluZGljaSdzIGNhc2UsIHdoZXJlIHRoZSBhY3Qgb2YgcmV2ZW5nZSB3YXMgbm90IHBvc3NpYmxlIGJlY2F1c2Ugb2YgZXh0ZXJuYWwgZmFjdG9yczogVmluZGljaSB3YXMgZm9yY2VkIHRvIGxlYXZlIHRoZSBjaXR5IGFuZCBoYWQgZm91bmQgbm8gb3Bwb3J0dW5pdHkgdG8gZ2V0IGNsb3NlIHRvIHRoZSBEdWtlLiBIZSBpcyBjb25zaWRlcmVkIGEgdGhyZWF0IGFuZCBvbmx5IGNvbWVzIGNsb3NlIHRvIHRoZSBEdWtlIGJ5IGRpc2d1aXNpbmcgaGltc2VsZiBhcyBQaWF0by4gT24gb25lIGhhbmQgd2UgaGF2ZSBIYW1sZXQsIHdobyBpcyBsaXZpbmcgYXQgdGhlIGNvdXJ0IGFuZCBpcyBhIGNvbnN0YW50IHByZXNlbmNlIHdpdGggdGhlIGtpbmcsIG9uIHRoZSBvdGhlciwgVmluZGljaSB3aG8gbmVlZHMgdG8gY29uY2VpdmUgYSBzaHJld2QgcGxhbiBpbiBvcmRlciB0byBhcHByb2FjaCB0aGUgRHVrZS4KCkFuIGFkZGl0aW9uYWwgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gbWFpbiBjaGFyYWN0ZXJzIGlzIHRoZSBmYWN0IHRoYXQsIGZvciBoYW1sZXQsIGhpcyBmYXRoZXIncyBnaG9zdCBpcyBhIGNvbnN0YW50LCBzb21ld2hhdCBncnVlc29tZSwgcmVtaW5kZXIgb2Ygd2hhdCBoZSBtdXN0IGRvLiBGb3IgaGltLCB0aGVyZSBpcyBubyB3YXkgb3V0IG9mIHRoZSBkZWFsLCBiZWNhdXNlIGhpcyBkZXN0aW55IGhhcyBzZXQgaGltIG91dCBvbiB0aGlzIHBhdGggYW5kIGhlIG11c3QgZnVsZmlsbCBoaXMgY29uZGl0aW9uLiBGb3IgVmluZGljaSwgb24gdGhlIG90aGVyIGhhbmQsIGl0IGlzIHN0aWxsIGEgbWF0dGVyIG9mIGNob2ljZS4gV2UgaGF2ZSBub3doZXJlIGluIHRoZSBwbGF5IHRoZSBpZGVhIHRoYXQgcGVyaGFwcyByZXZlbmdlIHdhcyBzdWdnZXN0ZWQgYnkgaGlzIG93biBiZWxvdmVkIG9uZS4gVGhlIGZhY3QgdGhhdCBpbiBvbmUgY2FzZSwgaXQgaXMgYSBzYWNyZWQgZHV0eSwgd2hpbGUgaW4gdGhlIG90aGVyIGl0IGxvb2tzIG1vcmUgbGlrZSBhIHBlcnNvbmFsIGlzc3VlLCBjb3VsZCBvbmx5IGZ1cnRoZXIgc3RyZW5ndGhlbiBvdXIgYmVsaWVmIHRoYXQgdGhlIHR3byBjaGFyYWN0ZXJzIGhhdmUgaW4gY29tbW9uIHRoZSBpbml0aWFsIG1vdGl2ZSBmb3IgcmV2ZW5nZSwgYnV0IHRoZWlyIHBlcmNlcHRpb24gb24gdGhlIG11cmRlciBvZiB0aGUgYmVsb3ZlZCBvbmUsIHRoZWlyIGludGVycHJldGF0aW9uIG9mIHRoZSBmYWN0IGlzIGVudGlyZWx5IGRpZmZlcmVudC4KClRoZSBhY3R1YWwgcHVyc3VpdCBvZiB0aGUgcmV2ZW5nZSBicmluZ3MgdXMgYmFjayB0byB0aGUgdGhlc2lzIGFuZCB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB3YXkgdGhlIGFjdGlvbiBpcyBmb2xsb3dlZCBpbiBlYWNoIGNhc2UuIFVwIHRvIHRoZSBlbmQsIFZpbmRpY2kgdXNlcyB0cmVhY2hlcnkgdG8gcHVyc3VlIGhpcyBnb2FsIGFuZCB0cmlja3MgdGhlIER1a2UgaW50byBraXNzaW5nIGhpcyBiZWxvdmVkIHNrdWxsLCBmaWxsZWQgd2l0aCBwb2lzb24uIEluIEhhbWxldCBjYXNlLCBwYXNzaW9uIGFuZCBhIHNlbnNlIG9mIHJlbGllZiB1cG9uIGZ1bGZpbGxpbmcgaGlzIGR1dHkgc3ByaW5ncyBvdXQgYXQgdGhlbiBlbmQsIGFzIGhlIHN0YWJzIENvcm5lbGl1cyB3aXRoIHRoZSBwb2lzb25lZCBzd29yZCBhbmQgdGhlbiBwb3VycyBwb2lzb24gZG93biBoaXMgdGhyb2F0LgoKVyBtYXkgY29uY2x1ZGUsIGluIHRoZSBlbmQsIHRoYXQgdGhlcmUgYXJlIHNldmVyYWwgYXJndW1lbnRzIHRoYXQgbGVhZCB1cyB0byBiZWxpZXZlIHRoYXQgdGhlIG1vdGl2YXRpb24gdGhhdCB0cmlnZ2VycyB0aGUgYWN0aW9uIGZvciByZXZlbmdlIGlzIHRoZSBzYW1lIGluIGJvdGggY2FzZXMgKHRoZSBkZWF0aCBvZiBhIGJlbG92ZWQgcGVyc29uKSwgaG93ZXZlciwgZWxlbWVudHMgYWxvbmcgdGhlIHdheSB0cmFuc2Zvcm0gdGhlIHByb2plY3Rpb24gcmFkaWNhbGx5LiBJbiBIYW1sZXQncyBjYXNlLCBpdCBpcyBhIHNhY3JlZCBkdXR5LiBIaXMgZmF0aGVyJ3MgZ2hvc3QgcmVtaW5kcyBoaW0gdGhhdCBpdCBpcyBzb21ldGhpbmcgaGUgbmVlZHMgdG8gZG8sIHdoaWNoIGRvZXNuJ3Qgc3RvcCBoaXMgb3duIG1lZGl0YXRpb24gb24gbGlmZSBhbmQgZGVhdGguIE11Y2ggbW9yZSBzaW1wbGUgYW5kIGRvd24gdG8gZWFydGgsIFZpbmRpY2kgaXMgY2FsY3VsYXRlZCBhbmQgdHJlYWNoZXJvdXMgYW5kIGZvciBoaW0sIG9ubHkgb25lIHRoaW5nIG1hdHRlcnM6IGdldHRpbmcgdGhlIGpvYiBkb25lLgoKQmlibGlvZ3JhcGh5CgoxLiBKb2huc3RvbiwgSWFuLiBJbnRyb2R1Y3RvcnkgTGVjdHVyZSBvbiBTaGFrZXNwZWFyZSdzIEhhbWxldC4gRW5nbGlzaCAzNjY6IFN0dWRpZXMgaW4gU2hha2VzcGVhcmUuIE9uIHRoZSBJbnRlcm5ldCBhdCBodHRwOi8vd3d3Lm1hbGEuYmMuY2EvfmpvaG5zdG9pL2VuZzM2Ni9sZWN0dXJlcy9oYW1sZXQuaHRtCgpKb2huc3RvbiwgSWFuLiBJbnRyb2R1Y3RvcnkgTGVjdHVyZSBvbiBTaGFrZXNwZWFyZSdzIEhhbWxldC4gRW5nbGlzaCAzNjY6IFN0dWRpZXMgaW4gU2hha2VzcGVhcmUuIE9uIHRoZSBJbnRlcm5ldCBhdCBodHRwOi8vd3d3Lm1hbGEuYmMuY2EvfmpvaG5zdG9pL2VuZzM2Ni9sZWN0dXJlcy9oYW1sZXQuaHRt UG9zdCBQb3NpdGl2aXNtIERlZmluaW5nIFBvc3QgUG9zaXRpdmlzbTo= UG9zdCBQb3NpdGl2aXNtIERlZmluaW5nIFBvc3QgUG9zaXRpdmlzbTo= MA== Njc2MTAyODE= MQ== NQ== QTEwNTI2ODg= NTc1NDc4MA== MTE3NjU= NzU= Q29sbGVnZSBTZW5pb3IgKDR0aCB5ZWFyKQ== bi9h U3BvcnRzIC0gV29tZW4= V29tZW4gLyBGZW1pbmlzbQ== VGVybSBQYXBlcg== MQ== MTcyMjk1 MTYxNg== MTA4NjYzNDgwMA== IiAoMjgpIEJ1dCB0byBzaG93cyBhICJkaWFsZWN0aWNhbCBjb25jZXB0aW9uIG9mIHNvY2lhbCBpZGVudGl0eSIgaXMga2V5IHRvIHRoZSBwb3N0LXBvc2l0aXZpc3QgbWluZHNldCwgdG8gc2VlIGlkZW50aXR5IGFzIGNvbnN0YW50bHkgcHJvZ3Jlc3NpbmcgdGhyb3VnaCBwZXJzb25hbCBrbm93bGVkZ2UgYW5kIGV4cGVyaWVuY2UgYXMgd2VsbCBhcyBhbmFseXNpcy4gVG8gYmUgYSBwb3N0LXBvc2l0aXZpc3QgaXMgdG8gbGl2ZSBpbiB0aGUga25vd2xlZGdlIGltcG9zZWQgdXBvbiB0aGUgaW5kaXZpZHVhbCBieSBzb2NpZXR5IGJvdGggdHJ1ZSBhbmQgZmFsc2UsIGFuZCB0aGUgYWNrbm93bGVkZ2VtZW50IHRoYXQgb25lJ3Mgb3duIGlkZW50aXR5IGlzIGEgZGVsaWNhdGUgYnJpZGdlIGJldHdlZW4gYm90aC4gKDExOSkKCkdpdmVuIHRoZSBldGhuaWMgYmFja2dyb3VuZCBvZiB0aGUgYXV0aG9ycywgaXQgbXVzdCBiZSBzdHJlc3NlZCBsYXN0bHkgdGhhdCBpdCBpcyBjcml0aWNhbCB0byB0aGUgcGVyc3BlY3RpdmUgb2YgdGhlIGF1dGhvcnMgaXMgdGhhdCBib3RoIG9mIHRoZW0gYXJlICJvZiBjb2xvciIgKDI4KSBDaGljYW5vcyBjYW5ub3QgImNsYWltIGV0aG5pYyBwdXJpdHkiIGFzIHN1Y2ggaW4gYSBsaW5lYXIgaWRlbnRpdHkgKDI4KSBvciBhICJuYXR1cmFsJyBhZmZpbml0eSBncm91cCIgdGhhdCBleGlzdHMgYWxvbmcgZXNzZW50aWFsaXN0IGxpbmVzLCB0aGF0IGlzIGNvbnN0cnVjdGVkIGFjY29yZGluZyB0byBwb3N0bW9kZXJuIGFuYWx5c2lzLCBidXQgd2hvc2UgdmFsdWUgaXMgbm90IGVyYXNlZCB0aHJvdWdoIGEgcG9zdC1wb3NpdGl2aXN0IGFja25vd2xlZGdlbWVudCBvZiBzZWVpbmcgb25lIGFub3RoZXIncyBtdXR1YWwgb3BwcmVzc2lvbiBhcyBwZW9wbGUgb2YgY29sb3IuIFVsdGltYXRlbHksIHBvc3QtcG9zaXRpdmlzbSBhbGxvd3Mgb25lIHRvIHNlZSB0aGUgc2ltaWxhcml0eSBvZiBvcHByZXNzaW9uIHdpZWxkZWQgdXBvbiBvbmUgYW5vdGhlcidzIGJhY2tzIGFuZCBzb3VscywgaW4gYSBtYXRlcmlhbCBzZW5zZSBhbmQgdG8gc2VlayBwb2xpdGljYWwgYWZmaW5pdHkgdXBvbiBjb25zdHJ1Y3RlZCBjbGFzcyBhbmQgZXRobmljIGxpbmVzLCBieSBhY2NlcHRpbmcgdGhhdCBtYXRlcmlhbCBvcHByZXNzaW9uIGV2ZW4gaWYgYmFzZWQgb24gY29uc3RydWN0ZWQgaWRlbnRpdHkgaGFzIGFuIGltcGFjdCBiZXlvbmQgbGl0ZXJhcnksIHRoZW9yZXRpY2FsIGFuZCBpZGVvbG9naWNhbCB0ZXJtcy4gKDQpCgpUaGVzZSBhcmUgdGhlIGxhcmdlciB0aGVvcmV0aWNhbCBjb25jZXJucyBhbmQgcXVlc3Rpb25zIHRoYXQgaGF2ZSBpbmZvcm1lZCBteSB0aGlua2luZyBhcyBJIGhhdmUgZXhwbG9yZWQgdGhlIGluZmx1ZW5jZSBvZiBwb3N0bW9kZXJuaXNtIG9uIENoaWNhbmEgZmVtaW5pc3QgdGhlb3J5LCIgc2F5cyBNb3lhLiAoNjApICJJIGV4cGVjdCB0aGF0IG15IHBvc2l0aW9uIHdpbGwgZ2VuZXJhdGUgc29tZSByZXNpc3RhbmNlIGFtb25nIHRob3NlIHNjaG9sYXJzIChDaGljYW5hIG9yIG5vdCkgd2hvIGFyZSBhbHJlYWR5IGNvbW1pdHRlZCB0byBwb3N0bW9kZXJuaXNtLCBlc3BlY2lhbGx5IHRvIHBvc3RzdHJ1Y3R1cmFsaXN0LSBpbmZsdWVuY2VkIHRoZW9yaWVzIG9mIHN1YmplY3QgZm9ybWF0aW9uLiAoNjEpIEJ1dCB0aHJvdWdoIHRoZSAiaWRlbnRpdHktaW4tZGlmZmVyZW5jZSIgcGFyYWRveCwgbWFueSByYWNpYWxpemVkIHdvbWVuIHRoZW9yaXN0cyBoYXZlIGltcGxpY2l0bHkgd29ya2VkIGluIHRoZSBpbnRlcnN0aWNlL2ludGVyZmFjZSBvZiAoZXhpc3RlbnRpYWxpc3QpICJpZGVudGl0eSBwb2xpdGljcyIgYW5kICJwb3N0bW9kZXJuaXNtIiB3aXRob3V0IGEgY2xlYXIgY3V0IHBvc3Rtb2Rlcm4gYWdlbmRhIiAoNzUpIGFuZCBoYXZlIGRvbmUgYm90aCByZWFsLCBwb3NpdGl2ZSB3b3JrIGluIHRoZSB3b3JsZCAobm8gcHVuIGludGVuZGVkKSBhcyB3ZWxsIGFzIGRlY29uc3RydWN0ZWQgb3V0bW9kZWQgZm9ybXMgb2YgY29uc3RydWN0aW5nIHJhY2UsJiM4MjMwOw== Q2hhcmFjdGVycyBhbmQgdGhlIFdheSBUaGV5IEV2b2x2ZSBUaHJvdWdob3V0 Q2hhcmFjdGVycyBhbmQgdGhlIFdheSBUaGV5IEV2b2x2ZSBUaHJvdWdob3V0 MQ== NTMwNTg3OA== NA== NQ== QTExMDgxMDg= OTMxOQ== MTEwNjc= NTA= Q29sbGVnZSBTb3Bob21vcmUgKDJuZCB5ZWFyKQ== bi9h TGl0ZXJhdHVyZQ== TGl0ZXJhdHVyZSAvIFBvZXRyeQ== VGVybSBQYXBlcg== MQ== MQ== MQ== MzkwMjA= MjQ4NA== MTE3NTA4NjgwMA== MQ== JiMxODI7ICYjODIzMDsgY2hhcmFjdGVycyBhbmQgdGhlIHdheSB0aGV5IGV2b2x2ZSB0aHJvdWdob3V0IHRoZSBub3ZlbHMgaXQncyBpbXBlcmF0aXZlLCBmaXJzdCBvZiBhbGwsIHRvIGVzdGFibGlzaCB0aGVpciByb2xlcyBpbiB0aGUgY291cnNlIG9mIGFjdGlvbi4KCk1hcmsgVHdhaW4ncyBtYWluIGNoYXJhY3RlciwgSHVja2xlYmVycnkgRmlubiBpcyBhIHRlZW4tYWdlciB3aG8gdW5kZXJnb2VzIGEgdG90YWwgbW9yYWwgdHJhbnNmb3JtYXRpb24gdGhyb3VnaG91dCBoaXMgam91cm5leSBmb3IgYSBuZXcgbGlmZSwgaGF2aW5nIHRvIHVzZSBoaXMgb3duIGp1ZGdtZW50IHRvIG1ha2UgZnVuZGFtZW50YWwgZGVjaXNpb25zIHRoYXQgd2lsbCBzZXJpb3VzbHkgYWZmZWN0IGhpcyBlbnRpcmUgZXhpc3RlbmNlLgoKVGhlIHNlY29uZCBwcm90YWdvbmlzdCwgRW1tYSBpcyBhIHlvdW5nLCBiZWF1dGlmdWwsIGNsZXZlciwgYW5kIGNvbmZpZGVudCBjaGFyYWN0ZXIgd2hvIGV4ZXJjaXNlcyBoZXIgaW5mbHVlbmNlIGluIGEgY29uc3RyaWN0ZWQgYW5kIGNvbXBsZXggZW52aXJvbm1lbnQsIHdpdGggYSBwb3dlciBvZiBtYW5pcHVsYXRpbmcgZXZlcnlvbmUgYXJvdW5kIGhlciBhbmQgYSBkaXNwb3NpdGlvbiB0byB0aGluayBhIGxpdHRsZSB0byB3ZWxsIG9mIGhlcnNlbGYsIGJ1dCB3aG8gd2lsbCBldmVudHVhbGx5IHBlcmNlaXZlIHRoZSBkYW5nZXJzIHRoYXQgaGVyIG93biBzZWxmLXNhdGlzZmFjdGlvbiBwcmVzZW50cy4KClRoZSB0aGlyZCBwcm90YWdvbmlzdCBBc2hlciBMZXYgaXMgYSB2ZXJ5IGdpZnRlZCB5b3VuZyBib3kgYm9ybiBpbnRvIGEgSGFzaWRpYyBKZXdpc2ggZmFtaWx5IHdoaWNoIGZyb20gdGhlIHZlcnkgYmVnaW5uaW5nIGRvZXNuJ3QgYWdyZWUgd2l0aCBMZXYncyB0YWxlbnQgYW5kIHdoaWNoIGluIHRoZSBlbmQsIGR1ZSB0byBpdHMgcmVsaWdpb3VzIGFsbW9zdCBmYW5hdGljIGJlbGllZnMgd2lsbCBzZW5kIHRoZWlyIHNvbiBpbnRvIGV4aWxlIGluIFBhcmlzLgoKSW4gYWxsIHRocmVlIG5vdmVscywgIkh1Y2tsZWJlcnJ5IEZpbm4iIGJ5IE1hcmsgVHdhaW4sICJFbW1hIiBieSBKYW5lIEF1c3RlbiBhbmQgIk15IG5hbWUgaXMgQXNoZXIgTGV2IiBieSBDaGFpbSBQb3RvayB3ZSBhcmUgZGVhbGluZyB3aXRoIGNoYXJhY3RlcnMgd2hvIGFyZSBub3QgZmxhdCwgd2hvIGZpbmQgdGhlbXNlbHZlcyBpbiB0aGUgb25nb2luZyBwcm9jZXNzIG9mIHRyYW5zZm9ybWF0aW9uIHVudGlsIHRoZXkgZmluYWxseSBkaXNjb3ZlciB0aGUgd2F5IHRvIHNlbGYtYXdhcmVuZXNzLiBIdWNrIGhhcyB0byB1bmRlcmdvIHNvbWUgaW1wb3J0YW50IG1vcmFsIGNoYW5nZXMsIHRvIG1ha2UgbGlmZSBkZWZpbmluZyBkZWNpc2lvbnMgaW4gb3JkZXIgdG8gZGlzY292ZXIgaGltc2VsZiBhbmQgdG8gZXN0YWJsaXNoIGhpcyBvd24gZXRoaWMgc2V0IG9mIGJlbGllZnM7IEVtbWEgaXMgYSBjaGFyYWN0ZXIgd2l0aCBhIHdlbGwgZGVmaW5lZCBmaW5hbmNpYWwgc3RhdHVzLCBhIHBvc2l0aW9uIHRoYXQgYWxsb3dzIGhlciB0byBwbGF5IHRoZSBtYXRjaG1ha2VyLCB0byBjb250cm9sIG90aGVyIHBlb3BsZXMnIGxpdmVzLCBhbmQgYWx0aG91Z2ggc2hlIGZpbmRzIGhlcnNlbGYgZW50aXRsZWQgdG8gZG8gc28gc2hlIHdpbGwgZXZlbnR1YWxseSBsZWFybiBmcm9tIGhlciBtaXN0YWtlcyBhbmQgY2hhbmdlIGhlciBhdHRpdHVkZSB3aGVuIHNoZSByZWFsaXplcyB0aGF0IGhlciBhcnJvZ2FuY2UgYW5kIHZhbml0eSBhcmUgbm90IGRvaW5nIGFueSBnb29kOyBMZXYgQXNoZXIgaXMgYSBjaGFyYWN0ZXIgd2hvLCBoYXZpbmcgYXMgYSBiYWNrZ3JvdW5kIHRoZSBjb25mbGljdCBiZXR3ZWVuIGhpcyBjb21tdW5pdHkncyByZWxpZ2lvdXMgYmVsaWVmcyBhbmQgaGlzIGFydCwgc3VjY2VlZHMgaW4gZGV2ZWxvcGluZyBoaW1zZWxmIGFzIGFuIGFwcHJlY2lhdGVkIGFydGlzdCBjYXBhYmxlIG9mIGV4cHJlc3NpbmcgaGlzIG1vc3QgaW5uZXIgZmVlbGluZ3MgdGhyb3VnaCBhcnQsIHJlYWNoaW5nIGhpcyBzZWxmLWF3YXJlbmVzcy4KCkFsbCBpbiBhbGwsIGluIGVhY2ggbm92ZWwgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIHByb3RhZ29uaXN0J3MgZ3Jvd3RoLCBhbmQgdGhpcyBwcm9jZXNzIG9mIGdyb3dpbmcgaXMgc3VwcG9ydGVkIGJ5IHNvbWUgbGl0ZXJhcnkgZWxlbWVudHMgc3VjaCBhcyBjb25mbGljdCwgdGhlbWUsIGFuZCBjaGFyYWN0ZXJpemF0aW9uIHdoaWNoIGVuaGFuY2UgdGhlIGV2b2x1dGlvbiBvZiB0aGUgY2hhcmFjdGVycy4gVGhlIGNvbmZsaWN0IGhlbHBzIHRoZSByZWFkZXIgcGVyY2VpdmUgdGhlIHN0cnVnZ2xlIHRoYXQgZWFjaCBjaGFyYWN0ZXIgbXVzdCBvdmVyY29tZSBlaXRoZXIgd2l0aCBoaW1zZWxmIG9yIHdpdGggc29tZXRoaW5nIG9yIHNvbWVvbmUgYXJvdW5kIGhpbS4gSW4gdGVybXMgb2YgdGhlbWUgYXMgYSBsaXRlcmFyeSBkZXZpY2Ugd2UgY2FuIHNheSB0aGF0IHBlb3BsZSBuYXR1cmFsbHkgZXhwcmVzcyBpZGVhcyBhbmQgZmVlbGluZ3MgdGhyb3VnaG91dCB0aGVpciBiZWhhdmlvcnMgc28sIHRoZSBjaGFyYWN0ZXJzJyBhY3Rpb25zIG9yIGV2ZW50cyBpbiB0aGUgc3RvcnkgYXJlIHVzZWQgdG8gc3VnZ2VzdCB0aGVtZXMuCgpDaGFyYWN0ZXJpemF0aW9uIGlzIGEgbWFqb3IgbGl0ZXJhcnkgZGV2aWNlIHdoaWNoIGhlbHBzIHRoZSByZWFkZXIgcGVyY2VpdmUgdGhlIGNoYXJhY3RlcnMnIGdvYWxzLCBhbWJpdGlvbnMgYW5kIHZhbHVlcyBhbmQgdGhlIHdheSB0aGVzZSBlbGVtZW50cyBjaGFuZ2UgYWxvbmcgd2l0aCB0aGUgcHJvdGFnb25pc3RzJyBldm9sdXRpb25zLgoKTWFyayBUd2FpbidzIGNsYXNzaWMgbm92ZWwgIlRoZSBBZHZlbnR1cmVzIG9mIEh1Y2tsZWJlcnJ5IEZpbm4iIHRlbGxzIHRoZSBzdG9yeSBvZiBhIHRlZW5hZ2VkIG1pc2ZpdCB3aG8gZmluZHMgaGltc2VsZiBmbG9hdGluZyBvbiBhIHJhZnQgZG93biB0aGUgTWlzc2lzc2lwcGkgcml2ZXIgd2l0aCBhbiBlc2NhcGVkIGJsYWNrIGNhbGxlZCBKaW0uIEluIHRoZSBjb3Vyc2Ugb2YgdGhlaXIgam91cm5leSBIdWNrIGFuZCBKaW0gZXhwZXJpZW5jZSBtYW55IGFkdmVudHVyZXMsIGRhbmdlcm91cyBzaXR1YXRpb25zLCBhbGwgc29ydHMgb2YgY2hhcmFjdGVycyB3aG8gYXJlIHNvbWV0aW1lcyBtZW5hY2luZyBhbmQgb2Z0ZW4gaGlsYXJpb3VzLiBBbHRob3VnaCBzb21lIG9mIHRoZSBpbmNpZGVudHMgaW4gdGhlIG5vdmVsIGFyZSBmdW5ueSBpbiB0aGVtc2VsdmVzLCBtb3N0IG9mIHRoZSBodW1vciBpcyBmb3VuZCBpbiBIdWNrJ3Mgd2F5IG9mIGV4cHJlc3NpbmcgaGltc2VsZiBhbmQgaW4gaGlzIGVudGlyZSB3b3JsZHZpZXcuIEluIHRoZSBlbmQgb2YgdGhlIG5vdmVsIGJvdGggSHVjayBhbmQgSmltIGZpbmQgdGhlaXIgbG9uZy1kZXNpcmVkIGZyZWVkb20sIEppbSBkZWNpZGluZyB0byB0cnkgYW5kIGJ1eSBoaXMgd2lmZSBhbmQgY2hpbGQgb3V0IG9mIHNsYXZlcnksIHdoaWxlIEh1Y2sgaXMgZGV0ZXJtaW5lZCB0byBoZWFkIHdlc3QgZm9yIGFub3RoZXIgYWR2ZW50dXJlLgoKRW1tYSIgYnkgSmFuZSBBdXN0ZW4gcHJlc2VudHMgdXMgdGhlIHByb3RhZ29uaXN0IEVtbWEgV29vZGhvdXNlIGFzIGEgd2VhbHRoeSwgcHJldHR5LCBzZWxmLXNhdGlzZmllZCB5b3VuZyB3b21hbiB3aG8gaXMgbGVmdCBhbG9uZSB3aXRoIGEgaHlwb2Nob25kcmlhYyBmYXRoZXIgYWZ0ZXIgaGVyIG1vdGhlcidzIGRlYXRoLiBIZXIgZ292ZXJuZXNzIE1pc3MgVGF5bG9yIG1hcnJpZXMgYSBuZWlnaGJvciwgTXIuIFdlc3RvbiBhbmQsIGJsaW5kIHRvIGhlciBvd24gZmVlbGluZ3MgRW1tYSBkZWNpZGVzIHRvIHBsYXkgdGhlIG1hdGNobWFrZXIgd2l0aCBoZXIgZnJpZW5kcyBhbmQgbmVpZ2hib3JzLiBTaGUgdHVybnMgSGFycmlldCBTbWl0aCBpbnRvIGhlciBwcm90ZWdlLCBhbiBpbGxlZ2l0aW1hdGUgZ2lybCBvZiBubyBzb2NpYWwgc3RhdHVzIGFuZCB0cmllcyB0byBtYW5pcHVsYXRlIGEgbWFycmlhZ2UgYmV0d2VlbiBIYXJyaWV0IGFuZCBNci4gRWx0b24sIGEgeW91bmcgY2xlcmd5bWFuIHdobyBoYXMgaW4gZmFjdCBzZXQgaGlzIGV5ZXMgb24gRW1tYS4gU2hlIG1lZXRzIEZyYW5rIENodXJjaGlsbCwgTXIuIFdlc3RvbidzIHNvbiBmb3Igd2hvbSBzaGUgYmVsaWV2ZXMgdG8gaGF2ZSBzb21lIGZlZWxpbmdzLiBXaGVuIEhhcnJpZXQgc2hvd3MgaGVyIGludGVyZXN0IGluIE1yLiBLbmlnaHRsZXksIGEgbmVpZ2hib3Igd2hvIGhhZCBiZWVuIGhlciBtZW50b3IgYW5kIGZyaWVuZCBFbW1hIHJlY29uc2lkZXJzIGhlciBvd24gYXR0aXR1ZGUuIFNoZSBoYXMgYWx3YXlzIHJlZ2FyZGVkIE1yLiBLbmlnaHRsZXkgYXMgYmVsb25naW5nIHRvIGhlciBhbmQgc2hlIGV2ZW50dWFsbHkgZmluZHMgaGVyIGRlc3RpbnkgaW4gbWFycmlhZ2Ugd2l0aCBoaW0uIEhhcnJpZXQgd2hvIGlzIGxlZnQgYWxvbmUgdG8gZGVjaWRlIGZvciBoZXJzZWxmIG1hcnJpZXMgUm9iZXJ0IE1hcnRpbiwgYSB5b3VuZyBmYXJtZXIuCgpDaGFpbSBQb3RvaydzIG5vdmVsICJNeSBOYW1lIGlzIEFzaGVyIExldiIgcHJlc2VudHMgdXMgQXNoZXIgTGV2IGFzIGEgSGFzaWRpYyBKZXcgd2hvIGhhcyBhbiBleHRyYW9yZGluYXJ5IHRhbGVudCBmb3IgYXJ0LiBBcyBoZSByZWNvbGxlY3RzIGhpcyBjaGlsZGhvb2QgYW5kIHRlZW5hZ2UgeWVhcnMsIHdoZXJlIG1vc3Qgb2YgdGhlIHBsb3QgaXMgc3BlbnQsIHJlYWRlcnMgY2FuIHBlcmNlaXZlIGhvdyB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgY3JlYXRpdmUgeW91bmcgQXNoZXIgYW5kIGhpcyB0cmFkaXRpb25hbCBmYXRoZXIgQXJ5ZWggYXJlIGJ1aWx0LiBBc2hlcidzIGZhdGhlciBkb2VzIG5vdCBhcHByb3ZlIG9mIGhpcyBzb24ncyBob2JieSBvciB0YWxlbnQgYW5kIG5laXRoZXIgZG9lcyB0aGUgZW50aXJlIEpld2lzaCBjb21tdW5pdHksIGJ1dCB3aXRoIHRoZSBoZWxwIG9mIG1lbnRvciBKYWNvYiBLYWhuLCBBc2hlciB0cmllcyB0byBlbmhhbmNlIGhpcyBhcnRpc3RpYyB0YWxlbnRzLiBJbiBhIHdvcmxkIHdoaWNoIGlzIHRvcm4gYmV0d2VlbiBoaXMgZmF0aGVyIGNvbnNlcnZhdGl2ZSBhcHByb2FjaCBhbmQgQXNoZXIncyBnZW5pdXMsIEFzaGVyIG11c3QgZ28gYXdheSBpbiBvcmRlciB0byBmdWxmaWxsIGhpbXNlbGYgYXMgYSB0cnVlIGFydGlzdC4KCkEgZmlyc3QgY29tcGFyYXRpdmUgcG9pbnQgcmVnYXJkaW5nIHRoZXNlIHRocmVlIG5vdmVscyBpcyB0aGUgY29uZmxpY3QgdGhhdCBlYWNoIHByb3RhZ29uaXN0IG11c3Qgb3ZlcmNvbWUuIEluIFR3YWluJ3Mgbm92ZWwgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIGNvbmZsaWN0IG9mIHBlcnNvbiBhZ2FpbnN0IHNvY2lldHkgd2hpY2ggaGFwcGVucyBiZWNhdXNlIHRoZSBwcm90YWdvbmlzdCBpcyBpbiBjb25mbGljdCB3aXRoIHRoZSB2YWx1ZXMgb2YgaGlzIHNvY2lldHkuIEF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5vdmVsIEh1Y2sgc3RydWdnbGVzIGFnYWluc3QgaGlzIG93biBzb2NpZXR5IGFuZCBpdHMgYXR0ZW1wdHMgdG8gY2l2aWxpemUgaGltLCByZXByZXNlbnRlZCBieSB0aGUgV2lkb3cgRG91Z2xhcywgTWlzcyBXYXRzb24gYW5kIG90aGVycy4KCkRlc2NyaWJpbmcgaGlzIGJyaWVmIHNvam91cm4gd2l0aCB0aGUgV2lkb3cgRG91Z2xhc3MgYWZ0ZXIgc2hlIGFkb3B0cyBoaW0sIEh1Y2sgZXhwcmVzc2VzIGhpcyBsYWNrIG9mIGludGVyZXN0IGluIGhlciBzdG9yaWVzIHRoYXQgaW50ZW5kZWQgdG8gZWR1Y2F0ZSBoaW06ICJBZnRlciBzdXBwZXIgc2hlIGdvdCBvdXQgaGVyIGJvb2sgYW5kIGxlYXJuZWQgbWUgYWJvdXQgTW9zZXMgYW5kIHRoZSBCdWxydXNoZXJzLCBhbmQgSSB3YXMgaW4gYSBzd2VhdCB0byBmaW5kIG91dCBhbGwgYWJvdXQgaGltOyBidXQgYnkgYW5kIGJ5IHNoZSBsZXQgaXQgb3V0IHRoYXQgTW9zZXMgaGFkIGJlZW4gZGVhZCBhIGNvbnNpZGVyYWJsZSBsb25nIHRpbWU7IHNvIHRoZW4gSSBkaWRuJ3QgY2FyZSBubyBtb3JlIGFib3V0IGhpbSwgYmVjYXVzZSBJIGRvbid0IHRha2Ugbm8gc3RvY2sgaW4gZGVhZCBwZW9wbGUgIihDaGFwdGVyIDEsIEVsZWN0cm9uaWMgdGV4dCBjZW50ZXIsIFVuaXZlcnNpdHkgb2YgVmlyZ2luaWEgTGlicmFyeSkuCgpMYXRlciB0aGlzIGNvbmZsaWN0IGJldHdlZW4gaGltIGFuZCB0aGUgc29jaWV0eSBnYWlucyBncmVhdGVyIGZvY3VzIGluIEh1Y2sncyBkZWFsaW5nIHdpdGggSmltIGFzIEh1Y2sgbXVzdCBkZWNpZGUgd2hldGhlciB0byB0dXJuIEppbSBpbiBhcyB0aGUgc29jaWV0eSBkZW1hbmRlZCBvciBpbnN0ZWFkIHRvIHByb3RlY3QgYW5kIGhlbHAgaGlzIGZyaWVuZC4gSGUgZGVjaWRlcyB0aGF0IGdvaW5nIHRvICJoZWxsIiBpZiB0aGlzIG1lYW5zIGZvbGxvd2luZyBoaXMgaW5zdGluY3RzIGFuZCBub3QgdGhlIHNvY2lldHkncyBoeXBvY3JpdGljYWwgb25lcyBpcyBhIGJldHRlciBvcHRpb24gdGhhdCBnb2luZyBoZWF2ZW46CgpJdCB3YXMgYSBjbG9zZSBwbGFjZS4gSSB0b29rLi4uIHVwIFt0aGUgbGV0dGVyIEknZCB3cml0dGVuIHRvIE1pc3MgV2F0c29uXSwgYW5kIGhlbGQgaXQgaW4gbXkgaGFuZC4gSSB3YXMgYS10cmVtYmxpbmcsIGJlY2F1c2UgSSdkIGdvdCB0byBkZWNpZGUsIGZvcmV2ZXIsIGJldHdpeHQgdHdvIHRoaW5ncywgYW5kIEkga25vd2VkIGl0LiBJIHN0dWRpZWQgYSBtaW51dGUsIHNvcnQgb2YgaG9sZGluZyBteSBicmVhdGgsIGFuZCB0aGVuIHNheXMgdG8gbXlzZWxmOiBBbGwgcmlnaHQgdGhlbiwgSSdsbCBnbyB0byBoZWxsIC0tIGFuZCB0b3JlIGl0IHVwIiAoQ2hhcHRlciAzMSwgRWxlY3Ryb25pYyB0ZXh0IGNlbnRlciwgVW5pdmVyc2l0eSBvZiBWaXJnaW5pYSBMaWJyYXJ5KS4KCkFub3RoZXIgdHlwZSBvZiBjb25mbGljdCBtZWFuaW5nIGFuIGludGVybmFsIG9uZSBvciBwZXJzb24gYWdhaW5zdCBzZWxmIGlzIGV4cGVyaWVuY2VkIGJ5IEVtbWEuIFNoZSBzdHJ1Z2dsZXMgdG8gc2hlZCBoZXIgdmFuaXR5IGFuZCBpZ25vcmFuY2UgYW5kIGhlciBmZWFyIG9mIGNvbmZyb250aW5nIGhlciBvd24gZmVlbGluZ3MsIGJvdGggb2YgdGhlbSBkZXRlcm1pbmluZyBoZXIgdG8gbWlzdW5kZXJzdGFuZCB0aG9zZSBhcm91bmQgaGVyIGFuZCB0byBtZWRkbGUgaGFybWZ1bGx5IGluIHRoZWlyIGxpdmVzLiBUaG91Z2ggRW1tYSBpcyBuZXZlciB0b3RhbGx5IGN1cmVkIG9mIGhlciBpbXB1bHNlIHRvIG1ha2UgbWF0Y2hlcyBmb3Igb3RoZXJzLCBhdCBzb21lIHBvaW50IGluIHRoZSBub3ZlbCBzaGUgcmlnaHRseSBkaWFnbm9zaXMgd2hhdCBpcyB3cm9uZyB3aXRoIGhlciBtYXRjaG1ha2luZzoiIHRoZSBmaXJzdCBlcnJvciwgYW5kIHRoZSB3b3JzdCwgbGF5IGF0IGhlciBkb29yLiBJdCB3YXMgZm9vbGlzaCwgaXQgd2FzIHdyb25nLCB0byB0YWtlIHNvIGFjdGl2ZSBhIHBhcnQgaW4gYnJpbmdpbmcgYW55IHR3byBwZW9wbGUgdG9nZXRoZXIuLi4uU2hlIHdhcyBxdWl0ZSBjb25jZXJuZWQgYW5kIGFzaGFtZWQgYW5kIHJlc29sdmVkIHRvIGRvIHN1Y2ggdGhpbmdzIG5vIG1vcmUiKGNoYXB0ZXIgMTYsIFBlbWJlcmxleSBlLXRleHQgb2YgRW1tYSkuCgpUaGUgc2FtZSB0eXBlIG9mIGludGVybmFsIGNvbmZsaWN0IGlzIHVuZGVyZ29uZSBieSBBc2hlciBMZXYuIEhlIHN0cnVnZ2xlcyB3aXRoIGhpcyBIYXNpZGljIEpld2lzaCBjb21tdW5pdHkgdG8gdXNlIGFuZCBrZWVwIGhpcyBncmVhdCBnaWZ0IG9mIGRyYXdpbmcgYXMgbWFueSBzZWUgaGlzIGFydGlzdGljIHNraWxscyBhcyBhIHdhc3RlIG9mIHRpbWUgYW5kIGV2ZW4gd29yc2UgYXMgc2l0cmEgYWNocmEsIGEgZ2lmdCBmcm9tIGhlIG90aGVyIHNpZGUuIE1vdmVkIGluIGhpcyBvd24gYXBhcnRtZW50IGluIFBhcmlzIGhlIHJlZmxlY3RzIG9uIGhpcyBwYXN0LCBoaXMgcGFyZW50cyBhbmQgaW4gdGhlIHNhbWUgdGltZSBoZSBmZWVscyByZWplY3RlZCBieSB0aGUgY29tbXVuaXR5IGJ1dCBzdGlsbCBhIHBhcnQgb2YgaXQ6IiBBd2F5IGZyb20gbXkgd29ybGQsIGFsb25lIGluIGFuIGFwYXJ0bWVudCB0aGF0IG9mZmVyZWQgbWUgbmVpdGhlciBtZW1vcmllcyBub3Igcm9vdHMsIEkgYmVnYW4gdG8gZmluZCBvbGQgYW5kIGRpc3RhbnQgbWVtb3JpZXMgb2YgbXkgb3duLCBsb25nIGJ1cmllZCBieSBwYWluIGFuZCB0aW1lIGFuZCBzbG93bHkgYnJvdWdodCB0byB0aGUgc3VyZmFjZSBub3ciIChTcGFyayBOb3RlcywgTXkgbmFtZSBpcyBBc2hlciBMZXYpLgoKT25lIG9mIHRoZSBtb3N0IGltcG9ydGFudCBkZXZpY2VzIG9mIGFueSBub3ZlbCBpcyB0aGUgdGhlbWUgYW5kIHdlIHNoYWxsIHVzZSBpdCBhcyBvdXIgc2Vjb25kIGNvbXBhcmF0aXZlIHBvaW50IGZvciBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBub3ZlbHMuCgpUaGUgbWFpbiB0aGVtZSBvZiBUd2FpbidzIG5vdmVsIGlzIHRoZSBtb3JhbCBwcm9ncmVzc2lvbiBvZiBIdWNrIHdobywgYWx0aG91Z2ggZW1lcmdlcyBpbnRvIHRoZSBub3ZlbCB3aXRoIGFuIGluZmVyaW9yaXR5IGNvbXBsZXggY2F1c2VkIGJ5IGxpdmluZyB3aXRoIGEgZHJ1bmthcmQgYW5kIGFidXNpdmUgZmF0aGVyIGluIHRoZSBlbmQgb2YgaGlzIGpvdXJuZXkgaGUgdGFrZXMgZnVuZGFtZW50YWwgZGVjaXNpb25zIHRoYXQgd2lsbCBjaGFuZ2UgaGlzIGxpZmUgZm9yZXZlciwgZ2FpbmluZyBoaXMgb3duIHNlbnNlIG9mIG1vcmFsaXR5LiBTb2NpZXR5IGNhbiBncmVhdGx5JiM4MjMwOw== VHdlbnRpZXRoIENlbnR1cnkgR2VucmVzIGluIEFtZXJpY2FuIExpdGVyYXR1cmU6IEZyb20= VHdlbnRpZXRoIENlbnR1cnkgR2VucmVzIGluIEFtZXJpY2FuIExpdGVyYXR1cmU6IEZyb20= MQ== Nzk5NjA2NjY= NQ== QTIwMTYwNjI= NzY0MzQ1OA== MTEwNjc= NTA= Q29sbGVnZSBKdW5pb3IgKDNyZCB5ZWFyKQ== bi9h TGl0ZXJhdHVyZQ== TGl0ZXJhdHVyZSAvIFBvZXRyeQ== RXNzYXk= MQ== MQ== MQ== NjkzMA== MTU4Mw== MTI4OTM4NDUzNA== MQ== VHdlbnRpZXRoIENlbnR1cnkgR2VucmVzIGluIEFtZXJpY2FuIExpdGVyYXR1cmU6IEZyb20gTmF0dXJhbGlzbSB0byBQb3N0LU1vZGVybmlzbSBpbiBVbmRlciBTaXh0eSBZZWFycwoKVGhlIGxpdGVyYXJ5IHBlcmlvZHMgb2YgdGhlIGluZHVzdHJpYWwgKGFuZCBwZXJoYXBzIHRoZSBwb3N0LWluZHVzdHJpYWwsIHRob3VnaCB0aGlzIHRlcm0gaXMgc3RpbGwgcXVpdGUgY29udHJvdmVyc2lhbCBhbmQgZnJhdWdodCB3aXRoIGltcGxpY2F0aW9ucyBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMgcGFwZXIpIHBlcmlvZHMgaGF2ZSBwcm9ncmVzc2VkIHdpdGggYSBncmVhdCBkZWFsIG1vcmUgcmFwaWRpdHkgdGhhbiB0aG9zZSBvZiBkZWNhZGVzIGFuZCwgaW5kZWVkLCBjZW50dXJpZXMgcHJpb3IgdG8gdGhlIG1pZGRsZSBvZiB0aGUgZWlnaHRlZW50aCBjZW50dXJ5IENFLiBQZXJoYXBzIHRoZSByZWFzb24gZm9yIHRoaXMgaXMgYXMgc2ltcGxlIGFzIG5vdGluZyB0aGF0IGFzIHRoZSBwYWNlIG9mIGRhaWx5IGxpZmUgaW5jcmVhc2VkLCB0aGUgcGFjZSBvZiBsaXRlcmFyeSBhbmQgYWVzdGhldGljIG1vdmVtZW50cyB3ZXJlIHJlcXVpcmVkIHRvIGluY3JlYXNlIHRoZWlyIGNhZGVuY2UgaW4gb3JkZXIgdG8ga2VlcCBpbiBzdGVwLiBPbiB0aGUgb3RoZXIgaGFuZCwga2V5IGdsb2JhbCBldmVudHMgc2VlbSB0byBleGlzdCBhbmQgc2VydmUgYXMgbWFya2VycyBmb3IgdGhlIGJlZ2lubmluZyBvZiBuZXcgbGl0ZXJhcnkgcGVyaW9kcywgYW5kIHRoZXNlIHNoYXJwZXIgYW5kIG1vcmUgcmFwaWQgZGl2aXNpb25zIGNvdWxkIGJlIHdob2xseSBkZXBlbmRlbnQgb24gdGhlc2UgZXZlbnRzLiBSZWdhcmRsZXNzLCB0aGUgcm9tYW50aWNpc20gdGhhdCBlbWVyZ2VkIHRvd2FyZHMgdGhlIGVuZCBvZiB0aGUgZWlnaHRlZW50aCBjZW50dXJ5IGFuZCBwZXJzaXN0ZWQgdGhyb3VnaCBtdWNoIG9mIHRoZSBuaW5ldGVlbnRoIGdhdmUgd2F5IHRvIGFuIGV2ZXIgbW9yZSByYXBpZCBzdWNjZXNzaW9uIG9mIHN0eWxlcyBhdCB0aGUgZW5kIG9mIHRoZSBuaW5ldGVlbnRoIGFuZCBiZWdpbm5pbmcgb2YgdGhlIHR3ZW50aWV0aCBjZW50dXJpZXMuCgpSb21hbnRpY2lzbSB3YXMgYSBkaXJlY3QgcmVzcG9uc2UgdG8gdGhlIGluZHVzdHJpYWxpemF0aW9uIG9mIHRoZSB3b3JsZCwgYXR0ZW1wdGluZyB0byBzaXR1YXRlIG1hbiBhbmQgaHVtYW4gaWRlbnRpdHkgaW4gdGhlIGNvbnRleHQgb2YgdGhlIG5hdHVyZSBoZSB3YXMgbG9zaW5nIGFuZCB0aGUgc2NpZW5jZSBhbmQgaW5kdXN0cnkgaGUgd2FzIGdhaW5pbmcgKHRob3VnaCAiZ2FpbmluZyIgaW4gdGhlIHB1cmVseSBwcmFjdGljYWwgc2Vuc2Ugd2l0aG91dCBpdHMgdXN1YWwgY29ubm90YXRpb24gb2YgYSBwb3NpdGl2ZSBpbmNyZWFzZSwgYXMgdGhlIFJvbWFudGljcyBhcyBhIHJ1bGUgbmV2ZXIgc2F3IHRoZXNlIGdhaW5zIGluIGEgcG9zaXRpdmUgbGlnaHQpLiBUb3dhcmRzIHRoZSBlbmQgb2YgdGhlIG5pbmV0ZWVudGggY2VudHVyeSBhbmQgdGhlIHZlcnkgZmlyc3QgcGFydCBvZiB0aGUgdHdlbnRpZXRoLCBOYXR1cmFsaXNtIGVtZXJnZWQgYXMgYSBzb2x1dGlvbiB0byB0aGlzIHRlbnNpb24gZm91bmQgaW4gUm9tYW50aWMgbGl0ZXJhdHVyZTsgbmF0dXJlIGVtZXJnZWQgYXMgdGhlIGRvbWluYW50IHRoZW1lIGFuZCBtYW4gd2FzIHBsYWNlZCBpbiBkaXJlY3QgYW5kIG9mdGVuIG1vcnRhbCBvcHBvc2l0aW9uIHRvIGl0LiBDbGVhcmx5LCBzY2llbmNlIGhhZCB3b24gaW4gc29jaWV0eSwgYW5kIGlyb25pY2FsbHkgdGhpcyBpbW1lZGlhdGVseSBkaW1pbmlzaGVkIGl0cyBpbXBvcnRhbmNlIGluIGxpdGVyYXR1cmUuCgpCZWdpbm5pbmcgaW4gdGhlIHllYXJzIGp1c3QgYmVmb3JlIFdvcmxkIFdhciBJLCBhIG5ldyBnZW5yZSB0aGF0IHdvdWxkIHVsdGltYXRlbHkgYmVjb21lIGtub3duIGFzIE1vZGVybmlzbSBlbWVyZ2VkIHJlZmxlY3RpbmcgdGhlIGZ1cnRoZXIgY2hhbmdlcyB0aGF0IGhhZCBvY2N1cnJlZCBpbiBtYW4ncyB2aWV3IG9mIGhpbXNlbGYgYW5kIGluIGhpcyByZWxhdGlvbiB0byBuYXR1cmUuIFJhdGhlciB0aGFuIGEgZGlyZWN0IG9wcG9uZW50LCBuYXR1cmUgYmVjYW1lIGFuIGFtYml2YWxlbnQgZm9yY2UgdGhhdCB3YXMgYWxtb3N0IHVucmVsYXRlZCB0byBtYW4gZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IGl0IGNvdWxkIHN0aWxsIGltcGFjdCBvbiBoaW0uIEJ5IGFuZCBsYXJnZSwgaG93ZXZlciwgbmF0dXJlIGhhZCBjZWFzZWQgdG8gbWF0dGVyIGRlc3BpdGUgaXRzIGNvbnN0YW50IHByZXNlbmNlLCBhbmQgaXQgYmVjYW1lIHNpbXBseSBhIHJlZmxlY3Rpb24gb2YgbWFuIGhpbXNlbGYsIGFuZCBhIHdheSBmb3IgbWFuIHRvIHJlZmxlY3Qgb24gaGltc2VsZiBhbmQgaGlzIG93biBpZGVudGl0eS4gVGhlbiBjYW1lIFdvcmxkIFdhciBJSSwgYW5kIGFsb25nIHdpdGggdGhlIHBoeXNpY2FsIGRlc3RydWN0aW9uIG9mIHRoZSB3YXIgY2FtZSB0aGUgZGVzdHJ1Y3Rpb24gb2YgdHJ1ZSBpZGVudGl0eSwgYW5kIG9mIHRydXRoLCBpbiBsaXRlcmF0dXJlLiBUaGUgUG9zdC1Nb2Rlcm5pc3QgYWdlIGhhZCBhcnJpdmVkLCBhbmQgdGhlIGZhY3QgdGhhdCB0aGUgdGl0bGUgZm9yIHRoZSBwZXJpb2QgaXMgbm90aGluZyBtb3JlIHRoYW4gcmVmZXJlbmNlIHRvIGFub3RoZXIgcGVyaW9kIHByb3ZpZGVzIGEgY2x1ZSBhcyB0byB0aGUgc3R5bGUgb2YgcG9zdC1tb2Rlcm5pc20gLS0gaXQgd2FzIGEgcmVqZWN0aW9uIG9mIHByZXZpb3VzIG5vdGlvbnMsIHdpdGggdW50cnVzdHdvcnRoeSBuYXJyYXRvcnMgdGhhdCBmb3JjZSB0aGUgcmVhZGVyIHRvIHF1ZXN0aW9uIHRoZSBleGlzdGVuY2Ugb2YgYW55IHJlYWwgdHJ1dGgsIGluY2x1ZGluZyAoYW5kIHBlcmhhcHMgZXNwZWNpYWxseSkgYWJvdXQgaWRlbnRpdHkgYW5kIG9uZSdzIHNlbGYuIE5hdHVyZSBpcyBubyBsb25nZXIgcHJlc2VudCBhdCBhbGwsIGFuZCBtYW4gaXMgbGVmdCBvbmx5IHdpdGggbWVhbmluZ2xlc3MgaW50ZXJuYWxseSBhbmQgZXh0ZXJuYWxseS4gVGhpcyBwYXBlciB3aWxsIGV4YW1pbmUgZWFjaCBvZiB0aGVzZSB0aHJlZSBwZXJpb2RzIHdpdGggYSBrZXkgdGV4dCBmcm9tIGVhY2gsIGV4cGxvcmluZyB0aGVzZSBlbGVtZW50cyBpbiBncmVhdGVyIGFuZCBtb3JlIHNwZWNpZmljIGRldGFpbC4KCk5hdHVyYWxpc206IFN0ZXBoZW4gQ3JhbmUncyAiVGhlIE9wZW4gQm9hdCIKCkJlZ2lubmluZyBhcyBpdCBkb2VzIHdpdGggYSBkZXNjcmlwdGlvbiBvZiB0aGUgc2t5IGFuZCB0aGUgd2F2ZXMsIGFuZCBpbiBmYWN0IHdpdGggdGhlIGh1bWFuIGNoYXJhY3RlcnMgaW4gZGlyZWN0IHJlbGF0aW9uIHRvIHRoZXNlIGVsZW1lbnRzLCBpdCBpcyBjbGVhciB0aGF0IG5hdHVyZSBpcyBhIHByaW1hcnkgZm9yY2UgaW4gdGhpcyB3b3JrLiBUaGUgbWVuIGluIHRoZSB0aXR1bGFyIGJvYXQgb2YgdGhpcyBzdG9yeSBhcmUgaW4gbW9ydGFsIHBlcmlsIGZvbGxvd2luZyBhIHNoaXB3cmVjaywgYW5kIG5hdHVyZSBpcyB0aGVpciBvbmx5IGVuZW15LiBBcyB3aXRoIG1hbnkgd29ya3Mgb2YgdGhpcyBnZW5yZSwgbmF0dXJlIGlzIGFsbC1lbmNvbXBhc3NpbmcgYW5kIGNvbXBsZXRlbHkgdW5zdG9wcGFibGUuIE5hdHVyZSBpcyBhdXRvbWF0aWNhbGx5IGFuZCB1bmNvbnNjaW91c2x5IHNldCBhZ2FpbnN0IG1hbiwgYW5kIG1hbiBpcyB2aXJ0dWFsbHkgaGVscGxlc3MgYWdhaW5zdCBpdC4KClRoZSBleHRyZW1lIHN1cHJlbWFjeSBvZiBuYXR1cmUgaW4gdGhlIHBlcnNwZWN0aXZlIG9mIHRoaXMgZ2VucmUgaGFzIGltbWVkaWF0ZSBhbmQgZGlyZWN0IGltcGxpY2F0aW9ucyBvbiBtYW4ncyB2aWV3IG9mIG1hbi4gRGVzcGl0ZSB0aGUgZXh0cmFvcmRpbmFyeSBhbW91bnQgb2YgdGVuc2lvbiwgd29ycnksIGFuZCBmZWFyIHRoYXQgdGhlIG1lbiBpbiB0aGUgYm9hdCB3ZXJlIHVuZG91YnRlZGx5IGV4cGVyaWVuY2luZywgdGhlcmUgaXMgbm8gcmVhbCBkZXNjcmlwdGlvbiBvZiBhbnkgaW5uZXIgbGlmZSBvZiBhbnkgb2YgdGhlIGNoYXJhY3RlcnMuIFRoaXMgc3RvcnkgaXMgYWN0dWFsbHkgYWxtb3N0IGVudGlyZWx5IGF1dG9iaW9ncmFwaGljYWw7IFN0ZXBoZW4gQ3JhbmUgd2FzIGludm9sdmVkIGluIGEgc2hpcHdyZWNrIGFuZCBtYW5hZ2VkIHRvIHN1cnZpdmUgaW4gYSBsaWZlYm9hdCB3aXRoIHNldmVyYWwgb3RoZXIgbWVuLCBvbmUgb2Ygd2hvbSBkcm93bmVkIG5lYXIgdGhlIGVuZCBvZiB0aGUgam91cm5leSBqdXN0IGFzIGluIHRoZSBzdG9yeS4gVGhlIGZhY3QgdGhhdCBubyByZWZsZWN0aW9ucyBvbiB0aGUgaW5uZXIgdGhvdWdodHMgYW5kIGxpdmVzIGFyZSBnaXZlbiBub3Qgb25seSBpbmNyZWFzZXMgdGhlIHByb21pbmVuY2Ugb2YgbmF0dXJlIGFzIG5vdCBvbmx5IGEgZm9yY2UgYnV0IGEgdHJ1ZSBjaGFyYWN0ZXIgLS0gdGhlIGFudGFnb25pc3QgLS0gb2YgdGhlIHN0b3J5LCBidXQgaXQgYWxzbyBzdWdnZXN0cyB0aGF0IG1hbiBoYXMgbm8gaWRlbnRpdHkgZXhjZXB0IGZvciB0aGUgZmF0ZSB0aGF0IGlzIGRldGVybWluZWQgYnkgbmF0dXJlLCBvciBwZXJoYXBzIHRoYXQgaWRlbnRpdHkgc2ltcGx5IGNlYXNlcyB0byBtYXR0ZXIgYWx0b2dldGhlciB3aGVuIHRoZSBmb3JjZXMgb2YgbmF0dXJlIGNvbnNwaXJlIHRvIHJvYiBtZW4gb2YgaXQuIEVpdGhlciB3YXksIHRoZSBwb2ludCBpcyB0aGF0IG5hdHVyZSBpcyB0aGUgZGVmaW5pbmcgKG9yIHVuZGVmaW5pbmcsIGFzIHRoZSBjYXNlIG1heSBiZSkgcG93ZXIgaW4gdGhlIHdvcmxkLgoKTW9kZXJuaXNtOiBFcm5lc3QgSGVtaW5nd2F5J3MgdGhlIFNub3dzIG9mIEtpbGltYW5qYXJvCgpXaGlsZSBuYXR1cmUgaXMgbm90IHRoZSBhbnRhZ29uaXN0IGluIEhlbWluZ3dheSdzIHRoZSBTbm93cyBvZiBLaWxpbWFuamFybywgaXQgZG9lcyBwbGF5IGEgcHJvbWluZW50IHJvbGUgaW4gdGhlIHN0b3J5LiBUaGUgY2VudHJhbCBjaGFyYWN0ZXIsIEhhcnJ5LCBpcyBkeWluZyBkdWUgdG8gYW4gaW5mZWN0aW9uIHRoYXQgcmVzdWx0ZWQgZnJvbSBiZWluZyBwaWVyY2VkIGJ5IGEgdGhvcm4uIFdlcmUgaGUgbGVmdCBhbG9uZSBhbmQgZHlpbmcgYXMgdGhlIHdpbGRlcm5lc3MgY2xvc2VkIGluIGFyb3VuZCBoaW0sIHdlIHdvdWxkIHN0aWxsIGJlIGluIE5hdHVyYWxpc20gdGVycml0b3J5LCBidXQgaW5zdGVhZCBuYXR1cmUgc2VydmVzIGFzIGEgYmFja2Ryb3AgZm9yIHRoZSBkeWluZyBtYW4gd2hpbGUgaGUgZXhhbWluZXMgaGlzIGxpZmUgYW5kIGNvbnNpc3RlbnRseSBmaW5kcyBoaW1zZWxmIChhbmQgb3RoZXJzKSBjb21pbmcgdXAgc2hvcnQuIFRoZSBmYWN0IHRoYXQgYSBzaW1wbGUgdGhvcm4gd2lsbCBiZSB0aGUgY2F1c2Ugb2YgaGlzIGRlYXRoIGlzIHlldCBhbm90aGVyIHN0cmluZyBmIHJhdGhlciB3ZWFrIGRpc2FwcG9pbnRtZW50cyBpbiBoaXMgbGlmZS4gTmF0dXJlIGlzIG5vIGxvbmdlciBhIGZ1bGx5IGFjdGl2ZSBmb3JjZSwgYnV0IHJhdGhlciBhIHJlZmxlY3Rpb24gb2YgdGhpcyBjaGFyYWN0ZXIncyBzZW5zZSBvZiBpZGVudGl0eSBhbmQgc2VsZiwgYW5kIHRoaXMgaXMgYSBoYWxsbWFyayBvZiBsaXRlcmF0dXJlIGZyb20gdGhlIG1vZGVybmlzdCBwZXJpb2QuCgpXaXRoIG5hdHVyZSBiZWNvbWluZyBtb3JlIG9mIGEgc3ltYm9saWMgYmFja2dyb3VuZCBhbmQgbWVhbnMgb2YgcmVmbGVjdGlvbiBhbmQgbGVzcyBhIGZvY3VzIG9mIHRoZSBnZW5yZSwgc2VsZi1pZGVudGlmaWNhdGlvbiBhbmQgLS0gcmVhbGl6YXRpb24gYmVjb21lIG1vcmUgaW1wb3J0YW50IGNvbmNlcHRzLiBUaGUgaW5uZXIgbGlmZSBpcyBhcyBwcm9taW5lbnQgaW4gdGhlIFNub3dzIG9mIEtpbGltYW5qYXJvIGFzIGl0IHdhcyBhYnNlbnQgaW4gIlRoZSBPcGVuIEJvYXQ7IiB2ZXJ5IGxpdHRsZSBhY3Rpb24gYWN0dWFsbHkgdGFrZXMgcGxhY2UgaW4gdGhlIHRpbWUgb2YgdGhlIG5vdmVsLCBidXQgcmF0aGVyIHRoZSBub3ZlbCBpcyBjb25jZXJuZWQgd2l0aCBIYXJyeSdzIG1lbW9yaWVzIG9mIGFjdGlvbiBhbmQgcmVmbGVjdGlvbnMgb24gaGlzIHBhc3QncyBpbXBsaWNhdGlvbnMgb24gd2hvIGhlIGlzLiBUaGUgbm92ZWwsIHRoZW4sIGlzIGNvbmNlcm5lZCB3aXRoIGEgc2VhcmNoaW5nIGZvciBtZWFuaW5nIGFuZCBwdXJwb3NlIGluIHRoZSBzZWxmLCBhbmQgaXQgaXMgbWFuJ3MgYWJpbGl0eSB0byBkZWZpbmUgaGltc2VsZiB0aGF0IHVsdGltYXRlbHkgZW5kcyB1cCB0b3J0dXJpbmcgSGFycnkgd2hvIGhhcyByZWZ1c2VkIHRvIHRha2UgdGhlIHN0ZXBzIHRvIGFjY29tcGxpc2ggdGhpcyBzZWxmLWRlZmluaXRpb24uIFRoaXMgaW1wbGllcywgaG93ZXZlciwgdGhhdCB0aGVyZSBpcyBhYnNvbHV0ZWx5IHRoZSBwb3NzaWJpbGl0eSBmb3IgaGltIHRvIGhhdmUgc3VjY2VlZGVkIGhhZCBoZSB0YWtlbiBhcHByb3ByaWF0ZSBhY3Rpb24sIGFuZCB0aGlzIGlzIGEga2V5IGZlYXR1cmUgaW4gTW9kZXJuaXN0IGxpdGVyYXR1cmUuIFRob3VnaCBtYW55IGNoYXJhY3RlcnMgZmFpbCB0byByZWFsaXplIHRoZWlyIHBvdGVudGlhbHMgYW5kIGlkZW50aXR5LCB0aGV5IGFyZSBiZWxpZXZlZCB0byBleGlzdCBob3dldmVyIG11dGFibGUgdGhleSBtaWdodCBwcm92ZSB0byBiZS4gVGhpcyB3b3VsZCBub3QgY29udGludWUgdG8gYmUgdGhlIGNhc2UgaW4gbGl0ZXJhdHVyZSBmb3IgbG9uZy4KClBvc3QtTW9kZXJuaXNtOiBSYWxwaCBFbGxpc29uJ3MgSW52aXNpYmxlIE1hbgoKSWYgTW9kZXJuaXNtIHNhdyB0aGUgcmVkdWN0aW9uIG9mIG5hdHVyZSBmb3JtIGFudGFnb25pc3RpYyBjaGFyYWN0ZXIgdG8gYW1iaXZhbGVudCBiYWNrZHJvcCwgUG9zdC1tb2Rlcm5pc20gY2FuIGJlIGRlc2NyaWJlZCBhcyBoYXZpbmcgZXJhZGljYXRlZCBuYXR1cmUgYWx0b2dldGhlci4gSW52aXNpYmxlIE1hbiB0YWtlcyBwbGFjZSBub3Qgc2ltcGx5IGluIGFuIHVyYmFuIHNldHRpbmcsIGJ1dCBpbiBhbiBlbnZpcm9ubWVudCB0aGF0IGlzIHF1aXRlIGhlYXZpbHkgYW5kIGNvbnNwaWN1b3VzbHkgaW5kdXN0cmlhbGl6ZWQuIEVsbGlzb24ncyBwcm90YWdvbmlzdCwgd2hvIHJlbWFpbnMgdW5uYW1lZCB0aHJvdWdob3V0IHRoZSBib29rLCBsaXZlcyBpbiBhbiBhYmFuZG9uZWQgYW5kIGZvcmdvdHRlbiBwYXJ0IG9mIGFuIGFwYXJ0bWVudCBidWlsZGluZydzIGJhc2VtZW50LCB3aGVyZSBoZSBoYXMgc3RydW5nIG92ZXIgYSB0aG91c2FuZCBsaWdodCBidWxicyBjb25uZWN0ZWQgdG8gaGlzIGZyZWUgZWxlY3RyaWNpdHkgc291cmNlLiBUaG91Z2ggaGlzIHJlY29sbGVjdGlvbnMgdGFrZSBoaW0gb3V0IG9mIHRoZSBjaXR5LCB0aGUgZmVlbCBvZiB0aGUgbm92ZWwgYXMgYSB3aG9sZSBpcyBvZiB0aGUgZ3JpbWUgYW5kIHRoZSBzaGluZSBvZiB0aGUgY2l0eSwgYW5kIGltYWdlcyBvZiBuYXR1cmUgYW5kIG9mIG1hbidzIHJlbGF0aW9uc2hpcCB0byBpdCBhcmUgYWxtb3N0IHdob2xseSBpZiBub3QgZW50aXJlbHkgbGFja2luZy4KCkFsc28gbGFja2luZyBpcyBhbnkgcmVhbCBub3Rpb24gb2YgaWRlbnRpdHkuIFRoaXMgc2VlbXMgYW4gb2RkIHN0YXRlbWVudCwgYXQgZmlyc3QsIGdpdmVuIHRoYXQgdGhlIGVudGlyZSBub3ZlbCBpcyB0b2xkIGZyb20gdGhlIGZpcnN0LXBlcnNvbiBwb2ludC1vZi12aWV3IG9mIHRoZSBuYXJyYXRvciBhcyBoZSByZWNvbGxlY3RzIGtleSYjODIzMDs= RGlzY291cnNlIEFuYWx5c2lzIG9mIENhbGwgQ2VudGVyIENvbnZlcnNhdGlvbg== RGlzY291cnNlIEFuYWx5c2lzIG9mIENhbGwgQ2VudGVyIENvbnZlcnNhdGlvbg== MQ== ODU1NDA0NTc= MjA= MjA= QTExMzQxOTY= NTg2MDYz MTEwMjI= MjM= SGFydmFyZA== Q29tbXVuaWNhdGlvbg== Q29tbXVuaWNhdGlvbiAvIFNwZWVjaA== UmVzZWFyY2ggUHJvcG9zYWw= MQ== MQ== MQ== Mjc3NzQ= NTU4OA== MTIyMzQ4MTYwMA== MQ== JiMxODI7ICYjODIzMDsgQ29udmVyc2F0aW9uCgpBbG9uZyB0aGUgcGFzdCByZWNlbnQgZGVjYWRlcywgZWNvbm9taWMgZW50aXRpZXMgaGF2ZSBzdWZmZXJlZCBudW1lcm91cyBtdXRhdGlvbnMgaW4gdGhlIHdheSB0aGV5IGFwcHJvYWNoIGJ1c2luZXNzIHBhcnRuZXJzLCBzYXRpc2Z5IHRoZSBjdXN0b21lciwgaW5jcmVhc2UgY29ycG9yYXRlIHByb2ZpdHMgb3IgdHJlYXQgdGhlIGVtcGxveWVlcy4gSW4gdGhlIHNhbWUgdGltZSwgdGhlaXIgZXhwZWN0YXRpb25zIGhhdmUgc2lnbmlmaWNhbnRseSBpbmNyZWFzZWQuIE1vc3Qgb2YgdGhlIGVtcGxveWVycyBzdHJpdmUgdG8gb2ZmZXIgYW4gaW5jcmVhc2VkIGVtcGxveWVlIG9uIHRoZSBqb2Igc2F0aXNmYWN0aW9uLCBidXQgaW4gcmV0dXJuLCB0aGV5IGRlbWFuZCB0aGF0IHRoZSBzdGFmZiBtZW1iZXJzIGluY3JlYXNlIHRoZWlyIHBlcmZvcm1hbmNlcyBpbiBzdXN0YWluaW5nIHRoZSBvcmdhbml6YXRpb24gcmVhY2ggaXRzIG92ZXJhbGwgb2JqZWN0aXZlcy4gTWFuYWdlbWVudHMgaGF2ZSBkZXZlbG9wZWQgYW5kIGltcGxlbWVudGVkIG51bWVyb3VzIHN0cmF0ZWdpZXMgdG8gbW9uaXRvciBhbmQgY29udHJvbCB0aGUgaHVtYW4gcmVzb3VyY2UsIG9uZSBvZiB0aGUgbW9zdCByZWxldmFudCBzdWNoIG1ldGhvZG9sb2dpZXMgYmVpbmcgdGhlIGRpc2NvdXJzZSBhbmFseXNpcy4KCkRpc2NvdXJzZSBBbmFseXNpcwoKSW4gdGVybXMgb2YgaGlzdG9yaWNhbCB0ZXJtaW5vbG9neSwgdGhlIHdvcmQgZGlzY291cnNlIGRlcml2ZXMgZnJvbSB0aGUgTGF0aW4gZGlzY3Vyc3VzLCB3aGljaCBtZWFucyBjb252ZXJzYXRpb24gb3Igc3BlZWNoLiBBbG9uZyB0aGUgZGVjYWRlcyBob3dldmVyLCB0aGUgdW5kZXJzdGFuZGluZyBvZiB0aGUgd29yZCBoYXMgZXZvbHZlZCB0byBpbmNvcnBvcmF0ZSBtb3JlIGZvcm1zIG9mIGNvbW11bmljYXRpb24uIFRoZSBkaXNjb3Vyc2UgYW5hbHlzaXMgZGVmaW5lcyBudW1lcm91cyBhcHByb2FjaGVzIHRvIHN0dWR5aW5nIGh1bWFuIGludGVyYWN0aW9ucyBpbiB0ZXJtcyBvZiBjb21tdW5pY2F0aW9ucy4gQWxvbmcgdGhlIHllYXJzLCBpdCBoYXMgYmVlbiBvZmZlcmVkIHZhcmlvdXMgZGVmaW5pdGlvbnMgYW5kIGhhcyBiZWVuIGltcGxlbWVudGVkIHdpdGggYSBtdWx0aXR1ZGUgb2YgdXNhZ2VzLiBBIHByZXNlbnRhdGlvbiBvZiB0aGUgbW9zdCByZWxldmFudCBkZWZpbml0aW9ucyBpcyBnaXZlbiBiZWxvdzoKCk0uIFN0dWJzICgxOTgzKTogIlRoZSB0ZXJtIGRpc2NvdXJzZSBhbmFseXNpcyBpcyB2ZXJ5IGFtYmlndW91cy4gSSB3aWxsIHVzZSBpdCBpbiB0aGlzIGJvb2sgdG8gcmVmZXIgbWFpbmx5IHRvIHRoZSBsaW5ndWlzdGljIGFuYWx5c2lzIG9mIG5hdHVyYWxseSBvY2N1cnJpbmcgY29ubmVjdGVkIHNwb2tlbiBvciB3cml0dGVuIGRpc2NvdXJzZS4gUm91Z2hseSBzcGVha2luZywgaXQgcmVmZXJzIHRvIGF0dGVtcHRzIHRvIHN0dWR5IHRoZSBvcmdhbml6YXRpb24gb2YgbGFuZ3VhZ2UgYWJvdmUgdGhlIHNlbnRlbmNlIG9yIGFib3ZlIHRoZSBjbGF1c2UsIGFuZCB0aGVyZWZvcmUgdG8gc3R1ZHkgbGFyZ2VyIGxpbmd1aXN0aWMgdW5pdHMsIHN1Y2ggYXMgY29udmVyc2F0aW9uYWwgZXhjaGFuZ2Ugb3Igd3JpdHRlbiB0ZXh0cy4gSXQgZm9sbG93cyB0aGF0IGRpc2NvdXJzZSBhbmFseXNpcyBpcyBhbHNvIGNvbmNlcm5lZCB3aXRoIGxhbmd1YWdlIGluIHVzZSBpbiBzb2NpYWwgY29udGV4dHMsIGFuZCBpbiBwYXJ0aWN1bGFyIHdpdGggaW50ZXJhY3Rpb24gb3IgZGlhbG9ndWUgYmV0d2VlbiBzcGVha2Vycy4iCgpNLiBDaGltb21ibyBhbmQgUi5MLiBSb3NlYmVycnkgKDE5OTgpOiAiQW5hbHlzaXMgb2YgZGlzY291cnNlIGlzIGEgbWV0aG9kb2xvZ3kgZm9yIGV4YW1pbmluZyB0ZXh0cyBhbmQgdGhlIGNvbW11bmljYXRpdmUgcHJvY2VzcyB0aGF0IGdpdmVzIHJpc2UgdG8gdGhlbS4gSXRzIHByaW1hcnkgcHVycG9zZSBpcyB0byBlbmFibGUgZGlzY291cnNlIGFuYWx5c3RzIHRvIGdhaW4gYSBkZWVwZXIgdW5kZXJzdGFuZGluZyBhbmQgYXBwcmVjaWF0aW9uIG9mIHRleHRzLiIKCkQuIENyeXN0YWwgKDE5OTIpOiBUaGUgZGlzY291cnNlIGFuYWx5c2lzIGlzIHRoZSBzdHVkeSBvZiAiYSBjb250aW51b3VzIHN0cmV0Y2ggb2YgKGVzcGVjaWFsbHkgc3Bva2VuKSBsYW5ndWFnZSBsYXJnZXIgdGhhbiBhIHNlbnRlbmNlLCBvZnRlbiBjb25zdGl0dXRpbmcgYSBjb2hlcmVudCB1bml0IHN1Y2ggYXMgYSBzZXJtb24sIGFyZ3VtZW50LCBqb2tlLCBvciBuYXJyYXRpdmUuIgoKSy4gV2lzbmlld3NraSAoMjAwNikgIkRpc2NvdXJzZSBhbmFseXNpcyBpcyBhIHByaW1hcmlseSBsaW5ndWlzdGljIHN0dWR5IGV4YW1pbmluZyB0aGUgdXNlIG9mIGxhbmd1YWdlIGJ5IGl0cyBuYXRpdmUgcG9wdWxhdGlvbiB3aG9zZSBtYWpvciBjb25jZXJuIGlzIGludmVzdGlnYXRpbmcgbGFuZ3VhZ2UgZnVuY3Rpb25zIGFsb25nIHdpdGggaXRzIGZvcm1zLCBwcm9kdWNlZCBib3RoIG9yYWxseSBhbmQgaW4gd3JpdGluZy4iIE90aGVyd2lzZSBwdXQsIHRoZSBkaXNjb3Vyc2UgYW5hbHlzaXMgaXMgdGhlICJicmFuY2ggb2YgYXBwbGllZCBsaW5ndWlzdGljcyBkZWFsaW5nIHdpdGggdGhlIGV4YW1pbmF0aW9uIG9mIGRpc2NvdXJzZSAod2hpY2gpIGF0dGVtcHRzIHRvIGZpbmQgcGF0dGVybnMgaW4gY29tbXVuaWNhdGl2ZSBwcm9kdWN0cyBhcyB3ZWxsIGFzIGFuZCB0aGVpciBjb3JyZWxhdGlvbiB3aXRoIHRoZSBjaXJjdW1zdGFuY2VzIGluIHdoaWNoIHRoZXkgb2NjdXIsIHdoaWNoIGFyZSBub3QgZXhwbGFpbmFibGUgYXQgdGhlIGdyYW1tYXRpY2FsIGxldmVsIgoKRy4gV2FyZCAoMTk5Nyk6ICJBIGRpc2NvdXJzZSBpcyBhbiBhYnN0cmFjdCBwdWJsaWMgc3BoZXJlIG9mIHdvcmRzIGFuZCBpbWFnZXMuIFsuLi5dIERpc2NvdXJzZSBhbmFseXNpcyBoYXMgaXRzIHJvb3RzIGluIGxpbmd1aXN0aWNzLCBsaXRlcmFyeSBzdHVkaWVzLCBhbmQgYW50aHJvcG9sb2d5LiIKCk0uSi4gVGVycmUgQmxhbmNoZSBhbmQgSy4gRHVycmhlaW0gKDE5OTkpOiAiRGlzY291cnNlIGFuYWx5c2lzIGlzIGEgcXVhbGl0YXRpdmUgcmVzZWFyY2ggZGVzaWduLiIKCkwuIFplZW1hbiwgTS4gUG9nZ2VucG9lbCwgQy4gTXlidXJnaCwgYW5kIE4uIFZhbiBEZXIgTGluZGUgKDIwMDIpOiAiRGlzY291cnNlIGFuYWx5c2lzIGlzIGEgcmVmbGV4aXZlIHByb2Nlc3MgdGhhdCBhaW1zIHRvIHByb3ZpZGUgYW4gYWNjb3VudCBvZiBob3cgJ29iamVjdHMnIGluIHRoZSB3b3JsZCBhcmUgY29uc3RydWN0ZWQgYWdhaW5zdCBhIGJhY2sgZ3JvdW5kIG9mIHNvY2lhbGx5IHNoYXJlZCB1bmRlcnN0YW5kaW5ncy4gVGhlc2Ugc29jaWFsbHkgc2hhcmVkIHVuZGVyc3RhbmRpbmdzIG9mdGVuIGhhdmUgYmVjb21lIGluc3RpdHV0aW9uYWxpemVkIGFuZCBnYWluZWQgZmFjdHVhbCBzdGF0dXMuIEl0IGlzIGEgZm9ybSBvZiBzb2NpYWwgY3JpdGlxdWUuIgoKSW4gb3JkZXIgZm9yIGEgd3JpdHRlbiBvciBzcG9rZW4gaW5mb3JtYXRpb24gdG8gYmUgY29uc2lkZXJlZCBkaXNjb3Vyc2UsIGl0IGhhcyB0byBtZWV0IHRoZSBmb2xsb3dpbmcgc2V2ZW4gY3JpdGVyaWE6CgpDb2hlc2lvbiwgbWVhbmluZyB0aGF0IHRoZSBncmFtbWF0aWNhbCByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgcGFydHMgb2YgYSBzZW50ZW5jZSBpcyB2aXRhbCBmb3IgaXRzIGludGVycHJldGF0aW9uCgpDb2hlcmVuY2UsIGltcGx5aW5nIHRoYXQgdGhlIHNlbnRlbmNlcyBtdXN0IGZsb3cgaW4gYSBsb2dpY2FsIG1hbm5lciB0aGF0IGdpdmVzIHNlbnNlIHRvIHRoZSBhcmd1bWVudAoKSW50ZW50aW9uYWxpdHksIG1lYW5pbmcgdGhhdCB0aGUgd3JpdGVyIG9yIHNwZWFrZXIgbXVzdCBkZWxpdmVyIHRoZSBtZXNzYWdlIGluIG1hbm5lciB0aGF0IGlzIGRlbGliZXJhdGUgYW5kIGNvbnNjaW91cwoKQWNjZXB0YWJpbGl0eSwgbWVhbmluZyB0aGF0IHRoZSBhdWRpZW5jZSBtdXN0IGFwcHJvdmUgdGhlIGNvbW11bmljYXRpdmUgcHJvZHVjdAoKSW5mb3JtYXRpdmVuZXNzLCBtZWFuaW5nIHRoYXQgdGhlIHNwZWFrZXIgb3Igd3JpdGVyIGNhbm5vdCBzaW1wbHkgcmVzdGF0ZSBwcmV2aW91cyBpZGVhcywgYnV0IGhlIG11c3QgaW50cm9kdWNlIG5ldyBwaWVjZXMgb2YgaW5mb3JtYXRpb24KClNpdHVhdGlvbmFsaXR5LCBpbXBseWluZyB0aGF0IHRoZSBpbmZvcm1hdGlvbiBkZWxpdmVyZWQgaXMgcmVsZXZhbnQgaW4gYSBjZXJ0YWluIGNvbnRleHQKCkludGVydGV4dHVhbGl0eSwgbWVhbmluZyB0aGF0IHRoZSBpbmZvcm1hdGlvbiBjb21tdW5pY2F0ZWQgcmVmZXJzIG9yIGlzIGFsc28gcmVsZXZhbnQgdG8gdGhlIG91dHNpZGUgd29ybGQgKEJlYXVncmFuZGUsIDE5ODEpCgpJbiBhIG1vcmUgc2ltcGxpc3RpYyBmb3JtdWxhdGlvbiwgYmFzZWQgb24gdGhlIGFib3ZlIHByZXNlbnRlZCBzdGF0ZW1lbnRzLCB0aGUgZGlzY291cnNlIGFuYWx5c2lzLCBvciB0aGUgY29udmVyc2F0aW9uYWwgYW5hbHlzaXMsIHJlcHJlc2VudHMgdGhlIHN0dWR5IG9mIHZhcmlvdXMgZm9ybXMgb2YgY29tbXVuaWNhdGlvbiBpbiBhIHdheSB0aGF0IGdvZXMgYmV5b25kIHN5bnRheCBvciBncmFtbWF0aWNhbCBjb3JyZWN0bmVzcyBhbmQgbG9va3MgYmV5b25kIHRoZSBhY3R1YWwgd29yZHMgdG8gc2VlIHdoYXQgdGhlIHNwZWFrZXIgb3Igd3JpdGVyIGlzIGluIGZhY3QgdHJ5aW5nIHRvIGNvbW11bmljYXRlLgoKMy4gRGlzY291cnNlIEFuYWx5c2lzIGFuZCBFbXBsb3llZSBGb2N1cwoKVGhlIGNvbnZlcnNhdGlvbmFsIGFuYWx5c2lzIGhhcyBhIG11bHRpdHVkZSBvZiBhcHBsaWNhdGlvbnMgaW4gdGhlIGJ1c2luZXNzIGNvbW11bml0eSwgb25lIG9mIHRoZSBtb3N0IHJlbGV2YW50IG9mIHRoZXNlIGFwcGxpY2F0aW9ucyBiZWluZyB0aGUgYW5hbHlzaXMgb2YgdGhlIGZvY3VzIGVtcGxveWVlcyBoYXZlIG9uIGN1c3RvbWVyIHNhdGlzZmFjdGlvbi4gSW4gb3RoZXIgd29yZHMsIGJ5IGxpc3RlbmluZyB0byB0aGUgcHJlLXJlY29yZGVkIHBob25lIGNhbGxzIGJldHdlZW4gY29tcGFueSBhZ2VudHMgYW5kIGNsaWVudHMsIHRoZSBvcmdhbml6YXRpb25zIGFyZSBhYmxlIHRvIGV2YWx1YXRlIHRoZSBhdHRlbnRpb24gZW1wbG95ZWVzIG9mZmVyIHRvIHRoZSBzYXRpc2ZhY3Rpb24gb2YgdGhlaXIgY2xpZW50cy4gRm9yZW1vc3QsIHRoaXMgYWxzbyBoZWxwcyBpbiBpZGVudGlmeWluZyBob3cgdGhlIHN0YWZmIG1lbWJlcnMgbWFuYWdlIHRvIHVuZGVyc3RhbmQgYW5kIGltcGxlbWVudCB0aGUgY29ycG9yYXRlIGN1bHR1cmUgcmVsYXRpdmUgdG8gdGhlIHRyZWF0bWVudCBhbmQgc2F0aXNmYWN0aW9uIG9mIHRoZSBjdXN0b21lcnMuCgpBIHByaW1hcnkgc3BlY2lmaWNhdGlvbiB0byBiZSBtYWRlIHJlbGF0aXZlIHRvIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gY29ycG9yYXRlIGVtcGxveWVlcyBhbmQgY3VzdG9tZXIgZm9jdXMgaXMgdGhhdCB0aGlzIGNhbiBvZnRlbiB2YXJ5IGJhc2VkIG9uIHRoZSBzcGlyaXR1YWwgc3RhdGUgb2YgdGhlIGVtcGxveWVlLiBPdGhlcndpc2UgcHV0LCB0aGUgcGVyZm9ybWFuY2VzIG9mIHRoZSBjb21wYW55IGFnZW50cyBjYW4gYmUgaW5mbHVlbmNlZCBieSB0aGUgZmVlbGluZ3MgdGhleSBlbmNvdW50ZXIgYXQgYSByZXNwZWN0aXZlIG1vbWVudC4gU2F5IGZvciBpbnN0YW5jZSB0aGF0IGFuIGVtcGxveWVlIGlzIGRlcHJlc3NlZCBhbmQgc2FkOyBoaXMgZm9jdXMgb24gc2F0aXNmeWluZyB0aGUgY3VzdG9tZXIgY291bGQgYmUgbGltaXRlZC4gSWYgb24gdGhlIG90aGVyIGhhZCB0aGUgZW1wbG95ZWUgaXMgaGFwcHksIGhlIHdpbGwgYmV0dGVyIHN0cml2ZSB0byBmb2N1cyBvbiB0aGUgY3VzdG9tZXIgYW5kIHNhdGlzZnkgaGlzIG5lZWRzLiBBcyBhIHJlc3VsdCB0aGVuLCBpdCBoYXMgYmVlbiBvYnNlcnZlZCB0aGF0IHRoZSBlbW90aW9uYWwgc3RhdGUgZG9lcyBub3Qgb25seSBpbmZsdWVuY2UgdGhlIGVtcGxveWVlIGhpbXNlbGYsIGJ1dCBhbHNvIHRoZSBwZXJzb25zIHdpdGggd2hvbSBoZSBjb21lcyBpbnRvIGNvbnRhY3QgKENvdXBsYW5kLCAyMDAxKS4KCkRpc2NvdXJzZSBhbmFseXNlcyBoYXZlIGFsc28gcmV2ZWFsZWQgYSBkaXJlY3QgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBwZXJzb25hbCBpZGVudGl0eSBvZiB0aGUgZW1wbG95ZWUgYW5kIGhpcyBqb2IgcmVsYXRlZCBwZXJmb3JtYW5jZXMuIFRoZSBpZGVudGl0eSBvZiB0aGUgaW5kaXZpZHVhbCBjYW4gYmVzdCBiZSBvYnNlcnZlZCB0aHJvdWdoIGFuIGFuYWx5c2lzIG9mIHRoZSBlbXBsb3llZSdzIGJlaGF2aW9yIGFuZCB0aGUgcmVtYXJrcyBoZSBtYWtlcyBvZiBoaW1zZWxmLiAiVGhpcyBlbmFibGVzIGEgZm9jdXMgb24gaG93IHRoZXNlIGFzc3VtcHRpb25zIGZ1bmN0aW9uIGluIHRhbGssIHRoYXQgaXMgdG8gYmxhbWUsIGp1c3RpZnkgb3IgbGVnaXRpbWlzZSBhbiBhY2NvdW50LiBUYWxrIGFib3V0IHRoZSBzZWxmIGlzIGxvY2F0ZWQgaW4gY29udmVudGlvbnMgb2YgZGlzY291cnNlLCB3aGljaCBhcmUgZW1iZWRkZWQgaW4gd2lkZXIgY29uY2VybnMiIChDb3VwbGFuZCwgMjAwMSkuCgpUaGUgcmVzdWx0cyBoYXZlIGJlZW4gcmV0cmlldmVkIHRocm91Z2ggdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBkaXNjb3Vyc2UgYW5hbHlzaXMgYW5kIGhhdmUgYmVlbiBiYXNlZCBvbiB0aGUgbGlzdGVuaW5nIG9mIHRoZSByZWNvcmRlZCBwaG9uZSBjb252ZXJzYXRpb25zIGJldHdlZW4gZW1wbG95ZWVzIGFuZCBjdXN0b21lcnMuIFRoZSB0b25lIG9mIHRoZSBhZ2VudCBhbmQgaGlzIHJlbWFya3MgYXJlIG9mdGVuIHN1ZmZpY2llbnQgdG8gc2hlZCBzb21lIGxpZ2h0IGludG8gaGlzIGVtb3Rpb25zLCB3aGljaCBjYW4gdGhlbiBiZSBsaW5rZWQgdG8gaGlzIGZvY3VzIG9uIHRoZSBmdWxsIHNhdGlzZmFjdGlvbiBvZiB0aGUgY3VzdG9tZXJzJyBuZWVkcyBhbmQgd2FudHMuCgpEaXNjb3Vyc2UgYW5hbHlzaXMncyBtYWluIGFpbSBpcyB1c3VhbGx5IHRvIHNob3cgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBkaXNjdXJzaXZlIHByYWN0aWNlcyBhbmQgYnJvYWRlciBzb2NpYWwgYW5kIGN1bHR1cmFsIGRldmVsb3BtZW50cyBhbmQgc3RydWN0dXJlcy4gVGhlIHVuZGVybHlpbmcgcHJlbWlzZSBpcyBvZnRlbiB0aGF0IGRpc2N1cnNpdmUgcHJhY3RpY2VzIGJvdGggbWlycm9yIGFuZCBhY3RpdmVseSBjb250cmlidXRlIHRvIHNvY2lhbCBhbmQgY3VsdHVyYWwgY2hhbmdlIiAoUm9za2lsZGUgVW5pdmVyc2l0ZXRzY2VudGVyKS4gVGhyb3VnaCBhIGdlbmVyYWxpemF0aW9uIG9mIHRoaXMgc3RhdGVtZW50LCBpdCBjb3VsZCBiZSBzYWlkIHRoYXQgdGhlIGRpc2NvdXJzZSBhbmFseXNpcyBvZiB0aGUgYWdlbnRzIGluIHRoZSBjYWxsIGNlbnRlciBjYW4gbWF0ZXJpYWxpemUgaW4gY2hhbmdpbmcgZWZmZWN0cyB1cG9uIHRoZSBidXNpbmVzcyBjb21tdW5pdHkuIEluIG90aGVyIHdvcmRzLCB0aHJvdWdoIGEgY2FyZWZ1bGx5IGRldmVsb3BlZCBhbmQgaW1wbGVtZW50ZWQgY29udmVyc2F0aW9uYWwgYW5hbHlzaXMsIHRoZSBtYW5hZ2VycyBhdCB0aGUgb3JnYW5pemF0aW9uIGNhbiByZXRyaWV2ZSBudW1lcm91cyByZWxldmFudCBjb25jbHVzaW9ucywgYW5kIGltcGxlbWVudCB2YXJpb3VzIHN0cmF0ZWdpYyBhcHByb2FjaGVzIHRvIHJlc29sdmluZyB0aGUgaWRlbnRpZmllZCBwcm9ibGVtcy4gVGhpcyB3b3VsZCB1bHRpbWF0ZWx5IG1hdGVyaWFsaXplIGluIGEgY2hhbmdlIHdpdGhpbiB0aGUgY29tcGFueSdzIG1pY3JvZW52aXJvbm1lbnQsIG9idmlvdXMgaW4gYW4gaW5jcmVhc2VkIGN1c3RvbWVyIGZvY3VzLCBhIGJldHRlciBjbGllbnQgc2F0aXNmYWN0aW9uLCBhIGJldHRlciBtYXJrZXQgY29uc29saWRhdGlvbiBvZiB0aGUgb3JnYW5pemF0aW9uIGFuZCBpbmNyZWFzZWQgY29ycG9yYXRlIHByb2ZpdHMuIFRoZSBlZmZlY3RzIG9mIHRoZSBpbXBlbmRpbmcgY2hhbmdlIHdvdWxkIG5vdCBvbmx5IGJlIHN1ZmZlcmVkIGJ5IHRoZSBvcmdhbml6YXRpb24gaW1wbGVtZW50aW5nIHRoZSBkaXNjb3Vyc2UgYW5hbHlzaXMsIGJ1dCBhbHNvIGJ5IGl0cyBzdGFrZWhvbGRlcnMuIFRoZSBzaGFyZWhvbGRlcnMgd291bGQgYmUgc2lnbmlmaWNhbnRseSBiZXR0ZXIgc2F0aXNmaWVkIGFzIHRoZWlyIGRpdmlkZW5kcyB3b3VsZCBpbmNyZWFzZSwgYW5kIHRoZSBjb21wZXRpbmcgb3JnYW5pemF0aW9ucyB3b3VsZCBoYXZlIHRvIGltcGxlbWVudCBiZXR0ZXIgc3RyYXRlZ2llcy4KClRoZSBlbXBsb3llZXMgd291bGQgYWxzbyBnYWluIGEgY29tcGFyYXRpdmUgYWR2YW50YWdlIGluIHRoZSBtZWFuaW5nIHRoYXQgdGhleSB3b3VsZCBjb21lIHRvIHJlYWxpemUgdGhlaXIgbGltaXRhdGlvbnMgYW5kIHdvdWxkIGFsc28gYmUgZ2l2ZW4gdGhlIGNoYW5jZSB0byBvdmVyY29tZSB0aGVtLiBUaGVyZWZvcmUsIG1vcmVvdmVyIHNpbmNlIHRoZSBhY3R1YWwgY29zdHMgb2YgaW1wbGVtZW50aW5nIGRpc2NvdXJzZSBhbmFseXNpcyBhcmUgcXVpdGUgbGltaXRlZCwgdGhlIHByb2NlZHVyZSBzdGFuZHMgaW5jcmVhc2VkIGNoYW5jZXMgb2YgcmV0cmlldmluZyByZXN1bHRzIHRoYXQgc3VwcG9ydCB0aGUgZnV0dXJlIHBlcnNvbmFsIGFuZCBwcm9mZXNzaW9uYWwgZGV2ZWxvcG1lbnQgb2YgdGhlIHN0YWZmIG1lbWJlcnMgKHRoZSBVbml2ZXJzaXR5IG9mIFRleGFzLCBTY2hvb2wgb2YgSW5mb3JtYXRpb24pLgoKVGhlIHN1Y2Nlc3Mgb2YgdGhlIGltcGxlbWVudGVkIGRpc2NvdXJzZSBhbmFseXNpcyB3b3VsZCBob3dldmVyIGRlcGVuZCBvbiBhIG11bHRpdHVkZSBvZiBmb3JjZXMuIFNpbmNlIHRoZSBzdHVkeSBvZiBjb21tdW5pY2F0aW9uIHBhdHRlcm5zIGlzIG5vdCBhbiBleGFjdCBzY2llbmNlLCBtaXN0YWtlcyBpbiBpbmNyZWFzaW5nIGVtcGxveWVlIGZvY3VzIGNvdWxkIGJlIGdlbmVyYXRlZCBieSBwZXJzb25hbCBpbnRlcnByZXRhdGlvbnMuIFRvIGJldHRlciB1bmRlcnN0YW5kLCBhIG1hbmFnZXIgbWlnaHQgc2VlIGEgcHJvYmxlbSB3aGVyZSB0aGVyZSBpbiBmYWN0IGlzbid0IG9uZS4gSGlzIHN1Z2dlc3RlZCBzdHJhdGVnaWVzIGZvciBpbXByb3ZlbWVudCB0aGVuIGNvdWxkIGhhdmUgbmVnYXRpdmUgaW1wYWN0cyBhbmQgZnVydGhlciBkZWNyZWFzZSB0aGUgYXR0ZW50aW9uIGFnZW50cyBwbGFjZSBvbiB0aGUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiAiRGlzY291cnNlIEFuYWx5c2lzIGFuZCBjcml0aWNhbCB0aGlua2luZyBpcyBhcHBsaWNhYmxlIHRvIGV2ZXJ5IHNpdHVhdGlvbiBhbmQgZXZlcnkgc3ViamVjdC4gVGhlIG5ldyBwZXJzcGVjdGl2ZSBwcm92aWRlZCBieSBkaXNjb3Vyc2UgYW5hbHlzaXMgYWxsb3dzIHBlcnNvbmFsIGdyb3d0aCBhbmQgYSBoaWdoIGxldmVsIG9mIGNyZWF0aXZlIGZ1bGZpbG1lbnQuIE5vIHRlY2hub2xvZ3kgb3IgZnVuZHMgYXJlIG5lY2Vzc2FyeSBhbmQgYXV0aG9yaXRhdGl2ZSBkaXNjb3Vyc2UgYW5hbHlzaXMgY2FuIGxlYWQgdG8gZnVuZGFtZW50YWwgY2hhbmdlcyBpbiB0aGUgcHJhY3RpY2VzIG9mIGFuIGluc3RpdHV0aW9uLCB0aGUgcHJvZmVzc2lvbiwgYW5kIHNvY2lldHkgYXMgYSB3aG9sZS4gSG93ZXZlciwgRGlzY291cnNlIEFuYWx5c2lzIGRvZXMgbm90IHByb3ZpZGUgZGVmaW5pdGUgYW5zd2VyczsgaXQgaXMgbm90IGEgImhhcmQiIHNjaWVuY2UsIGJ1dCBhbiBpbnNpZ2h0L2tub3dsZWRnZSBiYXNlZCBvbiBjb250aW51b3VzIGRlYmF0ZSBhbmQgYXJndW1lbnRhdGlvbiIgKHRoZSBVbml2ZXJzaXR5IG9mIFRleGFzLCBTY2hvb2wgb2YgSW5mb3JtYXRpb24pLgoKVGhlIGVtcGxveWVlcyBhbmFseXNlZCB0aHJvdWdoIGRpc2NvdXJzZSBtZXRob2RzIGFyZSBvZnRlbiBhaW1lZCB0byBvZmZlciBpbmZvcm1hdGlvbiB0byB0aGUgY29ycG9yYXRlIGNsaWVudHMuIFRoZSBhbmFseXNpcyB0aGVuIGlzJiM4MjMwOw== UGFzc2lvbiBBY2NvcmRpbmcgdG8gR2g= UGFzc2lvbiBBY2NvcmRpbmcgdG8gR2g= MQ== NTY2NzMzNTY= Mw== MTA= QTExMjU0NjE= NzA4NDUy MTEwNjc= NTA= Q29sbGVnZSBTb3Bob21vcmUgKDJuZCB5ZWFyKQ== TUxB TGl0ZXJhdHVyZQ== TGl0ZXJhdHVyZSAvIFBvZXRyeQ== VGVybSBQYXBlcg== MQ== MQ== MQ== MzE0MTk= MzM0Mw== MTIwNTc1NTIwMA== MQ== JiMxODI7ICYjODIzMDsgUGFzc2lvbiBBY2NvcmRpbmcgdG8gRy5ILgoKR2VuZGVyIGFuZCBTZXh1YWxpdHkgaW4gQ2xhcmljZSBMaXNwZWN0b3IncyB0aGUgUGFzc2lvbiBBY2NvcmRpbmcgdG8gRy5ILgoKQ2xhcmljZSBMaXNwZWN0b3Igbm92ZWxzIGFuZCBzaG9ydCBzdG9yeSBjb2xsZWN0aW9ucyBhcmUgaW50cmlndWluZyBsaXRlcmFyeSBwaWVjZXMgd2hpY2ggdXN1YWxseSBmb2N1cyBvbiBleGlzdGVudGlhbCBvciBldmVuIG1ldGFwaHlzaWNhbCBpc3N1ZXMuIFRoaXMgZmFjdCBoYXMgaW5kdWNlZCBjcml0aWNpc20gb24gdGhlIHBhcnQgb2YgdGhvc2UgdGhhdCBleHBlY3RlZCBhIG1vcmUgc29jaWFsIGFuZCByZWFsaXN0aWMgZm9jdXMgb2YgdGhlIGZlbWluaW5lIHdyaXRpbmcuIE5ldmVydGhlbGVzcywgaXQgY2FuIGJlIHNhaWQgdGhhdCBMaXNwZWN0b3IncyBub3ZlbHMgYXJlIHJlYWxpc3RpYyBpbiB0aGUgc2Vuc2UgdGhhdCB0aGV5IG9mZmVyIGEgZGVwaWN0aW9uIG9mIHRoZSBhbGllbmF0ZWQgYW5kIGZydXN0cmF0ZWQgbW9kZXJuIGh1bWFuIGNvbmRpdGlvbi4gQnV0IHRoZSBzdHJlbmd0aCBvZiBoZXIgd29yayBjb21lcyBhY3R1YWxseSBmcm9tIHRoZSB1c2Ugb2YgbGFuZ3VhZ2UgaXRzZWxmLCB3aGljaCBvZmZlcnMgYSBicmlsbGlhbnQgYW5kIG9mdGVuIGV4dHJlbWVseSBpbnRpbWF0ZSByZWxhdGlvbiBvZiB0aGUgcmVhZGVyIHRvIHRoZSB0ZXh0LiBUaGUgUGFzc2lvbiBBY2NvcmRpbmcgdG8gRy5ILiBpcyBwcm9iYWJseSBub3QgYSBwb3B1bGFyIHdvcmssIGJ1dCBpdCBpcyBvbmUgdGhhdCBkZWZpbml0ZWx5IGhhcyBhIGdyZWF0IGltcG9ydGFuY2UgZm9yIGZlbWluaW5lIHdyaXRpbmcgaW4gZ2VuZXJhbC4gVGh1cywgdGhlIG5vdmVsIGhhcyBidXQgYSBzcGFyc2UgYW5kIGlzb2xhdGVkIGNvbmZsaWN0LCBmb2N1c2luZyBhbG1vc3QgZXhjbHVzaXZlbHkgb24gbGFuZ3VhZ2UgYW5kIHRoZSBpbnRlcmlvciBkaXNjb3Vyc2Ugb2YgYSB3b21hbiB3aG8sIGluIHRoZSBwcm9jZXNzIG9mIGhlciBtb25vbG9ndWUsIGNvbWVzIHRvIGEgbmV3IHNlbnNlIG9yIHJlYWxpemF0aW9uIG9mIGhlcnNlbGYuIFRoZSB0ZXh0IGNhbiBiZSBzYWlkIHRvIHByZWZpZ3VyZSB0aGUgdGhlb3JpZXMgcHJvcG9zZWQgYnkgTHVjZSBJcmlnYXJheSBpbiB0aGUgYXJ0aWNsZSB0aGUgUG93ZXIgb2YgRGlzY291cnNlIGFuZCB0aGUgU3Vib3JkaW5hdGlvbiBvZiB0aGUgRmVtaW5pbmUgYW5kIGJ5IEp1ZGl0aCBCdXRsZXIgaW4gUGVyZm9ybWF0aXZlIEFjdHMgYW5kIEdlbmRlciBDb25zdGl0dXRpb24uIFRoZXNlIGVzc2F5IGF0dGVtcHQgYSBuZXcgdGhlb3J5IG9mIHRoZSBkaXNjb3Vyc2UsIGluIHdoaWNoIGdlbmRlciBpcyBub3QgYSBnaXZlbiBjYXRlZ29yeSwgYnV0IHNvbWV0aGluZyB3aGljaCB3YWl0cyB0byBiZSByZXZlYWxlZCBpbiB0aGUgcGVyZm9ybWF0aXZlIGFjdCBvZiBkaXNjb3Vyc2UuIFNpbWlsYXJseSwgaW4gTGlzcGVjdG9yJ3Mgbm92ZWwsIEcuSC4gcmVhY2hlcyBhIHByb2ZvdW5kIHRyYW5zZm9ybWF0aW9uLCBhIGNvbXBsZXRlIHJlc3RydWN0dXJpbmcgb2YgaGVyIGlkZW50aXR5IHRocm91Z2ggZGlzY291cnNlLiBJdCBpcyB0aGlzIGRpc2NvdXJzZSB0aGF0IGxlYWRzIGhlciBhd2F5IGZyb20gdGhlIGFydGlmaWNpYWxpdHkgc2hlIGhhZCBiZWVuIGxpdmluZyBpbiBhbmQgcHJvcGVscyBoZXIgZ2VudWluZSBzZWxmIHRvIHN1cmZhY2UuCgpBcyBhbHJlYWR5IG9ic2VydmVkLCB3ZSBjYW4gaGFyZGx5IHNwZWFrIG9mIGEgcGxvdCBpbiB0aGUgbm92ZWwuIElmIHRoZXJlIGlzIGFuIGV2ZW50IGl0IGlzIGNsZWFybHkgRy4gSCdzIEthZmthZWFuIGVuY291bnRlciB3aXRoIGEgY29ja3JvYWNoIHdoaWxlIHNoZSBpbnRlbmRlZCB0byBjbGVhbiB0aGUgbWFpZCdzIHJvb20uIFRoaXMgZW5jb3VudGVyIGlzIGF0IGJlc3QgYSBtZXRhcGhvcmljIGNvbmZyb250YXRpb24gd2l0aCB0aGUgb3RoZXIgYW5kIHRoZW4gd2l0aCB0aGUgc2VsZiB3aGljaCBuYXR1cmFsbHkgdGFrZXMgcGxhY2UgaW5zaWRlIHRoZSBkaXNjb3Vyc2UuIFRoZSBzZWxmLXF1ZXN0aW9uaW5nIGFuZCB0aGUgYXR0ZW1wdCBhdCBzZWxmLWRlZmluaXRpb24gZm9ybSB0aGUgdmVyeSBzdWJzdGFuY2Ugb2YgRy4gSC4ncyBpbnRlcmlvciBtb25vbG9ndWUuIFRoZSBtYWluIGNoYXJhY3RlciBpbiB0aGUgbm92ZWwgaXMga25vd24gb25seSBieSB0aGUgaW5pdGlhbHMgb2YgaGVyIG5hbWUgYXMgaW5zY3JpYmVkIG9uIGhlciBsdWdnYWdlLiBUaGlzIGRlcHJpdmF0aW9uIG9mIGEgZnVsbCBuYW1lIGlzIGFscmVhZHkgc2lnbmlmaWNhbnQgYXMgaXQgbWFya3MgdGhlIGJlZ2lubmluZyBvZiBhIHNoYWtlIG9mZiBvZiBzb2NpYWwgY29udmVudGlvbnMuIExpc3BlY3RvciB3YW50cyB0byBmYWNlIHVzIHdpdGggdGhlIHJhdyBjb3JlIG9mIGhlciBjaGFyYWN0ZXIsIHVudGFpbnRlZCBieSB0aGUgdHJhY2VzIG9mIGhlciBzb2NpYWwgaWRlbnRpdHkuIEFsdGhvdWdoIHRoZSByZWFkZXIgZG9lcyBub3QgZ2V0IGEgZGV0YWlsZWQgaW5zaWdodCBpbnRvIEcuIEgncyBwcmV2aW91cyBsaWZlIGFuZCBjaGFyYWN0ZXIsIGl0IHNlZW1zIHRoYXQgdGhlcmUgaXMgYWN0dWFsbHkgbm90IG11Y2ggdG8gdGVsbCBpbiB0aGlzIHJlc3BlY3QuIEZyb20gdGhlIGNsdWVzIHRoYXQgRy4gSC4ncyBtb25vbG9ndWUgcmV2ZWFscywgc2hlIGlzIGp1c3QgYSBtZW1iZXIgb2YgdGhlIGxlaXN1cmUgY2xhc3Mgd2hvIGxpdmVzIGluIGEgcXVpdGUgcGVudGhvdXNlIGluIFJpbyBkZSBKYW5laXJvLCB0aHVzIHByZXNpZGluZyBvdmVyIHRoZSBjaXR5IGluIGFuIGVsZWdhbnQgYnV0IGFydGlmaWNpYWwgYXBhcnRtZW50LiBTaGUgaXMgdW5tYXJyaWVkIGFuZCBjaGlsZGxlc3MsIGFuZCBoZXIgb25seSBvY2N1cGF0aW9uIGlzIGhlciBkaWxldHRhbnRlIHByb2Zlc3Npb24gYXMgYSBzY3VscHRvci4gQWxsIHRoZXNlIGRldGFpbHMgRy5ILiBnaXZlcyBzcGVhayBhYm91dCB0aGUgdGlyZXNvbWUgcm91dGluZSBhbmQgYXJ0aWZpY2lhbGl0eSBvZiBoZXIgbGlmZSwgdHdvIHRoaW5ncyB0aGF0IHNoZSBkb2VzIG5vdCBldmVuIG5vdGljZSBmdWxseS4KClRoZSBldmVudCB0aGF0IG1hbmFnZXMgdG8gYnJlYWsgb3V0IHRoZSByb3V0aW5lIGFuZCBhd2FrZW4gaGVyIHNwaXJpdCB0byBhIG5ldyBsaWZlIGlzIHRoZSBlbmNvdW50ZXIgd2l0aCBhIGNvY2tyb2FjaCB3aGlsZSBzaGUgZ29lcyB0byBoZXIgZm9ybWVyIG1haWQncyByb29tIHRvIHRpZHkgaXQuIFRoZSB3aG9sZSBhY3Rpb24gb2YgdGhlIGJvb2sgc2lnbmlmaWNhbnRseSB0YWtlcyBwbGFjZSBpbiB0aGF0IGNsYXVzdHJvcGhvYmljIHNwYWNlOiBhIGRvbWVzdGljIHJvb20gd2hpY2ggd291bGQgb3RoZXJ3aXNlIHNlZW0gdW5maXQgZm9yIHJldmVsYXRpb24uIFN0aWxsLCB0aGUgZmFjdCB0aGF0IGl0IGFsbCB0YWtlcyBwbGFjZSBpbiB0aGUgbWFpZCdzIHJvb20gaXMgYWN0dWFsbHkgc3ltYm9saWM6IGZpcnN0IG9mIGFsbCwgRy5ILiBlbnRlcnMgYW5vdGhlciBzcGFjZSwgbGVhdmluZyBiZWhpbmQgdGhlIGNvbW1vZGl0eSBhbmQgZWxlZ2FuY2Ugb2YgaGVyIGxvZnR5IGFwYXJ0bWVudC4gSGVyIGZlZWxpbmdzIGFuZCBoZXIgaW50ZW50aW9ucyBhcyBzaGUgZ29lcyB0byB3aGF0IHVzZWQgdG8gYmUgdGhlIG1haWQncyByb29tIGp1c3QgYSBmZXcgZGF5cyBiZWZvcmUgYXJlIGFsc28gdmVyeSBzaWduaWZpY2FudC4gU2hlIHBsYW5zIG9uIGR1c3RpbmcgdGhlIHJvb20gb2YgdGhlIEphbmFpciwgdGhlIG1haWQgc2hlIGhhZCBkaXNtaXNzZWQganVzdCBhIGZldyBkYXlzIGJlZm9yZS4gSGVyIGV4cGVjdGFuY2llcyBhcyBzaGUgZGV0ZXJtaW5lcyB0byBjbGVhbiB1cCB0aGUgcm9vbSBhcmUgYWxzbyB2ZXJ5IHNpZ25pZmljYW50IEcuSC4gYXNzdW1lcyBzaGUgd2lsbCBmaW5kIGEgbWVzc3kgYW5kIGZpbHRoeSByb29tLCB0aHVzIGluYWR2ZXJ0ZW50bHkgYXNzb2NpYXRpbmcgdGhlIHNwYWNlIG9mIHRoZSBPdGhlciB3aXRoIGhlciBwcmUtZXN0YWJsaXNoZWQgY3VsdHVyYWwgc3RlcmVvdHlwZXMuIEFsc28gdW5jb25zY2lvdXNseSwgc2hlIG9wcG9zZXMgaW4gaGVyIHNwZWVjaCB0aGUgdHdvIGRpZmZlcmVudCBzcGFjZXMsIGJldHJheWluZyBoZXIgbWlzY29uY2VwdGlvbiBvZiB0aGUgbWFpZCBhcyB0aGUgb3RoZXIgYnV0IGFsc28gb2YgaGVyc2VsZi4gSW4gdGhlIGRlc2NyaXB0aW9uIHNoZSBnaXZlcyBvZiB0aGUgYXBhcnRtZW50LCBHLkguIGVtcGhhc2l6ZXMgdGhlIGZhY3QgdGhhdCB0aGUgYXBhcnRtZW50IHJlZmxlY3RzIGhlciBvd24gcGVyc29uYWxpdHkuIEludGVyZXN0aW5nbHksIHRoZSBwYXJhbGxlbCBzaGUgbWFrZXMgYmV0d2VlbiBoZXJzZWxmIGFuZCB0aGUgYXBhcnRtZW50IGVtcGhhc2l6ZXMgdGhlIGVsZWdhbnQgcm91dGluZSBvZiBoZXIgb3duIGludGVyaW9yIGxpZmUuIEp1c3QgbGlrZSB0aGUgYXBhcnRtZW50LCBzaGUgY2xhaW1zIHRvIGJlIG1hZGUgb2YgJ21vaXN0IGxpZ2h0cyBhbmQgc2hhZG93cycsIHVuYnJva2VuIGJ5IGFueXRoaW5nIHNoYXJwIG9yIHVuZXhwZWN0ZWQ6ICJUaGUgYXBhcnRtZW50IHJlZmxlY3RzIG1lLiBpdCdzIG9uIHRoZSB0b3AgZmxvb3IsIHdoaWNoIGlzIGNvbnNpZGVyZWQgZWxlZ2FudC4gUGVvcGxlIGluIG15IGNpcmNsZSB0cnkgdG8gbGl2ZSBpbiB0aGUgc28tY2FsbGVkIHBlbnRob3VzZS4gaXQncyBtb3JlIHRoYW4gZWxlZ2FudC4gaXQncyBhIHJlYWwgcGxlYXN1cmU6IHlvdSBjYW4gY29tbWFuZCBhIGNpdHkgZnJvbSB1cCBoZXJlLiBXaGVuIHRoYXQgZWxlZ2FuY2UgYmVjb21lcyBjb21tb24sIHdpbGwgSSwgd2l0aG91dCBldmVuIHRoaW5raW5nIHdoeSwgbW92ZSB0byBhbm90aGVyIGtpbmQgb2YgZWxlZ2FuY2U/IE1heWJlLiBKdXN0IGxpa2UgbWUsIHRoZSBhcGFydG1lbnQgaGFzIG1vaXN0IGxpZ2h0cyBhbmQgc2hhZG93cywgbm90aGluZyBoZXJlIGlzIHNoYXJwOiBvbmUgcm9vbSBwcmVjZWRlcyBhbmQgYW50aWNpcGF0ZXMgdGhlIG5leHQuIiAoTGlzcGVjdG9yLCAyMikgQmVmb3JlIGdvaW5nIHRvIHRoZSBtYWlkJ3Mgcm9vbSwgc2hlIHRyaWVzIGFnYWluIHRvIG1ha2UgYXNzdW1wdGlvbnMsIGJlbGlldmluZyBpbiBhbGwgY2VydGFpbnR5IHRoYXQgc2hlIHdpbGwgZW5jb3VudGVyIGEgbWVzc3kgYW5kIGZpbHRoeSBzcGFjZSB3aGljaCB3b3VsZCBiZSB0aGUgcGVyZmVjdCBjaGFyYWN0ZXJpemF0aW9uIG9mIGhlciBtYWlkLCBhcyBzZWVuIHRocm91Z2ggdGhlIGJsaW5kIG9mIGN1bHR1cmFsIHN0ZXJlb3R5cGVzLgoKVW5leHBlY3RlZGx5LCB0aGlzIGJyZWFraW5nIGludG8gdGhlIHNwYWNlIG9mIHRoZSBPdGhlciBpcyBhIHBvdGVudCByZXZlbGF0aW9uIEcuSC4gaXMgZnJpZ2h0ZW5lZCB0byBzZWUgdGhhdCB0aGUgc3BhY2UgbG9va3MgZW50aXJlbHkgZGlmZmVyZW50IGZyb20gaGVyIGNvbmNlcHRpb24gb2YgaXQuIEFsc28sIG5vdGFibHksIHRoZSBzaGFycCBjb250cmFzdCBiZXR3ZWVuIGhlciBvd24gc3BhY2UgYW5kIHRoYXQgb2YgdGhlIG1haWQgaXMgcG9pZ25hbnRseSBldmlkZW5jZWQuIFRodXMsIGl0IGNhbiBiZSBzYWlkIHRoYXQgdGhpcyBlbmNvdW50ZXIgd2l0aCB0aGUgY3VsdHVyYWxseSBkaWZmZXJlbnQgc3BhY2UgaXMgdGhlIGZpcnN0IHJldmVsYXRpb24gdGhhdCBHLkguIGhhcyBpbiB0aGUgbm92ZWwuIEluc3RlYWQgb2YgdGhlIHN1YmR1ZWQgZ2VudGxlbmVzcyB3aGljaCB3YXMgcHJvcGVyIG9mIGhlciBvd24gcm9vbSwgc2hlIGZpbmRzIHdoYXQgc2hlIGNhbGxzICd0aGUgcG9ydHJhaXQgb2YgYW4gZW1wdHkgc3RvbWFjaCcsIGEgbWV0YXBob3IgZm9yIHdoYXQgc2hlIGZlZWxzIGlzIGEgY29uc3VtaW5nIGFuZCBldmVuIHZpb2xlbnQgc3BhY2U6ICJUaGUgcm9vbSB3YXMgc28gZGlmZmVyZW50IGZyb20gdGhlIHJlc3Qgb2YgdGhlIGFwYXJ0bWVudCB0aGF0IGdvaW5nIGludG8gaXQgd2FzIGxpa2UgbGVhdmluZyBteSBvd24gaG9tZSBhbmQgZW50ZXJpbmcgYW5vdGhlci4gVGhlIHJvb20gd2FzIHRoZSBvcHBvc2l0ZSBvZiB3aGF0IEkgaGFkIGNyZWF0ZWQgaW4gbXkgaG9tZSwgdGhlIG9wcG9zaXRlIG9mIHRoZSBnZW50bGUgYmVhdXR5IHRoYXQgY2FtZSBmcm9tIG15IHRhbGVudCBmb3IgYXJyYW5nZW1lbnQsIGZyb20gbXkgdGFsZW50IGZvciBsaXZpbmcsIHRoZSBvcHBvc2l0ZSBvZiBteSBzZXJlbmUgaXJvbnksIG15IHN3ZWV0LCBkaXNpbnRlcmVzdGVkIGlyb255OiBpdCB3YXMgYSB2aW9sYXRpb24gb2YgbXkgcXVvdGF0aW9uIG1hcmtzLCB0aGUgcXVvdGF0aW9uIG1hcmtzIHRoYXQgbWFkZSBtZSBhIHJlZmVyZW5jZSB0byBteXNlbGYuIFRoZSByb29tIHdhcyBhIHBvcnRyYWl0IG9mIGFuIGVtcHR5IHN0b21hY2guIihMaXNwZWN0b3IsIDIzKSBUaGlzIHZpb2xlbnQgZW5jb3VudGVyIHdpdGggdGhlIE90aGVyIGlzIG5hdHVyYWwgaW4gdGhlIGNvbnRleHQgb2YgTGlzcGVjdG9yJ3MgcHJldmlvdXMgYXJ0aWZpY2lhbCBzZW5zZSBvZiBpZGVudGl0eS4gVGhlIGZhY3QgdGhhdCB0aGUgbWFpZCdzIHJvb20gYmV0cmF5cyBoZXIgZXhwZWN0YXRpb25zIGVucmFnZXMgaGVyLCBtYWtpbmcgaGVyIGF3YXJlIG9mIGEgdmlvbGF0aW9uIG9mIGhlciBhcnRpZmljaWFsaXR5LCBmaWd1cmVkIGluIHRoZSB0ZXh0IGJ5IHRoZSBtZXRhcGhvcmljIHF1b3RhdGlvbiBtYXJrcy4gSGVyIHBlcnNvbmFsaXR5IHNvIGZhciBoYWQgb25seSBiZWVuIGEgc2VyaWVzIG9mIGNvbnZlbnRpb25zIHF1b3RlZCBmcm9tIHRoZSBnZW5lcmFsIG9waW5pb24uIE5vdywgRy5ILiBmaW5kcyBoZXJzZWxmIGF0IGEgY3Jvc3Nyb2FkcyB3aGVuIHNoZSBvcGVubHkgY29uZnJvbnRzIGFuZCBiZWdpbnMgdG8gdW5kZXJzdGFuZCB0aGUgT3RoZXIuIE5hdHVyYWxseSwgdGhpcyBlbmNvdW50ZXIgYmVnaW5zIHdpdGggYSBjb250cmFkaWN0aW9uOiBzaGUgZmVlbHMgYW5uaWhpbGF0ZWQgYW5kIG9wcG9zZWQgYnkgdGhlIG90aGVyLiBBY2NvcmRpbmcgdG8gTHVjZSBJcmlnYXJheSwgaW4gb3JkZXIgdG8gcmVwb3NzZXNzIG9uZSdzIGdlbmRlciBpZGVudGl0eSwgdGhlIGZlbWluaW5lIHJvbGUgaGFzIHRvIGJlIGFzc3VtZWQgZGVsaWJlcmF0ZWx5LCB0aHJvdWdoIG1pbWljcnk6ICJUaGVyZSBpcywgaW4gYW4gaW5pdGlhbCBwaGFzZSwgcGVyaGFwcyBvbmx5IG9uZSBwYXRoLCB0aGUgb25lIGhpc3RvcmljYWxseSBhc3NpZ25lZCBmb3IgdGhlIGZlbWluaW5lOiB0aGF0IG9mIG1pbWljcnkuIE9uZSBtdXN0IGFzc3VtZSB0aGUgZmVtaW5pbmUgcm9sZSBkZWxpYmVyYXRlbHksIHdoaWNoIG1lYW5zIGFscmVhZHkgdG8gY29udmVydCBhIGZvcm0gb2Ygc3Vib3JkaW5hdGlvbiBpbnRvIGFuIGFmZmlybWF0aW9uIGFuZCB0aHVzIHRvIGJlZ2luIHRvIHRod2FydCBpdC4iKFJpdmtpbiBhbmQgUnlhbiwgNzk1KSBUaHVzLCBzaW5jZSBnZW5kZXIgaWRlbnRpdHkgaXMgbm90IHNvbWV0aGluZyBhbHJlYWR5IGdpdmVuLCBpdCBzaG91bGQgYmUgZGVsaWJlcmF0ZWx5IGFzc3VtZWQgb3IgZW5hY3RlZCBzbyBhcyB0byBnaXZlIGl0IHNoYXBlIGFuZCBtZWFuaW5nLiBCZWZvcmUgdGhpcyBicmVha2luZyBpbnRvIHRoZSBzcGFjZSBvZiB0aGUgT3RoZXIsIEcuSC4gaGFzIGJ1dCBhIGRpbSBzZW5zZSBvZiBpZGVudGl0eSwgYXMgc2hlIGlzIHVuYWJsZSB0byBwZXJmb3JtIGZvciBoZXJzZWxmIGFuZCwgaW5zdGVhZCwgbGl2ZXMgZW5jbG9zZWQgaW4gaGVyIGFydGlmaWNpYWwgYW5kIHNoYWRvd3kgc3RlcmVvdHlwaWNhbCB3b3JsZC4gQW5vdGhlciBpbnRlcmVzdGluZyBmYWN0IGFib3V0IHRoZSBlbmNvdW50ZXIgd2l0aCB0aGUgT3RoZXIgaXMgdGhhdCBHLkguIGdvZXMgdG8gdGhlIG1haWQncyByb29tIHRvIGRvIGEgbWFpZCdzIHdvcmssIHRoYXQgaXMsIHRvIGNsZWFuIHVwIHRoZSByb29tLiBUaGUgbWFzdGVyLXNlcnZhbnQgcmVsYXRpb25zaGlwIGlzIHRodXMgZGVmdGx5IHJldmVyc2VkIGhlcmUuIEluIGFkZGl0aW9uLCB0aGUgaXNvbGF0ZWQgcm9vbSBpbiB0aGUgcGVudGhvdXNlIGFwYXJ0bWVudCBjYW4gYmUgc2FpZCB0byByZWNhbGwgdGhlIHNlY3JldCBhbmQgZm9yYmlkZGVuIHJvb20gd2hpY2ggaXMgc29tZXRpbWVzIGEgbGVpdG1vdGlmIG9mIGZhaXJ5dGFsZXM6IHRoZSBoZXJvIG9yIHRoZSBoZXJvaW5lIGFyZSBmb3JiaWRkZW4gdG8gZW50ZXIgaXQgYnV0IHRoZXkgZG8gaXQgZXZlbnR1YWxseSwgZ2FpbmluZyBhIHJldmVsYXRvcnkgYW5kIGFsdG9nZXRoZXIgbWV0YW1vcnBob3NpbmcgZXhwZXJpZW5jZS4gVGhlIG9idmlvdXMgcGFyYWxsZWwgd2l0aCBLYWZrYSdzIG5vdmVsbGEsIHRoZSBNZXRhbW9ycGhvc2lzLCBpcyBhbHNvIHNpZ25pZmljYW50OiB0aGUgcmV2ZWxhdGlvbiBoZXJlIGFsc28gdGFrZXMgcGxhY2UgaW4gYSBsaW1pdGVkIGFuZCBjbGF1c3Ryb3Bob2JpYyBzcGFjZSBhbmQgZXZlbiBpZiBHLkguIGRvZXMgbm90IGFjdHVhbGx5IHRyYW5zZm9ybSBpbnRvIHRoZSBjb2Nrcm9hY2gsIHNoZSBvYnZpb3VzbHkgbWV0YW1vcnBob3NlcyBpbnRvIGhlcnNlbGYgdGhyb3VnaCB0aGUgZW5jb3VudGVyIHdpdGggdGhlIE90aGVyLgoKSXQgaXMgdGh1cyB0aHJvdWdoIHRoZSBlbmNvdW50ZXIgd2l0aCB0aGUgT3RoZXIgdGhhdCBHLkguIGV2ZW50dWFsbHkgYXR0YWlucyBhIHNlbnNlIG9mIGlkZW50aXR5LiBNb3Jlb3ZlciwgdGhlIHRydWUgZXBpcGhhbnkgb2NjdXJzIHRocm91Z2ggYW5vdGhlciBjb25mcm9udGF0aW9uIHdpdGggb3RoZXJuZXNzLiBCZXNpZGVzIHRoZSBlbmNvdW50ZXIgd2l0aCB0aGUgbWFpZCwgRy5ILiBhbHNvIGNvbmZyb250cyBvdGhlcm5lc3MgaW4gdGhlIHNoYXBlIG9mIGEgY29ja3JvYWNoLiBDb25mZXNzaW5nIHRvJiM4MjMwOw==