PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IS0tCiAgICAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlCiAgIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aAogICB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuCiAgIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIFlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wCiAgICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoCiAgIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotLT4KPGRvY3VtZW50PgogIDxwcm9wZXJ0aWVzPgogICAgPHRpdGxlPkNvbnRyaWJ1dG9yczwvdGl0bGU+CiAgICA8YXV0aG9yIGVtYWlsPSIiPkFwYWNoZSBBbnQgUE1DPC9hdXRob3I+CiAgPC9wcm9wZXJ0aWVzPgoKICA8Ym9keT4KICAgIDxzZWN0aW9uIG5hbWU9IlByb2plY3QgTWFuYWdlbWVudCBDb21taXR0ZWUiPgoKICAgICAgPHN1YnNlY3Rpb24gbmFtZT0iQWN0aXZlIE1lbWJlcnMiPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8Yj5CcnVjZSBBdGhlcnRvbjwvYj4gKGJydWNlIGF0IGNhbGxlbmlzaC5jb20gLSA8YSBocmVmPSJodHRwOi8vd3d3LmNhbGxlbmlzaC5jb20vfmJydWNlIj5odHRwOi8vd3d3LmNhbGxlbmlzaC5jb20vfmJydWNlPC9hPikKPGJyLz4KQ3VycmVudGx5IGEgU3lzdGVtcyBBcmNoaXRlY3Qgd2l0aCBBdnVlIFRlY2hub2xvZ2llcywgQnJ1Y2UgaGFzIGJlZW4Kd29ya2luZyB3aXRoIEphdmEgc2luY2UgdmVyc2lvbiAxLjBhMi4gSGUgYWxzbyBjbGFpbXMgdG8gYmUgb25lIG9mIHRoZSBmaXJzdApwZW9wbGUgdG8gbWFyayB1cCBhIEZBUSB3aXRoIEhUTUwsIGZvciBhIHdlYiBicm93c2VyIG9mIHRoZSBkaXN0YW50IHBhc3QKY2FsbGVkIENlbGxvLgogICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxiPlN0ZXBoYW5lIEJhaWxsaWV6PC9iPjxici8+CiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgPGI+TWF0dCBCZW5zb248L2I+PGJyLz4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8Yj5TdGVmYW4gQm9kZXdpZzwvYj4gKHN0ZWZhbi5ib2Rld2lnIGF0IGZyZWVuZXQuZGUgLQogICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3N0ZWZhbi5zYW1hZmxvc3QuZGUvIj5odHRwOi8vc3RlZmFuLnNhbWFmbG9zdC5kZS88L2E+KQo8YnIvPgo8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxiPkRvbWluaXF1ZSBEZXZpZW5uZTwvYj4gKGRkZXZpZW5uZSBhdCBhcGFjaGUub3JnKQo8YnIvPgpEb21pbmlxdWUgaGFzIGJlZW4gaW52b2x2ZWQgbm9uLXN0b3Agd2l0aCB0aGUgQW50IHVzZXIgY29tbXVuaXR5IHNpbmNlCnRoZSAxLjQgZGF5cywgdHJ5aW5nIHdpdGhvdXQgc3VjY2VzcyB0byBhbnN3ZXIgcG9zdHMgYXMgd2VsbCBvciBhcyBvZnRlbgphcyBEaWFuZSBIb2x0IGFmdGVyIHNoZSBsZWZ0IHRoZSB1c2VyIGxpc3QuIEhlIGlzIG9waW5pb25hdGVkLCBhbHdheXMKc3RyaXZpbmcgZm9yIHRoZSBiZXN0IHBvc3NpYmxlIGRlc2lnbi4gV2hpbGUgYXQgTGFuZG1hcmsgR3JhcGhpY3MsIGhlCmRlc2lnbmVkIGFuZCBpbXBsZW1lbnRlZCBsYXJnZSBBbnQvQ3BwVGFza3MgYnVpbGRzIGZvciBtaXhlZCBKYXZhL0MrKyBwcm9qZWN0cy4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8Yj5FcmlrIEhhdGNoZXI8L2I+IChlaGF0Y2hlciBhdCBhcGFjaGUub3JnKQo8YnIvPgpFcmlrIGlzIHRoZSBjby1hdXRob3Igb2YgPGEgaHJlZj0iaHR0cDovL3d3dy5tYW5uaW5nLmNvbS9oYXRjaGVyIj4KSmF2YSBEZXZlbG9wbWVudCB3aXRoIEFudDwvYT4gYW5kIHNwZWFrcyBvbiBBbnQgYW5kIG90aGVyIHRvcGljcyBhdAo8YSBocmVmPSJodHRwOi8vd3d3Lm5vZmx1ZmZqdXN0c3R1ZmYuY29tIj5ObyBGbHVmZiwgSnVzdCBTdHVmZgpzeW1wb3NpdW1zPC9hPiBhcyB3ZWxsIGFzIG90aGVyIHZlbnVlcy4gIEVyaWsgaXMgdGhlIFByZXNpZGVudCBvZgo8YSBocmVmPSJodHRwOi8vd3d3LmVoYXRjaGVyc29sdXRpb25zLmNvbSI+ZUhhdGNoZXIgU29sdXRpb25zLCBJbmM8L2E+Lgo8L3A+CiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgPGI+TWFydGlqbiAoSi5NLikgS3J1aXRob2Y8L2I+IChhbnQgYXQga3J1aXRob2YgeHM0YWxsIG5sKQo8YnIvPgpNYXJ0aWpuIEtydWl0aG9mIGlzIGEgc3lzdGVtIGVuZ2luZWVyIHdvcmtpbmcgd2l0aCBhbmQgb24gSmF2YSBwcm9kdWN0cwppbiBhIHRlbGVjb21tdW5pY2F0aW9uIG5ldHdvcmsgc2V0dGluZy4KPC9wPgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxiPkFudG9pbmUgTGV2eS1MYW1iZXJ0PC9iPiAoYW50b2luZSBhdCBhcGFjaGUub3JnKQo8YnIvPgpBbnRvaW5lIGlzIHdvcmtpbmcgYXMgYSBzb2Z0d2FyZSBlbmdpbmVlciBmb3IgCjxhIGhyZWY9Imh0dHA6Ly93d3cuYXJpZWxwYXJ0bmVycy5jb20iPkFyaWVsIFBhcnRuZXJzPC9hPi4KSGUgaXMgc3BlY2lhbGl6ZWQgaW4gYnVpbGRzIGFuZCBhdXRvbWF0aW9uIG9mIGRlcGxveW1lbnQgcHJvY2Vzc2VzLgoKICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgPGI+U3RldmUgTG91Z2hyYW48L2I+PGJyLz4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8Yj5Db25vciBNYWNOZWlsbDwvYj4gKGNvbm9yIGF0IGNvcnRleGVidXNpbmVzcy5jb20uYXUpCjxici8+CkNvbm9yIGlzIGEgc2VuaW9yIGRldmVsb3BlciBhdCBDb3J0ZXggZUJ1c2luZXNzLCB3aGVyZSBoZSBkZXZlbG9wcwpKMkVFIGJhc2VkIHN5c3RlbXMuIEluIGhpcyBzcGFyZSB0aW1lIGhlIGhlbHBzIHdpdGggdGhlIGRldmVsb3BtZW50IG9mCnRoZSBBbnQgYnVpbGQgdG9vbC4gIEhlIGlzIGFsc28gc2VydmluZyBhcyB0aGUgQ2hhaXJtYW4gb2YgdGhpcyBQTUMuCjwvcD4KCiAgICAgICAgICAgIDxwPgoJCQkJPGI+SmFuIE1hdOhybmU8L2I+IChqaG0gYXQgYXBhY2hlLm9yZykKPGJyLz4KSmFuIGlzIGNvbnN1bHRhbnQgZm9yIE9PQS9EIGluIHRoZSBjb21wdXRlciBjZW50cmUgb2YgdGhlIGdvdmVybm1lbnQKb2YgTm9ydGhyaGluZSBXZXN0ZmFsaWEgLyBHZXJtYW55LgogICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxiPlBldGVyIFJlaWxseTwvYj48YnIvPgogICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuaW50ZXJ0d2luZ2x5Lm5ldC8iPlNhbSBSdWJ5PC9hPgogICAgICAgICAgICAgICAgPC9iPgogICAgICAgICAgICAgICAgKHJ1YnlzIGF0IHVzLmlibS5jb20pCjxici8+ClNhbSB0YWtlcyBhIHBlcnZlcnNlIHBsZWFzdXJlIGluIGludGVncmF0aW5nIGRpc3BhcmF0ZSB0aGluZ3MuICBIZSBpcwphIG1lbWJlciBvZiB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5waHAubmV0L2NyZWRpdHMucGhwIj5QSFAgZ3JvdXA8L2E+LCBBcGFjaGUKPGEgaHJlZj0iaHR0cDovL3htbC5hcGFjaGUub3JnL3dob3dlYXJlLmh0bWwiPlhNTCBQTUM8L2E+LCBBcGFjaGUKc3BvbnNvciBmb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy9zb2FwIj54bWwtc29hcDwvYT4gc3VicHJvamVjdAphbmQgY29udmVuZXIgb2YgPGEgaHJlZj0iaHR0cDovL3d3dy5lY21hLmNoIj5FQ01BPC9hPiBUQzM5IFRHMy4KPC9wPgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxiPk1hZ2VzaCBVbWFzYW5rYXI8L2I+ICh1bWFnZXNoIGF0IGFwYWNoZS5vcmcpCjxici8+Ck1hZ2VzaCwgUHJlc2lkZW50IG9mIDxhIGhyZWY9J2h0dHA6Ly93d3cubWV0YW1hY2hzb2x1dGlvbnMuY29tJz5NZXRhbWFjaCBTb2x1dGlvbnM8L2E+LCAKYW4gQXRsYW50YS1iYXNlZCB0ZWNobm9sb2d5LW1hbmFnZW1lbnQgY29uc3VsdGFuY3ksIGhhcyByZWNlbnRseSBsYXVuY2hlZCAKPGEgaHJlZj0naHR0cDovL3d3dy53aW5lZGluLmNvbSc+V2luZWRJbi5jb208L2E+IGZvciB3aW5lLWxvdmVycyB0byBwYWlyIGZvb2QgYW5kIHdpbmUuIAo8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxiPkNocmlzdG9waCBXaWxoZWxtczwvYj4gKGNocmlzdG9waC53aWxoZWxtcyBhdCB0LW9ubGluZS5kZSkKPGJyLz4KQ2hyaXN0b3BoIHdvcmtzIGFzIHNvZnR3YXJlIGVuZ2luZWVyIGF0IHRoZSB3b3JsZCdzIGJpZ2dlc3QgdHJhdmVsIGNvbXBhbnkKPGEgaHJlZj0iaHR0cDovL3d3dy50dWkuY29tIj5UVUk8L2E+LiBIaXMgcGFzc2lvbiBhcmUgYWxsIFVJIHJlbGF0ZWQgdGhpbmdzIHNvCmF0IHRoZSBBbnQtUHJvamVjdCBoZSB0YWtlcyBjYXJlIG9mIEFudGlkb3RlIC0gdGhlIEFudCBHVUkuCiAgICAgICAgICAgIDwvcD4KPHA+CiAgPGI+S2V2aW4gSmFja3NvbjwvYj4gKGZvYW1kaW5vIGF0IGdtYWlsLmNvbSk8YnIvPgo8L3A+CgogICAgICA8L3N1YnNlY3Rpb24+CiAgICAgIDxzdWJzZWN0aW9uIG5hbWU9IkVtZXJpdHVzIE1lbWJlcnMiPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8Yj5KYW1lcyBEdW5jYW4gRGF2aWRzb248L2I+IChkdW5jYW4gYXQgeDE4MC5uZXQgLSA8YSBocmVmPSJodHRwOi8veDE4MC5uZXQvIj5odHRwOi8veDE4MC5uZXQvPC9hPikKPGJyLz4KCkJ5IGRheSwgRHVuY2FuIHdvcmtzIGluIHRoZSBPcGVuIFNvdXJjZSBQcm9ncmFtIE9mZmljZSBhdCBTdW4KTWljcm9zeXN0ZW1zIHdoZXJlIGhlIGhlbHBzIHZhcmlvdXMgT3BlbiBTb3VyY2UgZWZmb3J0cyB3aXRoaW4gU3VuCiZxdW90O2RvIHRoZSByaWdodCB0aGluZyZxdW90Oy4gUHJldmlvdXNseSBhdCBTdW4gaGUgd2FzIHJlc3BvbnNpYmxlCmZvciB0aGUgU2VydmxldCBBUEkgU3BlY2lmaWNhdGlvbnMgMi4xIGFuZCAyLjIgYXMgd2VsbCBhcyB0aGUgSmF2YSBBUEkKZm9yIFhNTCBQYXJzaW5nIDEuMCBhbmQgd2FzIHRoZSBvcmlnaW5hbCBhdXRob3Igb2YgVG9tY2F0IGFuZCBBbnQuIEhlCndhcyBvbmUgb2YgdGhlIHJhYmJsZS1yb3VzZXJzIHdpdGhpbiBTdW4gdGhhdCBoZWxwZWQgbWFrZSB0aGUgSmFrYXJ0YQpQcm9qZWN0IGEgcmVhbGl0eSBhbmQgc2VydmVkIGFzIHRoZSBmaXJzdCBDaGFpcm1hbiBvZiB0aGUgSmFrYXJ0YSBQTUMuCjwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgPGI+RGlhbmUgSG9sdDwvYj48YnIvPgogICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxiPkRvbmFsZCBMZXNsaWU8L2I+PGJyLz4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8Yj5Db3N0aW4gTW9ub2xhY2hlPC9iPjxici8+CiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgPGI+Sm9uIFNrZWV0PC9iPjxici8+CiAgICAgICAgICAgIDwvcD4KCiAgICAgIDwvc3Vic2VjdGlvbj4KCiAgICA8L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBuYW1lPSJDb21taXR0ZXJzIj4KCiAgICAgIDxzdWJzZWN0aW9uIG5hbWU9IkFjdGl2ZSBDb21taXR0ZXJzIj4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgPGI+U3RldmUgQ29oZW48L2I+CiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgPGI+Sm9zZSBBbGJlcnRvIEZlcm5hbmRlejwvYj4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8Yj5KZXNzZSBHbGljazwvYj4gKGplc3NlIGRvdCBnbGljayBhdCBzdW4gZG90IGNvbSkKPGJyLz4KSmVzc2UgaGFzIGJlZW4gdXNpbmcgSmF2YSBzaW5jZSAxOTk4IGFuZCBqb2luZWQgU3VuIE1pY3Jvc3lzdGVtcyBhcwpwYXJ0IG9mIHRoZSBjb21wYW55IHRoYXQgcHJvZHVjZWQgdGhlIE5ldEJlYW5zIElERS4gQWZ0ZXIgZGlzY292ZXJpbmcKQW50IGluIHRoZSAxLjIgZGF5cywgaGUgd3JvdGUgbW9zdCBvZiBOZXRCZWFucycgQW50IGludGVncmF0aW9uLgpSZWNlbnRseSBoZSBoYXMgd29ya2VkIG9uIHRoZSBOZXRCZWFucyA0LjAgcHJvamVjdCBzeXN0ZW0sIGJhc2VkIGhlYXZpbHkKb24gQW50IGFzIGEgYnVpbGQgdG9vbC4KPC9wPgo8cD4KICAgPGI+Sm9uIFNjaG5laWRlcjwvYj4KPC9wPgo8cD4KICAgPGI+QWxleGV5IFNvbG9mbmVua288L2I+ICh0cmVsb255IGF0IGdtYWlsLmNvbSk8YnIgLz4KPC9wPgoKICAgICAgPC9zdWJzZWN0aW9uPgogICAgICA8c3Vic2VjdGlvbiBuYW1lPSJFbWVyaXR1cyBDb21taXR0ZXJzIj4KICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8Yj5QcmVzdG9uIEJhbm5pc3RlcjwvYj48YnIvPgogICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxiPk5pY2sgRGF2aXM8L2I+PGJyLz4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8Yj5EYXJyZWxsIERlQm9lcjwvYj48YnIvPgogICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxiPlBldGVyIERvbmFsZDwvYj4gKHBldGVyIGF0IGFwYWNoZS5vcmcpCjxici8+CgpQZXRlciBpcyBhbiBhdmlkIGphdmEgZGV2ZWxvcGVyIHdobyBpcyBhY3RpdmUgaW4gdGhlCjxhIGhyZWY9Imh0dHA6Ly9qYWthcnRhLmFwYWNoZS5vcmcvYXZhbG9uLyI+QXZhbG9uPC9hPiBhbmQKPGEgaHJlZj0iaHR0cDovL2FudC5hcGFjaGUub3JnLyI+QW50PC9hPiBwcm9qZWN0cy4KSW4gaGlzIHNwYXJlIHRpbWUgaGUgZGV2ZWxvcHMgYSBkaXN0cmlidXRlZCB2aXJ0dWFsIGVudmlyb25tZW50CihpZSBtaWxpdGFyeSBzaW11bGF0b3Igb3IgM0QgZ2FtZSkgdXNpbmcgamF2YSB0ZWNobm9sb2dpZXMuCjwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgPGI+RGFubm8gRmVycmluPC9iPiAoc2hlbW5vbiBhdCB5YWhvby5jb20pCjxici8+CkRhbm5vIGhhcyBiZWVuIHByb2dyYW1taW5nIGluIEphdmEgc2luY2UgU3VtbWVyIDk2LiBEYW5ubyB3cm90ZSBhIEpTUAplbmdpbmUgb24gaGlzIG93biBhbmQgcmVsZWFzZWQgaXQgdGhlIHZlcnkgc2FtZSBkYXkgSmFrYXJ0YSB3YXMKYW5ub3VuY2VkIGF0IEphdmFPbmUuIFNpbmNlIHRoZW4sIGhlIGRlY2lkZWQgdG8gam9pbiB0aGUgSmFrYXJ0YQpwcm9qZWN0IGluIGEgc3Bpcml0IG9mIGNvLW9wZXJhdGlvbiBvdmVyIGNvbXBldGl0aW9uLgo8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxiPlNpbWVvbiBILksuIEZpdGNoPC9iPiAoc2ltZW9uLmZpdGNoIGF0IG1zZWVkc29mdC5jb20pCjxici8+ClNpbWVvbiBpcyBvd25lciBvZiBNdXN0YXJkIFNlZWQgU29mdHdhcmUsIHdoaWNoIHNwZWNpYWxpemVzIGluIGRldmVsb3BpbmcKZGlzdHJpYnV0ZWQgYXBwbGljYXRpb25zIGFuZCB1c2VyIGludGVyZmFjZXMgZm9yIHRoZSBzY2llbmNlLCBlbmdpbmVlcmluZywKYW5kIHJlc2VhcmNoIG9yaWVudGVkIGNsaWVudHMuIEhlIGlzIHRoZSBsZWFkIGFyY2hpdGVjdCBhbmQgZGV2ZWxvcGVyIGZvcgpBbnRpZG90ZSwgdGhlIEdVSSBmb3IgQW50Lgo8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxiPlRob21hcyBIYWFzPC9iPiAodGhhIGF0IHdoaXRlc3RlaW4uY29tKQo8YnIvPgpUb20gaXMgaW50ZXJlc3RlZCBpbiBkaXN0cmlidXRlZCBzeXN0ZW1zLCBKYXZhIG1pZGRsZXdhcmUgYW5kIHdvcmtlZCBvbiBhbgppbXBsZW1lbnRhdGlvbiBvZiB0aGUgSk1TIHNwZWNpZmljYXRpb24uIEF0IFdoaXRlc3RlaW4gVGVjaG5vbG9naWVzIGhlIGlzCndvcmtpbmcgb24gYnJpbmdpbmcgc29mdHdhcmUgYWdlbnQgdGVjaG5vbG9neSBhbmQgSjJFRSB0b2dldGhlci4KPC9wPgoKICAgICAgPHA+CgogICAgICAgICAgICAgICAgPGI+SmFzb24gSHVudGVyPC9iPiAoamggYXQgc2VydmxldHMuY29tKQo8YnIvPgpKYXNvbiBpcyBhdXRob3Igb2YgIkphdmEgU2VydmxldCBQcm9ncmFtbWluZyIgKE8nUmVpbGx5KSBhbmQgcHVibGlzaGVyCm9mIDxhIGhyZWY9Imh0dHA6Ly93d3cuc2VydmxldHMuY29tLyI+aHR0cDovL3d3dy5zZXJ2bGV0cy5jb20vPC9hPi4KSGUgd29ya3MgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5jb2xsYWIubmV0Ij5Db2xsYWJOZXQ8L2E+Lgo8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxiPkp1c3R5bmEgSG9yd2F0PC9iPiAoaG9yd2F0IGF0IGFwYWNoZS5vcmcpCjxici8+CjwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgPGI+QXJ1biBKYW13YWw8L2I+Cjxici8+CjwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgPGI+QXJub3V0IEouIEt1aXBlcjwvYj4gKGFqa3VpcGVyIGF0IHBsYW5ldC5ubCkKPGJyLz4KCkFybm91dCBKLiBLdWlwZXIgaXMgYSBKYXZhIEFyY2hpdGVjdCB3aXRoIHRoZSBTdW4gSmF2YSBDZW50ZXIgYXQgU3VuCk1pY3Jvc3lzdGVtcy4gSGlzIG1haW4gZm9jdXMgaXMgd2ViLXJlbGF0ZWQgdGVjaG5vbG9naWVzIG9uIHRoZSBKYXZhCnBsYXRmb3JtIChKMkVFLCBYTUwsIC4uLikuCjwvcD4KCjxwPgogICAgICAgICAgICAgICAgPGI+U3RlZmFubyBNYXp6b2NjaGk8L2I+IChzdGVmYW5vIGF0IGFwYWNoZS5vcmcpCjxici8+ClN0ZWZhbm8gaXMgYWRkaWN0ZWQgdG8gc29mdHdhcmUgZGVzaWduLCBKYXZhIHByb2dyYW1taW5nIGFuZApvcGVuIGRldmVsb3BtZW50LiBJbiB0aGUgbGFzdCA0IHllYXJzLCBoZSBoYXMgY29udHJpYnV0ZWQgd2F5IHRvbyBtdWNoCnRpbWUgdG8gQXBhY2hlLCBleHBlY2lhbGx5IG9uIEpTZXJ2LCBKTWV0ZXIsIEF2YWxvbiwgSkFNRVMsIEFudCwgQ29jb29uCmFuZCBoZWxwaW5nIHRvIGJyaW5nIG1vcmUgcHJvamVjdHMgaW50byBBcGFjaGUtbGFuZCwgc3VjaCBhcyBGT1AsIEJhdGlrLApQT0kgYW5kIFhpbmRpY2UuIFRoZSBwcm9ibGVtIGlzIHRoYXQgaGUncyB0b28gcGlja3kgdG8gYmUgc2F0aXNmaWVkIDotKQo8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxiPkdsZW5uIE1jQWxsaXN0ZXI8L2I+IChnbGVubiBhdCBzb21hbmV0d29ya3MuY29tKQo8YnIvPgpHbGVubiBNY0FsbGlzdGVyIGlzIGEgc29mdHdhcmUgZGV2ZWxvcGVyIGF0IFNPTUEgTmV0d29ya3MsIHdhcyBmb3JtZXJseQp0aGUgc2FtZSBhdCBJQk0gKHBsdXMgdGVjaCB3cml0ZXIgcGx1cyBidWlsZCBndXkpLCBhbmQgZG9lcyBzb21lIHdyaXRpbmcKb24gdGhlIHNpZGUgZm9yIHRoZSBWQUREIFRlY2huaWNhbCBKb3VybmFsLgo8L3A+CgogICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgPGI+Q3JhaWcgTWNDbGFuYWhhbjwvYj4gKENyYWlnLk1jQ2xhbmFoYW4gYXQgZW5nLnN1bi5jb20pCjxici8+CkNyYWlnIHdhcyBpbnZvbHZlZCBpbiB0aGUgQXBhY2hlIEpTZXJ2IHByb2plY3QsIGZvY3VzZWQgb24gaW1wbGVtZW50aW5nCmEgbmV4dCBnZW5lcmF0aW9uIGFyY2hpdGVjdHVyZSBhbmQgZmVhdHVyZSBzZXQgZm9yIHRoZSBjb3JlIHNlcnZsZXQKZW5naW5lLiAgSGUgaGFzIHJlY2VudGx5IGpvaW5lZCBTdW4gYXMgdGVjaG5pY2FsIGxlYWQgZm9yIHRoZSBzZXJ2bGV0CmFuZCBKU1AgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uLgogICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8Yj5BZGFtIE11cmRvY2g8L2I+Cjxici8+CjwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgPGI+SGFyaXNoIFByYWJoYW5kaGFtPC9iPiAoaGFyaXNocCBhdCBvbmVib3guY29tKQo8YnIvPgpIYXJpc2ggaXMgYW4gZW5naW5lZXIgd2l0aCB0aGUgSjJFRSB0ZWFtIGF0IFN1biwgcHJpbWFyaWx5IHJlc3BvbnNpYmxlCmZvciBpbXBsZW1lbnRpbmcgc2VjdXJpdHkgaW4gdGhlIEoyRUUgUmVmZXJlbmNlIEltcGxlbWVudGF0aW9uCihSSSkuIEhlIGludGVncmF0ZWQgdmFyaW91cyB0ZWNobm9sb2dpZXMgaW5jbHVkaW5nIHNlcnZsZXQvSlNQCmltcGxlbWVudGF0aW9ucyBmcm9tIFRvbWNhdCBpbnRvIHRoZSBKMkVFIFJJLiBUaGVzZSBkYXlzLCBoZSBoYWNrcyBQSFAKY29kZSBkdXJpbmcgdGhlIGRheS4KPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8Yj5OaWNvIFNlZXNzbGU8L2I+PGJyLz4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8Yj5HYWwgU2hhY2hvcjwvYj4gKHNoYWNob3IgYXQgaWwuaWJtLmNvbSkKPGJyLz4KR2FsIFNoYWNob3IgaXMgYSByZXNlYXJjaCBzdGFmZiBtZW1iZXIgYXQgSUJNLiBIZSB3cm90ZSBoaXMgZmlyc3QKU2VydmxldCBjb250YWluZXIgKFNlcnZsZXRFeHByZXNzKSBhdCB0aGUgYmVnaW5uaW5nIG9mIDE5OTcuIExhdGVyIG9uClNlcnZsZXRFeHByZXNzIChhbmQgR2FsKSBtZXJnZWQgaW50byBXZWJTcGhlcmUsIGFuZCBHYWwgcGFydGljaXBhdGVkCmluIHRoZSBkZXZlbG9wbWVudCBvZiBXZWJTcGhlcmUgMSwgMiBhbmQgMy4KPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8Yj5Kb24gUy4gU3RldmVuczwvYj4gKGpvbiBhdCBjb2xsYWIubmV0KQo8YnIvPgoKSm9uIGlzIGEgQ28tRm91bmRlciBvZiA8YSBocmVmPSJodHRwOi8vd3d3LmNsZWFyaW5rLmNvbS8iPkNsZWFyIEluawpDb3JwPC9hPiBhbmQgcmVjZW50bHkgbGVmdCB0byB3b3JrIG9uIDxhIGhyZWY9Imh0dHA6Ly9zY2FyYWIudGlncmlzLm9yZy8iPlNjYXJhYjwvYT4gYSBuZXh0IGdlbmVyYXRpb24gT3BlbgpTb3VyY2UgSmF2YSBTZXJ2bGV0IGJhc2VkIElzc3VlL0J1ZyB0cmFja2luZyBzeXN0ZW0gZm9yIDxhIGhyZWY9Imh0dHA6Ly93d3cuY29sbGFiLm5ldC8iPkNvbGxhYk5ldDwvYT4uIEhlIGlzIGFuIGFjdGl2ZSBkZXZlbG9wZXIKb2YgdGhlIDxhIGhyZWY9Imh0dHA6Ly9qYXZhLmFwYWNoZS5vcmcvanNlcnYvIj5BcGFjaGUgSlNlcnYgU2VydmxldApFbmdpbmU8L2E+IGZvciB0aGUgQXBhY2hlIFdlYiBTZXJ2ZXIgYW5kIENvLUF1dGhvciBvZiB0aGUgPGEgaHJlZj0iaHR0cDovL2phdmEuYXBhY2hlLm9yZy9lY3MvIj5FbGVtZW50IENvbnN0cnVjdGlvbiBTZXQ8L2E+IGFzCndlbGwgYXMgdGhlIHdlYiBhcHBsaWNhdGlvbiBmcmFtZXdvcmssIDxhIGhyZWY9Imh0dHA6Ly9qYXZhLmFwYWNoZS5vcmcvdHVyYmluZS8iPlR1cmJpbmU8L2E+Lgo8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxiPkplc3NlIFN0b2NrYWxsPC9iPjxici8+CiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgPGI+SmFtZXMgVG9kZDwvYj4gKGp3dG9kZCBhdCBwYWNiZWxsLm5ldCkKPGJyLz4KSmFtZXMgaGFzIGRldmVsb3BlZCByZWFsIHRpbWUgY3VzdG9tZXIgb3JpZW50ZWQgYXBwcyBmb3Igcm91Z2hseSAxMAp5ZWFycyB0aGUgbGFzdCA1IG9mIHdoaWNoIGhhdmUgcHJlZG9taW5hdGVseSBiZWVuIGZ1bGx5IGludGVncmF0ZWQsCmZyb250IGFuZCBiYWNrLCBleHRyYU5ldCBpbXBsZW1lbnRhdGlvbnMgd2hpY2ggaGF2ZSBiZWVuIGJhc2VkIG9uCkFwYWNoZSwgSmF2YSBhbmQgVGNsLgo8L3A+CgogICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8Yj5BbmlsIFZpamVuZHJhbjwvYj4gKGFrdiBhdCBlbmcuc3VuLmNvbSkKPGJyLz4KQW5pbCBWaWplbmRyYW4gaXMgdGhlIHByaW5jaXBhbCBkZXZlbG9wZXIgb2YgdGhlIEpTUCBlbmdpbmUgaW4KVG9tY2F0LiBIZSdzIGRvbmUgc29tZSBwcmV0dHkgc2NhcnkgdGhpbmdzIGluIGhpcyBwYXN0IGxpZmUgLS0KaW1wbGVtZW50aW5nIHRoZSBDT1JCQSBJREwgdG8gQysrIDIuMCBtYXBwaW5nLCBza3lkaXZpbmcsIElETCB0byBKYXZhCmNvbXBpbGVycywgT2JqZWN0IERhdGFiYXNlcyAoU0lHU0VWLCB5b3UgZGEgbWFuISkgZm9yIEMrKywgSmF2YSBPUkIKYW5kIEVKQiBydW50aW1lIGVudmlyb25tZW50cyAtLSBpbiB0aGF0IG9yZGVyLgo8L3A+CgogICAgICA8L3N1YnNlY3Rpb24+CiAgICA8L3NlY3Rpb24+CgogICAgPHNlY3Rpb24gbmFtZT0iTG9nbyI+CiAgICAgIDxwPkFudCdzIGxvZ28gaXMgdGhlIHJlc3VsdCBvZiBhIGxvZ28gY29udGVzdCwgaXQgaGFzIGJlZW4KICAgICAgICBkZXNpZ25lZCBieTwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgPGI+TmljayBLaW5nPC9iPgo8YnIvPgo8L3A+CiAgICA8L3NlY3Rpb24+CiAgPC9ib2R5Pgo8L2RvY3VtZW50Pgo=