ICAgICAgICAgICAgICBBcGFjaGUgQ29tbW9ucyBOZXQKICAgICAgICAgICAgICAgICAgVmVyc2lvbiAzLjMKICAgICAgICAgICAgICAgICBSRUxFQVNFIE5PVEVTCgpUaGUgQ29tbW9ucyBOZXQgdGVhbSBpcyBwbGVhc2VkIHRvIGFubm91bmNlIHRoZSByZWxlYXNlIG9mIEFwYWNoZSBDb21tb25zIE5ldCAzLjMKCkFwYWNoZSBDb21tb25zIE5ldCBsaWJyYXJ5IGNvbnRhaW5zIGEgY29sbGVjdGlvbiBvZiBuZXR3b3JrIHV0aWxpdGllcyBhbmQgcHJvdG9jb2wgaW1wbGVtZW50YXRpb25zLgpTdXBwb3J0ZWQgcHJvdG9jb2xzIGluY2x1ZGU6IEVjaG8sIEZpbmdlciwgRlRQLCBOTlRQLCBOVFAsIFBPUDMoUyksIFNNVFAoUyksIFRlbG5ldCwgV2hvaXMKClRoaXMgaXMgbWFpbmx5IGEgYnVnLWZpeCByZWxlYXNlLiBTZWUgZnVydGhlciBkZXRhaWxzIGJlbG93LgoKQ2hhbmdlcyBpbiB0aGlzIHZlcnNpb24gaW5jbHVkZToKCk5ldyBmZWF0dXJlczoKbyBORVQtNTAzOiAgQXV0aGVudGljYXRpbmdTTVRQQ2xpZW50IGRvZXMgbm90IHN1cHBvcnQgbm9uLWRlZmF1bHQgZW5jb2RpbmcgVGhhbmtzIHRvIE9mZXIgUmVnZXYuCm8gTkVULTQ5NjogIFV0aWwgY29weVJlYWRlci9jb3B5U3RyZWFtIGNsYXNzZXMgc2hvdWxkIHVzZSBkZWZhdWx0IGJ1ZmZlciBzaXplIGZvciBub24tcG9zaXRpdmUgYnVmZmVyIHNpemUgcGFyYW1ldGVycy4KbyBORVQtMzEwOiAgRlRQQ29tbWFuZCBjb252ZXJzaW9uIHRvIHVzZSBlbnVtOyBhZGRlZCBGVFBDbWQgZW11bSBhbmQgZGVwcmVjYXRlZCBGVFBDb21tYW5kLgoKRml4ZWQgQnVnczoKbyBORVQtNTAxOiAgUmFjZSBDb25kaXRpb24gb24gVGVsbmV0Q2xpZW50LmRpc2Nvbm5lY3QoKSBhbmQgVGVsbmV0SW5wdXRTdHJlYW0ucnVuKCkKICAgICAgICAgICAgamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbjogUXVldWUgaXMgZnVsbCEgQ2Fubm90IHByb2Nlc3MgYW5vdGhlciBjaGFyYWN0ZXIuIFRoYW5rcyB0byBKdWxp4W4gTGFzdGlyaS4KbyBORVQtNTAwOiAgQWx3YXlzIGNhbGwgRlRQQ2xpZW50I3NldEZpbGVUeXBlIGFmdGVyIGNvbm5lY3Rpb24uCiAgICAgICAgICAgIE5vdCBhbGwgc2VydmVycyBkZWZhdWx0IHRvIEFTQ0lJLiBUaGFua3MgdG8gTWljaGFlbCBGcmljay4KbyBORVQtNDY1OiAgRlRQQ2xpZW50IHNldFNlbmRCdWZmZXJTaXplIGFuZCBzZXRSZWNlaXZlQnVmZmVyU2l6ZSBvbiBkYXRhIHNvY2tldC4KICAgICAgICAgICAgVGhlIHByZXZpb3VzIGZpeCBjYXVzZWQgcGVyZm9ybWFuY2UgcHJvYmxlbXMuCiAgICAgICAgICAgIEFkZGVkIG5ldyBnZXR0ZXJzIGFuZCBzZXR0ZXJzIGZvciB0aGUgU09fU05EQlVGIGFuZCBTT19SQ1ZCVUYgdmFsdWVzIHRvIGJlIHVzZWQgb24gdGhlIGRhdGEgc29ja2V0LiBUaGFua3MgdG8gSmltIEtlcndvb2QuCm8gTkVULTQ4MDogIFdyb25nIHBhc3Npdkhvc3Qgd2hlbiB1c2luZyBGVFBIVFRQQ2xpZW50IHdpdGggRVBTViBUaGFua3MgdG8gUGV0ZXIgTmFiZXIuCm8gTkVULTQ5NDogIEZUUENsaWVudC5DU0wuY2xlYW5VcCgpIGZhaWxzIHRvIHJlc3RvcmUgdGltZW91dCB2YWx1ZSBvbiBleGNlcHRpb24KbyBORVQtNDkyOiAgRlRQQ2xpZW50LnByaW50V29ya2luZ0RpcmVjdG9yeSgpIGluY29ycmVjdGx5IHBhcnNlcyBjZXJ0YWluIHZhbGlkIFBXRCBjb21tYW5kIHJlc3VsdHMgVGhhbmtzIHRvIFRvbWFzeiBKZWRyemVqZXdza2kuCgpDaGFuZ2VzOgpvIE5FVC01MDk6ICBBdXRoZW50aWNhdGluZ1NNVFBDbGllbnQgbmVlZHMgYSBjb25zdHJ1Y3RvciB3aXRoIHRoZSBpc0ltcGxpY2l0IGFyZ3VtZW50IGZvciBTU0wgVGhhbmtzIHRvIEFudGhvbnkgRGFoYW5uZS4KbyBORVQtNTA1OiAgVXNlciBzcGVjaWZpZWQgYnVmZmVyU2l6ZSByZXNldCB0byBkZWZhdWx0IHdoZW4gRlRQQ2xpZW50IGlzIGRpc2Nvbm5lY3RlZCBvciByZWluaXRpYWxpemVkIHJlc3VsdGluZyBpbiBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbi4gVGhhbmtzIHRvIFNlYW4gS2VsbGV5LgpvIE5FVC01MDc6ICBPcHRpb24gdG8gZGlzYWJsZSBwcml2YXRlIElQIHJlcGxhY2VtZW50IGluIEZUUCBwYXNzaXZlIG1vZGUuIFRoYW5rcyB0byBKaXJpIE5ldG9saWNreS4KCgpGb3IgY29tcGxldGUgaW5mb3JtYXRpb24gb24gQ29tbW9ucyBOZXQsIGluY2x1ZGluZyBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHN1Ym1pdCBidWcgcmVwb3J0cywKcGF0Y2hlcywgb3Igc3VnZ2VzdGlvbnMgZm9yIGltcHJvdmVtZW50LCBzZWUgdGhlIEFwYWNoZSBDb21tb25zIE5ldCB3ZWJzaXRlOgoKaHR0cDovL2NvbW1vbnMuYXBhY2hlLm9yZy9wcm9wZXIvY29tbW9ucy1uZXQv