PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIKImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CjwhLS0gCiAgICBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMDYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAgICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKICAgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAogICAgQ29udHJpYnV0b3JzOgogICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBpbXBsZW1lbnRhdGlvbgotLT4KCjxodG1sPgo8aGVhZD4KPHRpdGxlPlVudGl0bGVkIERvY3VtZW50PC90aXRsZT4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CjwvaGVhZD4KCjxib2R5Pgo8aDI+PGE+RXhlcmNpc2UgNDogQ3JlYXRlIGEgbmV3IGRlbGl2ZXJ5IFByb2Nlc3MgdXNpbmcgY2FwYWJpbGl0eSBwYXR0ZXJucy4gPC9hPjwvaDI+CjxwPlRoZSBwdXJwb3NlIG9mIHRoaXMgZXhlcmNpc2UgaXMgdG8gbGVhcm4gaG93IHRvIGNyZWF0ZSBhIGRlbGl2ZXJ5IHByb2Nlc3MgdXNpbmcgPHN0cm9uZz5DYXBhYmlsaXR5IFBhdHRlcm5zIDwvc3Ryb25nPi4gPC9wPgo8cD5BIENhcGFiaWxpdHkgUGF0dGVybiBpcyBhIHByb2Nlc3MgkWZyYWdtZW50Jy4gSXQgcmVwcmVzZW50cyBhIHByb2Nlc3MgdGhhdCBjYW4gYmUgcmV1c2VkIG1hbnkgdGltZXMgaW4gdGhlIHNhbWUgcHJvY2VzcyBhbmQgLyBvciBpbiBkaWZmZXJlbnQgcHJvY2Vzc2VzLiBPcmdhbml6aW5nIGNvcmUgbWV0aG9kIGNvbnRlbnQgaW50byBjYXBhYmlsaXR5IHBhdHRlcm5zIGFuZCB0aGVuIHVzaW5nIHRoZSBjYXBhYmlsaXR5IHBhdHRlcm5zIHRvIGNvbnN0cnVjdCBmdWxsIGxpZmUtY3ljbGUgZGVsaXZlcnkgcHJvY2Vzc2VzIGlzIGEga2V5IGZlYXR1cmUgb2YgRWNsaXBzZSBQcm9jZXNzIEZyYW1ld29yayBDb21wb3Nlci4gPC9wPgo8cD5BIGNhcGFiaWxpdHkgcGF0dGVybiBjYW4gYmUgaW5jbHVkZWQgaW4gYW5vdGhlciBwcm9jZXNzIChhbm90aGVyIGNhcGFiaWxpdHkgcGF0dGVybiBvciBhIGRlbGl2ZXJ5IHByb2Nlc3MpIGluIHR3byB3YXlzOiA8L3A+CjxibG9ja3F1b3RlPgogIDxwPiYjMTQ5OyZuYnNwOyBDb3B5IJYgdGhpcyBjcmVhdGVzIGEgZnVsbCBjb3B5IG9mIHRoZSBjYXBhYmlsaXR5IHBhdHRlcm4gaW4gdGhlIHRhcmdldCBwcm9jZXNzIGJ1dCBkb2VzIG5vdCByZXRhaW4gYW55IGxpbmtzIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGNhcGFiaWxpdHkgcGF0dGVybi4gVGhlIGNhcGFiaWxpdHkgcGF0dGVybiBjYW4gYmUgY3VzdG9taXplZCBpbiB0aGUgbmV3IHByb2Nlc3MuIEFueSBjaGFuZ2VzIHRoYXQgYXJlIHN1YnNlcXVlbnRseSBtYWRlIHRvIHRoZSBjYXBhYmlsaXR5IHBhdHRlcm4gYXJlIG5vdCByZWZsZWN0ZWQgaW4gdGhlIHByb2Nlc3MgaW50byB3aGljaCBpdCB3YXMgY29waWVkLiA8L3A+CiAgPHA+JiMxNDk7Jm5ic3A7IEV4dGVuZHMgliB0aGlzIGV4dGVuZHMgdGhlIGNhcGFiaWxpdHkgcGF0dGVybiBpbnRvIHRoZSBwcm9jZXNzLiBUaGUgcHJvY2VzcyByZXRhaW5zIGxpbmtzIHRvIHRoZSBjYXBhYmlsaXR5IHBhdHRlcm4gYW5kIGFueSBzdWJzZXF1ZW50IGNoYW5nZXMgdG8gdGhlIGNhcGFiaWxpdHkgcGF0dGVybiBhcmUgcmVmbGVjdGVkIGluIHRoZSBwcm9jZXNzIGludG8gd2hpY2ggaXQgaXMgZXh0ZW5kZWQuIFRoZSBjYXBhYmlsaXR5IHBhdHRlcm4gY2FuIGJlIGN1c3RvbWl6ZWQgYnkgc3VwcHJlc3NpbmcgdGFza3MsIHJvbGVzLCBhbmQgd29yayBwcm9kdWN0cy4gT3RoZXIgY2hhbmdlcyBjYW5ub3QgYmUgbWFkZS4gPC9wPgo8L2Jsb2NrcXVvdGU+CjxwPldlIHdpbGwgYWRkIHNvbWUgQ2FwYWJpbGl0eSBQYXR0ZXJucyB0byB0aGUgRGVsaXZlcnkgUHJvY2VzcyB5b3UgY3JlYXRlZCBpbiBFeGVyY2lzZSAzLiA8L3A+CjxwPlRvIGFkZCBhIENhcGFiaWxpdHkgUGF0dGVybiB1c2luZyBDb3B5OiA8L3A+CjxvbD4KICA8bGk+CiAgICA8cD4gU3dpdGNoIHRvIHRoZSBhdXRob3JpbmcgcGVyc3BlY3RpdmUgYW5kIG9wZW4gdGhlIE15IFJVUCBkZWxpdmVyeSBwcm9jZXNzIHlvdSBjcmVhdGVkIGluIEV4ZXJjaXNlIDMuIDwvcD4KICA8L2xpPgogIDxsaT4KICAgIDxwPiBJbiB0aGUgQ29uZmlndXJhdGlvbnMgVmlldyBjbGljayA8c3Ryb25nPlByb2Nlc3NlcyAmZ3Q7IENhcGFiaWxpdHkgUGF0dGVybnMgJmd0OyBDbGFzc2ljIFJVUCAmZ3Q7IERpc2NpcGxpbmUgV29ya2Zsb3dzICZndDsgUHJvamVjdCBNYW5hZ2VtZW50LiA8L3N0cm9uZz48L3A+CiAgPC9saT4KICA8bGk+CiAgICA8cD4gRHJhZyBhbmQgZHJvcCB0aGUgPHN0cm9uZz5Qcm9qZWN0IE1hbmFnZW1lbnQgPC9zdHJvbmc+IENhcGFiaWxpdHkgUGF0dGVybiBvbnRvIHRoZSBJbmNlcHRpb24gcGhhc2UgaW4gTXkgUlVQIGRlbGl2ZXJ5IHByb2Nlc3MuIDwvcD4KICA8L2xpPgogIDxsaT4KICAgIDxwPiBTZWxlY3QgPHN0cm9uZz5Db3B5IDwvc3Ryb25nPiBpbiB0aGUgcG9wLXVwIGJveC4gPC9wPgogIDwvbGk+CiAgPGxpPiAgIEV4cGFuZCBvbmUgb2YgdGhlIGFjdGl2aXRpZXMgaW4gdGhlIFByb2plY3QgTWFuYWdlbWVudCBjYXBhYmlsaXR5IHBhdHRlcm4gdG8gdGhlIFRhc2sgbGV2ZWwuIE5vdGUgdGhhdCB0aGUgdGFzayBuYW1lIGlzIGRpc3BsYXllZCBpbiBibGFjay4gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgdGFzayBpcyBhdmFpbGFibGUgZm9yIHlvdSB0byBlZGl0LiBBbnkgY2hhbmdlcyBpbiB0aGUgQ2FwYWJpbGl0eSBQYXR0ZXJuIHdpbGwgbm90IGJlIHJlZmxlY3RlZCBpbiB5b3VyIHByb2Nlc3MuIFlvdSBjYW4gZWRpdCB0aGUgdGFzayBpbiB0aGUgUHJvcGVydGllcyB2aWV3LiA8L2xpPgo8L29sPgo8cD5UbyBhZGQgYSBDYXBhYmlsaXR5IFBhdHRlcm4gdXNpbmcgRXh0ZW5kczogIDwvcD4KPG9sIHN0YXJ0PSI2Ij4KICA8bGk+CiAgICA8cD4gQ3JlYXRlIGEgbmV3IFBoYXNlIGluIHRoZSBNeSBSVVAgZGVsaXZlcnkgcHJvY2Vzcy4gUmlnaHQtY2xpY2sgb24gdGhlIGZpcnN0IHJvdyBhbmQgc2VsZWN0IDxzdHJvbmc+TmV3IENoaWxkICZndDsgUGhhc2UgPC9zdHJvbmc+LiBDYWxsIHRoZSBwaGFzZSwgRWxhYm9yYXRpb24uIDwvcD4KICA8L2xpPgogIDxsaT4KICAgIDxwPiBDcmVhdGUgYSBuZXcgSXRlcmF0aW9uIGluIHRoZSBFbGFib3JhdGlvbiBwaGFzZS4gUmlnaHQtY2xpY2sgb24gdGhlIEVsYWJvcmF0aW9uIHBoYXNlIGFuZCBzZWxlY3QgPHN0cm9uZz5OZXcgQ2hpbGQgJmd0OyBJdGVyYXRpb24gPC9zdHJvbmc+LiBDYWxsIHRoZSBpdGVyYXRpb24sIEVsYWJvcmF0aW9uIEl0ZXJhdGlvbiAxLiA8L3A+CiAgPC9saT4KICA8bGk+CiAgICA8cD4gSW4gdGhlIENvbmZpZ3VyYXRpb25zIFZpZXcsIGNsaWNrIDxzdHJvbmc+UHJvY2Vzc2VzICZndDsgQ2FwYWJpbGl0eSBQYXR0ZXJucyAmZ3Q7IENsYXNzaWMgUlVQICZndDsgRGlzY2lwbGluZSBXb3JrZmxvd3MgJmd0OyBQcm9qZWN0IE1hbmFnZW1lbnQuIDwvc3Ryb25nPjwvcD4KICA8L2xpPgogIDxsaT4KICAgIDxwPiBEcmFnIGFuZCBkcm9wIHRoZSA8c3Ryb25nPlByb2plY3QgTWFuYWdlbWVudCA8L3N0cm9uZz4gQ2FwYWJpbGl0eSBQYXR0ZXJuIG9udG8gdGhlIEVsYWJvcmF0aW9uIEl0ZXJhdGlvbiAxIGl0ZXJhdGlvbiBpbiBNeSBSVVAgUHJvY2Vzcy4gPC9wPgogIDwvbGk+CiAgPGxpPgogICAgPHA+IFNlbGVjdCA8c3Ryb25nPkV4dGVuZCA8L3N0cm9uZz4gaW4gdGhlIHBvcC11cCBib3guIDwvcD4KICA8L2xpPgogIDxsaT4KICAgIDxwPiBFeHBhbmQgb25lIG9mIHRoZSBhY3Rpdml0aWVzIGluIHRoZSBQcm9qZWN0IE1hbmFnZW1lbnQgY2FwYWJpbGl0eSBwYXR0ZXJuIHlvdSBoYXZlIGp1c3QgYWRkZWQgdG8gdGhlIFRhc2sgbGV2ZWwuIE5vdGUgdGhhdCB0aGUgdGFzayBuYW1lIGlzIGRpc3BsYXllZCBpbiBncmVlbiBpdGFsaWNzLiBUaGlzIGluZGljYXRlcyB0aGF0IHRoZSB0YXNrIGlzIGluIGEgcGFydCBvZiBhIHByb2Nlc3MgZGVmaW5lZCBlbHNld2hlcmUgliBhIENhcGFiaWxpdHkgUGF0dGVybi4gQW55IGNoYW5nZXMgdG8gdGhlIENhcGFiaWxpdHkgUGF0dGVybiB3aWxsIGJlIHJlZmxlY3RlZCBpbiB5b3VyIHByb2Nlc3MuIEFsc28sIHRoZSBQcm9wZXJ0aWVzIHZpZXcgc2hvd3MgdGhlIHRhc2sgZGV0YWlscywgYnV0IHRoZXkgY2Fubm90IGJlIGVkaXRlZC4gPC9wPgogIDwvbGk+CiAgPGxpPlJpZ2h0IGNsaWNrIG9uIGEgdGFzayBpbiB0aGUgZXh0ZW5kZWQgY2FwYWJpbGl0eSBwYXR0ZXJuIGFuZCBzZWxlY3QgPHN0cm9uZz5TdXBwcmVzcyA8L3N0cm9uZz4uIFRoZSB0YXNrIGlzIGdyYXllZCBvdXQuIFRoZSB0YXNrIHdpbGwgbm90IGFwcGVhciBpbiB0aGUgcHVibGlzaGVkIHZlcnNpb24gb2YgdGhlIGRlbGl2ZXJ5IHByb2Nlc3MsIG5vciB3aWxsIGl0IGJlIGluY2x1ZGVkIGluIGFuIGV4cG9ydCBvZiB0aGUgcHJvY2Vzcy48L2xpPgo8L29sPgo8L2JvZHk+CjwvaHRtbD4K