PCFET0NUWVBFIGh0bWwKICBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIGxhbmc9ImVuLXVzIiB4bWw6bGFuZz0iZW4tdXMiPgo8aGVhZD4KPCEtLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCiAqIAogKiBDb250cmlidXRvcnM6CiAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIC0tPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LmRvYy51c2VyL2NvbW1vbi5jc3MiIC8+Cgo8dGl0bGU+Q3JlYXRpbmcgYSBXZWIgc2VydmljZSBmcm9tIGEgSmF2YSBiZWFuIHVzaW5nIHRoZSBBcGFjaGUgQXhpcwpydW4tdGltZSBlbnZpcm9ubWVudDwvdGl0bGU+CjwvaGVhZD4KPGJvZHkgaWQ9InR3c2JlYW5hIj48YSBuYW1lPSJ0d3NiZWFuYSI+PCEtLSAtLT48L2E+Cgo8aDEgY2xhc3M9InRvcGljdGl0bGUxIj5DcmVhdGluZyBhIFdlYiBzZXJ2aWNlIGZyb20gYSBKYXZhIGJlYW4gdXNpbmcgdGhlIEFwYWNoZSBBeGlzIHJ1bi10aW1lCmVudmlyb25tZW50PC9oMT4KPGRpdj48cD5UaGUgV2ViIFNlcnZpY2Ugd2l6YXJkIGFzc2lzdHMgeW91IGluIGNyZWF0aW5nIGEgbmV3IFdlYiBzZXJ2aWNlLApjb25maWd1cmluZyBpdCBmb3IgZGVwbG95bWVudCwgYW5kIGRlcGxveWluZyB0aGUgV2ViIHNlcnZpY2UgdG8gYSBzZXJ2ZXIuCk9uY2UgeW91ciBXZWIgc2VydmljZSBpcyBkZXBsb3llZCwgdGhlIHdpemFyZCBhc3Npc3RzIHlvdSBpbiBnZW5lcmF0aW5nIHRoZQpjbGllbnQgcHJveHkgYW5kIHNhbXBsZSBhcHBsaWNhdGlvbiB0byB0ZXN0IHRoZSBXZWIgc2VydmljZS4gV2hlbiB5b3UgaGF2ZQpjb21wbGV0ZWQgdGVzdGluZywgeW91IGNhbiBwdWJsaXNoIHlvdXIgV2ViIHNlcnZpY2UgdG8gYSBVRERJIEJ1c2luZXNzIFJlZ2lzdHJ5CnVzaW5nIHRoZSBFeHBvcnQgd2l6YXJkLjwvcD4KPGRpdiBjbGFzcz0icCI+PGRpdiBjbGFzcz0icCI+UHJlcmVxdWlzaXRlczo8b2w+PGxpPklmIHlvdSBhcmUgdXNpbmcgdGhlIEFwYWNoZSBKYWthcnRhIFRvbWNhdCBzZXJ2bGV0CmNvbnRhaW5lciBhcyB5b3VyIHNlcnZlciwgeW91IG11c3QgaW5zdGFsbCBpdCwgY29uZmlndXJlIGFuIGluc3RhbmNlIG9mIGl0LAphbmQgY3JlYXRlIGEgV2ViIHByb2plY3QgdGFyZ2V0ZWQgdG8gaXQgYXMgZGVzY3JpYmVkIGluIDxhIGhyZWY9InR0b21jYXRzZXJ2Lmh0bWwiPkNyZWF0aW5nIGFuIEFwYWNoZSBUb21jYXQgc2VydmVyIGFuZCBXZWIgcHJvamVjdDwvYT48L2xpPgo8bGk+Q3JlYXRlIG9yIGltcG9ydCBhIGJlYW4gaW50byB0aGUgSmF2YZkgc291cmNlIGZvbGRlciBvZiB0aGUgV2ViIHByb2plY3QuPC9saT4KPC9vbD4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj5UbyBjcmVhdGUgYSBXZWIgc2VydmljZSBmcm9tIGEgYmVhbiB1c2luZyB0aGUgQXBhY2hlIEF4aXMgcnVuLXRpbWUKZW52aXJvbm1lbnQ6PC9kaXY+CjxvbD48bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPlN3aXRjaCB0byB0aGUgSjJFRSBwZXJzcGVjdGl2ZSAoIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPldpbmRvdyAmZ3Q7IE9wZW4gUGVyc3BlY3RpdmUKJmd0OyBKMkVFPC9zcGFuPikuPC9zcGFuPjwvbGk+CjxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+SW4gdGhlIFByb2plY3QgRXhwbG9yZXIgdmlldywgc2VsZWN0IHRoZSBiZWFuIHRoYXQgeW91IGNyZWF0ZWQKb3IgaW1wb3J0ZWQgaW50byB0aGUgc291cmNlIGZvbGRlciBvZiB5b3VyIFdlYiBwcm9qZWN0Ljwvc3Bhbj48L2xpPgo8bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkNsaWNrICA8c3BhbiBjbGFzcz0idWljb250cm9sIj5GaWxlICZndDsgTmV3ICZndDsgT3RoZXI8L3NwYW4+Ljwvc3Bhbj4gU2VsZWN0PHNwYW4gY2xhc3M9InVpY29udHJvbCI+V2ViClNlcnZpY2VzPC9zcGFuPiBpbiBvcmRlciB0byBkaXNwbGF5IHRoZSB2YXJpb3VzIFdlYiBzZXJ2aWNlIHdpemFyZHMuClNlbGVjdCB0aGUgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPldlYiBTZXJ2aWNlPC9zcGFuPiB3aXphcmQuIENsaWNrICA8c3BhbiBjbGFzcz0idWljb250cm9sIj5OZXh0PC9zcGFuPi48L2xpPgo8bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPldlYiBTZXJ2aWNlcyBwYWdlOiBzZWxlY3QgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkJvdHRvbSB1cCBKYXZhIGJlYW4gV2ViIHNlcnZpY2U8L3NwYW4+IGFzCnlvdXIgV2ViIHNlcnZpY2UgdHlwZS4gWW91IGNhbiBvcHRpb25hbGx5IGNob29zZSB0byBkbyB0aGUgZm9sbG93aW5nOiA8L3NwYW4+IDx1bD48bGk+U3RhcnQgdGhlIFdlYiBzZXJ2aWNlIGluIGEgV2ViIHByb2plY3QgLSBpZiB5b3UgZG8gbm90IHNlbGVjdCB0aGlzIG9wdGlvbgp5b3Ugd2lsbCBoYXZlIHRvIG1hbnVhbGx5IHN0YXJ0IHRoZSBXZWIgc2VydmljZS4gWW91IG11c3Qgc2VsZWN0IHRoaXMgb3B0aW9uCnRvIGVuYWJsZSB0aGUgb3RoZXIgb3B0aW9ucyBvbiB0aGlzIHBhZ2UuPC9saT4KPGxpPkxhdW5jaCB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyIHRvIHB1Ymxpc2ggeW91ciBXZWIgc2VydmljZSB0byBhIFVEREkKcmVnaXN0cnkuPC9saT4KPGxpPkdlbmVyYXRlIGEgSmF2YSBiZWFuIGNsaWVudCBwcm94eSB0byB0aGUgV2ViIHNlcnZpY2UuIFRoZSBKYXZhIGJlYW4KY2xpZW50IHByb3h5IHRoYXQgaXMgZ2VuZXJhdGVkIHByb3ZpZGVzIGEgcmVtb3RlIHByb2NlZHVyZSBjYWxsIGludGVyZmFjZQp0byB0aGUgV2ViIHNlcnZpY2UuPC9saT4KPGxpPlRlc3QgdGhlIFdlYiBzZXJ2aWNlIC0gdGhpcyBhbGxvd3MgeW91IHRvIHRlc3QgdGhlIFdlYiBzZXJ2aWNlIGluIHRoZQpXZWIgU2VydmljZSBFeHBsb3JlciBiZWZvcmUgYSBwcm94eSBpcyBnZW5lcmF0ZWQuPC9saT4KPGxpPlNlbmQgdGhlIFdlYiBzZXJ2aWNlIHRyYWZmaWMgdGhyb3VnaCB0aGUgVENQL0lQIE1vbml0b3IsIHdoaWNoIGFsbG93cwp5b3UgdG8gd2F0Y2ggdGhlIFNPQVAgdHJhZmZpYyBnZW5lcmF0ZWQgYnkgdGhlIFdlYiBzZXJ2aWNlIGFuZCB0byB0ZXN0IHRoaXMKdHJhZmZpYyBmb3IgV1MtSSBjb21wbGlhbmNlLiBOb3RlIHRoYXQgdGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgVG9tY2F0IHY0LjAKYW5kIHY0LjEuIElmIHlvdSBhcmUgdXNpbmcgVG9tY2F0IHY1LjAgYW5kIHdhbnQgdG8gbW9uaXRvciB0aGUgV2ViIHNlcnZpY2UKdHJhZmZpYywgeW91IG5lZWQgdG8gbWFudWFsbHkgc2V0IHVwIGEgVENQL0lQIG1vbml0b3IgYXMgZGVzY3JpYmVkIGluIDxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLndzdC53c2kudWkuZG9jLnVzZXIvdGFza3MvdG1vbml0b3IuaHRtbCI+VXNpbmcKdGhlIFRDUC9JUCBNb25pdG9yIHRvIHRlc3QgV2ViIHNlcnZpY2VzPC9hPjwvbGk+CjwvdWw+CjwvbGk+CjxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+T2JqZWN0IHNlbGVjdGlvbiBwYWdlOiBzZWxlY3QgdGhlIEphdmEgYmVhbiBmcm9tIHdoaWNoIHRoZSBXZWIgc2VydmljZSB3aWxsCmJlIGNyZWF0ZWQuPC9zcGFuPjwvbGk+CjxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+U2VydmljZSBEZXBsb3ltZW50IENvbmZpZ3VyYXRpb24gcGFnZTogc3BlY2lmeSB0aGUgc2VydmVyIGFuZCBjbGllbnQKZGVwbG95bWVudCBzZXR0aW5ncy48L3NwYW4+PG9sIHR5cGU9ImEiPjxsaSBjbGFzcz0ic3Vic3RlcGV4cGFuZCI+PHNwYW4+Q2xpY2sgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkVkaXQ8L3NwYW4+IGFuZCBzZWxlY3QgdGhlIEFwYWNoZSBBeGlzCnJ1bi10aW1lIGVudmlyb25tZW50IGFuZCBzZWxlY3QgdGhlIHNlcnZlciBvbiB3aGljaCB5b3Ugd2FudCB0byBydW4geW91ciBXZWIKc2VydmljZSBhbmQgV2ViIHNlcnZpY2UgY2xpZW50Ljwvc3Bhbj48L2xpPgo8bGkgY2xhc3M9InN1YnN0ZXBleHBhbmQiPjxzcGFuPlNlbGVjdCB0aGUgV2ViIHByb2plY3QgaW4gd2hpY2ggeW91IHdhbnQgeW91ciBXZWIgc2VydmljZSBjcmVhdGVkLAphbmQgdGhlIEVBUiB3aXRoIHdoaWNoIGl0IHdpbGwgYmUgYXNzb2NpYXRlZC4gPC9zcGFuPiBUaGUgd2l6YXJkIHdpbGwKY3JlYXRlIHRoZXNlIGZvciB5b3UgaWYgdGhleSBkbyBub3QgYWxyZWFkeSBleGlzdC48L2xpPgo8bGkgY2xhc3M9InN1YnN0ZXBleHBhbmQiPjxzcGFuPlNlbGVjdCB0aGUgdHlwZSBhbmQgbmFtZSBvZiBwcm9qZWN0IGluIHdoaWNoIHlvdSB3YW50IHRoZSBXZWIKc2VydmljZSBjbGllbnQgY3JlYXRlZC4gSWYgeW91IGVudGVyIHRoZSBuYW1lIG9mIGFuIGV4aXN0aW5nIHByb2plY3QsIHRoZQpwcm9qZWN0IHR5cGUgZmllbGQgbXVzdCBtYXRjaCB0aGF0IG9mIHRoZSBleGlzdGluZyBwcm9qZWN0LiBJZiB5b3UgZW50ZXIgYQpuYW1lIG9mIGEgcHJvamVjdCB0aGF0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QsIHRoZSB3aXphcmQgd2lsbCBjcmVhdGUgdGhlCnByb2plY3QgZm9yIHlvdS4gTm90ZSB0aGF0IHRoZSBvbmx5IHByb2plY3QgdHlwZSBzdXBwb3J0ZWQgZm9yIEF4aXMgYW5kIFNPQVAKcnVuLXRpbWUgY2xpZW50cyBpcyBhIFdlYiBwcm9qZWN0LiBJZiB5b3Ugd2FudCB0aGUgY2xpZW50IHRvIGJlCmNyZWF0ZWQgaW4gYSBKYXZhLCBFSkIsIG9yIEFwcGxpY2F0aW9uIENsaWVudCBwcm9qZWN0LCB5b3UgbXVzdCBzZWxlY3QKdGhlIFdlYlNwaGVyZTxzdXA+rjwvc3VwPiBydW4tdGltZQplbnZpcm9ubWVudCBmb3IgeW91ciBjbGllbnQuPC9zcGFuPjwvbGk+CjxsaSBjbGFzcz0ic3Vic3RlcGV4cGFuZCI+PHNwYW4+U2VsZWN0IGFuIGV4aXN0aW5nIEVBUiBvciBlbnRlciBhIHVuaXF1ZSBuYW1lIHRvIGFzc29jaWF0ZSB0aGUKV2ViIHNlcnZpY2UgY2xpZW50IHdpdGggYSBkaWZmZXJlbnQgRUFSIHRoYW4gdGhlIFdlYiBzZXJ2aWNlIEVBUi4gPHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBTZWxlY3RpbmcKZGlmZmVyZW50IEVBUnMgZm9yIHRoZSBXZWIgc2VydmljZSBhbmQgV2ViIHNlcnZpY2UgY2xpZW50IGNhbiByZWR1Y2UgdGhlIGNoYW5jZQpvZiBlbmNvdW50ZXJpbmcgcnVuIHRpbWUgZXJyb3JzLCBidXQgd2lsbCB1c2UgbW9yZSBzeXN0ZW0gcmVzb3VyY2VzLjwvc3Bhbj48L2xpPgo8L29sPgo8L2xpPgo8bGkgY2xhc3M9InN0ZXBleHBhbmQiPjxzcGFuPkEgbWVzc2FnZSB3aWxsIGRpc3BsYXkgc3RhdGluZyB0aGF0IHlvdSBoYXZlIG1hZGUgYSBXUy1JIG5vbi1jb21wbGlhbnQKc2VsZWN0aW9uLjwvc3Bhbj4gVGhlIEFwYWNoZSBBeGlzIHJ1bi10aW1lIGVudmlyb25tZW50IGlzIG5vdCBXUy1JIGNvbXBsaWFudC4KU2VsZWN0IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPklnbm9yZTwvc3Bhbj4uPC9saT4KPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5XZWIgU2VydmljZSBKYXZhIEJlYW4gSWRlbnRpdHkgcGFnZTogdGhlIFdlYiBzZXJ2aWNlClVSSSBhbmQgV1NETCBuYW1lIHdpbGwgYmUgbGlzdGVkLjwvc3Bhbj4gWW91oCBoYXZlIHRoZSBmb2xsb3dpbmcKb3B0aW9uczo8dWw+PGxpPlNlbGVjdCB0aGUgbWV0aG9kcyB0byBleHBvc2UuPC9saT4KPGxpPlNlbGVjdCB0aGUgZW5jb2Rpbmcgc3R5bGUuIFJQQy9FbmNvZGVkIGlzIHRoZSByZWNvbW1lbmRlZCBlbmNvZGluZyBzdHlsZQpmb3IgdGhlIEF4aXMgcnVuLXRpbWUgZW52aXJvbm1lbnQuIFRoaXMgZW5jb2RpbmcgbWV0aG9kIGlzIG5vdCBXUy1JIGNvbXBsaWFudC48L2xpPgo8bGk+U2VsZWN0IGlmIHlvdSB3YW50IHRvIGN1c3RvbWl6ZSB0aGUgcGFja2FnZSB0byBuYW1lc3BhY2UgbWFwcGluZ3MuPC9saT4KPC91bD4KQ2xpY2sgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk5leHQ8L3NwYW4+PC9saT4KPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5XZWIgU2VydmljZSBQYWNrYWdlIHRvIE5hbWVzcGFjZSBNYXBwaW5ncyBwYWdlOiBpZiB5b3Ugc2VsZWN0ZWQKIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkRlZmluZSBjdXN0b20gbWFwcGluZyBmb3IgcGFja2FnZSB0byBuYW1lc3BhY2U8L3NwYW4+IG9uCnRoZSBwcmV2aW91cyBwYW5lbCwgeW91IGNhbiBlbnRlciB5b3VyIGN1c3RvbSBtYXBwaW5nIHBhaXJzIG9uIHRoaXMgcGFuZWwKYnkgY2xpY2tpbmcgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkFkZDwvc3Bhbj4uPC9zcGFuPjwvbGk+CjxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+V2ViIFNlcnZpY2UgVGVzdCBwYWdlOiBJZiB5b3Ugc2VsZWN0ZWQgdG8gdGVzdCB0aGUgV2ViIHNlcnZpY2UsCnNlbGVjdCB0aGUgdGVzdCBmYWNpbGl0eSBmb3IgdGhlIGdlbmVyYXRlZCBXZWIgc2VydmljZS48L3NwYW4+IFRoaXMgd2lsbApvcGVuIHRoZSBXZWIgc2VydmljZSBpbiB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLiBTZWxlY3QgdGhlIG9wZXJhdGlvbiB5b3UKd2FudCB0byB0ZXN0LCBlbnRlciB0aGUgcmVxdWlyZWQgaW5mb3JtYXRpb24sIGFuZCBjbGljazxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkdvPC9zcGFuPi4KVGhlIHJlc3VsdCB3aWxsIGRpc3BsYXkgaW4gdGhlIFN0YXR1cyBwYW5lLiBDbGljayAgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+TmV4dDwvc3Bhbj4uPC9saT4KPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5XZWIgU2VydmljZSBQcm94eSBwYWdlOiBpZiB5b3UgaGF2ZSBzZWxlY3RlZCB0byBnZW5lcmF0ZSBhIHByb3h5LApzZWxlY3QgaWYgeW91IHdhbnQgdG8gY3VzdG9taXplIHRoZSBwYWNrYWdlIHRvIG5hbWVzcGFjZSBtYXBwaW5ncy48L3NwYW4+PC9saT4KPGxpIGNsYXNzPSJzdGVwZXhwYW5kIj48c3Bhbj5XZWIgU2VydmljZSBDbGllbnQgVGVzdCBwYWdlOiBVc2UgdGhpcyBwYWdlIHRvIHNlbGVjdCB0aGUgZm9sbG93aW5nCm9wdGlvbnM6IDwvc3Bhbj48b2wgdHlwZT0iYSI+PGxpPjxzcGFuPlNlbGVjdCB5b3VyIHRlc3QgZmFjaWxpdHkuIFlvdSBjYW4gdGVzdCB0aGUgZ2VuZXJhdGVkIHByb3h5CmluIHRoZSBVbml2ZXJzYWwgVGVzdCBDbGllbnQgb3IgdGhlIFdlYiBTZXJ2aWNlIEV4cGxvcmVyLCBvciB5b3UgY2FuIGdlbmVyYXRlCmEgc2FtcGxlIFdlYiBzZXJ2aWNlIEpTUC48L3NwYW4+PC9saT4KPGxpPjxzcGFuPklmIHlvdSBzZWxlY3RlZCB0byB0ZXN0IHRoZSBwcm94eSB0aHJvdWdoIGEgSlNQLCB5b3UgY2FuIHNlbGVjdAp0aGUgZm9sZGVyIHdoZXJlIHRoZSBKU1Agd2lsbCBiZSBsb2NhdGVkLCBhbmQgeW91IGNhbiBzZWxlY3QgdGhlIG1ldGhvZHMgdGhhdAp3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBKU1AuPC9zcGFuPjwvbGk+CjxsaT48c3Bhbj5TZWxlY3QgIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPlJ1biB0ZXN0IG9uIHNlcnZlcjwvc3Bhbj4gdG8gc3RhcnQgdGhlCnNlcnZlciBmb3IgeW91IGF1dG9tYXRpY2FsbHkuPC9zcGFuPjwvbGk+Cjwvb2w+CjwvbGk+CjxsaSBjbGFzcz0ic3RlcGV4cGFuZCI+PHNwYW4+V2ViIFNlcnZpY2UgUHVibGljYXRpb24gcGFnZTogU2VsZWN0IHdoZXRoZXIgb3Igbm90IHlvdSB3YW50IHRvCnB1Ymxpc2ggdGhpcyBXZWIgc2VydmljZSB0byBhIFVEREkgcmVnaXN0cnkuIENsaWNrIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkZpbmlzaDwvc3Bhbj4uoDwvc3Bhbj4gTm90ZTogeW91IG1heSBzZWUgYSB3YXJuaW5nIHN0YXRpbmcgPHNhbXAgY2xhc3M9ImNvZGVwaCI+RXJyb3IgaW4gZ2VuZXJhdGluZyBXU0RMCmZyb20gSmF2YS4gQ2xhc3NOb3RGb3VuZDogJmx0O2JlYW4gbmFtZSZndDs8L3NhbXA+LiBUaGlzIGVycm9yIGNhbiBiZSBzYWZlbHkKaWdub3JlZC48L2xpPgo8L29sPgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj48ZGl2IGNsYXNzPSJwIj5BZnRlciB0aGUgV2ViIHNlcnZpY2UgaGFzIGJlZW4gY3JlYXRlZCwgdGhlIGZvbGxvd2luZyBtYXkgb2NjdXIKZGVwZW5kaW5nIG9uIHRoZSBvcHRpb25zIHlvdSBzZWxlY3RlZDogPHVsPjxsaT5JZiB5b3UgaGF2ZSBzZWxlY3RlZCB0byB0ZXN0IHRoZSBnZW5lcmF0ZWQgcHJveHkgdXNpbmcgV2ViIHNlcnZpY2UgSlNQcywKdGhlIHByb3h5IGlzIGxhdW5jaGVkIGluIGEgV2ViIGJyb3dzZXIgYXQgdGhlIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly9sb2NhbGhvc3Q6IDx2YXIgY2xhc3M9InZhcm5hbWUiPnBvcnQ8L3Zhcj4vIDx2YXIgY2xhc3M9InZhcm5hbWUiPldlYlByb2plY3Q8L3Zhcj5DbGllbnQvc2FtcGxlPGVtPkJlYW5OYW1lPC9lbT4vIDx2YXIgY2xhc3M9InZhcm5hbWUiPldlYlNlcnZpY2VOYW1lPC92YXI+L1Rlc3RDbGllbnQuanNwIFlvdSBjYW4gdXNlCnRoaXMgc2FtcGxlIGFwcGxpY2F0aW9uIHRvIHRlc3QgdGhlIFdlYiBzZXJ2aWNlIGJ5IHNlbGVjdGluZyBhIG1ldGhvZCwgZW50ZXJpbmcKYSB2YWx1ZSBmb3IgdGhlIG1ldGhvZCwgYW5kIGNsaWNraW5nICA8c3BhbiBjbGFzcz0idWljb250cm9sIj5JbnZva2U8L3NwYW4+LiBUaGUgcmVzdWx0Cm9mIHRoZSBtZXRob2Qgd2lsbCBkaXNwbGF5IGluIHRoZSByZXN1bHRzIHBhbmUuPC9saT4KPGxpPklmIHlvdSBoYXZlIHNlbGVjdGVkIHRvIHRlc3QgdGhlIGdlbmVyYXRlZCBwcm94eSB1c2luZyB0aGUgVW5pdmVyc2FsIFRlc3QKQ2xpZW50LCBpdCB3aWxsIGJlIGxhdW5jaGVkIGluIGEgYnJvd3NlciB3aW5kb3cgYXQgdGhlIGZvbGxvd2luZyBVUkw6ICA8dHQgY2xhc3M9InN5c291dCI+aHR0cDovL2xvY2FsaG9zdDo5MDgwL1VUQy9wcmVsb2FkP29iamVjdD0gPHZhciBjbGFzcz0idmFybmFtZSI+QmVhblBhY2thZ2U8L3Zhcj4uIDx2YXIgY2xhc3M9InZhcm5hbWUiPkJlYW5TZXJ2aWNlUHJveHk8L3Zhcj48L3R0Pi4gSW4gdGhlIFJlZmVyZW5jZSBwYW5lLAp1bmRlciBPYmplY3QgUmVmZXJlbmNlcywgZXhwYW5kIHRoZSBwcm94eSBzdHViIHRvIGRpc3BsYXkgdGhlIG1ldGhvZHMgb2YgdGhlCldlYiBzZXJ2aWNlLiBDbGljayB0aGUgbWV0aG9kIHlvdSB3YW50IHRvIHRlc3QsIGVudGVyIGEgdmFsdWUgaW4gdGhlIFBhcmFtZXRlcnMKcGFuZSwgYW5kIGNsaWNrICA8c3BhbiBjbGFzcz0idWljb250cm9sIj5JbnZva2U8L3NwYW4+LiBUaGUgcmVzdWx0IHdpbGwgYmUgZ2VuZXJhdGVkCmJlbG93LjwvbGk+CjxsaT5JZiB5b3UgaGF2ZSBzZWxlY3RlZCB0byB0ZXN0IHRoZSBXZWIgc2VydmljZSB1c2luZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLAp0aGUgRXhwbG9yZXIgd2lsbCBvcGVuLiBTZWxlY3QgdGhlIG9wZXJhdGlvbiB5b3Ugd2FudCB0byB0ZXN0LCBlbnRlciB0aGUgcmVxdWlyZWQKaW5mb3JtYXRpb24sIGFuZCBjbGljayAgPHN0cm9uZz5Hbzwvc3Ryb25nPi4gVGhlIHJlc3VsdCB3aWxsIGRpc3BsYXkgaW4gdGhlIFN0YXR1cyBwYW5lLjwvbGk+CjxsaT5JZiB5b3UgaGF2ZSBzZWxlY3RlZCB0byBwdWJsaXNoIHRoZSBXZWIgc2VydmljZSwgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcgppcyBsYXVuY2hlZCBkaXNwbGF5aW5nIHRoZSBwYWdlIHJlcXVpcmVkIHRvIHB1Ymxpc2ggeW91ciBXZWIgc2VydmljZSB0byB0aGUgSUJNPHN1cD6uPC9zdXA+IFVEREkKVGVzdCBSZWdpc3RyeS4gRm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgaW4gIDx2YXIgY2xhc3M9InZhcm5hbWUiPlB1Ymxpc2hpbmcgdGhlIFdlYiBzZXJ2aWNlPC92YXI+IHRvCmNvbXBsZXRlIHRoaXMgdGFzay48L2xpPgo8L3VsPgo8L2Rpdj4KPHA+IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPk5vdGU6PC9zcGFuPgo8dWw+CjxsaT5JZiB5b3VyIG1ldGhvZHMgY29udGFpbiB0eXBlcywKbm90IHN1cHBvcnRlZCBieSB0aGUgc2FtcGxlLCBzdWNoIGFzIGFycmF5cywgaW5kZXhlZCBwcm9wZXJ0aWVzLCBhbmQgY29sbGVjdGlvbnMsCnRoZSBtZXRob2RzIHdpbGwgYmUgb21pdHRlZCBmcm9tIHRoZSBzYW1wbGUgYW5kIHlvdSB3aWxsIHJlY2VpdmUgYSB3YXJuaW5nCm1lc3NhZ2UuPC9saT4KPGxpPllvdSBtYXkgZW5jb3VudGVyIHRoZSBmb2xsb3dpbmcgZXJyb3Igd2hlbiBydW5uaW5nIHRoZSBXZWIgU2VydmljZSB3aXphcmQ6Cjxicj4KPHNhbXA+CklXQUIwMzk5RSBFcnJvciBpbiBnZW5lcmF0aW5nIEphdmEgZnJvbSBXU0RMIGphdmEuaW8uSU9FeGNlcHRpb246IFdTREwySmF2YQplbWl0dGVyIHRpbWVkIG91dCAodGhpcyBvZnRlbiBtZWFucyB0aGUgV1NETCBhdCB0aGUgc3BlY2lmaWVkIFVSTCBpcwppbmFjY2Vzc2libGUpITwvc2FtcD4KPGJyPgpZb3UgbWlnaHQgYmUgYWNjZXNzaW5nIGEgV1NETCBmaWxlIHRoYXQgcmVxdWlyZXMgYSB0aW1lb3V0IHNldHRpbmcgb2YgbW9yZSB0aGFuCnRoZSBkZWZhdWx0IDQ1IHNlY29uZHMgKGZvciBleGFtcGxlLCB0cnlpbmcgdG8gYWNjZXNzIGEgbGFyZ2UgV1NETCBmaWxlIG9yIGEKV1NETCBmaWxlIG9uIGEgc2xvdyBtYWNoaW5lKS4gIFlvdSBjb3VsZCBjaGFuZ2UgdGhlIHRpbWVvdXQgdmFsdWUgZm9yIHRoZSBBeGlzCldTREwgdG8gSmF2YSBlbWl0dGVyIGJ5IHN0YXJ0aW5nIHRoZSBFY2xpcHNlIHdvcmtiZW5jaCB3aXRoIHRoZQo8c2FtcD5BeGlzV3NkbDJKYXZhVGltZW91dDwvc2FtcD4gdmlydHVhbCBtYWNoaW5lIGFyZ3VtZW50LiAgVGhlIHRpbWVvdXQgdmFsdWUgaXMKc3BlY2lmaWVkIGluIG1pbGxpc2Vjb25kcy4gIFVzZSBhIHRpbWVvdXQgdmFsdWUgb2YgPHNhbXA+LTE8L3NhbXA+IGlmIHlvdSB3YW50IHRoZSBlbWl0dGVyIHRvIG5ldmVyCnRpbWUgb3V0Lgo8YnI+CkZvciBleGFtcGxlLCB0byBzZXQgdGhlIHRpbWVvdXQgdG8gNjAgc2Vjb25kcywgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0bwpzdGFydCB0aGUgRWNsaXBzZSB3b3JrYmVuY2g6Cjxicj4KPHNhbXA+ZWNsaXBzZSAtdm1hcmdzICItREF4aXNXc2RsMkphdmFUaW1lb3V0PTYwMDAwIjwvc2FtcD4KPC9saT4KPC91bD4KPC9wPgo8cD5PbmNlIHlvdSBoYXZlIGNyZWF0ZWQgeW91ciBXZWIgc2VydmljZSBmcm9tIGEgYmVhbiwgeW91IG1heQp0ZXN0IHRoZSBtZXRob2RzIG9mIHlvdXIgV2ViIHNlcnZpY2UsIHVzaW5nIHRoZSBVbml2ZXJzYWwgVGVzdCBDbGllbnQsIGFuZAp0aGVuIHB1Ymxpc2ggeW91ciBXZWIgc2VydmljZSB0byBhIFVEREkgQnVzaW5lc3MgUmVnaXN0cnkuIEZvciBtb3JlIGluZm9ybWF0aW9uCm9uIHB1Ymxpc2hpbmcgeW91ciBXZWIgc2VydmljZSB1c2luZyB0aGUgV2ViIFNlcnZpY2VzIEV4cGxvcmVyLCByZWZlciB0byBQdWJsaXNoaW5nCmEgV2ViIHNlcnZpY2UuoCBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgVW5pdmVyc2FsIFRlc3QgQ2xpZW50LCByZWZlcgp0byB0aGUgU2VydmVyIHRvb2xzIG9ubGluZSBoZWxwLjwvcD4KPC9kaXY+CjwvZGl2Pgo8ZGl2Pgo8ZGl2IGNsYXNzPSJmYW1pbHlsaW5rcyI+CjxkaXYgY2xhc3M9InBhcmVudGxpbmsiPjxzdHJvbmc+UGFyZW50IHRvcGljOjwvc3Ryb25nPiA8YSBocmVmPSIuLi9jb25jZXB0cy9jYXhpc3RvdmVyLmh0bWwiIHRpdGxlPSJUaGlzIHJ1bi10aW1lIGVudmlyb25tZW50IGlzIGZvciB1c2VycyB3aG8gcHJlZmVyIHRvIGRldmVsb3AgZm9yIHRoZSBvcGVuIEFwYWNoZSBBeGlzIHBsYXRmb3JtLiBJdCBpcyBmb3Igbm9uLXByb2R1Y3Rpb24gdXNlIG9ubHkuIEF4aXMgaXMgdGhlIHRoaXJkIGdlbmVyYXRpb24gb2YgdGhlIEFwYWNoZSBTT0FQIGltcGxlbWVudGF0aW9uLqAgSXQgZXZvbHZlZCBmcm9tIEFwYWNoZSBTT0FQICh3aGljaCBiZWdhbiBhdCBJQk0gYXMgU09BUDRKKSB0byBtYWtlIHRoZSBTT0FQIGVuZ2luZSBtb3JlIGZsZXhpYmxlLCBjb25maWd1cmFibGUsIGFuZCBhYmxlIHRvIGhhbmRsZSBib3RoIFNPQVAgYW5kIHRoZSB1cGNvbWluZyBYTUwgUHJvdG9jb2wgc3BlY2lmaWNhdGlvbiBmcm9tIHRoZSBXM0Mgb3Blbi1zb3VyY2UgZWZmb3J0LiI+Q3JlYXRpbmcgV2ViIHNlcnZpY2VzIHdpdGggdGhlIEFwYWNoZSBBeGlzIHJ1bi10aW1lIGVudmlyb25tZW50PC9hPjwvZGl2Pgo8L2Rpdj4KCjxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgQ29uY2VwdHM8L3N0cm9uZz48YnIgLz4KCjxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL2NvbmNlcHRzL2N3c2lud3NhLmh0bWwiPiBUb29scyBmb3IgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9hPjwvZGl2Pgo8ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9jb25jZXB0cy9jd3MuaHRtbCI+V2ViIHNlcnZpY2VzIGRldmVsb3BtZW50PC9hPjwvZGl2Pgo8L2Rpdj4KCjxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgVGFza3M8L3N0cm9uZz48YnIgLz4KCjxkaXY+PGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2UuanN0LndzLmRvYy51c2VyL3Rhc2tzL3RvdmVyd3MuaHRtbCI+IERldmVsb3BpbmcgV2ViIHNlcnZpY2VzPC9hPjwvZGl2Pgo8ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5jb25zdW1wdGlvbi51aS5kb2MudXNlci90YXNrcy90dWRkaWV4cC5odG1sIj4gVXNpbmcgdGhlIFdlYiBTZXJ2aWNlcyBFeHBsb3JlcjwvYT48L2Rpdj48L2Rpdj4KCjxkaXYgY2xhc3M9ImxpbmtsaXN0Ij48c3Ryb25nPlJlbGF0ZWQgUmVmZXJlbmNlPC9zdHJvbmc+PGJyIC8+Cgo8ZGl2PjxhIGhyZWY9Ii4uLy4uL29yZy5lY2xpcHNlLmpzdC53cy5kb2MudXNlci9yZWYvcndzZGwuaHRtbCI+V1NETCBkb2N1bWVudHM8L2E+PC9kaXY+PC9kaXY+CjwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4=