U291cmNlOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvZm91bmRhdGlvbi9wcmVzcy9raXQvCgpTcGFtQXNzYXNzaW4gUG93ZXJlZCBCeSBBcGFjaGUgTG9nbwoKVGhlICJQb3dlcmVkIEJ5IEFwYWNoZSIgbG9nbyB3YXMgY3JlYXRlZCB0byBjZWxlYnJhdGUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uJ3MgMTV0aCBBbm5pdmVyc2FyeSBhbmQgcHJvbW90ZSB0aGUgQVNGJ3MgbW9yZSB0aGFuIDIwMCBwcm9qZWN0cy4KClRoZSBsb2dvIHdhcyBzcGVjaWFsbHkgY3JlYXRlZCB0byBtYWludGFpbiB0aGUgdW5pcXVlIGlkZW50aXR5IG9mIGVhY2ggQXBhY2hlIHByb2plY3Qgd2hpbHN0IGlkZW50aWZ5aW5nIGFsbCBwcm9qZWN0cyB1bmRlciB0aGUgQXBhY2hlIHVtYnJlbGxhLiBUaGUgQXBhY2hlIGNvbW11bml0eSBhdC1sYXJnZSBhcmUgZW5jb3VyYWdlZCB0byBwcm91ZGx5IGRpc3BsYXkgIlBvd2VyZWQgQnkgQXBhY2hlIiBhc3NldHMgb24gdGhlaXIgV2Vic2l0ZXMsIGRvY3VtZW50YXRpb24sIG1hcmtldGluZyBtYXRlcmlhbHMsIGV0Yy4KCkd1aWRlbGluZXMgZm9yIHRoZSBhcHByb3ByaWF0ZSB1c2Ugb2YgdGhlICJQb3dlcmVkIEJ5IEFwYWNoZSIgbG9nbyBpbmNsdWRlOgoKICAgIFRoZSAiUG93ZXJlZCBCeSBBcGFjaGUiIGNpcmN1bGFyIGJhbmRlZCBsb2dvIG1heSBiZSB1c2VkIHN0YW5kYWxvbmUgd2l0aCBqdXN0IHRoZSBBcGFjaGUgZmVhdGhlciAoZGVub3RpbmcgZ2VuZXJhbCB1c2Ugb2YgYW4gQXBhY2hlIHByb2plY3QpIG9yIGluIGNvbWJpbmF0aW9uIHdpdGggYW4gb2ZmaWNpYWwvYXV0aG9yaXplZCBBU0YgUHJvamVjdCBsb2dvOwogICAgVGhlIG9mZmljaWFsL2F1dGhvcml6ZWQgUHJvamVjdCBsb2dvIG1heSBub3QgYmUgYWx0ZXJlZCBpbiBhbnkgd2F5IG90aGVyIHRoYW4gcmVtb3Zpbmcvc2VwYXJhdGluZyB0aGUgbmFtZShzKSB3aGVyZSBhcHBsaWNhYmxlIGFzIGFwcHJvdmVkIGJ5IHRoZSBhc3NvY2lhdGVkIFByb2plY3QgTWFuYWdlbWVudCBDb21taXR0ZWU7CiAgICBUaGUgYXBwcm9wcmlhdGUgdHJhZGVtYXJrIHN5bWJvbChzKSwgc3VjaCBhcyCuIG9yIHRtLCBhc3NvY2lhdGVkIHdpdGggdGhlIHByb2plY3QncyBsb2dvIG11c3QgYmUgaW5jbHVkZWQgaW4gdGhlIGxvZ287CiAgICBUaGUgbG9nbydzIGNpcmN1bGFyIGJhbmQgZm9ybWF0LCBmb250LCBhbmQgY29sb3IgbXVzdCBub3QgYmUgYWx0ZXJlZCBpbiBhbnkgd2F5OwogICAgVGhlIGxvZ28gYW5kL29yIGl0cyBjb250ZW50cyBtdXN0IG5vdCBiZSByb3RhdGVkLCBhbmltYXRlZCwgZGlzdG9ydGVkLCBvciBvdGhlcndpc2UgYWx0ZXJlZCwgbm9yIHNob3VsZCBpdCBiZSB1c2VkIGFzIGEgZ3JhcGhpYyBlbGVtZW50LCBiYWNrZ3JvdW5kLCBvciBwYXR0ZXJuOwogICAgVGhlIGxvZ28gYW5kL29yIGl0cyBjb250ZW50cyBtdXN0IG5vdCBiZSB0cmFuc2xhdGVkIG9yIGxvY2FsaXplZCwgbm9yIHNob3VsZCBpdCBoYXZlIHZlcnNpb25pbmcgbnVtYmVycyBvciBvdGhlciB1bmF1dGhvcml6ZWQgd29yZHMgYWRkZWQgdG8gaXQ7CiAgICBUaGUgcHJlZmVycmVkIGJhY2tncm91bmQgY29sb3IgZm9yIHRoZSBsb2dvIGlzIHdoaXRlLCBob3dldmVyLCB0aGUgbG9nbyBtYXkgYXBwZWFyIG9uIGNvbG9yZWQsIGJsYWNrLCBvciBpbWFnZS9waG90b2dyYXBoaWMgYmFja2dyb3VuZHMgcHJvdmlkaW5nIHRoZSBsb2dvJ3MgbGVnaWJpbGl0eSBpcyBub3QgY29tcHJvbWlzZWQ7CiAgICBUaGUgbG9nbyBtYXkgYmUgc2l6ZWQgYW5kIHByb2R1Y2VkIGluIG11bHRpcGxlIGZpbGUgZm9ybWF0cyBhcyByZXF1aXJlZCBieSB0aGUgUHJvamVjdCBNYW5hZ2VtZW50IENvbW1pdHRlZSwgd2l0aCBhIHByZWZlcnJlZCBtaW5pbXVtIHNpemUgb2YgODAgcGl4ZWxzIGhpZ2ggaW4gV2ViL29ubGluZSBhcHBsaWNhdGlvbnMgKHdoZXJlIHBvc3NpYmxlKSB0byBlbnN1cmUgbGVnaWJpbGl0eTsKICAgIFRoZSBsb2dvIG1heSBub3QsIHVuZGVyIGFueSBjaXJjdW1zdGFuY2VzLCBiZSBpbmNvcnBvcmF0ZWQgd2l0aCBhIHRoaXJkIHBhcnR5J3MgY29tcGFueSBuYW1lLCBwcm9kdWN0IG5hbWUsIG9yIGxvZ28ocyksIG9yIGFkb3B0IG1hcmtzIGFuZC9vciBsb2dvcyB0aGF0IGFyZSBjb25mdXNpbmdseSBzaW1pbGFyIHRvIG9yIGltcGx5IGltcHJvcGVyIGFzc29jaWF0aW9uIHdpdGggVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOwogICAgVGhpcmQgcGFydGllcyBhbmQgcHJvZ3JhbXMgYXJlIG5vdCBhbGxvd2VkIHRvIHVzZSBvZmZpY2lhbCBBcGFjaGUgcHJvamVjdCBsb2dvcyBhbmQvb3IgY3JlYXRlIGFsdGVybmF0ZSBsb2dvcyBvciBpZGVudGlmeWluZyBtYXJrcyByZWxhdGluZyB0byBhbnkgQXBhY2hlIHByb2plY3Qgd2l0aG91dCB3cml0dGVuIHBlcm1pc3Npb24gZnJvbSB0aGUgYXNzb2NpYXRlZCBQcm9qZWN0IE1hbmFnZW1lbnQgQ29tbWl0dGVlIGFuZC9vciBBU0YgQnJhbmQgTWFuYWdlbWVudC4KCkluIGFkZGl0aW9uLCBvZmZpY2lhbCBBcGFjaGUgUHJvamVjdCBwYWdlcyBhbmQgZG9jdW1lbnRhdGlvbiBvbiBhcGFjaGUub3JnIG11c3QgdXRpbGl6ZSB0aGUgYXBwcm9wcmlhdGUgdHJhZGVtYXJrIHN5bWJvbHMgb24gdGhlIHJlc3BlY3RpdmUgUHJvamVjdCBsb2dvLCBhbG9uZyB3aXRoIHRoZSBmb2xsb3dpbmcgZm9vdG5vdGU6ICJBcGFjaGUsIEFwYWNoZSBTcGFtQXNzYXNzaW4sIGFuZCB0aGUgQXBhY2hlIFNwYW1Bc3Nhc3NpbiBsb2dvIGFyZSByZWdpc3RlcmVkIHRyYWRlbWFya3Mgb3IgdHJhZGVtYXJrcyBvZiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gaW4gdGhlIFUuUy4gYW5kL29yIG90aGVyIGNvdW50cmllcy4iCg==