PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+PHRpdGxlPkFwYWNoZSBSaXZldCBJbnN0YWxsYXRpb248L3RpdGxlPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InJpdmV0LmNzcyI+PG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43Ni4xIj48bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJBcGFjaGUgUml2ZXQiPjxsaW5rIHJlbD0idXAiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJBcGFjaGUgUml2ZXQiPjxsaW5rIHJlbD0icHJldiIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkFwYWNoZSBSaXZldCI+PGxpbmsgcmVsPSJuZXh0IiBocmVmPSJyZXF1ZXN0Lmh0bWwiIHRpdGxlPSJBcGFjaGUgQ2hpbGQgUHJvY2Vzc2VzIExpZmVjeWNsZSBhbmQgUmVxdWVzdCBQcm9jZXNzaW5nIj48L2hlYWQ+PGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPjxkaXYgY2xhc3M9Im5hdmhlYWRlciI+PHRhYmxlIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciI+PHRyPjx0aCBjb2xzcGFuPSIzIiBhbGlnbj0iY2VudGVyIj5BcGFjaGUgUml2ZXQgSW5zdGFsbGF0aW9uPC90aD48L3RyPjx0cj48dGQgd2lkdGg9IjIwJSIgYWxpZ249ImxlZnQiPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImltYWdlcy9wcmV2LnBuZyIgYWx0PSJQcmV2Ij48L2E+oDwvdGQ+PHRoIHdpZHRoPSI2MCUiIGFsaWduPSJjZW50ZXIiPqA8L3RoPjx0ZCB3aWR0aD0iMjAlIiBhbGlnbj0icmlnaHQiPqA8YSBhY2Nlc3NrZXk9Im4iIGhyZWY9InJlcXVlc3QuaHRtbCI+PGltZyBzcmM9ImltYWdlcy9uZXh0LnBuZyIgYWx0PSJOZXh0Ij48L2E+PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiIgdGl0bGU9IkFwYWNoZSBSaXZldCBJbnN0YWxsYXRpb24iPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2Pjxocj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIG5hbWU9Imluc3RhbGxhdGlvbiI+PC9hPkFwYWNoZSBSaXZldCBJbnN0YWxsYXRpb248L2gyPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InByb2NlZHVyZSI+PHAgc3R5bGU9IndpZHRoOjkwJSI+IAogICAgICAgICAgICBSaXZldCAyLjEgcnVucyB3aXRoIHRoZSBBcGFjaGUgMi4yLnggYW5kIDIuNC54IEhUVFAgd2ViIHNlcnZlci4gCiAgICAgICAgICAgIEl0IGlzIGtub3duIHRvIGJ1aWxkIGFuZCBydW4gb24gdmFyaW91cyBMaW51eCBkaXN0cmlidXRpb25zIAogICAgICAgICAgICAoRGViaWFuICZhbXA7IFVidW50dSwgUmVkaGF0LCBTdVNFIGFuZCBDZW50T1MpLCBGcmVlQlNEIGFuZCBPcGVuQlNELiBGb3Igc29tZQogICAgICAgICAgICBvZiB0aGVzZSBVbml4LWxpa2Ugb3BlcmF0aXZlIHN5c3RlbXMgCiAgICAgICAgICAgIDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3RjbC5hcGFjaGUub3JnL3JpdmV0L3N0YXRpYy9kb3dubG9hZC5odG1sIiB0YXJnZXQ9Il90b3AiPmJpbmFyeSBwYWNrYWdlczwvYT4gCiAgICAgICAgICAgIGFyZSBhbHJlYWR5IGF2YWlsYWJsZSBmb3IgZG93bmxvYWQuCiAgICAgICAgPC9wPjxwIHN0eWxlPSJ3aWR0aDo5MCUiPgogICAgICAgICAgICBDdXJyZW50bHkgdGhlcmUgaXMgbm8gd2F5IHRvIHJ1biBBcGFjaGUgUml2ZXQgMi4xIG9uIFdpbmRvd3OpIGJlY2F1c2UgICAgICAgICAgICAKICAgICAgICAgICAgUml2ZXQgY3VycmVudGx5IHJlcXVpcmVzIHRoZSAKICAgICAgICAgICAgPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLzIuMi9tb2QvcHJlZm9yay5odG1sIiB0YXJnZXQ9Il90b3AiPnByZWZvcms8L2E+LCB3aGljaAogICAgICAgICAgICBpcyBzdXBwb3J0ZWQgb25seSBvbiBVbml4L0xpbnV4IHN5c3RlbXMuIEVmZm9ydHMgYXJlIHVuZGVyIHdheSB0byBleHRlbmQgdGhlIHN1cHBvcnQgdG8gdGhlIAogICAgICAgICAgICA8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvMi4yL21vZC93b3JrZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj53b3JrZXI8L2E+IAogICAgICAgICAgICBhbmQgdGhlCiAgICAgICAgICAgIDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy8yLjIvbW9kL21wbV93aW5udC5odG1sIiB0YXJnZXQ9Il90b3AiPndpbm50PC9hPiBNUE1zLgogICAgICAgICAgICBDaGVjayBvdXIKICAgICAgICAgICAgPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vdGNsLmFwYWNoZS5vcmcvcml2ZXQvc3RhdGljL2Fib3V0Lmh0bWwiIHRhcmdldD0iX3RvcCI+ZGV2ZWxvcG1lbnQgbWFpbGluZyBsaXN0PC9hPgogICAgICAgICAgICBmb3IgdGhlIGxhdGVzdHMgdXBkYXRlcyBhYm91dCBSaXZldCBkZXZlbG9wbWVudAogICAgICAgIDwvcD48cCBzdHlsZT0id2lkdGg6OTAlIj4KICAgICAgICAgICAgSWYgeW91IG5lZWQgdG8gY29tcGlsZSBBcGFjaGUgUml2ZXQgeW91cnNlbGYgdGhpcyBpcyB0aGUgcHJvY2VkdXJlIHRvIGZvbGxvdwogICAgICAgIDwvcD48b2wgY2xhc3M9InByb2NlZHVyZSIgdHlwZT0iMSI+PGxpIGNsYXNzPSJzdGVwIiB0aXRsZT0iSW5zdGFsbCBUY2wiPjxwIGNsYXNzPSJ0aXRsZSI+PGI+SW5zdGFsbCBUY2w8L2I+PC9wPjxwIHN0eWxlPSJ3aWR0aDo5MCUiPgogICAgICAgICAgICAgICAgSW5zdGFsbGluZyBSaXZldCBpcyBhYm91dCBlbmRvd2luZyB0aGUgQXBhY2hlIEhUVFAgd2Vic2VydmVyIHdpdGggdGhlIGFiaWxpdHkKICAgICAgICAgICAgICAgIG9mIHJ1bm5pbmcgc2NyaXB0cyB3cml0dGVuIHdpdGggdGhlIFRjbCBwcm9ncmFtbWluZyBsYW5ndWFnZS4gCiAgICAgICAgICAgICAgICBUaGVyZWZvcmUgdGhlIAogICAgICAgICAgICAgICAgPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnRjbC50ay8iIHRhcmdldD0iX3RvcCI+VGNsPC9hPiAKICAgICAgICAgICAgICAgIHNoZWxsICg8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlIj48c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz50Y2xzaDwvc3Ryb25nPjwvc3Bhbj48L3NwYW4+KSwgaXRzIHJ1bnRpbWUgYW5kICAKICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGxpYnJhcmllcyAoJiM4ODA1OzguNS4xMCkgaGF2ZSB0byBiZSBpbnN0YWxsZWQuIEJ1aWxkaW5nIFJpdmV0IHlvdSB3aWxsIAogICAgICAgICAgICAgICAgaGF2ZSB0byB0ZWxsIHRoZSBzY3JpcHRzIHdoZXJlIHRoZSBUY2wgbGlicmFyaWVzIGFyZSBsb2NhdGVkIHZpYSB0aGUKICAgICAgICAgICAgICAgIC0td2l0aC10Y2wgb3B0aW9uIHRvIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTptb25vc3BhY2UiPjxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPmNvbmZpZ3VyZTwvc3Ryb25nPjwvc3Bhbj48L3NwYW4+IChzZWUgYmVsb3cpLgogICAgICAgICAgICA8L3A+PC9saT48bGkgY2xhc3M9InN0ZXAiIHRpdGxlPSJHZXQgUml2ZXQiPjxwIGNsYXNzPSJ0aXRsZSI+PGI+R2V0IFJpdmV0PC9iPjwvcD48cCBzdHlsZT0id2lkdGg6OTAlIj4KICAgICAgICAgICAgICAgIERvd25sb2FkIHRoZSBzb3VyY2VzIGF0IDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3RjbC5hcGFjaGUub3JnL3JpdmV0L2Rvd25sb2FkLmh0bWwiIHRhcmdldD0iX3RvcCI+aHR0cDovL3RjbC5hcGFjaGUub3JnL3JpdmV0L2Rvd25sb2FkLmh0bWw8L2E+LiAgCiAgICAgICAgICAgIDwvcD48L2xpPjxsaSBjbGFzcz0ic3RlcCIgdGl0bGU9IkdldCBhbmQgSW5zdGFsbCBBcGFjaGUgU291cmNlcyI+PHAgY2xhc3M9InRpdGxlIj48Yj5HZXQgYW5kIEluc3RhbGwgQXBhY2hlIFNvdXJjZXM8L2I+PC9wPjxwIHN0eWxlPSJ3aWR0aDo5MCUiPgogICAgICAgICAgICAgICAgUml2ZXQgbmVlZHMgc29tZSBvZiB0aGUgaW5jbHVkZSAoLmgpIGZpbGVzIHNoaXBwZWQgd2l0aCB0aGUgd2Vic2VydmVyIHNvdXJjZSBjb2RlLiAKICAgICAgICAgICAgICAgIFRoZSBlYXNpZXN0IHdheSB0byBnZXQgdGhlbSBpcyB0byBkb3dubG9hZCB0aGUgQXBhY2hlIHNvdXJjZS4gIAogICAgICAgICAgICAgICAgSWYgY2FuIGJ1aWxkIFJpdmV0IGVpdGhlciBzdGF0aWNhbGx5IChjb21waWxlZCBpbnRvIHRoZSBBcGFjaGUgd2ViCiAgICAgICAgICAgICAgICBzZXJ2ZXIgaW5zdGVhZCBvZiBsb2FkZWQgZHluYW1pY2FsbHkpIG9yIGR5bmFtaWNhbGx5IChhcyBhIGxvYWRhYmxlIHNoYXJlZCBsaWJyYXJ5KS4gIAogICAgICAgICAgICAgICAgV2UgcmVjb21tZW5kIHRoYXQgeW91IGJ1aWxkIFJpdmV0IGFzIGEgc2hhcmVkIGxpYnJhcnksIGZvciBtYXhpbXVtIGZsZXhpYmlsaXR5LAogICAgICAgICAgICAgICAgbWVhbmluZyB0aGF0IHlvdSBhbHNvIGJ1aWxkIEFwYWNoZSB0byBiZSBhYmxlIHRvIGxvYWQgbW9kdWxlcy4gT3RoZXIgdGhhbiB0aGF0LCAKICAgICAgICAgICAgICAgIHRoZSBkZWZhdWx0IEFwYWNoZSBpbnN0YWxsIGlzIGZpbmUuICBXZSB3aWxsIHRlbGwgUml2ZXQgd2hlcmUgaXQgaXMgbG9jYXRlZCB2aWEgdGhlIAogICAgICAgICAgICAgICAgLS13aXRoLWFweHMgb3B0aW9uIHRvIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTptb25vc3BhY2UiPjxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPmNvbmZpZ3VyZTwvc3Ryb25nPjwvc3Bhbj48L3NwYW4+IChzZWUgYmVsb3cpLgogICAgICAgICAgICA8L3A+PHAgc3R5bGU9IndpZHRoOjkwJSI+CiAgICAgICAgICAgICAgICBUaGUgc291cmNlIGNvZGUgZm9yIHRoZSBBcGFjaGUgd2ViIHNlcnZlciBtYXkgYmUgZm91bmQgYnkgZm9sbG93aW5nIHRoZSBsaW5rcyBoZXJlOiAKICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIiB0YXJnZXQ9Il90b3AiPmh0dHA6Ly9odHRwZC5hcGFjaGUub3JnLzwvYT4uCiAgICAgICAgICAgIDwvcD48L2xpPjxsaSBjbGFzcz0ic3RlcCIgdGl0bGU9IlVuY29tcHJlc3MgU291cmNlcyI+PHAgY2xhc3M9InRpdGxlIj48Yj5VbmNvbXByZXNzIFNvdXJjZXM8L2I+PC9wPjxwIHN0eWxlPSJ3aWR0aDo5MCUiPgogICAgICAgICAgICAgIFdlIHdpbGwgYXNzdW1lIHRoYXQgeW91IGhhdmUgQXBhY2hlIGluc3RhbGxlZCBhdCB0aGlzIHBvaW50LgogICAgICAgICAgICAgIFlvdSBtdXN0IHVuY29tcHJlc3MgdGhlIFJpdmV0IHNvdXJjZXMgaW4gdGhlIGRpcmVjdG9yeSB3aGVyZSB5b3UKICAgICAgICAgICAgICB3aXNoIHRvIGNvbXBpbGUgdGhlbS4KICAgICAgICAgICAgICA8L3A+PHByZSBzdHlsZT0iYmFja2dyb3VuZDojY2NjOyBtYXJnaW46IDJleDsgbWFyZ2luLXJpZ2h0OiAxMCU7ICAgICAgIHBhZGRpbmc6IDFleDsgYm9yZGVyOiBkYXNoZWQgYmxhY2sgMXB4IDsgd2hpdGUtc3BhY2U6IHByZTsgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOyBmb250LXNpemU6IDkwJTsiIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3VuemlwIHJpdmV0LVguWC5YLnRhci5negp0YXIgLXh2ZiByaXZldC1YLlguWC50YXIuZ3o8L3ByZT48cCBzdHlsZT0id2lkdGg6OTAlIj4KICAgICAgICAgICAgPC9wPjwvbGk+PGxpIGNsYXNzPSJzdGVwIiB0aXRsZT0iQnVpbGRpbmcgUml2ZXQiPjxwIGNsYXNzPSJ0aXRsZSI+PGI+QnVpbGRpbmcgUml2ZXQ8L2I+PC9wPjxvbCB0eXBlPSJhIiBjbGFzcz0ic3Vic3RlcHMiPjxsaSBjbGFzcz0ic3RlcCIgdGl0bGU9IlN0ZXAgNS5hIj48cCBzdHlsZT0id2lkdGg6OTAlIj4KCSAgICAgIE9uIExpbnV4IG9yIFVuaXggc3lzdGVtcywgUml2ZXQgdXNlcyB0aGUgc3RhbmRhcmQgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Om1vbm9zcGFjZSI+PHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+Li9jb25maWd1cmUgOyBtYWtlIDsgbWFrZSBpbnN0YWxsPC9zdHJvbmc+PC9zcGFuPjwvc3Bhbj4gdGVjaG5pcXVlLgoJICAgIDwvcD48cCBzdHlsZT0id2lkdGg6OTAlIj4KCSAgICAgIFRoZXJlIGFyZSBzZXZlcmFsIHJpdmV0IHNwZWNpZmljIG9wdGlvbnMgdG8gY29uZmlndXJlIHRoYXQgbWlnaHQgYmUgdXNlZnVsIChvciBuZWVkZWQpOgoJICAgICAgPC9wPjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PGRsPjxkdD48c3BhbiBjbGFzcz0idGVybSI+LS13aXRoLXRjbDwvc3Bhbj48L2R0PjxkZD48ZGl2IHN0eWxlPSJwYWRkaW5nOjQgOyBtYXJnaW4tdG9wOjMgOyBtYXJnaW4tYm90dG9tOjMgOyB3aWR0aDo3NSUiPjxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MS41ZXggOyBwYWRkaW5nIC41ZXgiPgoJCSAgICAgIFRoaXMgcG9pbnRzIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlCgkJICAgICAgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj50Y2xDb25maWcuc2g8L2NvZGU+IGZpbGUgaXMgbG9jYXRlZC4KCQkgICAgPC9kaXY+PC9kaXY+PC9kZD48ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPi0td2l0aC10Y2xzaDwvc3Bhbj48L2R0PjxkZD48ZGl2IHN0eWxlPSJwYWRkaW5nOjQgOyBtYXJnaW4tdG9wOjMgOyBtYXJnaW4tYm90dG9tOjMgOyB3aWR0aDo3NSUiPjxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MS41ZXggOyBwYWRkaW5nIC41ZXgiPlRoaXMgcG9pbnRzIHRvIHRoZSBsb2NhdGlvbiBvZiB0aGUKCQkgICAgICA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPnRjbHNoPC9jb2RlPiBleGVjdXRhYmxlLjwvZGl2PjwvZGl2PjwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj4tLXdpdGgtYXB4czwvc3Bhbj48L2R0PjxkZD48ZGl2IHN0eWxlPSJwYWRkaW5nOjQgOyBtYXJnaW4tdG9wOjMgOyBtYXJnaW4tYm90dG9tOjMgOyB3aWR0aDo3NSUiPjxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MS41ZXggOyBwYWRkaW5nIC41ZXgiPlRoZSBsb2NhdGlvbiBvZiB0aGUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5hcHhzPC9jb2RlPgoJCSAgICAgIHByb2dyYW0gdGhhdCBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKCQkgICAgICBjb25maWd1cmF0aW9uIGFuZCBjb21waWxhdGlvbiBvcHRpb25zIG9mIEFwYWNoZSBtb2R1bGVzLjwvZGl2PjwvZGl2PjwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj4tLXdpdGgtYXBhY2hlLXZlcnNpb249WzF8Ml08L3NwYW4+PC9kdD48ZGQ+PGRpdiBzdHlsZT0icGFkZGluZzo0IDsgbWFyZ2luLXRvcDozIDsgbWFyZ2luLWJvdHRvbTozIDsgd2lkdGg6NzUlIj48ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjEuNWV4IDsgcGFkZGluZyAuNWV4Ij4KCQkJVGhpcyBvcHRpb24gdGVsbHMgdGhlIGJ1aWxkIHNjcmlwdHMgd2hldGhlciB5b3Ugd2FudCB0byBidWlsZCBSaXZldCBmb3IgdGhlCgkJCUFwYWNoZSAxLnggb3IgQXBhY2hlIDIueCBzZXJ2ZXIuCgkJICAgIDwvZGl2PjwvZGl2PjwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj4tLXdpdGgtYXBhY2hlLWluY2x1ZGVbPURJUl08L3NwYW4+PC9kdD48ZGQ+PGRpdiBzdHlsZT0icGFkZGluZzo0IDsgbWFyZ2luLXRvcDozIDsgbWFyZ2luLWJvdHRvbTozIDsgd2lkdGg6NzUlIj48ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjEuNWV4IDsgcGFkZGluZyAuNWV4Ij4KCQkJICAgIExvY2F0ZXMgdGhlIEFwYWNoZSBpbmNsdWRlIGZpbGVzIG9uIHlvdXIgY29tcHV0ZXIsIGlmIHRoZXkncmUgbm90IGluIHN0YW5kYXJkIGRpcmVjdG9yeS4gCgkJICAgIDwvZGl2PjwvZGl2PjwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj4tLWVuYWJsZS12ZXJzaW9uLWRpc3BsYXk9W3llc3xub108L3NwYW4+PC9kdD48ZGQ+PGRpdiBzdHlsZT0icGFkZGluZzo0IDsgbWFyZ2luLXRvcDozIDsgbWFyZ2luLWJvdHRvbTozIDsgd2lkdGg6NzUlIj48ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjEuNWV4IDsgcGFkZGluZyAuNWV4Ij4KCQkJVGhpcyBvcHRpb24gZW5hYmxlcyBSaXZldCB0byBkaXNwbGF5IGl0cyB2ZXJzaW9uIGluIHRoZSBsb2dmaWxlcyB3aGVuIEFwYWNoZSBpcyBzdGFydGVkLiAKCQkJVGhlIGRlZmF1bHQgaXMgdG8ga2VlcCBSaXZldCB2ZXJzaW9uIGhpZGRlbi4KCQkgICAgPC9kaXY+PC9kaXY+PC9kZD48ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPi0td2l0aC1yaXZldC10YXJnZXQtZGlyPURJUjwvc3Bhbj48L2R0PjxkZD48ZGl2IHN0eWxlPSJwYWRkaW5nOjQgOyBtYXJnaW4tdG9wOjMgOyBtYXJnaW4tYm90dG9tOjMgOyB3aWR0aDo3NSUiPjxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MS41ZXggOyBwYWRkaW5nIC41ZXgiPgoJCQkgICAgVGhpcyBvcHRpb24gdGVsbHMgdGhlIGluc3RhbGwgc2NyaXB0IHdoZXJlIFJpdmV0J3MgVGNsIHBhY2thZ2VzIGhhdmUgdG8gYmUgY29waWVkLiAKCQkJPC9kaXY+PC9kaXY+PC9kZD48L2RsPjwvZGl2PjxwIHN0eWxlPSJ3aWR0aDo5MCUiPgoJICAgIDwvcD48cCBzdHlsZT0id2lkdGg6OTAlIj4KCQlFeGFtcGxlOiBjb25maWd1cmluZyB0aGUgYnVpbGQgc3lzdGVtIHRvIGNvbXBpbGUgUml2ZXQgZm9yIGFuIGFwYWNoZSAyLnggc2VydmVyLCB1c2luZyB0Y2w4LjUgYW5kCgkJc3BlY2lmeWluZyBhIGN1c3RvbSBuYW1lIGZvciB0aGUgYXB4cyBwcm9ncmFtLiAKCSAgICA8L3A+PHByZSBzdHlsZT0iYmFja2dyb3VuZDojY2NjOyBtYXJnaW46IDJleDsgbWFyZ2luLXJpZ2h0OiAxMCU7ICAgICAgIHBhZGRpbmc6IDFleDsgYm9yZGVyOiBkYXNoZWQgYmxhY2sgMXB4IDsgd2hpdGUtc3BhY2U6IHByZTsgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOyBmb250LXNpemU6IDkwJTsiIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Li9jb25maWd1cmUgLS13aXRoLXRjbD0vdXNyL2xpYi90Y2w4LjUvIC0td2l0aC10Y2xzaD0vdXNyL2Jpbi90Y2xzaDguNSBcCgkgICAgLS13aXRoLWFweHM9L3Vzci9iaW4vYXB4czIgLS13aXRoLWFwYWNoZT0vdXNyIC0td2l0aC1hcGFjaGUtdmVyc2lvbj0yPC9wcmU+PC9saT48bGkgY2xhc3M9InN0ZXAiIHRpdGxlPSJSdW4gbWFrZSI+PHAgY2xhc3M9InRpdGxlIj48Yj5SdW4gbWFrZTwvYj48L3A+PHAgc3R5bGU9IndpZHRoOjkwJSI+CgkgICAgICBBdCB0aGlzIHBvaW50LCB5b3UgYXJlIHJlYWR5IHRvIHJ1biBtYWtlLCB3aGljaCBzaG91bGQKCSAgICAgIHJ1biB0byBjb21wbGV0aW9uIHdpdGhvdXQgYW55IGVycm9ycyAoYSB3YXJuaW5nIG9yIHR3bwoJICAgICAgaXMgb2ssIGdlbmVyYWxseSkuCgkgICAgPC9wPjwvbGk+PGxpIGNsYXNzPSJzdGVwIiB0aXRsZT0iSW5zdGFsbCI+PHAgY2xhc3M9InRpdGxlIj48Yj5JbnN0YWxsPC9iPjwvcD48cCBzdHlsZT0id2lkdGg6OTAlIj4KCSAgICAgIE5vdywgeW91IGFyZSByZWFkeSB0byBydW4gdGhlIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTptb25vc3BhY2UiPjxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm1ha2UKCQlpbnN0YWxsPC9zdHJvbmc+PC9zcGFuPjwvc3Bhbj4gdG8gaW5zdGFsbCB0aGUgcmVzdWx0aW5nIGZpbGVzLgoJCVRoaXMgc2hvdWxkIGNvcHkgdGhlIHNoYXJlZCBvYmplY3QgKGxpa2UKCQk8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPm1vZF9yaXZldC5zbzwvY29kZT4sIGlmIG9uZSB3YXMKCQlzdWNjZXNzZnVsbHkgY3JlYXRlZCwgaW50byBBcGFjaGUncwoJCTxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+bGliZXhlYzwvY29kZT4gZGlyZWN0b3J5LCBhcyB3ZWxsIGFzCgkJaW5zdGFsbCBzb21lIHN1cHBvcnQgc2NyaXB0cyBhbmQgdmFyaW91cyBjb2RlLgoJICAgIDwvcD48L2xpPjwvb2w+PC9saT48bGkgY2xhc3M9InN0ZXAiIHRpdGxlPSJBcGFjaGUgQ29uZmlndXJhdGlvbiBGaWxlcyI+PHAgY2xhc3M9InRpdGxlIj48Yj5BcGFjaGUgQ29uZmlndXJhdGlvbiBGaWxlczwvYj48L3A+PHAgc3R5bGU9IndpZHRoOjkwJSI+CgkgIFJpdmV0IGlzIHJlbGF0aXZlbHkgZWFzeSB0byBjb25maWd1cmUgLSB3ZSBzdGFydCBvZmYgYnkKCSAgYWRkaW5nIHRoZSBtb2R1bGUgaXRzZWxmOgoJPC9wPjxwcmUgc3R5bGU9ImJhY2tncm91bmQ6I2NjYzsgbWFyZ2luOiAyZXg7IG1hcmdpbi1yaWdodDogMTAlOyAgICAgICBwYWRkaW5nOiAxZXg7IGJvcmRlcjogZGFzaGVkIGJsYWNrIDFweCA7IHdoaXRlLXNwYWNlOiBwcmU7ICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgZm9udC1zaXplOiA5MCU7IiBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkxvYWRNb2R1bGUgcml2ZXRfbW9kdWxlCTxlbSBjbGFzcz0icmVwbGFjZWFibGUiPjxjb2RlPi91c3IvbGliL2FwYWNoZTIvbW9kdWxlcy9tb2Rfcml2ZXQuc288L2NvZGU+PC9lbT48L3ByZT48cCBzdHlsZT0id2lkdGg6OTAlIj4KCSAgVGhpcyB0ZWxscyBBcGFjaGUgdG8gbG9hZCB0aGUgUml2ZXQgc2hhcmVkIG9iamVjdCwgd2hlcmV2ZXIKCSAgaXQgaGFwcGVucyB0byByZXNpZGUgb24geW91ciBmaWxlIHN5c3RlbS4gIE5vdyB3ZSBoYXZlIHRvCgkgIHRlbGwgQXBhY2hlIHdoYXQga2luZCBvZiBmaWxlcyBhcmUgIlJpdmV0IiBmaWxlcyBhbmQgaG93IHRvCgkgIHByb2Nlc3MgdGhlbToKCTwvcD48cHJlIHN0eWxlPSJiYWNrZ3JvdW5kOiNjY2M7IG1hcmdpbjogMmV4OyBtYXJnaW4tcmlnaHQ6IDEwJTsgICAgICAgcGFkZGluZzogMWV4OyBib3JkZXI6IGRhc2hlZCBibGFjayAxcHggOyB3aGl0ZS1zcGFjZTogcHJlOyAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IGZvbnQtc2l6ZTogOTAlOyIgY2xhc3M9InByb2dyYW1saXN0aW5nIj5BZGRUeXBlIGFwcGxpY2F0aW9uL3gtaHR0cGQtcml2ZXQgLnJ2dApBZGRUeXBlIGFwcGxpY2F0aW9uL3gtcml2ZXQtdGNsIC50Y2w8L3ByZT48cCBzdHlsZT0id2lkdGg6OTAlIj4KCSAgVGhlc2UgdGVsbCBBcGFjaGUgdG8gcHJvY2VzcyBmaWxlcyB3aXRoIHRoZQoJICA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi5ydnQ8L2NvZGU+IGFuZCA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi50Y2w8L2NvZGU+CgkgIGV4dGVuc2lvbnMgYXMgUml2ZXQgZmlsZXMuCgk8L3A+PHAgc3R5bGU9IndpZHRoOjkwJSI+CgkgIFRoZSBjaGFyYWN0ZXJzIGVuY29kaW5nIGNhbiBiZSBjaGFuZ2VkIHVzaW5nIHRoZSA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlIj48c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5oZWFkZXIgdHlwZTwvc3Ryb25nPjwvc3Bhbj48L3NwYW4+IGNvbW1hbmQsCgkgIGJ1dCB5b3UgY2FuIGFsc28gY2hhbmdlIHRoZSBkZWZhdWx0IGNoYXJzZXQgZm9yIHRoZSB3aG9sZSBzaXRlOgoJPC9wPjxwcmUgc3R5bGU9ImJhY2tncm91bmQ6I2NjYzsgbWFyZ2luOiAyZXg7IG1hcmdpbi1yaWdodDogMTAlOyAgICAgICBwYWRkaW5nOiAxZXg7IGJvcmRlcjogZGFzaGVkIGJsYWNrIDFweCA7IHdoaXRlLXNwYWNlOiBwcmU7ICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgZm9udC1zaXplOiA5MCU7IiBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkFkZFR5cGUgJ2FwcGxpY2F0aW9uL3gtaHR0cGQtcml2ZXQ7Y2hhcnNldD11dGYtOCcgcnZ0PC9wcmU+PHAgc3R5bGU9IndpZHRoOjkwJSI+CgkgICBBbGwgdGhlIHBhZ2VzIGdlbmVyYXRlZCBieSBSaXZldCBvbiB0aGlzIHNpdGUgd2lsbCBiZSBzZW50IHdpdGggYSAKCSAgICA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlIj48c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5Db250ZW50LVR5cGU6J3RleHQvaHRtbDtjaGFyc2V0PXV0Zi04Jzwvc3Ryb25nPjwvc3Bhbj48L3NwYW4+IGhlYWRlci4KCTwvcD48cCBzdHlsZT0id2lkdGg6OTAlIj5Zb3UgbWF5IGFsc28gd2lzaCB0byB1c2UgUml2ZXQgZmlsZXMgYXMgaW5kZXggZmlsZXMgZm9yCglkaXJlY3Rvcmllcy4gIEluIHRoYXQgY2FzZSwgeW91IHdvdWxkIGRvIHRoZSBmb2xsb3dpbmc6PC9wPjxwcmUgc3R5bGU9ImJhY2tncm91bmQ6I2NjYzsgbWFyZ2luOiAyZXg7IG1hcmdpbi1yaWdodDogMTAlOyAgICAgICBwYWRkaW5nOiAxZXg7IGJvcmRlcjogZGFzaGVkIGJsYWNrIDFweCA7IHdoaXRlLXNwYWNlOiBwcmU7ICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgZm9udC1zaXplOiA5MCU7IiBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkRpcmVjdG9yeUluZGV4IGluZGV4Lmh0bWwgaW5kZXguaHRtIGluZGV4LnNodG1sIGluZGV4LmNnaSBpbmRleC50Y2wgaW5kZXgucnZ0PC9wcmU+PHAgc3R5bGU9IndpZHRoOjkwJSI+CgkgIEZvciBvdGhlciBkaXJlY3RpdmVzIHRoYXQgUml2ZXQgcHJvdmlkZXMgZm9yIEFwYWNoZQoJICBjb25maWd1cmF0aW9uLCBwbGVhc2Ugc2VlIDxhIGNsYXNzPSJ4cmVmIiBocmVmPSJkaXJlY3RpdmVzLmh0bWwiIHRpdGxlPSJSaXZldCBBcGFjaGUgRGlyZWN0aXZlcyI+dGhlIHNlY3Rpb24gY2FsbGVkICYjODIyMDtSaXZldCBBcGFjaGUgRGlyZWN0aXZlcyYjODIyMTs8L2E+LgoJPC9wPjwvbGk+PC9vbD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJuYXZmb290ZXIiPjxocj48dGFibGUgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gZm9vdGVyIj48dHI+PHRkIHdpZHRoPSI0MCUiIGFsaWduPSJsZWZ0Ij48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJpbWFnZXMvcHJldi5wbmciIGFsdD0iUHJldiI+PC9hPqA8L3RkPjx0ZCB3aWR0aD0iMjAlIiBhbGlnbj0iY2VudGVyIj6gPC90ZD48dGQgd2lkdGg9IjQwJSIgYWxpZ249InJpZ2h0Ij6gPGEgYWNjZXNza2V5PSJuIiBocmVmPSJyZXF1ZXN0Lmh0bWwiPjxpbWcgc3JjPSJpbWFnZXMvbmV4dC5wbmciIGFsdD0iTmV4dCI+PC9hPjwvdGQ+PC90cj48dHI+PHRkIHdpZHRoPSI0MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+QXBhY2hlIFJpdmV0oDwvdGQ+PHRkIHdpZHRoPSIyMCUiIGFsaWduPSJjZW50ZXIiPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImltYWdlcy9ob21lLnBuZyIgYWx0PSJIb21lIj48L2E+PC90ZD48dGQgd2lkdGg9IjQwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+oEFwYWNoZSBDaGlsZCBQcm9jZXNzZXMgTGlmZWN5Y2xlIGFuZCBSZXF1ZXN0IFByb2Nlc3Npbmc8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj48L2JvZHk+PC9odG1sPgo=