PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIGh0bWwKICBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sPgo8aGVhZD4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vLi4vY29tLmlibS5oZWxwLmRvYy9zd2dfaW5mb19jb21tb24uY3NzIiAvPgo8dGl0bGU+V2ViIHRvb2xzIGZlYXR1cmVzPC90aXRsZT4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCI+CiAgICBmdW5jdGlvbiBwb3B1cF93aW5kb3coIHVybCwgaWQsIHdpZHRoLCBoZWlnaHQgKQogICAgewogICAgICBwb3B1cCA9IHdpbmRvdy5vcGVuKCB1cmwsIGlkLCAndG9vbGJhcj1ubyxzY3JvbGxiYXJzPW5vLGxvY2F0aW9uPW5vLHN0YXR1c2Jhcj1ubyxtZW51YmFyPW5vLHJlc2l6YWJsZT1ubyx3aWR0aD0nICsgd2lkdGggKyAnLGhlaWdodD0nICsgaGVpZ2h0ICsgJyxsZWZ0PSx0b3A9JyApOwogICAgICBwb3B1cC5mb2N1cygpOwogICAgfQo8L3NjcmlwdD48c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiBzcmM9ImhlbHAvbGl2ZUhlbHAuanMiPjwvc2NyaXB0PjwvaGVhZD4KPGJvZHkgaWQ9ImN3dGZlYXR1cmVzIj48YSBuYW1lPSJjd3RmZWF0dXJlcyI+PCEtLSAtLT48L2E+Cgo8aDEgY2xhc3M9InRvcGljdGl0bGUxIj5XZWIgdG9vbHMgZmVhdHVyZXM8L2gxPgo8ZGl2PjxwPlRoZSBpbnRlZ3JhdGVkIFdlYiBkZXZlbG9wbWVudAoKZW52aXJvbm1lbnQgbWFrZXMgaXQgZWFzeSB0byBjb29wZXJhdGl2ZWx5IGNyZWF0ZSwgYXNzZW1ibGUsIHB1Ymxpc2gsIGRlcGxveQoKYW5kIG1haW50YWluIGR5bmFtaWMsIGludGVyYWN0aXZlIFdlYiBhcHBsaWNhdGlvbnMuPC9wPjxkaXYgY2xhc3M9InAiPlRoZSBXZWIgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBoaWdoLWxldmVsIGNhcGFiaWxpdGllczoKCiA8dWw+PGxpPkR5bmFtaWMgV2ViIHByb2plY3QgY3JlYXRpb24sIHVzaW5nIHRoZSBKMkVFLWRlZmluZWQgaGllcmFyY2h5LCBvciBhIHN0YXRpYwoKdmVyc2lvbiB0aGF0IHJlZHVjZXMgcHJvamVjdCBvdmVyaGVhZCB3aGVuIGR5bmFtaWMgZWxlbWVudHMgYXJlIG5vdCByZXF1aXJlZC4KCiBTdGF0aWMgV2ViIHByb2plY3RzIGNhbiBsYXRlciBiZSBjb252ZXJ0ZWQgdG8gZHluYW1pYyBXZWIgcHJvamVjdHMuPC9saT4KPGxpPkNyZWF0aW9uIGFuZCBlZGl0aW5nIG9mIGEgV2ViIGFwcGxpY2F0aW9uIGRlcGxveW1lbnQgZGVzY3JpcHRvciAoPHNwYW4gY2xhc3M9ImZpbGVwYXRoIj53ZWIueG1sPC9zcGFuPikKCiBmaWxlPC9saT4KPGxpPkpTUCBhbmQgSFRNTCBmaWxlIGNyZWF0aW9uLCB2YWxpZGF0aW9uLCBlZGl0aW5nLCBhbmQgZGVidWdnaW5nPC9saT4KPGxpPkphdmFTY3JpcHSZIGVkaXRpbmcgYW5kIHZhbGlkYXRpb248L2xpPgo8bGk+Q3VzdG9tIEpTUCB0YWdzICh0YWcgbGlicmFyeSkgc3VwcG9ydCwgYmFzZWQgb24gdGhlIDxjaXRlPlN1biBNaWNyb3N5c3RlbXMKCiBKU1AgMS4yIFNwZWNpZmljYXRpb248L2NpdGU+PC9saT4KPGxpPkFuIGV4dGVuc2libGUgdmlldywgY2FsbGVkIHRoZSBTbmlwcGV0cyB2aWV3LCB3aGljaCBhbGxvd3MgdXNlcnMgdG8gY2F0YWxvZwoKIGFuZCBvcmdhbml6ZSByZXVzYWJsZSBwcm9ncmFtbWluZyBvYmplY3RzLCBzdWNoIGFzIEhUTUwsIEphdmFTY3JpcHQsCgogYW5kIEpTUCBtYXJrdXAsIGFsb25nIHdpdGggZmlsZXMgYW5kIGN1c3RvbSB0YWdzLCB0aGF0IGNhbiBiZSBlbWJlZGRlZCBpbgoKIGV4aXN0aW5nIGZpbGVzPC9saT4KPGxpPkR5bmFtaWMgdGFnIGhlbHAgKGNvbnRlbnQgYXNzaXN0KSAsIHdoaWNoIGRpc3BsYXlzIHRhZyB1c2FnZSBhbmQgYXR0cmlidXRlCgppbmZvcm1hdGlvbiBmb3IgIEhUTUwsIEpTUCwgYW5kIEphdmFTY3JpcHQgdGFncyBiYXNlZCBvbiBjdXJzb3IgbG9jYXRpb24KCiBpbiB0aGUgU291cmNlIHBhZ2UuIChZb3UgaW52b2tlIENvbnRlbnQgQXNzaXN0IGJ5IHByZXNzaW5nIChDdHJsK1NwYWNlYmFyKQoKKTwvbGk+CjxsaT5RdWljayBFZGl0IHZpZXcgdGhhdCBhbGxvd3MgeW91IHRvIGVkaXQgc3BlY2lmaWMgcGllY2VzIG9mIGNvZGUgaW4gY29udGV4dCwKCiBpbmNsdWRpbmcgYWRkIGFjdGlvbnMgYW5kIGV2ZW50czwvbGk+CjxsaT5QYWxldHRlIHZpZXcgdG8gcmV1c2UgY29tcG9uZW50cywgaW5jbHVkaW5nIEhUTUwsIEpTUCwgSmF2YVNjcmlwdCwKCiBzaXRlIHBhcnRzLCBhbmQgbW9yZTwvbGk+CjxsaT5BdHRyaWJ1dGVzIGVkaXRpbmcgYXZhaWxhYmxlIGluIGl0cyBvd24gdmlldzwvbGk+CjxsaT5DYXNjYWRpbmcgc3R5bGUgc2hlZXQgKENTUykgZWRpdGluZyBzdXBwb3J0PC9saT4KPGxpPkhUVFAvRlRQIGltcG9ydDwvbGk+CjxsaT5GVFAgZXhwb3J0IChzaW1wbGUgcmVzb3VyY2UgY29weSkgdG8gYSBzZXJ2ZXI8L2xpPgo8bGk+V0FSIGZpbGUgaW1wb3J0LCBleHBvcnQsIGFuZCB2YWxpZGF0aW9uIChOb3cgaW5jbHVkZXMgZXZlbiBtb3JlIGZpbGUgdHlwZXMpLjwvbGk+CjxsaT5MaW5rIHBhcnNpbmcsIHZhbGlkYXRpb24sIGFuZCBtYW5hZ2VtZW50LCB3aGljaCBpbmNsdWRlcyBjb252ZXJ0aW5nIGxpbmtzLAoKIGZsYWdnaW5nIGJyb2tlbiBsaW5rcywgYW5kIGZpeGluZyB1cCBsaW5rcyBhcyBsaW5rZWQgcmVzb3VyY2VzIGFyZSBtb3ZlZAoKb3IgIHJlbmFtZWQ8L2xpPgo8bGk+U2VydmxldCBjcmVhdGlvbiwgd2hpY2ggZW1wbG95cyB0aGUgU2VydmxldCBXaXphcmQgdG8gY3JlYXRlIG5ldyBzZXJ2bGV0cwoKIGFuZCBhZGQgc2VydmxldCBtYXBwaW5ncyB0byB0aGUgV2ViIGRlcGxveW1lbnQgZGVzY3JpcHRvciBmaWxlczwvbGk+CjxsaT5JbnRlZ3JhdGlvbiB3aXRoIHRoZSBXZWJTcGhlcmU8c3VwPq48L3N1cD4gdGVzdCBlbnZpcm9ubWVudDwvbGk+CjxsaT5QdWJsaXNoaW5nIHN1cHBvcnQgZm9yIG11bHRpcGxlIFdlYiBzZXJ2ZXIgdHlwZXM8L2xpPgo8bGk+V2l6YXJkcyBmb3IgTGlzdGVuZXIgYW5kIEZpbHRlciBjbGFzc2VzPC9saT4KPC91bD4KPC9kaXY+CjwvZGl2Pgo8ZGl2PjxwPjxiIGNsYXNzPSJyZWxjb25jZXB0c2hkIj5SZWxhdGVkIGNvbmNlcHRzPC9iPjxiciAvPgo8YSBocmVmPSJjd2ViZGV2ZWxvcG1lbnR0b29scy5odG1sIiB0aXRsZT0iIj5XZWIgZGV2ZWxvcG1lbnQgdG9vbHM8L2E+PGJyIC8+CjxhIGhyZWY9ImNjd2VicHJqLmh0bWwiIHRpdGxlPSIiPkR5bmFtaWMgV2ViIHByb2plY3RzIGFuZCBhcHBsaWNhdGlvbnM8L2E+PGJyIC8+CjxhIGhyZWY9ImNjc3RhdGljLmh0bWwiIHRpdGxlPSIiPlN0YXRpYyBXZWIgcHJvamVjdHM8L2E+PGJyIC8+CjxhIGhyZWY9ImNwZGpzcHMuaHRtbCIgdGl0bGU9IiI+SmF2YVNlcnZlciBQYWdlcyAoSlNQKSB0ZWNobm9sb2d5PC9hPjxiciAvPgo8YSBocmVmPSJjd2VicGFnZWRlc2lnbi5odG1sIiB0aXRsZT0iIj5XZWIgcGFnZSBkZXNpZ248L2E+PGJyIC8+CjxhIGhyZWY9ImN3ZWJ0ZWNobm9sb2dpZXMuaHRtbCIgdGl0bGU9IiI+V2ViIHRlY2hub2xvZ2llczwvYT48YnIgLz4KPGEgaHJlZj0iY3d3YXJvdnIuaHRtbCIgdGl0bGU9IiI+V2ViIGFyY2hpdmUgKFdBUikgZmlsZXM8L2E+PGJyIC8+CjxhIGhyZWY9ImN3d2VkdHZ3Lmh0bWwiIHRpdGxlPSIiPldvcmtiZW5jaCBpbnRlZ3JhdGlvbiB3aXRoIFdlYiBlZGl0b3JzPC9hPjxiciAvPgo8L3A+CjxwPjxiIGNsYXNzPSJyZWx0YXNrc2hkIj5SZWxhdGVkIHRhc2tzPC9iPjxiciAvPgo8YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3Qud2VidG9vbHMuZG9jLnVzZXIvdG9waWNzL3R3Y3JlcHJqLmh0bWwiPkNyZWF0aW5nIGEgZHluYW1pYyBXZWIgcHJvamVjdDwvYT48YnIgLz4KPGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LndlYnRvb2xzLmRvYy51c2VyL3RvcGljcy90amNyZWpzcC5odG1sIj5DcmVhdGluZyBKYXZhU2VydmVyIFBhZ2VzIChKU1ApIGZpbGVzPC9hPjxiciAvPgo8YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3Qud2VidG9vbHMuZG9jLnVzZXIvdG9waWNzL3R3c3J2d2l6Lmh0bWwiPkNyZWF0aW5nIHNlcnZsZXRzPC9hPjxiciAvPgo8YSBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3Qud2VidG9vbHMuZG9jLnVzZXIvdG9waWNzL3RwYWxldHRlMS5odG1sIj5Vc2luZyB0aGUgcGFsZXR0ZTwvYT48YnIgLz4KPGEgaHJlZj0iLi4vLi4vb3JnLmVjbGlwc2Uud3N0LndlYnRvb2xzLmRvYy51c2VyL3RvcGljcy90d3BsaWIuaHRtbCI+QWRkaW5nIFdlYiBsaWJyYXJ5IHByb2plY3RzPC9hPjxiciAvPgo8L3A+CjwvZGl2Pgo8cD4KCQkoQykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDA1LiBBbGwgUmlnaHRzIFJlc2VydmVkLgoJCTwvcD4KPC9ib2R5Pgo8L2h0bWw+