XGJlZ2lue2ZsdXNobGVmdH0KCntcYmZzZXJpZXMgU3BlY2lmaWNhdGlvbjogSkFYLVJTIC0gSmF2YVx0ZXh0dHJhZGVtYXJrXCBBUEkgZm9yIFJFU1RmdWwgV2ViIFNlcnZpY2VzIChcbHFcbHEgU3BlY2lmaWNhdGlvblxycVxycSlcXAolIFZlcnNpb246IDEuMC1lZGl0b3JzLWRyYWZ0XFwKVmVyc2lvbjogMS4wLXByb3Bvc2VkLWZpbmFsLWRyYWZ0XFwKU3RhdHVzOiBQcmUtRkNTIFB1YmxpYyBSZWxlYXNlXFwKUmVsZWFzZTogXHRvZGF5XFwKQ29weXJpZ2h0IDIwMDcgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLlxcCjQxNTAgTmV0d29yayBDaXJjbGUsIFNhbnRhIENsYXJhLCBDYWxpZm9ybmlhIDk1MDU0LCBVLlMuQVxcCjE4MCwgQXZlbnVlIGRlIEwnRXVyb3BlLCAzODMzMCBNb250Ym9ubm90IFNhaW50IE1hcnRpbiwgRnJhbmNlXFwKQWxsIHJpZ2h0cyByZXNlcnZlZC4KfQoKe1xiZnNlcmllcyBOT1RJQ0V9CgpUaGUgU3BlY2lmaWNhdGlvbiBpcyBwcm90ZWN0ZWQgYnkgY29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gZGVzY3JpYmVkIHRoZXJlaW4gbWF5IGJlIHByb3RlY3RlZCBieSBvbmUgb3IgbW9yZSBVLlMuIHBhdGVudHMsIGZvcmVpZ24gcGF0ZW50cywgb3IgcGVuZGluZyBhcHBsaWNhdGlvbnMuICBFeGNlcHQgYXMgcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBsaWNlbnNlLCBubyBwYXJ0IG9mIHRoZSBTcGVjaWZpY2F0aW9uIG1heSBiZSByZXByb2R1Y2VkIGluIGFueSBmb3JtIGJ5IGFueSBtZWFucyB3aXRob3V0IHRoZSBwcmlvciB3cml0dGVuIGF1dGhvcml6YXRpb24gb2YgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiAoXGxxXGxxIFN1blxycVxycSkgYW5kIGl0cyBsaWNlbnNvcnMsIGlmIGFueS4gIEFueSB1c2Ugb2YgdGhlIFNwZWNpZmljYXRpb24gYW5kIHRoZSBpbmZvcm1hdGlvbiBkZXNjcmliZWQgdGhlcmVpbiB3aWxsIGJlIGdvdmVybmVkIGJ5IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGlzIEFncmVlbWVudC4gCgpTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGlzIGxpY2Vuc2UsIGluY2x1ZGluZyB5b3VyIGNvbXBsaWFuY2Ugd2l0aCBQYXJhZ3JhcGhzIDEgYW5kIDIgYmVsb3csIFN1biBoZXJlYnkgZ3JhbnRzIHlvdSBhIGZ1bGx5LXBhaWQsIG5vbi1leGNsdXNpdmUsIG5vbi10cmFuc2ZlcmFibGUsIGxpbWl0ZWQgbGljZW5zZSAod2l0aG91dCB0aGUgcmlnaHQgdG8gc3VibGljZW5zZSkgdW5kZXIgU3VuJ3MgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyB0bzoKClxiZWdpbntlbnVtZXJhdGV9ClxpdGVtIFJldmlldyB0aGUgU3BlY2lmaWNhdGlvbiBmb3IgdGhlIHB1cnBvc2VzIG9mIGV2YWx1YXRpb24uIFRoaXMgaW5jbHVkZXM6IAooaSkgZGV2ZWxvcGluZyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIFNwZWNpZmljYXRpb24gZm9yIHlvdXIgaW50ZXJuYWwsIG5vbi1jb21tZXJjaWFsIHVzZTsKKGlpKSBkaXNjdXNzaW5nIHRoZSBTcGVjaWZpY2F0aW9uIHdpdGggYW55IHRoaXJkIHBhcnR5OyBhbmQgCihpaWkpIGV4Y2VycHRpbmcgYnJpZWYgcG9ydGlvbnMgb2YgdGhlIFNwZWNpZmljYXRpb24gaW4gb3JhbCBvciB3cml0dGVuIGNvbW11bmljYXRpb25zIHdoaWNoIGRpc2N1c3MgdGhlIFNwZWNpZmljYXRpb24gcHJvdmlkZWQgdGhhdCBzdWNoIGV4Y2VycHRzIGRvIG5vdCBpbiB0aGUgYWdncmVnYXRlIGNvbnN0aXR1dGUgYSBzaWduaWZpY2FudCBwb3J0aW9uIG9mIHRoZSBUZWNobm9sb2d5LgoKXGl0ZW0gRGlzdHJpYnV0ZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIFNwZWNpZmljYXRpb24gdG8gdGhpcmQgcGFydGllcyBmb3IgdGhlaXIgdGVzdGluZyBhbmQgZXZhbHVhdGlvbiB1c2UsIHByb3ZpZGVkIHRoYXQgYW55IHN1Y2ggaW1wbGVtZW50YXRpb246CihpKSBkb2VzIG5vdCBtb2RpZnksIHN1YnNldCwgc3VwZXJzZXQgb3Igb3RoZXJ3aXNlIGV4dGVuZCB0aGUgTGljZW5zb3IgTmFtZSBTcGFjZSwgb3IgaW5jbHVkZSBhbnkgcHVibGljIG9yIHByb3RlY3RlZCBwYWNrYWdlcywgY2xhc3NlcywgSmF2YSBpbnRlcmZhY2VzLCBmaWVsZHMgb3IgbWV0aG9kcyB3aXRoaW4gdGhlIExpY2Vuc29yIE5hbWUgU3BhY2Ugb3RoZXIgdGhhbiB0aG9zZSByZXF1aXJlZC9hdXRob3JpemVkIGJ5IHRoZSBTcGVjaWZpY2F0aW9uIG9yIFNwZWNpZmljYXRpb25zIGJlaW5nIGltcGxlbWVudGVkOwooaWkpIGlzIGNsZWFybHkgYW5kIHByb21pbmVudGx5IG1hcmtlZCB3aXRoIHRoZSB3b3JkIFxscVxscSBVTlRFU1RFRFxycVxycVwgb3IgXGxxXGxxIEVBUkxZIEFDQ0VTU1xycVxycVwgb3IgXGxxXGxxIElOQ09NUEFUSUJMRVxycVxycVwgIG9yIFxscVxscSBVTlNUQUJMRVxycVxycVwgb3IgXGxxXGxxIEJFVEFccnFccnFcIGluIGFueSBsaXN0IG9mIGF2YWlsYWJsZSBidWlsZHMgYW5kIGluIHByb3hpbWl0eSB0byBldmVyeSBsaW5rIGluaXRpYXRpbmcgaXRzIGRvd25sb2FkLCB3aGVyZSB0aGUgbGlzdCBvciBsaW5rIGlzIHVuZGVyIExpY2Vuc2Vl1XMgY29udHJvbDsgYW5kCihpaWkpIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgbm90aWNlOgpcbHFcbHEgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBhbiBlYXJseS1kcmFmdCBzcGVjaWZpY2F0aW9uIGRldmVsb3BlZCB1bmRlciB0aGUgSmF2YSBDb21tdW5pdHkgUHJvY2VzcyAoSkNQKSBhbmQgaXMgbWFkZSBhdmFpbGFibGUgZm9yIHRlc3RpbmcgYW5kIGV2YWx1YXRpb24gcHVycG9zZXMgb25seS4gVGhlIGNvZGUgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBhbnkgc3BlY2lmaWNhdGlvbiBvZiB0aGUgSkNQLlxycVxycVwKXGVuZHtlbnVtZXJhdGV9CgpUaGUgZ3JhbnQgc2V0IGZvcnRoIGFib3ZlIGNvbmNlcm5pbmcgeW91ciBkaXN0cmlidXRpb24gb2YgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGlzIGNvbnRpbmdlbnQgdXBvbiB5b3VyIGFncmVlbWVudCB0byB0ZXJtaW5hdGUgZGV2ZWxvcG1lbnQgYW5kIGRpc3RyaWJ1dGlvbiBvZiB5b3VyINJlYXJseSBkcmFmdNMgaW1wbGVtZW50YXRpb24gYXMgc29vbiBhcyBmZWFzaWJsZSBmb2xsb3dpbmcgZmluYWwgY29tcGxldGlvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbi4gIElmIHlvdSBmYWlsIHRvIGRvIHNvLCB0aGUgZm9yZWdvaW5nIGdyYW50IHNoYWxsIGJlIGNvbnNpZGVyZWQgbnVsbCBhbmQgdm9pZC4gCiAKTm8gcHJvdmlzaW9uIG9mIHRoaXMgQWdyZWVtZW50IHNoYWxsIGJlIHVuZGVyc3Rvb2QgdG8gcmVzdHJpY3QgeW91ciBhYmlsaXR5IHRvIG1ha2UgYW5kIGRpc3RyaWJ1dGUgdG8gdGhpcmQgcGFydGllcyBhcHBsaWNhdGlvbnMgd3JpdHRlbiB0byB0aGUgU3BlY2lmaWNhdGlvbi4KT3RoZXIgdGhhbiB0aGlzIGxpbWl0ZWQgbGljZW5zZSwgeW91IGFjcXVpcmUgbm8gcmlnaHQsIHRpdGxlIG9yIGludGVyZXN0IGluIG9yIHRvIHRoZSBTcGVjaWZpY2F0aW9uIG9yIGFueSBvdGhlciBTdW4gaW50ZWxsZWN0dWFsIHByb3BlcnR5LCBhbmQgdGhlIFNwZWNpZmljYXRpb24gbWF5IG9ubHkgYmUgdXNlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGxpY2Vuc2UgdGVybXMgc2V0IGZvcnRoIGhlcmVpbi4gVGhpcyBsaWNlbnNlIHdpbGwgZXhwaXJlIG9uIHRoZSBlYXJsaWVyIG9mOiAoYSkgdHdvICgyKSB5ZWFycyBmcm9tIHRoZSBkYXRlIG9mIFJlbGVhc2UgbGlzdGVkIGFib3ZlOyAoYikgdGhlIGRhdGUgb24gd2hpY2ggdGhlIGZpbmFsIHZlcnNpb24gb2YgdGhlIFNwZWNpZmljYXRpb24gaXMgcHVibGljbHkgcmVsZWFzZWQ7IG9yIChjKSB0aGUgZGF0ZSBvbiB3aGljaCB0aGUgSmF2YSBTcGVjaWZpY2F0aW9uIFJlcXVlc3QgKEpTUikgdG8gd2hpY2ggdGhlIFNwZWNpZmljYXRpb24gY29ycmVzcG9uZHMgaXMgd2l0aGRyYXduLiAgSW4gYWRkaXRpb24sIHRoaXMgbGljZW5zZSB3aWxsIHRlcm1pbmF0ZSBpbW1lZGlhdGVseSB3aXRob3V0IG5vdGljZSBmcm9tIFN1biBpZiB5b3UgZmFpbCB0byBjb21wbHkgd2l0aCBhbnkgcHJvdmlzaW9uIG9mIHRoaXMgbGljZW5zZS4gIFVwb24gdGVybWluYXRpb24sIHlvdSBtdXN0IGNlYXNlIHVzZSBvZiBvciBkZXN0cm95IHRoZSBTcGVjaWZpY2F0aW9uLgogClxscVxscSBMaWNlbnNvciBOYW1lIFNwYWNlXHJxXHJxXCBtZWFucyB0aGUgcHVibGljIGNsYXNzIG9yIGludGVyZmFjZSBkZWNsYXJhdGlvbnMgd2hvc2UgbmFtZXMgYmVnaW4gd2l0aCBcbHFcbHEgamF2YVxycVxycVwgLCBcbHFcbHEgamF2YXhccnFccnFcICwgXGxxXGxxIGNvbS5zdW5ccnFccnFcICBvciB0aGVpciBlcXVpdmFsZW50cyBpbiBhbnkgc3Vic2VxdWVudCBuYW1pbmcgY29udmVudGlvbiBhZG9wdGVkIGJ5IFN1biB0aHJvdWdoIHRoZSBKYXZhIENvbW11bml0eSBQcm9jZXNzLCBvciBhbnkgcmVjb2duaXplZCBzdWNjZXNzb3JzIG9yIHJlcGxhY2VtZW50cyB0aGVyZW9mCgoKe1xiZnNlcmllcyBUUkFERU1BUktTfQoKTm8gcmlnaHQsIHRpdGxlLCBvciBpbnRlcmVzdCBpbiBvciB0byBhbnkgdHJhZGVtYXJrcywgc2VydmljZSBtYXJrcywgb3IgdHJhZGUgbmFtZXMgb2YgU3VuIG9yIFN1bidzIGxpY2Vuc29ycyBpcyBncmFudGVkIGhlcmV1bmRlci4gIFN1biwgU3VuIE1pY3Jvc3lzdGVtcywgdGhlIFN1biBsb2dvLCBKYXZhLCAgYXJlIHRyYWRlbWFya3Mgb3IgcmVnaXN0ZXJlZCB0cmFkZW1hcmtzIG9mIFN1biBNaWNyb3N5c3RlbXMsIEluYy4gaW4gdGhlClUuUy4gYW5kIG90aGVyIGNvdW50cmllcy4KCntcYmZzZXJpZXMgRElTQ0xBSU1FUiBPRiBXQVJSQU5USUVTfQoKVEhFIFNQRUNJRklDQVRJT04gSVMgUFJPVklERUQgIkFTIElTIiBBTkQgSVMgRVhQRVJJTUVOVEFMIEFORCBNQVkgQ09OVEFJTiBERUZFQ1RTIE9SIERFRklDSUVOQ0lFUyBXSElDSCBDQU5OT1QgT1IgV0lMTCBOT1QgQkUgQ09SUkVDVEVEIEJZIFNVTi4gIFNVTiBNQUtFUyBOTyBSRVBSRVNFTlRBVElPTlMgT1IgV0FSUkFOVElFUywgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTywgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBPUiBOT04tSU5GUklOR0VNRU5UIFRIQVQgVEhFIENPTlRFTlRTIE9GIFRIRSBTUEVDSUZJQ0FUSU9OIEFSRQpTVUlUQUJMRSBGT1IgQU5ZIFBVUlBPU0UgT1IgVEhBVCBBTlkgUFJBQ1RJQ0UgT1IgSU1QTEVNRU5UQVRJT04gT0YgU1VDSCBDT05URU5UUyBXSUxMIE5PVCBJTkZSSU5HRSBBTlkgVEhJUkQgUEFSVFkgUEFURU5UUywgQ09QWVJJR0hUUywgVFJBREUgU0VDUkVUUyBPUiBPVEhFUiBSSUdIVFMuICBUaGlzIGRvY3VtZW50IGRvZXMgbm90IHJlcHJlc2VudCBhbnkgY29tbWl0bWVudCB0byByZWxlYXNlIG9yIGltcGxlbWVudCBhbnkgcG9ydGlvbiBvZiB0aGUgU3BlY2lmaWNhdGlvbiBpbiBhbnkgcHJvZHVjdC4KClRIRSBTUEVDSUZJQ0FUSU9OIENPVUxEIElOQ0xVREUgVEVDSE5JQ0FMIElOQUNDVVJBQ0lFUyBPUiBUWVBPR1JBUEhJQ0FMIEVSUk9SUy4gIENIQU5HRVMgQVJFIFBFUklPRElDQUxMWSBBRERFRCBUTyBUSEUgSU5GT1JNQVRJT04gVEhFUkVJTjsgVEhFU0UgQ0hBTkdFUyBXSUxMIEJFIElOQ09SUE9SQVRFRCBJTlRPIE5FVyBWRVJTSU9OUyBPRiBUSEUgU1BFQ0lGSUNBVElPTiwgSUYgQU5ZLiAgU1VOIE1BWSBNQUtFIElNUFJPVkVNRU5UUyBBTkQvT1IgQ0hBTkdFUyBUTyBUSEUgUFJPRFVDVChTKSBBTkQvT1IgVEhFIFBST0dSQU0oUykgREVTQ1JJQkVEIElOIFRIRSBTUEVDSUZJQ0FUSU9OIEFUIEFOWSBUSU1FLiAgQW55IHVzZSBvZiBzdWNoIGNoYW5nZXMgaW4gdGhlIFNwZWNpZmljYXRpb24gd2lsbCBiZSBnb3Zlcm5lZCBieSB0aGUgdGhlbi1jdXJyZW50IGxpY2Vuc2UgZm9yIHRoZSBhcHBsaWNhYmxlIHZlcnNpb24gb2YgdGhlIFNwZWNpZmljYXRpb24uCgp7XGJmc2VyaWVzIExJTUlUQVRJT04gT0YgTElBQklMSVRZfQoKVE8gVEhFIEVYVEVOVCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIElOIE5PIEVWRU5UIFdJTEwgU1VOIE9SIElUUyBMSUNFTlNPUlMgQkUgTElBQkxFIEZPUiBBTlkgREFNQUdFUywgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiwgTE9TVCBSRVZFTlVFLCBQUk9GSVRTIE9SIERBVEEsIE9SIEZPUiBTUEVDSUFMLCBJTkRJUkVDVCwgQ09OU0VRVUVOVElBTCwgSU5DSURFTlRBTCBPUiBQVU5JVElWRSBEQU1BR0VTLCBIT1dFVkVSIENBVVNFRCBBTkQgUkVHQVJETEVTUyBPRiBUSEUgVEhFT1JZIE9GIExJQUJJTElUWSwgQVJJU0lORyBPVVQgT0YgT1IgUkVMQVRFRCBUTyBBTlkgRlVSTklTSElORywgUFJBQ1RJQ0lORywgTU9ESUZZSU5HIE9SIEFOWSBVU0UgT0YgVEhFIFNQRUNJRklDQVRJT04sIEVWRU4gSUYgU1VOIEFORC9PUiBJVFMgTElDRU5TT1JTIEhBVkUgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuCgpZb3Ugd2lsbCBob2xkIFN1biAoYW5kIGl0cyBsaWNlbnNvcnMpIGhhcm1sZXNzIGZyb20gYW55IGNsYWltcyBiYXNlZCBvbiB5b3VyIHVzZSBvZiB0aGUgU3BlY2lmaWNhdGlvbiBmb3IgYW55IHB1cnBvc2VzIG90aGVyIHRoYW4gdGhlIGxpbWl0ZWQgcmlnaHQgb2YgZXZhbHVhdGlvbiBhcyBkZXNjcmliZWQgYWJvdmUsIGFuZCBmcm9tIGFueSBjbGFpbXMgdGhhdCBsYXRlciB2ZXJzaW9ucyBvciByZWxlYXNlcyBvZiBhbnkgU3BlY2lmaWNhdGlvbiBmdXJuaXNoZWQgdG8geW91IGFyZSBpbmNvbXBhdGlibGUgd2l0aCB0aGUgU3BlY2lmaWNhdGlvbiBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhpcyBsaWNlbnNlLgoKe1xiZnNlcmllcyBSRVNUUklDVEVEIFJJR0hUUyBMRUdFTkR9CgpJZiB0aGlzIFNvZnR3YXJlIGlzIGJlaW5nIGFjcXVpcmVkIGJ5IG9yIG9uIGJlaGFsZiBvZiB0aGUgVS5TLiBHb3Zlcm5tZW50IG9yIGJ5IGEgVS5TLiBHb3Zlcm5tZW50IHByaW1lIGNvbnRyYWN0b3Igb3Igc3ViY29udHJhY3RvciAoYXQgYW55IHRpZXIpLCB0aGVuIHRoZSBHb3Zlcm5tZW50J3MgcmlnaHRzIGluIHRoZSBTb2Z0d2FyZSBhbmQgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gc2hhbGwgYmUgb25seSBhcyBzZXQgZm9ydGggaW4gdGhpcyBsaWNlbnNlOyB0aGlzIGlzIGluIGFjY29yZGFuY2Ugd2l0aCA0OCBDLkYuUi4gMjI3LjcyMDEgdGhyb3VnaCAyMjcuNzIwMi00IChmb3IgRGVwYXJ0bWVudCBvZiBEZWZlbnNlIChEb0QpIGFjcXVpc2l0aW9ucykgYW5kIHdpdGggNDggQy5GLlIuIDIuMTAxIGFuZCAxMi4yMTIgKGZvciBub24tRG9EIGFjcXVpc2l0aW9ucykuCgp7XGJmc2VyaWVzIFJFUE9SVH0KCllvdSBtYXkgd2lzaCB0byByZXBvcnQgYW55IGFtYmlndWl0aWVzLCBpbmNvbnNpc3RlbmNpZXMgb3IgaW5hY2N1cmFjaWVzIHlvdSBtYXkgZmluZCBpbiBjb25uZWN0aW9uIHdpdGggeW91ciBldmFsdWF0aW9uIG9mIHRoZSBTcGVjaWZpY2F0aW9uIChcbHFcbHEgRmVlZGJhY2tccnFccnEpLiAgVG8gdGhlIGV4dGVudCB0aGF0IHlvdSBwcm92aWRlIFN1biB3aXRoIGFueSBGZWVkYmFjaywgeW91IGhlcmVieTogKGkpIGFncmVlIHRoYXQgc3VjaCBGZWVkYmFjayBpcyBwcm92aWRlZCBvbiBhIG5vbi1wcm9wcmlldGFyeSBhbmQgbm9uLWNvbmZpZGVudGlhbCBiYXNpcywgYW5kIChpaSkgZ3JhbnQgU3VuIGEgcGVycGV0dWFsLCBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIGZ1bGx5IHBhaWQtdXAsIGlycmV2b2NhYmxlIGxpY2Vuc2UsIHdpdGggdGhlIHJpZ2h0IHRvIHN1YmxpY2Vuc2UgdGhyb3VnaCBtdWx0aXBsZSBsZXZlbHMgb2Ygc3VibGljZW5zZWVzLCB0byBpbmNvcnBvcmF0ZSwgZGlzY2xvc2UsIGFuZCB1c2Ugd2l0aG91dCBsaW1pdGF0aW9uIHRoZSBGZWVkYmFjayBmb3IgYW55IHB1cnBvc2UgcmVsYXRlZCB0byB0aGUgU3BlY2lmaWNhdGlvbiBhbmQgZnV0dXJlIHZlcnNpb25zLCBpbXBsZW1lbnRhdGlvbnMsIGFuZCB0ZXN0IHN1aXRlcyB0aGVyZW9mLgoKe1xiZnNlcmllcyBHRU5FUkFMIFRFUk1TfQoKQW55IGFjdGlvbiByZWxhdGVkIHRvIHRoaXMgQWdyZWVtZW50IHdpbGwgYmUgZ292ZXJuZWQgYnkgQ2FsaWZvcm5pYSBsYXcgYW5kIGNvbnRyb2xsaW5nIFUuUy4gZmVkZXJhbCBsYXcuIFRoZSBVLk4uIENvbnZlbnRpb24gZm9yIHRoZSBJbnRlcm5hdGlvbmFsIFNhbGUgb2YgR29vZHMgYW5kIHRoZSBjaG9pY2Ugb2YgbGF3IHJ1bGVzIG9mIGFueSBqdXJpc2RpY3Rpb24gd2lsbCBub3QgYXBwbHkuCgpUaGUgU3BlY2lmaWNhdGlvbiBpcyBzdWJqZWN0IHRvIFUuUy4gZXhwb3J0IGNvbnRyb2wgbGF3cyBhbmQgbWF5IGJlIHN1YmplY3QgdG8gZXhwb3J0IG9yIGltcG9ydCByZWd1bGF0aW9ucyBpbiBvdGhlciBjb3VudHJpZXMuIExpY2Vuc2VlIGFncmVlcyB0byBjb21wbHkgc3RyaWN0bHkgd2l0aCBhbGwgc3VjaCBsYXdzIGFuZCByZWd1bGF0aW9ucyBhbmQgYWNrbm93bGVkZ2VzIHRoYXQgaXQgaGFzIHRoZSByZXNwb25zaWJpbGl0eSB0byBvYnRhaW4gc3VjaCBsaWNlbnNlcyB0byBleHBvcnQsIHJlLWV4cG9ydCBvciBpbXBvcnQgYXMgbWF5IGJlIHJlcXVpcmVkIGFmdGVyIGRlbGl2ZXJ5IHRvIExpY2Vuc2VlLgoKVGhpcyBBZ3JlZW1lbnQgaXMgdGhlIHBhcnRpZXMnIGVudGlyZSBhZ3JlZW1lbnQgcmVsYXRpbmcgdG8gaXRzIHN1YmplY3QgbWF0dGVyLiBJdCBzdXBlcnNlZGVzIGFsbCBwcmlvciBvciBjb250ZW1wb3JhbmVvdXMgb3JhbCBvciB3cml0dGVuIGNvbW11bmljYXRpb25zLCBwcm9wb3NhbHMsIGNvbmRpdGlvbnMsIHJlcHJlc2VudGF0aW9ucyBhbmQgd2FycmFudGllcyBhbmQgcHJldmFpbHMgb3ZlciBhbnkgY29uZmxpY3Rpbmcgb3IgYWRkaXRpb25hbCB0ZXJtcyBvZiBhbnkgcXVvdGUsIG9yZGVyLCBhY2tub3dsZWRnbWVudCwgb3Igb3RoZXIgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSBwYXJ0aWVzIHJlbGF0aW5nIHRvIGl0cyBzdWJqZWN0IG1hdHRlciBkdXJpbmcgdGhlIHRlcm0gb2YgdGhpcyBBZ3JlZW1lbnQuIE5vIG1vZGlmaWNhdGlvbiB0byB0aGlzIEFncmVlbWVudCB3aWxsIGJlIGJpbmRpbmcsIHVubGVzcyBpbiB3cml0aW5nIGFuZCBzaWduZWQgYnkgYW4gYXV0aG9yaXplZCByZXByZXNlbnRhdGl2ZSBvZiBlYWNoIHBhcnR5LgpcZW5ke2ZsdXNobGVmdH0=