TElDRU5TRSBBR1JFRU1FTlQgRk9SIFBZQ0hBUk0NKENvbW1lcmNpYWwgYW5kIFBlcnNvbmFsIExpY2Vuc2UpDQ1JTVBPUlRBTlQhIFJFQUQgQ0FSRUZVTExZOiBUSElTIElTIEEgTEVHQUwgQUdSRUVNRU5ULiBCWSBET1dOTE9BRElORywgSU5TVEFMTElORywgQ09QWUlORywgU0FWSU5HIE9OIFlPVVIgQ09NUFVURVIsIE9SIE9USEVSV0lTRSBVU0lORyBUSElTIFNPRlRXQVJFLCBZT1UgKExJQ0VOU0VFLCBBUyBERUZJTkVEIEJFTE9XKSBBUkUgQkVDT01JTkcgQSBQQVJUWSBUTyBUSElTIEFHUkVFTUVOVCBBTkQgWU9VIEFSRSBDT05TRU5USU5HIFRPIEJFIEJPVU5EIEJZIEFMTCBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQuDQ1JRiBZT1UgRE8gTk9UIEFHUkVFIFRPIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCwgWU9VIFNIT1VMRCBOT1QgRE9XTkxPQUQsIElOU1RBTEwgQU5EIFVTRSBUSEUgU09GVFdBUkUuDQ0xLiBQQVJUSUVTDQ0oYSkgIkxpY2Vuc29yIiBtZWFucyBKZXRCcmFpbnMgcy5yLm8uLCBoYXZpbmcgaXRzIHByaW5jaXBhbCBwbGFjZSBvZiBidXNpbmVzcyBhdCBOYSBocmViZW5lY2ggSUkgMTcxOC8xMCwgUHJhZ3VlLCAxNDcwMCwgQ3plY2ggUmVwdWJsaWMsIHJlZ2lzdGVyZWQgd2l0aCBDb21tZXJjaWFsIFJlZ2lzdGVyIGtlcHQgYnkgdGhlIE11bmljaXBhbCBDb3VydCBvZiBQcmFndWUsIFNlY3Rpb24gQywgZmlsZSA4NjIxMSwgSUQuTnIuOiAyNjUgMDIgMjc1Lg0NKGIpICJMaWNlbnNlZSIgbWVhbnMgdGhlIGluZGl2aWR1YWwgb3IgbGVnYWwgZW50aXR5IHNwZWNpZmllZCBpbiB0aGUgTGljZW5zZSBDZXJ0aWZpY2F0ZS4gRm9yIGxlZ2FsIGVudGl0aWVzLCAiTGljZW5zZWUiIGluY2x1ZGVzIGFueSBlbnRpdHkgd2hpY2ggY29udHJvbHMsIGlzIGNvbnRyb2xsZWQgYnksIG9yIGlzIHVuZGVyIGNvbW1vbiBjb250cm9sIHdpdGggTGljZW5zZWUuIEZvciBwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRpb24sICJjb250cm9sIiBtZWFucyAoaSkgdGhlIHBvd2VyLCBkaXJlY3Qgb3IgaW5kaXJlY3QsIHRvIGNhdXNlIHRoZSBkaXJlY3Rpb24gb3IgbWFuYWdlbWVudCBvZiBzdWNoIGVudGl0eSwgd2hldGhlciBieSBjb250cmFjdCBvciBvdGhlcndpc2UsIG9yIChpaSkgb3duZXJzaGlwIG9mIGZpZnR5IHBlcmNlbnQgKDUwJSkgb3IgbW9yZSBvZiB0aGUgb3V0c3RhbmRpbmcgc2hhcmVzIG9yIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5Lg0NMi4gREVGSU5JVElPTlMNDShhKSAiQXV0aG9yaXplZCBVc2VyIiBtZWFucyAoaSkgaWYgTGljZW5zZWUgaXMgYW4gaW5kaXZpZHVhbCwgc29sZWx5IExpY2Vuc2VlOyAoaWkpIGlmIExpY2Vuc2VlIGlzIGEgbGVnYWwgZW50aXR5LCBhbnkgZW1wbG95ZWUsIGluZGVwZW5kZW50IGNvbnRyYWN0b3IgYW5kIG90aGVyIHRlbXBvcmFyeSB3b3JrZXIgYXV0aG9yaXplZCBieSBMaWNlbnNlZSB0byB1c2UgU29mdHdhcmUgd2hpbGUgcGVyZm9ybWluZyBkdXRpZXMgd2l0aGluIHRoZSBzY29wZSBvZiB0aGVpciBlbXBsb3ltZW50IG9yIGFzc2lnbm1lbnQuDQ0oYikgIkNsaWVudCIgbWVhbnMgYSBjb21wdXRlciBkZXZpY2UgdXNlZCBieSBBdXRob3JpemVkIFVzZXIgZm9yIHJ1bm5pbmcgU29mdHdhcmUuDQ0oYykgIkxpY2Vuc2UgQ2VydGlmaWNhdGUiIG1lYW5zIGV2aWRlbmNlIG9mIGEgbGljZW5zZSBwcm92aWRlZCBieSBMaWNlbnNvciB0byBMaWNlbnNlZSBpbiBlbGVjdHJvbmljIG9yIHByaW50ZWQgZm9ybS4NDShkKSAiTGljZW5zZSBLZXkiIG1lYW5zIGEgdW5pcXVlIGtleS1jb2RlIHRoYXQgZW5hYmxlcyBhIHNpbmdsZSBBdXRob3JpemVkIFVzZXIgdG8gdXNlIFNvZnR3YXJlIGF0IGEgdGltZS4gT25seSBMaWNlbnNvciBhbmQvb3IgaXRzIHJlcHJlc2VudGF0aXZlcyBhcmUgcGVybWl0dGVkIHRvIHByb2R1Y2UgTGljZW5zZSBLZXlzIGZvciBTb2Z0d2FyZS4NDShlKSAiTGljZW5zZSBTZXJ2ZXIiIG1lYW5zIGEgc2VydmVyIGFwcGxpY2F0aW9uIHRoYXQgaXMgZGVzaWduZWQgdG8gc3RvcmUgTGljZW5zZSBLZXlzIGFuZCB0byBlbmFibGUgYWNjZXNzIHRvIFNvZnR3YXJlIGZyb20gQ2xpZW50cyB3aXRoaW4gTGljZW5zZWUncyBsb2NhbCBhcmVhIG5ldHdvcmsgKCJMaWNlbnNlZSdzIExBTiIpLiBMaWNlbnNlIFNlcnZlciBtYXkgYmUgb3B0aW9uYWxseSBwcm92aWRlZCBieSBMaWNlbnNvciB0byBMaWNlbnNlZS4NDShmKSAiU2VydmVyIENvbXB1dGVyIiBtZWFucyBhIGNlbnRyYWwgY29tcHV0ZXIgZGV2aWNlIHRoYXQgaXMgcGFydCBvZiBMaWNlbnNlZSdzIExBTiBhbmQgdGhhdCBpcyBkZWRpY2F0ZWQgYnkgTGljZW5zZWUgdG8gcnVuIExpY2Vuc2UgU2VydmVyLg0NKGcpICJTb2Z0d2FyZSIgbWVhbnMgc29mdHdhcmUgcHJvZ3JhbSBrbm93biBhcyBQeUNoYXJtIGluIGJpbmFyeSBmb3JtLCBpbmNsdWRpbmcgaXRzIGRvY3VtZW50YXRpb24sIHVwZ3JhZGVzIHByb3ZpZGVkIHB1cnN1YW50IHRvIFNlY3Rpb24gOCBvZiB0aGlzIEFncmVlbWVudCwgYW5kIGFueSB0aGlyZCBwYXJ0eSBzb2Z0d2FyZSBwcm9ncmFtcyB0aGF0IGFyZSBvd25lZCBhbmQgbGljZW5zZWQgcHVyc3VhbnQgdG8gU2VjdGlvbiA1IG9mIHRoaXMgQWdyZWVtZW50IGJ5IHBhcnRpZXMgb3RoZXIgdGhhbiBMaWNlbnNvciBhbmQgdGhhdCBhcmUgZWl0aGVyIGludGVncmF0ZWQgd2l0aCBvciBtYWRlIHBhcnQgb2YgUHlDaGFybSAoY29sbGVjdGl2ZWx5LCAiVGhpcmQgUGFydHkgU29mdHdhcmUiKS4NDTMuIE9XTkVSU0hJUA0NKGEpIFNvZnR3YXJlIGlzIHRoZSBwcm9wZXJ0eSBvZiBMaWNlbnNvciBvciBpdHMgc3VwcGxpZXJzLiBTb2Z0d2FyZSBpcyBsaWNlbnNlZCwgbm90IHNvbGQuIFRpdGxlIGFuZCBjb3B5cmlnaHRzIHRvIFNvZnR3YXJlLCBpbiB3aG9sZSBhbmQgaW4gcGFydCBhbmQgYWxsIGNvcGllcyB0aGVyZW9mLCBhbmQgYWxsIG1vZGlmaWNhdGlvbnMsIGVuaGFuY2VtZW50cywgZGVyaXZhdGl2ZXMgYW5kIG90aGVyIGFsdGVyYXRpb25zIG9mIFNvZnR3YXJlIHJlZ2FyZGxlc3Mgb2Ygd2hvIG1hZGUgYW55IG1vZGlmaWNhdGlvbnMsIGlmIGFueSwgYXJlLCBhbmQgd2lsbCByZW1haW4sIHRoZSBzb2xlIGFuZCBleGNsdXNpdmUgcHJvcGVydHkgb2YgTGljZW5zb3IgYW5kIGl0cyBzdXBwbGllcnMuDQ0oYikgU29mdHdhcmUgaXMgcHJvdGVjdGVkIGJ5IFVuaXRlZCBTdGF0ZXMgQ29weXJpZ2h0IExhdyBhbmQgSW50ZXJuYXRpb25hbCBUcmVhdHkgcHJvdmlzaW9ucy4gRnVydGhlciwgdGhlIHN0cnVjdHVyZSwgb3JnYW5pemF0aW9uLCBhbmQgY29kZSBlbWJvZGllZCBpbiBTb2Z0d2FyZSBhcmUgdGhlIHZhbHVhYmxlIGFuZCBjb25maWRlbnRpYWwgdHJhZGUgc2VjcmV0cyBvZiBMaWNlbnNvciBhbmQgaXRzIHN1cHBsaWVycyBhbmQgYXJlIHByb3RlY3RlZCBieSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgbGF3cyBhbmQgdHJlYXRpZXMuIExpY2Vuc2VlIGFncmVlcyB0byBhYmlkZSBieSB0aGUgY29weXJpZ2h0IGxhdyBhbmQgYWxsIG90aGVyIGFwcGxpY2FibGUgbGF3cyBvZiB0aGUgVW5pdGVkIFN0YXRlcyBpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bywgZXhwb3J0IGNvbnRyb2wgbGF3cy4NDTQuIEdSQU5UIE9GIExJQ0VOU0UNDVN1YmplY3QgdG8gdGhlIHRlcm1zLCBjb25kaXRpb25zLCBhbmQgbGltaXRhdGlvbnMgc2V0IGZvcnRoIGluIHRoaXMgQWdyZWVtZW50LCBpbmNsdWRpbmcgYW55IGFtZW5kbWVudHMgdGhlcmV0bywgTGljZW5zb3IgaGVyZWJ5IGdyYW50cyB0byBMaWNlbnNlZSBhIGxpbWl0ZWQsIG5vbi1leGNsdXNpdmUsIG5vbi10cmFuc2ZlcmFibGUgbGljZW5zZSB0byB1c2UgU29mdHdhcmUgYXMgZm9sbG93czoNDShhKSBMaWNlbnNlZSBtYXk6DQ0oaSkgaW5zdGFsbCBhbmQgdXNlIHRoZSBsaWNlbnNlZCBlZGl0aW9uIGFuZCB2ZXJzaW9uIG9mIFNvZnR3YXJlIHNwZWNpZmllZCBpbiBMaWNlbnNlIENlcnRpZmljYXRlKHMpIG9uIGFueSBudW1iZXIgb2YgQ2xpZW50cyBhbmQgb24gYW55IG9wZXJhdGluZyBzeXN0ZW0gc3VwcG9ydGVkIGJ5IFNvZnR3YXJlLCBwcm92aWRlZCB0aGF0IGEgbnVtYmVyIG9mIGNvbmN1cnJlbnQgdXNlcnMgb2YgU29mdHdhcmUgbmV2ZXIgZXhjZWVkcyB0aGUgbnVtYmVyIG9mIEF1dGhvcml6ZWQgVXNlcnMgc3BlY2lmaWVkIGluIHRoZSBhcHByb3ByaWF0ZSBMaWNlbnNlIENlcnRpZmljYXRlKHMpIGFuZCB0aGF0IHRoZSBzYW1lIExpY2Vuc2UgS2V5IGlzIG5vdCB1c2VkIGJ5IG11bHRpcGxlIEF1dGhvcml6ZWQgVXNlcnMsIG9uIG11bHRpcGxlIENsaWVudHMsIG9yIG9uIGRpZmZlcmVudCBvcGVyYXRpbmcgc3lzdGVtcyBhdCBhIHRpbWU7DQ0oaWkpIGFjY2VzcyBTb2Z0d2FyZSBmcm9tIENsaWVudHMgdmlhIExpY2Vuc2UgU2VydmVyIGlmIExpY2Vuc2VlIGhhcyBvYnRhaW5lZCBMaWNlbnNlIFNlcnZlciBmcm9tIExpY2Vuc29yLiBMaWNlbnNlZSBtYXkgaW5zdGFsbCBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgTGljZW5zZSBTZXJ2ZXIsIHByb3ZpZGVkIHRoYXQgTGljZW5zZWUgY29tcGxpZXMgd2l0aCByZXN0cmljdGlvbnMgc2V0IGZvcnRoIGluIHRoaXMgU2VjdGlvbiA0OyBhbmQNDShpaWkpIG1ha2Ugb25lIGJhY2stdXAgY29weSBvZiBTb2Z0d2FyZSBzb2xlbHkgZm9yIGFyY2hpdmFsIHB1cnBvc2VzLg0NKGIpIExpY2Vuc2VlIG1heSBub3Q6DQ0oaSkgc2VsbCwgcmVkaXN0cmlidXRlLCBlbmN1bWJlciwgZ2l2ZSwgbGVuZCwgcmVudCwgbGVhc2UsIHN1YmxpY2Vuc2UsIG9yIG90aGVyd2lzZSB0cmFuc2ZlciBTb2Z0d2FyZSwgb3IgYW55IHBvcnRpb25zIG9mIFNvZnR3YXJlLCB0byBhbnlvbmUgd2l0aG91dCB0aGUgcHJpb3Igd3JpdHRlbiBjb25zZW50IG9mIExpY2Vuc29yOw0NKGlpKSByZXZlcnNlIGVuZ2luZWVyLCBkZWNvbXBpbGUsIGRpc2Fzc2VtYmxlLCBtb2RpZnksIHRyYW5zbGF0ZSwgbWFrZSBhbnkgYXR0ZW1wdCB0byBkaXNjb3ZlciB0aGUgc291cmNlIGNvZGUgb2YgU29mdHdhcmUsIG9yIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIGZyb20gU29mdHdhcmU7IG9yDQ0oaWlpKSBhbGxvdyB0aGUgdXNlIG9mIHRoZSBzYW1lIExpY2Vuc2UgS2V5IGJ5IG11bHRpcGxlIEF1dGhvcml6ZWQgVXNlcnMsIG9uIG11bHRpcGxlIGluc3RhbmNlcyBvZiBMaWNlbnNlIFNlcnZlciwgb24gbXVsdGlwbGUgQ2xpZW50cyBvciBvbiBkaWZmZXJlbnQgb3BlcmF0aW5nIHN5c3RlbXMgYXQgYSB0aW1lLiBTb2Z0d2FyZSBtYXkgY29udGFpbiBhIGZlYXR1cmUgcHJldmVudGluZyBjb25jdXJyZW50IHVzZSBvZiB0aGUgc2FtZSBMaWNlbnNlIEtleSBieSBtdWx0aXBsZSBBdXRob3JpemVkIFVzZXJzLCBvbiBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgTGljZW5zZSBTZXJ2ZXIsIG9uIG11bHRpcGxlIENsaWVudHMgb3Igb24gZGlmZmVyZW50IG9wZXJhdGluZyBzeXN0ZW1zIGF0IGEgdGltZS4NDShjKSBBZGRpdGlvbmFsIExpbWl0YXRpb25zIGZvciBwcml2YXRlIGluZGl2aWR1YWxzIChhcHBsaWNhYmxlIHRvIFBlcnNvbmFsIExpY2Vuc2Ugb25seSk6DQ1JZiBMaWNlbnNlZSBpcyBhIHByaXZhdGUgaW5kaXZpZHVhbCwgTGljZW5zZWUgYWNrbm93bGVkZ2VzIHRoYXQgU29mdHdhcmUgcHJvdmlkZWQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgaXMgb25seSBmb3IgaGlzL2hlciBpbmRpdmlkdWFsIHVzZSBhbmQgYWdyZWVzIHRvIHB1cmNoYXNlIFNvZnR3YXJlIHVzaW5nIGhpcy9oZXIgb3duIGZ1bmRzIG9ubHkuIE5vdHdpdGhzdGFuZGluZyBhbnl0aGluZyB0byB0aGUgY29udHJhcnkgc2V0IGZvcnRoIGFib3ZlLCBMaWNlbnNlZSBtYXkgbm90IHVzZSBTb2Z0d2FyZSwgYW5kIHRoaXMgQWdyZWVtZW50IHNoYWxsIG5vdCBiZSBpbiBlZmZlY3QsIGluIHRoZSBldmVudCB0aGF0IExpY2Vuc2VlIGRvZXMgbm90IHBheSBTb2Z0d2FyZSBsaWNlbnNlIGZlZSB1c2luZyBMaWNlbnNlZdVzIG93biBmdW5kcywgb3IgaWYgYW55IHRoaXJkIHBhcnR5IHBheXMgU29mdHdhcmUgbGljZW5zZSBmZWUsIG9yIGlmIExpY2Vuc2VlIGV4cGVjdHMgb3IgcmVjZWl2ZXMgcmVpbWJ1cnNlbWVudCBmb3IgU29mdHdhcmUgbGljZW5zZSBmZWUgZnJvbSBhbnkgdGhpcmQgcGFydHkuDQ01LiBUSElSRCBQQVJUWSBTT0ZUV0FSRSBMSUNFTlNFDQ1MaWNlbnNlZSBhZ3JlZXMgdG8gY29tcGx5IHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGNvbnRhaW5lZCBpbiBUaGlyZC1QYXJ0eSBTb2Z0d2FyZSBsaWNlbnNlIGFncmVlbWVudHMgd2l0aCByZXNwZWN0IHRvIHRoZSBhcHBsaWNhYmxlIFRoaXJkLVBhcnR5IFNvZnR3YXJlLg0gDUxpY2Vuc2VlIGFncmVlcyBhbmQgYWNrbm93bGVkZ2VzIHRoYXQgU2VjdGlvbnMgOSBhbmQgMTAgb2YgdGhpcyBBZ3JlZW1lbnQgc2hhbGwgYWxzbyBnb3Zlcm4gTGljZW5zZWUncyB1c2Ugb2YgdGhlIFRoaXJkLVBhcnR5IFNvZnR3YXJlLiBMaWNlbnNvciB3aWxsIGhhdmUgbm8gcmVzcG9uc2liaWxpdHkgd2l0aCByZXNwZWN0IHRvIGFueSBUaGlyZCBQYXJ0eSBTb2Z0d2FyZSwgYW5kIExpY2Vuc2VlIHdpbGwgbG9vayBzb2xlbHkgdG8gdGhlIGxpY2Vuc29yKHMpIG9mIHRoZSBUaGlyZCBQYXJ0eSBTb2Z0d2FyZSBmb3IgYW55IHJlbWVkeS4gTGljZW5zb3IgY2xhaW1zIG5vIHJpZ2h0IGluIHRoZSBUaGlyZCBQYXJ0eSBTb2Z0d2FyZSwgYW5kIHRoZSBzYW1lIGlzIG93bmVkIGV4Y2x1c2l2ZWx5IGJ5IHRoZSBsaWNlbnNvcihzKSBvZiB0aGUgVGhpcmQgUGFydHkgU29mdHdhcmUuIA0NTElDRU5TT1IgUFJPVklERVMgTk8gV0FSUkFOVFksIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBUSVRMRSwgQU5EIE5PTi1JTkZSSU5HRU1FTlQsIFdJVEggUkVTUEVDVCBUTyBBTlkgVEhJUkQgUEFSVFkgU09GVFdBUkUuDQ02LiBSRVNUUklDVEVEIFVTRSBEVVJJTkcgRVZBTFVBVElPTiBQRVJJT0QNDShhKSBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgTGljZW5zZWUgaXMgZ3JhbnRlZCBhIHJpZ2h0IHRvIHVzZSBTb2Z0d2FyZSBmb3IgZXZhbHVhdGlvbiBwdXJwb3NlcyB3aXRob3V0IGNoYXJnZSBmb3IgYSBwZXJpb2Qgb2YgdGhpcnR5ICgzMCkgZGF5cyBmcm9tIHRoZSBkYXRlIG9mIGluc3RhbGxhdGlvbiBvZiBTb2Z0d2FyZSB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCAoRXZhbHVhdGlvbiBQZXJpb2QpLg0NKGIpIExpY2Vuc2VlcyB1c2Ugb2YgU29mdHdhcmUgZHVyaW5nIEV2YWx1YXRpb24gUGVyaW9kIHNoYWxsIGJlIGxpbWl0ZWQgdG8gdGhlIGludGVybmFsIGV2YWx1YXRpb24gb2YgU29mdHdhcmUgZm9yIHRoZSBzb2xlIHB1cnBvc2Ugb2YgZGV0ZXJtaW5pbmcgd2hldGhlciBTb2Z0d2FyZSBtZWV0cyBMaWNlbnNlZXMgcmVxdWlyZW1lbnRzIGFuZCB3aGV0aGVyIExpY2Vuc2VlIGRlc2lyZXMgdG8gY29udGludWUgdXNpbmcgU29mdHdhcmUuDQ0oYykgVXBvbiBleHBpcmF0aW9uIG9mIEV2YWx1YXRpb24gUGVyaW9kLCBMaWNlbnNlZSBtdXN0IG9idGFpbiBMaWNlbnNlIEtleSBmb3IgcGVycGV0dWFsIHVzZSBvZiBTb2Z0d2FyZSBvciBjZWFzZSB1c2luZyBTb2Z0d2FyZS4gU29mdHdhcmUgY29udGFpbnMgYSBmZWF0dXJlIHRoYXQgd2lsbCBhdXRvbWF0aWNhbGx5IGRpc2FibGUgU29mdHdhcmUgdXBvbiBleHBpcmF0aW9uIG9mIEV2YWx1YXRpb24gUGVyaW9kLiBMaWNlbnNlZSBtYXkgbm90IGRpc2FibGUsIGRlc3Ryb3ksIG9yIHJlbW92ZSB0aGlzIGZlYXR1cmUgb2YgU29mdHdhcmUsIGFuZCBhbnkgYXR0ZW1wdCB0byBkbyBzbyB3aWxsIGJlIGluIHZpb2xhdGlvbiBvZiB0aGlzIEFncmVlbWVudCBhbmQgd2lsbCB0ZXJtaW5hdGUgTGljZW5zZWUncyByaWdodHMgdG8gdXNlIFNvZnR3YXJlLg0NNy4gTElDRU5TRSBGRUVTIEFORCBQQVlNRU5UUw0NTGljZW5zZWUgd2lsbCBwYXkgdG8gTGljZW5zb3IgdGhlIGxpY2Vuc2UgZmVlIGFuZCBvdGhlciBjaGFyZ2VzIGFuZCBleHBlbnNlcyBhcyBzZXQgZm9ydGggaW4gYW4gYXBwcm9wcmlhdGUgaW52b2ljZSBvciBvdGhlciBwdXJjaGFzZSBkb2N1bWVudGF0aW9uLiBMaWNlbnNvciBtYXkgY2hhcmdlIExpY2Vuc2VlIGludGVyZXN0IGZvciBhbnkgcGF5bWVudCB0aGF0IGlzIG1vcmUgdGhhbiB0aGlydHkgKDMwKSBkYXlzIHBhc3QgZHVlIGF0IHRoZSByYXRlIG9mIG9uZSBhbmQgb25lLWhhbGYgcGVyY2VudCAoMS41JSkgcGVyIG1vbnRoIG9yIHRoZSBoaWdoZXN0IGFtb3VudCBhbGxvd2VkIGJ5IGxhdywgd2hpY2hldmVyIGlzIGxvd2VyLg0NOC4gVVBHUkFERVMNDShhKSBBbGwgZ2VuZXJhbGx5IGF2YWlsYWJsZSBVcGdyYWRlcyB0byBTb2Z0d2FyZSB3aWxsIGJlIGZyZWUgb2YgY2hhcmdlIHRvIExpY2Vuc2VlIGR1cmluZyB0aGUgaW5pdGlhbCBvbmUgKDEpIHllYXIgcGVyaW9kIGFmdGVyIHB1cmNoYXNlIG9mIFNvZnR3YXJlLiBJZiBMaWNlbnNlZSBvYnRhaW5zIGEgbmV3IExpY2Vuc2UgS2V5IGZvciB1cGdyYWRlLCBMaWNlbnNlZSBzaGFsbCBkZXN0cm95IGEgTGljZW5zZSBLZXkgb2J0YWluZWQgZm9yIHRoZSBwcmV2aW91cyB2ZXJzaW9uIG9mIFNvZnR3YXJlLg0NKGIpIElmIG5vdCBhZ3JlZWQgb3RoZXJ3aXNlIGluIHdyaXRpbmcgYmV0d2VlbiBMaWNlbnNvciBhbmQgTGljZW5zZWUsIHVwb24gdXBncmFkaW5nIHRvIG5ldyB2ZXJzaW9uIG9mIFNvZnR3YXJlIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBwYXJ0aWVzIHNoYWxsIGJlIGdvdmVybmVkIGFuZCBhbWVuZGVkIChpZiBhcHBsaWNhYmxlKSBieSB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgTGljZW5zZSBhZ3JlZW1lbnQgcmVsYXRlZCB0byBTb2Z0d2FyZSBhdmFpbGFibGUgYXQgd3d3LmpldGJyYWlucy5jb20gb24gdGhlIGRheSBvZiB1cGdyYWRlIHB1cmNoYXNlLg0NOS4gTElNSVRFRCBXQVJSQU5UWQ0NU09GVFdBUkUgSVMgUFJPVklERUQgVE8gTElDRU5TRUUgIkFTIElTIiBBTkQgV0lUSE9VVCBXQVJSQU5USUVTLiBMSUNFTlNPUiBNQUtFUyBOTyBXQVJSQU5UWSBBUyBUTyBJVFMgVVNFIE9SIFBFUkZPUk1BTkNFLiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIEJZIEFQUExJQ0FCTEUgTEFXLCBMSUNFTlNPUiwgQU5EIElUUyBBRkZJTElBVEVTLCBTVVBQTElFUlMgQU5EIFJFU0VMTEVSUywgRElTQ0xBSU0gQUxMIE9USEVSIFdBUlJBTlRJRVMgQU5EIENPTkRJVElPTlMsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgVElUTEUsIEFORCBOT04tSU5GUklOR0VNRU5ULCBXSVRIIFJFR0FSRCBUTyBTT0ZUV0FSRSwgQU5EIFRIRSBQUk9WSVNJT04gT0YgT1IgRkFJTFVSRSBUTyBQUk9WSURFIFNVUFBPUlQgU0VSVklDRVMuIA0NMTAuIERJU0NMQUlNRVIgT0YgREFNQUdFUw0NKGEpCVRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgQlkgQVBQTElDQUJMRSBMQVcsIElOIE5PIEVWRU5UIFdJTEwgTElDRU5TT1IgT1IgSVRTIEFGRklMSUFURVMsIExJQ0VOU09SUywgU1VQUExJRVJTIE9SIFJFU0VMTEVSUyBCRSBMSUFCTEUgVE8gTElDRU5TRUUgVU5ERVIgQU5ZIFRIRU9SWSBGT1IgQU5ZIERBTUFHRVMgU1VGRkVSRUQgQlkgTElDRU5TRUUgT1IgQU5ZIFVTRVIgT0YgU09GVFdBUkUsIE9SIEZPUiBBTlkgU1BFQ0lBTCwgSU5DSURFTlRBTCwgSU5ESVJFQ1QsIENPTlNFUVVFTlRJQUwsIE9SIFNJTUlMQVIgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIERBTUFHRVMgRk9SIExPU1MgT0YgUFJPRklUUyBPUiBDT05GSURFTlRJQUwgT1IgT1RIRVIgSU5GT1JNQVRJT04sIEZPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIEZPUiBQRVJTT05BTCBJTkpVUlksIEZPUiBMT1NTIE9GIFBSSVZBQ1ksIEZPUiBGQUlMVVJFIFRPIE1FRVQgQU5ZIERVVFkgSU5DTFVESU5HIE9GIEdPT0QgRkFJVEggT1IgT0YgUkVBU09OQUJMRSBDQVJFLCBGT1IgTkVHTElHRU5DRSwgQU5EIEZPUiBBTlkgT1RIRVIgUEVDVU5JQVJZIE9SIE9USEVSIExPU1MgV0hBVFNPRVZFUiApIEFSSVNJTkcgT1VUIE9GIFRIRSBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBTT0ZUV0FSRSwgT1IgVEhFIFBST1ZJU0lPTiBPRiBPUiBGQUlMVVJFIFRPIFBST1ZJREUgU1VQUE9SVCBTRVJWSUNFUywgRVZFTiBJRiBMSUNFTlNPUiBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMsIEFORCBSRUdBUkRMRVNTIE9GIFRIRSBMRUdBTCBPUiBFUVVJVEFCTEUgVEhFT1JZIChDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UpIFVQT04gV0hJQ0ggVEhFIENMQUlNIElTIEJBU0VELg0NKGIpCUlOIEFOWSBDQVNFLCBMSUNFTlNPUidTIEVOVElSRSBMSUFCSUxJVFkgVU5ERVIgQU5ZIFBST1ZJU0lPTiBPRiBUSElTIEFHUkVFTUVOVCBXSUxMIEJFIExJTUlURUQgVE8gVEhFIEFNT1VOVCBBQ1RVQUxMWSBQQUlEIEJZIExJQ0VOU0VFIEZPUiBTT0ZUV0FSRSBVTkRFUiBUSElTIEFHUkVFTUVOVC4gDQ0xMS4gRVhQT1JUIFJFR1VMQVRJT05TDQ1MaWNlbnNlZSBhZ3JlZXMgYW5kIGFjY2VwdHMgdGhhdCBTb2Z0d2FyZSBtYXkgYmUgc3ViamVjdCB0byBpbXBvcnQgYW5kIGV4cG9ydCBsYXdzIG9mIGFueSBjb3VudHJ5LCBpbmNsdWRpbmcgdGhvc2Ugb2YgdGhlIEV1cm9wZWFuIFVuaW9uIGFuZCBVbml0ZWQgU3RhdGVzIChzcGVjaWZpY2FsbHkgdGhlIEV4cG9ydCBBZG1pbmlzdHJhdGlvbiBSZWd1bGF0aW9ucyAoRUFSKSkuIExpY2Vuc2VlIGFja25vd2xlZGdlcyB0aGF0IGl0IGlzIG5vdCBhIGNpdGl6ZW4sIG5hdGlvbmFsLCBvciByZXNpZGVudCBvZiwgYW5kIGlzIG5vdCB1bmRlciBjb250cm9sIG9mIHRoZSBnb3Zlcm5tZW50cyBvZiBDdWJhLCBJcmFuLCBOb3J0aCBLb3JlYSwgU3VkYW4gb3IgU3lyaWEgYW5kIGlzIG5vdCBvdGhlcndpc2UgYSByZXN0cmljdGVkIGVuZC11c2VyIGFzIGRlZmluZWQgYnkgYXBwbGljYWJsZSBleHBvcnQgY29udHJvbCBsYXdzLiBGdXJ0aGVyLCBMaWNlbnNlZSBhY2tub3dsZWRnZXMgdGhhdCBpdCB3aWxsIG5vdCBkb3dubG9hZCBvciBvdGhlcndpc2UgZXhwb3J0IG9yIHJlLWV4cG9ydCBTb2Z0d2FyZSBvciBhbnkgcmVsYXRlZCB0ZWNobmljYWwgZGF0YSBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRvIHRoZSBhYm92ZS1tZW50aW9uZWQgY291bnRyaWVzIG9yIHRvIGNpdGl6ZW5zLCBuYXRpb25hbHMsIG9yIHJlc2lkZW50cyBvZiB0aG9zZSBjb3VudHJpZXMsIG9yIHRvIGFueSBvdGhlciByZXN0cmljdGVkIGVuZCB1c2VyIG9yIGZvciBhbnkgcmVzdHJpY3RlZCBlbmQtdXNlLiANDTEyLiBURVJNIEFORCBURVJNSU5BVElPTg0NKGEpIEV4Y2VwdCBhcyBvdGhlcndpc2UgcHJvdmlkZWQgaW4gTGljZW5zZSBDZXJ0aWZpY2F0ZSwgdGhlIGxpY2Vuc2UgZ3JhbnRlZCBoZXJlaW4gc2hhbGwgYmUgcGVycGV0dWFsLg0NKGIpIElmIExpY2Vuc2VlIGZhaWxzIHRvIGNvbXBseSB3aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGlzIEFncmVlbWVudCwgdGhpcyBBZ3JlZW1lbnQgYW5kIExpY2Vuc2VlJ3MgcmlnaHQgYW5kIGxpY2Vuc2UgdG8gdXNlIFNvZnR3YXJlIHdpbGwgdGVybWluYXRlIGltbWVkaWF0ZWx5LiBMaWNlbnNlZSBtYXkgdGVybWluYXRlIHRoaXMgQWdyZWVtZW50IGF0IGFueSB0aW1lIGJ5IG5vdGlmeWluZyBMaWNlbnNvci4gVXBvbiB0aGUgdGVybWluYXRpb24gb2YgdGhpcyBBZ3JlZW1lbnQsIExpY2Vuc2VlIG11c3QgY2Vhc2UgdXNpbmcgU29mdHdhcmUgYW5kIGRlbGV0ZSBTb2Z0d2FyZSBmcm9tIGl0cyBDbGllbnRzIGFuZCBhcmNoaXZlcy4NDUxJQ0VOU0VFIEFHUkVFUyBUSEFUIFVQT04gVEVSTUlOQVRJT04gT0YgVEhJUyBBR1JFRU1FTlQgRk9SIEFOWSBSRUFTT04sIExJQ0VOU09SIE1BWSBUQUtFIEFDVElPTlMgU08gVEhBVCBTT0ZUV0FSRSBOTyBMT05HRVIgT1BFUkFURVMuDQ0xMy4gTUFSS0VUSU5HDQ1MaWNlbnNlZSBhZ3JlZSB0byBiZSBpZGVudGlmaWVkIGFzIGEgY3VzdG9tZXIgb2YgTGljZW5zb3IgYW5kIHRoYXQgTGljZW5zb3IgbWF5IHJlZmVyIHRvIExpY2Vuc2VlIGJ5IG5hbWUsIHRyYWRlIG5hbWUgYW5kIHRyYWRlbWFyaywgaWYgYXBwbGljYWJsZSwgYW5kIG1heSBicmllZmx5IGRlc2NyaWJlIExpY2Vuc2VlJ3MgYnVzaW5lc3MgaW4gTGljZW5zb3IncyBtYXJrZXRpbmcgbWF0ZXJpYWxzLCBvbiBMaWNlbnNvcidzIHdlYiBzaXRlLCBpbiBwdWJsaWMgb3IgbGVnYWwgZG9jdW1lbnRzLiBMaWNlbnNlZSBoZXJlYnkgZ3JhbnRzIExpY2Vuc29yIGEgbGljZW5zZSB0byB1c2UgTGljZW5zZWUncyBuYW1lIGFuZCBhbnkgb2YgTGljZW5zZWUncyB0cmFkZSBuYW1lcyBhbmQgdHJhZGVtYXJrcyBzb2xlbHkgcHVyc3VhbnQgdG8gdGhpcyBtYXJrZXRpbmcgc2VjdGlvbi4NDTE0LiBHRU5FUkFMDQ0oYSkgTGljZW5zb3IgcmVzZXJ2ZXMgdGhlIHJpZ2h0IGF0IGFueSB0aW1lIHRvIGNlYXNlIHRoZSBzdXBwb3J0IG9mIFNvZnR3YXJlIGFuZCB0byBhbHRlciBwcmljZXMsIGZlYXR1cmVzLCBzcGVjaWZpY2F0aW9ucywgY2FwYWJpbGl0aWVzLCBmdW5jdGlvbnMsIGxpY2Vuc2luZyB0ZXJtcywgcmVsZWFzZSBkYXRlcywgZ2VuZXJhbCBhdmFpbGFiaWxpdHkgb3Igb3RoZXIgY2hhcmFjdGVyaXN0aWNzIG9mIFNvZnR3YXJlLg0NKGIpIFRoaXMgQWdyZWVtZW50LCBpbmNsdWRpbmcgdGhlIFRoaXJkIFBhcnR5IFNvZnR3YXJlIGxpY2Vuc2UgYWdyZWVtZW50cywgY29uc3RpdHV0ZXMgdGhlIGVudGlyZSBhZ3JlZW1lbnQgYmV0d2VlbiB0aGUgcGFydGllcyBjb25jZXJuaW5nIExpY2Vuc2VlJ3MgdXNlIG9mIFNvZnR3YXJlLCBhbmQgc3VwZXJzZWRlcyBhbnkgYW5kIGFsbCBwcmlvciBvciBjb250ZW1wb3JhbmVvdXMgb3JhbCBvciB3cml0dGVuIHJlcHJlc2VudGF0aW9ucywgY29tbXVuaWNhdGlvbnMsIG9yIGFkdmVydGlzaW5nIHdpdGggcmVzcGVjdCB0byBTb2Z0d2FyZS4gTm8gcHVyY2hhc2Ugb3JkZXIsIG90aGVyIG9yZGVyaW5nIGRvY3VtZW50IG9yIGFueSBoYW5kIHdyaXR0ZW4gb3IgdHlwZXdyaXR0ZW4gdGV4dCB3aGljaCBwdXJwb3J0cyB0byBtb2RpZnkgb3Igc3VwcGxlbWVudCB0aGUgcHJpbnRlZCB0ZXh0IG9mIHRoaXMgQWdyZWVtZW50IG9yIGFueSBzY2hlZHVsZSB3aWxsIGFkZCB0byBvciB2YXJ5IHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCB1bmxlc3Mgc2lnbmVkIGJ5IGJvdGggTGljZW5zZWUgYW5kIExpY2Vuc29yLg0NKGMpIEEgd2FpdmVyIGJ5IGVpdGhlciBwYXJ0eSBvZiBhbnkgdGVybSBvciBjb25kaXRpb24gb2YgdGhpcyBBZ3JlZW1lbnQgb3IgYW55IGJyZWFjaCB0aGVyZW9mLCBpbiBhbnkgb25lIGluc3RhbmNlLCB3aWxsIG5vdCB3YWl2ZSBzdWNoIHRlcm0gb3IgY29uZGl0aW9uIG9yIGFueSBzdWJzZXF1ZW50IGJyZWFjaC4gVGhlIHByb3Zpc2lvbnMgb2YgdGhpcyBBZ3JlZW1lbnQgd2hpY2ggcmVxdWlyZSBvciBjb250ZW1wbGF0ZSBwZXJmb3JtYW5jZSBhZnRlciB0aGUgZXhwaXJhdGlvbiBvciB0ZXJtaW5hdGlvbiBvZiB0aGlzIEFncmVlbWVudCB3aWxsIGJlIGVuZm9yY2VhYmxlIG5vdHdpdGhzdGFuZGluZyBzYWlkIGV4cGlyYXRpb24gb3IgdGVybWluYXRpb24uDQ0oZCkgVGhpcyBBZ3JlZW1lbnQgd2lsbCBiZSBnb3Zlcm5lZCBieSB0aGUgbGF3cyBvZiBDemVjaCBSZXB1YmxpYywgd2l0aG91dCByZWZlcmVuY2UgdG8gY29uZmxpY3Qgb2YgbGF3cyBwcmluY2lwbGVzLiBMaWNlbnNlZSBhZ3JlZXMgdGhhdCBhbnkgbGl0aWdhdGlvbiByZWxhdGluZyB0byB0aGlzIEFncmVlbWVudCBtYXkgb25seSBiZSBicm91Z2h0IGluLCBhbmQgd2lsbCBiZSBzdWJqZWN0IHRvIHRoZSBqdXJpc2RpY3Rpb24gb2YsIGFueSBDb3VydCBvZiBDemVjaCBSZXB1YmxpYy4NDShlKSBUaXRsZXMgYXJlIGluc2VydGVkIGZvciBjb252ZW5pZW5jZSBvbmx5IGFuZCB3aWxsIG5vdCBhZmZlY3QgaW4gYW55IHdheSB0aGUgbWVhbmluZyBvciBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIEFncmVlbWVudC4gSWYgYW55IHByb3Zpc2lvbiBvZiB0aGlzIEFncmVlbWVudCBpcyBoZWxkIGludmFsaWQsIHRoZSByZW1haW5kZXIgb2YgdGhpcyBBZ3JlZW1lbnQgd2lsbCBjb250aW51ZSBpbiBmdWxsIGZvcmNlIGFuZCBlZmZlY3QuIEVpdGhlciBMaWNlbnNvciBvciBMaWNlbnNlZSBtYXkgYXNzaWduIHRoaXMgQWdyZWVtZW50IGluIHRoZSBjYXNlIG9mIGEgbWVyZ2VyIG9yIHNhbGUgb2Ygc3Vic3RhbnRpYWxseSBhbGwgb2YgaXRzIHJlc3BlY3RpdmUgYXNzZXRzIHRvIGFub3RoZXIgZW50aXR5LiBUaGlzIEFncmVlbWVudCB3aWxsIGJlIGJpbmRpbmcgdXBvbiBhbmQgd2lsbCBpbnVyZSB0byB0aGUgYmVuZWZpdCBvZiB0aGUgcGFydGllcywgdGhlaXIgc3VjY2Vzc29ycyBhbmQgYXNzaWducy4NDUZvciBleGNlcHRpb25zIG9yIG1vZGlmaWNhdGlvbnMgdG8gdGhpcyBBZ3JlZW1lbnQsIHBsZWFzZSBjb250YWN0IExpY2Vuc29yIGF0Og0NQWRkcmVzczogTmEgaHJlYmVuZWNoIElJIDE3MTgvMTAsIFByYWd1ZSwgMTQ3MDAsIEN6ZWNoIFJlcHVibGljIA1GYXg6ICs0MjAgMjQxIDcyMiA1NDAgDUUtbWFpbDogc2FsZXNAamV0YnJhaW5zLmNvbQ0NDQ0=