PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tCiAgIENvcHlyaWdodCAyMDAxLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCgogICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0tPgoKPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CjwhLS0gJElkJCAtLT4KPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Cjxwcm9qZWN0PgogIDxwb21WZXJzaW9uPjM8L3BvbVZlcnNpb24+CgogIDxpZD5jb21tb25zLWNvbmZpZ3VyYXRpb248L2lkPgogIDxjdXJyZW50VmVyc2lvbj4xLjFSQzI8L2N1cnJlbnRWZXJzaW9uPgogIDxpbmNlcHRpb25ZZWFyPjIwMDE8L2luY2VwdGlvblllYXI+CiAgPG5hbWU+Q29tbW9ucyBDb25maWd1cmF0aW9uPC9uYW1lPgogIDxzaG9ydERlc2NyaXB0aW9uPkNvbW1vbiBDb25maWd1cmF0aW9uPC9zaG9ydERlc2NyaXB0aW9uPgogIDxkZXNjcmlwdGlvbj4KICAgIFRvb2xzIHRvIGFzc2lzdCBpbiB0aGUgcmVhZGluZyBvZiBjb25maWd1cmF0aW9uL3ByZWZlcmVuY2VzIGZpbGVzIGluCiAgICB2YXJpb3VzIGZvcm1hdHMKICA8L2Rlc2NyaXB0aW9uPgogIDxsb2dvPi9pbWFnZXMvbG9nby5wbmc8L2xvZ28+CgogIDx1cmw+aHR0cDovL2pha2FydGEuYXBhY2hlLm9yZy9jb21tb25zLyR7cG9tLmFydGlmYWN0SWQuc3Vic3RyaW5nKDgpfS88L3VybD4KICA8cGFja2FnZT5vcmcuYXBhY2hlLmNvbW1vbnMuJHtwb20uYXJ0aWZhY3RJZC5zdWJzdHJpbmcoOCl9PC9wYWNrYWdlPgoKICA8b3JnYW5pemF0aW9uPgogICAgPG5hbWU+VGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uPC9uYW1lPgogICAgPHVybD5odHRwOi8vamFrYXJ0YS5hcGFjaGUub3JnPC91cmw+CiAgICA8bG9nbz5odHRwOi8vamFrYXJ0YS5hcGFjaGUub3JnL2ltYWdlcy9vcmlnaW5hbC1qYWthcnRhLWxvZ28uZ2lmPC9sb2dvPgogIDwvb3JnYW5pemF0aW9uPgoKICA8bGljZW5zZXM+Cgk8bGljZW5zZT4KICAgIAk8bmFtZT5UaGUgQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMi4wPC9uYW1lPgogICAgCTx1cmw+L0xJQ0VOU0UudHh0PC91cmw+CiAgICAJPGRpc3RyaWJ1dGlvbj5yZXBvPC9kaXN0cmlidXRpb24+Cgk8L2xpY2Vuc2U+CiAgPC9saWNlbnNlcz4KCiAgPGd1bXBSZXBvc2l0b3J5SWQ+amFrYXJ0YTwvZ3VtcFJlcG9zaXRvcnlJZD4KICA8aXNzdWVUcmFja2luZ1VybD5odHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvYnVnemlsbGEvYnVnbGlzdC5jZ2k/YnVnX3N0YXR1cz1ORVcmYW1wO2J1Z19zdGF0dXM9QVNTSUdORUQmYW1wO2J1Z19zdGF0dXM9UkVPUEVORUQmYW1wO3Byb2R1Y3Q9Q29tbW9ucyZhbXA7Y29tcG9uZW50PUNvbmZpZ3VyYXRpb248L2lzc3VlVHJhY2tpbmdVcmw+CiAgPHNpdGVBZGRyZXNzPmpha2FydGEuYXBhY2hlLm9yZzwvc2l0ZUFkZHJlc3M+CiAgPHNpdGVEaXJlY3Rvcnk+L3d3dy9qYWthcnRhLmFwYWNoZS5vcmcvY29tbW9ucy8ke3BvbS5hcnRpZmFjdElkLnN1YnN0cmluZyg4KX0vPC9zaXRlRGlyZWN0b3J5PgogIDxkaXN0cmlidXRpb25TaXRlPnd3dy5hcGFjaGUub3JnPC9kaXN0cmlidXRpb25TaXRlPgogIDxkaXN0cmlidXRpb25EaXJlY3Rvcnk+L3d3dy93d3cuYXBhY2hlLm9yZy9kaXN0L2phdmEtcmVwb3NpdG9yeS88L2Rpc3RyaWJ1dGlvbkRpcmVjdG9yeT4KCiAgPHJlcG9zaXRvcnk+CiAgICA8Y29ubmVjdGlvbj5zY206c3ZuOmh0dHA6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2YvamFrYXJ0YS9jb21tb25zL3Byb3Blci8ke3BvbS5hcnRpZmFjdElkLnN1YnN0cmluZyg4KX0vdHJ1bms8L2Nvbm5lY3Rpb24+CiAgICA8dXJsPmh0dHA6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2YvamFrYXJ0YS9jb21tb25zL3Byb3Blci8ke3BvbS5hcnRpZmFjdElkLnN1YnN0cmluZyg4KX0vdHJ1bms8L3VybD4KICA8L3JlcG9zaXRvcnk+CgogIDx2ZXJzaW9ucz4KICAgIDx2ZXJzaW9uPgogICAgICA8aWQ+MS4wLXJjMTwvaWQ+CiAgICAgIDxuYW1lPjEuMC1yYzE8L25hbWU+CiAgICAgIDx0YWc+Q09ORklHVVJBVElPTl8xXzBfUkMxPC90YWc+CiAgICA8L3ZlcnNpb24+CiAgICA8dmVyc2lvbj4KICAgICAgPGlkPjEuMC1yYzI8L2lkPgogICAgICA8bmFtZT4xLjAtcmMyPC9uYW1lPgogICAgICA8dGFnPkNPTkZJR1VSQVRJT05fMV8wX1JDMjwvdGFnPgogICAgPC92ZXJzaW9uPgogICAgPHZlcnNpb24+CiAgICAgIDxpZD4xLjA8L2lkPgogICAgICA8bmFtZT4xLjA8L25hbWU+CiAgICAgIDx0YWc+Q09ORklHVVJBVElPTl8xXzA8L3RhZz4KICAgIDwvdmVyc2lvbj4KICA8L3ZlcnNpb25zPgogICAgCiAgPG1haWxpbmdMaXN0cz4KICAgIDxtYWlsaW5nTGlzdD4KICAgICAgPG5hbWU+Q29tbW9ucyBEZXYgTGlzdDwvbmFtZT4KICAgICAgPHN1YnNjcmliZT5jb21tb25zLWRldi1zdWJzY3JpYmVAamFrYXJ0YS5hcGFjaGUub3JnPC9zdWJzY3JpYmU+CiAgICAgIDx1bnN1YnNjcmliZT5jb21tb25zLWRldi11bnN1YnNjcmliZUBqYWthcnRhLmFwYWNoZS5vcmc8L3Vuc3Vic2NyaWJlPgogICAgICA8YXJjaGl2ZT5odHRwOi8vbWFpbC1hcmNoaXZlcy5hcGFjaGUub3JnL2V5ZWJyb3dzZS9TdW1tYXJpemVMaXN0P2xpc3ROYW1lPWNvbW1vbnMtZGV2QGpha2FydGEuYXBhY2hlLm9yZzwvYXJjaGl2ZT4KICAgIDwvbWFpbGluZ0xpc3Q+CiAgICA8bWFpbGluZ0xpc3Q+CiAgICAgIDxuYW1lPkNvbW1vbnMgVXNlciBMaXN0PC9uYW1lPgogICAgICA8c3Vic2NyaWJlPmNvbW1vbnMtdXNlci1zdWJzY3JpYmVAamFrYXJ0YS5hcGFjaGUub3JnPC9zdWJzY3JpYmU+CiAgICAgIDx1bnN1YnNjcmliZT5jb21tb25zLXVzZXItdW5zdWJzY3JpYmVAamFrYXJ0YS5hcGFjaGUub3JnPC91bnN1YnNjcmliZT4KICAgICAgPGFyY2hpdmU+aHR0cDovL21haWwtYXJjaGl2ZXMuYXBhY2hlLm9yZy9leWVicm93c2UvU3VtbWFyaXplTGlzdD9saXN0TmFtZT1jb21tb25zLXVzZXJAamFrYXJ0YS5hcGFjaGUub3JnPC9hcmNoaXZlPgogICAgPC9tYWlsaW5nTGlzdD4KICA8L21haWxpbmdMaXN0cz4KCiAgPGJyYW5jaGVzPgogIDwvYnJhbmNoZXM+CgogIDxkZXZlbG9wZXJzPgoKICAgIDxkZXZlbG9wZXI+CiAgICAgIDxuYW1lPkRhbmllbCBSYWxsPC9uYW1lPgogICAgICA8aWQ+ZGxyPC9pZD4KICAgICAgPGVtYWlsPmRsckBmaW5lbWFsdGNvZGluZy5jb208L2VtYWlsPgogICAgICA8b3JnYW5pemF0aW9uPkNvbGxhYk5ldCwgSW5jLjwvb3JnYW5pemF0aW9uPgogICAgPC9kZXZlbG9wZXI+CgogICAgPGRldmVsb3Blcj4KICAgICAgPG5hbWU+SmFzb24gdmFuIFp5bDwvbmFtZT4KICAgICAgPGlkPmp2YW56eWw8L2lkPgogICAgICA8ZW1haWw+amFzb25AemVucGxleC5jb208L2VtYWlsPgogICAgICA8b3JnYW5pemF0aW9uPlplbnBsZXg8L29yZ2FuaXphdGlvbj4KICAgIDwvZGV2ZWxvcGVyPgoKICAgIDxkZXZlbG9wZXI+CiAgICAgIDxuYW1lPk1hcnRpbiBQb2VzY2hsPC9uYW1lPgogICAgICA8aWQ+bXBvZXNjaGw8L2lkPgogICAgICA8ZW1haWw+bXBvZXNjaGxAbWFybW90LmF0PC9lbWFpbD4KICAgICAgPG9yZ2FuaXphdGlvbj50dWNhbmEuYXQ8L29yZ2FuaXphdGlvbj4KICAgIDwvZGV2ZWxvcGVyPgoKICAgIDxkZXZlbG9wZXI+CiAgICAgIDxuYW1lPmRJb24gR2lsbGFyZDwvbmFtZT4KICAgICAgPGlkPmRpb248L2lkPgogICAgICA8ZW1haWw+ZGlvbkBtdWx0aXRhc2suY29tLmF1PC9lbWFpbD4KICAgICAgPG9yZ2FuaXphdGlvbj5NdWx0aXRhc2sgQ29uc3VsdGluZzwvb3JnYW5pemF0aW9uPgogICAgPC9kZXZlbG9wZXI+CgogICAgPGRldmVsb3Blcj4KICAgICAgPG5hbWU+SGVubmluZyBQLiBTY2htaWVkZWhhdXNlbjwvbmFtZT4KICAgICAgPGlkPmhlbm5pbmc8L2lkPgogICAgICA8ZW1haWw+aHBzQGludGVybWV0YS5kZTwvZW1haWw+CiAgICAgIDxvcmdhbml6YXRpb24+SU5URVJNRVRBIC0gR2VzZWxsc2NoYWZ0IGZ1ZXIgTWVocndlcnRkaWVuc3RlIG1iSDwvb3JnYW5pemF0aW9uPgogICAgICA8dGltZXpvbmU+MjwvdGltZXpvbmU+CiAgICA8L2RldmVsb3Blcj4KCiAgICA8ZGV2ZWxvcGVyPgogICAgICA8bmFtZT5FcmljIFB1Z2g8L25hbWU+CiAgICAgIDxpZD5lcHVnaDwvaWQ+CiAgICAgIDxlbWFpbD5lcHVnaEB1cHN0YXRlLmNvbTwvZW1haWw+CiAgICAgIDxvcmdhbml6YXRpb24+dXBzdGF0ZS5jb208L29yZ2FuaXphdGlvbj4KICAgIDwvZGV2ZWxvcGVyPgoKICAgIDxkZXZlbG9wZXI+CiAgICAgIDxuYW1lPkJyaWFuIEUuIER1bmJhcjwvbmFtZT4KICAgICAgPGlkPmJkdW5iYXI8L2lkPgogICAgICA8ZW1haWw+YmR1bmJhckBkdW5iYXJjb25zdWx0aW5nLm9yZzwvZW1haWw+CiAgICAgIDxvcmdhbml6YXRpb24+ZHVuYmFyY29uc3VsdGluZy5vcmc8L29yZ2FuaXphdGlvbj4KICAgIDwvZGV2ZWxvcGVyPgoKICAgIDxkZXZlbG9wZXI+CiAgICAgIDxuYW1lPkVtbWFudWVsIEJvdXJnPC9uYW1lPgogICAgICA8aWQ+ZWJvdXJnPC9pZD4KICAgICAgPGVtYWlsPnNtYW51eEBsZmpyLm5ldDwvZW1haWw+CiAgICA8L2RldmVsb3Blcj4KCQoJPGRldmVsb3Blcj4KCQk8bmFtZT5PbGl2ZXIgSGVnZXI8L25hbWU+CgkJPGlkPm9oZWdlcjwvaWQ+CgkJPGVtYWlsPm9saXZlci5oZWdlckB0LW9ubGluZS5kZTwvZW1haWw+CgkJPG9yZ2FuaXphdGlvbj5Vbml2ZXJzaXR5IE1hcmJ1cmc8L29yZ2FuaXphdGlvbj4KCQk8dGltZXpvbmU+KzE8L3RpbWV6b25lPgoJPC9kZXZlbG9wZXI+CgogIDwvZGV2ZWxvcGVycz4KCiAgPGNvbnRyaWJ1dG9ycz4KCiAgICA8Y29udHJpYnV0b3I+CiAgICAgIDxuYW1lPkr2cmcgU2NoYWlibGU8L25hbWU+CiAgICAgIDxpZD5qc2NoYWlibGU8L2lkPgogICAgICA8ZW1haWw+am9lcmcuc2NoYWlibGVAZ214LmRlPC9lbWFpbD4KICAgICAgPG9yZ2FuaXphdGlvbj5FbHNhZy1Tb2x1dGlvbnMgQUc8L29yZ2FuaXphdGlvbj4KICAgICAgPHRpbWV6b25lPisxPC90aW1lem9uZT4KICAgIDwvY29udHJpYnV0b3I+CgogICAgPGNvbnRyaWJ1dG9yPgogICAgICA8bmFtZT5Lb25zdGFudGluIFNoYXBvc2huaWtvdjwvbmFtZT4KICAgICAgPGlkPmtzaGFwb3Nobmlrb3Y8L2lkPgogICAgICA8ZW1haWw+a3NoQHNjYW5kLmNvbTwvZW1haWw+CiAgICAgIDxvcmdhbml6YXRpb24+c2NhbmQuY29tPC9vcmdhbml6YXRpb24+CiAgICA8L2NvbnRyaWJ1dG9yPgoKICA8L2NvbnRyaWJ1dG9ycz4KCiAgPGRlcGVuZGVuY2llcz4KICAgIDxkZXBlbmRlbmN5PgogICAgICA8Z3JvdXBJZD5jb21tb25zLWNvbGxlY3Rpb25zPC9ncm91cElkPgogICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWNvbGxlY3Rpb25zPC9hcnRpZmFjdElkPgogICAgICA8dmVyc2lvbj4zLjA8L3ZlcnNpb24+CiAgICAgIDxwcm9wZXJ0aWVzPgogICAgICAgIDx3YXIuYnVuZGxlPnRydWU8L3dhci5idW5kbGU+CiAgICAgIDwvcHJvcGVydGllcz4KICAgIDwvZGVwZW5kZW5jeT4KCiAgICA8ZGVwZW5kZW5jeT4KICAgICAgPGdyb3VwSWQ+Y29tbW9ucy1sYW5nPC9ncm91cElkPgogICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWxhbmc8L2FydGlmYWN0SWQ+CiAgICAgIDx2ZXJzaW9uPjIuMDwvdmVyc2lvbj4KICAgICAgPHByb3BlcnRpZXM+CiAgICAgICAgPHdhci5idW5kbGU+dHJ1ZTwvd2FyLmJ1bmRsZT4KICAgICAgPC9wcm9wZXJ0aWVzPgogICAgPC9kZXBlbmRlbmN5PgoKICAgIDxkZXBlbmRlbmN5PgogICAgICA8Z3JvdXBJZD5kb200ajwvZ3JvdXBJZD4KICAgICAgPGFydGlmYWN0SWQ+ZG9tNGo8L2FydGlmYWN0SWQ+CiAgICAgIDx2ZXJzaW9uPjEuNDwvdmVyc2lvbj4KICAgIDwvZGVwZW5kZW5jeT4KCiAgICA8ZGVwZW5kZW5jeT4KICAgICAgPGdyb3VwSWQ+Y29tbW9ucy1sb2dnaW5nPC9ncm91cElkPgogICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWxvZ2dpbmc8L2FydGlmYWN0SWQ+CiAgICAgIDx2ZXJzaW9uPjEuMC40PC92ZXJzaW9uPgogICAgICA8cHJvcGVydGllcz4KICAgICAgICA8d2FyLmJ1bmRsZT50cnVlPC93YXIuYnVuZGxlPgogICAgICA8L3Byb3BlcnRpZXM+CiAgICA8L2RlcGVuZGVuY3k+CgogICAgPGRlcGVuZGVuY3k+CiAgICAgPGdyb3VwSWQ+Y29tbW9ucy1kaWdlc3RlcjwvZ3JvdXBJZD4KICAgICAgPGFydGlmYWN0SWQ+Y29tbW9ucy1kaWdlc3RlcjwvYXJ0aWZhY3RJZD4KICAgICAgPHZlcnNpb24+MS41PC92ZXJzaW9uPgogICAgICA8cHJvcGVydGllcz4KICAgICAgICA8d2FyLmJ1bmRsZT50cnVlPC93YXIuYnVuZGxlPgogICAgICA8L3Byb3BlcnRpZXM+CiAgICA8L2RlcGVuZGVuY3k+CgogICAgPGRlcGVuZGVuY3k+CiAgICAgIDxncm91cElkPmNvbW1vbnMtYmVhbnV0aWxzPC9ncm91cElkPgogICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWJlYW51dGlscy1jb3JlPC9hcnRpZmFjdElkPgogICAgICA8dmVyc2lvbj4xLjcuMDwvdmVyc2lvbj4KICAgICAgPHByb3BlcnRpZXM+CiAgICAgICAgPHdhci5idW5kbGU+dHJ1ZTwvd2FyLmJ1bmRsZT4KICAgICAgPC9wcm9wZXJ0aWVzPgogICAgPC9kZXBlbmRlbmN5PgoKICAgIDxkZXBlbmRlbmN5PgogICAgICA8Z3JvdXBJZD5jb21tb25zLWJlYW51dGlsczwvZ3JvdXBJZD4KICAgICAgPGFydGlmYWN0SWQ+Y29tbW9ucy1iZWFudXRpbHMtYmVhbi1jb2xsZWN0aW9uczwvYXJ0aWZhY3RJZD4KICAgICAgPHZlcnNpb24+MS43LjA8L3ZlcnNpb24+CiAgICAgIDxwcm9wZXJ0aWVzPgogICAgICAgIDx3YXIuYnVuZGxlPnRydWU8L3dhci5idW5kbGU+CiAgICAgIDwvcHJvcGVydGllcz4KICAgIDwvZGVwZW5kZW5jeT4KCiAgICA8ZGVwZW5kZW5jeT4KICAgCSAgPGdyb3VwSWQ+eGVyY2VzPC9ncm91cElkPgogICAgICA8YXJ0aWZhY3RJZD54ZXJjZXM8L2FydGlmYWN0SWQ+CiAgICAgIDx2ZXJzaW9uPjIuMi4xPC92ZXJzaW9uPgogICAgICA8dXJsPmh0dHA6Ly94bWwuYXBhY2hlLm9yZy94ZXJjZXMyLWovPC91cmw+CiAgICAgIDxwcm9wZXJ0aWVzPgogICAgICAgIDx3YXIuYnVuZGxlPnRydWU8L3dhci5idW5kbGU+CiAgICAgIDwvcHJvcGVydGllcz4KICAgIDwvZGVwZW5kZW5jeT4KCiAgICA8ZGVwZW5kZW5jeT4KICAgCSAgPGdyb3VwSWQ+eG1sLWFwaXM8L2dyb3VwSWQ+CiAgICAgIDxhcnRpZmFjdElkPnhtbC1hcGlzPC9hcnRpZmFjdElkPgogICAgICA8dmVyc2lvbj4yLjAuMjwvdmVyc2lvbj4KICAgICAgPHVybD5odHRwOi8veG1sLmFwYWNoZS5vcmcvY29tbW9ucy88L3VybD4KICAgICAgPHByb3BlcnRpZXM+CiAgICAgICAgPHdhci5idW5kbGU+dHJ1ZTwvd2FyLmJ1bmRsZT4KICAgICAgPC9wcm9wZXJ0aWVzPgogICAgPC9kZXBlbmRlbmN5PgoKICAgIDxkZXBlbmRlbmN5PgogICAgICA8aWQ+c2VydmxldGFwaTwvaWQ+CiAgICAgIDx2ZXJzaW9uPjIuMzwvdmVyc2lvbj4KICAgIDwvZGVwZW5kZW5jeT4KCiAgICA8IS0tIE5lZWRlZCBmb3IgdGVzdGluZyAtLT4KCiAgICA8ZGVwZW5kZW5jeT4KICAgICAgPGdyb3VwSWQ+c3BpY2U8L2dyb3VwSWQ+CiAgICAgIDxhcnRpZmFjdElkPnNwaWNlLWpuZGlraXQ8L2FydGlmYWN0SWQ+CiAgICAgIDx2ZXJzaW9uPjEuMTwvdmVyc2lvbj4KICAgIDwvZGVwZW5kZW5jeT4KCiAgICA8ZGVwZW5kZW5jeT4KICAgICAgPGdyb3VwSWQ+Y29tbW9ucy1kYmNwPC9ncm91cElkPgogICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLWRiY3A8L2FydGlmYWN0SWQ+CiAgICAgIDx2ZXJzaW9uPjEuMTwvdmVyc2lvbj4KICAgIDwvZGVwZW5kZW5jeT4KCiAgICA8ZGVwZW5kZW5jeT4KICAgICAgPGdyb3VwSWQ+Y29tbW9ucy1wb29sPC9ncm91cElkPgogICAgICA8YXJ0aWZhY3RJZD5jb21tb25zLXBvb2w8L2FydGlmYWN0SWQ+CiAgICAgIDx2ZXJzaW9uPjEuMTwvdmVyc2lvbj4KICAgIDwvZGVwZW5kZW5jeT4KCiAgICA8ZGVwZW5kZW5jeT4KICAgICAgPGdyb3VwSWQ+aHNxbGRiPC9ncm91cElkPgogICAgICA8YXJ0aWZhY3RJZD5oc3FsZGI8L2FydGlmYWN0SWQ+CiAgICAgIDx2ZXJzaW9uPjEuNy4yLjI8L3ZlcnNpb24+CiAgICA8L2RlcGVuZGVuY3k+CgogICAgPGRlcGVuZGVuY3k+CiAgICAgIDxncm91cElkPmRidW5pdDwvZ3JvdXBJZD4KICAgICAgPGFydGlmYWN0SWQ+ZGJ1bml0PC9hcnRpZmFjdElkPgogICAgICA8dmVyc2lvbj4yLjE8L3ZlcnNpb24+CiAgICA8L2RlcGVuZGVuY3k+CgogICAgPGRlcGVuZGVuY3k+CiAgICAgIDxncm91cElkPmp1bml0PC9ncm91cElkPgogICAgICA8YXJ0aWZhY3RJZD5qdW5pdDwvYXJ0aWZhY3RJZD4KICAgICAgPHZlcnNpb24+My44LjE8L3ZlcnNpb24+CiAgICA8L2RlcGVuZGVuY3k+CgogICAgPGRlcGVuZGVuY3k+CiAgICAgIDxncm91cElkPmp1bml0LWFkZG9uczwvZ3JvdXBJZD4KICAgICAgPGFydGlmYWN0SWQ+anVuaXQtYWRkb25zPC9hcnRpZmFjdElkPgogICAgICA8dmVyc2lvbj4xLjQ8L3ZlcnNpb24+CiAgICA8L2RlcGVuZGVuY3k+CgogICAgPGRlcGVuZGVuY3k+CiAgICAgIDxpZD5tb2Nrb2JqZWN0czptb2Nrb2JqZWN0cy1jb3JlPC9pZD4KICAgICAgPHZlcnNpb24+MC4wOTwvdmVyc2lvbj4KICAgIDwvZGVwZW5kZW5jeT4KCiAgICA8ZGVwZW5kZW5jeT4KICAgICAgPGlkPm1vY2tvYmplY3RzOm1vY2tvYmplY3RzLWpkazEuNC1qMmVlMS4zPC9pZD4KICAgICAgPHZlcnNpb24+MC4wOTwvdmVyc2lvbj4KICAgIDwvZGVwZW5kZW5jeT4KCiAgICA8IS0tIEZha2UgZGVwZW5kZW5jeSB0byB0ZXN0IGxvYWRpbmcgY29uZmlndXJhdGlvbiBmaWxlcyBmcm9tIGEgSkFSIC0tPgogICAgPGRlcGVuZGVuY3k+CiAgICAgIDxpZD5yZXNvdXJjZXM8L2lkPgogICAgICA8dmVyc2lvbj4xLjA8L3ZlcnNpb24+CiAgICA8L2RlcGVuZGVuY3k+CgogICAgPGRlcGVuZGVuY3k+CiAgICAgIDxncm91cElkPm1hdmVuLXBsdWdpbnM8L2dyb3VwSWQ+CiAgICAgIDxhcnRpZmFjdElkPm1hdmVuLXRhc2tzLXBsdWdpbjwvYXJ0aWZhY3RJZD4KICAgICAgPHZlcnNpb24+MS4xLjA8L3ZlcnNpb24+CiAgICAgIDx1cmw+aHR0cDovL21hdmVuLXBsdWdpbnMuc291cmNlZm9yZ2UubmV0L21hdmVuLXRhc2tzLXBsdWdpbi88L3VybD4KICAgICAgPHR5cGU+cGx1Z2luPC90eXBlPgogICAgPC9kZXBlbmRlbmN5PgoKICAgIDxkZXBlbmRlbmN5PgogICAgICA8Z3JvdXBJZD5tYXZlbi1wbHVnaW5zPC9ncm91cElkPgogICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1maW5kYnVncy1wbHVnaW48L2FydGlmYWN0SWQ+CiAgICAgIDx2ZXJzaW9uPjAuOC40PC92ZXJzaW9uPgogICAgICA8dXJsPmh0dHA6Ly9tYXZlbi1wbHVnaW5zLnNvdXJjZWZvcmdlLm5ldC9tYXZlbi1maW5kYnVncy1wbHVnaW4vPC91cmw+CiAgICAgIDx0eXBlPnBsdWdpbjwvdHlwZT4KICAgIDwvZGVwZW5kZW5jeT4KCiAgPC9kZXBlbmRlbmNpZXM+CgogIDxidWlsZD4KICAgIDxuYWdFbWFpbEFkZHJlc3M+Y29tbW9ucy1kZXZAamFrYXJ0YS5hcGFjaGUub3JnPC9uYWdFbWFpbEFkZHJlc3M+CgogICAgPHNvdXJjZURpcmVjdG9yeT5zcmMvamF2YTwvc291cmNlRGlyZWN0b3J5PgogICAgPHVuaXRUZXN0U291cmNlRGlyZWN0b3J5PnNyYy90ZXN0PC91bml0VGVzdFNvdXJjZURpcmVjdG9yeT4KICAgIDxpbnRlZ3JhdGlvblVuaXRUZXN0U291cmNlRGlyZWN0b3J5Lz4KICAgIDxhc3BlY3RTb3VyY2VEaXJlY3Rvcmllcy8+CgogICAgPCEtLSBVbml0IHRlc3QgY2xhc3NlcyAtLT4KICAgIDx1bml0VGVzdD4KICAgICAgPGluY2x1ZGVzPgogICAgICAgIDxpbmNsdWRlPioqLypUZXN0Ki5qYXZhPC9pbmNsdWRlPgogICAgICA8L2luY2x1ZGVzPgogICAgICA8ZXhjbHVkZXM+CiAgICAgICAgPGV4Y2x1ZGU+KiovVGVzdEJhc2VQcm9wZXJ0aWVzQ29uZmlndXJhdGlvbi5qYXZhPC9leGNsdWRlPgogICAgICAgIDxleGNsdWRlPioqL05vblN0cmluZ1Rlc3RIb2xkZXIuamF2YTwvZXhjbHVkZT4KICAgICAgICA8ZXhjbHVkZT4qKi9UZXN0QWJzdHJhY3RDb25maWd1cmF0aW9uLmphdmE8L2V4Y2x1ZGU+CiAgICAgIDwvZXhjbHVkZXM+CiAgICAgIDxyZXNvdXJjZXM+CiAgICAgICAgPHJlc291cmNlPgogICAgICAgICAgPGRpcmVjdG9yeT5jb25mPC9kaXJlY3Rvcnk+CiAgICAgICAgICA8aW5jbHVkZXM+CiAgICAgICAgICAgIDxpbmNsdWRlPioueG1sPC9pbmNsdWRlPgogICAgICAgICAgPC9pbmNsdWRlcz4KICAgICAgICA8L3Jlc291cmNlPgogICAgICAgIDxyZXNvdXJjZT4KICAgICAgICAgIDxkaXJlY3Rvcnk+Y29uZjwvZGlyZWN0b3J5PgogICAgICAgICAgPGluY2x1ZGVzPgogICAgICAgICAgICA8aW5jbHVkZT50ZXN0Q2xhc3NwYXRoLnByb3BlcnRpZXM8L2luY2x1ZGU+CiAgICAgICAgICAgIDxpbmNsdWRlPnRlc3RkYi5zY3JpcHQ8L2luY2x1ZGU+CiAgICAgICAgICAgIDxpbmNsdWRlPioucHJvcGVydGllczwvaW5jbHVkZT4KICAgICAgICAgICAgPGluY2x1ZGU+Ki5kdGQ8L2luY2x1ZGU+CiAgICAgICAgICA8L2luY2x1ZGVzPgogICAgICAgIDwvcmVzb3VyY2U+CiAgICAgICAgPHJlc291cmNlPgogICAgICAgICAgPGRpcmVjdG9yeT5jb25mPC9kaXJlY3Rvcnk+CiAgICAgICAgICA8dGFyZ2V0UGF0aD5vcmcvYXBhY2hlL2NvbW1vbnMvY29uZmlndXJhdGlvbjwvdGFyZ2V0UGF0aD4KICAgICAgICAgIDxpbmNsdWRlcz4KICAgICAgICAgICAgPGluY2x1ZGU+dGVzdC5wcm9wZXJ0aWVzPC9pbmNsdWRlPgogICAgICAgICAgICA8aW5jbHVkZT5pbmNsdWRlLnByb3BlcnRpZXM8L2luY2x1ZGU+CiAgICAgICAgICA8L2luY2x1ZGVzPgogICAgICAgIDwvcmVzb3VyY2U+CiAgICAgICAgPHJlc291cmNlPgogICAgICAgICAgPGRpcmVjdG9yeT5jb25mL2NvbmZpZzwvZGlyZWN0b3J5PgogICAgICAgICAgPHRhcmdldFBhdGg+Y29uZmlnPC90YXJnZXRQYXRoPgogICAgICAgICAgPGluY2x1ZGVzPgogICAgICAgICAgICA8aW5jbHVkZT4qKi8qLnByb3BlcnRpZXM8L2luY2x1ZGU+CiAgICAgICAgICA8L2luY2x1ZGVzPgogICAgICAgIDwvcmVzb3VyY2U+CiAgICAgIDwvcmVzb3VyY2VzPgogICAgPC91bml0VGVzdD4KCiAgICA8cmVzb3VyY2VzPgogICAgICA8cmVzb3VyY2U+CiAgICAgICAgPGRpcmVjdG9yeT5jb25mPC9kaXJlY3Rvcnk+CiAgICAgICAgPGluY2x1ZGVzPgogICAgICAgICAgPGluY2x1ZGU+ZGlnZXN0ZXJSdWxlcy54bWw8L2luY2x1ZGU+CiAgICAgICAgICA8aW5jbHVkZT5wcm9wZXJ0aWVzLmR0ZDwvaW5jbHVkZT4KICAgICAgICA8L2luY2x1ZGVzPgogICAgICA8L3Jlc291cmNlPgogICAgPC9yZXNvdXJjZXM+CiAgPC9idWlsZD4KICA8cmVwb3J0cz4KICAgIDxyZXBvcnQ+bWF2ZW4tamRlcGVuZC1wbHVnaW48L3JlcG9ydD4KICAgIDxyZXBvcnQ+bWF2ZW4tY2hlY2tzdHlsZS1wbHVnaW48L3JlcG9ydD4KICAgIDxyZXBvcnQ+bWF2ZW4tY2hhbmdlcy1wbHVnaW48L3JlcG9ydD4KICAgIDxyZXBvcnQ+bWF2ZW4tY2hhbmdlbG9nLXBsdWdpbjwvcmVwb3J0PgogICAgPHJlcG9ydD5tYXZlbi1maWxlLWFjdGl2aXR5LXBsdWdpbjwvcmVwb3J0PgogICAgPHJlcG9ydD5tYXZlbi1kZXZlbG9wZXItYWN0aXZpdHktcGx1Z2luPC9yZXBvcnQ+CiAgICA8cmVwb3J0Pm1hdmVuLWphdmFkb2MtcGx1Z2luPC9yZXBvcnQ+CiAgICA8cmVwb3J0Pm1hdmVuLWp4ci1wbHVnaW48L3JlcG9ydD4KICAgIDxyZXBvcnQ+bWF2ZW4tanVuaXQtcmVwb3J0LXBsdWdpbjwvcmVwb3J0PgogICAgPHJlcG9ydD5tYXZlbi10YXNrbGlzdC1wbHVnaW48L3JlcG9ydD4KICAgIDxyZXBvcnQ+bWF2ZW4tcG1kLXBsdWdpbjwvcmVwb3J0PgogICAgPHJlcG9ydD5tYXZlbi1zaW1pYW4tcGx1Z2luPC9yZXBvcnQ+CiAgICA8cmVwb3J0Pm1hdmVuLWZhcS1wbHVnaW48L3JlcG9ydD4KICAgIDxyZXBvcnQ+bWF2ZW4tamNvdmVyYWdlLXBsdWdpbjwvcmVwb3J0PgogICAgPHJlcG9ydD5tYXZlbi10YXNrcy1wbHVnaW48L3JlcG9ydD4KICAgIDxyZXBvcnQ+bWF2ZW4tZmluZGJ1Z3MtcGx1Z2luPC9yZXBvcnQ+CiAgPC9yZXBvcnRzPgo8L3Byb2plY3Q+Cg==