ICAgICAgICAgICAgICBBcGFjaGUgQ29tbW9ucyBOZXQgMy42CiAgICAgICAgICAgICAgICAgIFJFTEVBU0UgTk9URVMKClRoZSBBcGFjaGUgQ29tbW9ucyBOZXQgdGVhbSBpcyBwbGVhc2VkIHRvIGFubm91bmNlIHRoZSByZWxlYXNlIG9mIEFwYWNoZSBDb21tb25zIE5ldCAzLjYKCkFwYWNoZSBDb21tb25zIE5ldCBsaWJyYXJ5IGNvbnRhaW5zIGEgY29sbGVjdGlvbiBvZiBuZXR3b3JrIHV0aWxpdGllcyBhbmQgcHJvdG9jb2wgaW1wbGVtZW50YXRpb25zLgpTdXBwb3J0ZWQgcHJvdG9jb2xzIGluY2x1ZGU6IEVjaG8sIEZpbmdlciwgRlRQLCBOTlRQLCBOVFAsIFBPUDMoUyksIFNNVFAoUyksIFRlbG5ldCwgV2hvaXMKClRoaXMgaXMgbWFpbmx5IGEgYnVnLWZpeCByZWxlYXNlLiBTZWUgZnVydGhlciBkZXRhaWxzIGJlbG93LgoKVGhpcyByZWxlYXNlIGlzIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggcHJldmlvdXMgcmVsZWFzZXMuCkhvd2V2ZXIgaXQgaXMgbm90IHNvdXJjZSBjb21wYXRpYmxlIHdpdGggcmVsZWFzZXMgYmVmb3JlIDMuNCwgYXMgc29tZSBtZXRob2RzIHdlcmUgYWRkZWQgdG8gdGhlIGludGVyZmFjZSBOdHBWM1BhY2tldCBpbiAzLjQKClRoZSBjb2RlIG5vdyByZXF1aXJlcyBhIG1pbmltdW0gb2YgSmF2YSAxLjYuCgpDaGFuZ2VzIHRvIGZ1bmN0aW9uYWxpdHk6CiogVGhlIEZUUCBjbGllbnQgbm93IHBlcmZvcm1zIHN0cmljdGVyIGNoZWNrcyBvbiBub24tbXVsdGlsaW5lIGNvbW1hbmQgcmVwbGllcy4KIFRoZSAzIGRpZ2l0IGNvZGUgbXVzdCBub3cgYmUgZm9sbG93ZWQgYnkgYSBzcGFjZSBhbmQgc29tZSB0ZXh0LCBhcyBwZXIgUkZDIDk1OS4KIFRvIHN1cHByZXNzIHRoaXMgc3RyaWN0ZXIgY2hlY2tpbmcsIGNhbGwgRlRQI3NldFN0cmljdFJlcGx5UGFyc2luZyhmYWxzZSkuIFRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQgd2l0aCBhIHdlbGwtYmVoYXZlZCBzZXJ2ZXIuCiBOb3RlIGFsc28gdGhhdCBpZiBzdHJpY3QgY2hlY2tpbmcgaXMgZGlzYWJsZWQsIHNvbWUgZnVuY3Rpb25zIG1heSB1bmNvbmRpdGlvbmFsbHkgc3RyaXAgdGhlIG5leHQgY2hhcmFjdGVyIGFmdGVyIHRoZSBjb2RlLCB3aXRob3V0IGNoZWNraW5nIGl0IGlmIGlzIGEgc3BhY2UuCiogVGhlIEZUUCBjbGllbnQgbWxpc3RGaWxlKCkgbWV0aG9kIG5vdyBjaGVja3MgZm9yIGEgbGVhZGluZyBzcGFjZSBiZWZvcmUgcmVtb3ZpbmcgaXQuCiBJZiB0aGUgc3BhY2UgaXMgbWlzc2luZywgYSBNYWxmb3JtZWRTZXJ2ZXJSZXBseUV4Y2VwdGlvbiBpcyB0aHJvd24uCiBUaGlzIHdpbGwgb25seSBoYXBwZW4gaWYgdGhlIEZUUCBzZXJ2ZXIgaXMgbm90IGNvbXBsaWFudCB3aXRoIFJGQyAzNjU5LgoKTm90YWJsZSBhZGRpdGlvbnM6CiogVGhlIFBPUDNNYWlsIGV4YW1wbGVzIGNhbiBub3cgZ2V0IHBhc3N3b3JkIGZyb20gY29uc29sZSwgc3RkaW4gb3IgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCiogVEZUUENsaWVudCBjb2RlIGhhcyBiZWVuIHJld3JpdHRlbiB0byBpbXByb3ZlIGVycm9yIGhhbmRsaW5nIGFuZCByZXRyaWVzLgoKQ2hhbmdlcyBpbiB0aGlzIHZlcnNpb24gaW5jbHVkZToKCkZpeGVkIEJ1Z3M6Cm8gTkVULTYxMzogIFRGVFBDbGllbnQgYXNzdW1lcyB0aGF0IGxhc3RCbG9jayA9PSAwIG9ubHkgb25jZQpvIE5FVC0zMjA6ICBBbGxvdyBURlRQU2VydmVyLmphdmEgdG8gYmluZCB0byBhIHNwZWNpZmljIG5ldHdvcmsgYWRhcHRlciBUaGFua3MgdG8gS2V2aW4gQnVsZWJ1c2guCm8gTkVULTQxNDogIEFwYWNoZSBDb21tb25zIFRGVFAgZG9lcyBub3QgcmVqZWN0IHJlcXVlc3QgcmVwbGllcyB0aGF0IG9yaWdpbmF0ZSBmcm9tIGEgY29udHJvbCBwb3J0LiBUaGFua3MgdG8gQ2h1Y2sgV29sYmVyLgpvIE5FVC00Nzc6ICBURlRQIHNlbmRGaWxlIHJldHJ5IGJyb2tlbiBUaGFua3MgdG8gSm9obiBXYWx0b24uCm8gTkVULTU5NjogIE51bGxQb2ludGVyRXhjZXB0aW9uIHdoZW4gZGlzY29ubmVjdGluZyBUZWxuZXRDbGllbnQgdHdpY2Ugd2l0aCBKREsgNyBUaGFua3MgdG8gVmluY2VudCBCb3JpZXMtQXplYXUuCm8gTkVULTYwMjogIEZhaWx1cmUgdG8gcGFyc2UgdGltZXMgZnJvbSBTWVNUX0w4IHN5c3RlbXMgdGhhdCByZXBvcnQgYXMgIldJTkRPV1MgVHlwZTogTDgiIFRoYW5rcyB0byBSb3NzIEJyYWl0aHdhaXRlLgpvIE5FVC02MDQ6ICBURlRQIHNlbmQgYW5kIHJlY2VpdmUgZG9uJ3QgaGF2ZSBwcm9ncmVzcyBpbmRpY2F0aW9uIFRoYW5rcyB0byBGcmFuayBEZWxwb3J0ZS4KbyBORVQtNTg4OiAgRlRQQ2xpZW50LnNldFBhc3NpdmVOYXRXb3JrYXJvdW5kIGFzc3VtZXMgaG9zdCBpcyBvdXRzaWRlIHNpdGUgbG9jYWwgcmFuZ2UgVGhhbmtzIHRvIERhdmUgTmljZSAvIFRoYWkgSC4KbyBORVQtNjEwOiAgRlRQQ2xpZW50Lm1saXN0RmlsZSBpbmNvcnJlY3RseSBoYW5kbGVzIE1MU1QgcmVwbHkgVGhhbmtzIHRvIFNlcmdleSBZYW56aW4uCm8gTkVULTYxMTogIEZUUCBkb2VzIG5vdCB2YWxpZGF0ZSBjb21tYW5kIHJlcGx5IHN5bnRheCBmdWxseQpvIE5FVC02MDk6ICBEZWZhdWx0VW5peEZUUEZpbGVFbnRyeVBhcnNlckZhY3RvcnkgSXNzdWUgKGxlYWRpbmcgc3BhY2VzIHJlbW92YWwgY29uZmlndXJhdGlvbikgVGhhbmtzIHRvIFRxdXAzLgpvIE5FVC01OTc6ICBGVFAgZmFpbHMgdG8gcGFyc2UgbGlzdGluZ3MgZm9yIFNvbGFyaXMgMTAgRlRQZCBpbiBKYXBhbmVzZSBUaGFua3MgdG8gSGlyb2tpIFRhbml1cmEuCm8gTkVULTU5MzogIEhvc3RuYW1lVmVyaWZpZXIgaXMgY2FsbGVkIHdpdGggaXAgYWRkZXNzIGluc3RlYWQgb2YgdGhlIHByb3ZpZGVkIGhvc3RuYW1lIFRoYW5rcyB0byBK9nJnIFdldWxlLgpvIE5FVC01OTQ6ICBUZWxuZXRDbGllbnQuX2Nsb3NlT3V0cHV0U3RyZWFtIHVuaGFuZGxlZCBleGNlcHRpb24gZnJvbSBGaWx0ZXJPdXRwdXRTdHJlYW0uY2xvc2UgVGhhbmtzIHRvIEJyYWQgV29ycnJhbC4KbyBORVQtNTkyOiAgcGxhaW5Tb2NrZXQgaW4gRlRQU0NsaWVudCBpcyBuZXZlciBjbG9zZWQgVGhhbmtzIHRvIE1hcmsgRm9yZC4KCkNoYW5nZXM6Cm8gTkVULTYxMjogIEFsbG93IFRGVFAgc29ja2V0IElPIHRyYWNpbmcKbyAgICAgICAgICAgUE9QM01haWwgZXhhbXBsZTogc3VwcG9ydCBob3N0IHBvcnQ7IGFsbG93IHJlYWRpbmcgcGFzc3dvcmQgZnJvbSBDb25zb2xlL3N0ZGluL2Vudmlyb25tZW50Cm8gTkVULTU5OTogIEFkZCBzaG9ydGhhbmQgRlRQQ2xpZW50Q29uZmlnIGNvbnN0cnVjdG9yCgoKSGlzdG9yaWNhbCBsaXN0IG9mIGNoYW5nZXM6IGh0dHBzOi8vY29tbW9ucy5hcGFjaGUub3JnL3Byb3Blci9jb21tb25zLW5ldC9jaGFuZ2VzLXJlcG9ydC5odG1sCgpGb3IgY29tcGxldGUgaW5mb3JtYXRpb24gb24gQXBhY2hlIENvbW1vbnMgTmV0LCBpbmNsdWRpbmcgaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byBzdWJtaXQgYnVnIHJlcG9ydHMsCnBhdGNoZXMsIG9yIHN1Z2dlc3Rpb25zIGZvciBpbXByb3ZlbWVudCwgc2VlIHRoZSBBcGFjaGUgQXBhY2hlIENvbW1vbnMgTmV0IHdlYnNpdGU6CgpodHRwczovL2NvbW1vbnMuYXBhY2hlLm9yZy9wcm9wZXIvY29tbW9ucy1uZXQvCg==