PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IS0tCiAKIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZQogY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoCiB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuCiBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZSB0byBZb3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMAogKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgKIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAKIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogCiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KIAogLS0+Cjxwcm9qZWN0IG5hbWU9IkVkZ2VudCI+CgogIDxza2luPgogICAgPGdyb3VwSWQ+aW8uZ2l0aHViLmRldmFjZnIubWF2ZW4uc2tpbnM8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5yZWZsb3ctbWF2ZW4tc2tpbjwvYXJ0aWZhY3RJZD4KICAgIDx2ZXJzaW9uPjEuNS4wPC92ZXJzaW9uPgogIDwvc2tpbj4KCiAgPCEtLSBIaWRlIHRoZSBwdWJsaXNoIGRhdGUgYXMgdGhpcyB3aWxsIGNhdXNlIGNoYW5nZXMgb24gZXZlcnkgZ2VuZXJhdGVkIHBhZ2UgZXZlcnkgZGF5IC0tPgogIDxwdWJsaXNoRGF0ZSBwb3NpdGlvbj0ibm9uZSIvPgogIDwhLS0gSGlkZSB0aGUgdmVyc2lvbiBhcyB3ZSBhcmUgdXN1YWxseSBkZXBsb3lpbmcgdGhlIGRldmVsb3AgdmVyc2lvbiAtLT4KICA8dmVyc2lvbiBwb3NpdGlvbj0ibm9uZSIgLz4KCiAgPCEtLQogIERldGFpbHMgb24gaG93IHRvIGNvbmZpZ3VyZSB0aGUgcmVmbG93IHNraW46CiAgaHR0cDovL2FuZHJpdXN2ZWx5a2lzLmdpdGh1Yi5pby9yZWZsb3ctbWF2ZW4tc2tpbi9za2luLwotLT4KICAgIDxjdXN0b20+CiAgICAgICAgPHJlZmxvd1NraW4+CiAgICAgICAgICAgIDx0aGVtZT5ib290c3dhdGNoLWNlcnVsZWFuPC90aGVtZT4KICAgICAgICAgICAgPHRpdGxlVGVtcGxhdGU+QXBhY2hlIEVkZ2VudK4gKEluY3ViYXRpbmcpIC0gJTIkczwvdGl0bGVUZW1wbGF0ZT4KICAgICAgICAgICAgPHNsb2dhbiBwb3NpdGlvbj0iYmFubmVyUmlnaHQiPkFjY2VsZXJhdGluZyBBbmFseXRpY3MgYXQgdGhlIEVkZ2U8L3Nsb2dhbj4KICAgICAgICAgICAgPHRvYz50b3A8L3RvYz4KICAgICAgICAgICAgPHRvY1RvcEZsYXR0ZW4+dHJ1ZTwvdG9jVG9wRmxhdHRlbj4KICAgICAgICAgICAgPHRvcE5hdj5yZXBvcnRzfG1vZHVsZXN8cGFyZW50PC90b3BOYXY+CiAgICAgICAgICAgIDxib3R0b21OYXY+CiAgICAgICAgICAgICAgICA8Y29sdW1uPnJlcG9ydHM8L2NvbHVtbj4KICAgICAgICAgICAgICAgIDxjb2x1bW4+bW9kdWxlczwvY29sdW1uPgogICAgICAgICAgICAgICAgPGNvbHVtbj5wYXJlbnQ8L2NvbHVtbj4KICAgICAgICAgICAgPC9ib3R0b21OYXY+CiAgICAgICAgICAgIDxicmFuZD4KICAgICAgICAgICAgICAgIDxuYW1lPkFwYWNoZSBFZGdlbnQgKEluY3ViYXRpbmcpPC9uYW1lPgogICAgICAgICAgICAgICAgPGhyZWY+aHR0cHM6Ly9lZGdlbnQuYXBhY2hlLm9yZy88L2hyZWY+CiAgICAgICAgICAgIDwvYnJhbmQ+CiAgICAgICAgICAgIDxib3R0b21EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIEFwYWNoZSBFZGdlbnQgaXMgYW4gZWZmb3J0IHVuZGVyZ29pbmcgSW5jdWJhdGlvbiBhdCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KICAgICAgICAgICAgICAgIChBU0YpLCBzcG9uc29yZWQgYnkgdGhlIEluY3ViYXRvci4gSW5jdWJhdGlvbiBpcyByZXF1aXJlZCBvZiBhbGwgbmV3bHkgYWNjZXB0ZWQKICAgICAgICAgICAgICAgIHByb2plY3RzIHVudGlsIGEgZnVydGhlciByZXZpZXcgaW5kaWNhdGVzIHRoYXQgdGhlIGluZnJhc3RydWN0dXJlLCBjb21tdW5pY2F0aW9ucywKICAgICAgICAgICAgICAgIGFuZCBkZWNpc2lvbiBtYWtpbmcgcHJvY2VzcyBoYXZlIHN0YWJpbGl6ZWQgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIG90aGVyCiAgICAgICAgICAgICAgICBzdWNjZXNzZnVsIEFTRiBwcm9qZWN0cy4gV2hpbGUgaW5jdWJhdGlvbiBzdGF0dXMgaXMgbm90IG5lY2Vzc2FyaWx5IGEgcmVmbGVjdGlvbgogICAgICAgICAgICAgICAgb2YgdGhlIGNvbXBsZXRlbmVzcyBvciBzdGFiaWxpdHkgb2YgdGhlIGNvZGUsIGl0IGRvZXMgaW5kaWNhdGUgdGhhdCB0aGUgcHJvamVjdAogICAgICAgICAgICAgICAgaGFzIHlldCB0byBiZSBmdWxseSBlbmRvcnNlZCBieSB0aGUgQVNGLgogICAgICAgICAgICA8L2JvdHRvbURlc2NyaXB0aW9uPgogICAgICAgICAgICA8YnJlYWRjcnVtYnM+dHJ1ZTwvYnJlYWRjcnVtYnM+CiAgICAgICAgICAgIDxoaWdobGlnaHRKcz50cnVlPC9oaWdobGlnaHRKcz4KICAgICAgICAgICAgPHBhZ2VzPgogICAgICAgICAgICAgICAgPGRldmVsb3Blci1pbmZvPgogICAgICAgICAgICAgICAgICAgIDx0b2M+c2lkZWJhcjwvdG9jPgogICAgICAgICAgICAgICAgPC9kZXZlbG9wZXItaW5mbz4KICAgICAgICAgICAgPC9wYWdlcz4KICAgICAgICA8L3JlZmxvd1NraW4+CiAgICA8L2N1c3RvbT4KCiAgICA8YmFubmVyTGVmdD4KICAgICAgICA8bmFtZT5BcGFjaGUgRWRnZW50IChpbmN1YmF0aW5nKTwvbmFtZT4KICAgICAgICA8c3JjPmh0dHBzOi8vZWRnZW50LmFwYWNoZS5vcmcvaW1nL2FwYWNoZV9sb2dvLnBuZzwvc3JjPgogICAgICAgIDxocmVmPmh0dHBzOi8vZWRnZW50LmFwYWNoZS5vcmcvPC9ocmVmPgogICAgPC9iYW5uZXJMZWZ0PgoKICAgIDxiYW5uZXJSaWdodD4KICAgICAgICA8bmFtZT5BcGFjaGUgSW5jdWJhdG9yPC9uYW1lPgogICAgICAgIDxzcmM+aHR0cHM6Ly9pbmN1YmF0b3IuYXBhY2hlLm9yZy9pbWFnZXMvaW5jdWJhdG9yX2ZlYXRoZXJfZWdnX2xvZ29fc20ucG5nPC9zcmM+CiAgICAgICAgPGhyZWY+aHR0cDovL2luY3ViYXRvci5hcGFjaGUub3JnLzwvaHJlZj4KICAgIDwvYmFubmVyUmlnaHQ+CgogICAgPGJvZHk+CiAgICAgICAgPGxpbmtzPgogICAgICAgICAgICA8aXRlbSBuYW1lPSJXaWtpIiBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L0VER0VOVCIvPgogICAgICAgICAgICA8aXRlbSBuYW1lPSJJc3N1ZXMiIGhyZWY9Imh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9wcm9qZWN0cy9FREdFTlQiLz4KICAgICAgICAgICAgPGl0ZW0gbmFtZT0iQ0kiIGhyZWY9Imh0dHBzOi8vYnVpbGRzLmFwYWNoZS5vcmcvdmlldy9FLUcvdmlldy9FZGdlbnQvIi8+CiAgICAgICAgPC9saW5rcz4KICAgICAgICA8bWVudSByZWY9InJlcG9ydHMiIGluaGVyaXQ9InRvcCIvPgogICAgICAgIDxtZW51IHJlZj0icGFyZW50IiBpbmhlcml0PSJ0b3AiLz4KICAgICAgICA8bWVudSByZWY9Im1vZHVsZXMiIGluaGVyaXQ9InRvcCIvPgogICAgPC9ib2R5PgoKPC9wcm9qZWN0Pg==