<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE module [
  <!ELEMENT module (dtdversion,name,version,description*,help*,about*,requires*,file+)>
  <!ELEMENT dtdversion (#PCDATA)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT version (#PCDATA)>
  <!ELEMENT mincmsversion (#PCDATA)>
  <!ELEMENT description (#PCDATA)>
  <!ELEMENT help (#PCDATA)>
  <!ELEMENT about (#PCDATA)>
  <!ELEMENT requires (requiredname,requiredversion)>
  <!ELEMENT requiredname (#PCDATA)>
  <!ELEMENT requiredversion (#PCDATA)>
  <!ELEMENT file (filename,isdir,data)>
  <!ELEMENT filename (#PCDATA)>
  <!ELEMENT isdir (#PCDATA)>
  <!ELEMENT data (#PCDATA)>
]>
<module>
	<dtdversion>1.3</dtdversion>
	<name>Ping</name>
	<version>0.5.3</version>
  <mincmsversion>2.0</mincmsversion>
	<help><![CDATA[PGgzPlF1ZSBmYWl0IGNlIG1vZHVsZSA/PC9oMz4KPHA+Q2UgbW9kdWxlIHLDqWN1cMOocmUgbGVzIHLDqXN1bHRhdHMgZGUgdm90cmUgY2x1YiBldCByw6lhbGlzZSBkZXMgdHJhaXRlbWVudHMgYWZpbiBkZSBsZXMgZGlzcG9zZXIgc3VyIHZvdHJlIHNpdGUgaW50ZXJuZXQuPC9wPgo8aDM+Q29tbWVudCBsJ3V0aWxpc2VyID88L2gzPgo8cD5MZSB0YWcgcGFyIGTDqWZhdXQgZXN0IGNlbHVpLWNpIHtjbXNfbW9kdWxlIG1vZHVsZT0nUGluZyd9PC9wPgo8aDM+U3VwcG9ydDwvaDM+Cjx1bD4KPGxpPlBvdXIgb2J0ZW5pciBsYSBkZXJuacOocmUgdmVyc2lvbiBvZmZpY2llbGxlLCBGQVFzLCBvdSBwb3VyIHNpZ25hbGVyIHVuIGJ1ZywgZmFpcmUgdW5lIGRlbWFuZGUgZCdhbcOpbGlvcmF0aW9ucywgbWVyY2kgZGUgY29uc3VsdGVyIGxhIGZvcmdlIGR1IG1vZHVsZSDDoCBjZXR0ZSBhZHJlc3NlIDogCjxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvcGluZy8iPlBpbmc8L2E+LjwvbGk+CjwvdWw+CjxwPkNlIG1vZHVsZSBlc3QgZm91cm5pIHNvdXMgbGljZW5jZSBHUEwgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LlBvdXIgdXRpbGlzZXIgbGUgbG9naWNpZWwsIHZvdXMgZGV2ZXogZW4gIGFjY2VwdGVyIGxlcyB0ZXJtZXM8L3A+Cgo8aDM+Q29weXJpZ2h0IGV0IExpY2VuY2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMTQsIENsYXVkZSBTaW9oYW4gPGEgaHJlZj0ibWFpbHRvOmNsYXVkZUBhZ2ktd2ViY29uc2VpbC5mciI+Y2xhdWRlQGFnaS13ZWJjb25zZWlsLmZyPC9hPi4gVG91cyBkcm9pdHMgcsOpc2VydsOpcy48L3A+CjxoMz5EZXBlbmRlbmNpZXM8L2gzPjx1bD48bGk+Q0dDYWxlbmRhciA9Jmd0OyAyLjEuNC4xPC9saT48L3VsPjxoMz5QYXJhbWV0ZXJzPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gdG91cj0iMSIgLSBVdGlsZXogbGUgTsKwIGRlIGpvdXJuw6llIHBvdXIgb2J0ZW5pciBzZXMgcsOpc3VsdGF0cyB1bmlxdWVtZW50PC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiB0eXBlX2NvbXBldD0iMSIgLSBGaWx0cmV6IGxlcyByw6lzdWx0YXRzIGVuIHByw6ljaXNhbnQgbGUgdHlwZSBkZSBjb21ww6l0aXRpb248L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGRhdGVfZGVidXQ9IiIgLSBVdGlsaXNleiBsYSBkYXRlIGRlIGTDqWJ1dCBkZSBjb21ww6l0aXRpb24gYXUgZm9ybWF0IChhYWFhLW1tLWpqKTwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZGF0ZV9maW49IiIgLSBVdGlsaXNleiBsYSBkYXRlIGRlIGZpbiBhdmVjIGxhIGRhdGUgZGUgZMOpYnV0IGF1IG3Dqm1lIGZvcm1hdDwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGltaXQ9IjEwMDAwIiAtIFBvdXIgbGltaXRlciBsZSBuYiDDoCB4IHLDqXN1bHRhdHM8L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBhZ2ktd2ViY29uc2VpbCAmbHQ7Y2xhdWRlQGFnaS13ZWJjb25zZWlsLmZyJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDAuNS4zPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPgo8bGk+VmVyc2lvbiAwLjFiZXRhMywgTm92IDIwMTQgU2MgQW3DqWxpb3JhdGlvbnMgZHUgZnJvbnQtb2ZmaWNlIGV0IGTDqWJvZ3VhZ2UgZHUgYmFjazwvbGk+Cjx1bD4KICAgPGxpPk1pc2UgbmUgcGxhY2UgZHUgZnJvbnQtb2ZmaWNlLjwvbGk+CiAgIDxsaT5BbcOpbGlvcmF0aW9ucyBkdSBiYWNrLW9mZmljZSBldCBjb3JyZWN0aW9ucyBkZSBidWdzLjwvbGk+CjwvdWw+PGJyIC8+]]></about>
	<description><![CDATA[Ce module calcule vos points FFTT.]]></description>
	<requires>
	  <requiredname>CGCalendar</requiredname>
	  <requiredversion>2.1.4.1</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAAEAAAAAIAAAAQAAAABAMAAAAhwAAIAwAADAMAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAQAAAHgAAAAEAAAQAAB0AGkAbwBuAC4AZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAEAAAAFABhAGMAdABpAG8AbgAuAGUAZABpAHQAXwB0AGUAYQBtAC4AcABoAHBJbG9jYmxvYgAAABAAAABcAAAGTP///////wAAAAAABQAAAAIAagBzZHNjbGJvb2wAaQBvAG4ALgBlAHEAdQBpAHAAZQAuAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAIAagBzbGcxU2NvbXAAAAAAAAAAAAAAAAIAagBzbW9ERGR1dGMAANK6fwgAAAAAAAIAagBzbW9kRGR1dGMAANK6fwgAAAAAAAIAagBzcGgxU2NvbXAAAAAAAAAAAAAAAAQAbABhAG4AZ0lsb2NibG9iAAAAEAAAAQ4AAAx5////////AAAAAAAEAGwAYQBuAGdkc2NsYm9vbAAAAAADAGwAaQBiSWxvY2Jsb2IAAAAQAAABwAAADHn///////8AAAAAAAMAbABpAGJid3NwYmxvYgAAAPpicGxpc3QwMNkBAgMEBQYHCAkKCwoLCgsQEQpdU2hvd1N0YXR1c0JhcltTaG93U2lkZWJhcltTaG93UGF0aGJhcltTaG93VG9vbGJhcltTaG93VGFiVmlld18QFENvbnRhaW5lclNob3dTaWRlYmFyXFdpbmRvd0JvdW5kc1xTaWRlYmFyV2lkdGhfEBVQcmV2aWV3UGFuZVZpc2liaWxpdHkICQgJCAlfEBl7ezYzNSwgMTU3fSwgezExNjcsIDc2M319EKMICBspNUFNWXB9iqKjpKWmp6jExgAAAAAAAAEBAAAAAAAAABMAAAAAAAAAAAAAAAAAAADHAAAAAwBsAGkAYmRzY2xib29sAAAAAAMAbABpAGJsc3ZQYmxvYgAAApNicGxpc3QwMNoBAgMEBQYHCAkKCwwNDkNERRcMR1hpY29uU2l6ZV8QD3Nob3dJY29uUHJldmlld18QEWNhbGN1bGF0ZUFsbFNpemVzV2NvbHVtbnNfEA9zY3JvbGxQb3NpdGlvbllYdGV4dFNpemVfEA9zY3JvbGxQb3NpdGlvblhac29ydENvbHVtbl8QEHVzZVJlbGF0aXZlRGF0ZXNfEBJ2aWV3T3B0aW9uc1ZlcnNpb24jQDAAAAAAAAAJCKoPGB0hJiswNTo/1BAREhMMFQwXV3Zpc2libGVVd2lkdGhZYXNjZW5kaW5nWmlkZW50aWZpZXIJEQJiCVRuYW1l1BMREhAZGg0MXGRhdGVNb2RpZmllZBC1CAnUExESEB4aDQ1bZGF0ZUNyZWF0ZWQICNQTERIQIiMNDFRzaXplEGEICdQTERIQJygMDFRraW5kEHMJCdQTERIQLC0MDVVsYWJlbBBkCQjUExESEDEyDA1XdmVyc2lvbhBLCQjUExESEDY3DA1YY29tbWVudHMRASwJCNQTERIQOzwNDV5kYXRlTGFzdE9wZW5lZBDICAjUExESEEAaDQ1ZZGF0ZUFkZGVkCAgjQE4AAAAAAAAjQCgAAAAAAAAjAAAAAAAAAAAJEAAACAAdACYAOABMAFQAZgBvAIEAjACfALQAvQC+AL8AygDTANsA4QDrAPYA9wD6APsBAAEJARYBGAEZARoBIwEvATABMQE6AT8BQQFCAUMBTAFRAVMBVAFVAV4BZAFmAWcBaAFxAXkBewF8AX0BhgGPAZIBkwGUAZ0BrAGuAa8BsAG5AcMBxAHFAc4B1wHgAeEAAAAAAAACAQAAAAAAAABIAAAAAAAAAAAAAAAAAAAB4wAAAAMAbABpAGJsc3ZwYmxvYgAAAplicGxpc3QwMNoBAgMEBQYHCAkKCwwNDkhJShAMJVhpY29uU2l6ZV8QD3Nob3dJY29uUHJldmlld18QEWNhbGN1bGF0ZUFsbFNpemVzV2NvbHVtbnNfEA9zY3JvbGxQb3NpdGlvbllYdGV4dFNpemVfEA9zY3JvbGxQb3NpdGlvblhac29ydENvbHVtbl8QEHVzZVJlbGF0aXZlRGF0ZXNfEBJ2aWV3T3B0aW9uc1ZlcnNpb24jQDAAAAAAAAAJCNkPEBESExQVFhcYISYrMDU6P0RYY29tbWVudHNUbmFtZVtkYXRlQ3JlYXRlZFRzaXplVWxhYmVsVGtpbmRXdmVyc2lvbl5kYXRlTGFzdE9wZW5lZFxkYXRlTW9kaWZpZWTUGRobHB0eDA1VaW5kZXhVd2lkdGhZYXNjZW5kaW5nV3Zpc2libGUQBxEBLAkI1BwaGxkMIwwlCRECYgkQANQZGhscJygNDRACELUICNQZGhscLC0NDBADEGEICdQZGhscMTIMDRAFEGQJCNQZGhscNjcMDBAEEHMJCdQZGhscOzwMDRAGEEsJCNQZGhscQEENDRAIEMgICNQZGhscRSgNDBABCAkjQE4AAAAAAAAjQCgAAAAAAAAjAAAAAAAAAAAJAAgAHQAmADgATABUAGYAbwCBAIwAnwC0AL0AvgC/ANIA2wDgAOwA8QD3APwBBAETASABKQEvATUBPwFHAUkBTAFNAU4BVwFYAVsBXAFeAWcBaQFrAWwBbQF2AXgBegF7AXwBhQGHAYkBigGLAZQBlgGYAZkBmgGjAaUBpwGoAakBsgG0AbYBtwG4AcEBwwHEAcUBzgHXAeAAAAAAAAACAQAAAAAAAABMAAAAAAAAAAAAAAAAAAAB4QAAAAMAbABpAGJ2U3JubG9uZwAAAAEAAAAUAG0AZQB0AGgAbwBkAC4AdQBuAGkAbgBzAHQAYQBsAGwALgBwAGgAcElsb2NibG9iAAAAEAAAAQ4AAAzW////////AAAAAAASAG0AZQB0AGgAbwBkAC4AdQBwAGcAcgBhAGQAZQAuAHAAaABwSWxvY2Jsb2IAAAAQAAABwAAADNb///////8AAAAAAA4AbQBvAGQAdQBsAGUAaQBuAGYAbwAuAGkAbgBpSWxvY2Jsb2IAAAAQAAAAXAAADTP///////8AAAAAAA8AUABpAG4AZwAuAG0AbwBkAHUAbABlAC4AcABoAHBJbG9jYmxvYgAAABAAAAEOAAANM////////wAAAAAACQB0AGUAbQBwAGwAYQB0AGUAc0lsb2NibG9iAAAAEAAAAcAAAA0z////////AAAAAAAJAHQAZQBtAHAAbABhAHQAZQBzYndzcGJsb2IAAAD5YnBsaXN0MDDZAQIDBAUGBwgJCgsKCwoLEBEKXVNob3dTdGF0dXNCYXJbU2hvd1NpZGViYXJbU2hvd1BhdGhiYXJbU2hvd1Rvb2xiYXJbU2hvd1RhYlZpZXdfEBRDb250YWluZXJTaG93U2lkZWJhclxXaW5kb3dCb3VuZHNcU2lkZWJhcldpZHRoXxAVUHJldmlld1BhbmVWaXNpYmlsaXR5CAkICQgJXxAYe3s2MTUsIDUzNn0sIHs3NzAsIDQzNn19EKMICBspNUFNWXB9iqKjpKWmp6jDxQAAAAAAAAEBAAAAAAAAABMAAAAAAAAAAAAAAAAAAADGAAAACQB0AGUAbQBwAGwAYQB0AGUAc2RzY2xib29sAAAAAAkAdABlAG0AcABsAGEAdABlAHNsc3ZQYmxvYgAAAo5icGxpc3QwMNoBAgMEBQYHCAkKCwsNDkJDRBRFRl8QEHVzZVJlbGF0aXZlRGF0ZXNfEA9zaG93SWNvblByZXZpZXdfEBFjYWxjdWxhdGVBbGxTaXplc1djb2x1bW5zXxAPc2Nyb2xsUG9zaXRpb25ZWHRleHRTaXplXxAPc2Nyb2xsUG9zaXRpb25YWnNvcnRDb2x1bW5YaWNvblNpemVfEBJ2aWV3T3B0aW9uc1ZlcnNpb24JCQiqDxgdISYrMDU5PtQQERITFBULC1ppZGVudGlmaWVyVXdpZHRoWWFzY2VuZGluZ1d2aXNpYmxlVG5hbWURASwJCdQQERITGRoNC1xkYXRlTW9kaWZpZWQQtQgJ1BAREhMeGg0NW2RhdGVDcmVhdGVkCAjUEBESEyIjDQtUc2l6ZRBhCAnUEBESEycoCwtUa2luZBBzCQnUEBESEywtCw1VbGFiZWwQZAkI1BAREhMxMgsNV3ZlcnNpb24QSwkI1BAREhM2FQsNWGNvbW1lbnRzCQjUEBESEzo7DQ1eZGF0ZUxhc3RPcGVuZWQQyAgI1BAREhM/Gg0NWWRhdGVBZGRlZAgII0CDCAAAAAAAI0AoAAAAAAAAIwAAAAAAAAAAI0AwAAAAAAAAEAAACAAdADAAQgBWAF4AcAB5AIsAlgCfALQAtQC2ALcAwgDLANYA3ADmAO4A8wD2APcA+AEBAQ4BEAERARIBGwEnASgBKQEyATcBOQE6ATsBRAFJAUsBTAFNAVYBXAFeAV8BYAFpAXEBcwF0AXUBfgGHAYgBiQGSAaEBowGkAaUBrgG4AbkBugHDAcwB1QHeAAAAAAAAAgEAAAAAAAAARwAAAAAAAAAAAAAAAAAAAeAAAAAJAHQAZQBtAHAAbABhAHQAZQBzbHN2cGJsb2IAAAKUYnBsaXN0MDDaAQIDBAUGBwgJCgsLDQ5HSEkQSiJfEBB1c2VSZWxhdGl2ZURhdGVzXxAPc2hvd0ljb25QcmV2aWV3XxARY2FsY3VsYXRlQWxsU2l6ZXNXY29sdW1uc18QD3Njcm9sbFBvc2l0aW9uWVh0ZXh0U2l6ZV8QD3Njcm9sbFBvc2l0aW9uWFpzb3J0Q29sdW1uWGljb25TaXplXxASdmlld09wdGlvbnNWZXJzaW9uCQkI2Q8QERITFBUWFxghJSovNDk+Q1hjb21tZW50c1RuYW1lW2RhdGVDcmVhdGVkVHNpemVVbGFiZWxUa2luZFd2ZXJzaW9uXmRhdGVMYXN0T3BlbmVkXGRhdGVNb2RpZmllZNQZGhscHR4LDVVpbmRleFV3aWR0aFlhc2NlbmRpbmdXdmlzaWJsZRAHEQEsCQjUGRobHCIeCwsQAAkJ1BkaGxwmJw0NEAIQtQgI1BkaGxwrLA0LEAMQYQgJ1BkaGxwwMQsNEAUQZAkI1BkaGxw1NgsLEAQQcwkJ1BkaGxw6OwsNEAYQSwkI1BkaGxw/QA0NEAgQyAgI1BkaGxxEJw0LEAEICSNAgwgAAAAAACNAKAAAAAAAACMAAAAAAAAAACNAMAAAAAAAAAAIAB0AMABCAFYAXgBwAHkAiwCWAJ8AtAC1ALYAtwDKANMA2ADkAOkA7wD0APwBCwEYASEBJwEtATcBPwFBAUQBRQFGAU8BUQFSAVMBXAFeAWABYQFiAWsBbQFvAXABcQF6AXwBfgF/AYABiQGLAY0BjgGPAZgBmgGcAZ0BngGnAakBqwGsAa0BtgG4AbkBugHDAcwB1QAAAAAAAAIBAAAAAAAAAEsAAAAAAAAAAAAAAAAAAAHeAAAACQB0AGUAbQBwAGwAYQB0AGUAc3ZTcm5sb25nAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAJAC4ARABTAF8AUwB0AG8AcgBlSWxvY2Jsb2IAAAAQAAABDgAAAB////////8AAAAAABYAYQBjAHQAaQBvAG4ALgBhAGIAbABlAF8AcABsAGEAeQBlAHIALgBwAGgAcElsb2NibG9iAAAAEAAAAFwAAAB8////////AAAAAAAbAGEAYwB0AGkAbwBuAC4AYQBkAGQAXwBhAGwAbABfAHMAaQB0AF8AbQBlAG4AcwAuAHAAaABwSWxvY2Jsb2IAAAAQAAABDgAAAHz///////8AAAAAABUAYQBjAHQAaQBvAG4ALgBhAGQAZABfAGMAbwBtAHAAZQB0AC4AcABoAHBJbG9jYmxvYgAAABAAAAHAAAAAfP///////wAAAAAAFQBhAGMAdABpAG8AbgAuAGEAZABkAF8AagBvAHUAZQB1AHIALgBwAGgAcElsb2NibG9iAAAAEAAAAFwAAADZ////////AAAAAAAXAGEAYwB0AGkAbwBuAC4AYQBkAGQAXwBzAGkAdABfAG0AZQBuAHMALgBwAGgAcElsb2NibG9iAAAAEAAAAQ4AAADZ////////AAAAAAAaAGEAYwB0AGkAbwBuAC4AYQBkAGQAXwB0AHkAcABlAF8AYwBvAG0AcABlAHQALgBwAGgAcElsb2NibG9iAAAAEAAAAcAAAADZ////////AAAAAAAdAGEAYwB0AGkAbwBuAC4AYQBkAG0AaQBuAF8AYwBhAGwAZQBuAGQAYQByAF8AdABhAGIALgBwAGgAcElsb2NibG9iAAAAEAAAAFwAAAE2////////AAAAAAAcAGEAYwB0AGkAbwBuAC4AYQBkAG0AaQBuAF8AYwBvAG0AcABlAHQAcwBfAHQAYQBiAC4AcABoAHBJbG9jYmxvYgAAABAAAAEOAAABNv///////wAAAAAAGwBhAGMAdABpAG8AbgAuAGEAZABtAGkAbgBfAGMAbwBtAHAAdABlAF8AdABhAGIALgBwAGgAcElsb2NibG9iAAAAEAAAAcAAAAE2////////AAAAAAAfAGEAYwB0AGkAbwBuAC4AYQBkAG0AaQBuAF8AZABpAHYAXwBjAGwAYQBzAHMAZQBtAGUAbgB0AC4AcABoAHBJbG9jYmxvYgAAABAAAABcAAABk////////wAAAAAAHABhAGMAdABpAG8AbgAuAGEAZABtAGkAbgBfAGQAaQB2AF8AcABhAHIAdABpAGUAcwAuAHAAaABwSWxvY2Jsb2IAAAAQAAABDgAAAZP///////8AAAAAAB4AYQBjAHQAaQBvAG4ALgBhAGQAbQBpAG4AXwBkAGkAdgBpAHMAaQBvAG4AcwBfAHQAYQBiAC4AcABoAHBJbG9jYmxvYgAAABAAAAHAAAABk////////wAAAAAAGQBhAGMAdABpAG8AbgAuAGEAZABtAGkAbgBfAGYAZgB0AHQAXwB0AGEAYgAuAHAAaABwSWxvY2Jsb2IAAAAQAAAAXAAAAfD///////8AAAAAABwAYQBjAHQAaQBvAG4ALgBhAGQAbQBpAG4AXwBqAG8AdQByAG4AYQBsAF8AdABhAGIALgBwAGgAcElsb2NibG9iAAAAEAAAAcAAAAHw////////AAAAAAAcAGEAYwB0AGkAbwBuAC4AYQBkAG0AaQBuAF8AbwBwAHQAaQBvAG4AcwBfAHQAYQBiAC4AcABoAHBJbG9jYmxvYgAAABAAAABcAAACTf///////wAAAAAAFwBhAGMAdABpAG8AbgAuAGEAZABtAGkAbgBfAHAAbwB1AGwAZQBzAC4AcABoAHBJbG9jYmxvYgAAABAAAABcAAACqv///////wAAAAAAGwBhAGMAdABpAG8AbgAuAGEAZABtAGkAbgBfAHAAbwB1AGwAZQBzAF8AdABhAGIALgBwAGgAcElsb2NibG9iAAAAEAAAAQ4AAAJN////////AAAAAAAcAGEAYwB0AGkAbwBuAC4AYQBkAG0AaQBuAF8AcABvAHUAbABlAHMAXwB0AGEAYgAyAC4AcABoAHBJbG9jYmxvYgAAABAAAAHAAAACTf///////wAAAAAAHABhAGMAdABpAG8AbgAuAGEAZABtAGkAbgBfAHAAbwB1AGwAZQBzAF8AdABhAGIAMwAuAHAAaABwSWxvY2Jsb2IAAAAQAAAAXAAAAB////////8AAAAAABoAYQBjAHQAaQBvAG4ALgBhAGQAbQBpAG4AXwByAGUAYwB1AHAAXwB0AGEAYgAuAHAAaABwSWxvY2Jsb2IAAAAQAAABDgAAAqr///////8AAAAAACgAYQBjAHQAaQBvAG4ALgBhAGQAbQBpAG4AXwBzAGkAdAB1AGEAdABpAG8AbgBfAG0AZQBuAHMAdQBlAGwAbABlAF8AdABhAGIALgBwAGgAcElsb2NibG9iAAAAEAAAAcAAAAKq////////AAAAAAAZAGEAYwB0AGkAbwBuAC4AYQBkAG0AaQBuAF8AcwBwAGkAZABfAHQAYQBiAC4AcABoAHBJbG9jYmxvYgAAABAAAABcAAADB////////wAAAAAAFwBhAGMAdABpAG8AbgAuAGEAZABtAGkAbgBfAHQAZQBhAG0AcwAyAC4AcABoAHBJbG9jYmxvYgAAABAAAAHAAAADB////////wAAAAAAGgBhAGMAdABpAG8AbgAuAGEAZABtAGkAbgBfAHQAZQBhAG0AcwBfAHQAYQBiAC4AcABoAHBJbG9jYmxvYgAAABAAAAEOAAADB////////wAAAAAAFgBhAGMAdABpAG8AbgAuAGIAYQByAC0AYwBoAGEAcgB0AHMAMgAuAHAAaABwSWxvY2Jsb2IAAAAQAAAAXAAAA2T///////8AAAAAAB0AYQBjAHQAaQBvAG4ALgBjAGwAYQBzAHMAZQBtAGUAbgB0AF8AZQBxAHUAaQBwAGUAcwAuAHAAaABwSWxvY2Jsb2IAAAAQAAABDgAAA2T///////8AAAAAACQAYQBjAHQAaQBvAG4ALgBjAHIAbwBuAF8AcgBlAHQAcgBpAGUAdgBlAF8AYQBsAGwAXwBwAGEAcgB0AGkAZQBzAC4AcABoAHBJbG9jYmxvYgAAABAAAAHAAAADZP///////wAAAAAAGQBhAGMAdABpAG8AbgAuAGMAcgBvAG4AXwBzAHAAaQBkAF8AZgBmAHQAdAAuAHAAaABwSWxvY2Jsb2IAAAAQAAAAXAAAA8H///////8AAAAAABAAYQBjAHQAaQBvAG4ALgBkAGEAdABlAHIALgBwAGgAcElsb2NibG9iAAAAEAAAAQ4AAAPB////////AAAAAAASAGEAYwB0AGkAbwBuAC4AZABlAGYAYQB1AGwAdAAuAHAAaABwSWxvY2Jsb2IAAAAQAAABwAAAA8H///////8AAAAAABcAYQBjAHQAaQBvAG4ALgBkAGUAZgBhAHUAbAB0AGEAZABtAGkAbgAuAHAAaABwSWxvY2Jsb2IAAAAQAAAAXAAABB7///////8AAAAAABEAYQBjAHQAaQBvAG4ALgBkAGUAbABlAHQAZQAuAHAAaABwSWxvY2Jsb2IAAAAQAAABDgAABHv///////8AAAAAABUAYQBjAHQAaQBvAG4ALgBkAGUAbABlAHQAZQBfAGEAbABsAC4AcABoAHBJbG9jYmxvYgAAABAAAAHAAAAEHv///////wAAAAAAGQBhAGMAdABpAG8AbgAuAGQAZQBsAGUAdABlAF8AYwBvAG4AdABhAGMAdAAuAHAAaABwSWxvY2Jsb2IAAAAQAAAAXAAABHv///////8AAAAAABIAYQBjAHQAaQBvAG4ALgBkAGUAdABhAGkAbABzAC4AcABoAHBJbG9jYmxvYgAAABAAAAHAAAAEe////////wAAAAAAIQBhAGMAdABpAG8AbgAuAGQAaQBzAHAAbABhAHkAXwB1AG4AYQBiAGwAZQBfAHAAbABhAHkAZQByAHMALgBwAGgAcElsb2NibG9iAAAAEAAAAFwAAATY////////AAAAAAAeAGEAYwB0AGkAbwBuAC4AZABvAF8AYQBkAGQAXwBhAGwAbABfAHMAaQB0AF8AbQBlAG4AcwAuAHAAaABwSWxvY2Jsb2IAAAAQAAABDgAABNj///////8AAAAAABgAYQBjAHQAaQBvAG4ALgBkAG8AXwBhAGQAZABfAGMAbwBtAHAAZQB0AC4AcABoAHBJbG9jYmxvYgAAABAAAAHAAAAE2P///////wAAAAAAGgBhAGMAdABpAG8AbgAuAGQAbwBfAGEAZABkAF8AcwBpAHQAXwBtAGUAbgBzAC4AcABoAHBJbG9jYmxvYgAAABAAAABcAAAFNf///////wAAAAAAHQBhAGMAdABpAG8AbgAuAGQAbwBfAGEAZABkAF8AdAB5AHAAZQBfAGMAbwBtAHAAZQB0AC4AcABoAHBJbG9jYmxvYgAAABAAAAEOAAAFNf///////wAAAAAAHABhAGMAdABpAG8AbgAuAGQAbwBfAGMAcgBlAGEAdABlAF8AYwBvAG4AdABhAGMAdAAuAHAAaABwSWxvY2Jsb2IAAAAQAAABwAAABTX///////8AAAAAABkAYQBjAHQAaQBvAG4ALgBkAG8AXwBlAGQAaQB0AF8AagBvAHUAZQB1AHIALgBwAGgAcElsb2NibG9iAAAAEAAAAFwAAAWS////////AAAAAAAZAGEAYwB0AGkAbwBuAC4AZABvAF8AZQBkAGkAdABfAHIAZQBzAHUAbAB0AC4AcABoAHBJbG9jYmxvYgAAABAAAAEOAAAFkv///////wAAAAAAFwBhAGMAdABpAG8AbgAuAGQAbwBfAGUAZABpAHQAXwB0AGUAYQBtAC4AcABoAHBJbG9jYmxvYgAAABAAAAHAAAAFkv///////wAAAAAAFwBhAGMAdABpAG8AbgAuAGQAbwBfAHAAYQByAHQAaQBjAGkAcABlAC4AcABoAHBJbG9jYmxvYgAAABAAAABcAAAF7////////wAAAAAAFwBhAGMAdABpAG8AbgAuAGUAZABpAHQAXwBjAG8AbgB0AGEAYwB0AC4AcABoAHBJbG9jYmxvYgAAABAAAAEOAAAF7////////wAAAAAAHgBhAGMAdABpAG8AbgAuAGUAZABpAHQAXwBwAGwAYQB5AGUAcgBfAHIAZQBzAHUAbAB0AHMALgBwAGgAcElsb2NibG9iAAAAEAAAAcAAAAXv////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAGwBhAGMAdABpAG8AbgAuAGUAZABpAHQAXwB0AHkAcABlAF8AYwBvAG0AcABlAHQALgBwAGgAcElsb2NibG9iAAAAEAAAAQ4AAAZM////////AAAAAAARAGEAYwB0AGkAbwBuAC4AZQBxAHUAaQBwAGUALgBwAGgAcElsb2NibG9iAAAAEAAAAcAAAAZM////////AAAAAAAVAGEAYwB0AGkAbwBuAC4AZQByAGEAcwBlAF8AcwBwAGkAZAAuAHAAaABwSWxvY2Jsb2IAAAAQAAAAXAAABqn///////8AAAAAABwAYQBjAHQAaQBvAG4ALgBnAGUAdABJAG4AaQB0AGkAYQBsAGkAcwBhAHQAaQBvAG4ALgBwAGgAcElsb2NibG9iAAAAEAAAAQ4AAAap////////AAAAAAAdAGEAYwB0AGkAbwBuAC4AZwBlAHQAUABvAHUAbABlAEMAbABhAHMAcwBlAG0AZQBuAHQALgBwAGgAcElsb2NibG9iAAAAEAAAAcAAAAap////////AAAAAAAYAGEAYwB0AGkAbwBuAC4AaQBuAGQAaQB2AGkAZAB1AGUAbABsAGUAcwAuAHAAaABwSWxvY2Jsb2IAAAAQAAABDgAABwb///////8AAAAAAB0AYQBjAHQAaQBvAG4ALgBpAG4AZABpAHYAaQBkAHUAZQBsAGwAZQBzAF8AcAByAG8AdgAuAHAAaABwSWxvY2Jsb2IAAAAQAAAAXAAABwb///////8AAAAAABYAYQBjAHQAaQBvAG4ALgBtAGEAcwBzAF8AYQBjAHQAaQBvAG4ALgBwAGgAcElsb2NibG9iAAAAEAAAAFwAAAdj////////AAAAAAAbAGEAYwB0AGkAbwBuAC4AbQBpAHMAcwBpAG4AZwBfAHMAaQB0AF8AbQBlAG4AcwAuAHAAaABwSWxvY2Jsb2IAAAAQAAABDgAAB2P///////8AAAAAABYAYQBjAHQAaQBvAG4ALgBwAGEAcgAtAGUAcQB1AGkAcABlAHMALgBwAGgAcElsb2NibG9iAAAAEAAAAcAAAAdj////////AAAAAAAWAGEAYwB0AGkAbwBuAC4AcAB1AHMAaABfAHAAbABhAHkAZQByAC4AcABoAHBJbG9jYmxvYgAAABAAAAEOAAAHwP///////wAAAAAAHwBhAGMAdABpAG8AbgAuAHIAZQB0AHIAaQBlAHYAZQBfAGEAbABsAF8AcABhAHIAdABpAGUAcwAuAHAAaABwSWxvY2Jsb2IAAAAQAAABDgAACB3///////8AAAAAACQAYQBjAHQAaQBvAG4ALgByAGUAdAByAGkAZQB2AGUAXwBhAGwAbABfAHAAYQByAHQAaQBlAHMAXwBzAHAAaQBkAC4AcABoAHBJbG9jYmxvYgAAABAAAABcAAAIHf///////wAAAAAAIABhAGMAdABpAG8AbgAuAHIAZQB0AHIAaQBlAHYAZQBfAGEAbABsAF8AcwBpAHQAXwBtAGUAbgBzAC4AcABoAHBJbG9jYmxvYgAAABAAAABcAAAIev///////wAAAAAAGwBhAGMAdABpAG8AbgAuAHIAZQB0AHIAaQBlAHYAZQBfAGMAbwBtAHAAZQB0AHMALgBwAGgAcElsb2NibG9iAAAAEAAAAcAAAAh6////////AAAAAAAmAGEAYwB0AGkAbwBuAC4AcgBlAHQAcgBpAGUAdgBlAF8AZABlAHQAYQBpAGwAcwBfAHIAZQBuAGMAbwBuAHQAcgBlAHMALgBwAGgAcHB0Ykx1c3RyAAAALABBAHAAcABsAGkAYwBhAHQAaQBvAG4AcwAvAE0AQQBNAFAALwBoAHQAZABvAGMAcwAvADAALgA1AC4AMQAvAG0AbwBkAHUAbABlAHMALwBQAGkAbgBnAC8AAAAmAGEAYwB0AGkAbwBuAC4AcgBlAHQAcgBpAGUAdgBlAF8AZABlAHQAYQBpAGwAcwBfAHIAZQBuAGMAbwBuAHQAcgBlAHMALgBwAGgAcHB0Yk51c3RyAAAAJgBhAGMAdABpAG8AbgAuAHIAZQB0AHIAaQBlAHYAZQBfAGQAZQB0AGEAaQBsAHMAXwByAGUAbgBjAG8AbgB0AHIAZQBzAC4AcABoAHAAAAAnAGEAYwB0AGkAbwBuAC4AcgBlAHQAcgBpAGUAdgBlAF8AZABlAHQAYQBpAGwAcwBfAHIAZQBuAGMAbwBuAHQAcgBlAHMAMgAuAHAAaABwSWxvY2Jsb2IAAAAQAAABDgAACNf///////8AAAAAAB8AYQBjAHQAaQBvAG4ALgByAGUAdAByAGkAZQB2AGUAXwBkAGkAdgBfAHIAZQBzAHUAbAB0AHMALgBwAGgAcElsb2NibG9iAAAAEAAAAcAAAAjX////////AAAAAAAdAGEAYwB0AGkAbwBuAC4AcgBlAHQAcgBpAGUAdgBlAF8AZABpAHYAaQBzAGkAbwBuAHMALgBwAGgAcElsb2NibG9iAAAAEAAAAFwAAAk0////////AAAAAAAaAGEAYwB0AGkAbwBuAC4AcgBlAHQAcgBpAGUAdgBlAF8AaQBuAGQAaQB2AHMALgBwAGgAcElsb2NibG9iAAAAEAAAAQ4AAAk0////////AAAAAAAeAGEAYwB0AGkAbwBuAC4AcgBlAHQAcgBpAGUAdgBlAF8AbwByAGcAYQBuAGkAcwBtAGUAcwAuAHAAaABwSWxvY2Jsb2IAAAAQAAABwAAACTT///////8AAAAAABsAYQBjAHQAaQBvAG4ALgByAGUAdAByAGkAZQB2AGUAXwBwAGEAcgB0AGkAZQBzAC4AcABoAHBJbG9jYmxvYgAAABAAAAEOAAAJkf///////wAAAAAAIABhAGMAdABpAG8AbgAuAHIAZQB0AHIAaQBlAHYAZQBfAHAAYQByAHQAaQBlAHMAXwBzAHAAaQBkAC4AcABoAHBJbG9jYmxvYgAAABAAAABcAAAJkf///////wAAAAAAGQBhAGMAdABpAG8AbgAuAHIAZQB0AHIAaQBlAHYAZQBfAHAAbwB1AGwAZQAuAHAAaABwSWxvY2Jsb2IAAAAQAAAAXAAACe7///////8AAAAAACQAYQBjAHQAaQBvAG4ALgByAGUAdAByAGkAZQB2AGUAXwBwAG8AdQBsAGUAXwByAGUAbgBjAG8AbgB0AHIAZQBzAC4AcABoAHBJbG9jYmxvYgAAABAAAAHAAAAJkf///////wAAAAAAHABhAGMAdABpAG8AbgAuAHIAZQB0AHIAaQBlAHYAZQBfAHMAaQB0AF8AbQBlAG4AcwAuAHAAaABwSWxvY2Jsb2IAAAAQAAABDgAACe7///////8AAAAAABkAYQBjAHQAaQBvAG4ALgByAGUAdAByAGkAZQB2AGUAXwB0AGUAYQBtAHMALgBwAGgAcElsb2NibG9iAAAAEAAAAcAAAAnu////////AAAAAAAZAGEAYwB0AGkAbwBuAC4AcgBlAHQAcgBpAGUAdgBlAF8AdQBzAGUAcgBzAC4AcABoAHBJbG9jYmxvYgAAABAAAABcAAAKS////////wAAAAAAEwBhAGMAdABpAG8AbgAuAHMAaQB0AF8AbQBlAG4AcwAuAHAAaABwSWxvY2Jsb2IAAAAQAAABwAAACkv///////8AAAAAAB4AYQBjAHQAaQBvAG4ALgBzAGkAdABfAG0AZQBuAHMAXwBwAHIAbwB2AGkAcwBvAGkAcgBlAC4AcABoAHBJbG9jYmxvYgAAABAAAAEOAAAKS////////wAAAAAADgBhAGMAdABpAG8AbgAuAHQAYQBnAC4AcABoAHBJbG9jYmxvYgAAABAAAAEOAAAKqP///////wAAAAAAEgBhAGMAdABpAG8AbgAuAHQAbwBwAEYAbABvAHAALgBwAGgAcElsb2NibG9iAAAAEAAAAcAAAAqo////////AAAAAAAXAGEAYwB0AGkAbwBuAC4AdQBwAGQAYQB0AGUAYwBvAG0AcAB0AGUALgBwAGgAcElsb2NibG9iAAAAEAAAAFwAAAsF////////AAAAAAAYAGEAYwB0AGkAbwBuAC4AdQBwAGQAYQB0AGUAbwBwAHQAaQBvAG4AcwAuAHAAaABwSWxvY2Jsb2IAAAAQAAABDgAACwX///////8AAAAAABUAYQBjAHQAaQBvAG4ALgB1AHAAbABvAGEAZABmAGkAbABlAC4AcABoAHBJbG9jYmxvYgAAABAAAAHAAAALBf///////wAAAAAAFwBhAGMAdABpAG8AbgAuAHUAcwBlAHIAXwByAGUAcwB1AGwAdABzAC4AcABoAHBJbG9jYmxvYgAAABAAAAEOAAALYv///////wAAAAAAHABhAGMAdABpAG8AbgAuAHUAcwBlAHIAXwByAGUAcwB1AGwAdABzAF8AcAByAG8AdgAuAHAAaABwSWxvY2Jsb2IAAAAQAAAAXAAAC2L///////8AAAAAABgAYQBjAHQAaQBvAG4ALgB2AGkAZQB3AF8AYwBvAG4AdABhAGMAdABzAC4AcABoAHBJbG9jYmxvYgAAABAAAAHAAAALYv///////wAAAAAAAwBjAHMAc0lsb2NibG9iAAAAEAAAAcAAAAu/////////AAAAAAADAGMAcwBzZHNjbGJvb2wAAAAAFABmAHUAbgBjAHQAaQBvAG4ALgBjAGEAbABjAHUAbABzAC4AcABoAHBJbG9jYmxvYgAAABAAAABcAAAMHP///////wAAAAAABgBpAG0AYQBnAGUAc0lsb2NibG9iAAAAEAAAAQ4AAAwc////////AAAAAAAGAGkAbQBhAGcAZQBzZHNjbGJvb2wAAAAABwBpAG4AYwBsAHUAZABlSWxvY2Jsb2IAAAAQAAABwAAADBz///////8AAAAAAAcAaQBuAGMAbAB1AGQAZWRzY2xib29sAAAAAAYAagBxAHAAbABvAHRJbG9jYmxvYgAAABAAAABcAAAMef///////wAAAAAABgBqAHEAcABsAG8AdGRzY2xib29sAABvAG4ALgBlAGQAaQB0AF8AYwBvAG4AdABhAGMAdAAuAHAAaABwSWxvY2Jsb2IAAAAQAAABDgAABe////////8AAAAAAB4AYQBjAHQAaQBvAG4ALgBlAGQAaQB0AF8AcABsAGEAeQBlAHIAXwByAGUAcwB1AGwAdABzAC4AcABoAHBJbG9jYmxvYgAAABAAAAHAAAAF7////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAQAsAAABFAAAQDAAAAIcAACAMAAAwDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAIAAAAGAAAAAAAAAAAAAAAAEAAAEAAAAAAQAAAgAAAAABAAAEAAAAAAIAAAgAAABIAAAAAAEAAFAAAAAAAQAAYAAAAAAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAA/wAAAAAAJgBhAGMAdABpAG8AbgAuAHIAZQB0AHIAaQBlAHYAZQBfAGQAZQB0AGEAaQBsAHMAXwByAGUAbgBjAG8AbgB0AHIAZQBzAC4AcABoAHBwdGJMdXN0cgAAACwAQQBwAHAAbABpAGMAYQB0AGkAbwBuAHMALwBNAEEATQBQAC8AaAB0AGQAbwBjAHMALwAwAC4ANQAuADEALwBtAG8AZAB1AGwAZQBzAC8AUABpAG4AZwAvAAAAJgBhAGMAdABpAG8AbgAuAHIAZQB0AHIAaQBlAHYAZQBfAGQAZQB0AGEAaQBsAHMAXwByAGUAbgBjAG8AbgB0AHIAZQBzAC4AcABoAHBwdGJOdXN0cgAAACYAYQBjAHQAaQBvAG4ALgByAGUAdAByAGkAZQB2AGUAXwBkAGUAdABhAGkAbABzAF8AcgBlAG4AYwBvAG4AdAByAGUAcwAuAHAAaABwAAAAJwBhAGMAdABpAG8AbgAuAHIAZQB0AHIAaQBlAHYAZQBfAGQAZQB0AGEAaQBsAHMAXwByAGUAbgBjAG8AbgB0AHIAZQBzADIALgBwAGgAcElsb2NibG9iAAAAEAAAAQ4AAAjX////////AAAAAAAfAGEAYwB0AGkAbwBuAC4AcgBlAHQAcgBpAGUAdgBlAF8AZABpAHYAXwByAGUAcwB1AGwAdABzAC4AcABoAHBJbG9jYmxvYgAAABAAAAHAAAAI1////////wAAAAAAHQBhAGMAdABpAG8AbgAuAHIAZQB0AHIAaQBlAHYAZQBfAGQAaQB2AGkAcwBpAG8AbgBzAC4AcABoAHBJbG9jYmxvYgAAABAAAABcAAAJNP///////wAAAAAAGgBhAGMAdABpAG8AbgAuAHIAZQB0AHIAaQBlAHYAZQBfAGkAbgBkAGkAdgBzAC4AcABoAHBJbG9jYmxvYgAAABAAAAEOAAAJNP///////wAAAAAAHgBhAGMAdABpAG8AbgAuAHIAZQB0AHIAaQBlAHYAZQBfAG8AcgBnAGEAbg==]]></data>
	</file>
	<file>
	  <filename>/action.able_player.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjICAgICAgICAgICAgICAgICAgICAgICBBY3RpdmF0aW9uL2TDqXNhY3RpdmF0aW9uIGQndW4gam91ZXVyICAjIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgTWFuYWdlJykpCiAgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CglyZXR1cm47CiAgIAogIH0KCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKJGVycm9yID0gJyc7CiRsaWNlbmNlID0gJyc7CmlmKCBpc3NldCggJHBhcmFtc1snbGljZW5jZSddICkgJiYgJHBhcmFtc1snbGljZW5jZSddICE9ICcnKSAgICAKewoJJGxpY2VuY2UgPSAkcGFyYW1zWydsaWNlbmNlJ107Cn0KZWxzZQp7CgkJJGVycm9yKys7Cn0JCiRhY3RpZiA9ICcnOwppZiggaXNzZXQoICRwYXJhbXNbJ2FjdGlmJ10pICYmICRwYXJhbXNbJ2FjdGlmJ10gIT0gJycpCnsKCSRhY3RpZiA9ICRwYXJhbXNbJ2FjdGlmJ107Cn0KZWxzZQp7CgkkZXJyb3IrKzsKfQoKLy9vbiBjb21wdGUgbGUgbm9tYnJlIGQnZXJyZXVyCmVjaG8gJGVycm9yOwppZigkZXJyb3I+MCkKewoJJHRoaXMtPlNldE1lc3NhZ2UoInBhcmFtw6h0cmVzIG1hbnF1YW50cyIpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwp9CgppZigkcGFyYW1zWydhY3RpZiddID09JzEnKXsKCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgU0VUIGFjdGlmID0nMScgIFdIRVJFIGxpY2VuY2UgPSA/IjsKCSRtZXNzYWdlID0gIkpvdWV1ciBhY3RpdsOpIjsKfQplbHNlCnsKCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgU0VUIGFjdGlmID0nMCcgIFdIRVJFIGxpY2VuY2UgPSA/IjsKCSRtZXNzYWdlID0gIkpvdWV1ciBkw6lzYWN0aXbDqSI7Cn0KICAgIAogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoICRsaWNlbmNlICkpOwogICAgaWYoJGRicmVzdWx0KQogICAgICAKCXsKCQkkdGhpcy0+U2V0TWVzc2FnZSgiJG1lc3NhZ2UiKTsKCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdqb3VldXJzJyk7CgkJCgl9CgoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.add_all_sit_mens.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKICAgaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3ByZWZzLnBocCcpOwokbm9tX2VxdWlwZXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbm9tX2VxdWlwZXMnKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJG1vaXNfY291cmFudCA9IGRhdGUoJ24nKTsKLy9lY2hvICJsZSBtb2lzIGNvdXJhbnQgZXN0IDoiLiRtb2lzX2NvdXJhbnQ7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKZ2xvYmFsICR0aGVtZU9iamVjdDsKJHJlc3VsdD0gYXJyYXkoKTsKJHBhcm1zID0gYXJyYXkoKTsKJHBoYXNlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BoYXNlX2VuX2NvdXJzJyk7CiRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKCglpZigkcGhhc2U9PTEpCgl7CgkJJG1vaXNfZGVwYXJ0PTk7CgkJJG1vaXNfZmluID0gMTI7CgkJCgl9CgllbHNlewoJCQoJfQoKCiRyb3dhcnJheSA9IGFycmF5KCk7CiRyb3dqb3VldXIgPSBhcnJheSgpOwokam91ZXVyID0gYXJyYXkoKTsKJHF1ZXJ5MSA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJyxub20sIHByZW5vbSkgQVMgam91ZXVyLCBsaWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgV0hFUkUgYWN0aWYgPSAnMSciOwokZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkxKTsKCglpZigkZGJyZXN1bHRhdCAmJiAkZGJyZXN1bHRhdC0+UmVjb3JkQ291bnQoKT4wKQoJewoJCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHRhdC0+RmV0Y2hSb3coKSkKCQl7CgkJCS8vJG1heCA9ICAkcm93Wyd0b3RhbCddOwoJCQkkam91ZXVyID0gJHJvd1snam91ZXVyJ107CgkJCS8vZWNobyAkam91ZXVyOwoJCQkkbGljZW5jZSA9ICRyb3dbJ2xpY2VuY2UnXTsKCQkJJHJvd2FycmF5WyRsaWNlbmNlXSA9ICRqb3VldXI7CQoJCQkkc21hcnR5LT5hc3NpZ24oJ3Jvd2pvdWV1cicsJGpvdWV1cik7CgkJCSRzbWFydHktPmFzc2lnbignbGljZW5jZScsJGxpY2VuY2UpOwoJCQkkc21hcnR5LT5hc3NpZ24oJ3Jvd2FycmF5JywgJHJvd2FycmF5KTsKCQkJJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLAoJICAgIAkJCSR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoICRpZCwgJ2RvX2FkZF9hbGxfc2l0X21lbnMnLCAkcmV0dXJuaWQgKSApOwoJCQkJCgkJCQkkc21hcnR5LT5hc3NpZ24oJ2Nob2l4X21vaXMnLAoJCQkJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2Nob2l4X21vaXMnLCRsaXN0ZV9tb2lzLCAkbW9pc19jb3VyYW50LC0xKSk7CgkJCS8vJHNtYXJ0eS0+YXNzaWduKCdsaWduZXMnLCAkbWF4KTsJCgkJCQkJCQoJCQkJCQkJCgkJCSRzbWFydHktPmFzc2lnbignc3VibWl0JywKCQkJCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpLCAnY2xhc3M9ImJ1dHRvbiInKSk7CgkJCSRzbWFydHktPmFzc2lnbignY2FuY2VsJywKCQkJCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdjYW5jZWwnLAoJCQkJCQkJCSR0aGlzLT5MYW5nKCdjYW5jZWwnKSkpOwoJCQkkc21hcnR5LT5hc3NpZ24oJ2JhY2snLAoJCQkJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2JhY2snLAoJCQkJCQkJCSR0aGlzLT5MYW5nKCdiYWNrJykpKTsKCgkJCSRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsCgkJCQkJJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgkJfQkKfQkJCgkJCQoJCQkKCQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkZF9hbGxfc2l0X21lbnMudHBsJyk7CQkKCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.add_compet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCglpZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgTWFuYWdlJykpCiAgCXsKICAgIAkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CgkJcmV0dXJuOwogICAKICAJfQoKCWlmKCBpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgKQogIAl7CiAgICAJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2NvbXBldHMnKTsKICAgIAkJcmV0dXJuOwogIAl9Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwokZGIgPSYgJHRoaXMtPkdldERiKCk7Ci8vcydhZ2l0LWlsIGQndW5lIG1vZGlmIG91IGQndW5lIGNyw6lhID8KJHJlY29yZF9pZCA9ICcnOwokdHlwZV9jb21wZXRfc2VsZWN0ZWQgPSAnJzsKJGRhdGVfZGVidXQgPSAnJzsKJGRhdGVfZmluID0gJyc7CiRudW1qb3VybiA9ICcwJzsKJGVkaXQgPSAwOwoKCWlmKGlzc2V0KCRwYXJhbXNbJ3JlY29yZF9pZCddKSAmJiAkcGFyYW1zWydyZWNvcmRfaWQnXSAhPSIiKQoJewoJCSRyZWNvcmRfaWQgPSAkcGFyYW1zWydyZWNvcmRfaWQnXTsKCQkkZWRpdCA9IDE7Ly9vbiBlc3QgYmllbiBlbiB0cmFpIGQnw6lkaXRlciB1biBlbnJlZ2lzdHJlbWVudAoJCS8vT04gVkEgQ0hFUkNIRVIgbCdlbnJlZ2lzdHJlbWVudCBlbiBxdWVzdGlvbgoJCSRxdWVyeSA9ICJTRUxFQ1QgY2FsLmlkLCB0Yy5pZCBBUyBpbmRleDEsIHRjLmlkZXByZXV2ZSwgdGMubmFtZSx0Yy5pbmRpdnMsIGNhbC5kYXRlX2RlYnV0LCBjYWwuZGF0ZV9maW4sIGNhbC5udW1qb3VybiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jYWxlbmRyaWVyIEFTIGNhbCwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIEFTIHRjIFdIRVJFIGNhbC5pZGVwcmV1dmUgPSB0Yy5pZGVwcmV1dmUgQU5EIGNhbC5pZCA9ID8iOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCQl3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJCXsKCQkJCSR0eXBlX2NvbXBldF9zZWxlY3RlZCA9ICRyb3dbJ2lkZXByZXV2ZSddOwoJCQkJJGRhdGVfZGVidXQgPSAkcm93WydkYXRlX2RlYnV0J107CgkJCQkkZGF0ZV9maW4gPSAkcm93WydkYXRlX2ZpbiddOwoJCQkJJG51bWpvdXJuID0gJHJvd1snbnVtam91cm4nXTsKCQkJCSRuYW1lID0gJHJvd1snbmFtZSddOwoJCQkJJGluZGl2cyA9ICRyb3dbJ2luZGl2cyddOwoJCQkJJGluZGV4ID0gJHJvd1snaW5kZXgxJ10gLSAxOwoJCQkJLy8kaWRlcHJldXZlID0gJHJvd1snaWRlcHJldXZlJ107CgkJCQkKCQkJCQoJCQkJCgkJCX0KCX0KCS8vb24gZmFpdCB1bmUgcmVxdWV0ZSBwb3VyIGNvbXBsZXRlciBsJ2lucHV0IGRyb3Bkb3duIGR1IGZvcm11bGFpcmUKCSRxdWVyeSA9ICJTRUxFQ1QgbmFtZSwgaWRlcHJldXZlLGluZGl2cyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCgkJaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+MCkKCQl7CgkJCXdoaWxlKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQkJewoJCQkJJHR5cGVfY29tcGV0WyRyb3dbJ25hbWUnXV0gPSAkcm93WydpZGVwcmV1dmUnXTsKCQkJCSRpbmRpdnMgPSAkcm93WydpbmRpdnMnXTsKCQkJfQoJCX0KCgoJCQkKCQoJLy9vbiBjb25zdHJ1aXQgbGUgZm9ybXVsYWlyZQoJJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLAoJCQkgICAgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCggJGlkLCAnZG9fYWRkX2NvbXBldCcsICRyZXR1cm5pZCApICk7CglpZigkZWRpdD09MSkKCXsKCQkkc21hcnR5LT5hc3NpZ24oJ3JlY29yZF9pZCcsCgkJCQkkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdyZWNvcmRfaWQnLCRyZWNvcmRfaWQpKTsKCX0KCSRzbWFydHktPmFzc2lnbignaWRlcHJldXZlJywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdpZGVwcmV1dmUnLCR0eXBlX2NvbXBldCwkc2VsZWN0ZWRpbmRleCA9ICRpbmRleCwgJHNlbGVjdGVkdmFsdWU9JG5hbWUpKTsKCSRzbWFydHktPmFzc2lnbignZGF0ZV9kZWJ1dCcsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dERhdGUoJGlkLCAnZGF0ZV9kZWJ1dCcsJGRhdGVfZGVidXQpKTsKCSRzbWFydHktPmFzc2lnbignZGF0ZV9maW4nLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXREYXRlKCRpZCwgJ2RhdGVfZmluJywkZGF0ZV9maW4pKTsKCSRzbWFydHktPmFzc2lnbignbnVtam91cm4nLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnbnVtam91cm4nLCRudW1qb3VybiwzLDUpKTsKCSRzbWFydHktPmFzc2lnbignaW5kaXZzJywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnaW5kaXZzJywkaW5kaXZzLDMsNSkpOwkKCSRzbWFydHktPmFzc2lnbignc3VibWl0JywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdzdWJtaXQnKSwgJ2NsYXNzPSJidXR0b24iJykpOwoJJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdjYW5jZWwnLAoJCQkJCQkkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsKCSRzbWFydHktPmFzc2lnbignYmFjaycsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2JhY2snLAoJCQkJCQkkdGhpcy0+TGFuZygnYmFjaycpKSk7CgoJJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywKCQkJJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgkKCQoKCgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkZF9jb21wZXQudHBsJyk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.add_joueur.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKICB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCXJldHVybjsKICAgCiAgfQoKJGRiID0mICR0aGlzLT5HZXREYigpOwovLyRyZWNvcmRfaWQgPSAkcGFyYW1zWydyZWNvcmRfaWQnXTsKCgppZiggIWlzc2V0KCAkcGFyYW1zWydsaWNlbmNlJ10gKSB8fCAkcGFyYW1zWydsaWNlbmNlJ10gPT0gJycpICAgIAp7CgkKCSRwYXJhbXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsKCSRwYXJhbXNbJ2Vycm9yJ10gPSAxOwoJLy8kdGhpcy0+UmVkaXJlY3QoICRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyApOwoJICAgIC8vcmV0dXJuOwp9CgogICAgLy8gZmluZCB0aGUgdXNlcgogICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgV0hFUkUgbGljZW5jZSA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5HZXRSb3coJHF1ZXJ5LCBhcnJheSggJHBhcmFtc1snbGljZW5jZSddICkpOwogICAgaWYoJGRicmVzdWx0KQogICAgICAKCXsKCQkkbGljZW5jZSA9ICRkYnJlc3VsdFsnbGljZW5jZSddOwoJCSRhY3RpZiA9ICRkYnJlc3VsdFsnYWN0aWYnXTsKCQkkYmlydGhkYXkgPSAkZGJyZXN1bHRbJ2JpcnRoZGF5J107CgkJJHNleGUgPSAkZGJyZXN1bHRbJ3NleGUnXTsKCQkkbm9tID0gJGRicmVzdWx0Wydub20nXTsKCQkkcHJlbm9tID0gJGRicmVzdWx0WydwcmVub20nXTsKCQkkYWRyZXNzZSA9ICRkYnJlc3VsdFsnYWRyZXNzZSddOwoJCSR2aWxsZSA9ICRkYnJlc3VsdFsndmlsbGUnXTsKCQkkY29kZXBvc3RhbCA9ICRkYnJlc3VsdFsnY29kZXBvc3RhbCddOwoJCSRsaWNlbmNlID0gJGRicmVzdWx0WydsaWNlbmNlJ107CgkJCgkvLwkkYWN0aWYgPSAkZGJyZXN1bHRbJ2FjdGlmJ107CgkJCgl9CgogIAokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCggJGlkLCAnZG9fZWRpdF9qb3VldXInLCAkcmV0dXJuaWQgKSApOwovKgokc21hcnR5LT5hc3NpZ24oJ3JlY29yZF9pZCcsCgkJICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbiggJGlkLCAncmVjb3JkX2lkJywgJHBhcmFtc1sncmVjb3JkX2lkJ10gKSk7CiovCiRpdGVtcyA9IGFycmF5KCdPdWknPT4nMScsICdOb24nPT4nMCcpOwokc21hcnR5LT5hc3NpZ24oJ2FjdGlmJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2FjdGlmJywkaXRlbXMsLTEsJGFjdGlmKSk7CiRzbWFydHktPmFzc2lnbignbm9tJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnbm9tJywkbm9tLDgwLDE1MCkpOwkJCQkJCiRzbWFydHktPmFzc2lnbigncHJlbm9tJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3ByZW5vbScsJHByZW5vbSw4MCwxNTApKTsKaWYoaXNzZXQoJHBhcmFtc1snbGljZW5jZSddKSAmJiAkcGFyYW1zWydsaWNlbmNlJ10gIT0gJycpewoJJHNtYXJ0eS0+YXNzaWduKCdsaWNlbmNlJywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ2xpY2VuY2UnLCRsaWNlbmNlKSk7Cn0KZWxzZXsKCSRzbWFydHktPmFzc2lnbignbGljZW5jZScsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnbGljZW5jZScsJGxpY2VuY2UpKTsKfQoKJHNtYXJ0eS0+YXNzaWduKCdiaXJ0aGRheScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RGF0ZSgkaWQsICdiaXJ0aGRheScsJGJpcnRoZGF5KSk7CiRpdGVtcyA9IGFycmF5KCdNYXNjdWxpbic9PidNJywgJ0bDqW1pbmluJz0+J0YnKTsKJHNtYXJ0eS0+YXNzaWduKCdzZXhlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdzZXhlJywkaXRlbXMsLTEsJHNleGUpKTsKJHNtYXJ0eS0+YXNzaWduKCdhZHJlc3NlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2FkcmVzc2UnLCRhZHJlc3NlLDEwMCwyODApKTsKJHNtYXJ0eS0+YXNzaWduKCd2aWxsZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICd2aWxsZScsJHZpbGxlLDgwLDEwMCkpOwokc21hcnR5LT5hc3NpZ24oJ2NvZGVwb3N0YWwnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnY29kZXBvc3RhbCcsJGNvZGVwb3N0YWwsODAsMTAwKSk7CQkJCQoJCQkJCQkJCQkJCQkJCQkKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpLCAnY2xhc3M9ImJ1dHRvbiInKSk7CiRzbWFydHktPmFzc2lnbignY2FuY2VsJywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnY2FuY2VsJywKCQkJCQkJJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdF9qb3VldXIudHBsJyk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.add_sit_mens.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgICAgICAgICAgICBBam91dCBtYW51ZWwgZCd1bmUgc2l0dWF0aW9uIG1lbnN1ZWxsZSAgICAgIyMjCiMjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyMKIyMjICAgICAgICAgICAgQXV0ZXVyIDogQ2xhdWRlIFNJT0hBTiAgICAgICAgICAgICAgICAgICAgICMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIwojCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKJG5vbV9lcXVpcGVzID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ25vbV9lcXVpcGVzJyk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CiRtb2lzX2NvdXJhbnQgPSBkYXRlKCduJyk7Ci8vJG1vaXNfY291cmFudCA9IDExOwovLyRtb2lzX2NvdXJhbnQgPSA3Oy8vYydlc3QgbGUgbW9pcyBkZSByw6lmw6lyZW5jZSBhdmVjIGxlcXVlbCBpbCBmYXV0IHRyYXZhaWxsZXIgZW4gcHJvZAovL2VjaG8gImxlIG1vaXMgY291cmFudCBlc3QgOiIuJG1vaXNfY291cmFudDsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwokcmVzdWx0PSBhcnJheSgpOwokcGFybXMgPSBhcnJheSgpOwokc2Fpc29uID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwokcGhhc2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKTsKLy8kcGhhc2UgPSAxOy8vcG91ciB0ZXN0CiRzbWFydHktPmFzc2lnbigncGhhc2UnLCRwaGFzZSk7CiRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKCglpZigkcGhhc2U9PTEpCgl7CgkJJG1vaXNfZGVwYXJ0PTk7CgkJJG1vaXNfZmluID0gMTI7CQkKCX0KCWVsc2V7CgkJJG1vaXNfZGVwYXJ0ID0gNzsgLy9wb3N0dWxhdAkJCgl9CgokbGljZW5jZSA9ICcnOwoKCWlmKGlzc2V0KCRwYXJhbXNbJ2xpY2VuY2UnXSkgJiYgJHBhcmFtc1snbGljZW5jZSddICE9JycpCgl7CgkJJGxpY2VuY2UgPSAkcGFyYW1zWydsaWNlbmNlJ107Cgl9CgllbHNlCgl7CgkJJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPmxhbmdbJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcyddKTsKCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzaXR1YXRpb24nKTsKCX0KCiRyb3dhcnJheSA9IGFycmF5KCk7CiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywKCQkkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCAkaWQsICdkb19hZGRfc2l0X21lbnMnLCAkcmV0dXJuaWQgKSApOwokc21hcnR5LT5hc3NpZ24oJ2xpY2VuY2UnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdsaWNlbmNlJywkbGljZW5jZSwxMCwxNSkpOwokaT0wOwokcXVlcnkgPSAiU0VMRUNUIGoubm9tLCBqLnByZW5vbSwgai5saWNlbmNlLCBzdC5tb2lzLCBzdC5wb2ludHMgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2l0X21lbnMgQVMgc3QsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogIFdIRVJFIHN0LmxpY2VuY2UgPSBqLmxpY2VuY2UgQU5EIGoubGljZW5jZSA9ID8gQU5EIHNhaXNvbiA9ID8iOwovL2VjaG8gJHF1ZXJ5OwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSwkc2Fpc29uKSk7CgoJaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKT4wKQoJewoJCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkvL3Zhcl9kdW1wKCRyb3cpOwkJCQoJCQkkbW9pcyA9ICRyb3dbJ21vaXMnXTsKCQkJJGNsYSA9ICRyb3dbJ3BvaW50cyddOwoJCQkkbm9tID0gJHJvd1snbm9tJ107CgkJCSRwcmVub20gPSAkcm93WydwcmVub20nXTsKCQkJJHJvd2FycmF5WyRtb2lzXSA9ICRjbGE7CgkJCS8vcHJpbnRfcigkcm93YXJyYXkpOwkJCgkJCSRzbWFydHktPmFzc2lnbignbm9tJywKCQkJCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ25vbScsICRub20sIDMwLCA4MCkpOwoJCQkkc21hcnR5LT5hc3NpZ24oJ3ByZW5vbScsCgkJCQkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdwcmVub20nLCAkcHJlbm9tLCAzMCwgODApKTsKCQkJJHNtYXJ0eS0+YXNzaWduKCdtb2lzX2NvdXJhbnQnLCAkbW9pc19jb3VyYW50KTsJCQkJCgkJCSRzbWFydHktPmFzc2lnbigncm93YXJyYXknLCRyb3dhcnJheSk7CgkJCQkJCQkKCQl9CQkJCgkJCQoJfQkKCWVsc2UKCXsJCQoJCSRzbWFydHktPmFzc2lnbignbm9tJywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnbm9tJywgJG5vbSwgMzAsIDgwKSk7CgkJJHNtYXJ0eS0+YXNzaWduKCdwcmVub20nLAoJCQkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdwcmVub20nLCAkcHJlbm9tLCAzMCwgODApKTsKCQkkc21hcnR5LT5hc3NpZ24oJ21vaXNfY291cmFudCcsICRtb2lzX2NvdXJhbnQpOwkJCQkKCQkkc21hcnR5LT5hc3NpZ24oJ3Jvd2FycmF5Jywkcm93YXJyYXkpOwkJCQoJfQkKCQoJJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpLCAnY2xhc3M9ImJ1dHRvbiInKSk7Cgkkc21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2NhbmNlbCcsCgkJCQkJCSR0aGlzLT5MYW5nKCdjYW5jZWwnKSkpOwoJJHNtYXJ0eS0+YXNzaWduKCdiYWNrJywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnYmFjaycsCgkJCQkJCSR0aGlzLT5MYW5nKCdiYWNrJykpKTsKCSRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsCgkJCSR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoJCgkKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZGRfc2l0X21lbnMudHBsJyk7CQkKCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.add_type_compet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKICB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCXJldHVybjsKICAgCiAgfQppZiggaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pICkKICB7CiAgICAkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZW5jb250cmVzJyk7CiAgICByZXR1cm47CiAgfQoKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ3VzZXJzJyk7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCiAgIAogICAgJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLAoJCSAgICAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCAkaWQsICdkb19hZGRfdHlwZV9jb21wZXQnLCAkcmV0dXJuaWQgKSApOwokc21hcnR5LT5hc3NpZ24oJ3R5cGVfY29tcGV0JywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCd0eXBlX2NvbXBldCcsJycsNSwxMCkpOwoKJHNtYXJ0eS0+YXNzaWduKCduYW1lJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnbmFtZScsJG5hbWUsNzUsMTUwKSk7Ci8qCiRzbWFydHktPmFzc2lnbignY29kZV9jb21wZXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnY29kZV9jb21wZXQnLCRjb2RlX2NvbXBldCwyLDMpKTsKKi8KJGxpc3RlY29lZmYgPSBhcnJheSgiMCwyNSI9PiIwLjI1IiwiMCw1MCI9PiIwLjUwIiwiMCw3NSI9PiIwLjc1IiwgIjEsMDAiPT4iMS4wMCIsICIxLDI1Ij0+IjEuMjUiLCIxLDUwIj0+IjEuNTAiKTsKJHNtYXJ0eS0+YXNzaWduKCdjb2VmZmljaWVudCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnY29lZmZpY2llbnQnLCRsaXN0ZWNvZWZmLDMpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbmRpdnMnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2luZGl2cycsYXJyYXkoIk91aSI9PiJPdWkiLCAiTm9uIj0+Ik5vbiIpKSk7CQokc21hcnR5LT5hc3NpZ24oJ3Rvb2x0aXAnLCRoZWxwdGV4dCA9ICdEb2l0IMOqdHJlIHVuaXF1ZScpOwkKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnc3VibWl0JyksICdjbGFzcz0iYnV0dG9uIicpKTsKJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2NhbmNlbCcsCgkJCQkJJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CiRzbWFydHktPmFzc2lnbignYmFjaycsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnYmFjaycsCgkJCQkJJHRoaXMtPkxhbmcoJ2JhY2snKSkpOwoKJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywKCQkkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkZF90eXBlX2NvbXBldC50cGwnKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.admin_calendar_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLyoqLwoJaWYgKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdF9tYXNzZGVsZXRlJ10pICkKICAJewogICAgIAkJaWYoIGlzc2V0KCRwYXJhbXNbJ3NlbCddKSAmJiBpc19hcnJheSgkcGFyYW1zWydzZWwnXSkgJiYgY291bnQoJHBhcmFtc1snc2VsJ10pID4gMCApCiAgICAgIAkJewogICAgICAgIAkJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJGpvdXJuYWxpZCApCgkgIAkJewoJICAgIAkJCXBpbmdfYWRtaW5fb3BzOjpkZWxldGVfam91cm5hbCggJGpvdXJuYWxpZCApOwoJICAJCX0KICAgICAgCQl9CiAgCX0KLyoqLwoKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwokZGVzaWduYXRpb24gPSAnJzsKJG1haW50ZW5hbnQgPSBkYXRlKCJZLW0tZCIpOwokbW9pc19jb3VyYW50ID0gZGF0ZSgnbicpOwokbW9pc19jaG9pc2kgPSAnJzsKJHBoYXNlX2Nob2lzaWUgPSAnJzsKJHBoYXNlX2VuX2NvdXJzID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BoYXNlX2VuX2NvdXJzJyk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CiRkZXAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVwJyk7CmlmKGlzc2V0KCRwYXJhbXNbJ3BoYXNlX2Nob2lzaWUnXSkgJiYgJHBhcmFtc1sncGhhc2VfY2hvaXNpZSddICE9JycpCnsKCSRwaGFzZV9jaG9pc2llID0gJHBhcmFtc1sncGhhc2VfY2hvaXNpZSddOwp9CmVsc2UKewoJJHBoYXNlX2Nob2lzaWUgPSAkcGhhc2VfZW5fY291cnM7Cn0KJHNtYXJ0eS0+YXNzaWduKCdwaGFzZScsICRwaGFzZV9jaG9pc2llKTsKaWYoaXNzZXQoJHBhcmFtc1snbW9pcyddKSAmJiAkcGFyYW1zWydtb2lzJ10gIT0nJykKewoJJG1vaXNfY2hvaXNpID0gJHBhcmFtc1snbW9pcyddOwoJLy8kYWN0aWYgPSAkbW9pc19jaG9pc2k7Cn0KZWxzZQp7CgkkbW9pc19jaG9pc2kgPSAkbW9pc19jb3VyYW50Owp9CmlmKCRtb2lzX2Nob2lzaSA9PTEpCnsKCSRtb2lzX3ByZWNlZGVudCA9IDEyOwp9CmVsc2UKewoJJG1vaXNfcHJlY2VkZW50ID0gJG1vaXNfY2hvaXNpIC0xOwp9CmlmKCRtb2lzX2Nob2lzaT09MTIpCnsKCSRtb2lzX3N1aXZhbnQgPSAxOwp9CmVsc2UKewoJJG1vaXNfc3VpdmFudCA9ICRtb2lzX2Nob2lzaSArIDE7Cn0KJHNtYXJ0eS0+YXNzaWduKCdTZXAnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCdTZXB0ZW1icmUnLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJjYWxlbmRyaWVyIiwibW9pcyI9PiI5IiwicGhhc2VfY2hvaXNpZSI9PiIxIiksCgkJJycsIGZhbHNlLCBmYWxzZSwgKCgkbW9pc19jaG9pc2k9PTkpPydjbGFzcz0icGFnZW9wdGlvbnMiJzonY2xhc3M9ImFjdGl2ZSInKSkpOwokc21hcnR5LT5hc3NpZ24oJ09jdCcsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsJ09jdG9icmUnLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJjYWxlbmRyaWVyIiwibW9pcyI9PiIxMCIsInBoYXNlX2Nob2lzaWUiPT4iMSIpLAoJCScnLCBmYWxzZSwgZmFsc2UsICgoJG1vaXNfY2hvaXNpPT0xMCk/J2NsYXNzPSJwYWdlb3B0aW9ucyInOidjbGFzcz0iYWN0aXZlIicpKSk7CiRzbWFydHktPmFzc2lnbignTm92JywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwnTm92ZW1icmUnLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJjYWxlbmRyaWVyIiwibW9pcyI9PiIxMSIsInBoYXNlX2Nob2lzaWUiPT4iMSIpLAoJCScnLCBmYWxzZSwgZmFsc2UsICgoJG1vaXNfY2hvaXNpPT0xMSk/J2NsYXNzPSJwYWdlb3B0aW9ucyInOidjbGFzcz0iYWN0aXZlIicpKSk7CiRzbWFydHktPmFzc2lnbignRGVjJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwnRMOpY2VtYnJlJywgYXJyYXkoImFjdGl2ZV90YWIiPT4iY2FsZW5kcmllciIsIm1vaXMiPT4iMTIiLCJwaGFzZV9jaG9pc2llIj0+IjEiKSwKCQknJywgZmFsc2UsIGZhbHNlLCAoKCRtb2lzX2Nob2lzaT09MTIpPydjbGFzcz0icGFnZW9wdGlvbnMiJzonY2xhc3M9ImFjdGl2ZSInKSkpOwokc21hcnR5LT5hc3NpZ24oJ0phbicsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsJ0phbnZpZXInLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJjYWxlbmRyaWVyIiwibW9pcyI9PiIxIiwicGhhc2VfY2hvaXNpZSI9PiIyIiksCgkJJycsIGZhbHNlLCBmYWxzZSwgKCgkbW9pc19jaG9pc2k9PTEpPydjbGFzcz0icGFnZW9wdGlvbnMiJzonY2xhc3M9ImFjdGl2ZSInKSkpOwokc21hcnR5LT5hc3NpZ24oJ0ZldicsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsJ0bDqXZyaWVyJywgYXJyYXkoImFjdGl2ZV90YWIiPT4iY2FsZW5kcmllciIsIm1vaXMiPT4iMiIsInBoYXNlX2Nob2lzaWUiPT4iMiIpLAoJCScnLCBmYWxzZSwgZmFsc2UsICgoJG1vaXNfY2hvaXNpPT0yKT8nY2xhc3M9InBhZ2VvcHRpb25zIic6J2NsYXNzPSJhY3RpdmUiJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdNYXInLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCdNYXJzJywgYXJyYXkoImFjdGl2ZV90YWIiPT4iY2FsZW5kcmllciIsIm1vaXMiPT4iMyIsInBoYXNlX2Nob2lzaWUiPT4iMiIpLAoJCScnLCBmYWxzZSwgZmFsc2UsICgoJG1vaXNfY2hvaXNpPT0zKT8nY2xhc3M9InBhZ2VvcHRpb25zIic6J2NsYXNzPSJhY3RpdmUiJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdBdnInLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCdBdnJpbCcsIGFycmF5KCJhY3RpdmVfdGFiIj0+ImNhbGVuZHJpZXIiLCJtb2lzIj0+IjQiLCJwaGFzZV9jaG9pc2llIj0+IjIiKSwKCQknJywgZmFsc2UsIGZhbHNlLCAoKCRtb2lzX2Nob2lzaT09NCk/J2NsYXNzPSJwYWdlb3B0aW9ucyInOidjbGFzcz0iYWN0aXZlIicpKSk7CiRzbWFydHktPmFzc2lnbignTWFpJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwnTWFpJywgYXJyYXkoImFjdGl2ZV90YWIiPT4iY2FsZW5kcmllciIsIm1vaXMiPT4iNSIsInBoYXNlX2Nob2lzaWUiPT4iMiIpLAoJCScnLCBmYWxzZSwgZmFsc2UsICgoJG1vaXNfY2hvaXNpPT01KT8nY2xhc3M9InBhZ2VvcHRpb25zIic6J2NsYXNzPSJhY3RpdmUiJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdKdWluJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwnSnVpbicsIGFycmF5KCJhY3RpdmVfdGFiIj0+ImNhbGVuZHJpZXIiLCJtb2lzIj0+IjYiLCJwaGFzZV9jaG9pc2llIj0+IjIiKSwKCQknJywgZmFsc2UsIGZhbHNlLCAoKCRtb2lzX2Nob2lzaT09Nik/J2NsYXNzPSJwYWdlb3B0aW9ucyInOidjbGFzcz0iYWN0aXZlIicpKSk7CiRzbWFydHktPmFzc2lnbignSnVpbCcsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsJ0p1aWxsZXQnLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJjYWxlbmRyaWVyIiwibW9pcyI9PiI3IiwicGhhc2VfY2hvaXNpZSI9PiIyIiksCgkJJycsIGZhbHNlLCBmYWxzZSwgKCgkbW9pc19jaG9pc2k9PTcpPydjbGFzcz0icGFnZW9wdGlvbnMiJzonY2xhc3M9ImFjdGl2ZSInKSkpOwoKJHNtYXJ0eS0+YXNzaWduKCdtb2lzX3ByZWNlZGVudCcsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCwgJzw8JywgYXJyYXkoImFjdGl2ZV90YWIiPT4iY2FsZW5kcmllciIsInBoYXNlX2Nob2lzaWUiPT4iMSIsIm1vaXMiPT4iMTIiKSwKCQknJywgZmFsc2UsIGZhbHNlLCAoKCRtb2lzX2Nob2lzaT09MTIpPydjbGFzcz0icGFnZW9wdGlvbnMiJzonY2xhc3M9ImFjdGl2ZSInKSkpOwokc21hcnR5LT5hc3NpZ24oJ21vaXNfc3VpdmFudCcsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCwgJz4+JywgYXJyYXkoImFjdGl2ZV90YWIiPT4iY2FsZW5kcmllciIsInBoYXNlX2Nob2lzaWUiPT4iMiIsIm1vaXMiPT4iMSIpICwKCQknJywgZmFsc2UsIGZhbHNlLCAoKCRtb2lzX2Nob2lzaT09MSk/J2NsYXNzPSJwYWdlb3B0aW9ucyInOidjbGFzcz0iYWN0aXZlIicpKSk7CgoKLy9saXN0ZSBkZXMgbGllbnMgcG91ciByw6ljdXDDqXJlciBsZXMgZG9ubsOpZXMgCiRzbWFydHktPmFzc2lnbigncmV0cmlldmVfdXNlcnMnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX2pvdWV1cnNfYnlfY2x1YicsICRyZXR1cm5pZCwgJGNvbnRlbnRzID0gIlLDqWN1cMOpcmF0aW9uIGRlcyBqb3VldXJzIiwgJHdhcm5fbWVzc2FnZSA9ICJFdGVzIHZvdXMgc8O7ciA/IFRyb3AgZCdhcHBlbHMgdmVycyBsYSBiYXNlIGRlIGRvbm7DqWVzIHBldXZlbnQgYXZvaXIgZGVzIGNvbnPDqXF1ZW5jZXMgaW1wb3J0YW50ZXMgISIpKTsKJHNtYXJ0eS0+YXNzaWduKCdyZXRyaWV2ZV90ZWFtcycsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfdGVhbXMnLCAkcmV0dXJuaWQsICRjb250ZW50cyA9ICJSw6ljdXDDqXJhdGlvbiBkZXMgw6lxdWlwZXMgKGNoYW1waW9ubmF0IHNlbmlvcnMpIiwgYXJyYXkoJ3R5cGUnPT4nTScpKSk7CiRzbWFydHktPmFzc2lnbigncmV0cmlldmVfdGVhbXNfYXV0cmVzJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV90ZWFtcycsICRyZXR1cm5pZCwgJGNvbnRlbnRzID0gIlLDqWN1cMOpcmF0aW9uIGRlcyDDqXF1aXBlcyIpKTsKJHNtYXJ0eS0+YXNzaWduKCdyZXRyaWV2ZV9hbGxfcGFydGllcycsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfYWxsX3BhcnRpZXMnLCAkcmV0dXJuaWQsICRjb250ZW50cyA9ICJSw6ljdXDDqXJhdGlvbiBkZSB0b3V0ZXMgbGVzIHBhcnRpZXMgRkZUVCIpKTsKJHNtYXJ0eS0+YXNzaWduKCdyZWN1cF9qb3VldXJzJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZWN1cF9qb3VldXJzJywgJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbigncmV0cmlldmVfYWxsX3NwaWQnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX2FsbF9wYXJ0aWVzX3NwaWQnLCAkcmV0dXJuaWQsICRjb250ZW50cyA9ICdSw6ljdXDDqXJhdGlvbnMgZGUgdG91dGVzIGxlcyBwYXJ0aWVzIFNQSUQnLCAkd2Fybl9tZXNzYWdlID0gJ0V0ZXMgdm91cyBzw7tyID8nKSk7CiRzbWFydHktPmFzc2lnbigncmV0cmlldmVfZGV0YWlsc19yZW5jb250cmVzJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9jbHViJywgJHJldHVybmlkLCAkY29udGVudHMgPSAnUsOpY3Vww6lyYXRpb25zIGR1IGTDqXRhaWwgZGVzIHJlbmNvbnRyZXMnKSk7CgovKiBvbiBmYWl0IHVuIGZvcm11bGFpcmUgZGUgZmlsdHJhZ2UgZGVzIHLDqXN1bHRhdHMqLwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX2RhdGFfdGFiJykpOyAKJHN0YXR1c2xpc3RbJHRoaXMtPmxhbmcoJ2FsbHN0YXR1cycpXSA9Jyc7CiRkYXRlbGlzdFskdGhpcy0+TGFuZygnYWxsZGF0ZXMnKV0gPSAnJzsKJHR5cGVDb21wZXQgPSBhcnJheSgpOwovLyR0eXBlQ29tcGV0WyR0aGlzLT5MYW5nKCdhbGxjb21wZXQnKV0gPSAnJzsKJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCXsKCQlzZXRsb2NhbGUgKExDX1RJTUUsICdmcl9GUicpOyAKCQkvLyRkYXRlbGlzdFskcm93WydkYXRlY3JlYXRlZCddXSA9IHN0cmZ0aW1lKCIlQSAlZSAlQiAlWSDDoCAlSDolTTolUyIsc3RydG90aW1lKCRyb3dbJ2RhdGVjcmVhdGVkJ10pKTsKCQkkZGF0ZWxpc3RbJHJvd1snZGF0ZWNyZWF0ZWQnXV0gPSAkcm93WydkYXRlY3JlYXRlZCddOyAKCQkvLyAkcGxheWVyc2xpc3RbJHJvd1sncGxheWVyJ11dID0gJHJvd1snbGljZW5jZSddOwoJCSRzdGF0dXNsaXN0WyRyb3dbJ3N0YXR1cyddXSA9ICRyb3dbJ3N0YXR1cyddOwoJCS8vJGVxdWlwZWxpc3RbJHJvd1snZXF1aXBlJ11dID0gJHJvd1snZXF1aXBlJ107CgkJLy8kdHlwZUNvbXBldFskcm93Wydjb2RlY2hhbXAnXV0gPSAkcm93Wydjb2RlY2hhbXAnXTsKCX0KCgkJCWlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXRmaWx0ZXInXSkgKQoJCSAgCXsKCQkgICAgCQlpZiggaXNzZXQoICRwYXJhbXNbJ2RhdGVsaXN0J10pICkKCQkgICAgICAJCXsKCQkJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGF0ZUNob2lzaScsICRwYXJhbXNbJ2RhdGVsaXN0J10pOwoJCSAgICAgIAkJfQoJCQoJCQkJaWYoIGlzc2V0KCAkcGFyYW1zWydzdGF0dXNsaXN0J10pICkKCQkgICAgICAJCXsKCQkJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc3RhdHVzQ2hvaXNpZScsICRwYXJhbXNbJ3N0YXR1c2xpc3QnXSk7CgkJICAgICAgCQl9CgkJCX0KCQkKJGN1cmRhdGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ2RhdGVDaG9pc2knICk7CiRjdXJzdGF0dXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc3RhdHVzQ2hvaXNpZScpOwoKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdG91cicsCgkJJHRoaXMtPkxhbmcoJ3RvdXInKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfZGF0ZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdkYXRlbGlzdCcsJGRhdGVsaXN0LC0xLCRjdXJkYXRlKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfc3RhdHVzJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3N0YXR1c2xpc3QnLCRzdGF0dXNsaXN0LC0xLCRjdXJzdGF0dXMpKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZXF1aXBlJywKCQkkdGhpcy0+TGFuZygnZXF1aXBlJykpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdGZpbHRlcicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0ZmlsdGVyJywkdGhpcy0+TGFuZygnZmlsdHJlcycpKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgoKJHJlc3VsdD0gYXJyYXkgKCk7CiRxdWVyeSA9ICJTRUxFQ1QgY2FsLnRhZyxjYWwuaWQsIGNvbXAuY29lZmZpY2llbnQsY29tcC5uYW1lLGNvbXAuaW5kaXZzLGNhbC50eXBlX2NvbXBldCxjYWwuZGF0ZV9kZWJ1dCwgY2FsLmRhdGVfZmluLCBjYWwubnVtam91cm4sY29tcC5pZGVwcmV1dmUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2FsZW5kcmllciBBUyBjYWwsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyBBUyBjb21wIFdIRVJFIGNhbC5pZGVwcmV1dmUgPSBjb21wLmlkZXByZXV2ZSBBTkQgY2FsLnNhaXNvbiA9ID8gQU5EIE1PTlRIKGNhbC5kYXRlX2RlYnV0KSA9ID8iOwoJCSRxdWVyeSAuPSIgT1JERVIgQlkgY2FsLmRhdGVfZGVidXQgQVNDIjsKCQkkZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRzYWlzb24sICRtb2lzX2Nob2lzaSkpOwoKCS8vZWNobyAkcXVlcnk7CgkKCQlpZiAoISRkYnJlc3VsdCkKCQl7CgoJCQkkZGVzaWduYXRpb24uPSAkZGItPkVycm9yTXNnKCk7CgoJCX0KCgoKCi8vJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKJHJvd2NsYXNzPSAncm93MSc7CiRyb3dhcnJheT0gYXJyYXkgKCk7CgoJaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQogIAl7CiAgICAJCXdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIAkJewoJCQkkaW5kaXZzID0gJHJvd1snaW5kaXZzJ107CgkJCSRpZGVwcmV1dmUgPSAkcm93WydpZGVwcmV1dmUnXTsKCQkJJHRvdXIgPSAkcm93WydudW1qb3VybiddOwoJCQkkZGF0ZV9kZWJ1dCA9ICRyb3dbJ2RhdGVfZGVidXQnXTsKCQkJLy9lY2hvICR0b3VyOwoJCQkkb25lcm93PSBuZXcgU3RkQ2xhc3MoKTsKCQkJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCQkJJG9uZXJvdy0+aWQ9ICRyb3dbJ2lkJ107CgkJCSRvbmVyb3ctPm5hbWU9ICRyb3dbJ25hbWUnXTsKCQkJJG9uZXJvdy0+dHlwZV9jb21wZXQ9ICRyb3dbJ3R5cGVfY29tcGV0J107CgkJCSRvbmVyb3ctPmNvZWZmID0gJHJvd1snY29lZmZpY2llbnQnXTsKCQkJJG9uZXJvdy0+ZGF0ZV9kZWJ1dD0gJHJvd1snZGF0ZV9kZWJ1dCddOwoJCQkkb25lcm93LT5kYXRlX2Zpbj0gJHJvd1snZGF0ZV9maW4nXTsKCQkJJG9uZXJvdy0+bnVtam91cm49ICRyb3dbJ251bWpvdXJuJ107CgkJCSRvbmVyb3ctPnRhZz0gJHJvd1sndGFnJ107CgkJCSRvbmVyb3ctPmluZGl2cyA9ICRyb3dbJ2luZGl2cyddOwoJCQkvL2VjaG8gJGluZGl2czsKCQkJCgkJCWlmKCRpbmRpdnMgPT0nMScpCgkJCXsKCQkJCS8vbGEgY29tcGV0aXRpb24gZXN0IGluZGl2aWR1ZWxsZSxvbiB2w6lyaWZpZSBkJ2Fib3JkIGxhIHByw6lzZW5jZSBkZSBkaXZpZGlvbnMgZXQgdG91cnMgPwoJCQkJLy9ub24gb24gZXN0aW1lIHF1ZSBsJ3V0aWxpc2F0ZXVyIGwnYSBmYWl0ICEKCQkJCS8vb24gZMOpbWFycmUgdW5lIGF1dHJlIHJlcXVldGUKCQkJCS8vb24gcsOpY3Vww6hyZSBkaXJlY3RlbWVudCBsZSBjbGFzc2VtZW50ICEKCQkJCSRvbmVyb3ctPnJldHJpZXZlbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwncmV0cmlldmVfYWxsX2NsYXNzZW1lbnQnLCAkcmV0dXJuaWQsICRjb250ZW50cz0nQ2xhc3NlbWVudCcsIGFycmF5KCJpZGVwcmV1dmUiPT4kaWRlcHJldXZlLCJkYXRlX2RlYnV0Ij0+JGRhdGVfZGVidXQsInRvdXIiPT4kdG91ciwiaWRvcmdhIj0+JGlkb3JnYSkpOwoJCQkJCgkJCQkKCQkJCQoJCQkJCgkJCQkvLyRvbmVyb3ctPnBhcnRpY2lwZSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3BhcnRpY2lwZScsICRyZXR1cm5pZCwgJ1BhcnRpY2lwYW50cycsIGFycmF5KCd0eXBlX2NvbXBldCc9PiRyb3dbJ3R5cGVfY29tcGV0J10sJ2RhdGVfZGVidXQnPT4kcm93WydkYXRlX2RlYnV0J10sJ2RhdGVfZmluJz0+JHJvd1snZGF0ZV9maW4nXSkpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJG9uZXJvdy0+cmV0cmlldmVsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9wb3VsZV9yZW5jb250cmVzJywgJHJldHVybmlkLCAnUsOpY3Vww6lyZXInLCBhcnJheSgiY2FsIj0+ImFsbCIpKTsKCQkJfQoJCQkkb25lcm93LT5lZGl0bGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRkX2NvbXBldCcsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSkpOwoJCQkKCQkJaWYoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBEZWxldGUnKSkKCQkJCXsKCQkJCQkkb25lcm93LT5kZWxldGVsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWxldGUnLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSwgJ3R5cGVfY29tcGV0Jz0+J2NhbGVuZHJpZXInKSwgJHRoaXMtPkxhbmcoJ2RlbGV0ZV9jb25maXJtJykpOwoJCQkJfQoJCQkJCgkJCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzPSAicm93MiIgOiAkcm93Y2xhc3M9ICJyb3cxIik7CgkJCSRyb3dhcnJheVtdPSAkb25lcm93OwogICAgICAJCX0KICAJfQokc21hcnR5LT5hc3NpZ24oJ21haW50ZW5hbnQnLCRtYWludGVuYW50KTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Jlc3VsdHNmb3VuZHRleHQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwokc21hcnR5LT5hc3NpZ24oJ2NyZWF0ZWxpbmsnLCAKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRfY29tcGV0JywgJHJldHVybmlkLAoJCQkJICAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+TGFuZygnYWRkJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSkuCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRkX2NvbXBldCcsICRyZXR1cm5pZCwgCgkJCQkgICR0aGlzLT5MYW5nKCdhZGQnKSwgCgkJCQkgIGFycmF5KCkpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtMnN0YXJ0JywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnYWRtaW5fZGF0YV90YWInLCRyZXR1cm5pZCkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm0yZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRfbWFzc2RlbGV0ZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0X21hc3NkZWxldGUnLCR0aGlzLT5MYW5nKCdkZWxldGVfc2VsZWN0ZWQnKSwKCQkJCQkJCQkJICAgICAnJywnJywkdGhpcy0+TGFuZygnYXJleW91c3VyZV9kZWxldGVtdWx0aXBsZScpKSk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnY2FsZW5kYXIudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_compets_indivs_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKLy9jcsOpYXRpb25zIGRlIGxpZW5zIGRlIHLDqWN1cMOpcmF0aW9uIGRlcyBjb21ww6l0aXRpb25zCi8vb24gcsOpY3Vww6hyZSBkJ2Fib3JkIGxlcyBwcsOpZsOpcmVuY2VzIGRlIHpvbmVzLCBsaWd1ZXMgZXQgZMOpcGFydGVtZW50CiRmZWRlID0gJzEwMDAwMSc7CiR6b25lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3pvbmUnKTsKJGxpZ3VlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2xpZ3VlJyk7CiRkZXAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVwJyk7CgoKJHNtYXJ0eS0+YXNzaWduKCd6b25lX2luZGl2cycsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX2NvbXBldHMnLCRyZXR1cm5pZCwnUsOpY3Vww6lyZXIgbGVzIGNvbXDDqXRpdGlvbnMgaW5kaXZpZHVlbGxlcycsIGFycmF5KCJ0eXBlIj0+IkkiKSkpOwokc21hcnR5LT5hc3NpZ24oJ2RpdmlzaW9uc19hbGwnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwncmV0cmlldmVfZGl2aXNpb25zJywkcmV0dXJuaWQsJ1LDqWN1cGVyZXIgdG91dGVzIGxlcyBkaXZpc2lvbnMnLCBhcnJheSgiYWxsIj0+VFJVRSkpKTsKJHNtYXJ0eS0+YXNzaWduKCd0b3Vyc19hbGwnLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9kaXZfdG91cnMnLCRyZXR1cm5pZCwnUsOpY3Vww6lyZXIgdG91cyBsZXMgdG91cnMgb3UgcG91bGVzJywgYXJyYXkoImFsbCI9PiIxIikpKTsKJHJlc3VsdD0gYXJyYXkgKCk7CiRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyBXSEVSRSBpbmRpdnMgPSAnMScgT1JERVIgQlkgbmFtZSBBU0MiOwoKJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCgovL2VjaG8gJHF1ZXJ5Owokcm93YXJyYXk9IGFycmF5ICgpOwppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewoJJGluZGl2cyA9ICRyb3dbJ2luZGl2cyddOwoJaWYoJGluZGl2cz09MSl7JHR5cGU9J0knO31lbHNleyR0eXBlPSdFJzt9CgkkaWRvcmdhID0gJHJvd1snaWRvcmdhJ107CglpZigkaWRvcmdhID09ICRmZWRlKXskb3JnYSA9ICdGw6lkw6lyYXRpb24nO30KCWlmKCRpZG9yZ2EgPT0gJHpvbmUpeyRvcmdhID0gJ1pvbmUnO30KCWlmKCRpZG9yZ2EgPT0gJGxpZ3VlKXskb3JnYSA9ICdMaWd1ZSc7fQoJaWYoJGlkb3JnYSA9PSAkZGVwKXskb3JnYSA9ICdDb21pdMOpJzt9Cgkkb25lcm93PSBuZXcgU3RkQ2xhc3MoKTsKCSRvbmVyb3ctPnJvd2NsYXNzPSAkcm93Y2xhc3M7Cgkkb25lcm93LT5pZD0gJHJvd1snaWQnXTsKCSRvbmVyb3ctPm5hbWU9ICRyb3dbJ25hbWUnXTsKCSRvbmVyb3ctPnRhZz0gJHJvd1sndGFnJ107Cgkkb25lcm93LT5jb2VmZmljaWVudD0gJHJvd1snY29lZmZpY2llbnQnXTsKCSRvbmVyb3ctPmluZGl2cz0gJHJvd1snaW5kaXZzJ107Cgkkb25lcm93LT5vcmdhID0gJGlkb3JnYTsKCSRvbmVyb3ctPmlkZXByZXV2ZSA9ICRyb3dbJ2lkZXByZXV2ZSddOwoJCgkvLwoJaWYoJGluZGl2cz09JzEnKQoJewoJCWlmKCRvcmdhID09ICdDb21pdMOpJykKCQl7CgkJCS8vJG9uZXJvdy0+ZGVwID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdyZXRyaWV2ZV9kaXZpc2lvbnMnLCRyZXR1cm5pZCwnRCcsIGFycmF5KCJpZG9yZ2EiPT4kZGVwLCAiaWRlcHJldXZlIj0+JHJvd1snaWRlcHJldXZlJ10sInR5cGUiPT4kdHlwZSkpOwoJCQkKCQl9CgkJZWxzZWlmKCRvcmdhID09ICdMaWd1ZScpCgkJewoJCQkvLyRvbmVyb3ctPmxpZ3VlID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdyZXRyaWV2ZV9kaXZpc2lvbnMnLCRyZXR1cm5pZCwnTCcsIGFycmF5KCJpZG9yZ2EiPT4kbGlndWUsICJpZGVwcmV1dmUiPT4kcm93WydpZGVwcmV1dmUnXSwidHlwZSI9PiR0eXBlKSk7CgkJCS8vJG9uZXJvdy0+ZGVwID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdyZXRyaWV2ZV9kaXZpc2lvbnMnLCRyZXR1cm5pZCwnRCcsIGFycmF5KCJpZG9yZ2EiPT4kZGVwLCAiaWRlcHJldXZlIj0+JHJvd1snaWRlcHJldXZlJ10sInR5cGUiPT4kdHlwZSkpOwoJCX0KCQllbHNlaWYoJG9yZ2EgPT0gJ1pvbmUnKQoJCXsKCQkJLy8kb25lcm93LT56b25lID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdyZXRyaWV2ZV9kaXZpc2lvbnMnLCRyZXR1cm5pZCwnWicsIGFycmF5KCJpZG9yZ2EiPT4kem9uZSwgImlkZXByZXV2ZSI9PiRyb3dbJ2lkZXByZXV2ZSddLCJ0eXBlIj0+JHR5cGUpKTsKCQkJLy8kb25lcm93LT5saWd1ZSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwncmV0cmlldmVfZGl2aXNpb25zJywkcmV0dXJuaWQsJ0wnLCBhcnJheSgiaWRvcmdhIj0+JGxpZ3VlLCAiaWRlcHJldXZlIj0+JHJvd1snaWRlcHJldXZlJ10sInR5cGUiPT4kdHlwZSkpOwoJCQkvLyRvbmVyb3ctPmRlcCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwncmV0cmlldmVfZGl2aXNpb25zJywkcmV0dXJuaWQsJ0QnLCBhcnJheSgiaWRvcmdhIj0+JGRlcCwgImlkZXByZXV2ZSI9PiRyb3dbJ2lkZXByZXV2ZSddLCJ0eXBlIj0+JHR5cGUpKTsKCQl9CgkJZWxzZWlmKCRvcmdhID09ICdGw6lkw6lyYXRpb24nKQoJCXsKCQkJLy8kb25lcm93LT5uYXRpb25hbCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwncmV0cmlldmVfZGl2aXNpb25zJywkcmV0dXJuaWQsJ04nLCBhcnJheSgiaWRvcmdhIj0+JGZlZGUsICJpZGVwcmV1dmUiPT4kcm93WydpZGVwcmV1dmUnXSwidHlwZSI9PiR0eXBlKSk7CgkJCS8vJG9uZXJvdy0+em9uZSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwncmV0cmlldmVfZGl2aXNpb25zJywkcmV0dXJuaWQsJ1onLCBhcnJheSgiaWRvcmdhIj0+JHpvbmUsICJpZGVwcmV1dmUiPT4kcm93WydpZGVwcmV1dmUnXSwidHlwZSI9PiR0eXBlKSk7CgkJCS8vJG9uZXJvdy0+bGlndWUgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ3JldHJpZXZlX2RpdmlzaW9ucycsJHJldHVybmlkLCdMJywgYXJyYXkoImlkb3JnYSI9PiRsaWd1ZSwgImlkZXByZXV2ZSI9PiRyb3dbJ2lkZXByZXV2ZSddLCJ0eXBlIj0+JHR5cGUpKTsKCQkJLy8kb25lcm93LT5kZXAgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ3JldHJpZXZlX2RpdmlzaW9ucycsJHJldHVybmlkLCdEJywgYXJyYXkoImlkb3JnYSI9PiRkZXAsICJpZGVwcmV1dmUiPT4kcm93WydpZGVwcmV1dmUnXSwidHlwZSI9PiR0eXBlKSk7CgoJCX0KCQllbHNlCgkJewoJCQkvLyRvbmVyb3ctPm5hdGlvbmFsID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdyZXRyaWV2ZV9kaXZpc2lvbnMnLCRyZXR1cm5pZCwnTicsIGFycmF5KCJpZG9yZ2EiPT4kZmVkZSwgImlkZXByZXV2ZSI9PiRyb3dbJ2lkZXByZXV2ZSddLCJ0eXBlIj0+JHR5cGUpKTsKCQl9CgkJCgkJJG9uZXJvdy0+bmF0aW8gPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9kaXZpc2lvbnMnLCRyZXR1cm5pZCwkY29udGVudHM9J05hdGlvbmFsJywgYXJyYXkoImFjdGl2ZV90YWIiPT4iY29tcGV0cyIsImlkZXByZXV2ZSI9PiRyb3dbJ2lkZXByZXV2ZSddLCJpZG9yZ2EiPT4kZmVkZSkpOwoJCSRvbmVyb3ctPnpvbmUgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9kaXZpc2lvbnMnLCRyZXR1cm5pZCwkY29udGVudHM9J1pvbmUnLCBhcnJheSgiaWRlcHJldXZlIj0+JHJvd1snaWRlcHJldXZlJ10sImlkb3JnYSI9PiR6b25lKSk7CgkJJG9uZXJvdy0+bGlndWUgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9kaXZpc2lvbnMnLCRyZXR1cm5pZCwkY29udGVudHM9J0xpZ3VlJywgYXJyYXkoImlkZXByZXV2ZSI9PiRyb3dbJ2lkZXByZXV2ZSddLCJpZG9yZ2EiPT4kbGlndWUpKTsKCQkkb25lcm93LT5kZXAgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9kaXZpc2lvbnMnLCRyZXR1cm5pZCwkY29udGVudHM9J0TDqXAnLCBhcnJheSgiaWRlcHJldXZlIj0+JHJvd1snaWRlcHJldXZlJ10sImlkb3JnYSI9PiRkZXApKTsKCX0KCQoJJG9uZXJvdy0+ZWRpdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0X3R5cGVfY29tcGV0JywkcmV0dXJuaWQsJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgicmVjb3JkX2lkIj0+JHJvd1snaWQnXSkpOwoJCglpZigkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIERlbGV0ZScpKQoJewoJCSRvbmVyb3ctPmRlbGV0ZWxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWxldGUnLCAkcmV0dXJuaWQsJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoInJlY29yZF9pZCI9PiRyb3dbJ2lkJ10sICJ0eXBlX2NvbXBldCI9PiJ0eXBlX2NvbXBldCIpKTsKCX0KCQoJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCSRyb3dhcnJheVtdPSAkb25lcm93OwogICAgICB9CiAgfQplbHNlIHsKCWVjaG8gIjxwPkF1Y3VuIHLDqXN1bHRhdHMgITwvcD4iOwp9CiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwoKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnbGlzdF9jb21wZXRfaW5kaXZzLnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_compets_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKLy9jcsOpYXRpb25zIGRlIGxpZW5zIGRlIHLDqWN1cMOpcmF0aW9uIGRlcyBjb21ww6l0aXRpb25zCi8vb24gcsOpY3Vww6hyZSBkJ2Fib3JkIGxlcyBwcsOpZsOpcmVuY2VzIGRlIHpvbmVzLCBsaWd1ZXMgZXQgZMOpcGFydGVtZW50CiRmZWRlID0gJzEwMDAwMSc7CiR6b25lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3pvbmUnKTsKJGxpZ3VlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2xpZ3VlJyk7CiRkZXAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVwJyk7CiR0eXBlQ29tcGV0ID0gYXJyYXkoIlRvdXRlcyI9PjAsIk5hdGlvbmFsZXMiPT4kZmVkZSwiWm9uZSI9PiR6b25lLCJSw6lnaW9uYWxlcyI9PiRsaWd1ZSwgIkTDqXBhcnRlbWVudGFsZXMiPT4kZGVwKTsKJGluZGl2T3JOb3QgPSBhcnJheSgiSW5kaWZmw6lyZW50Ij0+MTAsIlBhciDDqXF1aXBlcyI9PjAsIkluZGl2aWR1ZWxsZXMiPT4xKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdkZWZhdWx0YWRtaW4nLCcnLCAncG9zdCcsICcnLGZhbHNlLCcnLCBhcnJheSgnYWN0aXZlX3RhYic9Pidjb21wZXRzJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jb21wZXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwndHlwZUNvbXBldCcsJHR5cGVDb21wZXQsLTEsKCFlbXB0eSgkcGFyYW1zWyd0eXBlQ29tcGV0J10pPyRwYXJhbXNbJ3R5cGVDb21wZXQnXToiIikpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pbmRpdnMnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnaW5kaXZPck5vdCcsJGluZGl2T3JOb3QsLTEsKCFlbXB0eSgkcGFyYW1zWydpbmRpdk9yTm90J10pPyRwYXJhbXNbJ2luZGl2T3JOb3QnXToiIikpKTsKCQkkc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdGZpbHRlcicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0ZmlsdGVyJywkdGhpcy0+TGFuZygnZmlsdHJlcycpKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3pvbmVfaW5kaXZzJywgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfY29tcGV0cycsJHJldHVybmlkLCdab25lIGluZGl2cycsIGFycmF5KCJpZG9yZ2EiPT4kem9uZSwidHlwZSI9PiJJIikpKTsKJHNtYXJ0eS0+YXNzaWduKCd6b25lX2VxdWlwZXMnLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9jb21wZXRzJywkcmV0dXJuaWQsJ1pvbmUgRXF1aXBlcycsIGFycmF5KCJpZG9yZ2EiPT4kem9uZSwidHlwZSI9PiJFIikpKTsKJHNtYXJ0eS0+YXNzaWduKCdOYXRfaW5kaXZzJywgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfY29tcGV0cycsJHJldHVybmlkLCdOYXRpb25hbCBpbmRpdnMnLCBhcnJheSgiaWRvcmdhIj0+JGZlZGUsInR5cGUiPT4iSSIpKSk7CiRzbWFydHktPmFzc2lnbignTmF0X2VxdWlwZXMnLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9jb21wZXRzJywkcmV0dXJuaWQsJ05hdGlvbmFsIEVxdWlwZXMnLCBhcnJheSgiaWRvcmdhIj0+JGZlZGUsInR5cGUiPT4iRSIpKSk7CiRzbWFydHktPmFzc2lnbignbGlndWVfaW5kaXZzJywgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfY29tcGV0cycsJHJldHVybmlkLCdMaWd1ZSBpbmRpdnMnLCBhcnJheSgiaWRvcmdhIj0+JGxpZ3VlLCJ0eXBlIj0+IkkiKSkpOwokc21hcnR5LT5hc3NpZ24oJ2xpZ3VlX2VxdWlwZXMnLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9jb21wZXRzJywkcmV0dXJuaWQsJ0xpZ3VlIEVxdWlwZXMnLCBhcnJheSgiaWRvcmdhIj0+JGxpZ3VlLCJ0eXBlIj0+IkUiKSkpOwokc21hcnR5LT5hc3NpZ24oJ2RlcF9pbmRpdnMnLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9jb21wZXRzJywkcmV0dXJuaWQsJ0TDqXAgaW5kaXZzJywgYXJyYXkoImlkb3JnYSI9PiRkZXAsInR5cGUiPT4iSSIpKSk7CiRzbWFydHktPmFzc2lnbignZGVwX2VxdWlwZXMnLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9jb21wZXRzJywkcmV0dXJuaWQsJ0TDqXAgRXF1aXBlcycsIGFycmF5KCJpZG9yZ2EiPT4kZGVwLCJ0eXBlIj0+IkUiKSkpOwoKJHJlc3VsdD0gYXJyYXkgKCk7CiRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyBXSEVSRSBpZCA+ID8iOwokcGFybXNbJ2lkJ10gPSAwOwppZiggaXNzZXQoJHBhcmFtc1snc3VibWl0ZmlsdGVyJ10gKSkKewoJaWYgKGlzc2V0KCAkcGFyYW1zWyd0eXBlQ29tcGV0J10pICYmICRwYXJhbXNbJ3R5cGVDb21wZXQnXSAhPScnICYmICRwYXJhbXNbJ3R5cGVDb21wZXQnXSAhPSAwKQoJewoJCSRxdWVyeS49IiBBTkQgaWRvcmdhID0gPyAiOwoJCSRwYXJtc1sndHlwZUNvbXBldCddID0gJHBhcmFtc1sndHlwZUNvbXBldCddOwoJCQoJfQoJaWYoaXNzZXQoICRwYXJhbXNbJ2luZGl2T3JOb3QnXSkgJiYgJHBhcmFtc1snaW5kaXZPck5vdCddICE9JycgJiYgJHBhcmFtc1snaW5kaXZPck5vdCddICE9IDEwKQoJewoJCSRxdWVyeS49IiBBTkQgaW5kaXZzID0gPyI7CgkJJHBhcm1zWydpbmRpdk9yTm90J10gPSAkcGFyYW1zWydpbmRpdk9yTm90J107Cgl9CgkKCn0KCgkkcXVlcnkuPSIgT1JERVIgQlkgbmFtZSBBU0MiOwovL2VjaG8gJHF1ZXJ5OwoJJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCRwYXJtcyk7CgoKCgoKCgovL2VjaG8gJHF1ZXJ5Owokcm93YXJyYXk9IGFycmF5ICgpOwppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCnsKICAgIHdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIHsKCSRpbmRpdnMgPSAkcm93WydpbmRpdnMnXTsKCWlmKCRpbmRpdnM9PTEpeyR0eXBlPSdJJzt9ZWxzZXskdHlwZT0nRSc7fQoJJGlkb3JnYSA9ICRyb3dbJ2lkb3JnYSddOwoJaWYoJGlkb3JnYSA9PSAkZmVkZSl7JG9yZ2EgPSAnRsOpZMOpcmF0aW9uJzt9CglpZigkaWRvcmdhID09ICR6b25lKXskb3JnYSA9ICdab25lJzt9CglpZigkaWRvcmdhID09ICRsaWd1ZSl7JG9yZ2EgPSAnTGlndWUnO30KCWlmKCRpZG9yZ2EgPT0gJGRlcCl7JG9yZ2EgPSAnQ29taXTDqSc7fQoJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7Cgkkb25lcm93LT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJJG9uZXJvdy0+aWQ9ICRyb3dbJ2lkJ107Cgkkb25lcm93LT5uYW1lPSAkcm93WyduYW1lJ107Cgkkb25lcm93LT50YWc9ICRyb3dbJ3RhZyddOwoJJG9uZXJvdy0+Y29lZmZpY2llbnQ9ICRyb3dbJ2NvZWZmaWNpZW50J107Cgkkb25lcm93LT5pbmRpdnM9ICRyb3dbJ2luZGl2cyddOwoJJG9uZXJvdy0+b3JnYSA9ICRpZG9yZ2E7Cgkkb25lcm93LT5pZGVwcmV1dmUgPSAkcm93WydpZGVwcmV1dmUnXTsKCQoJLy8KCWlmKCRpbmRpdnM9PScxJykKCXsKCQlpZigkb3JnYSA9PSAnQ29taXTDqScpCgkJewoJCQkvLyRvbmVyb3ctPmRlcCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwncmV0cmlldmVfZGl2aXNpb25zJywkcmV0dXJuaWQsJ0QnLCBhcnJheSgiaWRvcmdhIj0+JGRlcCwgImlkZXByZXV2ZSI9PiRyb3dbJ2lkZXByZXV2ZSddLCJ0eXBlIj0+JHR5cGUpKTsKCQkJCgkJfQoJCWVsc2VpZigkb3JnYSA9PSAnTGlndWUnKQoJCXsKCQkJLy8kb25lcm93LT5saWd1ZSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwncmV0cmlldmVfZGl2aXNpb25zJywkcmV0dXJuaWQsJ0wnLCBhcnJheSgiaWRvcmdhIj0+JGxpZ3VlLCAiaWRlcHJldXZlIj0+JHJvd1snaWRlcHJldXZlJ10sInR5cGUiPT4kdHlwZSkpOwoJCQkvLyRvbmVyb3ctPmRlcCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwncmV0cmlldmVfZGl2aXNpb25zJywkcmV0dXJuaWQsJ0QnLCBhcnJheSgiaWRvcmdhIj0+JGRlcCwgImlkZXByZXV2ZSI9PiRyb3dbJ2lkZXByZXV2ZSddLCJ0eXBlIj0+JHR5cGUpKTsKCQl9CgkJZWxzZWlmKCRvcmdhID09ICdab25lJykKCQl7CgkJCS8vJG9uZXJvdy0+em9uZSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwncmV0cmlldmVfZGl2aXNpb25zJywkcmV0dXJuaWQsJ1onLCBhcnJheSgiaWRvcmdhIj0+JHpvbmUsICJpZGVwcmV1dmUiPT4kcm93WydpZGVwcmV1dmUnXSwidHlwZSI9PiR0eXBlKSk7CgkJCS8vJG9uZXJvdy0+bGlndWUgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ3JldHJpZXZlX2RpdmlzaW9ucycsJHJldHVybmlkLCdMJywgYXJyYXkoImlkb3JnYSI9PiRsaWd1ZSwgImlkZXByZXV2ZSI9PiRyb3dbJ2lkZXByZXV2ZSddLCJ0eXBlIj0+JHR5cGUpKTsKCQkJLy8kb25lcm93LT5kZXAgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ3JldHJpZXZlX2RpdmlzaW9ucycsJHJldHVybmlkLCdEJywgYXJyYXkoImlkb3JnYSI9PiRkZXAsICJpZGVwcmV1dmUiPT4kcm93WydpZGVwcmV1dmUnXSwidHlwZSI9PiR0eXBlKSk7CgkJfQoJCWVsc2VpZigkb3JnYSA9PSAnRsOpZMOpcmF0aW9uJykKCQl7CgkJCS8vJG9uZXJvdy0+bmF0aW9uYWwgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ3JldHJpZXZlX2RpdmlzaW9ucycsJHJldHVybmlkLCdOJywgYXJyYXkoImlkb3JnYSI9PiRmZWRlLCAiaWRlcHJldXZlIj0+JHJvd1snaWRlcHJldXZlJ10sInR5cGUiPT4kdHlwZSkpOwoJCQkvLyRvbmVyb3ctPnpvbmUgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ3JldHJpZXZlX2RpdmlzaW9ucycsJHJldHVybmlkLCdaJywgYXJyYXkoImlkb3JnYSI9PiR6b25lLCAiaWRlcHJldXZlIj0+JHJvd1snaWRlcHJldXZlJ10sInR5cGUiPT4kdHlwZSkpOwoJCQkvLyRvbmVyb3ctPmxpZ3VlID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdyZXRyaWV2ZV9kaXZpc2lvbnMnLCRyZXR1cm5pZCwnTCcsIGFycmF5KCJpZG9yZ2EiPT4kbGlndWUsICJpZGVwcmV1dmUiPT4kcm93WydpZGVwcmV1dmUnXSwidHlwZSI9PiR0eXBlKSk7CgkJCS8vJG9uZXJvdy0+ZGVwID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdyZXRyaWV2ZV9kaXZpc2lvbnMnLCRyZXR1cm5pZCwnRCcsIGFycmF5KCJpZG9yZ2EiPT4kZGVwLCAiaWRlcHJldXZlIj0+JHJvd1snaWRlcHJldXZlJ10sInR5cGUiPT4kdHlwZSkpOwoKCQl9CgkJZWxzZQoJCXsKCQkJLy8kb25lcm93LT5uYXRpb25hbCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwncmV0cmlldmVfZGl2aXNpb25zJywkcmV0dXJuaWQsJ04nLCBhcnJheSgiaWRvcmdhIj0+JGZlZGUsICJpZGVwcmV1dmUiPT4kcm93WydpZGVwcmV1dmUnXSwidHlwZSI9PiR0eXBlKSk7CgkJfQoJCQoJCSRvbmVyb3ctPm5hdGlvID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fZGl2aXNpb25zX3RhYicsJHJldHVybmlkLCRjb250ZW50cz0nTmF0aW9uYWwnLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJjb21wZXRzIiwiaWRlcHJldXZlIj0+JHJvd1snaWRlcHJldXZlJ10sImlkb3JnYSI9PiRmZWRlKSk7CgkJJG9uZXJvdy0+em9uZSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2RpdmlzaW9uc190YWInLCRyZXR1cm5pZCwkY29udGVudHM9J1pvbmUnLCBhcnJheSgiaWRlcHJldXZlIj0+JHJvd1snaWRlcHJldXZlJ10sImlkb3JnYSI9PiR6b25lKSk7CgkJJG9uZXJvdy0+bGlndWUgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9kaXZpc2lvbnNfdGFiJywkcmV0dXJuaWQsJGNvbnRlbnRzPSdMaWd1ZScsIGFycmF5KCJpZGVwcmV1dmUiPT4kcm93WydpZGVwcmV1dmUnXSwiaWRvcmdhIj0+JGxpZ3VlKSk7CgkJJG9uZXJvdy0+ZGVwID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fZGl2aXNpb25zX3RhYicsJHJldHVybmlkLCRjb250ZW50cz0nRMOpcCcsIGFycmF5KCJpZGVwcmV1dmUiPT4kcm93WydpZGVwcmV1dmUnXSwiaWRvcmdhIj0+JGRlcCkpOwoJfQoJCgkkb25lcm93LT5lZGl0bGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRfdHlwZV9jb21wZXQnLCRyZXR1cm5pZCwkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgJHRoaXMtPkxhbmcoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCJyZWNvcmRfaWQiPT4kcm93WydpZCddKSk7CgkKCWlmKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgRGVsZXRlJykpCgl7CgkJJG9uZXJvdy0+ZGVsZXRlbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZScsICRyZXR1cm5pZCwkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgicmVjb3JkX2lkIj0+JHJvd1snaWQnXSwgInR5cGVfY29tcGV0Ij0+InR5cGVfY29tcGV0IikpOwoJfQoJCgkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIH0KfQplbHNlCnsKCS8vaWwgbid5IGEgcGFzIGRlIHLDqXN1bHRhdHMsIG9uIGZhaXQgcXVvaSA/Cn0KCiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwoKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnbGlzdF9jb21wZXQudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_compte_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSApIGV4aXQ7Ci8vb24gw6l0YWJsaXQgbGVzIHBlcm1pc3Npb25zCmlmKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFNldCBQcmVmcycpKQp7CgkkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdqb3VldXJzJyk7Cn0KLy9kZWJ1Z19kaXNwbGF5KCRwYXJtcywgJ1BhcmFtZXRlcnMnKTsKaWYoaXNzZXQoJHBhcmFtc1snbWVzc2FnZSddKSAmJiAkcGFyYW1zWydtZXNzYWdlJ10gPT0iRmFsc2UiKQp7CgkkbWVzc2FnZSA9ICJVbmUgZXJyZXVyIGVzdCBzdXJ2ZW51ZSI7CgkvLyRzbWFydHktPmFzc2lnbignYWxlcnQnLCAnJyk7Cn0KJGlkQXBwbGkgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaWRBcHBsaScpOwokbW90ZGVwYXNzZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtb3RkZXBhc3NlJyk7CiRzZXJpZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzZXJpZScpOwovLyRzZXJpYWwgPSAhZW1wdHkoJHNlcmllKT8kc2VyaWU6IiI7CiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ3VwZGF0ZWNvbXB0ZScsICRyZXR1cm5pZCkpOwokc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKJHNtYXJ0eS0+YXNzaWduKCdpZEFwcGxpJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpZEFwcGxpJywgCihpc3NldCgkaWRBcHBsaSk/JGlkQXBwbGk6JycpICwgMTUsMjUpKTsKJHNtYXJ0eS0+YXNzaWduKCdtb3RkZXBhc3NlJywgJHRoaXMtPkNyZWF0ZUlucHV0UGFzc3dvcmQoJGlkLCdtb3RkZXBhc3NlJywoaXNzZXQoJG1vdGRlcGFzc2UpPyRtb3RkZXBhc3NlOicnKSwgMTUsMjUpKTsKJHNtYXJ0eS0+YXNzaWduKCdzZXJpZScsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdzZXJpZScsKGlzc2V0KCRzZXJpZSk/JHNlcmllOicnKSwgMjUsNTApKTsKLy8kc21hcnR5LT5hc3NpZ24oJ3RtJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICd0bScsJHZhbHVlID0gZGF0ZSgnWW1kSGlzdScpLDI1LDE1MCkpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnY29tcHRlc3VibWl0YnV0dG9uJywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2NvbXB0ZS50cGwnKTsKIwojRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.admin_divisions_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyAgICAgICAgICAgICAgICAgRElWSVNJT05TICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCiMjICAgQWZmaWNoYWdlIGRlcyBkaXZpc2lvbnMgZGVzIMOpcHJldXZlcyAgaW5kaXZpZHVlbGxlcyAgICMjCiMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKZ2xvYmFsICR0aGVtZU9iamVjdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fZmlsZV9fKS4nL2luY2x1ZGUvdHJhdmF1eC5waHAnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19maWxlX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKCiRzbWFydHktPmFzc2lnbigncmV0b3VybGllbicsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCwkY29udGVudHM9Ijw9IFJldG91ciIsYXJyYXkoImFjdGl2ZV90YWIiPT4iaW5kaXZzIikpKTsKLy9vbiBmYWl0IG1haW50ZW5hbnQgbGEgcmVxdWV0ZSBwcmluY2lwYWxlLi4uCiRyZXN1bHQ9IGFycmF5ICgpOwokcXVlcnkgPSAiU0VMRUNUIGR2LmlkLHRjLm5hbWUsdGMuaW5kaXZzLCB0Yy5pZG9yZ2EsIHRjLmlkZXByZXV2ZSwgZHYubGliZWxsZSwgZHYuaWRkaXZpc2lvbixkdi5zY29wZSwgZHYudXBsb2FkZWQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgQVMgdGMgLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2aXNpb25zIEFTIGR2IFdIRVJFICB0Yy5pZGVwcmV1dmUgPSBkdi5pZGVwcmV1dmUgQU5EIGR2LnNhaXNvbiA9ID8gQU5EIHRjLmluZGl2cyA9ICcxJyAiOwokcGFybXNbJ3NhaXNvbiddID0gJHNhaXNvbjsKCmlmKGlzc2V0KCRwYXJhbXNbJ2lkZXByZXV2ZSddKSAmJiAkcGFyYW1zWydpZGVwcmV1dmUnXSAhPScnKQp7CgkkcXVlcnkuPSIgQU5EIHRjLmlkZXByZXV2ZSA9ID8iOwoJJHBhcm1zWydpZGVwcmV1dmUnXSA9ICRwYXJhbXNbJ2lkZXByZXV2ZSddOwp9CgppZihpc3NldCgkcGFyYW1zWydpZG9yZ2EnXSkgJiYgJHBhcmFtc1snaWRvcmdhJ10gIT0gJycpCnsKCSRxdWVyeS49IiBBTkQgZHYuaWRvcmdhID0gPyI7CgkkcGFybXNbJ2lkb3JnYSddID0gJHBhcmFtc1snaWRvcmdhJ107Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2Vzc2FpJ10pICYmICRwYXJhbXNbJ2Vzc2FpJ10gIT0nMCcpCnsKCSRlc3NhaSA9ICRwYXJhbXNbJ2Vzc2FpJ107Cn0KZWxzZQp7CgkkZXNzYWkgPSAwOy8vUGFyIGTDqWZhdXQgMCwgc2kgcGFzIGRlIHLDqXN1bHRhdHMgZW4gYmRkLCByZWNoZXJjaGUgYXV0b21hdGlxdWUKfQovL2VjaG8gJGVzc2FpOwokc21hcnR5LT5hc3NpZ24oJ3JlY3VwX2RpdicsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfZGl2aXNpb25zJywkcmV0dXJuaWQsICRjb250ZW50cz0iUsOpY3Vww6lyZXIgbGVzIGRpdmlzaW9ucyIsYXJyYXkoImlkZXByZXV2ZSI9PiRwYXJhbXNbJ2lkZXByZXV2ZSddLCAiaWRvcmdhIj0+JHBhcmFtc1snaWRvcmdhJ10pKSk7CQoKJHF1ZXJ5Lj0iIE9SREVSIEJZIGR2LmxpYmVsbGUgQVNDIjsKLy9lY2hvICRxdWVyeTsKJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCRwYXJtcyk7CgppZiAoISRkYnJlc3VsdCkKewoKCQlkaWUoJ0ZBVEFMIFNRTCBFUlJPUjogJy4kZGItPkVycm9yTXNnKCkuJzxici8+UVVFUlkyOiAnLiRkYi0+c3FsKTsKCn0KCiRyb3dhcnJheT0gYXJyYXkgKCk7CiRyb3djbGFzcyA9ICcnOwppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewoJJHNjb3BlID0gJHJvd1snc2NvcGUnXTsKCWlmKCRzY29wZT09J0YnKXskbml2ZWF1ID0nTmF0aW9uYWwnO30KCWlmKCRzY29wZT09J1onKXskbml2ZWF1ID0nWm9uZSc7fQoJaWYoJHNjb3BlPT0nTCcpeyRuaXZlYXUgPSdSw6lnaW9uYWwnO30KCWlmKCRzY29wZT09J0QnKXskbml2ZWF1ID0nRMOpcGFydGVtZW50YWwnO30KCSRpbmRpdnMgPSAkcm93WydpbmRpdnMnXTsKCSR1cGxvYWRlZCA9ICRyb3dbJ3VwbG9hZGVkJ107Cgkkb25lcm93PSBuZXcgU3RkQ2xhc3MoKTsKCSRvbmVyb3ctPnJvd2NsYXNzPSAkcm93Y2xhc3M7Cgkkb25lcm93LT5pZD0gJHJvd1snaWQnXTsKCSRvbmVyb3ctPmlkb3JnYSA9ICRyb3dbJ2lkb3JnYSddOwoJJG9uZXJvdy0+aWRlcHJldXZlPSAkcm93WydpZGVwcmV1dmUnXTsKCSRvbmVyb3ctPmlkZGl2aXNpb249ICRyb3dbJ2lkZGl2aXNpb24nXTsKCSRvbmVyb3ctPm5hbWU9ICRyb3dbJ25hbWUnXTsKCSRvbmVyb3ctPmxpYmVsbGU9ICRyb3dbJ2xpYmVsbGUnXTsKCSRvbmVyb3ctPmluZGl2cyA9ICRyb3dbJ2luZGl2cyddOwoJJG9uZXJvdy0+c2NvcGUgPSAkbml2ZWF1OwoJLy8kb25lcm93LT51cGxvYWRlZCA9ICRyb3dbJ3VwbG9hZGVkJ107CglpZigkdXBsb2FkZWQgPT0xKQoJewoJCSRvbmVyb3ctPnVwbG9hZGVkPSAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL3RydWUuZ2lmJywgJHRoaXMtPkxhbmcoJ2FscmVhZHlfZG93bmxvYWRlZCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyk7Cgl9CgllbHNlCgl7CgkJJG9uZXJvdy0+dXBsb2FkZWQ9ICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZmFsc2UuZ2lmJywgJHRoaXMtPkxhbmcoJ25vdF9hbHJlYWR5X2Rvd25sb2FkZWQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpOwoJfQoJCgkvLyRvbmVyb3ctPnBvdWxlPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9kaXZfcmVzdWx0cycsICRyZXR1cm5pZCwgJ1BvdWxlcycsYXJyYXkoImRpcmVjdGlvbiI9PiJ0b3VyIiwiaWRlcHJldXZlIj0+JHJvd1snaWRlcHJldXZlJ10sICJpZGRpdmlzaW9uIj0+JHJvd1snaWRkaXZpc2lvbiddLCJpbmRpdnMiPT4kcm93WydpbmRpdnMnXSkpOwoJJG9uZXJvdy0+cG91bGU9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX3BvdWxlcycsICRyZXR1cm5pZCwgJ0FjY8OocyBhdXggcG91bGVzJyxhcnJheSgiaWRlcHJldXZlIj0+JHJvd1snaWRlcHJldXZlJ10sICJpZGRpdmlzaW9uIj0+JHJvd1snaWRkaXZpc2lvbiddLCJpZG9yZ2EiPT4kcGFyYW1zWydpZG9yZ2EnXSkpOwoJCgkkb25lcm93LT5lZGl0bGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF9yZXN1bHRzJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgJHRoaXMtPkxhbmcoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSkpOwoJCgkKCWlmKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgRGVsZXRlJykpCgl7CgkJJG9uZXJvdy0+ZGVsZXRlbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGVsZXRlJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlX2FsbF9kaXYnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWRkaXZpc2lvbiddLCd0eXBlX2NvbXBldCc9PidkaXZpc2lvbicpLCAkdGhpcy0+TGFuZygnZGVsZXRlX2FsbF9kaXYnKSk7Cgl9CgkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIH0KICB9CiAgZWxzZSAvL2lsIG4neSBhIHBhcyBkZSByw6lzdWx0YXRzLCBvbiB2YSBsZXMgY2hlcmNoZXIKICB7CglpZigkZXNzYWkgPT0gJzAnKQoJewoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsJ3JldHJpZXZlX2RpdmlzaW9ucycsJHJldHVybmlkLCBhcnJheSgiaWRlcHJldXZlIj0+JHBhcmFtc1snaWRlcHJldXZlJ10sICJpZG9yZ2EiPT4kcGFyYW1zWydpZG9yZ2EnXSkpOwkKCQkKCX0KICB9CmlmKCRlc3NhaSA9PTEgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID09MCkKewoJJHNtYXJ0eS0+YXNzaWduKCJhbGVydF9tZXNzYWdlIiwiUGFzIGRlIHLDqXN1bHRhdHMgZGlzcG9uaWJsZXMiKTsKfQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygnc2hlZXRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKJHNtYXJ0eS0+YXNzaWduKCd0b3VycycsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdhZG1pbl9wb3VsZXMnLCAkcmV0dXJuaWQsJ1RvdXJzJywgYXJyYXkoImlkZXByZXV2ZSI9PiRwYXJhbXNbJ2lkZXByZXV2ZSddKSkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm0yc3RhcnQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdtYXNzX2FjdGlvbicsJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbignZm9ybTJlbmQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokYXJ0aWNsZXMgPSBhcnJheSgiU3VwcHJpbWVyIj0+InN1cHBfZGl2IiwiUsOpY3Vww6lyZXIgbGVzIHRvdXJzIj0+InJldHJpZXZlX2Rpdl90b3VycyIsICJEYXRlciI9PiJkYXRlciIpOwokc21hcnR5LT5hc3NpZ24oJ2FjdGlvbmRlbWFzc2UnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnYWN0aW9uZGVtYXNzZScsJGFydGljbGVzKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0X21hc3NhY3Rpb24nLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdF9tYXNzYWN0aW9uJywkdGhpcy0+TGFuZygnYXBwbHlfdG9fc2VsZWN0aW9uJyksJycsJycsJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmVfYWN0aW9ubXVsdGlwbGUnKSkpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdkaXZpc2lvbnMudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_div_classement.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwojICAgICAgICBBZG1pbmlzdHJhdGlvbiBkZXMgY2xhc3NlbWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKCiRub21fZXF1aXBlcyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdub21fZXF1aXBlcycpOwovKiBvbiBmYWl0IHVuIGZvcm11bGFpcmUgZGUgZmlsdHJhZ2UgZGVzIHLDqXN1bHRhdHMqLwovL2Nyw6lhdGlvbnMgZGUgbGllbnMgZGUgcsOpY3Vww6lyYXRpb24gZGVzIGNvbXDDqXRpdGlvbnMKLy9vbiByw6ljdXDDqHJlIGQnYWJvcmQgbGVzIHByw6lmw6lyZW5jZXMgZGUgem9uZXMsIGxpZ3VlcyBldCBkw6lwYXJ0ZW1lbnQKJGZlZGUgPSAnMTAwMDAxJzsKJHpvbmUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnem9uZScpOwokbGlndWUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbGlndWUnKTsKJGRlcCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXAnKTsKLy8gT24gcsOpY3Vww6hyZSBsZXMgcGFyYW3DqHRyZXMgdHJhbnNtaXMKJGlkZXByZXV2ZSA9ICcnOwokaWRkaXZpc2lvbiA9ICcnOwokdGFibGVhdSA9ICcnOwokdG91ciA9IDA7CiRlcnJvciA9IDA7IC8vb24gaW5zdGFuY2llIHVuIGNvbXB0ZXVyIGQnZXJyZXVycwppZihpc3NldCgkcGFyYW1zWydlc3NhaSddKSAmJiAkcGFyYW1zWydlc3NhaSddICE9JzAnKQp7CgkkZXNzYWkgPSAkcGFyYW1zWydlc3NhaSddOwp9CmVsc2UKewoJJGVzc2FpID0gMDsvL1BhciBkw6lmYXV0IDAsIHNpIHBhcyBkZSByw6lzdWx0YXRzIGVuIGJkZCwgcmVjaGVyY2hlIGF1dG9tYXRpcXVlCn0KaWYoaXNzZXQoJHBhcmFtc1snaWRlcHJldXZlJ10pICYmICRwYXJhbXNbJ2lkZXByZXV2ZSddICE9ICcnKQp7CgkkaWRlcHJldXZlID0gJHBhcmFtc1snaWRlcHJldXZlJ107CgkKfQplbHNlCnsKCSRlcnJvcisrOwp9CmlmKGlzc2V0KCRwYXJhbXNbJ2lkZGl2aXNpb24nXSkgJiYgJHBhcmFtc1snaWRkaXZpc2lvbiddICE9ICcnKQp7CgkkaWRkaXZpc2lvbiA9ICRwYXJhbXNbJ2lkZGl2aXNpb24nXTsKCQp9CmVsc2UKewoJJGVycm9yKys7Cn0KaWYoaXNzZXQoJHBhcmFtc1sndGFibGVhdSddKSAmJiAkcGFyYW1zWyd0YWJsZWF1J10gIT0gJycpCnsKCSR0YWJsZWF1ID0gJHBhcmFtc1sndGFibGVhdSddOwoKfQplbHNlCnsKCSRlcnJvcisrOwp9CmlmKGlzc2V0KCRwYXJhbXNbJ3RvdXInXSkgJiYgJHBhcmFtc1sndG91ciddICE9ICcnKQp7CgkkdG91ciA9ICRwYXJhbXNbJ3RvdXInXTsKCn0KZWxzZQp7CgkkZXJyb3IrKzsKfQppZihpc3NldCgkcGFyYW1zWydpZG9yZ2EnXSkgJiYgJHBhcmFtc1snaWRvcmdhJ10gIT0gJycpCnsKCSRpZG9yZ2EgPSAkcGFyYW1zWydpZG9yZ2EnXTsKCn0KJHNtYXJ0eS0+YXNzaWduKCdyZXR1cm5saW5rJywgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdhZG1pbl9wb3VsZXMnLCRyZXR1cm5pZCwkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2JhY2suZ2lmJywgJHRoaXMtPkxhbmcoJ2JhY2snKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCJhY3RpdmVfdGFiIj0+ImRpdmlzaW9ucyIsImlkZXByZXV2ZSI9PiRpZGVwcmV1dmUsImlkZGl2aXNpb24iPT4kaWRkaXZpc2lvbiwiaWRvcmdhIj0+JHBhcmFtc1snaWRvcmdhJ10pKSk7Ci8vb24gY29uc3RydWl0IHVuIGxpZSBkZSByw6ljdXDDqXJhdGlvbiBkZXMgcsOpc3VsdGF0cwokc21hcnR5LT5hc3NpZ24oJ3JlY3VwX2NsYXNzZW1lbnQnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwncmV0cmlldmVfZGl2X3Jlc3VsdHMnLCAkcmV0dXJuaWQsICRjb250ZW50cz0nUsOpY3Vww6lyZXIgbGUgY2xhc3NlbWVudCcsIGFycmF5KCJkaXJlY3Rpb24iPT4iY2xhc3NlbWVudCIsImlkZXByZXV2ZSI9PiRpZGVwcmV1dmUsImlkZGl2aXNpb24iPT4kaWRkaXZpc2lvbiwidGFibGVhdSI9PiR0YWJsZWF1LCJ0b3VyIj0+JHRvdXIsImlkb3JnYSI9PiRpZG9yZ2EpKSk7CiRyZXN1bHQ9IGFycmF5ICgpOwokcXVlcnkgPSAiU0VMRUNUIGlkLCBpZGVwcmV1dmUsaWRkaXZpc2lvbix0YWJsZWF1LHRvdXIscmFuZywgbm9tLGNsdCxjbHViLHBvaW50cywgc2Fpc29uIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2Rpdl9jbGFzc2VtZW50IFdIRVJFIGlkZXByZXV2ZSA9ID8gQU5EIGlkZGl2aXNpb24gPSA/IEFORCB0YWJsZWF1ID0gPyBPUkRFUiBCWSBpZCBBU0MiOwoKJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRpZGVwcmV1dmUsJGlkZGl2aXNpb24sICR0YWJsZWF1KSk7Ci8vIHRoZSB0b3AgbmF2IGJhcgovLyRzbWFydHktPmFzc2lnbigncmV0dXJubGluaycsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQsJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9iYWNrLmdpZicsICR0aGlzLT5MYW5nKCdiYWNrJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgiYWN0aXZlX3RhYiI9PiJkaXZpc2lvbnMiKSkpOwovLyR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRfdHlwZV9jb21wZXQnLCRyZXR1cm5pZCwkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvdG9wZmlsZXMvdGVtcGxhdGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCJyZWNvcmRfaWQiPT4kcm93WydpZCddKSk7Cgokcm93Y2xhc3MgPSAnJzsKLy9lY2hvICRxdWVyeTsKJHJvd2FycmF5PSBhcnJheSAoKTsKaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIHsKCSRjbHViID0gJHJvd1snY2x1YiddOwoJaWYoc3Vic3RyX2NvdW50KCRjbHViLCRub21fZXF1aXBlcyk+MCkKCXsKCQkkbW9uX2NsdWIgPSAxOwoJfQoJZWxzZQoJewoJCSRtb25fY2x1YiA9IDA7Cgl9CgkKCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCSRvbmVyb3ctPnRvdXJfaWQgPSAkcm93WydpZCddOwoJJG9uZXJvdy0+aWRlcHJldXZlPSAkcm93WydpZGVwcmV1dmUnXTsKCSRvbmVyb3ctPmlkZGl2aXNpb249ICRyb3dbJ2lkZGl2aXNpb24nXTsKCSRvbmVyb3ctPnRvdXI9ICRyb3dbJ3RvdXInXTsKCSRvbmVyb3ctPnRhYmxlYXUgPSAkcm93Wyd0YWJsZWF1J107Cgkkb25lcm93LT5yYW5nPSAkcm93WydyYW5nJ107Cgkkb25lcm93LT5ub209ICRyb3dbJ25vbSddOwoJJG9uZXJvdy0+Y2x0ID0gJHJvd1snY2x0J107Cgkkb25lcm93LT5tb25fY2x1YiA9ICRtb25fY2x1YjsKCSRvbmVyb3ctPmNsdWIgPSAkcm93WydjbHViJ107CgkKCS8vJG9uZXJvdy0+cG91bGU9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX2Rpdl9yZXN1bHRzJywgJHJldHVybmlkLCAnUG91bGUnLGFycmF5KCJkaXJlY3Rpb24iPT4idG91ciIsImlkZXByZXV2ZSI9PiRyb3dbJ2lkZXByZXV2ZSddLCAiaWRkaXZpc2lvbiI9PiRyb3dbJ2lkZGl2aXNpb24nXSkpOwoJJG9uZXJvdy0+Y2xhc3NlbWVudD0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfZGl2X3Jlc3VsdHMnLCAkcmV0dXJuaWQsICdDbGFzc2VtZW50JyxhcnJheSgiZGlyZWN0aW9uIj0+ImNsYXNzZW1lbnQiLCJpZGVwcmV1dmUiPT4kcm93WydpZGVwcmV1dmUnXSwgImlkZGl2aXNpb24iPT4kcm93WydpZGRpdmlzaW9uJ10sInRhYmxlYXUiPT4kcm93Wyd0YWJsZWF1J10sInRvdXIiPT4kcm93Wyd0b3VyJ10pKTsKCSRvbmVyb3ctPnBhcnRpZT0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfZGl2X3Jlc3VsdHMnLCAkcmV0dXJuaWQsICdQYXJ0aWVzJyxhcnJheSgiZGlyZWN0aW9uIj0+InBhcnRpZSIsImlkZXByZXV2ZSI9PiRyb3dbJ2lkZXByZXV2ZSddLCAiaWRkaXZpc2lvbiI9PiRyb3dbJ2lkZGl2aXNpb24nXSwidGFibGVhdSI9PiRyb3dbJ3RhYmxlYXUnXSwidG91ciI9PiRyb3dbJ3RvdXInXSkpOwoJCgkvLyRvbmVyb3ctPmVkaXRsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF90eXBlX2NvbXBldCcsJHJldHVybmlkLCR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoInJlY29yZF9pZCI9PiRyb3dbJ2lkJ10pKTsKCQoJaWYoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBEZWxldGUnKSkKCXsKCQkkb25lcm93LT5kZWxldGVsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGVsZXRlJywgJHJldHVybmlkLCR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCJyZWNvcmRfaWQiPT4kcm93WydpZCddLCAidHlwZV9jb21wZXQiPT4idHlwZV9jb21wZXQiKSk7Cgl9CgkKCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzPSAicm93MiIgOiAkcm93Y2xhc3M9ICJyb3cxIik7Cgkkcm93YXJyYXlbXT0gJG9uZXJvdzsKICAgICAgfQogIH0KZWxzZQp7CgkvL3BhcyBkZSByw6lzdWx0YXRzLCBvbiB2YSBsZXMgY2hlcmNoZXIgYXV0b21hdGlxdWVtZW50ID8KCS8vb24gcmVnYXJkZSBzaSBsJ2Vzc2FpIGVzdCDDoCAwIG91IG5vbgoJaWYoJGVzc2FpID09ICcwJykKCXsKCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCdyZXRyaWV2ZV9kaXZfcmVzdWx0cycsJHJldHVybmlkLCBhcnJheSgiZGlyZWN0aW9uIj0+ImNsYXNzZW1lbnQiLCJpZGVwcmV1dmUiPT4kaWRlcHJldXZlLCAiaWRkaXZpc2lvbiI9PiRpZGRpdmlzaW9uLCJ0YWJsZWF1Ij0+JHRhYmxlYXUsInRvdXIiPT4kdG91ciwiaWRvcmdhIj0+JGlkb3JnYSkpOwoJfQp9CiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwoKJHNtYXJ0eS0+YXNzaWduKCdmb3JtMnN0YXJ0JywKCQkkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnbWFzc19hY3Rpb24nLCRyZXR1cm5pZCkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm0yZW5kJywKCQkkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKJGFydGljbGVzID0gYXJyYXkoIlN1cHByaW1lciI9PiJzdXBwX2Rpdl9jbGFzc2VtZW50Iik7CiRzbWFydHktPmFzc2lnbignYWN0aW9uZGVtYXNzZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdhY3Rpb25kZW1hc3NlJywkYXJ0aWNsZXMpKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRfbWFzc2FjdGlvbicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0X21hc3NhY3Rpb24nLCR0aGlzLT5MYW5nKCdhcHBseV90b19zZWxlY3Rpb24nKSwnJywnJywkdGhpcy0+TGFuZygnYXJleW91c3VyZV9hY3Rpb25tdWx0aXBsZScpKSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2xpc3RfY2xhc3NlbWVudC50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.admin_div_parties.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwojICAgICAgICBBZG1pbmlzdHJhdGlvbiBkZXMgcGFydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwovL2Nyw6lhdGlvbnMgZGUgbGllbnMgZGUgcsOpY3Vww6lyYXRpb24gZGVzIGNvbXDDqXRpdGlvbnMKLy9vbiByw6ljdXDDqHJlIGQnYWJvcmQgbGVzIHByw6lmw6lyZW5jZXMgZGUgem9uZXMsIGxpZ3VlcyBldCBkw6lwYXJ0ZW1lbnQKJGlkZXByZXV2ZSA9ICcnOwokaWRkaXZpc2lvbiA9ICcnOwokdGFibGVhdSA9ICcnOwokdG91ciA9IDA7CiRlcnJvciA9IDA7IC8vb24gaW5zdGFuY2llIHVuIGNvbXB0ZXVyIGQnZXJyZXVycwppZihpc3NldCgkcGFyYW1zWydpZGVwcmV1dmUnXSkgJiYgJHBhcmFtc1snaWRlcHJldXZlJ10gIT0gJycpCnsKCSRpZGVwcmV1dmUgPSAkcGFyYW1zWydpZGVwcmV1dmUnXTsKCQp9CmVsc2UKewoJJGVycm9yKys7Cn0KaWYoaXNzZXQoJHBhcmFtc1snaWRkaXZpc2lvbiddKSAmJiAkcGFyYW1zWydpZGRpdmlzaW9uJ10gIT0gJycpCnsKCSRpZGRpdmlzaW9uID0gJHBhcmFtc1snaWRkaXZpc2lvbiddOwoJCn0KZWxzZQp7CgkkZXJyb3IrKzsKfQppZihpc3NldCgkcGFyYW1zWyd0YWJsZWF1J10pICYmICRwYXJhbXNbJ3RhYmxlYXUnXSAhPSAnJykKewoJJHRhYmxlYXUgPSAkcGFyYW1zWyd0YWJsZWF1J107Cgp9CmVsc2UKewoJJGVycm9yKys7Cn0KaWYoaXNzZXQoJHBhcmFtc1sndG91ciddKSAmJiAkcGFyYW1zWyd0b3VyJ10gIT0gJycpCnsKCSR0b3VyID0gJHBhcmFtc1sndG91ciddOwoKfQplbHNlCnsKCSRlcnJvcisrOwp9CmlmKGlzc2V0KCRwYXJhbXNbJ2lkb3JnYSddKSAmJiAkcGFyYW1zWydpZG9yZ2EnXSAhPSAnJykKewoJJGlkb3JnYSA9ICRwYXJhbXNbJ2lkb3JnYSddOwoKfQovL29uIGNvbnN0cnVpdCB1biBsaWUgZGUgcsOpY3Vww6lyYXRpb24gZGVzIHLDqXN1bHRhdHMKJHNtYXJ0eS0+YXNzaWduKCdsaWVuX3JldG91cicsCgkJJHRoaXMtPkNyZWF0ZVJldHVybkxpbmsoJGlkLCAkcmV0dXJuaWQsJGNvbnRlbnRzPSdSZXRvdXInKSk7CiRzbWFydHktPmFzc2lnbigncmVjdXBfcGFydGllcycsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdyZXRyaWV2ZV9kaXZfcmVzdWx0cycsICRyZXR1cm5pZCwgJGNvbnRlbnRzPSdSw6ljdXDDqXJlciBsZXMgcGFydGllcycsIGFycmF5KCJkaXJlY3Rpb24iPT4icGFydGllIiwiaWRlcHJldXZlIj0+JGlkZXByZXV2ZSwiaWRkaXZpc2lvbiI9PiRpZGRpdmlzaW9uLCJ0YWJsZWF1Ij0+JHRhYmxlYXUsInRvdXIiPT4kdG91ciwiaWRvcmdhIj0+JGlkb3JnYSkpKTsKJHJlc3VsdD0gYXJyYXkgKCk7CiRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfcGFydGllcyBXSEVSRSB0YWJsZWF1ID0gPyI7CgokZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHRhYmxlYXUpKTsKLy8gdGhlIHRvcCBuYXYgYmFyCi8vJHNtYXJ0eS0+YXNzaWduKCdyZXR1cm5saW5rJywgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCwkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2JhY2suZ2lmJywgJHRoaXMtPkxhbmcoJ2JhY2snKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCJhY3RpdmVfdGFiIj0+ImRpdmlzaW9ucyIpKSk7Ci8vJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF90eXBlX2NvbXBldCcsJHJldHVybmlkLCR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy90b3BmaWxlcy90ZW1wbGF0ZS5naWYnLCAkdGhpcy0+TGFuZygnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoInJlY29yZF9pZCI9PiRyb3dbJ2lkJ10pKTsKCiRyb3djbGFzcyA9ICcnOwovL2VjaG8gJHF1ZXJ5Owokcm93YXJyYXk9IGFycmF5KCk7CmlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQogICAgICB7CgkKCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCSRvbmVyb3ctPnRvdXJfaWQgPSAkcm93WydpZCddOwoJJG9uZXJvdy0+aWRlcHJldXZlPSAkcm93WydpZGVwcmV1dmUnXTsKCSRvbmVyb3ctPmlkZGl2aXNpb249ICRyb3dbJ2lkZGl2aXNpb24nXTsKCS8vJG9uZXJvdy0+dG91cj0gJHJvd1sndG91ciddOwoJJG9uZXJvdy0+dGFibGVhdSA9ICRyb3dbJ3RhYmxlYXUnXTsKCSRvbmVyb3ctPmxpYmVsbGU9ICRyb3dbJ2xpYmVsbGUnXTsKCSRvbmVyb3ctPnZhaW49ICRyb3dbJ3ZhaW4nXTsKCSRvbmVyb3ctPnBlcmQgPSAkcm93WydwZXJkJ107Cgkkb25lcm93LT5pZGVwcmV1dmUgPSAkcm93WydpZGVwcmV1dmUnXTsKCQoJLy8kb25lcm93LT5wb3VsZT0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfZGl2X3Jlc3VsdHMnLCAkcmV0dXJuaWQsICdQb3VsZScsYXJyYXkoImRpcmVjdGlvbiI9PiJ0b3VyIiwiaWRlcHJldXZlIj0+JHJvd1snaWRlcHJldXZlJ10sICJpZGRpdmlzaW9uIj0+JHJvd1snaWRkaXZpc2lvbiddKSk7Cgkkb25lcm93LT5jbGFzc2VtZW50PSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9kaXZfcmVzdWx0cycsICRyZXR1cm5pZCwgJ0NsYXNzZW1lbnQnLGFycmF5KCJkaXJlY3Rpb24iPT4iY2xhc3NlbWVudCIsImlkZXByZXV2ZSI9PiRyb3dbJ2lkZXByZXV2ZSddLCAiaWRkaXZpc2lvbiI9PiRyb3dbJ2lkZGl2aXNpb24nXSwidGFibGVhdSI9PiRyb3dbJ3RhYmxlYXUnXSwidG91ciI9PiRyb3dbJ3RvdXInXSkpOwoJJG9uZXJvdy0+cGFydGllPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9kaXZfcmVzdWx0cycsICRyZXR1cm5pZCwgJ1BhcnRpZXMnLGFycmF5KCJkaXJlY3Rpb24iPT4icGFydGllIiwiaWRlcHJldXZlIj0+JHJvd1snaWRlcHJldXZlJ10sICJpZGRpdmlzaW9uIj0+JHJvd1snaWRkaXZpc2lvbiddLCJ0YWJsZWF1Ij0+JHJvd1sndGFibGVhdSddLCJ0b3VyIj0+JHJvd1sndG91ciddKSk7CgkKCS8vJG9uZXJvdy0+ZWRpdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0X3R5cGVfY29tcGV0JywkcmV0dXJuaWQsJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgicmVjb3JkX2lkIj0+JHJvd1snaWQnXSkpOwoJCglpZigkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIERlbGV0ZScpKQoJewoJCSRvbmVyb3ctPmRlbGV0ZWxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWxldGUnLCAkcmV0dXJuaWQsJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoInJlY29yZF9pZCI9PiRyb3dbJ2lkJ10sICJ0eXBlX2NvbXBldCI9PiJ0eXBlX2NvbXBldCIpKTsKCX0KCQoJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCSRyb3dhcnJheVtdPSAkb25lcm93OwogICAgICB9CiAgfQoKJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Jlc3VsdHNmb3VuZCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7Cgokc21hcnR5LT5hc3NpZ24oJ2Zvcm0yc3RhcnQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdtYXNzX2FjdGlvbicsJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbignZm9ybTJlbmQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokYXJ0aWNsZXMgPSBhcnJheSgiU3VwcHJpbWVyIj0+InN1cHBfZGl2X3BhcnRpZXMiKTsKJHNtYXJ0eS0+YXNzaWduKCdhY3Rpb25kZW1hc3NlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2FjdGlvbmRlbWFzc2UnLCRhcnRpY2xlcykpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF9tYXNzYWN0aW9uJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXRfbWFzc2FjdGlvbicsJHRoaXMtPkxhbmcoJ2FwcGx5X3RvX3NlbGVjdGlvbicpLCcnLCcnLCR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlX2FjdGlvbm11bHRpcGxlJykpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnbGlzdF9wYXJ0aWVzLnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_fftt_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyAgICAgICAgICAgICAgICAgIEZGVFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwpyZXF1aXJlX29uY2UoZGlybmFtZShfX2ZpbGVfXykuJy9pbmNsdWRlL3RyYXZhdXgucGhwJyk7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fZmlsZV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7Ci8qIG9uIGZhaXQgdW4gZm9ybXVsYWlyZSBkZSBmaWx0cmFnZSBkZXMgcsOpc3VsdGF0cyovCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnZGVmYXVsdGFkbWluJywnJywgJ3Bvc3QnLCAnJyxmYWxzZSwnJyxhcnJheSgnYWN0aXZlX3RhYic9PidmZnR0JykpKTsKJGRhdGVsaXN0WyR0aGlzLT5MYW5nKCdhbGxkYXRlcycpXSA9ICcnOwkKJHBsYXllcnNsaXN0WyR0aGlzLT5MYW5nKCdhbGxwbGF5ZXJzJyldID0gJyc7CiR0eXBlQ29tcGV0ID0gYXJyYXkoKTsKJHR5cGVDb21wZXRbJHRoaXMtPkxhbmcoJ2FsbGNvbXBldCcpXSA9ICcnOwokcXVlcnkxID0gIlNFTEVDVCBwdHMuZGF0ZV9ldmVudCxwdHMuY29kZWNoYW1wLHB0cy5saWNlbmNlICwgQ09OQ0FUX1dTKCcgJyxqLm5vbSwgai5wcmVub20pIEFTIHBsYXllciBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIEFTIHB0cyAgLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBBUyBqIFdIRVJFIHB0cy5saWNlbmNlICA9IGoubGljZW5jZSBBTkQgcHRzLnNhaXNvbiA9ID8gT1JERVIgQlkgai5ub20gQVNDLCBwdHMuZGF0ZV9ldmVudCBBU0MiOy8vIiI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkxLCBhcnJheSgkc2Fpc29uKSk7CndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICB7CiAgICAkZGF0ZWxpc3RbJHJvd1snZGF0ZV9ldmVudCddXSA9ICRyb3dbJ2RhdGVfZXZlbnQnXTsKICAgICRwbGF5ZXJzbGlzdFskcm93WydwbGF5ZXInXV0gPSAkcm93WydsaWNlbmNlJ107CiAgICAkdHlwZUNvbXBldFskcm93Wydjb2RlY2hhbXAnXV0gPSAkcm93Wydjb2RlY2hhbXAnXTsKICB9CgoJaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdGZpbHRlciddKSApCiAgCXsKICAgIAkJaWYoIGlzc2V0KCAkcGFyYW1zWydkYXRlbGlzdCddKSApCiAgICAgIAkJewoJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGF0ZUNob2lzaScsICRwYXJhbXNbJ2RhdGVsaXN0J10pOwogICAgICAJCX0KCQlpZiggaXNzZXQoICRwYXJhbXNbJ3BsYXllcnNsaXN0J10pICkKICAgICAgCQl7CgkJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwbGF5ZXJDaG9pc2knLCAkcGFyYW1zWydwbGF5ZXJzbGlzdCddKTsKICAgICAgCQl9CiAgICAJCWlmKCBpc3NldCggJHBhcmFtc1sndHlwZUNvbXBldCddKSApCgkJeyAKCQkJJHRoaXMtPlNldFByZWZlcmVuY2UgKCAnY29tcGV0Q2hvaXNpZScsICRwYXJhbXNbJ3R5cGVDb21wZXQnXSk7CgkJfQoJfQoJCiRjdXJkYXRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoICdkYXRlQ2hvaXNpJyApOwokY3VycGxheWVyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoICdwbGF5ZXJDaG9pc2knKTsKJGN1ckNvbXBldCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCAnY29tcGV0Q2hvaXNpZScpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF90b3VyJywKCQkkdGhpcy0+TGFuZygndG91cicpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9kYXRlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2RhdGVsaXN0JywkZGF0ZWxpc3QsLTEsJGN1cmRhdGUpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jb21wZXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwndHlwZUNvbXBldCcsJHR5cGVDb21wZXQsLTEsJGN1ckNvbXBldCkpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3BsYXllcicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdwbGF5ZXJzbGlzdCcsJHBsYXllcnNsaXN0LC0xLCRjdXJwbGF5ZXIpKTsKCQkKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRmaWx0ZXInLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdGZpbHRlcicsJHRoaXMtPkxhbmcoJ2ZpbHRyZXMnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokcGFybXMgPSBhcnJheSgpOwokcmVzdWx0PSBhcnJheSAoKTsKJHF1ZXJ5ID0gIlNFTEVDVCBDT05DQVRfV1MoJyAnLCBqLm5vbSwgai5wcmVub20pIEFTIGpvdWV1ciwgcHRzLmlkLCBwdHMudmQsIHB0cy5udW1qb3VybixwdHMuZGF0ZV9ldmVudCwgcHRzLmFkdm5vbXByZSxwdHMucG9pbnRyZXMsIHB0cy5hZHZjbGFvZiAgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyBBUyBwdHMgLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBBUyBqIFdIRVJFIHB0cy5saWNlbmNlID0gai5saWNlbmNlIEFORCBwdHMuc2Fpc29uID0gPyI7CiRwYXJtc1snc2Fpc29uJ10gPSAkc2Fpc29uOwoKCWlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXRmaWx0ZXInXSApKXsKCQkKCQlpZiAoJGN1cmRhdGUgIT0nJykKCQl7CgkJCSRxdWVyeS49IiBBTkQgcHRzLmRhdGVfZXZlbnQgPSA/ICI7CgkJCSRwYXJtc1snZGF0ZV9ldmVudCddID0gJGN1cmRhdGU7CgkJCgkJfQoJCQoJCWlmICgkY3VycGxheWVyICE9JycpCgkJewoJCQkkcXVlcnkuPSIgQU5EIHB0cy5saWNlbmNlID0gPyI7CgkJCSRwYXJtc1snbGljZW5jZSddID0gJGN1cnBsYXllcjsKCQkKCQl9CgkJCgkJaWYgKCRjdXJDb21wZXQgIT0nJykKCQl7CgkJCSRxdWVyeS49IiBBTkQgcHRzLmNvZGVjaGFtcCA9ID8iOwoJCQkkcGFybXNbJ2NvZGVjaGFtcCddID0gJGN1ckNvbXBldDsKCQl9CgoJCSRxdWVyeS49IiBPUkRFUiBCWSBqb3VldXIscHRzLmRhdGVfZXZlbnQgQVNDIjsKCX0KCWVsc2UKCXsKCQkkcXVlcnkuPSIgT1JERVIgQlkgam91ZXVyLHB0cy5kYXRlX2V2ZW50IEFTQyBMSU1JVCAxMDAiOwoJCQoJfQoJCi8vZWNobyAkcXVlcnk7CiRkYnJlc3VsdD0gJGRiLT5FeGVjdXRlKCRxdWVyeSwkcGFybXMpOwoKLyoKaWYgKCEkZGJyZXN1bHQpCnsKCgkJZGllKCdGQVRBTCBTUUwgRVJST1I6ICcuJGRiLT5FcnJvck1zZygpLic8YnIvPlFVRVJZMjogJy4kZGItPnNxbCk7Cgp9CiovCiRyb3dhcnJheT0gYXJyYXkgKCk7CmlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQogICAgICB7Cgkkb25lcm93PSBuZXcgU3RkQ2xhc3MoKTsKCSRvbmVyb3ctPnJvd2NsYXNzPSAkcm93Y2xhc3M7Cgkkb25lcm93LT5pZD0gJHJvd1snaWQnXTsKCSRvbmVyb3ctPmRhdGVfZXZlbnQgPSAkcm93WydkYXRlX2V2ZW50J107Cgkkb25lcm93LT5udW1qb3Vybj0gJHJvd1snbnVtam91cm4nXTsKCSRvbmVyb3ctPmpvdWV1cj0gJHJvd1snam91ZXVyJ107Cgkkb25lcm93LT52ZD0gJHJvd1sndmQnXTsgCi8vCSRvbmVyb3ctPmxpY2VuY2UgPSAkcm93WydsaWNlbmNlJ107Cgkkb25lcm93LT5hZHZub21wcmU9ICRyb3dbJ2Fkdm5vbXByZSddOwovLwkkb25lcm93LT5hZHZlcnNhaXJlPSAkcm93WydhZHZlcnNhaXJlJ107Cgkkb25lcm93LT5wb2ludHJlcz0gJHJvd1sncG9pbnRyZXMnXTsKCS8vJG9uZXJvdy0+ZXF1aXBlPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdjcmVhdGVfbmV3X3VzZXInLCAkcmV0dXJuaWQsICRyb3dbJ2VxdWlwZSddLCAkcm93KTsKCSRvbmVyb3ctPmVkaXRsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0X3Jlc3VsdHMnLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSk7CgkKCQoJaWYoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBEZWxldGUnKSkKCXsKCQkkb25lcm93LT5kZWxldGVsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWxldGUnLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSwndHlwZV9jb21wZXQnPT4nZmZ0dCcpLCAkdGhpcy0+TGFuZygnZGVsZXRlX2NvbmZpcm0nKSk7Cgl9CgkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIH0KICB9Ci8vZGV1eGnDqG1tZSByZXF1ZXRlIHBvdXIgY29tcHRlciBsZXMgcG9pbnRzIGRlIGNldHRlIGpvdXJuw6llCiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdzaGVldHNmb3VuZHRleHQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwoKJHNtYXJ0eS0+YXNzaWduKCdmb3JtMnN0YXJ0JywKCQkkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnbWFzc19hY3Rpb24nLCRyZXR1cm5pZCkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm0yZW5kJywKCQkkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKJGFydGljbGVzID0gYXJyYXkoIlN1cHByaW1lciI9PiJzdXBwX2ZmdHQiKTsKJHNtYXJ0eS0+YXNzaWduKCdhY3Rpb25kZW1hc3NlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2FjdGlvbmRlbWFzc2UnLCRhcnRpY2xlcykpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF9tYXNzYWN0aW9uJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXRfbWFzc2FjdGlvbicsJHRoaXMtPkxhbmcoJ2FwcGx5X3RvX3NlbGVjdGlvbicpLCcnLCcnLCR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlX2FjdGlvbm11bHRpcGxlJykpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZmZ0dC50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.admin_joueurs_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CmlmKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFVzZScpKQp7CgkkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdqb3VldXJzJyk7Cn0KLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX2ZpbGVfXykuJy9pbmNsdWRlL3RyYXZhdXgucGhwJyk7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fZmlsZV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKZ2xvYmFsICR0aGVtZU9iamVjdDsKCiRlcnJvcl9jb21wdGUgPSAwOwokaWRBcHBsaSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpZEFwcGxpJyk7CiRtb3RkZXBhc3NlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ21vdGRlcGFzc2UnKTsKCiRyb3djbGFzcz0nJzsKLyoKaWYoJGlkQXBwbGkgPT0nJykKewoJJGVycm9yX2NvbXB0ZSsrOwp9CmlmKCRtb3RkZXBhc3NlID09ICcnKQp7CgkkZXJyb3JfY29tcHRlKys7Cn0KKi8KLy8kZXJyb3JfY29tcHRlID0xOwovL2VjaG8gJGVycm9yX2NvbXB0ZTsKJGVycm9yX2NvbmZpZyA9IDA7CiRjbHViX251bWJlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjbHViX251bWJlcicpOwokbGlndWUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbGlndWUnKTsKJHpvbmUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnem9uZScpOwokZGVwID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlcCcpOwppZigkY2x1Yl9udW1iZXIgPT0nJykKewoJJGVycm9yX2NvbmZpZysrOwp9CmlmKCRsaWd1ZSA9PScnKQp7CgkkZXJyb3JfY29uZmlnKys7Cn0KaWYoJHpvbmUgPT0gJycpCnsKCSRlcnJvcl9jb25maWcrKzsKfQppZigkZGVwID09JycpCnsKCSRlcnJvcl9jb25maWcrKzsKfQovL2VjaG8gJGVycm9yX2NvbmZpZzsKJHNtYXJ0eS0+YXNzaWduKCdhbGVydENvbmZpZycsICRlcnJvcl9jb25maWcpOwokc21hcnR5LT5hc3NpZ24oJ2FsZXJ0Q29tcHRlJywgJGVycm9yX2NvbXB0ZSk7CiRzbWFydHktPmFzc2lnbignc2Fpc29uX2VuX2NvdXJzJywgJHNhaXNvbl9lbl9jb3Vycyk7CiRzbWFydHktPmFzc2lnbignaWQnLCAkdGhpcy0+TGFuZygnaWQnKSk7CiRzbWFydHktPmFzc2lnbigndXNlcm5hbWUnLCAnSm91ZXVyJyk7CiRzbWFydHktPmFzc2lnbigncG9pbnRzJywgJ1BvaW50cycpOwokc2Fpc29uID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwokc21hcnR5LT5hc3NpZ24oJ3NhaXNvbicsJHNhaXNvbik7CiRtb2lzX2NvdXJhbnQgPSBkYXRlKCduJyk7CiRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKLy8kbW9udGggPSBtb2lzX2ZyYW5jYWlzKCIkbW9pc19jb3VyYW50Iik7Ci8vZWNobyAibGUgbW9pcyBlbiBmcmFuw6dhaXMgOiAiLiRtb250aDsKLy8kc21hcnR5LT5hc3NpZ24oJ21vaXMtZW4tZnJhbmNhaXMnLCAiJG1vbnRoIik7Ci8vJHNtYXJ0eS0+YXNzaWduKCdzaXRfY291cmFudGUnLCAkc2l0X2NvdXJhbnRlKTsKJHNtYXJ0eS0+YXNzaWduKCdkaXNwbGF5X3VuYWJsZV9wbGF5ZXJzJywgCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkaXNwbGF5X3VuYWJsZV9wbGF5ZXJzJywgJHJldHVybmlkLCAnbGlzdGUgZGVzIGpvdWV1cnMgaW5hY3RpZnMnKSk7CgovL29uIGZhaXQgbGVzIHJlcXVldGVzIHBvdXIgbGVzIGNvbXBldHMgIQokcXVlcnkgPSAiU0VMRUNUIGNvdW50KCopIEFTIG5vbWJyZSwgaWRvcmdhIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIFdIRVJFIGlkb3JnYSAhPSAnMTAwMDAxJyBHUk9VUCBCWSBpZG9yZ2EiOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkKICB7CgkKICAgIHdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIHsKCS8vZWNobyAkcm93WydpZG9yZ2EnXTsKCWlmKCRyb3dbJ2lkb3JnYSddID09ICRkZXAgJiYgJHJvd1snbm9tYnJlJ10gPT0gMCkKCXsKCQkkc21hcnR5LT5hc3NpZ24oJ2NvbXBldF9kZXAnLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9jb21wZXQnLCAkcmV0dXJuaWQsICRjb250ZW50cz0nUsOpY3Vww6lyZXIgbGVzIGNvbXDDqXRpdG9ucyBkw6lwYXJ0ZW1lbnRhbGVzJyxhcnJheSgnaWRvcmdhJz0+JHJvd1snaWRvcmdhJ10pKSk7CgkJJHNtYXJ0eS0+YXNzaWduKCduYl9kZXAnLCAnMCcpOwoJfQoJCiAgICAgIH0KICB9CgokcmVzdWx0PSBhcnJheSAoKTsKLy9TRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogT04gai5saWNlbmNlID0gcmVjLmxpY2VuY2UgIE9SREVSIEJZIGouaWQgQVNDCiRxdWVyeT0gIlNFTEVDVCBpZCwgQ09OQ0FUX1dTKCcgJyxub20sIHByZW5vbSkgQVMgam91ZXVyLCBsaWNlbmNlLCBhY3RpZiwgc2V4ZSwgYmlydGhkYXkgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyAgT1JERVIgQlkgam91ZXVyIEFTQyI7CiRkYnJlc3VsdD0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiRyb3djbGFzcz0gJ3JvdzEnOwokcm93YXJyYXk9IGFycmF5KCk7CgppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewoJJGFjdGlmID0gJHJvd1snYWN0aWYnXTsKCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCSRvbmVyb3ctPmlkPSAkcm93WydpZCddOwoJJG9uZXJvdy0+bGljZW5jZT0gJHJvd1snbGljZW5jZSddOwoJJG9uZXJvdy0+am91ZXVyPSAkcm93Wydqb3VldXInXTsKCSRvbmVyb3ctPmFjdGlmPSAkcm93WydhY3RpZiddOwoJJG9uZXJvdy0+c2V4ZT0gJHJvd1snc2V4ZSddOwoJJG9uZXJvdy0+YmlydGhkYXk9ICRyb3dbJ2JpcnRoZGF5J107Cgkkb25lcm93LT52aWV3X2NvbnRhY3RzPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ3ZpZXdfY29udGFjdHMnLCAkcmV0dXJuaWQsJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3RvcGZpbGVzL215YWNjb3VudC5naWYnLCAkdGhpcy0+TGFuZygndmlld19jb250YWN0cycpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pKTsKCSRvbmVyb3ctPmRvZWRpdD0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRkX2pvdWV1cicsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJCgkJaWYoJHJvd1snYWN0aWYnXSA9PScxJykKCQl7CgkJCSRvbmVyb3ctPmVkaXRsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICd1bmFibGVfcGxheWVyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL3RydWUuZ2lmJywgJHRoaXMtPkxhbmcoJ3VuYWJsZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pKTsKCQl9CgkJZWxzZSAKCQl7CgkJCSRvbmVyb3ctPmVkaXRsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlbmFibGVfcGxheWVyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCdlbmFibGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7CgkJfQoJLy8kb25lcm93LT5lZGl0bGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAndW5hYmxlX3BsYXllcicsICRyZXR1cm5pZCwgJ0TDqXNhY3RpdmVyJyxhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJJG9uZXJvdy0+c2l0bWVuc2xpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3NpdF9tZW5zJywgJHJldHVybmlkLCAnU2l0dWF0aW9uIG1lbnN1ZWxsZScsIGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgkkb25lcm93LT5nZXRwYXJ0aWVzbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfcGFydGllcycsICRyZXR1cm5pZCwgJ1BhcnRpZXMgZGlzcHV0w6llcycsIGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgkkb25lcm93LT5nZXRwYXJ0aWVzc3BpZD0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfcGFydGllc19zcGlkJywgJHJldHVybmlkLCAnUGFydGllcyBTUElEJywgYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pKTsKCSRvbmVyb3ctPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZV9qb3VldXInLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSksICR0aGlzLT5MYW5nKCdkZWxldGVfcmVzdWx0X2NvbmZpcm0nKSk7CgkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIH0KICB9CiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKJHNtYXJ0eS0+YXNzaWduKCdyZXRyaWV2ZV91c2VycycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3VzZXJzJywgJHJldHVybmlkLCR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vaW1wb3J0LmdpZicsICR0aGlzLT5MYW5nKCdyZXRyaWV2ZV91c2VycycpLCAnJywgJycsICdzeXN0ZW1pY29uJykpLgokdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV91c2VycycsICRyZXR1cm5pZCwgCgkJICAkdGhpcy0+TGFuZygncmV0cmlldmVfdXNlcnMnKSwgCgkJICBhcnJheSgpKSk7CgokbXNnID0gJyc7CmlmKGlzc2V0KCRwYXJhbXNbJ21lc3NhZ2UnXSkgJiYgJHBhcmFtc1snbWVzc2FnZSddICE9JycpCnsKCSRtZXNzYWdlID0gJHBhcmFtc1snbWVzc2FnZSddOwoJJG1zZyA9ICRtZXNzYWdlOwoJJHNtYXJ0eS0+YXNzaWduKCdtc2cnLCRtZXNzYWdlKTsKfQoKCgokc21hcnR5LT5hc3NpZ24oJ2Zvcm0yc3RhcnQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdtYXNzX2FjdGlvbicsJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbignZm9ybTJlbmQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokYXJ0aWNsZXMgPSBhcnJheSgiRMOpc2FjdGl2ZXIiPT4idW5hYmxlIiwiTWV0dHJlIMOgIG1hc2N1bGluIj0+Im1hc2N1bGluIiwgIk1ldHRyZSDDoCBGw6ltaW5pbiI9PiJmZW1pbmluIik7CiRzbWFydHktPmFzc2lnbignYWN0aW9uZGVtYXNzZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdhY3Rpb25kZW1hc3NlJywkYXJ0aWNsZXMpKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRfbWFzc2FjdGlvbicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0X21hc3NhY3Rpb24nLCR0aGlzLT5MYW5nKCdhcHBseV90b19zZWxlY3Rpb24nKSwnJywnJywkdGhpcy0+TGFuZygnYXJleW91c3VyZV9hY3Rpb25tdWx0aXBsZScpKSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2pvdWV1cnMudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_joueurs_tab_old.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CmlmKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFVzZScpKQp7CgkkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdqb3VldXJzJyk7Cn0KLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX2ZpbGVfXykuJy9pbmNsdWRlL3RyYXZhdXgucGhwJyk7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fZmlsZV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKZ2xvYmFsICR0aGVtZU9iamVjdDsKCiRlcnJvcl9jb21wdGUgPSAwOwokaWRBcHBsaSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpZEFwcGxpJyk7CiRtb3RkZXBhc3NlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ21vdGRlcGFzc2UnKTsKJHNlcmllID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NlcmllJyk7CiRyb3djbGFzcz0nJzsKaWYoJGlkQXBwbGkgPT0nJykKewoJJGVycm9yX2NvbXB0ZSsrOwp9CmlmKCRtb3RkZXBhc3NlID09ICcnKQp7CgkkZXJyb3JfY29tcHRlKys7Cn0KaWYoJHNlcmllID09JycpCnsKCSRlcnJvcl9jb21wdGUrKzsKfQplY2hvICRlcnJvcl9jb21wdGU7CiRlcnJvcl9jb25maWcgPSAwOwokY2x1Yl9udW1iZXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY2x1Yl9udW1iZXInKTsKJGxpZ3VlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2xpZ3VlJyk7CiR6b25lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3pvbmUnKTsKJGRlcCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXAnKTsKaWYoJGNsdWJfbnVtYmVyID09JycpCnsKCSRlcnJvcl9jb25maWcrKzsKfQppZigkbGlndWUgPT0nJykKewoJJGVycm9yX2NvbmZpZysrOwp9CmlmKCR6b25lID09ICcnKQp7CgkkZXJyb3JfY29uZmlnKys7Cn0KaWYoJGRlcCA9PScnKQp7CgkkZXJyb3JfY29uZmlnKys7Cn0KZWNobyAkZXJyb3JfY29uZmlnOwokc21hcnR5LT5hc3NpZ24oJ2FsZXJ0Q29uZmlnJywgJGVycm9yX2NvbmZpZyk7CiRzbWFydHktPmFzc2lnbignYWxlcnRDb21wdGUnLCAkZXJyb3JfY29tcHRlKTsKJHNtYXJ0eS0+YXNzaWduKCdzYWlzb25fZW5fY291cnMnLCAkc2Fpc29uX2VuX2NvdXJzKTsKJHNtYXJ0eS0+YXNzaWduKCdpZCcsICR0aGlzLT5MYW5nKCdpZCcpKTsKJHNtYXJ0eS0+YXNzaWduKCd1c2VybmFtZScsICdKb3VldXInKTsKJHNtYXJ0eS0+YXNzaWduKCdwb2ludHMnLCAnUG9pbnRzJyk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CiRzbWFydHktPmFzc2lnbignc2Fpc29uJywkc2Fpc29uKTsKJG1vaXNfY291cmFudCA9IGRhdGUoJ24nKTsKJGFubmVlX2NvdXJhbnRlID0gZGF0ZSgnWScpOwovLyRtb250aCA9IG1vaXNfZnJhbmNhaXMoIiRtb2lzX2NvdXJhbnQiKTsKLy9lY2hvICJsZSBtb2lzIGVuIGZyYW7Dp2FpcyA6ICIuJG1vbnRoOwovLyRzbWFydHktPmFzc2lnbignbW9pcy1lbi1mcmFuY2FpcycsICIkbW9udGgiKTsKLy8kc21hcnR5LT5hc3NpZ24oJ3NpdF9jb3VyYW50ZScsICRzaXRfY291cmFudGUpOwokc21hcnR5LT5hc3NpZ24oJ2Rpc3BsYXlfdW5hYmxlX3BsYXllcnMnLCAKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2Rpc3BsYXlfdW5hYmxlX3BsYXllcnMnLCAkcmV0dXJuaWQsICdsaXN0ZSBkZXMgam91ZXVycyBpbmFjdGlmcycpKTsKCi8vb24gZmFpdCBsZXMgcmVxdWV0ZXMgcG91ciBsZXMgY29tcGV0cyAhCiRxdWVyeSA9ICJTRUxFQ1QgY291bnQoKikgQVMgbm9tYnJlLCBpZG9yZ2EgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgV0hFUkUgaWRvcmdhICE9ICcxMDAwMDEnIEdST1VQIEJZIGlkb3JnYSI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKQogIHsKCQogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewoJZWNobyAkcm93WydpZG9yZ2EnXTsKCWlmKCRyb3dbJ2lkb3JnYSddID09ICRkZXAgJiYgJHJvd1snbm9tYnJlJ10gPT0gMCkKCXsKCQkkc21hcnR5LT5hc3NpZ24oJ2NvbXBldF9kZXAnLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9jb21wZXQnLCAkcmV0dXJuaWQsICRjb250ZW50cz0nUsOpY3Vww6lyZXIgbGVzIGNvbXDDqXRpdG9ucyBkw6lwYXJ0ZW1lbnRhbGVzJyxhcnJheSgnaWRvcmdhJz0+JHJvd1snaWRvcmdhJ10pKSk7CgkJJHNtYXJ0eS0+YXNzaWduKCduYl9kZXAnLCAnMCcpOwoJfQoJCiAgICAgIH0KICB9CiRyZXN1bHQ9IGFycmF5ICgpOwovL1NFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgQVMgaiBPTiBqLmxpY2VuY2UgPSByZWMubGljZW5jZSAgT1JERVIgQlkgai5pZCBBU0MKJHF1ZXJ5PSAiU0VMRUNUIGlkLCBDT05DQVRfV1MoJyAnLG5vbSwgcHJlbm9tKSBBUyBqb3VldXIsIGxpY2VuY2UsIGFjdGlmLCBzZXhlLCBiaXJ0aGRheSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzICBPUkRFUiBCWSBqb3VldXIgQVNDIjsKJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKJHJvd2NsYXNzPSAncm93MSc7CiRyb3dhcnJheT0gYXJyYXkoKTsKCmlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQogICAgICB7CgkkYWN0aWYgPSAkcm93WydhY3RpZiddOwoJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7Cgkkb25lcm93LT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJJG9uZXJvdy0+aWQ9ICRyb3dbJ2lkJ107Cgkkb25lcm93LT5saWNlbmNlPSAkcm93WydsaWNlbmNlJ107Cgkkb25lcm93LT5qb3VldXI9ICRyb3dbJ2pvdWV1ciddOwoJJG9uZXJvdy0+YWN0aWY9ICRyb3dbJ2FjdGlmJ107Cgkkb25lcm93LT5zZXhlPSAkcm93WydzZXhlJ107Cgkkb25lcm93LT5iaXJ0aGRheT0gJHJvd1snYmlydGhkYXknXTsKCSRvbmVyb3ctPnZpZXdfY29udGFjdHM9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwndmlld19jb250YWN0cycsICRyZXR1cm5pZCwkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvdG9wZmlsZXMvbXlhY2NvdW50LmdpZicsICR0aGlzLT5MYW5nKCd2aWV3X2NvbnRhY3RzJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJJG9uZXJvdy0+ZG9lZGl0PSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRfam91ZXVyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgJHRoaXMtPkxhbmcoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7CgkKCQlpZigkcm93WydhY3RpZiddID09JzEnKQoJCXsKCQkJJG9uZXJvdy0+ZWRpdGxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3VuYWJsZV9wbGF5ZXInLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCAkdGhpcy0+TGFuZygndW5hYmxlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJCX0KCQllbHNlIAoJCXsKCQkJJG9uZXJvdy0+ZWRpdGxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VuYWJsZV9wbGF5ZXInLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZmFsc2UuZ2lmJywgJHRoaXMtPkxhbmcoJ2VuYWJsZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pKTsKCQl9CgkvLyRvbmVyb3ctPmVkaXRsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICd1bmFibGVfcGxheWVyJywgJHJldHVybmlkLCAnRMOpc2FjdGl2ZXInLGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgkkb25lcm93LT5zaXRtZW5zbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfc2l0X21lbnMnLCAkcmV0dXJuaWQsICdTaXR1YXRpb24gbWVuc3VlbGxlJywgYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pKTsKCSRvbmVyb3ctPmdldHBhcnRpZXNsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9wYXJ0aWVzJywgJHJldHVybmlkLCAnUGFydGllcyBkaXNwdXTDqWVzJywgYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pKTsKCSRvbmVyb3ctPmdldHBhcnRpZXNzcGlkPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9wYXJ0aWVzX3NwaWQnLCAkcmV0dXJuaWQsICdQYXJ0aWVzIFNQSUQnLCBhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJJG9uZXJvdy0+ZGVsZXRlbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGVsZXRlX2pvdWV1cicsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSwgJHRoaXMtPkxhbmcoJ2RlbGV0ZV9yZXN1bHRfY29uZmlybScpKTsKCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzPSAicm93MiIgOiAkcm93Y2xhc3M9ICJyb3cxIik7Cgkkcm93YXJyYXlbXT0gJG9uZXJvdzsKICAgICAgfQogIH0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Jlc3VsdHNmb3VuZHRleHQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwokc21hcnR5LT5hc3NpZ24oJ3JldHJpZXZlX3VzZXJzJywgCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfdXNlcnMnLCAkcmV0dXJuaWQsJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9pbXBvcnQuZ2lmJywgJHRoaXMtPkxhbmcoJ3JldHJpZXZlX3VzZXJzJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSkuCiR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3VzZXJzJywgJHJldHVybmlkLCAKCQkgICR0aGlzLT5MYW5nKCdyZXRyaWV2ZV91c2VycycpLCAKCQkgIGFycmF5KCkpKTsKJHNtYXJ0eS0+YXNzaWduKCdjcmVhdGVsaW5rJywgCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRkX2pvdWV1cicsICRyZXR1cm5pZCwKCQkJCSAgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJHRoaXMtPkxhbmcoJ2FkZF91c2VyJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSkuCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRkX2pvdWV1cicsICRyZXR1cm5pZCwgCgkJCQkgICR0aGlzLT5MYW5nKCdhZGRfdXNlcicpLCAgCgkJCQkgIGFycmF5KCkpKTsKJG1zZyA9ICcnOwppZihpc3NldCgkcGFyYW1zWydtZXNzYWdlJ10pICYmICRwYXJhbXNbJ21lc3NhZ2UnXSAhPScnKQp7CgkkbWVzc2FnZSA9ICRwYXJhbXNbJ21lc3NhZ2UnXTsKCSRtc2cgPSAkbWVzc2FnZTsKCSRzbWFydHktPmFzc2lnbignbXNnJywkbWVzc2FnZSk7Cn0KCgoKJHNtYXJ0eS0+YXNzaWduKCdmb3JtMnN0YXJ0JywKCQkkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnbWFzc19hY3Rpb24nLCRyZXR1cm5pZCkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm0yZW5kJywKCQkkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKJGFydGljbGVzID0gYXJyYXkoIkTDqXNhY3RpdmVyIj0+InVuYWJsZSIsIk1ldHRyZSDDoCBtYXNjdWxpbiI9PiJtYXNjdWxpbiIsICJNZXR0cmUgw6AgRsOpbWluaW4iPT4iZmVtaW5pbiIpOwokc21hcnR5LT5hc3NpZ24oJ2FjdGlvbmRlbWFzc2UnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnYWN0aW9uZGVtYXNzZScsJGFydGljbGVzKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0X21hc3NhY3Rpb24nLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdF9tYXNzYWN0aW9uJywkdGhpcy0+TGFuZygnYXBwbHlfdG9fc2VsZWN0aW9uJyksJycsJycsJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmVfYWN0aW9ubXVsdGlwbGUnKSkpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdqb3VldXJzLnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_journal_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywnUGFyYW1ldGVycycpOwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjICAgICAgICAgICAgICAgICAgICBKT1VSTkFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgoKCWlmIChpc3NldCgkcGFyYW1zWydzdWJtaXRfbWFzc2RlbGV0ZSddKSApCiAgCXsKICAgICAJCWlmKCBpc3NldCgkcGFyYW1zWydzZWwnXSkgJiYgaXNfYXJyYXkoJHBhcmFtc1snc2VsJ10pICYmIGNvdW50KCRwYXJhbXNbJ3NlbCddKSA+IDAgKQogICAgICAJCXsKICAgICAgICAJCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRqb3VybmFsaWQgKQoJICAJCXsKCSAgICAJCQlwaW5nX2FkbWluX29wczo6ZGVsZXRlX2pvdXJuYWwoICRqb3VybmFsaWQgKTsKCSAgCQl9CiAgICAgIAkJfQogIAl9CgoKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwoKJHRvdGFsY291bnQgPSAkZGItPkdldE9uZSgnU0VMRUNUIENPVU5UKGlkKSBhcyBjb3VudCBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3BpbmdfcmVjdXAnKTsKLyogb24gZmFpdCB1biBmb3JtdWxhaXJlIGRlIGZpbHRyYWdlIGRlcyByw6lzdWx0YXRzKi8KLy8kc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2RlZmF1bHRhZG1pbicsJycsICdwb3N0JywgJycsZmFsc2UsJycsYXJyYXkoJ2FjdGl2ZV90YWInPT4nam91cm5hbCcpKSk7CiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdhZG1pbl9qb3VybmFsX3RhYicpKTsKJHN0YXR1c2xpc3RbJHRoaXMtPmxhbmcoJ2FsbHN0YXR1cycpXSA9Jyc7CiRkYXRlbGlzdFskdGhpcy0+TGFuZygnYWxsZGF0ZXMnKV0gPSAnJzsKJHR5cGVDb21wZXQgPSBhcnJheSgpOwovLyR0eXBlQ29tcGV0WyR0aGlzLT5MYW5nKCdhbGxjb21wZXQnKV0gPSAnJzsKJHF1ZXJ5MSA9ICJTRUxFQ1QgZGF0ZWNyZWF0ZWQsIHN0YXR1cyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cCBPUkRFUiBCWSBkYXRlY3JlYXRlZCBERVNDIjsKJGRicmVzdWx0MSA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkxKTsKCmlmKCRkYnJlc3VsdDEgJiYgJGRicmVzdWx0MS0+UmVjb3JkQ291bnQoKT4wKQp7CgkKCgl3aGlsZSAoJHJvdyA9ICRkYnJlc3VsdDEtPkZldGNoUm93KCkpCgkJewoJCQlzZXRsb2NhbGUgKExDX1RJTUUsICdmcl9GUicpOyAKCQkJJGRhdGVsaXN0WyRyb3dbJ2RhdGVjcmVhdGVkJ11dID0gJHJvd1snZGF0ZWNyZWF0ZWQnXTsgCgkJCSRzdGF0dXNsaXN0WyRyb3dbJ3N0YXR1cyddXSA9ICRyb3dbJ3N0YXR1cyddOwoJCX0KCgkJCQlpZiggaXNzZXQoJHBhcmFtc1snc3VibWl0ZmlsdGVyJ10pICkKCQkJICAJewoJCQkgICAgCQlpZiggaXNzZXQoICRwYXJhbXNbJ2RhdGVsaXN0J10pICkKCQkJICAgICAgCQl7CgkJCQkJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkYXRlQ2hvaXNpJywgJHBhcmFtc1snZGF0ZWxpc3QnXSk7CgkJCSAgICAgIAkJfQoJCQoJCQkJCWlmKCBpc3NldCggJHBhcmFtc1snc3RhdHVzbGlzdCddKSApCgkJCSAgICAgIAkJewoJCQkJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc3RhdHVzQ2hvaXNpZScsICRwYXJhbXNbJ3N0YXR1c2xpc3QnXSk7CgkJCSAgICAgIAkJfQoJCQkJfQoKCQkKJGN1cmRhdGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ2RhdGVDaG9pc2knICk7CiRjdXJzdGF0dXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc3RhdHVzQ2hvaXNpZScpOwp9Cgokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF90b3VyJywKCQkkdGhpcy0+TGFuZygndG91cicpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9kYXRlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2RhdGVsaXN0JywkZGF0ZWxpc3QsLTEsJGN1cmRhdGUpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zdGF0dXMnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnc3RhdHVzbGlzdCcsJHN0YXR1c2xpc3QsLTEsJGN1cnN0YXR1cykpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9lcXVpcGUnLAoJCSR0aGlzLT5MYW5nKCdlcXVpcGUnKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0ZmlsdGVyJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXRmaWx0ZXInLCR0aGlzLT5MYW5nKCdmaWx0cmVzJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCiRlZGl0ID0gMDsvL3BvdXIgY29tcGxldGVyIGxhIHJlcXVldGUuCiRwYXJtPSBhcnJheSAoKTsKJGNyaXRlcmUgPSAnJzsKJGFjdGl2YXRpb24gPSAwOwokcXVlcnkyPSAiU0VMRUNUIGlkLCBkYXRlY3JlYXRlZCwgZGVzaWduYXRpb24sIHN0YXR1cyxhY3Rpb24gRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXAiOwoKCWlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXRmaWx0ZXInXSApKQoJewoKCQlpZiAoJGN1cmRhdGUgIT0nJykKCQl7CgkJCSRlZGl0ID0gMTsKCQkJJHF1ZXJ5Mi49IiBXSEVSRSBkYXRlY3JlYXRlZCA9ID8gIjsKCQkJJHBhcm1zWydkYXRlY3JlYXRlZCddID0gJGN1cmRhdGU7CgkJCgkJfQoJCWlmKCRjdXJzdGF0dXMgIT0nJykKCQl7CgkJCWlmKCRlZGl0PT0xKQoJCQl7CgkJCQkkcXVlcnkyLj0iIEFORCBzdGF0dXMgPSA/IjsKCQkJCSRwYXJtc1snc3RhdHVzJ10gPSAkY3Vyc3RhdHVzOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHF1ZXJ5Mi49IiBXSEVSRSBzdGF0dXMgPSA/IjsKCQkJCSRwYXJtc1snc3RhdHVzJ10gPSAkY3Vyc3RhdHVzOwoJCQl9CgkJfQoJCSRhY3RpdmF0aW9uID0gMTsvL3Blcm1ldCBkZSBkaWZmw6lyZW5jaWVyIGxlcyBkZXV4IHJlcXVldGVzCgkJJHF1ZXJ5Mi49ICIgT1JERVIgQlkgZGF0ZWNyZWF0ZWQgREVTQyI7CgkJJHJlc3VsdD0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsJHBhcm1zKTsKCX0KCWVsc2UKCXsKCQkkcXVlcnkyLj0gIiBPUkRFUiBCWSBkYXRlY3JlYXRlZCBERVNDIjsKCQkkcmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5Mik7Cgl9CgkKCQoJLy9vbiBpbnN0YW5jaWUgZGVzIHZhcmlhYmxlcyBwb3VyIGNyw6llciB1bmUgcGFnaW5hdGlvbiBkYW5zIGwnb25nbGV0IGpvdXJuYWwKCQoJLy9maW4gZHUgaWYgZGJyZXN1bHQKCQoJCgkvLyR0b3RhbHJvd3MgPSAkcmVzdWx0LT5SZWNvcmRDb3VudCgpOwoKLy8kZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwokcm93Y2xhc3M9ICdyb3cxJzsKJHJvd2FycmF5PSBhcnJheSAoKTsKCglpZiAoJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKICAJewogICAgCQkKCQkvLyRwYWdlX3N0cmluZyA9IHBpbmdfYWRtaW5fb3BzOjpwYWdpbmF0aW9uMigkcGFnZSwgJHRvdGFscm93cywgJGxpbWl0LCRhY3Rpb25pZCk7CgkJLy8kc21hcnR5LT5hc3NpZ24oInBhZ2VzdHJpbmciLCRwYWdlX3N0cmluZyk7CgkJd2hpbGUgKCRyb3c9ICRyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIAkJewoJCQkkb25lcm93PSBuZXcgU3RkQ2xhc3MoKTsKCQkJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCQkJJG9uZXJvdy0+aWQ9ICRyb3dbJ2lkJ107CgkJCSRvbmVyb3ctPmRhdGVjcmVhdGVkPSAkcm93WydkYXRlY3JlYXRlZCddOwoJCQkkb25lcm93LT5kZXNpZ25hdGlvbj0gJHJvd1snZGVzaWduYXRpb24nXTsKCQkJJG9uZXJvdy0+YWN0aW9uPSAkcm93WydhY3Rpb24nXTsKCQkJLy8kb25lcm93LT5zZWxlY3QgPSAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ3NlbFtdJywkcm93WydpZCddKTsKCQkJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCQkJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIAkJfQogIAl9Cgokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7CiRzbWFydHktPmFzc2lnbignZm9ybTJzdGFydCcsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX2pvdXJuYWxfdGFiJywkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtMmVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0X21hc3NkZWxldGUnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdF9tYXNzZGVsZXRlJywkdGhpcy0+TGFuZygnZGVsZXRlX3NlbGVjdGVkJyksCgkJCQkJCQkJCSAgICAgJycsJycsJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmVfZGVsZXRlbXVsdGlwbGUnKSkpOwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2pvdXJuYWwudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_options_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL29uIHbDqXJpZmllIGxlcyBkcm9pdHMgZGUgY2V0IHV0aWxpc2F0ZXVyCmlmKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFVzZScpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFNldCBQcmVmcycpKXsKCSRtZXNzYWdlID0gIlZvdXMgblwnYXZleiBwYXMgbGVzIGF1dG9yaXNhdGlvbnMgcG91ciBhY2PDqWRlciBhdXggcHLDqWbDqXJlbmNlcyI7CgkkdGhpcy0+U2V0TWVzc2FnZSgiJG1lc3NhZ2UiKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKfQogIC8vIENyZWF0ZUZvcm1TdGFydCBzZXRzIHVwIGEgcHJvcGVyIGZvcm0gdGFnIHRoYXQgd2lsbCBjYXVzZSB0aGUgc3VibWl0IHRvCiAgLy8gcmV0dXJuIGNvbnRyb2wgdG8gdGhpcyBtb2R1bGUgZm9yIHByb2Nlc3NpbmcuCi8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwokbW9pc19jb3VyYW50ID0gZGF0ZSgnbScpOwokYW5uZWVfY291cmFudGUgPSBkYXRlKCdZJyk7CiR2ZXJzaW9uID0gJHRoaXMtPkdldFZlcnNpb24oJ1BpbmcnKTsKCiRzbWFydHktPmFzc2lnbigndmVyc2lvbicsICR2ZXJzaW9uMik7CmlmKCRtb2lzX2NvdXJhbnQgPj0gNykKewoJJGFubmVlX2RlYnV0ID0gJGFubmVlX2NvdXJhbnRlOwoJJGFubmVlX2ZpbiA9ICRhbm5lZV9jb3VyYW50ZSArMTsKfQplbHNlCnsKCSRhbm5lZV9kZWJ1dCA9ICRhbm5lZV9jb3VyYW50ZSAtMTsKCSRhbm5lZV9maW4gPSAkYW5uZWVfY291cmFudGU7Cn0KCiRzbWFydHktPmFzc2lnbigncmVjdXBfb3JnYScsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX29yZ2FuaXNtZXMnLCRyZXR1cm5pZCwkY29udGVudHM9J1LDqWN1cMOpcmVyIGxlcyBvcmdhbmlzbWVzJykpOwokc2Fpc29uX2FjdHVlbGxlID0gJGFubmVlX2RlYnV0LictJy4kYW5uZWVfZmluOwovLyRzYWlzb25kcm9wZG93blsnLiRzYWlzb25fYWN0dWVsbGUuJ10gPSAkc2Fpc29uX2FjdHVlbGxlOwokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQgKCRpZCwgJ3VwZGF0ZW9wdGlvbnMnLCAkcmV0dXJuaWQpKTsKaWYoaXNzZXQoJHBhcmFtc1snc3RhbGwnXSkgJiYgJHBhcmFtc1snc3RhbGwnXSA9PSIxIiApCnsKCSRzdGFsbCA9ICRwYXJhbXNbJ3N0YWxsJ107CQp9CmVsc2UKewoJJHN0YWxsID0gJzAnOwp9CiRzbWFydHktPmFzc2lnbignc3RhbGwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdzdGFsbCcsJHZhbHVlPSRzdGFsbCkpOwokc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCAoKSk7CiRzbWFydHktPmFzc2lnbigndGl0bGVfY2x1Yl9udW1iZXInLCR0aGlzLT5MYW5nKCd0aXRsZV9jbHViX251bWJlcicpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jbHViX251bWJlcicsJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2NsdWJfbnVtYmVyJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY2x1Yl9udW1iZXInLCcnKSw1MCwyNTUpKTsKLy8gQ29uc3RydWlyZSBsYSBsaXN0ZSBkeW5hbWlxdWVtZW50IGF2ZWMgdW5lIHJlcXVldGUKJHRhYmxlYXUgPSBhcnJheSgnWicsJ0wnLCdEJyk7Ly9vbiBvdWJsaWUgbGEgRsOpZMOpIHF1aSBlc3QgdGpzIMOgIDEwMDAwMQpmb3JlYWNoKCR0YWJsZWF1IGFzICR2YWxldXIpCnsKCSRxdWVyeSA9ICJTRUxFQ1QgaWRvcmdhLCBsaWJlbGxlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX29yZ2FuaXNtZXMgV0hFUkUgc2NvcGUgPSA/IjsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHZhbGV1cikpOwoJd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJICB7CgkJaWYoJHZhbGV1ciA9PSdMJykKCQl7CgkJCSRsaXN0b3JnYV9MWyRyb3dbJ2xpYmVsbGUnXV0gPSAkcm93WydpZG9yZ2EnXTsKCQl9CgkJZWxzZWlmKCR2YWxldXIgPT0nWicpCgkJewoJCQkkbGlzdG9yZ2FfWlskcm93WydsaWJlbGxlJ11dID0gJHJvd1snaWRvcmdhJ107IAoJCX0KCQllbHNlCgkJewoJCQkkbGlzdG9yZ2FfRFskcm93WydsaWJlbGxlJ11dID0gJHJvd1snaWRvcmdhJ107IAoJCX0KCSAgICAJCgkgIH0KCQp9Cgokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2xpZ3VlJywkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdsaWd1ZScsICRsaXN0b3JnYV9MLC0xLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdsaWd1ZScpLDUwLDI1NSkpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3pvbmUnLCR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3pvbmUnLCAkbGlzdG9yZ2FfWiwtMSwkdGhpcy0+R2V0UHJlZmVyZW5jZSgnem9uZScpLDUwLDI1NSkpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2RlcCcsJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnZGVwJywgJGxpc3RvcmdhX0QsLTEsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlcCcpLDUwLDI1NSkpOwokc2Fpc29uX2VuY291cnMgPSAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9yZWZlcmVuY2UnKSkgPyAgJzIwMTMtMjAxNCcgOiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX3JlZmVyZW5jZScpOwovLyRzbWFydHktPmFzc2lnbigndGl0bGVfZm9ybXN1Ym1pdF9lbWFpbGFkZHJlc3MnLCR0aGlzLT5MYW5nKCdmb3Jtc3VibWl0X2VtYWlsYWRkcmVzcycpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9waGFzZScsJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ3BoYXNlX2VuX2NvdXJzJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnLCcxJyksNTAsMjU1KSk7Ci8vJHNtYXJ0eS0+YXNzaWduKCd0aXRsZV9lbWFpbF9zdWJqZWN0JywkdGhpcy0+TGFuZygnZW1haWxfc3ViamVjdCcpKTsKJGl0ZW1zID0gYXJyYXkoKTsKJGl0ZW1zWydPdWknXSA9ICdPdWknOwokaXRlbXNbJ05vbiddID0gJ05vbic7CiRzYWlzb25kcm9wZG93biA9IGFycmF5KCk7CiRzYWlzb25kcm9wZG93biA9IGFycmF5KCIyMDEzLTIwMTQiPT4iMjAxMy0yMDE0IiwgIjIwMTQtMjAxNSI9PiIyMDE0LTIwMTUiLCAiMjAxNS0yMDE2Ij0+IjIwMTUtMjAxNiIsICIyMDE2LTIwMTciPT4iMjAxNi0yMDE3Iik7Ci8qCiRzYWlzb25kcm9wZG93blsnMjAxNS0yMDE2J10gPSAnMjAxNS0yMDE2JzsKJHNhaXNvbmRyb3Bkb3duWycyMDE2LTIwMTcnXSA9ICcyMDE2LTIwMTcnOwoqLwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3NhaXNvbl9lbl9jb3VycycsJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdzYWlzb25fZW5fY291cnMnLCRzYWlzb25kcm9wZG93biwtMSwkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyksNTAsMjU1KSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfbm9tX2VxdWlwZXMnLCAKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ25vbV9lcXVpcGVzJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ25vbV9lcXVpcGVzJywgJycpLCA1MCwyNTApKTsKJHNtYXJ0eS0+YXNzaWduKCdqb3VyX3NpdF9tZW5zJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnam91cl9zaXRfbWVucycsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdqb3VyX3NpdF9tZW5zJywgJycpLCA1LCA3KSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfcG9wdWxhdGVfY2FsZW5kYXInLCR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwncG9wdWxhdGVfY2FsZW5kYXInLCRpdGVtcywtMSwkdGhpcy0+R2V0UHJlZmVyZW5jZSgncG9wdWxhdGVfY2FsZW5kYXInKSw1MCwyNTUpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9hZmZpY2hlX2NsdWJfdW5pcXVlbWVudCcsJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdhZmZpY2hlX2NsdWJfdW5pcXVlbWVudCcsJGl0ZW1zLC0xLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhZmZpY2hlX2NsdWJfdW5pcXVlbWVudCcpLDUwLDI1NSkpOwokdmFsZXVyc19pbnRlcnZhbCA9IGFycmF5KCIxIGpvdXIiPT4iMSIsIjIgam91cnMiPT4iMiIsIjMgam91cnMiPT4iMyIsIkphbWFpcyI9PiIzNjUiKTsKJHZhbGV1cnNfbm9tYnJlc19zcGlkID0gYXJyYXkoIjI1IGpvdWV1cnMiPT4iMjUiLCAiNTAgam91ZXVycyI9PiI1MCIsICI3NSBqb3VldXJzIj0+Ijc1IiwiMTAwIGpvdWV1cnMiPT4iMTAwIik7CiR2YWxldXJzX25vbWJyZXNfZmZ0dCA9IGFycmF5KCIyNSBqb3VldXJzIj0+IjI1IiwgIjUwIGpvdWV1cnMiPT4iNTAiLCAiNzUgam91ZXVycyI9PiI3NSIsIjEwMCBqb3VldXJzIj0+IjEwMCIpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3NwaWRfaW50ZXJ2YWwnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3NwaWRfaW50ZXJ2YWwnLCR2YWxldXJzX2ludGVydmFsLC0xLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzcGlkX2ludGVydmFsJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zcGlkX25vbWJyZXMnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnc3BpZF9ub21icmVzJywkdmFsZXVyc19ub21icmVzX3NwaWQsLTEsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NwaWRfbm9tYnJlcycpKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfZmZ0dF9pbnRlcnZhbCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnZmZ0dF9pbnRlcnZhbCcsJHZhbGV1cnNfaW50ZXJ2YWwsLTEsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ZmdHRfaW50ZXJ2YWwnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2ZmdHRfbm9tYnJlcycsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdmZnR0X25vbWJyZXMnLCR2YWxldXJzX25vbWJyZXNfZmZ0dCwtMSwkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZmZ0dF9ub21icmVzJykpKTsKLyoKJHNtYXJ0eS0+YXNzaWduKCdqb3VyX3JlY3VwJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnam91cl9yZWN1cCcsICRpdGVtcywtMSwkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2l0bWVuc19va19vbmx5JyksNTAsMjU1KSk7CiovCiRzbWFydHktPmFzc2lnbignc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdvcHRpb25zc3VibWl0YnV0dG9uJywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7CgovLyBEaXNwbGF5IHRoZSBwb3B1bGF0ZWQgdGVtcGxhdGUKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlICgnYWRtaW5wcmVmcy50cGwnKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_poules.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwojICAgICAgICBBZG1pbmlzdHJhdGlvbiBkZXMgcG91bGVzIGluc8OpcsOpZXMgcG91ciBsZSBjbGFzc2VtZW50ICAjIwojICAgICAgICAgICAgICAgICAgICAgICAgIGV0IGxlcyBwYXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKZ2xvYmFsICR0aGVtZU9iamVjdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7Ci8vY3LDqWF0aW9ucyBkZSBsaWVucyBkZSByw6ljdXDDqXJhdGlvbiBkZXMgY29tcMOpdGl0aW9ucwovL29uIHLDqWN1cMOocmUgZCdhYm9yZCBsZXMgcHLDqWbDqXJlbmNlcyBkZSB6b25lcywgbGlndWVzIGV0IGTDqXBhcnRlbWVudAokZmVkZSA9ICcxMDAwMDEnOwokem9uZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd6b25lJyk7CiRsaWd1ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdsaWd1ZScpOwokZGVwID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlcCcpOwokcGFybXMgPSBhcnJheSgpOwokaWRlcHJldXZlID0gJyc7CiRpZGRpdmlzaW9uID0gJyc7CiRyZXN1bHQ9IGFycmF5ICgpOwokcXVlcnkgPSAiU0VMRUNUIHBvdS5pZCBBUyB0b3VyX2lkLCBkdi5saWJlbGxlLGR2Lmlkb3JnYSxwb3UuaWRlcHJldXZlLHBvdS5pZGRpdmlzaW9uLCBwb3UudG91ciwgcG91LnRhYmxlYXUsIHBvdS5kYXRlX2RlYnV0LCBwb3UuZGF0ZV9maW4scG91LnVwbG9hZGVkX3BhcnRpZXMscG91LnVwbG9hZGVkX2NsYXNzZW1lbnQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2aXNpb25zIEFTIGR2LCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X3RvdXJzIEFTIHBvdSBXSEVSRSBkdi5pZGVwcmV1dmUgPSBwb3UuaWRlcHJldXZlIEFORCBkdi5pZGRpdmlzaW9uID0gcG91LmlkZGl2aXNpb24iOy8vIiBPUkRFUiBCWSBkdi5pZGRpdmlzaW9uLHBvdS50b3VyIEFTQyI7CgoJCglpZiAoaXNzZXQoJHBhcmFtc1snaWRlcHJldXZlJ10pICYmICRwYXJhbXNbJ2lkZXByZXV2ZSddICE9JycpCgl7CgkJJGlkZXByZXV2ZSA9ICRwYXJhbXNbJ2lkZXByZXV2ZSddOwoJCSRxdWVyeS49IiBBTkQgcG91LmlkZXByZXV2ZSA9ID8iOwoJCSRwYXJtc1snaWRlcHJldXZlJ10gPSAkaWRlcHJldXZlOwoJfQoJaWYoaXNzZXQoJHBhcmFtc1snaWRkaXZpc2lvbiddKSAmJiAkcGFyYW1zWydpZGRpdmlzaW9uJ10gIT0gJycpCgl7CgkJJGlkZGl2aXNpb24gPSAkcGFyYW1zWydpZGRpdmlzaW9uJ107CgkJJHF1ZXJ5Lj0iIEFORCBwb3UuaWRkaXZpc2lvbiA9ID8iOwoJCSRwYXJtc1snaWRkaXZpc2lvbiddID0gJGlkZGl2aXNpb247Cgl9CglpZihpc3NldCgkcGFyYW1zWydpZG9yZ2EnXSkgJiYgJHBhcmFtc1snaWRvcmdhJ10gIT0gJycpCgl7CgkJJGlkb3JnYSA9ICRwYXJhbXNbJ2lkb3JnYSddOwoJfQokcXVlcnkuPSIgT1JERVIgQlkgcG91LnRvdXIgQVNDIjsJCgkKCSRkYnJlc3VsdD0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgJHBhcm1zKTsKCQokc21hcnR5LT5hc3NpZ24oJ3JlY3VwX3RvdXJzJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9kaXZfcmVzdWx0cycsJHJldHVybmlkLCAkY29udGVudHM9IlLDqWN1cMOpcmF0aW9uIiwgYXJyYXkoImRpcmVjdGlvbiI9PiJ0b3VyIiwiaWRlcHJldXZlIj0+JGlkZXByZXV2ZSwgImlkZGl2aXNpb24iPT4kaWRkaXZpc2lvbikpKTsKLy8gdGhlIHRvcCBuYXYgYmFyCiRzbWFydHktPmFzc2lnbigncmV0dXJubGluaycsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnYWRtaW5fZGl2aXNpb25zX3RhYicsJHJldHVybmlkLCR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vYmFjay5naWYnLCAkdGhpcy0+TGFuZygnYmFjaycpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoImFjdGl2ZV90YWIiPT4iZGl2aXNpb25zIiwiaWRlcHJldXZlIj0+JGlkZXByZXV2ZSwiaWRkaXZpc2lvbiI9PiRpZGRpdmlzaW9uLCJpZG9yZ2EiPT4kcGFyYW1zWydpZG9yZ2EnXSkpKTsKLy8kdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0X3R5cGVfY29tcGV0JywkcmV0dXJuaWQsJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3RvcGZpbGVzL3RlbXBsYXRlLmdpZicsICR0aGlzLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgicmVjb3JkX2lkIj0+JHJvd1snaWQnXSkpOwokc21hcnR5LT5hc3NpZ24oJ3JlZnJlc2gnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JlZnJlc2gnLCRyZXR1cm5pZCwgJGNvbnRlbnRzPSJNYWoiLCBhcnJheSgiaWRlcHJldXZlIj0+JGlkZXByZXV2ZSkpKTsKJHJvd2NsYXNzID0gJyc7Ci8vZWNobyAkcXVlcnk7CiRyb3dhcnJheT0gYXJyYXkgKCk7CmlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQogICAgICB7CgkvKgoJJGluZGl2cyA9ICRyb3dbJ2luZGl2cyddOwoJaWYoJGluZGl2cz09MSl7JHR5cGU9J0knO31lbHNleyR0eXBlPSdFJzt9CgkqLwoJJGlkb3JnYSA9ICRyb3dbJ2lkb3JnYSddOwoJLyoKCWlmKCRpZG9yZ2EgPT0gJGZlZGUpeyRvcmdhID0gJ0bDqWTDqXJhdGlvbic7fQoJaWYoJGlkb3JnYSA9PSAkem9uZSl7JG9yZ2EgPSAnWm9uZSc7fQoJaWYoJGlkb3JnYSA9PSAkbGlndWUpeyRvcmdhID0gJ0xpZ3VlJzt9CglpZigkaWRvcmdhID09ICRkZXApeyRvcmdhID0gJ0NvbWl0w6knO30KCSovCgkkdXBsb2FkZWRfcGFydGllcyA9ICRyb3dbJ3VwbG9hZGVkX3BhcnRpZXMnXTsKCSR1cGxvYWRlZF9jbGFzc2VtZW50ID0gJHJvd1sndXBsb2FkZWRfY2xhc3NlbWVudCddOwoJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7Cgkkb25lcm93LT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJJG9uZXJvdy0+dG91cl9pZCA9ICRyb3dbJ3RvdXJfaWQnXTsKCSRvbmVyb3ctPmlkZXByZXV2ZT0gJHJvd1snaWRlcHJldXZlJ107Cgkkb25lcm93LT5pZGRpdmlzaW9uPSAkcm93WydpZGRpdmlzaW9uJ107Cgkkb25lcm93LT50b3VyPSAkcm93Wyd0b3VyJ107Cgkkb25lcm93LT50YWJsZWF1ID0gJHJvd1sndGFibGVhdSddOwoJJG9uZXJvdy0+bGliZWxsZT0gJHJvd1snbGliZWxsZSddOwoJCgkkb25lcm93LT5kYXRlX2RlYnV0ID0gJHJvd1snZGF0ZV9kZWJ1dCddOwoJJG9uZXJvdy0+ZGF0ZV9maW4gPSAkcm93WydkYXRlX2ZpbiddOwoJLy8kb25lcm93LT51cGxvYWRlZF9wYXJ0aWVzPSAkcm93Wyd1cGxvYWRlZF9wYXJ0aWVzJ107CgkvLyRvbmVyb3ctPmluZGl2cz0gJHJvd1snaW5kaXZzJ107CgkvLyRvbmVyb3ctPm9yZ2EgPSAkb3JnYTsKCS8vJG9uZXJvdy0+aWRlcHJldXZlID0gJHJvd1snaWRlcHJldXZlJ107CgkKCS8vJG9uZXJvdy0+cG91bGU9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX2Rpdl9yZXN1bHRzJywgJHJldHVybmlkLCAnUG91bGUnLGFycmF5KCJkaXJlY3Rpb24iPT4idG91ciIsImlkZXByZXV2ZSI9PiRyb3dbJ2lkZXByZXV2ZSddLCAiaWRkaXZpc2lvbiI9PiRyb3dbJ2lkZGl2aXNpb24nXSkpOwoJJG9uZXJvdy0+Y2xhc3NlbWVudD0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fZGl2X2NsYXNzZW1lbnQnLCAkcmV0dXJuaWQsICdDbGFzc2VtZW50JyxhcnJheSgiaWRlcHJldXZlIj0+JHJvd1snaWRlcHJldXZlJ10sICJpZGRpdmlzaW9uIj0+JHJvd1snaWRkaXZpc2lvbiddLCJ0YWJsZWF1Ij0+JHJvd1sndGFibGVhdSddLCJ0b3VyIj0+JHJvd1sndG91ciddLCJpZG9yZ2EiPT4kaWRvcmdhKSk7CglpZigkdXBsb2FkZWRfcGFydGllcyA9PTEpCgl7CgkJJG9uZXJvdy0+dXBsb2FkZWRfcGFydGllcz0gJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsICR0aGlzLT5MYW5nKCdhbHJlYWR5X2Rvd25sb2FkZWQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpOwoJfQoJaWYoJHVwbG9hZGVkX2NsYXNzZW1lbnQgPT0xKQoJewoJCSRvbmVyb3ctPnVwbG9hZGVkX2NsYXNzZW1lbnQ9ICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCAkdGhpcy0+TGFuZygnYWxyZWFkeV9kb3dubG9hZGVkJyksICcnLCAnJywgJ3N5c3RlbWljb24nKTsKCX0KCSRvbmVyb3ctPnBhcnRpZT0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fZGl2X3BhcnRpZXMnLCAkcmV0dXJuaWQsICdQYXJ0aWVzJyxhcnJheSgiZGlyZWN0aW9uIj0+InBhcnRpZSIsImlkZXByZXV2ZSI9PiRyb3dbJ2lkZXByZXV2ZSddLCAiaWRkaXZpc2lvbiI9PiRyb3dbJ2lkZGl2aXNpb24nXSwidGFibGVhdSI9PiRyb3dbJ3RhYmxlYXUnXSwidG91ciI9PiRyb3dbJ3RvdXInXSwiaWRvcmdhIj0+JGlkb3JnYSkpOwoJCgkvLyRvbmVyb3ctPmVkaXRsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF90eXBlX2NvbXBldCcsJHJldHVybmlkLCR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoInJlY29yZF9pZCI9PiRyb3dbJ2lkJ10pKTsKCQoJaWYoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBEZWxldGUnKSkKCXsKCQkkb25lcm93LT5kZWxldGVsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGVsZXRlJywgJHJldHVybmlkLCR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCJyZWNvcmRfaWQiPT4kcm93Wyd0YWJsZWF1J10sICJ0eXBlX2NvbXBldCI9PiJjbGFzc2VtZW50IikpOwoJfQoJCgkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIH0KICB9CmVsc2UKewoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ3JldHJpZXZlX2Rpdl9yZXN1bHRzJywkcmV0dXJuaWQsYXJyYXkoImRpcmVjdGlvbiI9PiJ0b3VyIiwiaWRlcHJldXZlIj0+JGlkZXByZXV2ZSwgImlkZGl2aXNpb24iPT4kaWRkaXZpc2lvbikpOwp9Cgokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kJykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKCiRzbWFydHktPmFzc2lnbignZm9ybTJzdGFydCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ21hc3NfYWN0aW9uJywkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtMmVuZCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRhcnRpY2xlcyA9IGFycmF5KCJEYXRlciI9PiJkYXRlcjIiLCJSw6ljdXDDqXJlciBsZXMgcGFydGllcyI9PiJyZXRyaWV2ZV9kaXZfcGFydGllcyIsICJSw6ljdXDDqXJlciBsZXMgY2xhc3NlbWVudHMiPT4icmV0cmlldmVfZGl2X2NsYXNzZW1lbnQiLCJTdXBwcmltZXIgbGVzIHRvdXJzIj0+InN1cHBfdG91cnMiKTsKJHNtYXJ0eS0+YXNzaWduKCdhY3Rpb25kZW1hc3NlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2FjdGlvbmRlbWFzc2UnLCRhcnRpY2xlcykpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF9tYXNzYWN0aW9uJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXRfbWFzc2FjdGlvbicsJHRoaXMtPkxhbmcoJ2FwcGx5X3RvX3NlbGVjdGlvbicpLCcnLCcnLCR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlX2FjdGlvbm11bHRpcGxlJykpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnbGlzdF9wb3VsZXMudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_poules_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS90cmF2YXV4LnBocCcpOwoKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKLyogb24gZmFpdCB1biBmb3JtdWxhaXJlIGRlIGZpbHRyYWdlIGRlcyByw6lzdWx0YXRzKi8KJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdhZG1pbl9wb3VsZXNfdGFiJykpOyAgCiRwb3VsZXNsaXN0ID0gYXJyYXkoKTsKJHBvdWxlc2xpc3RbJHRoaXMtPkxhbmcoJ2FsbHBvdWxlcycpXSA9ICcnOwoKJHF1ZXJ5MSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIFdIRVJFIHNhaXNvbiA9ID8iOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MSxhcnJheSgkc2Fpc29uKSk7Ci8vZWNobyAkcXVlcnkxOwp3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgewogICAgJHBvdWxlc2xpc3RbJHJvd1snbGliZGl2aXNpb24nXV0gPSAkcm93WydpZHBvdWxlJ107CiAgfQoKCWlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXRmaWx0ZXInXSkgKQogIAl7CiAgICAJCWlmKCBpc3NldCggJHBhcmFtc1sncG91bGVzbGlzdCddKSApCiAgICAgIAkJewoJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgncG91bGVDaG9pc2knLCAkcGFyYW1zWydwb3VsZXNsaXN0J10pOwogICAgICAJCX0KCX0KCiRjdXJwb3VsZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCAncG91bGVDaG9pc2knICk7Cgokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF90b3VyJywKCQkkdGhpcy0+TGFuZygndG91cicpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF90b3VyJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3BvdWxlc2xpc3QnLCRwb3VsZXNsaXN0LC0xLCRjdXJwb3VsZSkpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2NsdWJfdW5pcXVlbWVudCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdjbHViX3VuaXF1ZW1lbnQnLDEsMSkpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2RlamFfam91ZXNfdW5pcXVlbWVudCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdkZWphX2pvdWVzX3VuaXF1ZW1lbnQnLDEsMSkpOwoJCS8vCShpc3NldCgkcGFyYW1zWydjbHViX3VuaXF1ZW1lbnQnXSk/JHBhcmFtc1snY2x1Yl91bmlxdWVtZW50J106JzEnKSwxKSk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0X2VxdWlwZScsCgkJJHRoaXMtPkxhbmcoJ2VxdWlwZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRmaWx0ZXInLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdGZpbHRlcicsJHRoaXMtPkxhbmcoJ2ZpbHRyZXMnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwovL2VjaG8gImxhIHBvdWxlIGVuIGNvdXJzIGVzdCA6ICIuJGN1cnBvdWxlOwokcGFybXMgPSBhcnJheSgpOwokcmVzdWx0PSBhcnJheSgpOwokcXVlcnkyID0gIlNFTEVDVCAqLHJlbi5hZmZpY2hlLHJlbi5jbHViLHJlbi5kYXRlX2V2ZW50LCByZW4uaWQsIGVxLmxpYmVxdWlwZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBBUyByZW4sICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIEFTIGVxIFdIRVJFIGVxLmlkcG91bGUgPSByZW4uaWRwb3VsZSAgQU5EIHJlbi5zYWlzb24gPSBlcS5zYWlzb24gQU5EIGVxLnNhaXNvbiA9ID8iOwokcGFybXNbJ3NhaXNvbiddID0gJHNhaXNvbjsKCWlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXRmaWx0ZXInXSApKQoJewoJCgkJaWYgKCRjdXJwb3VsZSAhPScnKQoJCXsKCQkJJHF1ZXJ5MiAuPSIgQU5EIGVxLmlkcG91bGUgPSA/IjsKCQkJJHBhcm1zWydpZHBvdWxlJ10gPSAkY3VycG91bGU7CgkJCQoJCQkKCQl9CgkJaWYoJHBhcmFtc1snY2x1Yl91bmlxdWVtZW50J109PScxJykKCQl7CgkJCSRxdWVyeTIuPSIgQU5EIGNsdWIgPSAnMSciOwoJCX0KCQlpZigkcGFyYW1zWydkZWphX2pvdWVzX3VuaXF1ZW1lbnQnXSkKCQl7CgkJCSRxdWVyeTIuPSIgQU5EIChyZW4uc2NvcmVhICE9MCBBTkQgcmVuLnNjb3JlYiAhPTAgKSI7CgkJCgkJfQoJfQovKgkJCgkJJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwkcGFybXMpOwoJCgl9CgllbHNlCgl7CgkJJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MixhcnJheSgkc2Fpc29uKSk7Cgl9CiovCgokcXVlcnkyLj0iIE9SREVSIEJZIHJlbi5kYXRlX2V2ZW50IERFU0MiCTsKJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwkcGFybXMpOwovL2VjaG8gJHF1ZXJ5MjsKCiRyb3dhcnJheT0gYXJyYXkgKCk7CmlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQogICAgICB7Cgkkb25lcm93PSBuZXcgU3RkQ2xhc3MoKTsKCSRvbmVyb3ctPnJvd2NsYXNzPSAkcm93Y2xhc3M7Cgkkb25lcm93LT5pZD0gJHJvd1snaWQnXTsKCSRjbHViID0gJHJvd1snY2x1YiddOwoJJGVxdWIgPSAkcm93WydlcXViJ107CgkkZXF1YSA9ICRyb3dbJ2VxdWEnXTsKCSRzY29yZWEgPSAkcm93WydzY29yZWEnXTsKCSRzY29yZWIgPSAkcm93WydzY29yZWInXTsKCSRmcmllbmRseW5hbWUgPSAkcm93WydmcmllbmRseW5hbWUnXTsKCSRsaWJlcXVpcGUgPSAkcm93WydsaWJlcXVpcGUnXTsKCSR1cGxvYWRlZCA9ICRyb3dbJ3VwbG9hZGVkJ107CgkkYWZmaWNoZSA9ICRyb3dbJ2FmZmljaGUnXTsJCgkKCQoJLy8kb25lcm93LT5lcXVpcGU9ICRyb3dbJ2VxdWlwZSddOwoJJG9uZXJvdy0+bGliZWxsZT0gJHJvd1snbGliZWxsZSddOwoJCglpZihpc3NldCgkZnJpZW5kbHluYW1lKSAmJiAkZnJpZW5kbHluYW1lICE9JycpCgl7CgkJaWYgKCRsaWJlcXVpcGUgPT0gJGVxdWEpCgkJewoJCQkkb25lcm93LT5lcXVhPSAkcm93WydmcmllbmRseW5hbWUnXTsKCQl9CgkJZWxzZQoJCXsKCQkJJG9uZXJvdy0+ZXF1YT0gJHJvd1snZXF1YSddOwoJCX0KCQkKCX0KCWVsc2UKCXsKCQkkb25lcm93LT5lcXVhPSAkcm93WydlcXVhJ107Cgl9CgkKCSRvbmVyb3ctPnNjb3JlYT0gJHJvd1snc2NvcmVhJ107Cgkkb25lcm93LT5zY29yZWI9ICRyb3dbJ3Njb3JlYiddOwoJJG9uZXJvdy0+bGliZXF1aXBlPSAkcm93WydsaWJlcXVpcGUnXTsKCQoJaWYoaXNzZXQoJGZyaWVuZGx5bmFtZSkgJiYgJGZyaWVuZGx5bmFtZSAhPScnKQoJewoJCWlmICgkbGliZXF1aXBlID09ICRlcXViKQoJCXsKCQkJJG9uZXJvdy0+ZXF1Yj0gJHJvd1snZnJpZW5kbHluYW1lJ107CgkJfQoJCWVsc2UKCQl7CgkJCSRvbmVyb3ctPmVxdWI9ICRyb3dbJ2VxdWInXTsKCQl9CgkJCgl9CgllbHNlCgl7CgkJJG9uZXJvdy0+ZXF1Yj0gJHJvd1snZXF1YiddOwoJfQoJCglpZigkYWZmaWNoZSA9PTEpCgl7CgkJJG9uZXJvdy0+ZGlzcGxheT0gJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsICR0aGlzLT5MYW5nKCdkb19ub3RfZGlzcGxheScpLCAnJywgJycsICdzeXN0ZW1pY29uJyk7Cgl9CgllbHNlCgl7CgkJJG9uZXJvdy0+ZGlzcGxheT0gJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9mYWxzZS5naWYnLCAkdGhpcy0+TGFuZygnZGlzcGxheV9vbl9mcm9udGVuZCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyk7Cgl9CgkkcGIgPSAwOwoJaWYoJHNjb3JlYSA9PTAgJiYgJHNjb3JlYiA9PSAwKQoJewoJCSRwYiA9IDE7Cgl9CglpZigkdXBsb2FkZWQgPT0wICYmICRjbHViPT0xICYmICRwYj09MCkgewoJCQoJLy8kb25lcm93LT5hZmZpY2hhZ2UgPSAKCSRvbmVyb3ctPnJldHJpZXZlX2RldGFpbHMgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ3JldHJpZXZlX2RldGFpbHNfcmVuY29udHJlczInLCAkcmV0dXJuaWQsJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9pbXBvcnQuZ2lmJywgJHRoaXMtPkxhbmcoJ3JldHJpZXZlYWxscGFydGllc3NwaWQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSkpOwoJfQoJCglpZigkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIERlbGV0ZScpKQoJewoJCSRvbmVyb3ctPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZScsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddLCAndHlwZV9jb21wZXQnPT4ncG91bGVzJyksICR0aGlzLT5MYW5nKCdkZWxldGVfY29uZmlybScpKTsKCX0KCQoJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCSRyb3dhcnJheVtdPSAkb25lcm93OwogICAgICB9CiAgfQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7CiRzbWFydHktPmFzc2lnbignY3JlYXRlbGluaycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX2FsbF9wb3VsZV9yZW5jb250cmVzJywgJHJldHVybmlkLAoJCQkJICAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ltcG9ydC5naWYnLCAkdGhpcy0+TGFuZygnZG93bmxvYWRfYWxsX3BvdWxlX3Jlc3VsdHMnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpKS4KCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9hbGxfcG91bGVfcmVuY29udHJlcycsICRyZXR1cm5pZCwgCgkJCQkgICR0aGlzLT5MYW5nKCdkb3dubG9hZF9hbGxfcG91bGVfcmVzdWx0cycpLCAKCQkJCSAgYXJyYXkoKSkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm0yc3RhcnQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdtYXNzX2FjdGlvbicsJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbignZm9ybTJlbmQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokYXJ0aWNsZXMgPSBhcnJheSgiQWZmaWNoZXIgc3VyIGxlIHNpdGUiPT4iZGlzcGxheV9vbl9mcm9udGVuZCIsIk5lIHBsdXMgYWZmaWNoZXIgc3VyIGxlIHNpdGUiPT4iZG9fbm90X2Rpc3BsYXkiLCJTdXBwcmltZXIiPT4iZGVsZXRlX3RlYW1fcmVzdWx0Iik7CiRzbWFydHktPmFzc2lnbignYWN0aW9uZGVtYXNzZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdhY3Rpb25kZW1hc3NlJywkYXJ0aWNsZXMpKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRfbWFzc2FjdGlvbicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0X21hc3NhY3Rpb24nLCR0aGlzLT5MYW5nKCdhcHBseV90b19zZWxlY3Rpb24nKSwnJywnJywkdGhpcy0+TGFuZygnYXJleW91c3VyZV9hY3Rpb25tdWx0aXBsZScpKSk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgncG91bGVzUmVuY29udHJlcy50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.admin_poules_tab2.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyAgICAgICAgICAgICAgICAgIFRvIGNvbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLy9sZXMgY29tcMOpdGl0aW9ucyDDoCB2ZW5pcgppZighaXNzZXQoJGdDbXMpKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKJGRhdGVfY291cmFudGUgPSBkYXRlKCdZLW0tZCcpOwovL2VjaG8gImxhIGRhdGUgY291cmFudGUgOiAiLiRkYXRlX2NvdXJhbnRlOwovL29uIHRlc3RlIHVuIGFmZmljaGFnZSBwYXIgbW9pcwokbW9pc19jb3VyYW50ID0gZGF0ZSgnbicpOwokbW9pc19jaG9pc2kgPSAnJzsKJHBoYXNlX2Nob2lzaWUgPSAnJzsKJHBoYXNlX2VuX2NvdXJzID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BoYXNlX2VuX2NvdXJzJyk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CmlmKGlzc2V0KCRwYXJhbXNbJ3BoYXNlX2Nob2lzaWUnXSkgJiYgJHBhcmFtc1sncGhhc2VfY2hvaXNpZSddICE9JycpCnsKCSRwaGFzZV9jaG9pc2llID0gJHBhcmFtc1sncGhhc2VfY2hvaXNpZSddOwp9CmVsc2UKewoJJHBoYXNlX2Nob2lzaWUgPSAkcGhhc2VfZW5fY291cnM7Cn0KJHNtYXJ0eS0+YXNzaWduKCdwaGFzZScsICRwaGFzZV9jaG9pc2llKTsKaWYoaXNzZXQoJHBhcmFtc1snbW9pcyddKSAmJiAkcGFyYW1zWydtb2lzJ10gIT0nJykKewoJJG1vaXNfY2hvaXNpID0gJHBhcmFtc1snbW9pcyddOwoJLy8kYWN0aWYgPSAkbW9pc19jaG9pc2k7Cn0KZWxzZQp7CgkkbW9pc19jaG9pc2kgPSAkbW9pc19jb3VyYW50Owp9CmlmKCRtb2lzX2Nob2lzaSA9PTEpCnsKCSRtb2lzX3ByZWNlZGVudCA9IDEyOwp9CmVsc2UKewoJJG1vaXNfcHJlY2VkZW50ID0gJG1vaXNfY2hvaXNpIC0xOwp9CmlmKCRtb2lzX2Nob2lzaT09MTIpCnsKCSRtb2lzX3N1aXZhbnQgPSAxOwp9CmVsc2UKewoJJG1vaXNfc3VpdmFudCA9ICRtb2lzX2Nob2lzaSArIDE7Cn0KJHNtYXJ0eS0+YXNzaWduKCdTZXAnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCdTZXB0ZW1icmUnLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJyZXN1bHRhdHMiLCJtb2lzIj0+IjkiLCJwaGFzZV9jaG9pc2llIj0+IjEiKSwKCQknJywgZmFsc2UsIGZhbHNlLCAoKCRtb2lzX2Nob2lzaT09OSk/J2NsYXNzPSJwYWdlb3B0aW9ucyInOidjbGFzcz0iYWN0aXZlIicpKSk7CiRzbWFydHktPmFzc2lnbignT2N0JywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwnT2N0b2JyZScsIGFycmF5KCJhY3RpdmVfdGFiIj0+InJlc3VsdGF0cyIsIm1vaXMiPT4iMTAiLCJwaGFzZV9jaG9pc2llIj0+IjEiKSwKCQknJywgZmFsc2UsIGZhbHNlLCAoKCRtb2lzX2Nob2lzaT09MTApPydjbGFzcz0icGFnZW9wdGlvbnMiJzonY2xhc3M9ImFjdGl2ZSInKSkpOwokc21hcnR5LT5hc3NpZ24oJ05vdicsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsJ05vdmVtYnJlJywgYXJyYXkoImFjdGl2ZV90YWIiPT4icmVzdWx0YXRzIiwibW9pcyI9PiIxMSIsInBoYXNlX2Nob2lzaWUiPT4iMSIpLAoJCScnLCBmYWxzZSwgZmFsc2UsICgoJG1vaXNfY2hvaXNpPT0xMSk/J2NsYXNzPSJwYWdlb3B0aW9ucyInOidjbGFzcz0iYWN0aXZlIicpKSk7CiRzbWFydHktPmFzc2lnbignRGVjJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwnRMOpY2VtYnJlJywgYXJyYXkoImFjdGl2ZV90YWIiPT4icmVzdWx0YXRzIiwibW9pcyI9PiIxMiIsInBoYXNlX2Nob2lzaWUiPT4iMSIpLAoJCScnLCBmYWxzZSwgZmFsc2UsICgoJG1vaXNfY2hvaXNpPT0xMik/J2NsYXNzPSJwYWdlb3B0aW9ucyInOidjbGFzcz0iYWN0aXZlIicpKSk7CiRzbWFydHktPmFzc2lnbignSmFuJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwnSmFudmllcicsIGFycmF5KCJhY3RpdmVfdGFiIj0+InJlc3VsdGF0cyIsIm1vaXMiPT4iMSIsInBoYXNlX2Nob2lzaWUiPT4iMiIpLAoJCScnLCBmYWxzZSwgZmFsc2UsICgoJG1vaXNfY2hvaXNpPT0xKT8nY2xhc3M9InBhZ2VvcHRpb25zIic6J2NsYXNzPSJhY3RpdmUiJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdGZXYnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCdGw6l2cmllcicsIGFycmF5KCJhY3RpdmVfdGFiIj0+InJlc3VsdGF0cyIsIm1vaXMiPT4iMiIsInBoYXNlX2Nob2lzaWUiPT4iMiIpLAoJCScnLCBmYWxzZSwgZmFsc2UsICgoJG1vaXNfY2hvaXNpPT0yKT8nY2xhc3M9InBhZ2VvcHRpb25zIic6J2NsYXNzPSJhY3RpdmUiJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdNYXInLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCdNYXJzJywgYXJyYXkoImFjdGl2ZV90YWIiPT4icmVzdWx0YXRzIiwibW9pcyI9PiIzIiwicGhhc2VfY2hvaXNpZSI9PiIyIiksCgkJJycsIGZhbHNlLCBmYWxzZSwgKCgkbW9pc19jaG9pc2k9PTMpPydjbGFzcz0icGFnZW9wdGlvbnMiJzonY2xhc3M9ImFjdGl2ZSInKSkpOwokc21hcnR5LT5hc3NpZ24oJ0F2cicsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsJ0F2cmlsJywgYXJyYXkoImFjdGl2ZV90YWIiPT4icmVzdWx0YXRzIiwibW9pcyI9PiI0IiwicGhhc2VfY2hvaXNpZSI9PiIyIiksCgkJJycsIGZhbHNlLCBmYWxzZSwgKCgkbW9pc19jaG9pc2k9PTQpPydjbGFzcz0icGFnZW9wdGlvbnMiJzonY2xhc3M9ImFjdGl2ZSInKSkpOwokc21hcnR5LT5hc3NpZ24oJ01haScsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsJ01haScsIGFycmF5KCJhY3RpdmVfdGFiIj0+InJlc3VsdGF0cyIsIm1vaXMiPT4iNSIsInBoYXNlX2Nob2lzaWUiPT4iMiIpLAoJCScnLCBmYWxzZSwgZmFsc2UsICgoJG1vaXNfY2hvaXNpPT01KT8nY2xhc3M9InBhZ2VvcHRpb25zIic6J2NsYXNzPSJhY3RpdmUiJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdKdWluJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwnSnVpbicsIGFycmF5KCJhY3RpdmVfdGFiIj0+InJlc3VsdGF0cyIsIm1vaXMiPT4iNiIsInBoYXNlX2Nob2lzaWUiPT4iMiIpLAoJCScnLCBmYWxzZSwgZmFsc2UsICgoJG1vaXNfY2hvaXNpPT02KT8nY2xhc3M9InBhZ2VvcHRpb25zIic6J2NsYXNzPSJhY3RpdmUiJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdKdWlsJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwnSnVpbGxldCcsIGFycmF5KCJhY3RpdmVfdGFiIj0+InJlc3VsdGF0cyIsIm1vaXMiPT4iNyIsInBoYXNlX2Nob2lzaWUiPT4iMiIpLAoJCScnLCBmYWxzZSwgZmFsc2UsICgoJG1vaXNfY2hvaXNpPT03KT8nY2xhc3M9InBhZ2VvcHRpb25zIic6J2NsYXNzPSJhY3RpdmUiJykpKTsKCiRzbWFydHktPmFzc2lnbignbW9pc19wcmVjZWRlbnQnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQsICc8PCcsIGFycmF5KCJhY3RpdmVfdGFiIj0+InJlc3VsdGF0cyIsInBoYXNlX2Nob2lzaWUiPT4iMSIsIm1vaXMiPT4iMTIiKSwKCQknJywgZmFsc2UsIGZhbHNlLCAoKCRtb2lzX2Nob2lzaT09MTIpPydjbGFzcz0icGFnZW9wdGlvbnMiJzonY2xhc3M9ImFjdGl2ZSInKSkpOwokc21hcnR5LT5hc3NpZ24oJ21vaXNfc3VpdmFudCcsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCwgJz4+JywgYXJyYXkoImFjdGl2ZV90YWIiPT4icmVzdWx0YXRzIiwicGhhc2VfY2hvaXNpZSI9PiIyIiwibW9pcyI9PiIxIikgLAoJCScnLCBmYWxzZSwgZmFsc2UsICgoJG1vaXNfY2hvaXNpPT0xKT8nY2xhc3M9InBhZ2VvcHRpb25zIic6J2NsYXNzPSJhY3RpdmUiJykpKTsKCiRzbWFydHktPmFzc2lnbignYWxsX3Jlc3VsdHMnLCAKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9hbGxfcG91bGVfcmVuY29udHJlcycsICRyZXR1cm5pZCwgJ1LDqWN1cMOpcmVyIHRvdXMgbGVzIHLDqXN1bHRhdHMnKSk7Ci8vbGEgcmVxdWV0ZQokcXVlcnkgPSAiU0VMRUNUIHRjLmNvZWZmaWNpZW50LGNhbC5kYXRlX2RlYnV0LCBEQVkoY2FsLmRhdGVfZGVidXQpIEFTIGpvdXJfY29tcGV0LGNhbC5kYXRlX2ZpbiwgdGMuaWRlcHJldXZlLHRjLm5hbWUsIHRjLmluZGl2cyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jYWxlbmRyaWVyIEFTIGNhbCwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIEFTIHRjICBXSEVSRSB0Yy5pZGVwcmV1dmUgPSBjYWwuaWRlcHJldXZlIEFORCBNT05USChjYWwuZGF0ZV9kZWJ1dCkgPSA/IEFORCBjYWwuc2Fpc29uID0gPyI7Ci8vJHBhcm1zWydkYXRlX2RlYnV0J10gPSAkbW9pc19jb3VyYW50OwoKJHF1ZXJ5Lj0iIE9SREVSIEJZIGNhbC5kYXRlX2RlYnV0IEFTQyI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJG1vaXNfY2hvaXNpLCRzYWlzb24pKTsKLy9lY2hvICRxdWVyeTsKCgokcm93YXJyYXkgPSBhcnJheSgpOwokaT0wOwppZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCnsKCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgl7CgkJJGluZGl2cyA9ICRyb3dbJ2luZGl2cyddOwoJCSRkYXRlX2RlYnV0ID0gJHJvd1snZGF0ZV9kZWJ1dCddOwoJCSRkYXRlX2ZpbiA9ICRyb3dbJ2RhdGVfZmluJ107CgkJJGlkZXByZXV2ZSA9ICRyb3dbJ2lkZXByZXV2ZSddOwoJCSRqb3VyX2NvbXBldCA9ICRyb3dbJ2pvdXJfY29tcGV0J107CgkJJGNvZWZmaWNpZW50ID0gJHJvd1snY29lZmZpY2llbnQnXTsKCQkkY29tcGV0ID0gJHJvd1snbmFtZSddOwoJCSRvbmVyb3cgPSBuZXcgU3RkQ2xhc3MoKTsKCQkkb25lcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsKCQkkb25lcm93LT5jb21wZXQgPSAkcm93WyduYW1lJ107CgkJLy8kb25lcm93LT5pZGRpdmlzaW9uPSAkcm93WydpZGRpdmlzaW9uJ107CgkJJG9uZXJvdy0+ZGF0ZSA9ICRyb3dbJ2RhdGVfZGVidXQnXTsKCQkkb25lcm93LT5pbmRpdnMgPSAkcm93WydpbmRpdnMnXTsKCQkgLy9vbiBkw6ljbGFyZSB1biBub3V2ZWF1IHRhYmxlYXUKCQkkcm93YXJyYXkyID0gYXJyYXkoKTsKCQlpZigkaW5kaXZzID09IDApICAgIC8vb24gZXN0IHN1ciB1bmUgY29tcMOpdGl0aW9uIHBhciDDqXF1aXBlcwoJCXsKCQkJJGkrKzsKCQkJJG9uZXJvdy0+dmFsZXVyID0gJGk7CgkJCS8vb24gcmVmYWl0IHVuZSByZXF1ZXRlIHBvdXIgZXh0cmFpcmUgbGVzIHJlbmNvbnRyZXMKCQkJJHF1ZXJ5MiA9ICJTRUxFQ1QgRElTVElOQ1QgcmVuLmlkIEFTIHJlbl9pZCwgcmVuLnNjb3JlYSwgcmVuLnNjb3JlYiwgcmVuLmVxdWEsIHJlbi5lcXViLHJlbi5pZGRpdixlcS5pZGVwcmV1dmUsIHJlbi5pZHBvdWxlLGVxLmZyaWVuZGx5bmFtZSwgcmVuLmNsdWIscmVuLnVwbG9hZGVkLGVxLmxpYmVxdWlwZSxyZW4uZGF0ZV9ldmVudCxyZW4uYWZmaWNoZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBBUyByZW4sICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIEFTIGVxIFdIRVJFIHJlbi5pZGRpdiA9IGVxLmlkZGl2IEFORCByZW4uaWRwb3VsZSA9IGVxLmlkcG91bGUgQU5EIHJlbi5zYWlzb24gPSBlcS5zYWlzb24gIEFORCByZW4uZGF0ZV9ldmVudCA9ID8gQU5EIGVxLmlkZXByZXV2ZSA9ID8iOy8vIiBBTkQgcmVuLmNsdWIgPSAnMScgQU5EIGRhdGVfZXZlbnQgPj1Ob3coKSI7CgkJCS8vJHF1ZXJ5Mi49IiBBTkQgZXEuaWQ9MSI7CgkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsYXJyYXkoJGRhdGVfZGVidXQsICRpZGVwcmV1dmUpKTsKCQkJJG5ibGlnbmVzID0gJGRicmVzdWx0YXQtPlJlY29yZENvdW50KCk7CgkJCS8vZWNobyAibGUgbmIgZGUgbGlnbmVzIGVzdCA6ICIuJG5ibGlnbmVzOwoJCQlpZigkZGJyZXN1bHRhdCAmJiAkZGJyZXN1bHRhdC0+UmVjb3JkQ291bnQoKT4wKQoJCQl7CgkJCQl3aGlsZSgkcm93MiA9ICRkYnJlc3VsdGF0LT5GZXRjaFJvdygpKQoJCQkJewoJCQkJCS8vJHZhbGV1ciA9ICRpOwoJCQkJCSRvbmVyb3cyID0gbmV3IFN0ZENsYXNzKCk7CgkJCQkJLy8kaWQgPSAkcm93MlsnaWQnXTsKCQkJCQkkZXF1YSA9ICRyb3cyWydlcXVhJ107CgkJCQkJJGVxdWIgPSAkcm93MlsnZXF1YiddOwoJCQkJCSRpZGRpdiA9ICRyb3cyWydpZGRpdiddOwoJCQkJCSRpZHBvdWxlID0gJHJvdzJbJ2lkcG91bGUnXTsKCQkJCQkkc2NvcmVhID0gJHJvdzJbJ3Njb3JlYSddOwoJCQkJCSRzY29yZWIgPSAkcm93Mlsnc2NvcmViJ107CgkJCQkJJGNsdWIgPSAkcm93MlsnY2x1YiddOwoJCQkJCSRkYXRlX2V2ZW50ID0gJHJvdzJbJ2RhdGVfZXZlbnQnXTsKCQkJCQkkYWZmaWNoZSA9ICRyb3cyWydhZmZpY2hlJ107CgkJCQkJJHVwbG9hZGVkID0gJHJvdzJbJ3VwbG9hZGVkJ107CgkJCQkJJGxpYmVxdWlwZSA9ICRyb3cyWydsaWJlcXVpcGUnXTsKCQkJCQkkZnJpZW5kbHluYW1lID0gJHJvdzJbJ2ZyaWVuZGx5bmFtZSddOwoJCQkJCSRpZGVwcmV1dmUgPSAkcm93MlsnaWRlcHJldXZlJ107CgkJCQkJJG9uZXJvdzItPnJlbl9pZCA9ICRyb3cyWydyZW5faWQnXTsKCQkJCQlpZigkYWZmaWNoZSA9PTEgfHwgJGNsdWIgPT0gMSkKCQkJCQl7CgkJCQkJCSRvbmVyb3cyLT5kaXNwbGF5PSAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL3RydWUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RvX25vdF9kaXNwbGF5JyksICcnLCAnJywgJ3N5c3RlbWljb24nKTsKCQkJCQkJLy8kb25lcm93Mi0+ZGlzcGxheT0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCkkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL3RydWUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RvX25vdF9kaXNwbGF5JyksICcnLCAnJywgJ3N5c3RlbWljb24nKTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJG9uZXJvdzItPmRpc3BsYXk9ICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZmFsc2UuZ2lmJywgJHRoaXMtPkxhbmcoJ2Rpc3BsYXlfb25fZnJvbnRlbmQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpOwoJCQkJCX0KCQkJCQkKCQkJCQkkcGIgPSAwOwoJCQkJCQoJCQkJCWlmKCRzY29yZWEgPT0wICYmICRzY29yZWIgPT0gMCkKCQkJCQl7CgkJCQkJCSRwYiA9IDE7CgkJCQkJfQoJCQkJCWlmKCR1cGxvYWRlZCA9PSAwKSAKCQkJCQl7CgoJCQkJCSAJaWYoJHBiPT0xKSAKCQkJCQkJewoJCQkJCQkJCgkJCQkJCQlpZigkZGF0ZV9ldmVudCA8PSAkZGF0ZV9jb3VyYW50ZSkKCQkJCQkJCXsKCQkJCQkJCQoJCQkJCQkJCSRvbmVyb3cyLT5yZXRyaWV2ZV9wb3VsZV9yZW5jb250cmVzPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9wb3VsZV9yZW5jb250cmVzJywgJHJldHVybmlkLCRjb250ZW50cyA9ICdNQUonLCBhcnJheSgnaWRwb3VsZSc9PiRyb3cyWydpZHBvdWxlJ10sICdpZGRpdic9PiRyb3cyWydpZGRpdiddLCAnaWRlcHJldXZlJz0+JHJvd1snaWRlcHJldXZlJ10pKTsKCQkJCQkJCQoJCQkJCQkJfQoJCQkJCQkJCgkJCQkJCX0KCQkJCQkJCgkJCQkJCWlmKCRkYXRlX2V2ZW50IDw9ICRkYXRlX2NvdXJhbnRlKQoJCQkJCQl7CgkJCQkJCQoJCQkJCQkJJG9uZXJvdzItPnJldHJpZXZlX2RldGFpbHMgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ3JldHJpZXZlX2RldGFpbHNfcmVuY29udHJlczInLCAkcmV0dXJuaWQsJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9pbXBvcnQuZ2lmJywgJHRoaXMtPkxhbmcoJ3JldHJpZXZlYWxscGFydGllc3NwaWQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnZXF1aXBlJz0+JHJvdzJbJ2lkJ10pKTsKCQkJCQkJfQoJCQkJCQkKCQkJCQl9CgoJCQkJCWlmKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgRGVsZXRlJykpCgkJCQkJewoJCQkJCQkkb25lcm93Mi0+ZGVsZXRlbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGVsZXRlJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3cyWydpZCddLCAndHlwZV9jb21wZXQnPT4ncG91bGVzJyksICR0aGlzLT5MYW5nKCdkZWxldGVfY29uZmlybScpKTsKCQkJCQl9CgkJCQkJaWYoaXNzZXQoJGZyaWVuZGx5bmFtZSkgJiYgJGZyaWVuZGx5bmFtZSAhPScnKQoJCQkJCXsKCQkJCQkJaWYgKCRsaWJlcXVpcGUgPT0gJGVxdWEgJiYgaXNzZXQoJGZyaWVuZGx5bmFtZSkgJiYgJGZyaWVuZGx5bmFtZSAhPScnICkKCQkJCQkJewoJCQkJCQkJJG9uZXJvdzItPmVxdWE9ICRyb3cyWydmcmllbmRseW5hbWUnXTsKCQkJCQkJfQoJCQkJCQkKCQkJCQkJZWxzZXsKCQkJCQkJCSRvbmVyb3cyLT5lcXVhPSAkcm93MlsnZXF1YSddOwoJCQkJCQl9CgkJCQkJCgkJCQkJfQoJCQkJCWVsc2V7CgkJCQkJCSRvbmVyb3cyLT5lcXVhPSAkcm93MlsnZXF1YSddOwoJCQkJCX0KCQkJCQlpZihpc3NldCgkZnJpZW5kbHluYW1lKSAmJiAkZnJpZW5kbHluYW1lICE9JycpCgkJCQkJewoJCQkJCQlpZiAoJGxpYmVxdWlwZSA9PSAkZXF1YikKCQkJCQkJewoJCQkJCQkJJG9uZXJvdzItPmVxdWI9ICRyb3cyWydmcmllbmRseW5hbWUnXTsKCQkJCQkJfQoKCQkJCQkJZWxzZXsKCQkJCQkJCSRvbmVyb3cyLT5lcXViPSAkcm93MlsnZXF1YiddOwoJCQkJCQl9CgkJCQkJCgkJCQkJfQoJCQkJCWVsc2V7CgkJCQkJCSRvbmVyb3cyLT5lcXViPSAkcm93MlsnZXF1YiddOwoJCQkJCX0KCQkJCQkkb25lcm93Mi0+c2NvcmVhID0gJHNjb3JlYTsKCQkJCQkkb25lcm93Mi0+c2NvcmViID0gJHNjb3JlYjsKCQkJCQkkb25lcm93Mi0+Y2x1YiA9ICRyb3cyWydjbHViJ107CgkJCQkJJG9uZXJvdy0+cmVuX2lkID0gJGlkOwoJCQkJCS8vJG9uZXJvdzItPnZhbGV1ciA9ICR2YWxldXI7CgkJCQkJJHJvd2FycmF5MltdID0gJG9uZXJvdzI7CgkJCQkJCgkJCQl9CgkJCQkKCQkJCSRzbWFydHktPmFzc2lnbigncHJvZHNfJy4kaSwkcm93YXJyYXkyKTsKCQkJLy8JJHNtYXJ0eS0+YXNzaWduKCdhdHRlbnRpb25faW1nJywgJzxpbWcgc3JjPSInLiAkdGhpcy0+R2V0TW9kdWxlVVJMUGF0aC4nL2ltYWdlcy93YXJuaW5nLmdpZiIgYWx0PSInLiR0aGlzLT5MYW5nKCduZXdfdG9waWNfbGFiZWwnKS4nIiB0aXRsZT0iJy4kdGhpcy0+TGFuZygnbmV3X3RvcGljX2xhYmVsJykuJyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiAvPicpOwoJCQkJdW5zZXQoJHJvd2FycmF5Mik7CgkJCS8vCXVuc2V0KCR2YWxldXIpOwoJCQl9CgkJCQoJCX0KCQllbHNlCgkJewoJCQkvL29uIGVzdCBzdXIgdW5lIGNvbXBldCBpbmRpdmlkdWVsbGUKCQkJJGRhdGVfZXZlbnQgPSAkcm93WydkYXRlX2RlYnV0J107CgkJCSRuYW1lID0gJHJvd1snbmFtZSddOwoJCQkvLyRvbmVyb3ctPmRvd25sb2FkID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdyZXRyaWV2ZV9pbmRpdnMnLCRyZXR1cm5pZCwkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ltcG9ydC5naWYnLCAkdGhpcy0+TGFuZygncmV0cmlldmVhbGxwYXJ0aWVzc3BpZCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCd0eXBlX2NvbXBldCc9PiRyb3dbJ3R5cGVfY29tcGV0J10sJ2NvZWZmaWNpZW50Jz0+J2NvZWZmaWNpZW50JykpOwoJCQkkb25lcm93LT5kb3dubG9hZCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwncmV0cmlldmVfaW5kaXZzJywkcmV0dXJuaWQsJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9pbXBvcnQuZ2lmJywgJHRoaXMtPkxhbmcoJ3JldHJpZXZlYWxscGFydGllc3NwaWQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnaWRlcHJldXZlJz0+JHJvd1snaWRlcHJldXZlJ10sJ2NvZWZmaWNpZW50Jz0+J2NvZWZmaWNpZW50JykpOwoJCQkvLyRvbmVyb3ctPmNvbXBldCA9ICRuYW1lOy8vJG9uZXJvdy0+Y29tcGV0ID0gJG5hbWU7CgkJfQoJCSRyb3dhcnJheVtdICA9ICRvbmVyb3c7CgkJJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7CgkJJHNtYXJ0eS0+YXNzaWduKCdkYXRlX2NvdXJhbnRlJywgJGRhdGVfY291cmFudGUpOwoJCQoJfQp9CmVsc2UKewoJJHNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJywgJ1BhcyBkZSByw6lzdWx0YXRzJyk7CgllY2hvICdwYXMgZGUgcsOpc3VsdGF0cyc7Cn0KJHNtYXJ0eS0+YXNzaWduKCdmb3JtMnN0YXJ0JywKCQkkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnbWFzc19hY3Rpb24nLCRyZXR1cm5pZCkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm0yZW5kJywKCQkkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKJGFydGljbGVzID0gYXJyYXkoIkFmZmljaGVyIHN1ciBsZSBzaXRlIj0+ImRpc3BsYXlfb25fZnJvbnRlbmQiLCJOZSBwbHVzIGFmZmljaGVyIHN1ciBsZSBzaXRlIj0+ImRvX25vdF9kaXNwbGF5IiwiU3VwcHJpbWVyIj0+ImRlbGV0ZV90ZWFtX3Jlc3VsdHMiKTsKJHNtYXJ0eS0+YXNzaWduKCdhY3Rpb25kZW1hc3NlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2FjdGlvbmRlbWFzc2UnLCRhcnRpY2xlcykpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF9tYXNzYWN0aW9uJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXRfbWFzc2FjdGlvbicsJHRoaXMtPkxhbmcoJ2FwcGx5X3RvX3NlbGVjdGlvbicpLCcnLCcnLCR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlX2FjdGlvbm11bHRpcGxlJykpKTsKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdyZXN1bHRhdHMudHBsJyk7CiMKI0VPRgojCj8+CgoKCgoKCgo=]]></data>
	</file>
	<file>
	  <filename>/action.admin_poules_tab3.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyAgICAgICAgICAgICAgICAgIFRvIGNvbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLy9sZXMgY29tcMOpdGl0aW9ucyDDoCB2ZW5pcgppZighaXNzZXQoJGdDbXMpKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKJGRhdGVfY291cmFudGUgPSBkYXRlKCdZLW0tZCcpOwovL2VjaG8gImxhIGRhdGUgY291cmFudGUgOiAiLiRkYXRlX2NvdXJhbnRlOwovL29uIHRlc3RlIHVuIGFmZmljaGFnZSBwYXIgbW9pcwokbW9pc19jb3VyYW50ID0gZGF0ZSgnbicpOwokbW9pc19jaG9pc2kgPSAnJzsKJHBoYXNlX2Nob2lzaWUgPSAnJzsKJHBoYXNlID0gKGlzc2V0KCRwYXJhbXNbJ3BoYXNlJ10pPyRwYXJhbXNbJ3BoYXNlJ106JHRoaXMtPkdldFByZWZlcmVuY2UoJ3BoYXNlX2VuX2NvdXJzJykpOwokc2Fpc29uID0gKGlzc2V0KCRwYXJhbXNbJ3NhaXNvbiddKT8kcGFyYW1zWydzYWlzb24nXTokdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJykpOwoKLy9sZSByZWNvcmRfaWQgZXN0IGTDqWZpbmksIG9uIHBldXQgcsOpY3Vww6lyZXIgdG91dGVzIGxlcyB2YXJpYWJsZXMgbsOpY2Vzc2FpcmVzCmlmKGlzc2V0KCRwYXJhbXNbJ3JlY29yZF9pZCddKSAmJiAkcGFyYW1zWydyZWNvcmRfaWQnXSAhPScnKQp7CgkkcmVjb3JkX2lkID0gJHBhcmFtc1sncmVjb3JkX2lkJ107CgkvL29uIGZhaXQgZG9uYyBsYSByZXF1ZXRlIHBvdXIgZXh0cmFpcmUgdG91dCBjZSBkb250IG9uIGEgYmVzb2luCgkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcyBXSEVSRSBpZCA9ID8gIjsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHJlY29yZF9pZCkpOwoJCglpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCgl7CgkJd2hpbGUoJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQl7CgkJCSRpZGVwcmV1dmUgPSAkcm93WydpZGVwcmV1dmUnXTsKCQkJJGlkZGl2ID0gJHJvd1snaWRkaXYnXTsKCQkJJGlkcG91bGUgPSAkcm93WydpZHBvdWxlJ107CgkJCSRsaWJlcXVpcGUgPSAkcm93WydsaWJlcXVpcGUnXTsKCQkJJGxpYmVxdWlwZTEgPSB0cmltKCRsaWJlcXVpcGUpOwoJCQkvL3Zhcl9kdW1wKCRsaWJlcXVpcGUxKTsKCQkJJGxpYmVxdWlwZTIgPSAnJScuJGxpYmVxdWlwZTEuJyUnOwoJCQkkcGhhc2UgPSAkcm93WydwaGFzZSddOwoJCX0KCX0KCQp9CgoKCi8vZWNobyAibGEgc2Fpc29uIGVzdCA6ICIuJHNhaXNvbjsKLy9lY2hvICJsYSBwaGFzZSBlc3QgOiAiLiRwaGFzZTsKLy9vbiBjcsOpZSBkZXMgbGllbnMgcG91ciBuYXZpZ3VlciBkJ3VuZSDDqXF1aXBlIGwnYXV0cmUKJHJvd2FycmF5MyA9IGFycmF5KCk7CiRyb3djbGFzczMgPSAnJzsKJHF1ZXJ5MyA9ICJTRUxFQ1QgaWQsIGxpYmVxdWlwZSwgZnJpZW5kbHluYW1lIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgV0hFUkUgc2Fpc29uID0gPyBBTkQgcGhhc2UgPSA/IEFORCBpZGVwcmV1dmUgPSA/IjsKJGRicmVzdWx0YXQzID0gJGRiLT5FeGVjdXRlKCRxdWVyeTMsIGFycmF5KCRzYWlzb24sJHBoYXNlLCRpZGVwcmV1dmUpKTsKaWYoJGRicmVzdWx0YXQzICYmICRkYnJlc3VsdGF0My0+UmVjb3JkQ291bnQoKT4wKQp7Cgl3aGlsZSgkcm93MyA9ICRkYnJlc3VsdGF0My0+RmV0Y2hSb3coKSkKCXsKCQkkZnJpZW5kbHluYW1lID0gJHJvdzNbJ2ZyaWVuZGx5bmFtZSddOwoJCWlmKG51bGwgIT09JGZyaWVuZGx5bmFtZSkKCQl7CgkJCSRsaWJlcXVpcGUgPSAkZnJpZW5kbHluYW1lOwoJCX0KCQllbHNlCgkJewoJCQkkbGliZXF1aXBlID0gJHJvdzNbJ2xpYmVxdWlwZSddOwoJCX0KCQkkb25lcm93Mz0gbmV3IFN0ZENsYXNzKCk7CgoJCSRvbmVyb3czLT5saWVuX25hdj0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fcG91bGVzX3RhYjMnLCAkcmV0dXJuaWQsICRjb250ZW50cz0kbGliZXF1aXBlLCBhcnJheSgicmVjb3JkX2lkIj0+JHJvdzNbJ2lkJ10sICJsaWJlcXVpcGUiPT4kbGliZXF1aXBlLCAiaWRlcHJldXZlIj0+JGlkZXByZXV2ZSkpOwoJCS8vJG9uZXJvdzMtPmxpYmVxdWlwZT0gJHJvdzNbJ2xpYmVxdWlwZSddOwoJCSgkcm93Y2xhc3MzID09ICJyb3cxIiA/ICRyb3djbGFzczM9ICJyb3cyIiA6ICRyb3djbGFzczM9ICJyb3cxIik7CgkJJG9uZXJvdzMtPnJvd2NsYXNzMz0gJHJvd2NsYXNzMzsKCQkkcm93YXJyYXkzW109ICRvbmVyb3czOwoJfQoJCn0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtczMnLCRyb3dhcnJheTMpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudDMnLCBjb3VudCgkcm93YXJyYXkzKSk7Ci8vJGxpYmVxdWlwZTIgPSAnJzsKLyoKCSRsaWJlcXVpcGUxID0gdHJpbSgkcGFyYW1zWydsaWJlcXVpcGUnXSk7CgkvL3Zhcl9kdW1wKCRsaWJlcXVpcGUxKTsKCSRsaWJlcXVpcGUyID0gJyUnLiRsaWJlcXVpcGUxLiclJzsKKi8KCiRzbWFydHktPmFzc2lnbigncmV0b3VyJywKCSR0aGlzLT5DcmVhdGVSZXR1cm5MaW5rKCRpZCwgJHJldHVybmlkLCRjb250ZW50cz0nUmV0b3VyIGF1eCDDqXF1aXBlcycpKTsKJHNtYXJ0eS0+YXNzaWduKCdyZXR1cm5saW5rJywgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCwkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2JhY2suZ2lmJywgJHRoaXMtPkxhbmcoJ2JhY2snKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCJhY3RpdmVfdGFiIj0+ImVxdWlwZXMiKSkpOwokc21hcnR5LT5hc3NpZ24oJ2FsbF9yZXN1bHRzJywgCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfcG91bGVfcmVuY29udHJlcycsICRyZXR1cm5pZCwgJ1LDqWN1cMOpcmVyIHRvdXMgbGVzIHLDqXN1bHRhdHMnLCBhcnJheSgicmVjb3JkX2lkIj0+JHJlY29yZF9pZCkpKTsKCQkKLy9vbiBwcsOpcGFyZSB1biBsaWVuIHBvdXIgcsOpY3Vww6lyZXIgbGUgY2xhc3NlbWVudCBvdSBsZSBtZXR0ZSDDoCBqb3VyCiRzbWFydHktPmFzc2lnbigncmVmcmVzaF9jbGFzcycsCiR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2dldFBvdWxlQ2xhc3NlbWVudCcsICRyZXR1cm5pZCwkY29udGVudHM9IlLDqWN1cMOpcmVyIG91IG1ldHRyZSBsZSBjbGFzc2VtZW50IMOgIGpvdXIiLGFycmF5KCJyZWNvcmRfaWQiPT4kcmVjb3JkX2lkKSkpOwkKLy9sZSBjbGFzc2VtZW50IGRlIGwnw6lxdWlwZQokcXVlcnkyID0gIlNFTEVDVCBjbC5jbHQsIGNsLmpvdWUsY2wuZXF1aXBlLGNsLnB0cyxlcS5saWJlcXVpcGUsZXEuZnJpZW5kbHluYW1lIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NsYXNzZW1lbnQgQVMgY2wsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIEFTIGVxICBXSEVSRSBlcS5pZCA9IGNsLmlkZXF1aXBlICAgQU5EIGNsLmlkZXF1aXBlID0gPyBBTkQgY2wuc2Fpc29uID0gPyBPUkRFUiBCWSBjbC5pZCBBU0MiOwokZGJyZXN1bHQyPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJHJlY29yZF9pZCwkc2Fpc29uKSk7Cgokcm93YXJyYXkgPSBhcnJheSgpOwokcm93Y2xhc3MyID0gJyc7CmlmKCRkYnJlc3VsdDIgJiYgJGRicmVzdWx0Mi0+UmVjb3JkQ291bnQoKT4wKQp7Cgl3aGlsZSgkcm93MiA9ICRkYnJlc3VsdDItPkZldGNoUm93KCkpCgl7CgkJJGNsYXNzZW1lbnQgPSAkcm93MlsnY2x0J107CgkJJGpvdWUgPSAkcm93Mlsnam91ZSddOwoJCSRmcmllbmRseW5hbWUgPSAkcm93MlsnZnJpZW5kbHluYW1lJ107CgkJaWYoJGNsYXNzZW1lbnQ9PScwJyB8fCAkam91ZSA9PScwJyApCgkJewoJCQkkY2xhc3NlbWVudCA9ICctJzsKCQl9CgkJJG9uZXJvdzI9IG5ldyBTdGRDbGFzcygpOwoJCS8vJG9uZXJvdzItPnJvd2NsYXNzMj0gJHJvd2NsYXNzMjsKCQkvLyRwb3VsZSA9ICRyb3cyWydwb3VsZSddOwoJCS8vJG9uZXJvdzItPmlkPSAkcm93MlsnaWQnXTsKCQkvLyRvbmVyb3cyLT5pZHBvdWxlID0gJHJvdzJbJ2lkcG91bGUnXTsKCQkvLyRvbmVyb3cyLT5pZGRpdiA9ICRyb3cyWydpZGRpdiddOwoJCSRvbmVyb3cyLT5mcmllbmRseW5hbWU9ICRyb3cyWydmcmllbmRseW5hbWUnXTsKCQkkb25lcm93Mi0+Y2x0PSAgJGNsYXNzZW1lbnQ7CgkJJG9uZXJvdzItPmVxdWlwZT0gJHJvdzJbJ2VxdWlwZSddOwoJCSRvbmVyb3cyLT5qb3VlPSAkcm93Mlsnam91ZSddOwoJCSRvbmVyb3cyLT5wdHM9ICRyb3cyWydwdHMnXTsKCQkvLyRvbmVyb3ctPnR5cGVfY29tcGV0ID0gJHJvd1snY29kZV9jb21wZXQnXTsKCQkoJHJvd2NsYXNzMiA9PSAicm93MSIgPyAkcm93Y2xhc3MyPSAicm93MiIgOiAkcm93Y2xhc3MyPSAicm93MSIpOwoJCSRvbmVyb3cyLT5yb3djbGFzczI9ICRyb3djbGFzczI7CgkJJHJvd2FycmF5W109ICRvbmVyb3cyOwoJfQp9CmVsc2UKewoJLy9wYXMgZGUgcsOpc3VsdGF0cyA/Cn0KJHNtYXJ0eS0+YXNzaWduKCdsaWJlcXVpcGUnLCAkZnJpZW5kbHluYW1lKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kMicsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudDInLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtczInLCAkcm93YXJyYXkpOwkJCgkJCgkJCgkJCgkJCi8vbGEgcmVxdWV0ZQovLyRxdWVyeSA9ICJTRUxFQ1QgdGMuY29lZmZpY2llbnQsY2FsLmRhdGVfZGVidXQsIERBWShjYWwuZGF0ZV9kZWJ1dCkgQVMgam91cl9jb21wZXQsY2FsLmRhdGVfZmluLCB0Yy5pZGVwcmV1dmUsdGMubmFtZSwgdGMuaW5kaXZzIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIgQVMgY2FsLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgQVMgdGMgIFdIRVJFIHRjLmlkZXByZXV2ZSA9IGNhbC5pZGVwcmV1dmUgQU5EIE1PTlRIKGNhbC5kYXRlX2RlYnV0KSA9ID8gQU5EIGNhbC5zYWlzb24gPSA/IjsKJHF1ZXJ5ID0gIlNFTEVDVCBESVNUSU5DVCBkYXRlX2V2ZW50IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzIFdIRVJFIGlkZGl2ID0gPyBBTkQgaWRwb3VsZSA9ID8gQU5EIHNhaXNvbiA9ID8gIjsKLyoKaWYoJHBoYXNlID09IDEpCnsKCSRxdWVyeS49IiBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPjciOwp9CmVsc2UKewoJJHF1ZXJ5Lj0iIEFORCBNT05USChkYXRlX2V2ZW50KSA8IDciOwp9CiovCiRxdWVyeS49IiBBTkQgKGVxdWEgTElLRSA/ICBPUiBlcXViIExJS0UgPykiOwokcXVlcnkuPSIgT1JERVIgQlkgZGF0ZV9ldmVudCBBU0MiOwovL2VjaG8gJHF1ZXJ5OwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaWRkaXYsICRpZHBvdWxlLCRzYWlzb24sJGxpYmVxdWlwZTIsJGxpYmVxdWlwZTIpKTsvLyxhcnJheSgkbW9pc19jaG9pc2ksJHNhaXNvbikpOwoKCgokcm93YXJyYXkgPSBhcnJheSgpOwokcm93Y2xhc3MgPSAnJzsKJGk9MDsKaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKT4wKQp7Cgl3aGlsZSgkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJewoJCQoJCSRkYXRlX2RlYnV0ID0gJHJvd1snZGF0ZV9ldmVudCddOwoJCSRvbmVyb3cgPSBuZXcgU3RkQ2xhc3MoKTsKCQkkb25lcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsKCQkkb25lcm93LT5kYXRlID0gJHJvd1snZGF0ZV9ldmVudCddOwoJCSAvL29uIGTDqWNsYXJlIHVuIG5vdXZlYXUgdGFibGVhdQoJCSRyb3dhcnJheTIgPSBhcnJheSgpOwoJCQoJCQkkaSsrOwoJCQkkb25lcm93LT52YWxldXIgPSAkaTsKCQkJLy9vbiByZWZhaXQgdW5lIHJlcXVldGUgcG91ciBleHRyYWlyZSBsZXMgcmVuY29udHJlcwoJCQkkcXVlcnkyID0gIlNFTEVDVCBESVNUSU5DVCByZW4uaWQgQVMgcmVuX2lkLCByZW4uc2NvcmVhLCByZW4uc2NvcmViLCByZW4uZXF1YSwgcmVuLmVxdWIscmVuLmlkZGl2LGVxLmlkZXByZXV2ZSwgcmVuLmlkcG91bGUsZXEuZnJpZW5kbHluYW1lLCByZW4uY2x1YixyZW4udXBsb2FkZWQsZXEubGliZXF1aXBlLGVxLmlkLHJlbi5kYXRlX2V2ZW50LHJlbi5hZmZpY2hlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzIEFTIHJlbiwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgQVMgZXEgV0hFUkUgcmVuLmlkZGl2ID0gZXEuaWRkaXYgQU5EIHJlbi5pZHBvdWxlID0gZXEuaWRwb3VsZSBBTkQgcmVuLnNhaXNvbiA9IGVxLnNhaXNvbiI7CgkJCSRxdWVyeTIuPSAiICBBTkQgcmVuLmRhdGVfZXZlbnQgPSA/IjsKCQkJLy8kcXVlcnkyLj0gIiBBTkQgZXEuc2Fpc29uID0gPyI7CgkJCSRxdWVyeTIuPSIgQU5EIGVxLmlkID0gPyI7CgkJCS8vZWNobyAkcXVlcnkyOwoJCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLGFycmF5KCRkYXRlX2RlYnV0LCRyZWNvcmRfaWQpKTsKCQkJLy9pZigkZGJyZXN1bHRhdCAmJiAkZGJyZXN1bHRhdC0+UmVjb3JkQ291bnQoKT4wKQoJCQkKCQkJLy9lY2hvICJsZSBuYiBkZSBsaWduZXMgZXN0IDogIi4kbmJsaWduZXM7CgkJCWlmKCRkYnJlc3VsdGF0ICYmICRkYnJlc3VsdGF0LT5SZWNvcmRDb3VudCgpPjApCgkJCXsKCQkJCSRuYmxpZ25lcyA9ICRkYnJlc3VsdGF0LT5SZWNvcmRDb3VudCgpOwoJCQkJd2hpbGUoJHJvdzIgPSAkZGJyZXN1bHRhdC0+RmV0Y2hSb3coKSkKCQkJCXsKCQkJCQkvLyR2YWxldXIgPSAkaTsKCQkJCQkkb25lcm93MiA9IG5ldyBTdGRDbGFzcygpOwoJCQkJCSRlcV9pZCA9ICRyb3cyWydpZCddOwoJCQkJCSRlcXVhID0gJHJvdzJbJ2VxdWEnXTsKCQkJCQkkZXF1YiA9ICRyb3cyWydlcXViJ107CgkJCQkJJGlkZGl2ID0gJHJvdzJbJ2lkZGl2J107CgkJCQkJJGlkcG91bGUgPSAkcm93MlsnaWRwb3VsZSddOwoJCQkJCSRzY29yZWEgPSAkcm93Mlsnc2NvcmVhJ107CgkJCQkJJHNjb3JlYiA9ICRyb3cyWydzY29yZWInXTsKCQkJCQkkY2x1YiA9ICRyb3cyWydjbHViJ107CgkJCQkJJGRhdGVfZXZlbnQgPSAkcm93MlsnZGF0ZV9ldmVudCddOwoJCQkJCSRhZmZpY2hlID0gJHJvdzJbJ2FmZmljaGUnXTsKCQkJCQkkdXBsb2FkZWQgPSAkcm93MlsndXBsb2FkZWQnXTsKCQkJCQkkbGliZXF1aXBlID0gJHJvdzJbJ2xpYmVxdWlwZSddOwoJCQkJCSRmcmllbmRseW5hbWUgPSAkcm93MlsnZnJpZW5kbHluYW1lJ107CgkJCQkJJGlkZXByZXV2ZSA9ICRyb3cyWydpZGVwcmV1dmUnXTsKCQkJCQkkb25lcm93Mi0+cmVuX2lkID0gJHJvdzJbJ3Jlbl9pZCddOwoJCQkJCWlmKCRhZmZpY2hlID09MSB8fCAkY2x1YiA9PSAxKQoJCQkJCXsKCQkJCQkJJG9uZXJvdzItPmRpc3BsYXk9ICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCAkdGhpcy0+TGFuZygnZG9fbm90X2Rpc3BsYXknKSwgJycsICcnLCAnc3lzdGVtaWNvbicpOwoJCQkJCQkvLyRvbmVyb3cyLT5kaXNwbGF5PSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsKSR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCAkdGhpcy0+TGFuZygnZG9fbm90X2Rpc3BsYXknKSwgJycsICcnLCAnc3lzdGVtaWNvbicpOwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkb25lcm93Mi0+ZGlzcGxheT0gJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9mYWxzZS5naWYnLCAkdGhpcy0+TGFuZygnZGlzcGxheV9vbl9mcm9udGVuZCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyk7CgkJCQkJfQoJCQkJCQoJCQkJCSRwYiA9IDA7CgkJCQkJCgkJCQkJaWYoJHNjb3JlYSA9PTAgJiYgJHNjb3JlYiA9PSAwKQoJCQkJCXsKCQkJCQkJJHBiID0gMTsKCQkJCQl9CgkJCQkJaWYoJHVwbG9hZGVkID09IDApIAoJCQkJCXsKCgkJCQkJIAlpZigkcGI9PTEpIAoJCQkJCQl7CgkJCQkJCQkKCQkJCQkJCWlmKCRkYXRlX2V2ZW50IDw9ICRkYXRlX2NvdXJhbnRlKQoJCQkJCQkJewoJCQkJCQkJCgkJCQkJCQkJJG9uZXJvdzItPnJldHJpZXZlX3BvdWxlX3JlbmNvbnRyZXM9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3BvdWxlX3JlbmNvbnRyZXMnLCAkcmV0dXJuaWQsJGNvbnRlbnRzID0gJ01BSicsIGFycmF5KCdpZHBvdWxlJz0+JHJvdzJbJ2lkcG91bGUnXSwgJ2lkZGl2Jz0+JHJvdzJbJ2lkZGl2J10sICdpZGVwcmV1dmUnPT4kaWRlcHJldXZlKSk7CgkJCQkJCQkKCQkJCQkJCX0KCQkJCQkJCQoJCQkJCQl9CgkJCQkJCQoJCQkJCQlpZigkZGF0ZV9ldmVudCA8PSAkZGF0ZV9jb3VyYW50ZSkKCQkJCQkJewoJCQkJCQkKCQkJCQkJCSRvbmVyb3cyLT5yZXRyaWV2ZV9kZXRhaWxzID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdyZXRyaWV2ZV9kZXRhaWxzX3JlbmNvbnRyZXMyJywgJHJldHVybmlkLCR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vaW1wb3J0LmdpZicsICR0aGlzLT5MYW5nKCdyZXRyaWV2ZWFsbHBhcnRpZXNzcGlkJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3cyWydyZW5faWQnXSwiZXFfaWQiPT4kZXFfaWQpKTsKCQkJCQkJfQoJCQkJCQkKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJG9uZXJvdzItPnZpZXdkZXRhaWxzID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGV0YWlscycsJHJldHVybmlkLCR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdmlldy5naWYnLCAkdGhpcy0+TGFuZygndmlld2RldGFpbHMnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvdzJbJ3Jlbl9pZCddLCJlcV9pZCI9PiRlcV9pZCkpOwoJCQkJCX0KCgkJCQkJaWYoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBEZWxldGUnKSkKCQkJCQl7CgkJCQkJCSRvbmVyb3cyLT5kZWxldGVsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWxldGUnLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvdzJbJ3Jlbl9pZCddLCAndHlwZV9jb21wZXQnPT4ncG91bGVzJyksICR0aGlzLT5MYW5nKCdkZWxldGVfY29uZmlybScpKTsKCQkJCQl9CgkJCQkJaWYoaXNzZXQoJGZyaWVuZGx5bmFtZSkgJiYgJGZyaWVuZGx5bmFtZSAhPScnKQoJCQkJCXsKCQkJCQkJaWYgKCRsaWJlcXVpcGUgPT0gJGVxdWEgJiYgaXNzZXQoJGZyaWVuZGx5bmFtZSkgJiYgJGZyaWVuZGx5bmFtZSAhPScnICkKCQkJCQkJewoJCQkJCQkJJG9uZXJvdzItPmVxdWE9ICRyb3cyWydmcmllbmRseW5hbWUnXTsKCQkJCQkJfQoJCQkJCQkKCQkJCQkJZWxzZXsKCQkJCQkJCSRvbmVyb3cyLT5lcXVhPSAkcm93MlsnZXF1YSddOwoJCQkJCQl9CgkJCQkJCgkJCQkJfQoJCQkJCWVsc2V7CgkJCQkJCSRvbmVyb3cyLT5lcXVhPSAkcm93MlsnZXF1YSddOwoJCQkJCX0KCQkJCQlpZihpc3NldCgkZnJpZW5kbHluYW1lKSAmJiAkZnJpZW5kbHluYW1lICE9JycpCgkJCQkJewoJCQkJCQlpZiAoJGxpYmVxdWlwZSA9PSAkZXF1YikKCQkJCQkJewoJCQkJCQkJJG9uZXJvdzItPmVxdWI9ICRyb3cyWydmcmllbmRseW5hbWUnXTsKCQkJCQkJfQoKCQkJCQkJZWxzZXsKCQkJCQkJCSRvbmVyb3cyLT5lcXViPSAkcm93MlsnZXF1YiddOwoJCQkJCQl9CgkJCQkJCgkJCQkJfQoJCQkJCWVsc2V7CgkJCQkJCSRvbmVyb3cyLT5lcXViPSAkcm93MlsnZXF1YiddOwoJCQkJCX0KCQkJCQkkb25lcm93Mi0+c2NvcmVhID0gJHNjb3JlYTsKCQkJCQkkb25lcm93Mi0+c2NvcmViID0gJHNjb3JlYjsKCQkJCQkkb25lcm93Mi0+Y2x1YiA9ICRyb3cyWydjbHViJ107CgkJCQkJJG9uZXJvdy0+cmVuX2lkID0gJGlkOwoJCQkJCS8vJG9uZXJvdzItPnZhbGV1ciA9ICR2YWxldXI7CgkJCQkJJHJvd2FycmF5MltdID0gJG9uZXJvdzI7CgkJCQkJCgkJCQl9CgkJCQkKCQkJCSRzbWFydHktPmFzc2lnbigncHJvZHNfJy4kaSwkcm93YXJyYXkyKTsKCQkJLy8JJHNtYXJ0eS0+YXNzaWduKCdhdHRlbnRpb25faW1nJywgJzxpbWcgc3JjPSInLiAkdGhpcy0+R2V0TW9kdWxlVVJMUGF0aC4nL2ltYWdlcy93YXJuaW5nLmdpZiIgYWx0PSInLiR0aGlzLT5MYW5nKCduZXdfdG9waWNfbGFiZWwnKS4nIiB0aXRsZT0iJy4kdGhpcy0+TGFuZygnbmV3X3RvcGljX2xhYmVsJykuJyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiAvPicpOwoJCQkJdW5zZXQoJHJvd2FycmF5Mik7CgkJCS8vCXVuc2V0KCR2YWxldXIpOwoJCQl9CgkJCQoJCQoJCQoJCSRyb3dhcnJheVtdICA9ICRvbmVyb3c7CgkJJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7CgkJJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKCQkkc21hcnR5LT5hc3NpZ24oJ2RhdGVfY291cmFudGUnLCAkZGF0ZV9jb3VyYW50ZSk7CgkJCgl9Cn0KCiRzbWFydHktPmFzc2lnbignZm9ybTJzdGFydCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ21hc3NfYWN0aW9uJywkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtMmVuZCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRhcnRpY2xlcyA9IGFycmF5KCJBZmZpY2hlciBzdXIgbGUgc2l0ZSI9PiJkaXNwbGF5X29uX2Zyb250ZW5kIiwiTmUgcGx1cyBhZmZpY2hlciBzdXIgbGUgc2l0ZSI9PiJkb19ub3RfZGlzcGxheSIsIlN1cHByaW1lciI9PiJkZWxldGVfdGVhbV9yZXN1bHRzIik7CiRzbWFydHktPmFzc2lnbignYWN0aW9uZGVtYXNzZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdhY3Rpb25kZW1hc3NlJywkYXJ0aWNsZXMpKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRfbWFzc2FjdGlvbicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0X21hc3NhY3Rpb24nLCR0aGlzLT5MYW5nKCdhcHBseV90b19zZWxlY3Rpb24nKSwnJywnJywkdGhpcy0+TGFuZygnYXJleW91c3VyZV9hY3Rpb25tdWx0aXBsZScpKSk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgncmVzdWx0YXRzLnRwbCcpOwojCiNFT0YKIwo/PgoKCgoKCgoK]]></data>
	</file>
	<file>
	  <filename>/action.admin_recup_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19maWxlX18pLicvaW5jbHVkZS90cmF2YXV4LnBocCcpOwokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7Cgokc21hcnR5LT5hc3NpZ24oJ2lkJywgJHRoaXMtPkxhbmcoJ2lkJykpOwokc21hcnR5LT5hc3NpZ24oJ3VzZXJuYW1lJywgJ0pvdWV1cicpOwokc21hcnR5LT5hc3NpZ24oJ3BvaW50cycsICdQb2ludHMnKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJG1vaXNfY291cmFudCA9IGRhdGUoJ24nKTsKJGFubmVlX2NvdXJhbnRlID0gZGF0ZSgnWScpOwovLyRtb250aCA9IG1vaXNfZnJhbmNhaXMoIiRtb2lzX2NvdXJhbnQiKTsKLy9lY2hvICJsZSBtb2lzIGVuIGZyYW7Dp2FpcyA6ICIuJG1vbnRoOwovLyRzbWFydHktPmFzc2lnbignbW9pcy1lbi1mcmFuY2FpcycsICIkbW9udGgiKTsKJHNpdF9jb3VyYW50ZSA9ICdKdWluIDIwMTQnOwokc21hcnR5LT5hc3NpZ24oJ3NpdF9jb3VyYW50ZScsICIkc2l0X2NvdXJhbnRlIik7CiRzbWFydHktPmFzc2lnbignZGlzcGxheV91bmFibGVfcGxheWVycycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGlzcGxheV91bmFibGVfcGxheWVycycsICRyZXR1cm5pZCwgJ2xpc3RlIGRlcyBqb3VldXJzIGluYWN0aWZzJykpOwokc21hcnR5LT5hc3NpZ24oJ2F0dGVudGlvbl9pbWcnLCAnPGltZyBzcmM9Ii4uL21vZHVsZXMvUGluZy9pbWFnZXMvd2FybmluZy5naWYiIGFsdD0iJy4kdGhpcy0+TGFuZygnbWlzc2luZ19zaXRfbWVucycpLiciIHRpdGxlPSInLiR0aGlzLT5MYW5nKCdtaXNzaW5nX3NpdF9tZW5zJykuJyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiAvPicpOwoKJGRicmVzdWx0PSBhcnJheSAoKTsKLy9TRUxFQ1QgKiBGUk9NIHBpbmdfbW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyBBUyByZWMgcmlnaHQgSk9JTiBwaW5nX21vZHVsZV9waW5nX2pvdWV1cnMgQVMgaiBPTiBqLmxpY2VuY2UgPSByZWMubGljZW5jZSAgT1JERVIgQlkgai5pZCBBU0MKJHF1ZXJ5PSAiU0VMRUNUIGouaWQsIENPTkNBVF9XUygnICcsai5ub20sIGoucHJlbm9tKSBBUyBqb3VldXIsIGoubGljZW5jZSxyZWMubWFqX3NwaWQsIHJlYy5tYWpfZmZ0dCwgcmVjLnNpdF9tZW5zLCByZWMuZmZ0dCwgcmVjLnNwaWQscmVjLnNwaWRfdG90YWwsIGouYWN0aWYgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBBUyBqIExFRlQgSk9JTiAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyBBUyByZWMgT04gai5saWNlbmNlID0gcmVjLmxpY2VuY2UgV0hFUkUgai5hY3RpZiA9ICcxJyBPUkRFUiBCWSBqb3VldXIgQVNDIjsKCiRkYnJlc3VsdD0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiRyb3djbGFzcz0gJ3JvdzEnOwokcm93YXJyYXk9IGFycmF5ICgpOwppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewoJJGFjdGlmID0gJHJvd1snYWN0aWYnXTsKCSRsaWNlbmNlID0gJHJvd1snbGljZW5jZSddOwoJLy8kc2l0X21lbnMgPSBwaW5nX2FkbWluX29wczo6JHJvd1snc2l0X21lbnMnXTsKCQoJJGZmdHQgPSBwaW5nX2FkbWluX29wczo6Y29tcHRlX2ZmdHQoJGxpY2VuY2UpOwoJJHNwaWQgPSBwaW5nX2FkbWluX29wczo6Y29tcHRlX3NwaWQoJGxpY2VuY2UpOwoJJHNpdF9tZW5zID0gcGluZ19hZG1pbl9vcHM6OnNpdF9tZW5zKCRsaWNlbmNlKTsKCSRzcGlkX2Vycm9ycyA9IHBpbmdfYWRtaW5fb3BzOjpjb21wdGVfc3BpZF9lcnJvcnMoJGxpY2VuY2UpOwoJLy92YXJfZHVtcCgkc2l0X21lbnMpOwoJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7Cgkkb25lcm93LT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJJG9uZXJvdy0+aWQ9ICRyb3dbJ2lkJ107Cgkkb25lcm93LT5qb3VldXI9ICRyb3dbJ2pvdWV1ciddOwoJJG9uZXJvdy0+bGljZW5jZT0gJHJvd1snbGljZW5jZSddOwoJLy8kb25lcm93LT5hY3RpdmU9ICgkcm93WydhY3RpdmUnXSA9PSAxKSA/ICR0aGlzLT5MYW5nKCd5ZXMnKSA6ICcnOwoJJG9uZXJvdy0+c2l0X21lbnM9ICRzaXRfbWVuczsvLyRyb3dbJ3NpdF9tZW5zJ107Cgkkb25lcm93LT5mZnR0PSAkZmZ0dDsKCS8vJG9uZXJvdy0+ZmZ0dD0gJHJvd1snZmZ0dCddOwoJJG9uZXJvdy0+bWFqX2ZmdHQ9ICRyb3dbJ21hal9mZnR0J107CgkvLyRvbmVyb3ctPnNwaWQ9ICRyb3dbJ3NwaWQnXTsKCSRvbmVyb3ctPnNwaWQ9ICRzcGlkOwoJLy8kb25lcm93LT5lcnJvcl9saW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCwgJ0NvcnJpZ2VyJywgYXJyYXkoImFjdGl2ZV90YWIiPT4ic3BpZCIsInN1Ym1pdGZpbHRlciI9PiJPayIsImN1cnBsYXllciI9PiRyb3dbJ2xpY2VuY2UnXSwiZXJyb3Jfb25seSI9PiIwIikpOwoJJG9uZXJvdy0+c3BpZF9lcnJvcnMgPSAkc3BpZF9lcnJvcnM7Cgkkb25lcm93LT5zcGlkX3RvdGFsPSAkcm93WydzcGlkX3RvdGFsJ107Cgkkb25lcm93LT5tYWpfc3BpZD0gJHJvd1snbWFqX3NwaWQnXTsKCS8vJG9uZXJvdy0+ZG9lZGl0PSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0X2pvdWV1cicsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSksICRyb3cpOwoJaWYoJHJvd1snYWN0aWYnXSA9PScxJyl7CgkJJG9uZXJvdy0+ZWRpdGxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3VuYWJsZV9wbGF5ZXInLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCAkdGhpcy0+TGFuZygndW5hYmxlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJfSAKCWVsc2UgewoJCSRvbmVyb3ctPmVkaXRsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlbmFibGVfcGxheWVyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCdlbmFibGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgl9CgkKCWlmKCRyb3dbJ3NpdF9tZW5zJ10gPT0nJykKCXsKCQkkb25lcm93LT5wdXNoX3BsYXllciA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3B1c2hfcGxheWVyJywkcmV0dXJuaWQsICdSw6ljdXDDqXJlciBsZSBqb3VldXInLGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgl9CgkKCSRvbmVyb3ctPmNvcnJlY3Rpb249ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkZF9zaXRfbWVucycsICRyZXR1cm5pZCwgJ0NvcnJpZ2VyJywgIGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7CgkvLyRvbmVyb3ctPmVkaXRsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICd1bmFibGVfcGxheWVyJywgJHJldHVybmlkLCAnRMOpc2FjdGl2ZXInLGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgkkb25lcm93LT5zaXRtZW5zbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfc2l0X21lbnMnLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vaW1wb3J0LmdpZicsICR0aGlzLT5MYW5nKCdyZXRyaWV2ZV9zaXRfbWVucycpLCAnJywgJycsICdzeXN0ZW1pY29uJykpLgokdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9zaXRfbWVucycsICRyZXR1cm5pZCwgCgkgIAkkdGhpcy0+TGFuZygncmV0cmlldmVfc2l0X21lbnMnKSwgYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pLCR3YXJuX21lc3NhZ2U9J0F0dGVudGlvbiAhIEFjY8OocyBsaWJyZSA/Jyk7Cgkkb25lcm93LT5nZXRwYXJ0aWVzbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfcGFydGllcycsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9pbXBvcnQuZ2lmJywgJHRoaXMtPkxhbmcoJ3JldHJpZXZlX3BhcnRpZXMnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpKS4KJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfcGFydGllcycsICRyZXR1cm5pZCwgCgkgIAkkdGhpcy0+TGFuZygncmV0cmlldmVfcGFydGllcycpLCBhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJJG9uZXJvdy0+Z2V0cGFydGllc3NwaWQ9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3BhcnRpZXNfc3BpZCcsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9pbXBvcnQuZ2lmJywgJHRoaXMtPkxhbmcoJ3JldHJpZXZlX3BhcnRpZXNfc3BpZCcpLCAnJywgJycsICdzeXN0ZW1pY29uJykpLgokdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9wYXJ0aWVzX3NwaWQnLCAkcmV0dXJuaWQsIAoJICAJJHRoaXMtPkxhbmcoJ3JldHJpZXZlX3BhcnRpZXNfc3BpZCcpLCBhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJLy8kb25lcm93LT5kZWxldGVsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWxldGVfam91ZXVyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pLCAkdGhpcy0+TGFuZygnZGVsZXRlX3Jlc3VsdF9jb25maXJtJykpOwoJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCSRyb3dhcnJheVtdPSAkb25lcm93OwogICAgICB9CiAgfQokc21hcnR5LT5hc3NpZ24oJ2JhcmNoYXJ0cycsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYmFyY2hhcnRzJywgJHJldHVybmlkLCAnVm9pciBncmFwaGlxdWUnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKLyoKJHNtYXJ0eS0+YXNzaWduKCdyZXRyaWV2ZV91c2VycycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3VzZXJzJywgJHJldHVybmlkLCdSw6ljdXDDqXJhdGlvbiBkZSB0b3VzIGxlcyBqb3VldXJzJykpOwoqLwoKCiRzbWFydHktPmFzc2lnbignZm9ybTJzdGFydCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ21hc3NfYWN0aW9uJywkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtMmVuZCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRhcnRpY2xlcyA9IGFycmF5KCJEw6lzYWN0aXZlciI9PiJ1bmFibGUiLCJSw6ljdXDDqXJlciBzaXR1YXRpb24gbWVuc3VlbGxlIj0+InNpdHVhdGlvbiIsICJSw6ljdXDDqXJlciBsZXMgcGFydGllcyBkdSBTcGlkIj0+InNwaWQiLCAiUsOpY3Vww6lyZXIgbGVzIHBhcnRpZXMgRkZUVCI9PiJmZnR0X3BhcnRpZXMiKTsKJHNtYXJ0eS0+YXNzaWduKCdhY3Rpb25kZW1hc3NlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2FjdGlvbmRlbWFzc2UnLCRhcnRpY2xlcykpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF9tYXNzYWN0aW9uJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXRfbWFzc2FjdGlvbicsJHRoaXMtPkxhbmcoJ2FwcGx5X3RvX3NlbGVjdGlvbicpLCcnLCcnLCR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlX2FjdGlvbm11bHRpcGxlJykpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgncmVjdXBwYXJ0aWVzLnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_situation_mensuelle_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgICAgICAgICAgICAgICAgICAgTCdvbmdsZXQgZGUgbGEgc2l0dWF0aW9uIG1lbnN1ZWxsZSAgICAgICAgICAgIyMjCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyMKIyBBdXRldXIgOiBDbGF1ZGUgU0lPSEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywnUGFyYW1ldGVycycpOwokbW9pc19jb3VyYW50ID0gZGF0ZSgnbicpOy8vTW9pcyBhdSBmb3JtYXQgMSwgMiwgMyBldGMuLi4uCiRtb2lzX2ZyYW5jYWlzID0gYXJyYXkoJ0phbnZpZXInLCAnRsOpdnJpZXInLCdNYXJzJywgJ0F2cmlsJywgJ01haScsICdKdWluJywgJ0p1aWxsZXQnLCdBb8O7dCcsICdTZXB0ZW1icmUnLCAnT2N0b2JyZScsJ05vdmVtYnJlJywnRMOpY2VtYnJlJyk7CiRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKJG1vaXNfcmVlbCA9ICRtb2lzX2NvdXJhbnQgLSAxOwokbW9pc19zbSA9ICRtb2lzX2ZyYW5jYWlzWyIkbW9pc19yZWVsIl07CiRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKJGpvdXIgPSBkYXRlKCdqJyk7Cgokc2Fpc29uX2NvdXJhbnRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwovL2VjaG8gImwnYW5uw6llIGNvdXJhbnRlIGVzdCA6ICIuJGFubmVlX2NvdXJhbnRlOwoKLyogb24gZmFpdCB1biBmb3JtdWxhaXJlIGRlIGZpbHRyYWdlIGRlcyByw6lzdWx0YXRzKi8KJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdhZG1pbl9zaXR1YXRpb25fbWVuc3VlbGxlX3RhYicpKTsgCiRzYWlzb25zbGlzdFskdGhpcy0+bGFuZygnYWxsc2Vhc29ucycpXSA9Jyc7Ci8vJG1vbnRoc2xpc3RbJHRoaXMtPkxhbmcoJ2FsbG1vbnRocycpXSA9ICcnOwokbW9udGhzbGlzdCA9IGFycmF5KCJUb3VzIGxlcyBtb2lzIj0+IiIsIkp1aWxsZXQiPT4iNyIsICJBb8O7dCI9PiI4IiwgIlNlcHRlbWJyZSI9PiI5IiwgIk9jdG9icmUiPT4iMTAiLCJOb3ZlbWJyZSI9PiIxMSIsIkTDqWNlbWJyZSI9PiIxMiIsICJKYW52aWVyIj0+IjEiLCJGw6l2cmllciI9PiIyIiwiTWFycyI9PiIzIiwiQXZyaWwiPT4iNCIsIk1haSI9PiI1IiwiSnVpbiI9PiI2Iik7CiR5ZWFyc2xpc3QgPSBhcnJheSgiMjAxNCI9PiIyMDE0Iik7CiR0b3VybGlzdFskdGhpcy0+TGFuZygnYWxsdG91cnMnKV0gPSAnJzsKJGVxdWlwZWxpc3RbJHRoaXMtPkxhbmcoJ2FsbGVxdWlwZXMnKV0gPSAnJzsKJHBsYXllcnNsaXN0WyR0aGlzLT5MYW5nKCdhbGxwbGF5ZXJzJyldID0gJyc7CiR0eXBlQ29tcGV0ID0gYXJyYXkoKTsKJHR5cGVDb21wZXRbJHRoaXMtPkxhbmcoJ2FsbGNvbXBldCcpXSA9ICcnOwovKgokcXVlcnkxID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgV0hFUkUgYWN0aWYgPScxJyI7CiRkYnJlc3VsdDEgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MSk7CiRuYiA9ICRkYnJlc3VsdDEtPlJlY29yZENvdW50KCk7Ci8vZWNobyAibGUgbmIgZXN0IDoiLiRuYjsKJHF1ZXJ5MiA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyBXSEVSRSBtb2lzID0gPyBBTkQgYW5uZWUgPSA/IjsKJGRicmVzdWx0MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCBhcnJheSgkbW9pc19jb3VyYW50LCRhbm5lZV9jb3VyYW50ZSkpOwokbmIyID0gJGRicmVzdWx0Mi0+UmVjb3JkQ291bnQoKTsKLy9lY2hvICJsZSBuYjIgZXN0IDoiLiRuYjI7CmlmKCRuYiA+JG5iMikKewoJJHNtYXJ0eS0+YXNzaWduKCdhbGVydGUnLAoJCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9zaXRfbWVucycpKTsKfQoqLwokcXVlcnkgPSAiU0VMRUNUIHB0cy5pZCwgY291bnQoKikgQVMgbm9tYnJlLHB0cy5tb2lzICxqLmxpY2VuY2UsIENPTkNBVF9XUygnICcsai5ub20sIGoucHJlbm9tKSBBUyBwbGF5ZXIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2l0X21lbnMgQVMgcHRzICAsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogV0hFUkUgcHRzLmxpY2VuY2UgID0gai5saWNlbmNlIEFORCBqLmFjdGlmID0gJzEnIEFORCBwdHMuc2Fpc29uID0gPyAiOy8vCgokcXVlcnkuPSIgT1JERVIgQlkgai5ub20gQVNDLHB0cy5pZCBBU0MiOwokZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHNhaXNvbl9jb3VyYW50ZSkpOwp3aGlsZSAoJGRicmVzdWx0YXQgJiYgJHJvdyA9ICRkYnJlc3VsdGF0LT5GZXRjaFJvdygpKQogIHsKICAgIAkKICAgIAkkcGxheWVyc2xpc3RbJHJvd1sncGxheWVyJ11dID0gJHJvd1snbGljZW5jZSddOwoJLy8kbW9udGhzbGlzdFskcm93Wydtb2lzJ11dID0gJHJvd1snbW9pcyddOwoJJG5vbWJyZSA9ICRyb3dbJ25vbWJyZSddOwogICAgCQogIH0KCglpZiggaXNzZXQoJHBhcmFtc1snc3VibWl0ZmlsdGVyJ10pICkKICAJewogICAgCQlpZiggaXNzZXQoICRwYXJhbXNbJ21vbnRoc2xpc3QnXSkgKQogICAgICAJCXsKCQkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21vaXNDaG9pc2knLCAkcGFyYW1zWydtb250aHNsaXN0J10pOwogICAgICAJCX0KCQlpZiggaXNzZXQoICRwYXJhbXNbJ3BsYXllcnNsaXN0J10pICkKICAgICAgCQl7CgkJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwbGF5ZXJDaG9pc2knLCAkcGFyYW1zWydwbGF5ZXJzbGlzdCddKTsKICAgICAgCQl9Cgl9CgkKJGN1cm1vbnRoID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ21vaXNDaG9pc2knKTsKJGN1cnBsYXllciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCAncGxheWVyQ2hvaXNpJyk7CiRjdXJlcXVpcGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ2VxdWlwZUNob2lzaWUnICk7CgoKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdG91cicsCgkJJHRoaXMtPkxhbmcoJ3RvdXInKSk7Ci8qCiRzbWFydHktPmFzc2lnbignaW5wdXRfdG91cicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCd0b3VybGlzdCcsJHRvdXJsaXN0LC0xLCRjdXJ0b3VyKSk7CgkJKi8KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9tb250aCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdtb250aHNsaXN0JywkbW9udGhzbGlzdCwtMSwkY3VybW9udGgpKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZXF1aXBlJywKCQkkdGhpcy0+TGFuZygnZXF1aXBlJykpOwkKLyoJCiRzbWFydHktPmFzc2lnbignaW5wdXRfY29tcGV0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3R5cGVDb21wZXQnLCR0eXBlQ29tcGV0LC0xLCRjdXJDb21wZXQpKTsKKi8KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9wbGF5ZXInLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwncGxheWVyc2xpc3QnLCRwbGF5ZXJzbGlzdCwtMSwkY3VycGxheWVyKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0ZmlsdGVyJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXRmaWx0ZXInLCR0aGlzLT5MYW5nKCdmaWx0cmVzJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCgoKJHNtYXJ0eS0+YXNzaWduKCdpZCcsICR0aGlzLT5MYW5nKCdpZCcpKTsKJHNtYXJ0eS0+YXNzaWduKCd1c2VybmFtZScsICdKb3VldXInKTsKJHNtYXJ0eS0+YXNzaWduKCdwb2ludHMnLCAnUG9pbnRzJyk7Ci8vJGFjdGlvbiA9IChlbXB0eSgkX1BPU1RbJ2FjdGlvbiddKSkgPyAnZGVmYXVsdCcgOiAkX1BPU1RbJ2FjdGlvbiddOwoKLy8kbW9pc19wcmVmID0kdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdE1vbnRoU2l0TWVucycsICc2Jyk7CgokbW9pc19wcmVmID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRNb250aFNpdE1lbnMnKTsKLy9lY2hvICJsZSBtb2lzIHByZWYgZXN0IDogIi4kbW9pc19wcmVmOwovLyRtb2lzID0gKCFlbXB0eSgkbW9pc19wcmVmKSkgPyAkbW9pc19wcmVmIDogJG1vaXNfY291cmFudDsKLy9lY2hvICJsZSBtb2lzIHJldGVudSBlc3QgOiAiLiRtb2lzOwoKJHJlc3VsdD0gYXJyYXkgKCk7CiRxdWVyeTIgPSAiU0VMRUNUICosIHNtLnNhaXNvbiwgc20uaWQsai5saWNlbmNlLHNtLmlkLHNtLm1vaXMsc20ucG9pbnRzLCBzbS5hbm5lZSwgQ09OQ0FUX1dTKCcgJywgai5ub20sIGoucHJlbm9tKSBBUyBqb3VldXIsIHNtLnByb2dtb2lzLCBzbS5jbG5hdCwgc20ucmFuZ3JlZywgc20ucmFuZ2RlcCAgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBBUyBqIExFRlQgSk9JTiAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2l0X21lbnMgQVMgc20gT04gai5saWNlbmNlID0gc20ubGljZW5jZSBXSEVSRSBqLmFjdGlmID0gJzEnICI7Ly9BTkQgKHNtLmFubmVlID0gPyBPUiBzbS5hbm5lZSBJUyBOVUxMKSAiOwovL0V2aXRlciBkZSBtZXR0cmUgZGVzIHNpdHVhdGlvbnMgbWVuc3VlbGxlcyBkZXMgYW5uw6llcyBwYXNzw6llcwovLyRwYXJtc1snYW5uZWUnXSA9ICRhbm5lZV9jb3VyYW50ZTsKLy9lY2hvICRxdWVyeTsKCglpZiggaXNzZXQoJHBhcmFtc1snc3VibWl0ZmlsdGVyJ10gKSkKCXsKCQoJCWlmKCRjdXJtb250aCAhPScnKQoJCXsKCQkJCgkJCQkkcXVlcnkyIC49IiBBTkQgc20ubW9pcyA9ID8gICAiOwoJCQkJJHBhcm1zWydtb2lzJ10gPSAkY3VybW9udGg7CgkJCQkKCQkJCgkJCQoJCQkKCQl9CgkKCQlpZiAoJGN1cnBsYXllciAhPScnKQoJCXsKCQkJJHF1ZXJ5MiAuPSIgQU5EIGoubGljZW5jZSA9ID8iOwoJCQkkcGFybXNbJ2xpY2VuY2UnXSA9ICRjdXJwbGF5ZXI7CgkJCgkJfQoJCQoJCS8vJHF1ZXJ5MiAuPSIgT1JERVIgQlkgam91ZXVyIEFTQyI7CgkJCgkKCX0KCQoJCiRxdWVyeTIuPSIgIEFORCBzbS5zYWlzb24gPSA/IE9SREVSIEJZIGpvdWV1ciBBU0Msc20uaWQgQVNDIjsKJHBhcm1zWydzYWlzb24nXSA9ICRzYWlzb25fY291cmFudGU7CgokZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCRwYXJtcyk7Ci8vZWNobyAkcXVlcnkyOwoKCS8qCglpZiAoISRkYnJlc3VsdCkKCXsKCgkJZWNobyAiRkFUQUwgU1FMIEVSUk9SOiAiLiRkYi0+RXJyb3JNc2coKS4iPGJyLz5RVUVSWTI6ICIuJGRiLT5zcWw7CgkJZWNobyAicGIgcmVxICEiOwoJCSRkZXNpZ25hdGlvbiA9ICRkYi0+RXJyb3JNc2coKTsKCQllY2hvICIkZGVzaWduYXRpb24iOwoKCX0KCSovCgoKJHJvd2NsYXNzPSAncm93MSc7CiRyb3dhcnJheT0gYXJyYXkgKCk7CgoJaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQogIAl7CiAgICAJCXdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIAkJewoJCQkkb25lcm93PSBuZXcgU3RkQ2xhc3MoKTsKCQkJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCQkJJG9uZXJvdy0+aWQ9ICRyb3dbJ2lkJ107CgkJCSRvbmVyb3ctPmxpY2VuY2U9ICRyb3dbJ2xpY2VuY2UnXTsKCQkJJG9uZXJvdy0+bW9pcz0gJHJvd1snbW9pcyddOwoJCQkkb25lcm93LT5hbm5lZT0gJHJvd1snYW5uZWUnXTsKCQkJJG9uZXJvdy0+cG9pbnRzPSAkcm93Wydwb2ludHMnXTsKCQkJJG9uZXJvdy0+Y2xuYXQ9ICRyb3dbJ2NsbmF0J107CgkJCSRvbmVyb3ctPnJhbmdyZWc9ICRyb3dbJ3JhbmdyZWcnXTsKCQkJJG9uZXJvdy0+cmFuZ2RlcD0gJHJvd1sncmFuZ2RlcCddOwoJCQkkb25lcm93LT5wcm9nbW9pcz0gJHJvd1sncHJvZ21vaXMnXTsKCQkJLy8kb25lcm93LT5lcXVpcGU9ICR0aGlzLT5jcmVhdGVMaW5rKCRpZCwgJ3ZpZXdzdGVhbXJlc3VsdCcsICRyZXR1cm5pZCwgJHJvd1snZXF1aXBlJ10sYXJyYXkoJ2VxdWlwZSc9PiRyb3dbJ2VxdWlwZSddKSwkcm93KSA7CgkJCSRvbmVyb3ctPmpvdWV1cj0gJHJvd1snam91ZXVyJ107CgkJCSRvbmVyb3ctPmVkaXRsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRfc2l0X21lbnMnLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vaW1wb3J0LmdpZicsICR0aGlzLT5MYW5nKCdhZGQtbWFudWFsbHknKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7CgkJCSRvbmVyb3ctPnNpdG1lbnNsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9zaXRfbWVucycsICRyZXR1cm5pZCwgJ1NpdHVhdGlvbiBtZW5zdWVsbGUnLCBhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJCQkkb25lcm93LT5nZXRwYXJ0aWVzbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfcGFydGllcycsICRyZXR1cm5pZCwgJ1BhcnRpZXMgZGlzcHV0w6llcycsIGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7CgkJCWlmKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgRGVsZXRlJykpCgkJCXsKCQkJCSRvbmVyb3ctPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZScsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCJ0eXBlX2NvbXBldCI9PiJzaXRfbWVucyIsICdyZWNvcmRfaWQnPT4kcm93WydpZCddKSwgJHRoaXMtPkxhbmcoJ2RlbGV0ZV9jb25maXJtJykpOwoJCQl9CgkJCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzPSAicm93MiIgOiAkcm93Y2xhc3M9ICJyb3cxIik7CgkJCSRyb3dhcnJheVtdPSAkb25lcm93OwogICAgICAJCX0KICAJfQokc21hcnR5LT5hc3NpZ24oJ2pvdXInLCRqb3VyKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Jlc3VsdHNmb3VuZHRleHQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwokc21hcnR5LT5hc3NpZ24oJ2FkZGFsbHNpdG1lbnNsaW5rJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2FkZF9hbGxfc2l0X21lbnMnLCAkcmV0dXJuaWQsICdBam91dGVyIG1hbnVlbGxlbWVudCBsZXMgc2l0dWF0aW9ucyBtZW5zdWVsbGVzJykpOwokc21hcnR5LT5hc3NpZ24oJ3JldHJpZXZlYWxsc2l0bWVucycsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdyZXRyaWV2ZV9hbGxfc2l0X21lbnMnLCAkcmV0dXJuaWQsICRjb250ZW50cz0nQWpvdXRlciBhdXRvbWF0aXF1ZW1lbnQgbGVzIHNpdHVhdGlvbnMgbWVuc3VlbGxlcycsJycgLCR3YXJuX21lc3NhZ2U9J0F0dGVudGlvbiwgY2Ugc2NyaXB0IHBldXQtw6p0cmUgbG9uZyBNZXJjaSBkZSBwYXRpZW50ZXInKSk7CiRzbWFydHktPmFzc2lnbignbWlzc2luZ19zaXRfbWVucycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ21pc3Npbmdfc2l0X21lbnMnLCAkcmV0dXJuaWQsICdMZXMgc2l0dWF0aW9ucyBtYW5xdWFudGVzJykpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm0yc3RhcnQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdtYXNzX2FjdGlvbicsJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbignZm9ybTJlbmQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokYXJ0aWNsZXMgPSBhcnJheSgiRMOpc2FjdGl2ZXIiPT4idW5hYmxlIiwiUsOpY3Vww6lyZXIgc2l0dWF0aW9uIG1lbnN1ZWxsZSI9PiJzaXR1YXRpb24iKTsKJHNtYXJ0eS0+YXNzaWduKCdhY3Rpb25kZW1hc3NlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2FjdGlvbmRlbWFzc2UnLCRhcnRpY2xlcykpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF9tYXNzYWN0aW9uJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXRfbWFzc2FjdGlvbicsJHRoaXMtPkxhbmcoJ2FwcGx5X3RvX3NlbGVjdGlvbicpLCcnLCcnLCR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlX2FjdGlvbm11bHRpcGxlJykpKTsKCQkJCSAgCgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FsbHNpdG1lbnMudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_spid_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICAgICAgICAgICAgICBTUElEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmNhbGN1bHMucGhwJyk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CgokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7CiRtb2lzX2NvdXJhbnQgPSBkYXRlKCduJyk7Ci8qIG9uIGZhaXQgdW4gZm9ybXVsYWlyZSBkZSBmaWx0cmFnZSBkZXMgcsOpc3VsdGF0cyovCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnZGVmYXVsdGFkbWluJywnJywgJ3Bvc3QnLCAnJyxmYWxzZSwnJyxhcnJheSgnYWN0aXZlX3RhYic9PidzcGlkJykpKTsKLy8kc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX3NwaWRfdGFiJykpOwokZXJyb3Jfb25seSA9ICcnOwokZGF0ZUxpc3QgPSBhcnJheSgpOwokZGF0ZUxpc3QgPSBhcnJheSgiVG91cyBsZXMgbW9pcyI9PiIiLCJTZXB0ZW1icmUiPT4iOSIsIk9jdG9icmUiPT4iMTAiLCJOb3ZlbWJyZSI9PiIxMSIsICJEw6ljZW1icmUiPT4iMTIiLCJKYW52aWVyIj0+IjEiLCJGw6l2cmllciI9PiIyIiwiTWFycyI9PiIzIiwiQXZyaWwiPT4iNCIsIk1haSI9PjUsIkp1aW4iPT4iNiIpOwovLyRkYXRlbGlzdFskdGhpcy0+TGFuZygnYWxsdG91cnMnKV0gPSAnJzsKLy8kZGF0ZWxpc3RbXQokZXF1aXBlbGlzdFskdGhpcy0+TGFuZygnYWxsZXF1aXBlcycpXSA9ICcnOwokcGxheWVyc2xpc3RbJHRoaXMtPkxhbmcoJ2FsbHBsYXllcnMnKV0gPSAnJzsKJHR5cGVDb21wZXQgPSBhcnJheSgpOwokdHlwZUNvbXBldFskdGhpcy0+TGFuZygnYWxsY29tcGV0JyldID0gJyc7CiRxdWVyeSA9ICJTRUxFQ1QgcHRzLmVwcmV1dmUsIHB0cy5kYXRlX2V2ZW50LCBqLmxpY2VuY2UscHRzLm51bWpvdXJuICwgQ09OQ0FUX1dTKCcgJyxqLm5vbSwgai5wcmVub20pIEFTIHBsYXllciBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgQVMgcHRzICAsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogV0hFUkUgcHRzLmxpY2VuY2UgID0gai5saWNlbmNlIEFORCBwdHMuc2Fpc29uID0gPyBPUkRFUiBCWSBwdHMuZGF0ZV9ldmVudCBBU0MscGxheWVyIEFTQywgcHRzLm51bWpvdXJuIEFTQyI7Ly8iIjsKLy9lY2hvICRxdWVyeTsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHNhaXNvbikpOwp3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgewogICAgCS8vJGRhdGVsaXN0WyRyb3dbJ2RhdGVfZXZlbnQnXV0gPSAkcm93WydkYXRlX2V2ZW50J107CiAgICAJJHBsYXllcnNsaXN0WyRyb3dbJ3BsYXllciddXSA9ICRyb3dbJ2xpY2VuY2UnXTsKCSR0eXBlQ29tcGV0WyRyb3dbJ2VwcmV1dmUnXV0gPSAkcm93WydlcHJldXZlJ107CiAgfQoKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdG91cicsCgkJJHRoaXMtPkxhbmcoJ3RvdXInKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfZGF0ZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdkYXRlTGlzdCcsJGRhdGVMaXN0LC0xLCghZW1wdHkoJHBhcmFtc1snZGF0ZUxpc3QnXSk/JHBhcmFtc1snZGF0ZUxpc3QnXToiIikpKTsJCQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2NvbXBldCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCd0eXBlQ29tcGV0JywkdHlwZUNvbXBldCwtMSwoIWVtcHR5KCRwYXJhbXNbJ3R5cGVDb21wZXQnXSk/JHBhcmFtc1sndHlwZUNvbXBldCddOiIiKSkpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3BsYXllcicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdwbGF5ZXJzbGlzdCcsJHBsYXllcnNsaXN0LC0xLCRjdXJwbGF5ZXIpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9lcnJvcl9vbmx5JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ2Vycm9yX29ubHknLDEsMCkpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdGZpbHRlcicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0ZmlsdGVyJywkdGhpcy0+TGFuZygnZmlsdHJlcycpKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgokcmVzdWx0PSBhcnJheSAoKTsKJHBhcm1zID0gYXJyYXkoKTsKJHF1ZXJ5MiA9ICJTRUxFQ1Qgc3AuaWQgYXMgcmVjb3JkX2lkLENPTkNBVF9XUygnICcsai5ub20sIGoucHJlbm9tKSBBUyBqb3VldXIsIHNwLmRhdGVfZXZlbnQsIHNwLmVwcmV1dmUsIHNwLm5vbSBBUyBuYW1lLCBzcC5jbGFzc2VtZW50LHNwLnN0YXR1dCwgc3AudmljdG9pcmUsIHNwLmVjYXJ0LCBzcC5jb2VmZiwgc3AucG9pbnRyZXMsIHNwLmZvcmZhaXQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBBUyBqLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIEFTIHNwICBXSEVSRSBqLmxpY2VuY2UgPSBzcC5saWNlbmNlIEFORCBzcC5zYWlzb24gPSA/ICI7Ly8iICBHUk9VUCBCWSBqb3VldXIsdHlwZV9jb21wZXQgT1JERVIgQlkgam91ZXVyLHR5cGVfY29tcGV0IjsKCiRwYXJtc1snc2Fpc29uJ10gPSAkc2Fpc29uOwoKaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdGZpbHRlciddICkpCnsKCWlmIChpc3NldCggJHBhcmFtc1snZGF0ZUxpc3QnXSkgJiYgJHBhcmFtc1snZGF0ZUxpc3QnXSAhPScnKQoJewoJCSRxdWVyeTIuPSIgQU5EIE1PTlRIKHNwLmRhdGVfZXZlbnQpID0gPyAiOwoJCSRwYXJtc1snZGF0ZV9ldmVudCddID0gJHBhcmFtc1snZGF0ZUxpc3QnXTsKCQkKCX0KCglpZiAoJGN1cnBsYXllciAhPScnKQoJewoJCSRxdWVyeTIuPSIgQU5EIHNwLmxpY2VuY2UgPSA/IjsKCQkkcGFybXNbJ2xpY2VuY2UnXSA9ICRjdXJwbGF5ZXI7CgkJCgl9CglpZiggaXNzZXQoICRwYXJhbXNbJ3R5cGVDb21wZXQnXSkgJiYgJHBhcmFtc1sndHlwZUNvbXBldCddICE9JycgKQoJeyAKCQkvLyR0aGlzLT5TZXRQcmVmZXJlbmNlICggJ2NvbXBldENob2lzaWUnLCAkcGFyYW1zWyd0eXBlQ29tcGV0J10pOwoJCSRxdWVyeTIuPSIgQU5EIHNwLmVwcmV1dmUgTElLRSA/IjsKCQkkcGFybXNbJ2VwcmV1dmUnXSA9ICRwYXJhbXNbJ3R5cGVDb21wZXQnXTsKCX0KCQoJaWYoaXNzZXQoJHBhcmFtc1snZXJyb3Jfb25seSddKSAmJiAkcGFyYW1zWydlcnJvcl9vbmx5J10gIT0nJykKCXsKCQkkcXVlcnkyLj0iIEFORCBzcC5jbGFzc2VtZW50ID0gLXNwLmVjYXJ0IE9SIHNwLnN0YXR1dCA9ICcwJyI7Cgl9CgkkcXVlcnkyLj0iIE9SREVSIEJZIGpvdWV1ciBBU0MsIHNwLmRhdGVfZXZlbnQgQVNDIjsKfQplbHNlCnsKCSRxdWVyeTIuPSIgQU5EIE1PTlRIKHNwLmRhdGVfZXZlbnQpID0gJG1vaXNfY291cmFudCAiOwoJJHF1ZXJ5Mi49IiBPUkRFUiBCWSBqb3VldXIgQVNDLCBzcC5kYXRlX2V2ZW50IEFTQyI7Cn0KCgoKCgoKJGRicmVzdWx0Mj0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsICRwYXJtcyk7Ci8vZWNobyAkcXVlcnkyOwokcm93Y2xhc3M9ICdyb3cxJzsKJHJvd2FycmF5PSBhcnJheSAoKTsKaWYgKCRkYnJlc3VsdDIgJiYgJGRicmVzdWx0Mi0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdDItPkZldGNoUm93KCkpCiAgICAgIHsKCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCSRvbmVyb3ctPnN0YXR1dD0gJHJvd1snc3RhdHV0J107Cgkkb25lcm93LT5yZWNvcmRfaWQ9ICRyb3dbJ3JlY29yZF9pZCddOwoJJG9uZXJvdy0+am91ZXVyPSAkcm93Wydqb3VldXInXTsvLyR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3ZpZXdfdXNlcl9yZXN1bHRzJywgJHJldHVybmlkLCAkcm93Wydqb3VldXInXSxhcnJheSgnam91ZXVyJz0+JHJvd1snam91ZXVyJ10pLCRyb3cpIDsKCSRvbmVyb3ctPmRhdGVfZXZlbnQ9ICRyb3dbJ2RhdGVfZXZlbnQnXTsKCSRvbmVyb3ctPmVwcmV1dmU9ICRyb3dbJ2VwcmV1dmUnXTsKCSRvbmVyb3ctPm5hbWU9ICRyb3dbJ25hbWUnXTsKCSRvbmVyb3ctPmNsYXNzZW1lbnQ9ICRyb3dbJ2NsYXNzZW1lbnQnXTsKCSRvbmVyb3ctPnZpY3RvaXJlPSAkcm93Wyd2aWN0b2lyZSddOwoJJG9uZXJvdy0+ZWNhcnQ9ICRyb3dbJ2VjYXJ0J107Cgkkb25lcm93LT5jb2VmZj0gJHJvd1snY29lZmYnXTsKCSRvbmVyb3ctPnBvaW50cmVzPSAkcm93Wydwb2ludHJlcyddOwoJJG9uZXJvdy0+Zm9yZmFpdD0gJHJvd1snZm9yZmFpdCddOwoJJG9uZXJvdy0+ZWRpdGxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRfcGxheWVyX3Jlc3VsdHMnLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydyZWNvcmRfaWQnXSkpOwoJLy8kb25lcm93LT5kdXBsaWNhdGVsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkb19lZGl0X3Jlc3VsdCcsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9jb3B5LmdpZicsICR0aGlzLT5MYW5nKCdkdXBsaWNhdGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1sncmVjb3JkX2lkJ10sICdkdXBsaWNhdGUnPT4nMScpKTsKCQoJaWYoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBEZWxldGUnKSkKCXsKCQkkb25lcm93LT5kZWxldGVsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWxldGUnLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1sncmVjb3JkX2lkJ10sICJ0eXBlX2NvbXBldCI9PiJzcGlkIiksICR0aGlzLT5MYW5nKCdkZWxldGVfY29uZmlybScpKTsKCX0KCQoJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCSRyb3dhcnJheVtdPSAkb25lcm93OwogICAgICB9CiAgfQovKiovCgokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7Cgokc21hcnR5LT5hc3NpZ24oJ2Zvcm0yc3RhcnQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdtYXNzX2FjdGlvbicsJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbignZm9ybTJlbmQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokYXJ0aWNsZXMgPSBhcnJheSgiTWV0dHJlIGxlIENvZWZmIMOgIDAsNSI9PiJjb2VmZjA1IiwiTWV0dHJlIGxlIENvZWZmIMOgIDAsNzUiPT4iY29lZmYwNzUiLCJNZXR0cmUgbGUgQ29lZmYgw6AgMSI9PiJjb2VmZjEiLCJNZXR0cmUgbGUgQ29lZmYgw6AgMSwyNSI9PiJjb2VmZjEyNSIsIk1ldHRyZSBsZSBDb2VmZiDDoCAxLDUiPT4iY29lZmYxNSIsICJSw6ljdXDDqXJlciBzaXR1YXRpb24gbWVuc3VlbGxlIj0+InNpdHVhdGlvbiIsIlN1cHByaW1lciI9PiJzdXBwX3NwaWQiKTsKCiRzbWFydHktPmFzc2lnbignYWN0aW9uZGVtYXNzZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdhY3Rpb25kZW1hc3NlJywkYXJ0aWNsZXMpKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRfbWFzc2FjdGlvbicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0X21hc3NhY3Rpb24nLCR0aGlzLT5MYW5nKCdhcHBseV90b19zZWxlY3Rpb24nKSwnJywnJywkdGhpcy0+TGFuZygnYXJleW91c3VyZV9hY3Rpb25tdWx0aXBsZScpKSk7CgoJCQkKLy9mYWlyZSBhcHBhcmFpdHJlIGxlcyBwb2ludHMgdG90YXV4IGV0IHNvbW1lIHZpY3RvaXJlIGVuIGJhcyA/IENlIHNlcmFpdCBwYXMgbWFsCi8qKi8KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdzcGlkLnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_teams2.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKICAgaWYgKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsgCglpZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgVXNlJykpCgl7CgkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CgkJcmV0dXJuOwoJfQoJCgovL29uIGluc3RhbmNpZSBsZXMgb25nbGV0cwoKICBlY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0OyB3aWR0aDogODAlOyI+JzsKICBlY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQsJzw9IE1lbnUgcHJpbmNpcGFsJyxhcnJheSgiYWN0aXZlX3RhYiI9PiJjb21wZXRzIikpOwogIGVjaG8gJzwvZGl2Pic7CgplY2hvICR0aGlzLT5TdGFydFRhYmhlYWRlcnMoKTsKaWYgKEZBTFNFID09IGVtcHR5KCRwYXJhbXNbJ2FjdGl2ZV90YWInXSkpCiAgewogICAgJHRhYiA9ICRwYXJhbXNbJ2FjdGl2ZV90YWInXTsKICB9IGVsc2UgewogICR0YWIgPSAnZGl2aXNpb25zJzsKIH0JCgkvL2VjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignZXF1aXBlcycsICdFcXVpcGVzJywgKCdlcXVpcGVzJyA9PSAkdGFiKT90cnVlOmZhbHNlKTsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignY2FsZW5kcmllcicsICdDYWxlbmRyaWVyIGV0IHLDqXN1bHRhdHMnLCAoJ2NhbGVuZHJpZXInID09ICR0YWIpP3RydWU6ZmFsc2UpOwoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdjbGFzc2VtZW50JywgJ0NsYXNzZW1lbnQnICwgKCdjbGFzc2VtZW50JyA9PSAkdGFiKT90cnVlOmZhbHNlKTsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigncGFydGllcycsICdQYXJ0aWVzJyAsICgncGFydGllcycgPT0gJHRhYik/dHJ1ZTpmYWxzZSk7CgplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7CgplY2hvICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKTsKCS8qCgllY2hvICR0aGlzLT5TdGFydFRhYignZXF1aXBlcycsICRwYXJhbXMpOwogICAgCWluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9hY3Rpb24uYWRtaW5fdGVhbXNfdGFiLnBocCcpOwogICAJZWNobyAkdGhpcy0+RW5kVGFiKCk7CgkqLwoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2NhbGVuZHJpZXInICwgJHBhcmFtcyk7Ly9sZXMgw6lxdWlwZXMKICAgIAlpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvYWN0aW9uLmFkbWluX3BvdWxlc190YWIzLnBocCcpOwogICAJZWNobyAkdGhpcy0+RW5kVGFiKCk7CgoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2NsYXNzZW1lbnQnLCAkcGFyYW1zKTsvL0RpdiBwYXJ0aWVzCiAgICAJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2FjdGlvbi5hZG1pbl9jbGFzc2VtZW50LnBocCcpOwogICAJZWNobyAkdGhpcy0+RW5kVGFiKCk7CgogICAgICAgIAoKCmVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.admin_teams_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgVXNlJykpCnsKCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJykpOwoJcmV0dXJuOwp9CgpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3ByZWZzLnBocCcpOwokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwokc2Fpc29uX2NvdXJhbnRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwokcGhhc2VfY291cmFudGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKTsKCiRwaGFzZSA9IChpc3NldCgkcGFyYW1zWydwaGFzZSddKSk/JHBhcmFtc1sncGhhc2UnXTokcGhhc2VfY291cmFudGU7Cgokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2RlZmF1bHRhZG1pbicsJycsICdwb3N0JywgJycsZmFsc2UsJycsYXJyYXkoJ2FjdGl2ZV90YWInPT4nZXF1aXBlcycpKSk7CgokdHlwZUNvbXBldCA9IGFycmF5KCk7CiR0eXBlQ29tcGV0WyR0aGlzLT5MYW5nKCdhbGxjb21wZXQnKV0gPSAnJzsKJHF1ZXJ5MSA9ICJTRUxFQ1QgRElTVElOQ1QgdGMubmFtZSx0Yy5pZGVwcmV1dmUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgQVMgdGMsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIEFTIGVxIFdIRVJFIHRjLmlkZXByZXV2ZSA9IGVxLmlkZXByZXV2ZSBBTkQgZXEuc2Fpc29uID0gPyI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkxLCBhcnJheSgkc2Fpc29uKSk7CndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICB7CiAgICAKICAgICR0eXBlQ29tcGV0WyRyb3dbJ25hbWUnXV0gPSAkcm93WydpZGVwcmV1dmUnXTsKICB9CgoJaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdGZpbHRlciddKSApCiAgCXsKICAgIAkKICAgIAkJaWYoIGlzc2V0KCAkcGFyYW1zWyd0eXBlQ29tcGV0J10pICkKCQl7IAoJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSAoICdjb21wZXRDaG9pc2llJywgJHBhcmFtc1sndHlwZUNvbXBldCddKTsKCQl9CgkJaWYoaXNzZXQgKCRwYXJhbXNbJ2N1cnBoYXNlJ10pKQoJCXsKCQkJJGN1cnBoYXNlID0gJHBhcmFtc1snY3VycGhhc2UnXTsKCQl9Cgl9CgokbGlzdHBoYXNlID0gYXJyYXkoIjEiPT4iMSIsICIyIj0+IjIiKTsKJGN1ckNvbXBldCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCAnY29tcGV0Q2hvaXNpZScpOwoKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jb21wZXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwndHlwZUNvbXBldCcsJHR5cGVDb21wZXQsLTEsJGN1ckNvbXBldCkpOwokc21hcnR5LT5hc3NpZ24oJ2N1cnBoYXNlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2N1cnBoYXNlJywkbGlzdHBoYXNlLC0xLCRjdXJwaGFzZSkpOwoKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRmaWx0ZXInLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdGZpbHRlcicsJHRoaXMtPkxhbmcoJ2ZpbHRyZXMnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokcGFybXMgPSBhcnJheSgpOwokcmVzdWx0PSBhcnJheSAoKTsKJHF1ZXJ5ID0gIlNFTEVDVCBESVNUSU5DVCAqLCBlcS5pZCBBUyBlcV9pZCwgIGVxLnRhZyBhcyB0YWdfZXF1aXBlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgQVMgZXEgV0hFUkUgZXEuc2Fpc29uID0gPyI7CiRwYXJtc1snc2Fpc29uJ10gPSAkc2Fpc29uOwoKCWlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXRmaWx0ZXInXSApKXsKCgoJCWlmICgkY3VyQ29tcGV0ICE9JycpCgkJewoJCQkkcXVlcnkuPSIgQU5EIGlkZXByZXV2ZSA9ID8iOwoJCQkkcGFybXNbJ2lkZXByZXV2ZSddID0gJGN1ckNvbXBldDsKCQl9CgkJCQoJCWlmICgkY3VycGhhc2UgIT0gJycpCgkJewoJCQkkcXVlcnkuPSIgQU5EIHBoYXNlID0gPyI7CgkJCSRwYXJtc1snY3VycGhhc2UnXSA9ICRjdXJwaGFzZTsKCQl9CgkJCgoJCS8vJHF1ZXJ5Lj0iIE9SREVSIEJZIGpvdWV1cixwdHMuZGF0ZV9ldmVudCBBU0MiOwoJfQoJZWxzZQoJewoJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwaGFzZV9lbl9jb3VycycpID09JzEnICkKCQl7CgkJCWlmKCRwaGFzZSA9PTIpCgkJCXsKCQkJCSRxdWVyeS49ICIgQU5EIGVxLnBoYXNlPTIiOyAKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRxdWVyeS49ICIgQU5EIGVxLnBoYXNlPTEiOyAgLy8vL0JFVFdFRU4gTk9XKCkgQU5EIChOT1coKSArIElOVEVSVkFMIDcgREFZKSI7CgkJCX0KCQl9CgkJZWxzZWlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKSA9PSAnMicpCgkJewoJCQlpZigkcGhhc2UgPT0xKQoJCQl7CgkJCQkkcXVlcnkuPSAiIEFORCBlcS5waGFzZT0xIjsgIC8vLy9CRVRXRUVOIE5PVygpIEFORCAoTk9XKCkgKyBJTlRFUlZBTCA3IERBWSkiOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHF1ZXJ5Lj0gIiBBTkQgZXEucGhhc2U9MiI7ICAvLy8vQkVUV0VFTiBOT1coKSBBTkQgKE5PVygpICsgSU5URVJWQUwgNyBEQVkpIjsJCgkJCX0KCQl9Ly8kcXVlcnkuPSIgT1JERVIgQlkgam91ZXVyLHB0cy5kYXRlX2V2ZW50IEFTQyBMSU1JVCAxMDAiOwoKCX0KCQovL2VjaG8gJHF1ZXJ5OwokZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnksJHBhcm1zKTsKCgoKCQkKCgkvL2VjaG8gJHF1ZXJ5OwoJLy8kZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHNhaXNvbl9jb3VyYW50ZSwkaWRlcHJldXZlKSk7CgkkY2FsZW5kYXJJbWFnZSA9ICI8aW1nIHRpdGxlPVwiUsOpY3Vww6lyZXIgbGUgY2FsZW5kcmllclwiIHNyYz1cInskbW9kdWxlX2Rpcn0vaW1hZ2VzL2NhbGVuZHJpZXIuanBnXCIgY2xhc3M9XCJzeXN0ZW1pY29uXCIgYWx0PVwiUsOpY3Vww6lyZXIgbGUgY2FsZW5kcmllclwiIC8+IjsKCSRwb2RpdW1JbWFnZSA9ICI8aW1nIHRpdGxlPVwiUsOpY3Vww6lyZXIgbGUgY2xhc3NlbWVudCBkZSBsYSBwb3VsZVwiIHNyYz1cInskbW9kdWxlX2Rpcn0vaW1hZ2VzL3BvZGl1bS5qcGdcIiBjbGFzcz1cInN5c3RlbWljb25cIiB3aWR0aD1cIjE2XCIgaGVpZ2h0ID1cIjEyXCIgYWx0PVwiUsOpY3Vww6lyZXIgbGUgY2xhc3NlbWVudFwiIC8+IjsKCS8vZWNobyAkcXVlcnk7Cgkkcm93YXJyYXk9IGFycmF5KCk7Cgkkcm93YXJyYXkyPSBhcnJheSgpOwoJJHJvd2NsYXNzID0gJyc7CgkkYXJyYXlfY2hwdCA9IGFycmF5KCk7CgoJCWlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKICAJCXsKICAgIAkJCXdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIAkJCXsKCQkJCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJCQkJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCgkJCQkkaWRlcHJldXZlID0gJHJvd1snaWRlcHJldXZlJ107CgkJCQkkb25lcm93LT5lcV9pZD0gJHJvd1snZXFfaWQnXTsKCQkJCSRvbmVyb3ctPmlkcG91bGUgPSAkcm93WydpZHBvdWxlJ107CgkJCQkkb25lcm93LT5pZGRpdiA9ICRyb3dbJ2lkZGl2J107CgkJCQkvLyRvbmVyb3ctPmVxdWlwZT0gJHJvd1snZXF1aXBlJ107CgkJCQkkb25lcm93LT5saWJlcXVpcGU9ICAkcm93WydsaWJlcXVpcGUnXTsKCQkJCSRvbmVyb3ctPmxpYmRpdmlzaW9uPSAkcm93WydsaWJkaXZpc2lvbiddOwoJCQkJJG9uZXJvdy0+ZnJpZW5kbHluYW1lPSAkcm93WydmcmllbmRseW5hbWUnXTsKCQkJCS8vJG9uZXJvdy0+bmFtZT0gJHJvd1snbmFtZSddOwoJCQkJJG9uZXJvdy0+aWRlcHJldXZlID0gJHJvd1snaWRlcHJldXZlJ107CgkJCQkkb25lcm93LT50YWcgPSAkcm93Wyd0YWdfZXF1aXBlJ107CgkJCQkkb25lcm93LT52aWV3PSAkdGhpcy0+Y3JlYXRlTGluaygkaWQsICdhZG1pbl9wb3VsZXNfdGFiMycsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS92aWV3LmdpZicsICR0aGlzLT5MYW5nKCd2aWV3X3Jlc3VsdHMnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdhY3RpdmVfdGFiJz0+J2VxdWlwZXMnLCdsaWJlcXVpcGUnPT4kcm93WydsaWJlcXVpcGUnXSwicmVjb3JkX2lkIj0+JHJvd1snZXFfaWQnXSwiaWRlcHJldXZlIj0+JHJvd1snaWRlcHJldXZlJ10pKSA7CgoJCQkJJG9uZXJvdy0+ZWRpdGxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRfdGVhbScsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2VxX2lkJ10pKTsKCQkJCSRvbmVyb3ctPmFkZG5ld2xpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0X3RlYW0nLCRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJHRoaXMtPkxhbmcoJ2FkZG1hbnVhbGx5JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2VxX2lkJ10pKTsKCgkJCQlpZighaXNfbnVsbCgkaWRlcHJldXZlKSkKCQkJCXsKCQkJCQkvLyRjYWxlbmRyaWVyaW1hZ2UgPSAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2NhbGVuZHJpZXIuanBnJywgJHRoaXMtPkxhbmcoJ2Rvd25sb2FkX3BvdWxlX3Jlc3VsdHMnKSwnJywnJywnc3lzdGVtaWNvbicpOwoJCQkJCSRvbmVyb3ctPnJldHJpZXZlX3BvdWxlX3JlbmNvbnRyZXM9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3BvdWxlX3JlbmNvbnRyZXMnLCRyZXR1cm5pZCwkY2FsZW5kYXJJbWFnZSwgYXJyYXkoJ2lkcG91bGUnPT4kcm93WydpZHBvdWxlJ10sICdpZGRpdic9PiRyb3dbJ2lkZGl2J10sICdpZGVwcmV1dmUnPT4kcm93WydpZGVwcmV1dmUnXSkpOwoJCQkJCSRvbmVyb3ctPmNsYXNzZW1lbnQgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdnZXRQb3VsZUNsYXNzZW1lbnQnLCRyZXR1cm5pZCwkcG9kaXVtSW1hZ2UsIGFycmF5KCJpZGRpdiI9PiRyb3dbJ2lkZGl2J10sICJpZHBvdWxlIj0+JHJvd1snaWRwb3VsZSddLCAicmVjb3JkX2lkIj0+JHJvd1snZXFfaWQnXSwgImlkZXByZXV2ZSI9PiRyb3dbJ2lkZXByZXV2ZSddKSk7CgoJCQkJCSRvbmVyb3cyPSBuZXcgU3RkQ2xhc3MoKTsKCQkJCQkkb25lcm93Mi0+cm93Y2xhc3M9ICRyb3djbGFzczsKCQkJCQkvKgoJCQkJCWlmKCFpbl9hcnJheSgkaWRlcHJldXZlLCAkYXJyYXlfY2hwdCkpCgoJCQkJCXsKCQkJCQkJYXJyYXlfcHVzaCgkYXJyYXlfY2hwdCwkaWRlcHJldXZlKTsKCQkJCQkJJG9uZXJvdzItPmxpbmtzX2NocHQgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9wb3VsZV9yZW5jb250cmVzJywgJHJldHVybmlkLCRjb250ZW50cz0nUsOpY3Vww6lyZXIgbGUgY2FsZW5kcmllcnMnLCBhcnJheSgiY2FsIj0+ImNhbCIsICJpZGVwcmV1dmUiPT4kaWRlcHJldXZlKSk7CgkJCQkJfQoJCQkJCSovCgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJG9uZXJvdy0+ZWRpdGxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRfdGVhbScsICRyZXR1cm5pZCwkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL3dhcm5pbmcuZ2lmJywgJHRoaXMtPkxhbmcoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snZXFfaWQnXSkpOwoJCQkJfQoKCQkJCWlmKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgRGVsZXRlJykpCgkJCQl7CgkJCQkJJG9uZXJvdy0+ZGVsZXRlbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGVsZXRlJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2VxX2lkJ10sICd0eXBlX2NvbXBldCc9Pid0ZWFtcycpLCAkdGhpcy0+TGFuZygnZGVsZXRlX2NvbmZpcm0nKSk7CgkJCQl9CgoJCQkJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCQkJCSRyb3dhcnJheVtdPSAkb25lcm93OwoJCQkJJHJvd2FycmF5MltdPSAkb25lcm93MjsKICAgICAgCQkJfQoJCQkvLyR0YWJfY2hwdCA9IGFycmF5X3VuaXF1ZSgkYXJyYXlfY2hwdCk7CgkJCS8vcHJpbnRfcigkYXJyYXlfY2hwdCk7CgkJCS8vdmFyX2R1bXAoJGFycmF5X2NocHQpOwogIAkJfQoJCSRzbWFydHktPmFzc2lnbigncmV0cmlldmVfYWxsJywKCQkJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3BvdWxlX3JlbmNvbnRyZXMnLCAkcmV0dXJuaWQsJGNvbnRlbnRzPSdSw6ljdXDDqXJlciBsZXMgY2FsZW5kcmllcnMnLCBhcnJheSgiY2FsIj0+ImNhbCIsICJpZGVwcmV1dmUiPT4kaWRlcHJldXZlKSkpOwoJCSRzbWFydHktPmFzc2lnbigncmV0cmlldmVfY2FsZW5kcmllcnMnLAoJCQkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfcG91bGVfcmVuY29udHJlcycsICRyZXR1cm5pZCwkY29udGVudHM9J1LDqWN1cMOpcmVyIGxlcyBkZXJuacOocmVzIHJlbmNvbnRyZXMnLCBhcnJheSgiY2FsIj0+ImFsbCIpKSk7CgkJJHNtYXJ0eS0+YXNzaWduKCdjbGFzc2VtZW50cycsCgkJCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdnZXRQb3VsZUNsYXNzZW1lbnQnLCAkcmV0dXJuaWQsJGNvbnRlbnRzPSdSw6ljdXDDqXJlciB0b3VzIGxlcyBjbGFzc2VtZW50cycpKTsKCQkkc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kdGV4dCcpKTsKCQkkc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwoJCSRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwoJCSRzbWFydHktPmFzc2lnbignZG9ubmVlcycsICRyb3dhcnJheTIpOwoJCS8vJHNtYXJ0eS0+YXNzaWduKCd0YWJfY2hwdCcsICR0YWJfY2hwdCk7CgkJCgkJJHNtYXJ0eS0+YXNzaWduKCdyZXRyaWV2ZV90ZWFtcycsCgkJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3RlYW1zJywgJHJldHVybmlkLCAkY29udGVudHMgPSAiRXF1aXBlcyBtYXNjdWxpbmVzIiwgYXJyYXkoJ3R5cGUnPT4nTScpKSk7CgkJJHNtYXJ0eS0+YXNzaWduKCdyZXRyaWV2ZV90ZWFtc19mZW0nLAoJCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV90ZWFtcycsICRyZXR1cm5pZCwgJGNvbnRlbnRzID0gIkVxdWlwZXMgZsOpbWluaW5lcyIsIGFycmF5KCd0eXBlJz0+J0YnKSkpOwoJCSRzbWFydHktPmFzc2lnbigncmV0cmlldmVfdGVhbXNfYXV0cmVzJywKCQkJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3RlYW1zJywgJHJldHVybmlkLCAkY29udGVudHMgPSAiQXV0cmVzIMOpcXVpcGVzIikpOwoJCSRzbWFydHktPmFzc2lnbignZWRpdF90ZWFtJywKCQkJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRfdGVhbScsJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+TGFuZygnYWRkJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSkuJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF90ZWFtJywgJHJldHVybmlkLCAKCQkJCQkJCQkgICR0aGlzLT5MYW5nKCdhZGRtYW51YWxseScpLCAKCQkJCQkJCQkgIGFycmF5KCkpKTsKCQoJCS8vZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCd0ZWFtc2NvcmVzLnRwbCcpOwoJCgkJLy9lY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3RlYW1zY29yZXMudHBsJyk7CgoKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgndGVhbXMudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_templates.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykgKSByZXR1cm47CgplY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciIHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsgd2lkdGg6IDgwJTsiPicuCiR0aGlzLT5DcmVhdGVJbWFnZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCwKCQkgICAgICAgJHRoaXMtPkxhbmcoJ2xibF9iYWNrJyksJ2ljb25zL3N5c3RlbS9iYWNrLmdpZicsYXJyYXkoKSwnJywnJyxmYWxzZSkuJzwvZGl2Pjxici8+JzsKCmVjaG8gJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpOwplY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2luZGl2aWR1ZWxsZXMnLCAkdGhpcy0+TGFuZygnY2FsX2Z1bGxjYWxlbmRhcl90ZW1wbGF0ZScpKTsKLyoKZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdhZG1pbl9jYWxlbmRhcl90ZW1wbGF0ZScsICR0aGlzLT5MYW5nKCdjYWxfY2FsZW5kYXJfdGVtcGxhdGUnKSk7CmVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignYWRtaW5fbGlzdF90ZW1wbGF0ZScsICR0aGlzLT5MYW5nKCdjYWxfbGlzdF90ZW1wbGF0ZScpKTsKZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdhZG1pbl91cGNvbWluZ2xpc3RfdGVtcGxhdGUnLCAkdGhpcy0+TGFuZygnY2FsX3VwY29taW5nbGlzdF90ZW1wbGF0ZScpKTsKZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdhZG1pbl9ldmVudF90ZW1wbGF0ZScsICR0aGlzLT5MYW5nKCdjYWxfZXZlbnRfdGVtcGxhdGUnKSk7CmVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignYWRtaW5fc2VhcmNoX2Zvcm1fdGVtcGxhdGVzJywgJHRoaXMtPkxhbmcoJ2NhbF9zZWFyY2hfZm9ybV90ZW1wbGF0ZXMnKSk7CmVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignYWRtaW5fc2VhcmNoX3Jlc3VsdF90ZW1wbGF0ZXMnLCAkdGhpcy0+TGFuZygnY2FsX3NlYXJjaF9yZXN1bHRfdGVtcGxhdGVzJykpOwplY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2FkbWluX215ZXZlbnRzX3RlbXBsYXRlcycsJHRoaXMtPkxhbmcoJ2NhbF9teWV2ZW50c190ZW1wbGF0ZXMnKSk7CmVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignYWRtaW5fZWRpdGV2ZW50X3RlbXBsYXRlcycsJHRoaXMtPkxhbmcoJ2NhbF9lZGl0ZXZlbnRfdGVtcGxhdGVzJykpOwplY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2FkbWluX2RlZmF1bHRfdGVtcGxhdGVzJywgJHRoaXMtPkxhbmcoJ2NhbF9kZWZhdWx0X3RlbXBsYXRlcycpKTsKKi8KZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOwoKZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7CmVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJpbmRpdmlkdWVsbGVzIiwkcGFyYW1zKTsKaW5jbHVkZShfX0RJUl9fLicvZnVuY3Rpb24uYWRtaW5fZnVsbGNhbGVuZGFyX3RlbXBsYXRlX3RhYi5waHAnKTsKZWNobyAkdGhpcy0+RW5kVGFiKCk7Ci8qCmVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJhZG1pbl9jYWxlbmRhcl90ZW1wbGF0ZSIsJHBhcmFtcyk7CmluY2x1ZGUoX19ESVJfXy4nL2Z1bmN0aW9uLmFkbWluX2NhbGVuZGFyX3RlbXBsYXRlX3RhYi5waHAnKTsKZWNobyAkdGhpcy0+RW5kVGFiKCk7CgplY2hvICR0aGlzLT5TdGFydFRhYigiYWRtaW5fbGlzdF90ZW1wbGF0ZSIsJHBhcmFtcyk7CmluY2x1ZGUoX19ESVJfXy4nL2Z1bmN0aW9uLmFkbWluX2xpc3RfdGVtcGxhdGVfdGFiLnBocCcpOwplY2hvICR0aGlzLT5FbmRUYWIoKTsKCmVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJhZG1pbl91cGNvbWluZ2xpc3RfdGVtcGxhdGUiLCRwYXJhbXMpOwppbmNsdWRlKF9fRElSX18uJy9mdW5jdGlvbi5hZG1pbl91cGNvbWluZ2xpc3RfdGVtcGxhdGVfdGFiLnBocCcpOwplY2hvICR0aGlzLT5FbmRUYWIoKTsKCmVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJhZG1pbl9ldmVudF90ZW1wbGF0ZSIsJHBhcmFtcyk7CmluY2x1ZGUoX19ESVJfXy4nL2Z1bmN0aW9uLmFkbWluX2V2ZW50X3RlbXBsYXRlX3RhYi5waHAnKTsKZWNobyAkdGhpcy0+RW5kVGFiKCk7CgplY2hvICR0aGlzLT5TdGFydFRhYigiYWRtaW5fc2VhcmNoX2Zvcm1fdGVtcGxhdGVzIiwkcGFyYW1zKTsKaW5jbHVkZShfX0RJUl9fLicvZnVuY3Rpb24uYWRtaW5fc2VhcmNoX3RlbXBsYXRlc190YWIucGhwJyk7CmVjaG8gJHRoaXMtPkVuZFRhYigpOwoKZWNobyAkdGhpcy0+U3RhcnRUYWIoImFkbWluX3NlYXJjaF9yZXN1bHRfdGVtcGxhdGVzIiwkcGFyYW1zKTsKaW5jbHVkZShfX0RJUl9fLicvZnVuY3Rpb24uYWRtaW5fc2VhcmNoX3Jlc3VsdF90ZW1wbGF0ZXNfdGFiLnBocCcpOwplY2hvICR0aGlzLT5FbmRUYWIoKTsKCmVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJhZG1pbl9teWV2ZW50c190ZW1wbGF0ZXMiLCRwYXJhbXMpOwppbmNsdWRlKF9fRElSX18uJy9mdW5jdGlvbi5hZG1pbl9teWV2ZW50c190ZW1wbGF0ZXNfdGFiLnBocCcpOwplY2hvICR0aGlzLT5FbmRUYWIoKTsKCmVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJhZG1pbl9lZGl0ZXZlbnRfdGVtcGxhdGVzIiwkcGFyYW1zKTsKaW5jbHVkZShfX0RJUl9fLicvZnVuY3Rpb24uYWRtaW5fZWRpdGV2ZW50X3RlbXBsYXRlc190YWIucGhwJyk7CmVjaG8gJHRoaXMtPkVuZFRhYigpOwoKZWNobyAkdGhpcy0+U3RhcnRUYWIoImFkbWluX2RlZmF1bHRfdGVtcGxhdGVzIiwkcGFyYW1zKTsKaW5jbHVkZShfX0RJUl9fLicvZnVuY3Rpb24uYWRtaW5fZGVmYXVsdF90ZW1wbGF0ZXNfdGFiLnBocCcpOwplY2hvICR0aGlzLT5FbmRUYWIoKTsKKi8KZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOwojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.bar-charts2.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwovL3JlcXVpcmVfb25jZShkaXJuYW1lKF9fZmlsZV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fZmlsZV9fKS4nL2Z1bmN0aW9uLmNhbGN1bHMucGhwJyk7CiRzYWlzb24gPSAoaXNzZXQoJHBhcmFtc1snc2Fpc29uJ10pID8gJHBhcmFtc1snc2Fpc29uJ106ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKSk7CmVjaG8gJ2xhIHNhaXNvbiBlc3QgOiAnLiRzYWlzb247CiRsaWNlbmNlID0gKGlzc2V0KCRwYXJhbXNbJ2xpY2VuY2UnXSkgPyAkcGFyYW1zWydsaWNlbmNlJ106ICcyOTIyNzEnKTsvLyc1MzEwODA5JzsKLyoKQ3LDqWF0aW9uIGQndW4gbGllbiBlbiBmcm9udGVuZAoqLwokc21hcnR5LT5hc3NpZ24oJ2xpZW5zYWlzb24yJywKCQkkdGhpcy0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwkcmV0dXJuaWQsJ2Jhci1jaGFydHMyJywgJGNvbnRlbnRzID0gJ1NhaXNvbiAyMDE0LTIwMTUnLCBhcnJheSgnc2Fpc29uJz0+JzIwMTQtMjAxNScsICdsaWNlbmNlJz0+JGxpY2VuY2UpKSk7CiRzbWFydHktPmFzc2lnbignbGllbnNhaXNvbicsCgkJJHRoaXMtPkNyZWF0ZUZyb250ZW5kTGluaygkaWQsJHJldHVybmlkLCdiYXItY2hhcnRzMicsICRjb250ZW50cyA9ICdTYWlzb24gMjAxMy0yMDE0JywgYXJyYXkoJ3NhaXNvbic9PicyMDEzLTIwMTQnLCAnbGljZW5jZSc9PiRsaWNlbmNlKSkpOwokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7CgovL29uIGNvbnN0cnVpdCB1biBmb3JtdWxhaXJlIHBvdXIgdHJhbnNpdGVyIGQndW4gam91ZXVyIGwnYXV0cmUKLyogb24gZmFpdCB1biBmb3JtdWxhaXJlIGRlIGZpbHRyYWdlIGRlcyByw6lzdWx0YXRzKi8KJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdiYXItY2hhcnRzMicpKTsgCiRwbGF5ZXJzbGlzdFskdGhpcy0+TGFuZygnYWxscGxheWVycycpXSA9ICcnOwokcXVlcnkgPSAiU0VMRUNUICogLGxpY2VuY2UsIENPTkNBVF9XUygnICcsbm9tLCBwcmVub20pIEFTIHBsYXllciBGUk9NICAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSBhY3RpZiA9IDEgT1JERVIgQlkgbm9tIEFTQyI7Ly8iIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICB7CiAgICAKICAgICRwbGF5ZXJzbGlzdFskcm93WydwbGF5ZXInXV0gPSAkcm93WydsaWNlbmNlJ107CiAgfQoKaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdGZpbHRlciddKSApCiAgewogICAgCQoJaWYoIGlzc2V0KCAkcGFyYW1zWydwbGF5ZXJzbGlzdCddKSApCiAgICAgIAl7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgncGxheWVyQ2hvaXNpJywgJHBhcmFtc1sncGxheWVyc2xpc3QnXSk7CiAgICAgIAl9Cgp9CiRjdXJwbGF5ZXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ3BsYXllckNob2lzaScpOwoJCQkJCiRzbWFydHktPmFzc2lnbignaW5wdXRfcGxheWVyJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3BsYXllcnNsaXN0JywkcGxheWVyc2xpc3QsLTEsJGN1cnBsYXllcikpOwoJCQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdGZpbHRlcicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0ZmlsdGVyJywkdGhpcy0+TGFuZygnZmlsdHJlcycpKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgoKLy9maW4gZHUgZm9ybXVsYWlyZSBkZSB0cmFuc2l0aW9uIGVudHJlIGxlcyBqb3VldXJzCiRzbWFydHktPmFzc2lnbignTGFiZWxfdmljdG9pcmVzJywgJ1ZpY3RvaXJlcycpOwokc21hcnR5LT5hc3NpZ24oJ0xhYmVsX2RlZmFpdGUnLCAnRMOpZmFpdGVzJyk7CgovKiovCiRyZXN1bHQgPSBhcnJheSgpOwokcXVlcnkyID0gIlNFTEVDVCBDT05DQVRfV1MoJyAnLCBqLm5vbSwgai5wcmVub20pIEFTIGpvdWV1cixwLmxpY2VuY2UsU1VNKHAucG9pbnRyZXMpIGFzIHN1bXBvaW50cyxjb3VudChwLnZkKSAtIFNVTShwLnZkKSBBUyBkZWZhaXRlcywgU1VNKHAudmQpIEFTIHZpY3RvaXJlcyxjb3VudChwLnZkKSBBUyBtYXRjaHMsIE1PTlRIKHAuZGF0ZV9ldmVudCkgQVMgbW9pcyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIEFTIHAsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogV0hFUkUgai5saWNlbmNlID0gcC5saWNlbmNlIEFORCBwLnNhaXNvbiA9ID8gQU5EIHAubGljZW5jZSA9ID8gIjsvL0dST1VQIEJZIG1vaXMgT1JERVIgQlkgWUVBUihwLmRhdGVfZXZlbnQpIEFTQyxtb2lzIjsKJHBhcm1zWydzYWlzb24nXSA9ICRzYWlzb247Ci8vJHF1ZXJ5ID0gIlNFTEVDVCBTVU0odmQpIEFTIHZpY3RvaXJlcywgY291bnQodmQpIEFTIHRvdGFsLCBjb3VudCh2ZCkgLSBTVU0odmQpIEFTIGRlZmFpdGVzICBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIFdIRVJFIHNhaXNvbiA9ID8iOwoKCWlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXRmaWx0ZXInXSApKXsKCgkJaWYgKCRjdXJwbGF5ZXIgIT0nJykKCQl7CgkJCSRxdWVyeTIgLj0iIEFORCBqLmxpY2VuY2UgPSA/IjsKCQkJJGxpY2VuY2UgPSAkY3VycGxheWVyOwkJCgkJfQoJfQokcXVlcnkyIC49IiBHUk9VUCBCWSBtb2lzIE9SREVSIEJZIFlFQVIocC5kYXRlX2V2ZW50KSBBU0MsbW9pcyI7CgoKJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MixhcnJheSgkc2Fpc29uLCRsaWNlbmNlKSk7Ci8vZWNobyAkcXVlcnkyOwovLyRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRzYWlzb25fY291cmFudGUsICRsaWNlbmNlKSk7Ci8vJGl0ZXJhdGlvbiA9ICRkYi0+UmVjb3JkQ291bnQoKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVyYXRpb24nLCAkaXRlcmF0aW9uKTsKCiRyb3djbGFzcz0gJ3JvdzEnOwokcm93YXJyYXk9IGFycmF5KCk7CiRvdXRwdXQgPSBhcnJheSgpOwokaSA9IDA7CglpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCgl7CgkJd2hpbGUoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJJGkrKzsKCQkJJHZpY3RvaXJlc1tdID0gJHJvd1snbW9pcyddOwoJCQkkc3VtcG9pbnRzW10gPSAkcm93WydzdW1wb2ludHMnXTsKCQkJLy8kdGVtcDFbXSA9ICIiLiRyb3dbJ3ZpY3RvaXJlcyddLiIiOwoJCQkvLyR0ZW1wMltdID0gIiIuJHJvd1snc3VtcG9pbnRzJ10uIiI7CgoJCQkKCQl9CgkJJG91dHB1dFtdID0gYXJyYXkoJHZpY3RvaXJlcywkc3VtcG9pbnRzKTsKCQkvLyRvdXRwdXRfcG9pbnRzW10gPSAkc3VtcG9pbnRzOwoJCS8vZWNobyAiPHByZT4kb3V0cHV0X3BvaW50czwvcHJlPiI7CgkJJG91dHB1dFN0cmluZyA9IGpzb25fZW5jb2RlKCRvdXRwdXQpOwoJCS8vJG91dHB1dFBvaW50c1N0cmluZyA9IGpzb25fZW5jb2RlKCRvdXRwdXRfcG9pbnRzKTsKCQllY2hvICI8cHJlPiRvdXRwdXRTdHJpbmc8L3ByZT4iOwoJCQoJfQoKLy8kanNvbiA9IGpzb25fZW5jb2RlKCRyZXN1bHRzLCBKU09OX1BSRVRUWV9QUklOVCk7CgovKiovCiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwovLyRkYXRhZG9ubmVlcyA9IGFycmF5KCdWaWN0b2lyZXMnPT4nMTInLCAnVG90YWwnPT4nMTYnKTsKJHNtYXJ0eS0+YXNzaWduKCdwbGF5ZXInLCAkcGxheWVyKTsKLy8kc21hcnR5LT5hc3NpZ24oJ2Rvbm5lZXMnLCBhcnJheSgnVmljdG9pcmVzJz0+JzEyJywgJ1RvdGFsJz0+JzEyJykpOwokc21hcnR5LT5hc3NpZ24oJ2RhdGFkb25uZWVzJywgJG91dHB1dFN0cmluZyk7Ci8vJHNtYXJ0eS0+YXNzaWduKCdwb2ludHMnLCAkb3V0cHV0UG9pbnRzU3RyaW5nKTsKLy9lY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3BpZS1jaGFydHMudHBsJyk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYmFyLWNoYXJ0czIudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.barTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwovL3JlcXVpcmVfb25jZShkaXJuYW1lKF9fZmlsZV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fZmlsZV9fKS4nL2Z1bmN0aW9uLmNhbGN1bHMucGhwJyk7CiRzYWlzb24gPSAoaXNzZXQoJHBhcmFtc1snc2Fpc29uJ10pID8gJHBhcmFtc1snc2Fpc29uJ106ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKSk7CmVjaG8gJ2xhIHNhaXNvbiBlc3QgOiAnLiRzYWlzb247CiRsaWNlbmNlID0gKGlzc2V0KCRwYXJhbXNbJ2xpY2VuY2UnXSkgPyAkcGFyYW1zWydsaWNlbmNlJ106ICcyOTIyNzEnKTsvLyc1MzEwODA5JzsKLyoKQ3LDqWF0aW9uIGQndW4gbGllbiBlbiBmcm9udGVuZAoqLwokc21hcnR5LT5hc3NpZ24oJ2xpZW5zYWlzb24yJywKCQkkdGhpcy0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwkcmV0dXJuaWQsJ2Jhci1jaGFydHMyJywgJGNvbnRlbnRzID0gJ1NhaXNvbiAyMDE0LTIwMTUnLCBhcnJheSgnc2Fpc29uJz0+JzIwMTQtMjAxNScsICdsaWNlbmNlJz0+JGxpY2VuY2UpKSk7CiRzbWFydHktPmFzc2lnbignbGllbnNhaXNvbicsCgkJJHRoaXMtPkNyZWF0ZUZyb250ZW5kTGluaygkaWQsJHJldHVybmlkLCdiYXItY2hhcnRzMicsICRjb250ZW50cyA9ICdTYWlzb24gMjAxMy0yMDE0JywgYXJyYXkoJ3NhaXNvbic9PicyMDEzLTIwMTQnLCAnbGljZW5jZSc9PiRsaWNlbmNlKSkpOwokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7CgovL29uIGNvbnN0cnVpdCB1biBmb3JtdWxhaXJlIHBvdXIgdHJhbnNpdGVyIGQndW4gam91ZXVyIGwnYXV0cmUKLyogb24gZmFpdCB1biBmb3JtdWxhaXJlIGRlIGZpbHRyYWdlIGRlcyByw6lzdWx0YXRzKi8KJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdiYXItY2hhcnRzMicpKTsgCiRwbGF5ZXJzbGlzdFskdGhpcy0+TGFuZygnYWxscGxheWVycycpXSA9ICcnOwokcXVlcnkgPSAiU0VMRUNUICogLGxpY2VuY2UsIENPTkNBVF9XUygnICcsbm9tLCBwcmVub20pIEFTIHBsYXllciBGUk9NICAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSBhY3RpZiA9IDEgT1JERVIgQlkgbm9tIEFTQyI7Ly8iIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICB7CiAgICAKICAgICRwbGF5ZXJzbGlzdFskcm93WydwbGF5ZXInXV0gPSAkcm93WydsaWNlbmNlJ107CiAgfQoKaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdGZpbHRlciddKSApCiAgewogICAgCQoJaWYoIGlzc2V0KCAkcGFyYW1zWydwbGF5ZXJzbGlzdCddKSApCiAgICAgIAl7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgncGxheWVyQ2hvaXNpJywgJHBhcmFtc1sncGxheWVyc2xpc3QnXSk7CiAgICAgIAl9Cgp9CiRjdXJwbGF5ZXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ3BsYXllckNob2lzaScpOwoJCQkJCiRzbWFydHktPmFzc2lnbignaW5wdXRfcGxheWVyJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3BsYXllcnNsaXN0JywkcGxheWVyc2xpc3QsLTEsJGN1cnBsYXllcikpOwoJCQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdGZpbHRlcicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0ZmlsdGVyJywkdGhpcy0+TGFuZygnZmlsdHJlcycpKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgoKLy9maW4gZHUgZm9ybXVsYWlyZSBkZSB0cmFuc2l0aW9uIGVudHJlIGxlcyBqb3VldXJzCiRzbWFydHktPmFzc2lnbignTGFiZWxfdmljdG9pcmVzJywgJ1ZpY3RvaXJlcycpOwokc21hcnR5LT5hc3NpZ24oJ0xhYmVsX2RlZmFpdGUnLCAnRMOpZmFpdGVzJyk7CgovKiovCiRyZXN1bHQgPSBhcnJheSgpOwokcXVlcnkyID0gIlNFTEVDVCBDT05DQVRfV1MoJyAnLCBqLm5vbSwgai5wcmVub20pIEFTIGpvdWV1cixwLmxpY2VuY2UsU1VNKHAucG9pbnRyZXMpIGFzIHN1bXBvaW50cyxjb3VudChwLnZkKSAtIFNVTShwLnZkKSBBUyBkZWZhaXRlcywgU1VNKHAudmQpIEFTIHZpY3RvaXJlcyxjb3VudChwLnZkKSBBUyBtYXRjaHMsIE1PTlRIKHAuZGF0ZV9ldmVudCkgQVMgbW9pcyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIEFTIHAsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogV0hFUkUgai5saWNlbmNlID0gcC5saWNlbmNlIEFORCBwLnNhaXNvbiA9ID8gQU5EIHAubGljZW5jZSA9ID8gIjsvL0dST1VQIEJZIG1vaXMgT1JERVIgQlkgWUVBUihwLmRhdGVfZXZlbnQpIEFTQyxtb2lzIjsKJHBhcm1zWydzYWlzb24nXSA9ICRzYWlzb247Ci8vJHF1ZXJ5ID0gIlNFTEVDVCBTVU0odmQpIEFTIHZpY3RvaXJlcywgY291bnQodmQpIEFTIHRvdGFsLCBjb3VudCh2ZCkgLSBTVU0odmQpIEFTIGRlZmFpdGVzICBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIFdIRVJFIHNhaXNvbiA9ID8iOwoKCWlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXRmaWx0ZXInXSApKXsKCgkJaWYgKCRjdXJwbGF5ZXIgIT0nJykKCQl7CgkJCSRxdWVyeTIgLj0iIEFORCBqLmxpY2VuY2UgPSA/IjsKCQkJJGxpY2VuY2UgPSAkY3VycGxheWVyOwkJCgkJfQoJfQokcXVlcnkyIC49IiBHUk9VUCBCWSBtb2lzIE9SREVSIEJZIFlFQVIocC5kYXRlX2V2ZW50KSBBU0MsbW9pcyI7CgoKJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MixhcnJheSgkc2Fpc29uLCRsaWNlbmNlKSk7Ci8vZWNobyAkcXVlcnkyOwovLyRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRzYWlzb25fY291cmFudGUsICRsaWNlbmNlKSk7Ci8vJGl0ZXJhdGlvbiA9ICRkYi0+UmVjb3JkQ291bnQoKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVyYXRpb24nLCAkaXRlcmF0aW9uKTsKCiRyb3djbGFzcz0gJ3JvdzEnOwokcm93YXJyYXk9IGFycmF5KCk7CiRvdXRwdXQgPSBhcnJheSgpOwokaSA9IDA7CglpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCgl7CgkJd2hpbGUoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJJGkrKzsKCQkJJHZpY3RvaXJlc1tdID0gJHJvd1snbW9pcyddOwoJCQkkc3VtcG9pbnRzW10gPSAkcm93WydzdW1wb2ludHMnXTsKCQkJLy8kdGVtcDFbXSA9ICIiLiRyb3dbJ3ZpY3RvaXJlcyddLiIiOwoJCQkvLyR0ZW1wMltdID0gIiIuJHJvd1snc3VtcG9pbnRzJ10uIiI7CgoJCQkKCQl9CgkJCgkJLy8kb3V0cHV0W10gPSBhcnJheSgkdmljdG9pcmVzLCRzdW1wb2ludHMpOwoJCS8vJG91dHB1dF9wb2ludHNbXSA9ICRzdW1wb2ludHM7CgkJLy9lY2hvICI8cHJlPiRvdXRwdXRfcG9pbnRzPC9wcmU+IjsKCQkkb3V0cHV0VmljdG9pcmVzID0ganNvbl9lbmNvZGUoJHZpY3RvaXJlcyk7CgkJJG91dHB1dFNvbW1lUG9pbnRzID0ganNvbl9lbmNvZGUoJHN1bXBvaW50cyk7CgkJLy8kb3V0cHV0UG9pbnRzU3RyaW5nID0ganNvbl9lbmNvZGUoJG91dHB1dF9wb2ludHMpOwoJCWVjaG8gIjxwcmU+JG91dHB1dFZpY3RvaXJlczwvcHJlPiI7CgkJZWNobyAiPHByZT4kb3V0cHV0U29tbWVQb2ludHM8L3ByZT4iOwoJCQoJfQoKLy8kanNvbiA9IGpzb25fZW5jb2RlKCRyZXN1bHRzLCBKU09OX1BSRVRUWV9QUklOVCk7CgovKiovCiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwovLyRkYXRhZG9ubmVlcyA9IGFycmF5KCdWaWN0b2lyZXMnPT4nMTInLCAnVG90YWwnPT4nMTYnKTsKJHNtYXJ0eS0+YXNzaWduKCdwbGF5ZXInLCAkcGxheWVyKTsKLy8kc21hcnR5LT5hc3NpZ24oJ2Rvbm5lZXMnLCBhcnJheSgnVmljdG9pcmVzJz0+JzEyJywgJ1RvdGFsJz0+JzEyJykpOwokc21hcnR5LT5hc3NpZ24oJ291dHB1dFZpY3RvaXJlcycsICRvdXRwdXRWaWN0b2lyZXMpOwokc21hcnR5LT5hc3NpZ24oJ291dHB1dFNvbW1lUG9pbnRzJywgJG91dHB1dFNvbW1lUG9pbnRzKTsKLy8kc21hcnR5LT5hc3NpZ24oJ3BvaW50cycsICRvdXRwdXRQb2ludHNTdHJpbmcpOwovL2VjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgncGllLWNoYXJ0cy50cGwnKTsKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdiYXItY2hhcnRzMi50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.classement_equipes.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCggJGdDbXMpICkgZXhpdDsKLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3ByZWZzLnBocCcpOwokZGIgPSYgJHRoaXMtPkdldERiKCk7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwokc2Fpc29uID0gKGlzc2V0KCRwYXJhbXNbJ3NhaXNvbiddKT8kcGFyYW1zWydzYWlzb24nXTokdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJykpOwokcGhhc2UgPSAoaXNzZXQoJHBhcmFtc1sncGhhc2UnXSk/JHBhcmFtc1sncGhhc2UnXTokdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKSk7CiRub21fZXF1aXBlcyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdub21fZXF1aXBlcycpOwokcmVjb3JkX2lkID0gJyc7CiRwYXJtcyA9IGFycmF5KCk7CiRlcXVpcGVzID0gIiUkbm9tX2VxdWlwZXMlIjsKJHF1ZXJ5ID0gIlNFTEVDVCBjbC5pZCBBUyByb3dfaWQsY2wuaWRlcXVpcGUsZXEuZnJpZW5kbHluYW1lLGVxLmxpYmVxdWlwZSxjbC5wb3VsZSxjbC5pZHBvdWxlLGNsLmNsdCxjbC5lcXVpcGUsY2wuam91ZSxjbC5wdHMgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2xhc3NlbWVudCBBUyBjbCwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgQVMgZXEgV0hFUkUgZXEuaWQgPSBjbC5pZGVxdWlwZSBBTkQgY2wuZXF1aXBlIExJS0UgPyBBTkQgY2wuZXF1aXBlID0gZXEubGliZXF1aXBlICBBTkQgY2wuc2Fpc29uID0gPyBBTkQgcGhhc2UgPSA/IjsKCiRwYXJtc1snZXF1aXBlcyddID0gIiUkbm9tX2VxdWlwZXMlIjsKJHBhcm1zWydzYWlzb24nXSA9ICRzYWlzb247CiRwYXJtc1sncGhhc2UnXSA9ICRwaGFzZTsKLy9lbiBwYXJhbWV0cmVzIHBvc3NpYmxlcyA6IAojbGUgY2hhbXBpb25uYXQgcmVjaGVyY2jDqSBvdSBub24KI3VuZSBlcXVpcGUgcHLDqWNpc2Ugb3Ugbm9uCglpZihpc3NldCgkcGFyYW1zWydpZGVwcmV1dmUnXSkgJiYgJHBhcmFtc1snaWRlcHJldXZlJ10gIT0nJykKCXsKCQkkaWRlcHJldXZlID0gJHBhcmFtc1snaWRlcHJldXZlJ107CgkJJHF1ZXJ5Lj0iIEFORCBlcS5pZGVwcmV1dmUgPSA/IjsKCQkkcGFybXNbJ2lkZXByZXV2ZSddID0gJGlkZXByZXV2ZTsKCQkvL2VjaG8gImVwcmV1dmUgZXN0IDogIi4kaWRlcHJldXZlOwoJfQoJLyoKCWlmKGlzc2V0KCRwYXJhbXNbJ3JlY29yZF9pZCddKSAmJiAkcGFyYW1zWydyZWNvcmRfaWQnXSAhPScnKQoJewoJCQkKCQkkcXVlcnkuPSIgQU5EIGNsLmlkZXF1aXBlID0gPyI7CgkJJHBhcm1zWydpZGVxdWlwZSddID0gJHBhcmFtc1sncmVjb3JkX2lkJ107CgkKCX0KCSovCgovL29uIGFvcmRvbm5lIGxhIHRhYmxlCiRxdWVyeS49ICIgT1JERVIgQlkgY2wuaWRlcXVpcGUgQVNDIjsKCgovL29uIGVmZmVjdHVlIGxhIHJlcXVldGUKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwkcGFybXMpOy8vYXJyYXkoJGVxdWlwZXMsJHNhaXNvbiwkcGhhc2UsJGlkZXByZXV2ZSkpOwovL2VjaG8gJHF1ZXJ5Owokcm93YXJyYXkgPSBhcnJheSgpOwppZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCnsKCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgl7CgkJJHJvd19pZCA9ICRyb3dbJ3Jvd19pZCddOwoJCSRjbHQgPSAkcm93WydjbHQnXTsKCQkkaWRwb3VsZSA9ICRyb3dbJ2lkcG91bGUnXTsKCQkkaWRfZXF1aXBlID0gJHJvd1snaWRlcXVpcGUnXTsKCQkkb25lcm93ID0gbmV3IFN0ZENsYXNzKCk7CgkJJG9uZXJvdy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7CgkJCgkJaWYoJGNsdCA9PSAnMCcpCgkJewoJCQkvL2lsIGZhdXQgc8OpbGVjdGlvbm5lciB1biBpZCBhdSBkZXNzdXMKCQkJJHF1ZXJ5MiA9ICJTRUxFQ1QgY2x0IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NsYXNzZW1lbnQgV0hFUkUgaWQgPCA/IEFORCBpZHBvdWxlID0gPyBBTkQgc2Fpc29uID0gPyBBTkQgY2x0ICE9JzAnIE9SREVSIEJZIGlkIERFU0MgTElNSVQgMSI7CgkJCSRkYnJlc3VsdDIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJHJvd19pZCwkaWRwb3VsZSwkc2Fpc29uKSk7CgkJCSRyb3cyID0gJGRicmVzdWx0Mi0+RmV0Y2hSb3coKTsKCQkJJGNsdCA9ICRyb3cyWydjbHQnXTsKCQl9CgkJCgkJJGVxdWlwZSA9ICRyb3dbJ2ZyaWVuZGx5bmFtZSddOwoJCS8vJG9uZXJvdy0+ZnJpZW5kbHluYW1lID0gJHJvd1snbGliZXF1aXBlJ107CgkJCgkJaWYoJGVxdWlwZSAhPScnKQoJCXsKCQkJJG9uZXJvdy0+ZnJpZW5kbHluYW1lID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZXF1aXBlJywkcmV0dXJuaWQsJGNvbnRlbnRzPSRyb3dbJ2ZyaWVuZGx5bmFtZSddLCBhcnJheSgicmVjb3JkX2lkIj0+JGlkX2VxdWlwZSkpOy8vJHJvd1snZnJpZW5kbHluYW1lJ107CgkJCS8vZWNobyAiZXN0IHBhcyBOdWxsIjsKCQl9CgkJZWxzZQoJCXsKCQkJJG9uZXJvdy0+ZnJpZW5kbHluYW1lID0gJHJvd1snbGliZXF1aXBlJ107CgkJfQoJCQoJCS8vdmFyX2R1bXAoJGVxdWlwZSk7CgkJCgkJCgkJCgkJJG9uZXJvdy0+Y2x0ID0gJGNsdDsKCQkvLyRvbmVyb3ctPmVxdWlwZSA9ICRyb3dbJ2VxdWlwZSddOwkJCgkJJHJvd2FycmF5W10gID0gJG9uZXJvdzsKCQkJCgl9Cgp9CmVsc2UKewoJIGVjaG8gIiBwYXMgZGUgcmVzdWx0YXQiOwoJJGRlc2lnbmF0aW9uID0gJGRiLT5FcnJvck1zZygpOwoJZWNobyAkZGVzaWduYXRpb247Cn0KCiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2NsYXNzZW1lbnQudHBsJyk7CiMKI0VPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.cron_retrieve_all_parties.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy9pZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5jYWxjdWxzLnBocCcpOwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3ByZWZzLnBocCcpOwokc2Fpc29uID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwokbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CiRxdWVyeSA9ICJTRUxFQ1QgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIFdIRVJFIG1hal9mZnR0IDwgTk9XKCktSU5URVJWQUwgMyBEQVkgQU5EIHNhaXNvbiA9ID8gT1JERVIgQlkgbWFqX2ZmdHQgREVTQyBMSU1JVCAyNSAiOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkc2Fpc29uKSk7Ci8vb24gYSBkb25jIGxlcyBuIGxpY2VuY2VzIHBvdXIgZmFpcmUgbGEgZGV1eGnDqG1lIHJlcXVldGUKLy9vbiBjb21tZW5jZSDDoCBib3VjbGVyCgokcm93Y2xhc3M9ICdyb3cxJzsKJHJvd2FycmF5PSBhcnJheSAoKTsKCgppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogIC8vIG9uIGluc3RhbmNpZSBsYSBjbGFzc2UgCgogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewoJJHNlcnZpY2UgPSBuZXcgU2VydmljZSgpOwoJJGxpY2VuY2UgPSAkcm93WydsaWNlbmNlJ107Cgkkam91ZXVyID0gJHJvd1snam91ZXVyJ107CiAgICAgCi8qKi8KCSRyZXN1bHQgPSAkc2VydmljZS0+Z2V0Sm91ZXVyUGFydGllcygiJGxpY2VuY2UiKTsKCSRpID0gMDsKCSRjb21wdGFnZSA9IDA7CgkJZm9yZWFjaCgkcmVzdWx0IGFzICRjbGUgPT4kdGFiKQoJCXsKCQkJJGNvbXB0YWdlKys7CgkJCQoJCQkvL29uIHbDqXJpZmllIHF1ZSBsZSBzZXJ2aWNlIGVzdCBvayBzaW5vbiBvbiBwYXNzZSBhdSBzdWl2YW50CgkJCWlmKCFpc19hcnJheSgkcmVzdWx0KSAmJiBjb3VudCgkcmVzdWx0KT09MCkKCQkJewoJCQkJLy9sZSBzZXJ2aWNlIGVzdCBkb3duCgkJCQkkZGVzaWduYXRpb24gPSAiU2VydmljZSBjb3Vww6kgb3UgbGljZW5jZSBpbmRpc3BvbmlibGUgcG91ciAiLiRqb3VldXI7CgkJCQkkc3RhdHVzID0gJ0VjaGVjJzsKCQkJCSRhY3Rpb24gPSdyZXRyaWV2ZV9hbGxfcGFydGllcyc7CgkJCQkKCQkJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csICRzdGF0dXMsICRkZXNpZ25hdGlvbiwgJGFjdGlvbik7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkvLyBsZSBzZXJ2aWNlIGVzdCBPaywgb24gY29udGludWUKCQkJCgkJCQkkbGljZW5jZTIgPSAkdGFiW2xpY2VuY2VdOwoJCQkJJGFkdmxpYyA9ICR0YWJbYWR2bGljXTsKCQkJCSR2ZCA9ICR0YWJbdmRdOwoJCgkJCQkJaWYgKCR2ZCA9PSdWJyl7CgkJCQkJCSR2ZCA9IDE7CgkJCQkJCX0KCQkJCQllbHNlIAoJCQkJCQl7JHZkID0gMDsKCQkJCQl9CgkJCgkJCQkkbnVtam91cm4gPSAkdGFiW251bWpvdXJuXTsKCQkJCgkJCQkJaWYoaXNfYXJyYXkoJG51bWpvdXJuKSkKCQkJCQl7CgkJCQkJCSRudW1qb3VybiA9ICcwJzsKCQkJCQl9CgkJCQkKCQkJCSRjb2RlY2hhbXAgPSAkdGFiW2NvZGVjaGFtcF07CgkJCQkkZGF0ZWV2ZW50ID0gJHRhYltkYXRlXTsKCQkJCSRjaGd0ID0gZXhwbG9kZSgiLyIsJGRhdGVldmVudCk7CgkJCQkkZGF0ZV9ldmVudCA9ICRjaGd0WzJdLiItIi4kY2hndFsxXS4iLSIuJGNoZ3RbMF07CgkJCQkvL2VjaG8gImxhIGRhdGUgZXN0Ii4kZGF0ZV9ldmVudDsKCQoJCQkJLy8JJGRhdGVfZXZlbnQgPSBjb252X2RhdGVfdmVyc19teXNxbCgkZGF0ZWV2ZW50KTsKCQkJCSRhZHZzZXhlID0gJHRhYlthZHZzZXhlXTsKCQkJCSRhZHZub21wcmUgPSAkdGFiW2Fkdm5vbXByZV07CgkJCQkkcG9pbnRyZXMgPSAkdGFiW3BvaW50cmVzXTsKCQkJCSRjb2VmY2hhbXAgPSAkdGFiW2NvZWZjaGFtcF07CgkJCQkkYWR2Y2xhb2YgPSAkdGFiW2FkdmNsYW9mXTsKCQoJLyoqLwkJCSRxdWVyeTIgPSAiU0VMRUNUIGxpY2VuY2UsYWR2bGljLCBudW1qb3VybiwgY29kZWNoYW1wLCBkYXRlX2V2ZW50LCBjb2VmY2hhbXAgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyBXSEVSRSBsaWNlbmNlID0gPyBBTkQgYWR2bGljID0gPyBBTkQgbnVtam91cm4gPSA/IEFORCBjb2RlY2hhbXAgPSA/IEFORCBkYXRlX2V2ZW50ID0gPyBBTkQgY29lZmNoYW1wID0gPyI7CgkJCQkkZGJyZXN1bHQyID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsIGFycmF5KCRsaWNlbmNlMiwgJGFkdmxpYywgJG51bWpvdXJuLCAkY29kZWNoYW1wLCAkZGF0ZV9ldmVudCwgJGNvZWZjaGFtcCkpOwoJCQkKCQkJCQlpZigkZGJyZXN1bHQyICAmJiAkZGJyZXN1bHQyLT5SZWNvcmRDb3VudCgpID09IDApIAoJCQkJCXsKCQkJCQkJJHF1ZXJ5MyA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyAoaWQsc2Fpc29uLCBsaWNlbmNlLCBhZHZsaWMsIHZkLCBudW1qb3VybiwgY29kZWNoYW1wLCBkYXRlX2V2ZW50LCBhZHZzZXhlLCBhZHZub21wcmUsIHBvaW50cmVzLCBjb2VmY2hhbXAsIGFkdmNsYW9mKSBWQUxVRVMgKCcnLD8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIjsKCQkJCQkJJGkrKzsKCQkJCQkJLy9lY2hvICRxdWVyeTsKCQkJCQkJJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MyxhcnJheSggJHNhaXNvbl9jb3VyYW50ZSwgJGxpY2VuY2UyLCAkYWR2bGljLCAkdmQsICRudW1qb3VybiwgJGNvZGVjaGFtcCwgJGRhdGVfZXZlbnQsICRhZHZzZXhlLCAkYWR2bm9tcHJlLCAkcG9pbnRyZXMsICRjb2VmY2hhbXAsICRhZHZjbGFvZikpOwoJCQoJCQkJCQkJaWYoISRkYnJlc3VsdGF0KQoJCQkJCQkJewoJCQkJCQkJCSRkZXNpZ25hdGlvbiA9ICRkYi0+RXJyb3JNc2coKTsgCgkJCQkJCQkJJHN0YXR1cyA9ICdFY2hlYyc7CgkJCQkJCQkJJGFjdGlvbiA9ICdyZXRyaWV2ZV9hbGxfcGFydGllcyc7CgkJCQkJCQkJcGluZ19hZG1pbl9vcHM6OmVjcmlyZWpvdXJuYWwoJG5vdywgJHN0YXR1cywgJGRlc2lnbmF0aW9uLCAkYWN0aW9uKTsKCQkJCQkJCX0KCQkJCQoJCQkJCX0KCQkJCgkJCX0vL2ZpbiBkdSBlbHNlICFpc19hcnJheQoJCX0vL2ZpbiBkdSBmb3JlYWNoCgkKCQkvL29uIHBldXQgZmFpcmUgbGEgbWFqX2ZmdHQgaWNpCgkJCgkJCgkJJGRlc2lnbmF0aW9uID0gIkluY2x1c2lvbiBkZSAiLiRpLiIgcsOpc3VsdGF0cyBwb3VyICIuJGpvdWV1cjsKCQlpZigkaT09MCkKCQl7CgkJCSRkZXNpZ25hdGlvbi49IiBTZXJ2aWNlIGNvdXDDqSA/IExpY2VuY2UgYWJzZW50ZSA/IjsKCQl9CgkJZWxzZQoJCXsKCQkJJGRhdGVfbWFqID0gZGF0ZSgnWS1tLWQnKTsKCQkJJHF1ZXJ5NCA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgU0VUIG1hal9mZnR0ID0gPywgZmZ0dCA9ID8gV0hFUkUgbGljZW5jZSA9ID8gQU5EIHNhaXNvbiA9ID8iOwoJCQkkcmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkZGF0ZV9tYWosICRjb21wdGFnZSwgJGxpY2VuY2UyLCAkc2Fpc29uX2NvdXJhbnRlKSk7CgkJfQoJCQoJCSRzdGF0dXMgPSAnT2snOwoJCSRhY3Rpb24gPSAncmV0cmlldmVfYWxsX3BhcnRpZXMnOwoJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywkZGVzaWduYXRpb24sJGFjdGlvbik7CgkJdW5zZXQoJGxpY2VuY2UyKTsKCQl1bnNldCgkaSk7CgkJCgkJCgl9Ly9maW4gZHUgd2hpbGUKfS8vZmluIGR1IGlmICRkYnJlc3VsdAoKLyoqLwovKgkKCSR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdzYXZlZF9yZWNvcmQnKSk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZW5jb250cmVzJyk7CiovCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.cron_spid_fftt.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgICAgICAgICAgVsOpcmlmaWNhdGlvbiBlbnRyZSBTcGlkIGV0IEZGVFQgICAgICAgICAgICAgICMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKZ2xvYmFsICR0aGVtZU9iamVjdDsKCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7CiRkZXNpZ25hdGlvbiA9ICcnOwovLyRxdWVyeSA9ICJTRUwiOwovLyRxdWVyeSA9ICJTRUxFQ1Qgc3AuaWQscC5kYXRlX2V2ZW50LHNwLmxpY2VuY2UgYXMgbGljZW5jZV9zcGlkLCBwLmxpY2VuY2UgYXMgbGljZW5jZV9mZnR0LHNwLm5vbSBhcyBub21fc3BpZCwgcC5hZHZub21wcmUgQVMgbm9tX2ZmdHQsIHNwLm51bWpvdXJuIEFTIG51bWpvdXJuX3NwaWQsIHAubnVtam91cm4gQVMgbnVtam91cm5fZmZ0dCwgc3AudmljdG9pcmUgQVMgdmljdG9pcmVfc3BpZCwgcC52ZCBBUyB2aWN0b2lyZV9mZnR0LCBzcC5jb2VmZiBBUyBjb2VmZl9zcGlkLCBwLmNvZWZjaGFtcCBBUyBjb2VmZl9mZnR0LCBzcC5wb2ludHJlcyBBUyBwb2ludHNfc3BpZCwgcC5wb2ludHJlcyBBUyBwb2ludHNfZmZ0dCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgQVMgc3AsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIEFTIHAgV0hFUkUgc3AubGljZW5jZSA9IHAubGljZW5jZSBBTkQgc3Aubm9tID0gcC5hZHZub21wcmUgQU5EIHNwLmRhdGVfZXZlbnQgPSBwLmRhdGVfZXZlbnQgQU5EIHNwLnNhaXNvbiA9ID8gQU5EIChzcC5wb2ludHJlcyAhPXAucG9pbnRyZXMpIE9SREVSIEJZIHNwLmlkIERFU0MiOwokcXVlcnkgPSAiU0VMRUNUIHNwLmlkIEFTIHJlY29yZF9pZCxwLmRhdGVfZXZlbnQsc3AubGljZW5jZSBhcyBsaWNlbmNlX3NwaWQsIHAubGljZW5jZSBhcyBsaWNlbmNlX2ZmdHQsc3Aubm9tIGFzIG5vbV9zcGlkLCBwLmFkdm5vbXByZSBBUyBub21fZmZ0dCwgc3AubnVtam91cm4gQVMgbnVtam91cm5fc3BpZCwgcC5udW1qb3VybiBBUyBudW1qb3Vybl9mZnR0LCBzcC52aWN0b2lyZSBBUyB2aWN0b2lyZV9zcGlkLCBwLnZkIEFTIHZpY3RvaXJlX2ZmdHQsIHNwLmNvZWZmIEFTIGNvZWZmX3NwaWQsIHAuY29lZmNoYW1wIEFTIGNvZWZmX2ZmdHQsIHNwLnBvaW50cmVzIEFTIHBvaW50c19zcGlkLCBwLnBvaW50cmVzIEFTIHBvaW50c19mZnR0IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBBUyBzcCwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXMgQVMgcCBXSEVSRSBzcC5saWNlbmNlID0gcC5saWNlbmNlIEFORCBzcC5ub20gPSBwLmFkdm5vbXByZSBBTkQgc3AuZGF0ZV9ldmVudCA9IHAuZGF0ZV9ldmVudCBBTkQgc3Auc2Fpc29uID0gPyBBTkQgKChzcC5wb2ludHJlcyAhPXAucG9pbnRyZXMpIE9SIChzcC5udW1qb3VybiAhPXAubnVtam91cm4pIE9SIChzcC5jb2VmZiAhPSBwLmNvZWZjaGFtcCkpIE9SREVSIEJZIHNwLmlkIEFTQyI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRzYWlzb25fY291cmFudGUpKTsKLy8kcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwokbGljID0gYXJyYXkoKTsKLy8kbGljID0gJHJvd1swXVsnbGljZW5jZSddOwovL2VjaG8gIkxhIHZhbGV1ciBlc3QgOiAiLiRsaWM7CiRsaWduZXMgPSAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk7CmZvcigkaT0wOyRpPD0kbGlnbmVzOyRpKyspCnsKCS8vYXJyYXlfcHVzaCgkbGljLCRyb3dbJGldWydpZCddLCAkcm93WyRpXVsnbnVtam91cm5fZmZ0dCddKTsKCS8vYXJyYXlfcHVzaCgkbGljWyRpXSxhcnJheSgkcm93WydpZCddLCAkcm93WydudW1qb3Vybl9mZnR0J10pKTsKCS8vJGxpY2VuID0gc3Vic3RyKGltcGxvZGUoIiwgIiwgJGxpYyksIDAsIC0zKTsKfQoKLy92YXJfZHVtcCgkZGJyZXN1bHQpOwoKLyoqLwoKJHJvd2FycmF5ID0gYXJyYXkoKTsKJGkgPSAwOwoJaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKT4wKQoJewoJCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkvL3BiIHNpIGRvdWJsb25zIG91IHRyaXBsb25zICAhISEKCQkJLy9mYXV0IGRvbmMgdsOpcmlmaWVyIGQnYWJvcmQgZGFucyBsYSB0YWJsZSBmZnR0LCBiZW4gb3VpICEKCQkJLy9vbiBwcmVuZCBkb25jIGxlcyDDqWzDqW1lbnRzIHBvdXIgdsOpcmlmaWVyCgkJCS8vb24gaW5zdGFuY2llIHVuZSB2YXJpYWJsZSBwb3VyIGRpcmUgc2kgYydlc3Qgb2sgb3Uga28gCgkJCSRkb3VibG9ucyA9IDA7CgkJCSRsaWNlbmNlX2pvdWV1ciA9ICRyb3dbJ2xpY2VuY2Vfc3BpZCddOwoJCQkkZGF0ZV9ldmVudCAgPSAkcm93WydkYXRlX2V2ZW50J107CgkJCQoJCQkKCQkJJHF1ZXJ5MyA9ICJTRUxFQ1QgY291bnQoKSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIFdIRVJFIGxpY2VuY2UgPSA/IEFORCBkYXRlX2V2ZW50ID0gPyBBTkQgYSA9ID8iOwoJCQkKCQkJCgkJCSRyZWNvcmRfaWQgPSAkcm93WydyZWNvcmRfaWQnXTsKCQkJJG51bWpvdXJuX2ZmdHQgPSAkcm93WydudW1qb3Vybl9mZnR0J107CgkJCS8vZWNobyAibGUgbsKwIEZGVFQgZXN0IDogIi4kbnVtam91cm5fZmZ0dC4iIHBvdXIgbGUgTsKwICIuJHJlY29yZF9pZC4iPGJyIC8+IjsKCQkJJGNvZWZjaGFtcCA9ICRyb3dbJ2NvZWZmX2ZmdHQnXTsKCQkJJHBvaW50cmVzID0gJHJvd1sncG9pbnRzX2ZmdHQnXTsKCQkJJHZkID0gJHJvd1sndmljdG9pcmVfZmZ0dCddOwoJCQlpZigkcG9pbnRyZXMgIT0nJykKCQkJewoJCQkJCgkJCQoJCQkJJHF1ZXJ5MiA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBTRVQgbnVtam91cm4gPSA/LCBjb2VmZiA9ID8sIHBvaW50cmVzID0gPywgdmljdG9pcmUgPSA/IFdIRVJFIGlkID0gPyI7CgkJCQkvL2VjaG8gJHF1ZXJ5MjsKCQkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsIGFycmF5KCRudW1qb3Vybl9mZnR0LCAkY29lZmNoYW1wLCRwb2ludHJlcywkdmQsICRyZWNvcmRfaWQpKTsKCQkJCSRpKys7CgkJCQkJaWYoISRkYnJlc3VsdGF0KQoJCQkJCXsKCQkJCQkJJGRlc2lnbmF0aW9uLj0gJGRiLT5FcnJvck1zZygpOwoKCQkJCQl9CgkJCX0KCQl9CgkJCgkJJGRlc2lnbmF0aW9uLj0iUmVjdGlmaWNhdGlvbiBkZSAiLiRpLiIgcGFydGllKHMpIjsKCQkKCQkKCX0KCWVsc2UKCXsKCQkkZGVzaWduYXRpb24uPSJQYXMgZGUgcsOpc3VsdGF0cyDDoCBtb2RpZmllciI7Cgl9CgkvL2VjaG8gJGRlc2lnbmF0aW9uOwoKJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwokdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzcGlkJyk7CgkKCiNFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.dater.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyAgICAgIENldHRlIHBhZ2UgZGF0ZSBkZXV4IHRhYmxlcyBjYWxlbmRyaWVyIGV0IGRpdl90b3VycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIyMjCiMjICAgICAgTGUgZm9ybXVsYWlyZSBzZSByZXRvdXJuZSBzdXIgbHVpIG3Dqm1lIHBvdXIgdHJhaXRlbWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCglpZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgTWFuYWdlJykpCiAgCXsKICAgIAkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CgkJcmV0dXJuOwogICAKICAJfQoKCWlmKCBpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgKQogIAl7CiAgICAJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2RpdmlzaW9ucycpOwogICAgCQlyZXR1cm47CiAgCX0KJGVycm9yID0gMDsgLy9vbiBpbnN0YW5jaWUgdW4gY29tcHRldXIgZCdlcnJldXIKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7Ci8vbGUgZm9ybXVsYWlyZSBhIHQtaWwgw6l0w6kgc291bWlzID8KaWYoaXNzZXQoJHBhcmFtc1snc3VibWl0J10pKQp7CgkvL29uIGZhaXQgbGVzIHRyYWl0ZW1lbnRzCgkvL29uIHbDqXJpZmllIHF1ZSB0dCBlc3QgbMOgCgkkZGIgPSYgJHRoaXMtPkdldERiKCk7CglpZihpc3NldCgkcGFyYW1zWydzZWwnXSkgJiYgJHBhcmFtc1snc2VsJ10gIT0gJycpCgl7CgkJJHNlbCA9ICRwYXJhbXNbJ3NlbCddOwoJCSR0YWIgPSBleHBsb2RlKCctJywgJHNlbCk7CgkJJGEgPSBhcnJheSgpOwoJCWZvcmVhY2goJHRhYiBhcyAkdmFsdWUpCgkJewoJCQlhcnJheV9wdXNoKCRhLCR2YWx1ZSk7CgkJfQoJCS8vdmFyX2R1bXAoJGEpOwoJCSRkYXRlX2RlYnV0ID0gJyc7CgkJCgkJaWYoaXNzZXQoJHBhcmFtc1snZGF0ZV9kZWJ1dCddKSAmJiAkcGFyYW1zWydkYXRlX2RlYnV0J10gIT0nJykKCQl7CgkJCSRkYXRlX2RlYnV0ID0gJHBhcmFtc1snZGF0ZV9kZWJ1dCddOwoJCQlpZighaXNzZXQoJHBhcmFtc1snZGF0ZV9maW4nXSl8fCBlbXB0eSgkcGFyYW1zWydkYXRlX2ZpbiddKSkKCQkJewoJCQkJJGRhdGVfZmluID0gJGRhdGVfZGVidXQ7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkZGF0ZV9maW4gPSAkcGFyYW1zWydkYXRlX2ZpbiddOwoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCSRlcnJvcisrOwoJCQkKCQl9CgkJaWYoaXNzZXQoJHBhcmFtc1snbnVtam91cm4nXSkgJiYgJHBhcmFtc1snbnVtam91cm4nXSAhPScnKQoJCXsKCQkJJG51bWpvdXJuID0gJHBhcmFtc1snbnVtam91cm4nXTsKCQl9CgkJZWxzZQoJCXsKCQkJJGVycm9yKys7CgkJfQoJCQoJCSRpID0gMDsvL29uIGluc3RhbmNpZSB1biBjb21wdGV1ciBwb3VyIHJlbmRyZSBjb21wdGUKCQkKCQlpZigkZXJyb3IgPT0gMCkKCQl7CgkJCWZvcmVhY2goJGEgYXMgJHZhbGV1cikKCQkJewoJCQkJLy9vbiB2YSBjaGVyY2hlciBsZXMgaW5mb3MgOiBpZGVwcmV1dmUsIGlkZGl2aXNpb24gZXRjLi4KCQkJCWlmKGlzc2V0KCRwYXJhbXNbJ21ldGhvZGUnXSkgJiYgJHBhcmFtc1snbWV0aG9kZSddID09ICd0YWJsZWF1JykKCQkJCXsKCQkJCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2aXNpb25zIEFTIGR2LCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X3RvdXJzIEFTIHRvdXJzIFdIRVJFIHRvdXJzLnRhYmxlYXUgPSA/ICI7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2RpdmlzaW9ucyBBUyBkdiwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2Rpdl90b3VycyBBUyB0b3VycyBXSEVSRSB0b3Vycy5pZGRpdmlzaW9uID0gPyAiOwoJCQkJfQoJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHZhbGV1cikpOwoKCQkJCWlmKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk+MCkKCQkJCXsKCQkJCQkvLwoJCQkJCSRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkJCQkJJGlkZXByZXV2ZSA9ICRyb3dbJ2lkZXByZXV2ZSddOwoJCQkJCSRpZGRpdnNpb24gPSAkcm93WydpZGRpdmlzaW9uJ107CgkJCQkJLy8kdGFibGVhdSA9ICRyb3dbJ3RhYmxlYXUnXTsKCQkJCQkkbGliZWxsZSA9ICRyb3dbJ2xpYmVsbGUnXTsKCQkJCQkkc2Fpc29uID0gJHJvd1snc2Fpc29uJ107CgkJCQkJJGluZGl2cyA9ICRyb3dbJ2luZGl2cyddOwoJCQkJCS8vT24gY3LDqWUgbGUgdGFnCgkJCQkJLy8kc2VydmljZSA9IG5ldyBwaW5nX2FkbWluX29wcygpOwoJCQkJCSR0YWcgPSBwaW5nX2FkbWluX29wczo6Y3JlYXRlX3RhZygkaWRlcHJldXZlLCRpbmRpdnMsJGRhdGVfZGVidXQsICRkYXRlX2ZpbiApOwoJCQkJCS8vb24gZmFpdCBsYSByZXF1ZXRlIGQnaW5zZXJ0aW9uCgkJCQkJLy9vbiB2YSB2w6lyaWZpZXIgc2kgbGEgZGF0ZSBlc3QgZMOpasOgIGRzIGxlIGNhbGVuZHJpZXIKCQkJCQkkcXVlcnkxID0gIlNFTEVDVCBzYWlzb24sIGRhdGVfZGVidXQsIGRhdGVfZmluLGlkZXByZXV2ZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jYWxlbmRyaWVyIFdIRVJFIHNhaXNvbiA9ID8gQU5EIGRhdGVfZGVidXQgPSA/IEFORCBpZGVwcmV1dmUgPSA/IjsKCQkJCQkkZGJyZXN1bHQxID0gJGRiLT5FeGVjdXRlKCRxdWVyeTEsIGFycmF5KCRzYWlzb24sICRkYXRlX2RlYnV0LCAkaWRlcHJldXZlKSk7CgkJCQkJaWYoJGRicmVzdWx0MS0+UmVjb3JkQ291bnQoKT09MCkKCQkJCQl7CgkJCQkJCSRxdWVyeTIgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIgKGlkLCBzYWlzb24sIGRhdGVfZGVidXQsIGRhdGVfZmluLCBudW1qb3Vybix0YWcsIGlkZXByZXV2ZSApIFZBTFVFUyAoJycsID8sID8sID8gLD8sID8sID8pIjsKCQkJCQkJJGRicmVzdWx0MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCBhcnJheSgkc2Fpc29uLCRkYXRlX2RlYnV0LCAkZGF0ZV9maW4sJG51bWpvdXJuLCR0YWcsICRpZGVwcmV1dmUpKTsKCQkJCQkJCgkJCQkJCQoJCQkJCQkKCQkJCQkJJHNlcnZpY2UgPSBuZXcgcmV0cmlldmVfb3BzKCk7CgkJCQkJCS8vIG9uIGluc2VydCBhdXNzaSBkYW5zIENHQ2FsZW5kYXIgPwoJCQkJCQkvLyBDaGljaGUgIQoJCQkJCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgV0hFUkUgaWRlcHJldXZlID0gPyI7CgkJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpZGVwcmV1dmUpKTsKCQkJCQkJJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCQkJCQkJJG5hbWUgPSAkcm93WyduYW1lJ107CgkJCQkJCQoJCQkJCQkkaW5zZXJ0ID0gJHNlcnZpY2UtPmluc2VydF9jZ2NhbGVuZGFyKCRuYW1lLCR0YWcsJGRhdGVfZGVidXQsJGRhdGVfZmluKTsKCQkJCQkJLy8gb24gcsOpY3Vww6hyZSBpZCBkcyBkaWZmw6lyZW50ZXMgdGFibGVzCgkJCQkJCS8vVG91dCBkJ2Fib3JkIGNlbHVpIGRlIGxhIHRhYmxlIGV2ZW50cwoJCQkJCQkvKgoJCQkJCQkkcXVlcnkxID0gIlNFTEVDVCBpZCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfY2djYWxlbmRhcl9ldmVudHNfc2VxIjsKCQkJCQkJJGRicmVzdWx0MSA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkxKTsKCQkJCQkJJHJvdyA9ICRkYnJlc3VsdDEtPkZldGNoUm93KCk7CgkJCQkJCSRpZF9ldmVudCA9ICRyb3dbJ2lkJ10rMTsKCQkJCQkJJHF1ZXJ5X2NhbCA9ICJJTlNFUlQgSU5UTyBkZW1vX21vZHVsZV9jZ2NhbGVuZGFyX2V2ZW50cwoJCQkJCQkgICAgICAgICAgIChldmVudF9pZCwgZXZlbnRfdGl0bGUsIGV2ZW50X2RldGFpbHMsIGV2ZW50X2RhdGVfc3RhcnQsIGV2ZW50X2RhdGVfZW5kKQoJCQkJCQkgICAgICAgICAgICBWQUxVRVMgKD8sID8sID8gLCA/LCA/KSI7CgkJCQkJCSRkYnJlc3VsdF9jYWwgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5X2NhbCwgYXJyYXkoJGlkX2V2ZW50LCRuYW1lLCR0YWcsJGRhdGVfZGVidXQsJGRhdGVfZmluKSk7CgkJCQkJCS8vb24gaW5zw6hyZSBhdXNzaSBsJ8OpdsOpbmVtZW50IGRhbnMgdW5lIGNhdGVnb3JpZSBwYXIgZMOpZmF1dCBsYSBnw6luw6lyYWxlIGRvbmMgMQoJCQkJCQkkY2F0ID0gMTsKCQkJCQkJJHF1ZXJ5X2NhdCA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2NnY2FsZW5kYXJfZXZlbnRzX3RvX2NhdGVnb3JpZXMgKGNhdGVnb3J5X2lkLCBldmVudF9pZCkgVkFMVUVTICg/LD8pIjsKCQkJCQkJJGRicmVzdWx0X2NhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnlfY2F0LCBhcnJheSgkY2F0LCRpZF9ldmVudCkpOwoJCQkJCQkvL29uIG1vZGlmaWUgbGUgZXZlbnRzX3NlcQoJCQkJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfY2djYWxlbmRhcl9ldmVudHNfc2VxIFNFVCBpZCA9IGlkKzEiOwoJCQkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCQkJCQkJKi8KCQkJCQl9CgoJCQkJfQoJCQkJaWYoaXNzZXQoJHBhcmFtc1snbWV0aG9kZSddKSAmJiAkcGFyYW1zWydtZXRob2RlJ10gPT0gJ3RhYmxlYXUnKQoJCQkJewoJCQkJCSRxdWVyeTIgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfdG91cnMgIFNFVCBkYXRlX2RlYnV0ID0gPywgZGF0ZV9maW4gPSA/IFdIRVJFIHRhYmxlYXUgPSA/IjsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkcXVlcnkyID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X3RvdXJzICBTRVQgZGF0ZV9kZWJ1dCA9ID8sIGRhdGVfZmluID0gPyBXSEVSRSBpZGRpdmlzaW9uID0gPyI7CgkJCQl9CgoJCQkJJGRicmVzdWx0MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCBhcnJheSgkZGF0ZV9kZWJ1dCwkZGF0ZV9maW4sJHZhbGV1cikpOwoKCgkJCX0KCQkJJHRoaXMtPlNldE1lc3NhZ2UoJ0RhdGF0aW9uIHLDqWFsaXPDqWUnKTsKCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywgJHJldHVybmlkPScnLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJpbmRpdnMiKSk7CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5TZXRNZXNzYWdlKCdEYXRlKHMpIGV0L291IHRvdXIgbWFucXVhbnQocyknKTsKCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZD0nJywgYXJyYXkoImFjdGl2ZV90YWIiPT4iZGl2aXNpb25zIikpOwoJCX0KCQkKCQkKCQkKCQkKCX0KfQplbHNlCnsKCWlmKGlzc2V0KCRwYXJhbXNbJ3NlbCddKSAmJiAkcGFyYW1zWydzZWwnXSAhPSIiKQoJewkJCQoJCSRzZWwgPSAkcGFyYW1zWydzZWwnXTsKCQkKCQkvL29uIGNvbnN0cnVpdCBsZSBmb3JtdWxhaXJlCgkJJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLAoJCQkJICAgICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoICRpZCwgJ2RhdGVyJywgJHJldHVybmlkICkgKTsJCgkJJHNtYXJ0eS0+YXNzaWduKCdyZWNvcmRfaWQnLAoJCQkJJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnc2VsJywkc2VsKSk7CgkJJHNtYXJ0eS0+YXNzaWduKCdtZXRob2RlJywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ21ldGhvZGUnLCd0YWJsZWF1JykpOwoJCgkJJHNtYXJ0eS0+YXNzaWduKCdkYXRlX2RlYnV0JywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dERhdGUoJGlkLCAnZGF0ZV9kZWJ1dCcpKTsKCQkkc21hcnR5LT5hc3NpZ24oJ2RhdGVfZmluJywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dERhdGUoJGlkLCAnZGF0ZV9maW4nKSk7CgkJJHNtYXJ0eS0+YXNzaWduKCdudW1qb3VybicsCgkJCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ251bWpvdXJuJykpOwoJCgkJJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLAoJCQkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdzdWJtaXQnKSwgJ2NsYXNzPSJidXR0b24iJykpOwoJCSRzbWFydHktPmFzc2lnbignY2FuY2VsJywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2NhbmNlbCcsCgkJCQkJCQkkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsKCQkkc21hcnR5LT5hc3NpZ24oJ2JhY2snLAoJCQkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnYmFjaycsCgkJCQkJCQkkdGhpcy0+TGFuZygnYmFjaycpKSk7CgoJCSRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsCgkJCQkkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCQoJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZGF0ZXIudHBsJyk7Cgl9Cn0KCgoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKICAgaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3ByZWZzLnBocCcpOwokbm9tX2VxdWlwZXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbm9tX2VxdWlwZXMnKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwokcmVzdWx0PSBhcnJheSgpOwokcGFybXMgPSBhcnJheSgpOwovLyRyb3dhcnJheSA9IGFycmF5KCk7Ci8vJHJvd2FycmF5MSA9IGFycmF5KCk7CiRpPTA7CiRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jYWxlbmRyaWVyIFdIRVJFIGRhdGVfZmluPD1OT1coKSBHUk9VUCBCWSBkYXRlX2RlYnV0IE9SREVSIEJZIGRhdGVfZGVidXQgREVTQyI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoKCWlmKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk+MCkKCXsKCQl3aGlsZSgkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJJGkrKzsKCQkJJGRhdGVfZGVidXQgPSAkcm93WydkYXRlX2RlYnV0J107CgkJCS8vZWNobyAibGEgZGF0ZSBkw6lidXQgZXN0IDoiLiRkYXRlX2RlYnV0OwoJCQkkZGF0ZWFyciA9IGV4cGxvZGUoJy0nLCAkZGF0ZV9kZWJ1dCk7CgkJCSRkYXRlZnIgPSAkZGF0ZWFyclsyXSAuICctJyAuICRkYXRlYXJyWzFdIC4gJy0nIC4gJGRhdGVhcnJbMF07CgkJCQoJCQkkcXVlcnkyID0gIlNFTEVDVCAqLCByZW4uaWQsIGVxLmxpYmVxdWlwZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBBUyByZW4sICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIEFTIGVxIFdIRVJFIGVxLmlkcG91bGUgPSByZW4uaWRwb3VsZSAgQU5EIHJlbi5zYWlzb24gPSBlcS5zYWlzb24gQU5EIChyZW4uc2NvcmVhICE9MCBBTkQgc2NvcmViICE9MCkgIEFORCByZW4uZGF0ZV9ldmVudCA9ID8iOwoJCQkvLyRxdWVyeTIgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG91bGVzX3JlbmNvbnRyZXMgV0hFUkUgZGF0ZV9ldmVudCA9ID8iOwoJCQkvL21vbiBjbHViIHVuaXF1ZW1lbnQgPwoJCQkkcXVlcnkyLj0iIEFORCBjbHViID0gJzEnIjsKCQkJJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJGRhdGVfZGVidXQpKTsKCQkJCgkJCQkKCQkJaWYoJGRicmVzdWx0YXQgJiYgJGRicmVzdWx0YXQtPlJlY29yZENvdW50KCk+MCkKCQkJewoJCQkJCgkJCQkkY29udGVudSA9ICcnOwkJCQkKCQkJCSRjb250ZW51Lj0gIjxoMz5MZXMgcsOpc3VsdGF0cyBkdSAgIi4kZGF0ZWZyLiI8L2gzPiI7CgkJCQkkY29udGVudS49Ijx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkXCI+IjsKCQkJCQoJCQkJd2hpbGUoJHJvdzIgPSAkZGJyZXN1bHRhdC0+RmV0Y2hSb3coKSkKCQkJCXsKCQkJCQkKCQkJCQoJCQkJCQoJCQkJCSRpZD0gJHJvdzJbJ2lkJ107CgkJCQkJJGRhdGVfZXZlbnQ9ICRyb3cyWydkYXRlX2V2ZW50J107CgkJCQkJJGVxdWIgPSAkcm93MlsnZXF1YiddOwoJCQkJCSRlcXVhID0gJHJvdzJbJ2VxdWEnXTsKCQkJCQkkZnJpZW5kbHluYW1lID0gJHJvdzJbJ2ZyaWVuZGx5bmFtZSddOwoJCQkJCSRsaWJlcXVpcGUgPSAkcm93MlsnbGliZXF1aXBlJ107CgkJCQkJLy9lY2hvICJlcXVpcGUgQiBlc3QgOiAiLiRlcXViOwoKCQkJCQkvLyRvbmVyb3ctPmVxdWlwZT0gJHJvd1snZXF1aXBlJ107CgkJCQkJJGxpYmVsbGU9ICAkcm93MlsnbGliZWxsZSddIDsKCQkJCQkKCQkJCQlpZihpc3NldCgkZnJpZW5kbHluYW1lKSAmJiAkZnJpZW5kbHluYW1lICE9JycpCgkJCQkJewoJCQkJCQlpZiAoJGxpYmVxdWlwZSA9PSAkZXF1YSkKCQkJCQkJewoJCQkJCQkJJGVxdWE9ICRyb3cyWydmcmllbmRseW5hbWUnXTsKCQkJCQkJfQoKCQkJCQkJZWxzZXsKCQkJCQkJCSRlcXVhPSAkcm93MlsnZXF1YSddOwoJCQkJCQl9CgoJCQkJCX0KCQkJCQllbHNlewoJCQkJCQkkZXF1YT0gJHJvdzJbJ2VxdWEnXTsKCQkJCQl9CgkJCQkJJHNjb3JlYT0gJHJvdzJbJ3Njb3JlYSddOwoJCQkJCSRzY29yZWI9ICRyb3cyWydzY29yZWInXTsKCQkJCQkKCQkJCQlpZihpc3NldCgkZnJpZW5kbHluYW1lKSAmJiAkZnJpZW5kbHluYW1lICE9JycpCgkJCQkJewoJCQkJCQlpZiAoJGxpYmVxdWlwZSA9PSAkZXF1YikKCQkJCQkJewoJCQkJCQkJJGVxdWI9ICRyb3cyWydmcmllbmRseW5hbWUnXTsKCQkJCQkJfQoKCQkJCQkJZWxzZXsKCQkJCQkJCSRlcXViPSAkcm93MlsnZXF1YiddOwoJCQkJCQl9CgoJCQkJCX0KCQkJCQllbHNlewoJCQkJCQkkZXF1Yj0gJHJvdzJbJ2VxdWInXTsKCQkJCQl9CgkJCQkJJGRldGFpbHM9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RldGFpbHMnLCAkcmV0dXJuaWQsICdEw6l0YWlscycsIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93MlsnaWQnXSwgJ3RlbXBsYXRlJz0+JzEnKSk7CgkJCQkJJGNvbnRlbnUuPSI8dHI+IjsKCQkJCQkvLyRjb250ZW51Lj0iPHRkPiRpZDwvdGQ+IjsKCQkJCQkkY29udGVudS49Ijx0ZD4kZXF1YTwvdGQ+IjsKCQkJCQkkY29udGVudS49Ijx0ZD4kc2NvcmVhPC90ZD4iOwoJCQkJCSRjb250ZW51Lj0iPHRkPiRzY29yZWI8L3RkPiI7CgkJCQkJJGNvbnRlbnUuPSI8dGQ+JGVxdWI8L3RkPiI7CgkJCQkJJGNvbnRlbnUuPSI8dGQ+JGRldGFpbHM8L3RkPiI7CgkJCQkJJGNvbnRlbnUuPSI8L3RyPiI7CgkJCQkJCgkJCQl9CgkJCQkKCQkJCQoJCQkJJGNvbnRlbnUuPSI8L3RhYmxlPiI7CgkJCQllY2hvICRjb250ZW51OwoJCQl9CgkJCQoJCQkKCQl9CgkJCgl9CmlmKGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pICYmICRwYXJhbXNbJ3RlbXBsYXRlJ10gPT0gJzEnKQkKewplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2RldGFpbHNfcmVuY29udHJlLnRwbCcpOwp9CiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKICAgaWYgKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsgCglpZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgVXNlJykpCgl7CgkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CgkJcmV0dXJuOwoJfQoJCgovL29uIGluc3RhbmNpZSBsZXMgb25nbGV0cwokdmVyc2lvbiA9ICR0aGlzLT5HZXRWZXJzaW9uKCdQaW5nJyk7Ci8vZWNobyAibGEgdmVyc2lvbiBlc3QgOiAiLiR2ZXJzaW9uOwplY2hvICR0aGlzLT5TdGFydFRhYmhlYWRlcnMoKTsKaWYgKEZBTFNFID09IGVtcHR5KCRwYXJhbXNbJ2FjdGl2ZV90YWInXSkpCiAgewogICAgJHRhYiA9ICRwYXJhbXNbJ2FjdGl2ZV90YWInXTsKICB9IGVsc2UgewogICR0YWIgPSAncmVuY29udHJlcyc7CiB9CQoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdqb3VldXJzJywgJ0pvdWV1cnMnLCAoJ2pvdWV1cnMnID09ICR0YWIpP3RydWU6ZmFsc2UpOwoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdlcXVpcGVzJywgJ1BhciBFcXVpcGVzJywgKCdlcXVpcGVzJyA9PSAkdGFiKT90cnVlOmZhbHNlKTsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignaW5kaXZzJywgJ0luZGl2aWR1ZWxsZXMnICwgKCdpbmRpdnMnID09ICR0YWIpP3RydWU6ZmFsc2UpOwoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdjb21wZXRzJywgJ0NvbXDDqXRpdGlvbnMnICwgKCdjb21wZXRzJyA9PSAkdGFiKT90cnVlOmZhbHNlKTsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignY2FsZW5kcmllcicsICdDYWxlbmRyaWVyJywgKCdjYWxlbmRyaWVyJyA9PSAkdGFiKT90cnVlOmZhbHNlKTsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignZmZ0dCcsICdGRlRUJyAsICgnZmZ0dCcgPT0gJHRhYik/dHJ1ZTpmYWxzZSk7CgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3NwaWQnLCAnU1BJRCcgLCAoJ3NwaWQnID09ICR0YWIpP3RydWU6ZmFsc2UpOwoJCgkvL2VjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignZGl2aXNpb25zJywgJ0RpdmlzaW9ucycsICgnZGl2aXNpb25zJyA9PSAkdGFiKT90cnVlOmZhbHNlKTsJCgkvL2VjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigncG91bGVzJywgJ1LDqXN1bHRhdHMnLCAoJ3Jlc3VsdGF0cycgPT0gJHRhYik/dHJ1ZTpmYWxzZSk7CgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3JlY3VwJywgJ1JlY3Vww6lyYXRpb24nLCAoJ1LDqWN1cMOpcmF0aW9uJyA9PSAkdGFiKT90cnVlOmZhbHNlKTsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignc2l0dWF0aW9uJywgJ1NpdHVhdGlvbiBtZW5zdWVsbGUnLCAoJ3NpdHVhdGlvbicgPT0gJHRhYik/dHJ1ZTpmYWxzZSk7CgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2pvdXJuYWwnLCAnSm91cm5hbCcsICgnSm91cm5hbCcgPT0gJHRhYik/dHJ1ZTpmYWxzZSk7CgkKCWlmKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgU2V0IFByZWZzJykpCgl7CgkJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdjb25maWd1cmF0aW9uJywgJ0NvbmZpZ3VyYXRpb24nICwgKCdjb25maWd1cmF0aW9uJyA9PSAkdGFiKT90cnVlOmZhbHNlKTsKCQllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2NvbXB0ZScsICdjb21wdGUnICwgKCdjb21wdGUnID09ICR0YWIpP3RydWU6ZmFsc2UpOwoJfQoKZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOwoKZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7CgkKCS8qKi8KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdqb3VldXJzJywgJHBhcmFtcyk7CiAgICAJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2FjdGlvbi5hZG1pbl9qb3VldXJzX3RhYi5waHAnKTsKICAgCWVjaG8gJHRoaXMtPkVuZFRhYigpOwoJLyoqLwoKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdlcXVpcGVzJyAsICRwYXJhbXMpOy8vbGVzIMOpcXVpcGVzCiAgICAJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2FjdGlvbi5hZG1pbl90ZWFtc190YWIucGhwJyk7CiAgIAllY2hvICR0aGlzLT5FbmRUYWIoKTsKCQoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2luZGl2cycgLCAkcGFyYW1zKTsvL2xlcyB0eXBlcyBkZSBjb21ww6l0aXRpb25zCglpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvYWN0aW9uLmFkbWluX2NvbXBldHNfaW5kaXZzX3RhYi5waHAnKTsKCWVjaG8gJHRoaXMtPkVuZFRhYigpOwoJCgllY2hvICR0aGlzLT5TdGFydFRhYignY29tcGV0cycgLCAkcGFyYW1zKTsvL2xlcyB0eXBlcyBkZSBjb21ww6l0aXRpb25zCglpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvYWN0aW9uLmFkbWluX2NvbXBldHNfdGFiLnBocCcpOwoJZWNobyAkdGhpcy0+RW5kVGFiKCk7CgkKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdjYWxlbmRyaWVyJywgJHBhcmFtcyk7Ly9DYWxlbmRyaWVyCiAgICAJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2FjdGlvbi5hZG1pbl9jYWxlbmRhcl90YWIucGhwJyk7CiAgIAllY2hvICR0aGlzLT5FbmRUYWIoKTsKCiAgICAgICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2ZmdHQnLCAkcGFyYW1zKTsvL0ZGVFQKICAgIAlpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvYWN0aW9uLmFkbWluX2ZmdHRfdGFiLnBocCcpOwogICAJZWNobyAkdGhpcy0+RW5kVGFiKCk7CQogCgllY2hvICR0aGlzLT5TdGFydFRhYignc3BpZCcgLCAkcGFyYW1zKTsvL1NwaWQKICAgIAlpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvYWN0aW9uLmFkbWluX3NwaWRfdGFiLnBocCcpOwogICAJZWNobyAkdGhpcy0+RW5kVGFiKCk7CgogICAgICAgCgoJLyoKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdkaXZpc2lvbnMnLCAkcGFyYW1zKTsvL2xlIGpvdXJuYWwKICAgIAlpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvYWN0aW9uLmFkbWluX2RpdmlzaW9uc190YWIucGhwJyk7CiAgIAllY2hvICR0aGlzLT5FbmRUYWIoKTsKCQoKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdwb3VsZXMnICwgJHBhcmFtcyk7Ly9yw6lzdWx0YXRzIGRlcyBwb3VsZXMKICAgIAlpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvYWN0aW9uLmFkbWluX3BvdWxlc190YWIyLnBocCcpOwogICAJZWNobyAkdGhpcy0+RW5kVGFiKCk7CgkqLwoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3JlY3VwJyAsICRwYXJhbXMpOwogICAgCWluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9hY3Rpb24uYWRtaW5fcmVjdXBfdGFiLnBocCcpOwogICAJZWNobyAkdGhpcy0+RW5kVGFiKCk7CgoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3NpdHVhdGlvbicgLCAkcGFyYW1zKTsvL3NpdHVhdGlvbiBtZW5zdWVsbGUKICAgIAlpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvYWN0aW9uLmFkbWluX3NpdHVhdGlvbl9tZW5zdWVsbGVfdGFiLnBocCcpOwogICAJZWNobyAkdGhpcy0+RW5kVGFiKCk7CgoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2pvdXJuYWwnLCAkcGFyYW1zKTsvL2xlIGpvdXJuYWwKICAgIAlpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvYWN0aW9uLmFkbWluX2pvdXJuYWxfdGFiLnBocCcpOwogICAJZWNobyAkdGhpcy0+RW5kVGFiKCk7CmlmKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgU2V0IFByZWZzJykpewoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2NvbmZpZ3VyYXRpb24nICwgJHBhcmFtcyk7CglpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvYWN0aW9uLmFkbWluX29wdGlvbnNfdGFiLnBocCcpOwoJZWNobyAkdGhpcy0+RW5kVGFiKCk7CgllY2hvICR0aGlzLT5TdGFydFRhYignY29tcHRlJyAsICRwYXJhbXMpOwoJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2FjdGlvbi5hZG1pbl9jb21wdGVfdGFiLnBocCcpOwoJZWNobyAkdGhpcy0+RW5kVGFiKCk7Cn0KZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOwovL29uIGEgcmVmZXJtw6kgbGVzIG9uZ2xldHMKCi8vZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbl9wYW5lbC50cGwnKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.delete.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBEZWxldGUnKSkKCXsKCSRwYXJhbXMgPSBhcnJheSgnbWVzc2FnZSc9PkxhbmcoJ25lZWRwZXJtaXNzaW9uJyksICdhY3RpdmVfdGFiJyA9PiAndXNlcnMnKTsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCcnLCAkcGFyYW1zKTsKCX0KCQokZXJyb3IgPSAwOwokZGVzaWduYXRpb24gPSAnJzsKCSRyZWNvcmRfaWQgPSAnJzsKCWlmIChpc3NldCgkcGFyYW1zWydyZWNvcmRfaWQnXSkgJiYgJHBhcmFtc1sncmVjb3JkX2lkJ10gIT0gJycpCgl7CgkJJHJlY29yZF9pZCA9ICRwYXJhbXNbJ3JlY29yZF9pZCddOwoJfQoJZWxzZQoJewoJCQkkZXJyb3IrKzsKCX0KCSR0eXBlX2NvbXBldCA9ICcnOwoJaWYoaXNzZXQoJHBhcmFtc1sndHlwZV9jb21wZXQnXSkgJiYgJHBhcmFtc1sndHlwZV9jb21wZXQnXSAhPScnKQoJewoJCQkgJHR5cGVfY29tcGV0ID0gJHBhcmFtc1sndHlwZV9jb21wZXQnXTsKCX0KCWVsc2UKCXsKCQkJJGVycm9yKys7Cgl9CgkJCgkJaWYgKCRlcnJvcj09MCkKCQl7CgkJCXN3aXRjaCgkdHlwZV9jb21wZXQpCgkJCXsKCQkJCWNhc2UgICJzcGlkIiA6CgoJCQkJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIFdIRVJFIGlkID0gPyI7CgkJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJlY29yZF9pZCkpOwoJCQkJCQoJCQkJCWlmKCEkZGJyZXN1bHQpCgkJCQkJewoJCQkJCQkkZGVzaWduYXRpb24uPSAkZGItPkVycm9yTXNnKCk7CgkJCQkJCQoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkZGVzaWduYXRpb24uPSJSw6lzdWx0YXQgc3VwcHJpbcOpIjsKCQkJCQkJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJCQkJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzcGlkJyk7CgkJCQkJfQkJCQoKCQkJCWJyZWFrOwoJCQkJY2FzZSAiZmZ0dCIgOgoKCgkJCQkJLy9Ob3cgcmVtb3ZlIHRoZSBhcnRpY2xlCgkJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIFdIRVJFIGlkID0gPyI7CgkJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJlY29yZF9pZCkpOwoKCQkJCQkkdGhpcy0+U2V0TWVzc2FnZSgnUsOpc3VsdGF0IHN1cHByaW3DqScpOwoJCQkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2ZmdHQnKTsKCQkJCWJyZWFrOwoJCQkJY2FzZSAidHlwZV9jb21wZXQiIDoKCgoJCQkJCS8vTm93IHJlbW92ZSB0aGUgYXJ0aWNsZQoJCQkJCS8vIEF2YW50IGRlIHN1cHByaW1lciBsJ2VucmVnaXN0cmVtZW50LCBzJ2FnaXQtaWwgZCd1bmUgY29tcGV0IGluZGl2aWR1ZWxsZXMgPwoJCQkJCS8vIHNpIG91aSBhbG9ycyBvbiBkw6l0cnVpdCBhdXNzaSBsZXMgZW5yZWdpc3RyZW1lbnRzIGNvcnJlc3BvbmRhbnRzIGRlIGxhIHRhYmxlIHBhcnRpY2lwZSAKCQkJCQkkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIFdIRVJFIGlkID0gPyI7CgkJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJlY29yZF9pZCkpOwoKCQkJCQkkdGhpcy0+U2V0TWVzc2FnZSgnVHlwZSBkZSBjb21ww6l0aXRpb24gc3VwcHJpbcOpZScpOwoJCQkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2NvbXBldHMnKTsKCQkJCWJyZWFrOwoJCQkJY2FzZSAidGVhbXMiIDogCgkJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIFdIRVJFIGlkID0gPyI7CgkJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJlY29yZF9pZCkpOwoKCQkJCQkkdGhpcy0+U2V0TWVzc2FnZSgnRXF1aXBlIHN1cHByaW3DqWUnKTsKCQkJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdlcXVpcGVzJyk7CgkJCQlicmVhazsKCQkJCQoJCQkJY2FzZSAiY2FsZW5kcmllciIgOiAKCQkJCQkkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIgV0hFUkUgaWQgPSA/IjsKCQkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmVjb3JkX2lkKSk7CgoJCQkJCSR0aGlzLT5TZXRNZXNzYWdlKCdEYXRlIHN1cHByaW3DqWUnKTsKCQkJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdjYWxlbmRyaWVyJyk7CgkJCQlicmVhazsKCQkJCQoJCQkJY2FzZSAicG91bGVzIiA6IAoJCQkJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG91bGVzX3JlbmNvbnRyZXMgV0hFUkUgaWQgPSA/IjsKCQkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmVjb3JkX2lkKSk7CgoJCQkJCSR0aGlzLT5TZXRNZXNzYWdlKCdNYXRjaCBzdXBwcmltw6knKTsKCQkJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdwb3VsZXMnKTsKCQkJCWJyZWFrOwoJCQkJCgkJCQljYXNlICJzaXRfbWVucyIgOgoJCQkJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2l0X21lbnMgV0hFUkUgaWQgPSA/IjsKCQkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmVjb3JkX2lkKSk7CgkJCQkJCgkJCQkJJHRoaXMtPlNldE1lc3NhZ2UoJ3NpdHVhdGlvbiBzdXBwcmltw6llJyk7CgkJCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignc2l0dWF0aW9uJyk7CgkJCQlicmVhazsKCQkJCQoJCQkJY2FzZSAiZGl2aXNpb24iIDoKCQkJCQkkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2RpdmlzaW9ucyBXSEVSRSBpZGRpdmlzaW9uID0gPyI7CgkJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJlY29yZF9pZCkpOwoJCQkJCQoJCQkJCS8vb24gc3VwcHJpbWUgYXVzc2kgbGVzIGF1dHJlcyB0b3VycyAsIHBhcnRpZXMsIGV0IGNsYXNzZW1lbnQgYWZmaWxpw6lzCgkJCQkJLy9vbiBjb21tZW5jZSBwYXIgbGVzIHRvdXJzCgkJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfdG91cnMgV0hFUkUgaWRkaXZpc2lvbiA9ID8iOwoJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCQkJCQkvL29uIGNvbnRpbnVlIHBhciBsZXMgcGFydGllcwoJCQkJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X3BhcnRpZXMgV0hFUkUgaWRkaXZpc2lvbiA9ID8iOwoJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCQkJCQkvL2VuZmluIGxlcyBjbGFzc2VtZW50cwoJCQkJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X2NsYXNzZW1lbnQgV0hFUkUgaWRkaXZpc2lvbiA9ID8iOwoJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCQkJCQkKCQkJCQkkdGhpcy0+U2V0TWVzc2FnZSgnRGl2aXNpb24gc3VwcHJpbcOpZScpOwoJCQkJCSR0aGlzLT5SZWRpcmVjdCgnZGVmYXVsdGFkbWluJyk7CgkJCQlicmVhazsKCQkJCWNhc2UgImNsYXNzZW1lbnQiIDogCgkJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfY2xhc3NlbWVudCBXSEVSRSB0YWJsZWF1ID0gPyI7CgkJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJlY29yZF9pZCkpOwoJCQkJCS8vbGUgY2xhc3NlbWVudCBlc3QgZWZmYWPDqSwgaWwgZmF1dCByw6l0YWJsaXIgdXBsb2FkZWRfY2xhc3NlbWVudCDDoCBOVUxMCgkJCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X3RvdXJzIFNFVCB1cGxvYWRlZF9jbGFzc2VtZW50ID0gTlVMTCBXSEVSRSB0YWJsZWF1ID0gPyI7CgkJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJlY29yZF9pZCkpOwoJCQkJCSR0aGlzLT5TZXRNZXNzYWdlKCdDbGFzc2VtZW50IHN1cHByaW3DqScpOwoJCQkJCSR0aGlzLT5SZWRpcmVjdCgnZGVmYXVsdGFkbWluJyk7CgkJCQkJCgkJCQljYXNlICJkZW1vIiA6CgkJCQkJJHF1ZXJ5ID0gIlRSVU5DQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIjsKCQkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCQkJCQkKCQkJCQkkcXVlcnkgPSAiVFJVTkNBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpY2lwZSI7CgkJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJCQkJCgkJCQkJJHF1ZXJ5ID0gIlRSVU5DQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIjsKCQkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCQkJCQkKCQkJCQkkcXVlcnkgPSAiVFJVTkNBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCI7CgkJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJCQkJCgkJCQkJJHF1ZXJ5ID0gIlRSVU5DQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIjsKCQkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCQkJCQkKCQkJCQkkcXVlcnkgPSAiVFJVTkNBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMiOwoJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCQkJCQoJCQkJCSRxdWVyeSA9ICJUUlVOQ0FURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG91bGVzX3JlbmNvbnRyZXMiOwoJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCQkJCQoJCQkJCSRxdWVyeSA9ICJUUlVOQ0FURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2l0X21lbnMiOwoJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCQkJCQoJCQkJCSRxdWVyeSA9ICJUUlVOQ0FURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2FsZW5kcmllciI7CgkJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJCQkJCgkJCQkJJHF1ZXJ5ID0gIlRSVU5DQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jb21tIjsKCQkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCQkJCQkKCQkJCQkkcXVlcnkgPSAiVFJVTkNBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwIjsKCQkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCQkJCQkKCQkJCQkkcXVlcnkgPSAiVFJVTkNBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2FkdmVyc2FpcmVzIjsKCQkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCQkJCQkKCQkJCQkkcXVlcnkgPSAiVFJVTkNBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NsYXNzZW1lbnQiOwoJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCQkJCQoJCQkJCSRxdWVyeSA9ICJUUlVOQ0FURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2aXNpb25zIjsKCQkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCQkJCQkKCQkJCQkkcXVlcnkgPSAiVFJVTkNBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2Rpdl9jbGFzc2VtZW50IjsKCQkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCQkJCQkKCQkJCQkkcXVlcnkgPSAiVFJVTkNBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2Rpdl9wYXJ0aWVzIjsKCQkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCQkJCQkKCQkJCQkkcXVlcnkgPSAiVFJVTkNBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2Rpdl90b3VycyI7CgkJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJCQkJCgkJCQkJJHF1ZXJ5ID0gIlRSVU5DQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19mZXVpbGxlc19yZW5jb250cmVzIjsKCQkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCQkJCQkKCQkJCQkkcXVlcnkgPSAiVFJVTkNBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlbmNvbnRyZXNfcGFydGllcyI7CgkJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJCQkJCgkJCQlicmVhazsKCQkJCQoJCQl9CgkJfQoJCQoJCQoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.delete_all.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CiRtZXNzYWdlID0gJyc7CgppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgRGVsZXRlJykpCnsKJHBhcmFtcyA9IGFycmF5KCdtZXNzYWdlJz0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSwgJ2FjdGl2ZV90YWInID0+ICd1c2VycycpOwokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywnJywgJHBhcmFtcyk7Ci8qZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CnJldHVybjsqLwp9CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CiRkZXNpZ25hdGlvbiA9ICcnOwoKJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19hZHZlcnNhaXJlcyI7CiRkYi0+RXhlY3V0ZSgkcXVlcnkpOwokZGVzaWduYXRpb24uPSJUYWJsZSB0ZW1wb3JhaXJlIHZpZMOpZSAhIjsKCiRxdWVyeTIgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIFNFVCBzYWlzb24gPSA/LCBzcGlkX3RvdGFsID0gJzAnIjsKJGRicmVzdWx0IC0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsIGFycmF5KCRzYWlzb24pKTsKCgoKJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwokdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdqb3VldXJzJyxhcnJheSgnbWVzc2FnZSc9PidlbXB0eScpKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.delete_contact.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCQlpZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKJG1lc3NhZ2UgPSAnJzsKCgkJaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIERlbGV0ZScpKQoJCXsKCQkkcGFyYW1zID0gYXJyYXkoJ21lc3NhZ2UnPT5MYW5nKCduZWVkcGVybWlzc2lvbicpLCAnYWN0aXZlX3RhYicgPT4gJ3VzZXJzJyk7CgkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsJycsICRwYXJhbXMpOwoJCS8qZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CgkJcmV0dXJuOyovCgkJfQoKCQkkcmVjb3JkX2lkID0gJyc7CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ3JlY29yZF9pZCddKSAmJiAkcGFyYW1zWydyZWNvcmRfaWQnXSAhPSAnJykKCQl7CgkJCSRyZWNvcmRfaWQgPSAkcGFyYW1zWydyZWNvcmRfaWQnXTsKCQl9CgkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jb21tIFdIRVJFIGlkID0gPyI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcmVjb3JkX2lkKSk7CgkJaWYoISRkYnJlc3VsdCl7CgkJCSRtZXNzYWdlLj0kZGItPkVycm9yTXNnKCk7CgkJfQoJCQoKJHRoaXMtPlNldE1lc3NhZ2UoIiRtZXNzYWdlIik7CiR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.details.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKJHNhaXNvbl9lbl9jb3VycyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJHNhaXNvbiA9IChpc3NldCgkcGFyYW1zWydzYWlzb24nXSkpPyRwYXJhbXNbJ3NhaXNvbiddOiRzYWlzb25fZW5fY291cnM7CiRyZWNvcmRfaWQgPSAnJzsKaWYoaXNzZXQoJHBhcmFtc1sncmVjb3JkX2lkJ10pICYmICRwYXJhbXNbJ3JlY29yZF9pZCddICE9JycpCnsKCgkkcmVjb3JkX2lkID0gJHBhcmFtc1sncmVjb3JkX2lkJ107Cn0KZWxzZQp7CgkkbWVzc2FnZSA9ICdVbiBwYiBlc3Qgc3VydmVudSc7Cn0KCgoKLy9sZSBudW3DqXJvIGRlIGwnw6lxdWlwZSBlc3Qgb2ssIG9uIGNvbnRpbnVlCi8vb24gdmEgZCdhYm9yZCByw6ljdXDDqXJlciBsYSBmZXVpbGxlIGRlIG1hdGNoCiRxdWVyeSA9ICJTRUxFQ1QgaWQsIGZrX2lkLCB4amEsIHhjYSwgeGpiLCB4Y2IgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZmV1aWxsZXNfcmVuY29udHJlcyAgV0hFUkUgZmtfaWQgPSA/IjsKJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmVjb3JkX2lkKSk7CiRsaWduZXMgPSAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk7CiRyb3dhcnJheSA9IGFycmF5KCk7CmlmKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk+MCkKewoJd2hpbGUoJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCXsKCQkkb25lcm93PSBuZXcgU3RkQ2xhc3MoKTsKCQkkb25lcm93LT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJCSRvbmVyb3ctPmlkPSAkcm93WydpZCddOwoJCSRvbmVyb3ctPmZrX2lkID0gJHJvd1snZmtfaWQnXTsKCQkkb25lcm93LT54amEgPSAkcm93Wyd4amEnXTsKCQkkb25lcm93LT54Y2E9ICRyb3dbJ3hjYSddOwoJCSRvbmVyb3ctPnhqYj0gICRyb3dbJ3hqYiddOwoJCSRvbmVyb3ctPnhjYj0gJHJvd1sneGNiJ107CgkJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCQkkcm93YXJyYXlbXT0gJG9uZXJvdzsKCX0KfQoKJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Jlc3VsdHNmb3VuZHRleHQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwoKCi8qKi8KCiRxdWVyeTIgPSAiU0VMRUNUIGlkLCBma19pZCwgam91ZXVyQSwgc2NvcmVBLCBqb3VldXJCLCBzY29yZUIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVuY29udHJlc19wYXJ0aWVzIFdIRVJFIGZrX2lkID0gPyI7CiRwYXJtc1snZmtfaWQnXSA9ICRyZWNvcmRfaWQ7CgokZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCRwYXJtcyk7CiRyb3dhcnJheTIgPSBhcnJheSgpOwokaSA9IDA7CmlmKCRkYnJlc3VsdGF0ICYmICRkYnJlc3VsdGF0LT5SZWNvcmRDb3VudCgpPjApCnsKCQoJd2hpbGUoJHJvdzIgPSAkZGJyZXN1bHRhdC0+RmV0Y2hSb3coKSkKCXsKCQkkaSsrOwoJCSRpZCA9ICRyb3cyWydpZCddOwoJCSRma19pZCA9ICRyb3cyWydpZHBvdWxlJ107CgkJJGlkZGl2ID0gJHJvdzJbJ2lkZGl2J107CgkJJG9uZXJvdzIgPSBuZXcgU3RkQ2xhc3MoKTsKCQkkb25lcm93Mi0+cm93Y2xhc3MgPSRyb3djbGFzczsKCQkkb25lcm93Mi0+aWQgPSAkcm93MlsnaWQnXTsKCQkkb25lcm93Mi0+ZmtfaWQgPSAkcm93MlsnZmtfaWQnXTsKCQkkb25lcm93Mi0+am91ZXVyQSA9ICRyb3cyWydqb3VldXJBJ107CgkJJG9uZXJvdzItPnNjb3JlQSA9ICRyb3cyWydzY29yZUEnXTsKCQkkb25lcm93Mi0+am91ZXVyQiA9ICRyb3cyWydqb3VldXJCJ107CgkJJG9uZXJvdzItPnNjb3JlQiA9ICRyb3cyWydzY29yZUInXTsKCQkkcm93YXJyYXkyW10gID0gJG9uZXJvdzI7Cgl9CgkKCSRzbWFydHktPmFzc2lnbignaXRlbWNvdW50MicsIGNvdW50KCRyb3dhcnJheTIpKTsKCSRzbWFydHktPmFzc2lnbignaXRlbXMyJywgJHJvd2FycmF5Mik7Cn0KLyoqLwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2RldGFpbHMudHBsJyk7CiMKI0VPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.display_unable_players.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7Ci8vcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19maWxlX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwoKJG1vaXNfY291cmFudCA9IGRhdGUoJ24nKTsKJGFubmVlX2NvdXJhbnRlID0gZGF0ZSgnWScpOwokc21hcnR5LT5hc3NpZ24oJ2Rpc3BsYXlfZW5hYmxlX3BsYXllcnMnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2pvdWV1cnNfcmVjdXBfdGFiJywgJHJldHVybmlkLCAnSm91ZXVycyBhY3RpZnMnKSk7CgoKJHJlc3VsdD0gYXJyYXkgKCk7CiRxdWVyeT0gIlNFTEVDVCBpZCwgQ09OQ0FUX1dTKCcgJyxub20sIHByZW5vbSkgQVMgam91ZXVyLCBsaWNlbmNlLCBhY3RpZiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzICBXSEVSRSBhY3RpZiA9ICcwJyAgT1JERVIgQlkgaWQgQVNDIjsKLy9lY2hvICRxdWVyeTsKJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKJHJvd2NsYXNzPSAncm93MSc7CiRyb3dhcnJheT0gYXJyYXkgKCk7CmlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQogICAgICB7CgkKCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCSRvbmVyb3ctPmlkPSAkcm93WydpZCddOwoJJG9uZXJvdy0+am91ZXVyPSAkcm93Wydqb3VldXInXTsKCQoJaWYoJHJvd1snYWN0aWYnXSA9PScxJyl7CgkJJG9uZXJvdy0+ZWRpdGxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FibGVfcGxheWVyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL3RydWUuZ2lmJywgJHRoaXMtPkxhbmcoJ3VuYWJsZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10sICJhY3RpZiI9PiIwIikpOwoJfQoJZWxzZSB7CgkJJG9uZXJvdy0+ZWRpdGxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FibGVfcGxheWVyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCdlbmFibGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddLCJhY3RpZiI9PiIxIikpOwoJfQoJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCSRyb3dhcnJheVtdPSAkb25lcm93OwogICAgICB9CiAgfQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7CiRzbWFydHktPmFzc2lnbigncmV0cmlldmVfdXNlcnMnLCAKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV91c2VycycsICRyZXR1cm5pZCwnUsOpY3Vww6lyYXRpb24gZGUgdG91cyBsZXMgam91ZXVycycpKTsKJHNtYXJ0eS0+YXNzaWduKCdjcmVhdGVsaW5rJywgCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnY3JlYXRlX25ld191c2VyMycsICRyZXR1cm5pZCwKCQkJCSAgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJHRoaXMtPkxhbmcoJ2FkZG5ld3NoZWV0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSkuCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnY3JlYXRlX25ld191c2VyMycsICRyZXR1cm5pZCwgCgkJCQkgICR0aGlzLT5MYW5nKCdhZGRuZXdzaGVldCcpLCAKCQkJCSAgYXJyYXkoKSkpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCd1bmFibGVfcGxheWVycy50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.do_add_all_sit_mens.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwokcGhhc2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKCglpZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgTWFuYWdlJykpCgl7CgkJJGRlc2lnbmF0aW9uLj0kdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKTsKCQkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignc2l0dWF0aW9uJyk7Cgl9CgkkYW5uZWUgPSBkYXRlKCdZJyk7Ci8vb24gcsOpY3Vww6hyZSBsZXMgdmFsZXVycwovL3BvdXIgbCdpbnN0YW50IHBhcyBkJ2VycmV1cgokZXJyb3IgPSAwOwokaSA9IDA7CgkJCgkJJGxpY2VuY2UgPSAnJzsKCQlpZiAoaXNzZXQoJHBhcmFtc1snbGljZW5jZSddKSAmJiAkcGFyYW1zWydsaWNlbmNlJ10gIT0gJycpCgkJewoJCQkkbGljZW5jZSA9ICRwYXJhbXNbJ2xpY2VuY2UnXTsKCQl9CgkJZWxzZQoJCXsKCQkJJGVycm9yKys7CgkJfQovL3Zhcl9kdW1wKCRsaWNlbmNlKTsKCQkkY2hvaXhfbW9pcyA9ICcnOwoJCWlmIChpc3NldCgkcGFyYW1zWydjaG9peF9tb2lzJ10pICYmICRwYXJhbXNbJ2Nob2l4X21vaXMnXSAhPSAnJykKCQl7CgkJCSRjaG9peF9tb2lzID0gJHBhcmFtc1snY2hvaXhfbW9pcyddOwoJCQkvLyRlcnJvcisrOwoJCX0KCQllbHNlCgkJewoJCQkkZXJyb3IrKzsKCQl9CgkJaWYoJGVycm9yPjApCgkJewoJCQkkdGhpcy0+U2V0TWVzc2FnZSgncGFyYW3DqHRyZXMgbWFucXVhbnRzJyk7CgkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3NpdHVhdGlvbicpOwoJCX0KCQkKCQlmb3JlYWNoKCRsaWNlbmNlIGFzICRrZXk9PiR2YWx1ZSkKCQl7CgkJCS8vZWNobyAka2V5LiI9PiIuJHZhbHVlLiI8YnIvPiI7CgkJCWlmKCAkdmFsdWUgIT0wIHx8ICR2YWx1ZSAhPScnKQoJCQkKCQkJewoJCQkJCgkJCQkkcXVlcnkgPSAiU0VMRUNUIG1vaXMsIGFubmVlLCBsaWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIFdIRVJFIGxpY2VuY2UgPSA/IEFORCBtb2lzID0gPyBBTkQgYW5uZWUgPSA/IjsKCQkJCS8vZWNobyAkcXVlcnk7CgkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgka2V5LCRjaG9peF9tb2lzLCRhbm5lZSkpOwoJCQkKCQkJCQlpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPT0wKQoJCQkJCXsKCQkJCQkJCgkJCQkJCSRxdWVyeTIgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIChpZCwgZGF0ZWNyZWF0ZWQsIGRhdGVtYWosIHNhaXNvbixtb2lzLCBhbm5lZSwgcGhhc2UsIGxpY2VuY2UsIG5vbSwgcHJlbm9tLCBwb2ludHMpIFZBTFVFUyAoJycsPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkJCQkvL2VjaG8gJHF1ZXJ5MjsKCQkJCQkJJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJG5vdywgJG5vdywkc2Fpc29uLCAkY2hvaXhfbW9pcywgJGFubmVlLCAkcGhhc2UsICRrZXksJG5vbSwgJHByZW5vbSwkdmFsdWUpKTsKCQkJCQkJJGkrKzsKCQkJCQkJCgkJCQkJfQoJCQl9CgkJCQkKCQl9CgokZGVzaWduYXRpb24uPSRpLiIgc2l0dWF0aW9uKHMpIG1vZGlmacOpZShzKSI7CiR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignc2l0dWF0aW9uJyk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.do_add_compet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwoKCWlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKCXsKCQkkZGVzaWduYXRpb24gLj0kdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKTsKCQkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignY29tcGV0cycpOwoJfQovL29uIHLDqWN1cMOocmUgbGVzIHZhbGV1cnMKLy9wb3VyIGwnaW5zdGFudCBwYXMgZCdlcnJldXIKJGVycm9yID0gMDsKJGVkaXQgPSAwOy8vcG91ciBzYXZvaXIgc2kgb24gZmFpdCB1biB1cGRhdGUgb3UgdW4gaW5zZXJ0OyAwID0gaW5zZXJ0CgkJJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKCQkkaWRlcHJldXZlID0gJyc7CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2lkZXByZXV2ZSddKSAmJiAkcGFyYW1zWydpZGVwcmV1dmUnXSAhPSAnJykKCQl7CgkJCSRpZGVwcmV1dmUgPSAkcGFyYW1zWydpZGVwcmV1dmUnXTsKCQl9CgkJZWxzZQoJCXsKCQkJJGVycm9yKys7CgkJfQoJCSRkYXRlX2RlYnV0ID0gJyc7CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2RhdGVfZGVidXQnXSkgJiYgJHBhcmFtc1snZGF0ZV9kZWJ1dCddICE9JycpCgkJewoJCQkkZGF0ZV9kZWJ1dCA9ICRwYXJhbXNbJ2RhdGVfZGVidXQnXTsKCQl9CgkJZWxzZQoJCXsKCQkJJGVycm9yKys7CgkJfQoJCSRkYXRlX2ZpbiA9ICcnOwoJCWlmIChpc3NldCgkcGFyYW1zWydkYXRlX2ZpbiddKSAmJiAkcGFyYW1zWydkYXRlX2ZpbiddICE9JycpCgkJewoJCQkkZGF0ZV9maW4gPSAkcGFyYW1zWydkYXRlX2ZpbiddOwoJCX0KCQllbHNlCgkJewoJCQkkZGF0ZV9maW4gPSAkZGF0ZV9kZWJ1dDsKCQl9CgkJJG51bWpvdXJuID0gJyc7CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ251bWpvdXJuJ10pICYmICRwYXJhbXNbJ251bWpvdXJuJ10gIT0nJykKCQl7CgkJCSRudW1qb3VybiA9ICRwYXJhbXNbJ251bWpvdXJuJ107CgkJfQoJCWVsc2UKCQl7CgkJCSRlcnJvcisrOwoJCX0KCQkkaW5kaXZzID0gJyc7CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2luZGl2cyddKSAmJiAkcGFyYW1zWydpbmRpdnMnXSAhPScnKQoJCXsKCQkJJGluZGl2cyA9ICRwYXJhbXNbJ2luZGl2cyddOwoJCX0KCQkKCQkvL3MnYWdpdC1pbCBkJ3VuZSDDqWRpdGlvbiBvdSBkJ3VuIGFqb3V0ID8KCQkkcmVjb3JkX2lkID0gJyc7CgkJaWYoaXNzZXQoJHBhcmFtc1sncmVjb3JkX2lkJ10pICYmICRwYXJhbXNbJ3JlY29yZF9pZCddICE9JycpCgkJewoJCQkkcmVjb3JkX2lkID0gJHBhcmFtc1sncmVjb3JkX2lkJ107CgkJCSRlZGl0ID0gMTsvL2MnZXN0IHVuIHVwZGF0ZQoJCX0KCQkkdGFnID0gcGluZ19hZG1pbl9vcHM6OnRhZygkcmVjb3JkX2lkLCRpZGVwcmV1dmUsJGluZGl2cywkZGF0ZV9kZWJ1dCwkZGF0ZV9maW4pOwoJCQoJCS8vb24gY2FsY3VsZSBsZSBuYiBkJ2VycmV1cgoJCWlmKCRlcnJvcj4wKQoJCXsKCQkJJHRoaXMtPlNldG1lc3NhZ2UoJ1BhcmFtZXRyZXMgcmVxdWlzIG1hbnF1YW50cyAhJyk7CgkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2NvbXBldHMnKTsKCQl9CQkKCQkKCQlpZigkZWRpdCA9PSAwKQoJCXsKCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jYWxlbmRyaWVyIChpZCxzYWlzb24sIGlkZXByZXV2ZSwgZGF0ZV9kZWJ1dCwgZGF0ZV9maW4sIG51bWpvdXJuLHRhZykgVkFMVUVTICgnJyw/LD8sID8sID8sID8sPykiOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkc2Fpc29uLCRpZGVwcmV1dmUsJGRhdGVfZGVidXQsICRkYXRlX2ZpbiwgJG51bWpvdXJuLCR0YWcpKTsKCQkJCgkJfQoJCWVsc2UKCQl7CgkJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIgU0VUIGlkZXByZXV2ZSA9ID8sIGRhdGVfZGVidXQgPT8sIGRhdGVfZmluID0gPywgbnVtam91cm4gPSA/LHRhZyA9ID8gV0hFUkUgaWQgPSA/IjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGlkZXByZXV2ZSwkZGF0ZV9kZWJ1dCwgJGRhdGVfZmluLCAkbnVtam91cm4sJHRhZywkcmVjb3JkX2lkKSk7CgkJCQoJCX0KCQkKCQkvL29uIGVzc2FpZSBkJ2luY2x1cmUgZGVzIGRhdGVzIGF1dG9tYXRpcXVlbWVudAoJCS8vZCdhYm9yZCBzJ2Fzc3VyZXIgcXVlIGxhIGNvbXDDqXRpdGlpb24gZW4gcXVlc3Rpb24gZHNpcG9zZSBkZSBwbHVzaWV1cnMgdG91cnMKCQkvL3NpIG91aSBvbiBmYWl0IGxhIHJlcXVldGUKCQkJJHF1ZXJ5ID0gIlNFTEVDVCBESVNUSU5DVCB0b3VyIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2Rpdl90b3VycyBXSEVSRSBpZGVwcmV1dmUgPSA/IjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGlkZXByZXV2ZSkpOwoJCQlpZiggJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4xKQoJCQl7CgkJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfdG91cnMgU0VUIGRhdGVfZGVidXQgPSA/LCBkYXRlX2ZpbiA9ID8gV0hFUkUgaWRlcHJldXZlID0gPyBBTkQgdG91ciA9ID8gQU5EIHNhaXNvbiA9ID8iOwoJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGRhdGVfZGVidXQsICRkYXRlX2ZpbiwgJGlkZXByZXV2ZSwkbnVtam91cm4sICRzYWlzb24pKTsKCgkJCQlpZighJGRicmVzdWx0KQoJCQkJewoJCQkJCSRkZXNpZ25hdGlvbiA9ICRkYi0+RXJyb3JNc2coKTsKCQkJCQkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkJCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignY2FsZW5kcmllcicpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKCQkJCQkkc3RhdHVzID0gJ09rJzsKCQkJCQkkZGVzaWduYXRpb24gPSAiVW5lIG5vdXZlbGxlIGRhdGUgZHUgY2FsZW5kcmllciBhIMOpdMOpIGVudHLDqWUiOwoJCQkJCSRhY3Rpb24gPSAnZG9fYWRkX2NvbXBldCc7CgkJCQkJcGluZ19hZG1pbl9vcHM6OmVjcmlyZWpvdXJuYWwoJG5vdywkc3RhdHVzLCAkZGVzaWduYXRpb24sJGFjdGlvbik7CgkJCQl9CgkJCX0KCQkJCgkJCgokdGhpcy0+U2V0TWVzc2FnZSgnRGF0ZSBlbnJlZ2lzdHLDqWUgISBQZW5zZXogw6AgcsOpY3Vww6lyZXIgbGVzIGRpdmlzaW9ucywgcG91bGVzIGV0IHRvdXJzICEnKTsKJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignY2FsZW5kcmllcicpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.do_add_sit_mens.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwokcGhhc2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKCWlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKCXsKCQkkZGVzaWduYXRpb24uPSR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpOwoJCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzaXR1YXRpb24nKTsKCX0KCSRhbm5lZSA9IGRhdGUoJ1knKTsKCSRtb2lzID0gZGF0ZSgnbicpOwoJCi8vb24gcsOpY3Vww6hyZSBsZXMgdmFsZXVycwovL3BvdXIgbCdpbnN0YW50IHBhcyBkJ2VycmV1cgokZXJyb3IgPSAwOwokaSA9IDA7CgkJCgkJJGxpY2VuY2UgPSAnJzsKCQlpZiAoaXNzZXQoJHBhcmFtc1snbGljZW5jZSddKSAmJiAkcGFyYW1zWydsaWNlbmNlJ10gIT0gJycpCgkJewoJCQkkbGljZW5jZSA9ICRwYXJhbXNbJ2xpY2VuY2UnXTsKCQl9CgkJZWxzZQoJCXsKCQkJJGVycm9yKys7CgkJfQoJCSRub20gPSAnJzsKCQlpZiAoaXNzZXQoJHBhcmFtc1snbm9tJ10pICYmICRwYXJhbXNbJ25vbSddICE9ICcnKQoJCXsKCQkJJG5vbSA9ICRwYXJhbXNbJ25vbSddOwoJCX0KCQkKCQkkcHJlbm9tID0gJyc7CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ3ByZW5vbSddKSAmJiAkcGFyYW1zWydwcmVub20nXSAhPSAnJykKCQl7CgkJCSRwcmVub20gPSAkcGFyYW1zWydwcmVub20nXTsKCQl9CgkJCgkJCgkJJG1vbnRoID0gJyc7CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ21vbnRoJ10pICYmICRwYXJhbXNbJ21vbnRoJ10gIT0gJycpCgkJewoJCQkkbW9udGggPSAkcGFyYW1zWydtb250aCddOwoJCX0KCQkKCQllbHNlCgkJewoJCQkkZXJyb3IrKzsKCQl9CgkJCgkJaWYoJGVycm9yPjApCgkJewoJCQkkdGhpcy0+U2V0TWVzc2FnZSgncGFyYW3DqHRyZXMgbWFucXVhbnRzJyk7CgkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3NpdHVhdGlvbicpOwoJCX0KCQlmb3JlYWNoKCRtb250aCBhcyAka2V5PT4kdmFsdWUpCgkJewoJCQkKCQlpZigkcGhhc2UgPT0xKQoJCXsKCQkJJGFubmVlX3JlZiA9ICRhbm5lZTsKCQl9CgkJZWxzZWlmKCRwaGFzZSA9PTIpCgkJewoJCQlpZigka2V5ID49OSAmJiAka2V5IDw9MTIpCgkJCXsKCQkJCSRhbm5lZV9yZWYgPSAkYW5uZWUtMTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRhbm5lZV9yZWYgPSAkYW5uZWU7CgkJCX0KCQl9CgkJCSRxdWVyeSA9ICJTRUxFQ1QgbW9pcywgYW5uZWUsIGxpY2VuY2UgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2l0X21lbnMgV0hFUkUgbGljZW5jZSA9ID8gQU5EIG1vaXMgPSA/IEFORCBhbm5lZSA9ID8iOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSwka2V5LCRhbm5lZV9yZWYpKTsKCQkJCgkJCQlpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPT0wKQoJCQkJewoJCQkJCQoJCQkJCQoJCQkJCWlmKCAkdmFsdWUgPjAgKQoJCQkJCXsKCQkJCQkJCgkJCQkJJHF1ZXJ5MiA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2l0X21lbnMgKGlkLCBkYXRlY3JlYXRlZCwgZGF0ZW1haiwgc2Fpc29uLCBtb2lzLCBhbm5lZSwgcGhhc2UsIGxpY2VuY2UsIG5vbSwgcHJlbm9tLCBwb2ludHMpIFZBTFVFUyAoJycsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIjsKCQkJCQkvL2VjaG8gJHF1ZXJ5MjsKCQkJCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCBhcnJheSgkbm93LCAkbm93LCRzYWlzb24sICRrZXksICRhbm5lZV9yZWYsICRwaGFzZSwgJGxpY2VuY2UsJG5vbSwgJHByZW5vbSwkdmFsdWUpKTsKCQkJCQkkaSsrOwoJCQkJCX0KCQkJCX0KCQkJCS8qCgkJCQllbHNlaWYoJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPT0xKQoJCQkJewoJCQkJCS8vSWwgeSBhIGTDqWrDoCB1biBlbnJlZ2lzdHJlbWVudCwgZXN0LWlsIGNvbXBsZXQgPwoJCQkJCQoJCQkJCWlmKCR2YWx1ZSA+MCkKCQkJCQl7CgkJCQkJCSRxdWVyeTMgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyBTRVQgcG9pbnRzID0gPyBXSEVSRSBsaWNlbmNlID0gPyBBTkQgbW9pcyA9ID8iOwoJCQkJCQkkZGJyZXMgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MywgYXJyYXkoJHZhbHVlLCRsaWNlbmNlLCRrZXkpKTsKCQkJCQl9CgkJCQkJCgkJCQl9CgkJCQkqLwoJCX0KCiRkZXNpZ25hdGlvbiA9ICRpLiIgc2l0dWF0aW9uKHMpIG1vZGlmacOpZShzKSI7CiR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignc2l0dWF0aW9uJyk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.do_add_type_compet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwoKCWlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKCXsKCQkkZGVzaWduYXRpb24gLj0kdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKTsKCQkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignY29tcGV0cycpOwoJfQovL29uIHLDqWN1cMOocmUgbGVzIHZhbGV1cnMKLy9wb3VyIGwnaW5zdGFudCBwYXMgZCdlcnJldXIKJGRlc2lnbmF0aW9uID0gJyc7CiRlcnJvciA9IDA7CgkJJG5hbWUgPSAnJzsKCQlpZiAoaXNzZXQoJHBhcmFtc1snbmFtZSddKSAmJiAkcGFyYW1zWyduYW1lJ10gIT0nJykKCQl7CgkJCSRuYW1lID0gJHBhcmFtc1snbmFtZSddOwoJCX0KCQllbHNlCgkJewoJCQkkZXJyb3IrKzsKCQl9CgkJCgkJJGlkZXByZXV2ZSA9ICcnOwoJCWlmIChpc3NldCgkcGFyYW1zWydpZGVwcmV1dmUnXSkgJiYgJHBhcmFtc1snaWRlcHJldXZlJ10gIT0gJycpCgkJewoJCQkkaWRlcHJldXZlID0gJHBhcmFtc1snaWRlcHJldXZlJ107CgkJfQoJCWVsc2UKCQl7CgkJCSRlcnJvcisrOwoJCX0KCQkKCQkkY29lZmZpY2llbnQgPSAnJzsKCQlpZiAoaXNzZXQoJHBhcmFtc1snY29lZmZpY2llbnQnXSkgJiYgJHBhcmFtc1snY29lZmZpY2llbnQnXSAhPScnKQoJCXsKCQkJJGNvZWZmaWNpZW50ID0gJHBhcmFtc1snY29lZmZpY2llbnQnXTsKCQl9CgkJZWxzZQoJCXsKCQkJJGVycm9yKys7CgkJfQoJCSRpbmRpdnMgPSAnJzsKCQlpZiAoaXNzZXQoJHBhcmFtc1snaW5kaXZzJ10pICYmICRwYXJhbXNbJ2luZGl2cyddICE9JycpCgkJewoJCQkkaW5kaXZzID0gJHBhcmFtc1snaW5kaXZzJ107CgkJfQoJCWVsc2UKCQl7CgkJCSRlcnJvcisrOwoJCX0KCQkkaWRvcmdhID0gJyc7CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2lkb3JnYSddKSAmJiAkcGFyYW1zWydpZG9yZ2EnXSAhPScnKQoJCXsKCQkJJGlkb3JnYSA9ICRwYXJhbXNbJ2lkb3JnYSddOwoJCX0KCQllbHNlCgkJewoJCQkkZXJyb3IrKzsKCQl9CgkJCgkJLy9vbiBjYWxjdWxlIGxlIG5iIGQnZXJyZXVyCgkJaWYoJGVycm9yPjApCgkJewoJCQkkdGhpcy0+U2V0bWVzc2FnZSgnUGFyYW1ldHJlcyByZXF1aXMgbWFucXVhbnRzICEnKTsKCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignY29tcGV0cycpOwoJCX0JCQoJCSRlZGl0ID0gJyc7CgkJaWYoaXNzZXQoJHBhcmFtc1snZWRpdCddKSAmJiAkcGFyYW1zWydlZGl0J10gPT0nT3VpJykKCQl7CgkJCS8vb24gcmVnYXJkZSBsZSByZWNvcmRfaWQgcXVpIGVzdCBlbiBwYXJhbWV0cmUKCQkJaWYoaXNzZXQoJHBhcmFtc1sncmVjb3JkX2lkJ10pICYmICRwYXJhbXNbJ3JlY29yZF9pZCddICE9ICcnKQoJCQl7CgkJCQkkcmVjb3JkX2lkPSAkcGFyYW1zWydyZWNvcmRfaWQnXTsKCQkJfQoJCQkvL2lsIGZhdXQgYXVzc2kgY3LDqWVyIHVuIHRhZwoJCQkkdGFnID0gcGluZ19hZG1pbl9vcHM6OnRhZygkcmVjb3JkX2lkLCRpZGVwcmV1dmUsICRpbmRpdnMpOwoJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyBTRVQgbmFtZSA9ID8sIGNvZWZmaWNpZW50ID0gPywgaW5kaXZzID0gPyx0YWcgPSA/LGlkb3JnYSA9ID8gV0hFUkUgaWQgPSA/IjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5hbWUsICRjb2VmZmljaWVudCwgJGluZGl2cywkdGFnLCAkaWRvcmdhLCRyZWNvcmRfaWQpKTsKCQkJJGRlc2lnbmF0aW9uLj0iQ29tcMOpdGl0aW9uIG1vZGlmacOpZSI7CgkJCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCQkJLy8kdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdjb21wZXRzJyk7CgkJfQoJCWVsc2UKCQl7CgkJCS8vb24gY3LDqcOpCgkJJGNvZGVfY29tcGV0ID0gcGluZ19hZG1pbl9vcHM6OnJhbmRvbSgzKTsKCQkkcXVlcnkxID0gIlNIT1cgVEFCTEUgU1RBVFVTIExJS0UgJyIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucycgIjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MSk7CgkJJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCQkkcmVjb3JkX2lkID0gJHJvd1snQXV0b19pbmNyZW1lbnQnXTsKCQkkdGFnID0gcGluZ19hZG1pbl9vcHM6OnRhZygkcmVjb3JkX2lkLCRpZGVwcmV1dmUsJGluZGl2cyk7CgkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyAoaWQsIG5hbWUsIGNvZGVfY29tcGV0LCBjb2VmZmljaWVudCwgaW5kaXZzKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/KSI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5hbWUsJGNvZGVfY29tcGV0LCAkY29lZmZpY2llbnQsICRpbmRpdnMpKTsKCQkKCQkJaWYoISRkYnJlc3VsdCkKCQkJewoJCQkJJGRlc2lnbmF0aW9uID0gJGRiLT5FcnJvck1zZygpOwoJCQkJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJCQkvLwkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdjb21wZXRzJyk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CgkJCQkkc3RhdHVzID0gJ09rJzsKCQkJCSRkZXNpZ25hdGlvbiA9ICJVbmUgbm91dmVsbGUgY29tcMOpdGl0aW9uIGEgw6l0w6kgZW50csOpZSI7CgkJCQkkYWN0aW9uID0gJ2RvX2FkZF90eXBlX2NvbXBldGl0aW9uJzsKCQkJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywgJGRlc2lnbmF0aW9uLCRhY3Rpb24pOwoJCQl9CgkJCgkJfQoKJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwokdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdjb21wZXRzJyk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.do_create_contact.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIGlmICghaXNzZXQoJGdDbXMpKSBleGl0OwpkZWJ1Z19kaXNwbGF5KCRwYXJhbXMsJ1BhcmFtZXRlcnMnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwokbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CiRtZXNzYWdlID0gJyc7CiAgIAogICBpZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKSAKCXsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHQnLCAkcmV0dXJuaWQpOwoJfQoJCgkvLyAxIC0gb24gdsOpcmlmaWUgbGVzIGNoYW1wcyBwYXNzw6lzCgkkaWRfdXNlciA9ICcnOwoJLyppZiAoaXNzZXQoJHBhcmFtc1snaWRfdXNlciddKSkKCQl7CgkJCSRpZF91c2VyID0gJHBhcmFtc1snaWRfdXNlciddOwoJCX0KCSovCgkkbGljZW5jZSA9ICcnOwoJaWYgKGlzc2V0ICgkcGFyYW1zWydsaWNlbmNlJ10pKQoJCXsKCQkJJGxpY2VuY2UgPSAkcGFyYW1zWydsaWNlbmNlJ107CgkJfQoJJHR5cGVfY29udGFjdCA9ICcnOwoJaWYgKGlzc2V0KCRwYXJhbXNbJ3R5cGVfY29udGFjdCddKSkKCXsKCSAgJHR5cGVfY29udGFjdCA9ICRwYXJhbXNbJ3R5cGVfY29udGFjdCddOwoJfQoJCglpZiAoaXNzZXQoJHBhcmFtc1snY29udGFjdCddKSAmJiAhZW1wdHkoJHBhcmFtc1snY29udGFjdCddKSkKCQl7CgkJCWlmKCR0eXBlX2NvbnRhY3Q9PSdlbWFpbCcpewoJCQkJaWYoIWlzX2VtYWlsKCRwYXJhbXNbJ2NvbnRhY3QnXSkpewoJCQkJCSRtZXNzYWdlLj0iTFwnYWRyZXNzZSBlbWFpbCBlc3QgaW5jb3JyZWN0ZSI7CgkJCQkJJHRoaXMtPlNldE1lc3NhZ2UoIiRtZXNzYWdlIik7CgkJCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwoJCQkJfQoJCQkJZWxzZXsKCQkJCQkkY29udGFjdCA9ICRwYXJhbXNbJ2NvbnRhY3QnXTsKCQkJCX0KCQkJfQoJCQllbHNlewoJCQkJJGNvbnRhY3QgPSAkcGFyYW1zWydjb250YWN0J107CgkJCX0KCQl9CgkJZWxzZXsKCQkJLy9sZSBjb250YWN0IGVzdCB2aWRlLCBjJ2VzdCBwYXMgYm9uLgoJCX0KCQkKCQkKCSRkZXNjcmlwdGlvbiA9ICcnOwoJaWYgKGlzc2V0ICgkcGFyYW1zWydkZXNjcmlwdGlvbiddKSkKCQl7CgkJCSRkZXNjcmlwdGlvbiA9ICRwYXJhbXNbJ2Rlc2NyaXB0aW9uJ107CgkJfQovL2xlIGNvbnRhY3QgZXN0LWlsIGTDqWrDoCBwcsOpc2VudCA/Ci8vb24gdsOpcmlmaWUKJHF1ZXJ5PSAiU0VMRUNUIGNvbnRhY3QgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY29tbSBXSEVSRSBjb250YWN0ID0gPyI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRjb250YWN0KSk7CmlmKCRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+MCkJewoJJG1lc3NhZ2UuPSJDb250YWN0IGTDqWrDoCBwcsOpc2VudCAhIjsKCSR0aGlzLT5TZXRNZXNzYWdlKCIkbWVzc2FnZSIpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwp9CiRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY29tbSAoaWQsIGRhdGVjcmVhdGVkLCBkYXRlbWFqLGxpY2VuY2UsIHR5cGVfY29udGFjdCwgY29udGFjdCwgZGVzY3JpcHRpb24pIFZBTFVFUyAoPyw/LD8sPyw/LD8sPykiOwkKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGlkLCRub3csICRub3csICRsaWNlbmNlLCAkdHlwZV9jb250YWN0LCAkY29udGFjdCwgJGRlc2NyaXB0aW9uKSk7CmlmKCEkZGJyZXN1bHQpewoJJG1lc3NhZ2UuPSRkYi0+RXJyb3JNc2coKTsKfQplbHNlCnsKCSRtZXNzYWdlLj0gIkNvbnRhY3QgYWpvdXTDqSI7Cn0KLy9zaSBsZSB0eXBlIGRlIGNvbnRhY3QgYWpvdXTDqSBlc3QgZW1haWwsIG9uIHZhIHBvdXZvaXIgbCdham91dGVyIGRhbnMgRkVVIHNpIG5vbiBkw6lqw6AgcHLDqXNlbnQKLy8gb24gdmEgaW5zY3JpcmUgbGUgam91ZXVyIGRhbnMgRkVVIHNpIHByw6lzZW50CmlmKCR0eXBlX2NvbnRhY3Q9PSdlbWFpbCcpewokY29udGFjdCA9IAkKJGZldSA9ICRnQ21zLT5HZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpOwovL29uIHRlc3RlIHNpIGxlIG1vZHVsZSBlc3QgcHLDqXNlbnQgb3Ugbm9uCmlmKCEkZmV1KXsKCSRtZXNzYWdlLj0iTW9kdWxlIEZFVSBhYnNlbnQiOwp9CmVsc2UgewoJJG5hbWUgPSAkcGFyYW1zWydjb250YWN0J107CgkkY29udGFjdCA9ICRwYXJhbXNbJ2NvbnRhY3QnXTsKCS8vbCd1dGlsaXNhdGV1ciBleGlzdGUtdC1pbCBkw6lqw6AgPwoJJHF1ZXJ5PSJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc191c2VycyBXSEVSRSB1c2VybmFtZSA9ID8iOwoJLy9lY2hvICRxdWVyeTsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRjb250YWN0KSk7CgkvLyRjb3VudGFnZSA9ICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKTsKCWlmKCRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKXsKCSRwc2V1ZG8gPSAnVXh6cXNVSU0nOwoJJGV4cGlyZXMgPSBta3RpbWUoMCwwLDAsZGF0ZSgibSIpLGRhdGUoImQiKSxkYXRlKCJZIikrNSk7CgkkZG9fbWQ1ID0gJyc7CgkkcXVlcnkgPSAkZmV1LT5BZGRVc2VyKCRuYW1lLCAkcHNldWRvLCAkZXhwaXJlcywkZG9fbWQ1ID0gdHJ1ZSk7CgkkZGZsdF9ncm91cCA9ICRmZXUtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfZ3JvdXAnKTsKCSRmZXUtPkF1ZGl0KCcnLCRmZXUtPkdldE5hbWUoKSwgJG5hbWUpOwoJCgkkdWlkID0gJGZldS0+R2V0VXNlcklkKCRuYW1lKTsKCS8vJHVpZCA9ICR1c2VyWzFdOwoKCS8vIHNldCBoaXMgZ3JvdXBzLgoJaWYoICRkZmx0X2dyb3VwID4gMCApIHsKCSAkZmV1LT5Bc3NpZ25Vc2VyVG9Hcm91cCggJHVpZCwgJGRmbHRfZ3JvdXAgKTsKCX0KCSRtZXNzYWdlLj0iTm91dmVsIHV0aWxpc2F0ZXVyIGRhbnMgRkVVIjsKCX0KCWVsc2V7CgkJJG1lc3NhZ2UuPSJVdGlsaXNhdGV1ciBkw6lqw6AgaW5zY3JpdCBkYW5zIEZFVSI7Cgl9Cn0vL2ZpbiBkZSBsJ2luc3RhbmNpYXRpb24gZGUgRkVVCgoKLy9vbiB2YSBlc3NheWVyIGRlIGwnaW5jbHVyZSBkYW5zIGxhIG5ld3NsZXR0ZXIKJG5tcyA9ICRnQ21zLT5HZXRNb2R1bGVJbnN0YW5jZSgnTk1TJyk7CmlmKCEkbm1zKXsKCSRtZXNzYWdlLj0iIE1vZHVsZSBOZXdzbGV0dGVyIGluZGlzcG9uaWJsZSI7Cn0KZWxzZXsKCS8vbGUgbW9kdWxlIGVzdCBkaXNwb25pYmxlLCBvbiB2YSB2b2lyIHNpIGwndXRpbGlzYXRldXIgZXN0IGTDqWrDoCBpbnNjcml0CgkkbWVzc2FnZS49IiBMZSBtb2R1bGUgZXN0IE9rLCBvbiBwZXV0IGNvbnRpbnVlciI7CgkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX25tc191c2VycyBXSEVSRSBlbWFpbCA9ID8iOwoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNvbnRhY3QpKTsKCQoJaWYoJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApewoJCS8vIGwndXRpbGlzYXRldXIgZXN0IGTDqWrDoCBkcyBOTVMKCQkkbWVzc2FnZS49IkFkcmVzc2UgZW1haWwgZMOpasOgIGRhbnMgbGEgbmV3c2xldHRlciI7Cgl9CgllbHNlewoJCS8vJG1lc3NhZ2UuPSIgT24gcGV1dCBpbmNsdXJlLiI7CgkJLy9sJ3V0aWxpc2F0ZXVyIG4nZXN0IHBhcyBlbmNvcmUgZHMgTk1TLCBvbiBsJ2luY2x1dAoJCSRlbWFpbCA9ICRjb250YWN0OwoJCSRsaXN0cyA9IGFycmF5KCIxIik7CgkJJHVzZXJuYW1lID0gJ1RvcCc7CgkJJGRpc2FibGVkID0gMDsKCQkkY29uZmlybWVkID0gMTsvL29uIHBldXQgYXVzc2kgYXBwZWxlciB1bmUgcHLDqWbDqXJlbmNlIGRhbnMgbGVzIG9wdGlvbnMgZGUgY29uZmlnCgkJLy9kdSBzdHlsZSwgb24gZW52b2llIHVuIGVtYWlsIHBvdXIgY29uZmlybWVyIGxhIGRlbWFuZGUgb3UgcGFzCgkJCgkJJHF1ZXJ5ID0gJG5tcy0+QWRkVXNlcigkZW1haWwsJGxpc3RzLCR1c2VybmFtZSwkZGlzYWJsZWQsJGNvbmZpcm1lZCk7CgkJaWYoISRxdWVyeSl7CgkJCSRtZXNzYWdlLj0kZGItPkVycm9yTXNnKCk7CgkJfQoJCWVsc2V7CgkJCSRtZXNzYWdlLj0iVXRpbGlzYXRldXIgYWpvdXTDqSDDoCBsYSBuZXdzbGV0dGVyIjsKCQl9Cgl9Cn0KfS8vZmluIGR1IGlmIGNvbnRhY3QgPSBlbWFpbAokdGhpcy0+U2V0TWVzc2FnZSgiJG1lc3NhZ2UiKTsKJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwoJCgogICAgICAgPz4=]]></data>
	</file>
	<file>
	  <filename>/action.do_edit_joueur.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCgppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwppZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKSB7ICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQpOyB9CiRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3RyYXZhdXgucGhwJyk7CiRkZXNpZ25hdGlvbiA9ICcnOwovL2VjaG8gJHBhcmFtc1sncmVjb3JkX2lkJ107Ci8qCgkJaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQ29tbWVudHMnKSkKCQl7CgkJCWVjaG8gJzxwIGNsYXNzPSJlcnJvciI+Jy4kdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nLCBhcnJheSgnTWFuYWdlIENvbW1lbnRzJykpLic8L3A+JzsKCQkJcmV0dXJuOwoJCX0KKi8KCQkvKk9uIHLDqWN1cMOocmUgbGVzIHZhcmlhYmxlIGV0IG9uIGxlcyB0cmFpdGUgKi8KCQlpZiAoIGlzc2V0KCRwYXJhbXNbJ2xpY2VuY2UnXSApKQoJCXsKCQkJJGxpY2VuY2UgPSAkcGFyYW1zWydsaWNlbmNlJ107CgkJCQoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1snYWN0aWYnXSkpCgkJewoJCQkkYWN0aWYgPSAkcGFyYW1zWydhY3RpZiddOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1snbm9tJ10pKQoJCXsKCQkJJG5vbSA9IHN0cnRvdXBwZXIoJHBhcmFtc1snbm9tJ10pOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1sncHJlbm9tJ10pKQoJCXsKCQkJJHByZW5vbSA9ICRwYXJhbXNbJ3ByZW5vbSddOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1snYmlydGhkYXknXSkpCgkJewoJCQkkYmlydGhkYXkgPSAkcGFyYW1zWydiaXJ0aGRheSddOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1snc2V4ZSddKSkKCQl7CgkJCSRzZXhlID0gJHBhcmFtc1snc2V4ZSddOwoJCX0KCQkKCQlpZiAoaXNzZXQoJHBhcmFtc1snYWRyZXNzZSddKSkKCQl7CgkJCSRhZHJlc3NlID0gJHBhcmFtc1snYWRyZXNzZSddOwoJCX0KCQkKCQlpZiAoIGlzc2V0KCAkcGFyYW1zWyd2aWxsZSddICkpCgkJewoJCQkkdmlsbGUgPSAkcGFyYW1zWyd2aWxsZSddOwoJCX0KCQlpZiAoIGlzc2V0KCAkcGFyYW1zWydjb2RlcG9zdGFsJ10gKSkKCQl7CgkJCSRjb2RlcG9zdGFsID0gJHBhcmFtc1snY29kZXBvc3RhbCddOwoJCX0KCQkvL29uIHJlZ2FyZGUgc2kgbGUgam91ZXVyIGV4aXN0ZSBkw6lqw6Agc2kgb3VpIFVQREFURSBzaSBub24gSU5TRVJUIElOVE8KCQkkcXVlcnkgPSAiU0VMRUNUIGxpY2VuY2UgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSBsaWNlbmNlID0gPyI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UpKTsKCQkkY291bnQgPSAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk7CgkJaWYgKCRjb3VudD4wKXsKCQkJJGFqb3V0ID0gMTsKCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBTRVQgIGFjdGlmID0gPywgbm9tID0gPywgcHJlbm9tID0gPywgYmlydGhkYXkgPSA/LCBzZXhlID0gPywgYWRyZXNzZSA9ID8sIHZpbGxlID0gPywgY29kZXBvc3RhbCA9ID8gV0hFUkUgbGljZW5jZSA9ID8iOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkYWN0aWYsJG5vbSwkcHJlbm9tLCRiaXJ0aGRheSwgJHNleGUsICRhZHJlc3NlLCAkdmlsbGUsICRjb2RlcG9zdGFsLCAkbGljZW5jZSkpOwoJCQkkZGVzaWduYXRpb24uPSJNaXNlIMOgIGpvdXIgZGUiLiRub20uICIgIi4kcHJlbm9tOwoJCX0KCQllbHNlewoJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgKGlkLGFjdGlmLGxpY2VuY2Usbm9tLCBwcmVub20sIGJpcnRoZGF5LCBzZXhlLCBhZHJlc3NlLCB2aWxsZSwgY29kZXBvc3RhbCkgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkYWN0aWYsICRsaWNlbmNlLCAkbm9tLCAkcHJlbm9tLCAkYmlydGhkYXksICRzZXhlLCAkYWRyZXNzZSwgJHZpbGxlLCAkY29kZXBvc3RhbCkpOwoJCQkKCQkJaWYoISRkYnJlc3VsdCl7CgkJCQkkZGVzaWduYXRpb24uPSAkZGItPkVycm9yTXNnKCk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkZGVzaWduYXRpb24uPSJBam91dCBkZSAiLiRub20uIiAiLiRwcmVub207CgkJCX0KCQkJCgkJCS8vaWwgZmF1dCBhdXNzaSBpbnPDqXJlciBsZSBqb3VldXIgZGFucyBsYSB0YWJsZSBkZXMgc2l0dWF0aW9ucyBtZW5zdWVsbGVzCgkJCS8vZXN0LWlsIGTDqWrDoCBwcsOpc2VudCA/CgkJCSRxdWVyeSA9ICJTRUxFQ1QgbGljZW5jZSBGUk9NIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgV0hFUkUgbGljZW5jZSA9ID8iOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSkpOwoJCQkkY29tcHRldXIgPSAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk7CgkJCWlmKCRjb21wdGV1ciA9PTApCgkJCXsJCQkKCQkJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyAoaWQsIHNhaXNvbiwgZGF0ZW1haiwgbGljZW5jZSwgc2l0X21lbnMsIGZmdHQsIHNwaWQpIFZBTFVFUyAoJycsID8sID8sID8sID8sID8sID8pIjsKCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRzYWlzb24sICRub3csICRsaWNlbmNlLCAnSmFudmllciAyMDAwJywgJzAnLCcwJykpOwoJCQkKCQkJCWlmKCEkZGJyZXN1bHQpewoJCQkJCSRkZXNpZ25hdGlvbi49ICRkYi0+RXJyb3JNc2coKTsKCQkJCX0KCQkJfQoJCQkKCQl9CgkJCgkJCgkJCgoJCQoJCgkJCS8vb24gYSBwYXMgZGUgbW9kaWZpY2F0aW9uIGR1IGNvZWZmLCBvbiBjaGFuZ2Ugc2ltcGxlbWVudCBsZXMgZG9ubsOpZXMgc2FucyByZWNhbGN1bGVyCgkJCgkJCQoJCQoJCS8vIGxhIHRhYmxlIHBvaW50cyBlc3QgbW9kaWZpw6ksIG9uIHBhc3NlIMOgIGxhIHRhYmxlIHJlbmNvbnRyZXMKCQkkc3RhdHVzID0gJ09rJzsKCQkvLyRkZXNpZ25hdGlvbiA9ICdBam91dC9tb2RpZmljYXRpb24gZGUgJy4kbm9tLicgJy4kcHJlbm9tOwoJCSRhY3Rpb24gPSAnZG9fZWRpdF9qb3VldXInOwoJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywgJGRlc2lnbmF0aW9uLCRhY3Rpb24pOwoJCQokdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgokdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdKb3VldXJzJyk7CgoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.do_edit_result.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwovL2lmIChpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpIHsgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCk7IH0KcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKCiRkZXNpZ25hdGlvbiA9ICcnOwoKLyokaWRfdXNlciA9ICcnOyovCglpZiAoIGlzc2V0KCRwYXJhbXNbJ3JlY29yZF9pZCddICkpCgl7CgkJJHJlY29yZF9pZCA9ICRwYXJhbXNbJ3JlY29yZF9pZCddOwoJfQoJaWYoaXNzZXQoJHBhcmFtc1snZHVwbGljYXRlJ10pICYmICRwYXJhbXNbJ2R1cGxpY2F0ZSddID09JzEnKQoJewoJCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgV0hFUkUgaWQgPSA/IjsKCQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCQkKCQkJaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKT4wKQoJCQl7CgkJCQl3aGlsZSgkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCQkJewoJCQkJCSRzYWlzb24gPSAkcm93WydsaWNlbmNlJ107CgkJCQkJLy9wYXMgZGUgZGF0ZW1hagoJCQkJCSRsaWNlbmNlID0gJHJvd1snbGljZW5jZSddOwoJCQkJCSRkYXRlX2V2ZW50ID0gJHJvd1snZGF0ZV9ldmVudCddOwoJCQkJCSRlcHJldXZlID0gJHJvd1snZXByZXV2ZSddOwoJCQkJCSRub20gPSAkcm93Wydub20nXTsKCQkJCQkkbnVtam91cm4gPSAkcm93WydudW1qb3VybiddOwoJCQkJCSRjbGFzc2VtZW50ID0gJHJvd1snY2xhc3NlbWVudCddOwoJCQkJCSR2aWN0b2lyZSA9ICRyb3dbJ3ZpY3RvaXJlJ107CgkJCQkJJGVjYXJ0ID0gJHJvd1snZWNhcnQnXTsKCQkJCQkkdHlwZV9lY2FydCA9ICRyb3dbJ3R5cGVfZWNhcnQnXTsKCQkJCQkkY29lZmYgPSAkcm93Wydjb2VmZiddOwoJCQkJCSRwb2ludHJlcyA9ICRyb3dbJ3BvaW50cmVzJ107CgkJCQkJJGZvcmZhaXQgPSAkcm93Wydmb3JmYWl0J107CgkJCQkJCQkJCQkKCQkJCQkkcXVlcnkyID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgKGlkLCBzYWlzb24sIGRhdGVtYWosIGxpY2VuY2UsIGRhdGVfZXZlbnQsIGVwcmV1dmUsIG5vbSwgbnVtam91cm4sIGNsYXNzZW1lbnQsIHZpY3RvaXJlLCBlY2FydCwgdHlwZV9lY2FydCwgY29lZmYsIHBvaW50cmVzLCBmb3JmYWl0KSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkJCQkJJGRicmVzdWx0MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCBhcnJheSgkc2Fpc29uX2NvdXJhbnRlLCRub3csICRsaWNlbmNlLCRkYXRlX2V2ZW50LCAkZXByZXV2ZSwgJG5vbSwgJG51bWpvdXJuLCAkY2xhc3NlbWVudCwgJHZpY3RvaXJlLCAkZWNhcnQsICR0eXBlX2VjYXJ0LCAkY29lZmYsICRwb2ludHJlcywgJGZvcmZhaXQpKTsKCQkJCQkkZGVzaWduYXRpb24uPSJFbnJlZ2lzdHJlbWVudCBkdXBsaXF1w6kiOwoJCQkJCQoJCQkJfQoJCQl9Cgl9CgllbHNlCgl7CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2VwcmV1dmUnXSkpIAoJCXsKCQkJJGVwcmV1dmUgPSAkcGFyYW1zWydlcHJldXZlJ107CgkJCSRjb2VmZmljaWVudCA9IGNvZWZmKCRlcHJldXZlKTsKCQl9CgoKCQlpZiAoaXNzZXQoJHBhcmFtc1snbnVtam91cm4nXSkpCgkJewoJCQkkbnVtam91cm4gPSAkcGFyYW1zWydudW1qb3VybiddOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1snbm9tJ10pKQoJCXsKCQkJCSRub20gPSAkcGFyYW1zWydub20nXTsKCQl9CgoJCWlmIChpc3NldCgkcGFyYW1zWydjbGFzc2VtZW50J10pKQoJCXsKCQkJCSRjbGFzc2VtZW50ID0gJHBhcmFtc1snY2xhc3NlbWVudCddOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1snZWNhcnQnXSkpCgkJewoJCQkJJGVjYXJ0ID0gJHBhcmFtc1snZWNhcnQnXTsKCQl9CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2NvZWZmJ10pKQoJCXsKCQkJCSRjb2VmZiA9ICRwYXJhbXNbJ2NvZWZmJ107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWyd2aWN0b2lyZSddKSkKCQl7CgkJCQkkdmljdG9pcmUgPSAkcGFyYW1zWyd2aWN0b2lyZSddOwoJCX0KCQkvL29uIHbDqXJpZmllIGxlIGNvZWZmIGRlIGwnw6lwcmV1dmUgOiAKCgkJCWlmICgkY29lZmZpY2llbnQgIT0kY29lZmYpCgkJCXsKCQkJCQkvL29uIHbDqXJpZmllIHNpIGxlIGNvZWZmIGVzdCBkaWZmw6lyZW50IGRlIDAgZHMgbGEgYmRkIGRlcyBjb21ww6l0aXRpb25zCgkJCQkJaWYoJGNvZWZmaWNpZW50ID09ICcnICYmICRjb2VmZiAhPSAnJykKCQkJCQl7CgkJCQkJCS8vYWxvcnMgb24gcGV1dCBtZXR0cmUgbGUgY29lZmYgw6Agam91ciBlbiBiZGQKCQkJCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgU0VUIGNvZWZmaWNpZW50ID0gPyBXSEVSRSBuYW1lID0gPyI7CgkJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRjb2VmZiwgJGVwcmV1dmUpKTsKCQkJCQkJJGRlc2lnbmF0aW9uLj0gIkNvZWZmaWNpZW50IG1pcyDDoCBqb3VyIjsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJGRlc2lnbmF0aW9uLj0iTGUgY29lZmZpY2llbnQgZXQgbCfDqXByZXV2ZSBuZSBjb3JyZXNwb25kZW50IHBhcyAhIjsKCQkJCQl9CgkJCQkJCgkJCX0KCQkvL29uIGZhaXQgbGVzIGNhbGN1bHMgbsOpY2Vzc2FpcmVzCgoJCS8vdG91dCBkJ2Fib3JkLCB5IGEgdC1pbCBldSBmb3JmYWl0ID8KCQkvL1NpIG91aSwgaW51dGlsZSBkZSBjYWxjdWxlciBsZXMgcG9pbnRzCgoJCQlpZigkZm9yZmFpdCA9PTEpCgkJCXsKCQkJCQkkcG9pbnRyZXMgPSAwOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJLy9vbiBkw6l0ZXJtaW5lIGxlIHR5cGUgZCfDqWNhcnQgZW50cmUgbGVzIGRldXggam91ZXVycwoJCQkJJHR5cGVfZWNhcnQgPSBDYWxjdWxFY2FydCgkZWNhcnQpOwoJCQkJJHBvaW50czEgPSBDYWxjdWxQb2ludHNJbmRpdnMoJHR5cGVfZWNhcnQsICR2aWN0b2lyZSk7CgkJCQkkcG9pbnRyZXMgPSAkcG9pbnRzMSokY29lZmY7IAoKCQkJfQoJCQkKCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIFNFVCBub20gPSA/LCBudW1qb3VybiA9ID8sIGNsYXNzZW1lbnQgPSA/LCB2aWN0b2lyZSA9ID8sIGVjYXJ0ID0gPywgY29lZmYgPSA/LCBwb2ludHJlcyA9ID8sIHN0YXR1dCA9IDEgV0hFUkUgaWQgPSA/IjsKCQkJCQoJCQkKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5vbSwgJG51bWpvdXJuLCAkY2xhc3NlbWVudCwgJHZpY3RvaXJlLCAkZWNhcnQsICRjb2VmZiwkcG9pbnRyZXMsICRyZWNvcmRfaWQpKTsKCQoJCQkJaWYgKCEkZGJyZXN1bHQpIAoJCQkJewoJCQkJCSRkZXNpZ25hdGlvbi49JGRiLT5FcnJvck1zZygpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRkZXNpZ25hdGlvbi49IkVucmVnaXN0cmVtZW50IG1vZGlmacOpLiI7CgkJCQl9Cgl9CgkKCQkKCQkJCgkJCQoJCSR0aGlzLT5TZXRNZXNzYWdlKCRkZXNpZ25hdGlvbik7CgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncmVzdWx0cycpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.do_edit_team.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCgppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwppZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKSB7ICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQpOyB9Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5jYWxjdWxzLnBocCcpOwovL2VjaG8gJHBhcmFtc1sncmVjb3JkX2lkJ107CiRkZXNpZ25hdGlvbiA9ICcnOwokZXJyb3IgPTA7Ci8qCgkJaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQ29tbWVudHMnKSkKCQl7CgkJCWVjaG8gJzxwIGNsYXNzPSJlcnJvciI+Jy4kdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nLCBhcnJheSgnTWFuYWdlIENvbW1lbnRzJykpLic8L3A+JzsKCQkJcmV0dXJuOwoJCX0KKi8KCQkvKk9uIHLDqWN1cMOocmUgbGVzIHZhcmlhYmxlIGV0IG9uIGxlcyB0cmFpdGUgKi8KCQkkcmVjb3JkX2lkID0gJyc7IAoJCWlmKCBpc3NldCggJHBhcmFtc1sncmVjb3JkX2lkJ10gKSAmJiAkcGFyYW1zWydyZWNvcmRfaWQnXSAhPSAnJykgICAgCgkJewoJCQkkaWQgPSAkcGFyYW1zWydyZWNvcmRfaWQnXTsKCQkJCgkJfQoJCQoJCWlmIChpc3NldCgkcGFyYW1zWydzYWlzb24nXSkpCgkJewoJCQkkc2Fpc29uID0gJHBhcmFtc1snc2Fpc29uJ107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydwaGFzZSddKSkKCQl7CgkJCSRwaGFzZSA9ICRwYXJhbXNbJ3BoYXNlJ107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydsaWJlcXVpcGUnXSkpCgkJewoJCQkkbGliZXF1aXBlID0gJHBhcmFtc1snbGliZXF1aXBlJ107CgkJfQoJCQoJCWlmIChpc3NldCgkcGFyYW1zWydsaWJkaXZpc2lvbiddKSkKCQl7CgkJCSRsaWJkaXZpc2lvbiA9ICRwYXJhbXNbJ2xpYmRpdmlzaW9uJ107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydmcmllbmRseW5hbWUnXSkpCgkJewoJCQkkZnJpZW5kbHluYW1lID0gJHBhcmFtc1snZnJpZW5kbHluYW1lJ107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydpZGVwcmV1dmUnXSkgJiYgJHBhcmFtc1snaWRlcHJldXZlJ10gIT0nJykKCQl7CgkJCSRpZGVwcmV1dmUgPSAkcGFyYW1zWydpZGVwcmV1dmUnXTsKCQl9CgkJZWxzZQoJCXsKCQkJJGVycm9yKys7CgkJCQoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1snaWRkaXYnXSkpCgkJewoJCQkkaWRkaXYgPSAkcGFyYW1zWydpZGRpdiddOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1snaWRwb3VsZSddKSkKCQl7CgkJCSRpZHBvdWxlID0gJHBhcmFtc1snaWRwb3VsZSddOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1snb3JnYW5pc21lJ10pKQoJCXsKCQkJJG9yZ2FuaXNtZSA9ICRwYXJhbXNbJ29yZ2FuaXNtZSddOwoJCX0KCQkkbGllbmRpdmlzaW9uID0gImN4X3BvdWxlPSIuJGlkcG91bGUuIiZEMT0iLiRpZGRpdi4iJm9yZ2FuaXNtZV9wZXJlPSIuJG9yZ2FuaXNtZTsKCQkvL2VjaG8gImxlIGxpZW4gZXN0IDogIi4kbGllbjsKCQlpZigkZXJyb3I+MCkKCQl7CgkJCSR0aGlzLT5TZXRNZXNzYWdlKCdNYW5xdWUgbGUgdHlwZSBkZSBjb21ww6l0aXRpb24gIScpOwoJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdlcXVpcGVzJyk7CgkJfQoJCWlmKGlzc2V0KCRwYXJhbXNbJ0Fqb3V0ZXInXSkpCgkJewoJCQkKCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIChpZCwgc2Fpc29uLCBwaGFzZSwgbGliZXF1aXBlLCBsaWJkaXZpc2lvbixmcmllbmRseW5hbWUsIGxpZW5kaXZpc2lvbiwgaWRwb3VsZSwgaWRkaXYsIGlkZXByZXV2ZSkgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRzYWlzb24sICRwaGFzZSwgJGxpYmVxdWlwZSwgJGxpYmRpdmlzaW9uLCRmcmllbmRseW5hbWUsICRsaWVuZGl2aXNpb24sICRpZHBvdWxlLCAkaWRkaXYsICRpZGVwcmV1dmUpKTsKCQkJJGRlc2lnbmF0aW9uLj0iRXF1aXBlIGFqb3V0w6llIGF2ZWMgc3VjY8OocyI7CgkJfQoJCWVsc2UKCQl7CgkJCS8vb24gYSBwYXMgZGUgbW9kaWZpY2F0aW9uIGR1IGNvZWZmLCBvbiBjaGFuZ2Ugc2ltcGxlbWVudCBsZXMgZG9ubsOpZXMgc2FucyByZWNhbGN1bGVyCgkJCS8vb24gcmVmYWl0IGxlIHRhZwoJCQkkdGFnID0gcGluZ19hZG1pbl9vcHM6OnRhZ19lcXVpcGUoJGlkKTsKCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcyBTRVQgIHNhaXNvbiA9ID8sIHBoYXNlID0gPywgbGliZXF1aXBlID0gPywgbGliZGl2aXNpb24gPSA/ICwgZnJpZW5kbHluYW1lID0gPyAsIGxpZW5kaXZpc2lvbiA9ID8sIGlkZXByZXV2ZSA9ID8sIHRhZyA9ID8gV0hFUkUgaWQgPSA/IjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHNhaXNvbiwkcGhhc2UsJGxpYmVxdWlwZSwgJGxpYmRpdmlzaW9uLCRmcmllbmRseW5hbWUsJGxpZW5kaXZpc2lvbiwgJGlkZXByZXV2ZSwkdGFnLCRpZCkpOwoJCQkvL2VjaG8gJHF1ZXJ5OwoJCQkkZGVzaWduYXRpb24uPSJFcXVpcGUgbWlzZSDDoCBqb3VyIGF2ZWMgc3VjY8OocyI7CgkJfQoJCQkKCQoJCWlmICghJGRicmVzdWx0KSB7CgkJCSRkZXNpZ25hdGlvbi49ICAkZGItPkVycm9yTXNnKCk7CgkJLy8JZWNobyAkZGItPnNxbC4iPGJyLz4iOwoJCS8vCSAgICBlY2hvICRkYi0+RXJyb3JNc2coKTsKCQkJCQoJCX0KCQllbHNlIHsKCQkJJGRlc2lnbmF0aW9uLj0gJ0VxdWlwZSBtaXNlIMOgIGpvdXInOwoJCX0KCQkKCQkKCQkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgoJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2VxdWlwZXMnKTsKCQkKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.do_participe.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwovKiovCgoJaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIE1hbmFnZScpKQoJewoJCSRkZXNpZ25hdGlvbi49JHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJyk7CgkJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3NpdHVhdGlvbicpOwoJfQoJJGFubmVlID0gZGF0ZSgnWScpOwovL29uIHLDqWN1cMOocmUgbGVzIHZhbGV1cnMKLy9wb3VyIGwnaW5zdGFudCBwYXMgZCdlcnJldXIKJGVycm9yID0gMDsKCQkKCQkkdHlwZV9jb21wZXQgPSAnJzsKCQlpZiAoaXNzZXQoJHBhcmFtc1sndHlwZV9jb21wZXQnXSkgJiYgJHBhcmFtc1sndHlwZV9jb21wZXQnXSAhPSAnJykKCQl7CgkJCSR0eXBlX2NvbXBldCA9ICRwYXJhbXNbJ3R5cGVfY29tcGV0J107CgkJfQoJCWVsc2UKCQl7CgkJCSRlcnJvcisrOwoJCX0KCQkkZGF0ZV9kZWJ1dCA9ICcnOwoJCWlmIChpc3NldCgkcGFyYW1zWydkYXRlX2RlYnV0J10pICYmICRwYXJhbXNbJ2RhdGVfZGVidXQnXSAhPSAnJykKCQl7CgkJCSRkYXRlX2RlYnV0ID0gJHBhcmFtc1snZGF0ZV9kZWJ1dCddOwoJCX0KCQllbHNlCgkJewoJCQkkZXJyb3IrKzsKCQl9CgkJJGRhdGVfZGVidXQgPSAnJzsKCQlpZiAoaXNzZXQoJHBhcmFtc1snZGF0ZV9maW4nXSkgJiYgJHBhcmFtc1snZGF0ZV9maW4nXSAhPSAnJykKCQl7CgkJCSRkYXRlX2ZpbiA9ICRwYXJhbXNbJ2RhdGVfZmluJ107CgkJfQoJCWVsc2UKCQl7CgkJCSRlcnJvcisrOwoJCX0KCQlpZigkZXJyb3IgPT0wKQoJCXsKCQkJLy9vbiB2aXJlIHRvdXRlcyBsZXMgZG9ubsOpZXMgZGUgY2V0dGUgY29tcGV0IGF2YW50IAoJCQkkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpY2lwZSBXSEVSRSB0eXBlX2NvbXBldCA9ID8gQU5EIGRhdGVfZGVidXQgPSA/IjsKCQkJJGRicXVlcnkgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdHlwZV9jb21wZXQsICRkYXRlX2RlYnV0KSk7CQoJCQkkbGljZW5jZSA9ICcnOwoJCQlpZiAoaXNzZXQoJHBhcmFtc1snbGljZW5jZSddKSAmJiAkcGFyYW1zWydsaWNlbmNlJ10gIT0gJycpCgkJCXsKCQkJCSRsaWNlbmNlID0gJHBhcmFtc1snbGljZW5jZSddOwoJCQkJJGVycm9yKys7CgkJCX0KCQkJZm9yZWFjaCgkbGljZW5jZSBhcyAka2V5PT4kdmFsdWUpCgkJCXsKCQkJCSRxdWVyeTIgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpY2lwZSAobGljZW5jZSwgdHlwZV9jb21wZXQsZGF0ZV9kZWJ1dCkgVkFMVUVTICg/LCA/LCA/KSI7CgkJCQllY2hvICRxdWVyeTI7CgkJCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCBhcnJheSgka2V5LCAkdHlwZV9jb21wZXQsICRkYXRlX2RlYnV0KSk7CgkJCX0KCQkJCgkJfQoJCQoKJHRoaXMtPlNldE1lc3NhZ2UoJ3BhcnRpY2lwYW50cyBham91dMOpcyAhJyk7CiR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2NvbXBldHMnKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.edit_contact.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgTWFuYWdlJykpCiAgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CglyZXR1cm47CiAgIAogIH0KCiRpZF9yZWNvcmQgPSAnJzsKaWYoICFpc3NldCggJHBhcmFtc1snaWRfcmVjb3JkJ10gKSB8fCAkcGFyYW1zWydpZF9yZWNvcmQnXSA9PSAnJyApICAKewoJJHRoaXMtPlNldE1lc3NhZ2UoJ0lsIG1hbnF1ZSBsXGlkZW50aWZpYW50IGRlIGxhIGxpZ25lJyk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdqb3VldXJzJyk7Ci8qCQokcXVlcnkgPSAiU0VMRUNUIENPTkNBVF9XUygnICcsIG5vbSwgcHJlbm9tKSBBUyBqb3VldXIsIGxpY2VuY2UgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBPUkRFUiBCWSBqb3VldXIgQVNDIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICB7CiAgICAkcGxheWVybGlzdFskcm93Wydqb3VldXInXV0gPSAkcm93WydsaWNlbmNlJ107Cn0vL2ZpbiBkdSB3aGlsZQoqLwp9CgokcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY29tbSBXSEVSRSBpZCA9ID8iOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcGFyYW1zWydpZF9yZWNvcmQnXSkpOwp3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKewoJJGxpY2VuY2UgPSAkcm93WydsaWNlbmNlJ107CgkkdHlwZV9jb250YWN0ID0gJHJvd1sndHlwZV9jb250YWN0J107CgkkY29udGFjdCA9ICRyb3dbJ2NvbnRhY3QnXTsKCSRkZXNjcmlwdGlvbiA9ICRyb3dbJ2Rlc2NyaXB0aW9uJ107CgkKfQogIAokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsCgkJICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoICRpZCwgJ2RvX2NyZWF0ZV9jb250YWN0JywgJHJldHVybmlkICkgKTsKJHNtYXJ0eS0+YXNzaWduKCdpZCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCAkaWQsICdpZF9yZWNvcmQnLCAkcGFyYW1zWydpZF9yZWNvcmQnXSApKTsKJHNtYXJ0eS0+YXNzaWduKCdsaWNlbmNlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oICRpZCwgJ2xpY2VuY2UnLCAkbGljZW5jZSApKTsKJGFydGljbGVzID0gYXJyYXkoIlTDqWzDqXBob25lIGZpeGUiPT4iVMOpbMOpcGhvbmUgZml4ZSIsICJlbWFpbCI9PiJlbWFpbCIpOwokc21hcnR5LT5hc3NpZ24oJ3R5cGVfY29udGFjdCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAndHlwZV9jb250YWN0JywkYXJ0aWNsZXMsLTEsJHR5cGVfY29udGFjdCkpOwokc21hcnR5LT5hc3NpZ24oJ2NvbnRhY3QnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnY29udGFjdCcsJGNvbnRhY3QsNTAsMTUwKSk7CiRzbWFydHktPmFzc2lnbignZGVzY3JpcHRpb24nLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZGVzY3JpcHRpb24nLCRkZXNjcmlwdGlvbiwzMCwxNTApKTsJCQkJCiRzbWFydHktPmFzc2lnbignc3VibWl0ZWRpdCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdGVkaXQnLCAkdGhpcy0+TGFuZygnc3VibWl0JyksICdjbGFzcz0iYnV0dG9uIicpKTsKJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2NhbmNlbCcsJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CiRzbWFydHktPmFzc2lnbignYmFjaycsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnYmFjaycsJHRoaXMtPkxhbmcoJ2JhY2snKSkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdF9jb250YWN0LnRwbCcpOwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.edit_player_results.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKICB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCXJldHVybjsKICAgCiAgfQoKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ3Jlc3VsdHMnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwovLyRyZWNvcmRfaWQgPSAkcGFyYW1zWydyZWNvcmRfaWQnXTsKaWYoIGlzc2V0KCAkcGFyYW1zWydtZXNzYWdlJ10gKSApCiAgewogICAgJHNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJyxodG1sX2VudGl0eV9kZWNvZGUoJHBhcmFtc1snbWVzc2FnZSddKSk7CiAgfQppZiggaXNzZXQoICRwYXJhbXNbJ2Vycm9yJ10gKSApCiAgewogICAgJHNtYXJ0eS0+YXNzaWduKCdlcnJvcicsaHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbJ2Vycm9yJ10pKTsKICB9CgoKCiRyZWNvcmRfaWQgPSAnJzsKaWYoICFpc3NldCggJHBhcmFtc1sncmVjb3JkX2lkJ10gKSB8fCAkcGFyYW1zWydyZWNvcmRfaWQnXSA9PSAnJykgICAgCnsKCQoJJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwoJICAgICRwYXJhbXNbJ2Vycm9yJ10gPSAxOwoJICAgICR0aGlzLT5SZWRpcmVjdCggJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zICk7CgkgICAgcmV0dXJuOwp9CmVsc2UKewoJJHJlY29yZF9pZCA9ICRwYXJhbXNbJ3JlY29yZF9pZCddOwp9CgogICAgLy8gZmluZCB0aGUgdXNlcgogICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBBUyBzLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgQVMgdGMgV0hFUkUgcy5lcHJldXZlID0gdGMubmFtZSBBTkQgcy5pZCA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5HZXRSb3coJHF1ZXJ5LCBhcnJheSggJHBhcmFtc1sncmVjb3JkX2lkJ10gKSk7CgogICAgCWlmKCAhJGRicmVzdWx0KQogICAgICAJewoJCSR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXN1bHRub3Rmb3VuZCcpKTsKCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZXN1bHRzJyk7CgkJcmV0dXJuOwogICAgICAJfQoJZWxzZQoJewoJCSRlcHJldXZlID0gJGRicmVzdWx0WydlcHJldXZlJ107CgkJJG51bWpvdXJuID0gJGRicmVzdWx0WydudW1qb3VybiddOwoJCS8vJGVxdWlwZSA9ICRkYnJlc3VsdFsnZXF1aXBlJ107CgkJJG5vbSA9ICRkYnJlc3VsdFsnbm9tJ107CgkJJGNsYXNzZW1lbnQgPSAkZGJyZXN1bHRbJ2NsYXNzZW1lbnQnXTsKCQkkZWNhcnQgPSAkZGJyZXN1bHRbJ2VjYXJ0J107CgkJJGNvZWZmID0gJGRicmVzdWx0Wydjb2VmZiddOwoJCSR2aWN0b2lyZSA9ICRkYnJlc3VsdFsndmljdG9pcmUnXTsKCQkkcG9pbnRzID0gJGRicmVzdWx0Wydwb2ludHJlcyddOwoJCSRmb3JmYWl0ID0gJGRicmVzdWx0Wydmb3JmYWl0J107CgkJCgkJCWlmKCR2aWN0b2lyZSA9PTEpCgkJCXsKCQkJCQoJCQkJJHNlbGVjdGVkaW5kZXgxID0gMDsKCQkJCS8vJHNlbGVjdGVkdmFsdWUgPSAxOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHNlbGVjdGVkaW5kZXgxID0gMTsKCQkJCS8vJHNlbGVjdGVkdmFsdWUgPSAwOwoJCQl9CgkJCgkJCgp9CiAgIAokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsCgkJICAgICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoICRpZCwgJ2RvX2VkaXRfcmVzdWx0JywgJHJldHVybmlkICkgKTsKJHNtYXJ0eS0+YXNzaWduKCdyZWNvcmRfaWQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbiggJGlkLCAncmVjb3JkX2lkJywgJHBhcmFtc1sncmVjb3JkX2lkJ10gKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpLCAnY2xhc3M9ImJ1dHRvbiInKSk7ICAgCiRzbWFydHktPmFzc2lnbignZXByZXV2ZScsCgkJCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnZXByZXV2ZScsJGVwcmV1dmUsODAsMTUwKSk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0X3RvdXInLAoJCSR0aGlzLT5MYW5nKCd0b3VyJykpOwokc21hcnR5LT5hc3NpZ24oJ251bWpvdXJuJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnbnVtam91cm4nLCRudW1qb3Vybiw1LDEwKSk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0X2VxdWlwZScsCgkJJHRoaXMtPkxhbmcoJ2VxdWlwZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdub20nLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnbm9tJywkbm9tLDkwLDE1MCkpOwovKiovCgokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9qb3VldXInLAoJCSR0aGlzLT5MYW5nKCdqb3VldXInKSk7CiRzbWFydHktPmFzc2lnbignY2xhc3NlbWVudCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdjbGFzc2VtZW50JywkY2xhc3NlbWVudCwzMCw4MCkpOwoKJHNtYXJ0eS0+YXNzaWduKCdlY2FydCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdlY2FydCcsJGVjYXJ0LDEwLDgwKSk7CgkJCQkJCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2FkdmVyc2FpcmUnLAoJCSR0aGlzLT5MYW5nKCdhZHZlcnNhaXJlJykpOwokc21hcnR5LT5hc3NpZ24oJ2FkdmVyc2FpcmUnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnYWR2ZXJzYWlyZScsJG5vbSw4MCwxNTApKTsKJHNtYXJ0eS0+YXNzaWduKCdwdHNfYWR2ZXJzYWlyZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdwdHNfYWR2ZXJzYWlyZScsJHB0c19hZHZlcnNhaXJlLDEwLDE1MCkpOwoJCQkJCQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF92aWN0b2lyZV9kZWZhaXRlJywKCQkkdGhpcy0+TGFuZygndmljX2RlZicpKTsKCQkKCQkkc21hcnR5LT5hc3NpZ24oJ3ZpY3RvaXJlJywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3ZpY3RvaXJlJywkaXRlbXMgPSBhcnJheSgiViI9PiIxIiwiRCI9PiIwIiksJHNlbGVjdGVkaW5kZXggPSAkc2VsZWN0ZWRpbmRleDEsICRzZWxlY3RlZHZhbHVlPSR2aWN0b2lyZSw1KSk7Ci8qCQkKJHNtYXJ0eS0+YXNzaWduKCd2aWNfZGVmJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3ZpY19kZWYnLCR2aWNfZGVmLDUsMTApKTsKKi8KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfcG9pbnRzJywKCQkkdGhpcy0+TGFuZygncG9pbnRzJykpOwoJCSRpdGVtc2NvZWZmID0gCiRzbWFydHktPmFzc2lnbignY29lZmYnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2NvZWZmJywkaXRlbXNjb2VmZiA9IGFycmF5KCIwIj0+IjAuMDAiLCAiMCw1Ij0+IjAuNTAiLCIwLDc1Ij0+IjAuNzUiLCAiMSI9PiIxLjAwIiwgIjEsMjUiPT4iMS4yNSIsICIxLDUiPT4iMS41MCIpLCRzZWxlY3RlZGluZGV4PSRjb2VmZix2aWN0b2lyZSwgJHNlbGVjdGVkdmFsdWU9JGNvZWZmLDUpKTsJCQkJCQoJCQkJCQkJCQkJCQkJCQkKCiRzbWFydHktPmFzc2lnbignY2FuY2VsJywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnY2FuY2VsJywKCQkJCQkJJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CiRzbWFydHktPmFzc2lnbignYmFjaycsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2JhY2snLAoJCQkJCQkkdGhpcy0+TGFuZygnYmFjaycpKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdHJlc3VsdC50cGwnKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.edit_team.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXyknJykKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFVzZScpKQogIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJykpOwoJcmV0dXJuOwogICAKICB9CgokZGIgPSYgJHRoaXMtPkdldERiKCk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CiRwaGFzZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdQaGFzZV9lbl9jb3VycycpOwokZWRpdCA9IDA7Ly9zZXJ0IMOgIGRpc3Rpbmd1ZXIgbCdham91dCBwYXIgZMOpZmF1dCAwIGQndW5lIMOpZGl0aW9uICg9IDEpCiRyZWNvcmRfaWQgPSAnJzsKaWYoIGlzc2V0KCAkcGFyYW1zWydyZWNvcmRfaWQnXSApICYmICRwYXJhbXNbJ3JlY29yZF9pZCddICE9ICcnKSAgICAKewoJCgkkcmVjb3JkX2lkID0gJHBhcmFtc1sncmVjb3JkX2lkJ107CgkkZWRpdD0xOwoJICAgIAoKCiAgICAvLyBmaW5kIHRoZSB1c2VyCiAgICAkcXVlcnkgPSAiU0VMRUNUIGVxLnNhaXNvbiwgZXEucGhhc2UsZXEubGliZXF1aXBlLCBlcS5saWJkaXZpc2lvbixlcS5saWVuZGl2aXNpb24sZXEuZnJpZW5kbHluYW1lLCBlcS5pZGRpdixlcS5pZHBvdWxlLGVxLmlkZXByZXV2ZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIEFTIGVxIFdIRVJFICBlcS5pZCA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5HZXRSb3coJHF1ZXJ5LCBhcnJheSggJHJlY29yZF9pZCApKTsKICAgIGlmKCRkYnJlc3VsdCkKICAgICAgCgl7CgkJLy9saXN0ZSBkZXMgZG9ubsOpZXMgYSBhZmZpY2hlciBkYW5zIGxlIGZvcm11bGFpcmUKCQkvL3NhaXNvbiwgcGhhc2UsIGxpYmVxdWlwZSxsaWJkaXZpc2lvbiBmcmllbmRseW5hbWUKCQkkc2Fpc29uID0gJGRicmVzdWx0WydzYWlzb24nXTsKCQkkcGhhc2UgPSAkZGJyZXN1bHRbJ3BoYXNlJ107CgkJJGxpYmVxdWlwZSA9ICRkYnJlc3VsdFsnbGliZXF1aXBlJ107CgkJJGxpYmRpdmlzaW9uID0gJGRicmVzdWx0WydsaWJkaXZpc2lvbiddOwoJCSRsaWVuZGl2aXNpb24gPSAkZGJyZXN1bHRbJ2xpZW5kaXZpc2lvbiddOwoJCSRmcmllbmRseW5hbWUgPSAkZGJyZXN1bHRbJ2ZyaWVuZGx5bmFtZSddOwoJCSRpZGVwcmV1dmUgPSAkZGJyZXN1bHRbJ2lkZXByZXV2ZSddOwoJCSRpZGRpdiA9ICRkYnJlc3VsdFsnaWRkaXYnXTsKCQkkaWRwb3VsZSA9ICRkYnJlc3VsdFsnaWRwb3VsZSddOwoJCS8vb24gdmEgY2hlcmNoZXIgbCdvcmdhbmlzbWUgcXVpIG9yZ2FuaXNlIGxhIGNvbXBldAoJCSRleHBsb2RlMSA9IGV4cGxvZGUoIiYiLCRsaWVuZGl2aXNpb24pOwoJCSRleHBsb2RlMiA9IGV4cGxvZGUoIj0iLCAkZXhwbG9kZTFbMl0pOwoJCSRvcmdhbmlzbWUgPSAkZXhwbG9kZTJbMV07CgkvLwkkaW5kZXggPSAkZGJyZXN1bHRbJ2luZGV4MSddIC0gMTsKCS8vCSRuYW1lID0gJGRicmVzdWx0WyduYW1lJ107CgkJJHR5cGVfY29tcGV0X3NlbGVjdGVkID0gJGRicmVzdWx0WydpZGVwcmV1dmUnXTsKCQkKCQkKCQkvLyRvcmdhbmlzbWUgPSBnZXRfb3JnYW5pc21lKCRsaWJkaXZpc2lvbik7CgkJCgkJCgl9Cn0KCiAgCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywKCQkgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCggJGlkLCAnZG9fZWRpdF90ZWFtJywgJHJldHVybmlkICkgKTsKaWYoJGVkaXQ9PScxJykKewoJJHNtYXJ0eS0+YXNzaWduKCdyZWNvcmRfaWQnLAoJCQkgICAgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCAkaWQsICdyZWNvcmRfaWQnLCAKCQkJKGlzc2V0KCRwYXJhbXNbJ3JlY29yZF9pZCddKT8kcGFyYW1zWydyZWNvcmRfaWQnXToiIikpKTsKfQokbGlzdHNhaXNvbnMgPSBhcnJheSggJzIwMTQtMjAxNSc9PicyMDE0LTIwMTUnKTsKJGxpc3RwaGFzZSA9IGFycmF5KCcxJz0+JzEnLCAnMic9PicyJyk7CiAgIAokc21hcnR5LT5hc3NpZ24oJ3NhaXNvbicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdzYWlzb24nLAoJCShpc3NldCgkc2Fpc29uKT8kc2Fpc29uOiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKSkpKTsKJHNtYXJ0eS0+YXNzaWduKCdwaGFzZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdwaGFzZScsCgkJKGlzc2V0KCRwaGFzZSk/JHBoYXNlOiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdQaGFzZV9lbl9jb3VycycpKSkpOwokc21hcnR5LT5hc3NpZ24oJ2xpYmVxdWlwZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdsaWJlcXVpcGUnLAoJCShpc3NldCgkbGliZXF1aXBlKT8kbGliZXF1aXBlOiIiKSwzMCwxNTApKTsKJHNtYXJ0eS0+YXNzaWduKCdsaWJkaXZpc2lvbicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdsaWJkaXZpc2lvbicsCgkJKGlzc2V0KCRsaWJkaXZpc2lvbik/JGxpYmRpdmlzaW9uOiIiKSwzMCwxNTApKTsKJHNtYXJ0eS0+YXNzaWduKCdmcmllbmRseW5hbWUnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZnJpZW5kbHluYW1lJywKCQkoaXNzZXQoJGZyaWVuZGx5bmFtZSk/JGxpYmRpdmlzaW9uOiIiKSwxMCw4MCkpOwokc21hcnR5LT5hc3NpZ24oJ2lkZGl2JywgCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpZGRpdicsIAoJCShpc3NldCgkaWRkaXYpPyRpZGRpdjoiIiksIDEwLDIwKSk7CiRzbWFydHktPmFzc2lnbignaWRwb3VsZScsIAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnaWRwb3VsZScsIAoJCShpc3NldCgkaWRwb3VsZSk/JGlkcG91bGU6IiIpLCAxMCwyMCkpOwoJCQoKJG51bWVyb19jbHViID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NsdWJfbnVtYmVyJyk7CiRsaWd1ZSA9IHN1YnN0cigkbnVtZXJvX2NsdWIsIDAsMik7CmlmKCRlZGl0ID09JzEnKQp7Cgkkc21hcnR5LT5hc3NpZ24oJ29yZ2FuaXNtZScsIAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnb3JnYW5pc21lJywgJG9yZ2FuaXNtZSwxMCwyMCkpOwp9CmVsc2UKewoJJG9yZ2FuaXNtZVsnbGlndWUnXSA9ICcxMCcuJGxpZ3VlOwoJJG9yZ2FuaXNtZVsnZGVwYXJ0ZW1lbnQnXSA9IHN1YnN0cigkbnVtZXJvX2NsdWIsMiwyKTsKCSRvcmdhbmlzbWVbJ2ZlZGVyYXRpb24nXSA9ICcxMDAwMDEnOwoJJHNtYXJ0eS0+YXNzaWduKCdvcmdhbmlzbWUnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ29yZ2FuaXNtZScsJG9yZ2FuaXNtZSkpOwp9CgoKCQkvL29uIGZhaXQgbGUgdG91ciBkZXMgY29tcMOpdGl0aW9ucyBwb3NzaWJsZXMgZXhjZXB0w6kgVSBwb3VyIHVuZGVmaW5lZAokcXVlcnkyID0gIlNFTEVDVCBuYW1lLCBpZGVwcmV1dmUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgT1JERVIgQlkgbmFtZSBBU0MiOy8vIiBXSEVSRSBpbmRpdnMgPSAnMCciOwokZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyKTsKaWYoJGRicmVzdWx0YXQgJiYgJGRicmVzdWx0YXQtPlJlY29yZENvdW50KCk+MCkKewoJd2hpbGUgKCRkYnJlc3VsdGF0ICYmICRyb3cgPSAkZGJyZXN1bHRhdC0+RmV0Y2hSb3coKSkKCSAgewoJICAgCSRsaXN0WyRyb3dbJ25hbWUnXV0gPSAkcm93WydpZGVwcmV1dmUnXTsKCSAgfQp9CgovKgokc21hcnR5LT5hc3NpZ24oJ3R5cGVfY29tcGV0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3R5cGVfY29tcGV0JywkdHlwZV9jb21wZXQsJHNlbGVjdGVkaW5kZXggPSAkaW5kZXgsICRzZWxlY3RlZHZhbHVlPSRuYW1lKSk7CiovCiRzbWFydHktPmFzc2lnbignaWRlcHJldXZlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdpZGVwcmV1dmUnLCRsaXN0LAoJCShpc3NldCgkaWRlcHJldXZlKT8kaWRlcHJldXZlOiItMSIpLChpc3NldCgkaWRlcHJldXZlKT8kaWRlcHJldXZlOiIiKSkpOwoJCgkJCQkKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnc3VibWl0JyksICdjbGFzcz0iYnV0dG9uIicpKTsKJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2NhbmNlbCcsICR0aGlzLT5MYW5nKCdjYW5jZWwnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2JhY2snLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2JhY2snLCAkdGhpcy0+TGFuZygnYmFjaycpKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdlZGl0dGVhbS50cGwnKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.edit_type_compet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKICB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCXJldHVybjsKICAgCiAgfQppZiggaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pICkKICB7CiAgICAkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZW5jb250cmVzJyk7CiAgICByZXR1cm47CiAgfQoKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ3VzZXJzJyk7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCiRyZWNvcmRfaWQgPSAnJzsKaWYoICFpc3NldCggJHBhcmFtc1sncmVjb3JkX2lkJ10gKSB8fCAkcGFyYW1zWydyZWNvcmRfaWQnXSA9PSAnJykgICAgCnsKCQoJJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwoJICAgICRwYXJhbXNbJ2Vycm9yJ10gPSAxOwoJICAgICR0aGlzLT5SZWRpcmVjdCggJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zICk7CgkgICAgcmV0dXJuOwp9CgovL2xlcyBvcmdhbmlzbWVzCiRmZWRlID0gJzEwMDAwMSc7CiR6b25lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3pvbmUnKTsKJGxpZ3VlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2xpZ3VlJyk7CiRkZXAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVwJyk7CiR0YWJsZWF1ID0gYXJyYXkoIkbDqWTDqXJhdGlvbiI9PiRmZWRlLCAiWm9uZSI9PiR6b25lLCJMaWd1ZSI9PiRsaWd1ZSwgIkNvbWl0w6kiPT4kZGVwKTsKICAgIC8vIAogICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIFdIRVJFIGlkID0gPyI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkdldFJvdygkcXVlcnksIGFycmF5KCAkcGFyYW1zWydyZWNvcmRfaWQnXSApKTsKCglpZiggISRkYnJlc3VsdCkKICAgIAl7CgkJJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXN1bHRub3Rmb3VuZCcpKTsKCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKHJlc3VsdHMsICRwYXJhbXMpOwoJCXJldHVybjsKICAgICAJfQoJZWxzZQoJewoJCSRpZCA9ICRkYnJlc3VsdFsnaWQnXTsKCQkkbmFtZSA9ICRkYnJlc3VsdFsnbmFtZSddOwoJCSRjb2RlX2NvbXBldCA9ICRkYnJlc3VsdFsnY29kZV9jb21wZXQnXTsKCQkkY29lZmZpY2llbnQgPSAkZGJyZXN1bHRbJ2NvZWZmaWNpZW50J107CgkJJGluZGl2cyA9ICRkYnJlc3VsdFsnaW5kaXZzJ107CgkJJGlkb3JnYSA9ICRkYnJlc3VsdFsnaWRvcmdhJ107CQoJCSRpZGVwcmV1dmUgPSAkZGJyZXN1bHRbJ2lkZXByZXV2ZSddOwkKCX0KCiAgIAokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsCgkJICAgICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoICRpZCwgJ2RvX2FkZF90eXBlX2NvbXBldCcsICRyZXR1cm5pZCApICk7CiRzbWFydHktPmFzc2lnbigncmVjb3JkX2lkJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCAkaWQsICdyZWNvcmRfaWQnLCAkcGFyYW1zWydyZWNvcmRfaWQnXSApKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnc3VibWl0JyksICdjbGFzcz0iYnV0dG9uIicpKTsKJHNtYXJ0eS0+YXNzaWduKCduYW1lJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnbmFtZScsJG5hbWUsMTE1LDIwMCkpOwoJCQokc21hcnR5LT5hc3NpZ24oJ2lkZXByZXV2ZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnaWRlcHJldXZlJywkaWRlcHJldXZlLDUsMTApKTsKCiRzbWFydHktPmFzc2lnbignY29lZmZpY2llbnQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnY29lZmZpY2llbnQnLCRjb2VmZmljaWVudCw1LDEwKSk7CgkJJGl0ZW1zaW5kaXZzID0gYXJyYXkoIk5vbiI9PiIwIiwiT3VpIj0+IjEiKTsKJHNtYXJ0eS0+YXNzaWduKCdpbmRpdnMnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2luZGl2cycsJGl0ZW1zaW5kaXZzLC0xLCRpbmRpdnMpKTsKCQkkc21hcnR5LT5hc3NpZ24oJ29yZ2EnLAoJCQkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnaWRvcmdhJywkdGFibGVhdSwtMSwkaWRvcmdhKSk7CiRzbWFydHktPmFzc2lnbignZWRpdCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2VkaXQnLCdPdWknKSk7CQkJCQkJCQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnc3VibWl0JyksICdjbGFzcz0iYnV0dG9uIicpKTsKJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdjYW5jZWwnLAoJCQkJCQkkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdiYWNrJywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnYmFjaycsCgkJCQkJCSR0aGlzLT5MYW5nKCdiYWNrJykpKTsKCiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdlZGl0X3R5cGVfY29tcGV0LnRwbCcpOwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.equipe.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKJHNhaXNvbl9lbl9jb3VycyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKLy8kc2Fpc29uID0gKGlzc2V0KCRwYXJhbXNbJ3NhaXNvbiddKSk/JHBhcmFtc1snc2Fpc29uJ106JHNhaXNvbl9lbl9jb3VyczsKJHJlY29yZF9pZCA9ICcnOwppZighaXNzZXQoJHBhcmFtc1sncmVjb3JkX2lkJ10pIHx8ICRwYXJhbXNbJ3JlY29yZF9pZCddID09JycpCnsKCSRtZXNzYWdlID0gJ1VuIHBiIGVzdCBzdXJ2ZW51JzsKfQplbHNlCnsKCSRyZWNvcmRfaWQgPSAkcGFyYW1zWydyZWNvcmRfaWQnXTsKfQoKCgovL2xlIG51bcOpcm8gZGUgbCfDqXF1aXBlIGVzdCBvaywgb24gY29udGludWUKLy9vbiB2YSBkJ2Fib3JkIHLDqWN1cMOpcmVyIGxlIGNsYXNzZW1lbnQgZGUgY2V0dGUgw6lxdWlwZQokcXVlcnkgPSAiU0VMRUNUIGNsLmNsdCwgY2wuam91ZSxjbC5lcXVpcGUsY2wucHRzLGVxLmxpYmVxdWlwZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jbGFzc2VtZW50IEFTIGNsLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcyBBUyBlcSAgV0hFUkUgZXEuaWQgPSBjbC5pZGVxdWlwZSAgIEFORCBjbC5pZGVxdWlwZSA9ID8gT1JERVIgQlkgY2wuaWQgQVNDIjsKJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmVjb3JkX2lkKSk7Cgokcm93YXJyYXkgPSBhcnJheSgpOwppZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCnsKCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgl7CgkJJGNsYXNzZW1lbnQgPSAkcm93WydjbHQnXTsKCQkkam91ZSA9ICRyb3dbJ2pvdWUnXTsKCQkkZnJpZW5kbHluYW1lID0gJHJvd1snZnJpZW5kbHluYW1lJ107CgkJaWYoJGNsYXNzZW1lbnQ9PScwJyB8fCAkam91ZSA9PScwJyApCgkJewoJCQkkY2xhc3NlbWVudCA9ICctJzsKCQl9CgkJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7CgkJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCQkkcG91bGUgPSAkcm93Wydwb3VsZSddOwoJCSRvbmVyb3ctPmlkPSAkcm93WydpZCddOwoJCSRvbmVyb3ctPmlkcG91bGUgPSAkcm93WydpZHBvdWxlJ107CgkJJG9uZXJvdy0+aWRkaXYgPSAkcm93WydpZGRpdiddOwoJCSRvbmVyb3ctPmZyaWVuZGx5bmFtZT0gJHJvd1snZnJpZW5kbHluYW1lJ107CgkJJG9uZXJvdy0+Y2x0PSAgJGNsYXNzZW1lbnQ7CgkJJG9uZXJvdy0+ZXF1aXBlPSAkcm93WydlcXVpcGUnXTsKCQkkb25lcm93LT5qb3VlPSAkcm93Wydqb3VlJ107CgkJJG9uZXJvdy0+cHRzPSAkcm93WydwdHMnXTsKCQkvLyRvbmVyb3ctPnR5cGVfY29tcGV0ID0gJHJvd1snY29kZV9jb21wZXQnXTsKCQkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJCSRyb3dhcnJheVtdPSAkb25lcm93OwoJfQp9CmVsc2UKewoJLy9wYXMgZGUgcsOpc3VsdGF0cyA/Cn0KJHNtYXJ0eS0+YXNzaWduKCdsaWJlcXVpcGUnLCAkZnJpZW5kbHluYW1lKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Jlc3VsdHNmb3VuZHRleHQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwoKCgokcXVlcnkyID0gIlNFTEVDVCByZW4uZGF0ZV9ldmVudCwgcmVuLmlkcG91bGUsIHJlbi5pZGRpdixlcS5pZCBhcyBpZF9hbGlhcyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBBUyByZW4sICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIEFTIGVxIFdIRVJFIHJlbi5pZHBvdWxlID0gZXEuaWRwb3VsZSBBTkQgcmVuLmlkZGl2ID0gZXEuaWRkaXYgQU5EIGVxLmlkID0gPyBHUk9VUCBCWSByZW4uZGF0ZV9ldmVudCBPUkRFUiBCWSByZW4uZGF0ZV9ldmVudCBBU0MgIjsKLy8kcGFybXNbJ3NhaXNvbiddID0gJHNhaXNvbjsKJHBhcm1zWydpZF9hbGlhcyddID0gJHJlY29yZF9pZDsKCiRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsJHBhcm1zKTsKJHJvd2FycmF5MiA9IGFycmF5KCk7CiRpID0gMDsKaWYoJGRicmVzdWx0YXQgJiYgJGRicmVzdWx0YXQtPlJlY29yZENvdW50KCk+MCkKewoJCgl3aGlsZSgkcm93MiA9ICRkYnJlc3VsdGF0LT5GZXRjaFJvdygpKQoJewoJCSRpKys7CgkJJGRhdGVfZXZlbnQgPSAkcm93MlsnZGF0ZV9ldmVudCddOwoJCSRpZHBvdWxlID0gJHJvdzJbJ2lkcG91bGUnXTsKCQkkaWRkaXYgPSAkcm93MlsnaWRkaXYnXTsKCQkkb25lcm93MiA9IG5ldyBTdGRDbGFzcygpOwoJCSRvbmVyb3cyLT5yb3djbGFzcyA9JHJvd2NsYXNzOwoJCSRvbmVyb3cyLT5kYXRlX2V2ZW50ID0gJHJvdzJbJ2RhdGVfZXZlbnQnXTsKCQkkb25lcm93Mi0+dmFsZXVyID0gJGk7CgkJCgkJCgkJCS8vb24gZmFpdCBsYSBkZXV4acOobWUgcmVxdWV0ZSBkw6lyaXZhbnQgZGUgbGEgcHJlbWnDqHJlCgkJCSRxdWVyeTMgPSAiU0VMRUNUIHJlbi5lcXVhLCByZW4uc2NvcmVhLCByZW4uZXF1YiwgcmVuLnNjb3JlYiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBBUyByZW4gV0hFUkUgcmVuLmRhdGVfZXZlbnQgPSA/IEFORCBpZHBvdWxlID0gPyBBTkQgaWRkaXYgPSA/ICI7CgkJCSRkYnJlc3VsdDMgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MywgYXJyYXkoJGRhdGVfZXZlbnQsICRpZHBvdWxlLCAkaWRkaXYpKTsKCQkJJHJvd2FycmF5MyA9IGFycmF5KCk7CgkJCQoJCQkJaWYoJGRicmVzdWx0MyAmJiAkZGJyZXN1bHQzLT5SZWNvcmRDb3VudCgpPjApCgkJCQl7CgkJCQkJd2hpbGUoJHJvdzMgPSAkZGJyZXN1bHQzLT5GZXRjaFJvdygpKQoJCQkJCXsKCQkJCQkJJG9uZXJvdzMgID0gbmV3IFN0ZENsYXNzKCk7CgkJCQkJCSRvbmVyb3czLT5yb3djbGFzcyA9ICRyb3djbGFzczsKCQkJCQkJJG9uZXJvdzMtPmVxdWEgPSAkcm93M1snZXF1YSddOwoJCQkJCQkkb25lcm93My0+c2NvcmVhID0gJHJvdzNbJ3Njb3JlYSddOwoJCQkJCQkkb25lcm93My0+ZXF1YiA9ICRyb3czWydlcXViJ107CgkJCQkJCSRvbmVyb3czLT5zY29yZWIgPSAkcm93M1snc2NvcmViJ107CgkJCQkJCSRyb3dhcnJheTNbXSA9ICRvbmVyb3czOwoJCQkJCX0KCQkJCQkkc21hcnR5LT5hc3NpZ24oJ3Byb2RzXycuJGksJHJvd2FycmF5Myk7CgkJCQkJJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2NvdW50XycuJGksIGNvdW50KCRyb3dhcnJheTMpKTsKCQkJCQl1bnNldCgkcm93YXJyYXkzKTsKCQkJCQkKCQkJCX0KCQkkcm93YXJyYXkyW10gID0gJG9uZXJvdzI7Cgl9CgkKCSRzbWFydHktPmFzc2lnbignaXRlbWNvdW50MicsIGNvdW50KCRyb3dhcnJheTIpKTsKCSRzbWFydHktPmFzc2lnbignaXRlbXMyJywgJHJvd2FycmF5Mik7Cn0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdlcXVpcGUudHBsJyk7Ci8vZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdkZXRhaWxzX3JlbmNvbnRyZS50cGwnKTsKIwojRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.erase_spid.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCQlpZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CgkJJGRiID0mICR0aGlzLT5HZXREYigpOwoJCWlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKCQl7CgkJJHBhcmFtcyA9IGFycmF5KCdtZXNzYWdlJz0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSwgJ2FjdGl2ZV90YWInID0+ICd1c2VycycpOwoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCcnLCAkcGFyYW1zKTsKCQkvKmVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJykpOwoJCXJldHVybjsqLwoJCX0KCgkJJHJlY29yZF9pZCA9ICcnOwoJCWlmIChpc3NldCgkcGFyYW1zWydyZWNvcmRfaWQnXSkpCgkJewoJCQkkcmVjb3JkX2lkID0gJHBhcmFtc1sncmVjb3JkX2lkJ107CgkJfQoJCSRjb2VmY2hhbXAgPSAnJzsKCQlpZihpc3NldCgkcGFyYW1zWydjb2VmY2hhbXAnXSkpCgkJewoJCQkkY29lZmNoYW1wID0gJHBhcmFtc1snY29lZmNoYW1wJ107CgkJfQoJCSRudW1qb3VybiA9ICcnOwoJCWlmKGlzc2V0KCRwYXJhbXNbJ251bWpvdXJuJ10pKQoJCXsKCQkJJG51bWpvdXJuID0gJHBhcmFtc1snbnVtam91cm4nXTsKCQl9CgkJJHZkID0gJyc7CgkJaWYoaXNzZXQoJHBhcmFtc1sndmQnXSkpCgkJewoJCQkkdmQgPSAkcGFyYW1zWyd2ZCddOwoJCX0KCQkkcG9pbnRyZXMgPSAnJzsKCQlpZihpc3NldCgkcGFyYW1zWydwb2ludHJlcyddKSkKCQl7CgkJCSRwb2ludHJlcyA9ICRwYXJhbXNbJ3BvaW50cmVzJ107CgkJfQoJCQoJCQoJCS8vTm93IHJlbW92ZSB0aGUgYXJ0aWNsZQoJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBTRVQgbnVtam91cm4gPSA/LCBjb2VmZiA9ID8sIHBvaW50cmVzID0gPywgdmljdG9pcmUgPSA/IFdIRVJFIGlkID0gPyI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG51bWpvdXJuLCAkY29lZmNoYW1wLCRwb2ludHJlcywkdmQsICRyZWNvcmRfaWQpKTsKCQkKCQkJaWYoISRkYnJlc3VsdCkKCQkJewoJCQkJZWNobyAkZGItPkVycm9yTXNnKCk7CgkJCQkKCQkJfQoJCQoJCQoKJHRoaXMtPlNldE1lc3NhZ2UoJ1LDqXN1bHRhdCBtb2RpZmnDqScpOwokdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZXN1bHRzJyk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.getInitialisation.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKaWYoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgU2V0IFByZWZzJykpCnsKCSR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKfQovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKCiRzdGFsbD0gMTsgLy9vbiBlc3QgZGFucyBsJ2luc3RhbGxhdGlvbgovL2xlcyBkaWZmw6lyZW50cyBzdGF0dXRzIHBvc3NpYmxlcyA6IAoJLy9VbmRlZmluZWQgUGFyIGTDqWZhdXQKCS8vS28gbCdpbnN0YWxsIGEgw6ljaG91w6llLgoJLy9PayBsJ2luc3RhbGwgYSByw6l1c3NpZS4KCQovL2xlcyBkaWZmw6lyZW50ZXMgw6l0YXBlcyBkZSBsJ2luc3RhbGwKCS8vc3RlcD0xIEluc3RhbGxhdGlvbiBkdSBjb21wdGUgZXQgdGVzdCBkZSBsYSBjb25uZXhpb24gRkZUVAoJLy9zdGVwPTIgT24gcsOpY3Vww6hyZSBsZSBudW3DqXJvIGR1IGNsdWIsIG9uIGTDqWR1aXQgbGEgbGlndWUsIGxhIHpvbmUgZXQgbGUgY29taXTDqSA/IE91aSAhCgkKJHpvbmUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnem9uZScpOwokbGlndWUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbGlndWUnKTsKJGRlcCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXAnKTsKCQoJCQppZihpc3NldCgkcGFyYW1zWydzdGVwJ10pICYmICRwYXJhbXNbJ3N0ZXAnXSAhPSAnJykKewoJJHN0ZXAgPSAkcGFyYW1zWydzdGVwJ107Cn0JCiRzbWFydHktPmFzc2lnbignc3RlcCcsICRzdGVwKTsKJHNlcnZpY2UgPSBuZXcgU2VydmljZW4oKTsKLy9lY2hvICRzdGVwOwpzd2l0Y2goJHN0ZXApCnsKCWNhc2UgIjEiIDogLy9DZWNpIHRlc3RlIGxhIGNvbm5leGlvbiBwdWlzIHNpIHN1Y2PDqHMgZW52b2llIHZlcnMgbCdvbmdsZXQgY29uZmlndXJhdGlvbiBzaW5vbiByZXRvdXIgb25nbGV0IENvbXB0ZQoJCgkJCgkJJGluaXRpYWxpc2F0aW9uID0gJHNlcnZpY2UtPmluaXRpYWxpc2F0aW9uQVBJKCk7CgkJLy92YXJfZHVtcCgkaW5pdGlhbGlzYXRpb24pOwoKCQlpZigkaW5pdGlhbGlzYXRpb24gPT09IEZBTFNFKQoJCXsKCQkJJHNtYXJ0eS0+YXNzaWduKCdyZXVzc2l0ZScsIEZBTFNFKTsKCQkJJHNtYXJ0eS0+YXNzaWduKCdsaWVuJywKCQkJCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkLCAkY29udGVudHM9J1JldmVuaXInLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJjb21wdGUiKSkpOwoJCX0KCQllbHNlaWYoJGluaXRpYWxpc2F0aW9uID09ICcxJykKCQl7CgoJCQkJCSRzbWFydHktPmFzc2lnbigncmV1c3NpdGUnLCBUUlVFKTsKCQkJCQkkc21hcnR5LT5hc3NpZ24oJ2xpZW4nLAoJCQkJCQkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCwgJGNvbnRlbnRzPSdDb250aW51ZXonLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJjb25maWd1cmF0aW9uIiwgInN0YWxsIj0+JHN0YWxsLCAic3RlcCI9PiIyIikpKTsKCQl9CgkJZWxzZQoJCXsKCQkJCQkkc21hcnR5LT5hc3NpZ24oJ3JldXNzaXRlJywgRkFMU0UpOwoJCQkJCSRzbWFydHktPmFzc2lnbignbGllbicsCgkJCQkJCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkLCAkY29udGVudHM9J1JldmVuaXInLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJjb21wdGUiKSkpOwoJCX0KCWJyZWFrOwoJY2FzZSAiMiIgOiAKCQkvL29uIHZhIHLDqWN1cMOpcmVyIGxlcyDDqXByZXV2ZXMgZGVzIGRpZmbDqXJlbnRlcyBsaWd1ZXMsIHpvbmVzIGV0IGNvbWl0w6lzCgkJLy9vbiBwcmVuZCBkb25jIGxlcyBwcsOpZsOpcmVuY2VzIG9idGVudWVzIHByw6ljw6lkZW1tZW50CgkJCgkJJHNtYXJ0eS0+YXNzaWduKCdjb21wZXRfem9uZScsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX2NvbXBldHMnLCAkcmV0dXJuaWQsJGNvbnRlbnRzPSJyw6ljdXDDqXJlciBsZXMgY29tcMOpdGl0b25zIGRlIHpvbmUiLGFycmF5KCJpZG9yZ2EiPT4kem9uZSwic3RhbGwiPT4iMSIsInN0ZXAiPT4iMiIpICkpOwoJCQoJCQoJCglicmVhazsKCWNhc2UgIjMiIDogCgkJLy9vbiB2YSByw6ljdXDDqXJlciBsZXMgw6lwcmV1dmVzIGRlcyBkaWZmw6lyZW50ZXMgbGlndWVzLCB6b25lcyBldCBjb21pdMOpcwoJCS8vb24gcHJlbmQgZG9uYyBsZXMgcHLDqWbDqXJlbmNlcyBvYnRlbnVlcyBwcsOpY8OpZGVtbWVudAoJCQoJCSRzbWFydHktPmFzc2lnbignY29tcGV0X3pvbmUnLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9jb21wZXRzJywgJHJldHVybmlkLCRjb250ZW50cz0icsOpY3Vww6lyZXIgbGVzIGNvbXDDqXRpdG9ucyBkZSBsaWd1ZSIsYXJyYXkoImlkb3JnYSI9PiRsaWd1ZSwic3RhbGwiPT4iMSIsInN0ZXAiPT4iMyIpICkpOwoJCQoJCQoJCglicmVhazsKCWNhc2UgIjQiIDogCgkJLy9vbiB2YSByw6ljdXDDqXJlciBsZXMgw6lwcmV1dmVzIGRlcyBkaWZmw6lyZW50ZXMgbGlndWVzLCB6b25lcyBldCBjb21pdMOpcwoJCS8vb24gcHJlbmQgZG9uYyBsZXMgcHLDqWbDqXJlbmNlcyBvYnRlbnVlcyBwcsOpY8OpZGVtbWVudAoJCQoJCSRzbWFydHktPmFzc2lnbignY29tcGV0X3pvbmUnLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9jb21wZXRzJywgJHJldHVybmlkLCRjb250ZW50cz0icsOpY3Vww6lyZXIgbGVzIGNvbXDDqXRpdG9ucyBkZSBkw6lwYXJ0ZW1lbnQiLGFycmF5KCJpZG9yZ2EiPT4kZGVwLCJzdGFsbCI9PiIxIiwic3RlcCI9PiI0IikgKSk7CgkJCgkJCgkKCWJyZWFrOwp9OwoKCgoKCgkKCgoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdpbml0aWFsaXNhdGlvbi50cGwnKTsKIwojRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.getPouleClassement.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCAoICRnQ21zICkgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwovL29uIHbDqXJpZmllIGxlcyBwZXJtaXNzaW9ucyBkJ2Fib3JkCmlmKCEgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBVc2UnKSkgZXhpdDsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJHBoYXNlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BoYXNlX2VuX2NvdXJzJyk7CiRlcnJvciA9IDA7CiRkZXNpZ25hdGlvbiA9ICcnOwokZnVsbCA9IDA7Ly92YXJpYWJsZSBwb3VyIHLDqWN1cMOpcmVyIGwnZW5zZW1ibGUgZGVzIHLDqXN1bHRhdHMgb3UgdW5lIHNldWxlLCBwYXIgZMOpZmF1dCAwIGNhZCB0b3V0ZXMKJHJlY29yZF9pZCA9ICcnOwokbGlnbmVzID0gMDsKCi8vb24gZmFpdCB1bmUgcmVxdWV0ZSBnw6luw6lyYWxlIGV0IG9uIGFmZmluZSDDqXZlbnR1ZWxsZW1lbnQKJHF1ZXJ5ID0gIlNFTEVDVCBpZGRpdiwgaWRwb3VsZSwgaWQgYXMgaWRfZXF1aXBlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgV0hFUkUgc2Fpc29uID0gPyAiOy8vQU5EIHBoYXNlID0gPyI7CiRwYXJtc1snc2Fpc29uJ10gPSAkc2Fpc29uOwovLyRwYXJtc1sncGhhc2UnXSAgPSAkcGhhc2U7CgppZihpc3NldCgkcGFyYW1zWydyZWNvcmRfaWQnXSkgJiYgJHBhcmFtc1sncmVjb3JkX2lkJ10gIT0nJykKewoJJHJlY29yZF9pZCA9ICRwYXJhbXNbJ3JlY29yZF9pZCddOwoJJHF1ZXJ5Lj0iIEFORCBpZCA9ID8iOwoJJHBhcm1zWydpZCddID0gJHJlY29yZF9pZDsKCSRmdWxsID0gMTsKfQoKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgJHBhcm1zKTsKCi8vYm9uIHR0IHZhIGJpZW4sIHR0IGVzdCBPawovL29uIGZhaXQgbGEgYm91Y2xlCmlmKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk+MCkKewoJd2hpbGUoICRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJewoJCSRpZGRpdiA9ICRyb3dbJ2lkZGl2J107CgkJJGlkcG91bGUgPSAkcm93WydpZHBvdWxlJ107CgkJJGlkX2VxdWlwZSA9ICRyb3dbJ2lkX2VxdWlwZSddOwkJCgkJJHNlcnZpY2UgPSBuZXcgcmV0cmlldmVfb3BzKCk7CgkJaWYoJGZ1bGwgPT0gJzAnKS8vdG91dGVzIGxlcyDDqXF1aXBlcyBzb250IHPDqWxlY3Rpb25uw6llcwoJCXsKCQkJJHJldHJpZXZlID0gJHNlcnZpY2UtPnJldHJpZXZlX2FsbF9jbGFzc2VtZW50cygkaWRkaXYsJGlkcG91bGUsJHJlY29yZF9pZD0kaWRfZXF1aXBlKTsKCQkJc2xlZXAoMSk7CgkJfQoJCWVsc2UKCQl7CgkJCSRyZXRyaWV2ZSA9ICRzZXJ2aWNlLT5yZXRyaWV2ZV9hbGxfY2xhc3NlbWVudHMoJGlkZGl2LCRpZHBvdWxlLCRyZWNvcmRfaWQ9JHBhcmFtc1sncmVjb3JkX2lkJ10pOwoJCX0KCQkvLyRpZGVxdWlwZSA9ICRyb3dbJ2lkJ10KCQkKCX0KCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2VxdWlwZXMnKTsKfQplbHNlCnsKCWVjaG8gIlBhcyBkZSByw6lzdWx0YXRzIG91IHJlcXVldGUgaW5jb3JyZWN0ZSI7Cn0KCgoKCiMKI0VPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.individuelles.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBhdXRldXIgOiBDbGF1ZGUgU0lPSEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjCiMgQ2V0dGUgcGFnZSByw6ljdXDDqHJlIGxlcyBjb21ww6l0aXRpb25zIGluZGl2aWR1ZWxsZXMgICAgICAgICAgICAgICAgICAgICAgIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKCgokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7CiRwYXJtcyA9IGFycmF5KCk7CiRyZXN1bHQ9IGFycmF5ICgpOwokbW9pc19lbl9jb3VycyA9IGRhdGUoJ20nKTsKJG1vaXNfZW5fY291cnMyID0gJG1vaXNfZW5fY291cnMgLSAxOwokbm9tX2VxdWlwZXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbm9tX2VxdWlwZXMnKTsKJHNhaXNvbl9jb3VyYW50ZSA9IChpc3NldCgkcGFyYW1zWydzYWlzb24nXSk/JHBhcmFtc1snc2Fpc29uJ106JHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpKTsKLy9vbiDDqXRhYmxpdCBsYSBsaXN0ZSBkZXMgY29tcMOpdGl0aW9ucyBpbmRpdmlkdWVsbGVzIGR1IGNhbGVuZHJpZXIKJHF1ZXJ5MSA9ICJTRUxFQ1QgY2FsLmRhdGVfZGVidXQsdGMubmFtZSxjYWwuaWRlcHJldXZlIEFTIGlkX2VwLE1PTlRIKGNhbC5kYXRlX2RlYnV0KSBBUyBtb2lzX3JlZiwgY2FsLm51bWpvdXJuIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIgQVMgY2FsLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgQVMgdGMgV0hFUkUgY2FsLmlkZXByZXV2ZSA9IHRjLmlkZXByZXV2ZSBBTkQgY2FsLnNhaXNvbiA9ID8iOwovL2lsIHMnYWdpdCBkZSBjb21ww6l0aXRpb25zIGluZGl2aWR1ZWxsZXMgPwokcXVlcnkxLj0iIEFORCB0Yy5pbmRpdnMgPSAxICI7CiRwYXJhbWV0cmVzID0gMDsKJGk9MDsKCiRwYXJtc1snc2Fpc29uJ10gPSAkc2Fpc29uX2NvdXJhbnRlOwppZihpc3NldCgkcGFyYW1zWyd0eXBlX2NvbXBldCddKSAmJiAkcGFyYW1zWyd0eXBlX2NvbXBldCddICE9JycpCnsKCSRwYXJhbWV0cmVzKys7CgkkdHlwZV9jb21wZXQgPSAkcGFyYW1zWyd0eXBlX2NvbXBldCddOwoJLy9vbiByZWdhcmRlIHNpIHVuIE7CsCBkZSBqb3VybsOpZSBlc3QgZW4gcGFyYW3DqHRyZSDDqWdhbGVtZW50CgkkcXVlcnkxLj0iIEFORCB0Yy5jb2RlX2NvbXBldCA9ID8iOwoJJHBhcm1zWyd0eXBlX2NvbXBldCddID0gJHR5cGVfY29tcGV0OwoJCgkJCgkJCQp9CmlmKGlzc2V0KCRwYXJhbXNbJ2lkZXByZXV2ZSddKSAmJiAkcGFyYW1zWydpZGVwcmV1dmUnXSAhPSAnJykKewoJJGlkZXByZXV2ZSA9ICRwYXJhbXNbJ2lkZXByZXV2ZSddOwoJJHF1ZXJ5MS49ICIgQU5EIHRjLmlkZXByZXV2ZSA9ID8iOwoJJHBhcm1zWydpZGVwcmV1dmUnXSA9ICRpZGVwcmV1dmU7Cn0KaWYoaXNzZXQoJHBhcmFtc1snZGF0ZV9kZWJ1dCddKSAmJiAkcGFyYW1zWydkYXRlX2RlYnV0J10gIT0nJykKewoJJHBhcmFtZXRyZXMrKzsKCSRkYXRlX2RlYnV0ID0gJHBhcmFtc1snZGF0ZV9kZWJ1dCddOwoJCgkkcXVlcnkxLj0iIEFORCBjYWwuZGF0ZV9kZWJ1dCA9ID8iOwoJJHBhcm1zWydkYXRlX2RlYnV0J10gPSAkZGF0ZV9kZWJ1dDsKfQppZihpc3NldCgkcGFyYW1zWydkYXRlX2ZpbiddKSAmJiAkcGFyYW1zWydkYXRlX2ZpbiddICE9JycpCnsKCSRwYXJhbWV0cmVzKys7CgkkZGF0ZV9maW4gPSAkcGFyYW1zWydkYXRlX2ZpbiddOwoJCgkkcXVlcnkxLj0iIEFORCBjYWwuZGF0ZV9maW4gPSA/IjsKCSRwYXJtc1snZGF0ZV9maW4nXSA9ICRkYXRlX2ZpbjsKfQoKaWYoaXNzZXQoJHBhcmFtc1sndHJpJ10pICYmICRwYXJhbXNbJ3RyaSddICE9JycpCnsKCSRwYXJhbWV0cmVzKys7CgkkdHJpID0gJHBhcmFtc1sndHJpJ107CgkKCSRxdWVyeTEuPSIgT1JERVIgQlkgY2FsLmRhdGVfZGVidXQgPyI7CgkkcGFybXNbJ3RyaSddID0gJHRyaTsKfQplbHNlIC8vbGUgdHJpIG4nZXN0IHBhcyByZW5zZWlnbsOpLCBvbiBtZXQgZGVzY2VuZGFudCBwYXIgZMOpZmF1dAp7CgkkcXVlcnkxLj0iIE9SREVSIEJZIGNhbC5kYXRlX2RlYnV0IERFU0MiOwp9CgoKLy9lY2hvICRxdWVyeTE7CgkkcmVzdWx0MSA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkxLCRwYXJtcyk7CiRsaWduZXMgPSAkcmVzdWx0MS0+UmVjb3JkQ291bnQoKTsKLy9lY2hvICJsZSBuYiBkZSBsaWduZXMgZXN0IDogIi4kbGlnbmVzOwoJaWYoJHJlc3VsdDEgJiYgJHJlc3VsdDEtPlJlY29yZENvdW50KCk+MCkKCXsKCQkkcm93Y2xhc3M9ICdyb3cxJzsKCQkkcm93YXJyYXk9IGFycmF5ICgpOwoJCSRwYXJtcyA9IGFycmF5KCk7CgkJCgkJd2hpbGUoJHJvdzEgPSAkcmVzdWx0MS0+RmV0Y2hSb3coKSkKCQl7CgkJCS8vb24gcsOpY3Vww6hyZSBsZXMgcsOpc3VsdGF0cwoJCQkkaSsrOwoJCQkkZGF0ZV9kZWJ1dCA9ICRyb3cxWydkYXRlX2RlYnV0J107CgkJCSRwYXJtc1snZGF0ZV9kZWJ1dCddID0gJGRhdGVfZGVidXQ7CgkJCSRkYXRlX2ZpbiA9ICRyb3cxWydkYXRlX2ZpbiddOwoJCQkkbnVtam91cm4gPSAkcm93MVsnbnVtam91cm4nXTsKCQkJJG5hbWUgPSAkcm93MVsnbmFtZSddOwoJCQkkaWRlcHJldXZlMiA9ICRyb3cxWydpZF9lcCddOwoJCQkvL2VjaG8gImxlIGlkIGRlIGVwcmV1dmUgZXN0IDogIi4kaWRlcHJldXZlMjsKCQkJJG1vaXNfcmVmID0gJHJvdzFbJ21vaXNfcmVmJ107CQkKCQkJCgkJCS8vb24gaW5zdGFuY2llIGNlIHF1aSB2YSBmYWlyZSBsZXMgZW50w6p0ZXMKCQkJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7CgkJCSRvbmVyb3ctPnJvd2NsYXNzPSAkcm93Y2xhc3M7CgkJCSRvbmVyb3ctPm5hbWUgPSAkbmFtZTsKCQkJJG9uZXJvdy0+ZGF0ZV9ldmVudCA9ICRkYXRlX2RlYnV0OwoJCQkkb25lcm93LT5pZGVwcmV1dmUgPSAkaWRlcHJldXZlMjsKCQkJJG9uZXJvdy0+dmFsZXVyID0gJGk7Ly90csOocyBpbXBvcnRhbnQgcG91ciBsZXMgYm91Y2xlcwoJCQkvL2VjaG8gImxhIHZhbGV1ciBkZSBpIGVzdCA6ICIuJGk7CgkJCQoJCQkJLy9vbiBlc3QgZGFucyBsYSBGRlRUCgkJCQkvLyRxdWVyeTIgPSAiU0VMRUNUIGNsYS5pZGVwcmV1dmUsY2xhLmlkZGl2aXNpb24sZHYubGliZWxsZSxjbGEudGFibGVhdSxjbGEudG91ciwgY2xhLnJhbmcsY2xhLm5vbSwgY2xhLnBvaW50cyAgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X2NsYXNzZW1lbnQgQVMgY2xhICwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2RpdmlzaW9ucyBBUyBkdiBXSEVSRSBkdi5pZGVwcmV1dmUgPSBjbGEuaWRlcHJldXZlIEFORCBkdi5pZGRpdmlzaW9uID0gY2xhLmlkZGl2aXNpb24gQU5EIGR2LmlkZXByZXV2ZSA9ID8gQU5EIGNsYS5jbHViIExJS0UgPyAiOy8vQU5EIGR2LmRhdGVfZGVidXQgPSA/IjsKCQkJCSRxdWVyeTIgPSAiU0VMRUNUIGNsYS5pZGVwcmV1dmUsY2xhLmlkZGl2aXNpb24sZHYubGliZWxsZSxjbGEudGFibGVhdSxjbGEudG91ciwgY2xhLnJhbmcsY2xhLm5vbSwgY2xhLnBvaW50cyAgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X2NsYXNzZW1lbnQgQVMgY2xhICwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2Rpdl90b3VycyBBUyBkdiBXSEVSRSBkdi5pZGVwcmV1dmUgPSBjbGEuaWRlcHJldXZlIEFORCBkdi5pZGRpdmlzaW9uID0gY2xhLmlkZGl2aXNpb24gIEFORCBkdi50YWJsZWF1ID0gY2xhLnRhYmxlYXUgQU5EIGR2LmRhdGVfZGVidXQgPSA/IEFORCBkdi5pZGVwcmV1dmUgPSA/IEFORCBjbGEuY2x1YiBMSUtFID8gIjsKCQkJCS8vJHF1ZXJ5MiA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJywgai5ub20sIGoucHJlbm9tKSBBUyBqb3VldXIsIGoubGljZW5jZSwgU1VNKHZkKSBBUyB2aWMsIGNvdW50KHZkKSBBUyBzdXIsIFNVTShwb2ludHJlcykgQVMgcHRzIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXMgQVMgc3AsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogIFdIRVJFIHNwLmxpY2VuY2UgPSBqLmxpY2VuY2UgQU5EIHNwLmRhdGVfZXZlbnQgQkVUV0VFTiA/IEFORCA/IjsKCQkJCSRwYXJtc1snaWRlcHJldXZlJ10gPSAkaWRlcHJldXZlMjsKCQkJCSRjbHViID0gIiUiLiRub21fZXF1aXBlcy4iJSI7CgkJCQkkcGFybXNbJ2NsdWInXSA9ICRjbHViOwkJCgkJCQkvLyRwYXJtc1snY2x1YiddID0gJyUnLiRub21fZXF1aXBlcy4nJSc7CgkJCQlpZihpc3NldCgkcGFyYW1zWyd0YWJsZWF1J10pICYmICRwYXJhbXNbJ3RhYmxlYXUnXSAhPSAnJykKCQkJCXsKCQkJCQkkdGFibGVhdSA9ICRwYXJhbXNbJ3RhYmxlYXUnXTsKCQkJCQkkcXVlcnkyLj0gIkFORCBjbGEudGFibGVhdSA9ID8gIjsKCQkJCQkkcGFybXNbJ3RhYmxlYXUnXSA9ICR0YWJsZWF1OwoJCQkJfQoJCQkJCgkJCQkvL2VjaG8gJHF1ZXJ5MjsKCQkJCSRyZXN1bHQyID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsJHBhcm1zKTsvL2FycmF5KCRpZGVwcmV1dmUyLCRjbHViLCRkYXRlX2RlYnV0KSk7CgkJCQkkcXVlcnkyLj0iIE9SREVSIEJZIGR2LmxpYmVsbGUsY2xhLnRvdXIgQVNDIjsKCQkJCS8vZWNobyAkcXVlcnkyOwoJCQkJJGxpZ25lczIgPSAkcmVzdWx0Mi0+UmVjb3JkQ291bnQoKTsJCgkJCQkvL2VjaG8gImxlIG5iIGRlIGxpZ25lczIgZXN0IDogIi4kbGlnbmVzMjsKCQkJCQlpZigkcmVzdWx0MiAmJiAkcmVzdWx0Mi0+UmVjb3JkQ291bnQoKT4wKQoJCQkJCXsKCQkJCQkJJHJvd2NsYXNzPSAncm93MSc7CgkJCQkJCSRyb3dhcnJheTI9IGFycmF5KCk7CgkJCQkJCSRjb21wdGV1ciA9IDA7CgkJCQkJCQoJCQkJCQkvL2VjaG8gImxlIGNvbXB0ZXVyIGVzdCA6ICIuJGNvbXB0ZXVyOwoJCQkJCQl3aGlsZSgkcm93MiA9ICRyZXN1bHQyLT5GZXRjaFJvdygpKQoJCQkJCQl7CgkJCQkJCQkvL29uIHLDqWN1cMOocmUgbGVzIHLDqXN1bHRhdHMKCQkJCQkJCSRpZGVwcmV1dmUgPSAkcm93MlsnaWRlcHJldXZlJ107CgkJCQkJCQkkaWRkaXZpc2lvbiA9ICRyb3cyWydpZGRpdmlzaW9uJ107CgkJCQkJCQkvL25vdXZlbGxlIHJlcXVldGUgcG91ciBleHRyYWlyZSBsZSBsaWJlbGzDqSBkdSB0YWJsZWF1LCBwbHVzIGFncsOpYWJsZSBldCBwbHVzIGNvbXByw6loZW5zaWJsZQoJCQkJCQkJJHF1ZXJ5MyA9ICJTRUxFQ1QgbGliZWxsZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZpc2lvbnMgV0hFUkUgaWRlcHJldXZlID0gPyBBTkQgaWRkaXZpc2lvbiA9ID8iOwoJCQkJCQkJJGRicmVzdWx0MyA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkzLCBhcnJheSgkaWRlcHJldXZlLCAkaWRkaXZpc2lvbikpOwoJCQkJCQkJJHJvdzMgPSAkZGJyZXN1bHQzLT5GZXRjaFJvdygpOwoJCQkJCQkJJGxpYmVsbGUyID0gJHJvdzNbJ2xpYmVsbGUnXTsKCQkJCQkJCSRvbmVyb3cyPSBuZXcgU3RkQ2xhc3MoKTsKCQkJCQkJCSRvbmVyb3cyLT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJCQkJCQkJJG9uZXJvdzItPmlkZXByZXV2ZSA9ICRyb3cyWydpZGVwcmV1dmUnXTsKCQkJCQkJCSRvbmVyb3cyLT5saWJlbGxlID0gJGxpYmVsbGUyOy8vJHJvdzJbJ2xpYmVsbGUnXTsKCQkJCQkJCSRvbmVyb3cyLT5pZGRpdmlzaW9uID0gJHJvdzJbJ2lkZGl2aXNpb24nXTsKCQkJCQkJCSRvbmVyb3cyLT50YWJsZWF1ID0gJHJvdzJbJ3RhYmxlYXUnXTsKCQkJCQkJCSRvbmVyb3cyLT5yYW5nPSAkcm93MlsncmFuZyddOwoJCQkJCQkJJG9uZXJvdzItPm5vbT0gJHJvdzJbJ25vbSddOwoJCQkJCQkJJG9uZXJvdzItPnRvdXI9ICRyb3cyWyd0b3VyJ107CgkJCQkJCQkvLyRvbmVyb3cyLT5wb2ludHM9ICRyb3cyWydwb2ludHMnXTsKCQkJCQkJCSRvbmVyb3cyLT5jb21wdGV1ciA9ICRjb21wdGV1cjsKCQkJCQkJCSRvbmVyb3cyLT5kZXRhaWxzID0gJHRoaXMtPkNyZWF0ZUZyb250ZW5kTGluaygkaWQsICRyZXR1cm5pZCwgJ2RldGFpbHMnLCRjb250ZW50cz0nRMOpdGFpbHMnLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvdzJbJ3RhYmxlYXUnXSkpOwoJCQkJCQkJCgkJCQkJCQkkcm93YXJyYXkyW10gID0gJG9uZXJvdzI7CQoJCQkJCQl9CQoKCQkJCQkJCgkJCQkJCSRzbWFydHktPmFzc2lnbigncHJvZHNfJy4kaSwkcm93YXJyYXkyKTsKCQkJCQkJJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2NvdW50XycuJGksIGNvdW50KCRyb3dhcnJheTIpKTsKCQkJCQkJdW5zZXQoJHJvd2FycmF5Mik7CgkJCQkJCQoKCQkJCQl9Ly9maW4gZHUgaWYgJHJlc3VsdDEKCgkJCSRyb3dhcnJheVtdICA9ICRvbmVyb3c7CgkJCQkJCQkJCQoJCX0KCQkkc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKCQkvL3Zhcl9kdW1wKCRyb3dhcnJheSk7CgkJJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Jlc3VsdHNmb3VuZHRleHQnKSk7CgkJJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKCQkKCS8vCSRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmR0ZXh0JykpOwoJLy8JJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsJCQoJCQoJfS8vZmluIGR1IGlmICRyZXN1bHQxCgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2luZGl2aWR1ZWxsZXMzLnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.individuelles_prov.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBhdXRldXIgOiBDbGF1ZGUgU0lPSEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjCiMgQ2V0dGUgcGFnZSByw6ljdXDDqHJlIGxlcyBjb21ww6l0aXRpb25zIGluZGl2aWR1ZWxsZXMgICAgICAgICAgICAgICAgICAgICAgIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKCgokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7CiRwYXJtcyA9IGFycmF5KCk7CiRyZXN1bHQ9IGFycmF5ICgpOwokbW9pc19lbl9jb3VycyA9IGRhdGUoJ20nKTsKJG1vaXNfZW5fY291cnMyID0gJG1vaXNfZW5fY291cnMgLSAxOwovL29uIMOpdGFibGl0IGxhIGxpc3RlIGRlcyBjb21ww6l0aXRpb25zIGluZGl2aWR1ZWxsZXMgZHUgY2FsZW5kcmllcgokcXVlcnkxID0gIlNFTEVDVCAqLE1PTlRIKGNhbC5kYXRlX2RlYnV0KSBBUyBtb2lzX3JlZix0Yy5pbmRpdnMgQVMgaW5kaXZzIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIgQVMgY2FsLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgQVMgdGMgV0hFUkUgY2FsLnR5cGVfY29tcGV0ID0gdGMuY29kZV9jb21wZXQiOwovL2lsIHMnYWdpdCBkZSBjb21ww6l0aXRpb25zIGluZGl2aWR1ZWxsZXMgPwovLyRxdWVyeTEuPSIgQU5EIHRjLmluZGl2cyA9IDEgIjsKCiRqb3VyID0gZGF0ZSgnaicpOwppZigkam91ciA8IDEwKQp7CgkkcXVlcnkxLj0gIiBBTkQgTU9OVEgoY2FsLmRhdGVfZGVidXQpID0gIiAuJG1vaXNfZW5fY291cnMyLiAiIjsKfQplbHNlCnsKCSRxdWVyeTEuPSAiIEFORCBNT05USChjYWwuZGF0ZV9kZWJ1dCkgPSAiIC4kbW9pc19lbl9jb3Vycy4gIiI7Cn0KCiRwYXJhbWV0cmVzID0gMDsKaWYoaXNzZXQoJHBhcmFtc1sndHlwZV9jb21wZXQnXSkgJiYgJHBhcmFtc1sndHlwZV9jb21wZXQnXSAhPScnKQp7CgkkcGFyYW1ldHJlcysrOwoJJHR5cGVfY29tcGV0ID0gJHBhcmFtc1sndHlwZV9jb21wZXQnXTsKCS8vb24gcmVnYXJkZSBzaSB1biBOwrAgZGUgam91cm7DqWUgZXN0IGVuIHBhcmFtw6h0cmUgw6lnYWxlbWVudAoJJHF1ZXJ5MS49IiBBTkQgdGMuY29kZV9jb21wZXQgPSA/IjsKCSRwYXJtc1sndHlwZV9jb21wZXQnXSA9ICR0eXBlX2NvbXBldDsKCQoJCQoJCQkKfQppZihpc3NldCgkcGFyYW1zWyd0b3VyJ10pICYmICRwYXJhbXNbJ3RvdXInXSAhPScnKQp7CgkkcGFyYW1ldHJlcysrOwoJJHRvdXIgPSAkcGFyYW1zWyd0b3VyJ107CgkKCSRxdWVyeTEuPSIgQU5EIGNhbC5udW1qb3VybiA9ID8iOwoJJHBhcm1zWyd0b3VyJ10gPSAkdG91cjsKfQoKCiRxdWVyeTEuPSIgT1JERVIgQlkgY2FsLmRhdGVfZGVidXQgREVTQyI7CmlmKGNvdW50KCRwYXJhbWV0cmVzKT4wKQp7CgkkcmVzdWx0MSA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkxLCRwYXJtcyk7Cn0KZWxzZQp7CgkkcmVzdWx0MSA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkxKTsKfQovL2lsIGZhdWRyYSBham91dGVyIHFxY2ggcG91ciBkaWZmw6lyZW5jaWVyIGxlcyBzYWlzb25zCi8vaWwgZmF1ZHJhIGF1c3NpIGNvbnN0cnVpcmUgZHluYW1pcXVlbWVudCBsZXMgdGFibGVhdSBkZSBsaWNlbmNlcyBzb3VzIGZvcm1lIGQnYXJyYXkKLyoKJGFycmF5X0kgPSBwaW5nX2FkbWluX29wczo6YXJyYXlfY29kZV9jb21wZXQoJHR5cGVfY29tcGV0PSdJJyk7CiRhcnJheV9KID0gcGluZ19hZG1pbl9vcHM6OmFycmF5X2NvZGVfY29tcGV0KCR0eXBlX2NvbXBldD0nSicpOwokYXJyYXlfViA9IHBpbmdfYWRtaW5fb3BzOjphcnJheV9jb2RlX2NvbXBldCgkdHlwZV9jb21wZXQ9J1YnKTsKZWNobyAkYXJyYXlfVjsKdmFyX2R1bXAoJGFycmF5X1YpOwoqLwoKCWlmKCRyZXN1bHQxICYmICRyZXN1bHQxLT5SZWNvcmRDb3VudCgpPjApCgl7CgkJJHJvd2NsYXNzPSAncm93MSc7CgkJJHJvd2FycmF5PSBhcnJheSAoKTsKCQkKCQl3aGlsZSgkcm93MSA9ICRyZXN1bHQxLT5GZXRjaFJvdygpKQoJCXsKCQkJLy9vbiByw6ljdXDDqHJlIGxlcyByw6lzdWx0YXRzCgkJCSRkYXRlX2RlYnV0ID0gJHJvdzFbJ2RhdGVfZGVidXQnXTsKCQkJJGRhdGVfZmluID0gJHJvdzFbJ2RhdGVfZmluJ107CgkJCSRudW1qb3VybiA9ICRyb3cxWydudW1qb3VybiddOwoJCQkkbmFtZSA9ICRyb3cxWyduYW1lJ107CgkJCSRjb2RlID0gJHJvdzFbJ2NvZGVfY29tcGV0J107CgkJCSRpbmRpdnMgPSAkcm93WydpbmRpdnMnXTsJCQkKCQkJCgkJCS8vb24gaW5zdGFuY2llIGNlIHF1aSB2YSBmYWlyZSBsZXMgZW50w6p0ZXMKCQkJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7CgkJCSRvbmVyb3ctPnJvd2NsYXNzPSAkcm93Y2xhc3M7CgkJCSRvbmVyb3ctPm5hbWUgPSAkbmFtZTsKCQkJJG9uZXJvdy0+ZGF0ZV9ldmVudCA9ICRkYXRlX2RlYnV0OwoJCQkkb25lcm93LT52YWxldXIgPSAkaTsvL3Ryw6hzIGltcG9ydGFudCBwb3VyIGxlcyBib3VjbGVzCgkJCQoJCQkkYXJyYXkgPSBwaW5nX2FkbWluX29wczo6YXJyYXlfY29kZV9jb21wZXQoJHR5cGVfY29tcGV0PSRjb2RlKTsKCQkJJHF1ZXJ5MiA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJywgai5ub20sIGoucHJlbm9tKSBBUyBqb3VldXIsIGoubGljZW5jZSwgU1VNKHZpY3RvaXJlKSBBUyB2aWMsIGNvdW50KHZpY3RvaXJlKSBBUyBzdXIsIFNVTShwb2ludHJlcykgQVMgcHRzIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBBUyBzcCwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgQVMgaiAgV0hFUkUgc3AubGljZW5jZSA9IGoubGljZW5jZSBBTkQgc3AuZGF0ZV9ldmVudCBCRVRXRUVOID8gQU5EID8iOwoJCS8vCSR0YWIgPSAnYXJyYXknLidfJy4kY29kZTsKCQkvLwl2YXJfZHVtcCgkJHRhYik7CgkJCWlmKGluZGl2cyA9PTEpCgkJCXsKCQkJCQkkcXVlcnkyLj0iIEFORCBqLmxpY2VuY2UgSU4gKCAnIiAuIGltcGxvZGUoJGFycmF5LCAiJywgJyIpIC4gIicgKSI7CgkJCX0KCQkKCQkJJHF1ZXJ5Mi49IiBHUk9VUCBCWSBqb3VldXIsai5saWNlbmNlIjsKCQkJLy9lY2hvICRxdWVyeTI7CgkJCSRyZXN1bHQyID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsIGFycmF5KCRkYXRlX2RlYnV0LCAkZGF0ZV9maW4pKTsKCQkJCgkJCQlpZigkcmVzdWx0MiAmJiAkcmVzdWx0Mi0+UmVjb3JkQ291bnQoKT4wKQoJCQkJewoJCQkJCS8vJGk9MDsKCQkJCQkkcm93YXJyYXkyID0gYXJyYXkoKTsKCQkJCQkkY29tcHRldXIgPSAwOwoJCQkJCQoJCQkJCXdoaWxlKCRyb3cyID0gJHJlc3VsdDItPkZldGNoUm93KCkpCgkJCQkJewoJCQkJCQkkbGljZW5jZSA9ICRyb3cyWydsaWNlbmNlJ107CgkJCQkJCSRvbmVyb3cyID0gbmV3IFN0ZENsYXNzKCk7CgkJCQkJCSRvbmVyb3cyLT5qb3VldXIgPSAkcm93Mlsnam91ZXVyJ107CgkJCQkJCSRvbmVyb3cyLT52aWMgPSAkcm93MlsndmljJ107CgkJCQkJCSRvbmVyb3cyLT5zdXIgPSAkcm93Mlsnc3VyJ107CgkJCQkJCSRvbmVyb3cyLT5wdHMgPSAkcm93MlsncHRzJ107CgkJCQkJCS8vaWYoJGRhdGUpCgkJCQkJCSRvbmVyb3cyLT5kZXRhaWxzID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAndXNlcl9yZXN1bHRzX3Byb3YnLCAkcmV0dXJuaWQsICJEw6l0YWlscyIsYXJyYXkoJ2xpY2VuY2UnPT4kbGljZW5jZSwnZGF0ZV9kZWJ1dCc9PiRkYXRlX2RlYnV0LCAnZGF0ZV9maW4nPT4kZGF0ZV9maW4pKSA7CgkJCQkJCSRvbmVyb3cyLT5jb21wdGV1ciA9ICRjb21wdGV1cjsKCQkJCQkJLyoKCQkJCQkJLy9vbiBjb21tZW5jZSBsYSB0cm9pc2nDqG1lIHJlcXVldGUgCgkJCQkJCS8vb24gcsOpY3Vww6hyZSBsZSBkw6l0YWlsCgkJCQkJCSRxdWVyeTMgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIFdIRVJFIGxpY2VuY2UgPSA/IEFORCBkYXRlX2V2ZW50ID0gPyI7CgkJCQkJCSRkYnJlc3VsdDMgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MywgYXJyYXkoJGxpY2VuY2UsJGRhdGVfZGVidXQpKTsKCQkJCQkJCgkJCQkJCWlmKCRkYnJlc3VsdDMgJiYgJGRicmVzdWx0My0+UmVjb3JkQ291bnQoKT4wKQoJCQkJCQl7CgkJCQkJCQkvL3VuIG5vdXZlYXUgd2hpbGUgZXQgb3VpICEKCQkJCQkJCXdoaWxlKCRyb3czID0gJGRicmVzdWx0My0+RmV0Y2hSb3coKSkKCQkJCQkJCXsKCQkJCQkJCQkkb25lcm93MyA9IG5ldyBTdGRDbGFzcygpOwoJCQkJCQkJCSRvbmVyb3czLT5qb3VldXIgPSAkcm93Mlsnam91ZXVyJ107CgkJCQkJCQkJJG9uZXJvdzMtPmpvdWV1ciA9ICRyb3cyWydqb3VldXInXTsKCQkJCQkJCQkkb25lcm93My0+am91ZXVyID0gJHJvdzJbJ2pvdWV1ciddOwoJCQkJCQkJCSRvbmVyb3czLT5qb3VldXIgPSAkcm93Mlsnam91ZXVyJ107CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJKi8KCQkJCQkJCgkJCQkJJHJvd2FycmF5MltdID0gJG9uZXJvdzI7CQoJCQkJCX0vL2ZpbiBkdSBkZXV4acOobWUgd2hpbGUKCQkJCQkKCQkJCQkkc21hcnR5LT5hc3NpZ24oJ3Byb2RzXycuJGksJHJvd2FycmF5Mik7CgkJCQkJJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2NvdW50XycuJGksIGNvdW50KCRyb3dhcnJheTIpKTsKCQkJCQl1bnNldCgkcm93YXJyYXkyKTsKCQkJCQkvL3Vuc2V0KCQkdGFiKTsKCQkJCQkkaSsrOwkKCQkJCQkKCQkJCX0vL2ZpbiBkdSAkcmVzdWx0MgoJCQkJCgkJCSRyb3dhcnJheVtdICA9ICRvbmVyb3c7CgkJCSRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwoJCQkJCgkJfS8vZmluIGR1IHByZW1pZXIgd2hpbGUKCQkJCQoJCQoJfS8vZmluIGR1IGlmICRyZXN1bHQxCiRzbWFydHktPmFzc2lnbigndmFsaWRhdGlvbicsICdOb24nKTsJCiRzbWFydHktPmFzc2lnbignaW5kaXZzX2NvdXJhbnQnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnc2l0X21lbnNfcHJvdmlzb2lyZScsJHJldHVybmlkLCc+PiBjb21ww6l0aXRpb25zIGVuIGNvdXJzIGRlIHZhbGlkYXRpb24nKSk7CiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsJCQkJCi8vZmFpcmUgYXBwYXJhaXRyZSBsZXMgcG9pbnRzIHRvdGF1eCBldCBzb21tZSB2aWN0b2lyZSBlbiBiYXMgPyBDZSBzZXJhaXQgcGFzIG1hbAovKiovCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnaW5kaXZpZHVlbGxlczMudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.mass_action.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy9jZSBmaWNoaWVyIGZhaXQgZGVzIGFjdGlvbnMgZGUgbWFzc2UsIGlsIGVzdCBhcHBlbMOpIGRlcHVpcyBsJ29uZ2xldCBkZSByw6ljdXDDqXJhdGlvbiBkZXMgaW5mb3Mgc3VyIGxlcyBqb3VldXJzCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7Ci8vdmFyX2R1bXAoJHBhcmFtc1snc2VsJ10pOwokZGIgPSYgJHRoaXMtPkdldERiKCk7CmlmIChpc3NldCgkcGFyYW1zWydzdWJtaXRfbWFzc2FjdGlvbiddKSAmJiBpc3NldCgkcGFyYW1zWydhY3Rpb25kZW1hc3NlJ10pICkKICB7CiAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ3NlbCddKSAmJiBpc19hcnJheSgkcGFyYW1zWydzZWwnXSkgJiYKCWNvdW50KCRwYXJhbXNbJ3NlbCddKSA+IDAgKQogICAgICAJewogICAgICAgIAkKCQlzd2l0Y2goJHBhcmFtc1snYWN0aW9uZGVtYXNzZSddKQoJCXsKCQkJY2FzZSAidW5hYmxlIiA6CgkJCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRsaWNlbmNlICkKCSAgCQl7CgkgICAgCQkJcGluZ19hZG1pbl9vcHM6OnVuYWJsZV9wbGF5ZXIoICRsaWNlbmNlICk7CgkgIAkJfQoJCQkkdGhpcy0+U2V0TWVzc2FnZSgnSm91ZXVycyBkw6lzYWN0aXbDqXMnKTsKCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwoJCQlicmVhazsKCQoJCQljYXNlICJzaXR1YXRpb24iIDoKCQkJLy9sZXMgbGljZW5jZXMgY29sbGVjdMOpZXMgc29udCBzdXBwb3PDqWVzIMOqdHJlIGFjdGl2ZXMKCQkJLy9xdWUgZmFpdC1vbiBzaSBlbGxlcyBuZSBsZSBzb250IHBhcyBlbiByw6lhbGl0w6kgPwoJCQkvL2Jvbm5lIHF1ZXN0aW9uCgkJCS8vb24gcHJlbmQgbGVzIHZhcmlhYmxlcyBuw6ljZXNzYWlyZXMKCQkJJHNlcnZpY2UgPSBuZXcgcmV0cmlldmVfb3BzKCk7CgkJCSRtZXNzYWdlPSdSZXRyb3V2ZXogdG91dGVzIGxlcyBpbmZvcyBkYW5zIGxlIGpvdXJuYWwnOwoJCQlmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkbGljZW5jZSApCgkgIAkJewoJCgkgICAgCQkJJHJldHJpZXZlID0gJHNlcnZpY2UtPnJldHJpZXZlX3NpdF9tZW5zKCAkbGljZW5jZSApOwoJICAJCX0KCQkJLy8kbWVzc2FnZS49JzwvdWw+JzsKCQkJJHRoaXMtPlNldE1lc3NhZ2UoIiRtZXNzYWdlIik7CgkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoInNpdHVhdGlvbiIpOwoJCQlicmVhazsKCQoJCQljYXNlICJkZWxldGVfdGVhbV9yZXN1bHQiIDoKCQkJLy9sZXMgbGljZW5jZXMgY29sbGVjdMOpZXMgc29udCBzdXBwb3PDqWVzIMOqdHJlIGFjdGl2ZXMKCQkJLy9xdWUgZmFpdC1vbiBzaSBlbGxlcyBuZSBsZSBzb250IHBhcyBlbiByw6lhbGl0w6kgPwoJCQkvL2Jvbm5lIHF1ZXN0aW9uCgkJCS8vb24gcHJlbmQgbGVzIHZhcmlhYmxlcyBuw6ljZXNzYWlyZXMKCQoKCQkJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJHJlY29yZF9pZCApCgkgIAkJewoJCgkgICAgCQkJcGluZ19hZG1pbl9vcHM6OmRlbGV0ZV90ZWFtX3Jlc3VsdCggJHJlY29yZF9pZCApOwoJICAJCX0KCQkJLy8kbWVzc2FnZS49JzwvdWw+JzsKCQoJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCJwb3VsZXMiKTsKCQkJYnJlYWs7CgkKCQkJY2FzZSAiZGlzcGxheV9vbl9mcm9udGVuZCIgOgoJCgkJCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRpZCApCgkgIAkJewoJCgkgICAgCQkJcGluZ19hZG1pbl9vcHM6OmRpc3BsYXlfb25fZnJvbnRlbmQoICRpZCApOwoJICAJCX0KCQoJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCJwb3VsZXMiKTsKCQkJYnJlYWs7CgkKCQkJY2FzZSAiZG9fbm90X2Rpc3BsYXkiIDoKCQoJCQlmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkcmVjb3JkX2lkICkKCSAgCQl7CgkKCSAgICAJCQlwaW5nX2FkbWluX29wczo6ZG9fbm90X2Rpc3BsYXkoICRyZWNvcmRfaWQgKTsKCSAgCQl9CgkKCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigicG91bGVzIik7CgkJCWJyZWFrOwoJCgkJCWNhc2UgImZmdHQiIDoKCQkJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJGpvdXJuYWxpZCApCgkgIAkJewoJICAgIAkJCXBpbmdfYWRtaW5fb3BzOjpkZWxldGVfam91cm5hbCggJGpvdXJuYWxpZCApOwoJICAJCX0KCQkJYnJlYWs7CgkKCQkJY2FzZSAic3BpZCIgOgoJCQkvLyRzYWlzb25fY291cmFudGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CgkJCSRtZXNzYWdlPSdSZXRyb3V2ZXogdG91dGVzIGxlcyBpbmZvcyBkYW5zIGxlIGpvdXJuYWwnOwoJCQkkc2VydmljZSA9IG5ldyByZXRyaWV2ZV9vcHMoKTsKCQkJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJGxpY2VuY2UgKQoJICAJCXsKCSAgICAJCQkkcmV0cmlldmUgPSAkc2VydmljZS0+cmV0cmlldmVfcGFydGllc19zcGlkKCAkbGljZW5jZSApOwoJICAJCX0KCQkJJHRoaXMtPlNldE1lc3NhZ2UoIiRtZXNzYWdlIik7CgkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoInJlY3VwIik7CgkJCWJyZWFrOwoJCgkJCWNhc2UgImZmdHRfcGFydGllcyIgOgoJCQkvLyRzYWlzb25fY291cmFudGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CgkJCSRtZXNzYWdlPSdSZXRyb3V2ZXogdG91dGVzIGxlcyBpbmZvcyBkYW5zIGxlIGpvdXJuYWwnOwoJCQlmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkbGljZW5jZSApCgkgIAkJewoJICAgIAkJCXBpbmdfYWRtaW5fb3BzOjpyZXRyaWV2ZV9wYXJ0aWVzX2ZmdHQoICRsaWNlbmNlICk7CgkgIAkJfQoJCQkkdGhpcy0+U2V0TWVzc2FnZSgiJG1lc3NhZ2UiKTsKCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigicmVjdXBlcmF0aW9uIik7CgkJCWJyZWFrOwoJCgkJCWNhc2UgImNvZWZmMDUiIDoKCQkJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJHJlY29yZF9pZCkKCQkJewoJCQkJcGluZ19hZG1pbl9vcHM6OmNvZWZmX29wcyggJHJlY29yZF9pZCwgJGNvZWZmPSAnMC41MCcgKTsKCQkJfQoJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzcGlkJyk7CgkJCWJyZWFrOwoJCgkJCWNhc2UgImNvZWZmMDc1IiA6CgkJCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRyZWNvcmRfaWQpCgkJCXsKCQkJCXBpbmdfYWRtaW5fb3BzOjpjb2VmZl9vcHMoICRyZWNvcmRfaWQsICRjb2VmZj0gJzAuNzUnICk7CgkJCX0KCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignc3BpZCcpOwoJCQlicmVhazsKCQoJCQljYXNlICJjb2VmZjEiIDoKCQkJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJHJlY29yZF9pZCkKCQkJewoJCQkJcGluZ19hZG1pbl9vcHM6OmNvZWZmX29wcyggJHJlY29yZF9pZCwgJGNvZWZmPScxLjAwJyApOwoJCQl9CgkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3NwaWQnKTsKCQkJYnJlYWs7CgkKCQkJY2FzZSAiY29lZmYxMjUiIDoKCQkJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJHJlY29yZF9pZCkKCQkJewoJCQkJcGluZ19hZG1pbl9vcHM6OmNvZWZmX29wcyggJHJlY29yZF9pZCwgJGNvZWZmPScxLjI1Jyk7CgkJCX0KCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignc3BpZCcpOwoJCQlicmVhazsKCQoJCQljYXNlICJjb2VmZjE1IiA6CgkJCSRtZXNzYWdlPSdSZXRyb3V2ZXogdG91dGVzIGxlcyBpbmZvcyBkYW5zIGxlIGpvdXJuYWwnOwoJCQlmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkcmVjb3JkX2lkKQoJCQl7CgkJCQlwaW5nX2FkbWluX29wczo6Y29lZmZfb3BzKCAkcmVjb3JkX2lkLCAkY29lZmY9ICcxLjUwJyApOwoJCQl9CgkJCSR0aGlzLT5TZXRNZXNzYWdlKCIkbWVzc2FnZSIpOwoJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzcGlkJyk7CgkJCWJyZWFrOwoJCgkJCWNhc2UgInN1cHBfc3BpZCIgOgoJCQlmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkcmVjb3JkX2lkKQoJCQl7CgkJCQlwaW5nX2FkbWluX29wczo6c3VwcF9zcGlkKCAkcmVjb3JkX2lkICk7CgkJCX0KCQkJJG1lc3NhZ2UgPSAnUGFydGllcyhzKSBTUElEIHN1cHByaW3DqWUocyknOwoJCQkkdGhpcy0+U2V0TWVzc2FnZSgiJG1lc3NhZ2UiKTsKCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignc3BpZCcpOwoJCQlicmVhazsKCgkKCQkJCgkJCWNhc2UgInN1cHBfZGl2IiA6CgkJCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRyZWNvcmRfaWQgKQoJICAJCXsKCSAgICAJCQkkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2RpdmlzaW9ucyBXSEVSRSBpZGRpdmlzaW9uID0gPyI7CgkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmVjb3JkX2lkKSk7CgkJCQkvL3Byw6l2b2lyIHVuZSBzdXBwcmVzc2lvbiBlbiBjYXNjYWRlCgkJCQkkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2Rpdl90b3VycyBXSEVSRSBpZGRpdmlzaW9uID0gPyI7CgkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmVjb3JkX2lkKSk7CgkJCQkvL29uIGNvbnRpbnVlIHBhciBsZXMgcGFydGllcwoJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfcGFydGllcyBXSEVSRSBpZGRpdmlzaW9uID0gPyI7CgkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmVjb3JkX2lkKSk7CgkJCQkvL2VuZmluIGxlcyBjbGFzc2VtZW50cwoJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfY2xhc3NlbWVudCBXSEVSRSBpZGRpdmlzaW9uID0gPyI7CgkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmVjb3JkX2lkKSk7CgkgIAkJfQoJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4yJywgJHJldHVybmlkLCRjb250ZW50cz0nUmV0b3VyJyxhcnJheSgnYWN0aXZlX3RhYic9Pid0b3VycycpKTsKCQkJYnJlYWs7CgkJCQoJCQljYXNlICJzdXBwX2Rpdl90b3VycyIgOgoJCQlmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkcmVjb3JkX2lkICkKCSAgCQl7CgkgICAgCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfdG91cnMgV0hFUkUgaWQgPSA/IjsKCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCSAgCQl9CgkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbjInLCAkcmV0dXJuaWQsJGNvbnRlbnRzPSdSZXRvdXInLGFycmF5KCdhY3RpdmVfdGFiJz0+J3RvdXJzJykpOwoJCQlicmVhazsKCQkJCgkJCWNhc2UgInN1cHBfZGl2X3BhcnRpZXMiIDoKCQkJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJHJlY29yZF9pZCApCgkgIAkJewoJICAgIAkJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X3BhcnRpZXMgV0hFUkUgaWQgPSA/IjsKCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCSAgCQl9CgkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4yJywkcmV0dXJuaWQsIGFycmF5KCJhY3RpdmVfdGFiIj0+InBhcnRpZSIpKTsKCQkJYnJlYWs7CgkJCQoJCQljYXNlICJkYXRlciIgOgoJCQkJJGlkX3NlbCA9IGltcGxvZGUoIi0iLCRwYXJhbXNbJ3NlbCddKTsKCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RhdGVyJywkcmV0dXJuaWQsIGFycmF5KCJzZWwiPT4kaWRfc2VsKSk7CgkJCQoJCQlicmVhazsKCQkJY2FzZSAiZGF0ZXIyIiA6CgkJCQkkaWRfc2VsID0gaW1wbG9kZSgiLSIsJHBhcmFtc1snc2VsJ10pOwoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGF0ZXInLCRyZXR1cm5pZCwgYXJyYXkoInNlbCI9PiRpZF9zZWwsIm1ldGhvZGUiPT4idGFibGVhdSIpKTsKCQkJCgkJCWJyZWFrOwoJCQljYXNlICJyZXRyaWV2ZV9kaXZfdG91cnMiIDogCgkJCQkKCQkJCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICR2YWxldXIgKQoJCQkJewoJCQkJCQoJCQkJCSRxdWVyeSA9ICJTRUxFQ1QgaWRlcHJldXZlLCBpZGRpdmlzaW9uLGlkb3JnYSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZpc2lvbnMgV0hFUkUgaWRkaXZpc2lvbj0gPyI7CgkJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHZhbGV1cikpOwoJCQkJCSRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkJCQkJJGlkZXByZXV2ZSA9ICRyb3dbJ2lkZXByZXV2ZSddOwoJCQkJCSRpZG9yZ2EgPSAkcm93WydpZG9yZ2EnXTsKCQkJCQkkc2VydmljZSA9IG5ldyByZXRyaWV2ZV9vcHMoKTsKCQkJCQkkcmV0cmlldmVfb3BzID0gJHNlcnZpY2UtPnJldHJpZXZlX2Rpdl90b3VycygkaWRlcHJldXZlLCAkdmFsZXVyKTsKCQkJCQkKCQkJCX0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdhZG1pbl9kaXZpc2lvbnNfdGFiJywkcmV0dXJuaWQsIGFycmF5KCJhY3RpdmVfdGFiIj0+ImluZGl2cyIsImlkZXByZXV2ZSI9PiRpZGVwcmV1dmUsImlkb3JnYSI9PiRpZG9yZ2EpKTsKCQkJYnJlYWs7CgkJCQkKCQkJY2FzZSAicmV0cmlldmVfZGl2X3BhcnRpZXMiIDogCgoJCQlmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkdmFsZXVyICkKCQkJewoKCQkJCSRxdWVyeSA9ICJTRUxFQ1QgaWRlcHJldXZlLCBpZGRpdmlzaW9uLHRhYmxlYXUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X3RvdXJzIFdIRVJFIGlkID0gPyI7CgkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdmFsZXVyKSk7CgkJCQkkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJCQkJJGlkZXByZXV2ZSA9ICRyb3dbJ2lkZXByZXV2ZSddOwoJCQkJJGlkZGl2aXNpb24gPSAkcm93WydpZGRpdmlzaW9uJ107CgkJCQkkdGFibGVhdSA9ICRyb3dbJ3RhYmxlYXUnXTsKCQkJCSRzZXJ2aWNlID0gbmV3IHJldHJpZXZlX29wcygpOwoJCQkJJHJldHJpZXZlX29wcyA9ICRzZXJ2aWNlLT5yZXRyaWV2ZV9kaXZfcGFydGllcygkaWRlcHJldXZlLCAkaWRkaXZpc2lvbiwkdGFibGVhdSwkdmFsZXVyKTsKCgkJCX0KCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbjInLCRyZXR1cm5pZCwgYXJyYXkoImFjdGl2ZV90YWIiPT4ndG91cnMnKSk7CgkJCWJyZWFrOwoJCQkKCQkJY2FzZSAicmV0cmlldmVfZGl2X2NsYXNzZW1lbnQiIDogCgoJCQlmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkdmFsZXVyICkKCQkJewoKCgkJCQkkc2VydmljZSA9IG5ldyByZXRyaWV2ZV9vcHMoKTsKCQkJCSRyZXRyaWV2ZV9vcHMgPSAkc2VydmljZS0+cmV0cmlldmVfZGl2X2NsYXNzZW1lbnQoJHZhbGV1cik7CgoJCQl9CgkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCwgYXJyYXkoImFjdGl2ZV90YWIiPT4naW5kaXZzJykpOwoJCQlicmVhazsKCQkJCgkJCWNhc2UgInN1cHBfZmZ0dCIgOiAKCQkJJGkgPSAwOwoJCQlmb3JlYWNoKCRwYXJhbXNbJ3NlbCddIGFzICRyZWNvcmRfaWQpCgkJCXsKCQkJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyBXSEVSRSBpZCA9ID8iOwoJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJlY29yZF9pZCkpOwoJCQkJJGkrKzsKCQkJfQoJCQkkbWVzc2FnZSA9ICRpLiIgbWF0Y2hlcyBzdXBwcmltw6lzIjsKCQkJJHRoaXMtPlNldE1lc3NhZ2UoJG1lc3NhZ2UpOwoJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdmZnR0Jyk7CgkKICAgICAgCQl9Ly9maW4gZHUgc3dpdGNoCiAgCX0KCWVsc2UKCXsKCQkkdGhpcy0+U2V0TWVzc2FnZSgnUEIgZGUgc8OpbGVjdGlvbiBkZSBtYXNzZSAhIScpOwoJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3JlY3VwZXJhdGlvbicpOwoJfQp9Ci8qKi8KIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.missing_sit_mens.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKZ2xvYmFsICR0aGVtZU9iamVjdDsKCiRzbWFydHktPmFzc2lnbignaWQnLCAkdGhpcy0+TGFuZygnaWQnKSk7CiRzbWFydHktPmFzc2lnbigndXNlcm5hbWUnLCAnSm91ZXVyJyk7CiRzbWFydHktPmFzc2lnbigncG9pbnRzJywgJ1BvaW50cycpOwoKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKJG1vaXNfY291cmFudCA9IGRhdGUoJ24nKTsKJGxhc3RfbW9udGggPSAkbW9pc19jb3VyYW50IC0xOwovLyRtb2lzX2NvdXJhbnQgPSA1OwokYW5uZWVfY291cmFudGUgPSBkYXRlKCdZJyk7CiRyZXN1bHQ9IGFycmF5ICgpOwovL29uIGZhaXQgdW5lIHByZW1pw6hyZSByZXF1ZXRlIHBvdXIgY29ubmFpdHJlIGNldXggZG9udCBsYSBzaXR1YXRpb24gbWVuc3VlbGxlIGVzdCBkw7ttZW50IGNvbXBsZXTDqWUKJHF1ZXJ5MSA9ICJTRUxFQ1Qgai5saWNlbmNlLCBDT05DQVRfV1MoJyAnLGoubm9tLCBqLnByZW5vbSkgQVMgam91ZXVyIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgQVMgaiBMRUZUIEpPSU4gICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyBBUyBzdCAgT04gc3QubGljZW5jZSA9IGoubGljZW5jZSBBTkQgc3QubW9pcyA9ID8gIEFORCBzdC5hbm5lZSA9ID8gQU5EIGFjdGlmID0gJzEnIjsKJGRicmVzdWx0MSA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkxLGFycmF5KCRtb2lzX2NvdXJhbnQsJGFubmVlX2NvdXJhbnRlKSk7CmVjaG8gJHF1ZXJ5MTsKCi8vb24gcGV1dCBwcsOpcGFyZXIgbGEgZGV1eGnDqG1lIHJlcXVldGUgYXZlYyBsZSBOT1QgSU4KJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG1vaXNfY291cmFudCwkYW5uZWVfY291cmFudGUpKTsKJHJvd2NsYXNzPSAncm93MSc7CiRyb3dhcnJheT0gYXJyYXkgKCk7CmlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQogICAgICB7CgkKCSRsaWNlbmNlID0gJHJvd1snbGljZW5jZSddOwoJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zICI7Cgkkb25lcm93PSBuZXcgU3RkQ2xhc3MoKTsKCSRvbmVyb3ctPnJvd2NsYXNzPSAkcm93Y2xhc3M7Cgkkb25lcm93LT5pZD0gJHJvd1snaWQnXTsKCS8vJG9uZXJvdy0+bW9pcz0gJHJvd1snbW9pcyddOwoJLy8kb25lcm93LT5hbm5lZT0gJHJvd1snYW5uZWUnXTsKCS8vJG9uZXJvdy0+cG9pbnRzPSAkcm93Wydwb2ludHMnXTsKCS8vJG9uZXJvdy0+cHJvZ21vaXM9ICRyb3dbJ3Byb2dtb2lzJ107CgkvLyRvbmVyb3ctPmVxdWlwZT0gJHRoaXMtPmNyZWF0ZUxpbmsoJGlkLCAndmlld3N0ZWFtcmVzdWx0JywgJHJldHVybmlkLCAkcm93WydlcXVpcGUnXSxhcnJheSgnZXF1aXBlJz0+JHJvd1snZXF1aXBlJ10pLCRyb3cpIDsKCSRvbmVyb3ctPmpvdWV1cj0gJHJvd1snam91ZXVyJ107CgkKCQoJLyoJCgkkb25lcm93LT5jb21tdW5lPSAkcm93Wydjb21tdW5lJ107Cgkkb25lcm93LT5lbWFpbD0gJHJvd1snZW1haWwnXTsKCSRvbmVyb3ctPnRyYW5jaGU9ICRyb3dbJ3RyYW5jaGUnXTsKCSRvbmVyb3ctPmFjdGl2ZT0gKCRyb3dbJ2FjdGl2ZSddID09IDEpID8gJHRoaXMtPkxhbmcoJ3llcycpIDogJyc7CgkqLwoJJG9uZXJvdy0+aWQ9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRfam91ZXVycycsICRyZXR1cm5pZCwgJHJvd1snaWQnXSxhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSksICRyb3cpOwoJJG9uZXJvdy0+ZWRpdGxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRfam91ZXVyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgJHRoaXMtPkxhbmcoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSk7Cgkkb25lcm93LT5zaXRtZW5zbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfc2l0X21lbnMnLCAkcmV0dXJuaWQsICdTaXR1YXRpb24gbWVuc3VlbGxlJywgYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pKTsKCSRvbmVyb3ctPmdldHBhcnRpZXNsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9wYXJ0aWVzJywgJHJldHVybmlkLCAnUGFydGllcyBkaXNwdXTDqWVzJywgYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pKTsKCSRvbmVyb3ctPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZV9qb3VldXInLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSksICR0aGlzLT5MYW5nKCdkZWxldGVfcmVzdWx0X2NvbmZpcm0nKSk7CgkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIH0KICB9CiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKJHNtYXJ0eS0+YXNzaWduKCdyZXRyaWV2ZWFsbHNpdG1lbnMnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwncmV0cmlldmVfYWxsX3NpdF9tZW5zJywgJHJldHVybmlkLCAnUsOpY3Vww6lyZXIgdG91dGVzIGxlcyBzaXR1YXRpb25zIG1lbnN1ZWxsZXMnKSk7CiRzbWFydHktPmFzc2lnbignY3JlYXRlbGluaycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2NyZWF0ZV9uZXdfdXNlcjMnLCAkcmV0dXJuaWQsCgkJCQkgICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsICR0aGlzLT5MYW5nKCdhZGRuZXdzaGVldCcpLCAnJywgJycsICdzeXN0ZW1pY29uJykpLgoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2NyZWF0ZV9uZXdfdXNlcjMnLCAkcmV0dXJuaWQsIAoJCQkJICAkdGhpcy0+TGFuZygnYWRkbmV3c2hlZXQnKSwgCgkJCQkgIGFycmF5KCkpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWxsc2l0bWVucy50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.par-equipes.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKICAgaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3ByZWZzLnBocCcpOwokbm9tX2VxdWlwZXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbm9tX2VxdWlwZXMnKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwokcmVzdWx0PSBhcnJheSgpOwokcGFybXMgPSBhcnJheSgpOwokcm93YXJyYXkgPSBhcnJheSgpOwovLyRyb3dhcnJheTEgPSBhcnJheSgpOwovL29uIGluc3RhbmNpZSB1bmUgdmFsZXVyIHBvdXIgc2F2b2lyIHNpIGRlcyBwYXJhbWV0cmVzIHNvbnQgaW50cm9kdWl0cwokcGFyYSA9IDA7CiRpPTA7CiRxdWVyeSA9ICJTRUxFQ1QgKiwgcmVuLmlkIEFTIHJlbl9pZCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBBUyByZW4sICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jYWxlbmRyaWVyIEFTIGNhbCAgV0hFUkUgcmVuLmRhdGVfZXZlbnQgPSBjYWwuZGF0ZV9kZWJ1dCAiOy8vQU5EIGNhbC5kYXRlX2RlYnV0PD1OT1coKSI7Ly9HUk9VUCBCWSBkYXRlX2RlYnV0IE9SREVSIEJZIGRhdGVfZGVidXQgREVTQyI7CgppZiAoaXNzZXQoJHBhcmFtc1snZGF0ZV9kZWJ1dCddKSAmJiAkcGFyYW1zWydkYXRlX2RlYnV0J10gIT0gJycpCnsKCSRwYXJhKys7CgkvL29uIHJlZ2FyZGUgc2kgbGEgZGF0ZSBkZSBmaW4gZXN0IGF1c3NpIHNww6ljaWZpw6llCglpZihpc3NldCgkcGFyYW1zWydkYXRlX2ZpbiddKSAmJiAkcGFyYW1zWydkYXRlX2ZpbiddICE9ICcnKQoJewoJCSRkYXRlX2ZpbiA9ICRwYXJhbXNbJ2RhdGVfZmluJ107CgkJLy9vbiBpbml0aWFsaXNlIHVuZSB2YXJpYWJsZSBwb3VyIHNlIHNvdXZlbmlyIGRlIGNldHRlIGNvbmRpdGlvbgoJCSRmaWxsID0gMTsKCQkkcGFybXNbJ2RhdGVfZmluJ10gPSAkZGF0ZV9maW47CgoJfQoJCgkkZGF0ZV9kZWJ1dCA9ICRwYXJhbXNbJ2RhdGVfZGVidXQnXTsKCSRwYXJtc1snZGF0ZV9kZWJ1dCddID0gJGRhdGVfZGVidXQ7CgkkcXVlcnkuPSAiIEFORCBjYWwuZGF0ZV9kZWJ1dCA9ID8iOwoJJHBhcm1zWydkYXRlX2RlYnV0J10gPSAkZGF0ZV9kZWJ1dDsKCQoJaWYoJGZpbGwgPT0gMSkKCXsKCQkkcXVlcnkuPSAiIEFORCBjYWwuZGF0ZV9maW4gPSA/IjsKCX0KCgkKCQoJCQp9CmlmKGlzc2V0KCRwYXJhbXNbJ2lkZXByZXV2ZSddKSAmJiAkcGFyYW1zWydpZGVwcmV1dmUnXSAhPSAnJykKewoJJHBhcmErKzsKCSRpZGVwcmV1dmUgPSAkcGFyYW1zWydpZGVwcmV1dmUnXTsKCSRxdWVyeS49IiBBTkQgY2FsLmlkZXByZXV2ZSA9ID8iOwoJJHBhcm1zWydpZGVwcmV1dmUnXSA9ICRpZGVwcmV1dmU7Cn0KaWYoaXNzZXQoJHBhcmFtc1snc2Fpc29uJ10pICYmICRwYXJhbXNbJ3NhaXNvbiddICE9ICcnKQp7CgkkcGFyYSsrOwoJJHNhaXNvbiA9ICRwYXJhbXNbJ3NhaXNvbiddOwoJJHF1ZXJ5Lj0gIiBBTkQgY2FsLnNhaXNvbiA9ID8iOwoJJHBhcm1zWydzYWlzb24nXSAgPSAkc2Fpc29uOwp9CmlmKCRwYXJhPjApCnsKCSRxdWVyeS49IiBHUk9VUCBCWSByZW4uZGF0ZV9ldmVudCBPUkRFUiBCWSByZW4uZGF0ZV9ldmVudCBERVNDIjsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksJHBhcm1zKTsKfQplbHNlCnsKCSRxdWVyeS49ICIgQU5EIGNhbC5kYXRlX2RlYnV0PD1OT1coKSI7CgkkcXVlcnkuPSIgR1JPVVAgQlkgcmVuLmRhdGVfZXZlbnQgT1JERVIgQlkgcmVuLmRhdGVfZXZlbnQgREVTQyI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKfQovKgokcXVlcnkuPSIgQU5EIHR5cGVfY29tcGV0ID0gPyI7CiRwYXJtc1sndHlwZV9jb21wZXQnXSAgPSAnKyc7CiovCgoKCi8vJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgoJaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKT4wKQoJewoJCSRwYXJtczIgPSBhcnJheSgpOwoJCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkkaSsrOwoJCQkkZGF0ZV9kZWJ1dCA9ICRyb3dbJ2RhdGVfZXZlbnQnXTsKCQkJLy9lY2hvICJsYSBkYXRlIGTDqWJ1dCBlc3QgOiIuJGRhdGVfZGVidXQ7CgkJCSRkYXRlYXJyID0gZXhwbG9kZSgnLScsICRkYXRlX2RlYnV0KTsKCQkJJGRhdGVmciA9ICRkYXRlYXJyWzJdIC4gJy0nIC4gJGRhdGVhcnJbMV0gLiAnLScgLiAkZGF0ZWFyclswXTsKCQkJJHJlbl9pZCA9ICRyb3dbJ3Jlbl9pZCddOwoJCQkkb25lcm93ID0gbmV3IFN0ZENsYXNzKCk7CgkJCSRvbmVyb3ctPnJvd2NsYXNzID0gJHJvd2NsYXNzOwoJCQkkb25lcm93LT5kYXRlX2V2ZW50ID0gJGRhdGVmcjsKCQkJJG9uZXJvdy0+dmFsZXVyID0gJGk7CgkJCQoJCQkKCQkJJHF1ZXJ5MiA9ICJTRUxFQ1QgcmVuLmlkIEFTIHJlbl9pZCwgcmVuLmVxdWEscmVuLnVwbG9hZGVkLCByZW4uZXF1YiwgZXEuaWQgQVMgZXFfaWQsIGVxLmxpYmVxdWlwZSxlcS5mcmllbmRseW5hbWUsIHJlbi5zY29yZWEsIHJlbi5zY29yZWIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG91bGVzX3JlbmNvbnRyZXMgQVMgcmVuLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcyBBUyBlcSBXSEVSRSBlcS5pZHBvdWxlID0gcmVuLmlkcG91bGUgQU5EIChlcS5saWJlcXVpcGUgPSByZW4uZXF1YSBPUiBlcS5saWJlcXVpcGUgPSByZW4uZXF1YikgQU5EIHJlbi5zYWlzb24gPSBlcS5zYWlzb24gIEFORCByZW4uZGF0ZV9ldmVudCA9ID8gQU5EIChyZW4uc2NvcmVhICE9MCBPUiBzY29yZWIgIT0wKSI7CgkJCSRwYXJtczJbJ2RhdGVfZXZlbnQnXSA9ICRkYXRlX2RlYnV0OwoJCQkKCQkJaWYoaXNzZXQoJHBhcmFtc1sndHlwZV9jb21wZXQnXSkgJiYgJHBhcmFtc1sndHlwZV9jb21wZXQnXSkKCQkJewoJCQkJCSRxdWVyeTIuPSIgQU5EIGVxLnR5cGVfY29tcGV0ID0gPyI7CgkJCQkJJHBhcm1zMlsndHlwZV9jb21wZXQnXSA9ICRwYXJhbXNbJ3R5cGVfY29tcGV0J107CgkJCX0KCQkJaWYoaXNzZXQoJHBhcmFtc1snaWRlcHJldXZlJ10pICYmICRwYXJhbXNbJ2lkZXByZXV2ZSddKQoJCQl7CgkJCQkJJHF1ZXJ5Mi49IiBBTkQgZXEuaWRlcHJldXZlID0gPyI7CgkJCQkJJHBhcm1zMlsnaWRlcHJldXZlJ10gPSAkcGFyYW1zWydpZGVwcmV1dmUnXTsKCQkJfQoJCQkKCQkJLy9tb24gY2x1YiB1bmlxdWVtZW50ID8KCQkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2FmZmljaGVfY2x1Yl91bmlxdWVtZW50JykgPT0gJ091aScpCgkJCXsKCQkJCSRxdWVyeTIuPSIgQU5EIChyZW4uY2x1YiA9ICcxJyBPUiByZW4uYWZmaWNoZSA9ICcxJykiOwoJCQl9CgkJLy8JZWNobyAkcXVlcnkyOwoJCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCAkcGFybXMyKTsKCQkJJHJvd2FycmF5MiA9IGFycmF5KCk7CgkJCS8vdmFyX2R1bXAoJHBhcm1zMik7CgkJLy8JZWNobyAiZXNzYWkgISI7CQoJCQlpZigkZGJyZXN1bHRhdCAmJiAkZGJyZXN1bHRhdC0+UmVjb3JkQ291bnQoKT4wKQoJCQl7CgkJCQkKCQkJCSRyb3djbGFzcz0gJ3JvdzEnOwoJCQkJCgkJCQl3aGlsZSgkcm93MiA9ICRkYnJlc3VsdGF0LT5GZXRjaFJvdygpKQoJCQkJewoJCQkJCQoJCQkJCgkJCQkJJGVxdWEgPSAkcm93MlsnZXF1YSddOwoJCQkJCSRlcXViID0gJHJvdzJbJ2VxdWInXTsKCQkJCQkkc2NvcmVhID0gJHJvdzJbJ3Njb3JlYSddOwoJCQkJCSRzY29yZWIgPSAkcm93Mlsnc2NvcmViJ107CgkJCQkJJGVxX2lkID0gJHJvdzJbJ2VxX2lkJ107CgkJCQkJJHVwbG9hZGVkID0gJHJvdzJbJ3VwbG9hZGVkJ107CgkJCQkJJGxpYmVxdWlwZSA9ICRyb3cyWydsaWJlcXVpcGUnXTsKCQkJCQkkZnJpZW5kbHluYW1lID0gJHJvdzJbJ2ZyaWVuZGx5bmFtZSddOwoJCQkJCSRvbmVyb3cyID0gbmV3IFN0ZENsYXNzKCk7CgkJCQkJJG9uZXJvdzItPnJvd2NsYXNzID0kcm93Y2xhc3M7CgkJCQkJJG9uZXJvdzItPnJlbl9pZD0gJHJvdzJbJ3Jlbl9pZCddOwoJCQkJCSRvbmVyb3cyLT5kYXRlX2V2ZW50PSAkcm93MlsnZGF0ZV9ldmVudCddOwoJCQkJCSRvbmVyb3cyLT5lcXViID0gJHJvdzJbJ2VxdWInXTsKCQkJCQkkb25lcm93Mi0+ZXF1YSA9ICRyb3cyWydlcXVhJ107CgkJCQkJJG9uZXJvdzItPmZyaWVuZGx5bmFtZSA9ICRyb3cyWydmcmllbmRseW5hbWUnXTsKCQkJCQkkb25lcm93Mi0+bGliZXF1aXBlID0gJGxpYmVxdWlwZTsKCQkJCQkkb25lcm93Mi0+dXBsb2FkZWQgPSAkdXBsb2FkZWQ7CgkJCQkJLy9lY2hvICJlcXVpcGUgQiBlc3QgOiAiLiRlcXViOwoKCQkJCQkvLyRvbmVyb3ctPmVxdWlwZT0gJHJvd1snZXF1aXBlJ107CgkJCQkJJG9uZXJvdzItPmxpYmVsbGU9ICAkcm93MlsnbGliZWxsZSddIDsKCQkJCQkKCQkJCQlpZihpc3NldCgkZnJpZW5kbHluYW1lKSAmJiAkZnJpZW5kbHluYW1lICE9JycpCgkJCQkJewoJCQkJCQlpZiAocnRyaW0oJGxpYmVxdWlwZSkgPT0gJGVxdWEpCgkJCQkJCXsKCQkJCQkJCS8vJG9uZXJvdzItPmVxdWE9ICRyb3cyWydmcmllbmRseW5hbWUnXTsKCQkJCQkJCSRvbmVyb3cyLT5lcXVhPSAkdGhpcy0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwkcmV0dXJuaWQsJ2VxdWlwZScsJGNvbnRlbnRzPSRyb3cyWydmcmllbmRseW5hbWUnXSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRlcV9pZCkpOwoJCQkJCQl9CgoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSRvbmVyb3cyLT5lcXVhPSAkcm93MlsnZXF1YSddOwoJCQkJCQl9CgoJCQkJCX0KCQkJCQllbHNlewoJCQkJCQkkb25lcm93Mi0+ZXF1YT0gJHJvdzJbJ2VxdWEnXTsKCQkJCQl9CgkJCQkJCgkJCQkJLy8kb25lcm93Mi0+ZXF1YT0gJHJvdzJbJ2VxdWEnXTsKCQkJCQkkb25lcm93Mi0+c2NvcmVhPSAkcm93Mlsnc2NvcmVhJ107CgkJCQkJJG9uZXJvdzItPnNjb3JlYj0gJHJvdzJbJ3Njb3JlYiddOwoJCQkJCQoJCQkJCWlmKGlzc2V0KCRmcmllbmRseW5hbWUpICYmICRmcmllbmRseW5hbWUgIT0nJykKCQkJCQl7CgkJCQkJCWlmIChydHJpbSgkbGliZXF1aXBlKSA9PSAkZXF1YikKCQkJCQkJewoJCQkJCQkJLy8kb25lcm93Mi0+ZXF1YT0gJHJvdzJbJ2ZyaWVuZGx5bmFtZSddOwoJCQkJCQkJJG9uZXJvdzItPmVxdWI9ICR0aGlzLT5DcmVhdGVGcm9udGVuZExpbmsoJGlkLCRyZXR1cm5pZCwnZXF1aXBlJywkY29udGVudHM9JHJvdzJbJ2ZyaWVuZGx5bmFtZSddLCBhcnJheSgncmVjb3JkX2lkJz0+JGVxX2lkKSk7CgkJCQkJCX0KCgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJG9uZXJvdzItPmVxdWI9ICRyb3cyWydlcXViJ107CgkJCQkJCX0KCgkJCQkJfQoJCQkJCWVsc2V7IAoJCQkJCQkkb25lcm93Mi0+ZXF1Yj0gJHJvdzJbJ2VxdWInXTsKCQkJCQl9CgkJCQkJCgkJCQkJLy8kb25lcm93Mi0+ZXF1Yj0gJHJvdzJbJ2VxdWInXTsKCQkJCQkvLyRvbmVyb3cyLT5kZXRhaWxzPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9kZXRhaWxzX3JlbmNvbnRyZXMnLCAkcmV0dXJuaWQsICdEw6l0YWlscycsIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93MlsnaWQnXSwgJ3RlbXBsYXRlJz0+JzEnKSk7CgkJCQkJJG9uZXJvdzItPmRldGFpbHM9ICR0aGlzLT5DcmVhdGVGcm9udGVuZExpbmsoJGlkLCAkcmV0dXJuaWQsJ2RldGFpbHMnLCAkY29udGVudHM9J0TDqXRhaWxzJywgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3cyWydyZW5faWQnXSwgJ3RlbXBsYXRlJz0+JzEnKSk7CgkJCQkJJHJvd2FycmF5MltdID0gJG9uZXJvdzI7CgkJCQkJCgkJCQkJCgkJCQl9Ly9maW4gZHUgZGV1eGnDqG1lIHdoaWxlCgkJCQkkc21hcnR5LT5hc3NpZ24oJ3Byb2RzXycuJGksJHJvd2FycmF5Mik7CgkJCQl1bnNldCgkcm93YXJyYXkyKTsKCQkJCXVuc2V0KCRpZGVwcmV1dmUyKTsKCQkJCQoJCQkJJHJvd2FycmF5W10gID0gJG9uZXJvdzsKCQkJCSRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwoJCQl9Ly8gZmluIGR1IGlmICRkYnJlc3VsdGF0CgkJCQoJCQkKCQl9Ly9maW4gZHUgcHJlbWllciB3aGlsZQoJCQoJfS8vZmluIGR1IHByZW1pZXIgaWYgZGJyZXN1bHQKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZGV0YWlsc19yZW5jb250cmUudHBsJyk7CgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.push_player.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykpIGV4aXQ7Ci8vbWV0dHJlIGxlcyBwZXJtcwojCiMgQ2V0dGUgcGFnZSB2YSBwb3Vzc2VyIHVuIGpvdWV1ciB2ZXJzIGxhIHRhYmxlIHJlY3VwCi8vbWV0dHJlIGxlcyBib25uZXMgcGVybWlzc2lvbnMKaWYoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgVXNlJykpCnsKCSR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKfQokbGljZW5jZSA9ICcnOwppZighaXNzZXQoJHBhcmFtc1snbGljZW5jZSddKSB8fCAkcGFyYW1zWydsaWNlbmNlJ10gPT0nJykKewoJJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ21pc3NpbmdfcGFyYW1ldGVycycpKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKfQplbHNlCnsKCSRsaWNlbmNlID0gJHBhcmFtc1snbGljZW5jZSddOwp9CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7Ci8vb24gdsOpcmlmaWUgbGEgcHLDqXNlbmNlIG91IG5vbiBkdSBqb3VldXIKJHF1ZXJ5ID0gIlNFTEVDVCBsaWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgV0hFUkUgbGljZW5jZSA9ID8gQU5EIHNhaXNvbiA9ID8iOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSwgJHNhaXNvbikpOwokY291bnQgPSAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk7CmlmKCRjb3VudD09MCkvL29uIGVzdCBvawp7CgkvL29uIGZhaXQgbGEgdG90YWxlIGVuIHLDqWN1cMOpcmFudCB0b3V0ZXMgbGVzIGRvbm7DqWVzID8KCS8vb8O5IG9uIGxhaXNzZSBsJ2FkbWluIGxlIGZhaXJlID8KCS8vcG91ciBsJ2hldXJlIG9uIGZhaXQgbGUgbWluaQoJJHF1ZXJ5MiA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyAoaWQsIHNhaXNvbiwgZGF0ZW1haiwgbGljZW5jZSwgc2l0X21lbnMsZmZ0dCxtYWpfZmZ0dCxzcGlkLG1hal9zcGlkLG1hal90b3RhbCxzcGlkX3RvdGFsKSBWQUxVRVMoJycsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIjsKCSRkYnJlc3VsdDIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJHNhaXNvbiwkbm93LCRsaWNlbmNlLCdKYW52aWVyIDIwMDAnLDAsMCwwLDAsMCwwKSk7CgkKCS8vb24gdGVzdGUgbGEgcmVxdWV0ZQoJaWYoISRkYnJlc3VsdDIpCgl7CgkJLy91bmUgZXJyZXVyID8gbGFxdWVsbGUgPwoJCSRtZXNzYWdlID0gJGRiLT5FcnJvck1zZygpOwoJCSRzdGF0dXMgPSAnUGIgSm91ZXVyIHBvdXNzw6knOwoJCSRhY3Rpb24gPSAncHVzaF9wbGF5ZXInOwoJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywkbWVzc2FnZSwkYWN0aW9uKTsKCQkkdGhpcy0+U2V0TWVzc2FnZSgiJG1lc3NhZ2UiKTsKCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZWN1cCcpOwoJCQoJfQoJZWxzZSAvL3RvdXQgcydlc3QgYmllbiBwYXNzw6kKCXsKCQkvL29uIMOpY3JpdCBkYW5zIGxlIGpvdXJuYWwKCQkkc3RhdHVzID0gJ0pvdWV1ciBwb3Vzc8OpJzsKCQkkZGVzaWduYXRpb24gPSAnam91ZXVyIHBvdXNzw6kgOiAnLiRsaWNlbmNlOwoJCSRhY3Rpb24gPSAncHVzaF9wbGF5ZXInOwoJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywkZGVzaWduYXRpb24sJGFjdGlvbik7CgkJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3JlY3VwJyk7Cgl9CgkKfQplbHNlCnsKCSR0aGlzLT5TZXRNZXNzYWdlKCdKb3VldXIgZMOpasOgIHByw6lzZW50ICEnKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3JlY3VwJyk7Cn0KCiMKI0VPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.refresh.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICAgICAgQ2Ugc2NyaXB0IHJhZnJhaWNoaXQgbGVzIGRvbm7DqWVzIGRlIGxhIHLDqWN1cMOpcmF0aW9uICAgICMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKaWYoICFpc3NldCgkZ0NtcykpIGV4aXQ7CmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBVc2UnKSkKewoJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CglyZXR1cm47Cn0KaWYoaXNzZXQoJHBhcmFtc1snaWRlcHJldXZlJ10pICYmICRwYXJhbXNbJ2lkZXByZXV2ZSddICE9JycpCnsKCSRpZGVwcmV1dmUgPSAkcGFyYW1zWydpZGVwcmV1dmUnXTsKfQokc2Fpc29uID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwokaSA9IDA7Ly9vbiBpbnN0YW5jaWUgdW4gY29tcHRldXIgcG91ciBjb25uYWl0cmUgbGUgbmIgZGUgdGFibGVhdSByYWZyYWljaGl0CgoJJHF1ZXJ5ID0gIlNFTEVDVCBkdi50YWJsZWF1LCBkdi51cGxvYWRlZF9jbGFzc2VtZW50IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2Rpdl90b3VycyBBUyBkdiBMRUZUIE9VVEVSIEpPSU4gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2Rpdl9jbGFzc2VtZW50IEFTIGNsYSAgT04gZHYudGFibGVhdSA9IGNsYS50YWJsZWF1IFdIRVJFIGNsYS50YWJsZWF1IElTIE5PVCBOVUxMIEFORCBkdi51cGxvYWRlZF9jbGFzc2VtZW50IElTIE5VTEwgQU5EIGR2LnNhaXNvbiA9ID8iOwoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHNhaXNvbikpOwoJCglpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCgl7CgkJd2hpbGUoJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQl7CgkJCSRpKys7CgkJCSR1cGxvYWRlZF9jbGFzc2VtZW50ID0gJHJvd1sndXBsb2FkZWRfY2xhc3NlbWVudCddOwoJCQkkdGFibGVhdSA9ICRyb3dbJ3RhYmxlYXUnXTsKCQkJaWYoaXNfbnVsbCgkdXBsb2FkZWRfY2xhc3NlbWVudCkpCgkJCXsKCQkJCSRxdWVyeTIgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfdG91cnMgU0VUIHVwbG9hZGVkX2NsYXNzZW1lbnQgPSAnMScgV0hFUkUgdGFibGVhdSA9ID8gQU5EIHNhaXNvbiA9ID8iOwoJCQkJJGRicmVzdWx0MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCBhcnJheSgkdGFibGVhdSwgJHNhaXNvbikpOwoJCQl9CgkJfQoJCQoJfQoKCSRxdWVyeSA9ICJTRUxFQ1QgZHYudGFibGVhdSwgZHYudXBsb2FkZWRfY2xhc3NlbWVudCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfdG91cnMgQVMgZHYgIExFRlQgT1VURVIgSk9JTiAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X2NsYXNzZW1lbnQgQVMgY2xhICBPTiBkdi50YWJsZWF1ID0gY2xhLnRhYmxlYXUgV0hFUkUgY2xhLnRhYmxlYXUgSVMgTlVMTCBBTkQgZHYuc2Fpc29uID0gPyI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkc2Fpc29uKSk7CgoJaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKT4wKQoJewoJCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkkaSsrOwoJCQkkdXBsb2FkZWRfY2xhc3NlbWVudCA9ICRyb3dbJ3VwbG9hZGVkX2NsYXNzZW1lbnQnXTsKCQkJJHRhYmxlYXUgPSAkcm93Wyd0YWJsZWF1J107CgkJCWlmKCR1cGxvYWRlZF9jbGFzc2VtZW50ID09ICIxIikKCQkJewoJCQkJJHF1ZXJ5MiA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2Rpdl90b3VycyBTRVQgdXBsb2FkZWRfY2xhc3NlbWVudCBJUyBOVUxMIFdIRVJFIHRhYmxlYXUgPSA/IEFORCBzYWlzb24gPSA/IjsKCQkJCSRkYnJlc3VsdDIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJHRhYmxlYXUsICRzYWlzb24pKTsKCQkJfQoJCX0KCQkKCX0KCgkKCgoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.retrieve.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy9jZSBmaWNoaWVyIGZhaXQgZGVzIGFjdGlvbnMgZGUgbWFzc2UsIGlsIGVzdCBhcHBlbMOpIGRlcHVpcyBsJ29uZ2xldCBkZSByw6ljdXDDqXJhdGlvbiBkZXMgaW5mb3Mgc3VyIGxlcyBqb3VldXJzCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgVXNlJykpCnsKCSR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKfQoKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7Ci8vdmFyX2R1bXAoJHBhcmFtc1snc2VsJ10pOwokZGIgPSYgJHRoaXMtPkdldERiKCk7Cgpzd2l0Y2goJHBhcmFtc1sncmV0cmlldmUnXSkKewoJY2FzZSAidXNlcnMiIDoKCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRsaWNlbmNlICkKCXsKCQlwaW5nX2FkbWluX29wczo6dW5hYmxlX3BsYXllciggJGxpY2VuY2UgKTsKCX0KCSR0aGlzLT5TZXRNZXNzYWdlKCdKb3VldXJzIGTDqXNhY3RpdsOpcycpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwoJYnJlYWs7CgoJY2FzZSAic2l0dWF0aW9uIiA6CgkvL2xlcyBsaWNlbmNlcyBjb2xsZWN0w6llcyBzb250IHN1cHBvc8OpZXMgw6p0cmUgYWN0aXZlcwoJLy9xdWUgZmFpdC1vbiBzaSBlbGxlcyBuZSBsZSBzb250IHBhcyBlbiByw6lhbGl0w6kgPwoJLy9ib25uZSBxdWVzdGlvbgoJLy9vbiBwcmVuZCBsZXMgdmFyaWFibGVzIG7DqWNlc3NhaXJlcwoJJHNlcnZpY2UgPSBuZXcgcmV0cmlldmVfb3BzKCk7CgkkbWVzc2FnZT0nUmV0cm91dmV6IHRvdXRlcyBsZXMgaW5mb3MgZGFucyBsZSBqb3VybmFsJzsKCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRsaWNlbmNlICkKCXsKCgkJJHJldHJpZXZlID0gJHNlcnZpY2UtPnJldHJpZXZlX3NpdF9tZW5zKCAkbGljZW5jZSApOwoJfQoJLy8kbWVzc2FnZS49JzwvdWw+JzsKCSR0aGlzLT5TZXRNZXNzYWdlKCIkbWVzc2FnZSIpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigic2l0dWF0aW9uIik7CglicmVhazsKCgljYXNlICJkZWxldGVfdGVhbV9yZXN1bHQiIDoKCS8vbGVzIGxpY2VuY2VzIGNvbGxlY3TDqWVzIHNvbnQgc3VwcG9zw6llcyDDqnRyZSBhY3RpdmVzCgkvL3F1ZSBmYWl0LW9uIHNpIGVsbGVzIG5lIGxlIHNvbnQgcGFzIGVuIHLDqWFsaXTDqSA/CgkvL2Jvbm5lIHF1ZXN0aW9uCgkvL29uIHByZW5kIGxlcyB2YXJpYWJsZXMgbsOpY2Vzc2FpcmVzCgoKCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRyZWNvcmRfaWQgKQoJewoKCQlwaW5nX2FkbWluX29wczo6ZGVsZXRlX3RlYW1fcmVzdWx0KCAkcmVjb3JkX2lkICk7Cgl9CgkvLyRtZXNzYWdlLj0nPC91bD4nOwoKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoInBvdWxlcyIpOwoJYnJlYWs7CgoJY2FzZSAiZGlzcGxheV9vbl9mcm9udGVuZCIgOgoKCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRpZCApCgl7CgoJCXBpbmdfYWRtaW5fb3BzOjpkaXNwbGF5X29uX2Zyb250ZW5kKCAkaWQgKTsKCX0KCgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCJwb3VsZXMiKTsKCWJyZWFrOwoKCWNhc2UgImRvX25vdF9kaXNwbGF5IiA6CgoJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJHJlY29yZF9pZCApCgl7CgoJCXBpbmdfYWRtaW5fb3BzOjpkb19ub3RfZGlzcGxheSggJHJlY29yZF9pZCApOwoJfQoKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoInBvdWxlcyIpOwoJYnJlYWs7CgoJY2FzZSAiZmZ0dCIgOgoJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJGpvdXJuYWxpZCApCgl7CgkJcGluZ19hZG1pbl9vcHM6OmRlbGV0ZV9qb3VybmFsKCAkam91cm5hbGlkICk7Cgl9CglicmVhazsKCgljYXNlICJzcGlkIiA6CgkvLyRzYWlzb25fY291cmFudGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CgkkbWVzc2FnZT0nUmV0cm91dmV6IHRvdXRlcyBsZXMgaW5mb3MgZGFucyBsZSBqb3VybmFsJzsKCSRzZXJ2aWNlID0gbmV3IHJldHJpZXZlX29wcygpOwoJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJGxpY2VuY2UgKQoJewoJCSRyZXRyaWV2ZSA9ICRzZXJ2aWNlLT5yZXRyaWV2ZV9wYXJ0aWVzX3NwaWQoICRsaWNlbmNlICk7Cgl9CgkkdGhpcy0+U2V0TWVzc2FnZSgiJG1lc3NhZ2UiKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoInJlY3VwIik7CglicmVhazsKCgljYXNlICJmZnR0X3BhcnRpZXMiIDoKCS8vJHNhaXNvbl9jb3VyYW50ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKCSRtZXNzYWdlPSdSZXRyb3V2ZXogdG91dGVzIGxlcyBpbmZvcyBkYW5zIGxlIGpvdXJuYWwnOwoJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJGxpY2VuY2UgKQoJewoJCXBpbmdfYWRtaW5fb3BzOjpyZXRyaWV2ZV9wYXJ0aWVzX2ZmdHQoICRsaWNlbmNlICk7Cgl9CgkkdGhpcy0+U2V0TWVzc2FnZSgiJG1lc3NhZ2UiKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoInJlY3VwZXJhdGlvbiIpOwoJYnJlYWs7CgoJY2FzZSAiY29lZmYwNSIgOgoJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJHJlY29yZF9pZCkKCXsKCQlwaW5nX2FkbWluX29wczo6Y29lZmZfb3BzKCAkcmVjb3JkX2lkLCAkY29lZmY9ICcwLjUwJyApOwoJfQoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignc3BpZCcpOwoJYnJlYWs7CgoJY2FzZSAiY29lZmYwNzUiIDoKCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRyZWNvcmRfaWQpCgl7CgkJcGluZ19hZG1pbl9vcHM6OmNvZWZmX29wcyggJHJlY29yZF9pZCwgJGNvZWZmPSAnMC43NScgKTsKCX0KCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3NwaWQnKTsKCWJyZWFrOwoKCWNhc2UgImNvZWZmMSIgOgoJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJHJlY29yZF9pZCkKCXsKCQlwaW5nX2FkbWluX29wczo6Y29lZmZfb3BzKCAkcmVjb3JkX2lkLCAkY29lZmY9JzEuMDAnICk7Cgl9CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzcGlkJyk7CglicmVhazsKCgljYXNlICJjb2VmZjEyNSIgOgoJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJHJlY29yZF9pZCkKCXsKCQlwaW5nX2FkbWluX29wczo6Y29lZmZfb3BzKCAkcmVjb3JkX2lkLCAkY29lZmY9JzEuMjUnKTsKCX0KCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3NwaWQnKTsKCWJyZWFrOwoKCWNhc2UgImNvZWZmMTUiIDoKCSRtZXNzYWdlPSdSZXRyb3V2ZXogdG91dGVzIGxlcyBpbmZvcyBkYW5zIGxlIGpvdXJuYWwnOwoJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJHJlY29yZF9pZCkKCXsKCQlwaW5nX2FkbWluX29wczo6Y29lZmZfb3BzKCAkcmVjb3JkX2lkLCAkY29lZmY9ICcxLjUwJyApOwoJfQoJJHRoaXMtPlNldE1lc3NhZ2UoIiRtZXNzYWdlIik7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzcGlkJyk7CglicmVhazsKCgljYXNlICJzdXBwX3NwaWQiIDoKCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRyZWNvcmRfaWQpCgl7CgkJcGluZ19hZG1pbl9vcHM6OnN1cHBfc3BpZCggJHJlY29yZF9pZCApOwoJfQoJJG1lc3NhZ2UgPSAnUGFydGllcyhzKSBTUElEIHN1cHByaW3DqWUocyknOwoJJHRoaXMtPlNldE1lc3NhZ2UoIiRtZXNzYWdlIik7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzcGlkJyk7CglicmVhazsKCgoJCgljYXNlICJzdXBwX2RpdiIgOgoJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJHJlY29yZF9pZCApCgl7CgkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZpc2lvbnMgV0hFUkUgaWRkaXZpc2lvbiA9ID8iOwoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCQkvL3Byw6l2b2lyIHVuZSBzdXBwcmVzc2lvbiBlbiBjYXNjYWRlCgkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfdG91cnMgV0hFUkUgaWRkaXZpc2lvbiA9ID8iOwoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCQkvL29uIGNvbnRpbnVlIHBhciBsZXMgcGFydGllcwoJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X3BhcnRpZXMgV0hFUkUgaWRkaXZpc2lvbiA9ID8iOwoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCQkvL2VuZmluIGxlcyBjbGFzc2VtZW50cwoJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X2NsYXNzZW1lbnQgV0hFUkUgaWRkaXZpc2lvbiA9ID8iOwoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCX0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbjInLCAkcmV0dXJuaWQsJGNvbnRlbnRzPSdSZXRvdXInLGFycmF5KCdhY3RpdmVfdGFiJz0+J3RvdXJzJykpOwoJYnJlYWs7CgkKCWNhc2UgInN1cHBfZGl2X3RvdXJzIiA6Cglmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkcmVjb3JkX2lkICkKCXsKCQkkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2Rpdl90b3VycyBXSEVSRSBpZCA9ID8iOwoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCX0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbjInLCAkcmV0dXJuaWQsJGNvbnRlbnRzPSdSZXRvdXInLGFycmF5KCdhY3RpdmVfdGFiJz0+J3RvdXJzJykpOwoJYnJlYWs7CgkKCWNhc2UgInN1cHBfZGl2X3BhcnRpZXMiIDoKCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRyZWNvcmRfaWQgKQoJewoJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X3BhcnRpZXMgV0hFUkUgaWQgPSA/IjsKCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmVjb3JkX2lkKSk7Cgl9CgkJJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluMicsJHJldHVybmlkLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJwYXJ0aWUiKSk7CglicmVhazsKCQoJY2FzZSAiZGF0ZXIiIDoKCQkkaWRfc2VsID0gaW1wbG9kZSgiLSIsJHBhcmFtc1snc2VsJ10pOwoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RhdGVyJywkcmV0dXJuaWQsIGFycmF5KCJzZWwiPT4kaWRfc2VsKSk7CgkKCWJyZWFrOwoJY2FzZSAiZGF0ZXIyIiA6CgkJJGlkX3NlbCA9IGltcGxvZGUoIi0iLCRwYXJhbXNbJ3NlbCddKTsKCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCdkYXRlcicsJHJldHVybmlkLCBhcnJheSgic2VsIj0+JGlkX3NlbCwibWV0aG9kZSI9PiJ0YWJsZWF1IikpOwoJCglicmVhazsKCWNhc2UgInJldHJpZXZlX2Rpdl90b3VycyIgOiAKCQkKCQlmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkdmFsZXVyICkKCQl7CgkJCQoJCQkkcXVlcnkgPSAiU0VMRUNUIGlkZXByZXV2ZSwgaWRkaXZpc2lvbixpZG9yZ2EgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2aXNpb25zIFdIRVJFIGlkZGl2aXNpb249ID8iOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdmFsZXVyKSk7CgkJCSRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkJCSRpZGVwcmV1dmUgPSAkcm93WydpZGVwcmV1dmUnXTsKCQkJJGlkb3JnYSA9ICRyb3dbJ2lkb3JnYSddOwoJCQkkc2VydmljZSA9IG5ldyByZXRyaWV2ZV9vcHMoKTsKCQkJJHJldHJpZXZlX29wcyA9ICRzZXJ2aWNlLT5yZXRyaWV2ZV9kaXZfdG91cnMoJGlkZXByZXV2ZSwgJHZhbGV1cik7CgkJCQoJCX0KCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnYWRtaW5fZGl2aXNpb25zX3RhYicsJHJldHVybmlkLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJpbmRpdnMiLCJpZGVwcmV1dmUiPT4kaWRlcHJldXZlLCJpZG9yZ2EiPT4kaWRvcmdhKSk7CglicmVhazsKCQkKCWNhc2UgInJldHJpZXZlX2Rpdl9wYXJ0aWVzIiA6IAoKCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICR2YWxldXIgKQoJewoKCQkkcXVlcnkgPSAiU0VMRUNUIGlkZXByZXV2ZSwgaWRkaXZpc2lvbix0YWJsZWF1IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2Rpdl90b3VycyBXSEVSRSBpZCA9ID8iOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR2YWxldXIpKTsKCQkkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJCSRpZGVwcmV1dmUgPSAkcm93WydpZGVwcmV1dmUnXTsKCQkkaWRkaXZpc2lvbiA9ICRyb3dbJ2lkZGl2aXNpb24nXTsKCQkkdGFibGVhdSA9ICRyb3dbJ3RhYmxlYXUnXTsKCQkkc2VydmljZSA9IG5ldyByZXRyaWV2ZV9vcHMoKTsKCQkkcmV0cmlldmVfb3BzID0gJHNlcnZpY2UtPnJldHJpZXZlX2Rpdl9wYXJ0aWVzKCRpZGVwcmV1dmUsICRpZGRpdmlzaW9uLCR0YWJsZWF1LCR2YWxldXIpOwoKCX0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4yJywkcmV0dXJuaWQsIGFycmF5KCJhY3RpdmVfdGFiIj0+J3RvdXJzJykpOwoJYnJlYWs7CgkKCWNhc2UgInJldHJpZXZlX2Rpdl9jbGFzc2VtZW50IiA6IAoKCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICR2YWxldXIgKQoJewoKCgkJJHNlcnZpY2UgPSBuZXcgcmV0cmlldmVfb3BzKCk7CgkJJHJldHJpZXZlX29wcyA9ICRzZXJ2aWNlLT5yZXRyaWV2ZV9kaXZfY2xhc3NlbWVudCgkdmFsZXVyKTsKCgl9CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQsIGFycmF5KCJhY3RpdmVfdGFiIj0+J2luZGl2cycpKTsKCWJyZWFrOwoJCgljYXNlICJzdXBwX2ZmdHQiIDogCgkkaSA9IDA7Cglmb3JlYWNoKCRwYXJhbXNbJ3NlbCddIGFzICRyZWNvcmRfaWQpCgl7CgkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIFdIRVJFIGlkID0gPyI7CgkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJlY29yZF9pZCkpOwoJCSRpKys7Cgl9CgkkbWVzc2FnZSA9ICRpLiIgbWF0Y2hlcyBzdXBwcmltw6lzIjsKCSR0aGlzLT5TZXRNZXNzYWdlKCRtZXNzYWdlKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2ZmdHQnKTsKCn0vL2ZpbiBkdSBzd2l0Y2gKfQplbHNlCnsKJHRoaXMtPlNldE1lc3NhZ2UoJ1BCIGRlIHPDqWxlY3Rpb24gZGUgbWFzc2UgISEnKTsKJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncmVjdXBlcmF0aW9uJyk7Cn0KCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_all_classement.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3RyYXZhdXgucGhwJyk7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCdQYXJhbWV0ZXJzJyk7Ci8vIGxlcyBwcsOpZsOpcmVuY2VzIG7DqWNlc3NhaXJlcwokc2Fpc29uID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwokcGhhc2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKTsKJG5vdyA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpLCAiJyIpOwokbm9tX2VxdWlwZXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbm9tX2VxdWlwZXMnKTsKJGVycm9yID0gMDsvL29uIGluc3RhbmNpZSB1biBjb21wdGV1ciBkJ2VycmV1cnMKJGRlc2lnbmF0aW9uID0gJyc7CiRpZGVwcmV1dmUgPSAnJzsKaWYoaXNzZXQoJHBhcmFtc1snaWRlcHJldXZlJ10pICYmICRwYXJhbXNbJ2lkZXByZXV2ZSddICE9JycpCnsKCSRpZGVwcmV1dmUgPSAkcGFyYW1zWydpZGVwcmV1dmUnXTsKfQplbHNlCnsKCSRlcnJvcisrOwp9CiR0b3VyID0gJyc7CmlmKGlzc2V0KCRwYXJhbXNbJ3RvdXInXSkgJiYgJHBhcmFtc1sndG91ciddICE9JycpCnsKCSR0b3VyID0gJHBhcmFtc1sndG91ciddOwp9CmVsc2UKewoJJGVycm9yKys7Cn0KJGRhdGVfZGVidXQgPSAnJzsKaWYoaXNzZXQoJHBhcmFtc1snZGF0ZV9kZWJ1dCddKSAmJiAkcGFyYW1zWydkYXRlX2RlYnV0J10gIT0nJykKewoJJGRhdGVfZGVidXQgPSAkcGFyYW1zWydkYXRlX2RlYnV0J107Cn0KZWxzZQp7CgkkZXJyb3IrKzsKfQppZigkZXJyb3IgPT0gMCkKewoJLy9vbiBmYWl0IHVuZSByZXF1ZXRlIHBvdXIgZXh0cmFpcmUgdG91dGVzIGxlcyBpbmZvcyBhZmluIGRlIHByw6lwYXJlciB1bmUgYm91Y2xlCgkkcXVlcnkxID0gIlNFTEVDVCBpZCBBUyB0b3VyX2lkIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2Rpdl90b3VycyBXSEVSRSBpZGVwcmV1dmUgPSA/IEFORCBkYXRlX2RlYnV0ID0gPyBBTkQgdG91ciA9ID8gQU5EIHNhaXNvbiA9ID8gQU5EIHVwbG9hZGVkX2NsYXNzZW1lbnQgSVMgTlVMTCI7CgkkZGJyZXN1bHQxID0gJGRiLT5FeGVjdXRlKCRxdWVyeTEsYXJyYXkoJGlkZXByZXV2ZSwkZGF0ZV9kZWJ1dCwkdG91ciwkc2Fpc29uKSk7CgoJCWlmICgkZGJyZXN1bHQxICYmICRkYnJlc3VsdDEtPlJlY29yZENvdW50KCkgPiAwKQoJICAJewoKCgkJCSRzZXJ2aWNlID0gbmV3IHJldHJpZXZlX29wcygpOwoJICAgIAkJd2hpbGUgKCRkYnJlc3VsdDEgJiYgJHJvdyA9ICRkYnJlc3VsdDEtPkZldGNoUm93KCkpCgkgICAgICAJCXsKCgkJCQkkdG91cl9pZCA9ICRyb3dbJ3RvdXJfaWQnXTsKCQkJCSRyZXRyaWV2ZSA9ICRzZXJ2aWNlLT5yZXRyaWV2ZV9kaXZfY2xhc3NlbWVudCgkdG91cl9pZCk7CgoKCQkJfS8vZmluIGR1IHdoaWxlCgkJfQoJCWVsc2UgCgkJewoJCQkkdGhpcy0+U2V0TWVzc2FnZSgnUGFzIGRlIHRvdXJzIHRyb3V2w6lzIG91IGNsYXNzZW1lbnRzIGTDqWrDoCBtaXMgw6Agam91cicpOwoJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdjYWxlbmRyaWVyJyk7CgkJfS8vZmluIGR1IGlmIGRicmVzdWx0Cn0KCgoKCgoKCQoJJHRoaXMtPlNldE1lc3NhZ2UoIlJldHJvdXZleiBsZXMgaW5mb3MgZGFucyBsZSBqb3VybmFsIik7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZXN1bHRhdHMnKTsKCQojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_all_parties.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKCiRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKJHF1ZXJ5ID0gIlNFTEVDVCBsaWNlbmNlLCBDT05DQVRfV1MoJyAnLCBub20sIHByZW5vbSkgQVMgam91ZXVyIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgV0hFUkUgYWN0aWYgPSAnMSciOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKJHJvd2NsYXNzPSAncm93MSc7CiRyb3dhcnJheT0gYXJyYXkgKCk7CgppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogIC8vIG9uIGluc3RhbmNpZSBsYSBjbGFzc2UgCgoJd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgCXsKCQkkc2VydmljZSA9IG5ldyByZXRyaWV2ZV9vcHMoKTsKCQkkbGljZW5jZSA9ICRyb3dbJ2xpY2VuY2UnXTsKCQkkam91ZXVyID0gJHJvd1snam91ZXVyJ107CgkJcmV0cmlldmVfb3BzOjpyZXRyaWV2ZV9wYXJ0aWVzX2ZmdHQoIiRsaWNlbmNlIik7CiAgICAgCX0KCQkKCQkKfS8vZmluIGR1IGlmICRkYnJlc3VsdAplbHNlIHtlY2hvICI8cD5QYXMgZGUgam91ZXVycyBhY3RpZnMuPC9wPiI7fQovKiovCgkKCSR0aGlzLT5TZXRNZXNzYWdlKCdWb2lyIEpvdXJuYWwnKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2ZmdHQnKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_all_parties_spid.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgICAgICAgICBSRUNVUEVSQVRJT04gREUgVE9VVEVTIExFUyBQQVJUSUVTIFNQSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL29uIHbDqXJpZmllIGxhIHBlcm1pc3Npb24gZCd1dGlsaXNlciBsZSBzY3JpcHQKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFVzZScpKQp7CgllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCXJldHVybjsKfQovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKJGRiID0gJHRoaXMtPkdldERiKCk7CiRkZXNpZ25hdGlvbiA9ICcnOwokbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CiRxdWVyeSA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJyxub20scHJlbm9tKSBhcyBwbGF5ZXIsIGxpY2VuY2UgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSBhY3RpZj0nMSciOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCnsKCSAKCS8vb24gaW5zdGFuY2llIGxhIGNsYXNzZSBldCBvbiB2YSBjb21tZW5jZXIgw6AgYm91Y2xlcgoJJHNlcnZpY2UgPSBuZXcgcmV0cmlldmVfb3BzKCk7CgkKCXdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgl7CgkJJGxpY2VuY2UgPSAkcm93WydsaWNlbmNlJ107CQkKCQkkcGxheWVyID0gJHJvd1sncGxheWVyJ107CgkJCgkJCgkJJHJldHJpZXZlX3NwaWQgPSAkc2VydmljZS0+cmV0cmlldmVfcGFydGllc19zcGlkKCRsaWNlbmNlKTsKCQkKCQkJCgl9Ly9maW4gZHUgd2hpbGUKCQp9CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_all_sit_mens.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjICAgICAgICAgIFLDiUNVUEVSQVRJT04gREUgVE9VVEVTIExFUyBTSVRVQVRJT05TIE1FTlNVRUxMRVMgICAgICAgICAgICAgIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9vbiB2w6lyaWZpZSBsZXMgcGVybWlzc2lvbnMKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFVzZScpKQp7CgllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCXJldHVybjsKfQokam91ciA9IGRhdGUoJ2QnKTsKJGRlc2lnbmF0aW9uPSAnJzsKaWYoICRqb3VyIDwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2pvdXJfc2l0X21lbnMnKSkKewoJJGRlc2lnbmF0aW9uLj0gIkwnYWNjw6hzIG4nZXN0IHBhcyBlbmNvcmUgbGlicmUgb3UgY2hhbmdleiBsZSBwYXJhbcOodHJlIGRhbnMgbCdvbmdsZXQgQ29uZmlndXJhdGlvbiI7CgkkdGhpcy0+U2V0TWVzc2FnZSgkZGVzaWduYXRpb24pOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignc2l0dWF0aW9uJyk7Cn0KLyoKJHBvbmcgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NHQ2FsZW5kYXInLCAkdmVyc2lvbj0nMS4xNS44Jyk7CnZhcl9kdW1wKCRwb25nKTsKaWYgKE5VTEwgIT09ICRwb25nKQp7CgllY2hvICJMZSBtb2R1bGUgZXhpc3RlIjsKfQplbHNlCnsKCWVjaG8gInBhcyBkZSBjaGFuY2UiOwp9CiovCi8qKi8KLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7Ci8vcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKJGRiPSRnQ21zLT5HZXREYigpOwovLyRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKJG1vaXNfY291cmFudCA9IGRhdGUoJ24nKTsKLy9wb3VyIHRlc3QsIGplIGNoYW5nZSBtYW51ZWxsZW1lbnQgbGUgbW9pcyBjb3VyYW50Ci8vJG1vaXNfY291cmFudCA9IDI7CiRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJG1vaXNfZnJhbmNhaXMgPSBhcnJheSgnSmFudmllcicsICdGw6l2cmllcicsJ01hcnMnLCAnQXZyaWwnLCAnTWFpJywgJ0p1aW4nLCAnSnVpbGxldCcsJ0Fvw7t0JywgJ1NlcHRlbWJyZScsICdPY3RvYnJlJywnTm92ZW1icmUnLCdEw6ljZW1icmUnKTsKJG5vdyA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpLCAiJyIpOwokbW9pc19yZWVsID0gJG1vaXNfY291cmFudCAtIDE7CiRtb2lzX3NtID0gJG1vaXNfZnJhbmNhaXNbIiRtb2lzX3JlZWwiXTsKJG1vaXNfc2l0X21lbnMgPSAkbW9pc19zbS4iICIuJGFubmVlX2NvdXJhbnRlOwoKJG1lc3NhZ2UgPSAnJzsKCi8vamUgc8OpbGVjdGlvbm5lIHRvdXRlcyBsZXMgbGljZW5jZXMgZHUgbW9pcyBlbiBxdWVzdGlvbiBkb25jIGTDqWrDoCByZW5zZWlnbsOpZXMKLy8gYWZpbiBkZSBuZSByw6ljdXDDqXJlciBxdWUgY2VsbGVzIG1hbnF1YW50ZXMKJHF1ZXJ5ID0gIlNFTEVDVCBsaWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIFdIRVJFIG1vaXMgPSA/IEFORCBhbm5lZSA9ID8gQU5EIGxpY2VuY2UgSVMgTk9UIE5VTEwiOwovL2plIGxlcyBtZXRzIGVuc3VpdGUgZGFucyB1biB0YWJsZWF1IHBvdXIgZmFpcmUgbGUgTk9UIElOCQoKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG1vaXNfY291cmFudCwgJGFubmVlX2NvdXJhbnRlKSk7CiRyb3cgPSAkZGJyZXN1bHQtPkdldFJvd3MoKTsKJGxpYyA9IGFycmF5KCk7Ci8vJGxpYyA9ICRyb3dbMF1bJ2xpY2VuY2UnXTsKLy9lY2hvICJMYSB2YWxldXIgZXN0IDogIi4kbGljOwokbGlnbmVzID0gJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpOwpmb3IoJGk9MDskaTw9JGxpZ25lczskaSsrKQp7CglhcnJheV9wdXNoKCRsaWMsJHJvd1skaV1bJ2xpY2VuY2UnXSk7CgkvL3Zhcl9kdW1wKCAkbGljKTsKCSRsaWNlbiA9IHN1YnN0cihpbXBsb2RlKCIsICIsICRsaWMpLCAzLCAtMyk7CgkKfQovL3Zhcl9kdW1wKCRsaWNlbik7CmlmKCRsaWduZXMgPT0wKQp7CgoJJHF1ZXJ5MiA9ICJTRUxFQ1QgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIGFjdGlmPTEgIjsKfQplbHNlCnsKCSRxdWVyeTIgPSAiU0VMRUNUIGxpY2VuY2UgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSBhY3RpZj0xIEFORCBsaWNlbmNlIE5PVCBJTiAoJGxpY2VuKSI7Cn0KZWNobyAkcXVlcnkyOwoKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIpOwoKaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQogIHsKCSRzZXJ2aWNlID0gbmV3IHJldHJpZXZlX29wcygpOwogCS8vb24gaW5zdGFuY2llIHVuIGNvbXB0ZXVyIAoJCgkvL29uIGluY3LDqW1lbnRlIHVuIGNvbXB0ZXVyIGRhbnMgbGEgYm91Y2xlCgkkY29tcHQgPSAwOwogICAgCXdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgCXsKCQkkY29tcHQrKzsKCQkkbGljZW5jZTIgPSAkcm93WydsaWNlbmNlJ107CgkJCQoJCSRyZXN1bHQgPSAkc2VydmljZS0+cmV0cmlldmVfc2l0X21lbnMoIiRsaWNlbmNlMiIpOwoJCQoJCWlmKCRjb21wdCAlIDIgPT0gMCkKCQl7CgkJCXNsZWVwKDEpOwoJCX0KICAgICAgICB9Ly9maW4gZHUgd2hpbGUKCgkKCiAgfQoJJHRoaXMtPlNldE1lc3NhZ2UoJ0NvbnN1bHRleiBsZSBqb3VybmFsJyk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzaXR1YXRpb24nKTsgIAovKiovCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_all_tours.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3RyYXZhdXgucGhwJyk7CmRlYnVnX2Rpc3BsYXkoJHBhcmFtcywnUGFyYW1ldGVycycpOwovLyBsZXMgcHLDqWbDqXJlbmNlcyBuw6ljZXNzYWlyZXMKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJHBoYXNlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BoYXNlX2VuX2NvdXJzJyk7CiRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKJG5vbV9lcXVpcGVzID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ25vbV9lcXVpcGVzJyk7CiRlcnJvciA9IDA7Ly9vbiBpbnN0YW5jaWUgdW4gY29tcHRldXIgZCdlcnJldXJzCiRkZXNpZ25hdGlvbiA9ICcnOwokaWRlcHJldXZlID0gJyc7CmlmKGlzc2V0KCRwYXJhbXNbJ2lkZXByZXV2ZSddKSAmJiAkcGFyYW1zWydpZGVwcmV1dmUnXSAhPScnKQp7CgkkaWRlcHJldXZlID0gJHBhcmFtc1snaWRlcHJldXZlJ107Cn0KZWxzZQp7CgkkZXJyb3IrKzsKfQokdG91ciA9ICcnOwppZihpc3NldCgkcGFyYW1zWyd0b3VyJ10pICYmICRwYXJhbXNbJ3RvdXInXSAhPScnKQp7CgkkdG91ciA9ICRwYXJhbXNbJ3RvdXInXTsKfQplbHNlCnsKCSRlcnJvcisrOwp9CgppZigkZXJyb3IgPT0gMCkKewoJLy9vbiBmYWl0IHVuZSByZXF1ZXRlIHBvdXIgZXh0cmFpcmUgdG91dGVzIGxlcyBpbmZvcyBhZmluIGRlIHByw6lwYXJlciB1bmUgYm91Y2xlCgkkcXVlcnkxID0gIlNFTEVDVCBpZCBBUyB0b3VyX2lkIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2Rpdl90b3VycyBXSEVSRSBpZGVwcmV1dmUgPSA/IEFORCB0b3VyID0gPyBBTkQgc2Fpc29uID0gPyBBTkQgdXBsb2FkZWRfY2xhc3NlbWVudCBJUyBOVUxMIjsKCSRkYnJlc3VsdDEgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MSxhcnJheSgkaWRlcHJldXZlLCR0b3VyLCRzYWlzb24pKTsKCgkJaWYgKCRkYnJlc3VsdDEgJiYgJGRicmVzdWx0MS0+UmVjb3JkQ291bnQoKSA+IDApCgkgIAl7CgoKCQkJJHNlcnZpY2UgPSBuZXcgcmV0cmlldmVfb3BzKCk7CgkgICAgCQl3aGlsZSAoJGRicmVzdWx0MSAmJiAkcm93ID0gJGRicmVzdWx0MS0+RmV0Y2hSb3coKSkKCSAgICAgIAkJewoKCQkJCSR0b3VyX2lkID0gJHJvd1sndG91cl9pZCddOwoJCQkJJHJldHJpZXZlID0gJHNlcnZpY2UtPnJldHJpZXZlX2Rpdl9jbGFzc2VtZW50KCR0b3VyX2lkKTsKCgoJCQl9Ly9maW4gZHUgd2hpbGUKCQl9CgkJZWxzZSAKCQl7CgkJCSR0aGlzLT5TZXRNZXNzYWdlKCdQYXMgZGUgdG91cnMgdHJvdXbDqXMgb3UgY2xhc3NlbWVudHMgZMOpasOgIG1pcyDDoCBqb3VyJyk7CgkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2NhbGVuZHJpZXInKTsKCQl9Ly9maW4gZHUgaWYgZGJyZXN1bHQKfQoKCgoKCgoJCgkkdGhpcy0+U2V0TWVzc2FnZSgiUmV0cm91dmV6IGxlcyBpbmZvcyBkYW5zIGxlIGpvdXJuYWwiKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3Jlc3VsdGF0cycpOwoJCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_compets.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAgICBQcmVtacOocmUgw6l0YXBlIGRlIHLDqWN1cMOpcmF0aW9uIGRlcyBjb21ww6l0aXRpb25zICAgICAgICAgICAgICAgICAjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgoKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgVXNlJykpCnsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKfQovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5jYWxjdWxzLnBocCcpOwoKJGNsdWJfbnVtYmVyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NsdWJfbnVtYmVyJyk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CiRkZXNpZ25hdGlvbiA9ICcnOwppZighaXNzZXQoJGNsdWJfbnVtYmVyKSAmJiAkY2x1Yl9udW1iZXIgPT0nJykKewoJJG1lc3NhZ2UgPSAiVm90cmUgbnVtw6lybyBkZSBjbHViIG4nZXN0IHBhcyBjb25maWd1csOpICEhIjsKCSR0aGlzLT5TZXRNZXNzYWdlKCIkbWVzc2FnZSIpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignY29uZmlndXJhdGlvbicpOwp9CiRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKCi8vcHJlbWnDqHJlIHBvc3NpYmlsaXTDqQovL3VuIG9yZ2FuaXNhdGV1ciBhIMOpdMOpIHNvdW1pcwokc2VydmljZSA9IG5ldyByZXRyaWV2ZV9vcHMoKTsKCmlmKGlzc2V0KCRwYXJhbXNbJ2lkb3JnYSddKSAmJiAkcGFyYW1zWydpZG9yZ2EnXSAhPScnKQp7CgkkaWRvcmdhID0gJHBhcmFtc1snaWRvcmdhJ107CgkKCWlmKGlzc2V0KCRwYXJhbXNbJ3R5cGUnXSkgJiYgJHBhcmFtc1sndHlwZSddICE9JycpCgl7CgkJJHR5cGUgPSAkcGFyYW1zWyd0eXBlJ107CgkJCgl9CgllbHNlCgl7CgkJJHR5cGUgPSAnRSc7Cgl9CgkkcmVjdXAgPSAkc2VydmljZS0+cmV0cmlldmVfY29tcGV0cygkaWRvcmdhLCR0eXBlKTsKfQplbHNlIC8vZGV1eGnDqG1lIHBvc3NpYmlsaXTDqSwgcmllbiBuJ2VzdCBkw6lmaW5pLi4uCnsKCS8vb24gZmFpdCB1biB0YWJsZWF1IHF1aSByw6ljYXBpdHVsZSB0b3V0ZXMgbGVzIHBvc3NpYmlsaXTDqXMgKEYsIFogZXRjLi4uKQoJLy9vbiByw6ljdXDDqHJlIGxlcyBwcsOpZsOpcmVuY2VzLi4uCgkkZmVkZSA9ICcxMDAwMDEnOwoJJGxpZ3VlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2xpZ3VlJyk7Cgkkem9uZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd6b25lJyk7CgkkZGVwID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlcCcpOwoJJHRhYmxlYXUgPSBhcnJheSgkZmVkZSwkbGlndWUsJHpvbmUsJGRlcCk7Ly9mw6lkw6ksIHpvbmUsIGxpZ3VlIGV0IGTDqXBhcnRlbWVudAoJJHRhYmxlYXVfdHlwZV9lcHJldXZlcyA9IGFycmF5KCdJJyk7Ly9wYXIgZXF1aXBlcyBvdSBpbmRpdmlkdWVsbGVzCglmb3JlYWNoKCR0YWJsZWF1IGFzICR2YWxldXIpCgl7CgkJZWNobyAibCdvcmdhbmlzYXRldXIgZXN0IDogIi4kdmFsZXVyOwoJCWZvcmVhY2goJHRhYmxlYXVfdHlwZV9lcHJldXZlcyBhcyAkdmFsZXVyMikKCQl7CgkJCWVjaG8gImxlIHR5cGUgZGUgY29tcMOpdGl0aW9uIGVzdCA6ICIuJHZhbGV1cjI7CgkJCSRyZWN1cCA9ICRzZXJ2aWNlLT5yZXRyaWV2ZV9jb21wZXRzKCRpZG9yZ2EgPSAkdmFsZXVyLCR0eXBlID0gJHZhbGV1cjIpOwoJCX0KCQkvL3Vuc2V0KCR2YWxldXIyKTsKCX0KfQppZihpc3NldCgkcGFyYW1zWydzdGFsbCddKSAmJiAkcGFyYW1zWydzdGFsbCddPT0gIjEiKQp7Cgkkc3RhbGwgPSAkcGFyYW1zWydzdGFsbCddOwoJCglpZihpc3NldCgkcGFyYW1zWydzdGVwJ10pICYmICRwYXJhbXNbJ3N0ZXAnXSAhPSIiKQoJewoJCSRzdGVwID0gJHBhcmFtc1snc3RlcCddOwoJCXN3aXRjaCgkc3RlcCkKCQl7CgkJCQoJCQkKCQkJY2FzZSAiMiIgOiAKCQkJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZ2V0SW5pdGlhbGlzYXRpb24nLCAkcmV0dXJuaWQsIGFycmF5KCJzdGFsbCI9PiRzdGFsbCwgInN0ZXAiPT4iMyIpKTsKCQkJCgkJCWNhc2UgIjMiIDogCgkJCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2dldEluaXRpYWxpc2F0aW9uJywgJHJldHVybmlkLCBhcnJheSgic3RhbGwiPT4kc3RhbGwsICJzdGVwIj0+IjQiKSk7CgkJCQoJCQljYXNlICI0IiA6IAoJCQkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdnZXRJbml0aWFsaXNhdGlvbicsICRyZXR1cm5pZCwgYXJyYXkoInN0YWxsIj0+JHN0YWxsLCAic3RlcCI9PiI1IikpOwoJCX0KCX0KCWVsc2UKCXsKCQkKCQkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2dldEluaXRpYWxpc2F0aW9uJywgJHJldHVybmlkLCBhcnJheSgic3RhbGwiPT4kc3RhbGwsICJzdGVwIj0+IjIiKSk7Cgl9CgkKCQp9CmVsc2UKewoJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignY29tcGV0cycpOwp9CgkKCQoKIwojIEVPRgojCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_details_rencontres.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwokZGIgPSYgJHRoaXMtPkdldERiKCk7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwovL2EgZmFpcmUgCi8vbWV0dHJlIGxlcyBhdXRvcmlzYXRpb25zCi8vc2kgcGFzIGRlIHJlY29yZF9pZCByZWRpcmVjdGlvbgokcmVjb3JkX2lkID0gJHBhcmFtc1sncmVjb3JkX2lkJ107Ci8vb24gdmEgdXRpbGlzZXIgY2V0dGUgdmFyaWFibGUgKHJlY29yZF9pZCkgY29tbWUgY2zDqSBzZWNvbmRhaXJlIGRhbnMgbGEgbm91dmVsbGUgdGFibGUKCgokcXVlcnkgPSAiU0VMRUNUIGxpZW4gRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG91bGVzX3JlbmNvbnRyZXMgV0hFUkUgaWQgPSA/IjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJlY29yZF9pZCkpOwppZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCnsKCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgl7CgkJJGxpZW4gPSAkcm93WydsaWVuJ107CgkJJHNlcnZpY2UgPSBuZXcgU2VydmljZSgpOwoJCSRyZXN1bHQgPSAkc2VydmljZS0+Z2V0UmVuY29udHJlKCIkbGllbiIpOwoKCQkvL3ByaW50X3IoJHJlc3VsdCk7CgkJCgkJCWlmKCFpc19hcnJheSgkcmVzdWx0KSkKCQkJeyAKCgkJCQkvL2xlIHRhYmxlYXUgZXN0IHZpZGUsIGlsIGZhdXQgZW52b3llciB1biBtZXNzYWdlIHBvdXIgbGUgc2lnbmFsZXIKCQkJCSRkZXNpZ25hdGlvbi49ICJsZSBzZXJ2aWNlIGVzdCBjb3Vww6kiOwoJCQkJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncG91bGVzJyk7CgkJCX0gICAKCQkJZWxzZQoJCQl7CgkJCS8vb24gZXNzYWllIGRlIGZhaXJlIHFxcyBjYWxjdWxzCgkJCSR0YWJsZWF1MSA9IGFycmF5KCk7CgkJCSR0YWIyID0gYXJyYXkoKTsKCQkJJGNvbXB0ZXVyID0gY291bnQoJHJlc3VsdFtqb3VldXJdKTsKCQkJJGNvbXB0YWdlID0gY291bnQoJHJlc3VsdFtwYXJ0aWVdKTsKCQkJLy9vbiBzY2luZGUgbGUgdGFibGVhdSBwcmluY2lwYWwgZW4gcGx1c2lldXJzIHRhYmxlYXV4ID8KCQkJJHRhYjEgPSBhcnJheV9zbGljZSgkcmVzdWx0LDAsMSk7CgkJCSR0YWIyID0gYXJyYXlfc2xpY2UoJHJlc3VsdCwxLDEpOwoJCQkkdGFiMyA9IGFycmF5X3NsaWNlKCRyZXN1bHQsMiwxKTsKCQkJLy9wcmludF9yKCR0YWIxKTsKCQkJLy9wcmludF9yKCR0YWIyKTsKCQkJLy9wcmludF9yKCR0YWIzKTsKCQkJLy9lY2hvICJsZSBjb21wdGV1ciBlc3QgOiAiLiRjb21wdGV1cjsKCQkJLy9lY2hvICJsZSBuYiBkZSBwYXJ0aWVzIGRpc3B1dMOpZXMgZXN0IDogIi4kY29tcHRhZ2U7CgkJCQkkaT0wOwoJCQkJJGE9MDsKCQkJJGVxdWEgPSAkdGFiMVtyZXN1bHRhdF1bZXF1YV07CgkJCSRyZXNhID0gJHRhYjFbcmVzdWx0YXRdW3Jlc2FdOwoJCQkkZXF1YiA9ICR0YWIxW3Jlc3VsdGF0XVtlcXViXTsKCQkJJHJlc2IgPSAkdGFiMVtyZXN1bHRhdF1bcmVzYl07CgkJCQoJCQkJCgkJCQkJZm9yKCRpPTA7JGk8JGNvbXB0ZXVyOyRpKyspCgkJCQkJewoJCQkJCQkkeGphID0gJ3hqYScuJGk7Ly9leCA6ICR4amEgPSAneGphMCc7CgkJCQkJCSR4Y2EgPSAneGNhJy4kaTsKCQkJCQkJJHhqYiA9ICd4amInLiRpOy8vZXggOiAkeGphID0gJ3hqYTAnOwoJCQkJCQkkeGNiID0gJ3hjYicuJGk7CgkJCQkJCSQkeGphID0gJHRhYjJbam91ZXVyXVskaV1beGphXTsvL2V4IDogJHhqYTAgPSAnJzsKCQkJCQkJJCR4Y2EgPSAkdGFiMltqb3VldXJdWyRpXVt4Y2FdOwoJCQkJCQkkJHhqYiA9ICR0YWIyW2pvdWV1cl1bJGldW3hqYl07Ly9leCA6ICR4amEwID0gJyc7CgkJCQkJCSQkeGNiID0gJHRhYjJbam91ZXVyXVskaV1beGNiXTsKCQkJCQkJLy9lY2hvICQkeGphOwoJCQkJCX0KCQkJCQkJCgkJCQkJZm9yKCRhPTA7JGE8JGNvbXB0YWdlOyRhKyspCgkJCQkJewoJCQkJCQkkamEgPSAnamEnLiRhOy8vZXggJGphID0gJ2phMCc7CgkJCQkJCSQkamEgPSAkdGFiM1twYXJ0aWVdWyRhXVtqYV07CgkJCQkJCSRqYiA9ICdqYicuJGE7Ly9leCAkamEgPSAnamEwJzsKCQkJCQkJJCRqYiA9ICR0YWIzW3BhcnRpZV1bJGFdW2piXTsKCQkJCQkJJHNjb3JlYSA9ICdzY29yZWEnLiRhOwoJCQkJCQkkJHNjb3JlYSA9ICR0YWIzW3BhcnRpZV1bJGFdW3Njb3JlYV07CgkJCQkJCSRzY29yZWIgPSAnc2NvcmViJy4kYTsKCQkJCQkJJCRzY29yZWIgPSAkdGFiM1twYXJ0aWVdWyRhXVtzY29yZWJdOwoJCQkJCQkKCQkJCQl9CgkJCQkKCQkJCQkKCQkJCQoJCQkJCgkJCgkJCQkkY29udGVudSA9ICcnOwoJCQkJJHJldG91cj0gJHRoaXMtPkNyZWF0ZVJldHVybkxpbmsoJGlkLCAkcmV0dXJuaWQsJ1JldG91cicpOwoJCQkJJGNvbnRlbnUuPSI8cD4kcmV0b3VyPC9wPiI7CgkJCQkkY29udGVudS49ICI8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZFwiPiI7CgkJCQkkY29udGVudS49Ijx0cj48dGQ+JGVxdWE8L3RkPjx0ZD4kcmVzYTwvdGQ+PHRkPiRyZXNiPC90ZD48dGQ+JGVxdWI8L3RkPjwvdHI+IjsKCQkJCS8vJGNvbnRlbnUuPSI8L3RhYmxlPiI7CgkJCQkvLyRjb250ZW51Lj0iPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVyZWRcIj4iOwoJCQkJZm9yKCRpPTA7JGk8JGNvbXB0ZXVyOyRpKyspCgkJCQl7CgkJCQkJJGNvbnRlbnUuPSI8dHI+PHRkPiAkeyd4amEnLiRpfTwvdGQ+PHRkPiR7J3hjYScuJGl9PC90ZD48dGQ+JHsneGpiJy4kaX08L3RkPjx0ZD4keyd4Y2InLiRpfTwvdGQ+PC90cj4iOwoJCQkJfQoJCQkJCgkJCQkvLyRjb250ZW51Lj0iPC90YWJsZT4iOwoJCQkvLwkkY29udGVudS49Ijx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkXCI+IjsKCQkJCWZvcigkYT0wOyRhPCRjb21wdGFnZTskYSsrKQoJCQkJewoJCQkJCSRjb250ZW51Lj0iPHRyPjx0ZD4keydqYScuJGF9PC90ZD48dGQ+JHsnc2NvcmVhJy4kYX08L3RkPjx0ZD4keydzY29yZWInLiRhfTwvdGQ+PHRkPiR7J2piJy4kYX08L3RkPjwvdHI+IjsKCQkJCX0KCQkJCQoJCQkJLy8kY29udGVudS49Ijx0cj48dGQ+JHhqYTA8L3RkPjx0ZD4keGNhMDwvdGQ+PHRkPiR4amIwPC90ZD48dGQ+JHhjYjA8L3RkPjwvdHI+IjsKCQkJCSRjb250ZW51Lj0iPC90YWJsZT4iOwkKCQkJCWVjaG8gJGNvbnRlbnU7CQoJCQkJCgkJCX0vL2ZpbiBkdSBlbHNlCgl9Ly9maW4gZHUgd2hpbGUKfQplbHNlCnsKCWVjaG8gJ1BhcyBkZSByw6lzdWx0YXRzJzsKfS8vZmluIGR1IGlmIHByaW1haXJlCiMKIyBFT0YKIwovL2VjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZGV0YWlsc19yZW5jb250cmUudHBsJyk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_details_rencontres2.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyBDZXR0ZSBwYWdlIHLDqWN1cMOocmUgbGUgZMOpdGFpbCBkZXMgcGFydGllcyBkcyB1bmUgY29tcMOpdGl0aW9uIHBhciDDqXF1aXBlcyAgICAgICAgICAjIyMKIyMgCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwokZGIgPSYgJHRoaXMtPkdldERiKCk7Ci8vYSBmYWlyZSAKLy9tZXR0cmUgbGVzIGF1dG9yaXNhdGlvbnMKJGF1am91cmRodWkgPSBkYXRlKCdZLW0tZCcpOwplY2hvICRhdWpvdXJkaHVpOwoKLy8xw6hyZSBjb25kaXRpb24gOiAKLy9vbiBwcmVuZCBsZXMgcsOpc3VsdGF0cyBkJ3VuZSBwb3VsZQokZXFfaWQgPSAwOyAvL29uIGluc3RhbmNpZSBkb25jIGxlIHBhcmFtZXRyZSBkZSBsJ8OpcXVpcGUKaWYoaXNzZXQoJHBhcmFtc1snZXFfaWQnXSkgJiYgJHBhcmFtc1snZXFfaWQnXSAhPSAnJykKewoJJGVxX2lkID0gJHBhcmFtc1snZXFfaWQnXTsKCS8vb24gZmFpdCBsYSByZXF1ZXRlIAoJJHF1ZXJ5ID0gIlNFTEVDVCByZW4uaWQscmVuLnNhaXNvbixyZW4uY2x1YiwgcmVuLmxpZW4scmVuLmlkcG91bGUsIHJlbi5pZGRpdiwgcmVuLmRhdGVfZXZlbnQsIHJlbi50b3VyIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgQVMgZXEsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBBUyByZW4gV0hFUkUgZXEuc2Fpc29uID0gcmVuLnNhaXNvbiBBTkQgZXEuaWRkaXYgPSByZW4uaWRkaXYgQU5EIGVxLmlkcG91bGUgPSByZW4uaWRwb3VsZSBBTkQgZXEuaWQgPSA/IEFORCByZW4uZGF0ZV9ldmVudCA8ID8gQU5EIHJlbi51cGxvYWRlZCA9MCI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkZXFfaWQsICRhdWpvdXJkaHVpKSk7CgkKCWlmKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk+MCkKCXsKCQl3aGlsZSgkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJJGxpZW4gPSAkcm93WydsaWVuJ107CgkJCSRyZWNvcmRfaWQgPSAkcm93WydpZCddOwoJCQkkY2x1YiA9ICRyb3dbJ2NsdWInXTsKCQkJJHNlcnZpY2UgPSBuZXcgU2VydmljZW4oKTsKCQkJJHBhZ2UgPSAieG1sX2NocF9yZW5jIjsKCQkJJHZhciA9ICRsaWVuOwoJCQkkbGllbiA9ICRzZXJ2aWNlLT5HZXRMaW5rKCRwYWdlLCAkdmFyKTsKCQkJJHhtbCA9IHNpbXBsZXhtbF9sb2FkX3N0cmluZygkbGllbiwgJ1NpbXBsZVhNTEVsZW1lbnQnLCBMSUJYTUxfTk9DREFUQSk7CgkJCWlmKCR4bWwgPT09IEZBTFNFKQoJCQl7CgkJCQkvL2xlIHNlcnZpY2UgZXN0IGNvdXDDqQoJCQkJJGFycmF5ID0gMDsKCQkJCSRsaWduZXMgPSAwOwoJCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncG91bGVzJyk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkYXJyYXkgPSBqc29uX2RlY29kZShqc29uX2VuY29kZSgoYXJyYXkpJHhtbCksIFRSVUUpOwoJCQkJJGxpZ25lcyA9IGNvdW50KCRhcnJheVsncmVzdWx0YXQnXSk7CgkJCQkkbGlnbmVzX2pvdWV1cnMgPSBjb3VudCgkYXJyYXlbJ2pvdWV1ciddKTsKCQkJfQoJCQkvL2VjaG8gImxlIG5iIGRlIGpvdWV1cnMgZXN0IDogIi4kbGlnbmVzX2pvdWV1cnM7CgkJCS8vJHJlc3VsdCA9ICRzZXJ2aWNlLT5nZXRSZW5jb250cmUoIiRsaWVuIik7CgoJCQkvL3Zhcl9kdW1wKCR4bWwpOy8vcHJpbnRfcigkcmVzdWx0KTsKCgkJCQlpZighaXNfYXJyYXkoJGFycmF5KSB8fCAkbGlnbmVzID09IDAgfHwgJGxpZ25lc19qb3VldXJzID09IDApCgkJCQl7IAoKCQkJCQkvL2xlIHRhYmxlYXUgZXN0IHZpZGUsIGlsIGZhdXQgZW52b3llciB1biBtZXNzYWdlIHBvdXIgbGUgc2lnbmFsZXIKCQkJCQkkZGVzaWduYXRpb24uPSAiTGVzIHLDqXN1bHRhdHMgbmUgc29udCBwYXMgZW5jb3JlIGRpc3BvbmlibGVzIjsKCQkJCQkKCQkJCX0gICAKCQkJCWVsc2UKCQkJCXsKCQkJCQkvL29uIGVzc2FpZSBkZSBmYWlyZSBxcXMgY2FsY3VscwoJCQkJCSR0YWJsZWF1MSA9IGFycmF5KCk7CgkJCQkJJHRhYjIgPSBhcnJheSgpOwoJCQkJCSRjb21wdGV1ciA9IGNvdW50KCRhcnJheVsnam91ZXVyJ10pOwoJCQkJCSRjb21wdGV1cl9wYXJ0aWVzID0gY291bnQoJGFycmF5WydwYXJ0aWUnXSk7CgoJCQkJCS8vb24gc2NpbmRlIGxlIHRhYmxlYXUgcHJpbmNpcGFsIGVuIHBsdXNpZXVycyB0YWJsZWF1eCA/CgkJCQkJJHRhYjEgPSBhcnJheV9zbGljZSgkYXJyYXksMCwxKTsKCQkJCQkkdGFiMiA9IGFycmF5X3NsaWNlKCRhcnJheSwxLDEpOwoJCQkJCSR0YWIzID0gYXJyYXlfc2xpY2UoJGFycmF5LDIsMSk7CgkJCQkJLy9wcmludF9yKCR0YWIxKTsKCQkJCQkvL3ByaW50X3IoJHRhYjIpOwoJCQkJCS8vcHJpbnRfcigkdGFiMyk7CgkJCQkJLy9lY2hvICJsZSBjb21wdGV1ciBlc3QgOiAiLiRjb21wdGV1cjsKCQkJCQkvL2VjaG8gImxlIG5iIGRlIHBhcnRpZXMgZGlzcHV0w6llcyBlc3QgOiAiLiRjb21wdGFnZTsKCQkJCQkJJGk9MDsKCQkJCQkJJGE9MDsKCgkJCQkJCWZvcigkaT0wOyRpPCRjb21wdGV1cjskaSsrKQoJCQkJCQl7CgkJCQkJCQkvL2xhIGZldWlsbGUgZGUgcmVuY29udHJlLi4uCgkJCQkJCQkkeGphID0gJ3hqYScuJGk7Ly9leCA6ICR4amEgPSAneGphMCc7CgkJCQkJCQkkeGNhID0gJ3hjYScuJGk7IC8vb24gbWV0IGF1c3NpIGxlIGNsYXNzZW1lbnQgZHUgam91ZXVyZXggOiB4Y2EwLCB4Y2ExLHhjYTIsIGV0Yy4uLgoJCQkJCQkJJHhqYiA9ICd4amInLiRpOy8vZXggOiAkeGphID0gJ3hqYTAnOwoJCQkJCQkJJHhjYSA9ICd4Y2InLiRpOwoJCQkJCQkJJCR4amEgPSAkdGFiMltqb3VldXJdWyRpXVt4amFdOy8vZXggOiAkeGphMCA9ICcnOwoJCQkJCQkJJCR4Y2EgPSAkdGFiMltqb3VldXJdWyRpXVt4Y2FdOwoJCQkJCQkJJCR4amIgPSAkdGFiMltqb3VldXJdWyRpXVt4amJdOy8vZXggOiAkeGphMCA9ICcnOwoJCQkJCQkJJCR4Y2IgPSAkdGFiMltqb3VldXJdWyRpXVt4Y2JdOwoJCQkJCQkJLy9vbiBpbnPDqHJlIGxlIHRvdXQgZGFucyBsYSBiZGQKCQkJCQkJCSRxdWVyeTMgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2ZldWlsbGVzX3JlbmNvbnRyZXMgKGlkLCBma19pZCwgeGphLCB4Y2EsIHhqYiwgeGNiKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/KSI7CgkJCQkJCQkkZGJyZXN1bHQzID0gJGRiLT5FeGVjdXRlKCRxdWVyeTMsIGFycmF5KCRyZWNvcmRfaWQsICQkeGphLCQkeGNhLCQkeGpiLCQkeGNiKSk7CgkJCQkJCX0KCQkJCQkJZm9yKCRpPTA7JGk8JGNvbXB0ZXVyX3BhcnRpZXM7JGkrKykKCQkJCQkJewoKCgkJCQkJCQkvL29uIHMnb2NjdXBlIG1haW50ZW5hbnQgZGVzIHBhcnRpZXMKCQkJCQkJCSRqYSA9ICdqYScuJGk7CgkJCQkJCQkkc2NvcmVhID0gJ3Njb3JlQScuJGk7CgkJCQkJCQkkamIgPSAnamInLiRpOwoJCQkJCQkJJHNjb3JlYiA9ICdzY29yZUInLiRpOwoJCQkJCQkJJCRqYSA9ICR0YWIzW3BhcnRpZV1bJGldW2phXTsKCQkJCQkJCSQkc2NvcmVhID0gJHRhYjNbcGFydGllXVskaV1bc2NvcmVhXTsKCQkJCQkJCSQkamIgPSAkdGFiM1twYXJ0aWVdWyRpXVtqYl07CgkJCQkJCQkkJHNjb3JlYiA9ICR0YWIzW3BhcnRpZV1bJGldW3Njb3JlYl07CgkJCQkJCQkvL29uIGluc8OocmUgYXVzc2kgZGFucyBsYSBiZGQKCQkJCQkJCSRxdWVyeTQgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlbmNvbnRyZXNfcGFydGllcyAoaWQsIGZrX2lkLCBqb3VldXJBLCBzY29yZUEsIGpvdWV1ckIsIHNjb3JlQikgVkFMVUVTICgnJywgPywgPywgPywgPywgPykiOwoJCQkJCQkJJGRicmVzdWx0NCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnk0LCBhcnJheSgkcmVjb3JkX2lkLCAkJGphLCQkc2NvcmVhLCAkJGpiLCAkJHNjb3JlYikpOwoJCQkJCQkJCgkJCQkJCQlpZigkY2x1YiA9PSAiMSIpCgkJCQkJCQl7CgkJCQkJCQkJJHF1ZXJ5MiA9ICJTRUxFQ1QgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIChDT05DQVRfV1MoJyAnLG5vbSwgcHJlbm9tKSA9ID8pIE9SIChDT05DQVRfV1MoJyAnLG5vbSwgcHJlbm9tKSA9ID8pIjsKCQkJCQkJCQkvL2VjaG8gJHF1ZXJ5MjsKCQkJCQkJCQkkZGJyZXN1bHQyID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsIGFycmF5KCQkeGpiLCQkeGphKSk7CgoJCQkJCQkJCQlpZigkZGJyZXN1bHQyICYmICRkYnJlc3VsdDItPlJlY29yZENvdW50KCk+MCkKCQkJCQkJCQkJewoJCQkJCQkJCQkJd2hpbGUoJHJvdzI9ICRkYnJlc3VsdDItPkZldGNoUm93KCkpCgkJCQkJCQkJCQl7CgkJCQkJCQkJCQkJJHNlcnYgPSBuZXcgcmV0cmlldmVfb3BzKCk7CgkJCQkJCQkJCQkJJGxpY2VuY2UgPSAkcm93MlsnbGljZW5jZSddOwoJCQkJCQkJCQkJCSRyZXRyaWV2ZSA9ICRzZXJ2LT5yZXRyaWV2ZV9wYXJ0aWVzX3NwaWQyKCRsaWNlbmNlKTsKCgoJCQkJCQkJCQkJfQoJCQkJCQkJCQl9CgkJCQkJCQkJCWVsc2UKCQkJCQkJCQkJewoKCQkJCQkJCQkJfQoKCQkJCQkJCQkJLy9vbiBwb3VycmFpdCBhdXNzaSByw6ljdXDDqXJlciBjZXMgaW5mb3MgcG91ciBsZXMgbWV0dHJlIGVuIGJkZAkKCQkJCQkJCQkJLy9lY2hvICQkeGphOwoJCQkJCQkJfQoJCQkJCQkJCgkJCQkJCX0KCgkJCQkJCS8vb24gbWV0IGxhIHZhbGV1ciB1cGxvYWRlZCDDoCAxCgkJCQkJCSRxdWVyeTMgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBTRVQgYHVwbG9hZGVkYCA9IDEgV0hFUkUgaWQgPSA/IjsKCQkJCQkJJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MywgYXJyYXkoJHJlY29yZF9pZCkpOwkKCQkJCQkJc2xlZXAoMSk7CQkJCgoKCgoKCgoKCgkJCQl9Ly9maW4gZHUgZWxzZQoJCX0vL2ZpbiBkdSB3aGlsZQoJfQp9CmVsc2UKewoJJHJlY29yZF9pZCA9ICcnOwoJaWYoaXNzZXQoJHBhcmFtc1sncmVjb3JkX2lkJ10pICYmICRwYXJhbXNbJ3JlY29yZF9pZCddICE9ICcnKQoJewoJCSRyZWNvcmRfaWQgPSAkcGFyYW1zWydyZWNvcmRfaWQnXTsKCQkKCQkKCQkkcXVlcnkgPSAiU0VMRUNUIHNhaXNvbiwgbGllbixpZHBvdWxlLCBpZGRpdiwgZGF0ZV9ldmVudCwgdG91ciBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBXSEVSRSBpZCA9ID8iOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCQlpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCgkJewoJCQl3aGlsZSgkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCQl7CgkJCQkkbGllbiA9ICRyb3dbJ2xpZW4nXTsKCQkJCSRzZXJ2aWNlID0gbmV3IFNlcnZpY2VuKCk7CgkJCQkkcGFnZSA9ICJ4bWxfY2hwX3JlbmMiOwoJCQkJJHZhciA9ICRsaWVuOwoJCQkJJGxpZW4gPSAkc2VydmljZS0+R2V0TGluaygkcGFnZSwgJHZhcik7CgkJCQkkeG1sID0gc2ltcGxleG1sX2xvYWRfc3RyaW5nKCRsaWVuLCAnU2ltcGxlWE1MRWxlbWVudCcsIExJQlhNTF9OT0NEQVRBKTsKCQkJCWlmKCR4bWwgPT09IEZBTFNFKQoJCQkJewoJCQkJCS8vbGUgc2VydmljZSBlc3QgY291cMOpCgkJCQkJJGFycmF5ID0gMDsKCQkJCQkkbGlnbmVzID0gMDsKCQkJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdwb3VsZXMnKTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkYXJyYXkgPSBqc29uX2RlY29kZShqc29uX2VuY29kZSgoYXJyYXkpJHhtbCksIFRSVUUpOwoJCQkJCSRsaWduZXMgPSBjb3VudCgkYXJyYXlbJ3Jlc3VsdGF0J10pOwoJCQkJCSRsaWduZXNfam91ZXVycyA9IGNvdW50KCRhcnJheVsnam91ZXVyJ10pOwoJCQkJfQoJCQkJLy9lY2hvICJsZSBuYiBkZSBqb3VldXJzIGVzdCA6ICIuJGxpZ25lc19qb3VldXJzOwoJCQkJLy8kcmVzdWx0ID0gJHNlcnZpY2UtPmdldFJlbmNvbnRyZSgiJGxpZW4iKTsKCgkJCQkvL3Zhcl9kdW1wKCR4bWwpOy8vcHJpbnRfcigkcmVzdWx0KTsKCgkJCQkJaWYoIWlzX2FycmF5KCRhcnJheSkgfHwgJGxpZ25lcyA9PSAwIHx8ICRsaWduZXNfam91ZXVycyA9PSAwKQoJCQkJCXsgCgoJCQkJCQkvL2xlIHRhYmxlYXUgZXN0IHZpZGUsIGlsIGZhdXQgZW52b3llciB1biBtZXNzYWdlIHBvdXIgbGUgc2lnbmFsZXIKCQkJCQkJJGRlc2lnbmF0aW9uLj0gIkxlcyByw6lzdWx0YXRzIG5lIHNvbnQgcGFzIGVuY29yZSBkaXNwb25pYmxlcyI7CgkJCQkJCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCQkJCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncG91bGVzJyk7CgkJCQkJfSAgIAoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJLy9vbiBlc3NhaWUgZGUgZmFpcmUgcXFzIGNhbGN1bHMKCQkJCQkkdGFibGVhdTEgPSBhcnJheSgpOwoJCQkJCSR0YWIyID0gYXJyYXkoKTsKCQkJCQkkY29tcHRldXIgPSBjb3VudCgkYXJyYXlbJ2pvdWV1ciddKTsKCQkJCQkkY29tcHRldXJfcGFydGllcyA9IGNvdW50KCRhcnJheVsncGFydGllJ10pOwoKCQkJCQkvL29uIHNjaW5kZSBsZSB0YWJsZWF1IHByaW5jaXBhbCBlbiBwbHVzaWV1cnMgdGFibGVhdXggPwoJCQkJCSR0YWIxID0gYXJyYXlfc2xpY2UoJGFycmF5LDAsMSk7CgkJCQkJJHRhYjIgPSBhcnJheV9zbGljZSgkYXJyYXksMSwxKTsKCQkJCQkkdGFiMyA9IGFycmF5X3NsaWNlKCRhcnJheSwyLDEpOwoJCQkJCS8vcHJpbnRfcigkdGFiMSk7CgkJCQkJLy9wcmludF9yKCR0YWIyKTsKCQkJCQkvL3ByaW50X3IoJHRhYjMpOwoJCQkJCS8vZWNobyAibGUgY29tcHRldXIgZXN0IDogIi4kY29tcHRldXI7CgkJCQkJLy9lY2hvICJsZSBuYiBkZSBwYXJ0aWVzIGRpc3B1dMOpZXMgZXN0IDogIi4kY29tcHRhZ2U7CgkJCQkJCSRpPTA7CgkJCQkJCSRhPTA7CgoJCQkJCQkJZm9yKCRpPTA7JGk8JGNvbXB0ZXVyOyRpKyspCgkJCQkJCQl7CgkJCQkJCQkJLy9sYSBmZXVpbGxlIGRlIHJlbmNvbnRyZS4uLgoJCQkJCQkJCSR4amEgPSAneGphJy4kaTsvL2V4IDogJHhqYSA9ICd4amEwJzsKCQkJCQkJCQkkeGNhID0gJ3hjYScuJGk7IC8vb24gbWV0IGF1c3NpIGxlIGNsYXNzZW1lbnQgZHUgam91ZXVyZXggOiB4Y2EwLCB4Y2ExLHhjYTIsIGV0Yy4uLgoJCQkJCQkJCSR4amIgPSAneGpiJy4kaTsvL2V4IDogJHhqYSA9ICd4amEwJzsKCQkJCQkJCQkkeGNhID0gJ3hjYicuJGk7CgkJCQkJCQkJJCR4amEgPSAkdGFiMltqb3VldXJdWyRpXVt4amFdOy8vZXggOiAkeGphMCA9ICcnOwoJCQkJCQkJCSQkeGNhID0gJHRhYjJbam91ZXVyXVskaV1beGNhXTsKCQkJCQkJCQkkJHhqYiA9ICR0YWIyW2pvdWV1cl1bJGldW3hqYl07Ly9leCA6ICR4amEwID0gJyc7CgkJCQkJCQkJJCR4Y2IgPSAkdGFiMltqb3VldXJdWyRpXVt4Y2JdOwoJCQkJCQkJCS8vb24gaW5zw6hyZSBsZSB0b3V0IGRhbnMgbGEgYmRkCgkJCQkJCQkJJHF1ZXJ5MyA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZmV1aWxsZXNfcmVuY29udHJlcyAoaWQsIGZrX2lkLCB4amEsIHhjYSwgeGpiLCB4Y2IpIFZBTFVFUyAoJycsID8sID8sID8sID8sID8pIjsKCQkJCQkJCQkkZGJyZXN1bHQzID0gJGRiLT5FeGVjdXRlKCRxdWVyeTMsIGFycmF5KCRyZWNvcmRfaWQsICQkeGphLCQkeGNhLCQkeGpiLCQkeGNiKSk7CgkJCQkJCQl9CgkJCQkJCQlmb3IoJGk9MDskaTwkY29tcHRldXJfcGFydGllczskaSsrKQoJCQkJCQkJewoKCgkJCQkJCQkJLy9vbiBzJ29jY3VwZSBtYWludGVuYW50IGRlcyBwYXJ0aWVzCgkJCQkJCQkJJGphID0gJ2phJy4kaTsKCQkJCQkJCQkkc2NvcmVhID0gJ3Njb3JlQScuJGk7CgkJCQkJCQkJJGpiID0gJ2piJy4kaTsKCQkJCQkJCQkkc2NvcmViID0gJ3Njb3JlQicuJGk7CgkJCQkJCQkJJCRqYSA9ICR0YWIzW3BhcnRpZV1bJGldW2phXTsKCQkJCQkJCQkkJHNjb3JlYSA9ICR0YWIzW3BhcnRpZV1bJGldW3Njb3JlYV07CgkJCQkJCQkJJCRqYiA9ICR0YWIzW3BhcnRpZV1bJGldW2piXTsKCQkJCQkJCQkkJHNjb3JlYiA9ICR0YWIzW3BhcnRpZV1bJGldW3Njb3JlYl07CgkJCQkJCQkJLy9vbiBpbnPDqHJlIGF1c3NpIGRhbnMgbGEgYmRkCgkJCQkJCQkJJHF1ZXJ5NCA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVuY29udHJlc19wYXJ0aWVzIChpZCwgZmtfaWQsIGpvdWV1ckEsIHNjb3JlQSwgam91ZXVyQiwgc2NvcmVCKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/KSI7CgkJCQkJCQkJJGRicmVzdWx0NCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnk0LCBhcnJheSgkcmVjb3JkX2lkLCAkJGphLCQkc2NvcmVhLCAkJGpiLCAkJHNjb3JlYikpOwoKCQkJCQkJCQkkcXVlcnkyID0gIlNFTEVDVCBsaWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgV0hFUkUgKENPTkNBVF9XUygnICcsbm9tLCBwcmVub20pID0gPykgT1IgKENPTkNBVF9XUygnICcsbm9tLCBwcmVub20pID0gPykiOwoJCQkJCQkJCS8vZWNobyAkcXVlcnkyOwoJCQkJCQkJCSRkYnJlc3VsdDIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJCR4amIsJCR4amEpKTsKCgkJCQkJCQkJCWlmKCRkYnJlc3VsdDIgJiYgJGRicmVzdWx0Mi0+UmVjb3JkQ291bnQoKT4wKQoJCQkJCQkJCQl7CgkJCQkJCQkJCQl3aGlsZSgkcm93Mj0gJGRicmVzdWx0Mi0+RmV0Y2hSb3coKSkKCQkJCQkJCQkJCXsKCQkJCQkJCQkJCQkkc2VydiA9IG5ldyByZXRyaWV2ZV9vcHMoKTsKCQkJCQkJCQkJCQkkbGljZW5jZSA9ICRyb3cyWydsaWNlbmNlJ107CgkJCQkJCQkJCQkJJHJldHJpZXZlID0gJHNlcnYtPnJldHJpZXZlX3BhcnRpZXNfc3BpZCgkbGljZW5jZSk7CgoKCQkJCQkJCQkJCX0KCQkJCQkJCQkJfQoJCQkJCQkJCQllbHNlCgkJCQkJCQkJCXsKCgkJCQkJCQkJCX0KCgkJCQkJCQkJCS8vb24gcG91cnJhaXQgYXVzc2kgcsOpY3Vww6lyZXIgY2VzIGluZm9zIHBvdXIgbGVzIG1ldHRyZSBlbiBiZGQJCgkJCQkJCQkJCS8vZWNobyAkJHhqYTsKCQkJCQkJCX0KCgkJLy9vbiBtZXQgbGEgdmFsZXVyIHVwbG9hZGVkIMOgIDEKCQkkcXVlcnkzID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG91bGVzX3JlbmNvbnRyZXMgU0VUIGB1cGxvYWRlZGAgPSAxIFdIRVJFIGlkID0gPyI7CgkJJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MywgYXJyYXkoJHJlY29yZF9pZCkpOwkJCQkKCgoKCgoKCgoKCQkJCQl9Ly9maW4gZHUgZWxzZQoJCQl9Ly9maW4gZHUgd2hpbGUKCQl9CgkJCgkJCgkJCgkJCgkJCgl9CgllbHNlCgl7CgkJJGRlc2lnbmF0aW9uID0gIlBhcmFtw6h0cmVzIG1hbnF1YW50cyI7CgkJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJCSQkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdwb3VsZXMnKTsKCX0KfQoKCi8vc2kgcGFzIGRlIHJlY29yZF9pZCByZWRpcmVjdGlvbgoKCgovL29uIHZhIHV0aWxpc2VyIGNldHRlIHZhcmlhYmxlIChyZWNvcmRfaWQpIGNvbW1lIGNsw6kgc2Vjb25kYWlyZSBkYW5zIGxhIG5vdXZlbGxlIHRhYmxlCgoKCiR0aGlzLT5TZXRNZXNzYWdlKCdSZXRyb3V2ZXogbGVzIGluZm9zIGRhbnMgbGUgam91cm5hbCcpOwokdGhpcy0+UmVkaXJlY3QoJGlkLCdhZG1pbl9wb3VsZXNfdGFiMycsJHJldHVybmlkLCBhcnJheSgicmVjb3JkX2lkIj0+JGVxX2lkKSk7CiMKIyBFT0YKIwovL2VjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZGV0YWlsc19yZW5jb250cmUudHBsJyk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_divisions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAgICBQcmVtacOocmUgw6l0YXBlIGRlIHLDqWN1cMOpcmF0aW9uIGRlcyBkaXZpc2lvbnMgICAgICAgICAgICAgICAjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgoKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7CgokY2x1Yl9udW1iZXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY2x1Yl9udW1iZXInKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJGZlZGUgPSAnMTAwMDAxJzsKJHpvbmUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnem9uZScpOwokbGlndWUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbGlndWUnKTsKJGRlcCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXAnKTsKJGRlc2lnbmF0aW9uID0gJyc7CmlmKCFpc3NldCgkY2x1Yl9udW1iZXIpICYmICRjbHViX251bWJlciA9PScnKQp7CgkkbWVzc2FnZSA9ICJWb3RyZSBudW3DqXJvIGRlIGNsdWIgbidlc3QgcGFzIGNvbmZpZ3Vyw6kgISEiOwoJJHRoaXMtPlNldE1lc3NhZ2UoIiRtZXNzYWdlIik7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdjb25maWd1cmF0aW9uJyk7Cn0KJHNtYXJ0eS0+YXNzaWduKCdyZXR1cm5saW5rJywgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCwkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2JhY2suZ2lmJywgJHRoaXMtPkxhbmcoJ2JhY2snKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCJhY3RpdmVfdGFiIj0+ImRpdmlzaW9ucyIpKSk7CiRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKJGVycm9yID0gMDsvL29uIGluc3RhbmNpZSB1bmUgdmFyaWFibGUgZCdlcnJldXIKLy9vbiB2w6lyaWZpZSBxdWUgdG91cyBsZXMgcGFyYW3DqHRyZXMgbsOpY2Vzc2FpcmVzIHNvbnQgcmVuc2VpZ27DqXMgKGlkb3JnYSBldCB0eXBlIGV0IGlkZXByZXV2ZSkKLyoqLwppZihpc3NldCgkcGFyYW1zWydhbGwnXSkgJiYgJHBhcmFtc1snYWxsJ10gIT09RkFMU0UpCnsKCS8vb24gZmFpdCBkb25jIHVuZSByZXF1ZXRlIGfDqW7DqXJhbGUgcG91ciByZXRyb3V2ZXIgdG91dGVzIGxlcyBkaXZpc2lvbnMgcG9zc2libGVzIGRlcyBjb21wZXRzIGTDqWrDoCBlbnJlZ2lzdHLDqWVzCgkkcXVlcnkgPSAiU0VMRUNUIG5hbWUsaWRlcHJldXZlLGlkb3JnYSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyBXSEVSRSBpbmRpdnMgPSAnMSciOwoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkvL29uIHLDqWN1cMOocmUgbGUgdGFibGVhdSBkZXMgZsOpZMOpLCB6b25lLCBsaWd1ZSBldCBjb21pdMOpCgkkZmVkZSA9IDEwMDAwMTsKCSR6b25lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3pvbmUnKTsKCSRsaWd1ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdsaWd1ZScpOwoJJGRlcCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXAnKTsKCSR0YWJsZWF1ID0gYXJyYXkoJGZlZGUsICR6b25lLCAkbGlndWUsICRkZXApOwoJCglpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCgl7CgkJLy9PayBvbiBhIGRlcyByw6lzdWx0YXRzLCBvbiBjb250aW51ZQoJCS8vb24gaW5zdGFuY2llIGxhIGNsYXNzZQoJCSRzZXJ2aWNlID0gbmV3IHJldHJpZXZlX29wcygpOwoJCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkkbmFtZSA9ICRyb3dbJ25hbWUnXTsKCQkJJGlkZXByZXV2ZSA9ICRyb3dbJ2lkZXByZXV2ZSddOwoJCQkvLyRpZG9yZ2EgPSAkcm93WydpZG9yZ2EnXTsKCQkJZm9yZWFjaCgkdGFibGVhdSBhcyAkdmFsZXVyKQoJCQl7CgkJCQoJCQkJJHJldHJpZXZlX2RpdmlzaW9ucyA9ICRzZXJ2aWNlLT5yZXRyaWV2ZV9kaXZpc2lvbnMoJHZhbGV1ciwkaWRlcHJldXZlLCR0eXBlPScnKTsKCQkJfQkKCQl9CgkJLy9vbiByZWRpcmlnZSBldCBvbiBkb25uZSB1bmUgaW5mbwoJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2luZGl2cycpOwoJfQoJZWxzZQoJewoJCS8vcGFzIGRlIHLDqXN1bHRhdHMsIG9uIGZhaXQgcXVvaSA/Cgl9Cn0KZWxzZQp7CglpZihpc3NldCgkcGFyYW1zWydpZG9yZ2EnXSkgJiYgJHBhcmFtc1snaWRvcmdhJ10gIT0nJykKCXsKCQkkaWRvcmdhID0gJHBhcmFtc1snaWRvcmdhJ107CgoJfQoJZWxzZQoJewoJCSRlcnJvcisrOwoJfQoJLyoqLwoJaWYoaXNzZXQoJHBhcmFtc1sndHlwZSddKSAmJiAkcGFyYW1zWyd0eXBlJ10gIT0nJykKCXsKCQkkdHlwZTIgPSAkcGFyYW1zWyd0eXBlJ107CgkJaWYoJHR5cGUyID09ICdFJykKCQl7CgkJCSRpbmRpdnMgPSAwOwoJCX0KCQllbHNlCgkJewoJCQkkaW5kaXZzID0gMTsKCQl9Cgl9CgllbHNlCgl7CgkJJHR5cGUyID0gJ0knOwoJfQoJaWYoaXNzZXQoJHBhcmFtc1snaWRlcHJldXZlJ10pICYmICRwYXJhbXNbJ2lkZXByZXV2ZSddICE9JycpCgl7CgkJJGlkZXByZXV2ZSA9ICRwYXJhbXNbJ2lkZXByZXV2ZSddOwoJfQoJZWxzZQoJewoJCSRlcnJvcisrOwoJfQoJJHNlcnZpY2UgPSBuZXcgcmV0cmlldmVfb3BzKCk7CgkkcmV0cmlldmVfZGl2aXNpb25zID0gJHNlcnZpY2UtPnJldHJpZXZlX2RpdmlzaW9ucygkaWRvcmdhLCRpZGVwcmV1dmUsJHR5cGU9JHR5cGUyKTsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdhZG1pbl9kaXZpc2lvbnNfdGFiJywkcmV0dXJuaWQsIGFycmF5KCJpZGVwcmV1dmUiPT4kaWRlcHJldXZlLCJpZG9yZ2EiPT4kaWRvcmdhLCJlc3NhaSI9PiIxIikpOwoJCn0KLyoqCiRwYWdlPSJ4bWxfZGl2aXNpb24iOwovL29uIGluc3RhbmNpZSBsYSBjbGFzc2Ugc2VydmljZQokc2VydmljZSA9IG5ldyBTZXJ2aWNlbigpOwoKCgkkdmFyID0gIm9yZ2FuaXNtZT0iLiRpZG9yZ2EuIiZlcHJldXZlPSIuJGlkZXByZXV2ZS4iJnR5cGU9Ii4kdHlwZTsKCQkvL2VjaG8gJHZhbGV1cjsKCQlpZigkaWRvcmdhID09ICRmZWRlKSB7JHNjb3BlID0gJ0YnO30KCQlpZigkaWRvcmdhID09ICR6b25lKSB7JHNjb3BlID0gJ1onO30KCQlpZigkaWRvcmdhID09ICRsaWd1ZSkgeyRzY29wZSA9ICdMJzt9CgkJaWYoJGlkb3JnYSA9PSAkZGVwKSB7JHNjb3BlID0gJ0QnO30KCQkvLwoJCSRsaWVuID0gJHNlcnZpY2UtPkdldExpbmsoJHBhZ2UsJHZhcik7CgkJLy92YXJfZHVtcCgkbGllbik7CgkJJHhtbCA9IHNpbXBsZXhtbF9sb2FkX3N0cmluZygkbGllbiwgJ1NpbXBsZVhNTEVsZW1lbnQnLCBMSUJYTUxfTk9DREFUQSk7CgkJaWYoJHhtbCA9PT0gRkFMU0UpCgkJewoJCQkvL2xlIHNlcnZpY2UgZXN0IGNvdXDDqQoJCQkkYXJyYXkgPSAwOwoJCQkkbGlnbmVzID0gMDsKCQl9CgkJZWxzZQoJCXsKCQkJJGFycmF5ID0ganNvbl9kZWNvZGUoanNvbl9lbmNvZGUoKGFycmF5KSR4bWwpLCBUUlVFKTsKCQkJJGxpZ25lcyA9IGNvdW50KCRhcnJheVsnZGl2aXNpb24nXSk7CgkJfQoJCS8vZWNobyAibGUgbmIgZGUgbGlnbmVzIGVzdCA6ICIuJGxpZ25lczsKCQkkaT0wOwoJCS8vb24gaW5pdGlhbGlzZSB1biBkZXV4acOobWUgY29tcHRldXIKCQkkY29tcHRldXI9MDsKCQlmb3JlYWNoKCR4bWwgYXMgJHZhbHVlKQoJCXsKCgkJCSRpKys7CgkJCSRpZGRpdmlzaW9uID0gaHRtbGVudGl0aWVzKCR2YWx1ZS0+aWRkaXZpc2lvbik7CgkJCSRsaWJlbGxlID0gaHRtbGVudGl0aWVzKCR2YWx1ZS0+bGliZWxsZSk7CgoJCQkvLyAxLSBvbiB2w6lyaWZpZSBzaSBjZXR0ZSDDqXByZXV2ZSBlc3QgZMOpasOgIGRhbnMgbGEgYmFzZQoJCQkkcXVlcnkgPSAiU0VMRUNUIGlkZGl2aXNpb24gRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2aXNpb25zIFdIRVJFIGlkZGl2aXNpb24gPSA/IEFORCBpZG9yZ2EgPSA/IEFORCBzYWlzb24gPSA/IEFORCBpZGVwcmV1dmUgPSA/IjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGlkZGl2aXNpb24sICRpZG9yZ2EsJHNhaXNvbiwkaWRlcHJldXZlKSk7CgoJCQkJaWYoJGRicmVzdWx0ICAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkgCgkJCQl7CgkJCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZpc2lvbnMgKGlkLCBpZG9yZ2EsIGlkZXByZXV2ZSxpZGRpdmlzaW9uLGxpYmVsbGUsc2Fpc29uLGluZGl2cyxzY29wZSkgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkJCS8vZWNobyAkcXVlcnk7CgkJCQkJJGNvbXB0ZXVyKys7CgkJCQkJJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRpZG9yZ2EsJGlkZXByZXV2ZSwkaWRkaXZpc2lvbiwkbGliZWxsZSwkc2Fpc29uLCRpbmRpdnMsJHNjb3BlKSk7CgoJCQkJCWlmKCEkZGJyZXN1bHRhdCkKCQkJCQl7CgkJCQkJCSRkZXNpZ25hdGlvbiAuPSAkZGItPkVycm9yTXNnKCk7CQkJCgkJCQkJfQoKCQkJCX0KCQkJCQoKCQl9Ly8gZmluIGR1IGZvcmVhY2gKCQl1bnNldCgkc2NvcGUpOwoJLy99Ly9maW4gZHUgcHJlbWllciBmb3JlYWNoCgkkZGVzaWduYXRpb24gLj0gIlLDqWN1cMOpcmF0aW9uIGRlICIuJGNvbXB0ZXVyLiIgZGl2aXNpb25zIjsKCgoKCSRzdGF0dXMgPSAnT2snOwoJJGFjdGlvbiA9ICdyZXRyaWV2ZV90ZWFtcyc7CgkvL3BpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywkZGVzaWduYXRpb24sJGFjdGlvbik7CgoJCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCdhZG1pbl9kaXZpc2lvbnNfdGFiVG9BZG1pblRhYignY29tcGV0cycpOwoKKi8KIwojIEVPRgojCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_div_results.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwokZGIgPSYgJHRoaXMtPkdldERiKCk7Ci8vYSBmYWlyZSAKaWYoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgVXNlJykpCnsKCSR0aGlzLVNldE1lc3NhZ2UoJ21pc3NpbmdwZXJtaXNzaW9uJyk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdqb3VldXJzJyk7Cn0KLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7Ci8vbWV0dHJlIGxlcyBhdXRvcmlzYXRpb25zCi8vc2kgcGFzIGRlIHJlY29yZF9pZCByZWRpcmVjdGlvbgokc2Fpc29uID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwokZGVzaWduYXRpb24gPSAnJzsKJGlkZXByZXV2ZSA9ICcnOwokaWRkaXZpc2lvbiA9ICcnOwokZGlyZWN0aW9uID0gJyc7CiRpbmRpdnMgPSBpc3NldCgkcGFyYW1zWydpbmRpdnMnXSk/JHBhcmFtc1snaW5kaXZzJ106MTsKLy9lY2hvICJsZSB0b3VyIGVzdCBpbmRpdmlkdWVsID8gOiAiLiRpbmRpdnM7CiRlcnJvciA9IDA7IC8vb24gaW5zdGFuY2llIHVuIGNvbXB0ZXVyIGQnZXJyZXVycwoKLy9vbiB2w6lyaWZpZSBxdWUgY2VzIHBhcmFtw6h0cmVzIHNvbnQgY29ycmVjdGVtZW50IHJlbnNlaWduw6lzCgppZihpc3NldCgkcGFyYW1zWydpZGVwcmV1dmUnXSkgJiYgJHBhcmFtc1snaWRlcHJldXZlJ10gIT0gJycpCnsKCSRpZGVwcmV1dmUgPSAkcGFyYW1zWydpZGVwcmV1dmUnXTsKfQplbHNlCnsKCSRlcnJvcisrOwp9CmlmKGlzc2V0KCRwYXJhbXNbJ2lkZGl2aXNpb24nXSkgJiYgJHBhcmFtc1snaWRkaXZpc2lvbiddICE9ICcnKQp7CgkkaWRkaXZpc2lvbiA9ICRwYXJhbXNbJ2lkZGl2aXNpb24nXTsKfQplbHNlCnsKCSRlcnJvcisrOwp9CmlmKGlzc2V0KCRwYXJhbXNbJ2RpcmVjdGlvbiddKSAmJiAkcGFyYW1zWydkaXJlY3Rpb24nXSAhPSAnJykKewoJJGRpcmVjdGlvbiA9ICRwYXJhbXNbJ2RpcmVjdGlvbiddOwp9CmVsc2UKewoJJGVycm9yKys7Cn0KaWYoaXNzZXQoJHBhcmFtc1snaWRvcmdhJ10pICYmICRwYXJhbXNbJ2lkb3JnYSddICE9ICcnKQp7CgkkaWRvcmdhID0gJHBhcmFtc1snaWRvcmdhJ107Cn0KLyoKaWYoaXNzZXQoJHBhcmFtc1snaW5kaXZzJ10pICYmICRwYXJhbXNbJ2luZGl2cyddICE9ICcnKQp7CgkkaW5kaXZzID0gJHBhcmFtc1snaW5kaXZzJ107Cn0KZWxzZQp7CgkkZXJyb3IrKzsKfQoqLwppZigkZXJyb3IgPjApCnsKCSRkZXNpZ25hdGlvbi49ICJQYXJhbcOodHJlcyBtYW5xdWFudHMiOwoJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignaW5kaXZzJyk7Cn0KLy9vbiBpbnN0YW5jaWUgbGEgY2xhc3NlIHNlcnZpY2VuCiRzZXJ2aWNlID0gbmV3IFNlcnZpY2VuKCk7CgoJJHBhZ2UgPSAieG1sX3Jlc3VsdF9pbmRpdiI7CgkkdmFyID0iZXByPSIuJGlkZXByZXV2ZS4iJnJlc19kaXZpc2lvbj0iLiRpZGRpdmlzaW9uOwoJCglpZigkZGlyZWN0aW9uID09J3RvdXInKQoJewoJCS8vb24gZG9pdCByw6ljdXDDqXJlciBsZSBsaWVuIGR1IGdyb3VwZSBkZXB1aXMgbGEgRkZUVAoKCgkJJHZhci49IiZhY3Rpb249cG91bGUiOwoKCQkkbGllbiA9ICRzZXJ2aWNlLT5HZXRMaW5rKCRwYWdlLCAkdmFyKTsKCQkkeG1sID0gc2ltcGxleG1sX2xvYWRfc3RyaW5nKCRsaWVuLCAnU2ltcGxlWE1MRWxlbWVudCcsIExJQlhNTF9OT0NEQVRBKTsKCQkvL3Zhcl9kdW1wKCR4bWwpOwoJCWlmKCR4bWwgPT09IEZBTFNFKQoJCXsKCQkJLy9sZSBzZXJ2aWNlIGVzdCBjb3Vww6kKCQkJJGFycmF5ID0gMDsKCQkJJGxpZ25lcyA9IDA7CgkJfQoJCWVsc2UKCQl7CgkJCSRhcnJheSA9IGpzb25fZGVjb2RlKGpzb25fZW5jb2RlKChhcnJheSkkeG1sKSwgVFJVRSk7CgkJCSRsaWduZXMgPSBjb3VudCgkYXJyYXlbJ3RvdXInXSk7CgkJfQoJCS8vZWNobyAibGUgbmIgZGUgbGlnbmVzIGVzdCA6ICIuJGxpZ25lczsKCQlmb3JlYWNoKCR4bWwgYXMgJHZhbHVlKQoJCXsKCQkJLy8kbGliZWxsZSA9ICR0YWJbJ2xpYmVsbGUnXTsKCQkJLy8kbGllbiA9ICR0YWJbJ2xpZW4nXTsKCQkJJGxpYmVsbGUgPSBodG1sZW50aXRpZXMoJHZhbHVlLT5saWJlbGxlKTsKCQkJLy9vbiB2YSBleHRyYWlyZSBsZSB0b3VyCgkJCSR0b3VyMSA9IGV4cGxvZGUoIiAiLCRsaWJlbGxlKTsKCQkJJHRvdXIyID0gdHJpbSgkdG91cjFbMF0sJ1QnKTsKCgkJCSRsaWVuID0gaHRtbGVudGl0aWVzKCR2YWx1ZS0+bGllbik7CgkJCSR0YWIxID0gZXhwbG9kZSgiJiIsJHZhbHVlLT5saWVuKTsKCgkJCSR0YWJsZWF1ID0gdHJpbSgkdGFiMVsyXSwgJ2N4X3RhYmxlYXU9Jyk7CgoJCQlpZigkdGFibGVhdSAhPSAnJykKCQkJewoJCQkJCgkJCQkvL09uIGEgcsOpY3Vww6lyw6kgbGVzIMOpbMOpbWVudHMsIG9uIHBldXQgZmFpcmUgbCdpbnNlcnRpb24gZGFucyBub3RyZSBiZGQKCQkJCS8vb24gdmEgZCdhYm9yZCB2w6lyaWZpZXIgc2kgY2VzIMOpbMOpbWVudHMgc29udCBwcsOpc2VudHMgb3Ugb24gY3LDqcOpIHVuIGluZGV4IHN1ciBsYSB0YWJsZQoJCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfdG91cnMgKGlkLCBpZGVwcmV1dmUsaWRkaXZpc2lvbixsaWJlbGxlLCB0b3VyLCB0YWJsZWF1LCBsaWVuLHNhaXNvbikgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGlkZXByZXV2ZSwkaWRkaXZpc2lvbiwkbGliZWxsZSwkdG91cjIsICR0YWJsZWF1LCRsaWVuLCRzYWlzb24pKTsKCgkJCQkvL2V0IHNpIG9uIGNvbnRpbnVhaXQgPwoJCQkJLy9yZXByZW5kcmUgbGVzIGluZm9zIGNpIGRlc3N1cyBwb3VyIGxlcyB0cmFpdGVyICEKCQkJCS8vb24gcG91cnJhaXQgcHLDqXBhcmVyIGxlcyBkaWZmw6lyZW50cyB0YWdzIDogcG91bGUsIGNsYXNzZW1lbnQsIHBhcnRpZS4KCQkJCS8vb24gbWV0IMOgIGpvdXIgbGEgdGFibGUgZGl2aXNpb25zIHBvdXIgZGlyZSBxdSdvbiBhIGJpZW4gdXBsb2Fkw6kKCQkJCSR1cGxvYWRlZCA9IDE7CgkJCQkkcXVlcnkyID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2aXNpb25zIFNFVCB1cGxvYWRlZCA9ID8gV0hFUkUgaWRkaXZpc2lvbiA9ID8gQU5EIHNhaXNvbiA9ID8iOwoJCQkJJGRicmVzdWx0MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCBhcnJheSgkdXBsb2FkZWQsICRpZGRpdmlzaW9uLCAkc2Fpc29uKSk7CgkJCX0KCgoKCgkJfQoJCSRkZXNpZ25hdGlvbi49IlRvdXIocykgaW5zw6lyw6kocykiOwoJCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCdhZG1pbl9kaXZpc2lvbnNfdGFiJywgJHJldHVybmlkLCBhcnJheSgiaWRlcHJldXZlIj0+JGlkZXByZXV2ZSwgImlkb3JnYSI9PiRpZG9yZ2EpKTsKCgoKCgl9CgllbHNlaWYoJGRpcmVjdGlvbiA9PSAnY2xhc3NlbWVudCcpCgl7CgkJLy9vbiByw6ljdXDDqHJlIGxlIGNsYXNzZW1lbnQKCQkkdmFyLj0iJmFjdGlvbj1jbGFzc2VtZW50IjsKCQkkdGFibGVhdSA9ICcnOwoJCS8vZWNobyAkdmFyOwoJCWlmKGlzc2V0KCRwYXJhbXNbJ3RhYmxlYXUnXSkgJiYgJHBhcmFtc1sndGFibGVhdSddICE9ICcnKQoJCXsKCQkJJHRhYmxlYXUgPSAkcGFyYW1zWyd0YWJsZWF1J107CgkJCSR2YXIuPSImY3hfdGFibGVhdT0iLiR0YWJsZWF1OwoJCQkvL2VjaG8gJHZhcjsKCQl9CgkJZWxzZQoJCXsKCQkJJGVycm9yKys7CgkJfQoJCS8vZWNobyAibGUgdGFibGVhdSBlc3QgOiAiLiR0YWJsZWF1OwoJCSR0b3VyID0gJyc7CgkJaWYoaXNzZXQoJHBhcmFtc1sndG91ciddKSAmJiAkcGFyYW1zWyd0b3VyJ10gIT0gJycpCgkJewoJCQkkdG91ciA9ICRwYXJhbXNbJ3RvdXInXTsKCQl9CgkJCgoJCSRsaWVuID0gJHNlcnZpY2UtPkdldExpbmsoJHBhZ2UsJHZhcik7CgkJJHhtbCA9IHNpbXBsZXhtbF9sb2FkX3N0cmluZygkbGllbiwgJ1NpbXBsZVhNTEVsZW1lbnQnLCBMSUJYTUxfTk9DREFUQSk7CgkJLy9lY2hvICI8cHJlPiIudmFyX2R1bXAoJGRhdGEpLiI8L3ByZT4iOwoJCS8vdmFyX2R1bXAoJHhtbCk7CgkJaWYoJHhtbCA9PT0gRkFMU0UpCgkJewoJCQkkZGVzaWduYXRpb24uPSJQYXMgZW5jb3JlIGRlIHLDqXN1bHRhdHMgZGlzcG9uaWJsZXMiOwoJCQkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkJCS8vJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignZGl2aXNpb25zJyk7CgkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsJ2FkbWluX3BvdWxlcycsJHJldHVybmlkLGFycmF5KCJpZGVwcmV1dmUiPT4kaWRlcHJldXZlLCJpZGRpdmlzaW9uIj0+JGlkZGl2aXNpb24sInRhYmxlYXUiPT4kdGFibGVhdSwidG91ciI9PiR0b3VyLCJpZG9yZ2EiPT4kaWRvcmdhKSk7CgkJfQoJCQoJCQkkYXJyYXkgPSBqc29uX2RlY29kZShqc29uX2VuY29kZSgoYXJyYXkpJHhtbCksIFRSVUUpOwoJCQkkbGlnbmVzID0gY291bnQoJGFycmF5WydjbGFzc2VtZW50J10pOwoJCQoJCWlmKCRsaWduZXMgPT0gMCkKCQl7CgkJCSRkZXNpZ25hdGlvbi49IlBhcyBlbmNvcmUgZGUgcsOpc3VsdGF0cyBkaXNwb25pYmxlcyI7CgkJCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCQkJLy8kdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4yJywkcmV0dXJuaWQpOwoJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCdhZG1pbl9wb3VsZXMnLCRyZXR1cm5pZCxhcnJheSgiaWRlcHJldXZlIj0+JGlkZXByZXV2ZSwiaWRkaXZpc2lvbiI9PiRpZGRpdmlzaW9uLCJ0YWJsZWF1Ij0+JHRhYmxlYXUsInRvdXIiPT4kdG91ciwiaWRvcmdhIj0+JGlkb3JnYSkpOwoJCX0KCQkKCQkKCQkKCgkJZm9yZWFjaCgkeG1sIGFzICR2YWx1ZSkKCQl7CgkJCS8vJGxpYmVsbGUgPSAkdGFiWydsaWJlbGxlJ107CgkJCS8vJGxpZW4gPSAkdGFiWydsaWVuJ107CgkJCSRyYW5nID0gaHRtbGVudGl0aWVzKCR2YWx1ZS0+cmFuZyk7CgkJCSRub20gPSBodG1sZW50aXRpZXMoJHZhbHVlLT5ub20pOwoJCQkkY2x0ID0gaHRtbGVudGl0aWVzKCR2YWx1ZS0+Y2x0KTsKCQkJJGNsdWIgPSBodG1sZW50aXRpZXMoJHZhbHVlLT5jbHViKTsKCQkJCgkJCS8vb24gZmFpdCB1bmUgY29uZGl0aW9ubmVsbGUgcG91ciByw6ljdXDDqXJlciBsYSBsaWNlbmNlIGR1IGpvdWV1ciBkdSBjbHViCgkJCWlmKCRjbHViID09ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdub21fZXF1aXBlcycpKQoJCQl7CgkJCQkvL8OnYSBtYXRjaCAhIQoJCQl9CgkJCSRwb2ludHMgPSBodG1sZW50aXRpZXMoJHZhbHVlLT5wb2ludHMpOwoKCQkJLy9PbiBhIHLDqWN1cMOpcsOpIGxlcyDDqWzDqW1lbnRzLCBvbiBwZXV0IGZhaXJlIGwnaW5zZXJ0aW9uIGRhbnMgbm90cmUgYmRkCQkJCgkJCS8vT24gZmFpdCB1bmUgY29uZGl0aW9ubmVsbGUgcG91ciBpbmNsdXJlIHVuaXF1ZW1lbnQgbGVzIGdlbnMgZHUgY2x1YiA/CgkJCS8vaWwgZmFpdCBmYWlyZSB1bmUgbm91dmVsbGUgcHLDqWbDqXJlbmNlCgkJCQoJCQkKCQkJCgkJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X2NsYXNzZW1lbnQgKGlkLCBpZGVwcmV1dmUsaWRkaXZpc2lvbix0YWJsZWF1LHRvdXIscmFuZywgbm9tLGNsdCxjbHViLHBvaW50cywgc2Fpc29uKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkJCS8vZWNobyAkcXVlcnk7CgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpZGVwcmV1dmUsJGlkZGl2aXNpb24sJHRhYmxlYXUsJHRvdXIsJHJhbmcsICRub20sICRjbHQsICRjbHViLCAkcG9pbnRzLCRzYWlzb24pKTsKCgkJCWlmKCEkZGJyZXN1bHQpCgkJCXsKCQkJCSRkZXNpZ25hdGlvbiAuPSAkZGItPkVycm9yTXNnKCk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkvL2xhIHJlcXVldGUgYSBmb25jdGlvbm7DqS4gT24gbWV0IGxlIGNsYXNzZW1lbnQgY29tbWUgdXBsb2Fkw6kKCQkJCSRxdWVyeTIgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfdG91cnMgU0VUIHVwbG9hZGVkX2NsYXNzZW1lbnQgPSAnMScgV0hFUkUgaWRlcHJldXZlID0gPyBBTkQgaWRkaXZpc2lvbiA9ID8gQU5EIHRhYmxlYXUgPSA/IjsKCQkJCSRkYnJlc3VsdDIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJGlkZXByZXV2ZSwkaWRkaXZpc2lvbiwkdGFibGVhdSkpOwoJCQl9CgoKCQl9CgkJJGRlc2lnbmF0aW9uLj0iQ2xhc3NlbWVudChzKSBpbnPDqXLDqShzKSI7CgkJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsJ2FkbWluX2Rpdl9jbGFzc2VtZW50JywkcmV0dXJuaWQsYXJyYXkoImlkZXByZXV2ZSI9PiRpZGVwcmV1dmUsImlkZGl2aXNpb24iPT4kaWRkaXZpc2lvbiwidGFibGVhdSI9PiR0YWJsZWF1LCJ0b3VyIj0+JHRvdXIsImlkb3JnYSI9PiRpZG9yZ2EsImVzc2FpIj0+IjEiKSk7CgoJfQoJZWxzZWlmKCRkaXJlY3Rpb24gPT0gJ3BhcnRpZScpCgl7CgkJJHZhci49IiZhY3Rpb249cGFydGllIjsKCQkkdGFibGVhdSA9ICcnOwoJCQoJCQoJCWlmKGlzc2V0KCRwYXJhbXNbJ3RhYmxlYXUnXSkgJiYgJHBhcmFtc1sndGFibGVhdSddICE9ICcnKQoJCXsKCQkJJHRhYmxlYXUgPSAkcGFyYW1zWyd0YWJsZWF1J107CgkJCSR2YXIuPSImY3hfdGFibGVhdT0iLiR0YWJsZWF1OwoJCX0KCQllbHNlCgkJewoJCQkkZXJyb3IrKzsKCQl9CgkJJHRvdXIgPSAnJzsKCQlpZihpc3NldCgkcGFyYW1zWyd0b3VyJ10pICYmICRwYXJhbXNbJ3RvdXInXSAhPSAnJykKCQl7CgkJCSR0b3VyID0gJHBhcmFtc1sndG91ciddOwoJCX0KCQkvL2VjaG8gJHZhcjsKCQkkbGllbiA9ICRzZXJ2aWNlLT5HZXRMaW5rKCRwYWdlLCR2YXIpOwoJCSR4bWwgPSBzaW1wbGV4bWxfbG9hZF9zdHJpbmcoJGxpZW4sICdTaW1wbGVYTUxFbGVtZW50JywgTElCWE1MX05PQ0RBVEEpOwoJCS8vZWNobyAiPHByZT4iLnZhcl9kdW1wKCRkYXRhKS4iPC9wcmU+IjsKCQkvL3Zhcl9kdW1wKCR4bWwpOwoJCWlmKCR4bWwgPT09IEZBTFNFKQoJCXsKCQkJJGRlc2lnbmF0aW9uLj0iUGFzIGVuY29yZSBkZSBwYXJ0aWVzIGRpc3BvbmlibGVzIjsKCQkJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCdhZG1pbl9wb3VsZXMnLCRyZXR1cm5pZCxhcnJheSgiaWRlcHJldXZlIj0+JGlkZXByZXV2ZSwiaWRkaXZpc2lvbiI9PiRpZGRpdmlzaW9uLCJ0YWJsZWF1Ij0+JHRhYmxlYXUsInRvdXIiPT4kdG91ciwiaWRvcmdhIj0+JGlkb3JnYSkpOwoJCX0KCQkKCQkJJGFycmF5ID0ganNvbl9kZWNvZGUoanNvbl9lbmNvZGUoKGFycmF5KSR4bWwpLCBUUlVFKTsKCQkJJGxpZ25lcyA9IGNvdW50KCRhcnJheVsncGFydGllJ10pOwoJCQoJCWlmKCRsaWduZXMgPT0gMCkKCQl7CgkJCSRkZXNpZ25hdGlvbi49IlBhcyBlbmNvcmUgZGUgcGFydGllcyBkaXNwb25pYmxlcyI7CgkJCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCQkJLy8kdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4yJywkcmV0dXJuaWQpOwoJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCdhZG1pbl9wb3VsZXMnLCRyZXR1cm5pZCxhcnJheSgiaWRlcHJldXZlIj0+JGlkZXByZXV2ZSwiaWRkaXZpc2lvbiI9PiRpZGRpdmlzaW9uLCJ0YWJsZWF1Ij0+JHRhYmxlYXUsInRvdXIiPT4kdG91ciwiaWRvcmdhIj0+JGlkb3JnYSkpOwoJCX0KCQkKCQkKCQlmb3JlYWNoKCR4bWwgYXMgJHZhbHVlKQoJCXsKCQkJLy8kbGliZWxsZSA9ICR0YWJbJ2xpYmVsbGUnXTsKCQkJLy8kbGllbiA9ICR0YWJbJ2xpZW4nXTsKCQkJJGxpYmVsbGUgPSBodG1sZW50aXRpZXMoJHZhbHVlLT5saWJlbGxlKTsKCQkJJHZhaW4gPSBodG1sZW50aXRpZXMoJHZhbHVlLT52YWluKTsKCQkJJHBlcmQgPSBodG1sZW50aXRpZXMoJHZhbHVlLT5wZXJkKTsKCQkJJGZvcmZhaXQgPSBodG1sZW50aXRpZXMoJHZhbHVlLT5mb3JmYWl0KTsKCQkJCgkJCQoJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2Rpdl9wYXJ0aWVzIChpZCwgaWRlcHJldXZlLGlkZGl2aXNpb24sdGFibGVhdSxsaWJlbGxlLCB2YWluLHBlcmQsZm9yZmFpdCwgc2Fpc29uKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkJCS8vZWNobyAkcXVlcnk7CgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpZGVwcmV1dmUsJGlkZGl2aXNpb24sJHRhYmxlYXUsJGxpYmVsbGUsICR2YWluLCAkcGVyZCwgJGZvcmZhaXQsJHNhaXNvbikpOwoKCQkJaWYoISRkYnJlc3VsdCkKCQkJewoJCQkJJGRlc2lnbmF0aW9uIC49ICRkYi0+RXJyb3JNc2coKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCS8vbGEgcmVxdWV0ZSBhIGZvbmN0aW9ubsOpLCBvbiBwZXV0IG1ldHRyZSBsZSBzdGF0dXQgZHUgdG91ciBhICJ1cGxvYWTDqSIKCQkJCSRxdWVyeTIgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfdG91cnMgU0VUIHVwbG9hZGVkID0gMSBXSEVSRSB0YWJsZWF1ID0gPyI7CgkJCQkkZGJyZXN1bHQyID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsYXJyYXkoJHRhYmxlYXUpKTsKCQkJfQoKCgkJfQoJCSRkZXNpZ25hdGlvbi49IlBhcnRpZShzKSBpbnPDqXLDqWUocykiOwoJCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCQkvLyR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbjInLCRyZXR1cm5pZCk7CgkJJHRoaXMtPlJlZGlyZWN0KCRpZCwnYWRtaW5fZGl2X3BhcnRpZXMnLCRyZXR1cm5pZCxhcnJheSgiaWRlcHJldXZlIj0+JGlkZXByZXV2ZSwiaWRkaXZpc2lvbiI9PiRpZGRpdmlzaW9uLCJ0YWJsZWF1Ij0+JHRhYmxlYXUsInRvdXIiPT4kdG91ciwiaWRvcmdhIj0+JGlkb3JnYSkpOwoJfQoJLy9vbiB2YSB1dGlsaXNlciBjZXR0ZSB2YXJpYWJsZSAocmVjb3JkX2lkKSBjb21tZSBjbMOpIHNlY29uZGFpcmUgZGFucyBsYSBub3V2ZWxsZSB0YWJsZQoKCgovL2VuIGZvbmN0aW9uIGRlIGxhIHZhbGV1ciBkZSBsYSB2YXJpYWJsZSBhY3Rpb24gb24gZMOpZmluaXQgZGlmZsOpcm5ldHMgc2PDqW5hcmlpLgoKCgoKCQkJCQkJCgoKIwojIEVPRgojCi8vZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdkZXRhaWxzX3JlbmNvbnRyZS50cGwnKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_div_tours.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwokZGIgPSYgJHRoaXMtPkdldERiKCk7Ci8vYSBmYWlyZSAKaWYoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgVXNlJykpCnsKCSR0aGlzLVNldE1lc3NhZ2UoJ21pc3NpbmdwZXJtaXNzaW9uJyk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdqb3VldXJzJyk7Cn0KLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7Ci8vbWV0dHJlIGxlcyBhdXRvcmlzYXRpb25zCi8vc2kgcGFzIGRlIHJlY29yZF9pZCByZWRpcmVjdGlvbgokc2Fpc29uID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwokZGVzaWduYXRpb24gPSAnJzsKJGlkZXByZXV2ZSA9ICcnOwokaWRkaXZpc2lvbiA9ICcnOwokZGlyZWN0aW9uID0gJyc7CiRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKJGluZGl2cyA9IGlzc2V0KCRwYXJhbXNbJ2luZGl2cyddKT8kcGFyYW1zWydpbmRpdnMnXToxOwovL2VjaG8gImxlIHRvdXIgZXN0IGluZGl2aWR1ZWwgPyA6ICIuJGluZGl2czsKJGVycm9yID0gMDsgLy9vbiBpbnN0YW5jaWUgdW4gY29tcHRldXIgZCdlcnJldXJzCgoKaWYoaXNzZXQoJHBhcmFtc1snYWxsJ10pICYmICRwYXJhbXNbJ2FsbCddICE9JycpCnsKCSRhbGwgPSAkcGFyYW1zWydhbGwnXTsKCS8vb24gcsOpY3Vww6hyZSB0b3VzIGxlcyB0b3VycyBwb3NzaWJsZXMKCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZpc2lvbnMgV0hFUkUgc2Fpc29uID0gPyBBTkQgdXBsb2FkZWQgSVMgTlVMTCI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRzYWlzb24pKTsKCQoJaWYoJGRicmVzdWx0ICYmJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4wKQoJewoJCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkkaWRlcHJldXZlID0gJHJvd1snaWRlcHJldXZlJ107CgkJCSRpZGRpdmlzaW9uID0gJHJvd1snaWRkaXZpc2lvbiddOwoJCQkkc2VydmljZSA9IG5ldyByZXRyaWV2ZV9vcHMoKTsKCQkJJHJldHJpZXZlX29wcyA9ICRzZXJ2aWNlLT5yZXRyaWV2ZV9kaXZfdG91cnMoJGlkZXByZXV2ZSwkaWRkaXZpc2lvbik7CgkJfQoJfQp9CmVsc2UKewoJaWYoaXNzZXQoJHBhcmFtc1snaWRlcHJldXZlJ10pICYmICRwYXJhbXNbJ2lkZXByZXV2ZSddICE9ICcnKQoJewoJCSRpZGVwcmV1dmUgPSAkcGFyYW1zWydpZGVwcmV1dmUnXTsKCX0KCWVsc2UKCXsKCQkkZXJyb3IrKzsKCX0KCWlmKGlzc2V0KCRwYXJhbXNbJ2lkZGl2aXNpb24nXSkgJiYgJHBhcmFtc1snaWRkaXZpc2lvbiddICE9ICcnKQoJewoJCSRpZGRpdmlzaW9uID0gJHBhcmFtc1snaWRkaXZpc2lvbiddOwoJfQoJZWxzZQoJewoJCSRlcnJvcisrOwoJfQoJaWYoaXNzZXQoJHBhcmFtc1snZGlyZWN0aW9uJ10pICYmICRwYXJhbXNbJ2RpcmVjdGlvbiddICE9ICcnKQoJewoJCSRkaXJlY3Rpb24gPSAkcGFyYW1zWydkaXJlY3Rpb24nXTsKCX0KCWVsc2UKCXsKCQkkZXJyb3IrKzsKCX0KCWlmKGlzc2V0KCRwYXJhbXNbJ2lkb3JnYSddKSAmJiAkcGFyYW1zWydpZG9yZ2EnXSAhPSAnJykKCXsKCQkkaWRvcmdhID0gJHBhcmFtc1snaWRvcmdhJ107Cgl9CgkKCQoJaWYoJGVycm9yID4wKQoJewoJCSRkZXNpZ25hdGlvbi49ICJQYXJhbcOodHJlcyBtYW5xdWFudHMiOwoJCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdpbmRpdnMnKTsKCX0KCQoJLy9vbiBpbnN0YW5jaWUgbGEgY2xhc3NlIHNlcnZpY2VuCgkkc2VydmljZSA9IG5ldyBTZXJ2aWNlbigpOwoKCQkkcGFnZSA9ICJ4bWxfcmVzdWx0X2luZGl2IjsKCQkkdmFyID0iZXByPSIuJGlkZXByZXV2ZS4iJnJlc19kaXZpc2lvbj0iLiRpZGRpdmlzaW9uOwoKCQoJCQkvL29uIGRvaXQgcsOpY3Vww6lyZXIgbGUgbGllbiBkdSBncm91cGUgZGVwdWlzIGxhIEZGVFQKCgoJCQkkdmFyLj0iJmFjdGlvbj1wb3VsZSI7CgoJCQkkbGllbiA9ICRzZXJ2aWNlLT5HZXRMaW5rKCRwYWdlLCAkdmFyKTsKCQkJJHhtbCA9IHNpbXBsZXhtbF9sb2FkX3N0cmluZygkbGllbiwgJ1NpbXBsZVhNTEVsZW1lbnQnLCBMSUJYTUxfTk9DREFUQSk7CgkJCS8vdmFyX2R1bXAoJHhtbCk7CgkJCWlmKCR4bWwgPT09IEZBTFNFKQoJCQl7CgkJCQkvL2xlIHNlcnZpY2UgZXN0IGNvdXDDqQoJCQkJJGFycmF5ID0gMDsKCQkJCSRsaWduZXMgPSAwOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJGFycmF5ID0ganNvbl9kZWNvZGUoanNvbl9lbmNvZGUoKGFycmF5KSR4bWwpLCBUUlVFKTsKCQkJCSRsaWduZXMgPSBjb3VudCgkYXJyYXlbJ3RvdXInXSk7CgkJCX0KCQkJLy9lY2hvICJsZSBuYiBkZSBsaWduZXMgZXN0IDogIi4kbGlnbmVzOwoJCQlmb3JlYWNoKCR4bWwgYXMgJHZhbHVlKQoJCQl7CgkJCQkvLyRsaWJlbGxlID0gJHRhYlsnbGliZWxsZSddOwoJCQkJLy8kbGllbiA9ICR0YWJbJ2xpZW4nXTsKCQkJCSRpID0gMDsgLy9vbiBpbnPDqHJlIHVuIGNvbXB0ZXVyCgkJCQkkbGliZWxsZSA9IGh0bWxlbnRpdGllcygkdmFsdWUtPmxpYmVsbGUpOwoJCQkJLy9vbiB2YSBleHRyYWlyZSBsZSB0b3VyCgkJCQkkdG91cjEgPSBleHBsb2RlKCIgIiwkbGliZWxsZSk7CgkJCQkkdG91cjIgPSB0cmltKCR0b3VyMVswXSwnVCcpOwoKCQkJCSRsaWVuID0gaHRtbGVudGl0aWVzKCR2YWx1ZS0+bGllbik7CgkJCQkkdGFiMSA9IGV4cGxvZGUoIiYiLCR2YWx1ZS0+bGllbik7CgoJCQkJJHRhYmxlYXUgPSB0cmltKCR0YWIxWzJdLCAnY3hfdGFibGVhdT0nKTsKCgkJCQlpZigkdGFibGVhdSAhPSAnJykKCQkJCXsKCgkJCQkJLy9PbiBhIHLDqWN1cMOpcsOpIGxlcyDDqWzDqW1lbnRzLCBvbiBwZXV0IGZhaXJlIGwnaW5zZXJ0aW9uIGRhbnMgbm90cmUgYmRkCgkJCQkJLy9vbiB2YSBkJ2Fib3JkIHbDqXJpZmllciBzaSBjZXMgw6lsw6ltZW50cyBzb250IHByw6lzZW50cyBvdSBvbiBjcsOpw6kgdW4gaW5kZXggc3VyIGxhIHRhYmxlCgkJCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfdG91cnMgKGlkLCBpZGVwcmV1dmUsaWRkaXZpc2lvbixsaWJlbGxlLCB0b3VyLCB0YWJsZWF1LCBsaWVuLHNhaXNvbikgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpZGVwcmV1dmUsJGlkZGl2aXNpb24sJGxpYmVsbGUsJHRvdXIyLCAkdGFibGVhdSwkbGllbiwkc2Fpc29uKSk7CgkJCQkJJGkrKzsKCQkJCQkvL2V0IHNpIG9uIGNvbnRpbnVhaXQgPwoJCQkJCS8vcmVwcmVuZHJlIGxlcyBpbmZvcyBjaSBkZXNzdXMgcG91ciBsZXMgdHJhaXRlciAhCgkJCQkJLy9vbiBwb3VycmFpdCBwcsOpcGFyZXIgbGVzIGRpZmbDqXJlbnRzIHRhZ3MgOiBwb3VsZSwgY2xhc3NlbWVudCwgcGFydGllLgoJCQkJCS8vb24gbWV0IMOgIGpvdXIgbGEgdGFibGUgZGl2aXNpb25zIHBvdXIgZGlyZSBxdSdvbiBhIGJpZW4gdXBsb2Fkw6kKCQkJCQkkdXBsb2FkZWQgPSAxOwoJCQkJCSRxdWVyeTIgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZpc2lvbnMgU0VUIHVwbG9hZGVkID0gPyBXSEVSRSBpZGRpdmlzaW9uID0gPyBBTkQgc2Fpc29uID0gPyI7CgkJCQkJJGRicmVzdWx0MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCBhcnJheSgkdXBsb2FkZWQsICRpZGRpdmlzaW9uLCAkc2Fpc29uKSk7CgoJCQkJfQoKCgoKCQkJfQoJCQkkc3RhdHVzID0gJ09rJzsKCQkJJGFjdGlvbiA9ICdyZXRyaWV2ZV9kaXZfdG91cnMnOwoJCQkkZGVzaWduYXRpb24gPSAkaS4iIHRvdXIocykgaW5zw6lyw6kocykgcG91ciBsXCfDqXByZXV2ZSAiLiRpZGVwcmV1dmU7CgkJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywgJGRlc2lnbmF0aW9uLCRhY3Rpb24pOwoJCQkkZGVzaWduYXRpb24uPSJUb3VyKHMpIGluc8OpcsOpKHMpIjsKCQkJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQpOwoKCgoKCQkKCgkJCgkJLy9vbiB2YSB1dGlsaXNlciBjZXR0ZSB2YXJpYWJsZSAocmVjb3JkX2lkKSBjb21tZSBjbMOpIHNlY29uZGFpcmUgZGFucyBsYSBub3V2ZWxsZSB0YWJsZQoKCgoJLy9lbiBmb25jdGlvbiBkZSBsYSB2YWxldXIgZGUgbGEgdmFyaWFibGUgYWN0aW9uIG9uIGTDqWZpbml0IGRpZmbDqXJuZXRzIHNjw6luYXJpaS4KCgoKCQp9CgoKCgkJCQkJCQoKCiMKIyBFT0YKIwovL2VjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZGV0YWlsc19yZW5jb250cmUudHBsJyk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_indivs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwokZGIgPSYgJHRoaXMtPkdldERiKCk7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwovL29uIHbDqXJpZmllIGxlcyBwZXJtaXNzaW9ucwppZighJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBVc2UnKSkKewoJJHRoaXMtPlNldE1lc3NhZ2UoJ1Blcm1pc3Npb24gbWFucXVhbnRlJyk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdjb21wZXRzJyk7Cn0KJGVycm9yID0gMDsKLy9vbiB2w6lyaWZpZSBsZXMgdmFyaWFibGVzIHJlw6d1ZXMKJHR5cGVfY29tcGV0ID0gJyc7CgppZihpc3NldCgkcGFyYW1zWydpZGVwcmV1dmUnXSkgJiYgJHBhcmFtc1snaWRlcHJldXZlJ10gIT0nJykKewoJJGlkZXByZXV2ZSA9ICRwYXJhbXNbJ2lkZXByZXV2ZSddOwp9CmVsc2UKewoJJGVycm9yKys7Cn0KJGNvZWZmaWNpZW50ID0gJyc7CmlmKGlzc2V0KCRwYXJhbXNbJ2NvZWZmaWNpZW50J10pICYmICRwYXJhbXNbJ2NvZWZmaWNpZW50J10gIT0nJykKewoJJGNvZWZmaWNpZW50ID0gJHBhcmFtc1snY29lZmZpY2llbnQnXTsKfQplbHNlCnsKCSRlcnJvcisrOwp9CmlmKCRlcnJvcj4wKQp7CgkkdGhpcy0+U2V0TWVzc2FnZSgnUGFyYW3DqHRyZXMgbWFucXVhbnRzJyk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdjYWxlbmRyaWVyJyk7Cn0KLy9vbiBmYWl0IGxhIHJlcXVldGUgcG91ciByZXRpcmVyIHRvdXRlcyBsZXMgbGljZW5jZXMgaW5zY3JpdGVzIMOgIGNldHRlIGNvbXBldAokcXVlcnkgPSAiU0VMRUNUIGxpY2VuY2UgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGljaXBlIFdIRVJFIGlkZXByZXV2ZSA9ID8iOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaWRlcHJldXZlKSk7CgppZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCnsKCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgl7CgkJJGxpY2VuY2UgPSAkcm93WydsaWNlbmNlJ107CgkJcGluZ19hZG1pbl9vcHM6OnJldHJpZXZlX3BhcnRpZXNfc3BpZCgkbGljZW5jZSk7Cgl9Cn0KCiR0aGlzLT5TZXRNZXNzYWdlKCdSZXRyb3V2ZXogbGVzIGluZm9zIGRhbnMgbGUgam91cm5hbCcpOwokdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdjYWxlbmRyaWVyJyk7CiMKI0VPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_organismes.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAgICBQcmVtacOocmUgw6l0YXBlIGRlIHLDqWN1cMOpcmF0aW9uIGRlcyBvcmdhbmlzbWVzICAgICAgICAgICAgICAjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgoKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCi8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwovL3JlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmNhbGN1bHMucGhwJyk7CiRkZXNpZ25hdGlvbiA9ICIiOwovL29uIHbDqXJpZmllIHF1ZSB0b3VzIGxlcyBwYXJhbcOodHJlcyBuw6ljZXNzYWlyZXMgc29udCByZW5zZWlnbsOpcyAodHlwZSkKJHRhYmxlYXUgPSBhcnJheSgnRicsJ1onLCdMJywnRCcpOwovL29uIGluc3RhbmNpZSBsYSBjbGFzc2Ugc2VydmljZW4KJHNlcnZpY2UgPSBuZXcgU2VydmljZW4oKTsKJHBhZ2UgPSAieG1sX29yZ2FuaXNtZSI7CmZvcmVhY2goJHRhYmxlYXUgYXMgJHZhbGV1cikKewoJJHZhciA9ICJ0eXBlPSIuJHZhbGV1cjsKCWVjaG8gJHZhcjsKCSRzY29wZSA9ICR2YWxldXI7CgllY2hvICJsYSB2YWxldXIgZXN0IDogIi4kdmFsZXVyOwoJJGxpZW4gPSAkc2VydmljZS0+R2V0TGluaygkcGFnZSwkdmFyKTsKCWVjaG8gJGxpZW47CgkkeG1sID0gc2ltcGxleG1sX2xvYWRfc3RyaW5nKCRsaWVuLCAnU2ltcGxlWE1MRWxlbWVudCcsIExJQlhNTF9OT0NEQVRBKTsKCWlmKCR4bWwgPT09IEZBTFNFKQoJewoJCXZhcl9kdW1wKCR4bWwpOwoJCS8vJHRoaXMtPlNldE1lc3NhZ2UoIkltcG9zc2libGUgZGUgcsOpY3Vww6lyZXIgbGVzIG9yZ2FuaXNtZXMgISIpOwoJCS8vJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignY29uZmlndXJhdGlvbicpOwoJfQoJZWxzZQoJewoJCSRhcnJheSA9IGpzb25fZGVjb2RlKGpzb25fZW5jb2RlKChhcnJheSkkeG1sKSwgVFJVRSk7CgkJLy8vb24gaW5pdGlhbGlzZSB1biBjb21wdGV1ciBnw6luw6lyYWwgJGkKCQkkaT0wOwoJCS8vb24gaW5pdGlhbGlzZSB1biBkZXV4acOobWUgY29tcHRldXIKCQkkY29tcHRldXI9MDsKCgkJCWZvcmVhY2goJHhtbCBhcyAkY2xlID0+JHRhYikKCQkJewoKCQkJCSRpKys7CgkJCQkkaWRvcmdhID0gKGlzc2V0KCR0YWItPmlkKT8iJHRhYi0+aWQiOiIiKTsKCQkJCSRjb2RlICA9IChpc3NldCgkdGFiLT5jb2RlKT8iJHRhYi0+Y29kZSI6IiIpOwoJCQkJJGxpYmVsbGUgPSAoaXNzZXQoJHRhYi0+bGliZWxsZSk/IiR0YWItPmxpYmVsbGUiOiIiKTsKCQkJCS8vIDEtIG9uIHbDqXJpZmllIHNpIGNldHRlIMOpcHJldXZlIGVzdCBkw6lqw6AgZGFucyBsYSBiYXNlCgkJCQkkcXVlcnkgPSAiU0VMRUNUIGlkb3JnYSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19vcmdhbmlzbWVzIFdIRVJFIGlkb3JnYSA9ID8iOwoJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGlkb3JnYSkpOwoKCQkJCQlpZigkZGJyZXN1bHQgICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKSAKCQkJCQl7CgkJCQkJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfb3JnYW5pc21lcyAoaWQsIGxpYmVsbGUsIGlkb3JnYSwgY29kZSwgc2NvcGUpIFZBTFVFUyAoJycsID8sID8sID8sID8pIjsKCQkJCQkJLy9lY2hvICRxdWVyeTsKCQkJCQkJJGNvbXB0ZXVyKys7CgkJCQkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkbGliZWxsZSwkaWRvcmdhLCRjb2RlLCRzY29wZSkpOwoKCQkJCQkJaWYoISRkYnJlc3VsdGF0KQoJCQkJCQl7CgkJCQkJCQkkZGVzaWduYXRpb24gLj0gJGRiLT5FcnJvck1zZygpOwkJCQoJCQkJCQl9CgoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkvL2wnw6lwcmV1dmUgZXN0IGTDqWrDoCByZW5zZWlnbsOpZSwgb24gZmFpdCB1biB1cGRhdGUKCQkJCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfb3JnYW5pc21lcyBTRVQgbGliZWxsZSA9ID8sIGNvZGUgPSA/LCBzY29wZSA9ID8gV0hFUkUgaWRvcmdhID0gPyAiOwoJCQkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGliZWxsZSwkY29kZSwkc2NvcGUsJGlkb3JnYSkpOwoJCQkJCX0vL2ZpbiBkdSBpZiAkZGJyZXN1bHQKCgoJCQl9Ly8gZmluIGR1IGZvcmVhY2gKCQkJCgl9Cgl1bnNldCgkc2NvcGUpOwoJdW5zZXQoJHZhcik7Cgl1bnNldCgkbGllbik7Cgl1bnNldCgkeG1sKTsKfS8vZmluIGR1IHByZW1pZXIgZm9yZWFjaAokZGVzaWduYXRpb24gLj0gIlLDqWN1cMOpcmF0aW9uIGRlICIuJGNvbXB0ZXVyLiIgb3JnYW5pc21lcyI7CgoJCgkKJHN0YXR1cyA9ICdPayc7CiRhY3Rpb24gPSAncmV0cmlldmVfdGVhbXMnOwovL3BpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywkZGVzaWduYXRpb24sJGFjdGlvbik7CgkKCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2NvbmZpZ3VyYXRpb24nKTsKCiMKIyBFT0YKIwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_parties.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgVXNlJykpCnsKCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJykpOwoJcmV0dXJuOwp9CgovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5jYWxjdWxzLnBocCcpOwoKJG5vdyA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpLCAiJyIpOwokbW9pc19jb3VyYW50ID0gZGF0ZSgnbicpOwokYW5uZWVfY291cmFudGUgPSBkYXRlKCdZJyk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CiRsaWNlbmNlID0gJyc7CmlmKGlzc2V0KCRwYXJhbXNbJ2xpY2VuY2UnXSkgJiYgJHBhcmFtc1snbGljZW5jZSddICE9JycpCnsKCSRsaWNlbmNlID0gJHBhcmFtc1snbGljZW5jZSddOwp9CmVsc2UKewoJJHRoaXMtPlNldE1lc3NhZ2UoJ0lsIG1hbnF1ZSBsZSBudW3DqXJvIGRlIGxpY2VuY2UnKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2ZmdHQnKTsKfQoKJGRlc2lnbmF0aW9uID0gJyc7CiRxdWVyeSA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJywgbm9tLCBwcmVub20pIEFTIHBsYXllciBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIGxpY2VuY2UgPSA/IjsKJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UpKTsKCglpZiAoJGRicmV0b3VyICYmICRkYnJldG91ci0+UmVjb3JkQ291bnQoKSA+IDApCiAgCXsKICAgIAkJd2hpbGUgKCRyb3c9ICRkYnJldG91ci0+RmV0Y2hSb3coKSkKICAgICAgCQl7CgkJCSRwbGF5ZXIgPSAkcm93WydwbGF5ZXInXTsKCQkJLy9yZXR1cm4gJHBsYXllcjsKCQl9CgkKCX0KCWVsc2UKCXsKCQkkdGhpcy0+U2V0TWVzc2FnZSgiSm91ZXVyIGludHJvdXZhYmxlIik7CgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncmVjdXAnKTsKCX0KCi8vb24gcmVkaXJpZ2UgdmVycyBsYSBtw6l0aG9kZSAuLi4KJHNlcnZpY2UgPSBuZXcgcmV0cmlldmVfb3BzKCk7Ci8vJHNlcnZpY2UgPSBuZXcgU2VydmljZW4oKTsKJHJldHJpZXZlID0gJHNlcnZpY2UtPnJldHJpZXZlX3BhcnRpZXNfZmZ0dCgiJGxpY2VuY2UiKTsKCiR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncmVjdXAnKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_parties_spid.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyAgICAgICAgICAgUkVDVVBFUkFUSU9OIERFUyBQQVJUSUVTIFNQSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKJG5vdyA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpLCAiJyIpOwokZXJyb3IgPSAwOwoKJGxpY2VuY2UgPSAkcGFyYW1zWydsaWNlbmNlJ107CiRkZXNpZ25hdGlvbiA9ICcnOwoKCiRxdWVyeSA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJywgbm9tLCBwcmVub20pIEFTIHBsYXllciBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIGxpY2VuY2UgPSA/IEFORCBhY3RpZiA9ICcxJyI7CiRkYnJldG91ciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlKSk7CmlmICgkZGJyZXRvdXIgJiYgJGRicmV0b3VyLT5SZWNvcmRDb3VudCgpID4gMCkKewogICAgd2hpbGUgKCRyb3c9ICRkYnJldG91ci0+RmV0Y2hSb3coKSkKICAgICAgCXsKCQkkcGxheWVyID0gJHJvd1sncGxheWVyJ107CgkJLy9yZXR1cm4gJHBsYXllcjsKCQkkc2VydmljZSA9IG5ldyByZXRyaWV2ZV9vcHMoKTsKCQkkcmVzdWx0YXRzID0gJHNlcnZpY2UtPnJldHJpZXZlX3BhcnRpZXNfc3BpZDIoJGxpY2VuY2UpOwoJCS8vdmFyX2R1bXAoJHJlc3VsdGF0cyk7Cgl9CgkKfQplbHNlCnsKCSRkZXNpZ25hdGlvbi49IkpvdWV1ciBpbnRyb3V2YWJsZSI7CgkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdqb3VldXJzJyk7Cn0KCQoJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncmVjdXAnKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_poule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwpkZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmNhbGN1bHMucGhwJyk7CiRzZXJ2aWNlID0gbmV3IFNlcnZpY2UoKTsKJHJlc3VsdCA9ICRzZXJ2aWNlLT5nZXRQb3VsZXMoIjIxMDciKTsKLy8kcmVzdWx0ID0gJHNlcnZpY2UtPmdldEVxdWlwZXNCeUNsdWIoIjA3MjkwMjI5IiwiTSIpOwovLyRyZXN1bHQgPSAkc2VydmljZS0+Z2V0Sm91ZXVyUGFydGllcygiMjkyMjcxIik7Cgp2YXJfZHVtcCgkcmVzdWx0KTsKICAgICAKLyoKZm9yZWFjaCgkcmVzdWx0IGFzICRjbGUgPT4kdGFiKQp7CgkKCSRjbGVfYXBwZWwgPSAnQVAnOwoJZWNobyAiJGNsZV9hcHBlbCA8YnIgLz4iOwoJJGxpYmVxdWlwZSA9ICR0YWJbbGliZXF1aXBlXTsKCSRsaWJkaXZpc2lvbiA9ICR0YWJbYWR2bGljXTsKCSRsaWVuZGl2aXNpb24gPSAkdGFiW2xpZW5kaXZpc2lvbl07CgkkaWRwb3VsZSA9ICR0YWJbaWRwb3VsZV07CgkkaWRkaXYgPSAkdGFiW2lkZGl2XTsKCQoJCgkkcXVlcnkgPSAiU0VMRUNUIGFkdmxpYywgY2xlX2FwcGVsIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgV0hFUkUgYWR2bGljID0gPyBBTkQgY2xlX2FwcGVsID0gPyI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkYWR2bGljLCAkY2xlX2FwcGVsKSk7CglpZigkZGJyZXN1bHQgICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKSB7CgkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIChpZCxjbGVfYXBwZWwsIGxpY2VuY2UsIGFkdmxpYywgdmQsIG51bWpvdXJuLCBjb2RlY2hhbXAsIGRhdGVfZXZlbnQsIGFkdnNleGUsIGFkdm5vbXByZSwgcG9pbnRyZXMsIGNvZWZjaGFtcCwgYWR2Y2xhb2YpIFZBTFVFUyAoJycsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIjsKCQllY2hvICRxdWVyeTsKCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGNsZV9hcHBlbCwgJGxpY2VuY2UsICRhZHZsaWMsICR2ZCwgJG51bWpvdXJuLCAkY29kZWNoYW1wLCAkZGF0ZV9ldmVudCwgJGFkdnNleGUsICRhZHZub21wcmUsICRwb2ludHJlcywgJGNvZWZjaGFtcCwgJGFkdmNsYW9mKSk7CgkJCgkJaWYoISRkYnJlc3VsdGF0KQoJCXsKCQkJJGVycm9yID0gJGRiLT5FcnJvck1zZygpLicgLS0gJy4kZGItPnNxbDsKCQkJYnJlYWs7CgkJfQovLwl9Cn0KLyoqLwovKgkKCSR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdzYXZlZF9yZWNvcmQnKSk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZW5jb250cmVzJyk7CiovCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_poule_rencontres.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5jYWxjdWxzLnBocCcpOwokaWRkaXYgPSAiIjsKJGlkcG91bGUgPSAiIjsKJGlkZXByZXV2ZSA9ICIiOwokbWVzc2FnZSA9ICcnOy8vbGUgbWVzc2FnZSBkZSBzb3J0aWUKJGVycm9yID0gMDsgLy9vbiBpbnN0YW5jaWUgbGUgY29tcHRldXIgZCdlcnJldXJzCiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CiRwaGFzZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwaGFzZV9lbl9jb3VycycpOwokZGVzaWduYXRpb249ICcnOwovKgppZihpc3NldCgkcGFyYW1zWydjYWwnXSkgJiYgJHBhcmFtc1snY2FsJ10gPSAnYWxsJykKewoJLy9vbiByw6ljdXDDqHJlIGxlIGNhbGVuZHJpZXIKfQoqLwppZihpc3NldCgkcGFyYW1zWydyZWNvcmRfaWQnXSkgJiYgJHBhcmFtc1sncmVjb3JkX2lkJ10gIT0gJycpCnsKCSRyZWNvcmRfaWQgPSAkcGFyYW1zWydyZWNvcmRfaWQnXTsKCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIFdIRVJFIGlkID0gPyI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmVjb3JkX2lkKSk7CglpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCgl7CgkJJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCQkkaWRlcHJldXZlMiA9ICRyb3dbJ2lkZXByZXV2ZSddOwoJCSRpZGRpdiA9ICRyb3dbJ2lkZGl2J107CgkJJGlkcG91bGUgPSAkcm93WydpZHBvdWxlJ107CgkJJGNhbCA9MDsKCQkvL29uIGVudm9pZSB2cmVzIGxlIGZpY2hpZXIKCQkkc2VydmljZSA9IG5ldyByZXRyaWV2ZV9vcHMoKTsKCQkkcmV0cmlldmUgPSAkc2VydmljZS0+cmV0cmlldmVfcG91bGVfcmVuY29udHJlcygkaWRkaXYsJGlkcG91bGUsJGNhbCwkaWRlcHJldXZlMik7CgkJCgkJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdhZG1pbl9wb3VsZXNfdGFiMycsJHJldHVybmlkLGFycmF5KCJyZWNvcmRfaWQiPT4kcmVjb3JkX2lkKSk7CgkJCgl9Cn0KZWxzZWlmKGlzc2V0KCRwYXJhbXNbJ2NhbCddKSAmJiAkcGFyYW1zWydjYWwnXSA9PSAnY2FsJykKewoJJGNhbCA9ICRwYXJhbXNbJ2NhbCddOwoJLy9vbiByw6ljdXDDqHJlIHR0cyBsZXMgaWRkaXZpc2lvbnMgZXQgaWRlcHJldXZlIGRpc3BvbmlibGUgZW4gYmRkLgoJJHF1ZXJ5ID0gIlNFTEVDVCBESVNUSU5DVCBpZGVwcmV1dmUsIGlkZGl2LCBpZHBvdWxlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgV0hFUkUgc2Fpc29uID0gPyBBTkQgcGhhc2UgPSA/IjsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRzYWlzb24sICRwaGFzZSkpOwoJaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKT4wKQoJewoJCXdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgCQl7CgkJCSRpZGVwcmV1dmUgPSAkcm93WydpZGVwcmV1dmUnXTsKCQkJJGlkZGl2ID0gJHJvd1snaWRkaXYnXTsKCQkJJGlkcG91bGUgPSAkcm93WydpZHBvdWxlJ107CgkJCSRzZXJ2aWNlID0gbmV3IHJldHJpZXZlX29wcygpOwoJCQkkcmV0cmlldmUgPSAkc2VydmljZS0+cmV0cmlldmVfcG91bGVfcmVuY29udHJlcygkaWRkaXYsICRpZHBvdWxlLCRjYWwsJGlkZXByZXV2ZSk7CgkJCQoJCX0KCX0KCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2VxdWlwZXMnKTsKfQplbHNlaWYoaXNzZXQoJHBhcmFtc1snY2FsJ10pICYmICRwYXJhbXNbJ2NhbCddID0gJ2FsbCcpCnsKCSRjYWwgPSAkcGFyYW1zWydjYWwnXTsKCSRpID0gMDsgLy9vbiBpbnPDqHJlIHVuIGNvbXB0ZXVyIHBvdXIgbGVzIGJvdWNsZXMKCS8vb24gcsOpY3Vww6hyZSB0dHMgbGVzIGlkZGl2aXNpb25zIGV0IGlkZXByZXV2ZSBkaXNwb25pYmxlIGVuIGJkZC4KCSRxdWVyeSA9ICJTRUxFQ1QgRElTVElOQ1QgaWRlcHJldXZlLCBpZGRpdiwgaWRwb3VsZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIFdIRVJFIHNhaXNvbiA9ID8gQU5EIHBoYXNlID0gPyI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkc2Fpc29uLCAkcGhhc2UpKTsKCWlmKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk+MCkKCXsKCQl3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIAkJewoJCQkkaSsrOwoJCQkkaWRlcHJldXZlID0gJHJvd1snaWRlcHJldXZlJ107CgkJCSRpZGRpdiA9ICRyb3dbJ2lkZGl2J107CgkJCSRpZHBvdWxlID0gJHJvd1snaWRwb3VsZSddOwoJCQkkc2VydmljZSA9IG5ldyByZXRyaWV2ZV9vcHMoKTsKCQkJJHJldHJpZXZlID0gJHNlcnZpY2UtPnJldHJpZXZlX3BvdWxlX3JlbmNvbnRyZXMoJGlkZGl2LCAkaWRwb3VsZSwkY2FsLCRpZGVwcmV1dmUpOwoJCS8vCXZhcl9kdW1wKCRyZXRyaWV2ZSk7CgkJCQoJCX0KCX0KCSRtZXNzYWdlID0gIlLDqWN1cMOpcmF0aW9uIGRlcyByw6lzdWx0YXRzIGRlICIuJGkuIiBwb3VsZXMiOwoJJHRoaXMtPlNldE1lc3NhZ2UoJG1lc3NhZ2UpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignZXF1aXBlcycpOwp9CmVsc2UKewoJaWYoaXNzZXQoJHBhcmFtc1snaWRlcHJldXZlJ10pICYmICRwYXJhbXNbJ2lkZXByZXV2ZSddICE9ICIiKQoJewoJCSRpZGVwcmV1dmUgPSAkcGFyYW1zWydpZGVwcmV1dmUnXTsKCX0KCWVsc2UKCXsKCQkkZXJyb3IrKzsKCX0KCWlmKGlzc2V0KCRwYXJhbXNbJ2lkZGl2J10pICYmICRwYXJhbXNbJ2lkZGl2J10gIT0gIiIpCgl7CgkJJGlkZGl2ID0gJHBhcmFtc1snaWRkaXYnXTsKCX0KCWVsc2UKCXsKCQkkZXJyb3IrKzsKCX0KCWlmKGlzc2V0KCRwYXJhbXNbJ2lkcG91bGUnXSkgJiYgJHBhcmFtc1snaWRwb3VsZSddICE9ICIiKQoJewoJCSRpZHBvdWxlID0gJHBhcmFtc1snaWRwb3VsZSddOwoJfQoJZWxzZQoJewoJCSRlcnJvcisrOwoJfQoKCglpZigkZXJyb3IgPjApCgl7CgkJJG1lc3NhZ2UuPSJQYXJhbcOodHJlcyBtYW5xdWFudHMiOwoJCSR0aGlzLT5TZXRtZXNzYWdlKCIkbWVzc2FnZSIpOwoJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2VxdWlwZXMnKTsKCX0KCWVsc2UKCXsKCQkkc2VydmljZSA9IG5ldyByZXRyaWV2ZV9vcHMoKTsKCQkkcmV0cmlldmUgPSAkc2VydmljZS0+cmV0cmlldmVfcG91bGVfcmVuY29udHJlcygkaWRkaXYsICRpZHBvdWxlKTsKCQoJCSRjb21wdGFnZSA9ICRpOwoJCSRzdGF0dXMgPSAnUG91bGVzJzsKCQkkZGVzaWduYXRpb24uPSAiTWlzZSDDoCBqb3VyIGRlICIuJGNvbXB0YWdlLiIgcmVuY29udHJlcyBkZSBsYSBwb3VsZSAiLiRpZHBvdWxlOwoJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXAgKGlkLCBkYXRlY3JlYXRlZCwgc3RhdHVzLCBkZXNpZ25hdGlvbiwgYWN0aW9uKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/KSI7CgkJJGFjdGlvbiA9ICJyZXRyaWV2ZV9wb3VsZXNfcmVuY29udHJlcyI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5vdywkc3RhdHVzLCAkZGVzaWduYXRpb24sJGFjdGlvbikpOwoJCWlmKCEkZGJyZXN1bHQpCgkJewoJCQkkZGVzaWduYXRpb24uPSAkZGItPkVycm9yTXNnKCk7IAoJCX0KCgkJCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2FkbWluX3BvdWxlc190YWIzJywkcmV0dXJuaWQsYXJyYXkoInJlY29yZF9pZCI9PiRyZWNvcmRfaWQpKTsKCX0KfQoKLyoJKi8KIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_RSS.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAgICBQcmVtacOocmUgw6l0YXBlIGRlIHLDqWN1cMOpcmF0aW9uIGRlcyDDqXF1aXBlcyAgICAgICAgICAgICAgICAgIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKCgppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwovL3JlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmNhbGN1bHMucGhwJyk7CgokY2x1Yl9udW1iZXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY2x1Yl9udW1iZXInKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJGRlc2lnbmF0aW9uID0gJyc7CmlmKCFpc3NldCgkY2x1Yl9udW1iZXIpICYmICRjbHViX251bWJlciA9PScnKQp7CgkkbWVzc2FnZSA9ICJWb3RyZSBudW3DqXJvIGRlIGNsdWIgbidlc3QgcGFzIGNvbmZpZ3Vyw6kgISEiOwoJJHRoaXMtPlNldE1lc3NhZ2UoIiRtZXNzYWdlIik7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdjb25maWd1cmF0aW9uJyk7Cn0KJG5vdyA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpLCAiJyIpOwovL29uIGluc3RhbmNpZSBsYSBjbGFzc2Ugc2VydmljZQokc2VydmljZSA9IG5ldyBTZXJ2aWNlbigpOwokdHlwZSA9ICcnOwokcmVzdWx0ID0gJyc7CgokcGFnZSA9ICJyc3NfYWxsIjsKCgkkbGllbiA9ICRzZXJ2aWNlLT5HZXRSU1MoJHBhZ2UpOwoJJHhtbCA9IHNpbXBsZXhtbF9sb2FkX3N0cmluZygkbGllbiwgJ1NpbXBsZVhNTEVsZW1lbnQnLCBMSUJYTUxfTk9DREFUQSk7CgkvL3Zhcl9kdW1wKCR4bWwpOwoJaWYoJHhtbCA9PT0gRkFMU0UpCgl7CgkJJHRoaXMtPlNldE1lc3NhZ2UoIkxlIHNlcnZpY2UgZXN0IGNvdXDDqSIpOwoJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2VxdWlwZXMnKTsKCX0KCWVsc2UKCXsKCQkkYXJyYXkgPSBqc29uX2RlY29kZShqc29uX2VuY29kZSgoYXJyYXkpJHhtbCksIFRSVUUpOwoJfQoKCmVjaG8gJzx1bD4nOwpmb3JlYWNoICgkeG1sLT5jaGFubmVsLT5pdGVtIGFzICRpdGVtKXsKICRkYXRldGltZSA9IGRhdGVfY3JlYXRlKCRpdGVtLT5wdWJEYXRlKTsKICRkYXRlID0gZGF0ZV9mb3JtYXQoJGRhdGV0aW1lLCAnZCBNIFksIEhcaGknKTsKJGRlcyA9ICRpdGVtLT5kZXNjcmlwdGlvbjsKIGVjaG8gJzxsaT48YSBocmVmPSInLiRpdGVtLT5saW5rLiciIHRpdGxlPSInLiRkZXMuJyI+Jy4kaXRlbS0+dGl0bGUuJzwvYT4gKCcuJGRhdGUuJyk8L2xpPic7Cn0KZWNobyAnPC91bD4nOwovKgoKKi8KLy9vbiB2YSB0ZXN0ZXIgc2kgbGEgdmFyaWFibGUgZXN0IGJpZW4gdW4gdGFibGVhdSAgIAovKioJCgovLy9vbiBpbml0aWFsaXNlIHVuIGNvbXB0ZXVyIGfDqW7DqXJhbCAkaQokaT0wOwovL29uIGluaXRpYWxpc2UgdW4gZGV1eGnDqG1lIGNvbXB0ZXVyCiRjb21wdGV1cj0wOwpmb3JlYWNoKCR4bWwgYXMgJGNsZSA9PiR0YWIpCnsKCQoJJGkrKzsKCSRsaWJlcXVpcGUgPSAoaXNzZXQoJHRhYi0+bGliZXF1aXBlKT8iJHRhYi0+bGliZXF1aXBlIjoiIik7CgkkaWRlcHJldXZlID0gKGlzc2V0KCR0YWItPmlkZXByKT8iJHRhYi0+aWRlcHIiOiIiKTsKCSRuZXdwaGFzZSA9IGV4cGxvZGUgKCItIiwkbGliZXF1aXBlKTsKCS8vZWNobyAibGEgcGhhc2UgZXN0ICIuJG5ld3BoYXNlWzFdOwoJJHBoYXNlID0gc3Vic3RyKCRuZXdwaGFzZVsxXSwgLTEpOwoJJG5ld19lcXVpcGUgPSAkbmV3cGhhc2VbMF07CgkvL2VjaG8gImxhIHBoYXNlIGVzdCAiLiRwaGFzZTsKCQoJJGxpYmRpdmlzaW9uID0gKGlzc2V0KCR0YWItPmxpYmRpdmlzaW9uKT8iJHRhYi0+bGliZGl2aXNpb24iOiIiKTsKCSRsaWVuZGl2aXNpb24gPSAoaXNzZXQoJHRhYi0+bGllbmRpdmlzaW9uKT8iJHRhYi0+bGllbmRpdmlzaW9uIjoiIik7CgkkdGFibGVhdSA9IHBhcnNlX3N0cigkbGllbmRpdmlzaW9uLCAkb3V0cHV0KTsKCS8vZWNobyAkdGFibGVhdTsKCSRpZHBvdWxlID0gJG91dHB1dFsnY3hfcG91bGUnXTsKCSRpZGRpdiA9ICRvdXRwdXRbJ0QxJ107CgkkaWRvcmdhID0gJG91dHB1dFsnb3JnYW5pc21lX3BlcmUnXTsKCQoJCgkKCQoJLy8kdHlwZV9jb21wZXQgPSAkdHlwZTsKCQoJCgkkcXVlcnkgPSAiU0VMRUNUIHBoYXNlLCBsaWJlcXVpcGUsIGxpYmRpdmlzaW9uIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgV0hFUkUgbGliZXF1aXBlID0gPyBBTkQgc2Fpc29uID0gPyBBTkQgcGhhc2UgPSA/IEFORCBsaWJkaXZpc2lvbiA9ID8iOwoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5ld19lcXVpcGUsJHBoYXNlLCAkbGliZGl2aXNpb24pKTsKCQoJCWlmKCRkYnJlc3VsdCAgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID09IDApIAoJCXsKCQkJLy9PbiB2YSBlc3NheWVyIGRlIGNyw6llciB1biB0YWcgcG91ciBhaWRlciDDoCBhZmZpY2hlciBsZXMgw6lxdWlwZXMKCQkJLy9PbiByw6ljdXDDqHJlIGxlIG1hc3RfaW5zZXJ0X2lkIGQnYWJvcmQKCQkJJHF1ZXJ5MSA9ICJTSE9XIFRBQkxFIFNUQVRVUyBMSUtFICciLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcycgIjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTEpOwoJCQkkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJCQkkcmVjb3JkX2lkID0gJHJvd1snQXV0b19pbmNyZW1lbnQnXTsKCQkJJHRhZyA9IHBpbmdfYWRtaW5fb3BzOjp0YWdfZXF1aXBlKCRyZWNvcmRfaWQpOwoJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgKGlkLCBzYWlzb24sIHBoYXNlLCBsaWJlcXVpcGUsIGxpYmRpdmlzaW9uLCBsaWVuZGl2aXNpb24sIGlkcG91bGUsIGlkZGl2LCB0eXBlX2NvbXBldCwgdGFnLCBpZGVwcmV1dmUpIFZBTFVFUyAoJycsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIjsKCQkJLy9lY2hvICRxdWVyeTsKCQkJJGNvbXB0ZXVyKys7CgkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkc2Fpc29uLCAkcGhhc2UsICRuZXdfZXF1aXBlLCAkbGliZGl2aXNpb24sICRsaWVuZGl2aXNpb24sICRpZHBvdWxlLCAkaWRkaXYsICR0eXBlX2NvbXBldCwgJHRhZywgJGlkZXByZXV2ZSkpOwoJCQoJCQlpZighJGRicmVzdWx0YXQpCgkJCXsKCQkJCSRkZXNpZ25hdGlvbiAuPSAkZGItPkVycm9yTXNnKCk7CQkJCgkJCX0KCgkJfS8vZmluIGR1IGlmICRkYnJlc3VsdAoJCgkKfS8vIGZpbiBkdSBmb3JlYWNoCgokZGVzaWduYXRpb24gLj0gIlLDqWN1cMOpcmF0aW9uIGRlICIuJGNvbXB0ZXVyLiIgw6lxdWlwZXMiOwoKCWlmKCRjb21wdGV1ciA+MCkKCXsKCQkkZGVzaWduYXRpb24uPSI8YnIgLz5JbmRpcXVleiBsZSB0eXBlIGRlIGNvbXDDqXRpdGlvbiBkZXMgw6lxdWlwZXMgcsOpY3Vww6lyw6llcy4iOwoJfQoJCiRzdGF0dXMgPSAnT2snOwokYWN0aW9uID0gJ3JldHJpZXZlX3RlYW1zJzsKLy9waW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsJGRlc2lnbmF0aW9uLCRhY3Rpb24pOwoJCgkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdlcXVpcGVzJyk7CioqLwojCiMgRU9GCiMKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_sit_mens.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyAgICAgICAgICAgICAgICAgICBSw6ljdXDDqXJhdGlvbiBkZSBsYSBzaXR1YXRpb24gbWVuc3VlbGxlICAgICAgICAgICAgICAgICAgIyMjCiMjIyAgICAgICAgICAgICAgICAgICBBdXRldXIgQ2xhdWRlIFNJT0hBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9vbiB2w6lyaWZpZSBsZXMgcGVybWlzc2lvbnMKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFVzZScpKQp7CgllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCXJldHVybjsKfQovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJ2luY2x1ZGUvcHJlZnMucGhwJyk7CiRkYj0kZ0Ntcy0+R2V0RGIoKTsKCi8vbGVzIHByw6lmw6lyZW5jZXMKJG1vaXNfY291cmFudCA9IGRhdGUoJ24nKTsKJG1vaXNfZnJhbmNhaXMgPSBhcnJheSgnSmFudmllcicsICdGw6l2cmllcicsJ01hcnMnLCAnQXZyaWwnLCAnTWFpJywgJ0p1aW4nLCAnSnVpbGxldCcsJ0Fvw7t0JywgJ1NlcHRlbWJyZScsICdPY3RvYnJlJywnTm92ZW1icmUnLCdEw6ljZW1icmUnKTsKJGFubmVlX2NvdXJhbnRlID0gZGF0ZSgnWScpOwokbW9pc19yZWVsID0gJG1vaXNfY291cmFudCAtIDE7CiRtb2lzX3NtID0gJG1vaXNfZnJhbmNhaXNbIiRtb2lzX3JlZWwiXTsKJG1vaXNfc2l0X21lbnMgPSAkbW9pc19zbS4iICIuJGFubmVlX2NvdXJhbnRlOwokc2Fpc29uID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwokZGVzaWduYXRpb24gPSAnJzsgLy9pbnN0YW5jaWF0aW9uIGR1IG1lc3NhZ2UgZGUgc29ydGllCgovL2VjaG8gImxlIG1vaXMgZGUgbGEgc2l0dWF0aW9uIG1lbnN1ZWxsZSBlc3QgOiAiLiRtb2lzX3NpdF9tZW5zOwokbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CgokbGljZW5jZSA9ICcnOwoKCWlmKCFpc3NldCgkcGFyYW1zWydsaWNlbmNlJ10pICYmICRwYXJhbXNbJ2xpY2VuY2UnXSA9PScnKQoJewoJCSRkZXNpZ25hdGlvbiAuPSAnUGFzIGRlIG7CsCBkZSBsaWNlbmNlJzsKCQkkdGhpcy0+U2V0TWVzc2FnZSgkZGVzaWduYXRpb24pOwoJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3JlY3VwJyk7Cgl9CgllbHNlCgl7CgkJJGxpY2VuY2UgPSAkcGFyYW1zWydsaWNlbmNlJ107Cgl9CgovL29uIHbDqXJpZmllIHF1ZSBsZSBqb3VldXIgZW4gcXVlc3Rpb24gZXN0IGJpZW4gYWN0aWYKJHF1ZXJ5ID0gIlNFTEVDVCBDT05DQVRfV1MoJyAnLG5vbSxwcmVub20pIGFzIHBsYXllciwgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIGxpY2VuY2UgPSA/IEFORCBhY3RpZiA9ICcxJyI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlKSk7Ci8vbGUgam91ZXVyIG5lIHJlbXBsaXQgcGFzIGxlcyBjb25kaXRpb25zIGRlIGxhIHJlcXVldGUsIG9uIHJlbnZvaXQgYXZlYyB1biBtZXNzYWdlCmlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID09IDApCnsKCSR0aGlzLT5TZXRNZXNzYWdlKCJKb3VldXIgZMOpc2FjdGl2w6kiKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3NpdHVhdGlvbicpOwp9CmVsc2UKewovL2xlIGpvdWV1ciBlc3QgYWN0aWYsIG9uIHZhIHbDqXJpZmllciBzaSBzYSBzaXR1YXRpb24gbWVuc3VlbGxlIGVzdCBkw6lqw6AgZW5yZWdpc3Ryw6llCiRxdWVyeSA9ICJTRUxFQ1QgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyBXSEVSRSBsaWNlbmNlID0gPyBBTkQgbW9pcyA9ID8gQU5EIGFubmVlID0gPyI7CiRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UsJG1vaXNfY291cmFudCwkYW5uZWVfY291cmFudGUpKTsKCQoJaWYoJGRicmVzdWx0YXQgJiYgJGRicmVzdWx0YXQtPlJlY29yZENvdW50KCk+MCl7CgkJLy9sYSBzaXR1YXRpb24gbWVuc3VlbGxlIGVzdCBkw6lqw6Agw6Agam91ciwgb24gcGFzc2UKCQkkdGhpcy0+U2V0TWVzc2FnZSgnU2l0dWF0aW9uIG1lbnN1ZWxsZSBkw6lqw6Agw6Agam91ciAhJyk7CgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwoJCQoJfQoJZWxzZQoJewoJCQoJCSRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkJJHBsYXllciA9ICRyb3dbJ3BsYXllciddOwoJCSRzZXJ2aWNlID0gbmV3IHJldHJpZXZlX29wcygpOwoJCSRzaXRfbWVucyA9ICRzZXJ2aWNlLT5yZXRyaWV2ZV9zaXRfbWVucygiJGxpY2VuY2UiKTsKCQkvLyRzZXJ2aWNlLT5yZXRyaWV2ZV9zaXRfbWVucygiJGxpY2VuY2UiKTsKCQkvL29uIHJhbcOobmUgdmVycyBsYSBsaWIgcXVpIHZhIHRyYWl0ZXIgbGEgc2l0dWF0aW9uIG1lbnN1ZWxsZQoJCQoJCQkJCQkKCX0vL2ZpbiBkZSBsYSB2w6lyaWZpY2F0aW9uIGRlIGxhIHNpdF9tZW5zIGVuIGJkZAp9Ly9maW4gZHUgdGVzdCBzaSBsZSBqb3VldXIgZXN0IGFjdGlmIGVuIGJkZAoKJHRoaXMtPlNldE1lc3NhZ2UoJ0NvbnN1bHRleiBsZSBqb3VybmFsJyk7CiR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3JlY3VwJyk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_teams.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAgICBQcmVtacOocmUgw6l0YXBlIGRlIHLDqWN1cMOpcmF0aW9uIGRlcyDDqXF1aXBlcyAgICAgICAgICAgICAgICAgIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKCgppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwovL3JlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmNhbGN1bHMucGhwJyk7CgokY2x1Yl9udW1iZXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY2x1Yl9udW1iZXInKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJGRlc2lnbmF0aW9uID0gJyc7CmlmKCFpc3NldCgkY2x1Yl9udW1iZXIpICYmICRjbHViX251bWJlciA9PScnKQp7CgkkbWVzc2FnZSA9ICJWb3RyZSBudW3DqXJvIGRlIGNsdWIgbidlc3QgcGFzIGNvbmZpZ3Vyw6kgISEiOwoJJHRoaXMtPlNldE1lc3NhZ2UoIiRtZXNzYWdlIik7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdjb25maWd1cmF0aW9uJyk7Cn0KJG5vdyA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpLCAiJyIpOwovL29uIGluc3RhbmNpZSBsYSBjbGFzc2Ugc2VydmljZQokc2VydmljZSA9IG5ldyBTZXJ2aWNlbigpOwokdHlwZSA9ICcnOwokcmVzdWx0ID0gJyc7CmlmKGlzc2V0KCRwYXJhbXNbJ3R5cGUnXSkgJiYgJHBhcmFtc1sndHlwZSddICE9JycpCnsKCSR0eXBlID0gJHBhcmFtc1sndHlwZSddOwp9CgokcGFnZSA9ICJ4bWxfZXF1aXBlIjsKJHZhciA9ICJudW1jbHU9Ii4kY2x1Yl9udW1iZXI7CgoJaWYgKGlzc2V0KCR0eXBlKSAmJiAkdHlwZSA9PSAnJykKCXsKCQkvLyRyZXN1bHQgPSAkc2VydmljZS0+Z2V0RXF1aXBlc0J5Q2x1YigiJGNsdWJfbnVtYmVyIik7CgkJCgkJJGNocHQgPSAiQSI7IC8vcG91ciBhdXRyZXMgY2hhbXBpb25uYXQKCQkkdHlwZV9jb21wZXQgPSAnVSc7Ly9wb3VyIHVuZGVmaW5lZAoJCSR2YXIuPSIiOwoJfQoJZWxzZWlmKCR0eXBlID09J00nKQoJewoJCQoJCSR0eXBlX2NvbXBldCA9ICcxJzsKCQkkdmFyLj0iJnR5cGU9TSI7Cgl9CgllbHNlaWYoJHR5cGUgPT0gJ0YnKQoJewoJCSR2YXIuPSImdHlwZT1GIjsKCQkkdHlwZV9jb21wZXQgPSAnMSc7CgkJCgl9CgkkbGllbiA9ICRzZXJ2aWNlLT5HZXRMaW5rKCRwYWdlLCR2YXIpOwoJJHhtbCA9IHNpbXBsZXhtbF9sb2FkX3N0cmluZygkbGllbiwgJ1NpbXBsZVhNTEVsZW1lbnQnLCBMSUJYTUxfTk9DREFUQSk7CgkvL3Zhcl9kdW1wKCR4bWwpOwoJaWYoJHhtbCA9PT0gRkFMU0UpCgl7CgkJJHRoaXMtPlNldE1lc3NhZ2UoIkxlIHNlcnZpY2UgZXN0IGNvdXDDqSIpOwoJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2VxdWlwZXMnKTsKCX0KCWVsc2UKCXsKCQkkYXJyYXkgPSBqc29uX2RlY29kZShqc29uX2VuY29kZSgoYXJyYXkpJHhtbCksIFRSVUUpOwoJfQovL3Zhcl9kdW1wKCR4bWwpOwovKgoKKi8KLy9vbiB2YSB0ZXN0ZXIgc2kgbGEgdmFyaWFibGUgZXN0IGJpZW4gdW4gdGFibGVhdSAgIAoJCgovLy9vbiBpbml0aWFsaXNlIHVuIGNvbXB0ZXVyIGfDqW7DqXJhbCAkaQokaT0wOwovL29uIGluaXRpYWxpc2UgdW4gZGV1eGnDqG1lIGNvbXB0ZXVyCiRjb21wdGV1cj0wOwpmb3JlYWNoKCR4bWwgYXMgJGNsZSA9PiR0YWIpCnsKCQoJJGkrKzsKCSRsaWJlcXVpcGUgPSAoaXNzZXQoJHRhYi0+bGliZXF1aXBlKT8iJHRhYi0+bGliZXF1aXBlIjoiIik7CgkkaWRlcHJldXZlID0gKGlzc2V0KCR0YWItPmlkZXByKT8iJHRhYi0+aWRlcHIiOiIiKTsKCSRuZXdwaGFzZSA9IGV4cGxvZGUgKCItIiwkbGliZXF1aXBlKTsKCS8vZWNobyAibGEgcGhhc2UgZXN0ICIuJG5ld3BoYXNlWzFdOwoJJHBoYXNlID0gc3Vic3RyKCRuZXdwaGFzZVsxXSwgLTEpOwoJJG5ld19lcXVpcGUgPSAkbmV3cGhhc2VbMF07CgkvL2VjaG8gImxhIHBoYXNlIGVzdCAiLiRwaGFzZTsKCQoJJGxpYmRpdmlzaW9uID0gKGlzc2V0KCR0YWItPmxpYmRpdmlzaW9uKT8iJHRhYi0+bGliZGl2aXNpb24iOiIiKTsKCSRsaWVuZGl2aXNpb24gPSAoaXNzZXQoJHRhYi0+bGllbmRpdmlzaW9uKT8iJHRhYi0+bGllbmRpdmlzaW9uIjoiIik7CgkkdGFibGVhdSA9IHBhcnNlX3N0cigkbGllbmRpdmlzaW9uLCAkb3V0cHV0KTsKCS8vZWNobyAkdGFibGVhdTsKCSRpZHBvdWxlID0gJG91dHB1dFsnY3hfcG91bGUnXTsKCSRpZGRpdiA9ICRvdXRwdXRbJ0QxJ107CgkkaWRvcmdhID0gJG91dHB1dFsnb3JnYW5pc21lX3BlcmUnXTsKCQoJCgkKCQoJLy8kdHlwZV9jb21wZXQgPSAkdHlwZTsKCQoJCgkkcXVlcnkgPSAiU0VMRUNUIHBoYXNlLCBsaWJlcXVpcGUsIGxpYmRpdmlzaW9uIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgV0hFUkUgbGliZXF1aXBlID0gPyBBTkQgc2Fpc29uID0gPyBBTkQgcGhhc2UgPSA/IEFORCBsaWJkaXZpc2lvbiA9ID8iOwoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5ld19lcXVpcGUsJHBoYXNlLCAkbGliZGl2aXNpb24pKTsKCQoJCWlmKCRkYnJlc3VsdCAgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID09IDApIAoJCXsKCQkJLy9PbiB2YSBlc3NheWVyIGRlIGNyw6llciB1biB0YWcgcG91ciBhaWRlciDDoCBhZmZpY2hlciBsZXMgw6lxdWlwZXMKCQkJLy9PbiByw6ljdXDDqHJlIGxlIG1hc3RfaW5zZXJ0X2lkIGQnYWJvcmQKCQkJJHF1ZXJ5MSA9ICJTSE9XIFRBQkxFIFNUQVRVUyBMSUtFICciLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcycgIjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTEpOwoJCQkkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJCQkkcmVjb3JkX2lkID0gJHJvd1snQXV0b19pbmNyZW1lbnQnXTsKCQkJJHRhZyA9IHBpbmdfYWRtaW5fb3BzOjp0YWdfZXF1aXBlKCRyZWNvcmRfaWQpOwoJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgKGlkLCBzYWlzb24sIHBoYXNlLCBsaWJlcXVpcGUsIGxpYmRpdmlzaW9uLCBsaWVuZGl2aXNpb24sIGlkcG91bGUsIGlkZGl2LCB0eXBlX2NvbXBldCwgdGFnLCBpZGVwcmV1dmUpIFZBTFVFUyAoJycsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIjsKCQkJLy9lY2hvICRxdWVyeTsKCQkJJGNvbXB0ZXVyKys7CgkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkc2Fpc29uLCAkcGhhc2UsICRuZXdfZXF1aXBlLCAkbGliZGl2aXNpb24sICRsaWVuZGl2aXNpb24sICRpZHBvdWxlLCAkaWRkaXYsICR0eXBlX2NvbXBldCwgJHRhZywgJGlkZXByZXV2ZSkpOwoJCQoJCQlpZighJGRicmVzdWx0YXQpCgkJCXsKCQkJCSRkZXNpZ25hdGlvbiAuPSAkZGItPkVycm9yTXNnKCk7CQkJCgkJCX0KCgkJfS8vZmluIGR1IGlmICRkYnJlc3VsdAoJCgkKfS8vIGZpbiBkdSBmb3JlYWNoCgokZGVzaWduYXRpb24gLj0gIlLDqWN1cMOpcmF0aW9uIGRlICIuJGNvbXB0ZXVyLiIgw6lxdWlwZXMiOwoKCWlmKCRjb21wdGV1ciA+MCkKCXsKCQkkZGVzaWduYXRpb24uPSI8YnIgLz5JbmRpcXVleiBsZSB0eXBlIGRlIGNvbXDDqXRpdGlvbiBkZXMgw6lxdWlwZXMgcsOpY3Vww6lyw6llcy4iOwoJfQoJCiRzdGF0dXMgPSAnT2snOwokYWN0aW9uID0gJ3JldHJpZXZlX3RlYW1zJzsKLy9waW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsJGRlc2lnbmF0aW9uLCRhY3Rpb24pOwoJCgkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdlcXVpcGVzJyk7CgojCiMgRU9GCiMKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_users.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKaWYoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgVXNlJykpCnsKCSR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKfQpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3ByZWZzLnBocCcpOwokbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CiRjbHViX251bWJlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjbHViX251bWJlcicpOwovLwokbW9pc19jb3VyYW50ID0gZGF0ZSgnbicpOy8vTW9pcyBhdSBmb3JtYXQgMSwgMiwgMyBldGMuLi4uCiRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsvL2wnYW5uw6llIGF1IGZvcm1hdCAwMDAwCiRtb2lzX2ZyYW5jYWlzID0gYXJyYXkoJ0phbnZpZXInLCAnRsOpdnJpZXInLCdNYXJzJywgJ0F2cmlsJywgJ01haScsICdKdWluJywgJ0p1aWxsZXQnLCdBb8O7dCcsICdTZXB0ZW1icmUnLCAnT2N0b2JyZScsJ05vdmVtYnJlJywnRMOpY2VtYnJlJyk7CiRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKJG1vaXNfcmVlbCA9ICRtb2lzX2NvdXJhbnQgLSAxOy8vcG91ciBhZmZpY2hlciBsZSBtb2lzIGF1IGZvcm1hdCBmcmFuw6dhaXMKJG1vaXNfc20gPSAkbW9pc19mcmFuY2Fpc1siJG1vaXNfcmVlbCJdOwokbW9pc19zaXRfbWVucyA9ICRtb2lzX3NtLiIgIi4kYW5uZWVfY291cmFudGU7CiRqb3VyID0gZGF0ZSgnaicpOwovLwokZGVzaWduYXRpb24gPSAnJzsKCmlmKCFpc3NldCgkY2x1Yl9udW1iZXIpIHx8ICRjbHViX251bWJlciA9PScnKQp7CgkkdGhpcy0+U2V0TWVzc2FnZSgnTGUgbnVtw6lybyBkZSBjbHViIG5cJ2VzdCBwYXMgZMOpZmluaSAhJyk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdjb25maWd1cmF0aW9uJyk7Cn0KCi8vJHNlcnZpY2UgPSBuZXcgU2VydmljZUIoKTsKLy8kcmVzdWx0ID0gJHNlcnZpY2UtPmdldExpY2VuY2VzQnlDbHViKCIkY2x1Yl9udW1iZXIiKTsKCi8vY2ktZGVzc291cywgb24gbWV0IMOgIGpvdXIgbGVzIGpvdWV1cnMgc2UgdHJvdXZhbnQgZGFucyBsYSBiYXNlIGNsYXNzZW1lbnQgZGUgbGEgRkZUVAppZihpc3NldCgkcGFyYW1zWydkaXJlY3Rpb24nXSkgJiYgJHBhcmFtc1snZGlyZWN0aW9uJ109PSAiZmZ0dCIpCnsKCSRwYWdlID0gInhtbF9saXN0ZV9qb3VldXIiOwoJJHNlcnZpY2UgPSBuZXcgU2VydmljZW4oKTsKCS8vcGFyYW3DqHRyZXMgbsOpY2Vzc2FpcmVzIAoJJHZhciA9ICJjbHViPSIuJGNsdWJfbnVtYmVyOwoJJGxpZW4gPSAkc2VydmljZS0+R2V0TGluaygkcGFnZSwkdmFyKTsKCSR4bWwgPSBzaW1wbGV4bWxfbG9hZF9zdHJpbmcoJGxpZW4pOwoJCgkkaSA9MDsvL2NvbXB0ZXVyIHBvdXIgbGVzIG5vdXZlbGxlcyBpbmNsdXNpb25zCgkkYSA9IDA7Ly9jb21wdGV1ciBwb3VyIGxlcyBtaXNlcyDDoCBqb3VyCglmb3JlYWNoKCR4bWwgYXMgJHRhYikKCXsKCQkkbGljZW5jZSA9IChpc3NldCgkdGFiLT5saWNlbmNlKT8iJHRhYi0+bGljZW5jZSI6IiIpOwoJCSRhY3RpZiA9IDE7CgkJCQoJCQkvL2xlIGpvdWV1ciBleGlzdGUgZMOpasOgICwgb24gZmFpdCB1biB1cGdyYWRlCgkJCS8vb24gdsOpcmlmaWUKCQkkYSsrOwoJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgU0VUIGFjdGlmID0gPyBXSEVSRSBsaWNlbmNlID0gPyI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGFjdGlmLCAkbGljZW5jZSkpOwoJCQkJCgl9Ly8gZmluIGR1IGZvcmVhY2gKCS8vb24gcmVkaXJpZ2Ugc3VyIGwnb25nbGV0IGpvdWV1cnMKCSRtZXNzYWdlID0gJGEuIiBtaXNlcyDDoCBqb3VyIjsKCSR0aGlzLT5TZXRNZXNzYWdlKCRtZXNzYWdlKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKfQplbHNlIAp7CgkkcGFnZSA9ICJ4bWxfbGljZW5jZV9iIjsKCSRzZXJ2aWNlID0gbmV3IFNlcnZpY2VuKCk7CgkvL3BhcmFtw6h0cmVzIG7DqWNlc3NhaXJlcyAKCSR2YXI9ImNsdWI9Ii4kY2x1Yl9udW1iZXI7CgkkbGllbiA9ICRzZXJ2aWNlLT5HZXRMaW5rKCRwYWdlLCR2YXIpOwoJLy9lY2hvICRsaWVuOwoJLy92YXJfZHVtcCgkbGllbik7CgkkeG1sID0gc2ltcGxleG1sX2xvYWRfc3RyaW5nKCRsaWVuLCAnU2ltcGxlWE1MRWxlbWVudCcsIExJQlhNTF9OT0NEQVRBKTsKCS8vdmFyX2R1bXAoJHhtbCk7CglpZigkeG1sID09PSBGQUxTRSkKCXsKCQkkYXJyYXkgPSAwOwoJCSRsaWduZXMgPSAwOwoJfQoJZWxzZQoJewoJCSRhcnJheSA9IGpzb25fZGVjb2RlKGpzb25fZW5jb2RlKChhcnJheSkkeG1sKSwgVFJVRSk7CgkJJGxpZ25lcyA9IGNvdW50KCRhcnJheVsnbGljZW5jZSddKTsKCX0KCS8vZWNobyAibGUgbmIgZGUgbGlnbmVzIGVzdCA6ICIuJGxpZ25lczsKCWlmKCRsaWduZXMgPT0gMCkKCXsKCQkkbWVzc2FnZSA9ICJQYXMgZGUgbGlnbmVzIMOgIHLDqWN1cMOpcmVyICEiOwoJCSR0aGlzLT5TZXRNZXNzYWdlKCIkbWVzc2FnZSIpOwoJCS8vJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwoJfQoJZWxzZQoJewoJCS8vb24gc3VwcHJpbWUgbCdleGlzdGFudCA/IE91aS4KCQkkcXVlcnkyID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIjsKCQkkZGJyZXN1bHQyID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIpOwoJCgkKCQkJJGkgPTA7Ly9jb21wdGV1ciBwb3VyIGxlcyBub3V2ZWxsZXMgaW5jbHVzaW9ucwoJCQkkYSA9IDA7Ly9jb21wdGV1ciBwb3VyIGxlcyBtaXNlcyDDoCBqb3VyCgkJCWZvcmVhY2goJHhtbCBhcyAkdGFiKQoJCQl7CgkJCQkvLyRsaWNlbmNlID0gKGlzc2V0KCR0YWItPmxpY2VuY2UpPyIkdGFiLT5saWNlbmNlIjoiIik7CgkJCQkkbGljZW5jZSA9IChpc3NldCgkdGFiLT5saWNlbmNlKT8iJHRhYi0+bGljZW5jZSI6IiIpOwoJCQkJJG5vbSA9IChpc3NldCggJHRhYi0+bm9tKT8iJHRhYi0+bm9tIjoiIik7CgkJCQkkcHJlbm9tID0gKGlzc2V0KCR0YWItPnByZW5vbSk/IiR0YWItPnByZW5vbSI6ICIiKTsKCQkJCSRuY2x1YiA9IChpc3NldCgkdGFiLT5udW1jbHViKT8iJHRhYi0+bnVtY2x1YiI6IiIpOwoJCQkJJGFjdGlmID0gMDsKCQkJCSRzZXhlID0gKCFlbXB0eSgkdGFiLT5zZXhlKT8iJHRhYi0+c2V4ZSI6IiIpOwoJCQkJJHR5cGUgPSAoIWVtcHR5KCR0YWItPnR5cGUpPyIkdGFiLT50eXBlIiA6IiIpOwoJCQkJJGNlcnRpZiA9ICghZW1wdHkoJHRhYi0+Y2VydGlmKT8iJHRhYi0+Y2VydGlmIjoiIik7CgkJCQkkdmFsaWRhdGlvbiA9ICghZW1wdHkoJHRhYi0+dmFsaWRhdGlvbik/IiR0YWItPnZhbGlkYXRpb24iOiIiKTsKCQkJCSRlY2hlbG9uID0gKCFlbXB0eSgkdGFiLT5lY2hlbG9uKT8iJHRhYi0+ZWNoZWxvbiI6IiIpOwoKCQkJCSRwbGFjZSA9ICghZW1wdHkoJHRhYi0+cGxhY2UpPyIkdGFiLT5wbGFjZSI6IiIpOwoJCQkJJHBvaW50ID0gKCFlbXB0eSgkdGFiLT5wb2ludCk/IiR0YWItPnBvaW50IjoiIik7CgkJCQkkY2F0ID0gKCFlbXB0eSgkdGFiLT5jYXQpPyIkdGFiLT5jYXQiOiIiKTsKCgoJCQkJLy8kZGVzaWduYXRpb24gPSAncsOpY3Vww6lyYXRpb24gZGVzIGpvdWV1cnMnOwoKCQkJCSRxdWVyeSA9ICJTRUxFQ1QgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIGxpY2VuY2UgPSA/IjsKCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlKSk7CgoJCQkJaWYoJGRicmVzdWx0ICAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkgCgkJCQl7CgkJCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIChpZCwgbGljZW5jZSwgbm9tLCBwcmVub20sYWN0aWYsIHNleGUsIHR5cGUsIGNlcnRpZiwgdmFsaWRhdGlvbiwgZWNoZWxvbiwgcGxhY2UsIHBvaW50LCBjYXQpIFZBTFVFUyAoJycsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIjsKCQkJCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGxpY2VuY2UsJG5vbSwgJHByZW5vbSwkYWN0aWYsICRzZXhlLCAkdHlwZSwgJGNlcnRpZiwgJHZhbGlkYXRpb24sICRlY2hlbG9uLCRwbGFjZSwkcG9pbnQsICRjYXQpKTsKCQkJCQkkaSsrOwoKCQkJCQlpZigkZGJyZXN1bHRhdCkKCQkJCQl7CgkJCQkJCQoJCQkJCQkvL29uIGxlIHBvdXNzZSBkYW5zIGxhIHRhYmxlIGRlcyByw6ljdXDDqXJhdGlvbgoJCQkJCQkkcXVlcnkgPSAiU0VMRUNUIGxpY2VuY2UgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyBXSEVSRSBsaWNlbmNlID0gPyBBTkQgc2Fpc29uID0gPyI7CgkJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlLCAkc2Fpc29uKSk7CgkJCQkJCSRjb3VudCA9ICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKTsKCQkJCQkJaWYoJGNvdW50PT0wKS8vb24gZXN0IG9rICwgcGFzIGQnZW5yZWdpc3RyZW1lbnQgY29ycmVzcG9uZGFudAoJCQkJCQl7CgkJCQkJCQkvL29uIGZhaXQgbGEgdG90YWxlIGVuIHLDqWN1cMOpcmFudCB0b3V0ZXMgbGVzIGRvbm7DqWVzID8KCQkJCQkJCS8vb8O5IG9uIGxhaXNzZSBsJ2FkbWluIGxlIGZhaXJlID8KCQkJCQkJCS8vcG91ciBsJ2hldXJlIG9uIGZhaXQgbGUgbWluaQoJCQkJCQkJJHF1ZXJ5MiA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyAoaWQsIHNhaXNvbiwgZGF0ZW1haiwgbGljZW5jZSwgc2l0X21lbnMsZmZ0dCxtYWpfZmZ0dCxzcGlkLG1hal9zcGlkLG1hal90b3RhbCxzcGlkX3RvdGFsKSBWQUxVRVMoJycsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIjsKCQkJCQkJCSRkYnJlc3VsdDIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJHNhaXNvbiwkbm93LCRsaWNlbmNlLCdKYW52aWVyIDIwMDAnLDAsMCwwLDAsMCwwKSk7CgoJCQkJCQkJLy9vbiB0ZXN0ZSBsYSByZXF1ZXRlCgkJCQkJCQlpZighJGRicmVzdWx0MikKCQkJCQkJCXsKCQkJCQkJCQkvL3VuZSBlcnJldXIgPyBsYXF1ZWxsZSA/CgkJCQkJCQkJJG1lc3NhZ2UgPSAkZGItPkVycm9yTXNnKCk7CgkJCQkJCQkJJHN0YXR1cyA9ICdQYiBKb3VldXIgcG91c3PDqSc7CgkJCQkJCQkJJGFjdGlvbiA9ICdwdXNoX3BsYXllcic7CgkJCQkJCQkJcGluZ19hZG1pbl9vcHM6OmVjcmlyZWpvdXJuYWwoJG5vdywkc3RhdHVzLCRtZXNzYWdlLCRhY3Rpb24pOwoJCQkJCQkJCQoKCQkJCQkJCX0KCQkJCQkJCWVsc2UgLy90b3V0IHMnZXN0IGJpZW4gcGFzc8OpCgkJCQkJCQl7CgkJCQkJCQkJLy9vbiDDqWNyaXQgZGFucyBsZSBqb3VybmFsCgkJCQkJCQkJJHN0YXR1cyA9ICdKb3VldXIgcG91c3PDqSc7CgkJCQkJCQkJJGRlc2lnbmF0aW9uID0gJ2pvdWV1ciBwb3Vzc8OpIDogJy4kbGljZW5jZTsKCQkJCQkJCQkkYWN0aW9uID0gJ3B1c2hfcGxheWVyJzsKCQkJCQkJCQlwaW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsJGRlc2lnbmF0aW9uLCRhY3Rpb24pOwoJCQkJCQkJCQoJCQkJCQkJfQoKCQkJCQkJfQoJCQkJCQkvL29uIMOpY3JpdCBkYW5zIGxlIGpvdXJuYWwKCQkJCQkJJHN0YXR1cyA9ICdPayc7CgkJCQkJCSRtZXNzYWdlID0gIkluY2x1c2lvbiBkZSAiLiRub20uIiAiLiRwcmVub207CgkJCQkJCSRhY3Rpb24gPSAicmV0cmlldmVfdXNlcnMiOwoJCQkJCQlwaW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsJG1lc3NhZ2UsJGFjdGlvbik7CgkJCQkJfQoJCQkKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkvL2xlIGpvdWV1ciBleGlzdGUgZMOpasOgICwgb24gZmFpdCB1biB1cGdyYWRlCgkJCQkJLy9vbiB2w6lyaWZpZQoJCQkJCSRhKys7CgkJCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBTRVQgYWN0aWYgPSA/LHNleGUgPSA/LCB0eXBlID0gPywgY2VydGlmID0gPywgdmFsaWRhdGlvbiA9ID8sIGVjaGVsb24gPSA/LCBwbGFjZSA9ID8sIHBvaW50ID0gPywgY2F0ID0gPyBXSEVSRSBsaWNlbmNlID0gPyI7CgkJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGFjdGlmLCRzZXhlLCAkdHlwZSwgJGNlcnRpZiwkdmFsaWRhdGlvbiwgJGVjaGVsb24sICRwbGFjZSwgJHBvaW50LCAkY2F0LCAkbGljZW5jZSkpOwoJCQkJfQkJCgoJCQoJCQl9Ly8gZmluIGR1IGZvcmVhY2gKCSR0aGlzLT5SZWRpcmVjdCgkaWQsJ3JldHJpZXZlX3VzZXJzJywkcmV0dXJuaWQsJHBhcmFtcyA9IGFycmF5KCJkaXJlY3Rpb24iPT4iZmZ0dCIpKTsKCQoJfS8vZmluIGR1IGVsc2UKfQoKCQoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.sit_mens.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwokbW9pc19jb3VyYW50ID0gZGF0ZSgnbicpOwokYW5uZWVfY2hvaXNpZSA9IGRhdGUoJ1knKTsKJG1vaXNfY2hvaXNpID0gJyc7CiRqb3VyID0gZGF0ZSgnZCcpOwokcGhhc2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKTsKJHNhaXNvbl9jb3VyYW50ZSA9IChpc3NldCgkcGFyYW1zWydzYWlzb24nXSk/JHBhcmFtc1snc2Fpc29uJ106JHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpKTsKCWlmKGlzc2V0KCRwYXJhbXNbJ21vaXMnXSkgJiYgJHBhcmFtc1snbW9pcyddICE9JycpCgl7CgkJJG1vaXNfY2hvaXNpID0gJHBhcmFtc1snbW9pcyddOwoJfQoJZWxzZQoJewoJCWlmKCRqb3VyIDwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2pvdXJfc2l0X21lbnMnKSkKCQl7CgkJCSRtb2lzX2Nob2lzaSA9ICRtb2lzX2NvdXJhbnQtMTsKCQl9CgkJZWxzZQoJCXsKCQkJJG1vaXNfY2hvaXNpID0gJG1vaXNfY291cmFudDsKCQl9IAoJfQoKCWlmKCRtb2lzX2Nob2lzaSA9PTEpCgl7CgkJJG1vaXNfcHJlY2VkZW50ID0gMTI7CgkJJGFubmVlX2Nob2lzaWUgPSAkYW5uZWVfY2hvaXNpZTsKCX0KCWVsc2UKCXsKCQkkbW9pc19wcmVjZWRlbnQgPSAkbW9pc19jaG9pc2kgLTE7Cgl9CglpZigkbW9pc19jaG9pc2k9PTEyKQoJewoJCSRtb2lzX3N1aXZhbnQgPSAxOwoJCSRhbm5lZV9jaG9pc2llID0gJGFubmVlX2Nob2lzaWUgLSAxOwoJfQoJZWxzZQoJewoJCSRtb2lzX3N1aXZhbnQgPSAkbW9pc19jaG9pc2kgKyAxOwoJfQoKCSRzbWFydHktPmFzc2lnbignbW9pc19wcmVjZWRlbnQnLAoJCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ3NpdF9tZW5zJywkcmV0dXJuaWQsICc8PCBQcsOpY8OpZGVudCcsYXJyYXkoIm1vaXMiPT4iJG1vaXNfcHJlY2VkZW50Iiwic2Fpc29uIj0+JHNhaXNvbl9jb3VyYW50ZSkpKTsKCSRzbWFydHktPmFzc2lnbignbW9pc19zdWl2YW50JywKCQkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdzaXRfbWVucycsJHJldHVybmlkLCAnU3VpdmFudCA+PicsIGFycmF5KCJtb2lzIj0+IiRtb2lzX3N1aXZhbnQiLCJzYWlzb24iPT4kc2Fpc29uX2NvdXJhbnRlKSApKTsKCgokam91ciA9IGRhdGUoJ2onKTsKLy9GYWlyZSB1bmUgcHLDqWbDqXJlbmNlIHBvdXIgbmUgcGFzIGFmZmljaGVyIGxlIG1vaXMgcGFzIGVuY29yZSBlbiBhY2PDqHMgbGlicmUgPwoKJHBoYXNlX2NvdXJhbnRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BoYXNlJyk7CgokcXVlcnkgPSAiU0VMRUNUIHNtLmxpY2VuY2Usc20ubW9pcywgc20ucG9pbnRzLCBzbS5jbG5hdCwgc20ucmFuZ3JlZywgc20ucmFuZ2RlcCxzbS5wcm9nYW5uLCBzbS5wcm9nbW9pcyxzbS5jbGdsb2IsIENPTkNBVF9XUygnICcsIGoubm9tLCBqLnByZW5vbSkgQVMgam91ZXVyIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIHNtLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBqIFdIRVJFIHNtLmxpY2VuY2UgID0gai5saWNlbmNlIjsvLyIgV0hFUkUgYW5uZWUgPSA/IEFORCBtb2lzID0gPyI7CgoJaWYoaXNzZXQoJHBhcmFtc1snbW9pcyddKSAmJiAkcGFyYW1zWydtb2lzJ10gIT0nJykKCXsKCQkkcXVlcnkuPSIgQU5EIG1vaXMgPSA/IjsKCQkkcGFybXNbJ21vaXMnXSA9ICRtb2lzX2Nob2lzaTsKCQoJfQoJZWxzZQoJewoJCSRxdWVyeS49IiBBTkQgbW9pcyA9ID8iOwoJCSRwYXJtc1snbW9pcyddID0gJG1vaXNfY2hvaXNpOwoJfQoJCgkkcXVlcnkuPSIgQU5EIHNhaXNvbiA9ID8iOwoJJHBhcm1zWydzYWlzb24nXSA9ICRzYWlzb25fY291cmFudGU7CgkvL2VjaG8gJHF1ZXJ5OwoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgJHBhcm1zKTsKCiRyb3djbGFzcz0gJ3JvdzEnOwokcm93YXJyYXk9IGFycmF5ICgpOwoKaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQp7CiAgICAJd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCXsKCQoJCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJCSRvbmVyb3ctPnJvd2NsYXNzPSAkcm93Y2xhc3M7CgkJJG9uZXJvdy0+am91ZXVyPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ3VzZXJfcmVzdWx0cycsJHJldHVybmlkLCAkcm93Wydqb3VldXInXSwgYXJyYXkoImxpY2VuY2UiPT4kcm93WydsaWNlbmNlJ10sIm1vbnRoIj0+JG1vaXNfY2hvaXNpLTEsInNhaXNvbiI9PiRzYWlzb25fY291cmFudGUpKTsKCQkkb25lcm93LT5wb2ludHMgPSAkcm93Wydwb2ludHMnXTsKCQkkb25lcm93LT5jbGdsb2IgPSAkcm93WydjbGdsb2InXTsKCQkkb25lcm93LT5jbG5hdD0gJHJvd1snY2xuYXQnXTsKCQkkb25lcm93LT5yYW5ncmVnPSAkcm93WydyYW5ncmVnJ107CgkJJG9uZXJvdy0+cmFuZ2RlcD0gJHJvd1sncmFuZ2RlcCddOwoJCSRvbmVyb3ctPnByb2dtb2lzPSAkcm93Wydwcm9nbW9pcyddOwoJCSRvbmVyb3ctPnByb2dhbm49ICRyb3dbJ3Byb2dhbm4nXTsKCQkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJCSRyb3dhcnJheVtdPSAkb25lcm93OwoJfQp9CmVsc2UKewoJZWNobyAiPHA+UGFzIGRlIHLDqXN1bHRhdHMgZGlzcG9uaWJsZXMuPC9wPiI7Cn0KJG1vaXNfZGVmID0gJG1vaXNfY2hvaXNpIC0xOwokbW9pc19lbl9mciA9ICRsaXN0ZV9tb2lzX2ZyWyRtb2lzX2RlZl07CiRzbWFydHktPmFzc2lnbignbW9pc19jaG9pc2knLCAkbW9pc19lbl9mcik7CiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnc2l0bWVucy50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.sit_mens_provisoire.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKZ2xvYmFsICR0aGVtZU9iamVjdDsKCiRzYWlzb25fY291cmFudGUgPSAoaXNzZXQoJHBhcmFtc1snc2Fpc29uJ10pPyRwYXJhbXNbJ3NhaXNvbiddOiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKSk7CiRwaGFzZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwaGFzZV9lbl9jb3VycycpOwoKJG1vaXNfY291cmFudCA9IGRhdGUoJ24nKTsKJGpvdXJfY291cmFudCA9IGRhdGUoJ2onKTsKCmlmKCRqb3VyX2NvdXJhbnQgPCAxMCkKewoJJG1vaXNfY291cmFudCA9ICRtb2lzX2NvdXJhbnQtMTsKfQoKLy8kbW9pc19jb3VyYW50ID0gMzsKCiRxdWVyeT0iU0VMRUNUIENPTkNBVF9XUygnICcsIGoubm9tLCBqLnByZW5vbSkgQVMgam91ZXVyLCBqLmxpY2VuY2UgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBBUyBqICBXSEVSRSAgai5hY3RpZj0nMScgIjsJCgovLyRxdWVyeS49IiBHUk9VUCBCWSBqb3VldXIgT1JERVIgQlkgVG90YWwgREVTQyI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwovL2VjaG8gJHF1ZXJ5Owokcm93Y2xhc3M9ICdyb3cxJzsKJHJvd2FycmF5PSBhcnJheSAoKTsKCmlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCQoJewoJCXdoaWxlKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQl7CgkJCSRsaWNlbmNlID0gJHJvd1snbGljZW5jZSddOwoJCQkkam91ZXVyID0gJHJvd1snam91ZXVyJ107CgkJCS8vb24gcHJlbmQgbGVzIHBvaW50cyBkdSBkZXJuaWVyIG1vaXMobGUgbW9pcyBlbiBjb3VycykJCgkJCSRxdWVyeTIgPSAiU0VMRUNUIHBvaW50cyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyBXSEVSRSBsaWNlbmNlID0gPyBBTkQgbW9pcyA9ID8gQU5EIHNhaXNvbiA9ID8iOwoJCQkkZGJyZXN1bHQyID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsYXJyYXkoJGxpY2VuY2UsJG1vaXNfY291cmFudCwgJHNhaXNvbl9jb3VyYW50ZSkpOwoJCQkkcm93MiA9ICRkYnJlc3VsdDItPkZldGNoUm93KCk7CQkJCQkJCgkJCSRwb2ludHNfcmVmID0gJHJvdzJbJ3BvaW50cyddOwoJCQkKCQkJLy9vbiB2YSBtYWludGVuYW50IGNhbGN1bGVyIGxlIHRvdGFsIGRlcyBwb2ludHMgc3BpZCBkdSBtb2lzIGVuIGNvdXJzIAoJCQkvL3BvdXIgbGVzIGFqb3V0ZXIgZW5zdWl0ZSBhdXggcG9pbnRzIGRlIGxhIGRlcm5pw6hyZSBzaXR1YXRpb24gbWVuc3VlbGxlCgkJCSRxdWVyeTMgPSAiU0VMRUNUIFNVTShwb2ludHJlcykgQVMgdG90YWwgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIFdIRVJFIGxpY2VuY2UgPSA/IEFORCAgTU9OVEgoZGF0ZV9ldmVudCkgPSA/IEFORCBzYWlzb24gPSA/IEFORCBzdGF0dXQgPSAnMSciOwoJCQkkZGJyZXN1bHQzID0gJGRiLT5FeGVjdXRlKCRxdWVyeTMsIGFycmF5KCRsaWNlbmNlLCRtb2lzX2NvdXJhbnQsJHNhaXNvbl9jb3VyYW50ZSkpOwoJCQkKCQkJCWlmKCAkZGJyZXN1bHQzLT5SZWNvcmRDb3VudCgpPjApCgkJCQl7CgkJCQkJJHJvdzMgPSAkZGJyZXN1bHQzLT5GZXRjaFJvdygpOwoJCQkJCSR0b3RhbCA9ICRyb3czWyd0b3RhbCddOwoJCQkJfQoJCQkJaWYoaXNfbnVsbCgkdG90YWwpKQoJCQkJewoJCQkJCSR0b3RhbCA9IDA7CgkJCQl9CgkJCQoJCQkkc29tbWUgPSAkcG9pbnRzX3JlZiskdG90YWw7CgkJCQoJCQkkb25lcm93PSBuZXcgU3RkQ2xhc3MoKTsKCQkJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCQkJJG9uZXJvdy0+am91ZXVyPSAkcm93Wydqb3VldXInXTsKCQkJJG9uZXJvdy0+Y2x0PSAkcG9pbnRzX3JlZjsKCQkJJG9uZXJvdy0+c29tbWU9ICRzb21tZTsKCQkJJG9uZXJvdy0+YmlsYW49ICR0b3RhbDsKCQkJJG9uZXJvdy0+ZGV0YWlscz0gJHRoaXMtPkNyZWF0ZUZyb250ZW5kTGluaygkaWQsICRyZXR1cm5pZCwndXNlcl9yZXN1bHRzX3Byb3YnLCAkY29udGVudHM9J0TDqXRhaWxzJyxhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSwnbW9udGgnPT4kbW9pc19jb3VyYW50KSk7CgkJCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzPSAicm93MiIgOiAkcm93Y2xhc3M9ICJyb3cxIik7CgkJCSRyb3dhcnJheVtdPSAkb25lcm93OwoJCX0KCX0KCQokc21hcnR5LT5hc3NpZ24oJ3JldHVybmxpbmsnLCAKCQkkdGhpcy0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwkcmV0dXJuaWQsICdzaXRfbWVuc19wcm92aXNvaXJlJywkYWRkdGV4dD0nUmV0b3VyJykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3NpdG1lbnNfcHJvdi50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.tag.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXyknJykKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFVzZScpKQogIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJykpOwoJcmV0dXJuOwogICAKICB9CmRlYnVnX2Rpc3BsYXkoJHBhcmFtcywnUGFyYW1ldGVycycpOwoKJGRiID0mICR0aGlzLT5HZXREYigpOwokc2Fpc29uID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwokcGhhc2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnUGhhc2VfZW5fY291cnMnKTsKJGVkaXQgPSAwOy8vc2VydCDDoCBkaXN0aW5ndWVyIGwnYWpvdXQgcGFyIGTDqWZhdXQgMCBkJ3VuZSDDqWRpdGlvbiAoPSAxKQokcmVjb3JkX2lkID0gJyc7CiRxdWVyeSA9ICJTRUxFQ1QgaWQsIGNvZGVfY29tcGV0LCBpbmRpdnMgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMiOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCmlmKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk+MCkKewoJd2hpbGUoJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCXsKCQkkdGFnID0gIntQaW5nIGFjdGlvbj0nIjsKCQkkaWQgPSAkcm93WydpZCddOwoJCSRjb2RlID0gJHJvd1snY29kZV9jb21wZXQnXTsKCQkkaW5kaXZzID0gJHJvd1snaW5kaXZzJ107CgkJCgkJaWYoJGluZGl2cyA9PScxJykKCQl7CgkJCSR0YWcuPSJpbmRpdmlkdWVsbGVzJyI7CgkJfQoJCWVsc2UKCQl7CgkJCSR0YWcuPSJwYXItZXF1aXBlcyciOwoJCX0KCQkkdGFnLj0iIHR5cGVfY29tcGV0PSckY29kZSciOwoJCSR0YWcuPSJ9IjsKCQllY2hvICR0YWc7CgkJJHNxbGFycmF5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgU0VUIHRhZyA9ID8gV0hFUkUgaWQgPSA/IjsKCQkkZGItPkV4ZWN1dGUoJHNxbGFycmF5LCBhcnJheSgkdGFnLCRpZCkpOwoJCS8vdW5zZXQoJHRhZyk7Cgl9CgoKfQoKLyogCiR0aGlzLT5TZXRNZXNzYWdlKCdVcGRhdGUgdGFnIHLDqWFsaXPDqScpOwokdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdjb21wZXRpdGlvbnMnKTsKKi8KIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.topFlop.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCAkZ0NtcykgKSBleGl0OwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgICAgICAgICAgIFRvcCBvdSBmbG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3ByZWZzLnBocCcpOwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywnUGFyYW1ldGVycycpOwokc2Fpc29uX2NvdXJhbnRlID0gKGlzc2V0KCRwYXJhbXNbJ3NhaXNvbiddKSk/JHBhcmFtc1snc2Fpc29uJ106JHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwovL29uIGNvbW1lbmNlIGRpcmVjdCBwYXIgbGEgcmVxdWV0ZQokZGIgPSYgJHRoaXMtPkdldERiKCk7CiR0aXRsZXRhYmxlID0gJyc7Ly9DZWNpIGVzdCBsZSB0aXRyZSBkZSBsYSBiYWxpc2UgSDEKJGdldG1vcmUgPT09IEZBTFNFOy8vcG91ciBhZmZpY2hlciBvdSBub24gbGUgbGllbiBwbHVzIHBhciBkw6lmYXV0IG5vbi4KJHBhcm1zID0gYXJyYXkoKTsKJHF1ZXJ5MSA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJyxqLm5vbSwgai5wcmVub20pIEFTIGpvdWV1cixzcC5hZHZub21wcmUsc3AuYWR2Y2xhb2Ysc3AudmQsIHNwLnBvaW50cmVzIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXMgQVMgc3AsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogV0hFUkUgai5saWNlbmNlID0gc3AubGljZW5jZSBBTkQgc3Auc2Fpc29uID0gPyAiOy8vCgovL09uIHJlZ2FyZGUgc2kgb24gYSBtaXMgZGVzIHBhcmFtZXRyZXMKLy8gZMOpasOgIGxhIHNhaXNvbgokcGFybXNbJ3NhaXNvbiddID0gJHNhaXNvbl9jb3VyYW50ZTsKCi8vdG9wIG91IGZsb3AgPwovL29uIGVzc2FpZSBsZSB0b3AgZCdhYm9yZAoJaWYgKGlzc2V0KCRwYXJhbXNbJ3BlcmYnXSkgJiYgJHBhcmFtc1sncGVyZiddICE9JycpCgl7CgkJJHF1ZXJ5MS49ICIgQU5EIHNwLnZkID0gPyI7CgkJCgkJaWYoJHBhcmFtc1sncGVyZiddID09J3RvcCcpCgkJewoJCQkkcGFybXNbJ3ZpY3RvaXJlJ10gPSAxOwoJCQkkdGl0bGV0YWJsZSA9ICdMZXMgbWVpbGxldXJlcyBwZXJmcyc7CgkJfQoJCWVsc2UKCQl7CgkJCSRwYXJtc1sndmljdG9pcmUnXSA9IDA7CgkJCSR0aXRsZXRhYmxlID0gJ0xlcyBwaXJlcyBmbG9wcyc7CgkJfQoJfQoJZWxzZQoJewoJCSRxdWVyeTEuPSAiIEFORCBzcC52ZCA9ID8iOwoJCSRwYXJtc1sndmljdG9pcmUnXSA9IDE7CgkJJHRpdGxldGFibGUgPSAnTGVzIG1laWxsZXVyZXMgcGVyZnMnOwoJfQoKCWlmKGlzc2V0KCRwYXJhbXNbJ2xpY2VuY2UnXSkgJiYgJHBhcmFtc1snbGljZW5jZSddICE9JycpCgl7CgkJJHF1ZXJ5MS49IiBBTkQgai5saWNlbmNlID0gPyI7CgkJJHBhcm1zWydsaWNlbmNlJ10gPSAkcGFyYW1zWydsaWNlbmNlJ107Cgl9CgkvL29uIHRlc3RlIGF1c3NpIGxlIG1vaXMKCWlmKGlzc2V0KCRwYXJhbXNbJ21vaXMnXSkgJiYgJHBhcmFtc1snbW9pcyddICE9ICcnKQoJewoJCSRtb2lzX2Nob2lzaSA9ICRwYXJhbXNbJ21vaXMnXTsKCQkkcXVlcnkxLj0gIiBBTkQgTU9OVEgoc3AuZGF0ZV9ldmVudCkgPSA/IjsKCQkkcGFybXNbJ21vaXMnXSA9ICRtb2lzX2Nob2lzaTsKCX0KJHF1ZXJ5MS49ICIgT1JERVIgQlkgc3AucG9pbnRyZXMgREVTQyI7CQoJaWYoaXNzZXQoJHBhcmFtc1snbGltaXQnXSkgJiYgJHBhcmFtc1snbGltaXQnXT4wKQoJewoJCSRxdWVyeTEuPSAiIExJTUlUIDAsID8iOwoJCSRwYXJtc1snbGltaXQnXSA9ICRwYXJhbXNbJ2xpbWl0J107CgkJJGdldG1vcmUgPSAnVHJ1ZSc7Cgl9CgkKCgkKCQoJCi8vZWNobyAkcXVlcnkxOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MSwkcGFybXMpOwokcm93YXJyYXkgPSBhcnJheSgpOwokcm93Y2xhc3M9ICdyb3cxJzsKaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKT4wKQp7Cgl3aGlsZSgkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJewoJCSRvbmVyb3cgPSBuZXcgU3RkQ2xhc3MoKTsKCQkkb25lcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsKCQkkb25lcm93LT5qb3VldXIgPSAkcm93Wydqb3VldXInXTsKCQkkb25lcm93LT5hZHYgPSAkcm93WydhZHZub21wcmUnXTsKCQkkb25lcm93LT5hZHZjbGFvZiA9ICRyb3dbJ2FkdmNsYW9mJ107CgkJJG9uZXJvdy0+cG9pbnRyZXMgPSAkcm93Wydwb2ludHJlcyddOwoJCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzPSAicm93MiIgOiAkcm93Y2xhc3M9ICJyb3cxIik7CgkJJHJvd2FycmF5W109ICRvbmVyb3c7Cgl9Cn0KZWxzZQp7CgllY2hvICRkYi0+RXJyb3JNc2coKTsKfQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKJHNtYXJ0eS0+YXNzaWduKCdnZXRtb3JlJywkZ2V0bW9yZSk7CiRzbWFydHktPmFzc2lnbignbW9yZScsCgkkdGhpcy0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwgJHJldHVybmlkLCd0b3BGbG9wJywkY29udGVudHM9J1BsdXMnLGFycmF5KCJwZXJmIj0+InRvcCIpLCcnLCcnLCAkaW5saW5lPSd0cnVlJywnJywkdGFyZ2V0Y29udGVudG9ubHk9J3RydWUnKSk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgndG9wZmxvcC50cGwnKTsKCiMKI0VPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.updatecompte.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKaWYoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgU2V0IFByZWZzJykpCnsKCSR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKfQovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKJGlkQXBwbGkgPSAnJzsKJG1vdGRlcGFzc2UgPSAnJzsKJHRtID0gJyc7Ly9sZSB0aW1lc3RhbXAgbm9uIGNyeXB0w6kKJGVycm9yID0gMDsvL29uIGluaXRpYWxpc2UgdW4gY29tcHRldXIgZCdlcnJldXJzIAokZGVzaWduYXRpb24gPSAnJzsvL29uIGluaXRpYWxpc2UgbGVzIG1lc3NhZ2VzIGQnZXJyZXVycwoKaWYoaXNzZXQoJHBhcmFtc1snaWRBcHBsaSddKSAmJiAkcGFyYW1zWydpZEFwcGxpJ10gIT0nJykKewoJJGlkQXBwbGkgPSAkcGFyYW1zWydpZEFwcGxpJ107CgkKfQplbHNlCnsKCSRlcnJvcisrOwoJJGRlc2lnbmF0aW9uLj0iSWwgbWFucXVlIGwnSWQgZGUgbCdhcHBsaWNhdGlvbi4iOwp9CmlmKGlzc2V0KCRwYXJhbXNbJ21vdGRlcGFzc2UnXSkgJiYgJHBhcmFtc1snbW90ZGVwYXNzZSddICE9JycpCnsKCSRtb3RkZXBhc3NlID0gJHBhcmFtc1snbW90ZGVwYXNzZSddOwoJLy9vbiBjcnlwdGUgbGUgbW90IGRlIHBhc3NlIAoJJGNkZSA9IGhhc2goJ21kNScsICRtb3RkZXBhc3NlLCBGQUxTRSk7CgkJCn0KZWxzZQp7CgkkZXJyb3IrKzsKCSRkZXNpZ25hdGlvbi49IiBWb3RyZSBtb3QgZGUgcGFzc2UgZXN0IG1hbnF1YW50LiI7CgkKfQoKCmlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzZXJpZScpID09JycpCnsKCQoJJHNlcmllID0gcGluZ19hZG1pbl9vcHM6OnJhbmRvbV9zZXJpZSgxNSk7Cn0KZWxzZQp7CgkJJHNlcmllID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NlcmllJyk7CQoJCn0KaWYoJGVycm9yPjApCnsKCSR0aGlzLT5TZXRNZXNzYWdlKCRkZXNpZ25hdGlvbik7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdjb21wdGUnKTsKfQplbHNlCnsKCS8vdHQgZXN0IG9rLCBvbiBwZXV0IGNvbW1lbmNlci4uLgoJLy9vbiBtZXQgbCdpZCBkZSBsJ2FwcGxpY2F0aW9uIGV0IGxlIG1vdCBkZSBwYXNzZSBlbiBwcsOpZsOpcmVuY2UKCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdpZEFwcGxpJywkaWRBcHBsaSk7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbW90ZGVwYXNzZScsJGNkZSk7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc2VyaWUnLCRzZXJpZSk7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZ2V0SW5pdGlhbGlzYXRpb24nLCRyZXR1cm5pZCwgYXJyYXkoImluc3RhbGwiPT4iMSIsICJzdGVwIj0+IjEiKSk7CgkKfQojCiNFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.updateoptions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oICdQaW5nIFNldCBQcmVmcycgKSApCnsKICByZXR1cm47Cn0KLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CiRzdGFsbCA9IDA7CmlmKGlzc2V0KCRwYXJhbXNbJ3N0YWxsJ10pICYmICRwYXJhbXNbJ3N0YWxsJ10gPT0iMSIpCnsKCSRzdGFsbCA9ICRwYXJhbXNbJ3N0YWxsJ107Cn0KLy8kbm9tX2VxdWlwZXMgPSBzdHJ0b3VwcGVyKCRwYXJhbXNbJ25vbV9lcXVpcGVzJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnY2x1Yl9udW1iZXInLCAkcGFyYW1zWydjbHViX251bWJlciddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2xpZ3VlJywgJHBhcmFtc1snbGlndWUnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd6b25lJywgJHBhcmFtc1snem9uZSddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlcCcsICRwYXJhbXNbJ2RlcCddKTsKLy9wb3VyIGxhIHZlcnNpb24gMC4xIGJldGEyIG9uIHByb3Bvc2VyYSBkZSBkw6lkdWlyZSBsYSBsaWd1ZSBldCBsZSBkw6lwYXJ0ZW1lbnQgYXV4cXVlbHMgbGUgY2x1YiBhcHBhcnRpZW50Ci8vZXQgb24gbGVzIG1ldHRyYSBkYW5zIGxlcyBwcsOpZsOpcmVuY2VzIMOgIGNyw6llciDDqWdhbGVtZW50CgokdGhpcy0+U2V0UHJlZmVyZW5jZSgnam91cl9zaXRfbWVucycsICRwYXJhbXNbJ2pvdXJfc2l0X21lbnMnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwaGFzZV9lbl9jb3VycycsICRwYXJhbXNbJ3BoYXNlX2VuX2NvdXJzJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJywgJHBhcmFtc1snc2Fpc29uX2VuX2NvdXJzJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbm9tX2VxdWlwZXMnLCBzdHJ0b3VwcGVyKCRwYXJhbXNbJ25vbV9lcXVpcGVzJ10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BvcHVsYXRlX2NhbGVuZGFyJywgJHBhcmFtc1sncG9wdWxhdGVfY2FsZW5kYXInXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhZmZpY2hlX2NsdWJfdW5pcXVlbWVudCcsICRwYXJhbXNbJ2FmZmljaGVfY2x1Yl91bmlxdWVtZW50J10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnc3BpZF9ub21icmVzJywgJHBhcmFtc1snc3BpZF9ub21icmVzJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZmZ0dF9ub21icmVzJywgJHBhcmFtc1snZmZ0dF9ub21icmVzJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnc3BpZF9pbnRlcnZhbCcsICRwYXJhbXNbJ3NwaWRfaW50ZXJ2YWwnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmZnR0X2ludGVydmFsJywgJHBhcmFtc1snZmZ0dF9pbnRlcnZhbCddKTsKJHRoaXMtPlNldE1lc3NhZ2UoJ1ZvcyBvcHRpb25zIG9udCDDqXTDqSBtaXNlcyDDoCBqb3VycycpOwokdGhpcy0+QXVkaXQoJycsICdQaW5nJywkcGFyYW1zWydjbHViX251bWJlciddKTsKLy8kdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdqb3VldXJzJyk7CmlmKGlzc2V0KCRwYXJhbXNbJ2RlbW8nXSkgJiYgJHBhcmFtc1snZGVtbyddID09PSB0cnVlKQp7CgkvL2lsIGZhdXQgc3VwcHJpbWVyIHRvdXRlcyBsZXMgZG9ubsOpZXMgZGUgdG91dGVzIGxlcyB0YWJsZXMgc2F1ZiBjb21ww6l0aXRpb25zIGdlbnJlIHVuaW5zdGFsbAoJLy9tYXNzX2RlbGV0ZSBkZW1vID8KCQp9CmlmKCRzdGFsbCA9PSAiMSIpCnsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdnZXRJbml0aWFsaXNhdGlvbicsICRyZXR1cm5pZCwgYXJyYXkoInN0YWxsIj0+JHN0YWxsLCAic3RlcCI9PiIyIikpOwp9CmVsc2UKewoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwp9Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.uploadfile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiBnQ21zDQogKi8NCiANCmlmICghaXNzZXQoJGdDbXMpKSANCglleGl0ICgpOw0KDQovKioNCiogVGhpcyBtb2R1bGUNCiovDQoNCiRzTW9kID0gJHRoaXMtPkdldE5hbWUoKTsNCg0KLyoqDQogKiBQZXJtaXNzaW9ucw0KICovDQoNCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbigkc01vZCAuJyBBZGQnKSB8fCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbigkc01vZCAuJyBFZGl0JykpIA0KCWV4aXQgKCk7DQoNCg0KLyoqDQoqIERlY2xhcmUNCiovDQoNCiRhQ29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQoNCiRzU2VsZWN0RmlsZSA9IChpc3NldCgkcGFyYW1zWydmaWxlJ10pKSA/ICRwYXJhbXNbJ2ZpbGUnXSA6IC0xOwkNCg0KJGJFcnJvciA9IDA7DQokc1Jlc3BvbnNlID0gJyc7DQokc1dpZHRoID0gJyc7DQokc0hlaWdodCA9ICcnOw0KJHNGaWxlID0gJyc7DQoNCi8qKioNCiogQWN0aW9ucw0KKi8NCg0KaWYgKCFpc3NldCgkX0ZJTEVTWyRzU2VsZWN0RmlsZV0pKQ0Kew0KCSRiRXJyb3IgPSAxOw0KCSRzUmVzcG9uc2UgPSAkdGhpcy0+TGFuZygnRXJyb3IgdXBsb2FkLiBObyBGaWxlIHNlbGVjdGVkIScpOw0KfQ0KDQppZiAoJGJFcnJvciA9PSAwKQ0Kew0KCS8vIGRhdCBmaWxlDQoJJHNGaWxlTmFtZSAJPSAkX0ZJTEVTWyRzU2VsZWN0RmlsZV1bJ25hbWUnXTsNCgkkc0ZpbGVUeXBlIAk9ICRfRklMRVNbJHNTZWxlY3RGaWxlXVsndHlwZSddOyANCgkkc0ZpbGVUbXAgCT0gJF9GSUxFU1skc1NlbGVjdEZpbGVdWyd0bXBfbmFtZSddOw0KCSRzRmlsZUVycm9yCT0gJF9GSUxFU1skc1NlbGVjdEZpbGVdWydlcnJvciddOw0KCSRzRmlsZVNpemUgCT0gJF9GSUxFU1skc1NlbGVjdEZpbGVdWydzaXplJ107DQoNCgkvLyBmaWxlIGV4dGVuc2lvbg0KCSRzRXh0ID0gc3RycmNocigkc0ZpbGVOYW1lLCIuIik7CQ0KCSRzRmlsZU5hbWUgPSBzdWJzdHIoJHNGaWxlTmFtZSwgMCwgc3RybGVuKCRzRmlsZU5hbWUpLXN0cmxlbigkc0V4dCkpOw0KDQoJLy8gdGVzdCBmaWxlIGV4dGVuc2lvbg0KCSRhRXh0ID0gZXhwbG9kZSgnLCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2V4dGVuc2lvbnNfaW1hZ2VzJywnJykpOw0KICAgIGlmICghaW5fYXJyYXkoJHNFeHQsICRhRXh0KSkgDQogICAgew0KICAgIAkkYkVycm9yID0gMTsNCgkJJHNSZXNwb25zZSA9ICR0aGlzLT5MYW5nKCdCYWQgRmlsZSBmb3JtYXQhJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2V4dGVuc2lvbnNfaW1hZ2VzJywnJykpOw0KICAgIH0NCn0NCg0KaWYgKCRiRXJyb3IgPT0gMCkNCnsNCglsaXN0KCR3aWR0aCwgJGhlaWdodCkgPSBnZXRpbWFnZXNpemUoJHNGaWxlVG1wKTsNCg0KCSRzTWF4V2lkdGggPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWF4X2ltYWdlc193aWR0aCcsJycpOw0KCSRzTWF4SGVpZ2h0ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ21heF9pbWFnZXNfaGVpZ2h0JywnJyk7DQoJaWYgKCR3aWR0aCA+ICRzTWF4V2lkdGggfHwgJGhlaWdodCA+ICRzTWF4SGVpZ2h0KQ0KCXsNCgkJJGJFcnJvciA9IDE7DQoJCSRzUmVzcG9uc2UgPSAkdGhpcy0+TGFuZygnRXJyb3IgRmlsZSBkaW1lbnNpb25zIScsICRzTWF4V2lkdGguJ3gnLiRzTWF4SGVpZ2h0KTsNCgl9DQp9DQoNCmlmICgkYkVycm9yID09IDApDQp7DQoJaWYgKCRzRmlsZVNpemUgPiAkYUNvbmZpZ1snbWF4X3VwbG9hZF9zaXplJ10pDQoJew0KCQkkYkVycm9yID0gMTsNCgkJJHNSZXNwb25zZSA9ICR0aGlzLT5MYW5nKCdFcnJvciBGaWxlc2l6ZSEnLCBjZWlsKCRhQ29uZmlnWydtYXhfdXBsb2FkX3NpemUnXSoxMDI0LzEwMDAwMDApLidrbycpOw0KCX0NCn0NCg0KaWYgKCRiRXJyb3IgPT0gMCkNCnsJDQoJaWYgKCRwYXJhbXNbJ2ZpbGVfbmFtZSddID09ICcnKQ0KCXsNCgkJJHNGaWxlTmFtZSA9IG11bmdlX3N0cmluZ190b191cmwoc3RydG9sb3dlcigkc0ZpbGVOYW1lKSkuJHNFeHQ7DQoJDQoJfSBlbHNlIHsNCgkJLy8gaWYgcmVuYW1lIGZpbGUsIHJlbW92ZSBleHQgaWYgdGhpcyBpcyBpbiB0aGUgbmV3IG5hbWUgYW5kIHB1dCBvcmlnaW5lIGV4dA0KCQkkc0ZpbGVOYW1lID0gJHBhcmFtc1snZmlsZV9uYW1lJ107DQoJCSRzRXh0MiA9IHN0cnJjaHIoJHNGaWxlTmFtZSwiLiIpOwkNCgkJJHNGaWxlTmFtZSA9IHN1YnN0cigkc0ZpbGVOYW1lLCAwLCBzdHJsZW4oJHNGaWxlTmFtZSktc3RybGVuKCRzRXh0MikpOw0KCQkkc0ZpbGVOYW1lID0gbXVuZ2Vfc3RyaW5nX3RvX3VybChzdHJ0b2xvd2VyKCRzRmlsZU5hbWUpKS4kc0V4dDsNCgl9DQoNCgkvLyB1cGxvYWQNCgkkc0Rlc3QgPSBjbXNfam9pbl9wYXRoKCRhQ29uZmlnWyd1cGxvYWRzX3BhdGgnXSwgJHBhcmFtc1sncGF0aCddLCAkc0ZpbGVOYW1lKTsNCgkNCgkvL0Btb3ZlX3VwbG9hZGVkX2ZpbGUoJHNGaWxlVG1wLCAkc0Rlc3QpOw0KCWlmIChAY21zX21vdmVfdXBsb2FkZWRfZmlsZSgkc0ZpbGVUbXAsICRzRGVzdCkgPT09IEZBTFNFICkNCiAgICB7DQogICAgCSRhVHJhbnMgPSBhcnJheSgiXFwiID0+ICIgIiwgIi8iID0+ICIgIik7DQoJCSRzRGVzdCA9IHN0cnRyKCRzRGVzdCwgJGFUcmFucyk7DQogICAgCSRiRXJyb3IgPSAxOw0KCQkkc1Jlc3BvbnNlID0gJHRoaXMtPkxhbmcoJ0Vycm9yIE1vdmVmaWxlIScgLCAkc0Rlc3QpOw0KICAgIH0NCn0NCg0KaWYgKCRiRXJyb3IgPT0gMCkNCnsNCglsaXN0KCR3aWR0aCwgJGhlaWdodCkgPSBnZXRpbWFnZXNpemUoJGFDb25maWdbJ3VwbG9hZHNfdXJsJ10gLicvJy4gJHBhcmFtc1snbGluayddIC4nLycuICRzRmlsZU5hbWUpOw0KDQoJLy8gb3V0cHV0DQoJJHNSZXNwb25zZSA9ICR0aGlzLT5MYW5nKCdGaWxlIHVwbG9hZGVkJyk7DQoJJHNXaWR0aCA9ICR3aWR0aDsNCgkkc0hlaWdodCA9ICRoZWlnaHQ7DQoJJHNGaWxlID0gJHBhcmFtc1snbGluayddIC4nLycuICRzRmlsZU5hbWU7DQp9DQoNCnNsZWVwKDEpOw0KDQovLyByZXR1cm4gc2NyaXB0IHRvIGhpZGRlbmZyYW1lDQplY2hvICcNCjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQoJd2luZG93LnRvcC53aW5kb3cuc3RvcF91cGxvYWRmaWxlKCcuICRiRXJyb3IgLicsICInLiAkc0ZpbGUgLiciLCAiJy4gJHNSZXNwb25zZSAuJyIsICInLiAkc1dpZHRoIC4nIiwgIicuICRzSGVpZ2h0IC4nIiwgIicuICRzRmlsZVR5cGUgLiciLCAiJy4gJHNGaWxlU2l6ZSAuJyIpOw0KPC9zY3JpcHQ+JzsNCmV4aXQoKTsNCg==]]></data>
	</file>
	<file>
	  <filename>/action.user_results.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwovL2dsb2JhbCAkdGhlbWVPYmplY3Q7Ci8vcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKJGxpY2VuY2UgPSAnJzsKJGRhdGVfZXZlbnQgPSAnJzsKJGFmZmljaGUgPSAxOy8vY2V0dGUgdmFyaWFibGUgZMOpdGVybWluZSBsJ2FmZmljaGFnZSBwYXIgbW9pcwokc2Fpc29uX2NvdXJhbnRlID0gKGlzc2V0KCRwYXJhbXNbJ3NhaXNvbiddKSk/JHBhcmFtc1snc2Fpc29uJ106JHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwoJaWYoIWlzc2V0KCRwYXJhbXNbJ2xpY2VuY2UnXSkgJiYgJHBhcmFtc1snbGljZW5jZSddID09JycgKQoJewoJCWVjaG8gImxhIGxpY2VuY2UgZXN0IGFic2VudGUgISI7CgkJCgl9CgllbHNlCgl7CgkJJGxpY2VuY2UgPSAkcGFyYW1zWydsaWNlbmNlJ107CgkJJHBhcm1zID0gYXJyYXkoKTsKCQkvL3NpIHVuZSBkYXRlIGVzdCBwcsOpY2lzw6llIGFsb3JzIG9uIGFmZmljaGUgcXVlIGxlcyByw6lzdWx0YXRzIGRlIGNldHRlIGRhdGUKCQlpZihpc3NldCgkcGFyYW1zWydkYXRlX2RlYnV0J10pICYmICRwYXJhbXNbJ2RhdGVfZGVidXQnXSAhPScnKQoJCXsKCQkJLy9vbiB2YSBhbG9ycyBjYWNoZXIgY2VydGFpbnMgw6lsw6ltZW50cyBkZSBsYSBwYWdlCgkJCSRhZmZpY2hlID0gMDsKCQkJJGRhdGVfZGVidXQgPSAkcGFyYW1zWydkYXRlX2RlYnV0J107CgkJCSRkYXRlX2ZpbiA9ICRwYXJhbXNbJ2RhdGVfZmluJ107CgkJCS8vb24gZW4gZMOpZHVpdCBsYSBzYWlzb24gcG91ciBsZSBjYXMgb8O5IG9uIG5lIHNlcmFpdCBwYXMgZGFucyBsYSBzYWlzb24gZW4gY291cnMKCQl9CgkJCgkJaWYoaXNzZXQoJHBhcmFtc1snbW9udGgnXSkgJiYgJHBhcmFtc1snbW9udGgnXSAhPScnKQoJCXsKCQkJJGFmZmljaGUgPSAwOwoJCQkkb2sgPSAxOwoJCQkkbW9udGggPSAkcGFyYW1zWydtb250aCddOwoJCX0KCQlpZigkYWZmaWNoZSA9PTEpCgkJewoJCQkkc21hcnR5LT5hc3NpZ24oJ3BoYXNlMicsCgkJCQkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCd1c2VyX3Jlc3VsdHMnLCRyZXR1cm5pZCwgJ1BoYXNlIDInLCBhcnJheSgicGhhc2UiPT4iMiIsImxpY2VuY2UiPT4kbGljZW5jZSwnc2Fpc29uJz0+JHNhaXNvbl9jb3VyYW50ZSkgKSk7CgkJCSRzbWFydHktPmFzc2lnbigncGhhc2UxJywKCQkJCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ3VzZXJfcmVzdWx0cycsJHJldHVybmlkLCAnUGhhc2UgMScsIGFycmF5KCJwaGFzZSI9PiIxIiwibGljZW5jZSI9PiRsaWNlbmNlLCdzYWlzb24nPT4kc2Fpc29uX2NvdXJhbnRlKSApKTsKCQl9CgkJCgkJJHJvd2FycmF5MSA9IGFycmF5KCk7CgkJJHF1ZXJ5ID0gIlNFTEVDVCBTVU0odmQpIEFTIHZpYywgY291bnQodmQpIEFTIHRvdGFsLCBTVU0ocG9pbnRyZXMpIEFTIHB0cyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIFdIRVJFIGxpY2VuY2UgPSA/IjsvLyIgV0hFUkUgc2Fpc29uID0gPyBBTkQgbGljZW5jZSA9ID8iOwoJCS8vcXFzIHBhcmFtw6h0cmVzCgkJJHBhcm1zWydsaWNlbmNlJ10gPSAkbGljZW5jZTsKCQlpZigkYWZmaWNoZSAhPScwJyl7CgkJCSRxdWVyeS49IiBBTkQgc2Fpc29uID0gPyI7CgkJCSRwYXJtc1snc2Fpc29uJ10gPSAkc2Fpc29uX2NvdXJhbnRlOwoJCX0KCQkvLyRwYXJtc1snc2Fpc29uJ10gPSAkc2Fpc29uX2NvdXJhbnRlOwoJCQoJCS8vb24gcHJlc2VudGUgcGhhc2UgcGFyIHBoYXNlID8KCQkKCQlpZigkYWZmaWNoZSA9PTEpCgkJewoJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKSA9PScxJyApCgkJCXsKCQkJCWlmKCRwYXJhbXNbJ3BoYXNlJ10gPT0yKQoJCQkJewoJCQkJCSRxdWVyeS49ICIgQU5EIE1PTlRIKGRhdGVfZXZlbnQpID49IDEgQU5EIE1PTlRIKGRhdGVfZXZlbnQpIDw9NyI7IAoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRxdWVyeS49ICIgQU5EIE1PTlRIKGRhdGVfZXZlbnQpID4gNyBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPD0xMiI7ICAvLy8vQkVUV0VFTiBOT1coKSBBTkQgKE5PVygpICsgSU5URVJWQUwgNyBEQVkpIjsKCQkJCX0KCQkJfQoJCQllbHNlaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwaGFzZV9lbl9jb3VycycpID09ICcyJykKCQkJewoJCQkJaWYoJHBhcmFtc1sncGhhc2UnXSA9PTEpCgkJCQl7CgkJCQkJJHF1ZXJ5Lj0gIiBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPiA3IEFORCBNT05USChkYXRlX2V2ZW50KSA8PTEyIjsgIC8vLy9CRVRXRUVOIE5PVygpIEFORCAoTk9XKCkgKyBJTlRFUlZBTCA3IERBWSkiOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRxdWVyeS49ICIgQU5EIE1PTlRIKGRhdGVfZXZlbnQpID49IDEgQU5EIE1PTlRIKGRhdGVfZXZlbnQpIDw9NyI7ICAvLy8vQkVUV0VFTiBOT1coKSBBTkQgKE5PVygpICsgSU5URVJWQUwgNyBEQVkpIjsJCgkJCQl9CgkJCX0KCQl9CgkJZWxzZWlmKCRvayA9PScxJykKCQl7CgkJCSRxdWVyeS49IiBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPSA/IjsKCQkJJHBhcm1zWydtb250aCddID0gJG1vbnRoOwoJCX0KCQkKCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgJHBhcm1zKTsKCgkJCWlmKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk+MCkKCQkJewoJCQkJd2hpbGUoJHJvdzEgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJCQl7CgkJCQkJJG9uZXJvdzE9IG5ldyBTdGRDbGFzcygpOwoJCQkJCSRvbmVyb3cxLT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJCQkJCSRvbmVyb3cxLT52aWM9ICRyb3cxWyd2aWMnXTsKCQkJCQkkb25lcm93MS0+dG90YWw9ICRyb3cxWyd0b3RhbCddOwoJCQkJCSRvbmVyb3cxLT5wdHM9ICRyb3cxWydwdHMnXTsKCQkJCQkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJCQkJCSRyb3dhcnJheTFbXT0gJG9uZXJvdzE7CgkJCQl9CgkJCX0KCQkJJHNtYXJ0eS0+YXNzaWduKCdpdGVtczEnLCAkcm93YXJyYXkxKTsKCgoJCSRxdWVyeTEgPSAiU0VMRUNUIENPTkNBVF9XUygnICcsIG5vbSwgcHJlbm9tKSBBUyBqb3VldXIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSBsaWNlbmNlID0gPyI7CgoKCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkxLCBhcnJheSgkbGljZW5jZSkpOwoJCQoJCS8vZmF1ZHJhaXQgdGVzdGVyIHNpIMOnYSBtYXJjaGUgb3Ugbm9uCgkJaWYoISRkYnJlc3VsdGF0KQoJCXsKCQkJJGRlc2lnbmF0aW9uID0gJGRiLT5FcnJvck1zZygpOwoJCQlwaW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgnJywnS08nLCRkZXNpZ25hdGlvbiwnJyk7CgkJfQoJCSRwYXJtcyA9IGFycmF5KCk7CgkJJHJvdzEgPSAkZGJyZXN1bHRhdC0+RmV0Y2hSb3coKTsKCQkkam91ZXVyID0gJHJvdzFbJ2pvdWV1ciddOwoJCSRzbWFydHktPmFzc2lnbignam91ZXVyJywgJGpvdWV1cik7CgkJJHJlc3VsdD0gYXJyYXkgKCk7CgkJJHF1ZXJ5Mz0gIlNFTEVDVCBhZHZub21wcmUsIGFkdmNsYW9mLHBvaW50cmVzLCB2ZCxkYXRlX2V2ZW50IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXMgV0hFUkUgbGljZW5jZSA9ID8gQU5EIHNhaXNvbiA9ID8iOy8vIiBBTkQgbGljZW5jZSA9ID8iOy8vIiBPUkRFUiBCWSBkYXRlX2V2ZW50IEFTQyI7CgkJLy9lY2hvICRxdWVyeTM7CgkJJHBhcm1zWydsaWNlbmNlJ10gPSAkbGljZW5jZTsKCQkkcGFybXNbJ3NhaXNvbiddID0gJHNhaXNvbl9jb3VyYW50ZTsKCQkKCQlpZigkYWZmaWNoZSA9PScxJykKCQl7CgkJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwaGFzZV9lbl9jb3VycycpID09JzEnICkKCQkJewoJCQkJaWYoJHBhcmFtc1sncGhhc2UnXSA9PTIpCgkJCQl7CgkJCQkJJHF1ZXJ5My49ICIgQU5EIE1PTlRIKGRhdGVfZXZlbnQpID49IDEgQU5EIE1PTlRIKGRhdGVfZXZlbnQpIDw9NyI7IAoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRxdWVyeTMuPSAiIEFORCBNT05USChkYXRlX2V2ZW50KSA+IDcgQU5EIE1PTlRIKGRhdGVfZXZlbnQpIDw9MTIiOyAgLy8vL0JFVFdFRU4gTk9XKCkgQU5EIChOT1coKSArIElOVEVSVkFMIDcgREFZKSI7CgkJCQl9CgkJCX0KCQkJZWxzZWlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKSA9PSAnMicpCgkJCXsKCQkJCWlmKCRwYXJhbXNbJ3BoYXNlJ10gPT0xKQoJCQkJewoJCQkJCSRxdWVyeTMuPSAiIEFORCBNT05USChkYXRlX2V2ZW50KSA+IDcgQU5EIE1PTlRIKGRhdGVfZXZlbnQpIDw9MTIiOyAgLy8vL0JFVFdFRU4gTk9XKCkgQU5EIChOT1coKSArIElOVEVSVkFMIDcgREFZKSI7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJHF1ZXJ5My49ICIgQU5EIE1PTlRIKGRhdGVfZXZlbnQpID49IDEgQU5EIE1PTlRIKGRhdGVfZXZlbnQpIDw9NyI7ICAvLy8vQkVUV0VFTiBOT1coKSBBTkQgKE5PVygpICsgSU5URVJWQUwgNyBEQVkpIjsJCgkJCQl9CgkJCX0KCQkJJHF1ZXJ5My49ICIgT1JERVIgQlkgZGF0ZV9ldmVudCBERVNDIjsKCQl9CgkJZWxzZWlmKCRhZmZpY2hlID09JzAnKQoJCXsKCQkJaWYoJG9rPT0nMScpCgkJCXsKCQkJCSRxdWVyeTMuPSIgQU5EIE1PTlRIKGRhdGVfZXZlbnQpID0gPyI7CgkJCQkkcGFybXNbJ2RhdGVfZXZlbnQnXSA9ICRtb250aDsKCQkJCSRxdWVyeTMuPSIgT1JERVIgQlkgZGF0ZV9ldmVudCBERVNDIjsKCQkJCQoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHF1ZXJ5My49IiBBTkQgZGF0ZV9ldmVudCBCRVRXRUVOID8gQU5EID8iOwoJCQkJJHBhcm1zWydkYXRlX2RlYnV0J10gPSAkZGF0ZV9kZWJ1dDsKCQkJCSRwYXJtc1snZGF0ZV9maW4nXSA9ICRkYXRlX2ZpbjsKCQkJCSRxdWVyeTMuPSIgT1JERVIgQlkgZGF0ZV9ldmVudCBERVNDIjsKCQkJCQoJCQl9CgkJfQoJCQoJCWVsc2UKCQl7CgkJCSRxdWVyeTMuPSIgT1JERVIgQlkgZGF0ZV9ldmVudCBERVNDIjsKCQkJCgkJfQoJCQoJCSRkYnJlc3VsdDMgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MywgJHBhcm1zKTsKCQkKCQkkcm93YXJyYXk9IGFycmF5ICgpOwoKCQlpZiAoJGRicmVzdWx0MyAmJiAkZGJyZXN1bHQzLT5SZWNvcmRDb3VudCgpID4gMCkKCQl7CgkJICAgIHdoaWxlICgkcm93PSAkZGJyZXN1bHQzLT5GZXRjaFJvdygpKQoJCQl7CgkKCQkJCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJCQkJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCQkJCSRvbmVyb3ctPmRhdGVfZXZlbnQ9ICRyb3dbJ2RhdGVfZXZlbnQnXTsKCQkJCSRvbmVyb3ctPmFkdm5vbXByZT0gJHJvd1snYWR2bm9tcHJlJ107CgkJCQkvLyRvbmVyb3ctPm5vbT0gJHJvd1snbm9tJ107CgkJCQkkb25lcm93LT5hZHZjbGFvZj0gJHJvd1snYWR2Y2xhb2YnXTsKCQkJCSRvbmVyb3ctPnZkPSAkcm93Wyd2ZCddOwoJCQkJLy8kb25lcm93LT5jb2VmZj0gJHJvd1snY29lZmYnXTsKCQkJCSRvbmVyb3ctPnBvaW50cmVzPSAkcm93Wydwb2ludHJlcyddOwoJCQkJJHJvd2FycmF5W109ICRvbmVyb3c7CgkJICAgICAgCX0KCQl9CgkJLyoKCQllbHNlaWYoJHNhaXNvbl9jb3VyYW50ZSAhPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJykpIC8vIGlsIG4neSBhIHBhcyBkZSByw6lzdWx0YXRzIG9uIHJlZGlyaWdlIHZlcnMgbGVzIHLDqXN1bHRhdHMgZ8OpbsOpcmlxdWVzIGRlIGNldHRlIHBlcnNvbm5lCgkJewoJCQkkdGhpcy0+UmVkaXJlY3RGb3JGcm9udEVuZCgkaWQsICRyZXR1cm5pZCwgJ3VzZXJfcmVzdWx0cycsIGFycmF5KCdsaWNlbmNlJz0+JGxpY2VuY2UsJ3NhaXNvbic9PiRzYWlzb25fY291cmFudGUpKTsKCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPlJlZGlyZWN0Rm9yRnJvbnRFbmQoJGlkLCAkcmV0dXJuaWQsICd1c2VyX3Jlc3VsdHMnLCBhcnJheSgnbGljZW5jZSc9PiRsaWNlbmNlKSk7CgkJfQoJCSovCgkJJHNtYXJ0eS0+YXNzaWduKCdyZXN1bHRhdHMnLAoJCQkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCd1c2VyX3Jlc3VsdHMnLCRyZXR1cm5pZCwkY29udGVudHMgPSAnVG91cyBzZXMgcsOpc3VsdGF0cycsIGFycmF5KCdsaWNlbmNlJz0+JGxpY2VuY2UsJ3NhaXNvbic9PiRzYWlzb25fY291cmFudGUpKSk7Cgl9Ly9maW4gZHUgZWxzZSAoaWYgJGxpY2VuY2UgaXNzZXQpCgokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdvaycsJG9rKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdyZXRvdXInLAogCQkkdGhpcy0+Q3JlYXRlUmV0dXJuTGluaygkaWQsICRyZXR1cm5pZCwnUmV0b3VyJykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKJHNtYXJ0eS0+YXNzaWduKCdhZmZpY2hlJywkYWZmaWNoZSk7Ci8qCiRzbWFydHktPmFzc2lnbigncmVzdWx0YXRzJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ3VzZXJfcmVzdWx0cycsJHJldHVybmlkLCBhcnJheSgnbGljZW5jZSc9PiRsaWNlbmNlKSkpOwoqLwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3VzZXJfcmVzdWx0cy50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.user_results_prov.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwovL2dsb2JhbCAkdGhlbWVPYmplY3Q7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7CiRsaWNlbmNlID0gJyc7CiRkYXRlX2V2ZW50ID0gJyc7CiRhZmZpY2hlID0gMTsKCglpZighaXNzZXQoJHBhcmFtc1snbGljZW5jZSddKSAmJiAkcGFyYW1zWydsaWNlbmNlJ10gPT0nJyApCgl7CgkJZWNobyAibGEgbGljZW5jZSBlc3QgYWJzZW50ZSAhIjsKCQkKCX0KCWVsc2UKCXsKCQkkbGljZW5jZSA9ICRwYXJhbXNbJ2xpY2VuY2UnXTsKCQkKCQkvL3NpIHVuZSBkYXRlIGVzdCBwcsOpY2lzw6llIGFsb3JzIG9uIGFmZmljaGUgcXVlIGxlcyByw6lzdWx0YXRzIGRlIGNldHRlIGRhdGUKCQlpZihpc3NldCgkcGFyYW1zWydkYXRlX2RlYnV0J10pICYmICRwYXJhbXNbJ2RhdGVfZGVidXQnXSAhPScnKQoJCXsKCQkJLy9vbiB2YSBhbG9ycyBjYWNoZXIgY2VydGFpbnMgw6lsw6ltZW50cyBkZSBsYSBwYWdlCgkJCSRhZmZpY2hlID0gMDsKCQkJJGRhdGVfZGVidXQgPSAkcGFyYW1zWydkYXRlX2RlYnV0J107CgkJCSRkYXRlX2ZpbiA9ICRwYXJhbXNbJ2RhdGVfZmluJ107CgkJfQoJCQoJCWlmKGlzc2V0KCRwYXJhbXNbJ21vbnRoJ10pICYmICRwYXJhbXNbJ21vbnRoJ10gIT0nJykKCQl7CgkJCSRhZmZpY2hlID0gMDsKCQkJJG9rID0gMTsKCQkJJG1vbnRoID0gJHBhcmFtc1snbW9udGgnXTsKCQl9CgkJaWYoJGFmZmljaGUgPT0xKQoJCXsKCQkJJHNtYXJ0eS0+YXNzaWduKCdwaGFzZTInLAoJCQkJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwndXNlcl9yZXN1bHRzJywkcmV0dXJuaWQsICdQaGFzZSAyJywgYXJyYXkoInBoYXNlIj0+IjIiLCJsaWNlbmNlIj0+JGxpY2VuY2UpICkpOwoJCQkkc21hcnR5LT5hc3NpZ24oJ3BoYXNlMScsCgkJCQkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCd1c2VyX3Jlc3VsdHMnLCRyZXR1cm5pZCwgJ1BoYXNlIDEnLCBhcnJheSgicGhhc2UiPT4iMSIsImxpY2VuY2UiPT4kbGljZW5jZSkgKSk7CgkJfQoJCQoJCSRyb3dhcnJheTEgPSBhcnJheSgpOwoJCSRxdWVyeSA9ICJTRUxFQ1QgU1VNKHZpY3RvaXJlKSBBUyB2aWMsIGNvdW50KHZpY3RvaXJlKSBBUyB0b3RhbCwgU1VNKHBvaW50cmVzKSBBUyBwdHMgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIFdIRVJFIHNhaXNvbiA9ID8gQU5EIGxpY2VuY2UgPSA/IEFORCBzdGF0dXQgPSAnMSciOwoJCS8vcXFzIHBhcmFtw6h0cmVzCgkJJHBhcm1zWydzYWlzb24nXSA9ICRzYWlzb25fY291cmFudGU7CgkJJHBhcm1zWydsaWNlbmNlJ10gPSAkbGljZW5jZTsKCQkvL29uIHByZXNlbnRlIHBoYXNlIHBhciBwaGFzZSA/CgkJaWYoJGFmZmljaGUgPT0xKQoJCXsKCQkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BoYXNlX2VuX2NvdXJzJykgPT0nMScgKQoJCQl7CgkJCQlpZigkcGFyYW1zWydwaGFzZSddID09MikKCQkJCXsKCQkJCQkkcXVlcnkuPSAiIEFORCBNT05USChkYXRlX2V2ZW50KSA+PSAxIEFORCBNT05USChkYXRlX2V2ZW50KSA8PTciOyAKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkcXVlcnkuPSAiIEFORCBNT05USChkYXRlX2V2ZW50KSA+IDcgQU5EIE1PTlRIKGRhdGVfZXZlbnQpIDw9MTIiOyAgLy8vL0JFVFdFRU4gTk9XKCkgQU5EIChOT1coKSArIElOVEVSVkFMIDcgREFZKSI7CgkJCQl9CgkJCX0KCQkJZWxzZWlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKSA9PSAnMicpCgkJCXsKCQkJCWlmKCRwYXJhbXNbJ3BoYXNlJ10gPT0xKQoJCQkJewoJCQkJCSRxdWVyeS49ICIgQU5EIE1PTlRIKGRhdGVfZXZlbnQpID4gNyBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPD0xMiI7ICAvLy8vQkVUV0VFTiBOT1coKSBBTkQgKE5PVygpICsgSU5URVJWQUwgNyBEQVkpIjsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkcXVlcnkuPSAiIEFORCBNT05USChkYXRlX2V2ZW50KSA+PSAxIEFORCBNT05USChkYXRlX2V2ZW50KSA8PTciOyAgLy8vL0JFVFdFRU4gTk9XKCkgQU5EIChOT1coKSArIElOVEVSVkFMIDcgREFZKSI7CQoJCQkJfQoJCQl9CgkJfQoJCWVsc2VpZigkb2sgPT0nMScpCgkJewoJCQkkcXVlcnkuPSIgQU5EIE1PTlRIKGRhdGVfZXZlbnQpID0gPyI7CgkJCSRwYXJtc1snbW9udGgnXSA9ICRtb250aDsKCQl9CgkJCgoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICRwYXJtcyk7CgoJCQlpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCgkJCXsKCQkJCXdoaWxlKCRyb3cxID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCQkJewoJCQkJCSRvbmVyb3cxPSBuZXcgU3RkQ2xhc3MoKTsKCQkJCQkkb25lcm93MS0+cm93Y2xhc3M9ICRyb3djbGFzczsKCQkJCQkkb25lcm93MS0+dmljPSAkcm93MVsndmljJ107CgkJCQkJJG9uZXJvdzEtPnRvdGFsPSAkcm93MVsndG90YWwnXTsKCQkJCQkkb25lcm93MS0+cHRzPSAkcm93MVsncHRzJ107CgkJCQkJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCQkJCQkkcm93YXJyYXkxW109ICRvbmVyb3cxOwoJCQkJfQoJCQl9CgkJJHNtYXJ0eS0+YXNzaWduKCdpdGVtczEnLCAkcm93YXJyYXkxKTsKCgoJCSRxdWVyeTEgPSAiU0VMRUNUIENPTkNBVF9XUygnICcsIG5vbSwgcHJlbm9tKSBBUyBqb3VldXIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSBsaWNlbmNlID0gPyI7CgoKCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkxLCBhcnJheSgkbGljZW5jZSkpOwoJCQoJCS8vZmF1ZHJhaXQgdGVzdGVyIHNpIMOnYSBtYXJjaGUgb3Ugbm9uCgkJaWYoISRkYnJlc3VsdGF0KQoJCXsKCQkJJGRlc2lnbmF0aW9uID0gJGRiLT5FcnJvck1zZygpOwoJCQlwaW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgnJywnS08nLCRkZXNpZ25hdGlvbiwnJyk7CgkJfQoJCQoJCSRyb3cxID0gJGRicmVzdWx0YXQtPkZldGNoUm93KCk7CgkJJGpvdWV1ciA9ICRyb3cxWydqb3VldXInXTsKCQkkc21hcnR5LT5hc3NpZ24oJ2pvdWV1cicsICRqb3VldXIpOwoJCSRyZXN1bHQ9IGFycmF5ICgpOwoJCSRxdWVyeTM9ICJTRUxFQ1Qgbm9tLCBjbGFzc2VtZW50LHBvaW50cmVzLCB2aWN0b2lyZSxkYXRlX2V2ZW50LGVwcmV1dmUsbnVtam91cm4gRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIFdIRVJFIHNhaXNvbiA9ID8gQU5EIGxpY2VuY2UgPSA/IEFORCBzdGF0dXQgPSAxIjsvLyIgT1JERVIgQlkgZGF0ZV9ldmVudCBBU0MiOwoJCSRwYXJtc1snbGljZW5jZSddID0gJGxpY2VuY2U7CgkJJHBhcm1zWydzYWlzb24nXSA9ICRzYWlzb25fY291cmFudGU7CgkJaWYoJGFmZmljaGUgPT0nMScpCgkJewoJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKSA9PScxJyApCgkJCXsKCQkJCWlmKCRwYXJhbXNbJ3BoYXNlJ10gPT0yKQoJCQkJewoJCQkJCSRxdWVyeTMuPSAiIEFORCBNT05USChkYXRlX2V2ZW50KSA+PSAxIEFORCBNT05USChkYXRlX2V2ZW50KSA8PTciOyAKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkcXVlcnkzLj0gIiBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPiA3IEFORCBNT05USChkYXRlX2V2ZW50KSA8PTEyIjsgIC8vLy9CRVRXRUVOIE5PVygpIEFORCAoTk9XKCkgKyBJTlRFUlZBTCA3IERBWSkiOwoJCQkJfQoJCQl9CgkJCWVsc2VpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BoYXNlX2VuX2NvdXJzJykgPT0gJzInKQoJCQl7CgkJCQlpZigkcGFyYW1zWydwaGFzZSddID09MSkKCQkJCXsKCQkJCQkkcXVlcnkzLj0gIiBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPiA3IEFORCBNT05USChkYXRlX2V2ZW50KSA8PTEyIjsgIC8vLy9CRVRXRUVOIE5PVygpIEFORCAoTk9XKCkgKyBJTlRFUlZBTCA3IERBWSkiOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRxdWVyeTMuPSAiIEFORCBNT05USChkYXRlX2V2ZW50KSA+PSAxIEFORCBNT05USChkYXRlX2V2ZW50KSA8PTciOyAgLy8vL0JFVFdFRU4gTk9XKCkgQU5EIChOT1coKSArIElOVEVSVkFMIDcgREFZKSI7CQoJCQkJfQoJCQl9CgkJfQoJCWVsc2VpZigkYWZmaWNoZSA9PScwJykKCQl7CgkJCWlmKCRvaz09JzEnKQoJCQl7CgkJCQkkcXVlcnkzLj0iIEFORCBNT05USChkYXRlX2V2ZW50KSA9ID8iOwoJCQkJJHBhcm1zWydtb250aCddID0gJG1vbnRoOwoJCQkJJHF1ZXJ5My49IiBPUkRFUiBCWSBkYXRlX2V2ZW50IERFU0MiOwoJCQkJCgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkcXVlcnkzLj0iIEFORCBkYXRlX2V2ZW50IEJFVFdFRU4gPyBBTkQgPyI7CgkJCQkkcGFybXNbJ2RhdGVfZGVidXQnXSA9ICRkYXRlX2RlYnV0OwoJCQkJJHBhcm1zWydkYXRlX2ZpbiddID0gJGRhdGVfZmluOwoJCQkJJHF1ZXJ5My49IiBPUkRFUiBCWSBkYXRlX2V2ZW50IERFU0MiOwoJCQkJCgkJCX0KCQl9CgkJCgkJZWxzZQoJCXsKCQkJJHF1ZXJ5My49IiBPUkRFUiBCWSBkYXRlX2V2ZW50IERFU0MiOwoJCQkKCQl9CgkJCgkJJGRicmVzdWx0MyA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkzLCAkcGFybXMpOwoJCS8qCgkJCWlmKCRkYnJlc3VsdDMgJiYgJGRicmVzdWx0My0+UmVjb3JkQ291bnQoKT4wKQoJCQl7CgkJCQl3aGlsZSgkcm93MSA9ICRkYnJlc3VsdDMtPkZldGNoUm93KCkpCgkJCQl7CgkJCQkJJG9uZXJvdzE9IG5ldyBTdGRDbGFzcygpOwoJCQkJCSRvbmVyb3cxLT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJCQkJCSRvbmVyb3cxLT52aWM9ICRyb3cxWyd2aWMnXTsKCQkJCQkkb25lcm93MS0+dG90YWw9ICRyb3cxWyd0b3RhbCddOwoJCQkJCSRvbmVyb3cxLT5wdHM9ICRyb3cxWydwdHMnXTsKCQkJCgkJCQkJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCQkJCQkkcm93YXJyYXkxW109ICRvbmVyb3cxOwoJCQkJfQoJCQl9Ly9lY2hvICRxdWVyeTsKCQkqLwoJCS8qCgkJaWYoJGFmZmljaGUgPT0xKQoJCXsKCQkJLy9PbiBtZXQgdW4gb3JkcmUgcGFydGljdWxpZXIgb3UgcGFzID8KCQkJJHF1ZXJ5My49IiBPUkRFUiBCWSBkYXRlX2V2ZW50IERFU0MiOwoJCQkkZGJyZXN1bHQzPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MywgYXJyYXkoJGxpY2VuY2UsICRzYWlzb25fY291cmFudGUpKTsKCQl9CgkJZWxzZQoJCXsKCQkJJGRicmVzdWx0Mz0gJGRiLT5FeGVjdXRlKCRxdWVyeTMsIGFycmF5KCRsaWNlbmNlLCAkc2Fpc29uX2NvdXJhbnRlLCRkYXRlX2RlYnV0LCAkZGF0ZV9maW4pKTsKCQl9CgkJKi8KCQkkcm93YXJyYXk9IGFycmF5ICgpOwoKCQlpZiAoJGRicmVzdWx0MyAmJiAkZGJyZXN1bHQzLT5SZWNvcmRDb3VudCgpID4gMCkKCQkgIHsKCQkgICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdDMtPkZldGNoUm93KCkpCgkJICAgICAgewoJCgkJCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJCQkkb25lcm93LT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJCQkkb25lcm93LT5kYXRlX2V2ZW50PSAkcm93WydkYXRlX2V2ZW50J107CgkJCSRvbmVyb3ctPmVwcmV1dmU9ICRyb3dbJ2VwcmV1dmUnXTsKCQkJJG9uZXJvdy0+bm9tPSAkcm93Wydub20nXTsKCQkJJG9uZXJvdy0+Y2xhc3NlbWVudD0gJHJvd1snY2xhc3NlbWVudCddOwoJCQkkb25lcm93LT52aWN0b2lyZT0gJHJvd1sndmljdG9pcmUnXTsKCQkJLy8kb25lcm93LT5jb2VmZj0gJHJvd1snY29lZmYnXTsKCQkJJG9uZXJvdy0+cG9pbnRyZXM9ICRyb3dbJ3BvaW50cmVzJ107CgkJCSRyb3dhcnJheVtdPSAkb25lcm93OwoJCSAgICAgIH0KCQkgIH0KCQkkc21hcnR5LT5hc3NpZ24oJ3Jlc3VsdGF0cycsCgkJCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ3VzZXJfcmVzdWx0cycsJHJldHVybmlkLCRjb250ZW50cyA9ICdUb3VzIHNlcyByw6lzdWx0YXRzJywgYXJyYXkoJ2xpY2VuY2UnPT4kbGljZW5jZSkpKTsKCX0vL2ZpbiBkdSBlbHNlIChpZiAkbGljZW5jZSBpc3NldCkKCiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ29rJywkb2spOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ3JldG91cicsCiAJCSR0aGlzLT5DcmVhdGVSZXR1cm5MaW5rKCRpZCwgJHJldHVybmlkLCdSZXRvdXInKSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwokc21hcnR5LT5hc3NpZ24oJ2FmZmljaGUnLCRhZmZpY2hlKTsKLyoKJHNtYXJ0eS0+YXNzaWduKCdyZXN1bHRhdHMnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwndXNlcl9yZXN1bHRzJywkcmV0dXJuaWQsIGFycmF5KCdsaWNlbmNlJz0+JGxpY2VuY2UpKSk7CiovCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgndXNlcl9yZXN1bHRzX3Byb3YudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.view_contacts.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKICB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCXJldHVybjsKICAgCiAgfQoKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ2pvdWV1cnMnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwovLyRyZWNvcmRfaWQgPSAkcGFyYW1zWydyZWNvcmRfaWQnXTsKaWYoIGlzc2V0KCAkcGFyYW1zWydtZXNzYWdlJ10gKSApCiAgewogICAgJHNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJyxodG1sX2VudGl0eV9kZWNvZGUoJHBhcmFtc1snbWVzc2FnZSddKSk7CiAgfQppZiggaXNzZXQoICRwYXJhbXNbJ2Vycm9yJ10gKSApCiAgewogICAgJHNtYXJ0eS0+YXNzaWduKCdlcnJvcicsaHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbJ2Vycm9yJ10pKTsKICB9CgoKCiRsaWNlbmNlID0gJyc7CmlmKCAhaXNzZXQoICRwYXJhbXNbJ2xpY2VuY2UnXSApIHx8ICRwYXJhbXNbJ2xpY2VuY2UnXSA9PSAnJykgICAgCnsKCQoJJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwoJICAgICRwYXJhbXNbJ2Vycm9yJ10gPSAxOwoJICAgICR0aGlzLT5SZWRpcmVjdCggJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zICk7CgkgICAgcmV0dXJuOwp9CgogICAgLy8gZmluZCB0aGUgdXNlcgogICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbW0gV0hFUkUgbGljZW5jZSA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoICRwYXJhbXNbJ2xpY2VuY2UnXSApKTsKICAgICRyb3djbGFzcz0gJ3JvdzEnOwokcm93YXJyYXk9IGFycmF5ICgpOwppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewoJJGFjdGlmID0gJHJvd1snYWN0aWYnXTsKCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCSRvbmVyb3ctPmlkPSAkcm93WydpZCddOwoJJG9uZXJvdy0+dHlwZV9jb250YWN0PSAkcm93Wyd0eXBlX2NvbnRhY3QnXTsKCSRvbmVyb3ctPmNvbnRhY3Q9ICRyb3dbJ2NvbnRhY3QnXTsKCSRvbmVyb3ctPmRlc2NyaXB0aW9uPSAkcm93WydkZXNjcmlwdGlvbiddOwoJJG9uZXJvdy0+Y3JlYXRlX2NvbnRhY3Q9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZWRpdF9jb250YWN0JywgJHJldHVybmlkLCR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnY3JlYXRlX2NvbnRhY3QnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdpZF9yZWNvcmQnPT4kcm93WydpZCddKSk7Cgkkb25lcm93LT5kb2VkaXQ9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRfam91ZXVyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgJHRoaXMtPkxhbmcoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgkkb25lcm93LT5kZWxldGVsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWxldGVfY29udGFjdCcsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSwgJHRoaXMtPkxhbmcoJ2RlbGV0ZV9yZXN1bHRfY29uZmlybScpKTsKCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzPSAicm93MiIgOiAkcm93Y2xhc3M9ICJyb3cxIik7Cgkkcm93YXJyYXlbXT0gJG9uZXJvdzsKICAgICAgfQogIH0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Jlc3VsdHNmb3VuZHRleHQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwokc21hcnR5LT5hc3NpZ24oJ2NyZWF0ZV9uZXdfY29udGFjdCcsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdjcmVhdGVfY29udGFjdCcsJHJldHVybmlkLCdDcsOpZXIgdW4gbm91dmVhdSBjb250YWN0JywgYXJyYXkoJ2xpY2VuY2UnPT4kcGFyYW1zWydsaWNlbmNlJ10pKSk7CiRzbWFydHktPmFzc2lnbignY3JlYXRlbGluaycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2NyZWF0ZV9jb250YWN0JywgJHJldHVybmlkLAoJCQkJICAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+TGFuZygnY3JlYXRlX2NvbnRhY3QnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpKS4KCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdjcmVhdGVfY29udGFjdCcsICRyZXR1cm5pZCwgCgkJCQkgICR0aGlzLT5MYW5nKCdjcmVhdGVfY29udGFjdCcpLCAKCQkJCSAgYXJyYXkoKSkpOwoKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnY29udGFjdHMudHBsJyk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/css/bootstrap-table.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dGFibGUgewogIGJvcmRlci1zcGFjaW5nOiAwOwogIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Cn0KdGQsCnRoIHsKICBwYWRkaW5nOiAwOwp9CnRoZWFkIHsKICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOwogfQogdHIsCiBpbWcgewogICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7CiB9Ci50YWJsZSB7CiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlICFpbXBvcnRhbnQ7CiAgfQogIC50YWJsZSB0ZCwKICAudGFibGUgdGggewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OwogIH0KICAudGFibGUtYm9yZGVyZWQgdGgsCiAgLnRhYmxlLWJvcmRlcmVkIHRkIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQgIWltcG9ydGFudDsKICB9CnRhYmxlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQpjYXB0aW9uIHsKICBwYWRkaW5nLXRvcDogOHB4OwogIHBhZGRpbmctYm90dG9tOiA4cHg7CiAgY29sb3I6ICM3Nzc7CiAgdGV4dC1hbGlnbjogbGVmdDsKfQp0aCB7CiAgdGV4dC1hbGlnbjogbGVmdDsKfQoudGFibGUgewogIHdpZHRoOiAxMDAlOwogIG1heC13aWR0aDogMTAwJTsKICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9Ci50YWJsZSA+IHRoZWFkID4gdHIgPiB0aCwKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRoLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGgsCi50YWJsZSA+IHRoZWFkID4gdHIgPiB0ZCwKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRkLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGQgewogIHBhZGRpbmc6IDhweDsKICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkOwp9Ci50YWJsZSA+IHRoZWFkID4gdHIgPiB0aCB7CiAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsKICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2RkZDsKfQoudGFibGUgPiBjYXB0aW9uICsgdGhlYWQgPiB0cjpmaXJzdC1jaGlsZCA+IHRoLAoudGFibGUgPiBjb2xncm91cCArIHRoZWFkID4gdHI6Zmlyc3QtY2hpbGQgPiB0aCwKLnRhYmxlID4gdGhlYWQ6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCA+IHRoLAoudGFibGUgPiBjYXB0aW9uICsgdGhlYWQgPiB0cjpmaXJzdC1jaGlsZCA+IHRkLAoudGFibGUgPiBjb2xncm91cCArIHRoZWFkID4gdHI6Zmlyc3QtY2hpbGQgPiB0ZCwKLnRhYmxlID4gdGhlYWQ6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCA+IHRkIHsKICBib3JkZXItdG9wOiAwOwp9Ci50YWJsZSA+IHRib2R5ICsgdGJvZHkgewogIGJvcmRlci10b3A6IDJweCBzb2xpZCAjZGRkOwp9Ci50YWJsZSAudGFibGUgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLnRhYmxlLWNvbmRlbnNlZCA+IHRoZWFkID4gdHIgPiB0aCwKLnRhYmxlLWNvbmRlbnNlZCA+IHRib2R5ID4gdHIgPiB0aCwKLnRhYmxlLWNvbmRlbnNlZCA+IHRmb290ID4gdHIgPiB0aCwKLnRhYmxlLWNvbmRlbnNlZCA+IHRoZWFkID4gdHIgPiB0ZCwKLnRhYmxlLWNvbmRlbnNlZCA+IHRib2R5ID4gdHIgPiB0ZCwKLnRhYmxlLWNvbmRlbnNlZCA+IHRmb290ID4gdHIgPiB0ZCB7CiAgcGFkZGluZzogNXB4Owp9Ci50YWJsZS1ib3JkZXJlZCB7CiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKfQoudGFibGUtYm9yZGVyZWQgPiB0aGVhZCA+IHRyID4gdGgsCi50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0aCwKLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0ciA+IHRoLAoudGFibGUtYm9yZGVyZWQgPiB0aGVhZCA+IHRyID4gdGQsCi50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0ZCwKLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0ciA+IHRkIHsKICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwp9Ci50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHIgPiB0aCwKLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRkIHsKICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7Cn0KLnRhYmxlLXN0cmlwZWQgPiB0Ym9keSA+IHRyOm50aC1jaGlsZChvZGQpIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmOWY5Owp9Ci50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHI6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7Cn0KdGFibGUgY29sW2NsYXNzKj0iY29sLSJdIHsKICBwb3NpdGlvbjogc3RhdGljOwogIGRpc3BsYXk6IHRhYmxlLWNvbHVtbjsKICBmbG9hdDogbm9uZTsKfQp0YWJsZSB0ZFtjbGFzcyo9ImNvbC0iXSwKdGFibGUgdGhbY2xhc3MqPSJjb2wtIl0gewogIHBvc2l0aW9uOiBzdGF0aWM7CiAgZGlzcGxheTogdGFibGUtY2VsbDsKICBmbG9hdDogbm9uZTsKfQoudGFibGUgPiB0aGVhZCA+IHRyID4gdGQuYWN0aXZlLAoudGFibGUgPiB0Ym9keSA+IHRyID4gdGQuYWN0aXZlLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGQuYWN0aXZlLAoudGFibGUgPiB0aGVhZCA+IHRyID4gdGguYWN0aXZlLAoudGFibGUgPiB0Ym9keSA+IHRyID4gdGguYWN0aXZlLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGguYWN0aXZlLAoudGFibGUgPiB0aGVhZCA+IHRyLmFjdGl2ZSA+IHRkLAoudGFibGUgPiB0Ym9keSA+IHRyLmFjdGl2ZSA+IHRkLAoudGFibGUgPiB0Zm9vdCA+IHRyLmFjdGl2ZSA+IHRkLAoudGFibGUgPiB0aGVhZCA+IHRyLmFjdGl2ZSA+IHRoLAoudGFibGUgPiB0Ym9keSA+IHRyLmFjdGl2ZSA+IHRoLAoudGFibGUgPiB0Zm9vdCA+IHRyLmFjdGl2ZSA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1Owp9Ci50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIgPiB0ZC5hY3RpdmU6aG92ZXIsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIgPiB0aC5hY3RpdmU6aG92ZXIsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIuYWN0aXZlOmhvdmVyID4gdGQsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHI6aG92ZXIgPiAuYWN0aXZlLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyLmFjdGl2ZTpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZThlOGU4Owp9Ci50YWJsZSA+IHRoZWFkID4gdHIgPiB0ZC5zdWNjZXNzLAoudGFibGUgPiB0Ym9keSA+IHRyID4gdGQuc3VjY2VzcywKLnRhYmxlID4gdGZvb3QgPiB0ciA+IHRkLnN1Y2Nlc3MsCi50YWJsZSA+IHRoZWFkID4gdHIgPiB0aC5zdWNjZXNzLAoudGFibGUgPiB0Ym9keSA+IHRyID4gdGguc3VjY2VzcywKLnRhYmxlID4gdGZvb3QgPiB0ciA+IHRoLnN1Y2Nlc3MsCi50YWJsZSA+IHRoZWFkID4gdHIuc3VjY2VzcyA+IHRkLAoudGFibGUgPiB0Ym9keSA+IHRyLnN1Y2Nlc3MgPiB0ZCwKLnRhYmxlID4gdGZvb3QgPiB0ci5zdWNjZXNzID4gdGQsCi50YWJsZSA+IHRoZWFkID4gdHIuc3VjY2VzcyA+IHRoLAoudGFibGUgPiB0Ym9keSA+IHRyLnN1Y2Nlc3MgPiB0aCwKLnRhYmxlID4gdGZvb3QgPiB0ci5zdWNjZXNzID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNkZmYwZDg7Cn0KLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ciA+IHRkLnN1Y2Nlc3M6aG92ZXIsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIgPiB0aC5zdWNjZXNzOmhvdmVyLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyLnN1Y2Nlc3M6aG92ZXIgPiB0ZCwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0cjpob3ZlciA+IC5zdWNjZXNzLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyLnN1Y2Nlc3M6aG92ZXIgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2QwZTljNjsKfQoudGFibGUgPiB0aGVhZCA+IHRyID4gdGQuaW5mbywKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRkLmluZm8sCi50YWJsZSA+IHRmb290ID4gdHIgPiB0ZC5pbmZvLAoudGFibGUgPiB0aGVhZCA+IHRyID4gdGguaW5mbywKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRoLmluZm8sCi50YWJsZSA+IHRmb290ID4gdHIgPiB0aC5pbmZvLAoudGFibGUgPiB0aGVhZCA+IHRyLmluZm8gPiB0ZCwKLnRhYmxlID4gdGJvZHkgPiB0ci5pbmZvID4gdGQsCi50YWJsZSA+IHRmb290ID4gdHIuaW5mbyA+IHRkLAoudGFibGUgPiB0aGVhZCA+IHRyLmluZm8gPiB0aCwKLnRhYmxlID4gdGJvZHkgPiB0ci5pbmZvID4gdGgsCi50YWJsZSA+IHRmb290ID4gdHIuaW5mbyA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDllZGY3Owp9Ci50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIgPiB0ZC5pbmZvOmhvdmVyLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyID4gdGguaW5mbzpob3ZlciwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ci5pbmZvOmhvdmVyID4gdGQsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHI6aG92ZXIgPiAuaW5mbywKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ci5pbmZvOmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNjNGUzZjM7Cn0KLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRkLndhcm5pbmcsCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0ZC53YXJuaW5nLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGQud2FybmluZywKLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRoLndhcm5pbmcsCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0aC53YXJuaW5nLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGgud2FybmluZywKLnRhYmxlID4gdGhlYWQgPiB0ci53YXJuaW5nID4gdGQsCi50YWJsZSA+IHRib2R5ID4gdHIud2FybmluZyA+IHRkLAoudGFibGUgPiB0Zm9vdCA+IHRyLndhcm5pbmcgPiB0ZCwKLnRhYmxlID4gdGhlYWQgPiB0ci53YXJuaW5nID4gdGgsCi50YWJsZSA+IHRib2R5ID4gdHIud2FybmluZyA+IHRoLAoudGFibGUgPiB0Zm9vdCA+IHRyLndhcm5pbmcgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsKfQoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyID4gdGQud2FybmluZzpob3ZlciwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ciA+IHRoLndhcm5pbmc6aG92ZXIsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIud2FybmluZzpob3ZlciA+IHRkLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyOmhvdmVyID4gLndhcm5pbmcsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIud2FybmluZzpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmMmNjOwp9Ci50YWJsZSA+IHRoZWFkID4gdHIgPiB0ZC5kYW5nZXIsCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0ZC5kYW5nZXIsCi50YWJsZSA+IHRmb290ID4gdHIgPiB0ZC5kYW5nZXIsCi50YWJsZSA+IHRoZWFkID4gdHIgPiB0aC5kYW5nZXIsCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0aC5kYW5nZXIsCi50YWJsZSA+IHRmb290ID4gdHIgPiB0aC5kYW5nZXIsCi50YWJsZSA+IHRoZWFkID4gdHIuZGFuZ2VyID4gdGQsCi50YWJsZSA+IHRib2R5ID4gdHIuZGFuZ2VyID4gdGQsCi50YWJsZSA+IHRmb290ID4gdHIuZGFuZ2VyID4gdGQsCi50YWJsZSA+IHRoZWFkID4gdHIuZGFuZ2VyID4gdGgsCi50YWJsZSA+IHRib2R5ID4gdHIuZGFuZ2VyID4gdGgsCi50YWJsZSA+IHRmb290ID4gdHIuZGFuZ2VyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNmMmRlZGU7Cn0KLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ciA+IHRkLmRhbmdlcjpob3ZlciwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ciA+IHRoLmRhbmdlcjpob3ZlciwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ci5kYW5nZXI6aG92ZXIgPiB0ZCwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0cjpob3ZlciA+IC5kYW5nZXIsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIuZGFuZ2VyOmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNlYmNjY2M7Cn0KLnRhYmxlLXJlc3BvbnNpdmUgewogIG1pbi1oZWlnaHQ6IC4wMSU7CiAgb3ZlcmZsb3cteDogYXV0bzsKfQovKiB0YWJsZXMgKi8KdGFibGUudGFibGVzb3J0ZXIgewoJZm9udC1mYW1pbHk6YXJpYWw7CgkvL2JhY2tncm91bmQtY29sb3I6ICNDRENEQ0Q7CgltYXJnaW46MTBweCAwcHQgMTVweDsKCWZvbnQtc2l6ZTogOHB0OwoJd2lkdGg6IDEwMCU7Cgl0ZXh0LWFsaWduOiBsZWZ0Owp9CnRhYmxlLnRhYmxlc29ydGVyIHRoZWFkIHRyIHRoLCB0YWJsZS50YWJsZXNvcnRlciB0Zm9vdCB0ciB0aCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZTZFRUVFOwoJYm9yZGVyOiAxcHggc29saWQgI0ZGRjsKCWZvbnQtc2l6ZTogOHB0OwoJcGFkZGluZzogNHB4Owp9CnRhYmxlLnRhYmxlc29ydGVyIHRoZWFkIHRyIC5oZWFkZXIgewoJYmFja2dyb3VuZC1pbWFnZTogdXJsKGJnLmdpZik7CgliYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIHJpZ2h0OwoJY3Vyc29yOiBwb2ludGVyOwp9CnRhYmxlLnRhYmxlc29ydGVyIHRib2R5IHRkIHsKCWNvbG9yOiAjM0QzRDNEOwoJcGFkZGluZzogNHB4OwoJYmFja2dyb3VuZC1jb2xvcjogI0ZGRjsKCXZlcnRpY2FsLWFsaWduOiB0b3A7Cn0KdGFibGUudGFibGVzb3J0ZXIgdGJvZHkgdHIub2RkIHRkIHsKCWJhY2tncm91bmQtY29sb3I6I0YwRjBGNjsKfQp0YWJsZS50YWJsZXNvcnRlciB0aGVhZCB0ciAuaGVhZGVyU29ydFVwIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybChhc2MuZ2lmKTsKfQp0YWJsZS50YWJsZXNvcnRlciB0aGVhZCB0ciAuaGVhZGVyU29ydERvd24gewoJYmFja2dyb3VuZC1pbWFnZTogdXJsKGRlc2MuZ2lmKTsKfQp0YWJsZS50YWJsZXNvcnRlciB0aGVhZCB0ciAuaGVhZGVyU29ydERvd24sIHRhYmxlLnRhYmxlc29ydGVyIHRoZWFkIHRyIC5oZWFkZXJTb3J0VXAgewpiYWNrZ3JvdW5kLWNvbG9yOiAjOGRiZGQ4Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/css/fullcalendar.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEZ1bGxDYWxlbmRhciB2Mi4zLjIgU3R5bGVzaGVldAogKiBEb2NzICYgTGljZW5zZTogaHR0cDovL2Z1bGxjYWxlbmRhci5pby8KICogKGMpIDIwMTUgQWRhbSBTaGF3CiAqLwoKCi5mYyB7CglkaXJlY3Rpb246IGx0cjsKCXRleHQtYWxpZ246IGxlZnQ7Cn0KCi5mYy1ydGwgewoJdGV4dC1hbGlnbjogcmlnaHQ7Cn0KCmJvZHkgLmZjIHsgLyogZXh0cmEgcHJlY2VkZW5jZSB0byBvdmVyY29tZSBqcXVpICovCglmb250LXNpemU6IDFlbTsKfQoKCi8qIENvbG9ycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtdW50aGVtZWQgdGgsCi5mYy11bnRoZW1lZCB0ZCwKLmZjLXVudGhlbWVkIHRoZWFkLAouZmMtdW50aGVtZWQgdGJvZHksCi5mYy11bnRoZW1lZCAuZmMtZGl2aWRlciwKLmZjLXVudGhlbWVkIC5mYy1yb3csCi5mYy11bnRoZW1lZCAuZmMtcG9wb3ZlciB7Cglib3JkZXItY29sb3I6ICNkZGQ7Cn0KCi5mYy11bnRoZW1lZCAuZmMtcG9wb3ZlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgouZmMtdW50aGVtZWQgLmZjLWRpdmlkZXIsCi5mYy11bnRoZW1lZCAuZmMtcG9wb3ZlciAuZmMtaGVhZGVyIHsKCWJhY2tncm91bmQ6ICNlZWU7Cn0KCi5mYy11bnRoZW1lZCAuZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy1jbG9zZSB7Cgljb2xvcjogIzY2NjsKfQoKLmZjLXVudGhlbWVkIC5mYy10b2RheSB7CgliYWNrZ3JvdW5kOiAjZmNmOGUzOwp9CgouZmMtaGlnaGxpZ2h0IHsgLyogd2hlbiB1c2VyIGlzIHNlbGVjdGluZyBjZWxscyAqLwoJYmFja2dyb3VuZDogI2JjZThmMTsKCW9wYWNpdHk6IC4zOwoJZmlsdGVyOiBhbHBoYShvcGFjaXR5PTMwKTsgLyogZm9yIElFICovCn0KCi5mYy1iZ2V2ZW50IHsgLyogZGVmYXVsdCBsb29rIGZvciBiYWNrZ3JvdW5kIGV2ZW50cyAqLwoJYmFja2dyb3VuZDogcmdiKDE0MywgMjIzLCAxMzApOwoJb3BhY2l0eTogLjM7CglmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MzApOyAvKiBmb3IgSUUgKi8KfQoKLmZjLW5vbmJ1c2luZXNzIHsgLyogZGVmYXVsdCBsb29rIGZvciBub24tYnVzaW5lc3MtaG91cnMgYXJlYXMgKi8KCS8qIHdpbGwgaW5oZXJpdCAuZmMtYmdldmVudCdzIHN0eWxlcyAqLwoJYmFja2dyb3VuZDogI2Q3ZDdkNzsKfQoKCi8qIEljb25zIChpbmxpbmUgZWxlbWVudHMgd2l0aCBzdHlsZWQgdGV4dCB0aGF0IG1vY2sgYXJyb3cgaWNvbnMpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy1pY29uIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxZW07CgloZWlnaHQ6IDFlbTsKCWxpbmUtaGVpZ2h0OiAxZW07Cglmb250LXNpemU6IDFlbTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCW92ZXJmbG93OiBoaWRkZW47Cglmb250LWZhbWlseTogIkNvdXJpZXIgTmV3IiwgQ291cmllciwgbW9ub3NwYWNlOwoKCS8qIGRvbid0IGFsbG93IGJyb3dzZXIgdGV4dC1zZWxlY3Rpb24gKi8KCS13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTsKCS13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Cgkta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7CgktbW96LXVzZXItc2VsZWN0OiBub25lOwoJLW1zLXVzZXItc2VsZWN0OiBub25lOwoJdXNlci1zZWxlY3Q6IG5vbmU7Cgl9CgovKgpBY2NlcHRhYmxlIGZvbnQtZmFtaWx5IG92ZXJyaWRlcyBmb3IgaW5kaXZpZHVhbCBpY29uczoKCSJBcmlhbCIsIHNhbnMtc2VyaWYKCSJUaW1lcyBOZXcgUm9tYW4iLCBzZXJpZgoKTk9URTogdXNlIHBlcmNlbnRhZ2UgZm9udCBzaXplcyBvciBlbHNlIG9sZCBJRSBjaG9rZXMKKi8KCi5mYy1pY29uOmFmdGVyIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCW1hcmdpbjogMCAtMWVtOyAvKiBlbnN1cmVzIGNoYXJhY3RlciB3aWxsIGJlIGNlbnRlcmVkLCByZWdhcmRsZXNzIG9mIHdpZHRoICovCn0KCi5mYy1pY29uLWxlZnQtc2luZ2xlLWFycm93OmFmdGVyIHsKCWNvbnRlbnQ6ICJcMDIwMzkiOwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cglmb250LXNpemU6IDIwMCU7Cgl0b3A6IC03JTsKCWxlZnQ6IDMlOwp9CgouZmMtaWNvbi1yaWdodC1zaW5nbGUtYXJyb3c6YWZ0ZXIgewoJY29udGVudDogIlwwMjAzQSI7Cglmb250LXdlaWdodDogYm9sZDsKCWZvbnQtc2l6ZTogMjAwJTsKCXRvcDogLTclOwoJbGVmdDogLTMlOwp9CgouZmMtaWNvbi1sZWZ0LWRvdWJsZS1hcnJvdzphZnRlciB7Cgljb250ZW50OiAiXDAwMEFCIjsKCWZvbnQtc2l6ZTogMTYwJTsKCXRvcDogLTclOwp9CgouZmMtaWNvbi1yaWdodC1kb3VibGUtYXJyb3c6YWZ0ZXIgewoJY29udGVudDogIlwwMDBCQiI7Cglmb250LXNpemU6IDE2MCU7Cgl0b3A6IC03JTsKfQoKLmZjLWljb24tbGVmdC10cmlhbmdsZTphZnRlciB7Cgljb250ZW50OiAiXDI1QzQiOwoJZm9udC1zaXplOiAxMjUlOwoJdG9wOiAzJTsKCWxlZnQ6IC0yJTsKfQoKLmZjLWljb24tcmlnaHQtdHJpYW5nbGU6YWZ0ZXIgewoJY29udGVudDogIlwyNUJBIjsKCWZvbnQtc2l6ZTogMTI1JTsKCXRvcDogMyU7CglsZWZ0OiAyJTsKfQoKLmZjLWljb24tZG93bi10cmlhbmdsZTphZnRlciB7Cgljb250ZW50OiAiXDI1QkMiOwoJZm9udC1zaXplOiAxMjUlOwoJdG9wOiAyJTsKfQoKLmZjLWljb24teDphZnRlciB7Cgljb250ZW50OiAiXDAwMEQ3IjsKCWZvbnQtc2l6ZTogMjAwJTsKCXRvcDogNiU7Cn0KCgovKiBCdXR0b25zIChzdHlsZWQgPGJ1dHRvbj4gdGFncywgbm9ybWFsaXplZCB0byB3b3JrIGNyb3NzLWJyb3dzZXIpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYyBidXR0b24gewoJLyogZm9yY2UgaGVpZ2h0IHRvIGluY2x1ZGUgdGhlIGJvcmRlciBhbmQgcGFkZGluZyAqLwoJLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OwoJLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwoJYm94LXNpemluZzogYm9yZGVyLWJveDsKCgkvKiBkaW1lbnNpb25zICovCgltYXJnaW46IDA7CgloZWlnaHQ6IDIuMWVtOwoJcGFkZGluZzogMCAuNmVtOwoKCS8qIHRleHQgJiBjdXJzb3IgKi8KCWZvbnQtc2l6ZTogMWVtOyAvKiBub3JtYWxpemUgKi8KCXdoaXRlLXNwYWNlOiBub3dyYXA7CgljdXJzb3I6IHBvaW50ZXI7Cn0KCi8qIEZpcmVmb3ggaGFzIGFuIGFubm95aW5nIGlubmVyIGJvcmRlciAqLwouZmMgYnV0dG9uOjotbW96LWZvY3VzLWlubmVyIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CgkKLmZjLXN0YXRlLWRlZmF1bHQgeyAvKiBub24tdGhlbWUgKi8KCWJvcmRlcjogMXB4IHNvbGlkOwp9CgouZmMtc3RhdGUtZGVmYXVsdC5mYy1jb3JuZXItbGVmdCB7IC8qIG5vbi10aGVtZSAqLwoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4OwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4Owp9CgouZmMtc3RhdGUtZGVmYXVsdC5mYy1jb3JuZXItcmlnaHQgeyAvKiBub24tdGhlbWUgKi8KCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4Owp9CgovKiBpY29ucyBpbiBidXR0b25zICovCgouZmMgYnV0dG9uIC5mYy1pY29uIHsgLyogbm9uLXRoZW1lICovCglwb3NpdGlvbjogcmVsYXRpdmU7Cgl0b3A6IC0wLjA1ZW07IC8qIHNlZW1zIHRvIGJlIGEgZ29vZCBhZGp1c3RtZW50IGFjcm9zcyBicm93c2VycyAqLwoJbWFyZ2luOiAwIC4yZW07Cgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgkKLyoKICBidXR0b24gc3RhdGVzCiAgYm9ycm93ZWQgZnJvbSB0d2l0dGVyIGJvb3RzdHJhcCAoaHR0cDovL3R3aXR0ZXIuZ2l0aHViLmNvbS9ib290c3RyYXAvKQoqLwoKLmZjLXN0YXRlLWRlZmF1bHQgewoJYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZmZmZiwgI2U2ZTZlNik7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAwLCAwIDEwMCUsIGZyb20oI2ZmZmZmZiksIHRvKCNlNmU2ZTYpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZmZmZiwgI2U2ZTZlNik7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZmZmZmLCAjZTZlNmU2KTsKCWJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNmZmZmZmYsICNlNmU2ZTYpOwoJYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwoJYm9yZGVyLWNvbG9yOiAjZTZlNmU2ICNlNmU2ZTYgI2JmYmZiZjsKCWJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpIHJnYmEoMCwgMCwgMCwgMC4xKSByZ2JhKDAsIDAsIDAsIDAuMjUpOwoJY29sb3I6ICMzMzM7Cgl0ZXh0LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7Cglib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSwgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7Cn0KCi5mYy1zdGF0ZS1ob3ZlciwKLmZjLXN0YXRlLWRvd24sCi5mYy1zdGF0ZS1hY3RpdmUsCi5mYy1zdGF0ZS1kaXNhYmxlZCB7Cgljb2xvcjogIzMzMzMzMzsKCWJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7Cn0KCi5mYy1zdGF0ZS1ob3ZlciB7Cgljb2xvcjogIzMzMzMzMzsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtcG9zaXRpb246IDAgLTE1cHg7Cgktd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtcG9zaXRpb24gMC4xcyBsaW5lYXI7CgkgICAtbW96LXRyYW5zaXRpb246IGJhY2tncm91bmQtcG9zaXRpb24gMC4xcyBsaW5lYXI7CgkgICAgIC1vLXRyYW5zaXRpb246IGJhY2tncm91bmQtcG9zaXRpb24gMC4xcyBsaW5lYXI7CgkgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtcG9zaXRpb24gMC4xcyBsaW5lYXI7Cn0KCi5mYy1zdGF0ZS1kb3duLAouZmMtc3RhdGUtYWN0aXZlIHsKCWJhY2tncm91bmQtY29sb3I6ICNjY2NjY2M7CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwoJYm94LXNoYWRvdzogaW5zZXQgMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xNSksIDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwp9CgouZmMtc3RhdGUtZGlzYWJsZWQgewoJY3Vyc29yOiBkZWZhdWx0OwoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKCW9wYWNpdHk6IDAuNjU7CglmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NjUpOwoJYm94LXNoYWRvdzogbm9uZTsKfQoKCi8qIEJ1dHRvbnMgR3JvdXBzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy1idXR0b24tZ3JvdXAgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgovKgpldmVyeSBidXR0b24gdGhhdCBpcyBub3QgZmlyc3QgaW4gYSBidXR0b24gZ3JvdXAgc2hvdWxkIHNjb290Y2ggb3ZlciBvbmUgcGl4ZWwgYW5kIGNvdmVyIHRoZQpwcmV2aW91cyBidXR0b24ncyBib3JkZXIuLi4KKi8KCi5mYyAuZmMtYnV0dG9uLWdyb3VwID4gKiB7IC8qIGV4dHJhIHByZWNlZGVuY2UgYi9jIGJ1dHRvbnMgaGF2ZSBtYXJnaW4gc2V0IHRvIHplcm8gKi8KCWZsb2F0OiBsZWZ0OwoJbWFyZ2luOiAwIDAgMCAtMXB4Owp9CgouZmMgLmZjLWJ1dHRvbi1ncm91cCA+IDpmaXJzdC1jaGlsZCB7IC8qIHNhbWUgKi8KCW1hcmdpbi1sZWZ0OiAwOwp9CgoKLyogUG9wb3ZlcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtcG9wb3ZlciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cglib3gtc2hhZG93OiAwIDJweCA2cHggcmdiYSgwLDAsMCwuMTUpOwp9CgouZmMtcG9wb3ZlciAuZmMtaGVhZGVyIHsgLyogVE9ETzogYmUgbW9yZSBjb25zaXN0ZW50IHdpdGggZmMtaGVhZC9mYy1ib2R5ICovCglwYWRkaW5nOiAycHggNHB4Owp9CgouZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy10aXRsZSB7CgltYXJnaW46IDAgMnB4Owp9CgouZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy1jbG9zZSB7CgljdXJzb3I6IHBvaW50ZXI7Cn0KCi5mYy1sdHIgLmZjLXBvcG92ZXIgLmZjLWhlYWRlciAuZmMtdGl0bGUsCi5mYy1ydGwgLmZjLXBvcG92ZXIgLmZjLWhlYWRlciAuZmMtY2xvc2UgewoJZmxvYXQ6IGxlZnQ7Cn0KCi5mYy1ydGwgLmZjLXBvcG92ZXIgLmZjLWhlYWRlciAuZmMtdGl0bGUsCi5mYy1sdHIgLmZjLXBvcG92ZXIgLmZjLWhlYWRlciAuZmMtY2xvc2UgewoJZmxvYXQ6IHJpZ2h0Owp9CgovKiB1bnRoZW1lZCAqLwoKLmZjLXVudGhlbWVkIC5mYy1wb3BvdmVyIHsKCWJvcmRlci13aWR0aDogMXB4OwoJYm9yZGVyLXN0eWxlOiBzb2xpZDsKfQoKLmZjLXVudGhlbWVkIC5mYy1wb3BvdmVyIC5mYy1oZWFkZXIgLmZjLWNsb3NlIHsKCWZvbnQtc2l6ZTogLjllbTsKCW1hcmdpbi10b3A6IDJweDsKfQoKLyoganF1aSB0aGVtZWQgKi8KCi5mYy1wb3BvdmVyID4gLnVpLXdpZGdldC1oZWFkZXIgKyAudWktd2lkZ2V0LWNvbnRlbnQgewoJYm9yZGVyLXRvcDogMDsgLyogd2hlcmUgdGhleSBtZWV0LCBsZXQgdGhlIGhlYWRlciBoYXZlIHRoZSBib3JkZXIgKi8KfQoKCi8qIE1pc2MgUmV1c2FibGUgQ29tcG9uZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtZGl2aWRlciB7Cglib3JkZXItc3R5bGU6IHNvbGlkOwoJYm9yZGVyLXdpZHRoOiAxcHg7Cn0KCmhyLmZjLWRpdmlkZXIgewoJaGVpZ2h0OiAwOwoJbWFyZ2luOiAwOwoJcGFkZGluZzogMCAwIDJweDsgLyogaGVpZ2h0IGlzIHVucmVsaWFibGUgYWNyb3NzIGJyb3dzZXJzLCBzbyB1c2UgcGFkZGluZyAqLwoJYm9yZGVyLXdpZHRoOiAxcHggMDsKfQoKLmZjLWNsZWFyIHsKCWNsZWFyOiBib3RoOwp9CgouZmMtYmcsCi5mYy1iZ2V2ZW50LXNrZWxldG9uLAouZmMtaGlnaGxpZ2h0LXNrZWxldG9uLAouZmMtaGVscGVyLXNrZWxldG9uIHsKCS8qIHRoZXNlIGVsZW1lbnQgc2hvdWxkIGFsd2F5cyBjbGluZyB0byB0b3AtbGVmdC9yaWdodCBjb3JuZXJzICovCglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglsZWZ0OiAwOwoJcmlnaHQ6IDA7Cn0KCi5mYy1iZyB7Cglib3R0b206IDA7IC8qIHN0cmVjaCBiZyB0byBib3R0b20gZWRnZSAqLwp9CgouZmMtYmcgdGFibGUgewoJaGVpZ2h0OiAxMDAlOyAvKiBzdHJlY2ggYmcgdG8gYm90dG9tIGVkZ2UgKi8KfQoKCi8qIFRhYmxlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMgdGFibGUgewoJd2lkdGg6IDEwMCU7Cgl0YWJsZS1sYXlvdXQ6IGZpeGVkOwoJYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKCWJvcmRlci1zcGFjaW5nOiAwOwoJZm9udC1zaXplOiAxZW07IC8qIG5vcm1hbGl6ZSBjcm9zcy1icm93c2VyICovCn0KCi5mYyB0aCB7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5mYyB0aCwKLmZjIHRkIHsKCWJvcmRlci1zdHlsZTogc29saWQ7Cglib3JkZXItd2lkdGg6IDFweDsKCXBhZGRpbmc6IDA7Cgl2ZXJ0aWNhbC1hbGlnbjogdG9wOwp9CgouZmMgdGQuZmMtdG9kYXkgewoJYm9yZGVyLXN0eWxlOiBkb3VibGU7IC8qIG92ZXJjb21lIG5laWdoYm9yaW5nIGJvcmRlcnMgKi8KfQoKCi8qIEZha2UgVGFibGUgUm93cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMgLmZjLXJvdyB7IC8qIGV4dHJhIHByZWNlZGVuY2UgdG8gb3ZlcmNvbWUgdGhlbWVzIHcvIC51aS13aWRnZXQtY29udGVudCBmb3JjaW5nIGEgMXB4IGJvcmRlciAqLwoJLyogbm8gdmlzaWJsZSBib3JkZXIgYnkgZGVmYXVsdC4gYnV0IG1ha2UgYXZhaWxhYmxlIGlmIG5lZWQgYmUgKHNjcm9sbGJhciB3aWR0aCBjb21wZW5zYXRpb24pICovCglib3JkZXItc3R5bGU6IHNvbGlkOwoJYm9yZGVyLXdpZHRoOiAwOwp9CgouZmMtcm93IHRhYmxlIHsKCS8qIGRvbid0IHB1dCBsZWZ0L3JpZ2h0IGJvcmRlciBvbiBhbnl0aGluZyB3aXRoaW4gYSBmYWtlIHJvdy4KCSAgIHRoZSBvdXRlciB0Ym9keSB3aWxsIHdvcnJ5IGFib3V0IHRoaXMgKi8KCWJvcmRlci1sZWZ0OiAwIGhpZGRlbiB0cmFuc3BhcmVudDsKCWJvcmRlci1yaWdodDogMCBoaWRkZW4gdHJhbnNwYXJlbnQ7CgoJLyogbm8gYm90dG9tIGJvcmRlcnMgb24gcm93cyAqLwoJYm9yZGVyLWJvdHRvbTogMCBoaWRkZW4gdHJhbnNwYXJlbnQ7IAp9CgouZmMtcm93OmZpcnN0LWNoaWxkIHRhYmxlIHsKCWJvcmRlci10b3A6IDAgaGlkZGVuIHRyYW5zcGFyZW50OyAvKiBubyB0b3AgYm9yZGVyIG9uIGZpcnN0IHJvdyAqLwp9CgoKLyogRGF5IFJvdyAodXNlZCB3aXRoaW4gdGhlIGhlYWRlciBhbmQgdGhlIERheUdyaWQpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy1yb3cgewoJcG9zaXRpb246IHJlbGF0aXZlOwp9CgouZmMtcm93IC5mYy1iZyB7Cgl6LWluZGV4OiAxOwp9CgovKiBoaWdobGlnaHRpbmcgY2VsbHMgJiBiYWNrZ3JvdW5kIGV2ZW50IHNrZWxldG9uICovCgouZmMtcm93IC5mYy1iZ2V2ZW50LXNrZWxldG9uLAouZmMtcm93IC5mYy1oaWdobGlnaHQtc2tlbGV0b24gewoJYm90dG9tOiAwOyAvKiBzdHJldGNoIHNrZWxldG9uIHRvIGJvdHRvbSBvZiByb3cgKi8KfQoKLmZjLXJvdyAuZmMtYmdldmVudC1za2VsZXRvbiB0YWJsZSwKLmZjLXJvdyAuZmMtaGlnaGxpZ2h0LXNrZWxldG9uIHRhYmxlIHsKCWhlaWdodDogMTAwJTsgLyogc3RyZXRjaCBza2VsZXRvbiB0byBib3R0b20gb2Ygcm93ICovCn0KCi5mYy1yb3cgLmZjLWhpZ2hsaWdodC1za2VsZXRvbiB0ZCwKLmZjLXJvdyAuZmMtYmdldmVudC1za2VsZXRvbiB0ZCB7Cglib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Owp9CgouZmMtcm93IC5mYy1iZ2V2ZW50LXNrZWxldG9uIHsKCXotaW5kZXg6IDI7Cgp9CgouZmMtcm93IC5mYy1oaWdobGlnaHQtc2tlbGV0b24gewoJei1pbmRleDogMzsKfQoKLyoKcm93IGNvbnRlbnQgKHdoaWNoIGNvbnRhaW5zIGRheS93ZWVrIG51bWJlcnMgYW5kIGV2ZW50cykgYXMgd2VsbCBhcyAiaGVscGVyIiAod2hpY2ggY29udGFpbnMKdGVtcG9yYXJ5IHJlbmRlcmVkIGV2ZW50cykuCiovCgouZmMtcm93IC5mYy1jb250ZW50LXNrZWxldG9uIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDQ7CglwYWRkaW5nLWJvdHRvbTogMnB4OyAvKiBtYXRjaGVzIHRoZSBzcGFjZSBhYm92ZSB0aGUgZXZlbnRzICovCn0KCi5mYy1yb3cgLmZjLWhlbHBlci1za2VsZXRvbiB7Cgl6LWluZGV4OiA1Owp9CgouZmMtcm93IC5mYy1jb250ZW50LXNrZWxldG9uIHRkLAouZmMtcm93IC5mYy1oZWxwZXItc2tlbGV0b24gdGQgewoJLyogc2VlLXRocm91Z2ggdG8gdGhlIGJhY2tncm91bmQgYmVsb3cgKi8KCWJhY2tncm91bmQ6IG5vbmU7IC8qIGluIGNhc2UgPHRkPnMgYXJlIGdsb2JhbGx5IHN0eWxlZCAqLwoJYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKCgkvKiBkb24ndCBwdXQgYSBib3JkZXIgYmV0d2VlbiBldmVudHMgYW5kL29yIHRoZSBkYXkgbnVtYmVyICovCglib3JkZXItYm90dG9tOiAwOwp9CgouZmMtcm93IC5mYy1jb250ZW50LXNrZWxldG9uIHRib2R5IHRkLCAvKiBjZWxscyB3aXRoIGV2ZW50cyBpbnNpZGUgKHNvIE5PVCB0aGUgZGF5IG51bWJlciBjZWxsKSAqLwouZmMtcm93IC5mYy1oZWxwZXItc2tlbGV0b24gdGJvZHkgdGQgewoJLyogZG9uJ3QgcHV0IGEgYm9yZGVyIGJldHdlZW4gZXZlbnQgY2VsbHMgKi8KCWJvcmRlci10b3A6IDA7Cn0KCgovKiBTY3JvbGxpbmcgQ29udGFpbmVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy1zY3JvbGxlciB7IC8qIHRoaXMgY2xhc3MgZ29lcyBvbiBlbGVtZW50cyBmb3IgZ3VhcmFudGVlZCB2ZXJ0aWNhbCBzY3JvbGxiYXJzICovCglvdmVyZmxvdy15OiBzY3JvbGw7CglvdmVyZmxvdy14OiBoaWRkZW47Cn0KCi5mYy1zY3JvbGxlciA+ICogeyAvKiB3ZSBleHBlY3QgYW4gaW1tZWRpYXRlIGlubmVyIGVsZW1lbnQgKi8KCXBvc2l0aW9uOiByZWxhdGl2ZTsgLyogcmUtc2NvcGUgYWxsIHBvc2l0aW9ucyAqLwoJd2lkdGg6IDEwMCU7IC8qIGhhY2sgdG8gZm9yY2UgcmUtc2l6aW5nIHRoaXMgaW5uZXIgZWxlbWVudCB3aGVuIHNjcm9sbGJhcnMgYXBwZWFyL2Rpc2FwcGVhciAqLwoJb3ZlcmZsb3c6IGhpZGRlbjsgLyogZG9uJ3QgbGV0IG5lZ2F0aXZlIG1hcmdpbnMgb3IgYWJzb2x1dGUgcG9zaXRpb25pbmcgY3JlYXRlIGZ1cnRoZXIgc2Nyb2xsICovCn0KCgovKiBHbG9iYWwgRXZlbnQgU3R5bGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy1ldmVudCB7Cglwb3NpdGlvbjogcmVsYXRpdmU7IC8qIGZvciByZXNpemUgaGFuZGxlIGFuZCBvdGhlciBpbm5lciBwb3NpdGlvbmluZyAqLwoJZGlzcGxheTogYmxvY2s7IC8qIG1ha2UgdGhlIDxhPiB0YWcgYmxvY2sgKi8KCWZvbnQtc2l6ZTogLjg1ZW07CglsaW5lLWhlaWdodDogMS4zOwoJYm9yZGVyLXJhZGl1czogM3B4OwoJYm9yZGVyOiAxcHggc29saWQgIzNhODdhZDsgLyogZGVmYXVsdCBCT1JERVIgY29sb3IgKi8KCWJhY2tncm91bmQtY29sb3I6ICMzYTg3YWQ7IC8qIGRlZmF1bHQgQkFDS0dST1VORCBjb2xvciAqLwoJZm9udC13ZWlnaHQ6IG5vcm1hbDsgLyogdW5kbyBqcXVpJ3MgdWktd2lkZ2V0LWhlYWRlciBib2xkICovCn0KCi8qIG92ZXJwb3dlciBzb21lIG9mIGJvb3RzdHJhcCdzIGFuZCBqcXVpJ3Mgc3R5bGVzIG9uIDxhPiB0YWdzICovCi5mYy1ldmVudCwKLmZjLWV2ZW50OmhvdmVyLAoudWktd2lkZ2V0IC5mYy1ldmVudCB7Cgljb2xvcjogI2ZmZjsgLyogZGVmYXVsdCBURVhUIGNvbG9yICovCgl0ZXh0LWRlY29yYXRpb246IG5vbmU7IC8qIGlmIDxhPiBoYXMgYW4gaHJlZiAqLwp9CgouZmMtZXZlbnRbaHJlZl0sCi5mYy1ldmVudC5mYy1kcmFnZ2FibGUgewoJY3Vyc29yOiBwb2ludGVyOyAvKiBnaXZlIGV2ZW50cyB3aXRoIGxpbmtzIGFuZCBkcmFnZ2FibGUgZXZlbnRzIGEgaGFuZCBtb3VzZSBwb2ludGVyICovCn0KCi5mYy1ub3QtYWxsb3dlZCwgLyogY2F1c2VzIGEgIndhcm5pbmciIGN1cnNvci4gYXBwbGllZCBvbiBib2R5ICovCi5mYy1ub3QtYWxsb3dlZCAuZmMtZXZlbnQgeyAvKiB0byBvdmVycmlkZSBhbiBldmVudCdzIGN1c3RvbSBjdXJzb3IgKi8KCWN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KCi5mYy1ldmVudCAuZmMtYmcgeyAvKiB0aGUgZ2VuZXJpYyAuZmMtYmcgYWxyZWFkeSBkb2VzIHBvc2l0aW9uICovCgl6LWluZGV4OiAxOwoJYmFja2dyb3VuZDogI2ZmZjsKCW9wYWNpdHk6IC4yNTsKCWZpbHRlcjogYWxwaGEob3BhY2l0eT0yNSk7IC8qIGZvciBJRSAqLwp9CgouZmMtZXZlbnQgLmZjLWNvbnRlbnQgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJei1pbmRleDogMjsKfQoKLmZjLWV2ZW50IC5mYy1yZXNpemVyIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXotaW5kZXg6IDM7Cn0KCgovKiBIb3Jpem9udGFsIEV2ZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgovKiBldmVudHMgdGhhdCBhcmUgY29udGludWluZyB0by9mcm9tIGFub3RoZXIgd2Vlay4ga2lsbCByb3VuZGVkIGNvcm5lcnMgYW5kIGJ1dHQgdXAgYWdhaW5zdCBlZGdlICovCgouZmMtbHRyIC5mYy1oLWV2ZW50LmZjLW5vdC1zdGFydCwKLmZjLXJ0bCAuZmMtaC1ldmVudC5mYy1ub3QtZW5kIHsKCW1hcmdpbi1sZWZ0OiAwOwoJYm9yZGVyLWxlZnQtd2lkdGg6IDA7CglwYWRkaW5nLWxlZnQ6IDFweDsgLyogcmVwbGFjZSB0aGUgYm9yZGVyIHdpdGggcGFkZGluZyAqLwoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KCi5mYy1sdHIgLmZjLWgtZXZlbnQuZmMtbm90LWVuZCwKLmZjLXJ0bCAuZmMtaC1ldmVudC5mYy1ub3Qtc3RhcnQgewoJbWFyZ2luLXJpZ2h0OiAwOwoJYm9yZGVyLXJpZ2h0LXdpZHRoOiAwOwoJcGFkZGluZy1yaWdodDogMXB4OyAvKiByZXBsYWNlIHRoZSBib3JkZXIgd2l0aCBwYWRkaW5nICovCglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwp9CgovKiByZXNpemVyICovCgouZmMtaC1ldmVudCAuZmMtcmVzaXplciB7IC8qIHBvc2l0aW9uZWQgaXQgdG8gb3ZlcmNvbWUgdGhlIGV2ZW50J3MgYm9yZGVycyAqLwoJdG9wOiAtMXB4OwoJYm90dG9tOiAtMXB4OwoJbGVmdDogLTFweDsKCXJpZ2h0OiAtMXB4OwoJd2lkdGg6IDVweDsKfQoKLyogbGVmdCByZXNpemVyICAqLwouZmMtbHRyIC5mYy1oLWV2ZW50IC5mYy1zdGFydC1yZXNpemVyLAouZmMtbHRyIC5mYy1oLWV2ZW50IC5mYy1zdGFydC1yZXNpemVyOmJlZm9yZSwKLmZjLWx0ciAuZmMtaC1ldmVudCAuZmMtc3RhcnQtcmVzaXplcjphZnRlciwKLmZjLXJ0bCAuZmMtaC1ldmVudCAuZmMtZW5kLXJlc2l6ZXIsCi5mYy1ydGwgLmZjLWgtZXZlbnQgLmZjLWVuZC1yZXNpemVyOmJlZm9yZSwKLmZjLXJ0bCAuZmMtaC1ldmVudCAuZmMtZW5kLXJlc2l6ZXI6YWZ0ZXIgewoJcmlnaHQ6IGF1dG87IC8qIGlnbm9yZSB0aGUgcmlnaHQgYW5kIG9ubHkgdXNlIHRoZSBsZWZ0ICovCgljdXJzb3I6IHctcmVzaXplOwp9CgovKiByaWdodCByZXNpemVyICovCi5mYy1sdHIgLmZjLWgtZXZlbnQgLmZjLWVuZC1yZXNpemVyLAouZmMtbHRyIC5mYy1oLWV2ZW50IC5mYy1lbmQtcmVzaXplcjpiZWZvcmUsCi5mYy1sdHIgLmZjLWgtZXZlbnQgLmZjLWVuZC1yZXNpemVyOmFmdGVyLAouZmMtcnRsIC5mYy1oLWV2ZW50IC5mYy1zdGFydC1yZXNpemVyLAouZmMtcnRsIC5mYy1oLWV2ZW50IC5mYy1zdGFydC1yZXNpemVyOmJlZm9yZSwKLmZjLXJ0bCAuZmMtaC1ldmVudCAuZmMtc3RhcnQtcmVzaXplcjphZnRlciB7CglsZWZ0OiBhdXRvOyAvKiBpZ25vcmUgdGhlIGxlZnQgYW5kIG9ubHkgdXNlIHRoZSByaWdodCAqLwoJY3Vyc29yOiBlLXJlc2l6ZTsKfQoKCi8qIERheUdyaWQgZXZlbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KV2UgdXNlIHRoZSBmdWxsICJmYy1kYXktZ3JpZC1ldmVudCIgY2xhc3MgaW5zdGVhZCBvZiB1c2luZyBkZXNjZW5kYW50cyBiZWNhdXNlIHRoZSBldmVudCB3b24ndApiZSBhIGRlc2NlbmRhbnQgb2YgdGhlIGdyaWQgd2hlbiBpdCBpcyBiZWluZyBkcmFnZ2VkLgoqLwoKLmZjLWRheS1ncmlkLWV2ZW50IHsKCW1hcmdpbjogMXB4IDJweCAwOyAvKiBzcGFjaW5nIGJldHdlZW4gZXZlbnRzIGFuZCBlZGdlcyAqLwoJcGFkZGluZzogMCAxcHg7Cn0KCgouZmMtZGF5LWdyaWQtZXZlbnQgLmZjLWNvbnRlbnQgeyAvKiBmb3JjZSBldmVudHMgdG8gYmUgb25lLWxpbmUgdGFsbCAqLwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKCW92ZXJmbG93OiBoaWRkZW47Cn0KCi5mYy1kYXktZ3JpZC1ldmVudCAuZmMtdGltZSB7Cglmb250LXdlaWdodDogYm9sZDsKfQoKLmZjLWRheS1ncmlkLWV2ZW50IC5mYy1yZXNpemVyIHsgLyogZW5sYXJnZSB0aGUgZGVmYXVsdCBoaXQgYXJlYSAqLwoJbGVmdDogLTNweDsKCXJpZ2h0OiAtM3B4OwoJd2lkdGg6IDdweDsKfQoKCi8qIEV2ZW50IExpbWl0aW5nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8qICJtb3JlIiBsaW5rIHRoYXQgcmVwcmVzZW50cyBoaWRkZW4gZXZlbnRzICovCgphLmZjLW1vcmUgewoJbWFyZ2luOiAxcHggM3B4OwoJZm9udC1zaXplOiAuODVlbTsKCWN1cnNvcjogcG9pbnRlcjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKYS5mYy1tb3JlOmhvdmVyIHsKCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwp9CgouZmMtbGltaXRlZCB7IC8qIHJvd3MgYW5kIGNlbGxzIHRoYXQgYXJlIGhpZGRlbiBiZWNhdXNlIG9mIGEgIm1vcmUiIGxpbmsgKi8KCWRpc3BsYXk6IG5vbmU7Cn0KCi8qIHBvcG92ZXIgdGhhdCBhcHBlYXJzIHdoZW4gIm1vcmUiIGxpbmsgaXMgY2xpY2tlZCAqLwoKLmZjLWRheS1ncmlkIC5mYy1yb3cgewoJei1pbmRleDogMTsgLyogbWFrZSB0aGUgIm1vcmUiIHBvcG92ZXIgb25lIGhpZ2hlciB0aGFuIHRoaXMgKi8KfQoKLmZjLW1vcmUtcG9wb3ZlciB7Cgl6LWluZGV4OiAyOwoJd2lkdGg6IDIyMHB4Owp9CgouZmMtbW9yZS1wb3BvdmVyIC5mYy1ldmVudC1jb250YWluZXIgewoJcGFkZGluZzogMTBweDsKfQoKLyogVG9vbGJhcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtdG9vbGJhciB7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CgltYXJnaW4tYm90dG9tOiAxZW07Cn0KCi5mYy10b29sYmFyIC5mYy1sZWZ0IHsKCWZsb2F0OiBsZWZ0Owp9CgouZmMtdG9vbGJhciAuZmMtcmlnaHQgewoJLypmbG9hdDogcmlnaHQ7Ki8KCWRpc3BsYXk6IG5vbmU7Cn0KCi5mYy10b29sYmFyIC5mYy1jZW50ZXIgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgovKiB0aGUgdGhpbmdzIHdpdGhpbiBlYWNoIGxlZnQvcmlnaHQvY2VudGVyIHNlY3Rpb24gKi8KLmZjIC5mYy10b29sYmFyID4gKiA+ICogeyAvKiBleHRyYSBwcmVjZWRlbmNlIHRvIG92ZXJyaWRlIGJ1dHRvbiBib3JkZXIgbWFyZ2lucyAqLwoJZmxvYXQ6IGxlZnQ7CgltYXJnaW4tbGVmdDogLjc1ZW07Cn0KCi8qIHRoZSBmaXJzdCB0aGluZyB3aXRoaW4gZWFjaCBsZWZ0L2NlbnRlci9yaWdodCBzZWN0aW9uICovCi5mYyAuZmMtdG9vbGJhciA+ICogPiA6Zmlyc3QtY2hpbGQgeyAvKiBleHRyYSBwcmVjZWRlbmNlIHRvIG92ZXJyaWRlIGJ1dHRvbiBib3JkZXIgbWFyZ2lucyAqLwoJbWFyZ2luLWxlZnQ6IDA7Cn0KCQovKiB0aXRsZSB0ZXh0ICovCgouZmMtdG9vbGJhciBoMiB7CgltYXJnaW46IDA7Cn0KCi8qIGJ1dHRvbiBsYXllcmluZyAoZm9yIGJvcmRlciBwcmVjZWRlbmNlKSAqLwoKLmZjLXRvb2xiYXIgYnV0dG9uIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmZjLXRvb2xiYXIgLmZjLXN0YXRlLWhvdmVyLAouZmMtdG9vbGJhciAudWktc3RhdGUtaG92ZXIgewoJei1pbmRleDogMjsKfQoJCi5mYy10b29sYmFyIC5mYy1zdGF0ZS1kb3duIHsKCXotaW5kZXg6IDM7Cn0KCi5mYy10b29sYmFyIC5mYy1zdGF0ZS1hY3RpdmUsCi5mYy10b29sYmFyIC51aS1zdGF0ZS1hY3RpdmUgewoJei1pbmRleDogNDsKfQoKLmZjLXRvb2xiYXIgYnV0dG9uOmZvY3VzIHsKCXotaW5kZXg6IDU7Cn0KCgovKiBWaWV3IFN0cnVjdHVyZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgovKiB1bmRvIHR3aXR0ZXIgYm9vdHN0cmFwJ3MgYm94LXNpemluZyBydWxlcy4gbm9ybWFsaXplcyBwb3NpdGlvbmluZyB0ZWNobmlxdWVzICovCi8qIGRvbid0IGRvIHRoaXMgZm9yIHRoZSB0b29sYmFyIGJlY2F1c2Ugd2UnbGwgd2FudCBib290c3RyYXAgdG8gc3R5bGUgdGhvc2UgYnV0dG9ucyBhcyBzb21lIHB0ICovCi5mYy12aWV3LWNvbnRhaW5lciAqLAouZmMtdmlldy1jb250YWluZXIgKjpiZWZvcmUsCi5mYy12aWV3LWNvbnRhaW5lciAqOmFmdGVyIHsKCS13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7CgkgICAtbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwoJICAgICAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKfQoKLmZjLXZpZXcsIC8qIHNjb3BlIHBvc2l0aW9uaW5nIGFuZCB6LWluZGV4J3MgZm9yIGV2ZXJ5dGhpbmcgd2l0aGluIHRoZSB2aWV3ICovCi5mYy12aWV3ID4gdGFibGUgeyAvKiBzbyBkcmFnZ2VkIGVsZW1lbnRzIGNhbiBiZSBhYm92ZSB0aGUgdmlldydzIG1haW4gZWxlbWVudCAqLwoJcG9zaXRpb246IHJlbGF0aXZlOwoJei1pbmRleDogMTsKfQoKLyogQmFzaWNWaWV3Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8qIGRheSByb3cgc3RydWN0dXJlICovCgouZmMtYmFzaWNXZWVrLXZpZXcgLmZjLWNvbnRlbnQtc2tlbGV0b24sCi5mYy1iYXNpY0RheS12aWV3IC5mYy1jb250ZW50LXNrZWxldG9uIHsKCS8qIHdlIGFyZSBzdXJlIHRoZXJlIGFyZSBubyBkYXkgbnVtYmVycyBpbiB0aGVzZSB2aWV3cywgc28uLi4gKi8KCXBhZGRpbmctdG9wOiAxcHg7IC8qIGFkZCBhIHBpeGVsIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgMnB4IHBhZGRpbmcgYWJvdmUgZXZlbnRzICovCglwYWRkaW5nLWJvdHRvbTogMWVtOyAvKiBlbnN1cmUgYSBzcGFjZSBhdCBib3R0b20gb2YgY2VsbCBmb3IgdXNlciBzZWxlY3RpbmcvY2xpY2tpbmcgKi8KfQoKLmZjLWJhc2ljLXZpZXcgLmZjLWJvZHkgLmZjLXJvdyB7CgltaW4taGVpZ2h0OiA0ZW07IC8qIGVuc3VyZSB0aGF0IGFsbCByb3dzIGFyZSBhdCBsZWFzdCB0aGlzIHRhbGwgKi8KfQoKLyogYSAicmlnaWQiIHJvdyB3aWxsIHRha2UgdXAgYSBjb25zdGFudCBhbW91bnQgb2YgaGVpZ2h0IGJlY2F1c2UgY29udGVudC1za2VsZXRvbiBpcyBhYnNvbHV0ZSAqLwoKLmZjLXJvdy5mYy1yaWdpZCB7CglvdmVyZmxvdzogaGlkZGVuOwp9CgouZmMtcm93LmZjLXJpZ2lkIC5mYy1jb250ZW50LXNrZWxldG9uIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXRvcDogMDsKCWxlZnQ6IDA7CglyaWdodDogMDsKfQoKLyogd2VlayBhbmQgZGF5IG51bWJlciBzdHlsaW5nICovCgouZmMtYmFzaWMtdmlldyAuZmMtd2Vlay1udW1iZXIsCi5mYy1iYXNpYy12aWV3IC5mYy1kYXktbnVtYmVyIHsKCXBhZGRpbmc6IDAgMnB4Owp9CgouZmMtYmFzaWMtdmlldyB0ZC5mYy13ZWVrLW51bWJlciBzcGFuLAouZmMtYmFzaWMtdmlldyB0ZC5mYy1kYXktbnVtYmVyIHsKCXBhZGRpbmctdG9wOiAycHg7CglwYWRkaW5nLWJvdHRvbTogMnB4Owp9CgouZmMtYmFzaWMtdmlldyAuZmMtd2Vlay1udW1iZXIgewoJdGV4dC1hbGlnbjogY2VudGVyOwp9CgouZmMtYmFzaWMtdmlldyAuZmMtd2Vlay1udW1iZXIgc3BhbiB7CgkvKiB3b3JrIGFyb3VuZCB0aGUgd2F5IHdlIGRvIGNvbHVtbiByZXNpemluZyBhbmQgZW5zdXJlIGEgbWluaW11bSB3aWR0aCAqLwoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJbWluLXdpZHRoOiAxLjI1ZW07Cn0KCi5mYy1sdHIgLmZjLWJhc2ljLXZpZXcgLmZjLWRheS1udW1iZXIgewoJdGV4dC1hbGlnbjogcmlnaHQ7Cn0KCi5mYy1ydGwgLmZjLWJhc2ljLXZpZXcgLmZjLWRheS1udW1iZXIgewoJdGV4dC1hbGlnbjogbGVmdDsKfQoKLmZjLWRheS1udW1iZXIuZmMtb3RoZXItbW9udGggewoJb3BhY2l0eTogMC4zOwoJZmlsdGVyOiBhbHBoYShvcGFjaXR5PTMwKTsgLyogZm9yIElFICovCgkvKiBvcGFjaXR5IHdpdGggc21hbGwgZm9udCBjYW4gc29tZXRpbWVzIGxvb2sgdG9vIGZhZGVkCgkgICBtaWdodCB3YW50IHRvIHNldCB0aGUgJ2NvbG9yJyBwcm9wZXJ0eSBpbnN0ZWFkCgkgICBtYWtpbmcgZGF5LW51bWJlcnMgYm9sZCBhbHNvIGZpeGVzIHRoZSBwcm9ibGVtICovCn0KCi8qIEFnZW5kYVZpZXcgYWxsLWRheSBhcmVhCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy1hZ2VuZGEtdmlldyAuZmMtZGF5LWdyaWQgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJei1pbmRleDogMjsgLyogc28gdGhlICJtb3JlLi4iIHBvcG92ZXIgd2lsbCBiZSBvdmVyIHRoZSB0aW1lIGdyaWQgKi8KfQoKLmZjLWFnZW5kYS12aWV3IC5mYy1kYXktZ3JpZCAuZmMtcm93IHsKCW1pbi1oZWlnaHQ6IDNlbTsgLyogYWxsLWRheSBzZWN0aW9uIHdpbGwgbmV2ZXIgZ2V0IHNob3J0ZXIgdGhhbiB0aGlzICovCn0KCi5mYy1hZ2VuZGEtdmlldyAuZmMtZGF5LWdyaWQgLmZjLXJvdyAuZmMtY29udGVudC1za2VsZXRvbiB7CglwYWRkaW5nLXRvcDogMXB4OyAvKiBhZGQgYSBwaXhlbCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIDJweCBwYWRkaW5nIGFib3ZlIGV2ZW50cyAqLwoJcGFkZGluZy1ib3R0b206IDFlbTsgLyogZ2l2ZSBzcGFjZSB1bmRlcm5lYXRoIGV2ZW50cyBmb3IgY2xpY2tpbmcvc2VsZWN0aW5nIGRheXMgKi8KfQoKCi8qIFRpbWVHcmlkIGF4aXMgcnVubmluZyBkb3duIHRoZSBzaWRlIChmb3IgYm90aCB0aGUgYWxsLWRheSBhcmVhIGFuZCB0aGUgc2xvdCBhcmVhKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMgLmZjLWF4aXMgeyAvKiAuZmMgdG8gb3ZlcmNvbWUgZGVmYXVsdCBjZWxsIHN0eWxlcyAqLwoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCXBhZGRpbmc6IDAgNHB4OwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLmZjLWx0ciAuZmMtYXhpcyB7Cgl0ZXh0LWFsaWduOiByaWdodDsKfQoKLmZjLXJ0bCAuZmMtYXhpcyB7Cgl0ZXh0LWFsaWduOiBsZWZ0Owp9CgoudWktd2lkZ2V0IHRkLmZjLWF4aXMgewoJZm9udC13ZWlnaHQ6IG5vcm1hbDsgLyogb3ZlcmNvbWUganF1aSB0aGVtZSBtYWtpbmcgaXQgYm9sZCAqLwp9CgoKLyogVGltZUdyaWQgU3RydWN0dXJlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy10aW1lLWdyaWQtY29udGFpbmVyLCAvKiBzbyBzY3JvbGwgY29udGFpbmVyJ3Mgei1pbmRleCBpcyBiZWxvdyBhbGwtZGF5ICovCi5mYy10aW1lLWdyaWQgeyAvKiBzbyBzbGF0cy9iZy9jb250ZW50L2V0YyBwb3NpdGlvbnMgZ2V0IHNjb3BlZCB3aXRoaW4gaGVyZSAqLwoJcG9zaXRpb246IHJlbGF0aXZlOwoJei1pbmRleDogMTsKfQoKLmZjLXRpbWUtZ3JpZCB7CgltaW4taGVpZ2h0OiAxMDAlOyAvKiBzbyBpZiBoZWlnaHQgc2V0dGluZyBpcyAnYXV0bycsIC5mYy1iZyBzdHJldGNoZXMgdG8gZmlsbCBoZWlnaHQgKi8KfQoKLmZjLXRpbWUtZ3JpZCB0YWJsZSB7IC8qIGRvbid0IHB1dCBvdXRlciBib3JkZXJzIG9uIHNsYXRzL2JnL2NvbnRlbnQvZXRjICovCglib3JkZXI6IDAgaGlkZGVuIHRyYW5zcGFyZW50Owp9CgouZmMtdGltZS1ncmlkID4gLmZjLWJnIHsKCXotaW5kZXg6IDE7Cn0KCi5mYy10aW1lLWdyaWQgLmZjLXNsYXRzLAouZmMtdGltZS1ncmlkID4gaHIgeyAvKiB0aGUgPGhyPiBBZ2VuZGFWaWV3IGluamVjdHMgd2hlbiBncmlkIGlzIHNob3J0ZXIgdGhhbiBzY3JvbGxlciAqLwoJcG9zaXRpb246IHJlbGF0aXZlOwoJei1pbmRleDogMjsKfQoKLmZjLXRpbWUtZ3JpZCAuZmMtYmdldmVudC1za2VsZXRvbiwKLmZjLXRpbWUtZ3JpZCAuZmMtY29udGVudC1za2VsZXRvbiB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglsZWZ0OiAwOwoJcmlnaHQ6IDA7Cn0KCi5mYy10aW1lLWdyaWQgLmZjLWJnZXZlbnQtc2tlbGV0b24gewoJei1pbmRleDogMzsKfQoKLmZjLXRpbWUtZ3JpZCAuZmMtaGlnaGxpZ2h0LXNrZWxldG9uIHsKCXotaW5kZXg6IDQ7Cn0KCi5mYy10aW1lLWdyaWQgLmZjLWNvbnRlbnQtc2tlbGV0b24gewoJei1pbmRleDogNTsKfQoKLmZjLXRpbWUtZ3JpZCAuZmMtaGVscGVyLXNrZWxldG9uIHsKCXotaW5kZXg6IDY7Cn0KCgovKiBUaW1lR3JpZCBTbGF0cyAobGluZXMgdGhhdCBydW4gaG9yaXpvbnRhbGx5KQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtdGltZS1ncmlkIC5mYy1zbGF0cyB0ZCB7CgloZWlnaHQ6IDEuNWVtOwoJYm9yZGVyLWJvdHRvbTogMDsgLyogZWFjaCBjZWxsIGlzIHJlc3BvbnNpYmxlIGZvciBpdHMgdG9wIGJvcmRlciAqLwp9CgouZmMtdGltZS1ncmlkIC5mYy1zbGF0cyAuZmMtbWlub3IgdGQgewoJYm9yZGVyLXRvcC1zdHlsZTogZG90dGVkOwp9CgouZmMtdGltZS1ncmlkIC5mYy1zbGF0cyAudWktd2lkZ2V0LWNvbnRlbnQgeyAvKiBmb3IganF1aSB0aGVtZSAqLwoJYmFja2dyb3VuZDogbm9uZTsgLyogc2VlIHRocm91Z2ggdG8gZmMtYmcgKi8KfQoKCi8qIFRpbWVHcmlkIEhpZ2hsaWdodGluZyBTbG90cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtdGltZS1ncmlkIC5mYy1oaWdobGlnaHQtY29udGFpbmVyIHsgLyogYSBkaXYgd2l0aGluIGEgY2VsbCB3aXRoaW4gdGhlIGZjLWhpZ2hsaWdodC1za2VsZXRvbiAqLwoJcG9zaXRpb246IHJlbGF0aXZlOyAvKiBzY29wZXMgdGhlIGxlZnQvcmlnaHQgb2YgdGhlIGZjLWhpZ2hsaWdodCB0byBiZSBpbiB0aGUgY29sdW1uICovCn0KCi5mYy10aW1lLWdyaWQgLmZjLWhpZ2hsaWdodCB7Cglwb3NpdGlvbjogYWJzb2x1dGU7CglsZWZ0OiAwOwoJcmlnaHQ6IDA7CgkvKiB0b3AgYW5kIGJvdHRvbSB3aWxsIGJlIGluIGJ5IEpTICovCn0KCgovKiBUaW1lR3JpZCBFdmVudCBDb250YWlubWVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtdGltZS1ncmlkIC5mYy1ldmVudC1jb250YWluZXIsIC8qIGEgZGl2IHdpdGhpbiBhIGNlbGwgd2l0aGluIHRoZSBmYy1jb250ZW50LXNrZWxldG9uICovCi5mYy10aW1lLWdyaWQgLmZjLWJnZXZlbnQtY29udGFpbmVyIHsgLyogYSBkaXYgd2l0aGluIGEgY2VsbCB3aXRoaW4gdGhlIGZjLWJnZXZlbnQtc2tlbGV0b24gKi8KCXBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmZjLWx0ciAuZmMtdGltZS1ncmlkIC5mYy1ldmVudC1jb250YWluZXIgeyAvKiBzcGFjZSBvbiB0aGUgc2lkZXMgb2YgZXZlbnRzIGZvciBMVFIgKGRlZmF1bHQpICovCgltYXJnaW46IDAgMi41JSAwIDJweDsKfQoKLmZjLXJ0bCAuZmMtdGltZS1ncmlkIC5mYy1ldmVudC1jb250YWluZXIgeyAvKiBzcGFjZSBvbiB0aGUgc2lkZXMgb2YgZXZlbnRzIGZvciBSVEwgKi8KCW1hcmdpbjogMCAycHggMCAyLjUlOwp9CgouZmMtdGltZS1ncmlkIC5mYy1ldmVudCwKLmZjLXRpbWUtZ3JpZCAuZmMtYmdldmVudCB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl6LWluZGV4OiAxOyAvKiBzY29wZSBpbm5lciB6LWluZGV4J3MgKi8KfQoKLmZjLXRpbWUtZ3JpZCAuZmMtYmdldmVudCB7CgkvKiBiYWNrZ3JvdW5kIGV2ZW50cyBhbHdheXMgc3BhbiBmdWxsIHdpZHRoICovCglsZWZ0OiAwOwoJcmlnaHQ6IDA7Cn0KCgovKiBHZW5lcmljIFZlcnRpY2FsIEV2ZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy12LWV2ZW50LmZjLW5vdC1zdGFydCB7IC8qIGV2ZW50cyB0aGF0IGFyZSBjb250aW51aW5nIGZyb20gYW5vdGhlciBkYXkgKi8KCS8qIHJlcGxhY2Ugc3BhY2UgbWFkZSBieSB0aGUgdG9wIGJvcmRlciB3aXRoIHBhZGRpbmcgKi8KCWJvcmRlci10b3Atd2lkdGg6IDA7CglwYWRkaW5nLXRvcDogMXB4OwoKCS8qIHJlbW92ZSB0b3Agcm91bmRlZCBjb3JuZXJzICovCglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cn0KCi5mYy12LWV2ZW50LmZjLW5vdC1lbmQgewoJLyogcmVwbGFjZSBzcGFjZSBtYWRlIGJ5IHRoZSB0b3AgYm9yZGVyIHdpdGggcGFkZGluZyAqLwoJYm9yZGVyLWJvdHRvbS13aWR0aDogMDsKCXBhZGRpbmctYm90dG9tOiAxcHg7CgoJLyogcmVtb3ZlIGJvdHRvbSByb3VuZGVkIGNvcm5lcnMgKi8KCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKfQoKCi8qIFRpbWVHcmlkIEV2ZW50IFN0eWxpbmcKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpXZSB1c2UgdGhlIGZ1bGwgImZjLXRpbWUtZ3JpZC1ldmVudCIgY2xhc3MgaW5zdGVhZCBvZiB1c2luZyBkZXNjZW5kYW50cyBiZWNhdXNlIHRoZSBldmVudCB3b24ndApiZSBhIGRlc2NlbmRhbnQgb2YgdGhlIGdyaWQgd2hlbiBpdCBpcyBiZWluZyBkcmFnZ2VkLgoqLwoKLmZjLXRpbWUtZ3JpZC1ldmVudCB7CglvdmVyZmxvdzogaGlkZGVuOyAvKiBkb24ndCBsZXQgdGhlIGJnIGZsb3cgb3ZlciByb3VuZGVkIGNvcm5lcnMgKi8KfQoKLmZjLXRpbWUtZ3JpZC1ldmVudCAuZmMtdGltZSwKLmZjLXRpbWUtZ3JpZC1ldmVudCAuZmMtdGl0bGUgewoJcGFkZGluZzogMCAxcHg7Cn0KCi5mYy10aW1lLWdyaWQtZXZlbnQgLmZjLXRpbWUgewoJZm9udC1zaXplOiAuODVlbTsKCXdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi8qIHNob3J0IG1vZGUsIHdoZXJlIHRpbWUgYW5kIHRpdGxlIGFyZSBvbiB0aGUgc2FtZSBsaW5lICovCgouZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNob3J0IC5mYy1jb250ZW50IHsKCS8qIGRvbid0IHdyYXAgdG8gc2Vjb25kIGxpbmUgKG5vdyB0aGF0IGNvbnRlbnRzIHdpbGwgYmUgaW5saW5lKSAqLwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLmZjLXRpbWUtZ3JpZC1ldmVudC5mYy1zaG9ydCAuZmMtdGltZSwKLmZjLXRpbWUtZ3JpZC1ldmVudC5mYy1zaG9ydCAuZmMtdGl0bGUgewoJLyogcHV0IHRoZSB0aW1lIGFuZCB0aXRsZSBvbiB0aGUgc2FtZSBsaW5lICovCglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgl2ZXJ0aWNhbC1hbGlnbjogdG9wOwp9CgouZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNob3J0IC5mYy10aW1lIHNwYW4gewoJZGlzcGxheTogbm9uZTsgLyogZG9uJ3QgZGlzcGxheSB0aGUgZnVsbCB0aW1lIHRleHQuLi4gKi8KfQoKLmZjLXRpbWUtZ3JpZC1ldmVudC5mYy1zaG9ydCAuZmMtdGltZTpiZWZvcmUgewoJY29udGVudDogYXR0cihkYXRhLXN0YXJ0KTsgLyogLi4uaW5zdGVhZCwgZGlzcGxheSBvbmx5IHRoZSBzdGFydCB0aW1lICovCn0KCi5mYy10aW1lLWdyaWQtZXZlbnQuZmMtc2hvcnQgLmZjLXRpbWU6YWZ0ZXIgewoJY29udGVudDogIlwwMDBBMC1cMDAwQTAiOyAvKiBzZXBlcmF0ZSB3aXRoIGEgZGFzaCwgd3JhcHBlZCBpbiBuYnNwJ3MgKi8KfQoKLmZjLXRpbWUtZ3JpZC1ldmVudC5mYy1zaG9ydCAuZmMtdGl0bGUgewoJZm9udC1zaXplOiAuODVlbTsgLyogbWFrZSB0aGUgdGl0bGUgdGV4dCB0aGUgc2FtZSBzaXplIGFzIHRoZSB0aW1lICovCglwYWRkaW5nOiAwOyAvKiB1bmRvIHBhZGRpbmcgZnJvbSBhYm92ZSAqLwp9CgovKiByZXNpemVyICovCgouZmMtdGltZS1ncmlkLWV2ZW50IC5mYy1yZXNpemVyIHsKCWxlZnQ6IDA7CglyaWdodDogMDsKCWJvdHRvbTogMDsKCWhlaWdodDogOHB4OwoJb3ZlcmZsb3c6IGhpZGRlbjsKCWxpbmUtaGVpZ2h0OiA4cHg7Cglmb250LXNpemU6IDExcHg7Cglmb250LWZhbWlseTogbW9ub3NwYWNlOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJY3Vyc29yOiBzLXJlc2l6ZTsKfQoKLmZjLXRpbWUtZ3JpZC1ldmVudCAuZmMtcmVzaXplcjphZnRlciB7Cgljb250ZW50OiAiPSI7Cn0K]]></data>
	</file>
	<file>
	  <filename>/css/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/css/jquery-ui.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIGpRdWVyeSBVSSAtIHYxLjEyLjAtcmMuMiAtIDIwMTYtMDQtMjEKKiBodHRwOi8vanF1ZXJ5dWkuY29tCiogSW5jbHVkZXM6IGNvcmUuY3NzLCBhY2NvcmRpb24uY3NzLCBhdXRvY29tcGxldGUuY3NzLCBtZW51LmNzcywgYnV0dG9uLmNzcywgY29udHJvbGdyb3VwLmNzcywgY2hlY2tib3hyYWRpby5jc3MsIGRhdGVwaWNrZXIuY3NzLCBkaWFsb2cuY3NzLCBkcmFnZ2FibGUuY3NzLCByZXNpemFibGUuY3NzLCBwcm9ncmVzc2Jhci5jc3MsIHNlbGVjdGFibGUuY3NzLCBzZWxlY3RtZW51LmNzcywgc2xpZGVyLmNzcywgc29ydGFibGUuY3NzLCBzcGlubmVyLmNzcywgdGFicy5jc3MsIHRvb2x0aXAuY3NzLCB0aGVtZS5jc3MKKiBUbyB2aWV3IGFuZCBtb2RpZnkgdGhpcyB0aGVtZSwgdmlzaXQgaHR0cDovL2pxdWVyeXVpLmNvbS90aGVtZXJvbGxlci8/YmdTaGFkb3dYUG9zPSZiZ092ZXJsYXlYUG9zPSZiZ0Vycm9yWFBvcz0mYmdIaWdobGlnaHRYUG9zPSZiZ0NvbnRlbnRYUG9zPSZiZ0hlYWRlclhQb3M9JmJnQWN0aXZlWFBvcz0mYmdIb3ZlclhQb3M9JmJnRGVmYXVsdFhQb3M9JmJnU2hhZG93WVBvcz0mYmdPdmVybGF5WVBvcz0mYmdFcnJvcllQb3M9JmJnSGlnaGxpZ2h0WVBvcz0mYmdDb250ZW50WVBvcz0mYmdIZWFkZXJZUG9zPSZiZ0FjdGl2ZVlQb3M9JmJnSG92ZXJZUG9zPSZiZ0RlZmF1bHRZUG9zPSZiZ1NoYWRvd1JlcGVhdD0mYmdPdmVybGF5UmVwZWF0PSZiZ0Vycm9yUmVwZWF0PSZiZ0hpZ2hsaWdodFJlcGVhdD0mYmdDb250ZW50UmVwZWF0PSZiZ0hlYWRlclJlcGVhdD0mYmdBY3RpdmVSZXBlYXQ9JmJnSG92ZXJSZXBlYXQ9JmJnRGVmYXVsdFJlcGVhdD0maWNvbnNIb3Zlcj11cmwoJTIyaW1hZ2VzJTJGdWktaWNvbnNfNTU1NTU1XzI1NngyNDAucG5nJTIyKSZpY29uc0hpZ2hsaWdodD11cmwoJTIyaW1hZ2VzJTJGdWktaWNvbnNfNzc3NjIwXzI1NngyNDAucG5nJTIyKSZpY29uc0hlYWRlcj11cmwoJTIyaW1hZ2VzJTJGdWktaWNvbnNfNDQ0NDQ0XzI1NngyNDAucG5nJTIyKSZpY29uc0Vycm9yPXVybCglMjJpbWFnZXMlMkZ1aS1pY29uc19jYzAwMDBfMjU2eDI0MC5wbmclMjIpJmljb25zRGVmYXVsdD11cmwoJTIyaW1hZ2VzJTJGdWktaWNvbnNfNzc3Nzc3XzI1NngyNDAucG5nJTIyKSZpY29uc0NvbnRlbnQ9dXJsKCUyMmltYWdlcyUyRnVpLWljb25zXzQ0NDQ0NF8yNTZ4MjQwLnBuZyUyMikmaWNvbnNBY3RpdmU9dXJsKCUyMmltYWdlcyUyRnVpLWljb25zX2ZmZmZmZl8yNTZ4MjQwLnBuZyUyMikmYmdJbWdVcmxTaGFkb3c9JmJnSW1nVXJsT3ZlcmxheT0mYmdJbWdVcmxIb3Zlcj0mYmdJbWdVcmxIaWdobGlnaHQ9JmJnSW1nVXJsSGVhZGVyPSZiZ0ltZ1VybEVycm9yPSZiZ0ltZ1VybERlZmF1bHQ9JmJnSW1nVXJsQ29udGVudD0mYmdJbWdVcmxBY3RpdmU9Jm9wYWNpdHlGaWx0ZXJTaGFkb3c9QWxwaGEoT3BhY2l0eSUzRDMwKSZvcGFjaXR5RmlsdGVyT3ZlcmxheT1BbHBoYShPcGFjaXR5JTNEMzApJm9wYWNpdHlTaGFkb3dQZXJjPTMwJm9wYWNpdHlPdmVybGF5UGVyYz0zMCZpY29uQ29sb3JIb3Zlcj0lMjM1NTU1NTUmaWNvbkNvbG9ySGlnaGxpZ2h0PSUyMzc3NzYyMCZpY29uQ29sb3JIZWFkZXI9JTIzNDQ0NDQ0Jmljb25Db2xvckVycm9yPSUyM2NjMDAwMCZpY29uQ29sb3JEZWZhdWx0PSUyMzc3Nzc3NyZpY29uQ29sb3JDb250ZW50PSUyMzQ0NDQ0NCZpY29uQ29sb3JBY3RpdmU9JTIzZmZmZmZmJmJnSW1nT3BhY2l0eVNoYWRvdz0wJmJnSW1nT3BhY2l0eU92ZXJsYXk9MCZiZ0ltZ09wYWNpdHlFcnJvcj05NSZiZ0ltZ09wYWNpdHlIaWdobGlnaHQ9NTUmYmdJbWdPcGFjaXR5Q29udGVudD03NSZiZ0ltZ09wYWNpdHlIZWFkZXI9NzUmYmdJbWdPcGFjaXR5QWN0aXZlPTY1JmJnSW1nT3BhY2l0eUhvdmVyPTc1JmJnSW1nT3BhY2l0eURlZmF1bHQ9NzUmYmdUZXh0dXJlU2hhZG93PWZsYXQmYmdUZXh0dXJlT3ZlcmxheT1mbGF0JmJnVGV4dHVyZUVycm9yPWZsYXQmYmdUZXh0dXJlSGlnaGxpZ2h0PWZsYXQmYmdUZXh0dXJlQ29udGVudD1mbGF0JmJnVGV4dHVyZUhlYWRlcj1mbGF0JmJnVGV4dHVyZUFjdGl2ZT1mbGF0JmJnVGV4dHVyZUhvdmVyPWZsYXQmYmdUZXh0dXJlRGVmYXVsdD1mbGF0JmNvcm5lclJhZGl1cz0zcHgmZndEZWZhdWx0PW5vcm1hbCZmZkRlZmF1bHQ9QXJpYWwlMkNIZWx2ZXRpY2ElMkNzYW5zLXNlcmlmJmZzRGVmYXVsdD0xZW0mY29ybmVyUmFkaXVzU2hhZG93PThweCZ0aGlja25lc3NTaGFkb3c9NXB4Jm9mZnNldExlZnRTaGFkb3c9MHB4Jm9mZnNldFRvcFNoYWRvdz0wcHgmb3BhY2l0eVNoYWRvdz0uMyZiZ0NvbG9yU2hhZG93PSUyMzY2NjY2NiZvcGFjaXR5T3ZlcmxheT0uMyZiZ0NvbG9yT3ZlcmxheT0lMjNhYWFhYWEmZmNFcnJvcj0lMjM1ZjNmM2YmYm9yZGVyQ29sb3JFcnJvcj0lMjNmMWE4OTkmYmdDb2xvckVycm9yPSUyM2ZkZGZkZiZmY0hpZ2hsaWdodD0lMjM3Nzc2MjAmYm9yZGVyQ29sb3JIaWdobGlnaHQ9JTIzZGFkNTVlJmJnQ29sb3JIaWdobGlnaHQ9JTIzZmZmYTkwJmZjQ29udGVudD0lMjMzMzMzMzMmYm9yZGVyQ29sb3JDb250ZW50PSUyM2RkZGRkZCZiZ0NvbG9yQ29udGVudD0lMjNmZmZmZmYmZmNIZWFkZXI9JTIzMzMzMzMzJmJvcmRlckNvbG9ySGVhZGVyPSUyM2RkZGRkZCZiZ0NvbG9ySGVhZGVyPSUyM2U5ZTllOSZmY0FjdGl2ZT0lMjNmZmZmZmYmYm9yZGVyQ29sb3JBY3RpdmU9JTIzMDAzZWZmJmJnQ29sb3JBY3RpdmU9JTIzMDA3ZmZmJmZjSG92ZXI9JTIzMmIyYjJiJmJvcmRlckNvbG9ySG92ZXI9JTIzY2NjY2NjJmJnQ29sb3JIb3Zlcj0lMjNlZGVkZWQmZmNEZWZhdWx0PSUyMzQ1NDU0NSZib3JkZXJDb2xvckRlZmF1bHQ9JTIzYzVjNWM1JmJnQ29sb3JEZWZhdWx0PSUyM2Y2ZjZmNgoqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzOyBMaWNlbnNlZCBNSVQgKi8KCi8qIExheW91dCBoZWxwZXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoudWktaGVscGVyLWhpZGRlbiB7CglkaXNwbGF5OiBub25lOwp9Ci51aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGUgewoJYm9yZGVyOiAwOwoJY2xpcDogcmVjdCgwIDAgMCAwKTsKCWhlaWdodDogMXB4OwoJbWFyZ2luOiAtMXB4OwoJb3ZlcmZsb3c6IGhpZGRlbjsKCXBhZGRpbmc6IDA7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl3aWR0aDogMXB4Owp9Ci51aS1oZWxwZXItcmVzZXQgewoJbWFyZ2luOiAwOwoJcGFkZGluZzogMDsKCWJvcmRlcjogMDsKCW91dGxpbmU6IDA7CglsaW5lLWhlaWdodDogMS4zOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJZm9udC1zaXplOiAxMDAlOwoJbGlzdC1zdHlsZTogbm9uZTsKfQoudWktaGVscGVyLWNsZWFyZml4OmJlZm9yZSwKLnVpLWhlbHBlci1jbGVhcmZpeDphZnRlciB7Cgljb250ZW50OiAiIjsKCWRpc3BsYXk6IHRhYmxlOwoJYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKfQoudWktaGVscGVyLWNsZWFyZml4OmFmdGVyIHsKCWNsZWFyOiBib3RoOwp9Ci51aS1oZWxwZXItemZpeCB7Cgl3aWR0aDogMTAwJTsKCWhlaWdodDogMTAwJTsKCXRvcDogMDsKCWxlZnQ6IDA7Cglwb3NpdGlvbjogYWJzb2x1dGU7CglvcGFjaXR5OiAwOwoJZmlsdGVyOkFscGhhKE9wYWNpdHk9MCk7IC8qIHN1cHBvcnQ6IElFOCAqLwp9CgoudWktZnJvbnQgewoJei1pbmRleDogMTAwOwp9CgoKLyogSW50ZXJhY3Rpb24gQ3VlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLnVpLXN0YXRlLWRpc2FibGVkIHsKCWN1cnNvcjogZGVmYXVsdCAhaW1wb3J0YW50OwoJcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCgovKiBJY29ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLnVpLWljb24gewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCW1hcmdpbi10b3A6IC0uMjVlbTsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXRleHQtaW5kZW50OiAtOTk5OTlweDsKCW92ZXJmbG93OiBoaWRkZW47CgliYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Owp9CgoudWktd2lkZ2V0LWljb24tYmxvY2sgewoJbGVmdDogNTAlOwoJbWFyZ2luLWxlZnQ6IC04cHg7CglkaXNwbGF5OiBibG9jazsKfQoKLyogTWlzYyB2aXN1YWxzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLyogT3ZlcmxheXMgKi8KLnVpLXdpZGdldC1vdmVybGF5IHsKCXBvc2l0aW9uOiBmaXhlZDsKCXRvcDogMDsKCWxlZnQ6IDA7Cgl3aWR0aDogMTAwJTsKCWhlaWdodDogMTAwJTsKfQoudWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24taGVhZGVyIHsKCWRpc3BsYXk6IGJsb2NrOwoJY3Vyc29yOiBwb2ludGVyOwoJcG9zaXRpb246IHJlbGF0aXZlOwoJbWFyZ2luOiAycHggMCAwIDA7CglwYWRkaW5nOiAuNWVtIC41ZW0gLjVlbSAuN2VtOwoJZm9udC1zaXplOiAxMDAlOwp9Ci51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1jb250ZW50IHsKCXBhZGRpbmc6IDFlbSAyLjJlbTsKCWJvcmRlci10b3A6IDA7CglvdmVyZmxvdzogYXV0bzsKfQoudWktYXV0b2NvbXBsZXRlIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXRvcDogMDsKCWxlZnQ6IDA7CgljdXJzb3I6IGRlZmF1bHQ7Cn0KLnVpLW1lbnUgewoJbGlzdC1zdHlsZTogbm9uZTsKCXBhZGRpbmc6IDA7CgltYXJnaW46IDA7CglkaXNwbGF5OiBibG9jazsKCW91dGxpbmU6IDA7Cn0KLnVpLW1lbnUgLnVpLW1lbnUgewoJcG9zaXRpb246IGFic29sdXRlOwp9Ci51aS1tZW51IC51aS1tZW51LWl0ZW0gewoJbWFyZ2luOiAwOwoJY3Vyc29yOiBwb2ludGVyOwoJLyogc3VwcG9ydDogSUUxMCwgc2VlICM4ODQ0ICovCglsaXN0LXN0eWxlLWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEFRQUJBSUFBQUFBQUFQLy8veUg1QkFFQUFBQUFMQUFBQUFBQkFBRUFBQUlCUkFBNyIpOwp9Ci51aS1tZW51IC51aS1tZW51LWl0ZW0td3JhcHBlciB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglwYWRkaW5nOiAzcHggMWVtIDNweCAuNGVtOwp9Ci51aS1tZW51IC51aS1tZW51LWRpdmlkZXIgewoJbWFyZ2luOiA1cHggMDsKCWhlaWdodDogMDsKCWZvbnQtc2l6ZTogMDsKCWxpbmUtaGVpZ2h0OiAwOwoJYm9yZGVyLXdpZHRoOiAxcHggMCAwIDA7Cn0KLnVpLW1lbnUgLnVpLXN0YXRlLWZvY3VzLAoudWktbWVudSAudWktc3RhdGUtYWN0aXZlIHsKCW1hcmdpbjogLTFweDsKfQoKLyogaWNvbiBzdXBwb3J0ICovCi51aS1tZW51LWljb25zIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKfQoudWktbWVudS1pY29ucyAudWktbWVudS1pdGVtLXdyYXBwZXIgewoJcGFkZGluZy1sZWZ0OiAyZW07Cn0KCi8qIGxlZnQtYWxpZ25lZCAqLwoudWktbWVudSAudWktaWNvbiB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7Cglib3R0b206IDA7CglsZWZ0OiAuMmVtOwoJbWFyZ2luOiBhdXRvIDA7Cn0KCi8qIHJpZ2h0LWFsaWduZWQgKi8KLnVpLW1lbnUgLnVpLW1lbnUtaWNvbiB7CglsZWZ0OiBhdXRvOwoJcmlnaHQ6IDA7Cn0KLnVpLWJ1dHRvbiB7CglwYWRkaW5nOiAuNGVtIDFlbTsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWxpbmUtaGVpZ2h0OiBub3JtYWw7CgltYXJnaW4tcmlnaHQ6IC4xZW07CgljdXJzb3I6IHBvaW50ZXI7Cgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKCS1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CgktbXMtdXNlci1zZWxlY3Q6IG5vbmU7Cgl1c2VyLXNlbGVjdDogbm9uZTsKCgkvKiBTdXBwb3J0OiBJRSA8PSAxMSAqLwoJb3ZlcmZsb3c6IHZpc2libGU7Cn0KCi51aS1idXR0b24sCi51aS1idXR0b246bGluaywKLnVpLWJ1dHRvbjp2aXNpdGVkLAoudWktYnV0dG9uOmhvdmVyLAoudWktYnV0dG9uOmFjdGl2ZSB7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi8qIHRvIG1ha2Ugcm9vbSBmb3IgdGhlIGljb24sIGEgd2lkdGggbmVlZHMgdG8gYmUgc2V0IGhlcmUgKi8KLnVpLWJ1dHRvbi1pY29uLW9ubHkgewoJd2lkdGg6IDJlbTsKCWJveC1zaXppbmc6IGJvcmRlci1ib3g7Cgl0ZXh0LWluZGVudDogLTk5OTlweDsKCXdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi8qIG5vIGljb24gc3VwcG9ydCBmb3IgaW5wdXQgZWxlbWVudHMgKi8KaW5wdXQudWktYnV0dG9uLnVpLWJ1dHRvbi1pY29uLW9ubHkgewoJdGV4dC1pbmRlbnQ6IDA7Cn0KCi8qIGJ1dHRvbiBpY29uIGVsZW1lbnQocykgKi8KLnVpLWJ1dHRvbi1pY29uLW9ubHkgLnVpLWljb24gewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiA1MCU7CglsZWZ0OiA1MCU7CgltYXJnaW4tdG9wOiAtOHB4OwoJbWFyZ2luLWxlZnQ6IC04cHg7Cn0KCi51aS1idXR0b24udWktaWNvbi1ub3RleHQgLnVpLWljb24gewoJcGFkZGluZzogMDsKCXdpZHRoOiAyLjFlbTsKCWhlaWdodDogMi4xZW07Cgl0ZXh0LWluZGVudDogLTk5OTlweDsKCXdoaXRlLXNwYWNlOiBub3dyYXA7Cgp9CgppbnB1dC51aS1idXR0b24udWktaWNvbi1ub3RleHQgLnVpLWljb24gewoJd2lkdGg6IGF1dG87CgloZWlnaHQ6IGF1dG87Cgl0ZXh0LWluZGVudDogMDsKCXdoaXRlLXNwYWNlOiBub3JtYWw7CglwYWRkaW5nOiAuNGVtIDFlbTsKfQoKLyogd29ya2Fyb3VuZHMgKi8KLyogU3VwcG9ydDogRmlyZWZveCA1IC0gNDAgKi8KaW5wdXQudWktYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLApidXR0b24udWktYnV0dG9uOjotbW96LWZvY3VzLWlubmVyIHsKCWJvcmRlcjogMDsKCXBhZGRpbmc6IDA7Cn0KLnVpLWNvbnRyb2xncm91cCB7Cgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwoJZGlzcGxheTogaW5saW5lLWJsb2NrOwp9Ci51aS1jb250cm9sZ3JvdXAgPiAudWktY29udHJvbGdyb3VwLWl0ZW0gewoJZmxvYXQ6IGxlZnQ7CgltYXJnaW4tbGVmdDogMDsKCW1hcmdpbi1yaWdodDogMDsKfQoudWktY29udHJvbGdyb3VwID4gLnVpLWNvbnRyb2xncm91cC1pdGVtOmZvY3VzLAoudWktY29udHJvbGdyb3VwID4gLnVpLWNvbnRyb2xncm91cC1pdGVtLnVpLXZpc3VhbC1mb2N1cyB7Cgl6LWluZGV4OiA5OTk5Owp9Ci51aS1jb250cm9sZ3JvdXAtdmVydGljYWwgPiAudWktY29udHJvbGdyb3VwLWl0ZW0gewoJZGlzcGxheTogYmxvY2s7CglmbG9hdDogbm9uZTsKCXdpZHRoOiAxMDAlOwoJbWFyZ2luLXRvcDogMDsKCW1hcmdpbi1ib3R0b206IDA7Cgl0ZXh0LWFsaWduOiBsZWZ0Owp9Ci51aS1jb250cm9sZ3JvdXAtdmVydGljYWwgLnVpLWNvbnRyb2xncm91cC1pdGVtIHsKCWJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KLnVpLWNvbnRyb2xncm91cCAudWktY29udHJvbGdyb3VwLWxhYmVsIHsKCXBhZGRpbmc6IC40ZW0gMWVtOwp9Ci51aS1jb250cm9sZ3JvdXAgLnVpLWNvbnRyb2xncm91cC1sYWJlbCBzcGFuIHsKCWZvbnQtc2l6ZTogODAlOwp9Ci51aS1jb250cm9sZ3JvdXAtaG9yaXpvbnRhbCAudWktY29udHJvbGdyb3VwLWxhYmVsICsgLnVpLWNvbnRyb2xncm91cC1pdGVtIHsKCWJvcmRlci1sZWZ0OiBub25lOwp9Ci51aS1jb250cm9sZ3JvdXAtdmVydGljYWwgLnVpLWNvbnRyb2xncm91cC1sYWJlbCArIC51aS1jb250cm9sZ3JvdXAtaXRlbSB7Cglib3JkZXItdG9wOiBub25lOwp9Ci51aS1jb250cm9sZ3JvdXAtaG9yaXpvbnRhbCAudWktY29udHJvbGdyb3VwLWxhYmVsLnVpLXdpZGdldC1jb250ZW50IHsKCWJvcmRlci1yaWdodDogbm9uZTsKfQoudWktY29udHJvbGdyb3VwLXZlcnRpY2FsIC51aS1jb250cm9sZ3JvdXAtbGFiZWwudWktd2lkZ2V0LWNvbnRlbnQgewoJYm9yZGVyLWJvdHRvbTogbm9uZTsKfQoKLyogU3Bpbm5lciBzcGVjaWZpYyBzdHlsZSBmaXhlcyAqLwoudWktY29udHJvbGdyb3VwLXZlcnRpY2FsIC51aS1zcGlubmVyLWlucHV0IHsKCgkvKiBTdXBwb3J0OiBJRTggb25seSwgQW5kcm9pZCA8IDQuNCBvbmx5ICovCgl3aWR0aDogNzUlOwoJd2lkdGg6IGNhbGMoIDEwMCUgLSAyLjRlbSApOwp9Ci51aS1jb250cm9sZ3JvdXAtdmVydGljYWwgLnVpLXNwaW5uZXIgLnVpLXNwaW5uZXItdXAgewoJYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7Cn0KCi51aS1jaGVja2JveHJhZGlvLWxhYmVsIC51aS1pY29uLWJhY2tncm91bmQgewoJYm94LXNoYWRvdzogaW5zZXQgMXB4IDFweCAxcHggI2NjYzsKCWJvcmRlci1yYWRpdXM6IC4xMmVtOwoJYm9yZGVyOiBub25lOwp9Ci51aS1jaGVja2JveHJhZGlvLXJhZGlvLWxhYmVsIC51aS1pY29uLWJhY2tncm91bmQgewoJd2lkdGg6IDE2cHg7CgloZWlnaHQ6IDE2cHg7Cglib3JkZXItcmFkaXVzOiAxZW07CglvdmVyZmxvdzogdmlzaWJsZTsKCWJvcmRlcjogbm9uZTsKfQoudWktY2hlY2tib3hyYWRpby1yYWRpby1sYWJlbC51aS1jaGVja2JveHJhZGlvLWNoZWNrZWQgLnVpLWljb24sCi51aS1jaGVja2JveHJhZGlvLXJhZGlvLWxhYmVsLnVpLWNoZWNrYm94cmFkaW8tY2hlY2tlZDpob3ZlciAudWktaWNvbiB7CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwoJd2lkdGg6IDhweDsKCWhlaWdodDogOHB4OwoJYm9yZGVyLXdpZHRoOiA0cHg7Cglib3JkZXItc3R5bGU6IHNvbGlkOwp9Ci51aS1jaGVja2JveHJhZGlvLWRpc2FibGVkIHsKCXBvaW50ZXItZXZlbnRzOiBub25lOwp9Ci51aS1kYXRlcGlja2VyIHsKCXdpZHRoOiAxN2VtOwoJcGFkZGluZzogLjJlbSAuMmVtIDA7CglkaXNwbGF5OiBub25lOwp9Ci51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWhlYWRlciB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglwYWRkaW5nOiAuMmVtIDA7Cn0KLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItcHJldiwKLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dCB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDJweDsKCXdpZHRoOiAxLjhlbTsKCWhlaWdodDogMS44ZW07Cn0KLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItcHJldi1ob3ZlciwKLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dC1ob3ZlciB7Cgl0b3A6IDFweDsKfQoudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1wcmV2IHsKCWxlZnQ6IDJweDsKfQoudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1uZXh0IHsKCXJpZ2h0OiAycHg7Cn0KLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItcHJldi1ob3ZlciB7CglsZWZ0OiAxcHg7Cn0KLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dC1ob3ZlciB7CglyaWdodDogMXB4Owp9Ci51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXYgc3BhbiwKLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dCBzcGFuIHsKCWRpc3BsYXk6IGJsb2NrOwoJcG9zaXRpb246IGFic29sdXRlOwoJbGVmdDogNTAlOwoJbWFyZ2luLWxlZnQ6IC04cHg7Cgl0b3A6IDUwJTsKCW1hcmdpbi10b3A6IC04cHg7Cn0KLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItdGl0bGUgewoJbWFyZ2luOiAwIDIuM2VtOwoJbGluZS1oZWlnaHQ6IDEuOGVtOwoJdGV4dC1hbGlnbjogY2VudGVyOwp9Ci51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXRpdGxlIHNlbGVjdCB7Cglmb250LXNpemU6IDFlbTsKCW1hcmdpbjogMXB4IDA7Cn0KLnVpLWRhdGVwaWNrZXIgc2VsZWN0LnVpLWRhdGVwaWNrZXItbW9udGgsCi51aS1kYXRlcGlja2VyIHNlbGVjdC51aS1kYXRlcGlja2VyLXllYXIgewoJd2lkdGg6IDQ1JTsKfQoudWktZGF0ZXBpY2tlciB0YWJsZSB7Cgl3aWR0aDogMTAwJTsKCWZvbnQtc2l6ZTogLjllbTsKCWJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CgltYXJnaW46IDAgMCAuNGVtOwp9Ci51aS1kYXRlcGlja2VyIHRoIHsKCXBhZGRpbmc6IC43ZW0gLjNlbTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWZvbnQtd2VpZ2h0OiBib2xkOwoJYm9yZGVyOiAwOwp9Ci51aS1kYXRlcGlja2VyIHRkIHsKCWJvcmRlcjogMDsKCXBhZGRpbmc6IDFweDsKfQoudWktZGF0ZXBpY2tlciB0ZCBzcGFuLAoudWktZGF0ZXBpY2tlciB0ZCBhIHsKCWRpc3BsYXk6IGJsb2NrOwoJcGFkZGluZzogLjJlbTsKCXRleHQtYWxpZ246IHJpZ2h0OwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgewoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKCW1hcmdpbjogLjdlbSAwIDAgMDsKCXBhZGRpbmc6IDAgLjJlbTsKCWJvcmRlci1sZWZ0OiAwOwoJYm9yZGVyLXJpZ2h0OiAwOwoJYm9yZGVyLWJvdHRvbTogMDsKfQoudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1idXR0b25wYW5lIGJ1dHRvbiB7CglmbG9hdDogcmlnaHQ7CgltYXJnaW46IC41ZW0gLjJlbSAuNGVtOwoJY3Vyc29yOiBwb2ludGVyOwoJcGFkZGluZzogLjJlbSAuNmVtIC4zZW0gLjZlbTsKCXdpZHRoOiBhdXRvOwoJb3ZlcmZsb3c6IHZpc2libGU7Cn0KLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSBidXR0b24udWktZGF0ZXBpY2tlci1jdXJyZW50IHsKCWZsb2F0OiBsZWZ0Owp9CgovKiB3aXRoIG11bHRpcGxlIGNhbGVuZGFycyAqLwoudWktZGF0ZXBpY2tlci51aS1kYXRlcGlja2VyLW11bHRpIHsKCXdpZHRoOiBhdXRvOwp9Ci51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2VyLWdyb3VwIHsKCWZsb2F0OiBsZWZ0Owp9Ci51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2VyLWdyb3VwIHRhYmxlIHsKCXdpZHRoOiA5NSU7CgltYXJnaW46IDAgYXV0byAuNGVtOwp9Ci51aS1kYXRlcGlja2VyLW11bHRpLTIgLnVpLWRhdGVwaWNrZXItZ3JvdXAgewoJd2lkdGg6IDUwJTsKfQoudWktZGF0ZXBpY2tlci1tdWx0aS0zIC51aS1kYXRlcGlja2VyLWdyb3VwIHsKCXdpZHRoOiAzMy4zJTsKfQoudWktZGF0ZXBpY2tlci1tdWx0aS00IC51aS1kYXRlcGlja2VyLWdyb3VwIHsKCXdpZHRoOiAyNSU7Cn0KLnVpLWRhdGVwaWNrZXItbXVsdGkgLnVpLWRhdGVwaWNrZXItZ3JvdXAtbGFzdCAudWktZGF0ZXBpY2tlci1oZWFkZXIsCi51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2VyLWdyb3VwLW1pZGRsZSAudWktZGF0ZXBpY2tlci1oZWFkZXIgewoJYm9yZGVyLWxlZnQtd2lkdGg6IDA7Cn0KLnVpLWRhdGVwaWNrZXItbXVsdGkgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSB7CgljbGVhcjogbGVmdDsKfQoudWktZGF0ZXBpY2tlci1yb3ctYnJlYWsgewoJY2xlYXI6IGJvdGg7Cgl3aWR0aDogMTAwJTsKCWZvbnQtc2l6ZTogMDsKfQoKLyogUlRMIHN1cHBvcnQgKi8KLnVpLWRhdGVwaWNrZXItcnRsIHsKCWRpcmVjdGlvbjogcnRsOwp9Ci51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1wcmV2IHsKCXJpZ2h0OiAycHg7CglsZWZ0OiBhdXRvOwp9Ci51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1uZXh0IHsKCWxlZnQ6IDJweDsKCXJpZ2h0OiBhdXRvOwp9Ci51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1wcmV2OmhvdmVyIHsKCXJpZ2h0OiAxcHg7CglsZWZ0OiBhdXRvOwp9Ci51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1uZXh0OmhvdmVyIHsKCWxlZnQ6IDFweDsKCXJpZ2h0OiBhdXRvOwp9Ci51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1idXR0b25wYW5lIHsKCWNsZWFyOiByaWdodDsKfQoudWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSBidXR0b24gewoJZmxvYXQ6IGxlZnQ7Cn0KLnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgYnV0dG9uLnVpLWRhdGVwaWNrZXItY3VycmVudCwKLnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLWdyb3VwIHsKCWZsb2F0OiByaWdodDsKfQoudWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItZ3JvdXAtbGFzdCAudWktZGF0ZXBpY2tlci1oZWFkZXIsCi51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1ncm91cC1taWRkbGUgLnVpLWRhdGVwaWNrZXItaGVhZGVyIHsKCWJvcmRlci1yaWdodC13aWR0aDogMDsKCWJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7Cn0KCi8qIEljb25zICovCi51aS1kYXRlcGlja2VyIC51aS1pY29uIHsKCWRpc3BsYXk6IGJsb2NrOwoJdGV4dC1pbmRlbnQ6IC05OTk5OXB4OwoJb3ZlcmZsb3c6IGhpZGRlbjsKCWJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CglsZWZ0OiAuNWVtOwoJdG9wOiAuM2VtOwp9Ci51aS1kaWFsb2cgewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJbGVmdDogMDsKCXBhZGRpbmc6IC4yZW07CglvdXRsaW5lOiAwOwp9Ci51aS1kaWFsb2cgLnVpLWRpYWxvZy10aXRsZWJhciB7CglwYWRkaW5nOiAuNGVtIDFlbTsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKfQoudWktZGlhbG9nIC51aS1kaWFsb2ctdGl0bGUgewoJZmxvYXQ6IGxlZnQ7CgltYXJnaW46IC4xZW0gMDsKCXdoaXRlLXNwYWNlOiBub3dyYXA7Cgl3aWR0aDogOTAlOwoJb3ZlcmZsb3c6IGhpZGRlbjsKCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwp9Ci51aS1kaWFsb2cgLnVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7CglyaWdodDogLjNlbTsKCXRvcDogNTAlOwoJd2lkdGg6IDIwcHg7CgltYXJnaW46IC0xMHB4IDAgMCAwOwoJcGFkZGluZzogMXB4OwoJaGVpZ2h0OiAyMHB4Owp9Ci51aS1kaWFsb2cgLnVpLWRpYWxvZy1jb250ZW50IHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWJvcmRlcjogMDsKCXBhZGRpbmc6IC41ZW0gMWVtOwoJYmFja2dyb3VuZDogbm9uZTsKCW92ZXJmbG93OiBhdXRvOwp9Ci51aS1kaWFsb2cgLnVpLWRpYWxvZy1idXR0b25wYW5lIHsKCXRleHQtYWxpZ246IGxlZnQ7Cglib3JkZXItd2lkdGg6IDFweCAwIDAgMDsKCWJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CgltYXJnaW4tdG9wOiAuNWVtOwoJcGFkZGluZzogLjNlbSAxZW0gLjVlbSAuNGVtOwp9Ci51aS1kaWFsb2cgLnVpLWRpYWxvZy1idXR0b25wYW5lIC51aS1kaWFsb2ctYnV0dG9uc2V0IHsKCWZsb2F0OiByaWdodDsKfQoudWktZGlhbG9nIC51aS1kaWFsb2ctYnV0dG9ucGFuZSBidXR0b24gewoJbWFyZ2luOiAuNWVtIC40ZW0gLjVlbSAwOwoJY3Vyc29yOiBwb2ludGVyOwp9Ci51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1uIHsKCWhlaWdodDogMnB4OwoJdG9wOiAwOwp9Ci51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1lIHsKCXdpZHRoOiAycHg7CglyaWdodDogMDsKfQoudWktZGlhbG9nIC51aS1yZXNpemFibGUtcyB7CgloZWlnaHQ6IDJweDsKCWJvdHRvbTogMDsKfQoudWktZGlhbG9nIC51aS1yZXNpemFibGUtdyB7Cgl3aWR0aDogMnB4OwoJbGVmdDogMDsKfQoudWktZGlhbG9nIC51aS1yZXNpemFibGUtc2UsCi51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1zdywKLnVpLWRpYWxvZyAudWktcmVzaXphYmxlLW5lLAoudWktZGlhbG9nIC51aS1yZXNpemFibGUtbncgewoJd2lkdGg6IDdweDsKCWhlaWdodDogN3B4Owp9Ci51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1zZSB7CglyaWdodDogMDsKCWJvdHRvbTogMDsKfQoudWktZGlhbG9nIC51aS1yZXNpemFibGUtc3cgewoJbGVmdDogMDsKCWJvdHRvbTogMDsKfQoudWktZGlhbG9nIC51aS1yZXNpemFibGUtbmUgewoJcmlnaHQ6IDA7Cgl0b3A6IDA7Cn0KLnVpLWRpYWxvZyAudWktcmVzaXphYmxlLW53IHsKCWxlZnQ6IDA7Cgl0b3A6IDA7Cn0KLnVpLWRyYWdnYWJsZSAudWktZGlhbG9nLXRpdGxlYmFyIHsKCWN1cnNvcjogbW92ZTsKfQoudWktZHJhZ2dhYmxlLWhhbmRsZSB7CgktbXMtdG91Y2gtYWN0aW9uOiBub25lOwoJdG91Y2gtYWN0aW9uOiBub25lOwp9Ci51aS1yZXNpemFibGUgewoJcG9zaXRpb246IHJlbGF0aXZlOwp9Ci51aS1yZXNpemFibGUtaGFuZGxlIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCWZvbnQtc2l6ZTogMC4xcHg7CglkaXNwbGF5OiBibG9jazsKCS1tcy10b3VjaC1hY3Rpb246IG5vbmU7Cgl0b3VjaC1hY3Rpb246IG5vbmU7Cn0KLnVpLXJlc2l6YWJsZS1kaXNhYmxlZCAudWktcmVzaXphYmxlLWhhbmRsZSwKLnVpLXJlc2l6YWJsZS1hdXRvaGlkZSAudWktcmVzaXphYmxlLWhhbmRsZSB7CglkaXNwbGF5OiBub25lOwp9Ci51aS1yZXNpemFibGUtbiB7CgljdXJzb3I6IG4tcmVzaXplOwoJaGVpZ2h0OiA3cHg7Cgl3aWR0aDogMTAwJTsKCXRvcDogLTVweDsKCWxlZnQ6IDA7Cn0KLnVpLXJlc2l6YWJsZS1zIHsKCWN1cnNvcjogcy1yZXNpemU7CgloZWlnaHQ6IDdweDsKCXdpZHRoOiAxMDAlOwoJYm90dG9tOiAtNXB4OwoJbGVmdDogMDsKfQoudWktcmVzaXphYmxlLWUgewoJY3Vyc29yOiBlLXJlc2l6ZTsKCXdpZHRoOiA3cHg7CglyaWdodDogLTVweDsKCXRvcDogMDsKCWhlaWdodDogMTAwJTsKfQoudWktcmVzaXphYmxlLXcgewoJY3Vyc29yOiB3LXJlc2l6ZTsKCXdpZHRoOiA3cHg7CglsZWZ0OiAtNXB4OwoJdG9wOiAwOwoJaGVpZ2h0OiAxMDAlOwp9Ci51aS1yZXNpemFibGUtc2UgewoJY3Vyc29yOiBzZS1yZXNpemU7Cgl3aWR0aDogMTJweDsKCWhlaWdodDogMTJweDsKCXJpZ2h0OiAxcHg7Cglib3R0b206IDFweDsKfQoudWktcmVzaXphYmxlLXN3IHsKCWN1cnNvcjogc3ctcmVzaXplOwoJd2lkdGg6IDlweDsKCWhlaWdodDogOXB4OwoJbGVmdDogLTVweDsKCWJvdHRvbTogLTVweDsKfQoudWktcmVzaXphYmxlLW53IHsKCWN1cnNvcjogbnctcmVzaXplOwoJd2lkdGg6IDlweDsKCWhlaWdodDogOXB4OwoJbGVmdDogLTVweDsKCXRvcDogLTVweDsKfQoudWktcmVzaXphYmxlLW5lIHsKCWN1cnNvcjogbmUtcmVzaXplOwoJd2lkdGg6IDlweDsKCWhlaWdodDogOXB4OwoJcmlnaHQ6IC01cHg7Cgl0b3A6IC01cHg7Cn0KLnVpLXByb2dyZXNzYmFyIHsKCWhlaWdodDogMmVtOwoJdGV4dC1hbGlnbjogbGVmdDsKCW92ZXJmbG93OiBoaWRkZW47Cn0KLnVpLXByb2dyZXNzYmFyIC51aS1wcm9ncmVzc2Jhci12YWx1ZSB7CgltYXJnaW46IC0xcHg7CgloZWlnaHQ6IDEwMCU7Cn0KLnVpLXByb2dyZXNzYmFyIC51aS1wcm9ncmVzc2Jhci1vdmVybGF5IHsKCWJhY2tncm91bmQ6IHVybCgiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoS0FBb0FJQUJBQUFBQVAvLy95SC9DMDVGVkZORFFWQkZNaTR3QXdFQUFBQWgrUVFKQVFBQkFDd0FBQUFBS0FBb0FBQUNrWXdOcVhyZEM1MkRTMDZhN01GWkkrNEZIQkNLb0RlV0tYcXltUHFHcXh2SnJYWmJNeDdUdGMrdzlYZ1UyRkIzbE95UVJXRVQySUZHaVU5bTFmckRWcHhaWmM2YmZId3Y0YzFZWFA2azFWZHkyOTJGYjZVa3V2RnRYcHZXU3pBK0h5Y1hKSFVYaUdZSWlNZzJSNlc0NTlnbldHZkhOZGpJcURXVnFlbUgyZWtwT2JrcE9scHBXVXFaaXFyNmVkcXFXUUFBSWZrRUNRRUFBUUFzQUFBQUFDZ0FLQUFBQXBTTWdabkdmYXFjZzFFMnV1ekRtbUhVQlI4UWlsOTVoaVBLcVduM2FxdExzUzE4eTdHMVN6TmVvd1dCRU50UWQrVDFKa3RQMDVuelBUZEpabFI2dlV4TldXalYrdlVXaFdOa1dGd3hsOVZwWlJlZFljZmxJT0xhZmFhMjhYZHNIL3lubGNjMXVQVkRaeFFJUjBLMjUrY0lDQ21vcUNlNW1HaFpPZmVZU1VoNXlKY0p5cmtaV1dwYVI4ZG9KMm80TllxNjJsQUFBQ0g1QkFrQkFBRUFMQUFBQUFBb0FDZ0FBQUtWREk0WXkyMlpuSU5STnFvc3cwQnY3aTFneUhVa0ZqN29TYVdsdTNvdkM4R3hOc281Zmx1ejNxTFZoQlZlVC9MejdaVEh5eEw1ZERhbFFXUFZPc1FXdFJudXdYYUZUajlqVlZoOHBtYTlKalo0ellTajVaT3ltYTd1dW9sZmZoK0lSNWFXOTdjSHVCVVhLR0tYbEtqbitEaUhXTWNZSmFoNE4wbFlDTWxKT1hpcEdScjVxZGdvU1RycVdTcTZXRmwyeXBvYVVBQUFJZmtFQ1FFQUFRQXNBQUFBQUNnQUtBQUFBcGFFYjZITGdkL2lPN0ZOV3RjRldlK3VmT0RHalJmb2lKMmFrU2hidWViMHd0STUwem0wMnBidndmV0VNV0JRMXpLR2xMSWhza2lFUG05UjZ2Ulh4VjRaeldUMnlIT0dwV015b3JibEtsTnA4SG1IRWIvbENYamNXN2JtdFhQOFh0MjI5T1ZXUjFmb2QyZVdxTmZIdU1qWENQa0lHTmlsZU9pSW1WbUNPRW1vU2ZuM3lYbEpXbW9IR2hxcDZpbFl1V1lwbVRxS1VnQUFJZmtFQ1FFQUFRQXNBQUFBQUNnQUtBQUFBcGlFSDZrYjU4YmlRM0ZOV3RNRldXM2VOVmNvanVGR2ZxblpxU2VidVMwNnc1VjgwL1gwMnBLZTh6RndQNkVGV09UMWxERms4ckdFUmgxVFROT29jUTYxSG00WG0yVmV4VUhwemp5bVZpSHJGYmlFTHNlZlZybjZYS2ZudDJROUcvK1hkaWU0OTlYSGQyZzRoN2lvT0doWEdKYm9HQW5YU0Jub0J3S1l5ZmlvdWJaSjJIbjBSdVJaYWZsWk9pbDU2WnA2aWlvS1NYcFVBQUFoK1FRSkFRQUJBQ3dBQUFBQUtBQW9BQUFDa29RUnFSdm54dUk3a1UxYTFVVTViZDV0blNlT1pYaG1uNWxXSzNxTlRXdlJkUXhQOHF2YUMrL3lhWVF6WE83Qk12YVVFbUpSZDNUc2lNQWdzd21OWXJTZ1pkWXJUWDZ0U0hHWk83M2V6dUF3MnV4dVErQmJlWmZNeHNleFkzNSsvUWU0SjFpblYwZzR4M1dIdU1oSWwyalhPS1QyUStWVTVmZ29TVUk1MlZmWnlma0pHa2hhNmptWSthYVlkaXJxK2xRQUFDSDVCQWtCQUFFQUxBQUFBQUFvQUNnQUFBS1dCSUtwWWUwTDNZTktUb3Fzd1VsdnpuaWdkNHdpUjRLaFpyS3Q5VXBxaXA2MWk5RTN2TXZ4UmRIbGJFRmlFWGZrOVlBUll4T1paRDZWUTJwVXVuQm10UlhvMUxmOGhNVlZjTmw4SmFmVjM4YU0yL0Z1NVYxNkJuNjNyNnh0OTdqMDkrTVhTRmk0Qm5pR0ZhZTNoemJIOStoWUJ6a3B1VWg1YVptSHVhblpPWmdJdXZiR2lOZW9tQ25heHhhcDJ1cGFDWnNxKzFrQUFDSDVCQWtCQUFFQUxBQUFBQUFvQUNnQUFBS1hqSThCeTV6ZjRrT3hUVnJYTlZsdjFYMGQ4SUdaR0tMbk5wWXRtOExyOWNxVmV1T1N2Zk9XNzlEOWFESGl6TmhESmlkRlpoTnlkRWFoT2FESDZub210SmpwMXR1dEtvTldrdkE2SnFmUlZMSFUvUVVmYXU5bDJ4N0c1NGQxZmw5OTV4Y0lHQWRYcU1mQk5hZG9ZcmhIK01nMktCbHBWcGJsdUNpWG1NbloyU2g0R0JxSitja0lPcXFKNkxtS1NsbFptc29xNndwUUFBQWgrUVFKQVFBQkFDd0FBQUFBS0FBb0FBQUNsWXgvb0x2b3h1SkRrVTFhMVlVWmJKNTluU2QyWlhoV3FiUmEyL2dGOEd1MkRZM2lxczd5cnEreEJZRWtZdkZTTThhU1NPYkUrWmdSbDFCSEZaTnI3cFJDYXZaNUJXMjE0MmhZM0FOL3pXdHNtZjEycDlYeHhGbDJscExuMXJzZXp0ZlhaamRJV0lmMnM1ZEl0d2pZS0Jnbzl5ZzVwSGd6SlhURWVHbFp1ZW5weVBtcEdRb0tPV2tZbVNwYVNucUtpbGVJMkZBQUFDSDVCQWtCQUFFQUxBQUFBQUFvQUNnQUFBS1ZqQitndStqRzRrT1JUVnJWaFJsc25uMmRKM1psZUZhcHRGcmIrQ1htTzlPb3plTDVWZlA5OUh2QVdocGlVZGN3a3BCSDM4MjVBd1lkVTh4VHFsTEdodENvc0FyS01wdmZhMW1NUmFlOVZ2V1pmZUIyWGZQa2VMbW0xOGxVY0JqK3A1ZG5OOGpYWjNZSUdFaFl1T1VuNDVhb0NEa3AxNmhsNUlqWUp2aldLY25vR1FwcXlQbHBPaHIzYUVsYXFycTU2QnE3VkFBQU93PT0iKTsKCWhlaWdodDogMTAwJTsKCWZpbHRlcjogYWxwaGEob3BhY2l0eT0yNSk7IC8qIHN1cHBvcnQ6IElFOCAqLwoJb3BhY2l0eTogMC4yNTsKfQoudWktcHJvZ3Jlc3NiYXItaW5kZXRlcm1pbmF0ZSAudWktcHJvZ3Jlc3NiYXItdmFsdWUgewoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKfQoudWktc2VsZWN0YWJsZSB7CgktbXMtdG91Y2gtYWN0aW9uOiBub25lOwoJdG91Y2gtYWN0aW9uOiBub25lOwp9Ci51aS1zZWxlY3RhYmxlLWhlbHBlciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl6LWluZGV4OiAxMDA7Cglib3JkZXI6IDFweCBkb3R0ZWQgYmxhY2s7Cn0KLnVpLXNlbGVjdG1lbnUtbWVudSB7CglwYWRkaW5nOiAwOwoJbWFyZ2luOiAwOwoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJbGVmdDogMDsKCWRpc3BsYXk6IG5vbmU7Cn0KLnVpLXNlbGVjdG1lbnUtbWVudSAudWktbWVudSB7CglvdmVyZmxvdzogYXV0bzsKCW92ZXJmbG93LXg6IGhpZGRlbjsKCXBhZGRpbmctYm90dG9tOiAxcHg7Cn0KLnVpLXNlbGVjdG1lbnUtbWVudSAudWktbWVudSAudWktc2VsZWN0bWVudS1vcHRncm91cCB7Cglmb250LXNpemU6IDFlbTsKCWZvbnQtd2VpZ2h0OiBib2xkOwoJbGluZS1oZWlnaHQ6IDEuNTsKCXBhZGRpbmc6IDJweCAwLjRlbTsKCW1hcmdpbjogMC41ZW0gMCAwIDA7CgloZWlnaHQ6IGF1dG87Cglib3JkZXI6IDA7Cn0KLnVpLXNlbGVjdG1lbnUtb3BlbiB7CglkaXNwbGF5OiBibG9jazsKfQoudWktc2VsZWN0bWVudS10ZXh0IHsKCWRpc3BsYXk6IGJsb2NrOwoJbWFyZ2luLXJpZ2h0OiAyMHB4OwoJb3ZlcmZsb3c6IGhpZGRlbjsKCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwp9Ci51aS1zZWxlY3RtZW51LWJ1dHRvbi51aS1idXR0b24gewoJdGV4dC1hbGlnbjogbGVmdDsKCXdoaXRlLXNwYWNlOiBub3dyYXA7Cgl3aWR0aDogMTRlbTsKfQoudWktc2VsZWN0bWVudS1pY29uLnVpLWljb24gewoJZmxvYXQ6IHJpZ2h0OwoJbWFyZ2luLXRvcDogMDsKfQoudWktc2xpZGVyIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXRleHQtYWxpZ246IGxlZnQ7Cn0KLnVpLXNsaWRlciAudWktc2xpZGVyLWhhbmRsZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl6LWluZGV4OiAyOwoJd2lkdGg6IDEuMmVtOwoJaGVpZ2h0OiAxLjJlbTsKCWN1cnNvcjogZGVmYXVsdDsKCS1tcy10b3VjaC1hY3Rpb246IG5vbmU7Cgl0b3VjaC1hY3Rpb246IG5vbmU7Cn0KLnVpLXNsaWRlciAudWktc2xpZGVyLXJhbmdlIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXotaW5kZXg6IDE7Cglmb250LXNpemU6IC43ZW07CglkaXNwbGF5OiBibG9jazsKCWJvcmRlcjogMDsKCWJhY2tncm91bmQtcG9zaXRpb246IDAgMDsKfQoKLyogc3VwcG9ydDogSUU4IC0gU2VlICM2NzI3ICovCi51aS1zbGlkZXIudWktc3RhdGUtZGlzYWJsZWQgLnVpLXNsaWRlci1oYW5kbGUsCi51aS1zbGlkZXIudWktc3RhdGUtZGlzYWJsZWQgLnVpLXNsaWRlci1yYW5nZSB7CglmaWx0ZXI6IGluaGVyaXQ7Cn0KCi51aS1zbGlkZXItaG9yaXpvbnRhbCB7CgloZWlnaHQ6IC44ZW07Cn0KLnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItaGFuZGxlIHsKCXRvcDogLS4zZW07CgltYXJnaW4tbGVmdDogLS42ZW07Cn0KLnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItcmFuZ2UgewoJdG9wOiAwOwoJaGVpZ2h0OiAxMDAlOwp9Ci51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdlLW1pbiB7CglsZWZ0OiAwOwp9Ci51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdlLW1heCB7CglyaWdodDogMDsKfQoKLnVpLXNsaWRlci12ZXJ0aWNhbCB7Cgl3aWR0aDogLjhlbTsKCWhlaWdodDogMTAwcHg7Cn0KLnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLWhhbmRsZSB7CglsZWZ0OiAtLjNlbTsKCW1hcmdpbi1sZWZ0OiAwOwoJbWFyZ2luLWJvdHRvbTogLS42ZW07Cn0KLnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLXJhbmdlIHsKCWxlZnQ6IDA7Cgl3aWR0aDogMTAwJTsKfQoudWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItcmFuZ2UtbWluIHsKCWJvdHRvbTogMDsKfQoudWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItcmFuZ2UtbWF4IHsKCXRvcDogMDsKfQoudWktc29ydGFibGUtaGFuZGxlIHsKCS1tcy10b3VjaC1hY3Rpb246IG5vbmU7Cgl0b3VjaC1hY3Rpb246IG5vbmU7Cn0KLnVpLXNwaW5uZXIgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJb3ZlcmZsb3c6IGhpZGRlbjsKCXBhZGRpbmc6IDA7Cgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Ci51aS1zcGlubmVyLWlucHV0IHsKCWJvcmRlcjogbm9uZTsKCWJhY2tncm91bmQ6IG5vbmU7Cgljb2xvcjogaW5oZXJpdDsKCXBhZGRpbmc6IC4yMjJlbSAwOwoJbWFyZ2luOiAuMmVtIDA7Cgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwoJbWFyZ2luLWxlZnQ6IC40ZW07CgltYXJnaW4tcmlnaHQ6IDJlbTsKfQoudWktc3Bpbm5lci1idXR0b24gewoJd2lkdGg6IDEuNmVtOwoJaGVpZ2h0OiA1MCU7Cglmb250LXNpemU6IC41ZW07CglwYWRkaW5nOiAwOwoJbWFyZ2luOiAwOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJcG9zaXRpb246IGFic29sdXRlOwoJY3Vyc29yOiBkZWZhdWx0OwoJZGlzcGxheTogYmxvY2s7CglvdmVyZmxvdzogaGlkZGVuOwoJcmlnaHQ6IDA7Cn0KLyogbW9yZSBzcGVjaWZpY2l0eSByZXF1aXJlZCBoZXJlIHRvIG92ZXJyaWRlIGRlZmF1bHQgYm9yZGVycyAqLwoudWktc3Bpbm5lciBhLnVpLXNwaW5uZXItYnV0dG9uIHsKCWJvcmRlci10b3Atc3R5bGU6IG5vbmU7Cglib3JkZXItYm90dG9tLXN0eWxlOiBub25lOwoJYm9yZGVyLXJpZ2h0LXN0eWxlOiBub25lOwp9Ci51aS1zcGlubmVyLXVwIHsKCXRvcDogMDsKfQoudWktc3Bpbm5lci1kb3duIHsKCWJvdHRvbTogMDsKfQoudWktdGFicyB7Cglwb3NpdGlvbjogcmVsYXRpdmU7LyogcG9zaXRpb246IHJlbGF0aXZlIHByZXZlbnRzIElFIHNjcm9sbCBidWcgKGVsZW1lbnQgd2l0aCBwb3NpdGlvbjogcmVsYXRpdmUgaW5zaWRlIGNvbnRhaW5lciB3aXRoIG92ZXJmbG93OiBhdXRvIGFwcGVhciBhcyAiZml4ZWQiKSAqLwoJcGFkZGluZzogLjJlbTsKfQoudWktdGFicyAudWktdGFicy1uYXYgewoJbWFyZ2luOiAwOwoJcGFkZGluZzogLjJlbSAuMmVtIDA7Cn0KLnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpIHsKCWxpc3Qtc3R5bGU6IG5vbmU7CglmbG9hdDogbGVmdDsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXRvcDogMDsKCW1hcmdpbjogMXB4IC4yZW0gMCAwOwoJYm9yZGVyLWJvdHRvbS13aWR0aDogMDsKCXBhZGRpbmc6IDA7Cgl3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci51aS10YWJzIC51aS10YWJzLW5hdiAudWktdGFicy1hbmNob3IgewoJZmxvYXQ6IGxlZnQ7CglwYWRkaW5nOiAuNWVtIDFlbTsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoudWktdGFicyAudWktdGFicy1uYXYgbGkudWktdGFicy1hY3RpdmUgewoJbWFyZ2luLWJvdHRvbTogLTFweDsKCXBhZGRpbmctYm90dG9tOiAxcHg7Cn0KLnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpLnVpLXRhYnMtYWN0aXZlIC51aS10YWJzLWFuY2hvciwKLnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpLnVpLXN0YXRlLWRpc2FibGVkIC51aS10YWJzLWFuY2hvciwKLnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpLnVpLXRhYnMtbG9hZGluZyAudWktdGFicy1hbmNob3IgewoJY3Vyc29yOiB0ZXh0Owp9Ci51aS10YWJzLWNvbGxhcHNpYmxlIC51aS10YWJzLW5hdiBsaS51aS10YWJzLWFjdGl2ZSAudWktdGFicy1hbmNob3IgewoJY3Vyc29yOiBwb2ludGVyOwp9Ci51aS10YWJzIC51aS10YWJzLXBhbmVsIHsKCWRpc3BsYXk6IGJsb2NrOwoJYm9yZGVyLXdpZHRoOiAwOwoJcGFkZGluZzogMWVtIDEuNGVtOwoJYmFja2dyb3VuZDogbm9uZTsKfQoudWktdG9vbHRpcCB7CglwYWRkaW5nOiA4cHg7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl6LWluZGV4OiA5OTk5OwoJbWF4LXdpZHRoOiAzMDBweDsKfQpib2R5IC51aS10b29sdGlwIHsKCWJvcmRlci13aWR0aDogMnB4Owp9CgovKiBDb21wb25lbnQgY29udGFpbmVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLnVpLXdpZGdldCB7Cglmb250LWZhbWlseTogQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7Cglmb250LXNpemU6IDFlbTsKfQoudWktd2lkZ2V0IC51aS13aWRnZXQgewoJZm9udC1zaXplOiAxZW07Cn0KLnVpLXdpZGdldCBpbnB1dCwKLnVpLXdpZGdldCBzZWxlY3QsCi51aS13aWRnZXQgdGV4dGFyZWEsCi51aS13aWRnZXQgYnV0dG9uIHsKCWZvbnQtZmFtaWx5OiBBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjsKCWZvbnQtc2l6ZTogMWVtOwp9Ci51aS13aWRnZXQudWktd2lkZ2V0LWNvbnRlbnQgewoJYm9yZGVyOiAxcHggc29saWQgI2M1YzVjNTsKfQoudWktd2lkZ2V0LWNvbnRlbnQgewoJYm9yZGVyOiAxcHggc29saWQgI2RkZGRkZDsKCWJhY2tncm91bmQ6ICNmZmZmZmY7Cgljb2xvcjogIzMzMzMzMzsKfQoudWktd2lkZ2V0LWNvbnRlbnQgYSB7Cgljb2xvcjogIzMzMzMzMzsKfQoudWktd2lkZ2V0LWhlYWRlciB7Cglib3JkZXI6IDFweCBzb2xpZCAjZGRkZGRkOwoJYmFja2dyb3VuZDogI2U5ZTllOTsKCWNvbG9yOiAjMzMzMzMzOwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLnVpLXdpZGdldC1oZWFkZXIgYSB7Cgljb2xvcjogIzMzMzMzMzsKfQoKLyogSW50ZXJhY3Rpb24gc3RhdGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoudWktc3RhdGUtZGVmYXVsdCwKLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1kZWZhdWx0LAoudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZGVmYXVsdCwKLnVpLWJ1dHRvbiwKCi8qIFdlIHVzZSBodG1sIGhlcmUgYmVjYXVzZSB3ZSBuZWVkIGEgZ3JlYXRlciBzcGVjaWZpY2l0eSB0byBtYWtlIHN1cmUgZGlzYWJsZWQKd29ya3MgcHJvcGVybHkgd2hlbiBjbGlja2VkIG9yIGhvdmVyZWQgKi8KaHRtbCAudWktYnV0dG9uLnVpLXN0YXRlLWRpc2FibGVkOmhvdmVyLApodG1sIC51aS1idXR0b24udWktc3RhdGUtZGlzYWJsZWQ6YWN0aXZlIHsKCWJvcmRlcjogMXB4IHNvbGlkICNjNWM1YzU7CgliYWNrZ3JvdW5kOiAjZjZmNmY2OwoJZm9udC13ZWlnaHQ6IG5vcm1hbDsKCWNvbG9yOiAjNDU0NTQ1Owp9Ci51aS1zdGF0ZS1kZWZhdWx0IGEsCi51aS1zdGF0ZS1kZWZhdWx0IGE6bGluaywKLnVpLXN0YXRlLWRlZmF1bHQgYTp2aXNpdGVkLAphLnVpLWJ1dHRvbiwKYTpsaW5rLnVpLWJ1dHRvbiwKYTp2aXNpdGVkLnVpLWJ1dHRvbiwKLnVpLWJ1dHRvbiB7Cgljb2xvcjogIzQ1NDU0NTsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoudWktc3RhdGUtaG92ZXIsCi51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtaG92ZXIsCi51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1ob3ZlciwKLnVpLXN0YXRlLWZvY3VzLAoudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWZvY3VzLAoudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZm9jdXMsCi51aS1idXR0b246aG92ZXIsCi51aS1idXR0b246Zm9jdXMgewoJYm9yZGVyOiAxcHggc29saWQgI2NjY2NjYzsKCWJhY2tncm91bmQ6ICNlZGVkZWQ7Cglmb250LXdlaWdodDogbm9ybWFsOwoJY29sb3I6ICMyYjJiMmI7Cn0KLnVpLXN0YXRlLWhvdmVyIGEsCi51aS1zdGF0ZS1ob3ZlciBhOmhvdmVyLAoudWktc3RhdGUtaG92ZXIgYTpsaW5rLAoudWktc3RhdGUtaG92ZXIgYTp2aXNpdGVkLAoudWktc3RhdGUtZm9jdXMgYSwKLnVpLXN0YXRlLWZvY3VzIGE6aG92ZXIsCi51aS1zdGF0ZS1mb2N1cyBhOmxpbmssCi51aS1zdGF0ZS1mb2N1cyBhOnZpc2l0ZWQsCmEudWktYnV0dG9uOmhvdmVyLAphLnVpLWJ1dHRvbjpmb2N1cyB7Cgljb2xvcjogIzJiMmIyYjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLnVpLXZpc3VhbC1mb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgM3B4IDFweCByZ2IoOTQsIDE1OCwgMjE0KTsKfQoudWktc3RhdGUtYWN0aXZlLAoudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWFjdGl2ZSwKLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWFjdGl2ZSwKYS51aS1idXR0b246YWN0aXZlLAoudWktYnV0dG9uOmFjdGl2ZSwKLnVpLWJ1dHRvbi51aS1zdGF0ZS1hY3RpdmU6aG92ZXIgewoJYm9yZGVyOiAxcHggc29saWQgIzAwM2VmZjsKCWJhY2tncm91bmQ6ICMwMDdmZmY7Cglmb250LXdlaWdodDogbm9ybWFsOwoJY29sb3I6ICNmZmZmZmY7Cn0KLnVpLWljb24tYmFja2dyb3VuZCwKLnVpLXN0YXRlLWFjdGl2ZSAudWktaWNvbi1iYWNrZ3JvdW5kIHsKCWJvcmRlcjogIzAwM2VmZjsKCWJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7Cn0KLnVpLXN0YXRlLWFjdGl2ZSBhLAoudWktc3RhdGUtYWN0aXZlIGE6bGluaywKLnVpLXN0YXRlLWFjdGl2ZSBhOnZpc2l0ZWQgewoJY29sb3I6ICNmZmZmZmY7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi8qIEludGVyYWN0aW9uIEN1ZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi51aS1zdGF0ZS1oaWdobGlnaHQsCi51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtaGlnaGxpZ2h0LAoudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtaGlnaGxpZ2h0IHsKCWJvcmRlcjogMXB4IHNvbGlkICNkYWQ1NWU7CgliYWNrZ3JvdW5kOiAjZmZmYTkwOwoJY29sb3I6ICM3Nzc2MjA7Cn0KLnVpLXN0YXRlLWhpZ2hsaWdodCBhLAoudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWhpZ2hsaWdodCBhLAoudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtaGlnaGxpZ2h0IGEgewoJY29sb3I6ICM3Nzc2MjA7Cn0KLnVpLXN0YXRlLWVycm9yLAoudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWVycm9yLAoudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3IgewoJYm9yZGVyOiAxcHggc29saWQgI2YxYTg5OTsKCWJhY2tncm91bmQ6ICNmZGRmZGY7Cgljb2xvcjogIzVmM2YzZjsKfQoudWktc3RhdGUtZXJyb3IgYSwKLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1lcnJvciBhLAoudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3IgYSB7Cgljb2xvcjogIzVmM2YzZjsKfQoudWktc3RhdGUtZXJyb3ItdGV4dCwKLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1lcnJvci10ZXh0LAoudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3ItdGV4dCB7Cgljb2xvcjogIzVmM2YzZjsKfQoudWktcHJpb3JpdHktcHJpbWFyeSwKLnVpLXdpZGdldC1jb250ZW50IC51aS1wcmlvcml0eS1wcmltYXJ5LAoudWktd2lkZ2V0LWhlYWRlciAudWktcHJpb3JpdHktcHJpbWFyeSB7Cglmb250LXdlaWdodDogYm9sZDsKfQoudWktcHJpb3JpdHktc2Vjb25kYXJ5LAoudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXByaW9yaXR5LXNlY29uZGFyeSwKLnVpLXdpZGdldC1oZWFkZXIgLnVpLXByaW9yaXR5LXNlY29uZGFyeSB7CglvcGFjaXR5OiAuNzsKCWZpbHRlcjpBbHBoYShPcGFjaXR5PTcwKTsgLyogc3VwcG9ydDogSUU4ICovCglmb250LXdlaWdodDogbm9ybWFsOwp9Ci51aS1zdGF0ZS1kaXNhYmxlZCwKLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1kaXNhYmxlZCwKLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWRpc2FibGVkIHsKCW9wYWNpdHk6IC4zNTsKCWZpbHRlcjpBbHBoYShPcGFjaXR5PTM1KTsgLyogc3VwcG9ydDogSUU4ICovCgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9Ci51aS1zdGF0ZS1kaXNhYmxlZCAudWktaWNvbiB7CglmaWx0ZXI6QWxwaGEoT3BhY2l0eT0zNSk7IC8qIHN1cHBvcnQ6IElFOCAtIFNlZSAjNjA1OSAqLwp9CgovKiBJY29ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8qIHN0YXRlcyBhbmQgaW1hZ2VzICovCi51aS1pY29uIHsKCXdpZHRoOiAxNnB4OwoJaGVpZ2h0OiAxNnB4Owp9Ci51aS1pY29uLAoudWktd2lkZ2V0LWNvbnRlbnQgLnVpLWljb24gewoJYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvdWktaWNvbnNfNDQ0NDQ0XzI1NngyNDAucG5nIik7Cn0KLnVpLXdpZGdldC1oZWFkZXIgLnVpLWljb24gewoJYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvdWktaWNvbnNfNDQ0NDQ0XzI1NngyNDAucG5nIik7Cn0KLnVpLWJ1dHRvbiAudWktaWNvbiB7CgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy91aS1pY29uc183Nzc3NzdfMjU2eDI0MC5wbmciKTsKfQoudWktc3RhdGUtaG92ZXIgLnVpLWljb24sCi51aS1zdGF0ZS1mb2N1cyAudWktaWNvbiwKLnVpLWJ1dHRvbjpob3ZlciAudWktaWNvbiwKLnVpLWJ1dHRvbjpmb2N1cyAudWktaWNvbiwKLnVpLXN0YXRlLWRlZmF1bHQgLnVpLWljb24gewoJYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvdWktaWNvbnNfNTU1NTU1XzI1NngyNDAucG5nIik7Cn0KLnVpLXN0YXRlLWFjdGl2ZSAudWktaWNvbiwKLnVpLWJ1dHRvbjphY3RpdmUgLnVpLWljb24gewoJYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvdWktaWNvbnNfZmZmZmZmXzI1NngyNDAucG5nIik7Cn0KLnVpLXN0YXRlLWhpZ2hsaWdodCAudWktaWNvbiwKLnVpLWJ1dHRvbiAudWktc3RhdGUtaGlnaGxpZ2h0LnVpLWljb24gewoJYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvdWktaWNvbnNfNzc3NjIwXzI1NngyNDAucG5nIik7Cn0KLnVpLXN0YXRlLWVycm9yIC51aS1pY29uLAoudWktc3RhdGUtZXJyb3ItdGV4dCAudWktaWNvbiB7CgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy91aS1pY29uc19jYzAwMDBfMjU2eDI0MC5wbmciKTsKfQoKLyogcG9zaXRpb25pbmcgKi8KLnVpLWljb24tYmxhbmsgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxNnB4IDE2cHg7IH0KLnVpLWljb24tY2FyZXQtMS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOyB9Ci51aS1pY29uLWNhcmV0LTEtbmUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAwOyB9Ci51aS1pY29uLWNhcmV0LTEtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IDA7IH0KLnVpLWljb24tY2FyZXQtMS1zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IDA7IH0KLnVpLWljb24tY2FyZXQtMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY1cHggMDsgfQoudWktaWNvbi1jYXJldC0xLXN3IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggMDsgfQoudWktaWNvbi1jYXJldC0xLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAwOyB9Ci51aS1pY29uLWNhcmV0LTEtbncgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggMDsgfQoudWktaWNvbi1jYXJldC0yLW4tcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAwOyB9Ci51aS1pY29uLWNhcmV0LTItZS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IDA7IH0KLnVpLWljb24tdHJpYW5nbGUtMS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTZweDsgfQoudWktaWNvbi10cmlhbmdsZS0xLW5lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTE2cHg7IH0KLnVpLWljb24tdHJpYW5nbGUtMS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTE2cHg7IH0KLnVpLWljb24tdHJpYW5nbGUtMS1zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0xNnB4OyB9Ci51aS1pY29uLXRyaWFuZ2xlLTEtcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NXB4IC0xNnB4OyB9Ci51aS1pY29uLXRyaWFuZ2xlLTEtc3cgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMTZweDsgfQoudWktaWNvbi10cmlhbmdsZS0xLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMTZweDsgfQoudWktaWNvbi10cmlhbmdsZS0xLW53IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0xNnB4OyB9Ci51aS1pY29uLXRyaWFuZ2xlLTItbi1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0xNnB4OyB9Ci51aS1pY29uLXRyaWFuZ2xlLTItZS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC0xNnB4OyB9Ci51aS1pY29uLWFycm93LTEtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTMycHg7IH0KLnVpLWljb24tYXJyb3ctMS1uZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93LTEtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93LTEtc2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMzJweDsgfQoudWktaWNvbi1hcnJvdy0xLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjVweCAtMzJweDsgfQoudWktaWNvbi1hcnJvdy0xLXN3IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTMycHg7IH0KLnVpLWljb24tYXJyb3ctMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTMycHg7IH0KLnVpLWljb24tYXJyb3ctMS1udyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtMzJweDsgfQoudWktaWNvbi1hcnJvdy0yLW4tcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMzJweDsgfQoudWktaWNvbi1hcnJvdy0yLW5lLXN3IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93LTItZS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93LTItc2UtbncgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTMycHg7IH0KLnVpLWljb24tYXJyb3dzdG9wLTEtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtMzJweDsgfQoudWktaWNvbi1hcnJvd3N0b3AtMS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93c3RvcC0xLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTMycHg7IH0KLnVpLWljb24tYXJyb3dzdG9wLTEtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yNDBweCAtMzJweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrLTEtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IDFweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrLTEtbmUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrLTEtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC00OHB4OyB9Ci51aS1pY29uLWFycm93dGhpY2stMS1zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC00OHB4OyB9Ci51aS1pY29uLWFycm93dGhpY2stMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGljay0xLXN3IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGljay0xLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrLTEtbncgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGljay0yLW4tcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrLTItbmUtc3cgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGljay0yLWUtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrLTItc2UtbncgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC00OHB4OyB9Ci51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTI0MHB4IC00OHB4OyB9Ci51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtNjRweDsgfQoudWktaWNvbi1hcnJvd3JldHVybnRoaWNrLTEtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC02NHB4OyB9Ci51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTY0cHg7IH0KLnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtNjRweDsgfQoudWktaWNvbi1hcnJvd3JldHVybi0xLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtNjRweDsgfQoudWktaWNvbi1hcnJvd3JldHVybi0xLW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtNjRweDsgfQoudWktaWNvbi1hcnJvd3JldHVybi0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtNjRweDsgfQoudWktaWNvbi1hcnJvd3JldHVybi0xLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTY0cHg7IH0KLnVpLWljb24tYXJyb3dyZWZyZXNoLTEtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtNjRweDsgfQoudWktaWNvbi1hcnJvd3JlZnJlc2gtMS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC02NHB4OyB9Ci51aS1pY29uLWFycm93cmVmcmVzaC0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTY0cHg7IH0KLnVpLWljb24tYXJyb3dyZWZyZXNoLTEtcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtNjRweDsgfQoudWktaWNvbi1hcnJvdy00IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtODBweDsgfQoudWktaWNvbi1hcnJvdy00LWRpYWcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtODBweDsgfQoudWktaWNvbi1leHRsaW5rIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTgwcHg7IH0KLnVpLWljb24tbmV3d2luIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTgwcHg7IH0KLnVpLWljb24tcmVmcmVzaCB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC04MHB4OyB9Ci51aS1pY29uLXNodWZmbGUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtODBweDsgfQoudWktaWNvbi10cmFuc2Zlci1lLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtODBweDsgfQoudWktaWNvbi10cmFuc2ZlcnRoaWNrLWUtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtODBweDsgfQoudWktaWNvbi1mb2xkZXItY29sbGFwc2VkIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtOTZweDsgfQoudWktaWNvbi1mb2xkZXItb3BlbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC05NnB4OyB9Ci51aS1pY29uLWRvY3VtZW50IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTk2cHg7IH0KLnVpLWljb24tZG9jdW1lbnQtYiB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC05NnB4OyB9Ci51aS1pY29uLW5vdGUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtOTZweDsgfQoudWktaWNvbi1tYWlsLWNsb3NlZCB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC05NnB4OyB9Ci51aS1pY29uLW1haWwtb3BlbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC05NnB4OyB9Ci51aS1pY29uLXN1aXRjYXNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC05NnB4OyB9Ci51aS1pY29uLWNvbW1lbnQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTk2cHg7IH0KLnVpLWljb24tcGVyc29uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC05NnB4OyB9Ci51aS1pY29uLXByaW50IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC05NnB4OyB9Ci51aS1pY29uLXRyYXNoIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC05NnB4OyB9Ci51aS1pY29uLWxvY2tlZCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtOTZweDsgfQoudWktaWNvbi11bmxvY2tlZCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtOTZweDsgfQoudWktaWNvbi1ib29rbWFyayB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMjRweCAtOTZweDsgfQoudWktaWNvbi10YWcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjQwcHggLTk2cHg7IH0KLnVpLWljb24taG9tZSB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTExMnB4OyB9Ci51aS1pY29uLWZsYWcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMTEycHg7IH0KLnVpLWljb24tY2FsZW5kYXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTEycHg7IH0KLnVpLWljb24tY2FydCB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0xMTJweDsgfQoudWktaWNvbi1wZW5jaWwgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMTEycHg7IH0KLnVpLWljb24tY2xvY2sgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMTEycHg7IH0KLnVpLWljb24tZGlzayB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xMTJweDsgfQoudWktaWNvbi1jYWxjdWxhdG9yIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0xMTJweDsgfQoudWktaWNvbi16b29taW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTExMnB4OyB9Ci51aS1pY29uLXpvb21vdXQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTExMnB4OyB9Ci51aS1pY29uLXNlYXJjaCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtMTEycHg7IH0KLnVpLWljb24td3JlbmNoIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC0xMTJweDsgfQoudWktaWNvbi1nZWFyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC0xMTJweDsgfQoudWktaWNvbi1oZWFydCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtMTEycHg7IH0KLnVpLWljb24tc3RhciB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMjRweCAtMTEycHg7IH0KLnVpLWljb24tbGluayB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yNDBweCAtMTEycHg7IH0KLnVpLWljb24tY2FuY2VsIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTI4cHg7IH0KLnVpLWljb24tcGx1cyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0xMjhweDsgfQoudWktaWNvbi1wbHVzdGhpY2sgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTI4cHg7IH0KLnVpLWljb24tbWludXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTI4cHg7IH0KLnVpLWljb24tbWludXN0aGljayB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0xMjhweDsgfQoudWktaWNvbi1jbG9zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xMjhweDsgfQoudWktaWNvbi1jbG9zZXRoaWNrIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTEyOHB4OyB9Ci51aS1pY29uLWtleSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtMTI4cHg7IH0KLnVpLWljb24tbGlnaHRidWxiIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0xMjhweDsgfQoudWktaWNvbi1zY2lzc29ycyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtMTI4cHg7IH0KLnVpLWljb24tY2xpcGJvYXJkIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC0xMjhweDsgfQoudWktaWNvbi1jb3B5IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC0xMjhweDsgfQoudWktaWNvbi1jb250YWN0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC0xMjhweDsgfQoudWktaWNvbi1pbWFnZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtMTI4cHg7IH0KLnVpLWljb24tdmlkZW8geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTEyOHB4OyB9Ci51aS1pY29uLXNjcmlwdCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yNDBweCAtMTI4cHg7IH0KLnVpLWljb24tYWxlcnQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xNDRweDsgfQoudWktaWNvbi1pbmZvIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTE0NHB4OyB9Ci51aS1pY29uLW5vdGljZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0xNDRweDsgfQoudWktaWNvbi1oZWxwIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTE0NHB4OyB9Ci51aS1pY29uLWNoZWNrIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTE0NHB4OyB9Ci51aS1pY29uLWJ1bGxldCB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xNDRweDsgfQoudWktaWNvbi1yYWRpby1vbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xNDRweDsgfQoudWktaWNvbi1yYWRpby1vZmYgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTE0NHB4OyB9Ci51aS1pY29uLXBpbi13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0xNDRweDsgfQoudWktaWNvbi1waW4tcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtMTQ0cHg7IH0KLnVpLWljb24tcGxheSB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE2MHB4OyB9Ci51aS1pY29uLXBhdXNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTE2MHB4OyB9Ci51aS1pY29uLXNlZWstbmV4dCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0xNjBweDsgfQoudWktaWNvbi1zZWVrLXByZXYgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTYwcHg7IH0KLnVpLWljb24tc2Vlay1lbmQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMTYwcHg7IH0KLnVpLWljb24tc2Vlay1zdGFydCB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xNjBweDsgfQovKiB1aS1pY29uLXNlZWstZmlyc3QgaXMgZGVwcmVjYXRlZCwgdXNlIHVpLWljb24tc2Vlay1zdGFydCBpbnN0ZWFkICovCi51aS1pY29uLXNlZWstZmlyc3QgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMTYwcHg7IH0KLnVpLWljb24tc3RvcCB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xNjBweDsgfQoudWktaWNvbi1lamVjdCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtMTYwcHg7IH0KLnVpLWljb24tdm9sdW1lLW9mZiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMTYwcHg7IH0KLnVpLWljb24tdm9sdW1lLW9uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC0xNjBweDsgfQoudWktaWNvbi1wb3dlciB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE3NnB4OyB9Ci51aS1pY29uLXNpZ25hbC1kaWFnIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTE3NnB4OyB9Ci51aS1pY29uLXNpZ25hbCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0xNzZweDsgfQoudWktaWNvbi1iYXR0ZXJ5LTAgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTc2cHg7IH0KLnVpLWljb24tYmF0dGVyeS0xIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTE3NnB4OyB9Ci51aS1pY29uLWJhdHRlcnktMiB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xNzZweDsgfQoudWktaWNvbi1iYXR0ZXJ5LTMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMTc2cHg7IH0KLnVpLWljb24tY2lyY2xlLXBsdXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xOTJweDsgfQoudWktaWNvbi1jaXJjbGUtbWludXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMTkycHg7IH0KLnVpLWljb24tY2lyY2xlLWNsb3NlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTE5MnB4OyB9Ci51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTE5MnB4OyB9Ci51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTE5MnB4OyB9Ci51aS1pY29uLWNpcmNsZS10cmlhbmdsZS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE5MnB4OyB9Ci51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTE5MnB4OyB9Ci51aS1pY29uLWNpcmNsZS1hcnJvdy1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0xOTJweDsgfQoudWktaWNvbi1jaXJjbGUtYXJyb3ctcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMTkycHg7IH0KLnVpLWljb24tY2lyY2xlLWFycm93LXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTE5MnB4OyB9Ci51aS1pY29uLWNpcmNsZS1hcnJvdy1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC0xOTJweDsgfQoudWktaWNvbi1jaXJjbGUtem9vbWluIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC0xOTJweDsgfQoudWktaWNvbi1jaXJjbGUtem9vbW91dCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtMTkycHg7IH0KLnVpLWljb24tY2lyY2xlLWNoZWNrIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IC0xOTJweDsgfQoudWktaWNvbi1jaXJjbGVzbWFsbC1wbHVzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMjA4cHg7IH0KLnVpLWljb24tY2lyY2xlc21hbGwtbWludXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMjA4cHg7IH0KLnVpLWljb24tY2lyY2xlc21hbGwtY2xvc2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMjA4cHg7IH0KLnVpLWljb24tc3F1YXJlc21hbGwtcGx1cyB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0yMDhweDsgfQoudWktaWNvbi1zcXVhcmVzbWFsbC1taW51cyB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0yMDhweDsgfQoudWktaWNvbi1zcXVhcmVzbWFsbC1jbG9zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0yMDhweDsgfQoudWktaWNvbi1ncmlwLWRvdHRlZC12ZXJ0aWNhbCB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTIyNHB4OyB9Ci51aS1pY29uLWdyaXAtZG90dGVkLWhvcml6b250YWwgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMjI0cHg7IH0KLnVpLWljb24tZ3JpcC1zb2xpZC12ZXJ0aWNhbCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0yMjRweDsgfQoudWktaWNvbi1ncmlwLXNvbGlkLWhvcml6b250YWwgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMjI0cHg7IH0KLnVpLWljb24tZ3JpcHNtYWxsLWRpYWdvbmFsLXNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTIyNHB4OyB9Ci51aS1pY29uLWdyaXAtZGlhZ29uYWwtc2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMjI0cHg7IH0KCgovKiBNaXNjIHZpc3VhbHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgovKiBDb3JuZXIgcmFkaXVzICovCi51aS1jb3JuZXItYWxsLAoudWktY29ybmVyLXRvcCwKLnVpLWNvcm5lci1sZWZ0LAoudWktY29ybmVyLXRsIHsKCWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweDsKfQoudWktY29ybmVyLWFsbCwKLnVpLWNvcm5lci10b3AsCi51aS1jb3JuZXItcmlnaHQsCi51aS1jb3JuZXItdHIgewoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDNweDsKfQoudWktY29ybmVyLWFsbCwKLnVpLWNvcm5lci1ib3R0b20sCi51aS1jb3JuZXItbGVmdCwKLnVpLWNvcm5lci1ibCB7Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHg7Cn0KLnVpLWNvcm5lci1hbGwsCi51aS1jb3JuZXItYm90dG9tLAoudWktY29ybmVyLXJpZ2h0LAoudWktY29ybmVyLWJyIHsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAzcHg7Cn0KCi8qIE92ZXJsYXlzICovCi51aS13aWRnZXQtb3ZlcmxheSB7CgliYWNrZ3JvdW5kOiAjYWFhYWFhOwoJb3BhY2l0eTogLjAwMzsKCWZpbHRlcjogQWxwaGEoT3BhY2l0eT0uMyk7IC8qIHN1cHBvcnQ6IElFOCAqLwp9Ci51aS13aWRnZXQtc2hhZG93IHsKCS13ZWJraXQtYm94LXNoYWRvdzogMHB4IDBweCA1cHggIzY2NjY2NjsKCWJveC1zaGFkb3c6IDBweCAwcHggNXB4ICM2NjY2NjY7Cn0K]]></data>
	</file>
	<file>
	  <filename>/css/jquery-ui.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIGpRdWVyeSBVSSAtIHYxLjEyLjAtcmMuMiAtIDIwMTYtMDQtMjEKKiBodHRwOi8vanF1ZXJ5dWkuY29tCiogSW5jbHVkZXM6IGNvcmUuY3NzLCBhY2NvcmRpb24uY3NzLCBhdXRvY29tcGxldGUuY3NzLCBtZW51LmNzcywgYnV0dG9uLmNzcywgY29udHJvbGdyb3VwLmNzcywgY2hlY2tib3hyYWRpby5jc3MsIGRhdGVwaWNrZXIuY3NzLCBkaWFsb2cuY3NzLCBkcmFnZ2FibGUuY3NzLCByZXNpemFibGUuY3NzLCBwcm9ncmVzc2Jhci5jc3MsIHNlbGVjdGFibGUuY3NzLCBzZWxlY3RtZW51LmNzcywgc2xpZGVyLmNzcywgc29ydGFibGUuY3NzLCBzcGlubmVyLmNzcywgdGFicy5jc3MsIHRvb2x0aXAuY3NzLCB0aGVtZS5jc3MKKiBUbyB2aWV3IGFuZCBtb2RpZnkgdGhpcyB0aGVtZSwgdmlzaXQgaHR0cDovL2pxdWVyeXVpLmNvbS90aGVtZXJvbGxlci8/YmdTaGFkb3dYUG9zPSZiZ092ZXJsYXlYUG9zPSZiZ0Vycm9yWFBvcz0mYmdIaWdobGlnaHRYUG9zPSZiZ0NvbnRlbnRYUG9zPSZiZ0hlYWRlclhQb3M9JmJnQWN0aXZlWFBvcz0mYmdIb3ZlclhQb3M9JmJnRGVmYXVsdFhQb3M9JmJnU2hhZG93WVBvcz0mYmdPdmVybGF5WVBvcz0mYmdFcnJvcllQb3M9JmJnSGlnaGxpZ2h0WVBvcz0mYmdDb250ZW50WVBvcz0mYmdIZWFkZXJZUG9zPSZiZ0FjdGl2ZVlQb3M9JmJnSG92ZXJZUG9zPSZiZ0RlZmF1bHRZUG9zPSZiZ1NoYWRvd1JlcGVhdD0mYmdPdmVybGF5UmVwZWF0PSZiZ0Vycm9yUmVwZWF0PSZiZ0hpZ2hsaWdodFJlcGVhdD0mYmdDb250ZW50UmVwZWF0PSZiZ0hlYWRlclJlcGVhdD0mYmdBY3RpdmVSZXBlYXQ9JmJnSG92ZXJSZXBlYXQ9JmJnRGVmYXVsdFJlcGVhdD0maWNvbnNIb3Zlcj11cmwoJTIyaW1hZ2VzJTJGdWktaWNvbnNfNTU1NTU1XzI1NngyNDAucG5nJTIyKSZpY29uc0hpZ2hsaWdodD11cmwoJTIyaW1hZ2VzJTJGdWktaWNvbnNfNzc3NjIwXzI1NngyNDAucG5nJTIyKSZpY29uc0hlYWRlcj11cmwoJTIyaW1hZ2VzJTJGdWktaWNvbnNfNDQ0NDQ0XzI1NngyNDAucG5nJTIyKSZpY29uc0Vycm9yPXVybCglMjJpbWFnZXMlMkZ1aS1pY29uc19jYzAwMDBfMjU2eDI0MC5wbmclMjIpJmljb25zRGVmYXVsdD11cmwoJTIyaW1hZ2VzJTJGdWktaWNvbnNfNzc3Nzc3XzI1NngyNDAucG5nJTIyKSZpY29uc0NvbnRlbnQ9dXJsKCUyMmltYWdlcyUyRnVpLWljb25zXzQ0NDQ0NF8yNTZ4MjQwLnBuZyUyMikmaWNvbnNBY3RpdmU9dXJsKCUyMmltYWdlcyUyRnVpLWljb25zX2ZmZmZmZl8yNTZ4MjQwLnBuZyUyMikmYmdJbWdVcmxTaGFkb3c9JmJnSW1nVXJsT3ZlcmxheT0mYmdJbWdVcmxIb3Zlcj0mYmdJbWdVcmxIaWdobGlnaHQ9JmJnSW1nVXJsSGVhZGVyPSZiZ0ltZ1VybEVycm9yPSZiZ0ltZ1VybERlZmF1bHQ9JmJnSW1nVXJsQ29udGVudD0mYmdJbWdVcmxBY3RpdmU9Jm9wYWNpdHlGaWx0ZXJTaGFkb3c9QWxwaGEoT3BhY2l0eSUzRDMwKSZvcGFjaXR5RmlsdGVyT3ZlcmxheT1BbHBoYShPcGFjaXR5JTNEMzApJm9wYWNpdHlTaGFkb3dQZXJjPTMwJm9wYWNpdHlPdmVybGF5UGVyYz0zMCZpY29uQ29sb3JIb3Zlcj0lMjM1NTU1NTUmaWNvbkNvbG9ySGlnaGxpZ2h0PSUyMzc3NzYyMCZpY29uQ29sb3JIZWFkZXI9JTIzNDQ0NDQ0Jmljb25Db2xvckVycm9yPSUyM2NjMDAwMCZpY29uQ29sb3JEZWZhdWx0PSUyMzc3Nzc3NyZpY29uQ29sb3JDb250ZW50PSUyMzQ0NDQ0NCZpY29uQ29sb3JBY3RpdmU9JTIzZmZmZmZmJmJnSW1nT3BhY2l0eVNoYWRvdz0wJmJnSW1nT3BhY2l0eU92ZXJsYXk9MCZiZ0ltZ09wYWNpdHlFcnJvcj05NSZiZ0ltZ09wYWNpdHlIaWdobGlnaHQ9NTUmYmdJbWdPcGFjaXR5Q29udGVudD03NSZiZ0ltZ09wYWNpdHlIZWFkZXI9NzUmYmdJbWdPcGFjaXR5QWN0aXZlPTY1JmJnSW1nT3BhY2l0eUhvdmVyPTc1JmJnSW1nT3BhY2l0eURlZmF1bHQ9NzUmYmdUZXh0dXJlU2hhZG93PWZsYXQmYmdUZXh0dXJlT3ZlcmxheT1mbGF0JmJnVGV4dHVyZUVycm9yPWZsYXQmYmdUZXh0dXJlSGlnaGxpZ2h0PWZsYXQmYmdUZXh0dXJlQ29udGVudD1mbGF0JmJnVGV4dHVyZUhlYWRlcj1mbGF0JmJnVGV4dHVyZUFjdGl2ZT1mbGF0JmJnVGV4dHVyZUhvdmVyPWZsYXQmYmdUZXh0dXJlRGVmYXVsdD1mbGF0JmNvcm5lclJhZGl1cz0zcHgmZndEZWZhdWx0PW5vcm1hbCZmZkRlZmF1bHQ9QXJpYWwlMkNIZWx2ZXRpY2ElMkNzYW5zLXNlcmlmJmZzRGVmYXVsdD0xZW0mY29ybmVyUmFkaXVzU2hhZG93PThweCZ0aGlja25lc3NTaGFkb3c9NXB4Jm9mZnNldExlZnRTaGFkb3c9MHB4Jm9mZnNldFRvcFNoYWRvdz0wcHgmb3BhY2l0eVNoYWRvdz0uMyZiZ0NvbG9yU2hhZG93PSUyMzY2NjY2NiZvcGFjaXR5T3ZlcmxheT0uMyZiZ0NvbG9yT3ZlcmxheT0lMjNhYWFhYWEmZmNFcnJvcj0lMjM1ZjNmM2YmYm9yZGVyQ29sb3JFcnJvcj0lMjNmMWE4OTkmYmdDb2xvckVycm9yPSUyM2ZkZGZkZiZmY0hpZ2hsaWdodD0lMjM3Nzc2MjAmYm9yZGVyQ29sb3JIaWdobGlnaHQ9JTIzZGFkNTVlJmJnQ29sb3JIaWdobGlnaHQ9JTIzZmZmYTkwJmZjQ29udGVudD0lMjMzMzMzMzMmYm9yZGVyQ29sb3JDb250ZW50PSUyM2RkZGRkZCZiZ0NvbG9yQ29udGVudD0lMjNmZmZmZmYmZmNIZWFkZXI9JTIzMzMzMzMzJmJvcmRlckNvbG9ySGVhZGVyPSUyM2RkZGRkZCZiZ0NvbG9ySGVhZGVyPSUyM2U5ZTllOSZmY0FjdGl2ZT0lMjNmZmZmZmYmYm9yZGVyQ29sb3JBY3RpdmU9JTIzMDAzZWZmJmJnQ29sb3JBY3RpdmU9JTIzMDA3ZmZmJmZjSG92ZXI9JTIzMmIyYjJiJmJvcmRlckNvbG9ySG92ZXI9JTIzY2NjY2NjJmJnQ29sb3JIb3Zlcj0lMjNlZGVkZWQmZmNEZWZhdWx0PSUyMzQ1NDU0NSZib3JkZXJDb2xvckRlZmF1bHQ9JTIzYzVjNWM1JmJnQ29sb3JEZWZhdWx0PSUyM2Y2ZjZmNgoqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzOyBMaWNlbnNlZCBNSVQgKi8KCi51aS1oZWxwZXItaGlkZGVue2Rpc3BsYXk6bm9uZX0udWktaGVscGVyLWhpZGRlbi1hY2Nlc3NpYmxle2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4fS51aS1oZWxwZXItcmVzZXR7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO291dGxpbmU6MDtsaW5lLWhlaWdodDoxLjM7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC1zaXplOjEwMCU7bGlzdC1zdHlsZTpub25lfS51aS1oZWxwZXItY2xlYXJmaXg6YmVmb3JlLC51aS1oZWxwZXItY2xlYXJmaXg6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlO2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZX0udWktaGVscGVyLWNsZWFyZml4OmFmdGVye2NsZWFyOmJvdGh9LnVpLWhlbHBlci16Zml4e3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dG9wOjA7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO29wYWNpdHk6MDtmaWx0ZXI6QWxwaGEoT3BhY2l0eT0wKX0udWktZnJvbnR7ei1pbmRleDoxMDB9LnVpLXN0YXRlLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0IWltcG9ydGFudDtwb2ludGVyLWV2ZW50czpub25lfS51aS1pY29ue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tdG9wOi0uMjVlbTtwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWluZGVudDotOTk5OTlweDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0fS51aS13aWRnZXQtaWNvbi1ibG9ja3tsZWZ0OjUwJTttYXJnaW4tbGVmdDotOHB4O2Rpc3BsYXk6YmxvY2t9LnVpLXdpZGdldC1vdmVybGF5e3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlfS51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1oZWFkZXJ7ZGlzcGxheTpibG9jaztjdXJzb3I6cG9pbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MnB4IDAgMCAwO3BhZGRpbmc6LjVlbSAuNWVtIC41ZW0gLjdlbTtmb250LXNpemU6MTAwJX0udWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24tY29udGVudHtwYWRkaW5nOjFlbSAyLjJlbTtib3JkZXItdG9wOjA7b3ZlcmZsb3c6YXV0b30udWktYXV0b2NvbXBsZXRle3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtjdXJzb3I6ZGVmYXVsdH0udWktbWVudXtsaXN0LXN0eWxlOm5vbmU7cGFkZGluZzowO21hcmdpbjowO2Rpc3BsYXk6YmxvY2s7b3V0bGluZTowfS51aS1tZW51IC51aS1tZW51e3Bvc2l0aW9uOmFic29sdXRlfS51aS1tZW51IC51aS1tZW51LWl0ZW17bWFyZ2luOjA7Y3Vyc29yOnBvaW50ZXI7bGlzdC1zdHlsZS1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEFRQUJBSUFBQUFBQUFQLy8veUg1QkFFQUFBQUFMQUFBQUFBQkFBRUFBQUlCUkFBNyIpfS51aS1tZW51IC51aS1tZW51LWl0ZW0td3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOjNweCAxZW0gM3B4IC40ZW19LnVpLW1lbnUgLnVpLW1lbnUtZGl2aWRlcnttYXJnaW46NXB4IDA7aGVpZ2h0OjA7Zm9udC1zaXplOjA7bGluZS1oZWlnaHQ6MDtib3JkZXItd2lkdGg6MXB4IDAgMCAwfS51aS1tZW51IC51aS1zdGF0ZS1mb2N1cywudWktbWVudSAudWktc3RhdGUtYWN0aXZle21hcmdpbjotMXB4fS51aS1tZW51LWljb25ze3Bvc2l0aW9uOnJlbGF0aXZlfS51aS1tZW51LWljb25zIC51aS1tZW51LWl0ZW0td3JhcHBlcntwYWRkaW5nLWxlZnQ6MmVtfS51aS1tZW51IC51aS1pY29ue3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6LjJlbTttYXJnaW46YXV0byAwfS51aS1tZW51IC51aS1tZW51LWljb257bGVmdDphdXRvO3JpZ2h0OjB9LnVpLWJ1dHRvbntwYWRkaW5nOi40ZW0gMWVtO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO2xpbmUtaGVpZ2h0Om5vcm1hbDttYXJnaW4tcmlnaHQ6LjFlbTtjdXJzb3I6cG9pbnRlcjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7dGV4dC1hbGlnbjpjZW50ZXI7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO292ZXJmbG93OnZpc2libGV9LnVpLWJ1dHRvbiwudWktYnV0dG9uOmxpbmssLnVpLWJ1dHRvbjp2aXNpdGVkLC51aS1idXR0b246aG92ZXIsLnVpLWJ1dHRvbjphY3RpdmV7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVpLWJ1dHRvbi1pY29uLW9ubHl7d2lkdGg6MmVtO2JveC1zaXppbmc6Ym9yZGVyLWJveDt0ZXh0LWluZGVudDotOTk5OXB4O3doaXRlLXNwYWNlOm5vd3JhcH1pbnB1dC51aS1idXR0b24udWktYnV0dG9uLWljb24tb25seXt0ZXh0LWluZGVudDowfS51aS1idXR0b24taWNvbi1vbmx5IC51aS1pY29ue3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bGVmdDo1MCU7bWFyZ2luLXRvcDotOHB4O21hcmdpbi1sZWZ0Oi04cHh9LnVpLWJ1dHRvbi51aS1pY29uLW5vdGV4dCAudWktaWNvbntwYWRkaW5nOjA7d2lkdGg6Mi4xZW07aGVpZ2h0OjIuMWVtO3RleHQtaW5kZW50Oi05OTk5cHg7d2hpdGUtc3BhY2U6bm93cmFwfWlucHV0LnVpLWJ1dHRvbi51aS1pY29uLW5vdGV4dCAudWktaWNvbnt3aWR0aDphdXRvO2hlaWdodDphdXRvO3RleHQtaW5kZW50OjA7d2hpdGUtc3BhY2U6bm9ybWFsO3BhZGRpbmc6LjRlbSAxZW19aW5wdXQudWktYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLGJ1dHRvbi51aS1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjA7cGFkZGluZzowfS51aS1jb250cm9sZ3JvdXB7dmVydGljYWwtYWxpZ246bWlkZGxlO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS51aS1jb250cm9sZ3JvdXAgPiAudWktY29udHJvbGdyb3VwLWl0ZW17ZmxvYXQ6bGVmdDttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowfS51aS1jb250cm9sZ3JvdXAgPiAudWktY29udHJvbGdyb3VwLWl0ZW06Zm9jdXMsLnVpLWNvbnRyb2xncm91cCA+IC51aS1jb250cm9sZ3JvdXAtaXRlbS51aS12aXN1YWwtZm9jdXN7ei1pbmRleDo5OTk5fS51aS1jb250cm9sZ3JvdXAtdmVydGljYWwgPiAudWktY29udHJvbGdyb3VwLWl0ZW17ZGlzcGxheTpibG9jaztmbG9hdDpub25lO3dpZHRoOjEwMCU7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MDt0ZXh0LWFsaWduOmxlZnR9LnVpLWNvbnRyb2xncm91cC12ZXJ0aWNhbCAudWktY29udHJvbGdyb3VwLWl0ZW17Ym94LXNpemluZzpib3JkZXItYm94fS51aS1jb250cm9sZ3JvdXAgLnVpLWNvbnRyb2xncm91cC1sYWJlbHtwYWRkaW5nOi40ZW0gMWVtfS51aS1jb250cm9sZ3JvdXAgLnVpLWNvbnRyb2xncm91cC1sYWJlbCBzcGFue2ZvbnQtc2l6ZTo4MCV9LnVpLWNvbnRyb2xncm91cC1ob3Jpem9udGFsIC51aS1jb250cm9sZ3JvdXAtbGFiZWwgKyAudWktY29udHJvbGdyb3VwLWl0ZW17Ym9yZGVyLWxlZnQ6bm9uZX0udWktY29udHJvbGdyb3VwLXZlcnRpY2FsIC51aS1jb250cm9sZ3JvdXAtbGFiZWwgKyAudWktY29udHJvbGdyb3VwLWl0ZW17Ym9yZGVyLXRvcDpub25lfS51aS1jb250cm9sZ3JvdXAtaG9yaXpvbnRhbCAudWktY29udHJvbGdyb3VwLWxhYmVsLnVpLXdpZGdldC1jb250ZW50e2JvcmRlci1yaWdodDpub25lfS51aS1jb250cm9sZ3JvdXAtdmVydGljYWwgLnVpLWNvbnRyb2xncm91cC1sYWJlbC51aS13aWRnZXQtY29udGVudHtib3JkZXItYm90dG9tOm5vbmV9LnVpLWNvbnRyb2xncm91cC12ZXJ0aWNhbCAudWktc3Bpbm5lci1pbnB1dHt3aWR0aDo3NSU7d2lkdGg6Y2FsYyggMTAwJSAtIDIuNGVtICl9LnVpLWNvbnRyb2xncm91cC12ZXJ0aWNhbCAudWktc3Bpbm5lciAudWktc3Bpbm5lci11cHtib3JkZXItdG9wLXN0eWxlOnNvbGlkfS51aS1jaGVja2JveHJhZGlvLWxhYmVsIC51aS1pY29uLWJhY2tncm91bmR7Ym94LXNoYWRvdzppbnNldCAxcHggMXB4IDFweCAjY2NjO2JvcmRlci1yYWRpdXM6LjEyZW07Ym9yZGVyOm5vbmV9LnVpLWNoZWNrYm94cmFkaW8tcmFkaW8tbGFiZWwgLnVpLWljb24tYmFja2dyb3VuZHt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2JvcmRlci1yYWRpdXM6MWVtO292ZXJmbG93OnZpc2libGU7Ym9yZGVyOm5vbmV9LnVpLWNoZWNrYm94cmFkaW8tcmFkaW8tbGFiZWwudWktY2hlY2tib3hyYWRpby1jaGVja2VkIC51aS1pY29uLC51aS1jaGVja2JveHJhZGlvLXJhZGlvLWxhYmVsLnVpLWNoZWNrYm94cmFkaW8tY2hlY2tlZDpob3ZlciAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOm5vbmU7d2lkdGg6OHB4O2hlaWdodDo4cHg7Ym9yZGVyLXdpZHRoOjRweDtib3JkZXItc3R5bGU6c29saWR9LnVpLWNoZWNrYm94cmFkaW8tZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZX0udWktZGF0ZXBpY2tlcnt3aWR0aDoxN2VtO3BhZGRpbmc6LjJlbSAuMmVtIDA7ZGlzcGxheTpub25lfS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWhlYWRlcntwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOi4yZW0gMH0udWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1wcmV2LC51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLW5leHR7cG9zaXRpb246YWJzb2x1dGU7dG9wOjJweDt3aWR0aDoxLjhlbTtoZWlnaHQ6MS44ZW19LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItcHJldi1ob3ZlciwudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1uZXh0LWhvdmVye3RvcDoxcHh9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItcHJldntsZWZ0OjJweH0udWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1uZXh0e3JpZ2h0OjJweH0udWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1wcmV2LWhvdmVye2xlZnQ6MXB4fS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLW5leHQtaG92ZXJ7cmlnaHQ6MXB4fS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXYgc3BhbiwudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1uZXh0IHNwYW57ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjUwJTttYXJnaW4tbGVmdDotOHB4O3RvcDo1MCU7bWFyZ2luLXRvcDotOHB4fS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXRpdGxle21hcmdpbjowIDIuM2VtO2xpbmUtaGVpZ2h0OjEuOGVtO3RleHQtYWxpZ246Y2VudGVyfS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXRpdGxlIHNlbGVjdHtmb250LXNpemU6MWVtO21hcmdpbjoxcHggMH0udWktZGF0ZXBpY2tlciBzZWxlY3QudWktZGF0ZXBpY2tlci1tb250aCwudWktZGF0ZXBpY2tlciBzZWxlY3QudWktZGF0ZXBpY2tlci15ZWFye3dpZHRoOjQ1JX0udWktZGF0ZXBpY2tlciB0YWJsZXt3aWR0aDoxMDAlO2ZvbnQtc2l6ZTouOWVtO2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTttYXJnaW46MCAwIC40ZW19LnVpLWRhdGVwaWNrZXIgdGh7cGFkZGluZzouN2VtIC4zZW07dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC13ZWlnaHQ6Ym9sZDtib3JkZXI6MH0udWktZGF0ZXBpY2tlciB0ZHtib3JkZXI6MDtwYWRkaW5nOjFweH0udWktZGF0ZXBpY2tlciB0ZCBzcGFuLC51aS1kYXRlcGlja2VyIHRkIGF7ZGlzcGxheTpibG9jaztwYWRkaW5nOi4yZW07dGV4dC1hbGlnbjpyaWdodDt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1idXR0b25wYW5le2JhY2tncm91bmQtaW1hZ2U6bm9uZTttYXJnaW46LjdlbSAwIDAgMDtwYWRkaW5nOjAgLjJlbTtib3JkZXItbGVmdDowO2JvcmRlci1yaWdodDowO2JvcmRlci1ib3R0b206MH0udWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1idXR0b25wYW5lIGJ1dHRvbntmbG9hdDpyaWdodDttYXJnaW46LjVlbSAuMmVtIC40ZW07Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzouMmVtIC42ZW0gLjNlbSAuNmVtO3dpZHRoOmF1dG87b3ZlcmZsb3c6dmlzaWJsZX0udWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1idXR0b25wYW5lIGJ1dHRvbi51aS1kYXRlcGlja2VyLWN1cnJlbnR7ZmxvYXQ6bGVmdH0udWktZGF0ZXBpY2tlci51aS1kYXRlcGlja2VyLW11bHRpe3dpZHRoOmF1dG99LnVpLWRhdGVwaWNrZXItbXVsdGkgLnVpLWRhdGVwaWNrZXItZ3JvdXB7ZmxvYXQ6bGVmdH0udWktZGF0ZXBpY2tlci1tdWx0aSAudWktZGF0ZXBpY2tlci1ncm91cCB0YWJsZXt3aWR0aDo5NSU7bWFyZ2luOjAgYXV0byAuNGVtfS51aS1kYXRlcGlja2VyLW11bHRpLTIgLnVpLWRhdGVwaWNrZXItZ3JvdXB7d2lkdGg6NTAlfS51aS1kYXRlcGlja2VyLW11bHRpLTMgLnVpLWRhdGVwaWNrZXItZ3JvdXB7d2lkdGg6MzMuMyV9LnVpLWRhdGVwaWNrZXItbXVsdGktNCAudWktZGF0ZXBpY2tlci1ncm91cHt3aWR0aDoyNSV9LnVpLWRhdGVwaWNrZXItbXVsdGkgLnVpLWRhdGVwaWNrZXItZ3JvdXAtbGFzdCAudWktZGF0ZXBpY2tlci1oZWFkZXIsLnVpLWRhdGVwaWNrZXItbXVsdGkgLnVpLWRhdGVwaWNrZXItZ3JvdXAtbWlkZGxlIC51aS1kYXRlcGlja2VyLWhlYWRlcntib3JkZXItbGVmdC13aWR0aDowfS51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmV7Y2xlYXI6bGVmdH0udWktZGF0ZXBpY2tlci1yb3ctYnJlYWt7Y2xlYXI6Ym90aDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZTowfS51aS1kYXRlcGlja2VyLXJ0bHtkaXJlY3Rpb246cnRsfS51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1wcmV2e3JpZ2h0OjJweDtsZWZ0OmF1dG99LnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLW5leHR7bGVmdDoycHg7cmlnaHQ6YXV0b30udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItcHJldjpob3ZlcntyaWdodDoxcHg7bGVmdDphdXRvfS51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1uZXh0OmhvdmVye2xlZnQ6MXB4O3JpZ2h0OmF1dG99LnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmV7Y2xlYXI6cmlnaHR9LnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgYnV0dG9ue2Zsb2F0OmxlZnR9LnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgYnV0dG9uLnVpLWRhdGVwaWNrZXItY3VycmVudCwudWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItZ3JvdXB7ZmxvYXQ6cmlnaHR9LnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLWdyb3VwLWxhc3QgLnVpLWRhdGVwaWNrZXItaGVhZGVyLC51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1ncm91cC1taWRkbGUgLnVpLWRhdGVwaWNrZXItaGVhZGVye2JvcmRlci1yaWdodC13aWR0aDowO2JvcmRlci1sZWZ0LXdpZHRoOjFweH0udWktZGF0ZXBpY2tlciAudWktaWNvbntkaXNwbGF5OmJsb2NrO3RleHQtaW5kZW50Oi05OTk5OXB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7bGVmdDouNWVtO3RvcDouM2VtfS51aS1kaWFsb2d7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3BhZGRpbmc6LjJlbTtvdXRsaW5lOjB9LnVpLWRpYWxvZyAudWktZGlhbG9nLXRpdGxlYmFye3BhZGRpbmc6LjRlbSAxZW07cG9zaXRpb246cmVsYXRpdmV9LnVpLWRpYWxvZyAudWktZGlhbG9nLXRpdGxle2Zsb2F0OmxlZnQ7bWFyZ2luOi4xZW0gMDt3aGl0ZS1zcGFjZTpub3dyYXA7d2lkdGg6OTAlO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS51aS1kaWFsb2cgLnVpLWRpYWxvZy10aXRsZWJhci1jbG9zZXtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDouM2VtO3RvcDo1MCU7d2lkdGg6MjBweDttYXJnaW46LTEwcHggMCAwIDA7cGFkZGluZzoxcHg7aGVpZ2h0OjIwcHh9LnVpLWRpYWxvZyAudWktZGlhbG9nLWNvbnRlbnR7cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyOjA7cGFkZGluZzouNWVtIDFlbTtiYWNrZ3JvdW5kOm5vbmU7b3ZlcmZsb3c6YXV0b30udWktZGlhbG9nIC51aS1kaWFsb2ctYnV0dG9ucGFuZXt0ZXh0LWFsaWduOmxlZnQ7Ym9yZGVyLXdpZHRoOjFweCAwIDAgMDtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7bWFyZ2luLXRvcDouNWVtO3BhZGRpbmc6LjNlbSAxZW0gLjVlbSAuNGVtfS51aS1kaWFsb2cgLnVpLWRpYWxvZy1idXR0b25wYW5lIC51aS1kaWFsb2ctYnV0dG9uc2V0e2Zsb2F0OnJpZ2h0fS51aS1kaWFsb2cgLnVpLWRpYWxvZy1idXR0b25wYW5lIGJ1dHRvbnttYXJnaW46LjVlbSAuNGVtIC41ZW0gMDtjdXJzb3I6cG9pbnRlcn0udWktZGlhbG9nIC51aS1yZXNpemFibGUtbntoZWlnaHQ6MnB4O3RvcDowfS51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1le3dpZHRoOjJweDtyaWdodDowfS51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1ze2hlaWdodDoycHg7Ym90dG9tOjB9LnVpLWRpYWxvZyAudWktcmVzaXphYmxlLXd7d2lkdGg6MnB4O2xlZnQ6MH0udWktZGlhbG9nIC51aS1yZXNpemFibGUtc2UsLnVpLWRpYWxvZyAudWktcmVzaXphYmxlLXN3LC51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1uZSwudWktZGlhbG9nIC51aS1yZXNpemFibGUtbnd7d2lkdGg6N3B4O2hlaWdodDo3cHh9LnVpLWRpYWxvZyAudWktcmVzaXphYmxlLXNle3JpZ2h0OjA7Ym90dG9tOjB9LnVpLWRpYWxvZyAudWktcmVzaXphYmxlLXN3e2xlZnQ6MDtib3R0b206MH0udWktZGlhbG9nIC51aS1yZXNpemFibGUtbmV7cmlnaHQ6MDt0b3A6MH0udWktZGlhbG9nIC51aS1yZXNpemFibGUtbnd7bGVmdDowO3RvcDowfS51aS1kcmFnZ2FibGUgLnVpLWRpYWxvZy10aXRsZWJhcntjdXJzb3I6bW92ZX0udWktZHJhZ2dhYmxlLWhhbmRsZXstbXMtdG91Y2gtYWN0aW9uOm5vbmU7dG91Y2gtYWN0aW9uOm5vbmV9LnVpLXJlc2l6YWJsZXtwb3NpdGlvbjpyZWxhdGl2ZX0udWktcmVzaXphYmxlLWhhbmRsZXtwb3NpdGlvbjphYnNvbHV0ZTtmb250LXNpemU6MC4xcHg7ZGlzcGxheTpibG9jazstbXMtdG91Y2gtYWN0aW9uOm5vbmU7dG91Y2gtYWN0aW9uOm5vbmV9LnVpLXJlc2l6YWJsZS1kaXNhYmxlZCAudWktcmVzaXphYmxlLWhhbmRsZSwudWktcmVzaXphYmxlLWF1dG9oaWRlIC51aS1yZXNpemFibGUtaGFuZGxle2Rpc3BsYXk6bm9uZX0udWktcmVzaXphYmxlLW57Y3Vyc29yOm4tcmVzaXplO2hlaWdodDo3cHg7d2lkdGg6MTAwJTt0b3A6LTVweDtsZWZ0OjB9LnVpLXJlc2l6YWJsZS1ze2N1cnNvcjpzLXJlc2l6ZTtoZWlnaHQ6N3B4O3dpZHRoOjEwMCU7Ym90dG9tOi01cHg7bGVmdDowfS51aS1yZXNpemFibGUtZXtjdXJzb3I6ZS1yZXNpemU7d2lkdGg6N3B4O3JpZ2h0Oi01cHg7dG9wOjA7aGVpZ2h0OjEwMCV9LnVpLXJlc2l6YWJsZS13e2N1cnNvcjp3LXJlc2l6ZTt3aWR0aDo3cHg7bGVmdDotNXB4O3RvcDowO2hlaWdodDoxMDAlfS51aS1yZXNpemFibGUtc2V7Y3Vyc29yOnNlLXJlc2l6ZTt3aWR0aDoxMnB4O2hlaWdodDoxMnB4O3JpZ2h0OjFweDtib3R0b206MXB4fS51aS1yZXNpemFibGUtc3d7Y3Vyc29yOnN3LXJlc2l6ZTt3aWR0aDo5cHg7aGVpZ2h0OjlweDtsZWZ0Oi01cHg7Ym90dG9tOi01cHh9LnVpLXJlc2l6YWJsZS1ud3tjdXJzb3I6bnctcmVzaXplO3dpZHRoOjlweDtoZWlnaHQ6OXB4O2xlZnQ6LTVweDt0b3A6LTVweH0udWktcmVzaXphYmxlLW5le2N1cnNvcjpuZS1yZXNpemU7d2lkdGg6OXB4O2hlaWdodDo5cHg7cmlnaHQ6LTVweDt0b3A6LTVweH0udWktcHJvZ3Jlc3NiYXJ7aGVpZ2h0OjJlbTt0ZXh0LWFsaWduOmxlZnQ7b3ZlcmZsb3c6aGlkZGVufS51aS1wcm9ncmVzc2JhciAudWktcHJvZ3Jlc3NiYXItdmFsdWV7bWFyZ2luOi0xcHg7aGVpZ2h0OjEwMCV9LnVpLXByb2dyZXNzYmFyIC51aS1wcm9ncmVzc2Jhci1vdmVybGF5e2JhY2tncm91bmQ6dXJsKCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhLQUFvQUlBQkFBQUFBUC8vL3lIL0MwNUZWRk5EUVZCRk1pNHdBd0VBQUFBaCtRUUpBUUFCQUN3QUFBQUFLQUFvQUFBQ2tZd05xWHJkQzUyRFMwNmE3TUZaSSs0RkhCQ0tvRGVXS1hxeW1QcUdxeHZKclhaYk14N1R0Yyt3OVhnVTJGQjNsT3lRUldFVDJJRkdpVTltMWZyRFZweFpaYzZiZkh3djRjMVlYUDZrMVZkeTI5MkZiNlVrdXZGdFhwdldTekErSHljWEpIVVhpR1lJaU1nMlI2VzQ1OWduV0dmSE5kaklxRFdWcWVtSDJla3BPYmtwT2xwcFdVcVppcXI2ZWRxcVdRQUFJZmtFQ1FFQUFRQXNBQUFBQUNnQUtBQUFBcFNNZ1puR2ZhcWNnMUUydXV6RG1tSFVCUjhRaWw5NWhpUEtxV24zYXF0THNTMTh5N0cxU3pOZW93V0JFTnRRZCtUMUprdFAwNW56UFRkSlpsUjZ2VXhOV1dqVit2VVdoV05rV0Z3eGw5VnBaUmVkWWNmbElPTGFmYWEyOFhkc0gveW5sY2MxdVBWRFp4UUlSMEsyNStjSUNDbW9xQ2U1bUdoWk9mZVlTVWg1eUpjSnlya1pXV3BhUjhkb0oybzROWXE2MmxBQUFDSDVCQWtCQUFFQUxBQUFBQUFvQUNnQUFBS1ZESTRZeTIyWm5JTlJOcW9zdzBCdjdpMWd5SFVrRmo3b1NhV2x1M292QzhHeE5zbzVmbHV6M3FMVmhCVmVUL0x6N1pUSHl4TDVkRGFsUVdQVk9zUVd0Um51d1hhRlRqOWpWVmg4cG1hOUpqWjR6WVNqNVpPeW1hN3V1b2xmZmgrSVI1YVc5N2NIdUJVWEtHS1hsS2puK0RpSFdNY1lKYWg0TjBsWUNNbEpPWGlwR1JyNXFkZ29TVHJxV1NxNldGbDJ5cG9hVUFBQUlma0VDUUVBQVFBc0FBQUFBQ2dBS0FBQUFwYUViNkhMZ2QvaU83Rk5XdGNGV2UrdWZPREdqUmZvaUoyYWtTaGJ1ZWIwd3RJNTB6bTAycGJ2d2ZXRU1XQlExektHbExJaHNraUVQbTlSNnZSWHhWNFp6V1QyeUhPR3BXTXlvcmJsS2xOcDhIbUhFYi9sQ1hqY1c3Ym10WFA4WHQyMjlPVldSMWZvZDJlV3FOZkh1TWpYQ1BrSUdOaWxlT2lJbVZtQ09FbW9TZm4zeVhsSldtb0hHaHFwNmlsWXVXWXBtVHFLVWdBQUlma0VDUUVBQVFBc0FBQUFBQ2dBS0FBQUFwaUVINmtiNThiaVEzRk5XdE1GV1czZU5WY29qdUZHZnFuWnFTZWJ1UzA2dzVWODAvWDAycEtlOHpGd1A2RUZXT1QxbERGazhyR0VSaDFUVE5Pb2NRNjFIbTRYbTJWZXhVSHB6anltVmlIckZiaUVMc2VmVnJuNlhLZm50MlE5Ry8rWGRpZTQ5OVhIZDJnNGg3aW9PR2hYR0pib0dBblhTQm5vQndLWXlmaW91YlpKMkhuMFJ1UlphZmxaT2lsNTZacDZpaW9LU1hwVUFBQWgrUVFKQVFBQkFDd0FBQUFBS0FBb0FBQUNrb1FScVJ2bnh1STdrVTFhMVVVNWJkNXRuU2VPWlhobW41bFdLM3FOVFd2UmRReFA4cXZhQysveWFZUXpYTzdCTXZhVUVtSlJkM1RzaU1BZ3N3bU5ZclNnWmRZclRYNnRTSEdaTzczZXp1QXcydXh1UStCYmVaZk14c2V4WTM1Ky9RZTRKMWluVjBnNHgzV0h1TWhJbDJqWE9LVDJRK1ZVNWZnb1NVSTUyVmZaeWZrSkdraGE2am1ZK2FhWWRpcnErbFFBQUNINUJBa0JBQUVBTEFBQUFBQW9BQ2dBQUFLV0JJS3BZZTBMM1lOS1RvcXN3VWx2em5pZ2Q0d2lSNEtoWnJLdDlVcHFpcDYxaTlFM3ZNdnhSZEhsYkVGaUVYZms5WUFSWXhPWlpENlZRMnBVdW5CbXRSWG8xTGY4aE1WVmNObDhKYWZWMzhhTTIvRnU1VjE2Qm42M3I2eHQ5N2owOStNWFNGaTRCbmlHRmFlM2h6Ykg5K2hZQnprcHVVaDVhWm1IdWFuWk9aZ0l1dmJHaU5lb21DbmF4eGFwMnVwYUNac3ErMWtBQUNINUJBa0JBQUVBTEFBQUFBQW9BQ2dBQUFLWGpJOEJ5NXpmNGtPeFRWclhOVmx2MVgwZDhJR1pHS0xuTnBZdG04THI5Y3FWZXVPU3ZmT1c3OUQ5YURIaXpOaERKaWRGWmhOeWRFYWhPYURINm5vbXRKanAxdHV0S29OV2t2QTZKcWZSVkxIVS9RVWZhdTlsMng3RzU0ZDFmbDk5NXhjSUdBZFhxTWZCTmFkb1lyaEgrTWcyS0JscFZwYmx1Q2lYbU1uWjJTaDRHQnFKK2NrSU9xcUo2TG1LU2xsWm1zb3E2d3BRQUFBaCtRUUpBUUFCQUN3QUFBQUFLQUFvQUFBQ2xZeC9vTHZveHVKRGtVMWExWVVaYko1OW5TZDJaWGhXcWJSYTIvZ0Y4R3UyRFkzaXFzN3lycSt4QllFa1l2RlNNOGFTU09iRStaZ1JsMUJIRlpOcjdwUkNhdlo1QlcyMTQyaFkzQU4veld0c21mMTJwOVh4eEZsMmxwTG4xcnNlenRmWFpqZElXSWYyczVkSXR3allLQmdvOXlnNXBIZ3pKWFRFZUdsWnVlbnB5UG1wR1FvS09Xa1ltU3BhU25xS2lsZUkyRkFBQUNINUJBa0JBQUVBTEFBQUFBQW9BQ2dBQUFLVmpCK2d1K2pHNGtPUlRWclZoUmxzbm4yZEozWmxlRmFwdEZyYitDWG1POU9vemVMNVZmUDk5SHZBV2hwaVVkY3drcEJIMzgyNUF3WWRVOHhUcWxMR2h0Q29zQXJLTXB2ZmExbU1SYWU5VnZXWmZlQjJYZlBrZUxtbTE4bFVjQmorcDVkbk44alhaM1lJR0VoWXVPVW40NWFvQ0RrcDE2aGw1SWpZSnZqV0tjbm9HUXBxeVBscE9ocjNhRWxhcXJxNTZCcTdWQUFBT3c9PSIpO2hlaWdodDoxMDAlO2ZpbHRlcjphbHBoYShvcGFjaXR5PTI1KTtvcGFjaXR5OjAuMjV9LnVpLXByb2dyZXNzYmFyLWluZGV0ZXJtaW5hdGUgLnVpLXByb2dyZXNzYmFyLXZhbHVle2JhY2tncm91bmQtaW1hZ2U6bm9uZX0udWktc2VsZWN0YWJsZXstbXMtdG91Y2gtYWN0aW9uOm5vbmU7dG91Y2gtYWN0aW9uOm5vbmV9LnVpLXNlbGVjdGFibGUtaGVscGVye3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwO2JvcmRlcjoxcHggZG90dGVkIGJsYWNrfS51aS1zZWxlY3RtZW51LW1lbnV7cGFkZGluZzowO21hcmdpbjowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtkaXNwbGF5Om5vbmV9LnVpLXNlbGVjdG1lbnUtbWVudSAudWktbWVudXtvdmVyZmxvdzphdXRvO292ZXJmbG93LXg6aGlkZGVuO3BhZGRpbmctYm90dG9tOjFweH0udWktc2VsZWN0bWVudS1tZW51IC51aS1tZW51IC51aS1zZWxlY3RtZW51LW9wdGdyb3Vwe2ZvbnQtc2l6ZToxZW07Zm9udC13ZWlnaHQ6Ym9sZDtsaW5lLWhlaWdodDoxLjU7cGFkZGluZzoycHggMC40ZW07bWFyZ2luOjAuNWVtIDAgMCAwO2hlaWdodDphdXRvO2JvcmRlcjowfS51aS1zZWxlY3RtZW51LW9wZW57ZGlzcGxheTpibG9ja30udWktc2VsZWN0bWVudS10ZXh0e2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXJpZ2h0OjIwcHg7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LnVpLXNlbGVjdG1lbnUtYnV0dG9uLnVpLWJ1dHRvbnt0ZXh0LWFsaWduOmxlZnQ7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOjE0ZW19LnVpLXNlbGVjdG1lbnUtaWNvbi51aS1pY29ue2Zsb2F0OnJpZ2h0O21hcmdpbi10b3A6MH0udWktc2xpZGVye3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246bGVmdH0udWktc2xpZGVyIC51aS1zbGlkZXItaGFuZGxle3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6Mjt3aWR0aDoxLjJlbTtoZWlnaHQ6MS4yZW07Y3Vyc29yOmRlZmF1bHQ7LW1zLXRvdWNoLWFjdGlvbjpub25lO3RvdWNoLWFjdGlvbjpub25lfS51aS1zbGlkZXIgLnVpLXNsaWRlci1yYW5nZXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjE7Zm9udC1zaXplOi43ZW07ZGlzcGxheTpibG9jaztib3JkZXI6MDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMH0udWktc2xpZGVyLnVpLXN0YXRlLWRpc2FibGVkIC51aS1zbGlkZXItaGFuZGxlLC51aS1zbGlkZXIudWktc3RhdGUtZGlzYWJsZWQgLnVpLXNsaWRlci1yYW5nZXtmaWx0ZXI6aW5oZXJpdH0udWktc2xpZGVyLWhvcml6b250YWx7aGVpZ2h0Oi44ZW19LnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItaGFuZGxle3RvcDotLjNlbTttYXJnaW4tbGVmdDotLjZlbX0udWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1yYW5nZXt0b3A6MDtoZWlnaHQ6MTAwJX0udWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1yYW5nZS1taW57bGVmdDowfS51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdlLW1heHtyaWdodDowfS51aS1zbGlkZXItdmVydGljYWx7d2lkdGg6LjhlbTtoZWlnaHQ6MTAwcHh9LnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLWhhbmRsZXtsZWZ0Oi0uM2VtO21hcmdpbi1sZWZ0OjA7bWFyZ2luLWJvdHRvbTotLjZlbX0udWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItcmFuZ2V7bGVmdDowO3dpZHRoOjEwMCV9LnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLXJhbmdlLW1pbntib3R0b206MH0udWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItcmFuZ2UtbWF4e3RvcDowfS51aS1zb3J0YWJsZS1oYW5kbGV7LW1zLXRvdWNoLWFjdGlvbjpub25lO3RvdWNoLWFjdGlvbjpub25lfS51aS1zcGlubmVye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7dmVydGljYWwtYWxpZ246bWlkZGxlfS51aS1zcGlubmVyLWlucHV0e2JvcmRlcjpub25lO2JhY2tncm91bmQ6bm9uZTtjb2xvcjppbmhlcml0O3BhZGRpbmc6LjIyMmVtIDA7bWFyZ2luOi4yZW0gMDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLWxlZnQ6LjRlbTttYXJnaW4tcmlnaHQ6MmVtfS51aS1zcGlubmVyLWJ1dHRvbnt3aWR0aDoxLjZlbTtoZWlnaHQ6NTAlO2ZvbnQtc2l6ZTouNWVtO3BhZGRpbmc6MDttYXJnaW46MDt0ZXh0LWFsaWduOmNlbnRlcjtwb3NpdGlvbjphYnNvbHV0ZTtjdXJzb3I6ZGVmYXVsdDtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjtyaWdodDowfS51aS1zcGlubmVyIGEudWktc3Bpbm5lci1idXR0b257Ym9yZGVyLXRvcC1zdHlsZTpub25lO2JvcmRlci1ib3R0b20tc3R5bGU6bm9uZTtib3JkZXItcmlnaHQtc3R5bGU6bm9uZX0udWktc3Bpbm5lci11cHt0b3A6MH0udWktc3Bpbm5lci1kb3due2JvdHRvbTowfS51aS10YWJze3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6LjJlbX0udWktdGFicyAudWktdGFicy1uYXZ7bWFyZ2luOjA7cGFkZGluZzouMmVtIC4yZW0gMH0udWktdGFicyAudWktdGFicy1uYXYgbGl7bGlzdC1zdHlsZTpub25lO2Zsb2F0OmxlZnQ7cG9zaXRpb246cmVsYXRpdmU7dG9wOjA7bWFyZ2luOjFweCAuMmVtIDAgMDtib3JkZXItYm90dG9tLXdpZHRoOjA7cGFkZGluZzowO3doaXRlLXNwYWNlOm5vd3JhcH0udWktdGFicyAudWktdGFicy1uYXYgLnVpLXRhYnMtYW5jaG9ye2Zsb2F0OmxlZnQ7cGFkZGluZzouNWVtIDFlbTt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktdGFicyAudWktdGFicy1uYXYgbGkudWktdGFicy1hY3RpdmV7bWFyZ2luLWJvdHRvbTotMXB4O3BhZGRpbmctYm90dG9tOjFweH0udWktdGFicyAudWktdGFicy1uYXYgbGkudWktdGFicy1hY3RpdmUgLnVpLXRhYnMtYW5jaG9yLC51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS1zdGF0ZS1kaXNhYmxlZCAudWktdGFicy1hbmNob3IsLnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpLnVpLXRhYnMtbG9hZGluZyAudWktdGFicy1hbmNob3J7Y3Vyc29yOnRleHR9LnVpLXRhYnMtY29sbGFwc2libGUgLnVpLXRhYnMtbmF2IGxpLnVpLXRhYnMtYWN0aXZlIC51aS10YWJzLWFuY2hvcntjdXJzb3I6cG9pbnRlcn0udWktdGFicyAudWktdGFicy1wYW5lbHtkaXNwbGF5OmJsb2NrO2JvcmRlci13aWR0aDowO3BhZGRpbmc6MWVtIDEuNGVtO2JhY2tncm91bmQ6bm9uZX0udWktdG9vbHRpcHtwYWRkaW5nOjhweDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4Ojk5OTk7bWF4LXdpZHRoOjMwMHB4fWJvZHkgLnVpLXRvb2x0aXB7Ym9yZGVyLXdpZHRoOjJweH0udWktd2lkZ2V0e2ZvbnQtZmFtaWx5OkFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxZW19LnVpLXdpZGdldCAudWktd2lkZ2V0e2ZvbnQtc2l6ZToxZW19LnVpLXdpZGdldCBpbnB1dCwudWktd2lkZ2V0IHNlbGVjdCwudWktd2lkZ2V0IHRleHRhcmVhLC51aS13aWRnZXQgYnV0dG9ue2ZvbnQtZmFtaWx5OkFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxZW19LnVpLXdpZGdldC51aS13aWRnZXQtY29udGVudHtib3JkZXI6MXB4IHNvbGlkICNjNWM1YzV9LnVpLXdpZGdldC1jb250ZW50e2JvcmRlcjoxcHggc29saWQgI2RkZDtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzMzM30udWktd2lkZ2V0LWNvbnRlbnQgYXtjb2xvcjojMzMzfS51aS13aWRnZXQtaGVhZGVye2JvcmRlcjoxcHggc29saWQgI2RkZDtiYWNrZ3JvdW5kOiNlOWU5ZTk7Y29sb3I6IzMzMztmb250LXdlaWdodDpib2xkfS51aS13aWRnZXQtaGVhZGVyIGF7Y29sb3I6IzMzM30udWktc3RhdGUtZGVmYXVsdCwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWRlZmF1bHQsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWRlZmF1bHQsLnVpLWJ1dHRvbixodG1sIC51aS1idXR0b24udWktc3RhdGUtZGlzYWJsZWQ6aG92ZXIsaHRtbCAudWktYnV0dG9uLnVpLXN0YXRlLWRpc2FibGVkOmFjdGl2ZXtib3JkZXI6MXB4IHNvbGlkICNjNWM1YzU7YmFja2dyb3VuZDojZjZmNmY2O2ZvbnQtd2VpZ2h0Om5vcm1hbDtjb2xvcjojNDU0NTQ1fS51aS1zdGF0ZS1kZWZhdWx0IGEsLnVpLXN0YXRlLWRlZmF1bHQgYTpsaW5rLC51aS1zdGF0ZS1kZWZhdWx0IGE6dmlzaXRlZCxhLnVpLWJ1dHRvbixhOmxpbmsudWktYnV0dG9uLGE6dmlzaXRlZC51aS1idXR0b24sLnVpLWJ1dHRvbntjb2xvcjojNDU0NTQ1O3RleHQtZGVjb3JhdGlvbjpub25lfS51aS1zdGF0ZS1ob3ZlciwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWhvdmVyLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1ob3ZlciwudWktc3RhdGUtZm9jdXMsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1mb2N1cywudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZm9jdXMsLnVpLWJ1dHRvbjpob3ZlciwudWktYnV0dG9uOmZvY3Vze2JvcmRlcjoxcHggc29saWQgI2NjYztiYWNrZ3JvdW5kOiNlZGVkZWQ7Zm9udC13ZWlnaHQ6bm9ybWFsO2NvbG9yOiMyYjJiMmJ9LnVpLXN0YXRlLWhvdmVyIGEsLnVpLXN0YXRlLWhvdmVyIGE6aG92ZXIsLnVpLXN0YXRlLWhvdmVyIGE6bGluaywudWktc3RhdGUtaG92ZXIgYTp2aXNpdGVkLC51aS1zdGF0ZS1mb2N1cyBhLC51aS1zdGF0ZS1mb2N1cyBhOmhvdmVyLC51aS1zdGF0ZS1mb2N1cyBhOmxpbmssLnVpLXN0YXRlLWZvY3VzIGE6dmlzaXRlZCxhLnVpLWJ1dHRvbjpob3ZlcixhLnVpLWJ1dHRvbjpmb2N1c3tjb2xvcjojMmIyYjJiO3RleHQtZGVjb3JhdGlvbjpub25lfS51aS12aXN1YWwtZm9jdXN7Ym94LXNoYWRvdzowIDAgM3B4IDFweCByZ2IoOTQsMTU4LDIxNCl9LnVpLXN0YXRlLWFjdGl2ZSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWFjdGl2ZSwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtYWN0aXZlLGEudWktYnV0dG9uOmFjdGl2ZSwudWktYnV0dG9uOmFjdGl2ZSwudWktYnV0dG9uLnVpLXN0YXRlLWFjdGl2ZTpob3Zlcntib3JkZXI6MXB4IHNvbGlkICMwMDNlZmY7YmFja2dyb3VuZDojMDA3ZmZmO2ZvbnQtd2VpZ2h0Om5vcm1hbDtjb2xvcjojZmZmfS51aS1pY29uLWJhY2tncm91bmQsLnVpLXN0YXRlLWFjdGl2ZSAudWktaWNvbi1iYWNrZ3JvdW5ke2JvcmRlcjojMDAzZWZmO2JhY2tncm91bmQtY29sb3I6I2ZmZn0udWktc3RhdGUtYWN0aXZlIGEsLnVpLXN0YXRlLWFjdGl2ZSBhOmxpbmssLnVpLXN0YXRlLWFjdGl2ZSBhOnZpc2l0ZWR7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktc3RhdGUtaGlnaGxpZ2h0LC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtaGlnaGxpZ2h0LC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1oaWdobGlnaHR7Ym9yZGVyOjFweCBzb2xpZCAjZGFkNTVlO2JhY2tncm91bmQ6I2ZmZmE5MDtjb2xvcjojNzc3NjIwfS51aS1zdGF0ZS1oaWdobGlnaHQgYSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWhpZ2hsaWdodCBhLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1oaWdobGlnaHQgYXtjb2xvcjojNzc3NjIwfS51aS1zdGF0ZS1lcnJvciwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWVycm9yLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1lcnJvcntib3JkZXI6MXB4IHNvbGlkICNmMWE4OTk7YmFja2dyb3VuZDojZmRkZmRmO2NvbG9yOiM1ZjNmM2Z9LnVpLXN0YXRlLWVycm9yIGEsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1lcnJvciBhLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1lcnJvciBhe2NvbG9yOiM1ZjNmM2Z9LnVpLXN0YXRlLWVycm9yLXRleHQsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1lcnJvci10ZXh0LC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1lcnJvci10ZXh0e2NvbG9yOiM1ZjNmM2Z9LnVpLXByaW9yaXR5LXByaW1hcnksLnVpLXdpZGdldC1jb250ZW50IC51aS1wcmlvcml0eS1wcmltYXJ5LC51aS13aWRnZXQtaGVhZGVyIC51aS1wcmlvcml0eS1wcmltYXJ5e2ZvbnQtd2VpZ2h0OmJvbGR9LnVpLXByaW9yaXR5LXNlY29uZGFyeSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXByaW9yaXR5LXNlY29uZGFyeSwudWktd2lkZ2V0LWhlYWRlciAudWktcHJpb3JpdHktc2Vjb25kYXJ5e29wYWNpdHk6Ljc7ZmlsdGVyOkFscGhhKE9wYWNpdHk9NzApO2ZvbnQtd2VpZ2h0Om5vcm1hbH0udWktc3RhdGUtZGlzYWJsZWQsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1kaXNhYmxlZCwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZGlzYWJsZWR7b3BhY2l0eTouMzU7ZmlsdGVyOkFscGhhKE9wYWNpdHk9MzUpO2JhY2tncm91bmQtaW1hZ2U6bm9uZX0udWktc3RhdGUtZGlzYWJsZWQgLnVpLWljb257ZmlsdGVyOkFscGhhKE9wYWNpdHk9MzUpfS51aS1pY29ue3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHh9LnVpLWljb24sLnVpLXdpZGdldC1jb250ZW50IC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfNDQ0NDQ0XzI1NngyNDAucG5nIil9LnVpLXdpZGdldC1oZWFkZXIgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc180NDQ0NDRfMjU2eDI0MC5wbmciKX0udWktYnV0dG9uIC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfNzc3Nzc3XzI1NngyNDAucG5nIil9LnVpLXN0YXRlLWhvdmVyIC51aS1pY29uLC51aS1zdGF0ZS1mb2N1cyAudWktaWNvbiwudWktYnV0dG9uOmhvdmVyIC51aS1pY29uLC51aS1idXR0b246Zm9jdXMgLnVpLWljb24sLnVpLXN0YXRlLWRlZmF1bHQgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc181NTU1NTVfMjU2eDI0MC5wbmciKX0udWktc3RhdGUtYWN0aXZlIC51aS1pY29uLC51aS1idXR0b246YWN0aXZlIC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfZmZmZmZmXzI1NngyNDAucG5nIil9LnVpLXN0YXRlLWhpZ2hsaWdodCAudWktaWNvbiwudWktYnV0dG9uIC51aS1zdGF0ZS1oaWdobGlnaHQudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zXzc3NzYyMF8yNTZ4MjQwLnBuZyIpfS51aS1zdGF0ZS1lcnJvciAudWktaWNvbiwudWktc3RhdGUtZXJyb3ItdGV4dCAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zX2NjMDAwMF8yNTZ4MjQwLnBuZyIpfS51aS1pY29uLWJsYW5re2JhY2tncm91bmQtcG9zaXRpb246MTZweCAxNnB4fS51aS1pY29uLWNhcmV0LTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMH0udWktaWNvbi1jYXJldC0xLW5le2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggMH0udWktaWNvbi1jYXJldC0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAwfS51aS1pY29uLWNhcmV0LTEtc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAwfS51aS1pY29uLWNhcmV0LTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NXB4IDB9LnVpLWljb24tY2FyZXQtMS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IDB9LnVpLWljb24tY2FyZXQtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggMH0udWktaWNvbi1jYXJldC0xLW53e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IDB9LnVpLWljb24tY2FyZXQtMi1uLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggMH0udWktaWNvbi1jYXJldC0yLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAwfS51aS1pY29uLXRyaWFuZ2xlLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1uZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjVweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLXN3e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0yLW4tc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0yLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTZweH0udWktaWNvbi1hcnJvdy0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjowIC0zMnB4fS51aS1pY29uLWFycm93LTEtbmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY1cHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTMycHh9LnVpLWljb24tYXJyb3ctMi1uLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTMycHh9LnVpLWljb24tYXJyb3ctMi1uZS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMzJweH0udWktaWNvbi1hcnJvdy0yLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtMzJweH0udWktaWNvbi1hcnJvdy0yLXNlLW53e2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC0zMnB4fS51aS1pY29uLWFycm93c3RvcC0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTMycHh9LnVpLWljb24tYXJyb3dzdG9wLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtMzJweH0udWktaWNvbi1hcnJvd3N0b3AtMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTIyNHB4IC0zMnB4fS51aS1pY29uLWFycm93c3RvcC0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTMycHh9LnVpLWljb24tYXJyb3d0aGljay0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjoxcHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLW5le2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS13e2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLW53e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMi1uLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0yLW5lLXN3e2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0yLXNlLW53e2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMjA4cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTIyNHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtNDhweH0udWktaWNvbi1hcnJvd3JldHVybnRoaWNrLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTY0cHh9LnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybnRoaWNrLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTY0cHh9LnVpLWljb24tYXJyb3dyZXR1cm4tMS13e2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTY0cHh9LnVpLWljb24tYXJyb3dyZXR1cm4tMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTY0cHh9LnVpLWljb24tYXJyb3dyZXR1cm4tMS1le2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTY0cHh9LnVpLWljb24tYXJyb3dyZXR1cm4tMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC02NHB4fS51aS1pY29uLWFycm93cmVmcmVzaC0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTY0cHh9LnVpLWljb24tYXJyb3dyZWZyZXNoLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtNjRweH0udWktaWNvbi1hcnJvd3JlZnJlc2gtMS1le2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC02NHB4fS51aS1pY29uLWFycm93cmVmcmVzaC0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTY0cHh9LnVpLWljb24tYXJyb3ctNHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTgwcHh9LnVpLWljb24tYXJyb3ctNC1kaWFne2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTgwcHh9LnVpLWljb24tZXh0bGlua3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC04MHB4fS51aS1pY29uLW5ld3dpbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC04MHB4fS51aS1pY29uLXJlZnJlc2h7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtODBweH0udWktaWNvbi1zaHVmZmxle2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTgwcHh9LnVpLWljb24tdHJhbnNmZXItZS13e2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTgwcHh9LnVpLWljb24tdHJhbnNmZXJ0aGljay1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTgwcHh9LnVpLWljb24tZm9sZGVyLWNvbGxhcHNlZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTk2cHh9LnVpLWljb24tZm9sZGVyLW9wZW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtOTZweH0udWktaWNvbi1kb2N1bWVudHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC05NnB4fS51aS1pY29uLWRvY3VtZW50LWJ7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtOTZweH0udWktaWNvbi1ub3Rle2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTk2cHh9LnVpLWljb24tbWFpbC1jbG9zZWR7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtOTZweH0udWktaWNvbi1tYWlsLW9wZW57YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtOTZweH0udWktaWNvbi1zdWl0Y2FzZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtOTZweH0udWktaWNvbi1jb21tZW50e2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC05NnB4fS51aS1pY29uLXBlcnNvbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtOTZweH0udWktaWNvbi1wcmludHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtOTZweH0udWktaWNvbi10cmFzaHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtOTZweH0udWktaWNvbi1sb2NrZWR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTk2cHh9LnVpLWljb24tdW5sb2NrZWR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjA4cHggLTk2cHh9LnVpLWljb24tYm9va21hcmt7YmFja2dyb3VuZC1wb3NpdGlvbjotMjI0cHggLTk2cHh9LnVpLWljb24tdGFne2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC05NnB4fS51aS1pY29uLWhvbWV7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xMTJweH0udWktaWNvbi1mbGFne2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTExMnB4fS51aS1pY29uLWNhbGVuZGFye2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTExMnB4fS51aS1pY29uLWNhcnR7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTEycHh9LnVpLWljb24tcGVuY2lse2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTExMnB4fS51aS1pY29uLWNsb2Nre2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTExMnB4fS51aS1pY29uLWRpc2t7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTEycHh9LnVpLWljb24tY2FsY3VsYXRvcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTEycHh9LnVpLWljb24tem9vbWlue2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0xMTJweH0udWktaWNvbi16b29tb3V0e2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xMTJweH0udWktaWNvbi1zZWFyY2h7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTExMnB4fS51aS1pY29uLXdyZW5jaHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtMTEycHh9LnVpLWljb24tZ2VhcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtMTEycHh9LnVpLWljb24taGVhcnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjA4cHggLTExMnB4fS51aS1pY29uLXN0YXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMjI0cHggLTExMnB4fS51aS1pY29uLWxpbmt7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTExMnB4fS51aS1pY29uLWNhbmNlbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTEyOHB4fS51aS1pY29uLXBsdXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTI4cHh9LnVpLWljb24tcGx1c3RoaWNre2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTEyOHB4fS51aS1pY29uLW1pbnVze2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTEyOHB4fS51aS1pY29uLW1pbnVzdGhpY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTI4cHh9LnVpLWljb24tY2xvc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTI4cHh9LnVpLWljb24tY2xvc2V0aGlja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xMjhweH0udWktaWNvbi1rZXl7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTEyOHB4fS51aS1pY29uLWxpZ2h0YnVsYntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTI4cHh9LnVpLWljb24tc2Npc3NvcnN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTEyOHB4fS51aS1pY29uLWNsaXBib2FyZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtMTI4cHh9LnVpLWljb24tY29weXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtMTI4cHh9LnVpLWljb24tY29udGFjdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtMTI4cHh9LnVpLWljb24taW1hZ2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMjA4cHggLTEyOHB4fS51aS1pY29uLXZpZGVve2JhY2tncm91bmQtcG9zaXRpb246LTIyNHB4IC0xMjhweH0udWktaWNvbi1zY3JpcHR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTEyOHB4fS51aS1pY29uLWFsZXJ0e2JhY2tncm91bmQtcG9zaXRpb246MCAtMTQ0cHh9LnVpLWljb24taW5mb3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xNDRweH0udWktaWNvbi1ub3RpY2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTQ0cHh9LnVpLWljb24taGVscHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xNDRweH0udWktaWNvbi1jaGVja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xNDRweH0udWktaWNvbi1idWxsZXR7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTQ0cHh9LnVpLWljb24tcmFkaW8tb257YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTQ0cHh9LnVpLWljb24tcmFkaW8tb2Zme2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xNDRweH0udWktaWNvbi1waW4td3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTQ0cHh9LnVpLWljb24tcGluLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTE0NHB4fS51aS1pY29uLXBsYXl7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xNjBweH0udWktaWNvbi1wYXVzZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xNjBweH0udWktaWNvbi1zZWVrLW5leHR7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTYwcHh9LnVpLWljb24tc2Vlay1wcmV2e2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE2MHB4fS51aS1pY29uLXNlZWstZW5ke2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTE2MHB4fS51aS1pY29uLXNlZWstc3RhcnR7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTYwcHh9LnVpLWljb24tc2Vlay1maXJzdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNjBweH0udWktaWNvbi1zdG9we2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTE2MHB4fS51aS1pY29uLWVqZWN0e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xNjBweH0udWktaWNvbi12b2x1bWUtb2Zme2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0xNjBweH0udWktaWNvbi12b2x1bWUtb257YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTE2MHB4fS51aS1pY29uLXBvd2Vye2JhY2tncm91bmQtcG9zaXRpb246MCAtMTc2cHh9LnVpLWljb24tc2lnbmFsLWRpYWd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTc2cHh9LnVpLWljb24tc2lnbmFse2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTE3NnB4fS51aS1pY29uLWJhdHRlcnktMHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xNzZweH0udWktaWNvbi1iYXR0ZXJ5LTF7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTc2cHh9LnVpLWljb24tYmF0dGVyeS0ye2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE3NnB4fS51aS1pY29uLWJhdHRlcnktM3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xNzZweH0udWktaWNvbi1jaXJjbGUtcGx1c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE5MnB4fS51aS1pY29uLWNpcmNsZS1taW51c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtY2xvc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLW57YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWFycm93LWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1hcnJvdy1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtYXJyb3ctd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWFycm93LW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS16b29taW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS16b29tb3V0e2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtY2hlY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotMjA4cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZXNtYWxsLXBsdXN7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0yMDhweH0udWktaWNvbi1jaXJjbGVzbWFsbC1taW51c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0yMDhweH0udWktaWNvbi1jaXJjbGVzbWFsbC1jbG9zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0yMDhweH0udWktaWNvbi1zcXVhcmVzbWFsbC1wbHVze2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTIwOHB4fS51aS1pY29uLXNxdWFyZXNtYWxsLW1pbnVze2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTIwOHB4fS51aS1pY29uLXNxdWFyZXNtYWxsLWNsb3Nle2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTIwOHB4fS51aS1pY29uLWdyaXAtZG90dGVkLXZlcnRpY2Fse2JhY2tncm91bmQtcG9zaXRpb246MCAtMjI0cHh9LnVpLWljb24tZ3JpcC1kb3R0ZWQtaG9yaXpvbnRhbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0yMjRweH0udWktaWNvbi1ncmlwLXNvbGlkLXZlcnRpY2Fse2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTIyNHB4fS51aS1pY29uLWdyaXAtc29saWQtaG9yaXpvbnRhbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0yMjRweH0udWktaWNvbi1ncmlwc21hbGwtZGlhZ29uYWwtc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMjI0cHh9LnVpLWljb24tZ3JpcC1kaWFnb25hbC1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0yMjRweH0udWktY29ybmVyLWFsbCwudWktY29ybmVyLXRvcCwudWktY29ybmVyLWxlZnQsLnVpLWNvcm5lci10bHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjNweH0udWktY29ybmVyLWFsbCwudWktY29ybmVyLXRvcCwudWktY29ybmVyLXJpZ2h0LC51aS1jb3JuZXItdHJ7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4fS51aS1jb3JuZXItYWxsLC51aS1jb3JuZXItYm90dG9tLC51aS1jb3JuZXItbGVmdCwudWktY29ybmVyLWJse2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6M3B4fS51aS1jb3JuZXItYWxsLC51aS1jb3JuZXItYm90dG9tLC51aS1jb3JuZXItcmlnaHQsLnVpLWNvcm5lci1icntib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czozcHh9LnVpLXdpZGdldC1vdmVybGF5e2JhY2tncm91bmQ6I2FhYTtvcGFjaXR5Oi4wMDM7ZmlsdGVyOkFscGhhKE9wYWNpdHk9LjMpfS51aS13aWRnZXQtc2hhZG93ey13ZWJraXQtYm94LXNoYWRvdzowIDAgNXB4ICM2NjY7Ym94LXNoYWRvdzowIDAgNXB4ICM2NjZ9]]></data>
	</file>
	<file>
	  <filename>/css/jquery-ui.structure.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIGpRdWVyeSBVSSBDU1MgRnJhbWV3b3JrIDEuMTIuMC1yYy4yCiAqIGh0dHA6Ly9qcXVlcnl1aS5jb20KICoKICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMKICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAqCiAqIGh0dHA6Ly9hcGkuanF1ZXJ5dWkuY29tL2NhdGVnb3J5L3RoZW1pbmcvCiAqLwovKiBMYXlvdXQgaGVscGVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLnVpLWhlbHBlci1oaWRkZW4gewoJZGlzcGxheTogbm9uZTsKfQoudWktaGVscGVyLWhpZGRlbi1hY2Nlc3NpYmxlIHsKCWJvcmRlcjogMDsKCWNsaXA6IHJlY3QoMCAwIDAgMCk7CgloZWlnaHQ6IDFweDsKCW1hcmdpbjogLTFweDsKCW92ZXJmbG93OiBoaWRkZW47CglwYWRkaW5nOiAwOwoJcG9zaXRpb246IGFic29sdXRlOwoJd2lkdGg6IDFweDsKfQoudWktaGVscGVyLXJlc2V0IHsKCW1hcmdpbjogMDsKCXBhZGRpbmc6IDA7Cglib3JkZXI6IDA7CglvdXRsaW5lOiAwOwoJbGluZS1oZWlnaHQ6IDEuMzsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWZvbnQtc2l6ZTogMTAwJTsKCWxpc3Qtc3R5bGU6IG5vbmU7Cn0KLnVpLWhlbHBlci1jbGVhcmZpeDpiZWZvcmUsCi51aS1oZWxwZXItY2xlYXJmaXg6YWZ0ZXIgewoJY29udGVudDogIiI7CglkaXNwbGF5OiB0YWJsZTsKCWJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Cn0KLnVpLWhlbHBlci1jbGVhcmZpeDphZnRlciB7CgljbGVhcjogYm90aDsKfQoudWktaGVscGVyLXpmaXggewoJd2lkdGg6IDEwMCU7CgloZWlnaHQ6IDEwMCU7Cgl0b3A6IDA7CglsZWZ0OiAwOwoJcG9zaXRpb246IGFic29sdXRlOwoJb3BhY2l0eTogMDsKCWZpbHRlcjpBbHBoYShPcGFjaXR5PTApOyAvKiBzdXBwb3J0OiBJRTggKi8KfQoKLnVpLWZyb250IHsKCXotaW5kZXg6IDEwMDsKfQoKCi8qIEludGVyYWN0aW9uIEN1ZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi51aS1zdGF0ZS1kaXNhYmxlZCB7CgljdXJzb3I6IGRlZmF1bHQgIWltcG9ydGFudDsKCXBvaW50ZXItZXZlbnRzOiBub25lOwp9CgoKLyogSWNvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi51aS1pY29uIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CgltYXJnaW4tdG9wOiAtLjI1ZW07Cglwb3NpdGlvbjogcmVsYXRpdmU7Cgl0ZXh0LWluZGVudDogLTk5OTk5cHg7CglvdmVyZmxvdzogaGlkZGVuOwoJYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKfQoKLnVpLXdpZGdldC1pY29uLWJsb2NrIHsKCWxlZnQ6IDUwJTsKCW1hcmdpbi1sZWZ0OiAtOHB4OwoJZGlzcGxheTogYmxvY2s7Cn0KCi8qIE1pc2MgdmlzdWFscwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8qIE92ZXJsYXlzICovCi51aS13aWRnZXQtb3ZlcmxheSB7Cglwb3NpdGlvbjogZml4ZWQ7Cgl0b3A6IDA7CglsZWZ0OiAwOwoJd2lkdGg6IDEwMCU7CgloZWlnaHQ6IDEwMCU7Cn0KLnVpLWFjY29yZGlvbiAudWktYWNjb3JkaW9uLWhlYWRlciB7CglkaXNwbGF5OiBibG9jazsKCWN1cnNvcjogcG9pbnRlcjsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCW1hcmdpbjogMnB4IDAgMCAwOwoJcGFkZGluZzogLjVlbSAuNWVtIC41ZW0gLjdlbTsKCWZvbnQtc2l6ZTogMTAwJTsKfQoudWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24tY29udGVudCB7CglwYWRkaW5nOiAxZW0gMi4yZW07Cglib3JkZXItdG9wOiAwOwoJb3ZlcmZsb3c6IGF1dG87Cn0KLnVpLWF1dG9jb21wbGV0ZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglsZWZ0OiAwOwoJY3Vyc29yOiBkZWZhdWx0Owp9Ci51aS1tZW51IHsKCWxpc3Qtc3R5bGU6IG5vbmU7CglwYWRkaW5nOiAwOwoJbWFyZ2luOiAwOwoJZGlzcGxheTogYmxvY2s7CglvdXRsaW5lOiAwOwp9Ci51aS1tZW51IC51aS1tZW51IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKfQoudWktbWVudSAudWktbWVudS1pdGVtIHsKCW1hcmdpbjogMDsKCWN1cnNvcjogcG9pbnRlcjsKCS8qIHN1cHBvcnQ6IElFMTAsIHNlZSAjODg0NCAqLwoJbGlzdC1zdHlsZS1pbWFnZTogdXJsKCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBQUFBUC8vL3lINUJBRUFBQUFBTEFBQUFBQUJBQUVBQUFJQlJBQTciKTsKfQoudWktbWVudSAudWktbWVudS1pdGVtLXdyYXBwZXIgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJcGFkZGluZzogM3B4IDFlbSAzcHggLjRlbTsKfQoudWktbWVudSAudWktbWVudS1kaXZpZGVyIHsKCW1hcmdpbjogNXB4IDA7CgloZWlnaHQ6IDA7Cglmb250LXNpemU6IDA7CglsaW5lLWhlaWdodDogMDsKCWJvcmRlci13aWR0aDogMXB4IDAgMCAwOwp9Ci51aS1tZW51IC51aS1zdGF0ZS1mb2N1cywKLnVpLW1lbnUgLnVpLXN0YXRlLWFjdGl2ZSB7CgltYXJnaW46IC0xcHg7Cn0KCi8qIGljb24gc3VwcG9ydCAqLwoudWktbWVudS1pY29ucyB7Cglwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLnVpLW1lbnUtaWNvbnMgLnVpLW1lbnUtaXRlbS13cmFwcGVyIHsKCXBhZGRpbmctbGVmdDogMmVtOwp9CgovKiBsZWZ0LWFsaWduZWQgKi8KLnVpLW1lbnUgLnVpLWljb24gewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJYm90dG9tOiAwOwoJbGVmdDogLjJlbTsKCW1hcmdpbjogYXV0byAwOwp9CgovKiByaWdodC1hbGlnbmVkICovCi51aS1tZW51IC51aS1tZW51LWljb24gewoJbGVmdDogYXV0bzsKCXJpZ2h0OiAwOwp9Ci51aS1idXR0b24gewoJcGFkZGluZzogLjRlbSAxZW07CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglsaW5lLWhlaWdodDogbm9ybWFsOwoJbWFyZ2luLXJpZ2h0OiAuMWVtOwoJY3Vyc29yOiBwb2ludGVyOwoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCS13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CgktbW96LXVzZXItc2VsZWN0OiBub25lOwoJLW1zLXVzZXItc2VsZWN0OiBub25lOwoJdXNlci1zZWxlY3Q6IG5vbmU7CgoJLyogU3VwcG9ydDogSUUgPD0gMTEgKi8KCW92ZXJmbG93OiB2aXNpYmxlOwp9CgoudWktYnV0dG9uLAoudWktYnV0dG9uOmxpbmssCi51aS1idXR0b246dmlzaXRlZCwKLnVpLWJ1dHRvbjpob3ZlciwKLnVpLWJ1dHRvbjphY3RpdmUgewoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgovKiB0byBtYWtlIHJvb20gZm9yIHRoZSBpY29uLCBhIHdpZHRoIG5lZWRzIHRvIGJlIHNldCBoZXJlICovCi51aS1idXR0b24taWNvbi1vbmx5IHsKCXdpZHRoOiAyZW07Cglib3gtc2l6aW5nOiBib3JkZXItYm94OwoJdGV4dC1pbmRlbnQ6IC05OTk5cHg7Cgl3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgovKiBubyBpY29uIHN1cHBvcnQgZm9yIGlucHV0IGVsZW1lbnRzICovCmlucHV0LnVpLWJ1dHRvbi51aS1idXR0b24taWNvbi1vbmx5IHsKCXRleHQtaW5kZW50OiAwOwp9CgovKiBidXR0b24gaWNvbiBlbGVtZW50KHMpICovCi51aS1idXR0b24taWNvbi1vbmx5IC51aS1pY29uIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXRvcDogNTAlOwoJbGVmdDogNTAlOwoJbWFyZ2luLXRvcDogLThweDsKCW1hcmdpbi1sZWZ0OiAtOHB4Owp9CgoudWktYnV0dG9uLnVpLWljb24tbm90ZXh0IC51aS1pY29uIHsKCXBhZGRpbmc6IDA7Cgl3aWR0aDogMi4xZW07CgloZWlnaHQ6IDIuMWVtOwoJdGV4dC1pbmRlbnQ6IC05OTk5cHg7Cgl3aGl0ZS1zcGFjZTogbm93cmFwOwoKfQoKaW5wdXQudWktYnV0dG9uLnVpLWljb24tbm90ZXh0IC51aS1pY29uIHsKCXdpZHRoOiBhdXRvOwoJaGVpZ2h0OiBhdXRvOwoJdGV4dC1pbmRlbnQ6IDA7Cgl3aGl0ZS1zcGFjZTogbm9ybWFsOwoJcGFkZGluZzogLjRlbSAxZW07Cn0KCi8qIHdvcmthcm91bmRzICovCi8qIFN1cHBvcnQ6IEZpcmVmb3ggNSAtIDQwICovCmlucHV0LnVpLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwKYnV0dG9uLnVpLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciB7Cglib3JkZXI6IDA7CglwYWRkaW5nOiAwOwp9Ci51aS1jb250cm9sZ3JvdXAgewoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoudWktY29udHJvbGdyb3VwID4gLnVpLWNvbnRyb2xncm91cC1pdGVtIHsKCWZsb2F0OiBsZWZ0OwoJbWFyZ2luLWxlZnQ6IDA7CgltYXJnaW4tcmlnaHQ6IDA7Cn0KLnVpLWNvbnRyb2xncm91cCA+IC51aS1jb250cm9sZ3JvdXAtaXRlbTpmb2N1cywKLnVpLWNvbnRyb2xncm91cCA+IC51aS1jb250cm9sZ3JvdXAtaXRlbS51aS12aXN1YWwtZm9jdXMgewoJei1pbmRleDogOTk5OTsKfQoudWktY29udHJvbGdyb3VwLXZlcnRpY2FsID4gLnVpLWNvbnRyb2xncm91cC1pdGVtIHsKCWRpc3BsYXk6IGJsb2NrOwoJZmxvYXQ6IG5vbmU7Cgl3aWR0aDogMTAwJTsKCW1hcmdpbi10b3A6IDA7CgltYXJnaW4tYm90dG9tOiAwOwoJdGV4dC1hbGlnbjogbGVmdDsKfQoudWktY29udHJvbGdyb3VwLXZlcnRpY2FsIC51aS1jb250cm9sZ3JvdXAtaXRlbSB7Cglib3gtc2l6aW5nOiBib3JkZXItYm94Owp9Ci51aS1jb250cm9sZ3JvdXAgLnVpLWNvbnRyb2xncm91cC1sYWJlbCB7CglwYWRkaW5nOiAuNGVtIDFlbTsKfQoudWktY29udHJvbGdyb3VwIC51aS1jb250cm9sZ3JvdXAtbGFiZWwgc3BhbiB7Cglmb250LXNpemU6IDgwJTsKfQoudWktY29udHJvbGdyb3VwLWhvcml6b250YWwgLnVpLWNvbnRyb2xncm91cC1sYWJlbCArIC51aS1jb250cm9sZ3JvdXAtaXRlbSB7Cglib3JkZXItbGVmdDogbm9uZTsKfQoudWktY29udHJvbGdyb3VwLXZlcnRpY2FsIC51aS1jb250cm9sZ3JvdXAtbGFiZWwgKyAudWktY29udHJvbGdyb3VwLWl0ZW0gewoJYm9yZGVyLXRvcDogbm9uZTsKfQoudWktY29udHJvbGdyb3VwLWhvcml6b250YWwgLnVpLWNvbnRyb2xncm91cC1sYWJlbC51aS13aWRnZXQtY29udGVudCB7Cglib3JkZXItcmlnaHQ6IG5vbmU7Cn0KLnVpLWNvbnRyb2xncm91cC12ZXJ0aWNhbCAudWktY29udHJvbGdyb3VwLWxhYmVsLnVpLXdpZGdldC1jb250ZW50IHsKCWJvcmRlci1ib3R0b206IG5vbmU7Cn0KCi8qIFNwaW5uZXIgc3BlY2lmaWMgc3R5bGUgZml4ZXMgKi8KLnVpLWNvbnRyb2xncm91cC12ZXJ0aWNhbCAudWktc3Bpbm5lci1pbnB1dCB7CgoJLyogU3VwcG9ydDogSUU4IG9ubHksIEFuZHJvaWQgPCA0LjQgb25seSAqLwoJd2lkdGg6IDc1JTsKCXdpZHRoOiBjYWxjKCAxMDAlIC0gMi40ZW0gKTsKfQoudWktY29udHJvbGdyb3VwLXZlcnRpY2FsIC51aS1zcGlubmVyIC51aS1zcGlubmVyLXVwIHsKCWJvcmRlci10b3Atc3R5bGU6IHNvbGlkOwp9CgoudWktY2hlY2tib3hyYWRpby1sYWJlbCAudWktaWNvbi1iYWNrZ3JvdW5kIHsKCWJveC1zaGFkb3c6IGluc2V0IDFweCAxcHggMXB4ICNjY2M7Cglib3JkZXItcmFkaXVzOiAuMTJlbTsKCWJvcmRlcjogbm9uZTsKfQoudWktY2hlY2tib3hyYWRpby1yYWRpby1sYWJlbCAudWktaWNvbi1iYWNrZ3JvdW5kIHsKCXdpZHRoOiAxNnB4OwoJaGVpZ2h0OiAxNnB4OwoJYm9yZGVyLXJhZGl1czogMWVtOwoJb3ZlcmZsb3c6IHZpc2libGU7Cglib3JkZXI6IG5vbmU7Cn0KLnVpLWNoZWNrYm94cmFkaW8tcmFkaW8tbGFiZWwudWktY2hlY2tib3hyYWRpby1jaGVja2VkIC51aS1pY29uLAoudWktY2hlY2tib3hyYWRpby1yYWRpby1sYWJlbC51aS1jaGVja2JveHJhZGlvLWNoZWNrZWQ6aG92ZXIgLnVpLWljb24gewoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKCXdpZHRoOiA4cHg7CgloZWlnaHQ6IDhweDsKCWJvcmRlci13aWR0aDogNHB4OwoJYm9yZGVyLXN0eWxlOiBzb2xpZDsKfQoudWktY2hlY2tib3hyYWRpby1kaXNhYmxlZCB7Cglwb2ludGVyLWV2ZW50czogbm9uZTsKfQoudWktZGF0ZXBpY2tlciB7Cgl3aWR0aDogMTdlbTsKCXBhZGRpbmc6IC4yZW0gLjJlbSAwOwoJZGlzcGxheTogbm9uZTsKfQoudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1oZWFkZXIgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJcGFkZGluZzogLjJlbSAwOwp9Ci51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXYsCi51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLW5leHQgewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAycHg7Cgl3aWR0aDogMS44ZW07CgloZWlnaHQ6IDEuOGVtOwp9Ci51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXYtaG92ZXIsCi51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLW5leHQtaG92ZXIgewoJdG9wOiAxcHg7Cn0KLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItcHJldiB7CglsZWZ0OiAycHg7Cn0KLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dCB7CglyaWdodDogMnB4Owp9Ci51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXYtaG92ZXIgewoJbGVmdDogMXB4Owp9Ci51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLW5leHQtaG92ZXIgewoJcmlnaHQ6IDFweDsKfQoudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1wcmV2IHNwYW4sCi51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLW5leHQgc3BhbiB7CglkaXNwbGF5OiBibG9jazsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCWxlZnQ6IDUwJTsKCW1hcmdpbi1sZWZ0OiAtOHB4OwoJdG9wOiA1MCU7CgltYXJnaW4tdG9wOiAtOHB4Owp9Ci51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXRpdGxlIHsKCW1hcmdpbjogMCAyLjNlbTsKCWxpbmUtaGVpZ2h0OiAxLjhlbTsKCXRleHQtYWxpZ246IGNlbnRlcjsKfQoudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci10aXRsZSBzZWxlY3QgewoJZm9udC1zaXplOiAxZW07CgltYXJnaW46IDFweCAwOwp9Ci51aS1kYXRlcGlja2VyIHNlbGVjdC51aS1kYXRlcGlja2VyLW1vbnRoLAoudWktZGF0ZXBpY2tlciBzZWxlY3QudWktZGF0ZXBpY2tlci15ZWFyIHsKCXdpZHRoOiA0NSU7Cn0KLnVpLWRhdGVwaWNrZXIgdGFibGUgewoJd2lkdGg6IDEwMCU7Cglmb250LXNpemU6IC45ZW07Cglib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJbWFyZ2luOiAwIDAgLjRlbTsKfQoudWktZGF0ZXBpY2tlciB0aCB7CglwYWRkaW5nOiAuN2VtIC4zZW07Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cglmb250LXdlaWdodDogYm9sZDsKCWJvcmRlcjogMDsKfQoudWktZGF0ZXBpY2tlciB0ZCB7Cglib3JkZXI6IDA7CglwYWRkaW5nOiAxcHg7Cn0KLnVpLWRhdGVwaWNrZXIgdGQgc3BhbiwKLnVpLWRhdGVwaWNrZXIgdGQgYSB7CglkaXNwbGF5OiBibG9jazsKCXBhZGRpbmc6IC4yZW07Cgl0ZXh0LWFsaWduOiByaWdodDsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1idXR0b25wYW5lIHsKCWJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CgltYXJnaW46IC43ZW0gMCAwIDA7CglwYWRkaW5nOiAwIC4yZW07Cglib3JkZXItbGVmdDogMDsKCWJvcmRlci1yaWdodDogMDsKCWJvcmRlci1ib3R0b206IDA7Cn0KLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSBidXR0b24gewoJZmxvYXQ6IHJpZ2h0OwoJbWFyZ2luOiAuNWVtIC4yZW0gLjRlbTsKCWN1cnNvcjogcG9pbnRlcjsKCXBhZGRpbmc6IC4yZW0gLjZlbSAuM2VtIC42ZW07Cgl3aWR0aDogYXV0bzsKCW92ZXJmbG93OiB2aXNpYmxlOwp9Ci51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgYnV0dG9uLnVpLWRhdGVwaWNrZXItY3VycmVudCB7CglmbG9hdDogbGVmdDsKfQoKLyogd2l0aCBtdWx0aXBsZSBjYWxlbmRhcnMgKi8KLnVpLWRhdGVwaWNrZXIudWktZGF0ZXBpY2tlci1tdWx0aSB7Cgl3aWR0aDogYXV0bzsKfQoudWktZGF0ZXBpY2tlci1tdWx0aSAudWktZGF0ZXBpY2tlci1ncm91cCB7CglmbG9hdDogbGVmdDsKfQoudWktZGF0ZXBpY2tlci1tdWx0aSAudWktZGF0ZXBpY2tlci1ncm91cCB0YWJsZSB7Cgl3aWR0aDogOTUlOwoJbWFyZ2luOiAwIGF1dG8gLjRlbTsKfQoudWktZGF0ZXBpY2tlci1tdWx0aS0yIC51aS1kYXRlcGlja2VyLWdyb3VwIHsKCXdpZHRoOiA1MCU7Cn0KLnVpLWRhdGVwaWNrZXItbXVsdGktMyAudWktZGF0ZXBpY2tlci1ncm91cCB7Cgl3aWR0aDogMzMuMyU7Cn0KLnVpLWRhdGVwaWNrZXItbXVsdGktNCAudWktZGF0ZXBpY2tlci1ncm91cCB7Cgl3aWR0aDogMjUlOwp9Ci51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2VyLWdyb3VwLWxhc3QgLnVpLWRhdGVwaWNrZXItaGVhZGVyLAoudWktZGF0ZXBpY2tlci1tdWx0aSAudWktZGF0ZXBpY2tlci1ncm91cC1taWRkbGUgLnVpLWRhdGVwaWNrZXItaGVhZGVyIHsKCWJvcmRlci1sZWZ0LXdpZHRoOiAwOwp9Ci51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgewoJY2xlYXI6IGxlZnQ7Cn0KLnVpLWRhdGVwaWNrZXItcm93LWJyZWFrIHsKCWNsZWFyOiBib3RoOwoJd2lkdGg6IDEwMCU7Cglmb250LXNpemU6IDA7Cn0KCi8qIFJUTCBzdXBwb3J0ICovCi51aS1kYXRlcGlja2VyLXJ0bCB7CglkaXJlY3Rpb246IHJ0bDsKfQoudWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItcHJldiB7CglyaWdodDogMnB4OwoJbGVmdDogYXV0bzsKfQoudWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItbmV4dCB7CglsZWZ0OiAycHg7CglyaWdodDogYXV0bzsKfQoudWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItcHJldjpob3ZlciB7CglyaWdodDogMXB4OwoJbGVmdDogYXV0bzsKfQoudWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItbmV4dDpob3ZlciB7CglsZWZ0OiAxcHg7CglyaWdodDogYXV0bzsKfQoudWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSB7CgljbGVhcjogcmlnaHQ7Cn0KLnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgYnV0dG9uIHsKCWZsb2F0OiBsZWZ0Owp9Ci51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1idXR0b25wYW5lIGJ1dHRvbi51aS1kYXRlcGlja2VyLWN1cnJlbnQsCi51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1ncm91cCB7CglmbG9hdDogcmlnaHQ7Cn0KLnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLWdyb3VwLWxhc3QgLnVpLWRhdGVwaWNrZXItaGVhZGVyLAoudWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItZ3JvdXAtbWlkZGxlIC51aS1kYXRlcGlja2VyLWhlYWRlciB7Cglib3JkZXItcmlnaHQtd2lkdGg6IDA7Cglib3JkZXItbGVmdC13aWR0aDogMXB4Owp9CgovKiBJY29ucyAqLwoudWktZGF0ZXBpY2tlciAudWktaWNvbiB7CglkaXNwbGF5OiBibG9jazsKCXRleHQtaW5kZW50OiAtOTk5OTlweDsKCW92ZXJmbG93OiBoaWRkZW47CgliYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwoJbGVmdDogLjVlbTsKCXRvcDogLjNlbTsKfQoudWktZGlhbG9nIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXRvcDogMDsKCWxlZnQ6IDA7CglwYWRkaW5nOiAuMmVtOwoJb3V0bGluZTogMDsKfQoudWktZGlhbG9nIC51aS1kaWFsb2ctdGl0bGViYXIgewoJcGFkZGluZzogLjRlbSAxZW07Cglwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLnVpLWRpYWxvZyAudWktZGlhbG9nLXRpdGxlIHsKCWZsb2F0OiBsZWZ0OwoJbWFyZ2luOiAuMWVtIDA7Cgl3aGl0ZS1zcGFjZTogbm93cmFwOwoJd2lkdGg6IDkwJTsKCW92ZXJmbG93OiBoaWRkZW47Cgl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKfQoudWktZGlhbG9nIC51aS1kaWFsb2ctdGl0bGViYXItY2xvc2UgewoJcG9zaXRpb246IGFic29sdXRlOwoJcmlnaHQ6IC4zZW07Cgl0b3A6IDUwJTsKCXdpZHRoOiAyMHB4OwoJbWFyZ2luOiAtMTBweCAwIDAgMDsKCXBhZGRpbmc6IDFweDsKCWhlaWdodDogMjBweDsKfQoudWktZGlhbG9nIC51aS1kaWFsb2ctY29udGVudCB7Cglwb3NpdGlvbjogcmVsYXRpdmU7Cglib3JkZXI6IDA7CglwYWRkaW5nOiAuNWVtIDFlbTsKCWJhY2tncm91bmQ6IG5vbmU7CglvdmVyZmxvdzogYXV0bzsKfQoudWktZGlhbG9nIC51aS1kaWFsb2ctYnV0dG9ucGFuZSB7Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJYm9yZGVyLXdpZHRoOiAxcHggMCAwIDA7CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwoJbWFyZ2luLXRvcDogLjVlbTsKCXBhZGRpbmc6IC4zZW0gMWVtIC41ZW0gLjRlbTsKfQoudWktZGlhbG9nIC51aS1kaWFsb2ctYnV0dG9ucGFuZSAudWktZGlhbG9nLWJ1dHRvbnNldCB7CglmbG9hdDogcmlnaHQ7Cn0KLnVpLWRpYWxvZyAudWktZGlhbG9nLWJ1dHRvbnBhbmUgYnV0dG9uIHsKCW1hcmdpbjogLjVlbSAuNGVtIC41ZW0gMDsKCWN1cnNvcjogcG9pbnRlcjsKfQoudWktZGlhbG9nIC51aS1yZXNpemFibGUtbiB7CgloZWlnaHQ6IDJweDsKCXRvcDogMDsKfQoudWktZGlhbG9nIC51aS1yZXNpemFibGUtZSB7Cgl3aWR0aDogMnB4OwoJcmlnaHQ6IDA7Cn0KLnVpLWRpYWxvZyAudWktcmVzaXphYmxlLXMgewoJaGVpZ2h0OiAycHg7Cglib3R0b206IDA7Cn0KLnVpLWRpYWxvZyAudWktcmVzaXphYmxlLXcgewoJd2lkdGg6IDJweDsKCWxlZnQ6IDA7Cn0KLnVpLWRpYWxvZyAudWktcmVzaXphYmxlLXNlLAoudWktZGlhbG9nIC51aS1yZXNpemFibGUtc3csCi51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1uZSwKLnVpLWRpYWxvZyAudWktcmVzaXphYmxlLW53IHsKCXdpZHRoOiA3cHg7CgloZWlnaHQ6IDdweDsKfQoudWktZGlhbG9nIC51aS1yZXNpemFibGUtc2UgewoJcmlnaHQ6IDA7Cglib3R0b206IDA7Cn0KLnVpLWRpYWxvZyAudWktcmVzaXphYmxlLXN3IHsKCWxlZnQ6IDA7Cglib3R0b206IDA7Cn0KLnVpLWRpYWxvZyAudWktcmVzaXphYmxlLW5lIHsKCXJpZ2h0OiAwOwoJdG9wOiAwOwp9Ci51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1udyB7CglsZWZ0OiAwOwoJdG9wOiAwOwp9Ci51aS1kcmFnZ2FibGUgLnVpLWRpYWxvZy10aXRsZWJhciB7CgljdXJzb3I6IG1vdmU7Cn0KLnVpLWRyYWdnYWJsZS1oYW5kbGUgewoJLW1zLXRvdWNoLWFjdGlvbjogbm9uZTsKCXRvdWNoLWFjdGlvbjogbm9uZTsKfQoudWktcmVzaXphYmxlIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKfQoudWktcmVzaXphYmxlLWhhbmRsZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cglmb250LXNpemU6IDAuMXB4OwoJZGlzcGxheTogYmxvY2s7CgktbXMtdG91Y2gtYWN0aW9uOiBub25lOwoJdG91Y2gtYWN0aW9uOiBub25lOwp9Ci51aS1yZXNpemFibGUtZGlzYWJsZWQgLnVpLXJlc2l6YWJsZS1oYW5kbGUsCi51aS1yZXNpemFibGUtYXV0b2hpZGUgLnVpLXJlc2l6YWJsZS1oYW5kbGUgewoJZGlzcGxheTogbm9uZTsKfQoudWktcmVzaXphYmxlLW4gewoJY3Vyc29yOiBuLXJlc2l6ZTsKCWhlaWdodDogN3B4OwoJd2lkdGg6IDEwMCU7Cgl0b3A6IC01cHg7CglsZWZ0OiAwOwp9Ci51aS1yZXNpemFibGUtcyB7CgljdXJzb3I6IHMtcmVzaXplOwoJaGVpZ2h0OiA3cHg7Cgl3aWR0aDogMTAwJTsKCWJvdHRvbTogLTVweDsKCWxlZnQ6IDA7Cn0KLnVpLXJlc2l6YWJsZS1lIHsKCWN1cnNvcjogZS1yZXNpemU7Cgl3aWR0aDogN3B4OwoJcmlnaHQ6IC01cHg7Cgl0b3A6IDA7CgloZWlnaHQ6IDEwMCU7Cn0KLnVpLXJlc2l6YWJsZS13IHsKCWN1cnNvcjogdy1yZXNpemU7Cgl3aWR0aDogN3B4OwoJbGVmdDogLTVweDsKCXRvcDogMDsKCWhlaWdodDogMTAwJTsKfQoudWktcmVzaXphYmxlLXNlIHsKCWN1cnNvcjogc2UtcmVzaXplOwoJd2lkdGg6IDEycHg7CgloZWlnaHQ6IDEycHg7CglyaWdodDogMXB4OwoJYm90dG9tOiAxcHg7Cn0KLnVpLXJlc2l6YWJsZS1zdyB7CgljdXJzb3I6IHN3LXJlc2l6ZTsKCXdpZHRoOiA5cHg7CgloZWlnaHQ6IDlweDsKCWxlZnQ6IC01cHg7Cglib3R0b206IC01cHg7Cn0KLnVpLXJlc2l6YWJsZS1udyB7CgljdXJzb3I6IG53LXJlc2l6ZTsKCXdpZHRoOiA5cHg7CgloZWlnaHQ6IDlweDsKCWxlZnQ6IC01cHg7Cgl0b3A6IC01cHg7Cn0KLnVpLXJlc2l6YWJsZS1uZSB7CgljdXJzb3I6IG5lLXJlc2l6ZTsKCXdpZHRoOiA5cHg7CgloZWlnaHQ6IDlweDsKCXJpZ2h0OiAtNXB4OwoJdG9wOiAtNXB4Owp9Ci51aS1wcm9ncmVzc2JhciB7CgloZWlnaHQ6IDJlbTsKCXRleHQtYWxpZ246IGxlZnQ7CglvdmVyZmxvdzogaGlkZGVuOwp9Ci51aS1wcm9ncmVzc2JhciAudWktcHJvZ3Jlc3NiYXItdmFsdWUgewoJbWFyZ2luOiAtMXB4OwoJaGVpZ2h0OiAxMDAlOwp9Ci51aS1wcm9ncmVzc2JhciAudWktcHJvZ3Jlc3NiYXItb3ZlcmxheSB7CgliYWNrZ3JvdW5kOiB1cmwoImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEtBQW9BSUFCQUFBQUFQLy8veUgvQzA1RlZGTkRRVkJGTWk0d0F3RUFBQUFoK1FRSkFRQUJBQ3dBQUFBQUtBQW9BQUFDa1l3TnFYcmRDNTJEUzA2YTdNRlpJKzRGSEJDS29EZVdLWHF5bVBxR3F4dkpyWFpiTXg3VHRjK3c5WGdVMkZCM2xPeVFSV0VUMklGR2lVOW0xZnJEVnB4WlpjNmJmSHd2NGMxWVhQNmsxVmR5MjkyRmI2VWt1dkZ0WHB2V1N6QStIeWNYSkhVWGlHWUlpTWcyUjZXNDU5Z25XR2ZITmRqSXFEV1ZxZW1IMmVrcE9ia3BPbHBwV1VxWmlxcjZlZHFxV1FBQUlma0VDUUVBQVFBc0FBQUFBQ2dBS0FBQUFwU01nWm5HZmFxY2cxRTJ1dXpEbW1IVUJSOFFpbDk1aGlQS3FXbjNhcXRMc1MxOHk3RzFTek5lb3dXQkVOdFFkK1QxSmt0UDA1bnpQVGRKWmxSNnZVeE5XV2pWK3ZVV2hXTmtXRnd4bDlWcFpSZWRZY2ZsSU9MYWZhYTI4WGRzSC95bmxjYzF1UFZEWnhRSVIwSzI1K2NJQ0Ntb3FDZTVtR2haT2ZlWVNVaDV5SmNKeXJrWldXcGFSOGRvSjJvNE5ZcTYybEFBQUNINUJBa0JBQUVBTEFBQUFBQW9BQ2dBQUFLVkRJNFl5MjJabklOUk5xb3N3MEJ2N2kxZ3lIVWtGajdvU2FXbHUzb3ZDOEd4TnNvNWZsdXozcUxWaEJWZVQvTHo3WlRIeXhMNWREYWxRV1BWT3NRV3RSbnV3WGFGVGo5alZWaDhwbWE5SmpaNHpZU2o1Wk95bWE3dXVvbGZmaCtJUjVhVzk3Y0h1QlVYS0dLWGxLam4rRGlIV01jWUphaDROMGxZQ01sSk9YaXBHUnI1cWRnb1NUcnFXU3E2V0ZsMnlwb2FVQUFBSWZrRUNRRUFBUUFzQUFBQUFDZ0FLQUFBQXBhRWI2SExnZC9pTzdGTld0Y0ZXZSt1Zk9ER2pSZm9pSjJha1NoYnVlYjB3dEk1MHptMDJwYnZ3ZldFTVdCUTF6S0dsTEloc2tpRVBtOVI2dlJYeFY0WnpXVDJ5SE9HcFdNeW9yYmxLbE5wOEhtSEViL2xDWGpjVzdibXRYUDhYdDIyOU9WV1IxZm9kMmVXcU5mSHVNalhDUGtJR05pbGVPaUltVm1DT0Vtb1NmbjN5WGxKV21vSEdocXA2aWxZdVdZcG1UcUtVZ0FBSWZrRUNRRUFBUUFzQUFBQUFDZ0FLQUFBQXBpRUg2a2I1OGJpUTNGTld0TUZXVzNlTlZjb2p1RkdmcW5acVNlYnVTMDZ3NVY4MC9YMDJwS2U4ekZ3UDZFRldPVDFsREZrOHJHRVJoMVRUTk9vY1E2MUhtNFhtMlZleFVIcHpqeW1WaUhyRmJpRUxzZWZWcm42WEtmbnQyUTlHLytYZGllNDk5WEhkMmc0aDdpb09HaFhHSmJvR0FuWFNCbm9Cd0tZeWZpb3ViWkoySG4wUnVSWmFmbFpPaWw1NlpwNmlpb0tTWHBVQUFBaCtRUUpBUUFCQUN3QUFBQUFLQUFvQUFBQ2tvUVJxUnZueHVJN2tVMWExVVU1YmQ1dG5TZU9aWGhtbjVsV0szcU5UV3ZSZFF4UDhxdmFDKy95YVlRelhPN0JNdmFVRW1KUmQzVHNpTUFnc3dtTllyU2daZFlyVFg2dFNIR1pPNzNlenVBdzJ1eHVRK0JiZVpmTXhzZXhZMzUrL1FlNEoxaW5WMGc0eDNXSHVNaElsMmpYT0tUMlErVlU1ZmdvU1VJNTJWZlp5ZmtKR2toYTZqbVkrYWFZZGlycStsUUFBQ0g1QkFrQkFBRUFMQUFBQUFBb0FDZ0FBQUtXQklLcFllMEwzWU5LVG9xc3dVbHZ6bmlnZDR3aVI0S2hackt0OVVwcWlwNjFpOUUzdk12eFJkSGxiRUZpRVhmazlZQVJZeE9aWkQ2VlEycFV1bkJtdFJYbzFMZjhoTVZWY05sOEphZlYzOGFNMi9GdTVWMTZCbjYzcjZ4dDk3ajA5K01YU0ZpNEJuaUdGYWUzaHpiSDkraFlCemtwdVVoNWFabUh1YW5aT1pnSXV2YkdpTmVvbUNuYXh4YXAydXBhQ1pzcSsxa0FBQ0g1QkFrQkFBRUFMQUFBQUFBb0FDZ0FBQUtYakk4Qnk1emY0a094VFZyWE5WbHYxWDBkOElHWkdLTG5OcFl0bThMcjljcVZldU9TdmZPVzc5RDlhREhpek5oREppZEZaaE55ZEVhaE9hREg2bm9tdEpqcDF0dXRLb05Xa3ZBNkpxZlJWTEhVL1FVZmF1OWwyeDdHNTRkMWZsOTk1eGNJR0FkWHFNZkJOYWRvWXJoSCtNZzJLQmxwVnBibHVDaVhtTW5aMlNoNEdCcUorY2tJT3FxSjZMbUtTbGxabXNvcTZ3cFFBQUFoK1FRSkFRQUJBQ3dBQUFBQUtBQW9BQUFDbFl4L29Mdm94dUpEa1UxYTFZVVpiSjU5blNkMlpYaFdxYlJhMi9nRjhHdTJEWTNpcXM3eXJxK3hCWUVrWXZGU004YVNTT2JFK1pnUmwxQkhGWk5yN3BSQ2F2WjVCVzIxNDJoWTNBTi96V3RzbWYxMnA5WHh4RmwybHBMbjFyc2V6dGZYWmpkSVdJZjJzNWRJdHdqWUtCZ285eWc1cEhnekpYVEVlR2xadWVucHlQbXBHUW9LT1drWW1TcGFTbnFLaWxlSTJGQUFBQ0g1QkFrQkFBRUFMQUFBQUFBb0FDZ0FBQUtWakIrZ3Urakc0a09SVFZyVmhSbHNubjJkSjNabGVGYXB0RnJiK0NYbU85T296ZUw1VmZQOTlIdkFXaHBpVWRjd2twQkgzODI1QXdZZFU4eFRxbExHaHRDb3NBcktNcHZmYTFtTVJhZTlWdldaZmVCMlhmUGtlTG1tMThsVWNCaitwNWRuTjhqWFozWUlHRWhZdU9VbjQ1YW9DRGtwMTZobDVJallKdmpXS2Nub0dRcHF5UGxwT2hyM2FFbGFxcnE1NkJxN1ZBQUFPdz09Iik7CgloZWlnaHQ6IDEwMCU7CglmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MjUpOyAvKiBzdXBwb3J0OiBJRTggKi8KCW9wYWNpdHk6IDAuMjU7Cn0KLnVpLXByb2dyZXNzYmFyLWluZGV0ZXJtaW5hdGUgLnVpLXByb2dyZXNzYmFyLXZhbHVlIHsKCWJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cn0KLnVpLXNlbGVjdGFibGUgewoJLW1zLXRvdWNoLWFjdGlvbjogbm9uZTsKCXRvdWNoLWFjdGlvbjogbm9uZTsKfQoudWktc2VsZWN0YWJsZS1oZWxwZXIgewoJcG9zaXRpb246IGFic29sdXRlOwoJei1pbmRleDogMTAwOwoJYm9yZGVyOiAxcHggZG90dGVkIGJsYWNrOwp9Ci51aS1zZWxlY3RtZW51LW1lbnUgewoJcGFkZGluZzogMDsKCW1hcmdpbjogMDsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXRvcDogMDsKCWxlZnQ6IDA7CglkaXNwbGF5OiBub25lOwp9Ci51aS1zZWxlY3RtZW51LW1lbnUgLnVpLW1lbnUgewoJb3ZlcmZsb3c6IGF1dG87CglvdmVyZmxvdy14OiBoaWRkZW47CglwYWRkaW5nLWJvdHRvbTogMXB4Owp9Ci51aS1zZWxlY3RtZW51LW1lbnUgLnVpLW1lbnUgLnVpLXNlbGVjdG1lbnUtb3B0Z3JvdXAgewoJZm9udC1zaXplOiAxZW07Cglmb250LXdlaWdodDogYm9sZDsKCWxpbmUtaGVpZ2h0OiAxLjU7CglwYWRkaW5nOiAycHggMC40ZW07CgltYXJnaW46IDAuNWVtIDAgMCAwOwoJaGVpZ2h0OiBhdXRvOwoJYm9yZGVyOiAwOwp9Ci51aS1zZWxlY3RtZW51LW9wZW4gewoJZGlzcGxheTogYmxvY2s7Cn0KLnVpLXNlbGVjdG1lbnUtdGV4dCB7CglkaXNwbGF5OiBibG9jazsKCW1hcmdpbi1yaWdodDogMjBweDsKCW92ZXJmbG93OiBoaWRkZW47Cgl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKfQoudWktc2VsZWN0bWVudS1idXR0b24udWktYnV0dG9uIHsKCXRleHQtYWxpZ246IGxlZnQ7Cgl3aGl0ZS1zcGFjZTogbm93cmFwOwoJd2lkdGg6IDE0ZW07Cn0KLnVpLXNlbGVjdG1lbnUtaWNvbi51aS1pY29uIHsKCWZsb2F0OiByaWdodDsKCW1hcmdpbi10b3A6IDA7Cn0KLnVpLXNsaWRlciB7Cglwb3NpdGlvbjogcmVsYXRpdmU7Cgl0ZXh0LWFsaWduOiBsZWZ0Owp9Ci51aS1zbGlkZXIgLnVpLXNsaWRlci1oYW5kbGUgewoJcG9zaXRpb246IGFic29sdXRlOwoJei1pbmRleDogMjsKCXdpZHRoOiAxLjJlbTsKCWhlaWdodDogMS4yZW07CgljdXJzb3I6IGRlZmF1bHQ7CgktbXMtdG91Y2gtYWN0aW9uOiBub25lOwoJdG91Y2gtYWN0aW9uOiBub25lOwp9Ci51aS1zbGlkZXIgLnVpLXNsaWRlci1yYW5nZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl6LWluZGV4OiAxOwoJZm9udC1zaXplOiAuN2VtOwoJZGlzcGxheTogYmxvY2s7Cglib3JkZXI6IDA7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7Cn0KCi8qIHN1cHBvcnQ6IElFOCAtIFNlZSAjNjcyNyAqLwoudWktc2xpZGVyLnVpLXN0YXRlLWRpc2FibGVkIC51aS1zbGlkZXItaGFuZGxlLAoudWktc2xpZGVyLnVpLXN0YXRlLWRpc2FibGVkIC51aS1zbGlkZXItcmFuZ2UgewoJZmlsdGVyOiBpbmhlcml0Owp9CgoudWktc2xpZGVyLWhvcml6b250YWwgewoJaGVpZ2h0OiAuOGVtOwp9Ci51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLWhhbmRsZSB7Cgl0b3A6IC0uM2VtOwoJbWFyZ2luLWxlZnQ6IC0uNmVtOwp9Ci51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdlIHsKCXRvcDogMDsKCWhlaWdodDogMTAwJTsKfQoudWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1yYW5nZS1taW4gewoJbGVmdDogMDsKfQoudWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1yYW5nZS1tYXggewoJcmlnaHQ6IDA7Cn0KCi51aS1zbGlkZXItdmVydGljYWwgewoJd2lkdGg6IC44ZW07CgloZWlnaHQ6IDEwMHB4Owp9Ci51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1oYW5kbGUgewoJbGVmdDogLS4zZW07CgltYXJnaW4tbGVmdDogMDsKCW1hcmdpbi1ib3R0b206IC0uNmVtOwp9Ci51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1yYW5nZSB7CglsZWZ0OiAwOwoJd2lkdGg6IDEwMCU7Cn0KLnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLXJhbmdlLW1pbiB7Cglib3R0b206IDA7Cn0KLnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLXJhbmdlLW1heCB7Cgl0b3A6IDA7Cn0KLnVpLXNvcnRhYmxlLWhhbmRsZSB7CgktbXMtdG91Y2gtYWN0aW9uOiBub25lOwoJdG91Y2gtYWN0aW9uOiBub25lOwp9Ci51aS1zcGlubmVyIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCW92ZXJmbG93OiBoaWRkZW47CglwYWRkaW5nOiAwOwoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoudWktc3Bpbm5lci1pbnB1dCB7Cglib3JkZXI6IG5vbmU7CgliYWNrZ3JvdW5kOiBub25lOwoJY29sb3I6IGluaGVyaXQ7CglwYWRkaW5nOiAuMjIyZW0gMDsKCW1hcmdpbjogLjJlbSAwOwoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCW1hcmdpbi1sZWZ0OiAuNGVtOwoJbWFyZ2luLXJpZ2h0OiAyZW07Cn0KLnVpLXNwaW5uZXItYnV0dG9uIHsKCXdpZHRoOiAxLjZlbTsKCWhlaWdodDogNTAlOwoJZm9udC1zaXplOiAuNWVtOwoJcGFkZGluZzogMDsKCW1hcmdpbjogMDsKCXRleHQtYWxpZ246IGNlbnRlcjsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCWN1cnNvcjogZGVmYXVsdDsKCWRpc3BsYXk6IGJsb2NrOwoJb3ZlcmZsb3c6IGhpZGRlbjsKCXJpZ2h0OiAwOwp9Ci8qIG1vcmUgc3BlY2lmaWNpdHkgcmVxdWlyZWQgaGVyZSB0byBvdmVycmlkZSBkZWZhdWx0IGJvcmRlcnMgKi8KLnVpLXNwaW5uZXIgYS51aS1zcGlubmVyLWJ1dHRvbiB7Cglib3JkZXItdG9wLXN0eWxlOiBub25lOwoJYm9yZGVyLWJvdHRvbS1zdHlsZTogbm9uZTsKCWJvcmRlci1yaWdodC1zdHlsZTogbm9uZTsKfQoudWktc3Bpbm5lci11cCB7Cgl0b3A6IDA7Cn0KLnVpLXNwaW5uZXItZG93biB7Cglib3R0b206IDA7Cn0KLnVpLXRhYnMgewoJcG9zaXRpb246IHJlbGF0aXZlOy8qIHBvc2l0aW9uOiByZWxhdGl2ZSBwcmV2ZW50cyBJRSBzY3JvbGwgYnVnIChlbGVtZW50IHdpdGggcG9zaXRpb246IHJlbGF0aXZlIGluc2lkZSBjb250YWluZXIgd2l0aCBvdmVyZmxvdzogYXV0byBhcHBlYXIgYXMgImZpeGVkIikgKi8KCXBhZGRpbmc6IC4yZW07Cn0KLnVpLXRhYnMgLnVpLXRhYnMtbmF2IHsKCW1hcmdpbjogMDsKCXBhZGRpbmc6IC4yZW0gLjJlbSAwOwp9Ci51aS10YWJzIC51aS10YWJzLW5hdiBsaSB7CglsaXN0LXN0eWxlOiBub25lOwoJZmxvYXQ6IGxlZnQ7Cglwb3NpdGlvbjogcmVsYXRpdmU7Cgl0b3A6IDA7CgltYXJnaW46IDFweCAuMmVtIDAgMDsKCWJvcmRlci1ib3R0b20td2lkdGg6IDA7CglwYWRkaW5nOiAwOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoudWktdGFicyAudWktdGFicy1uYXYgLnVpLXRhYnMtYW5jaG9yIHsKCWZsb2F0OiBsZWZ0OwoJcGFkZGluZzogLjVlbSAxZW07Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KLnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpLnVpLXRhYnMtYWN0aXZlIHsKCW1hcmdpbi1ib3R0b206IC0xcHg7CglwYWRkaW5nLWJvdHRvbTogMXB4Owp9Ci51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS10YWJzLWFjdGl2ZSAudWktdGFicy1hbmNob3IsCi51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS1zdGF0ZS1kaXNhYmxlZCAudWktdGFicy1hbmNob3IsCi51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS10YWJzLWxvYWRpbmcgLnVpLXRhYnMtYW5jaG9yIHsKCWN1cnNvcjogdGV4dDsKfQoudWktdGFicy1jb2xsYXBzaWJsZSAudWktdGFicy1uYXYgbGkudWktdGFicy1hY3RpdmUgLnVpLXRhYnMtYW5jaG9yIHsKCWN1cnNvcjogcG9pbnRlcjsKfQoudWktdGFicyAudWktdGFicy1wYW5lbCB7CglkaXNwbGF5OiBibG9jazsKCWJvcmRlci13aWR0aDogMDsKCXBhZGRpbmc6IDFlbSAxLjRlbTsKCWJhY2tncm91bmQ6IG5vbmU7Cn0KLnVpLXRvb2x0aXAgewoJcGFkZGluZzogOHB4OwoJcG9zaXRpb246IGFic29sdXRlOwoJei1pbmRleDogOTk5OTsKCW1heC13aWR0aDogMzAwcHg7Cn0KYm9keSAudWktdG9vbHRpcCB7Cglib3JkZXItd2lkdGg6IDJweDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/css/jquery-ui.structure.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIGpRdWVyeSBVSSAtIHYxLjEyLjAtcmMuMiAtIDIwMTYtMDQtMjEKKiBodHRwOi8vanF1ZXJ5dWkuY29tCiogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnM7IExpY2Vuc2VkIE1JVCAqLwoKLnVpLWhlbHBlci1oaWRkZW57ZGlzcGxheTpub25lfS51aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGV7Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHh9LnVpLWhlbHBlci1yZXNldHttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7b3V0bGluZTowO2xpbmUtaGVpZ2h0OjEuMzt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXNpemU6MTAwJTtsaXN0LXN0eWxlOm5vbmV9LnVpLWhlbHBlci1jbGVhcmZpeDpiZWZvcmUsLnVpLWhlbHBlci1jbGVhcmZpeDphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6dGFibGU7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfS51aS1oZWxwZXItY2xlYXJmaXg6YWZ0ZXJ7Y2xlYXI6Ym90aH0udWktaGVscGVyLXpmaXh7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTt0b3A6MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7b3BhY2l0eTowO2ZpbHRlcjpBbHBoYShPcGFjaXR5PTApfS51aS1mcm9udHt6LWluZGV4OjEwMH0udWktc3RhdGUtZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHQhaW1wb3J0YW50O3BvaW50ZXItZXZlbnRzOm5vbmV9LnVpLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi10b3A6LS4yNWVtO3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtaW5kZW50Oi05OTk5OXB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXR9LnVpLXdpZGdldC1pY29uLWJsb2Nre2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi04cHg7ZGlzcGxheTpibG9ja30udWktd2lkZ2V0LW92ZXJsYXl7cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9LnVpLWFjY29yZGlvbiAudWktYWNjb3JkaW9uLWhlYWRlcntkaXNwbGF5OmJsb2NrO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbjoycHggMCAwIDA7cGFkZGluZzouNWVtIC41ZW0gLjVlbSAuN2VtO2ZvbnQtc2l6ZToxMDAlfS51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1jb250ZW50e3BhZGRpbmc6MWVtIDIuMmVtO2JvcmRlci10b3A6MDtvdmVyZmxvdzphdXRvfS51aS1hdXRvY29tcGxldGV7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2N1cnNvcjpkZWZhdWx0fS51aS1tZW51e2xpc3Qtc3R5bGU6bm9uZTtwYWRkaW5nOjA7bWFyZ2luOjA7ZGlzcGxheTpibG9jaztvdXRsaW5lOjB9LnVpLW1lbnUgLnVpLW1lbnV7cG9zaXRpb246YWJzb2x1dGV9LnVpLW1lbnUgLnVpLW1lbnUtaXRlbXttYXJnaW46MDtjdXJzb3I6cG9pbnRlcjtsaXN0LXN0eWxlLWltYWdlOnVybCgiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFJQUFBQUFBQVAvLy95SDVCQUVBQUFBQUxBQUFBQUFCQUFFQUFBSUJSQUE3Iil9LnVpLW1lbnUgLnVpLW1lbnUtaXRlbS13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6M3B4IDFlbSAzcHggLjRlbX0udWktbWVudSAudWktbWVudS1kaXZpZGVye21hcmdpbjo1cHggMDtoZWlnaHQ6MDtmb250LXNpemU6MDtsaW5lLWhlaWdodDowO2JvcmRlci13aWR0aDoxcHggMCAwIDB9LnVpLW1lbnUgLnVpLXN0YXRlLWZvY3VzLC51aS1tZW51IC51aS1zdGF0ZS1hY3RpdmV7bWFyZ2luOi0xcHh9LnVpLW1lbnUtaWNvbnN7cG9zaXRpb246cmVsYXRpdmV9LnVpLW1lbnUtaWNvbnMgLnVpLW1lbnUtaXRlbS13cmFwcGVye3BhZGRpbmctbGVmdDoyZW19LnVpLW1lbnUgLnVpLWljb257cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDouMmVtO21hcmdpbjphdXRvIDB9LnVpLW1lbnUgLnVpLW1lbnUtaWNvbntsZWZ0OmF1dG87cmlnaHQ6MH0udWktYnV0dG9ue3BhZGRpbmc6LjRlbSAxZW07ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7bGluZS1oZWlnaHQ6bm9ybWFsO21hcmdpbi1yaWdodDouMWVtO2N1cnNvcjpwb2ludGVyO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt0ZXh0LWFsaWduOmNlbnRlcjstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7b3ZlcmZsb3c6dmlzaWJsZX0udWktYnV0dG9uLC51aS1idXR0b246bGluaywudWktYnV0dG9uOnZpc2l0ZWQsLnVpLWJ1dHRvbjpob3ZlciwudWktYnV0dG9uOmFjdGl2ZXt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktYnV0dG9uLWljb24tb25seXt3aWR0aDoyZW07Ym94LXNpemluZzpib3JkZXItYm94O3RleHQtaW5kZW50Oi05OTk5cHg7d2hpdGUtc3BhY2U6bm93cmFwfWlucHV0LnVpLWJ1dHRvbi51aS1idXR0b24taWNvbi1vbmx5e3RleHQtaW5kZW50OjB9LnVpLWJ1dHRvbi1pY29uLW9ubHkgLnVpLWljb257cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJTttYXJnaW4tdG9wOi04cHg7bWFyZ2luLWxlZnQ6LThweH0udWktYnV0dG9uLnVpLWljb24tbm90ZXh0IC51aS1pY29ue3BhZGRpbmc6MDt3aWR0aDoyLjFlbTtoZWlnaHQ6Mi4xZW07dGV4dC1pbmRlbnQ6LTk5OTlweDt3aGl0ZS1zcGFjZTpub3dyYXB9aW5wdXQudWktYnV0dG9uLnVpLWljb24tbm90ZXh0IC51aS1pY29ue3dpZHRoOmF1dG87aGVpZ2h0OmF1dG87dGV4dC1pbmRlbnQ6MDt3aGl0ZS1zcGFjZTpub3JtYWw7cGFkZGluZzouNGVtIDFlbX1pbnB1dC51aS1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsYnV0dG9uLnVpLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MDtwYWRkaW5nOjB9LnVpLWNvbnRyb2xncm91cHt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTppbmxpbmUtYmxvY2t9LnVpLWNvbnRyb2xncm91cCA+IC51aS1jb250cm9sZ3JvdXAtaXRlbXtmbG9hdDpsZWZ0O21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjB9LnVpLWNvbnRyb2xncm91cCA+IC51aS1jb250cm9sZ3JvdXAtaXRlbTpmb2N1cywudWktY29udHJvbGdyb3VwID4gLnVpLWNvbnRyb2xncm91cC1pdGVtLnVpLXZpc3VhbC1mb2N1c3t6LWluZGV4Ojk5OTl9LnVpLWNvbnRyb2xncm91cC12ZXJ0aWNhbCA+IC51aS1jb250cm9sZ3JvdXAtaXRlbXtkaXNwbGF5OmJsb2NrO2Zsb2F0Om5vbmU7d2lkdGg6MTAwJTttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO3RleHQtYWxpZ246bGVmdH0udWktY29udHJvbGdyb3VwLXZlcnRpY2FsIC51aS1jb250cm9sZ3JvdXAtaXRlbXtib3gtc2l6aW5nOmJvcmRlci1ib3h9LnVpLWNvbnRyb2xncm91cCAudWktY29udHJvbGdyb3VwLWxhYmVse3BhZGRpbmc6LjRlbSAxZW19LnVpLWNvbnRyb2xncm91cCAudWktY29udHJvbGdyb3VwLWxhYmVsIHNwYW57Zm9udC1zaXplOjgwJX0udWktY29udHJvbGdyb3VwLWhvcml6b250YWwgLnVpLWNvbnRyb2xncm91cC1sYWJlbCArIC51aS1jb250cm9sZ3JvdXAtaXRlbXtib3JkZXItbGVmdDpub25lfS51aS1jb250cm9sZ3JvdXAtdmVydGljYWwgLnVpLWNvbnRyb2xncm91cC1sYWJlbCArIC51aS1jb250cm9sZ3JvdXAtaXRlbXtib3JkZXItdG9wOm5vbmV9LnVpLWNvbnRyb2xncm91cC1ob3Jpem9udGFsIC51aS1jb250cm9sZ3JvdXAtbGFiZWwudWktd2lkZ2V0LWNvbnRlbnR7Ym9yZGVyLXJpZ2h0Om5vbmV9LnVpLWNvbnRyb2xncm91cC12ZXJ0aWNhbCAudWktY29udHJvbGdyb3VwLWxhYmVsLnVpLXdpZGdldC1jb250ZW50e2JvcmRlci1ib3R0b206bm9uZX0udWktY29udHJvbGdyb3VwLXZlcnRpY2FsIC51aS1zcGlubmVyLWlucHV0e3dpZHRoOjc1JTt3aWR0aDpjYWxjKCAxMDAlIC0gMi40ZW0gKX0udWktY29udHJvbGdyb3VwLXZlcnRpY2FsIC51aS1zcGlubmVyIC51aS1zcGlubmVyLXVwe2JvcmRlci10b3Atc3R5bGU6c29saWR9LnVpLWNoZWNrYm94cmFkaW8tbGFiZWwgLnVpLWljb24tYmFja2dyb3VuZHtib3gtc2hhZG93Omluc2V0IDFweCAxcHggMXB4ICNjY2M7Ym9yZGVyLXJhZGl1czouMTJlbTtib3JkZXI6bm9uZX0udWktY2hlY2tib3hyYWRpby1yYWRpby1sYWJlbCAudWktaWNvbi1iYWNrZ3JvdW5ke3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7Ym9yZGVyLXJhZGl1czoxZW07b3ZlcmZsb3c6dmlzaWJsZTtib3JkZXI6bm9uZX0udWktY2hlY2tib3hyYWRpby1yYWRpby1sYWJlbC51aS1jaGVja2JveHJhZGlvLWNoZWNrZWQgLnVpLWljb24sLnVpLWNoZWNrYm94cmFkaW8tcmFkaW8tbGFiZWwudWktY2hlY2tib3hyYWRpby1jaGVja2VkOmhvdmVyIC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6bm9uZTt3aWR0aDo4cHg7aGVpZ2h0OjhweDtib3JkZXItd2lkdGg6NHB4O2JvcmRlci1zdHlsZTpzb2xpZH0udWktY2hlY2tib3hyYWRpby1kaXNhYmxlZHtwb2ludGVyLWV2ZW50czpub25lfS51aS1kYXRlcGlja2Vye3dpZHRoOjE3ZW07cGFkZGluZzouMmVtIC4yZW0gMDtkaXNwbGF5Om5vbmV9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItaGVhZGVye3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6LjJlbSAwfS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXYsLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MnB4O3dpZHRoOjEuOGVtO2hlaWdodDoxLjhlbX0udWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1wcmV2LWhvdmVyLC51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLW5leHQtaG92ZXJ7dG9wOjFweH0udWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1wcmV2e2xlZnQ6MnB4fS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLW5leHR7cmlnaHQ6MnB4fS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXYtaG92ZXJ7bGVmdDoxcHh9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dC1ob3ZlcntyaWdodDoxcHh9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItcHJldiBzcGFuLC51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLW5leHQgc3BhbntkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi04cHg7dG9wOjUwJTttYXJnaW4tdG9wOi04cHh9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItdGl0bGV7bWFyZ2luOjAgMi4zZW07bGluZS1oZWlnaHQ6MS44ZW07dGV4dC1hbGlnbjpjZW50ZXJ9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItdGl0bGUgc2VsZWN0e2ZvbnQtc2l6ZToxZW07bWFyZ2luOjFweCAwfS51aS1kYXRlcGlja2VyIHNlbGVjdC51aS1kYXRlcGlja2VyLW1vbnRoLC51aS1kYXRlcGlja2VyIHNlbGVjdC51aS1kYXRlcGlja2VyLXllYXJ7d2lkdGg6NDUlfS51aS1kYXRlcGlja2VyIHRhYmxle3dpZHRoOjEwMCU7Zm9udC1zaXplOi45ZW07Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO21hcmdpbjowIDAgLjRlbX0udWktZGF0ZXBpY2tlciB0aHtwYWRkaW5nOi43ZW0gLjNlbTt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDpib2xkO2JvcmRlcjowfS51aS1kYXRlcGlja2VyIHRke2JvcmRlcjowO3BhZGRpbmc6MXB4fS51aS1kYXRlcGlja2VyIHRkIHNwYW4sLnVpLWRhdGVwaWNrZXIgdGQgYXtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6LjJlbTt0ZXh0LWFsaWduOnJpZ2h0O3RleHQtZGVjb3JhdGlvbjpub25lfS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmV7YmFja2dyb3VuZC1pbWFnZTpub25lO21hcmdpbjouN2VtIDAgMCAwO3BhZGRpbmc6MCAuMmVtO2JvcmRlci1sZWZ0OjA7Ym9yZGVyLXJpZ2h0OjA7Ym9yZGVyLWJvdHRvbTowfS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgYnV0dG9ue2Zsb2F0OnJpZ2h0O21hcmdpbjouNWVtIC4yZW0gLjRlbTtjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOi4yZW0gLjZlbSAuM2VtIC42ZW07d2lkdGg6YXV0bztvdmVyZmxvdzp2aXNpYmxlfS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgYnV0dG9uLnVpLWRhdGVwaWNrZXItY3VycmVudHtmbG9hdDpsZWZ0fS51aS1kYXRlcGlja2VyLnVpLWRhdGVwaWNrZXItbXVsdGl7d2lkdGg6YXV0b30udWktZGF0ZXBpY2tlci1tdWx0aSAudWktZGF0ZXBpY2tlci1ncm91cHtmbG9hdDpsZWZ0fS51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2VyLWdyb3VwIHRhYmxle3dpZHRoOjk1JTttYXJnaW46MCBhdXRvIC40ZW19LnVpLWRhdGVwaWNrZXItbXVsdGktMiAudWktZGF0ZXBpY2tlci1ncm91cHt3aWR0aDo1MCV9LnVpLWRhdGVwaWNrZXItbXVsdGktMyAudWktZGF0ZXBpY2tlci1ncm91cHt3aWR0aDozMy4zJX0udWktZGF0ZXBpY2tlci1tdWx0aS00IC51aS1kYXRlcGlja2VyLWdyb3Vwe3dpZHRoOjI1JX0udWktZGF0ZXBpY2tlci1tdWx0aSAudWktZGF0ZXBpY2tlci1ncm91cC1sYXN0IC51aS1kYXRlcGlja2VyLWhlYWRlciwudWktZGF0ZXBpY2tlci1tdWx0aSAudWktZGF0ZXBpY2tlci1ncm91cC1taWRkbGUgLnVpLWRhdGVwaWNrZXItaGVhZGVye2JvcmRlci1sZWZ0LXdpZHRoOjB9LnVpLWRhdGVwaWNrZXItbXVsdGkgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZXtjbGVhcjpsZWZ0fS51aS1kYXRlcGlja2VyLXJvdy1icmVha3tjbGVhcjpib3RoO3dpZHRoOjEwMCU7Zm9udC1zaXplOjB9LnVpLWRhdGVwaWNrZXItcnRse2RpcmVjdGlvbjpydGx9LnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLXByZXZ7cmlnaHQ6MnB4O2xlZnQ6YXV0b30udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItbmV4dHtsZWZ0OjJweDtyaWdodDphdXRvfS51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1wcmV2OmhvdmVye3JpZ2h0OjFweDtsZWZ0OmF1dG99LnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLW5leHQ6aG92ZXJ7bGVmdDoxcHg7cmlnaHQ6YXV0b30udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZXtjbGVhcjpyaWdodH0udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSBidXR0b257ZmxvYXQ6bGVmdH0udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSBidXR0b24udWktZGF0ZXBpY2tlci1jdXJyZW50LC51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1ncm91cHtmbG9hdDpyaWdodH0udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItZ3JvdXAtbGFzdCAudWktZGF0ZXBpY2tlci1oZWFkZXIsLnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLWdyb3VwLW1pZGRsZSAudWktZGF0ZXBpY2tlci1oZWFkZXJ7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7Ym9yZGVyLWxlZnQtd2lkdGg6MXB4fS51aS1kYXRlcGlja2VyIC51aS1pY29ue2Rpc3BsYXk6YmxvY2s7dGV4dC1pbmRlbnQ6LTk5OTk5cHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtsZWZ0Oi41ZW07dG9wOi4zZW19LnVpLWRpYWxvZ3twb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cGFkZGluZzouMmVtO291dGxpbmU6MH0udWktZGlhbG9nIC51aS1kaWFsb2ctdGl0bGViYXJ7cGFkZGluZzouNGVtIDFlbTtwb3NpdGlvbjpyZWxhdGl2ZX0udWktZGlhbG9nIC51aS1kaWFsb2ctdGl0bGV7ZmxvYXQ6bGVmdDttYXJnaW46LjFlbSAwO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDo5MCU7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LnVpLWRpYWxvZyAudWktZGlhbG9nLXRpdGxlYmFyLWNsb3Nle3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0Oi4zZW07dG9wOjUwJTt3aWR0aDoyMHB4O21hcmdpbjotMTBweCAwIDAgMDtwYWRkaW5nOjFweDtoZWlnaHQ6MjBweH0udWktZGlhbG9nIC51aS1kaWFsb2ctY29udGVudHtwb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXI6MDtwYWRkaW5nOi41ZW0gMWVtO2JhY2tncm91bmQ6bm9uZTtvdmVyZmxvdzphdXRvfS51aS1kaWFsb2cgLnVpLWRpYWxvZy1idXR0b25wYW5le3RleHQtYWxpZ246bGVmdDtib3JkZXItd2lkdGg6MXB4IDAgMCAwO2JhY2tncm91bmQtaW1hZ2U6bm9uZTttYXJnaW4tdG9wOi41ZW07cGFkZGluZzouM2VtIDFlbSAuNWVtIC40ZW19LnVpLWRpYWxvZyAudWktZGlhbG9nLWJ1dHRvbnBhbmUgLnVpLWRpYWxvZy1idXR0b25zZXR7ZmxvYXQ6cmlnaHR9LnVpLWRpYWxvZyAudWktZGlhbG9nLWJ1dHRvbnBhbmUgYnV0dG9ue21hcmdpbjouNWVtIC40ZW0gLjVlbSAwO2N1cnNvcjpwb2ludGVyfS51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1ue2hlaWdodDoycHg7dG9wOjB9LnVpLWRpYWxvZyAudWktcmVzaXphYmxlLWV7d2lkdGg6MnB4O3JpZ2h0OjB9LnVpLWRpYWxvZyAudWktcmVzaXphYmxlLXN7aGVpZ2h0OjJweDtib3R0b206MH0udWktZGlhbG9nIC51aS1yZXNpemFibGUtd3t3aWR0aDoycHg7bGVmdDowfS51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1zZSwudWktZGlhbG9nIC51aS1yZXNpemFibGUtc3csLnVpLWRpYWxvZyAudWktcmVzaXphYmxlLW5lLC51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1ud3t3aWR0aDo3cHg7aGVpZ2h0OjdweH0udWktZGlhbG9nIC51aS1yZXNpemFibGUtc2V7cmlnaHQ6MDtib3R0b206MH0udWktZGlhbG9nIC51aS1yZXNpemFibGUtc3d7bGVmdDowO2JvdHRvbTowfS51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1uZXtyaWdodDowO3RvcDowfS51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1ud3tsZWZ0OjA7dG9wOjB9LnVpLWRyYWdnYWJsZSAudWktZGlhbG9nLXRpdGxlYmFye2N1cnNvcjptb3ZlfS51aS1kcmFnZ2FibGUtaGFuZGxley1tcy10b3VjaC1hY3Rpb246bm9uZTt0b3VjaC1hY3Rpb246bm9uZX0udWktcmVzaXphYmxle3Bvc2l0aW9uOnJlbGF0aXZlfS51aS1yZXNpemFibGUtaGFuZGxle3Bvc2l0aW9uOmFic29sdXRlO2ZvbnQtc2l6ZTowLjFweDtkaXNwbGF5OmJsb2NrOy1tcy10b3VjaC1hY3Rpb246bm9uZTt0b3VjaC1hY3Rpb246bm9uZX0udWktcmVzaXphYmxlLWRpc2FibGVkIC51aS1yZXNpemFibGUtaGFuZGxlLC51aS1yZXNpemFibGUtYXV0b2hpZGUgLnVpLXJlc2l6YWJsZS1oYW5kbGV7ZGlzcGxheTpub25lfS51aS1yZXNpemFibGUtbntjdXJzb3I6bi1yZXNpemU7aGVpZ2h0OjdweDt3aWR0aDoxMDAlO3RvcDotNXB4O2xlZnQ6MH0udWktcmVzaXphYmxlLXN7Y3Vyc29yOnMtcmVzaXplO2hlaWdodDo3cHg7d2lkdGg6MTAwJTtib3R0b206LTVweDtsZWZ0OjB9LnVpLXJlc2l6YWJsZS1le2N1cnNvcjplLXJlc2l6ZTt3aWR0aDo3cHg7cmlnaHQ6LTVweDt0b3A6MDtoZWlnaHQ6MTAwJX0udWktcmVzaXphYmxlLXd7Y3Vyc29yOnctcmVzaXplO3dpZHRoOjdweDtsZWZ0Oi01cHg7dG9wOjA7aGVpZ2h0OjEwMCV9LnVpLXJlc2l6YWJsZS1zZXtjdXJzb3I6c2UtcmVzaXplO3dpZHRoOjEycHg7aGVpZ2h0OjEycHg7cmlnaHQ6MXB4O2JvdHRvbToxcHh9LnVpLXJlc2l6YWJsZS1zd3tjdXJzb3I6c3ctcmVzaXplO3dpZHRoOjlweDtoZWlnaHQ6OXB4O2xlZnQ6LTVweDtib3R0b206LTVweH0udWktcmVzaXphYmxlLW53e2N1cnNvcjpudy1yZXNpemU7d2lkdGg6OXB4O2hlaWdodDo5cHg7bGVmdDotNXB4O3RvcDotNXB4fS51aS1yZXNpemFibGUtbmV7Y3Vyc29yOm5lLXJlc2l6ZTt3aWR0aDo5cHg7aGVpZ2h0OjlweDtyaWdodDotNXB4O3RvcDotNXB4fS51aS1wcm9ncmVzc2JhcntoZWlnaHQ6MmVtO3RleHQtYWxpZ246bGVmdDtvdmVyZmxvdzpoaWRkZW59LnVpLXByb2dyZXNzYmFyIC51aS1wcm9ncmVzc2Jhci12YWx1ZXttYXJnaW46LTFweDtoZWlnaHQ6MTAwJX0udWktcHJvZ3Jlc3NiYXIgLnVpLXByb2dyZXNzYmFyLW92ZXJsYXl7YmFja2dyb3VuZDp1cmwoImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEtBQW9BSUFCQUFBQUFQLy8veUgvQzA1RlZGTkRRVkJGTWk0d0F3RUFBQUFoK1FRSkFRQUJBQ3dBQUFBQUtBQW9BQUFDa1l3TnFYcmRDNTJEUzA2YTdNRlpJKzRGSEJDS29EZVdLWHF5bVBxR3F4dkpyWFpiTXg3VHRjK3c5WGdVMkZCM2xPeVFSV0VUMklGR2lVOW0xZnJEVnB4WlpjNmJmSHd2NGMxWVhQNmsxVmR5MjkyRmI2VWt1dkZ0WHB2V1N6QStIeWNYSkhVWGlHWUlpTWcyUjZXNDU5Z25XR2ZITmRqSXFEV1ZxZW1IMmVrcE9ia3BPbHBwV1VxWmlxcjZlZHFxV1FBQUlma0VDUUVBQVFBc0FBQUFBQ2dBS0FBQUFwU01nWm5HZmFxY2cxRTJ1dXpEbW1IVUJSOFFpbDk1aGlQS3FXbjNhcXRMc1MxOHk3RzFTek5lb3dXQkVOdFFkK1QxSmt0UDA1bnpQVGRKWmxSNnZVeE5XV2pWK3ZVV2hXTmtXRnd4bDlWcFpSZWRZY2ZsSU9MYWZhYTI4WGRzSC95bmxjYzF1UFZEWnhRSVIwSzI1K2NJQ0Ntb3FDZTVtR2haT2ZlWVNVaDV5SmNKeXJrWldXcGFSOGRvSjJvNE5ZcTYybEFBQUNINUJBa0JBQUVBTEFBQUFBQW9BQ2dBQUFLVkRJNFl5MjJabklOUk5xb3N3MEJ2N2kxZ3lIVWtGajdvU2FXbHUzb3ZDOEd4TnNvNWZsdXozcUxWaEJWZVQvTHo3WlRIeXhMNWREYWxRV1BWT3NRV3RSbnV3WGFGVGo5alZWaDhwbWE5SmpaNHpZU2o1Wk95bWE3dXVvbGZmaCtJUjVhVzk3Y0h1QlVYS0dLWGxLam4rRGlIV01jWUphaDROMGxZQ01sSk9YaXBHUnI1cWRnb1NUcnFXU3E2V0ZsMnlwb2FVQUFBSWZrRUNRRUFBUUFzQUFBQUFDZ0FLQUFBQXBhRWI2SExnZC9pTzdGTld0Y0ZXZSt1Zk9ER2pSZm9pSjJha1NoYnVlYjB3dEk1MHptMDJwYnZ3ZldFTVdCUTF6S0dsTEloc2tpRVBtOVI2dlJYeFY0WnpXVDJ5SE9HcFdNeW9yYmxLbE5wOEhtSEViL2xDWGpjVzdibXRYUDhYdDIyOU9WV1IxZm9kMmVXcU5mSHVNalhDUGtJR05pbGVPaUltVm1DT0Vtb1NmbjN5WGxKV21vSEdocXA2aWxZdVdZcG1UcUtVZ0FBSWZrRUNRRUFBUUFzQUFBQUFDZ0FLQUFBQXBpRUg2a2I1OGJpUTNGTld0TUZXVzNlTlZjb2p1RkdmcW5acVNlYnVTMDZ3NVY4MC9YMDJwS2U4ekZ3UDZFRldPVDFsREZrOHJHRVJoMVRUTk9vY1E2MUhtNFhtMlZleFVIcHpqeW1WaUhyRmJpRUxzZWZWcm42WEtmbnQyUTlHLytYZGllNDk5WEhkMmc0aDdpb09HaFhHSmJvR0FuWFNCbm9Cd0tZeWZpb3ViWkoySG4wUnVSWmFmbFpPaWw1NlpwNmlpb0tTWHBVQUFBaCtRUUpBUUFCQUN3QUFBQUFLQUFvQUFBQ2tvUVJxUnZueHVJN2tVMWExVVU1YmQ1dG5TZU9aWGhtbjVsV0szcU5UV3ZSZFF4UDhxdmFDKy95YVlRelhPN0JNdmFVRW1KUmQzVHNpTUFnc3dtTllyU2daZFlyVFg2dFNIR1pPNzNlenVBdzJ1eHVRK0JiZVpmTXhzZXhZMzUrL1FlNEoxaW5WMGc0eDNXSHVNaElsMmpYT0tUMlErVlU1ZmdvU1VJNTJWZlp5ZmtKR2toYTZqbVkrYWFZZGlycStsUUFBQ0g1QkFrQkFBRUFMQUFBQUFBb0FDZ0FBQUtXQklLcFllMEwzWU5LVG9xc3dVbHZ6bmlnZDR3aVI0S2hackt0OVVwcWlwNjFpOUUzdk12eFJkSGxiRUZpRVhmazlZQVJZeE9aWkQ2VlEycFV1bkJtdFJYbzFMZjhoTVZWY05sOEphZlYzOGFNMi9GdTVWMTZCbjYzcjZ4dDk3ajA5K01YU0ZpNEJuaUdGYWUzaHpiSDkraFlCemtwdVVoNWFabUh1YW5aT1pnSXV2YkdpTmVvbUNuYXh4YXAydXBhQ1pzcSsxa0FBQ0g1QkFrQkFBRUFMQUFBQUFBb0FDZ0FBQUtYakk4Qnk1emY0a094VFZyWE5WbHYxWDBkOElHWkdLTG5OcFl0bThMcjljcVZldU9TdmZPVzc5RDlhREhpek5oREppZEZaaE55ZEVhaE9hREg2bm9tdEpqcDF0dXRLb05Xa3ZBNkpxZlJWTEhVL1FVZmF1OWwyeDdHNTRkMWZsOTk1eGNJR0FkWHFNZkJOYWRvWXJoSCtNZzJLQmxwVnBibHVDaVhtTW5aMlNoNEdCcUorY2tJT3FxSjZMbUtTbGxabXNvcTZ3cFFBQUFoK1FRSkFRQUJBQ3dBQUFBQUtBQW9BQUFDbFl4L29Mdm94dUpEa1UxYTFZVVpiSjU5blNkMlpYaFdxYlJhMi9nRjhHdTJEWTNpcXM3eXJxK3hCWUVrWXZGU004YVNTT2JFK1pnUmwxQkhGWk5yN3BSQ2F2WjVCVzIxNDJoWTNBTi96V3RzbWYxMnA5WHh4RmwybHBMbjFyc2V6dGZYWmpkSVdJZjJzNWRJdHdqWUtCZ285eWc1cEhnekpYVEVlR2xadWVucHlQbXBHUW9LT1drWW1TcGFTbnFLaWxlSTJGQUFBQ0g1QkFrQkFBRUFMQUFBQUFBb0FDZ0FBQUtWakIrZ3Urakc0a09SVFZyVmhSbHNubjJkSjNabGVGYXB0RnJiK0NYbU85T296ZUw1VmZQOTlIdkFXaHBpVWRjd2twQkgzODI1QXdZZFU4eFRxbExHaHRDb3NBcktNcHZmYTFtTVJhZTlWdldaZmVCMlhmUGtlTG1tMThsVWNCaitwNWRuTjhqWFozWUlHRWhZdU9VbjQ1YW9DRGtwMTZobDVJallKdmpXS2Nub0dRcHF5UGxwT2hyM2FFbGFxcnE1NkJxN1ZBQUFPdz09Iik7aGVpZ2h0OjEwMCU7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MjUpO29wYWNpdHk6MC4yNX0udWktcHJvZ3Jlc3NiYXItaW5kZXRlcm1pbmF0ZSAudWktcHJvZ3Jlc3NiYXItdmFsdWV7YmFja2dyb3VuZC1pbWFnZTpub25lfS51aS1zZWxlY3RhYmxley1tcy10b3VjaC1hY3Rpb246bm9uZTt0b3VjaC1hY3Rpb246bm9uZX0udWktc2VsZWN0YWJsZS1oZWxwZXJ7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDA7Ym9yZGVyOjFweCBkb3R0ZWQgYmxhY2t9LnVpLXNlbGVjdG1lbnUtbWVudXtwYWRkaW5nOjA7bWFyZ2luOjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2Rpc3BsYXk6bm9uZX0udWktc2VsZWN0bWVudS1tZW51IC51aS1tZW51e292ZXJmbG93OmF1dG87b3ZlcmZsb3cteDpoaWRkZW47cGFkZGluZy1ib3R0b206MXB4fS51aS1zZWxlY3RtZW51LW1lbnUgLnVpLW1lbnUgLnVpLXNlbGVjdG1lbnUtb3B0Z3JvdXB7Zm9udC1zaXplOjFlbTtmb250LXdlaWdodDpib2xkO2xpbmUtaGVpZ2h0OjEuNTtwYWRkaW5nOjJweCAwLjRlbTttYXJnaW46MC41ZW0gMCAwIDA7aGVpZ2h0OmF1dG87Ym9yZGVyOjB9LnVpLXNlbGVjdG1lbnUtb3BlbntkaXNwbGF5OmJsb2NrfS51aS1zZWxlY3RtZW51LXRleHR7ZGlzcGxheTpibG9jazttYXJnaW4tcmlnaHQ6MjBweDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30udWktc2VsZWN0bWVudS1idXR0b24udWktYnV0dG9ue3RleHQtYWxpZ246bGVmdDt3aGl0ZS1zcGFjZTpub3dyYXA7d2lkdGg6MTRlbX0udWktc2VsZWN0bWVudS1pY29uLnVpLWljb257ZmxvYXQ6cmlnaHQ7bWFyZ2luLXRvcDowfS51aS1zbGlkZXJ7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpsZWZ0fS51aS1zbGlkZXIgLnVpLXNsaWRlci1oYW5kbGV7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoyO3dpZHRoOjEuMmVtO2hlaWdodDoxLjJlbTtjdXJzb3I6ZGVmYXVsdDstbXMtdG91Y2gtYWN0aW9uOm5vbmU7dG91Y2gtYWN0aW9uOm5vbmV9LnVpLXNsaWRlciAudWktc2xpZGVyLXJhbmdle3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTtmb250LXNpemU6LjdlbTtkaXNwbGF5OmJsb2NrO2JvcmRlcjowO2JhY2tncm91bmQtcG9zaXRpb246MCAwfS51aS1zbGlkZXIudWktc3RhdGUtZGlzYWJsZWQgLnVpLXNsaWRlci1oYW5kbGUsLnVpLXNsaWRlci51aS1zdGF0ZS1kaXNhYmxlZCAudWktc2xpZGVyLXJhbmdle2ZpbHRlcjppbmhlcml0fS51aS1zbGlkZXItaG9yaXpvbnRhbHtoZWlnaHQ6LjhlbX0udWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1oYW5kbGV7dG9wOi0uM2VtO21hcmdpbi1sZWZ0Oi0uNmVtfS51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdle3RvcDowO2hlaWdodDoxMDAlfS51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdlLW1pbntsZWZ0OjB9LnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItcmFuZ2UtbWF4e3JpZ2h0OjB9LnVpLXNsaWRlci12ZXJ0aWNhbHt3aWR0aDouOGVtO2hlaWdodDoxMDBweH0udWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItaGFuZGxle2xlZnQ6LS4zZW07bWFyZ2luLWxlZnQ6MDttYXJnaW4tYm90dG9tOi0uNmVtfS51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1yYW5nZXtsZWZ0OjA7d2lkdGg6MTAwJX0udWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItcmFuZ2UtbWlue2JvdHRvbTowfS51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1yYW5nZS1tYXh7dG9wOjB9LnVpLXNvcnRhYmxlLWhhbmRsZXstbXMtdG91Y2gtYWN0aW9uOm5vbmU7dG91Y2gtYWN0aW9uOm5vbmV9LnVpLXNwaW5uZXJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LnVpLXNwaW5uZXItaW5wdXR7Ym9yZGVyOm5vbmU7YmFja2dyb3VuZDpub25lO2NvbG9yOmluaGVyaXQ7cGFkZGluZzouMjIyZW0gMDttYXJnaW46LjJlbSAwO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tbGVmdDouNGVtO21hcmdpbi1yaWdodDoyZW19LnVpLXNwaW5uZXItYnV0dG9ue3dpZHRoOjEuNmVtO2hlaWdodDo1MCU7Zm9udC1zaXplOi41ZW07cGFkZGluZzowO21hcmdpbjowO3RleHQtYWxpZ246Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlO2N1cnNvcjpkZWZhdWx0O2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3c6aGlkZGVuO3JpZ2h0OjB9LnVpLXNwaW5uZXIgYS51aS1zcGlubmVyLWJ1dHRvbntib3JkZXItdG9wLXN0eWxlOm5vbmU7Ym9yZGVyLWJvdHRvbS1zdHlsZTpub25lO2JvcmRlci1yaWdodC1zdHlsZTpub25lfS51aS1zcGlubmVyLXVwe3RvcDowfS51aS1zcGlubmVyLWRvd257Ym90dG9tOjB9LnVpLXRhYnN7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzouMmVtfS51aS10YWJzIC51aS10YWJzLW5hdnttYXJnaW46MDtwYWRkaW5nOi4yZW0gLjJlbSAwfS51aS10YWJzIC51aS10YWJzLW5hdiBsaXtsaXN0LXN0eWxlOm5vbmU7ZmxvYXQ6bGVmdDtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6MDttYXJnaW46MXB4IC4yZW0gMCAwO2JvcmRlci1ib3R0b20td2lkdGg6MDtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6bm93cmFwfS51aS10YWJzIC51aS10YWJzLW5hdiAudWktdGFicy1hbmNob3J7ZmxvYXQ6bGVmdDtwYWRkaW5nOi41ZW0gMWVtO3RleHQtZGVjb3JhdGlvbjpub25lfS51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS10YWJzLWFjdGl2ZXttYXJnaW4tYm90dG9tOi0xcHg7cGFkZGluZy1ib3R0b206MXB4fS51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS10YWJzLWFjdGl2ZSAudWktdGFicy1hbmNob3IsLnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpLnVpLXN0YXRlLWRpc2FibGVkIC51aS10YWJzLWFuY2hvciwudWktdGFicyAudWktdGFicy1uYXYgbGkudWktdGFicy1sb2FkaW5nIC51aS10YWJzLWFuY2hvcntjdXJzb3I6dGV4dH0udWktdGFicy1jb2xsYXBzaWJsZSAudWktdGFicy1uYXYgbGkudWktdGFicy1hY3RpdmUgLnVpLXRhYnMtYW5jaG9ye2N1cnNvcjpwb2ludGVyfS51aS10YWJzIC51aS10YWJzLXBhbmVse2Rpc3BsYXk6YmxvY2s7Ym9yZGVyLXdpZHRoOjA7cGFkZGluZzoxZW0gMS40ZW07YmFja2dyb3VuZDpub25lfS51aS10b29sdGlwe3BhZGRpbmc6OHB4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6OTk5OTttYXgtd2lkdGg6MzAwcHh9Ym9keSAudWktdG9vbHRpcHtib3JkZXItd2lkdGg6MnB4fQ==]]></data>
	</file>
	<file>
	  <filename>/css/jquery-ui.theme.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIGpRdWVyeSBVSSBDU1MgRnJhbWV3b3JrIDEuMTIuMC1yYy4yCiAqIGh0dHA6Ly9qcXVlcnl1aS5jb20KICoKICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMKICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAqCiAqIGh0dHA6Ly9hcGkuanF1ZXJ5dWkuY29tL2NhdGVnb3J5L3RoZW1pbmcvCiAqCiAqIFRvIHZpZXcgYW5kIG1vZGlmeSB0aGlzIHRoZW1lLCB2aXNpdCBodHRwOi8vanF1ZXJ5dWkuY29tL3RoZW1lcm9sbGVyLz9iZ1NoYWRvd1hQb3M9JmJnT3ZlcmxheVhQb3M9JmJnRXJyb3JYUG9zPSZiZ0hpZ2hsaWdodFhQb3M9JmJnQ29udGVudFhQb3M9JmJnSGVhZGVyWFBvcz0mYmdBY3RpdmVYUG9zPSZiZ0hvdmVyWFBvcz0mYmdEZWZhdWx0WFBvcz0mYmdTaGFkb3dZUG9zPSZiZ092ZXJsYXlZUG9zPSZiZ0Vycm9yWVBvcz0mYmdIaWdobGlnaHRZUG9zPSZiZ0NvbnRlbnRZUG9zPSZiZ0hlYWRlcllQb3M9JmJnQWN0aXZlWVBvcz0mYmdIb3ZlcllQb3M9JmJnRGVmYXVsdFlQb3M9JmJnU2hhZG93UmVwZWF0PSZiZ092ZXJsYXlSZXBlYXQ9JmJnRXJyb3JSZXBlYXQ9JmJnSGlnaGxpZ2h0UmVwZWF0PSZiZ0NvbnRlbnRSZXBlYXQ9JmJnSGVhZGVyUmVwZWF0PSZiZ0FjdGl2ZVJlcGVhdD0mYmdIb3ZlclJlcGVhdD0mYmdEZWZhdWx0UmVwZWF0PSZpY29uc0hvdmVyPXVybCglMjJpbWFnZXMlMkZ1aS1pY29uc181NTU1NTVfMjU2eDI0MC5wbmclMjIpJmljb25zSGlnaGxpZ2h0PXVybCglMjJpbWFnZXMlMkZ1aS1pY29uc183Nzc2MjBfMjU2eDI0MC5wbmclMjIpJmljb25zSGVhZGVyPXVybCglMjJpbWFnZXMlMkZ1aS1pY29uc180NDQ0NDRfMjU2eDI0MC5wbmclMjIpJmljb25zRXJyb3I9dXJsKCUyMmltYWdlcyUyRnVpLWljb25zX2NjMDAwMF8yNTZ4MjQwLnBuZyUyMikmaWNvbnNEZWZhdWx0PXVybCglMjJpbWFnZXMlMkZ1aS1pY29uc183Nzc3NzdfMjU2eDI0MC5wbmclMjIpJmljb25zQ29udGVudD11cmwoJTIyaW1hZ2VzJTJGdWktaWNvbnNfNDQ0NDQ0XzI1NngyNDAucG5nJTIyKSZpY29uc0FjdGl2ZT11cmwoJTIyaW1hZ2VzJTJGdWktaWNvbnNfZmZmZmZmXzI1NngyNDAucG5nJTIyKSZiZ0ltZ1VybFNoYWRvdz0mYmdJbWdVcmxPdmVybGF5PSZiZ0ltZ1VybEhvdmVyPSZiZ0ltZ1VybEhpZ2hsaWdodD0mYmdJbWdVcmxIZWFkZXI9JmJnSW1nVXJsRXJyb3I9JmJnSW1nVXJsRGVmYXVsdD0mYmdJbWdVcmxDb250ZW50PSZiZ0ltZ1VybEFjdGl2ZT0mb3BhY2l0eUZpbHRlclNoYWRvdz1BbHBoYShPcGFjaXR5JTNEMzApJm9wYWNpdHlGaWx0ZXJPdmVybGF5PUFscGhhKE9wYWNpdHklM0QzMCkmb3BhY2l0eVNoYWRvd1BlcmM9MzAmb3BhY2l0eU92ZXJsYXlQZXJjPTMwJmljb25Db2xvckhvdmVyPSUyMzU1NTU1NSZpY29uQ29sb3JIaWdobGlnaHQ9JTIzNzc3NjIwJmljb25Db2xvckhlYWRlcj0lMjM0NDQ0NDQmaWNvbkNvbG9yRXJyb3I9JTIzY2MwMDAwJmljb25Db2xvckRlZmF1bHQ9JTIzNzc3Nzc3Jmljb25Db2xvckNvbnRlbnQ9JTIzNDQ0NDQ0Jmljb25Db2xvckFjdGl2ZT0lMjNmZmZmZmYmYmdJbWdPcGFjaXR5U2hhZG93PTAmYmdJbWdPcGFjaXR5T3ZlcmxheT0wJmJnSW1nT3BhY2l0eUVycm9yPTk1JmJnSW1nT3BhY2l0eUhpZ2hsaWdodD01NSZiZ0ltZ09wYWNpdHlDb250ZW50PTc1JmJnSW1nT3BhY2l0eUhlYWRlcj03NSZiZ0ltZ09wYWNpdHlBY3RpdmU9NjUmYmdJbWdPcGFjaXR5SG92ZXI9NzUmYmdJbWdPcGFjaXR5RGVmYXVsdD03NSZiZ1RleHR1cmVTaGFkb3c9ZmxhdCZiZ1RleHR1cmVPdmVybGF5PWZsYXQmYmdUZXh0dXJlRXJyb3I9ZmxhdCZiZ1RleHR1cmVIaWdobGlnaHQ9ZmxhdCZiZ1RleHR1cmVDb250ZW50PWZsYXQmYmdUZXh0dXJlSGVhZGVyPWZsYXQmYmdUZXh0dXJlQWN0aXZlPWZsYXQmYmdUZXh0dXJlSG92ZXI9ZmxhdCZiZ1RleHR1cmVEZWZhdWx0PWZsYXQmY29ybmVyUmFkaXVzPTNweCZmd0RlZmF1bHQ9bm9ybWFsJmZmRGVmYXVsdD1BcmlhbCUyQ0hlbHZldGljYSUyQ3NhbnMtc2VyaWYmZnNEZWZhdWx0PTFlbSZjb3JuZXJSYWRpdXNTaGFkb3c9OHB4JnRoaWNrbmVzc1NoYWRvdz01cHgmb2Zmc2V0TGVmdFNoYWRvdz0wcHgmb2Zmc2V0VG9wU2hhZG93PTBweCZvcGFjaXR5U2hhZG93PS4zJmJnQ29sb3JTaGFkb3c9JTIzNjY2NjY2Jm9wYWNpdHlPdmVybGF5PS4zJmJnQ29sb3JPdmVybGF5PSUyM2FhYWFhYSZmY0Vycm9yPSUyMzVmM2YzZiZib3JkZXJDb2xvckVycm9yPSUyM2YxYTg5OSZiZ0NvbG9yRXJyb3I9JTIzZmRkZmRmJmZjSGlnaGxpZ2h0PSUyMzc3NzYyMCZib3JkZXJDb2xvckhpZ2hsaWdodD0lMjNkYWQ1NWUmYmdDb2xvckhpZ2hsaWdodD0lMjNmZmZhOTAmZmNDb250ZW50PSUyMzMzMzMzMyZib3JkZXJDb2xvckNvbnRlbnQ9JTIzZGRkZGRkJmJnQ29sb3JDb250ZW50PSUyM2ZmZmZmZiZmY0hlYWRlcj0lMjMzMzMzMzMmYm9yZGVyQ29sb3JIZWFkZXI9JTIzZGRkZGRkJmJnQ29sb3JIZWFkZXI9JTIzZTllOWU5JmZjQWN0aXZlPSUyM2ZmZmZmZiZib3JkZXJDb2xvckFjdGl2ZT0lMjMwMDNlZmYmYmdDb2xvckFjdGl2ZT0lMjMwMDdmZmYmZmNIb3Zlcj0lMjMyYjJiMmImYm9yZGVyQ29sb3JIb3Zlcj0lMjNjY2NjY2MmYmdDb2xvckhvdmVyPSUyM2VkZWRlZCZmY0RlZmF1bHQ9JTIzNDU0NTQ1JmJvcmRlckNvbG9yRGVmYXVsdD0lMjNjNWM1YzUmYmdDb2xvckRlZmF1bHQ9JTIzZjZmNmY2CiAqLwoKCi8qIENvbXBvbmVudCBjb250YWluZXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoudWktd2lkZ2V0IHsKCWZvbnQtZmFtaWx5OiBBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjsKCWZvbnQtc2l6ZTogMWVtOwp9Ci51aS13aWRnZXQgLnVpLXdpZGdldCB7Cglmb250LXNpemU6IDFlbTsKfQoudWktd2lkZ2V0IGlucHV0LAoudWktd2lkZ2V0IHNlbGVjdCwKLnVpLXdpZGdldCB0ZXh0YXJlYSwKLnVpLXdpZGdldCBidXR0b24gewoJZm9udC1mYW1pbHk6IEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmOwoJZm9udC1zaXplOiAxZW07Cn0KLnVpLXdpZGdldC51aS13aWRnZXQtY29udGVudCB7Cglib3JkZXI6IDFweCBzb2xpZCAjYzVjNWM1Owp9Ci51aS13aWRnZXQtY29udGVudCB7Cglib3JkZXI6IDFweCBzb2xpZCAjZGRkZGRkOwoJYmFja2dyb3VuZDogI2ZmZmZmZjsKCWNvbG9yOiAjMzMzMzMzOwp9Ci51aS13aWRnZXQtY29udGVudCBhIHsKCWNvbG9yOiAjMzMzMzMzOwp9Ci51aS13aWRnZXQtaGVhZGVyIHsKCWJvcmRlcjogMXB4IHNvbGlkICNkZGRkZGQ7CgliYWNrZ3JvdW5kOiAjZTllOWU5OwoJY29sb3I6ICMzMzMzMzM7Cglmb250LXdlaWdodDogYm9sZDsKfQoudWktd2lkZ2V0LWhlYWRlciBhIHsKCWNvbG9yOiAjMzMzMzMzOwp9CgovKiBJbnRlcmFjdGlvbiBzdGF0ZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi51aS1zdGF0ZS1kZWZhdWx0LAoudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWRlZmF1bHQsCi51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1kZWZhdWx0LAoudWktYnV0dG9uLAoKLyogV2UgdXNlIGh0bWwgaGVyZSBiZWNhdXNlIHdlIG5lZWQgYSBncmVhdGVyIHNwZWNpZmljaXR5IHRvIG1ha2Ugc3VyZSBkaXNhYmxlZAp3b3JrcyBwcm9wZXJseSB3aGVuIGNsaWNrZWQgb3IgaG92ZXJlZCAqLwpodG1sIC51aS1idXR0b24udWktc3RhdGUtZGlzYWJsZWQ6aG92ZXIsCmh0bWwgLnVpLWJ1dHRvbi51aS1zdGF0ZS1kaXNhYmxlZDphY3RpdmUgewoJYm9yZGVyOiAxcHggc29saWQgI2M1YzVjNTsKCWJhY2tncm91bmQ6ICNmNmY2ZjY7Cglmb250LXdlaWdodDogbm9ybWFsOwoJY29sb3I6ICM0NTQ1NDU7Cn0KLnVpLXN0YXRlLWRlZmF1bHQgYSwKLnVpLXN0YXRlLWRlZmF1bHQgYTpsaW5rLAoudWktc3RhdGUtZGVmYXVsdCBhOnZpc2l0ZWQsCmEudWktYnV0dG9uLAphOmxpbmsudWktYnV0dG9uLAphOnZpc2l0ZWQudWktYnV0dG9uLAoudWktYnV0dG9uIHsKCWNvbG9yOiAjNDU0NTQ1OwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci51aS1zdGF0ZS1ob3ZlciwKLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1ob3ZlciwKLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWhvdmVyLAoudWktc3RhdGUtZm9jdXMsCi51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZm9jdXMsCi51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1mb2N1cywKLnVpLWJ1dHRvbjpob3ZlciwKLnVpLWJ1dHRvbjpmb2N1cyB7Cglib3JkZXI6IDFweCBzb2xpZCAjY2NjY2NjOwoJYmFja2dyb3VuZDogI2VkZWRlZDsKCWZvbnQtd2VpZ2h0OiBub3JtYWw7Cgljb2xvcjogIzJiMmIyYjsKfQoudWktc3RhdGUtaG92ZXIgYSwKLnVpLXN0YXRlLWhvdmVyIGE6aG92ZXIsCi51aS1zdGF0ZS1ob3ZlciBhOmxpbmssCi51aS1zdGF0ZS1ob3ZlciBhOnZpc2l0ZWQsCi51aS1zdGF0ZS1mb2N1cyBhLAoudWktc3RhdGUtZm9jdXMgYTpob3ZlciwKLnVpLXN0YXRlLWZvY3VzIGE6bGluaywKLnVpLXN0YXRlLWZvY3VzIGE6dmlzaXRlZCwKYS51aS1idXR0b246aG92ZXIsCmEudWktYnV0dG9uOmZvY3VzIHsKCWNvbG9yOiAjMmIyYjJiOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgoudWktdmlzdWFsLWZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAzcHggMXB4IHJnYig5NCwgMTU4LCAyMTQpOwp9Ci51aS1zdGF0ZS1hY3RpdmUsCi51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtYWN0aXZlLAoudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtYWN0aXZlLAphLnVpLWJ1dHRvbjphY3RpdmUsCi51aS1idXR0b246YWN0aXZlLAoudWktYnV0dG9uLnVpLXN0YXRlLWFjdGl2ZTpob3ZlciB7Cglib3JkZXI6IDFweCBzb2xpZCAjMDAzZWZmOwoJYmFja2dyb3VuZDogIzAwN2ZmZjsKCWZvbnQtd2VpZ2h0OiBub3JtYWw7Cgljb2xvcjogI2ZmZmZmZjsKfQoudWktaWNvbi1iYWNrZ3JvdW5kLAoudWktc3RhdGUtYWN0aXZlIC51aS1pY29uLWJhY2tncm91bmQgewoJYm9yZGVyOiAjMDAzZWZmOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKfQoudWktc3RhdGUtYWN0aXZlIGEsCi51aS1zdGF0ZS1hY3RpdmUgYTpsaW5rLAoudWktc3RhdGUtYWN0aXZlIGE6dmlzaXRlZCB7Cgljb2xvcjogI2ZmZmZmZjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLyogSW50ZXJhY3Rpb24gQ3VlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLnVpLXN0YXRlLWhpZ2hsaWdodCwKLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1oaWdobGlnaHQsCi51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1oaWdobGlnaHQgewoJYm9yZGVyOiAxcHggc29saWQgI2RhZDU1ZTsKCWJhY2tncm91bmQ6ICNmZmZhOTA7Cgljb2xvcjogIzc3NzYyMDsKfQoudWktc3RhdGUtaGlnaGxpZ2h0IGEsCi51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtaGlnaGxpZ2h0IGEsCi51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1oaWdobGlnaHQgYSB7Cgljb2xvcjogIzc3NzYyMDsKfQoudWktc3RhdGUtZXJyb3IsCi51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZXJyb3IsCi51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1lcnJvciB7Cglib3JkZXI6IDFweCBzb2xpZCAjZjFhODk5OwoJYmFja2dyb3VuZDogI2ZkZGZkZjsKCWNvbG9yOiAjNWYzZjNmOwp9Ci51aS1zdGF0ZS1lcnJvciBhLAoudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWVycm9yIGEsCi51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1lcnJvciBhIHsKCWNvbG9yOiAjNWYzZjNmOwp9Ci51aS1zdGF0ZS1lcnJvci10ZXh0LAoudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWVycm9yLXRleHQsCi51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1lcnJvci10ZXh0IHsKCWNvbG9yOiAjNWYzZjNmOwp9Ci51aS1wcmlvcml0eS1wcmltYXJ5LAoudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXByaW9yaXR5LXByaW1hcnksCi51aS13aWRnZXQtaGVhZGVyIC51aS1wcmlvcml0eS1wcmltYXJ5IHsKCWZvbnQtd2VpZ2h0OiBib2xkOwp9Ci51aS1wcmlvcml0eS1zZWNvbmRhcnksCi51aS13aWRnZXQtY29udGVudCAudWktcHJpb3JpdHktc2Vjb25kYXJ5LAoudWktd2lkZ2V0LWhlYWRlciAudWktcHJpb3JpdHktc2Vjb25kYXJ5IHsKCW9wYWNpdHk6IC43OwoJZmlsdGVyOkFscGhhKE9wYWNpdHk9NzApOyAvKiBzdXBwb3J0OiBJRTggKi8KCWZvbnQtd2VpZ2h0OiBub3JtYWw7Cn0KLnVpLXN0YXRlLWRpc2FibGVkLAoudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWRpc2FibGVkLAoudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZGlzYWJsZWQgewoJb3BhY2l0eTogLjM1OwoJZmlsdGVyOkFscGhhKE9wYWNpdHk9MzUpOyAvKiBzdXBwb3J0OiBJRTggKi8KCWJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cn0KLnVpLXN0YXRlLWRpc2FibGVkIC51aS1pY29uIHsKCWZpbHRlcjpBbHBoYShPcGFjaXR5PTM1KTsgLyogc3VwcG9ydDogSUU4IC0gU2VlICM2MDU5ICovCn0KCi8qIEljb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLyogc3RhdGVzIGFuZCBpbWFnZXMgKi8KLnVpLWljb24gewoJd2lkdGg6IDE2cHg7CgloZWlnaHQ6IDE2cHg7Cn0KLnVpLWljb24sCi51aS13aWRnZXQtY29udGVudCAudWktaWNvbiB7CgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy91aS1pY29uc180NDQ0NDRfMjU2eDI0MC5wbmciKTsKfQoudWktd2lkZ2V0LWhlYWRlciAudWktaWNvbiB7CgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy91aS1pY29uc180NDQ0NDRfMjU2eDI0MC5wbmciKTsKfQoudWktYnV0dG9uIC51aS1pY29uIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL3VpLWljb25zXzc3Nzc3N18yNTZ4MjQwLnBuZyIpOwp9Ci51aS1zdGF0ZS1ob3ZlciAudWktaWNvbiwKLnVpLXN0YXRlLWZvY3VzIC51aS1pY29uLAoudWktYnV0dG9uOmhvdmVyIC51aS1pY29uLAoudWktYnV0dG9uOmZvY3VzIC51aS1pY29uLAoudWktc3RhdGUtZGVmYXVsdCAudWktaWNvbiB7CgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy91aS1pY29uc181NTU1NTVfMjU2eDI0MC5wbmciKTsKfQoudWktc3RhdGUtYWN0aXZlIC51aS1pY29uLAoudWktYnV0dG9uOmFjdGl2ZSAudWktaWNvbiB7CgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy91aS1pY29uc19mZmZmZmZfMjU2eDI0MC5wbmciKTsKfQoudWktc3RhdGUtaGlnaGxpZ2h0IC51aS1pY29uLAoudWktYnV0dG9uIC51aS1zdGF0ZS1oaWdobGlnaHQudWktaWNvbiB7CgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy91aS1pY29uc183Nzc2MjBfMjU2eDI0MC5wbmciKTsKfQoudWktc3RhdGUtZXJyb3IgLnVpLWljb24sCi51aS1zdGF0ZS1lcnJvci10ZXh0IC51aS1pY29uIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL3VpLWljb25zX2NjMDAwMF8yNTZ4MjQwLnBuZyIpOwp9CgovKiBwb3NpdGlvbmluZyAqLwoudWktaWNvbi1ibGFuayB7IGJhY2tncm91bmQtcG9zaXRpb246IDE2cHggMTZweDsgfQoudWktaWNvbi1jYXJldC0xLW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7IH0KLnVpLWljb24tY2FyZXQtMS1uZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IDA7IH0KLnVpLWljb24tY2FyZXQtMS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggMDsgfQoudWktaWNvbi1jYXJldC0xLXNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggMDsgfQoudWktaWNvbi1jYXJldC0xLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjVweCAwOyB9Ci51aS1pY29uLWNhcmV0LTEtc3cgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAwOyB9Ci51aS1pY29uLWNhcmV0LTEtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IDA7IH0KLnVpLWljb24tY2FyZXQtMS1udyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAwOyB9Ci51aS1pY29uLWNhcmV0LTItbi1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IDA7IH0KLnVpLWljb24tY2FyZXQtMi1lLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggMDsgfQoudWktaWNvbi10cmlhbmdsZS0xLW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xNnB4OyB9Ci51aS1pY29uLXRyaWFuZ2xlLTEtbmUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMTZweDsgfQoudWktaWNvbi10cmlhbmdsZS0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTZweDsgfQoudWktaWNvbi10cmlhbmdsZS0xLXNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTE2cHg7IH0KLnVpLWljb24tdHJpYW5nbGUtMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY1cHggLTE2cHg7IH0KLnVpLWljb24tdHJpYW5nbGUtMS1zdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xNnB4OyB9Ci51aS1pY29uLXRyaWFuZ2xlLTEtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xNnB4OyB9Ci51aS1pY29uLXRyaWFuZ2xlLTEtbncgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTE2cHg7IH0KLnVpLWljb24tdHJpYW5nbGUtMi1uLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTE2cHg7IH0KLnVpLWljb24tdHJpYW5nbGUtMi1lLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTE2cHg7IH0KLnVpLWljb24tYXJyb3ctMS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMzJweDsgfQoudWktaWNvbi1hcnJvdy0xLW5lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTMycHg7IH0KLnVpLWljb24tYXJyb3ctMS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTMycHg7IH0KLnVpLWljb24tYXJyb3ctMS1zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93LTEtcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NXB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93LTEtc3cgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMzJweDsgfQoudWktaWNvbi1hcnJvdy0xLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMzJweDsgfQoudWktaWNvbi1hcnJvdy0xLW53IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93LTItbi1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93LTItbmUtc3cgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTMycHg7IH0KLnVpLWljb24tYXJyb3ctMi1lLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTMycHg7IH0KLnVpLWljb24tYXJyb3ctMi1zZS1udyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtMzJweDsgfQoudWktaWNvbi1hcnJvd3N0b3AtMS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93c3RvcC0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHggLTMycHg7IH0KLnVpLWljb24tYXJyb3dzdG9wLTEtcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMjRweCAtMzJweDsgfQoudWktaWNvbi1hcnJvd3N0b3AtMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTI0MHB4IC0zMnB4OyB9Ci51aS1pY29uLWFycm93dGhpY2stMS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMXB4IC00OHB4OyB9Ci51aS1pY29uLWFycm93dGhpY2stMS1uZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC00OHB4OyB9Ci51aS1pY29uLWFycm93dGhpY2stMS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGljay0xLXNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGljay0xLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrLTEtc3cgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrLTEtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC00OHB4OyB9Ci51aS1pY29uLWFycm93dGhpY2stMS1udyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrLTItbi1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC00OHB4OyB9Ci51aS1pY29uLWFycm93dGhpY2stMi1uZS1zdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrLTItZS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC00OHB4OyB9Ci51aS1pY29uLWFycm93dGhpY2stMi1zZS1udyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkycHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IC00OHB4OyB9Ci51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMjRweCAtNDhweDsgfQoudWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjQwcHggLTQ4cHg7IH0KLnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC02NHB4OyB9Ci51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTY0cHg7IH0KLnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtNjRweDsgfQoudWktaWNvbi1hcnJvd3JldHVybnRoaWNrLTEtcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC02NHB4OyB9Ci51aS1pY29uLWFycm93cmV0dXJuLTEtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC02NHB4OyB9Ci51aS1pY29uLWFycm93cmV0dXJuLTEtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC02NHB4OyB9Ci51aS1pY29uLWFycm93cmV0dXJuLTEtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC02NHB4OyB9Ci51aS1pY29uLWFycm93cmV0dXJuLTEtcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtNjRweDsgfQoudWktaWNvbi1hcnJvd3JlZnJlc2gtMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC02NHB4OyB9Ci51aS1pY29uLWFycm93cmVmcmVzaC0xLW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTY0cHg7IH0KLnVpLWljb24tYXJyb3dyZWZyZXNoLTEtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtNjRweDsgfQoudWktaWNvbi1hcnJvd3JlZnJlc2gtMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC02NHB4OyB9Ci51aS1pY29uLWFycm93LTQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC04MHB4OyB9Ci51aS1pY29uLWFycm93LTQtZGlhZyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC04MHB4OyB9Ci51aS1pY29uLWV4dGxpbmsgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtODBweDsgfQoudWktaWNvbi1uZXd3aW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtODBweDsgfQoudWktaWNvbi1yZWZyZXNoIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTgwcHg7IH0KLnVpLWljb24tc2h1ZmZsZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC04MHB4OyB9Ci51aS1pY29uLXRyYW5zZmVyLWUtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC04MHB4OyB9Ci51aS1pY29uLXRyYW5zZmVydGhpY2stZS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC04MHB4OyB9Ci51aS1pY29uLWZvbGRlci1jb2xsYXBzZWQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC05NnB4OyB9Ci51aS1pY29uLWZvbGRlci1vcGVuIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTk2cHg7IH0KLnVpLWljb24tZG9jdW1lbnQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtOTZweDsgfQoudWktaWNvbi1kb2N1bWVudC1iIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTk2cHg7IH0KLnVpLWljb24tbm90ZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC05NnB4OyB9Ci51aS1pY29uLW1haWwtY2xvc2VkIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTk2cHg7IH0KLnVpLWljb24tbWFpbC1vcGVuIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTk2cHg7IH0KLnVpLWljb24tc3VpdGNhc2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTk2cHg7IH0KLnVpLWljb24tY29tbWVudCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtOTZweDsgfQoudWktaWNvbi1wZXJzb24geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTk2cHg7IH0KLnVpLWljb24tcHJpbnQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTk2cHg7IH0KLnVpLWljb24tdHJhc2ggeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTk2cHg7IH0KLnVpLWljb24tbG9ja2VkIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC05NnB4OyB9Ci51aS1pY29uLXVubG9ja2VkIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IC05NnB4OyB9Ci51aS1pY29uLWJvb2ttYXJrIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNHB4IC05NnB4OyB9Ci51aS1pY29uLXRhZyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yNDBweCAtOTZweDsgfQoudWktaWNvbi1ob21lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTEycHg7IH0KLnVpLWljb24tZmxhZyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0xMTJweDsgfQoudWktaWNvbi1jYWxlbmRhciB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0xMTJweDsgfQoudWktaWNvbi1jYXJ0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTExMnB4OyB9Ci51aS1pY29uLXBlbmNpbCB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0xMTJweDsgfQoudWktaWNvbi1jbG9jayB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xMTJweDsgfQoudWktaWNvbi1kaXNrIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTExMnB4OyB9Ci51aS1pY29uLWNhbGN1bGF0b3IgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTExMnB4OyB9Ci51aS1pY29uLXpvb21pbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMTEycHg7IH0KLnVpLWljb24tem9vbW91dCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtMTEycHg7IH0KLnVpLWljb24tc2VhcmNoIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC0xMTJweDsgfQoudWktaWNvbi13cmVuY2ggeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTExMnB4OyB9Ci51aS1pY29uLWdlYXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkycHggLTExMnB4OyB9Ci51aS1pY29uLWhlYXJ0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IC0xMTJweDsgfQoudWktaWNvbi1zdGFyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNHB4IC0xMTJweDsgfQoudWktaWNvbi1saW5rIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTI0MHB4IC0xMTJweDsgfQoudWktaWNvbi1jYW5jZWwgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xMjhweDsgfQoudWktaWNvbi1wbHVzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTEyOHB4OyB9Ci51aS1pY29uLXBsdXN0aGljayB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0xMjhweDsgfQoudWktaWNvbi1taW51cyB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0xMjhweDsgfQoudWktaWNvbi1taW51c3RoaWNrIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTEyOHB4OyB9Ci51aS1pY29uLWNsb3NlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTEyOHB4OyB9Ci51aS1pY29uLWNsb3NldGhpY2sgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMTI4cHg7IH0KLnVpLWljb24ta2V5IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0xMjhweDsgfQoudWktaWNvbi1saWdodGJ1bGIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTEyOHB4OyB9Ci51aS1pY29uLXNjaXNzb3JzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC0xMjhweDsgfQoudWktaWNvbi1jbGlwYm9hcmQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTEyOHB4OyB9Ci51aS1pY29uLWNvcHkgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTEyOHB4OyB9Ci51aS1pY29uLWNvbnRhY3QgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkycHggLTEyOHB4OyB9Ci51aS1pY29uLWltYWdlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IC0xMjhweDsgfQoudWktaWNvbi12aWRlbyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMjRweCAtMTI4cHg7IH0KLnVpLWljb24tc2NyaXB0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTI0MHB4IC0xMjhweDsgfQoudWktaWNvbi1hbGVydCB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE0NHB4OyB9Ci51aS1pY29uLWluZm8geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMTQ0cHg7IH0KLnVpLWljb24tbm90aWNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTE0NHB4OyB9Ci51aS1pY29uLWhlbHAgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTQ0cHg7IH0KLnVpLWljb24tY2hlY2sgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMTQ0cHg7IH0KLnVpLWljb24tYnVsbGV0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE0NHB4OyB9Ci51aS1pY29uLXJhZGlvLW9uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTE0NHB4OyB9Ci51aS1pY29uLXJhZGlvLW9mZiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtMTQ0cHg7IH0KLnVpLWljb24tcGluLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTE0NHB4OyB9Ci51aS1pY29uLXBpbi1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC0xNDRweDsgfQoudWktaWNvbi1wbGF5IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTYwcHg7IH0KLnVpLWljb24tcGF1c2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMTYwcHg7IH0KLnVpLWljb24tc2Vlay1uZXh0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTE2MHB4OyB9Ci51aS1pY29uLXNlZWstcHJldiB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0xNjBweDsgfQoudWktaWNvbi1zZWVrLWVuZCB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0xNjBweDsgfQoudWktaWNvbi1zZWVrLXN0YXJ0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE2MHB4OyB9Ci8qIHVpLWljb24tc2Vlay1maXJzdCBpcyBkZXByZWNhdGVkLCB1c2UgdWktaWNvbi1zZWVrLXN0YXJ0IGluc3RlYWQgKi8KLnVpLWljb24tc2Vlay1maXJzdCB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xNjBweDsgfQoudWktaWNvbi1zdG9wIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTE2MHB4OyB9Ci51aS1pY29uLWVqZWN0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0xNjBweDsgfQoudWktaWNvbi12b2x1bWUtb2ZmIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0xNjBweDsgfQoudWktaWNvbi12b2x1bWUtb24geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTE2MHB4OyB9Ci51aS1pY29uLXBvd2VyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTc2cHg7IH0KLnVpLWljb24tc2lnbmFsLWRpYWcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMTc2cHg7IH0KLnVpLWljb24tc2lnbmFsIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTE3NnB4OyB9Ci51aS1pY29uLWJhdHRlcnktMCB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0xNzZweDsgfQoudWktaWNvbi1iYXR0ZXJ5LTEgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMTc2cHg7IH0KLnVpLWljb24tYmF0dGVyeS0yIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE3NnB4OyB9Ci51aS1pY29uLWJhdHRlcnktMyB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xNzZweDsgfQoudWktaWNvbi1jaXJjbGUtcGx1cyB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE5MnB4OyB9Ci51aS1pY29uLWNpcmNsZS1taW51cyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0xOTJweDsgfQoudWktaWNvbi1jaXJjbGUtY2xvc2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTkycHg7IH0KLnVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTkycHg7IH0KLnVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMTkycHg7IH0KLnVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMTkycHg7IH0KLnVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMTkycHg7IH0KLnVpLWljb24tY2lyY2xlLWFycm93LWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTE5MnB4OyB9Ci51aS1pY29uLWNpcmNsZS1hcnJvdy1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0xOTJweDsgfQoudWktaWNvbi1jaXJjbGUtYXJyb3ctdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtMTkycHg7IH0KLnVpLWljb24tY2lyY2xlLWFycm93LW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTE5MnB4OyB9Ci51aS1pY29uLWNpcmNsZS16b29taW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTE5MnB4OyB9Ci51aS1pY29uLWNpcmNsZS16b29tb3V0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC0xOTJweDsgfQoudWktaWNvbi1jaXJjbGUtY2hlY2sgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHggLTE5MnB4OyB9Ci51aS1pY29uLWNpcmNsZXNtYWxsLXBsdXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0yMDhweDsgfQoudWktaWNvbi1jaXJjbGVzbWFsbC1taW51cyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0yMDhweDsgfQoudWktaWNvbi1jaXJjbGVzbWFsbC1jbG9zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0yMDhweDsgfQoudWktaWNvbi1zcXVhcmVzbWFsbC1wbHVzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTIwOHB4OyB9Ci51aS1pY29uLXNxdWFyZXNtYWxsLW1pbnVzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTIwOHB4OyB9Ci51aS1pY29uLXNxdWFyZXNtYWxsLWNsb3NlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTIwOHB4OyB9Ci51aS1pY29uLWdyaXAtZG90dGVkLXZlcnRpY2FsIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMjI0cHg7IH0KLnVpLWljb24tZ3JpcC1kb3R0ZWQtaG9yaXpvbnRhbCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0yMjRweDsgfQoudWktaWNvbi1ncmlwLXNvbGlkLXZlcnRpY2FsIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTIyNHB4OyB9Ci51aS1pY29uLWdyaXAtc29saWQtaG9yaXpvbnRhbCB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0yMjRweDsgfQoudWktaWNvbi1ncmlwc21hbGwtZGlhZ29uYWwtc2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMjI0cHg7IH0KLnVpLWljb24tZ3JpcC1kaWFnb25hbC1zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0yMjRweDsgfQoKCi8qIE1pc2MgdmlzdWFscwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8qIENvcm5lciByYWRpdXMgKi8KLnVpLWNvcm5lci1hbGwsCi51aS1jb3JuZXItdG9wLAoudWktY29ybmVyLWxlZnQsCi51aS1jb3JuZXItdGwgewoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4Owp9Ci51aS1jb3JuZXItYWxsLAoudWktY29ybmVyLXRvcCwKLnVpLWNvcm5lci1yaWdodCwKLnVpLWNvcm5lci10ciB7Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4Owp9Ci51aS1jb3JuZXItYWxsLAoudWktY29ybmVyLWJvdHRvbSwKLnVpLWNvcm5lci1sZWZ0LAoudWktY29ybmVyLWJsIHsKCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDsKfQoudWktY29ybmVyLWFsbCwKLnVpLWNvcm5lci1ib3R0b20sCi51aS1jb3JuZXItcmlnaHQsCi51aS1jb3JuZXItYnIgewoJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDsKfQoKLyogT3ZlcmxheXMgKi8KLnVpLXdpZGdldC1vdmVybGF5IHsKCWJhY2tncm91bmQ6ICNhYWFhYWE7CglvcGFjaXR5OiAuMDAzOwoJZmlsdGVyOiBBbHBoYShPcGFjaXR5PS4zKTsgLyogc3VwcG9ydDogSUU4ICovCn0KLnVpLXdpZGdldC1zaGFkb3cgewoJLXdlYmtpdC1ib3gtc2hhZG93OiAwcHggMHB4IDVweCAjNjY2NjY2OwoJYm94LXNoYWRvdzogMHB4IDBweCA1cHggIzY2NjY2NjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/css/jquery-ui.theme.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIGpRdWVyeSBVSSAtIHYxLjEyLjAtcmMuMiAtIDIwMTYtMDQtMjEKKiBodHRwOi8vanF1ZXJ5dWkuY29tCiogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnM7IExpY2Vuc2VkIE1JVCAqLwoKLnVpLXdpZGdldHtmb250LWZhbWlseTpBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjtmb250LXNpemU6MWVtfS51aS13aWRnZXQgLnVpLXdpZGdldHtmb250LXNpemU6MWVtfS51aS13aWRnZXQgaW5wdXQsLnVpLXdpZGdldCBzZWxlY3QsLnVpLXdpZGdldCB0ZXh0YXJlYSwudWktd2lkZ2V0IGJ1dHRvbntmb250LWZhbWlseTpBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjtmb250LXNpemU6MWVtfS51aS13aWRnZXQudWktd2lkZ2V0LWNvbnRlbnR7Ym9yZGVyOjFweCBzb2xpZCAjYzVjNWM1fS51aS13aWRnZXQtY29udGVudHtib3JkZXI6MXB4IHNvbGlkICNkZGQ7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMzMzN9LnVpLXdpZGdldC1jb250ZW50IGF7Y29sb3I6IzMzM30udWktd2lkZ2V0LWhlYWRlcntib3JkZXI6MXB4IHNvbGlkICNkZGQ7YmFja2dyb3VuZDojZTllOWU5O2NvbG9yOiMzMzM7Zm9udC13ZWlnaHQ6Ym9sZH0udWktd2lkZ2V0LWhlYWRlciBhe2NvbG9yOiMzMzN9LnVpLXN0YXRlLWRlZmF1bHQsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1kZWZhdWx0LC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1kZWZhdWx0LC51aS1idXR0b24saHRtbCAudWktYnV0dG9uLnVpLXN0YXRlLWRpc2FibGVkOmhvdmVyLGh0bWwgLnVpLWJ1dHRvbi51aS1zdGF0ZS1kaXNhYmxlZDphY3RpdmV7Ym9yZGVyOjFweCBzb2xpZCAjYzVjNWM1O2JhY2tncm91bmQ6I2Y2ZjZmNjtmb250LXdlaWdodDpub3JtYWw7Y29sb3I6IzQ1NDU0NX0udWktc3RhdGUtZGVmYXVsdCBhLC51aS1zdGF0ZS1kZWZhdWx0IGE6bGluaywudWktc3RhdGUtZGVmYXVsdCBhOnZpc2l0ZWQsYS51aS1idXR0b24sYTpsaW5rLnVpLWJ1dHRvbixhOnZpc2l0ZWQudWktYnV0dG9uLC51aS1idXR0b257Y29sb3I6IzQ1NDU0NTt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktc3RhdGUtaG92ZXIsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1ob3ZlciwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtaG92ZXIsLnVpLXN0YXRlLWZvY3VzLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZm9jdXMsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWZvY3VzLC51aS1idXR0b246aG92ZXIsLnVpLWJ1dHRvbjpmb2N1c3tib3JkZXI6MXB4IHNvbGlkICNjY2M7YmFja2dyb3VuZDojZWRlZGVkO2ZvbnQtd2VpZ2h0Om5vcm1hbDtjb2xvcjojMmIyYjJifS51aS1zdGF0ZS1ob3ZlciBhLC51aS1zdGF0ZS1ob3ZlciBhOmhvdmVyLC51aS1zdGF0ZS1ob3ZlciBhOmxpbmssLnVpLXN0YXRlLWhvdmVyIGE6dmlzaXRlZCwudWktc3RhdGUtZm9jdXMgYSwudWktc3RhdGUtZm9jdXMgYTpob3ZlciwudWktc3RhdGUtZm9jdXMgYTpsaW5rLC51aS1zdGF0ZS1mb2N1cyBhOnZpc2l0ZWQsYS51aS1idXR0b246aG92ZXIsYS51aS1idXR0b246Zm9jdXN7Y29sb3I6IzJiMmIyYjt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktdmlzdWFsLWZvY3Vze2JveC1zaGFkb3c6MCAwIDNweCAxcHggcmdiKDk0LDE1OCwyMTQpfS51aS1zdGF0ZS1hY3RpdmUsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1hY3RpdmUsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWFjdGl2ZSxhLnVpLWJ1dHRvbjphY3RpdmUsLnVpLWJ1dHRvbjphY3RpdmUsLnVpLWJ1dHRvbi51aS1zdGF0ZS1hY3RpdmU6aG92ZXJ7Ym9yZGVyOjFweCBzb2xpZCAjMDAzZWZmO2JhY2tncm91bmQ6IzAwN2ZmZjtmb250LXdlaWdodDpub3JtYWw7Y29sb3I6I2ZmZn0udWktaWNvbi1iYWNrZ3JvdW5kLC51aS1zdGF0ZS1hY3RpdmUgLnVpLWljb24tYmFja2dyb3VuZHtib3JkZXI6IzAwM2VmZjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LnVpLXN0YXRlLWFjdGl2ZSBhLC51aS1zdGF0ZS1hY3RpdmUgYTpsaW5rLC51aS1zdGF0ZS1hY3RpdmUgYTp2aXNpdGVke2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVpLXN0YXRlLWhpZ2hsaWdodCwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWhpZ2hsaWdodCwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtaGlnaGxpZ2h0e2JvcmRlcjoxcHggc29saWQgI2RhZDU1ZTtiYWNrZ3JvdW5kOiNmZmZhOTA7Y29sb3I6Izc3NzYyMH0udWktc3RhdGUtaGlnaGxpZ2h0IGEsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1oaWdobGlnaHQgYSwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtaGlnaGxpZ2h0IGF7Y29sb3I6Izc3NzYyMH0udWktc3RhdGUtZXJyb3IsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1lcnJvciwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3J7Ym9yZGVyOjFweCBzb2xpZCAjZjFhODk5O2JhY2tncm91bmQ6I2ZkZGZkZjtjb2xvcjojNWYzZjNmfS51aS1zdGF0ZS1lcnJvciBhLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZXJyb3IgYSwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3IgYXtjb2xvcjojNWYzZjNmfS51aS1zdGF0ZS1lcnJvci10ZXh0LC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZXJyb3ItdGV4dCwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3ItdGV4dHtjb2xvcjojNWYzZjNmfS51aS1wcmlvcml0eS1wcmltYXJ5LC51aS13aWRnZXQtY29udGVudCAudWktcHJpb3JpdHktcHJpbWFyeSwudWktd2lkZ2V0LWhlYWRlciAudWktcHJpb3JpdHktcHJpbWFyeXtmb250LXdlaWdodDpib2xkfS51aS1wcmlvcml0eS1zZWNvbmRhcnksLnVpLXdpZGdldC1jb250ZW50IC51aS1wcmlvcml0eS1zZWNvbmRhcnksLnVpLXdpZGdldC1oZWFkZXIgLnVpLXByaW9yaXR5LXNlY29uZGFyeXtvcGFjaXR5Oi43O2ZpbHRlcjpBbHBoYShPcGFjaXR5PTcwKTtmb250LXdlaWdodDpub3JtYWx9LnVpLXN0YXRlLWRpc2FibGVkLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZGlzYWJsZWQsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWRpc2FibGVke29wYWNpdHk6LjM1O2ZpbHRlcjpBbHBoYShPcGFjaXR5PTM1KTtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9LnVpLXN0YXRlLWRpc2FibGVkIC51aS1pY29ue2ZpbHRlcjpBbHBoYShPcGFjaXR5PTM1KX0udWktaWNvbnt3aWR0aDoxNnB4O2hlaWdodDoxNnB4fS51aS1pY29uLC51aS13aWRnZXQtY29udGVudCAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zXzQ0NDQ0NF8yNTZ4MjQwLnBuZyIpfS51aS13aWRnZXQtaGVhZGVyIC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfNDQ0NDQ0XzI1NngyNDAucG5nIil9LnVpLWJ1dHRvbiAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zXzc3Nzc3N18yNTZ4MjQwLnBuZyIpfS51aS1zdGF0ZS1ob3ZlciAudWktaWNvbiwudWktc3RhdGUtZm9jdXMgLnVpLWljb24sLnVpLWJ1dHRvbjpob3ZlciAudWktaWNvbiwudWktYnV0dG9uOmZvY3VzIC51aS1pY29uLC51aS1zdGF0ZS1kZWZhdWx0IC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfNTU1NTU1XzI1NngyNDAucG5nIil9LnVpLXN0YXRlLWFjdGl2ZSAudWktaWNvbiwudWktYnV0dG9uOmFjdGl2ZSAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zX2ZmZmZmZl8yNTZ4MjQwLnBuZyIpfS51aS1zdGF0ZS1oaWdobGlnaHQgLnVpLWljb24sLnVpLWJ1dHRvbiAudWktc3RhdGUtaGlnaGxpZ2h0LnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc183Nzc2MjBfMjU2eDI0MC5wbmciKX0udWktc3RhdGUtZXJyb3IgLnVpLWljb24sLnVpLXN0YXRlLWVycm9yLXRleHQgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc19jYzAwMDBfMjU2eDI0MC5wbmciKX0udWktaWNvbi1ibGFua3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjE2cHggMTZweH0udWktaWNvbi1jYXJldC0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9LnVpLWljb24tY2FyZXQtMS1uZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IDB9LnVpLWljb24tY2FyZXQtMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggMH0udWktaWNvbi1jYXJldC0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggMH0udWktaWNvbi1jYXJldC0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjVweCAwfS51aS1pY29uLWNhcmV0LTEtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAwfS51aS1pY29uLWNhcmV0LTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IDB9LnVpLWljb24tY2FyZXQtMS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAwfS51aS1pY29uLWNhcmV0LTItbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IDB9LnVpLWljb24tY2FyZXQtMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggMH0udWktaWNvbi10cmlhbmdsZS0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtbmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY1cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMi1uLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTE2cHh9LnVpLWljb24tYXJyb3ctMS1ue2JhY2tncm91bmQtcG9zaXRpb246MCAtMzJweH0udWktaWNvbi1hcnJvdy0xLW5le2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NXB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLW53e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0zMnB4fS51aS1pY29uLWFycm93LTItbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0zMnB4fS51aS1pY29uLWFycm93LTItbmUtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTMycHh9LnVpLWljb24tYXJyb3ctMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTMycHh9LnVpLWljb24tYXJyb3ctMi1zZS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtMzJweH0udWktaWNvbi1hcnJvd3N0b3AtMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC0zMnB4fS51aS1pY29uLWFycm93c3RvcC0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMjA4cHggLTMycHh9LnVpLWljb24tYXJyb3dzdG9wLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtMzJweH0udWktaWNvbi1hcnJvd3N0b3AtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC0zMnB4fS51aS1pY29uLWFycm93dGhpY2stMS1ue2JhY2tncm91bmQtcG9zaXRpb246MXB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1uZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTItbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMi1uZS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTItZS13e2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMi1zZS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS1le2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTQ4cHh9LnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjowIC02NHB4fS51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTY0cHh9LnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybnRoaWNrLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJuLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJuLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJuLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJuLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtNjRweH0udWktaWNvbi1hcnJvd3JlZnJlc2gtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC02NHB4fS51aS1pY29uLWFycm93cmVmcmVzaC0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTY0cHh9LnVpLWljb24tYXJyb3dyZWZyZXNoLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtNjRweH0udWktaWNvbi1hcnJvd3JlZnJlc2gtMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC02NHB4fS51aS1pY29uLWFycm93LTR7YmFja2dyb3VuZC1wb3NpdGlvbjowIC04MHB4fS51aS1pY29uLWFycm93LTQtZGlhZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC04MHB4fS51aS1pY29uLWV4dGxpbmt7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtODBweH0udWktaWNvbi1uZXd3aW57YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtODBweH0udWktaWNvbi1yZWZyZXNoe2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTgwcHh9LnVpLWljb24tc2h1ZmZsZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC04MHB4fS51aS1pY29uLXRyYW5zZmVyLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC04MHB4fS51aS1pY29uLXRyYW5zZmVydGhpY2stZS13e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC04MHB4fS51aS1pY29uLWZvbGRlci1jb2xsYXBzZWR7YmFja2dyb3VuZC1wb3NpdGlvbjowIC05NnB4fS51aS1pY29uLWZvbGRlci1vcGVue2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTk2cHh9LnVpLWljb24tZG9jdW1lbnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtOTZweH0udWktaWNvbi1kb2N1bWVudC1ie2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTk2cHh9LnVpLWljb24tbm90ZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC05NnB4fS51aS1pY29uLW1haWwtY2xvc2Vke2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTk2cHh9LnVpLWljb24tbWFpbC1vcGVue2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTk2cHh9LnVpLWljb24tc3VpdGNhc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTk2cHh9LnVpLWljb24tY29tbWVudHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtOTZweH0udWktaWNvbi1wZXJzb257YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTk2cHh9LnVpLWljb24tcHJpbnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTk2cHh9LnVpLWljb24tdHJhc2h7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTk2cHh9LnVpLWljb24tbG9ja2Vke2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC05NnB4fS51aS1pY29uLXVubG9ja2Vke2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC05NnB4fS51aS1pY29uLWJvb2ttYXJre2JhY2tncm91bmQtcG9zaXRpb246LTIyNHB4IC05NnB4fS51aS1pY29uLXRhZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtOTZweH0udWktaWNvbi1ob21le2JhY2tncm91bmQtcG9zaXRpb246MCAtMTEycHh9LnVpLWljb24tZmxhZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xMTJweH0udWktaWNvbi1jYWxlbmRhcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xMTJweH0udWktaWNvbi1jYXJ0e2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTExMnB4fS51aS1pY29uLXBlbmNpbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xMTJweH0udWktaWNvbi1jbG9ja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xMTJweH0udWktaWNvbi1kaXNre2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTExMnB4fS51aS1pY29uLWNhbGN1bGF0b3J7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTExMnB4fS51aS1pY29uLXpvb21pbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTEycHh9LnVpLWljb24tem9vbW91dHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTEycHh9LnVpLWljb24tc2VhcmNoe2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC0xMTJweH0udWktaWNvbi13cmVuY2h7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTExMnB4fS51aS1pY29uLWdlYXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTExMnB4fS51aS1pY29uLWhlYXJ0e2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC0xMTJweH0udWktaWNvbi1zdGFye2JhY2tncm91bmQtcG9zaXRpb246LTIyNHB4IC0xMTJweH0udWktaWNvbi1saW5re2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC0xMTJweH0udWktaWNvbi1jYW5jZWx7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xMjhweH0udWktaWNvbi1wbHVze2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTEyOHB4fS51aS1pY29uLXBsdXN0aGlja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xMjhweH0udWktaWNvbi1taW51c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xMjhweH0udWktaWNvbi1taW51c3RoaWNre2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTEyOHB4fS51aS1pY29uLWNsb3Nle2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTEyOHB4fS51aS1pY29uLWNsb3NldGhpY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTI4cHh9LnVpLWljb24ta2V5e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xMjhweH0udWktaWNvbi1saWdodGJ1bGJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTEyOHB4fS51aS1pY29uLXNjaXNzb3Jze2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xMjhweH0udWktaWNvbi1jbGlwYm9hcmR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTEyOHB4fS51aS1pY29uLWNvcHl7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTEyOHB4fS51aS1pY29uLWNvbnRhY3R7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTEyOHB4fS51aS1pY29uLWltYWdle2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC0xMjhweH0udWktaWNvbi12aWRlb3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtMTI4cHh9LnVpLWljb24tc2NyaXB0e2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC0xMjhweH0udWktaWNvbi1hbGVydHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE0NHB4fS51aS1pY29uLWluZm97YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTQ0cHh9LnVpLWljb24tbm90aWNle2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTE0NHB4fS51aS1pY29uLWhlbHB7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTQ0cHh9LnVpLWljb24tY2hlY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTQ0cHh9LnVpLWljb24tYnVsbGV0e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE0NHB4fS51aS1pY29uLXJhZGlvLW9ue2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTE0NHB4fS51aS1pY29uLXJhZGlvLW9mZntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTQ0cHh9LnVpLWljb24tcGluLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTE0NHB4fS51aS1pY29uLXBpbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xNDRweH0udWktaWNvbi1wbGF5e2JhY2tncm91bmQtcG9zaXRpb246MCAtMTYwcHh9LnVpLWljb24tcGF1c2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTYwcHh9LnVpLWljb24tc2Vlay1uZXh0e2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTE2MHB4fS51aS1pY29uLXNlZWstcHJldntiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xNjBweH0udWktaWNvbi1zZWVrLWVuZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xNjBweH0udWktaWNvbi1zZWVrLXN0YXJ0e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE2MHB4fS51aS1pY29uLXNlZWstZmlyc3R7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTYwcHh9LnVpLWljb24tc3RvcHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xNjBweH0udWktaWNvbi1lamVjdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTYwcHh9LnVpLWljb24tdm9sdW1lLW9mZntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTYwcHh9LnVpLWljb24tdm9sdW1lLW9ue2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xNjBweH0udWktaWNvbi1wb3dlcntiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE3NnB4fS51aS1pY29uLXNpZ25hbC1kaWFne2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTE3NnB4fS51aS1pY29uLXNpZ25hbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xNzZweH0udWktaWNvbi1iYXR0ZXJ5LTB7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTc2cHh9LnVpLWljb24tYmF0dGVyeS0xe2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTE3NnB4fS51aS1pY29uLWJhdHRlcnktMntiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNzZweH0udWktaWNvbi1iYXR0ZXJ5LTN7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTc2cHh9LnVpLWljb24tY2lyY2xlLXBsdXN7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xOTJweH0udWktaWNvbi1jaXJjbGUtbWludXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWNsb3Nle2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1le2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS13e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1ue2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1hcnJvdy1le2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtYXJyb3ctc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWFycm93LXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1hcnJvdy1ue2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtem9vbWlue2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtem9vbW91dHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWNoZWNre2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGVzbWFsbC1wbHVze2JhY2tncm91bmQtcG9zaXRpb246MCAtMjA4cHh9LnVpLWljb24tY2lyY2xlc21hbGwtbWludXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMjA4cHh9LnVpLWljb24tY2lyY2xlc21hbGwtY2xvc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMjA4cHh9LnVpLWljb24tc3F1YXJlc21hbGwtcGx1c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0yMDhweH0udWktaWNvbi1zcXVhcmVzbWFsbC1taW51c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0yMDhweH0udWktaWNvbi1zcXVhcmVzbWFsbC1jbG9zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0yMDhweH0udWktaWNvbi1ncmlwLWRvdHRlZC12ZXJ0aWNhbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTIyNHB4fS51aS1pY29uLWdyaXAtZG90dGVkLWhvcml6b250YWx7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMjI0cHh9LnVpLWljb24tZ3JpcC1zb2xpZC12ZXJ0aWNhbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0yMjRweH0udWktaWNvbi1ncmlwLXNvbGlkLWhvcml6b250YWx7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMjI0cHh9LnVpLWljb24tZ3JpcHNtYWxsLWRpYWdvbmFsLXNle2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTIyNHB4fS51aS1pY29uLWdyaXAtZGlhZ29uYWwtc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMjI0cHh9LnVpLWNvcm5lci1hbGwsLnVpLWNvcm5lci10b3AsLnVpLWNvcm5lci1sZWZ0LC51aS1jb3JuZXItdGx7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czozcHh9LnVpLWNvcm5lci1hbGwsLnVpLWNvcm5lci10b3AsLnVpLWNvcm5lci1yaWdodCwudWktY29ybmVyLXRye2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjNweH0udWktY29ybmVyLWFsbCwudWktY29ybmVyLWJvdHRvbSwudWktY29ybmVyLWxlZnQsLnVpLWNvcm5lci1ibHtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjNweH0udWktY29ybmVyLWFsbCwudWktY29ybmVyLWJvdHRvbSwudWktY29ybmVyLXJpZ2h0LC51aS1jb3JuZXItYnJ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6M3B4fS51aS13aWRnZXQtb3ZlcmxheXtiYWNrZ3JvdW5kOiNhYWE7b3BhY2l0eTouMDAzO2ZpbHRlcjpBbHBoYShPcGFjaXR5PS4zKX0udWktd2lkZ2V0LXNoYWRvd3std2Via2l0LWJveC1zaGFkb3c6MCAwIDVweCAjNjY2O2JveC1zaGFkb3c6MCAwIDVweCAjNjY2fQ==]]></data>
	</file>
	<file>
	  <filename>/css/print.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhIHByaW50IHsKCiAgLyogSGlkZSBibG9ja3Mgb24gdGhlIHByaW50IG91dHB1dCAqLwogICNoZWFkZXIsCiAgI25hdmlnYXRpb24sCiAgI2Zvb3RlciwKICAudmlzdWFsbHloaWRkZW4sCiAucGFnZW9wdGlvbnMsCiAucm93IGhlYWRlciwKICAuc2lkZWJhciwKIC5jb250ZW50LXRvcCBjZiwKICBoMSwKICAuYnRuLAogIC52aWRlbywKICAubm9wcmludCB7CiAgICBkaXNwbGF5OiBub25lOyAKICB9CgogIC8qIENoYW5nZSB0ZW1wbGF0ZSBhbmQgY29udGVudCBzdHlsaW5nIHN1aXRhYmxlIGZvciBwcmludGluZyBvbiBwbGFpbiBwYXBlciAqLwogIGJvZHkgewogICAgaGVpZ2h0OiBhdXRvOwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGNvbG9yOiAjMzMzOwogIH0KICBhOmxpbmssIGE6dmlzaXRlZCwgYTphY3RpdmUgewogICAgY29sb3I6ICMzMzM7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgfQogIGgyLCBoMyB7CiAgICBwYWRkaW5nLWJvdHRvbTogMXB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMwMDA7CiAgICBjb2xvcjogIzAwMDsKICB9CiAgaDQsIGg1LCBoNiB7IGNvbG9yOiAjMDAwIH0KCnRhYmxlCnsKICB3aWR0aDoxMDAlOwogIHRleHQtYWxpZ246bGVmdDsKICBmb250LXNpemU6IDgwJTsKfQp0YWJsZSwgdGgsIHRkCnsKICBib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7CiAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CiAgCn0KfQ==]]></data>
	</file>
	<file>
	  <filename>/function.calculs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNrZWxldG9uIChjKSAyMDA4IAojICAgICAgYnkgUm9iZXJ0IEFsbGVuIChha3JhYmF0KSBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgpmdW5jdGlvbiBDYWxjdWxFY2FydCgkZWNhcnQpCnsKCWlmKCRlY2FydCA+PTAgJiYgJGVjYXJ0IDwgMjUpIHsgJGVjYXJ0ID0gMTsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTI1ICYmICRlY2FydCA8IDUwKXsgJGVjYXJ0ID0gMjsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTUwICYmICRlY2FydCA8IDEwMCl7ICRlY2FydCA9IDM7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPj0xMDAgJiYgJGVjYXJ0IDwgMTUwKXsgJGVjYXJ0ID0gNDsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTE1MCAmJiAkZWNhcnQgPCAyMDApeyAkZWNhcnQgPSA1OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0ID49MjAwICYmICRlY2FydCA8IDMwMCl7ICRlY2FydCA9IDY7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPj0zMDAgJiYgJGVjYXJ0IDwgNDAwKXsgJGVjYXJ0ID0gNzsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTQwMCAmJiAkZWNhcnQgPCA1MDApeyAkZWNhcnQgPSA4OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0ID49NTAwKXsgJGVjYXJ0ID0gOTsgcmV0dXJuICRlY2FydDsgfQoJCQoJZWxzZWlmKCRlY2FydCA+IC0yNSAmJiAkZWNhcnQgPCAwKXskZWNhcnQgPSAtMTsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA8PSAtMjUgJiYgJGVjYXJ0ID4gLTUwKXskZWNhcnQgPSAtMjsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA8PSAtNTAgJiYgJGVjYXJ0ID4gLTEwMCl7JGVjYXJ0ID0gLTM7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPD0gLTEwMCAmJiAkZWNhcnQgPiAtMTUwKXskZWNhcnQgPSAtNDsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA8PSAtMTUwICYmICRlY2FydCA+IC0yMDApeyRlY2FydCA9IC01OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0IDw9IC0yMDAgJiYgJGVjYXJ0ID4gLTMwMCl7JGVjYXJ0ID0gLTY7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPD0gLTMwMCAmJiAkZWNhcnQgPiAtNDAwKXskZWNhcnQgPSAtNzsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA8PSAtNDAwICYmICRlY2FydCA+IC01MDApeyRlY2FydCA9IC04OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0IDw9IC01MDApeyRlY2FydCA9IC05OyByZXR1cm4gJGVjYXJ0OyB9Cn0KCmZ1bmN0aW9uIENhbGN1bFBvaW50cygkZWNhcnQsJHZpY3RvaXJlLCRsb2NhdXgpIHsKJGdDbXMgPSBjbXNtcygpOwkKaWYoJGxvY2F1eD09J0EnKSB7CgkKCWlmKCRlY2FydCA9PTEpCgl7CgkJaWYoJHZpY3RvaXJlID09ICdBQkNEJykKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkkcmVzdWx0WzBdID0gNjsKCQkgICAgICAgIC8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ3ZpY05vcm0wXzI0Jyk7CgkJCSRyZXN1bHRbMV0gPSAxOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJCSAKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ2RlZkFub3JtMF8yNCcpOwoJCQkkcmVzdWx0WzBdID0gLTU7CgkJCSRyZXN1bHRbMV0gPSAwOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTIpCgl7CgkJaWYoJHZpY3RvaXJlID09ICdBQkNEJykKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCd2aWNOb3JtMjVfNDknKTsKCQkJJHJlc3VsdFswXSA9IDUuNTsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQkJCgkJfQoJCWVsc2UKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTI1XzQ5Jyk7CgkJCSRyZXN1bHRbMF0gPSAtNjsKCQkJJHJlc3VsdFsxXSA9IDA7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09MykKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ3ZpY05vcm01MF85OScpOwoJCQkkcmVzdWx0WzBdID0gNTsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ2RlZkFub3JtNTBfOTknKTsKCQkJJHJlc3VsdFswXSA9IC03OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT00KQoJewoJCWlmKCR2aWN0b2lyZSA9PSAnQUJDRCcpCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkvLwkkcmVzdWx0WzBdID0gR2V0UHJlZmVyZW5jZSgndmljTm9ybTEwMF8xNDknKTsKCQkJJHJlc3VsdFswXSA9IDQ7CgkJCSRyZXN1bHRbMV0gPSAxOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTEwMF8xNDknKTsKCQkJJHJlc3VsdFswXSA9IC04OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT01KQoJewoJCWlmKCR2aWN0b2lyZSA9PSAnQUJDRCcpCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJLy8kcmVzdWx0WzBdID0gR2V0UHJlZmVyZW5jZSgndmljTm9ybTE1MF8xOTknKTsKCQkJJHJlc3VsdFswXSA9IDM7CgkJCSRyZXN1bHRbMV0gPSAxOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTE1MF8xOTknKTsKCQkJJHJlc3VsdFswXSA9IC0xMDsKCQkJJHJlc3VsdFsxXSA9IDA7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09NikKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ3ZpY05vcm0yMDBfMjk5Jyk7CgkJCSRyZXN1bHRbMF0gPSAyOwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJLy8kcmVzdWx0WzBdID0gR2V0UHJlZmVyZW5jZSgnZGVmQW5vcm0yMDBfMjk5Jyk7CgkJCSRyZXN1bHRbMF0gPSAtMTIuNTsKCQkJJHJlc3VsdFsxXSA9IDA7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09NykKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ3ZpY05vcm0zMDBfMzk5Jyk7CgkJCSRyZXN1bHRbMF0gPSAxOwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJLy8kcmVzdWx0WzBdID0gR2V0UHJlZmVyZW5jZSgnZGVmQW5vcm0zMDBfMzk5Jyk7CgkJCSRyZXN1bHRbMF0gPSAtMTY7CgkJCSRyZXN1bHRbMV0gPSAwOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTgpCgl7CgkJaWYoJHZpY3RvaXJlID09ICdBQkNEJykKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCd2aWNOb3JtNDAwXzQ5OScpOwoJCQkkcmVzdWx0WzBdID0gMC41OwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJLy8kcmVzdWx0WzBdID0gR2V0UHJlZmVyZW5jZSgnZGVmQW5vcm00MDBfNDk5Jyk7CgkJCSRyZXN1bHRbMF0gPSAtMjA7CgkJCSRyZXN1bHRbMV0gPSAwOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTkpCgl7CgkJaWYoJHZpY3RvaXJlID09ICdBQkNEJykKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCd2aWNOb3JtUGx1czUwMCcpOwoJCQkkcmVzdWx0WzBdID0gMDsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ2RlZkFub3JtUGx1czUwMCcpOwoJCQkkcmVzdWx0WzBdID0gLTI5OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tMSkKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSA2OwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJJHJlc3VsdFswXSA9IC01OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tMikKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSA3OwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQkKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAtNC41OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tMykKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSA4OwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJJHJlc3VsdFswXSA9IC00OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tNCkKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAxMDsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAtMzsKCQkJJHJlc3VsdFsxXSA9IDA7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09LTUpCgl7CgkJaWYoJHZpY3RvaXJlID09ICdBQkNEJykKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkkcmVzdWx0WzBdID0gMTM7CgkJCSRyZXN1bHRbMV0gPSAxOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkkcmVzdWx0WzBdID0gLTI7CgkJCSRyZXN1bHRbMV0gPSAwOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS02KQoJewoJCWlmKCR2aWN0b2lyZSA9PSAnQUJDRCcpCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJJHJlc3VsdFswXSA9IDE3OwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJJHJlc3VsdFswXSA9IC0xOwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tNykKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAyMjsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAtMC41OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tOCkKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAyODsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAwOwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tOSkKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSA0MDsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAwOwoJCQkkcmVzdWx0WzFdID0gMDsKCQl9Cgl9Cn0KZWxzZWlmKCRsb2NhdXg9PSdCJyl7CglpZigkZWNhcnQgPT0xKQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSA2OwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJCSAKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTU7CgkJJHJlc3VsdFsxXSA9IDE7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PTIpCnsKCWlmKCR2aWN0b2lyZSA9PSAnV1hZWicpCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IDUuNTsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCQkKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTY7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PTMpCnsKCWlmKCR2aWN0b2lyZSA9PSAnV1hZWicpCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IDU7CgkJJHJlc3VsdFsxXSA9IDE7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9CgllbHNlCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IC03OwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT00KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSA0OwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQoJZWxzZQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAtODsKCQkkcmVzdWx0WzFdID0gMDsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KfQplbHNlaWYoJGVjYXJ0ID09NSkKewoJaWYoJHZpY3RvaXJlID09ICdXWFlaJykKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gMzsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTEwOwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT02KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAyOwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQoJZWxzZQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAtMTIuNTsKCQkkcmVzdWx0WzFdID0gMDsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KfQplbHNlaWYoJGVjYXJ0ID09NykKewoJaWYoJHZpY3RvaXJlID09ICdXWFlaJykKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gMTsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTE2OwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT04KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAwLjU7CgkJJHJlc3VsdFsxXSA9IDE7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9CgllbHNlCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IC0yMDsKCQkkcmVzdWx0WzFdID0gMDsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KfQplbHNlaWYoJGVjYXJ0ID09OSkKewoJaWYoJHZpY3RvaXJlID09ICdXWFlaJykKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gMDsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCQkKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTI5OwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT0tMSkKewoJaWYoJHZpY3RvaXJlID09ICdXWFlaJykKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gNjsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTU7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PS0yKQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSA3OwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJCQoJfQoJZWxzZQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAtNC41OwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT0tMykKewoJaWYoJHZpY3RvaXJlID09ICdXWFlaJykKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gODsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTQ7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PS00KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAxMDsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTM7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PS01KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAxMzsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTI7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PS02KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAxNzsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTE7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PS03KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAyMjsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTAuNTsKCQkkcmVzdWx0WzFdID0gMDsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KfQplbHNlaWYoJGVjYXJ0ID09LTgpCnsKCWlmKCR2aWN0b2lyZSA9PSAnV1hZWicpCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IDI4OwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQoJZWxzZQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAwOwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT0tOSkKewoJaWYoJHZpY3RvaXJlID09ICdXWFladycpCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IDQwOwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQoJZWxzZQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAwOwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CgkKfQp9CQoKCgpmdW5jdGlvbiBDYWxjdWxQb2ludHNJbmRpdnMoJGVjYXJ0LCR2aWN0b2lyZSkgewoKCQoJCWlmKCRlY2FydCA9PTEpCgl7CgkJaWYoICR2aWN0b2lyZSA9PSAxKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSA2OwkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQkgCgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTU7CgkJCQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTIpCgl7CgkJaWYoICR2aWN0b2lyZSA9PTEpCgkJewoJCQkKCQkJJHJlc3VsdCA9IDUuNTsKCQkJCgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQkJCgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTY7CgkJCQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTMpCgl7CgkJaWYoJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gNTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTc7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT00KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSA0OwoJCQkKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkKCQkJJHJlc3VsdCA9IC04OwoJCQkKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT01KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAzOwoJCQkKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkKCQkJJHJlc3VsdCA9IC0xMDsKCQkJCgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09NikKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMjsKCQkJCgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtMTIuNTsKCQkJCgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09NykKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTE2OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09OCkKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMC41OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtMjA7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT05KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAwOwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtMjk7CQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS0xKQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSA2OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtNTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydD09LTIpCgl7CgkJaWYoICR2aWN0b2lyZSA9PTEpCgkJewoJCQkKCQkJJHJlc3VsdCA9IDc7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQkKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtNC41OwkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tMykKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gODsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTQ7CgkJCQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS00KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAxMDsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTM7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tNSkKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMTM7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkKCQkJJHJlc3VsdCA9IC0yOwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09LTYpCgl7CgkJaWYoICR2aWN0b2lyZSA9PTEpCgkJewoJCQkKCQkJJHJlc3VsdCA9IDE3OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtMTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS03KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAyMjsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTAuNTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS04KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAyODsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMDsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS05KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSA0MDsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMDsKCQkJCgkJfQoJfQoKfQpmdW5jdGlvbiBwbGF5ZXJFeGlzdHMgKCR1c2VybmFtZSwkcHRzKXsKCSAkZGIgID0gY21zbXMoKS0+R2V0RGIoKTsKCSRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLgoJJ21vZHVsZV9waW5nX2pvdWV1cnMgV0hFUkUgdXNlcm5hbWUgPSA/JzsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoICR1c2VybmFtZSApKTsKCQoJLy8xZXJlIGNvbmRpdGlvbiA6IHBhcyBkZSBjb3JyZXNwb25kYW5jZSA6IGxlIGpvdWV1ciBuJ2V4aXN0ZSBwYXMgOiBvbiBsJ2luc8OocmUgCglpZigkZGJyZXN1bHQgICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKSB7CgkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIChpZCwgdXNlcm5hbWUsIHB0cykgVkFMVUVTICgnJywgPywgPykiOwoJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdXNlcm5hbWUsJHB0cykpOwoJfQoJLyogTGUgam91ZXVyIGV4aXN0ZSBkw6lqw6AgKi8KCS8qIG9uIHZhIHbDqXJpZmllciBzaSBsZSBub21icmUgZGUgcG9pbnRzIGNvcnJlc3BvbmQgb3UgcGFzICovCglpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkgewoJCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIHVzZXJuYW1lID0gPyBBTkQgcHRzID0/IjsKCQkkZGJyZXRvdXIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdXNlcm5hbWUsJHB0cykpOwoJLyogTGUgam91ZXVyIGV4aXN0ZSBldCBsZXMgcG9pbnRzIGNvcnJlc3BvbmRlbnQgb24gbmUgZmFpdCByaWVuKi8JCgkJaWYoJGRicmV0b3VyICYmICRkYnJldG91ci0+UmVjb3JkQ291bnQoKSA+IDApewoJCQl9CgkJCWVsc2V7CgkJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFNFVCBwdHMgPSA/IFdIRVJFIHVzZXJuYW1lID0gPyI7CgkJCQkkcmVzdWx0MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRwdHMsICR1c2VybmFtZSkpOwoJCQl9CgkJCS8vIGluc2NyaXB0aW9uIGRzIGxhIHRhYmxlIGRlcyBjbGFzc2VtZW50cyAKCQkJJG1vaXNfY291cmFudCA9IGRhdGUoIm4iKTsKCQkJJHNhaXNvbiA9ICcyMDEzLTIwMTQnOwoJCS8vCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2x0cyAoaWQsIHVzZXJuYW1lLCBwdHMsIG1vaXMsc2Fpc29uKSBWQUxVRVMgKCcnLD8sPyw/LD8pIjsKCQkvLwkkcmVzdWx0MyA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR1c2VybmFtZSwkcHRzLCRtb2lzX2NvdXJhbnQsICRzYWlzb24pKTsKCQl9Cgl9CgoKZnVuY3Rpb24gY29tcGV0ICgkY29tcGV0aXRpb24pewoJJGRiICA9IGNtc21zKCktPkdldERiKCk7CiRxdWVyeSA9IlNFTEVDVCBjb2VmZmljaWVudCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jb21wZXRpdGlvbnMgV0hFUkUgY29kZV9jb21wZXQgPSA/IjsKJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNvbXBldGl0aW9uKSk7CmlmICgkZGJyZXRvdXIgJiYgJGRicmV0b3VyLT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmV0b3VyLT5GZXRjaFJvdygpKQogICAgICB7CgkkY29lZmYgPSAkcm93Wydjb2VmZmljaWVudCddOwoJcmV0dXJuICRjb2VmZjsKCX0KCQp9Cn0KCmZ1bmN0aW9uIENoZXJjaGVQdHMgKCRqb3VldXIpewoJJGRiICA9IGNtc21zKCktPkdldERiKCk7CgkkcXVlcnkgPSAiU0VMRUNUIHB0cyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIHVzZXJuYW1lID0gPyI7CQoJJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGpvdWV1cikpOwoJaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQogIAkJewogICAgCQkJd2hpbGUgKCRyb3c9ICRkYnJldG91ci0+RmV0Y2hSb3coKSkKICAgICAgCQkJewoJCQkJJHB0cyA9ICRyb3dbJ3B0cyddOwoJCQkJcmV0dXJuICRwdHM7CgkJCX0KCQoJCX0KfQoKZnVuY3Rpb24gbmJqb3VldXJzICgkY29tcGV0aXRpb24pewoJJGRiICA9IGNtc21zKCktPkdldERiKCk7CiRxdWVyeSA9IlNFTEVDVCBqb3VldXJzLCBwYXJ0aWVzIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbXBldGl0aW9ucyBXSEVSRSBjb2RlX2NvbXBldCA9ID8iOwokZGJyZXRvdXIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkY29tcGV0aXRpb24pKTsKaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXRvdXItPkZldGNoUm93KCkpCiAgICAgIHsKCSRyZXN1bHRbXSA9ICRyb3dbJ2pvdWV1cnMnXTsKCSRyZXN1bHRbXSA9ICRyb3dbJ3BhcnRpZXMnXTsKCXJldHVybiAkcmVzdWx0OwoJCgl9CgkKfQp9CgpmdW5jdGlvbiBkcm9wZG93biAoJGNvbXBldGl0aW9uKXsKCSRkYiAgPSBjbXNtcygpLT5HZXREYigpOwokcXVlcnkgPSJTRUxFQ1Qgam91ZXVycyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jb21wZXRpdGlvbnMgV0hFUkUgY29kZV9jb21wZXQgPSA/IjsKJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNvbXBldGl0aW9uKSk7CmlmICgkZGJyZXRvdXIgJiYgJGRicmV0b3VyLT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmV0b3VyLT5GZXRjaFJvdygpKQogICAgICB7Cgkkam91ZXVycyA9ICRyb3dbJ2pvdWV1cnMnXTsKCXJldHVybiAkam91ZXVyczsKCX0KCQp9Cn0KCmZ1bmN0aW9uIHJhbmRvbSgkY2FyKSB7CiRzdHJpbmcgPSAiIjsKJGNoYWluZSA9ICJhYmNkZWZnaGlqa2xtbnBxcnN0dXZ3eHkiOwpzcmFuZCgoZG91YmxlKW1pY3JvdGltZSgpKjEwMDAwMDApOwpmb3IoJGk9MDsgJGk8JGNhcjsgJGkrKykgewokc3RyaW5nIC49ICRjaGFpbmVbcmFuZCgpJXN0cmxlbigkY2hhaW5lKV07Cn0KcmV0dXJuICRzdHJpbmc7Cn0KCmZ1bmN0aW9uIGNvZWZmICgkdHlwZUNvbXBldGl0aW9uKQp7CgkkZGIgID0gY21zbXMoKS0+R2V0RGIoKTsKCS8qCglpZihzdWJzdHJfY291bnQoJHR5cGVDb21wZXRpdGlvbiwnLScpPjApCgl7CgkJJHR5cGVfaW50ZXIgPSBleHBsb2RlKCctJywkdHlwZUNvbXBldGl0aW9uLDIpOwoJCSR0eXBlID0gJHR5cGVfaW50ZXJbMF07Cgl9CgkqLwoJCS8vCSR0eXBlID0gJHR5cGVDb21wZXRpdGlvbjsKCQoKJHF1ZXJ5ID0iU0VMRUNUIGNvZWZmaWNpZW50IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIFdIRVJFIG5hbWUgPSA/IjsKJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHR5cGVDb21wZXRpdGlvbikpOwoKCWlmICgkZGJyZXRvdXIgJiYgJGRicmV0b3VyLT5SZWNvcmRDb3VudCgpID4gMCkKICAJewogICAgCQl3aGlsZSAoJHJvdz0gJGRicmV0b3VyLT5GZXRjaFJvdygpKQogICAgICAJCXsKCQkJJGNvZWZmID0gJHJvd1snY29lZmZpY2llbnQnXTsKCQkJcmV0dXJuICRjb2VmZjsKCQl9CgkKCX0KCWVsc2UKCXsKCQkkY29lZmYgPSAwOwoJCXJldHVybiAkY29lZmY7CgkJLy9lY2hvICJjb2VmZmljaWVudCBpbnRyb3V2YWJsZSAhIjsKCX0KfQoKZnVuY3Rpb24gY29lZmZfb2xkICgkY2xlKXsKCSRkYiAgPSBjbXNtcygpLT5HZXREYigpOwokcXVlcnkgPSJTRUxFQ1QgY29lZmZpY2llbnQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY29tcGV0aXRpb25zIEFTIGNvbXAsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZW5jb250cmVzIEFTIHJlbiBXSEVSRSBjb21wLmNvZGVfY29tcGV0ID0gcmVuLnR5cGVfY29tcGV0IEFORCByZW4uY2xlID0gID8iOwokZGJyZXRvdXIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkY2xlKSk7CmlmICgkZGJyZXRvdXIgJiYgJGRicmV0b3VyLT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmV0b3VyLT5GZXRjaFJvdygpKQogICAgICB7CgkkY29lZmYgPSAkcm93Wydjb2VmZmljaWVudCddOwoJcmV0dXJuICRjb2VmZjsKCX0KCQp9CmVsc2V7CgllY2hvICJjb2VmZmljaWVudCBpbnRyb3V2YWJsZSAhIjsKfQkJCmZ1bmN0aW9uIGRhdGV2ZXJzZnIgKCRkYXRlLCRkZWxpbWl0ZXIpewkgICAKCQoJJGRhdGVhcnIgPSBleHBsb2RlKCRkZWxpbWl0ZXIsICRkYXRlKTsKCSRkYXRlZnIgPSAkZGF0ZWFyclsyXSAuICctJyAuICRkYXRlYXJyWzFdIC4gJy0nIC4gJGRhdGVhcnJbMF07CglyZXR1cm4gJGRhdGVmcjsKCX0KfQpmdW5jdGlvbiBtb2lzX2ZyYW5jYWlzKCRtb2lzLCRsb25ndWV1cil7CglpZighaXNzZXQoJGxvbmd1ZXVyKSB8fCAkbG9uZ3VldXIgPT0nJyl7CgkJJG1vbnRocyA9IGFycmF5KCJKYW52aWVyIiwgIkbDqXZyaWVyIiwgIk1hcnMiLCAiQXZyaWwiLCAiTWFpIiwgIkp1aW4iLCAianVpbGxldCIsICJBb3V0IiwgIlNlcHRlbWJyZSIsICJPY3RvYnJlIiwgIk5vdmVtYnJlIiwgImTDqWNlbWJyZSIpOwoJfQoJZWxzZQoJewoJCSRtb250aHMgPSBhcnJheSgiSmFuIiwgIkbDqXYiLCAiTWFyIiwgIkF2ciIsICJNYWkiLCAiSnVpbiIsICJqdWlsIiwgIkFvdSIsICJTZXAiLCAiT2N0IiwgIk5vdiIsICJkw6ljIik7Cgl9CgkkbW9udGhfdG9fZGlzcGxheSA9ICRtb2lzLTE7CgkkbW9udGhfZnJhbmNhaXMgPSAkbW9udGhzWyIkbW9udGhfdG9fZGlzcGxheSJdOwoJcmV0dXJuICRtb250aF9mcmFuY2FpczsKfQpmdW5jdGlvbiBnZXRfbmFtZSgkbm9tKXsKCSRleHBsb3Npb24gPSBleHBsb2RlKCcgJywkbm9tKTsKCSRjb21wdGV1ciA9IGNvdW50KCRleHBsb3Npb24pOwoJJG5hbWUgPSBhcnJheSgpOwoJJHByZW5vbSA9IGFycmF5KCk7CgkKCSRpID0wOwoJZm9yZWFjaCAoJGV4cGxvc2lvbiBhcyAkdGVzdGNhc2UpIHsKCSRpKys7CQoJICBpZiAoY3R5cGVfdXBwZXIoJHRlc3RjYXNlKSkgewoJICAgICRuYW1lWyRpXSA9ICR0ZXN0Y2FzZTsKCQkvL2VjaG8gIkxhIGNoYcOubmUiLiRpLiIgJHRlc3RjYXNlIG5lIGNvbnRpZW50IHF1ZSBkZXMgbWFqdXNjdWxlcy5cbiI7CgkgIH0gZWxzZSB7CgkgICAvLyBlY2hvICJMYSBjaGHDrm5lIi4kaS4iICR0ZXN0Y2FzZSBuZSBjb250aWVudCBwYXMgcXVlIGRlcyBtYWp1c2N1bGVzLlxuIjsKCQkkcHJlbm9tWyRpXSA9ICR0ZXN0Y2FzZTsKCSAgfQoJfQoJCgkkbm9tX2ZpbmFsID0gaW1wbG9kZSgnICcsJG5hbWUpOwoJJHByZW5vbV9maW5hbCA9IGltcGxvZGUoJyAnLCRwcmVub20pOwoJJHJlc3VsdFswXSA9ICRub21fZmluYWw7CgkkcmVzdWx0WzFdID0gJHByZW5vbV9maW5hbDsKCXJldHVybiAkcmVzdWx0OwoJCn0KCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/background.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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I5U0+szA34te9KLf//3fv+2223wck285yMMHPvCBj3/847/5m7/5+te/PkmSPM/jONY+Z4jIbqpOJhxD+ZRTTnGOueN3rr/+ekTkanDITQ4kzYnh2jvvvPPFL34xhNBbLqvb7Z5yyimdTkcH3NBp3759UKIEfjRhnd761rf+0A/90NzcXLfb7Xa7DGdzo9gvOwiz7t27l73C2f866CU9HA4ZoGD4O1j6YDBYE4jBb+Z5Pj09/bKXvew973nPWABaQ/ZOQezSHkURY806H97jfs4552CZfK647777oFxIcOp24MABTXbzkECdj44BzWc5drtdE/jmT7gOSZKY5xDyXz678uGPv2pWj41wIvKFJ2gpVD0oc/B7037BMZRKqrrvx1V2tlJaWd2lJqoVVNNFAiYU8b7NM47oiCjzrN2dSgerf/xbb/jcxz4CAE95ylM/+rGP7tyxAwB27dyppPyFX/iF//TSl6ZpKqX8/Oc//8QnPnFmZmbdxk0f/PMPn3vuOf/ljb/wfz/3t6968zu2nnLGytJinMQT9nWdWR+aygERRRyTkovzR4UQ5zz28vMe/0P9lcW999x1+7e/+f3v3LTvvrsP7NuzePSIykaOIhbFydy69Vu2b9956ulnn3/xBZdcdua5523YeBICjQarSP1Ns0m8rh1F2IoiITBCiCPRioQQxdF8ooyYLLwBFu6KypiofV0pUkRxJADg6Org6OooVzTXSbatm0JERSSK6bPiWQTgEwD0QOVIFObCjiJCgIX+8PWf+Math0breq0YpCTqteL9q+rX/u7GP20nl522Zctsb8NUe/1UmwAySToEx4ZeK0KIAYSAhX72hNM2Rki5Ugh0aCU72h9KJaUiAFIE7VjMdlrtGNWQEhSrafrzTzr/6efs5AaevW0TAOxZWL153/JMOyGCWIiNMz2p3KOoeCLp9XqMRAshvvOd73BgoDvuuEPHY5qamuJTU+M45oafdtppZ5999itf+co3velNu3bt2rVr15VXXvnlL3/5mmuuabVanO3U1FSapkyfRzX6vOZkt7XwfTa8nktUunScNXVQQ8/GMMrgyDmNHALApOppEMYyfSIq9HmCDadWdQTEWDUtV5QrUASktGIa1kf5QqN3pn2iVVLQcYrtPfJ6N59pBAX209Vook1qaHntdEEAffY6sYHyDnCDpdJP5QYQ06fD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a1Zgcaisx/gV8pdAaqee6izqo8/+Ikrwlh/R22LQAiGVZhS7tcia77HdhOB/uRZpr8GUG6od2de1rzgMlL2Prwo+l8wDo9BnbHgRRpe+Wqp6yo740CNW52cADVZvzyO9HYjZHyyNZYZ0cc8CIeMR5MHW+REhsbJ9rTq//drqVH1okovY60M6LnTvKaec8ulPf/qf/umfXvva127fvj0CNw2y9K1vfWvv3r3r169fXl4GAD9Gs8l8ww03vP71rx9Rh+Xl5euvv37r1q0A0O12Y7IDMPOuXbtOOumkk08+edeuXX5UEPOJ2dlZaIiVMRwOd+3adfTRRyOiydaEzy4uLi4vL5tIxMPhcGFh4fTTTz/uuONqUWnz1v3333/nnXf++7//++c+9zmoAKmmFSYytYEpjjnmmBtuuKEWync49ZhO0O4TBtrWWj/1qU993ete5yJURDkXFhbOO++8caBev3/d+Y3V5led4qN31/St1ZopmOmNv/MHi9C+865dGjBXpIiUAZ3JRMAAzUAM5EBig4QJACidlJGFcQAVsaFdqKKjjw10lrT1gXYrXfXSvh6Drq5vhRCPH4Qj1vmtUEtsT7guCb0yvGU9t7YMoWj215+Dunq16SQ41xUrOfWyYo95J42crxkAlNZpkrz9ne/qrwxql1BMdF1/J4LxgAYARLznnnvuv/9+g/EJIQ477DAIB6rhxXe84x0/93M/5xaaHij2WnNCBICJVtptSSmwk4gDK/q2XQuz3VYqRCqkRDHMCRGHWqPAFKQWDIxD5nYq797X7w2zqU57upMyADMmAnYvqX+7+b6N0y1FJBBXcp1rWDfZBYANUx0z1oTAvf1caWKGROBkSxJlxv1y+0K/P8yWBtmm6YnHHbX+49+5GwDbifjhnsGrPvXdZ5+65ZfOedSWuWkqTkc0cch448aNP/jBD0x/vexlL/vRj3701Kc+FRG//vWvm00lxSC3Amumk5pxJRCWhjoROJmKvX2NAES8MMhObM+2EtQMAjHT3MuUGReTrSQpoojgUOmlQb5ldvLodd27DhyY7qQrOd29f2AAZUScbLfst4qzHAeK0yQhYqBia9VkO02LePYwVLqfqYJh7OGKBoB256tqraempv7xH//x8MMP37NnT6/Xk1JefPHFnU5HSvmlL33p8ssvP//887///e8/+clPVkqddNJJf/iH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8s53quDsjMX+9ACDRgYjIxSBOSmeuAgPvdbko+Q+fFZVPzxNBtyM4NBn964PLONIsvsxNBTB4pALWeReqz+ikAGwxJ1Xa+AI9DngzPrjgMajIaz5lcbaQikxhQ/UVuDUWqu4Siz/oRP1MfocuvH6bn32Zok+R1KQqx8N69l004EX0etuLJR8aOL3EQCSw3O1h8fV4FEVxK12aLCtSTmKS/S2PPfap6TDpgP0NlLtQ88S/2O28rw8PEidv+QH9Crlrez4fYQ+nOfJVYBi+MW4m1fPgLNCFi/pURmBGF5Y+Q3owidavFV4fohmVAsuMeiyFPYKqXx09eFfufLvPFAmypoEb7TsARUsz+gtjgzMQMW5eKvrMyESXZPdXxHxqz6WDmb/shfZvGwXlxg0eMs5OcGBAZUop+XXahSO0Yuma+oF17pa9Dma64OtVQ2r76MV7+rEUYnagT70XIhZdlK+seQRnx5BqwgED+KkPaJ0/iI2K6MuPlostFjOXxM/rBVlrqlPUwdALECa6qUYFoZcfav6uUc+Hm1MdSnlunXrtNY+QGzC+N51111GR922bdvc3Nz+/fuj1wFgx44dALBz505oMK1XDQe8ffv2H/7wh2eddZaLmOwemQJN4du2bdu2bdutt97qv2tOmQKAdevWRe+adOedd5r73W63NqBzUzI+0e1224QQ8actP4qFf238QZk5z/NTTz31ox/9qF/Pww8/3DlWu7Rx48ZWqzU1NeXAE4iEmCnZFGI/4xPHpVaaAtOLXvSi97/vv775t/8/E7zioHnjYU6IwNzudN/xgY9uO/6kpaVFKaU5Q/o/ccLoX53mZlLim2QA5Wzt/wMwllRh6HKx6RjAaidNrmqR5W6nlxoZao6wu+eee26++WYYOdTdqYPMvGnTpptuuklrjYha64suuuiuu+6amZlZWVnpdrt333032AA6fglCiJWVle985zvPec5zzKrOw9VJzJhKnGjJFa0TKSSKpIV37x8gYiuRiigvPKBZokgEIPCW2e78RGvnctaW4rbdS4g402nZyMhAVASDAQaBqImXh0UkoOl2YjyFBcBA6UGuptopAE53UmaWAvsD/fht07/9tFPaabJpekJpfc/+5aVBlmt4+ROOedKxGz7w1duIRSJgYYWuu3ffllMnVa5bafK9731v3759H/rQhwDg+uuvf/nLX/7Z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EobyOQAfSe8FXSxEP02xIRxq/PqMAPrYafcXO9/UArhDUgDqFOvFNEiQuwMcRqkvbq/OTwijDUkAdVu2XMKkzp/G4V2+pQ0WnfgB/SNVijU5kFoYYWyvMp7aFcID4BfSjs4dvhLPqWEhGmqR0lkBicif/pD5bqHocbvhazIqqpIklETSP1me/MroRcWntlQ+T1t4SSgyMWjLl6YaMSExBGITCmqdpcdeCN+IyZy0eTBK7RSmbhf/M0WobLuIw7RhNVqXANB0yRb+NiM/c9AXPX0gyVQJZguGf9jRqC3L6I+izsLh1lHQeAAT30uf8rRWJB91lSyY8mowHr2osIjoR8wzOBgMDe4vpTMCgRJAAKiAUSAjkqfdWkW6HoWJAftPnb/HZwgEsKkqAKFmk+f+7HOn9JyPvRgLQTBlV9hHve7oaz75qQ9fddXChQtVsNMtW7bcfPPN55133qxZswDghBNOuPPOO5999tmZM2cCQKPRcF131apVALB58+af//znhUKh0WjYtv29731v0+bNmzZurDcaN9/239yyoN4yOE9rRtAJmuURysoAN/cMcO+W6hKGjIj8U+j8awAF3TECQEYefMcIiYGP3YJ/3yuBERBDUM4f6SQmYKpYVT6ABwz6DlIsrEPbbOEjCu50zBZ/5F9j1w9prOrf0c5Y8UgISECCiAEy8qB4PwQKBkExJBFJL842Eqq4rugFEkdE4JwzxhkDImg2WgMDRQvABTAA6i6Mj08ULf7YYw9/4IrL3vSmsznnK5999q3/+o6MZbiuJYQL3lkPBECmZW4eGb/rzp+94YzTiKjZbGYymSVLll7y/vNnzZ5bzOf6BwaU032lUrnwgvde+v7zfnznLxftumujXkdkBFTK58487c2VQvb2e+8FgFqt9stf/vLEE0/cZ599L7n00mOPPfarN9xw2QXvverznz1o//0uuOBCKeXLL7982ulntFqt/77t1l133XX/Aw54z3ve/blrr73pllvr9brjOJlMhnP+85/feflVH/rtb37929/+dsmSJQCwceOGUqVy6RVXnH7i8bVaLZfLAUB/f//w8FZDwWAq+hxTKpe61vurB54Bz91fY4xIn25zis1TSOAd50YMiSFwRso7kDNPMArfWT5EYLcb9+6gFseUF8V83jya9pqKWH/hhRd+61vfeuGFFwCgUChYliWlzGQy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z0vp7rDjzl/8yleMQuarX/36Fz/7mfPe857LLrpgjz32AIAXX3zxnnvu+dBlFx934skf+NCHLRPPe/d7Mwb74x//qFrws5/97NBDD12+fPk557ztwgsu+NAHP/jF//jS3DlzK5WKEAIRjzziiGXL9nzPeedff90XV6xYAQCLFi9u1GsNVz72yF/PPvtNCu356U9/euoZb3jqySfuvvvud7zjHUKIgw466Dvf/UGj3qhOTjZbzVKphIiWaWYz2ZkzZjz4wL1EJFy3WCxYlrVx3fpZM2fd9+tfAniO841GY/OGjYxooL8kBFQnq/VGvdloOnazr3+gmMsDslqtNjAwAACWaY4OjzDO+yqVeqMRQIKFfH5sbJQRAJEnhBAKuUKtWgNQ2zWokM/XJquSpMENyzJJSrspMllz5syZzI9bks1mLMvMZXOMh174xWKxOjlRKldGRj1kuVwuN+uNXDbXbLWklIwhIpTLpYmxsUqlMjw8rD7a19fnOnaz5fpnj71mQF4bTS6m83ctg3xLShK5BDyhySj3KSHJgKjlHI6zVDPMz4P+obRBccGexzbDMCFPOyopBISMSZL1pn3tpz953PEnXPmByx+4/z7FbaobVM7YGlrwVErpuu6OO827+pOfOuMNZ01ONpvNlmFwD/2OEhxRBiceICJjavuGZ4f5wIrXC8pGR5QAQMQIXyNeeHUSRjsBAYQQROQNFUSG+AqnKNSMOYyWJoUIdjeoC7XjhjFmmgZjTApJAINZpqaA0YkmIZCUQ/2FTcMTzzz9VKvZRMZmz5m70w4zJmutF154/oH77p2cnKjXapVK5fnnnnftZj6fGx4b//S1197xk9vPOO3kUqkspTz99NM/8clPzpo9e/nyPau1phCilMvf9fOfnXrySQBg27ZlWV//+tcGBvo//alPqDDihmHMnbvD40+vJAIiWSpYd/z090cdcdjhhx/uOPanPv2Z3/zmt//77f/eZdddL7/isu9973uVcmn/A/YXQrz88ssz5+743PMvKMY7/LDDVr24SgUlZ4y5Quy9737SaaqfuVy2f6A/m8spclUqFcNgHIGpQzAlIpAOLsAr7qD/lyl9makbP/l/OqDPMZPek0JErlSRmyDYwUAEgogkelE4YthEQr/wrVb9iK4o/pJ4PbUROkYJgBwhZyEANF2KOURQqj4Kgeke00cjhmY6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]]></data>
	</file>
	<file>
	  <filename>/images/calendrier.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/images/podium.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/warning.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAN0AAP///+Xl5d3MVdnUON7WMvDosgAAAPPicNTRPOPZLfvqgffmeauZM869SuzcJNbFT+jbKNDPQubeq//2p/Png/DfacGwQerbYce2Rf//zNLJRf/+xdTMSNTU1P76u7iyjGZmZrSjOXV1dfTtetDKptXUUPz2rOjgSOrdMejjYvnwmhgYGN7YY9fURunhaPbsj/TpiNrUTeXZVu7dZjMzMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAAAALAEAAQAOAA8AAAaMQICwICgaC8IkMTNpTjYC5FCQUVivniiAuFl4RSLvwhR9eA7oAwiUPqgej1dlfqGtOBoNhwWHzS4xEQYGEYURJQ8NFDIIjYONjS0NDS4DlgMUFJeWkykEnwSDoJ8NEhgnCamDqakYEgASFigQECMjtBAWr0IkIQ6/wCEkSQEdHwzIyR8dAcQBz9DQQkEAOw==]]></data>
	</file>
	<file>
	  <filename>/include/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/include/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/include/prefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0Owokbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CiRtb2lzX2NvdXJhbnQgPSBkYXRlKCduJyk7CiRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKJHNhaXNvbl9jb3VyYW50ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJG1vZHVsZV9kaXIgPSAkdGhpcy0+R2V0TW9kdWxlVVJMUGF0aCgpOwokdGFibGVhdSA9IGFycmF5KCIxIj0+IkphbnZpZXIiLCIyIj0+IkbDqXZyaWVyIiwiMyI9PiJNYXJzIiwiNCI9PiJBdnJpbCIsIjUiPT4iTWFpIiwiNiI9PiJKdWluIiwiNyI9PiJKdWlsbGV0IiwiOSI9PiJTZXB0ZW1icmUiLCIxMCI9PiJPY3RvYnJlIiwiMTEiPT4iTm92ZW1icmUiLCIxMiI9PiJEw6ljZW1icmUiKTsKJGxpc3RlX21vaXMgPSBhcnJheSgiSmFudmllciI9PiIxIiwgIkbDqXZyaWVyIj0+IjIiLCJNYXJzIj0+IjMiLCJBdnJpbCI9PiI0IiwiTWFpIj0+IjUiLCJKdWluIj0+IjYiLCJKdWlsbGV0Ij0+IjciLCJTZXB0ZW1icmUiPT4iOSIsIk9jdG9icmUiPT4iMTAiLCJOb3ZlbWJyZSI9PiIxMSIsICJEw6ljZW1icmUiPT4iMTIiKTsKJGxpc3RlX21vaXNfZnIgPSBhcnJheSgiSmFudmllciIsICJGw6l2cmllciIsIk1hcnMiLCJBdnJpbCIsIk1haSIsIkp1aW4iLCJKdWlsbGV0IiwiU2VwdGVtYnJlIiwiT2N0b2JyZSIsIk5vdmVtYnJlIiwgIkTDqWNlbWJyZSIpOwokbW9pc19jb3VydHMgPSBhcnJheSgnSmFuJywnRsOpdicsJ01hcicsJ0F2cicsJ01haScsJ2p1aW4nLCdqdWlsJywnYW91dCcsICdTZXB0JywnT2N0JywgJ05vdicsICdEw6ljJyk7CiRhbm5lZSA9IGRhdGUoJ1knKTsKJG1vaXMgPSBkYXRlKCduJyk7CiRtb2lzX2xpc3RlX3RhYmxlYXUgPSAkbW9pcyAtIDE7CiRtb2lzX3RhYmxlYXUgPSAkbW9pc19jb3VydHNbJG1vaXNfbGlzdGVfdGFibGVhdV07Ci8vJGFubmVlID0nMjAxNCc7Ci8vJG1vaXMgPSc0JzsKaWYoJG1vaXM+PTcgJiYgJG1vaXMgPD0xMikKewoJJGFubmVlMSA9ICRhbm5lZTsKCSRhbm5lZTIgPSAkYW5uZWUrMTsKCSRwaGFzZSA9MTsKCS8vJGFubmVlX3ByZWNlZGVudGUgPSA7Cn0KZWxzZWlmKCRtb2lzID49MSAmJiAkbW9pczw9NykKewoJJHBoYXNlID0gMjsKCSRhbm5lZTEgPSAkYW5uZWUtMTsKCSRhbm5lZTIgPSAkYW5uZWU7CgkKfQokc2Fpc29uX2VuX2NvdXJzID0gJGFubmVlMS4nLScuJGFubmVlMjsKIwojRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/include/travaux.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwokdHJhdmF1eCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0cmF2YXV4Jyk7CmlmKCR0cmF2YXV4ID09J3RydWUnKQp7CglkZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7Cn0KIwojRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/jqplot/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqplot/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAACHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAABAAAQAABpAG4Ac2RzY2xibwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAHAHAAbAB1AGcAaQBuAHNkc2NsYm9vbAAAAAARAHMAeQBuAHQAYQB4AGgAaQBnAGgAbABpAGcAaAB0AGUAcmRzY2xib29sAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAAAhwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAIAAAAGAAAAAAAAAAAAAAAAEAAAEAAAAAAQAAAgAAAAABAAAEAAAAAAIAAAgAAAAYAAAAAAAAAAABAAAgAAAAAAEAAEAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/jqplot/example.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[JChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXtpZighJC5qcXBsb3QuX25vQ29kZUJsb2NrKXskKCJzY3JpcHQuY29kZSIpLmVhY2goZnVuY3Rpb24oYyl7aWYoJCgicHJlLmNvZGUiKS5lcShjKS5sZW5ndGgpeyQoInByZS5jb2RlIikuZXEoYykudGV4dCgkKHRoaXMpLmh0bWwoKSl9ZWxzZXt2YXIgZD0kKCc8cHJlIGNsYXNzPSJjb2RlIHByZXR0eXByaW50IGJydXNoOiBqcyI+PC9wcmU+Jyk7JCgiZGl2LmpxcGxvdC10YXJnZXQiKS5lcShjKS5hZnRlcihkKTtkLnRleHQoJCh0aGlzKS5odG1sKCkpO2Q9bnVsbH19KTskKCJzY3JpcHQuY29tbW9uIikuZWFjaChmdW5jdGlvbihjKXskKCJwcmUuY29tbW9uIikuZXEoYykudGV4dCgkKHRoaXMpLmh0bWwoKSl9KTt2YXIgYj0iIjtpZigkKCJzY3JpcHQuaW5jbHVkZSwgbGluay5pbmNsdWRlIikubGVuZ3RoPjApe2lmKCQoInByZS5pbmNsdWRlIikubGVuZ3RoPT0wKXt2YXIgYT1bJzxkaXYgY2xhc3M9ImNvZGUgcHJldHR5cHJpbnQgaW5jbHVkZSI+JywnPHAgY2xhc3M9InRleHQiPlRoZSBjaGFydHMgb24gdGhpcyBwYWdlIGRlcGVuZCBvbiB0aGUgZm9sbG93aW5nIGZpbGVzOjwvcD4nLCc8cHJlIGNsYXNzPSJpbmNsdWRlIHByZXR0eXByaW50IGJydXNoOiBodG1sIGd1dHRlcjogZmFsc2UiPjwvcHJlPicsIjwvZGl2PiJdO2E9JChhLmpvaW4oIlxuIikpOyQoImRpdiNleGFtcGxlLWNvbnRlbnQiKS5hcHBlbmQoYSk7YT1udWxsfSQoInNjcmlwdC5pbmNsdWRlIikuZWFjaChmdW5jdGlvbihjKXtpZihiIT09IiIpe2IrPSJcbiJ9Yis9JzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IicrJCh0aGlzKS5hdHRyKCJzcmMiKSsnIj48XC9zY3JpcHQ+J30pOyQoImxpbmsuaW5jbHVkZSIpLmVhY2goZnVuY3Rpb24oYyl7aWYoYiE9PSIiKXtiKz0iXG4ifWIrPSc8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmY9IicrJCh0aGlzKS5hdHRyKCJocmVmIikrJyIgLz4nfSk7JCgicHJlLmluY2x1ZGUiKS50ZXh0KGIpfWVsc2V7JCgicHJlLmluY2x1ZGUiKS5yZW1vdmUoKTskKCJkaXYuaW5jbHVkZSIpLnJlbW92ZSgpfX1pZighJC5qcXBsb3QudXNlX2V4Y2FudmFzKXskKCJkaXYuanFwbG90LXRhcmdldCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZD0kKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTt2YXIgZz0kKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTt2YXIgZj0kKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTtkLmFwcGVuZChnKTtkLmFwcGVuZChmKTtkLmFkZENsYXNzKCJqcXBsb3QtaW1hZ2UtY29udGFpbmVyIik7Zy5hZGRDbGFzcygianFwbG90LWltYWdlLWNvbnRhaW5lci1oZWFkZXIiKTtmLmFkZENsYXNzKCJqcXBsb3QtaW1hZ2UtY29udGFpbmVyLWNvbnRlbnQiKTtnLmh0bWwoIlJpZ2h0IENsaWNrIHRvIFNhdmUgSW1hZ2UgQXMuLi4iKTt2YXIgZT0kKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSk7ZS5hZGRDbGFzcygianFwbG90LWltYWdlLWNvbnRhaW5lci1jbG9zZSIpO2UuaHRtbCgiQ2xvc2UiKTtlLmF0dHIoImhyZWYiLCIjIik7ZS5jbGljayhmdW5jdGlvbigpeyQodGhpcykucGFyZW50cygiZGl2LmpxcGxvdC1pbWFnZS1jb250YWluZXIiKS5oaWRlKDUwMCl9KTtnLmFwcGVuZChlKTskKHRoaXMpLmFmdGVyKGQpO2QuaGlkZSgpO2Q9Zz1mPWU9bnVsbDtpZighJC5qcXBsb3QuX25vVG9JbWFnZUJ1dHRvbil7dmFyIGM9JChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKSk7Yy50ZXh0KCJWaWV3IFBsb3QgSW1hZ2UiKTtjLmFkZENsYXNzKCJqcXBsb3QtaW1hZ2UtYnV0dG9uIik7Yy5iaW5kKCJjbGljayIse2NoYXJ0OiQodGhpcyl9LGZ1bmN0aW9uKGgpe3ZhciBqPWguZGF0YS5jaGFydC5qcXBsb3RUb0ltYWdlRWxlbSgpO3ZhciBpPSQodGhpcykubmV4dEFsbCgiZGl2LmpxcGxvdC1pbWFnZS1jb250YWluZXIiKS5maXJzdCgpO2kuY2hpbGRyZW4oImRpdi5qcXBsb3QtaW1hZ2UtY29udGFpbmVyLWNvbnRlbnQiKS5lbXB0eSgpO2kuY2hpbGRyZW4oImRpdi5qcXBsb3QtaW1hZ2UtY29udGFpbmVyLWNvbnRlbnQiKS5hcHBlbmQoaik7aS5zaG93KDUwMCk7aT1udWxsfSk7JCh0aGlzKS5hZnRlcihjKTtjLmFmdGVyKCI8YnIgLz4iKTtjPW51bGx9fSl9U3ludGF4SGlnaGxpZ2h0ZXIuZGVmYXVsdHMudG9vbGJhcj10cnVlO1N5bnRheEhpZ2hsaWdodGVyLmFsbCgpOyQoZG9jdW1lbnQpLnVubG9hZChmdW5jdGlvbigpeyQoIioiKS51bmJpbmQoKX0pfSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/jqplot/jquery.jqplot.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFRpdGxlOiBqcVBsb3QgQ2hhcnRzCiAqIAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIGZvciBqUXVlcnkuCiAqIAogKiBBYm91dDogVmVyc2lvbgogKiAKICogdmVyc2lvbjogMS4wLjggCiAqIHJldmlzaW9uOiAxMjUwCiAqIAogKiBBYm91dDogQ29weXJpZ2h0ICYgTGljZW5zZQogKiAKICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTMgQ2hyaXMgTGVvbmVsbG8KICoganFQbG90IGlzIGN1cnJlbnRseSBhdmFpbGFibGUgZm9yIHVzZSBpbiBhbGwgcGVyc29uYWwgb3IgY29tbWVyY2lhbCBwcm9qZWN0cyAKICogdW5kZXIgYm90aCB0aGUgTUlUIGFuZCBHUEwgdmVyc2lvbiAyLjAgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LgogKiAKICogU2VlIDxHUEwgVmVyc2lvbiAyPiBhbmQgPE1JVCBMaWNlbnNlPiBjb250YWluZWQgd2l0aGluIHRoaXMgZGlzdHJpYnV0aW9uIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLiAKICoKICogVGhlIGF1dGhvciB3b3VsZCBhcHByZWNpYXRlIGFuIGVtYWlsIGxldHRpbmcgaGltIGtub3cgb2YgYW55IHN1YnN0YW50aWFsCiAqIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IGNocmlzIGF0IGpxcGxvdCBkb3QgY29tIAogKiBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwLiAgVGhpcyBpcywgb2YgY291cnNlLCBub3QgcmVxdWlyZWQuCiAqCiAqIElmIHlvdSBhcmUgZmVlbGluZyBraW5kIGFuZCBnZW5lcm91cywgY29uc2lkZXIgc3VwcG9ydGluZyB0aGUgcHJvamVjdCBieQogKiBtYWtpbmcgYSBkb25hdGlvbiBhdDogaHR0cDovL3d3dy5qcXBsb3QuY29tL2RvbmF0ZS5waHAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKiAKICogICAgIHZlcnNpb24gMjAwNy4wNC4yNwogKiAgICAgYXV0aG9yIEFzaCBTZWFybGUKICogICAgIGh0dHA6Ly9oZXhtZW4uY29tL2Jsb2cvMjAwNy8wMy9wcmludGYtc3ByaW50Zi8KICogICAgIGh0dHA6Ly9oZXhtZW4uY29tL2pzL3NwcmludGYuanMKICogICAgIFRoZSBhdXRob3IgKEFzaCBTZWFybGUpIGhhcyBwbGFjZWQgdGhpcyBjb2RlIGluIHRoZSBwdWJsaWMgZG9tYWluOgogKiAgICAgIlRoaXMgY29kZSBpcyB1bnJlc3RyaWN0ZWQ6IHlvdSBhcmUgZnJlZSB0byB1c2UgaXQgaG93ZXZlciB5b3UgbGlrZS4iCiAqIAogKiAKICogQWJvdXQ6IEludHJvZHVjdGlvbgogKiAKICoganFQbG90IHJlcXVpcmVzIGpRdWVyeSAoMS40KyByZXF1aXJlZCBmb3IgY2VydGFpbiBmZWF0dXJlcykuIGpRdWVyeSAxLjQuMiBpcyBpbmNsdWRlZCBpbiB0aGUgZGlzdHJpYnV0aW9uLiAgCiAqIFRvIHVzZSBqcVBsb3QgaW5jbHVkZSBqUXVlcnksIHRoZSBqcVBsb3QgalF1ZXJ5IHBsdWdpbiwgdGhlIGpxUGxvdCBjc3MgZmlsZSBhbmQgb3B0aW9uYWxseSAKICogdGhlIGV4Y2FudmFzIHNjcmlwdCBmb3IgSUUgc3VwcG9ydCBpbiB5b3VyIHdlYiBwYWdlOgogKiAKICogPiA8IS0tW2lmIGx0IElFIDldPjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJleGNhbnZhcy5qcyI+PC9zY3JpcHQ+PCFbZW5kaWZdLS0+CiAqID4gPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpxdWVyeS0xLjQuNC5taW4uanMiPjwvc2NyaXB0PgogKiA+IDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcXVlcnkuanFwbG90Lm1pbi5qcyI+PC9zY3JpcHQ+CiAqID4gPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ianF1ZXJ5LmpxcGxvdC5jc3MiIC8+CiAqIAogKiBqcVBsb3QgY2FuIGJlIGN1c3RvbWl6ZWQgYnkgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdHMgb2YgYW55IG9mIHRoZSBvYmplY3RzIHdoaWNoIG1ha2UKICogdXAgdGhlIHBsb3QuIFRoZSBnZW5lcmFsIHVzYWdlIG9mIGpxcGxvdCBpczoKICogCiAqID4gY2hhcnQgPSAkLmpxcGxvdCgndGFyZ2V0RWxlbUlkJywgW2RhdGFBcnJheSwuLi5dLCB7b3B0aW9uc09iamVjdH0pOwogKiAKICogVGhlIG9wdGlvbnMgYXZhaWxhYmxlIHRvIGpxcGxvdCBhcmUgZGV0YWlsZWQgaW4gPGpxUGxvdCBPcHRpb25zPiBpbiB0aGUganFQbG90T3B0aW9ucy50eHQgZmlsZS4KICogCiAqIEFuIGFjdHVhbCBjYWxsIHRvICQuanFwbG90KCkgbWF5IGxvb2sgbGlrZSB0aGUgCiAqIGV4YW1wbGVzIGJlbG93OgogKiAKICogPiBjaGFydCA9ICQuanFwbG90KCdjaGFydGRpdicsICBbW1sxLCAyXSxbMyw1LjEyXSxbNSwxMy4xXSxbNywzMy42XSxbOSw4NS45XSxbMTEsMjE5LjldXV0pOwogKiAKICogb3IKICogCiAqID4gZGF0YUFycmF5ID0gWzM0LDEyLDQzLDU1LDc3XTsKICogPiBjaGFydCA9ICQuanFwbG90KCd0YXJnZXRFbGVtSWQnLCBbZGF0YUFycmF5LCAuLi5dLCB7dGl0bGU6J015IFBsb3QnLCBheGVzOnt5YXhpczp7bWluOjIwLCBtYXg6MTAwfX19KTsKICogCiAqIEZvciBtb3JlIGluZm9ycm1hdGlvbiwgc2VlIDxqcVBsb3QgVXNhZ2U+LgogKiAKICogQWJvdXQ6IFVzYWdlCiAqIAogKiBTZWUgPGpxUGxvdCBVc2FnZT4KICogCiAqIEFib3V0OiBBdmFpbGFibGUgT3B0aW9ucyAKICogCiAqIFNlZSA8anFQbG90IE9wdGlvbnM+IGZvciBhIGxpc3Qgb2Ygb3B0aW9ucyBhdmFpbGFibGUgdGhvcnVnaCB0aGUgb3B0aW9ucyBvYmplY3QgKG5vdCBjb21wbGV0ZSB5ZXQhKQogKiAKICogQWJvdXQ6IE9wdGlvbnMgVXNhZ2UKICogCiAqIFNlZSA8T3B0aW9ucyBUdXRvcmlhbD4KICogCiAqIEFib3V0OiBDaGFuZ2VzCiAqIAogKiBTZWUgPENoYW5nZSBMb2c+CiAqIAogKi8KCihmdW5jdGlvbigkKSB7CiAgICAvLyBtYWtlIHN1cmUgdW5kZWZpbmVkIGlzIHVuZGVmaW5lZAogICAgdmFyIHVuZGVmaW5lZDsKICAgIAogICAgJC5mbi5lbXB0eUZvcmNlID0gZnVuY3Rpb24oKSB7CiAgICAgIGZvciAoIHZhciBpID0gMCwgZWxlbTsgKGVsZW0gPSAkKHRoaXMpW2ldKSAhPSBudWxsOyBpKysgKSB7CiAgICAgICAgLy8gUmVtb3ZlIGVsZW1lbnQgbm9kZXMgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzCiAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkgewogICAgICAgICAgJC5jbGVhbkRhdGEoIGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSApOwogICAgICAgIH0KICAKICAgICAgICAvLyBSZW1vdmUgYW55IHJlbWFpbmluZyBub2RlcwogICAgICAgIGlmICgkLmpxcGxvdC51c2VfZXhjYW52YXMpIHsKICAgICAgICAgIGVsZW0ub3V0ZXJIVE1MID0gIiI7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgd2hpbGUgKCBlbGVtLmZpcnN0Q2hpbGQgKSB7CiAgICAgICAgICAgIGVsZW0ucmVtb3ZlQ2hpbGQoIGVsZW0uZmlyc3RDaGlsZCApOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZWxlbSA9IG51bGw7CiAgICAgIH0KICAKICAgICAgcmV0dXJuICQodGhpcyk7CiAgICB9OwogIAogICAgJC5mbi5yZW1vdmVDaGlsZEZvcmNlID0gZnVuY3Rpb24ocGFyZW50KSB7CiAgICAgIHdoaWxlICggcGFyZW50LmZpcnN0Q2hpbGQgKSB7CiAgICAgICAgdGhpcy5yZW1vdmVDaGlsZEZvcmNlKCBwYXJlbnQuZmlyc3RDaGlsZCApOwogICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZCggcGFyZW50LmZpcnN0Q2hpbGQgKTsKICAgICAgfQogICAgfTsKCiAgICAkLmZuLmpxcGxvdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBkYXRhcyA9IFtdOwogICAgICAgIHZhciBvcHRpb25zID0gW107CiAgICAgICAgLy8gc2VlIGhvdyBtYW55IGRhdGEgYXJyYXlzIHdlIGhhdmUKICAgICAgICBmb3IgKHZhciBpPTAsIGw9YXJndW1lbnRzLmxlbmd0aDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgaWYgKCQuaXNBcnJheShhcmd1bWVudHNbaV0pKSB7CiAgICAgICAgICAgICAgICBkYXRhcy5wdXNoKGFyZ3VtZW50c1tpXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoJC5pc1BsYWluT2JqZWN0KGFyZ3VtZW50c1tpXSkpIHsKICAgICAgICAgICAgICAgIG9wdGlvbnMucHVzaChhcmd1bWVudHNbaV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGluZGV4KSB7CiAgICAgICAgICAgIHZhciB0aWQsIAogICAgICAgICAgICAgICAgcGxvdCwgCiAgICAgICAgICAgICAgICAkdGhpcyA9ICQodGhpcyksCiAgICAgICAgICAgICAgICBkbCA9IGRhdGFzLmxlbmd0aCwKICAgICAgICAgICAgICAgIG9sID0gb3B0aW9ucy5sZW5ndGgsCiAgICAgICAgICAgICAgICBkYXRhLCAKICAgICAgICAgICAgICAgIG9wdHM7CgogICAgICAgICAgICBpZiAoaW5kZXggPCBkbCkgewogICAgICAgICAgICAgICAgZGF0YSA9IGRhdGFzW2luZGV4XTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGRhdGEgPSBkbCA/IGRhdGFzW2RsLTFdIDogbnVsbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGluZGV4IDwgb2wpIHsKICAgICAgICAgICAgICAgIG9wdHMgPSBvcHRpb25zW2luZGV4XTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG9wdHMgPSBvbCA/IG9wdGlvbnNbb2wtMV0gOiBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBkb2VzIGVsIGhhdmUgYW4gaWQ/CiAgICAgICAgICAgIC8vIGlmIG5vdCBhc3NpZ24gaXQgb25lLgogICAgICAgICAgICB0aWQgPSAkdGhpcy5hdHRyKCdpZCcpOwogICAgICAgICAgICBpZiAodGlkID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIHRpZCA9ICdqcXBsb3RfdGFyZ2V0XycgKyAkLmpxcGxvdC50YXJnZXRDb3VudGVyKys7CiAgICAgICAgICAgICAgICAkdGhpcy5hdHRyKCdpZCcsIHRpZCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHBsb3QgPSAkLmpxcGxvdCh0aWQsIGRhdGEsIG9wdHMpOwoKICAgICAgICAgICAgJHRoaXMuZGF0YSgnanFwbG90JywgcGxvdCk7CiAgICAgICAgfSk7CiAgICB9OwoKCiAgICAvKioKICAgICAqIE5hbWVzcGFjZTogJC5qcXBsb3QKICAgICAqIGpRdWVyeSBmdW5jdGlvbiBjYWxsZWQgYnkgdGhlIHVzZXIgdG8gY3JlYXRlIGEgcGxvdC4KICAgICAqICAKICAgICAqIFBhcmFtZXRlcnM6CiAgICAgKiB0YXJnZXQgLSBJRCBvZiB0YXJnZXQgZWxlbWVudCB0byByZW5kZXIgdGhlIHBsb3QgaW50by4KICAgICAqIGRhdGEgLSBhbiBhcnJheSBvZiBkYXRhIHNlcmllcy4KICAgICAqIG9wdGlvbnMgLSB1c2VyIGRlZmluZWQgb3B0aW9ucyBvYmplY3QuICBTZWUgdGhlIGluZGl2aWR1YWwgY2xhc3NlcyBmb3IgYXZhaWxhYmxlIG9wdGlvbnMuCiAgICAgKiAKICAgICAqIFByb3BlcnRpZXM6CiAgICAgKiBjb25maWcgLSBvYmplY3QgdG8gaG9sZCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBqcVBsb3QgcGxvdCBvYmplY3QuCiAgICAgKiAKICAgICAqIGF0dHJpYnV0ZXM6CiAgICAgKiBlbmFibGVQbHVnaW5zIC0gRmFsc2UgdG8gZGlzYWJsZSBwbHVnaW5zIGJ5IGRlZmF1bHQuICBQbHVnaW5zIG11c3QgdGhlbiBiZSBleHBsaWNpdGx5IAogICAgICogICBlbmFibGVkIGluIHRoZSBpbmRpdmlkdWFsIHBsb3Qgb3B0aW9ucy4gIERlZmF1bHQ6IGZhbHNlLgogICAgICogICBUaGlzIHByb3BlcnR5IHNldHMgdGhlICJzaG93IiBwcm9wZXJ0eSBvZiBjZXJ0YWluIHBsdWdpbnMgdG8gdHJ1ZSBvciBmYWxzZS4KICAgICAqICAgT25seSBwbHVnaW5zIHRoYXQgY2FuIGJlIGltbWVkaWF0ZWx5IGFjdGl2ZSB1cG9uIGxvYWRpbmcgYXJlIGFmZmVjdGVkLiAgVGhpcyBpbmNsdWRlcwogICAgICogICBub24tcmVuZGVyZXIgcGx1Z2lucyBsaWtlIGN1cnNvciwgZHJhZ2FibGUsIGhpZ2hsaWdodGVyLCBhbmQgdHJlbmRsaW5lLgogICAgICogZGVmYXVsdEhlaWdodCAtIERlZmF1bHQgaGVpZ2h0IGZvciBwbG90cyB3aGVyZSBubyBjc3MgaGVpZ2h0IHNwZWNpZmljYXRpb24gZXhpc3RzLiAgVGhpcwogICAgICogICBpcyBhIGpxcGxvdCB3aWRlIGRlZmF1bHQuCiAgICAgKiBkZWZhdWx0V2lkdGggLSBEZWZhdWx0IGhlaWdodCBmb3IgcGxvdHMgd2hlcmUgbm8gY3NzIGhlaWdodCBzcGVjaWZpY2F0aW9uIGV4aXN0cy4gIFRoaXMKICAgICAqICAgaXMgYSBqcXBsb3Qgd2lkZSBkZWZhdWx0LgogICAgICovCgogICAgJC5qcXBsb3QgPSBmdW5jdGlvbih0YXJnZXQsIGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICB2YXIgX2RhdGEgPSBudWxsLCBfb3B0aW9ucyA9IG51bGw7CgogICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7CiAgICAgICAgICAgIF9kYXRhID0gZGF0YTsKICAgICAgICAgICAgX29wdGlvbnMgPSBvcHRpb25zOwogICAgICAgIH0KCiAgICAgICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgewogICAgICAgICAgICBpZiAoJC5pc0FycmF5KGRhdGEpKSB7CiAgICAgICAgICAgICAgICBfZGF0YSA9IGRhdGE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2UgaWYgKCQuaXNQbGFpbk9iamVjdChkYXRhKSkgewogICAgICAgICAgICAgICAgX29wdGlvbnMgPSBkYXRhOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoX2RhdGEgPT09IG51bGwgJiYgX29wdGlvbnMgIT09IG51bGwgJiYgX29wdGlvbnMuZGF0YSkgewogICAgICAgICAgICBfZGF0YSA9IF9vcHRpb25zLmRhdGE7CiAgICAgICAgfQoKICAgICAgICB2YXIgcGxvdCA9IG5ldyBqcVBsb3QoKTsKICAgICAgICAvLyByZW1vdmUgYW55IGVycm9yIGNsYXNzIHRoYXQgbWF5IGJlIHN0dWNrIG9uIHRhcmdldC4KICAgICAgICAkKCcjJyt0YXJnZXQpLnJlbW92ZUNsYXNzKCdqcXBsb3QtZXJyb3InKTsKICAgICAgICAKICAgICAgICBpZiAoJC5qcXBsb3QuY29uZmlnLmNhdGNoRXJyb3JzKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBwbG90LmluaXQodGFyZ2V0LCBfZGF0YSwgX29wdGlvbnMpOwogICAgICAgICAgICAgICAgcGxvdC5kcmF3KCk7CiAgICAgICAgICAgICAgICBwbG90LnRoZW1lRW5naW5lLmluaXQuY2FsbChwbG90KTsKICAgICAgICAgICAgICAgIHJldHVybiBwbG90OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoKGUpIHsKICAgICAgICAgICAgICAgIHZhciBtc2cgPSAkLmpxcGxvdC5jb25maWcuZXJyb3JNZXNzYWdlIHx8IGUubWVzc2FnZTsKICAgICAgICAgICAgICAgICQoJyMnK3RhcmdldCkuYXBwZW5kKCc8ZGl2IGNsYXNzPSJqcXBsb3QtZXJyb3ItbWVzc2FnZSI+Jyttc2crJzwvZGl2PicpOwogICAgICAgICAgICAgICAgJCgnIycrdGFyZ2V0KS5hZGRDbGFzcygnanFwbG90LWVycm9yJyk7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXQpLnN0eWxlLmJhY2tncm91bmQgPSAkLmpxcGxvdC5jb25maWcuZXJyb3JCYWNrZ3JvdW5kOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0KS5zdHlsZS5ib3JkZXIgPSAkLmpxcGxvdC5jb25maWcuZXJyb3JCb3JkZXI7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXQpLnN0eWxlLmZvbnRGYW1pbHkgPSAkLmpxcGxvdC5jb25maWcuZXJyb3JGb250RmFtaWx5OwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0KS5zdHlsZS5mb250U2l6ZSA9ICQuanFwbG90LmNvbmZpZy5lcnJvckZvbnRTaXplOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0KS5zdHlsZS5mb250U3R5bGUgPSAkLmpxcGxvdC5jb25maWcuZXJyb3JGb250U3R5bGU7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXQpLnN0eWxlLmZvbnRXZWlnaHQgPSAkLmpxcGxvdC5jb25maWcuZXJyb3JGb250V2VpZ2h0OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgeyAgICAgICAgCiAgICAgICAgICAgIHBsb3QuaW5pdCh0YXJnZXQsIF9kYXRhLCBfb3B0aW9ucyk7CiAgICAgICAgICAgIHBsb3QuZHJhdygpOwogICAgICAgICAgICBwbG90LnRoZW1lRW5naW5lLmluaXQuY2FsbChwbG90KTsKICAgICAgICAgICAgcmV0dXJuIHBsb3Q7CiAgICAgICAgfQogICAgfTsKCiAgICAkLmpxcGxvdC52ZXJzaW9uID0gIjEuMC44IjsKICAgICQuanFwbG90LnJldmlzaW9uID0gIjEyNTAiOwoKICAgICQuanFwbG90LnRhcmdldENvdW50ZXIgPSAxOwoKICAgIC8vIGNhbnZhcyBtYW5hZ2VyIHRvIHJldXNlIGNhbnZhc2VzIG9uIHRoZSBwbG90LgogICAgLy8gU2hvdWxkIGhlbHAgc29sdmUgcHJvYmxlbSBvZiBjYW52YXNlcyBub3QgYmVpbmcgZnJlZWQgYW5kCiAgICAvLyBwcm9ibGVtIG9mIHdhaXRpbmcgZm9yZXZlciBmb3IgZmlyZWZveCB0byBkZWNpZGUgdG8gZnJlZSBtZW1vcnkuCiAgICAkLmpxcGxvdC5DYW52YXNNYW5hZ2VyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gY2FudmFzZXMgYXJlIG1hbmFnZWQgZ2xvYmFsbHkgc28gdGhhdCB0aGV5IGNhbiBiZSByZXVzZWQKICAgICAgICAvLyBhY3Jvc3MgcGxvdHMgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gZnJlZWQKICAgICAgICBpZiAodHlwZW9mICQuanFwbG90LkNhbnZhc01hbmFnZXIuY2FudmFzZXMgPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgJC5qcXBsb3QuQ2FudmFzTWFuYWdlci5jYW52YXNlcyA9IFtdOwogICAgICAgICAgICAkLmpxcGxvdC5DYW52YXNNYW5hZ2VyLmZyZWUgPSBbXTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgdmFyIG15Q2FudmFzZXMgPSBbXTsKICAgICAgICAKICAgICAgICB0aGlzLmdldENhbnZhcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgY2FudmFzOwogICAgICAgICAgICB2YXIgbWFrZU5ldyA9IHRydWU7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoISQuanFwbG90LnVzZV9leGNhbnZhcykgewogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSAkLmpxcGxvdC5DYW52YXNNYW5hZ2VyLmNhbnZhc2VzLmxlbmd0aDsgaSA8IGw7IGkrKykgewogICAgICAgICAgICAgICAgICAgIGlmICgkLmpxcGxvdC5DYW52YXNNYW5hZ2VyLmZyZWVbaV0gPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWFrZU5ldyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMgPSAkLmpxcGxvdC5DYW52YXNNYW5hZ2VyLmNhbnZhc2VzW2ldOwogICAgICAgICAgICAgICAgICAgICAgICAvLyAkKGNhbnZhcykucmVtb3ZlQ2xhc3MoJ2pxcGxvdC1jYW52YXNNYW5hZ2VyLWZyZWUnKS5hZGRDbGFzcygnanFwbG90LWNhbnZhc01hbmFnZXItaW51c2UnKTsKICAgICAgICAgICAgICAgICAgICAgICAgJC5qcXBsb3QuQ2FudmFzTWFuYWdlci5mcmVlW2ldID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIG15Q2FudmFzZXMucHVzaChpKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAobWFrZU5ldykgewogICAgICAgICAgICAgICAgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CiAgICAgICAgICAgICAgICBteUNhbnZhc2VzLnB1c2goJC5qcXBsb3QuQ2FudmFzTWFuYWdlci5jYW52YXNlcy5sZW5ndGgpOwogICAgICAgICAgICAgICAgJC5qcXBsb3QuQ2FudmFzTWFuYWdlci5jYW52YXNlcy5wdXNoKGNhbnZhcyk7CiAgICAgICAgICAgICAgICAkLmpxcGxvdC5DYW52YXNNYW5hZ2VyLmZyZWUucHVzaChmYWxzZSk7CiAgICAgICAgICAgIH0gICAKICAgICAgICAgICAgCiAgICAgICAgICAgIHJldHVybiBjYW52YXM7CiAgICAgICAgfTsKICAgICAgICAKICAgICAgICAvLyB0aGlzIG1ldGhvZCBoYXMgdG8gYmUgdXNlZCBhZnRlciBzZXR0aW5ncyB0aGUgZGltZXNpb25zCiAgICAgICAgLy8gb24gdGhlIGVsZW1lbnQgcmV0dXJuZWQgYnkgZ2V0Q2FudmFzKCkKICAgICAgICB0aGlzLmluaXRDYW52YXMgPSBmdW5jdGlvbihjYW52YXMpIHsKICAgICAgICAgICAgaWYgKCQuanFwbG90LnVzZV9leGNhbnZhcykgewogICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5HX3ZtbENhbnZhc01hbmFnZXIuaW5pdEVsZW1lbnQoY2FudmFzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gY2FudmFzOwogICAgICAgIH07CgogICAgICAgIHRoaXMuZnJlZUFsbENhbnZhc2VzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsPW15Q2FudmFzZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CiAgICAgICAgICAgICAgICB0aGlzLmZyZWVDYW52YXMobXlDYW52YXNlc1tpXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbXlDYW52YXNlcyA9IFtdOwogICAgICAgIH07CgogICAgICAgIHRoaXMuZnJlZUNhbnZhcyA9IGZ1bmN0aW9uKGlkeCkgewogICAgICAgICAgICBpZiAoJC5qcXBsb3QudXNlX2V4Y2FudmFzICYmIHdpbmRvdy5HX3ZtbENhbnZhc01hbmFnZXIudW5pbml0RWxlbWVudCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAvLyBleGNhbnZhcyBjYW4ndCBiZSByZXVzZWQsIGJ1dCBwcm9wZXJseSB1bnNldAogICAgICAgICAgICAgICAgd2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci51bmluaXRFbGVtZW50KCQuanFwbG90LkNhbnZhc01hbmFnZXIuY2FudmFzZXNbaWR4XSk7CiAgICAgICAgICAgICAgICAkLmpxcGxvdC5DYW52YXNNYW5hZ2VyLmNhbnZhc2VzW2lkeF0gPSBudWxsOwogICAgICAgICAgICB9IAogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBjYW52YXMgPSAkLmpxcGxvdC5DYW52YXNNYW5hZ2VyLmNhbnZhc2VzW2lkeF07CiAgICAgICAgICAgICAgICBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5jbGVhclJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKICAgICAgICAgICAgICAgICQoY2FudmFzKS51bmJpbmQoKS5yZW1vdmVBdHRyKCdjbGFzcycpLnJlbW92ZUF0dHIoJ3N0eWxlJyk7CiAgICAgICAgICAgICAgICAvLyBTdHlsZSBhdHRyaWJ1dGVzIHNlZW1lZCB0byBiZSBzdGlsbCBoYW5naW5nIGFyb3VuZC4gIHdpZXJkLiAgU29tZSB0aWNrcwogICAgICAgICAgICAgICAgLy8gc3RpbGwgcmV0YWluZWQgYSBsZWZ0OiAwcHggYXR0cmlidXRlIGFmdGVyIHJldXNpbmcgYSBjYW52YXMuCiAgICAgICAgICAgICAgICAkKGNhbnZhcykuY3NzKHtsZWZ0OiAnJywgdG9wOiAnJywgcG9zaXRpb246ICcnfSk7CiAgICAgICAgICAgICAgICAvLyBzZXR0aW5nIHNpemUgdG8gMCBtYXkgc2F2ZSBtZW1vcnkgb2YgdW51c2VkIGNhbnZhc2VzPwogICAgICAgICAgICAgICAgY2FudmFzLndpZHRoID0gMDsKICAgICAgICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSAwOwogICAgICAgICAgICAgICAgJC5qcXBsb3QuQ2FudmFzTWFuYWdlci5mcmVlW2lkeF0gPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICAKICAgIH07CgogICAgICAgICAgICAKICAgIC8vIENvbnZpZW5lbmNlIGZ1bmN0aW9uIHRoYXQgd29uJ3QgaGFuZyBJRSBvciBGRiB3aXRob3V0IEZpcmVCdWcuCiAgICAkLmpxcGxvdC5sb2cgPSBmdW5jdGlvbigpIHsKICAgICAgICBpZiAod2luZG93LmNvbnNvbGUpIHsKICAgICAgICAgICAgd2luZG93LmNvbnNvbGUubG9nLmFwcGx5KHdpbmRvdy5jb25zb2xlLCBhcmd1bWVudHMpOwogICAgICAgIH0KICAgIH07CiAgICAgICAgCiAgICAkLmpxcGxvdC5jb25maWcgPSB7CiAgICAgICAgYWRkRG9tUmVmZXJlbmNlOiBmYWxzZSwKICAgICAgICBlbmFibGVQbHVnaW5zOmZhbHNlLAogICAgICAgIGRlZmF1bHRIZWlnaHQ6MzAwLAogICAgICAgIGRlZmF1bHRXaWR0aDo0MDAsCiAgICAgICAgVVRDQWRqdXN0OmZhbHNlLAogICAgICAgIHRpbWV6b25lT2Zmc2V0OiBuZXcgRGF0ZShuZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMCksCiAgICAgICAgZXJyb3JNZXNzYWdlOiAnJywKICAgICAgICBlcnJvckJhY2tncm91bmQ6ICcnLAogICAgICAgIGVycm9yQm9yZGVyOiAnJywKICAgICAgICBlcnJvckZvbnRGYW1pbHk6ICcnLAogICAgICAgIGVycm9yRm9udFNpemU6ICcnLAogICAgICAgIGVycm9yRm9udFN0eWxlOiAnJywKICAgICAgICBlcnJvckZvbnRXZWlnaHQ6ICcnLAogICAgICAgIGNhdGNoRXJyb3JzOiBmYWxzZSwKICAgICAgICBkZWZhdWx0VGlja0Zvcm1hdFN0cmluZzogIiUuMWYiLAogICAgICAgIGRlZmF1bHRDb2xvcnM6IFsgIiM0YmIyYzUiLCAiI0VBQTIyOCIsICIjYzViNDdmIiwgIiM1Nzk1NzUiLCAiIzgzOTU1NyIsICIjOTU4YzEyIiwgIiM5NTM1NzkiLCAiIzRiNWRlNCIsICIjZDhiODNmIiwgIiNmZjU4MDAiLCAiIzAwODVjYyIsICIjYzc0N2EzIiwgIiNjZGRmNTQiLCAiI0ZCRDE3OCIsICIjMjZCNEUzIiwgIiNiZDcwYzciXSwKICAgICAgICBkZWZhdWx0TmVnYXRpdmVDb2xvcnM6IFsgIiM0OTg5OTEiLCAiI0MwODg0MCIsICIjOUY5Mjc0IiwgIiM1NDZENjEiLCAiIzY0NkM0QSIsICIjNkY2NjIxIiwgIiM2RTNGNUYiLCAiIzRGNjRCMCIsICIjQTg5MDUwIiwgIiNDNDU5MjMiLCAiIzE4NzM5OSIsICIjOTQ1MzgxIiwgIiM5NTlFNUMiLCAiI0M3QUY3QiIsICIjNDc4Mzk2IiwgIiM5MDcyOTQiXSwKICAgICAgICBkYXNoTGVuZ3RoOiA0LAogICAgICAgIGdhcExlbmd0aDogNCwKICAgICAgICBkb3RHYXBMZW5ndGg6IDIuNSwKICAgICAgICBzcmNMb2NhdGlvbjogJ2pxcGxvdC9zcmMvJywKICAgICAgICBwbHVnaW5Mb2NhdGlvbjogJ2pxcGxvdC9zcmMvcGx1Z2lucy8nCiAgICB9OwogICAgCiAgICAKICAgICQuanFwbG90LmFycmF5TWF4ID0gZnVuY3Rpb24oIGFycmF5ICl7CiAgICAgICAgcmV0dXJuIE1hdGgubWF4LmFwcGx5KCBNYXRoLCBhcnJheSApOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuYXJyYXlNaW4gPSBmdW5jdGlvbiggYXJyYXkgKXsKICAgICAgICByZXR1cm4gTWF0aC5taW4uYXBwbHkoIE1hdGgsIGFycmF5ICk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5lbmFibGVQbHVnaW5zID0gJC5qcXBsb3QuY29uZmlnLmVuYWJsZVBsdWdpbnM7CiAgICAKICAgIC8vIGNhbnZhcyByZWxhdGVkIHRlc3RzIHRha2VuIGZyb20gbW9kZXJuaXplcjoKICAgIC8vIENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTAgRmFydWsgQXRlcy4KICAgIC8vIGh0dHA6Ly93d3cubW9kZXJuaXpyLmNvbQogICAgCiAgICAkLmpxcGxvdC5zdXBwb3J0X2NhbnZhcyA9IGZ1bmN0aW9uKCkgewogICAgICAgIGlmICh0eXBlb2YgJC5qcXBsb3Quc3VwcG9ydF9jYW52YXMucmVzdWx0ID09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICQuanFwbG90LnN1cHBvcnRfY2FudmFzLnJlc3VsdCA9ICEhZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJykuZ2V0Q29udGV4dDsgCiAgICAgICAgfQogICAgICAgIHJldHVybiAkLmpxcGxvdC5zdXBwb3J0X2NhbnZhcy5yZXN1bHQ7CiAgICB9OwogICAgICAgICAgICAKICAgICQuanFwbG90LnN1cHBvcnRfY2FudmFzX3RleHQgPSBmdW5jdGlvbigpIHsKICAgICAgICBpZiAodHlwZW9mICQuanFwbG90LnN1cHBvcnRfY2FudmFzX3RleHQucmVzdWx0ID09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgIGlmICh3aW5kb3cuR192bWxDYW52YXNNYW5hZ2VyICE9PSB1bmRlZmluZWQgJiYgd2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci5fdmVyc2lvbiA+IDg4NykgewogICAgICAgICAgICAgICAgJC5qcXBsb3Quc3VwcG9ydF9jYW52YXNfdGV4dC5yZXN1bHQgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJC5qcXBsb3Quc3VwcG9ydF9jYW52YXNfdGV4dC5yZXN1bHQgPSAhIShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKS5nZXRDb250ZXh0ICYmIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKS5nZXRDb250ZXh0KCcyZCcpLmZpbGxUZXh0ID09ICdmdW5jdGlvbicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgcmV0dXJuICQuanFwbG90LnN1cHBvcnRfY2FudmFzX3RleHQucmVzdWx0OwogICAgfTsKICAgIAogICAgJC5qcXBsb3QudXNlX2V4Y2FudmFzID0gKCghJC5zdXBwb3J0LmJveE1vZGVsIHx8ICEkLnN1cHBvcnQub2JqZWN0QWxsIHx8ICEkc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSkgJiYgISQuanFwbG90LnN1cHBvcnRfY2FudmFzKCkpID8gdHJ1ZSA6IGZhbHNlOwogICAgCiAgICAvKioKICAgICAqIAogICAgICogSG9va3M6IGpxUGxvdCBQdWdpbiBIb29rcwogICAgICogCiAgICAgKiAkLmpxcGxvdC5wcmVJbml0SG9va3MgLSBjYWxsZWQgYmVmb3JlIGluaXRpYWxpemF0aW9uLgogICAgICogJC5qcXBsb3QucG9zdEluaXRIb29rcyAtIGNhbGxlZCBhZnRlciBpbml0aWFsaXphdGlvbi4KICAgICAqICQuanFwbG90LnByZVBhcnNlT3B0aW9uc0hvb2tzIC0gY2FsbGVkIGJlZm9yZSB1c2VyIG9wdGlvbnMgYXJlIHBhcnNlZC4KICAgICAqICQuanFwbG90LnBvc3RQYXJzZU9wdGlvbnNIb29rcyAtIGNhbGxlZCBhZnRlciB1c2VyIG9wdGlvbnMgYXJlIHBhcnNlZC4KICAgICAqICQuanFwbG90LnByZURyYXdIb29rcyAtIGNhbGxlZCBiZWZvcmUgcGxvdCBkcmF3LgogICAgICogJC5qcXBsb3QucG9zdERyYXdIb29rcyAtIGNhbGxlZCBhZnRlciBwbG90IGRyYXcuCiAgICAgKiAkLmpxcGxvdC5wcmVEcmF3U2VyaWVzSG9va3MgLSBjYWxsZWQgYmVmb3JlIGVhY2ggc2VyaWVzIGlzIGRyYXduLgogICAgICogJC5qcXBsb3QucG9zdERyYXdTZXJpZXNIb29rcyAtIGNhbGxlZCBhZnRlciBlYWNoIHNlcmllcyBpcyBkcmF3bi4KICAgICAqICQuanFwbG90LnByZURyYXdMZWdlbmRIb29rcyAtIGNhbGxlZCBiZWZvcmUgdGhlIGxlZ2VuZCBpcyBkcmF3bi4KICAgICAqICQuanFwbG90LmFkZExlZ2VuZFJvd0hvb2tzIC0gY2FsbGVkIGF0IHRoZSBlbmQgb2YgbGVnZW5kIGRyYXcsIHNvIHBsdWdpbnMKICAgICAqICAgICBjYW4gYWRkIHJvd3MgdG8gdGhlIGxlZ2VuZCB0YWJsZS4KICAgICAqICQuanFwbG90LnByZVNlcmllc0luaXRIb29rcyAtIGNhbGxlZCBiZWZvcmUgc2VyaWVzIGlzIGluaXRpYWxpemVkLgogICAgICogJC5qcXBsb3QucG9zdFNlcmllc0luaXRIb29rcyAtIGNhbGxlZCBhZnRlciBzZXJpZXMgaXMgaW5pdGlhbGl6ZWQuCiAgICAgKiAkLmpxcGxvdC5wcmVQYXJzZVNlcmllc09wdGlvbnNIb29rcyAtIGNhbGxlZCBiZWZvcmUgc2VyaWVzIHJlbGF0ZWQgb3B0aW9ucwogICAgICogICAgIGFyZSBwYXJzZWQuCiAgICAgKiAkLmpxcGxvdC5wb3N0UGFyc2VTZXJpZXNPcHRpb25zSG9va3MgLSBjYWxsZWQgYWZ0ZXIgc2VyaWVzIHJlbGF0ZWQgb3B0aW9ucwogICAgICogICAgIGFyZSBwYXJzZWQuCiAgICAgKiAkLmpxcGxvdC5ldmVudExpc3RlbmVySG9va3MgLSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBwbG90IGRyYXdpbmcsIGJpbmRzCiAgICAgKiAgICAgbGlzdGVuZXJzIHRvIHRoZSBldmVudCBjYW52YXMgd2hpY2ggbGF5cyBvbiB0b3Agb2YgdGhlIGdyaWQgYXJlYS4KICAgICAqICQuanFwbG90LnByZURyYXdTZXJpZXNTaGFkb3dIb29rcyAtIGNhbGxlZCBiZWZvcmUgc2VyaWVzIHNoYWRvd3MgYXJlIGRyYXduLgogICAgICogJC5qcXBsb3QucG9zdERyYXdTZXJpZXNTaGFkb3dIb29rcyAtIGNhbGxlZCBhZnRlciBzZXJpZXMgc2hhZG93cyBhcmUgZHJhd24uCiAgICAgKiAKICAgICAqLwogICAgCiAgICAkLmpxcGxvdC5wcmVJbml0SG9va3MgPSBbXTsKICAgICQuanFwbG90LnBvc3RJbml0SG9va3MgPSBbXTsKICAgICQuanFwbG90LnByZVBhcnNlT3B0aW9uc0hvb2tzID0gW107CiAgICAkLmpxcGxvdC5wb3N0UGFyc2VPcHRpb25zSG9va3MgPSBbXTsKICAgICQuanFwbG90LnByZURyYXdIb29rcyA9IFtdOwogICAgJC5qcXBsb3QucG9zdERyYXdIb29rcyA9IFtdOwogICAgJC5qcXBsb3QucHJlRHJhd1Nlcmllc0hvb2tzID0gW107CiAgICAkLmpxcGxvdC5wb3N0RHJhd1Nlcmllc0hvb2tzID0gW107CiAgICAkLmpxcGxvdC5wcmVEcmF3TGVnZW5kSG9va3MgPSBbXTsKICAgICQuanFwbG90LmFkZExlZ2VuZFJvd0hvb2tzID0gW107CiAgICAkLmpxcGxvdC5wcmVTZXJpZXNJbml0SG9va3MgPSBbXTsKICAgICQuanFwbG90LnBvc3RTZXJpZXNJbml0SG9va3MgPSBbXTsKICAgICQuanFwbG90LnByZVBhcnNlU2VyaWVzT3B0aW9uc0hvb2tzID0gW107CiAgICAkLmpxcGxvdC5wb3N0UGFyc2VTZXJpZXNPcHRpb25zSG9va3MgPSBbXTsKICAgICQuanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcyA9IFtdOwogICAgJC5qcXBsb3QucHJlRHJhd1Nlcmllc1NoYWRvd0hvb2tzID0gW107CiAgICAkLmpxcGxvdC5wb3N0RHJhd1Nlcmllc1NoYWRvd0hvb2tzID0gW107CgogICAgLy8gQSBzdXBlcmNsYXNzIGhvbGRpbmcgc29tZSBjb21tb24gcHJvcGVydGllcyBhbmQgbWV0aG9kcy4KICAgICQuanFwbG90LkVsZW1Db250YWluZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICB0aGlzLl9lbGVtOwogICAgICAgIHRoaXMuX3Bsb3RXaWR0aDsKICAgICAgICB0aGlzLl9wbG90SGVpZ2h0OwogICAgICAgIHRoaXMuX3Bsb3REaW1lbnNpb25zID0ge2hlaWdodDpudWxsLCB3aWR0aDpudWxsfTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkVsZW1Db250YWluZXIucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbihlbCwgb2Zmc2V0cywgY2xzcywgY3Nzb3B0cywgYXR0cmliKSB7CiAgICAgICAgdGhpcy5fb2Zmc2V0cyA9IG9mZnNldHM7CiAgICAgICAgdmFyIGtsYXNzID0gY2xzcyB8fCAnanFwbG90JzsKICAgICAgICB2YXIgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWwpOwogICAgICAgIHRoaXMuX2VsZW0gPSAkKGVsZW0pOwogICAgICAgIHRoaXMuX2VsZW0uYWRkQ2xhc3Moa2xhc3MpOwogICAgICAgIHRoaXMuX2VsZW0uY3NzKGNzc29wdHMpOwogICAgICAgIHRoaXMuX2VsZW0uYXR0cihhdHRyaWIpOwogICAgICAgIC8vIGF2b2lkIG1lbW9yeSBsZWFrOwogICAgICAgIGVsZW0gPSBudWxsOwogICAgICAgIHJldHVybiB0aGlzLl9lbGVtOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRWxlbUNvbnRhaW5lci5wcm90b3R5cGUuZ2V0V2lkdGggPSBmdW5jdGlvbigpIHsKICAgICAgICBpZiAodGhpcy5fZWxlbSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbS5vdXRlcldpZHRoKHRydWUpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRWxlbUNvbnRhaW5lci5wcm90b3R5cGUuZ2V0SGVpZ2h0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKHRoaXMuX2VsZW0pIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW0ub3V0ZXJIZWlnaHQodHJ1ZSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5FbGVtQ29udGFpbmVyLnByb3RvdHlwZS5nZXRQb3NpdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICAgIGlmICh0aGlzLl9lbGVtKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtLnBvc2l0aW9uKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4ge3RvcDpudWxsLCBsZWZ0Om51bGwsIGJvdHRvbTpudWxsLCByaWdodDpudWxsfTsKICAgICAgICB9CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5FbGVtQ29udGFpbmVyLnByb3RvdHlwZS5nZXRUb3AgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5nZXRQb3NpdGlvbigpLnRvcDsKICAgIH07CiAgICAKICAgICQuanFwbG90LkVsZW1Db250YWluZXIucHJvdG90eXBlLmdldExlZnQgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5nZXRQb3NpdGlvbigpLmxlZnQ7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5FbGVtQ29udGFpbmVyLnByb3RvdHlwZS5nZXRCb3R0b20gPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5fZWxlbS5jc3MoJ2JvdHRvbScpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRWxlbUNvbnRhaW5lci5wcm90b3R5cGUuZ2V0UmlnaHQgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5fZWxlbS5jc3MoJ3JpZ2h0Jyk7CiAgICB9OwogICAgCgogICAgLyoqCiAgICAgKiBDbGFzczogQXhpcwogICAgICogQW4gaW5kaXZpZHVhbCBheGlzIG9iamVjdC4gIENhbm5vdCBiZSBpbnN0YW50aWF0ZWQgZGlyZWN0bHksIGJ1dCBjcmVhdGVkCiAgICAgKiBieSB0aGUgUGxvdCBvYmplY3QuICBBeGlzIHByb3BlcnRpZXMgY2FuIGJlIHNldCBvciBvdmVycmlkZGVuIGJ5IHRoZSAKICAgICAqIG9wdGlvbnMgcGFzc2VkIGluIGZyb20gdGhlIHVzZXIuCiAgICAgKiAKICAgICAqLwogICAgZnVuY3Rpb24gQXhpcyhuYW1lKSB7CiAgICAgICAgJC5qcXBsb3QuRWxlbUNvbnRhaW5lci5jYWxsKHRoaXMpOwogICAgICAgIC8vIEdyb3VwOiBQcm9wZXJ0aWVzCiAgICAgICAgLy8KICAgICAgICAvLyBBeGVzIG9wdGlvbnMgYXJlIHNwZWNpZmllZCB3aXRoaW4gYW4gYXhlcyBvYmplY3QgYXQgdGhlIHRvcCBsZXZlbCBvZiB0aGUgCiAgICAgICAgLy8gcGxvdCBvcHRpb25zIGxpa2Ugc286CiAgICAgICAgLy8gPiB7CiAgICAgICAgLy8gPiAgICBheGVzOiB7CiAgICAgICAgLy8gPiAgICAgICAgeGF4aXM6IHttaW46IDV9LAogICAgICAgIC8vID4gICAgICAgIHlheGlzOiB7bWluOiAyLCBtYXg6IDgsIG51bWJlclRpY2tzOjR9LAogICAgICAgIC8vID4gICAgICAgIHgyYXhpczoge3BhZDogMS41fSwKICAgICAgICAvLyA+ICAgICAgICB5MmF4aXM6IHt0aWNrczpbMjIsIDQ0LCA2NiwgODhdfQogICAgICAgIC8vID4gICAgICAgIH0KICAgICAgICAvLyA+IH0KICAgICAgICAvLyBUaGVyZSBhcmUgMiB4IGF4ZXMsICd4YXhpcycgYW5kICd4MmF4aXMnLCBhbmQgCiAgICAgICAgLy8gOSB5YXhlcywgJ3lheGlzJywgJ3kyYXhpcycuICd5M2F4aXMnLCAuLi4gIEFueSBvciBhbGwgb2Ygd2hpY2ggbWF5IGJlIHNwZWNpZmllZC4KICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOwogICAgICAgIHRoaXMuX3NlcmllcyA9IFtdOwogICAgICAgIC8vIHByb3A6IHNob3cKICAgICAgICAvLyBXZXRoZXIgdG8gZGlzcGxheSB0aGUgYXhpcyBvbiB0aGUgZ3JhcGguCiAgICAgICAgdGhpcy5zaG93ID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogdGlja1JlbmRlcmVyCiAgICAgICAgLy8gQSBjbGFzcyBvZiBhIHJlbmRlcmluZyBlbmdpbmUgZm9yIGNyZWF0aW5nIHRoZSB0aWNrcyBsYWJlbHMgZGlzcGxheWVkIG9uIHRoZSBwbG90LCAKICAgICAgICAvLyBTZWUgPCQuanFwbG90LkF4aXNUaWNrUmVuZGVyZXI+LgogICAgICAgIHRoaXMudGlja1JlbmRlcmVyID0gJC5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlcjsKICAgICAgICAvLyBwcm9wOiB0aWNrT3B0aW9ucwogICAgICAgIC8vIE9wdGlvbnMgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgdGlja1JlbmRlcmVyLCBzZWUgPCQuanFwbG90LkF4aXNUaWNrUmVuZGVyZXI+IG9wdGlvbnMuCiAgICAgICAgdGhpcy50aWNrT3B0aW9ucyA9IHt9OwogICAgICAgIC8vIHByb3A6IGxhYmVsUmVuZGVyZXIKICAgICAgICAvLyBBIGNsYXNzIG9mIGEgcmVuZGVyaW5nIGVuZ2luZSBmb3IgY3JlYXRpbmcgYW4gYXhpcyBsYWJlbC4KICAgICAgICB0aGlzLmxhYmVsUmVuZGVyZXIgPSAkLmpxcGxvdC5BeGlzTGFiZWxSZW5kZXJlcjsKICAgICAgICAvLyBwcm9wOiBsYWJlbE9wdGlvbnMKICAgICAgICAvLyBPcHRpb25zIHBhc3NlZCB0byB0aGUgbGFiZWwgcmVuZGVyZXIuCiAgICAgICAgdGhpcy5sYWJlbE9wdGlvbnMgPSB7fTsKICAgICAgICAvLyBwcm9wOiBsYWJlbAogICAgICAgIC8vIExhYmVsIGZvciB0aGUgYXhpcwogICAgICAgIHRoaXMubGFiZWwgPSBudWxsOwogICAgICAgIC8vIHByb3A6IHNob3dMYWJlbAogICAgICAgIC8vIHRydWUgdG8gc2hvdyB0aGUgYXhpcyBsYWJlbC4KICAgICAgICB0aGlzLnNob3dMYWJlbCA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogbWluCiAgICAgICAgLy8gbWluaW11bSB2YWx1ZSBvZiB0aGUgYXhpcyAoaW4gZGF0YSB1bml0cywgbm90IHBpeGVscykuCiAgICAgICAgdGhpcy5taW4gPSBudWxsOwogICAgICAgIC8vIHByb3A6IG1heAogICAgICAgIC8vIG1heGltdW0gdmFsdWUgb2YgdGhlIGF4aXMgKGluIGRhdGEgdW5pdHMsIG5vdCBwaXhlbHMpLgogICAgICAgIHRoaXMubWF4ID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBhdXRvc2NhbGUKICAgICAgICAvLyBERVBSRUNBVEVECiAgICAgICAgLy8gdGhlIGRlZmF1bHQgc2NhbGluZyBhbGdvcml0aG0gcHJvZHVjZXMgc3VwZXJpb3IgcmVzdWx0cy4KICAgICAgICB0aGlzLmF1dG9zY2FsZSA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IHBhZAogICAgICAgIC8vIFBhZGRpbmcgdG8gZXh0ZW5kIHRoZSByYW5nZSBhYm92ZSBhbmQgYmVsb3cgdGhlIGRhdGEgYm91bmRzLgogICAgICAgIC8vIFRoZSBkYXRhIHJhbmdlIGlzIG11bHRpcGxpZWQgYnkgdGhpcyBmYWN0b3IgdG8gZGV0ZXJtaW5lIG1pbmltdW0gYW5kIG1heGltdW0gYXhpcyBib3VuZHMuCiAgICAgICAgLy8gQSB2YWx1ZSBvZiAwIHdpbGwgYmUgaW50ZXJwcmV0ZWQgdG8gbWVhbiBubyBwYWRkaW5nLCBhbmQgcGFkIHdpbGwgYmUgc2V0IHRvIDEuMC4KICAgICAgICB0aGlzLnBhZCA9IDEuMjsKICAgICAgICAvLyBwcm9wOiBwYWRNYXgKICAgICAgICAvLyBQYWRkaW5nIHRvIGV4dGVuZCB0aGUgcmFuZ2UgYWJvdmUgZGF0YSBib3VuZHMuCiAgICAgICAgLy8gVGhlIHRvcCBvZiB0aGUgZGF0YSByYW5nZSBpcyBtdWx0aXBsaWVkIGJ5IHRoaXMgZmFjdG9yIHRvIGRldGVybWluZSBtYXhpbXVtIGF4aXMgYm91bmRzLgogICAgICAgIC8vIEEgdmFsdWUgb2YgMCB3aWxsIGJlIGludGVycHJldGVkIHRvIG1lYW4gbm8gcGFkZGluZywgYW5kIHBhZE1heCB3aWxsIGJlIHNldCB0byAxLjAuCiAgICAgICAgdGhpcy5wYWRNYXggPSBudWxsOwogICAgICAgIC8vIHByb3A6IHBhZE1pbgogICAgICAgIC8vIFBhZGRpbmcgdG8gZXh0ZW5kIHRoZSByYW5nZSBiZWxvdyBkYXRhIGJvdW5kcy4KICAgICAgICAvLyBUaGUgYm90dG9tIG9mIHRoZSBkYXRhIHJhbmdlIGlzIG11bHRpcGxpZWQgYnkgdGhpcyBmYWN0b3IgdG8gZGV0ZXJtaW5lIG1pbmltdW0gYXhpcyBib3VuZHMuCiAgICAgICAgLy8gQSB2YWx1ZSBvZiAwIHdpbGwgYmUgaW50ZXJwcmV0ZWQgdG8gbWVhbiBubyBwYWRkaW5nLCBhbmQgcGFkTWluIHdpbGwgYmUgc2V0IHRvIDEuMC4KICAgICAgICB0aGlzLnBhZE1pbiA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogdGlja3MKICAgICAgICAvLyAxRCBbdmFsLCB2YWwsIC4uLl0gb3IgMkQgW1t2YWwsIGxhYmVsXSwgW3ZhbCwgbGFiZWxdLCAuLi5dIGFycmF5IG9mIHRpY2tzIGZvciB0aGUgYXhpcy4KICAgICAgICAvLyBJZiBubyBsYWJlbCBpcyBzcGVjaWZpZWQsIHRoZSB2YWx1ZSBpcyBmb3JtYXR0ZWQgaW50byBhbiBhcHByb3ByaWF0ZSBsYWJlbC4KICAgICAgICB0aGlzLnRpY2tzID0gW107CiAgICAgICAgLy8gcHJvcDogbnVtYmVyVGlja3MKICAgICAgICAvLyBEZXNpcmVkIG51bWJlciBvZiB0aWNrcy4gIERlZmF1bHQgaXMgdG8gY29tcHV0ZSBhdXRvbWF0aWNhbGx5LgogICAgICAgIHRoaXMubnVtYmVyVGlja3M7CiAgICAgICAgLy8gcHJvcDogdGlja0ludGVydmFsCiAgICAgICAgLy8gbnVtYmVyIG9mIHVuaXRzIGJldHdlZW4gdGlja3MuICBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBudW1iZXJUaWNrcy4KICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbDsKICAgICAgICAvLyBwcm9wOiByZW5kZXJlcgogICAgICAgIC8vIEEgY2xhc3Mgb2YgYSByZW5kZXJpbmcgZW5naW5lIHRoYXQgaGFuZGxlcyB0aWNrIGdlbmVyYXRpb24sIAogICAgICAgIC8vIHNjYWxpbmcgaW5wdXQgZGF0YSB0byBwaXhlbCBncmlkIHVuaXRzIGFuZCBkcmF3aW5nIHRoZSBheGlzIGVsZW1lbnQuCiAgICAgICAgdGhpcy5yZW5kZXJlciA9ICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlcjsKICAgICAgICAvLyBwcm9wOiByZW5kZXJlck9wdGlvbnMKICAgICAgICAvLyByZW5kZXJlciBzcGVjaWZpYyBvcHRpb25zLiAgU2VlIDwkLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXI+IGZvciBvcHRpb25zLgogICAgICAgIHRoaXMucmVuZGVyZXJPcHRpb25zID0ge307CiAgICAgICAgLy8gcHJvcDogc2hvd1RpY2tzCiAgICAgICAgLy8gV2V0aGVyIHRvIHNob3cgdGhlIHRpY2tzIChib3RoIG1hcmtzIGFuZCBsYWJlbHMpIG9yIG5vdC4KICAgICAgICAvLyBXaWxsIG5vdCBvdmVycmlkZSBzaG93TWFyayBhbmQgc2hvd0xhYmVsIG9wdGlvbnMgaWYgc3BlY2lmaWVkIG9uIHRoZSB0aWNrcyB0aGVtc2VsdmVzLgogICAgICAgIHRoaXMuc2hvd1RpY2tzID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBzaG93VGlja01hcmtzCiAgICAgICAgLy8gV2V0aGVyIHRvIHNob3cgdGhlIHRpY2sgbWFya3MgKGxpbmUgY3Jvc3NpbmcgZ3JpZCkgb3Igbm90LgogICAgICAgIC8vIE92ZXJyaWRkZW4gYnkgc2hvd1RpY2tzIGFuZCBzaG93TWFyayBvcHRpb24gb2YgdGljayBpdHNlbGYuCiAgICAgICAgdGhpcy5zaG93VGlja01hcmtzID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBzaG93TWlub3JUaWNrcwogICAgICAgIC8vIFdldGhlciBvciBub3QgdG8gc2hvdyBtaW5vciB0aWNrcy4gIFRoaXMgaXMgcmVuZGVyZXIgZGVwZW5kZW50LgogICAgICAgIHRoaXMuc2hvd01pbm9yVGlja3MgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IGRyYXdNYWpvckdyaWRsaW5lcwogICAgICAgIC8vIFRydWUgdG8gZHJhdyBncmlkbGluZXMgZm9yIG1ham9yIGF4aXMgdGlja3MuCiAgICAgICAgdGhpcy5kcmF3TWFqb3JHcmlkbGluZXMgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IGRyYXdNaW5vckdyaWRsaW5lcwogICAgICAgIC8vIFRydWUgdG8gZHJhdyBncmlkbGluZXMgZm9yIG1pbm9yIHRpY2tzLgogICAgICAgIHRoaXMuZHJhd01pbm9yR3JpZGxpbmVzID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogZHJhd01ham9yVGlja01hcmtzCiAgICAgICAgLy8gVHJ1ZSB0byBkcmF3IHRpY2sgbWFya3MgZm9yIG1ham9yIGF4aXMgdGlja3MuCiAgICAgICAgdGhpcy5kcmF3TWFqb3JUaWNrTWFya3MgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IGRyYXdNaW5vclRpY2tNYXJrcwogICAgICAgIC8vIFRydWUgdG8gZHJhdyB0aWNrIG1hcmtzIGZvciBtaW5vciB0aWNrcy4gIFRoaXMgaXMgcmVuZGVyZXIgZGVwZW5kZW50LgogICAgICAgIHRoaXMuZHJhd01pbm9yVGlja01hcmtzID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiB1c2VTZXJpZXNDb2xvcgogICAgICAgIC8vIFVzZSB0aGUgY29sb3Igb2YgdGhlIGZpcnN0IHNlcmllcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBheGlzIGZvciB0aGUKICAgICAgICAvLyB0aWNrIG1hcmtzIGFuZCBsaW5lIGJvcmRlcmluZyB0aGlzIGF4aXMuCiAgICAgICAgdGhpcy51c2VTZXJpZXNDb2xvciA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGJvcmRlcldpZHRoCiAgICAgICAgLy8gd2lkdGggb2YgbGluZSBzdHJva2VkIGF0IHRoZSBib3JkZXIgb2YgdGhlIGF4aXMuICBEZWZhdWx0cwogICAgICAgIC8vIHRvIHRoZSB3aWR0aCBvZiB0aGUgZ3JpZCBib2FyZGVyLgogICAgICAgIHRoaXMuYm9yZGVyV2lkdGggPSBudWxsOwogICAgICAgIC8vIHByb3A6IGJvcmRlckNvbG9yCiAgICAgICAgLy8gY29sb3Igb2YgdGhlIGJvcmRlciBhZGphY2VudCB0byB0aGUgYXhpcy4gIERlZmF1bHRzIHRvIGdyaWQgYm9yZGVyIGNvbG9yLgogICAgICAgIHRoaXMuYm9yZGVyQ29sb3IgPSBudWxsOwogICAgICAgIC8vIHByb3A6IHNjYWxlVG9IaWRkZW5TZXJpZXMKICAgICAgICAvLyBUcnVlIHRvIGluY2x1ZGUgaGlkZGVuIHNlcmllcyB3aGVuIGNvbXB1dGluZyBheGVzIGJvdW5kcyBhbmQgc2NhbGluZy4KICAgICAgICB0aGlzLnNjYWxlVG9IaWRkZW5TZXJpZXMgPSBmYWxzZTsKICAgICAgICAvLyBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyBvbiB0aGUgYXhpcy4KICAgICAgICB0aGlzLl9kYXRhQm91bmRzID0ge21pbjpudWxsLCBtYXg6bnVsbH07CiAgICAgICAgLy8gc3RhdGlzdGljcyAobWluLCBtYXgsIG1lYW4pIGFzIHdlbGwgYXMgYWN0dWFsIGRhdGEgaW50ZXJ2YWxzIGZvciBlYWNoIHNlcmllcyBhdHRhY2hlZCB0byBheGlzLgogICAgICAgIC8vIGhvbGRzIGNvbGxlY3Rpb24gb2Yge2ludGVydmFsczpbXSwgbWluOiwgbWF4OiwgbWVhbjogfSBvYmplY3RzIGZvciBlYWNoIHNlcmllcyBvbiBheGlzLgogICAgICAgIHRoaXMuX2ludGVydmFsU3RhdHMgPSBbXTsKICAgICAgICAvLyBwaXhlbCBwb3NpdGlvbiBmcm9tIHRoZSB0b3AgbGVmdCBvZiB0aGUgbWluIHZhbHVlIGFuZCBtYXggdmFsdWUgb24gdGhlIGF4aXMuCiAgICAgICAgdGhpcy5fb2Zmc2V0cyA9IHttaW46bnVsbCwgbWF4Om51bGx9OwogICAgICAgIHRoaXMuX3RpY2tzPVtdOwogICAgICAgIHRoaXMuX2xhYmVsID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBzeW5jVGlja3MKICAgICAgICAvLyB0cnVlIHRvIHRyeSBhbmQgc3luY2hyb25pemUgdGljayBzcGFjaW5nIGFjcm9zcyBtdWx0aXBsZSBheGVzIHNvIHRoYXQgdGlja3MgYW5kCiAgICAgICAgLy8gZ3JpZCBsaW5lcyBsaW5lIHVwLiAgVGhpcyBoYXMgYW4gaW1wYWN0IG9uIGF1dG9zY2FsaW5nIGFsZ29yaXRobSwgaG93ZXZlci4KICAgICAgICAvLyBJbiBnZW5lcmFsLCBhdXRvc2NhbGluZyBhbiBpbmRpdmlkdWFsIGF4aXMgd2lsbCB3b3JrIGJldHRlciBpZiBpdCBkb2VzIG5vdAogICAgICAgIC8vIGhhdmUgdG8gc3luYyB0aWNrcy4KICAgICAgICB0aGlzLnN5bmNUaWNrcyA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogdGlja1NwYWNpbmcKICAgICAgICAvLyBBcHByb3hpbWF0ZSBwaXhlbCBzcGFjaW5nIGJldHdlZW4gdGlja3Mgb24gZ3JhcGguICBVc2VkIGR1cmluZyBhdXRvc2NhbGluZy4KICAgICAgICAvLyBUaGlzIG51bWJlciB3aWxsIGJlIGFuIHVwcGVyIGJvdW5kLCBhY3R1YWwgc3BhY2luZyB3aWxsIGJlIGxlc3MuCiAgICAgICAgdGhpcy50aWNrU3BhY2luZyA9IDc1OwogICAgICAgIC8vIFByb3BlcnRpZXMgdG8gaG9sZCB0aGUgb3JpZ2luYWwgdmFsdWVzIGZvciBtaW4sIG1heCwgdGlja3MsIHRpY2tJbnRlcnZhbCBhbmQgbnVtYmVyVGlja3MKICAgICAgICAvLyBzbyB0aGV5IGNhbiBiZSByZXN0b3JlZCBpZiBhbHRlcmVkIGJ5IHBsdWdpbnMuCiAgICAgICAgdGhpcy5fbWluID0gbnVsbDsKICAgICAgICB0aGlzLl9tYXggPSBudWxsOwogICAgICAgIHRoaXMuX3RpY2tJbnRlcnZhbCA9IG51bGw7CiAgICAgICAgdGhpcy5fbnVtYmVyVGlja3MgPSBudWxsOwogICAgICAgIHRoaXMuX190aWNrcyA9IG51bGw7CiAgICAgICAgLy8gaG9sZCBvcmlnaW5hbCB1c2VyIG9wdGlvbnMuCiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHt9OwogICAgfQogICAgCiAgICBBeGlzLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5FbGVtQ29udGFpbmVyKCk7CiAgICBBeGlzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEF4aXM7CiAgICAKICAgIEF4aXMucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICBpZiAoJC5pc0Z1bmN0aW9uKHRoaXMucmVuZGVyZXIpKSB7CiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIgPSBuZXcgdGhpcy5yZW5kZXJlcigpOyAgCiAgICAgICAgfQogICAgICAgIC8vIHNldCB0aGUgYXhpcyBuYW1lCiAgICAgICAgdGhpcy50aWNrT3B0aW9ucy5heGlzID0gdGhpcy5uYW1lOwogICAgICAgIC8vIGlmIHNob3dNYXJrIG9yIHNob3dMYWJlbCB0aWNrIG9wdGlvbnMgbm90IHNwZWNpZmllZCwgdXNlIHZhbHVlIG9mIGF4aXMgb3B0aW9uLgogICAgICAgIC8vIHNob3dUaWNrcyBvdmVycmlkZXMgc2hvd1RpY2tNYXJrcy4KICAgICAgICBpZiAodGhpcy50aWNrT3B0aW9ucy5zaG93TWFyayA9PSBudWxsKSB7CiAgICAgICAgICAgIHRoaXMudGlja09wdGlvbnMuc2hvd01hcmsgPSB0aGlzLnNob3dUaWNrczsKICAgICAgICB9CiAgICAgICAgaWYgKHRoaXMudGlja09wdGlvbnMuc2hvd01hcmsgPT0gbnVsbCkgewogICAgICAgICAgICB0aGlzLnRpY2tPcHRpb25zLnNob3dNYXJrID0gdGhpcy5zaG93VGlja01hcmtzOwogICAgICAgIH0KICAgICAgICBpZiAodGhpcy50aWNrT3B0aW9ucy5zaG93TGFiZWwgPT0gbnVsbCkgewogICAgICAgICAgICB0aGlzLnRpY2tPcHRpb25zLnNob3dMYWJlbCA9IHRoaXMuc2hvd1RpY2tzOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAodGhpcy5sYWJlbCA9PSBudWxsIHx8IHRoaXMubGFiZWwgPT0gJycpIHsKICAgICAgICAgICAgdGhpcy5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHRoaXMubGFiZWxPcHRpb25zLmxhYmVsID0gdGhpcy5sYWJlbDsKICAgICAgICB9CiAgICAgICAgaWYgKHRoaXMuc2hvd0xhYmVsID09IGZhbHNlKSB7CiAgICAgICAgICAgIHRoaXMubGFiZWxPcHRpb25zLnNob3cgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgLy8gc2V0IHRoZSBkZWZhdWx0IHBhZE1heCwgcGFkTWluIGlmIG5vdCBzcGVjaWZpZWQKICAgICAgICAvLyBzcGVjaWFsIGNoZWNrLCBpZiBubyBwYWRkaW5nIGRlc2lyZWQsIHBhZGRpbmcKICAgICAgICAvLyBzaG91bGQgYmUgc2V0IHRvIDEuMAogICAgICAgIGlmICh0aGlzLnBhZCA9PSAwKSB7CiAgICAgICAgICAgIHRoaXMucGFkID0gMS4wOwogICAgICAgIH0KICAgICAgICBpZiAodGhpcy5wYWRNYXggPT0gMCkgewogICAgICAgICAgICB0aGlzLnBhZE1heCA9IDEuMDsKICAgICAgICB9CiAgICAgICAgaWYgKHRoaXMucGFkTWluID09IDApIHsKICAgICAgICAgICAgdGhpcy5wYWRNaW4gPSAxLjA7CiAgICAgICAgfQogICAgICAgIGlmICh0aGlzLnBhZE1heCA9PSBudWxsKSB7CiAgICAgICAgICAgIHRoaXMucGFkTWF4ID0gKHRoaXMucGFkLTEpLzIgKyAxOwogICAgICAgIH0KICAgICAgICBpZiAodGhpcy5wYWRNaW4gPT0gbnVsbCkgewogICAgICAgICAgICB0aGlzLnBhZE1pbiA9ICh0aGlzLnBhZC0xKS8yICsgMTsKICAgICAgICB9CiAgICAgICAgLy8gbm93IHRoYXQgcGFkTWluIGFuZCBwYWRNYXggYXJlIGNvcnJlY3RseSBzZXQsIHJlc2V0IHBhZCBpbiBjYXNlIHVzZXIgaGFzIHN1cHBsaWVkIAogICAgICAgIC8vIHBhZE1pbiBhbmQvb3IgcGFkTWF4CiAgICAgICAgdGhpcy5wYWQgPSB0aGlzLnBhZE1heCArIHRoaXMucGFkTWluIC0gMTsKICAgICAgICBpZiAodGhpcy5taW4gIT0gbnVsbCB8fCB0aGlzLm1heCAhPSBudWxsKSB7CiAgICAgICAgICAgIHRoaXMuYXV0b3NjYWxlID0gZmFsc2U7CiAgICAgICAgfQogICAgICAgIC8vIGlmIG5vdCBzZXQsIHN5bmMgdGlja3MgZm9yIHkgYXhlcyBidXQgbm90IHggYnkgZGVmYXVsdC4KICAgICAgICBpZiAodGhpcy5zeW5jVGlja3MgPT0gbnVsbCAmJiB0aGlzLm5hbWUuaW5kZXhPZigneScpID4gLTEpIHsKICAgICAgICAgICAgdGhpcy5zeW5jVGlja3MgPSB0cnVlOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICh0aGlzLnN5bmNUaWNrcyA9PSBudWxsKXsKICAgICAgICAgICAgdGhpcy5zeW5jVGlja3MgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgdGhpcy5yZW5kZXJlci5pbml0LmNhbGwodGhpcywgdGhpcy5yZW5kZXJlck9wdGlvbnMpOwogICAgICAgIAogICAgfTsKICAgIAogICAgQXhpcy5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGN0eCwgcGxvdCkgewogICAgICAgIC8vIE1lbW9yeSBMZWFrcyBwYXRjaAogICAgICAgIGlmICh0aGlzLl9fdGlja3MpIHsKICAgICAgICAgIHRoaXMuX190aWNrcyA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJlci5kcmF3LmNhbGwodGhpcywgY3R4LCBwbG90KTsKICAgICAgICAKICAgIH07CiAgICAKICAgIEF4aXMucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMucmVuZGVyZXIuc2V0LmNhbGwodGhpcyk7CiAgICB9OwogICAgCiAgICBBeGlzLnByb3RvdHlwZS5wYWNrID0gZnVuY3Rpb24ocG9zLCBvZmZzZXRzKSB7CiAgICAgICAgaWYgKHRoaXMuc2hvdykgewogICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnBhY2suY2FsbCh0aGlzLCBwb3MsIG9mZnNldHMpOwogICAgICAgIH0KICAgICAgICAvLyB0aGVzZSBwcm9wZXJ0aWVzIHNob3VsZCBhbGwgYmUgYXZhaWxhYmxlIG5vdy4KICAgICAgICBpZiAodGhpcy5fbWluID09IG51bGwpIHsKICAgICAgICAgICAgdGhpcy5fbWluID0gdGhpcy5taW47CiAgICAgICAgICAgIHRoaXMuX21heCA9IHRoaXMubWF4OwogICAgICAgICAgICB0aGlzLl90aWNrSW50ZXJ2YWwgPSB0aGlzLnRpY2tJbnRlcnZhbDsKICAgICAgICAgICAgdGhpcy5fbnVtYmVyVGlja3MgPSB0aGlzLm51bWJlclRpY2tzOwogICAgICAgICAgICB0aGlzLl9fdGlja3MgPSB0aGlzLl90aWNrczsKICAgICAgICB9CiAgICB9OwogICAgCiAgICAvLyByZXNldCB0aGUgYXhpcyBiYWNrIHRvIG9yaWdpbmFsIHZhbHVlcyBpZiBpdCBoYXMgYmVlbiBzY2FsZWQsIHpvb21lZCwgZXRjLgogICAgQXhpcy5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbigpIHsKICAgICAgICB0aGlzLnJlbmRlcmVyLnJlc2V0LmNhbGwodGhpcyk7CiAgICB9OwogICAgCiAgICBBeGlzLnByb3RvdHlwZS5yZXNldFNjYWxlID0gZnVuY3Rpb24ob3B0cykgewogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIHttaW46IG51bGwsIG1heDogbnVsbCwgbnVtYmVyVGlja3M6IG51bGwsIHRpY2tJbnRlcnZhbDogbnVsbCwgX3RpY2tzOiBbXSwgdGlja3M6IFtdfSwgb3B0cyk7CiAgICAgICAgdGhpcy5yZXNldERhdGFCb3VuZHMoKTsKICAgIH07CiAgICAKICAgIEF4aXMucHJvdG90eXBlLnJlc2V0RGF0YUJvdW5kcyA9IGZ1bmN0aW9uKCkgewogICAgICAgIC8vIEdvIHRocm91Z2ggYWxsIHRoZSBzZXJpZXMgYXR0YWNoZWQgdG8gdGhpcyBheGlzIGFuZCBmaW5kCiAgICAgICAgLy8gdGhlIG1pbi9tYXggYm91bmRzIGZvciB0aGlzIGF4aXMuCiAgICAgICAgdmFyIGRiID0gdGhpcy5fZGF0YUJvdW5kczsKICAgICAgICBkYi5taW4gPSBudWxsOwogICAgICAgIGRiLm1heCA9IG51bGw7CiAgICAgICAgdmFyIGwsIHMsIGQ7CiAgICAgICAgLy8gY2hlY2sgZm9yIHdoZW4gdG8gZm9yY2UgbWluIDAgb24gYmFyIHNlcmllcyBwbG90cy4KICAgICAgICB2YXIgZG9mb3JjZSA9ICh0aGlzLnNob3cpID8gdHJ1ZSA6IGZhbHNlOwogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgcyA9IHRoaXMuX3Nlcmllc1tpXTsKICAgICAgICAgICAgaWYgKHMuc2hvdyB8fCB0aGlzLnNjYWxlVG9IaWRkZW5TZXJpZXMpIHsKICAgICAgICAgICAgICAgIGQgPSBzLl9wbG90RGF0YTsKICAgICAgICAgICAgICAgIGlmIChzLl90eXBlID09PSAnbGluZScgJiYgcy5yZW5kZXJlci5iYW5kcy5zaG93ICYmIHRoaXMubmFtZS5jaGFyQXQoMCkgIT09ICd4JykgewogICAgICAgICAgICAgICAgICAgIGQgPSBbWzAsIHMucmVuZGVyZXIuYmFuZHMuX21pbl0sIFsxLCBzLnJlbmRlcmVyLmJhbmRzLl9tYXhdXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgbWlueWlkeCA9IDEsIG1heHlpZHggPSAxOwoKICAgICAgICAgICAgICAgIGlmIChzLl90eXBlICE9IG51bGwgJiYgcy5fdHlwZSA9PSAnb2hsYycpIHsKICAgICAgICAgICAgICAgICAgICBtaW55aWR4ID0gMzsKICAgICAgICAgICAgICAgICAgICBtYXh5aWR4ID0gMjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wLCBsPWQubGVuZ3RoOyBqPGw7IGorKykgeyAKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lID09ICd4YXhpcycgfHwgdGhpcy5uYW1lID09ICd4MmF4aXMnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZFtqXVswXSAhPSBudWxsICYmIGRbal1bMF0gPCBkYi5taW4pIHx8IGRiLm1pbiA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYi5taW4gPSBkW2pdWzBdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZFtqXVswXSAhPSBudWxsICYmIGRbal1bMF0gPiBkYi5tYXgpIHx8IGRiLm1heCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYi5tYXggPSBkW2pdWzBdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZFtqXVttaW55aWR4XSAhPSBudWxsICYmIGRbal1bbWlueWlkeF0gPCBkYi5taW4pIHx8IGRiLm1pbiA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYi5taW4gPSBkW2pdW21pbnlpZHhdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZFtqXVttYXh5aWR4XSAhPSBudWxsICYmIGRbal1bbWF4eWlkeF0gPiBkYi5tYXgpIHx8IGRiLm1heCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYi5tYXggPSBkW2pdW21heHlpZHhdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gSGFjayB0byBub3QgcGFkIG91dCBib3R0b20gb2YgYmFyIHBsb3RzIHVubGVzcyB1c2VyIGhhcyBzcGVjaWZpZWQgYSBwYWRkaW5nLgogICAgICAgICAgICAgICAgLy8gZXZlcnkgc2VyaWVzIHdpbGwgaGF2ZSBhIGNoYW5jZSB0byBzZXQgZG9mb3JjZSB0byBmYWxzZS4gIG9uY2UgaXQgaXMgc2V0IHRvIAogICAgICAgICAgICAgICAgLy8gZmFsc2UsIGl0IGNhbm5vdCBiZSByZXNldCB0byB0cnVlLgogICAgICAgICAgICAgICAgLy8gSWYgYW55IHNlcmllcyBhdHRhY2hlZCB0byBheGlzIGlzIG5vdCBhIGJhciwgd29udCBmb3JjZSAwLgogICAgICAgICAgICAgICAgaWYgKGRvZm9yY2UgJiYgcy5yZW5kZXJlci5jb25zdHJ1Y3RvciAhPT0gJC5qcXBsb3QuQmFyUmVuZGVyZXIpIHsKICAgICAgICAgICAgICAgICAgICBkb2ZvcmNlID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzZSBpZiAoZG9mb3JjZSAmJiB0aGlzLl9vcHRpb25zLmhhc093blByb3BlcnR5KCdmb3JjZVRpY2tBdDAnKSAmJiB0aGlzLl9vcHRpb25zLmZvcmNlVGlja0F0MCA9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIGRvZm9yY2UgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNlIGlmIChkb2ZvcmNlICYmIHMucmVuZGVyZXIuY29uc3RydWN0b3IgPT09ICQuanFwbG90LkJhclJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHMuYmFyRGlyZWN0aW9uID09ICd2ZXJ0aWNhbCcgJiYgdGhpcy5uYW1lICE9ICd4YXhpcycgJiYgdGhpcy5uYW1lICE9ICd4MmF4aXMnKSB7IAogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fb3B0aW9ucy5wYWQgIT0gbnVsbCB8fCB0aGlzLl9vcHRpb25zLnBhZE1pbiAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2ZvcmNlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHMuYmFyRGlyZWN0aW9uID09ICdob3Jpem9udGFsJyAmJiAodGhpcy5uYW1lID09ICd4YXhpcycgfHwgdGhpcy5uYW1lID09ICd4MmF4aXMnKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fb3B0aW9ucy5wYWQgIT0gbnVsbCB8fCB0aGlzLl9vcHRpb25zLnBhZE1pbiAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2ZvcmNlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoZG9mb3JjZSAmJiB0aGlzLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09PSAkLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIgJiYgZGIubWluID49IDApIHsKICAgICAgICAgICAgdGhpcy5wYWRNaW4gPSAxLjA7CiAgICAgICAgICAgIHRoaXMuZm9yY2VUaWNrQXQwID0gdHJ1ZTsKICAgICAgICB9CiAgICB9OwoKICAgIC8qKgogICAgICogQ2xhc3M6IExlZ2VuZAogICAgICogTGVnZW5kIG9iamVjdC4gIENhbm5vdCBiZSBpbnN0YW50aWF0ZWQgZGlyZWN0bHksIGJ1dCBjcmVhdGVkCiAgICAgKiBieSB0aGUgUGxvdCBvYmplY3QuICBMZWdlbmQgcHJvcGVydGllcyBjYW4gYmUgc2V0IG9yIG92ZXJyaWRkZW4gYnkgdGhlIAogICAgICogb3B0aW9ucyBwYXNzZWQgaW4gZnJvbSB0aGUgdXNlci4KICAgICAqLwogICAgZnVuY3Rpb24gTGVnZW5kKG9wdGlvbnMpIHsKICAgICAgICAkLmpxcGxvdC5FbGVtQ29udGFpbmVyLmNhbGwodGhpcyk7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAKICAgICAgICAvLyBwcm9wOiBzaG93CiAgICAgICAgLy8gV2V0aGVyIHRvIGRpc3BsYXkgdGhlIGxlZ2VuZCBvbiB0aGUgZ3JhcGguCiAgICAgICAgdGhpcy5zaG93ID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogbG9jYXRpb24KICAgICAgICAvLyBQbGFjZW1lbnQgb2YgdGhlIGxlZ2VuZC4gIG9uZSBvZiB0aGUgY29tcGFzcyBkaXJlY3Rpb25zOiBudywgbiwgbmUsIGUsIHNlLCBzLCBzdywgdwogICAgICAgIHRoaXMubG9jYXRpb24gPSAnbmUnOwogICAgICAgIC8vIHByb3A6IGxhYmVscwogICAgICAgIC8vIEFycmF5IG9mIGxhYmVscyB0byB1c2UuICBCeSBkZWZhdWx0IHRoZSByZW5kZXJlciB3aWxsIGxvb2sgZm9yIGxhYmVscyBvbiB0aGUgc2VyaWVzLgogICAgICAgIC8vIExhYmVscyBzcGVjaWZpZWQgaW4gdGhpcyBhcnJheSB3aWxsIG92ZXJyaWRlIGxhYmVscyBzcGVjaWZpZWQgb24gdGhlIHNlcmllcy4KICAgICAgICB0aGlzLmxhYmVscyA9IFtdOwogICAgICAgIC8vIHByb3A6IHNob3dMYWJlbHMKICAgICAgICAvLyB0cnVlIHRvIHNob3cgdGhlIGxhYmVsIHRleHQgb24gdGhlICBsZWdlbmQuCiAgICAgICAgdGhpcy5zaG93TGFiZWxzID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBzaG93U3dhdGNoCiAgICAgICAgLy8gdHJ1ZSB0byBzaG93IHRoZSBjb2xvciBzd2F0Y2hlcyBvbiB0aGUgbGVnZW5kLgogICAgICAgIHRoaXMuc2hvd1N3YXRjaGVzID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBwbGFjZW1lbnQKICAgICAgICAvLyAiaW5zaWRlR3JpZCIgcGxhY2VzIGxlZ2VuZCBpbnNpZGUgdGhlIGdyaWQgYXJlYSBvZiB0aGUgcGxvdC4KICAgICAgICAvLyAib3V0c2lkZUdyaWQiIHBsYWNlcyB0aGUgbGVnZW5kIG91dHNpZGUgdGhlIGdyaWQgYnV0IGluc2lkZSB0aGUgcGxvdCBjb250YWluZXIsIAogICAgICAgIC8vIHNocmlua2luZyB0aGUgZ3JpZCB0byBhY2NvbW9kYXRlIHRoZSBsZWdlbmQuCiAgICAgICAgLy8gImluc2lkZSIgc3lub255bSBmb3IgImluc2lkZUdyaWQiLCAKICAgICAgICAvLyAib3V0c2lkZSIgcGxhY2VzIHRoZSBsZWdlbmQgb3VzaWRlIHRoZSBncmlkIGFyZWEsIGJ1dCBkb2VzIG5vdCBzaHJpbmsgdGhlIGdyaWQgd2hpY2gKICAgICAgICAvLyBjYW4gY2F1c2UgdGhlIGxlZ2VuZCB0byBvdmVyZmxvdyB0aGUgcGxvdCBjb250YWluZXIuCiAgICAgICAgdGhpcy5wbGFjZW1lbnQgPSAiaW5zaWRlR3JpZCI7CiAgICAgICAgLy8gcHJvcDogeG9mZnNldAogICAgICAgIC8vIERFUFJFQ0FURUQuICBTZXQgdGhlIG1hcmdpbnMgb24gdGhlIGxlZ2VuZCB1c2luZyB0aGUgbWFyZ2luVG9wLCBtYXJnaW5MZWZ0LCBldGMuIAogICAgICAgIC8vIHByb3BlcnRpZXMgb3IgdmlhIENTUyBtYXJnaW4gc3R5bGluZyBvZiB0aGUgLmpxcGxvdC10YWJsZS1sZWdlbmQgY2xhc3MuCiAgICAgICAgdGhpcy54b2Zmc2V0ID0gMDsKICAgICAgICAvLyBwcm9wOiB5b2Zmc2V0CiAgICAgICAgLy8gREVQUkVDQVRFRC4gIFNldCB0aGUgbWFyZ2lucyBvbiB0aGUgbGVnZW5kIHVzaW5nIHRoZSBtYXJnaW5Ub3AsIG1hcmdpbkxlZnQsIGV0Yy4gCiAgICAgICAgLy8gcHJvcGVydGllcyBvciB2aWEgQ1NTIG1hcmdpbiBzdHlsaW5nIG9mIHRoZSAuanFwbG90LXRhYmxlLWxlZ2VuZCBjbGFzcy4KICAgICAgICB0aGlzLnlvZmZzZXQgPSAwOwogICAgICAgIC8vIHByb3A6IGJvcmRlcgogICAgICAgIC8vIGNzcyBzcGVjIGZvciB0aGUgYm9yZGVyIGFyb3VuZCB0aGUgbGVnZW5kIGJveC4KICAgICAgICB0aGlzLmJvcmRlcjsKICAgICAgICAvLyBwcm9wOiBiYWNrZ3JvdW5kCiAgICAgICAgLy8gY3NzIHNwZWMgZm9yIHRoZSBiYWNrZ3JvdW5kIG9mIHRoZSBsZWdlbmQgYm94LgogICAgICAgIHRoaXMuYmFja2dyb3VuZDsKICAgICAgICAvLyBwcm9wOiB0ZXh0Q29sb3IKICAgICAgICAvLyBjc3MgY29sb3Igc3BlYyBmb3IgdGhlIGxlZ2VuZCB0ZXh0LgogICAgICAgIHRoaXMudGV4dENvbG9yOwogICAgICAgIC8vIHByb3A6IGZvbnRGYW1pbHkKICAgICAgICAvLyBjc3MgZm9udC1mYW1pbHkgc3BlYyBmb3IgdGhlIGxlZ2VuZCB0ZXh0LgogICAgICAgIHRoaXMuZm9udEZhbWlseTsgCiAgICAgICAgLy8gcHJvcDogZm9udFNpemUKICAgICAgICAvLyBjc3MgZm9udC1zaXplIHNwZWMgZm9yIHRoZSBsZWdlbmQgdGV4dC4KICAgICAgICB0aGlzLmZvbnRTaXplIDsKICAgICAgICAvLyBwcm9wOiByb3dTcGFjaW5nCiAgICAgICAgLy8gY3NzIHBhZGRpbmctdG9wIHNwZWMgZm9yIHRoZSByb3dzIGluIHRoZSBsZWdlbmQuCiAgICAgICAgdGhpcy5yb3dTcGFjaW5nID0gJzAuNWVtJzsKICAgICAgICAvLyByZW5kZXJlcgogICAgICAgIC8vIEEgY2xhc3MgdGhhdCB3aWxsIGNyZWF0ZSBhIERPTSBvYmplY3QgZm9yIHRoZSBsZWdlbmQsCiAgICAgICAgLy8gc2VlIDwkLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyPi4KICAgICAgICB0aGlzLnJlbmRlcmVyID0gJC5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlcjsKICAgICAgICAvLyBwcm9wOiByZW5kZXJlck9wdGlvbnMKICAgICAgICAvLyByZW5kZXJlciBzcGVjaWZpYyBvcHRpb25zIHBhc3NlZCB0byB0aGUgcmVuZGVyZXIuCiAgICAgICAgdGhpcy5yZW5kZXJlck9wdGlvbnMgPSB7fTsKICAgICAgICAvLyBwcm9wOiBwcmVkcmF3CiAgICAgICAgLy8gV2V0aGVyIHRvIGRyYXcgdGhlIGxlZ2VuZCBiZWZvcmUgdGhlIHNlcmllcyBvciBub3QuCiAgICAgICAgLy8gVXNlZCB3aXRoIHNlcmllcyBzcGVjaWZpYyBsZWdlbmQgcmVuZGVyZXJzIGZvciBwaWUsIGRvbnV0LCBtZWtrbyBjaGFydHMsIGV0Yy4KICAgICAgICB0aGlzLnByZURyYXcgPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiBtYXJnaW5Ub3AKICAgICAgICAvLyBDU1MgbWFyZ2luIGZvciB0aGUgbGVnZW5kIERPTSBlbGVtZW50LiBUaGlzIHdpbGwgc2V0IGFuIGVsZW1lbnQgCiAgICAgICAgLy8gQ1NTIHN0eWxlIGZvciB0aGUgbWFyZ2luIHdoaWNoIHdpbGwgb3ZlcnJpZGUgYW55IHN0eWxlIHNoZWV0IHNldHRpbmcuCiAgICAgICAgLy8gVGhlIGRlZmF1bHQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzdHlsZXNoZWV0LgogICAgICAgIHRoaXMubWFyZ2luVG9wID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBtYXJnaW5SaWdodAogICAgICAgIC8vIENTUyBtYXJnaW4gZm9yIHRoZSBsZWdlbmQgRE9NIGVsZW1lbnQuIFRoaXMgd2lsbCBzZXQgYW4gZWxlbWVudCAKICAgICAgICAvLyBDU1Mgc3R5bGUgZm9yIHRoZSBtYXJnaW4gd2hpY2ggd2lsbCBvdmVycmlkZSBhbnkgc3R5bGUgc2hlZXQgc2V0dGluZy4KICAgICAgICAvLyBUaGUgZGVmYXVsdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHN0eWxlc2hlZXQuCiAgICAgICAgdGhpcy5tYXJnaW5SaWdodCA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogbWFyZ2luQm90dG9tCiAgICAgICAgLy8gQ1NTIG1hcmdpbiBmb3IgdGhlIGxlZ2VuZCBET00gZWxlbWVudC4gVGhpcyB3aWxsIHNldCBhbiBlbGVtZW50IAogICAgICAgIC8vIENTUyBzdHlsZSBmb3IgdGhlIG1hcmdpbiB3aGljaCB3aWxsIG92ZXJyaWRlIGFueSBzdHlsZSBzaGVldCBzZXR0aW5nLgogICAgICAgIC8vIFRoZSBkZWZhdWx0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc3R5bGVzaGVldC4KICAgICAgICB0aGlzLm1hcmdpbkJvdHRvbSA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogbWFyZ2luTGVmdAogICAgICAgIC8vIENTUyBtYXJnaW4gZm9yIHRoZSBsZWdlbmQgRE9NIGVsZW1lbnQuIFRoaXMgd2lsbCBzZXQgYW4gZWxlbWVudCAKICAgICAgICAvLyBDU1Mgc3R5bGUgZm9yIHRoZSBtYXJnaW4gd2hpY2ggd2lsbCBvdmVycmlkZSBhbnkgc3R5bGUgc2hlZXQgc2V0dGluZy4KICAgICAgICAvLyBUaGUgZGVmYXVsdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHN0eWxlc2hlZXQuCiAgICAgICAgdGhpcy5tYXJnaW5MZWZ0ID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBlc2NhcGVIdG1sCiAgICAgICAgLy8gVHJ1ZSB0byBlc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzIHdpdGggdGhlaXIgaHRtbCBlbnRpdHkgZXF1aXZhbGVudHMKICAgICAgICAvLyBpbiBsZWdlbmQgdGV4dC4gICI8IiBiZWNvbWVzICZsdDsgYW5kIHNvIG9uLCBzbyBodG1sIHRhZ3MgYXJlIG5vdCByZW5kZXJlZC4KICAgICAgICB0aGlzLmVzY2FwZUh0bWwgPSBmYWxzZTsKICAgICAgICB0aGlzLl9zZXJpZXMgPSBbXTsKICAgICAgICAKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgIH0KICAgIAogICAgTGVnZW5kLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5FbGVtQ29udGFpbmVyKCk7CiAgICBMZWdlbmQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTGVnZW5kOwogICAgCiAgICBMZWdlbmQucHJvdG90eXBlLnNldE9wdGlvbnMgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CiAgICAgICAgCiAgICAgICAgLy8gVHJ5IHRvIGVtdWxhdGUgZGVwcmVjYXRlZCBiZWhhdmlvdXIKICAgICAgICAvLyBpZiB1c2VyIGhhcyBzcGVjaWZpZWQgeG9mZnNldCBvciB5b2Zmc2V0LCBjb3B5IHRoZXNlIHRvCiAgICAgICAgLy8gdGhlIG1hcmdpbiBwcm9wZXJ0aWVzLgogICAgICAgIAogICAgICAgIGlmICh0aGlzLnBsYWNlbWVudCA9PSAgJ2luc2lkZScpIHsKICAgICAgICAgICAgdGhpcy5wbGFjZW1lbnQgPSAnaW5zaWRlR3JpZCc7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICh0aGlzLnhvZmZzZXQgPjApIHsKICAgICAgICAgICAgaWYgKHRoaXMucGxhY2VtZW50ID09ICdpbnNpZGVHcmlkJykgewogICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmxvY2F0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbncnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3cnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N3JzoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWFyZ2luTGVmdCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmdpbkxlZnQgPSB0aGlzLnhvZmZzZXQgKyAncHgnOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFyZ2luUmlnaHQgPSAnMHB4JzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmUnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2UnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NlJzoKICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXJnaW5SaWdodCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmdpblJpZ2h0ID0gdGhpcy54b2Zmc2V0ICsgJ3B4JzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmdpbkxlZnQgPSAnMHB4JzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5wbGFjZW1lbnQgPT0gJ291dHNpZGUnKSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubG9jYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICdudyc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAndyc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3cnOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXJnaW5SaWdodCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmdpblJpZ2h0ID0gdGhpcy54b2Zmc2V0ICsgJ3B4JzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmdpbkxlZnQgPSAnMHB4JzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmUnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2UnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NlJzoKICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXJnaW5MZWZ0ID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFyZ2luTGVmdCA9IHRoaXMueG9mZnNldCArICdweCc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXJnaW5SaWdodCA9ICcwcHgnOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLnhvZmZzZXQgPSAwOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAodGhpcy55b2Zmc2V0ID4wKSB7CiAgICAgICAgICAgIGlmICh0aGlzLnBsYWNlbWVudCA9PSAnb3V0c2lkZScpIHsKICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5sb2NhdGlvbikgewogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N3JzoKICAgICAgICAgICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgICAgICAgICBjYXNlICdzZSc6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcmdpblRvcCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmdpblRvcCA9IHRoaXMueW9mZnNldCArICdweCc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXJnaW5Cb3R0b20gPSAnMHB4JzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmUnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ24nOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ253JzoKICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXJnaW5Cb3R0b20gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXJnaW5Cb3R0b20gPSB0aGlzLnlvZmZzZXQgKyAncHgnOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFyZ2luVG9wID0gJzBweCc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMucGxhY2VtZW50ID09ICdpbnNpZGVHcmlkJykgewogICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmxvY2F0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3cnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NlJzoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWFyZ2luQm90dG9tID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFyZ2luQm90dG9tID0gdGhpcy55b2Zmc2V0ICsgJ3B4JzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmdpblRvcCA9ICcwcHgnOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICduZSc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbic6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbncnOgogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcmdpblRvcCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmdpblRvcCA9IHRoaXMueW9mZnNldCArICdweCc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXJnaW5Cb3R0b20gPSAnMHB4JzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy55b2Zmc2V0ID0gMDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gVE8tRE86CiAgICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlcmUgb2Zmc2V0cyBhcmUgPCAwLgogICAgICAgIC8vCiAgICB9OwogICAgCiAgICBMZWdlbmQucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICBpZiAoJC5pc0Z1bmN0aW9uKHRoaXMucmVuZGVyZXIpKSB7CiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIgPSBuZXcgdGhpcy5yZW5kZXJlcigpOyAgCiAgICAgICAgfQogICAgICAgIHRoaXMucmVuZGVyZXIuaW5pdC5jYWxsKHRoaXMsIHRoaXMucmVuZGVyZXJPcHRpb25zKTsKICAgIH07CiAgICAKICAgIExlZ2VuZC5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKG9mZnNldHMsIHBsb3QpIHsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8JC5qcXBsb3QucHJlRHJhd0xlZ2VuZEhvb2tzLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgJC5qcXBsb3QucHJlRHJhd0xlZ2VuZEhvb2tzW2ldLmNhbGwodGhpcywgb2Zmc2V0cyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLnJlbmRlcmVyLmRyYXcuY2FsbCh0aGlzLCBvZmZzZXRzLCBwbG90KTsKICAgIH07CiAgICAKICAgIExlZ2VuZC5wcm90b3R5cGUucGFjayA9IGZ1bmN0aW9uKG9mZnNldHMpIHsKICAgICAgICB0aGlzLnJlbmRlcmVyLnBhY2suY2FsbCh0aGlzLCBvZmZzZXRzKTsKICAgIH07CgogICAgLyoqCiAgICAgKiBDbGFzczogVGl0bGUKICAgICAqIFBsb3QgVGl0bGUgb2JqZWN0LiAgQ2Fubm90IGJlIGluc3RhbnRpYXRlZCBkaXJlY3RseSwgYnV0IGNyZWF0ZWQKICAgICAqIGJ5IHRoZSBQbG90IG9iamVjdC4gIFRpdGxlIHByb3BlcnRpZXMgY2FuIGJlIHNldCBvciBvdmVycmlkZGVuIGJ5IHRoZSAKICAgICAqIG9wdGlvbnMgcGFzc2VkIGluIGZyb20gdGhlIHVzZXIuCiAgICAgKiAKICAgICAqIFBhcmFtZXRlcnM6CiAgICAgKiB0ZXh0IC0gdGV4dCBvZiB0aGUgdGl0bGUuCiAgICAgKi8KICAgIGZ1bmN0aW9uIFRpdGxlKHRleHQpIHsKICAgICAgICAkLmpxcGxvdC5FbGVtQ29udGFpbmVyLmNhbGwodGhpcyk7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAKICAgICAgICAvLyBwcm9wOiB0ZXh0CiAgICAgICAgLy8gdGV4dCBvZiB0aGUgdGl0bGU7CiAgICAgICAgdGhpcy50ZXh0ID0gdGV4dDsKICAgICAgICAvLyBwcm9wOiBzaG93CiAgICAgICAgLy8gd2hldGhlciBvciBub3QgdG8gc2hvdyB0aGUgdGl0bGUKICAgICAgICB0aGlzLnNob3cgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IGZvbnRGYW1pbHkKICAgICAgICAvLyBjc3MgZm9udC1mYW1pbHkgc3BlYyBmb3IgdGhlIHRleHQuCiAgICAgICAgdGhpcy5mb250RmFtaWx5OwogICAgICAgIC8vIHByb3A6IGZvbnRTaXplCiAgICAgICAgLy8gY3NzIGZvbnQtc2l6ZSBzcGVjIGZvciB0aGUgdGV4dC4KICAgICAgICB0aGlzLmZvbnRTaXplIDsKICAgICAgICAvLyBwcm9wOiB0ZXh0QWxpZ24KICAgICAgICAvLyBjc3MgdGV4dC1hbGlnbiBzcGVjIGZvciB0aGUgdGV4dC4KICAgICAgICB0aGlzLnRleHRBbGlnbjsKICAgICAgICAvLyBwcm9wOiB0ZXh0Q29sb3IKICAgICAgICAvLyBjc3MgY29sb3Igc3BlYyBmb3IgdGhlIHRleHQuCiAgICAgICAgdGhpcy50ZXh0Q29sb3I7CiAgICAgICAgLy8gcHJvcDogcmVuZGVyZXIKICAgICAgICAvLyBBIGNsYXNzIGZvciBjcmVhdGluZyBhIERPTSBlbGVtZW50IGZvciB0aGUgdGl0bGUsCiAgICAgICAgLy8gc2VlIDwkLmpxcGxvdC5EaXZUaXRsZVJlbmRlcmVyPi4KICAgICAgICB0aGlzLnJlbmRlcmVyID0gJC5qcXBsb3QuRGl2VGl0bGVSZW5kZXJlcjsKICAgICAgICAvLyBwcm9wOiByZW5kZXJlck9wdGlvbnMKICAgICAgICAvLyByZW5kZXJlciBzcGVjaWZpYyBvcHRpb25zIHBhc3NlZCB0byB0aGUgcmVuZGVyZXIuCiAgICAgICAgdGhpcy5yZW5kZXJlck9wdGlvbnMgPSB7fTsgICAKICAgICAgICAvLyBwcm9wOiBlc2NhcGVIdG1sCiAgICAgICAgLy8gVHJ1ZSB0byBlc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzIHdpdGggdGhlaXIgaHRtbCBlbnRpdHkgZXF1aXZhbGVudHMKICAgICAgICAvLyBpbiB0aXRsZSB0ZXh0LiAgIjwiIGJlY29tZXMgJmx0OyBhbmQgc28gb24sIHNvIGh0bWwgdGFncyBhcmUgbm90IHJlbmRlcmVkLgogICAgICAgIHRoaXMuZXNjYXBlSHRtbCA9IGZhbHNlOwogICAgfQogICAgCiAgICBUaXRsZS5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuRWxlbUNvbnRhaW5lcigpOwogICAgVGl0bGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVGl0bGU7CiAgICAKICAgIFRpdGxlLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKCQuaXNGdW5jdGlvbih0aGlzLnJlbmRlcmVyKSkgewogICAgICAgICAgICB0aGlzLnJlbmRlcmVyID0gbmV3IHRoaXMucmVuZGVyZXIoKTsgIAogICAgICAgIH0KICAgICAgICB0aGlzLnJlbmRlcmVyLmluaXQuY2FsbCh0aGlzLCB0aGlzLnJlbmRlcmVyT3B0aW9ucyk7CiAgICB9OwogICAgCiAgICBUaXRsZS5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKHdpZHRoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyZXIuZHJhdy5jYWxsKHRoaXMsIHdpZHRoKTsKICAgIH07CiAgICAKICAgIFRpdGxlLnByb3RvdHlwZS5wYWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy5yZW5kZXJlci5wYWNrLmNhbGwodGhpcyk7CiAgICB9OwoKCiAgICAvKioKICAgICAqIENsYXNzOiBTZXJpZXMKICAgICAqIEFuIGluZGl2aWR1YWwgZGF0YSBzZXJpZXMgb2JqZWN0LiAgQ2Fubm90IGJlIGluc3RhbnRpYXRlZCBkaXJlY3RseSwgYnV0IGNyZWF0ZWQKICAgICAqIGJ5IHRoZSBQbG90IG9iamVjdC4gIFNlcmllcyBwcm9wZXJ0aWVzIGNhbiBiZSBzZXQgb3Igb3ZlcnJpZGRlbiBieSB0aGUgCiAgICAgKiBvcHRpb25zIHBhc3NlZCBpbiBmcm9tIHRoZSB1c2VyLgogICAgICovCiAgICBmdW5jdGlvbiBTZXJpZXMob3B0aW9ucykgewogICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogICAgICAgICQuanFwbG90LkVsZW1Db250YWluZXIuY2FsbCh0aGlzKTsKICAgICAgICAvLyBHcm91cDogUHJvcGVydGllcwogICAgICAgIC8vIFByb3BlcnRpZXMgd2lsbCBiZSBhc3NpZ25lZCBmcm9tIGEgc2VyaWVzIGFycmF5IGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlCiAgICAgICAgLy8gb3B0aW9ucy4gIElmIHlvdSBoYWQgdHdvIHNlcmllcyBhbmQgd2FudGVkIHRvIGNoYW5nZSB0aGUgY29sb3IgYW5kIGxpbmUKICAgICAgICAvLyB3aWR0aCBvZiB0aGUgZmlyc3QgYW5kIHNldCB0aGUgc2Vjb25kIHRvIHVzZSB0aGUgc2Vjb25kYXJ5IHkgYXhpcyB3aXRoCiAgICAgICAgLy8gbm8gc2hhZG93IGFuZCBzdXBwbHkgY3VzdG9tIGxhYmVscyBmb3IgZWFjaDoKICAgICAgICAvLyA+IHsKICAgICAgICAvLyA+ICAgIHNlcmllczpbCiAgICAgICAgLy8gPiAgICAgICAge2NvbG9yOiAnI2ZmNDQ2NicsIGxpbmVXaWR0aDogNSwgbGFiZWw6J2dvb2QgbGluZSd9LAogICAgICAgIC8vID4gICAgICAgIHt5YXhpczogJ3kyYXhpcycsIHNoYWRvdzogZmFsc2UsIGxhYmVsOidiYWQgbGluZSd9CiAgICAgICAgLy8gPiAgICBdCiAgICAgICAgLy8gPiB9CgogICAgICAgIC8vIHByb3A6IHNob3cKICAgICAgICAvLyB3aGV0aGVyIG9yIG5vdCB0byBkcmF3IHRoZSBzZXJpZXMuCiAgICAgICAgdGhpcy5zaG93ID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiB4YXhpcwogICAgICAgIC8vIHdoaWNoIHggYXhpcyB0byB1c2Ugd2l0aCB0aGlzIHNlcmllcywgZWl0aGVyICd4YXhpcycgb3IgJ3gyYXhpcycuCiAgICAgICAgdGhpcy54YXhpcyA9ICd4YXhpcyc7CiAgICAgICAgdGhpcy5feGF4aXM7CiAgICAgICAgLy8gcHJvcDogeWF4aXMKICAgICAgICAvLyB3aGljaCB5IGF4aXMgdG8gdXNlIHdpdGggdGhpcyBzZXJpZXMsIGVpdGhlciAneWF4aXMnIG9yICd5MmF4aXMnLgogICAgICAgIHRoaXMueWF4aXMgPSAneWF4aXMnOwogICAgICAgIHRoaXMuX3lheGlzOwogICAgICAgIHRoaXMuZ3JpZEJvcmRlcldpZHRoID0gMi4wOwogICAgICAgIC8vIHByb3A6IHJlbmRlcmVyCiAgICAgICAgLy8gQSBjbGFzcyBvZiBhIHJlbmRlcmVyIHdoaWNoIHdpbGwgZHJhdyB0aGUgc2VyaWVzLCAKICAgICAgICAvLyBzZWUgPCQuanFwbG90LkxpbmVSZW5kZXJlcj4uCiAgICAgICAgdGhpcy5yZW5kZXJlciA9ICQuanFwbG90LkxpbmVSZW5kZXJlcjsKICAgICAgICAvLyBwcm9wOiByZW5kZXJlck9wdGlvbnMKICAgICAgICAvLyBPcHRpb25zIHRvIHBhc3Mgb24gdG8gdGhlIHJlbmRlcmVyLgogICAgICAgIHRoaXMucmVuZGVyZXJPcHRpb25zID0ge307CiAgICAgICAgdGhpcy5kYXRhID0gW107CiAgICAgICAgdGhpcy5ncmlkRGF0YSA9IFtdOwogICAgICAgIC8vIHByb3A6IGxhYmVsCiAgICAgICAgLy8gTGluZSBsYWJlbCB0byB1c2UgaW4gdGhlIGxlZ2VuZC4KICAgICAgICB0aGlzLmxhYmVsID0gJyc7CiAgICAgICAgLy8gcHJvcDogc2hvd0xhYmVsCiAgICAgICAgLy8gdHJ1ZSB0byBzaG93IGxhYmVsIGZvciB0aGlzIHNlcmllcyBpbiB0aGUgbGVnZW5kLgogICAgICAgIHRoaXMuc2hvd0xhYmVsID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBjb2xvcgogICAgICAgIC8vIGNzcyBjb2xvciBzcGVjIGZvciB0aGUgc2VyaWVzCiAgICAgICAgdGhpcy5jb2xvcjsKICAgICAgICAvLyBwcm9wOiBuZWdhdGl2ZUNvbG9yCiAgICAgICAgLy8gY3NzIGNvbG9yIHNwZWMgdXNlZCBmb3IgZmlsbGVkIChhcmVhKSBwbG90cyB0aGF0IGFyZSBmaWxsZWQgdG8gemVybyBhbmQKICAgICAgICAvLyB0aGUgInVzZU5lZ2F0aXZlQ29sb3JzIiBvcHRpb24gaXMgdHJ1ZS4KICAgICAgICB0aGlzLm5lZ2F0aXZlQ29sb3I7CiAgICAgICAgLy8gcHJvcDogbGluZVdpZHRoCiAgICAgICAgLy8gd2lkdGggb2YgdGhlIGxpbmUgaW4gcGl4ZWxzLiAgTWF5IGhhdmUgZGlmZmVyZW50IG1lYW5pbmdzIGRlcGVuZGluZyBvbiByZW5kZXJlci4KICAgICAgICB0aGlzLmxpbmVXaWR0aCA9IDIuNTsKICAgICAgICAvLyBwcm9wOiBsaW5lSm9pbgogICAgICAgIC8vIENhbnZhcyBsaW5lSm9pbiBzdHlsZSBiZXR3ZWVuIHNlZ21lbnRzIG9mIHNlcmllcy4KICAgICAgICB0aGlzLmxpbmVKb2luID0gJ3JvdW5kJzsKICAgICAgICAvLyBwcm9wOiBsaW5lQ2FwCiAgICAgICAgLy8gQ2FudmFzIGxpbmVDYXAgc3R5bGUgYXQgZW5kcyBvZiBsaW5lLgogICAgICAgIHRoaXMubGluZUNhcCA9ICdyb3VuZCc7CiAgICAgICAgLy8gcHJvcDogbGluZVBhdHRlcm4KICAgICAgICAvLyBsaW5lIHBhdHRlcm4gJ2Rhc2hlZCcsICdkb3R0ZWQnLCAnc29saWQnLCBzb21lIGNvbWJpbmF0aW9uCiAgICAgICAgLy8gb2YgJy0nIGFuZCAnLicgY2hhcmFjdGVycyBzdWNoIGFzICcuLS4nIG9yIGEgbnVtZXJpY2FsIGFycmF5IGxpa2UgCiAgICAgICAgLy8gW2RyYXcsIHNraXAsIGRyYXcsIHNraXAsIC4uLl0gc3VjaCBhcyBbMSwgMTBdIHRvIGRyYXcgYSBkb3R0ZWQgbGluZSwgCiAgICAgICAgLy8gWzEsIDEwLCAyMCwgMTBdIHRvIGRyYXcgYSBkb3QtZGFzaCBsaW5lLCBhbmQgc28gb24uCiAgICAgICAgdGhpcy5saW5lUGF0dGVybiA9ICdzb2xpZCc7CiAgICAgICAgdGhpcy5zaGFkb3cgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IHNoYWRvd0FuZ2xlCiAgICAgICAgLy8gU2hhZG93IGFuZ2xlIGluIGRlZ3JlZXMKICAgICAgICB0aGlzLnNoYWRvd0FuZ2xlID0gNDU7CiAgICAgICAgLy8gcHJvcDogc2hhZG93T2Zmc2V0CiAgICAgICAgLy8gU2hhZG93IG9mZnNldCBmcm9tIGxpbmUgaW4gcGl4ZWxzCiAgICAgICAgdGhpcy5zaGFkb3dPZmZzZXQgPSAxLjI1OwogICAgICAgIC8vIHByb3A6IHNoYWRvd0RlcHRoCiAgICAgICAgLy8gTnVtYmVyIG9mIHRpbWVzIHNoYWRvdyBpcyBzdHJva2VkLCBlYWNoIHN0cm9rZSBvZmZzZXQgc2hhZG93T2Zmc2V0IGZyb20gdGhlIGxhc3QuCiAgICAgICAgdGhpcy5zaGFkb3dEZXB0aCA9IDM7CiAgICAgICAgLy8gcHJvcDogc2hhZG93QWxwaGEKICAgICAgICAvLyBBbHBoYSBjaGFubmVsIHRyYW5zcGFyZW5jeSBvZiBzaGFkb3cuICAwID0gdHJhbnNwYXJlbnQuCiAgICAgICAgdGhpcy5zaGFkb3dBbHBoYSA9ICcwLjEnOwogICAgICAgIC8vIHByb3A6IGJyZWFrT25OdWxsCiAgICAgICAgLy8gV2V0aGVyIGxpbmUgc2VnbWVudHMgc2hvdWxkIGJlIGJlIGJyb2tlbiBhdCBudWxsIHZhbHVlLgogICAgICAgIC8vIEZhbHNlIHdpbGwgam9pbiBwb2ludCBvbiBlaXRoZXIgc2lkZSBvZiBsaW5lLgogICAgICAgIHRoaXMuYnJlYWtPbk51bGwgPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiBtYXJrZXJSZW5kZXJlcgogICAgICAgIC8vIEEgY2xhc3Mgb2YgYSByZW5kZXJlciB3aGljaCB3aWxsIGRyYXcgbWFya2VyIChlLmcuIGNpcmNsZSwgc3F1YXJlLCAuLi4pIGF0IHRoZSBkYXRhIHBvaW50cywKICAgICAgICAvLyBzZWUgPCQuanFwbG90Lk1hcmtlclJlbmRlcmVyPi4KICAgICAgICB0aGlzLm1hcmtlclJlbmRlcmVyID0gJC5qcXBsb3QuTWFya2VyUmVuZGVyZXI7CiAgICAgICAgLy8gcHJvcDogbWFya2VyT3B0aW9ucwogICAgICAgIC8vIHJlbmRlcmVyIHNwZWNpZmljIG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgbWFya2VyUmVuZGVyZXIsCiAgICAgICAgLy8gc2VlIDwkLmpxcGxvdC5NYXJrZXJSZW5kZXJlcj4uCiAgICAgICAgdGhpcy5tYXJrZXJPcHRpb25zID0ge307CiAgICAgICAgLy8gcHJvcDogc2hvd0xpbmUKICAgICAgICAvLyB3aGV0aGVyIHRvIGFjdHVhbGx5IGRyYXcgdGhlIGxpbmUgb3Igbm90LiAgU2VyaWVzIHdpbGwgc3RpbGwgYmUgcmVuZGVyZXJlZCwgZXZlbiBpZiBubyBsaW5lIGlzIGRyYXduLgogICAgICAgIHRoaXMuc2hvd0xpbmUgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IHNob3dNYXJrZXIKICAgICAgICAvLyB3aGV0aGVyIG9yIG5vdCB0byBzaG93IHRoZSBtYXJrZXJzIGF0IHRoZSBkYXRhIHBvaW50cy4KICAgICAgICB0aGlzLnNob3dNYXJrZXIgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IGluZGV4CiAgICAgICAgLy8gMCBiYXNlZCBpbmRleCBvZiB0aGlzIHNlcmllcyBpbiB0aGUgcGxvdCBzZXJpZXMgYXJyYXkuCiAgICAgICAgdGhpcy5pbmRleDsKICAgICAgICAvLyBwcm9wOiBmaWxsCiAgICAgICAgLy8gdHJ1ZSBvciBmYWxzZSwgd2hldGhlciB0byBmaWxsIHVuZGVyIGxpbmVzIG9yIGluIGJhcnMuCiAgICAgICAgLy8gTWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBpbiBhbGwgcmVuZGVyZXJzLgogICAgICAgIHRoaXMuZmlsbCA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGZpbGxDb2xvcgogICAgICAgIC8vIENTUyBjb2xvciBzcGVjIHRvIHVzZSBmb3IgZmlsbCB1bmRlciBsaW5lLiAgRGVmYXVsdHMgdG8gbGluZSBjb2xvci4KICAgICAgICB0aGlzLmZpbGxDb2xvcjsKICAgICAgICAvLyBwcm9wOiBmaWxsQWxwaGEKICAgICAgICAvLyBBbHBoYSB0cmFuc3BhcmVuY3kgdG8gYXBwbHkgdG8gdGhlIGZpbGwgdW5kZXIgdGhlIGxpbmUuCiAgICAgICAgLy8gVXNlIHRoaXMgdG8gYWRqdXN0IGFscGhhIHNlcGFyYXRlIGZyb20gZmlsbCBjb2xvci4KICAgICAgICB0aGlzLmZpbGxBbHBoYTsKICAgICAgICAvLyBwcm9wOiBmaWxsQW5kU3Ryb2tlCiAgICAgICAgLy8gSWYgdHJ1ZSB3aWxsIHN0cm9rZSB0aGUgbGluZSAod2l0aCBjb2xvciB0aGlzLmNvbG9yKSBhcyB3ZWxsIGFzIGZpbGwgdW5kZXIgaXQuCiAgICAgICAgLy8gQXBwbGllcyBvbmx5IHdoZW4gZmlsbCBpcyB0cnVlLgogICAgICAgIHRoaXMuZmlsbEFuZFN0cm9rZSA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGRpc2FibGVTdGFjawogICAgICAgIC8vIHRydWUgdG8gbm90IHN0YWNrIHRoaXMgc2VyaWVzIHdpdGggb3RoZXIgc2VyaWVzIGluIHRoZSBwbG90LgogICAgICAgIC8vIFRvIHJlbmRlciBwcm9wZXJseSwgbm9uLXN0YWNrZWQgc2VyaWVzIG11c3QgY29tZSBhZnRlciBhbnkgc3RhY2tlZCBzZXJpZXMKICAgICAgICAvLyBpbiB0aGUgcGxvdCdzIGRhdGEgc2VyaWVzIGFycmF5LiAgU28sIHRoZSBwbG90J3MgZGF0YSBzZXJpZXMgYXJyYXkgd291bGQgbG9vayBsaWtlOgogICAgICAgIC8vID4gW3N0YWNrZWRTZXJpZXMxLCBzdGFja2VkU2VyaWVzMiwgLi4uLCBub25TdGFja2VkU2VyaWVzMSwgbm9uU3RhY2tlZFNlcmllczIsIC4uLl0KICAgICAgICAvLyBkaXNhYmxlU3RhY2sgd2lsbCBwdXQgYSBnYXAgaW4gdGhlIHN0YWNraW5nIG9yZGVyIG9mIHNlcmllcywgYW5kIHN1YnNlcXVlbnQKICAgICAgICAvLyBzdGFja2VkIHNlcmllcyB3aWxsIG5vdCBmaWxsIGRvd24gdGhyb3VnaCB0aGUgbm9uLXN0YWNrZWQgc2VyaWVzIGFuZCB3aWxsCiAgICAgICAgLy8gbW9zdCBsaWtlbHkgbm90IHN0YWNrIHByb3Blcmx5IG9uIHRvcCBvZiB0aGUgbm9uLXN0YWNrZWQgc2VyaWVzLgogICAgICAgIHRoaXMuZGlzYWJsZVN0YWNrID0gZmFsc2U7CiAgICAgICAgLy8gX3N0YWNrIGlzIHNldCBieSB0aGUgUGxvdCBpZiB0aGUgcGxvdCBpcyBhIHN0YWNrZWQgY2hhcnQuCiAgICAgICAgLy8gd2lsbCBzdGFjayBsaW5lcyBvciBiYXJzIG9uIHRvcCBvZiBvbmUgYW5vdGhlciB0byBidWlsZCBhICJtb3VudGFpbiIgc3R5bGUgY2hhcnQuCiAgICAgICAgLy8gTWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBpbiBhbGwgcmVuZGVyZXJzLgogICAgICAgIHRoaXMuX3N0YWNrID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogbmVpZ2hib3JUaHJlc2hvbGQKICAgICAgICAvLyBob3cgY2xvc2Ugb3IgZmFyIChpbiBwaXhlbHMpIHRoZSBjdXJzb3IgbXVzdCBiZSBmcm9tIGEgcG9pbnQgbWFya2VyIHRvIGRldGVjdCB0aGUgcG9pbnQuCiAgICAgICAgdGhpcy5uZWlnaGJvclRocmVzaG9sZCA9IDQ7CiAgICAgICAgLy8gcHJvcDogZmlsbFRvWmVybwogICAgICAgIC8vIHRydWUgd2lsbCBmb3JjZSBiYXIgYW5kIGZpbGxlZCBzZXJpZXMgdG8gZmlsbCB0b3dhcmQgemVybyBvbiB0aGUgZmlsbCBBeGlzLgogICAgICAgIHRoaXMuZmlsbFRvWmVybyA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGZpbGxUb1ZhbHVlCiAgICAgICAgLy8gZmlsbCBhIGZpbGxlZCBzZXJpZXMgdG8gdGhpcyB2YWx1ZSBvbiB0aGUgZmlsbCBheGlzLgogICAgICAgIC8vIFdvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggZmlsbFRvWmVybywgc28gdGhhdCBtdXN0IGJlIHRydWUuCiAgICAgICAgdGhpcy5maWxsVG9WYWx1ZSA9IDA7CiAgICAgICAgLy8gcHJvcDogZmlsbEF4aXMKICAgICAgICAvLyBFaXRoZXIgJ3gnIG9yICd5Jy4gIFdoaWNoIGF4aXMgdG8gZmlsbCB0aGUgbGluZSB0b3dhcmQgaWYgZmlsbFRvWmVybyBpcyB0cnVlLgogICAgICAgIC8vICd5JyBtZWFucyBmaWxsIHVwL2Rvd24gdG8gMCBvbiB0aGUgeSBheGlzIGZvciB0aGlzIHNlcmllcy4KICAgICAgICB0aGlzLmZpbGxBeGlzID0gJ3knOwogICAgICAgIC8vIHByb3A6IHVzZU5lZ2F0aXZlQ29sb3JzCiAgICAgICAgLy8gdHJ1ZSB0byBjb2xvciBuZWdhdGl2ZSB2YWx1ZXMgZGlmZmVyZW50bHkgaW4gZmlsbGVkIGFuZCBiYXIgY2hhcnRzLgogICAgICAgIHRoaXMudXNlTmVnYXRpdmVDb2xvcnMgPSB0cnVlOwogICAgICAgIHRoaXMuX3N0YWNrRGF0YSA9IFtdOwogICAgICAgIC8vIF9wbG90RGF0YSBhY2NvdW50cyBmb3Igc3RhY2tpbmcuICBJZiBwbG90cyBub3Qgc3RhY2tlZCwgX3Bsb3REYXRhIGFuZCBkYXRhIGFyZSBzYW1lLiAgSWYKICAgICAgICAvLyBzdGFja2VkLCBfcGxvdERhdGEgaXMgYWNjdW11bGF0aW9uIG9mIHN0YWNraW5nIGRhdGEuCiAgICAgICAgdGhpcy5fcGxvdERhdGEgPSBbXTsKICAgICAgICAvLyBfcGxvdFZhbHVlcyBob2xkIHRoZSBpbmRpdmlkdWFsIHggYW5kIHkgdmFsdWVzIHRoYXQgd2lsbCBiZSBwbG90dGVkIGZvciB0aGlzIHNlcmllcy4KICAgICAgICB0aGlzLl9wbG90VmFsdWVzID0ge3g6W10sIHk6W119OwogICAgICAgIC8vIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGludGVydmFscyBiZXR3ZWVuIGRhdGEgcG9pbnRzLiAgVXNlZCBmb3IgYXV0byBzY2FsaW5nLgogICAgICAgIHRoaXMuX2ludGVydmFscyA9IHt4Ont9LCB5Ont9fTsKICAgICAgICAvLyBkYXRhIGZyb20gdGhlIHByZXZpb3VzIHNlcmllcywgZm9yIHN0YWNrZWQgY2hhcnRzLgogICAgICAgIHRoaXMuX3ByZXZQbG90RGF0YSA9IFtdOwogICAgICAgIHRoaXMuX3ByZXZHcmlkRGF0YSA9IFtdOwogICAgICAgIHRoaXMuX3N0YWNrQXhpcyA9ICd5JzsKICAgICAgICB0aGlzLl9wcmltYXJ5QXhpcyA9ICdfeGF4aXMnOwogICAgICAgIC8vIGdpdmUgZWFjaCBzZXJpZXMgYSBjYW52YXMgdG8gZHJhdyBvbi4gIFRoaXMgc2hvdWxkIGFsbG93IGZvciByZWRyYXdpbmcgc3BlZWR1cHMuCiAgICAgICAgdGhpcy5jYW52YXMgPSBuZXcgJC5qcXBsb3QuR2VuZXJpY0NhbnZhcygpOwogICAgICAgIHRoaXMuc2hhZG93Q2FudmFzID0gbmV3ICQuanFwbG90LkdlbmVyaWNDYW52YXMoKTsKICAgICAgICB0aGlzLnBsdWdpbnMgPSB7fTsKICAgICAgICAvLyBzdW0gb2YgeSB2YWx1ZXMgaW4gdGhpcyBzZXJpZXMuCiAgICAgICAgdGhpcy5fc3VteSA9IDA7CiAgICAgICAgdGhpcy5fc3VteCA9IDA7CiAgICAgICAgdGhpcy5fdHlwZSA9ICcnOwogICAgfQogICAgCiAgICBTZXJpZXMucHJvdG90eXBlID0gbmV3ICQuanFwbG90LkVsZW1Db250YWluZXIoKTsKICAgIFNlcmllcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTZXJpZXM7CiAgICAKICAgIFNlcmllcy5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKGluZGV4LCBncmlkYncsIHBsb3QpIHsKICAgICAgICAvLyB3ZWVkIG91dCBhbnkgbnVsbCB2YWx1ZXMgaW4gdGhlIGRhdGEuCiAgICAgICAgdGhpcy5pbmRleCA9IGluZGV4OwogICAgICAgIHRoaXMuZ3JpZEJvcmRlcldpZHRoID0gZ3JpZGJ3OwogICAgICAgIHZhciBkID0gdGhpcy5kYXRhOwogICAgICAgIHZhciB0ZW1wID0gW10sIGksIGw7CiAgICAgICAgZm9yIChpPTAsIGw9ZC5sZW5ndGg7IGk8bDsgaSsrKSB7CiAgICAgICAgICAgIGlmICghIHRoaXMuYnJlYWtPbk51bGwpIHsKICAgICAgICAgICAgICAgIGlmIChkW2ldID09IG51bGwgfHwgZFtpXVswXSA9PSBudWxsIHx8IGRbaV1bMV0gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdGVtcC5wdXNoKGRbaV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgLy8gVE9ETzogZmlndXJlIG91dCB3aGF0IHRvIGRvIHdpdGggbnVsbCB2YWx1ZXMKICAgICAgICAgICAgICAgIC8vIHByb2JhYmx5IGludm9sdmUga2VlcGluZyBudWxscyBpbiBkYXRhIGFycmF5CiAgICAgICAgICAgICAgICAvLyBhbmQgdGhlbiB1cGRhdGluZyByZW5kZXJlcnMgdG8gYnJlYWsgbGluZQogICAgICAgICAgICAgICAgLy8gd2hlbiBpdCBoaXRzIG51bGwgdmFsdWUuCiAgICAgICAgICAgICAgICAvLyBGb3Igbm93LCBqdXN0IGtlZXAgdmFsdWUuCiAgICAgICAgICAgICAgICB0ZW1wLnB1c2goZFtpXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdGhpcy5kYXRhID0gdGVtcDsKCiAgICAgICAgLy8gcGFyc2UgdGhlIHJlbmRlcmVyIG9wdGlvbnMgYW5kIGFwcGx5IGRlZmF1bHQgY29sb3JzIGlmIG5vdCBwcm92aWRlZAogICAgICAgIC8vIFNldCBjb2xvciBldmVuIGlmIG5vdCBzaG93biwgc28gc2VyaWVzIGRvbid0IGNoYW5nZSBjb2xvcnMgd2hlbiBvdGhlcgogICAgICAgIC8vIHNlcmllcyBvbiBwbG90IHNob3duL2hpZGRlbi4KICAgICAgICBpZiAoIXRoaXMuY29sb3IpIHsKICAgICAgICAgICAgdGhpcy5jb2xvciA9IHBsb3QuY29sb3JHZW5lcmF0b3IuZ2V0KHRoaXMuaW5kZXgpOwogICAgICAgIH0KICAgICAgICBpZiAoIXRoaXMubmVnYXRpdmVDb2xvcikgewogICAgICAgICAgICB0aGlzLm5lZ2F0aXZlQ29sb3IgPSBwbG90Lm5lZ2F0aXZlQ29sb3JHZW5lcmF0b3IuZ2V0KHRoaXMuaW5kZXgpOwogICAgICAgIH0KCgogICAgICAgIGlmICghdGhpcy5maWxsQ29sb3IpIHsKICAgICAgICAgICAgdGhpcy5maWxsQ29sb3IgPSB0aGlzLmNvbG9yOwogICAgICAgIH0KICAgICAgICBpZiAodGhpcy5maWxsQWxwaGEpIHsKICAgICAgICAgICAgdmFyIGNvbXAgPSAkLmpxcGxvdC5ub3JtYWxpemUycmdiKHRoaXMuZmlsbENvbG9yKTsKICAgICAgICAgICAgdmFyIGNvbXAgPSAkLmpxcGxvdC5nZXRDb2xvckNvbXBvbmVudHMoY29tcCk7CiAgICAgICAgICAgIHRoaXMuZmlsbENvbG9yID0gJ3JnYmEoJytjb21wWzBdKycsJytjb21wWzFdKycsJytjb21wWzJdKycsJyt0aGlzLmZpbGxBbHBoYSsnKSc7CiAgICAgICAgfQogICAgICAgIGlmICgkLmlzRnVuY3Rpb24odGhpcy5yZW5kZXJlcikpIHsKICAgICAgICAgICAgdGhpcy5yZW5kZXJlciA9IG5ldyB0aGlzLnJlbmRlcmVyKCk7ICAKICAgICAgICB9CiAgICAgICAgdGhpcy5yZW5kZXJlci5pbml0LmNhbGwodGhpcywgdGhpcy5yZW5kZXJlck9wdGlvbnMsIHBsb3QpOwogICAgICAgIHRoaXMubWFya2VyUmVuZGVyZXIgPSBuZXcgdGhpcy5tYXJrZXJSZW5kZXJlcigpOwogICAgICAgIGlmICghdGhpcy5tYXJrZXJPcHRpb25zLmNvbG9yKSB7CiAgICAgICAgICAgIHRoaXMubWFya2VyT3B0aW9ucy5jb2xvciA9IHRoaXMuY29sb3I7CiAgICAgICAgfQogICAgICAgIGlmICh0aGlzLm1hcmtlck9wdGlvbnMuc2hvdyA9PSBudWxsKSB7CiAgICAgICAgICAgIHRoaXMubWFya2VyT3B0aW9ucy5zaG93ID0gdGhpcy5zaG93TWFya2VyOwogICAgICAgIH0KICAgICAgICB0aGlzLnNob3dNYXJrZXIgPSB0aGlzLm1hcmtlck9wdGlvbnMuc2hvdzsKICAgICAgICAvLyB0aGUgbWFya2VyUmVuZGVyZXIgaXMgY2FsbGVkIHdpdGhpbiBpdHMgb3duIHNjb3BlLCBkb24ndCB3YW50IHRvIG92ZXJ3cml0ZSBzZXJpZXMgb3B0aW9ucyEhCiAgICAgICAgdGhpcy5tYXJrZXJSZW5kZXJlci5pbml0KHRoaXMubWFya2VyT3B0aW9ucyk7CiAgICB9OwogICAgCiAgICAvLyBkYXRhIC0gb3B0aW9uYWwgZGF0YSBwb2ludCBhcnJheSB0byBkcmF3IHVzaW5nIHRoaXMgc2VyaWVzIHJlbmRlcmVyCiAgICAvLyBncmlkRGF0YSAtIG9wdGlvbmFsIGdyaWQgZGF0YSBwb2ludCBhcnJheSB0byBkcmF3IHVzaW5nIHRoaXMgc2VyaWVzIHJlbmRlcmVyCiAgICAvLyBzdGFja0RhdGEgLSBhcnJheSBvZiBjdW11bGF0aXZlIGRhdGEgZm9yIHN0YWNrZWQgcGxvdHMuCiAgICBTZXJpZXMucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihzY3R4LCBvcHRzLCBwbG90KSB7CiAgICAgICAgdmFyIG9wdGlvbnMgPSAob3B0cyA9PSB1bmRlZmluZWQpID8ge30gOiBvcHRzOwogICAgICAgIHNjdHggPSAoc2N0eCA9PSB1bmRlZmluZWQpID8gdGhpcy5jYW52YXMuX2N0eCA6IHNjdHg7CiAgICAgICAgCiAgICAgICAgdmFyIGosIGRhdGEsIGdyaWREYXRhOwogICAgICAgIAogICAgICAgIC8vIGhvb2tzIGdldCBjYWxsZWQgZXZlbiBpZiBzZXJpZXMgbm90IHNob3duCiAgICAgICAgLy8gd2UgZG9uJ3QgY2xlYXIgY2FudmFzIGhlcmUsIGl0IHdvdWxkIHdpcGUgb3V0IGFsbCBvdGhlciBzZXJpZXMgYXMgd2VsbC4KICAgICAgICBmb3IgKGo9MDsgajwkLmpxcGxvdC5wcmVEcmF3U2VyaWVzSG9va3MubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgJC5qcXBsb3QucHJlRHJhd1Nlcmllc0hvb2tzW2pdLmNhbGwodGhpcywgc2N0eCwgb3B0aW9ucyk7CiAgICAgICAgfQogICAgICAgIGlmICh0aGlzLnNob3cpIHsKICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRHcmlkRGF0YS5jYWxsKHRoaXMsIHBsb3QpOwogICAgICAgICAgICBpZiAoIW9wdGlvbnMucHJldmVudEpxUGxvdFNlcmllc0RyYXdUcmlnZ2VyKSB7CiAgICAgICAgICAgICAgICAkKHNjdHguY2FudmFzKS50cmlnZ2VyKCdqcXBsb3RTZXJpZXNEcmF3JywgW3RoaXMuZGF0YSwgdGhpcy5ncmlkRGF0YV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRhdGEgPSBbXTsKICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGF0YSkgewogICAgICAgICAgICAgICAgZGF0YSA9IG9wdGlvbnMuZGF0YTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmICghdGhpcy5fc3RhY2spIHsKICAgICAgICAgICAgICAgIGRhdGEgPSB0aGlzLmRhdGE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBkYXRhID0gdGhpcy5fcGxvdERhdGE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ3JpZERhdGEgPSBvcHRpb25zLmdyaWREYXRhIHx8IHRoaXMucmVuZGVyZXIubWFrZUdyaWREYXRhLmNhbGwodGhpcywgZGF0YSwgcGxvdCk7CgogICAgICAgICAgICBpZiAodGhpcy5fdHlwZSA9PT0gJ2xpbmUnICYmIHRoaXMucmVuZGVyZXIuc21vb3RoICYmIHRoaXMucmVuZGVyZXIuX3Ntb290aGVkRGF0YS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIGdyaWREYXRhID0gdGhpcy5yZW5kZXJlci5fc21vb3RoZWREYXRhOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmRyYXcuY2FsbCh0aGlzLCBzY3R4LCBncmlkRGF0YSwgb3B0aW9ucywgcGxvdCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGZvciAoaj0wOyBqPCQuanFwbG90LnBvc3REcmF3U2VyaWVzSG9va3MubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgJC5qcXBsb3QucG9zdERyYXdTZXJpZXNIb29rc1tqXS5jYWxsKHRoaXMsIHNjdHgsIG9wdGlvbnMsIHBsb3QpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBzY3R4ID0gb3B0cyA9IHBsb3QgPSBqID0gZGF0YSA9IGdyaWREYXRhID0gbnVsbDsKICAgIH07CiAgICAKICAgIFNlcmllcy5wcm90b3R5cGUuZHJhd1NoYWRvdyA9IGZ1bmN0aW9uKHNjdHgsIG9wdHMsIHBsb3QpIHsKICAgICAgICB2YXIgb3B0aW9ucyA9IChvcHRzID09IHVuZGVmaW5lZCkgPyB7fSA6IG9wdHM7CiAgICAgICAgc2N0eCA9IChzY3R4ID09IHVuZGVmaW5lZCkgPyB0aGlzLnNoYWRvd0NhbnZhcy5fY3R4IDogc2N0eDsKICAgICAgICAKICAgICAgICB2YXIgaiwgZGF0YSwgZ3JpZERhdGE7CiAgICAgICAgCiAgICAgICAgLy8gaG9va3MgZ2V0IGNhbGxlZCBldmVuIGlmIHNlcmllcyBub3Qgc2hvd24KICAgICAgICAvLyB3ZSBkb24ndCBjbGVhciBjYW52YXMgaGVyZSwgaXQgd291bGQgd2lwZSBvdXQgYWxsIG90aGVyIHNlcmllcyBhcyB3ZWxsLgogICAgICAgIGZvciAoaj0wOyBqPCQuanFwbG90LnByZURyYXdTZXJpZXNTaGFkb3dIb29rcy5sZW5ndGg7IGorKykgewogICAgICAgICAgICAkLmpxcGxvdC5wcmVEcmF3U2VyaWVzU2hhZG93SG9va3Nbal0uY2FsbCh0aGlzLCBzY3R4LCBvcHRpb25zKTsKICAgICAgICB9CiAgICAgICAgaWYgKHRoaXMuc2hhZG93KSB7CiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0R3JpZERhdGEuY2FsbCh0aGlzLCBwbG90KTsKCiAgICAgICAgICAgIGRhdGEgPSBbXTsKICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGF0YSkgewogICAgICAgICAgICAgICAgZGF0YSA9IG9wdGlvbnMuZGF0YTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmICghdGhpcy5fc3RhY2spIHsKICAgICAgICAgICAgICAgIGRhdGEgPSB0aGlzLmRhdGE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBkYXRhID0gdGhpcy5fcGxvdERhdGE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ3JpZERhdGEgPSBvcHRpb25zLmdyaWREYXRhIHx8IHRoaXMucmVuZGVyZXIubWFrZUdyaWREYXRhLmNhbGwodGhpcywgZGF0YSwgcGxvdCk7CiAgICAgICAgCiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuZHJhd1NoYWRvdy5jYWxsKHRoaXMsIHNjdHgsIGdyaWREYXRhLCBvcHRpb25zLCBwbG90KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZm9yIChqPTA7IGo8JC5qcXBsb3QucG9zdERyYXdTZXJpZXNTaGFkb3dIb29rcy5sZW5ndGg7IGorKykgewogICAgICAgICAgICAkLmpxcGxvdC5wb3N0RHJhd1Nlcmllc1NoYWRvd0hvb2tzW2pdLmNhbGwodGhpcywgc2N0eCwgb3B0aW9ucyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHNjdHggPSBvcHRzID0gcGxvdCA9IGogPSBkYXRhID0gZ3JpZERhdGEgPSBudWxsOwogICAgICAgIAogICAgfTsKICAgIAogICAgLy8gdG9nZ2xlcyBzZXJpZXMgZGlzcGxheSBvbiBwbG90LCBlLmcuIHNob3cvaGlkZSBzZXJpZXMKICAgIFNlcmllcy5wcm90b3R5cGUudG9nZ2xlRGlzcGxheSA9IGZ1bmN0aW9uKGV2LCBjYWxsYmFjaykgewogICAgICAgIHZhciBzLCBzcGVlZDsKICAgICAgICBpZiAoZXYuZGF0YS5zZXJpZXMpIHsKICAgICAgICAgICAgcyA9IGV2LmRhdGEuc2VyaWVzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcyA9IHRoaXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoZXYuZGF0YS5zcGVlZCkgewogICAgICAgICAgICBzcGVlZCA9IGV2LmRhdGEuc3BlZWQ7CiAgICAgICAgfQogICAgICAgIGlmIChzcGVlZCkgewogICAgICAgICAgICAvLyB0aGlzIGNhbiBiZSB0cmlja3kgYmVjYXVzZSBzZXJpZXMgbWF5IG5vdCBoYXZlIGEgY2FudmFzIGVsZW1lbnQgaWYgcmVwbG90dGluZy4KICAgICAgICAgICAgaWYgKHMuY2FudmFzLl9lbGVtLmlzKCc6aGlkZGVuJykgfHwgIXMuc2hvdykgewogICAgICAgICAgICAgICAgcy5zaG93ID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICBzLmNhbnZhcy5fZWxlbS5yZW1vdmVDbGFzcygnanFwbG90LXNlcmllcy1oaWRkZW4nKTsKICAgICAgICAgICAgICAgIGlmIChzLnNoYWRvd0NhbnZhcy5fZWxlbSkgewogICAgICAgICAgICAgICAgICAgIHMuc2hhZG93Q2FudmFzLl9lbGVtLmZhZGVJbihzcGVlZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzLmNhbnZhcy5fZWxlbS5mYWRlSW4oc3BlZWQsIGNhbGxiYWNrKTsKICAgICAgICAgICAgICAgIHMuY2FudmFzLl9lbGVtLm5leHRBbGwoJy5qcXBsb3QtcG9pbnQtbGFiZWwuanFwbG90LXNlcmllcy0nK3MuaW5kZXgpLmZhZGVJbihzcGVlZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBzLnNob3cgPSBmYWxzZTsKCiAgICAgICAgICAgICAgICBzLmNhbnZhcy5fZWxlbS5hZGRDbGFzcygnanFwbG90LXNlcmllcy1oaWRkZW4nKTsKICAgICAgICAgICAgICAgIGlmIChzLnNoYWRvd0NhbnZhcy5fZWxlbSkgewogICAgICAgICAgICAgICAgICAgIHMuc2hhZG93Q2FudmFzLl9lbGVtLmZhZGVPdXQoc3BlZWQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcy5jYW52YXMuX2VsZW0uZmFkZU91dChzcGVlZCwgY2FsbGJhY2spOwogICAgICAgICAgICAgICAgcy5jYW52YXMuX2VsZW0ubmV4dEFsbCgnLmpxcGxvdC1wb2ludC1sYWJlbC5qcXBsb3Qtc2VyaWVzLScrcy5pbmRleCkuZmFkZU91dChzcGVlZCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIHRoaXMgY2FuIGJlIHRyaWNreSBiZWNhdXNlIHNlcmllcyBtYXkgbm90IGhhdmUgYSBjYW52YXMgZWxlbWVudCBpZiByZXBsb3R0aW5nLgogICAgICAgICAgICBpZiAocy5jYW52YXMuX2VsZW0uaXMoJzpoaWRkZW4nKSB8fCAhcy5zaG93KSB7CiAgICAgICAgICAgICAgICBzLnNob3cgPSB0cnVlOwoKICAgICAgICAgICAgICAgIHMuY2FudmFzLl9lbGVtLnJlbW92ZUNsYXNzKCdqcXBsb3Qtc2VyaWVzLWhpZGRlbicpOwogICAgICAgICAgICAgICAgaWYgKHMuc2hhZG93Q2FudmFzLl9lbGVtKSB7CiAgICAgICAgICAgICAgICAgICAgcy5zaGFkb3dDYW52YXMuX2VsZW0uc2hvdygpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcy5jYW52YXMuX2VsZW0uc2hvdygwLCBjYWxsYmFjayk7CiAgICAgICAgICAgICAgICBzLmNhbnZhcy5fZWxlbS5uZXh0QWxsKCcuanFwbG90LXBvaW50LWxhYmVsLmpxcGxvdC1zZXJpZXMtJytzLmluZGV4KS5zaG93KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBzLnNob3cgPSBmYWxzZTsKCiAgICAgICAgICAgICAgICBzLmNhbnZhcy5fZWxlbS5hZGRDbGFzcygnanFwbG90LXNlcmllcy1oaWRkZW4nKTsKICAgICAgICAgICAgICAgIGlmIChzLnNoYWRvd0NhbnZhcy5fZWxlbSkgewogICAgICAgICAgICAgICAgICAgIHMuc2hhZG93Q2FudmFzLl9lbGVtLmhpZGUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHMuY2FudmFzLl9lbGVtLmhpZGUoMCwgY2FsbGJhY2spOwogICAgICAgICAgICAgICAgcy5jYW52YXMuX2VsZW0ubmV4dEFsbCgnLmpxcGxvdC1wb2ludC1sYWJlbC5qcXBsb3Qtc2VyaWVzLScrcy5pbmRleCkuaGlkZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKICAgIAoKCiAgICAvKioKICAgICAqIENsYXNzOiBHcmlkCiAgICAgKiAKICAgICAqIE9iamVjdCByZXByZXNlbnRpbmcgdGhlIGdyaWQgb24gd2hpY2ggdGhlIHBsb3QgaXMgZHJhd24uICBUaGUgZ3JpZCBpbiB0aGlzCiAgICAgKiBjb250ZXh0IGlzIHRoZSBhcmVhIGJvdW5kZWQgYnkgdGhlIGF4ZXMsIHRoZSBhcmVhIHdoaWNoIHdpbGwgY29udGFpbiB0aGUgc2VyaWVzLgogICAgICogTm90ZSwgdGhlIHNlcmllcyBhcmUgZHJhd24gb24gdGhlaXIgb3duIGNhbnZhcy4KICAgICAqIFRoZSBHcmlkIG9iamVjdCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIGRpcmVjdGx5LCBidXQgaXMgY3JlYXRlZCBieSB0aGUgUGxvdCBvYmplY3QuICAKICAgICAqIEdyaWQgcHJvcGVydGllcyBjYW4gYmUgc2V0IG9yIG92ZXJyaWRkZW4gYnkgdGhlIG9wdGlvbnMgcGFzc2VkIGluIGZyb20gdGhlIHVzZXIuCiAgICAgKi8KICAgIGZ1bmN0aW9uIEdyaWQoKSB7CiAgICAgICAgJC5qcXBsb3QuRWxlbUNvbnRhaW5lci5jYWxsKHRoaXMpOwogICAgICAgIC8vIEdyb3VwOiBQcm9wZXJ0aWVzCiAgICAgICAgCiAgICAgICAgLy8gcHJvcDogZHJhd0dyaWRsaW5lcwogICAgICAgIC8vIHdoZXRoZXIgdG8gZHJhdyB0aGUgZ3JpZGxpbmVzIG9uIHRoZSBwbG90LgogICAgICAgIHRoaXMuZHJhd0dyaWRsaW5lcyA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogZ3JpZExpbmVDb2xvcgogICAgICAgIC8vIGNvbG9yIG9mIHRoZSBncmlkIGxpbmVzLgogICAgICAgIHRoaXMuZ3JpZExpbmVDb2xvciA9ICcjY2NjY2NjJzsKICAgICAgICAvLyBwcm9wOiBncmlkTGluZVdpZHRoCiAgICAgICAgLy8gd2lkdGggb2YgdGhlIGdyaWQgbGluZXMuCiAgICAgICAgdGhpcy5ncmlkTGluZVdpZHRoID0gMS4wOwogICAgICAgIC8vIHByb3A6IGJhY2tncm91bmQKICAgICAgICAvLyBjc3Mgc3BlYyBmb3IgdGhlIGJhY2tncm91bmQgY29sb3IuCiAgICAgICAgdGhpcy5iYWNrZ3JvdW5kID0gJyNmZmZkZjYnOwogICAgICAgIC8vIHByb3A6IGJvcmRlckNvbG9yCiAgICAgICAgLy8gY3NzIHNwZWMgZm9yIHRoZSBjb2xvciBvZiB0aGUgZ3JpZCBib3JkZXIuCiAgICAgICAgdGhpcy5ib3JkZXJDb2xvciA9ICcjOTk5OTk5JzsKICAgICAgICAvLyBwcm9wOiBib3JkZXJXaWR0aAogICAgICAgIC8vIHdpZHRoIG9mIHRoZSBib3JkZXIgaW4gcGl4ZWxzLgogICAgICAgIHRoaXMuYm9yZGVyV2lkdGggPSAyLjA7CiAgICAgICAgLy8gcHJvcDogZHJhd0JvcmRlcgogICAgICAgIC8vIFRydWUgdG8gZHJhdyBib3JkZXIgYXJvdW5kIGdyaWQuCiAgICAgICAgdGhpcy5kcmF3Qm9yZGVyID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBzaGFkb3cKICAgICAgICAvLyB3aGV0aGVyIHRvIHNob3cgYSBzaGFkb3cgYmVoaW5kIHRoZSBncmlkLgogICAgICAgIHRoaXMuc2hhZG93ID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBzaGFkb3dBbmdsZQogICAgICAgIC8vIHNoYWRvdyBhbmdsZSBpbiBkZWdyZWVzCiAgICAgICAgdGhpcy5zaGFkb3dBbmdsZSA9IDQ1OwogICAgICAgIC8vIHByb3A6IHNoYWRvd09mZnNldAogICAgICAgIC8vIE9mZnNldCBvZiBlYWNoIHNoYWRvdyBzdHJva2UgZnJvbSB0aGUgYm9yZGVyIGluIHBpeGVscwogICAgICAgIHRoaXMuc2hhZG93T2Zmc2V0ID0gMS41OwogICAgICAgIC8vIHByb3A6IHNoYWRvd1dpZHRoCiAgICAgICAgLy8gd2lkdGggb2YgdGhlIHN0b2tlIGZvciB0aGUgc2hhZG93CiAgICAgICAgdGhpcy5zaGFkb3dXaWR0aCA9IDM7CiAgICAgICAgLy8gcHJvcDogc2hhZG93RGVwdGgKICAgICAgICAvLyBOdW1iZXIgb2YgdGltZXMgc2hhZG93IGlzIHN0cm9rZWQsIGVhY2ggc3Ryb2tlIG9mZnNldCBzaGFkb3dPZmZzZXQgZnJvbSB0aGUgbGFzdC4KICAgICAgICB0aGlzLnNoYWRvd0RlcHRoID0gMzsKICAgICAgICAvLyBwcm9wOiBzaGFkb3dDb2xvcgogICAgICAgIC8vIGFuIG9wdGlvbmFsIGNzcyBjb2xvciBzcGVjIGZvciB0aGUgc2hhZG93IGluICdyZ2JhKG4sIG4sIG4sIG4pJyBmb3JtCiAgICAgICAgdGhpcy5zaGFkb3dDb2xvciA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogc2hhZG93QWxwaGEKICAgICAgICAvLyBBbHBoYSBjaGFubmVsIHRyYW5zcGFyZW5jeSBvZiBzaGFkb3cuICAwID0gdHJhbnNwYXJlbnQuCiAgICAgICAgdGhpcy5zaGFkb3dBbHBoYSA9ICcwLjA3JzsKICAgICAgICB0aGlzLl9sZWZ0OwogICAgICAgIHRoaXMuX3RvcDsKICAgICAgICB0aGlzLl9yaWdodDsKICAgICAgICB0aGlzLl9ib3R0b207CiAgICAgICAgdGhpcy5fd2lkdGg7CiAgICAgICAgdGhpcy5faGVpZ2h0OwogICAgICAgIHRoaXMuX2F4ZXMgPSBbXTsKICAgICAgICAvLyBwcm9wOiByZW5kZXJlcgogICAgICAgIC8vIEluc3RhbmNlIG9mIGEgcmVuZGVyZXIgd2hpY2ggd2lsbCBhY3R1YWxseSByZW5kZXIgdGhlIGdyaWQsCiAgICAgICAgLy8gc2VlIDwkLmpxcGxvdC5DYW52YXNHcmlkUmVuZGVyZXI+LgogICAgICAgIHRoaXMucmVuZGVyZXIgPSAkLmpxcGxvdC5DYW52YXNHcmlkUmVuZGVyZXI7CiAgICAgICAgLy8gcHJvcDogcmVuZGVyZXJPcHRpb25zCiAgICAgICAgLy8gT3B0aW9ucyB0byBwYXNzIG9uIHRvIHRoZSByZW5kZXJlciwKICAgICAgICAvLyBzZWUgPCQuanFwbG90LkNhbnZhc0dyaWRSZW5kZXJlcj4uCiAgICAgICAgdGhpcy5yZW5kZXJlck9wdGlvbnMgPSB7fTsKICAgICAgICB0aGlzLl9vZmZzZXRzID0ge3RvcDpudWxsLCBib3R0b206bnVsbCwgbGVmdDpudWxsLCByaWdodDpudWxsfTsKICAgIH0KICAgIAogICAgR3JpZC5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuRWxlbUNvbnRhaW5lcigpOwogICAgR3JpZC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBHcmlkOwogICAgCiAgICBHcmlkLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKCQuaXNGdW5jdGlvbih0aGlzLnJlbmRlcmVyKSkgewogICAgICAgICAgICB0aGlzLnJlbmRlcmVyID0gbmV3IHRoaXMucmVuZGVyZXIoKTsgIAogICAgICAgIH0KICAgICAgICB0aGlzLnJlbmRlcmVyLmluaXQuY2FsbCh0aGlzLCB0aGlzLnJlbmRlcmVyT3B0aW9ucyk7CiAgICB9OwogICAgCiAgICBHcmlkLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24ob2Zmc2V0cyxwbG90KSB7CiAgICAgICAgdGhpcy5fb2Zmc2V0cyA9IG9mZnNldHM7CiAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudC5jYWxsKHRoaXMsIHBsb3QpOwogICAgfTsKICAgIAogICAgR3JpZC5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMucmVuZGVyZXIuZHJhdy5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuR2VuZXJpY0NhbnZhcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkVsZW1Db250YWluZXIuY2FsbCh0aGlzKTsKICAgICAgICB0aGlzLl9jdHg7ICAKICAgIH07CiAgICAKICAgICQuanFwbG90LkdlbmVyaWNDYW52YXMucHJvdG90eXBlID0gbmV3ICQuanFwbG90LkVsZW1Db250YWluZXIoKTsKICAgICQuanFwbG90LkdlbmVyaWNDYW52YXMucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuR2VuZXJpY0NhbnZhczsKICAgIAogICAgJC5qcXBsb3QuR2VuZXJpY0NhbnZhcy5wcm90b3R5cGUuY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uKG9mZnNldHMsIGNsc3MsIHBsb3REaW1lbnNpb25zLCBwbG90KSB7CiAgICAgICAgdGhpcy5fb2Zmc2V0cyA9IG9mZnNldHM7CiAgICAgICAgdmFyIGtsYXNzID0gJ2pxcGxvdCc7CiAgICAgICAgaWYgKGNsc3MgIT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIGtsYXNzID0gY2xzczsKICAgICAgICB9CiAgICAgICAgdmFyIGVsZW07CgogICAgICAgIGVsZW0gPSBwbG90LmNhbnZhc01hbmFnZXIuZ2V0Q2FudmFzKCk7CiAgICAgICAgCiAgICAgICAgLy8gaWYgbmV3IHBsb3REaW1lbnNpb25zIHN1cHBsaWVkLCB1c2UgdGhlbS4KICAgICAgICBpZiAocGxvdERpbWVuc2lvbnMgIT0gbnVsbCkgewogICAgICAgICAgICB0aGlzLl9wbG90RGltZW5zaW9ucyA9IHBsb3REaW1lbnNpb25zOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBlbGVtLndpZHRoID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSB0aGlzLl9vZmZzZXRzLmxlZnQgLSB0aGlzLl9vZmZzZXRzLnJpZ2h0OwogICAgICAgIGVsZW0uaGVpZ2h0ID0gdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0IC0gdGhpcy5fb2Zmc2V0cy50b3AgLSB0aGlzLl9vZmZzZXRzLmJvdHRvbTsKICAgICAgICB0aGlzLl9lbGVtID0gJChlbGVtKTsKICAgICAgICB0aGlzLl9lbGVtLmNzcyh7IHBvc2l0aW9uOiAnYWJzb2x1dGUnLCBsZWZ0OiB0aGlzLl9vZmZzZXRzLmxlZnQsIHRvcDogdGhpcy5fb2Zmc2V0cy50b3AgfSk7CiAgICAgICAgCiAgICAgICAgdGhpcy5fZWxlbS5hZGRDbGFzcyhrbGFzcyk7CiAgICAgICAgCiAgICAgICAgZWxlbSA9IHBsb3QuY2FudmFzTWFuYWdlci5pbml0Q2FudmFzKGVsZW0pOwogICAgICAgIAogICAgICAgIGVsZW0gPSBudWxsOwogICAgICAgIHJldHVybiB0aGlzLl9lbGVtOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuR2VuZXJpY0NhbnZhcy5wcm90b3R5cGUuc2V0Q29udGV4dCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuX2N0eCA9IHRoaXMuX2VsZW0uZ2V0KDApLmdldENvbnRleHQoIjJkIik7CiAgICAgICAgcmV0dXJuIHRoaXMuX2N0eDsKICAgIH07CiAgICAKICAgIC8vIE1lbW9yeSBMZWFrcyBwYXRjaAogICAgJC5qcXBsb3QuR2VuZXJpY0NhbnZhcy5wcm90b3R5cGUucmVzZXRDYW52YXMgPSBmdW5jdGlvbigpIHsKICAgICAgaWYgKHRoaXMuX2VsZW0pIHsKICAgICAgICBpZiAoJC5qcXBsb3QudXNlX2V4Y2FudmFzICYmIHdpbmRvdy5HX3ZtbENhbnZhc01hbmFnZXIudW5pbml0RWxlbWVudCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgd2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci51bmluaXRFbGVtZW50KHRoaXMuX2VsZW0uZ2V0KDApKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy90aGlzLl9lbGVtLnJlbW92ZSgpOwogICAgICAgIHRoaXMuX2VsZW0uZW1wdHlGb3JjZSgpOwogICAgICB9CiAgICAgIAogICAgICB0aGlzLl9jdHggPSBudWxsOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuSG9va3NNYW5hZ2VyID0gZnVuY3Rpb24gKCkgewogICAgICAgIHRoaXMuaG9va3MgPVtdOwogICAgICAgIHRoaXMuYXJncyA9IFtdOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuSG9va3NNYW5hZ2VyLnByb3RvdHlwZS5hZGRPbmNlID0gZnVuY3Rpb24oZm4sIGFyZ3MpIHsKICAgICAgICBhcmdzID0gYXJncyB8fCBbXTsKICAgICAgICB2YXIgaGF2ZWhvb2sgPSBmYWxzZTsKICAgICAgICBmb3IgKHZhciBpPTAsIGw9dGhpcy5ob29rcy5sZW5ndGg7IGk8bDsgaSsrKSB7CiAgICAgICAgICAgIGlmICh0aGlzLmhvb2tzW2ldID09IGZuKSB7CiAgICAgICAgICAgICAgICBoYXZlaG9vayA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFoYXZlaG9vaykgewogICAgICAgICAgICB0aGlzLmhvb2tzLnB1c2goZm4pOwogICAgICAgICAgICB0aGlzLmFyZ3MucHVzaChhcmdzKTsKICAgICAgICB9CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5Ib29rc01hbmFnZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKGZuLCBhcmdzKSB7CiAgICAgICAgYXJncyA9IGFyZ3MgfHwgW107CiAgICAgICAgdGhpcy5ob29rcy5wdXNoKGZuKTsKICAgICAgICB0aGlzLmFyZ3MucHVzaChhcmdzKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkV2ZW50TGlzdGVuZXJNYW5hZ2VyID0gZnVuY3Rpb24gKCkgewogICAgICAgIHRoaXMuaG9va3MgPVtdOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRXZlbnRMaXN0ZW5lck1hbmFnZXIucHJvdG90eXBlLmFkZE9uY2UgPSBmdW5jdGlvbihldiwgZm4pIHsKICAgICAgICB2YXIgaGF2ZWhvb2sgPSBmYWxzZSwgaCwgaTsKICAgICAgICBmb3IgKHZhciBpPTAsIGw9dGhpcy5ob29rcy5sZW5ndGg7IGk8bDsgaSsrKSB7CiAgICAgICAgICAgIGggPSB0aGlzLmhvb2tzW2ldOwogICAgICAgICAgICBpZiAoaFswXSA9PSBldiAmJiBoWzFdID09IGZuKSB7CiAgICAgICAgICAgICAgICBoYXZlaG9vayA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFoYXZlaG9vaykgewogICAgICAgICAgICB0aGlzLmhvb2tzLnB1c2goW2V2LCBmbl0pOwogICAgICAgIH0KICAgIH07CiAgICAKICAgICQuanFwbG90LkV2ZW50TGlzdGVuZXJNYW5hZ2VyLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbihldiwgZm4pIHsKICAgICAgICB0aGlzLmhvb2tzLnB1c2goW2V2LCBmbl0pOwogICAgfTsKCgogICAgdmFyIF9heGlzTmFtZXMgPSBbJ3lNaWRBeGlzJywgJ3hheGlzJywgJ3lheGlzJywgJ3gyYXhpcycsICd5MmF4aXMnLCAneTNheGlzJywgJ3k0YXhpcycsICd5NWF4aXMnLCAneTZheGlzJywgJ3k3YXhpcycsICd5OGF4aXMnLCAneTlheGlzJ107CgogICAgLyoqCiAgICAgKiBDbGFzczoganFQbG90CiAgICAgKiBQbG90IG9iamVjdCByZXR1cm5lZCBieSBjYWxsIHRvICQuanFwbG90LiAgSGFuZGxlcyBwYXJzaW5nIHVzZXIgb3B0aW9ucywKICAgICAqIGNyZWF0aW5nIHN1YiBvYmplY3RzIChBeGVzLCBsZWdlbmQsIHRpdGxlLCBzZXJpZXMpIGFuZCByZW5kZXJpbmcgdGhlIHBsb3QuCiAgICAgKi8KICAgIGZ1bmN0aW9uIGpxUGxvdCgpIHsKICAgICAgICAvLyBHcm91cDogUHJvcGVydGllcwogICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgYXJlIHNwZWNpZmllZCBhdCB0aGUgdG9wIG9mIHRoZSBvcHRpb25zIG9iamVjdAogICAgICAgIC8vIGxpa2Ugc286CiAgICAgICAgLy8gPiB7CiAgICAgICAgLy8gPiAgICAgYXhlc0RlZmF1bHRzOnttaW46MH0sCiAgICAgICAgLy8gPiAgICAgc2VyaWVzOlt7Y29sb3I6JyM2NjMzZGQnfV0sCiAgICAgICAgLy8gPiAgICAgdGl0bGU6ICdBIFBsb3QnCiAgICAgICAgLy8gPiB9CiAgICAgICAgLy8KCiAgICAgICAgLy8gcHJvcDogYW5pbWF0ZQogICAgICAgIC8vIFRydWUgdG8gYW5pbWF0ZSB0aGUgc2VyaWVzIG9uIGluaXRpYWwgcGxvdCBkcmF3IChyZW5kZXJlciBkZXBlbmRlbnQpLgogICAgICAgIC8vIEFjdHVhbCBhbmltYXRpb24gZnVuY3Rpb25hbGl0eSBtdXN0IGJlIHN1cHBvcnRlZCBpbiB0aGUgcmVuZGVyZXIuCiAgICAgICAgdGhpcy5hbmltYXRlID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogYW5pbWF0ZVJlcGxvdAogICAgICAgIC8vIFRydWUgdG8gYW5pbWF0ZSBzZXJpZXMgYWZ0ZXIgYSBjYWxsIHRvIHRoZSByZXBsb3QoKSBtZXRob2QuCiAgICAgICAgLy8gVXNlIHdpdGggY2F1dGlvbiEgIFJlcGxvdHMgY2FuIGhhcHBlbiB2ZXJ5IGZyZXF1ZW50bHkgdW5kZXIKICAgICAgICAvLyBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgKGUuZy4gcmVzaXppbmcsIGRyYWdnaW5nIHBvaW50cykgYW5kCiAgICAgICAgLy8gYW5pbWF0aW9uIGluIHRoZXNlIHNpdHVhdGlvbnMgY2FuIGNhdXNlIHByb2JsZW1zLgogICAgICAgIHRoaXMuYW5pbWF0ZVJlcGxvdCA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGF4ZXMKICAgICAgICAvLyB1cCB0byA0IGF4ZXMgYXJlIHN1cHBvcnRlZCwgZWFjaCB3aXRoIGl0cyBvd24gb3B0aW9ucywgCiAgICAgICAgLy8gU2VlIDxBeGlzPiBmb3IgYXhpcyBzcGVjaWZpYyBvcHRpb25zLgogICAgICAgIHRoaXMuYXhlcyA9IHt4YXhpczogbmV3IEF4aXMoJ3hheGlzJyksIHlheGlzOiBuZXcgQXhpcygneWF4aXMnKSwgeDJheGlzOiBuZXcgQXhpcygneDJheGlzJyksIHkyYXhpczogbmV3IEF4aXMoJ3kyYXhpcycpLCB5M2F4aXM6IG5ldyBBeGlzKCd5M2F4aXMnKSwgeTRheGlzOiBuZXcgQXhpcygneTRheGlzJyksIHk1YXhpczogbmV3IEF4aXMoJ3k1YXhpcycpLCB5NmF4aXM6IG5ldyBBeGlzKCd5NmF4aXMnKSwgeTdheGlzOiBuZXcgQXhpcygneTdheGlzJyksIHk4YXhpczogbmV3IEF4aXMoJ3k4YXhpcycpLCB5OWF4aXM6IG5ldyBBeGlzKCd5OWF4aXMnKSwgeU1pZEF4aXM6IG5ldyBBeGlzKCd5TWlkQXhpcycpfTsKICAgICAgICB0aGlzLmJhc2VDYW52YXMgPSBuZXcgJC5qcXBsb3QuR2VuZXJpY0NhbnZhcygpOwogICAgICAgIC8vIHRydWUgdG8gaW50ZXJjZXB0IHJpZ2h0IGNsaWNrIGV2ZW50cyBhbmQgZmlyZSBhICdqcXBsb3RSaWdodENsaWNrJyBldmVudC4KICAgICAgICAvLyB0aGlzIHdpbGwgYWxzbyBibG9jayB0aGUgY29udGV4dCBtZW51LgogICAgICAgIHRoaXMuY2FwdHVyZVJpZ2h0Q2xpY2sgPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiBkYXRhCiAgICAgICAgLy8gdXNlcidzIGRhdGEuICBEYXRhIHNob3VsZCAqTk9UKiBiZSBzcGVjaWZpZWQgaW4gdGhlIG9wdGlvbnMgb2JqZWN0LAogICAgICAgIC8vIGJ1dCBiZSBwYXNzZWQgaW4gYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byB0aGUgJC5qcXBsb3QoKSBmdW5jdGlvbi4KICAgICAgICAvLyBUaGUgZGF0YSBwcm9wZXJ0eSBpcyBkZXNjcmliZWQgaGVyZSBzb2xleSBmb3IgcmVmZXJlbmNlLiAKICAgICAgICAvLyBUaGUgZGF0YSBzaG91bGQgYmUgaW4gdGhlIGZvcm0gb2YgYW4gYXJyYXkgb2YgMkQgb3IgMUQgYXJyYXlzIGxpa2UKICAgICAgICAvLyA+IFsgW1t4MSwgeTFdLCBbeDIsIHkyXSwuLi5dLCBbeTEsIHkyLCAuLi5dIF0uCiAgICAgICAgdGhpcy5kYXRhID0gW107CiAgICAgICAgLy8gcHJvcDogZGF0YVJlbmRlcmVyCiAgICAgICAgLy8gQSBjYWxsYWJsZSB3aGljaCBjYW4gYmUgdXNlZCB0byBwcmVwcm9jZXNzIGRhdGEgcGFzc2VkIGludG8gdGhlIHBsb3QuCiAgICAgICAgLy8gV2lsbCBiZSBjYWxsZWQgd2l0aCAzIGFyZ3VtZW50czogdGhlIHBsb3QgZGF0YSwgYSByZWZlcmVuY2UgdG8gdGhlIHBsb3QsCiAgICAgICAgLy8gYW5kIHRoZSB2YWx1ZSBvZiBkYXRhUmVuZGVyZXJPcHRpb25zLgogICAgICAgIHRoaXMuZGF0YVJlbmRlcmVyOwogICAgICAgIC8vIHByb3A6IGRhdGFSZW5kZXJlck9wdGlvbnMKICAgICAgICAvLyBPcHRpb25zIHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGRhdGFSZW5kZXJlci4KICAgICAgICAvLyBDYW4gYmUgb2YgYW55IHR5cGUuCiAgICAgICAgdGhpcy5kYXRhUmVuZGVyZXJPcHRpb25zOwogICAgICAgIHRoaXMuZGVmYXVsdHMgPSB7CiAgICAgICAgICAgIC8vIHByb3A6IGF4ZXNEZWZhdWx0cwogICAgICAgICAgICAvLyBkZWZhdWx0IG9wdGlvbnMgdGhhdCB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsIGF4ZXMuCiAgICAgICAgICAgIC8vIHNlZSA8QXhpcz4gZm9yIGF4ZXMgb3B0aW9ucy4KICAgICAgICAgICAgYXhlc0RlZmF1bHRzOiB7fSwKICAgICAgICAgICAgYXhlczoge3hheGlzOnt9LCB5YXhpczp7fSwgeDJheGlzOnt9LCB5MmF4aXM6e30sIHkzYXhpczp7fSwgeTRheGlzOnt9LCB5NWF4aXM6e30sIHk2YXhpczp7fSwgeTdheGlzOnt9LCB5OGF4aXM6e30sIHk5YXhpczp7fSwgeU1pZEF4aXM6e319LAogICAgICAgICAgICAvLyBwcm9wOiBzZXJpZXNEZWZhdWx0cwogICAgICAgICAgICAvLyBkZWZhdWx0IG9wdGlvbnMgdGhhdCB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsIHNlcmllcy4KICAgICAgICAgICAgLy8gc2VlIDxTZXJpZXM+IGZvciBzZXJpZXMgb3B0aW9ucy4KICAgICAgICAgICAgc2VyaWVzRGVmYXVsdHM6IHt9LAogICAgICAgICAgICBzZXJpZXM6W10KICAgICAgICB9OwogICAgICAgIC8vIHByb3A6IGRlZmF1bHRBeGlzU3RhcnQKICAgICAgICAvLyAxLUQgZGF0YSBzZXJpZXMgYXJlIGludGVybmFsbHkgY29udmVydGVkIGludG8gMi1EIFt4LHldIGRhdGEgcG9pbnQgYXJyYXlzCiAgICAgICAgLy8gYnkganFQbG90LiAgVGhpcyBpcyB0aGUgZGVmYXVsdCBzdGFydGluZyB2YWx1ZSBmb3IgdGhlIG1pc3NpbmcgeCBvciB5IHZhbHVlLgogICAgICAgIC8vIFRoZSBhZGRlZCBkYXRhIHdpbGwgYmUgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgc2VyaWVzIChlLmcuIFsxLCAyLCAzLCAuLi5dKQogICAgICAgIC8vIHN0YXJ0aW5nIGF0IHRoaXMgdmFsdWUuCiAgICAgICAgdGhpcy5kZWZhdWx0QXhpc1N0YXJ0ID0gMTsKICAgICAgICAvLyB0aGlzLmRvQ3VzdG9tRXZlbnRCaW5kaW5nID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBkcmF3SWZIaWRkZW4KICAgICAgICAvLyBUcnVlIHRvIGV4ZWN1dGUgdGhlIGRyYXcgbWV0aG9kIGV2ZW4gaWYgdGhlIHBsb3QgdGFyZ2V0IGlzIGhpZGRlbi4KICAgICAgICAvLyBHZW5lcmFsbHksIHRoaXMgc2hvdWxkIGJlIGZhbHNlLiAgTW9zdCBwbG90IGVsZW1lbnRzIHdpbGwgbm90IGJlIHNpemVkLwogICAgICAgIC8vIHBvc2l0aW9uZWQgY29ycmVjbHR5IGlmIHJlbmRlcmVyZWQgaW50byBhIGhpZGRlbiBjb250YWluZXIuICBUbyByZW5kZXIgaW50bwogICAgICAgIC8vIGEgaGlkZGVuIGNvbnRhaW5lciwgY2FsbCB0aGUgcmVwbG90IG1ldGhvZCB3aGVuIHRoZSBjb250YWluZXIgaXMgc2hvd24uCiAgICAgICAgdGhpcy5kcmF3SWZIaWRkZW4gPSBmYWxzZTsKICAgICAgICB0aGlzLmV2ZW50Q2FudmFzID0gbmV3ICQuanFwbG90LkdlbmVyaWNDYW52YXMoKTsKICAgICAgICAvLyBwcm9wOiBmaWxsQmV0d2VlbgogICAgICAgIC8vIEZpbGwgYmV0d2VlbiAyIGxpbmUgc2VyaWVzIGluIGEgcGxvdC4KICAgICAgICAvLyBPcHRpb25zIG9iamVjdDoKICAgICAgICAvLyB7CiAgICAgICAgLy8gICAgc2VyaWVzMTogZmlyc3QgaW5kZXggKDAgYmFzZWQpIG9mIHNlcmllcyBpbiBmaWxsCiAgICAgICAgLy8gICAgc2VyaWVzMjogc2Vjb25kIGluZGV4ICgwIGJhc2VkKSBvZiBzZXJpZXMgaW4gZmlsbAogICAgICAgIC8vICAgIGNvbG9yOiBjb2xvciBvZiBmaWxsIFtkZWZhdWx0IGZpbGxDb2xvciBvZiBzZXJpZXMxXQogICAgICAgIC8vICAgIGJhc2VTZXJpZXM6ICBmaWxsIHdpbGwgYmUgZHJhd24gYmVsb3cgdGhpcyBzZXJpZXMgKDAgYmFzZWQgaW5kZXgpCiAgICAgICAgLy8gICAgZmlsbDogZmFsc2UgdG8gdHVybiBvZmYgZmlsbCBbZGVmYXVsdCB0cnVlXS4KICAgICAgICAvLyAgfQogICAgICAgIHRoaXMuZmlsbEJldHdlZW4gPSB7CiAgICAgICAgICAgIHNlcmllczE6IG51bGwsCiAgICAgICAgICAgIHNlcmllczI6IG51bGwsCiAgICAgICAgICAgIGNvbG9yOiBudWxsLAogICAgICAgICAgICBiYXNlU2VyaWVzOiAwLAogICAgICAgICAgICBmaWxsOiB0cnVlCiAgICAgICAgfTsKICAgICAgICAvLyBwcm9wOyBmb250RmFtaWx5CiAgICAgICAgLy8gY3NzIHNwZWMgZm9yIHRoZSBmb250LWZhbWlseSBhdHRyaWJ1dGUuICBEZWZhdWx0IGZvciB0aGUgZW50aXJlIHBsb3QuCiAgICAgICAgdGhpcy5mb250RmFtaWx5OwogICAgICAgIC8vIHByb3A6IGZvbnRTaXplCiAgICAgICAgLy8gY3NzIHNwZWMgZm9yIHRoZSBmb250LXNpemUgYXR0cmlidXRlLiAgRGVmYXVsdCBmb3IgdGhlIGVudGlyZSBwbG90LgogICAgICAgIHRoaXMuZm9udFNpemU7CiAgICAgICAgLy8gcHJvcDogZ3JpZAogICAgICAgIC8vIFNlZSA8R3JpZD4gZm9yIGdyaWQgc3BlY2lmaWMgb3B0aW9ucy4KICAgICAgICB0aGlzLmdyaWQgPSBuZXcgR3JpZCgpOwogICAgICAgIC8vIHByb3A6IGxlZ2VuZAogICAgICAgIC8vIHNlZSA8JC5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlcj4KICAgICAgICB0aGlzLmxlZ2VuZCA9IG5ldyBMZWdlbmQoKTsKICAgICAgICAvLyBwcm9wOiBub0RhdGFJbmRpY2F0b3IKICAgICAgICAvLyBPcHRpb25zIHRvIHNldCB1cCBhIG1vY2sgcGxvdCB3aXRoIGEgZGF0YSBsb2FkaW5nIGluZGljYXRvciBpZiBubyBkYXRhIGlzIHNwZWNpZmllZC4KICAgICAgICB0aGlzLm5vRGF0YUluZGljYXRvciA9IHsgICAgCiAgICAgICAgICAgIHNob3c6IGZhbHNlLAogICAgICAgICAgICBpbmRpY2F0b3I6ICdMb2FkaW5nIERhdGEuLi4nLAogICAgICAgICAgICBheGVzOiB7CiAgICAgICAgICAgICAgICB4YXhpczogewogICAgICAgICAgICAgICAgICAgIG1pbjogMCwKICAgICAgICAgICAgICAgICAgICBtYXg6IDEwLAogICAgICAgICAgICAgICAgICAgIHRpY2tJbnRlcnZhbDogMiwKICAgICAgICAgICAgICAgICAgICBzaG93OiB0cnVlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgeWF4aXM6IHsKICAgICAgICAgICAgICAgICAgICBtaW46IDAsCiAgICAgICAgICAgICAgICAgICAgbWF4OiAxMiwKICAgICAgICAgICAgICAgICAgICB0aWNrSW50ZXJ2YWw6IDMsCiAgICAgICAgICAgICAgICAgICAgc2hvdzogdHJ1ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICAvLyBwcm9wOiBuZWdhdGl2ZVNlcmllc0NvbG9ycyAKICAgICAgICAvLyBjb2xvcnMgdG8gdXNlIGZvciBwb3J0aW9ucyBvZiB0aGUgbGluZSBiZWxvdyB6ZXJvLgogICAgICAgIHRoaXMubmVnYXRpdmVTZXJpZXNDb2xvcnMgPSAkLmpxcGxvdC5jb25maWcuZGVmYXVsdE5lZ2F0aXZlQ29sb3JzOwogICAgICAgIC8vIGNvbnRhaW5lciB0byBob2xkIGFsbCBvZiB0aGUgbWVyZ2VkIG9wdGlvbnMuICBDb252aWVuZW5jZSBmb3IgcGx1Z2lucy4KICAgICAgICB0aGlzLm9wdGlvbnMgPSB7fTsKICAgICAgICB0aGlzLnByZXZpb3VzU2VyaWVzU3RhY2sgPSBbXTsKICAgICAgICAvLyBOYW1lc3BhY2UgdG8gaG9sZCBwbHVnaW5zLiAgR2VuZXJhbGx5IG5vbi1yZW5kZXJlciBwbHVnaW5zIGFkZCB0aGVtc2VsdmVzIHRvIGhlcmUuCiAgICAgICAgdGhpcy5wbHVnaW5zID0ge307CiAgICAgICAgLy8gcHJvcDogc2VyaWVzCiAgICAgICAgLy8gQXJyYXkgb2Ygc2VyaWVzIG9iamVjdCBvcHRpb25zLgogICAgICAgIC8vIHNlZSA8U2VyaWVzPiBmb3Igc2VyaWVzIHNwZWNpZmljIG9wdGlvbnMuCiAgICAgICAgdGhpcy5zZXJpZXMgPSBbXTsKICAgICAgICAvLyBhcnJheSBvZiBzZXJpZXMgaW5kaWNlcy4gS2VlcCB0cmFjayBvZiBvcmRlcgogICAgICAgIC8vIHdoaWNoIHNlcmllcyBjYW52YXNlcyBhcmUgZGlzcGxheWVkLCBsb3dlc3QKICAgICAgICAvLyB0byBoaWdoZXN0LCBiYWNrIHRvIGZyb250LgogICAgICAgIHRoaXMuc2VyaWVzU3RhY2sgPSBbXTsKICAgICAgICAvLyBwcm9wOiBzZXJpZXNDb2xvcnMKICAgICAgICAvLyBBbm4gYXJyYXkgb2YgQ1NTIGNvbG9yIHNwZWNpZmljYXRpb25zIHRoYXQgd2lsbCBiZSBhcHBsaWVkLCBpbiBvcmRlciwKICAgICAgICAvLyB0byB0aGUgc2VyaWVzIGluIHRoZSBwbG90LiAgQ29sb3JzIHdpbGwgd3JhcCBhcm91bmQgc28sIGlmIHRoZWlyCiAgICAgICAgLy8gYXJlIG1vcmUgc2VyaWVzIHRoYW4gY29sb3JzLCBjb2xvcnMgd2lsbCBiZSByZXVzZWQgc3RhcnRpbmcgYXQgdGhlCiAgICAgICAgLy8gYmVnaW5uaW5nLiAgRm9yIHBpZSBjaGFydHMsIHRoaXMgc3BlY2lmaWVzIHRoZSBjb2xvcnMgb2YgdGhlIHNsaWNlcy4KICAgICAgICB0aGlzLnNlcmllc0NvbG9ycyA9ICQuanFwbG90LmNvbmZpZy5kZWZhdWx0Q29sb3JzOwogICAgICAgIC8vIHByb3A6IHNvcnREYXRhCiAgICAgICAgLy8gZmFsc2UgdG8gbm90IHNvcnQgdGhlIGRhdGEgcGFzc2VkIGluIGJ5IHRoZSB1c2VyLgogICAgICAgIC8vIE1hbnkgYmFyLCBzdGFja2VkIGFuZCBvdGhlciBncmFwaHMgYXMgd2VsbCBhcyBtYW55IHBsdWdpbnMgZGVwZW5kIG9uCiAgICAgICAgLy8gaGF2aW5nIHNvcnRlZCBkYXRhLgogICAgICAgIHRoaXMuc29ydERhdGEgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IHN0YWNrU2VyaWVzCiAgICAgICAgLy8gdHJ1ZSBvciBmYWxzZSwgY3JlYXRlcyBhIHN0YWNrIG9yICJtb3VudGFpbiIgcGxvdC4KICAgICAgICAvLyBOb3QgYWxsIHNlcmllcyByZW5kZXJlcnMgbWF5IGltcGxlbWVudCB0aGlzIG9wdGlvbi4KICAgICAgICB0aGlzLnN0YWNrU2VyaWVzID0gZmFsc2U7CiAgICAgICAgLy8gYSBzaG9ydGN1dCBmb3IgYXhpcyBzeW5jVGlja3Mgb3B0aW9ucy4gIE5vdCBpbXBsZW1lbnRlZCB5ZXQuCiAgICAgICAgdGhpcy5zeW5jWFRpY2tzID0gdHJ1ZTsKICAgICAgICAvLyBhIHNob3J0Y3V0IGZvciBheGlzIHN5bmNUaWNrcyBvcHRpb25zLiAgTm90IGltcGxlbWVudGVkIHlldC4KICAgICAgICB0aGlzLnN5bmNZVGlja3MgPSB0cnVlOwogICAgICAgIC8vIHRoZSBqcXVlcnkgb2JqZWN0IGZvciB0aGUgZG9tIHRhcmdldC4KICAgICAgICB0aGlzLnRhcmdldCA9IG51bGw7IAogICAgICAgIC8vIFRoZSBpZCBvZiB0aGUgZG9tIGVsZW1lbnQgdG8gcmVuZGVyIHRoZSBwbG90IGludG8KICAgICAgICB0aGlzLnRhcmdldElkID0gbnVsbDsKICAgICAgICAvLyBwcm9wIHRleHRDb2xvcgogICAgICAgIC8vIGNzcyBzcGVjIGZvciB0aGUgY3NzIGNvbG9yIGF0dHJpYnV0ZS4gIERlZmF1bHQgZm9yIHRoZSBlbnRpcmUgcGxvdC4KICAgICAgICB0aGlzLnRleHRDb2xvcjsKICAgICAgICAvLyBwcm9wOiB0aXRsZQogICAgICAgIC8vIFRpdGxlIG9iamVjdC4gIFNlZSA8VGl0bGU+IGZvciBzcGVjaWZpYyBvcHRpb25zLiAgQXMgYSBzaG9ydGN1dCwgeW91CiAgICAgICAgLy8gY2FuIHNwZWNpZnkgdGhlIHRpdGxlIG9wdGlvbiBhcyBqdXN0IGEgc3RyaW5nIGxpa2U6IHRpdGxlOiAnTXkgUGxvdCcKICAgICAgICAvLyBhbmQgdGhpcyB3aWxsIGNyZWF0ZSBhIG5ldyB0aXRsZSBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIHRleHQuCiAgICAgICAgdGhpcy50aXRsZSA9IG5ldyBUaXRsZSgpOwogICAgICAgIC8vIENvdW50IGhvdyBtYW55IHRpbWVzIHRoZSBkcmF3IG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQgd2hpbGUgdGhlIHBsb3QgaXMgdmlzaWJsZS4KICAgICAgICAvLyBNb3N0bHkgdXNlZCB0byB0ZXN0IGlmIHBsb3QgaGFzIG5ldmVyIGJlZW4gZHJhbiAoPTApLCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZHJhd24KICAgICAgICAvLyBpbnRvIGEgdmlzaWJsZSBjb250YWluZXIgb25jZSAoPTEpIG9yIGRyYXcgbW9yZSB0aGFuIG9uY2UgaW50byBhIHZpc2libGUgY29udGFpbmVyLgogICAgICAgIC8vIENhbiB1c2UgdGhpcyBpbiB0ZXN0cyB0byBzZWUgaWYgcGxvdCBoYXMgYmVlbiB2aXNpYmx5IGRyYXduIGF0IGxlYXN0IG9uZSB0aW1lLgogICAgICAgIC8vIEFmdGVyIHBsb3QgaGFzIGJlZW4gdmlzaWJseSBkcmF3biBvbmNlLCBpdCBnZW5lcmFsbHkgZG9lc24ndCBuZWVkIHJlZHJhd2luZyBpZiBpdHMKICAgICAgICAvLyBjb250YWluZXIgaXMgaGlkZGVuIGFuZCBzaG93bi4KICAgICAgICB0aGlzLl9kcmF3Q291bnQgPSAwOwogICAgICAgIC8vIHN1bSBvZiB5IHZhbHVlcyBmb3IgYWxsIHNlcmllcyBpbiBwbG90LgogICAgICAgIC8vIHVzZWQgaW4gbWVra28gY2hhcnQuCiAgICAgICAgdGhpcy5fc3VteSA9IDA7CiAgICAgICAgdGhpcy5fc3VteCA9IDA7CiAgICAgICAgLy8gYXJyYXkgdG8gaG9sZCB0aGUgY3VtdWxhdGl2ZSBzdGFja2VkIHNlcmllcyBkYXRhLgogICAgICAgIC8vIHVzZWQgdG8gYWp1c3QgdGhlIGluZGl2aWR1YWwgc2VyaWVzIGRhdGEsIHdoaWNoIHdvbid0IGhhdmUgYWNjZXNzIHRvIG90aGVyCiAgICAgICAgLy8gc2VyaWVzIGRhdGEuCiAgICAgICAgdGhpcy5fc3RhY2tEYXRhID0gW107CiAgICAgICAgLy8gYXJyYXkgdGhhdCBob2xkcyB0aGUgZGF0YSB0byBiZSBwbG90dGVkLiBUaGlzIHdpbGwgYmUgdGhlIHNlcmllcyBkYXRhCiAgICAgICAgLy8gbWVyZ2VkIHdpdGggdGhlIHRoZSBhcHByb3ByaWF0ZSBkYXRhIGZyb20gX3N0YWNrRGF0YSBhY2NvcmRpbmcgdG8gdGhlIHN0YWNrQXhpcy4KICAgICAgICB0aGlzLl9wbG90RGF0YSA9IFtdOwogICAgICAgIHRoaXMuX3dpZHRoID0gbnVsbDsKICAgICAgICB0aGlzLl9oZWlnaHQgPSBudWxsOyAKICAgICAgICB0aGlzLl9wbG90RGltZW5zaW9ucyA9IHtoZWlnaHQ6bnVsbCwgd2lkdGg6bnVsbH07CiAgICAgICAgdGhpcy5fZ3JpZFBhZGRpbmcgPSB7dG9wOm51bGwsIHJpZ2h0Om51bGwsIGJvdHRvbTpudWxsLCBsZWZ0Om51bGx9OwogICAgICAgIHRoaXMuX2RlZmF1bHRHcmlkUGFkZGluZyA9IHt0b3A6MTAsIHJpZ2h0OjEwLCBib3R0b206MjMsIGxlZnQ6MTB9OwoKICAgICAgICB0aGlzLl9hZGREb21SZWZlcmVuY2UgPSAkLmpxcGxvdC5jb25maWcuYWRkRG9tUmVmZXJlbmNlOwoKICAgICAgICB0aGlzLnByZUluaXRIb29rcyA9IG5ldyAkLmpxcGxvdC5Ib29rc01hbmFnZXIoKTsKICAgICAgICB0aGlzLnBvc3RJbml0SG9va3MgPSBuZXcgJC5qcXBsb3QuSG9va3NNYW5hZ2VyKCk7CiAgICAgICAgdGhpcy5wcmVQYXJzZU9wdGlvbnNIb29rcyA9IG5ldyAkLmpxcGxvdC5Ib29rc01hbmFnZXIoKTsKICAgICAgICB0aGlzLnBvc3RQYXJzZU9wdGlvbnNIb29rcyA9IG5ldyAkLmpxcGxvdC5Ib29rc01hbmFnZXIoKTsKICAgICAgICB0aGlzLnByZURyYXdIb29rcyA9IG5ldyAkLmpxcGxvdC5Ib29rc01hbmFnZXIoKTsKICAgICAgICB0aGlzLnBvc3REcmF3SG9va3MgPSBuZXcgJC5qcXBsb3QuSG9va3NNYW5hZ2VyKCk7CiAgICAgICAgdGhpcy5wcmVEcmF3U2VyaWVzSG9va3MgPSBuZXcgJC5qcXBsb3QuSG9va3NNYW5hZ2VyKCk7CiAgICAgICAgdGhpcy5wb3N0RHJhd1Nlcmllc0hvb2tzID0gbmV3ICQuanFwbG90Lkhvb2tzTWFuYWdlcigpOwogICAgICAgIHRoaXMucHJlRHJhd0xlZ2VuZEhvb2tzID0gbmV3ICQuanFwbG90Lkhvb2tzTWFuYWdlcigpOwogICAgICAgIHRoaXMuYWRkTGVnZW5kUm93SG9va3MgPSBuZXcgJC5qcXBsb3QuSG9va3NNYW5hZ2VyKCk7CiAgICAgICAgdGhpcy5wcmVTZXJpZXNJbml0SG9va3MgPSBuZXcgJC5qcXBsb3QuSG9va3NNYW5hZ2VyKCk7CiAgICAgICAgdGhpcy5wb3N0U2VyaWVzSW5pdEhvb2tzID0gbmV3ICQuanFwbG90Lkhvb2tzTWFuYWdlcigpOwogICAgICAgIHRoaXMucHJlUGFyc2VTZXJpZXNPcHRpb25zSG9va3MgPSBuZXcgJC5qcXBsb3QuSG9va3NNYW5hZ2VyKCk7CiAgICAgICAgdGhpcy5wb3N0UGFyc2VTZXJpZXNPcHRpb25zSG9va3MgPSBuZXcgJC5qcXBsb3QuSG9va3NNYW5hZ2VyKCk7CiAgICAgICAgdGhpcy5ldmVudExpc3RlbmVySG9va3MgPSBuZXcgJC5qcXBsb3QuRXZlbnRMaXN0ZW5lck1hbmFnZXIoKTsKICAgICAgICB0aGlzLnByZURyYXdTZXJpZXNTaGFkb3dIb29rcyA9IG5ldyAkLmpxcGxvdC5Ib29rc01hbmFnZXIoKTsKICAgICAgICB0aGlzLnBvc3REcmF3U2VyaWVzU2hhZG93SG9va3MgPSBuZXcgJC5qcXBsb3QuSG9va3NNYW5hZ2VyKCk7CiAgICAgICAgCiAgICAgICAgdGhpcy5jb2xvckdlbmVyYXRvciA9IG5ldyAkLmpxcGxvdC5Db2xvckdlbmVyYXRvcigpOwogICAgICAgIHRoaXMubmVnYXRpdmVDb2xvckdlbmVyYXRvciA9IG5ldyAkLmpxcGxvdC5Db2xvckdlbmVyYXRvcigpOwoKICAgICAgICB0aGlzLmNhbnZhc01hbmFnZXIgPSBuZXcgJC5qcXBsb3QuQ2FudmFzTWFuYWdlcigpOwoKICAgICAgICB0aGlzLnRoZW1lRW5naW5lID0gbmV3ICQuanFwbG90LlRoZW1lRW5naW5lKCk7CiAgICAgICAgCiAgICAgICAgdmFyIHNlcmllc0NvbG9yc0luZGV4ID0gMDsKCiAgICAgICAgLy8gR3JvdXA6IG1ldGhvZHMKICAgICAgICAvLwogICAgICAgIC8vIG1ldGhvZDogaW5pdAogICAgICAgIC8vIHNldHMgdGhlIHBsb3QgdGFyZ2V0LCBjaGVja3MgZGF0YSBhbmQgYXBwbGllcyB1c2VyCiAgICAgICAgLy8gb3B0aW9ucyB0byBwbG90LgogICAgICAgIHRoaXMuaW5pdCA9IGZ1bmN0aW9uKHRhcmdldCwgZGF0YSwgb3B0aW9ucykgewogICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPCQuanFwbG90LnByZUluaXRIb29rcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgJC5qcXBsb3QucHJlSW5pdEhvb2tzW2ldLmNhbGwodGhpcywgdGFyZ2V0LCBkYXRhLCBvcHRpb25zKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMucHJlSW5pdEhvb2tzLmhvb2tzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB0aGlzLnByZUluaXRIb29rcy5ob29rc1tpXS5jYWxsKHRoaXMsIHRhcmdldCwgZGF0YSwgb3B0aW9ucyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIHRoaXMudGFyZ2V0SWQgPSAnIycrdGFyZ2V0OwogICAgICAgICAgICB0aGlzLnRhcmdldCA9ICQoJyMnK3RhcmdldCk7CgogICAgICAgICAgICAvLy8vLy8KICAgICAgICAgICAgLy8gQWRkIGEgcmVmZXJlbmNlIHRvIHBsb3QKICAgICAgICAgICAgLy8vLy8vCiAgICAgICAgICAgIGlmICh0aGlzLl9hZGREb21SZWZlcmVuY2UpIHsKICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LmRhdGEoJ2pxcGxvdCcsIHRoaXMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIHJlbW92ZSBhbnkgZXJyb3IgY2xhc3MgdGhhdCBtYXkgYmUgc3R1Y2sgb24gdGFyZ2V0LgogICAgICAgICAgICB0aGlzLnRhcmdldC5yZW1vdmVDbGFzcygnanFwbG90LWVycm9yJyk7CiAgICAgICAgICAgIGlmICghdGhpcy50YXJnZXQuZ2V0KDApKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk5vIHBsb3QgdGFyZ2V0IHNwZWNpZmllZCIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhlIHRhcmdldCBpcyBwb3NpdGlvbmVkIGJ5IHNvbWUgbWVhbnMgYW5kIHNldCBjc3MKICAgICAgICAgICAgaWYgKHRoaXMudGFyZ2V0LmNzcygncG9zaXRpb24nKSA9PSAnc3RhdGljJykgewogICAgICAgICAgICAgICAgdGhpcy50YXJnZXQuY3NzKCdwb3NpdGlvbicsICdyZWxhdGl2ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghdGhpcy50YXJnZXQuaGFzQ2xhc3MoJ2pxcGxvdC10YXJnZXQnKSkgewogICAgICAgICAgICAgICAgdGhpcy50YXJnZXQuYWRkQ2xhc3MoJ2pxcGxvdC10YXJnZXQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gaWYgbm8gaGVpZ2h0IG9yIHdpZHRoIHNwZWNpZmllZCwgdXNlIGEgZGVmYXVsdC4KICAgICAgICAgICAgaWYgKCF0aGlzLnRhcmdldC5oZWlnaHQoKSkgewogICAgICAgICAgICAgICAgdmFyIGg7CiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmhlaWdodCkgewogICAgICAgICAgICAgICAgICAgIGggPSBwYXJzZUludChvcHRpb25zLmhlaWdodCwgMTApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy50YXJnZXQuYXR0cignZGF0YS1oZWlnaHQnKSkgewogICAgICAgICAgICAgICAgICAgIGggPSBwYXJzZUludCh0aGlzLnRhcmdldC5hdHRyKCdkYXRhLWhlaWdodCcpLCAxMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBoID0gcGFyc2VJbnQoJC5qcXBsb3QuY29uZmlnLmRlZmF1bHRIZWlnaHQsIDEwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRoaXMuX2hlaWdodCA9IGg7CiAgICAgICAgICAgICAgICB0aGlzLnRhcmdldC5jc3MoJ2hlaWdodCcsIGgrJ3B4Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB0aGlzLl9oZWlnaHQgPSBoID0gdGhpcy50YXJnZXQuaGVpZ2h0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCF0aGlzLnRhcmdldC53aWR0aCgpKSB7CiAgICAgICAgICAgICAgICB2YXIgdzsKICAgICAgICAgICAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMud2lkdGgpIHsKICAgICAgICAgICAgICAgICAgICB3ID0gcGFyc2VJbnQob3B0aW9ucy53aWR0aCwgMTApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy50YXJnZXQuYXR0cignZGF0YS13aWR0aCcpKSB7CiAgICAgICAgICAgICAgICAgICAgdyA9IHBhcnNlSW50KHRoaXMudGFyZ2V0LmF0dHIoJ2RhdGEtd2lkdGgnKSwgMTApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdyA9IHBhcnNlSW50KCQuanFwbG90LmNvbmZpZy5kZWZhdWx0V2lkdGgsIDEwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRoaXMuX3dpZHRoID0gdzsKICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LmNzcygnd2lkdGgnLCB3KydweCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5fd2lkdGggPSB3ID0gdGhpcy50YXJnZXQud2lkdGgoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yICh2YXIgaT0wLCBsPV9heGlzTmFtZXMubGVuZ3RoOyBpPGw7IGkrKykgewogICAgICAgICAgICAgICAgdGhpcy5heGVzW19heGlzTmFtZXNbaV1dID0gbmV3IEF4aXMoX2F4aXNOYW1lc1tpXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCA9IHRoaXMuX2hlaWdodDsKICAgICAgICAgICAgdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggPSB0aGlzLl93aWR0aDsKICAgICAgICAgICAgdGhpcy5ncmlkLl9wbG90RGltZW5zaW9ucyA9IHRoaXMuX3Bsb3REaW1lbnNpb25zOwogICAgICAgICAgICB0aGlzLnRpdGxlLl9wbG90RGltZW5zaW9ucyA9IHRoaXMuX3Bsb3REaW1lbnNpb25zOwogICAgICAgICAgICB0aGlzLmJhc2VDYW52YXMuX3Bsb3REaW1lbnNpb25zID0gdGhpcy5fcGxvdERpbWVuc2lvbnM7CiAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX3Bsb3REaW1lbnNpb25zID0gdGhpcy5fcGxvdERpbWVuc2lvbnM7CiAgICAgICAgICAgIHRoaXMubGVnZW5kLl9wbG90RGltZW5zaW9ucyA9IHRoaXMuX3Bsb3REaW1lbnNpb25zOwogICAgICAgICAgICBpZiAodGhpcy5faGVpZ2h0IDw9MCB8fCB0aGlzLl93aWR0aCA8PTAgfHwgIXRoaXMuX2hlaWdodCB8fCAhdGhpcy5fd2lkdGgpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ2FudmFzIGRpbWVuc2lvbiBub3Qgc2V0Iik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChvcHRpb25zLmRhdGFSZW5kZXJlciAmJiAkLmlzRnVuY3Rpb24ob3B0aW9ucy5kYXRhUmVuZGVyZXIpKSB7CiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5kYXRhUmVuZGVyZXJPcHRpb25zKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhUmVuZGVyZXJPcHRpb25zID0gb3B0aW9ucy5kYXRhUmVuZGVyZXJPcHRpb25zOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5kYXRhUmVuZGVyZXIgPSBvcHRpb25zLmRhdGFSZW5kZXJlcjsKICAgICAgICAgICAgICAgIGRhdGEgPSB0aGlzLmRhdGFSZW5kZXJlcihkYXRhLCB0aGlzLCB0aGlzLmRhdGFSZW5kZXJlck9wdGlvbnMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAob3B0aW9ucy5ub0RhdGFJbmRpY2F0b3IgJiYgJC5pc1BsYWluT2JqZWN0KG9wdGlvbnMubm9EYXRhSW5kaWNhdG9yKSkgewogICAgICAgICAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcy5ub0RhdGFJbmRpY2F0b3IsIG9wdGlvbnMubm9EYXRhSW5kaWNhdG9yKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGRhdGEgPT0gbnVsbCB8fCAkLmlzQXJyYXkoZGF0YSkgPT0gZmFsc2UgfHwgZGF0YS5sZW5ndGggPT0gMCB8fCAkLmlzQXJyYXkoZGF0YVswXSkgPT0gZmFsc2UgfHwgZGF0YVswXS5sZW5ndGggPT0gMCkgewogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAodGhpcy5ub0RhdGFJbmRpY2F0b3Iuc2hvdyA9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTm8gZGF0YSBzcGVjaWZpZWQiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gaGF2ZSB0byBiZSBkZXNjcnVjdGl2ZSBoZXJlIGluIG9yZGVyIGZvciBwbG90IHRvIG5vdCB0cnkgYW5kIHJlbmRlciBzZXJpZXMuCiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0ICQuanFwbG90KCkgd2lsbCBoYXZlIHRvIGJlIGNhbGxlZCBhZ2FpbiB3aGVuIHRoZXJlIGlzIGRhdGEuCiAgICAgICAgICAgICAgICAgICAgLy9kZWxldGUgb3B0aW9ucy5zZXJpZXM7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYXggaW4gdGhpcy5ub0RhdGFJbmRpY2F0b3IuYXhlcykgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIHRoaXMubm9EYXRhSW5kaWNhdG9yLmF4ZXNbYXhdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF4ZXNbYXhdW3Byb3BdID0gdGhpcy5ub0RhdGFJbmRpY2F0b3IuYXhlc1theF1bcHJvcF07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3N0RHJhd0hvb2tzLmFkZChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVoID0gdGhpcy5ldmVudENhbnZhcy5nZXRIZWlnaHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGV3ID0gdGhpcy5ldmVudENhbnZhcy5nZXRXaWR0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGVtcCA9ICQoJzxkaXYgY2xhc3M9ImpxcGxvdC1ub0RhdGEtY29udGFpbmVyIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7Ij48L2Rpdj4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXQuYXBwZW5kKHRlbXApOwogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLmhlaWdodChlaCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAud2lkdGgoZXcpOwogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLmNzcygndG9wJywgdGhpcy5ldmVudENhbnZhcy5fb2Zmc2V0cy50b3ApOwogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLmNzcygnbGVmdCcsIHRoaXMuZXZlbnRDYW52YXMuX29mZnNldHMubGVmdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGVtcDIgPSAkKCc8ZGl2IGNsYXNzPSJqcXBsb3Qtbm9EYXRhLWNvbnRlbnRzIiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7IHBvc2l0aW9uOnJlbGF0aXZlOyBtYXJnaW4tbGVmdDphdXRvOyBtYXJnaW4tcmlnaHQ6YXV0bzsiPjwvZGl2PicpOwogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLmFwcGVuZCh0ZW1wMik7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAyLmh0bWwodGhpcy5ub0RhdGFJbmRpY2F0b3IuaW5kaWNhdG9yKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRoID0gdGVtcDIuaGVpZ2h0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0dyA9IHRlbXAyLndpZHRoKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAyLmhlaWdodCh0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAyLndpZHRoKHR3KTsKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcDIuY3NzKCd0b3AnLCAoZWggLSB0aCkvMiArICdweCcpOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gbWFrZSBhIGNvcHkgb2YgdGhlIGRhdGEKICAgICAgICAgICAgdGhpcy5kYXRhID0gJC5leHRlbmQodHJ1ZSwgW10sIGRhdGEpOwogICAgICAgICAgICAKICAgICAgICAgICAgdGhpcy5wYXJzZU9wdGlvbnMob3B0aW9ucyk7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAodGhpcy50ZXh0Q29sb3IpIHsKICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LmNzcygnY29sb3InLCB0aGlzLnRleHRDb2xvcik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMuZm9udEZhbWlseSkgewogICAgICAgICAgICAgICAgdGhpcy50YXJnZXQuY3NzKCdmb250LWZhbWlseScsIHRoaXMuZm9udEZhbWlseSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMuZm9udFNpemUpIHsKICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LmNzcygnZm9udC1zaXplJywgdGhpcy5mb250U2l6ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIHRoaXMudGl0bGUuaW5pdCgpOwogICAgICAgICAgICB0aGlzLmxlZ2VuZC5pbml0KCk7CiAgICAgICAgICAgIHRoaXMuX3N1bXkgPSAwOwogICAgICAgICAgICB0aGlzLl9zdW14ID0gMDsKICAgICAgICAgICAgdGhpcy5jb21wdXRlUGxvdERhdGEoKTsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMuc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAvLyBzZXQgZGVmYXVsdCBzdGFja2luZyBvcmRlciBmb3Igc2VyaWVzIGNhbnZhc2VzCiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc1N0YWNrLnB1c2goaSk7CiAgICAgICAgICAgICAgICB0aGlzLnByZXZpb3VzU2VyaWVzU3RhY2sucHVzaChpKTsKICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzW2ldLnNoYWRvd0NhbnZhcy5fcGxvdERpbWVuc2lvbnMgPSB0aGlzLl9wbG90RGltZW5zaW9uczsKICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzW2ldLmNhbnZhcy5fcGxvdERpbWVuc2lvbnMgPSB0aGlzLl9wbG90RGltZW5zaW9uczsKICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MDsgajwkLmpxcGxvdC5wcmVTZXJpZXNJbml0SG9va3MubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAkLmpxcGxvdC5wcmVTZXJpZXNJbml0SG9va3Nbal0uY2FsbCh0aGlzLnNlcmllc1tpXSwgdGFyZ2V0LCB0aGlzLmRhdGEsIHRoaXMub3B0aW9ucy5zZXJpZXNEZWZhdWx0cywgdGhpcy5vcHRpb25zLnNlcmllc1tpXSwgdGhpcyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8dGhpcy5wcmVTZXJpZXNJbml0SG9va3MuaG9va3MubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnByZVNlcmllc0luaXRIb29rcy5ob29rc1tqXS5jYWxsKHRoaXMuc2VyaWVzW2ldLCB0YXJnZXQsIHRoaXMuZGF0YSwgdGhpcy5vcHRpb25zLnNlcmllc0RlZmF1bHRzLCB0aGlzLm9wdGlvbnMuc2VyaWVzW2ldLCB0aGlzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8vIHRoaXMucG9wdWxhdGVQbG90RGF0YSh0aGlzLnNlcmllc1tpXSwgaSk7CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc1tpXS5fcGxvdERpbWVuc2lvbnMgPSB0aGlzLl9wbG90RGltZW5zaW9uczsKICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzW2ldLmluaXQoaSwgdGhpcy5ncmlkLmJvcmRlcldpZHRoLCB0aGlzKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MDsgajwkLmpxcGxvdC5wb3N0U2VyaWVzSW5pdEhvb2tzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgJC5qcXBsb3QucG9zdFNlcmllc0luaXRIb29rc1tqXS5jYWxsKHRoaXMuc2VyaWVzW2ldLCB0YXJnZXQsIHRoaXMuZGF0YSwgdGhpcy5vcHRpb25zLnNlcmllc0RlZmF1bHRzLCB0aGlzLm9wdGlvbnMuc2VyaWVzW2ldLCB0aGlzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MDsgajx0aGlzLnBvc3RTZXJpZXNJbml0SG9va3MuaG9va3MubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc3RTZXJpZXNJbml0SG9va3MuaG9va3Nbal0uY2FsbCh0aGlzLnNlcmllc1tpXSwgdGFyZ2V0LCB0aGlzLmRhdGEsIHRoaXMub3B0aW9ucy5zZXJpZXNEZWZhdWx0cywgdGhpcy5vcHRpb25zLnNlcmllc1tpXSwgdGhpcyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLl9zdW15ICs9IHRoaXMuc2VyaWVzW2ldLl9zdW15OwogICAgICAgICAgICAgICAgdGhpcy5fc3VteCArPSB0aGlzLnNlcmllc1tpXS5fc3VteDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIG5hbWUsCiAgICAgICAgICAgICAgICBheGlzOwogICAgICAgICAgICBmb3IgKHZhciBpPTAsIGw9X2F4aXNOYW1lcy5sZW5ndGg7IGk8bDsgaSsrKSB7CiAgICAgICAgICAgICAgICBuYW1lID0gX2F4aXNOYW1lc1tpXTsKICAgICAgICAgICAgICAgIGF4aXMgPSB0aGlzLmF4ZXNbbmFtZV07CiAgICAgICAgICAgICAgICBheGlzLl9wbG90RGltZW5zaW9ucyA9IHRoaXMuX3Bsb3REaW1lbnNpb25zOwogICAgICAgICAgICAgICAgYXhpcy5pbml0KCk7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5heGVzW25hbWVdLmJvcmRlckNvbG9yID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobmFtZS5jaGFyQXQoMCkgIT09ICd4JyAmJiBheGlzLnVzZVNlcmllc0NvbG9yID09PSB0cnVlICYmIGF4aXMuc2hvdykgewogICAgICAgICAgICAgICAgICAgICAgICBheGlzLmJvcmRlckNvbG9yID0gYXhpcy5fc2VyaWVzWzBdLmNvbG9yOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXhpcy5ib3JkZXJDb2xvciA9IHRoaXMuZ3JpZC5ib3JkZXJDb2xvcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLnNvcnREYXRhKSB7CiAgICAgICAgICAgICAgICBzb3J0RGF0YSh0aGlzLnNlcmllcyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5ncmlkLmluaXQoKTsKICAgICAgICAgICAgdGhpcy5ncmlkLl9heGVzID0gdGhpcy5heGVzOwogICAgICAgICAgICAKICAgICAgICAgICAgdGhpcy5sZWdlbmQuX3NlcmllcyA9IHRoaXMuc2VyaWVzOwoKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPCQuanFwbG90LnBvc3RJbml0SG9va3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICQuanFwbG90LnBvc3RJbml0SG9va3NbaV0uY2FsbCh0aGlzLCB0YXJnZXQsIHRoaXMuZGF0YSwgb3B0aW9ucyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLnBvc3RJbml0SG9va3MuaG9va3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHRoaXMucG9zdEluaXRIb29rcy5ob29rc1tpXS5jYWxsKHRoaXMsIHRhcmdldCwgdGhpcy5kYXRhLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgIH07ICAKICAgICAgICAKICAgICAgICAvLyBtZXRob2Q6IHJlc2V0QXhlc1NjYWxlCiAgICAgICAgLy8gUmVzZXQgdGhlIHNwZWNpZmllZCBheGVzIG1pbiwgbWF4LCBudW1iZXJUaWNrcyBhbmQgdGlja0ludGVydmFsIHByb3BlcnRpZXMgdG8gbnVsbAogICAgICAgIC8vIG9yIHJlc2V0IHRoZXNlIHByb3BlcnRpZXMgb24gYWxsIGF4ZXMgaWYgbm8gbGlzdCBvZiBheGVzIGlzIHByb3ZpZGVkLgogICAgICAgIC8vCiAgICAgICAgLy8gUGFyYW1ldGVyczoKICAgICAgICAvLyBheGVzIC0gQm9vbGVhbiB0byByZXNldCBvciBub3QgcmVzZXQgYWxsIGF4ZXMgb3IgYW4gYXJyYXkgb3Igb2JqZWN0IG9mIGF4aXMgbmFtZXMgdG8gcmVzZXQuCiAgICAgICAgdGhpcy5yZXNldEF4ZXNTY2FsZSA9IGZ1bmN0aW9uKGF4ZXMsIG9wdGlvbnMpIHsKICAgICAgICAgICAgdmFyIG9wdHMgPSBvcHRpb25zIHx8IHt9OwogICAgICAgICAgICB2YXIgYXggPSBheGVzIHx8IHRoaXMuYXhlczsKICAgICAgICAgICAgaWYgKGF4ID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICBheCA9IHRoaXMuYXhlczsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJC5pc0FycmF5KGF4KSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBheC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHRoaXMuYXhlc1theFtpXV0ucmVzZXRTY2FsZShvcHRzW2F4W2ldXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mKGF4KSA9PT0gJ29iamVjdCcpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIG5hbWUgaW4gYXgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmF4ZXNbbmFtZV0ucmVzZXRTY2FsZShvcHRzW25hbWVdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgLy8gbWV0aG9kOiByZUluaXRpYWxpemUKICAgICAgICAvLyByZWluaXRpYWxpemUgcGxvdCBmb3IgcmVwbG90dGluZy4KICAgICAgICAvLyBub3QgY2FsbGVkIGRpcmVjdGx5LgogICAgICAgIHRoaXMucmVJbml0aWFsaXplID0gZnVuY3Rpb24gKGRhdGEsIG9wdHMpIHsKICAgICAgICAgICAgLy8gUGxvdCBzaG91bGQgYmUgdmlzaWJsZSBhbmQgaGF2ZSBhIGhlaWdodCBhbmQgd2lkdGguCiAgICAgICAgICAgIC8vIElmIHBsb3QgZG9lc24ndCBoYXZlIGhlaWdodCBhbmQgd2lkdGggZm9yIHNvbWUKICAgICAgICAgICAgLy8gcmVhc29uLCBzZXQgaXQgYnkgb3RoZXIgbWVhbnMuICBQbG90IG11c3Qgbm90IGhhdmUKICAgICAgICAgICAgLy8gYSBkaXNwbGF5Om5vbmUgYXR0cmlidXRlLCBob3dldmVyLgoKICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgdGhpcy5vcHRpb25zLCBvcHRzKTsKCiAgICAgICAgICAgIHZhciB0YXJnZXQgPSB0aGlzLnRhcmdldElkLnN1YnN0cigxKTsKICAgICAgICAgICAgdmFyIHRkYXRhID0gKGRhdGEgPT0gbnVsbCkgPyB0aGlzLmRhdGEgOiBkYXRhOwoKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPCQuanFwbG90LnByZUluaXRIb29rcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgJC5qcXBsb3QucHJlSW5pdEhvb2tzW2ldLmNhbGwodGhpcywgdGFyZ2V0LCB0ZGF0YSwgb3B0aW9ucyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLnByZUluaXRIb29rcy5ob29rcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgdGhpcy5wcmVJbml0SG9va3MuaG9va3NbaV0uY2FsbCh0aGlzLCB0YXJnZXQsIHRkYXRhLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgdGhpcy5faGVpZ2h0ID0gdGhpcy50YXJnZXQuaGVpZ2h0KCk7CiAgICAgICAgICAgIHRoaXMuX3dpZHRoID0gdGhpcy50YXJnZXQud2lkdGgoKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLl9oZWlnaHQgPD0wIHx8IHRoaXMuX3dpZHRoIDw9MCB8fCAhdGhpcy5faGVpZ2h0IHx8ICF0aGlzLl93aWR0aCkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUYXJnZXQgZGltZW5zaW9uIG5vdCBzZXQiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0ID0gdGhpcy5faGVpZ2h0OwogICAgICAgICAgICB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCA9IHRoaXMuX3dpZHRoOwogICAgICAgICAgICB0aGlzLmdyaWQuX3Bsb3REaW1lbnNpb25zID0gdGhpcy5fcGxvdERpbWVuc2lvbnM7CiAgICAgICAgICAgIHRoaXMudGl0bGUuX3Bsb3REaW1lbnNpb25zID0gdGhpcy5fcGxvdERpbWVuc2lvbnM7CiAgICAgICAgICAgIHRoaXMuYmFzZUNhbnZhcy5fcGxvdERpbWVuc2lvbnMgPSB0aGlzLl9wbG90RGltZW5zaW9uczsKICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fcGxvdERpbWVuc2lvbnMgPSB0aGlzLl9wbG90RGltZW5zaW9uczsKICAgICAgICAgICAgdGhpcy5sZWdlbmQuX3Bsb3REaW1lbnNpb25zID0gdGhpcy5fcGxvdERpbWVuc2lvbnM7CgogICAgICAgICAgICB2YXIgbmFtZSwKICAgICAgICAgICAgICAgIHQsIAogICAgICAgICAgICAgICAgaiwgCiAgICAgICAgICAgICAgICBheGlzOwoKICAgICAgICAgICAgZm9yICh2YXIgaT0wLCBsPV9heGlzTmFtZXMubGVuZ3RoOyBpPGw7IGkrKykgewogICAgICAgICAgICAgICAgbmFtZSA9IF9heGlzTmFtZXNbaV07CiAgICAgICAgICAgICAgICBheGlzID0gdGhpcy5heGVzW25hbWVdOwoKICAgICAgICAgICAgICAgIC8vIE1lbW9yeSBMZWFrcyBwYXRjaCA6IGNsZWFyIHRpY2tzIGVsZW1lbnRzCiAgICAgICAgICAgICAgICB0ID0gYXhpcy5fdGlja3M7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMCwgdGxlbiA9IHQubGVuZ3RoOyBqIDwgdGxlbjsgaisrKSB7CiAgICAgICAgICAgICAgICAgIHZhciBlbCA9IHRbal0uX2VsZW07CiAgICAgICAgICAgICAgICAgIGlmIChlbCkgewogICAgICAgICAgICAgICAgICAgIC8vIGlmIGNhbnZhcyByZW5kZXJlcgogICAgICAgICAgICAgICAgICAgIGlmICgkLmpxcGxvdC51c2VfZXhjYW52YXMgJiYgd2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci51bmluaXRFbGVtZW50ICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5HX3ZtbENhbnZhc01hbmFnZXIudW5pbml0RWxlbWVudChlbC5nZXQoMCkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbC5lbXB0eUZvcmNlKCk7CiAgICAgICAgICAgICAgICAgICAgZWwgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIHQuX2VsZW0gPSBudWxsOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0ID0gbnVsbDsKCiAgICAgICAgICAgICAgICBkZWxldGUgYXhpcy50aWNrczsKICAgICAgICAgICAgICAgIGRlbGV0ZSBheGlzLl90aWNrczsKICAgICAgICAgICAgICAgIHRoaXMuYXhlc1tuYW1lXSA9IG5ldyBBeGlzKG5hbWUpOwogICAgICAgICAgICAgICAgdGhpcy5heGVzW25hbWVdLl9wbG90V2lkdGggPSB0aGlzLl93aWR0aDsKICAgICAgICAgICAgICAgIHRoaXMuYXhlc1tuYW1lXS5fcGxvdEhlaWdodCA9IHRoaXMuX2hlaWdodDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmRhdGFSZW5kZXJlciAmJiAkLmlzRnVuY3Rpb24ob3B0aW9ucy5kYXRhUmVuZGVyZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGF0YVJlbmRlcmVyT3B0aW9ucykgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFSZW5kZXJlck9wdGlvbnMgPSBvcHRpb25zLmRhdGFSZW5kZXJlck9wdGlvbnM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVJlbmRlcmVyID0gb3B0aW9ucy5kYXRhUmVuZGVyZXI7CiAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHRoaXMuZGF0YVJlbmRlcmVyKGRhdGEsIHRoaXMsIHRoaXMuZGF0YVJlbmRlcmVyT3B0aW9ucyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIG1ha2UgYSBjb3B5IG9mIHRoZSBkYXRhCiAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSAkLmV4dGVuZCh0cnVlLCBbXSwgZGF0YSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChvcHRzKSB7CiAgICAgICAgICAgICAgICB0aGlzLnBhcnNlT3B0aW9ucyhvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgdGhpcy50aXRsZS5fcGxvdFdpZHRoID0gdGhpcy5fd2lkdGg7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAodGhpcy50ZXh0Q29sb3IpIHsKICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LmNzcygnY29sb3InLCB0aGlzLnRleHRDb2xvcik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMuZm9udEZhbWlseSkgewogICAgICAgICAgICAgICAgdGhpcy50YXJnZXQuY3NzKCdmb250LWZhbWlseScsIHRoaXMuZm9udEZhbWlseSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMuZm9udFNpemUpIHsKICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LmNzcygnZm9udC1zaXplJywgdGhpcy5mb250U2l6ZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRoaXMudGl0bGUuaW5pdCgpOwogICAgICAgICAgICB0aGlzLmxlZ2VuZC5pbml0KCk7CiAgICAgICAgICAgIHRoaXMuX3N1bXkgPSAwOwogICAgICAgICAgICB0aGlzLl9zdW14ID0gMDsKCiAgICAgICAgICAgIHRoaXMuc2VyaWVzU3RhY2sgPSBbXTsKICAgICAgICAgICAgdGhpcy5wcmV2aW91c1Nlcmllc1N0YWNrID0gW107CgogICAgICAgICAgICB0aGlzLmNvbXB1dGVQbG90RGF0YSgpOwogICAgICAgICAgICBmb3IgKHZhciBpPTAsIGw9dGhpcy5zZXJpZXMubGVuZ3RoOyBpPGw7IGkrKykgewogICAgICAgICAgICAgICAgLy8gc2V0IGRlZmF1bHQgc3RhY2tpbmcgb3JkZXIgZm9yIHNlcmllcyBjYW52YXNlcwogICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNTdGFjay5wdXNoKGkpOwogICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c1Nlcmllc1N0YWNrLnB1c2goaSk7CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc1tpXS5zaGFkb3dDYW52YXMuX3Bsb3REaW1lbnNpb25zID0gdGhpcy5fcGxvdERpbWVuc2lvbnM7CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc1tpXS5jYW52YXMuX3Bsb3REaW1lbnNpb25zID0gdGhpcy5fcGxvdERpbWVuc2lvbnM7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8JC5qcXBsb3QucHJlU2VyaWVzSW5pdEhvb2tzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgJC5qcXBsb3QucHJlU2VyaWVzSW5pdEhvb2tzW2pdLmNhbGwodGhpcy5zZXJpZXNbaV0sIHRhcmdldCwgdGhpcy5kYXRhLCB0aGlzLm9wdGlvbnMuc2VyaWVzRGVmYXVsdHMsIHRoaXMub3B0aW9ucy5zZXJpZXNbaV0sIHRoaXMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPHRoaXMucHJlU2VyaWVzSW5pdEhvb2tzLmhvb2tzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVTZXJpZXNJbml0SG9va3MuaG9va3Nbal0uY2FsbCh0aGlzLnNlcmllc1tpXSwgdGFyZ2V0LCB0aGlzLmRhdGEsIHRoaXMub3B0aW9ucy5zZXJpZXNEZWZhdWx0cywgdGhpcy5vcHRpb25zLnNlcmllc1tpXSwgdGhpcyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyB0aGlzLnBvcHVsYXRlUGxvdERhdGEodGhpcy5zZXJpZXNbaV0sIGkpOwogICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNbaV0uX3Bsb3REaW1lbnNpb25zID0gdGhpcy5fcGxvdERpbWVuc2lvbnM7CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc1tpXS5pbml0KGksIHRoaXMuZ3JpZC5ib3JkZXJXaWR0aCwgdGhpcyk7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8JC5qcXBsb3QucG9zdFNlcmllc0luaXRIb29rcy5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgICAgICQuanFwbG90LnBvc3RTZXJpZXNJbml0SG9va3Nbal0uY2FsbCh0aGlzLnNlcmllc1tpXSwgdGFyZ2V0LCB0aGlzLmRhdGEsIHRoaXMub3B0aW9ucy5zZXJpZXNEZWZhdWx0cywgdGhpcy5vcHRpb25zLnNlcmllc1tpXSwgdGhpcyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8dGhpcy5wb3N0U2VyaWVzSW5pdEhvb2tzLmhvb2tzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3N0U2VyaWVzSW5pdEhvb2tzLmhvb2tzW2pdLmNhbGwodGhpcy5zZXJpZXNbaV0sIHRhcmdldCwgdGhpcy5kYXRhLCB0aGlzLm9wdGlvbnMuc2VyaWVzRGVmYXVsdHMsIHRoaXMub3B0aW9ucy5zZXJpZXNbaV0sIHRoaXMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5fc3VteSArPSB0aGlzLnNlcmllc1tpXS5fc3VteTsKICAgICAgICAgICAgICAgIHRoaXMuX3N1bXggKz0gdGhpcy5zZXJpZXNbaV0uX3N1bXg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvciAodmFyIGk9MCwgbD1fYXhpc05hbWVzLmxlbmd0aDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgICAgIG5hbWUgPSBfYXhpc05hbWVzW2ldOwogICAgICAgICAgICAgICAgYXhpcyA9IHRoaXMuYXhlc1tuYW1lXTsKCiAgICAgICAgICAgICAgICBheGlzLl9wbG90RGltZW5zaW9ucyA9IHRoaXMuX3Bsb3REaW1lbnNpb25zOwogICAgICAgICAgICAgICAgYXhpcy5pbml0KCk7CiAgICAgICAgICAgICAgICBpZiAoYXhpcy5ib3JkZXJDb2xvciA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUuY2hhckF0KDApICE9PSAneCcgJiYgYXhpcy51c2VTZXJpZXNDb2xvciA9PT0gdHJ1ZSAmJiBheGlzLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXhpcy5ib3JkZXJDb2xvciA9IGF4aXMuX3Nlcmllc1swXS5jb2xvcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGF4aXMuYm9yZGVyQ29sb3IgPSB0aGlzLmdyaWQuYm9yZGVyQ29sb3I7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAodGhpcy5zb3J0RGF0YSkgewogICAgICAgICAgICAgICAgc29ydERhdGEodGhpcy5zZXJpZXMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuZ3JpZC5pbml0KCk7CiAgICAgICAgICAgIHRoaXMuZ3JpZC5fYXhlcyA9IHRoaXMuYXhlczsKICAgICAgICAgICAgCiAgICAgICAgICAgIHRoaXMubGVnZW5kLl9zZXJpZXMgPSB0aGlzLnNlcmllczsKCiAgICAgICAgICAgIGZvciAodmFyIGk9MCwgbD0kLmpxcGxvdC5wb3N0SW5pdEhvb2tzLmxlbmd0aDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgICAgICQuanFwbG90LnBvc3RJbml0SG9va3NbaV0uY2FsbCh0aGlzLCB0YXJnZXQsIHRoaXMuZGF0YSwgb3B0aW9ucyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvciAodmFyIGk9MCwgbD10aGlzLnBvc3RJbml0SG9va3MuaG9va3MubGVuZ3RoOyBpPGw7IGkrKykgewogICAgICAgICAgICAgICAgdGhpcy5wb3N0SW5pdEhvb2tzLmhvb2tzW2ldLmNhbGwodGhpcywgdGFyZ2V0LCB0aGlzLmRhdGEsIG9wdGlvbnMpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKCgoKICAgICAgICAvLyBtZXRob2Q6IHF1aWNrSW5pdAogICAgICAgIC8vIAogICAgICAgIC8vIFF1aWNrIHJlaW5pdGlhbGl6YXRpb24gcGxvdCBmb3IgcmVwbG90dGluZy4KICAgICAgICAvLyBEb2VzIG5vdCBwYXJzZSBvcHRpb25zIG9yZSByZWNyZWF0ZSBheGVzIGFuZCBzZXJpZXMuCiAgICAgICAgLy8gbm90IGNhbGxlZCBkaXJlY3RseS4KICAgICAgICB0aGlzLnF1aWNrSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgLy8gUGxvdCBzaG91bGQgYmUgdmlzaWJsZSBhbmQgaGF2ZSBhIGhlaWdodCBhbmQgd2lkdGguCiAgICAgICAgICAgIC8vIElmIHBsb3QgZG9lc24ndCBoYXZlIGhlaWdodCBhbmQgd2lkdGggZm9yIHNvbWUKICAgICAgICAgICAgLy8gcmVhc29uLCBzZXQgaXQgYnkgb3RoZXIgbWVhbnMuICBQbG90IG11c3Qgbm90IGhhdmUKICAgICAgICAgICAgLy8gYSBkaXNwbGF5Om5vbmUgYXR0cmlidXRlLCBob3dldmVyLgogICAgICAgICAgICAKICAgICAgICAgICAgdGhpcy5faGVpZ2h0ID0gdGhpcy50YXJnZXQuaGVpZ2h0KCk7CiAgICAgICAgICAgIHRoaXMuX3dpZHRoID0gdGhpcy50YXJnZXQud2lkdGgoKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLl9oZWlnaHQgPD0wIHx8IHRoaXMuX3dpZHRoIDw9MCB8fCAhdGhpcy5faGVpZ2h0IHx8ICF0aGlzLl93aWR0aCkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUYXJnZXQgZGltZW5zaW9uIG5vdCBzZXQiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0ID0gdGhpcy5faGVpZ2h0OwogICAgICAgICAgICB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCA9IHRoaXMuX3dpZHRoOwogICAgICAgICAgICB0aGlzLmdyaWQuX3Bsb3REaW1lbnNpb25zID0gdGhpcy5fcGxvdERpbWVuc2lvbnM7CiAgICAgICAgICAgIHRoaXMudGl0bGUuX3Bsb3REaW1lbnNpb25zID0gdGhpcy5fcGxvdERpbWVuc2lvbnM7CiAgICAgICAgICAgIHRoaXMuYmFzZUNhbnZhcy5fcGxvdERpbWVuc2lvbnMgPSB0aGlzLl9wbG90RGltZW5zaW9uczsKICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fcGxvdERpbWVuc2lvbnMgPSB0aGlzLl9wbG90RGltZW5zaW9uczsKICAgICAgICAgICAgdGhpcy5sZWdlbmQuX3Bsb3REaW1lbnNpb25zID0gdGhpcy5fcGxvdERpbWVuc2lvbnM7CiAgICAgICAgICAgIAogICAgICAgICAgICBmb3IgKHZhciBuIGluIHRoaXMuYXhlcykgewogICAgICAgICAgICAgICAgdGhpcy5heGVzW25dLl9wbG90V2lkdGggPSB0aGlzLl93aWR0aDsKICAgICAgICAgICAgICAgIHRoaXMuYXhlc1tuXS5fcGxvdEhlaWdodCA9IHRoaXMuX2hlaWdodDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgdGhpcy50aXRsZS5fcGxvdFdpZHRoID0gdGhpcy5fd2lkdGg7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAodGhpcy50ZXh0Q29sb3IpIHsKICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LmNzcygnY29sb3InLCB0aGlzLnRleHRDb2xvcik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMuZm9udEZhbWlseSkgewogICAgICAgICAgICAgICAgdGhpcy50YXJnZXQuY3NzKCdmb250LWZhbWlseScsIHRoaXMuZm9udEZhbWlseSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMuZm9udFNpemUpIHsKICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LmNzcygnZm9udC1zaXplJywgdGhpcy5mb250U2l6ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIHRoaXMuX3N1bXkgPSAwOwogICAgICAgICAgICB0aGlzLl9zdW14ID0gMDsKICAgICAgICAgICAgdGhpcy5jb21wdXRlUGxvdERhdGEoKTsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMuc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAvLyB0aGlzLnBvcHVsYXRlUGxvdERhdGEodGhpcy5zZXJpZXNbaV0sIGkpOwogICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VyaWVzW2ldLl90eXBlID09PSAnbGluZScgJiYgdGhpcy5zZXJpZXNbaV0ucmVuZGVyZXIuYmFuZHMuc2hvdykgewogICAgICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzW2ldLnJlbmRlcmVyLmluaXRCYW5kcy5jYWxsKHRoaXMuc2VyaWVzW2ldLCB0aGlzLnNlcmllc1tpXS5yZW5kZXJlci5vcHRpb25zLCB0aGlzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzW2ldLl9wbG90RGltZW5zaW9ucyA9IHRoaXMuX3Bsb3REaW1lbnNpb25zOwogICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNbaV0uY2FudmFzLl9wbG90RGltZW5zaW9ucyA9IHRoaXMuX3Bsb3REaW1lbnNpb25zOwogICAgICAgICAgICAgICAgLy90aGlzLnNlcmllc1tpXS5pbml0KGksIHRoaXMuZ3JpZC5ib3JkZXJXaWR0aCk7CiAgICAgICAgICAgICAgICB0aGlzLl9zdW15ICs9IHRoaXMuc2VyaWVzW2ldLl9zdW15OwogICAgICAgICAgICAgICAgdGhpcy5fc3VteCArPSB0aGlzLnNlcmllc1tpXS5fc3VteDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIG5hbWU7CiAgICAgICAgICAgIAogICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8MTI7IGorKykgewogICAgICAgICAgICAgICAgbmFtZSA9IF9heGlzTmFtZXNbal07CiAgICAgICAgICAgICAgICAvLyBNZW1vcnkgTGVha3MgcGF0Y2ggOiBjbGVhciB0aWNrcyBlbGVtZW50cwogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLmF4ZXNbbmFtZV0uX3RpY2tzOwogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgIHZhciBlbCA9IHRbaV0uX2VsZW07CiAgICAgICAgICAgICAgICAgIGlmIChlbCkgewogICAgICAgICAgICAgICAgICAgIC8vIGlmIGNhbnZhcyByZW5kZXJlcgogICAgICAgICAgICAgICAgICAgIGlmICgkLmpxcGxvdC51c2VfZXhjYW52YXMgJiYgd2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci51bmluaXRFbGVtZW50ICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5HX3ZtbENhbnZhc01hbmFnZXIudW5pbml0RWxlbWVudChlbC5nZXQoMCkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbC5lbXB0eUZvcmNlKCk7CiAgICAgICAgICAgICAgICAgICAgZWwgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIHQuX2VsZW0gPSBudWxsOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0ID0gbnVsbDsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdGhpcy5heGVzW25hbWVdLl9wbG90RGltZW5zaW9ucyA9IHRoaXMuX3Bsb3REaW1lbnNpb25zOwogICAgICAgICAgICAgICAgdGhpcy5heGVzW25hbWVdLl90aWNrcyA9IFtdOwogICAgICAgICAgICAgICAgLy8gdGhpcy5heGVzW25hbWVdLnJlbmRlcmVyLmluaXQuY2FsbCh0aGlzLmF4ZXNbbmFtZV0sIHt9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHRoaXMuc29ydERhdGEpIHsKICAgICAgICAgICAgICAgIHNvcnREYXRhKHRoaXMuc2VyaWVzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgdGhpcy5ncmlkLl9heGVzID0gdGhpcy5heGVzOwogICAgICAgICAgICAKICAgICAgICAgICAgdGhpcy5sZWdlbmQuX3NlcmllcyA9IHRoaXMuc2VyaWVzOwogICAgICAgIH07CiAgICAgICAgCiAgICAgICAgLy8gc29ydCB0aGUgc2VyaWVzIGRhdGEgaW4gaW5jcmVhc2luZyBvcmRlci4KICAgICAgICBmdW5jdGlvbiBzb3J0RGF0YShzZXJpZXMpIHsKICAgICAgICAgICAgdmFyIGQsIHNkLCBwZCwgcHBkLCByZXQ7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxzZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHZhciBjaGVjazsKICAgICAgICAgICAgICAgIHZhciBiYXQgPSBbc2VyaWVzW2ldLmRhdGEsIHNlcmllc1tpXS5fc3RhY2tEYXRhLCBzZXJpZXNbaV0uX3Bsb3REYXRhLCBzZXJpZXNbaV0uX3ByZXZQbG90RGF0YV07CiAgICAgICAgICAgICAgICBmb3IgKHZhciBuPTA7IG48NDsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgY2hlY2sgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIGQgPSBiYXRbbl07CiAgICAgICAgICAgICAgICAgICAgaWYgKHNlcmllc1tpXS5fc3RhY2tBeGlzID09ICd4JykgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGQubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YoZFtqXVsxXSkgIT0gIm51bWJlciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVjayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGVjaykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5zb3J0KGZ1bmN0aW9uKGEsYikgeyByZXR1cm4gYVsxXSAtIGJbMV07IH0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGQubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YoZFtqXVswXSkgIT0gIm51bWJlciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVjayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGVjaykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5zb3J0KGZ1bmN0aW9uKGEsYikgeyByZXR1cm4gYVswXSAtIGJbMF07IH0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdGhpcy5jb21wdXRlUGxvdERhdGEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5fcGxvdERhdGEgPSBbXTsKICAgICAgICAgICAgdGhpcy5fc3RhY2tEYXRhID0gW107CiAgICAgICAgICAgIHZhciBzZXJpZXMsCiAgICAgICAgICAgICAgICBpbmRleCwKICAgICAgICAgICAgICAgIGw7CgoKICAgICAgICAgICAgZm9yIChpbmRleD0wLCBsPXRoaXMuc2VyaWVzLmxlbmd0aDsgaW5kZXg8bDsgaW5kZXgrKykgewogICAgICAgICAgICAgICAgc2VyaWVzID0gdGhpcy5zZXJpZXNbaW5kZXhdOwogICAgICAgICAgICAgICAgdGhpcy5fcGxvdERhdGEucHVzaChbXSk7CiAgICAgICAgICAgICAgICB0aGlzLl9zdGFja0RhdGEucHVzaChbXSk7CiAgICAgICAgICAgICAgICB2YXIgY2QgPSBzZXJpZXMuZGF0YTsKICAgICAgICAgICAgICAgIHRoaXMuX3Bsb3REYXRhW2luZGV4XSA9ICQuZXh0ZW5kKHRydWUsIFtdLCBjZCk7CiAgICAgICAgICAgICAgICB0aGlzLl9zdGFja0RhdGFbaW5kZXhdID0gJC5leHRlbmQodHJ1ZSwgW10sIGNkKTsKICAgICAgICAgICAgICAgIHNlcmllcy5fcGxvdERhdGEgPSB0aGlzLl9wbG90RGF0YVtpbmRleF07CiAgICAgICAgICAgICAgICBzZXJpZXMuX3N0YWNrRGF0YSA9IHRoaXMuX3N0YWNrRGF0YVtpbmRleF07CiAgICAgICAgICAgICAgICB2YXIgcGxvdFZhbHVlcyA9IHt4OltdLCB5OltdfTsKCiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGFja1NlcmllcyAmJiAhc2VyaWVzLmRpc2FibGVTdGFjaykgewogICAgICAgICAgICAgICAgICAgIHNlcmllcy5fc3RhY2sgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgICAgICAgICAgICAgICAgIC8vIGhhdmUgdG8gY2hlY2sgZm9yIG51bGxzCiAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAgICAgICAgICAgICAgICAgdmFyIHNpZHggPSAoc2VyaWVzLl9zdGFja0F4aXMgPT09ICd4JykgPyAwIDogMTsKCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaz0wLCBjZGw9Y2QubGVuZ3RoOyBrPGNkbDsgaysrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZW1wID0gY2Rba11bc2lkeF07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Bsb3REYXRhW2luZGV4XVtrXVtzaWR4XSA9IHRlbXA7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YWNrRGF0YVtpbmRleF1ba11bc2lkeF0gPSB0ZW1wOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj1pbmRleDsgai0tOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcmV2dmFsID0gdGhpcy5fcGxvdERhdGFbal1ba11bc2lkeF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBuZWVkIHRvIHN1bSB1cCB0aGUgc3RhY2sgYXhpcyBjb2x1bW4gb2YgZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBvbmx5IHN1bSBpZiBpdCBpcyBvZiBzYW1lIHNpZ24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgcHJldmlvdXMgc2VyaWVzIGlzbid0IHNhbWUgc2lnbiwga2VlcCBsb29raW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXQgZWFybGllciBzZXJpZXMgdW50aWxsIHdlIGZpbmQgb25lIG9mIHNhbWUgc2lnbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVtcCAqIHByZXZ2YWwgPj0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wbG90RGF0YVtpbmRleF1ba11bc2lkeF0gKz0gcHJldnZhbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhY2tEYXRhW2luZGV4XVtrXVtzaWR4XSArPSBwcmV2dmFsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxzZXJpZXMuZGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICBwbG90VmFsdWVzLngucHVzaChzZXJpZXMuZGF0YVtpXVswXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHBsb3RWYWx1ZXMueS5wdXNoKHNlcmllcy5kYXRhW2ldWzFdKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhY2tEYXRhLnB1c2goc2VyaWVzLmRhdGEpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzW2luZGV4XS5fc3RhY2tEYXRhID0gc2VyaWVzLmRhdGE7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGxvdERhdGEucHVzaChzZXJpZXMuZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgc2VyaWVzLl9wbG90RGF0YSA9IHNlcmllcy5kYXRhOwogICAgICAgICAgICAgICAgICAgIHNlcmllcy5fcGxvdFZhbHVlcyA9IHBsb3RWYWx1ZXM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaW5kZXg+MCkgewogICAgICAgICAgICAgICAgICAgIHNlcmllcy5fcHJldlBsb3REYXRhID0gdGhpcy5zZXJpZXNbaW5kZXgtMV0uX3Bsb3REYXRhOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2VyaWVzLl9zdW15ID0gMDsKICAgICAgICAgICAgICAgIHNlcmllcy5fc3VteCA9IDA7CiAgICAgICAgICAgICAgICBmb3IgKGk9c2VyaWVzLmRhdGEubGVuZ3RoLTE7IGk+LTE7IGktLSkgewogICAgICAgICAgICAgICAgICAgIHNlcmllcy5fc3VteSArPSBzZXJpZXMuZGF0YVtpXVsxXTsKICAgICAgICAgICAgICAgICAgICBzZXJpZXMuX3N1bXggKz0gc2VyaWVzLmRhdGFbaV1bMF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgfTsKICAgICAgICAKICAgICAgICAvLyBwb3B1bGF0ZSB0aGUgX3N0YWNrRGF0YSBhbmQgX3Bsb3REYXRhIGFycmF5cyBmb3IgdGhlIHBsb3QgYW5kIHRoZSBzZXJpZXMuCiAgICAgICAgdGhpcy5wb3B1bGF0ZVBsb3REYXRhID0gZnVuY3Rpb24oc2VyaWVzLCBpbmRleCkgewogICAgICAgICAgICAvLyBpZiBhIHN0YWNrZWQgY2hhcnQsIGNvbXB1dGUgdGhlIHN0YWNrZWQgZGF0YQogICAgICAgICAgICB0aGlzLl9wbG90RGF0YSA9IFtdOwogICAgICAgICAgICB0aGlzLl9zdGFja0RhdGEgPSBbXTsKICAgICAgICAgICAgc2VyaWVzLl9zdGFja0RhdGEgPSBbXTsKICAgICAgICAgICAgc2VyaWVzLl9wbG90RGF0YSA9IFtdOwogICAgICAgICAgICB2YXIgcGxvdFZhbHVlcyA9IHt4OltdLCB5OltdfTsKICAgICAgICAgICAgaWYgKHRoaXMuc3RhY2tTZXJpZXMgJiYgIXNlcmllcy5kaXNhYmxlU3RhY2spIHsKICAgICAgICAgICAgICAgIHNlcmllcy5fc3RhY2sgPSB0cnVlOwogICAgICAgICAgICAgICAgdmFyIHNpZHggPSAoc2VyaWVzLl9zdGFja0F4aXMgPT09ICd4JykgPyAwIDogMTsKICAgICAgICAgICAgICAgIC8vIHZhciBpZHggPSBzaWR4ID8gMCA6IDE7CiAgICAgICAgICAgICAgICAvLyBwdXNoIHRoZSBjdXJyZW50IGRhdGEgaW50byBzdGFja0RhdGEKICAgICAgICAgICAgICAgIC8vdGhpcy5fc3RhY2tEYXRhLnB1c2godGhpcy5zZXJpZXNbaV0uZGF0YSk7CiAgICAgICAgICAgICAgICB2YXIgdGVtcCA9ICQuZXh0ZW5kKHRydWUsIFtdLCBzZXJpZXMuZGF0YSk7CiAgICAgICAgICAgICAgICAvLyBjcmVhdGUgdGhlIGRhdGEgdGhhdCB3aWxsIGJlIHBsb3R0ZWQgZm9yIHRoaXMgc2VyaWVzCiAgICAgICAgICAgICAgICB2YXIgcGxvdGRhdGEgPSAkLmV4dGVuZCh0cnVlLCBbXSwgc2VyaWVzLmRhdGEpOwogICAgICAgICAgICAgICAgdmFyIHRlbXB4LCB0ZW1weSwgZHZhbCwgc3RhY2t2YWwsIGNvbXBhcmF0b3I7CiAgICAgICAgICAgICAgICAvLyBmb3IgZmlyc3Qgc2VyaWVzLCBub3RoaW5nIHRvIGFkZCB0byBzdGFja0RhdGEuCiAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8aW5kZXg7IGorKykgewogICAgICAgICAgICAgICAgICAgIHZhciBjZCA9IHRoaXMuc2VyaWVzW2pdLmRhdGE7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaz0wOyBrPGNkLmxlbmd0aDsgaysrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGR2YWwgPSBjZFtrXTsKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcHggPSAoZHZhbFswXSAhPSBudWxsKSA/IGR2YWxbMF0gOiAwOwogICAgICAgICAgICAgICAgICAgICAgICB0ZW1weSA9IChkdmFsWzFdICE9IG51bGwpID8gZHZhbFsxXSA6IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBba11bMF0gKz0gdGVtcHg7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBba11bMV0gKz0gdGVtcHk7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrdmFsID0gKHNpZHgpID8gdGVtcHkgOiB0ZW1weDsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBuZWVkIHRvIHN1bSB1cCB0aGUgc3RhY2sgYXhpcyBjb2x1bW4gb2YgZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgb25seSBzdW0gaWYgaXQgaXMgb2Ygc2FtZSBzaWduLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VyaWVzLmRhdGFba11bc2lkeF0gKiBzdGFja3ZhbCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbG90ZGF0YVtrXVtzaWR4XSArPSBzdGFja3ZhbDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxwbG90ZGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHBsb3RWYWx1ZXMueC5wdXNoKHBsb3RkYXRhW2ldWzBdKTsKICAgICAgICAgICAgICAgICAgICBwbG90VmFsdWVzLnkucHVzaChwbG90ZGF0YVtpXVsxXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLl9wbG90RGF0YS5wdXNoKHBsb3RkYXRhKTsKICAgICAgICAgICAgICAgIHRoaXMuX3N0YWNrRGF0YS5wdXNoKHRlbXApOwogICAgICAgICAgICAgICAgc2VyaWVzLl9zdGFja0RhdGEgPSB0ZW1wOwogICAgICAgICAgICAgICAgc2VyaWVzLl9wbG90RGF0YSA9IHBsb3RkYXRhOwogICAgICAgICAgICAgICAgc2VyaWVzLl9wbG90VmFsdWVzID0gcGxvdFZhbHVlczsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxzZXJpZXMuZGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHBsb3RWYWx1ZXMueC5wdXNoKHNlcmllcy5kYXRhW2ldWzBdKTsKICAgICAgICAgICAgICAgICAgICBwbG90VmFsdWVzLnkucHVzaChzZXJpZXMuZGF0YVtpXVsxXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLl9zdGFja0RhdGEucHVzaChzZXJpZXMuZGF0YSk7CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc1tpbmRleF0uX3N0YWNrRGF0YSA9IHNlcmllcy5kYXRhOwogICAgICAgICAgICAgICAgdGhpcy5fcGxvdERhdGEucHVzaChzZXJpZXMuZGF0YSk7CiAgICAgICAgICAgICAgICBzZXJpZXMuX3Bsb3REYXRhID0gc2VyaWVzLmRhdGE7CiAgICAgICAgICAgICAgICBzZXJpZXMuX3Bsb3RWYWx1ZXMgPSBwbG90VmFsdWVzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpbmRleD4wKSB7CiAgICAgICAgICAgICAgICBzZXJpZXMuX3ByZXZQbG90RGF0YSA9IHRoaXMuc2VyaWVzW2luZGV4LTFdLl9wbG90RGF0YTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzZXJpZXMuX3N1bXkgPSAwOwogICAgICAgICAgICBzZXJpZXMuX3N1bXggPSAwOwogICAgICAgICAgICBmb3IgKGk9c2VyaWVzLmRhdGEubGVuZ3RoLTE7IGk+LTE7IGktLSkgewogICAgICAgICAgICAgICAgc2VyaWVzLl9zdW15ICs9IHNlcmllcy5kYXRhW2ldWzFdOwogICAgICAgICAgICAgICAgc2VyaWVzLl9zdW14ICs9IHNlcmllcy5kYXRhW2ldWzBdOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICAKICAgICAgICAvLyBmdW5jdGlvbiB0byBzYWZlbHkgcmV0dXJuIGNvbG9ycyBmcm9tIHRoZSBjb2xvciBhcnJheSBhbmQgd3JhcCBhcm91bmQgYXQgdGhlIGVuZC4KICAgICAgICB0aGlzLmdldE5leHRTZXJpZXNDb2xvciA9IChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHZhciBpZHggPSAwOwogICAgICAgICAgICB2YXIgc2MgPSB0LnNlcmllc0NvbG9yczsKICAgICAgICAgICAgCiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IAogICAgICAgICAgICAgICAgaWYgKGlkeCA8IHNjLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBzY1tpZHgrK107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZHggPSAwOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBzY1tpZHgrK107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgfSkodGhpcyk7CiAgICAKICAgICAgICB0aGlzLnBhcnNlT3B0aW9ucyA9IGZ1bmN0aW9uKG9wdGlvbnMpewogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5wcmVQYXJzZU9wdGlvbnNIb29rcy5ob29rcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgdGhpcy5wcmVQYXJzZU9wdGlvbnNIb29rcy5ob29rc1tpXS5jYWxsKHRoaXMsIG9wdGlvbnMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTwkLmpxcGxvdC5wcmVQYXJzZU9wdGlvbnNIb29rcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgJC5qcXBsb3QucHJlUGFyc2VPcHRpb25zSG9va3NbaV0uY2FsbCh0aGlzLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgdGhpcy5kZWZhdWx0cywgb3B0aW9ucyk7CiAgICAgICAgICAgIHZhciBvcHRzID0gdGhpcy5vcHRpb25zOwogICAgICAgICAgICB0aGlzLmFuaW1hdGUgPSBvcHRzLmFuaW1hdGU7CiAgICAgICAgICAgIHRoaXMuYW5pbWF0ZVJlcGxvdCA9IG9wdHMuYW5pbWF0ZVJlcGxvdDsKICAgICAgICAgICAgdGhpcy5zdGFja1NlcmllcyA9IG9wdHMuc3RhY2tTZXJpZXM7CiAgICAgICAgICAgIGlmICgkLmlzUGxhaW5PYmplY3Qob3B0cy5maWxsQmV0d2VlbikpIHsKCiAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IFsnc2VyaWVzMScsICdzZXJpZXMyJywgJ2NvbG9yJywgJ2Jhc2VTZXJpZXMnLCAnZmlsbCddLCAKICAgICAgICAgICAgICAgICAgICB0ZW1waTsKCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTAsIGw9dGVtcC5sZW5ndGg7IGk8bDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdGVtcGkgPSB0ZW1wW2ldOwogICAgICAgICAgICAgICAgICAgIGlmIChvcHRzLmZpbGxCZXR3ZWVuW3RlbXBpXSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsbEJldHdlZW5bdGVtcGldID0gb3B0cy5maWxsQmV0d2Vlblt0ZW1waV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAob3B0cy5zZXJpZXNDb2xvcnMpIHsKICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzQ29sb3JzID0gb3B0cy5zZXJpZXNDb2xvcnM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKG9wdHMubmVnYXRpdmVTZXJpZXNDb2xvcnMpIHsKICAgICAgICAgICAgICAgIHRoaXMubmVnYXRpdmVTZXJpZXNDb2xvcnMgPSBvcHRzLm5lZ2F0aXZlU2VyaWVzQ29sb3JzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChvcHRzLmNhcHR1cmVSaWdodENsaWNrKSB7CiAgICAgICAgICAgICAgICB0aGlzLmNhcHR1cmVSaWdodENsaWNrID0gb3B0cy5jYXB0dXJlUmlnaHRDbGljazsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLmRlZmF1bHRBeGlzU3RhcnQgPSAob3B0aW9ucyAmJiBvcHRpb25zLmRlZmF1bHRBeGlzU3RhcnQgIT0gbnVsbCkgPyBvcHRpb25zLmRlZmF1bHRBeGlzU3RhcnQgOiB0aGlzLmRlZmF1bHRBeGlzU3RhcnQ7CiAgICAgICAgICAgIHRoaXMuY29sb3JHZW5lcmF0b3Iuc2V0Q29sb3JzKHRoaXMuc2VyaWVzQ29sb3JzKTsKICAgICAgICAgICAgdGhpcy5uZWdhdGl2ZUNvbG9yR2VuZXJhdG9yLnNldENvbG9ycyh0aGlzLm5lZ2F0aXZlU2VyaWVzQ29sb3JzKTsKICAgICAgICAgICAgLy8gdmFyIGNnID0gbmV3IHRoaXMuY29sb3JHZW5lcmF0b3IodGhpcy5zZXJpZXNDb2xvcnMpOwogICAgICAgICAgICAvLyB2YXIgbmNnID0gbmV3IHRoaXMuY29sb3JHZW5lcmF0b3IodGhpcy5uZWdhdGl2ZVNlcmllc0NvbG9ycyk7CiAgICAgICAgICAgIC8vIHRoaXMuX2dyaWRQYWRkaW5nID0gdGhpcy5vcHRpb25zLmdyaWRQYWRkaW5nOwogICAgICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLl9ncmlkUGFkZGluZywgb3B0cy5ncmlkUGFkZGluZyk7CiAgICAgICAgICAgIHRoaXMuc29ydERhdGEgPSAob3B0cy5zb3J0RGF0YSAhPSBudWxsKSA/IG9wdHMuc29ydERhdGEgOiB0aGlzLnNvcnREYXRhOwogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8MTI7IGkrKykgewogICAgICAgICAgICAgICAgdmFyIG4gPSBfYXhpc05hbWVzW2ldOwogICAgICAgICAgICAgICAgdmFyIGF4aXMgPSB0aGlzLmF4ZXNbbl07CiAgICAgICAgICAgICAgICBheGlzLl9vcHRpb25zID0gJC5leHRlbmQodHJ1ZSwge30sIG9wdHMuYXhlc0RlZmF1bHRzLCBvcHRzLmF4ZXNbbl0pOwogICAgICAgICAgICAgICAgJC5leHRlbmQodHJ1ZSwgYXhpcywgb3B0cy5heGVzRGVmYXVsdHMsIG9wdHMuYXhlc1tuXSk7CiAgICAgICAgICAgICAgICBheGlzLl9wbG90V2lkdGggPSB0aGlzLl93aWR0aDsKICAgICAgICAgICAgICAgIGF4aXMuX3Bsb3RIZWlnaHQgPSB0aGlzLl9oZWlnaHQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gaWYgKHRoaXMuZGF0YS5sZW5ndGggPT0gMCkgewogICAgICAgICAgICAvLyAgICAgdGhpcy5kYXRhID0gW107CiAgICAgICAgICAgIC8vICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5vcHRpb25zLnNlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAvLyAgICAgICAgIHRoaXMuZGF0YS5wdXNoKHRoaXMub3B0aW9ucy5zZXJpZXMuZGF0YSk7CiAgICAgICAgICAgIC8vICAgICB9ICAgIAogICAgICAgICAgICAvLyB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgdmFyIG5vcm1hbGl6ZURhdGEgPSBmdW5jdGlvbihkYXRhLCBkaXIsIHN0YXJ0KSB7CiAgICAgICAgICAgICAgICAvLyByZXR1cm4gZGF0YSBhcyBhbiBhcnJheSBvZiBwb2ludCBhcnJheXMsCiAgICAgICAgICAgICAgICAvLyBpbiBmb3JtIFtbeDEseTEuLi5dLCBbeDIseTIuLi5dLCAuLi5dCiAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IFtdOwogICAgICAgICAgICAgICAgdmFyIGksIGw7CiAgICAgICAgICAgICAgICBkaXIgPSBkaXIgfHwgJ3ZlcnRpY2FsJzsKICAgICAgICAgICAgICAgIGlmICghJC5pc0FycmF5KGRhdGFbMF0pKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSBhIHNlcmllcyBvZiBzY2FsYXJzLiAgT25lIGxpbmUgd2l0aCBqdXN0IHkgdmFsdWVzLgogICAgICAgICAgICAgICAgICAgIC8vIHR1cm4gdGhlIHNjYWxhciBsaXN0IG9mIGRhdGEgaW50byBhIGRhdGEgYXJyYXkgb2YgZm9ybToKICAgICAgICAgICAgICAgICAgICAvLyBbWzEsIGRhdGFbMF1dLCBbMiwgZGF0YVsxXV0sIC4uLl0KICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MCwgbD1kYXRhLmxlbmd0aDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpciA9PSAndmVydGljYWwnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLnB1c2goW3N0YXJ0ICsgaSwgZGF0YVtpXV0pOyAgIAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5wdXNoKFtkYXRhW2ldLCBzdGFydCtpXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIGEgcHJvcGVybHkgZm9ybWF0dGVkIGRhdGEgc2VyaWVzLCBjb3B5IGl0LgogICAgICAgICAgICAgICAgICAgICQuZXh0ZW5kKHRydWUsIHRlbXAsIGRhdGEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHRlbXA7CiAgICAgICAgICAgIH07CgogICAgICAgICAgICB2YXIgY29sb3JJbmRleCA9IDA7CiAgICAgICAgICAgIHRoaXMuc2VyaWVzID0gW107CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHZhciBzb3B0cyA9ICQuZXh0ZW5kKHRydWUsIHtpbmRleDogaX0sIHtzZXJpZXNDb2xvcnM6dGhpcy5zZXJpZXNDb2xvcnMsIG5lZ2F0aXZlU2VyaWVzQ29sb3JzOnRoaXMubmVnYXRpdmVTZXJpZXNDb2xvcnN9LCB0aGlzLm9wdGlvbnMuc2VyaWVzRGVmYXVsdHMsIHRoaXMub3B0aW9ucy5zZXJpZXNbaV0sIHtyZW5kZXJlck9wdGlvbnM6e2FuaW1hdGlvbjp7c2hvdzogdGhpcy5hbmltYXRlfX19KTsKICAgICAgICAgICAgICAgIC8vIHBhc3MgaW4gb3B0aW9ucyBpbiBjYXNlIHNvbWV0aGluZyBuZWVkcyBzZXQgcHJpb3IgdG8gaW5pdGlhbGl6YXRpb24uCiAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IG5ldyBTZXJpZXMoc29wdHMpOwogICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPCQuanFwbG90LnByZVBhcnNlU2VyaWVzT3B0aW9uc0hvb2tzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgJC5qcXBsb3QucHJlUGFyc2VTZXJpZXNPcHRpb25zSG9va3Nbal0uY2FsbCh0ZW1wLCB0aGlzLm9wdGlvbnMuc2VyaWVzRGVmYXVsdHMsIHRoaXMub3B0aW9ucy5zZXJpZXNbaV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPHRoaXMucHJlUGFyc2VTZXJpZXNPcHRpb25zSG9va3MuaG9va3MubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnByZVBhcnNlU2VyaWVzT3B0aW9uc0hvb2tzLmhvb2tzW2pdLmNhbGwodGVtcCwgdGhpcy5vcHRpb25zLnNlcmllc0RlZmF1bHRzLCB0aGlzLm9wdGlvbnMuc2VyaWVzW2ldKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8vIE5vdyBnbyBiYWNrIGFuZCBhcHBseSB0aGUgb3B0aW9ucyB0byB0aGUgc2VyaWVzLiAgUmVhbGx5IHNob3VsZCBqdXN0IGRvIHRoaXMgZHVyaW5nIGluaXRpYWxpemFpdG9uLCBidXQgZG9uJ3Qgd2FudCB0bwogICAgICAgICAgICAgICAgLy8gbWVzcyB1cCBwcmVQYXJzZVNlcmllc09wdGlvbnNIb29rcyBhdCB0aGlzIHBvaW50LgogICAgICAgICAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGVtcCwgc29wdHMpOwogICAgICAgICAgICAgICAgdmFyIGRpciA9ICd2ZXJ0aWNhbCc7CiAgICAgICAgICAgICAgICBpZiAodGVtcC5yZW5kZXJlciA9PT0gJC5qcXBsb3QuQmFyUmVuZGVyZXIgJiYgdGVtcC5yZW5kZXJlck9wdGlvbnMgJiYgdGVtcC5yZW5kZXJlck9wdGlvbnMuYmFyRGlyZWN0aW9uID09ICdob3Jpem9udGFsJykgewogICAgICAgICAgICAgICAgICAgIGRpciA9ICdob3Jpem9udGFsJzsKICAgICAgICAgICAgICAgICAgICB0ZW1wLl9zdGFja0F4aXMgPSAneCc7CiAgICAgICAgICAgICAgICAgICAgdGVtcC5fcHJpbWFyeUF4aXMgPSAnX3lheGlzJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRlbXAuZGF0YSA9IG5vcm1hbGl6ZURhdGEodGhpcy5kYXRhW2ldLCBkaXIsIHRoaXMuZGVmYXVsdEF4aXNTdGFydCk7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRlbXAueGF4aXMpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICd4YXhpcyc6CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAuX3hheGlzID0gdGhpcy5heGVzLnhheGlzOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICd4MmF4aXMnOgogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLl94YXhpcyA9IHRoaXMuYXhlcy54MmF4aXM7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGVtcC5feWF4aXMgPSB0aGlzLmF4ZXNbdGVtcC55YXhpc107CiAgICAgICAgICAgICAgICB0ZW1wLl94YXhpcy5fc2VyaWVzLnB1c2godGVtcCk7CiAgICAgICAgICAgICAgICB0ZW1wLl95YXhpcy5fc2VyaWVzLnB1c2godGVtcCk7CiAgICAgICAgICAgICAgICBpZiAodGVtcC5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgdGVtcC5feGF4aXMuc2hvdyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgdGVtcC5feWF4aXMuc2hvdyA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGVtcC5feGF4aXMuc2NhbGVUb0hpZGRlblNlcmllcykgewogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLl94YXhpcy5zaG93ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAuX3lheGlzLnNjYWxlVG9IaWRkZW5TZXJpZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5feWF4aXMuc2hvdyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIC8vIHBhcnNlIHRoZSByZW5kZXJlciBvcHRpb25zIGFuZCBhcHBseSBkZWZhdWx0IGNvbG9ycyBpZiBub3QgcHJvdmlkZWQKICAgICAgICAgICAgICAgIC8vIGlmICghdGVtcC5jb2xvciAmJiB0ZW1wLnNob3cgIT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIC8vICAgICB0ZW1wLmNvbG9yID0gY2cubmV4dCgpOwogICAgICAgICAgICAgICAgLy8gICAgIGNvbG9ySW5kZXggPSBjZy5nZXRJbmRleCgpIC0gMTs7CiAgICAgICAgICAgICAgICAvLyB9CiAgICAgICAgICAgICAgICAvLyBpZiAoIXRlbXAubmVnYXRpdmVDb2xvciAmJiB0ZW1wLnNob3cgIT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIC8vICAgICB0ZW1wLm5lZ2F0aXZlQ29sb3IgPSBuY2cuZ2V0KGNvbG9ySW5kZXgpOwogICAgICAgICAgICAgICAgLy8gICAgIG5jZy5zZXRJbmRleChjb2xvckluZGV4KTsKICAgICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgICAgIGlmICghdGVtcC5sYWJlbCkgewogICAgICAgICAgICAgICAgICAgIHRlbXAubGFiZWwgPSAnU2VyaWVzICcrIChpKzEpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyB0ZW1wLnJlbmRlcmVyT3B0aW9ucy5zaG93ID0gdGVtcC5zaG93OwogICAgICAgICAgICAgICAgLy8gJC5leHRlbmQodHJ1ZSwgdGVtcC5yZW5kZXJlciwge2NvbG9yOnRoaXMuc2VyaWVzQ29sb3JzW2ldfSwgdGhpcy5yZW5kZXJlck9wdGlvbnMpOwogICAgICAgICAgICAgICAgdGhpcy5zZXJpZXMucHVzaCh0ZW1wKTsgIAogICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPCQuanFwbG90LnBvc3RQYXJzZVNlcmllc09wdGlvbnNIb29rcy5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgICAgICQuanFwbG90LnBvc3RQYXJzZVNlcmllc09wdGlvbnNIb29rc1tqXS5jYWxsKHRoaXMuc2VyaWVzW2ldLCB0aGlzLm9wdGlvbnMuc2VyaWVzRGVmYXVsdHMsIHRoaXMub3B0aW9ucy5zZXJpZXNbaV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPHRoaXMucG9zdFBhcnNlU2VyaWVzT3B0aW9uc0hvb2tzLmhvb2tzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3N0UGFyc2VTZXJpZXNPcHRpb25zSG9va3MuaG9va3Nbal0uY2FsbCh0aGlzLnNlcmllc1tpXSwgdGhpcy5vcHRpb25zLnNlcmllc0RlZmF1bHRzLCB0aGlzLm9wdGlvbnMuc2VyaWVzW2ldKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gY29weSB0aGUgZ3JpZCBhbmQgdGl0bGUgb3B0aW9ucyBpbnRvIHRoaXMgb2JqZWN0LgogICAgICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLmdyaWQsIHRoaXMub3B0aW9ucy5ncmlkKTsKICAgICAgICAgICAgLy8gaWYgYXhpcyBib3JkZXIgcHJvcGVydGllcyBhcmVuJ3Qgc2V0LCBzZXQgZGVmYXVsdC4KICAgICAgICAgICAgZm9yICh2YXIgaT0wLCBsPV9heGlzTmFtZXMubGVuZ3RoOyBpPGw7IGkrKykgewogICAgICAgICAgICAgICAgdmFyIG4gPSBfYXhpc05hbWVzW2ldOwogICAgICAgICAgICAgICAgdmFyIGF4aXMgPSB0aGlzLmF4ZXNbbl07CiAgICAgICAgICAgICAgICBpZiAoYXhpcy5ib3JkZXJXaWR0aCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgYXhpcy5ib3JkZXJXaWR0aCA9dGhpcy5ncmlkLmJvcmRlcldpZHRoOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy50aXRsZSA9PSAnc3RyaW5nJykgewogICAgICAgICAgICAgICAgdGhpcy50aXRsZS50ZXh0ID0gdGhpcy5vcHRpb25zLnRpdGxlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMudGl0bGUgPT0gJ29iamVjdCcpIHsKICAgICAgICAgICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMudGl0bGUsIHRoaXMub3B0aW9ucy50aXRsZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy50aXRsZS5fcGxvdFdpZHRoID0gdGhpcy5fd2lkdGg7CiAgICAgICAgICAgIHRoaXMubGVnZW5kLnNldE9wdGlvbnModGhpcy5vcHRpb25zLmxlZ2VuZCk7CiAgICAgICAgICAgIAogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8JC5qcXBsb3QucG9zdFBhcnNlT3B0aW9uc0hvb2tzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAkLmpxcGxvdC5wb3N0UGFyc2VPcHRpb25zSG9va3NbaV0uY2FsbCh0aGlzLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5wb3N0UGFyc2VPcHRpb25zSG9va3MuaG9va3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHRoaXMucG9zdFBhcnNlT3B0aW9uc0hvb2tzLmhvb2tzW2ldLmNhbGwodGhpcywgb3B0aW9ucyk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIAogICAgICAgIC8vIG1ldGhvZDogZGVzdHJveQogICAgICAgIC8vIFJlbGVhc2VzIGFsbCByZXNvdXJjZXMgb2NjdXBpZWQgYnkgdGhlIHBsb3QKICAgICAgICB0aGlzLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5jYW52YXNNYW5hZ2VyLmZyZWVBbGxDYW52YXNlcygpOwogICAgICAgICAgICBpZiAodGhpcy5ldmVudENhbnZhcyAmJiB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtKSB7CiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLnVuYmluZCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIENvdXBsZSBvZiBwb3N0cyBvbiBTdGFjayBPdmVyZmxvdyBpbmRpY2F0ZSB0aGF0IGVtcHR5KCkgZG9lc24ndAogICAgICAgICAgICAvLyBhbHdheXMgY2VhciB1cCB0aGUgZG9tIGFuZCByZWxlYXNlIG1lbW9yeS4gIFNvbWV0aW1lcyBzZXR0aW5nCiAgICAgICAgICAgIC8vIGlubmVySFRNTCBwcm9wZXJ0eSB0byBudWxsIGlzIG5lZWRlZC4gIFBhcnRpY3VsYXJseSBvbiBJRSwgbWF5IAogICAgICAgICAgICAvLyBoYXZlIHRvIGRpcmVjdGx5IHNldCBpdCB0byBudWxsLCBieXBhc3NpbmcgJC4KICAgICAgICAgICAgdGhpcy50YXJnZXQuZW1wdHkoKTsKCiAgICAgICAgICAgIHRoaXMudGFyZ2V0WzBdLmlubmVySFRNTCA9ICcnOwogICAgICAgIH07CiAgICAgICAgCiAgICAgICAgLy8gbWV0aG9kOiByZXBsb3QKICAgICAgICAvLyBEb2VzIGEgcmVpbml0aWFsaXphdGlvbiBvZiB0aGUgcGxvdCBmb2xsb3dlZCBieQogICAgICAgIC8vIGEgcmVkcmF3LiAgTWV0aG9kIGNvdWxkIGJlIHVzZWQgdG8gaW50ZXJhY3RpdmVseQogICAgICAgIC8vIGNoYW5nZSBwbG90IGNoYXJhY3RlcmlzdGljcyBhbmQgdGhlbiByZXBsb3QuCiAgICAgICAgLy8KICAgICAgICAvLyBQYXJhbWV0ZXJzOgogICAgICAgIC8vIG9wdGlvbnMgLSBPcHRpb25zIHVzZWQgZm9yIHJlcGxvdHRpbmcuCiAgICAgICAgLy8KICAgICAgICAvLyBQcm9wZXJ0aWVzOgogICAgICAgIC8vIGNsZWFyIC0gZmFsc2UgdG8gbm90IGNsZWFyIChlbXB0eSkgdGhlIHBsb3QgY29udGFpbmVyIGJlZm9yZSByZXBsb3R0aW5nIChkZWZhdWx0OiB0cnVlKS4KICAgICAgICAvLyByZXNldEF4ZXMgLSB0cnVlIHRvIHJlc2V0IGFsbCBheGVzIG1pbiwgbWF4LCBudW1iZXJUaWNrcyBhbmQgdGlja0ludGVydmFsIHNldHRpbmcgc28gYXhlcyB3aWxsIHJlc2NhbGUgdGhlbXNlbHZlcy4KICAgICAgICAvLyAgICAgICAgICAgICBvcHRpb25hbGx5IHBhc3MgaW4gbGlzdCBvZiBheGVzIHRvIHJlc2V0IChlLmcuIFsneGF4aXMnLCAneTJheGlzJ10pIChkZWZhdWx0OiBmYWxzZSkuCiAgICAgICAgdGhpcy5yZXBsb3QgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgICAgIHZhciBvcHRzID0gIG9wdGlvbnMgfHwge307CiAgICAgICAgICAgIHZhciBkYXRhID0gb3B0cy5kYXRhIHx8IG51bGw7CiAgICAgICAgICAgIHZhciBjbGVhciA9IChvcHRzLmNsZWFyID09PSBmYWxzZSkgPyBmYWxzZSA6IHRydWU7CiAgICAgICAgICAgIHZhciByZXNldEF4ZXMgPSBvcHRzLnJlc2V0QXhlcyB8fCBmYWxzZTsKICAgICAgICAgICAgZGVsZXRlIG9wdHMuZGF0YTsKICAgICAgICAgICAgZGVsZXRlIG9wdHMuY2xlYXI7CiAgICAgICAgICAgIGRlbGV0ZSBvcHRzLnJlc2V0QXhlczsKCiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRyaWdnZXIoJ2pxcGxvdFByZVJlcGxvdCcpOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGNsZWFyKSB7CiAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBpZiBoYXZlIGRhdGEgb3Igb3RoZXIgb3B0aW9ucywgZnVsbCByZWluaXQuCiAgICAgICAgICAgIC8vIG90aGVyd2lzZSwgcXVpY2tpbml0LgogICAgICAgICAgICBpZiAoZGF0YSB8fCAhJC5pc0VtcHR5T2JqZWN0KG9wdHMpKSB7CiAgICAgICAgICAgICAgICB0aGlzLnJlSW5pdGlhbGl6ZShkYXRhLCBvcHRzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMucXVpY2tJbml0KCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChyZXNldEF4ZXMpIHsKICAgICAgICAgICAgICAgIHRoaXMucmVzZXRBeGVzU2NhbGUocmVzZXRBeGVzLCBvcHRzLmF4ZXMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuZHJhdygpOwogICAgICAgICAgICB0aGlzLnRhcmdldC50cmlnZ2VyKCdqcXBsb3RQb3N0UmVwbG90Jyk7CiAgICAgICAgfTsKICAgICAgICAKICAgICAgICAvLyBtZXRob2Q6IHJlZHJhdwogICAgICAgIC8vIEVtcHRpZXMgdGhlIHBsb3QgdGFyZ2V0IGRpdiBhbmQgcmVkcmF3cyB0aGUgcGxvdC4KICAgICAgICAvLyBUaGlzIGVuYWJsZXMgcGxvdCBkYXRhIGFuZCBwcm9wZXJ0aWVzIHRvIGJlIGNoYW5nZWQKICAgICAgICAvLyBhbmQgdGhlbiB0byBjb21sZXRlbHkgY2xlYXIgdGhlIHBsb3QgYW5kIHJlZHJhdy4KICAgICAgICAvLyByZWRyYXcgKndpbGwgbm90KiByZWluaXRpYWxpemUgYW55IHBsb3QgZWxlbWVudHMuCiAgICAgICAgLy8gVGhhdCBpcywgYXhlcyB3aWxsIG5vdCBiZSBhdXRvc2NhbGVkIGFuZCBkZWZhdWx0cwogICAgICAgIC8vIHdpbGwgbm90IGJlIHJlYXBwbGllZCB0byBhbnkgcGxvdCBlbGVtZW50cy4gIHJlZHJhdwogICAgICAgIC8vIGlzIHVzZWQgcHJpbWFyaWx5IHdpdGggem9vbWluZy4gCiAgICAgICAgLy8KICAgICAgICAvLyBQYXJhbWV0ZXJzOgogICAgICAgIC8vIGNsZWFyIC0gZmFsc2UgdG8gbm90IGNsZWFyIChlbXB0eSkgdGhlIHBsb3QgY29udGFpbmVyIGJlZm9yZSByZWRyYXdpbmcgKGRlZmF1bHQ6IHRydWUpLgogICAgICAgIHRoaXMucmVkcmF3ID0gZnVuY3Rpb24oY2xlYXIpIHsKICAgICAgICAgICAgY2xlYXIgPSAoY2xlYXIgIT0gbnVsbCkgPyBjbGVhciA6IHRydWU7CiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRyaWdnZXIoJ2pxcGxvdFByZVJlZHJhdycpOwogICAgICAgICAgICBpZiAoY2xlYXIpIHsKICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzTWFuYWdlci5mcmVlQWxsQ2FudmFzZXMoKTsKICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0udW5iaW5kKCk7CiAgICAgICAgICAgICAgICAvLyBEb250IHRoaW5rIEkgYmluZCBhbnkgZXZlbnRzIHRvIHRoZSB0YXJnZXQsIHRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeS4KICAgICAgICAgICAgICAgIC8vIEl0IHdpbGwgcmVtb3ZlIHVzZXIncyBldmVudHMuCiAgICAgICAgICAgICAgICAvLyB0aGlzLnRhcmdldC51bmJpbmQoKTsKICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LmVtcHR5KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAodmFyIGF4IGluIHRoaXMuYXhlcykgewogICAgICAgICAgICAgICAgdGhpcy5heGVzW2F4XS5fdGlja3MgPSBbXTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLmNvbXB1dGVQbG90RGF0YSgpOwogICAgICAgICAgICAvLyBmb3IgKHZhciBpPTA7IGk8dGhpcy5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgLy8gICAgIHRoaXMucG9wdWxhdGVQbG90RGF0YSh0aGlzLnNlcmllc1tpXSwgaSk7CiAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgdGhpcy5fc3VteSA9IDA7CiAgICAgICAgICAgIHRoaXMuX3N1bXggPSAwOwogICAgICAgICAgICBmb3IgKHZhciBpPTAsIHRzbCA9IHRoaXMuc2VyaWVzLmxlbmd0aDsgaTx0c2w7IGkrKykgewogICAgICAgICAgICAgICAgdGhpcy5fc3VteSArPSB0aGlzLnNlcmllc1tpXS5fc3VteTsKICAgICAgICAgICAgICAgIHRoaXMuX3N1bXggKz0gdGhpcy5zZXJpZXNbaV0uX3N1bXg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5kcmF3KCk7CiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRyaWdnZXIoJ2pxcGxvdFBvc3RSZWRyYXcnKTsKICAgICAgICB9OwogICAgICAgIAogICAgICAgIC8vIG1ldGhvZDogZHJhdwogICAgICAgIC8vIERyYXdzIGFsbCBlbGVtZW50cyBvZiB0aGUgcGxvdCBpbnRvIHRoZSBjb250YWluZXIuCiAgICAgICAgLy8gRG9lcyBub3QgY2xlYXIgdGhlIGNvbnRhaW5lciBiZWZvcmUgZHJhd2luZy4KICAgICAgICB0aGlzLmRyYXcgPSBmdW5jdGlvbigpewogICAgICAgICAgICBpZiAodGhpcy5kcmF3SWZIaWRkZW4gfHwgdGhpcy50YXJnZXQuaXMoJzp2aXNpYmxlJykpIHsKICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRyaWdnZXIoJ2pxcGxvdFByZURyYXcnKTsKICAgICAgICAgICAgICAgIHZhciBpLAogICAgICAgICAgICAgICAgICAgIGosCiAgICAgICAgICAgICAgICAgICAgbCwKICAgICAgICAgICAgICAgICAgICB0ZW1wc2VyaWVzOwogICAgICAgICAgICAgICAgZm9yIChpPTAsIGw9JC5qcXBsb3QucHJlRHJhd0hvb2tzLmxlbmd0aDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAkLmpxcGxvdC5wcmVEcmF3SG9va3NbaV0uY2FsbCh0aGlzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAoaT0wLCBsPXRoaXMucHJlRHJhd0hvb2tzLmhvb2tzLmxlbmd0aDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnByZURyYXdIb29rcy5ob29rc1tpXS5hcHBseSh0aGlzLCB0aGlzLnByZURyYXdTZXJpZXNIb29rcy5hcmdzW2ldKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBhbiB1bmRlcmx5aW5nIGNhbnZhcyB0byBiZSB1c2VkIGZvciBzcGVjaWFsIGZlYXR1cmVzLgogICAgICAgICAgICAgICAgdGhpcy50YXJnZXQuYXBwZW5kKHRoaXMuYmFzZUNhbnZhcy5jcmVhdGVFbGVtZW50KHtsZWZ0OjAsIHJpZ2h0OjAsIHRvcDowLCBib3R0b206MH0sICdqcXBsb3QtYmFzZS1jYW52YXMnLCBudWxsLCB0aGlzKSk7CiAgICAgICAgICAgICAgICB0aGlzLmJhc2VDYW52YXMuc2V0Q29udGV4dCgpOwogICAgICAgICAgICAgICAgdGhpcy50YXJnZXQuYXBwZW5kKHRoaXMudGl0bGUuZHJhdygpKTsKICAgICAgICAgICAgICAgIHRoaXMudGl0bGUucGFjayh7dG9wOjAsIGxlZnQ6MH0pOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBtYWtlIHJvb20gIGZvciB0aGUgbGVnZW5kIGJldHdlZW4gdGhlIGdyaWQgYW5kIHRoZSBlZGdlLgogICAgICAgICAgICAgICAgLy8gcGFzcyBhIGR1bW15IG9mZnNldHMgb2JqZWN0IGFuZCBhIHJlZmVyZW5jZSB0byB0aGUgcGxvdC4KICAgICAgICAgICAgICAgIHZhciBsZWdlbmRFbGVtID0gdGhpcy5sZWdlbmQuZHJhdyh7fSwgdGhpcyk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBncmlkUGFkZGluZyA9IHt0b3A6MCwgbGVmdDowLCBib3R0b206MCwgcmlnaHQ6MH07CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmICh0aGlzLmxlZ2VuZC5wbGFjZW1lbnQgPT0gIm91dHNpZGVHcmlkIikgewogICAgICAgICAgICAgICAgICAgIC8vIHRlbXBvcmFyaWx5IGFwcGVuZCB0aGUgbGVnZW5kIHRvIGdldCBkaW1lbnNpb25zCiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXQuYXBwZW5kKGxlZ2VuZEVsZW0pOwogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5sZWdlbmQubG9jYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbic6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkUGFkZGluZy50b3AgKz0gdGhpcy5sZWdlbmQuZ2V0SGVpZ2h0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkUGFkZGluZy5ib3R0b20gKz0gdGhpcy5sZWdlbmQuZ2V0SGVpZ2h0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmUnOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdlJzoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2UnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZFBhZGRpbmcucmlnaHQgKz0gdGhpcy5sZWdlbmQuZ2V0V2lkdGgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdudyc6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3cnOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkUGFkZGluZy5sZWZ0ICs9IHRoaXMubGVnZW5kLmdldFdpZHRoKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogIC8vIHNhbWUgYXMgJ25lJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZFBhZGRpbmcucmlnaHQgKz0gdGhpcy5sZWdlbmQuZ2V0V2lkdGgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBsZWdlbmRFbGVtID0gbGVnZW5kRWxlbS5kZXRhY2goKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGF4ID0gdGhpcy5heGVzOwogICAgICAgICAgICAgICAgdmFyIG5hbWU7CiAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSB5TWlkQXhpcyBmaXJzdCwgc28geGF4aXMgb2YgcHlyYW1pZCBjaGFydCBjYW4gYWRqdXN0IGl0c2VsZiBpZiBuZWVkZWQuCiAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTwxMjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IF9heGlzTmFtZXNbaV07CiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXQuYXBwZW5kKGF4W25hbWVdLmRyYXcodGhpcy5iYXNlQ2FudmFzLl9jdHgsIHRoaXMpKTsKICAgICAgICAgICAgICAgICAgICBheFtuYW1lXS5zZXQoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChheC55YXhpcy5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgZ3JpZFBhZGRpbmcubGVmdCArPSBheC55YXhpcy5nZXRXaWR0aCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHJhID0gWyd5MmF4aXMnLCAneTNheGlzJywgJ3k0YXhpcycsICd5NWF4aXMnLCAneTZheGlzJywgJ3k3YXhpcycsICd5OGF4aXMnLCAneTlheGlzJ107CiAgICAgICAgICAgICAgICB2YXIgcmFwYWQgPSBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF07CiAgICAgICAgICAgICAgICB2YXIgZ3ByID0gMDsKICAgICAgICAgICAgICAgIHZhciBuOwogICAgICAgICAgICAgICAgZm9yIChuPTA7IG48ODsgbisrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGF4W3JhW25dXS5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGdwciArPSBheFtyYVtuXV0uZ2V0V2lkdGgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmFwYWRbbl0gPSBncHI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ3JpZFBhZGRpbmcucmlnaHQgKz0gZ3ByOwogICAgICAgICAgICAgICAgaWYgKGF4LngyYXhpcy5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgZ3JpZFBhZGRpbmcudG9wICs9IGF4LngyYXhpcy5nZXRIZWlnaHQoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpdGxlLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICBncmlkUGFkZGluZy50b3AgKz0gdGhpcy50aXRsZS5nZXRIZWlnaHQoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChheC54YXhpcy5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgZ3JpZFBhZGRpbmcuYm90dG9tICs9IGF4LnhheGlzLmdldEhlaWdodCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBlbmQgb2YgZ3JpZFBhZGRpbmcgYWRqdXN0bWVudHMuCgogICAgICAgICAgICAgICAgLy8gaWYgdXNlciBwYXNzZWQgaW4gZ3JpZERpbWVuc2lvbnMgb3B0aW9uLCBjaGVjayBhZ2FpbnN0IGNhbGN1bGF0ZWQgZ3JpZFBhZGRpbmcKICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZ3JpZERpbWVuc2lvbnMgJiYgJC5pc1BsYWluT2JqZWN0KHRoaXMub3B0aW9ucy5ncmlkRGltZW5zaW9ucykpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZ2R3ID0gcGFyc2VJbnQodGhpcy5vcHRpb25zLmdyaWREaW1lbnNpb25zLndpZHRoLCAxMCkgfHwgMDsKICAgICAgICAgICAgICAgICAgICB2YXIgZ2RoID0gcGFyc2VJbnQodGhpcy5vcHRpb25zLmdyaWREaW1lbnNpb25zLmhlaWdodCwgMTApIHx8IDA7CiAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoQWRqID0gKHRoaXMuX3dpZHRoIC0gZ3JpZFBhZGRpbmcubGVmdCAtIGdyaWRQYWRkaW5nLnJpZ2h0IC0gZ2R3KS8yOwogICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHRBZGogPSAodGhpcy5faGVpZ2h0IC0gZ3JpZFBhZGRpbmcudG9wIC0gZ3JpZFBhZGRpbmcuYm90dG9tIC0gZ2RoKS8yOwoKICAgICAgICAgICAgICAgICAgICBpZiAoaGVpZ2h0QWRqID49IDAgJiYgd2lkdGhBZGogPj0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBncmlkUGFkZGluZy50b3AgKz0gaGVpZ2h0QWRqOwogICAgICAgICAgICAgICAgICAgICAgICBncmlkUGFkZGluZy5ib3R0b20gKz0gaGVpZ2h0QWRqOwogICAgICAgICAgICAgICAgICAgICAgICBncmlkUGFkZGluZy5sZWZ0ICs9IHdpZHRoQWRqOwogICAgICAgICAgICAgICAgICAgICAgICBncmlkUGFkZGluZy5yaWdodCArPSB3aWR0aEFkajsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgYXJyID0gWyd0b3AnLCAnYm90dG9tJywgJ2xlZnQnLCAncmlnaHQnXTsKICAgICAgICAgICAgICAgIGZvciAodmFyIG4gaW4gYXJyKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2dyaWRQYWRkaW5nW2FycltuXV0gPT0gbnVsbCAmJiBncmlkUGFkZGluZ1thcnJbbl1dID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9ncmlkUGFkZGluZ1thcnJbbl1dID0gZ3JpZFBhZGRpbmdbYXJyW25dXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5fZ3JpZFBhZGRpbmdbYXJyW25dXSA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2dyaWRQYWRkaW5nW2FycltuXV0gPSB0aGlzLl9kZWZhdWx0R3JpZFBhZGRpbmdbYXJyW25dXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBsZWdlbmRQYWRkaW5nID0gdGhpcy5fZ3JpZFBhZGRpbmc7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmICh0aGlzLmxlZ2VuZC5wbGFjZW1lbnQgPT09ICdvdXRzaWRlR3JpZCcpIHsKICAgICAgICAgICAgICAgICAgICBsZWdlbmRQYWRkaW5nID0ge3RvcDp0aGlzLnRpdGxlLmdldEhlaWdodCgpLCBsZWZ0OiAwLCByaWdodDogMCwgYm90dG9tOiAwfTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sZWdlbmQubG9jYXRpb24gPT09ICdzJykgewogICAgICAgICAgICAgICAgICAgICAgICBsZWdlbmRQYWRkaW5nLmxlZnQgPSB0aGlzLl9ncmlkUGFkZGluZy5sZWZ0OwogICAgICAgICAgICAgICAgICAgICAgICBsZWdlbmRQYWRkaW5nLnJpZ2h0ID0gdGhpcy5fZ3JpZFBhZGRpbmcucmlnaHQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBheC54YXhpcy5wYWNrKHtwb3NpdGlvbjonYWJzb2x1dGUnLCBib3R0b206dGhpcy5fZ3JpZFBhZGRpbmcuYm90dG9tIC0gYXgueGF4aXMuZ2V0SGVpZ2h0KCksIGxlZnQ6MCwgd2lkdGg6dGhpcy5fd2lkdGh9LCB7bWluOnRoaXMuX2dyaWRQYWRkaW5nLmxlZnQsIG1heDp0aGlzLl93aWR0aCAtIHRoaXMuX2dyaWRQYWRkaW5nLnJpZ2h0fSk7CiAgICAgICAgICAgICAgICBheC55YXhpcy5wYWNrKHtwb3NpdGlvbjonYWJzb2x1dGUnLCB0b3A6MCwgbGVmdDp0aGlzLl9ncmlkUGFkZGluZy5sZWZ0IC0gYXgueWF4aXMuZ2V0V2lkdGgoKSwgaGVpZ2h0OnRoaXMuX2hlaWdodH0sIHttaW46dGhpcy5faGVpZ2h0IC0gdGhpcy5fZ3JpZFBhZGRpbmcuYm90dG9tLCBtYXg6IHRoaXMuX2dyaWRQYWRkaW5nLnRvcH0pOwogICAgICAgICAgICAgICAgYXgueDJheGlzLnBhY2soe3Bvc2l0aW9uOidhYnNvbHV0ZScsIHRvcDp0aGlzLl9ncmlkUGFkZGluZy50b3AgLSBheC54MmF4aXMuZ2V0SGVpZ2h0KCksIGxlZnQ6MCwgd2lkdGg6dGhpcy5fd2lkdGh9LCB7bWluOnRoaXMuX2dyaWRQYWRkaW5nLmxlZnQsIG1heDp0aGlzLl93aWR0aCAtIHRoaXMuX2dyaWRQYWRkaW5nLnJpZ2h0fSk7CiAgICAgICAgICAgICAgICBmb3IgKGk9ODsgaT4wOyBpLS0pIHsKICAgICAgICAgICAgICAgICAgICBheFtyYVtpLTFdXS5wYWNrKHtwb3NpdGlvbjonYWJzb2x1dGUnLCB0b3A6MCwgcmlnaHQ6dGhpcy5fZ3JpZFBhZGRpbmcucmlnaHQgLSByYXBhZFtpLTFdfSwge21pbjp0aGlzLl9oZWlnaHQgLSB0aGlzLl9ncmlkUGFkZGluZy5ib3R0b20sIG1heDogdGhpcy5fZ3JpZFBhZGRpbmcudG9wfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgbHRlbXAgPSAodGhpcy5fd2lkdGggLSB0aGlzLl9ncmlkUGFkZGluZy5sZWZ0IC0gdGhpcy5fZ3JpZFBhZGRpbmcucmlnaHQpLzIuMCArIHRoaXMuX2dyaWRQYWRkaW5nLmxlZnQgLSBheC55TWlkQXhpcy5nZXRXaWR0aCgpLzIuMDsKICAgICAgICAgICAgICAgIGF4LnlNaWRBeGlzLnBhY2soe3Bvc2l0aW9uOidhYnNvbHV0ZScsIHRvcDowLCBsZWZ0Omx0ZW1wLCB6SW5kZXg6OSwgdGV4dEFsaWduOiAnY2VudGVyJ30sIHttaW46dGhpcy5faGVpZ2h0IC0gdGhpcy5fZ3JpZFBhZGRpbmcuYm90dG9tLCBtYXg6IHRoaXMuX2dyaWRQYWRkaW5nLnRvcH0pOwogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LmFwcGVuZCh0aGlzLmdyaWQuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywgdGhpcykpOwogICAgICAgICAgICAgICAgdGhpcy5ncmlkLmRyYXcoKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIHNlcmllcyA9IHRoaXMuc2VyaWVzOwogICAgICAgICAgICAgICAgdmFyIHNlcmllc0xlbmd0aCA9IHNlcmllcy5sZW5ndGg7CiAgICAgICAgICAgICAgICAvLyBwdXQgdGhlIHNoYWRvdyBjYW52YXNlcyBiZWhpbmQgdGhlIHNlcmllcyBjYW52YXNlcyBzbyBzaGFkb3dzIGRvbid0IG92ZXJsYXAgb24gc3RhY2tlZCBiYXJzLgogICAgICAgICAgICAgICAgZm9yIChpPTAsIGw9c2VyaWVzTGVuZ3RoOyBpPGw7IGkrKykgewogICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgc2VyaWVzIGluIG9yZGVyIG9mIHN0YWNraW5nLiAgVGhpcyBhZmZlY3RzIG9ubHkKICAgICAgICAgICAgICAgICAgICAvLyBvcmRlciBpbiB3aGljaCBjYW52YXNlcyBhcmUgYWRkZWQgdG8gZG9tLgogICAgICAgICAgICAgICAgICAgIGogPSB0aGlzLnNlcmllc1N0YWNrW2ldOwogICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LmFwcGVuZChzZXJpZXNbal0uc2hhZG93Q2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsICdqcXBsb3Qtc2VyaWVzLXNoYWRvd0NhbnZhcycsIG51bGwsIHRoaXMpKTsKICAgICAgICAgICAgICAgICAgICBzZXJpZXNbal0uc2hhZG93Q2FudmFzLnNldENvbnRleHQoKTsKICAgICAgICAgICAgICAgICAgICBzZXJpZXNbal0uc2hhZG93Q2FudmFzLl9lbGVtLmRhdGEoJ3Nlcmllc0luZGV4Jywgaik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGZvciAoaT0wLCBsPXNlcmllc0xlbmd0aDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAvLyBkcmF3IHNlcmllcyBpbiBvcmRlciBvZiBzdGFja2luZy4gIFRoaXMgYWZmZWN0cyBvbmx5CiAgICAgICAgICAgICAgICAgICAgLy8gb3JkZXIgaW4gd2hpY2ggY2FudmFzZXMgYXJlIGFkZGVkIHRvIGRvbS4KICAgICAgICAgICAgICAgICAgICBqID0gdGhpcy5zZXJpZXNTdGFja1tpXTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldC5hcHBlbmQoc2VyaWVzW2pdLmNhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCAnanFwbG90LXNlcmllcy1jYW52YXMnLCBudWxsLCB0aGlzKSk7CiAgICAgICAgICAgICAgICAgICAgc2VyaWVzW2pdLmNhbnZhcy5zZXRDb250ZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgc2VyaWVzW2pdLmNhbnZhcy5fZWxlbS5kYXRhKCdzZXJpZXNJbmRleCcsIGopOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gTmVlZCB0byB1c2UgZmlsbGVkIGNhbnZhcyB0byBjYXB0dXJlIGV2ZW50cyBpbiBJRS4KICAgICAgICAgICAgICAgIC8vIEFsc28sIGNhbnZhcyBzZWVtcyB0byBibG9jayBzZWxlY3Rpb24gb2Ygb3RoZXIgZWxlbWVudHMgaW4gZG9jdW1lbnQgb24gRkYuCiAgICAgICAgICAgICAgICB0aGlzLnRhcmdldC5hcHBlbmQodGhpcy5ldmVudENhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCAnanFwbG90LWV2ZW50LWNhbnZhcycsIG51bGwsIHRoaXMpKTsKICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuc2V0Q29udGV4dCgpOwogICAgICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fY3R4LmZpbGxTdHlsZSA9ICdyZ2JhKDAsMCwwLDApJzsKICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2N0eC5maWxsUmVjdCgwLDAsdGhpcy5ldmVudENhbnZhcy5fY3R4LmNhbnZhcy53aWR0aCwgdGhpcy5ldmVudENhbnZhcy5fY3R4LmNhbnZhcy5oZWlnaHQpOwogICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIGJpbmQgY3VzdG9tIGV2ZW50IGhhbmRsZXJzIHRvIHJlZ3VsYXIgZXZlbnRzLgogICAgICAgICAgICAgICAgdGhpcy5iaW5kQ3VzdG9tRXZlbnRzKCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gZHJhdyBsZWdlbmQgYmVmb3JlIHNlcmllcyBpZiB0aGUgc2VyaWVzIG5lZWRzIHRvIGtub3cgdGhlIGxlZ2VuZCBkaW1lbnNpb25zLgogICAgICAgICAgICAgICAgaWYgKHRoaXMubGVnZW5kLnByZURyYXcpIHsgIAogICAgICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKGxlZ2VuZEVsZW0pOwogICAgICAgICAgICAgICAgICAgIHRoaXMubGVnZW5kLnBhY2sobGVnZW5kUGFkZGluZyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubGVnZW5kLl9lbGVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhd1Nlcmllcyh7bGVnZW5kSW5mbzp7bG9jYXRpb246dGhpcy5sZWdlbmQubG9jYXRpb24sIHBsYWNlbWVudDp0aGlzLmxlZ2VuZC5wbGFjZW1lbnQsIHdpZHRoOnRoaXMubGVnZW5kLmdldFdpZHRoKCksIGhlaWdodDp0aGlzLmxlZ2VuZC5nZXRIZWlnaHQoKSwgeG9mZnNldDp0aGlzLmxlZ2VuZC54b2Zmc2V0LCB5b2Zmc2V0OnRoaXMubGVnZW5kLnlvZmZzZXR9fSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYXdTZXJpZXMoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsgIC8vIGRyYXcgc2VyaWVzIGJlZm9yZSBsZWdlbmQKICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYXdTZXJpZXMoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoc2VyaWVzTGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoc2VyaWVzW3Nlcmllc0xlbmd0aC0xXS5jYW52YXMuX2VsZW0pLmFmdGVyKGxlZ2VuZEVsZW0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0aGlzLmxlZ2VuZC5wYWNrKGxlZ2VuZFBhZGRpbmcpOyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBldmVudCBsaXN0ZW5lcnMgb24gdGhlIG92ZXJsYXkgY2FudmFzCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTAsIGw9JC5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmxlbmd0aDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAvLyBpbiB0aGUgaGFuZGxlciwgdGhpcyB3aWxsIHJlZmVyIHRvIHRoZSBldmVudENhbnZhcyBkb20gZWxlbWVudC4KICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhlcmUgYXJlIHJlZmVyZW5jZXMgYmFjayBpbnRvIHBsb3Qgb2JqZWN0cy4KICAgICAgICAgICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJC5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzW2ldWzBdLCB7cGxvdDp0aGlzfSwgJC5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzW2ldWzFdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyByZWdpc3RlciBldmVudCBsaXN0ZW5lcnMgb24gdGhlIG92ZXJsYXkgY2FudmFzCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTAsIGw9dGhpcy5ldmVudExpc3RlbmVySG9va3MuaG9va3MubGVuZ3RoOyBpPGw7IGkrKykgewogICAgICAgICAgICAgICAgICAgIC8vIGluIHRoZSBoYW5kbGVyLCB0aGlzIHdpbGwgcmVmZXIgdG8gdGhlIGV2ZW50Q2FudmFzIGRvbSBlbGVtZW50LgogICAgICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGVyZSBhcmUgcmVmZXJlbmNlcyBiYWNrIGludG8gcGxvdCBvYmplY3RzLgogICAgICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCh0aGlzLmV2ZW50TGlzdGVuZXJIb29rcy5ob29rc1tpXVswXSwge3Bsb3Q6dGhpc30sIHRoaXMuZXZlbnRMaXN0ZW5lckhvb2tzLmhvb2tzW2ldWzFdKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgZmIgPSB0aGlzLmZpbGxCZXR3ZWVuOwogICAgICAgICAgICAgICAgaWYgKGZiLmZpbGwgJiYgZmIuc2VyaWVzMSAhPT0gZmIuc2VyaWVzMiAmJiBmYi5zZXJpZXMxIDwgc2VyaWVzTGVuZ3RoICYmIGZiLnNlcmllczIgPCBzZXJpZXNMZW5ndGggJiYgc2VyaWVzW2ZiLnNlcmllczFdLl90eXBlID09PSAnbGluZScgJiYgc2VyaWVzW2ZiLnNlcmllczJdLl90eXBlID09PSAnbGluZScpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRvRmlsbEJldHdlZW5MaW5lcygpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MCwgbD0kLmpxcGxvdC5wb3N0RHJhd0hvb2tzLmxlbmd0aDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAkLmpxcGxvdC5wb3N0RHJhd0hvb2tzW2ldLmNhbGwodGhpcyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wLCBsPXRoaXMucG9zdERyYXdIb29rcy5ob29rcy5sZW5ndGg7IGk8bDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3N0RHJhd0hvb2tzLmhvb2tzW2ldLmFwcGx5KHRoaXMsIHRoaXMucG9zdERyYXdIb29rcy5hcmdzW2ldKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAodGhpcy50YXJnZXQuaXMoJzp2aXNpYmxlJykpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9kcmF3Q291bnQgKz0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgdGVtcHMsIAogICAgICAgICAgICAgICAgICAgIHRlbXByLAogICAgICAgICAgICAgICAgICAgIHNlbCwKICAgICAgICAgICAgICAgICAgICBfZWxzOwogICAgICAgICAgICAgICAgLy8gdWdoaC4gIGlkZWFsbHkgd291bGQgaGlkZSBhbGwgc2VyaWVzIHRoZW4gc2hvdyB0aGVtLgogICAgICAgICAgICAgICAgZm9yIChpPTAsIGw9c2VyaWVzTGVuZ3RoOyBpPGw7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHRlbXBzID0gc2VyaWVzW2ldOwogICAgICAgICAgICAgICAgICAgIHRlbXByID0gdGVtcHMucmVuZGVyZXI7CiAgICAgICAgICAgICAgICAgICAgc2VsID0gJy5qcXBsb3QtcG9pbnQtbGFiZWwuanFwbG90LXNlcmllcy0nK2k7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXByLmFuaW1hdGlvbiAmJiB0ZW1wci5hbmltYXRpb24uX3N1cHBvcnRlZCAmJiB0ZW1wci5hbmltYXRpb24uc2hvdyAmJiAodGhpcy5fZHJhd0NvdW50IDwgMiB8fCB0aGlzLmFuaW1hdGVSZXBsb3QpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9lbHMgPSB0aGlzLnRhcmdldC5maW5kKHNlbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIF9lbHMuc3RvcCh0cnVlLCB0cnVlKS5oaWRlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBzLmNhbnZhcy5fZWxlbS5zdG9wKHRydWUsIHRydWUpLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcHMuc2hhZG93Q2FudmFzLl9lbGVtLnN0b3AodHJ1ZSwgdHJ1ZSkuaGlkZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wcy5jYW52YXMuX2VsZW0uanFwbG90RWZmZWN0KCdibGluZCcsIHttb2RlOiAnc2hvdycsIGRpcmVjdGlvbjogdGVtcHIuYW5pbWF0aW9uLmRpcmVjdGlvbn0sIHRlbXByLmFuaW1hdGlvbi5zcGVlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBzLnNoYWRvd0NhbnZhcy5fZWxlbS5qcXBsb3RFZmZlY3QoJ2JsaW5kJywge21vZGU6ICdzaG93JywgZGlyZWN0aW9uOiB0ZW1wci5hbmltYXRpb24uZGlyZWN0aW9ufSwgdGVtcHIuYW5pbWF0aW9uLnNwZWVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgX2Vscy5mYWRlSW4odGVtcHIuYW5pbWF0aW9uLnNwZWVkKjAuOCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2VscyA9IG51bGw7CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdGhpcy50YXJnZXQudHJpZ2dlcignanFwbG90UG9zdERyYXcnLCBbdGhpc10pOwogICAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgICAganFQbG90LnByb3RvdHlwZS5kb0ZpbGxCZXR3ZWVuTGluZXMgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBmYiA9IHRoaXMuZmlsbEJldHdlZW47CiAgICAgICAgICAgIHZhciBzaWQxID0gZmIuc2VyaWVzMTsKICAgICAgICAgICAgdmFyIHNpZDIgPSBmYi5zZXJpZXMyOwogICAgICAgICAgICAvLyBmaXJzdCBzZXJpZXMgc2hvdWxkIGFsd2F5cyBiZSBsb3dlc3QgaW5kZXgKICAgICAgICAgICAgdmFyIGlkMSA9IChzaWQxIDwgc2lkMikgPyBzaWQxIDogc2lkMjsKICAgICAgICAgICAgdmFyIGlkMiA9IChzaWQyID4gIHNpZDEpID8gc2lkMiA6IHNpZDE7CgogICAgICAgICAgICB2YXIgc2VyaWVzMSA9IHRoaXMuc2VyaWVzW2lkMV07CiAgICAgICAgICAgIHZhciBzZXJpZXMyID0gdGhpcy5zZXJpZXNbaWQyXTsKCiAgICAgICAgICAgIGlmIChzZXJpZXMyLnJlbmRlcmVyLnNtb290aCkgewogICAgICAgICAgICAgICAgdmFyIHRlbXBnZCA9IHNlcmllczIucmVuZGVyZXIuX3Ntb290aGVkRGF0YS5zbGljZSgwKS5yZXZlcnNlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgdGVtcGdkID0gc2VyaWVzMi5ncmlkRGF0YS5zbGljZSgwKS5yZXZlcnNlKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChzZXJpZXMxLnJlbmRlcmVyLnNtb290aCkgewogICAgICAgICAgICAgICAgdmFyIGdkID0gc2VyaWVzMS5yZW5kZXJlci5fc21vb3RoZWREYXRhLmNvbmNhdCh0ZW1wZ2QpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdmFyIGdkID0gc2VyaWVzMS5ncmlkRGF0YS5jb25jYXQodGVtcGdkKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGNvbG9yID0gKGZiLmNvbG9yICE9PSBudWxsKSA/IGZiLmNvbG9yIDogdGhpcy5zZXJpZXNbc2lkMV0uZmlsbENvbG9yOwogICAgICAgICAgICB2YXIgYmFzZVNlcmllcyA9IChmYi5iYXNlU2VyaWVzICE9PSBudWxsKSA/IGZiLmJhc2VTZXJpZXMgOiBpZDE7CgogICAgICAgICAgICAvLyBub3cgYXBwbHkgYSBmaWxsIHRvIHRoZSBzaGFwZSBvbiB0aGUgbG93ZXIgc2VyaWVzIHNoYWRvdyBjYW52YXMsCiAgICAgICAgICAgIC8vIHNvIGl0IGlzIGJlaGluZCBib3RoIHNlcmllcy4KICAgICAgICAgICAgdmFyIHNyID0gdGhpcy5zZXJpZXNbYmFzZVNlcmllc10ucmVuZGVyZXIuc2hhcGVSZW5kZXJlcjsKICAgICAgICAgICAgdmFyIG9wdHMgPSB7ZmlsbFN0eWxlOiBjb2xvciwgZmlsbDogdHJ1ZSwgY2xvc2VQYXRoOiB0cnVlfTsKICAgICAgICAgICAgc3IuZHJhdyhzZXJpZXMxLnNoYWRvd0NhbnZhcy5fY3R4LCBnZCwgb3B0cyk7CiAgICAgICAgfTsKICAgICAgICAKICAgICAgICB0aGlzLmJpbmRDdXN0b21FdmVudHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCdjbGljaycsIHtwbG90OnRoaXN9LCB0aGlzLm9uQ2xpY2spOwogICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJ2RibGNsaWNrJywge3Bsb3Q6dGhpc30sIHRoaXMub25EYmxDbGljayk7CiAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgnbW91c2Vkb3duJywge3Bsb3Q6dGhpc30sIHRoaXMub25Nb3VzZURvd24pOwogICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJ21vdXNlbW92ZScsIHtwbG90OnRoaXN9LCB0aGlzLm9uTW91c2VNb3ZlKTsKICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCdtb3VzZWVudGVyJywge3Bsb3Q6dGhpc30sIHRoaXMub25Nb3VzZUVudGVyKTsKICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCdtb3VzZWxlYXZlJywge3Bsb3Q6dGhpc30sIHRoaXMub25Nb3VzZUxlYXZlKTsKICAgICAgICAgICAgaWYgKHRoaXMuY2FwdHVyZVJpZ2h0Q2xpY2spIHsKICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgnbW91c2V1cCcsIHtwbG90OnRoaXN9LCB0aGlzLm9uUmlnaHRDbGljayk7CiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmdldCgwKS5vbmNvbnRleHRtZW51ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgnbW91c2V1cCcsIHtwbG90OnRoaXN9LCB0aGlzLm9uTW91c2VVcCk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIAogICAgICAgIGZ1bmN0aW9uIGdldEV2ZW50UG9zaXRpb24oZXYpIHsKICAgICAgICAgICAgdmFyIHBsb3QgPSBldi5kYXRhLnBsb3Q7CiAgICAgICAgICAgIHZhciBnbyA9IHBsb3QuZXZlbnRDYW52YXMuX2VsZW0ub2Zmc2V0KCk7CiAgICAgICAgICAgIHZhciBncmlkUG9zID0ge3g6ZXYucGFnZVggLSBnby5sZWZ0LCB5OmV2LnBhZ2VZIC0gZ28udG9wfTsKICAgICAgICAgICAgdmFyIGRhdGFQb3MgPSB7eGF4aXM6bnVsbCwgeWF4aXM6bnVsbCwgeDJheGlzOm51bGwsIHkyYXhpczpudWxsLCB5M2F4aXM6bnVsbCwgeTRheGlzOm51bGwsIHk1YXhpczpudWxsLCB5NmF4aXM6bnVsbCwgeTdheGlzOm51bGwsIHk4YXhpczpudWxsLCB5OWF4aXM6bnVsbCwgeU1pZEF4aXM6bnVsbH07CiAgICAgICAgICAgIHZhciBhbiA9IFsneGF4aXMnLCAneWF4aXMnLCAneDJheGlzJywgJ3kyYXhpcycsICd5M2F4aXMnLCAneTRheGlzJywgJ3k1YXhpcycsICd5NmF4aXMnLCAneTdheGlzJywgJ3k4YXhpcycsICd5OWF4aXMnLCAneU1pZEF4aXMnXTsKICAgICAgICAgICAgdmFyIGF4ID0gcGxvdC5heGVzOwogICAgICAgICAgICB2YXIgbiwgYXhpczsKICAgICAgICAgICAgZm9yIChuPTExOyBuPjA7IG4tLSkgewogICAgICAgICAgICAgICAgYXhpcyA9IGFuW24tMV07CiAgICAgICAgICAgICAgICBpZiAoYXhbYXhpc10uc2hvdykgewogICAgICAgICAgICAgICAgICAgIGRhdGFQb3NbYXhpc10gPSBheFtheGlzXS5zZXJpZXNfcDJ1KGdyaWRQb3NbYXhpcy5jaGFyQXQoMCldKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHtvZmZzZXRzOmdvLCBncmlkUG9zOmdyaWRQb3MsIGRhdGFQb3M6ZGF0YVBvc307CiAgICAgICAgfQogICAgICAgIAogICAgICAgIAogICAgICAgIC8vIGZ1bmN0aW9uIHRvIGNoZWNrIGlmIGV2ZW50IGxvY2F0aW9uIGlzIG92ZXIgYSBhcmVhIGFyZWEKICAgICAgICBmdW5jdGlvbiBjaGVja0ludGVyc2VjdGlvbihncmlkcG9zLCBwbG90KSB7CiAgICAgICAgICAgIHZhciBzZXJpZXMgPSBwbG90LnNlcmllczsKICAgICAgICAgICAgdmFyIGksIGosIGssIHMsIHIsIHgsIHksIHRoZXRhLCBzbSwgc2EsIG1pbmFuZywgbWF4YW5nOwogICAgICAgICAgICB2YXIgZDAsIGQsIHAsIHBwLCBwb2ludHMsIGJ3LCBocDsKICAgICAgICAgICAgdmFyIHRocmVzaG9sZCwgdDsKICAgICAgICAgICAgZm9yIChrPXBsb3Quc2VyaWVzU3RhY2subGVuZ3RoLTE7IGs+PTA7IGstLSkgewogICAgICAgICAgICAgICAgaSA9IHBsb3Quc2VyaWVzU3RhY2tba107CiAgICAgICAgICAgICAgICBzID0gc2VyaWVzW2ldOwogICAgICAgICAgICAgICAgaHAgPSBzLl9oaWdobGlnaHRUaHJlc2hvbGQ7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKHMucmVuZGVyZXIuY29uc3RydWN0b3IpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICQuanFwbG90LkJhclJlbmRlcmVyOgogICAgICAgICAgICAgICAgICAgICAgICB4ID0gZ3JpZHBvcy54OwogICAgICAgICAgICAgICAgICAgICAgICB5ID0gZ3JpZHBvcy55OwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGo9MDsgajxzLl9iYXJQb2ludHMubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IHMuX2JhclBvaW50c1tqXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBzLmdyaWREYXRhW2pdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHg+cG9pbnRzWzBdWzBdICYmIHg8cG9pbnRzWzJdWzBdICYmIHk+cG9pbnRzWzJdWzFdICYmIHk8cG9pbnRzWzBdWzFdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtzZXJpZXNJbmRleDpzLmluZGV4LCBwb2ludEluZGV4OmosIGdyaWREYXRhOnAsIGRhdGE6cy5kYXRhW2pdLCBwb2ludHM6cy5fYmFyUG9pbnRzW2pdfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICQuanFwbG90LlB5cmFtaWRSZW5kZXJlcjoKICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGdyaWRwb3MueDsKICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGdyaWRwb3MueTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqPTA7IGo8cy5fYmFyUG9pbnRzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBzLl9iYXJQb2ludHNbal07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gcy5ncmlkRGF0YVtqXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4ID4gcG9pbnRzWzBdWzBdICsgaHBbMF1bMF0gJiYgeCA8IHBvaW50c1syXVswXSArIGhwWzJdWzBdICYmIHkgPiBwb2ludHNbMl1bMV0gJiYgeSA8IHBvaW50c1swXVsxXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7c2VyaWVzSW5kZXg6cy5pbmRleCwgcG9pbnRJbmRleDpqLCBncmlkRGF0YTpwLCBkYXRhOnMuZGF0YVtqXSwgcG9pbnRzOnMuX2JhclBvaW50c1tqXX07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2FzZSAkLmpxcGxvdC5Eb251dFJlbmRlcmVyOgogICAgICAgICAgICAgICAgICAgICAgICBzYSA9IHMuc3RhcnRBbmdsZS8xODAqTWF0aC5QSTsKICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGdyaWRwb3MueCAtIHMuX2NlbnRlclswXTsKICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGdyaWRwb3MueSAtIHMuX2NlbnRlclsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgciA9IE1hdGguc3FydChNYXRoLnBvdyh4LCAyKSArIE1hdGgucG93KHksIDIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHggPiAwICYmIC15ID49IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXRhID0gMipNYXRoLlBJIC0gTWF0aC5hdGFuKC15L3gpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHggPiAwICYmIC15IDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhldGEgPSAtTWF0aC5hdGFuKC15L3gpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHggPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGV0YSA9IE1hdGguUEkgLSBNYXRoLmF0YW4oLXkveCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoeCA9PSAwICYmIC15ID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhldGEgPSAzKk1hdGguUEkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4ID09IDAgJiYgLXkgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGV0YSA9IE1hdGguUEkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4ID09IDAgJiYgeSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGV0YSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGV0YSAtPSBzYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGV0YSA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGV0YSArPSAyKk1hdGguUEk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGV0YSA+IDIqTWF0aC5QSSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXRhIC09IDIqTWF0aC5QSTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgc20gPSBzLnNsaWNlTWFyZ2luLzE4MCpNYXRoLlBJOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IHMuX3JhZGl1cyAmJiByID4gcy5faW5uZXJSYWRpdXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaj0wOyBqPHMuZ3JpZERhdGEubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5hbmcgPSAoaj4wKSA/IHMuZ3JpZERhdGFbai0xXVsxXStzbSA6IHNtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGFuZyA9IHMuZ3JpZERhdGFbal1bMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoZXRhID4gbWluYW5nICYmIHRoZXRhIDwgbWF4YW5nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7c2VyaWVzSW5kZXg6cy5pbmRleCwgcG9pbnRJbmRleDpqLCBncmlkRGF0YTpbZ3JpZHBvcy54LGdyaWRwb3MueV0sIGRhdGE6cy5kYXRhW2pdfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGNhc2UgJC5qcXBsb3QuUGllUmVuZGVyZXI6CiAgICAgICAgICAgICAgICAgICAgICAgIHNhID0gcy5zdGFydEFuZ2xlLzE4MCpNYXRoLlBJOwogICAgICAgICAgICAgICAgICAgICAgICB4ID0gZ3JpZHBvcy54IC0gcy5fY2VudGVyWzBdOwogICAgICAgICAgICAgICAgICAgICAgICB5ID0gZ3JpZHBvcy55IC0gcy5fY2VudGVyWzFdOwogICAgICAgICAgICAgICAgICAgICAgICByID0gTWF0aC5zcXJ0KE1hdGgucG93KHgsIDIpICsgTWF0aC5wb3coeSwgMikpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeCA+IDAgJiYgLXkgPj0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhldGEgPSAyKk1hdGguUEkgLSBNYXRoLmF0YW4oLXkveCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoeCA+IDAgJiYgLXkgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGV0YSA9IC1NYXRoLmF0YW4oLXkveCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoeCA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXRhID0gTWF0aC5QSSAtIE1hdGguYXRhbigteS94KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4ID09IDAgJiYgLXkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGV0YSA9IDMqTWF0aC5QSS8yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHggPT0gMCAmJiAteSA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXRhID0gTWF0aC5QSS8yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHggPT0gMCAmJiB5ID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXRhID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2EpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXRhIC09IHNhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoZXRhIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXRhICs9IDIqTWF0aC5QSTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoZXRhID4gMipNYXRoLlBJKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhldGEgLT0gMipNYXRoLlBJOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBzbSA9IHMuc2xpY2VNYXJnaW4vMTgwKk1hdGguUEk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyIDwgcy5fcmFkaXVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGo9MDsgajxzLmdyaWREYXRhLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluYW5nID0gKGo+MCkgPyBzLmdyaWREYXRhW2otMV1bMV0rc20gOiBzbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhhbmcgPSBzLmdyaWREYXRhW2pdWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGV0YSA+IG1pbmFuZyAmJiB0aGV0YSA8IG1heGFuZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3Nlcmllc0luZGV4OnMuaW5kZXgsIHBvaW50SW5kZXg6aiwgZ3JpZERhdGE6W2dyaWRwb3MueCxncmlkcG9zLnldLCBkYXRhOnMuZGF0YVtqXX07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjYXNlICQuanFwbG90LkJ1YmJsZVJlbmRlcmVyOgogICAgICAgICAgICAgICAgICAgICAgICB4ID0gZ3JpZHBvcy54OwogICAgICAgICAgICAgICAgICAgICAgICB5ID0gZ3JpZHBvcy55OwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmV0ID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MDsgajxzLmdyaWREYXRhLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHMuZ3JpZERhdGFbal07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IE1hdGguc3FydCggKHgtcFswXSkgKiAoeC1wWzBdKSArICh5LXBbMV0pICogKHktcFsxXSkgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZCA8PSBwWzJdICYmIChkIDw9IGQwIHx8IGQwID09IG51bGwpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDAgPSBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHtzZXJpZXNJbmRleDogaSwgcG9pbnRJbmRleDpqLCBncmlkRGF0YTpwLCBkYXRhOnMuZGF0YVtqXX07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY2FzZSAkLmpxcGxvdC5GdW5uZWxSZW5kZXJlcjoKICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGdyaWRwb3MueDsKICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGdyaWRwb3MueTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSBzLl92ZXJ0aWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZmaXJzdCA9IHZbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bGFzdCA9IHZbdi5sZW5ndGgtMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdjsKICAgIAogICAgICAgICAgICAgICAgICAgICAgICAvLyBlcXVhdGlvbnMgb2YgcmlnaHQgYW5kIGxlZnQgc2lkZXMsIHJldHVybnMgeCwgeSB2YWx1ZXMgZ2l2ZW4gaGVpZ2h0IG9mIHNlY3Rpb24gKHkgdmFsdWUgYW5kIDIgcG9pbnRzKQogICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGZpbmRlZGdlIChsLCBwMSAsIHAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IChwMVsxXSAtIHAyWzFdKS8ocDFbMF0gLSBwMlswXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IHAxWzFdIC0gbSpwMVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ID0gbCArIHAxWzFdOwogICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsoeSAtIGIpL20sIHldOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgZWFjaCBzZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgIGxleCA9IGZpbmRlZGdlKHksIHZmaXJzdFswXSwgdmxhc3RbM10pOwogICAgICAgICAgICAgICAgICAgICAgICByZXggPSBmaW5kZWRnZSh5LCB2Zmlyc3RbMV0sIHZsYXN0WzJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqPTA7IGo8di5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3YgPSB2W2pdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHkgPj0gY3ZbMF1bMV0gJiYgeSA8PSBjdlszXVsxXSAmJiB4ID49IGxleFswXSAmJiB4IDw9IHJleFswXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7c2VyaWVzSW5kZXg6cy5pbmRleCwgcG9pbnRJbmRleDpqLCBncmlkRGF0YTpudWxsLCBkYXRhOnMuZGF0YVtqXX07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjYXNlICQuanFwbG90LkxpbmVSZW5kZXJlcjoKICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGdyaWRwb3MueDsKICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGdyaWRwb3MueTsKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHMucmVuZGVyZXI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocy5maWxsIHx8IChzLnJlbmRlcmVyLmJhbmRzLnNob3cgJiYgcy5yZW5kZXJlci5iYW5kcy5maWxsKSkgJiYgKCFwbG90LnBsdWdpbnMuaGlnaGxpZ2h0ZXIgfHwgIXBsb3QucGx1Z2lucy5oaWdobGlnaHRlci5zaG93KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZpcnN0IGNoZWNrIGlmIGl0IGlzIGluIGJvdW5kaW5nIGJveAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbnNpZGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeD5zLl9ib3VuZGluZ0JveFswXVswXSAmJiB4PHMuX2JvdW5kaW5nQm94WzFdWzBdICYmIHk+cy5fYm91bmRpbmdCb3hbMV1bMV0gJiYgeTxzLl9ib3VuZGluZ0JveFswXVsxXSkgeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm93IGNoZWNrIHRoZSBjcm9zc2luZyBudW1iZXIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBudW1Qb2ludHMgPSBzLl9hcmVhUG9pbnRzLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaiA9IG51bVBvaW50cy0xOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKHZhciBpaT0wOyBpaSA8IG51bVBvaW50czsgaWkrKykgeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2ZXJ0ZXgxID0gW3MuX2FyZWFQb2ludHNbaWldWzBdLCBzLl9hcmVhUG9pbnRzW2lpXVsxXV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmVydGV4MiA9IFtzLl9hcmVhUG9pbnRzW2pdWzBdLCBzLl9hcmVhUG9pbnRzW2pdWzFdXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVydGV4MVsxXSA8IHkgJiYgdmVydGV4MlsxXSA+PSB5IHx8IHZlcnRleDJbMV0gPCB5ICYmIHZlcnRleDFbMV0gPj0geSkgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVydGV4MVswXSArICh5IC0gdmVydGV4MVsxXSkgLyAodmVydGV4MlsxXSAtIHZlcnRleDFbMV0pICogKHZlcnRleDJbMF0gLSB2ZXJ0ZXgxWzBdKSA8IHgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zaWRlID0gIWluc2lkZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGlpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluc2lkZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3Nlcmllc0luZGV4OmksIHBvaW50SW5kZXg6bnVsbCwgZ3JpZERhdGE6cy5ncmlkRGF0YSwgZGF0YTpzLmRhdGEsIHBvaW50czpzLl9hcmVhUG9pbnRzfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHMubWFya2VyUmVuZGVyZXIuc2l6ZS8yK3MubmVpZ2hib3JUaHJlc2hvbGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZXNob2xkID0gKHQgPiAwKSA/IHQgOiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MDsgajxzLmdyaWREYXRhLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBzLmdyaWREYXRhW2pdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZWlnaGJvciBsb29rcyBkaWZmZXJlbnQgdG8gT0hMQyBjaGFydC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuY29uc3RydWN0b3IgPT0gJC5qcXBsb3QuT0hMQ1JlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5jYW5kbGVTdGljaykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5cCA9IHMuX3lheGlzLnNlcmllc191MnA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHggPj0gcFswXS1yLl9ib2R5V2lkdGgvMiAmJiB4IDw9IHBbMF0rci5fYm9keVdpZHRoLzIgJiYgeSA+PSB5cChzLmRhdGFbal1bMl0pICYmIHkgPD0geXAocy5kYXRhW2pdWzNdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3Nlcmllc0luZGV4OiBpLCBwb2ludEluZGV4OmosIGdyaWREYXRhOnAsIGRhdGE6cy5kYXRhW2pdfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBhbiBvcGVuIGhpIGxvdyBjbG9zZSBjaGFydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXIuaGxjKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeXAgPSBzLl95YXhpcy5zZXJpZXNfdTJwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4ID49IHBbMF0tci5fdGlja0xlbmd0aCAmJiB4IDw9IHBbMF0rci5fdGlja0xlbmd0aCAmJiB5ID49IHlwKHMuZGF0YVtqXVsyXSkgJiYgeSA8PSB5cChzLmRhdGFbal1bM10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7c2VyaWVzSW5kZXg6IGksIHBvaW50SW5kZXg6aiwgZ3JpZERhdGE6cCwgZGF0YTpzLmRhdGFbal19OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgaGkgbG93IGNsb3NlIGNoYXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeXAgPSBzLl95YXhpcy5zZXJpZXNfdTJwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4ID49IHBbMF0tci5fdGlja0xlbmd0aCAmJiB4IDw9IHBbMF0rci5fdGlja0xlbmd0aCAmJiB5ID49IHlwKHMuZGF0YVtqXVsxXSkgJiYgeSA8PSB5cChzLmRhdGFbal1bMl0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7c2VyaWVzSW5kZXg6IGksIHBvaW50SW5kZXg6aiwgZ3JpZERhdGE6cCwgZGF0YTpzLmRhdGFbal19OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBbMF0gIT0gbnVsbCAmJiBwWzFdICE9IG51bGwpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IE1hdGguc3FydCggKHgtcFswXSkgKiAoeC1wWzBdKSArICh5LXBbMV0pICogKHktcFsxXSkgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkIDw9IHRocmVzaG9sZCAmJiAoZCA8PSBkMCB8fCBkMCA9PSBudWxsKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDAgPSBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtzZXJpZXNJbmRleDogaSwgcG9pbnRJbmRleDpqLCBncmlkRGF0YTpwLCBkYXRhOnMuZGF0YVtqXX07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICB4ID0gZ3JpZHBvcy54OwogICAgICAgICAgICAgICAgICAgICAgICB5ID0gZ3JpZHBvcy55OwogICAgICAgICAgICAgICAgICAgICAgICByID0gcy5yZW5kZXJlcjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMuc2hvdykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHMubWFya2VyUmVuZGVyZXIuc2l6ZS8yK3MubmVpZ2hib3JUaHJlc2hvbGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlc2hvbGQgPSAodCA+IDApID8gdCA6IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8cy5ncmlkRGF0YS5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBzLmdyaWREYXRhW2pdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5laWdoYm9yIGxvb2tzIGRpZmZlcmVudCB0byBPSExDIGNoYXJ0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLmNvbnN0cnVjdG9yID09ICQuanFwbG90Lk9ITENSZW5kZXJlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5jYW5kbGVTdGljaykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHlwID0gcy5feWF4aXMuc2VyaWVzX3UycDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4ID49IHBbMF0tci5fYm9keVdpZHRoLzIgJiYgeCA8PSBwWzBdK3IuX2JvZHlXaWR0aC8yICYmIHkgPj0geXAocy5kYXRhW2pdWzJdKSAmJiB5IDw9IHlwKHMuZGF0YVtqXVszXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3Nlcmllc0luZGV4OiBpLCBwb2ludEluZGV4OmosIGdyaWREYXRhOnAsIGRhdGE6cy5kYXRhW2pdfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBhbiBvcGVuIGhpIGxvdyBjbG9zZSBjaGFydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghci5obGMpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHlwID0gcy5feWF4aXMuc2VyaWVzX3UycDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4ID49IHBbMF0tci5fdGlja0xlbmd0aCAmJiB4IDw9IHBbMF0rci5fdGlja0xlbmd0aCAmJiB5ID49IHlwKHMuZGF0YVtqXVsyXSkgJiYgeSA8PSB5cChzLmRhdGFbal1bM10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtzZXJpZXNJbmRleDogaSwgcG9pbnRJbmRleDpqLCBncmlkRGF0YTpwLCBkYXRhOnMuZGF0YVtqXX07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBoaSBsb3cgY2xvc2UgY2hhcnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeXAgPSBzLl95YXhpcy5zZXJpZXNfdTJwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHggPj0gcFswXS1yLl90aWNrTGVuZ3RoICYmIHggPD0gcFswXStyLl90aWNrTGVuZ3RoICYmIHkgPj0geXAocy5kYXRhW2pdWzFdKSAmJiB5IDw9IHlwKHMuZGF0YVtqXVsyXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3Nlcmllc0luZGV4OiBpLCBwb2ludEluZGV4OmosIGdyaWREYXRhOnAsIGRhdGE6cy5kYXRhW2pdfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gTWF0aC5zcXJ0KCAoeC1wWzBdKSAqICh4LXBbMF0pICsgKHktcFsxXSkgKiAoeS1wWzFdKSApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZCA8PSB0aHJlc2hvbGQgJiYgKGQgPD0gZDAgfHwgZDAgPT0gbnVsbCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDAgPSBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3Nlcmllc0luZGV4OiBpLCBwb2ludEluZGV4OmosIGdyaWREYXRhOnAsIGRhdGE6cy5kYXRhW2pdfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICB0aGlzLm9uQ2xpY2sgPSBmdW5jdGlvbihldikgewogICAgICAgICAgICAvLyBFdmVudCBwYXNzZWQgaW4gaXMgbm9ybWFsaXplZCBhbmQgd2lsbCBoYXZlIGRhdGEgYXR0cmlidXRlLgogICAgICAgICAgICAvLyBFdmVudCBwYXNzZWQgb3V0IGlzIHVubm9ybWFsaXplZC4KICAgICAgICAgICAgdmFyIHBvc2l0aW9ucyA9IGdldEV2ZW50UG9zaXRpb24oZXYpOwogICAgICAgICAgICB2YXIgcCA9IGV2LmRhdGEucGxvdDsKICAgICAgICAgICAgdmFyIG5laWdoYm9yID0gY2hlY2tJbnRlcnNlY3Rpb24ocG9zaXRpb25zLmdyaWRQb3MsIHApOwogICAgICAgICAgICB2YXIgZXZ0ID0gJC5FdmVudCgnanFwbG90Q2xpY2snKTsKICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICAkKHRoaXMpLnRyaWdnZXIoZXZ0LCBbcG9zaXRpb25zLmdyaWRQb3MsIHBvc2l0aW9ucy5kYXRhUG9zLCBuZWlnaGJvciwgcF0pOwogICAgICAgIH07CiAgICAgICAgCiAgICAgICAgdGhpcy5vbkRibENsaWNrID0gZnVuY3Rpb24oZXYpIHsKICAgICAgICAgICAgLy8gRXZlbnQgcGFzc2VkIGluIGlzIG5vcm1hbGl6ZWQgYW5kIHdpbGwgaGF2ZSBkYXRhIGF0dHJpYnV0ZS4KICAgICAgICAgICAgLy8gRXZlbnQgcGFzc2VkIG91dCBpcyB1bm5vcm1hbGl6ZWQuCiAgICAgICAgICAgIHZhciBwb3NpdGlvbnMgPSBnZXRFdmVudFBvc2l0aW9uKGV2KTsKICAgICAgICAgICAgdmFyIHAgPSBldi5kYXRhLnBsb3Q7CiAgICAgICAgICAgIHZhciBuZWlnaGJvciA9IGNoZWNrSW50ZXJzZWN0aW9uKHBvc2l0aW9ucy5ncmlkUG9zLCBwKTsKICAgICAgICAgICAgdmFyIGV2dCA9ICQuRXZlbnQoJ2pxcGxvdERibENsaWNrJyk7CiAgICAgICAgICAgIGV2dC5wYWdlWCA9IGV2LnBhZ2VYOwogICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgJCh0aGlzKS50cmlnZ2VyKGV2dCwgW3Bvc2l0aW9ucy5ncmlkUG9zLCBwb3NpdGlvbnMuZGF0YVBvcywgbmVpZ2hib3IsIHBdKTsKICAgICAgICB9OwogICAgICAgIAogICAgICAgIHRoaXMub25Nb3VzZURvd24gPSBmdW5jdGlvbihldikgewogICAgICAgICAgICB2YXIgcG9zaXRpb25zID0gZ2V0RXZlbnRQb3NpdGlvbihldik7CiAgICAgICAgICAgIHZhciBwID0gZXYuZGF0YS5wbG90OwogICAgICAgICAgICB2YXIgbmVpZ2hib3IgPSBjaGVja0ludGVyc2VjdGlvbihwb3NpdGlvbnMuZ3JpZFBvcywgcCk7CiAgICAgICAgICAgIHZhciBldnQgPSAkLkV2ZW50KCdqcXBsb3RNb3VzZURvd24nKTsKICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICAkKHRoaXMpLnRyaWdnZXIoZXZ0LCBbcG9zaXRpb25zLmdyaWRQb3MsIHBvc2l0aW9ucy5kYXRhUG9zLCBuZWlnaGJvciwgcF0pOwogICAgICAgIH07CiAgICAgICAgCiAgICAgICAgdGhpcy5vbk1vdXNlVXAgPSBmdW5jdGlvbihldikgewogICAgICAgICAgICB2YXIgcG9zaXRpb25zID0gZ2V0RXZlbnRQb3NpdGlvbihldik7CiAgICAgICAgICAgIHZhciBldnQgPSAkLkV2ZW50KCdqcXBsb3RNb3VzZVVwJyk7CiAgICAgICAgICAgIGV2dC5wYWdlWCA9IGV2LnBhZ2VYOwogICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgJCh0aGlzKS50cmlnZ2VyKGV2dCwgW3Bvc2l0aW9ucy5ncmlkUG9zLCBwb3NpdGlvbnMuZGF0YVBvcywgbnVsbCwgZXYuZGF0YS5wbG90XSk7CiAgICAgICAgfTsKICAgICAgICAKICAgICAgICB0aGlzLm9uUmlnaHRDbGljayA9IGZ1bmN0aW9uKGV2KSB7CiAgICAgICAgICAgIHZhciBwb3NpdGlvbnMgPSBnZXRFdmVudFBvc2l0aW9uKGV2KTsKICAgICAgICAgICAgdmFyIHAgPSBldi5kYXRhLnBsb3Q7CiAgICAgICAgICAgIHZhciBuZWlnaGJvciA9IGNoZWNrSW50ZXJzZWN0aW9uKHBvc2l0aW9ucy5ncmlkUG9zLCBwKTsKICAgICAgICAgICAgaWYgKHAuY2FwdHVyZVJpZ2h0Q2xpY2spIHsKICAgICAgICAgICAgICAgIGlmIChldi53aGljaCA9PSAzKSB7CiAgICAgICAgICAgICAgICB2YXIgZXZ0ID0gJC5FdmVudCgnanFwbG90UmlnaHRDbGljaycpOwogICAgICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnRyaWdnZXIoZXZ0LCBbcG9zaXRpb25zLmdyaWRQb3MsIHBvc2l0aW9ucy5kYXRhUG9zLCBuZWlnaGJvciwgcF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgZXZ0ID0gJC5FdmVudCgnanFwbG90TW91c2VVcCcpOwogICAgICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnRyaWdnZXIoZXZ0LCBbcG9zaXRpb25zLmdyaWRQb3MsIHBvc2l0aW9ucy5kYXRhUG9zLCBuZWlnaGJvciwgcF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICAKICAgICAgICB0aGlzLm9uTW91c2VNb3ZlID0gZnVuY3Rpb24oZXYpIHsKICAgICAgICAgICAgdmFyIHBvc2l0aW9ucyA9IGdldEV2ZW50UG9zaXRpb24oZXYpOwogICAgICAgICAgICB2YXIgcCA9IGV2LmRhdGEucGxvdDsKICAgICAgICAgICAgdmFyIG5laWdoYm9yID0gY2hlY2tJbnRlcnNlY3Rpb24ocG9zaXRpb25zLmdyaWRQb3MsIHApOwogICAgICAgICAgICB2YXIgZXZ0ID0gJC5FdmVudCgnanFwbG90TW91c2VNb3ZlJyk7CiAgICAgICAgICAgIGV2dC5wYWdlWCA9IGV2LnBhZ2VYOwogICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgJCh0aGlzKS50cmlnZ2VyKGV2dCwgW3Bvc2l0aW9ucy5ncmlkUG9zLCBwb3NpdGlvbnMuZGF0YVBvcywgbmVpZ2hib3IsIHBdKTsKICAgICAgICB9OwogICAgICAgIAogICAgICAgIHRoaXMub25Nb3VzZUVudGVyID0gZnVuY3Rpb24oZXYpIHsKICAgICAgICAgICAgdmFyIHBvc2l0aW9ucyA9IGdldEV2ZW50UG9zaXRpb24oZXYpOwogICAgICAgICAgICB2YXIgcCA9IGV2LmRhdGEucGxvdDsKICAgICAgICAgICAgdmFyIGV2dCA9ICQuRXZlbnQoJ2pxcGxvdE1vdXNlRW50ZXInKTsKICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICBldnQucmVsYXRlZFRhcmdldCA9IGV2LnJlbGF0ZWRUYXJnZXQ7CiAgICAgICAgICAgICQodGhpcykudHJpZ2dlcihldnQsIFtwb3NpdGlvbnMuZ3JpZFBvcywgcG9zaXRpb25zLmRhdGFQb3MsIG51bGwsIHBdKTsKICAgICAgICB9OwogICAgICAgIAogICAgICAgIHRoaXMub25Nb3VzZUxlYXZlID0gZnVuY3Rpb24oZXYpIHsKICAgICAgICAgICAgdmFyIHBvc2l0aW9ucyA9IGdldEV2ZW50UG9zaXRpb24oZXYpOwogICAgICAgICAgICB2YXIgcCA9IGV2LmRhdGEucGxvdDsKICAgICAgICAgICAgdmFyIGV2dCA9ICQuRXZlbnQoJ2pxcGxvdE1vdXNlTGVhdmUnKTsKICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICBldnQucmVsYXRlZFRhcmdldCA9IGV2LnJlbGF0ZWRUYXJnZXQ7CiAgICAgICAgICAgICQodGhpcykudHJpZ2dlcihldnQsIFtwb3NpdGlvbnMuZ3JpZFBvcywgcG9zaXRpb25zLmRhdGFQb3MsIG51bGwsIHBdKTsKICAgICAgICB9OwogICAgICAgIAogICAgICAgIC8vIG1ldGhvZDogZHJhd1NlcmllcwogICAgICAgIC8vIFJlZHJhd3MgYWxsIG9yIGp1c3Qgb25lIHNlcmllcyBvbiB0aGUgcGxvdC4gIE5vIGF4aXMgc2NhbGluZwogICAgICAgIC8vIGlzIHBlcmZvcm1lZCBhbmQgbm8gb3RoZXIgZWxlbWVudHMgb24gdGhlIHBsb3QgYXJlIHJlZHJhd24uCiAgICAgICAgLy8gb3B0aW9ucyBpcyBhbiBvcHRpb25zIG9iamVjdCB0byBwYXNzIG9uIHRvIHRoZSBzZXJpZXMgcmVuZGVyZXJzLgogICAgICAgIC8vIEl0IGNhbiBiZSBhbiBlbXB0eSBvYmplY3Qge30uICBpZHggaXMgdGhlIHNlcmllcyBpbmRleAogICAgICAgIC8vIHRvIHJlZHJhdyBpZiBvbmx5IG9uZSBzZXJpZXMgaXMgdG8gYmUgcmVkcmF3bi4KICAgICAgICB0aGlzLmRyYXdTZXJpZXMgPSBmdW5jdGlvbihvcHRpb25zLCBpZHgpewogICAgICAgICAgICB2YXIgaSwgc2VyaWVzLCBjdHg7CiAgICAgICAgICAgIC8vIGlmIG9ubHkgb25lIGFyZ3VtZW50IHBhc3NlZCBpbiBhbmQgaXQgaXMgYSBudW1iZXIsIHVzZSBpdCBhZCBpZHguCiAgICAgICAgICAgIGlkeCA9ICh0eXBlb2Yob3B0aW9ucykgPT09ICJudW1iZXIiICYmIGlkeCA9PSBudWxsKSA/IG9wdGlvbnMgOiBpZHg7CiAgICAgICAgICAgIG9wdGlvbnMgPSAodHlwZW9mKG9wdGlvbnMpID09PSAib2JqZWN0IikgPyBvcHRpb25zIDoge307CiAgICAgICAgICAgIC8vIGRyYXcgc3BlY2lmaWVkIHNlcmllcwogICAgICAgICAgICBpZiAoaWR4ICE9IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgc2VyaWVzID0gdGhpcy5zZXJpZXNbaWR4XTsKICAgICAgICAgICAgICAgIGN0eCA9IHNlcmllcy5zaGFkb3dDYW52YXMuX2N0eDsKICAgICAgICAgICAgICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgY3R4LmNhbnZhcy53aWR0aCwgY3R4LmNhbnZhcy5oZWlnaHQpOwogICAgICAgICAgICAgICAgc2VyaWVzLmRyYXdTaGFkb3coY3R4LCBvcHRpb25zLCB0aGlzKTsKICAgICAgICAgICAgICAgIGN0eCA9IHNlcmllcy5jYW52YXMuX2N0eDsKICAgICAgICAgICAgICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgY3R4LmNhbnZhcy53aWR0aCwgY3R4LmNhbnZhcy5oZWlnaHQpOwogICAgICAgICAgICAgICAgc2VyaWVzLmRyYXcoY3R4LCBvcHRpb25zLCB0aGlzKTsKICAgICAgICAgICAgICAgIGlmIChzZXJpZXMucmVuZGVyZXIuY29uc3RydWN0b3IgPT0gJC5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlcikgewogICAgICAgICAgICAgICAgICAgIGlmIChpZHggPCB0aGlzLnNlcmllcy5sZW5ndGggLSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhd1NlcmllcyhpZHgrMSk7IAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBpZiBjYWxsIHNlcmllcyBkcmF3U2hhZG93IG1ldGhvZCBmaXJzdCwgaW4gY2FzZSBhbGwgc2VyaWVzIHNoYWRvd3MKICAgICAgICAgICAgICAgIC8vIHNob3VsZCBiZSBkcmF3biBiZWZvcmUgYW55IHNlcmllcy4gIFRoaXMgd2lsbCBlbnN1cmUsIGxpa2UgZm9yIAogICAgICAgICAgICAgICAgLy8gc3RhY2tlZCBiYXIgcGxvdHMsIHRoYXQgc2hhZG93cyBkb24ndCBvdmVybGFwIHNlcmllcy4KICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPHRoaXMuc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gZmlyc3QgY2xlYXIgdGhlIGNhbnZhcwogICAgICAgICAgICAgICAgICAgIHNlcmllcyA9IHRoaXMuc2VyaWVzW2ldOwogICAgICAgICAgICAgICAgICAgIGN0eCA9IHNlcmllcy5zaGFkb3dDYW52YXMuX2N0eDsKICAgICAgICAgICAgICAgICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIGN0eC5jYW52YXMud2lkdGgsIGN0eC5jYW52YXMuaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICBzZXJpZXMuZHJhd1NoYWRvdyhjdHgsIG9wdGlvbnMsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgIGN0eCA9IHNlcmllcy5jYW52YXMuX2N0eDsKICAgICAgICAgICAgICAgICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIGN0eC5jYW52YXMud2lkdGgsIGN0eC5jYW52YXMuaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICBzZXJpZXMuZHJhdyhjdHgsIG9wdGlvbnMsIHRoaXMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIG9wdGlvbnMgPSBpZHggPSBpID0gc2VyaWVzID0gY3R4ID0gbnVsbDsKICAgICAgICB9OwogICAgICAgIAogICAgICAgIC8vIG1ldGhvZDogbW92ZVNlcmllc1RvRnJvbnQKICAgICAgICAvLyBUaGlzIG1ldGhvZCByZXF1aXJlcyBqUXVlcnkgMS40KwogICAgICAgIC8vIE1vdmVzIHRoZSBzcGVjaWZpZWQgc2VyaWVzIGNhbnZhcyBpbiBmcm9udCBvZiBhbGwgb3RoZXIgc2VyaWVzIGNhbnZhc2VzLgogICAgICAgIC8vIFRoaXMgZWZmZWN0aXZlbHkgImRyYXdzIiB0aGUgc3BlY2lmaWVkIHNlcmllcyBvbiB0b3Agb2YgYWxsIG90aGVyIHNlcmllcywKICAgICAgICAvLyBhbHRob3VnaCBpdCBpcyBwZXJmb3JtZWQgdGhyb3VnaCBET00gbWFuaXB1bGF0aW9uLCBubyByZWRyYXdpbmcgaXMgcGVyZm9ybWVkLgogICAgICAgIC8vCiAgICAgICAgLy8gUGFyYW1ldGVyczoKICAgICAgICAvLyBpZHggLSAwIGJhc2VkIGluZGV4IG9mIHRoZSBzZXJpZXMgdG8gbW92ZS4gIFRoaXMgd2lsbCBiZSB0aGUgaW5kZXggb2YgdGhlIHNlcmllcwogICAgICAgIC8vIGFzIGl0IHdhcyBmaXJzdCBwYXNzZWQgaW50byB0aGUganFwbG90IGZ1bmN0aW9uLgogICAgICAgIHRoaXMubW92ZVNlcmllc1RvRnJvbnQgPSBmdW5jdGlvbiAoaWR4KSB7IAogICAgICAgICAgICBpZHggPSBwYXJzZUludChpZHgsIDEwKTsKICAgICAgICAgICAgdmFyIHN0YWNrSW5kZXggPSAkLmluQXJyYXkoaWR4LCB0aGlzLnNlcmllc1N0YWNrKTsKICAgICAgICAgICAgLy8gaWYgYWxyZWFkeSBpbiBmcm9udCwgcmV0dXJuCiAgICAgICAgICAgIGlmIChzdGFja0luZGV4ID09IC0xKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHN0YWNrSW5kZXggPT0gdGhpcy5zZXJpZXNTdGFjay5sZW5ndGggLTEpIHsKICAgICAgICAgICAgICAgIHRoaXMucHJldmlvdXNTZXJpZXNTdGFjayA9IHRoaXMuc2VyaWVzU3RhY2suc2xpY2UoMCk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIG9waWR4ID0gdGhpcy5zZXJpZXNTdGFja1t0aGlzLnNlcmllc1N0YWNrLmxlbmd0aCAtMV07CiAgICAgICAgICAgIHZhciBzZXJlbGVtID0gdGhpcy5zZXJpZXNbaWR4XS5jYW52YXMuX2VsZW0uZGV0YWNoKCk7CiAgICAgICAgICAgIHZhciBzaGFkZWxlbSA9IHRoaXMuc2VyaWVzW2lkeF0uc2hhZG93Q2FudmFzLl9lbGVtLmRldGFjaCgpOwogICAgICAgICAgICB0aGlzLnNlcmllc1tvcGlkeF0uc2hhZG93Q2FudmFzLl9lbGVtLmFmdGVyKHNoYWRlbGVtKTsKICAgICAgICAgICAgdGhpcy5zZXJpZXNbb3BpZHhdLmNhbnZhcy5fZWxlbS5hZnRlcihzZXJlbGVtKTsKICAgICAgICAgICAgdGhpcy5wcmV2aW91c1Nlcmllc1N0YWNrID0gdGhpcy5zZXJpZXNTdGFjay5zbGljZSgwKTsKICAgICAgICAgICAgdGhpcy5zZXJpZXNTdGFjay5zcGxpY2Uoc3RhY2tJbmRleCwgMSk7CiAgICAgICAgICAgIHRoaXMuc2VyaWVzU3RhY2sucHVzaChpZHgpOwogICAgICAgIH07CiAgICAgICAgCiAgICAgICAgLy8gbWV0aG9kOiBtb3ZlU2VyaWVzVG9CYWNrCiAgICAgICAgLy8gVGhpcyBtZXRob2QgcmVxdWlyZXMgalF1ZXJ5IDEuNCsKICAgICAgICAvLyBNb3ZlcyB0aGUgc3BlY2lmaWVkIHNlcmllcyBjYW52YXMgYmVoaW5kIGFsbCBvdGhlciBzZXJpZXMgY2FudmFzZXMuCiAgICAgICAgLy8KICAgICAgICAvLyBQYXJhbWV0ZXJzOgogICAgICAgIC8vIGlkeCAtIDAgYmFzZWQgaW5kZXggb2YgdGhlIHNlcmllcyB0byBtb3ZlLiAgVGhpcyB3aWxsIGJlIHRoZSBpbmRleCBvZiB0aGUgc2VyaWVzCiAgICAgICAgLy8gYXMgaXQgd2FzIGZpcnN0IHBhc3NlZCBpbnRvIHRoZSBqcXBsb3QgZnVuY3Rpb24uCiAgICAgICAgdGhpcy5tb3ZlU2VyaWVzVG9CYWNrID0gZnVuY3Rpb24gKGlkeCkgewogICAgICAgICAgICBpZHggPSBwYXJzZUludChpZHgsIDEwKTsKICAgICAgICAgICAgdmFyIHN0YWNrSW5kZXggPSAkLmluQXJyYXkoaWR4LCB0aGlzLnNlcmllc1N0YWNrKTsKICAgICAgICAgICAgLy8gaWYgYWxyZWFkeSBpbiBiYWNrLCByZXR1cm4KICAgICAgICAgICAgaWYgKHN0YWNrSW5kZXggPT0gMCB8fCBzdGFja0luZGV4ID09IC0xKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIG9waWR4ID0gdGhpcy5zZXJpZXNTdGFja1swXTsKICAgICAgICAgICAgdmFyIHNlcmVsZW0gPSB0aGlzLnNlcmllc1tpZHhdLmNhbnZhcy5fZWxlbS5kZXRhY2goKTsKICAgICAgICAgICAgdmFyIHNoYWRlbGVtID0gdGhpcy5zZXJpZXNbaWR4XS5zaGFkb3dDYW52YXMuX2VsZW0uZGV0YWNoKCk7CiAgICAgICAgICAgIHRoaXMuc2VyaWVzW29waWR4XS5zaGFkb3dDYW52YXMuX2VsZW0uYmVmb3JlKHNoYWRlbGVtKTsKICAgICAgICAgICAgdGhpcy5zZXJpZXNbb3BpZHhdLmNhbnZhcy5fZWxlbS5iZWZvcmUoc2VyZWxlbSk7CiAgICAgICAgICAgIHRoaXMucHJldmlvdXNTZXJpZXNTdGFjayA9IHRoaXMuc2VyaWVzU3RhY2suc2xpY2UoMCk7CiAgICAgICAgICAgIHRoaXMuc2VyaWVzU3RhY2suc3BsaWNlKHN0YWNrSW5kZXgsIDEpOwogICAgICAgICAgICB0aGlzLnNlcmllc1N0YWNrLnVuc2hpZnQoaWR4KTsKICAgICAgICB9OwogICAgICAgIAogICAgICAgIC8vIG1ldGhvZDogcmVzdG9yZVByZXZpb3VzU2VyaWVzT3JkZXIKICAgICAgICAvLyBUaGlzIG1ldGhvZCByZXF1aXJlcyBqUXVlcnkgMS40KwogICAgICAgIC8vIFJlc3RvcmUgdGhlIHNlcmllcyBjYW52YXMgb3JkZXIgdG8gaXRzIHByZXZpb3VzIHN0YXRlLgogICAgICAgIC8vIFVzZWZ1bCB0byBwdXQgYSBzZXJpZXMgYmFjayB3aGVyZSBpdCBiZWxvbmdzIGFmdGVyIG1vdmluZwogICAgICAgIC8vIGl0IHRvIHRoZSBmcm9udC4KICAgICAgICB0aGlzLnJlc3RvcmVQcmV2aW91c1Nlcmllc09yZGVyID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgaSwgaiwgc2VyZWxlbSwgc2hhZGVsZW0sIHRlbXAsIG1vdmUsIGtlZXA7CiAgICAgICAgICAgIC8vIGlmIG5vIGNoYW5nZSwgcmV0dXJuLgogICAgICAgICAgICBpZiAodGhpcy5zZXJpZXNTdGFjayA9PSB0aGlzLnByZXZpb3VzU2VyaWVzU3RhY2spIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IgKGk9MTsgaTx0aGlzLnByZXZpb3VzU2VyaWVzU3RhY2subGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIG1vdmUgPSB0aGlzLnByZXZpb3VzU2VyaWVzU3RhY2tbaV07CiAgICAgICAgICAgICAgICBrZWVwID0gdGhpcy5wcmV2aW91c1Nlcmllc1N0YWNrW2ktMV07CiAgICAgICAgICAgICAgICBzZXJlbGVtID0gdGhpcy5zZXJpZXNbbW92ZV0uY2FudmFzLl9lbGVtLmRldGFjaCgpOwogICAgICAgICAgICAgICAgc2hhZGVsZW0gPSB0aGlzLnNlcmllc1ttb3ZlXS5zaGFkb3dDYW52YXMuX2VsZW0uZGV0YWNoKCk7CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc1trZWVwXS5zaGFkb3dDYW52YXMuX2VsZW0uYWZ0ZXIoc2hhZGVsZW0pOwogICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNba2VlcF0uY2FudmFzLl9lbGVtLmFmdGVyKHNlcmVsZW0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRlbXAgPSB0aGlzLnNlcmllc1N0YWNrLnNsaWNlKDApOwogICAgICAgICAgICB0aGlzLnNlcmllc1N0YWNrID0gdGhpcy5wcmV2aW91c1Nlcmllc1N0YWNrLnNsaWNlKDApOwogICAgICAgICAgICB0aGlzLnByZXZpb3VzU2VyaWVzU3RhY2sgPSB0ZW1wOwogICAgICAgIH07CiAgICAgICAgCiAgICAgICAgLy8gbWV0aG9kOiByZXN0b3JlT3JpZ2luYWxTZXJpZXNPcmRlcgogICAgICAgIC8vIFRoaXMgbWV0aG9kIHJlcXVpcmVzIGpRdWVyeSAxLjQrCiAgICAgICAgLy8gUmVzdG9yZSB0aGUgc2VyaWVzIGNhbnZhcyBvcmRlciB0byBpdHMgb3JpZ2luYWwgb3JkZXIKICAgICAgICAvLyB3aGVuIHRoZSBwbG90IHdhcyBjcmVhdGVkLgogICAgICAgIHRoaXMucmVzdG9yZU9yaWdpbmFsU2VyaWVzT3JkZXIgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBpLCBqLCBhcnI9W10sIHNlcmVsZW0sIHNoYWRlbGVtOwogICAgICAgICAgICBmb3IgKGk9MDsgaTx0aGlzLnNlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgYXJyLnB1c2goaSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMuc2VyaWVzU3RhY2sgPT0gYXJyKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5wcmV2aW91c1Nlcmllc1N0YWNrID0gdGhpcy5zZXJpZXNTdGFjay5zbGljZSgwKTsKICAgICAgICAgICAgdGhpcy5zZXJpZXNTdGFjayA9IGFycjsKICAgICAgICAgICAgZm9yIChpPTE7IGk8dGhpcy5zZXJpZXNTdGFjay5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgc2VyZWxlbSA9IHRoaXMuc2VyaWVzW2ldLmNhbnZhcy5fZWxlbS5kZXRhY2goKTsKICAgICAgICAgICAgICAgIHNoYWRlbGVtID0gdGhpcy5zZXJpZXNbaV0uc2hhZG93Q2FudmFzLl9lbGVtLmRldGFjaCgpOwogICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNbaS0xXS5zaGFkb3dDYW52YXMuX2VsZW0uYWZ0ZXIoc2hhZGVsZW0pOwogICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNbaS0xXS5jYW52YXMuX2VsZW0uYWZ0ZXIoc2VyZWxlbSk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIAogICAgICAgIHRoaXMuYWN0aXZhdGVUaGVtZSA9IGZ1bmN0aW9uIChuYW1lKSB7CiAgICAgICAgICAgIHRoaXMudGhlbWVFbmdpbmUuYWN0aXZhdGUodGhpcywgbmFtZSk7CiAgICAgICAgfTsKICAgIH0KICAgIAogICAgCiAgICAvLyBjb25wdXRlIGEgaGlnaGxpZ2h0IGNvbG9yIG9yIGFycmF5IG9mIGhpZ2hsaWdodCBjb2xvcnMgZnJvbSBnaXZlbiBjb2xvcnMuCiAgICAkLmpxcGxvdC5jb21wdXRlSGlnaGxpZ2h0Q29sb3JzICA9IGZ1bmN0aW9uKGNvbG9ycykgewogICAgICAgIHZhciByZXQ7CiAgICAgICAgaWYgKCQuaXNBcnJheShjb2xvcnMpKSB7CiAgICAgICAgICAgIHJldCA9IFtdOwogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8Y29sb3JzLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgICAgIHZhciByZ2JhID0gJC5qcXBsb3QuZ2V0Q29sb3JDb21wb25lbnRzKGNvbG9yc1tpXSk7CiAgICAgICAgICAgICAgICB2YXIgbmV3cmdiID0gW3JnYmFbMF0sIHJnYmFbMV0sIHJnYmFbMl1dOwogICAgICAgICAgICAgICAgdmFyIHN1bSA9IG5ld3JnYlswXSArIG5ld3JnYlsxXSArIG5ld3JnYlsyXTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MDsgajwzOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIGRhcmtlbmluZywgbG93ZXN0IGNvbG9yIGNvbXBvbmVudCBjYW4gYmUgaXMgNjAuCiAgICAgICAgICAgICAgICAgICAgbmV3cmdiW2pdID0gKHN1bSA+IDY2MCkgPyAgbmV3cmdiW2pdICogMC44NSA6IDAuNzMgKiBuZXdyZ2Jbal0gKyA5MDsKICAgICAgICAgICAgICAgICAgICBuZXdyZ2Jbal0gPSBwYXJzZUludChuZXdyZ2Jbal0sIDEwKTsKICAgICAgICAgICAgICAgICAgICAobmV3cmdiW2pdID4gMjU1KSA/IDI1NSA6IG5ld3JnYltqXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8vIG5ld3JnYlszXSA9IChyZ2JhWzNdID4gMC40KSA/IHJnYmFbM10gKiAwLjQgOiByZ2JhWzNdICogMS41OwogICAgICAgICAgICAgICAgLy8gbmV3cmdiWzNdID0gKHJnYmFbM10gPiAwLjUpID8gMC44ICogcmdiYVszXSAtIC4xIDogcmdiYVszXSArIDAuMjsKICAgICAgICAgICAgICAgIG5ld3JnYlszXSA9IDAuMyArIDAuMzUgKiByZ2JhWzNdOwogICAgICAgICAgICAgICAgcmV0LnB1c2goJ3JnYmEoJytuZXdyZ2JbMF0rJywnK25ld3JnYlsxXSsnLCcrbmV3cmdiWzJdKycsJytuZXdyZ2JbM10rJyknKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdmFyIHJnYmEgPSAkLmpxcGxvdC5nZXRDb2xvckNvbXBvbmVudHMoY29sb3JzKTsKICAgICAgICAgICAgdmFyIG5ld3JnYiA9IFtyZ2JhWzBdLCByZ2JhWzFdLCByZ2JhWzJdXTsKICAgICAgICAgICAgdmFyIHN1bSA9IG5ld3JnYlswXSArIG5ld3JnYlsxXSArIG5ld3JnYlsyXTsKICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPDM7IGorKykgewogICAgICAgICAgICAgICAgLy8gd2hlbiBkYXJrZW5pbmcsIGxvd2VzdCBjb2xvciBjb21wb25lbnQgY2FuIGJlIGlzIDYwLgogICAgICAgICAgICAgICAgLy8gbmV3cmdiW2pdID0gKHN1bSA+IDU3MCkgPyAgbmV3cmdiW2pdICogMC44IDogbmV3cmdiW2pdICsgMC4zICogKDI1NSAtIG5ld3JnYltqXSk7CiAgICAgICAgICAgICAgICAvLyBuZXdyZ2Jbal0gPSBwYXJzZUludChuZXdyZ2Jbal0sIDEwKTsKICAgICAgICAgICAgICAgIG5ld3JnYltqXSA9IChzdW0gPiA2NjApID8gIG5ld3JnYltqXSAqIDAuODUgOiAwLjczICogbmV3cmdiW2pdICsgOTA7CiAgICAgICAgICAgICAgICBuZXdyZ2Jbal0gPSBwYXJzZUludChuZXdyZ2Jbal0sIDEwKTsKICAgICAgICAgICAgICAgIChuZXdyZ2Jbal0gPiAyNTUpID8gMjU1IDogbmV3cmdiW2pdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIG5ld3JnYlszXSA9IChyZ2JhWzNdID4gMC40KSA/IHJnYmFbM10gKiAwLjQgOiByZ2JhWzNdICogMS41OwogICAgICAgICAgICAvLyBuZXdyZ2JbM10gPSAocmdiYVszXSA+IDAuNSkgPyAwLjggKiByZ2JhWzNdIC0gLjEgOiByZ2JhWzNdICsgMC4yOwogICAgICAgICAgICBuZXdyZ2JbM10gPSAwLjMgKyAwLjM1ICogcmdiYVszXTsKICAgICAgICAgICAgcmV0ID0gJ3JnYmEoJytuZXdyZ2JbMF0rJywnK25ld3JnYlsxXSsnLCcrbmV3cmdiWzJdKycsJytuZXdyZ2JbM10rJyknOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmV0OwogICAgfTsKICAgICAgICAKICAgJC5qcXBsb3QuQ29sb3JHZW5lcmF0b3IgPSBmdW5jdGlvbihjb2xvcnMpIHsKICAgICAgICBjb2xvcnMgPSBjb2xvcnMgfHwgJC5qcXBsb3QuY29uZmlnLmRlZmF1bHRDb2xvcnM7CiAgICAgICAgdmFyIGlkeCA9IDA7CiAgICAgICAgCiAgICAgICAgdGhpcy5uZXh0ID0gZnVuY3Rpb24gKCkgeyAKICAgICAgICAgICAgaWYgKGlkeCA8IGNvbG9ycy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIHJldHVybiBjb2xvcnNbaWR4KytdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWR4ID0gMDsKICAgICAgICAgICAgICAgIHJldHVybiBjb2xvcnNbaWR4KytdOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICAKICAgICAgICB0aGlzLnByZXZpb3VzID0gZnVuY3Rpb24gKCkgeyAKICAgICAgICAgICAgaWYgKGlkeCA+IDApIHsKICAgICAgICAgICAgICAgIHJldHVybiBjb2xvcnNbaWR4LS1dOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWR4ID0gY29sb3JzLmxlbmd0aC0xOwogICAgICAgICAgICAgICAgcmV0dXJuIGNvbG9yc1tpZHhdOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICAKICAgICAgICAvLyBnZXQgYSBjb2xvciBieSBpbmRleCB3aXRob3V0IGFkdmFuY2luZyBwb2ludGVyLgogICAgICAgIHRoaXMuZ2V0ID0gZnVuY3Rpb24oaSkgewogICAgICAgICAgICB2YXIgaWR4ID0gaSAtIGNvbG9ycy5sZW5ndGggKiBNYXRoLmZsb29yKGkvY29sb3JzLmxlbmd0aCk7CiAgICAgICAgICAgIHJldHVybiBjb2xvcnNbaWR4XTsKICAgICAgICB9OwogICAgICAgIAogICAgICAgIHRoaXMuc2V0Q29sb3JzID0gZnVuY3Rpb24oYykgewogICAgICAgICAgICBjb2xvcnMgPSBjOwogICAgICAgIH07CiAgICAgICAgCiAgICAgICAgdGhpcy5yZXNldCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZHggPSAwOwogICAgICAgIH07CgogICAgICAgIHRoaXMuZ2V0SW5kZXggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIGlkeDsKICAgICAgICB9OwoKICAgICAgICB0aGlzLnNldEluZGV4ID0gZnVuY3Rpb24oaW5kZXgpIHsKICAgICAgICAgICAgaWR4ID0gaW5kZXg7CiAgICAgICAgfTsKICAgIH07CgogICAgLy8gY29udmVydCBhIGhleCBjb2xvciBzdHJpbmcgdG8gcmdiIHN0cmluZy4KICAgIC8vIGggLSAzIG9yIDYgY2hhcmFjdGVyIGhleCBzdHJpbmcsIHdpdGggb3Igd2l0aG91dCBsZWFkaW5nICMKICAgIC8vIGEgLSBvcHRpb25hbCBhbHBoYQogICAgJC5qcXBsb3QuaGV4MnJnYiA9IGZ1bmN0aW9uKGgsIGEpIHsKICAgICAgICBoID0gaC5yZXBsYWNlKCcjJywgJycpOwogICAgICAgIGlmIChoLmxlbmd0aCA9PSAzKSB7CiAgICAgICAgICAgIGggPSBoLmNoYXJBdCgwKStoLmNoYXJBdCgwKStoLmNoYXJBdCgxKStoLmNoYXJBdCgxKStoLmNoYXJBdCgyKStoLmNoYXJBdCgyKTsKICAgICAgICB9CiAgICAgICAgdmFyIHJnYjsKICAgICAgICByZ2IgPSAncmdiYSgnK3BhcnNlSW50KGguc2xpY2UoMCwyKSwgMTYpKycsICcrcGFyc2VJbnQoaC5zbGljZSgyLDQpLCAxNikrJywgJytwYXJzZUludChoLnNsaWNlKDQsNiksIDE2KTsKICAgICAgICBpZiAoYSkgewogICAgICAgICAgICByZ2IgKz0gJywgJythOwogICAgICAgIH0KICAgICAgICByZ2IgKz0gJyknOwogICAgICAgIHJldHVybiByZ2I7CiAgICB9OwogICAgCiAgICAvLyBjb252ZXJ0IGFuIHJnYiBjb2xvciBzcGVjIHRvIGEgaGV4IHNwZWMuICBpZ25vcmUgYW55IGFscGhhIHNwZWNpZmljYXRpb24uCiAgICAkLmpxcGxvdC5yZ2IyaGV4ID0gZnVuY3Rpb24ocykgewogICAgICAgIHZhciBwYXQgPSAvcmdiYT9cKCAqKFswLTldezEsM31cLj9bMC05XSolPykgKiwgKihbMC05XXsxLDN9XC4/WzAtOV0qJT8pICosICooWzAtOV17MSwzfVwuP1swLTldKiU/KSAqKD86LCAqWzAtOS5dKik/XCkvOwogICAgICAgIHZhciBtID0gcy5tYXRjaChwYXQpOwogICAgICAgIHZhciBoID0gJyMnOwogICAgICAgIGZvciAodmFyIGk9MTsgaTw0OyBpKyspIHsKICAgICAgICAgICAgdmFyIHRlbXA7CiAgICAgICAgICAgIGlmIChtW2ldLnNlYXJjaCgvJS8pICE9IC0xKSB7CiAgICAgICAgICAgICAgICB0ZW1wID0gcGFyc2VJbnQoMjU1Km1baV0vMTAwLCAxMCkudG9TdHJpbmcoMTYpOwogICAgICAgICAgICAgICAgaWYgKHRlbXAubGVuZ3RoID09IDEpIHsKICAgICAgICAgICAgICAgICAgICB0ZW1wID0gJzAnK3RlbXA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB0ZW1wID0gcGFyc2VJbnQobVtpXSwgMTApLnRvU3RyaW5nKDE2KTsKICAgICAgICAgICAgICAgIGlmICh0ZW1wLmxlbmd0aCA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgdGVtcCA9ICcwJyt0ZW1wOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGggKz0gdGVtcDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGg7CiAgICB9OwogICAgCiAgICAvLyBnaXZlbiBhIGNzcyBjb2xvciBzcGVjLCByZXR1cm4gYW4gcmdiIGNzcyBjb2xvciBzcGVjCiAgICAkLmpxcGxvdC5ub3JtYWxpemUycmdiID0gZnVuY3Rpb24ocywgYSkgewogICAgICAgIGlmIChzLnNlYXJjaCgvXiAqcmdiYT9cKC8pICE9IC0xKSB7CiAgICAgICAgICAgIHJldHVybiBzOyAKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAocy5zZWFyY2goL14gKiM/WzAtOWEtZkEtRl0/WzAtOWEtZkEtRl0vKSAhPSAtMSkgewogICAgICAgICAgICByZXR1cm4gJC5qcXBsb3QuaGV4MnJnYihzLCBhKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb2xvciBzcGVjJyk7CiAgICAgICAgfQogICAgfTsKICAgIAogICAgLy8gZXh0cmFjdCB0aGUgciwgZywgYiwgYSBjb2xvciBjb21wb25lbnRzIG91dCBvZiBhIGNzcyBjb2xvciBzcGVjLgogICAgJC5qcXBsb3QuZ2V0Q29sb3JDb21wb25lbnRzID0gZnVuY3Rpb24ocykgewogICAgICAgIC8vIGNoZWNrIHRvIHNlZSBpZiBhIGNvbG9yIGtleXdvcmQuCiAgICAgICAgcyA9ICQuanFwbG90LmNvbG9yS2V5d29yZE1hcFtzXSB8fCBzOwogICAgICAgIHZhciByZ2IgPSAkLmpxcGxvdC5ub3JtYWxpemUycmdiKHMpOwogICAgICAgIHZhciBwYXQgPSAvcmdiYT9cKCAqKFswLTldezEsM31cLj9bMC05XSolPykgKiwgKihbMC05XXsxLDN9XC4/WzAtOV0qJT8pICosICooWzAtOV17MSwzfVwuP1swLTldKiU/KSAqLD8gKihbMC05Ll0qICopP1wpLzsKICAgICAgICB2YXIgbSA9IHJnYi5tYXRjaChwYXQpOwogICAgICAgIHZhciByZXQgPSBbXTsKICAgICAgICBmb3IgKHZhciBpPTE7IGk8NDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChtW2ldLnNlYXJjaCgvJS8pICE9IC0xKSB7CiAgICAgICAgICAgICAgICByZXRbaS0xXSA9IHBhcnNlSW50KDI1NSptW2ldLzEwMCwgMTApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcmV0W2ktMV0gPSBwYXJzZUludChtW2ldLCAxMCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0WzNdID0gcGFyc2VGbG9hdChtWzRdKSA/IHBhcnNlRmxvYXQobVs0XSkgOiAxLjA7CiAgICAgICAgcmV0dXJuIHJldDsKICAgIH07CiAgICAKICAgICQuanFwbG90LmNvbG9yS2V5d29yZE1hcCA9IHsKICAgICAgICBhbGljZWJsdWU6ICdyZ2IoMjQwLCAyNDgsIDI1NSknLAogICAgICAgIGFudGlxdWV3aGl0ZTogJ3JnYigyNTAsIDIzNSwgMjE1KScsCiAgICAgICAgYXF1YTogJ3JnYiggMCwgMjU1LCAyNTUpJywKICAgICAgICBhcXVhbWFyaW5lOiAncmdiKDEyNywgMjU1LCAyMTIpJywKICAgICAgICBhenVyZTogJ3JnYigyNDAsIDI1NSwgMjU1KScsCiAgICAgICAgYmVpZ2U6ICdyZ2IoMjQ1LCAyNDUsIDIyMCknLAogICAgICAgIGJpc3F1ZTogJ3JnYigyNTUsIDIyOCwgMTk2KScsCiAgICAgICAgYmxhY2s6ICdyZ2IoIDAsIDAsIDApJywKICAgICAgICBibGFuY2hlZGFsbW9uZDogJ3JnYigyNTUsIDIzNSwgMjA1KScsCiAgICAgICAgYmx1ZTogJ3JnYiggMCwgMCwgMjU1KScsCiAgICAgICAgYmx1ZXZpb2xldDogJ3JnYigxMzgsIDQzLCAyMjYpJywKICAgICAgICBicm93bjogJ3JnYigxNjUsIDQyLCA0MiknLAogICAgICAgIGJ1cmx5d29vZDogJ3JnYigyMjIsIDE4NCwgMTM1KScsCiAgICAgICAgY2FkZXRibHVlOiAncmdiKCA5NSwgMTU4LCAxNjApJywKICAgICAgICBjaGFydHJldXNlOiAncmdiKDEyNywgMjU1LCAwKScsCiAgICAgICAgY2hvY29sYXRlOiAncmdiKDIxMCwgMTA1LCAzMCknLAogICAgICAgIGNvcmFsOiAncmdiKDI1NSwgMTI3LCA4MCknLAogICAgICAgIGNvcm5mbG93ZXJibHVlOiAncmdiKDEwMCwgMTQ5LCAyMzcpJywKICAgICAgICBjb3Juc2lsazogJ3JnYigyNTUsIDI0OCwgMjIwKScsCiAgICAgICAgY3JpbXNvbjogJ3JnYigyMjAsIDIwLCA2MCknLAogICAgICAgIGN5YW46ICdyZ2IoIDAsIDI1NSwgMjU1KScsCiAgICAgICAgZGFya2JsdWU6ICdyZ2IoIDAsIDAsIDEzOSknLAogICAgICAgIGRhcmtjeWFuOiAncmdiKCAwLCAxMzksIDEzOSknLAogICAgICAgIGRhcmtnb2xkZW5yb2Q6ICdyZ2IoMTg0LCAxMzQsIDExKScsCiAgICAgICAgZGFya2dyYXk6ICdyZ2IoMTY5LCAxNjksIDE2OSknLAogICAgICAgIGRhcmtncmVlbjogJ3JnYiggMCwgMTAwLCAwKScsCiAgICAgICAgZGFya2dyZXk6ICdyZ2IoMTY5LCAxNjksIDE2OSknLAogICAgICAgIGRhcmtraGFraTogJ3JnYigxODksIDE4MywgMTA3KScsCiAgICAgICAgZGFya21hZ2VudGE6ICdyZ2IoMTM5LCAwLCAxMzkpJywKICAgICAgICBkYXJrb2xpdmVncmVlbjogJ3JnYiggODUsIDEwNywgNDcpJywKICAgICAgICBkYXJrb3JhbmdlOiAncmdiKDI1NSwgMTQwLCAwKScsCiAgICAgICAgZGFya29yY2hpZDogJ3JnYigxNTMsIDUwLCAyMDQpJywKICAgICAgICBkYXJrcmVkOiAncmdiKDEzOSwgMCwgMCknLAogICAgICAgIGRhcmtzYWxtb246ICdyZ2IoMjMzLCAxNTAsIDEyMiknLAogICAgICAgIGRhcmtzZWFncmVlbjogJ3JnYigxNDMsIDE4OCwgMTQzKScsCiAgICAgICAgZGFya3NsYXRlYmx1ZTogJ3JnYiggNzIsIDYxLCAxMzkpJywKICAgICAgICBkYXJrc2xhdGVncmF5OiAncmdiKCA0NywgNzksIDc5KScsCiAgICAgICAgZGFya3NsYXRlZ3JleTogJ3JnYiggNDcsIDc5LCA3OSknLAogICAgICAgIGRhcmt0dXJxdW9pc2U6ICdyZ2IoIDAsIDIwNiwgMjA5KScsCiAgICAgICAgZGFya3Zpb2xldDogJ3JnYigxNDgsIDAsIDIxMSknLAogICAgICAgIGRlZXBwaW5rOiAncmdiKDI1NSwgMjAsIDE0NyknLAogICAgICAgIGRlZXBza3libHVlOiAncmdiKCAwLCAxOTEsIDI1NSknLAogICAgICAgIGRpbWdyYXk6ICdyZ2IoMTA1LCAxMDUsIDEwNSknLAogICAgICAgIGRpbWdyZXk6ICdyZ2IoMTA1LCAxMDUsIDEwNSknLAogICAgICAgIGRvZGdlcmJsdWU6ICdyZ2IoIDMwLCAxNDQsIDI1NSknLAogICAgICAgIGZpcmVicmljazogJ3JnYigxNzgsIDM0LCAzNCknLAogICAgICAgIGZsb3JhbHdoaXRlOiAncmdiKDI1NSwgMjUwLCAyNDApJywKICAgICAgICBmb3Jlc3RncmVlbjogJ3JnYiggMzQsIDEzOSwgMzQpJywKICAgICAgICBmdWNoc2lhOiAncmdiKDI1NSwgMCwgMjU1KScsCiAgICAgICAgZ2FpbnNib3JvOiAncmdiKDIyMCwgMjIwLCAyMjApJywKICAgICAgICBnaG9zdHdoaXRlOiAncmdiKDI0OCwgMjQ4LCAyNTUpJywKICAgICAgICBnb2xkOiAncmdiKDI1NSwgMjE1LCAwKScsCiAgICAgICAgZ29sZGVucm9kOiAncmdiKDIxOCwgMTY1LCAzMiknLAogICAgICAgIGdyYXk6ICdyZ2IoMTI4LCAxMjgsIDEyOCknLAogICAgICAgIGdyZXk6ICdyZ2IoMTI4LCAxMjgsIDEyOCknLAogICAgICAgIGdyZWVuOiAncmdiKCAwLCAxMjgsIDApJywKICAgICAgICBncmVlbnllbGxvdzogJ3JnYigxNzMsIDI1NSwgNDcpJywKICAgICAgICBob25leWRldzogJ3JnYigyNDAsIDI1NSwgMjQwKScsCiAgICAgICAgaG90cGluazogJ3JnYigyNTUsIDEwNSwgMTgwKScsCiAgICAgICAgaW5kaWFucmVkOiAncmdiKDIwNSwgOTIsIDkyKScsCiAgICAgICAgaW5kaWdvOiAncmdiKCA3NSwgMCwgMTMwKScsCiAgICAgICAgaXZvcnk6ICdyZ2IoMjU1LCAyNTUsIDI0MCknLAogICAgICAgIGtoYWtpOiAncmdiKDI0MCwgMjMwLCAxNDApJywKICAgICAgICBsYXZlbmRlcjogJ3JnYigyMzAsIDIzMCwgMjUwKScsCiAgICAgICAgbGF2ZW5kZXJibHVzaDogJ3JnYigyNTUsIDI0MCwgMjQ1KScsCiAgICAgICAgbGF3bmdyZWVuOiAncmdiKDEyNCwgMjUyLCAwKScsCiAgICAgICAgbGVtb25jaGlmZm9uOiAncmdiKDI1NSwgMjUwLCAyMDUpJywKICAgICAgICBsaWdodGJsdWU6ICdyZ2IoMTczLCAyMTYsIDIzMCknLAogICAgICAgIGxpZ2h0Y29yYWw6ICdyZ2IoMjQwLCAxMjgsIDEyOCknLAogICAgICAgIGxpZ2h0Y3lhbjogJ3JnYigyMjQsIDI1NSwgMjU1KScsCiAgICAgICAgbGlnaHRnb2xkZW5yb2R5ZWxsb3c6ICdyZ2IoMjUwLCAyNTAsIDIxMCknLAogICAgICAgIGxpZ2h0Z3JheTogJ3JnYigyMTEsIDIxMSwgMjExKScsCiAgICAgICAgbGlnaHRncmVlbjogJ3JnYigxNDQsIDIzOCwgMTQ0KScsCiAgICAgICAgbGlnaHRncmV5OiAncmdiKDIxMSwgMjExLCAyMTEpJywKICAgICAgICBsaWdodHBpbms6ICdyZ2IoMjU1LCAxODIsIDE5MyknLAogICAgICAgIGxpZ2h0c2FsbW9uOiAncmdiKDI1NSwgMTYwLCAxMjIpJywKICAgICAgICBsaWdodHNlYWdyZWVuOiAncmdiKCAzMiwgMTc4LCAxNzApJywKICAgICAgICBsaWdodHNreWJsdWU6ICdyZ2IoMTM1LCAyMDYsIDI1MCknLAogICAgICAgIGxpZ2h0c2xhdGVncmF5OiAncmdiKDExOSwgMTM2LCAxNTMpJywKICAgICAgICBsaWdodHNsYXRlZ3JleTogJ3JnYigxMTksIDEzNiwgMTUzKScsCiAgICAgICAgbGlnaHRzdGVlbGJsdWU6ICdyZ2IoMTc2LCAxOTYsIDIyMiknLAogICAgICAgIGxpZ2h0eWVsbG93OiAncmdiKDI1NSwgMjU1LCAyMjQpJywKICAgICAgICBsaW1lOiAncmdiKCAwLCAyNTUsIDApJywKICAgICAgICBsaW1lZ3JlZW46ICdyZ2IoIDUwLCAyMDUsIDUwKScsCiAgICAgICAgbGluZW46ICdyZ2IoMjUwLCAyNDAsIDIzMCknLAogICAgICAgIG1hZ2VudGE6ICdyZ2IoMjU1LCAwLCAyNTUpJywKICAgICAgICBtYXJvb246ICdyZ2IoMTI4LCAwLCAwKScsCiAgICAgICAgbWVkaXVtYXF1YW1hcmluZTogJ3JnYigxMDIsIDIwNSwgMTcwKScsCiAgICAgICAgbWVkaXVtYmx1ZTogJ3JnYiggMCwgMCwgMjA1KScsCiAgICAgICAgbWVkaXVtb3JjaGlkOiAncmdiKDE4NiwgODUsIDIxMSknLAogICAgICAgIG1lZGl1bXB1cnBsZTogJ3JnYigxNDcsIDExMiwgMjE5KScsCiAgICAgICAgbWVkaXVtc2VhZ3JlZW46ICdyZ2IoIDYwLCAxNzksIDExMyknLAogICAgICAgIG1lZGl1bXNsYXRlYmx1ZTogJ3JnYigxMjMsIDEwNCwgMjM4KScsCiAgICAgICAgbWVkaXVtc3ByaW5nZ3JlZW46ICdyZ2IoIDAsIDI1MCwgMTU0KScsCiAgICAgICAgbWVkaXVtdHVycXVvaXNlOiAncmdiKCA3MiwgMjA5LCAyMDQpJywKICAgICAgICBtZWRpdW12aW9sZXRyZWQ6ICdyZ2IoMTk5LCAyMSwgMTMzKScsCiAgICAgICAgbWlkbmlnaHRibHVlOiAncmdiKCAyNSwgMjUsIDExMiknLAogICAgICAgIG1pbnRjcmVhbTogJ3JnYigyNDUsIDI1NSwgMjUwKScsCiAgICAgICAgbWlzdHlyb3NlOiAncmdiKDI1NSwgMjI4LCAyMjUpJywKICAgICAgICBtb2NjYXNpbjogJ3JnYigyNTUsIDIyOCwgMTgxKScsCiAgICAgICAgbmF2YWpvd2hpdGU6ICdyZ2IoMjU1LCAyMjIsIDE3MyknLAogICAgICAgIG5hdnk6ICdyZ2IoIDAsIDAsIDEyOCknLAogICAgICAgIG9sZGxhY2U6ICdyZ2IoMjUzLCAyNDUsIDIzMCknLAogICAgICAgIG9saXZlOiAncmdiKDEyOCwgMTI4LCAwKScsCiAgICAgICAgb2xpdmVkcmFiOiAncmdiKDEwNywgMTQyLCAzNSknLAogICAgICAgIG9yYW5nZTogJ3JnYigyNTUsIDE2NSwgMCknLAogICAgICAgIG9yYW5nZXJlZDogJ3JnYigyNTUsIDY5LCAwKScsCiAgICAgICAgb3JjaGlkOiAncmdiKDIxOCwgMTEyLCAyMTQpJywKICAgICAgICBwYWxlZ29sZGVucm9kOiAncmdiKDIzOCwgMjMyLCAxNzApJywKICAgICAgICBwYWxlZ3JlZW46ICdyZ2IoMTUyLCAyNTEsIDE1MiknLAogICAgICAgIHBhbGV0dXJxdW9pc2U6ICdyZ2IoMTc1LCAyMzgsIDIzOCknLAogICAgICAgIHBhbGV2aW9sZXRyZWQ6ICdyZ2IoMjE5LCAxMTIsIDE0NyknLAogICAgICAgIHBhcGF5YXdoaXA6ICdyZ2IoMjU1LCAyMzksIDIxMyknLAogICAgICAgIHBlYWNocHVmZjogJ3JnYigyNTUsIDIxOCwgMTg1KScsCiAgICAgICAgcGVydTogJ3JnYigyMDUsIDEzMywgNjMpJywKICAgICAgICBwaW5rOiAncmdiKDI1NSwgMTkyLCAyMDMpJywKICAgICAgICBwbHVtOiAncmdiKDIyMSwgMTYwLCAyMjEpJywKICAgICAgICBwb3dkZXJibHVlOiAncmdiKDE3NiwgMjI0LCAyMzApJywKICAgICAgICBwdXJwbGU6ICdyZ2IoMTI4LCAwLCAxMjgpJywKICAgICAgICByZWQ6ICdyZ2IoMjU1LCAwLCAwKScsCiAgICAgICAgcm9zeWJyb3duOiAncmdiKDE4OCwgMTQzLCAxNDMpJywKICAgICAgICByb3lhbGJsdWU6ICdyZ2IoIDY1LCAxMDUsIDIyNSknLAogICAgICAgIHNhZGRsZWJyb3duOiAncmdiKDEzOSwgNjksIDE5KScsCiAgICAgICAgc2FsbW9uOiAncmdiKDI1MCwgMTI4LCAxMTQpJywKICAgICAgICBzYW5keWJyb3duOiAncmdiKDI0NCwgMTY0LCA5NiknLAogICAgICAgIHNlYWdyZWVuOiAncmdiKCA0NiwgMTM5LCA4NyknLAogICAgICAgIHNlYXNoZWxsOiAncmdiKDI1NSwgMjQ1LCAyMzgpJywKICAgICAgICBzaWVubmE6ICdyZ2IoMTYwLCA4MiwgNDUpJywKICAgICAgICBzaWx2ZXI6ICdyZ2IoMTkyLCAxOTIsIDE5MiknLAogICAgICAgIHNreWJsdWU6ICdyZ2IoMTM1LCAyMDYsIDIzNSknLAogICAgICAgIHNsYXRlYmx1ZTogJ3JnYigxMDYsIDkwLCAyMDUpJywKICAgICAgICBzbGF0ZWdyYXk6ICdyZ2IoMTEyLCAxMjgsIDE0NCknLAogICAgICAgIHNsYXRlZ3JleTogJ3JnYigxMTIsIDEyOCwgMTQ0KScsCiAgICAgICAgc25vdzogJ3JnYigyNTUsIDI1MCwgMjUwKScsCiAgICAgICAgc3ByaW5nZ3JlZW46ICdyZ2IoIDAsIDI1NSwgMTI3KScsCiAgICAgICAgc3RlZWxibHVlOiAncmdiKCA3MCwgMTMwLCAxODApJywKICAgICAgICB0YW46ICdyZ2IoMjEwLCAxODAsIDE0MCknLAogICAgICAgIHRlYWw6ICdyZ2IoIDAsIDEyOCwgMTI4KScsCiAgICAgICAgdGhpc3RsZTogJ3JnYigyMTYsIDE5MSwgMjE2KScsCiAgICAgICAgdG9tYXRvOiAncmdiKDI1NSwgOTksIDcxKScsCiAgICAgICAgdHVycXVvaXNlOiAncmdiKCA2NCwgMjI0LCAyMDgpJywKICAgICAgICB2aW9sZXQ6ICdyZ2IoMjM4LCAxMzAsIDIzOCknLAogICAgICAgIHdoZWF0OiAncmdiKDI0NSwgMjIyLCAxNzkpJywKICAgICAgICB3aGl0ZTogJ3JnYigyNTUsIDI1NSwgMjU1KScsCiAgICAgICAgd2hpdGVzbW9rZTogJ3JnYigyNDUsIDI0NSwgMjQ1KScsCiAgICAgICAgeWVsbG93OiAncmdiKDI1NSwgMjU1LCAwKScsCiAgICAgICAgeWVsbG93Z3JlZW46ICdyZ2IoMTU0LCAyMDUsIDUwKScKICAgIH07CgogICAgCgoKICAgIC8vIGNsYXNzOiAkLmpxcGxvdC5BeGlzTGFiZWxSZW5kZXJlcgogICAgLy8gUmVuZGVyZXIgdG8gcGxhY2UgbGFiZWxzIG9uIHRoZSBheGVzLgogICAgJC5qcXBsb3QuQXhpc0xhYmVsUmVuZGVyZXIgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAkLmpxcGxvdC5FbGVtQ29udGFpbmVyLmNhbGwodGhpcyk7CiAgICAgICAgLy8gbmFtZSBvZiB0aGUgYXhpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyB0aWNrCiAgICAgICAgdGhpcy5heGlzOwogICAgICAgIC8vIHByb3A6IHNob3cKICAgICAgICAvLyB3aGV0aGVyIG9yIG5vdCB0byBzaG93IHRoZSB0aWNrIChtYXJrIGFuZCBsYWJlbCkuCiAgICAgICAgdGhpcy5zaG93ID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBsYWJlbAogICAgICAgIC8vIFRoZSB0ZXh0IG9yIGh0bWwgZm9yIHRoZSBsYWJlbC4KICAgICAgICB0aGlzLmxhYmVsID0gJyc7CiAgICAgICAgdGhpcy5mb250RmFtaWx5ID0gbnVsbDsKICAgICAgICB0aGlzLmZvbnRTaXplID0gbnVsbDsKICAgICAgICB0aGlzLnRleHRDb2xvciA9IG51bGw7CiAgICAgICAgdGhpcy5fZWxlbTsKICAgICAgICAvLyBwcm9wOiBlc2NhcGVIVE1MCiAgICAgICAgLy8gdHJ1ZSB0byBlc2NhcGUgSFRNTCBlbnRpdGllcyBpbiB0aGUgbGFiZWwuCiAgICAgICAgdGhpcy5lc2NhcGVIVE1MID0gZmFsc2U7CiAgICAgICAgCiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5BeGlzTGFiZWxSZW5kZXJlci5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuRWxlbUNvbnRhaW5lcigpOwogICAgJC5qcXBsb3QuQXhpc0xhYmVsUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuQXhpc0xhYmVsUmVuZGVyZXI7CiAgICAKICAgICQuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQXhpc0xhYmVsUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjdHgsIHBsb3QpIHsKICAgICAgICAvLyBNZW1vcnkgTGVha3MgcGF0Y2gKICAgICAgICBpZiAodGhpcy5fZWxlbSkgewogICAgICAgICAgICB0aGlzLl9lbGVtLmVtcHR5Rm9yY2UoKTsKICAgICAgICAgICAgdGhpcy5fZWxlbSA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICB0aGlzLl9lbGVtID0gJCgnPGRpdiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IiBjbGFzcz0ianFwbG90LScrdGhpcy5heGlzKyctbGFiZWwiPjwvZGl2PicpOwogICAgICAgIAogICAgICAgIGlmIChOdW1iZXIodGhpcy5sYWJlbCkpIHsKICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoJ3doaXRlLXNwYWNlJywgJ25vd3JhcCcpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoIXRoaXMuZXNjYXBlSFRNTCkgewogICAgICAgICAgICB0aGlzLl9lbGVtLmh0bWwodGhpcy5sYWJlbCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICB0aGlzLl9lbGVtLnRleHQodGhpcy5sYWJlbCk7CiAgICAgICAgfQogICAgICAgIGlmICh0aGlzLmZvbnRGYW1pbHkpIHsKICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoJ2ZvbnQtZmFtaWx5JywgdGhpcy5mb250RmFtaWx5KTsKICAgICAgICB9CiAgICAgICAgaWYgKHRoaXMuZm9udFNpemUpIHsKICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoJ2ZvbnQtc2l6ZScsIHRoaXMuZm9udFNpemUpOwogICAgICAgIH0KICAgICAgICBpZiAodGhpcy50ZXh0Q29sb3IpIHsKICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoJ2NvbG9yJywgdGhpcy50ZXh0Q29sb3IpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gdGhpcy5fZWxlbTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyLnByb3RvdHlwZS5wYWNrID0gZnVuY3Rpb24oKSB7CiAgICB9OwoKICAgIC8vIGNsYXNzOiAkLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyCiAgICAvLyBBICJ0aWNrIiBvYmplY3Qgc2hvd2luZyB0aGUgdmFsdWUgb2YgYSB0aWNrL2dyaWRsaW5lIG9uIHRoZSBwbG90LgogICAgJC5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlciA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAvLyBHcm91cDogUHJvcGVydGllcwogICAgICAgICQuanFwbG90LkVsZW1Db250YWluZXIuY2FsbCh0aGlzKTsKICAgICAgICAvLyBwcm9wOiBtYXJrCiAgICAgICAgLy8gdGljayBtYXJrIG9uIHRoZSBheGlzLiAgT25lIG9mICdpbnNpZGUnLCAnb3V0c2lkZScsICdjcm9zcycsICcnIG9yIG51bGwuCiAgICAgICAgdGhpcy5tYXJrID0gJ291dHNpZGUnOwogICAgICAgIC8vIG5hbWUgb2YgdGhlIGF4aXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGljawogICAgICAgIHRoaXMuYXhpczsKICAgICAgICAvLyBwcm9wOiBzaG93TWFyawogICAgICAgIC8vIHdoZXRoZXIgb3Igbm90IHRvIHNob3cgdGhlIG1hcmsgb24gdGhlIGF4aXMuCiAgICAgICAgdGhpcy5zaG93TWFyayA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogc2hvd0dyaWRsaW5lCiAgICAgICAgLy8gd2hldGhlciBvciBub3QgdG8gZHJhdyB0aGUgZ3JpZGxpbmUgb24gdGhlIGdyaWQgYXQgdGhpcyB0aWNrLgogICAgICAgIHRoaXMuc2hvd0dyaWRsaW5lID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBpc01pbm9yVGljawogICAgICAgIC8vIGlmIHRoaXMgaXMgYSBtaW5vciB0aWNrLgogICAgICAgIHRoaXMuaXNNaW5vclRpY2sgPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiBzaXplCiAgICAgICAgLy8gTGVuZ3RoIG9mIHRoZSB0aWNrIGJleW9uZCB0aGUgZ3JpZCBpbiBwaXhlbHMuCiAgICAgICAgLy8gREVQUkVDQVRFRDogVGhpcyBoYXMgYmVlbiBzdXBlcmNlZWRlZCBieSBtYXJrU2l6ZQogICAgICAgIHRoaXMuc2l6ZSA9IDQ7CiAgICAgICAgLy8gcHJvcDogIG1hcmtTaXplCiAgICAgICAgLy8gTGVuZ3RoIG9mIHRoZSB0aWNrIG1hcmtzIGluIHBpeGVscy4gIEZvciAnY3Jvc3MnIHN0eWxlLCBsZW5ndGgKICAgICAgICAvLyB3aWxsIGJlIHN0b2tlZCBhYm92ZSBhbmQgYmVsb3cgYXhpcywgc28gdG90YWwgbGVuZ3RoIHdpbGwgYmUgdHdpY2UgdGhpcy4KICAgICAgICB0aGlzLm1hcmtTaXplID0gNjsKICAgICAgICAvLyBwcm9wOiBzaG93CiAgICAgICAgLy8gd2hldGhlciBvciBub3QgdG8gc2hvdyB0aGUgdGljayAobWFyayBhbmQgbGFiZWwpLgogICAgICAgIC8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSByZXF1aXJlcyBtb3JlIHRlc3RpbmcuICBJdCBpcyByZWNvbW1lbmRlZAogICAgICAgIC8vIHRvIHNldCBzaG93TGFiZWwgYW5kIHNob3dNYXJrIHRvIGZhbHNlIGluc3RlYWQuCiAgICAgICAgdGhpcy5zaG93ID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBzaG93TGFiZWwKICAgICAgICAvLyB3aGV0aGVyIG9yIG5vdCB0byBzaG93IHRoZSBsYWJlbC4KICAgICAgICB0aGlzLnNob3dMYWJlbCA9IHRydWU7CiAgICAgICAgdGhpcy5sYWJlbCA9IG51bGw7CiAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7CiAgICAgICAgdGhpcy5fc3R5bGVzID0ge307CiAgICAgICAgLy8gcHJvcDogZm9ybWF0dGVyCiAgICAgICAgLy8gQSBjbGFzcyBvZiBhIGZvcm1hdHRlciBmb3IgdGhlIHRpY2sgdGV4dC4gIHNwcmludGYgYnkgZGVmYXVsdC4KICAgICAgICB0aGlzLmZvcm1hdHRlciA9ICQuanFwbG90LkRlZmF1bHRUaWNrRm9ybWF0dGVyOwogICAgICAgIC8vIHByb3A6IHByZWZpeAogICAgICAgIC8vIFN0cmluZyB0byBwcmVwZW5kIHRvIHRoZSB0aWNrIGxhYmVsLgogICAgICAgIC8vIFByZWZpeCBpcyBwcmVwZW5kZWQgdG8gdGhlIGZvcm1hdHRlZCB0aWNrIGxhYmVsLgogICAgICAgIHRoaXMucHJlZml4ID0gJyc7CiAgICAgICAgLy8gcHJvcDogc3VmZml4CiAgICAgICAgLy8gU3RyaW5nIHRvIGFwcGVuZCB0byB0aGUgdGljayBsYWJlbC4KICAgICAgICAvLyBTdWZmaXggaXMgYXBwZW5kZWQgdG8gdGhlIGZvcm1hdHRlZCB0aWNrIGxhYmVsLgogICAgICAgIHRoaXMuc3VmZml4ID0gJyc7CiAgICAgICAgLy8gcHJvcDogZm9ybWF0U3RyaW5nCiAgICAgICAgLy8gc3RyaW5nIHBhc3NlZCB0byB0aGUgZm9ybWF0dGVyLgogICAgICAgIHRoaXMuZm9ybWF0U3RyaW5nID0gJyc7CiAgICAgICAgLy8gcHJvcDogZm9udEZhbWlseQogICAgICAgIC8vIGNzcyBzcGVjIGZvciB0aGUgZm9udC1mYW1pbHkgY3NzIGF0dHJpYnV0ZS4KICAgICAgICB0aGlzLmZvbnRGYW1pbHk7CiAgICAgICAgLy8gcHJvcDogZm9udFNpemUKICAgICAgICAvLyBjc3Mgc3BlYyBmb3IgdGhlIGZvbnQtc2l6ZSBjc3MgYXR0cmlidXRlLgogICAgICAgIHRoaXMuZm9udFNpemU7CiAgICAgICAgLy8gcHJvcDogdGV4dENvbG9yCiAgICAgICAgLy8gY3NzIHNwZWMgZm9yIHRoZSBjb2xvciBhdHRyaWJ1dGUuCiAgICAgICAgdGhpcy50ZXh0Q29sb3I7CiAgICAgICAgLy8gcHJvcDogZXNjYXBlSFRNTAogICAgICAgIC8vIHRydWUgdG8gZXNjYXBlIEhUTUwgZW50aXRpZXMgaW4gdGhlIGxhYmVsLgogICAgICAgIHRoaXMuZXNjYXBlSFRNTCA9IGZhbHNlOwogICAgICAgIHRoaXMuX2VsZW07CiAgICAgICAgdGhpcy5fYnJlYWtUaWNrID0gZmFsc2U7CiAgICAgICAgCiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuRWxlbUNvbnRhaW5lcigpOwogICAgJC5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyOwogICAgCiAgICAkLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyLnByb3RvdHlwZS5zZXRUaWNrID0gZnVuY3Rpb24odmFsdWUsIGF4aXNOYW1lLCBpc01pbm9yKSB7CiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgICAgIHRoaXMuYXhpcyA9IGF4aXNOYW1lOwogICAgICAgIGlmIChpc01pbm9yKSB7CiAgICAgICAgICAgIHRoaXMuaXNNaW5vclRpY2sgPSB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpczsKICAgIH07CiAgICAKICAgICQuanFwbG90LkF4aXNUaWNrUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbigpIHsKICAgICAgICBpZiAodGhpcy5sYWJlbCA9PT0gbnVsbCkgewogICAgICAgICAgICB0aGlzLmxhYmVsID0gdGhpcy5wcmVmaXggKyB0aGlzLmZvcm1hdHRlcih0aGlzLmZvcm1hdFN0cmluZywgdGhpcy52YWx1ZSkgKyB0aGlzLnN1ZmZpeDsKICAgICAgICB9CiAgICAgICAgdmFyIHN0eWxlID0ge3Bvc2l0aW9uOiAnYWJzb2x1dGUnfTsKICAgICAgICBpZiAoTnVtYmVyKHRoaXMubGFiZWwpKSB7CiAgICAgICAgICAgIHN0eWxlWyd3aGl0U3BhY2UnXSA9ICdub3dyYXAnOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBNZW1vcnkgTGVha3MgcGF0Y2gKICAgICAgICBpZiAodGhpcy5fZWxlbSkgewogICAgICAgICAgICB0aGlzLl9lbGVtLmVtcHR5Rm9yY2UoKTsKICAgICAgICAgICAgdGhpcy5fZWxlbSA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICB0aGlzLl9lbGVtID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CiAgICAgICAgdGhpcy5fZWxlbS5hZGRDbGFzcygianFwbG90LSIrdGhpcy5heGlzKyItdGljayIpOwogICAgICAgIAogICAgICAgIGlmICghdGhpcy5lc2NhcGVIVE1MKSB7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uaHRtbCh0aGlzLmxhYmVsKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHRoaXMuX2VsZW0udGV4dCh0aGlzLmxhYmVsKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgdGhpcy5fZWxlbS5jc3Moc3R5bGUpOwoKICAgICAgICBmb3IgKHZhciBzIGluIHRoaXMuX3N0eWxlcykgewogICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyhzLCB0aGlzLl9zdHlsZXNbc10pOwogICAgICAgIH0KICAgICAgICBpZiAodGhpcy5mb250RmFtaWx5KSB7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCdmb250LWZhbWlseScsIHRoaXMuZm9udEZhbWlseSk7CiAgICAgICAgfQogICAgICAgIGlmICh0aGlzLmZvbnRTaXplKSB7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCdmb250LXNpemUnLCB0aGlzLmZvbnRTaXplKTsKICAgICAgICB9CiAgICAgICAgaWYgKHRoaXMudGV4dENvbG9yKSB7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCdjb2xvcicsIHRoaXMudGV4dENvbG9yKTsKICAgICAgICB9CiAgICAgICAgaWYgKHRoaXMuX2JyZWFrVGljaykgewogICAgICAgICAgdGhpcy5fZWxlbS5hZGRDbGFzcygnanFwbG90LWJyZWFrVGljaycpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gdGhpcy5fZWxlbTsKICAgIH07CiAgICAgICAgCiAgICAkLmpxcGxvdC5EZWZhdWx0VGlja0Zvcm1hdHRlciA9IGZ1bmN0aW9uIChmb3JtYXQsIHZhbCkgewogICAgICAgIGlmICh0eXBlb2YgdmFsID09ICdudW1iZXInKSB7CiAgICAgICAgICAgIGlmICghZm9ybWF0KSB7CiAgICAgICAgICAgICAgICBmb3JtYXQgPSAkLmpxcGxvdC5jb25maWcuZGVmYXVsdFRpY2tGb3JtYXRTdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICQuanFwbG90LnNwcmludGYoZm9ybWF0LCB2YWwpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWwpOwogICAgICAgIH0KICAgIH07CiAgICAgICAgCiAgICAkLmpxcGxvdC5QZXJjZW50VGlja0Zvcm1hdHRlciA9IGZ1bmN0aW9uIChmb3JtYXQsIHZhbCkgewogICAgICAgIGlmICh0eXBlb2YgdmFsID09ICdudW1iZXInKSB7CiAgICAgICAgICAgIHZhbCA9IDEwMCAqIHZhbDsKICAgICAgICAgICAgaWYgKCFmb3JtYXQpIHsKICAgICAgICAgICAgICAgIGZvcm1hdCA9ICQuanFwbG90LmNvbmZpZy5kZWZhdWx0VGlja0Zvcm1hdFN0cmluZzsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJC5qcXBsb3Quc3ByaW50Zihmb3JtYXQsIHZhbCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbCk7CiAgICAgICAgfQogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUucGFjayA9IGZ1bmN0aW9uKCkgewogICAgfTsKICAgICAKICAgIC8vIENsYXNzOiAkLmpxcGxvdC5DYW52YXNHcmlkUmVuZGVyZXIKICAgIC8vIFRoZSBkZWZhdWx0IGpxUGxvdCBncmlkIHJlbmRlcmVyLCBjcmVhdGluZyBhIGdyaWQgb24gYSBjYW52YXMgZWxlbWVudC4KICAgIC8vIFRoZSByZW5kZXJlciBoYXMgbm8gYWRkaXRpb25hbCBvcHRpb25zIGJleW9uZCB0aGUgPEdyaWQ+IGNsYXNzLgogICAgJC5qcXBsb3QuQ2FudmFzR3JpZFJlbmRlcmVyID0gZnVuY3Rpb24oKXsKICAgICAgICB0aGlzLnNoYWRvd1JlbmRlcmVyID0gbmV3ICQuanFwbG90LlNoYWRvd1JlbmRlcmVyKCk7CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBjb250ZXh0IG9mIEdyaWQgb2JqZWN0CiAgICAkLmpxcGxvdC5DYW52YXNHcmlkUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgdGhpcy5fY3R4OwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgIC8vIHNldCB0aGUgc2hhZG93IHJlbmRlcmVyIG9wdGlvbnMKICAgICAgICB2YXIgc29wdHMgPSB7bGluZUpvaW46J21pdGVyJywgbGluZUNhcDoncm91bmQnLCBmaWxsOmZhbHNlLCBpc2FyYzpmYWxzZSwgYW5nbGU6dGhpcy5zaGFkb3dBbmdsZSwgb2Zmc2V0OnRoaXMuc2hhZG93T2Zmc2V0LCBhbHBoYTp0aGlzLnNoYWRvd0FscGhhLCBkZXB0aDp0aGlzLnNoYWRvd0RlcHRoLCBsaW5lV2lkdGg6dGhpcy5zaGFkb3dXaWR0aCwgY2xvc2VQYXRoOmZhbHNlLCBzdHJva2VTdHlsZTp0aGlzLnNoYWRvd0NvbG9yfTsKICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmluaXQoc29wdHMpOwogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggY29udGV4dCBvZiBHcmlkLgogICAgJC5qcXBsb3QuQ2FudmFzR3JpZFJlbmRlcmVyLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24ocGxvdCkgewogICAgICAgIHZhciBlbGVtOwogICAgICAgIC8vIE1lbW9yeSBMZWFrcyBwYXRjaAogICAgICAgIGlmICh0aGlzLl9lbGVtKSB7CiAgICAgICAgICBpZiAoJC5qcXBsb3QudXNlX2V4Y2FudmFzICYmIHdpbmRvdy5HX3ZtbENhbnZhc01hbmFnZXIudW5pbml0RWxlbWVudCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIGVsZW0gPSB0aGlzLl9lbGVtLmdldCgwKTsKICAgICAgICAgICAgd2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci51bmluaXRFbGVtZW50KGVsZW0pOwogICAgICAgICAgICBlbGVtID0gbnVsbDsKICAgICAgICAgIH0KICAgICAgICAgIAogICAgICAgICAgdGhpcy5fZWxlbS5lbXB0eUZvcmNlKCk7CiAgICAgICAgICB0aGlzLl9lbGVtID0gbnVsbDsKICAgICAgICB9CiAgICAgIAogICAgICAgIGVsZW0gPSBwbG90LmNhbnZhc01hbmFnZXIuZ2V0Q2FudmFzKCk7CgogICAgICAgIHZhciB3ID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGg7CiAgICAgICAgdmFyIGggPSB0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQ7CiAgICAgICAgZWxlbS53aWR0aCA9IHc7CiAgICAgICAgZWxlbS5oZWlnaHQgPSBoOwogICAgICAgIHRoaXMuX2VsZW0gPSAkKGVsZW0pOwogICAgICAgIHRoaXMuX2VsZW0uYWRkQ2xhc3MoJ2pxcGxvdC1ncmlkLWNhbnZhcycpOwogICAgICAgIHRoaXMuX2VsZW0uY3NzKHsgcG9zaXRpb246ICdhYnNvbHV0ZScsIGxlZnQ6IDAsIHRvcDogMCB9KTsKICAgICAgICAKICAgICAgICBlbGVtID0gcGxvdC5jYW52YXNNYW5hZ2VyLmluaXRDYW52YXMoZWxlbSk7CgogICAgICAgIHRoaXMuX3RvcCA9IHRoaXMuX29mZnNldHMudG9wOwogICAgICAgIHRoaXMuX2JvdHRvbSA9IGggLSB0aGlzLl9vZmZzZXRzLmJvdHRvbTsKICAgICAgICB0aGlzLl9sZWZ0ID0gdGhpcy5fb2Zmc2V0cy5sZWZ0OwogICAgICAgIHRoaXMuX3JpZ2h0ID0gdyAtIHRoaXMuX29mZnNldHMucmlnaHQ7CiAgICAgICAgdGhpcy5fd2lkdGggPSB0aGlzLl9yaWdodCAtIHRoaXMuX2xlZnQ7CiAgICAgICAgdGhpcy5faGVpZ2h0ID0gdGhpcy5fYm90dG9tIC0gdGhpcy5fdG9wOwogICAgICAgIC8vIGF2b2lkIG1lbW9yeSBsZWFrCiAgICAgICAgZWxlbSA9IG51bGw7CiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW07CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNHcmlkUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbigpIHsKICAgICAgICB0aGlzLl9jdHggPSB0aGlzLl9lbGVtLmdldCgwKS5nZXRDb250ZXh0KCIyZCIpOwogICAgICAgIHZhciBjdHggPSB0aGlzLl9jdHg7CiAgICAgICAgdmFyIGF4ZXMgPSB0aGlzLl9heGVzOwogICAgICAgIC8vIEFkZCB0aGUgZ3JpZCBvbnRvIHRoZSBncmlkIGNhbnZhcy4gIFRoaXMgaXMgdGhlIGJvdHRvbSBtb3N0IGxheWVyLgogICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgY3R4LmNsZWFyUmVjdCgwLCAwLCB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCwgdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0KTsKICAgICAgICBjdHguZmlsbFN0eWxlID0gdGhpcy5iYWNrZ3JvdW5kQ29sb3IgfHwgdGhpcy5iYWNrZ3JvdW5kOwogICAgICAgIGN0eC5maWxsUmVjdCh0aGlzLl9sZWZ0LCB0aGlzLl90b3AsIHRoaXMuX3dpZHRoLCB0aGlzLl9oZWlnaHQpOwogICAgICAgIAogICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgY3R4LmxpbmVKb2luID0gJ21pdGVyJzsKICAgICAgICBjdHgubGluZUNhcCA9ICdidXR0JzsKICAgICAgICBjdHgubGluZVdpZHRoID0gdGhpcy5ncmlkTGluZVdpZHRoOwogICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IHRoaXMuZ3JpZExpbmVDb2xvcjsKICAgICAgICB2YXIgYiwgZSwgcywgbTsKICAgICAgICB2YXIgYXggPSBbJ3hheGlzJywgJ3lheGlzJywgJ3gyYXhpcycsICd5MmF4aXMnXTsKICAgICAgICBmb3IgKHZhciBpPTQ7IGk+MDsgaS0tKSB7CiAgICAgICAgICAgIHZhciBuYW1lID0gYXhbaS0xXTsKICAgICAgICAgICAgdmFyIGF4aXMgPSBheGVzW25hbWVdOwogICAgICAgICAgICB2YXIgdGlja3MgPSBheGlzLl90aWNrczsKICAgICAgICAgICAgdmFyIG51bXRpY2tzID0gdGlja3MubGVuZ3RoOwogICAgICAgICAgICBpZiAoYXhpcy5zaG93KSB7CiAgICAgICAgICAgICAgICBpZiAoYXhpcy5kcmF3QmFzZWxpbmUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYm9wdHMgPSB7fTsKICAgICAgICAgICAgICAgICAgICBpZiAoYXhpcy5iYXNlbGluZVdpZHRoICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJvcHRzLmxpbmVXaWR0aCA9IGF4aXMuYmFzZWxpbmVXaWR0aDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGF4aXMuYmFzZWxpbmVDb2xvciAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBib3B0cy5zdHJva2VTdHlsZSA9IGF4aXMuYmFzZWxpbmVDb2xvcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChuYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3hheGlzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lICh0aGlzLl9sZWZ0LCB0aGlzLl9ib3R0b20sIHRoaXMuX3JpZ2h0LCB0aGlzLl9ib3R0b20sIGJvcHRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd5YXhpcyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZSAodGhpcy5fbGVmdCwgdGhpcy5fYm90dG9tLCB0aGlzLl9sZWZ0LCB0aGlzLl90b3AsIGJvcHRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd4MmF4aXMnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmUgKHRoaXMuX2xlZnQsIHRoaXMuX2JvdHRvbSwgdGhpcy5fcmlnaHQsIHRoaXMuX2JvdHRvbSwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3kyYXhpcyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZSAodGhpcy5fcmlnaHQsIHRoaXMuX2JvdHRvbSwgdGhpcy5fcmlnaHQsIHRoaXMuX3RvcCwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yICh2YXIgaj1udW10aWNrczsgaj4wOyBqLS0pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRpY2tzW2otMV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvdykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9zID0gTWF0aC5yb3VuZChheGlzLnUycCh0LnZhbHVlKSkgKyAwLjU7CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAneGF4aXMnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgdGhlIGdyaWQgbGluZSBpZiB3ZSBzaG91bGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5zaG93R3JpZGxpbmUgJiYgdGhpcy5kcmF3R3JpZGxpbmVzICYmICgoIXQuaXNNaW5vclRpY2sgJiYgYXhpcy5kcmF3TWFqb3JHcmlkbGluZXMpIHx8ICh0LmlzTWlub3JUaWNrICYmIGF4aXMuZHJhd01pbm9yR3JpZGxpbmVzKSkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lKHBvcywgdGhpcy5fdG9wLCBwb3MsIHRoaXMuX2JvdHRvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgdGhlIG1hcmsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5zaG93TWFyayAmJiB0Lm1hcmsgJiYgKCghdC5pc01pbm9yVGljayAmJiBheGlzLmRyYXdNYWpvclRpY2tNYXJrcykgfHwgKHQuaXNNaW5vclRpY2sgJiYgYXhpcy5kcmF3TWlub3JUaWNrTWFya3MpKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQubWFya1NpemU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSB0Lm1hcms7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSBNYXRoLnJvdW5kKGF4aXMudTJwKHQudmFsdWUpKSArIDAuNTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvdXRzaWRlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy5fYm90dG9tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9ib3R0b20rczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luc2lkZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX2JvdHRvbS1zOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9ib3R0b207CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjcm9zcyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX2JvdHRvbS1zOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9ib3R0b20rczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX2JvdHRvbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fYm90dG9tK3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB0aGUgc2hhZG93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNoYWRvdykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KGN0eCwgW1twb3MsYl0sW3BvcyxlXV0sIHtsaW5lQ2FwOididXR0JywgbGluZVdpZHRoOnRoaXMuZ3JpZExpbmVXaWR0aCwgb2Zmc2V0OnRoaXMuZ3JpZExpbmVXaWR0aCowLjc1LCBkZXB0aDoyLCBmaWxsOmZhbHNlLCBjbG9zZVBhdGg6ZmFsc2V9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lKHBvcywgYiwgcG9zLCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd5YXhpcyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB0aGUgZ3JpZCBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvd0dyaWRsaW5lICYmIHRoaXMuZHJhd0dyaWRsaW5lcyAmJiAoKCF0LmlzTWlub3JUaWNrICYmIGF4aXMuZHJhd01ham9yR3JpZGxpbmVzKSB8fCAodC5pc01pbm9yVGljayAmJiBheGlzLmRyYXdNaW5vckdyaWRsaW5lcykpICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZSh0aGlzLl9yaWdodCwgcG9zLCB0aGlzLl9sZWZ0LCBwb3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSBtYXJrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvd01hcmsgJiYgdC5tYXJrICYmICgoIXQuaXNNaW5vclRpY2sgJiYgYXhpcy5kcmF3TWFqb3JUaWNrTWFya3MpIHx8ICh0LmlzTWlub3JUaWNrICYmIGF4aXMuZHJhd01pbm9yVGlja01hcmtzKSkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0Lm1hcmtTaXplOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gdC5tYXJrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9zID0gTWF0aC5yb3VuZChheGlzLnUycCh0LnZhbHVlKSkgKyAwLjU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb3V0c2lkZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX2xlZnQtczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fbGVmdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luc2lkZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX2xlZnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX2xlZnQrczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Nyb3NzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy5fbGVmdC1zOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9sZWZ0K3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB0aGlzLl9sZWZ0LXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX2xlZnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSBzaGFkb3cKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hhZG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoY3R4LCBbW2IsIHBvc10sIFtlLCBwb3NdXSwge2xpbmVDYXA6J2J1dHQnLCBsaW5lV2lkdGg6dGhpcy5ncmlkTGluZVdpZHRoKjEuNSwgb2Zmc2V0OnRoaXMuZ3JpZExpbmVXaWR0aCowLjc1LCBmaWxsOmZhbHNlLCBjbG9zZVBhdGg6ZmFsc2V9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZShiLCBwb3MsIGUsIHBvcywge3N0cm9rZVN0eWxlOmF4aXMuYm9yZGVyQ29sb3J9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd4MmF4aXMnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgdGhlIGdyaWQgbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LnNob3dHcmlkbGluZSAmJiB0aGlzLmRyYXdHcmlkbGluZXMgJiYgKCghdC5pc01pbm9yVGljayAmJiBheGlzLmRyYXdNYWpvckdyaWRsaW5lcykgfHwgKHQuaXNNaW5vclRpY2sgJiYgYXhpcy5kcmF3TWlub3JHcmlkbGluZXMpKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmUocG9zLCB0aGlzLl9ib3R0b20sIHBvcywgdGhpcy5fdG9wKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB0aGUgbWFyawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LnNob3dNYXJrICYmIHQubWFyayAmJiAoKCF0LmlzTWlub3JUaWNrICYmIGF4aXMuZHJhd01ham9yVGlja01hcmtzKSB8fCAodC5pc01pbm9yVGljayAmJiBheGlzLmRyYXdNaW5vclRpY2tNYXJrcykpICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5tYXJrU2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHQubWFyazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9IE1hdGgucm91bmQoYXhpcy51MnAodC52YWx1ZSkpICsgMC41OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ291dHNpZGUnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB0aGlzLl90b3AtczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fdG9wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5zaWRlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy5fdG9wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl90b3ArczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Nyb3NzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy5fdG9wLXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX3RvcCtzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy5fdG9wLXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX3RvcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgdGhlIHNoYWRvdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zaGFkb3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIFtbcG9zLGJdLFtwb3MsZV1dLCB7bGluZUNhcDonYnV0dCcsIGxpbmVXaWR0aDp0aGlzLmdyaWRMaW5lV2lkdGgsIG9mZnNldDp0aGlzLmdyaWRMaW5lV2lkdGgqMC43NSwgZGVwdGg6MiwgZmlsbDpmYWxzZSwgY2xvc2VQYXRoOmZhbHNlfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmUocG9zLCBiLCBwb3MsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3kyYXhpcyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB0aGUgZ3JpZCBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvd0dyaWRsaW5lICYmIHRoaXMuZHJhd0dyaWRsaW5lcyAmJiAoKCF0LmlzTWlub3JUaWNrICYmIGF4aXMuZHJhd01ham9yR3JpZGxpbmVzKSB8fCAodC5pc01pbm9yVGljayAmJiBheGlzLmRyYXdNaW5vckdyaWRsaW5lcykpICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZSh0aGlzLl9sZWZ0LCBwb3MsIHRoaXMuX3JpZ2h0LCBwb3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSBtYXJrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvd01hcmsgJiYgdC5tYXJrICYmICgoIXQuaXNNaW5vclRpY2sgJiYgYXhpcy5kcmF3TWFqb3JUaWNrTWFya3MpIHx8ICh0LmlzTWlub3JUaWNrICYmIGF4aXMuZHJhd01pbm9yVGlja01hcmtzKSkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0Lm1hcmtTaXplOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gdC5tYXJrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9zID0gTWF0aC5yb3VuZChheGlzLnUycCh0LnZhbHVlKSkgKyAwLjU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb3V0c2lkZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX3JpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9yaWdodCtzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5zaWRlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy5fcmlnaHQtczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fcmlnaHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjcm9zcyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX3JpZ2h0LXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX3JpZ2h0K3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB0aGlzLl9yaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fcmlnaHQrczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgdGhlIHNoYWRvdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zaGFkb3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIFtbYiwgcG9zXSwgW2UsIHBvc11dLCB7bGluZUNhcDonYnV0dCcsIGxpbmVXaWR0aDp0aGlzLmdyaWRMaW5lV2lkdGgqMS41LCBvZmZzZXQ6dGhpcy5ncmlkTGluZVdpZHRoKjAuNzUsIGZpbGw6ZmFsc2UsIGNsb3NlUGF0aDpmYWxzZX0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lKGIsIHBvcywgZSwgcG9zLCB7c3Ryb2tlU3R5bGU6YXhpcy5ib3JkZXJDb2xvcn0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0ID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBheGlzID0gbnVsbDsKICAgICAgICAgICAgdGlja3MgPSBudWxsOwogICAgICAgIH0KICAgICAgICAvLyBOb3cgZHJhdyBncmlkIGxpbmVzIGZvciBhZGRpdGlvbmFsIHkgYXhlcwogICAgICAgIC8vLy8vLwogICAgICAgIC8vIFRPIERPOiBoYW5kbGUgeU1pZEF4aXMKICAgICAgICAvLy8vLy8KICAgICAgICBheCA9IFsneTNheGlzJywgJ3k0YXhpcycsICd5NWF4aXMnLCAneTZheGlzJywgJ3k3YXhpcycsICd5OGF4aXMnLCAneTlheGlzJywgJ3lNaWRBeGlzJ107CiAgICAgICAgZm9yICh2YXIgaT03OyBpPjA7IGktLSkgewogICAgICAgICAgICB2YXIgYXhpcyA9IGF4ZXNbYXhbaS0xXV07CiAgICAgICAgICAgIHZhciB0aWNrcyA9IGF4aXMuX3RpY2tzOwogICAgICAgICAgICBpZiAoYXhpcy5zaG93KSB7CiAgICAgICAgICAgICAgICB2YXIgdG4gPSB0aWNrc1theGlzLm51bWJlclRpY2tzLTFdOwogICAgICAgICAgICAgICAgdmFyIHQwID0gdGlja3NbMF07CiAgICAgICAgICAgICAgICB2YXIgbGVmdCA9IGF4aXMuZ2V0TGVmdCgpOwogICAgICAgICAgICAgICAgdmFyIHBvaW50cyA9IFtbbGVmdCwgdG4uZ2V0VG9wKCkgKyB0bi5nZXRIZWlnaHQoKS8yXSwgW2xlZnQsIHQwLmdldFRvcCgpICsgdDAuZ2V0SGVpZ2h0KCkvMiArIDEuMF1dOwogICAgICAgICAgICAgICAgLy8gZHJhdyB0aGUgc2hhZG93CiAgICAgICAgICAgICAgICBpZiAodGhpcy5zaGFkb3cpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoY3R4LCBwb2ludHMsIHtsaW5lQ2FwOididXR0JywgZmlsbDpmYWxzZSwgY2xvc2VQYXRoOmZhbHNlfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSBsaW5lCiAgICAgICAgICAgICAgICBkcmF3TGluZShwb2ludHNbMF1bMF0sIHBvaW50c1swXVsxXSwgcG9pbnRzWzFdWzBdLCBwb2ludHNbMV1bMV0sIHtsaW5lQ2FwOididXR0Jywgc3Ryb2tlU3R5bGU6YXhpcy5ib3JkZXJDb2xvciwgbGluZVdpZHRoOmF4aXMuYm9yZGVyV2lkdGh9KTsKICAgICAgICAgICAgICAgIC8vIGRyYXcgdGhlIHRpY2sgbWFya3MKICAgICAgICAgICAgICAgIGZvciAodmFyIGo9dGlja3MubGVuZ3RoOyBqPjA7IGotLSkgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGlja3Nbai0xXTsKICAgICAgICAgICAgICAgICAgICBzID0gdC5tYXJrU2l6ZTsKICAgICAgICAgICAgICAgICAgICBtID0gdC5tYXJrOwogICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSBNYXRoLnJvdW5kKGF4aXMudTJwKHQudmFsdWUpKSArIDAuNTsKICAgICAgICAgICAgICAgICAgICBpZiAodC5zaG93TWFyayAmJiB0Lm1hcmspIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvdXRzaWRlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gbGVmdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gbGVmdCtzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5zaWRlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gbGVmdC1zOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBsZWZ0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY3Jvc3MnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBsZWZ0LXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGxlZnQrczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGxlZnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGxlZnQrczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbW2IscG9zXSwgW2UscG9zXV07CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgdGhlIHNoYWRvdwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zaGFkb3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIHBvaW50cywge2xpbmVDYXA6J2J1dHQnLCBsaW5lV2lkdGg6dGhpcy5ncmlkTGluZVdpZHRoKjEuNSwgb2Zmc2V0OnRoaXMuZ3JpZExpbmVXaWR0aCowLjc1LCBmaWxsOmZhbHNlLCBjbG9zZVBhdGg6ZmFsc2V9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lKGIsIHBvcywgZSwgcG9zLCB7c3Ryb2tlU3R5bGU6YXhpcy5ib3JkZXJDb2xvcn0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0ID0gbnVsbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHQwID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBheGlzID0gbnVsbDsKICAgICAgICAgICAgdGlja3MgPSAgbnVsbDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgICAgICAKICAgICAgICBmdW5jdGlvbiBkcmF3TGluZShieCwgYnksIGV4LCBleSwgb3B0cykgewogICAgICAgICAgICBjdHguc2F2ZSgpOwogICAgICAgICAgICBvcHRzID0gb3B0cyB8fCB7fTsKICAgICAgICAgICAgaWYgKG9wdHMubGluZVdpZHRoID09IG51bGwgfHwgb3B0cy5saW5lV2lkdGggIT0gMCl7CiAgICAgICAgICAgICAgICAkLmV4dGVuZCh0cnVlLCBjdHgsIG9wdHMpOwogICAgICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwogICAgICAgICAgICAgICAgY3R4Lm1vdmVUbyhieCwgYnkpOwogICAgICAgICAgICAgICAgY3R4LmxpbmVUbyhleCwgZXkpOwogICAgICAgICAgICAgICAgY3R4LnN0cm9rZSgpOwogICAgICAgICAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAodGhpcy5zaGFkb3cpIHsKICAgICAgICAgICAgdmFyIHBvaW50cyA9IFtbdGhpcy5fbGVmdCwgdGhpcy5fYm90dG9tXSwgW3RoaXMuX3JpZ2h0LCB0aGlzLl9ib3R0b21dLCBbdGhpcy5fcmlnaHQsIHRoaXMuX3RvcF1dOwogICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoY3R4LCBwb2ludHMpOwogICAgICAgIH0KICAgICAgICAvLyBOb3cgZHJhdyBib3JkZXIgYXJvdW5kIGdyaWQuICBVc2UgYXhpcyBib3JkZXIgZGVmaW5pdGlvbnMuIHN0YXJ0IGF0CiAgICAgICAgLy8gdXBwZXIgbGVmdCBhbmQgZ28gY2xvY2t3aXNlLgogICAgICAgIGlmICh0aGlzLmJvcmRlcldpZHRoICE9IDAgJiYgdGhpcy5kcmF3Qm9yZGVyKSB7CiAgICAgICAgICAgIGRyYXdMaW5lICh0aGlzLl9sZWZ0LCB0aGlzLl90b3AsIHRoaXMuX3JpZ2h0LCB0aGlzLl90b3AsIHtsaW5lQ2FwOidyb3VuZCcsIHN0cm9rZVN0eWxlOmF4ZXMueDJheGlzLmJvcmRlckNvbG9yLCBsaW5lV2lkdGg6YXhlcy54MmF4aXMuYm9yZGVyV2lkdGh9KTsKICAgICAgICAgICAgZHJhd0xpbmUgKHRoaXMuX3JpZ2h0LCB0aGlzLl90b3AsIHRoaXMuX3JpZ2h0LCB0aGlzLl9ib3R0b20sIHtsaW5lQ2FwOidyb3VuZCcsIHN0cm9rZVN0eWxlOmF4ZXMueTJheGlzLmJvcmRlckNvbG9yLCBsaW5lV2lkdGg6YXhlcy55MmF4aXMuYm9yZGVyV2lkdGh9KTsKICAgICAgICAgICAgZHJhd0xpbmUgKHRoaXMuX3JpZ2h0LCB0aGlzLl9ib3R0b20sIHRoaXMuX2xlZnQsIHRoaXMuX2JvdHRvbSwge2xpbmVDYXA6J3JvdW5kJywgc3Ryb2tlU3R5bGU6YXhlcy54YXhpcy5ib3JkZXJDb2xvciwgbGluZVdpZHRoOmF4ZXMueGF4aXMuYm9yZGVyV2lkdGh9KTsKICAgICAgICAgICAgZHJhd0xpbmUgKHRoaXMuX2xlZnQsIHRoaXMuX2JvdHRvbSwgdGhpcy5fbGVmdCwgdGhpcy5fdG9wLCB7bGluZUNhcDoncm91bmQnLCBzdHJva2VTdHlsZTpheGVzLnlheGlzLmJvcmRlckNvbG9yLCBsaW5lV2lkdGg6YXhlcy55YXhpcy5ib3JkZXJXaWR0aH0pOwogICAgICAgIH0KICAgICAgICAvLyBjdHgubGluZVdpZHRoID0gdGhpcy5ib3JkZXJXaWR0aDsKICAgICAgICAvLyBjdHguc3Ryb2tlU3R5bGUgPSB0aGlzLmJvcmRlckNvbG9yOwogICAgICAgIC8vIGN0eC5zdHJva2VSZWN0KHRoaXMuX2xlZnQsIHRoaXMuX3RvcCwgdGhpcy5fd2lkdGgsIHRoaXMuX2hlaWdodCk7CiAgICAgICAgCiAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgICAgICBjdHggPSAgbnVsbDsKICAgICAgICBheGVzID0gbnVsbDsKICAgIH07CiAKICAgIC8vIENsYXNzOiAkLmpxcGxvdC5EaXZUaXRsZVJlbmRlcmVyCiAgICAvLyBUaGUgZGVmYXVsdCB0aXRsZSByZW5kZXJlciBmb3IganFQbG90LiAgVGhpcyBjbGFzcyBoYXMgbm8gb3B0aW9ucyBiZXlvbmQgdGhlIDxUaXRsZT4gY2xhc3MuIAogICAgJC5qcXBsb3QuRGl2VGl0bGVSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRGl2VGl0bGVSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkRpdlRpdGxlUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbigpIHsKICAgICAgICAvLyBNZW1vcnkgTGVha3MgcGF0Y2gKICAgICAgICBpZiAodGhpcy5fZWxlbSkgewogICAgICAgICAgICB0aGlzLl9lbGVtLmVtcHR5Rm9yY2UoKTsKICAgICAgICAgICAgdGhpcy5fZWxlbSA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICB2YXIgciA9IHRoaXMucmVuZGVyZXI7CiAgICAgICAgdmFyIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICB0aGlzLl9lbGVtID0gJChlbGVtKTsKICAgICAgICB0aGlzLl9lbGVtLmFkZENsYXNzKCdqcXBsb3QtdGl0bGUnKTsKCiAgICAgICAgaWYgKCF0aGlzLnRleHQpIHsKICAgICAgICAgICAgdGhpcy5zaG93ID0gZmFsc2U7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uaGVpZ2h0KDApOwogICAgICAgICAgICB0aGlzLl9lbGVtLndpZHRoKDApOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICh0aGlzLnRleHQpIHsKICAgICAgICAgICAgdmFyIGNvbG9yOwogICAgICAgICAgICBpZiAodGhpcy5jb2xvcikgewogICAgICAgICAgICAgICAgY29sb3IgPSB0aGlzLmNvbG9yOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudGV4dENvbG9yKSB7CiAgICAgICAgICAgICAgICBjb2xvciA9IHRoaXMudGV4dENvbG9yOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBkb24ndCB0cnVzdCB0aGF0IGEgc3R5bGVzaGVldCBpcyBwcmVzZW50LCBzZXQgdGhlIHBvc2l0aW9uLgogICAgICAgICAgICB2YXIgc3R5bGVzID0ge3Bvc2l0aW9uOidhYnNvbHV0ZScsIHRvcDonMHB4JywgbGVmdDonMHB4J307CgogICAgICAgICAgICBpZiAodGhpcy5fcGxvdFdpZHRoKSB7CiAgICAgICAgICAgICAgICBzdHlsZXNbJ3dpZHRoJ10gPSB0aGlzLl9wbG90V2lkdGgrJ3B4JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodGhpcy5mb250U2l6ZSkgewogICAgICAgICAgICAgICAgc3R5bGVzWydmb250U2l6ZSddID0gdGhpcy5mb250U2l6ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMudGV4dEFsaWduID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgICAgc3R5bGVzWyd0ZXh0QWxpZ24nXSA9IHRoaXMudGV4dEFsaWduOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgc3R5bGVzWyd0ZXh0QWxpZ24nXSA9ICdjZW50ZXInOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChjb2xvcikgewogICAgICAgICAgICAgICAgc3R5bGVzWydjb2xvciddID0gY29sb3I7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMucGFkZGluZ0JvdHRvbSkgewogICAgICAgICAgICAgICAgc3R5bGVzWydwYWRkaW5nQm90dG9tJ10gPSB0aGlzLnBhZGRpbmdCb3R0b207CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMuZm9udEZhbWlseSkgewogICAgICAgICAgICAgICAgc3R5bGVzWydmb250RmFtaWx5J10gPSB0aGlzLmZvbnRGYW1pbHk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHN0eWxlcyk7CiAgICAgICAgICAgIGlmICh0aGlzLmVzY2FwZUh0bWwpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0udGV4dCh0aGlzLnRleHQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5odG1sKHRoaXMudGV4dCk7CiAgICAgICAgICAgIH0KCgogICAgICAgICAgICAvLyBzdHlsZXRleHQgKz0gKHRoaXMuX3Bsb3RXaWR0aCkgPyAnd2lkdGg6Jyt0aGlzLl9wbG90V2lkdGgrJ3B4OycgOiAnJzsKICAgICAgICAgICAgLy8gc3R5bGV0ZXh0ICs9ICh0aGlzLmZvbnRTaXplKSA/ICdmb250LXNpemU6Jyt0aGlzLmZvbnRTaXplKyc7JyA6ICcnOwogICAgICAgICAgICAvLyBzdHlsZXRleHQgKz0gKHRoaXMudGV4dEFsaWduKSA/ICd0ZXh0LWFsaWduOicrdGhpcy50ZXh0QWxpZ24rJzsnIDogJ3RleHQtYWxpZ246Y2VudGVyOyc7CiAgICAgICAgICAgIC8vIHN0eWxldGV4dCArPSAoY29sb3IpID8gJ2NvbG9yOicrY29sb3IrJzsnIDogJyc7CiAgICAgICAgICAgIC8vIHN0eWxldGV4dCArPSAodGhpcy5wYWRkaW5nQm90dG9tKSA/ICdwYWRkaW5nLWJvdHRvbTonK3RoaXMucGFkZGluZ0JvdHRvbSsnOycgOiAnJzsKICAgICAgICAgICAgLy8gdGhpcy5fZWxlbSA9ICQoJzxkaXYgY2xhc3M9ImpxcGxvdC10aXRsZSIgc3R5bGU9Iicrc3R5bGV0ZXh0KyciPicrdGhpcy50ZXh0Kyc8L2Rpdj4nKTsKICAgICAgICAgICAgLy8gaWYgKHRoaXMuZm9udEZhbWlseSkgewogICAgICAgICAgICAvLyAgICAgdGhpcy5fZWxlbS5jc3MoJ2ZvbnQtZmFtaWx5JywgdGhpcy5mb250RmFtaWx5KTsKICAgICAgICAgICAgLy8gfQogICAgICAgIH0KCiAgICAgICAgZWxlbSA9IG51bGw7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW07CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5EaXZUaXRsZVJlbmRlcmVyLnByb3RvdHlwZS5wYWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gbm90aGluZyB0byBkbyBoZXJlCiAgICB9OwogIAoKICAgIHZhciBkb3RsZW4gPSAwLjE7CgogICAgJC5qcXBsb3QuTGluZVBhdHRlcm4gPSBmdW5jdGlvbiAoY3R4LCBwYXR0ZXJuKSB7CgogICAgICAgIHZhciBkZWZhdWx0TGluZVBhdHRlcm5zID0gewogICAgICAgICAgICBkb3R0ZWQ6IFsgZG90bGVuLCAkLmpxcGxvdC5jb25maWcuZG90R2FwTGVuZ3RoIF0sCiAgICAgICAgICAgIGRhc2hlZDogWyAkLmpxcGxvdC5jb25maWcuZGFzaExlbmd0aCwgJC5qcXBsb3QuY29uZmlnLmdhcExlbmd0aCBdLAogICAgICAgICAgICBzb2xpZDogbnVsbAogICAgICAgIH07CgogICAgICAgIGlmICh0eXBlb2YgcGF0dGVybiA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgaWYgKHBhdHRlcm5bMF0gPT09ICcuJyB8fCBwYXR0ZXJuWzBdID09PSAnLScpIHsKICAgICAgICAgICAgICAgIHZhciBzID0gcGF0dGVybjsKICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBbXTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MCwgaW1heD1zLmxlbmd0aDsgaTxpbWF4OyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoc1tpXSA9PT0gJy4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm4ucHVzaCggZG90bGVuICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNbaV0gPT09ICctJykgewogICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuLnB1c2goICQuanFwbG90LmNvbmZpZy5kYXNoTGVuZ3RoICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcGF0dGVybi5wdXNoKCAkLmpxcGxvdC5jb25maWcuZ2FwTGVuZ3RoICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBwYXR0ZXJuID0gZGVmYXVsdExpbmVQYXR0ZXJuc1twYXR0ZXJuXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCEocGF0dGVybiAmJiBwYXR0ZXJuLmxlbmd0aCkpIHsKICAgICAgICAgICAgcmV0dXJuIGN0eDsKICAgICAgICB9CgogICAgICAgIHZhciBwYXR0ZXJuSW5kZXggPSAwOwogICAgICAgIHZhciBwYXR0ZXJuRGlzdGFuY2UgPSBwYXR0ZXJuWzBdOwogICAgICAgIHZhciBweCA9IDA7CiAgICAgICAgdmFyIHB5ID0gMDsKICAgICAgICB2YXIgcGF0aHgwID0gMDsKICAgICAgICB2YXIgcGF0aHkwID0gMDsKCiAgICAgICAgdmFyIG1vdmVUbyA9IGZ1bmN0aW9uICh4LCB5KSB7CiAgICAgICAgICAgIGN0eC5tb3ZlVG8oIHgsIHkgKTsKICAgICAgICAgICAgcHggPSB4OwogICAgICAgICAgICBweSA9IHk7CiAgICAgICAgICAgIHBhdGh4MCA9IHg7CiAgICAgICAgICAgIHBhdGh5MCA9IHk7CiAgICAgICAgfTsKCiAgICAgICAgdmFyIGxpbmVUbyA9IGZ1bmN0aW9uICh4LCB5KSB7CiAgICAgICAgICAgIHZhciBzY2FsZSA9IGN0eC5saW5lV2lkdGg7CiAgICAgICAgICAgIHZhciBkeCA9IHggLSBweDsKICAgICAgICAgICAgdmFyIGR5ID0geSAtIHB5OwogICAgICAgICAgICB2YXIgZGlzdCA9IE1hdGguc3FydChkeCpkeCtkeSpkeSk7CiAgICAgICAgICAgIGlmICgoZGlzdCA+IDApICYmIChzY2FsZSA+IDApKSB7CiAgICAgICAgICAgICAgICBkeCAvPSBkaXN0OwogICAgICAgICAgICAgICAgZHkgLz0gZGlzdDsKICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGRwID0gc2NhbGUgKiBwYXR0ZXJuRGlzdGFuY2U7CiAgICAgICAgICAgICAgICAgICAgaWYgKGRwIDwgZGlzdCkgewogICAgICAgICAgICAgICAgICAgICAgICBweCArPSBkcCAqIGR4OwogICAgICAgICAgICAgICAgICAgICAgICBweSArPSBkcCAqIGR5OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHBhdHRlcm5JbmRleCAmIDEpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5saW5lVG8oIHB4LCBweSApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4Lm1vdmVUbyggcHgsIHB5ICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZGlzdCAtPSBkcDsKICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybkluZGV4Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXR0ZXJuSW5kZXggPj0gcGF0dGVybi5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5JbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybkRpc3RhbmNlID0gcGF0dGVybltwYXR0ZXJuSW5kZXhdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHggPSB4OwogICAgICAgICAgICAgICAgICAgICAgICBweSA9IHk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocGF0dGVybkluZGV4ICYgMSkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LmxpbmVUbyggcHgsIHB5ICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgubW92ZVRvKCBweCwgcHkgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuRGlzdGFuY2UgLT0gZGlzdCAvIHNjYWxlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICB2YXIgYmVnaW5QYXRoID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7CiAgICAgICAgfTsKCiAgICAgICAgdmFyIGNsb3NlUGF0aCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgbGluZVRvKCBwYXRoeDAsIHBhdGh5MCApOwogICAgICAgIH07CgogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIG1vdmVUbzogbW92ZVRvLAogICAgICAgICAgICBsaW5lVG86IGxpbmVUbywKICAgICAgICAgICAgYmVnaW5QYXRoOiBiZWdpblBhdGgsCiAgICAgICAgICAgIGNsb3NlUGF0aDogY2xvc2VQYXRoCiAgICAgICAgfTsKICAgIH07CgogICAgLy8gQ2xhc3M6ICQuanFwbG90LkxpbmVSZW5kZXJlcgogICAgLy8gVGhlIGRlZmF1bHQgbGluZSByZW5kZXJlciBmb3IganFQbG90LCB0aGlzIGNsYXNzIGhhcyBubyBvcHRpb25zIGJleW9uZCB0aGUgPFNlcmllcz4gY2xhc3MuCiAgICAvLyBEcmF3cyBzZXJpZXMgYXMgYSBsaW5lLgogICAgJC5qcXBsb3QuTGluZVJlbmRlcmVyID0gZnVuY3Rpb24oKXsKICAgICAgICB0aGlzLnNoYXBlUmVuZGVyZXIgPSBuZXcgJC5qcXBsb3QuU2hhcGVSZW5kZXJlcigpOwogICAgICAgIHRoaXMuc2hhZG93UmVuZGVyZXIgPSBuZXcgJC5qcXBsb3QuU2hhZG93UmVuZGVyZXIoKTsKICAgIH07CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHNlcmllcy4KICAgICQuanFwbG90LkxpbmVSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMsIHBsb3QpIHsKICAgICAgICAvLyBHcm91cDogUHJvcGVydGllcwogICAgICAgIC8vCiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgICAgICAgdGhpcy5fdHlwZT0nbGluZSc7CiAgICAgICAgdGhpcy5yZW5kZXJlci5hbmltYXRpb24gPSB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlLAogICAgICAgICAgICBkaXJlY3Rpb246ICdsZWZ0JywKICAgICAgICAgICAgc3BlZWQ6IDI1MDAsCiAgICAgICAgICAgIF9zdXBwb3J0ZWQ6IHRydWUKICAgICAgICB9OwogICAgICAgIC8vIHByb3A6IHNtb290aAogICAgICAgIC8vIFRydWUgdG8gZHJhdyBhIHNtb290aGVkIChpbnRlcnBvbGF0ZWQpIGxpbmUgdGhyb3VnaCB0aGUgZGF0YSBwb2ludHMKICAgICAgICAvLyB3aXRoIGF1dG9tYXRpY2FsbHkgY29tcHV0ZWQgbnVtYmVyIG9mIHNtb290aGluZyBwb2ludHMuCiAgICAgICAgLy8gU2V0IHRvIGFuIGludGVnZXIgbnVtYmVyID4gMiB0byBzcGVjaWZ5IG51bWJlciBvZiBzbW9vdGhpbmcgcG9pbnRzCiAgICAgICAgLy8gdG8gdXNlIGJldHdlZW4gZWFjaCBkYXRhIHBvaW50LgogICAgICAgIHRoaXMucmVuZGVyZXIuc21vb3RoID0gZmFsc2U7ICAvLyB0cnVlIG9yIGEgbnVtYmVyID4gMiBmb3Igc21vb3RoaW5nLgogICAgICAgIHRoaXMucmVuZGVyZXIudGVuc2lvbiA9IG51bGw7IC8vIG51bGwgdG8gYXV0byBjb21wdXRlIG9yIGEgbnVtYmVyIHR5cGljYWxseSA+IDYuICBGZXdlciBwb2ludHMgcmVxdWlyZXMgaGlnaGVyIHRlbnNpb24uCiAgICAgICAgLy8gcHJvcDogY29uc3RyYWluU21vb3RoaW5nCiAgICAgICAgLy8gVHJ1ZSB0byB1c2UgYSBtb3JlIGFjY3VyYXRlIHNtb290aGluZyBhbGdvcml0aG0gdGhhdCB3aWxsCiAgICAgICAgLy8gbm90IG92ZXJzaG9vdCBhbnkgZGF0YSBwb2ludHMuICBGYWxzZSB0byBhbGxvdyBvdmVyc2hvb3QgYnV0CiAgICAgICAgLy8gcHJvZHVjZSBhIHNtb290aGVyIGxvb2tpbmcgbGluZS4KICAgICAgICB0aGlzLnJlbmRlcmVyLmNvbnN0cmFpblNtb290aGluZyA9IHRydWU7CiAgICAgICAgLy8gdGhpcyBpcyBzbW9vdGhlZCBkYXRhIGluIGdyaWQgY29vcmRpbmF0ZXMsIGxpa2UgZ3JpZERhdGEKICAgICAgICB0aGlzLnJlbmRlcmVyLl9zbW9vdGhlZERhdGEgPSBbXTsKICAgICAgICAvLyB0aGlzIGlzIHNtb290aGVkIGRhdGEgaW4gcGxvdCB1bml0cyAocGxvdCBjb29yZGluYXRlcyksIGxpa2UgcGxvdERhdGEuCiAgICAgICAgdGhpcy5yZW5kZXJlci5fc21vb3RoZWRQbG90RGF0YSA9IFtdOwogICAgICAgIHRoaXMucmVuZGVyZXIuX2hpQmFuZEdyaWREYXRhID0gW107CiAgICAgICAgdGhpcy5yZW5kZXJlci5fbG93QmFuZEdyaWREYXRhID0gW107CiAgICAgICAgdGhpcy5yZW5kZXJlci5faGlCYW5kU21vb3RoZWREYXRhID0gW107CiAgICAgICAgdGhpcy5yZW5kZXJlci5fbG93QmFuZFNtb290aGVkRGF0YSA9IFtdOwoKICAgICAgICAvLyBwcm9wOiBiYW5kRGF0YQogICAgICAgIC8vIERhdGEgdXNlZCB0byBkcmF3IGVycm9yIGJhbmRzIG9yIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIGFib3ZlL2JlbG93IGEgbGluZS4KICAgICAgICAvLwogICAgICAgIC8vIGJhbmREYXRhIGNhbiBiZSBpbnB1dCBpbiAzIGZvcm1zLiAganFQbG90IHdpbGwgZmlndXJlIG91dCB3aGljaCBpcyB0aGUKICAgICAgICAvLyBsb3cgYmFuZCBsaW5lIGFuZCB3aGljaCBpcyB0aGUgaGlnaCBiYW5kIGxpbmUgZm9yIGFsbCBmb3JtczoKICAgICAgICAvLyAKICAgICAgICAvLyBBIDIgZGltZW5zaW9uYWwgYXJyYXkgbGlrZSBbW3lsMSwgeWwyLCAuLi5dLCBbeXUxLCB5dTIsIC4uLl1dIHdoZXJlCiAgICAgICAgLy8gW3lsMSwgeWwyLCAuLi5dIGFyZSB5IHZhbHVlcyBvZiB0aGUgbG93ZXIgbGluZSBhbmQKICAgICAgICAvLyBbeXUxLCB5dTIsIC4uLl0gYXJlIHkgdmFsdWVzIG9mIHRoZSB1cHBlciBsaW5lLgogICAgICAgIC8vIEluIHRoaXMgY2FzZSB0aGVyZSBtdXN0IGJlIHRoZSBzYW1lIG51bWJlciBvZiB5IGRhdGEgcG9pbnRzIGFzIGRhdGEgcG9pbnRzCiAgICAgICAgLy8gaW4gdGhlIHNlcmllcyBhbmQgdGhlIGJhbmRzIHdpbGwgaW5oZXJpdCB0aGUgeCB2YWx1ZXMgb2YgdGhlIHNlcmllcy4KICAgICAgICAvLwogICAgICAgIC8vIEEgMiBkaW1lbnNpb25hbCBhcnJheSBsaWtlIFtbW3hsMSwgeWwxXSwgW3hsMiwgeWwyXSwgLi4uXSwgW1t4aDEsIHloMV0sIFt4aDIsIHloMl0sIC4uLl1dCiAgICAgICAgLy8gd2hlcmUgW3hsMSwgeWwxXSBhcmUgeCx5IGRhdGEgcG9pbnRzIGZvciB0aGUgbG93ZXIgbGluZSBhbmQKICAgICAgICAvLyBbeGgxLCB5aDFdIGFyZSB4LHkgZGF0YSBwb2ludHMgZm9yIHRoZSBoaWdoIGxpbmUuCiAgICAgICAgLy8geCB2YWx1ZXMgZG8gbm90IGhhdmUgdG8gY29ycmVzcG9uZCB0byB0aGUgeCB2YWx1ZXMgb2YgdGhlIHNlcmllcyBhbmQgY2FuCiAgICAgICAgLy8gYmUgb2YgYW55IGFyYml0cmFyeSBsZW5ndGguCiAgICAgICAgLy8KICAgICAgICAvLyBDYW4gYmUgb2YgZm9ybSBbW3lsMSwgeXUxXSwgW3lsMiwgeXUyXSwgW3lsMywgeXUzXSwgLi4uXSB3aGVyZQogICAgICAgIC8vIHRoZXJlIG11c3QgYmUgMyBvciBtb3JlIGFycmF5cyBhbmQgdGhlcmUgbXVzdCBiZSB0aGUgc2FtZSBudW1iZXIgb2YgYXJyYXlzCiAgICAgICAgLy8gYXMgdGhlcmUgYXJlIGRhdGEgcG9pbnRzIGluIHRoZSBzZXJpZXMuICBJbiB0aGlzIGNhc2UsIAogICAgICAgIC8vIFt5bDEsIHl1MV0gc3BlY2lmaWVzIHRoZSBsb3dlciBhbmQgdXBwZXIgeSB2YWx1ZXMgZm9yIHRoZSAxc3QKICAgICAgICAvLyBkYXRhIHBvaW50IGFuZCBzbyBvbi4gIFRoZSBiYW5kcyB3aWxsIGluaGVyaXQgdGhlIHgKICAgICAgICAvLyB2YWx1ZXMgZnJvbSB0aGUgc2VyaWVzLgogICAgICAgIHRoaXMucmVuZGVyZXIuYmFuZERhdGEgPSBbXTsKCiAgICAgICAgLy8gR3JvdXA6IGJhbmRzCiAgICAgICAgLy8gQmFuZGluZyBhcm91bmQgbGluZSwgZS5nIGVycm9yIGJhbmRzIG9yIGNvbmZpZGVuY2UgaW50ZXJ2YWxzLgogICAgICAgIHRoaXMucmVuZGVyZXIuYmFuZHMgPSB7CiAgICAgICAgICAgIC8vIHByb3A6IHNob3cKICAgICAgICAgICAgLy8gdHJ1ZSB0byBzaG93IHRoZSBiYW5kcy4gIElmIGJhbmREYXRhIG9yIGludGVydmFsIGlzCiAgICAgICAgICAgIC8vIHN1cHBsaWVkLCBzaG93IHdpbGwgYmUgc2V0IHRvIHRydWUgYnkgZGVmYXVsdC4KICAgICAgICAgICAgc2hvdzogZmFsc2UsCiAgICAgICAgICAgIGhpRGF0YTogW10sCiAgICAgICAgICAgIGxvd0RhdGE6IFtdLAogICAgICAgICAgICAvLyBwcm9wOiBjb2xvcgogICAgICAgICAgICAvLyBjb2xvciBvZiBsaW5lcyBhdCB0b3AgYW5kIGJvdHRvbSBvZiBiYW5kcyBbZGVmYXVsdDogc2VyaWVzIGNvbG9yXS4KICAgICAgICAgICAgY29sb3I6IHRoaXMuY29sb3IsCiAgICAgICAgICAgIC8vIHByb3A6IHNob3dMaW5lcwogICAgICAgICAgICAvLyBUcnVlIHRvIHNob3cgbGluZXMgYXQgdG9wIGFuZCBib3R0b20gb2YgYmFuZHMgW2RlZmF1bHQ6IGZhbHNlXS4KICAgICAgICAgICAgc2hvd0xpbmVzOiBmYWxzZSwKICAgICAgICAgICAgLy8gcHJvcDogZmlsbAogICAgICAgICAgICAvLyBUcnVlIHRvIGZpbGwgYXJlYSBiZXR3ZWVuIGJhbmRzIFtkZWZhdWx0OiB0cnVlXS4KICAgICAgICAgICAgZmlsbDogdHJ1ZSwKICAgICAgICAgICAgLy8gcHJvcDogZmlsbENvbG9yCiAgICAgICAgICAgIC8vIGNzcyBjb2xvciBzcGVjIGZvciBmaWxsZWQgYXJlYS4gIFtkZWZhdWx0OiBzZXJpZXMgY29sb3JdLgogICAgICAgICAgICBmaWxsQ29sb3I6IG51bGwsCiAgICAgICAgICAgIF9taW46IG51bGwsCiAgICAgICAgICAgIF9tYXg6IG51bGwsCiAgICAgICAgICAgIC8vIHByb3A6IGludGVydmFsCiAgICAgICAgICAgIC8vIFVzZXIgc3BlY2lmaWVkIGludGVydmFsIGFib3ZlIGFuZCBiZWxvdyBsaW5lIGZvciBiYW5kcyBbZGVmYXVsdDogJzMlJyddLgogICAgICAgICAgICAvLyBDYW4gYmUgYSB2YWx1ZSBsaWtlIDMgb3IgYSBzdHJpbmcgbGlrZSAnMyUnIAogICAgICAgICAgICAvLyBvciBhbiB1cHBlci9sb3dlciBhcnJheSBsaWtlIFsxLCAtMl0gb3IgWycyJScsICctMS41JSddCiAgICAgICAgICAgIGludGVydmFsOiAnMyUnCiAgICAgICAgfTsKCgogICAgICAgIHZhciBsb3B0cyA9IHtoaWdobGlnaHRNb3VzZU92ZXI6IG9wdGlvbnMuaGlnaGxpZ2h0TW91c2VPdmVyLCBoaWdobGlnaHRNb3VzZURvd246IG9wdGlvbnMuaGlnaGxpZ2h0TW91c2VEb3duLCBoaWdobGlnaHRDb2xvcjogb3B0aW9ucy5oaWdobGlnaHRDb2xvcn07CiAgICAgICAgCiAgICAgICAgZGVsZXRlIChvcHRpb25zLmhpZ2hsaWdodE1vdXNlT3Zlcik7CiAgICAgICAgZGVsZXRlIChvcHRpb25zLmhpZ2hsaWdodE1vdXNlRG93bik7CiAgICAgICAgZGVsZXRlIChvcHRpb25zLmhpZ2hsaWdodENvbG9yKTsKICAgICAgICAKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLnJlbmRlcmVyLCBvcHRpb25zKTsKCiAgICAgICAgdGhpcy5yZW5kZXJlci5vcHRpb25zID0gb3B0aW9uczsKCiAgICAgICAgLy8gaWYgd2UgYXJlIGdpdmVuIHNvbWUgYmFuZCBkYXRhLCBhbmQgYmFuZHMgYXJlbid0IGV4cGxpY2l0eSBzZXQgdG8gZmFsc2UgaW4gb3B0aW9ucywgdHVybiB0aGVtIG9uLgogICAgICAgIGlmICh0aGlzLnJlbmRlcmVyLmJhbmREYXRhLmxlbmd0aCA+IDEgJiYgKCFvcHRpb25zLmJhbmRzIHx8IG9wdGlvbnMuYmFuZHMuc2hvdyA9PSBudWxsKSkgewogICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmJhbmRzLnNob3cgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgLy8gaWYgd2UgYXJlIGdpdmVuIGFuIGludGVydmFsLCBhbmQgYmFuZHMgYXJlbid0IGV4cGxpY2l0eSBzZXQgdG8gZmFsc2UgaW4gb3B0aW9ucywgdHVybiB0aGVtIG9uLgogICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuYmFuZHMgJiYgb3B0aW9ucy5iYW5kcy5zaG93ID09IG51bGwgJiYgb3B0aW9ucy5iYW5kcy5pbnRlcnZhbCAhPSBudWxsKSB7CiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYmFuZHMuc2hvdyA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICAvLyBpZiBwbG90IGlzIGZpbGxlZCwgdHVybiBvZmYgYmFuZHMuCiAgICAgICAgaWYgKHRoaXMuZmlsbCkgewogICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmJhbmRzLnNob3cgPSBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICh0aGlzLnJlbmRlcmVyLmJhbmRzLnNob3cpIHsKICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5pbml0QmFuZHMuY2FsbCh0aGlzLCB0aGlzLnJlbmRlcmVyLm9wdGlvbnMsIHBsb3QpOwogICAgICAgIH0KCgogICAgICAgIC8vIHNtb290aGluZyBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHN0YWNrZWQgbGluZXMsIGRpc2FibGUKICAgICAgICBpZiAodGhpcy5fc3RhY2spIHsKICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zbW9vdGggPSBmYWxzZTsKICAgICAgICB9CgogICAgICAgIC8vIHNldCB0aGUgc2hhcGUgcmVuZGVyZXIgb3B0aW9ucwogICAgICAgIHZhciBvcHRzID0ge2xpbmVKb2luOnRoaXMubGluZUpvaW4sIGxpbmVDYXA6dGhpcy5saW5lQ2FwLCBmaWxsOnRoaXMuZmlsbCwgaXNhcmM6ZmFsc2UsIHN0cm9rZVN0eWxlOnRoaXMuY29sb3IsIGZpbGxTdHlsZTp0aGlzLmZpbGxDb2xvciwgbGluZVdpZHRoOnRoaXMubGluZVdpZHRoLCBsaW5lUGF0dGVybjp0aGlzLmxpbmVQYXR0ZXJuLCBjbG9zZVBhdGg6dGhpcy5maWxsfTsKICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuaW5pdChvcHRzKTsKCiAgICAgICAgdmFyIHNoYWRvd19vZmZzZXQgPSBvcHRpb25zLnNoYWRvd09mZnNldDsKICAgICAgICAvLyBzZXQgdGhlIHNoYWRvdyByZW5kZXJlciBvcHRpb25zCiAgICAgICAgaWYgKHNoYWRvd19vZmZzZXQgPT0gbnVsbCkgewogICAgICAgICAgICAvLyBzY2FsZSB0aGUgc2hhZG93T2Zmc2V0IHRvIHRoZSB3aWR0aCBvZiB0aGUgbGluZS4KICAgICAgICAgICAgaWYgKHRoaXMubGluZVdpZHRoID4gMi41KSB7CiAgICAgICAgICAgICAgICBzaGFkb3dfb2Zmc2V0ID0gMS4yNSAqICgxICsgKE1hdGguYXRhbigodGhpcy5saW5lV2lkdGgvMi41KSkvMC43ODUzOTgxNjMgLSAxKSowLjYpOwogICAgICAgICAgICAgICAgLy8gdmFyIHNoYWRvd19vZmZzZXQgPSB0aGlzLnNoYWRvd09mZnNldDsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBmb3Igc2tpbm55IGxpbmVzLCBkb24ndCBtYWtlIHN1Y2ggYSBiaWcgc2hhZG93LgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHNoYWRvd19vZmZzZXQgPSAxLjI1ICogTWF0aC5hdGFuKCh0aGlzLmxpbmVXaWR0aC8yLjUpKS8wLjc4NTM5ODE2MzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICB2YXIgc29wdHMgPSB7bGluZUpvaW46dGhpcy5saW5lSm9pbiwgbGluZUNhcDp0aGlzLmxpbmVDYXAsIGZpbGw6dGhpcy5maWxsLCBpc2FyYzpmYWxzZSwgYW5nbGU6dGhpcy5zaGFkb3dBbmdsZSwgb2Zmc2V0OnNoYWRvd19vZmZzZXQsIGFscGhhOnRoaXMuc2hhZG93QWxwaGEsIGRlcHRoOnRoaXMuc2hhZG93RGVwdGgsIGxpbmVXaWR0aDp0aGlzLmxpbmVXaWR0aCwgbGluZVBhdHRlcm46dGhpcy5saW5lUGF0dGVybiwgY2xvc2VQYXRoOnRoaXMuZmlsbH07CiAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5pbml0KHNvcHRzKTsKICAgICAgICB0aGlzLl9hcmVhUG9pbnRzID0gW107CiAgICAgICAgdGhpcy5fYm91bmRpbmdCb3ggPSBbW10sW11dOwogICAgICAgIAogICAgICAgIGlmICghdGhpcy5pc1RyZW5kbGluZSAmJiB0aGlzLmZpbGwgfHwgdGhpcy5yZW5kZXJlci5iYW5kcy5zaG93KSB7CiAgICAgICAgICAgIC8vIEdyb3VwOiBQcm9wZXJ0aWVzCiAgICAgICAgICAgIC8vICAgICAgICAKICAgICAgICAgICAgLy8gcHJvcDogaGlnaGxpZ2h0TW91c2VPdmVyCiAgICAgICAgICAgIC8vIFRydWUgdG8gaGlnaGxpZ2h0IGFyZWEgb24gYSBmaWxsZWQgcGxvdCB3aGVuIG1vdXNlZCBvdmVyLgogICAgICAgICAgICAvLyBUaGlzIG11c3QgYmUgZmFsc2UgdG8gZW5hYmxlIGhpZ2hsaWdodE1vdXNlRG93biB0byBoaWdobGlnaHQgd2hlbiBjbGlja2luZyBvbiBhbiBhcmVhIG9uIGEgZmlsbGVkIHBsb3QuCiAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0TW91c2VPdmVyID0gdHJ1ZTsKICAgICAgICAgICAgLy8gcHJvcDogaGlnaGxpZ2h0TW91c2VEb3duCiAgICAgICAgICAgIC8vIFRydWUgdG8gaGlnaGxpZ2h0IHdoZW4gYSBtb3VzZSBidXR0b24gaXMgcHJlc3NlZCBvdmVyIGFuIGFyZWEgb24gYSBmaWxsZWQgcGxvdC4KICAgICAgICAgICAgLy8gVGhpcyB3aWxsIGJlIGRpc2FibGVkIGlmIGhpZ2hsaWdodE1vdXNlT3ZlciBpcyB0cnVlLgogICAgICAgICAgICB0aGlzLmhpZ2hsaWdodE1vdXNlRG93biA9IGZhbHNlOwogICAgICAgICAgICAvLyBwcm9wOiBoaWdobGlnaHRDb2xvcgogICAgICAgICAgICAvLyBjb2xvciB0byB1c2Ugd2hlbiBoaWdobGlnaHRpbmcgYW4gYXJlYSBvbiBhIGZpbGxlZCBwbG90LgogICAgICAgICAgICB0aGlzLmhpZ2hsaWdodENvbG9yID0gbnVsbDsKICAgICAgICAgICAgLy8gaWYgdXNlciBoYXMgcGFzc2VkIGluIGhpZ2hsaWdodE1vdXNlRG93biBvcHRpb24gYW5kIG5vdCBzZXQgaGlnaGxpZ2h0TW91c2VPdmVyLCBkaXNhYmxlIGhpZ2hsaWdodE1vdXNlT3ZlcgogICAgICAgICAgICBpZiAobG9wdHMuaGlnaGxpZ2h0TW91c2VEb3duICYmIGxvcHRzLmhpZ2hsaWdodE1vdXNlT3ZlciA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICBsb3B0cy5oaWdobGlnaHRNb3VzZU92ZXIgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIAogICAgICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCB7aGlnaGxpZ2h0TW91c2VPdmVyOiBsb3B0cy5oaWdobGlnaHRNb3VzZU92ZXIsIGhpZ2hsaWdodE1vdXNlRG93bjogbG9wdHMuaGlnaGxpZ2h0TW91c2VEb3duLCBoaWdobGlnaHRDb2xvcjogbG9wdHMuaGlnaGxpZ2h0Q29sb3J9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICghdGhpcy5oaWdobGlnaHRDb2xvcikgewogICAgICAgICAgICAgICAgdmFyIGZjID0gKHRoaXMucmVuZGVyZXIuYmFuZHMuc2hvdykgPyB0aGlzLnJlbmRlcmVyLmJhbmRzLmZpbGxDb2xvciA6IHRoaXMuZmlsbENvbG9yOwogICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRDb2xvciA9ICQuanFwbG90LmNvbXB1dGVIaWdobGlnaHRDb2xvcnMoZmMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIHR1cm4gb2ZmIChkaXNhYmxlKSB0aGUgaGlnaGxpZ2h0ZXIgcGx1Z2luCiAgICAgICAgICAgIGlmICh0aGlzLmhpZ2hsaWdodGVyKSB7CiAgICAgICAgICAgICAgICB0aGlzLmhpZ2hsaWdodGVyLnNob3cgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoIXRoaXMuaXNUcmVuZGxpbmUgJiYgcGxvdCkgewogICAgICAgICAgICBwbG90LnBsdWdpbnMubGluZVJlbmRlcmVyID0ge307CiAgICAgICAgICAgIHBsb3QucG9zdEluaXRIb29rcy5hZGRPbmNlKHBvc3RJbml0KTsKICAgICAgICAgICAgcGxvdC5wb3N0RHJhd0hvb2tzLmFkZE9uY2UocG9zdFBsb3REcmF3KTsKICAgICAgICAgICAgcGxvdC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgnanFwbG90TW91c2VNb3ZlJywgaGFuZGxlTW92ZSk7CiAgICAgICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdE1vdXNlRG93bicsIGhhbmRsZU1vdXNlRG93bik7CiAgICAgICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdE1vdXNlVXAnLCBoYW5kbGVNb3VzZVVwKTsKICAgICAgICAgICAgcGxvdC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgnanFwbG90Q2xpY2snLCBoYW5kbGVDbGljayk7CiAgICAgICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdFJpZ2h0Q2xpY2snLCBoYW5kbGVSaWdodENsaWNrKTsKICAgICAgICB9CgogICAgfTsKCiAgICAkLmpxcGxvdC5MaW5lUmVuZGVyZXIucHJvdG90eXBlLmluaXRCYW5kcyA9IGZ1bmN0aW9uKG9wdGlvbnMsIHBsb3QpIHsKICAgICAgICAvLyB1c2UgYmFuZERhdGEgaWYgbm8gZGF0YSBzcGVjaWZpZWQgaW4gYmFuZHMgb3B0aW9uCiAgICAgICAgLy92YXIgYmQgPSB0aGlzLnJlbmRlcmVyLmJhbmREYXRhOwogICAgICAgIHZhciBiZCA9IG9wdGlvbnMuYmFuZERhdGEgfHwgW107CiAgICAgICAgdmFyIGJhbmRzID0gdGhpcy5yZW5kZXJlci5iYW5kczsKICAgICAgICBiYW5kcy5oaURhdGEgPSBbXTsKICAgICAgICBiYW5kcy5sb3dEYXRhID0gW107CiAgICAgICAgdmFyIGRhdGEgPSB0aGlzLmRhdGE7CiAgICAgICAgYmFuZHMuX21heCA9IG51bGw7CiAgICAgICAgYmFuZHMuX21pbiA9IG51bGw7CiAgICAgICAgLy8gSWYgMiBhcnJheXMsIGFuZCBlYWNoIGFycmF5IGdyZWF0ZXIgdGhhbiAyIGVsZW1lbnRzLCBhc3N1bWUgaXQgaXMgaGkgYW5kIGxvdyBkYXRhIGJhbmRzIG9mIHkgdmFsdWVzLgogICAgICAgIGlmIChiZC5sZW5ndGggPT0gMikgewogICAgICAgICAgICAvLyBEbyB3ZSBoYXZlIGFuIGFycmF5IG9mIHgseSB2YWx1ZXM/CiAgICAgICAgICAgIC8vIGxpa2UgW1tbMSwxXSwgWzIsNF0sIFszLDNdXSwgW1sxLDNdLCBbMiw2XSwgWzMsNV1dXQogICAgICAgICAgICBpZiAoJC5pc0FycmF5KGJkWzBdWzBdKSkgewogICAgICAgICAgICAgICAgLy8gc2luY2UgYW4gYXJiaXRyYXJ5IGFycmF5IG9mIHBvaW50cywgc3BpbiB0aHJvdWdoIGFsbCBvZiB0aGVtIHRvIGRldGVybWluZSBtYXggYW5kIG1pbiBsaW5lcy4KCiAgICAgICAgICAgICAgICB2YXIgcDsKICAgICAgICAgICAgICAgIHZhciBiZG1pbmlkeCA9IDAsIGJkbWF4aWR4ID0gMDsKICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gYmRbMF0ubGVuZ3RoOyBpPGw7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHAgPSBiZFswXVtpXTsKICAgICAgICAgICAgICAgICAgICBpZiAoKHBbMV0gIT0gbnVsbCAmJiBwWzFdID4gYmFuZHMuX21heCkgfHwgYmFuZHMuX21heCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJhbmRzLl9tYXggPSBwWzFdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoKHBbMV0gIT0gbnVsbCAmJiBwWzFdIDwgYmFuZHMuX21pbikgfHwgYmFuZHMuX21pbiA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJhbmRzLl9taW4gPSBwWzFdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gYmRbMV0ubGVuZ3RoOyBpPGw7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHAgPSBiZFsxXVtpXTsKICAgICAgICAgICAgICAgICAgICBpZiAoKHBbMV0gIT0gbnVsbCAmJiBwWzFdID4gYmFuZHMuX21heCkgfHwgYmFuZHMuX21heCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJhbmRzLl9tYXggPSBwWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBiZG1heGlkeCA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICgocFsxXSAhPSBudWxsICYmIHBbMV0gPCBiYW5kcy5fbWluKSB8fCBiYW5kcy5fbWluID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYmFuZHMuX21pbiA9IHBbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIGJkbWluaWR4ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGJkbWF4aWR4ID09PSBiZG1pbmlkeCkgewogICAgICAgICAgICAgICAgICAgIGJhbmRzLnNob3cgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBiYW5kcy5oaURhdGEgPSBiZFtiZG1heGlkeF07CiAgICAgICAgICAgICAgICBiYW5kcy5sb3dEYXRhID0gYmRbYmRtaW5pZHhdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIGVsc2UgZGF0YSBpcyBhcnJheXMgb2YgeSB2YWx1ZXMKICAgICAgICAgICAgLy8gbGlrZSBbWzEsNCwzXSwgWzMsNiw1XV0KICAgICAgICAgICAgLy8gbXVzdCBoYXZlIHNhbWUgbnVtYmVyIG9mIGJhbmQgZGF0YSBwb2ludHMgYXMgcG9pbnRzIGluIHNlcmllcwogICAgICAgICAgICBlbHNlIGlmIChiZFswXS5sZW5ndGggPT09IGRhdGEubGVuZ3RoICYmIGJkWzFdLmxlbmd0aCA9PT0gZGF0YS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIHZhciBoaSA9IChiZFswXVswXSA+IGJkWzFdWzBdKSA/IDAgOiAxOwogICAgICAgICAgICAgICAgdmFyIGxvdyA9IChoaSkgPyAwIDogMTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MCwgbD1kYXRhLmxlbmd0aDsgaSA8IGw7IGkrKykgewogICAgICAgICAgICAgICAgICAgIGJhbmRzLmhpRGF0YS5wdXNoKFtkYXRhW2ldWzBdLCBiZFtoaV1baV1dKTsKICAgICAgICAgICAgICAgICAgICBiYW5kcy5sb3dEYXRhLnB1c2goW2RhdGFbaV1bMF0sIGJkW2xvd11baV1dKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gd2UgZG9uJ3QgaGF2ZSBwcm9wZXIgZGF0YSBhcnJheSwgZG9uJ3Qgc2hvdyBiYW5kcy4KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBiYW5kcy5zaG93ID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIGlmIG1vcmUgdGhhbiAyIGFycmF5cywgaGF2ZSBhcnJheXMgb2YgW3lsb3csIHloaV0gdmFsdWVzLgogICAgICAgIC8vIG5vdGUsIGNhbid0IGRpc3Rpbmd1aXNoIGNhc2Ugb2YgW1t5bG93LCB5aGldLCBbeWxvdywgeWhpXV0gZnJvbSBbW3lsb3csIHlsb3ddLCBbeWhpLCB5aGldXQogICAgICAgIC8vIHRoaXMgaXMgYXNzdW1lZCB0byBiZSBvZiB0aGUgbGF0dGVyIGZvcm0uCiAgICAgICAgZWxzZSBpZiAoYmQubGVuZ3RoID4gMiAmJiAhJC5pc0FycmF5KGJkWzBdWzBdKSkgewogICAgICAgICAgICB2YXIgaGkgPSAoYmRbMF1bMF0gPiBiZFswXVsxXSkgPyAwIDogMTsKICAgICAgICAgICAgdmFyIGxvdyA9IChoaSkgPyAwIDogMTsKICAgICAgICAgICAgZm9yICh2YXIgaT0wLCBsPWJkLmxlbmd0aDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgICAgIGJhbmRzLmhpRGF0YS5wdXNoKFtkYXRhW2ldWzBdLCBiZFtpXVtoaV1dKTsKICAgICAgICAgICAgICAgIGJhbmRzLmxvd0RhdGEucHVzaChbZGF0YVtpXVswXSwgYmRbaV1bbG93XV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBkb24ndCBoYXZlIHByb3BlciBkYXRhLCBhdXRvIGNhbGN1bGF0ZQogICAgICAgIGVsc2UgewogICAgICAgICAgICB2YXIgaW50cnYgPSBiYW5kcy5pbnRlcnZhbDsKICAgICAgICAgICAgdmFyIGEgPSBudWxsOwogICAgICAgICAgICB2YXIgYiA9IG51bGw7CiAgICAgICAgICAgIHZhciBhZnVuYyA9IG51bGw7CiAgICAgICAgICAgIHZhciBiZnVuYyA9IG51bGw7CgogICAgICAgICAgICBpZiAoJC5pc0FycmF5KGludHJ2KSkgewogICAgICAgICAgICAgICAgYSA9IGludHJ2WzBdOwogICAgICAgICAgICAgICAgYiA9IGludHJ2WzFdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgYSA9IGludHJ2OwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaXNOYU4oYSkpIHsKICAgICAgICAgICAgICAgIC8vIHdlIGhhdmUgYSBzdHJpbmcKICAgICAgICAgICAgICAgIGlmIChhLmNoYXJBdChhLmxlbmd0aCAtIDEpID09PSAnJScpIHsKICAgICAgICAgICAgICAgICAgICBhZnVuYyA9ICdtdWx0aXBseSc7CiAgICAgICAgICAgICAgICAgICAgYSA9IHBhcnNlRmxvYXQoYSkvMTAwICsgMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBhID0gcGFyc2VGbG9hdChhKTsKICAgICAgICAgICAgICAgIGFmdW5jID0gJ2FkZCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChiICE9PSBudWxsICYmIGlzTmFOKGIpKSB7CiAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIGEgc3RyaW5nCiAgICAgICAgICAgICAgICBpZiAoYi5jaGFyQXQoYi5sZW5ndGggLSAxKSA9PT0gJyUnKSB7CiAgICAgICAgICAgICAgICAgICAgYmZ1bmMgPSAnbXVsdGlwbHknOwogICAgICAgICAgICAgICAgICAgIGIgPSBwYXJzZUZsb2F0KGIpLzEwMCArIDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2UgaWYgKGIgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgIGIgPSBwYXJzZUZsb2F0KGIpOwogICAgICAgICAgICAgICAgYmZ1bmMgPSAnYWRkJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGEgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgIGlmIChiID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgYiA9IC1hOwogICAgICAgICAgICAgICAgICAgIGJmdW5jID0gYWZ1bmM7CiAgICAgICAgICAgICAgICAgICAgaWYgKGJmdW5jID09PSAnbXVsdGlwbHknKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGIgKz0gMjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIGEgYWx3YXlzIGFwcGxpZXMgdG8gaGkgYmFuZC4KICAgICAgICAgICAgICAgIGlmIChhIDwgYikgewogICAgICAgICAgICAgICAgICAgIHZhciB0ZW1wID0gYTsKICAgICAgICAgICAgICAgICAgICBhID0gYjsKICAgICAgICAgICAgICAgICAgICBiID0gdGVtcDsKICAgICAgICAgICAgICAgICAgICB0ZW1wID0gYWZ1bmM7CiAgICAgICAgICAgICAgICAgICAgYWZ1bmMgPSBiZnVuYzsKICAgICAgICAgICAgICAgICAgICBiZnVuYyA9IHRlbXA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wLCBsID0gZGF0YS5sZW5ndGg7IGkgPCBsOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFmdW5jKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FkZCc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYW5kcy5oaURhdGEucHVzaChbZGF0YVtpXVswXSwgZGF0YVtpXVsxXSArIGFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtdWx0aXBseSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYW5kcy5oaURhdGEucHVzaChbZGF0YVtpXVswXSwgZGF0YVtpXVsxXSAqIGFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGJmdW5jKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FkZCc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYW5kcy5sb3dEYXRhLnB1c2goW2RhdGFbaV1bMF0sIGRhdGFbaV1bMV0gKyBiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbXVsdGlwbHknOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFuZHMubG93RGF0YS5wdXNoKFtkYXRhW2ldWzBdLCBkYXRhW2ldWzFdICogYl0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGJhbmRzLnNob3cgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdmFyIGhkID0gYmFuZHMuaGlEYXRhOwogICAgICAgIHZhciBsZCA9IGJhbmRzLmxvd0RhdGE7CiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBoZC5sZW5ndGg7IGk8bDsgaSsrKSB7CiAgICAgICAgICAgIGlmICgoaGRbaV1bMV0gIT0gbnVsbCAmJiBoZFtpXVsxXSA+IGJhbmRzLl9tYXgpIHx8IGJhbmRzLl9tYXggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgYmFuZHMuX21heCA9IGhkW2ldWzFdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gbGQubGVuZ3RoOyBpPGw7IGkrKykgewogICAgICAgICAgICBpZiAoKGxkW2ldWzFdICE9IG51bGwgJiYgbGRbaV1bMV0gPCBiYW5kcy5fbWluKSB8fCBiYW5kcy5fbWluID09IG51bGwpIHsKICAgICAgICAgICAgICAgIGJhbmRzLl9taW4gPSBsZFtpXVsxXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gb25lIGxhc3QgY2hlY2sgZm9yIHByb3BlciBkYXRhCiAgICAgICAgLy8gdGhlc2UgZG9uJ3QgYXBwbHkgYW55IG1vcmUgc2luY2UgYWxsb3dpbmcgYXJiaXRyYXJ5IHgseSB2YWx1ZXMKICAgICAgICAvLyBpZiAoYmFuZHMuaGlEYXRhLmxlbmd0aCAhPSBiYW5kcy5sb3dEYXRhLmxlbmd0aCkgewogICAgICAgIC8vICAgICBiYW5kcy5zaG93ID0gZmFsc2U7CiAgICAgICAgLy8gfQoKICAgICAgICAvLyBpZiAoYmFuZHMuaGlEYXRhLmxlbmd0aCAhPSB0aGlzLmRhdGEubGVuZ3RoKSB7CiAgICAgICAgLy8gICAgIGJhbmRzLnNob3cgPSBmYWxzZTsKICAgICAgICAvLyB9CgogICAgICAgIGlmIChiYW5kcy5maWxsQ29sb3IgPT09IG51bGwpIHsKICAgICAgICAgICAgdmFyIGMgPSAkLmpxcGxvdC5nZXRDb2xvckNvbXBvbmVudHMoYmFuZHMuY29sb3IpOwogICAgICAgICAgICAvLyBub3cgYWRqdXN0IGFscGhhIHRvIGRpZmZlcmVudGlhdGUgZmlsbAogICAgICAgICAgICBjWzNdID0gY1szXSAqIDAuNTsKICAgICAgICAgICAgYmFuZHMuZmlsbENvbG9yID0gJ3JnYmEoJyArIGNbMF0gKycsICcrIGNbMV0gKycsICcrIGNbMl0gKycsICcrIGNbM10gKyAnKSc7CiAgICAgICAgfQogICAgfTsKCiAgICBmdW5jdGlvbiBnZXRTdGVwcyAoZCwgZikgewogICAgICAgIHJldHVybiAoMy40MTgyMDU0K2YpICogTWF0aC5wb3coZCwgLTAuMzUzNDk5Mik7CiAgICB9CgogICAgZnVuY3Rpb24gY29tcHV0ZVN0ZXBzIChkMSwgZDIpIHsKICAgICAgICB2YXIgcyA9IE1hdGguc3FydChNYXRoLnBvdygoZDJbMF0tIGQxWzBdKSwgMikgKyBNYXRoLnBvdyAoKGQyWzFdIC0gZDFbMV0pLCAyKSk7CiAgICAgICAgcmV0dXJuIDUuNzY0OCAqIE1hdGgubG9nKHMpICsgNy40NDU2OwogICAgfQoKICAgIGZ1bmN0aW9uIHRhbmggKHgpIHsKICAgICAgICB2YXIgYSA9IChNYXRoLmV4cCgyKngpIC0gMSkgLyAoTWF0aC5leHAoMip4KSArIDEpOwogICAgICAgIHJldHVybiBhOwogICAgfQoKICAgIC8vLy8vLy8vLy8KICAgIC8vIGNvbXB1dGVDb25zdHJhaW5lZFNtb290aGVkRGF0YQogICAgLy8gQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGNvbnN0cmFpbmVkIGN1YmljIHNwbGluZSBpbnRlcnBvbGF0aW9uCiAgICAvLyBtZXRob2QgYXMgcHJlc2VudGVkIGluOgogICAgLy8KICAgIC8vIEtydWdlciwgQ0pDLCBDb25zdHJhaW5lZCBDdWJpYyBTcGluZSBJbnRlcnBvbGF0aW9uIGZvciBDaGVtaWNhbCBFbmdpbmVlcmluZyBBcHBsaWNhdGlvbnMKICAgIC8vIGh0dHA6Ly93d3cua29yZi5jby51ay9zcGxpbmUucGRmCiAgICAvLwogICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIGJlbG93IGJvcnJvd3MgaGVhdmlseSBmcm9tIHRoZSBzYW1wbGUgVmlzdWFsIEJhc2ljCiAgICAvLyBpbXBsZW1lbnRhdGlvbiBieSBDSkMgS3J1Z2VyIGZvdW5kIGluIGh0dHA6Ly93d3cua29yZi5jby51ay9zcGxpbmUueGxzCiAgICAvLwogICAgLy8vLy8vLy8vCgogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2Ygc2VyaWVzCiAgICBmdW5jdGlvbiBjb21wdXRlQ29uc3RyYWluZWRTbW9vdGhlZERhdGEgKGdkKSB7CiAgICAgICAgdmFyIHNtb290aCA9IHRoaXMucmVuZGVyZXIuc21vb3RoOwogICAgICAgIHZhciBkaW0gPSB0aGlzLmNhbnZhcy5nZXRXaWR0aCgpOwogICAgICAgIHZhciB4cCA9IHRoaXMuX3hheGlzLnNlcmllc19wMnU7CiAgICAgICAgdmFyIHlwID0gdGhpcy5feWF4aXMuc2VyaWVzX3AydTsgCiAgICAgICAgdmFyIHN0ZXBzID1udWxsOwogICAgICAgIHZhciBfc3RlcHMgPSBudWxsOwogICAgICAgIHZhciBkaXN0ID0gZ2QubGVuZ3RoL2RpbTsKICAgICAgICB2YXIgX3Ntb290aGVkRGF0YSA9IFtdOwogICAgICAgIHZhciBfc21vb3RoZWRQbG90RGF0YSA9IFtdOwoKICAgICAgICBpZiAoIWlzTmFOKHBhcnNlRmxvYXQoc21vb3RoKSkpIHsKICAgICAgICAgICAgc3RlcHMgPSBwYXJzZUZsb2F0KHNtb290aCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBzdGVwcyA9IGdldFN0ZXBzKGRpc3QsIDAuNSk7CiAgICAgICAgfQoKICAgICAgICB2YXIgeXkgPSBbXTsKICAgICAgICB2YXIgeHggPSBbXTsKCiAgICAgICAgZm9yICh2YXIgaT0wLCBsID0gZ2QubGVuZ3RoOyBpPGw7IGkrKykgewogICAgICAgICAgICB5eS5wdXNoKGdkW2ldWzFdKTsKICAgICAgICAgICAgeHgucHVzaChnZFtpXVswXSk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBkeHgoeDEsIHgwKSB7CiAgICAgICAgICAgIGlmICh4MSAtIHgwID09IDApIHsKICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnBvdygxMCwxMCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4geDEgLSB4MDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdmFyIEEsIEIsIEMsIEQ7CiAgICAgICAgLy8gbG9vcCB0aHJvdWdoIGVhY2ggbGluZSBzZWdtZW50LiAgSGF2ZSAjIHBvaW50cyAtIDEgbGluZSBzZWdtZW50cy4gIE5tYmVyIHNlZ21lbnRzIHN0YXJ0aW5nIGF0IDEuCiAgICAgICAgdmFyIG5tYXggPSBnZC5sZW5ndGggLSAxOwogICAgICAgIGZvciAodmFyIG51bSA9IDEsIGdkbCA9IGdkLmxlbmd0aDsgbnVtPGdkbDsgbnVtKyspIHsKICAgICAgICAgICAgdmFyIGd4eCA9IFtdOwogICAgICAgICAgICB2YXIgZ2d4eCA9IFtdOwogICAgICAgICAgICAvLyBwb2ludCBhdCBlYWNoIGVuZCBvZiBzZWdtZW50LgogICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDI7IGorKykgewogICAgICAgICAgICAgICAgdmFyIGkgPSBudW0gLSAxICsgajsgLy8gcG9pbnQgbnVtYmVyLCAwIHRvICMgcG9pbnRzLgoKICAgICAgICAgICAgICAgIGlmIChpID09IDAgfHwgaSA9PSBubWF4KSB7CiAgICAgICAgICAgICAgICAgICAgZ3h4W2pdID0gTWF0aC5wb3coMTAsIDEwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHl5W2krMV0gLSB5eVtpXSA9PSAwIHx8IHl5W2ldIC0geXlbaS0xXSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgZ3h4W2pdID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKCgoeHhbaSsxXSAtIHh4W2ldKSAvICh5eVtpKzFdIC0geXlbaV0pICsgKHh4W2ldIC0geHhbaS0xXSkgLyAoeXlbaV0gLSB5eVtpLTFdKSkgPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICBneHhbal0gPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoICh5eVtpKzFdIC0geXlbaV0pICogKHl5W2ldIC0geXlbaS0xXSkgPCAwICkgewogICAgICAgICAgICAgICAgICAgIGd4eFtqXSA9IDA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZ3h4W2pdID0gMiAvIChkeHgoeHhbaSArIDFdLCB4eFtpXSkgLyAoeXlbaSArIDFdIC0geXlbaV0pICsgZHh4KHh4W2ldLCB4eFtpIC0gMV0pIC8gKHl5W2ldIC0geXlbaSAtIDFdKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFJlc2V0IGZpcnN0IGRlcml2YXRpdmUgKHNsb3BlKSBhdCBmaXJzdCBhbmQgbGFzdCBwb2ludAogICAgICAgICAgICBpZiAobnVtID09IDEpIHsKICAgICAgICAgICAgICAgIC8vIEZpcnN0IHBvaW50IGhhcyAwIDJuZCBkZXJpdmF0aXZlCiAgICAgICAgICAgICAgICBneHhbMF0gPSAzIC8gMiAqICh5eVsxXSAtIHl5WzBdKSAvIGR4eCh4eFsxXSwgeHhbMF0pIC0gZ3h4WzFdIC8gMjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChudW0gPT0gbm1heCkgewogICAgICAgICAgICAgICAgLy8gTGFzdCBwb2ludCBoYXMgMCAybmQgZGVyaXZhdGl2ZQogICAgICAgICAgICAgICAgZ3h4WzFdID0gMyAvIDIgKiAoeXlbbm1heF0gLSB5eVtubWF4IC0gMV0pIC8gZHh4KHh4W25tYXhdLCB4eFtubWF4IC0gMV0pIC0gZ3h4WzBdIC8gMjsKICAgICAgICAgICAgfSAgIAoKICAgICAgICAgICAgLy8gQ2FsYyBzZWNvbmQgZGVyaXZhdGl2ZSBhdCBwb2ludHMKICAgICAgICAgICAgZ2d4eFswXSA9IC0yICogKGd4eFsxXSArIDIgKiBneHhbMF0pIC8gZHh4KHh4W251bV0sIHh4W251bSAtIDFdKSArIDYgKiAoeXlbbnVtXSAtIHl5W251bSAtIDFdKSAvIE1hdGgucG93KGR4eCh4eFtudW1dLCB4eFtudW0gLSAxXSksIDIpOwogICAgICAgICAgICBnZ3h4WzFdID0gMiAqICgyICogZ3h4WzFdICsgZ3h4WzBdKSAvIGR4eCh4eFtudW1dLCB4eFtudW0gLSAxXSkgLSA2ICogKHl5W251bV0gLSB5eVtudW0gLSAxXSkgLyBNYXRoLnBvdyhkeHgoeHhbbnVtXSwgeHhbbnVtIC0gMV0pLCAyKTsKCiAgICAgICAgICAgIC8vIENhbGMgY29uc3RhbnRzIGZvciBjdWJpYyBpbnRlcnBvbGF0aW9uCiAgICAgICAgICAgIEQgPSAxIC8gNiAqIChnZ3h4WzFdIC0gZ2d4eFswXSkgLyBkeHgoeHhbbnVtXSwgeHhbbnVtIC0gMV0pOwogICAgICAgICAgICBDID0gMSAvIDIgKiAoeHhbbnVtXSAqIGdneHhbMF0gLSB4eFtudW0gLSAxXSAqIGdneHhbMV0pIC8gZHh4KHh4W251bV0sIHh4W251bSAtIDFdKTsKICAgICAgICAgICAgQiA9ICh5eVtudW1dIC0geXlbbnVtIC0gMV0gLSBDICogKE1hdGgucG93KHh4W251bV0sIDIpIC0gTWF0aC5wb3coeHhbbnVtIC0gMV0sIDIpKSAtIEQgKiAoTWF0aC5wb3coeHhbbnVtXSwgMykgLSBNYXRoLnBvdyh4eFtudW0gLSAxXSwgMykpKSAvIGR4eCh4eFtudW1dLCB4eFtudW0gLSAxXSk7CiAgICAgICAgICAgIEEgPSB5eVtudW0gLSAxXSAtIEIgKiB4eFtudW0gLSAxXSAtIEMgKiBNYXRoLnBvdyh4eFtudW0gLSAxXSwgMikgLSBEICogTWF0aC5wb3coeHhbbnVtIC0gMV0sIDMpOwoKICAgICAgICAgICAgdmFyIGluY3JlbWVudCA9ICh4eFtudW1dIC0geHhbbnVtIC0gMV0pIC8gc3RlcHM7CiAgICAgICAgICAgIHZhciB0ZW1wLCB0ZW1weDsKCiAgICAgICAgICAgIGZvciAodmFyIGogPSAwLCBsID0gc3RlcHM7IGogPCBsOyBqKyspIHsKICAgICAgICAgICAgICAgIHRlbXAgPSBbXTsKICAgICAgICAgICAgICAgIHRlbXB4ID0geHhbbnVtIC0gMV0gKyBqICogaW5jcmVtZW50OwogICAgICAgICAgICAgICAgdGVtcC5wdXNoKHRlbXB4KTsKICAgICAgICAgICAgICAgIHRlbXAucHVzaChBICsgQiAqIHRlbXB4ICsgQyAqIE1hdGgucG93KHRlbXB4LCAyKSArIEQgKiBNYXRoLnBvdyh0ZW1weCwgMykpOwogICAgICAgICAgICAgICAgX3Ntb290aGVkRGF0YS5wdXNoKHRlbXApOwogICAgICAgICAgICAgICAgX3Ntb290aGVkUGxvdERhdGEucHVzaChbeHAodGVtcFswXSksIHlwKHRlbXBbMV0pXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIF9zbW9vdGhlZERhdGEucHVzaChnZFtpXSk7CiAgICAgICAgX3Ntb290aGVkUGxvdERhdGEucHVzaChbeHAoZ2RbaV1bMF0pLCB5cChnZFtpXVsxXSldKTsKCiAgICAgICAgcmV0dXJuIFtfc21vb3RoZWREYXRhLCBfc21vb3RoZWRQbG90RGF0YV07CiAgICB9CgogICAgLy8vLy8vLwogICAgLy8gY29tcHV0ZUhlcm1pdGVTbW9vdGhlZERhdGEKICAgIC8vIEEgaGVybWl0ZSBzcGxpbmUgc21vb3RoaW5nIG9mIHRoZSBwbG90IGRhdGEuCiAgICAvLyBUaGlzIGltcGxlbWVudGF0aW9uIGlzIGRlcml2ZWQgZnJvbSB0aGUgb25lIHBvc3RlZAogICAgLy8gYnkga3J5cGluIG9uIHRoZSBqcXBsb3QtdXNlcnMgbWFpbGluZyBsaXN0OgogICAgLy8KICAgIC8vIGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9qcXBsb3QtdXNlcnMvYnJvd3NlX3RocmVhZC90aHJlYWQvNzQ4YmU2YTQ0NTcyM2NlYT9wbGk9MQogICAgLy8KICAgIC8vIHdpdGggYSBibG9nIHBvc3Q6CiAgICAvLwogICAgLy8gaHR0cDovL2Jsb2cuc3RhdHNjb2xsZWN0b3IuY29tL2EtcGx1Z2luLXJlbmRlcmVyLWZvci1qcXBsb3QtdG8tZHJhdy1hLWhlcm1pdGUtc3BsaW5lLwogICAgLy8KICAgIC8vIGFuZCBkb3dubG9hZCBvZiB0aGUgb3JpZ2luYWwgcGx1Z2luOgogICAgLy8KICAgIC8vIGh0dHA6Ly9ibG9nLnN0YXRzY29sbGVjdG9yLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxMC8wMi9qcXBsb3QuaGVybWl0ZVNwbGluZVJlbmRlcmVyLmpzCiAgICAvLy8vLy8vLy8vCgogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2Ygc2VyaWVzCiAgICBmdW5jdGlvbiBjb21wdXRlSGVybWl0ZVNtb290aGVkRGF0YSAoZ2QpIHsKICAgICAgICB2YXIgc21vb3RoID0gdGhpcy5yZW5kZXJlci5zbW9vdGg7CiAgICAgICAgdmFyIHRlbnNpb24gPSB0aGlzLnJlbmRlcmVyLnRlbnNpb247CiAgICAgICAgdmFyIGRpbSA9IHRoaXMuY2FudmFzLmdldFdpZHRoKCk7CiAgICAgICAgdmFyIHhwID0gdGhpcy5feGF4aXMuc2VyaWVzX3AydTsKICAgICAgICB2YXIgeXAgPSB0aGlzLl95YXhpcy5zZXJpZXNfcDJ1OyAKICAgICAgICB2YXIgc3RlcHMgPW51bGw7CiAgICAgICAgdmFyIF9zdGVwcyA9IG51bGw7CiAgICAgICAgdmFyIGEgPSBudWxsOwogICAgICAgIHZhciBhMSA9IG51bGw7CiAgICAgICAgdmFyIGEyID0gbnVsbDsKICAgICAgICB2YXIgc2xvcGUgPSBudWxsOwogICAgICAgIHZhciBzbG9wZTIgPSBudWxsOwogICAgICAgIHZhciB0ZW1wID0gbnVsbDsKICAgICAgICB2YXIgdCwgcywgaDEsIGgyLCBoMywgaDQ7CiAgICAgICAgdmFyIFRpWCwgVGlZLCBUaTFYLCBUaTFZOwogICAgICAgIHZhciBwWCwgcFksIHA7CiAgICAgICAgdmFyIHNkID0gW107CiAgICAgICAgdmFyIHNwZCA9IFtdOwogICAgICAgIHZhciBkaXN0ID0gZ2QubGVuZ3RoL2RpbTsKICAgICAgICB2YXIgbWluLCBtYXgsIHN0cmV0Y2gsIHNjYWxlLCBzaGlmdDsKICAgICAgICB2YXIgX3Ntb290aGVkRGF0YSA9IFtdOwogICAgICAgIHZhciBfc21vb3RoZWRQbG90RGF0YSA9IFtdOwogICAgICAgIGlmICghaXNOYU4ocGFyc2VGbG9hdChzbW9vdGgpKSkgewogICAgICAgICAgICBzdGVwcyA9IHBhcnNlRmxvYXQoc21vb3RoKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHN0ZXBzID0gZ2V0U3RlcHMoZGlzdCwgMC41KTsKICAgICAgICB9CiAgICAgICAgaWYgKCFpc05hTihwYXJzZUZsb2F0KHRlbnNpb24pKSkgewogICAgICAgICAgICB0ZW5zaW9uID0gcGFyc2VGbG9hdCh0ZW5zaW9uKTsKICAgICAgICB9CgogICAgICAgIGZvciAodmFyIGk9MCwgbCA9IGdkLmxlbmd0aC0xOyBpIDwgbDsgaSsrKSB7CgogICAgICAgICAgICBpZiAodGVuc2lvbiA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgc2xvcGUgPSBNYXRoLmFicygoZ2RbaSsxXVsxXSAtIGdkW2ldWzFdKSAvIChnZFtpKzFdWzBdIC0gZ2RbaV1bMF0pKTsKCiAgICAgICAgICAgICAgICBtaW4gPSAwLjM7CiAgICAgICAgICAgICAgICBtYXggPSAwLjY7CiAgICAgICAgICAgICAgICBzdHJldGNoID0gKG1heCAtIG1pbikvMi4wOwogICAgICAgICAgICAgICAgc2NhbGUgPSAyLjU7CiAgICAgICAgICAgICAgICBzaGlmdCA9IC0xLjQ7CgogICAgICAgICAgICAgICAgdGVtcCA9IHNsb3BlL3NjYWxlICsgc2hpZnQ7CgogICAgICAgICAgICAgICAgYTEgPSBzdHJldGNoICogdGFuaCh0ZW1wKSAtIHN0cmV0Y2ggKiB0YW5oKHNoaWZ0KSArIG1pbjsKCiAgICAgICAgICAgICAgICAvLyBpZiBoYXZlIGJvdGggbGVmdCBhbmQgcmlnaHQgbGluZSBzZWdtZW50cywgd2lsbCB1c2UgIG1pbmltdW0gdGVuc2lvbi4gCiAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHsKICAgICAgICAgICAgICAgICAgICBzbG9wZTIgPSBNYXRoLmFicygoZ2RbaV1bMV0gLSBnZFtpLTFdWzFdKSAvIChnZFtpXVswXSAtIGdkW2ktMV1bMF0pKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRlbXAgPSBzbG9wZTIvc2NhbGUgKyBzaGlmdDsKCiAgICAgICAgICAgICAgICBhMiA9IHN0cmV0Y2ggKiB0YW5oKHRlbXApIC0gc3RyZXRjaCAqIHRhbmgoc2hpZnQpICsgbWluOwoKICAgICAgICAgICAgICAgIGEgPSAoYTEgKyBhMikvMi4wOwoKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGEgPSB0ZW5zaW9uOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciAodD0wOyB0IDwgc3RlcHM7IHQrKykgewogICAgICAgICAgICAgICAgcyA9IHQgLyBzdGVwczsKICAgICAgICAgICAgICAgIGgxID0gKDEgKyAyKnMpKk1hdGgucG93KCgxLXMpLDIpOwogICAgICAgICAgICAgICAgaDIgPSBzKk1hdGgucG93KCgxLXMpLDIpOwogICAgICAgICAgICAgICAgaDMgPSBNYXRoLnBvdyhzLDIpKigzLTIqcyk7CiAgICAgICAgICAgICAgICBoNCA9IE1hdGgucG93KHMsMikqKHMtMSk7ICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYgKGdkW2ktMV0pIHsgIAogICAgICAgICAgICAgICAgICAgIFRpWCA9IGEgKiAoZ2RbaSsxXVswXSAtIGdkW2ktMV1bMF0pOyAKICAgICAgICAgICAgICAgICAgICBUaVkgPSBhICogKGdkW2krMV1bMV0gLSBnZFtpLTFdWzFdKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgVGlYID0gYSAqIChnZFtpKzFdWzBdIC0gZ2RbaV1bMF0pOyAKICAgICAgICAgICAgICAgICAgICBUaVkgPSBhICogKGdkW2krMV1bMV0gLSBnZFtpXVsxXSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGdkW2krMl0pIHsgIAogICAgICAgICAgICAgICAgICAgIFRpMVggPSBhICogKGdkW2krMl1bMF0gLSBnZFtpXVswXSk7IAogICAgICAgICAgICAgICAgICAgIFRpMVkgPSBhICogKGdkW2krMl1bMV0gLSBnZFtpXVsxXSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIFRpMVggPSBhICogKGdkW2krMV1bMF0gLSBnZFtpXVswXSk7IAogICAgICAgICAgICAgICAgICAgIFRpMVkgPSBhICogKGdkW2krMV1bMV0gLSBnZFtpXVsxXSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHBYID0gaDEqZ2RbaV1bMF0gKyBoMypnZFtpKzFdWzBdICsgaDIqVGlYICsgaDQqVGkxWDsKICAgICAgICAgICAgICAgIHBZID0gaDEqZ2RbaV1bMV0gKyBoMypnZFtpKzFdWzFdICsgaDIqVGlZICsgaDQqVGkxWTsKICAgICAgICAgICAgICAgIHAgPSBbcFgsIHBZXTsKCiAgICAgICAgICAgICAgICBfc21vb3RoZWREYXRhLnB1c2gocCk7CiAgICAgICAgICAgICAgICBfc21vb3RoZWRQbG90RGF0YS5wdXNoKFt4cChwWCksIHlwKHBZKV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIF9zbW9vdGhlZERhdGEucHVzaChnZFtsXSk7CiAgICAgICAgX3Ntb290aGVkUGxvdERhdGEucHVzaChbeHAoZ2RbbF1bMF0pLCB5cChnZFtsXVsxXSldKTsKCiAgICAgICAgcmV0dXJuIFtfc21vb3RoZWREYXRhLCBfc21vb3RoZWRQbG90RGF0YV07CiAgICB9CiAgICAKICAgIC8vIHNldEdyaWREYXRhCiAgICAvLyBjb252ZXJ0cyB0aGUgdXNlciBkYXRhIHZhbHVlcyB0byBncmlkIGNvb3JkaW5hdGVzIGFuZCBzdG9yZXMgdGhlbQogICAgLy8gaW4gdGhlIGdyaWREYXRhIGFycmF5LgogICAgLy8gQ2FsbGVkIHdpdGggc2NvcGUgb2YgYSBzZXJpZXMuCiAgICAkLmpxcGxvdC5MaW5lUmVuZGVyZXIucHJvdG90eXBlLnNldEdyaWREYXRhID0gZnVuY3Rpb24ocGxvdCkgewogICAgICAgIC8vIHJlY2FsY3VsYXRlIHRoZSBncmlkIGRhdGEKICAgICAgICB2YXIgeHAgPSB0aGlzLl94YXhpcy5zZXJpZXNfdTJwOwogICAgICAgIHZhciB5cCA9IHRoaXMuX3lheGlzLnNlcmllc191MnA7CiAgICAgICAgdmFyIGRhdGEgPSB0aGlzLl9wbG90RGF0YTsKICAgICAgICB2YXIgcGRhdGEgPSB0aGlzLl9wcmV2UGxvdERhdGE7CiAgICAgICAgdGhpcy5ncmlkRGF0YSA9IFtdOwogICAgICAgIHRoaXMuX3ByZXZHcmlkRGF0YSA9IFtdOwogICAgICAgIHRoaXMucmVuZGVyZXIuX3Ntb290aGVkRGF0YSA9IFtdOwogICAgICAgIHRoaXMucmVuZGVyZXIuX3Ntb290aGVkUGxvdERhdGEgPSBbXTsKICAgICAgICB0aGlzLnJlbmRlcmVyLl9oaUJhbmRHcmlkRGF0YSA9IFtdOwogICAgICAgIHRoaXMucmVuZGVyZXIuX2xvd0JhbmRHcmlkRGF0YSA9IFtdOwogICAgICAgIHRoaXMucmVuZGVyZXIuX2hpQmFuZFNtb290aGVkRGF0YSA9IFtdOwogICAgICAgIHRoaXMucmVuZGVyZXIuX2xvd0JhbmRTbW9vdGhlZERhdGEgPSBbXTsKICAgICAgICB2YXIgYmFuZHMgPSB0aGlzLnJlbmRlcmVyLmJhbmRzOwogICAgICAgIHZhciBoYXNOdWxsID0gZmFsc2U7CiAgICAgICAgZm9yICh2YXIgaT0wLCBsPWRhdGEubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CiAgICAgICAgICAgIC8vIGlmIG5vdCBhIGxpbmUgc2VyaWVzIG9yIGlmIG5vIG51bGxzIGluIGRhdGEsIHB1c2ggdGhlIGNvbnZlcnRlZCBwb2ludCBvbnRvIHRoZSBhcnJheS4KICAgICAgICAgICAgaWYgKGRhdGFbaV1bMF0gIT0gbnVsbCAmJiBkYXRhW2ldWzFdICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEucHVzaChbeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVtpXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbaV1bMV0pXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gZWxzZSBpZiB0aGVyZSBpcyBhIG51bGwsIHByZXNlcnZlIGl0LgogICAgICAgICAgICBlbHNlIGlmIChkYXRhW2ldWzBdID09IG51bGwpIHsKICAgICAgICAgICAgICAgIGhhc051bGwgPSB0cnVlOwogICAgICAgICAgICAgICAgdGhpcy5ncmlkRGF0YS5wdXNoKFtudWxsLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhW2ldWzFdKV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGRhdGFbaV1bMV0gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgaGFzTnVsbCA9IHRydWU7CiAgICAgICAgICAgICAgICB0aGlzLmdyaWREYXRhLnB1c2goW3hwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbaV1bMF0pLCBudWxsXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gaWYgbm90IGEgbGluZSBzZXJpZXMgb3IgaWYgbm8gbnVsbHMgaW4gZGF0YSwgcHVzaCB0aGUgY29udmVydGVkIHBvaW50IG9udG8gdGhlIGFycmF5LgogICAgICAgICAgICBpZiAocGRhdGFbaV0gIT0gbnVsbCAmJiBwZGF0YVtpXVswXSAhPSBudWxsICYmIHBkYXRhW2ldWzFdICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3ByZXZHcmlkRGF0YS5wdXNoKFt4cC5jYWxsKHRoaXMuX3hheGlzLCBwZGF0YVtpXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIHBkYXRhW2ldWzFdKV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIGVsc2UgaWYgdGhlcmUgaXMgYSBudWxsLCBwcmVzZXJ2ZSBpdC4KICAgICAgICAgICAgZWxzZSBpZiAocGRhdGFbaV0gIT0gbnVsbCAmJiBwZGF0YVtpXVswXSA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9wcmV2R3JpZERhdGEucHVzaChbbnVsbCwgeXAuY2FsbCh0aGlzLl95YXhpcywgcGRhdGFbaV1bMV0pXSk7CiAgICAgICAgICAgIH0gIAogICAgICAgICAgICBlbHNlIGlmIChwZGF0YVtpXSAhPSBudWxsICYmIHBkYXRhW2ldWzBdICE9IG51bGwgJiYgcGRhdGFbaV1bMV0gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgdGhpcy5fcHJldkdyaWREYXRhLnB1c2goW3hwLmNhbGwodGhpcy5feGF4aXMsIHBkYXRhW2ldWzBdKSwgbnVsbF0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBkb24ndCBkbyBzbW9vdGhpbmcgb3IgYmFuZHMgb24gYnJva2VuIGxpbmVzLgogICAgICAgIGlmIChoYXNOdWxsKSB7CiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc21vb3RoID0gZmFsc2U7CiAgICAgICAgICAgIGlmICh0aGlzLl90eXBlID09PSAnbGluZScpIHsKICAgICAgICAgICAgICAgIGJhbmRzLnNob3cgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMuX3R5cGUgPT09ICdsaW5lJyAmJiBiYW5kcy5zaG93KSB7CiAgICAgICAgICAgIGZvciAodmFyIGk9MCwgbD1iYW5kcy5oaURhdGEubGVuZ3RoOyBpPGw7IGkrKykgewogICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5faGlCYW5kR3JpZERhdGEucHVzaChbeHAuY2FsbCh0aGlzLl94YXhpcywgYmFuZHMuaGlEYXRhW2ldWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgYmFuZHMuaGlEYXRhW2ldWzFdKV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciAodmFyIGk9MCwgbD1iYW5kcy5sb3dEYXRhLmxlbmd0aDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuX2xvd0JhbmRHcmlkRGF0YS5wdXNoKFt4cC5jYWxsKHRoaXMuX3hheGlzLCBiYW5kcy5sb3dEYXRhW2ldWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgYmFuZHMubG93RGF0YVtpXVsxXSldKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gY2FsY3VsYXRlIHNtb290aGVkIGRhdGEgaWYgZW5vdWdoIHBvaW50cyBhbmQgbm8gbnVsbHMKICAgICAgICBpZiAodGhpcy5fdHlwZSA9PT0gJ2xpbmUnICYmIHRoaXMucmVuZGVyZXIuc21vb3RoICYmIHRoaXMuZ3JpZERhdGEubGVuZ3RoID4gMikgewogICAgICAgICAgICB2YXIgcmV0OwogICAgICAgICAgICBpZiAodGhpcy5yZW5kZXJlci5jb25zdHJhaW5TbW9vdGhpbmcpIHsKICAgICAgICAgICAgICAgIHJldCA9IGNvbXB1dGVDb25zdHJhaW5lZFNtb290aGVkRGF0YS5jYWxsKHRoaXMsIHRoaXMuZ3JpZERhdGEpOwogICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5fc21vb3RoZWREYXRhID0gcmV0WzBdOwogICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5fc21vb3RoZWRQbG90RGF0YSA9IHJldFsxXTsKCiAgICAgICAgICAgICAgICBpZiAoYmFuZHMuc2hvdykgewogICAgICAgICAgICAgICAgICAgIHJldCA9IGNvbXB1dGVDb25zdHJhaW5lZFNtb290aGVkRGF0YS5jYWxsKHRoaXMsIHRoaXMucmVuZGVyZXIuX2hpQmFuZEdyaWREYXRhKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLl9oaUJhbmRTbW9vdGhlZERhdGEgPSByZXRbMF07CiAgICAgICAgICAgICAgICAgICAgcmV0ID0gY29tcHV0ZUNvbnN0cmFpbmVkU21vb3RoZWREYXRhLmNhbGwodGhpcywgdGhpcy5yZW5kZXJlci5fbG93QmFuZEdyaWREYXRhKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLl9sb3dCYW5kU21vb3RoZWREYXRhID0gcmV0WzBdOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldCA9IG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICByZXQgPSBjb21wdXRlSGVybWl0ZVNtb290aGVkRGF0YS5jYWxsKHRoaXMsIHRoaXMuZ3JpZERhdGEpOwogICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5fc21vb3RoZWREYXRhID0gcmV0WzBdOwogICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5fc21vb3RoZWRQbG90RGF0YSA9IHJldFsxXTsKCiAgICAgICAgICAgICAgICBpZiAoYmFuZHMuc2hvdykgewogICAgICAgICAgICAgICAgICAgIHJldCA9IGNvbXB1dGVIZXJtaXRlU21vb3RoZWREYXRhLmNhbGwodGhpcywgdGhpcy5yZW5kZXJlci5faGlCYW5kR3JpZERhdGEpOwogICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuX2hpQmFuZFNtb290aGVkRGF0YSA9IHJldFswXTsKICAgICAgICAgICAgICAgICAgICByZXQgPSBjb21wdXRlSGVybWl0ZVNtb290aGVkRGF0YS5jYWxsKHRoaXMsIHRoaXMucmVuZGVyZXIuX2xvd0JhbmRHcmlkRGF0YSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5fbG93QmFuZFNtb290aGVkRGF0YSA9IHJldFswXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXQgPSBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKICAgIAogICAgLy8gbWFrZUdyaWREYXRhCiAgICAvLyBjb252ZXJ0cyBhbnkgYXJiaXRyYXJ5IGRhdGEgdmFsdWVzIHRvIGdyaWQgY29vcmRpbmF0ZXMgYW5kCiAgICAvLyByZXR1cm5zIHRoZW0uICBUaGlzIG1ldGhvZCBleGlzdHMgc28gdGhhdCBwbHVnaW5zIGNhbiB1c2UgYSBzZXJpZXMnCiAgICAvLyBsaW5lcmVuZGVyZXIgdG8gZ2VuZXJhdGUgZ3JpZCBkYXRhIHBvaW50cyB3aXRob3V0IG92ZXJ3cml0aW5nIHRoZQogICAgLy8gZ3JpZCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGF0IHNlcmllcy4KICAgIC8vIENhbGxlZCB3aXRoIHNjb3BlIG9mIGEgc2VyaWVzLgogICAgJC5qcXBsb3QuTGluZVJlbmRlcmVyLnByb3RvdHlwZS5tYWtlR3JpZERhdGEgPSBmdW5jdGlvbihkYXRhLCBwbG90KSB7CiAgICAgICAgLy8gcmVjYWxjdWxhdGUgdGhlIGdyaWQgZGF0YQogICAgICAgIHZhciB4cCA9IHRoaXMuX3hheGlzLnNlcmllc191MnA7CiAgICAgICAgdmFyIHlwID0gdGhpcy5feWF4aXMuc2VyaWVzX3UycDsKICAgICAgICB2YXIgZ2QgPSBbXTsKICAgICAgICB2YXIgcGdkID0gW107CiAgICAgICAgdGhpcy5yZW5kZXJlci5fc21vb3RoZWREYXRhID0gW107CiAgICAgICAgdGhpcy5yZW5kZXJlci5fc21vb3RoZWRQbG90RGF0YSA9IFtdOwogICAgICAgIHRoaXMucmVuZGVyZXIuX2hpQmFuZEdyaWREYXRhID0gW107CiAgICAgICAgdGhpcy5yZW5kZXJlci5fbG93QmFuZEdyaWREYXRhID0gW107CiAgICAgICAgdGhpcy5yZW5kZXJlci5faGlCYW5kU21vb3RoZWREYXRhID0gW107CiAgICAgICAgdGhpcy5yZW5kZXJlci5fbG93QmFuZFNtb290aGVkRGF0YSA9IFtdOwogICAgICAgIHZhciBiYW5kcyA9IHRoaXMucmVuZGVyZXIuYmFuZHM7CiAgICAgICAgdmFyIGhhc051bGwgPSBmYWxzZTsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8ZGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAvLyBpZiBub3QgYSBsaW5lIHNlcmllcyBvciBpZiBubyBudWxscyBpbiBkYXRhLCBwdXNoIHRoZSBjb252ZXJ0ZWQgcG9pbnQgb250byB0aGUgYXJyYXkuCiAgICAgICAgICAgIGlmIChkYXRhW2ldWzBdICE9IG51bGwgJiYgZGF0YVtpXVsxXSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBnZC5wdXNoKFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhW2ldWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVtpXVsxXSldKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBlbHNlIGlmIHRoZXJlIGlzIGEgbnVsbCwgcHJlc2VydmUgaXQuCiAgICAgICAgICAgIGVsc2UgaWYgKGRhdGFbaV1bMF0gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgaGFzTnVsbCA9IHRydWU7CiAgICAgICAgICAgICAgICBnZC5wdXNoKFtudWxsLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhW2ldWzFdKV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGRhdGFbaV1bMV0gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgaGFzTnVsbCA9IHRydWU7CiAgICAgICAgICAgICAgICBnZC5wdXNoKFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhW2ldWzBdKSwgbnVsbF0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBkb24ndCBkbyBzbW9vdGhpbmcgb3IgYmFuZHMgb24gYnJva2VuIGxpbmVzLgogICAgICAgIGlmIChoYXNOdWxsKSB7CiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc21vb3RoID0gZmFsc2U7CiAgICAgICAgICAgIGlmICh0aGlzLl90eXBlID09PSAnbGluZScpIHsKICAgICAgICAgICAgICAgIGJhbmRzLnNob3cgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMuX3R5cGUgPT09ICdsaW5lJyAmJiBiYW5kcy5zaG93KSB7CiAgICAgICAgICAgIGZvciAodmFyIGk9MCwgbD1iYW5kcy5oaURhdGEubGVuZ3RoOyBpPGw7IGkrKykgewogICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5faGlCYW5kR3JpZERhdGEucHVzaChbeHAuY2FsbCh0aGlzLl94YXhpcywgYmFuZHMuaGlEYXRhW2ldWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgYmFuZHMuaGlEYXRhW2ldWzFdKV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciAodmFyIGk9MCwgbD1iYW5kcy5sb3dEYXRhLmxlbmd0aDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuX2xvd0JhbmRHcmlkRGF0YS5wdXNoKFt4cC5jYWxsKHRoaXMuX3hheGlzLCBiYW5kcy5sb3dEYXRhW2ldWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgYmFuZHMubG93RGF0YVtpXVsxXSldKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMuX3R5cGUgPT09ICdsaW5lJyAmJiB0aGlzLnJlbmRlcmVyLnNtb290aCAmJiBnZC5sZW5ndGggPiAyKSB7CiAgICAgICAgICAgIHZhciByZXQ7CiAgICAgICAgICAgIGlmICh0aGlzLnJlbmRlcmVyLmNvbnN0cmFpblNtb290aGluZykgewogICAgICAgICAgICAgICAgcmV0ID0gY29tcHV0ZUNvbnN0cmFpbmVkU21vb3RoZWREYXRhLmNhbGwodGhpcywgZ2QpOwogICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5fc21vb3RoZWREYXRhID0gcmV0WzBdOwogICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5fc21vb3RoZWRQbG90RGF0YSA9IHJldFsxXTsKCiAgICAgICAgICAgICAgICBpZiAoYmFuZHMuc2hvdykgewogICAgICAgICAgICAgICAgICAgIHJldCA9IGNvbXB1dGVDb25zdHJhaW5lZFNtb290aGVkRGF0YS5jYWxsKHRoaXMsIHRoaXMucmVuZGVyZXIuX2hpQmFuZEdyaWREYXRhKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLl9oaUJhbmRTbW9vdGhlZERhdGEgPSByZXRbMF07CiAgICAgICAgICAgICAgICAgICAgcmV0ID0gY29tcHV0ZUNvbnN0cmFpbmVkU21vb3RoZWREYXRhLmNhbGwodGhpcywgdGhpcy5yZW5kZXJlci5fbG93QmFuZEdyaWREYXRhKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLl9sb3dCYW5kU21vb3RoZWREYXRhID0gcmV0WzBdOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldCA9IG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICByZXQgPSBjb21wdXRlSGVybWl0ZVNtb290aGVkRGF0YS5jYWxsKHRoaXMsIGdkKTsKICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuX3Ntb290aGVkRGF0YSA9IHJldFswXTsKICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuX3Ntb290aGVkUGxvdERhdGEgPSByZXRbMV07CgogICAgICAgICAgICAgICAgaWYgKGJhbmRzLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICByZXQgPSBjb21wdXRlSGVybWl0ZVNtb290aGVkRGF0YS5jYWxsKHRoaXMsIHRoaXMucmVuZGVyZXIuX2hpQmFuZEdyaWREYXRhKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLl9oaUJhbmRTbW9vdGhlZERhdGEgPSByZXRbMF07CiAgICAgICAgICAgICAgICAgICAgcmV0ID0gY29tcHV0ZUhlcm1pdGVTbW9vdGhlZERhdGEuY2FsbCh0aGlzLCB0aGlzLnJlbmRlcmVyLl9sb3dCYW5kR3JpZERhdGEpOwogICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuX2xvd0JhbmRTbW9vdGhlZERhdGEgPSByZXRbMF07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0ID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gZ2Q7CiAgICB9OwogICAgCgogICAgLy8gY2FsbGVkIHdpdGhpbiBzY29wZSBvZiBzZXJpZXMuCiAgICAkLmpxcGxvdC5MaW5lUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjdHgsIGdkLCBvcHRpb25zLCBwbG90KSB7CiAgICAgICAgdmFyIGk7CiAgICAgICAgLy8gZ2V0IGEgY29weSBvZiB0aGUgb3B0aW9ucywgc28gd2UgZG9uJ3QgbW9kaWZ5IHRoZSBvcmlnaW5hbCBvYmplY3QuCiAgICAgICAgdmFyIG9wdHMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgb3B0aW9ucyk7CiAgICAgICAgdmFyIHNoYWRvdyA9IChvcHRzLnNoYWRvdyAhPSB1bmRlZmluZWQpID8gb3B0cy5zaGFkb3cgOiB0aGlzLnNoYWRvdzsKICAgICAgICB2YXIgc2hvd0xpbmUgPSAob3B0cy5zaG93TGluZSAhPSB1bmRlZmluZWQpID8gb3B0cy5zaG93TGluZSA6IHRoaXMuc2hvd0xpbmU7CiAgICAgICAgdmFyIGZpbGwgPSAob3B0cy5maWxsICE9IHVuZGVmaW5lZCkgPyBvcHRzLmZpbGwgOiB0aGlzLmZpbGw7CiAgICAgICAgdmFyIGZpbGxBbmRTdHJva2UgPSAob3B0cy5maWxsQW5kU3Ryb2tlICE9IHVuZGVmaW5lZCkgPyBvcHRzLmZpbGxBbmRTdHJva2UgOiB0aGlzLmZpbGxBbmRTdHJva2U7CiAgICAgICAgdmFyIHhtaW4sIHltaW4sIHhtYXgsIHltYXg7CiAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICBpZiAoZ2QubGVuZ3RoKSB7CiAgICAgICAgICAgIGlmIChzaG93TGluZSkgewogICAgICAgICAgICAgICAgLy8gaWYgd2UgZmlsbCwgd2UnbGwgaGF2ZSB0byBhZGQgcG9pbnRzIHRvIGNsb3NlIHRoZSBjdXJ2ZS4KICAgICAgICAgICAgICAgIGlmIChmaWxsKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsbFRvWmVybykgeyAKICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGF2ZSB0byBicmVhayBsaW5lIHVwIGludG8gc2hhcGVzIGF0IGF4aXMgY3Jvc3NpbmdzCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuZWdhdGl2ZUNvbG9yID0gdGhpcy5uZWdhdGl2ZUNvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISB0aGlzLnVzZU5lZ2F0aXZlQ29sb3JzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdhdGl2ZUNvbG9yID0gb3B0cy5maWxsU3R5bGU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlzbmVnYXRpdmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvc2ZzID0gb3B0cy5maWxsU3R5bGU7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN0b2tpbmcgbGluZSBhcyB3ZWxsIGFzIGZpbGxpbmcsIGdldCBhIGNvcHkgb2YgbGluZSBkYXRhLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsbEFuZFN0cm9rZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZhc2dkID0gZ2Quc2xpY2UoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgbm90IHN0YWNrZWQsIGZpbGwgZG93biB0byBheGlzCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmluZGV4ID09IDAgfHwgIXRoaXMuX3N0YWNrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXBnZCA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBkID0gKHRoaXMucmVuZGVyZXIuc21vb3RoKSA/IHRoaXMucmVuZGVyZXIuX3Ntb290aGVkUGxvdERhdGEgOiB0aGlzLl9wbG90RGF0YTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FyZWFQb2ludHMgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBweXplcm8gPSB0aGlzLl95YXhpcy5zZXJpZXNfdTJwKHRoaXMuZmlsbFRvVmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHB4emVybyA9IHRoaXMuX3hheGlzLnNlcmllc191MnAodGhpcy5maWxsVG9WYWx1ZSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0cy5jbG9zZVBhdGggPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5maWxsQXhpcyA9PSAneScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wZ2QucHVzaChbZ2RbMF1bMF0sIHB5emVyb10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FyZWFQb2ludHMucHVzaChbZ2RbMF1bMF0sIHB5emVyb10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxnZC5sZW5ndGgtMTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBnZC5wdXNoKGdkW2ldKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYXJlYVBvaW50cy5wdXNoKGdkW2ldKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG8gd2UgaGF2ZSBhbiBheGlzIGNyb3NzaW5nPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGRbaV1bMV0gKiBwZFtpKzFdWzFdIDw9IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZFtpXVsxXSA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc25lZ2F0aXZlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmZpbGxTdHlsZSA9IG5lZ2F0aXZlQ29sb3I7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc25lZ2F0aXZlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0cy5maWxsU3R5bGUgPSBwb3NmczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHhpbnRlcmNlcHQgPSBnZFtpXVswXSArIChnZFtpKzFdWzBdIC0gZ2RbaV1bMF0pICogKHB5emVyby1nZFtpXVsxXSkvKGdkW2krMV1bMV0gLSBnZFtpXVsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wZ2QucHVzaChbeGludGVyY2VwdCwgcHl6ZXJvXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hcmVhUG9pbnRzLnB1c2goW3hpbnRlcmNlcHQsIHB5emVyb10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm93IGRyYXcgdGhpcyBzaGFwZSBhbmQgc2hhZG93LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNoYWRvdykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIHRlbXBnZCwgb3B0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhjdHgsIHRlbXBnZCwgb3B0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBub3cgZW1wdHkgdGVtcCBhcnJheSBhbmQgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBnZCA9IFtbeGludGVyY2VwdCwgcHl6ZXJvXV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLl9hcmVhUG9pbnRzID0gW1t4aW50ZXJjZXB0LCBweXplcm9dXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGRbZ2QubGVuZ3RoLTFdWzFdIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc25lZ2F0aXZlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0cy5maWxsU3R5bGUgPSBuZWdhdGl2ZUNvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNuZWdhdGl2ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmZpbGxTdHlsZSA9IHBvc2ZzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wZ2QucHVzaChnZFtnZC5sZW5ndGgtMV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FyZWFQb2ludHMucHVzaChnZFtnZC5sZW5ndGgtMV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBnZC5wdXNoKFtnZFtnZC5sZW5ndGgtMV1bMF0sIHB5emVyb10pOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hcmVhUG9pbnRzLnB1c2goW2dkW2dkLmxlbmd0aC0xXVswXSwgcHl6ZXJvXSk7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm93IGRyYXcgdGhlIGxhc3QgYXJlYS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaGFkb3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoY3R4LCB0ZW1wZ2QsIG9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmRyYXcoY3R4LCB0ZW1wZ2QsIG9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhciBncmlkeW1pbiA9IHRoaXMuX3lheGlzLnNlcmllc191MnAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAvLyBJRSBkb2Vzbid0IHJldHVybiBuZXcgbGVuZ3RoIG9uIHVuc2hpZnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdkLnVuc2hpZnQoW2dkWzBdWzBdLCBncmlkeW1pbl0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGVuID0gZ2QubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2QucHVzaChbZ2RbbGVuIC0gMV1bMF0sIGdyaWR5bWluXSk7ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN0YWNrZWQsIGZpbGwgdG8gbGluZSBiZWxvdyAKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJldiA9IHRoaXMuX3ByZXZHcmlkRGF0YTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9cHJldi5sZW5ndGg7IGk+MDsgaS0tKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2QucHVzaChwcmV2W2ktMV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuX2FyZWFQb2ludHMucHVzaChwcmV2W2ktMV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNoYWRvdykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIGdkLCBvcHRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FyZWFQb2ludHMgPSBnZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5kcmF3KGN0eCwgZ2QsIG9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICAgICAgICAgICAgICAgICAvLyBOb3QgZmlsbGVkIHRvIHplcm8KICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICAgICAgICAgICAgICAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdG9raW5nIGxpbmUgYXMgd2VsbCBhcyBmaWxsaW5nLCBnZXQgYSBjb3B5IG9mIGxpbmUgZGF0YS4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGxBbmRTdHJva2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmYXNnZCA9IGdkLnNsaWNlKDApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIG5vdCBzdGFja2VkLCBmaWxsIGRvd24gdG8gYXhpcwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmRleCA9PSAwIHx8ICF0aGlzLl9zdGFjaykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFyIGdyaWR5bWluID0gdGhpcy5feWF4aXMuc2VyaWVzX3UycCh0aGlzLl95YXhpcy5taW4pIC0gdGhpcy5ncmlkQm9yZGVyV2lkdGggLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGdyaWR5bWluID0gY3R4LmNhbnZhcy5oZWlnaHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJRSBkb2Vzbid0IHJldHVybiBuZXcgbGVuZ3RoIG9uIHVuc2hpZnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkLnVuc2hpZnQoW2dkWzBdWzBdLCBncmlkeW1pbl0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxlbiA9IGdkLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkLnB1c2goW2dkW2xlbiAtIDFdWzBdLCBncmlkeW1pbl0pOyAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdGFja2VkLCBmaWxsIHRvIGxpbmUgYmVsb3cgCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByZXYgPSB0aGlzLl9wcmV2R3JpZERhdGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPXByZXYubGVuZ3RoOyBpPjA7IGktLSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkLnB1c2gocHJldltpLTFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hcmVhUG9pbnRzID0gZ2Q7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hhZG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoY3R4LCBnZCwgb3B0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5kcmF3KGN0eCwgZ2QsIG9wdHMpOyAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZmlsbEFuZFN0cm9rZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmFzb3B0cyA9ICQuZXh0ZW5kKHRydWUsIHt9LCBvcHRzLCB7ZmlsbDpmYWxzZSwgY2xvc2VQYXRoOmZhbHNlfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5kcmF3KGN0eCwgZmFzZ2QsIGZhc29wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IGZpZ3VyZSBvdXQgc29tZSB3YXkgdG8gZG8gc2hhZG93cyBuaWNlbHkKICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHNoYWRvdykgewogICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KGN0eCwgZmFzZ2QsIGZhc29wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAvLyB9CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdyBkcmF3IHRoZSBtYXJrZXJzCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcmtlclJlbmRlcmVyLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbmRlcmVyLnNtb290aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhc2dkID0gdGhpcy5ncmlkRGF0YTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPGZhc2dkLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXJrZXJSZW5kZXJlci5kcmF3KGZhc2dkW2ldWzBdLCBmYXNnZFtpXVsxXSwgY3R4LCBvcHRzLm1hcmtlck9wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbmRlcmVyLmJhbmRzLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJkYXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBib3B0cyA9ICQuZXh0ZW5kKHRydWUsIHt9LCBvcHRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVuZGVyZXIuYmFuZHMuc2hvd0xpbmVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZGF0ID0gKHRoaXMucmVuZGVyZXIuc21vb3RoKSA/IHRoaXMucmVuZGVyZXIuX2hpQmFuZFNtb290aGVkRGF0YSA6IHRoaXMucmVuZGVyZXIuX2hpQmFuZEdyaWREYXRhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmRyYXcoY3R4LCBiZGF0LCBvcHRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJkYXQgPSAodGhpcy5yZW5kZXJlci5zbW9vdGgpID8gdGhpcy5yZW5kZXJlci5fbG93QmFuZFNtb290aGVkRGF0YSA6IHRoaXMucmVuZGVyZXIuX2xvd0JhbmRHcmlkRGF0YTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5kcmF3KGN0eCwgYmRhdCwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZW5kZXJlci5iYW5kcy5maWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZW5kZXJlci5zbW9vdGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZGF0ID0gdGhpcy5yZW5kZXJlci5faGlCYW5kU21vb3RoZWREYXRhLmNvbmNhdCh0aGlzLnJlbmRlcmVyLl9sb3dCYW5kU21vb3RoZWREYXRhLnJldmVyc2UoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZGF0ID0gdGhpcy5yZW5kZXJlci5faGlCYW5kR3JpZERhdGEuY29uY2F0KHRoaXMucmVuZGVyZXIuX2xvd0JhbmRHcmlkRGF0YS5yZXZlcnNlKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYXJlYVBvaW50cyA9IGJkYXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3B0cy5jbG9zZVBhdGggPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9wdHMuZmlsbCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3B0cy5maWxsU3R5bGUgPSB0aGlzLnJlbmRlcmVyLmJhbmRzLmZpbGxDb2xvcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5kcmF3KGN0eCwgYmRhdCwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoc2hhZG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIGdkLCBvcHRzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAKICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhjdHgsIGdkLCBvcHRzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBjYWxjdWxhdGUgdGhlIGJvdW5kaW5nIGJveAogICAgICAgICAgICB2YXIgeG1pbiA9IHhtYXggPSB5bWluID0geW1heCA9IG51bGw7CiAgICAgICAgICAgIGZvciAoaT0wOyBpPHRoaXMuX2FyZWFQb2ludHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHZhciBwID0gdGhpcy5fYXJlYVBvaW50c1tpXTsKICAgICAgICAgICAgICAgIGlmICh4bWluID4gcFswXSB8fCB4bWluID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICB4bWluID0gcFswXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICh5bWF4IDwgcFsxXSB8fCB5bWF4ID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICB5bWF4ID0gcFsxXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICh4bWF4IDwgcFswXSB8fCB4bWF4ID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICB4bWF4ID0gcFswXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICh5bWluID4gcFsxXSB8fCB5bWluID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICB5bWluID0gcFsxXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2xpbmUnICYmIHRoaXMucmVuZGVyZXIuYmFuZHMuc2hvdykgewogICAgICAgICAgICAgICAgeW1heCA9IHRoaXMuX3lheGlzLnNlcmllc191MnAodGhpcy5yZW5kZXJlci5iYW5kcy5fbWluKTsKICAgICAgICAgICAgICAgIHltaW4gPSB0aGlzLl95YXhpcy5zZXJpZXNfdTJwKHRoaXMucmVuZGVyZXIuYmFuZHMuX21heCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRoaXMuX2JvdW5kaW5nQm94ID0gW1t4bWluLCB5bWF4XSwgW3htYXgsIHltaW5dXTsKICAgICAgICAKICAgICAgICAgICAgLy8gbm93IGRyYXcgdGhlIG1hcmtlcnMKICAgICAgICAgICAgaWYgKHRoaXMubWFya2VyUmVuZGVyZXIuc2hvdyAmJiAhZmlsbCkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMucmVuZGVyZXIuc21vb3RoKSB7CiAgICAgICAgICAgICAgICAgICAgZ2QgPSB0aGlzLmdyaWREYXRhOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yIChpPTA7IGk8Z2QubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZ2RbaV1bMF0gIT0gbnVsbCAmJiBnZFtpXVsxXSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFya2VyUmVuZGVyZXIuZHJhdyhnZFtpXVswXSwgZ2RbaV1bMV0sIGN0eCwgb3B0cy5tYXJrZXJPcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgIH07ICAKICAgIAogICAgJC5qcXBsb3QuTGluZVJlbmRlcmVyLnByb3RvdHlwZS5kcmF3U2hhZG93ID0gZnVuY3Rpb24oY3R4LCBnZCwgb3B0aW9ucykgewogICAgICAgIC8vIFRoaXMgaXMgYSBuby1vcCwgc2hhZG93cyBkcmF3biB3aXRoIGxpbmVzLgogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgcGxvdC4KICAgIC8vIG1ha2Ugc3VyZSB0byBub3QgbGVhdmUgYW55dGhpbmcgaGlnaGxpZ2h0ZWQuCiAgICBmdW5jdGlvbiBwb3N0SW5pdCh0YXJnZXQsIGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKHRoaXMuc2VyaWVzW2ldLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09ICQuanFwbG90LkxpbmVSZW5kZXJlcikgewogICAgICAgICAgICAgICAgLy8gZG9uJ3QgYWxsb3cgbW91c2VvdmVyIGFuZCBtb3VzZWRvd24gYXQgc2FtZSB0aW1lLgogICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VyaWVzW2ldLmhpZ2hsaWdodE1vdXNlT3ZlcikgewogICAgICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzW2ldLmhpZ2hsaWdodE1vdXNlRG93biA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSAgCiAgICAKICAgIC8vIGNhbGxlZCB3aXRoaW4gY29udGV4dCBvZiBwbG90CiAgICAvLyBjcmVhdGUgYSBjYW52YXMgd2hpY2ggd2UgY2FuIGRyYXcgb24uCiAgICAvLyBpbnNlcnQgaXQgYmVmb3JlIHRoZSBldmVudENhbnZhcywgc28gZXZlbnRDYW52YXMgd2lsbCBzdGlsbCBjYXB0dXJlIGV2ZW50cy4KICAgIGZ1bmN0aW9uIHBvc3RQbG90RHJhdygpIHsKICAgICAgICAvLyBNZW1vcnkgTGVha3MgcGF0Y2ggICAgCiAgICAgICAgaWYgKHRoaXMucGx1Z2lucy5saW5lUmVuZGVyZXIgJiYgdGhpcy5wbHVnaW5zLmxpbmVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMpIHsKICAgICAgICAgIHRoaXMucGx1Z2lucy5saW5lUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnJlc2V0Q2FudmFzKCk7CiAgICAgICAgICB0aGlzLnBsdWdpbnMubGluZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcyA9IG51bGw7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHRoaXMucGx1Z2lucy5saW5lUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCA9IG51bGw7CiAgICAgICAgdGhpcy5wbHVnaW5zLmxpbmVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMgPSBuZXcgJC5qcXBsb3QuR2VuZXJpY0NhbnZhcygpOwogICAgICAgIAogICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKHRoaXMucGx1Z2lucy5saW5lUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsICdqcXBsb3QtbGluZVJlbmRlcmVyLWhpZ2hsaWdodC1jYW52YXMnLCB0aGlzLl9wbG90RGltZW5zaW9ucywgdGhpcykpOwogICAgICAgIHRoaXMucGx1Z2lucy5saW5lUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnNldENvbnRleHQoKTsKICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJ21vdXNlbGVhdmUnLCB7cGxvdDp0aGlzfSwgZnVuY3Rpb24gKGV2KSB7IHVuaGlnaGxpZ2h0KGV2LmRhdGEucGxvdCk7IH0pOwogICAgfSAKICAgIAogICAgZnVuY3Rpb24gaGlnaGxpZ2h0IChwbG90LCBzaWR4LCBwaWR4LCBwb2ludHMpIHsKICAgICAgICB2YXIgcyA9IHBsb3Quc2VyaWVzW3NpZHhdOwogICAgICAgIHZhciBjYW52YXMgPSBwbG90LnBsdWdpbnMubGluZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhczsKICAgICAgICBjYW52YXMuX2N0eC5jbGVhclJlY3QoMCwwLGNhbnZhcy5fY3R4LmNhbnZhcy53aWR0aCwgY2FudmFzLl9jdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgcy5faGlnaGxpZ2h0ZWRQb2ludCA9IHBpZHg7CiAgICAgICAgcGxvdC5wbHVnaW5zLmxpbmVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ID0gc2lkeDsKICAgICAgICB2YXIgb3B0cyA9IHtmaWxsU3R5bGU6IHMuaGlnaGxpZ2h0Q29sb3J9OwogICAgICAgIGlmIChzLnR5cGUgPT09ICdsaW5lJyAmJiBzLnJlbmRlcmVyLmJhbmRzLnNob3cpIHsKICAgICAgICAgICAgb3B0cy5maWxsID0gdHJ1ZTsKICAgICAgICAgICAgb3B0cy5jbG9zZVBhdGggPSB0cnVlOwogICAgICAgIH0KICAgICAgICBzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhjYW52YXMuX2N0eCwgcG9pbnRzLCBvcHRzKTsKICAgICAgICBjYW52YXMgPSBudWxsOwogICAgfQogICAgCiAgICBmdW5jdGlvbiB1bmhpZ2hsaWdodCAocGxvdCkgewogICAgICAgIHZhciBjYW52YXMgPSBwbG90LnBsdWdpbnMubGluZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhczsKICAgICAgICBjYW52YXMuX2N0eC5jbGVhclJlY3QoMCwwLCBjYW52YXMuX2N0eC5jYW52YXMud2lkdGgsIGNhbnZhcy5fY3R4LmNhbnZhcy5oZWlnaHQpOwogICAgICAgIGZvciAodmFyIGk9MDsgaTxwbG90LnNlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBwbG90LnNlcmllc1tpXS5faGlnaGxpZ2h0ZWRQb2ludCA9IG51bGw7CiAgICAgICAgfQogICAgICAgIHBsb3QucGx1Z2lucy5saW5lUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCA9IG51bGw7CiAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcignanFwbG90RGF0YVVuaGlnaGxpZ2h0Jyk7CiAgICAgICAgY2FudmFzID0gbnVsbDsKICAgIH0KICAgIAogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVNb3ZlKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIGlmIChuZWlnaGJvcikgewogICAgICAgICAgICB2YXIgaW5zID0gW25laWdoYm9yLnNlcmllc0luZGV4LCBuZWlnaGJvci5wb2ludEluZGV4LCBuZWlnaGJvci5kYXRhXTsKICAgICAgICAgICAgdmFyIGV2dDEgPSBqUXVlcnkuRXZlbnQoJ2pxcGxvdERhdGFNb3VzZU92ZXInKTsKICAgICAgICAgICAgZXZ0MS5wYWdlWCA9IGV2LnBhZ2VYOwogICAgICAgICAgICBldnQxLnBhZ2VZID0gZXYucGFnZVk7CiAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoZXZ0MSwgaW5zKTsKICAgICAgICAgICAgaWYgKHBsb3Quc2VyaWVzW2luc1swXV0uaGlnaGxpZ2h0TW91c2VPdmVyICYmICEoaW5zWzBdID09IHBsb3QucGx1Z2lucy5saW5lUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCkpIHsKICAgICAgICAgICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ2pxcGxvdERhdGFIaWdobGlnaHQnKTsKICAgICAgICAgICAgICAgIGV2dC53aGljaCA9IGV2LndoaWNoOwogICAgICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoZXZ0LCBpbnMpOwogICAgICAgICAgICAgICAgaGlnaGxpZ2h0IChwbG90LCBuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IucG9pbnRzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChuZWlnaGJvciA9PSBudWxsKSB7CiAgICAgICAgICAgIHVuaGlnaGxpZ2h0IChwbG90KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlRG93bihldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAobmVpZ2hib3IpIHsKICAgICAgICAgICAgdmFyIGlucyA9IFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IuZGF0YV07CiAgICAgICAgICAgIGlmIChwbG90LnNlcmllc1tpbnNbMF1dLmhpZ2hsaWdodE1vdXNlRG93biAmJiAhKGluc1swXSA9PSBwbG90LnBsdWdpbnMubGluZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXgpKSB7CiAgICAgICAgICAgICAgICB2YXIgZXZ0ID0galF1ZXJ5LkV2ZW50KCdqcXBsb3REYXRhSGlnaGxpZ2h0Jyk7CiAgICAgICAgICAgICAgICBldnQud2hpY2ggPSBldi53aGljaDsKICAgICAgICAgICAgICAgIGV2dC5wYWdlWCA9IGV2LnBhZ2VYOwogICAgICAgICAgICAgICAgZXZ0LnBhZ2VZID0gZXYucGFnZVk7CiAgICAgICAgICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKGV2dCwgaW5zKTsKICAgICAgICAgICAgICAgIGhpZ2hsaWdodCAocGxvdCwgbmVpZ2hib3Iuc2VyaWVzSW5kZXgsIG5laWdoYm9yLnBvaW50SW5kZXgsIG5laWdoYm9yLnBvaW50cyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAobmVpZ2hib3IgPT0gbnVsbCkgewogICAgICAgICAgICB1bmhpZ2hsaWdodCAocGxvdCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZVVwKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIHZhciBpZHggPSBwbG90LnBsdWdpbnMubGluZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg7CiAgICAgICAgaWYgKGlkeCAhPSBudWxsICYmIHBsb3Quc2VyaWVzW2lkeF0uaGlnaGxpZ2h0TW91c2VEb3duKSB7CiAgICAgICAgICAgIHVuaGlnaGxpZ2h0KHBsb3QpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgaWYgKG5laWdoYm9yKSB7CiAgICAgICAgICAgIHZhciBpbnMgPSBbbmVpZ2hib3Iuc2VyaWVzSW5kZXgsIG5laWdoYm9yLnBvaW50SW5kZXgsIG5laWdoYm9yLmRhdGFdOwogICAgICAgICAgICB2YXIgZXZ0ID0galF1ZXJ5LkV2ZW50KCdqcXBsb3REYXRhQ2xpY2snKTsKICAgICAgICAgICAgZXZ0LndoaWNoID0gZXYud2hpY2g7CiAgICAgICAgICAgIGV2dC5wYWdlWCA9IGV2LnBhZ2VYOwogICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQsIGlucyk7CiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVSaWdodENsaWNrKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIGlmIChuZWlnaGJvcikgewogICAgICAgICAgICB2YXIgaW5zID0gW25laWdoYm9yLnNlcmllc0luZGV4LCBuZWlnaGJvci5wb2ludEluZGV4LCBuZWlnaGJvci5kYXRhXTsKICAgICAgICAgICAgdmFyIGlkeCA9IHBsb3QucGx1Z2lucy5saW5lUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDsKICAgICAgICAgICAgaWYgKGlkeCAhPSBudWxsICYmIHBsb3Quc2VyaWVzW2lkeF0uaGlnaGxpZ2h0TW91c2VEb3duKSB7CiAgICAgICAgICAgICAgICB1bmhpZ2hsaWdodChwbG90KTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgZXZ0ID0galF1ZXJ5LkV2ZW50KCdqcXBsb3REYXRhUmlnaHRDbGljaycpOwogICAgICAgICAgICBldnQud2hpY2ggPSBldi53aGljaDsKICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKGV2dCwgaW5zKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIAogICAgLy8gY2xhc3M6ICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlcgogICAgLy8gVGhlIGRlZmF1bHQganFQbG90IGF4aXMgcmVuZGVyZXIsIGNyZWF0aW5nIGEgbnVtZXJpYyBheGlzLgogICAgJC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyID0gZnVuY3Rpb24oKSB7CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBheGlzIG9iamVjdC4KICAgICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpewogICAgICAgIC8vIHByb3A6IGJyZWFrUG9pbnRzCiAgICAgICAgLy8gRVhQRVJJTUVOVEFMISEgVXNlIGF0IHlvdXIgb3duIHJpc2shCiAgICAgICAgLy8gV29ya3Mgb25seSB3aXRoIGxpbmVhciBheGVzIGFuZCB0aGUgZGVmYXVsdCB0aWNrIHJlbmRlcmVyLgogICAgICAgIC8vIEFycmF5IG9mIFtzdGFydCwgc3RvcF0gcG9pbnRzIHRvIGNyZWF0ZSBhIGJyb2tlbiBheGlzLgogICAgICAgIC8vIEJyb2tlbiBheGVzIGhhdmUgYSAianVtcCIgaW4gdGhlbSwgd2hpY2ggaXMgYW4gaW1tZWRpYXRlIAogICAgICAgIC8vIHRyYW5zaXRpb24gZnJvbSBhIHNtYWxsZXIgdmFsdWUgdG8gYSBsYXJnZXIgdmFsdWUuCiAgICAgICAgLy8gQ3VycmVudGx5LCBheGlzIHRpY2tzIE1VU1QgYmUgbWFudWFsbHkgYXNzaWduZWQgaWYgdXNpbmcgYnJlYWtQb2ludHMKICAgICAgICAvLyBieSB1c2luZyB0aGUgYXhpcyB0aWNrcyBhcnJheSBvcHRpb24uCiAgICAgICAgdGhpcy5icmVha1BvaW50cyA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogYnJlYWtUaWNrTGFiZWwKICAgICAgICAvLyBMYWJlbCB0byB1c2UgYXQgdGhlIGF4aXMgYnJlYWsgaWYgYnJlYWtQb2ludHMgYXJlIHNwZWNpZmllZC4KICAgICAgICB0aGlzLmJyZWFrVGlja0xhYmVsID0gIiZhc3ltcDsiOwogICAgICAgIC8vIHByb3A6IGRyYXdCYXNlbGluZQogICAgICAgIC8vIFRydWUgdG8gZHJhdyB0aGUgYXhpcyBiYXNlbGluZS4KICAgICAgICB0aGlzLmRyYXdCYXNlbGluZSA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogYmFzZWxpbmVXaWR0aAogICAgICAgIC8vIHdpZHRoIG9mIHRoZSBiYXNlbGluZSBpbiBwaXhlbHMuCiAgICAgICAgdGhpcy5iYXNlbGluZVdpZHRoID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBiYXNlbGluZUNvbG9yCiAgICAgICAgLy8gQ1NTIGNvbG9yIHNwZWMgZm9yIHRoZSBiYXNlbGluZS4KICAgICAgICB0aGlzLmJhc2VsaW5lQ29sb3IgPSBudWxsOwogICAgICAgIC8vIHByb3A6IGZvcmNlVGlja0F0MAogICAgICAgIC8vIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCB0aGVyZSBpcyBhbHdheXMgYSB0aWNrIG1hcmsgYXQgMC4KICAgICAgICAvLyBJZiBkYXRhIHJhbmdlIGlzIHN0cmljdGx5IHBvc2l0aXZlIG9yIG5lZ2F0aXZlLAogICAgICAgIC8vIHRoaXMgd2lsbCBmb3JjZSAwIHRvIGJlIGluc2lkZSB0aGUgYXhpcyBib3VuZHMgdW5sZXNzCiAgICAgICAgLy8gdGhlIGFwcHJvcHJpYXRlIGF4aXMgcGFkIChwYWQsIHBhZE1pbiBvciBwYWRNYXgpIGlzIHNldAogICAgICAgIC8vIHRvIDAsIHRoZW4gdGhpcyB3aWxsIGZvcmNlIGFuIGF4aXMgbWluIG9yIG1heCB2YWx1ZSBhdCAwLgogICAgICAgIC8vIFRoaXMgaGFzIGtub3cgZWZmZWN0IHdoZW4gYW55IG9mIHRoZSBmb2xsb3dpbmcgb3B0aW9ucwogICAgICAgIC8vIGFyZSBzZXQ6ICBhdXRvc2NhbGUsIG1pbiwgbWF4LCBudW1iZXJUaWNrcyBvciB0aWNrSW50ZXJ2YWwuCiAgICAgICAgdGhpcy5mb3JjZVRpY2tBdDAgPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiBmb3JjZVRpY2tBdDEwMAogICAgICAgIC8vIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCB0aGVyZSBpcyBhbHdheXMgYSB0aWNrIG1hcmsgYXQgMTAwLgogICAgICAgIC8vIElmIGRhdGEgcmFuZ2UgaXMgc3RyaWN0bHkgYWJvdmUgb3IgYmVsb3cgMTAwLAogICAgICAgIC8vIHRoaXMgd2lsbCBmb3JjZSAxMDAgdG8gYmUgaW5zaWRlIHRoZSBheGlzIGJvdW5kcyB1bmxlc3MKICAgICAgICAvLyB0aGUgYXBwcm9wcmlhdGUgYXhpcyBwYWQgKHBhZCwgcGFkTWluIG9yIHBhZE1heCkgaXMgc2V0CiAgICAgICAgLy8gdG8gMCwgdGhlbiB0aGlzIHdpbGwgZm9yY2UgYW4gYXhpcyBtaW4gb3IgbWF4IHZhbHVlIGF0IDEwMC4KICAgICAgICAvLyBUaGlzIGhhcyBrbm93IGVmZmVjdCB3aGVuIGFueSBvZiB0aGUgZm9sbG93aW5nIG9wdGlvbnMKICAgICAgICAvLyBhcmUgc2V0OiAgYXV0b3NjYWxlLCBtaW4sIG1heCwgbnVtYmVyVGlja3Mgb3IgdGlja0ludGVydmFsLgogICAgICAgIHRoaXMuZm9yY2VUaWNrQXQxMDAgPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiB0aWNrSW5zZXQKICAgICAgICAvLyBDb250cm9scyB0aGUgYW1vdW50IHRvIGluc2V0IHRoZSBmaXJzdCBhbmQgbGFzdCB0aWNrcyBmcm9tIAogICAgICAgIC8vIHRoZSBlZGdlcyBvZiB0aGUgZ3JpZCwgaW4gbXVsdGlwbGVzIG9mIHRoZSB0aWNrIGludGVydmFsLgogICAgICAgIC8vIDAgaXMgbm8gaW5zZXQsIDAuNSBpcyBvbmUgaGFsZiBhIHRpY2sgaW50ZXJ2YWwsIDEgaXMgYSBmdWxsCiAgICAgICAgLy8gdGljayBpbnRlcnZhbCwgZXRjLgogICAgICAgIHRoaXMudGlja0luc2V0ID0gMDsKICAgICAgICAvLyBwcm9wOiBtaW5vclRpY2tzCiAgICAgICAgLy8gTnVtYmVyIG9mIHRpY2tzIHRvIGFkZCBiZXR3ZWVuICJtYWpvciIgdGlja3MuCiAgICAgICAgLy8gTWFqb3IgdGlja3MgYXJlIHRpY2tzIHN1cHBsaWVkIGJ5IHVzZXIgb3IgYXV0byBjb21wdXRlZC4KICAgICAgICAvLyBNaW5vciB0aWNrcyBjYW5ub3QgYmUgY3JlYXRlZCBieSB1c2VyLgogICAgICAgIHRoaXMubWlub3JUaWNrcyA9IDA7CiAgICAgICAgLy8gcHJvcDogYWxpZ25UaWNrcwogICAgICAgIC8vIHRydWUgdG8gYWxpZ24gdGljayBtYXJrcyBhY3Jvc3Mgb3Bwb3NlZCBheGVzCiAgICAgICAgLy8gc3VjaCBhcyBmcm9tIHRoZSB5MmF4aXMgdG8geWF4aXMuCiAgICAgICAgdGhpcy5hbGlnblRpY2tzID0gZmFsc2U7CiAgICAgICAgdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyA9ICcnOwogICAgICAgIHRoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nID0gZmFsc2U7CiAgICAgICAgdGhpcy5fc2NhbGVmYWN0ID0gMS4wOwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgIGlmICh0aGlzLmJyZWFrUG9pbnRzKSB7CiAgICAgICAgICAgIGlmICghJC5pc0FycmF5KHRoaXMuYnJlYWtQb2ludHMpKSB7CiAgICAgICAgICAgICAgICB0aGlzLmJyZWFrUG9pbnRzID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmICh0aGlzLmJyZWFrUG9pbnRzLmxlbmd0aCA8IDIgfHwgdGhpcy5icmVha1BvaW50c1sxXSA8PSB0aGlzLmJyZWFrUG9pbnRzWzBdKSB7CiAgICAgICAgICAgICAgICB0aGlzLmJyZWFrUG9pbnRzID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAodGhpcy5udW1iZXJUaWNrcyAhPSBudWxsICYmIHRoaXMubnVtYmVyVGlja3MgPCAyKSB7CiAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSAyOwogICAgICAgIH0KICAgICAgICB0aGlzLnJlc2V0RGF0YUJvdW5kcygpOwogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYXhpcwogICAgJC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24oY3R4LCBwbG90KSB7CiAgICAgICAgaWYgKHRoaXMuc2hvdykgewogICAgICAgICAgICAvLyBwb3B1bGF0ZSB0aGUgYXhpcyBsYWJlbCBhbmQgdmFsdWUgcHJvcGVydGllcy4KICAgICAgICAgICAgLy8gY3JlYXRlVGlja3MgaXMgYSBtZXRob2Qgb24gdGhlIHJlbmRlcmVyLCBidXQKICAgICAgICAgICAgLy8gY2FsbCBpdCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBheGlzLgogICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRpY2tzLmNhbGwodGhpcywgcGxvdCk7CiAgICAgICAgICAgIC8vIGZpbGwgYSBkaXYgd2l0aCBheGVzIGxhYmVscyBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLgogICAgICAgICAgICAvLyBOZWVkIHRvIHByZWdlbmVyYXRlIGVhY2ggYXhpcyB0byBnZXQgaXRzIGJvdW5kcyBhbmQKICAgICAgICAgICAgLy8gcG9zaXRpb24gaXQgYW5kIHRoZSBsYWJlbHMgY29ycmVjdGx5IG9uIHRoZSBwbG90LgogICAgICAgICAgICB2YXIgZGltPTA7CiAgICAgICAgICAgIHZhciB0ZW1wOwogICAgICAgICAgICAvLyBBZGRlZCBmb3IgdGhlbWluZy4KICAgICAgICAgICAgaWYgKHRoaXMuX2VsZW0pIHsKICAgICAgICAgICAgICAgIC8vIE1lbW9yeSBMZWFrcyBwYXRjaAogICAgICAgICAgICAgICAgLy90aGlzLl9lbGVtLmVtcHR5KCk7CiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmVtcHR5Rm9yY2UoKTsKICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0gPSBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICB0aGlzLl9lbGVtID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uYWRkQ2xhc3MoJ2pxcGxvdC1heGlzIGpxcGxvdC0nK3RoaXMubmFtZSk7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCdwb3NpdGlvbicsICdhYnNvbHV0ZScpOwoKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0ud2lkdGgodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5oZWlnaHQodGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gY3JlYXRlIGEgX2xhYmVsIG9iamVjdC4KICAgICAgICAgICAgdGhpcy5sYWJlbE9wdGlvbnMuYXhpcyA9IHRoaXMubmFtZTsKICAgICAgICAgICAgdGhpcy5fbGFiZWwgPSBuZXcgdGhpcy5sYWJlbFJlbmRlcmVyKHRoaXMubGFiZWxPcHRpb25zKTsKICAgICAgICAgICAgaWYgKHRoaXMuX2xhYmVsLnNob3cpIHsKICAgICAgICAgICAgICAgIHZhciBlbGVtID0gdGhpcy5fbGFiZWwuZHJhdyhjdHgsIHBsb3QpOwogICAgICAgICAgICAgICAgZWxlbS5hcHBlbmRUbyh0aGlzLl9lbGVtKTsKICAgICAgICAgICAgICAgIGVsZW0gPSBudWxsOwogICAgICAgICAgICB9CiAgICAKICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl90aWNrczsKICAgICAgICAgICAgdmFyIHRpY2s7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB0aWNrID0gdFtpXTsKICAgICAgICAgICAgICAgIGlmICh0aWNrLnNob3cgJiYgdGljay5zaG93TGFiZWwgJiYgKCF0aWNrLmlzTWlub3JUaWNrIHx8IHRoaXMuc2hvd01pbm9yVGlja3MpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5hcHBlbmQodGljay5kcmF3KGN0eCwgcGxvdCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRpY2sgPSBudWxsOwogICAgICAgICAgICB0ID0gbnVsbDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW07CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBhbiBheGlzCiAgICAkLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy5taW4gPSB0aGlzLl9vcHRpb25zLm1pbjsKICAgICAgICB0aGlzLm1heCA9IHRoaXMuX29wdGlvbnMubWF4OwogICAgICAgIHRoaXMudGlja0ludGVydmFsID0gdGhpcy5fb3B0aW9ucy50aWNrSW50ZXJ2YWw7CiAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IHRoaXMuX29wdGlvbnMubnVtYmVyVGlja3M7CiAgICAgICAgdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyA9ICcnOwogICAgICAgIGlmICh0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZyAmJiB0aGlzLnRpY2tPcHRpb25zICYmIHRoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nKSB7CiAgICAgICAgICAgIHRoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nID0gJyc7CiAgICAgICAgfQoKICAgICAgICAvLyB0aGlzLl90aWNrcyA9IHRoaXMuX190aWNrczsKICAgIH07CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIGF4aXMKICAgICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24oKSB7IAogICAgICAgIHZhciBkaW0gPSAwOwogICAgICAgIHZhciB0ZW1wOwogICAgICAgIHZhciB3ID0gMDsKICAgICAgICB2YXIgaCA9IDA7CiAgICAgICAgdmFyIGxzaG93ID0gKHRoaXMuX2xhYmVsID09IG51bGwpID8gZmFsc2UgOiB0aGlzLl9sYWJlbC5zaG93OwogICAgICAgIGlmICh0aGlzLnNob3cpIHsKICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl90aWNrczsKICAgICAgICAgICAgdmFyIHRpY2s7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB0aWNrID0gdFtpXTsKICAgICAgICAgICAgICAgIGlmICghdGljay5fYnJlYWtUaWNrICYmIHRpY2suc2hvdyAmJiB0aWNrLnNob3dMYWJlbCAmJiAoIXRpY2suaXNNaW5vclRpY2sgfHwgdGhpcy5zaG93TWlub3JUaWNrcykpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lID09ICd4YXhpcycgfHwgdGhpcy5uYW1lID09ICd4MmF4aXMnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSB0aWNrLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IHRpY2suX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAgPiBkaW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGltID0gdGVtcDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGljayA9IG51bGw7CiAgICAgICAgICAgIHQgPSBudWxsOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGxzaG93KSB7CiAgICAgICAgICAgICAgICB3ID0gdGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTsKICAgICAgICAgICAgICAgIGggPSB0aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTsgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnKSB7CiAgICAgICAgICAgICAgICBkaW0gPSBkaW0gKyBoOwogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoeydoZWlnaHQnOmRpbSsncHgnLCBsZWZ0OicwcHgnLCBib3R0b206JzBweCd9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmICh0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgIGRpbSA9IGRpbSArIGg7CiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7J2hlaWdodCc6ZGltKydweCcsIGxlZnQ6JzBweCcsIHRvcDonMHB4J30pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PSAneWF4aXMnKSB7CiAgICAgICAgICAgICAgICBkaW0gPSBkaW0gKyB3OwogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moeyd3aWR0aCc6ZGltKydweCcsIGxlZnQ6JzBweCcsIHRvcDonMHB4J30pOwogICAgICAgICAgICAgICAgaWYgKGxzaG93ICYmIHRoaXMuX2xhYmVsLmNvbnN0cnVjdG9yID09ICQuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCd3aWR0aCcsIHcrJ3B4Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBkaW0gPSBkaW0gKyB3OwogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moeyd3aWR0aCc6ZGltKydweCcsIHJpZ2h0OicwcHgnLCB0b3A6JzBweCd9KTsKICAgICAgICAgICAgICAgIGlmIChsc2hvdyAmJiB0aGlzLl9sYWJlbC5jb25zdHJ1Y3RvciA9PSAkLmpxcGxvdC5BeGlzTGFiZWxSZW5kZXJlcikgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygnd2lkdGgnLCB3KydweCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSAgCiAgICB9OyAgICAKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYXhpcwogICAgJC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jcmVhdGVUaWNrcyA9IGZ1bmN0aW9uKHBsb3QpIHsKICAgICAgICAvLyB3ZSdyZSBhcmUgb3BlcmF0aW5nIG9uIGFuIGF4aXMgaGVyZQogICAgICAgIHZhciB0aWNrcyA9IHRoaXMuX3RpY2tzOwogICAgICAgIHZhciB1c2VyVGlja3MgPSB0aGlzLnRpY2tzOwogICAgICAgIHZhciBuYW1lID0gdGhpcy5uYW1lOwogICAgICAgIC8vIGRhdGFib3VuZHMgd2VyZSBzZXQgb24gYXhpcyBpbml0aWFsaXphdGlvbi4KICAgICAgICB2YXIgZGIgPSB0aGlzLl9kYXRhQm91bmRzOwogICAgICAgIHZhciBkaW0gPSAodGhpcy5uYW1lLmNoYXJBdCgwKSA9PT0gJ3gnKSA/IHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoIDogdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0OwogICAgICAgIHZhciBpbnRlcnZhbDsKICAgICAgICB2YXIgbWluLCBtYXg7CiAgICAgICAgdmFyIHBvczEsIHBvczI7CiAgICAgICAgdmFyIHR0LCBpOwogICAgICAgIC8vIGdldCBhIGNvcHkgb2YgdXNlcidzIHNldHRpbmdzIGZvciBtaW4vbWF4LgogICAgICAgIHZhciB1c2VyTWluID0gdGhpcy5taW47CiAgICAgICAgdmFyIHVzZXJNYXggPSB0aGlzLm1heDsKICAgICAgICB2YXIgdXNlck5UID0gdGhpcy5udW1iZXJUaWNrczsKICAgICAgICB2YXIgdXNlclRJID0gdGhpcy50aWNrSW50ZXJ2YWw7CgogICAgICAgIHZhciB0aHJlc2hvbGQgPSAzMDsKICAgICAgICB0aGlzLl9zY2FsZWZhY3QgPSAgKE1hdGgubWF4KGRpbSwgdGhyZXNob2xkKzEpIC0gdGhyZXNob2xkKS8zMDAuMDsKICAgICAgICAKICAgICAgICAvLyBpZiB3ZSBhbHJlYWR5IGhhdmUgdGlja3MsIHVzZSB0aGVtLgogICAgICAgIC8vIHRpY2tzIG11c3QgYmUgaW4gb3JkZXIgb2YgaW5jcmVhc2luZyB2YWx1ZS4KICAgICAgICAKICAgICAgICBpZiAodXNlclRpY2tzLmxlbmd0aCkgewogICAgICAgICAgICAvLyB0aWNrcyBjb3VsZCBiZSAxRCBvciAyRCBhcnJheSBvZiBbdmFsLCB2YWwsICwsLF0gb3IgW1t2YWwsIGxhYmVsXSwgW3ZhbCwgbGFiZWxdLCAuLi5dIG9yIG1peGVkCiAgICAgICAgICAgIGZvciAoaT0wOyBpPHVzZXJUaWNrcy5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAgICAgICB2YXIgdXQgPSB1c2VyVGlja3NbaV07CiAgICAgICAgICAgICAgICB2YXIgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTsKICAgICAgICAgICAgICAgIGlmICgkLmlzQXJyYXkodXQpKSB7CiAgICAgICAgICAgICAgICAgICAgdC52YWx1ZSA9IHV0WzBdOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmJyZWFrUG9pbnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1dFswXSA9PSB0aGlzLmJyZWFrUG9pbnRzWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmxhYmVsID0gdGhpcy5icmVha1RpY2tMYWJlbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuX2JyZWFrVGljayA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dHcmlkbGluZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHV0WzBdID4gdGhpcy5icmVha1BvaW50c1swXSAmJiB1dFswXSA8PSB0aGlzLmJyZWFrUG9pbnRzWzFdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnNob3cgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd0dyaWRsaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmxhYmVsID0gdXRbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmxhYmVsID0gdXRbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQubGFiZWwgPSB1dFsxXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdC5zZXRUaWNrKHV0WzBdLCB0aGlzLm5hbWUpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzZSBpZiAoJC5pc1BsYWluT2JqZWN0KHV0KSkgewogICAgICAgICAgICAgICAgICAgICQuZXh0ZW5kKHRydWUsIHQsIHV0KTsKICAgICAgICAgICAgICAgICAgICB0LmF4aXMgPSB0aGlzLm5hbWU7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdC52YWx1ZSA9IHV0OwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmJyZWFrUG9pbnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1dCA9PSB0aGlzLmJyZWFrUG9pbnRzWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmxhYmVsID0gdGhpcy5icmVha1RpY2tMYWJlbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuX2JyZWFrVGljayA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dHcmlkbGluZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHV0ID4gdGhpcy5icmVha1BvaW50c1swXSAmJiB1dCA8PSB0aGlzLmJyZWFrUG9pbnRzWzFdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnNob3cgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd0dyaWRsaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdC5zZXRUaWNrKHV0LCB0aGlzLm5hbWUpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IHVzZXJUaWNrcy5sZW5ndGg7CiAgICAgICAgICAgIHRoaXMubWluID0gdGhpcy5fdGlja3NbMF0udmFsdWU7CiAgICAgICAgICAgIHRoaXMubWF4ID0gdGhpcy5fdGlja3NbdGhpcy5udW1iZXJUaWNrcy0xXS52YWx1ZTsKICAgICAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSAodGhpcy5tYXggLSB0aGlzLm1pbikgLyAodGhpcy5udW1iZXJUaWNrcyAtIDEpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyB3ZSBkb24ndCBoYXZlIGFueSB0aWNrcyB5ZXQsIGxldCdzIG1ha2Ugc29tZSEKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYgKG5hbWUgPT0gJ3hheGlzJyB8fCBuYW1lID09ICd4MmF4aXMnKSB7CiAgICAgICAgICAgICAgICBkaW0gPSB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGRpbSA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIF9udW1iZXJUaWNrcyA9IHRoaXMubnVtYmVyVGlja3M7CgogICAgICAgICAgICAvLyBpZiBhbGlnbmluZyB0aGlzIGF4aXMsIHVzZSBudW1iZXIgb2YgdGlja3MgZnJvbSBwcmV2aW91cyBheGlzLgogICAgICAgICAgICAvLyBEbyBJIG5lZWQgdG8gcmVzZXQgc29tZWhvdyBpZiBhbGlnblRpY2tzIGlzIGNoYW5nZWQgYW5kIHRoZW4gZ3JhcGggaXMgcmVwbG90dGVkPz8KICAgICAgICAgICAgaWYgKHRoaXMuYWxpZ25UaWNrcykgewogICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PT0gJ3gyYXhpcycgJiYgcGxvdC5heGVzLnhheGlzLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICBfbnVtYmVyVGlja3MgPSBwbG90LmF4ZXMueGF4aXMubnVtYmVyVGlja3M7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLm5hbWUuY2hhckF0KDApID09PSAneScgJiYgdGhpcy5uYW1lICE9PSAneWF4aXMnICYmIHRoaXMubmFtZSAhPT0gJ3lNaWRBeGlzJyAmJiBwbG90LmF4ZXMueWF4aXMuc2hvdykgewogICAgICAgICAgICAgICAgICAgIF9udW1iZXJUaWNrcyA9IHBsb3QuYXhlcy55YXhpcy5udW1iZXJUaWNrczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIAogICAgICAgICAgICBtaW4gPSAoKHRoaXMubWluICE9IG51bGwpID8gdGhpcy5taW4gOiBkYi5taW4pOwogICAgICAgICAgICBtYXggPSAoKHRoaXMubWF4ICE9IG51bGwpID8gdGhpcy5tYXggOiBkYi5tYXgpOwoKICAgICAgICAgICAgdmFyIHJhbmdlID0gbWF4IC0gbWluOwogICAgICAgICAgICB2YXIgcm1pbiwgcm1heDsKICAgICAgICAgICAgdmFyIHRlbXA7CgogICAgICAgICAgICBpZiAodGhpcy50aWNrT3B0aW9ucyA9PSBudWxsIHx8ICF0aGlzLnRpY2tPcHRpb25zLmZvcm1hdFN0cmluZykgewogICAgICAgICAgICAgICAgdGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcgPSB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBEb2luZyBjb21wbGV0ZSBhdXRvc2NhbGluZwogICAgICAgICAgICBpZiAodGhpcy5taW4gPT0gbnVsbCB8fCB0aGlzLm1heCA9PSBudWxsICYmIHRoaXMudGlja0ludGVydmFsID09IG51bGwgJiYgIXRoaXMuYXV0b3NjYWxlKSB7CiAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB1c2VyIG11c3QgaGF2ZSB0aWNrIGF0IDAgb3IgMTAwIGFuZCBlbnN1cmUgdGhleSBhcmUgaW4gcmFuZ2UuCiAgICAgICAgICAgICAgICAvLyBUaGUgYXV0b3NjYWxpbmcgYWxnb3JpdGhtIHdpbGwgYWx3YXlzIHBsYWNlIHRpY2tzIGF0IDAgYW5kIDEwMCBpZiB0aGV5IGFyZSBpbiByYW5nZS4KICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvcmNlVGlja0F0MCkgewogICAgICAgICAgICAgICAgICAgIGlmIChtaW4gPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChtYXggPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1heCA9IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvcmNlVGlja0F0MTAwKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG1pbiA+IDEwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBtaW4gPSAxMDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChtYXggPCAxMDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWF4ID0gMTAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIga2VlcE1pbiA9IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIGtlZXBNYXggPSBmYWxzZTsKCiAgICAgICAgICAgICAgICBpZiAodGhpcy5taW4gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIGtlZXBNaW4gPSB0cnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubWF4ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICBrZWVwTWF4ID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyB2YXIgdGhyZXNob2xkID0gMzA7CiAgICAgICAgICAgICAgICAvLyB2YXIgdGRpbSA9IE1hdGgubWF4KGRpbSwgdGhyZXNob2xkKzEpOwogICAgICAgICAgICAgICAgLy8gdGhpcy5fc2NhbGVmYWN0ID0gICh0ZGltLXRocmVzaG9sZCkvMzAwLjA7CiAgICAgICAgICAgICAgICB2YXIgcmV0ID0gJC5qcXBsb3QuTGluZWFyVGlja0dlbmVyYXRvcihtaW4sIG1heCwgdGhpcy5fc2NhbGVmYWN0LCBfbnVtYmVyVGlja3MsIGtlZXBNaW4sIGtlZXBNYXgpOyAKICAgICAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSBhIHBhZGRlZCBtYXggYW5kIG1pbiwgcG9pbnRzIHNob3VsZCBiZSBsZXNzIHRoYW4gdGhlc2UKICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhleSBhcmVuJ3QgdG9vIGNsb3NlIHRvIHRoZSBlZGdlcyBvZiB0aGUgcGxvdC4KICAgICAgICAgICAgICAgIC8vIFVzZXIgY2FuIGFkanVzdCBob3cgbXVjaCBwYWRkaW5nIGlzIGFsbG93ZWQgd2l0aCBwYWQsIHBhZE1pbiBhbmQgUGFkTWF4IG9wdGlvbnMuIAogICAgICAgICAgICAgICAgLy8gSWYgbWluIG9yIG1heCBpcyBzZXQsIGRvbid0IHBhZCB0aGF0IGVuZCBvZiBheGlzLgogICAgICAgICAgICAgICAgdmFyIHR1bWluID0gKHRoaXMubWluICE9IG51bGwpID8gbWluIDogbWluICsgcmFuZ2UqKHRoaXMucGFkTWluIC0gMSk7CiAgICAgICAgICAgICAgICB2YXIgdHVtYXggPSAodGhpcy5tYXggIT0gbnVsbCkgPyBtYXggOiBtYXggLSByYW5nZSoodGhpcy5wYWRNYXggLSAxKTsKCiAgICAgICAgICAgICAgICAvLyBpZiB0aGV5J3JlIGVxdWFsLCB3ZSBzaG91bGRuJ3QgaGF2ZSB0byBkbyBhbnl0aGluZywgcmlnaHQ/CiAgICAgICAgICAgICAgICAvLyBpZiAobWluIDw9dHVtaW4gfHwgbWF4ID49IHR1bWF4KSB7CiAgICAgICAgICAgICAgICBpZiAobWluIDx0dW1pbiB8fCBtYXggPiB0dW1heCkgewogICAgICAgICAgICAgICAgICAgIHR1bWluID0gKHRoaXMubWluICE9IG51bGwpID8gbWluIDogbWluIC0gcmFuZ2UqKHRoaXMucGFkTWluIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgdHVtYXggPSAodGhpcy5tYXggIT0gbnVsbCkgPyBtYXggOiBtYXggKyByYW5nZSoodGhpcy5wYWRNYXggLSAxKTsKICAgICAgICAgICAgICAgICAgICByZXQgPSAkLmpxcGxvdC5MaW5lYXJUaWNrR2VuZXJhdG9yKHR1bWluLCB0dW1heCwgdGhpcy5fc2NhbGVmYWN0LCBfbnVtYmVyVGlja3MsIGtlZXBNaW4sIGtlZXBNYXgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHRoaXMubWluID0gcmV0WzBdOwogICAgICAgICAgICAgICAgdGhpcy5tYXggPSByZXRbMV07CiAgICAgICAgICAgICAgICAvLyBpZiBudW1iZXJUaWNrcyBzcGVjaWZpZWQsIGl0IHNob3VsZCByZXR1cm4gdGhlIHNhbWUuCiAgICAgICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gcmV0WzJdOwogICAgICAgICAgICAgICAgdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyA9IHJldFszXTsKICAgICAgICAgICAgICAgIHRoaXMudGlja0ludGVydmFsID0gcmV0WzRdOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBVc2VyIGhhcyBzcGVjaWZpZWQgc29tZSBheGlzIHNjYWxlIHJlbGF0ZWQgb3B0aW9uLCBjYW4gdXNlIGF1dG8gYWxnb3JpdGhtCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBpZiBtaW4gYW5kIG1heCBhcmUgc2FtZSwgc3BhY2UgdGhlbSBvdXQgYSBiaXQKICAgICAgICAgICAgICAgIGlmIChtaW4gPT0gbWF4KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGFkaiA9IDAuMDU7CiAgICAgICAgICAgICAgICAgICAgaWYgKG1pbiA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgYWRqID0gTWF0aC5tYXgoTWF0aC5sb2cobWluKS9NYXRoLkxOMTAsIDAuMDUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBtaW4gLT0gYWRqOwogICAgICAgICAgICAgICAgICAgIG1heCArPSBhZGo7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIGF1dG9zY2FsZS4gIENhbid0IGF1dG9zY2FsZSBpZiBtaW4gb3IgbWF4IGlzIHN1cHBsaWVkLgogICAgICAgICAgICAgICAgLy8gV2lsbCB1c2UgbnVtYmVyVGlja3MgYW5kIHRpY2tJbnRlcnZhbCBpZiBzdXBwbGllZC4gIFRpY2tzCiAgICAgICAgICAgICAgICAvLyBhY3Jvc3MgbXVsdGlwbGUgYXhlcyBtYXkgbm90IGxpbmUgdXAgZGVwZW5kaW5nIG9uIGhvdwogICAgICAgICAgICAgICAgLy8gYmFycyBhcmUgdG8gYmUgcGxvdHRlZC4KICAgICAgICAgICAgICAgIGlmICh0aGlzLmF1dG9zY2FsZSAmJiB0aGlzLm1pbiA9PSBudWxsICYmIHRoaXMubWF4ID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcnJhbmdlLCB0aSwgbWFyZ2luOwogICAgICAgICAgICAgICAgICAgIHZhciBmb3JjZU1pblplcm8gPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB2YXIgZm9yY2VaZXJvTGluZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIHZhciBpbnRlcnZhbHMgPSB7bWluOm51bGwsIG1heDpudWxsLCBhdmVyYWdlOm51bGwsIHN0ZGRldjpudWxsfTsKICAgICAgICAgICAgICAgICAgICAvLyBpZiBhbnkgc2VyaWVzIGFyZSBiYXJzLCBvciBpZiBhbnkgYXJlIGZpbGwgdG8gemVybywgYW5kIGlmIHRoaXMKICAgICAgICAgICAgICAgICAgICAvLyBpcyB0aGUgYXhpcyB0byBmaWxsIHRvd2FyZCwgY2hlY2sgdG8gc2VlIGlmIHdlIGNhbiBzdGFydCBheGlzIGF0IHplcm8uCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMuX3Nlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IHRoaXMuX3Nlcmllc1tpXTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZhbmFtZSA9IChzLmZpbGxBeGlzID09ICd4JykgPyBzLl94YXhpcy5uYW1lIDogcy5feWF4aXMubmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgdG8gc2VlIGlmIHRoaXMgaXMgdGhlIGZpbGwgYXhpcwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lID09IGZhbmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHMgPSBzLl9wbG90VmFsdWVzW3MuZmlsbEF4aXNdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZtaW4gPSB2YWxzWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZtYXggPSB2YWxzWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0xOyBqPHZhbHMubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsc1tqXSA8IHZtaW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm1pbiA9IHZhbHNbal07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHNbal0gPiB2bWF4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtYXggPSB2YWxzW2pdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkcCA9ICh2bWF4IC0gdm1pbikgLyB2bWF4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgdGhpcyBzcmllcyBhIGJhcj8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09ICQuanFwbG90LkJhclJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgbm8gbmVnYXRpdmUgdmFsdWVzIGFuZCBjb3VsZCBhbHNvIGNoZWNrIHJhbmdlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2bWluID49IDAgJiYgKHMuZmlsbFRvWmVybyB8fCBkcCA+IDAuMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2VNaW5aZXJvID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlTWluWmVybyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocy5maWxsICYmIHMuZmlsbFRvWmVybyAmJiB2bWluIDwgMCAmJiB2bWF4ID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2VaZXJvTGluZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZVplcm9MaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIG5vdCBhIGJhciBhbmQgZmlsbGluZywgdXNlIGFwcHJvcHJpYXRlIG1ldGhvZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHMuZmlsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2bWluID49IDAgJiYgKHMuZmlsbFRvWmVybyB8fCBkcCA+IDAuMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2VNaW5aZXJvID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodm1pbiA8IDAgJiYgdm1heCA+IDAgJiYgcy5maWxsVG9aZXJvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlTWluWmVybyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZVplcm9MaW5lID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlTWluWmVybyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZVplcm9MaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBub3QgYSBiYXIgYW5kIG5vdCBmaWxsaW5nLCBvbmx5IGNoYW5nZSBleGlzdGluZyBzdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgaXQgZG9lc24ndCBtYWtlIHNlbnNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh2bWluIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlTWluWmVybyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIHdlIG5lZWQgbWFrZSBheGlzIG1pbiBhdCAwLgogICAgICAgICAgICAgICAgICAgIGlmIChmb3JjZU1pblplcm8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29tcHV0ZSBudW1iZXIgb2YgdGlja3MKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IDIgKyBNYXRoLmNlaWwoKGRpbS0odGhpcy50aWNrU3BhY2luZy0xKSkvdGhpcy50aWNrU3BhY2luZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWluID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgdXNlck1pbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoYXQgb3JkZXIgaXMgdGhpcyByYW5nZT8KICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hhdCB0aWNrIGludGVydmFsIGRvZXMgdGhhdCBnaXZlIHVzPwogICAgICAgICAgICAgICAgICAgICAgICB0aSA9IG1heC8odGhpcy5udW1iZXJUaWNrcy0xKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IE1hdGgucG93KDEwLCBNYXRoLmFicyhNYXRoLmZsb29yKE1hdGgubG9nKHRpKS9NYXRoLkxOMTApKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aS90ZW1wID09IHBhcnNlSW50KHRpL3RlbXAsIDEwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGkgKz0gdGVtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9IE1hdGguY2VpbCh0aS90ZW1wKSAqIHRlbXA7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWF4ID0gdGhpcy50aWNrSW50ZXJ2YWwgKiAodGhpcy5udW1iZXJUaWNrcyAtIDEpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBpcyBhIHRpY2sgYXQgMC4KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChmb3JjZVplcm9MaW5lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbXB1dGUgbnVtYmVyIG9mIHRpY2tzCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSAyICsgTWF0aC5jZWlsKChkaW0tKHRoaXMudGlja1NwYWNpbmctMSkpL3RoaXMudGlja1NwYWNpbmcpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbnRtaW4gPSBNYXRoLmNlaWwoTWF0aC5hYnMobWluKS9yYW5nZSoodGhpcy5udW1iZXJUaWNrcy0xKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBudG1heCA9IHRoaXMubnVtYmVyVGlja3MgLSAxICAtIG50bWluOwogICAgICAgICAgICAgICAgICAgICAgICB0aSA9IE1hdGgubWF4KE1hdGguYWJzKG1pbi9udG1pbiksIE1hdGguYWJzKG1heC9udG1heCkpOwogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gTWF0aC5wb3coMTAsIE1hdGguYWJzKE1hdGguZmxvb3IoTWF0aC5sb2codGkpL01hdGguTE4xMCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSBNYXRoLmNlaWwodGkvdGVtcCkgKiB0ZW1wOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1heCA9IHRoaXMudGlja0ludGVydmFsICogbnRtYXg7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWluID0gLXRoaXMudGlja0ludGVydmFsICogbnRtaW47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIC8vIGlmIG5vdGhpbmcgZWxzZSwgZG8gYXV0b3NjYWxpbmcgd2hpY2ggd2lsbCB0cnkgdG8gbGluZSB1cCB0aWNrcyBhY3Jvc3MgYXhlcy4KICAgICAgICAgICAgICAgICAgICBlbHNlIHsgIAogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5udW1iZXJUaWNrcyA9PSBudWxsKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpY2tJbnRlcnZhbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSAzICsgTWF0aC5jZWlsKHJhbmdlIC8gdGhpcy50aWNrSW50ZXJ2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IDIgKyBNYXRoLmNlaWwoKGRpbS0odGhpcy50aWNrU3BhY2luZy0xKSkvdGhpcy50aWNrU3BhY2luZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50aWNrSW50ZXJ2YWwgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0IGEgdGljayBpbnRlcnZhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGkgPSByYW5nZS8odGhpcy5udW1iZXJUaWNrcyAtIDEpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aSA8IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gTWF0aC5wb3coMTAsIE1hdGguYWJzKE1hdGguZmxvb3IoTWF0aC5sb2codGkpL01hdGguTE4xMCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSBNYXRoLmNlaWwodGkqdGVtcCp0aGlzLnBhZCkvdGVtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSAxIC8gdGhpcy50aWNrSW50ZXJ2YWw7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyeSB0byBjb21wdXRlIGEgbmljZXIsIG1vcmUgZXZlbiB0aWNrIGludGVydmFsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRlbXAgPSBNYXRoLnBvdygxMCwgTWF0aC5mbG9vcihNYXRoLmxvZyh0aSkvTWF0aC5MTjEwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMudGlja0ludGVydmFsID0gTWF0aC5jZWlsKHRpL3RlbXApICogdGVtcDsKICAgICAgICAgICAgICAgICAgICAgICAgcnJhbmdlID0gdGhpcy50aWNrSW50ZXJ2YWwgKiAodGhpcy5udW1iZXJUaWNrcyAtIDEpOwogICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4gPSAocnJhbmdlIC0gcmFuZ2UpLzI7CiAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1pbiA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1pbiA9IE1hdGguZmxvb3IodGVtcCoobWluLW1hcmdpbikpL3RlbXA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWF4ID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWF4ID0gdGhpcy5taW4gKyBycmFuZ2U7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgYSBzb21ld2hhdCBkZWNlbnQgZm9ybWF0IHN0cmluZyBpZiBpdCBpcyBuZWVkZWQuCiAgICAgICAgICAgICAgICAgICAgLy8gZ2V0IHByZWNpc2lvbiBvZiBpbnRlcnZhbCBhbmQgZGV0ZXJtaW5lIGEgZm9ybWF0IHN0cmluZy4KICAgICAgICAgICAgICAgICAgICB2YXIgc2YgPSAkLmpxcGxvdC5nZXRTaWduaWZpY2FudEZpZ3VyZXModGhpcy50aWNrSW50ZXJ2YWwpOwoKICAgICAgICAgICAgICAgICAgICB2YXIgZnN0cjsKCiAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2UgaGF2ZSBvbmx5IGEgd2hvbGUgbnVtYmVyLCB1c2UgaW50ZWdlciBmb3JtYXR0aW5nCiAgICAgICAgICAgICAgICAgICAgaWYgKHNmLmRpZ2l0c0xlZnQgPj0gc2Yuc2lnbmlmaWNhbnREaWdpdHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnN0ciA9ICclZCc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXAgPSBNYXRoLm1heCgwLCA1IC0gc2YuZGlnaXRzTGVmdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSBNYXRoLm1pbih0ZW1wLCBzZi5kaWdpdHNSaWdodCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZzdHIgPSAnJS4nKyB0ZW1wICsgJ2YnOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyA9IGZzdHI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgZGVmYXVsdCBhbGdvcml0aG0gd2hpY2ggcGFkcyBlYWNoIGF4aXMgdG8gbWFrZSB0aGUgY2hhcnQKICAgICAgICAgICAgICAgIC8vIGNlbnRlcmVkIG5pY2VseSBvbiB0aGUgZ3JpZC4KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICBybWluID0gKHRoaXMubWluICE9IG51bGwpID8gdGhpcy5taW4gOiBtaW4gLSByYW5nZSoodGhpcy5wYWRNaW4gLSAxKTsKICAgICAgICAgICAgICAgICAgICBybWF4ID0gKHRoaXMubWF4ICE9IG51bGwpID8gdGhpcy5tYXggOiBtYXggKyByYW5nZSoodGhpcy5wYWRNYXggLSAxKTsKICAgICAgICAgICAgICAgICAgICByYW5nZSA9IHJtYXggLSBybWluOwogICAgICAgIAogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm51bWJlclRpY2tzID09IG51bGwpewogICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aWNrSW50ZXJ2YWwgaXMgc3BlY2lmaWVkIGJ5IHVzZXIsIHdlIHdpbGwgaWdub3JlIGNvbXB1dGVkIG1heGltdW0uCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1heCB3aWxsIGJlIGVxdWFsIG9yIGdyZWF0ZXIgdG8gZml0IGV2ZW4gIyBvZiB0aWNrcy4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGlja0ludGVydmFsICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSBNYXRoLmNlaWwoKHJtYXggLSBybWluKS90aGlzLnRpY2tJbnRlcnZhbCkrMTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChkaW0gPiAxMDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSBwYXJzZUludCgzKyhkaW0tMTAwKS83NSwgMTApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IDI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50aWNrSW50ZXJ2YWwgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9IHJhbmdlIC8gKHRoaXMubnVtYmVyVGlja3MtMSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1heCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJtYXggPSBybWluICsgdGhpcy50aWNrSW50ZXJ2YWwqKHRoaXMubnVtYmVyVGlja3MgLSAxKTsKICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5taW4gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBybWluID0gcm1heCAtIHRoaXMudGlja0ludGVydmFsKih0aGlzLm51bWJlclRpY2tzIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvLyBnZXQgcHJlY2lzaW9uIG9mIGludGVydmFsIGFuZCBkZXRlcm1pbmUgYSBmb3JtYXQgc3RyaW5nLgogICAgICAgICAgICAgICAgICAgIHZhciBzZiA9ICQuanFwbG90LmdldFNpZ25pZmljYW50RmlndXJlcyh0aGlzLnRpY2tJbnRlcnZhbCk7CgogICAgICAgICAgICAgICAgICAgIHZhciBmc3RyOwoKICAgICAgICAgICAgICAgICAgICAvLyBpZiB3ZSBoYXZlIG9ubHkgYSB3aG9sZSBudW1iZXIsIHVzZSBpbnRlZ2VyIGZvcm1hdHRpbmcKICAgICAgICAgICAgICAgICAgICBpZiAoc2YuZGlnaXRzTGVmdCA+PSBzZi5zaWduaWZpY2FudERpZ2l0cykgewogICAgICAgICAgICAgICAgICAgICAgICBmc3RyID0gJyVkJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IE1hdGgubWF4KDAsIDUgLSBzZi5kaWdpdHNMZWZ0KTsKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IE1hdGgubWluKHRlbXAsIHNmLmRpZ2l0c1JpZ2h0KTsKICAgICAgICAgICAgICAgICAgICAgICAgZnN0ciA9ICclLicrIHRlbXAgKyAnZic7CiAgICAgICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyA9IGZzdHI7CgogICAgICAgICAgICAgICAgICAgIHRoaXMubWluID0gcm1pbjsKICAgICAgICAgICAgICAgICAgICB0aGlzLm1heCA9IHJtYXg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09ICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlciAmJiB0aGlzLl9hdXRvRm9ybWF0U3RyaW5nID09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gZml4IGZvciBtaXNsZWFkaW5nIHRpY2sgZGlzcGxheSB3aXRoIHNtYWxsIHJhbmdlIGFuZCBsb3cgcHJlY2lzaW9uLgogICAgICAgICAgICAgICAgICAgIHJhbmdlID0gdGhpcy5tYXggLSB0aGlzLm1pbjsKICAgICAgICAgICAgICAgICAgICAvLyBmaWd1cmUgb3V0IHByZWNpc2lvbgogICAgICAgICAgICAgICAgICAgIHZhciB0ZW1wdGljayA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICAvLyB1c2UgdGhlIHRpY2sgZm9ybWF0U3RyaW5nIG9yLCB0aGUgZGVmYXVsdC4KICAgICAgICAgICAgICAgICAgICB2YXIgZnMgPSB0ZW1wdGljay5mb3JtYXRTdHJpbmcgfHwgJC5qcXBsb3QuY29uZmlnLmRlZmF1bHRUaWNrRm9ybWF0U3RyaW5nOyAKICAgICAgICAgICAgICAgICAgICB2YXIgZnMgPSBmcy5tYXRjaCgkLmpxcGxvdC5zcHJpbnRmLnJlZ2V4KVswXTsKICAgICAgICAgICAgICAgICAgICB2YXIgcHJlY2lzaW9uID0gMDsKICAgICAgICAgICAgICAgICAgICBpZiAoZnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZzLnNlYXJjaCgvW2ZGZUVnR3BQXS8pID4gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtID0gZnMubWF0Y2goL1wlXC4oXGR7MCx9KT9bZUVmRmdHcFBdLyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiA9IHBhcnNlSW50KG1bMV0sIDEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiA9IDY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZnMuc2VhcmNoKC9bZGldLykgPiAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAvLyBmYWN0IHdpbGwgYmUgPD0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZhY3QgPSBNYXRoLnBvdygxMCwgLXByZWNpc2lvbik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpY2tJbnRlcnZhbCA8IGZhY3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gY29ycmVjdCB1bmRlcnJhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodXNlck5UID09IG51bGwgJiYgdXNlclRJID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9IGZhY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXJNYXggPT0gbnVsbCAmJiB1c2VyTWluID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5taW4gPSBNYXRoLmZsb29yKCh0aGlzLl9kYXRhQm91bmRzLm1pbiAtIHRoaXMudGlja0ludGVydmFsKS9mYWN0KSAqIGZhY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWluID0gTWF0aC5mbG9vcih0aGlzLl9kYXRhQm91bmRzLm1pbi9mYWN0KSAqIGZhY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1pbiA9PSB0aGlzLl9kYXRhQm91bmRzLm1pbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5taW4gPSB0aGlzLl9kYXRhQm91bmRzLm1pbiAtIHRoaXMudGlja0ludGVydmFsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMubWF4ID0gTWF0aC5jZWlsKCh0aGlzLl9kYXRhQm91bmRzLm1heCArIHRoaXMudGlja0ludGVydmFsKS9mYWN0KSAqIGZhY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWF4ID0gTWF0aC5jZWlsKHRoaXMuX2RhdGFCb3VuZHMubWF4L2ZhY3QpICogZmFjdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWF4ID09IHRoaXMuX2RhdGFCb3VuZHMubWF4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1heCA9IHRoaXMuX2RhdGFCb3VuZHMubWF4ICsgdGhpcy50aWNrSW50ZXJ2YWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSAodGhpcy5tYXggLSB0aGlzLm1pbikvdGhpcy50aWNrSW50ZXJ2YWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuLnRvRml4ZWQoMTEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gTWF0aC5jZWlsKG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gbiArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHVzZXJNYXggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGQgb25lIHRpY2sgZm9yIHRvcCBvZiByYW5nZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSAodGhpcy5fZGF0YUJvdW5kcy5tYXggLSB0aGlzLm1pbikgLyB0aGlzLnRpY2tJbnRlcnZhbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG4udG9GaXhlZCgxMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSBNYXRoLmNlaWwobikgKyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1heCA9IHRoaXMubWluICsgdGhpcy50aWNrSW50ZXJ2YWwgKiAodGhpcy5udW1iZXJUaWNrcy0xKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodXNlck1pbiA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZCBvbmUgdGljayBmb3IgYm90dG9tIG9mIHJhbmdlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9ICh0aGlzLm1heCAtIHRoaXMuX2RhdGFCb3VuZHMubWluKSAvIHRoaXMudGlja0ludGVydmFsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbi50b0ZpeGVkKDExKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IE1hdGguY2VpbChuKSArIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWluID0gdGhpcy5tYXggLSB0aGlzLnRpY2tJbnRlcnZhbCAqICh0aGlzLm51bWJlclRpY2tzLTEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsY3VsYXRlIGEgbnVtYmVyIG9mIHRpY2tzIHNvIG1heCBpcyB3aXRoaW4gYXhpcyBzY2FsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gTWF0aC5jZWlsKCh1c2VyTWF4IC0gdXNlck1pbikvdGhpcy50aWNrSW50ZXJ2YWwpICsgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdXNlcidzIG1pbiBhbmQgbWF4IGRvbid0IGZpdCBldmVubHkgaW4gdGlja3MsIGFkanVzdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyB0YWtlcyBjYXJlIG9mIGNhc2VzIHN1Y2ggYXMgdXNlciBtaW4gc2V0IHRvIDAsIG1heCBzZXQgdG8gMy41IGJ1dCB0aWNrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvcm1hdCBzdHJpbmcgc2V0IHRvICVkIChpbnRlZ2VyIHRpY2tzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1pbiA9ICBNYXRoLmZsb29yKHVzZXJNaW4qTWF0aC5wb3coMTAsIHByZWNpc2lvbikpL01hdGgucG93KDEwLCBwcmVjaXNpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1heCA9ICBNYXRoLmNlaWwodXNlck1heCpNYXRoLnBvdygxMCwgcHJlY2lzaW9uKSkvTWF0aC5wb3coMTAsIHByZWNpc2lvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMubWF4ID0gdGhpcy5taW4gKyB0aGlzLnRpY2tJbnRlcnZhbCoodGhpcy5udW1iZXJUaWNrcy0xKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IE1hdGguY2VpbCgodGhpcy5tYXggLSB0aGlzLm1pbikvdGhpcy50aWNrSW50ZXJ2YWwpICsgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHRoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nICYmIHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmcgIT0gJycpIHsKICAgICAgICAgICAgICAgIHRoaXMudGlja09wdGlvbnMgPSB0aGlzLnRpY2tPcHRpb25zIHx8IHt9OwogICAgICAgICAgICAgICAgdGhpcy50aWNrT3B0aW9ucy5mb3JtYXRTdHJpbmcgPSB0aGlzLl9hdXRvRm9ybWF0U3RyaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgdCwgdG87CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLm51bWJlclRpY2tzOyBpKyspewogICAgICAgICAgICAgICAgdHQgPSB0aGlzLm1pbiArIGkgKiB0aGlzLnRpY2tJbnRlcnZhbDsKICAgICAgICAgICAgICAgIHQgPSBuZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7CiAgICAgICAgICAgICAgICAvLyB2YXIgdCA9IG5ldyAkLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwoKICAgICAgICAgICAgICAgIHQuc2V0VGljayh0dCwgdGhpcy5uYW1lKTsKICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CgogICAgICAgICAgICAgICAgaWYgKGkgPCB0aGlzLm51bWJlclRpY2tzIC0gMSkgewogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MDsgajx0aGlzLm1pbm9yVGlja3M7IGorKykgewogICAgICAgICAgICAgICAgICAgICAgICB0dCArPSB0aGlzLnRpY2tJbnRlcnZhbC8odGhpcy5taW5vclRpY2tzKzEpOwogICAgICAgICAgICAgICAgICAgICAgICB0byA9ICQuZXh0ZW5kKHRydWUsIHt9LCB0aGlzLnRpY2tPcHRpb25zLCB7bmFtZTp0aGlzLm5hbWUsIHZhbHVlOnR0LCBsYWJlbDonJywgaXNNaW5vclRpY2s6dHJ1ZX0pOwogICAgICAgICAgICAgICAgICAgICAgICB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRvKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0ID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMudGlja0luc2V0KSB7CiAgICAgICAgICAgIHRoaXMubWluID0gdGhpcy5taW4gLSB0aGlzLnRpY2tJbnNldCAqIHRoaXMudGlja0ludGVydmFsOwogICAgICAgICAgICB0aGlzLm1heCA9IHRoaXMubWF4ICsgdGhpcy50aWNrSW5zZXQgKiB0aGlzLnRpY2tJbnRlcnZhbDsKICAgICAgICB9CgogICAgICAgIHRpY2tzID0gbnVsbDsKICAgIH07CiAgICAKICAgIC8vIFVzZWQgdG8gcmVzZXQganVzdCB0aGUgdmFsdWVzIG9mIHRoZSB0aWNrcyBhbmQgdGhlbiByZXBhY2ssIHdoaWNoIHdpbGwKICAgIC8vIHJlY2FsY3VsYXRlIHRoZSBwb3NpdGlvbmluZyBmdW5jdGlvbnMuICBJdCBpcyBhc3N1ZW1kIHRoYXQgdGhlIAogICAgLy8gbnVtYmVyIG9mIHRpY2tzIGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWVzIG9mIHRoZSBuZXcgYXJyYXkgYXJlIGF0IHRoZQogICAgLy8gcHJvcGVyIGludGVydmFsLgogICAgLy8gVGhpcyBtZXRob2QgbmVlZHMgdG8gYmUgY2FsbGVkIHdpdGggdGhlIHNjb3BlIG9mIGFuIGF4aXMgb2JqZWN0LCBsaWtlOgogICAgLy8KICAgIC8vID4gcGxvdC5heGVzLnlheGlzLnJlbmRlcmVyLnJlc2V0VGlja1ZhbHVlcy5jYWxsKHBsb3QuYXhlcy55YXhpcywgeWFycik7CiAgICAvLwogICAgJC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5yZXNldFRpY2tWYWx1ZXMgPSBmdW5jdGlvbihvcHRzKSB7CiAgICAgICAgaWYgKCQuaXNBcnJheShvcHRzKSAmJiBvcHRzLmxlbmd0aCA9PSB0aGlzLl90aWNrcy5sZW5ndGgpIHsKICAgICAgICAgICAgdmFyIHQ7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxvcHRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB0ID0gdGhpcy5fdGlja3NbaV07CiAgICAgICAgICAgICAgICB0LnZhbHVlID0gb3B0c1tpXTsKICAgICAgICAgICAgICAgIHQubGFiZWwgPSB0LmZvcm1hdHRlcih0LmZvcm1hdFN0cmluZywgb3B0c1tpXSk7CiAgICAgICAgICAgICAgICB0LmxhYmVsID0gdC5wcmVmaXggKyB0LmxhYmVsOwogICAgICAgICAgICAgICAgdC5fZWxlbS5odG1sKHQubGFiZWwpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHQgPSBudWxsOwogICAgICAgICAgICB0aGlzLm1pbiA9ICQuanFwbG90LmFycmF5TWluKG9wdHMpOwogICAgICAgICAgICB0aGlzLm1heCA9ICQuanFwbG90LmFycmF5TWF4KG9wdHMpOwogICAgICAgICAgICB0aGlzLnBhY2soKTsKICAgICAgICB9CiAgICAgICAgLy8gTm90IGltcGxlbWVudGVkIHlldC4KICAgICAgICAvLyBlbHNlIGlmICgkLmlzUGxhaW5PYmplY3Qob3B0cykpIHsKICAgICAgICAvLyAKICAgICAgICAvLyB9CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBheGlzCiAgICAkLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIucHJvdG90eXBlLnBhY2sgPSBmdW5jdGlvbihwb3MsIG9mZnNldHMpIHsKICAgICAgICAvLyBBZGQgZGVmYXVsdHMgZm9yIHJlcGFja2luZyBmcm9tIHJlc2V0VGlja1ZhbHVlcyBmdW5jdGlvbi4KICAgICAgICBwb3MgPSBwb3MgfHwge307CiAgICAgICAgb2Zmc2V0cyA9IG9mZnNldHMgfHwgdGhpcy5fb2Zmc2V0czsKICAgICAgICAKICAgICAgICB2YXIgdGlja3MgPSB0aGlzLl90aWNrczsKICAgICAgICB2YXIgbWF4ID0gdGhpcy5tYXg7CiAgICAgICAgdmFyIG1pbiA9IHRoaXMubWluOwogICAgICAgIHZhciBvZmZtYXggPSBvZmZzZXRzLm1heDsKICAgICAgICB2YXIgb2ZmbWluID0gb2Zmc2V0cy5taW47CiAgICAgICAgdmFyIGxzaG93ID0gKHRoaXMuX2xhYmVsID09IG51bGwpID8gZmFsc2UgOiB0aGlzLl9sYWJlbC5zaG93OwogICAgICAgIAogICAgICAgIGZvciAodmFyIHAgaW4gcG9zKSB7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHAsIHBvc1twXSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHRoaXMuX29mZnNldHMgPSBvZmZzZXRzOwogICAgICAgIC8vIHBpeGVsbGVuZ3RoIHdpbGwgYmUgKyBmb3IgeCBheGVzIGFuZCAtIGZvciB5IGF4ZXMgYmVjYXN1ZSBwaXhlbHMgYWx3YXlzIG1lYXN1cmVkIGZyb20gdG9wIGxlZnQuCiAgICAgICAgdmFyIHBpeGVsbGVuZ3RoID0gb2ZmbWF4IC0gb2ZmbWluOwogICAgICAgIHZhciB1bml0bGVuZ3RoID0gbWF4IC0gbWluOwogICAgICAgIAogICAgICAgIC8vIHBvaW50IHRvIHVuaXQgYW5kIHVuaXQgdG8gcG9pbnQgY29udmVyc2lvbnMgcmVmZXJlbmNlcyB0byBQbG90IERPTSBlbGVtZW50IHRvcCBsZWZ0IGNvcm5lci4KICAgICAgICBpZiAodGhpcy5icmVha1BvaW50cykgewogICAgICAgICAgICB1bml0bGVuZ3RoID0gdW5pdGxlbmd0aCAtIHRoaXMuYnJlYWtQb2ludHNbMV0gKyB0aGlzLmJyZWFrUG9pbnRzWzBdOwogICAgICAgICAgICAKICAgICAgICAgICAgdGhpcy5wMnUgPSBmdW5jdGlvbihwKXsKICAgICAgICAgICAgICAgIHJldHVybiAocCAtIG9mZm1pbikgKiB1bml0bGVuZ3RoIC8gcGl4ZWxsZW5ndGggKyBtaW47CiAgICAgICAgICAgIH07CiAgICAgICAgCiAgICAgICAgICAgIHRoaXMudTJwID0gZnVuY3Rpb24odSl7CiAgICAgICAgICAgICAgICBpZiAodSA+IHRoaXMuYnJlYWtQb2ludHNbMF0gJiYgdSA8IHRoaXMuYnJlYWtQb2ludHNbMV0pewogICAgICAgICAgICAgICAgICAgIHUgPSB0aGlzLmJyZWFrUG9pbnRzWzBdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHUgPD0gdGhpcy5icmVha1BvaW50c1swXSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAodSAtIG1pbikgKiBwaXhlbGxlbmd0aCAvIHVuaXRsZW5ndGggKyBvZmZtaW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHUgLSB0aGlzLmJyZWFrUG9pbnRzWzFdICsgdGhpcy5icmVha1BvaW50c1swXSAtIG1pbikgKiBwaXhlbGxlbmd0aCAvIHVuaXRsZW5ndGggKyBvZmZtaW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHRoaXMubmFtZS5jaGFyQXQoMCkgPT0gJ3gnKXsKICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzX3UycCA9IGZ1bmN0aW9uKHUpewogICAgICAgICAgICAgICAgICAgIGlmICh1ID4gdGhpcy5icmVha1BvaW50c1swXSAmJiB1IDwgdGhpcy5icmVha1BvaW50c1sxXSl7CiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB0aGlzLmJyZWFrUG9pbnRzWzBdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodSA8PSB0aGlzLmJyZWFrUG9pbnRzWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAodSAtIG1pbikgKiBwaXhlbGxlbmd0aCAvIHVuaXRsZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHUgLSB0aGlzLmJyZWFrUG9pbnRzWzFdICsgdGhpcy5icmVha1BvaW50c1swXSAtIG1pbikgKiBwaXhlbGxlbmd0aCAvIHVuaXRsZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzX3AydSA9IGZ1bmN0aW9uKHApewogICAgICAgICAgICAgICAgICAgIHJldHVybiBwICogdW5pdGxlbmd0aCAvIHBpeGVsbGVuZ3RoICsgbWluOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIAogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzX3UycCA9IGZ1bmN0aW9uKHUpewogICAgICAgICAgICAgICAgICAgIGlmICh1ID4gdGhpcy5icmVha1BvaW50c1swXSAmJiB1IDwgdGhpcy5icmVha1BvaW50c1sxXSl7CiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB0aGlzLmJyZWFrUG9pbnRzWzBdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodSA+PSB0aGlzLmJyZWFrUG9pbnRzWzFdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAodSAtIG1heCkgKiBwaXhlbGxlbmd0aCAvIHVuaXRsZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHUgKyB0aGlzLmJyZWFrUG9pbnRzWzFdIC0gdGhpcy5icmVha1BvaW50c1swXSAtIG1heCkgKiBwaXhlbGxlbmd0aCAvIHVuaXRsZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzX3AydSA9IGZ1bmN0aW9uKHApewogICAgICAgICAgICAgICAgICAgIHJldHVybiBwICogdW5pdGxlbmd0aCAvIHBpeGVsbGVuZ3RoICsgbWF4OwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdGhpcy5wMnUgPSBmdW5jdGlvbihwKXsKICAgICAgICAgICAgICAgIHJldHVybiAocCAtIG9mZm1pbikgKiB1bml0bGVuZ3RoIC8gcGl4ZWxsZW5ndGggKyBtaW47CiAgICAgICAgICAgIH07CiAgICAgICAgCiAgICAgICAgICAgIHRoaXMudTJwID0gZnVuY3Rpb24odSl7CiAgICAgICAgICAgICAgICByZXR1cm4gKHUgLSBtaW4pICogcGl4ZWxsZW5ndGggLyB1bml0bGVuZ3RoICsgb2ZmbWluOwogICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpewogICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNfdTJwID0gZnVuY3Rpb24odSl7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh1IC0gbWluKSAqIHBpeGVsbGVuZ3RoIC8gdW5pdGxlbmd0aDsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc19wMnUgPSBmdW5jdGlvbihwKXsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcCAqIHVuaXRsZW5ndGggLyBwaXhlbGxlbmd0aCArIG1pbjsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc191MnAgPSBmdW5jdGlvbih1KXsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHUgLSBtYXgpICogcGl4ZWxsZW5ndGggLyB1bml0bGVuZ3RoOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzX3AydSA9IGZ1bmN0aW9uKHApewogICAgICAgICAgICAgICAgICAgIHJldHVybiBwICogdW5pdGxlbmd0aCAvIHBpeGVsbGVuZ3RoICsgbWF4OwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGlja3NbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvdyAmJiB0LnNob3dMYWJlbCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2hpbTsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmNvbnN0cnVjdG9yID09ICQuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIgJiYgdC5hbmdsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBuZWVkIHRvIGFkanVzdCBhdXRvIHBvc2l0aW9uaW5nIGJhc2VkIG9uIHdoaWNoIGF4aXMgdGhpcyBpcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZW1wID0gKHRoaXMubmFtZSA9PSAneGF4aXMnKSA/IDEgOiAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodC5sYWJlbFBvc2l0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYXV0byc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvc2l0aW9uIGF0IGVuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVtcCAqIHQuYW5nbGUgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0V2lkdGgoKSArIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbigtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9zaXRpb24gYXQgc3RhcnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbih0Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdlbmQnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0V2lkdGgoKSArIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbigtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5zaW4odC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21pZGRsZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5nZXRXaWR0aCgpLzIgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5zaW4oLXQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0V2lkdGgoKS8yICsgdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKC10Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0V2lkdGgoKS8yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSB0aGlzLnUycCh0LnZhbHVlKSArIHNoaW0gKyAncHgnOwogICAgICAgICAgICAgICAgICAgICAgICB0Ll9lbGVtLmNzcygnbGVmdCcsIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQucGFjaygpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChsc2hvdykgewogICAgICAgICAgICAgICAgICAgIHZhciB3ID0gdGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5fZWxlbS5jc3MoJ2xlZnQnLCBvZmZtaW4gKyBwaXhlbGxlbmd0aC8yIC0gdy8yICsgJ3B4Jyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygnYm90dG9tJywgJzBweCcpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCd0b3AnLCAnMHB4Jyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLnBhY2soKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGlja3NbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvdyAmJiB0LnNob3dMYWJlbCkgeyAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2hpbTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuY29uc3RydWN0b3IgPT0gJC5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciAmJiB0LmFuZ2xlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIG5lZWQgdG8gYWRqdXN0IGF1dG8gcG9zaXRpb25pbmcgYmFzZWQgb24gd2hpY2ggYXhpcyB0aGlzIGlzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXAgPSAodGhpcy5uYW1lID09ICd5YXhpcycpID8gMSA6IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LmxhYmVsUG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhdXRvJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9zaXRpb24gYXQgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZW5kJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAgKiB0LmFuZ2xlIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5jb3MoLXQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldEhlaWdodCgpICsgdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguY29zKHQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuYW5nbGUgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLmNvcygtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5jb3ModC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWlkZGxlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHQuYW5nbGUgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkvMiArIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbigtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkvMiAtIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbih0Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldEhlaWdodCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldEhlaWdodCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSB0aGlzLnUycCh0LnZhbHVlKSArIHNoaW0gKyAncHgnOwogICAgICAgICAgICAgICAgICAgICAgICB0Ll9lbGVtLmNzcygndG9wJywgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5wYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGxzaG93KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGggPSB0aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5fZWxlbS5jc3MoJ3RvcCcsIG9mZm1heCAtIHBpeGVsbGVuZ3RoLzIgLSBoLzIgKyAncHgnKTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lID09ICd5YXhpcycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCdsZWZ0JywgJzBweCcpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCdyaWdodCcsICcwcHgnKTsKICAgICAgICAgICAgICAgICAgICB9ICAgCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwucGFjaygpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB0aWNrcyA9IG51bGw7CiAgICB9OwoKCiAgICAvKioKICAgICogVGhlIGZvbGxvd2luZyBjb2RlIHdhcyBnZW5lcmFvdXNseSBnaXZlbiB0byBtZSBhIHdoaWxlIGJhY2sgYnkgU2NvdHQgUHJhaGwuCiAgICAqIEhlIGRpZCBhIGdvb2Qgam9iIGF0IGNvbXB1dGluZyBheGVzIG1pbiwgbWF4IGFuZCBudW1iZXIgb2YgdGlja3MgZm9yIHRoZSAKICAgICogY2FzZSB3aGVyZSB0aGUgdXNlciBoYXMgbm90IHNldCBhbnkgc2NhbGUgcmVsYXRlZCBwYXJhbWV0ZXJzICh0aWNrSW50ZXJ2YWwsCiAgICAqIG51bWJlclRpY2tzLCBtaW4gb3IgbWF4KS4gIEkgaGFkIGlnbm9yZWQgdGhpcyB1c2UgY2FzZSBmb3IgYSBsb25nIHRpbWUsCiAgICAqIGZvY3VzaW5nIG9uIHRoZSBtb3JlIGRpZmZpY3VsdCBjYXNlIHdoZXJlIHVzZXIgaGFzIHNldCBzb21lIG9wdGlvbiBjb250cm9sbGluZwogICAgKiB0aWNrIGdlbmVyYXRpb24uICBBbnl3YXksIGFib3V0IHRpbWUgSSBnb3QgdGhpcyBpbnRvIGpxUGxvdC4KICAgICogVGhhbmtzIFNjb3R0ISEKICAgICovCiAgICAKICAgIC8qKgogICAgKiBDb3B5cmlnaHQgKGMpIDIwMTAgU2NvdHQgUHJhaGwKICAgICogVGhlIG5leHQgdGhyZWUgcm91dGluZXMgYXJlIGN1cnJlbnRseSBhdmFpbGFibGUgZm9yIHVzZSBpbiBhbGwgcGVyc29uYWwgCiAgICAqIG9yIGNvbW1lcmNpYWwgcHJvamVjdHMgdW5kZXIgYm90aCB0aGUgTUlUIGFuZCBHUEwgdmVyc2lvbiAyLjAgbGljZW5zZXMuIAogICAgKiBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCAKICAgICogYW5kIHVzZSBpdCBhY2NvcmRpbmdseS4gCiAgICAqLwoKICAgIC8vIEEgZ29vZCBmb3JtYXQgc3RyaW5nIGRlcGVuZHMgb24gdGhlIGludGVydmFsLiBJZiB0aGUgaW50ZXJ2YWwgaXMgZ3JlYXRlciAKICAgIC8vIHRoYW4gMSB0aGVuIHRoZXJlIGlzIG5vIG5lZWQgdG8gc2hvdyBhbnkgZGVjaW1hbCBkaWdpdHMuIElmIGl0IGlzIDwgMS4wLCB0aGVuCiAgICAvLyB1c2UgdGhlIG1hZ25pdHVkZSBvZiB0aGUgaW50ZXJ2YWwgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgZGlnaXRzIHRvIHNob3cuCiAgICBmdW5jdGlvbiBiZXN0Rm9ybWF0U3RyaW5nIChpbnRlcnZhbCkKICAgIHsKICAgICAgICB2YXIgZnN0cjsKICAgICAgICBpbnRlcnZhbCA9IE1hdGguYWJzKGludGVydmFsKTsKICAgICAgICBpZiAoaW50ZXJ2YWwgPj0gMTApIHsKICAgICAgICAgICAgZnN0ciA9ICclZCc7CiAgICAgICAgfQoKICAgICAgICBlbHNlIGlmIChpbnRlcnZhbCA+IDEpIHsKICAgICAgICAgICAgaWYgKGludGVydmFsID09PSBwYXJzZUludChpbnRlcnZhbCwgMTApKSB7CiAgICAgICAgICAgICAgICBmc3RyID0gJyVkJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGZzdHIgPSAnJS4xZic7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGVsc2UgewogICAgICAgICAgICB2YXIgZXhwdiA9IC1NYXRoLmZsb29yKE1hdGgubG9nKGludGVydmFsKS9NYXRoLkxOMTApOwogICAgICAgICAgICBmc3RyID0gJyUuJyArIGV4cHYgKyAnZic7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiBmc3RyOyAKICAgIH0KCiAgICB2YXIgX2ZhY3RvcnMgPSBbMC4xLCAwLjIsIDAuMywgMC40LCAwLjUsIDAuOCwgMSwgMiwgMywgNCwgNV07CgogICAgdmFyIF9nZXRMb3dlckZhY3RvciA9IGZ1bmN0aW9uKGYpIHsKICAgICAgICB2YXIgaSA9IF9mYWN0b3JzLmluZGV4T2YoZik7CiAgICAgICAgaWYgKGkgPiAwKSB7CiAgICAgICAgICAgIHJldHVybiBfZmFjdG9yc1tpLTFdOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIF9mYWN0b3JzW19mYWN0b3JzLmxlbmd0aCAtIDFdIC8gMTAwOwogICAgICAgIH0KICAgIH07CgogICAgdmFyIF9nZXRIaWdoZXJGYWN0b3IgPSBmdW5jdGlvbihmKSB7CiAgICAgICAgdmFyIGkgPSBfZmFjdG9ycy5pbmRleE9mKGYpOwogICAgICAgIGlmIChpIDwgX2ZhY3RvcnMubGVuZ3RoLTEpIHsKICAgICAgICAgICAgcmV0dXJuIF9mYWN0b3JzW2krMV07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gX2ZhY3RvcnNbMF0gKiAxMDA7CiAgICAgICAgfQogICAgfTsKCiAgICAvLyBHaXZlbiBhIGZpeGVkIG1pbmltdW0gYW5kIG1heGltdW0gYW5kIGEgdGFyZ2V0IG51bWJlciBvdCB0aWNrcwogICAgLy8gZmlndXJlIG91dCB0aGUgYmVzdCBpbnRlcnZhbCBhbmQgCiAgICAvLyByZXR1cm4gbWluLCBtYXgsIG51bWJlciB0aWNrcywgZm9ybWF0IHN0cmluZyBhbmQgdGljayBpbnRlcnZhbAogICAgZnVuY3Rpb24gYmVzdENvbnN0cmFpbmVkSW50ZXJ2YWwobWluLCBtYXgsIG50dGFyZ2V0KSB7CiAgICAgICAgLy8gcnVuIHRocm91Z2ggcG9zc2libGUgbnVtYmVyIHRvIHRpY2tzIGFuZCBzZWUgd2hpY2ggaW50ZXJ2YWwgaXMgYmVzdAogICAgICAgIHZhciBsb3cgPSBNYXRoLmZsb29yKG50dGFyZ2V0LzIpOwogICAgICAgIHZhciBoaSA9IE1hdGguY2VpbChudHRhcmdldCoxLjUpOwogICAgICAgIHZhciBiYWRuZXNzID0gTnVtYmVyLk1BWF9WQUxVRTsKICAgICAgICB2YXIgciA9IChtYXggLSBtaW4pOwogICAgICAgIHZhciB0ZW1wOwogICAgICAgIHZhciBzZDsKICAgICAgICB2YXIgYmVzdE5UOwogICAgICAgIHZhciBnc2YgPSAkLmpxcGxvdC5nZXRTaWduaWZpY2FudEZpZ3VyZXM7CiAgICAgICAgdmFyIGZzZDsKICAgICAgICB2YXIgZnM7CiAgICAgICAgdmFyIGN1cnJlbnROVDsKICAgICAgICB2YXIgYmVzdFByZWM7CgogICAgICAgIGZvciAodmFyIGk9MCwgbD1oaS1sb3crMTsgaTxsOyBpKyspIHsKICAgICAgICAgICAgY3VycmVudE5UID0gbG93ICsgaTsKICAgICAgICAgICAgdGVtcCA9IHIvKGN1cnJlbnROVC0xKTsKICAgICAgICAgICAgc2QgPSBnc2YodGVtcCk7CgogICAgICAgICAgICB0ZW1wID0gTWF0aC5hYnMobnR0YXJnZXQgLSBjdXJyZW50TlQpICsgc2QuZGlnaXRzUmlnaHQ7CiAgICAgICAgICAgIGlmICh0ZW1wIDwgYmFkbmVzcykgewogICAgICAgICAgICAgICAgYmFkbmVzcyA9IHRlbXA7CiAgICAgICAgICAgICAgICBiZXN0TlQgPSBjdXJyZW50TlQ7CiAgICAgICAgICAgICAgICBiZXN0UHJlYyA9IHNkLmRpZ2l0c1JpZ2h0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHRlbXAgPT09IGJhZG5lc3MpIHsKICAgICAgICAgICAgICAgIC8vIGxldCBuaWNlciB0aWNrcyB0cnVtcCBudW1iZXIgb3QgdGlja3MKICAgICAgICAgICAgICAgIGlmIChzZC5kaWdpdHNSaWdodCA8IGJlc3RQcmVjKSB7CiAgICAgICAgICAgICAgICAgICAgYmVzdE5UID0gY3VycmVudE5UOwogICAgICAgICAgICAgICAgICAgIGJlc3RQcmVjID0gc2QuZGlnaXRzUmlnaHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICBmc2QgPSBNYXRoLm1heChiZXN0UHJlYywgTWF0aC5tYXgoZ3NmKG1pbikuZGlnaXRzUmlnaHQsIGdzZihtYXgpLmRpZ2l0c1JpZ2h0KSk7CiAgICAgICAgaWYgKGZzZCA9PT0gMCkgewogICAgICAgICAgICBmcyA9ICclZCc7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBmcyA9ICclLicgKyBmc2QgKyAnZic7CiAgICAgICAgfQogICAgICAgIHRlbXAgPSByIC8gKGJlc3ROVCAtIDEpOwogICAgICAgIC8vIG1pbiwgbWF4LCBudW1iZXIgdGlja3MsIGZvcm1hdCBzdHJpbmcsIHRpY2sgaW50ZXJ2YWwKICAgICAgICByZXR1cm4gW21pbiwgbWF4LCBiZXN0TlQsIGZzLCB0ZW1wXTsKICAgIH0KCiAgICAvLyBUaGlzIHdpbGwgcmV0dXJuIGFuIGludGVydmFsIG9mIGZvcm0gMiAqIDEwXm4sIDUgKiAxMF5uIG9yIDEwICogMTBebgogICAgLy8gaXQgaXMgYmFzZWQgc29sZXkgb24gdGhlIHJhbmdlIGFuZCBudW1iZXIgb2YgdGlja3MuICBTbyBpZiB1c2VyIHNwZWNpZmllcwogICAgLy8gbnVtYmVyIG9mIHRpY2tzLCB1c2UgdGhpcy4KICAgIGZ1bmN0aW9uIGJlc3RJbnRlcnZhbChyYW5nZSwgbnVtYmVyVGlja3MpIHsKICAgICAgICBudW1iZXJUaWNrcyA9IG51bWJlclRpY2tzIHx8IDc7CiAgICAgICAgdmFyIG1pbmltdW0gPSByYW5nZSAvIChudW1iZXJUaWNrcyAtIDEpOwogICAgICAgIHZhciBtYWduaXR1ZGUgPSBNYXRoLnBvdygxMCwgTWF0aC5mbG9vcihNYXRoLmxvZyhtaW5pbXVtKSAvIE1hdGguTE4xMCkpOwogICAgICAgIHZhciByZXNpZHVhbCA9IG1pbmltdW0gLyBtYWduaXR1ZGU7CiAgICAgICAgdmFyIGludGVydmFsOwogICAgICAgIC8vICJuaWNlc3QiIHJhbmdlcyBhcmUgMSwgMiwgNSBvciBwb3dlcnMgb2YgdGhlc2UuCiAgICAgICAgLy8gZm9yIG1hZ25pdHVkZXMgYmVsb3cgMSwgb25seSBhbGxvdyB0aGVzZS4gCiAgICAgICAgaWYgKG1hZ25pdHVkZSA8IDEpIHsKICAgICAgICAgICAgaWYgKHJlc2lkdWFsID4gNSkgewogICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSAxMCAqIG1hZ25pdHVkZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChyZXNpZHVhbCA+IDIpIHsKICAgICAgICAgICAgICAgIGludGVydmFsID0gNSAqIG1hZ25pdHVkZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChyZXNpZHVhbCA+IDEpIHsKICAgICAgICAgICAgICAgIGludGVydmFsID0gMiAqIG1hZ25pdHVkZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGludGVydmFsID0gbWFnbml0dWRlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIGZvciBsYXJnZSByYW5nZXMgKHdob2xlIGludGVnZXJzKSwgYWxsb3cgaW50ZXJ2YWxzIGxpa2UgMywgNCBvciBwb3dlcnMgb2YgdGhlc2UuCiAgICAgICAgLy8gdGhpcyBoZWxwcyBhIGxvdCB3aXRoIHBvb3IgY2hvaWNlcyBmb3IgbnVtYmVyIG9mIHRpY2tzLiAKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYgKHJlc2lkdWFsID4gNSkgewogICAgICAgICAgICAgICAgaW50ZXJ2YWwgPSAxMCAqIG1hZ25pdHVkZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChyZXNpZHVhbCA+IDQpIHsKICAgICAgICAgICAgICAgIGludGVydmFsID0gNSAqIG1hZ25pdHVkZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChyZXNpZHVhbCA+IDMpIHsKICAgICAgICAgICAgICAgIGludGVydmFsID0gNCAqIG1hZ25pdHVkZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChyZXNpZHVhbCA+IDIpIHsKICAgICAgICAgICAgICAgIGludGVydmFsID0gMyAqIG1hZ25pdHVkZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChyZXNpZHVhbCA+IDEpIHsKICAgICAgICAgICAgICAgIGludGVydmFsID0gMiAqIG1hZ25pdHVkZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGludGVydmFsID0gbWFnbml0dWRlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaW50ZXJ2YWw7CiAgICB9CgogICAgLy8gVGhpcyB3aWxsIHJldHVybiBhbiBpbnRlcnZhbCBvZiBmb3JtIDIgKiAxMF5uLCA1ICogMTBebiBvciAxMCAqIDEwXm4KICAgIC8vIGl0IGlzIGJhc2VkIHNvbGV5IG9uIHRoZSByYW5nZSBvZiBkYXRhLCBudW1iZXIgb2YgdGlja3MgbXVzdCBiZSBjb21wdXRlZCBsYXRlci4KICAgIGZ1bmN0aW9uIGJlc3RMaW5lYXJJbnRlcnZhbChyYW5nZSwgc2NhbGVmYWN0KSB7CiAgICAgICAgc2NhbGVmYWN0ID0gc2NhbGVmYWN0IHx8IDE7CiAgICAgICAgdmFyIGV4cHYgPSBNYXRoLmZsb29yKE1hdGgubG9nKHJhbmdlKS9NYXRoLkxOMTApOwogICAgICAgIHZhciBtYWduaXR1ZGUgPSBNYXRoLnBvdygxMCwgZXhwdik7CiAgICAgICAgLy8gMCA8IGYgPCAxMAogICAgICAgIHZhciBmID0gcmFuZ2UgLyBtYWduaXR1ZGU7CiAgICAgICAgdmFyIGZhY3Q7CiAgICAgICAgLy8gZm9yIGxhcmdlIHBsb3RzLCBzY2FsZWZhY3Qgd2lsbCBkZWNyZWFzZSBmIGFuZCBpbmNyZWFzZSBudW1iZXIgb2YgdGlja3MuCiAgICAgICAgLy8gZm9yIHNtYWxsIHBsb3RzLCBzY2FsZWZhY3Qgd2lsbCBpbmNyZWFzZSBmIGFuZCBkZWNyZWFzZSBudW1iZXIgb2YgdGlja3MuCiAgICAgICAgZiA9IGYvc2NhbGVmYWN0OwoKICAgICAgICAvLyBmb3IgbGFyZ2UgcGxvdHMsIHNtYWxsZXIgaW50ZXJ2YWwsIG1vcmUgdGlja3MuCiAgICAgICAgaWYgKGY8PTAuMzgpIHsKICAgICAgICAgICAgZmFjdCA9IDAuMTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoZjw9MS42KSB7CiAgICAgICAgICAgIGZhY3QgPSAwLjI7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGY8PTQuMCkgewogICAgICAgICAgICBmYWN0ID0gMC41OwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChmPD04LjApIHsKICAgICAgICAgICAgZmFjdCA9IDEuMDsKICAgICAgICB9CiAgICAgICAgLy8gZm9yIHZlcnkgc21hbGwgcGxvdHMsIGxhcmdlciBpbnRlcnZhbCwgbGVzcyB0aWNrcyBpbiBudW1iZXIgdGlja3MKICAgICAgICBlbHNlIGlmIChmPD0xNi4wKSB7CiAgICAgICAgICAgIGZhY3QgPSAyOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZmFjdCA9IDU7CiAgICAgICAgfSAKCiAgICAgICAgcmV0dXJuIGZhY3QqbWFnbml0dWRlOyAKICAgIH0KCiAgICBmdW5jdGlvbiBiZXN0TGluZWFyQ29tcG9uZW50cyhyYW5nZSwgc2NhbGVmYWN0KSB7CiAgICAgICAgdmFyIGV4cHYgPSBNYXRoLmZsb29yKE1hdGgubG9nKHJhbmdlKS9NYXRoLkxOMTApOwogICAgICAgIHZhciBtYWduaXR1ZGUgPSBNYXRoLnBvdygxMCwgZXhwdik7CiAgICAgICAgLy8gMCA8IGYgPCAxMAogICAgICAgIHZhciBmID0gcmFuZ2UgLyBtYWduaXR1ZGU7CiAgICAgICAgdmFyIGludGVydmFsOwogICAgICAgIHZhciBmYWN0OwogICAgICAgIC8vIGZvciBsYXJnZSBwbG90cywgc2NhbGVmYWN0IHdpbGwgZGVjcmVhc2UgZiBhbmQgaW5jcmVhc2UgbnVtYmVyIG9mIHRpY2tzLgogICAgICAgIC8vIGZvciBzbWFsbCBwbG90cywgc2NhbGVmYWN0IHdpbGwgaW5jcmVhc2UgZiBhbmQgZGVjcmVhc2UgbnVtYmVyIG9mIHRpY2tzLgogICAgICAgIGYgPSBmL3NjYWxlZmFjdDsKCiAgICAgICAgLy8gZm9yIGxhcmdlIHBsb3RzLCBzbWFsbGVyIGludGVydmFsLCBtb3JlIHRpY2tzLgogICAgICAgIGlmIChmPD0wLjM4KSB7CiAgICAgICAgICAgIGZhY3QgPSAwLjE7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGY8PTEuNikgewogICAgICAgICAgICBmYWN0ID0gMC4yOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChmPD00LjApIHsKICAgICAgICAgICAgZmFjdCA9IDAuNTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoZjw9OC4wKSB7CiAgICAgICAgICAgIGZhY3QgPSAxLjA7CiAgICAgICAgfQogICAgICAgIC8vIGZvciB2ZXJ5IHNtYWxsIHBsb3RzLCBsYXJnZXIgaW50ZXJ2YWwsIGxlc3MgdGlja3MgaW4gbnVtYmVyIHRpY2tzCiAgICAgICAgZWxzZSBpZiAoZjw9MTYuMCkgewogICAgICAgICAgICBmYWN0ID0gMjsKICAgICAgICB9CiAgICAgICAgLy8gZWxzZSBpZiAoZjw9MjAuMCkgewogICAgICAgIC8vICAgICBmYWN0ID0gMzsKICAgICAgICAvLyB9CiAgICAgICAgLy8gZWxzZSBpZiAoZjw9MjQuMCkgewogICAgICAgIC8vICAgICBmYWN0ID0gNDsKICAgICAgICAvLyB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGZhY3QgPSA1OwogICAgICAgIH0gCgogICAgICAgIGludGVydmFsID0gZmFjdCAqIG1hZ25pdHVkZTsKCiAgICAgICAgcmV0dXJuIFtpbnRlcnZhbCwgZmFjdCwgbWFnbml0dWRlXTsKICAgIH0KCiAgICAvLyBHaXZlbiB0aGUgbWluIGFuZCBtYXggZm9yIGEgZGF0YXNldCwgcmV0dXJuIHN1aXRhYmxlIGVuZHBvaW50cwogICAgLy8gZm9yIHRoZSBncmFwaGluZywgYSBnb29kIG51bWJlciBmb3IgdGhlIG51bWJlciBvZiB0aWNrcywgYW5kIGEKICAgIC8vIGZvcm1hdCBzdHJpbmcgc28gdGhhdCBleHRyYW5lb3VzIGRpZ2l0cyBhcmUgbm90IGRpc3BsYXllZC4KICAgIC8vIHJldHVybmVkIGlzIGFuIGFycmF5IGNvbnRhaW5pbmcgW21pbiwgbWF4LCBuVGlja3MsIGZvcm1hdF0KICAgICQuanFwbG90LkxpbmVhclRpY2tHZW5lcmF0b3IgPSBmdW5jdGlvbihheGlzX21pbiwgYXhpc19tYXgsIHNjYWxlZmFjdCwgbnVtYmVyVGlja3MsIGtlZXBNaW4sIGtlZXBNYXgpIHsKICAgICAgICAvLyBTZXQgdG8gcHJlc2VydmUgRUlUSEVSIG1pbiBPUiBtYXguCiAgICAgICAgLy8gSWYgbWluIGlzIHByZXNlcnZlZCwgbWF4IG11c3QgYmUgZnJlZS4KICAgICAgICBrZWVwTWluID0gKGtlZXBNaW4gPT09IG51bGwpID8gZmFsc2UgOiBrZWVwTWluOwogICAgICAgIGtlZXBNYXggPSAoa2VlcE1heCA9PT0gbnVsbCB8fCBrZWVwTWluKSA/IGZhbHNlIDoga2VlcE1heDsKICAgICAgICAvLyBpZiBlbmRwb2ludHMgYXJlIGVxdWFsIHRyeSB0byBpbmNsdWRlIHplcm8gb3RoZXJ3aXNlIGluY2x1ZGUgb25lCiAgICAgICAgaWYgKGF4aXNfbWluID09PSBheGlzX21heCkgewogICAgICAgICAgICBheGlzX21heCA9IChheGlzX21heCkgPyAwIDogMTsKICAgICAgICB9CgogICAgICAgIHNjYWxlZmFjdCA9IHNjYWxlZmFjdCB8fCAxLjA7CgogICAgICAgIC8vIG1ha2Ugc3VyZSByYW5nZSBpcyBwb3NpdGl2ZQogICAgICAgIGlmIChheGlzX21heCA8IGF4aXNfbWluKSB7CiAgICAgICAgICAgIHZhciBhID0gYXhpc19tYXg7CiAgICAgICAgICAgIGF4aXNfbWF4ID0gYXhpc19taW47CiAgICAgICAgICAgIGF4aXNfbWluID0gYTsKICAgICAgICB9CgogICAgICAgIHZhciByID0gW107CiAgICAgICAgdmFyIHNzID0gYmVzdExpbmVhckludGVydmFsKGF4aXNfbWF4IC0gYXhpc19taW4sIHNjYWxlZmFjdCk7CgogICAgICAgIHZhciBnc2YgPSAkLmpxcGxvdC5nZXRTaWduaWZpY2FudEZpZ3VyZXM7CiAgICAgICAgCiAgICAgICAgaWYgKG51bWJlclRpY2tzID09IG51bGwpIHsKCiAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgdGhlIGF4aXMgbWluLCBtYXggYW5kIG51bWJlciBvZiB0aWNrcwogICAgICAgICAgICAvLyB0aGUgbWluIGFuZCBtYXggd2lsbCBiZSBzb21lIG11bHRpcGxlIG9mIHRoZSB0aWNrIGludGVydmFsLAogICAgICAgICAgICAvLyAxKjEwXm4sIDIqMTBebiBvciA1KjEwXm4uICBUaGlzIGdhdXJhbnRlZXMgdGhhdCwgaWYgdGhlCiAgICAgICAgICAgIC8vIGF4aXMgbWluIGlzIG5lZ2F0aXZlLCAwIHdpbGwgYmUgYSB0aWNrLgogICAgICAgICAgICBpZiAoIWtlZXBNaW4gJiYgIWtlZXBNYXgpIHsKICAgICAgICAgICAgICAgIHJbMF0gPSBNYXRoLmZsb29yKGF4aXNfbWluIC8gc3MpICogc3M7ICAvLyBtaW4KICAgICAgICAgICAgICAgIHJbMV0gPSBNYXRoLmNlaWwoYXhpc19tYXggLyBzcykgKiBzczsgICAvLyBtYXgKICAgICAgICAgICAgICAgIHJbMl0gPSBNYXRoLnJvdW5kKChyWzFdLXJbMF0pL3NzKzEuMCk7ICAvLyBudW1iZXIgb2YgdGlja3MKICAgICAgICAgICAgICAgIHJbM10gPSBiZXN0Rm9ybWF0U3RyaW5nKHNzKTsgICAgICAgICAgICAvLyBmb3JtYXQgc3RyaW5nCiAgICAgICAgICAgICAgICByWzRdID0gc3M7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGljayBJbnRlcnZhbAogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNlIGlmIChrZWVwTWluKSB7CiAgICAgICAgICAgICAgICByWzBdID0gYXhpc19taW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1pbgogICAgICAgICAgICAgICAgclsyXSA9IE1hdGguY2VpbCgoYXhpc19tYXggLSBheGlzX21pbikgLyBzcyArIDEuMCk7ICAgICAvLyBudW1iZXIgb2YgdGlja3MKICAgICAgICAgICAgICAgIHJbMV0gPSBheGlzX21pbiArIChyWzJdIC0gMSkgKiBzczsgICAgICAgICAgICAgICAgICAgICAgLy8gbWF4CiAgICAgICAgICAgICAgICB2YXIgZGlnaXRzTWluID0gZ3NmKGF4aXNfbWluKS5kaWdpdHNSaWdodDsKICAgICAgICAgICAgICAgIHZhciBkaWdpdHNTUyA9IGdzZihzcykuZGlnaXRzUmlnaHQ7CiAgICAgICAgICAgICAgICBpZiAoZGlnaXRzTWluIDwgZGlnaXRzU1MpIHsKICAgICAgICAgICAgICAgICAgICByWzNdID0gYmVzdEZvcm1hdFN0cmluZyhzcyk7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9ybWF0IHN0cmluZwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgclszXSA9ICclLicgKyBkaWdpdHNNaW4gKyAnZic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByWzRdID0gc3M7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRpY2sgSW50ZXJ2YWwKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzZSBpZiAoa2VlcE1heCkgewogICAgICAgICAgICAgICAgclsxXSA9IGF4aXNfbWF4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXgKICAgICAgICAgICAgICAgIHJbMl0gPSBNYXRoLmNlaWwoKGF4aXNfbWF4IC0gYXhpc19taW4pIC8gc3MgKyAxLjApOyAgICAgLy8gbnVtYmVyIG9mIHRpY2tzCiAgICAgICAgICAgICAgICByWzBdID0gYXhpc19tYXggLSAoclsyXSAtIDEpICogc3M7ICAgICAgICAgICAgICAgICAgICAgIC8vIG1pbgogICAgICAgICAgICAgICAgdmFyIGRpZ2l0c01heCA9IGdzZihheGlzX21heCkuZGlnaXRzUmlnaHQ7CiAgICAgICAgICAgICAgICB2YXIgZGlnaXRzU1MgPSBnc2Yoc3MpLmRpZ2l0c1JpZ2h0OwogICAgICAgICAgICAgICAgaWYgKGRpZ2l0c01heCA8IGRpZ2l0c1NTKSB7CiAgICAgICAgICAgICAgICAgICAgclszXSA9IGJlc3RGb3JtYXRTdHJpbmcoc3MpOyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvcm1hdCBzdHJpbmcKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJbM10gPSAnJS4nICsgZGlnaXRzTWF4ICsgJ2YnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcls0XSA9IHNzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aWNrIEludGVydmFsCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGVsc2UgewogICAgICAgICAgICB2YXIgdGVtcHIgPSBbXTsKCiAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgdGhlIGF4aXMgbWluLCBtYXggYW5kIG51bWJlciBvZiB0aWNrcwogICAgICAgICAgICAvLyB0aGUgbWluIGFuZCBtYXggd2lsbCBiZSBzb21lIG11bHRpcGxlIG9mIHRoZSB0aWNrIGludGVydmFsLAogICAgICAgICAgICAvLyAxKjEwXm4sIDIqMTBebiBvciA1KjEwXm4uICBUaGlzIGdhdXJhbnRlZXMgdGhhdCwgaWYgdGhlCiAgICAgICAgICAgIC8vIGF4aXMgbWluIGlzIG5lZ2F0aXZlLCAwIHdpbGwgYmUgYSB0aWNrLgogICAgICAgICAgICB0ZW1wclswXSA9IE1hdGguZmxvb3IoYXhpc19taW4gLyBzcykgKiBzczsgIC8vIG1pbgogICAgICAgICAgICB0ZW1wclsxXSA9IE1hdGguY2VpbChheGlzX21heCAvIHNzKSAqIHNzOyAgIC8vIG1heAogICAgICAgICAgICB0ZW1wclsyXSA9IE1hdGgucm91bmQoKHRlbXByWzFdLXRlbXByWzBdKS9zcysxLjApOyAgICAvLyBudW1iZXIgb2YgdGlja3MKICAgICAgICAgICAgdGVtcHJbM10gPSBiZXN0Rm9ybWF0U3RyaW5nKHNzKTsgICAgICAgICAgICAvLyBmb3JtYXQgc3RyaW5nCiAgICAgICAgICAgIHRlbXByWzRdID0gc3M7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGljayBJbnRlcnZhbAoKICAgICAgICAgICAgLy8gZmlyc3QsIHNlZSBpZiB3ZSBoYXBwZW4gdG8gZ2V0IHRoZSByaWdodCBudW1iZXIgb2YgdGlja3MKICAgICAgICAgICAgaWYgKHRlbXByWzJdID09PSBudW1iZXJUaWNrcykgewogICAgICAgICAgICAgICAgciA9IHRlbXByOwogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICB2YXIgbmV3dGkgPSBiZXN0SW50ZXJ2YWwodGVtcHJbMV0gLSB0ZW1wclswXSwgbnVtYmVyVGlja3MpOwoKICAgICAgICAgICAgICAgIHJbMF0gPSB0ZW1wclswXTsgICAgICAgICAgICAgICAgICAgICAgICAvLyBtaW4KICAgICAgICAgICAgICAgIHJbMl0gPSBudW1iZXJUaWNrczsgICAgICAgICAgICAgICAgICAgICAvLyBudW1iZXIgb2YgdGlja3MKICAgICAgICAgICAgICAgIHJbNF0gPSBuZXd0aTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aWNrIGludGVydmFsCiAgICAgICAgICAgICAgICByWzNdID0gYmVzdEZvcm1hdFN0cmluZyhuZXd0aSk7ICAgICAgICAgLy8gZm9ybWF0IHN0cmluZwogICAgICAgICAgICAgICAgclsxXSA9IHJbMF0gKyAoclsyXSAtIDEpICogcls0XTsgICAgICAgIC8vIG1heAogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcjsKICAgIH07CgogICAgJC5qcXBsb3QuTGluZWFyVGlja0dlbmVyYXRvci5iZXN0TGluZWFySW50ZXJ2YWwgPSBiZXN0TGluZWFySW50ZXJ2YWw7CiAgICAkLmpxcGxvdC5MaW5lYXJUaWNrR2VuZXJhdG9yLmJlc3RJbnRlcnZhbCA9IGJlc3RJbnRlcnZhbDsKICAgICQuanFwbG90LkxpbmVhclRpY2tHZW5lcmF0b3IuYmVzdExpbmVhckNvbXBvbmVudHMgPSBiZXN0TGluZWFyQ29tcG9uZW50czsKICAgICQuanFwbG90LkxpbmVhclRpY2tHZW5lcmF0b3IuYmVzdENvbnN0cmFpbmVkSW50ZXJ2YWwgPSBiZXN0Q29uc3RyYWluZWRJbnRlcnZhbDsKCgogICAgLy8gY2xhc3M6ICQuanFwbG90Lk1hcmtlclJlbmRlcmVyCiAgICAvLyBUaGUgZGVmYXVsdCBqcVBsb3QgbWFya2VyIHJlbmRlcmVyLCByZW5kZXJpbmcgdGhlIHBvaW50cyBvbiB0aGUgbGluZS4KICAgICQuanFwbG90Lk1hcmtlclJlbmRlcmVyID0gZnVuY3Rpb24ob3B0aW9ucyl7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAKICAgICAgICAvLyBwcm9wOiBzaG93CiAgICAgICAgLy8gd2hldGhlciBvciBub3QgdG8gc2hvdyB0aGUgbWFya2VyLgogICAgICAgIHRoaXMuc2hvdyA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogc3R5bGUKICAgICAgICAvLyBPbmUgb2YgZGlhbW9uZCwgY2lyY2xlLCBzcXVhcmUsIHgsIHBsdXMsIGRhc2gsIGZpbGxlZERpYW1vbmQsIGZpbGxlZENpcmNsZSwgZmlsbGVkU3F1YXJlCiAgICAgICAgdGhpcy5zdHlsZSA9ICdmaWxsZWRDaXJjbGUnOwogICAgICAgIC8vIHByb3A6IGxpbmVXaWR0aAogICAgICAgIC8vIHNpemUgb2YgdGhlIGxpbmUgZm9yIG5vbi1maWxsZWQgbWFya2Vycy4KICAgICAgICB0aGlzLmxpbmVXaWR0aCA9IDI7CiAgICAgICAgLy8gcHJvcDogc2l6ZQogICAgICAgIC8vIFNpemUgb2YgdGhlIG1hcmtlciAoZGlhbWV0ZXIgb3IgY2lyY2xlLCBsZW5ndGggb2YgZWRnZSBvZiBzcXVhcmUsIGV0Yy4pCiAgICAgICAgdGhpcy5zaXplID0gOS4wOwogICAgICAgIC8vIHByb3A6IGNvbG9yCiAgICAgICAgLy8gY29sb3Igb2YgbWFya2VyLiAgV2lsbCBiZSBzZXQgdG8gY29sb3Igb2Ygc2VyaWVzIGJ5IGRlZmF1bHQgb24gaW5pdC4KICAgICAgICB0aGlzLmNvbG9yID0gJyM2NjY2NjYnOwogICAgICAgIC8vIHByb3A6IHNoYWRvdwogICAgICAgIC8vIHdoZXRoZXIgb3Igbm90IHRvIGRyYXcgYSBzaGFkb3cgb24gdGhlIGxpbmUKICAgICAgICB0aGlzLnNoYWRvdyA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogc2hhZG93QW5nbGUKICAgICAgICAvLyBTaGFkb3cgYW5nbGUgaW4gZGVncmVlcwogICAgICAgIHRoaXMuc2hhZG93QW5nbGUgPSA0NTsKICAgICAgICAvLyBwcm9wOiBzaGFkb3dPZmZzZXQKICAgICAgICAvLyBTaGFkb3cgb2Zmc2V0IGZyb20gbGluZSBpbiBwaXhlbHMKICAgICAgICB0aGlzLnNoYWRvd09mZnNldCA9IDE7CiAgICAgICAgLy8gcHJvcDogc2hhZG93RGVwdGgKICAgICAgICAvLyBOdW1iZXIgb2YgdGltZXMgc2hhZG93IGlzIHN0cm9rZWQsIGVhY2ggc3Ryb2tlIG9mZnNldCBzaGFkb3dPZmZzZXQgZnJvbSB0aGUgbGFzdC4KICAgICAgICB0aGlzLnNoYWRvd0RlcHRoID0gMzsKICAgICAgICAvLyBwcm9wOiBzaGFkb3dBbHBoYQogICAgICAgIC8vIEFscGhhIGNoYW5uZWwgdHJhbnNwYXJlbmN5IG9mIHNoYWRvdy4gIDAgPSB0cmFuc3BhcmVudC4KICAgICAgICB0aGlzLnNoYWRvd0FscGhhID0gJzAuMDcnOwogICAgICAgIC8vIHByb3A6IHNoYWRvd1JlbmRlcmVyCiAgICAgICAgLy8gUmVuZGVyZXIgdGhhdCB3aWxsIGRyYXdzIHRoZSBzaGFkb3dzIG9uIHRoZSBtYXJrZXIuCiAgICAgICAgdGhpcy5zaGFkb3dSZW5kZXJlciA9IG5ldyAkLmpxcGxvdC5TaGFkb3dSZW5kZXJlcigpOwogICAgICAgIC8vIHByb3A6IHNoYXBlUmVuZGVyZXIKICAgICAgICAvLyBSZW5kZXJlciB0aGF0IHdpbGwgZHJhdyB0aGUgbWFya2VyLgogICAgICAgIHRoaXMuc2hhcGVSZW5kZXJlciA9IG5ldyAkLmpxcGxvdC5TaGFwZVJlbmRlcmVyKCk7CiAgICAgICAgCiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5NYXJrZXJSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgICAgICB2YXIgc2RvcHQgPSB7YW5nbGU6dGhpcy5zaGFkb3dBbmdsZSwgb2Zmc2V0OnRoaXMuc2hhZG93T2Zmc2V0LCBhbHBoYTp0aGlzLnNoYWRvd0FscGhhLCBsaW5lV2lkdGg6dGhpcy5saW5lV2lkdGgsIGRlcHRoOnRoaXMuc2hhZG93RGVwdGgsIGNsb3NlUGF0aDp0cnVlfTsKICAgICAgICBpZiAodGhpcy5zdHlsZS5pbmRleE9mKCdmaWxsZWQnKSAhPSAtMSkgewogICAgICAgICAgICBzZG9wdC5maWxsID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKHRoaXMuc3R5bGUuaW5kZXhPZignaXJjbGUnKSAhPSAtMSkgewogICAgICAgICAgICBzZG9wdC5pc2FyYyA9IHRydWU7CiAgICAgICAgICAgIHNkb3B0LmNsb3NlUGF0aCA9IGZhbHNlOwogICAgICAgIH0KICAgICAgICB0aGlzLnNoYWRvd1JlbmRlcmVyLmluaXQoc2RvcHQpOwogICAgICAgIAogICAgICAgIHZhciBzaG9wdCA9IHtmaWxsOmZhbHNlLCBpc2FyYzpmYWxzZSwgc3Ryb2tlU3R5bGU6dGhpcy5jb2xvciwgZmlsbFN0eWxlOnRoaXMuY29sb3IsIGxpbmVXaWR0aDp0aGlzLmxpbmVXaWR0aCwgY2xvc2VQYXRoOnRydWV9OwogICAgICAgIGlmICh0aGlzLnN0eWxlLmluZGV4T2YoJ2ZpbGxlZCcpICE9IC0xKSB7CiAgICAgICAgICAgIHNob3B0LmZpbGwgPSB0cnVlOwogICAgICAgIH0KICAgICAgICBpZiAodGhpcy5zdHlsZS5pbmRleE9mKCdpcmNsZScpICE9IC0xKSB7CiAgICAgICAgICAgIHNob3B0LmlzYXJjID0gdHJ1ZTsKICAgICAgICAgICAgc2hvcHQuY2xvc2VQYXRoID0gZmFsc2U7CiAgICAgICAgfQogICAgICAgIHRoaXMuc2hhcGVSZW5kZXJlci5pbml0KHNob3B0KTsKICAgIH07CiAgICAKICAgICQuanFwbG90Lk1hcmtlclJlbmRlcmVyLnByb3RvdHlwZS5kcmF3RGlhbW9uZCA9IGZ1bmN0aW9uKHgsIHksIGN0eCwgZmlsbCwgb3B0aW9ucykgewogICAgICAgIHZhciBzdHJldGNoID0gMS4yOwogICAgICAgIHZhciBkeCA9IHRoaXMuc2l6ZS8yL3N0cmV0Y2g7CiAgICAgICAgdmFyIGR5ID0gdGhpcy5zaXplLzIqc3RyZXRjaDsKICAgICAgICB2YXIgcG9pbnRzID0gW1t4LWR4LCB5XSwgW3gsIHkrZHldLCBbeCtkeCwgeV0sIFt4LCB5LWR5XV07CiAgICAgICAgaWYgKHRoaXMuc2hhZG93KSB7CiAgICAgICAgICAgIHRoaXMuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIHBvaW50cyk7CiAgICAgICAgfQogICAgICAgIHRoaXMuc2hhcGVSZW5kZXJlci5kcmF3KGN0eCwgcG9pbnRzLCBvcHRpb25zKTsKICAgIH07CiAgICAKICAgICQuanFwbG90Lk1hcmtlclJlbmRlcmVyLnByb3RvdHlwZS5kcmF3UGx1cyA9IGZ1bmN0aW9uKHgsIHksIGN0eCwgZmlsbCwgb3B0aW9ucykgewogICAgICAgIHZhciBzdHJldGNoID0gMS4wOwogICAgICAgIHZhciBkeCA9IHRoaXMuc2l6ZS8yKnN0cmV0Y2g7CiAgICAgICAgdmFyIGR5ID0gdGhpcy5zaXplLzIqc3RyZXRjaDsKICAgICAgICB2YXIgcG9pbnRzMSA9IFtbeCwgeS1keV0sIFt4LCB5K2R5XV07CiAgICAgICAgdmFyIHBvaW50czIgPSBbW3grZHgsIHldLCBbeC1keCwgeV1dOwogICAgICAgIHZhciBvcHRzID0gJC5leHRlbmQodHJ1ZSwge30sIHRoaXMub3B0aW9ucywge2Nsb3NlUGF0aDpmYWxzZX0pOwogICAgICAgIGlmICh0aGlzLnNoYWRvdykgewogICAgICAgICAgICB0aGlzLnNoYWRvd1JlbmRlcmVyLmRyYXcoY3R4LCBwb2ludHMxLCB7Y2xvc2VQYXRoOmZhbHNlfSk7CiAgICAgICAgICAgIHRoaXMuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIHBvaW50czIsIHtjbG9zZVBhdGg6ZmFsc2V9KTsKICAgICAgICB9CiAgICAgICAgdGhpcy5zaGFwZVJlbmRlcmVyLmRyYXcoY3R4LCBwb2ludHMxLCBvcHRzKTsKICAgICAgICB0aGlzLnNoYXBlUmVuZGVyZXIuZHJhdyhjdHgsIHBvaW50czIsIG9wdHMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuTWFya2VyUmVuZGVyZXIucHJvdG90eXBlLmRyYXdYID0gZnVuY3Rpb24oeCwgeSwgY3R4LCBmaWxsLCBvcHRpb25zKSB7CiAgICAgICAgdmFyIHN0cmV0Y2ggPSAxLjA7CiAgICAgICAgdmFyIGR4ID0gdGhpcy5zaXplLzIqc3RyZXRjaDsKICAgICAgICB2YXIgZHkgPSB0aGlzLnNpemUvMipzdHJldGNoOwogICAgICAgIHZhciBvcHRzID0gJC5leHRlbmQodHJ1ZSwge30sIHRoaXMub3B0aW9ucywge2Nsb3NlUGF0aDpmYWxzZX0pOwogICAgICAgIHZhciBwb2ludHMxID0gW1t4LWR4LCB5LWR5XSwgW3grZHgsIHkrZHldXTsKICAgICAgICB2YXIgcG9pbnRzMiA9IFtbeC1keCwgeStkeV0sIFt4K2R4LCB5LWR5XV07CiAgICAgICAgaWYgKHRoaXMuc2hhZG93KSB7CiAgICAgICAgICAgIHRoaXMuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIHBvaW50czEsIHtjbG9zZVBhdGg6ZmFsc2V9KTsKICAgICAgICAgICAgdGhpcy5zaGFkb3dSZW5kZXJlci5kcmF3KGN0eCwgcG9pbnRzMiwge2Nsb3NlUGF0aDpmYWxzZX0pOwogICAgICAgIH0KICAgICAgICB0aGlzLnNoYXBlUmVuZGVyZXIuZHJhdyhjdHgsIHBvaW50czEsIG9wdHMpOwogICAgICAgIHRoaXMuc2hhcGVSZW5kZXJlci5kcmF3KGN0eCwgcG9pbnRzMiwgb3B0cyk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5NYXJrZXJSZW5kZXJlci5wcm90b3R5cGUuZHJhd0Rhc2ggPSBmdW5jdGlvbih4LCB5LCBjdHgsIGZpbGwsIG9wdGlvbnMpIHsKICAgICAgICB2YXIgc3RyZXRjaCA9IDEuMDsKICAgICAgICB2YXIgZHggPSB0aGlzLnNpemUvMipzdHJldGNoOwogICAgICAgIHZhciBkeSA9IHRoaXMuc2l6ZS8yKnN0cmV0Y2g7CiAgICAgICAgdmFyIHBvaW50cyA9IFtbeC1keCwgeV0sIFt4K2R4LCB5XV07CiAgICAgICAgaWYgKHRoaXMuc2hhZG93KSB7CiAgICAgICAgICAgIHRoaXMuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIHBvaW50cyk7CiAgICAgICAgfQogICAgICAgIHRoaXMuc2hhcGVSZW5kZXJlci5kcmF3KGN0eCwgcG9pbnRzLCBvcHRpb25zKTsKICAgIH07CiAgICAKICAgICQuanFwbG90Lk1hcmtlclJlbmRlcmVyLnByb3RvdHlwZS5kcmF3TGluZSA9IGZ1bmN0aW9uKHAxLCBwMiwgY3R4LCBmaWxsLCBvcHRpb25zKSB7CiAgICAgICAgdmFyIHBvaW50cyA9IFtwMSwgcDJdOwogICAgICAgIGlmICh0aGlzLnNoYWRvdykgewogICAgICAgICAgICB0aGlzLnNoYWRvd1JlbmRlcmVyLmRyYXcoY3R4LCBwb2ludHMpOwogICAgICAgIH0KICAgICAgICB0aGlzLnNoYXBlUmVuZGVyZXIuZHJhdyhjdHgsIHBvaW50cywgb3B0aW9ucyk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5NYXJrZXJSZW5kZXJlci5wcm90b3R5cGUuZHJhd1NxdWFyZSA9IGZ1bmN0aW9uKHgsIHksIGN0eCwgZmlsbCwgb3B0aW9ucykgewogICAgICAgIHZhciBzdHJldGNoID0gMS4wOwogICAgICAgIHZhciBkeCA9IHRoaXMuc2l6ZS8yL3N0cmV0Y2g7CiAgICAgICAgdmFyIGR5ID0gdGhpcy5zaXplLzIqc3RyZXRjaDsKICAgICAgICB2YXIgcG9pbnRzID0gW1t4LWR4LCB5LWR5XSwgW3gtZHgsIHkrZHldLCBbeCtkeCwgeStkeV0sIFt4K2R4LCB5LWR5XV07CiAgICAgICAgaWYgKHRoaXMuc2hhZG93KSB7CiAgICAgICAgICAgIHRoaXMuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIHBvaW50cyk7CiAgICAgICAgfQogICAgICAgIHRoaXMuc2hhcGVSZW5kZXJlci5kcmF3KGN0eCwgcG9pbnRzLCBvcHRpb25zKTsKICAgIH07CiAgICAKICAgICQuanFwbG90Lk1hcmtlclJlbmRlcmVyLnByb3RvdHlwZS5kcmF3Q2lyY2xlID0gZnVuY3Rpb24oeCwgeSwgY3R4LCBmaWxsLCBvcHRpb25zKSB7CiAgICAgICAgdmFyIHJhZGl1cyA9IHRoaXMuc2l6ZS8yOwogICAgICAgIHZhciBlbmQgPSAyKk1hdGguUEk7CiAgICAgICAgdmFyIHBvaW50cyA9IFt4LCB5LCByYWRpdXMsIDAsIGVuZCwgdHJ1ZV07CiAgICAgICAgaWYgKHRoaXMuc2hhZG93KSB7CiAgICAgICAgICAgIHRoaXMuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIHBvaW50cyk7CiAgICAgICAgfQogICAgICAgIHRoaXMuc2hhcGVSZW5kZXJlci5kcmF3KGN0eCwgcG9pbnRzLCBvcHRpb25zKTsKICAgIH07CiAgICAKICAgICQuanFwbG90Lk1hcmtlclJlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24oeCwgeSwgY3R4LCBvcHRpb25zKSB7CiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgICAgICAgLy8gaGFjayBoZXJlIGIvYyBzaGFwZSByZW5kZXJlciB1c2VzIGNhbnZhcyBiYXNlZCBjb2xvciBzdHlsZSBvcHRpb25zCiAgICAgICAgLy8gYW5kIG1hcmtlciB1c2VzIGNzcyBzdHlsZSBuYW1lcy4KICAgICAgICBpZiAob3B0aW9ucy5zaG93ID09IG51bGwgfHwgb3B0aW9ucy5zaG93ICE9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmIChvcHRpb25zLmNvbG9yICYmICFvcHRpb25zLmZpbGxTdHlsZSkgewogICAgICAgICAgICAgICAgb3B0aW9ucy5maWxsU3R5bGUgPSBvcHRpb25zLmNvbG9yOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChvcHRpb25zLmNvbG9yICYmICFvcHRpb25zLnN0cm9rZVN0eWxlKSB7CiAgICAgICAgICAgICAgICBvcHRpb25zLnN0cm9rZVN0eWxlID0gb3B0aW9ucy5jb2xvcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBzd2l0Y2ggKHRoaXMuc3R5bGUpIHsKICAgICAgICAgICAgICAgIGNhc2UgJ2RpYW1vbmQnOgogICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhd0RpYW1vbmQoeCx5LGN0eCwgZmFsc2UsIG9wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnZmlsbGVkRGlhbW9uZCc6CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmF3RGlhbW9uZCh4LHksY3R4LCB0cnVlLCBvcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2NpcmNsZSc6CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmF3Q2lyY2xlKHgseSxjdHgsIGZhbHNlLCBvcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2ZpbGxlZENpcmNsZSc6CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmF3Q2lyY2xlKHgseSxjdHgsIHRydWUsIG9wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnc3F1YXJlJzoKICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYXdTcXVhcmUoeCx5LGN0eCwgZmFsc2UsIG9wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnZmlsbGVkU3F1YXJlJzoKICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYXdTcXVhcmUoeCx5LGN0eCwgdHJ1ZSwgb3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICd4JzoKICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYXdYKHgseSxjdHgsIHRydWUsIG9wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAncGx1cyc6CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmF3UGx1cyh4LHksY3R4LCB0cnVlLCBvcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2Rhc2gnOgogICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhd0Rhc2goeCx5LGN0eCwgdHJ1ZSwgb3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdsaW5lJzoKICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYXdMaW5lKHgsIHksIGN0eCwgZmFsc2UsIG9wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYXdEaWFtb25kKHgseSxjdHgsIGZhbHNlLCBvcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CiAgICAKICAgIC8vIGNsYXNzOiAkLmpxcGxvdC5zaGFkb3dSZW5kZXJlcgogICAgLy8gVGhlIGRlZmF1bHQganFQbG90IHNoYWRvdyByZW5kZXJlciwgcmVuZGVyaW5nIHNoYWRvd3MgYmVoaW5kIHNoYXBlcy4KICAgICQuanFwbG90LlNoYWRvd1JlbmRlcmVyID0gZnVuY3Rpb24ob3B0aW9ucyl7IAogICAgICAgIC8vIEdyb3VwOiBQcm9wZXJ0aWVzCiAgICAgICAgCiAgICAgICAgLy8gcHJvcDogYW5nbGUKICAgICAgICAvLyBBbmdsZSBvZiB0aGUgc2hhZG93IGluIGRlZ3JlZXMuICBNZWFzdXJlZCBjb3VudGVyLWNsb2Nrd2lzZSBmcm9tIHRoZSB4IGF4aXMuCiAgICAgICAgdGhpcy5hbmdsZSA9IDQ1OwogICAgICAgIC8vIHByb3A6IG9mZnNldAogICAgICAgIC8vIFBpeGVsIG9mZnNldCBhdCB0aGUgZ2l2ZW4gc2hhZG93IGFuZ2xlIG9mIGVhY2ggc2hhZG93IHN0cm9rZSBmcm9tIHRoZSBsYXN0IHN0cm9rZS4KICAgICAgICB0aGlzLm9mZnNldCA9IDE7CiAgICAgICAgLy8gcHJvcDogYWxwaGEKICAgICAgICAvLyBhbHBoYSB0cmFuc3BhcmVuY3kgb2Ygc2hhZG93IHN0cm9rZS4KICAgICAgICB0aGlzLmFscGhhID0gMC4wNzsKICAgICAgICAvLyBwcm9wOiBsaW5lV2lkdGgKICAgICAgICAvLyB3aWR0aCBvZiB0aGUgc2hhZG93IGxpbmUgc3Ryb2tlLgogICAgICAgIHRoaXMubGluZVdpZHRoID0gMS41OwogICAgICAgIC8vIHByb3A6IGxpbmVKb2luCiAgICAgICAgLy8gSG93IGxpbmUgc2VnbWVudHMgb2YgdGhlIHNoYWRvdyBhcmUgam9pbmVkLgogICAgICAgIHRoaXMubGluZUpvaW4gPSAnbWl0ZXInOwogICAgICAgIC8vIHByb3A6IGxpbmVDYXAKICAgICAgICAvLyBob3cgZW5kcyBvZiB0aGUgc2hhZG93IGxpbmUgYXJlIHJlbmRlcmVkLgogICAgICAgIHRoaXMubGluZUNhcCA9ICdyb3VuZCc7CiAgICAgICAgLy8gcHJvcDsgY2xvc2VQYXRoCiAgICAgICAgLy8gd2hldGhlciBsaW5lIHBhdGggc2VnbWVudCBpcyBjbG9zZWQgdXBvbiBpdHNlbGYuCiAgICAgICAgdGhpcy5jbG9zZVBhdGggPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiBmaWxsCiAgICAgICAgLy8gd2hldGhlciB0byBmaWxsIHRoZSBzaGFwZS4KICAgICAgICB0aGlzLmZpbGwgPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiBkZXB0aAogICAgICAgIC8vIGhvdyBtYW55IHRpbWVzIHRoZSBzaGFkb3cgaXMgc3Ryb2tlZC4gIEVhY2ggc3Ryb2tlIHdpbGwgYmUgb2Zmc2V0IGJ5IG9mZnNldCBhdCBhbmdsZSBkZWdyZWVzLgogICAgICAgIHRoaXMuZGVwdGggPSAzOwogICAgICAgIHRoaXMuc3Ryb2tlU3R5bGUgPSAncmdiYSgwLDAsMCwwLjEpJzsKICAgICAgICAvLyBwcm9wOiBpc2FyYwogICAgICAgIC8vIHdoZXRoZXIgdGhlIHNoYWRvdyBpcyBhbiBhcmMgb3Igbm90LgogICAgICAgIHRoaXMuaXNhcmMgPSBmYWxzZTsKICAgICAgICAKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LlNoYWRvd1JlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgfTsKICAgIAogICAgLy8gZnVuY3Rpb246IGRyYXcKICAgIC8vIGRyYXdzIGFuIHRyYW5zcGFyZW50IGJsYWNrIChpLmUuIGdyYXkpIHNoYWRvdy4KICAgIC8vCiAgICAvLyBjdHggLSBjYW52YXMgZHJhd2luZyBjb250ZXh0CiAgICAvLyBwb2ludHMgLSBhcnJheSBvZiBwb2ludHMgb3IgW3gsIHksIHJhZGl1cywgc3RhcnQgYW5nbGUgKHJhZCksIGVuZCBhbmdsZSAocmFkKV0KICAgICQuanFwbG90LlNoYWRvd1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24oY3R4LCBwb2ludHMsIG9wdGlvbnMpIHsKICAgICAgICBjdHguc2F2ZSgpOwogICAgICAgIHZhciBvcHRzID0gKG9wdGlvbnMgIT0gbnVsbCkgPyBvcHRpb25zIDoge307CiAgICAgICAgdmFyIGZpbGwgPSAob3B0cy5maWxsICE9IG51bGwpID8gb3B0cy5maWxsIDogdGhpcy5maWxsOwogICAgICAgIHZhciBmaWxsUmVjdCA9IChvcHRzLmZpbGxSZWN0ICE9IG51bGwpID8gb3B0cy5maWxsUmVjdCA6IHRoaXMuZmlsbFJlY3Q7CiAgICAgICAgdmFyIGNsb3NlUGF0aCA9IChvcHRzLmNsb3NlUGF0aCAhPSBudWxsKSA/IG9wdHMuY2xvc2VQYXRoIDogdGhpcy5jbG9zZVBhdGg7CiAgICAgICAgdmFyIG9mZnNldCA9IChvcHRzLm9mZnNldCAhPSBudWxsKSA/IG9wdHMub2Zmc2V0IDogdGhpcy5vZmZzZXQ7CiAgICAgICAgdmFyIGFscGhhID0gKG9wdHMuYWxwaGEgIT0gbnVsbCkgPyBvcHRzLmFscGhhIDogdGhpcy5hbHBoYTsKICAgICAgICB2YXIgZGVwdGggPSAob3B0cy5kZXB0aCAhPSBudWxsKSA/IG9wdHMuZGVwdGggOiB0aGlzLmRlcHRoOwogICAgICAgIHZhciBpc2FyYyA9IChvcHRzLmlzYXJjICE9IG51bGwpID8gb3B0cy5pc2FyYyA6IHRoaXMuaXNhcmM7CiAgICAgICAgdmFyIGxpbmVQYXR0ZXJuID0gKG9wdHMubGluZVBhdHRlcm4gIT0gbnVsbCkgPyBvcHRzLmxpbmVQYXR0ZXJuIDogdGhpcy5saW5lUGF0dGVybjsKICAgICAgICBjdHgubGluZVdpZHRoID0gKG9wdHMubGluZVdpZHRoICE9IG51bGwpID8gb3B0cy5saW5lV2lkdGggOiB0aGlzLmxpbmVXaWR0aDsKICAgICAgICBjdHgubGluZUpvaW4gPSAob3B0cy5saW5lSm9pbiAhPSBudWxsKSA/IG9wdHMubGluZUpvaW4gOiB0aGlzLmxpbmVKb2luOwogICAgICAgIGN0eC5saW5lQ2FwID0gKG9wdHMubGluZUNhcCAhPSBudWxsKSA/IG9wdHMubGluZUNhcCA6IHRoaXMubGluZUNhcDsKICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBvcHRzLnN0cm9rZVN0eWxlIHx8IHRoaXMuc3Ryb2tlU3R5bGUgfHwgJ3JnYmEoMCwwLDAsJythbHBoYSsnKSc7CiAgICAgICAgY3R4LmZpbGxTdHlsZSA9IG9wdHMuZmlsbFN0eWxlIHx8IHRoaXMuZmlsbFN0eWxlIHx8ICdyZ2JhKDAsMCwwLCcrYWxwaGErJyknOwogICAgICAgIGZvciAodmFyIGo9MDsgajxkZXB0aDsgaisrKSB7CiAgICAgICAgICAgIHZhciBjdHhQYXR0ZXJuID0gJC5qcXBsb3QuTGluZVBhdHRlcm4oY3R4LCBsaW5lUGF0dGVybik7CiAgICAgICAgICAgIGN0eC50cmFuc2xhdGUoTWF0aC5jb3ModGhpcy5hbmdsZSpNYXRoLlBJLzE4MCkqb2Zmc2V0LCBNYXRoLnNpbih0aGlzLmFuZ2xlKk1hdGguUEkvMTgwKSpvZmZzZXQpOwogICAgICAgICAgICBjdHhQYXR0ZXJuLmJlZ2luUGF0aCgpOwogICAgICAgICAgICBpZiAoaXNhcmMpIHsKICAgICAgICAgICAgICAgIGN0eC5hcmMocG9pbnRzWzBdLCBwb2ludHNbMV0sIHBvaW50c1syXSwgcG9pbnRzWzNdLCBwb2ludHNbNF0sIHRydWUpOyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChmaWxsUmVjdCkgewogICAgICAgICAgICAgICAgaWYgKGZpbGxSZWN0KSB7CiAgICAgICAgICAgICAgICAgICAgY3R4LmZpbGxSZWN0KHBvaW50c1swXSwgcG9pbnRzWzFdLCBwb2ludHNbMl0sIHBvaW50c1szXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAocG9pbnRzICYmIHBvaW50cy5sZW5ndGgpewogICAgICAgICAgICAgICAgdmFyIG1vdmUgPSB0cnVlOwogICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPHBvaW50cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIC8vIHNraXAgdG8gdGhlIGZpcnN0IG5vbi1udWxsIHBvaW50IGFuZCBtb3ZlIHRvIGl0LgogICAgICAgICAgICAgICAgICAgIGlmIChwb2ludHNbaV1bMF0gIT0gbnVsbCAmJiBwb2ludHNbaV1bMV0gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobW92ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4UGF0dGVybi5tb3ZlVG8ocG9pbnRzW2ldWzBdLCBwb2ludHNbaV1bMV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4UGF0dGVybi5saW5lVG8ocG9pbnRzW2ldWzBdLCBwb2ludHNbaV1bMV0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBtb3ZlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoY2xvc2VQYXRoKSB7CiAgICAgICAgICAgICAgICBjdHhQYXR0ZXJuLmNsb3NlUGF0aCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChmaWxsKSB7CiAgICAgICAgICAgICAgICBjdHguZmlsbCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgY3R4LnN0cm9rZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICB9OwogICAgCiAgICAvLyBjbGFzczogJC5qcXBsb3Quc2hhcGVSZW5kZXJlcgogICAgLy8gVGhlIGRlZmF1bHQganFQbG90IHNoYXBlIHJlbmRlcmVyLiAgR2l2ZW4gYSBzZXQgb2YgcG9pbnRzIHdpbGwKICAgIC8vIHBsb3QgdGhlbSBhbmQgZWl0aGVyIHN0cm9rZSBhIGxpbmUgKGZpbGwgPSBmYWxzZSkgb3IgZmlsbCB0aGVtIChmaWxsID0gdHJ1ZSkuCiAgICAvLyBJZiBhIGZpbGxlZCBzaGFwZSBpcyBkZXNpcmVkLCBjbG9zZVBhdGggPSB0cnVlIG11c3QgYWxzbyBiZSBzZXQgdG8gY2xvc2UKICAgIC8vIHRoZSBzaGFwZS4KICAgICQuanFwbG90LlNoYXBlUmVuZGVyZXIgPSBmdW5jdGlvbihvcHRpb25zKXsKICAgICAgICAKICAgICAgICB0aGlzLmxpbmVXaWR0aCA9IDEuNTsKICAgICAgICAvLyBwcm9wOiBsaW5lUGF0dGVybgogICAgICAgIC8vIGxpbmUgcGF0dGVybiAnZGFzaGVkJywgJ2RvdHRlZCcsICdzb2xpZCcsIHNvbWUgY29tYmluYXRpb24KICAgICAgICAvLyBvZiAnLScgYW5kICcuJyBjaGFyYWN0ZXJzIHN1Y2ggYXMgJy4tLicgb3IgYSBudW1lcmljYWwgYXJyYXkgbGlrZSAKICAgICAgICAvLyBbZHJhdywgc2tpcCwgZHJhdywgc2tpcCwgLi4uXSBzdWNoIGFzIFsxLCAxMF0gdG8gZHJhdyBhIGRvdHRlZCBsaW5lLCAKICAgICAgICAvLyBbMSwgMTAsIDIwLCAxMF0gdG8gZHJhdyBhIGRvdC1kYXNoIGxpbmUsIGFuZCBzbyBvbi4KICAgICAgICB0aGlzLmxpbmVQYXR0ZXJuID0gJ3NvbGlkJzsKICAgICAgICAvLyBwcm9wOiBsaW5lSm9pbgogICAgICAgIC8vIEhvdyBsaW5lIHNlZ21lbnRzIG9mIHRoZSBzaGFkb3cgYXJlIGpvaW5lZC4KICAgICAgICB0aGlzLmxpbmVKb2luID0gJ21pdGVyJzsKICAgICAgICAvLyBwcm9wOiBsaW5lQ2FwCiAgICAgICAgLy8gaG93IGVuZHMgb2YgdGhlIHNoYWRvdyBsaW5lIGFyZSByZW5kZXJlZC4KICAgICAgICB0aGlzLmxpbmVDYXAgPSAncm91bmQnOwogICAgICAgIC8vIHByb3A7IGNsb3NlUGF0aAogICAgICAgIC8vIHdoZXRoZXIgbGluZSBwYXRoIHNlZ21lbnQgaXMgY2xvc2VkIHVwb24gaXRzZWxmLgogICAgICAgIHRoaXMuY2xvc2VQYXRoID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogZmlsbAogICAgICAgIC8vIHdoZXRoZXIgdG8gZmlsbCB0aGUgc2hhcGUuCiAgICAgICAgdGhpcy5maWxsID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogaXNhcmMKICAgICAgICAvLyB3aGV0aGVyIHRoZSBzaGFkb3cgaXMgYW4gYXJjIG9yIG5vdC4KICAgICAgICB0aGlzLmlzYXJjID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogZmlsbFJlY3QKICAgICAgICAvLyB0cnVlIHRvIGRyYXcgc2hhcGUgYXMgYSBmaWxsZWQgcmVjdGFuZ2xlLgogICAgICAgIHRoaXMuZmlsbFJlY3QgPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiBzdHJva2VSZWN0CiAgICAgICAgLy8gdHJ1ZSB0byBkcmF3IHNoYXBlIGFzIGEgc3Ryb2tlZCByZWN0YW5nbGUuCiAgICAgICAgdGhpcy5zdHJva2VSZWN0ID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogY2xlYXJSZWN0CiAgICAgICAgLy8gdHJ1ZSB0byBjZWFyIGEgcmVjdGFuZ2xlLgogICAgICAgIHRoaXMuY2xlYXJSZWN0ID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogc3Ryb2tlU3R5bGUKICAgICAgICAvLyBjc3MgY29sb3Igc3BlYyBmb3IgdGhlIHN0b2tlIHN0eWxlCiAgICAgICAgdGhpcy5zdHJva2VTdHlsZSA9ICcjOTk5OTk5JzsKICAgICAgICAvLyBwcm9wOiBmaWxsU3R5bGUKICAgICAgICAvLyBjc3MgY29sb3Igc3BlYyBmb3IgdGhlIGZpbGwgc3R5bGUuCiAgICAgICAgdGhpcy5maWxsU3R5bGUgPSAnIzk5OTk5OSc7IAogICAgICAgIAogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuU2hhcGVSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgIH07CiAgICAKICAgIC8vIGZ1bmN0aW9uOiBkcmF3CiAgICAvLyBkcmF3cyB0aGUgc2hhcGUuCiAgICAvLwogICAgLy8gY3R4IC0gY2FudmFzIGRyYXdpbmcgY29udGV4dAogICAgLy8gcG9pbnRzIC0gYXJyYXkgb2YgcG9pbnRzIGZvciBzaGFwZXMgb3IgCiAgICAvLyBbeCwgeSwgd2lkdGgsIGhlaWdodF0gZm9yIHJlY3RhbmdsZXMgb3IKICAgIC8vIFt4LCB5LCByYWRpdXMsIHN0YXJ0IGFuZ2xlIChyYWQpLCBlbmQgYW5nbGUgKHJhZCldIGZvciBjaXJjbGVzIGFuZCBhcmNzLgogICAgJC5qcXBsb3QuU2hhcGVSZW5kZXJlci5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGN0eCwgcG9pbnRzLCBvcHRpb25zKSB7CiAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICB2YXIgb3B0cyA9IChvcHRpb25zICE9IG51bGwpID8gb3B0aW9ucyA6IHt9OwogICAgICAgIHZhciBmaWxsID0gKG9wdHMuZmlsbCAhPSBudWxsKSA/IG9wdHMuZmlsbCA6IHRoaXMuZmlsbDsKICAgICAgICB2YXIgY2xvc2VQYXRoID0gKG9wdHMuY2xvc2VQYXRoICE9IG51bGwpID8gb3B0cy5jbG9zZVBhdGggOiB0aGlzLmNsb3NlUGF0aDsKICAgICAgICB2YXIgZmlsbFJlY3QgPSAob3B0cy5maWxsUmVjdCAhPSBudWxsKSA/IG9wdHMuZmlsbFJlY3QgOiB0aGlzLmZpbGxSZWN0OwogICAgICAgIHZhciBzdHJva2VSZWN0ID0gKG9wdHMuc3Ryb2tlUmVjdCAhPSBudWxsKSA/IG9wdHMuc3Ryb2tlUmVjdCA6IHRoaXMuc3Ryb2tlUmVjdDsKICAgICAgICB2YXIgY2xlYXJSZWN0ID0gKG9wdHMuY2xlYXJSZWN0ICE9IG51bGwpID8gb3B0cy5jbGVhclJlY3QgOiB0aGlzLmNsZWFyUmVjdDsKICAgICAgICB2YXIgaXNhcmMgPSAob3B0cy5pc2FyYyAhPSBudWxsKSA/IG9wdHMuaXNhcmMgOiB0aGlzLmlzYXJjOwogICAgICAgIHZhciBsaW5lUGF0dGVybiA9IChvcHRzLmxpbmVQYXR0ZXJuICE9IG51bGwpID8gb3B0cy5saW5lUGF0dGVybiA6IHRoaXMubGluZVBhdHRlcm47CiAgICAgICAgdmFyIGN0eFBhdHRlcm4gPSAkLmpxcGxvdC5MaW5lUGF0dGVybihjdHgsIGxpbmVQYXR0ZXJuKTsKICAgICAgICBjdHgubGluZVdpZHRoID0gb3B0cy5saW5lV2lkdGggfHwgdGhpcy5saW5lV2lkdGg7CiAgICAgICAgY3R4LmxpbmVKb2luID0gb3B0cy5saW5lSm9pbiB8fCB0aGlzLmxpbmVKb2luOwogICAgICAgIGN0eC5saW5lQ2FwID0gb3B0cy5saW5lQ2FwIHx8IHRoaXMubGluZUNhcDsKICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSAob3B0cy5zdHJva2VTdHlsZSB8fCBvcHRzLmNvbG9yKSB8fCB0aGlzLnN0cm9rZVN0eWxlOwogICAgICAgIGN0eC5maWxsU3R5bGUgPSBvcHRzLmZpbGxTdHlsZSB8fCB0aGlzLmZpbGxTdHlsZTsKICAgICAgICBjdHguYmVnaW5QYXRoKCk7CiAgICAgICAgaWYgKGlzYXJjKSB7CiAgICAgICAgICAgIGN0eC5hcmMocG9pbnRzWzBdLCBwb2ludHNbMV0sIHBvaW50c1syXSwgcG9pbnRzWzNdLCBwb2ludHNbNF0sIHRydWUpOyAgIAogICAgICAgICAgICBpZiAoY2xvc2VQYXRoKSB7CiAgICAgICAgICAgICAgICBjdHguY2xvc2VQYXRoKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGZpbGwpIHsKICAgICAgICAgICAgICAgIGN0eC5maWxsKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBjdHguc3Ryb2tlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChjbGVhclJlY3QpIHsKICAgICAgICAgICAgY3R4LmNsZWFyUmVjdChwb2ludHNbMF0sIHBvaW50c1sxXSwgcG9pbnRzWzJdLCBwb2ludHNbM10pOwogICAgICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGZpbGxSZWN0IHx8IHN0cm9rZVJlY3QpIHsKICAgICAgICAgICAgaWYgKGZpbGxSZWN0KSB7CiAgICAgICAgICAgICAgICBjdHguZmlsbFJlY3QocG9pbnRzWzBdLCBwb2ludHNbMV0sIHBvaW50c1syXSwgcG9pbnRzWzNdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoc3Ryb2tlUmVjdCkgewogICAgICAgICAgICAgICAgY3R4LnN0cm9rZVJlY3QocG9pbnRzWzBdLCBwb2ludHNbMV0sIHBvaW50c1syXSwgcG9pbnRzWzNdKTsKICAgICAgICAgICAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAocG9pbnRzICYmIHBvaW50cy5sZW5ndGgpewogICAgICAgICAgICB2YXIgbW92ZSA9IHRydWU7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxwb2ludHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIC8vIHNraXAgdG8gdGhlIGZpcnN0IG5vbi1udWxsIHBvaW50IGFuZCBtb3ZlIHRvIGl0LgogICAgICAgICAgICAgICAgaWYgKHBvaW50c1tpXVswXSAhPSBudWxsICYmIHBvaW50c1tpXVsxXSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG1vdmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY3R4UGF0dGVybi5tb3ZlVG8ocG9pbnRzW2ldWzBdLCBwb2ludHNbaV1bMV0pOwogICAgICAgICAgICAgICAgICAgICAgICBtb3ZlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBjdHhQYXR0ZXJuLmxpbmVUbyhwb2ludHNbaV1bMF0sIHBvaW50c1tpXVsxXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbW92ZSA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGNsb3NlUGF0aCkgewogICAgICAgICAgICAgICAgY3R4UGF0dGVybi5jbG9zZVBhdGgoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZmlsbCkgewogICAgICAgICAgICAgICAgY3R4LmZpbGwoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGN0eC5zdHJva2UoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgfTsKICAgIAogICAgLy8gY2xhc3MgJC5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlcgogICAgLy8gVGhlIGRlZmF1bHQgbGVnZW5kIHJlbmRlcmVyIGZvciBqcVBsb3QuCiAgICAkLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyID0gZnVuY3Rpb24oKXsKICAgICAgICAvLwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgIH07CiAgICAgICAgCiAgICAkLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5hZGRyb3cgPSBmdW5jdGlvbiAobGFiZWwsIGNvbG9yLCBwYWQsIHJldmVyc2UpIHsKICAgICAgICB2YXIgcnMgPSAocGFkKSA/IHRoaXMucm93U3BhY2luZysncHgnIDogJzBweCc7CiAgICAgICAgdmFyIHRyOwogICAgICAgIHZhciB0ZDsKICAgICAgICB2YXIgZWxlbTsKICAgICAgICB2YXIgZGl2MDsKICAgICAgICB2YXIgZGl2MTsKICAgICAgICBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKICAgICAgICB0ciA9ICQoZWxlbSk7CiAgICAgICAgdHIuYWRkQ2xhc3MoJ2pxcGxvdC10YWJsZS1sZWdlbmQnKTsKICAgICAgICBlbGVtID0gbnVsbDsKCiAgICAgICAgaWYgKHJldmVyc2UpewogICAgICAgICAgICB0ci5wcmVwZW5kVG8odGhpcy5fZWxlbSk7CiAgICAgICAgfQoKICAgICAgICBlbHNlewogICAgICAgICAgICB0ci5hcHBlbmRUbyh0aGlzLl9lbGVtKTsKICAgICAgICB9CgogICAgICAgIGlmICh0aGlzLnNob3dTd2F0Y2hlcykgewogICAgICAgICAgICB0ZCA9ICQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKSk7CiAgICAgICAgICAgIHRkLmFkZENsYXNzKCdqcXBsb3QtdGFibGUtbGVnZW5kIGpxcGxvdC10YWJsZS1sZWdlbmQtc3dhdGNoJyk7CiAgICAgICAgICAgIHRkLmNzcyh7dGV4dEFsaWduOiAnY2VudGVyJywgcGFkZGluZ1RvcDogcnN9KTsKCiAgICAgICAgICAgIGRpdjAgPSAkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKICAgICAgICAgICAgZGl2MC5hZGRDbGFzcygnanFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2gtb3V0bGluZScpOwogICAgICAgICAgICBkaXYxID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CiAgICAgICAgICAgIGRpdjEuYWRkQ2xhc3MoJ2pxcGxvdC10YWJsZS1sZWdlbmQtc3dhdGNoJyk7CiAgICAgICAgICAgIGRpdjEuY3NzKHtiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLCBib3JkZXJDb2xvcjogY29sb3J9KTsKCiAgICAgICAgICAgIHRyLmFwcGVuZCh0ZC5hcHBlbmQoZGl2MC5hcHBlbmQoZGl2MSkpKTsKCiAgICAgICAgICAgIC8vICQoJzx0ZCBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3BhZGRpbmctdG9wOicrcnMrJzsiPicrCiAgICAgICAgICAgIC8vICc8ZGl2PjxkaXYgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQtc3dhdGNoIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjonK2NvbG9yKyc7Ym9yZGVyLWNvbG9yOicrY29sb3IrJzsiPjwvZGl2PicrCiAgICAgICAgICAgIC8vICc8L2Rpdj48L3RkPicpLmFwcGVuZFRvKHRyKTsKICAgICAgICB9CiAgICAgICAgaWYgKHRoaXMuc2hvd0xhYmVscykgewogICAgICAgICAgICB0ZCA9ICQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKSk7CiAgICAgICAgICAgIHRkLmFkZENsYXNzKCdqcXBsb3QtdGFibGUtbGVnZW5kIGpxcGxvdC10YWJsZS1sZWdlbmQtbGFiZWwnKTsKICAgICAgICAgICAgdGQuY3NzKCdwYWRkaW5nVG9wJywgcnMpOwogICAgICAgICAgICB0ci5hcHBlbmQodGQpOwoKICAgICAgICAgICAgLy8gZWxlbSA9ICQoJzx0ZCBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9InBhZGRpbmctdG9wOicrcnMrJzsiPjwvdGQ+Jyk7CiAgICAgICAgICAgIC8vIGVsZW0uYXBwZW5kVG8odHIpOwogICAgICAgICAgICBpZiAodGhpcy5lc2NhcGVIdG1sKSB7CiAgICAgICAgICAgICAgICB0ZC50ZXh0KGxhYmVsKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHRkLmh0bWwobGFiZWwpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRkID0gbnVsbDsKICAgICAgICBkaXYwID0gbnVsbDsKICAgICAgICBkaXYxID0gbnVsbDsKICAgICAgICB0ciA9IG51bGw7CiAgICAgICAgZWxlbSA9IG51bGw7CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBsZWdlbmQKICAgICQuanFwbG90LlRhYmxlTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbigpIHsKICAgICAgICBpZiAodGhpcy5fZWxlbSkgewogICAgICAgICAgICB0aGlzLl9lbGVtLmVtcHR5Rm9yY2UoKTsKICAgICAgICAgICAgdGhpcy5fZWxlbSA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAgICAgICAgIHZhciBzZXJpZXMgPSB0aGlzLl9zZXJpZXM7CiAgICAgICAgICAgIC8vIG1ha2UgYSB0YWJsZS4gIG9uZSBsaW5lIGxhYmVsIHBlciByb3cuCiAgICAgICAgICAgIHZhciBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKTsKICAgICAgICAgICAgdGhpcy5fZWxlbSA9ICQoZWxlbSk7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uYWRkQ2xhc3MoJ2pxcGxvdC10YWJsZS1sZWdlbmQnKTsKCiAgICAgICAgICAgIHZhciBzcyA9IHtwb3NpdGlvbjonYWJzb2x1dGUnfTsKICAgICAgICAgICAgaWYgKHRoaXMuYmFja2dyb3VuZCkgewogICAgICAgICAgICAgICAgc3NbJ2JhY2tncm91bmQnXSA9IHRoaXMuYmFja2dyb3VuZDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodGhpcy5ib3JkZXIpIHsKICAgICAgICAgICAgICAgIHNzWydib3JkZXInXSA9IHRoaXMuYm9yZGVyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0aGlzLmZvbnRTaXplKSB7CiAgICAgICAgICAgICAgICBzc1snZm9udFNpemUnXSA9IHRoaXMuZm9udFNpemU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMuZm9udEZhbWlseSkgewogICAgICAgICAgICAgICAgc3NbJ2ZvbnRGYW1pbHknXSA9IHRoaXMuZm9udEZhbWlseTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodGhpcy50ZXh0Q29sb3IpIHsKICAgICAgICAgICAgICAgIHNzWyd0ZXh0Q29sb3InXSA9IHRoaXMudGV4dENvbG9yOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0aGlzLm1hcmdpblRvcCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBzc1snbWFyZ2luVG9wJ10gPSB0aGlzLm1hcmdpblRvcDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodGhpcy5tYXJnaW5Cb3R0b20gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgc3NbJ21hcmdpbkJvdHRvbSddID0gdGhpcy5tYXJnaW5Cb3R0b207CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMubWFyZ2luTGVmdCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBzc1snbWFyZ2luTGVmdCddID0gdGhpcy5tYXJnaW5MZWZ0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0aGlzLm1hcmdpblJpZ2h0ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHNzWydtYXJnaW5SaWdodCddID0gdGhpcy5tYXJnaW5SaWdodDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgdmFyIHBhZCA9IGZhbHNlLCAKICAgICAgICAgICAgICAgIHJldmVyc2UgPSBmYWxzZSwKICAgICAgICAgICAgICAgIHM7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpPCBzZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHMgPSBzZXJpZXNbaV07CiAgICAgICAgICAgICAgICBpZiAocy5fc3RhY2sgfHwgcy5yZW5kZXJlci5jb25zdHJ1Y3RvciA9PSAkLmpxcGxvdC5CZXppZXJDdXJ2ZVJlbmRlcmVyKXsKICAgICAgICAgICAgICAgICAgICByZXZlcnNlID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChzLnNob3cgJiYgcy5zaG93TGFiZWwpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbHQgPSB0aGlzLmxhYmVsc1tpXSB8fCBzLmxhYmVsLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGx0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb2xvciA9IHMuY29sb3I7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXZlcnNlICYmIGkgPCBzZXJpZXMubGVuZ3RoIC0gMSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJldmVyc2UgJiYgaSA9PSBzZXJpZXMubGVuZ3RoIC0gMSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZHJvdy5jYWxsKHRoaXMsIGx0LCBjb2xvciwgcGFkLCByZXZlcnNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gbGV0IHBsdWdpbnMgYWRkIG1vcmUgcm93cyB0byBsZWdlbmQuICBVc2VkIGJ5IHRyZW5kIGxpbmUgcGx1Z2luLgogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MDsgajwkLmpxcGxvdC5hZGRMZWdlbmRSb3dIb29rcy5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbSA9ICQuanFwbG90LmFkZExlZ2VuZFJvd0hvb2tzW2pdLmNhbGwodGhpcywgcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZHJvdy5jYWxsKHRoaXMsIGl0ZW0ubGFiZWwsIGl0ZW0uY29sb3IsIHBhZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBsdCA9IG51bGw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW07CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5wYWNrID0gZnVuY3Rpb24ob2Zmc2V0cykgewogICAgICAgIGlmICh0aGlzLnNob3cpIHsgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLnBsYWNlbWVudCA9PSAnaW5zaWRlR3JpZCcpIHsKICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5sb2NhdGlvbikgewogICAgICAgICAgICAgICAgICAgIGNhc2UgJ253JzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBvZmZzZXRzLmxlZnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gb2Zmc2V0cy50b3A7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCdsZWZ0JywgYSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCd0b3AnLCBiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbic6CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gKG9mZnNldHMubGVmdCArICh0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIG9mZnNldHMucmlnaHQpKS8yIC0gdGhpcy5nZXRXaWR0aCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gb2Zmc2V0cy50b3A7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCdsZWZ0JywgYSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCd0b3AnLCBiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmUnOgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG9mZnNldHMucmlnaHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gb2Zmc2V0cy50b3A7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtyaWdodDphLCB0b3A6Yn0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdlJzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBvZmZzZXRzLnJpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IChvZmZzZXRzLnRvcCArICh0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQgLSBvZmZzZXRzLmJvdHRvbSkpLzIgLSB0aGlzLmdldEhlaWdodCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtyaWdodDphLCB0b3A6Yn0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdzZSc6CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gb2Zmc2V0cy5yaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBvZmZzZXRzLmJvdHRvbTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe3JpZ2h0OmEsIGJvdHRvbTpifSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IChvZmZzZXRzLmxlZnQgKyAodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBvZmZzZXRzLnJpZ2h0KSkvMiAtIHRoaXMuZ2V0V2lkdGgoKS8yOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IG9mZnNldHMuYm90dG9tOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7bGVmdDphLCBib3R0b206Yn0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdzdyc6CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gb2Zmc2V0cy5sZWZ0OwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IG9mZnNldHMuYm90dG9tOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7bGVmdDphLCBib3R0b206Yn0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICd3JzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBvZmZzZXRzLmxlZnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gKG9mZnNldHMudG9wICsgKHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIG9mZnNldHMuYm90dG9tKSkvMiAtIHRoaXMuZ2V0SGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe2xlZnQ6YSwgdG9wOmJ9KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogIC8vIHNhbWUgYXMgJ3NlJwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG9mZnNldHMucmlnaHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gb2Zmc2V0cy5ib3R0b207CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtyaWdodDphLCBib3R0b206Yn0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMucGxhY2VtZW50ID09ICdvdXRzaWRlJyl7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubG9jYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICdudyc6CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBvZmZzZXRzLmxlZnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gb2Zmc2V0cy50b3A7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCdyaWdodCcsIGEpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcygndG9wJywgYik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ24nOgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IChvZmZzZXRzLmxlZnQgKyAodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBvZmZzZXRzLnJpZ2h0KSkvMiAtIHRoaXMuZ2V0V2lkdGgoKS8yOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIG9mZnNldHMudG9wOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcygnbGVmdCcsIGEpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcygnYm90dG9tJywgYik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ25lJzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIG9mZnNldHMucmlnaHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gb2Zmc2V0cy50b3A7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtsZWZ0OmEsIHRvcDpifSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2UnOgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoIC0gb2Zmc2V0cy5yaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSAob2Zmc2V0cy50b3AgKyAodGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0IC0gb2Zmc2V0cy5ib3R0b20pKS8yIC0gdGhpcy5nZXRIZWlnaHQoKS8yOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7bGVmdDphLCB0b3A6Yn0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdzZSc6CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBvZmZzZXRzLnJpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IG9mZnNldHMuYm90dG9tOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7bGVmdDphLCBib3R0b206Yn0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSAob2Zmc2V0cy5sZWZ0ICsgKHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoIC0gb2Zmc2V0cy5yaWdodCkpLzIgLSB0aGlzLmdldFdpZHRoKCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSB0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQgLSBvZmZzZXRzLmJvdHRvbTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe2xlZnQ6YSwgdG9wOmJ9KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3cnOgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoIC0gb2Zmc2V0cy5sZWZ0OwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IG9mZnNldHMuYm90dG9tOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6YSwgYm90dG9tOmJ9KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAndyc6CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBvZmZzZXRzLmxlZnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gKG9mZnNldHMudG9wICsgKHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIG9mZnNldHMuYm90dG9tKSkvMiAtIHRoaXMuZ2V0SGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe3JpZ2h0OmEsIHRvcDpifSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICAvLyBzYW1lIGFzICdzZScKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBvZmZzZXRzLnJpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IG9mZnNldHMuYm90dG9tOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6YSwgYm90dG9tOmJ9KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubG9jYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICdudyc6CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtsZWZ0OjAsIHRvcDpvZmZzZXRzLnRvcH0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICduJzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSAob2Zmc2V0cy5sZWZ0ICsgKHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoIC0gb2Zmc2V0cy5yaWdodCkpLzIgLSB0aGlzLmdldFdpZHRoKCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe2xlZnQ6IGEsIHRvcDpvZmZzZXRzLnRvcH0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICduZSc6CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtyaWdodDowLCB0b3A6b2Zmc2V0cy50b3B9KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZSc6CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gKG9mZnNldHMudG9wICsgKHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIG9mZnNldHMuYm90dG9tKSkvMiAtIHRoaXMuZ2V0SGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe3JpZ2h0Om9mZnNldHMucmlnaHQsIHRvcDpifSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NlJzoKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe3JpZ2h0Om9mZnNldHMucmlnaHQsIGJvdHRvbTpvZmZzZXRzLmJvdHRvbX0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSAob2Zmc2V0cy5sZWZ0ICsgKHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoIC0gb2Zmc2V0cy5yaWdodCkpLzIgLSB0aGlzLmdldFdpZHRoKCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe2xlZnQ6IGEsIGJvdHRvbTpvZmZzZXRzLmJvdHRvbX0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdzdyc6CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtsZWZ0Om9mZnNldHMubGVmdCwgYm90dG9tOm9mZnNldHMuYm90dG9tfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3cnOgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IChvZmZzZXRzLnRvcCArICh0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQgLSBvZmZzZXRzLmJvdHRvbSkpLzIgLSB0aGlzLmdldEhlaWdodCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtsZWZ0Om9mZnNldHMubGVmdCwgdG9wOmJ9KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogIC8vIHNhbWUgYXMgJ3NlJwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6b2Zmc2V0cy5yaWdodCwgYm90dG9tOm9mZnNldHMuYm90dG9tfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSAKICAgIH07CgogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuVGhlbWVFbmdpbmUKICAgICAqIFRoZW1lIEVuZ2luZSBwcm92aWRlcyBhIHByb2dyYW1hdGljIHdheSB0byBjaGFuZ2Ugc29tZSBvZiB0aGUgIG1vcmUKICAgICAqIGNvbW1vbiBqcXBsb3Qgc3R5bGluZyBvcHRpb25zIHN1Y2ggYXMgZm9udHMsIGNvbG9ycyBhbmQgZ3JpZCBvcHRpb25zLgogICAgICogQSB0aGVtZSBlbmdpbmUgaW5zdGFuY2UgaXMgY3JlYXRlZCB3aXRoIGVhY2ggcGxvdC4gIFRoZSB0aGVtZSBlbmdpbmUKICAgICAqIG1hbmFnZXMgYSBjb2xsZWN0aW9uIG9mIHRoZW1lcyB3aGljaCBjYW4gYmUgbW9kaWZpZWQsIGFkZGVkIHRvLCBvciAKICAgICAqIGFwcGxpZWQgdG8gdGhlIHBsb3QuCiAgICAgKiAKICAgICAqIFRoZSB0aGVtZUVuZ2luZSBjbGFzcyBpcyBub3QgaW5zdGFudGlhdGVkIGRpcmVjdGx5LgogICAgICogV2hlbiBhIHBsb3QgaXMgaW5pdGlhbGl6ZWQsIHRoZSBjdXJyZW50IHBsb3Qgb3B0aW9ucyBhcmUgc2Nhbm5lZAogICAgICogYW4gYSBkZWZhdWx0IHRoZW1lIG5hbWVkICJEZWZhdWx0IiBpcyBjcmVhdGVkLiAgVGhpcyB0aGVtZSBpcwogICAgICogdXNlZCBhcyB0aGUgYmFzaXMgZm9yIG90aGVyIHRoZW1lcyBhZGRlZCB0byB0aGUgdGhlbWUgZW5naW5lIGFuZAogICAgICogaXMgYWx3YXlzIGF2YWlsYWJsZS4KICAgICAqIAogICAgICogQSB0aGVtZSBpcyBhIHNpbXBsZSBqYXZhc2NyaXB0IG9iamVjdCB3aXRoIHN0eWxpbmcgcGFyYW1ldGVycyBmb3IKICAgICAqIHZhcmlvdXMgZW50aXRpZXMgb2YgdGhlIHBsb3QuICBBIHRoZW1lIGhhcyB0aGUgZm9ybToKICAgICAqIAogICAgICogCiAgICAgKiA+IHsKICAgICAqID4gICAgIF9uYW1lOmYgIkRlZmF1bHQiLAogICAgICogPiAgICAgdGFyZ2V0OiB7CiAgICAgKiA+ICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAidHJhbnNwYXJlbnQiCiAgICAgKiA+ICAgICB9LAogICAgICogPiAgICAgbGVnZW5kOiB7CiAgICAgKiA+ICAgICAgICAgdGV4dENvbG9yOiBudWxsLAogICAgICogPiAgICAgICAgIGZvbnRGYW1pbHk6IG51bGwsCiAgICAgKiA+ICAgICAgICAgZm9udFNpemU6IG51bGwsCiAgICAgKiA+ICAgICAgICAgYm9yZGVyOiBudWxsLAogICAgICogPiAgICAgICAgIGJhY2tncm91bmQ6IG51bGwKICAgICAqID4gICAgIH0sCiAgICAgKiA+ICAgICB0aXRsZTogewogICAgICogPiAgICAgICAgIHRleHRDb2xvcjogInJnYigxMDIsIDEwMiwgMTAyKSIsCiAgICAgKiA+ICAgICAgICAgZm9udEZhbWlseTogIidUcmVidWNoZXQgTVMnLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmIiwKICAgICAqID4gICAgICAgICBmb250U2l6ZTogIjE5LjJweCIsCiAgICAgKiA+ICAgICAgICAgdGV4dEFsaWduOiAiY2VudGVyIgogICAgICogPiAgICAgfSwKICAgICAqID4gICAgIHNlcmllc1N0eWxlczoge30sCiAgICAgKiA+ICAgICBzZXJpZXM6IFt7CiAgICAgKiA+ICAgICAgICAgY29sb3I6ICIjNGJiMmM1IiwKICAgICAqID4gICAgICAgICBsaW5lV2lkdGg6IDIuNSwKICAgICAqID4gICAgICAgICBsaW5lUGF0dGVybjogInNvbGlkIiwKICAgICAqID4gICAgICAgICBzaGFkb3c6IHRydWUsCiAgICAgKiA+ICAgICAgICAgZmlsbENvbG9yOiAiIzRiYjJjNSIsCiAgICAgKiA+ICAgICAgICAgc2hvd01hcmtlcjogdHJ1ZSwKICAgICAqID4gICAgICAgICBtYXJrZXJPcHRpb25zOiB7CiAgICAgKiA+ICAgICAgICAgICAgIGNvbG9yOiAiIzRiYjJjNSIsCiAgICAgKiA+ICAgICAgICAgICAgIHNob3c6IHRydWUsCiAgICAgKiA+ICAgICAgICAgICAgIHN0eWxlOiAnZmlsbGVkQ2lyY2xlJywKICAgICAqID4gICAgICAgICAgICAgbGluZVdpZHRoOiAxLjUsCiAgICAgKiA+ICAgICAgICAgICAgIHNpemU6IDQsCiAgICAgKiA+ICAgICAgICAgICAgIHNoYWRvdzogdHJ1ZQogICAgICogPiAgICAgICAgIH0KICAgICAqID4gICAgIH1dLAogICAgICogPiAgICAgZ3JpZDogewogICAgICogPiAgICAgICAgIGRyYXdHcmlkbGluZXM6IHRydWUsCiAgICAgKiA+ICAgICAgICAgZ3JpZExpbmVDb2xvcjogIiNjY2NjY2MiLAogICAgICogPiAgICAgICAgIGdyaWRMaW5lV2lkdGg6IDEsCiAgICAgKiA+ICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAiI2ZmZmRmNiIsCiAgICAgKiA+ICAgICAgICAgYm9yZGVyQ29sb3I6ICIjOTk5OTk5IiwKICAgICAqID4gICAgICAgICBib3JkZXJXaWR0aDogMiwKICAgICAqID4gICAgICAgICBzaGFkb3c6IHRydWUKICAgICAqID4gICAgIH0sCiAgICAgKiA+ICAgICBheGVzU3R5bGVzOiB7CiAgICAgKiA+ICAgICAgICAgbGFiZWw6IHt9LAogICAgICogPiAgICAgICAgIHRpY2tzOiB7fQogICAgICogPiAgICAgfSwKICAgICAqID4gICAgIGF4ZXM6IHsKICAgICAqID4gICAgICAgICB4YXhpczogewogICAgICogPiAgICAgICAgICAgICBib3JkZXJDb2xvcjogIiM5OTk5OTkiLAogICAgICogPiAgICAgICAgICAgICBib3JkZXJXaWR0aDogMiwKICAgICAqID4gICAgICAgICAgICAgdGlja3M6IHsKICAgICAqID4gICAgICAgICAgICAgICAgIHNob3c6IHRydWUsCiAgICAgKiA+ICAgICAgICAgICAgICAgICBzaG93R3JpZGxpbmU6IHRydWUsCiAgICAgKiA+ICAgICAgICAgICAgICAgICBzaG93TGFiZWw6IHRydWUsCiAgICAgKiA+ICAgICAgICAgICAgICAgICBzaG93TWFyazogdHJ1ZSwKICAgICAqID4gICAgICAgICAgICAgICAgIHNpemU6IDQsCiAgICAgKiA+ICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I6ICIiLAogICAgICogPiAgICAgICAgICAgICAgICAgd2hpdGVTcGFjZTogIm5vd3JhcCIsCiAgICAgKiA+ICAgICAgICAgICAgICAgICBmb250U2l6ZTogIjEycHgiLAogICAgICogPiAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogIidUcmVidWNoZXQgTVMnLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmIgogICAgICogPiAgICAgICAgICAgICB9LAogICAgICogPiAgICAgICAgICAgICBsYWJlbDogewogICAgICogPiAgICAgICAgICAgICAgICAgdGV4dENvbG9yOiAicmdiKDEwMiwgMTAyLCAxMDIpIiwKICAgICAqID4gICAgICAgICAgICAgICAgIHdoaXRlU3BhY2U6ICJub3JtYWwiLAogICAgICogPiAgICAgICAgICAgICAgICAgZm9udFNpemU6ICIxNC42NjY3cHgiLAogICAgICogPiAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogIidUcmVidWNoZXQgTVMnLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmIiwKICAgICAqID4gICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICI0MDAiCiAgICAgKiA+ICAgICAgICAgICAgIH0KICAgICAqID4gICAgICAgICB9LAogICAgICogPiAgICAgICAgIHlheGlzOiB7CiAgICAgKiA+ICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAiIzk5OTk5OSIsCiAgICAgKiA+ICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAyLAogICAgICogPiAgICAgICAgICAgICB0aWNrczogewogICAgICogPiAgICAgICAgICAgICAgICAgc2hvdzogdHJ1ZSwKICAgICAqID4gICAgICAgICAgICAgICAgIHNob3dHcmlkbGluZTogdHJ1ZSwKICAgICAqID4gICAgICAgICAgICAgICAgIHNob3dMYWJlbDogdHJ1ZSwKICAgICAqID4gICAgICAgICAgICAgICAgIHNob3dNYXJrOiB0cnVlLAogICAgICogPiAgICAgICAgICAgICAgICAgc2l6ZTogNCwKICAgICAqID4gICAgICAgICAgICAgICAgIHRleHRDb2xvcjogIiIsCiAgICAgKiA+ICAgICAgICAgICAgICAgICB3aGl0ZVNwYWNlOiAibm93cmFwIiwKICAgICAqID4gICAgICAgICAgICAgICAgIGZvbnRTaXplOiAiMTJweCIsCiAgICAgKiA+ICAgICAgICAgICAgICAgICBmb250RmFtaWx5OiAiJ1RyZWJ1Y2hldCBNUycsQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYiCiAgICAgKiA+ICAgICAgICAgICAgIH0sCiAgICAgKiA+ICAgICAgICAgICAgIGxhYmVsOiB7CiAgICAgKiA+ICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I6IG51bGwsCiAgICAgKiA+ICAgICAgICAgICAgICAgICB3aGl0ZVNwYWNlOiBudWxsLAogICAgICogPiAgICAgICAgICAgICAgICAgZm9udFNpemU6IG51bGwsCiAgICAgKiA+ICAgICAgICAgICAgICAgICBmb250RmFtaWx5OiBudWxsLAogICAgICogPiAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogbnVsbAogICAgICogPiAgICAgICAgICAgICB9CiAgICAgKiA+ICAgICAgICAgfSwKICAgICAqID4gICAgICAgICB4MmF4aXM6IHsuLi4KICAgICAqID4gICAgICAgICB9LAogICAgICogPiAgICAgICAgIC4uLgogICAgICogPiAgICAgICAgIHk5YXhpczogey4uLgogICAgICogPiAgICAgICAgIH0KICAgICAqID4gICAgIH0KICAgICAqID4gfQogICAgICogCiAgICAgKiAic2VyaWVzU3R5bGVzIiBpcyBhIHN0eWxlIG9iamVjdCB0aGF0IHdpbGwgYmUgYXBwbGllZCB0byBhbGwgc2VyaWVzIGluIHRoZSBwbG90LgogICAgICogSXQgd2lsbCBmb3JjaWJseSBvdmVycmlkZSBhbnkgc3R5bGVzIGFwcGxpZWQgb24gdGhlIGluZGl2aWR1YWwgc2VyaWVzLiAgImF4ZXNTdHlsZXMiIGlzCiAgICAgKiBhIHN0eWxlIG9iamVjdCB0aGF0IHdpbGwgYmUgYXBwbGllZCB0byBhbGwgYXhlcyBpbiB0aGUgcGxvdC4gIEl0IHdpbGwgYWxzbyBmb3JjaWJseQogICAgICogb3ZlcnJpZGUgYW55IHN0eWxlcyBvbiB0aGUgaW5kaXZpZHVhbCBheGVzLgogICAgICogCiAgICAgKiBUaGUgZXhhbXBsZSBzaG93biBhYm92ZSBoYXMgc2VyaWVzIG9wdGlvbnMgZm9yIGEgbGluZSBzZXJpZXMuICBPcHRpb25zIGZvciBvdGhlcgogICAgICogc2VyaWVzIHR5cGVzIGFyZSBzaG93biBiZWxvdzoKICAgICAqIAogICAgICogQmFyIFNlcmllczoKICAgICAqIAogICAgICogPiB7CiAgICAgKiA+ICAgICBjb2xvcjogIiM0YmIyYzUiLAogICAgICogPiAgICAgc2VyaWVzQ29sb3JzOiBbIiM0YmIyYzUiLCAiI0VBQTIyOCIsICIjYzViNDdmIiwgIiM1Nzk1NzUiLCAiIzgzOTU1NyIsICIjOTU4YzEyIiwgIiM5NTM1NzkiLCAiIzRiNWRlNCIsICIjZDhiODNmIiwgIiNmZjU4MDAiLCAiIzAwODVjYyIsICIjYzc0N2EzIiwgIiNjZGRmNTQiLCAiI0ZCRDE3OCIsICIjMjZCNEUzIiwgIiNiZDcwYzciXSwKICAgICAqID4gICAgIGxpbmVXaWR0aDogMi41LAogICAgICogPiAgICAgc2hhZG93OiB0cnVlLAogICAgICogPiAgICAgYmFyUGFkZGluZzogMiwKICAgICAqID4gICAgIGJhck1hcmdpbjogMTAsCiAgICAgKiA+ICAgICBiYXJXaWR0aDogMTUuMDkzNzUsCiAgICAgKiA+ICAgICBoaWdobGlnaHRDb2xvcnM6IFsicmdiKDEyOSwyMDEsMjE0KSIsICJyZ2IoMTI5LDIwMSwyMTQpIiwgInJnYigxMjksMjAxLDIxNCkiLCAicmdiKDEyOSwyMDEsMjE0KSIsICJyZ2IoMTI5LDIwMSwyMTQpIiwgInJnYigxMjksMjAxLDIxNCkiLCAicmdiKDEyOSwyMDEsMjE0KSIsICJyZ2IoMTI5LDIwMSwyMTQpIl0KICAgICAqID4gfQogICAgICogCiAgICAgKiBQaWUgU2VyaWVzOgogICAgICogCiAgICAgKiA+IHsKICAgICAqID4gICAgIHNlcmllc0NvbG9yczogWyIjNGJiMmM1IiwgIiNFQUEyMjgiLCAiI2M1YjQ3ZiIsICIjNTc5NTc1IiwgIiM4Mzk1NTciLCAiIzk1OGMxMiIsICIjOTUzNTc5IiwgIiM0YjVkZTQiLCAiI2Q4YjgzZiIsICIjZmY1ODAwIiwgIiMwMDg1Y2MiLCAiI2M3NDdhMyIsICIjY2RkZjU0IiwgIiNGQkQxNzgiLCAiIzI2QjRFMyIsICIjYmQ3MGM3Il0sCiAgICAgKiA+ICAgICBwYWRkaW5nOiAyMCwKICAgICAqID4gICAgIHNsaWNlTWFyZ2luOiAwLAogICAgICogPiAgICAgZmlsbDogdHJ1ZSwKICAgICAqID4gICAgIHNoYWRvdzogdHJ1ZSwKICAgICAqID4gICAgIHN0YXJ0QW5nbGU6IDAsCiAgICAgKiA+ICAgICBsaW5lV2lkdGg6IDIuNSwKICAgICAqID4gICAgIGhpZ2hsaWdodENvbG9yczogWyJyZ2IoMTI5LDIwMSwyMTQpIiwgInJnYigyNDAsMTg5LDEwNCkiLCAicmdiKDIxNCwyMDIsMTY1KSIsICJyZ2IoMTM3LDE4MCwxNTgpIiwgInJnYigxNjgsMTgwLDEzNykiLCAicmdiKDE4MCwxNzQsODkpIiwgInJnYigxODAsMTEzLDE2MSkiLCAicmdiKDEyOSwxNDEsMjM2KSIsICJyZ2IoMjI3LDIwNSwxMjApIiwgInJnYigyNTUsMTM4LDc2KSIsICJyZ2IoNzYsMTY5LDIxOSkiLCAicmdiKDIxNSwxMjYsMTkwKSIsICJyZ2IoMjIwLDIzMiwxMzUpIiwgInJnYigyMDAsMTY3LDk2KSIsICJyZ2IoMTAzLDIwMiwyMzUpIiwgInJnYigyMDgsMTU0LDIxNSkiXQogICAgICogPiB9CiAgICAgKiAKICAgICAqIEZ1bm5lbCBTZXJpZXM6CiAgICAgKiAKICAgICAqID4gewogICAgICogPiAgICAgY29sb3I6ICIjNGJiMmM1IiwKICAgICAqID4gICAgIGxpbmVXaWR0aDogMiwKICAgICAqID4gICAgIHNoYWRvdzogdHJ1ZSwKICAgICAqID4gICAgIHBhZGRpbmc6IHsKICAgICAqID4gICAgICAgICB0b3A6IDIwLAogICAgICogPiAgICAgICAgIHJpZ2h0OiAyMCwKICAgICAqID4gICAgICAgICBib3R0b206IDIwLAogICAgICogPiAgICAgICAgIGxlZnQ6IDIwCiAgICAgKiA+ICAgICB9LAogICAgICogPiAgICAgc2VjdGlvbk1hcmdpbjogNiwKICAgICAqID4gICAgIHNlcmllc0NvbG9yczogWyIjNGJiMmM1IiwgIiNFQUEyMjgiLCAiI2M1YjQ3ZiIsICIjNTc5NTc1IiwgIiM4Mzk1NTciLCAiIzk1OGMxMiIsICIjOTUzNTc5IiwgIiM0YjVkZTQiLCAiI2Q4YjgzZiIsICIjZmY1ODAwIiwgIiMwMDg1Y2MiLCAiI2M3NDdhMyIsICIjY2RkZjU0IiwgIiNGQkQxNzgiLCAiIzI2QjRFMyIsICIjYmQ3MGM3Il0sCiAgICAgKiA+ICAgICBoaWdobGlnaHRDb2xvcnM6IFsicmdiKDE0NywyMDgsMjIwKSIsICJyZ2IoMjQyLDE5OSwxMjYpIiwgInJnYigyMjAsMjEwLDE3OCkiLCAicmdiKDE1NCwxOTEsMTcyKSIsICJyZ2IoMTgwLDE5MSwxNTQpIiwgInJnYigxOTEsMTg2LDExMikiLCAicmdiKDE5MSwxMzMsMTc0KSIsICJyZ2IoMTQ3LDE1NywyMzgpIiwgInJnYigyMzEsMjEyLDEzOSkiLCAicmdiKDI1NSwxNTQsMTAyKSIsICJyZ2IoMTAyLDE4MSwyMjQpIiwgInJnYigyMjEsMTQ0LDE5OSkiLCAicmdiKDIyNSwyMzUsMTUyKSIsICJyZ2IoMjAwLDE2Nyw5NikiLCAicmdiKDEyNCwyMTAsMjM4KSIsICJyZ2IoMjE1LDE2OSwyMjEpIl0KICAgICAqID4gfQogICAgICogCiAgICAgKi8KICAgICQuanFwbG90LlRoZW1lRW5naW5lID0gZnVuY3Rpb24oKXsKICAgICAgICAvLyBHcm91cDogUHJvcGVydGllcwogICAgICAgIC8vCiAgICAgICAgLy8gcHJvcDogdGhlbWVzCiAgICAgICAgLy8gaGFzaCBvZiB0aGVtZXMgbWFuYWdlZCBieSB0aGUgdGhlbWUgZW5naW5lLiAgCiAgICAgICAgLy8gSW5kZXhlZCBieSB0aGVtZSBuYW1lLgogICAgICAgIHRoaXMudGhlbWVzID0ge307CiAgICAgICAgLy8gcHJvcDogYWN0aXZlVGhlbWUKICAgICAgICAvLyBQb2ludGVyIHRvIGN1cnJlbnRseSBhY3RpdmUgdGhlbWUKICAgICAgICB0aGlzLmFjdGl2ZVRoZW1lPW51bGw7CiAgICAgICAgCiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBwbG90CiAgICAkLmpxcGxvdC5UaGVtZUVuZ2luZS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIC8vIGdldCB0aGUgRGVmYXVsdCB0aGVtZSBmcm9tIHRoZSBjdXJyZW50IHBsb3Qgc2V0dGluZ3MuCiAgICAgICAgdmFyIHRoID0gbmV3ICQuanFwbG90LlRoZW1lKHtfbmFtZTonRGVmYXVsdCd9KTsKICAgICAgICB2YXIgbiwgaSwgbm47CiAgICAgICAgCiAgICAgICAgZm9yIChuIGluIHRoLnRhcmdldCkgewogICAgICAgICAgICBpZiAobiA9PSAidGV4dENvbG9yIikgewogICAgICAgICAgICAgICAgdGgudGFyZ2V0W25dID0gdGhpcy50YXJnZXQuY3NzKCdjb2xvcicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGgudGFyZ2V0W25dID0gdGhpcy50YXJnZXQuY3NzKG4pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICh0aGlzLnRpdGxlLnNob3cgJiYgdGhpcy50aXRsZS5fZWxlbSkgewogICAgICAgICAgICBmb3IgKG4gaW4gdGgudGl0bGUpIHsKICAgICAgICAgICAgICAgIGlmIChuID09ICJ0ZXh0Q29sb3IiKSB7CiAgICAgICAgICAgICAgICAgICAgdGgudGl0bGVbbl0gPSB0aGlzLnRpdGxlLl9lbGVtLmNzcygnY29sb3InKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHRoLnRpdGxlW25dID0gdGhpcy50aXRsZS5fZWxlbS5jc3Mobik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZm9yIChuIGluIHRoLmdyaWQpIHsKICAgICAgICAgICAgdGguZ3JpZFtuXSA9IHRoaXMuZ3JpZFtuXTsKICAgICAgICB9CiAgICAgICAgaWYgKHRoLmdyaWQuYmFja2dyb3VuZENvbG9yID09IG51bGwgJiYgdGhpcy5ncmlkLmJhY2tncm91bmQgIT0gbnVsbCkgewogICAgICAgICAgICB0aC5ncmlkLmJhY2tncm91bmRDb2xvciA9IHRoaXMuZ3JpZC5iYWNrZ3JvdW5kOwogICAgICAgIH0KICAgICAgICBpZiAodGhpcy5sZWdlbmQuc2hvdyAmJiB0aGlzLmxlZ2VuZC5fZWxlbSkgewogICAgICAgICAgICBmb3IgKG4gaW4gdGgubGVnZW5kKSB7CiAgICAgICAgICAgICAgICBpZiAobiA9PSAndGV4dENvbG9yJykgewogICAgICAgICAgICAgICAgICAgIHRoLmxlZ2VuZFtuXSA9IHRoaXMubGVnZW5kLl9lbGVtLmNzcygnY29sb3InKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHRoLmxlZ2VuZFtuXSA9IHRoaXMubGVnZW5kLl9lbGVtLmNzcyhuKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB2YXIgczsKICAgICAgICAKICAgICAgICBmb3IgKGk9MDsgaTx0aGlzLnNlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBzID0gdGhpcy5zZXJpZXNbaV07CiAgICAgICAgICAgIGlmIChzLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09ICQuanFwbG90LkxpbmVSZW5kZXJlcikgewogICAgICAgICAgICAgICAgdGguc2VyaWVzLnB1c2gobmV3IExpbmVTZXJpZXNQcm9wZXJ0aWVzKCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHMucmVuZGVyZXIuY29uc3RydWN0b3IgPT0gJC5qcXBsb3QuQmFyUmVuZGVyZXIpIHsKICAgICAgICAgICAgICAgIHRoLnNlcmllcy5wdXNoKG5ldyBCYXJTZXJpZXNQcm9wZXJ0aWVzKCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHMucmVuZGVyZXIuY29uc3RydWN0b3IgPT0gJC5qcXBsb3QuUGllUmVuZGVyZXIpIHsKICAgICAgICAgICAgICAgIHRoLnNlcmllcy5wdXNoKG5ldyBQaWVTZXJpZXNQcm9wZXJ0aWVzKCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHMucmVuZGVyZXIuY29uc3RydWN0b3IgPT0gJC5qcXBsb3QuRG9udXRSZW5kZXJlcikgewogICAgICAgICAgICAgICAgdGguc2VyaWVzLnB1c2gobmV3IERvbnV0U2VyaWVzUHJvcGVydGllcygpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChzLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09ICQuanFwbG90LkZ1bm5lbFJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICB0aC5zZXJpZXMucHVzaChuZXcgRnVubmVsU2VyaWVzUHJvcGVydGllcygpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChzLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09ICQuanFwbG90Lk1ldGVyR2F1Z2VSZW5kZXJlcikgewogICAgICAgICAgICAgICAgdGguc2VyaWVzLnB1c2gobmV3IE1ldGVyU2VyaWVzUHJvcGVydGllcygpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHRoLnNlcmllcy5wdXNoKHt9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IgKG4gaW4gdGguc2VyaWVzW2ldKSB7CiAgICAgICAgICAgICAgICB0aC5zZXJpZXNbaV1bbl0gPSBzW25dOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHZhciBhLCBheDsKICAgICAgICBmb3IgKG4gaW4gdGhpcy5heGVzKSB7CiAgICAgICAgICAgIGF4ID0gdGhpcy5heGVzW25dOwogICAgICAgICAgICBhID0gdGguYXhlc1tuXSA9IG5ldyBBeGlzUHJvcGVydGllcygpOwogICAgICAgICAgICBhLmJvcmRlckNvbG9yID0gYXguYm9yZGVyQ29sb3I7CiAgICAgICAgICAgIGEuYm9yZGVyV2lkdGggPSBheC5ib3JkZXJXaWR0aDsKICAgICAgICAgICAgaWYgKGF4Ll90aWNrcyAmJiBheC5fdGlja3NbMF0pIHsKICAgICAgICAgICAgICAgIGZvciAobm4gaW4gYS50aWNrcykgewogICAgICAgICAgICAgICAgICAgIGlmIChheC5fdGlja3NbMF0uaGFzT3duUHJvcGVydHkobm4pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGEudGlja3Nbbm5dID0gYXguX3RpY2tzWzBdW25uXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXguX3RpY2tzWzBdLl9lbGVtKXsKICAgICAgICAgICAgICAgICAgICAgICAgYS50aWNrc1tubl0gPSBheC5fdGlja3NbMF0uX2VsZW0uY3NzKG5uKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGF4Ll9sYWJlbCAmJiBheC5fbGFiZWwuc2hvdykgewogICAgICAgICAgICAgICAgZm9yIChubiBpbiBhLmxhYmVsKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gYS5sYWJlbFtubl0gPSBheC5fbGFiZWwuX2VsZW0uY3NzKG5uKTsKICAgICAgICAgICAgICAgICAgICBpZiAoYXguX2xhYmVsW25uXSkgewogICAgICAgICAgICAgICAgICAgICAgICBhLmxhYmVsW25uXSA9IGF4Ll9sYWJlbFtubl07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGF4Ll9sYWJlbC5fZWxlbSl7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChubiA9PSAndGV4dENvbG9yJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5sYWJlbFtubl0gPSBheC5fbGFiZWwuX2VsZW0uY3NzKCdjb2xvcicpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5sYWJlbFtubl0gPSBheC5fbGFiZWwuX2VsZW0uY3NzKG5uKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0aGlzLnRoZW1lRW5naW5lLl9hZGQodGgpOwogICAgICAgIHRoaXMudGhlbWVFbmdpbmUuYWN0aXZlVGhlbWUgID0gdGhpcy50aGVtZUVuZ2luZS50aGVtZXNbdGguX25hbWVdOwogICAgfTsKICAgIC8qKgogICAgICogR3JvdXA6IG1ldGhvZHMKICAgICAqIAogICAgICogbWV0aG9kOiBnZXQKICAgICAqIAogICAgICogR2V0IGFuZCByZXR1cm4gdGhlIG5hbWVkIHRoZW1lIG9yIHRoZSBhY3RpdmUgdGhlbWUgaWYgbm8gbmFtZSBnaXZlbi4KICAgICAqIAogICAgICogcGFyYW1ldGVyOgogICAgICogCiAgICAgKiBuYW1lIC0gbmFtZSBvZiB0aGVtZSB0byBnZXQuCiAgICAgKiAKICAgICAqIHJldHVybnM6CiAgICAgKiAKICAgICAqIFRoZW1lIGluc3RhbmNlIG9mIGdpdmVuIG5hbWUuCiAgICAgKi8gICAKICAgICQuanFwbG90LlRoZW1lRW5naW5lLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihuYW1lKSB7CiAgICAgICAgaWYgKCFuYW1lKSB7CiAgICAgICAgICAgIC8vIHJldHVybiB0aGUgYWN0aXZlIHRoZW1lCiAgICAgICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZVRoZW1lOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMudGhlbWVzW25hbWVdOwogICAgICAgIH0KICAgIH07CiAgICAKICAgIGZ1bmN0aW9uIG51bWVyaWNhbE9yZGVyKGEsYikgeyByZXR1cm4gYS1iOyB9CiAgICAKICAgIC8qKgogICAgICogbWV0aG9kOiBnZXRUaGVtZU5hbWVzCiAgICAgKiAKICAgICAqIFJldHVybiB0aGUgbGlzdCBvZiB0aGVtZSBuYW1lcyBpbiB0aGlzIG1hbmFnZXIgaW4gYWxwaGEtbnVtZXJpY2FsIG9yZGVyLgogICAgICogCiAgICAgKiBwYXJhbWV0ZXI6CiAgICAgKiAKICAgICAqIE5vbmUKICAgICAqIAogICAgICogcmV0dXJuczoKICAgICAqIAogICAgICogQSB0aGUgbGlzdCBvZiB0aGVtZSBuYW1lcyBpbiB0aGlzIG1hbmFnZXIgaW4gYWxwaGEtbnVtZXJpY2FsIG9yZGVyLgogICAgICovICAgICAgIAogICAgJC5qcXBsb3QuVGhlbWVFbmdpbmUucHJvdG90eXBlLmdldFRoZW1lTmFtZXMgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgdG4gPSBbXTsKICAgICAgICBmb3IgKHZhciBuIGluIHRoaXMudGhlbWVzKSB7CiAgICAgICAgICAgIHRuLnB1c2gobik7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0bi5zb3J0KG51bWVyaWNhbE9yZGVyKTsKICAgIH07CgogICAgLyoqCiAgICAgKiBtZXRob2Q6IGdldFRoZW1lcwogICAgICogCiAgICAgKiBSZXR1cm4gYSBsaXN0IG9mIHRoZW1lcyBpbiBhbHBoYS1udW1lcmljYWwgb3JkZXIgYnkgbmFtZS4KICAgICAqIAogICAgICogcGFyYW1ldGVyOgogICAgICogCiAgICAgKiBOb25lCiAgICAgKiAKICAgICAqIHJldHVybnM6CiAgICAgKiAKICAgICAqIEEgbGlzdCBvZiB0aGVtZXMgaW4gYWxwaGEtbnVtZXJpY2FsIG9yZGVyIGJ5IG5hbWUuCiAgICAgKi8gCiAgICAkLmpxcGxvdC5UaGVtZUVuZ2luZS5wcm90b3R5cGUuZ2V0VGhlbWVzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIHRuID0gW107CiAgICAgICAgdmFyIHRoZW1lcyA9IFtdOwogICAgICAgIGZvciAodmFyIG4gaW4gdGhpcy50aGVtZXMpIHsKICAgICAgICAgICAgdG4ucHVzaChuKTsKICAgICAgICB9CiAgICAgICAgdG4uc29ydChudW1lcmljYWxPcmRlcik7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRuLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHRoZW1lcy5wdXNoKHRoaXMudGhlbWVzW3RuW2ldXSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGVtZXM7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5UaGVtZUVuZ2luZS5wcm90b3R5cGUuYWN0aXZhdGUgPSBmdW5jdGlvbihwbG90LCBuYW1lKSB7CiAgICAgICAgLy8gc29tZXRpbWVzIG5lZWQgdG8gcmVkcmF3IHdob2xlIHBsb3QuCiAgICAgICAgdmFyIHJlZHJhd1Bsb3QgPSBmYWxzZTsKICAgICAgICBpZiAoIW5hbWUgJiYgdGhpcy5hY3RpdmVUaGVtZSAmJiB0aGlzLmFjdGl2ZVRoZW1lLl9uYW1lKSB7CiAgICAgICAgICAgIG5hbWUgPSB0aGlzLmFjdGl2ZVRoZW1lLl9uYW1lOwogICAgICAgIH0KICAgICAgICBpZiAoIXRoaXMudGhlbWVzLmhhc093blByb3BlcnR5KG5hbWUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTm8gdGhlbWUgb2YgdGhhdCBuYW1lIik7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICB2YXIgdGggPSB0aGlzLnRoZW1lc1tuYW1lXTsKICAgICAgICAgICAgdGhpcy5hY3RpdmVUaGVtZSA9IHRoOwogICAgICAgICAgICB2YXIgdmFsLCBjaGVja0JvcmRlckNvbG9yID0gZmFsc2UsIGNoZWNrQm9yZGVyV2lkdGggPSBmYWxzZTsKICAgICAgICAgICAgdmFyIGFyciA9IFsneGF4aXMnLCAneDJheGlzJywgJ3lheGlzJywgJ3kyYXhpcyddOwogICAgICAgICAgICAKICAgICAgICAgICAgZm9yIChpPTA7IGk8YXJyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgYXggPSBhcnJbaV07CiAgICAgICAgICAgICAgICBpZiAodGguYXhlc1N0eWxlcy5ib3JkZXJDb2xvciAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgcGxvdC5heGVzW2F4XS5ib3JkZXJDb2xvciA9IHRoLmF4ZXNTdHlsZXMuYm9yZGVyQ29sb3I7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodGguYXhlc1N0eWxlcy5ib3JkZXJXaWR0aCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgcGxvdC5heGVzW2F4XS5ib3JkZXJXaWR0aCA9IHRoLmF4ZXNTdHlsZXMuYm9yZGVyV2lkdGg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGZvciAodmFyIGF4bmFtZSBpbiBwbG90LmF4ZXMpIHsKICAgICAgICAgICAgICAgIHZhciBheGlzID0gcGxvdC5heGVzW2F4bmFtZV07CiAgICAgICAgICAgICAgICBpZiAoYXhpcy5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRoYXhpcyA9IHRoLmF4ZXNbYXhuYW1lXSB8fCB7fTsKICAgICAgICAgICAgICAgICAgICB2YXIgdGhheHN0eWxlID0gdGguYXhlc1N0eWxlczsKICAgICAgICAgICAgICAgICAgICB2YXIgdGhheCA9ICQuanFwbG90LmV4dGVuZCh0cnVlLCB7fSwgdGhheGlzLCB0aGF4c3R5bGUpOwogICAgICAgICAgICAgICAgICAgIHZhbCA9ICh0aC5heGVzU3R5bGVzLmJvcmRlckNvbG9yICE9IG51bGwpID8gdGguYXhlc1N0eWxlcy5ib3JkZXJDb2xvciA6IHRoYXguYm9yZGVyQ29sb3I7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXguYm9yZGVyQ29sb3IgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBheGlzLmJvcmRlckNvbG9yID0gdGhheC5ib3JkZXJDb2xvcjsKICAgICAgICAgICAgICAgICAgICAgICAgcmVkcmF3UGxvdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhbCA9ICh0aC5heGVzU3R5bGVzLmJvcmRlcldpZHRoICE9IG51bGwpID8gdGguYXhlc1N0eWxlcy5ib3JkZXJXaWR0aCA6IHRoYXguYm9yZGVyV2lkdGg7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXguYm9yZGVyV2lkdGggIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBheGlzLmJvcmRlcldpZHRoID0gdGhheC5ib3JkZXJXaWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgcmVkcmF3UGxvdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChheGlzLl90aWNrcyAmJiBheGlzLl90aWNrc1swXSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBubiBpbiB0aGF4LnRpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWwgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRoLmF4ZXNTdHlsZXMudGlja3MgJiYgdGguYXhlc1N0eWxlcy50aWNrc1tubl0gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHZhbCA9IHRoLmF4ZXNTdHlsZXMudGlja3Nbbm5dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWxzZSBpZiAodGhheC50aWNrc1tubl0gIT0gbnVsbCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdmFsID0gdGhheC50aWNrc1tubl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IHRoYXgudGlja3Nbbm5dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXhpcy50aWNrT3B0aW9uc1tubl0gPSB2YWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXhpcy5fdGlja3MgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRyYXdQbG90ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoYXhpcy5fbGFiZWwgJiYgYXhpcy5fbGFiZWwuc2hvdykgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBubiBpbiB0aGF4LmxhYmVsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWwgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRoLmF4ZXNTdHlsZXMubGFiZWwgJiYgdGguYXhlc1N0eWxlcy5sYWJlbFtubl0gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHZhbCA9IHRoLmF4ZXNTdHlsZXMubGFiZWxbbm5dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWxzZSBpZiAodGhheC5sYWJlbCAmJiB0aGF4LmxhYmVsW25uXSAhPSBudWxsKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB2YWwgPSB0aGF4LmxhYmVsW25uXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gdGhheC5sYWJlbFtubl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheGlzLmxhYmVsT3B0aW9uc1tubl0gPSB2YWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkcmF3UGxvdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIGZvciAodmFyIG4gaW4gdGguZ3JpZCkgewogICAgICAgICAgICAgICAgaWYgKHRoLmdyaWRbbl0gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHBsb3QuZ3JpZFtuXSA9IHRoLmdyaWRbbl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCFyZWRyYXdQbG90KSB7CiAgICAgICAgICAgICAgICBwbG90LmdyaWQuZHJhdygpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAocGxvdC5sZWdlbmQuc2hvdykgeyAKICAgICAgICAgICAgICAgIGZvciAobiBpbiB0aC5sZWdlbmQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGgubGVnZW5kW25dICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGxvdC5sZWdlbmRbbl0gPSB0aC5sZWdlbmRbbl07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChwbG90LnRpdGxlLnNob3cpIHsKICAgICAgICAgICAgICAgIGZvciAobiBpbiB0aC50aXRsZSkgewogICAgICAgICAgICAgICAgICAgIGlmICh0aC50aXRsZVtuXSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBsb3QudGl0bGVbbl0gPSB0aC50aXRsZVtuXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIHZhciBpOwogICAgICAgICAgICBmb3IgKGk9MDsgaTx0aC5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHZhciBvcHRzID0ge307CiAgICAgICAgICAgICAgICB2YXIgcmVkcmF3U2VyaWVzID0gZmFsc2U7CiAgICAgICAgICAgICAgICBmb3IgKG4gaW4gdGguc2VyaWVzW2ldKSB7CiAgICAgICAgICAgICAgICAgICAgdmFsID0gKHRoLnNlcmllc1N0eWxlc1tuXSAhPSBudWxsKSA/IHRoLnNlcmllc1N0eWxlc1tuXSA6IHRoLnNlcmllc1tpXVtuXTsKICAgICAgICAgICAgICAgICAgICBpZiAodmFsICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgb3B0c1tuXSA9IHZhbDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPT0gJ2NvbG9yJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxvdC5zZXJpZXNbaV0ucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5maWxsU3R5bGUgPSB2YWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbG90LnNlcmllc1tpXS5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLnN0cm9rZVN0eWxlID0gdmFsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxvdC5zZXJpZXNbaV1bbl0gPSB2YWw7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKG4gPT0gJ2xpbmVXaWR0aCcpIHx8IChuID09ICdsaW5lUGF0dGVybicpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbG90LnNlcmllc1tpXS5yZW5kZXJlci5zaGFwZVJlbmRlcmVyW25dID0gdmFsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxvdC5zZXJpZXNbaV1bbl0gPSB2YWw7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobiA9PSAnbWFya2VyT3B0aW9ucycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlIChwbG90LnNlcmllc1tpXS5tYXJrZXJPcHRpb25zLCB2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2UgKHBsb3Quc2VyaWVzW2ldLm1hcmtlclJlbmRlcmVyLCB2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxvdC5zZXJpZXNbaV1bbl0gPSB2YWw7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmVkcmF3UGxvdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAocmVkcmF3UGxvdCkgewogICAgICAgICAgICAgICAgcGxvdC50YXJnZXQuZW1wdHkoKTsKICAgICAgICAgICAgICAgIHBsb3QuZHJhdygpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBmb3IgKG4gaW4gdGgudGFyZ2V0KSB7CiAgICAgICAgICAgICAgICBpZiAodGgudGFyZ2V0W25dICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICBwbG90LnRhcmdldC5jc3MobiwgdGgudGFyZ2V0W25dKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgIH07CiAgICAKICAgICQuanFwbG90LlRoZW1lRW5naW5lLnByb3RvdHlwZS5fYWRkID0gZnVuY3Rpb24odGhlbWUsIG5hbWUpIHsKICAgICAgICBpZiAobmFtZSkgewogICAgICAgICAgICB0aGVtZS5fbmFtZSA9IG5hbWU7CiAgICAgICAgfQogICAgICAgIGlmICghdGhlbWUuX25hbWUpIHsKICAgICAgICAgICAgdGhlbWUuX25hbWUgPSBEYXRlLnBhcnNlKG5ldyBEYXRlKCkpOwogICAgICAgIH0KICAgICAgICBpZiAoIXRoaXMudGhlbWVzLmhhc093blByb3BlcnR5KHRoZW1lLl9uYW1lKSkgewogICAgICAgICAgICB0aGlzLnRoZW1lc1t0aGVtZS5fbmFtZV0gPSB0aGVtZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigianFwbG90LlRoZW1lRW5naW5lIEVycm9yOiBUaGVtZSBhbHJlYWR5IGluIHVzZSIpOwogICAgICAgIH0KICAgIH07CiAgICAKICAgIC8vIG1ldGhvZCByZW1vdmUKICAgIC8vIERlbGV0ZSB0aGUgbmFtZWQgdGhlbWUsIHJldHVybiB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUuCiAgICAKCiAgICAvKioKICAgICAqIG1ldGhvZDogcmVtb3ZlCiAgICAgKiAKICAgICAqIFJlbW92ZSB0aGUgZ2l2ZW4gdGhlbWUgZnJvbSB0aGUgdGhlbWVFbmdpbmUuCiAgICAgKiAKICAgICAqIHBhcmFtZXRlcnM6CiAgICAgKiAKICAgICAqIG5hbWUgLSBuYW1lIG9mIHRoZSB0aGVtZSB0byByZW1vdmUuCiAgICAgKiAKICAgICAqIHJldHVybnM6CiAgICAgKiAKICAgICAqIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZS4KICAgICAqLwogICAgJC5qcXBsb3QuVGhlbWVFbmdpbmUucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uKG5hbWUpIHsKICAgICAgICBpZiAobmFtZSA9PSAnRGVmYXVsdCcpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZGVsZXRlIHRoaXMudGhlbWVzW25hbWVdOwogICAgfTsKCiAgICAvKioKICAgICAqIG1ldGhvZDogbmV3VGhlbWUKICAgICAqIAogICAgICogQ3JlYXRlIGEgbmV3IHRoZW1lIGJhc2VkIG9uIHRoZSBkZWZhdWx0IHRoZW1lLCBhZGRpbmcgaXQgdGhlIHRoZW1lRW5naW5lLgogICAgICogCiAgICAgKiBwYXJhbWV0ZXJzOgogICAgICogCiAgICAgKiBuYW1lIC0gbmFtZSBvZiB0aGUgbmV3IHRoZW1lLgogICAgICogb2JqIC0gb3B0aW9uYWwgb2JqZWN0IG9mIHN0eWxlcyB0byBiZSBhcHBsaWVkIHRvIHRoaXMgbmV3IHRoZW1lLgogICAgICogCiAgICAgKiByZXR1cm5zOgogICAgICogCiAgICAgKiBuZXcgVGhlbWUgb2JqZWN0LgogICAgICovCiAgICAkLmpxcGxvdC5UaGVtZUVuZ2luZS5wcm90b3R5cGUubmV3VGhlbWUgPSBmdW5jdGlvbihuYW1lLCBvYmopIHsKICAgICAgICBpZiAodHlwZW9mKG5hbWUpID09ICdvYmplY3QnKSB7CiAgICAgICAgICAgIG9iaiA9IG9iaiB8fCBuYW1lOwogICAgICAgICAgICBuYW1lID0gbnVsbDsKICAgICAgICB9CiAgICAgICAgaWYgKG9iaiAmJiBvYmouX25hbWUpIHsKICAgICAgICAgICAgbmFtZSA9IG9iai5fbmFtZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG5hbWUgPSBuYW1lIHx8IERhdGUucGFyc2UobmV3IERhdGUoKSk7CiAgICAgICAgfQogICAgICAgIC8vIHZhciB0aCA9IG5ldyAkLmpxcGxvdC5UaGVtZShuYW1lKTsKICAgICAgICB2YXIgdGggPSB0aGlzLmNvcHkodGhpcy50aGVtZXNbJ0RlZmF1bHQnXS5fbmFtZSwgbmFtZSk7CiAgICAgICAgJC5qcXBsb3QuZXh0ZW5kKHRoLCBvYmopOwogICAgICAgIHJldHVybiB0aDsKICAgIH07CiAgICAKICAgIC8vIGZ1bmN0aW9uIGNsb25lKG9iaikgewogICAgLy8gICAgIHJldHVybiBldmFsKG9iai50b1NvdXJjZSgpKTsKICAgIC8vIH0KICAgIAogICAgZnVuY3Rpb24gY2xvbmUob2JqKXsKICAgICAgICBpZihvYmogPT0gbnVsbCB8fCB0eXBlb2Yob2JqKSAhPSAnb2JqZWN0Jyl7CiAgICAgICAgICAgIHJldHVybiBvYmo7CiAgICAgICAgfQogICAgCiAgICAgICAgdmFyIHRlbXAgPSBuZXcgb2JqLmNvbnN0cnVjdG9yKCk7CiAgICAgICAgZm9yKHZhciBrZXkgaW4gb2JqKXsKICAgICAgICAgICAgdGVtcFtrZXldID0gY2xvbmUob2JqW2tleV0pOwogICAgICAgIH0gICAKICAgICAgICByZXR1cm4gdGVtcDsKICAgIH0KICAgIAogICAgJC5qcXBsb3QuY2xvbmUgPSBjbG9uZTsKICAgIAogICAgZnVuY3Rpb24gbWVyZ2Uob2JqMSwgb2JqMikgewogICAgICAgIGlmIChvYmoyID09ICBudWxsIHx8IHR5cGVvZihvYmoyKSAhPSAnb2JqZWN0JykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGZvciAodmFyIGtleSBpbiBvYmoyKSB7CiAgICAgICAgICAgIGlmIChrZXkgPT0gJ2hpZ2hsaWdodENvbG9ycycpIHsKICAgICAgICAgICAgICAgIG9iajFba2V5XSA9IGNsb25lKG9iajJba2V5XSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKG9iajJba2V5XSAhPSBudWxsICYmIHR5cGVvZihvYmoyW2tleV0pID09ICdvYmplY3QnKSB7CiAgICAgICAgICAgICAgICBpZiAoIW9iajEuaGFzT3duUHJvcGVydHkoa2V5KSkgewogICAgICAgICAgICAgICAgICAgIG9iajFba2V5XSA9IHt9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbWVyZ2Uob2JqMVtrZXldLCBvYmoyW2tleV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgb2JqMVtrZXldID0gb2JqMltrZXldOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgCiAgICAkLmpxcGxvdC5tZXJnZSA9IG1lcmdlOwogICAgCiAgICAgICAgLy8gVXNlIHRoZSBqUXVlcnkgMS4zLjIgZXh0ZW5kIGZ1bmN0aW9uIHNpbmNlIGJlaGF2aW91ciBpbiBqUXVlcnkgMS40IHNlZW1zIHByb2JsZW1hdGljCiAgICAkLmpxcGxvdC5leHRlbmQgPSBmdW5jdGlvbigpIHsKICAgICAgICAvLyBjb3B5IHJlZmVyZW5jZSB0byB0YXJnZXQgb2JqZWN0CiAgICAgICAgdmFyIHRhcmdldCA9IGFyZ3VtZW50c1swXSB8fCB7fSwgaSA9IDEsIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsIGRlZXAgPSBmYWxzZSwgb3B0aW9uczsKCiAgICAgICAgLy8gSGFuZGxlIGEgZGVlcCBjb3B5IHNpdHVhdGlvbgogICAgICAgIGlmICggdHlwZW9mIHRhcmdldCA9PT0gImJvb2xlYW4iICkgewogICAgICAgICAgICBkZWVwID0gdGFyZ2V0OwogICAgICAgICAgICB0YXJnZXQgPSBhcmd1bWVudHNbMV0gfHwge307CiAgICAgICAgICAgIC8vIHNraXAgdGhlIGJvb2xlYW4gYW5kIHRoZSB0YXJnZXQKICAgICAgICAgICAgaSA9IDI7CiAgICAgICAgfQoKICAgICAgICAvLyBIYW5kbGUgY2FzZSB3aGVuIHRhcmdldCBpcyBhIHN0cmluZyBvciBzb21ldGhpbmcgKHBvc3NpYmxlIGluIGRlZXAgY29weSkKICAgICAgICBpZiAoIHR5cGVvZiB0YXJnZXQgIT09ICJvYmplY3QiICYmICF0b1N0cmluZy5jYWxsKHRhcmdldCkgPT09ICJbb2JqZWN0IEZ1bmN0aW9uXSIgKSB7CiAgICAgICAgICAgIHRhcmdldCA9IHt9OwogICAgICAgIH0KCiAgICAgICAgZm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKXsKICAgICAgICAgICAgLy8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlcwogICAgICAgICAgICBpZiAoIChvcHRpb25zID0gYXJndW1lbnRzWyBpIF0pICE9IG51bGwgKSB7CiAgICAgICAgICAgICAgICAvLyBFeHRlbmQgdGhlIGJhc2Ugb2JqZWN0CiAgICAgICAgICAgICAgICBmb3IgKCB2YXIgbmFtZSBpbiBvcHRpb25zICkgewogICAgICAgICAgICAgICAgICAgIHZhciBzcmMgPSB0YXJnZXRbIG5hbWUgXSwgY29weSA9IG9wdGlvbnNbIG5hbWUgXTsKCiAgICAgICAgICAgICAgICAgICAgLy8gUHJldmVudCBuZXZlci1lbmRpbmcgbG9vcAogICAgICAgICAgICAgICAgICAgIGlmICggdGFyZ2V0ID09PSBjb3B5ICkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vIFJlY3Vyc2UgaWYgd2UncmUgbWVyZ2luZyBvYmplY3QgdmFsdWVzCiAgICAgICAgICAgICAgICAgICAgaWYgKCBkZWVwICYmIGNvcHkgJiYgdHlwZW9mIGNvcHkgPT09ICJvYmplY3QiICYmICFjb3B5Lm5vZGVUeXBlICkgewogICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRbIG5hbWUgXSA9ICQuanFwbG90LmV4dGVuZCggZGVlcCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOZXZlciBtb3ZlIG9yaWdpbmFsIG9iamVjdHMsIGNsb25lIHRoZW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYyB8fCAoIGNvcHkubGVuZ3RoICE9IG51bGwgPyBbIF0gOiB7IH0gKQogICAgICAgICAgICAgICAgICAgICAgICAsIGNvcHkgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgYnJpbmcgaW4gdW5kZWZpbmVkIHZhbHVlcwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCBjb3B5ICE9PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFsgbmFtZSBdID0gY29weTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gUmV0dXJuIHRoZSBtb2RpZmllZCBvYmplY3QKICAgICAgICByZXR1cm4gdGFyZ2V0OwogICAgfTsKCiAgICAvKioKICAgICAqIG1ldGhvZDogcmVuYW1lCiAgICAgKiAKICAgICAqIFJlbmFtZSBhIHRoZW1lLgogICAgICogCiAgICAgKiBwYXJhbWV0ZXJzOgogICAgICogCiAgICAgKiBvbGROYW1lIC0gY3VycmVudCBuYW1lIG9mIHRoZSB0aGVtZS4KICAgICAqIG5ld05hbWUgLSBkZXNpcmVkIG5hbWUgb2YgdGhlIHRoZW1lLgogICAgICogCiAgICAgKiByZXR1cm5zOgogICAgICogCiAgICAgKiBuZXcgVGhlbWUgb2JqZWN0LgogICAgICovCiAgICAkLmpxcGxvdC5UaGVtZUVuZ2luZS5wcm90b3R5cGUucmVuYW1lID0gZnVuY3Rpb24gKG9sZE5hbWUsIG5ld05hbWUpIHsKICAgICAgICBpZiAob2xkTmFtZSA9PSAnRGVmYXVsdCcgfHwgbmV3TmFtZSA9PSAnRGVmYXVsdCcpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yICgianFwbG90LlRoZW1lRW5naW5lIEVycm9yOiBDYW5ub3QgcmVuYW1lIGZyb20vdG8gRGVmYXVsdCIpOwogICAgICAgIH0KICAgICAgICBpZiAodGhpcy50aGVtZXMuaGFzT3duUHJvcGVydHkobmV3TmFtZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yICgianFwbG90LlRoZW1lRW5naW5lIEVycm9yOiBOZXcgbmFtZSBhbHJlYWR5IGluIHVzZS4iKTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAodGhpcy50aGVtZXMuaGFzT3duUHJvcGVydHkob2xkTmFtZSkpIHsKICAgICAgICAgICAgdmFyIHRoID0gdGhpcy5jb3B5IChvbGROYW1lLCBuZXdOYW1lKTsKICAgICAgICAgICAgdGhpcy5yZW1vdmUob2xkTmFtZSk7CiAgICAgICAgICAgIHJldHVybiB0aDsKICAgICAgICB9CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJqcXBsb3QuVGhlbWVFbmdpbmUgRXJyb3I6IE9sZCBuYW1lIG9yIG5ldyBuYW1lIGludmFsaWQiKTsKICAgIH07CgogICAgLyoqCiAgICAgKiBtZXRob2Q6IGNvcHkKICAgICAqIAogICAgICogQ3JlYXRlIGEgY29weSBvZiBhbiBleGlzdGluZyB0aGVtZSBpbiB0aGUgdGhlbWVFbmdpbmUsIGFkZGluZyBpdCB0aGUgdGhlbWVFbmdpbmUuCiAgICAgKiAKICAgICAqIHBhcmFtZXRlcnM6CiAgICAgKiAKICAgICAqIHNvdXJjZU5hbWUgLSBuYW1lIG9mIHRoZSBleGlzdGluZyB0aGVtZS4KICAgICAqIHRhcmdldE5hbWUgLSBuYW1lIG9mIHRoZSBjb3B5LgogICAgICogb2JqIC0gb3B0aW9uYWwgb2JqZWN0IG9mIHN0eWxlIHBhcmFtZXRlciB0byBhcHBseSB0byB0aGUgbmV3IHRoZW1lLgogICAgICogCiAgICAgKiByZXR1cm5zOgogICAgICogCiAgICAgKiBuZXcgVGhlbWUgb2JqZWN0LgogICAgICovCiAgICAkLmpxcGxvdC5UaGVtZUVuZ2luZS5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIChzb3VyY2VOYW1lLCB0YXJnZXROYW1lLCBvYmopIHsKICAgICAgICBpZiAodGFyZ2V0TmFtZSA9PSAnRGVmYXVsdCcpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yICgianFwbG90LlRoZW1lRW5naW5lIEVycm9yOiBDYW5ub3QgY29weSBvdmVyIERlZmF1bHQgdGhlbWUiKTsKICAgICAgICB9CiAgICAgICAgaWYgKCF0aGlzLnRoZW1lcy5oYXNPd25Qcm9wZXJ0eShzb3VyY2VOYW1lKSkgewogICAgICAgICAgICB2YXIgcyA9ICJqcXBsb3QuVGhlbWVFbmdpbmUgRXJyb3I6IFNvdXJjZSBuYW1lIGludmFsaWQiOwogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Iocyk7CiAgICAgICAgfQogICAgICAgIGlmICh0aGlzLnRoZW1lcy5oYXNPd25Qcm9wZXJ0eSh0YXJnZXROYW1lKSkgewogICAgICAgICAgICB2YXIgcyA9ICJqcXBsb3QuVGhlbWVFbmdpbmUgRXJyb3I6IFRhcmdldCBuYW1lIGludmFsaWQiOwogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Iocyk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICB2YXIgdGggPSBjbG9uZSh0aGlzLnRoZW1lc1tzb3VyY2VOYW1lXSk7CiAgICAgICAgICAgIHRoLl9uYW1lID0gdGFyZ2V0TmFtZTsKICAgICAgICAgICAgJC5qcXBsb3QuZXh0ZW5kKHRydWUsIHRoLCBvYmopOwogICAgICAgICAgICB0aGlzLl9hZGQodGgpOwogICAgICAgICAgICByZXR1cm4gdGg7CiAgICAgICAgfQogICAgfTsKICAgIAogICAgCiAgICAkLmpxcGxvdC5UaGVtZSA9IGZ1bmN0aW9uKG5hbWUsIG9iaikgewogICAgICAgIGlmICh0eXBlb2YobmFtZSkgPT0gJ29iamVjdCcpIHsKICAgICAgICAgICAgb2JqID0gb2JqIHx8IG5hbWU7CiAgICAgICAgICAgIG5hbWUgPSBudWxsOwogICAgICAgIH0KICAgICAgICBuYW1lID0gbmFtZSB8fCBEYXRlLnBhcnNlKG5ldyBEYXRlKCkpOwogICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOwogICAgICAgIHRoaXMudGFyZ2V0ID0gewogICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IG51bGwKICAgICAgICB9OwogICAgICAgIHRoaXMubGVnZW5kID0gewogICAgICAgICAgICB0ZXh0Q29sb3I6IG51bGwsCiAgICAgICAgICAgIGZvbnRGYW1pbHk6IG51bGwsCiAgICAgICAgICAgIGZvbnRTaXplOiBudWxsLAogICAgICAgICAgICBib3JkZXI6IG51bGwsCiAgICAgICAgICAgIGJhY2tncm91bmQ6IG51bGwKICAgICAgICB9OwogICAgICAgIHRoaXMudGl0bGUgPSB7CiAgICAgICAgICAgIHRleHRDb2xvcjogbnVsbCwKICAgICAgICAgICAgZm9udEZhbWlseTogbnVsbCwKICAgICAgICAgICAgZm9udFNpemU6IG51bGwsCiAgICAgICAgICAgIHRleHRBbGlnbjogbnVsbAogICAgICAgIH07CiAgICAgICAgdGhpcy5zZXJpZXNTdHlsZXMgPSB7fTsKICAgICAgICB0aGlzLnNlcmllcyA9IFtdOwogICAgICAgIHRoaXMuZ3JpZCA9IHsKICAgICAgICAgICAgZHJhd0dyaWRsaW5lczogbnVsbCwKICAgICAgICAgICAgZ3JpZExpbmVDb2xvcjogbnVsbCwKICAgICAgICAgICAgZ3JpZExpbmVXaWR0aDogbnVsbCwKICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBudWxsLAogICAgICAgICAgICBib3JkZXJDb2xvcjogbnVsbCwKICAgICAgICAgICAgYm9yZGVyV2lkdGg6IG51bGwsCiAgICAgICAgICAgIHNoYWRvdzogbnVsbAogICAgICAgIH07CiAgICAgICAgdGhpcy5heGVzU3R5bGVzID0ge2xhYmVsOnt9LCB0aWNrczp7fX07CiAgICAgICAgdGhpcy5heGVzID0ge307CiAgICAgICAgaWYgKHR5cGVvZihvYmopID09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgIHRoaXMuX25hbWUgPSBvYmo7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYodHlwZW9mKG9iaikgPT0gJ29iamVjdCcpIHsKICAgICAgICAgICAgJC5qcXBsb3QuZXh0ZW5kKHRydWUsIHRoaXMsIG9iaik7CiAgICAgICAgfQogICAgfTsKICAgIAogICAgdmFyIEF4aXNQcm9wZXJ0aWVzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy5ib3JkZXJDb2xvciA9IG51bGw7CiAgICAgICAgdGhpcy5ib3JkZXJXaWR0aCA9IG51bGw7CiAgICAgICAgdGhpcy50aWNrcyA9IG5ldyBBeGlzVGlja3MoKTsKICAgICAgICB0aGlzLmxhYmVsID0gbmV3IEF4aXNMYWJlbCgpOwogICAgfTsKICAgIAogICAgdmFyIEF4aXNUaWNrcyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuc2hvdyA9IG51bGw7CiAgICAgICAgdGhpcy5zaG93R3JpZGxpbmUgPSBudWxsOwogICAgICAgIHRoaXMuc2hvd0xhYmVsID0gbnVsbDsKICAgICAgICB0aGlzLnNob3dNYXJrID0gbnVsbDsKICAgICAgICB0aGlzLnNpemUgPSBudWxsOwogICAgICAgIHRoaXMudGV4dENvbG9yID0gbnVsbDsKICAgICAgICB0aGlzLndoaXRlU3BhY2UgPSBudWxsOwogICAgICAgIHRoaXMuZm9udFNpemUgPSBudWxsOwogICAgICAgIHRoaXMuZm9udEZhbWlseSA9IG51bGw7CiAgICB9OwogICAgCiAgICB2YXIgQXhpc0xhYmVsID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy50ZXh0Q29sb3IgPSBudWxsOwogICAgICAgIHRoaXMud2hpdGVTcGFjZSA9IG51bGw7CiAgICAgICAgdGhpcy5mb250U2l6ZSA9IG51bGw7CiAgICAgICAgdGhpcy5mb250RmFtaWx5ID0gbnVsbDsKICAgICAgICB0aGlzLmZvbnRXZWlnaHQgPSBudWxsOwogICAgfTsKICAgIAogICAgdmFyIExpbmVTZXJpZXNQcm9wZXJ0aWVzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy5jb2xvcj1udWxsOwogICAgICAgIHRoaXMubGluZVdpZHRoPW51bGw7CiAgICAgICAgdGhpcy5saW5lUGF0dGVybj1udWxsOwogICAgICAgIHRoaXMuc2hhZG93PW51bGw7CiAgICAgICAgdGhpcy5maWxsQ29sb3I9bnVsbDsKICAgICAgICB0aGlzLnNob3dNYXJrZXI9bnVsbDsKICAgICAgICB0aGlzLm1hcmtlck9wdGlvbnMgPSBuZXcgTWFya2VyT3B0aW9ucygpOwogICAgfTsKICAgIAogICAgdmFyIE1hcmtlck9wdGlvbnMgPSBmdW5jdGlvbigpIHsKICAgICAgICB0aGlzLnNob3cgPSBudWxsOwogICAgICAgIHRoaXMuc3R5bGUgPSBudWxsOwogICAgICAgIHRoaXMubGluZVdpZHRoID0gbnVsbDsKICAgICAgICB0aGlzLnNpemUgPSBudWxsOwogICAgICAgIHRoaXMuY29sb3IgPSBudWxsOwogICAgICAgIHRoaXMuc2hhZG93ID0gbnVsbDsKICAgIH07CiAgICAKICAgIHZhciBCYXJTZXJpZXNQcm9wZXJ0aWVzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy5jb2xvcj1udWxsOwogICAgICAgIHRoaXMuc2VyaWVzQ29sb3JzPW51bGw7CiAgICAgICAgdGhpcy5saW5lV2lkdGg9bnVsbDsKICAgICAgICB0aGlzLnNoYWRvdz1udWxsOwogICAgICAgIHRoaXMuYmFyUGFkZGluZz1udWxsOwogICAgICAgIHRoaXMuYmFyTWFyZ2luPW51bGw7CiAgICAgICAgdGhpcy5iYXJXaWR0aD1udWxsOwogICAgICAgIHRoaXMuaGlnaGxpZ2h0Q29sb3JzPW51bGw7CiAgICB9OwogICAgCiAgICB2YXIgUGllU2VyaWVzUHJvcGVydGllcyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuc2VyaWVzQ29sb3JzPW51bGw7CiAgICAgICAgdGhpcy5wYWRkaW5nPW51bGw7CiAgICAgICAgdGhpcy5zbGljZU1hcmdpbj1udWxsOwogICAgICAgIHRoaXMuZmlsbD1udWxsOwogICAgICAgIHRoaXMuc2hhZG93PW51bGw7CiAgICAgICAgdGhpcy5zdGFydEFuZ2xlPW51bGw7CiAgICAgICAgdGhpcy5saW5lV2lkdGg9bnVsbDsKICAgICAgICB0aGlzLmhpZ2hsaWdodENvbG9ycz1udWxsOwogICAgfTsKICAgIAogICAgdmFyIERvbnV0U2VyaWVzUHJvcGVydGllcyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuc2VyaWVzQ29sb3JzPW51bGw7CiAgICAgICAgdGhpcy5wYWRkaW5nPW51bGw7CiAgICAgICAgdGhpcy5zbGljZU1hcmdpbj1udWxsOwogICAgICAgIHRoaXMuZmlsbD1udWxsOwogICAgICAgIHRoaXMuc2hhZG93PW51bGw7CiAgICAgICAgdGhpcy5zdGFydEFuZ2xlPW51bGw7CiAgICAgICAgdGhpcy5saW5lV2lkdGg9bnVsbDsKICAgICAgICB0aGlzLmlubmVyRGlhbWV0ZXI9bnVsbDsKICAgICAgICB0aGlzLnRoaWNrbmVzcz1udWxsOwogICAgICAgIHRoaXMucmluZ01hcmdpbj1udWxsOwogICAgICAgIHRoaXMuaGlnaGxpZ2h0Q29sb3JzPW51bGw7CiAgICB9OwogICAgCiAgICB2YXIgRnVubmVsU2VyaWVzUHJvcGVydGllcyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuY29sb3I9bnVsbDsKICAgICAgICB0aGlzLmxpbmVXaWR0aD1udWxsOwogICAgICAgIHRoaXMuc2hhZG93PW51bGw7CiAgICAgICAgdGhpcy5wYWRkaW5nPW51bGw7CiAgICAgICAgdGhpcy5zZWN0aW9uTWFyZ2luPW51bGw7CiAgICAgICAgdGhpcy5zZXJpZXNDb2xvcnM9bnVsbDsKICAgICAgICB0aGlzLmhpZ2hsaWdodENvbG9ycz1udWxsOwogICAgfTsKICAgIAogICAgdmFyIE1ldGVyU2VyaWVzUHJvcGVydGllcyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMucGFkZGluZz1udWxsOwogICAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yPW51bGw7CiAgICAgICAgdGhpcy5yaW5nQ29sb3I9bnVsbDsKICAgICAgICB0aGlzLnRpY2tDb2xvcj1udWxsOwogICAgICAgIHRoaXMucmluZ1dpZHRoPW51bGw7CiAgICAgICAgdGhpcy5pbnRlcnZhbENvbG9ycz1udWxsOwogICAgICAgIHRoaXMuaW50ZXJ2YWxJbm5lclJhZGl1cz1udWxsOwogICAgICAgIHRoaXMuaW50ZXJ2YWxPdXRlclJhZGl1cz1udWxsOwogICAgICAgIHRoaXMuaHViUmFkaXVzPW51bGw7CiAgICAgICAgdGhpcy5uZWVkbGVUaGlja25lc3M9bnVsbDsKICAgICAgICB0aGlzLm5lZWRsZVBhZD1udWxsOwogICAgfTsKICAgICAgICAKCgoKICAgICQuZm4uanFwbG90Q2hpbGRUZXh0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuICQodGhpcykuY29udGVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLm5vZGVUeXBlID09IDM7ICAvLyBOb2RlLlRFWFRfTk9ERSBub3QgZGVmaW5lZCBpbiBJNwogICAgICAgIH0pLnRleHQoKTsKICAgIH07CgogICAgLy8gUmV0dXJucyBmb250IHN0eWxlIGFzIGFiYnJldmlhdGlvbiBmb3IgImZvbnQiIHByb3BlcnR5LgogICAgJC5mbi5qcXBsb3RHZXRDb21wdXRlZEZvbnRTdHlsZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBjc3MgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSA/ICB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzWzBdLCAiIikgOiB0aGlzWzBdLmN1cnJlbnRTdHlsZTsKICAgICAgICB2YXIgYXR0cnMgPSBjc3NbJ2ZvbnQtc3R5bGUnXSA/IFsnZm9udC1zdHlsZScsICdmb250LXdlaWdodCcsICdmb250LXNpemUnLCAnZm9udC1mYW1pbHknXSA6IFsnZm9udFN0eWxlJywgJ2ZvbnRXZWlnaHQnLCAnZm9udFNpemUnLCAnZm9udEZhbWlseSddOwogICAgICAgIHZhciBzdHlsZSA9IFtdOwoKICAgICAgICBmb3IgKHZhciBpPTAgOyBpIDwgYXR0cnMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgdmFyIGF0dHIgPSBTdHJpbmcoY3NzW2F0dHJzW2ldXSk7CgogICAgICAgICAgICBpZiAoYXR0ciAmJiBhdHRyICE9ICdub3JtYWwnKSB7CiAgICAgICAgICAgICAgICBzdHlsZS5wdXNoKGF0dHIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBzdHlsZS5qb2luKCcgJyk7CiAgICB9OwoKICAgIC8qKgogICAgICogTmFtZXNwYWNlOiAkLmZuCiAgICAgKiBqUXVlcnkgbmFtZXNwYWNlIHRvIGF0dGFjaCBmdW5jdGlvbnMgdG8galF1ZXJ5IGVsZW1lbnRzLgogICAgICogIAogICAgICovCgogICAgJC5mbi5qcXBsb3RUb0ltYWdlQ2FudmFzID0gZnVuY3Rpb24ob3B0aW9ucykgewoKICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgICAgICB2YXIgeF9vZmZzZXQgPSAob3B0aW9ucy54X29mZnNldCA9PSBudWxsKSA/IDAgOiBvcHRpb25zLnhfb2Zmc2V0OwogICAgICAgIHZhciB5X29mZnNldCA9IChvcHRpb25zLnlfb2Zmc2V0ID09IG51bGwpID8gMCA6IG9wdGlvbnMueV9vZmZzZXQ7CiAgICAgICAgdmFyIGJhY2tncm91bmRDb2xvciA9IChvcHRpb25zLmJhY2tncm91bmRDb2xvciA9PSBudWxsKSA/ICdyZ2IoMjU1LDI1NSwyNTUpJyA6IG9wdGlvbnMuYmFja2dyb3VuZENvbG9yOwoKICAgICAgICBpZiAoJCh0aGlzKS53aWR0aCgpID09IDAgfHwgJCh0aGlzKS5oZWlnaHQoKSA9PSAwKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgLy8gZXhjYW52YXMgYW5kIGhlbmNlIElFIDwgOSBkbyBub3Qgc3VwcG9ydCB0b0RhdGFVUkwgYW5kIGNhbm5vdCBleHBvcnQgaW1hZ2VzLgogICAgICAgIGlmICgkLmpxcGxvdC51c2VfZXhjYW52YXMpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHZhciBuZXdDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKICAgICAgICB2YXIgaCA9ICQodGhpcykub3V0ZXJIZWlnaHQodHJ1ZSk7CiAgICAgICAgdmFyIHcgPSAkKHRoaXMpLm91dGVyV2lkdGgodHJ1ZSk7CiAgICAgICAgdmFyIG9mZnMgPSAkKHRoaXMpLm9mZnNldCgpOwogICAgICAgIHZhciBwbG90bGVmdCA9IG9mZnMubGVmdDsKICAgICAgICB2YXIgcGxvdHRvcCA9IG9mZnMudG9wOwogICAgICAgIHZhciB0cmFuc3ggPSAwLCB0cmFuc3kgPSAwOwoKICAgICAgICAvLyBoYXZlIHRvIGNoZWNrIGlmIGFueSBlbGVtZW50cyBhcmUgaGFuZ2luZyBvdXRzaWRlIG9mIHBsb3QgYXJlYSBiZWZvcmUgcmVuZGVyaW5nLAogICAgICAgIC8vIHNpbmNlIGNoYW5naW5nIHdpZHRoIG9mIGNhbnZhcyB3aWxsIGVyYXNlIGNhbnZhcy4KCiAgICAgICAgdmFyIGNsc2VzID0gWydqcXBsb3QtdGFibGUtbGVnZW5kJywgJ2pxcGxvdC14YXhpcy10aWNrJywgJ2pxcGxvdC14MmF4aXMtdGljaycsICdqcXBsb3QteWF4aXMtdGljaycsICdqcXBsb3QteTJheGlzLXRpY2snLCAnanFwbG90LXkzYXhpcy10aWNrJywgCiAgICAgICAgJ2pxcGxvdC15NGF4aXMtdGljaycsICdqcXBsb3QteTVheGlzLXRpY2snLCAnanFwbG90LXk2YXhpcy10aWNrJywgJ2pxcGxvdC15N2F4aXMtdGljaycsICdqcXBsb3QteThheGlzLXRpY2snLCAnanFwbG90LXk5YXhpcy10aWNrJywKICAgICAgICAnanFwbG90LXhheGlzLWxhYmVsJywgJ2pxcGxvdC14MmF4aXMtbGFiZWwnLCAnanFwbG90LXlheGlzLWxhYmVsJywgJ2pxcGxvdC15MmF4aXMtbGFiZWwnLCAnanFwbG90LXkzYXhpcy1sYWJlbCcsICdqcXBsb3QteTRheGlzLWxhYmVsJywgCiAgICAgICAgJ2pxcGxvdC15NWF4aXMtbGFiZWwnLCAnanFwbG90LXk2YXhpcy1sYWJlbCcsICdqcXBsb3QteTdheGlzLWxhYmVsJywgJ2pxcGxvdC15OGF4aXMtbGFiZWwnLCAnanFwbG90LXk5YXhpcy1sYWJlbCcgXTsKCiAgICAgICAgdmFyIHRlbXB0b3AsIHRlbXBsZWZ0LCB0ZW1wYm90dG9tLCB0ZW1wcmlnaHQ7CgogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2xzZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcuJytjbHNlc1tpXSkuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRlbXB0b3AgPSAkKHRoaXMpLm9mZnNldCgpLnRvcCAtIHBsb3R0b3A7CiAgICAgICAgICAgICAgICB0ZW1wbGVmdCA9ICQodGhpcykub2Zmc2V0KCkubGVmdCAtIHBsb3RsZWZ0OwogICAgICAgICAgICAgICAgdGVtcHJpZ2h0ID0gdGVtcGxlZnQgKyAkKHRoaXMpLm91dGVyV2lkdGgodHJ1ZSkgKyB0cmFuc3g7CiAgICAgICAgICAgICAgICB0ZW1wYm90dG9tID0gdGVtcHRvcCArICQodGhpcykub3V0ZXJIZWlnaHQodHJ1ZSkgKyB0cmFuc3k7CiAgICAgICAgICAgICAgICBpZiAodGVtcGxlZnQgPCAtdHJhbnN4KSB7CiAgICAgICAgICAgICAgICAgICAgdyA9IHcgLSB0cmFuc3ggLSB0ZW1wbGVmdDsKICAgICAgICAgICAgICAgICAgICB0cmFuc3ggPSAtdGVtcGxlZnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodGVtcHRvcCA8IC10cmFuc3kpIHsKICAgICAgICAgICAgICAgICAgICBoID0gaCAtIHRyYW5zeSAtIHRlbXB0b3A7CiAgICAgICAgICAgICAgICAgICAgdHJhbnN5ID0gLSB0ZW1wdG9wOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHRlbXByaWdodCA+IHcpIHsKICAgICAgICAgICAgICAgICAgICB3ID0gdGVtcHJpZ2h0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHRlbXBib3R0b20gPiBoKSB7CiAgICAgICAgICAgICAgICAgICAgaCA9ICB0ZW1wYm90dG9tOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIG5ld0NhbnZhcy53aWR0aCA9IHcgKyBOdW1iZXIoeF9vZmZzZXQpOwogICAgICAgIG5ld0NhbnZhcy5oZWlnaHQgPSBoICsgTnVtYmVyKHlfb2Zmc2V0KTsKCiAgICAgICAgdmFyIG5ld0NvbnRleHQgPSBuZXdDYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsgCgogICAgICAgIG5ld0NvbnRleHQuc2F2ZSgpOwogICAgICAgIG5ld0NvbnRleHQuZmlsbFN0eWxlID0gYmFja2dyb3VuZENvbG9yOwogICAgICAgIG5ld0NvbnRleHQuZmlsbFJlY3QoMCwwLCBuZXdDYW52YXMud2lkdGgsIG5ld0NhbnZhcy5oZWlnaHQpOwogICAgICAgIG5ld0NvbnRleHQucmVzdG9yZSgpOwoKICAgICAgICBuZXdDb250ZXh0LnRyYW5zbGF0ZSh0cmFuc3gsIHRyYW5zeSk7CiAgICAgICAgbmV3Q29udGV4dC50ZXh0QWxpZ24gPSAnbGVmdCc7CiAgICAgICAgbmV3Q29udGV4dC50ZXh0QmFzZWxpbmUgPSAndG9wJzsKCiAgICAgICAgZnVuY3Rpb24gZ2V0TGluZWhlaWdodChlbCkgewogICAgICAgICAgICB2YXIgbGluZWhlaWdodCA9IHBhcnNlSW50KCQoZWwpLmNzcygnbGluZS1oZWlnaHQnKSwgMTApOwoKICAgICAgICAgICAgaWYgKGlzTmFOKGxpbmVoZWlnaHQpKSB7CiAgICAgICAgICAgICAgICBsaW5laGVpZ2h0ID0gcGFyc2VJbnQoJChlbCkuY3NzKCdmb250LXNpemUnKSwgMTApICogMS4yOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBsaW5laGVpZ2h0OwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gd3JpdGVXcmFwcGVkVGV4dCAoZWwsIGNvbnRleHQsIHRleHQsIGxlZnQsIHRvcCwgY2FudmFzV2lkdGgpIHsKICAgICAgICAgICAgdmFyIGxpbmVoZWlnaHQgPSBnZXRMaW5laGVpZ2h0KGVsKTsKICAgICAgICAgICAgdmFyIHRhZ3dpZHRoID0gJChlbCkuaW5uZXJXaWR0aCgpOwogICAgICAgICAgICB2YXIgdGFnaGVpZ2h0ID0gJChlbCkuaW5uZXJIZWlnaHQoKTsKICAgICAgICAgICAgdmFyIHdvcmRzID0gdGV4dC5zcGxpdCgvXHMrLyk7CiAgICAgICAgICAgIHZhciB3bCA9IHdvcmRzLmxlbmd0aDsKICAgICAgICAgICAgdmFyIHcgPSAnJzsKICAgICAgICAgICAgdmFyIGJyZWFrcyA9IFtdOwogICAgICAgICAgICB2YXIgdGVtcHRvcCA9IHRvcDsKICAgICAgICAgICAgdmFyIHRlbXBsZWZ0ID0gbGVmdDsKCiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx3bDsgaSsrKSB7CiAgICAgICAgICAgICAgICB3ICs9IHdvcmRzW2ldOwogICAgICAgICAgICAgICAgaWYgKGNvbnRleHQubWVhc3VyZVRleHQodykud2lkdGggPiB0YWd3aWR0aCkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrcy5wdXNoKGkpOwogICAgICAgICAgICAgICAgICAgIHcgPSAnJzsKICAgICAgICAgICAgICAgICAgICBpLS07CiAgICAgICAgICAgICAgICB9ICAgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJyZWFrcy5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgICAgIC8vIGNlbnRlciB0ZXh0IGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAgICAgaWYgKCQoZWwpLmNzcygndGV4dEFsaWduJykgPT09ICdjZW50ZXInKSB7CiAgICAgICAgICAgICAgICAgICAgdGVtcGxlZnQgPSBsZWZ0ICsgKGNhbnZhc1dpZHRoIC0gY29udGV4dC5tZWFzdXJlVGV4dCh3KS53aWR0aCkvMiAgLSB0cmFuc3g7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KHRleHQsIHRlbXBsZWZ0LCB0b3ApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdyA9IHdvcmRzLnNsaWNlKDAsIGJyZWFrc1swXSkuam9pbignICcpOwogICAgICAgICAgICAgICAgLy8gY2VudGVyIHRleHQgaWYgbmVjZXNzYXJ5CiAgICAgICAgICAgICAgICBpZiAoJChlbCkuY3NzKCd0ZXh0QWxpZ24nKSA9PT0gJ2NlbnRlcicpIHsKICAgICAgICAgICAgICAgICAgICB0ZW1wbGVmdCA9IGxlZnQgKyAoY2FudmFzV2lkdGggLSBjb250ZXh0Lm1lYXN1cmVUZXh0KHcpLndpZHRoKS8yICAtIHRyYW5zeDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQodywgdGVtcGxlZnQsIHRlbXB0b3ApOwogICAgICAgICAgICAgICAgdGVtcHRvcCArPSBsaW5laGVpZ2h0OwogICAgICAgICAgICAgICAgZm9yICh2YXIgaT0xLCBsPWJyZWFrcy5sZW5ndGg7IGk8bDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdyA9IHdvcmRzLnNsaWNlKGJyZWFrc1tpLTFdLCBicmVha3NbaV0pLmpvaW4oJyAnKTsKICAgICAgICAgICAgICAgICAgICAvLyBjZW50ZXIgdGV4dCBpZiBuZWNlc3NhcnkKICAgICAgICAgICAgICAgICAgICBpZiAoJChlbCkuY3NzKCd0ZXh0QWxpZ24nKSA9PT0gJ2NlbnRlcicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxlZnQgPSBsZWZ0ICsgKGNhbnZhc1dpZHRoIC0gY29udGV4dC5tZWFzdXJlVGV4dCh3KS53aWR0aCkvMiAgLSB0cmFuc3g7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQodywgdGVtcGxlZnQsIHRlbXB0b3ApOwogICAgICAgICAgICAgICAgICAgIHRlbXB0b3AgKz0gbGluZWhlaWdodDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHcgPSB3b3Jkcy5zbGljZShicmVha3NbaS0xXSwgd29yZHMubGVuZ3RoKS5qb2luKCcgJyk7CiAgICAgICAgICAgICAgICAvLyBjZW50ZXIgdGV4dCBpZiBuZWNlc3NhcnkKICAgICAgICAgICAgICAgIGlmICgkKGVsKS5jc3MoJ3RleHRBbGlnbicpID09PSAnY2VudGVyJykgewogICAgICAgICAgICAgICAgICAgIHRlbXBsZWZ0ID0gbGVmdCArIChjYW52YXNXaWR0aCAtIGNvbnRleHQubWVhc3VyZVRleHQodykud2lkdGgpLzIgIC0gdHJhbnN4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dCh3LCB0ZW1wbGVmdCwgdGVtcHRvcCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBfanFwVG9JbWFnZShlbCwgeF9vZmZzZXQsIHlfb2Zmc2V0KSB7CiAgICAgICAgICAgIHZhciB0YWduYW1lID0gZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICB2YXIgcCA9ICQoZWwpLnBvc2l0aW9uKCk7CiAgICAgICAgICAgIHZhciBjc3MgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSA/ICB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgIiIpIDogZWwuY3VycmVudFN0eWxlOyAvLyBmb3IgSUUgPCA5CiAgICAgICAgICAgIHZhciBsZWZ0ID0geF9vZmZzZXQgKyBwLmxlZnQgKyBwYXJzZUludChjc3MubWFyZ2luTGVmdCwgMTApICsgcGFyc2VJbnQoY3NzLmJvcmRlckxlZnRXaWR0aCwgMTApICsgcGFyc2VJbnQoY3NzLnBhZGRpbmdMZWZ0LCAxMCk7CiAgICAgICAgICAgIHZhciB0b3AgPSB5X29mZnNldCArIHAudG9wICsgcGFyc2VJbnQoY3NzLm1hcmdpblRvcCwgMTApICsgcGFyc2VJbnQoY3NzLmJvcmRlclRvcFdpZHRoLCAxMCkrIHBhcnNlSW50KGNzcy5wYWRkaW5nVG9wLCAxMCk7CiAgICAgICAgICAgIHZhciB3ID0gbmV3Q2FudmFzLndpZHRoOwogICAgICAgICAgICAvLyB2YXIgbGVmdCA9IHhfb2Zmc2V0ICsgcC5sZWZ0ICsgJChlbCkuY3NzKCdtYXJnaW5MZWZ0JykgKyAkKGVsKS5jc3MoJ2JvcmRlckxlZnRXaWR0aCcpIAoKICAgICAgICAgICAgLy8gc29tZWhvdyBpbiBoZXJlLCBmb3IgZGl2cyB3aXRoaW4gZGl2cywgdGhlIHdpZHRoIG9mIHRoZSBpbm5lciBkaXYgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgY2FudmFzLgoKICAgICAgICAgICAgaWYgKCh0YWduYW1lID09ICdkaXYnIHx8IHRhZ25hbWUgPT0gJ3NwYW4nKSAmJiAhJChlbCkuaGFzQ2xhc3MoJ2pxcGxvdC1oaWdobGlnaHRlci10b29sdGlwJykpIHsKICAgICAgICAgICAgICAgICQoZWwpLmNoaWxkcmVuKCkuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBfanFwVG9JbWFnZSh0aGlzLCBsZWZ0LCB0b3ApOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB2YXIgdGV4dCA9ICQoZWwpLmpxcGxvdENoaWxkVGV4dCgpOwoKICAgICAgICAgICAgICAgIGlmICh0ZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgbmV3Q29udGV4dC5mb250ID0gJChlbCkuanFwbG90R2V0Q29tcHV0ZWRGb250U3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICBuZXdDb250ZXh0LmZpbGxTdHlsZSA9ICQoZWwpLmNzcygnY29sb3InKTsKCiAgICAgICAgICAgICAgICAgICAgd3JpdGVXcmFwcGVkVGV4dChlbCwgbmV3Q29udGV4dCwgdGV4dCwgbGVmdCwgdG9wLCB3KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gaGFuZGxlIHRoZSBzdGFuZGFyZCB0YWJsZSBsZWdlbmQKCiAgICAgICAgICAgIGVsc2UgaWYgKHRhZ25hbWUgPT09ICd0YWJsZScgJiYgJChlbCkuaGFzQ2xhc3MoJ2pxcGxvdC10YWJsZS1sZWdlbmQnKSkgewogICAgICAgICAgICAgICAgbmV3Q29udGV4dC5zdHJva2VTdHlsZSA9ICQoZWwpLmNzcygnYm9yZGVyLXRvcC1jb2xvcicpOwogICAgICAgICAgICAgICAgbmV3Q29udGV4dC5maWxsU3R5bGUgPSAkKGVsKS5jc3MoJ2JhY2tncm91bmQtY29sb3InKTsKICAgICAgICAgICAgICAgIG5ld0NvbnRleHQuZmlsbFJlY3QobGVmdCwgdG9wLCAkKGVsKS5pbm5lcldpZHRoKCksICQoZWwpLmlubmVySGVpZ2h0KCkpOwogICAgICAgICAgICAgICAgaWYgKHBhcnNlSW50KCQoZWwpLmNzcygnYm9yZGVyLXRvcC13aWR0aCcpLCAxMCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgbmV3Q29udGV4dC5zdHJva2VSZWN0KGxlZnQsIHRvcCwgJChlbCkuaW5uZXJXaWR0aCgpLCAkKGVsKS5pbm5lckhlaWdodCgpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBmaW5kIGFsbCB0aGUgc3dhdGNoZXMKICAgICAgICAgICAgICAgICQoZWwpLmZpbmQoJ2Rpdi5qcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaC1vdXRsaW5lJykuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAvLyBnZXQgdGhlIGZpcnN0IGRpdiBhbmQgc3Ryb2tlIGl0CiAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW0gPSAkKHRoaXMpOwogICAgICAgICAgICAgICAgICAgIG5ld0NvbnRleHQuc3Ryb2tlU3R5bGUgPSBlbGVtLmNzcygnYm9yZGVyLXRvcC1jb2xvcicpOwogICAgICAgICAgICAgICAgICAgIHZhciBsID0gbGVmdCArIGVsZW0ucG9zaXRpb24oKS5sZWZ0OwogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdG9wICsgZWxlbS5wb3NpdGlvbigpLnRvcDsKICAgICAgICAgICAgICAgICAgICBuZXdDb250ZXh0LnN0cm9rZVJlY3QobCwgdCwgZWxlbS5pbm5lcldpZHRoKCksIGVsZW0uaW5uZXJIZWlnaHQoKSk7CgogICAgICAgICAgICAgICAgICAgIC8vIG5vdyBmaWxsIHRoZSBzd2F0Y2gKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBsICs9IHBhcnNlSW50KGVsZW0uY3NzKCdwYWRkaW5nLWxlZnQnKSwgMTApOwogICAgICAgICAgICAgICAgICAgIHQgKz0gcGFyc2VJbnQoZWxlbS5jc3MoJ3BhZGRpbmctdG9wJyksIDEwKTsKICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IGVsZW0uaW5uZXJIZWlnaHQoKSAtIDIgKiBwYXJzZUludChlbGVtLmNzcygncGFkZGluZy10b3AnKSwgMTApOwogICAgICAgICAgICAgICAgICAgIHZhciB3ID0gZWxlbS5pbm5lcldpZHRoKCkgLSAyICogcGFyc2VJbnQoZWxlbS5jc3MoJ3BhZGRpbmctbGVmdCcpLCAxMCk7CgogICAgICAgICAgICAgICAgICAgIHZhciBzd2F0Y2ggPSBlbGVtLmNoaWxkcmVuKCdkaXYuanFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2gnKTsKICAgICAgICAgICAgICAgICAgICBuZXdDb250ZXh0LmZpbGxTdHlsZSA9IHN3YXRjaC5jc3MoJ2JhY2tncm91bmQtY29sb3InKTsKICAgICAgICAgICAgICAgICAgICBuZXdDb250ZXh0LmZpbGxSZWN0KGwsIHQsIHcsIGgpOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy8gbm93IGFkZCB0ZXh0CgogICAgICAgICAgICAgICAgJChlbCkuZmluZCgndGQuanFwbG90LXRhYmxlLWxlZ2VuZC1sYWJlbCcpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbSA9ICQodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGwgPSBsZWZ0ICsgZWxlbS5wb3NpdGlvbigpLmxlZnQ7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0b3AgKyBlbGVtLnBvc2l0aW9uKCkudG9wICsgcGFyc2VJbnQoZWxlbS5jc3MoJ3BhZGRpbmctdG9wJyksIDEwKTsKICAgICAgICAgICAgICAgICAgICBuZXdDb250ZXh0LmZvbnQgPSBlbGVtLmpxcGxvdEdldENvbXB1dGVkRm9udFN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgbmV3Q29udGV4dC5maWxsU3R5bGUgPSBlbGVtLmNzcygnY29sb3InKTsKICAgICAgICAgICAgICAgICAgICB3cml0ZVdyYXBwZWRUZXh0KGVsZW0sIG5ld0NvbnRleHQsIGVsZW0udGV4dCgpLCBsLCB0LCB3KTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIHZhciBlbGVtID0gbnVsbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzZSBpZiAodGFnbmFtZSA9PSAnY2FudmFzJykgewogICAgICAgICAgICAgICAgbmV3Q29udGV4dC5kcmF3SW1hZ2UoZWwsIGxlZnQsIHRvcCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJCh0aGlzKS5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIF9qcXBUb0ltYWdlKHRoaXMsIHhfb2Zmc2V0LCB5X29mZnNldCk7CiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuIG5ld0NhbnZhczsKICAgIH07CgogICAgLy8gcmV0dXJuIHRoZSByYXcgaW1hZ2UgZGF0YSBzdHJpbmcuCiAgICAvLyBTaG91bGQgd29yayBvbiBjYW52YXMgc3VwcG9ydGluZyBicm93c2Vycy4KICAgICQuZm4uanFwbG90VG9JbWFnZVN0ciA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICB2YXIgaW1nQ2FudmFzID0gJCh0aGlzKS5qcXBsb3RUb0ltYWdlQ2FudmFzKG9wdGlvbnMpOwogICAgICAgIGlmIChpbWdDYW52YXMpIHsKICAgICAgICAgICAgcmV0dXJuIGltZ0NhbnZhcy50b0RhdGFVUkwoImltYWdlL3BuZyIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgfTsKCiAgICAvLyByZXR1cm4gYSBET00gPGltZz4gZWxlbWVudCBhbmQgcmV0dXJuIGl0LgogICAgLy8gU2hvdWxkIHdvcmsgb24gY2FudmFzIHN1cHBvcnRpbmcgYnJvd3NlcnMuCiAgICAkLmZuLmpxcGxvdFRvSW1hZ2VFbGVtID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgIHZhciBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CiAgICAgICAgdmFyIHN0ciA9ICQodGhpcykuanFwbG90VG9JbWFnZVN0cihvcHRpb25zKTsKICAgICAgICBlbGVtLnNyYyA9IHN0cjsKICAgICAgICByZXR1cm4gZWxlbTsKICAgIH07CgogICAgLy8gcmV0dXJuIGEgc3RyaW5nIGZvciBhbiA8aW1nPiBlbGVtZW50IGFuZCByZXR1cm4gaXQuCiAgICAvLyBTaG91bGQgd29yayBvbiBjYW52YXMgc3VwcG9ydGluZyBicm93c2Vycy4KICAgICQuZm4uanFwbG90VG9JbWFnZUVsZW1TdHIgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgdmFyIHN0ciA9ICc8aW1nIHNyYz0nKyQodGhpcykuanFwbG90VG9JbWFnZVN0cihvcHRpb25zKSsnIC8+JzsKICAgICAgICByZXR1cm4gc3RyOwogICAgfTsKCiAgICAvLyBOb3QgZ3VhcmFudGVlZCB0byB3b3JrLCBldmVuIG9uIGNhbnZhcyBzdXBwb3J0aW5nIGJyb3dzZXJzIGR1ZSB0byAKICAgIC8vIGxpbWl0YXRpb25zIHdpdGggbG9jYXRpb24uaHJlZiBhbmQgYnJvd3NlciBzdXBwb3J0LgogICAgJC5mbi5qcXBsb3RTYXZlSW1hZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgaW1nRGF0YSA9ICQodGhpcykuanFwbG90VG9JbWFnZVN0cih7fSk7CiAgICAgICAgaWYgKGltZ0RhdGEpIHsKICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBpbWdEYXRhLnJlcGxhY2UoImltYWdlL3BuZyIsICJpbWFnZS9vY3RldC1zdHJlYW0iKTsKICAgICAgICB9CgogICAgfTsKCiAgICAvLyBOb3QgZ3VhcmFudGVlZCB0byB3b3JrLCBldmVuIG9uIGNhbnZhcyBzdXBwb3J0aW5nIGJyb3dzZXJzIGR1ZSB0bwogICAgLy8gbGltaXRhdGlvbnMgd2l0aCB3aW5kb3cub3BlbiBhbmQgYXJiaXRyYXJ5IGRhdGEuCiAgICAkLmZuLmpxcGxvdFZpZXdJbWFnZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBpbWdTdHIgPSAkKHRoaXMpLmpxcGxvdFRvSW1hZ2VFbGVtU3RyKHt9KTsKICAgICAgICB2YXIgaW1nRGF0YSA9ICQodGhpcykuanFwbG90VG9JbWFnZVN0cih7fSk7CiAgICAgICAgaWYgKGltZ1N0cikgewogICAgICAgICAgICB2YXIgdyA9IHdpbmRvdy5vcGVuKCcnKTsKICAgICAgICAgICAgdy5kb2N1bWVudC5vcGVuKCJpbWFnZS9wbmciKTsKICAgICAgICAgICAgdy5kb2N1bWVudC53cml0ZShpbWdTdHIpOwogICAgICAgICAgICB3LmRvY3VtZW50LmNsb3NlKCk7CiAgICAgICAgICAgIHcgPSBudWxsOwogICAgICAgIH0KICAgIH07CiAgICAKCgoKICAgIC8qKiAKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogPHA+T2JqZWN0IHdpdGggZXh0ZW5kZWQgZGF0ZSBwYXJzaW5nIGFuZCBmb3JtYXR0aW5nIGNhcGFiaWxpdGllcy4KICAgICAqIFRoaXMgbGlicmFyeSBib3Jyb3dzIG1hbnkgY29uY2VwdHMgYW5kIGlkZWFzIGZyb20gdGhlIERhdGUgSW5zdGFuY2UgCiAgICAgKiBNZXRob2RzIGJ5IEtlbiBTbnlkZXIgYWxvbmcgd2l0aCBzb21lIHBhcnRzIG9mIEtlbidzIGFjdHVhbCBjb2RlLjwvcD4KICAgICAqCiAgICAgKiA8cD5qc0RhdGUgdGFrZXMgYSBkaWZmZXJlbnQgYXBwcm9hY2ggYnkgbm90IGV4dGVuZGluZyB0aGUgYnVpbHQtaW4gCiAgICAgKiBEYXRlIE9iamVjdCwgaW1wcm92aW5nIGRhdGUgcGFyc2luZywgYWxsb3dpbmcgZm9yIG11bHRpcGxlIGZvcm1hdHRpbmcgCiAgICAgKiBzeW50YXhlcyBhbmQgbXVsdGlwbGUgYW5kIG1vcmUgZWFzaWx5IGV4cGFuZGFibGUgbG9jYWxpemF0aW9uLjwvcD4KICAgICAqIAogICAgICogQGF1dGhvciBDaHJpcyBMZW9uZWxsbwogICAgICogQGRhdGUgI2RhdGUjCiAgICAgKiBAdmVyc2lvbiAjVkVSU0lPTiMKICAgICAqIEBjb3B5cmlnaHQgKGMpIDIwMTAtMjAxMyBDaHJpcyBMZW9uZWxsbwogICAgICoganNEYXRlIGlzIGN1cnJlbnRseSBhdmFpbGFibGUgZm9yIHVzZSBpbiBhbGwgcGVyc29uYWwgb3IgY29tbWVyY2lhbCBwcm9qZWN0cyAKICAgICAqIHVuZGVyIGJvdGggdGhlIE1JVCBhbmQgR1BMIHZlcnNpb24gMi4wIGxpY2Vuc2VzLiBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiAKICAgICAqIGNob29zZSB0aGUgbGljZW5zZSB0aGF0IGJlc3Qgc3VpdHMgeW91ciBwcm9qZWN0IGFuZCB1c2UgaXQgYWNjb3JkaW5nbHkuCiAgICAgKiAKICAgICAqIDxwPktlbidzIG9yaWdpbmFsIERhdGUgSW5zdGFuY2UgTWV0aG9kcyBhbmQgY29weXJpZ2h0IG5vdGljZTo8L3A+CiAgICAgKiA8cHJlPgogICAgICogS2VuIFNueWRlciAoa2VuIGQgc255ZGVyIGF0IGdtYWlsIGRvdCBjb20pCiAgICAgKiAyMDA4LTA5LTEwCiAgICAgKiB2ZXJzaW9uIDIuMC4yIChodHRwOi8va2VuZHNueWRlci5jb20vc2FuZGJveC9kYXRlLykgICAgIAogICAgICogQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbiBMaWNlbnNlIDMuMCAoaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvMy4wLykKICAgICAqIDwvcHJlPgogICAgICogCiAgICAgKiBAY2xhc3MKICAgICAqIEBuYW1lIGpzRGF0ZQogICAgICogQHBhcmFtICB7U3RyaW5nIHwgTnVtYmVyIHwgQXJyYXkgfCBEYXRlJm5ic3A7T2JqZWN0IHwgT3B0aW9ucyZuYnNwO09iamVjdH0gYXJndW1lbnRzIE9wdGlvbmFsIGFyZ3VtZW50cywgZWl0aGVyIGEgcGFyc2FibGUgZGF0ZS90aW1lIHN0cmluZywKICAgICAqIGEgSmF2YVNjcmlwdCB0aW1lc3RhbXAsIGFuIGFycmF5IG9mIG51bWJlcnMgb2YgZm9ybSBbeWVhciwgbW9udGgsIGRheSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kc10sCiAgICAgKiBhIERhdGUgb2JqZWN0LCBvciBhbiBvcHRpb25zIG9iamVjdCBvZiBmb3JtIHtzeW50YXg6ICJwZXJsIiwgZGF0ZTpzb21lIERhdGV9IHdoZXJlIGFsbCBvcHRpb25zIGFyZSBvcHRpb25hbC4KICAgICAqLwogICAgIAogICAgdmFyIGpzRGF0ZSA9IGZ1bmN0aW9uICgpIHsKICAgIAogICAgICAgIHRoaXMuc3ludGF4ID0ganNEYXRlLmNvbmZpZy5zeW50YXg7CiAgICAgICAgdGhpcy5fdHlwZSA9ICJqc0RhdGUiOwogICAgICAgIHRoaXMucHJveHkgPSBuZXcgRGF0ZSgpOwogICAgICAgIHRoaXMub3B0aW9ucyA9IHt9OwogICAgICAgIHRoaXMubG9jYWxlID0ganNEYXRlLnJlZ2lvbmFsLmdldExvY2FsZSgpOwogICAgICAgIHRoaXMuZm9ybWF0U3RyaW5nID0gJyc7CiAgICAgICAgdGhpcy5kZWZhdWx0Q2VudHVyeSA9IGpzRGF0ZS5jb25maWcuZGVmYXVsdENlbnR1cnk7CgogICAgICAgIHN3aXRjaCAoIGFyZ3VtZW50cy5sZW5ndGggKSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAvLyBvdGhlciBvYmplY3RzIGVpdGhlciB3b24ndCBoYXZlIGEgX3R5cGUgcHJvcGVydHkgb3IsCiAgICAgICAgICAgICAgICAvLyBpZiB0aGV5IGRvLCBpdCBzaG91bGRuJ3QgYmUgc2V0IHRvICJqc0RhdGUiLCBzbwogICAgICAgICAgICAgICAgLy8gYXNzdW1lIGl0IGlzIGFuIG9wdGlvbnMgYXJndW1lbnQuCiAgICAgICAgICAgICAgICBpZiAoZ2V0X3R5cGUoYXJndW1lbnRzWzBdKSA9PSAiW29iamVjdCBPYmplY3RdIiAmJiBhcmd1bWVudHNbMF0uX3R5cGUgIT0gImpzRGF0ZSIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgb3B0cyA9IHRoaXMub3B0aW9ucyA9IGFyZ3VtZW50c1swXTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnN5bnRheCA9IG9wdHMuc3ludGF4IHx8IHRoaXMuc3ludGF4OwogICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdENlbnR1cnkgPSBvcHRzLmRlZmF1bHRDZW50dXJ5IHx8IHRoaXMuZGVmYXVsdENlbnR1cnk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm94eSA9IGpzRGF0ZS5jcmVhdGVEYXRlKG9wdHMuZGF0ZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3h5ID0ganNEYXRlLmNyZWF0ZURhdGUoYXJndW1lbnRzWzBdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdmFyIGEgPSBbXTsKICAgICAgICAgICAgICAgIGZvciAoIHZhciBpPTA7IGk8YXJndW1lbnRzLmxlbmd0aDsgaSsrICkgewogICAgICAgICAgICAgICAgICAgIGEucHVzaChhcmd1bWVudHNbaV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gdGhpcyBzaG91bGQgYmUgdGhlIGN1cnJlbnQgZGF0ZS90aW1lPwogICAgICAgICAgICAgICAgdGhpcy5wcm94eSA9IG5ldyBEYXRlKCk7CiAgICAgICAgICAgICAgICB0aGlzLnByb3h5LnNldEZ1bGxZZWFyLmFwcGx5KCB0aGlzLnByb3h5LCBhLnNsaWNlKDAsMykgKTsKICAgICAgICAgICAgICAgIGlmICggYS5zbGljZSgzKS5sZW5ndGggKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm94eS5zZXRIb3Vycy5hcHBseSggdGhpcy5wcm94eSwgYS5zbGljZSgzKSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfTsKICAgIAogICAgLyoqCiAgICAgKiBAbmFtZXNwYWNlIENvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IHdpbGwgYmUgdXNlZCBhcyBkZWZhdWx0cyBmb3IgYWxsIGluc3RhbmNlcyBvbiB0aGUgcGFnZS4KICAgICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBkZWZhdWx0TG9jYWxlIFRoZSBkZWZhdWx0IGxvY2FsZSB0byB1c2UgW2VuXS4KICAgICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBzeW50YXggVGhlIGRlZmF1bHQgc3ludGF4IHRvIHVzZSBbcGVybF0uCiAgICAgKiBAcHJvcGVydHkge051bWJlcn0gZGVmYXVsdENlbnR1cnkgVGhlIGRlZmF1bHQgY2VudHJ5IGZvciAyIGRpZ2l0IGRhdGVzLgogICAgICovCiAgICBqc0RhdGUuY29uZmlnID0gewogICAgICAgIGRlZmF1bHRMb2NhbGU6ICdlbicsCiAgICAgICAgc3ludGF4OiAncGVybCcsCiAgICAgICAgZGVmYXVsdENlbnR1cnk6IDE5MDAKICAgIH07CiAgICAgICAgCiAgICAvKioKICAgICAqIEFkZCBhbiBhcmJpdHJhcnkgYW1vdW50IHRvIHRoZSBjdXJyZW50bHkgc3RvcmVkIGRhdGUKICAgICAqIAogICAgICogQHBhcmFtIHtOdW1iZXJ9IG51bWJlciAgICAgIAogICAgICogQHBhcmFtIHtTdHJpbmd9IHVuaXQKICAgICAqIEByZXR1cm5zIHtqc0RhdGV9ICAgICAgIAogICAgICovCiAgICAgCiAgICBqc0RhdGUucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKG51bWJlciwgdW5pdCkgewogICAgICAgIHZhciBmYWN0b3IgPSBtdWx0aXBsaWVyc1t1bml0XSB8fCBtdWx0aXBsaWVycy5kYXk7CiAgICAgICAgaWYgKHR5cGVvZiBmYWN0b3IgPT0gJ251bWJlcicpIHsKICAgICAgICAgICAgdGhpcy5wcm94eS5zZXRUaW1lKHRoaXMucHJveHkuZ2V0VGltZSgpICsgKGZhY3RvciAqIG51bWJlcikpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZhY3Rvci5hZGQodGhpcywgbnVtYmVyKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICB9OwogICAgICAgIAogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcganFwbG90LmRhdGUgb2JqZWN0IHdpdGggdGhlIHNhbWUgZGF0ZQogICAgICogCiAgICAgKiBAcmV0dXJucyB7anNEYXRlfQogICAgICovICAKICAgICAKICAgIGpzRGF0ZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBqc0RhdGUodGhpcy5wcm94eS5nZXRUaW1lKCkpOwogICAgfTsKCiAgICAvKioKICAgICAqIEdldCB0aGUgVVRDIFRpbWVab25lIE9mZnNldCBvZiB0aGlzIGRhdGUgaW4gbWlsbGlzZWNvbmRzLgogICAgICoKICAgICAqIEByZXR1cm5zIHtOdW1iZXJ9CiAgICAgKi8KCiAgICBqc0RhdGUucHJvdG90eXBlLmdldFV0Y09mZnNldCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLnByb3h5LmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMDsKICAgIH07CgogICAgLyoqCiAgICAgKiBGaW5kIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBqc0RhdGUgYW5kIGFub3RoZXIgZGF0ZS4KICAgICAqIAogICAgICogQHBhcmFtIHtTdHJpbmd8IE51bWJlcnwgQXJyYXl8IGpzRGF0ZSZuYnNwO09iamVjdHwgRGF0ZSZuYnNwO09iamVjdH0gZGF0ZU9iagogICAgICogQHBhcmFtIHtTdHJpbmd9IHVuaXQKICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gYWxsb3dEZWNpbWFsCiAgICAgKiBAcmV0dXJucyB7TnVtYmVyfSBOdW1iZXIgb2YgdW5pdHMgZGlmZmVyZW5jZSBiZXR3ZWVuIGRhdGVzLgogICAgICovCiAgICAgCiAgICBqc0RhdGUucHJvdG90eXBlLmRpZmYgPSBmdW5jdGlvbihkYXRlT2JqLCB1bml0LCBhbGxvd0RlY2ltYWwpIHsKICAgICAgICAvLyBlbnN1cmUgd2UgaGF2ZSBhIERhdGUgb2JqZWN0CiAgICAgICAgZGF0ZU9iaiA9IG5ldyBqc0RhdGUoZGF0ZU9iaik7CiAgICAgICAgaWYgKGRhdGVPYmogPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICAgIC8vIGdldCB0aGUgbXVsdGlwbHlpbmcgZmFjdG9yIGludGVnZXIgb3IgZmFjdG9yIGZ1bmN0aW9uCiAgICAgICAgdmFyIGZhY3RvciA9IG11bHRpcGxpZXJzW3VuaXRdIHx8IG11bHRpcGxpZXJzLmRheTsKICAgICAgICBpZiAodHlwZW9mIGZhY3RvciA9PSAnbnVtYmVyJykgewogICAgICAgICAgICAvLyBtdWx0aXBseQogICAgICAgICAgICB2YXIgdW5pdERpZmYgPSAodGhpcy5wcm94eS5nZXRUaW1lKCkgLSBkYXRlT2JqLnByb3h5LmdldFRpbWUoKSkgLyBmYWN0b3I7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gcnVuIGZ1bmN0aW9uCiAgICAgICAgICAgIHZhciB1bml0RGlmZiA9IGZhY3Rvci5kaWZmKHRoaXMucHJveHksIGRhdGVPYmoucHJveHkpOwogICAgICAgIH0KICAgICAgICAvLyBpZiBkZWNpbWFscyBhcmUgbm90IGFsbG93ZWQsIHJvdW5kIHRvd2FyZCB6ZXJvCiAgICAgICAgcmV0dXJuIChhbGxvd0RlY2ltYWwgPyB1bml0RGlmZiA6IE1hdGhbdW5pdERpZmYgPiAwID8gJ2Zsb29yJyA6ICdjZWlsJ10odW5pdERpZmYpKTsgICAgICAgICAgCiAgICB9OwogICAgCiAgICAvKioKICAgICAqIEdldCB0aGUgYWJicmV2aWF0ZWQgbmFtZSBvZiB0aGUgY3VycmVudCB3ZWVrIGRheQogICAgICogCiAgICAgKiBAcmV0dXJucyB7U3RyaW5nfQogICAgICovICAgCiAgICAgCiAgICBqc0RhdGUucHJvdG90eXBlLmdldEFiYnJEYXlOYW1lID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGpzRGF0ZS5yZWdpb25hbFt0aGlzLmxvY2FsZV1bImRheU5hbWVzU2hvcnQiXVt0aGlzLnByb3h5LmdldERheSgpXTsKICAgIH07CiAgICAKICAgIC8qKgogICAgICogR2V0IHRoZSBhYmJyZXZpYXRlZCBuYW1lIG9mIHRoZSBjdXJyZW50IG1vbnRoCiAgICAgKiAKICAgICAqIEByZXR1cm5zIHtTdHJpbmd9CiAgICAgKi8KICAgICAKICAgIGpzRGF0ZS5wcm90b3R5cGUuZ2V0QWJick1vbnRoTmFtZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBqc0RhdGUucmVnaW9uYWxbdGhpcy5sb2NhbGVdWyJtb250aE5hbWVzU2hvcnQiXVt0aGlzLnByb3h5LmdldE1vbnRoKCldOwogICAgfTsKICAgIAogICAgLyoqCiAgICAgKiBHZXQgVVBQRVIgQ0FTRSBBTSBvciBQTSBmb3IgdGhlIGN1cnJlbnQgdGltZQogICAgICogCiAgICAgKiBAcmV0dXJucyB7U3RyaW5nfQogICAgICovCiAgICAgCiAgICBqc0RhdGUucHJvdG90eXBlLmdldEFNUE0gPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5nZXRIb3VycygpID49IDEyID8gJ1BNJyA6ICdBTSc7CiAgICB9OwogICAgCiAgICAvKioKICAgICAqIEdldCBsb3dlciBjYXNlIGFtIG9yIHBtIGZvciB0aGUgY3VycmVudCB0aW1lCiAgICAgKiAKICAgICAqIEByZXR1cm5zIHtTdHJpbmd9CiAgICAgKi8KICAgICAKICAgIGpzRGF0ZS5wcm90b3R5cGUuZ2V0QW1QbSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLnByb3h5LmdldEhvdXJzKCkgPj0gMTIgPyAncG0nIDogJ2FtJzsKICAgIH07CiAgICAKICAgIC8qKgogICAgICogR2V0IHRoZSBjZW50dXJ5ICgxOSBmb3IgMjB0aCBDZW50dXJ5KQogICAgICoKICAgICAqIEByZXR1cm5zIHtJbnRlZ2VyfSBDZW50dXJ5ICgxOSBmb3IgMjB0aCBjZW50dXJ5KS4KICAgICAqLwogICAganNEYXRlLnByb3RvdHlwZS5nZXRDZW50dXJ5ID0gZnVuY3Rpb24oKSB7IAogICAgICAgIHJldHVybiBwYXJzZUludCh0aGlzLnByb3h5LmdldEZ1bGxZZWFyKCkvMTAwLCAxMCk7CiAgICB9OwogICAgCiAgICAvKioKICAgICAqIEltcGxlbWVudHMgRGF0ZSBmdW5jdGlvbmFsaXR5CiAgICAgKi8KICAgIGpzRGF0ZS5wcm90b3R5cGUuZ2V0RGF0ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLnByb3h5LmdldERhdGUoKTsKICAgIH07CiAgICAKICAgIC8qKgogICAgICogSW1wbGVtZW50cyBEYXRlIGZ1bmN0aW9uYWxpdHkKICAgICAqLwogICAganNEYXRlLnByb3RvdHlwZS5nZXREYXkgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5nZXREYXkoKTsKICAgIH07CiAgICAKICAgIC8qKgogICAgICogR2V0IHRoZSBEYXkgb2Ygd2VlayAxIChNb25kYXkpIHRocnUgNyAoU3VuZGF5KQogICAgICogCiAgICAgKiBAcmV0dXJucyB7SW50ZWdlcn0gRGF5IG9mIHdlZWsgMSAoTW9uZGF5KSB0aHJ1IDcgKFN1bmRheSkKICAgICAqLwogICAganNEYXRlLnByb3RvdHlwZS5nZXREYXlPZldlZWsgPSBmdW5jdGlvbigpIHsgCiAgICAgICAgdmFyIGRvdyA9IHRoaXMucHJveHkuZ2V0RGF5KCk7IAogICAgICAgIHJldHVybiBkb3c9PT0wPzc6ZG93OyAKICAgIH07CiAgICAKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXkgb2YgdGhlIHllYXIKICAgICAqIAogICAgICogQHJldHVybnMge0ludGVnZXJ9IDEgLSAzNjYsIGRheSBvZiB0aGUgeWVhcgogICAgICovCiAgICBqc0RhdGUucHJvdG90eXBlLmdldERheU9mWWVhciA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBkID0gdGhpcy5wcm94eTsKICAgICAgICB2YXIgbXMgPSBkIC0gbmV3IERhdGUoJycgKyBkLmdldEZ1bGxZZWFyKCkgKyAnLzEvMSBHTVQnKTsKICAgICAgICBtcyArPSBkLmdldFRpbWV6b25lT2Zmc2V0KCkqNjAwMDA7CiAgICAgICAgZCA9IG51bGw7CiAgICAgICAgcmV0dXJuIHBhcnNlSW50KG1zLzYwMDAwLzYwLzI0LCAxMCkrMTsKICAgIH07CiAgICAKICAgIC8qKgogICAgICogR2V0IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IHdlZWsgZGF5CiAgICAgKiAKICAgICAqIEByZXR1cm5zIHtTdHJpbmd9CiAgICAgKi8gIAogICAgIAogICAganNEYXRlLnByb3RvdHlwZS5nZXREYXlOYW1lID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGpzRGF0ZS5yZWdpb25hbFt0aGlzLmxvY2FsZV1bImRheU5hbWVzIl1bdGhpcy5wcm94eS5nZXREYXkoKV07CiAgICB9OwogICAgCiAgICAvKioKICAgICAqIEdldCB0aGUgd2VlayBudW1iZXIgb2YgdGhlIGdpdmVuIHllYXIsIHN0YXJ0aW5nIHdpdGggdGhlIGZpcnN0IFN1bmRheSBhcyB0aGUgZmlyc3Qgd2VlawogICAgICogQHJldHVybnMge0ludGVnZXJ9IFdlZWsgbnVtYmVyICgxMyBmb3IgdGhlIDEzdGggZnVsbCB3ZWVrIG9mIHRoZSB5ZWFyKS4KICAgICAqLwogICAganNEYXRlLnByb3RvdHlwZS5nZXRGdWxsV2Vla09mWWVhciA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBkID0gdGhpcy5wcm94eTsKICAgICAgICB2YXIgZG95ID0gdGhpcy5nZXREYXlPZlllYXIoKTsKICAgICAgICB2YXIgcmRvdyA9IDYtZC5nZXREYXkoKTsKICAgICAgICB2YXIgd295ID0gcGFyc2VJbnQoKGRveStyZG93KS83LCAxMCk7CiAgICAgICAgcmV0dXJuIHdveTsKICAgIH07CiAgICAKICAgIC8qKgogICAgICogSW1wbGVtZW50cyBEYXRlIGZ1bmN0aW9uYWxpdHkKICAgICAqLwogICAganNEYXRlLnByb3RvdHlwZS5nZXRGdWxsWWVhciA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLnByb3h5LmdldEZ1bGxZZWFyKCk7CiAgICB9OwogICAgCiAgICAvKioKICAgICAqIEdldCB0aGUgR01UIG9mZnNldCBpbiBob3VycyBhbmQgbWludXRlcyAoZS5nLiArMDY6MzApCiAgICAgKiAKICAgICAqIEByZXR1cm5zIHtTdHJpbmd9CiAgICAgKi8KICAgICAKICAgIGpzRGF0ZS5wcm90b3R5cGUuZ2V0R210T2Zmc2V0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gZGl2aWRlIHRoZSBtaW51dGVzIG9mZnNldCBieSA2MAogICAgICAgIHZhciBob3VycyA9IHRoaXMucHJveHkuZ2V0VGltZXpvbmVPZmZzZXQoKSAvIDYwOwogICAgICAgIC8vIGRlY2lkZSBpZiB3ZSBhcmUgYWhlYWQgb2Ygb3IgYmVoaW5kIEdNVAogICAgICAgIHZhciBwcmVmaXggPSBob3VycyA8IDAgPyAnKycgOiAnLSc7CiAgICAgICAgLy8gcmVtb3ZlIHRoZSBuZWdhdGl2ZSBzaWduIGlmIGFueQogICAgICAgIGhvdXJzID0gTWF0aC5hYnMoaG91cnMpOwogICAgICAgIC8vIGFkZCB0aGUgKy8tIHRvIHRoZSBwYWRkZWQgbnVtYmVyIG9mIGhvdXJzIHRvIDogdG8gdGhlIHBhZGRlZCBtaW51dGVzCiAgICAgICAgcmV0dXJuIHByZWZpeCArIGFkZFplcm9zKE1hdGguZmxvb3IoaG91cnMpLCAyKSArICc6JyArIGFkZFplcm9zKChob3VycyAlIDEpICogNjAsIDIpOwogICAgfTsKICAgIAogICAgLyoqCiAgICAgKiBJbXBsZW1lbnRzIERhdGUgZnVuY3Rpb25hbGl0eQogICAgICovCiAgICBqc0RhdGUucHJvdG90eXBlLmdldEhvdXJzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuZ2V0SG91cnMoKTsKICAgIH07CiAgICAKICAgIC8qKgogICAgICogR2V0IHRoZSBjdXJyZW50IGhvdXIgb24gYSAxMi1ob3VyIHNjaGVtZQogICAgICogCiAgICAgKiBAcmV0dXJucyB7SW50ZWdlcn0KICAgICAqLwogICAgIAogICAganNEYXRlLnByb3RvdHlwZS5nZXRIb3VyczEyICA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBob3VycyA9IHRoaXMucHJveHkuZ2V0SG91cnMoKTsKICAgICAgICByZXR1cm4gaG91cnMgPiAxMiA/IGhvdXJzIC0gMTIgOiAoaG91cnMgPT0gMCA/IDEyIDogaG91cnMpOwogICAgfTsKICAgIAogICAgCiAgICBqc0RhdGUucHJvdG90eXBlLmdldElzb1dlZWsgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZCA9IHRoaXMucHJveHk7CiAgICAgICAgdmFyIHdveSA9IHRoaXMuZ2V0V2Vla09mWWVhcigpOwogICAgICAgIHZhciBkb3cxXzEgPSAobmV3IERhdGUoJycgKyBkLmdldEZ1bGxZZWFyKCkgKyAnLzEvMScpKS5nZXREYXkoKTsKICAgICAgICAvLyBGaXJzdCB3ZWVrIGlzIDAxIGFuZCBub3QgMDAgYXMgaW4gdGhlIGNhc2Ugb2YgJVUgYW5kICVXLAogICAgICAgIC8vIHNvIHdlIGFkZCAxIHRvIHRoZSBmaW5hbCByZXN1bHQgZXhjZXB0IGlmIGRheSAxIG9mIHRoZSB5ZWFyCiAgICAgICAgLy8gaXMgYSBNb25kYXkgKHRoZW4gJVcgcmV0dXJucyAwMSkuCiAgICAgICAgLy8gV2UgYWxzbyBuZWVkIHRvIHN1YnRyYWN0IDEgaWYgdGhlIGRheSAxIG9mIHRoZSB5ZWFyIGlzIAogICAgICAgIC8vIEZyaWRheS1TdW5kYXksIHNvIHRoZSByZXN1bHRpbmcgZXF1YXRpb24gYmVjb21lczoKICAgICAgICB2YXIgaWRvdyA9IHdveSArIChkb3cxXzEgPiA0IHx8IGRvdzFfMSA8PSAxID8gMCA6IDEpOwogICAgICAgIGlmKGlkb3cgPT0gNTMgJiYgKG5ldyBEYXRlKCcnICsgZC5nZXRGdWxsWWVhcigpICsgJy8xMi8zMScpKS5nZXREYXkoKSA8IDQpCiAgICAgICAgewogICAgICAgICAgICBpZG93ID0gMTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihpZG93ID09PSAwKQogICAgICAgIHsKICAgICAgICAgICAgZCA9IG5ldyBqc0RhdGUobmV3IERhdGUoJycgKyAoZC5nZXRGdWxsWWVhcigpLTEpICsgJy8xMi8zMScpKTsKICAgICAgICAgICAgaWRvdyA9IGQuZ2V0SXNvV2VlaygpOwogICAgICAgIH0KICAgICAgICBkID0gbnVsbDsKICAgICAgICByZXR1cm4gaWRvdzsKICAgIH07CiAgICAKICAgIC8qKgogICAgICogSW1wbGVtZW50cyBEYXRlIGZ1bmN0aW9uYWxpdHkKICAgICAqLwogICAganNEYXRlLnByb3RvdHlwZS5nZXRNaWxsaXNlY29uZHMgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5nZXRNaWxsaXNlY29uZHMoKTsKICAgIH07CiAgICAKICAgIC8qKgogICAgICogSW1wbGVtZW50cyBEYXRlIGZ1bmN0aW9uYWxpdHkKICAgICAqLwogICAganNEYXRlLnByb3RvdHlwZS5nZXRNaW51dGVzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuZ2V0TWludXRlcygpOwogICAgfTsKICAgIAogICAgLyoqCiAgICAgKiBJbXBsZW1lbnRzIERhdGUgZnVuY3Rpb25hbGl0eQogICAgICovCiAgICBqc0RhdGUucHJvdG90eXBlLmdldE1vbnRoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuZ2V0TW9udGgoKTsKICAgIH07CiAgICAKICAgIC8qKgogICAgICogR2V0IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IG1vbnRoCiAgICAgKiAKICAgICAqIEByZXR1cm5zIHtTdHJpbmd9CiAgICAgKi8KICAgICAKICAgIGpzRGF0ZS5wcm90b3R5cGUuZ2V0TW9udGhOYW1lID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGpzRGF0ZS5yZWdpb25hbFt0aGlzLmxvY2FsZV1bIm1vbnRoTmFtZXMiXVt0aGlzLnByb3h5LmdldE1vbnRoKCldOwogICAgfTsKICAgIAogICAgLyoqCiAgICAgKiBHZXQgdGhlIG51bWJlciBvZiB0aGUgY3VycmVudCBtb250aCwgMS0xMgogICAgICogCiAgICAgKiBAcmV0dXJucyB7SW50ZWdlcn0KICAgICAqLwogICAgIAogICAganNEYXRlLnByb3RvdHlwZS5nZXRNb250aE51bWJlciA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLnByb3h5LmdldE1vbnRoKCkgKyAxOwogICAgfTsKICAgIAogICAgLyoqCiAgICAgKiBJbXBsZW1lbnRzIERhdGUgZnVuY3Rpb25hbGl0eQogICAgICovCiAgICBqc0RhdGUucHJvdG90eXBlLmdldFNlY29uZHMgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5nZXRTZWNvbmRzKCk7CiAgICB9OwogICAgCiAgICAvKioKICAgICAqIFJldHVybiBhIHByb3BlciB0d28tZGlnaXQgeWVhciBpbnRlZ2VyCiAgICAgKiAKICAgICAqIEByZXR1cm5zIHtJbnRlZ2VyfQogICAgICovCiAgICAgCiAgICBqc0RhdGUucHJvdG90eXBlLmdldFNob3J0WWVhciA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLnByb3h5LmdldFllYXIoKSAlIDEwMDsKICAgIH07CiAgICAKICAgIC8qKgogICAgICogSW1wbGVtZW50cyBEYXRlIGZ1bmN0aW9uYWxpdHkKICAgICAqLwogICAganNEYXRlLnByb3RvdHlwZS5nZXRUaW1lID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuZ2V0VGltZSgpOwogICAgfTsKICAgIAogICAgLyoqCiAgICAgKiBHZXQgdGhlIHRpbWV6b25lIGFiYnJldmlhdGlvbgogICAgICoKICAgICAqIEByZXR1cm5zIHtTdHJpbmd9IEFiYnJldmlhdGlvbiBmb3IgdGhlIHRpbWV6b25lCiAgICAgKi8KICAgIGpzRGF0ZS5wcm90b3R5cGUuZ2V0VGltZXpvbmVBYmJyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkudG9TdHJpbmcoKS5yZXBsYWNlKC9eLipcKChbXildKylcKSQvLCAnJDEnKTsgCiAgICB9OwogICAgCiAgICAvKioKICAgICAqIEdldCB0aGUgYnJvd3Nlci1yZXBvcnRlZCBuYW1lIGZvciB0aGUgY3VycmVudCB0aW1lem9uZSAoZS5nLiBNRFQsIE1vdW50YWluIERheWxpZ2h0IFRpbWUpCiAgICAgKiAKICAgICAqIEByZXR1cm5zIHtTdHJpbmd9CiAgICAgKi8KICAgIGpzRGF0ZS5wcm90b3R5cGUuZ2V0VGltZXpvbmVOYW1lID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIG1hdGNoID0gLyg/OlwoKC4rKVwpJHwgKFtBLVpdezN9KSApLy5leGVjKHRoaXMudG9TdHJpbmcoKSk7CiAgICAgICAgcmV0dXJuIG1hdGNoWzFdIHx8IG1hdGNoWzJdIHx8ICdHTVQnICsgdGhpcy5nZXRHbXRPZmZzZXQoKTsKICAgIH07IAogICAgCiAgICAvKioKICAgICAqIEltcGxlbWVudHMgRGF0ZSBmdW5jdGlvbmFsaXR5CiAgICAgKi8KICAgIGpzRGF0ZS5wcm90b3R5cGUuZ2V0VGltZXpvbmVPZmZzZXQgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5nZXRUaW1lem9uZU9mZnNldCgpOwogICAgfTsKICAgIAogICAgCiAgICAvKioKICAgICAqIEdldCB0aGUgd2VlayBudW1iZXIgb2YgdGhlIGdpdmVuIHllYXIsIHN0YXJ0aW5nIHdpdGggdGhlIGZpcnN0IE1vbmRheSBhcyB0aGUgZmlyc3Qgd2VlawogICAgICogQHJldHVybnMge0ludGVnZXJ9IFdlZWsgbnVtYmVyICgxMyBmb3IgdGhlIDEzdGggd2VlayBvZiB0aGUgeWVhcikuCiAgICAgKi8KICAgIGpzRGF0ZS5wcm90b3R5cGUuZ2V0V2Vla09mWWVhciA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBkb3kgPSB0aGlzLmdldERheU9mWWVhcigpOwogICAgICAgIHZhciByZG93ID0gNyAtIHRoaXMuZ2V0RGF5T2ZXZWVrKCk7CiAgICAgICAgdmFyIHdveSA9IHBhcnNlSW50KChkb3krcmRvdykvNywgMTApOwogICAgICAgIHJldHVybiB3b3k7CiAgICB9OwogICAgCiAgICAvKioKICAgICAqIEdldCB0aGUgY3VycmVudCBkYXRlIGFzIGEgVW5peCB0aW1lc3RhbXAKICAgICAqIAogICAgICogQHJldHVybnMge0ludGVnZXJ9CiAgICAgKi8KICAgICAKICAgIGpzRGF0ZS5wcm90b3R5cGUuZ2V0VW5peCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHRoaXMucHJveHkuZ2V0VGltZSgpIC8gMTAwMCwgMCk7CiAgICB9OyAKICAgIAogICAgLyoqCiAgICAgKiBJbXBsZW1lbnRzIERhdGUgZnVuY3Rpb25hbGl0eQogICAgICovCiAgICBqc0RhdGUucHJvdG90eXBlLmdldFllYXIgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5wcm94eS5nZXRZZWFyKCk7CiAgICB9OwogICAgCiAgICAvKioKICAgICAqIFJldHVybiBhIGRhdGUgb25lIGRheSBhaGVhZCAob3IgYW55IG90aGVyIHVuaXQpCiAgICAgKiAKICAgICAqIEBwYXJhbSB7U3RyaW5nfSB1bml0IE9wdGlvbmFsLCB5ZWFyIHwgbW9udGggfCBkYXkgfCB3ZWVrIHwgaG91ciB8IG1pbnV0ZSB8IHNlY29uZCB8IG1pbGxpc2Vjb25kCiAgICAgKiBAcmV0dXJucyB7anNEYXRlfQogICAgICovCiAgICAgCiAgICBqc0RhdGUucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbih1bml0KSB7CiAgICAgICAgdW5pdCA9IHVuaXQgfHwgJ2RheSc7CiAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5hZGQoMSwgdW5pdCk7CiAgICB9OwogICAgCiAgICAvKioKICAgICAqIFNldCB0aGUganNEYXRlIGluc3RhbmNlIHRvIGEgbmV3IGRhdGUuCiAgICAgKgogICAgICogQHBhcmFtICB7U3RyaW5nIHwgTnVtYmVyIHwgQXJyYXkgfCBEYXRlIE9iamVjdCB8IGpzRGF0ZSBPYmplY3QgfCBPcHRpb25zIE9iamVjdH0gYXJndW1lbnRzIE9wdGlvbmFsIGFyZ3VtZW50cywgCiAgICAgKiBlaXRoZXIgYSBwYXJzYWJsZSBkYXRlL3RpbWUgc3RyaW5nLAogICAgICogYSBKYXZhU2NyaXB0IHRpbWVzdGFtcCwgYW4gYXJyYXkgb2YgbnVtYmVycyBvZiBmb3JtIFt5ZWFyLCBtb250aCwgZGF5LCBob3VycywgbWludXRlcywgc2Vjb25kcywgbWlsbGlzZWNvbmRzXSwKICAgICAqIGEgRGF0ZSBvYmplY3QsIGpzRGF0ZSBPYmplY3Qgb3IgYW4gb3B0aW9ucyBvYmplY3Qgb2YgZm9ybSB7c3ludGF4OiAicGVybCIsIGRhdGU6c29tZSBEYXRlfSB3aGVyZSBhbGwgb3B0aW9ucyBhcmUgb3B0aW9uYWwuCiAgICAgKi8KICAgIGpzRGF0ZS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgc3dpdGNoICggYXJndW1lbnRzLmxlbmd0aCApIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgdGhpcy5wcm94eSA9IG5ldyBEYXRlKCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgLy8gb3RoZXIgb2JqZWN0cyBlaXRoZXIgd29uJ3QgaGF2ZSBhIF90eXBlIHByb3BlcnR5IG9yLAogICAgICAgICAgICAgICAgLy8gaWYgdGhleSBkbywgaXQgc2hvdWxkbid0IGJlIHNldCB0byAianNEYXRlIiwgc28KICAgICAgICAgICAgICAgIC8vIGFzc3VtZSBpdCBpcyBhbiBvcHRpb25zIGFyZ3VtZW50LgogICAgICAgICAgICAgICAgaWYgKGdldF90eXBlKGFyZ3VtZW50c1swXSkgPT0gIltvYmplY3QgT2JqZWN0XSIgJiYgYXJndW1lbnRzWzBdLl90eXBlICE9ICJqc0RhdGUiKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG9wdHMgPSB0aGlzLm9wdGlvbnMgPSBhcmd1bWVudHNbMF07CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zeW50YXggPSBvcHRzLnN5bnRheCB8fCB0aGlzLnN5bnRheDsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRDZW50dXJ5ID0gb3B0cy5kZWZhdWx0Q2VudHVyeSB8fCB0aGlzLmRlZmF1bHRDZW50dXJ5OwogICAgICAgICAgICAgICAgICAgIHRoaXMucHJveHkgPSBqc0RhdGUuY3JlYXRlRGF0ZShvcHRzLmRhdGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm94eSA9IGpzRGF0ZS5jcmVhdGVEYXRlKGFyZ3VtZW50c1swXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHZhciBhID0gW107CiAgICAgICAgICAgICAgICBmb3IgKCB2YXIgaT0wOyBpPGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApIHsKICAgICAgICAgICAgICAgICAgICBhLnB1c2goYXJndW1lbnRzW2ldKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8vIHRoaXMgc2hvdWxkIGJlIHRoZSBjdXJyZW50IGRhdGUvdGltZQogICAgICAgICAgICAgICAgdGhpcy5wcm94eSA9IG5ldyBEYXRlKCk7CiAgICAgICAgICAgICAgICB0aGlzLnByb3h5LnNldEZ1bGxZZWFyLmFwcGx5KCB0aGlzLnByb3h5LCBhLnNsaWNlKDAsMykgKTsKICAgICAgICAgICAgICAgIGlmICggYS5zbGljZSgzKS5sZW5ndGggKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm94eS5zZXRIb3Vycy5hcHBseSggdGhpcy5wcm94eSwgYS5zbGljZSgzKSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzOwogICAgfTsKICAgIAogICAgLyoqCiAgICAgKiBTZXRzIHRoZSBkYXkgb2YgdGhlIG1vbnRoIGZvciBhIHNwZWNpZmllZCBkYXRlIGFjY29yZGluZyB0byBsb2NhbCB0aW1lLgogICAgICogQHBhcmFtIHtJbnRlZ2VyfSBkYXlWYWx1ZSBBbiBpbnRlZ2VyIGZyb20gMSB0byAzMSwgcmVwcmVzZW50aW5nIHRoZSBkYXkgb2YgdGhlIG1vbnRoLiAKICAgICAqLwogICAganNEYXRlLnByb3RvdHlwZS5zZXREYXRlID0gZnVuY3Rpb24obikgewogICAgICAgIHRoaXMucHJveHkuc2V0RGF0ZShuKTsKICAgICAgICByZXR1cm4gdGhpczsKICAgIH07CiAgICAKICAgIC8qKgogICAgICogU2V0cyB0aGUgZnVsbCB5ZWFyIGZvciBhIHNwZWNpZmllZCBkYXRlIGFjY29yZGluZyB0byBsb2NhbCB0aW1lLgogICAgICogQHBhcmFtIHtJbnRlZ2VyfSB5ZWFyVmFsdWUgVGhlIG51bWVyaWMgdmFsdWUgb2YgdGhlIHllYXIsIGZvciBleGFtcGxlLCAxOTk1LiAgCiAgICAgKiBAcGFyYW0ge0ludGVnZXJ9IG1vbnRoVmFsdWUgT3B0aW9uYWwsIGJldHdlZW4gMCBhbmQgMTEgcmVwcmVzZW50aW5nIHRoZSBtb250aHMgSmFudWFyeSB0aHJvdWdoIERlY2VtYmVyLiAgCiAgICAgKiBAcGFyYW0ge0ludGVnZXJ9IGRheVZhbHVlIE9wdGlvbmFsLCBiZXR3ZWVuIDEgYW5kIDMxIHJlcHJlc2VudGluZyB0aGUgZGF5IG9mIHRoZSBtb250aC4gSWYgeW91IHNwZWNpZnkgdGhlIGRheVZhbHVlIHBhcmFtZXRlciwgeW91IG11c3QgYWxzbyBzcGVjaWZ5IHRoZSBtb250aFZhbHVlLiAKICAgICAqLwogICAganNEYXRlLnByb3RvdHlwZS5zZXRGdWxsWWVhciA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMucHJveHkuc2V0RnVsbFllYXIuYXBwbHkodGhpcy5wcm94eSwgYXJndW1lbnRzKTsKICAgICAgICByZXR1cm4gdGhpczsKICAgIH07CiAgICAKICAgIC8qKgogICAgICogU2V0cyB0aGUgaG91cnMgZm9yIGEgc3BlY2lmaWVkIGRhdGUgYWNjb3JkaW5nIHRvIGxvY2FsIHRpbWUuCiAgICAgKiAKICAgICAqIEBwYXJhbSB7SW50ZWdlcn0gaG91cnNWYWx1ZSBBbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMjMsIHJlcHJlc2VudGluZyB0aGUgaG91ci4gIAogICAgICogQHBhcmFtIHtJbnRlZ2VyfSBtaW51dGVzVmFsdWUgT3B0aW9uYWwsIEFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCA1OSwgcmVwcmVzZW50aW5nIHRoZSBtaW51dGVzLiAgCiAgICAgKiBAcGFyYW0ge0ludGVnZXJ9IHNlY29uZHNWYWx1ZSBPcHRpb25hbCwgQW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDU5LCByZXByZXNlbnRpbmcgdGhlIHNlY29uZHMuIAogICAgICogSWYgeW91IHNwZWNpZnkgdGhlIHNlY29uZHNWYWx1ZSBwYXJhbWV0ZXIsIHlvdSBtdXN0IGFsc28gc3BlY2lmeSB0aGUgbWludXRlc1ZhbHVlLiAgCiAgICAgKiBAcGFyYW0ge0ludGVnZXJ9IG1zVmFsdWUgT3B0aW9uYWwsIEEgbnVtYmVyIGJldHdlZW4gMCBhbmQgOTk5LCByZXByZXNlbnRpbmcgdGhlIG1pbGxpc2Vjb25kcy4gCiAgICAgKiBJZiB5b3Ugc3BlY2lmeSB0aGUgbXNWYWx1ZSBwYXJhbWV0ZXIsIHlvdSBtdXN0IGFsc28gc3BlY2lmeSB0aGUgbWludXRlc1ZhbHVlIGFuZCBzZWNvbmRzVmFsdWUuIAogICAgICovCiAgICBqc0RhdGUucHJvdG90eXBlLnNldEhvdXJzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy5wcm94eS5zZXRIb3Vycy5hcHBseSh0aGlzLnByb3h5LCBhcmd1bWVudHMpOwogICAgICAgIHJldHVybiB0aGlzOwogICAgfTsKICAgIAogICAgLyoqCiAgICAgKiBJbXBsZW1lbnRzIERhdGUgZnVuY3Rpb25hbGl0eQogICAgICovIAogICAganNEYXRlLnByb3RvdHlwZS5zZXRNaWxsaXNlY29uZHMgPSBmdW5jdGlvbihuKSB7CiAgICAgICAgdGhpcy5wcm94eS5zZXRNaWxsaXNlY29uZHMobik7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICB9OwogICAgCiAgICAvKioKICAgICAqIEltcGxlbWVudHMgRGF0ZSBmdW5jdGlvbmFsaXR5CiAgICAgKi8gCiAgICBqc0RhdGUucHJvdG90eXBlLnNldE1pbnV0ZXMgPSBmdW5jdGlvbigpIHsKICAgICAgICB0aGlzLnByb3h5LnNldE1pbnV0ZXMuYXBwbHkodGhpcy5wcm94eSwgYXJndW1lbnRzKTsKICAgICAgICByZXR1cm4gdGhpczsKICAgIH07CiAgICAKICAgIC8qKgogICAgICogSW1wbGVtZW50cyBEYXRlIGZ1bmN0aW9uYWxpdHkKICAgICAqLyAKICAgIGpzRGF0ZS5wcm90b3R5cGUuc2V0TW9udGggPSBmdW5jdGlvbigpIHsKICAgICAgICB0aGlzLnByb3h5LnNldE1vbnRoLmFwcGx5KHRoaXMucHJveHksIGFyZ3VtZW50cyk7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICB9OwogICAgCiAgICAvKioKICAgICAqIEltcGxlbWVudHMgRGF0ZSBmdW5jdGlvbmFsaXR5CiAgICAgKi8gCiAgICBqc0RhdGUucHJvdG90eXBlLnNldFNlY29uZHMgPSBmdW5jdGlvbigpIHsKICAgICAgICB0aGlzLnByb3h5LnNldFNlY29uZHMuYXBwbHkodGhpcy5wcm94eSwgYXJndW1lbnRzKTsKICAgICAgICByZXR1cm4gdGhpczsKICAgIH07CiAgICAKICAgIC8qKgogICAgICogSW1wbGVtZW50cyBEYXRlIGZ1bmN0aW9uYWxpdHkKICAgICAqLyAKICAgIGpzRGF0ZS5wcm90b3R5cGUuc2V0VGltZSA9IGZ1bmN0aW9uKG4pIHsKICAgICAgICB0aGlzLnByb3h5LnNldFRpbWUobik7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICB9OwogICAgCiAgICAvKioKICAgICAqIEltcGxlbWVudHMgRGF0ZSBmdW5jdGlvbmFsaXR5CiAgICAgKi8gCiAgICBqc0RhdGUucHJvdG90eXBlLnNldFllYXIgPSBmdW5jdGlvbigpIHsKICAgICAgICB0aGlzLnByb3h5LnNldFllYXIuYXBwbHkodGhpcy5wcm94eSwgYXJndW1lbnRzKTsKICAgICAgICByZXR1cm4gdGhpczsKICAgIH07CiAgICAKICAgIC8qKgogICAgICogUHJvdmlkZSBhIGZvcm1hdHRlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBkYXRlLgogICAgICogCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gZm9ybWF0U3RyaW5nIEEgZm9ybWF0IHN0cmluZy4gIAogICAgICogU2VlOiB7QGxpbmsganNEYXRlLmZvcm1hdHN9LgogICAgICogQHJldHVybnMge1N0cmluZ30gRGF0ZSBTdHJpbmcuCiAgICAgKi8KICAgICAgICAgICAgCiAgICBqc0RhdGUucHJvdG90eXBlLnN0cmZ0aW1lID0gZnVuY3Rpb24oZm9ybWF0U3RyaW5nKSB7CiAgICAgICAgZm9ybWF0U3RyaW5nID0gZm9ybWF0U3RyaW5nIHx8IHRoaXMuZm9ybWF0U3RyaW5nIHx8IGpzRGF0ZS5yZWdpb25hbFt0aGlzLmxvY2FsZV1bJ2Zvcm1hdFN0cmluZyddOwogICAgICAgIHJldHVybiBqc0RhdGUuc3RyZnRpbWUodGhpcywgZm9ybWF0U3RyaW5nLCB0aGlzLnN5bnRheCk7CiAgICB9OwogICAgICAgIAogICAgLyoqCiAgICAgKiBSZXR1cm4gYSBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBqc0RhdGUgb2JqZWN0LgogICAgICogQHJldHVybnMge1N0cmluZ30gRGF0ZSBzdHJpbmcuCiAgICAgKi8KICAgIAogICAganNEYXRlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzLnByb3h5LnRvU3RyaW5nKCk7CiAgICB9OwogICAgICAgIAogICAgLyoqCiAgICAgKiBDb252ZXJ0IHRoZSBjdXJyZW50IGRhdGUgdG8gYW4gOC1kaWdpdCBpbnRlZ2VyICglWSVtJWQpCiAgICAgKiAKICAgICAqIEByZXR1cm5zIHtJbnRlZ2VyfQogICAgICovCiAgICAgCiAgICBqc0RhdGUucHJvdG90eXBlLnRvWW1kSW50ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuICh0aGlzLnByb3h5LmdldEZ1bGxZZWFyKCkgKiAxMDAwMCkgKyAodGhpcy5nZXRNb250aE51bWJlcigpICogMTAwKSArIHRoaXMucHJveHkuZ2V0RGF0ZSgpOwogICAgfTsKICAgIAogICAgLyoqCiAgICAgKiBAbmFtZXNwYWNlIEhvbGRzIGxvY2FsaXphdGlvbnMgZm9yIG1vbnRoL2RheSBuYW1lcy4KICAgICAqIDxwPmpzRGF0ZSBhdHRlbXB0cyB0byBkZXRlY3QgbG9jYWxlIHdoZW4gbG9hZGVkIGFuZCBkZWZhdWx0cyB0byAnZW4nLgogICAgICogSWYgYSBsb2NhbGl6YXRpb24gaXMgZGV0ZWN0ZWQgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSwganNEYXRlIGRlZmF1bHRzIHRvICdlbicuCiAgICAgKiBBZGRpdGlvbmFsIGxvY2FsaXphdGlvbnMgY2FuIGJlIGFkZGVkIGFmdGVyIGpzRGF0ZSBsb2Fkcy4gIEFmdGVyIGFkZGluZyBhIGxvY2FsaXphdGlvbiwKICAgICAqIGNhbGwgdGhlIGpzRGF0ZS5yZWdpb25hbC5nZXRMb2NhbGUoKSBtZXRob2QuICBDdXJyZW50bHksIGVuLCBmciBhbmQgZGUgYXJlIGRlZmluZWQuPC9wPgogICAgICogCiAgICAgKiA8cD5Mb2NhbGl6YXRpb25zIG11c3QgYmUgYW4gb2JqZWN0IGFuZCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBkZWZpbmVkOiAgbW9udGhOYW1lcywgbW9udGhOYW1lc1Nob3J0LCBkYXlOYW1lcywgZGF5TmFtZXNTaG9ydCBhbmQgTG9jYWxpemF0aW9ucyBhcmUgYWRkZWQgbGlrZTo8L3A+CiAgICAgKiA8cHJlIGNsYXNzPSJjb2RlIj4KICAgICAqIGpzRGF0ZS5yZWdpb25hbFsnZW4nXSA9IHsKICAgICAqIG1vbnRoTmFtZXMgICAgICA6ICdKYW51YXJ5IEZlYnJ1YXJ5IE1hcmNoIEFwcmlsIE1heSBKdW5lIEp1bHkgQXVndXN0IFNlcHRlbWJlciBPY3RvYmVyIE5vdmVtYmVyIERlY2VtYmVyJy5zcGxpdCgnICcpLAogICAgICogbW9udGhOYW1lc1Nob3J0IDogJ0phbiBGZWIgTWFyIEFwciBNYXkgSnVuIEp1bCBBdWcgU2VwIE9jdCBOb3YgRGVjJy5zcGxpdCgnICcpLAogICAgICogZGF5TmFtZXMgICAgICAgIDogJ1N1bmRheSBNb25kYXkgVHVlc2RheSBXZWRuZXNkYXkgVGh1cnNkYXkgRnJpZGF5IFNhdHVyZGF5Jy5zcGxpdCgnICcpLAogICAgICogZGF5TmFtZXNTaG9ydCAgIDogJ1N1biBNb24gVHVlIFdlZCBUaHUgRnJpIFNhdCcuc3BsaXQoJyAnKQogICAgICogfTsKICAgICAqIDwvcHJlPgogICAgICogPHA+QWZ0ZXIgYWRkaW5nIGxvY2FsaXphdGlvbnMsIGNhbGwgPGNvZGU+anNEYXRlLnJlZ2lvbmFsLmdldExvY2FsZSgpOzwvY29kZT4gdG8gdXBkYXRlIHRoZSBsb2NhbGUgc2V0dGluZyB3aXRoIHRoZQogICAgICogbmV3IGxvY2FsaXphdGlvbnMuPC9wPgogICAgICovCiAgICAgCiAgICBqc0RhdGUucmVnaW9uYWwgPSB7CiAgICAgICAgJ2VuJzogewogICAgICAgICAgICBtb250aE5hbWVzOiBbJ0phbnVhcnknLCdGZWJydWFyeScsJ01hcmNoJywnQXByaWwnLCdNYXknLCdKdW5lJywnSnVseScsJ0F1Z3VzdCcsJ1NlcHRlbWJlcicsJ09jdG9iZXInLCdOb3ZlbWJlcicsJ0RlY2VtYmVyJ10sCiAgICAgICAgICAgIG1vbnRoTmFtZXNTaG9ydDogWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsJ0p1bCcsICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ10sCiAgICAgICAgICAgIGRheU5hbWVzOiBbJ1N1bmRheScsICdNb25kYXknLCAnVHVlc2RheScsICdXZWRuZXNkYXknLCAnVGh1cnNkYXknLCAnRnJpZGF5JywgJ1NhdHVyZGF5J10sCiAgICAgICAgICAgIGRheU5hbWVzU2hvcnQ6IFsnU3VuJywgJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0J10sCiAgICAgICAgICAgIGZvcm1hdFN0cmluZzogJyVZLSVtLSVkICVIOiVNOiVTJwogICAgICAgIH0sCiAgICAgICAgCiAgICAgICAgJ2ZyJzogewogICAgICAgICAgICBtb250aE5hbWVzOiBbJ0phbnZpZXInLCdGw6l2cmllcicsJ01hcnMnLCdBdnJpbCcsJ01haScsJ0p1aW4nLCdKdWlsbGV0JywnQW/Du3QnLCdTZXB0ZW1icmUnLCdPY3RvYnJlJywnTm92ZW1icmUnLCdEw6ljZW1icmUnXSwKICAgICAgICAgICAgbW9udGhOYW1lc1Nob3J0OiBbJ0phbicsJ0bDqXYnLCdNYXInLCdBdnInLCdNYWknLCdKdW4nLCdKdWwnLCdBb8O7JywnU2VwJywnT2N0JywnTm92JywnRMOpYyddLAogICAgICAgICAgICBkYXlOYW1lczogWydEaW1hbmNoZScsJ0x1bmRpJywnTWFyZGknLCdNZXJjcmVkaScsJ0pldWRpJywnVmVuZHJlZGknLCdTYW1lZGknXSwKICAgICAgICAgICAgZGF5TmFtZXNTaG9ydDogWydEaW0nLCdMdW4nLCdNYXInLCdNZXInLCdKZXUnLCdWZW4nLCdTYW0nXSwKICAgICAgICAgICAgZm9ybWF0U3RyaW5nOiAnJVktJW0tJWQgJUg6JU06JVMnCiAgICAgICAgfSwKICAgICAgICAKICAgICAgICAnZGUnOiB7CiAgICAgICAgICAgIG1vbnRoTmFtZXM6IFsnSmFudWFyJywnRmVicnVhcicsJ03DpHJ6JywnQXByaWwnLCdNYWknLCdKdW5pJywnSnVsaScsJ0F1Z3VzdCcsJ1NlcHRlbWJlcicsJ09rdG9iZXInLCdOb3ZlbWJlcicsJ0RlemVtYmVyJ10sCiAgICAgICAgICAgIG1vbnRoTmFtZXNTaG9ydDogWydKYW4nLCdGZWInLCdNw6RyJywnQXByJywnTWFpJywnSnVuJywnSnVsJywnQXVnJywnU2VwJywnT2t0JywnTm92JywnRGV6J10sCiAgICAgICAgICAgIGRheU5hbWVzOiBbJ1Nvbm50YWcnLCdNb250YWcnLCdEaWVuc3RhZycsJ01pdHR3b2NoJywnRG9ubmVyc3RhZycsJ0ZyZWl0YWcnLCdTYW1zdGFnJ10sCiAgICAgICAgICAgIGRheU5hbWVzU2hvcnQ6IFsnU28nLCdNbycsJ0RpJywnTWknLCdEbycsJ0ZyJywnU2EnXSwKICAgICAgICAgICAgZm9ybWF0U3RyaW5nOiAnJVktJW0tJWQgJUg6JU06JVMnCiAgICAgICAgfSwKICAgICAgICAKICAgICAgICAnZXMnOiB7CiAgICAgICAgICAgIG1vbnRoTmFtZXM6IFsnRW5lcm8nLCdGZWJyZXJvJywnTWFyem8nLCdBYnJpbCcsJ01heW8nLCdKdW5pbycsICdKdWxpbycsJ0Fnb3N0bycsJ1NlcHRpZW1icmUnLCdPY3R1YnJlJywnTm92aWVtYnJlJywnRGljaWVtYnJlJ10sCiAgICAgICAgICAgIG1vbnRoTmFtZXNTaG9ydDogWydFbmUnLCdGZWInLCdNYXInLCdBYnInLCdNYXknLCdKdW4nLCAnSnVsJywnQWdvJywnU2VwJywnT2N0JywnTm92JywnRGljJ10sCiAgICAgICAgICAgIGRheU5hbWVzOiBbJ0RvbWluZ28nLCdMdW5lcycsJ01hcnRlcycsJ01pJmVhY3V0ZTtyY29sZXMnLCdKdWV2ZXMnLCdWaWVybmVzJywnUyZhYWN1dGU7YmFkbyddLAogICAgICAgICAgICBkYXlOYW1lc1Nob3J0OiBbJ0RvbScsJ0x1bicsJ01hcicsJ01pJmVhY3V0ZTsnLCdKdXYnLCdWaWUnLCdTJmFhY3V0ZTtiJ10sCiAgICAgICAgICAgIGZvcm1hdFN0cmluZzogJyVZLSVtLSVkICVIOiVNOiVTJwogICAgICAgIH0sCiAgICAgICAgCiAgICAgICAgJ3J1JzogewogICAgICAgICAgICBtb250aE5hbWVzOiBbJ9Cv0L3QstCw0YDRjCcsJ9Ck0LXQstGA0LDQu9GMJywn0JzQsNGA0YInLCfQkNC/0YDQtdC70YwnLCfQnNCw0LknLCfQmNGO0L3RjCcsJ9CY0Y7Qu9GMJywn0JDQstCz0YPRgdGCJywn0KHQtdC90YLRj9Cx0YDRjCcsJ9Ce0LrRgtGP0LHRgNGMJywn0J3QvtGP0LHRgNGMJywn0JTQtdC60LDQsdGA0YwnXSwKICAgICAgICAgICAgbW9udGhOYW1lc1Nob3J0OiBbJ9Cv0L3QsicsJ9Ck0LXQsicsJ9Cc0LDRgCcsJ9CQ0L/RgCcsJ9Cc0LDQuScsJ9CY0Y7QvScsJ9CY0Y7QuycsJ9CQ0LLQsycsJ9Ch0LXQvScsJ9Ce0LrRgicsJ9Cd0L7RjycsJ9CU0LXQuiddLAogICAgICAgICAgICBkYXlOYW1lczogWyfQstC+0YHQutGA0LXRgdC10L3RjNC1Jywn0L/QvtC90LXQtNC10LvRjNC90LjQuicsJ9Cy0YLQvtGA0L3QuNC6Jywn0YHRgNC10LTQsCcsJ9GH0LXRgtCy0LXRgNCzJywn0L/Rj9GC0L3QuNGG0LAnLCfRgdGD0LHQsdC+0YLQsCddLAogICAgICAgICAgICBkYXlOYW1lc1Nob3J0OiBbJ9Cy0YHQuicsJ9C/0L3QtCcsJ9Cy0YLRgCcsJ9GB0YDQtCcsJ9GH0YLQsicsJ9C/0YLQvScsJ9GB0LHRgiddLAogICAgICAgICAgICBmb3JtYXRTdHJpbmc6ICclWS0lbS0lZCAlSDolTTolUycKICAgICAgICB9LAogICAgICAgIAogICAgICAgICdhcic6IHsKICAgICAgICAgICAgbW9udGhOYW1lczogWyfZg9in2YbZiNmGINin2YTYq9in2YbZiicsICfYtNio2KfYtycsICfYotiw2KfYsScsICfZhtmK2LPYp9mGJywgJ9ii2LDYp9ixJywgJ9it2LLZitix2KfZhicsJ9iq2YXZiNiyJywgJ9ii2KgnLCAn2KPZitmE2YjZhCcsICAgJ9iq2LTYsdmK2YYg2KfZhNij2YjZhCcsICfYqti02LHZitmGINin2YTYq9in2YbZiicsICfZg9in2YbZiNmGINin2YTYo9mI2YQnXSwKICAgICAgICAgICAgbW9udGhOYW1lc1Nob3J0OiBbJzEnLCcyJywnMycsJzQnLCc1JywnNicsJzcnLCc4JywnOScsJzEwJywnMTEnLCcxMiddLAogICAgICAgICAgICBkYXlOYW1lczogWyfYp9mE2LPYqNiqJywgJ9in2YTYo9it2K8nLCAn2KfZhNin2KvZhtmK2YYnLCAn2KfZhNir2YTYp9ir2KfYoScsICfYp9mE2KPYsdio2LnYp9ihJywgJ9in2YTYrtmF2YrYsycsICfYp9mE2KzZhdi52KknXSwKICAgICAgICAgICAgZGF5TmFtZXNTaG9ydDogWyfYs9io2KonLCAn2KPYrdivJywgJ9in2KvZhtmK2YYnLCAn2KvZhNin2KvYp9ihJywgJ9ij2LHYqNi52KfYoScsICfYrtmF2YrYsycsICfYrNmF2LnYqSddLAogICAgICAgICAgICBmb3JtYXRTdHJpbmc6ICclWS0lbS0lZCAlSDolTTolUycKICAgICAgICB9LAogICAgICAgIAogICAgICAgICdwdCc6IHsKICAgICAgICAgICAgbW9udGhOYW1lczogWydKYW5laXJvJywnRmV2ZXJlaXJvJywnTWFyJmNjZWRpbDtvJywnQWJyaWwnLCdNYWlvJywnSnVuaG8nLCdKdWxobycsJ0Fnb3N0bycsJ1NldGVtYnJvJywnT3V0dWJybycsJ05vdmVtYnJvJywnRGV6ZW1icm8nXSwKICAgICAgICAgICAgbW9udGhOYW1lc1Nob3J0OiBbJ0phbicsJ0ZldicsJ01hcicsJ0FicicsJ01haScsJ0p1bicsJ0p1bCcsJ0FnbycsJ1NldCcsJ091dCcsJ05vdicsJ0RleiddLAogICAgICAgICAgICBkYXlOYW1lczogWydEb21pbmdvJywnU2VndW5kYS1mZWlyYScsJ1RlciZjY2VkaWw7YS1mZWlyYScsJ1F1YXJ0YS1mZWlyYScsJ1F1aW50YS1mZWlyYScsJ1NleHRhLWZlaXJhJywnUyZhYWN1dGU7YmFkbyddLAogICAgICAgICAgICBkYXlOYW1lc1Nob3J0OiBbJ0RvbScsJ1NlZycsJ1RlcicsJ1F1YScsJ1F1aScsJ1NleCcsJ1MmYWFjdXRlO2InXSwKICAgICAgICAgICAgZm9ybWF0U3RyaW5nOiAnJVktJW0tJWQgJUg6JU06JVMnICAgCiAgICAgICAgfSwKICAgICAgICAKICAgICAgICAncHQtQlInOiB7CiAgICAgICAgICAgIG1vbnRoTmFtZXM6IFsnSmFuZWlybycsJ0ZldmVyZWlybycsJ01hciZjY2VkaWw7bycsJ0FicmlsJywnTWFpbycsJ0p1bmhvJywgJ0p1bGhvJywnQWdvc3RvJywnU2V0ZW1icm8nLCdPdXR1YnJvJywnTm92ZW1icm8nLCdEZXplbWJybyddLAogICAgICAgICAgICBtb250aE5hbWVzU2hvcnQ6IFsnSmFuJywnRmV2JywnTWFyJywnQWJyJywnTWFpJywnSnVuJywnSnVsJywnQWdvJywnU2V0JywnT3V0JywnTm92JywnRGV6J10sCiAgICAgICAgICAgIGRheU5hbWVzOiBbJ0RvbWluZ28nLCdTZWd1bmRhLWZlaXJhJywnVGVyJmNjZWRpbDthLWZlaXJhJywnUXVhcnRhLWZlaXJhJywnUXVpbnRhLWZlaXJhJywnU2V4dGEtZmVpcmEnLCdTJmFhY3V0ZTtiYWRvJ10sCiAgICAgICAgICAgIGRheU5hbWVzU2hvcnQ6IFsnRG9tJywnU2VnJywnVGVyJywnUXVhJywnUXVpJywnU2V4JywnUyZhYWN1dGU7YiddLAogICAgICAgICAgICBmb3JtYXRTdHJpbmc6ICclWS0lbS0lZCAlSDolTTolUycKICAgICAgICB9LAogICAgICAgIAogICAgICAgICdwbCc6IHsKICAgICAgICAgICAgbW9udGhOYW1lczogWydTdHljemXFhCcsJ0x1dHknLCdNYXJ6ZWMnLCdLd2llY2llxYQnLCdNYWonLCdDemVyd2llYycsJ0xpcGllYycsJ1NpZXJwaWXFhCcsJ1dyemVzaWXFhCcsJ1Bhxbpkemllcm5paycsJ0xpc3RvcGFkJywnR3J1ZHppZcWEJ10sCiAgICAgICAgICAgIG1vbnRoTmFtZXNTaG9ydDogWydTdHknLCAnTHV0JywgJ01hcicsICdLd2knLCAnTWFqJywgJ0N6ZScsJ0xpcCcsICdTaWUnLCAnV3J6JywgJ1BhxbonLCAnTGlzJywgJ0dydSddLAogICAgICAgICAgICBkYXlOYW1lczogWydOaWVkemllbGEnLCAnUG9uaWVkemlhxYJlaycsICdXdG9yZWsnLCAnxZpyb2RhJywgJ0N6d2FydGVrJywgJ1BpxIV0ZWsnLCAnU29ib3RhJ10sCiAgICAgICAgICAgIGRheU5hbWVzU2hvcnQ6IFsnTmknLCAnUG4nLCAnV3QnLCAnxZpyJywgJ0N6JywgJ1B0JywgJ1NiJ10sCiAgICAgICAgICAgIGZvcm1hdFN0cmluZzogJyVZLSVtLSVkICVIOiVNOiVTJwogICAgICAgIH0sCgogICAgICAgICdubCc6IHsKICAgICAgICAgICAgbW9udGhOYW1lczogWydKYW51YXJpJywnRmVicnVhcmknLCdNYWFydCcsJ0FwcmlsJywnTWVpJywnSnVuaScsJ0p1bHknLCdBdWd1c3R1cycsJ1NlcHRlbWJlcicsJ09rdG9iZXInLCdOb3ZlbWJlcicsJ0RlY2VtYmVyJ10sCiAgICAgICAgICAgIG1vbnRoTmFtZXNTaG9ydDogWydKYW4nLCdGZWInLCdNYXInLCdBcHInLCdNZWknLCdKdW4nLCdKdWwnLCdBdWcnLCdTZXAnLCdPa3QnLCdOb3YnLCdEZWMnXSwKICAgICAgICAgICAgZGF5TmFtZXM6JywnWydab25kYWcnLCdNYWFuZGFnJywnRGluc2RhZycsJ1dvZW5zZGFnJywnRG9uZGVyZGFnJywnVnJpamRhZycsJ1phdGVyZGFnJ10sCiAgICAgICAgICAgIGRheU5hbWVzU2hvcnQ6IFsnWm8nLCdNYScsJ0RpJywnV28nLCdEbycsJ1ZyJywnWmEnXSwKICAgICAgICAgICAgZm9ybWF0U3RyaW5nOiAnJVktJW0tJWQgJUg6JU06JVMnCiAgICAgICAgfSwKCiAgICAgICAgJ3N2JzogewogICAgICAgICAgICBtb250aE5hbWVzOiBbJ2phbnVhcmknLCdmZWJydWFyaScsJ21hcnMnLCdhcHJpbCcsJ21haicsJ2p1bmknLCdqdWxpJywnYXVndXN0aScsJ3NlcHRlbWJlcicsJ29rdG9iZXInLCdub3ZlbWJlcicsJ2RlY2VtYmVyJ10sCiAgICAgICAgICBtb250aE5hbWVzU2hvcnQ6IFsnamFuJywnZmViJywnbWFyJywnYXByJywnbWFqJywnanVuJywnanVsJywnYXVnJywnc2VwJywnb2t0Jywnbm92JywnZGVjJ10sCiAgICAgICAgICAgIGRheU5hbWVzOiBbJ3PDtm5kYWcnLCdtw6VuZGFnJywndGlzZGFnJywnb25zZGFnJywndG9yc2RhZycsJ2ZyZWRhZycsJ2zDtnJkYWcnXSwKICAgICAgICAgICAgZGF5TmFtZXNTaG9ydDogWydzw7ZuJywnbcOlbicsJ3RpcycsJ29ucycsJ3RvcicsJ2ZyZScsJ2zDtnInXSwKICAgICAgICAgICAgZm9ybWF0U3RyaW5nOiAnJVktJW0tJWQgJUg6JU06JVMnCiAgICAgICAgfQogICAgCiAgICB9OwogICAgCiAgICAvLyBTZXQgZW5nbGlzaCB2YXJpYW50cyB0byAnZW4nCiAgICBqc0RhdGUucmVnaW9uYWxbJ2VuLVVTJ10gPSBqc0RhdGUucmVnaW9uYWxbJ2VuLUdCJ10gPSBqc0RhdGUucmVnaW9uYWxbJ2VuJ107CiAgICAKICAgIC8qKgogICAgICogVHJ5IHRvIGRldGVybWluZSB0aGUgdXNlcnMgbG9jYWxlIGJhc2VkIG9uIHRoZSBsYW5nIGF0dHJpYnV0ZSBvZiB0aGUgaHRtbCBwYWdlLiAgRGVmYXVsdHMgdG8gJ2VuJwogICAgICogaWYgaXQgY2Fubm90IGZpZ3VyZSBvdXQgYSBsb2NhbGUgb2YgaWYgdGhlIGxvY2FsZSBkb2VzIG5vdCBoYXZlIGEgbG9jYWxpemF0aW9uIGRlZmluZWQuCiAgICAgKiBAcmV0dXJucyB7U3RyaW5nfSBsb2NhbGUKICAgICAqLwogICAgIAogICAganNEYXRlLnJlZ2lvbmFsLmdldExvY2FsZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgbCA9IGpzRGF0ZS5jb25maWcuZGVmYXVsdExvY2FsZTsKICAgICAgICAKICAgICAgICBpZiAoIGRvY3VtZW50ICYmIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJykgJiYgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXS5sYW5nICkgewogICAgICAgICAgICBsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXS5sYW5nOwogICAgICAgICAgICBpZiAoIWpzRGF0ZS5yZWdpb25hbC5oYXNPd25Qcm9wZXJ0eShsKSkgewogICAgICAgICAgICAgICAgbCA9IGpzRGF0ZS5jb25maWcuZGVmYXVsdExvY2FsZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gbDsKICAgIH07CiAgICAKICAgIC8vIG1zIGluIGRheQogICAgdmFyIGRheSA9IDI0ICogNjAgKiA2MCAqIDEwMDA7CiAgICAKICAgIC8vIHBhZGQgYSBudW1iZXIgd2l0aCB6ZXJvcwogICAgdmFyIGFkZFplcm9zID0gZnVuY3Rpb24obnVtLCBkaWdpdHMpIHsKICAgICAgICBudW0gPSBTdHJpbmcobnVtKTsKICAgICAgICB2YXIgaSA9IGRpZ2l0cyAtIG51bS5sZW5ndGg7CiAgICAgICAgdmFyIHMgPSBTdHJpbmcoTWF0aC5wb3coMTAsIGkpKS5zbGljZSgxKTsKICAgICAgICByZXR1cm4gcy5jb25jYXQobnVtKTsKICAgIH07CgogICAgLy8gcmVwcmVzZW50YXRpb25zIHVzZWQgZm9yIGNhbGN1bGF0aW5nIGRpZmZlcmVuY2VzIGJldHdlZW4gZGF0ZXMuCiAgICAvLyBUaGlzIGJvcnJvd3MgaGVhdmlseSBmcm9tIEtlbiBTbnlkZXIncyB3b3JrLgogICAgdmFyIG11bHRpcGxpZXJzID0gewogICAgICAgIG1pbGxpc2Vjb25kOiAxLAogICAgICAgIHNlY29uZDogMTAwMCwKICAgICAgICBtaW51dGU6IDYwICogMTAwMCwKICAgICAgICBob3VyOiA2MCAqIDYwICogMTAwMCwKICAgICAgICBkYXk6IGRheSwKICAgICAgICB3ZWVrOiA3ICogZGF5LAogICAgICAgIG1vbnRoOiB7CiAgICAgICAgICAgIC8vIGFkZCBhIG51bWJlciBvZiBtb250aHMKICAgICAgICAgICAgYWRkOiBmdW5jdGlvbihkLCBudW1iZXIpIHsKICAgICAgICAgICAgICAgIC8vIGFkZCBhbnkgeWVhcnMgbmVlZGVkIChpbmNyZW1lbnRzIG9mIDEyKQogICAgICAgICAgICAgICAgbXVsdGlwbGllcnMueWVhci5hZGQoZCwgTWF0aFtudW1iZXIgPiAwID8gJ2Zsb29yJyA6ICdjZWlsJ10obnVtYmVyIC8gMTIpKTsKICAgICAgICAgICAgICAgIC8vIGVuc3VyZSB0aGF0IHdlIHByb3Blcmx5IHdyYXAgYmV0d2VuIERlY2VtYmVyIGFuZCBKYW51YXJ5CiAgICAgICAgICAgICAgICAvLyAxMSAlIDEyID0gMTEKICAgICAgICAgICAgICAgIC8vIDEyICUgMTIgPSAwCiAgICAgICAgICAgICAgICB2YXIgcHJldk1vbnRoID0gZC5nZXRNb250aCgpICsgKG51bWJlciAlIDEyKTsKICAgICAgICAgICAgICAgIGlmIChwcmV2TW9udGggPT0gMTIpIHsKICAgICAgICAgICAgICAgICAgICBwcmV2TW9udGggPSAwOwogICAgICAgICAgICAgICAgICAgIGQuc2V0WWVhcihkLmdldEZ1bGxZZWFyKCkgKyAxKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJldk1vbnRoID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgcHJldk1vbnRoID0gMTE7CiAgICAgICAgICAgICAgICAgICAgZC5zZXRZZWFyKGQuZ2V0RnVsbFllYXIoKSAtIDEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZC5zZXRNb250aChwcmV2TW9udGgpOwogICAgICAgICAgICB9LAogICAgICAgICAgICAvLyBnZXQgdGhlIG51bWJlciBvZiBtb250aHMgYmV0d2VlbiB0d28gRGF0ZSBvYmplY3RzIChkZWNpbWFsIHRvIHRoZSBuZWFyZXN0IGRheSkKICAgICAgICAgICAgZGlmZjogZnVuY3Rpb24oZDEsIGQyKSB7CiAgICAgICAgICAgICAgICAvLyBnZXQgdGhlIG51bWJlciBvZiB5ZWFycwogICAgICAgICAgICAgICAgdmFyIGRpZmZZZWFycyA9IGQxLmdldEZ1bGxZZWFyKCkgLSBkMi5nZXRGdWxsWWVhcigpOwogICAgICAgICAgICAgICAgLy8gZ2V0IHRoZSBudW1iZXIgb2YgcmVtYWluaW5nIG1vbnRocwogICAgICAgICAgICAgICAgdmFyIGRpZmZNb250aHMgPSBkMS5nZXRNb250aCgpIC0gZDIuZ2V0TW9udGgoKSArIChkaWZmWWVhcnMgKiAxMik7CiAgICAgICAgICAgICAgICAvLyBnZXQgdGhlIG51bWJlciBvZiByZW1haW5pbmcgZGF5cwogICAgICAgICAgICAgICAgdmFyIGRpZmZEYXlzID0gZDEuZ2V0RGF0ZSgpIC0gZDIuZ2V0RGF0ZSgpOwogICAgICAgICAgICAgICAgLy8gcmV0dXJuIHRoZSBtb250aCBkaWZmZXJlbmNlIHdpdGggdGhlIGRheXMgZGlmZmVyZW5jZSBhcyBhIGRlY2ltYWwKICAgICAgICAgICAgICAgIHJldHVybiBkaWZmTW9udGhzICsgKGRpZmZEYXlzIC8gMzApOwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB5ZWFyOiB7CiAgICAgICAgICAgIC8vIGFkZCBhIG51bWJlciBvZiB5ZWFycwogICAgICAgICAgICBhZGQ6IGZ1bmN0aW9uKGQsIG51bWJlcikgewogICAgICAgICAgICAgICAgZC5zZXRZZWFyKGQuZ2V0RnVsbFllYXIoKSArIE1hdGhbbnVtYmVyID4gMCA/ICdmbG9vcicgOiAnY2VpbCddKG51bWJlcikpOwogICAgICAgICAgICB9LAogICAgICAgICAgICAvLyBnZXQgdGhlIG51bWJlciBvZiB5ZWFycyBiZXR3ZWVuIHR3byBEYXRlIG9iamVjdHMgKGRlY2ltYWwgdG8gdGhlIG5lYXJlc3QgZGF5KQogICAgICAgICAgICBkaWZmOiBmdW5jdGlvbihkMSwgZDIpIHsKICAgICAgICAgICAgICAgIHJldHVybiBtdWx0aXBsaWVycy5tb250aC5kaWZmKGQxLCBkMikgLyAxMjsKICAgICAgICAgICAgfQogICAgICAgIH0gICAgICAgIAogICAgfTsKICAgIC8vCiAgICAvLyBBbGlhcyBlYWNoIG11bHRpcGxpZXIgd2l0aCBhbiAncycgdG8gYWxsb3cgJ3llYXInIGFuZCAneWVhcnMnIGZvciBleGFtcGxlLgogICAgLy8gVGhpcyBjb21lcyBmcm9tIEtlbiBTbnlkZXJzIHdvcmsuCiAgICAvLwogICAgZm9yICh2YXIgdW5pdCBpbiBtdWx0aXBsaWVycykgewogICAgICAgIGlmICh1bml0LnN1YnN0cmluZyh1bml0Lmxlbmd0aCAtIDEpICE9ICdzJykgeyAvLyBJRSB3aWxsIGl0ZXJhdGUgbmV3bHkgYWRkZWQgcHJvcGVydGllcyA6fAogICAgICAgICAgICBtdWx0aXBsaWVyc1t1bml0ICsgJ3MnXSA9IG11bHRpcGxpZXJzW3VuaXRdOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8KICAgIC8vIHRha2UgYSBqc0RhdGUgaW5zdGFuY2UgYW5kIGEgZm9ybWF0IGNvZGUgYW5kIHJldHVybiB0aGUgZm9ybWF0dGVkIHZhbHVlLgogICAgLy8gVGhpcyBpcyBhIHNvbWV3aGF0IG1vZGlmaWVkIHZlcnNpb24gb2YgS2VuIFNueWRlcidzIG1ldGhvZC4KICAgIC8vCiAgICB2YXIgZm9ybWF0ID0gZnVuY3Rpb24oZCwgY29kZSwgc3ludGF4KSB7CiAgICAgICAgLy8gaWYgc2hvcmN1dCBjb2RlcyBhcmUgdXNlZCwgcmVjdXJzaXZlbHkgZXhwYW5kIHRob3NlLgogICAgICAgIGlmIChqc0RhdGUuZm9ybWF0c1tzeW50YXhdWyJzaG9ydGN1dHMiXVtjb2RlXSkgewogICAgICAgICAgICByZXR1cm4ganNEYXRlLnN0cmZ0aW1lKGQsIGpzRGF0ZS5mb3JtYXRzW3N5bnRheF1bInNob3J0Y3V0cyJdW2NvZGVdLCBzeW50YXgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIGdldCB0aGUgZm9ybWF0IGNvZGUgZnVuY3Rpb24gYW5kIGFkZFplcm9zKCkgYXJndW1lbnQKICAgICAgICAgICAgdmFyIGdldHRlciA9IChqc0RhdGUuZm9ybWF0c1tzeW50YXhdWyJjb2RlcyJdW2NvZGVdIHx8ICcnKS5zcGxpdCgnLicpOwogICAgICAgICAgICB2YXIgbmJyID0gZFsnZ2V0JyArIGdldHRlclswXV0gPyBkWydnZXQnICsgZ2V0dGVyWzBdXSgpIDogJyc7CiAgICAgICAgICAgIGlmIChnZXR0ZXJbMV0pIHsKICAgICAgICAgICAgICAgIG5iciA9IGFkZFplcm9zKG5iciwgZ2V0dGVyWzFdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbmJyOwogICAgICAgIH0gICAgICAgCiAgICB9OwogICAgCiAgICAvKioKICAgICAqIEBzdGF0aWMKICAgICAqIFN0YXRpYyBmdW5jdGlvbiBmb3IgY29udmVydCBhIGRhdGUgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIGEgZ2l2ZW4gZm9ybWF0LiAgQWxzbyBhY3RzIGFzIG5hbWVzcGFjZSBmb3Igc3RyZnRpbWUgZm9ybWF0IGNvZGVzLgogICAgICogPHA+c3RyZnRpbWUgZm9ybWF0dGluZyBjYW4gYmUgYWNjb21wbGlzaGVkIHdpdGhvdXQgY3JlYXRpbmcgYSBqc0RhdGUgb2JqZWN0IGJ5IGNhbGxpbmcganNEYXRlLnN0cmZ0aW1lKCk6PC9wPgogICAgICogPHByZSBjbGFzcz0iY29kZSI+CiAgICAgKiB2YXIgZm9ybWF0dGVkRGF0ZSA9IGpzRGF0ZS5zdHJmdGltZSgnRmViIDgsIDIwMDYgODo0ODozMicsICclWS0lbS0lZCAlSDolTTolUycpOwogICAgICogPC9wcmU+CiAgICAgKiBAcGFyYW0ge1N0cmluZyB8IE51bWJlciB8IEFycmF5IHwganNEYXRlJm5ic3A7T2JqZWN0IHwgRGF0ZSZuYnNwO09iamVjdH0gZGF0ZSBBIHBhcnNhYmxlIGRhdGUgc3RyaW5nLCBKYXZhU2NyaXB0IHRpbWUgc3RhbXAsIEFycmF5IG9mIGZvcm0gW3llYXIsIG1vbnRoLCBkYXksIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHNdLCBqc0RhdGUgT2JqZWN0IG9yIERhdGUgb2JqZWN0LgogICAgICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdFN0cmluZyBTdHJpbmcgd2l0aCBlbWJlZGRlZCBkYXRlIGZvcm1hdHRpbmcgY29kZXMuICAKICAgICAqIFNlZToge0BsaW5rIGpzRGF0ZS5mb3JtYXRzfS4gCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gc3ludGF4IE9wdGlvbmFsIHN5bnRheCB0byB1c2UgW2RlZmF1bHQgcGVybF0uCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbG9jYWxlIE9wdGlvbmFsIGxvY2FsZSB0byB1c2UuCiAgICAgKiBAcmV0dXJucyB7U3RyaW5nfSBGb3JtYXR0ZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGRhdGUuCiAgICAqLwogICAgLy8KICAgIC8vIExvZ2ljIGFzIGltcGxlbWVudGVkIGhlcmUgaXMgdmVyeSBzaW1pbGFyIHRvIEtlbiBTbnlkZXIncyBEYXRlIEluc3RhbmNlIE1ldGhvZHMuCiAgICAvLwogICAganNEYXRlLnN0cmZ0aW1lID0gZnVuY3Rpb24oZCwgZm9ybWF0U3RyaW5nLCBzeW50YXgsIGxvY2FsZSkgewogICAgICAgIHZhciBzeW4gPSAncGVybCc7CiAgICAgICAgdmFyIGxvYyA9IGpzRGF0ZS5yZWdpb25hbC5nZXRMb2NhbGUoKTsKICAgICAgICAKICAgICAgICAvLyBjaGVjayBpZiBzeW50YXggYW5kIGxvY2FsZSBhcmUgYXZhaWxhYmxlIG9yIHJldmVyc2VkCiAgICAgICAgaWYgKHN5bnRheCAmJiBqc0RhdGUuZm9ybWF0cy5oYXNPd25Qcm9wZXJ0eShzeW50YXgpKSB7CiAgICAgICAgICAgIHN5biA9IHN5bnRheDsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoc3ludGF4ICYmIGpzRGF0ZS5yZWdpb25hbC5oYXNPd25Qcm9wZXJ0eShzeW50YXgpKSB7CiAgICAgICAgICAgIGxvYyA9IHN5bnRheDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKGxvY2FsZSAmJiBqc0RhdGUuZm9ybWF0cy5oYXNPd25Qcm9wZXJ0eShsb2NhbGUpKSB7CiAgICAgICAgICAgIHN5biA9IGxvY2FsZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAobG9jYWxlICYmIGpzRGF0ZS5yZWdpb25hbC5oYXNPd25Qcm9wZXJ0eShsb2NhbGUpKSB7CiAgICAgICAgICAgIGxvYyA9IGxvY2FsZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKGdldF90eXBlKGQpICE9ICJbb2JqZWN0IE9iamVjdF0iIHx8IGQuX3R5cGUgIT0gImpzRGF0ZSIpIHsKICAgICAgICAgICAgZCA9IG5ldyBqc0RhdGUoZCk7CiAgICAgICAgICAgIGQubG9jYWxlID0gbG9jOwogICAgICAgIH0KICAgICAgICBpZiAoIWZvcm1hdFN0cmluZykgewogICAgICAgICAgICBmb3JtYXRTdHJpbmcgPSBkLmZvcm1hdFN0cmluZyB8fCBqc0RhdGUucmVnaW9uYWxbbG9jXVsnZm9ybWF0U3RyaW5nJ107CiAgICAgICAgfQogICAgICAgIC8vIGRlZmF1bHQgdGhlIGZvcm1hdCBzdHJpbmcgdG8geWVhci1tb250aC1kYXkKICAgICAgICB2YXIgc291cmNlID0gZm9ybWF0U3RyaW5nIHx8ICclWS0lbS0lZCcsIAogICAgICAgICAgICByZXN1bHQgPSAnJywgCiAgICAgICAgICAgIG1hdGNoOwogICAgICAgIC8vIHJlcGxhY2UgZWFjaCBmb3JtYXQgY29kZQogICAgICAgIHdoaWxlIChzb3VyY2UubGVuZ3RoID4gMCkgewogICAgICAgICAgICBpZiAobWF0Y2ggPSBzb3VyY2UubWF0Y2goanNEYXRlLmZvcm1hdHNbc3luXS5jb2Rlcy5tYXRjaGVyKSkgewogICAgICAgICAgICAgICAgcmVzdWx0ICs9IHNvdXJjZS5zbGljZSgwLCBtYXRjaC5pbmRleCk7CiAgICAgICAgICAgICAgICByZXN1bHQgKz0gKG1hdGNoWzFdIHx8ICcnKSArIGZvcm1hdChkLCBtYXRjaFsyXSwgc3luKTsKICAgICAgICAgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5zbGljZShtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXN1bHQgKz0gc291cmNlOwogICAgICAgICAgICAgICAgc291cmNlID0gJyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH07CiAgICAKICAgIC8qKgogICAgICogQG5hbWVzcGFjZQogICAgICogTmFtZXNwYWNlIHRvIGhvbGQgZm9ybWF0IGNvZGVzIGFuZCBmb3JtYXQgc2hvcnRjdXRzLiAgInBlcmwiIGFuZCAicGhwIiBmb3JtYXQgY29kZXMgCiAgICAgKiBhbmQgc2hvcnRjdXRzIGFyZSBkZWZpbmVkIGJ5IGRlZmF1bHQuICBBZGRpdGlvbmFsIGNvZGVzIGFuZCBzaG9ydGN1dHMgY2FuIGJlCiAgICAgKiBhZGRlZCBsaWtlOgogICAgICogCiAgICAgKiA8cHJlIGNsYXNzPSJjb2RlIj4KICAgICAqIGpzRGF0ZS5mb3JtYXRzWyJwZXJsIl0gPSB7CiAgICAgKiAgICAgImNvZGVzIjogewogICAgICogICAgICAgICBtYXRjaGVyOiAvc29tZXJlZ2V4LywKICAgICAqICAgICAgICAgWTogImZ1bGxZZWFyIiwgIC8vIG5hbWUgb2YgImdldCIgbWV0aG9kIHdpdGhvdXQgdGhlICJnZXQiLAogICAgICogICAgICAgICAuLi4sICAgICAgICAgICAgLy8gbW9yZSBjb2RlcwogICAgICogICAgIH0sCiAgICAgKiAgICAgInNob3J0Y3V0cyI6IHsKICAgICAqICAgICAgICAgRjogJyVZLSVtLSVkJywKICAgICAqICAgICAgICAgLi4uLCAgICAgICAgICAgIC8vIG1vcmUgc2hvcnRjdXRzCiAgICAgKiAgICAgfQogICAgICogfTsKICAgICAqIDwvcHJlPgogICAgICogCiAgICAgKiA8cD5BZGRpdGlvbmFsbHksIElTTyBhbmQgU1FMIHNob3J0Y3V0cyBhcmUgZGVmaW5lZCBhbmQgY2FuIGJlIGFjY2Vzc2VzIHZpYToKICAgICAqIDxjb2RlPmpzRGF0ZS5mb3JtYXRzLklTTzwvY29kZT4gYW5kIDxjb2RlPmpzRGF0ZS5mb3JtYXRzLlNRTDwvY29kZT4KICAgICAqLwogICAgCiAgICBqc0RhdGUuZm9ybWF0cyA9IHsKICAgICAgICBJU086JyVZLSVtLSVkVCVIOiVNOiVTLiVOJUcnLAogICAgICAgIFNRTDonJVktJW0tJWQgJUg6JU06JVMnCiAgICB9OwogICAgCiAgICAvKioKICAgICAqIFBlcmwgZm9ybWF0IGNvZGVzIGFuZCBzaG9ydGN1dHMgZm9yIHN0cmZ0aW1lLgogICAgICogCiAgICAgKiBBIGhhc2ggKG9iamVjdCkgb2YgY29kZXMgd2hlcmUgZWFjaCBjb2RlIG11c3QgYmUgYW4gYXJyYXkgd2hlcmUgdGhlIGZpcnN0IG1lbWJlciBpcyAKICAgICAqIHRoZSBuYW1lIG9mIGEgRGF0ZS5wcm90b3R5cGUgb3IganNEYXRlLnByb3RvdHlwZSBmdW5jdGlvbiB0byBjYWxsCiAgICAgKiBhbmQgb3B0aW9uYWxseSBhIHNlY29uZCBtZW1iZXIgaW5kaWNhdGluZyB0aGUgbnVtYmVyIHRvIHBhc3MgdG8gYWRkWmVyb3MoKQogICAgICogCiAgICAgKiA8cD5UaGUgZm9sbG93aW5nIGZvcm1hdCBjb2RlcyBhcmUgZGVmaW5lZDo8L3A+CiAgICAgKiAKICAgICAqIDxwcmUgY2xhc3M9ImNvZGUiPgogICAgICogQ29kZSAgICBSZXN1bHQgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uCiAgICAgKiA9PSBZZWFycyA9PSAgICAgICAgICAgCiAgICAgKiAlWSAgICAgIDIwMDggICAgICAgICAgICAgICAgICAgICAgRm91ci1kaWdpdCB5ZWFyCiAgICAgKiAleSAgICAgIDA4ICAgICAgICAgICAgICAgICAgICAgICAgVHdvLWRpZ2l0IHllYXIKICAgICAqIAogICAgICogPT0gTW9udGhzID09ICAgICAgICAgIAogICAgICogJW0gICAgICAwOSAgICAgICAgICAgICAgICAgICAgICAgIFR3by1kaWdpdCBtb250aAogICAgICogJSNtICAgICA5ICAgICAgICAgICAgICAgICAgICAgICAgIE9uZSBvciB0d28tZGlnaXQgbW9udGgKICAgICAqICVCICAgICAgU2VwdGVtYmVyICAgICAgICAgICAgICAgICBGdWxsIG1vbnRoIG5hbWUKICAgICAqICViICAgICAgU2VwICAgICAgICAgICAgICAgICAgICAgICBBYmJyZXZpYXRlZCBtb250aCBuYW1lCiAgICAgKiAKICAgICAqID09IERheXMgPT0gICAgICAgICAgICAKICAgICAqICVkICAgICAgMDUgICAgICAgICAgICAgICAgICAgICAgICBUd28tZGlnaXQgZGF5IG9mIG1vbnRoCiAgICAgKiAlI2QgICAgIDUgICAgICAgICAgICAgICAgICAgICAgICAgT25lIG9yIHR3by1kaWdpdCBkYXkgb2YgbW9udGgKICAgICAqICVlICAgICAgNSAgICAgICAgICAgICAgICAgICAgICAgICBPbmUgb3IgdHdvLWRpZ2l0IGRheSBvZiBtb250aAogICAgICogJUEgICAgICBTdW5kYXkgICAgICAgICAgICAgICAgICAgIEZ1bGwgbmFtZSBvZiB0aGUgZGF5IG9mIHRoZSB3ZWVrCiAgICAgKiAlYSAgICAgIFN1biAgICAgICAgICAgICAgICAgICAgICAgQWJicmV2aWF0ZWQgbmFtZSBvZiB0aGUgZGF5IG9mIHRoZSB3ZWVrCiAgICAgKiAldyAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyIG9mIHRoZSBkYXkgb2YgdGhlIHdlZWsgKDAgPSBTdW5kYXksIDYgPSBTYXR1cmRheSkKICAgICAqIAogICAgICogPT0gSG91cnMgPT0gICAgICAgICAgIAogICAgICogJUggICAgICAyMyAgICAgICAgICAgICAgICAgICAgICAgIEhvdXJzIGluIDI0LWhvdXIgZm9ybWF0ICh0d28gZGlnaXRzKQogICAgICogJSNIICAgICAzICAgICAgICAgICAgICAgICAgICAgICAgIEhvdXJzIGluIDI0LWhvdXIgaW50ZWdlciBmb3JtYXQgKG9uZSBvciB0d28gZGlnaXRzKQogICAgICogJUkgICAgICAxMSAgICAgICAgICAgICAgICAgICAgICAgIEhvdXJzIGluIDEyLWhvdXIgZm9ybWF0ICh0d28gZGlnaXRzKQogICAgICogJSNJICAgICAzICAgICAgICAgICAgICAgICAgICAgICAgIEhvdXJzIGluIDEyLWhvdXIgaW50ZWdlciBmb3JtYXQgKG9uZSBvciB0d28gZGlnaXRzKQogICAgICogJXAgICAgICBQTSAgICAgICAgICAgICAgICAgICAgICAgIEFNIG9yIFBNCiAgICAgKiAKICAgICAqID09IE1pbnV0ZXMgPT0gICAgICAgICAKICAgICAqICVNICAgICAgMDkgICAgICAgICAgICAgICAgICAgICAgICBNaW51dGVzICh0d28gZGlnaXRzKQogICAgICogJSNNICAgICA5ICAgICAgICAgICAgICAgICAgICAgICAgIE1pbnV0ZXMgKG9uZSBvciB0d28gZGlnaXRzKQogICAgICogCiAgICAgKiA9PSBTZWNvbmRzID09ICAgICAgICAgCiAgICAgKiAlUyAgICAgIDAyICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kcyAodHdvIGRpZ2l0cykKICAgICAqICUjUyAgICAgMiAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRzIChvbmUgb3IgdHdvIGRpZ2l0cykKICAgICAqICVzICAgICAgMTIwNjU2NzYyNTcyMyAgICAgICAgICAgICBVbml4IHRpbWVzdGFtcCAoU2Vjb25kcyBwYXN0IDE5NzAtMDEtMDEgMDA6MDA6MDApCiAgICAgKiAKICAgICAqID09IE1pbGxpc2Vjb25kcyA9PSAgICAKICAgICAqICVOICAgICAgMDA4ICAgICAgICAgICAgICAgICAgICAgICBNaWxsaXNlY29uZHMgKHRocmVlIGRpZ2l0cykKICAgICAqICUjTiAgICAgOCAgICAgICAgICAgICAgICAgICAgICAgICBNaWxsaXNlY29uZHMgKG9uZSB0byB0aHJlZSBkaWdpdHMpCiAgICAgKiAKICAgICAqID09IFRpbWV6b25lID09ICAgICAgICAKICAgICAqICVPICAgICAgMzYwICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlIGluIG1pbnV0ZXMgYmV0d2VlbiBsb2NhbCB0aW1lIGFuZCBHTVQKICAgICAqICVaICAgICAgTW91bnRhaW4gU3RhbmRhcmQgVGltZSAgICBOYW1lIG9mIHRpbWV6b25lIGFzIHJlcG9ydGVkIGJ5IGJyb3dzZXIKICAgICAqICVHICAgICAgMDY6MDAgICAgICAgICAgICAgICAgICAgICBIb3VycyBhbmQgbWludXRlcyBiZXR3ZWVuIEdNVAogICAgICogCiAgICAgKiA9PSBTaG9ydGN1dHMgPT0gICAgICAgCiAgICAgKiAlRiAgICAgIDIwMDgtMDMtMjYgICAgICAgICAgICAgICAgJVktJW0tJWQKICAgICAqICVUICAgICAgMDU6MDY6MzAgICAgICAgICAgICAgICAgICAlSDolTTolUwogICAgICogJVggICAgICAwNTowNjozMCAgICAgICAgICAgICAgICAgICVIOiVNOiVTCiAgICAgKiAleCAgICAgIDAzLzI2LzA4ICAgICAgICAgICAgICAgICAgJW0vJWQvJXkKICAgICAqICVEICAgICAgMDMvMjYvMDggICAgICAgICAgICAgICAgICAlbS8lZC8leQogICAgICogJSNjICAgICBXZWQgTWFyIDI2IDE1OjMxOjAwIDIwMDggICVhICViICVlICVIOiVNOiVTICVZCiAgICAgKiAldiAgICAgIDMtU2VwLTIwMDggICAgICAgICAgICAgICAgJWUtJWItJVkKICAgICAqICVSICAgICAgMTU6MzEgICAgICAgICAgICAgICAgICAgICAlSDolTQogICAgICogJXIgICAgICAwMzozMTowMCBQTSAgICAgICAgICAgICAgICVJOiVNOiVTICVwCiAgICAgKiAKICAgICAqID09IENoYXJhY3RlcnMgPT0gICAgICAKICAgICAqICVuICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBOZXdsaW5lCiAgICAgKiAldCAgICAgIFx0ICAgICAgICAgICAgICAgICAgICAgICAgVGFiCiAgICAgKiAlJSAgICAgICUgICAgICAgICAgICAgICAgICAgICAgICAgUGVyY2VudCBTeW1ib2wKICAgICAqIDwvcHJlPgogICAgICogCiAgICAgKiA8cD5Gb3JtYXR0aW5nIHNob3J0Y3V0cyB0aGF0IHdpbGwgYmUgdHJhbnNsYXRlZCBpbnRvIHRoZWlyIGxvbmdlciB2ZXJzaW9uLgogICAgICogQmUgc3VyZSB0aGF0IGZvcm1hdCBzaG9ydGN1dHMgZG8gbm90IHJlZmVyIHRvIHRoZW1zZWx2ZXM6IHRoaXMgd2lsbCBjYXVzZSBhbiBpbmZpbml0ZSBsb29wLjwvcD4KICAgICAqIAogICAgICogPHA+Rm9ybWF0IGNvZGVzIGFuZCBmb3JtYXQgc2hvcnRjdXRzIGNhbiBiZSByZWRlZmluZWQgYWZ0ZXIgdGhlIGpzRGF0ZQogICAgICogbW9kdWxlIGlzIGltcG9ydGVkLjwvcD4KICAgICAqIAogICAgICogPHA+Tm90ZSB0aGF0IGlmIHlvdSByZWRlZmluZSB0aGUgd2hvbGUgaGFzaCAob2JqZWN0KSwgeW91IG11c3Qgc3VwcGx5IGEgIm1hdGNoZXIiCiAgICAgKiByZWdleCBmb3IgdGhlIHBhcnNlci4gIFRoZSBkZWZhdWx0IG1hdGNoZXIgaXM6PC9wPgogICAgICogCiAgICAgKiA8Y29kZT4vKCklKCM/KCV8W2Etel0pKS9pPC9jb2RlPgogICAgICogCiAgICAgKiA8cD53aGljaCBjb3JyZXNwb25kcyB0byB0aGUgUGVybCBzeW50YXggdXNlZCBieSBkZWZhdWx0LjwvcD4KICAgICAqIAogICAgICogPHA+QnkgY3VzdG9taXppbmcgdGhlIG1hdGNoZXIgYW5kIGZvcm1hdCBjb2RlcywgbmVhcmx5IGFueSBzdHJmdGltZSBmdW5jdGlvbmFsaXR5IGlzIHBvc3NpYmxlLjwvcD4KICAgICAqLwogICAgIAogICAganNEYXRlLmZvcm1hdHMucGVybCA9IHsKICAgICAgICBjb2RlczogewogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyAyLXBhcnQgcmVnZXggbWF0Y2hlciBmb3IgZm9ybWF0IGNvZGVzCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vIGZpcnN0IG1hdGNoIG11c3QgYmUgdGhlIGNoYXJhY3RlciBiZWZvcmUgdGhlIGNvZGUgKHRvIGFjY291bnQgZm9yIGVzY2FwaW5nKQogICAgICAgICAgICAvLyBzZWNvbmQgbWF0Y2ggbXVzdCBiZSB0aGUgZm9ybWF0IGNvZGUgY2hhcmFjdGVyKHMpCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIG1hdGNoZXI6IC8oKSUoIz8oJXxbYS16XSkpL2ksCiAgICAgICAgICAgIC8vIHllYXIKICAgICAgICAgICAgWTogJ0Z1bGxZZWFyJywKICAgICAgICAgICAgeTogJ1Nob3J0WWVhci4yJywKICAgICAgICAgICAgLy8gbW9udGgKICAgICAgICAgICAgbTogJ01vbnRoTnVtYmVyLjInLAogICAgICAgICAgICAnI20nOiAnTW9udGhOdW1iZXInLAogICAgICAgICAgICBCOiAnTW9udGhOYW1lJywKICAgICAgICAgICAgYjogJ0FiYnJNb250aE5hbWUnLAogICAgICAgICAgICAvLyBkYXkKICAgICAgICAgICAgZDogJ0RhdGUuMicsCiAgICAgICAgICAgICcjZCc6ICdEYXRlJywKICAgICAgICAgICAgZTogJ0RhdGUnLAogICAgICAgICAgICBBOiAnRGF5TmFtZScsCiAgICAgICAgICAgIGE6ICdBYmJyRGF5TmFtZScsCiAgICAgICAgICAgIHc6ICdEYXknLAogICAgICAgICAgICAvLyBob3VycwogICAgICAgICAgICBIOiAnSG91cnMuMicsCiAgICAgICAgICAgICcjSCc6ICdIb3VycycsCiAgICAgICAgICAgIEk6ICdIb3VyczEyLjInLAogICAgICAgICAgICAnI0knOiAnSG91cnMxMicsCiAgICAgICAgICAgIHA6ICdBTVBNJywKICAgICAgICAgICAgLy8gbWludXRlcwogICAgICAgICAgICBNOiAnTWludXRlcy4yJywKICAgICAgICAgICAgJyNNJzogJ01pbnV0ZXMnLAogICAgICAgICAgICAvLyBzZWNvbmRzCiAgICAgICAgICAgIFM6ICdTZWNvbmRzLjInLAogICAgICAgICAgICAnI1MnOiAnU2Vjb25kcycsCiAgICAgICAgICAgIHM6ICdVbml4JywKICAgICAgICAgICAgLy8gbWlsbGlzZWNvbmRzCiAgICAgICAgICAgIE46ICdNaWxsaXNlY29uZHMuMycsCiAgICAgICAgICAgICcjTic6ICdNaWxsaXNlY29uZHMnLAogICAgICAgICAgICAvLyB0aW1lem9uZQogICAgICAgICAgICBPOiAnVGltZXpvbmVPZmZzZXQnLAogICAgICAgICAgICBaOiAnVGltZXpvbmVOYW1lJywKICAgICAgICAgICAgRzogJ0dtdE9mZnNldCcgIAogICAgICAgIH0sCiAgICAgICAgCiAgICAgICAgc2hvcnRjdXRzOiB7CiAgICAgICAgICAgIC8vIGRhdGUKICAgICAgICAgICAgRjogJyVZLSVtLSVkJywKICAgICAgICAgICAgLy8gdGltZQogICAgICAgICAgICBUOiAnJUg6JU06JVMnLAogICAgICAgICAgICBYOiAnJUg6JU06JVMnLAogICAgICAgICAgICAvLyBsb2NhbCBmb3JtYXQgZGF0ZQogICAgICAgICAgICB4OiAnJW0vJWQvJXknLAogICAgICAgICAgICBEOiAnJW0vJWQvJXknLAogICAgICAgICAgICAvLyBsb2NhbCBmb3JtYXQgZXh0ZW5kZWQKICAgICAgICAgICAgJyNjJzogJyVhICViICVlICVIOiVNOiVTICVZJywKICAgICAgICAgICAgLy8gbG9jYWwgZm9ybWF0IHNob3J0CiAgICAgICAgICAgIHY6ICclZS0lYi0lWScsCiAgICAgICAgICAgIFI6ICclSDolTScsCiAgICAgICAgICAgIHI6ICclSTolTTolUyAlcCcsCiAgICAgICAgICAgIC8vIHRhYiBhbmQgbmV3bGluZQogICAgICAgICAgICB0OiAnXHQnLAogICAgICAgICAgICBuOiAnXG4nLAogICAgICAgICAgICAnJSc6ICclJwogICAgICAgIH0KICAgIH07CiAgICAKICAgIC8qKgogICAgICogUEhQIGZvcm1hdCBjb2RlcyBhbmQgc2hvcnRjdXRzIGZvciBzdHJmdGltZS4KICAgICAqIAogICAgICogQSBoYXNoIChvYmplY3QpIG9mIGNvZGVzIHdoZXJlIGVhY2ggY29kZSBtdXN0IGJlIGFuIGFycmF5IHdoZXJlIHRoZSBmaXJzdCBtZW1iZXIgaXMgCiAgICAgKiB0aGUgbmFtZSBvZiBhIERhdGUucHJvdG90eXBlIG9yIGpzRGF0ZS5wcm90b3R5cGUgZnVuY3Rpb24gdG8gY2FsbAogICAgICogYW5kIG9wdGlvbmFsbHkgYSBzZWNvbmQgbWVtYmVyIGluZGljYXRpbmcgdGhlIG51bWJlciB0byBwYXNzIHRvIGFkZFplcm9zKCkKICAgICAqIAogICAgICogPHA+VGhlIGZvbGxvd2luZyBmb3JtYXQgY29kZXMgYXJlIGRlZmluZWQ6PC9wPgogICAgICogCiAgICAgKiA8cHJlIGNsYXNzPSJjb2RlIj4KICAgICAqIENvZGUgICAgUmVzdWx0ICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbgogICAgICogPT09IERheXMgPT09ICAgICAgICAKICAgICAqICVhICAgICAgU3VuIHRocm91Z2ggU2F0ICAgICAgICAgICBBbiBhYmJyZXZpYXRlZCB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkYXkKICAgICAqICVBICAgICAgU3VuZGF5IC0gU2F0dXJkYXkgICAgICAgICBBIGZ1bGwgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGF5CiAgICAgKiAlZCAgICAgIDAxIHRvIDMxICAgICAgICAgICAgICAgICAgVHdvLWRpZ2l0IGRheSBvZiB0aGUgbW9udGggKHdpdGggbGVhZGluZyB6ZXJvcykKICAgICAqICVlICAgICAgMSB0byAzMSAgICAgICAgICAgICAgICAgICBEYXkgb2YgdGhlIG1vbnRoLCB3aXRoIGEgc3BhY2UgcHJlY2VkaW5nIHNpbmdsZSBkaWdpdHMuCiAgICAgKiAlaiAgICAgIDAwMSB0byAzNjYgICAgICAgICAgICAgICAgRGF5IG9mIHRoZSB5ZWFyLCAzIGRpZ2l0cyB3aXRoIGxlYWRpbmcgemVyb3MKICAgICAqICV1ICAgICAgMSAtIDcgKE1vbiAtIFN1bikgICAgICAgICBJU08tODYwMSBudW1lcmljIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkYXkgb2YgdGhlIHdlZWsKICAgICAqICV3ICAgICAgMCAtIDYgKFN1biAtIFNhdCkgICAgICAgICBOdW1lcmljIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkYXkgb2YgdGhlIHdlZWsKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICogPT09IFdlZWsgPT09ICAgICAgICAgICAgICAgICAgICAgCiAgICAgKiAlVSAgICAgIDEzICAgICAgICAgICAgICAgICAgICAgICAgRnVsbCBXZWVrIG51bWJlciwgc3RhcnRpbmcgd2l0aCB0aGUgZmlyc3QgU3VuZGF5IGFzIHRoZSBmaXJzdCB3ZWVrCiAgICAgKiAlViAgICAgIDAxIHRocm91Z2ggNTMgICAgICAgICAgICAgSVNPLTg2MDE6MTk4OCB3ZWVrIG51bWJlciwgc3RhcnRpbmcgd2l0aCB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhciAKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGF0IGxlYXN0IDQgd2Vla2RheXMsIHdpdGggTW9uZGF5IGJlaW5nIHRoZSBzdGFydCBvZiB0aGUgd2VlawogICAgICogJVcgICAgICA0NiAgICAgICAgICAgICAgICAgICAgICAgIEEgbnVtZXJpYyByZXByZXNlbnRhdGlvbiBvZiB0aGUgd2VlayBvZiB0aGUgeWVhciwgCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRpbmcgd2l0aCB0aGUgZmlyc3QgTW9uZGF5IGFzIHRoZSBmaXJzdCB3ZWVrCiAgICAgKiA9PT0gTW9udGggPT09ICAgICAgICAgICAgICAgICAgICAKICAgICAqICViICAgICAgSmFuIHRocm91Z2ggRGVjICAgICAgICAgICBBYmJyZXZpYXRlZCBtb250aCBuYW1lLCBiYXNlZCBvbiB0aGUgbG9jYWxlCiAgICAgKiAlQiAgICAgIEphbnVhcnkgLSBEZWNlbWJlciAgICAgICAgRnVsbCBtb250aCBuYW1lLCBiYXNlZCBvbiB0aGUgbG9jYWxlCiAgICAgKiAlaCAgICAgIEphbiB0aHJvdWdoIERlYyAgICAgICAgICAgQWJicmV2aWF0ZWQgbW9udGggbmFtZSwgYmFzZWQgb24gdGhlIGxvY2FsZSAoYW4gYWxpYXMgb2YgJWIpCiAgICAgKiAlbSAgICAgIDAxIC0gMTIgKEphbiAtIERlYykgICAgICAgVHdvIGRpZ2l0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb250aAogICAgICogCiAgICAgKiA9PT0gWWVhciA9PT0gICAgICAgICAgICAgICAgICAgICAKICAgICAqICVDICAgICAgMTkgICAgICAgICAgICAgICAgICAgICAgICBUd28gZGlnaXQgY2VudHVyeSAoeWVhci8xMDAsIHRydW5jYXRlZCB0byBhbiBpbnRlZ2VyKQogICAgICogJXkgICAgICAwOSBmb3IgMjAwOSAgICAgICAgICAgICAgIFR3byBkaWdpdCB5ZWFyCiAgICAgKiAlWSAgICAgIDIwMzggICAgICAgICAgICAgICAgICAgICAgRm91ciBkaWdpdCB5ZWFyCiAgICAgKiAKICAgICAqID09PSBUaW1lID09PSAgICAgICAgICAgICAgICAgICAgIAogICAgICogJUggICAgICAwMCB0aHJvdWdoIDIzICAgICAgICAgICAgIFR3byBkaWdpdCByZXByZXNlbnRhdGlvbiBvZiB0aGUgaG91ciBpbiAyNC1ob3VyIGZvcm1hdAogICAgICogJUkgICAgICAwMSB0aHJvdWdoIDEyICAgICAgICAgICAgIFR3byBkaWdpdCByZXByZXNlbnRhdGlvbiBvZiB0aGUgaG91ciBpbiAxMi1ob3VyIGZvcm1hdAogICAgICogJWwgICAgICAxIHRocm91Z2ggMTIgICAgICAgICAgICAgIEhvdXIgaW4gMTItaG91ciBmb3JtYXQsIHdpdGggYSBzcGFjZSBwcmVjZWVkaW5nIHNpbmdsZSBkaWdpdHMKICAgICAqICVNICAgICAgMDAgdGhyb3VnaCA1OSAgICAgICAgICAgICBUd28gZGlnaXQgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1pbnV0ZQogICAgICogJXAgICAgICBBTS9QTSAgICAgICAgICAgICAgICAgICAgIFVQUEVSLUNBU0UgJ0FNJyBvciAnUE0nIGJhc2VkIG9uIHRoZSBnaXZlbiB0aW1lCiAgICAgKiAlUCAgICAgIGFtL3BtICAgICAgICAgICAgICAgICAgICAgbG93ZXItY2FzZSAnYW0nIG9yICdwbScgYmFzZWQgb24gdGhlIGdpdmVuIHRpbWUKICAgICAqICVyICAgICAgMDk6MzQ6MTcgUE0gICAgICAgICAgICAgICBTYW1lIGFzICVJOiVNOiVTICVwCiAgICAgKiAlUiAgICAgIDAwOjM1ICAgICAgICAgICAgICAgICAgICAgU2FtZSBhcyAlSDolTQogICAgICogJVMgICAgICAwMCB0aHJvdWdoIDU5ICAgICAgICAgICAgIFR3byBkaWdpdCByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2Vjb25kCiAgICAgKiAlVCAgICAgIDIxOjM0OjE3ICAgICAgICAgICAgICAgICAgU2FtZSBhcyAlSDolTTolUwogICAgICogJVggICAgICAwMzo1OToxNiAgICAgICAgICAgICAgICAgIFByZWZlcnJlZCB0aW1lIHJlcHJlc2VudGF0aW9uIGJhc2VkIG9uIGxvY2FsZSwgd2l0aG91dCB0aGUgZGF0ZQogICAgICogJXogICAgICAtMDUwMCBvciBFU1QgICAgICAgICAgICAgIEVpdGhlciB0aGUgdGltZSB6b25lIG9mZnNldCBmcm9tIFVUQyBvciB0aGUgYWJicmV2aWF0aW9uCiAgICAgKiAlWiAgICAgIC0wNTAwIG9yIEVTVCAgICAgICAgICAgICAgVGhlIHRpbWUgem9uZSBvZmZzZXQvYWJicmV2aWF0aW9uIG9wdGlvbiBOT1QgZ2l2ZW4gYnkgJXoKICAgICAqIAogICAgICogPT09IFRpbWUgYW5kIERhdGUgPT09ICAgICAgICAgICAgCiAgICAgKiAlRCAgICAgIDAyLzA1LzA5ICAgICAgICAgICAgICAgICAgU2FtZSBhcyAlbS8lZC8leQogICAgICogJUYgICAgICAyMDA5LTAyLTA1ICAgICAgICAgICAgICAgIFNhbWUgYXMgJVktJW0tJWQgKGNvbW1vbmx5IHVzZWQgaW4gZGF0YWJhc2UgZGF0ZXN0YW1wcykKICAgICAqICVzICAgICAgMzA1ODE1MjAwICAgICAgICAgICAgICAgICBVbml4IEVwb2NoIFRpbWUgdGltZXN0YW1wIChzYW1lIGFzIHRoZSB0aW1lKCkgZnVuY3Rpb24pCiAgICAgKiAleCAgICAgIDAyLzA1LzA5ICAgICAgICAgICAgICAgICAgUHJlZmVycmVkIGRhdGUgcmVwcmVzZW50YXRpb24sIHdpdGhvdXQgdGhlIHRpbWUKICAgICAqIAogICAgICogPT09IE1pc2NlbGxhbmVvdXMgPT09ICAgICAgICAgICAgCiAgICAgKiAlbiAgICAgICAgLS0tICAgICAgICAgICAgICAgICAgICAgQSBuZXdsaW5lIGNoYXJhY3RlciAoXG4pCiAgICAgKiAldCAgICAgICAgLS0tICAgICAgICAgICAgICAgICAgICAgQSBUYWIgY2hhcmFjdGVyIChcdCkKICAgICAqICUlICAgICAgICAtLS0gICAgICAgICAgICAgICAgICAgICBBIGxpdGVyYWwgcGVyY2VudGFnZSBjaGFyYWN0ZXIgKCUpCiAgICAgKiA8L3ByZT4KICAgICAqLwogCiAgICBqc0RhdGUuZm9ybWF0cy5waHAgPSB7CiAgICAgICAgY29kZXM6IHsKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gMi1wYXJ0IHJlZ2V4IG1hdGNoZXIgZm9yIGZvcm1hdCBjb2RlcwogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBmaXJzdCBtYXRjaCBtdXN0IGJlIHRoZSBjaGFyYWN0ZXIgYmVmb3JlIHRoZSBjb2RlICh0byBhY2NvdW50IGZvciBlc2NhcGluZykKICAgICAgICAgICAgLy8gc2Vjb25kIG1hdGNoIG11c3QgYmUgdGhlIGZvcm1hdCBjb2RlIGNoYXJhY3RlcihzKQogICAgICAgICAgICAvLwogICAgICAgICAgICBtYXRjaGVyOiAvKCklKCglfFthLXpdKSkvaSwKICAgICAgICAgICAgLy8gZGF5CiAgICAgICAgICAgIGE6ICdBYmJyRGF5TmFtZScsCiAgICAgICAgICAgIEE6ICdEYXlOYW1lJywKICAgICAgICAgICAgZDogJ0RhdGUuMicsCiAgICAgICAgICAgIGU6ICdEYXRlJywKICAgICAgICAgICAgajogJ0RheU9mWWVhci4zJywKICAgICAgICAgICAgdTogJ0RheU9mV2VlaycsCiAgICAgICAgICAgIHc6ICdEYXknLAogICAgICAgICAgICAvLyB3ZWVrCiAgICAgICAgICAgIFU6ICdGdWxsV2Vla09mWWVhci4yJywKICAgICAgICAgICAgVjogJ0lzb1dlZWsuMicsCiAgICAgICAgICAgIFc6ICdXZWVrT2ZZZWFyLjInLAogICAgICAgICAgICAvLyBtb250aAogICAgICAgICAgICBiOiAnQWJick1vbnRoTmFtZScsCiAgICAgICAgICAgIEI6ICdNb250aE5hbWUnLAogICAgICAgICAgICBtOiAnTW9udGhOdW1iZXIuMicsCiAgICAgICAgICAgIGg6ICdBYmJyTW9udGhOYW1lJywKICAgICAgICAgICAgLy8geWVhcgogICAgICAgICAgICBDOiAnQ2VudHVyeS4yJywKICAgICAgICAgICAgeTogJ1Nob3J0WWVhci4yJywKICAgICAgICAgICAgWTogJ0Z1bGxZZWFyJywKICAgICAgICAgICAgLy8gdGltZQogICAgICAgICAgICBIOiAnSG91cnMuMicsCiAgICAgICAgICAgIEk6ICdIb3VyczEyLjInLAogICAgICAgICAgICBsOiAnSG91cnMxMicsCiAgICAgICAgICAgIHA6ICdBTVBNJywKICAgICAgICAgICAgUDogJ0FtUG0nLAogICAgICAgICAgICBNOiAnTWludXRlcy4yJywKICAgICAgICAgICAgUzogJ1NlY29uZHMuMicsCiAgICAgICAgICAgIHM6ICdVbml4JywKICAgICAgICAgICAgTzogJ1RpbWV6b25lT2Zmc2V0JywKICAgICAgICAgICAgejogJ0dtdE9mZnNldCcsCiAgICAgICAgICAgIFo6ICdUaW1lem9uZUFiYnInCiAgICAgICAgfSwKICAgICAgICAKICAgICAgICBzaG9ydGN1dHM6IHsKICAgICAgICAgICAgRDogJyVtLyVkLyV5JywKICAgICAgICAgICAgRjogJyVZLSVtLSVkJywKICAgICAgICAgICAgVDogJyVIOiVNOiVTJywKICAgICAgICAgICAgWDogJyVIOiVNOiVTJywKICAgICAgICAgICAgeDogJyVtLyVkLyV5JywKICAgICAgICAgICAgUjogJyVIOiVNJywKICAgICAgICAgICAgcjogJyVJOiVNOiVTICVwJywKICAgICAgICAgICAgdDogJ1x0JywKICAgICAgICAgICAgbjogJ1xuJywKICAgICAgICAgICAgJyUnOiAnJScKICAgICAgICB9CiAgICB9OyAgIAogICAgLy8KICAgIC8vIENvbmNlcHR1YWxseSwgdGhlIGxvZ2ljIGltcGxlbWVudGVkIGhlcmUgaXMgc2ltaWxhciB0byBLZW4gU255ZGVyJ3MgRGF0ZSBJbnN0YW5jZSBNZXRob2RzLgogICAgLy8gSSB1c2UgaGlzIGlkZWEgb2YgYSBzZXQgb2YgcGFyc2VycyB3aGljaCBjYW4gYmUgcmVndWxhciBleHByZXNzaW9ucyBvciBmdW5jdGlvbnMsCiAgICAvLyBpdGVyYXRpbmcgdGhyb3VnaCB0aG9zZSwgYW5kIHRoZW4gc2VlaW5nIGlmIERhdGUucGFyc2UoKSB3aWxsIGNyZWF0ZSBhIGRhdGUuCiAgICAvLyBUaGUgcGFyc2VyIGV4cHJlc3Npb25zIGFuZCBmdW5jdGlvbnMgYXJlIGEgbGl0dGxlIGRpZmZlcmVudCBhbmQgc29tZSBidWdzIGhhdmUgYmVlbgogICAgLy8gd29ya2VkIG91dC4gIEFsc28sIGEgbG90IG9mICJwcmUtcGFyc2luZyIgaXMgZG9uZSB0byBmaXggaW1wbGVtZW50YXRpb24KICAgIC8vIHZhcmlhdGlvbnMgb2YgRGF0ZS5wYXJzZSgpIGJldHdlZW4gYnJvd3NlcnMuCiAgICAvLwogICAganNEYXRlLmNyZWF0ZURhdGUgPSBmdW5jdGlvbihkYXRlKSB7CiAgICAgICAgLy8gaWYgcGFzc2luZyBpbiBtdWx0aXBsZSBhcmd1bWVudHMsIHRyeSBEYXRlIGNvbnN0cnVjdG9yCiAgICAgICAgaWYgKGRhdGUgPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoKTsKICAgICAgICB9CiAgICAgICAgLy8gSWYgdGhlIHBhc3NlZCB2YWx1ZSBpcyBhbHJlYWR5IGEgZGF0ZSBvYmplY3QsIHJldHVybiBpdAogICAgICAgIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkgewogICAgICAgICAgICByZXR1cm4gZGF0ZTsKICAgICAgICB9CiAgICAgICAgLy8gaWYgKHR5cGVvZiBkYXRlID09ICdudW1iZXInKSByZXR1cm4gbmV3IERhdGUoZGF0ZSAqIDEwMDApOwogICAgICAgIC8vIElmIHRoZSBwYXNzZWQgdmFsdWUgaXMgYW4gaW50ZWdlciwgaW50ZXJwcmV0IGl0IGFzIGEgamF2YXNjcmlwdCB0aW1lc3RhbXAKICAgICAgICBpZiAodHlwZW9mIGRhdGUgPT0gJ251bWJlcicpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBCZWZvcmUgcGFzc2luZyBzdHJpbmdzIGludG8gRGF0ZS5wYXJzZSgpLCBoYXZlIHRvIG5vcm1hbGl6ZSB0aGVtIGZvciBjZXJ0YWluIGNvbmRpdGlvbnMuCiAgICAgICAgLy8gSWYgc3RyaW5ncyBhcmUgbm90IGZvcm1hdHRlZCBzdGFjY29yZGluZyB0byB0aGUgRWNtYVNjcmlwdCBzcGVjLCByZXN1bHRzIGZyb20gRGF0ZSBwYXJzZSB3aWxsIGJlIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudC4gIAogICAgICAgIC8vIAogICAgICAgIC8vIEZvciBleGFtcGxlOiAKICAgICAgICAvLyAgKiBGRiBhbmQgT3BlcmEgYXNzdW1lIDIgZGlnaXQgZGF0ZXMgYXJlIHByZSB5MmssIENob21lIGFzc3VtZXMgPDUwIGlzIHByZSB5MmssIDUwKyBpcyAyMXN0IGNlbnR1cnkuICAKICAgICAgICAvLyAgKiBDaHJvbWUgd2lsbCBjb3JyZWN0bHkgcGFyc2UgJzE5ODQtMS0yNScgaW50byBsb2NhbHRpbWUsIEZGIGFuZCBPcGVyYSB3aWxsIG5vdCBwYXJzZS4KICAgICAgICAvLyAgKiBCb3RoIEZGLCBDaHJvbWUgYW5kIE9wZXJhIHdpbGwgcGFyc2UgJzE5ODQvMS8yNScgaW50byBsb2NhbHRpbWUuCiAgICAgICAgCiAgICAgICAgLy8gcmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcwogICAgICAgIHZhciBwYXJzYWJsZSA9IFN0cmluZyhkYXRlKS5yZXBsYWNlKC9eXHMqKC4rKVxzKiQvZywgJyQxJyk7CiAgICAgICAgCiAgICAgICAgLy8gcmVwbGFjZSBkYWhzZXMgKC0pIHdpdGggc2xhc2hlcyAoLykgaW4gZGF0ZXMgbGlrZSBuW25ubl0vbltuXS9uW25ubl0KICAgICAgICBwYXJzYWJsZSA9IHBhcnNhYmxlLnJlcGxhY2UoL14oWzAtOV17MSw0fSktKFswLTldezEsMn0pLShbMC05XXsxLDR9KS8sICIkMS8kMi8kMyIpOwogICAgICAgIAogICAgICAgIC8vLy8vLy8vLwogICAgICAgIC8vIE5lZWQgdG8gY2hlY2sgZm9yICcxNS1EZWMtMDknIGFsc28uCiAgICAgICAgLy8gRkYgd2lsbCBub3QgcGFyc2UsIGJ1dCBDaHJvbWUgd2lsbC4KICAgICAgICAvLyBDaHJvbWUgd2lsbCBzZXQgZGF0ZSB0byAyMDA5IGFzIHdlbGwuCiAgICAgICAgLy8vLy8vLy8vCiAgICAgICAgCiAgICAgICAgLy8gZmlyc3QgY2hlY2sgZm9yICdkZC1tbW0teXl5eScgb3IgJ2RkL21tbS95eXl5JyBsaWtlICcxNS1EZWMtMjAxMCcKICAgICAgICBwYXJzYWJsZSA9IHBhcnNhYmxlLnJlcGxhY2UoL14oM1swMV18WzAtMl0/XGQpWy1cL10oW2Etel17Myx9KVstXC9dKFxkezR9KS9pLCAiJDEgJDIgJDMiKTsKICAgICAgICAKICAgICAgICAvLyBOb3cgY2hlY2sgZm9yICdkZC1tbW0teXknIG9yICdkZC9tbW0veXknIGFuZCBub3JtYWxpemUgeWVhcnMgdG8gZGVmYXVsdCBjZW50dXJ5LgogICAgICAgIHZhciBtYXRjaCA9IHBhcnNhYmxlLm1hdGNoKC9eKDNbMDFdfFswLTJdP1xkKVstXC9dKFthLXpdezMsfSlbLVwvXShcZHsyfSlcRCovaSk7CiAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoLmxlbmd0aCA+IDMpIHsKICAgICAgICAgICAgdmFyIG0zID0gcGFyc2VGbG9hdChtYXRjaFszXSk7CiAgICAgICAgICAgIHZhciBueSA9IGpzRGF0ZS5jb25maWcuZGVmYXVsdENlbnR1cnkgKyBtMzsKICAgICAgICAgICAgbnkgPSBTdHJpbmcobnkpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gbm93IHJlcGxhY2UgMiBkaWdpdCB5ZWFyIHdpdGggNCBkaWdpdCB5ZWFyCiAgICAgICAgICAgIHBhcnNhYmxlID0gcGFyc2FibGUucmVwbGFjZSgvXigzWzAxXXxbMC0yXT9cZClbLVwvXShbYS16XXszLH0pWy1cL10oXGR7Mn0pXEQqL2ksIG1hdGNoWzFdICsnICcrIG1hdGNoWzJdICsnICcrIG55KTsKICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIENoZWNrIGZvciAnMS8xOS83MCA4OjE0UE0nCiAgICAgICAgLy8gd2hlcmUgc3RhcnRzIHdpdGggbW0vZGQveXkgb3IgeXkvbW0vZGQgYW5kIGhhdmUgc29tZXRoaW5nIGFmdGVyCiAgICAgICAgLy8gQ2hlY2sgaWYgMXN0IHBvc3RpaW9uIGlzIGdyZWF0ZXIgdGhhbiAzMSwgYXNzdW1lIGl0IGlzIHllYXIuCiAgICAgICAgLy8gQXNzbWUgYWxsIDIgZGlnaXQgeWVhcnMgYXJlIDE5MDAncy4KICAgICAgICAvLyBGaW5hbGx5LCBjaGFuZ2UgdGhlbSBpbnRvIFVTIHN0eWxlIG1tL2RkL3l5eXkgcmVwcmVzZW50YXRpb25zLgogICAgICAgIG1hdGNoID0gcGFyc2FibGUubWF0Y2goL14oWzAtOV17MSwyfSlbLVwvXShbMC05XXsxLDJ9KVstXC9dKFswLTldezEsMn0pW14wLTldLyk7CiAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gaDEocGFyc2FibGUsIG1hdGNoKSB7CiAgICAgICAgICAgIHZhciBtMSA9IHBhcnNlRmxvYXQobWF0Y2hbMV0pOwogICAgICAgICAgICB2YXIgbTIgPSBwYXJzZUZsb2F0KG1hdGNoWzJdKTsKICAgICAgICAgICAgdmFyIG0zID0gcGFyc2VGbG9hdChtYXRjaFszXSk7CiAgICAgICAgICAgIHZhciBjZW50ID0ganNEYXRlLmNvbmZpZy5kZWZhdWx0Q2VudHVyeTsKICAgICAgICAgICAgdmFyIG55LCBuZCwgbm0sIHN0cjsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChtMSA+IDMxKSB7IC8vIGZpcnN0IG51bWJlciBpcyBhIHllYXIKICAgICAgICAgICAgICAgIG5kID0gbTM7CiAgICAgICAgICAgICAgICBubSA9IG0yOwogICAgICAgICAgICAgICAgbnkgPSBjZW50ICsgbTE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGVsc2UgeyAvLyBsYXN0IG51bWJlciBpcyB0aGUgeWVhcgogICAgICAgICAgICAgICAgbmQgPSBtMjsKICAgICAgICAgICAgICAgIG5tID0gbTE7CiAgICAgICAgICAgICAgICBueSA9IGNlbnQgKyBtMzsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgc3RyID0gbm0rJy8nK25kKycvJytueTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIG5vdyByZXBsYWNlIDIgZGlnaXQgeWVhciB3aXRoIDQgZGlnaXQgeWVhcgogICAgICAgICAgICByZXR1cm4gIHBhcnNhYmxlLnJlcGxhY2UoL14oWzAtOV17MSwyfSlbLVwvXShbMC05XXsxLDJ9KVstXC9dKFswLTldezEsMn0pLywgc3RyKTsKICAgICAgICAKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoLmxlbmd0aCA+IDMpIHsKICAgICAgICAgICAgcGFyc2FibGUgPSBoMShwYXJzYWJsZSwgbWF0Y2gpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBOb3cgY2hlY2sgZm9yICcxLzE5LzcwJyB3aXRoIG5vdGhpbmcgYWZ0ZXIgYW5kIGRvIGFzIGFib3ZlCiAgICAgICAgdmFyIG1hdGNoID0gcGFyc2FibGUubWF0Y2goL14oWzAtOV17MSwyfSlbLVwvXShbMC05XXsxLDJ9KVstXC9dKFswLTldezEsMn0pJC8pOwogICAgICAgIAogICAgICAgIGlmIChtYXRjaCAmJiBtYXRjaC5sZW5ndGggPiAzKSB7CiAgICAgICAgICAgIHBhcnNhYmxlID0gaDEocGFyc2FibGUsIG1hdGNoKTsKICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAKICAgICAgICB2YXIgaSA9IDA7CiAgICAgICAgdmFyIGxlbmd0aCA9IGpzRGF0ZS5tYXRjaGVycy5sZW5ndGg7CiAgICAgICAgdmFyIHBhdHRlcm4sCiAgICAgICAgICAgIG1zLAogICAgICAgICAgICBjdXJyZW50ID0gcGFyc2FibGUsCiAgICAgICAgICAgIG9iajsKICAgICAgICB3aGlsZSAoaSA8IGxlbmd0aCkgewogICAgICAgICAgICBtcyA9IERhdGUucGFyc2UoY3VycmVudCk7CiAgICAgICAgICAgIGlmICghaXNOYU4obXMpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUobXMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHBhdHRlcm4gPSBqc0RhdGUubWF0Y2hlcnNbaV07CiAgICAgICAgICAgIGlmICh0eXBlb2YgcGF0dGVybiA9PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICBvYmogPSBwYXR0ZXJuLmNhbGwoanNEYXRlLCBjdXJyZW50KTsKICAgICAgICAgICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBEYXRlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9iajsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBwYXJzYWJsZS5yZXBsYWNlKHBhdHRlcm5bMF0sIHBhdHRlcm5bMV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGkrKzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIE5hTjsKICAgIH07CiAgICAKCiAgICAvKioKICAgICAqIEBzdGF0aWMKICAgICAqIEhhbmR5IHN0YXRpYyB1dGlsaXR5IGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSBnaXZlbiBtb250aC4KICAgICAqIEBwYXJhbSB7SW50ZWdlcn0geWVhciBZZWFyCiAgICAgKiBAcGFyYW0ge0ludGVnZXJ9IG1vbnRoIE1vbnRoICgxLTEyKQogICAgICogQHJldHVybnMge0ludGVnZXJ9IE51bWJlciBvZiBkYXlzIGluIHRoZSBtb250aC4KICAgICovCiAgICAvLwogICAgLy8gaGFuZHkgdXRpbGl0eSBtZXRob2QgQm9ycm93ZWQgcmlnaHQgZnJvbSBLZW4gU255ZGVyJ3MgRGF0ZSBJbnN0YW5jZSBNZWh0b2RzLgogICAgLy8gCiAgICBqc0RhdGUuZGF5c0luTW9udGggPSBmdW5jdGlvbih5ZWFyLCBtb250aCkgewogICAgICAgIGlmIChtb250aCA9PSAyKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCAxLCAyOSkuZ2V0RGF0ZSgpID09IDI5ID8gMjkgOiAyODsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIFt1bmRlZmluZWQsMzEsdW5kZWZpbmVkLDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXVttb250aF07CiAgICB9OwoKCiAgICAvLwogICAgLy8gQW4gQXJyYXkgb2YgcmVndWxhciBleHByZXNzaW9ucyBvciBmdW5jdGlvbnMgdGhhdCB3aWxsIGF0dGVtcHQgdG8gbWF0Y2ggdGhlIGRhdGUgc3RyaW5nLgogICAgLy8gRnVuY3Rpb25zIGFyZSBjYWxsZWQgd2l0aCBzY29wZSBvZiBhIGpzRGF0ZSBpbnN0YW5jZS4KICAgIC8vCiAgICBqc0RhdGUubWF0Y2hlcnMgPSBbCiAgICAgICAgLy8gY29udmVydCBkZC5tbW0ueXl5eSB0byBtbS9kZC95eXl5ICh3b3JsZCBkYXRlIHRvIFVTIGRhdGUpLgogICAgICAgIFsvKDNbMDFdfFswLTJdXGQpXHMqXC5ccyooMVswLTJdfDBcZClccypcLlxzKihbMS05XVxkezN9KS8sICckMi8kMS8kMyddLAogICAgICAgIC8vIGNvbnZlcnQgeXl5eS1tbS1kZCB0byBtbS9kZC95eXl5IChJU08gZGF0ZSB0byBVUyBkYXRlKS4KICAgICAgICBbLyhbMS05XVxkezN9KVxzKi1ccyooMVswLTJdfDBcZClccyotXHMqKDNbMDFdfFswLTJdXGQpLywgJyQyLyQzLyQxJ10sCiAgICAgICAgLy8gSGFuZGxlIDEyIGhvdXIgb3IgMjQgaG91ciB0aW1lIHdpdGggbWlsbGlzZWNvbmRzIGFtL3BtIGFuZCBvcHRpb25hbCBkYXRlIHBhcnQuCiAgICAgICAgZnVuY3Rpb24oc3RyKSB7IAogICAgICAgICAgICB2YXIgbWF0Y2ggPSBzdHIubWF0Y2goL14oPzooLispXHMrKT8oWzAxMl0/XGQpKD86XHMqXDpccyooXGRcZCkpPyg/OlxzKlw6XHMqKFxkXGQoXC5cZCopPykpP1xzKihhbXxwbSk/XHMqJC9pKTsKICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgb3B0LiBkYXRlICAgICAgaG91ciAgICAgICBvcHQuIG1pbnV0ZSAgICAgb3B0LiBzZWNvbmQgICAgICAgb3B0LiBtc2VjICAgb3B0LiBhbSBvciBwbQogICAgICAgICAgICBpZiAobWF0Y2gpIHsKICAgICAgICAgICAgICAgIGlmIChtYXRjaFsxXSkgewogICAgICAgICAgICAgICAgICAgIHZhciBkID0gdGhpcy5jcmVhdGVEYXRlKG1hdGNoWzFdKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNOYU4oZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBuZXcgRGF0ZSgpOwogICAgICAgICAgICAgICAgICAgIGQuc2V0TWlsbGlzZWNvbmRzKDApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGhvdXIgPSBwYXJzZUZsb2F0KG1hdGNoWzJdKTsKICAgICAgICAgICAgICAgIGlmIChtYXRjaFs2XSkgewogICAgICAgICAgICAgICAgICAgIGhvdXIgPSBtYXRjaFs2XS50b0xvd2VyQ2FzZSgpID09ICdhbScgPyAoaG91ciA9PSAxMiA/IDAgOiBob3VyKSA6IChob3VyID09IDEyID8gMTIgOiBob3VyICsgMTIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZC5zZXRIb3Vycyhob3VyLCBwYXJzZUludChtYXRjaFszXSB8fCAwLCAxMCksIHBhcnNlSW50KG1hdGNoWzRdIHx8IDAsIDEwKSwgKChwYXJzZUZsb2F0KG1hdGNoWzVdIHx8IDApKSB8fCAwKSoxMDAwKTsKICAgICAgICAgICAgICAgIHJldHVybiBkOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuIHN0cjsKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgLy8gSGFuZGxlIElTTyB0aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmUuCiAgICAgICAgZnVuY3Rpb24oc3RyKSB7CiAgICAgICAgICAgIHZhciBtYXRjaCA9IHN0ci5tYXRjaCgvXig/OiguKykpW1R8XHMrXShbMDEyXVxkKSg/Olw6KFxkXGQpKSg/Olw6KFxkXGQpKSg/OlwuXGQrKShbXCtcLV1cZFxkXDpcZFxkKSQvaSk7CiAgICAgICAgICAgIGlmIChtYXRjaCkgewogICAgICAgICAgICAgICAgaWYgKG1hdGNoWzFdKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzLmNyZWF0ZURhdGUobWF0Y2hbMV0pOwogICAgICAgICAgICAgICAgICAgIGlmIChpc05hTihkKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKCk7CiAgICAgICAgICAgICAgICAgICAgZC5zZXRNaWxsaXNlY29uZHMoMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgaG91ciA9IHBhcnNlRmxvYXQobWF0Y2hbMl0pOwogICAgICAgICAgICAgICAgZC5zZXRIb3Vycyhob3VyLCBwYXJzZUludChtYXRjaFszXSwgMTApLCBwYXJzZUludChtYXRjaFs0XSwgMTApLCBwYXJzZUZsb2F0KG1hdGNoWzVdKSoxMDAwKTsKICAgICAgICAgICAgICAgIHJldHVybiBkOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHI7CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIC8vIFRyeSB0byBtYXRjaCBhbWJpZ3VvdXMgc3RyaW5ncyBsaWtlIDEyLzgvMjIuCiAgICAgICAgLy8gVXNlIEZGIGRhdGUgYXNzdW1wdGlvbiB0aGF0IDIgZGlnaXQgeWVhcnMgYXJlIDIwdGggY2VudHVyeSAoaS5lLiAxOTAwJ3MpLgogICAgICAgIC8vIFRoaXMgbWF5IGJlIHJlZHVuZGFudCB3aXRoIHByZSBwcm9jZXNzaW5nIG9mIGRhdGUgYWxyZWFkeSBwZXJmb3JtZWQuCiAgICAgICAgZnVuY3Rpb24oc3RyKSB7CiAgICAgICAgICAgIHZhciBtYXRjaCA9IHN0ci5tYXRjaCgvXihbMC0zXT9cZClccypbLVwvLlxzXXsxfVxzKihbYS16QS1aXXszLDl9KVxzKlstXC8uXHNdezF9XHMqKFswLTNdP1xkKSQvKTsKICAgICAgICAgICAgaWYgKG1hdGNoKSB7CiAgICAgICAgICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKCk7CiAgICAgICAgICAgICAgICB2YXIgY2VudCA9IGpzRGF0ZS5jb25maWcuZGVmYXVsdENlbnR1cnk7CiAgICAgICAgICAgICAgICB2YXIgbTEgPSBwYXJzZUZsb2F0KG1hdGNoWzFdKTsKICAgICAgICAgICAgICAgIHZhciBtMyA9IHBhcnNlRmxvYXQobWF0Y2hbM10pOwogICAgICAgICAgICAgICAgdmFyIG55LCBuZCwgbm07CiAgICAgICAgICAgICAgICBpZiAobTEgPiAzMSkgeyAvLyBmaXJzdCBudW1iZXIgaXMgYSB5ZWFyCiAgICAgICAgICAgICAgICAgICAgbmQgPSBtMzsKICAgICAgICAgICAgICAgICAgICBueSA9IGNlbnQgKyBtMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZWxzZSB7IC8vIGxhc3QgbnVtYmVyIGlzIHRoZSB5ZWFyCiAgICAgICAgICAgICAgICAgICAgbmQgPSBtMTsKICAgICAgICAgICAgICAgICAgICBueSA9IGNlbnQgKyBtMzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIG5tID0gaW5BcnJheShtYXRjaFsyXSwganNEYXRlLnJlZ2lvbmFsW2pzRGF0ZS5yZWdpb25hbC5nZXRMb2NhbGUoKV1bIm1vbnRoTmFtZXNTaG9ydCJdKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYgKG5tID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgbm0gPSBpbkFycmF5KG1hdGNoWzJdLCBqc0RhdGUucmVnaW9uYWxbanNEYXRlLnJlZ2lvbmFsLmdldExvY2FsZSgpXVsibW9udGhOYW1lcyJdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBkLnNldEZ1bGxZZWFyKG55LCBubSwgbmQpOwogICAgICAgICAgICAgICAgZC5zZXRIb3VycygwLDAsMCwwKTsKICAgICAgICAgICAgICAgIHJldHVybiBkOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiBzdHI7CiAgICAgICAgICAgIH0KICAgICAgICB9ICAgICAgCiAgICBdOwoKICAgIC8vCiAgICAvLyBJIHRoaW5rIEpvaG4gUmVpc2lnIHB1Ymxpc2hlZCB0aGlzIG1ldGhvZCBvbiBoaXMgYmxvZywgZWpvaG4uCiAgICAvLwogICAgZnVuY3Rpb24gaW5BcnJheSggZWxlbSwgYXJyYXkgKSB7CiAgICAgICAgaWYgKCBhcnJheS5pbmRleE9mICkgewogICAgICAgICAgICByZXR1cm4gYXJyYXkuaW5kZXhPZiggZWxlbSApOwogICAgICAgIH0KCiAgICAgICAgZm9yICggdmFyIGkgPSAwLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKyApIHsKICAgICAgICAgICAgaWYgKCBhcnJheVsgaSBdID09PSBlbGVtICkgewogICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAtMTsKICAgIH0KICAgIAogICAgLy8KICAgIC8vIFRoYW5rcyB0byBLYW5nYXgsIENocmlzdGlhbiBTY2liZXJyYXMgYW5kIFN0YWNrIE92ZXJmbG93IGZvciB0aGlzIG1ldGhvZC4KICAgIC8vCiAgICBmdW5jdGlvbiBnZXRfdHlwZSh0aGluZyl7CiAgICAgICAgaWYodGhpbmc9PT1udWxsKSByZXR1cm4gIltvYmplY3QgTnVsbF0iOyAvLyBzcGVjaWFsIGNhc2UKICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaW5nKTsKICAgIH0KICAgIAogICAgJC5qc0RhdGUgPSBqc0RhdGU7CgogICAgICAKICAgIC8qKgogICAgICogSmF2YVNjcmlwdCBwcmludGYvc3ByaW50ZiBmdW5jdGlvbnMuCiAgICAgKiAKICAgICAqIFRoaXMgY29kZSBoYXMgYmVlbiBhZGFwdGVkIGZyb20gdGhlIHB1YmxpY2x5IGF2YWlsYWJsZSBzcHJpbnRmIG1ldGhvZHMKICAgICAqIGJ5IEFzaCBTZWFybGUuIEhpcyBvcmlnaW5hbCBoZWFkZXIgZm9sbG93czoKICAgICAqCiAgICAgKiAgICAgVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLgogICAgICogICAgIAogICAgICogICAgIFRoZSBmdW5jdGlvbnMgc2hvdWxkIHdvcmsgYXMgZXhwZWN0ZWQsIHBlcmZvcm1pbmcgbGVmdCBvciByaWdodCBhbGlnbm1lbnQsCiAgICAgKiAgICAgdHJ1bmNhdGluZyBzdHJpbmdzLCBvdXRwdXR0aW5nIG51bWJlcnMgd2l0aCBhIHJlcXVpcmVkIHByZWNpc2lvbiBldGMuCiAgICAgKgogICAgICogICAgIEZvciBjb21wbGV4IGNhc2VzLCB0aGVzZSBmdW5jdGlvbnMgZm9sbG93IHRoZSBQZXJsIGltcGxlbWVudGF0aW9ucyBvZgogICAgICogICAgIChzKXByaW50ZiwgYWxsb3dpbmcgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCBvdXQtb2Ytb3JkZXIsIGFuZCB0byBzZXQgdGhlCiAgICAgKiAgICAgcHJlY2lzaW9uIG9yIGxlbmd0aCBvZiB0aGUgb3V0cHV0IGJhc2VkIG9uIGFyZ3VtZW50cyBpbnN0ZWFkIG9mIGZpeGVkCiAgICAgKiAgICAgbnVtYmVycy4KICAgICAqCiAgICAgKiAgICAgU2VlIGh0dHA6Ly9wZXJsZG9jLnBlcmwub3JnL2Z1bmN0aW9ucy9zcHJpbnRmLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgKgogICAgICogICAgIEltcGxlbWVudGVkOgogICAgICogICAgIC0gemVybyBhbmQgc3BhY2UtcGFkZGluZwogICAgICogICAgIC0gcmlnaHQgYW5kIGxlZnQtYWxpZ25tZW50LAogICAgICogICAgIC0gYmFzZSBYIHByZWZpeCAoYmluYXJ5LCBvY3RhbCBhbmQgaGV4KQogICAgICogICAgIC0gcG9zaXRpdmUgbnVtYmVyIHByZWZpeAogICAgICogICAgIC0gKG1pbmltdW0pIHdpZHRoCiAgICAgKiAgICAgLSBwcmVjaXNpb24gLyB0cnVuY2F0aW9uIC8gbWF4aW11bSB3aWR0aAogICAgICogICAgIC0gb3V0IG9mIG9yZGVyIGFyZ3VtZW50cwogICAgICoKICAgICAqICAgICBOb3QgaW1wbGVtZW50ZWQgKHlldCk6CiAgICAgKiAgICAgLSB2ZWN0b3IgZmxhZwogICAgICogICAgIC0gc2l6ZSAoYnl0ZXMsIHdvcmRzLCBsb25nLXdvcmRzIGV0Yy4pCiAgICAgKiAgICAgCiAgICAgKiAgICAgV2lsbCBub3QgaW1wbGVtZW50OgogICAgICogICAgIC0gJW4gb3IgJXAgKG5vIHBhc3MtYnktcmVmZXJlbmNlIGluIEphdmFTY3JpcHQpCiAgICAgKgogICAgICogICAgIEB2ZXJzaW9uIDIwMDcuMDQuMjcKICAgICAqICAgICBAYXV0aG9yIEFzaCBTZWFybGUgCiAgICAgKiAKICAgICAqIFlvdSBjYW4gc2VlIHRoZSBvcmlnaW5hbCB3b3JrIGFuZCBjb21tZW50cyBvbiBoaXMgYmxvZzoKICAgICAqIGh0dHA6Ly9oZXhtZW4uY29tL2Jsb2cvMjAwNy8wMy9wcmludGYtc3ByaW50Zi8KICAgICAqIGh0dHA6Ly9oZXhtZW4uY29tL2pzL3NwcmludGYuanMKICAgICAqLwogICAgIAogICAgIC8qKgogICAgICAqIEBNb2RpZmljYXRpb25zIDIwMDkuMDUuMjYKICAgICAgKiBAYXV0aG9yIENocmlzIExlb25lbGxvCiAgICAgICogCiAgICAgICogQWRkZWQgJXAgJVAgc3BlY2lmaWVyCiAgICAgICogQWN0cyBsaWtlICVnIG9yICVHIGJ1dCB3aWxsIG5vdCBhZGQgbW9yZSBzaWduaWZpY2FudCBkaWdpdHMgdG8gdGhlIG91dHB1dCB0aGFuIHByZXNlbnQgaW4gdGhlIGlucHV0LgogICAgICAqIEV4YW1wbGU6CiAgICAgICogRm9ybWF0OiAnJS4zcCcsIElucHV0OiAwLjAxMiwgT3V0cHV0OiAwLjAxMgogICAgICAqIEZvcm1hdDogJyUuM2cnLCBJbnB1dDogMC4wMTIsIE91dHB1dDogMC4wMTIwCiAgICAgICogRm9ybWF0OiAnJS40cCcsIElucHV0OiAxMi4wLCBPdXRwdXQ6IDEyLjAKICAgICAgKiBGb3JtYXQ6ICclLjRnJywgSW5wdXQ6IDEyLjAsIE91dHB1dDogMTIuMDAKICAgICAgKiBGb3JtYXQ6ICclLjRwJywgSW5wdXQ6IDQuMzIxZS01LCBPdXRwdXQ6IDQuMzIxZS01CiAgICAgICogRm9ybWF0OiAnJS40ZycsIElucHV0OiA0LjMyMWUtNSwgT3V0cHV0OiA0LjMyMTBlLTUKICAgICAgKiAKICAgICAgKiBFeGFtcGxlOgogICAgICAqID4+PiAkLmpxcGxvdC5zcHJpbnRmKCclLjJmLCAlZCcsIDIzLjM0NTIsIDQzLjIzKQogICAgICAqICIyMy4zNSwgNDMiCiAgICAgICogPj4+ICQuanFwbG90LnNwcmludGYoIm5vIHZhbHVlOiAlbiwgZGVjaW1hbCB3aXRoIHRob3VzYW5kcyBzZXBhcmF0b3I6ICUnZCIsIDIzLjM0NTIsIDQzMzUyNCkKICAgICAgKiAibm8gdmFsdWU6ICwgZGVjaW1hbCB3aXRoIHRob3VzYW5kcyBzZXBhcmF0b3I6IDQzMyw1MjQiCiAgICAgICovCiAgICAkLmpxcGxvdC5zcHJpbnRmID0gZnVuY3Rpb24oKSB7CiAgICAgICAgZnVuY3Rpb24gcGFkKHN0ciwgbGVuLCBjaHIsIGxlZnRKdXN0aWZ5KSB7CiAgICAgICAgICAgIHZhciBwYWRkaW5nID0gKHN0ci5sZW5ndGggPj0gbGVuKSA/ICcnIDogQXJyYXkoMSArIGxlbiAtIHN0ci5sZW5ndGggPj4+IDApLmpvaW4oY2hyKTsKICAgICAgICAgICAgcmV0dXJuIGxlZnRKdXN0aWZ5ID8gc3RyICsgcGFkZGluZyA6IHBhZGRpbmcgKyBzdHI7CgogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gdGhvdXNhbmRfc2VwYXJhdGUodmFsdWUpIHsKICAgICAgICAgICAgdmFyIHZhbHVlX3N0ciA9IG5ldyBTdHJpbmcodmFsdWUpOwogICAgICAgICAgICBmb3IgKHZhciBpPTEwOyBpPjA7IGktLSkgewogICAgICAgICAgICAgICAgaWYgKHZhbHVlX3N0ciA9PSAodmFsdWVfc3RyID0gdmFsdWVfc3RyLnJlcGxhY2UoL14oXGQrKShcZHszfSkvLCAiJDEiKyQuanFwbG90LnNwcmludGYudGhvdXNhbmRzU2VwYXJhdG9yKyIkMiIpKSkgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHZhbHVlX3N0cjsgCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBqdXN0aWZ5KHZhbHVlLCBwcmVmaXgsIGxlZnRKdXN0aWZ5LCBtaW5XaWR0aCwgemVyb1BhZCwgaHRtbFNwYWNlKSB7CiAgICAgICAgICAgIHZhciBkaWZmID0gbWluV2lkdGggLSB2YWx1ZS5sZW5ndGg7CiAgICAgICAgICAgIGlmIChkaWZmID4gMCkgewogICAgICAgICAgICAgICAgdmFyIHNwY2hhciA9ICcgJzsKICAgICAgICAgICAgICAgIGlmIChodG1sU3BhY2UpIHsgc3BjaGFyID0gJyZuYnNwOyc7IH0KICAgICAgICAgICAgICAgIGlmIChsZWZ0SnVzdGlmeSB8fCAhemVyb1BhZCkgewogICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFkKHZhbHVlLCBtaW5XaWR0aCwgc3BjaGFyLCBsZWZ0SnVzdGlmeSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMCwgcHJlZml4Lmxlbmd0aCkgKyBwYWQoJycsIGRpZmYsICcwJywgdHJ1ZSkgKyB2YWx1ZS5zbGljZShwcmVmaXgubGVuZ3RoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBmb3JtYXRCYXNlWCh2YWx1ZSwgYmFzZSwgcHJlZml4LCBsZWZ0SnVzdGlmeSwgbWluV2lkdGgsIHByZWNpc2lvbiwgemVyb1BhZCwgaHRtbFNwYWNlKSB7CiAgICAgICAgICAgIC8vIE5vdGU6IGNhc3RzIG5lZ2F0aXZlIG51bWJlcnMgdG8gcG9zaXRpdmUgb25lcwogICAgICAgICAgICB2YXIgbnVtYmVyID0gdmFsdWUgPj4+IDA7CiAgICAgICAgICAgIHByZWZpeCA9IHByZWZpeCAmJiBudW1iZXIgJiYgeycyJzogJzBiJywgJzgnOiAnMCcsICcxNic6ICcweCd9W2Jhc2VdIHx8ICcnOwogICAgICAgICAgICB2YWx1ZSA9IHByZWZpeCArIHBhZChudW1iZXIudG9TdHJpbmcoYmFzZSksIHByZWNpc2lvbiB8fCAwLCAnMCcsIGZhbHNlKTsKICAgICAgICAgICAgcmV0dXJuIGp1c3RpZnkodmFsdWUsIHByZWZpeCwgbGVmdEp1c3RpZnksIG1pbldpZHRoLCB6ZXJvUGFkLCBodG1sU3BhY2UpOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZm9ybWF0U3RyaW5nKHZhbHVlLCBsZWZ0SnVzdGlmeSwgbWluV2lkdGgsIHByZWNpc2lvbiwgemVyb1BhZCwgaHRtbFNwYWNlKSB7CiAgICAgICAgICAgIGlmIChwcmVjaXNpb24gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgwLCBwcmVjaXNpb24pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBqdXN0aWZ5KHZhbHVlLCAnJywgbGVmdEp1c3RpZnksIG1pbldpZHRoLCB6ZXJvUGFkLCBodG1sU3BhY2UpOwogICAgICAgIH0KCiAgICAgICAgdmFyIGEgPSBhcmd1bWVudHMsIGkgPSAwLCBmb3JtYXQgPSBhW2krK107CgogICAgICAgIHJldHVybiBmb3JtYXQucmVwbGFjZSgkLmpxcGxvdC5zcHJpbnRmLnJlZ2V4LCBmdW5jdGlvbihzdWJzdHJpbmcsIHZhbHVlSW5kZXgsIGZsYWdzLCBtaW5XaWR0aCwgXywgcHJlY2lzaW9uLCB0eXBlKSB7CiAgICAgICAgICAgIGlmIChzdWJzdHJpbmcgPT0gJyUlJykgeyByZXR1cm4gJyUnOyB9CgogICAgICAgICAgICAvLyBwYXJzZSBmbGFncwogICAgICAgICAgICB2YXIgbGVmdEp1c3RpZnkgPSBmYWxzZSwgcG9zaXRpdmVQcmVmaXggPSAnJywgemVyb1BhZCA9IGZhbHNlLCBwcmVmaXhCYXNlWCA9IGZhbHNlLCBodG1sU3BhY2UgPSBmYWxzZSwgdGhvdXNhbmRTZXBhcmF0aW9uID0gZmFsc2U7CiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBmbGFncyAmJiBqIDwgZmxhZ3MubGVuZ3RoOyBqKyspIHN3aXRjaCAoZmxhZ3MuY2hhckF0KGopKSB7CiAgICAgICAgICAgICAgICBjYXNlICcgJzogcG9zaXRpdmVQcmVmaXggPSAnICc7IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnKyc6IHBvc2l0aXZlUHJlZml4ID0gJysnOyBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJy0nOiBsZWZ0SnVzdGlmeSA9IHRydWU7IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnMCc6IHplcm9QYWQgPSB0cnVlOyBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJyMnOiBwcmVmaXhCYXNlWCA9IHRydWU7IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnJic6IGh0bWxTcGFjZSA9IHRydWU7IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnXCcnOiB0aG91c2FuZFNlcGFyYXRpb24gPSB0cnVlOyBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gcGFyYW1ldGVycyBtYXkgYmUgbnVsbCwgdW5kZWZpbmVkLCBlbXB0eS1zdHJpbmcgb3IgcmVhbCB2YWx1ZWQKICAgICAgICAgICAgLy8gd2Ugd2FudCB0byBpZ25vcmUgbnVsbCwgdW5kZWZpbmVkIGFuZCBlbXB0eS1zdHJpbmcgdmFsdWVzCgogICAgICAgICAgICBpZiAoIW1pbldpZHRoKSB7CiAgICAgICAgICAgICAgICBtaW5XaWR0aCA9IDA7CiAgICAgICAgICAgIH0gCiAgICAgICAgICAgIGVsc2UgaWYgKG1pbldpZHRoID09ICcqJykgewogICAgICAgICAgICAgICAgbWluV2lkdGggPSArYVtpKytdOwogICAgICAgICAgICB9IAogICAgICAgICAgICBlbHNlIGlmIChtaW5XaWR0aC5jaGFyQXQoMCkgPT0gJyonKSB7CiAgICAgICAgICAgICAgICBtaW5XaWR0aCA9ICthW21pbldpZHRoLnNsaWNlKDEsIC0xKV07CiAgICAgICAgICAgIH0gCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbWluV2lkdGggPSArbWluV2lkdGg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIE5vdGU6IHVuZG9jdW1lbnRlZCBwZXJsIGZlYXR1cmU6CiAgICAgICAgICAgIGlmIChtaW5XaWR0aCA8IDApIHsKICAgICAgICAgICAgICAgIG1pbldpZHRoID0gLW1pbldpZHRoOwogICAgICAgICAgICAgICAgbGVmdEp1c3RpZnkgPSB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIWlzRmluaXRlKG1pbldpZHRoKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCckLmpxcGxvdC5zcHJpbnRmOiAobWluaW11bS0pd2lkdGggbXVzdCBiZSBmaW5pdGUnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFwcmVjaXNpb24pIHsKICAgICAgICAgICAgICAgIHByZWNpc2lvbiA9ICdmRmVFJy5pbmRleE9mKHR5cGUpID4gLTEgPyA2IDogKHR5cGUgPT0gJ2QnKSA/IDAgOiB2b2lkKDApOwogICAgICAgICAgICB9IAogICAgICAgICAgICBlbHNlIGlmIChwcmVjaXNpb24gPT0gJyonKSB7CiAgICAgICAgICAgICAgICBwcmVjaXNpb24gPSArYVtpKytdOwogICAgICAgICAgICB9IAogICAgICAgICAgICBlbHNlIGlmIChwcmVjaXNpb24uY2hhckF0KDApID09ICcqJykgewogICAgICAgICAgICAgICAgcHJlY2lzaW9uID0gK2FbcHJlY2lzaW9uLnNsaWNlKDEsIC0xKV07CiAgICAgICAgICAgIH0gCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHJlY2lzaW9uID0gK3ByZWNpc2lvbjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gZ3JhYiB2YWx1ZSB1c2luZyB2YWx1ZUluZGV4IGlmIHJlcXVpcmVkPwogICAgICAgICAgICB2YXIgdmFsdWUgPSB2YWx1ZUluZGV4ID8gYVt2YWx1ZUluZGV4LnNsaWNlKDAsIC0xKV0gOiBhW2krK107CgogICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgICAgY2FzZSAncyc6IHsKICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdFN0cmluZyhTdHJpbmcodmFsdWUpLCBsZWZ0SnVzdGlmeSwgbWluV2lkdGgsIHByZWNpc2lvbiwgemVyb1BhZCwgaHRtbFNwYWNlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlICdjJzogcmV0dXJuIGZvcm1hdFN0cmluZyhTdHJpbmcuZnJvbUNoYXJDb2RlKCt2YWx1ZSksIGxlZnRKdXN0aWZ5LCBtaW5XaWR0aCwgcHJlY2lzaW9uLCB6ZXJvUGFkLCBodG1sU3BhY2UpOwogICAgICAgICAgICBjYXNlICdiJzogcmV0dXJuIGZvcm1hdEJhc2VYKHZhbHVlLCAyLCBwcmVmaXhCYXNlWCwgbGVmdEp1c3RpZnksIG1pbldpZHRoLCBwcmVjaXNpb24sIHplcm9QYWQsaHRtbFNwYWNlKTsKICAgICAgICAgICAgY2FzZSAnbyc6IHJldHVybiBmb3JtYXRCYXNlWCh2YWx1ZSwgOCwgcHJlZml4QmFzZVgsIGxlZnRKdXN0aWZ5LCBtaW5XaWR0aCwgcHJlY2lzaW9uLCB6ZXJvUGFkLCBodG1sU3BhY2UpOwogICAgICAgICAgICBjYXNlICd4JzogcmV0dXJuIGZvcm1hdEJhc2VYKHZhbHVlLCAxNiwgcHJlZml4QmFzZVgsIGxlZnRKdXN0aWZ5LCBtaW5XaWR0aCwgcHJlY2lzaW9uLCB6ZXJvUGFkLCBodG1sU3BhY2UpOwogICAgICAgICAgICBjYXNlICdYJzogcmV0dXJuIGZvcm1hdEJhc2VYKHZhbHVlLCAxNiwgcHJlZml4QmFzZVgsIGxlZnRKdXN0aWZ5LCBtaW5XaWR0aCwgcHJlY2lzaW9uLCB6ZXJvUGFkLCBodG1sU3BhY2UpLnRvVXBwZXJDYXNlKCk7CiAgICAgICAgICAgIGNhc2UgJ3UnOiByZXR1cm4gZm9ybWF0QmFzZVgodmFsdWUsIDEwLCBwcmVmaXhCYXNlWCwgbGVmdEp1c3RpZnksIG1pbldpZHRoLCBwcmVjaXNpb24sIHplcm9QYWQsIGh0bWxTcGFjZSk7CiAgICAgICAgICAgIGNhc2UgJ2knOiB7CiAgICAgICAgICAgICAgdmFyIG51bWJlciA9IHBhcnNlSW50KCt2YWx1ZSwgMTApOwogICAgICAgICAgICAgIGlmIChpc05hTihudW1iZXIpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHZhciBwcmVmaXggPSBudW1iZXIgPCAwID8gJy0nIDogcG9zaXRpdmVQcmVmaXg7CiAgICAgICAgICAgICAgdmFyIG51bWJlcl9zdHIgPSB0aG91c2FuZFNlcGFyYXRpb24gPyB0aG91c2FuZF9zZXBhcmF0ZShTdHJpbmcoTWF0aC5hYnMobnVtYmVyKSkpOiBTdHJpbmcoTWF0aC5hYnMobnVtYmVyKSk7CiAgICAgICAgICAgICAgdmFsdWUgPSBwcmVmaXggKyBwYWQobnVtYmVyX3N0ciwgcHJlY2lzaW9uLCAnMCcsIGZhbHNlKTsKICAgICAgICAgICAgICAvL3ZhbHVlID0gcHJlZml4ICsgcGFkKFN0cmluZyhNYXRoLmFicyhudW1iZXIpKSwgcHJlY2lzaW9uLCAnMCcsIGZhbHNlKTsKICAgICAgICAgICAgICByZXR1cm4ganVzdGlmeSh2YWx1ZSwgcHJlZml4LCBsZWZ0SnVzdGlmeSwgbWluV2lkdGgsIHplcm9QYWQsIGh0bWxTcGFjZSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgY2FzZSAnZCc6IHsKICAgICAgICAgICAgICB2YXIgbnVtYmVyID0gTWF0aC5yb3VuZCgrdmFsdWUpOwogICAgICAgICAgICAgIGlmIChpc05hTihudW1iZXIpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHZhciBwcmVmaXggPSBudW1iZXIgPCAwID8gJy0nIDogcG9zaXRpdmVQcmVmaXg7CiAgICAgICAgICAgICAgdmFyIG51bWJlcl9zdHIgPSB0aG91c2FuZFNlcGFyYXRpb24gPyB0aG91c2FuZF9zZXBhcmF0ZShTdHJpbmcoTWF0aC5hYnMobnVtYmVyKSkpOiBTdHJpbmcoTWF0aC5hYnMobnVtYmVyKSk7CiAgICAgICAgICAgICAgdmFsdWUgPSBwcmVmaXggKyBwYWQobnVtYmVyX3N0ciwgcHJlY2lzaW9uLCAnMCcsIGZhbHNlKTsKICAgICAgICAgICAgICByZXR1cm4ganVzdGlmeSh2YWx1ZSwgcHJlZml4LCBsZWZ0SnVzdGlmeSwgbWluV2lkdGgsIHplcm9QYWQsIGh0bWxTcGFjZSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgY2FzZSAnZSc6CiAgICAgICAgICAgIGNhc2UgJ0UnOgogICAgICAgICAgICBjYXNlICdmJzoKICAgICAgICAgICAgY2FzZSAnRic6CiAgICAgICAgICAgIGNhc2UgJ2cnOgogICAgICAgICAgICBjYXNlICdHJzoKICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgIHZhciBudW1iZXIgPSArdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNOYU4obnVtYmVyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIHZhciBwcmVmaXggPSBudW1iZXIgPCAwID8gJy0nIDogcG9zaXRpdmVQcmVmaXg7CiAgICAgICAgICAgICAgICAgICAgICB2YXIgbWV0aG9kID0gWyd0b0V4cG9uZW50aWFsJywgJ3RvRml4ZWQnLCAndG9QcmVjaXNpb24nXVsnZWZnJy5pbmRleE9mKHR5cGUudG9Mb3dlckNhc2UoKSldOwogICAgICAgICAgICAgICAgICAgICAgdmFyIHRleHRUcmFuc2Zvcm0gPSBbJ3RvU3RyaW5nJywgJ3RvVXBwZXJDYXNlJ11bJ2VFZkZnRycuaW5kZXhPZih0eXBlKSAlIDJdOwogICAgICAgICAgICAgICAgICAgICAgdmFyIG51bWJlcl9zdHIgPSBNYXRoLmFicyhudW1iZXIpW21ldGhvZF0ocHJlY2lzaW9uKTsKICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgLy8gQXBwbHkgdGhlIGRlY2ltYWwgbWFyayBwcm9wZXJseSBieSBzcGxpdHRpbmcgdGhlIG51bWJlciBieSB0aGUKICAgICAgICAgICAgICAgICAgICAgIC8vICAgZGVjaW1hbE1hcmssIGFwcGx5aW5nIHRob3VzYW5kcyBzZXBhcmF0b3IsIGFuZCB0aGVuIHBsYWNpbmcgaXQKICAgICAgICAgICAgICAgICAgICAgIC8vICAgYmFjayBpbi4KICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJ0cyA9IG51bWJlcl9zdHIudG9TdHJpbmcoKS5zcGxpdCgnLicpOwogICAgICAgICAgICAgICAgICAgICAgcGFydHNbMF0gPSB0aG91c2FuZFNlcGFyYXRpb24gPyB0aG91c2FuZF9zZXBhcmF0ZShwYXJ0c1swXSkgOiBwYXJ0c1swXTsKICAgICAgICAgICAgICAgICAgICAgIG51bWJlcl9zdHIgPSBwYXJ0cy5qb2luKCQuanFwbG90LnNwcmludGYuZGVjaW1hbE1hcmspOwogICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHByZWZpeCArIG51bWJlcl9zdHI7CiAgICAgICAgICAgICAgICAgICAgICB2YXIganVzdGlmaWVkID0ganVzdGlmeSh2YWx1ZSwgcHJlZml4LCBsZWZ0SnVzdGlmeSwgbWluV2lkdGgsIHplcm9QYWQsIGh0bWxTcGFjZSlbdGV4dFRyYW5zZm9ybV0oKTsKICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGp1c3RpZmllZDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlICdwJzoKICAgICAgICAgICAgY2FzZSAnUCc6CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSBudW1iZXIgaXMgYSBudW1iZXIKICAgICAgICAgICAgICAgIHZhciBudW1iZXIgPSArdmFsdWU7CiAgICAgICAgICAgICAgICBpZiAoaXNOYU4obnVtYmVyKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBwcmVmaXggPSBudW1iZXIgPCAwID8gJy0nIDogcG9zaXRpdmVQcmVmaXg7CgogICAgICAgICAgICAgICAgdmFyIHBhcnRzID0gU3RyaW5nKE51bWJlcihNYXRoLmFicyhudW1iZXIpKS50b0V4cG9uZW50aWFsKCkpLnNwbGl0KC9lfEUvKTsKICAgICAgICAgICAgICAgIHZhciBzZCA9IChwYXJ0c1swXS5pbmRleE9mKCcuJykgIT0gLTEpID8gcGFydHNbMF0ubGVuZ3RoIC0gMSA6IFN0cmluZyhudW1iZXIpLmxlbmd0aDsKICAgICAgICAgICAgICAgIHZhciB6ZXJvcyA9IChwYXJ0c1sxXSA8IDApID8gLXBhcnRzWzFdIC0gMSA6IDA7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhudW1iZXIpIDwgMSkgewogICAgICAgICAgICAgICAgICAgIGlmIChzZCArIHplcm9zICA8PSBwcmVjaXNpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBwcmVmaXggKyBNYXRoLmFicyhudW1iZXIpLnRvUHJlY2lzaW9uKHNkKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZCAgPD0gcHJlY2lzaW9uIC0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBwcmVmaXggKyBNYXRoLmFicyhudW1iZXIpLnRvRXhwb25lbnRpYWwoc2QtMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHByZWZpeCArIE1hdGguYWJzKG51bWJlcikudG9FeHBvbmVudGlhbChwcmVjaXNpb24tMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcHJlYyA9IChzZCA8PSBwcmVjaXNpb24pID8gc2QgOiBwcmVjaXNpb247CiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBwcmVmaXggKyBNYXRoLmFicyhudW1iZXIpLnRvUHJlY2lzaW9uKHByZWMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHRleHRUcmFuc2Zvcm0gPSBbJ3RvU3RyaW5nJywgJ3RvVXBwZXJDYXNlJ11bJ3BQJy5pbmRleE9mKHR5cGUpICUgMl07CiAgICAgICAgICAgICAgICByZXR1cm4ganVzdGlmeSh2YWx1ZSwgcHJlZml4LCBsZWZ0SnVzdGlmeSwgbWluV2lkdGgsIHplcm9QYWQsIGh0bWxTcGFjZSlbdGV4dFRyYW5zZm9ybV0oKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlICduJzogcmV0dXJuICcnOwogICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gc3Vic3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9OwoKICAgICQuanFwbG90LnNwcmludGYudGhvdXNhbmRzU2VwYXJhdG9yID0gJywnOwogICAgLy8gU3BlY2lmaWVzIHRoZSBkZWNpbWFsIG1hcmsgZm9yIGZsb2F0aW5nIHBvaW50IHZhbHVlcy4gQnkgZGVmYXVsdCBhIHBlcmlvZCAnLicKICAgIC8vIGlzIHVzZWQuIElmIHlvdSBjaGFuZ2UgdGhpcyB2YWx1ZSB0byBmb3IgZXhhbXBsZSBhIGNvbW1hIGJlIHN1cmUgdG8gYWxzbwogICAgLy8gY2hhbmdlIHRoZSB0aG91c2FuZHMgc2VwYXJhdG9yIG9yIGVsc2UgdGhpcyB3b24ndCB3b3JrIHNpbmNlIGEgc2ltcGxlIFN0cmluZwogICAgLy8gcmVwbGFjZSBpcyB1c2VkIChyZXBsYWNpbmcgYWxsIHBlcmlvZHMgd2l0aCB0aGUgbWFyayBzcGVjaWZpZWQgaGVyZSkuCiAgICAkLmpxcGxvdC5zcHJpbnRmLmRlY2ltYWxNYXJrID0gJy4nOwogICAgCiAgICAkLmpxcGxvdC5zcHJpbnRmLnJlZ2V4ID0gLyUlfCUoXGQrXCQpPyhbLSsjMCZcJyBdKikoXCpcZCtcJHxcKnxcZCspPyhcLihcKlxkK1wkfFwqfFxkKykpPyhbbkFzY2JveFh1aWRmZWdwRUdQXSkvZzsKCiAgICAkLmpxcGxvdC5nZXRTaWduaWZpY2FudEZpZ3VyZXMgPSBmdW5jdGlvbihudW1iZXIpIHsKICAgICAgICB2YXIgcGFydHMgPSBTdHJpbmcoTnVtYmVyKE1hdGguYWJzKG51bWJlcikpLnRvRXhwb25lbnRpYWwoKSkuc3BsaXQoL2V8RS8pOwogICAgICAgIC8vIHRvdGFsIHNpZ25pZmljYW50IGRpZ2l0cwogICAgICAgIHZhciBzZCA9IChwYXJ0c1swXS5pbmRleE9mKCcuJykgIT0gLTEpID8gcGFydHNbMF0ubGVuZ3RoIC0gMSA6IHBhcnRzWzBdLmxlbmd0aDsKICAgICAgICB2YXIgemVyb3MgPSAocGFydHNbMV0gPCAwKSA/IC1wYXJ0c1sxXSAtIDEgOiAwOwogICAgICAgIC8vIGV4cG9uZW50CiAgICAgICAgdmFyIGV4cG4gPSBwYXJzZUludChwYXJ0c1sxXSwgMTApOwogICAgICAgIC8vIGRpZ2l0cyB0byB0aGUgbGVmdCBvZiB0aGUgZGVjaW1hbCBwbGFjZQogICAgICAgIHZhciBkbGVmdCA9IChleHBuICsgMSA+IDApID8gZXhwbiArIDEgOiAwOwogICAgICAgIC8vIGRpZ2l0cyB0byB0aGUgcmlnaHQgb2YgdGhlIGRlY2ltYWwgcGxhY2UKICAgICAgICB2YXIgZHJpZ2h0ID0gKHNkIDw9IGRsZWZ0KSA/IDAgOiBzZCAtIGV4cG4gLSAxOwogICAgICAgIHJldHVybiB7c2lnbmlmaWNhbnREaWdpdHM6IHNkLCBkaWdpdHNMZWZ0OiBkbGVmdCwgZGlnaXRzUmlnaHQ6IGRyaWdodCwgemVyb3M6IHplcm9zLCBleHBvbmVudDogZXhwbn0gOwogICAgfTsKCiAgICAkLmpxcGxvdC5nZXRQcmVjaXNpb24gPSBmdW5jdGlvbihudW1iZXIpIHsKICAgICAgICByZXR1cm4gJC5qcXBsb3QuZ2V0U2lnbmlmaWNhbnRGaWd1cmVzKG51bWJlcikuZGlnaXRzUmlnaHQ7CiAgICB9OwoKICAKCgogICAgdmFyIGJhY2tDb21wYXQgPSAkLnVpQmFja0NvbXBhdCAhPT0gZmFsc2U7CgogICAgJC5qcXBsb3QuZWZmZWN0cyA9IHsKICAgICAgICBlZmZlY3Q6IHt9CiAgICB9OwoKICAgIC8vIHByZWZpeCB1c2VkIGZvciBzdG9yaW5nIGRhdGEgb24gLmRhdGEoKQogICAgdmFyIGRhdGFTcGFjZSA9ICJqcXBsb3Quc3RvcmFnZS4iOwoKICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogRUZGRUNUUyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiAgICAkLmV4dGVuZCggJC5qcXBsb3QuZWZmZWN0cywgewogICAgICAgIHZlcnNpb246ICIxLjlwcmUiLAoKICAgICAgICAvLyBTYXZlcyBhIHNldCBvZiBwcm9wZXJ0aWVzIGluIGEgZGF0YSBzdG9yYWdlCiAgICAgICAgc2F2ZTogZnVuY3Rpb24oIGVsZW1lbnQsIHNldCApIHsKICAgICAgICAgICAgZm9yKCB2YXIgaT0wOyBpIDwgc2V0Lmxlbmd0aDsgaSsrICkgewogICAgICAgICAgICAgICAgaWYgKCBzZXRbIGkgXSAhPT0gbnVsbCApIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmRhdGEoIGRhdGFTcGFjZSArIHNldFsgaSBdLCBlbGVtZW50WyAwIF0uc3R5bGVbIHNldFsgaSBdIF0gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIC8vIFJlc3RvcmVzIGEgc2V0IG9mIHByZXZpb3VzbHkgc2F2ZWQgcHJvcGVydGllcyBmcm9tIGEgZGF0YSBzdG9yYWdlCiAgICAgICAgcmVzdG9yZTogZnVuY3Rpb24oIGVsZW1lbnQsIHNldCApIHsKICAgICAgICAgICAgZm9yKCB2YXIgaT0wOyBpIDwgc2V0Lmxlbmd0aDsgaSsrICkgewogICAgICAgICAgICAgICAgaWYgKCBzZXRbIGkgXSAhPT0gbnVsbCApIHsKICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNzcyggc2V0WyBpIF0sIGVsZW1lbnQuZGF0YSggZGF0YVNwYWNlICsgc2V0WyBpIF0gKSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgc2V0TW9kZTogZnVuY3Rpb24oIGVsLCBtb2RlICkgewogICAgICAgICAgICBpZiAobW9kZSA9PT0gInRvZ2dsZSIpIHsKICAgICAgICAgICAgICAgIG1vZGUgPSBlbC5pcyggIjpoaWRkZW4iICkgPyAic2hvdyIgOiAiaGlkZSI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG1vZGU7CiAgICAgICAgfSwKCiAgICAgICAgLy8gV3JhcHMgdGhlIGVsZW1lbnQgYXJvdW5kIGEgd3JhcHBlciB0aGF0IGNvcGllcyBwb3NpdGlvbiBwcm9wZXJ0aWVzCiAgICAgICAgY3JlYXRlV3JhcHBlcjogZnVuY3Rpb24oIGVsZW1lbnQgKSB7CgogICAgICAgICAgICAvLyBpZiB0aGUgZWxlbWVudCBpcyBhbHJlYWR5IHdyYXBwZWQsIHJldHVybiBpdAogICAgICAgICAgICBpZiAoIGVsZW1lbnQucGFyZW50KCkuaXMoICIudWktZWZmZWN0cy13cmFwcGVyIiApKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudC5wYXJlbnQoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gd3JhcCB0aGUgZWxlbWVudAogICAgICAgICAgICB2YXIgcHJvcHMgPSB7CiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGVsZW1lbnQub3V0ZXJXaWR0aCh0cnVlKSwKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGVsZW1lbnQub3V0ZXJIZWlnaHQodHJ1ZSksCiAgICAgICAgICAgICAgICAgICAgImZsb2F0IjogZWxlbWVudC5jc3MoICJmbG9hdCIgKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHdyYXBwZXIgPSAkKCAiPGRpdj48L2Rpdj4iICkKICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoICJ1aS1lZmZlY3RzLXdyYXBwZXIiICkKICAgICAgICAgICAgICAgICAgICAuY3NzKHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICIxMDAlIiwKICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogInRyYW5zcGFyZW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMAogICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIHNpemUgaW4gY2FzZSB3aWR0aC9oZWlnaHQgYXJlIGRlZmluZWQgaW4gJSAtIEZpeGVzICM1MjQ1CiAgICAgICAgICAgICAgICBzaXplID0gewogICAgICAgICAgICAgICAgICAgIHdpZHRoOiBlbGVtZW50LndpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBlbGVtZW50LmhlaWdodCgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYWN0aXZlID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDsKCiAgICAgICAgICAgIGVsZW1lbnQud3JhcCggd3JhcHBlciApOwoKICAgICAgICAgICAgLy8gRml4ZXMgIzc1OTUgLSBFbGVtZW50cyBsb3NlIGZvY3VzIHdoZW4gd3JhcHBlZC4KICAgICAgICAgICAgaWYgKCBlbGVtZW50WyAwIF0gPT09IGFjdGl2ZSB8fCAkLmNvbnRhaW5zKCBlbGVtZW50WyAwIF0sIGFjdGl2ZSApICkgewogICAgICAgICAgICAgICAgJCggYWN0aXZlICkuZm9jdXMoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgd3JhcHBlciA9IGVsZW1lbnQucGFyZW50KCk7IC8vSG90Zml4IGZvciBqUXVlcnkgMS40IHNpbmNlIHNvbWUgY2hhbmdlIGluIHdyYXAoKSBzZWVtcyB0byBhY3R1YWxseSBsb29zZSB0aGUgcmVmZXJlbmNlIHRvIHRoZSB3cmFwcGVkIGVsZW1lbnQKCiAgICAgICAgICAgIC8vIHRyYW5zZmVyIHBvc2l0aW9uaW5nIHByb3BlcnRpZXMgdG8gdGhlIHdyYXBwZXIKICAgICAgICAgICAgaWYgKCBlbGVtZW50LmNzcyggInBvc2l0aW9uIiApID09PSAic3RhdGljIiApIHsKICAgICAgICAgICAgICAgIHdyYXBwZXIuY3NzKHsgcG9zaXRpb246ICJyZWxhdGl2ZSIgfSk7CiAgICAgICAgICAgICAgICBlbGVtZW50LmNzcyh7IHBvc2l0aW9uOiAicmVsYXRpdmUiIH0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJC5leHRlbmQoIHByb3BzLCB7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGVsZW1lbnQuY3NzKCAicG9zaXRpb24iICksCiAgICAgICAgICAgICAgICAgICAgekluZGV4OiBlbGVtZW50LmNzcyggInotaW5kZXgiICkKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgJC5lYWNoKFsgInRvcCIsICJsZWZ0IiwgImJvdHRvbSIsICJyaWdodCIgXSwgZnVuY3Rpb24oaSwgcG9zKSB7CiAgICAgICAgICAgICAgICAgICAgcHJvcHNbIHBvcyBdID0gZWxlbWVudC5jc3MoIHBvcyApOwogICAgICAgICAgICAgICAgICAgIGlmICggaXNOYU4oIHBhcnNlSW50KCBwcm9wc1sgcG9zIF0sIDEwICkgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHNbIHBvcyBdID0gImF1dG8iOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgZWxlbWVudC5jc3MoewogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAicmVsYXRpdmUiLAogICAgICAgICAgICAgICAgICAgIHRvcDogMCwKICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwLAogICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAiYXV0byIsCiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAiYXV0byIKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsZW1lbnQuY3NzKHNpemUpOwoKICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXIuY3NzKCBwcm9wcyApLnNob3coKTsKICAgICAgICB9LAoKICAgICAgICByZW1vdmVXcmFwcGVyOiBmdW5jdGlvbiggZWxlbWVudCApIHsKICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7CgogICAgICAgICAgICBpZiAoIGVsZW1lbnQucGFyZW50KCkuaXMoICIudWktZWZmZWN0cy13cmFwcGVyIiApICkgewogICAgICAgICAgICAgICAgZWxlbWVudC5wYXJlbnQoKS5yZXBsYWNlV2l0aCggZWxlbWVudCApOwoKICAgICAgICAgICAgICAgIC8vIEZpeGVzICM3NTk1IC0gRWxlbWVudHMgbG9zZSBmb2N1cyB3aGVuIHdyYXBwZWQuCiAgICAgICAgICAgICAgICBpZiAoIGVsZW1lbnRbIDAgXSA9PT0gYWN0aXZlIHx8ICQuY29udGFpbnMoIGVsZW1lbnRbIDAgXSwgYWN0aXZlICkgKSB7CiAgICAgICAgICAgICAgICAgICAgJCggYWN0aXZlICkuZm9jdXMoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKCiAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgICAgIH0KICAgIH0pOwoKICAgIC8vIHJldHVybiBhbiBlZmZlY3Qgb3B0aW9ucyBvYmplY3QgZm9yIHRoZSBnaXZlbiBwYXJhbWV0ZXJzOgogICAgZnVuY3Rpb24gX25vcm1hbGl6ZUFyZ3VtZW50cyggZWZmZWN0LCBvcHRpb25zLCBzcGVlZCwgY2FsbGJhY2sgKSB7CgogICAgICAgIC8vIHNob3J0IHBhdGggZm9yIHBhc3NpbmcgYW4gZWZmZWN0IG9wdGlvbnMgb2JqZWN0OgogICAgICAgIGlmICggJC5pc1BsYWluT2JqZWN0KCBlZmZlY3QgKSApIHsKICAgICAgICAgICAgcmV0dXJuIGVmZmVjdDsKICAgICAgICB9CgogICAgICAgIC8vIGNvbnZlcnQgdG8gYW4gb2JqZWN0CiAgICAgICAgZWZmZWN0ID0geyBlZmZlY3Q6IGVmZmVjdCB9OwoKICAgICAgICAvLyBjYXRjaCAoZWZmZWN0KQogICAgICAgIGlmICggb3B0aW9ucyA9PT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICBvcHRpb25zID0ge307CiAgICAgICAgfQoKICAgICAgICAvLyBjYXRjaCAoZWZmZWN0LCBjYWxsYmFjaykKICAgICAgICBpZiAoICQuaXNGdW5jdGlvbiggb3B0aW9ucyApICkgewogICAgICAgICAgICBjYWxsYmFjayA9IG9wdGlvbnM7CiAgICAgICAgICAgIHNwZWVkID0gbnVsbDsKICAgICAgICAgICAgb3B0aW9ucyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgLy8gY2F0Y2ggKGVmZmVjdCwgc3BlZWQsID8pCiAgICAgICAgaWYgKCAkLnR5cGUoIG9wdGlvbnMgKSA9PT0gIm51bWJlciIgfHwgJC5meC5zcGVlZHNbIG9wdGlvbnMgXSkgewogICAgICAgICAgICBjYWxsYmFjayA9IHNwZWVkOwogICAgICAgICAgICBzcGVlZCA9IG9wdGlvbnM7CiAgICAgICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgICB9CgogICAgICAgIC8vIGNhdGNoIChlZmZlY3QsIG9wdGlvbnMsIGNhbGxiYWNrKQogICAgICAgIGlmICggJC5pc0Z1bmN0aW9uKCBzcGVlZCApICkgewogICAgICAgICAgICBjYWxsYmFjayA9IHNwZWVkOwogICAgICAgICAgICBzcGVlZCA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICAvLyBhZGQgb3B0aW9ucyB0byBlZmZlY3QKICAgICAgICBpZiAoIG9wdGlvbnMgKSB7CiAgICAgICAgICAgICQuZXh0ZW5kKCBlZmZlY3QsIG9wdGlvbnMgKTsKICAgICAgICB9CgogICAgICAgIHNwZWVkID0gc3BlZWQgfHwgb3B0aW9ucy5kdXJhdGlvbjsKICAgICAgICBlZmZlY3QuZHVyYXRpb24gPSAkLmZ4Lm9mZiA/IDAgOiB0eXBlb2Ygc3BlZWQgPT09ICJudW1iZXIiCiAgICAgICAgICAgID8gc3BlZWQgOiBzcGVlZCBpbiAkLmZ4LnNwZWVkcyA/ICQuZnguc3BlZWRzWyBzcGVlZCBdIDogJC5meC5zcGVlZHMuX2RlZmF1bHQ7CgogICAgICAgIGVmZmVjdC5jb21wbGV0ZSA9IGNhbGxiYWNrIHx8IG9wdGlvbnMuY29tcGxldGU7CgogICAgICAgIHJldHVybiBlZmZlY3Q7CiAgICB9CgogICAgZnVuY3Rpb24gc3RhbmRhcmRTcGVlZCggc3BlZWQgKSB7CiAgICAgICAgLy8gdmFsaWQgc3RhbmRhcmQgc3BlZWRzCiAgICAgICAgaWYgKCAhc3BlZWQgfHwgdHlwZW9mIHNwZWVkID09PSAibnVtYmVyIiB8fCAkLmZ4LnNwZWVkc1sgc3BlZWQgXSApIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAvLyBpbnZhbGlkIHN0cmluZ3MgLSB0cmVhdCBhcyAibm9ybWFsIiBzcGVlZAogICAgICAgIGlmICggdHlwZW9mIHNwZWVkID09PSAic3RyaW5nIiAmJiAhJC5qcXBsb3QuZWZmZWN0cy5lZmZlY3RbIHNwZWVkIF0gKSB7CiAgICAgICAgICAgIC8vIFRPRE86IHJlbW92ZSBpbiAyLjAgKCM3MTE1KQogICAgICAgICAgICBpZiAoIGJhY2tDb21wYXQgJiYgJC5qcXBsb3QuZWZmZWN0c1sgc3BlZWQgXSApIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAkLmZuLmV4dGVuZCh7CiAgICAgICAganFwbG90RWZmZWN0OiBmdW5jdGlvbiggZWZmZWN0LCBvcHRpb25zLCBzcGVlZCwgY2FsbGJhY2sgKSB7CiAgICAgICAgICAgIHZhciBhcmdzID0gX25vcm1hbGl6ZUFyZ3VtZW50cy5hcHBseSggdGhpcywgYXJndW1lbnRzICksCiAgICAgICAgICAgICAgICBtb2RlID0gYXJncy5tb2RlLAogICAgICAgICAgICAgICAgcXVldWUgPSBhcmdzLnF1ZXVlLAogICAgICAgICAgICAgICAgZWZmZWN0TWV0aG9kID0gJC5qcXBsb3QuZWZmZWN0cy5lZmZlY3RbIGFyZ3MuZWZmZWN0IF0sCgogICAgICAgICAgICAgICAgLy8gREVQUkVDQVRFRDogcmVtb3ZlIGluIDIuMCAoIzcxMTUpCiAgICAgICAgICAgICAgICBvbGRFZmZlY3RNZXRob2QgPSAhZWZmZWN0TWV0aG9kICYmIGJhY2tDb21wYXQgJiYgJC5qcXBsb3QuZWZmZWN0c1sgYXJncy5lZmZlY3QgXTsKCiAgICAgICAgICAgIGlmICggJC5meC5vZmYgfHwgISggZWZmZWN0TWV0aG9kIHx8IG9sZEVmZmVjdE1ldGhvZCApICkgewogICAgICAgICAgICAgICAgLy8gZGVsZWdhdGUgdG8gdGhlIG9yaWdpbmFsIG1ldGhvZCAoZS5nLiwgLnNob3coKSkgaWYgcG9zc2libGUKICAgICAgICAgICAgICAgIGlmICggbW9kZSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1sgbW9kZSBdKCBhcmdzLmR1cmF0aW9uLCBhcmdzLmNvbXBsZXRlICk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGFyZ3MuY29tcGxldGUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLmNvbXBsZXRlLmNhbGwoIHRoaXMgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBydW4oIG5leHQgKSB7CiAgICAgICAgICAgICAgICB2YXIgZWxlbSA9ICQoIHRoaXMgKSwKICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZSA9IGFyZ3MuY29tcGxldGUsCiAgICAgICAgICAgICAgICAgICAgbW9kZSA9IGFyZ3MubW9kZTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBkb25lKCkgewogICAgICAgICAgICAgICAgICAgIGlmICggJC5pc0Z1bmN0aW9uKCBjb21wbGV0ZSApICkgewogICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZS5jYWxsKCBlbGVtWzBdICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICggJC5pc0Z1bmN0aW9uKCBuZXh0ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gaWYgdGhlIGVsZW1lbnQgaXMgaGlkZGRlbiBhbmQgbW9kZSBpcyBoaWRlLAogICAgICAgICAgICAgICAgLy8gb3IgZWxlbWVudCBpcyB2aXNpYmxlIGFuZCBtb2RlIGlzIHNob3cKICAgICAgICAgICAgICAgIGlmICggZWxlbS5pcyggIjpoaWRkZW4iICkgPyBtb2RlID09PSAiaGlkZSIgOiBtb2RlID09PSAic2hvdyIgKSB7CiAgICAgICAgICAgICAgICAgICAgZG9uZSgpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBlZmZlY3RNZXRob2QuY2FsbCggZWxlbVswXSwgYXJncywgZG9uZSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBUT0RPOiByZW1vdmUgdGhpcyBjaGVjayBpbiAyLjAsIGVmZmVjdE1ldGhvZCB3aWxsIGFsd2F5cyBiZSB0cnVlCiAgICAgICAgICAgIGlmICggZWZmZWN0TWV0aG9kICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXVlID09PSBmYWxzZSA/IHRoaXMuZWFjaCggcnVuICkgOiB0aGlzLnF1ZXVlKCBxdWV1ZSB8fCAiZngiLCBydW4gKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIERFUFJFQ0FURUQ6IHJlbW92ZSBpbiAyLjAgKCM3MTE1KQogICAgICAgICAgICAgICAgcmV0dXJuIG9sZEVmZmVjdE1ldGhvZC5jYWxsKHRoaXMsIHsKICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBhcmdzLAogICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBhcmdzLmR1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBhcmdzLmNvbXBsZXRlLAogICAgICAgICAgICAgICAgICAgIG1vZGU6IGFyZ3MubW9kZQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KTsKCgoKCiAgICB2YXIgcnZlcnRpY2FsID0gL3VwfGRvd258dmVydGljYWwvLAogICAgICAgIHJwb3NpdGl2ZW1vdGlvbiA9IC91cHxsZWZ0fHZlcnRpY2FsfGhvcml6b250YWwvOwoKICAgICQuanFwbG90LmVmZmVjdHMuZWZmZWN0LmJsaW5kID0gZnVuY3Rpb24oIG8sIGRvbmUgKSB7CiAgICAgICAgLy8gQ3JlYXRlIGVsZW1lbnQKICAgICAgICB2YXIgZWwgPSAkKCB0aGlzICksCiAgICAgICAgICAgIHByb3BzID0gWyAicG9zaXRpb24iLCAidG9wIiwgImJvdHRvbSIsICJsZWZ0IiwgInJpZ2h0IiwgImhlaWdodCIsICJ3aWR0aCIgXSwKICAgICAgICAgICAgbW9kZSA9ICQuanFwbG90LmVmZmVjdHMuc2V0TW9kZSggZWwsIG8ubW9kZSB8fCAiaGlkZSIgKSwKICAgICAgICAgICAgZGlyZWN0aW9uID0gby5kaXJlY3Rpb24gfHwgInVwIiwKICAgICAgICAgICAgdmVydGljYWwgPSBydmVydGljYWwudGVzdCggZGlyZWN0aW9uICksCiAgICAgICAgICAgIHJlZiA9IHZlcnRpY2FsID8gImhlaWdodCIgOiAid2lkdGgiLAogICAgICAgICAgICByZWYyID0gdmVydGljYWwgPyAidG9wIiA6ICJsZWZ0IiwKICAgICAgICAgICAgbW90aW9uID0gcnBvc2l0aXZlbW90aW9uLnRlc3QoIGRpcmVjdGlvbiApLAogICAgICAgICAgICBhbmltYXRpb24gPSB7fSwKICAgICAgICAgICAgc2hvdyA9IG1vZGUgPT09ICJzaG93IiwKICAgICAgICAgICAgd3JhcHBlciwgZGlzdGFuY2UsIHRvcDsKCiAgICAgICAgLy8gLy8gaWYgYWxyZWFkeSB3cmFwcGVkLCB0aGUgd3JhcHBlcidzIHByb3BlcnRpZXMgYXJlIG15IHByb3BlcnR5LiAjNjI0NQogICAgICAgIGlmICggZWwucGFyZW50KCkuaXMoICIudWktZWZmZWN0cy13cmFwcGVyIiApICkgewogICAgICAgICAgICAkLmpxcGxvdC5lZmZlY3RzLnNhdmUoIGVsLnBhcmVudCgpLCBwcm9wcyApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICQuanFwbG90LmVmZmVjdHMuc2F2ZSggZWwsIHByb3BzICk7CiAgICAgICAgfQogICAgICAgIGVsLnNob3coKTsKICAgICAgICB0b3AgPSBwYXJzZUludChlbC5jc3MoJ3RvcCcpLCAxMCk7CiAgICAgICAgd3JhcHBlciA9ICQuanFwbG90LmVmZmVjdHMuY3JlYXRlV3JhcHBlciggZWwgKS5jc3MoewogICAgICAgICAgICBvdmVyZmxvdzogImhpZGRlbiIKICAgICAgICB9KTsKCiAgICAgICAgZGlzdGFuY2UgPSB2ZXJ0aWNhbCA/IHdyYXBwZXJbIHJlZiBdKCkgKyB0b3AgOiB3cmFwcGVyWyByZWYgXSgpOwoKICAgICAgICBhbmltYXRpb25bIHJlZiBdID0gc2hvdyA/IFN0cmluZyhkaXN0YW5jZSkgOiAnMCc7CiAgICAgICAgaWYgKCAhbW90aW9uICkgewogICAgICAgICAgICBlbAogICAgICAgICAgICAgICAgLmNzcyggdmVydGljYWwgPyAiYm90dG9tIiA6ICJyaWdodCIsIDAgKQogICAgICAgICAgICAgICAgLmNzcyggdmVydGljYWwgPyAidG9wIiA6ICJsZWZ0IiwgIiIgKQogICAgICAgICAgICAgICAgLmNzcyh7IHBvc2l0aW9uOiAiYWJzb2x1dGUiIH0pOwogICAgICAgICAgICBhbmltYXRpb25bIHJlZjIgXSA9IHNob3cgPyAnMCcgOiBTdHJpbmcoZGlzdGFuY2UpOwogICAgICAgIH0KCiAgICAgICAgLy8gLy8gc3RhcnQgYXQgMCBpZiB3ZSBhcmUgc2hvd2luZwogICAgICAgIGlmICggc2hvdyApIHsKICAgICAgICAgICAgd3JhcHBlci5jc3MoIHJlZiwgMCApOwogICAgICAgICAgICBpZiAoICEgbW90aW9uICkgewogICAgICAgICAgICAgICAgd3JhcHBlci5jc3MoIHJlZjIsIGRpc3RhbmNlICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIC8vIEFuaW1hdGUKICAgICAgICB3cmFwcGVyLmFuaW1hdGUoIGFuaW1hdGlvbiwgewogICAgICAgICAgICBkdXJhdGlvbjogby5kdXJhdGlvbiwKICAgICAgICAgICAgZWFzaW5nOiBvLmVhc2luZywKICAgICAgICAgICAgcXVldWU6IGZhbHNlLAogICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAoIG1vZGUgPT09ICJoaWRlIiApIHsKICAgICAgICAgICAgICAgICAgICBlbC5oaWRlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkLmpxcGxvdC5lZmZlY3RzLnJlc3RvcmUoIGVsLCBwcm9wcyApOwogICAgICAgICAgICAgICAgJC5qcXBsb3QuZWZmZWN0cy5yZW1vdmVXcmFwcGVyKCBlbCApOwogICAgICAgICAgICAgICAgZG9uZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgfTsKCn0pKGpRdWVyeSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/jqplot/jquery.jqplot.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmpxcGxvdC10YXJnZXR7cG9zaXRpb246cmVsYXRpdmU7Y29sb3I6IzY2Njtmb250LWZhbWlseToiVHJlYnVjaGV0IE1TIixBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjtmb250LXNpemU6MWVtfS5qcXBsb3QtYXhpc3tmb250LXNpemU6Ljc1ZW19LmpxcGxvdC14YXhpc3ttYXJnaW4tdG9wOjEwcHh9LmpxcGxvdC14MmF4aXN7bWFyZ2luLWJvdHRvbToxMHB4fS5qcXBsb3QteWF4aXN7bWFyZ2luLXJpZ2h0OjEwcHh9LmpxcGxvdC15MmF4aXMsLmpxcGxvdC15M2F4aXMsLmpxcGxvdC15NGF4aXMsLmpxcGxvdC15NWF4aXMsLmpxcGxvdC15NmF4aXMsLmpxcGxvdC15N2F4aXMsLmpxcGxvdC15OGF4aXMsLmpxcGxvdC15OWF4aXMsLmpxcGxvdC15TWlkQXhpc3ttYXJnaW4tbGVmdDoxMHB4O21hcmdpbi1yaWdodDoxMHB4fS5qcXBsb3QtYXhpcy10aWNrLC5qcXBsb3QteGF4aXMtdGljaywuanFwbG90LXlheGlzLXRpY2ssLmpxcGxvdC14MmF4aXMtdGljaywuanFwbG90LXkyYXhpcy10aWNrLC5qcXBsb3QteTNheGlzLXRpY2ssLmpxcGxvdC15NGF4aXMtdGljaywuanFwbG90LXk1YXhpcy10aWNrLC5qcXBsb3QteTZheGlzLXRpY2ssLmpxcGxvdC15N2F4aXMtdGljaywuanFwbG90LXk4YXhpcy10aWNrLC5qcXBsb3QteTlheGlzLXRpY2ssLmpxcGxvdC15TWlkQXhpcy10aWNre3Bvc2l0aW9uOmFic29sdXRlO3doaXRlLXNwYWNlOnByZX0uanFwbG90LXhheGlzLXRpY2t7dG9wOjA7bGVmdDoxNXB4O3ZlcnRpY2FsLWFsaWduOnRvcH0uanFwbG90LXgyYXhpcy10aWNre2JvdHRvbTowO2xlZnQ6MTVweDt2ZXJ0aWNhbC1hbGlnbjpib3R0b219LmpxcGxvdC15YXhpcy10aWNre3JpZ2h0OjA7dG9wOjE1cHg7dGV4dC1hbGlnbjpyaWdodH0uanFwbG90LXlheGlzLXRpY2suanFwbG90LWJyZWFrVGlja3tyaWdodDotMjBweDttYXJnaW4tcmlnaHQ6MDtwYWRkaW5nOjFweCA1cHggMXB4IDVweDt6LWluZGV4OjI7Zm9udC1zaXplOjEuNWVtfS5qcXBsb3QteTJheGlzLXRpY2ssLmpxcGxvdC15M2F4aXMtdGljaywuanFwbG90LXk0YXhpcy10aWNrLC5qcXBsb3QteTVheGlzLXRpY2ssLmpxcGxvdC15NmF4aXMtdGljaywuanFwbG90LXk3YXhpcy10aWNrLC5qcXBsb3QteThheGlzLXRpY2ssLmpxcGxvdC15OWF4aXMtdGlja3tsZWZ0OjA7dG9wOjE1cHg7dGV4dC1hbGlnbjpsZWZ0fS5qcXBsb3QteU1pZEF4aXMtdGlja3t0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9LmpxcGxvdC14YXhpcy1sYWJlbHttYXJnaW4tdG9wOjEwcHg7Zm9udC1zaXplOjExcHQ7cG9zaXRpb246YWJzb2x1dGV9LmpxcGxvdC14MmF4aXMtbGFiZWx7bWFyZ2luLWJvdHRvbToxMHB4O2ZvbnQtc2l6ZToxMXB0O3Bvc2l0aW9uOmFic29sdXRlfS5qcXBsb3QteWF4aXMtbGFiZWx7bWFyZ2luLXJpZ2h0OjEwcHg7Zm9udC1zaXplOjExcHQ7cG9zaXRpb246YWJzb2x1dGV9LmpxcGxvdC15TWlkQXhpcy1sYWJlbHtmb250LXNpemU6MTFwdDtwb3NpdGlvbjphYnNvbHV0ZX0uanFwbG90LXkyYXhpcy1sYWJlbCwuanFwbG90LXkzYXhpcy1sYWJlbCwuanFwbG90LXk0YXhpcy1sYWJlbCwuanFwbG90LXk1YXhpcy1sYWJlbCwuanFwbG90LXk2YXhpcy1sYWJlbCwuanFwbG90LXk3YXhpcy1sYWJlbCwuanFwbG90LXk4YXhpcy1sYWJlbCwuanFwbG90LXk5YXhpcy1sYWJlbHtmb250LXNpemU6MTFwdDttYXJnaW4tbGVmdDoxMHB4O3Bvc2l0aW9uOmFic29sdXRlfS5qcXBsb3QtbWV0ZXJHYXVnZS10aWNre2ZvbnQtc2l6ZTouNzVlbTtjb2xvcjojOTk5fS5qcXBsb3QtbWV0ZXJHYXVnZS1sYWJlbHtmb250LXNpemU6MWVtO2NvbG9yOiM5OTl9dGFibGUuanFwbG90LXRhYmxlLWxlZ2VuZHttYXJnaW4tdG9wOjEycHg7bWFyZ2luLWJvdHRvbToxMnB4O21hcmdpbi1sZWZ0OjEycHg7bWFyZ2luLXJpZ2h0OjEycHh9dGFibGUuanFwbG90LXRhYmxlLWxlZ2VuZCx0YWJsZS5qcXBsb3QtY3Vyc29yLWxlZ2VuZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC42KTtib3JkZXI6MXB4IHNvbGlkICNjY2M7cG9zaXRpb246YWJzb2x1dGU7Zm9udC1zaXplOi43NWVtfXRkLmpxcGxvdC10YWJsZS1sZWdlbmR7dmVydGljYWwtYWxpZ246bWlkZGxlfXRkLmpxcGxvdC1zZXJpZXNUb2dnbGU6aG92ZXIsdGQuanFwbG90LXNlcmllc1RvZ2dsZTphY3RpdmV7Y3Vyc29yOnBvaW50ZXJ9LmpxcGxvdC10YWJsZS1sZWdlbmQgLmpxcGxvdC1zZXJpZXMtaGlkZGVue3RleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2h9ZGl2LmpxcGxvdC10YWJsZS1sZWdlbmQtc3dhdGNoLW91dGxpbmV7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO3BhZGRpbmc6MXB4fWRpdi5qcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaHt3aWR0aDowO2hlaWdodDowO2JvcmRlci10b3Atd2lkdGg6NXB4O2JvcmRlci1ib3R0b20td2lkdGg6NXB4O2JvcmRlci1sZWZ0LXdpZHRoOjZweDtib3JkZXItcmlnaHQtd2lkdGg6NnB4O2JvcmRlci10b3Atc3R5bGU6c29saWQ7Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZDtib3JkZXItbGVmdC1zdHlsZTpzb2xpZDtib3JkZXItcmlnaHQtc3R5bGU6c29saWR9LmpxcGxvdC10aXRsZXt0b3A6MDtsZWZ0OjA7cGFkZGluZy1ib3R0b206LjVlbTtmb250LXNpemU6MS4yZW19dGFibGUuanFwbG90LWN1cnNvci10b29sdGlwe2JvcmRlcjoxcHggc29saWQgI2NjYztmb250LXNpemU6Ljc1ZW19LmpxcGxvdC1jdXJzb3ItdG9vbHRpcHtib3JkZXI6MXB4IHNvbGlkICNjY2M7Zm9udC1zaXplOi43NWVtO3doaXRlLXNwYWNlOm5vd3JhcDtiYWNrZ3JvdW5kOnJnYmEoMjA4LDIwOCwyMDgsMC41KTtwYWRkaW5nOjFweH0uanFwbG90LWhpZ2hsaWdodGVyLXRvb2x0aXAsLmpxcGxvdC1jYW52YXNPdmVybGF5LXRvb2x0aXB7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2ZvbnQtc2l6ZTouNzVlbTt3aGl0ZS1zcGFjZTpub3dyYXA7YmFja2dyb3VuZDpyZ2JhKDIwOCwyMDgsMjA4LDAuNSk7cGFkZGluZzoxcHh9LmpxcGxvdC1wb2ludC1sYWJlbHtmb250LXNpemU6Ljc1ZW07ei1pbmRleDoyfXRkLmpxcGxvdC1jdXJzb3ItbGVnZW5kLXN3YXRjaHt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7dGV4dC1hbGlnbjpjZW50ZXJ9ZGl2LmpxcGxvdC1jdXJzb3ItbGVnZW5kLXN3YXRjaHt3aWR0aDoxLjJlbTtoZWlnaHQ6LjdlbX0uanFwbG90LWVycm9ye3RleHQtYWxpZ246Y2VudGVyfS5qcXBsb3QtZXJyb3ItbWVzc2FnZXtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6NDYlO2Rpc3BsYXk6aW5saW5lLWJsb2NrfWRpdi5qcXBsb3QtYnViYmxlLWxhYmVse2ZvbnQtc2l6ZTouOGVtO3BhZGRpbmctbGVmdDoycHg7cGFkZGluZy1yaWdodDoycHg7Y29sb3I6cmdiKDIwJSwyMCUsMjAlKX1kaXYuanFwbG90LWJ1YmJsZS1sYWJlbC5qcXBsb3QtYnViYmxlLWxhYmVsLWhpZ2hsaWdodHtiYWNrZ3JvdW5kOnJnYmEoOTAlLDkwJSw5MCUsMC43KX1kaXYuanFwbG90LW5vRGF0YS1jb250YWluZXJ7dGV4dC1hbGlnbjpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDk2JSw5NiUsOTYlLDAuMyl9]]></data>
	</file>
	<file>
	  <filename>/jqplot/jquery.jqplot.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oTCl7dmFyIHU7TC5mbi5lbXB0eUZvcmNlPWZ1bmN0aW9uKCl7Zm9yKHZhciBhaD0wLGFpOyhhaT1MKHRoaXMpW2FoXSkhPW51bGw7YWgrKyl7aWYoYWkubm9kZVR5cGU9PT0xKXtMLmNsZWFuRGF0YShhaS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKX1pZihMLmpxcGxvdC51c2VfZXhjYW52YXMpe2FpLm91dGVySFRNTD0iIn1lbHNle3doaWxlKGFpLmZpcnN0Q2hpbGQpe2FpLnJlbW92ZUNoaWxkKGFpLmZpcnN0Q2hpbGQpfX1haT1udWxsfXJldHVybiBMKHRoaXMpfTtMLmZuLnJlbW92ZUNoaWxkRm9yY2U9ZnVuY3Rpb24oYWgpe3doaWxlKGFoLmZpcnN0Q2hpbGQpe3RoaXMucmVtb3ZlQ2hpbGRGb3JjZShhaC5maXJzdENoaWxkKTthaC5yZW1vdmVDaGlsZChhaC5maXJzdENoaWxkKX19O0wuZm4uanFwbG90PWZ1bmN0aW9uKCl7dmFyIGFoPVtdO3ZhciBhaj1bXTtmb3IodmFyIGFrPTAsYWk9YXJndW1lbnRzLmxlbmd0aDthazxhaTthaysrKXtpZihMLmlzQXJyYXkoYXJndW1lbnRzW2FrXSkpe2FoLnB1c2goYXJndW1lbnRzW2FrXSl9ZWxzZXtpZihMLmlzUGxhaW5PYmplY3QoYXJndW1lbnRzW2FrXSkpe2FqLnB1c2goYXJndW1lbnRzW2FrXSl9fX1yZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGFuKXt2YXIgYXQsYXIsYXE9TCh0aGlzKSxhbT1haC5sZW5ndGgsYWw9YWoubGVuZ3RoLGFwLGFvO2lmKGFuPGFtKXthcD1haFthbl19ZWxzZXthcD1hbT9haFthbS0xXTpudWxsfWlmKGFuPGFsKXthbz1halthbl19ZWxzZXthbz1hbD9halthbC0xXTpudWxsfWF0PWFxLmF0dHIoImlkIik7aWYoYXQ9PT11KXthdD0ianFwbG90X3RhcmdldF8iK0wuanFwbG90LnRhcmdldENvdW50ZXIrKzthcS5hdHRyKCJpZCIsYXQpfWFyPUwuanFwbG90KGF0LGFwLGFvKTthcS5kYXRhKCJqcXBsb3QiLGFyKX0pfTtMLmpxcGxvdD1mdW5jdGlvbihhbixhayxhaSl7dmFyIGFqPW51bGwsYWg9bnVsbDtpZihhcmd1bWVudHMubGVuZ3RoPT09Myl7YWo9YWs7YWg9YWl9ZWxzZXtpZihhcmd1bWVudHMubGVuZ3RoPT09Mil7aWYoTC5pc0FycmF5KGFrKSl7YWo9YWt9ZWxzZXtpZihMLmlzUGxhaW5PYmplY3QoYWspKXthaD1ha319fX1pZihhaj09PW51bGwmJmFoIT09bnVsbCYmYWguZGF0YSl7YWo9YWguZGF0YX12YXIgYW09bmV3IFIoKTtMKCIjIithbikucmVtb3ZlQ2xhc3MoImpxcGxvdC1lcnJvciIpO2lmKEwuanFwbG90LmNvbmZpZy5jYXRjaEVycm9ycyl7dHJ5e2FtLmluaXQoYW4sYWosYWgpO2FtLmRyYXcoKTthbS50aGVtZUVuZ2luZS5pbml0LmNhbGwoYW0pO3JldHVybiBhbX1jYXRjaChhbCl7dmFyIGFvPUwuanFwbG90LmNvbmZpZy5lcnJvck1lc3NhZ2V8fGFsLm1lc3NhZ2U7TCgiIyIrYW4pLmFwcGVuZCgnPGRpdiBjbGFzcz0ianFwbG90LWVycm9yLW1lc3NhZ2UiPicrYW8rIjwvZGl2PiIpO0woIiMiK2FuKS5hZGRDbGFzcygianFwbG90LWVycm9yIik7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYW4pLnN0eWxlLmJhY2tncm91bmQ9TC5qcXBsb3QuY29uZmlnLmVycm9yQmFja2dyb3VuZDtkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhbikuc3R5bGUuYm9yZGVyPUwuanFwbG90LmNvbmZpZy5lcnJvckJvcmRlcjtkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhbikuc3R5bGUuZm9udEZhbWlseT1MLmpxcGxvdC5jb25maWcuZXJyb3JGb250RmFtaWx5O2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFuKS5zdHlsZS5mb250U2l6ZT1MLmpxcGxvdC5jb25maWcuZXJyb3JGb250U2l6ZTtkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhbikuc3R5bGUuZm9udFN0eWxlPUwuanFwbG90LmNvbmZpZy5lcnJvckZvbnRTdHlsZTtkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhbikuc3R5bGUuZm9udFdlaWdodD1MLmpxcGxvdC5jb25maWcuZXJyb3JGb250V2VpZ2h0fX1lbHNle2FtLmluaXQoYW4sYWosYWgpO2FtLmRyYXcoKTthbS50aGVtZUVuZ2luZS5pbml0LmNhbGwoYW0pO3JldHVybiBhbX19O0wuanFwbG90LnZlcnNpb249IjEuMC44IjtMLmpxcGxvdC5yZXZpc2lvbj0iMTI1MCI7TC5qcXBsb3QudGFyZ2V0Q291bnRlcj0xO0wuanFwbG90LkNhbnZhc01hbmFnZXI9ZnVuY3Rpb24oKXtpZih0eXBlb2YgTC5qcXBsb3QuQ2FudmFzTWFuYWdlci5jYW52YXNlcz09InVuZGVmaW5lZCIpe0wuanFwbG90LkNhbnZhc01hbmFnZXIuY2FudmFzZXM9W107TC5qcXBsb3QuQ2FudmFzTWFuYWdlci5mcmVlPVtdfXZhciBhaD1bXTt0aGlzLmdldENhbnZhcz1mdW5jdGlvbigpe3ZhciBhazt2YXIgYWo9dHJ1ZTtpZighTC5qcXBsb3QudXNlX2V4Y2FudmFzKXtmb3IodmFyIGFsPTAsYWk9TC5qcXBsb3QuQ2FudmFzTWFuYWdlci5jYW52YXNlcy5sZW5ndGg7YWw8YWk7YWwrKyl7aWYoTC5qcXBsb3QuQ2FudmFzTWFuYWdlci5mcmVlW2FsXT09PXRydWUpe2FqPWZhbHNlO2FrPUwuanFwbG90LkNhbnZhc01hbmFnZXIuY2FudmFzZXNbYWxdO0wuanFwbG90LkNhbnZhc01hbmFnZXIuZnJlZVthbF09ZmFsc2U7YWgucHVzaChhbCk7YnJlYWt9fX1pZihhail7YWs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7YWgucHVzaChMLmpxcGxvdC5DYW52YXNNYW5hZ2VyLmNhbnZhc2VzLmxlbmd0aCk7TC5qcXBsb3QuQ2FudmFzTWFuYWdlci5jYW52YXNlcy5wdXNoKGFrKTtMLmpxcGxvdC5DYW52YXNNYW5hZ2VyLmZyZWUucHVzaChmYWxzZSl9cmV0dXJuIGFrfTt0aGlzLmluaXRDYW52YXM9ZnVuY3Rpb24oYWkpe2lmKEwuanFwbG90LnVzZV9leGNhbnZhcyl7cmV0dXJuIHdpbmRvdy5HX3ZtbENhbnZhc01hbmFnZXIuaW5pdEVsZW1lbnQoYWkpfXJldHVybiBhaX07dGhpcy5mcmVlQWxsQ2FudmFzZXM9ZnVuY3Rpb24oKXtmb3IodmFyIGFqPTAsYWk9YWgubGVuZ3RoO2FqPGFpO2FqKyspe3RoaXMuZnJlZUNhbnZhcyhhaFthal0pfWFoPVtdfTt0aGlzLmZyZWVDYW52YXM9ZnVuY3Rpb24oYWkpe2lmKEwuanFwbG90LnVzZV9leGNhbnZhcyYmd2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci51bmluaXRFbGVtZW50IT09dSl7d2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci51bmluaXRFbGVtZW50KEwuanFwbG90LkNhbnZhc01hbmFnZXIuY2FudmFzZXNbYWldKTtMLmpxcGxvdC5DYW52YXNNYW5hZ2VyLmNhbnZhc2VzW2FpXT1udWxsfWVsc2V7dmFyIGFqPUwuanFwbG90LkNhbnZhc01hbmFnZXIuY2FudmFzZXNbYWldO2FqLmdldENvbnRleHQoIjJkIikuY2xlYXJSZWN0KDAsMCxhai53aWR0aCxhai5oZWlnaHQpO0woYWopLnVuYmluZCgpLnJlbW92ZUF0dHIoImNsYXNzIikucmVtb3ZlQXR0cigic3R5bGUiKTtMKGFqKS5jc3Moe2xlZnQ6IiIsdG9wOiIiLHBvc2l0aW9uOiIifSk7YWoud2lkdGg9MDthai5oZWlnaHQ9MDtMLmpxcGxvdC5DYW52YXNNYW5hZ2VyLmZyZWVbYWldPXRydWV9fX07TC5qcXBsb3QubG9nPWZ1bmN0aW9uKCl7aWYod2luZG93LmNvbnNvbGUpe3dpbmRvdy5jb25zb2xlLmxvZy5hcHBseSh3aW5kb3cuY29uc29sZSxhcmd1bWVudHMpfX07TC5qcXBsb3QuY29uZmlnPXthZGREb21SZWZlcmVuY2U6ZmFsc2UsZW5hYmxlUGx1Z2luczpmYWxzZSxkZWZhdWx0SGVpZ2h0OjMwMCxkZWZhdWx0V2lkdGg6NDAwLFVUQ0FkanVzdDpmYWxzZSx0aW1lem9uZU9mZnNldDpuZXcgRGF0ZShuZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkqNjAwMDApLGVycm9yTWVzc2FnZToiIixlcnJvckJhY2tncm91bmQ6IiIsZXJyb3JCb3JkZXI6IiIsZXJyb3JGb250RmFtaWx5OiIiLGVycm9yRm9udFNpemU6IiIsZXJyb3JGb250U3R5bGU6IiIsZXJyb3JGb250V2VpZ2h0OiIiLGNhdGNoRXJyb3JzOmZhbHNlLGRlZmF1bHRUaWNrRm9ybWF0U3RyaW5nOiIlLjFmIixkZWZhdWx0Q29sb3JzOlsiIzRiYjJjNSIsIiNFQUEyMjgiLCIjYzViNDdmIiwiIzU3OTU3NSIsIiM4Mzk1NTciLCIjOTU4YzEyIiwiIzk1MzU3OSIsIiM0YjVkZTQiLCIjZDhiODNmIiwiI2ZmNTgwMCIsIiMwMDg1Y2MiLCIjYzc0N2EzIiwiI2NkZGY1NCIsIiNGQkQxNzgiLCIjMjZCNEUzIiwiI2JkNzBjNyJdLGRlZmF1bHROZWdhdGl2ZUNvbG9yczpbIiM0OTg5OTEiLCIjQzA4ODQwIiwiIzlGOTI3NCIsIiM1NDZENjEiLCIjNjQ2QzRBIiwiIzZGNjYyMSIsIiM2RTNGNUYiLCIjNEY2NEIwIiwiI0E4OTA1MCIsIiNDNDU5MjMiLCIjMTg3Mzk5IiwiIzk0NTM4MSIsIiM5NTlFNUMiLCIjQzdBRjdCIiwiIzQ3ODM5NiIsIiM5MDcyOTQiXSxkYXNoTGVuZ3RoOjQsZ2FwTGVuZ3RoOjQsZG90R2FwTGVuZ3RoOjIuNSxzcmNMb2NhdGlvbjoianFwbG90L3NyYy8iLHBsdWdpbkxvY2F0aW9uOiJqcXBsb3Qvc3JjL3BsdWdpbnMvIn07TC5qcXBsb3QuYXJyYXlNYXg9ZnVuY3Rpb24oYWgpe3JldHVybiBNYXRoLm1heC5hcHBseShNYXRoLGFoKX07TC5qcXBsb3QuYXJyYXlNaW49ZnVuY3Rpb24oYWgpe3JldHVybiBNYXRoLm1pbi5hcHBseShNYXRoLGFoKX07TC5qcXBsb3QuZW5hYmxlUGx1Z2lucz1MLmpxcGxvdC5jb25maWcuZW5hYmxlUGx1Z2lucztMLmpxcGxvdC5zdXBwb3J0X2NhbnZhcz1mdW5jdGlvbigpe2lmKHR5cGVvZiBMLmpxcGxvdC5zdXBwb3J0X2NhbnZhcy5yZXN1bHQ9PSJ1bmRlZmluZWQiKXtMLmpxcGxvdC5zdXBwb3J0X2NhbnZhcy5yZXN1bHQ9ISFkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKS5nZXRDb250ZXh0fXJldHVybiBMLmpxcGxvdC5zdXBwb3J0X2NhbnZhcy5yZXN1bHR9O0wuanFwbG90LnN1cHBvcnRfY2FudmFzX3RleHQ9ZnVuY3Rpb24oKXtpZih0eXBlb2YgTC5qcXBsb3Quc3VwcG9ydF9jYW52YXNfdGV4dC5yZXN1bHQ9PSJ1bmRlZmluZWQiKXtpZih3aW5kb3cuR192bWxDYW52YXNNYW5hZ2VyIT09dSYmd2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci5fdmVyc2lvbj44ODcpe0wuanFwbG90LnN1cHBvcnRfY2FudmFzX3RleHQucmVzdWx0PXRydWV9ZWxzZXtMLmpxcGxvdC5zdXBwb3J0X2NhbnZhc190ZXh0LnJlc3VsdD0hIShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKS5nZXRDb250ZXh0JiZ0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikuZ2V0Q29udGV4dCgiMmQiKS5maWxsVGV4dD09ImZ1bmN0aW9uIil9fXJldHVybiBMLmpxcGxvdC5zdXBwb3J0X2NhbnZhc190ZXh0LnJlc3VsdH07TC5qcXBsb3QudXNlX2V4Y2FudmFzPSgoIUwuc3VwcG9ydC5ib3hNb2RlbHx8IUwuc3VwcG9ydC5vYmplY3RBbGx8fCEkc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSkmJiFMLmpxcGxvdC5zdXBwb3J0X2NhbnZhcygpKT90cnVlOmZhbHNlO0wuanFwbG90LnByZUluaXRIb29rcz1bXTtMLmpxcGxvdC5wb3N0SW5pdEhvb2tzPVtdO0wuanFwbG90LnByZVBhcnNlT3B0aW9uc0hvb2tzPVtdO0wuanFwbG90LnBvc3RQYXJzZU9wdGlvbnNIb29rcz1bXTtMLmpxcGxvdC5wcmVEcmF3SG9va3M9W107TC5qcXBsb3QucG9zdERyYXdIb29rcz1bXTtMLmpxcGxvdC5wcmVEcmF3U2VyaWVzSG9va3M9W107TC5qcXBsb3QucG9zdERyYXdTZXJpZXNIb29rcz1bXTtMLmpxcGxvdC5wcmVEcmF3TGVnZW5kSG9va3M9W107TC5qcXBsb3QuYWRkTGVnZW5kUm93SG9va3M9W107TC5qcXBsb3QucHJlU2VyaWVzSW5pdEhvb2tzPVtdO0wuanFwbG90LnBvc3RTZXJpZXNJbml0SG9va3M9W107TC5qcXBsb3QucHJlUGFyc2VTZXJpZXNPcHRpb25zSG9va3M9W107TC5qcXBsb3QucG9zdFBhcnNlU2VyaWVzT3B0aW9uc0hvb2tzPVtdO0wuanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcz1bXTtMLmpxcGxvdC5wcmVEcmF3U2VyaWVzU2hhZG93SG9va3M9W107TC5qcXBsb3QucG9zdERyYXdTZXJpZXNTaGFkb3dIb29rcz1bXTtMLmpxcGxvdC5FbGVtQ29udGFpbmVyPWZ1bmN0aW9uKCl7dGhpcy5fZWxlbTt0aGlzLl9wbG90V2lkdGg7dGhpcy5fcGxvdEhlaWdodDt0aGlzLl9wbG90RGltZW5zaW9ucz17aGVpZ2h0Om51bGwsd2lkdGg6bnVsbH19O0wuanFwbG90LkVsZW1Db250YWluZXIucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oYWssYW0sYWksYWosYW4pe3RoaXMuX29mZnNldHM9YW07dmFyIGFoPWFpfHwianFwbG90Ijt2YXIgYWw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChhayk7dGhpcy5fZWxlbT1MKGFsKTt0aGlzLl9lbGVtLmFkZENsYXNzKGFoKTt0aGlzLl9lbGVtLmNzcyhhaik7dGhpcy5fZWxlbS5hdHRyKGFuKTthbD1udWxsO3JldHVybiB0aGlzLl9lbGVtfTtMLmpxcGxvdC5FbGVtQ29udGFpbmVyLnByb3RvdHlwZS5nZXRXaWR0aD1mdW5jdGlvbigpe2lmKHRoaXMuX2VsZW0pe3JldHVybiB0aGlzLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSl9ZWxzZXtyZXR1cm4gbnVsbH19O0wuanFwbG90LkVsZW1Db250YWluZXIucHJvdG90eXBlLmdldEhlaWdodD1mdW5jdGlvbigpe2lmKHRoaXMuX2VsZW0pe3JldHVybiB0aGlzLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpfWVsc2V7cmV0dXJuIG51bGx9fTtMLmpxcGxvdC5FbGVtQ29udGFpbmVyLnByb3RvdHlwZS5nZXRQb3NpdGlvbj1mdW5jdGlvbigpe2lmKHRoaXMuX2VsZW0pe3JldHVybiB0aGlzLl9lbGVtLnBvc2l0aW9uKCl9ZWxzZXtyZXR1cm57dG9wOm51bGwsbGVmdDpudWxsLGJvdHRvbTpudWxsLHJpZ2h0Om51bGx9fX07TC5qcXBsb3QuRWxlbUNvbnRhaW5lci5wcm90b3R5cGUuZ2V0VG9wPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0UG9zaXRpb24oKS50b3B9O0wuanFwbG90LkVsZW1Db250YWluZXIucHJvdG90eXBlLmdldExlZnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRQb3NpdGlvbigpLmxlZnR9O0wuanFwbG90LkVsZW1Db250YWluZXIucHJvdG90eXBlLmdldEJvdHRvbT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGVtLmNzcygiYm90dG9tIil9O0wuanFwbG90LkVsZW1Db250YWluZXIucHJvdG90eXBlLmdldFJpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VsZW0uY3NzKCJyaWdodCIpfTtmdW5jdGlvbiB3KGFoKXtMLmpxcGxvdC5FbGVtQ29udGFpbmVyLmNhbGwodGhpcyk7dGhpcy5uYW1lPWFoO3RoaXMuX3Nlcmllcz1bXTt0aGlzLnNob3c9ZmFsc2U7dGhpcy50aWNrUmVuZGVyZXI9TC5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlcjt0aGlzLnRpY2tPcHRpb25zPXt9O3RoaXMubGFiZWxSZW5kZXJlcj1MLmpxcGxvdC5BeGlzTGFiZWxSZW5kZXJlcjt0aGlzLmxhYmVsT3B0aW9ucz17fTt0aGlzLmxhYmVsPW51bGw7dGhpcy5zaG93TGFiZWw9dHJ1ZTt0aGlzLm1pbj1udWxsO3RoaXMubWF4PW51bGw7dGhpcy5hdXRvc2NhbGU9ZmFsc2U7dGhpcy5wYWQ9MS4yO3RoaXMucGFkTWF4PW51bGw7dGhpcy5wYWRNaW49bnVsbDt0aGlzLnRpY2tzPVtdO3RoaXMubnVtYmVyVGlja3M7dGhpcy50aWNrSW50ZXJ2YWw7dGhpcy5yZW5kZXJlcj1MLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXI7dGhpcy5yZW5kZXJlck9wdGlvbnM9e307dGhpcy5zaG93VGlja3M9dHJ1ZTt0aGlzLnNob3dUaWNrTWFya3M9dHJ1ZTt0aGlzLnNob3dNaW5vclRpY2tzPXRydWU7dGhpcy5kcmF3TWFqb3JHcmlkbGluZXM9dHJ1ZTt0aGlzLmRyYXdNaW5vckdyaWRsaW5lcz1mYWxzZTt0aGlzLmRyYXdNYWpvclRpY2tNYXJrcz10cnVlO3RoaXMuZHJhd01pbm9yVGlja01hcmtzPXRydWU7dGhpcy51c2VTZXJpZXNDb2xvcj1mYWxzZTt0aGlzLmJvcmRlcldpZHRoPW51bGw7dGhpcy5ib3JkZXJDb2xvcj1udWxsO3RoaXMuc2NhbGVUb0hpZGRlblNlcmllcz1mYWxzZTt0aGlzLl9kYXRhQm91bmRzPXttaW46bnVsbCxtYXg6bnVsbH07dGhpcy5faW50ZXJ2YWxTdGF0cz1bXTt0aGlzLl9vZmZzZXRzPXttaW46bnVsbCxtYXg6bnVsbH07dGhpcy5fdGlja3M9W107dGhpcy5fbGFiZWw9bnVsbDt0aGlzLnN5bmNUaWNrcz1udWxsO3RoaXMudGlja1NwYWNpbmc9NzU7dGhpcy5fbWluPW51bGw7dGhpcy5fbWF4PW51bGw7dGhpcy5fdGlja0ludGVydmFsPW51bGw7dGhpcy5fbnVtYmVyVGlja3M9bnVsbDt0aGlzLl9fdGlja3M9bnVsbDt0aGlzLl9vcHRpb25zPXt9fXcucHJvdG90eXBlPW5ldyBMLmpxcGxvdC5FbGVtQ29udGFpbmVyKCk7dy5wcm90b3R5cGUuY29uc3RydWN0b3I9dzt3LnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7aWYoTC5pc0Z1bmN0aW9uKHRoaXMucmVuZGVyZXIpKXt0aGlzLnJlbmRlcmVyPW5ldyB0aGlzLnJlbmRlcmVyKCl9dGhpcy50aWNrT3B0aW9ucy5heGlzPXRoaXMubmFtZTtpZih0aGlzLnRpY2tPcHRpb25zLnNob3dNYXJrPT1udWxsKXt0aGlzLnRpY2tPcHRpb25zLnNob3dNYXJrPXRoaXMuc2hvd1RpY2tzfWlmKHRoaXMudGlja09wdGlvbnMuc2hvd01hcms9PW51bGwpe3RoaXMudGlja09wdGlvbnMuc2hvd01hcms9dGhpcy5zaG93VGlja01hcmtzfWlmKHRoaXMudGlja09wdGlvbnMuc2hvd0xhYmVsPT1udWxsKXt0aGlzLnRpY2tPcHRpb25zLnNob3dMYWJlbD10aGlzLnNob3dUaWNrc31pZih0aGlzLmxhYmVsPT1udWxsfHx0aGlzLmxhYmVsPT0iIil7dGhpcy5zaG93TGFiZWw9ZmFsc2V9ZWxzZXt0aGlzLmxhYmVsT3B0aW9ucy5sYWJlbD10aGlzLmxhYmVsfWlmKHRoaXMuc2hvd0xhYmVsPT1mYWxzZSl7dGhpcy5sYWJlbE9wdGlvbnMuc2hvdz1mYWxzZX1pZih0aGlzLnBhZD09MCl7dGhpcy5wYWQ9MX1pZih0aGlzLnBhZE1heD09MCl7dGhpcy5wYWRNYXg9MX1pZih0aGlzLnBhZE1pbj09MCl7dGhpcy5wYWRNaW49MX1pZih0aGlzLnBhZE1heD09bnVsbCl7dGhpcy5wYWRNYXg9KHRoaXMucGFkLTEpLzIrMX1pZih0aGlzLnBhZE1pbj09bnVsbCl7dGhpcy5wYWRNaW49KHRoaXMucGFkLTEpLzIrMX10aGlzLnBhZD10aGlzLnBhZE1heCt0aGlzLnBhZE1pbi0xO2lmKHRoaXMubWluIT1udWxsfHx0aGlzLm1heCE9bnVsbCl7dGhpcy5hdXRvc2NhbGU9ZmFsc2V9aWYodGhpcy5zeW5jVGlja3M9PW51bGwmJnRoaXMubmFtZS5pbmRleE9mKCJ5Iik+LTEpe3RoaXMuc3luY1RpY2tzPXRydWV9ZWxzZXtpZih0aGlzLnN5bmNUaWNrcz09bnVsbCl7dGhpcy5zeW5jVGlja3M9ZmFsc2V9fXRoaXMucmVuZGVyZXIuaW5pdC5jYWxsKHRoaXMsdGhpcy5yZW5kZXJlck9wdGlvbnMpfTt3LnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKGFoLGFpKXtpZih0aGlzLl9fdGlja3Mpe3RoaXMuX190aWNrcz1udWxsfXJldHVybiB0aGlzLnJlbmRlcmVyLmRyYXcuY2FsbCh0aGlzLGFoLGFpKX07dy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJlci5zZXQuY2FsbCh0aGlzKX07dy5wcm90b3R5cGUucGFjaz1mdW5jdGlvbihhaSxhaCl7aWYodGhpcy5zaG93KXt0aGlzLnJlbmRlcmVyLnBhY2suY2FsbCh0aGlzLGFpLGFoKX1pZih0aGlzLl9taW49PW51bGwpe3RoaXMuX21pbj10aGlzLm1pbjt0aGlzLl9tYXg9dGhpcy5tYXg7dGhpcy5fdGlja0ludGVydmFsPXRoaXMudGlja0ludGVydmFsO3RoaXMuX251bWJlclRpY2tzPXRoaXMubnVtYmVyVGlja3M7dGhpcy5fX3RpY2tzPXRoaXMuX3RpY2tzfX07dy5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVyLnJlc2V0LmNhbGwodGhpcyl9O3cucHJvdG90eXBlLnJlc2V0U2NhbGU9ZnVuY3Rpb24oYWgpe0wuZXh0ZW5kKHRydWUsdGhpcyx7bWluOm51bGwsbWF4Om51bGwsbnVtYmVyVGlja3M6bnVsbCx0aWNrSW50ZXJ2YWw6bnVsbCxfdGlja3M6W10sdGlja3M6W119LGFoKTt0aGlzLnJlc2V0RGF0YUJvdW5kcygpfTt3LnByb3RvdHlwZS5yZXNldERhdGFCb3VuZHM9ZnVuY3Rpb24oKXt2YXIgYW89dGhpcy5fZGF0YUJvdW5kczthby5taW49bnVsbDthby5tYXg9bnVsbDt2YXIgYWksYXAsYW07dmFyIGFqPSh0aGlzLnNob3cpP3RydWU6ZmFsc2U7Zm9yKHZhciBhbD0wO2FsPHRoaXMuX3Nlcmllcy5sZW5ndGg7YWwrKyl7YXA9dGhpcy5fc2VyaWVzW2FsXTtpZihhcC5zaG93fHx0aGlzLnNjYWxlVG9IaWRkZW5TZXJpZXMpe2FtPWFwLl9wbG90RGF0YTtpZihhcC5fdHlwZT09PSJsaW5lIiYmYXAucmVuZGVyZXIuYmFuZHMuc2hvdyYmdGhpcy5uYW1lLmNoYXJBdCgwKSE9PSJ4Iil7YW09W1swLGFwLnJlbmRlcmVyLmJhbmRzLl9taW5dLFsxLGFwLnJlbmRlcmVyLmJhbmRzLl9tYXhdXX12YXIgYWg9MSxhbj0xO2lmKGFwLl90eXBlIT1udWxsJiZhcC5fdHlwZT09Im9obGMiKXthaD0zO2FuPTJ9Zm9yKHZhciBhaz0wLGFpPWFtLmxlbmd0aDthazxhaTthaysrKXtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe2lmKChhbVtha11bMF0hPW51bGwmJmFtW2FrXVswXTxhby5taW4pfHxhby5taW49PW51bGwpe2FvLm1pbj1hbVtha11bMF19aWYoKGFtW2FrXVswXSE9bnVsbCYmYW1bYWtdWzBdPmFvLm1heCl8fGFvLm1heD09bnVsbCl7YW8ubWF4PWFtW2FrXVswXX19ZWxzZXtpZigoYW1bYWtdW2FoXSE9bnVsbCYmYW1bYWtdW2FoXTxhby5taW4pfHxhby5taW49PW51bGwpe2FvLm1pbj1hbVtha11bYWhdfWlmKChhbVtha11bYW5dIT1udWxsJiZhbVtha11bYW5dPmFvLm1heCl8fGFvLm1heD09bnVsbCl7YW8ubWF4PWFtW2FrXVthbl19fX1pZihhaiYmYXAucmVuZGVyZXIuY29uc3RydWN0b3IhPT1MLmpxcGxvdC5CYXJSZW5kZXJlcil7YWo9ZmFsc2V9ZWxzZXtpZihhaiYmdGhpcy5fb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgiZm9yY2VUaWNrQXQwIikmJnRoaXMuX29wdGlvbnMuZm9yY2VUaWNrQXQwPT1mYWxzZSl7YWo9ZmFsc2V9ZWxzZXtpZihhaiYmYXAucmVuZGVyZXIuY29uc3RydWN0b3I9PT1MLmpxcGxvdC5CYXJSZW5kZXJlcil7aWYoYXAuYmFyRGlyZWN0aW9uPT0idmVydGljYWwiJiZ0aGlzLm5hbWUhPSJ4YXhpcyImJnRoaXMubmFtZSE9IngyYXhpcyIpe2lmKHRoaXMuX29wdGlvbnMucGFkIT1udWxsfHx0aGlzLl9vcHRpb25zLnBhZE1pbiE9bnVsbCl7YWo9ZmFsc2V9fWVsc2V7aWYoYXAuYmFyRGlyZWN0aW9uPT0iaG9yaXpvbnRhbCImJih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpKXtpZih0aGlzLl9vcHRpb25zLnBhZCE9bnVsbHx8dGhpcy5fb3B0aW9ucy5wYWRNaW4hPW51bGwpe2FqPWZhbHNlfX19fX19fX1pZihhaiYmdGhpcy5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09PUwuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlciYmYW8ubWluPj0wKXt0aGlzLnBhZE1pbj0xO3RoaXMuZm9yY2VUaWNrQXQwPXRydWV9fTtmdW5jdGlvbiBxKGFoKXtMLmpxcGxvdC5FbGVtQ29udGFpbmVyLmNhbGwodGhpcyk7dGhpcy5zaG93PWZhbHNlO3RoaXMubG9jYXRpb249Im5lIjt0aGlzLmxhYmVscz1bXTt0aGlzLnNob3dMYWJlbHM9dHJ1ZTt0aGlzLnNob3dTd2F0Y2hlcz10cnVlO3RoaXMucGxhY2VtZW50PSJpbnNpZGVHcmlkIjt0aGlzLnhvZmZzZXQ9MDt0aGlzLnlvZmZzZXQ9MDt0aGlzLmJvcmRlcjt0aGlzLmJhY2tncm91bmQ7dGhpcy50ZXh0Q29sb3I7dGhpcy5mb250RmFtaWx5O3RoaXMuZm9udFNpemU7dGhpcy5yb3dTcGFjaW5nPSIwLjVlbSI7dGhpcy5yZW5kZXJlcj1MLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyO3RoaXMucmVuZGVyZXJPcHRpb25zPXt9O3RoaXMucHJlRHJhdz1mYWxzZTt0aGlzLm1hcmdpblRvcD1udWxsO3RoaXMubWFyZ2luUmlnaHQ9bnVsbDt0aGlzLm1hcmdpbkJvdHRvbT1udWxsO3RoaXMubWFyZ2luTGVmdD1udWxsO3RoaXMuZXNjYXBlSHRtbD1mYWxzZTt0aGlzLl9zZXJpZXM9W107TC5leHRlbmQodHJ1ZSx0aGlzLGFoKX1xLnByb3RvdHlwZT1uZXcgTC5qcXBsb3QuRWxlbUNvbnRhaW5lcigpO3EucHJvdG90eXBlLmNvbnN0cnVjdG9yPXE7cS5wcm90b3R5cGUuc2V0T3B0aW9ucz1mdW5jdGlvbihhaCl7TC5leHRlbmQodHJ1ZSx0aGlzLGFoKTtpZih0aGlzLnBsYWNlbWVudD09Imluc2lkZSIpe3RoaXMucGxhY2VtZW50PSJpbnNpZGVHcmlkIn1pZih0aGlzLnhvZmZzZXQ+MCl7aWYodGhpcy5wbGFjZW1lbnQ9PSJpbnNpZGVHcmlkIil7c3dpdGNoKHRoaXMubG9jYXRpb24pe2Nhc2UibnciOmNhc2UidyI6Y2FzZSJzdyI6aWYodGhpcy5tYXJnaW5MZWZ0PT1udWxsKXt0aGlzLm1hcmdpbkxlZnQ9dGhpcy54b2Zmc2V0KyJweCJ9dGhpcy5tYXJnaW5SaWdodD0iMHB4IjticmVhaztjYXNlIm5lIjpjYXNlImUiOmNhc2Uic2UiOmRlZmF1bHQ6aWYodGhpcy5tYXJnaW5SaWdodD09bnVsbCl7dGhpcy5tYXJnaW5SaWdodD10aGlzLnhvZmZzZXQrInB4In10aGlzLm1hcmdpbkxlZnQ9IjBweCI7YnJlYWt9fWVsc2V7aWYodGhpcy5wbGFjZW1lbnQ9PSJvdXRzaWRlIil7c3dpdGNoKHRoaXMubG9jYXRpb24pe2Nhc2UibnciOmNhc2UidyI6Y2FzZSJzdyI6aWYodGhpcy5tYXJnaW5SaWdodD09bnVsbCl7dGhpcy5tYXJnaW5SaWdodD10aGlzLnhvZmZzZXQrInB4In10aGlzLm1hcmdpbkxlZnQ9IjBweCI7YnJlYWs7Y2FzZSJuZSI6Y2FzZSJlIjpjYXNlInNlIjpkZWZhdWx0OmlmKHRoaXMubWFyZ2luTGVmdD09bnVsbCl7dGhpcy5tYXJnaW5MZWZ0PXRoaXMueG9mZnNldCsicHgifXRoaXMubWFyZ2luUmlnaHQ9IjBweCI7YnJlYWt9fX10aGlzLnhvZmZzZXQ9MH1pZih0aGlzLnlvZmZzZXQ+MCl7aWYodGhpcy5wbGFjZW1lbnQ9PSJvdXRzaWRlIil7c3dpdGNoKHRoaXMubG9jYXRpb24pe2Nhc2Uic3ciOmNhc2UicyI6Y2FzZSJzZSI6aWYodGhpcy5tYXJnaW5Ub3A9PW51bGwpe3RoaXMubWFyZ2luVG9wPXRoaXMueW9mZnNldCsicHgifXRoaXMubWFyZ2luQm90dG9tPSIwcHgiO2JyZWFrO2Nhc2UibmUiOmNhc2UibiI6Y2FzZSJudyI6ZGVmYXVsdDppZih0aGlzLm1hcmdpbkJvdHRvbT09bnVsbCl7dGhpcy5tYXJnaW5Cb3R0b209dGhpcy55b2Zmc2V0KyJweCJ9dGhpcy5tYXJnaW5Ub3A9IjBweCI7YnJlYWt9fWVsc2V7aWYodGhpcy5wbGFjZW1lbnQ9PSJpbnNpZGVHcmlkIil7c3dpdGNoKHRoaXMubG9jYXRpb24pe2Nhc2Uic3ciOmNhc2UicyI6Y2FzZSJzZSI6aWYodGhpcy5tYXJnaW5Cb3R0b209PW51bGwpe3RoaXMubWFyZ2luQm90dG9tPXRoaXMueW9mZnNldCsicHgifXRoaXMubWFyZ2luVG9wPSIwcHgiO2JyZWFrO2Nhc2UibmUiOmNhc2UibiI6Y2FzZSJudyI6ZGVmYXVsdDppZih0aGlzLm1hcmdpblRvcD09bnVsbCl7dGhpcy5tYXJnaW5Ub3A9dGhpcy55b2Zmc2V0KyJweCJ9dGhpcy5tYXJnaW5Cb3R0b209IjBweCI7YnJlYWt9fX10aGlzLnlvZmZzZXQ9MH19O3EucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtpZihMLmlzRnVuY3Rpb24odGhpcy5yZW5kZXJlcikpe3RoaXMucmVuZGVyZXI9bmV3IHRoaXMucmVuZGVyZXIoKX10aGlzLnJlbmRlcmVyLmluaXQuY2FsbCh0aGlzLHRoaXMucmVuZGVyZXJPcHRpb25zKX07cS5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbihhaSxhail7Zm9yKHZhciBhaD0wO2FoPEwuanFwbG90LnByZURyYXdMZWdlbmRIb29rcy5sZW5ndGg7YWgrKyl7TC5qcXBsb3QucHJlRHJhd0xlZ2VuZEhvb2tzW2FoXS5jYWxsKHRoaXMsYWkpfXJldHVybiB0aGlzLnJlbmRlcmVyLmRyYXcuY2FsbCh0aGlzLGFpLGFqKX07cS5wcm90b3R5cGUucGFjaz1mdW5jdGlvbihhaCl7dGhpcy5yZW5kZXJlci5wYWNrLmNhbGwodGhpcyxhaCl9O2Z1bmN0aW9uIHkoYWgpe0wuanFwbG90LkVsZW1Db250YWluZXIuY2FsbCh0aGlzKTt0aGlzLnRleHQ9YWg7dGhpcy5zaG93PXRydWU7dGhpcy5mb250RmFtaWx5O3RoaXMuZm9udFNpemU7dGhpcy50ZXh0QWxpZ247dGhpcy50ZXh0Q29sb3I7dGhpcy5yZW5kZXJlcj1MLmpxcGxvdC5EaXZUaXRsZVJlbmRlcmVyO3RoaXMucmVuZGVyZXJPcHRpb25zPXt9O3RoaXMuZXNjYXBlSHRtbD1mYWxzZX15LnByb3RvdHlwZT1uZXcgTC5qcXBsb3QuRWxlbUNvbnRhaW5lcigpO3kucHJvdG90eXBlLmNvbnN0cnVjdG9yPXk7eS5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe2lmKEwuaXNGdW5jdGlvbih0aGlzLnJlbmRlcmVyKSl7dGhpcy5yZW5kZXJlcj1uZXcgdGhpcy5yZW5kZXJlcigpfXRoaXMucmVuZGVyZXIuaW5pdC5jYWxsKHRoaXMsdGhpcy5yZW5kZXJlck9wdGlvbnMpfTt5LnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKGFoKXtyZXR1cm4gdGhpcy5yZW5kZXJlci5kcmF3LmNhbGwodGhpcyxhaCl9O3kucHJvdG90eXBlLnBhY2s9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVyLnBhY2suY2FsbCh0aGlzKX07ZnVuY3Rpb24gUyhhaCl7YWg9YWh8fHt9O0wuanFwbG90LkVsZW1Db250YWluZXIuY2FsbCh0aGlzKTt0aGlzLnNob3c9dHJ1ZTt0aGlzLnhheGlzPSJ4YXhpcyI7dGhpcy5feGF4aXM7dGhpcy55YXhpcz0ieWF4aXMiO3RoaXMuX3lheGlzO3RoaXMuZ3JpZEJvcmRlcldpZHRoPTI7dGhpcy5yZW5kZXJlcj1MLmpxcGxvdC5MaW5lUmVuZGVyZXI7dGhpcy5yZW5kZXJlck9wdGlvbnM9e307dGhpcy5kYXRhPVtdO3RoaXMuZ3JpZERhdGE9W107dGhpcy5sYWJlbD0iIjt0aGlzLnNob3dMYWJlbD10cnVlO3RoaXMuY29sb3I7dGhpcy5uZWdhdGl2ZUNvbG9yO3RoaXMubGluZVdpZHRoPTIuNTt0aGlzLmxpbmVKb2luPSJyb3VuZCI7dGhpcy5saW5lQ2FwPSJyb3VuZCI7dGhpcy5saW5lUGF0dGVybj0ic29saWQiO3RoaXMuc2hhZG93PXRydWU7dGhpcy5zaGFkb3dBbmdsZT00NTt0aGlzLnNoYWRvd09mZnNldD0xLjI1O3RoaXMuc2hhZG93RGVwdGg9Mzt0aGlzLnNoYWRvd0FscGhhPSIwLjEiO3RoaXMuYnJlYWtPbk51bGw9ZmFsc2U7dGhpcy5tYXJrZXJSZW5kZXJlcj1MLmpxcGxvdC5NYXJrZXJSZW5kZXJlcjt0aGlzLm1hcmtlck9wdGlvbnM9e307dGhpcy5zaG93TGluZT10cnVlO3RoaXMuc2hvd01hcmtlcj10cnVlO3RoaXMuaW5kZXg7dGhpcy5maWxsPWZhbHNlO3RoaXMuZmlsbENvbG9yO3RoaXMuZmlsbEFscGhhO3RoaXMuZmlsbEFuZFN0cm9rZT1mYWxzZTt0aGlzLmRpc2FibGVTdGFjaz1mYWxzZTt0aGlzLl9zdGFjaz1mYWxzZTt0aGlzLm5laWdoYm9yVGhyZXNob2xkPTQ7dGhpcy5maWxsVG9aZXJvPWZhbHNlO3RoaXMuZmlsbFRvVmFsdWU9MDt0aGlzLmZpbGxBeGlzPSJ5Ijt0aGlzLnVzZU5lZ2F0aXZlQ29sb3JzPXRydWU7dGhpcy5fc3RhY2tEYXRhPVtdO3RoaXMuX3Bsb3REYXRhPVtdO3RoaXMuX3Bsb3RWYWx1ZXM9e3g6W10seTpbXX07dGhpcy5faW50ZXJ2YWxzPXt4Ont9LHk6e319O3RoaXMuX3ByZXZQbG90RGF0YT1bXTt0aGlzLl9wcmV2R3JpZERhdGE9W107dGhpcy5fc3RhY2tBeGlzPSJ5Ijt0aGlzLl9wcmltYXJ5QXhpcz0iX3hheGlzIjt0aGlzLmNhbnZhcz1uZXcgTC5qcXBsb3QuR2VuZXJpY0NhbnZhcygpO3RoaXMuc2hhZG93Q2FudmFzPW5ldyBMLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7dGhpcy5wbHVnaW5zPXt9O3RoaXMuX3N1bXk9MDt0aGlzLl9zdW14PTA7dGhpcy5fdHlwZT0iIn1TLnByb3RvdHlwZT1uZXcgTC5qcXBsb3QuRWxlbUNvbnRhaW5lcigpO1MucHJvdG90eXBlLmNvbnN0cnVjdG9yPVM7Uy5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihhayxhbyxhbSl7dGhpcy5pbmRleD1hazt0aGlzLmdyaWRCb3JkZXJXaWR0aD1hbzt2YXIgYW49dGhpcy5kYXRhO3ZhciBhaj1bXSxhbCxhaDtmb3IoYWw9MCxhaD1hbi5sZW5ndGg7YWw8YWg7YWwrKyl7aWYoIXRoaXMuYnJlYWtPbk51bGwpe2lmKGFuW2FsXT09bnVsbHx8YW5bYWxdWzBdPT1udWxsfHxhblthbF1bMV09PW51bGwpe2NvbnRpbnVlfWVsc2V7YWoucHVzaChhblthbF0pfX1lbHNle2FqLnB1c2goYW5bYWxdKX19dGhpcy5kYXRhPWFqO2lmKCF0aGlzLmNvbG9yKXt0aGlzLmNvbG9yPWFtLmNvbG9yR2VuZXJhdG9yLmdldCh0aGlzLmluZGV4KX1pZighdGhpcy5uZWdhdGl2ZUNvbG9yKXt0aGlzLm5lZ2F0aXZlQ29sb3I9YW0ubmVnYXRpdmVDb2xvckdlbmVyYXRvci5nZXQodGhpcy5pbmRleCl9aWYoIXRoaXMuZmlsbENvbG9yKXt0aGlzLmZpbGxDb2xvcj10aGlzLmNvbG9yfWlmKHRoaXMuZmlsbEFscGhhKXt2YXIgYWk9TC5qcXBsb3Qubm9ybWFsaXplMnJnYih0aGlzLmZpbGxDb2xvcik7dmFyIGFpPUwuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyhhaSk7dGhpcy5maWxsQ29sb3I9InJnYmEoIithaVswXSsiLCIrYWlbMV0rIiwiK2FpWzJdKyIsIit0aGlzLmZpbGxBbHBoYSsiKSJ9aWYoTC5pc0Z1bmN0aW9uKHRoaXMucmVuZGVyZXIpKXt0aGlzLnJlbmRlcmVyPW5ldyB0aGlzLnJlbmRlcmVyKCl9dGhpcy5yZW5kZXJlci5pbml0LmNhbGwodGhpcyx0aGlzLnJlbmRlcmVyT3B0aW9ucyxhbSk7dGhpcy5tYXJrZXJSZW5kZXJlcj1uZXcgdGhpcy5tYXJrZXJSZW5kZXJlcigpO2lmKCF0aGlzLm1hcmtlck9wdGlvbnMuY29sb3Ipe3RoaXMubWFya2VyT3B0aW9ucy5jb2xvcj10aGlzLmNvbG9yfWlmKHRoaXMubWFya2VyT3B0aW9ucy5zaG93PT1udWxsKXt0aGlzLm1hcmtlck9wdGlvbnMuc2hvdz10aGlzLnNob3dNYXJrZXJ9dGhpcy5zaG93TWFya2VyPXRoaXMubWFya2VyT3B0aW9ucy5zaG93O3RoaXMubWFya2VyUmVuZGVyZXIuaW5pdCh0aGlzLm1hcmtlck9wdGlvbnMpfTtTLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKGFuLGFrLGFtKXt2YXIgYWk9KGFrPT11KT97fTphazthbj0oYW49PXUpP3RoaXMuY2FudmFzLl9jdHg6YW47dmFyIGFoLGFsLGFqO2ZvcihhaD0wO2FoPEwuanFwbG90LnByZURyYXdTZXJpZXNIb29rcy5sZW5ndGg7YWgrKyl7TC5qcXBsb3QucHJlRHJhd1Nlcmllc0hvb2tzW2FoXS5jYWxsKHRoaXMsYW4sYWkpfWlmKHRoaXMuc2hvdyl7dGhpcy5yZW5kZXJlci5zZXRHcmlkRGF0YS5jYWxsKHRoaXMsYW0pO2lmKCFhaS5wcmV2ZW50SnFQbG90U2VyaWVzRHJhd1RyaWdnZXIpe0woYW4uY2FudmFzKS50cmlnZ2VyKCJqcXBsb3RTZXJpZXNEcmF3IixbdGhpcy5kYXRhLHRoaXMuZ3JpZERhdGFdKX1hbD1bXTtpZihhaS5kYXRhKXthbD1haS5kYXRhfWVsc2V7aWYoIXRoaXMuX3N0YWNrKXthbD10aGlzLmRhdGF9ZWxzZXthbD10aGlzLl9wbG90RGF0YX19YWo9YWkuZ3JpZERhdGF8fHRoaXMucmVuZGVyZXIubWFrZUdyaWREYXRhLmNhbGwodGhpcyxhbCxhbSk7aWYodGhpcy5fdHlwZT09PSJsaW5lIiYmdGhpcy5yZW5kZXJlci5zbW9vdGgmJnRoaXMucmVuZGVyZXIuX3Ntb290aGVkRGF0YS5sZW5ndGgpe2FqPXRoaXMucmVuZGVyZXIuX3Ntb290aGVkRGF0YX10aGlzLnJlbmRlcmVyLmRyYXcuY2FsbCh0aGlzLGFuLGFqLGFpLGFtKX1mb3IoYWg9MDthaDxMLmpxcGxvdC5wb3N0RHJhd1Nlcmllc0hvb2tzLmxlbmd0aDthaCsrKXtMLmpxcGxvdC5wb3N0RHJhd1Nlcmllc0hvb2tzW2FoXS5jYWxsKHRoaXMsYW4sYWksYW0pfWFuPWFrPWFtPWFoPWFsPWFqPW51bGx9O1MucHJvdG90eXBlLmRyYXdTaGFkb3c9ZnVuY3Rpb24oYW4sYWssYW0pe3ZhciBhaT0oYWs9PXUpP3t9OmFrO2FuPShhbj09dSk/dGhpcy5zaGFkb3dDYW52YXMuX2N0eDphbjt2YXIgYWgsYWwsYWo7Zm9yKGFoPTA7YWg8TC5qcXBsb3QucHJlRHJhd1Nlcmllc1NoYWRvd0hvb2tzLmxlbmd0aDthaCsrKXtMLmpxcGxvdC5wcmVEcmF3U2VyaWVzU2hhZG93SG9va3NbYWhdLmNhbGwodGhpcyxhbixhaSl9aWYodGhpcy5zaGFkb3cpe3RoaXMucmVuZGVyZXIuc2V0R3JpZERhdGEuY2FsbCh0aGlzLGFtKTthbD1bXTtpZihhaS5kYXRhKXthbD1haS5kYXRhfWVsc2V7aWYoIXRoaXMuX3N0YWNrKXthbD10aGlzLmRhdGF9ZWxzZXthbD10aGlzLl9wbG90RGF0YX19YWo9YWkuZ3JpZERhdGF8fHRoaXMucmVuZGVyZXIubWFrZUdyaWREYXRhLmNhbGwodGhpcyxhbCxhbSk7dGhpcy5yZW5kZXJlci5kcmF3U2hhZG93LmNhbGwodGhpcyxhbixhaixhaSxhbSl9Zm9yKGFoPTA7YWg8TC5qcXBsb3QucG9zdERyYXdTZXJpZXNTaGFkb3dIb29rcy5sZW5ndGg7YWgrKyl7TC5qcXBsb3QucG9zdERyYXdTZXJpZXNTaGFkb3dIb29rc1thaF0uY2FsbCh0aGlzLGFuLGFpKX1hbj1haz1hbT1haD1hbD1haj1udWxsfTtTLnByb3RvdHlwZS50b2dnbGVEaXNwbGF5PWZ1bmN0aW9uKGFpLGFrKXt2YXIgYWgsYWo7aWYoYWkuZGF0YS5zZXJpZXMpe2FoPWFpLmRhdGEuc2VyaWVzfWVsc2V7YWg9dGhpc31pZihhaS5kYXRhLnNwZWVkKXthaj1haS5kYXRhLnNwZWVkfWlmKGFqKXtpZihhaC5jYW52YXMuX2VsZW0uaXMoIjpoaWRkZW4iKXx8IWFoLnNob3cpe2FoLnNob3c9dHJ1ZTthaC5jYW52YXMuX2VsZW0ucmVtb3ZlQ2xhc3MoImpxcGxvdC1zZXJpZXMtaGlkZGVuIik7aWYoYWguc2hhZG93Q2FudmFzLl9lbGVtKXthaC5zaGFkb3dDYW52YXMuX2VsZW0uZmFkZUluKGFqKX1haC5jYW52YXMuX2VsZW0uZmFkZUluKGFqLGFrKTthaC5jYW52YXMuX2VsZW0ubmV4dEFsbCgiLmpxcGxvdC1wb2ludC1sYWJlbC5qcXBsb3Qtc2VyaWVzLSIrYWguaW5kZXgpLmZhZGVJbihhail9ZWxzZXthaC5zaG93PWZhbHNlO2FoLmNhbnZhcy5fZWxlbS5hZGRDbGFzcygianFwbG90LXNlcmllcy1oaWRkZW4iKTtpZihhaC5zaGFkb3dDYW52YXMuX2VsZW0pe2FoLnNoYWRvd0NhbnZhcy5fZWxlbS5mYWRlT3V0KGFqKX1haC5jYW52YXMuX2VsZW0uZmFkZU91dChhaixhayk7YWguY2FudmFzLl9lbGVtLm5leHRBbGwoIi5qcXBsb3QtcG9pbnQtbGFiZWwuanFwbG90LXNlcmllcy0iK2FoLmluZGV4KS5mYWRlT3V0KGFqKX19ZWxzZXtpZihhaC5jYW52YXMuX2VsZW0uaXMoIjpoaWRkZW4iKXx8IWFoLnNob3cpe2FoLnNob3c9dHJ1ZTthaC5jYW52YXMuX2VsZW0ucmVtb3ZlQ2xhc3MoImpxcGxvdC1zZXJpZXMtaGlkZGVuIik7aWYoYWguc2hhZG93Q2FudmFzLl9lbGVtKXthaC5zaGFkb3dDYW52YXMuX2VsZW0uc2hvdygpfWFoLmNhbnZhcy5fZWxlbS5zaG93KDAsYWspO2FoLmNhbnZhcy5fZWxlbS5uZXh0QWxsKCIuanFwbG90LXBvaW50LWxhYmVsLmpxcGxvdC1zZXJpZXMtIithaC5pbmRleCkuc2hvdygpfWVsc2V7YWguc2hvdz1mYWxzZTthaC5jYW52YXMuX2VsZW0uYWRkQ2xhc3MoImpxcGxvdC1zZXJpZXMtaGlkZGVuIik7aWYoYWguc2hhZG93Q2FudmFzLl9lbGVtKXthaC5zaGFkb3dDYW52YXMuX2VsZW0uaGlkZSgpfWFoLmNhbnZhcy5fZWxlbS5oaWRlKDAsYWspO2FoLmNhbnZhcy5fZWxlbS5uZXh0QWxsKCIuanFwbG90LXBvaW50LWxhYmVsLmpxcGxvdC1zZXJpZXMtIithaC5pbmRleCkuaGlkZSgpfX19O2Z1bmN0aW9uIE0oKXtMLmpxcGxvdC5FbGVtQ29udGFpbmVyLmNhbGwodGhpcyk7dGhpcy5kcmF3R3JpZGxpbmVzPXRydWU7dGhpcy5ncmlkTGluZUNvbG9yPSIjY2NjY2NjIjt0aGlzLmdyaWRMaW5lV2lkdGg9MTt0aGlzLmJhY2tncm91bmQ9IiNmZmZkZjYiO3RoaXMuYm9yZGVyQ29sb3I9IiM5OTk5OTkiO3RoaXMuYm9yZGVyV2lkdGg9Mjt0aGlzLmRyYXdCb3JkZXI9dHJ1ZTt0aGlzLnNoYWRvdz10cnVlO3RoaXMuc2hhZG93QW5nbGU9NDU7dGhpcy5zaGFkb3dPZmZzZXQ9MS41O3RoaXMuc2hhZG93V2lkdGg9Mzt0aGlzLnNoYWRvd0RlcHRoPTM7dGhpcy5zaGFkb3dDb2xvcj1udWxsO3RoaXMuc2hhZG93QWxwaGE9IjAuMDciO3RoaXMuX2xlZnQ7dGhpcy5fdG9wO3RoaXMuX3JpZ2h0O3RoaXMuX2JvdHRvbTt0aGlzLl93aWR0aDt0aGlzLl9oZWlnaHQ7dGhpcy5fYXhlcz1bXTt0aGlzLnJlbmRlcmVyPUwuanFwbG90LkNhbnZhc0dyaWRSZW5kZXJlcjt0aGlzLnJlbmRlcmVyT3B0aW9ucz17fTt0aGlzLl9vZmZzZXRzPXt0b3A6bnVsbCxib3R0b206bnVsbCxsZWZ0Om51bGwscmlnaHQ6bnVsbH19TS5wcm90b3R5cGU9bmV3IEwuanFwbG90LkVsZW1Db250YWluZXIoKTtNLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1NO00ucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtpZihMLmlzRnVuY3Rpb24odGhpcy5yZW5kZXJlcikpe3RoaXMucmVuZGVyZXI9bmV3IHRoaXMucmVuZGVyZXIoKX10aGlzLnJlbmRlcmVyLmluaXQuY2FsbCh0aGlzLHRoaXMucmVuZGVyZXJPcHRpb25zKX07TS5wcm90b3R5cGUuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihhaCxhaSl7dGhpcy5fb2Zmc2V0cz1haDtyZXR1cm4gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50LmNhbGwodGhpcyxhaSl9O00ucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVyLmRyYXcuY2FsbCh0aGlzKX07TC5qcXBsb3QuR2VuZXJpY0NhbnZhcz1mdW5jdGlvbigpe0wuanFwbG90LkVsZW1Db250YWluZXIuY2FsbCh0aGlzKTt0aGlzLl9jdHh9O0wuanFwbG90LkdlbmVyaWNDYW52YXMucHJvdG90eXBlPW5ldyBMLmpxcGxvdC5FbGVtQ29udGFpbmVyKCk7TC5qcXBsb3QuR2VuZXJpY0NhbnZhcy5wcm90b3R5cGUuY29uc3RydWN0b3I9TC5qcXBsb3QuR2VuZXJpY0NhbnZhcztMLmpxcGxvdC5HZW5lcmljQ2FudmFzLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGFsLGFqLGFpLGFtKXt0aGlzLl9vZmZzZXRzPWFsO3ZhciBhaD0ianFwbG90IjtpZihhaiE9dSl7YWg9YWp9dmFyIGFrO2FrPWFtLmNhbnZhc01hbmFnZXIuZ2V0Q2FudmFzKCk7aWYoYWkhPW51bGwpe3RoaXMuX3Bsb3REaW1lbnNpb25zPWFpfWFrLndpZHRoPXRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoLXRoaXMuX29mZnNldHMubGVmdC10aGlzLl9vZmZzZXRzLnJpZ2h0O2FrLmhlaWdodD10aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQtdGhpcy5fb2Zmc2V0cy50b3AtdGhpcy5fb2Zmc2V0cy5ib3R0b207dGhpcy5fZWxlbT1MKGFrKTt0aGlzLl9lbGVtLmNzcyh7cG9zaXRpb246ImFic29sdXRlIixsZWZ0OnRoaXMuX29mZnNldHMubGVmdCx0b3A6dGhpcy5fb2Zmc2V0cy50b3B9KTt0aGlzLl9lbGVtLmFkZENsYXNzKGFoKTthaz1hbS5jYW52YXNNYW5hZ2VyLmluaXRDYW52YXMoYWspO2FrPW51bGw7cmV0dXJuIHRoaXMuX2VsZW19O0wuanFwbG90LkdlbmVyaWNDYW52YXMucHJvdG90eXBlLnNldENvbnRleHQ9ZnVuY3Rpb24oKXt0aGlzLl9jdHg9dGhpcy5fZWxlbS5nZXQoMCkuZ2V0Q29udGV4dCgiMmQiKTtyZXR1cm4gdGhpcy5fY3R4fTtMLmpxcGxvdC5HZW5lcmljQ2FudmFzLnByb3RvdHlwZS5yZXNldENhbnZhcz1mdW5jdGlvbigpe2lmKHRoaXMuX2VsZW0pe2lmKEwuanFwbG90LnVzZV9leGNhbnZhcyYmd2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci51bmluaXRFbGVtZW50IT09dSl7d2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci51bmluaXRFbGVtZW50KHRoaXMuX2VsZW0uZ2V0KDApKX10aGlzLl9lbGVtLmVtcHR5Rm9yY2UoKX10aGlzLl9jdHg9bnVsbH07TC5qcXBsb3QuSG9va3NNYW5hZ2VyPWZ1bmN0aW9uKCl7dGhpcy5ob29rcz1bXTt0aGlzLmFyZ3M9W119O0wuanFwbG90Lkhvb2tzTWFuYWdlci5wcm90b3R5cGUuYWRkT25jZT1mdW5jdGlvbihhayxhaSl7YWk9YWl8fFtdO3ZhciBhbD1mYWxzZTtmb3IodmFyIGFqPTAsYWg9dGhpcy5ob29rcy5sZW5ndGg7YWo8YWg7YWorKyl7aWYodGhpcy5ob29rc1thal09PWFrKXthbD10cnVlfX1pZighYWwpe3RoaXMuaG9va3MucHVzaChhayk7dGhpcy5hcmdzLnB1c2goYWkpfX07TC5qcXBsb3QuSG9va3NNYW5hZ2VyLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYWksYWgpe2FoPWFofHxbXTt0aGlzLmhvb2tzLnB1c2goYWkpO3RoaXMuYXJncy5wdXNoKGFoKX07TC5qcXBsb3QuRXZlbnRMaXN0ZW5lck1hbmFnZXI9ZnVuY3Rpb24oKXt0aGlzLmhvb2tzPVtdfTtMLmpxcGxvdC5FdmVudExpc3RlbmVyTWFuYWdlci5wcm90b3R5cGUuYWRkT25jZT1mdW5jdGlvbihhbCxhayl7dmFyIGFtPWZhbHNlLGFqLGFpO2Zvcih2YXIgYWk9MCxhaD10aGlzLmhvb2tzLmxlbmd0aDthaTxhaDthaSsrKXthaj10aGlzLmhvb2tzW2FpXTtpZihhalswXT09YWwmJmFqWzFdPT1hayl7YW09dHJ1ZX19aWYoIWFtKXt0aGlzLmhvb2tzLnB1c2goW2FsLGFrXSl9fTtMLmpxcGxvdC5FdmVudExpc3RlbmVyTWFuYWdlci5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGFpLGFoKXt0aGlzLmhvb2tzLnB1c2goW2FpLGFoXSl9O3ZhciBVPVsieU1pZEF4aXMiLCJ4YXhpcyIsInlheGlzIiwieDJheGlzIiwieTJheGlzIiwieTNheGlzIiwieTRheGlzIiwieTVheGlzIiwieTZheGlzIiwieTdheGlzIiwieThheGlzIiwieTlheGlzIl07ZnVuY3Rpb24gUigpe3RoaXMuYW5pbWF0ZT1mYWxzZTt0aGlzLmFuaW1hdGVSZXBsb3Q9ZmFsc2U7dGhpcy5heGVzPXt4YXhpczpuZXcgdygieGF4aXMiKSx5YXhpczpuZXcgdygieWF4aXMiKSx4MmF4aXM6bmV3IHcoIngyYXhpcyIpLHkyYXhpczpuZXcgdygieTJheGlzIikseTNheGlzOm5ldyB3KCJ5M2F4aXMiKSx5NGF4aXM6bmV3IHcoInk0YXhpcyIpLHk1YXhpczpuZXcgdygieTVheGlzIikseTZheGlzOm5ldyB3KCJ5NmF4aXMiKSx5N2F4aXM6bmV3IHcoInk3YXhpcyIpLHk4YXhpczpuZXcgdygieThheGlzIikseTlheGlzOm5ldyB3KCJ5OWF4aXMiKSx5TWlkQXhpczpuZXcgdygieU1pZEF4aXMiKX07dGhpcy5iYXNlQ2FudmFzPW5ldyBMLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7dGhpcy5jYXB0dXJlUmlnaHRDbGljaz1mYWxzZTt0aGlzLmRhdGE9W107dGhpcy5kYXRhUmVuZGVyZXI7dGhpcy5kYXRhUmVuZGVyZXJPcHRpb25zO3RoaXMuZGVmYXVsdHM9e2F4ZXNEZWZhdWx0czp7fSxheGVzOnt4YXhpczp7fSx5YXhpczp7fSx4MmF4aXM6e30seTJheGlzOnt9LHkzYXhpczp7fSx5NGF4aXM6e30seTVheGlzOnt9LHk2YXhpczp7fSx5N2F4aXM6e30seThheGlzOnt9LHk5YXhpczp7fSx5TWlkQXhpczp7fX0sc2VyaWVzRGVmYXVsdHM6e30sc2VyaWVzOltdfTt0aGlzLmRlZmF1bHRBeGlzU3RhcnQ9MTt0aGlzLmRyYXdJZkhpZGRlbj1mYWxzZTt0aGlzLmV2ZW50Q2FudmFzPW5ldyBMLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7dGhpcy5maWxsQmV0d2Vlbj17c2VyaWVzMTpudWxsLHNlcmllczI6bnVsbCxjb2xvcjpudWxsLGJhc2VTZXJpZXM6MCxmaWxsOnRydWV9O3RoaXMuZm9udEZhbWlseTt0aGlzLmZvbnRTaXplO3RoaXMuZ3JpZD1uZXcgTSgpO3RoaXMubGVnZW5kPW5ldyBxKCk7dGhpcy5ub0RhdGFJbmRpY2F0b3I9e3Nob3c6ZmFsc2UsaW5kaWNhdG9yOiJMb2FkaW5nIERhdGEuLi4iLGF4ZXM6e3hheGlzOnttaW46MCxtYXg6MTAsdGlja0ludGVydmFsOjIsc2hvdzp0cnVlfSx5YXhpczp7bWluOjAsbWF4OjEyLHRpY2tJbnRlcnZhbDozLHNob3c6dHJ1ZX19fTt0aGlzLm5lZ2F0aXZlU2VyaWVzQ29sb3JzPUwuanFwbG90LmNvbmZpZy5kZWZhdWx0TmVnYXRpdmVDb2xvcnM7dGhpcy5vcHRpb25zPXt9O3RoaXMucHJldmlvdXNTZXJpZXNTdGFjaz1bXTt0aGlzLnBsdWdpbnM9e307dGhpcy5zZXJpZXM9W107dGhpcy5zZXJpZXNTdGFjaz1bXTt0aGlzLnNlcmllc0NvbG9ycz1MLmpxcGxvdC5jb25maWcuZGVmYXVsdENvbG9yczt0aGlzLnNvcnREYXRhPXRydWU7dGhpcy5zdGFja1Nlcmllcz1mYWxzZTt0aGlzLnN5bmNYVGlja3M9dHJ1ZTt0aGlzLnN5bmNZVGlja3M9dHJ1ZTt0aGlzLnRhcmdldD1udWxsO3RoaXMudGFyZ2V0SWQ9bnVsbDt0aGlzLnRleHRDb2xvcjt0aGlzLnRpdGxlPW5ldyB5KCk7dGhpcy5fZHJhd0NvdW50PTA7dGhpcy5fc3VteT0wO3RoaXMuX3N1bXg9MDt0aGlzLl9zdGFja0RhdGE9W107dGhpcy5fcGxvdERhdGE9W107dGhpcy5fd2lkdGg9bnVsbDt0aGlzLl9oZWlnaHQ9bnVsbDt0aGlzLl9wbG90RGltZW5zaW9ucz17aGVpZ2h0Om51bGwsd2lkdGg6bnVsbH07dGhpcy5fZ3JpZFBhZGRpbmc9e3RvcDpudWxsLHJpZ2h0Om51bGwsYm90dG9tOm51bGwsbGVmdDpudWxsfTt0aGlzLl9kZWZhdWx0R3JpZFBhZGRpbmc9e3RvcDoxMCxyaWdodDoxMCxib3R0b206MjMsbGVmdDoxMH07dGhpcy5fYWRkRG9tUmVmZXJlbmNlPUwuanFwbG90LmNvbmZpZy5hZGREb21SZWZlcmVuY2U7dGhpcy5wcmVJbml0SG9va3M9bmV3IEwuanFwbG90Lkhvb2tzTWFuYWdlcigpO3RoaXMucG9zdEluaXRIb29rcz1uZXcgTC5qcXBsb3QuSG9va3NNYW5hZ2VyKCk7dGhpcy5wcmVQYXJzZU9wdGlvbnNIb29rcz1uZXcgTC5qcXBsb3QuSG9va3NNYW5hZ2VyKCk7dGhpcy5wb3N0UGFyc2VPcHRpb25zSG9va3M9bmV3IEwuanFwbG90Lkhvb2tzTWFuYWdlcigpO3RoaXMucHJlRHJhd0hvb2tzPW5ldyBMLmpxcGxvdC5Ib29rc01hbmFnZXIoKTt0aGlzLnBvc3REcmF3SG9va3M9bmV3IEwuanFwbG90Lkhvb2tzTWFuYWdlcigpO3RoaXMucHJlRHJhd1Nlcmllc0hvb2tzPW5ldyBMLmpxcGxvdC5Ib29rc01hbmFnZXIoKTt0aGlzLnBvc3REcmF3U2VyaWVzSG9va3M9bmV3IEwuanFwbG90Lkhvb2tzTWFuYWdlcigpO3RoaXMucHJlRHJhd0xlZ2VuZEhvb2tzPW5ldyBMLmpxcGxvdC5Ib29rc01hbmFnZXIoKTt0aGlzLmFkZExlZ2VuZFJvd0hvb2tzPW5ldyBMLmpxcGxvdC5Ib29rc01hbmFnZXIoKTt0aGlzLnByZVNlcmllc0luaXRIb29rcz1uZXcgTC5qcXBsb3QuSG9va3NNYW5hZ2VyKCk7dGhpcy5wb3N0U2VyaWVzSW5pdEhvb2tzPW5ldyBMLmpxcGxvdC5Ib29rc01hbmFnZXIoKTt0aGlzLnByZVBhcnNlU2VyaWVzT3B0aW9uc0hvb2tzPW5ldyBMLmpxcGxvdC5Ib29rc01hbmFnZXIoKTt0aGlzLnBvc3RQYXJzZVNlcmllc09wdGlvbnNIb29rcz1uZXcgTC5qcXBsb3QuSG9va3NNYW5hZ2VyKCk7dGhpcy5ldmVudExpc3RlbmVySG9va3M9bmV3IEwuanFwbG90LkV2ZW50TGlzdGVuZXJNYW5hZ2VyKCk7dGhpcy5wcmVEcmF3U2VyaWVzU2hhZG93SG9va3M9bmV3IEwuanFwbG90Lkhvb2tzTWFuYWdlcigpO3RoaXMucG9zdERyYXdTZXJpZXNTaGFkb3dIb29rcz1uZXcgTC5qcXBsb3QuSG9va3NNYW5hZ2VyKCk7dGhpcy5jb2xvckdlbmVyYXRvcj1uZXcgTC5qcXBsb3QuQ29sb3JHZW5lcmF0b3IoKTt0aGlzLm5lZ2F0aXZlQ29sb3JHZW5lcmF0b3I9bmV3IEwuanFwbG90LkNvbG9yR2VuZXJhdG9yKCk7dGhpcy5jYW52YXNNYW5hZ2VyPW5ldyBMLmpxcGxvdC5DYW52YXNNYW5hZ2VyKCk7dGhpcy50aGVtZUVuZ2luZT1uZXcgTC5qcXBsb3QuVGhlbWVFbmdpbmUoKTt2YXIgYWo9MDt0aGlzLmluaXQ9ZnVuY3Rpb24oYXYsYXIsYXkpe2F5PWF5fHx7fTtmb3IodmFyIGF0PTA7YXQ8TC5qcXBsb3QucHJlSW5pdEhvb2tzLmxlbmd0aDthdCsrKXtMLmpxcGxvdC5wcmVJbml0SG9va3NbYXRdLmNhbGwodGhpcyxhdixhcixheSl9Zm9yKHZhciBhdD0wO2F0PHRoaXMucHJlSW5pdEhvb2tzLmhvb2tzLmxlbmd0aDthdCsrKXt0aGlzLnByZUluaXRIb29rcy5ob29rc1thdF0uY2FsbCh0aGlzLGF2LGFyLGF5KX10aGlzLnRhcmdldElkPSIjIithdjt0aGlzLnRhcmdldD1MKCIjIithdik7aWYodGhpcy5fYWRkRG9tUmVmZXJlbmNlKXt0aGlzLnRhcmdldC5kYXRhKCJqcXBsb3QiLHRoaXMpfXRoaXMudGFyZ2V0LnJlbW92ZUNsYXNzKCJqcXBsb3QtZXJyb3IiKTtpZighdGhpcy50YXJnZXQuZ2V0KDApKXt0aHJvdyBuZXcgRXJyb3IoIk5vIHBsb3QgdGFyZ2V0IHNwZWNpZmllZCIpfWlmKHRoaXMudGFyZ2V0LmNzcygicG9zaXRpb24iKT09InN0YXRpYyIpe3RoaXMudGFyZ2V0LmNzcygicG9zaXRpb24iLCJyZWxhdGl2ZSIpfWlmKCF0aGlzLnRhcmdldC5oYXNDbGFzcygianFwbG90LXRhcmdldCIpKXt0aGlzLnRhcmdldC5hZGRDbGFzcygianFwbG90LXRhcmdldCIpfWlmKCF0aGlzLnRhcmdldC5oZWlnaHQoKSl7dmFyIGF1O2lmKGF5JiZheS5oZWlnaHQpe2F1PXBhcnNlSW50KGF5LmhlaWdodCwxMCl9ZWxzZXtpZih0aGlzLnRhcmdldC5hdHRyKCJkYXRhLWhlaWdodCIpKXthdT1wYXJzZUludCh0aGlzLnRhcmdldC5hdHRyKCJkYXRhLWhlaWdodCIpLDEwKX1lbHNle2F1PXBhcnNlSW50KEwuanFwbG90LmNvbmZpZy5kZWZhdWx0SGVpZ2h0LDEwKX19dGhpcy5faGVpZ2h0PWF1O3RoaXMudGFyZ2V0LmNzcygiaGVpZ2h0IixhdSsicHgiKX1lbHNle3RoaXMuX2hlaWdodD1hdT10aGlzLnRhcmdldC5oZWlnaHQoKX1pZighdGhpcy50YXJnZXQud2lkdGgoKSl7dmFyIGF3O2lmKGF5JiZheS53aWR0aCl7YXc9cGFyc2VJbnQoYXkud2lkdGgsMTApfWVsc2V7aWYodGhpcy50YXJnZXQuYXR0cigiZGF0YS13aWR0aCIpKXthdz1wYXJzZUludCh0aGlzLnRhcmdldC5hdHRyKCJkYXRhLXdpZHRoIiksMTApfWVsc2V7YXc9cGFyc2VJbnQoTC5qcXBsb3QuY29uZmlnLmRlZmF1bHRXaWR0aCwxMCl9fXRoaXMuX3dpZHRoPWF3O3RoaXMudGFyZ2V0LmNzcygid2lkdGgiLGF3KyJweCIpfWVsc2V7dGhpcy5fd2lkdGg9YXc9dGhpcy50YXJnZXQud2lkdGgoKX1mb3IodmFyIGF0PTAsYXA9VS5sZW5ndGg7YXQ8YXA7YXQrKyl7dGhpcy5heGVzW1VbYXRdXT1uZXcgdyhVW2F0XSl9dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0PXRoaXMuX2hlaWdodDt0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aD10aGlzLl93aWR0aDt0aGlzLmdyaWQuX3Bsb3REaW1lbnNpb25zPXRoaXMuX3Bsb3REaW1lbnNpb25zO3RoaXMudGl0bGUuX3Bsb3REaW1lbnNpb25zPXRoaXMuX3Bsb3REaW1lbnNpb25zO3RoaXMuYmFzZUNhbnZhcy5fcGxvdERpbWVuc2lvbnM9dGhpcy5fcGxvdERpbWVuc2lvbnM7dGhpcy5ldmVudENhbnZhcy5fcGxvdERpbWVuc2lvbnM9dGhpcy5fcGxvdERpbWVuc2lvbnM7dGhpcy5sZWdlbmQuX3Bsb3REaW1lbnNpb25zPXRoaXMuX3Bsb3REaW1lbnNpb25zO2lmKHRoaXMuX2hlaWdodDw9MHx8dGhpcy5fd2lkdGg8PTB8fCF0aGlzLl9oZWlnaHR8fCF0aGlzLl93aWR0aCl7dGhyb3cgbmV3IEVycm9yKCJDYW52YXMgZGltZW5zaW9uIG5vdCBzZXQiKX1pZihheS5kYXRhUmVuZGVyZXImJkwuaXNGdW5jdGlvbihheS5kYXRhUmVuZGVyZXIpKXtpZihheS5kYXRhUmVuZGVyZXJPcHRpb25zKXt0aGlzLmRhdGFSZW5kZXJlck9wdGlvbnM9YXkuZGF0YVJlbmRlcmVyT3B0aW9uc310aGlzLmRhdGFSZW5kZXJlcj1heS5kYXRhUmVuZGVyZXI7YXI9dGhpcy5kYXRhUmVuZGVyZXIoYXIsdGhpcyx0aGlzLmRhdGFSZW5kZXJlck9wdGlvbnMpfWlmKGF5Lm5vRGF0YUluZGljYXRvciYmTC5pc1BsYWluT2JqZWN0KGF5Lm5vRGF0YUluZGljYXRvcikpe0wuZXh0ZW5kKHRydWUsdGhpcy5ub0RhdGFJbmRpY2F0b3IsYXkubm9EYXRhSW5kaWNhdG9yKX1pZihhcj09bnVsbHx8TC5pc0FycmF5KGFyKT09ZmFsc2V8fGFyLmxlbmd0aD09MHx8TC5pc0FycmF5KGFyWzBdKT09ZmFsc2V8fGFyWzBdLmxlbmd0aD09MCl7aWYodGhpcy5ub0RhdGFJbmRpY2F0b3Iuc2hvdz09ZmFsc2Upe3Rocm93IG5ldyBFcnJvcigiTm8gZGF0YSBzcGVjaWZpZWQiKX1lbHNle2Zvcih2YXIgYWwgaW4gdGhpcy5ub0RhdGFJbmRpY2F0b3IuYXhlcyl7Zm9yKHZhciBhbiBpbiB0aGlzLm5vRGF0YUluZGljYXRvci5heGVzW2FsXSl7dGhpcy5heGVzW2FsXVthbl09dGhpcy5ub0RhdGFJbmRpY2F0b3IuYXhlc1thbF1bYW5dfX10aGlzLnBvc3REcmF3SG9va3MuYWRkKGZ1bmN0aW9uKCl7dmFyIGFEPXRoaXMuZXZlbnRDYW52YXMuZ2V0SGVpZ2h0KCk7dmFyIGFBPXRoaXMuZXZlbnRDYW52YXMuZ2V0V2lkdGgoKTt2YXIgYXo9TCgnPGRpdiBjbGFzcz0ianFwbG90LW5vRGF0YS1jb250YWluZXIiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsiPjwvZGl2PicpO3RoaXMudGFyZ2V0LmFwcGVuZChheik7YXouaGVpZ2h0KGFEKTthei53aWR0aChhQSk7YXouY3NzKCJ0b3AiLHRoaXMuZXZlbnRDYW52YXMuX29mZnNldHMudG9wKTthei5jc3MoImxlZnQiLHRoaXMuZXZlbnRDYW52YXMuX29mZnNldHMubGVmdCk7dmFyIGFDPUwoJzxkaXYgY2xhc3M9ImpxcGxvdC1ub0RhdGEtY29udGVudHMiIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsgcG9zaXRpb246cmVsYXRpdmU7IG1hcmdpbi1sZWZ0OmF1dG87IG1hcmdpbi1yaWdodDphdXRvOyI+PC9kaXY+Jyk7YXouYXBwZW5kKGFDKTthQy5odG1sKHRoaXMubm9EYXRhSW5kaWNhdG9yLmluZGljYXRvcik7dmFyIGFCPWFDLmhlaWdodCgpO3ZhciBheD1hQy53aWR0aCgpO2FDLmhlaWdodChhQik7YUMud2lkdGgoYXgpO2FDLmNzcygidG9wIiwoYUQtYUIpLzIrInB4Iil9KX19dGhpcy5kYXRhPUwuZXh0ZW5kKHRydWUsW10sYXIpO3RoaXMucGFyc2VPcHRpb25zKGF5KTtpZih0aGlzLnRleHRDb2xvcil7dGhpcy50YXJnZXQuY3NzKCJjb2xvciIsdGhpcy50ZXh0Q29sb3IpfWlmKHRoaXMuZm9udEZhbWlseSl7dGhpcy50YXJnZXQuY3NzKCJmb250LWZhbWlseSIsdGhpcy5mb250RmFtaWx5KX1pZih0aGlzLmZvbnRTaXplKXt0aGlzLnRhcmdldC5jc3MoImZvbnQtc2l6ZSIsdGhpcy5mb250U2l6ZSl9dGhpcy50aXRsZS5pbml0KCk7dGhpcy5sZWdlbmQuaW5pdCgpO3RoaXMuX3N1bXk9MDt0aGlzLl9zdW14PTA7dGhpcy5jb21wdXRlUGxvdERhdGEoKTtmb3IodmFyIGF0PTA7YXQ8dGhpcy5zZXJpZXMubGVuZ3RoO2F0Kyspe3RoaXMuc2VyaWVzU3RhY2sucHVzaChhdCk7dGhpcy5wcmV2aW91c1Nlcmllc1N0YWNrLnB1c2goYXQpO3RoaXMuc2VyaWVzW2F0XS5zaGFkb3dDYW52YXMuX3Bsb3REaW1lbnNpb25zPXRoaXMuX3Bsb3REaW1lbnNpb25zO3RoaXMuc2VyaWVzW2F0XS5jYW52YXMuX3Bsb3REaW1lbnNpb25zPXRoaXMuX3Bsb3REaW1lbnNpb25zO2Zvcih2YXIgYXE9MDthcTxMLmpxcGxvdC5wcmVTZXJpZXNJbml0SG9va3MubGVuZ3RoO2FxKyspe0wuanFwbG90LnByZVNlcmllc0luaXRIb29rc1thcV0uY2FsbCh0aGlzLnNlcmllc1thdF0sYXYsdGhpcy5kYXRhLHRoaXMub3B0aW9ucy5zZXJpZXNEZWZhdWx0cyx0aGlzLm9wdGlvbnMuc2VyaWVzW2F0XSx0aGlzKX1mb3IodmFyIGFxPTA7YXE8dGhpcy5wcmVTZXJpZXNJbml0SG9va3MuaG9va3MubGVuZ3RoO2FxKyspe3RoaXMucHJlU2VyaWVzSW5pdEhvb2tzLmhvb2tzW2FxXS5jYWxsKHRoaXMuc2VyaWVzW2F0XSxhdix0aGlzLmRhdGEsdGhpcy5vcHRpb25zLnNlcmllc0RlZmF1bHRzLHRoaXMub3B0aW9ucy5zZXJpZXNbYXRdLHRoaXMpfXRoaXMuc2VyaWVzW2F0XS5fcGxvdERpbWVuc2lvbnM9dGhpcy5fcGxvdERpbWVuc2lvbnM7dGhpcy5zZXJpZXNbYXRdLmluaXQoYXQsdGhpcy5ncmlkLmJvcmRlcldpZHRoLHRoaXMpO2Zvcih2YXIgYXE9MDthcTxMLmpxcGxvdC5wb3N0U2VyaWVzSW5pdEhvb2tzLmxlbmd0aDthcSsrKXtMLmpxcGxvdC5wb3N0U2VyaWVzSW5pdEhvb2tzW2FxXS5jYWxsKHRoaXMuc2VyaWVzW2F0XSxhdix0aGlzLmRhdGEsdGhpcy5vcHRpb25zLnNlcmllc0RlZmF1bHRzLHRoaXMub3B0aW9ucy5zZXJpZXNbYXRdLHRoaXMpfWZvcih2YXIgYXE9MDthcTx0aGlzLnBvc3RTZXJpZXNJbml0SG9va3MuaG9va3MubGVuZ3RoO2FxKyspe3RoaXMucG9zdFNlcmllc0luaXRIb29rcy5ob29rc1thcV0uY2FsbCh0aGlzLnNlcmllc1thdF0sYXYsdGhpcy5kYXRhLHRoaXMub3B0aW9ucy5zZXJpZXNEZWZhdWx0cyx0aGlzLm9wdGlvbnMuc2VyaWVzW2F0XSx0aGlzKX10aGlzLl9zdW15Kz10aGlzLnNlcmllc1thdF0uX3N1bXk7dGhpcy5fc3VteCs9dGhpcy5zZXJpZXNbYXRdLl9zdW14fXZhciBhbSxhbztmb3IodmFyIGF0PTAsYXA9VS5sZW5ndGg7YXQ8YXA7YXQrKyl7YW09VVthdF07YW89dGhpcy5heGVzW2FtXTthby5fcGxvdERpbWVuc2lvbnM9dGhpcy5fcGxvdERpbWVuc2lvbnM7YW8uaW5pdCgpO2lmKHRoaXMuYXhlc1thbV0uYm9yZGVyQ29sb3I9PW51bGwpe2lmKGFtLmNoYXJBdCgwKSE9PSJ4IiYmYW8udXNlU2VyaWVzQ29sb3I9PT10cnVlJiZhby5zaG93KXthby5ib3JkZXJDb2xvcj1hby5fc2VyaWVzWzBdLmNvbG9yfWVsc2V7YW8uYm9yZGVyQ29sb3I9dGhpcy5ncmlkLmJvcmRlckNvbG9yfX19aWYodGhpcy5zb3J0RGF0YSl7YWgodGhpcy5zZXJpZXMpfXRoaXMuZ3JpZC5pbml0KCk7dGhpcy5ncmlkLl9heGVzPXRoaXMuYXhlczt0aGlzLmxlZ2VuZC5fc2VyaWVzPXRoaXMuc2VyaWVzO2Zvcih2YXIgYXQ9MDthdDxMLmpxcGxvdC5wb3N0SW5pdEhvb2tzLmxlbmd0aDthdCsrKXtMLmpxcGxvdC5wb3N0SW5pdEhvb2tzW2F0XS5jYWxsKHRoaXMsYXYsdGhpcy5kYXRhLGF5KX1mb3IodmFyIGF0PTA7YXQ8dGhpcy5wb3N0SW5pdEhvb2tzLmhvb2tzLmxlbmd0aDthdCsrKXt0aGlzLnBvc3RJbml0SG9va3MuaG9va3NbYXRdLmNhbGwodGhpcyxhdix0aGlzLmRhdGEsYXkpfX07dGhpcy5yZXNldEF4ZXNTY2FsZT1mdW5jdGlvbihhcSxhbSl7dmFyIGFvPWFtfHx7fTt2YXIgYXA9YXF8fHRoaXMuYXhlcztpZihhcD09PXRydWUpe2FwPXRoaXMuYXhlc31pZihMLmlzQXJyYXkoYXApKXtmb3IodmFyIGFuPTA7YW48YXAubGVuZ3RoO2FuKyspe3RoaXMuYXhlc1thcFthbl1dLnJlc2V0U2NhbGUoYW9bYXBbYW5dXSl9fWVsc2V7aWYodHlwZW9mKGFwKT09PSJvYmplY3QiKXtmb3IodmFyIGFsIGluIGFwKXt0aGlzLmF4ZXNbYWxdLnJlc2V0U2NhbGUoYW9bYWxdKX19fX07dGhpcy5yZUluaXRpYWxpemU9ZnVuY3Rpb24oYXUsYWwpe3ZhciBheT1MLmV4dGVuZCh0cnVlLHt9LHRoaXMub3B0aW9ucyxhbCk7dmFyIGF3PXRoaXMudGFyZ2V0SWQuc3Vic3RyKDEpO3ZhciBhcj0oYXU9PW51bGwpP3RoaXMuZGF0YTphdTtmb3IodmFyIGF2PTA7YXY8TC5qcXBsb3QucHJlSW5pdEhvb2tzLmxlbmd0aDthdisrKXtMLmpxcGxvdC5wcmVJbml0SG9va3NbYXZdLmNhbGwodGhpcyxhdyxhcixheSl9Zm9yKHZhciBhdj0wO2F2PHRoaXMucHJlSW5pdEhvb2tzLmhvb2tzLmxlbmd0aDthdisrKXt0aGlzLnByZUluaXRIb29rcy5ob29rc1thdl0uY2FsbCh0aGlzLGF3LGFyLGF5KX10aGlzLl9oZWlnaHQ9dGhpcy50YXJnZXQuaGVpZ2h0KCk7dGhpcy5fd2lkdGg9dGhpcy50YXJnZXQud2lkdGgoKTtpZih0aGlzLl9oZWlnaHQ8PTB8fHRoaXMuX3dpZHRoPD0wfHwhdGhpcy5faGVpZ2h0fHwhdGhpcy5fd2lkdGgpe3Rocm93IG5ldyBFcnJvcigiVGFyZ2V0IGRpbWVuc2lvbiBub3Qgc2V0Iil9dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0PXRoaXMuX2hlaWdodDt0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aD10aGlzLl93aWR0aDt0aGlzLmdyaWQuX3Bsb3REaW1lbnNpb25zPXRoaXMuX3Bsb3REaW1lbnNpb25zO3RoaXMudGl0bGUuX3Bsb3REaW1lbnNpb25zPXRoaXMuX3Bsb3REaW1lbnNpb25zO3RoaXMuYmFzZUNhbnZhcy5fcGxvdERpbWVuc2lvbnM9dGhpcy5fcGxvdERpbWVuc2lvbnM7dGhpcy5ldmVudENhbnZhcy5fcGxvdERpbWVuc2lvbnM9dGhpcy5fcGxvdERpbWVuc2lvbnM7dGhpcy5sZWdlbmQuX3Bsb3REaW1lbnNpb25zPXRoaXMuX3Bsb3REaW1lbnNpb25zO3ZhciBhbSxheCxhdCxhbztmb3IodmFyIGF2PTAsYXE9VS5sZW5ndGg7YXY8YXE7YXYrKyl7YW09VVthdl07YW89dGhpcy5heGVzW2FtXTtheD1hby5fdGlja3M7Zm9yKHZhciBhdD0wLGFwPWF4Lmxlbmd0aDthdDxhcDthdCsrKXt2YXIgYW49YXhbYXRdLl9lbGVtO2lmKGFuKXtpZihMLmpxcGxvdC51c2VfZXhjYW52YXMmJndpbmRvdy5HX3ZtbENhbnZhc01hbmFnZXIudW5pbml0RWxlbWVudCE9PXUpe3dpbmRvdy5HX3ZtbENhbnZhc01hbmFnZXIudW5pbml0RWxlbWVudChhbi5nZXQoMCkpfWFuLmVtcHR5Rm9yY2UoKTthbj1udWxsO2F4Ll9lbGVtPW51bGx9fWF4PW51bGw7ZGVsZXRlIGFvLnRpY2tzO2RlbGV0ZSBhby5fdGlja3M7dGhpcy5heGVzW2FtXT1uZXcgdyhhbSk7dGhpcy5heGVzW2FtXS5fcGxvdFdpZHRoPXRoaXMuX3dpZHRoO3RoaXMuYXhlc1thbV0uX3Bsb3RIZWlnaHQ9dGhpcy5faGVpZ2h0fWlmKGF1KXtpZihheS5kYXRhUmVuZGVyZXImJkwuaXNGdW5jdGlvbihheS5kYXRhUmVuZGVyZXIpKXtpZihheS5kYXRhUmVuZGVyZXJPcHRpb25zKXt0aGlzLmRhdGFSZW5kZXJlck9wdGlvbnM9YXkuZGF0YVJlbmRlcmVyT3B0aW9uc310aGlzLmRhdGFSZW5kZXJlcj1heS5kYXRhUmVuZGVyZXI7YXU9dGhpcy5kYXRhUmVuZGVyZXIoYXUsdGhpcyx0aGlzLmRhdGFSZW5kZXJlck9wdGlvbnMpfXRoaXMuZGF0YT1MLmV4dGVuZCh0cnVlLFtdLGF1KX1pZihhbCl7dGhpcy5wYXJzZU9wdGlvbnMoYXkpfXRoaXMudGl0bGUuX3Bsb3RXaWR0aD10aGlzLl93aWR0aDtpZih0aGlzLnRleHRDb2xvcil7dGhpcy50YXJnZXQuY3NzKCJjb2xvciIsdGhpcy50ZXh0Q29sb3IpfWlmKHRoaXMuZm9udEZhbWlseSl7dGhpcy50YXJnZXQuY3NzKCJmb250LWZhbWlseSIsdGhpcy5mb250RmFtaWx5KX1pZih0aGlzLmZvbnRTaXplKXt0aGlzLnRhcmdldC5jc3MoImZvbnQtc2l6ZSIsdGhpcy5mb250U2l6ZSl9dGhpcy50aXRsZS5pbml0KCk7dGhpcy5sZWdlbmQuaW5pdCgpO3RoaXMuX3N1bXk9MDt0aGlzLl9zdW14PTA7dGhpcy5zZXJpZXNTdGFjaz1bXTt0aGlzLnByZXZpb3VzU2VyaWVzU3RhY2s9W107dGhpcy5jb21wdXRlUGxvdERhdGEoKTtmb3IodmFyIGF2PTAsYXE9dGhpcy5zZXJpZXMubGVuZ3RoO2F2PGFxO2F2Kyspe3RoaXMuc2VyaWVzU3RhY2sucHVzaChhdik7dGhpcy5wcmV2aW91c1Nlcmllc1N0YWNrLnB1c2goYXYpO3RoaXMuc2VyaWVzW2F2XS5zaGFkb3dDYW52YXMuX3Bsb3REaW1lbnNpb25zPXRoaXMuX3Bsb3REaW1lbnNpb25zO3RoaXMuc2VyaWVzW2F2XS5jYW52YXMuX3Bsb3REaW1lbnNpb25zPXRoaXMuX3Bsb3REaW1lbnNpb25zO2Zvcih2YXIgYXQ9MDthdDxMLmpxcGxvdC5wcmVTZXJpZXNJbml0SG9va3MubGVuZ3RoO2F0Kyspe0wuanFwbG90LnByZVNlcmllc0luaXRIb29rc1thdF0uY2FsbCh0aGlzLnNlcmllc1thdl0sYXcsdGhpcy5kYXRhLHRoaXMub3B0aW9ucy5zZXJpZXNEZWZhdWx0cyx0aGlzLm9wdGlvbnMuc2VyaWVzW2F2XSx0aGlzKX1mb3IodmFyIGF0PTA7YXQ8dGhpcy5wcmVTZXJpZXNJbml0SG9va3MuaG9va3MubGVuZ3RoO2F0Kyspe3RoaXMucHJlU2VyaWVzSW5pdEhvb2tzLmhvb2tzW2F0XS5jYWxsKHRoaXMuc2VyaWVzW2F2XSxhdyx0aGlzLmRhdGEsdGhpcy5vcHRpb25zLnNlcmllc0RlZmF1bHRzLHRoaXMub3B0aW9ucy5zZXJpZXNbYXZdLHRoaXMpfXRoaXMuc2VyaWVzW2F2XS5fcGxvdERpbWVuc2lvbnM9dGhpcy5fcGxvdERpbWVuc2lvbnM7dGhpcy5zZXJpZXNbYXZdLmluaXQoYXYsdGhpcy5ncmlkLmJvcmRlcldpZHRoLHRoaXMpO2Zvcih2YXIgYXQ9MDthdDxMLmpxcGxvdC5wb3N0U2VyaWVzSW5pdEhvb2tzLmxlbmd0aDthdCsrKXtMLmpxcGxvdC5wb3N0U2VyaWVzSW5pdEhvb2tzW2F0XS5jYWxsKHRoaXMuc2VyaWVzW2F2XSxhdyx0aGlzLmRhdGEsdGhpcy5vcHRpb25zLnNlcmllc0RlZmF1bHRzLHRoaXMub3B0aW9ucy5zZXJpZXNbYXZdLHRoaXMpfWZvcih2YXIgYXQ9MDthdDx0aGlzLnBvc3RTZXJpZXNJbml0SG9va3MuaG9va3MubGVuZ3RoO2F0Kyspe3RoaXMucG9zdFNlcmllc0luaXRIb29rcy5ob29rc1thdF0uY2FsbCh0aGlzLnNlcmllc1thdl0sYXcsdGhpcy5kYXRhLHRoaXMub3B0aW9ucy5zZXJpZXNEZWZhdWx0cyx0aGlzLm9wdGlvbnMuc2VyaWVzW2F2XSx0aGlzKX10aGlzLl9zdW15Kz10aGlzLnNlcmllc1thdl0uX3N1bXk7dGhpcy5fc3VteCs9dGhpcy5zZXJpZXNbYXZdLl9zdW14fWZvcih2YXIgYXY9MCxhcT1VLmxlbmd0aDthdjxhcTthdisrKXthbT1VW2F2XTthbz10aGlzLmF4ZXNbYW1dO2FvLl9wbG90RGltZW5zaW9ucz10aGlzLl9wbG90RGltZW5zaW9uczthby5pbml0KCk7aWYoYW8uYm9yZGVyQ29sb3I9PW51bGwpe2lmKGFtLmNoYXJBdCgwKSE9PSJ4IiYmYW8udXNlU2VyaWVzQ29sb3I9PT10cnVlJiZhby5zaG93KXthby5ib3JkZXJDb2xvcj1hby5fc2VyaWVzWzBdLmNvbG9yfWVsc2V7YW8uYm9yZGVyQ29sb3I9dGhpcy5ncmlkLmJvcmRlckNvbG9yfX19aWYodGhpcy5zb3J0RGF0YSl7YWgodGhpcy5zZXJpZXMpfXRoaXMuZ3JpZC5pbml0KCk7dGhpcy5ncmlkLl9heGVzPXRoaXMuYXhlczt0aGlzLmxlZ2VuZC5fc2VyaWVzPXRoaXMuc2VyaWVzO2Zvcih2YXIgYXY9MCxhcT1MLmpxcGxvdC5wb3N0SW5pdEhvb2tzLmxlbmd0aDthdjxhcTthdisrKXtMLmpxcGxvdC5wb3N0SW5pdEhvb2tzW2F2XS5jYWxsKHRoaXMsYXcsdGhpcy5kYXRhLGF5KX1mb3IodmFyIGF2PTAsYXE9dGhpcy5wb3N0SW5pdEhvb2tzLmhvb2tzLmxlbmd0aDthdjxhcTthdisrKXt0aGlzLnBvc3RJbml0SG9va3MuaG9va3NbYXZdLmNhbGwodGhpcyxhdyx0aGlzLmRhdGEsYXkpfX07dGhpcy5xdWlja0luaXQ9ZnVuY3Rpb24oKXt0aGlzLl9oZWlnaHQ9dGhpcy50YXJnZXQuaGVpZ2h0KCk7dGhpcy5fd2lkdGg9dGhpcy50YXJnZXQud2lkdGgoKTtpZih0aGlzLl9oZWlnaHQ8PTB8fHRoaXMuX3dpZHRoPD0wfHwhdGhpcy5faGVpZ2h0fHwhdGhpcy5fd2lkdGgpe3Rocm93IG5ldyBFcnJvcigiVGFyZ2V0IGRpbWVuc2lvbiBub3Qgc2V0Iil9dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0PXRoaXMuX2hlaWdodDt0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aD10aGlzLl93aWR0aDt0aGlzLmdyaWQuX3Bsb3REaW1lbnNpb25zPXRoaXMuX3Bsb3REaW1lbnNpb25zO3RoaXMudGl0bGUuX3Bsb3REaW1lbnNpb25zPXRoaXMuX3Bsb3REaW1lbnNpb25zO3RoaXMuYmFzZUNhbnZhcy5fcGxvdERpbWVuc2lvbnM9dGhpcy5fcGxvdERpbWVuc2lvbnM7dGhpcy5ldmVudENhbnZhcy5fcGxvdERpbWVuc2lvbnM9dGhpcy5fcGxvdERpbWVuc2lvbnM7dGhpcy5sZWdlbmQuX3Bsb3REaW1lbnNpb25zPXRoaXMuX3Bsb3REaW1lbnNpb25zO2Zvcih2YXIgYXEgaW4gdGhpcy5heGVzKXt0aGlzLmF4ZXNbYXFdLl9wbG90V2lkdGg9dGhpcy5fd2lkdGg7dGhpcy5heGVzW2FxXS5fcGxvdEhlaWdodD10aGlzLl9oZWlnaHR9dGhpcy50aXRsZS5fcGxvdFdpZHRoPXRoaXMuX3dpZHRoO2lmKHRoaXMudGV4dENvbG9yKXt0aGlzLnRhcmdldC5jc3MoImNvbG9yIix0aGlzLnRleHRDb2xvcil9aWYodGhpcy5mb250RmFtaWx5KXt0aGlzLnRhcmdldC5jc3MoImZvbnQtZmFtaWx5Iix0aGlzLmZvbnRGYW1pbHkpfWlmKHRoaXMuZm9udFNpemUpe3RoaXMudGFyZ2V0LmNzcygiZm9udC1zaXplIix0aGlzLmZvbnRTaXplKX10aGlzLl9zdW15PTA7dGhpcy5fc3VteD0wO3RoaXMuY29tcHV0ZVBsb3REYXRhKCk7Zm9yKHZhciBhbz0wO2FvPHRoaXMuc2VyaWVzLmxlbmd0aDthbysrKXtpZih0aGlzLnNlcmllc1thb10uX3R5cGU9PT0ibGluZSImJnRoaXMuc2VyaWVzW2FvXS5yZW5kZXJlci5iYW5kcy5zaG93KXt0aGlzLnNlcmllc1thb10ucmVuZGVyZXIuaW5pdEJhbmRzLmNhbGwodGhpcy5zZXJpZXNbYW9dLHRoaXMuc2VyaWVzW2FvXS5yZW5kZXJlci5vcHRpb25zLHRoaXMpfXRoaXMuc2VyaWVzW2FvXS5fcGxvdERpbWVuc2lvbnM9dGhpcy5fcGxvdERpbWVuc2lvbnM7dGhpcy5zZXJpZXNbYW9dLmNhbnZhcy5fcGxvdERpbWVuc2lvbnM9dGhpcy5fcGxvdERpbWVuc2lvbnM7dGhpcy5fc3VteSs9dGhpcy5zZXJpZXNbYW9dLl9zdW15O3RoaXMuX3N1bXgrPXRoaXMuc2VyaWVzW2FvXS5fc3VteH12YXIgYW07Zm9yKHZhciBhbD0wO2FsPDEyO2FsKyspe2FtPVVbYWxdO3ZhciBhbj10aGlzLmF4ZXNbYW1dLl90aWNrcztmb3IodmFyIGFvPTA7YW88YW4ubGVuZ3RoO2FvKyspe3ZhciBhcD1hblthb10uX2VsZW07aWYoYXApe2lmKEwuanFwbG90LnVzZV9leGNhbnZhcyYmd2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci51bmluaXRFbGVtZW50IT09dSl7d2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci51bmluaXRFbGVtZW50KGFwLmdldCgwKSl9YXAuZW1wdHlGb3JjZSgpO2FwPW51bGw7YW4uX2VsZW09bnVsbH19YW49bnVsbDt0aGlzLmF4ZXNbYW1dLl9wbG90RGltZW5zaW9ucz10aGlzLl9wbG90RGltZW5zaW9uczt0aGlzLmF4ZXNbYW1dLl90aWNrcz1bXX1pZih0aGlzLnNvcnREYXRhKXthaCh0aGlzLnNlcmllcyl9dGhpcy5ncmlkLl9heGVzPXRoaXMuYXhlczt0aGlzLmxlZ2VuZC5fc2VyaWVzPXRoaXMuc2VyaWVzfTtmdW5jdGlvbiBhaChhcCl7dmFyIGF1LGF2LGF3LGFsLGF0O2Zvcih2YXIgYXE9MDthcTxhcC5sZW5ndGg7YXErKyl7dmFyIGFtO3ZhciBhcj1bYXBbYXFdLmRhdGEsYXBbYXFdLl9zdGFja0RhdGEsYXBbYXFdLl9wbG90RGF0YSxhcFthcV0uX3ByZXZQbG90RGF0YV07Zm9yKHZhciBhbj0wO2FuPDQ7YW4rKyl7YW09dHJ1ZTthdT1hclthbl07aWYoYXBbYXFdLl9zdGFja0F4aXM9PSJ4Iil7Zm9yKHZhciBhbz0wO2FvPGF1Lmxlbmd0aDthbysrKXtpZih0eXBlb2YoYXVbYW9dWzFdKSE9Im51bWJlciIpe2FtPWZhbHNlO2JyZWFrfX1pZihhbSl7YXUuc29ydChmdW5jdGlvbihheSxheCl7cmV0dXJuIGF5WzFdLWF4WzFdfSl9fWVsc2V7Zm9yKHZhciBhbz0wO2FvPGF1Lmxlbmd0aDthbysrKXtpZih0eXBlb2YoYXVbYW9dWzBdKSE9Im51bWJlciIpe2FtPWZhbHNlO2JyZWFrfX1pZihhbSl7YXUuc29ydChmdW5jdGlvbihheSxheCl7cmV0dXJuIGF5WzBdLWF4WzBdfSl9fX19fXRoaXMuY29tcHV0ZVBsb3REYXRhPWZ1bmN0aW9uKCl7dGhpcy5fcGxvdERhdGE9W107dGhpcy5fc3RhY2tEYXRhPVtdO3ZhciBhdCxhdSxhbztmb3IoYXU9MCxhbz10aGlzLnNlcmllcy5sZW5ndGg7YXU8YW87YXUrKyl7YXQ9dGhpcy5zZXJpZXNbYXVdO3RoaXMuX3Bsb3REYXRhLnB1c2goW10pO3RoaXMuX3N0YWNrRGF0YS5wdXNoKFtdKTt2YXIgYW09YXQuZGF0YTt0aGlzLl9wbG90RGF0YVthdV09TC5leHRlbmQodHJ1ZSxbXSxhbSk7dGhpcy5fc3RhY2tEYXRhW2F1XT1MLmV4dGVuZCh0cnVlLFtdLGFtKTthdC5fcGxvdERhdGE9dGhpcy5fcGxvdERhdGFbYXVdO2F0Ll9zdGFja0RhdGE9dGhpcy5fc3RhY2tEYXRhW2F1XTt2YXIgYXg9e3g6W10seTpbXX07aWYodGhpcy5zdGFja1NlcmllcyYmIWF0LmRpc2FibGVTdGFjayl7YXQuX3N0YWNrPXRydWU7dmFyIGF2PShhdC5fc3RhY2tBeGlzPT09IngiKT8wOjE7Zm9yKHZhciBhcD0wLGFsPWFtLmxlbmd0aDthcDxhbDthcCsrKXt2YXIgYXc9YW1bYXBdW2F2XTtpZihhdz09bnVsbCl7YXc9MH10aGlzLl9wbG90RGF0YVthdV1bYXBdW2F2XT1hdzt0aGlzLl9zdGFja0RhdGFbYXVdW2FwXVthdl09YXc7aWYoYXU+MCl7Zm9yKHZhciBhcT1hdTthcS0tOyl7dmFyIGFuPXRoaXMuX3Bsb3REYXRhW2FxXVthcF1bYXZdO2lmKGF3KmFuPj0wKXt0aGlzLl9wbG90RGF0YVthdV1bYXBdW2F2XSs9YW47dGhpcy5fc3RhY2tEYXRhW2F1XVthcF1bYXZdKz1hbjticmVha319fX19ZWxzZXtmb3IodmFyIGFyPTA7YXI8YXQuZGF0YS5sZW5ndGg7YXIrKyl7YXgueC5wdXNoKGF0LmRhdGFbYXJdWzBdKTtheC55LnB1c2goYXQuZGF0YVthcl1bMV0pfXRoaXMuX3N0YWNrRGF0YS5wdXNoKGF0LmRhdGEpO3RoaXMuc2VyaWVzW2F1XS5fc3RhY2tEYXRhPWF0LmRhdGE7dGhpcy5fcGxvdERhdGEucHVzaChhdC5kYXRhKTthdC5fcGxvdERhdGE9YXQuZGF0YTthdC5fcGxvdFZhbHVlcz1heH1pZihhdT4wKXthdC5fcHJldlBsb3REYXRhPXRoaXMuc2VyaWVzW2F1LTFdLl9wbG90RGF0YX1hdC5fc3VteT0wO2F0Ll9zdW14PTA7Zm9yKGFyPWF0LmRhdGEubGVuZ3RoLTE7YXI+LTE7YXItLSl7YXQuX3N1bXkrPWF0LmRhdGFbYXJdWzFdO2F0Ll9zdW14Kz1hdC5kYXRhW2FyXVswXX19fTt0aGlzLnBvcHVsYXRlUGxvdERhdGE9ZnVuY3Rpb24oYXUsYXYpe3RoaXMuX3Bsb3REYXRhPVtdO3RoaXMuX3N0YWNrRGF0YT1bXTthdS5fc3RhY2tEYXRhPVtdO2F1Ll9wbG90RGF0YT1bXTt2YXIgYXk9e3g6W10seTpbXX07aWYodGhpcy5zdGFja1NlcmllcyYmIWF1LmRpc2FibGVTdGFjayl7YXUuX3N0YWNrPXRydWU7dmFyIGF4PShhdS5fc3RhY2tBeGlzPT09IngiKT8wOjE7dmFyIGF6PUwuZXh0ZW5kKHRydWUsW10sYXUuZGF0YSk7dmFyIGFBPUwuZXh0ZW5kKHRydWUsW10sYXUuZGF0YSk7dmFyIGFuLGFtLGFvLGF3LGFsO2Zvcih2YXIgYXI9MDthcjxhdjthcisrKXt2YXIgYXA9dGhpcy5zZXJpZXNbYXJdLmRhdGE7Zm9yKHZhciBhcT0wO2FxPGFwLmxlbmd0aDthcSsrKXthbz1hcFthcV07YW49KGFvWzBdIT1udWxsKT9hb1swXTowO2FtPShhb1sxXSE9bnVsbCk/YW9bMV06MDthelthcV1bMF0rPWFuO2F6W2FxXVsxXSs9YW07YXc9KGF4KT9hbTphbjtpZihhdS5kYXRhW2FxXVtheF0qYXc+PTApe2FBW2FxXVtheF0rPWF3fX19Zm9yKHZhciBhdD0wO2F0PGFBLmxlbmd0aDthdCsrKXtheS54LnB1c2goYUFbYXRdWzBdKTtheS55LnB1c2goYUFbYXRdWzFdKX10aGlzLl9wbG90RGF0YS5wdXNoKGFBKTt0aGlzLl9zdGFja0RhdGEucHVzaChheik7YXUuX3N0YWNrRGF0YT1hejthdS5fcGxvdERhdGE9YUE7YXUuX3Bsb3RWYWx1ZXM9YXl9ZWxzZXtmb3IodmFyIGF0PTA7YXQ8YXUuZGF0YS5sZW5ndGg7YXQrKyl7YXkueC5wdXNoKGF1LmRhdGFbYXRdWzBdKTtheS55LnB1c2goYXUuZGF0YVthdF1bMV0pfXRoaXMuX3N0YWNrRGF0YS5wdXNoKGF1LmRhdGEpO3RoaXMuc2VyaWVzW2F2XS5fc3RhY2tEYXRhPWF1LmRhdGE7dGhpcy5fcGxvdERhdGEucHVzaChhdS5kYXRhKTthdS5fcGxvdERhdGE9YXUuZGF0YTthdS5fcGxvdFZhbHVlcz1heX1pZihhdj4wKXthdS5fcHJldlBsb3REYXRhPXRoaXMuc2VyaWVzW2F2LTFdLl9wbG90RGF0YX1hdS5fc3VteT0wO2F1Ll9zdW14PTA7Zm9yKGF0PWF1LmRhdGEubGVuZ3RoLTE7YXQ+LTE7YXQtLSl7YXUuX3N1bXkrPWF1LmRhdGFbYXRdWzFdO2F1Ll9zdW14Kz1hdS5kYXRhW2F0XVswXX19O3RoaXMuZ2V0TmV4dFNlcmllc0NvbG9yPShmdW5jdGlvbihhbSl7dmFyIGFsPTA7dmFyIGFuPWFtLnNlcmllc0NvbG9ycztyZXR1cm4gZnVuY3Rpb24oKXtpZihhbDxhbi5sZW5ndGgpe3JldHVybiBhblthbCsrXX1lbHNle2FsPTA7cmV0dXJuIGFuW2FsKytdfX19KSh0aGlzKTt0aGlzLnBhcnNlT3B0aW9ucz1mdW5jdGlvbihheSl7Zm9yKHZhciBhdD0wO2F0PHRoaXMucHJlUGFyc2VPcHRpb25zSG9va3MuaG9va3MubGVuZ3RoO2F0Kyspe3RoaXMucHJlUGFyc2VPcHRpb25zSG9va3MuaG9va3NbYXRdLmNhbGwodGhpcyxheSl9Zm9yKHZhciBhdD0wO2F0PEwuanFwbG90LnByZVBhcnNlT3B0aW9uc0hvb2tzLmxlbmd0aDthdCsrKXtMLmpxcGxvdC5wcmVQYXJzZU9wdGlvbnNIb29rc1thdF0uY2FsbCh0aGlzLGF5KX10aGlzLm9wdGlvbnM9TC5leHRlbmQodHJ1ZSx7fSx0aGlzLmRlZmF1bHRzLGF5KTt2YXIgYW09dGhpcy5vcHRpb25zO3RoaXMuYW5pbWF0ZT1hbS5hbmltYXRlO3RoaXMuYW5pbWF0ZVJlcGxvdD1hbS5hbmltYXRlUmVwbG90O3RoaXMuc3RhY2tTZXJpZXM9YW0uc3RhY2tTZXJpZXM7aWYoTC5pc1BsYWluT2JqZWN0KGFtLmZpbGxCZXR3ZWVuKSl7dmFyIGF4PVsic2VyaWVzMSIsInNlcmllczIiLCJjb2xvciIsImJhc2VTZXJpZXMiLCJmaWxsIl0sYXU7Zm9yKHZhciBhdD0wLGFxPWF4Lmxlbmd0aDthdDxhcTthdCsrKXthdT1heFthdF07aWYoYW0uZmlsbEJldHdlZW5bYXVdIT1udWxsKXt0aGlzLmZpbGxCZXR3ZWVuW2F1XT1hbS5maWxsQmV0d2VlblthdV19fX1pZihhbS5zZXJpZXNDb2xvcnMpe3RoaXMuc2VyaWVzQ29sb3JzPWFtLnNlcmllc0NvbG9yc31pZihhbS5uZWdhdGl2ZVNlcmllc0NvbG9ycyl7dGhpcy5uZWdhdGl2ZVNlcmllc0NvbG9ycz1hbS5uZWdhdGl2ZVNlcmllc0NvbG9yc31pZihhbS5jYXB0dXJlUmlnaHRDbGljayl7dGhpcy5jYXB0dXJlUmlnaHRDbGljaz1hbS5jYXB0dXJlUmlnaHRDbGlja310aGlzLmRlZmF1bHRBeGlzU3RhcnQ9KGF5JiZheS5kZWZhdWx0QXhpc1N0YXJ0IT1udWxsKT9heS5kZWZhdWx0QXhpc1N0YXJ0OnRoaXMuZGVmYXVsdEF4aXNTdGFydDt0aGlzLmNvbG9yR2VuZXJhdG9yLnNldENvbG9ycyh0aGlzLnNlcmllc0NvbG9ycyk7dGhpcy5uZWdhdGl2ZUNvbG9yR2VuZXJhdG9yLnNldENvbG9ycyh0aGlzLm5lZ2F0aXZlU2VyaWVzQ29sb3JzKTtMLmV4dGVuZCh0cnVlLHRoaXMuX2dyaWRQYWRkaW5nLGFtLmdyaWRQYWRkaW5nKTt0aGlzLnNvcnREYXRhPShhbS5zb3J0RGF0YSE9bnVsbCk/YW0uc29ydERhdGE6dGhpcy5zb3J0RGF0YTtmb3IodmFyIGF0PTA7YXQ8MTI7YXQrKyl7dmFyIGFuPVVbYXRdO3ZhciBhcD10aGlzLmF4ZXNbYW5dO2FwLl9vcHRpb25zPUwuZXh0ZW5kKHRydWUse30sYW0uYXhlc0RlZmF1bHRzLGFtLmF4ZXNbYW5dKTtMLmV4dGVuZCh0cnVlLGFwLGFtLmF4ZXNEZWZhdWx0cyxhbS5heGVzW2FuXSk7YXAuX3Bsb3RXaWR0aD10aGlzLl93aWR0aDthcC5fcGxvdEhlaWdodD10aGlzLl9oZWlnaHR9dmFyIGF3PWZ1bmN0aW9uKGFELGFCLGFFKXt2YXIgYUE9W107dmFyIGFDLGF6O2FCPWFCfHwidmVydGljYWwiO2lmKCFMLmlzQXJyYXkoYURbMF0pKXtmb3IoYUM9MCxhej1hRC5sZW5ndGg7YUM8YXo7YUMrKyl7aWYoYUI9PSJ2ZXJ0aWNhbCIpe2FBLnB1c2goW2FFK2FDLGFEW2FDXV0pfWVsc2V7YUEucHVzaChbYURbYUNdLGFFK2FDXSl9fX1lbHNle0wuZXh0ZW5kKHRydWUsYUEsYUQpfXJldHVybiBhQX07dmFyIGF2PTA7dGhpcy5zZXJpZXM9W107Zm9yKHZhciBhdD0wO2F0PHRoaXMuZGF0YS5sZW5ndGg7YXQrKyl7dmFyIGFsPUwuZXh0ZW5kKHRydWUse2luZGV4OmF0fSx7c2VyaWVzQ29sb3JzOnRoaXMuc2VyaWVzQ29sb3JzLG5lZ2F0aXZlU2VyaWVzQ29sb3JzOnRoaXMubmVnYXRpdmVTZXJpZXNDb2xvcnN9LHRoaXMub3B0aW9ucy5zZXJpZXNEZWZhdWx0cyx0aGlzLm9wdGlvbnMuc2VyaWVzW2F0XSx7cmVuZGVyZXJPcHRpb25zOnthbmltYXRpb246e3Nob3c6dGhpcy5hbmltYXRlfX19KTt2YXIgYXg9bmV3IFMoYWwpO2Zvcih2YXIgYXI9MDthcjxMLmpxcGxvdC5wcmVQYXJzZVNlcmllc09wdGlvbnNIb29rcy5sZW5ndGg7YXIrKyl7TC5qcXBsb3QucHJlUGFyc2VTZXJpZXNPcHRpb25zSG9va3NbYXJdLmNhbGwoYXgsdGhpcy5vcHRpb25zLnNlcmllc0RlZmF1bHRzLHRoaXMub3B0aW9ucy5zZXJpZXNbYXRdKX1mb3IodmFyIGFyPTA7YXI8dGhpcy5wcmVQYXJzZVNlcmllc09wdGlvbnNIb29rcy5ob29rcy5sZW5ndGg7YXIrKyl7dGhpcy5wcmVQYXJzZVNlcmllc09wdGlvbnNIb29rcy5ob29rc1thcl0uY2FsbChheCx0aGlzLm9wdGlvbnMuc2VyaWVzRGVmYXVsdHMsdGhpcy5vcHRpb25zLnNlcmllc1thdF0pfUwuZXh0ZW5kKHRydWUsYXgsYWwpO3ZhciBhbz0idmVydGljYWwiO2lmKGF4LnJlbmRlcmVyPT09TC5qcXBsb3QuQmFyUmVuZGVyZXImJmF4LnJlbmRlcmVyT3B0aW9ucyYmYXgucmVuZGVyZXJPcHRpb25zLmJhckRpcmVjdGlvbj09Imhvcml6b250YWwiKXthbz0iaG9yaXpvbnRhbCI7YXguX3N0YWNrQXhpcz0ieCI7YXguX3ByaW1hcnlBeGlzPSJfeWF4aXMifWF4LmRhdGE9YXcodGhpcy5kYXRhW2F0XSxhbyx0aGlzLmRlZmF1bHRBeGlzU3RhcnQpO3N3aXRjaChheC54YXhpcyl7Y2FzZSJ4YXhpcyI6YXguX3hheGlzPXRoaXMuYXhlcy54YXhpczticmVhaztjYXNlIngyYXhpcyI6YXguX3hheGlzPXRoaXMuYXhlcy54MmF4aXM7YnJlYWs7ZGVmYXVsdDpicmVha31heC5feWF4aXM9dGhpcy5heGVzW2F4LnlheGlzXTtheC5feGF4aXMuX3Nlcmllcy5wdXNoKGF4KTtheC5feWF4aXMuX3Nlcmllcy5wdXNoKGF4KTtpZihheC5zaG93KXtheC5feGF4aXMuc2hvdz10cnVlO2F4Ll95YXhpcy5zaG93PXRydWV9ZWxzZXtpZihheC5feGF4aXMuc2NhbGVUb0hpZGRlblNlcmllcyl7YXguX3hheGlzLnNob3c9dHJ1ZX1pZihheC5feWF4aXMuc2NhbGVUb0hpZGRlblNlcmllcyl7YXguX3lheGlzLnNob3c9dHJ1ZX19aWYoIWF4LmxhYmVsKXtheC5sYWJlbD0iU2VyaWVzICIrKGF0KzEpLnRvU3RyaW5nKCl9dGhpcy5zZXJpZXMucHVzaChheCk7Zm9yKHZhciBhcj0wO2FyPEwuanFwbG90LnBvc3RQYXJzZVNlcmllc09wdGlvbnNIb29rcy5sZW5ndGg7YXIrKyl7TC5qcXBsb3QucG9zdFBhcnNlU2VyaWVzT3B0aW9uc0hvb2tzW2FyXS5jYWxsKHRoaXMuc2VyaWVzW2F0XSx0aGlzLm9wdGlvbnMuc2VyaWVzRGVmYXVsdHMsdGhpcy5vcHRpb25zLnNlcmllc1thdF0pfWZvcih2YXIgYXI9MDthcjx0aGlzLnBvc3RQYXJzZVNlcmllc09wdGlvbnNIb29rcy5ob29rcy5sZW5ndGg7YXIrKyl7dGhpcy5wb3N0UGFyc2VTZXJpZXNPcHRpb25zSG9va3MuaG9va3NbYXJdLmNhbGwodGhpcy5zZXJpZXNbYXRdLHRoaXMub3B0aW9ucy5zZXJpZXNEZWZhdWx0cyx0aGlzLm9wdGlvbnMuc2VyaWVzW2F0XSl9fUwuZXh0ZW5kKHRydWUsdGhpcy5ncmlkLHRoaXMub3B0aW9ucy5ncmlkKTtmb3IodmFyIGF0PTAsYXE9VS5sZW5ndGg7YXQ8YXE7YXQrKyl7dmFyIGFuPVVbYXRdO3ZhciBhcD10aGlzLmF4ZXNbYW5dO2lmKGFwLmJvcmRlcldpZHRoPT1udWxsKXthcC5ib3JkZXJXaWR0aD10aGlzLmdyaWQuYm9yZGVyV2lkdGh9fWlmKHR5cGVvZiB0aGlzLm9wdGlvbnMudGl0bGU9PSJzdHJpbmciKXt0aGlzLnRpdGxlLnRleHQ9dGhpcy5vcHRpb25zLnRpdGxlfWVsc2V7aWYodHlwZW9mIHRoaXMub3B0aW9ucy50aXRsZT09Im9iamVjdCIpe0wuZXh0ZW5kKHRydWUsdGhpcy50aXRsZSx0aGlzLm9wdGlvbnMudGl0bGUpfX10aGlzLnRpdGxlLl9wbG90V2lkdGg9dGhpcy5fd2lkdGg7dGhpcy5sZWdlbmQuc2V0T3B0aW9ucyh0aGlzLm9wdGlvbnMubGVnZW5kKTtmb3IodmFyIGF0PTA7YXQ8TC5qcXBsb3QucG9zdFBhcnNlT3B0aW9uc0hvb2tzLmxlbmd0aDthdCsrKXtMLmpxcGxvdC5wb3N0UGFyc2VPcHRpb25zSG9va3NbYXRdLmNhbGwodGhpcyxheSl9Zm9yKHZhciBhdD0wO2F0PHRoaXMucG9zdFBhcnNlT3B0aW9uc0hvb2tzLmhvb2tzLmxlbmd0aDthdCsrKXt0aGlzLnBvc3RQYXJzZU9wdGlvbnNIb29rcy5ob29rc1thdF0uY2FsbCh0aGlzLGF5KX19O3RoaXMuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuY2FudmFzTWFuYWdlci5mcmVlQWxsQ2FudmFzZXMoKTtpZih0aGlzLmV2ZW50Q2FudmFzJiZ0aGlzLmV2ZW50Q2FudmFzLl9lbGVtKXt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLnVuYmluZCgpfXRoaXMudGFyZ2V0LmVtcHR5KCk7dGhpcy50YXJnZXRbMF0uaW5uZXJIVE1MPSIifTt0aGlzLnJlcGxvdD1mdW5jdGlvbihhbSl7dmFyIGFuPWFtfHx7fTt2YXIgYXA9YW4uZGF0YXx8bnVsbDt2YXIgYWw9KGFuLmNsZWFyPT09ZmFsc2UpP2ZhbHNlOnRydWU7dmFyIGFvPWFuLnJlc2V0QXhlc3x8ZmFsc2U7ZGVsZXRlIGFuLmRhdGE7ZGVsZXRlIGFuLmNsZWFyO2RlbGV0ZSBhbi5yZXNldEF4ZXM7dGhpcy50YXJnZXQudHJpZ2dlcigianFwbG90UHJlUmVwbG90Iik7aWYoYWwpe3RoaXMuZGVzdHJveSgpfWlmKGFwfHwhTC5pc0VtcHR5T2JqZWN0KGFuKSl7dGhpcy5yZUluaXRpYWxpemUoYXAsYW4pfWVsc2V7dGhpcy5xdWlja0luaXQoKX1pZihhbyl7dGhpcy5yZXNldEF4ZXNTY2FsZShhbyxhbi5heGVzKX10aGlzLmRyYXcoKTt0aGlzLnRhcmdldC50cmlnZ2VyKCJqcXBsb3RQb3N0UmVwbG90Iil9O3RoaXMucmVkcmF3PWZ1bmN0aW9uKGFsKXthbD0oYWwhPW51bGwpP2FsOnRydWU7dGhpcy50YXJnZXQudHJpZ2dlcigianFwbG90UHJlUmVkcmF3Iik7aWYoYWwpe3RoaXMuY2FudmFzTWFuYWdlci5mcmVlQWxsQ2FudmFzZXMoKTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLnVuYmluZCgpO3RoaXMudGFyZ2V0LmVtcHR5KCl9Zm9yKHZhciBhbiBpbiB0aGlzLmF4ZXMpe3RoaXMuYXhlc1thbl0uX3RpY2tzPVtdfXRoaXMuY29tcHV0ZVBsb3REYXRhKCk7dGhpcy5fc3VteT0wO3RoaXMuX3N1bXg9MDtmb3IodmFyIGFtPTAsYW89dGhpcy5zZXJpZXMubGVuZ3RoO2FtPGFvO2FtKyspe3RoaXMuX3N1bXkrPXRoaXMuc2VyaWVzW2FtXS5fc3VteTt0aGlzLl9zdW14Kz10aGlzLnNlcmllc1thbV0uX3N1bXh9dGhpcy5kcmF3KCk7dGhpcy50YXJnZXQudHJpZ2dlcigianFwbG90UG9zdFJlZHJhdyIpfTt0aGlzLmRyYXc9ZnVuY3Rpb24oKXtpZih0aGlzLmRyYXdJZkhpZGRlbnx8dGhpcy50YXJnZXQuaXMoIjp2aXNpYmxlIikpe3RoaXMudGFyZ2V0LnRyaWdnZXIoImpxcGxvdFByZURyYXciKTt2YXIgYUgsYUYsYUUsYW87Zm9yKGFIPTAsYUU9TC5qcXBsb3QucHJlRHJhd0hvb2tzLmxlbmd0aDthSDxhRTthSCsrKXtMLmpxcGxvdC5wcmVEcmF3SG9va3NbYUhdLmNhbGwodGhpcyl9Zm9yKGFIPTAsYUU9dGhpcy5wcmVEcmF3SG9va3MuaG9va3MubGVuZ3RoO2FIPGFFO2FIKyspe3RoaXMucHJlRHJhd0hvb2tzLmhvb2tzW2FIXS5hcHBseSh0aGlzLHRoaXMucHJlRHJhd1Nlcmllc0hvb2tzLmFyZ3NbYUhdKX10aGlzLnRhcmdldC5hcHBlbmQodGhpcy5iYXNlQ2FudmFzLmNyZWF0ZUVsZW1lbnQoe2xlZnQ6MCxyaWdodDowLHRvcDowLGJvdHRvbTowfSwianFwbG90LWJhc2UtY2FudmFzIixudWxsLHRoaXMpKTt0aGlzLmJhc2VDYW52YXMuc2V0Q29udGV4dCgpO3RoaXMudGFyZ2V0LmFwcGVuZCh0aGlzLnRpdGxlLmRyYXcoKSk7dGhpcy50aXRsZS5wYWNrKHt0b3A6MCxsZWZ0OjB9KTt2YXIgYUw9dGhpcy5sZWdlbmQuZHJhdyh7fSx0aGlzKTt2YXIgYWw9e3RvcDowLGxlZnQ6MCxib3R0b206MCxyaWdodDowfTtpZih0aGlzLmxlZ2VuZC5wbGFjZW1lbnQ9PSJvdXRzaWRlR3JpZCIpe3RoaXMudGFyZ2V0LmFwcGVuZChhTCk7c3dpdGNoKHRoaXMubGVnZW5kLmxvY2F0aW9uKXtjYXNlIm4iOmFsLnRvcCs9dGhpcy5sZWdlbmQuZ2V0SGVpZ2h0KCk7YnJlYWs7Y2FzZSJzIjphbC5ib3R0b20rPXRoaXMubGVnZW5kLmdldEhlaWdodCgpO2JyZWFrO2Nhc2UibmUiOmNhc2UiZSI6Y2FzZSJzZSI6YWwucmlnaHQrPXRoaXMubGVnZW5kLmdldFdpZHRoKCk7YnJlYWs7Y2FzZSJudyI6Y2FzZSJ3IjpjYXNlInN3IjphbC5sZWZ0Kz10aGlzLmxlZ2VuZC5nZXRXaWR0aCgpO2JyZWFrO2RlZmF1bHQ6YWwucmlnaHQrPXRoaXMubGVnZW5kLmdldFdpZHRoKCk7YnJlYWt9YUw9YUwuZGV0YWNoKCl9dmFyIGFyPXRoaXMuYXhlczt2YXIgYU07Zm9yKGFIPTA7YUg8MTI7YUgrKyl7YU09VVthSF07dGhpcy50YXJnZXQuYXBwZW5kKGFyW2FNXS5kcmF3KHRoaXMuYmFzZUNhbnZhcy5fY3R4LHRoaXMpKTthclthTV0uc2V0KCl9aWYoYXIueWF4aXMuc2hvdyl7YWwubGVmdCs9YXIueWF4aXMuZ2V0V2lkdGgoKX12YXIgYUc9WyJ5MmF4aXMiLCJ5M2F4aXMiLCJ5NGF4aXMiLCJ5NWF4aXMiLCJ5NmF4aXMiLCJ5N2F4aXMiLCJ5OGF4aXMiLCJ5OWF4aXMiXTt2YXIgYXo9WzAsMCwwLDAsMCwwLDAsMF07dmFyIGFDPTA7dmFyIGFCO2ZvcihhQj0wO2FCPDg7YUIrKyl7aWYoYXJbYUdbYUJdXS5zaG93KXthQys9YXJbYUdbYUJdXS5nZXRXaWR0aCgpO2F6W2FCXT1hQ319YWwucmlnaHQrPWFDO2lmKGFyLngyYXhpcy5zaG93KXthbC50b3ArPWFyLngyYXhpcy5nZXRIZWlnaHQoKX1pZih0aGlzLnRpdGxlLnNob3cpe2FsLnRvcCs9dGhpcy50aXRsZS5nZXRIZWlnaHQoKX1pZihhci54YXhpcy5zaG93KXthbC5ib3R0b20rPWFyLnhheGlzLmdldEhlaWdodCgpfWlmKHRoaXMub3B0aW9ucy5ncmlkRGltZW5zaW9ucyYmTC5pc1BsYWluT2JqZWN0KHRoaXMub3B0aW9ucy5ncmlkRGltZW5zaW9ucykpe3ZhciBhdD1wYXJzZUludCh0aGlzLm9wdGlvbnMuZ3JpZERpbWVuc2lvbnMud2lkdGgsMTApfHwwO3ZhciBhST1wYXJzZUludCh0aGlzLm9wdGlvbnMuZ3JpZERpbWVuc2lvbnMuaGVpZ2h0LDEwKXx8MDt2YXIgYW49KHRoaXMuX3dpZHRoLWFsLmxlZnQtYWwucmlnaHQtYXQpLzI7dmFyIGFLPSh0aGlzLl9oZWlnaHQtYWwudG9wLWFsLmJvdHRvbS1hSSkvMjtpZihhSz49MCYmYW4+PTApe2FsLnRvcCs9YUs7YWwuYm90dG9tKz1hSzthbC5sZWZ0Kz1hbjthbC5yaWdodCs9YW59fXZhciBhbT1bInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCJdO2Zvcih2YXIgYUIgaW4gYW0pe2lmKHRoaXMuX2dyaWRQYWRkaW5nW2FtW2FCXV09PW51bGwmJmFsW2FtW2FCXV0+MCl7dGhpcy5fZ3JpZFBhZGRpbmdbYW1bYUJdXT1hbFthbVthQl1dfWVsc2V7aWYodGhpcy5fZ3JpZFBhZGRpbmdbYW1bYUJdXT09bnVsbCl7dGhpcy5fZ3JpZFBhZGRpbmdbYW1bYUJdXT10aGlzLl9kZWZhdWx0R3JpZFBhZGRpbmdbYW1bYUJdXX19fXZhciBhQT10aGlzLl9ncmlkUGFkZGluZztpZih0aGlzLmxlZ2VuZC5wbGFjZW1lbnQ9PT0ib3V0c2lkZUdyaWQiKXthQT17dG9wOnRoaXMudGl0bGUuZ2V0SGVpZ2h0KCksbGVmdDowLHJpZ2h0OjAsYm90dG9tOjB9O2lmKHRoaXMubGVnZW5kLmxvY2F0aW9uPT09InMiKXthQS5sZWZ0PXRoaXMuX2dyaWRQYWRkaW5nLmxlZnQ7YUEucmlnaHQ9dGhpcy5fZ3JpZFBhZGRpbmcucmlnaHR9fWFyLnhheGlzLnBhY2soe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsYm90dG9tOnRoaXMuX2dyaWRQYWRkaW5nLmJvdHRvbS1hci54YXhpcy5nZXRIZWlnaHQoKSxsZWZ0OjAsd2lkdGg6dGhpcy5fd2lkdGh9LHttaW46dGhpcy5fZ3JpZFBhZGRpbmcubGVmdCxtYXg6dGhpcy5fd2lkdGgtdGhpcy5fZ3JpZFBhZGRpbmcucmlnaHR9KTthci55YXhpcy5wYWNrKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDowLGxlZnQ6dGhpcy5fZ3JpZFBhZGRpbmcubGVmdC1hci55YXhpcy5nZXRXaWR0aCgpLGhlaWdodDp0aGlzLl9oZWlnaHR9LHttaW46dGhpcy5faGVpZ2h0LXRoaXMuX2dyaWRQYWRkaW5nLmJvdHRvbSxtYXg6dGhpcy5fZ3JpZFBhZGRpbmcudG9wfSk7YXIueDJheGlzLnBhY2soe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOnRoaXMuX2dyaWRQYWRkaW5nLnRvcC1hci54MmF4aXMuZ2V0SGVpZ2h0KCksbGVmdDowLHdpZHRoOnRoaXMuX3dpZHRofSx7bWluOnRoaXMuX2dyaWRQYWRkaW5nLmxlZnQsbWF4OnRoaXMuX3dpZHRoLXRoaXMuX2dyaWRQYWRkaW5nLnJpZ2h0fSk7Zm9yKGFIPTg7YUg+MDthSC0tKXthclthR1thSC0xXV0ucGFjayh7cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxyaWdodDp0aGlzLl9ncmlkUGFkZGluZy5yaWdodC1helthSC0xXX0se21pbjp0aGlzLl9oZWlnaHQtdGhpcy5fZ3JpZFBhZGRpbmcuYm90dG9tLG1heDp0aGlzLl9ncmlkUGFkZGluZy50b3B9KX12YXIgYXU9KHRoaXMuX3dpZHRoLXRoaXMuX2dyaWRQYWRkaW5nLmxlZnQtdGhpcy5fZ3JpZFBhZGRpbmcucmlnaHQpLzIrdGhpcy5fZ3JpZFBhZGRpbmcubGVmdC1hci55TWlkQXhpcy5nZXRXaWR0aCgpLzI7YXIueU1pZEF4aXMucGFjayh7cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OmF1LHpJbmRleDo5LHRleHRBbGlnbjoiY2VudGVyIn0se21pbjp0aGlzLl9oZWlnaHQtdGhpcy5fZ3JpZFBhZGRpbmcuYm90dG9tLG1heDp0aGlzLl9ncmlkUGFkZGluZy50b3B9KTt0aGlzLnRhcmdldC5hcHBlbmQodGhpcy5ncmlkLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsdGhpcykpO3RoaXMuZ3JpZC5kcmF3KCk7dmFyIGFxPXRoaXMuc2VyaWVzO3ZhciBhSj1hcS5sZW5ndGg7Zm9yKGFIPTAsYUU9YUo7YUg8YUU7YUgrKyl7YUY9dGhpcy5zZXJpZXNTdGFja1thSF07dGhpcy50YXJnZXQuYXBwZW5kKGFxW2FGXS5zaGFkb3dDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywianFwbG90LXNlcmllcy1zaGFkb3dDYW52YXMiLG51bGwsdGhpcykpO2FxW2FGXS5zaGFkb3dDYW52YXMuc2V0Q29udGV4dCgpO2FxW2FGXS5zaGFkb3dDYW52YXMuX2VsZW0uZGF0YSgic2VyaWVzSW5kZXgiLGFGKX1mb3IoYUg9MCxhRT1hSjthSDxhRTthSCsrKXthRj10aGlzLnNlcmllc1N0YWNrW2FIXTt0aGlzLnRhcmdldC5hcHBlbmQoYXFbYUZdLmNhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCJqcXBsb3Qtc2VyaWVzLWNhbnZhcyIsbnVsbCx0aGlzKSk7YXFbYUZdLmNhbnZhcy5zZXRDb250ZXh0KCk7YXFbYUZdLmNhbnZhcy5fZWxlbS5kYXRhKCJzZXJpZXNJbmRleCIsYUYpfXRoaXMudGFyZ2V0LmFwcGVuZCh0aGlzLmV2ZW50Q2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsImpxcGxvdC1ldmVudC1jYW52YXMiLG51bGwsdGhpcykpO3RoaXMuZXZlbnRDYW52YXMuc2V0Q29udGV4dCgpO3RoaXMuZXZlbnRDYW52YXMuX2N0eC5maWxsU3R5bGU9InJnYmEoMCwwLDAsMCkiO3RoaXMuZXZlbnRDYW52YXMuX2N0eC5maWxsUmVjdCgwLDAsdGhpcy5ldmVudENhbnZhcy5fY3R4LmNhbnZhcy53aWR0aCx0aGlzLmV2ZW50Q2FudmFzLl9jdHguY2FudmFzLmhlaWdodCk7dGhpcy5iaW5kQ3VzdG9tRXZlbnRzKCk7aWYodGhpcy5sZWdlbmQucHJlRHJhdyl7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUoYUwpO3RoaXMubGVnZW5kLnBhY2soYUEpO2lmKHRoaXMubGVnZW5kLl9lbGVtKXt0aGlzLmRyYXdTZXJpZXMoe2xlZ2VuZEluZm86e2xvY2F0aW9uOnRoaXMubGVnZW5kLmxvY2F0aW9uLHBsYWNlbWVudDp0aGlzLmxlZ2VuZC5wbGFjZW1lbnQsd2lkdGg6dGhpcy5sZWdlbmQuZ2V0V2lkdGgoKSxoZWlnaHQ6dGhpcy5sZWdlbmQuZ2V0SGVpZ2h0KCkseG9mZnNldDp0aGlzLmxlZ2VuZC54b2Zmc2V0LHlvZmZzZXQ6dGhpcy5sZWdlbmQueW9mZnNldH19KX1lbHNle3RoaXMuZHJhd1NlcmllcygpfX1lbHNle3RoaXMuZHJhd1NlcmllcygpO2lmKGFKKXtMKGFxW2FKLTFdLmNhbnZhcy5fZWxlbSkuYWZ0ZXIoYUwpfXRoaXMubGVnZW5kLnBhY2soYUEpfWZvcih2YXIgYUg9MCxhRT1MLmpxcGxvdC5ldmVudExpc3RlbmVySG9va3MubGVuZ3RoO2FIPGFFO2FIKyspe3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZChMLmpxcGxvdC5ldmVudExpc3RlbmVySG9va3NbYUhdWzBdLHtwbG90OnRoaXN9LEwuanFwbG90LmV2ZW50TGlzdGVuZXJIb29rc1thSF1bMV0pfWZvcih2YXIgYUg9MCxhRT10aGlzLmV2ZW50TGlzdGVuZXJIb29rcy5ob29rcy5sZW5ndGg7YUg8YUU7YUgrKyl7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKHRoaXMuZXZlbnRMaXN0ZW5lckhvb2tzLmhvb2tzW2FIXVswXSx7cGxvdDp0aGlzfSx0aGlzLmV2ZW50TGlzdGVuZXJIb29rcy5ob29rc1thSF1bMV0pfXZhciBheT10aGlzLmZpbGxCZXR3ZWVuO2lmKGF5LmZpbGwmJmF5LnNlcmllczEhPT1heS5zZXJpZXMyJiZheS5zZXJpZXMxPGFKJiZheS5zZXJpZXMyPGFKJiZhcVtheS5zZXJpZXMxXS5fdHlwZT09PSJsaW5lIiYmYXFbYXkuc2VyaWVzMl0uX3R5cGU9PT0ibGluZSIpe3RoaXMuZG9GaWxsQmV0d2VlbkxpbmVzKCl9Zm9yKHZhciBhSD0wLGFFPUwuanFwbG90LnBvc3REcmF3SG9va3MubGVuZ3RoO2FIPGFFO2FIKyspe0wuanFwbG90LnBvc3REcmF3SG9va3NbYUhdLmNhbGwodGhpcyl9Zm9yKHZhciBhSD0wLGFFPXRoaXMucG9zdERyYXdIb29rcy5ob29rcy5sZW5ndGg7YUg8YUU7YUgrKyl7dGhpcy5wb3N0RHJhd0hvb2tzLmhvb2tzW2FIXS5hcHBseSh0aGlzLHRoaXMucG9zdERyYXdIb29rcy5hcmdzW2FIXSl9aWYodGhpcy50YXJnZXQuaXMoIjp2aXNpYmxlIikpe3RoaXMuX2RyYXdDb3VudCs9MX12YXIgYXYsYXcsYUQsYXA7Zm9yKGFIPTAsYUU9YUo7YUg8YUU7YUgrKyl7YXY9YXFbYUhdO2F3PWF2LnJlbmRlcmVyO2FEPSIuanFwbG90LXBvaW50LWxhYmVsLmpxcGxvdC1zZXJpZXMtIithSDtpZihhdy5hbmltYXRpb24mJmF3LmFuaW1hdGlvbi5fc3VwcG9ydGVkJiZhdy5hbmltYXRpb24uc2hvdyYmKHRoaXMuX2RyYXdDb3VudDwyfHx0aGlzLmFuaW1hdGVSZXBsb3QpKXthcD10aGlzLnRhcmdldC5maW5kKGFEKTthcC5zdG9wKHRydWUsdHJ1ZSkuaGlkZSgpO2F2LmNhbnZhcy5fZWxlbS5zdG9wKHRydWUsdHJ1ZSkuaGlkZSgpO2F2LnNoYWRvd0NhbnZhcy5fZWxlbS5zdG9wKHRydWUsdHJ1ZSkuaGlkZSgpO2F2LmNhbnZhcy5fZWxlbS5qcXBsb3RFZmZlY3QoImJsaW5kIix7bW9kZToic2hvdyIsZGlyZWN0aW9uOmF3LmFuaW1hdGlvbi5kaXJlY3Rpb259LGF3LmFuaW1hdGlvbi5zcGVlZCk7YXYuc2hhZG93Q2FudmFzLl9lbGVtLmpxcGxvdEVmZmVjdCgiYmxpbmQiLHttb2RlOiJzaG93IixkaXJlY3Rpb246YXcuYW5pbWF0aW9uLmRpcmVjdGlvbn0sYXcuYW5pbWF0aW9uLnNwZWVkKTthcC5mYWRlSW4oYXcuYW5pbWF0aW9uLnNwZWVkKjAuOCl9fWFwPW51bGw7dGhpcy50YXJnZXQudHJpZ2dlcigianFwbG90UG9zdERyYXciLFt0aGlzXSl9fTtSLnByb3RvdHlwZS5kb0ZpbGxCZXR3ZWVuTGluZXM9ZnVuY3Rpb24oKXt2YXIgYW49dGhpcy5maWxsQmV0d2Vlbjt2YXIgYXg9YW4uc2VyaWVzMTt2YXIgYXY9YW4uc2VyaWVzMjt2YXIgYXc9KGF4PGF2KT9heDphdjt2YXIgYXU9KGF2PmF4KT9hdjpheDt2YXIgYXI9dGhpcy5zZXJpZXNbYXddO3ZhciBhcT10aGlzLnNlcmllc1thdV07aWYoYXEucmVuZGVyZXIuc21vb3RoKXt2YXIgYXA9YXEucmVuZGVyZXIuX3Ntb290aGVkRGF0YS5zbGljZSgwKS5yZXZlcnNlKCl9ZWxzZXt2YXIgYXA9YXEuZ3JpZERhdGEuc2xpY2UoMCkucmV2ZXJzZSgpfWlmKGFyLnJlbmRlcmVyLnNtb290aCl7dmFyIGF0PWFyLnJlbmRlcmVyLl9zbW9vdGhlZERhdGEuY29uY2F0KGFwKX1lbHNle3ZhciBhdD1hci5ncmlkRGF0YS5jb25jYXQoYXApfXZhciBhbz0oYW4uY29sb3IhPT1udWxsKT9hbi5jb2xvcjp0aGlzLnNlcmllc1theF0uZmlsbENvbG9yO3ZhciBheT0oYW4uYmFzZVNlcmllcyE9PW51bGwpP2FuLmJhc2VTZXJpZXM6YXc7dmFyIGFtPXRoaXMuc2VyaWVzW2F5XS5yZW5kZXJlci5zaGFwZVJlbmRlcmVyO3ZhciBhbD17ZmlsbFN0eWxlOmFvLGZpbGw6dHJ1ZSxjbG9zZVBhdGg6dHJ1ZX07YW0uZHJhdyhhci5zaGFkb3dDYW52YXMuX2N0eCxhdCxhbCl9O3RoaXMuYmluZEN1c3RvbUV2ZW50cz1mdW5jdGlvbigpe3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgiY2xpY2siLHtwbG90OnRoaXN9LHRoaXMub25DbGljayk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCJkYmxjbGljayIse3Bsb3Q6dGhpc30sdGhpcy5vbkRibENsaWNrKTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoIm1vdXNlZG93biIse3Bsb3Q6dGhpc30sdGhpcy5vbk1vdXNlRG93bik7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCJtb3VzZW1vdmUiLHtwbG90OnRoaXN9LHRoaXMub25Nb3VzZU1vdmUpO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgibW91c2VlbnRlciIse3Bsb3Q6dGhpc30sdGhpcy5vbk1vdXNlRW50ZXIpO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgibW91c2VsZWF2ZSIse3Bsb3Q6dGhpc30sdGhpcy5vbk1vdXNlTGVhdmUpO2lmKHRoaXMuY2FwdHVyZVJpZ2h0Q2xpY2spe3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgibW91c2V1cCIse3Bsb3Q6dGhpc30sdGhpcy5vblJpZ2h0Q2xpY2spO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uZ2V0KDApLm9uY29udGV4dG1lbnU9ZnVuY3Rpb24oKXtyZXR1cm4gZmFsc2V9fWVsc2V7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCJtb3VzZXVwIix7cGxvdDp0aGlzfSx0aGlzLm9uTW91c2VVcCl9fTtmdW5jdGlvbiBhaShhdil7dmFyIGF1PWF2LmRhdGEucGxvdDt2YXIgYXA9YXUuZXZlbnRDYW52YXMuX2VsZW0ub2Zmc2V0KCk7dmFyIGF0PXt4OmF2LnBhZ2VYLWFwLmxlZnQseTphdi5wYWdlWS1hcC50b3B9O3ZhciBhcT17eGF4aXM6bnVsbCx5YXhpczpudWxsLHgyYXhpczpudWxsLHkyYXhpczpudWxsLHkzYXhpczpudWxsLHk0YXhpczpudWxsLHk1YXhpczpudWxsLHk2YXhpczpudWxsLHk3YXhpczpudWxsLHk4YXhpczpudWxsLHk5YXhpczpudWxsLHlNaWRBeGlzOm51bGx9O3ZhciBhcj1bInhheGlzIiwieWF4aXMiLCJ4MmF4aXMiLCJ5MmF4aXMiLCJ5M2F4aXMiLCJ5NGF4aXMiLCJ5NWF4aXMiLCJ5NmF4aXMiLCJ5N2F4aXMiLCJ5OGF4aXMiLCJ5OWF4aXMiLCJ5TWlkQXhpcyJdO3ZhciBhbD1hdS5heGVzO3ZhciBhbSxhbztmb3IoYW09MTE7YW0+MDthbS0tKXthbz1hclthbS0xXTtpZihhbFthb10uc2hvdyl7YXFbYW9dPWFsW2FvXS5zZXJpZXNfcDJ1KGF0W2FvLmNoYXJBdCgwKV0pfX1yZXR1cm57b2Zmc2V0czphcCxncmlkUG9zOmF0LGRhdGFQb3M6YXF9fWZ1bmN0aW9uIGFrKGFsLGFtKXt2YXIgYXE9YW0uc2VyaWVzO3ZhciBhVyxhVSxhVCxhTyxhUCxhSixhSSxhdyxhdSxheixhQSxhSzt2YXIgYVMsYVgsYVEsYXIsYUgsYU0sYVY7dmFyIGFuLGFOO2ZvcihhVD1hbS5zZXJpZXNTdGFjay5sZW5ndGgtMTthVD49MDthVC0tKXthVz1hbS5zZXJpZXNTdGFja1thVF07YU89YXFbYVddO2FWPWFPLl9oaWdobGlnaHRUaHJlc2hvbGQ7c3dpdGNoKGFPLnJlbmRlcmVyLmNvbnN0cnVjdG9yKXtjYXNlIEwuanFwbG90LkJhclJlbmRlcmVyOmFKPWFsLng7YUk9YWwueTtmb3IoYVU9MDthVTxhTy5fYmFyUG9pbnRzLmxlbmd0aDthVSsrKXthSD1hTy5fYmFyUG9pbnRzW2FVXTthUT1hTy5ncmlkRGF0YVthVV07aWYoYUo+YUhbMF1bMF0mJmFKPGFIWzJdWzBdJiZhST5hSFsyXVsxXSYmYUk8YUhbMF1bMV0pe3JldHVybntzZXJpZXNJbmRleDphTy5pbmRleCxwb2ludEluZGV4OmFVLGdyaWREYXRhOmFRLGRhdGE6YU8uZGF0YVthVV0scG9pbnRzOmFPLl9iYXJQb2ludHNbYVVdfX19YnJlYWs7Y2FzZSBMLmpxcGxvdC5QeXJhbWlkUmVuZGVyZXI6YUo9YWwueDthST1hbC55O2ZvcihhVT0wO2FVPGFPLl9iYXJQb2ludHMubGVuZ3RoO2FVKyspe2FIPWFPLl9iYXJQb2ludHNbYVVdO2FRPWFPLmdyaWREYXRhW2FVXTtpZihhSj5hSFswXVswXSthVlswXVswXSYmYUo8YUhbMl1bMF0rYVZbMl1bMF0mJmFJPmFIWzJdWzFdJiZhSTxhSFswXVsxXSl7cmV0dXJue3Nlcmllc0luZGV4OmFPLmluZGV4LHBvaW50SW5kZXg6YVUsZ3JpZERhdGE6YVEsZGF0YTphTy5kYXRhW2FVXSxwb2ludHM6YU8uX2JhclBvaW50c1thVV19fX1icmVhaztjYXNlIEwuanFwbG90LkRvbnV0UmVuZGVyZXI6YXo9YU8uc3RhcnRBbmdsZS8xODAqTWF0aC5QSTthSj1hbC54LWFPLl9jZW50ZXJbMF07YUk9YWwueS1hTy5fY2VudGVyWzFdO2FQPU1hdGguc3FydChNYXRoLnBvdyhhSiwyKStNYXRoLnBvdyhhSSwyKSk7aWYoYUo+MCYmLWFJPj0wKXthdz0yKk1hdGguUEktTWF0aC5hdGFuKC1hSS9hSil9ZWxzZXtpZihhSj4wJiYtYUk8MCl7YXc9LU1hdGguYXRhbigtYUkvYUopfWVsc2V7aWYoYUo8MCl7YXc9TWF0aC5QSS1NYXRoLmF0YW4oLWFJL2FKKX1lbHNle2lmKGFKPT0wJiYtYUk+MCl7YXc9MypNYXRoLlBJLzJ9ZWxzZXtpZihhSj09MCYmLWFJPDApe2F3PU1hdGguUEkvMn1lbHNle2lmKGFKPT0wJiZhST09MCl7YXc9MH19fX19fWlmKGF6KXthdy09YXo7aWYoYXc8MCl7YXcrPTIqTWF0aC5QSX1lbHNle2lmKGF3PjIqTWF0aC5QSSl7YXctPTIqTWF0aC5QSX19fWF1PWFPLnNsaWNlTWFyZ2luLzE4MCpNYXRoLlBJO2lmKGFQPGFPLl9yYWRpdXMmJmFQPmFPLl9pbm5lclJhZGl1cyl7Zm9yKGFVPTA7YVU8YU8uZ3JpZERhdGEubGVuZ3RoO2FVKyspe2FBPShhVT4wKT9hTy5ncmlkRGF0YVthVS0xXVsxXSthdTphdTthSz1hTy5ncmlkRGF0YVthVV1bMV07aWYoYXc+YUEmJmF3PGFLKXtyZXR1cm57c2VyaWVzSW5kZXg6YU8uaW5kZXgscG9pbnRJbmRleDphVSxncmlkRGF0YTpbYWwueCxhbC55XSxkYXRhOmFPLmRhdGFbYVVdfX19fWJyZWFrO2Nhc2UgTC5qcXBsb3QuUGllUmVuZGVyZXI6YXo9YU8uc3RhcnRBbmdsZS8xODAqTWF0aC5QSTthSj1hbC54LWFPLl9jZW50ZXJbMF07YUk9YWwueS1hTy5fY2VudGVyWzFdO2FQPU1hdGguc3FydChNYXRoLnBvdyhhSiwyKStNYXRoLnBvdyhhSSwyKSk7aWYoYUo+MCYmLWFJPj0wKXthdz0yKk1hdGguUEktTWF0aC5hdGFuKC1hSS9hSil9ZWxzZXtpZihhSj4wJiYtYUk8MCl7YXc9LU1hdGguYXRhbigtYUkvYUopfWVsc2V7aWYoYUo8MCl7YXc9TWF0aC5QSS1NYXRoLmF0YW4oLWFJL2FKKX1lbHNle2lmKGFKPT0wJiYtYUk+MCl7YXc9MypNYXRoLlBJLzJ9ZWxzZXtpZihhSj09MCYmLWFJPDApe2F3PU1hdGguUEkvMn1lbHNle2lmKGFKPT0wJiZhST09MCl7YXc9MH19fX19fWlmKGF6KXthdy09YXo7aWYoYXc8MCl7YXcrPTIqTWF0aC5QSX1lbHNle2lmKGF3PjIqTWF0aC5QSSl7YXctPTIqTWF0aC5QSX19fWF1PWFPLnNsaWNlTWFyZ2luLzE4MCpNYXRoLlBJO2lmKGFQPGFPLl9yYWRpdXMpe2ZvcihhVT0wO2FVPGFPLmdyaWREYXRhLmxlbmd0aDthVSsrKXthQT0oYVU+MCk/YU8uZ3JpZERhdGFbYVUtMV1bMV0rYXU6YXU7YUs9YU8uZ3JpZERhdGFbYVVdWzFdO2lmKGF3PmFBJiZhdzxhSyl7cmV0dXJue3Nlcmllc0luZGV4OmFPLmluZGV4LHBvaW50SW5kZXg6YVUsZ3JpZERhdGE6W2FsLngsYWwueV0sZGF0YTphTy5kYXRhW2FVXX19fX1icmVhaztjYXNlIEwuanFwbG90LkJ1YmJsZVJlbmRlcmVyOmFKPWFsLng7YUk9YWwueTt2YXIgYUY9bnVsbDtpZihhTy5zaG93KXtmb3IodmFyIGFVPTA7YVU8YU8uZ3JpZERhdGEubGVuZ3RoO2FVKyspe2FRPWFPLmdyaWREYXRhW2FVXTthWD1NYXRoLnNxcnQoKGFKLWFRWzBdKSooYUotYVFbMF0pKyhhSS1hUVsxXSkqKGFJLWFRWzFdKSk7aWYoYVg8PWFRWzJdJiYoYVg8PWFTfHxhUz09bnVsbCkpe2FTPWFYO2FGPXtzZXJpZXNJbmRleDphVyxwb2ludEluZGV4OmFVLGdyaWREYXRhOmFRLGRhdGE6YU8uZGF0YVthVV19fX1pZihhRiE9bnVsbCl7cmV0dXJuIGFGfX1icmVhaztjYXNlIEwuanFwbG90LkZ1bm5lbFJlbmRlcmVyOmFKPWFsLng7YUk9YWwueTt2YXIgYUw9YU8uX3ZlcnRpY2VzLGFwPWFMWzBdLGFvPWFMW2FMLmxlbmd0aC0xXSxhdCxhRSxheTtmdW5jdGlvbiBhUihhMCxhMixhMSl7dmFyIGFaPShhMlsxXS1hMVsxXSkvKGEyWzBdLWExWzBdKTt2YXIgYVk9YTJbMV0tYVoqYTJbMF07dmFyIGEzPWEwK2EyWzFdO3JldHVyblsoYTMtYVkpL2FaLGEzXX1hdD1hUihhSSxhcFswXSxhb1szXSk7YUU9YVIoYUksYXBbMV0sYW9bMl0pO2ZvcihhVT0wO2FVPGFMLmxlbmd0aDthVSsrKXtheT1hTFthVV07aWYoYUk+PWF5WzBdWzFdJiZhSTw9YXlbM11bMV0mJmFKPj1hdFswXSYmYUo8PWFFWzBdKXtyZXR1cm57c2VyaWVzSW5kZXg6YU8uaW5kZXgscG9pbnRJbmRleDphVSxncmlkRGF0YTpudWxsLGRhdGE6YU8uZGF0YVthVV19fX1icmVhaztjYXNlIEwuanFwbG90LkxpbmVSZW5kZXJlcjphSj1hbC54O2FJPWFsLnk7YVA9YU8ucmVuZGVyZXI7aWYoYU8uc2hvdyl7aWYoKGFPLmZpbGx8fChhTy5yZW5kZXJlci5iYW5kcy5zaG93JiZhTy5yZW5kZXJlci5iYW5kcy5maWxsKSkmJighYW0ucGx1Z2lucy5oaWdobGlnaHRlcnx8IWFtLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuc2hvdykpe3ZhciBheD1mYWxzZTtpZihhSj5hTy5fYm91bmRpbmdCb3hbMF1bMF0mJmFKPGFPLl9ib3VuZGluZ0JveFsxXVswXSYmYUk+YU8uX2JvdW5kaW5nQm94WzFdWzFdJiZhSTxhTy5fYm91bmRpbmdCb3hbMF1bMV0pe3ZhciBhRD1hTy5fYXJlYVBvaW50cy5sZW5ndGg7dmFyIGFHO3ZhciBhVT1hRC0xO2Zvcih2YXIgYUc9MDthRzxhRDthRysrKXt2YXIgYUM9W2FPLl9hcmVhUG9pbnRzW2FHXVswXSxhTy5fYXJlYVBvaW50c1thR11bMV1dO3ZhciBhQj1bYU8uX2FyZWFQb2ludHNbYVVdWzBdLGFPLl9hcmVhUG9pbnRzW2FVXVsxXV07aWYoYUNbMV08YUkmJmFCWzFdPj1hSXx8YUJbMV08YUkmJmFDWzFdPj1hSSl7aWYoYUNbMF0rKGFJLWFDWzFdKS8oYUJbMV0tYUNbMV0pKihhQlswXS1hQ1swXSk8YUope2F4PSFheH19YVU9YUd9fWlmKGF4KXtyZXR1cm57c2VyaWVzSW5kZXg6YVcscG9pbnRJbmRleDpudWxsLGdyaWREYXRhOmFPLmdyaWREYXRhLGRhdGE6YU8uZGF0YSxwb2ludHM6YU8uX2FyZWFQb2ludHN9fWJyZWFrfWVsc2V7YU49YU8ubWFya2VyUmVuZGVyZXIuc2l6ZS8yK2FPLm5laWdoYm9yVGhyZXNob2xkO2FuPShhTj4wKT9hTjowO2Zvcih2YXIgYVU9MDthVTxhTy5ncmlkRGF0YS5sZW5ndGg7YVUrKyl7YVE9YU8uZ3JpZERhdGFbYVVdO2lmKGFQLmNvbnN0cnVjdG9yPT1MLmpxcGxvdC5PSExDUmVuZGVyZXIpe2lmKGFQLmNhbmRsZVN0aWNrKXt2YXIgYXY9YU8uX3lheGlzLnNlcmllc191MnA7aWYoYUo+PWFRWzBdLWFQLl9ib2R5V2lkdGgvMiYmYUo8PWFRWzBdK2FQLl9ib2R5V2lkdGgvMiYmYUk+PWF2KGFPLmRhdGFbYVVdWzJdKSYmYUk8PWF2KGFPLmRhdGFbYVVdWzNdKSl7cmV0dXJue3Nlcmllc0luZGV4OmFXLHBvaW50SW5kZXg6YVUsZ3JpZERhdGE6YVEsZGF0YTphTy5kYXRhW2FVXX19fWVsc2V7aWYoIWFQLmhsYyl7dmFyIGF2PWFPLl95YXhpcy5zZXJpZXNfdTJwO2lmKGFKPj1hUVswXS1hUC5fdGlja0xlbmd0aCYmYUo8PWFRWzBdK2FQLl90aWNrTGVuZ3RoJiZhST49YXYoYU8uZGF0YVthVV1bMl0pJiZhSTw9YXYoYU8uZGF0YVthVV1bM10pKXtyZXR1cm57c2VyaWVzSW5kZXg6YVcscG9pbnRJbmRleDphVSxncmlkRGF0YTphUSxkYXRhOmFPLmRhdGFbYVVdfX19ZWxzZXt2YXIgYXY9YU8uX3lheGlzLnNlcmllc191MnA7aWYoYUo+PWFRWzBdLWFQLl90aWNrTGVuZ3RoJiZhSjw9YVFbMF0rYVAuX3RpY2tMZW5ndGgmJmFJPj1hdihhTy5kYXRhW2FVXVsxXSkmJmFJPD1hdihhTy5kYXRhW2FVXVsyXSkpe3JldHVybntzZXJpZXNJbmRleDphVyxwb2ludEluZGV4OmFVLGdyaWREYXRhOmFRLGRhdGE6YU8uZGF0YVthVV19fX19fWVsc2V7aWYoYVFbMF0hPW51bGwmJmFRWzFdIT1udWxsKXthWD1NYXRoLnNxcnQoKGFKLWFRWzBdKSooYUotYVFbMF0pKyhhSS1hUVsxXSkqKGFJLWFRWzFdKSk7aWYoYVg8PWFuJiYoYVg8PWFTfHxhUz09bnVsbCkpe2FTPWFYO3JldHVybntzZXJpZXNJbmRleDphVyxwb2ludEluZGV4OmFVLGdyaWREYXRhOmFRLGRhdGE6YU8uZGF0YVthVV19fX19fX19YnJlYWs7ZGVmYXVsdDphSj1hbC54O2FJPWFsLnk7YVA9YU8ucmVuZGVyZXI7aWYoYU8uc2hvdyl7YU49YU8ubWFya2VyUmVuZGVyZXIuc2l6ZS8yK2FPLm5laWdoYm9yVGhyZXNob2xkO2FuPShhTj4wKT9hTjowO2Zvcih2YXIgYVU9MDthVTxhTy5ncmlkRGF0YS5sZW5ndGg7YVUrKyl7YVE9YU8uZ3JpZERhdGFbYVVdO2lmKGFQLmNvbnN0cnVjdG9yPT1MLmpxcGxvdC5PSExDUmVuZGVyZXIpe2lmKGFQLmNhbmRsZVN0aWNrKXt2YXIgYXY9YU8uX3lheGlzLnNlcmllc191MnA7aWYoYUo+PWFRWzBdLWFQLl9ib2R5V2lkdGgvMiYmYUo8PWFRWzBdK2FQLl9ib2R5V2lkdGgvMiYmYUk+PWF2KGFPLmRhdGFbYVVdWzJdKSYmYUk8PWF2KGFPLmRhdGFbYVVdWzNdKSl7cmV0dXJue3Nlcmllc0luZGV4OmFXLHBvaW50SW5kZXg6YVUsZ3JpZERhdGE6YVEsZGF0YTphTy5kYXRhW2FVXX19fWVsc2V7aWYoIWFQLmhsYyl7dmFyIGF2PWFPLl95YXhpcy5zZXJpZXNfdTJwO2lmKGFKPj1hUVswXS1hUC5fdGlja0xlbmd0aCYmYUo8PWFRWzBdK2FQLl90aWNrTGVuZ3RoJiZhST49YXYoYU8uZGF0YVthVV1bMl0pJiZhSTw9YXYoYU8uZGF0YVthVV1bM10pKXtyZXR1cm57c2VyaWVzSW5kZXg6YVcscG9pbnRJbmRleDphVSxncmlkRGF0YTphUSxkYXRhOmFPLmRhdGFbYVVdfX19ZWxzZXt2YXIgYXY9YU8uX3lheGlzLnNlcmllc191MnA7aWYoYUo+PWFRWzBdLWFQLl90aWNrTGVuZ3RoJiZhSjw9YVFbMF0rYVAuX3RpY2tMZW5ndGgmJmFJPj1hdihhTy5kYXRhW2FVXVsxXSkmJmFJPD1hdihhTy5kYXRhW2FVXVsyXSkpe3JldHVybntzZXJpZXNJbmRleDphVyxwb2ludEluZGV4OmFVLGdyaWREYXRhOmFRLGRhdGE6YU8uZGF0YVthVV19fX19fWVsc2V7YVg9TWF0aC5zcXJ0KChhSi1hUVswXSkqKGFKLWFRWzBdKSsoYUktYVFbMV0pKihhSS1hUVsxXSkpO2lmKGFYPD1hbiYmKGFYPD1hU3x8YVM9PW51bGwpKXthUz1hWDtyZXR1cm57c2VyaWVzSW5kZXg6YVcscG9pbnRJbmRleDphVSxncmlkRGF0YTphUSxkYXRhOmFPLmRhdGFbYVVdfX19fX1icmVha319cmV0dXJuIG51bGx9dGhpcy5vbkNsaWNrPWZ1bmN0aW9uKGFuKXt2YXIgYW09YWkoYW4pO3ZhciBhcD1hbi5kYXRhLnBsb3Q7dmFyIGFvPWFrKGFtLmdyaWRQb3MsYXApO3ZhciBhbD1MLkV2ZW50KCJqcXBsb3RDbGljayIpO2FsLnBhZ2VYPWFuLnBhZ2VYO2FsLnBhZ2VZPWFuLnBhZ2VZO0wodGhpcykudHJpZ2dlcihhbCxbYW0uZ3JpZFBvcyxhbS5kYXRhUG9zLGFvLGFwXSl9O3RoaXMub25EYmxDbGljaz1mdW5jdGlvbihhbil7dmFyIGFtPWFpKGFuKTt2YXIgYXA9YW4uZGF0YS5wbG90O3ZhciBhbz1hayhhbS5ncmlkUG9zLGFwKTt2YXIgYWw9TC5FdmVudCgianFwbG90RGJsQ2xpY2siKTthbC5wYWdlWD1hbi5wYWdlWDthbC5wYWdlWT1hbi5wYWdlWTtMKHRoaXMpLnRyaWdnZXIoYWwsW2FtLmdyaWRQb3MsYW0uZGF0YVBvcyxhbyxhcF0pfTt0aGlzLm9uTW91c2VEb3duPWZ1bmN0aW9uKGFuKXt2YXIgYW09YWkoYW4pO3ZhciBhcD1hbi5kYXRhLnBsb3Q7dmFyIGFvPWFrKGFtLmdyaWRQb3MsYXApO3ZhciBhbD1MLkV2ZW50KCJqcXBsb3RNb3VzZURvd24iKTthbC5wYWdlWD1hbi5wYWdlWDthbC5wYWdlWT1hbi5wYWdlWTtMKHRoaXMpLnRyaWdnZXIoYWwsW2FtLmdyaWRQb3MsYW0uZGF0YVBvcyxhbyxhcF0pfTt0aGlzLm9uTW91c2VVcD1mdW5jdGlvbihhbil7dmFyIGFtPWFpKGFuKTt2YXIgYWw9TC5FdmVudCgianFwbG90TW91c2VVcCIpO2FsLnBhZ2VYPWFuLnBhZ2VYO2FsLnBhZ2VZPWFuLnBhZ2VZO0wodGhpcykudHJpZ2dlcihhbCxbYW0uZ3JpZFBvcyxhbS5kYXRhUG9zLG51bGwsYW4uZGF0YS5wbG90XSl9O3RoaXMub25SaWdodENsaWNrPWZ1bmN0aW9uKGFuKXt2YXIgYW09YWkoYW4pO3ZhciBhcD1hbi5kYXRhLnBsb3Q7dmFyIGFvPWFrKGFtLmdyaWRQb3MsYXApO2lmKGFwLmNhcHR1cmVSaWdodENsaWNrKXtpZihhbi53aGljaD09Myl7dmFyIGFsPUwuRXZlbnQoImpxcGxvdFJpZ2h0Q2xpY2siKTthbC5wYWdlWD1hbi5wYWdlWDthbC5wYWdlWT1hbi5wYWdlWTtMKHRoaXMpLnRyaWdnZXIoYWwsW2FtLmdyaWRQb3MsYW0uZGF0YVBvcyxhbyxhcF0pfWVsc2V7dmFyIGFsPUwuRXZlbnQoImpxcGxvdE1vdXNlVXAiKTthbC5wYWdlWD1hbi5wYWdlWDthbC5wYWdlWT1hbi5wYWdlWTtMKHRoaXMpLnRyaWdnZXIoYWwsW2FtLmdyaWRQb3MsYW0uZGF0YVBvcyxhbyxhcF0pfX19O3RoaXMub25Nb3VzZU1vdmU9ZnVuY3Rpb24oYW4pe3ZhciBhbT1haShhbik7dmFyIGFwPWFuLmRhdGEucGxvdDt2YXIgYW89YWsoYW0uZ3JpZFBvcyxhcCk7dmFyIGFsPUwuRXZlbnQoImpxcGxvdE1vdXNlTW92ZSIpO2FsLnBhZ2VYPWFuLnBhZ2VYO2FsLnBhZ2VZPWFuLnBhZ2VZO0wodGhpcykudHJpZ2dlcihhbCxbYW0uZ3JpZFBvcyxhbS5kYXRhUG9zLGFvLGFwXSl9O3RoaXMub25Nb3VzZUVudGVyPWZ1bmN0aW9uKGFuKXt2YXIgYW09YWkoYW4pO3ZhciBhbz1hbi5kYXRhLnBsb3Q7dmFyIGFsPUwuRXZlbnQoImpxcGxvdE1vdXNlRW50ZXIiKTthbC5wYWdlWD1hbi5wYWdlWDthbC5wYWdlWT1hbi5wYWdlWTthbC5yZWxhdGVkVGFyZ2V0PWFuLnJlbGF0ZWRUYXJnZXQ7TCh0aGlzKS50cmlnZ2VyKGFsLFthbS5ncmlkUG9zLGFtLmRhdGFQb3MsbnVsbCxhb10pfTt0aGlzLm9uTW91c2VMZWF2ZT1mdW5jdGlvbihhbil7dmFyIGFtPWFpKGFuKTt2YXIgYW89YW4uZGF0YS5wbG90O3ZhciBhbD1MLkV2ZW50KCJqcXBsb3RNb3VzZUxlYXZlIik7YWwucGFnZVg9YW4ucGFnZVg7YWwucGFnZVk9YW4ucGFnZVk7YWwucmVsYXRlZFRhcmdldD1hbi5yZWxhdGVkVGFyZ2V0O0wodGhpcykudHJpZ2dlcihhbCxbYW0uZ3JpZFBvcyxhbS5kYXRhUG9zLG51bGwsYW9dKX07dGhpcy5kcmF3U2VyaWVzPWZ1bmN0aW9uKGFuLGFsKXt2YXIgYXAsYW8sYW07YWw9KHR5cGVvZihhbik9PT0ibnVtYmVyIiYmYWw9PW51bGwpP2FuOmFsO2FuPSh0eXBlb2YoYW4pPT09Im9iamVjdCIpP2FuOnt9O2lmKGFsIT11KXthbz10aGlzLnNlcmllc1thbF07YW09YW8uc2hhZG93Q2FudmFzLl9jdHg7YW0uY2xlYXJSZWN0KDAsMCxhbS5jYW52YXMud2lkdGgsYW0uY2FudmFzLmhlaWdodCk7YW8uZHJhd1NoYWRvdyhhbSxhbix0aGlzKTthbT1hby5jYW52YXMuX2N0eDthbS5jbGVhclJlY3QoMCwwLGFtLmNhbnZhcy53aWR0aCxhbS5jYW52YXMuaGVpZ2h0KTthby5kcmF3KGFtLGFuLHRoaXMpO2lmKGFvLnJlbmRlcmVyLmNvbnN0cnVjdG9yPT1MLmpxcGxvdC5CZXppZXJDdXJ2ZVJlbmRlcmVyKXtpZihhbDx0aGlzLnNlcmllcy5sZW5ndGgtMSl7dGhpcy5kcmF3U2VyaWVzKGFsKzEpfX19ZWxzZXtmb3IoYXA9MDthcDx0aGlzLnNlcmllcy5sZW5ndGg7YXArKyl7YW89dGhpcy5zZXJpZXNbYXBdO2FtPWFvLnNoYWRvd0NhbnZhcy5fY3R4O2FtLmNsZWFyUmVjdCgwLDAsYW0uY2FudmFzLndpZHRoLGFtLmNhbnZhcy5oZWlnaHQpO2FvLmRyYXdTaGFkb3coYW0sYW4sdGhpcyk7YW09YW8uY2FudmFzLl9jdHg7YW0uY2xlYXJSZWN0KDAsMCxhbS5jYW52YXMud2lkdGgsYW0uY2FudmFzLmhlaWdodCk7YW8uZHJhdyhhbSxhbix0aGlzKX19YW49YWw9YXA9YW89YW09bnVsbH07dGhpcy5tb3ZlU2VyaWVzVG9Gcm9udD1mdW5jdGlvbihhbSl7YW09cGFyc2VJbnQoYW0sMTApO3ZhciBhcD1MLmluQXJyYXkoYW0sdGhpcy5zZXJpZXNTdGFjayk7aWYoYXA9PS0xKXtyZXR1cm59aWYoYXA9PXRoaXMuc2VyaWVzU3RhY2subGVuZ3RoLTEpe3RoaXMucHJldmlvdXNTZXJpZXNTdGFjaz10aGlzLnNlcmllc1N0YWNrLnNsaWNlKDApO3JldHVybn12YXIgYWw9dGhpcy5zZXJpZXNTdGFja1t0aGlzLnNlcmllc1N0YWNrLmxlbmd0aC0xXTt2YXIgYW89dGhpcy5zZXJpZXNbYW1dLmNhbnZhcy5fZWxlbS5kZXRhY2goKTt2YXIgYW49dGhpcy5zZXJpZXNbYW1dLnNoYWRvd0NhbnZhcy5fZWxlbS5kZXRhY2goKTt0aGlzLnNlcmllc1thbF0uc2hhZG93Q2FudmFzLl9lbGVtLmFmdGVyKGFuKTt0aGlzLnNlcmllc1thbF0uY2FudmFzLl9lbGVtLmFmdGVyKGFvKTt0aGlzLnByZXZpb3VzU2VyaWVzU3RhY2s9dGhpcy5zZXJpZXNTdGFjay5zbGljZSgwKTt0aGlzLnNlcmllc1N0YWNrLnNwbGljZShhcCwxKTt0aGlzLnNlcmllc1N0YWNrLnB1c2goYW0pfTt0aGlzLm1vdmVTZXJpZXNUb0JhY2s9ZnVuY3Rpb24oYW0pe2FtPXBhcnNlSW50KGFtLDEwKTt2YXIgYXA9TC5pbkFycmF5KGFtLHRoaXMuc2VyaWVzU3RhY2spO2lmKGFwPT0wfHxhcD09LTEpe3JldHVybn12YXIgYWw9dGhpcy5zZXJpZXNTdGFja1swXTt2YXIgYW89dGhpcy5zZXJpZXNbYW1dLmNhbnZhcy5fZWxlbS5kZXRhY2goKTt2YXIgYW49dGhpcy5zZXJpZXNbYW1dLnNoYWRvd0NhbnZhcy5fZWxlbS5kZXRhY2goKTt0aGlzLnNlcmllc1thbF0uc2hhZG93Q2FudmFzLl9lbGVtLmJlZm9yZShhbik7dGhpcy5zZXJpZXNbYWxdLmNhbnZhcy5fZWxlbS5iZWZvcmUoYW8pO3RoaXMucHJldmlvdXNTZXJpZXNTdGFjaz10aGlzLnNlcmllc1N0YWNrLnNsaWNlKDApO3RoaXMuc2VyaWVzU3RhY2suc3BsaWNlKGFwLDEpO3RoaXMuc2VyaWVzU3RhY2sudW5zaGlmdChhbSl9O3RoaXMucmVzdG9yZVByZXZpb3VzU2VyaWVzT3JkZXI9ZnVuY3Rpb24oKXt2YXIgYXIsYXEsYXAsYW8sYW4sYWwsYW07aWYodGhpcy5zZXJpZXNTdGFjaz09dGhpcy5wcmV2aW91c1Nlcmllc1N0YWNrKXtyZXR1cm59Zm9yKGFyPTE7YXI8dGhpcy5wcmV2aW91c1Nlcmllc1N0YWNrLmxlbmd0aDthcisrKXthbD10aGlzLnByZXZpb3VzU2VyaWVzU3RhY2tbYXJdO2FtPXRoaXMucHJldmlvdXNTZXJpZXNTdGFja1thci0xXTthcD10aGlzLnNlcmllc1thbF0uY2FudmFzLl9lbGVtLmRldGFjaCgpO2FvPXRoaXMuc2VyaWVzW2FsXS5zaGFkb3dDYW52YXMuX2VsZW0uZGV0YWNoKCk7dGhpcy5zZXJpZXNbYW1dLnNoYWRvd0NhbnZhcy5fZWxlbS5hZnRlcihhbyk7dGhpcy5zZXJpZXNbYW1dLmNhbnZhcy5fZWxlbS5hZnRlcihhcCl9YW49dGhpcy5zZXJpZXNTdGFjay5zbGljZSgwKTt0aGlzLnNlcmllc1N0YWNrPXRoaXMucHJldmlvdXNTZXJpZXNTdGFjay5zbGljZSgwKTt0aGlzLnByZXZpb3VzU2VyaWVzU3RhY2s9YW59O3RoaXMucmVzdG9yZU9yaWdpbmFsU2VyaWVzT3JkZXI9ZnVuY3Rpb24oKXt2YXIgYXAsYW8sYWw9W10sYW4sYW07Zm9yKGFwPTA7YXA8dGhpcy5zZXJpZXMubGVuZ3RoO2FwKyspe2FsLnB1c2goYXApfWlmKHRoaXMuc2VyaWVzU3RhY2s9PWFsKXtyZXR1cm59dGhpcy5wcmV2aW91c1Nlcmllc1N0YWNrPXRoaXMuc2VyaWVzU3RhY2suc2xpY2UoMCk7dGhpcy5zZXJpZXNTdGFjaz1hbDtmb3IoYXA9MTthcDx0aGlzLnNlcmllc1N0YWNrLmxlbmd0aDthcCsrKXthbj10aGlzLnNlcmllc1thcF0uY2FudmFzLl9lbGVtLmRldGFjaCgpO2FtPXRoaXMuc2VyaWVzW2FwXS5zaGFkb3dDYW52YXMuX2VsZW0uZGV0YWNoKCk7dGhpcy5zZXJpZXNbYXAtMV0uc2hhZG93Q2FudmFzLl9lbGVtLmFmdGVyKGFtKTt0aGlzLnNlcmllc1thcC0xXS5jYW52YXMuX2VsZW0uYWZ0ZXIoYW4pfX07dGhpcy5hY3RpdmF0ZVRoZW1lPWZ1bmN0aW9uKGFsKXt0aGlzLnRoZW1lRW5naW5lLmFjdGl2YXRlKHRoaXMsYWwpfX1MLmpxcGxvdC5jb21wdXRlSGlnaGxpZ2h0Q29sb3JzPWZ1bmN0aW9uKGFpKXt2YXIgYWs7aWYoTC5pc0FycmF5KGFpKSl7YWs9W107Zm9yKHZhciBhbT0wO2FtPGFpLmxlbmd0aDthbSsrKXt2YXIgYWw9TC5qcXBsb3QuZ2V0Q29sb3JDb21wb25lbnRzKGFpW2FtXSk7dmFyIGFoPVthbFswXSxhbFsxXSxhbFsyXV07dmFyIGFuPWFoWzBdK2FoWzFdK2FoWzJdO2Zvcih2YXIgYWo9MDthajwzO2FqKyspe2FoW2FqXT0oYW4+NjYwKT9haFthal0qMC44NTowLjczKmFoW2FqXSs5MDthaFthal09cGFyc2VJbnQoYWhbYWpdLDEwKTsoYWhbYWpdPjI1NSk/MjU1OmFoW2FqXX1haFszXT0wLjMrMC4zNSphbFszXTthay5wdXNoKCJyZ2JhKCIrYWhbMF0rIiwiK2FoWzFdKyIsIithaFsyXSsiLCIrYWhbM10rIikiKX19ZWxzZXt2YXIgYWw9TC5qcXBsb3QuZ2V0Q29sb3JDb21wb25lbnRzKGFpKTt2YXIgYWg9W2FsWzBdLGFsWzFdLGFsWzJdXTt2YXIgYW49YWhbMF0rYWhbMV0rYWhbMl07Zm9yKHZhciBhaj0wO2FqPDM7YWorKyl7YWhbYWpdPShhbj42NjApP2FoW2FqXSowLjg1OjAuNzMqYWhbYWpdKzkwO2FoW2FqXT1wYXJzZUludChhaFthal0sMTApOyhhaFthal0+MjU1KT8yNTU6YWhbYWpdfWFoWzNdPTAuMyswLjM1KmFsWzNdO2FrPSJyZ2JhKCIrYWhbMF0rIiwiK2FoWzFdKyIsIithaFsyXSsiLCIrYWhbM10rIikifXJldHVybiBha307TC5qcXBsb3QuQ29sb3JHZW5lcmF0b3I9ZnVuY3Rpb24oYWkpe2FpPWFpfHxMLmpxcGxvdC5jb25maWcuZGVmYXVsdENvbG9yczt2YXIgYWg9MDt0aGlzLm5leHQ9ZnVuY3Rpb24oKXtpZihhaDxhaS5sZW5ndGgpe3JldHVybiBhaVthaCsrXX1lbHNle2FoPTA7cmV0dXJuIGFpW2FoKytdfX07dGhpcy5wcmV2aW91cz1mdW5jdGlvbigpe2lmKGFoPjApe3JldHVybiBhaVthaC0tXX1lbHNle2FoPWFpLmxlbmd0aC0xO3JldHVybiBhaVthaF19fTt0aGlzLmdldD1mdW5jdGlvbihhayl7dmFyIGFqPWFrLWFpLmxlbmd0aCpNYXRoLmZsb29yKGFrL2FpLmxlbmd0aCk7cmV0dXJuIGFpW2FqXX07dGhpcy5zZXRDb2xvcnM9ZnVuY3Rpb24oYWope2FpPWFqfTt0aGlzLnJlc2V0PWZ1bmN0aW9uKCl7YWg9MH07dGhpcy5nZXRJbmRleD1mdW5jdGlvbigpe3JldHVybiBhaH07dGhpcy5zZXRJbmRleD1mdW5jdGlvbihhail7YWg9YWp9fTtMLmpxcGxvdC5oZXgycmdiPWZ1bmN0aW9uKGFqLGFoKXthaj1hai5yZXBsYWNlKCIjIiwiIik7aWYoYWoubGVuZ3RoPT0zKXthaj1hai5jaGFyQXQoMCkrYWouY2hhckF0KDApK2FqLmNoYXJBdCgxKSthai5jaGFyQXQoMSkrYWouY2hhckF0KDIpK2FqLmNoYXJBdCgyKX12YXIgYWk7YWk9InJnYmEoIitwYXJzZUludChhai5zbGljZSgwLDIpLDE2KSsiLCAiK3BhcnNlSW50KGFqLnNsaWNlKDIsNCksMTYpKyIsICIrcGFyc2VJbnQoYWouc2xpY2UoNCw2KSwxNik7aWYoYWgpe2FpKz0iLCAiK2FofWFpKz0iKSI7cmV0dXJuIGFpfTtMLmpxcGxvdC5yZ2IyaGV4PWZ1bmN0aW9uKGFtKXt2YXIgYWo9L3JnYmE/XCggKihbMC05XXsxLDN9XC4/WzAtOV0qJT8pICosICooWzAtOV17MSwzfVwuP1swLTldKiU/KSAqLCAqKFswLTldezEsM31cLj9bMC05XSolPykgKig/OiwgKlswLTkuXSopP1wpLzt2YXIgYWg9YW0ubWF0Y2goYWopO3ZhciBhbD0iIyI7Zm9yKHZhciBhaz0xO2FrPDQ7YWsrKyl7dmFyIGFpO2lmKGFoW2FrXS5zZWFyY2goLyUvKSE9LTEpe2FpPXBhcnNlSW50KDI1NSphaFtha10vMTAwLDEwKS50b1N0cmluZygxNik7aWYoYWkubGVuZ3RoPT0xKXthaT0iMCIrYWl9fWVsc2V7YWk9cGFyc2VJbnQoYWhbYWtdLDEwKS50b1N0cmluZygxNik7aWYoYWkubGVuZ3RoPT0xKXthaT0iMCIrYWl9fWFsKz1haX1yZXR1cm4gYWx9O0wuanFwbG90Lm5vcm1hbGl6ZTJyZ2I9ZnVuY3Rpb24oYWksYWgpe2lmKGFpLnNlYXJjaCgvXiAqcmdiYT9cKC8pIT0tMSl7cmV0dXJuIGFpfWVsc2V7aWYoYWkuc2VhcmNoKC9eICojP1swLTlhLWZBLUZdP1swLTlhLWZBLUZdLykhPS0xKXtyZXR1cm4gTC5qcXBsb3QuaGV4MnJnYihhaSxhaCl9ZWxzZXt0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY29sb3Igc3BlYyIpfX19O0wuanFwbG90LmdldENvbG9yQ29tcG9uZW50cz1mdW5jdGlvbihhbSl7YW09TC5qcXBsb3QuY29sb3JLZXl3b3JkTWFwW2FtXXx8YW07dmFyIGFrPUwuanFwbG90Lm5vcm1hbGl6ZTJyZ2IoYW0pO3ZhciBhaj0vcmdiYT9cKCAqKFswLTldezEsM31cLj9bMC05XSolPykgKiwgKihbMC05XXsxLDN9XC4/WzAtOV0qJT8pICosICooWzAtOV17MSwzfVwuP1swLTldKiU/KSAqLD8gKihbMC05Ll0qICopP1wpLzt2YXIgYWg9YWsubWF0Y2goYWopO3ZhciBhaT1bXTtmb3IodmFyIGFsPTE7YWw8NDthbCsrKXtpZihhaFthbF0uc2VhcmNoKC8lLykhPS0xKXthaVthbC0xXT1wYXJzZUludCgyNTUqYWhbYWxdLzEwMCwxMCl9ZWxzZXthaVthbC0xXT1wYXJzZUludChhaFthbF0sMTApfX1haVszXT1wYXJzZUZsb2F0KGFoWzRdKT9wYXJzZUZsb2F0KGFoWzRdKToxO3JldHVybiBhaX07TC5qcXBsb3QuY29sb3JLZXl3b3JkTWFwPXthbGljZWJsdWU6InJnYigyNDAsIDI0OCwgMjU1KSIsYW50aXF1ZXdoaXRlOiJyZ2IoMjUwLCAyMzUsIDIxNSkiLGFxdWE6InJnYiggMCwgMjU1LCAyNTUpIixhcXVhbWFyaW5lOiJyZ2IoMTI3LCAyNTUsIDIxMikiLGF6dXJlOiJyZ2IoMjQwLCAyNTUsIDI1NSkiLGJlaWdlOiJyZ2IoMjQ1LCAyNDUsIDIyMCkiLGJpc3F1ZToicmdiKDI1NSwgMjI4LCAxOTYpIixibGFjazoicmdiKCAwLCAwLCAwKSIsYmxhbmNoZWRhbG1vbmQ6InJnYigyNTUsIDIzNSwgMjA1KSIsYmx1ZToicmdiKCAwLCAwLCAyNTUpIixibHVldmlvbGV0OiJyZ2IoMTM4LCA0MywgMjI2KSIsYnJvd246InJnYigxNjUsIDQyLCA0MikiLGJ1cmx5d29vZDoicmdiKDIyMiwgMTg0LCAxMzUpIixjYWRldGJsdWU6InJnYiggOTUsIDE1OCwgMTYwKSIsY2hhcnRyZXVzZToicmdiKDEyNywgMjU1LCAwKSIsY2hvY29sYXRlOiJyZ2IoMjEwLCAxMDUsIDMwKSIsY29yYWw6InJnYigyNTUsIDEyNywgODApIixjb3JuZmxvd2VyYmx1ZToicmdiKDEwMCwgMTQ5LCAyMzcpIixjb3Juc2lsazoicmdiKDI1NSwgMjQ4LCAyMjApIixjcmltc29uOiJyZ2IoMjIwLCAyMCwgNjApIixjeWFuOiJyZ2IoIDAsIDI1NSwgMjU1KSIsZGFya2JsdWU6InJnYiggMCwgMCwgMTM5KSIsZGFya2N5YW46InJnYiggMCwgMTM5LCAxMzkpIixkYXJrZ29sZGVucm9kOiJyZ2IoMTg0LCAxMzQsIDExKSIsZGFya2dyYXk6InJnYigxNjksIDE2OSwgMTY5KSIsZGFya2dyZWVuOiJyZ2IoIDAsIDEwMCwgMCkiLGRhcmtncmV5OiJyZ2IoMTY5LCAxNjksIDE2OSkiLGRhcmtraGFraToicmdiKDE4OSwgMTgzLCAxMDcpIixkYXJrbWFnZW50YToicmdiKDEzOSwgMCwgMTM5KSIsZGFya29saXZlZ3JlZW46InJnYiggODUsIDEwNywgNDcpIixkYXJrb3JhbmdlOiJyZ2IoMjU1LCAxNDAsIDApIixkYXJrb3JjaGlkOiJyZ2IoMTUzLCA1MCwgMjA0KSIsZGFya3JlZDoicmdiKDEzOSwgMCwgMCkiLGRhcmtzYWxtb246InJnYigyMzMsIDE1MCwgMTIyKSIsZGFya3NlYWdyZWVuOiJyZ2IoMTQzLCAxODgsIDE0MykiLGRhcmtzbGF0ZWJsdWU6InJnYiggNzIsIDYxLCAxMzkpIixkYXJrc2xhdGVncmF5OiJyZ2IoIDQ3LCA3OSwgNzkpIixkYXJrc2xhdGVncmV5OiJyZ2IoIDQ3LCA3OSwgNzkpIixkYXJrdHVycXVvaXNlOiJyZ2IoIDAsIDIwNiwgMjA5KSIsZGFya3Zpb2xldDoicmdiKDE0OCwgMCwgMjExKSIsZGVlcHBpbms6InJnYigyNTUsIDIwLCAxNDcpIixkZWVwc2t5Ymx1ZToicmdiKCAwLCAxOTEsIDI1NSkiLGRpbWdyYXk6InJnYigxMDUsIDEwNSwgMTA1KSIsZGltZ3JleToicmdiKDEwNSwgMTA1LCAxMDUpIixkb2RnZXJibHVlOiJyZ2IoIDMwLCAxNDQsIDI1NSkiLGZpcmVicmljazoicmdiKDE3OCwgMzQsIDM0KSIsZmxvcmFsd2hpdGU6InJnYigyNTUsIDI1MCwgMjQwKSIsZm9yZXN0Z3JlZW46InJnYiggMzQsIDEzOSwgMzQpIixmdWNoc2lhOiJyZ2IoMjU1LCAwLCAyNTUpIixnYWluc2Jvcm86InJnYigyMjAsIDIyMCwgMjIwKSIsZ2hvc3R3aGl0ZToicmdiKDI0OCwgMjQ4LCAyNTUpIixnb2xkOiJyZ2IoMjU1LCAyMTUsIDApIixnb2xkZW5yb2Q6InJnYigyMTgsIDE2NSwgMzIpIixncmF5OiJyZ2IoMTI4LCAxMjgsIDEyOCkiLGdyZXk6InJnYigxMjgsIDEyOCwgMTI4KSIsZ3JlZW46InJnYiggMCwgMTI4LCAwKSIsZ3JlZW55ZWxsb3c6InJnYigxNzMsIDI1NSwgNDcpIixob25leWRldzoicmdiKDI0MCwgMjU1LCAyNDApIixob3RwaW5rOiJyZ2IoMjU1LCAxMDUsIDE4MCkiLGluZGlhbnJlZDoicmdiKDIwNSwgOTIsIDkyKSIsaW5kaWdvOiJyZ2IoIDc1LCAwLCAxMzApIixpdm9yeToicmdiKDI1NSwgMjU1LCAyNDApIixraGFraToicmdiKDI0MCwgMjMwLCAxNDApIixsYXZlbmRlcjoicmdiKDIzMCwgMjMwLCAyNTApIixsYXZlbmRlcmJsdXNoOiJyZ2IoMjU1LCAyNDAsIDI0NSkiLGxhd25ncmVlbjoicmdiKDEyNCwgMjUyLCAwKSIsbGVtb25jaGlmZm9uOiJyZ2IoMjU1LCAyNTAsIDIwNSkiLGxpZ2h0Ymx1ZToicmdiKDE3MywgMjE2LCAyMzApIixsaWdodGNvcmFsOiJyZ2IoMjQwLCAxMjgsIDEyOCkiLGxpZ2h0Y3lhbjoicmdiKDIyNCwgMjU1LCAyNTUpIixsaWdodGdvbGRlbnJvZHllbGxvdzoicmdiKDI1MCwgMjUwLCAyMTApIixsaWdodGdyYXk6InJnYigyMTEsIDIxMSwgMjExKSIsbGlnaHRncmVlbjoicmdiKDE0NCwgMjM4LCAxNDQpIixsaWdodGdyZXk6InJnYigyMTEsIDIxMSwgMjExKSIsbGlnaHRwaW5rOiJyZ2IoMjU1LCAxODIsIDE5MykiLGxpZ2h0c2FsbW9uOiJyZ2IoMjU1LCAxNjAsIDEyMikiLGxpZ2h0c2VhZ3JlZW46InJnYiggMzIsIDE3OCwgMTcwKSIsbGlnaHRza3libHVlOiJyZ2IoMTM1LCAyMDYsIDI1MCkiLGxpZ2h0c2xhdGVncmF5OiJyZ2IoMTE5LCAxMzYsIDE1MykiLGxpZ2h0c2xhdGVncmV5OiJyZ2IoMTE5LCAxMzYsIDE1MykiLGxpZ2h0c3RlZWxibHVlOiJyZ2IoMTc2LCAxOTYsIDIyMikiLGxpZ2h0eWVsbG93OiJyZ2IoMjU1LCAyNTUsIDIyNCkiLGxpbWU6InJnYiggMCwgMjU1LCAwKSIsbGltZWdyZWVuOiJyZ2IoIDUwLCAyMDUsIDUwKSIsbGluZW46InJnYigyNTAsIDI0MCwgMjMwKSIsbWFnZW50YToicmdiKDI1NSwgMCwgMjU1KSIsbWFyb29uOiJyZ2IoMTI4LCAwLCAwKSIsbWVkaXVtYXF1YW1hcmluZToicmdiKDEwMiwgMjA1LCAxNzApIixtZWRpdW1ibHVlOiJyZ2IoIDAsIDAsIDIwNSkiLG1lZGl1bW9yY2hpZDoicmdiKDE4NiwgODUsIDIxMSkiLG1lZGl1bXB1cnBsZToicmdiKDE0NywgMTEyLCAyMTkpIixtZWRpdW1zZWFncmVlbjoicmdiKCA2MCwgMTc5LCAxMTMpIixtZWRpdW1zbGF0ZWJsdWU6InJnYigxMjMsIDEwNCwgMjM4KSIsbWVkaXVtc3ByaW5nZ3JlZW46InJnYiggMCwgMjUwLCAxNTQpIixtZWRpdW10dXJxdW9pc2U6InJnYiggNzIsIDIwOSwgMjA0KSIsbWVkaXVtdmlvbGV0cmVkOiJyZ2IoMTk5LCAyMSwgMTMzKSIsbWlkbmlnaHRibHVlOiJyZ2IoIDI1LCAyNSwgMTEyKSIsbWludGNyZWFtOiJyZ2IoMjQ1LCAyNTUsIDI1MCkiLG1pc3R5cm9zZToicmdiKDI1NSwgMjI4LCAyMjUpIixtb2NjYXNpbjoicmdiKDI1NSwgMjI4LCAxODEpIixuYXZham93aGl0ZToicmdiKDI1NSwgMjIyLCAxNzMpIixuYXZ5OiJyZ2IoIDAsIDAsIDEyOCkiLG9sZGxhY2U6InJnYigyNTMsIDI0NSwgMjMwKSIsb2xpdmU6InJnYigxMjgsIDEyOCwgMCkiLG9saXZlZHJhYjoicmdiKDEwNywgMTQyLCAzNSkiLG9yYW5nZToicmdiKDI1NSwgMTY1LCAwKSIsb3JhbmdlcmVkOiJyZ2IoMjU1LCA2OSwgMCkiLG9yY2hpZDoicmdiKDIxOCwgMTEyLCAyMTQpIixwYWxlZ29sZGVucm9kOiJyZ2IoMjM4LCAyMzIsIDE3MCkiLHBhbGVncmVlbjoicmdiKDE1MiwgMjUxLCAxNTIpIixwYWxldHVycXVvaXNlOiJyZ2IoMTc1LCAyMzgsIDIzOCkiLHBhbGV2aW9sZXRyZWQ6InJnYigyMTksIDExMiwgMTQ3KSIscGFwYXlhd2hpcDoicmdiKDI1NSwgMjM5LCAyMTMpIixwZWFjaHB1ZmY6InJnYigyNTUsIDIxOCwgMTg1KSIscGVydToicmdiKDIwNSwgMTMzLCA2MykiLHBpbms6InJnYigyNTUsIDE5MiwgMjAzKSIscGx1bToicmdiKDIyMSwgMTYwLCAyMjEpIixwb3dkZXJibHVlOiJyZ2IoMTc2LCAyMjQsIDIzMCkiLHB1cnBsZToicmdiKDEyOCwgMCwgMTI4KSIscmVkOiJyZ2IoMjU1LCAwLCAwKSIscm9zeWJyb3duOiJyZ2IoMTg4LCAxNDMsIDE0MykiLHJveWFsYmx1ZToicmdiKCA2NSwgMTA1LCAyMjUpIixzYWRkbGVicm93bjoicmdiKDEzOSwgNjksIDE5KSIsc2FsbW9uOiJyZ2IoMjUwLCAxMjgsIDExNCkiLHNhbmR5YnJvd246InJnYigyNDQsIDE2NCwgOTYpIixzZWFncmVlbjoicmdiKCA0NiwgMTM5LCA4NykiLHNlYXNoZWxsOiJyZ2IoMjU1LCAyNDUsIDIzOCkiLHNpZW5uYToicmdiKDE2MCwgODIsIDQ1KSIsc2lsdmVyOiJyZ2IoMTkyLCAxOTIsIDE5MikiLHNreWJsdWU6InJnYigxMzUsIDIwNiwgMjM1KSIsc2xhdGVibHVlOiJyZ2IoMTA2LCA5MCwgMjA1KSIsc2xhdGVncmF5OiJyZ2IoMTEyLCAxMjgsIDE0NCkiLHNsYXRlZ3JleToicmdiKDExMiwgMTI4LCAxNDQpIixzbm93OiJyZ2IoMjU1LCAyNTAsIDI1MCkiLHNwcmluZ2dyZWVuOiJyZ2IoIDAsIDI1NSwgMTI3KSIsc3RlZWxibHVlOiJyZ2IoIDcwLCAxMzAsIDE4MCkiLHRhbjoicmdiKDIxMCwgMTgwLCAxNDApIix0ZWFsOiJyZ2IoIDAsIDEyOCwgMTI4KSIsdGhpc3RsZToicmdiKDIxNiwgMTkxLCAyMTYpIix0b21hdG86InJnYigyNTUsIDk5LCA3MSkiLHR1cnF1b2lzZToicmdiKCA2NCwgMjI0LCAyMDgpIix2aW9sZXQ6InJnYigyMzgsIDEzMCwgMjM4KSIsd2hlYXQ6InJnYigyNDUsIDIyMiwgMTc5KSIsd2hpdGU6InJnYigyNTUsIDI1NSwgMjU1KSIsd2hpdGVzbW9rZToicmdiKDI0NSwgMjQ1LCAyNDUpIix5ZWxsb3c6InJnYigyNTUsIDI1NSwgMCkiLHllbGxvd2dyZWVuOiJyZ2IoMTU0LCAyMDUsIDUwKSJ9O0wuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyPWZ1bmN0aW9uKGFoKXtMLmpxcGxvdC5FbGVtQ29udGFpbmVyLmNhbGwodGhpcyk7dGhpcy5heGlzO3RoaXMuc2hvdz10cnVlO3RoaXMubGFiZWw9IiI7dGhpcy5mb250RmFtaWx5PW51bGw7dGhpcy5mb250U2l6ZT1udWxsO3RoaXMudGV4dENvbG9yPW51bGw7dGhpcy5fZWxlbTt0aGlzLmVzY2FwZUhUTUw9ZmFsc2U7TC5leHRlbmQodHJ1ZSx0aGlzLGFoKX07TC5qcXBsb3QuQXhpc0xhYmVsUmVuZGVyZXIucHJvdG90eXBlPW5ldyBMLmpxcGxvdC5FbGVtQ29udGFpbmVyKCk7TC5qcXBsb3QuQXhpc0xhYmVsUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPUwuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyO0wuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGFoKXtMLmV4dGVuZCh0cnVlLHRoaXMsYWgpfTtMLmpxcGxvdC5BeGlzTGFiZWxSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbihhaCxhaSl7aWYodGhpcy5fZWxlbSl7dGhpcy5fZWxlbS5lbXB0eUZvcmNlKCk7dGhpcy5fZWxlbT1udWxsfXRoaXMuX2VsZW09TCgnPGRpdiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IiBjbGFzcz0ianFwbG90LScrdGhpcy5heGlzKyctbGFiZWwiPjwvZGl2PicpO2lmKE51bWJlcih0aGlzLmxhYmVsKSl7dGhpcy5fZWxlbS5jc3MoIndoaXRlLXNwYWNlIiwibm93cmFwIil9aWYoIXRoaXMuZXNjYXBlSFRNTCl7dGhpcy5fZWxlbS5odG1sKHRoaXMubGFiZWwpfWVsc2V7dGhpcy5fZWxlbS50ZXh0KHRoaXMubGFiZWwpfWlmKHRoaXMuZm9udEZhbWlseSl7dGhpcy5fZWxlbS5jc3MoImZvbnQtZmFtaWx5Iix0aGlzLmZvbnRGYW1pbHkpfWlmKHRoaXMuZm9udFNpemUpe3RoaXMuX2VsZW0uY3NzKCJmb250LXNpemUiLHRoaXMuZm9udFNpemUpfWlmKHRoaXMudGV4dENvbG9yKXt0aGlzLl9lbGVtLmNzcygiY29sb3IiLHRoaXMudGV4dENvbG9yKX1yZXR1cm4gdGhpcy5fZWxlbX07TC5qcXBsb3QuQXhpc0xhYmVsUmVuZGVyZXIucHJvdG90eXBlLnBhY2s9ZnVuY3Rpb24oKXt9O0wuanFwbG90LkF4aXNUaWNrUmVuZGVyZXI9ZnVuY3Rpb24oYWgpe0wuanFwbG90LkVsZW1Db250YWluZXIuY2FsbCh0aGlzKTt0aGlzLm1hcms9Im91dHNpZGUiO3RoaXMuYXhpczt0aGlzLnNob3dNYXJrPXRydWU7dGhpcy5zaG93R3JpZGxpbmU9dHJ1ZTt0aGlzLmlzTWlub3JUaWNrPWZhbHNlO3RoaXMuc2l6ZT00O3RoaXMubWFya1NpemU9Njt0aGlzLnNob3c9dHJ1ZTt0aGlzLnNob3dMYWJlbD10cnVlO3RoaXMubGFiZWw9bnVsbDt0aGlzLnZhbHVlPW51bGw7dGhpcy5fc3R5bGVzPXt9O3RoaXMuZm9ybWF0dGVyPUwuanFwbG90LkRlZmF1bHRUaWNrRm9ybWF0dGVyO3RoaXMucHJlZml4PSIiO3RoaXMuc3VmZml4PSIiO3RoaXMuZm9ybWF0U3RyaW5nPSIiO3RoaXMuZm9udEZhbWlseTt0aGlzLmZvbnRTaXplO3RoaXMudGV4dENvbG9yO3RoaXMuZXNjYXBlSFRNTD1mYWxzZTt0aGlzLl9lbGVtO3RoaXMuX2JyZWFrVGljaz1mYWxzZTtMLmV4dGVuZCh0cnVlLHRoaXMsYWgpfTtMLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGFoKXtMLmV4dGVuZCh0cnVlLHRoaXMsYWgpfTtMLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgTC5qcXBsb3QuRWxlbUNvbnRhaW5lcigpO0wuanFwbG90LkF4aXNUaWNrUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPUwuanFwbG90LkF4aXNUaWNrUmVuZGVyZXI7TC5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUuc2V0VGljaz1mdW5jdGlvbihhaCxhaixhaSl7dGhpcy52YWx1ZT1haDt0aGlzLmF4aXM9YWo7aWYoYWkpe3RoaXMuaXNNaW5vclRpY2s9dHJ1ZX1yZXR1cm4gdGhpc307TC5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbigpe2lmKHRoaXMubGFiZWw9PT1udWxsKXt0aGlzLmxhYmVsPXRoaXMucHJlZml4K3RoaXMuZm9ybWF0dGVyKHRoaXMuZm9ybWF0U3RyaW5nLHRoaXMudmFsdWUpK3RoaXMuc3VmZml4fXZhciBhaT17cG9zaXRpb246ImFic29sdXRlIn07aWYoTnVtYmVyKHRoaXMubGFiZWwpKXthaS53aGl0U3BhY2U9Im5vd3JhcCJ9aWYodGhpcy5fZWxlbSl7dGhpcy5fZWxlbS5lbXB0eUZvcmNlKCk7dGhpcy5fZWxlbT1udWxsfXRoaXMuX2VsZW09TChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7dGhpcy5fZWxlbS5hZGRDbGFzcygianFwbG90LSIrdGhpcy5heGlzKyItdGljayIpO2lmKCF0aGlzLmVzY2FwZUhUTUwpe3RoaXMuX2VsZW0uaHRtbCh0aGlzLmxhYmVsKX1lbHNle3RoaXMuX2VsZW0udGV4dCh0aGlzLmxhYmVsKX10aGlzLl9lbGVtLmNzcyhhaSk7Zm9yKHZhciBhaCBpbiB0aGlzLl9zdHlsZXMpe3RoaXMuX2VsZW0uY3NzKGFoLHRoaXMuX3N0eWxlc1thaF0pfWlmKHRoaXMuZm9udEZhbWlseSl7dGhpcy5fZWxlbS5jc3MoImZvbnQtZmFtaWx5Iix0aGlzLmZvbnRGYW1pbHkpfWlmKHRoaXMuZm9udFNpemUpe3RoaXMuX2VsZW0uY3NzKCJmb250LXNpemUiLHRoaXMuZm9udFNpemUpfWlmKHRoaXMudGV4dENvbG9yKXt0aGlzLl9lbGVtLmNzcygiY29sb3IiLHRoaXMudGV4dENvbG9yKX1pZih0aGlzLl9icmVha1RpY2spe3RoaXMuX2VsZW0uYWRkQ2xhc3MoImpxcGxvdC1icmVha1RpY2siKX1yZXR1cm4gdGhpcy5fZWxlbX07TC5qcXBsb3QuRGVmYXVsdFRpY2tGb3JtYXR0ZXI9ZnVuY3Rpb24oYWgsYWkpe2lmKHR5cGVvZiBhaT09Im51bWJlciIpe2lmKCFhaCl7YWg9TC5qcXBsb3QuY29uZmlnLmRlZmF1bHRUaWNrRm9ybWF0U3RyaW5nfXJldHVybiBMLmpxcGxvdC5zcHJpbnRmKGFoLGFpKX1lbHNle3JldHVybiBTdHJpbmcoYWkpfX07TC5qcXBsb3QuUGVyY2VudFRpY2tGb3JtYXR0ZXI9ZnVuY3Rpb24oYWgsYWkpe2lmKHR5cGVvZiBhaT09Im51bWJlciIpe2FpPTEwMCphaTtpZighYWgpe2FoPUwuanFwbG90LmNvbmZpZy5kZWZhdWx0VGlja0Zvcm1hdFN0cmluZ31yZXR1cm4gTC5qcXBsb3Quc3ByaW50ZihhaCxhaSl9ZWxzZXtyZXR1cm4gU3RyaW5nKGFpKX19O0wuanFwbG90LkF4aXNUaWNrUmVuZGVyZXIucHJvdG90eXBlLnBhY2s9ZnVuY3Rpb24oKXt9O0wuanFwbG90LkNhbnZhc0dyaWRSZW5kZXJlcj1mdW5jdGlvbigpe3RoaXMuc2hhZG93UmVuZGVyZXI9bmV3IEwuanFwbG90LlNoYWRvd1JlbmRlcmVyKCl9O0wuanFwbG90LkNhbnZhc0dyaWRSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihhaSl7dGhpcy5fY3R4O0wuZXh0ZW5kKHRydWUsdGhpcyxhaSk7dmFyIGFoPXtsaW5lSm9pbjoibWl0ZXIiLGxpbmVDYXA6InJvdW5kIixmaWxsOmZhbHNlLGlzYXJjOmZhbHNlLGFuZ2xlOnRoaXMuc2hhZG93QW5nbGUsb2Zmc2V0OnRoaXMuc2hhZG93T2Zmc2V0LGFscGhhOnRoaXMuc2hhZG93QWxwaGEsZGVwdGg6dGhpcy5zaGFkb3dEZXB0aCxsaW5lV2lkdGg6dGhpcy5zaGFkb3dXaWR0aCxjbG9zZVBhdGg6ZmFsc2Usc3Ryb2tlU3R5bGU6dGhpcy5zaGFkb3dDb2xvcn07dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5pbml0KGFoKX07TC5qcXBsb3QuQ2FudmFzR3JpZFJlbmRlcmVyLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGFrKXt2YXIgYWo7aWYodGhpcy5fZWxlbSl7aWYoTC5qcXBsb3QudXNlX2V4Y2FudmFzJiZ3aW5kb3cuR192bWxDYW52YXNNYW5hZ2VyLnVuaW5pdEVsZW1lbnQhPT11KXthaj10aGlzLl9lbGVtLmdldCgwKTt3aW5kb3cuR192bWxDYW52YXNNYW5hZ2VyLnVuaW5pdEVsZW1lbnQoYWopO2FqPW51bGx9dGhpcy5fZWxlbS5lbXB0eUZvcmNlKCk7dGhpcy5fZWxlbT1udWxsfWFqPWFrLmNhbnZhc01hbmFnZXIuZ2V0Q2FudmFzKCk7dmFyIGFoPXRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoO3ZhciBhaT10aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQ7YWoud2lkdGg9YWg7YWouaGVpZ2h0PWFpO3RoaXMuX2VsZW09TChhaik7dGhpcy5fZWxlbS5hZGRDbGFzcygianFwbG90LWdyaWQtY2FudmFzIik7dGhpcy5fZWxlbS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDowLHRvcDowfSk7YWo9YWsuY2FudmFzTWFuYWdlci5pbml0Q2FudmFzKGFqKTt0aGlzLl90b3A9dGhpcy5fb2Zmc2V0cy50b3A7dGhpcy5fYm90dG9tPWFpLXRoaXMuX29mZnNldHMuYm90dG9tO3RoaXMuX2xlZnQ9dGhpcy5fb2Zmc2V0cy5sZWZ0O3RoaXMuX3JpZ2h0PWFoLXRoaXMuX29mZnNldHMucmlnaHQ7dGhpcy5fd2lkdGg9dGhpcy5fcmlnaHQtdGhpcy5fbGVmdDt0aGlzLl9oZWlnaHQ9dGhpcy5fYm90dG9tLXRoaXMuX3RvcDthaj1udWxsO3JldHVybiB0aGlzLl9lbGVtfTtMLmpxcGxvdC5DYW52YXNHcmlkUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oKXt0aGlzLl9jdHg9dGhpcy5fZWxlbS5nZXQoMCkuZ2V0Q29udGV4dCgiMmQiKTt2YXIgYXQ9dGhpcy5fY3R4O3ZhciBhdz10aGlzLl9heGVzO2F0LnNhdmUoKTthdC5jbGVhclJlY3QoMCwwLHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoLHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCk7YXQuZmlsbFN0eWxlPXRoaXMuYmFja2dyb3VuZENvbG9yfHx0aGlzLmJhY2tncm91bmQ7YXQuZmlsbFJlY3QodGhpcy5fbGVmdCx0aGlzLl90b3AsdGhpcy5fd2lkdGgsdGhpcy5faGVpZ2h0KTthdC5zYXZlKCk7YXQubGluZUpvaW49Im1pdGVyIjthdC5saW5lQ2FwPSJidXR0IjthdC5saW5lV2lkdGg9dGhpcy5ncmlkTGluZVdpZHRoO2F0LnN0cm9rZVN0eWxlPXRoaXMuZ3JpZExpbmVDb2xvcjt2YXIgYUEsYXosYXAsYXE7dmFyIGFtPVsieGF4aXMiLCJ5YXhpcyIsIngyYXhpcyIsInkyYXhpcyJdO2Zvcih2YXIgYXk9NDtheT4wO2F5LS0pe3ZhciBhRD1hbVtheS0xXTt2YXIgYWg9YXdbYURdO3ZhciBhQj1haC5fdGlja3M7dmFyIGFyPWFCLmxlbmd0aDtpZihhaC5zaG93KXtpZihhaC5kcmF3QmFzZWxpbmUpe3ZhciBhQz17fTtpZihhaC5iYXNlbGluZVdpZHRoIT09bnVsbCl7YUMubGluZVdpZHRoPWFoLmJhc2VsaW5lV2lkdGh9aWYoYWguYmFzZWxpbmVDb2xvciE9PW51bGwpe2FDLnN0cm9rZVN0eWxlPWFoLmJhc2VsaW5lQ29sb3J9c3dpdGNoKGFEKXtjYXNlInhheGlzIjphbyh0aGlzLl9sZWZ0LHRoaXMuX2JvdHRvbSx0aGlzLl9yaWdodCx0aGlzLl9ib3R0b20sYUMpO2JyZWFrO2Nhc2UieWF4aXMiOmFvKHRoaXMuX2xlZnQsdGhpcy5fYm90dG9tLHRoaXMuX2xlZnQsdGhpcy5fdG9wLGFDKTticmVhaztjYXNlIngyYXhpcyI6YW8odGhpcy5fbGVmdCx0aGlzLl9ib3R0b20sdGhpcy5fcmlnaHQsdGhpcy5fYm90dG9tLGFDKTticmVhaztjYXNlInkyYXhpcyI6YW8odGhpcy5fcmlnaHQsdGhpcy5fYm90dG9tLHRoaXMuX3JpZ2h0LHRoaXMuX3RvcCxhQyk7YnJlYWt9fWZvcih2YXIgYXU9YXI7YXU+MDthdS0tKXt2YXIgYW49YUJbYXUtMV07aWYoYW4uc2hvdyl7dmFyIGFrPU1hdGgucm91bmQoYWgudTJwKGFuLnZhbHVlKSkrMC41O3N3aXRjaChhRCl7Y2FzZSJ4YXhpcyI6aWYoYW4uc2hvd0dyaWRsaW5lJiZ0aGlzLmRyYXdHcmlkbGluZXMmJigoIWFuLmlzTWlub3JUaWNrJiZhaC5kcmF3TWFqb3JHcmlkbGluZXMpfHwoYW4uaXNNaW5vclRpY2smJmFoLmRyYXdNaW5vckdyaWRsaW5lcykpKXthbyhhayx0aGlzLl90b3AsYWssdGhpcy5fYm90dG9tKX1pZihhbi5zaG93TWFyayYmYW4ubWFyayYmKCghYW4uaXNNaW5vclRpY2smJmFoLmRyYXdNYWpvclRpY2tNYXJrcyl8fChhbi5pc01pbm9yVGljayYmYWguZHJhd01pbm9yVGlja01hcmtzKSkpe2FwPWFuLm1hcmtTaXplO2FxPWFuLm1hcms7dmFyIGFrPU1hdGgucm91bmQoYWgudTJwKGFuLnZhbHVlKSkrMC41O3N3aXRjaChhcSl7Y2FzZSJvdXRzaWRlIjphQT10aGlzLl9ib3R0b207YXo9dGhpcy5fYm90dG9tK2FwO2JyZWFrO2Nhc2UiaW5zaWRlIjphQT10aGlzLl9ib3R0b20tYXA7YXo9dGhpcy5fYm90dG9tO2JyZWFrO2Nhc2UiY3Jvc3MiOmFBPXRoaXMuX2JvdHRvbS1hcDthej10aGlzLl9ib3R0b20rYXA7YnJlYWs7ZGVmYXVsdDphQT10aGlzLl9ib3R0b207YXo9dGhpcy5fYm90dG9tK2FwO2JyZWFrfWlmKHRoaXMuc2hhZG93KXt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoYXQsW1thayxhQV0sW2FrLGF6XV0se2xpbmVDYXA6ImJ1dHQiLGxpbmVXaWR0aDp0aGlzLmdyaWRMaW5lV2lkdGgsb2Zmc2V0OnRoaXMuZ3JpZExpbmVXaWR0aCowLjc1LGRlcHRoOjIsZmlsbDpmYWxzZSxjbG9zZVBhdGg6ZmFsc2V9KX1hbyhhayxhQSxhayxheil9YnJlYWs7Y2FzZSJ5YXhpcyI6aWYoYW4uc2hvd0dyaWRsaW5lJiZ0aGlzLmRyYXdHcmlkbGluZXMmJigoIWFuLmlzTWlub3JUaWNrJiZhaC5kcmF3TWFqb3JHcmlkbGluZXMpfHwoYW4uaXNNaW5vclRpY2smJmFoLmRyYXdNaW5vckdyaWRsaW5lcykpKXthbyh0aGlzLl9yaWdodCxhayx0aGlzLl9sZWZ0LGFrKX1pZihhbi5zaG93TWFyayYmYW4ubWFyayYmKCghYW4uaXNNaW5vclRpY2smJmFoLmRyYXdNYWpvclRpY2tNYXJrcyl8fChhbi5pc01pbm9yVGljayYmYWguZHJhd01pbm9yVGlja01hcmtzKSkpe2FwPWFuLm1hcmtTaXplO2FxPWFuLm1hcms7dmFyIGFrPU1hdGgucm91bmQoYWgudTJwKGFuLnZhbHVlKSkrMC41O3N3aXRjaChhcSl7Y2FzZSJvdXRzaWRlIjphQT10aGlzLl9sZWZ0LWFwO2F6PXRoaXMuX2xlZnQ7YnJlYWs7Y2FzZSJpbnNpZGUiOmFBPXRoaXMuX2xlZnQ7YXo9dGhpcy5fbGVmdCthcDticmVhaztjYXNlImNyb3NzIjphQT10aGlzLl9sZWZ0LWFwO2F6PXRoaXMuX2xlZnQrYXA7YnJlYWs7ZGVmYXVsdDphQT10aGlzLl9sZWZ0LWFwO2F6PXRoaXMuX2xlZnQ7YnJlYWt9aWYodGhpcy5zaGFkb3cpe3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhhdCxbW2FBLGFrXSxbYXosYWtdXSx7bGluZUNhcDoiYnV0dCIsbGluZVdpZHRoOnRoaXMuZ3JpZExpbmVXaWR0aCoxLjUsb2Zmc2V0OnRoaXMuZ3JpZExpbmVXaWR0aCowLjc1LGZpbGw6ZmFsc2UsY2xvc2VQYXRoOmZhbHNlfSl9YW8oYUEsYWssYXosYWsse3N0cm9rZVN0eWxlOmFoLmJvcmRlckNvbG9yfSl9YnJlYWs7Y2FzZSJ4MmF4aXMiOmlmKGFuLnNob3dHcmlkbGluZSYmdGhpcy5kcmF3R3JpZGxpbmVzJiYoKCFhbi5pc01pbm9yVGljayYmYWguZHJhd01ham9yR3JpZGxpbmVzKXx8KGFuLmlzTWlub3JUaWNrJiZhaC5kcmF3TWlub3JHcmlkbGluZXMpKSl7YW8oYWssdGhpcy5fYm90dG9tLGFrLHRoaXMuX3RvcCl9aWYoYW4uc2hvd01hcmsmJmFuLm1hcmsmJigoIWFuLmlzTWlub3JUaWNrJiZhaC5kcmF3TWFqb3JUaWNrTWFya3MpfHwoYW4uaXNNaW5vclRpY2smJmFoLmRyYXdNaW5vclRpY2tNYXJrcykpKXthcD1hbi5tYXJrU2l6ZTthcT1hbi5tYXJrO3ZhciBhaz1NYXRoLnJvdW5kKGFoLnUycChhbi52YWx1ZSkpKzAuNTtzd2l0Y2goYXEpe2Nhc2Uib3V0c2lkZSI6YUE9dGhpcy5fdG9wLWFwO2F6PXRoaXMuX3RvcDticmVhaztjYXNlImluc2lkZSI6YUE9dGhpcy5fdG9wO2F6PXRoaXMuX3RvcCthcDticmVhaztjYXNlImNyb3NzIjphQT10aGlzLl90b3AtYXA7YXo9dGhpcy5fdG9wK2FwO2JyZWFrO2RlZmF1bHQ6YUE9dGhpcy5fdG9wLWFwO2F6PXRoaXMuX3RvcDticmVha31pZih0aGlzLnNoYWRvdyl7dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KGF0LFtbYWssYUFdLFthayxhel1dLHtsaW5lQ2FwOiJidXR0IixsaW5lV2lkdGg6dGhpcy5ncmlkTGluZVdpZHRoLG9mZnNldDp0aGlzLmdyaWRMaW5lV2lkdGgqMC43NSxkZXB0aDoyLGZpbGw6ZmFsc2UsY2xvc2VQYXRoOmZhbHNlfSl9YW8oYWssYUEsYWssYXopfWJyZWFrO2Nhc2UieTJheGlzIjppZihhbi5zaG93R3JpZGxpbmUmJnRoaXMuZHJhd0dyaWRsaW5lcyYmKCghYW4uaXNNaW5vclRpY2smJmFoLmRyYXdNYWpvckdyaWRsaW5lcyl8fChhbi5pc01pbm9yVGljayYmYWguZHJhd01pbm9yR3JpZGxpbmVzKSkpe2FvKHRoaXMuX2xlZnQsYWssdGhpcy5fcmlnaHQsYWspfWlmKGFuLnNob3dNYXJrJiZhbi5tYXJrJiYoKCFhbi5pc01pbm9yVGljayYmYWguZHJhd01ham9yVGlja01hcmtzKXx8KGFuLmlzTWlub3JUaWNrJiZhaC5kcmF3TWlub3JUaWNrTWFya3MpKSl7YXA9YW4ubWFya1NpemU7YXE9YW4ubWFyazt2YXIgYWs9TWF0aC5yb3VuZChhaC51MnAoYW4udmFsdWUpKSswLjU7c3dpdGNoKGFxKXtjYXNlIm91dHNpZGUiOmFBPXRoaXMuX3JpZ2h0O2F6PXRoaXMuX3JpZ2h0K2FwO2JyZWFrO2Nhc2UiaW5zaWRlIjphQT10aGlzLl9yaWdodC1hcDthej10aGlzLl9yaWdodDticmVhaztjYXNlImNyb3NzIjphQT10aGlzLl9yaWdodC1hcDthej10aGlzLl9yaWdodCthcDticmVhaztkZWZhdWx0OmFBPXRoaXMuX3JpZ2h0O2F6PXRoaXMuX3JpZ2h0K2FwO2JyZWFrfWlmKHRoaXMuc2hhZG93KXt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoYXQsW1thQSxha10sW2F6LGFrXV0se2xpbmVDYXA6ImJ1dHQiLGxpbmVXaWR0aDp0aGlzLmdyaWRMaW5lV2lkdGgqMS41LG9mZnNldDp0aGlzLmdyaWRMaW5lV2lkdGgqMC43NSxmaWxsOmZhbHNlLGNsb3NlUGF0aDpmYWxzZX0pfWFvKGFBLGFrLGF6LGFrLHtzdHJva2VTdHlsZTphaC5ib3JkZXJDb2xvcn0pfWJyZWFrO2RlZmF1bHQ6YnJlYWt9fX1hbj1udWxsfWFoPW51bGw7YUI9bnVsbH1hbT1bInkzYXhpcyIsInk0YXhpcyIsInk1YXhpcyIsInk2YXhpcyIsInk3YXhpcyIsInk4YXhpcyIsInk5YXhpcyIsInlNaWRBeGlzIl07Zm9yKHZhciBheT03O2F5PjA7YXktLSl7dmFyIGFoPWF3W2FtW2F5LTFdXTt2YXIgYUI9YWguX3RpY2tzO2lmKGFoLnNob3cpe3ZhciBhaT1hQlthaC5udW1iZXJUaWNrcy0xXTt2YXIgYWw9YUJbMF07dmFyIGFqPWFoLmdldExlZnQoKTt2YXIgYXY9W1thaixhaS5nZXRUb3AoKSthaS5nZXRIZWlnaHQoKS8yXSxbYWosYWwuZ2V0VG9wKCkrYWwuZ2V0SGVpZ2h0KCkvMisxXV07aWYodGhpcy5zaGFkb3cpe3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhhdCxhdix7bGluZUNhcDoiYnV0dCIsZmlsbDpmYWxzZSxjbG9zZVBhdGg6ZmFsc2V9KX1hbyhhdlswXVswXSxhdlswXVsxXSxhdlsxXVswXSxhdlsxXVsxXSx7bGluZUNhcDoiYnV0dCIsc3Ryb2tlU3R5bGU6YWguYm9yZGVyQ29sb3IsbGluZVdpZHRoOmFoLmJvcmRlcldpZHRofSk7Zm9yKHZhciBhdT1hQi5sZW5ndGg7YXU+MDthdS0tKXt2YXIgYW49YUJbYXUtMV07YXA9YW4ubWFya1NpemU7YXE9YW4ubWFyazt2YXIgYWs9TWF0aC5yb3VuZChhaC51MnAoYW4udmFsdWUpKSswLjU7aWYoYW4uc2hvd01hcmsmJmFuLm1hcmspe3N3aXRjaChhcSl7Y2FzZSJvdXRzaWRlIjphQT1hajthej1haithcDticmVhaztjYXNlImluc2lkZSI6YUE9YWotYXA7YXo9YWo7YnJlYWs7Y2FzZSJjcm9zcyI6YUE9YWotYXA7YXo9YWorYXA7YnJlYWs7ZGVmYXVsdDphQT1hajthej1haithcDticmVha31hdj1bW2FBLGFrXSxbYXosYWtdXTtpZih0aGlzLnNoYWRvdyl7dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KGF0LGF2LHtsaW5lQ2FwOiJidXR0IixsaW5lV2lkdGg6dGhpcy5ncmlkTGluZVdpZHRoKjEuNSxvZmZzZXQ6dGhpcy5ncmlkTGluZVdpZHRoKjAuNzUsZmlsbDpmYWxzZSxjbG9zZVBhdGg6ZmFsc2V9KX1hbyhhQSxhayxheixhayx7c3Ryb2tlU3R5bGU6YWguYm9yZGVyQ29sb3J9KX1hbj1udWxsfWFsPW51bGx9YWg9bnVsbDthQj1udWxsfWF0LnJlc3RvcmUoKTtmdW5jdGlvbiBhbyhhSCxhRyxhRSxheCxhRil7YXQuc2F2ZSgpO2FGPWFGfHx7fTtpZihhRi5saW5lV2lkdGg9PW51bGx8fGFGLmxpbmVXaWR0aCE9MCl7TC5leHRlbmQodHJ1ZSxhdCxhRik7YXQuYmVnaW5QYXRoKCk7YXQubW92ZVRvKGFILGFHKTthdC5saW5lVG8oYUUsYXgpO2F0LnN0cm9rZSgpO2F0LnJlc3RvcmUoKX19aWYodGhpcy5zaGFkb3cpe3ZhciBhdj1bW3RoaXMuX2xlZnQsdGhpcy5fYm90dG9tXSxbdGhpcy5fcmlnaHQsdGhpcy5fYm90dG9tXSxbdGhpcy5fcmlnaHQsdGhpcy5fdG9wXV07dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KGF0LGF2KX1pZih0aGlzLmJvcmRlcldpZHRoIT0wJiZ0aGlzLmRyYXdCb3JkZXIpe2FvKHRoaXMuX2xlZnQsdGhpcy5fdG9wLHRoaXMuX3JpZ2h0LHRoaXMuX3RvcCx7bGluZUNhcDoicm91bmQiLHN0cm9rZVN0eWxlOmF3LngyYXhpcy5ib3JkZXJDb2xvcixsaW5lV2lkdGg6YXcueDJheGlzLmJvcmRlcldpZHRofSk7YW8odGhpcy5fcmlnaHQsdGhpcy5fdG9wLHRoaXMuX3JpZ2h0LHRoaXMuX2JvdHRvbSx7bGluZUNhcDoicm91bmQiLHN0cm9rZVN0eWxlOmF3LnkyYXhpcy5ib3JkZXJDb2xvcixsaW5lV2lkdGg6YXcueTJheGlzLmJvcmRlcldpZHRofSk7YW8odGhpcy5fcmlnaHQsdGhpcy5fYm90dG9tLHRoaXMuX2xlZnQsdGhpcy5fYm90dG9tLHtsaW5lQ2FwOiJyb3VuZCIsc3Ryb2tlU3R5bGU6YXcueGF4aXMuYm9yZGVyQ29sb3IsbGluZVdpZHRoOmF3LnhheGlzLmJvcmRlcldpZHRofSk7YW8odGhpcy5fbGVmdCx0aGlzLl9ib3R0b20sdGhpcy5fbGVmdCx0aGlzLl90b3Ase2xpbmVDYXA6InJvdW5kIixzdHJva2VTdHlsZTphdy55YXhpcy5ib3JkZXJDb2xvcixsaW5lV2lkdGg6YXcueWF4aXMuYm9yZGVyV2lkdGh9KX1hdC5yZXN0b3JlKCk7YXQ9bnVsbDthdz1udWxsfTtMLmpxcGxvdC5EaXZUaXRsZVJlbmRlcmVyPWZ1bmN0aW9uKCl7fTtMLmpxcGxvdC5EaXZUaXRsZVJlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGFoKXtMLmV4dGVuZCh0cnVlLHRoaXMsYWgpfTtMLmpxcGxvdC5EaXZUaXRsZVJlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKCl7aWYodGhpcy5fZWxlbSl7dGhpcy5fZWxlbS5lbXB0eUZvcmNlKCk7dGhpcy5fZWxlbT1udWxsfXZhciBhaz10aGlzLnJlbmRlcmVyO3ZhciBhaj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0aGlzLl9lbGVtPUwoYWopO3RoaXMuX2VsZW0uYWRkQ2xhc3MoImpxcGxvdC10aXRsZSIpO2lmKCF0aGlzLnRleHQpe3RoaXMuc2hvdz1mYWxzZTt0aGlzLl9lbGVtLmhlaWdodCgwKTt0aGlzLl9lbGVtLndpZHRoKDApfWVsc2V7aWYodGhpcy50ZXh0KXt2YXIgYWg7aWYodGhpcy5jb2xvcil7YWg9dGhpcy5jb2xvcn1lbHNle2lmKHRoaXMudGV4dENvbG9yKXthaD10aGlzLnRleHRDb2xvcn19dmFyIGFpPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDoiMHB4IixsZWZ0OiIwcHgifTtpZih0aGlzLl9wbG90V2lkdGgpe2FpLndpZHRoPXRoaXMuX3Bsb3RXaWR0aCsicHgifWlmKHRoaXMuZm9udFNpemUpe2FpLmZvbnRTaXplPXRoaXMuZm9udFNpemV9aWYodHlwZW9mIHRoaXMudGV4dEFsaWduPT09InN0cmluZyIpe2FpLnRleHRBbGlnbj10aGlzLnRleHRBbGlnbn1lbHNle2FpLnRleHRBbGlnbj0iY2VudGVyIn1pZihhaCl7YWkuY29sb3I9YWh9aWYodGhpcy5wYWRkaW5nQm90dG9tKXthaS5wYWRkaW5nQm90dG9tPXRoaXMucGFkZGluZ0JvdHRvbX1pZih0aGlzLmZvbnRGYW1pbHkpe2FpLmZvbnRGYW1pbHk9dGhpcy5mb250RmFtaWx5fXRoaXMuX2VsZW0uY3NzKGFpKTtpZih0aGlzLmVzY2FwZUh0bWwpe3RoaXMuX2VsZW0udGV4dCh0aGlzLnRleHQpfWVsc2V7dGhpcy5fZWxlbS5odG1sKHRoaXMudGV4dCl9fX1haj1udWxsO3JldHVybiB0aGlzLl9lbGVtfTtMLmpxcGxvdC5EaXZUaXRsZVJlbmRlcmVyLnByb3RvdHlwZS5wYWNrPWZ1bmN0aW9uKCl7fTt2YXIgcj0wLjE7TC5qcXBsb3QuTGluZVBhdHRlcm49ZnVuY3Rpb24oYXcsYXEpe3ZhciBhcD17ZG90dGVkOltyLEwuanFwbG90LmNvbmZpZy5kb3RHYXBMZW5ndGhdLGRhc2hlZDpbTC5qcXBsb3QuY29uZmlnLmRhc2hMZW5ndGgsTC5qcXBsb3QuY29uZmlnLmdhcExlbmd0aF0sc29saWQ6bnVsbH07aWYodHlwZW9mIGFxPT09InN0cmluZyIpe2lmKGFxWzBdPT09Ii4ifHxhcVswXT09PSItIil7dmFyIGF4PWFxO2FxPVtdO2Zvcih2YXIgYW89MCxhbD1heC5sZW5ndGg7YW88YWw7YW8rKyl7aWYoYXhbYW9dPT09Ii4iKXthcS5wdXNoKHIpfWVsc2V7aWYoYXhbYW9dPT09Ii0iKXthcS5wdXNoKEwuanFwbG90LmNvbmZpZy5kYXNoTGVuZ3RoKX1lbHNle2NvbnRpbnVlfX1hcS5wdXNoKEwuanFwbG90LmNvbmZpZy5nYXBMZW5ndGgpfX1lbHNle2FxPWFwW2FxXX19aWYoIShhcSYmYXEubGVuZ3RoKSl7cmV0dXJuIGF3fXZhciBhaz0wO3ZhciBhcj1hcVswXTt2YXIgYXU9MDt2YXIgYXQ9MDt2YXIgYW49MDt2YXIgYWg9MDt2YXIgYXY9ZnVuY3Rpb24oYXksYXope2F3Lm1vdmVUbyhheSxheik7YXU9YXk7YXQ9YXo7YW49YXk7YWg9YXp9O3ZhciBhaj1mdW5jdGlvbihheSxhRSl7dmFyIGFDPWF3LmxpbmVXaWR0aDt2YXIgYUE9YXktYXU7dmFyIGF6PWFFLWF0O3ZhciBhQj1NYXRoLnNxcnQoYUEqYUErYXoqYXopO2lmKChhQj4wKSYmKGFDPjApKXthQS89YUI7YXovPWFCO3doaWxlKHRydWUpe3ZhciBhRD1hQyphcjtpZihhRDxhQil7YXUrPWFEKmFBO2F0Kz1hRCphejtpZigoYWsmMSk9PTApe2F3LmxpbmVUbyhhdSxhdCl9ZWxzZXthdy5tb3ZlVG8oYXUsYXQpfWFCLT1hRDthaysrO2lmKGFrPj1hcS5sZW5ndGgpe2FrPTB9YXI9YXFbYWtdfWVsc2V7YXU9YXk7YXQ9YUU7aWYoKGFrJjEpPT0wKXthdy5saW5lVG8oYXUsYXQpfWVsc2V7YXcubW92ZVRvKGF1LGF0KX1hci09YUIvYUM7YnJlYWt9fX19O3ZhciBhaT1mdW5jdGlvbigpe2F3LmJlZ2luUGF0aCgpfTt2YXIgYW09ZnVuY3Rpb24oKXthaihhbixhaCl9O3JldHVybnttb3ZlVG86YXYsbGluZVRvOmFqLGJlZ2luUGF0aDphaSxjbG9zZVBhdGg6YW19fTtMLmpxcGxvdC5MaW5lUmVuZGVyZXI9ZnVuY3Rpb24oKXt0aGlzLnNoYXBlUmVuZGVyZXI9bmV3IEwuanFwbG90LlNoYXBlUmVuZGVyZXIoKTt0aGlzLnNoYWRvd1JlbmRlcmVyPW5ldyBMLmpxcGxvdC5TaGFkb3dSZW5kZXJlcigpfTtMLmpxcGxvdC5MaW5lUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oYWksYW4pe2FpPWFpfHx7fTt0aGlzLl90eXBlPSJsaW5lIjt0aGlzLnJlbmRlcmVyLmFuaW1hdGlvbj17c2hvdzpmYWxzZSxkaXJlY3Rpb246ImxlZnQiLHNwZWVkOjI1MDAsX3N1cHBvcnRlZDp0cnVlfTt0aGlzLnJlbmRlcmVyLnNtb290aD1mYWxzZTt0aGlzLnJlbmRlcmVyLnRlbnNpb249bnVsbDt0aGlzLnJlbmRlcmVyLmNvbnN0cmFpblNtb290aGluZz10cnVlO3RoaXMucmVuZGVyZXIuX3Ntb290aGVkRGF0YT1bXTt0aGlzLnJlbmRlcmVyLl9zbW9vdGhlZFBsb3REYXRhPVtdO3RoaXMucmVuZGVyZXIuX2hpQmFuZEdyaWREYXRhPVtdO3RoaXMucmVuZGVyZXIuX2xvd0JhbmRHcmlkRGF0YT1bXTt0aGlzLnJlbmRlcmVyLl9oaUJhbmRTbW9vdGhlZERhdGE9W107dGhpcy5yZW5kZXJlci5fbG93QmFuZFNtb290aGVkRGF0YT1bXTt0aGlzLnJlbmRlcmVyLmJhbmREYXRhPVtdO3RoaXMucmVuZGVyZXIuYmFuZHM9e3Nob3c6ZmFsc2UsaGlEYXRhOltdLGxvd0RhdGE6W10sY29sb3I6dGhpcy5jb2xvcixzaG93TGluZXM6ZmFsc2UsZmlsbDp0cnVlLGZpbGxDb2xvcjpudWxsLF9taW46bnVsbCxfbWF4Om51bGwsaW50ZXJ2YWw6IjMlIn07dmFyIGFsPXtoaWdobGlnaHRNb3VzZU92ZXI6YWkuaGlnaGxpZ2h0TW91c2VPdmVyLGhpZ2hsaWdodE1vdXNlRG93bjphaS5oaWdobGlnaHRNb3VzZURvd24saGlnaGxpZ2h0Q29sb3I6YWkuaGlnaGxpZ2h0Q29sb3J9O2RlbGV0ZSAoYWkuaGlnaGxpZ2h0TW91c2VPdmVyKTtkZWxldGUgKGFpLmhpZ2hsaWdodE1vdXNlRG93bik7ZGVsZXRlIChhaS5oaWdobGlnaHRDb2xvcik7TC5leHRlbmQodHJ1ZSx0aGlzLnJlbmRlcmVyLGFpKTt0aGlzLnJlbmRlcmVyLm9wdGlvbnM9YWk7aWYodGhpcy5yZW5kZXJlci5iYW5kRGF0YS5sZW5ndGg+MSYmKCFhaS5iYW5kc3x8YWkuYmFuZHMuc2hvdz09bnVsbCkpe3RoaXMucmVuZGVyZXIuYmFuZHMuc2hvdz10cnVlfWVsc2V7aWYoYWkuYmFuZHMmJmFpLmJhbmRzLnNob3c9PW51bGwmJmFpLmJhbmRzLmludGVydmFsIT1udWxsKXt0aGlzLnJlbmRlcmVyLmJhbmRzLnNob3c9dHJ1ZX19aWYodGhpcy5maWxsKXt0aGlzLnJlbmRlcmVyLmJhbmRzLnNob3c9ZmFsc2V9aWYodGhpcy5yZW5kZXJlci5iYW5kcy5zaG93KXt0aGlzLnJlbmRlcmVyLmluaXRCYW5kcy5jYWxsKHRoaXMsdGhpcy5yZW5kZXJlci5vcHRpb25zLGFuKX1pZih0aGlzLl9zdGFjayl7dGhpcy5yZW5kZXJlci5zbW9vdGg9ZmFsc2V9dmFyIGFtPXtsaW5lSm9pbjp0aGlzLmxpbmVKb2luLGxpbmVDYXA6dGhpcy5saW5lQ2FwLGZpbGw6dGhpcy5maWxsLGlzYXJjOmZhbHNlLHN0cm9rZVN0eWxlOnRoaXMuY29sb3IsZmlsbFN0eWxlOnRoaXMuZmlsbENvbG9yLGxpbmVXaWR0aDp0aGlzLmxpbmVXaWR0aCxsaW5lUGF0dGVybjp0aGlzLmxpbmVQYXR0ZXJuLGNsb3NlUGF0aDp0aGlzLmZpbGx9O3RoaXMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5pbml0KGFtKTt2YXIgYWo9YWkuc2hhZG93T2Zmc2V0O2lmKGFqPT1udWxsKXtpZih0aGlzLmxpbmVXaWR0aD4yLjUpe2FqPTEuMjUqKDErKE1hdGguYXRhbigodGhpcy5saW5lV2lkdGgvMi41KSkvMC43ODUzOTgxNjMtMSkqMC42KX1lbHNle2FqPTEuMjUqTWF0aC5hdGFuKCh0aGlzLmxpbmVXaWR0aC8yLjUpKS8wLjc4NTM5ODE2M319dmFyIGFoPXtsaW5lSm9pbjp0aGlzLmxpbmVKb2luLGxpbmVDYXA6dGhpcy5saW5lQ2FwLGZpbGw6dGhpcy5maWxsLGlzYXJjOmZhbHNlLGFuZ2xlOnRoaXMuc2hhZG93QW5nbGUsb2Zmc2V0OmFqLGFscGhhOnRoaXMuc2hhZG93QWxwaGEsZGVwdGg6dGhpcy5zaGFkb3dEZXB0aCxsaW5lV2lkdGg6dGhpcy5saW5lV2lkdGgsbGluZVBhdHRlcm46dGhpcy5saW5lUGF0dGVybixjbG9zZVBhdGg6dGhpcy5maWxsfTt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmluaXQoYWgpO3RoaXMuX2FyZWFQb2ludHM9W107dGhpcy5fYm91bmRpbmdCb3g9W1tdLFtdXTtpZighdGhpcy5pc1RyZW5kbGluZSYmdGhpcy5maWxsfHx0aGlzLnJlbmRlcmVyLmJhbmRzLnNob3cpe3RoaXMuaGlnaGxpZ2h0TW91c2VPdmVyPXRydWU7dGhpcy5oaWdobGlnaHRNb3VzZURvd249ZmFsc2U7dGhpcy5oaWdobGlnaHRDb2xvcj1udWxsO2lmKGFsLmhpZ2hsaWdodE1vdXNlRG93biYmYWwuaGlnaGxpZ2h0TW91c2VPdmVyPT1udWxsKXthbC5oaWdobGlnaHRNb3VzZU92ZXI9ZmFsc2V9TC5leHRlbmQodHJ1ZSx0aGlzLHtoaWdobGlnaHRNb3VzZU92ZXI6YWwuaGlnaGxpZ2h0TW91c2VPdmVyLGhpZ2hsaWdodE1vdXNlRG93bjphbC5oaWdobGlnaHRNb3VzZURvd24saGlnaGxpZ2h0Q29sb3I6YWwuaGlnaGxpZ2h0Q29sb3J9KTtpZighdGhpcy5oaWdobGlnaHRDb2xvcil7dmFyIGFrPSh0aGlzLnJlbmRlcmVyLmJhbmRzLnNob3cpP3RoaXMucmVuZGVyZXIuYmFuZHMuZmlsbENvbG9yOnRoaXMuZmlsbENvbG9yO3RoaXMuaGlnaGxpZ2h0Q29sb3I9TC5qcXBsb3QuY29tcHV0ZUhpZ2hsaWdodENvbG9ycyhhayl9aWYodGhpcy5oaWdobGlnaHRlcil7dGhpcy5oaWdobGlnaHRlci5zaG93PWZhbHNlfX1pZighdGhpcy5pc1RyZW5kbGluZSYmYW4pe2FuLnBsdWdpbnMubGluZVJlbmRlcmVyPXt9O2FuLnBvc3RJbml0SG9va3MuYWRkT25jZSh6KTthbi5wb3N0RHJhd0hvb2tzLmFkZE9uY2UoYWYpO2FuLmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RNb3VzZU1vdmUiLGgpO2FuLmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RNb3VzZURvd24iLGUpO2FuLmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RNb3VzZVVwIixhZCk7YW4uZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdENsaWNrIixnKTthbi5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90UmlnaHRDbGljayIscyl9fTtMLmpxcGxvdC5MaW5lUmVuZGVyZXIucHJvdG90eXBlLmluaXRCYW5kcz1mdW5jdGlvbihhayxhdil7dmFyIGFsPWFrLmJhbmREYXRhfHxbXTt2YXIgYW49dGhpcy5yZW5kZXJlci5iYW5kczthbi5oaURhdGE9W107YW4ubG93RGF0YT1bXTt2YXIgYUI9dGhpcy5kYXRhO2FuLl9tYXg9bnVsbDthbi5fbWluPW51bGw7aWYoYWwubGVuZ3RoPT0yKXtpZihMLmlzQXJyYXkoYWxbMF1bMF0pKXt2YXIgYW87dmFyIGFoPTAsYXI9MDtmb3IodmFyIGF3PTAsYXQ9YWxbMF0ubGVuZ3RoO2F3PGF0O2F3Kyspe2FvPWFsWzBdW2F3XTtpZigoYW9bMV0hPW51bGwmJmFvWzFdPmFuLl9tYXgpfHxhbi5fbWF4PT1udWxsKXthbi5fbWF4PWFvWzFdfWlmKChhb1sxXSE9bnVsbCYmYW9bMV08YW4uX21pbil8fGFuLl9taW49PW51bGwpe2FuLl9taW49YW9bMV19fWZvcih2YXIgYXc9MCxhdD1hbFsxXS5sZW5ndGg7YXc8YXQ7YXcrKyl7YW89YWxbMV1bYXddO2lmKChhb1sxXSE9bnVsbCYmYW9bMV0+YW4uX21heCl8fGFuLl9tYXg9PW51bGwpe2FuLl9tYXg9YW9bMV07YXI9MX1pZigoYW9bMV0hPW51bGwmJmFvWzFdPGFuLl9taW4pfHxhbi5fbWluPT1udWxsKXthbi5fbWluPWFvWzFdO2FoPTF9fWlmKGFyPT09YWgpe2FuLnNob3c9ZmFsc2V9YW4uaGlEYXRhPWFsW2FyXTthbi5sb3dEYXRhPWFsW2FoXX1lbHNle2lmKGFsWzBdLmxlbmd0aD09PWFCLmxlbmd0aCYmYWxbMV0ubGVuZ3RoPT09YUIubGVuZ3RoKXt2YXIgYWo9KGFsWzBdWzBdPmFsWzFdWzBdKT8wOjE7dmFyIGFDPShhaik/MDoxO2Zvcih2YXIgYXc9MCxhdD1hQi5sZW5ndGg7YXc8YXQ7YXcrKyl7YW4uaGlEYXRhLnB1c2goW2FCW2F3XVswXSxhbFthal1bYXddXSk7YW4ubG93RGF0YS5wdXNoKFthQlthd11bMF0sYWxbYUNdW2F3XV0pfX1lbHNle2FuLnNob3c9ZmFsc2V9fX1lbHNle2lmKGFsLmxlbmd0aD4yJiYhTC5pc0FycmF5KGFsWzBdWzBdKSl7dmFyIGFqPShhbFswXVswXT5hbFswXVsxXSk/MDoxO3ZhciBhQz0oYWopPzA6MTtmb3IodmFyIGF3PTAsYXQ9YWwubGVuZ3RoO2F3PGF0O2F3Kyspe2FuLmhpRGF0YS5wdXNoKFthQlthd11bMF0sYWxbYXddW2FqXV0pO2FuLmxvd0RhdGEucHVzaChbYUJbYXddWzBdLGFsW2F3XVthQ11dKX19ZWxzZXt2YXIgYXE9YW4uaW50ZXJ2YWw7dmFyIGFBPW51bGw7dmFyIGF6PW51bGw7dmFyIGFpPW51bGw7dmFyIGF1PW51bGw7aWYoTC5pc0FycmF5KGFxKSl7YUE9YXFbMF07YXo9YXFbMV19ZWxzZXthQT1hcX1pZihpc05hTihhQSkpe2lmKGFBLmNoYXJBdChhQS5sZW5ndGgtMSk9PT0iJSIpe2FpPSJtdWx0aXBseSI7YUE9cGFyc2VGbG9hdChhQSkvMTAwKzF9fWVsc2V7YUE9cGFyc2VGbG9hdChhQSk7YWk9ImFkZCJ9aWYoYXohPT1udWxsJiZpc05hTihheikpe2lmKGF6LmNoYXJBdChhei5sZW5ndGgtMSk9PT0iJSIpe2F1PSJtdWx0aXBseSI7YXo9cGFyc2VGbG9hdChheikvMTAwKzF9fWVsc2V7aWYoYXohPT1udWxsKXthej1wYXJzZUZsb2F0KGF6KTthdT0iYWRkIn19aWYoYUEhPT1udWxsKXtpZihhej09PW51bGwpe2F6PS1hQTthdT1haTtpZihhdT09PSJtdWx0aXBseSIpe2F6Kz0yfX1pZihhQTxheil7dmFyIGF4PWFBO2FBPWF6O2F6PWF4O2F4PWFpO2FpPWF1O2F1PWF4fWZvcih2YXIgYXc9MCxhdD1hQi5sZW5ndGg7YXc8YXQ7YXcrKyl7c3dpdGNoKGFpKXtjYXNlImFkZCI6YW4uaGlEYXRhLnB1c2goW2FCW2F3XVswXSxhQlthd11bMV0rYUFdKTticmVhaztjYXNlIm11bHRpcGx5Ijphbi5oaURhdGEucHVzaChbYUJbYXddWzBdLGFCW2F3XVsxXSphQV0pO2JyZWFrfXN3aXRjaChhdSl7Y2FzZSJhZGQiOmFuLmxvd0RhdGEucHVzaChbYUJbYXddWzBdLGFCW2F3XVsxXSthel0pO2JyZWFrO2Nhc2UibXVsdGlwbHkiOmFuLmxvd0RhdGEucHVzaChbYUJbYXddWzBdLGFCW2F3XVsxXSphel0pO2JyZWFrfX19ZWxzZXthbi5zaG93PWZhbHNlfX19dmFyIGFtPWFuLmhpRGF0YTt2YXIgYXA9YW4ubG93RGF0YTtmb3IodmFyIGF3PTAsYXQ9YW0ubGVuZ3RoO2F3PGF0O2F3Kyspe2lmKChhbVthd11bMV0hPW51bGwmJmFtW2F3XVsxXT5hbi5fbWF4KXx8YW4uX21heD09bnVsbCl7YW4uX21heD1hbVthd11bMV19fWZvcih2YXIgYXc9MCxhdD1hcC5sZW5ndGg7YXc8YXQ7YXcrKyl7aWYoKGFwW2F3XVsxXSE9bnVsbCYmYXBbYXddWzFdPGFuLl9taW4pfHxhbi5fbWluPT1udWxsKXthbi5fbWluPWFwW2F3XVsxXX19aWYoYW4uZmlsbENvbG9yPT09bnVsbCl7dmFyIGF5PUwuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyhhbi5jb2xvcik7YXlbM109YXlbM10qMC41O2FuLmZpbGxDb2xvcj0icmdiYSgiK2F5WzBdKyIsICIrYXlbMV0rIiwgIitheVsyXSsiLCAiK2F5WzNdKyIpIn19O2Z1bmN0aW9uIEsoYWksYWgpe3JldHVybigzLjQxODIwNTQrYWgpKk1hdGgucG93KGFpLC0wLjM1MzQ5OTIpfWZ1bmN0aW9uIG4oYWosYWkpe3ZhciBhaD1NYXRoLnNxcnQoTWF0aC5wb3coKGFpWzBdLWFqWzBdKSwyKStNYXRoLnBvdygoYWlbMV0tYWpbMV0pLDIpKTtyZXR1cm4gNS43NjQ4Kk1hdGgubG9nKGFoKSs3LjQ0NTZ9ZnVuY3Rpb24gQShhaCl7dmFyIGFpPShNYXRoLmV4cCgyKmFoKS0xKS8oTWF0aC5leHAoMiphaCkrMSk7cmV0dXJuIGFpfWZ1bmN0aW9uIEooYUope3ZhciBhdD10aGlzLnJlbmRlcmVyLnNtb290aDt2YXIgYUQ9dGhpcy5jYW52YXMuZ2V0V2lkdGgoKTt2YXIgYW49dGhpcy5feGF4aXMuc2VyaWVzX3AydTt2YXIgYUc9dGhpcy5feWF4aXMuc2VyaWVzX3AydTt2YXIgYUY9bnVsbDt2YXIgYW09bnVsbDt2YXIgYXo9YUoubGVuZ3RoL2FEO3ZhciBhaj1bXTt2YXIgYXk9W107aWYoIWlzTmFOKHBhcnNlRmxvYXQoYXQpKSl7YUY9cGFyc2VGbG9hdChhdCl9ZWxzZXthRj1LKGF6LDAuNSl9dmFyIGF3PVtdO3ZhciBhaz1bXTtmb3IodmFyIGFFPTAsYUE9YUoubGVuZ3RoO2FFPGFBO2FFKyspe2F3LnB1c2goYUpbYUVdWzFdKTthay5wdXNoKGFKW2FFXVswXSl9ZnVuY3Rpb24gYXYoYUssYUwpe2lmKGFLLWFMPT0wKXtyZXR1cm4gTWF0aC5wb3coMTAsMTApfWVsc2V7cmV0dXJuIGFLLWFMfX12YXIgYXgsYXIsYXEsYXA7dmFyIGFoPWFKLmxlbmd0aC0xO2Zvcih2YXIgYWw9MSxhQj1hSi5sZW5ndGg7YWw8YUI7YWwrKyl7dmFyIGFpPVtdO3ZhciBhdT1bXTtmb3IodmFyIGFDPTA7YUM8MjthQysrKXt2YXIgYUU9YWwtMSthQztpZihhRT09MHx8YUU9PWFoKXthaVthQ109TWF0aC5wb3coMTAsMTApfWVsc2V7aWYoYXdbYUUrMV0tYXdbYUVdPT0wfHxhd1thRV0tYXdbYUUtMV09PTApe2FpW2FDXT0wfWVsc2V7aWYoKChha1thRSsxXS1ha1thRV0pLyhhd1thRSsxXS1hd1thRV0pKyhha1thRV0tYWtbYUUtMV0pLyhhd1thRV0tYXdbYUUtMV0pKT09MCl7YWlbYUNdPTB9ZWxzZXtpZigoYXdbYUUrMV0tYXdbYUVdKSooYXdbYUVdLWF3W2FFLTFdKTwwKXthaVthQ109MH1lbHNle2FpW2FDXT0yLyhhdihha1thRSsxXSxha1thRV0pLyhhd1thRSsxXS1hd1thRV0pK2F2KGFrW2FFXSxha1thRS0xXSkvKGF3W2FFXS1hd1thRS0xXSkpfX19fX1pZihhbD09MSl7YWlbMF09My8yKihhd1sxXS1hd1swXSkvYXYoYWtbMV0sYWtbMF0pLWFpWzFdLzJ9ZWxzZXtpZihhbD09YWgpe2FpWzFdPTMvMiooYXdbYWhdLWF3W2FoLTFdKS9hdihha1thaF0sYWtbYWgtMV0pLWFpWzBdLzJ9fWF1WzBdPS0yKihhaVsxXSsyKmFpWzBdKS9hdihha1thbF0sYWtbYWwtMV0pKzYqKGF3W2FsXS1hd1thbC0xXSkvTWF0aC5wb3coYXYoYWtbYWxdLGFrW2FsLTFdKSwyKTthdVsxXT0yKigyKmFpWzFdK2FpWzBdKS9hdihha1thbF0sYWtbYWwtMV0pLTYqKGF3W2FsXS1hd1thbC0xXSkvTWF0aC5wb3coYXYoYWtbYWxdLGFrW2FsLTFdKSwyKTthcD0xLzYqKGF1WzFdLWF1WzBdKS9hdihha1thbF0sYWtbYWwtMV0pO2FxPTEvMiooYWtbYWxdKmF1WzBdLWFrW2FsLTFdKmF1WzFdKS9hdihha1thbF0sYWtbYWwtMV0pO2FyPShhd1thbF0tYXdbYWwtMV0tYXEqKE1hdGgucG93KGFrW2FsXSwyKS1NYXRoLnBvdyhha1thbC0xXSwyKSktYXAqKE1hdGgucG93KGFrW2FsXSwzKS1NYXRoLnBvdyhha1thbC0xXSwzKSkpL2F2KGFrW2FsXSxha1thbC0xXSk7YXg9YXdbYWwtMV0tYXIqYWtbYWwtMV0tYXEqTWF0aC5wb3coYWtbYWwtMV0sMiktYXAqTWF0aC5wb3coYWtbYWwtMV0sMyk7dmFyIGFJPShha1thbF0tYWtbYWwtMV0pL2FGO3ZhciBhSCxhbztmb3IodmFyIGFDPTAsYUE9YUY7YUM8YUE7YUMrKyl7YUg9W107YW89YWtbYWwtMV0rYUMqYUk7YUgucHVzaChhbyk7YUgucHVzaChheCthciphbythcSpNYXRoLnBvdyhhbywyKSthcCpNYXRoLnBvdyhhbywzKSk7YWoucHVzaChhSCk7YXkucHVzaChbYW4oYUhbMF0pLGFHKGFIWzFdKV0pfX1hai5wdXNoKGFKW2FFXSk7YXkucHVzaChbYW4oYUpbYUVdWzBdKSxhRyhhSlthRV1bMV0pXSk7cmV0dXJuW2FqLGF5XX1mdW5jdGlvbiBGKGFwKXt2YXIgYW89dGhpcy5yZW5kZXJlci5zbW9vdGg7dmFyIGFVPXRoaXMucmVuZGVyZXIudGVuc2lvbjt2YXIgYWg9dGhpcy5jYW52YXMuZ2V0V2lkdGgoKTt2YXIgYUg9dGhpcy5feGF4aXMuc2VyaWVzX3AydTt2YXIgYXE9dGhpcy5feWF4aXMuc2VyaWVzX3AydTt2YXIgYUk9bnVsbDt2YXIgYUo9bnVsbDt2YXIgYVQ9bnVsbDt2YXIgYU89bnVsbDt2YXIgYU09bnVsbDt2YXIgYXQ9bnVsbDt2YXIgYVI9bnVsbDt2YXIgYW09bnVsbDt2YXIgYUssYUwsYUQsYUMsYUEsYXk7dmFyIGFrLGFpLGF2LGF1O3ZhciBhQixheixhTjt2YXIgYXc9W107dmFyIGFqPVtdO3ZhciBhbD1hcC5sZW5ndGgvYWg7dmFyIGFTLGF4LGFGLGFHLGFFO3ZhciBhcj1bXTt2YXIgYW49W107aWYoIWlzTmFOKHBhcnNlRmxvYXQoYW8pKSl7YUk9cGFyc2VGbG9hdChhbyl9ZWxzZXthST1LKGFsLDAuNSl9aWYoIWlzTmFOKHBhcnNlRmxvYXQoYVUpKSl7YVU9cGFyc2VGbG9hdChhVSl9Zm9yKHZhciBhUT0wLGFQPWFwLmxlbmd0aC0xO2FRPGFQO2FRKyspe2lmKGFVPT09bnVsbCl7YXQ9TWF0aC5hYnMoKGFwW2FRKzFdWzFdLWFwW2FRXVsxXSkvKGFwW2FRKzFdWzBdLWFwW2FRXVswXSkpO2FTPTAuMztheD0wLjY7YUY9KGF4LWFTKS8yO2FHPTIuNTthRT0tMS40O2FtPWF0L2FHK2FFO2FPPWFGKkEoYW0pLWFGKkEoYUUpK2FTO2lmKGFRPjApe2FSPU1hdGguYWJzKChhcFthUV1bMV0tYXBbYVEtMV1bMV0pLyhhcFthUV1bMF0tYXBbYVEtMV1bMF0pKX1hbT1hUi9hRythRTthTT1hRipBKGFtKS1hRipBKGFFKSthUzthVD0oYU8rYU0pLzJ9ZWxzZXthVD1hVX1mb3IoYUs9MDthSzxhSTthSysrKXthTD1hSy9hSTthRD0oMSsyKmFMKSpNYXRoLnBvdygoMS1hTCksMik7YUM9YUwqTWF0aC5wb3coKDEtYUwpLDIpO2FBPU1hdGgucG93KGFMLDIpKigzLTIqYUwpO2F5PU1hdGgucG93KGFMLDIpKihhTC0xKTtpZihhcFthUS0xXSl7YWs9YVQqKGFwW2FRKzFdWzBdLWFwW2FRLTFdWzBdKTthaT1hVCooYXBbYVErMV1bMV0tYXBbYVEtMV1bMV0pfWVsc2V7YWs9YVQqKGFwW2FRKzFdWzBdLWFwW2FRXVswXSk7YWk9YVQqKGFwW2FRKzFdWzFdLWFwW2FRXVsxXSl9aWYoYXBbYVErMl0pe2F2PWFUKihhcFthUSsyXVswXS1hcFthUV1bMF0pO2F1PWFUKihhcFthUSsyXVsxXS1hcFthUV1bMV0pfWVsc2V7YXY9YVQqKGFwW2FRKzFdWzBdLWFwW2FRXVswXSk7YXU9YVQqKGFwW2FRKzFdWzFdLWFwW2FRXVsxXSl9YUI9YUQqYXBbYVFdWzBdK2FBKmFwW2FRKzFdWzBdK2FDKmFrK2F5KmF2O2F6PWFEKmFwW2FRXVsxXSthQSphcFthUSsxXVsxXSthQyphaStheSphdTthTj1bYUIsYXpdO2FyLnB1c2goYU4pO2FuLnB1c2goW2FIKGFCKSxhcShheildKX19YXIucHVzaChhcFthUF0pO2FuLnB1c2goW2FIKGFwW2FQXVswXSksYXEoYXBbYVBdWzFdKV0pO3JldHVyblthcixhbl19TC5qcXBsb3QuTGluZVJlbmRlcmVyLnByb3RvdHlwZS5zZXRHcmlkRGF0YT1mdW5jdGlvbihhcCl7dmFyIGFsPXRoaXMuX3hheGlzLnNlcmllc191MnA7dmFyIGFoPXRoaXMuX3lheGlzLnNlcmllc191MnA7dmFyIGFtPXRoaXMuX3Bsb3REYXRhO3ZhciBhcT10aGlzLl9wcmV2UGxvdERhdGE7dGhpcy5ncmlkRGF0YT1bXTt0aGlzLl9wcmV2R3JpZERhdGE9W107dGhpcy5yZW5kZXJlci5fc21vb3RoZWREYXRhPVtdO3RoaXMucmVuZGVyZXIuX3Ntb290aGVkUGxvdERhdGE9W107dGhpcy5yZW5kZXJlci5faGlCYW5kR3JpZERhdGE9W107dGhpcy5yZW5kZXJlci5fbG93QmFuZEdyaWREYXRhPVtdO3RoaXMucmVuZGVyZXIuX2hpQmFuZFNtb290aGVkRGF0YT1bXTt0aGlzLnJlbmRlcmVyLl9sb3dCYW5kU21vb3RoZWREYXRhPVtdO3ZhciBhaz10aGlzLnJlbmRlcmVyLmJhbmRzO3ZhciBhaT1mYWxzZTtmb3IodmFyIGFuPTAsYWo9YW0ubGVuZ3RoO2FuPGFqO2FuKyspe2lmKGFtW2FuXVswXSE9bnVsbCYmYW1bYW5dWzFdIT1udWxsKXt0aGlzLmdyaWREYXRhLnB1c2goW2FsLmNhbGwodGhpcy5feGF4aXMsYW1bYW5dWzBdKSxhaC5jYWxsKHRoaXMuX3lheGlzLGFtW2FuXVsxXSldKX1lbHNle2lmKGFtW2FuXVswXT09bnVsbCl7YWk9dHJ1ZTt0aGlzLmdyaWREYXRhLnB1c2goW251bGwsYWguY2FsbCh0aGlzLl95YXhpcyxhbVthbl1bMV0pXSl9ZWxzZXtpZihhbVthbl1bMV09PW51bGwpe2FpPXRydWU7dGhpcy5ncmlkRGF0YS5wdXNoKFthbC5jYWxsKHRoaXMuX3hheGlzLGFtW2FuXVswXSksbnVsbF0pfX19aWYoYXFbYW5dIT1udWxsJiZhcVthbl1bMF0hPW51bGwmJmFxW2FuXVsxXSE9bnVsbCl7dGhpcy5fcHJldkdyaWREYXRhLnB1c2goW2FsLmNhbGwodGhpcy5feGF4aXMsYXFbYW5dWzBdKSxhaC5jYWxsKHRoaXMuX3lheGlzLGFxW2FuXVsxXSldKX1lbHNle2lmKGFxW2FuXSE9bnVsbCYmYXFbYW5dWzBdPT1udWxsKXt0aGlzLl9wcmV2R3JpZERhdGEucHVzaChbbnVsbCxhaC5jYWxsKHRoaXMuX3lheGlzLGFxW2FuXVsxXSldKX1lbHNle2lmKGFxW2FuXSE9bnVsbCYmYXFbYW5dWzBdIT1udWxsJiZhcVthbl1bMV09PW51bGwpe3RoaXMuX3ByZXZHcmlkRGF0YS5wdXNoKFthbC5jYWxsKHRoaXMuX3hheGlzLGFxW2FuXVswXSksbnVsbF0pfX19fWlmKGFpKXt0aGlzLnJlbmRlcmVyLnNtb290aD1mYWxzZTtpZih0aGlzLl90eXBlPT09ImxpbmUiKXthay5zaG93PWZhbHNlfX1pZih0aGlzLl90eXBlPT09ImxpbmUiJiZhay5zaG93KXtmb3IodmFyIGFuPTAsYWo9YWsuaGlEYXRhLmxlbmd0aDthbjxhajthbisrKXt0aGlzLnJlbmRlcmVyLl9oaUJhbmRHcmlkRGF0YS5wdXNoKFthbC5jYWxsKHRoaXMuX3hheGlzLGFrLmhpRGF0YVthbl1bMF0pLGFoLmNhbGwodGhpcy5feWF4aXMsYWsuaGlEYXRhW2FuXVsxXSldKX1mb3IodmFyIGFuPTAsYWo9YWsubG93RGF0YS5sZW5ndGg7YW48YWo7YW4rKyl7dGhpcy5yZW5kZXJlci5fbG93QmFuZEdyaWREYXRhLnB1c2goW2FsLmNhbGwodGhpcy5feGF4aXMsYWsubG93RGF0YVthbl1bMF0pLGFoLmNhbGwodGhpcy5feWF4aXMsYWsubG93RGF0YVthbl1bMV0pXSl9fWlmKHRoaXMuX3R5cGU9PT0ibGluZSImJnRoaXMucmVuZGVyZXIuc21vb3RoJiZ0aGlzLmdyaWREYXRhLmxlbmd0aD4yKXt2YXIgYW87aWYodGhpcy5yZW5kZXJlci5jb25zdHJhaW5TbW9vdGhpbmcpe2FvPUouY2FsbCh0aGlzLHRoaXMuZ3JpZERhdGEpO3RoaXMucmVuZGVyZXIuX3Ntb290aGVkRGF0YT1hb1swXTt0aGlzLnJlbmRlcmVyLl9zbW9vdGhlZFBsb3REYXRhPWFvWzFdO2lmKGFrLnNob3cpe2FvPUouY2FsbCh0aGlzLHRoaXMucmVuZGVyZXIuX2hpQmFuZEdyaWREYXRhKTt0aGlzLnJlbmRlcmVyLl9oaUJhbmRTbW9vdGhlZERhdGE9YW9bMF07YW89Si5jYWxsKHRoaXMsdGhpcy5yZW5kZXJlci5fbG93QmFuZEdyaWREYXRhKTt0aGlzLnJlbmRlcmVyLl9sb3dCYW5kU21vb3RoZWREYXRhPWFvWzBdfWFvPW51bGx9ZWxzZXthbz1GLmNhbGwodGhpcyx0aGlzLmdyaWREYXRhKTt0aGlzLnJlbmRlcmVyLl9zbW9vdGhlZERhdGE9YW9bMF07dGhpcy5yZW5kZXJlci5fc21vb3RoZWRQbG90RGF0YT1hb1sxXTtpZihhay5zaG93KXthbz1GLmNhbGwodGhpcyx0aGlzLnJlbmRlcmVyLl9oaUJhbmRHcmlkRGF0YSk7dGhpcy5yZW5kZXJlci5faGlCYW5kU21vb3RoZWREYXRhPWFvWzBdO2FvPUYuY2FsbCh0aGlzLHRoaXMucmVuZGVyZXIuX2xvd0JhbmRHcmlkRGF0YSk7dGhpcy5yZW5kZXJlci5fbG93QmFuZFNtb290aGVkRGF0YT1hb1swXX1hbz1udWxsfX19O0wuanFwbG90LkxpbmVSZW5kZXJlci5wcm90b3R5cGUubWFrZUdyaWREYXRhPWZ1bmN0aW9uKGFvLGFxKXt2YXIgYW09dGhpcy5feGF4aXMuc2VyaWVzX3UycDt2YXIgYWg9dGhpcy5feWF4aXMuc2VyaWVzX3UycDt2YXIgYXI9W107dmFyIGFqPVtdO3RoaXMucmVuZGVyZXIuX3Ntb290aGVkRGF0YT1bXTt0aGlzLnJlbmRlcmVyLl9zbW9vdGhlZFBsb3REYXRhPVtdO3RoaXMucmVuZGVyZXIuX2hpQmFuZEdyaWREYXRhPVtdO3RoaXMucmVuZGVyZXIuX2xvd0JhbmRHcmlkRGF0YT1bXTt0aGlzLnJlbmRlcmVyLl9oaUJhbmRTbW9vdGhlZERhdGE9W107dGhpcy5yZW5kZXJlci5fbG93QmFuZFNtb290aGVkRGF0YT1bXTt2YXIgYWw9dGhpcy5yZW5kZXJlci5iYW5kczt2YXIgYWk9ZmFsc2U7Zm9yKHZhciBhbj0wO2FuPGFvLmxlbmd0aDthbisrKXtpZihhb1thbl1bMF0hPW51bGwmJmFvW2FuXVsxXSE9bnVsbCl7YXIucHVzaChbYW0uY2FsbCh0aGlzLl94YXhpcyxhb1thbl1bMF0pLGFoLmNhbGwodGhpcy5feWF4aXMsYW9bYW5dWzFdKV0pfWVsc2V7aWYoYW9bYW5dWzBdPT1udWxsKXthaT10cnVlO2FyLnB1c2goW251bGwsYWguY2FsbCh0aGlzLl95YXhpcyxhb1thbl1bMV0pXSl9ZWxzZXtpZihhb1thbl1bMV09PW51bGwpe2FpPXRydWU7YXIucHVzaChbYW0uY2FsbCh0aGlzLl94YXhpcyxhb1thbl1bMF0pLG51bGxdKX19fX1pZihhaSl7dGhpcy5yZW5kZXJlci5zbW9vdGg9ZmFsc2U7aWYodGhpcy5fdHlwZT09PSJsaW5lIil7YWwuc2hvdz1mYWxzZX19aWYodGhpcy5fdHlwZT09PSJsaW5lIiYmYWwuc2hvdyl7Zm9yKHZhciBhbj0wLGFrPWFsLmhpRGF0YS5sZW5ndGg7YW48YWs7YW4rKyl7dGhpcy5yZW5kZXJlci5faGlCYW5kR3JpZERhdGEucHVzaChbYW0uY2FsbCh0aGlzLl94YXhpcyxhbC5oaURhdGFbYW5dWzBdKSxhaC5jYWxsKHRoaXMuX3lheGlzLGFsLmhpRGF0YVthbl1bMV0pXSl9Zm9yKHZhciBhbj0wLGFrPWFsLmxvd0RhdGEubGVuZ3RoO2FuPGFrO2FuKyspe3RoaXMucmVuZGVyZXIuX2xvd0JhbmRHcmlkRGF0YS5wdXNoKFthbS5jYWxsKHRoaXMuX3hheGlzLGFsLmxvd0RhdGFbYW5dWzBdKSxhaC5jYWxsKHRoaXMuX3lheGlzLGFsLmxvd0RhdGFbYW5dWzFdKV0pfX1pZih0aGlzLl90eXBlPT09ImxpbmUiJiZ0aGlzLnJlbmRlcmVyLnNtb290aCYmYXIubGVuZ3RoPjIpe3ZhciBhcDtpZih0aGlzLnJlbmRlcmVyLmNvbnN0cmFpblNtb290aGluZyl7YXA9Si5jYWxsKHRoaXMsYXIpO3RoaXMucmVuZGVyZXIuX3Ntb290aGVkRGF0YT1hcFswXTt0aGlzLnJlbmRlcmVyLl9zbW9vdGhlZFBsb3REYXRhPWFwWzFdO2lmKGFsLnNob3cpe2FwPUouY2FsbCh0aGlzLHRoaXMucmVuZGVyZXIuX2hpQmFuZEdyaWREYXRhKTt0aGlzLnJlbmRlcmVyLl9oaUJhbmRTbW9vdGhlZERhdGE9YXBbMF07YXA9Si5jYWxsKHRoaXMsdGhpcy5yZW5kZXJlci5fbG93QmFuZEdyaWREYXRhKTt0aGlzLnJlbmRlcmVyLl9sb3dCYW5kU21vb3RoZWREYXRhPWFwWzBdfWFwPW51bGx9ZWxzZXthcD1GLmNhbGwodGhpcyxhcik7dGhpcy5yZW5kZXJlci5fc21vb3RoZWREYXRhPWFwWzBdO3RoaXMucmVuZGVyZXIuX3Ntb290aGVkUGxvdERhdGE9YXBbMV07aWYoYWwuc2hvdyl7YXA9Ri5jYWxsKHRoaXMsdGhpcy5yZW5kZXJlci5faGlCYW5kR3JpZERhdGEpO3RoaXMucmVuZGVyZXIuX2hpQmFuZFNtb290aGVkRGF0YT1hcFswXTthcD1GLmNhbGwodGhpcyx0aGlzLnJlbmRlcmVyLl9sb3dCYW5kR3JpZERhdGEpO3RoaXMucmVuZGVyZXIuX2xvd0JhbmRTbW9vdGhlZERhdGE9YXBbMF19YXA9bnVsbH19cmV0dXJuIGFyfTtMLmpxcGxvdC5MaW5lUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oYXgsYUksYWksYUIpe3ZhciBhQzt2YXIgYXE9TC5leHRlbmQodHJ1ZSx7fSxhaSk7dmFyIGFrPShhcS5zaGFkb3chPXUpP2FxLnNoYWRvdzp0aGlzLnNoYWRvdzt2YXIgYUo9KGFxLnNob3dMaW5lIT11KT9hcS5zaG93TGluZTp0aGlzLnNob3dMaW5lO3ZhciBhQT0oYXEuZmlsbCE9dSk/YXEuZmlsbDp0aGlzLmZpbGw7dmFyIGFoPShhcS5maWxsQW5kU3Ryb2tlIT11KT9hcS5maWxsQW5kU3Ryb2tlOnRoaXMuZmlsbEFuZFN0cm9rZTt2YXIgYXIsYXksYXYsYUU7YXguc2F2ZSgpO2lmKGFJLmxlbmd0aCl7aWYoYUope2lmKGFBKXtpZih0aGlzLmZpbGxUb1plcm8pe3ZhciBhRj10aGlzLm5lZ2F0aXZlQ29sb3I7aWYoIXRoaXMudXNlTmVnYXRpdmVDb2xvcnMpe2FGPWFxLmZpbGxTdHlsZX12YXIgYW89ZmFsc2U7dmFyIGFwPWFxLmZpbGxTdHlsZTtpZihhaCl7dmFyIGFIPWFJLnNsaWNlKDApfWlmKHRoaXMuaW5kZXg9PTB8fCF0aGlzLl9zdGFjayl7dmFyIGF3PVtdO3ZhciBhTD0odGhpcy5yZW5kZXJlci5zbW9vdGgpP3RoaXMucmVuZGVyZXIuX3Ntb290aGVkUGxvdERhdGE6dGhpcy5fcGxvdERhdGE7dGhpcy5fYXJlYVBvaW50cz1bXTt2YXIgYUc9dGhpcy5feWF4aXMuc2VyaWVzX3UycCh0aGlzLmZpbGxUb1ZhbHVlKTt2YXIgYWo9dGhpcy5feGF4aXMuc2VyaWVzX3UycCh0aGlzLmZpbGxUb1ZhbHVlKTthcS5jbG9zZVBhdGg9dHJ1ZTtpZih0aGlzLmZpbGxBeGlzPT0ieSIpe2F3LnB1c2goW2FJWzBdWzBdLGFHXSk7dGhpcy5fYXJlYVBvaW50cy5wdXNoKFthSVswXVswXSxhR10pO2Zvcih2YXIgYUM9MDthQzxhSS5sZW5ndGgtMTthQysrKXthdy5wdXNoKGFJW2FDXSk7dGhpcy5fYXJlYVBvaW50cy5wdXNoKGFJW2FDXSk7aWYoYUxbYUNdWzFdKmFMW2FDKzFdWzFdPD0wKXtpZihhTFthQ11bMV08MCl7YW89dHJ1ZTthcS5maWxsU3R5bGU9YUZ9ZWxzZXthbz1mYWxzZTthcS5maWxsU3R5bGU9YXB9dmFyIGFuPWFJW2FDXVswXSsoYUlbYUMrMV1bMF0tYUlbYUNdWzBdKSooYUctYUlbYUNdWzFdKS8oYUlbYUMrMV1bMV0tYUlbYUNdWzFdKTthdy5wdXNoKFthbixhR10pO3RoaXMuX2FyZWFQb2ludHMucHVzaChbYW4sYUddKTtpZihhayl7dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KGF4LGF3LGFxKX10aGlzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhheCxhdyxhcSk7YXc9W1thbixhR11dfX1pZihhTFthSS5sZW5ndGgtMV1bMV08MCl7YW89dHJ1ZTthcS5maWxsU3R5bGU9YUZ9ZWxzZXthbz1mYWxzZTthcS5maWxsU3R5bGU9YXB9YXcucHVzaChhSVthSS5sZW5ndGgtMV0pO3RoaXMuX2FyZWFQb2ludHMucHVzaChhSVthSS5sZW5ndGgtMV0pO2F3LnB1c2goW2FJW2FJLmxlbmd0aC0xXVswXSxhR10pO3RoaXMuX2FyZWFQb2ludHMucHVzaChbYUlbYUkubGVuZ3RoLTFdWzBdLGFHXSl9aWYoYWspe3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhheCxhdyxhcSl9dGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmRyYXcoYXgsYXcsYXEpfWVsc2V7dmFyIGF1PXRoaXMuX3ByZXZHcmlkRGF0YTtmb3IodmFyIGFDPWF1Lmxlbmd0aDthQz4wO2FDLS0pe2FJLnB1c2goYXVbYUMtMV0pfWlmKGFrKXt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoYXgsYUksYXEpfXRoaXMuX2FyZWFQb2ludHM9YUk7dGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmRyYXcoYXgsYUksYXEpfX1lbHNle2lmKGFoKXt2YXIgYUg9YUkuc2xpY2UoMCl9aWYodGhpcy5pbmRleD09MHx8IXRoaXMuX3N0YWNrKXt2YXIgYWw9YXguY2FudmFzLmhlaWdodDthSS51bnNoaWZ0KFthSVswXVswXSxhbF0pO3ZhciBhRD1hSS5sZW5ndGg7YUkucHVzaChbYUlbYUQtMV1bMF0sYWxdKX1lbHNle3ZhciBhdT10aGlzLl9wcmV2R3JpZERhdGE7Zm9yKHZhciBhQz1hdS5sZW5ndGg7YUM+MDthQy0tKXthSS5wdXNoKGF1W2FDLTFdKX19dGhpcy5fYXJlYVBvaW50cz1hSTtpZihhayl7dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KGF4LGFJLGFxKX10aGlzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhheCxhSSxhcSl9aWYoYWgpe3ZhciBhej1MLmV4dGVuZCh0cnVlLHt9LGFxLHtmaWxsOmZhbHNlLGNsb3NlUGF0aDpmYWxzZX0pO3RoaXMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5kcmF3KGF4LGFILGF6KTtpZih0aGlzLm1hcmtlclJlbmRlcmVyLnNob3cpe2lmKHRoaXMucmVuZGVyZXIuc21vb3RoKXthSD10aGlzLmdyaWREYXRhfWZvcihhQz0wO2FDPGFILmxlbmd0aDthQysrKXt0aGlzLm1hcmtlclJlbmRlcmVyLmRyYXcoYUhbYUNdWzBdLGFIW2FDXVsxXSxheCxhcS5tYXJrZXJPcHRpb25zKX19fX1lbHNle2lmKHRoaXMucmVuZGVyZXIuYmFuZHMuc2hvdyl7dmFyIGFtO3ZhciBhSz1MLmV4dGVuZCh0cnVlLHt9LGFxKTtpZih0aGlzLnJlbmRlcmVyLmJhbmRzLnNob3dMaW5lcyl7YW09KHRoaXMucmVuZGVyZXIuc21vb3RoKT90aGlzLnJlbmRlcmVyLl9oaUJhbmRTbW9vdGhlZERhdGE6dGhpcy5yZW5kZXJlci5faGlCYW5kR3JpZERhdGE7dGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmRyYXcoYXgsYW0sYXEpO2FtPSh0aGlzLnJlbmRlcmVyLnNtb290aCk/dGhpcy5yZW5kZXJlci5fbG93QmFuZFNtb290aGVkRGF0YTp0aGlzLnJlbmRlcmVyLl9sb3dCYW5kR3JpZERhdGE7dGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmRyYXcoYXgsYW0sYUspfWlmKHRoaXMucmVuZGVyZXIuYmFuZHMuZmlsbCl7aWYodGhpcy5yZW5kZXJlci5zbW9vdGgpe2FtPXRoaXMucmVuZGVyZXIuX2hpQmFuZFNtb290aGVkRGF0YS5jb25jYXQodGhpcy5yZW5kZXJlci5fbG93QmFuZFNtb290aGVkRGF0YS5yZXZlcnNlKCkpfWVsc2V7YW09dGhpcy5yZW5kZXJlci5faGlCYW5kR3JpZERhdGEuY29uY2F0KHRoaXMucmVuZGVyZXIuX2xvd0JhbmRHcmlkRGF0YS5yZXZlcnNlKCkpfXRoaXMuX2FyZWFQb2ludHM9YW07YUsuY2xvc2VQYXRoPXRydWU7YUsuZmlsbD10cnVlO2FLLmZpbGxTdHlsZT10aGlzLnJlbmRlcmVyLmJhbmRzLmZpbGxDb2xvcjt0aGlzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhheCxhbSxhSyl9fWlmKGFrKXt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoYXgsYUksYXEpfXRoaXMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5kcmF3KGF4LGFJLGFxKX19dmFyIGFyPWF2PWF5PWFFPW51bGw7Zm9yKGFDPTA7YUM8dGhpcy5fYXJlYVBvaW50cy5sZW5ndGg7YUMrKyl7dmFyIGF0PXRoaXMuX2FyZWFQb2ludHNbYUNdO2lmKGFyPmF0WzBdfHxhcj09bnVsbCl7YXI9YXRbMF19aWYoYUU8YXRbMV18fGFFPT1udWxsKXthRT1hdFsxXX1pZihhdjxhdFswXXx8YXY9PW51bGwpe2F2PWF0WzBdfWlmKGF5PmF0WzFdfHxheT09bnVsbCl7YXk9YXRbMV19fWlmKHRoaXMudHlwZT09PSJsaW5lIiYmdGhpcy5yZW5kZXJlci5iYW5kcy5zaG93KXthRT10aGlzLl95YXhpcy5zZXJpZXNfdTJwKHRoaXMucmVuZGVyZXIuYmFuZHMuX21pbik7YXk9dGhpcy5feWF4aXMuc2VyaWVzX3UycCh0aGlzLnJlbmRlcmVyLmJhbmRzLl9tYXgpfXRoaXMuX2JvdW5kaW5nQm94PVtbYXIsYUVdLFthdixheV1dO2lmKHRoaXMubWFya2VyUmVuZGVyZXIuc2hvdyYmIWFBKXtpZih0aGlzLnJlbmRlcmVyLnNtb290aCl7YUk9dGhpcy5ncmlkRGF0YX1mb3IoYUM9MDthQzxhSS5sZW5ndGg7YUMrKyl7aWYoYUlbYUNdWzBdIT1udWxsJiZhSVthQ11bMV0hPW51bGwpe3RoaXMubWFya2VyUmVuZGVyZXIuZHJhdyhhSVthQ11bMF0sYUlbYUNdWzFdLGF4LGFxLm1hcmtlck9wdGlvbnMpfX19fWF4LnJlc3RvcmUoKX07TC5qcXBsb3QuTGluZVJlbmRlcmVyLnByb3RvdHlwZS5kcmF3U2hhZG93PWZ1bmN0aW9uKGFoLGFqLGFpKXt9O2Z1bmN0aW9uIHooYWssYWosYWgpe2Zvcih2YXIgYWk9MDthaTx0aGlzLnNlcmllcy5sZW5ndGg7YWkrKyl7aWYodGhpcy5zZXJpZXNbYWldLnJlbmRlcmVyLmNvbnN0cnVjdG9yPT1MLmpxcGxvdC5MaW5lUmVuZGVyZXIpe2lmKHRoaXMuc2VyaWVzW2FpXS5oaWdobGlnaHRNb3VzZU92ZXIpe3RoaXMuc2VyaWVzW2FpXS5oaWdobGlnaHRNb3VzZURvd249ZmFsc2V9fX19ZnVuY3Rpb24gYWYoKXtpZih0aGlzLnBsdWdpbnMubGluZVJlbmRlcmVyJiZ0aGlzLnBsdWdpbnMubGluZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcyl7dGhpcy5wbHVnaW5zLmxpbmVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMucmVzZXRDYW52YXMoKTt0aGlzLnBsdWdpbnMubGluZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcz1udWxsfXRoaXMucGx1Z2lucy5saW5lUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleD1udWxsO3RoaXMucGx1Z2lucy5saW5lUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzPW5ldyBMLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUodGhpcy5wbHVnaW5zLmxpbmVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywianFwbG90LWxpbmVSZW5kZXJlci1oaWdobGlnaHQtY2FudmFzIix0aGlzLl9wbG90RGltZW5zaW9ucyx0aGlzKSk7dGhpcy5wbHVnaW5zLmxpbmVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuc2V0Q29udGV4dCgpO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgibW91c2VsZWF2ZSIse3Bsb3Q6dGhpc30sZnVuY3Rpb24oYWgpe2FhKGFoLmRhdGEucGxvdCl9KX1mdW5jdGlvbiBhYyhhbixhbSxhayxhail7dmFyIGFpPWFuLnNlcmllc1thbV07dmFyIGFoPWFuLnBsdWdpbnMubGluZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhczthaC5fY3R4LmNsZWFyUmVjdCgwLDAsYWguX2N0eC5jYW52YXMud2lkdGgsYWguX2N0eC5jYW52YXMuaGVpZ2h0KTthaS5faGlnaGxpZ2h0ZWRQb2ludD1hazthbi5wbHVnaW5zLmxpbmVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4PWFtO3ZhciBhbD17ZmlsbFN0eWxlOmFpLmhpZ2hsaWdodENvbG9yfTtpZihhaS50eXBlPT09ImxpbmUiJiZhaS5yZW5kZXJlci5iYW5kcy5zaG93KXthbC5maWxsPXRydWU7YWwuY2xvc2VQYXRoPXRydWV9YWkucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5kcmF3KGFoLl9jdHgsYWosYWwpO2FoPW51bGx9ZnVuY3Rpb24gYWEoYWope3ZhciBhaD1hai5wbHVnaW5zLmxpbmVSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7YWguX2N0eC5jbGVhclJlY3QoMCwwLGFoLl9jdHguY2FudmFzLndpZHRoLGFoLl9jdHguY2FudmFzLmhlaWdodCk7Zm9yKHZhciBhaT0wO2FpPGFqLnNlcmllcy5sZW5ndGg7YWkrKyl7YWouc2VyaWVzW2FpXS5faGlnaGxpZ2h0ZWRQb2ludD1udWxsfWFqLnBsdWdpbnMubGluZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg9bnVsbDthai50YXJnZXQudHJpZ2dlcigianFwbG90RGF0YVVuaGlnaGxpZ2h0Iik7YWg9bnVsbH1mdW5jdGlvbiBoKGFsLGFrLGFvLGFuLGFtKXtpZihhbil7dmFyIGFqPVthbi5zZXJpZXNJbmRleCxhbi5wb2ludEluZGV4LGFuLmRhdGFdO3ZhciBhaT1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFNb3VzZU92ZXIiKTthaS5wYWdlWD1hbC5wYWdlWDthaS5wYWdlWT1hbC5wYWdlWTthbS50YXJnZXQudHJpZ2dlcihhaSxhaik7aWYoYW0uc2VyaWVzW2FqWzBdXS5oaWdobGlnaHRNb3VzZU92ZXImJiEoYWpbMF09PWFtLnBsdWdpbnMubGluZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXgpKXt2YXIgYWg9alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhSGlnaGxpZ2h0Iik7YWgud2hpY2g9YWwud2hpY2g7YWgucGFnZVg9YWwucGFnZVg7YWgucGFnZVk9YWwucGFnZVk7YW0udGFyZ2V0LnRyaWdnZXIoYWgsYWopO2FjKGFtLGFuLnNlcmllc0luZGV4LGFuLnBvaW50SW5kZXgsYW4ucG9pbnRzKX19ZWxzZXtpZihhbj09bnVsbCl7YWEoYW0pfX19ZnVuY3Rpb24gZShhayxhaixhbixhbSxhbCl7aWYoYW0pe3ZhciBhaT1bYW0uc2VyaWVzSW5kZXgsYW0ucG9pbnRJbmRleCxhbS5kYXRhXTtpZihhbC5zZXJpZXNbYWlbMF1dLmhpZ2hsaWdodE1vdXNlRG93biYmIShhaVswXT09YWwucGx1Z2lucy5saW5lUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCkpe3ZhciBhaD1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFIaWdobGlnaHQiKTthaC53aGljaD1hay53aGljaDthaC5wYWdlWD1hay5wYWdlWDthaC5wYWdlWT1hay5wYWdlWTthbC50YXJnZXQudHJpZ2dlcihhaCxhaSk7YWMoYWwsYW0uc2VyaWVzSW5kZXgsYW0ucG9pbnRJbmRleCxhbS5wb2ludHMpfX1lbHNle2lmKGFtPT1udWxsKXthYShhbCl9fX1mdW5jdGlvbiBhZChhaixhaSxhbSxhbCxhayl7dmFyIGFoPWFrLnBsdWdpbnMubGluZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg7aWYoYWghPW51bGwmJmFrLnNlcmllc1thaF0uaGlnaGxpZ2h0TW91c2VEb3duKXthYShhayl9fWZ1bmN0aW9uIGcoYWssYWosYW4sYW0sYWwpe2lmKGFtKXt2YXIgYWk9W2FtLnNlcmllc0luZGV4LGFtLnBvaW50SW5kZXgsYW0uZGF0YV07dmFyIGFoPWpRdWVyeS5FdmVudCgianFwbG90RGF0YUNsaWNrIik7YWgud2hpY2g9YWsud2hpY2g7YWgucGFnZVg9YWsucGFnZVg7YWgucGFnZVk9YWsucGFnZVk7YWwudGFyZ2V0LnRyaWdnZXIoYWgsYWkpfX1mdW5jdGlvbiBzKGFsLGFrLGFvLGFuLGFtKXtpZihhbil7dmFyIGFqPVthbi5zZXJpZXNJbmRleCxhbi5wb2ludEluZGV4LGFuLmRhdGFdO3ZhciBhaD1hbS5wbHVnaW5zLmxpbmVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4O2lmKGFoIT1udWxsJiZhbS5zZXJpZXNbYWhdLmhpZ2hsaWdodE1vdXNlRG93bil7YWEoYW0pfXZhciBhaT1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFSaWdodENsaWNrIik7YWkud2hpY2g9YWwud2hpY2g7YWkucGFnZVg9YWwucGFnZVg7YWkucGFnZVk9YWwucGFnZVk7YW0udGFyZ2V0LnRyaWdnZXIoYWksYWopfX1MLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXI9ZnVuY3Rpb24oKXt9O0wuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihhaCl7dGhpcy5icmVha1BvaW50cz1udWxsO3RoaXMuYnJlYWtUaWNrTGFiZWw9IiZhc3ltcDsiO3RoaXMuZHJhd0Jhc2VsaW5lPXRydWU7dGhpcy5iYXNlbGluZVdpZHRoPW51bGw7dGhpcy5iYXNlbGluZUNvbG9yPW51bGw7dGhpcy5mb3JjZVRpY2tBdDA9ZmFsc2U7dGhpcy5mb3JjZVRpY2tBdDEwMD1mYWxzZTt0aGlzLnRpY2tJbnNldD0wO3RoaXMubWlub3JUaWNrcz0wO3RoaXMuYWxpZ25UaWNrcz1mYWxzZTt0aGlzLl9hdXRvRm9ybWF0U3RyaW5nPSIiO3RoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nPWZhbHNlO3RoaXMuX3NjYWxlZmFjdD0xO0wuZXh0ZW5kKHRydWUsdGhpcyxhaCk7aWYodGhpcy5icmVha1BvaW50cyl7aWYoIUwuaXNBcnJheSh0aGlzLmJyZWFrUG9pbnRzKSl7dGhpcy5icmVha1BvaW50cz1udWxsfWVsc2V7aWYodGhpcy5icmVha1BvaW50cy5sZW5ndGg8Mnx8dGhpcy5icmVha1BvaW50c1sxXTw9dGhpcy5icmVha1BvaW50c1swXSl7dGhpcy5icmVha1BvaW50cz1udWxsfX19aWYodGhpcy5udW1iZXJUaWNrcyE9bnVsbCYmdGhpcy5udW1iZXJUaWNrczwyKXt0aGlzLm51bWJlclRpY2tzPTJ9dGhpcy5yZXNldERhdGFCb3VuZHMoKX07TC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKGFoLGFvKXtpZih0aGlzLnNob3cpe3RoaXMucmVuZGVyZXIuY3JlYXRlVGlja3MuY2FsbCh0aGlzLGFvKTt2YXIgYW49MDt2YXIgYWk7aWYodGhpcy5fZWxlbSl7dGhpcy5fZWxlbS5lbXB0eUZvcmNlKCk7dGhpcy5fZWxlbT1udWxsfXRoaXMuX2VsZW09TChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7dGhpcy5fZWxlbS5hZGRDbGFzcygianFwbG90LWF4aXMganFwbG90LSIrdGhpcy5uYW1lKTt0aGlzLl9lbGVtLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIpO2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7dGhpcy5fZWxlbS53aWR0aCh0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCl9ZWxzZXt0aGlzLl9lbGVtLmhlaWdodCh0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQpfXRoaXMubGFiZWxPcHRpb25zLmF4aXM9dGhpcy5uYW1lO3RoaXMuX2xhYmVsPW5ldyB0aGlzLmxhYmVsUmVuZGVyZXIodGhpcy5sYWJlbE9wdGlvbnMpO2lmKHRoaXMuX2xhYmVsLnNob3cpe3ZhciBhbT10aGlzLl9sYWJlbC5kcmF3KGFoLGFvKTthbS5hcHBlbmRUbyh0aGlzLl9lbGVtKTthbT1udWxsfXZhciBhbD10aGlzLl90aWNrczt2YXIgYWs7Zm9yKHZhciBhaj0wO2FqPGFsLmxlbmd0aDthaisrKXthaz1hbFthal07aWYoYWsuc2hvdyYmYWsuc2hvd0xhYmVsJiYoIWFrLmlzTWlub3JUaWNrfHx0aGlzLnNob3dNaW5vclRpY2tzKSl7dGhpcy5fZWxlbS5hcHBlbmQoYWsuZHJhdyhhaCxhbykpfX1haz1udWxsO2FsPW51bGx9cmV0dXJuIHRoaXMuX2VsZW19O0wuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLm1pbj10aGlzLl9vcHRpb25zLm1pbjt0aGlzLm1heD10aGlzLl9vcHRpb25zLm1heDt0aGlzLnRpY2tJbnRlcnZhbD10aGlzLl9vcHRpb25zLnRpY2tJbnRlcnZhbDt0aGlzLm51bWJlclRpY2tzPXRoaXMuX29wdGlvbnMubnVtYmVyVGlja3M7dGhpcy5fYXV0b0Zvcm1hdFN0cmluZz0iIjtpZih0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZyYmdGhpcy50aWNrT3B0aW9ucyYmdGhpcy50aWNrT3B0aW9ucy5mb3JtYXRTdHJpbmcpe3RoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nPSIifX07TC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oKXt2YXIgYW89MDt2YXIgYWo7dmFyIGFpPTA7dmFyIGFuPTA7dmFyIGFoPSh0aGlzLl9sYWJlbD09bnVsbCk/ZmFsc2U6dGhpcy5fbGFiZWwuc2hvdztpZih0aGlzLnNob3cpe3ZhciBhbT10aGlzLl90aWNrczt2YXIgYWw7Zm9yKHZhciBhaz0wO2FrPGFtLmxlbmd0aDthaysrKXthbD1hbVtha107aWYoIWFsLl9icmVha1RpY2smJmFsLnNob3cmJmFsLnNob3dMYWJlbCYmKCFhbC5pc01pbm9yVGlja3x8dGhpcy5zaG93TWlub3JUaWNrcykpe2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7YWo9YWwuX2VsZW0ub3V0ZXJIZWlnaHQodHJ1ZSl9ZWxzZXthaj1hbC5fZWxlbS5vdXRlcldpZHRoKHRydWUpfWlmKGFqPmFvKXthbz1han19fWFsPW51bGw7YW09bnVsbDtpZihhaCl7YWk9dGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTthbj10aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKX1pZih0aGlzLm5hbWU9PSJ4YXhpcyIpe2FvPWFvK2FuO3RoaXMuX2VsZW0uY3NzKHtoZWlnaHQ6YW8rInB4IixsZWZ0OiIwcHgiLGJvdHRvbToiMHB4In0pfWVsc2V7aWYodGhpcy5uYW1lPT0ieDJheGlzIil7YW89YW8rYW47dGhpcy5fZWxlbS5jc3Moe2hlaWdodDphbysicHgiLGxlZnQ6IjBweCIsdG9wOiIwcHgifSl9ZWxzZXtpZih0aGlzLm5hbWU9PSJ5YXhpcyIpe2FvPWFvK2FpO3RoaXMuX2VsZW0uY3NzKHt3aWR0aDphbysicHgiLGxlZnQ6IjBweCIsdG9wOiIwcHgifSk7aWYoYWgmJnRoaXMuX2xhYmVsLmNvbnN0cnVjdG9yPT1MLmpxcGxvdC5BeGlzTGFiZWxSZW5kZXJlcil7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJ3aWR0aCIsYWkrInB4Iil9fWVsc2V7YW89YW8rYWk7dGhpcy5fZWxlbS5jc3Moe3dpZHRoOmFvKyJweCIscmlnaHQ6IjBweCIsdG9wOiIwcHgifSk7aWYoYWgmJnRoaXMuX2xhYmVsLmNvbnN0cnVjdG9yPT1MLmpxcGxvdC5BeGlzTGFiZWxSZW5kZXJlcil7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJ3aWR0aCIsYWkrInB4Iil9fX19fX07TC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jcmVhdGVUaWNrcz1mdW5jdGlvbihhail7dmFyIGFUPXRoaXMuX3RpY2tzO3ZhciBhSz10aGlzLnRpY2tzO3ZhciBhej10aGlzLm5hbWU7dmFyIGFCPXRoaXMuX2RhdGFCb3VuZHM7dmFyIGFoPSh0aGlzLm5hbWUuY2hhckF0KDApPT09IngiKT90aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aDp0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQ7dmFyIGFuO3ZhciBhNixhSTt2YXIgYXAsYW87dmFyIGE0LGEwO3ZhciBhSD10aGlzLm1pbjt2YXIgYTU9dGhpcy5tYXg7dmFyIGFXPXRoaXMubnVtYmVyVGlja3M7dmFyIGJhPXRoaXMudGlja0ludGVydmFsO3ZhciBhbT0zMDt0aGlzLl9zY2FsZWZhY3Q9KE1hdGgubWF4KGFoLGFtKzEpLWFtKS8zMDA7aWYoYUsubGVuZ3RoKXtmb3IoYTA9MDthMDxhSy5sZW5ndGg7YTArKyl7dmFyIGFPPWFLW2EwXTt2YXIgYVU9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2lmKEwuaXNBcnJheShhTykpe2FVLnZhbHVlPWFPWzBdO2lmKHRoaXMuYnJlYWtQb2ludHMpe2lmKGFPWzBdPT10aGlzLmJyZWFrUG9pbnRzWzBdKXthVS5sYWJlbD10aGlzLmJyZWFrVGlja0xhYmVsO2FVLl9icmVha1RpY2s9dHJ1ZTthVS5zaG93R3JpZGxpbmU9ZmFsc2U7YVUuc2hvd01hcms9ZmFsc2V9ZWxzZXtpZihhT1swXT50aGlzLmJyZWFrUG9pbnRzWzBdJiZhT1swXTw9dGhpcy5icmVha1BvaW50c1sxXSl7YVUuc2hvdz1mYWxzZTthVS5zaG93R3JpZGxpbmU9ZmFsc2U7YVUubGFiZWw9YU9bMV19ZWxzZXthVS5sYWJlbD1hT1sxXX19fWVsc2V7YVUubGFiZWw9YU9bMV19YVUuc2V0VGljayhhT1swXSx0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goYVUpfWVsc2V7aWYoTC5pc1BsYWluT2JqZWN0KGFPKSl7TC5leHRlbmQodHJ1ZSxhVSxhTyk7YVUuYXhpcz10aGlzLm5hbWU7dGhpcy5fdGlja3MucHVzaChhVSl9ZWxzZXthVS52YWx1ZT1hTztpZih0aGlzLmJyZWFrUG9pbnRzKXtpZihhTz09dGhpcy5icmVha1BvaW50c1swXSl7YVUubGFiZWw9dGhpcy5icmVha1RpY2tMYWJlbDthVS5fYnJlYWtUaWNrPXRydWU7YVUuc2hvd0dyaWRsaW5lPWZhbHNlO2FVLnNob3dNYXJrPWZhbHNlfWVsc2V7aWYoYU8+dGhpcy5icmVha1BvaW50c1swXSYmYU88PXRoaXMuYnJlYWtQb2ludHNbMV0pe2FVLnNob3c9ZmFsc2U7YVUuc2hvd0dyaWRsaW5lPWZhbHNlfX19YVUuc2V0VGljayhhTyx0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goYVUpfX19dGhpcy5udW1iZXJUaWNrcz1hSy5sZW5ndGg7dGhpcy5taW49dGhpcy5fdGlja3NbMF0udmFsdWU7dGhpcy5tYXg9dGhpcy5fdGlja3NbdGhpcy5udW1iZXJUaWNrcy0xXS52YWx1ZTt0aGlzLnRpY2tJbnRlcnZhbD0odGhpcy5tYXgtdGhpcy5taW4pLyh0aGlzLm51bWJlclRpY2tzLTEpfWVsc2V7aWYoYXo9PSJ4YXhpcyJ8fGF6PT0ieDJheGlzIil7YWg9dGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGh9ZWxzZXthaD10aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHR9dmFyIGF4PXRoaXMubnVtYmVyVGlja3M7aWYodGhpcy5hbGlnblRpY2tzKXtpZih0aGlzLm5hbWU9PT0ieDJheGlzIiYmYWouYXhlcy54YXhpcy5zaG93KXtheD1hai5heGVzLnhheGlzLm51bWJlclRpY2tzfWVsc2V7aWYodGhpcy5uYW1lLmNoYXJBdCgwKT09PSJ5IiYmdGhpcy5uYW1lIT09InlheGlzIiYmdGhpcy5uYW1lIT09InlNaWRBeGlzIiYmYWouYXhlcy55YXhpcy5zaG93KXtheD1hai5heGVzLnlheGlzLm51bWJlclRpY2tzfX19YTY9KCh0aGlzLm1pbiE9bnVsbCk/dGhpcy5taW46YUIubWluKTthST0oKHRoaXMubWF4IT1udWxsKT90aGlzLm1heDphQi5tYXgpO3ZhciBhdj1hSS1hNjt2YXIgYVMsYXk7dmFyIGF0O2lmKHRoaXMudGlja09wdGlvbnM9PW51bGx8fCF0aGlzLnRpY2tPcHRpb25zLmZvcm1hdFN0cmluZyl7dGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmc9dHJ1ZX1pZih0aGlzLm1pbj09bnVsbHx8dGhpcy5tYXg9PW51bGwmJnRoaXMudGlja0ludGVydmFsPT1udWxsJiYhdGhpcy5hdXRvc2NhbGUpe2lmKHRoaXMuZm9yY2VUaWNrQXQwKXtpZihhNj4wKXthNj0wfWlmKGFJPDApe2FJPTB9fWlmKHRoaXMuZm9yY2VUaWNrQXQxMDApe2lmKGE2PjEwMCl7YTY9MTAwfWlmKGFJPDEwMCl7YUk9MTAwfX12YXIgYUU9ZmFsc2UsYTE9ZmFsc2U7aWYodGhpcy5taW4hPW51bGwpe2FFPXRydWV9ZWxzZXtpZih0aGlzLm1heCE9bnVsbCl7YTE9dHJ1ZX19dmFyIGFQPUwuanFwbG90LkxpbmVhclRpY2tHZW5lcmF0b3IoYTYsYUksdGhpcy5fc2NhbGVmYWN0LGF4LGFFLGExKTt2YXIgYXc9KHRoaXMubWluIT1udWxsKT9hNjphNithdioodGhpcy5wYWRNaW4tMSk7dmFyIGFRPSh0aGlzLm1heCE9bnVsbCk/YUk6YUktYXYqKHRoaXMucGFkTWF4LTEpO2lmKGE2PGF3fHxhST5hUSl7YXc9KHRoaXMubWluIT1udWxsKT9hNjphNi1hdioodGhpcy5wYWRNaW4tMSk7YVE9KHRoaXMubWF4IT1udWxsKT9hSTphSSthdioodGhpcy5wYWRNYXgtMSk7YVA9TC5qcXBsb3QuTGluZWFyVGlja0dlbmVyYXRvcihhdyxhUSx0aGlzLl9zY2FsZWZhY3QsYXgsYUUsYTEpfXRoaXMubWluPWFQWzBdO3RoaXMubWF4PWFQWzFdO3RoaXMubnVtYmVyVGlja3M9YVBbMl07dGhpcy5fYXV0b0Zvcm1hdFN0cmluZz1hUFszXTt0aGlzLnRpY2tJbnRlcnZhbD1hUFs0XX1lbHNle2lmKGE2PT1hSSl7dmFyIGFpPTAuMDU7aWYoYTY+MCl7YWk9TWF0aC5tYXgoTWF0aC5sb2coYTYpL01hdGguTE4xMCwwLjA1KX1hNi09YWk7YUkrPWFpfWlmKHRoaXMuYXV0b3NjYWxlJiZ0aGlzLm1pbj09bnVsbCYmdGhpcy5tYXg9PW51bGwpe3ZhciBhayxhbCxhcjt2YXIgYUM9ZmFsc2U7dmFyIGFOPWZhbHNlO3ZhciBhQT17bWluOm51bGwsbWF4Om51bGwsYXZlcmFnZTpudWxsLHN0ZGRldjpudWxsfTtmb3IodmFyIGEwPTA7YTA8dGhpcy5fc2VyaWVzLmxlbmd0aDthMCsrKXt2YXIgYVY9dGhpcy5fc2VyaWVzW2EwXTt2YXIgYUQ9KGFWLmZpbGxBeGlzPT0ieCIpP2FWLl94YXhpcy5uYW1lOmFWLl95YXhpcy5uYW1lO2lmKHRoaXMubmFtZT09YUQpe3ZhciBhUj1hVi5fcGxvdFZhbHVlc1thVi5maWxsQXhpc107dmFyIGFHPWFSWzBdO3ZhciBhMj1hUlswXTtmb3IodmFyIGFaPTE7YVo8YVIubGVuZ3RoO2FaKyspe2lmKGFSW2FaXTxhRyl7YUc9YVJbYVpdfWVsc2V7aWYoYVJbYVpdPmEyKXthMj1hUlthWl19fX12YXIgYXU9KGEyLWFHKS9hMjtpZihhVi5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09TC5qcXBsb3QuQmFyUmVuZGVyZXIpe2lmKGFHPj0wJiYoYVYuZmlsbFRvWmVyb3x8YXU+MC4xKSl7YUM9dHJ1ZX1lbHNle2FDPWZhbHNlO2lmKGFWLmZpbGwmJmFWLmZpbGxUb1plcm8mJmFHPDAmJmEyPjApe2FOPXRydWV9ZWxzZXthTj1mYWxzZX19fWVsc2V7aWYoYVYuZmlsbCl7aWYoYUc+PTAmJihhVi5maWxsVG9aZXJvfHxhdT4wLjEpKXthQz10cnVlfWVsc2V7aWYoYUc8MCYmYTI+MCYmYVYuZmlsbFRvWmVybyl7YUM9ZmFsc2U7YU49dHJ1ZX1lbHNle2FDPWZhbHNlO2FOPWZhbHNlfX19ZWxzZXtpZihhRzwwKXthQz1mYWxzZX19fX19aWYoYUMpe3RoaXMubnVtYmVyVGlja3M9MitNYXRoLmNlaWwoKGFoLSh0aGlzLnRpY2tTcGFjaW5nLTEpKS90aGlzLnRpY2tTcGFjaW5nKTt0aGlzLm1pbj0wO2FIPTA7YWw9YUkvKHRoaXMubnVtYmVyVGlja3MtMSk7YXQ9TWF0aC5wb3coMTAsTWF0aC5hYnMoTWF0aC5mbG9vcihNYXRoLmxvZyhhbCkvTWF0aC5MTjEwKSkpO2lmKGFsL2F0PT1wYXJzZUludChhbC9hdCwxMCkpe2FsKz1hdH10aGlzLnRpY2tJbnRlcnZhbD1NYXRoLmNlaWwoYWwvYXQpKmF0O3RoaXMubWF4PXRoaXMudGlja0ludGVydmFsKih0aGlzLm51bWJlclRpY2tzLTEpfWVsc2V7aWYoYU4pe3RoaXMubnVtYmVyVGlja3M9MitNYXRoLmNlaWwoKGFoLSh0aGlzLnRpY2tTcGFjaW5nLTEpKS90aGlzLnRpY2tTcGFjaW5nKTt2YXIgYUo9TWF0aC5jZWlsKE1hdGguYWJzKGE2KS9hdioodGhpcy5udW1iZXJUaWNrcy0xKSk7dmFyIGE5PXRoaXMubnVtYmVyVGlja3MtMS1hSjthbD1NYXRoLm1heChNYXRoLmFicyhhNi9hSiksTWF0aC5hYnMoYUkvYTkpKTthdD1NYXRoLnBvdygxMCxNYXRoLmFicyhNYXRoLmZsb29yKE1hdGgubG9nKGFsKS9NYXRoLkxOMTApKSk7dGhpcy50aWNrSW50ZXJ2YWw9TWF0aC5jZWlsKGFsL2F0KSphdDt0aGlzLm1heD10aGlzLnRpY2tJbnRlcnZhbCphOTt0aGlzLm1pbj0tdGhpcy50aWNrSW50ZXJ2YWwqYUp9ZWxzZXtpZih0aGlzLm51bWJlclRpY2tzPT1udWxsKXtpZih0aGlzLnRpY2tJbnRlcnZhbCl7dGhpcy5udW1iZXJUaWNrcz0zK01hdGguY2VpbChhdi90aGlzLnRpY2tJbnRlcnZhbCl9ZWxzZXt0aGlzLm51bWJlclRpY2tzPTIrTWF0aC5jZWlsKChhaC0odGhpcy50aWNrU3BhY2luZy0xKSkvdGhpcy50aWNrU3BhY2luZyl9fWlmKHRoaXMudGlja0ludGVydmFsPT1udWxsKXthbD1hdi8odGhpcy5udW1iZXJUaWNrcy0xKTtpZihhbDwxKXthdD1NYXRoLnBvdygxMCxNYXRoLmFicyhNYXRoLmZsb29yKE1hdGgubG9nKGFsKS9NYXRoLkxOMTApKSl9ZWxzZXthdD0xfXRoaXMudGlja0ludGVydmFsPU1hdGguY2VpbChhbCphdCp0aGlzLnBhZCkvYXR9ZWxzZXthdD0xL3RoaXMudGlja0ludGVydmFsfWFrPXRoaXMudGlja0ludGVydmFsKih0aGlzLm51bWJlclRpY2tzLTEpO2FyPShhay1hdikvMjtpZih0aGlzLm1pbj09bnVsbCl7dGhpcy5taW49TWF0aC5mbG9vcihhdCooYTYtYXIpKS9hdH1pZih0aGlzLm1heD09bnVsbCl7dGhpcy5tYXg9dGhpcy5taW4rYWt9fX12YXIgYUY9TC5qcXBsb3QuZ2V0U2lnbmlmaWNhbnRGaWd1cmVzKHRoaXMudGlja0ludGVydmFsKTt2YXIgYU07aWYoYUYuZGlnaXRzTGVmdD49YUYuc2lnbmlmaWNhbnREaWdpdHMpe2FNPSIlZCJ9ZWxzZXt2YXIgYXQ9TWF0aC5tYXgoMCw1LWFGLmRpZ2l0c0xlZnQpO2F0PU1hdGgubWluKGF0LGFGLmRpZ2l0c1JpZ2h0KTthTT0iJS4iK2F0KyJmIn10aGlzLl9hdXRvRm9ybWF0U3RyaW5nPWFNfWVsc2V7YVM9KHRoaXMubWluIT1udWxsKT90aGlzLm1pbjphNi1hdioodGhpcy5wYWRNaW4tMSk7YXk9KHRoaXMubWF4IT1udWxsKT90aGlzLm1heDphSSthdioodGhpcy5wYWRNYXgtMSk7YXY9YXktYVM7aWYodGhpcy5udW1iZXJUaWNrcz09bnVsbCl7aWYodGhpcy50aWNrSW50ZXJ2YWwhPW51bGwpe3RoaXMubnVtYmVyVGlja3M9TWF0aC5jZWlsKChheS1hUykvdGhpcy50aWNrSW50ZXJ2YWwpKzF9ZWxzZXtpZihhaD4xMDApe3RoaXMubnVtYmVyVGlja3M9cGFyc2VJbnQoMysoYWgtMTAwKS83NSwxMCl9ZWxzZXt0aGlzLm51bWJlclRpY2tzPTJ9fX1pZih0aGlzLnRpY2tJbnRlcnZhbD09bnVsbCl7dGhpcy50aWNrSW50ZXJ2YWw9YXYvKHRoaXMubnVtYmVyVGlja3MtMSl9aWYodGhpcy5tYXg9PW51bGwpe2F5PWFTK3RoaXMudGlja0ludGVydmFsKih0aGlzLm51bWJlclRpY2tzLTEpfWlmKHRoaXMubWluPT1udWxsKXthUz1heS10aGlzLnRpY2tJbnRlcnZhbCoodGhpcy5udW1iZXJUaWNrcy0xKX12YXIgYUY9TC5qcXBsb3QuZ2V0U2lnbmlmaWNhbnRGaWd1cmVzKHRoaXMudGlja0ludGVydmFsKTt2YXIgYU07aWYoYUYuZGlnaXRzTGVmdD49YUYuc2lnbmlmaWNhbnREaWdpdHMpe2FNPSIlZCJ9ZWxzZXt2YXIgYXQ9TWF0aC5tYXgoMCw1LWFGLmRpZ2l0c0xlZnQpO2F0PU1hdGgubWluKGF0LGFGLmRpZ2l0c1JpZ2h0KTthTT0iJS4iK2F0KyJmIn10aGlzLl9hdXRvRm9ybWF0U3RyaW5nPWFNO3RoaXMubWluPWFTO3RoaXMubWF4PWF5fWlmKHRoaXMucmVuZGVyZXIuY29uc3RydWN0b3I9PUwuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlciYmdGhpcy5fYXV0b0Zvcm1hdFN0cmluZz09IiIpe2F2PXRoaXMubWF4LXRoaXMubWluO3ZhciBhNz1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7dmFyIGFMPWE3LmZvcm1hdFN0cmluZ3x8TC5qcXBsb3QuY29uZmlnLmRlZmF1bHRUaWNrRm9ybWF0U3RyaW5nO3ZhciBhTD1hTC5tYXRjaChMLmpxcGxvdC5zcHJpbnRmLnJlZ2V4KVswXTt2YXIgYTM9MDtpZihhTCl7aWYoYUwuc2VhcmNoKC9bZkZlRWdHcFBdLyk+LTEpe3ZhciBhWT1hTC5tYXRjaCgvXCVcLihcZHswLH0pP1tlRWZGZ0dwUF0vKTtpZihhWSl7YTM9cGFyc2VJbnQoYVlbMV0sMTApfWVsc2V7YTM9Nn19ZWxzZXtpZihhTC5zZWFyY2goL1tkaV0vKT4tMSl7YTM9MH19dmFyIGFxPU1hdGgucG93KDEwLC1hMyk7aWYodGhpcy50aWNrSW50ZXJ2YWw8YXEpe2lmKGFXPT1udWxsJiZiYT09bnVsbCl7dGhpcy50aWNrSW50ZXJ2YWw9YXE7aWYoYTU9PW51bGwmJmFIPT1udWxsKXt0aGlzLm1pbj1NYXRoLmZsb29yKHRoaXMuX2RhdGFCb3VuZHMubWluL2FxKSphcTtpZih0aGlzLm1pbj09dGhpcy5fZGF0YUJvdW5kcy5taW4pe3RoaXMubWluPXRoaXMuX2RhdGFCb3VuZHMubWluLXRoaXMudGlja0ludGVydmFsfXRoaXMubWF4PU1hdGguY2VpbCh0aGlzLl9kYXRhQm91bmRzLm1heC9hcSkqYXE7aWYodGhpcy5tYXg9PXRoaXMuX2RhdGFCb3VuZHMubWF4KXt0aGlzLm1heD10aGlzLl9kYXRhQm91bmRzLm1heCt0aGlzLnRpY2tJbnRlcnZhbH12YXIgYVg9KHRoaXMubWF4LXRoaXMubWluKS90aGlzLnRpY2tJbnRlcnZhbDthWD1hWC50b0ZpeGVkKDExKTthWD1NYXRoLmNlaWwoYVgpO3RoaXMubnVtYmVyVGlja3M9YVgrMX1lbHNle2lmKGE1PT1udWxsKXt2YXIgYVg9KHRoaXMuX2RhdGFCb3VuZHMubWF4LXRoaXMubWluKS90aGlzLnRpY2tJbnRlcnZhbDthWD1hWC50b0ZpeGVkKDExKTt0aGlzLm51bWJlclRpY2tzPU1hdGguY2VpbChhWCkrMjt0aGlzLm1heD10aGlzLm1pbit0aGlzLnRpY2tJbnRlcnZhbCoodGhpcy5udW1iZXJUaWNrcy0xKX1lbHNle2lmKGFIPT1udWxsKXt2YXIgYVg9KHRoaXMubWF4LXRoaXMuX2RhdGFCb3VuZHMubWluKS90aGlzLnRpY2tJbnRlcnZhbDthWD1hWC50b0ZpeGVkKDExKTt0aGlzLm51bWJlclRpY2tzPU1hdGguY2VpbChhWCkrMjt0aGlzLm1pbj10aGlzLm1heC10aGlzLnRpY2tJbnRlcnZhbCoodGhpcy5udW1iZXJUaWNrcy0xKX1lbHNle3RoaXMubnVtYmVyVGlja3M9TWF0aC5jZWlsKChhNS1hSCkvdGhpcy50aWNrSW50ZXJ2YWwpKzE7dGhpcy5taW49TWF0aC5mbG9vcihhSCpNYXRoLnBvdygxMCxhMykpL01hdGgucG93KDEwLGEzKTt0aGlzLm1heD1NYXRoLmNlaWwoYTUqTWF0aC5wb3coMTAsYTMpKS9NYXRoLnBvdygxMCxhMyk7dGhpcy5udW1iZXJUaWNrcz1NYXRoLmNlaWwoKHRoaXMubWF4LXRoaXMubWluKS90aGlzLnRpY2tJbnRlcnZhbCkrMX19fX19fX19aWYodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcmJnRoaXMuX2F1dG9Gb3JtYXRTdHJpbmchPSIiKXt0aGlzLnRpY2tPcHRpb25zPXRoaXMudGlja09wdGlvbnN8fHt9O3RoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nPXRoaXMuX2F1dG9Gb3JtYXRTdHJpbmd9dmFyIGFVLGE4O2Zvcih2YXIgYTA9MDthMDx0aGlzLm51bWJlclRpY2tzO2EwKyspe2E0PXRoaXMubWluK2EwKnRoaXMudGlja0ludGVydmFsO2FVPW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTthVS5zZXRUaWNrKGE0LHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChhVSk7aWYoYTA8dGhpcy5udW1iZXJUaWNrcy0xKXtmb3IodmFyIGFaPTA7YVo8dGhpcy5taW5vclRpY2tzO2FaKyspe2E0Kz10aGlzLnRpY2tJbnRlcnZhbC8odGhpcy5taW5vclRpY2tzKzEpO2E4PUwuZXh0ZW5kKHRydWUse30sdGhpcy50aWNrT3B0aW9ucyx7bmFtZTp0aGlzLm5hbWUsdmFsdWU6YTQsbGFiZWw6IiIsaXNNaW5vclRpY2s6dHJ1ZX0pO2FVPW5ldyB0aGlzLnRpY2tSZW5kZXJlcihhOCk7dGhpcy5fdGlja3MucHVzaChhVSl9fWFVPW51bGx9fWlmKHRoaXMudGlja0luc2V0KXt0aGlzLm1pbj10aGlzLm1pbi10aGlzLnRpY2tJbnNldCp0aGlzLnRpY2tJbnRlcnZhbDt0aGlzLm1heD10aGlzLm1heCt0aGlzLnRpY2tJbnNldCp0aGlzLnRpY2tJbnRlcnZhbH1hVD1udWxsfTtMLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIucHJvdG90eXBlLnJlc2V0VGlja1ZhbHVlcz1mdW5jdGlvbihhail7aWYoTC5pc0FycmF5KGFqKSYmYWoubGVuZ3RoPT10aGlzLl90aWNrcy5sZW5ndGgpe3ZhciBhaTtmb3IodmFyIGFoPTA7YWg8YWoubGVuZ3RoO2FoKyspe2FpPXRoaXMuX3RpY2tzW2FoXTthaS52YWx1ZT1halthaF07YWkubGFiZWw9YWkuZm9ybWF0dGVyKGFpLmZvcm1hdFN0cmluZyxhalthaF0pO2FpLmxhYmVsPWFpLnByZWZpeCthaS5sYWJlbDthaS5fZWxlbS5odG1sKGFpLmxhYmVsKX1haT1udWxsO3RoaXMubWluPUwuanFwbG90LmFycmF5TWluKGFqKTt0aGlzLm1heD1MLmpxcGxvdC5hcnJheU1heChhaik7dGhpcy5wYWNrKCl9fTtMLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIucHJvdG90eXBlLnBhY2s9ZnVuY3Rpb24oYWosYWkpe2FqPWFqfHx7fTthaT1haXx8dGhpcy5fb2Zmc2V0czt2YXIgYXk9dGhpcy5fdGlja3M7dmFyIGF1PXRoaXMubWF4O3ZhciBhdD10aGlzLm1pbjt2YXIgYW89YWkubWF4O3ZhciBhbT1haS5taW47dmFyIGFxPSh0aGlzLl9sYWJlbD09bnVsbCk/ZmFsc2U6dGhpcy5fbGFiZWwuc2hvdztmb3IodmFyIGFyIGluIGFqKXt0aGlzLl9lbGVtLmNzcyhhcixhalthcl0pfXRoaXMuX29mZnNldHM9YWk7dmFyIGFrPWFvLWFtO3ZhciBhbD1hdS1hdDtpZih0aGlzLmJyZWFrUG9pbnRzKXthbD1hbC10aGlzLmJyZWFrUG9pbnRzWzFdK3RoaXMuYnJlYWtQb2ludHNbMF07dGhpcy5wMnU9ZnVuY3Rpb24oYUEpe3JldHVybihhQS1hbSkqYWwvYWsrYXR9O3RoaXMudTJwPWZ1bmN0aW9uKGFBKXtpZihhQT50aGlzLmJyZWFrUG9pbnRzWzBdJiZhQTx0aGlzLmJyZWFrUG9pbnRzWzFdKXthQT10aGlzLmJyZWFrUG9pbnRzWzBdfWlmKGFBPD10aGlzLmJyZWFrUG9pbnRzWzBdKXtyZXR1cm4oYUEtYXQpKmFrL2FsK2FtfWVsc2V7cmV0dXJuKGFBLXRoaXMuYnJlYWtQb2ludHNbMV0rdGhpcy5icmVha1BvaW50c1swXS1hdCkqYWsvYWwrYW19fTtpZih0aGlzLm5hbWUuY2hhckF0KDApPT0ieCIpe3RoaXMuc2VyaWVzX3UycD1mdW5jdGlvbihhQSl7aWYoYUE+dGhpcy5icmVha1BvaW50c1swXSYmYUE8dGhpcy5icmVha1BvaW50c1sxXSl7YUE9dGhpcy5icmVha1BvaW50c1swXX1pZihhQTw9dGhpcy5icmVha1BvaW50c1swXSl7cmV0dXJuKGFBLWF0KSphay9hbH1lbHNle3JldHVybihhQS10aGlzLmJyZWFrUG9pbnRzWzFdK3RoaXMuYnJlYWtQb2ludHNbMF0tYXQpKmFrL2FsfX07dGhpcy5zZXJpZXNfcDJ1PWZ1bmN0aW9uKGFBKXtyZXR1cm4gYUEqYWwvYWsrYXR9fWVsc2V7dGhpcy5zZXJpZXNfdTJwPWZ1bmN0aW9uKGFBKXtpZihhQT50aGlzLmJyZWFrUG9pbnRzWzBdJiZhQTx0aGlzLmJyZWFrUG9pbnRzWzFdKXthQT10aGlzLmJyZWFrUG9pbnRzWzBdfWlmKGFBPj10aGlzLmJyZWFrUG9pbnRzWzFdKXtyZXR1cm4oYUEtYXUpKmFrL2FsfWVsc2V7cmV0dXJuKGFBK3RoaXMuYnJlYWtQb2ludHNbMV0tdGhpcy5icmVha1BvaW50c1swXS1hdSkqYWsvYWx9fTt0aGlzLnNlcmllc19wMnU9ZnVuY3Rpb24oYUEpe3JldHVybiBhQSphbC9haythdX19fWVsc2V7dGhpcy5wMnU9ZnVuY3Rpb24oYUEpe3JldHVybihhQS1hbSkqYWwvYWsrYXR9O3RoaXMudTJwPWZ1bmN0aW9uKGFBKXtyZXR1cm4oYUEtYXQpKmFrL2FsK2FtfTtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe3RoaXMuc2VyaWVzX3UycD1mdW5jdGlvbihhQSl7cmV0dXJuKGFBLWF0KSphay9hbH07dGhpcy5zZXJpZXNfcDJ1PWZ1bmN0aW9uKGFBKXtyZXR1cm4gYUEqYWwvYWsrYXR9fWVsc2V7dGhpcy5zZXJpZXNfdTJwPWZ1bmN0aW9uKGFBKXtyZXR1cm4oYUEtYXUpKmFrL2FsfTt0aGlzLnNlcmllc19wMnU9ZnVuY3Rpb24oYUEpe3JldHVybiBhQSphbC9haythdX19fWlmKHRoaXMuc2hvdyl7aWYodGhpcy5uYW1lPT0ieGF4aXMifHx0aGlzLm5hbWU9PSJ4MmF4aXMiKXtmb3IodmFyIGF2PTA7YXY8YXkubGVuZ3RoO2F2Kyspe3ZhciBhcD1heVthdl07aWYoYXAuc2hvdyYmYXAuc2hvd0xhYmVsKXt2YXIgYWg7aWYoYXAuY29uc3RydWN0b3I9PUwuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXImJmFwLmFuZ2xlKXt2YXIgYXg9KHRoaXMubmFtZT09InhheGlzIik/MTotMTtzd2l0Y2goYXAubGFiZWxQb3NpdGlvbil7Y2FzZSJhdXRvIjppZihheCphcC5hbmdsZTwwKXthaD0tYXAuZ2V0V2lkdGgoKSthcC5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbigtYXAuX3RleHRSZW5kZXJlci5hbmdsZSkvMn1lbHNle2FoPS1hcC5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbihhcC5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWJyZWFrO2Nhc2UiZW5kIjphaD0tYXAuZ2V0V2lkdGgoKSthcC5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbigtYXAuX3RleHRSZW5kZXJlci5hbmdsZSkvMjticmVhaztjYXNlInN0YXJ0IjphaD0tYXAuX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4oYXAuX3RleHRSZW5kZXJlci5hbmdsZSkvMjticmVhaztjYXNlIm1pZGRsZSI6YWg9LWFwLmdldFdpZHRoKCkvMithcC5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbigtYXAuX3RleHRSZW5kZXJlci5hbmdsZSkvMjticmVhaztkZWZhdWx0OmFoPS1hcC5nZXRXaWR0aCgpLzIrYXAuX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4oLWFwLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzI7YnJlYWt9fWVsc2V7YWg9LWFwLmdldFdpZHRoKCkvMn12YXIgYXo9dGhpcy51MnAoYXAudmFsdWUpK2FoKyJweCI7YXAuX2VsZW0uY3NzKCJsZWZ0Iixheik7YXAucGFjaygpfX1pZihhcSl7dmFyIGFuPXRoaXMuX2xhYmVsLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSk7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJsZWZ0IixhbSthay8yLWFuLzIrInB4Iik7aWYodGhpcy5uYW1lPT0ieGF4aXMiKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoImJvdHRvbSIsIjBweCIpfWVsc2V7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJ0b3AiLCIwcHgiKX10aGlzLl9sYWJlbC5wYWNrKCl9fWVsc2V7Zm9yKHZhciBhdj0wO2F2PGF5Lmxlbmd0aDthdisrKXt2YXIgYXA9YXlbYXZdO2lmKGFwLnNob3cmJmFwLnNob3dMYWJlbCl7dmFyIGFoO2lmKGFwLmNvbnN0cnVjdG9yPT1MLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyJiZhcC5hbmdsZSl7dmFyIGF4PSh0aGlzLm5hbWU9PSJ5YXhpcyIpPzE6LTE7c3dpdGNoKGFwLmxhYmVsUG9zaXRpb24pe2Nhc2UiYXV0byI6Y2FzZSJlbmQiOmlmKGF4KmFwLmFuZ2xlPDApe2FoPS1hcC5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLmNvcygtYXAuX3RleHRSZW5kZXJlci5hbmdsZSkvMn1lbHNle2FoPS1hcC5nZXRIZWlnaHQoKSthcC5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLmNvcyhhcC5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWJyZWFrO2Nhc2Uic3RhcnQiOmlmKGFwLmFuZ2xlPjApe2FoPS1hcC5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLmNvcygtYXAuX3RleHRSZW5kZXJlci5hbmdsZSkvMn1lbHNle2FoPS1hcC5nZXRIZWlnaHQoKSthcC5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLmNvcyhhcC5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWJyZWFrO2Nhc2UibWlkZGxlIjphaD0tYXAuZ2V0SGVpZ2h0KCkvMjticmVhaztkZWZhdWx0OmFoPS1hcC5nZXRIZWlnaHQoKS8yO2JyZWFrfX1lbHNle2FoPS1hcC5nZXRIZWlnaHQoKS8yfXZhciBhej10aGlzLnUycChhcC52YWx1ZSkrYWgrInB4IjthcC5fZWxlbS5jc3MoInRvcCIsYXopO2FwLnBhY2soKX19aWYoYXEpe3ZhciBhdz10aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoInRvcCIsYW8tYWsvMi1hdy8yKyJweCIpO2lmKHRoaXMubmFtZT09InlheGlzIil7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJsZWZ0IiwiMHB4Iil9ZWxzZXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoInJpZ2h0IiwiMHB4Iil9dGhpcy5fbGFiZWwucGFjaygpfX19YXk9bnVsbH07ZnVuY3Rpb24gaShhaSl7dmFyIGFoO2FpPU1hdGguYWJzKGFpKTtpZihhaT49MTApe2FoPSIlZCJ9ZWxzZXtpZihhaT4xKXtpZihhaT09PXBhcnNlSW50KGFpLDEwKSl7YWg9IiVkIn1lbHNle2FoPSIlLjFmIn19ZWxzZXt2YXIgYWo9LU1hdGguZmxvb3IoTWF0aC5sb2coYWkpL01hdGguTE4xMCk7YWg9IiUuIithaisiZiJ9fXJldHVybiBhaH12YXIgYj1bMC4xLDAuMiwwLjMsMC40LDAuNSwwLjgsMSwyLDMsNCw1XTt2YXIgYz1mdW5jdGlvbihhaSl7dmFyIGFoPWIuaW5kZXhPZihhaSk7aWYoYWg+MCl7cmV0dXJuIGJbYWgtMV19ZWxzZXtyZXR1cm4gYltiLmxlbmd0aC0xXS8xMDB9fTt2YXIgaz1mdW5jdGlvbihhaSl7dmFyIGFoPWIuaW5kZXhPZihhaSk7aWYoYWg8Yi5sZW5ndGgtMSl7cmV0dXJuIGJbYWgrMV19ZWxzZXtyZXR1cm4gYlswXSoxMDB9fTtmdW5jdGlvbiBkKGFsLGF1LGF0KXt2YXIgYXE9TWF0aC5mbG9vcihhdC8yKTt2YXIgYWk9TWF0aC5jZWlsKGF0KjEuNSk7dmFyIGFrPU51bWJlci5NQVhfVkFMVUU7dmFyIGFoPShhdS1hbCk7dmFyIGF4O3ZhciBhcDt2YXIgYXI7dmFyIGF5PUwuanFwbG90LmdldFNpZ25pZmljYW50RmlndXJlczt2YXIgYXc7dmFyIGFuO3ZhciBhbzt2YXIgYXY7Zm9yKHZhciBhbT0wLGFqPWFpLWFxKzE7YW08YWo7YW0rKyl7YW89YXErYW07YXg9YWgvKGFvLTEpO2FwPWF5KGF4KTtheD1NYXRoLmFicyhhdC1hbykrYXAuZGlnaXRzUmlnaHQ7aWYoYXg8YWspe2FrPWF4O2FyPWFvO2F2PWFwLmRpZ2l0c1JpZ2h0fWVsc2V7aWYoYXg9PT1hayl7aWYoYXAuZGlnaXRzUmlnaHQ8YXYpe2FyPWFvO2F2PWFwLmRpZ2l0c1JpZ2h0fX19fWF3PU1hdGgubWF4KGF2LE1hdGgubWF4KGF5KGFsKS5kaWdpdHNSaWdodCxheShhdSkuZGlnaXRzUmlnaHQpKTtpZihhdz09PTApe2FuPSIlZCJ9ZWxzZXthbj0iJS4iK2F3KyJmIn1heD1haC8oYXItMSk7cmV0dXJuW2FsLGF1LGFyLGFuLGF4XX1mdW5jdGlvbiBXKGFpLGFsKXthbD1hbHx8Nzt2YXIgYWs9YWkvKGFsLTEpO3ZhciBhaj1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKGFrKS9NYXRoLkxOMTApKTt2YXIgYW09YWsvYWo7dmFyIGFoO2lmKGFqPDEpe2lmKGFtPjUpe2FoPTEwKmFqfWVsc2V7aWYoYW0+Mil7YWg9NSphan1lbHNle2lmKGFtPjEpe2FoPTIqYWp9ZWxzZXthaD1han19fX1lbHNle2lmKGFtPjUpe2FoPTEwKmFqfWVsc2V7aWYoYW0+NCl7YWg9NSphan1lbHNle2lmKGFtPjMpe2FoPTQqYWp9ZWxzZXtpZihhbT4yKXthaD0zKmFqfWVsc2V7aWYoYW0+MSl7YWg9Miphan1lbHNle2FoPWFqfX19fX19cmV0dXJuIGFofWZ1bmN0aW9uIFEoYWksYWgpe2FoPWFofHwxO3ZhciBhaz1NYXRoLmZsb29yKE1hdGgubG9nKGFpKS9NYXRoLkxOMTApO3ZhciBhbT1NYXRoLnBvdygxMCxhayk7dmFyIGFsPWFpL2FtO3ZhciBhajthbD1hbC9haDtpZihhbDw9MC4zOCl7YWo9MC4xfWVsc2V7aWYoYWw8PTEuNil7YWo9MC4yfWVsc2V7aWYoYWw8PTQpe2FqPTAuNX1lbHNle2lmKGFsPD04KXthaj0xfWVsc2V7aWYoYWw8PTE2KXthaj0yfWVsc2V7YWo9NX19fX19cmV0dXJuIGFqKmFtfWZ1bmN0aW9uIHgoYWosYWkpe3ZhciBhbD1NYXRoLmZsb29yKE1hdGgubG9nKGFqKS9NYXRoLkxOMTApO3ZhciBhbj1NYXRoLnBvdygxMCxhbCk7dmFyIGFtPWFqL2FuO3ZhciBhaDt2YXIgYWs7YW09YW0vYWk7aWYoYW08PTAuMzgpe2FrPTAuMX1lbHNle2lmKGFtPD0xLjYpe2FrPTAuMn1lbHNle2lmKGFtPD00KXthaz0wLjV9ZWxzZXtpZihhbTw9OCl7YWs9MX1lbHNle2lmKGFtPD0xNil7YWs9Mn1lbHNle2FrPTV9fX19fWFoPWFrKmFuO3JldHVyblthaCxhayxhbl19TC5qcXBsb3QuTGluZWFyVGlja0dlbmVyYXRvcj1mdW5jdGlvbihhbixhcSxhaixhayxhbyxhcil7YW89KGFvPT09bnVsbCk/ZmFsc2U6YW87YXI9KGFyPT09bnVsbHx8YW8pP2ZhbHNlOmFyO2lmKGFuPT09YXEpe2FxPShhcSk/MDoxfWFqPWFqfHwxO2lmKGFxPGFuKXt2YXIgYXQ9YXE7YXE9YW47YW49YXR9dmFyIGFpPVtdO3ZhciBhdz1RKGFxLWFuLGFqKTt2YXIgYXY9TC5qcXBsb3QuZ2V0U2lnbmlmaWNhbnRGaWd1cmVzO2lmKGFrPT1udWxsKXtpZighYW8mJiFhcil7YWlbMF09TWF0aC5mbG9vcihhbi9hdykqYXc7YWlbMV09TWF0aC5jZWlsKGFxL2F3KSphdzthaVsyXT1NYXRoLnJvdW5kKChhaVsxXS1haVswXSkvYXcrMSk7YWlbM109aShhdyk7YWlbNF09YXd9ZWxzZXtpZihhbyl7YWlbMF09YW47YWlbMl09TWF0aC5jZWlsKChhcS1hbikvYXcrMSk7YWlbMV09YW4rKGFpWzJdLTEpKmF3O3ZhciBhdT1hdihhbikuZGlnaXRzUmlnaHQ7dmFyIGFwPWF2KGF3KS5kaWdpdHNSaWdodDtpZihhdTxhcCl7YWlbM109aShhdyl9ZWxzZXthaVszXT0iJS4iK2F1KyJmIn1haVs0XT1hd31lbHNle2lmKGFyKXthaVsxXT1hcTthaVsyXT1NYXRoLmNlaWwoKGFxLWFuKS9hdysxKTthaVswXT1hcS0oYWlbMl0tMSkqYXc7dmFyIGFsPWF2KGFxKS5kaWdpdHNSaWdodDt2YXIgYXA9YXYoYXcpLmRpZ2l0c1JpZ2h0O2lmKGFsPGFwKXthaVszXT1pKGF3KX1lbHNle2FpWzNdPSIlLiIrYWwrImYifWFpWzRdPWF3fX19fWVsc2V7dmFyIGFtPVtdO2FtWzBdPU1hdGguZmxvb3IoYW4vYXcpKmF3O2FtWzFdPU1hdGguY2VpbChhcS9hdykqYXc7YW1bMl09TWF0aC5yb3VuZCgoYW1bMV0tYW1bMF0pL2F3KzEpO2FtWzNdPWkoYXcpO2FtWzRdPWF3O2lmKGFtWzJdPT09YWspe2FpPWFtfWVsc2V7dmFyIGFoPVcoYW1bMV0tYW1bMF0sYWspO2FpWzBdPWFtWzBdO2FpWzJdPWFrO2FpWzRdPWFoO2FpWzNdPWkoYWgpO2FpWzFdPWFpWzBdKyhhaVsyXS0xKSphaVs0XX19cmV0dXJuIGFpfTtMLmpxcGxvdC5MaW5lYXJUaWNrR2VuZXJhdG9yLmJlc3RMaW5lYXJJbnRlcnZhbD1RO0wuanFwbG90LkxpbmVhclRpY2tHZW5lcmF0b3IuYmVzdEludGVydmFsPVc7TC5qcXBsb3QuTGluZWFyVGlja0dlbmVyYXRvci5iZXN0TGluZWFyQ29tcG9uZW50cz14O0wuanFwbG90LkxpbmVhclRpY2tHZW5lcmF0b3IuYmVzdENvbnN0cmFpbmVkSW50ZXJ2YWw9ZDtMLmpxcGxvdC5NYXJrZXJSZW5kZXJlcj1mdW5jdGlvbihhaCl7dGhpcy5zaG93PXRydWU7dGhpcy5zdHlsZT0iZmlsbGVkQ2lyY2xlIjt0aGlzLmxpbmVXaWR0aD0yO3RoaXMuc2l6ZT05O3RoaXMuY29sb3I9IiM2NjY2NjYiO3RoaXMuc2hhZG93PXRydWU7dGhpcy5zaGFkb3dBbmdsZT00NTt0aGlzLnNoYWRvd09mZnNldD0xO3RoaXMuc2hhZG93RGVwdGg9Mzt0aGlzLnNoYWRvd0FscGhhPSIwLjA3Ijt0aGlzLnNoYWRvd1JlbmRlcmVyPW5ldyBMLmpxcGxvdC5TaGFkb3dSZW5kZXJlcigpO3RoaXMuc2hhcGVSZW5kZXJlcj1uZXcgTC5qcXBsb3QuU2hhcGVSZW5kZXJlcigpO0wuZXh0ZW5kKHRydWUsdGhpcyxhaCl9O0wuanFwbG90Lk1hcmtlclJlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGFoKXtMLmV4dGVuZCh0cnVlLHRoaXMsYWgpO3ZhciBhaj17YW5nbGU6dGhpcy5zaGFkb3dBbmdsZSxvZmZzZXQ6dGhpcy5zaGFkb3dPZmZzZXQsYWxwaGE6dGhpcy5zaGFkb3dBbHBoYSxsaW5lV2lkdGg6dGhpcy5saW5lV2lkdGgsZGVwdGg6dGhpcy5zaGFkb3dEZXB0aCxjbG9zZVBhdGg6dHJ1ZX07aWYodGhpcy5zdHlsZS5pbmRleE9mKCJmaWxsZWQiKSE9LTEpe2FqLmZpbGw9dHJ1ZX1pZih0aGlzLnN0eWxlLmluZGV4T2YoImlyY2xlIikhPS0xKXthai5pc2FyYz10cnVlO2FqLmNsb3NlUGF0aD1mYWxzZX10aGlzLnNoYWRvd1JlbmRlcmVyLmluaXQoYWopO3ZhciBhaT17ZmlsbDpmYWxzZSxpc2FyYzpmYWxzZSxzdHJva2VTdHlsZTp0aGlzLmNvbG9yLGZpbGxTdHlsZTp0aGlzLmNvbG9yLGxpbmVXaWR0aDp0aGlzLmxpbmVXaWR0aCxjbG9zZVBhdGg6dHJ1ZX07aWYodGhpcy5zdHlsZS5pbmRleE9mKCJmaWxsZWQiKSE9LTEpe2FpLmZpbGw9dHJ1ZX1pZih0aGlzLnN0eWxlLmluZGV4T2YoImlyY2xlIikhPS0xKXthaS5pc2FyYz10cnVlO2FpLmNsb3NlUGF0aD1mYWxzZX10aGlzLnNoYXBlUmVuZGVyZXIuaW5pdChhaSl9O0wuanFwbG90Lk1hcmtlclJlbmRlcmVyLnByb3RvdHlwZS5kcmF3RGlhbW9uZD1mdW5jdGlvbihhaixhaSxhbSxhbCxhbyl7dmFyIGFoPTEuMjt2YXIgYXA9dGhpcy5zaXplLzIvYWg7dmFyIGFuPXRoaXMuc2l6ZS8yKmFoO3ZhciBhaz1bW2FqLWFwLGFpXSxbYWosYWkrYW5dLFthaithcCxhaV0sW2FqLGFpLWFuXV07aWYodGhpcy5zaGFkb3cpe3RoaXMuc2hhZG93UmVuZGVyZXIuZHJhdyhhbSxhayl9dGhpcy5zaGFwZVJlbmRlcmVyLmRyYXcoYW0sYWssYW8pfTtMLmpxcGxvdC5NYXJrZXJSZW5kZXJlci5wcm90b3R5cGUuZHJhd1BsdXM9ZnVuY3Rpb24oYWssYWosYW4sYW0sYXEpe3ZhciBhaT0xO3ZhciBhcj10aGlzLnNpemUvMiphaTt2YXIgYW89dGhpcy5zaXplLzIqYWk7dmFyIGFwPVtbYWssYWotYW9dLFthayxhaithb11dO3ZhciBhbD1bW2FrK2FyLGFqXSxbYWstYXIsYWpdXTt2YXIgYWg9TC5leHRlbmQodHJ1ZSx7fSx0aGlzLm9wdGlvbnMse2Nsb3NlUGF0aDpmYWxzZX0pO2lmKHRoaXMuc2hhZG93KXt0aGlzLnNoYWRvd1JlbmRlcmVyLmRyYXcoYW4sYXAse2Nsb3NlUGF0aDpmYWxzZX0pO3RoaXMuc2hhZG93UmVuZGVyZXIuZHJhdyhhbixhbCx7Y2xvc2VQYXRoOmZhbHNlfSl9dGhpcy5zaGFwZVJlbmRlcmVyLmRyYXcoYW4sYXAsYWgpO3RoaXMuc2hhcGVSZW5kZXJlci5kcmF3KGFuLGFsLGFoKX07TC5qcXBsb3QuTWFya2VyUmVuZGVyZXIucHJvdG90eXBlLmRyYXdYPWZ1bmN0aW9uKGFrLGFqLGFuLGFtLGFxKXt2YXIgYWk9MTt2YXIgYXI9dGhpcy5zaXplLzIqYWk7dmFyIGFvPXRoaXMuc2l6ZS8yKmFpO3ZhciBhaD1MLmV4dGVuZCh0cnVlLHt9LHRoaXMub3B0aW9ucyx7Y2xvc2VQYXRoOmZhbHNlfSk7dmFyIGFwPVtbYWstYXIsYWotYW9dLFthaythcixhaithb11dO3ZhciBhbD1bW2FrLWFyLGFqK2FvXSxbYWsrYXIsYWotYW9dXTtpZih0aGlzLnNoYWRvdyl7dGhpcy5zaGFkb3dSZW5kZXJlci5kcmF3KGFuLGFwLHtjbG9zZVBhdGg6ZmFsc2V9KTt0aGlzLnNoYWRvd1JlbmRlcmVyLmRyYXcoYW4sYWwse2Nsb3NlUGF0aDpmYWxzZX0pfXRoaXMuc2hhcGVSZW5kZXJlci5kcmF3KGFuLGFwLGFoKTt0aGlzLnNoYXBlUmVuZGVyZXIuZHJhdyhhbixhbCxhaCl9O0wuanFwbG90Lk1hcmtlclJlbmRlcmVyLnByb3RvdHlwZS5kcmF3RGFzaD1mdW5jdGlvbihhaixhaSxhbSxhbCxhbyl7dmFyIGFoPTE7dmFyIGFwPXRoaXMuc2l6ZS8yKmFoO3ZhciBhbj10aGlzLnNpemUvMiphaDt2YXIgYWs9W1thai1hcCxhaV0sW2FqK2FwLGFpXV07aWYodGhpcy5zaGFkb3cpe3RoaXMuc2hhZG93UmVuZGVyZXIuZHJhdyhhbSxhayl9dGhpcy5zaGFwZVJlbmRlcmVyLmRyYXcoYW0sYWssYW8pfTtMLmpxcGxvdC5NYXJrZXJSZW5kZXJlci5wcm90b3R5cGUuZHJhd0xpbmU9ZnVuY3Rpb24oYW0sYWwsYWgsYWssYWkpe3ZhciBhaj1bYW0sYWxdO2lmKHRoaXMuc2hhZG93KXt0aGlzLnNoYWRvd1JlbmRlcmVyLmRyYXcoYWgsYWopfXRoaXMuc2hhcGVSZW5kZXJlci5kcmF3KGFoLGFqLGFpKX07TC5qcXBsb3QuTWFya2VyUmVuZGVyZXIucHJvdG90eXBlLmRyYXdTcXVhcmU9ZnVuY3Rpb24oYWosYWksYW0sYWwsYW8pe3ZhciBhaD0xO3ZhciBhcD10aGlzLnNpemUvMi9haDt2YXIgYW49dGhpcy5zaXplLzIqYWg7dmFyIGFrPVtbYWotYXAsYWktYW5dLFthai1hcCxhaSthbl0sW2FqK2FwLGFpK2FuXSxbYWorYXAsYWktYW5dXTtpZih0aGlzLnNoYWRvdyl7dGhpcy5zaGFkb3dSZW5kZXJlci5kcmF3KGFtLGFrKX10aGlzLnNoYXBlUmVuZGVyZXIuZHJhdyhhbSxhayxhbyl9O0wuanFwbG90Lk1hcmtlclJlbmRlcmVyLnByb3RvdHlwZS5kcmF3Q2lyY2xlPWZ1bmN0aW9uKGFpLGFvLGFrLGFuLGFsKXt2YXIgYWg9dGhpcy5zaXplLzI7dmFyIGFqPTIqTWF0aC5QSTt2YXIgYW09W2FpLGFvLGFoLDAsYWosdHJ1ZV07aWYodGhpcy5zaGFkb3cpe3RoaXMuc2hhZG93UmVuZGVyZXIuZHJhdyhhayxhbSl9dGhpcy5zaGFwZVJlbmRlcmVyLmRyYXcoYWssYW0sYWwpfTtMLmpxcGxvdC5NYXJrZXJSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbihhaCxhayxhaSxhail7YWo9YWp8fHt9O2lmKGFqLnNob3c9PW51bGx8fGFqLnNob3chPWZhbHNlKXtpZihhai5jb2xvciYmIWFqLmZpbGxTdHlsZSl7YWouZmlsbFN0eWxlPWFqLmNvbG9yfWlmKGFqLmNvbG9yJiYhYWouc3Ryb2tlU3R5bGUpe2FqLnN0cm9rZVN0eWxlPWFqLmNvbG9yfXN3aXRjaCh0aGlzLnN0eWxlKXtjYXNlImRpYW1vbmQiOnRoaXMuZHJhd0RpYW1vbmQoYWgsYWssYWksZmFsc2UsYWopO2JyZWFrO2Nhc2UiZmlsbGVkRGlhbW9uZCI6dGhpcy5kcmF3RGlhbW9uZChhaCxhayxhaSx0cnVlLGFqKTticmVhaztjYXNlImNpcmNsZSI6dGhpcy5kcmF3Q2lyY2xlKGFoLGFrLGFpLGZhbHNlLGFqKTticmVhaztjYXNlImZpbGxlZENpcmNsZSI6dGhpcy5kcmF3Q2lyY2xlKGFoLGFrLGFpLHRydWUsYWopO2JyZWFrO2Nhc2Uic3F1YXJlIjp0aGlzLmRyYXdTcXVhcmUoYWgsYWssYWksZmFsc2UsYWopO2JyZWFrO2Nhc2UiZmlsbGVkU3F1YXJlIjp0aGlzLmRyYXdTcXVhcmUoYWgsYWssYWksdHJ1ZSxhaik7YnJlYWs7Y2FzZSJ4Ijp0aGlzLmRyYXdYKGFoLGFrLGFpLHRydWUsYWopO2JyZWFrO2Nhc2UicGx1cyI6dGhpcy5kcmF3UGx1cyhhaCxhayxhaSx0cnVlLGFqKTticmVhaztjYXNlImRhc2giOnRoaXMuZHJhd0Rhc2goYWgsYWssYWksdHJ1ZSxhaik7YnJlYWs7Y2FzZSJsaW5lIjp0aGlzLmRyYXdMaW5lKGFoLGFrLGFpLGZhbHNlLGFqKTticmVhaztkZWZhdWx0OnRoaXMuZHJhd0RpYW1vbmQoYWgsYWssYWksZmFsc2UsYWopO2JyZWFrfX19O0wuanFwbG90LlNoYWRvd1JlbmRlcmVyPWZ1bmN0aW9uKGFoKXt0aGlzLmFuZ2xlPTQ1O3RoaXMub2Zmc2V0PTE7dGhpcy5hbHBoYT0wLjA3O3RoaXMubGluZVdpZHRoPTEuNTt0aGlzLmxpbmVKb2luPSJtaXRlciI7dGhpcy5saW5lQ2FwPSJyb3VuZCI7dGhpcy5jbG9zZVBhdGg9ZmFsc2U7dGhpcy5maWxsPWZhbHNlO3RoaXMuZGVwdGg9Mzt0aGlzLnN0cm9rZVN0eWxlPSJyZ2JhKDAsMCwwLDAuMSkiO3RoaXMuaXNhcmM9ZmFsc2U7TC5leHRlbmQodHJ1ZSx0aGlzLGFoKX07TC5qcXBsb3QuU2hhZG93UmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oYWgpe0wuZXh0ZW5kKHRydWUsdGhpcyxhaCl9O0wuanFwbG90LlNoYWRvd1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKGF2LGF0LGF4KXthdi5zYXZlKCk7dmFyIGFoPShheCE9bnVsbCk/YXg6e307dmFyIGF1PShhaC5maWxsIT1udWxsKT9haC5maWxsOnRoaXMuZmlsbDt2YXIgYXA9KGFoLmZpbGxSZWN0IT1udWxsKT9haC5maWxsUmVjdDp0aGlzLmZpbGxSZWN0O3ZhciBhbz0oYWguY2xvc2VQYXRoIT1udWxsKT9haC5jbG9zZVBhdGg6dGhpcy5jbG9zZVBhdGg7dmFyIGFsPShhaC5vZmZzZXQhPW51bGwpP2FoLm9mZnNldDp0aGlzLm9mZnNldDt2YXIgYWo9KGFoLmFscGhhIT1udWxsKT9haC5hbHBoYTp0aGlzLmFscGhhO3ZhciBhbj0oYWguZGVwdGghPW51bGwpP2FoLmRlcHRoOnRoaXMuZGVwdGg7dmFyIGF3PShhaC5pc2FyYyE9bnVsbCk/YWguaXNhcmM6dGhpcy5pc2FyYzt2YXIgYXE9KGFoLmxpbmVQYXR0ZXJuIT1udWxsKT9haC5saW5lUGF0dGVybjp0aGlzLmxpbmVQYXR0ZXJuO2F2LmxpbmVXaWR0aD0oYWgubGluZVdpZHRoIT1udWxsKT9haC5saW5lV2lkdGg6dGhpcy5saW5lV2lkdGg7YXYubGluZUpvaW49KGFoLmxpbmVKb2luIT1udWxsKT9haC5saW5lSm9pbjp0aGlzLmxpbmVKb2luO2F2LmxpbmVDYXA9KGFoLmxpbmVDYXAhPW51bGwpP2FoLmxpbmVDYXA6dGhpcy5saW5lQ2FwO2F2LnN0cm9rZVN0eWxlPWFoLnN0cm9rZVN0eWxlfHx0aGlzLnN0cm9rZVN0eWxlfHwicmdiYSgwLDAsMCwiK2FqKyIpIjthdi5maWxsU3R5bGU9YWguZmlsbFN0eWxlfHx0aGlzLmZpbGxTdHlsZXx8InJnYmEoMCwwLDAsIithaisiKSI7Zm9yKHZhciBhaz0wO2FrPGFuO2FrKyspe3ZhciBhcj1MLmpxcGxvdC5MaW5lUGF0dGVybihhdixhcSk7YXYudHJhbnNsYXRlKE1hdGguY29zKHRoaXMuYW5nbGUqTWF0aC5QSS8xODApKmFsLE1hdGguc2luKHRoaXMuYW5nbGUqTWF0aC5QSS8xODApKmFsKTthci5iZWdpblBhdGgoKTtpZihhdyl7YXYuYXJjKGF0WzBdLGF0WzFdLGF0WzJdLGF0WzNdLGF0WzRdLHRydWUpfWVsc2V7aWYoYXApe2lmKGFwKXthdi5maWxsUmVjdChhdFswXSxhdFsxXSxhdFsyXSxhdFszXSl9fWVsc2V7aWYoYXQmJmF0Lmxlbmd0aCl7dmFyIGFpPXRydWU7Zm9yKHZhciBhbT0wO2FtPGF0Lmxlbmd0aDthbSsrKXtpZihhdFthbV1bMF0hPW51bGwmJmF0W2FtXVsxXSE9bnVsbCl7aWYoYWkpe2FyLm1vdmVUbyhhdFthbV1bMF0sYXRbYW1dWzFdKTthaT1mYWxzZX1lbHNle2FyLmxpbmVUbyhhdFthbV1bMF0sYXRbYW1dWzFdKX19ZWxzZXthaT10cnVlfX19fX1pZihhbyl7YXIuY2xvc2VQYXRoKCl9aWYoYXUpe2F2LmZpbGwoKX1lbHNle2F2LnN0cm9rZSgpfX1hdi5yZXN0b3JlKCl9O0wuanFwbG90LlNoYXBlUmVuZGVyZXI9ZnVuY3Rpb24oYWgpe3RoaXMubGluZVdpZHRoPTEuNTt0aGlzLmxpbmVQYXR0ZXJuPSJzb2xpZCI7dGhpcy5saW5lSm9pbj0ibWl0ZXIiO3RoaXMubGluZUNhcD0icm91bmQiO3RoaXMuY2xvc2VQYXRoPWZhbHNlO3RoaXMuZmlsbD1mYWxzZTt0aGlzLmlzYXJjPWZhbHNlO3RoaXMuZmlsbFJlY3Q9ZmFsc2U7dGhpcy5zdHJva2VSZWN0PWZhbHNlO3RoaXMuY2xlYXJSZWN0PWZhbHNlO3RoaXMuc3Ryb2tlU3R5bGU9IiM5OTk5OTkiO3RoaXMuZmlsbFN0eWxlPSIjOTk5OTk5IjtMLmV4dGVuZCh0cnVlLHRoaXMsYWgpfTtMLmpxcGxvdC5TaGFwZVJlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGFoKXtMLmV4dGVuZCh0cnVlLHRoaXMsYWgpfTtMLmpxcGxvdC5TaGFwZVJlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKGF0LGFxLGF2KXthdC5zYXZlKCk7dmFyIGFoPShhdiE9bnVsbCk/YXY6e307dmFyIGFyPShhaC5maWxsIT1udWxsKT9haC5maWxsOnRoaXMuZmlsbDt2YXIgYW09KGFoLmNsb3NlUGF0aCE9bnVsbCk/YWguY2xvc2VQYXRoOnRoaXMuY2xvc2VQYXRoO3ZhciBhbj0oYWguZmlsbFJlY3QhPW51bGwpP2FoLmZpbGxSZWN0OnRoaXMuZmlsbFJlY3Q7dmFyIGFrPShhaC5zdHJva2VSZWN0IT1udWxsKT9haC5zdHJva2VSZWN0OnRoaXMuc3Ryb2tlUmVjdDt2YXIgYWk9KGFoLmNsZWFyUmVjdCE9bnVsbCk/YWguY2xlYXJSZWN0OnRoaXMuY2xlYXJSZWN0O3ZhciBhdT0oYWguaXNhcmMhPW51bGwpP2FoLmlzYXJjOnRoaXMuaXNhcmM7dmFyIGFvPShhaC5saW5lUGF0dGVybiE9bnVsbCk/YWgubGluZVBhdHRlcm46dGhpcy5saW5lUGF0dGVybjt2YXIgYXA9TC5qcXBsb3QuTGluZVBhdHRlcm4oYXQsYW8pO2F0LmxpbmVXaWR0aD1haC5saW5lV2lkdGh8fHRoaXMubGluZVdpZHRoO2F0LmxpbmVKb2luPWFoLmxpbmVKb2lufHx0aGlzLmxpbmVKb2luO2F0LmxpbmVDYXA9YWgubGluZUNhcHx8dGhpcy5saW5lQ2FwO2F0LnN0cm9rZVN0eWxlPShhaC5zdHJva2VTdHlsZXx8YWguY29sb3IpfHx0aGlzLnN0cm9rZVN0eWxlO2F0LmZpbGxTdHlsZT1haC5maWxsU3R5bGV8fHRoaXMuZmlsbFN0eWxlO2F0LmJlZ2luUGF0aCgpO2lmKGF1KXthdC5hcmMoYXFbMF0sYXFbMV0sYXFbMl0sYXFbM10sYXFbNF0sdHJ1ZSk7aWYoYW0pe2F0LmNsb3NlUGF0aCgpfWlmKGFyKXthdC5maWxsKCl9ZWxzZXthdC5zdHJva2UoKX1hdC5yZXN0b3JlKCk7cmV0dXJufWVsc2V7aWYoYWkpe2F0LmNsZWFyUmVjdChhcVswXSxhcVsxXSxhcVsyXSxhcVszXSk7YXQucmVzdG9yZSgpO3JldHVybn1lbHNle2lmKGFufHxhayl7aWYoYW4pe2F0LmZpbGxSZWN0KGFxWzBdLGFxWzFdLGFxWzJdLGFxWzNdKX1pZihhayl7YXQuc3Ryb2tlUmVjdChhcVswXSxhcVsxXSxhcVsyXSxhcVszXSk7YXQucmVzdG9yZSgpO3JldHVybn19ZWxzZXtpZihhcSYmYXEubGVuZ3RoKXt2YXIgYWo9dHJ1ZTtmb3IodmFyIGFsPTA7YWw8YXEubGVuZ3RoO2FsKyspe2lmKGFxW2FsXVswXSE9bnVsbCYmYXFbYWxdWzFdIT1udWxsKXtpZihhail7YXAubW92ZVRvKGFxW2FsXVswXSxhcVthbF1bMV0pO2FqPWZhbHNlfWVsc2V7YXAubGluZVRvKGFxW2FsXVswXSxhcVthbF1bMV0pfX1lbHNle2FqPXRydWV9fWlmKGFtKXthcC5jbG9zZVBhdGgoKX1pZihhcil7YXQuZmlsbCgpfWVsc2V7YXQuc3Ryb2tlKCl9fX19fWF0LnJlc3RvcmUoKX07TC5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlcj1mdW5jdGlvbigpe307TC5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihhaCl7TC5leHRlbmQodHJ1ZSx0aGlzLGFoKX07TC5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuYWRkcm93PWZ1bmN0aW9uKGFxLGFrLGFoLGFvKXt2YXIgYWw9KGFoKT90aGlzLnJvd1NwYWNpbmcrInB4IjoiMHB4Ijt2YXIgYXA7dmFyIGFqO3ZhciBhaTt2YXIgYW47dmFyIGFtO2FpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7YXA9TChhaSk7YXAuYWRkQ2xhc3MoImpxcGxvdC10YWJsZS1sZWdlbmQiKTthaT1udWxsO2lmKGFvKXthcC5wcmVwZW5kVG8odGhpcy5fZWxlbSl9ZWxzZXthcC5hcHBlbmRUbyh0aGlzLl9lbGVtKX1pZih0aGlzLnNob3dTd2F0Y2hlcyl7YWo9TChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpKTthai5hZGRDbGFzcygianFwbG90LXRhYmxlLWxlZ2VuZCBqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaCIpO2FqLmNzcyh7dGV4dEFsaWduOiJjZW50ZXIiLHBhZGRpbmdUb3A6YWx9KTthbj1MKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTthbi5hZGRDbGFzcygianFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2gtb3V0bGluZSIpO2FtPUwoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO2FtLmFkZENsYXNzKCJqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaCIpO2FtLmNzcyh7YmFja2dyb3VuZENvbG9yOmFrLGJvcmRlckNvbG9yOmFrfSk7YXAuYXBwZW5kKGFqLmFwcGVuZChhbi5hcHBlbmQoYW0pKSl9aWYodGhpcy5zaG93TGFiZWxzKXthaj1MKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIikpO2FqLmFkZENsYXNzKCJqcXBsb3QtdGFibGUtbGVnZW5kIGpxcGxvdC10YWJsZS1sZWdlbmQtbGFiZWwiKTthai5jc3MoInBhZGRpbmdUb3AiLGFsKTthcC5hcHBlbmQoYWopO2lmKHRoaXMuZXNjYXBlSHRtbCl7YWoudGV4dChhcSl9ZWxzZXthai5odG1sKGFxKX19YWo9bnVsbDthbj1udWxsO2FtPW51bGw7YXA9bnVsbDthaT1udWxsfTtMLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKCl7aWYodGhpcy5fZWxlbSl7dGhpcy5fZWxlbS5lbXB0eUZvcmNlKCk7dGhpcy5fZWxlbT1udWxsfWlmKHRoaXMuc2hvdyl7dmFyIGFtPXRoaXMuX3Nlcmllczt2YXIgYWk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFibGUiKTt0aGlzLl9lbGVtPUwoYWkpO3RoaXMuX2VsZW0uYWRkQ2xhc3MoImpxcGxvdC10YWJsZS1sZWdlbmQiKTt2YXIgYXI9e3Bvc2l0aW9uOiJhYnNvbHV0ZSJ9O2lmKHRoaXMuYmFja2dyb3VuZCl7YXIuYmFja2dyb3VuZD10aGlzLmJhY2tncm91bmR9aWYodGhpcy5ib3JkZXIpe2FyLmJvcmRlcj10aGlzLmJvcmRlcn1pZih0aGlzLmZvbnRTaXplKXthci5mb250U2l6ZT10aGlzLmZvbnRTaXplfWlmKHRoaXMuZm9udEZhbWlseSl7YXIuZm9udEZhbWlseT10aGlzLmZvbnRGYW1pbHl9aWYodGhpcy50ZXh0Q29sb3Ipe2FyLnRleHRDb2xvcj10aGlzLnRleHRDb2xvcn1pZih0aGlzLm1hcmdpblRvcCE9bnVsbCl7YXIubWFyZ2luVG9wPXRoaXMubWFyZ2luVG9wfWlmKHRoaXMubWFyZ2luQm90dG9tIT1udWxsKXthci5tYXJnaW5Cb3R0b209dGhpcy5tYXJnaW5Cb3R0b219aWYodGhpcy5tYXJnaW5MZWZ0IT1udWxsKXthci5tYXJnaW5MZWZ0PXRoaXMubWFyZ2luTGVmdH1pZih0aGlzLm1hcmdpblJpZ2h0IT1udWxsKXthci5tYXJnaW5SaWdodD10aGlzLm1hcmdpblJpZ2h0fXZhciBhaD1mYWxzZSxhbz1mYWxzZSxhcTtmb3IodmFyIGFuPTA7YW48YW0ubGVuZ3RoO2FuKyspe2FxPWFtW2FuXTtpZihhcS5fc3RhY2t8fGFxLnJlbmRlcmVyLmNvbnN0cnVjdG9yPT1MLmpxcGxvdC5CZXppZXJDdXJ2ZVJlbmRlcmVyKXthbz10cnVlfWlmKGFxLnNob3cmJmFxLnNob3dMYWJlbCl7dmFyIGFsPXRoaXMubGFiZWxzW2FuXXx8YXEubGFiZWwudG9TdHJpbmcoKTtpZihhbCl7dmFyIGFqPWFxLmNvbG9yO2lmKGFvJiZhbjxhbS5sZW5ndGgtMSl7YWg9dHJ1ZX1lbHNle2lmKGFvJiZhbj09YW0ubGVuZ3RoLTEpe2FoPWZhbHNlfX10aGlzLnJlbmRlcmVyLmFkZHJvdy5jYWxsKHRoaXMsYWwsYWosYWgsYW8pO2FoPXRydWV9Zm9yKHZhciBhaz0wO2FrPEwuanFwbG90LmFkZExlZ2VuZFJvd0hvb2tzLmxlbmd0aDthaysrKXt2YXIgYXA9TC5qcXBsb3QuYWRkTGVnZW5kUm93SG9va3NbYWtdLmNhbGwodGhpcyxhcSk7aWYoYXApe3RoaXMucmVuZGVyZXIuYWRkcm93LmNhbGwodGhpcyxhcC5sYWJlbCxhcC5jb2xvcixhaCk7YWg9dHJ1ZX19YWw9bnVsbH19fXJldHVybiB0aGlzLl9lbGVtfTtMLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5wYWNrPWZ1bmN0aW9uKGFqKXtpZih0aGlzLnNob3cpe2lmKHRoaXMucGxhY2VtZW50PT0iaW5zaWRlR3JpZCIpe3N3aXRjaCh0aGlzLmxvY2F0aW9uKXtjYXNlIm53Ijp2YXIgYWk9YWoubGVmdDt2YXIgYWg9YWoudG9wO3RoaXMuX2VsZW0uY3NzKCJsZWZ0IixhaSk7dGhpcy5fZWxlbS5jc3MoInRvcCIsYWgpO2JyZWFrO2Nhc2UibiI6dmFyIGFpPShhai5sZWZ0Kyh0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC1hai5yaWdodCkpLzItdGhpcy5nZXRXaWR0aCgpLzI7dmFyIGFoPWFqLnRvcDt0aGlzLl9lbGVtLmNzcygibGVmdCIsYWkpO3RoaXMuX2VsZW0uY3NzKCJ0b3AiLGFoKTticmVhaztjYXNlIm5lIjp2YXIgYWk9YWoucmlnaHQ7dmFyIGFoPWFqLnRvcDt0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6YWksdG9wOmFofSk7YnJlYWs7Y2FzZSJlIjp2YXIgYWk9YWoucmlnaHQ7dmFyIGFoPShhai50b3ArKHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodC1hai5ib3R0b20pKS8yLXRoaXMuZ2V0SGVpZ2h0KCkvMjt0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6YWksdG9wOmFofSk7YnJlYWs7Y2FzZSJzZSI6dmFyIGFpPWFqLnJpZ2h0O3ZhciBhaD1hai5ib3R0b207dGhpcy5fZWxlbS5jc3Moe3JpZ2h0OmFpLGJvdHRvbTphaH0pO2JyZWFrO2Nhc2UicyI6dmFyIGFpPShhai5sZWZ0Kyh0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC1hai5yaWdodCkpLzItdGhpcy5nZXRXaWR0aCgpLzI7dmFyIGFoPWFqLmJvdHRvbTt0aGlzLl9lbGVtLmNzcyh7bGVmdDphaSxib3R0b206YWh9KTticmVhaztjYXNlInN3Ijp2YXIgYWk9YWoubGVmdDt2YXIgYWg9YWouYm90dG9tO3RoaXMuX2VsZW0uY3NzKHtsZWZ0OmFpLGJvdHRvbTphaH0pO2JyZWFrO2Nhc2UidyI6dmFyIGFpPWFqLmxlZnQ7dmFyIGFoPShhai50b3ArKHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodC1hai5ib3R0b20pKS8yLXRoaXMuZ2V0SGVpZ2h0KCkvMjt0aGlzLl9lbGVtLmNzcyh7bGVmdDphaSx0b3A6YWh9KTticmVhaztkZWZhdWx0OnZhciBhaT1hai5yaWdodDt2YXIgYWg9YWouYm90dG9tO3RoaXMuX2VsZW0uY3NzKHtyaWdodDphaSxib3R0b206YWh9KTticmVha319ZWxzZXtpZih0aGlzLnBsYWNlbWVudD09Im91dHNpZGUiKXtzd2l0Y2godGhpcy5sb2NhdGlvbil7Y2FzZSJudyI6dmFyIGFpPXRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoLWFqLmxlZnQ7dmFyIGFoPWFqLnRvcDt0aGlzLl9lbGVtLmNzcygicmlnaHQiLGFpKTt0aGlzLl9lbGVtLmNzcygidG9wIixhaCk7YnJlYWs7Y2FzZSJuIjp2YXIgYWk9KGFqLmxlZnQrKHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoLWFqLnJpZ2h0KSkvMi10aGlzLmdldFdpZHRoKCkvMjt2YXIgYWg9dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0LWFqLnRvcDt0aGlzLl9lbGVtLmNzcygibGVmdCIsYWkpO3RoaXMuX2VsZW0uY3NzKCJib3R0b20iLGFoKTticmVhaztjYXNlIm5lIjp2YXIgYWk9dGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgtYWoucmlnaHQ7dmFyIGFoPWFqLnRvcDt0aGlzLl9lbGVtLmNzcyh7bGVmdDphaSx0b3A6YWh9KTticmVhaztjYXNlImUiOnZhciBhaT10aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC1hai5yaWdodDt2YXIgYWg9KGFqLnRvcCsodGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0LWFqLmJvdHRvbSkpLzItdGhpcy5nZXRIZWlnaHQoKS8yO3RoaXMuX2VsZW0uY3NzKHtsZWZ0OmFpLHRvcDphaH0pO2JyZWFrO2Nhc2Uic2UiOnZhciBhaT10aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC1hai5yaWdodDt2YXIgYWg9YWouYm90dG9tO3RoaXMuX2VsZW0uY3NzKHtsZWZ0OmFpLGJvdHRvbTphaH0pO2JyZWFrO2Nhc2UicyI6dmFyIGFpPShhai5sZWZ0Kyh0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC1hai5yaWdodCkpLzItdGhpcy5nZXRXaWR0aCgpLzI7dmFyIGFoPXRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodC1hai5ib3R0b207dGhpcy5fZWxlbS5jc3Moe2xlZnQ6YWksdG9wOmFofSk7YnJlYWs7Y2FzZSJzdyI6dmFyIGFpPXRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoLWFqLmxlZnQ7dmFyIGFoPWFqLmJvdHRvbTt0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6YWksYm90dG9tOmFofSk7YnJlYWs7Y2FzZSJ3Ijp2YXIgYWk9dGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgtYWoubGVmdDt2YXIgYWg9KGFqLnRvcCsodGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0LWFqLmJvdHRvbSkpLzItdGhpcy5nZXRIZWlnaHQoKS8yO3RoaXMuX2VsZW0uY3NzKHtyaWdodDphaSx0b3A6YWh9KTticmVhaztkZWZhdWx0OnZhciBhaT1hai5yaWdodDt2YXIgYWg9YWouYm90dG9tO3RoaXMuX2VsZW0uY3NzKHtyaWdodDphaSxib3R0b206YWh9KTticmVha319ZWxzZXtzd2l0Y2godGhpcy5sb2NhdGlvbil7Y2FzZSJudyI6dGhpcy5fZWxlbS5jc3Moe2xlZnQ6MCx0b3A6YWoudG9wfSk7YnJlYWs7Y2FzZSJuIjp2YXIgYWk9KGFqLmxlZnQrKHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoLWFqLnJpZ2h0KSkvMi10aGlzLmdldFdpZHRoKCkvMjt0aGlzLl9lbGVtLmNzcyh7bGVmdDphaSx0b3A6YWoudG9wfSk7YnJlYWs7Y2FzZSJuZSI6dGhpcy5fZWxlbS5jc3Moe3JpZ2h0OjAsdG9wOmFqLnRvcH0pO2JyZWFrO2Nhc2UiZSI6dmFyIGFoPShhai50b3ArKHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodC1hai5ib3R0b20pKS8yLXRoaXMuZ2V0SGVpZ2h0KCkvMjt0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6YWoucmlnaHQsdG9wOmFofSk7YnJlYWs7Y2FzZSJzZSI6dGhpcy5fZWxlbS5jc3Moe3JpZ2h0OmFqLnJpZ2h0LGJvdHRvbTphai5ib3R0b219KTticmVhaztjYXNlInMiOnZhciBhaT0oYWoubGVmdCsodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgtYWoucmlnaHQpKS8yLXRoaXMuZ2V0V2lkdGgoKS8yO3RoaXMuX2VsZW0uY3NzKHtsZWZ0OmFpLGJvdHRvbTphai5ib3R0b219KTticmVhaztjYXNlInN3Ijp0aGlzLl9lbGVtLmNzcyh7bGVmdDphai5sZWZ0LGJvdHRvbTphai5ib3R0b219KTticmVhaztjYXNlInciOnZhciBhaD0oYWoudG9wKyh0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQtYWouYm90dG9tKSkvMi10aGlzLmdldEhlaWdodCgpLzI7dGhpcy5fZWxlbS5jc3Moe2xlZnQ6YWoubGVmdCx0b3A6YWh9KTticmVhaztkZWZhdWx0OnRoaXMuX2VsZW0uY3NzKHtyaWdodDphai5yaWdodCxib3R0b206YWouYm90dG9tfSk7YnJlYWt9fX19fTtMLmpxcGxvdC5UaGVtZUVuZ2luZT1mdW5jdGlvbigpe3RoaXMudGhlbWVzPXt9O3RoaXMuYWN0aXZlVGhlbWU9bnVsbH07TC5qcXBsb3QuVGhlbWVFbmdpbmUucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXt2YXIgYWs9bmV3IEwuanFwbG90LlRoZW1lKHtfbmFtZToiRGVmYXVsdCJ9KTt2YXIgYW4sYWksYW07Zm9yKGFuIGluIGFrLnRhcmdldCl7aWYoYW49PSJ0ZXh0Q29sb3IiKXthay50YXJnZXRbYW5dPXRoaXMudGFyZ2V0LmNzcygiY29sb3IiKX1lbHNle2FrLnRhcmdldFthbl09dGhpcy50YXJnZXQuY3NzKGFuKX19aWYodGhpcy50aXRsZS5zaG93JiZ0aGlzLnRpdGxlLl9lbGVtKXtmb3IoYW4gaW4gYWsudGl0bGUpe2lmKGFuPT0idGV4dENvbG9yIil7YWsudGl0bGVbYW5dPXRoaXMudGl0bGUuX2VsZW0uY3NzKCJjb2xvciIpfWVsc2V7YWsudGl0bGVbYW5dPXRoaXMudGl0bGUuX2VsZW0uY3NzKGFuKX19fWZvcihhbiBpbiBhay5ncmlkKXthay5ncmlkW2FuXT10aGlzLmdyaWRbYW5dfWlmKGFrLmdyaWQuYmFja2dyb3VuZENvbG9yPT1udWxsJiZ0aGlzLmdyaWQuYmFja2dyb3VuZCE9bnVsbCl7YWsuZ3JpZC5iYWNrZ3JvdW5kQ29sb3I9dGhpcy5ncmlkLmJhY2tncm91bmR9aWYodGhpcy5sZWdlbmQuc2hvdyYmdGhpcy5sZWdlbmQuX2VsZW0pe2ZvcihhbiBpbiBhay5sZWdlbmQpe2lmKGFuPT0idGV4dENvbG9yIil7YWsubGVnZW5kW2FuXT10aGlzLmxlZ2VuZC5fZWxlbS5jc3MoImNvbG9yIil9ZWxzZXthay5sZWdlbmRbYW5dPXRoaXMubGVnZW5kLl9lbGVtLmNzcyhhbil9fX12YXIgYWo7Zm9yKGFpPTA7YWk8dGhpcy5zZXJpZXMubGVuZ3RoO2FpKyspe2FqPXRoaXMuc2VyaWVzW2FpXTtpZihhai5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09TC5qcXBsb3QuTGluZVJlbmRlcmVyKXthay5zZXJpZXMucHVzaChuZXcgcCgpKX1lbHNle2lmKGFqLnJlbmRlcmVyLmNvbnN0cnVjdG9yPT1MLmpxcGxvdC5CYXJSZW5kZXJlcil7YWsuc2VyaWVzLnB1c2gobmV3IFQoKSl9ZWxzZXtpZihhai5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09TC5qcXBsb3QuUGllUmVuZGVyZXIpe2FrLnNlcmllcy5wdXNoKG5ldyBmKCkpfWVsc2V7aWYoYWoucmVuZGVyZXIuY29uc3RydWN0b3I9PUwuanFwbG90LkRvbnV0UmVuZGVyZXIpe2FrLnNlcmllcy5wdXNoKG5ldyBHKCkpfWVsc2V7aWYoYWoucmVuZGVyZXIuY29uc3RydWN0b3I9PUwuanFwbG90LkZ1bm5lbFJlbmRlcmVyKXthay5zZXJpZXMucHVzaChuZXcgWigpKX1lbHNle2lmKGFqLnJlbmRlcmVyLmNvbnN0cnVjdG9yPT1MLmpxcGxvdC5NZXRlckdhdWdlUmVuZGVyZXIpe2FrLnNlcmllcy5wdXNoKG5ldyBEKCkpfWVsc2V7YWsuc2VyaWVzLnB1c2goe30pfX19fX19Zm9yKGFuIGluIGFrLnNlcmllc1thaV0pe2FrLnNlcmllc1thaV1bYW5dPWFqW2FuXX19dmFyIGFoLGFsO2ZvcihhbiBpbiB0aGlzLmF4ZXMpe2FsPXRoaXMuYXhlc1thbl07YWg9YWsuYXhlc1thbl09bmV3IFAoKTthaC5ib3JkZXJDb2xvcj1hbC5ib3JkZXJDb2xvcjthaC5ib3JkZXJXaWR0aD1hbC5ib3JkZXJXaWR0aDtpZihhbC5fdGlja3MmJmFsLl90aWNrc1swXSl7Zm9yKGFtIGluIGFoLnRpY2tzKXtpZihhbC5fdGlja3NbMF0uaGFzT3duUHJvcGVydHkoYW0pKXthaC50aWNrc1thbV09YWwuX3RpY2tzWzBdW2FtXX1lbHNle2lmKGFsLl90aWNrc1swXS5fZWxlbSl7YWgudGlja3NbYW1dPWFsLl90aWNrc1swXS5fZWxlbS5jc3MoYW0pfX19fWlmKGFsLl9sYWJlbCYmYWwuX2xhYmVsLnNob3cpe2ZvcihhbSBpbiBhaC5sYWJlbCl7aWYoYWwuX2xhYmVsW2FtXSl7YWgubGFiZWxbYW1dPWFsLl9sYWJlbFthbV19ZWxzZXtpZihhbC5fbGFiZWwuX2VsZW0pe2lmKGFtPT0idGV4dENvbG9yIil7YWgubGFiZWxbYW1dPWFsLl9sYWJlbC5fZWxlbS5jc3MoImNvbG9yIil9ZWxzZXthaC5sYWJlbFthbV09YWwuX2xhYmVsLl9lbGVtLmNzcyhhbSl9fX19fX10aGlzLnRoZW1lRW5naW5lLl9hZGQoYWspO3RoaXMudGhlbWVFbmdpbmUuYWN0aXZlVGhlbWU9dGhpcy50aGVtZUVuZ2luZS50aGVtZXNbYWsuX25hbWVdfTtMLmpxcGxvdC5UaGVtZUVuZ2luZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGFoKXtpZighYWgpe3JldHVybiB0aGlzLmFjdGl2ZVRoZW1lfWVsc2V7cmV0dXJuIHRoaXMudGhlbWVzW2FoXX19O2Z1bmN0aW9uIE8oYWksYWgpe3JldHVybiBhaS1haH1MLmpxcGxvdC5UaGVtZUVuZ2luZS5wcm90b3R5cGUuZ2V0VGhlbWVOYW1lcz1mdW5jdGlvbigpe3ZhciBhaD1bXTtmb3IodmFyIGFpIGluIHRoaXMudGhlbWVzKXthaC5wdXNoKGFpKX1yZXR1cm4gYWguc29ydChPKX07TC5qcXBsb3QuVGhlbWVFbmdpbmUucHJvdG90eXBlLmdldFRoZW1lcz1mdW5jdGlvbigpe3ZhciBhaT1bXTt2YXIgYWg9W107Zm9yKHZhciBhayBpbiB0aGlzLnRoZW1lcyl7YWkucHVzaChhayl9YWkuc29ydChPKTtmb3IodmFyIGFqPTA7YWo8YWkubGVuZ3RoO2FqKyspe2FoLnB1c2godGhpcy50aGVtZXNbYWlbYWpdXSl9cmV0dXJuIGFofTtMLmpxcGxvdC5UaGVtZUVuZ2luZS5wcm90b3R5cGUuYWN0aXZhdGU9ZnVuY3Rpb24oYXYsYUIpe3ZhciBhaD1mYWxzZTtpZighYUImJnRoaXMuYWN0aXZlVGhlbWUmJnRoaXMuYWN0aXZlVGhlbWUuX25hbWUpe2FCPXRoaXMuYWN0aXZlVGhlbWUuX25hbWV9aWYoIXRoaXMudGhlbWVzLmhhc093blByb3BlcnR5KGFCKSl7dGhyb3cgbmV3IEVycm9yKCJObyB0aGVtZSBvZiB0aGF0IG5hbWUiKX1lbHNle3ZhciBhbT10aGlzLnRoZW1lc1thQl07dGhpcy5hY3RpdmVUaGVtZT1hbTt2YXIgYUEsYXQ9ZmFsc2UsYXI9ZmFsc2U7dmFyIGFpPVsieGF4aXMiLCJ4MmF4aXMiLCJ5YXhpcyIsInkyYXhpcyJdO2Zvcihhdz0wO2F3PGFpLmxlbmd0aDthdysrKXt2YXIgYW49YWlbYXddO2lmKGFtLmF4ZXNTdHlsZXMuYm9yZGVyQ29sb3IhPW51bGwpe2F2LmF4ZXNbYW5dLmJvcmRlckNvbG9yPWFtLmF4ZXNTdHlsZXMuYm9yZGVyQ29sb3J9aWYoYW0uYXhlc1N0eWxlcy5ib3JkZXJXaWR0aCE9bnVsbCl7YXYuYXhlc1thbl0uYm9yZGVyV2lkdGg9YW0uYXhlc1N0eWxlcy5ib3JkZXJXaWR0aH19Zm9yKHZhciBheiBpbiBhdi5heGVzKXt2YXIgYWs9YXYuYXhlc1thel07aWYoYWsuc2hvdyl7dmFyIGFxPWFtLmF4ZXNbYXpdfHx7fTt2YXIgYW89YW0uYXhlc1N0eWxlczt2YXIgYWw9TC5qcXBsb3QuZXh0ZW5kKHRydWUse30sYXEsYW8pO2FBPShhbS5heGVzU3R5bGVzLmJvcmRlckNvbG9yIT1udWxsKT9hbS5heGVzU3R5bGVzLmJvcmRlckNvbG9yOmFsLmJvcmRlckNvbG9yO2lmKGFsLmJvcmRlckNvbG9yIT1udWxsKXthay5ib3JkZXJDb2xvcj1hbC5ib3JkZXJDb2xvcjthaD10cnVlfWFBPShhbS5heGVzU3R5bGVzLmJvcmRlcldpZHRoIT1udWxsKT9hbS5heGVzU3R5bGVzLmJvcmRlcldpZHRoOmFsLmJvcmRlcldpZHRoO2lmKGFsLmJvcmRlcldpZHRoIT1udWxsKXthay5ib3JkZXJXaWR0aD1hbC5ib3JkZXJXaWR0aDthaD10cnVlfWlmKGFrLl90aWNrcyYmYWsuX3RpY2tzWzBdKXtmb3IodmFyIGFqIGluIGFsLnRpY2tzKXthQT1hbC50aWNrc1thal07aWYoYUEhPW51bGwpe2FrLnRpY2tPcHRpb25zW2FqXT1hQTthay5fdGlja3M9W107YWg9dHJ1ZX19fWlmKGFrLl9sYWJlbCYmYWsuX2xhYmVsLnNob3cpe2Zvcih2YXIgYWogaW4gYWwubGFiZWwpe2FBPWFsLmxhYmVsW2FqXTtpZihhQSE9bnVsbCl7YWsubGFiZWxPcHRpb25zW2FqXT1hQTthaD10cnVlfX19fX1mb3IodmFyIGF1IGluIGFtLmdyaWQpe2lmKGFtLmdyaWRbYXVdIT1udWxsKXthdi5ncmlkW2F1XT1hbS5ncmlkW2F1XX19aWYoIWFoKXthdi5ncmlkLmRyYXcoKX1pZihhdi5sZWdlbmQuc2hvdyl7Zm9yKGF1IGluIGFtLmxlZ2VuZCl7aWYoYW0ubGVnZW5kW2F1XSE9bnVsbCl7YXYubGVnZW5kW2F1XT1hbS5sZWdlbmRbYXVdfX19aWYoYXYudGl0bGUuc2hvdyl7Zm9yKGF1IGluIGFtLnRpdGxlKXtpZihhbS50aXRsZVthdV0hPW51bGwpe2F2LnRpdGxlW2F1XT1hbS50aXRsZVthdV19fX12YXIgYXc7Zm9yKGF3PTA7YXc8YW0uc2VyaWVzLmxlbmd0aDthdysrKXt2YXIgYXA9e307dmFyIGF5PWZhbHNlO2ZvcihhdSBpbiBhbS5zZXJpZXNbYXddKXthQT0oYW0uc2VyaWVzU3R5bGVzW2F1XSE9bnVsbCk/YW0uc2VyaWVzU3R5bGVzW2F1XTphbS5zZXJpZXNbYXddW2F1XTtpZihhQSE9bnVsbCl7YXBbYXVdPWFBO2lmKGF1PT0iY29sb3IiKXthdi5zZXJpZXNbYXddLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZmlsbFN0eWxlPWFBO2F2LnNlcmllc1thd10ucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5zdHJva2VTdHlsZT1hQTthdi5zZXJpZXNbYXddW2F1XT1hQX1lbHNle2lmKChhdT09ImxpbmVXaWR0aCIpfHwoYXU9PSJsaW5lUGF0dGVybiIpKXthdi5zZXJpZXNbYXddLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXJbYXVdPWFBO2F2LnNlcmllc1thd11bYXVdPWFBfWVsc2V7aWYoYXU9PSJtYXJrZXJPcHRpb25zIil7Vihhdi5zZXJpZXNbYXddLm1hcmtlck9wdGlvbnMsYUEpO1YoYXYuc2VyaWVzW2F3XS5tYXJrZXJSZW5kZXJlcixhQSl9ZWxzZXthdi5zZXJpZXNbYXddW2F1XT1hQX19fWFoPXRydWV9fX1pZihhaCl7YXYudGFyZ2V0LmVtcHR5KCk7YXYuZHJhdygpfWZvcihhdSBpbiBhbS50YXJnZXQpe2lmKGFtLnRhcmdldFthdV0hPW51bGwpe2F2LnRhcmdldC5jc3MoYXUsYW0udGFyZ2V0W2F1XSl9fX19O0wuanFwbG90LlRoZW1lRW5naW5lLnByb3RvdHlwZS5fYWRkPWZ1bmN0aW9uKGFpLGFoKXtpZihhaCl7YWkuX25hbWU9YWh9aWYoIWFpLl9uYW1lKXthaS5fbmFtZT1EYXRlLnBhcnNlKG5ldyBEYXRlKCkpfWlmKCF0aGlzLnRoZW1lcy5oYXNPd25Qcm9wZXJ0eShhaS5fbmFtZSkpe3RoaXMudGhlbWVzW2FpLl9uYW1lXT1haX1lbHNle3Rocm93IG5ldyBFcnJvcigianFwbG90LlRoZW1lRW5naW5lIEVycm9yOiBUaGVtZSBhbHJlYWR5IGluIHVzZSIpfX07TC5qcXBsb3QuVGhlbWVFbmdpbmUucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihhaCl7aWYoYWg9PSJEZWZhdWx0Iil7cmV0dXJuIGZhbHNlfXJldHVybiBkZWxldGUgdGhpcy50aGVtZXNbYWhdfTtMLmpxcGxvdC5UaGVtZUVuZ2luZS5wcm90b3R5cGUubmV3VGhlbWU9ZnVuY3Rpb24oYWgsYWope2lmKHR5cGVvZihhaCk9PSJvYmplY3QiKXthaj1hanx8YWg7YWg9bnVsbH1pZihhaiYmYWouX25hbWUpe2FoPWFqLl9uYW1lfWVsc2V7YWg9YWh8fERhdGUucGFyc2UobmV3IERhdGUoKSl9dmFyIGFpPXRoaXMuY29weSh0aGlzLnRoZW1lcy5EZWZhdWx0Ll9uYW1lLGFoKTtMLmpxcGxvdC5leHRlbmQoYWksYWopO3JldHVybiBhaX07ZnVuY3Rpb24gQihhail7aWYoYWo9PW51bGx8fHR5cGVvZihhaikhPSJvYmplY3QiKXtyZXR1cm4gYWp9dmFyIGFoPW5ldyBhai5jb25zdHJ1Y3RvcigpO2Zvcih2YXIgYWkgaW4gYWope2FoW2FpXT1CKGFqW2FpXSl9cmV0dXJuIGFofUwuanFwbG90LmNsb25lPUI7ZnVuY3Rpb24gVihhaixhaSl7aWYoYWk9PW51bGx8fHR5cGVvZihhaSkhPSJvYmplY3QiKXtyZXR1cm59Zm9yKHZhciBhaCBpbiBhaSl7aWYoYWg9PSJoaWdobGlnaHRDb2xvcnMiKXthalthaF09QihhaVthaF0pfWlmKGFpW2FoXSE9bnVsbCYmdHlwZW9mKGFpW2FoXSk9PSJvYmplY3QiKXtpZighYWouaGFzT3duUHJvcGVydHkoYWgpKXthalthaF09e319VihhalthaF0sYWlbYWhdKX1lbHNle2FqW2FoXT1haVthaF19fX1MLmpxcGxvdC5tZXJnZT1WO0wuanFwbG90LmV4dGVuZD1mdW5jdGlvbigpe3ZhciBhbT1hcmd1bWVudHNbMF18fHt9LGFrPTEsYWw9YXJndW1lbnRzLmxlbmd0aCxhaD1mYWxzZSxhajtpZih0eXBlb2YgYW09PT0iYm9vbGVhbiIpe2FoPWFtO2FtPWFyZ3VtZW50c1sxXXx8e307YWs9Mn1pZih0eXBlb2YgYW0hPT0ib2JqZWN0IiYmIXRvU3RyaW5nLmNhbGwoYW0pPT09IltvYmplY3QgRnVuY3Rpb25dIil7YW09e319Zm9yKDthazxhbDthaysrKXtpZigoYWo9YXJndW1lbnRzW2FrXSkhPW51bGwpe2Zvcih2YXIgYWkgaW4gYWope3ZhciBhbj1hbVthaV0sYW89YWpbYWldO2lmKGFtPT09YW8pe2NvbnRpbnVlfWlmKGFoJiZhbyYmdHlwZW9mIGFvPT09Im9iamVjdCImJiFhby5ub2RlVHlwZSl7YW1bYWldPUwuanFwbG90LmV4dGVuZChhaCxhbnx8KGFvLmxlbmd0aCE9bnVsbD9bXTp7fSksYW8pfWVsc2V7aWYoYW8hPT11KXthbVthaV09YW99fX19fXJldHVybiBhbX07TC5qcXBsb3QuVGhlbWVFbmdpbmUucHJvdG90eXBlLnJlbmFtZT1mdW5jdGlvbihhaSxhaCl7aWYoYWk9PSJEZWZhdWx0Inx8YWg9PSJEZWZhdWx0Iil7dGhyb3cgbmV3IEVycm9yKCJqcXBsb3QuVGhlbWVFbmdpbmUgRXJyb3I6IENhbm5vdCByZW5hbWUgZnJvbS90byBEZWZhdWx0Iil9aWYodGhpcy50aGVtZXMuaGFzT3duUHJvcGVydHkoYWgpKXt0aHJvdyBuZXcgRXJyb3IoImpxcGxvdC5UaGVtZUVuZ2luZSBFcnJvcjogTmV3IG5hbWUgYWxyZWFkeSBpbiB1c2UuIil9ZWxzZXtpZih0aGlzLnRoZW1lcy5oYXNPd25Qcm9wZXJ0eShhaSkpe3ZhciBhaj10aGlzLmNvcHkoYWksYWgpO3RoaXMucmVtb3ZlKGFpKTtyZXR1cm4gYWp9fXRocm93IG5ldyBFcnJvcigianFwbG90LlRoZW1lRW5naW5lIEVycm9yOiBPbGQgbmFtZSBvciBuZXcgbmFtZSBpbnZhbGlkIil9O0wuanFwbG90LlRoZW1lRW5naW5lLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGFoLGFqLGFsKXtpZihhaj09IkRlZmF1bHQiKXt0aHJvdyBuZXcgRXJyb3IoImpxcGxvdC5UaGVtZUVuZ2luZSBFcnJvcjogQ2Fubm90IGNvcHkgb3ZlciBEZWZhdWx0IHRoZW1lIil9aWYoIXRoaXMudGhlbWVzLmhhc093blByb3BlcnR5KGFoKSl7dmFyIGFpPSJqcXBsb3QuVGhlbWVFbmdpbmUgRXJyb3I6IFNvdXJjZSBuYW1lIGludmFsaWQiO3Rocm93IG5ldyBFcnJvcihhaSl9aWYodGhpcy50aGVtZXMuaGFzT3duUHJvcGVydHkoYWopKXt2YXIgYWk9ImpxcGxvdC5UaGVtZUVuZ2luZSBFcnJvcjogVGFyZ2V0IG5hbWUgaW52YWxpZCI7dGhyb3cgbmV3IEVycm9yKGFpKX1lbHNle3ZhciBhaz1CKHRoaXMudGhlbWVzW2FoXSk7YWsuX25hbWU9YWo7TC5qcXBsb3QuZXh0ZW5kKHRydWUsYWssYWwpO3RoaXMuX2FkZChhayk7cmV0dXJuIGFrfX07TC5qcXBsb3QuVGhlbWU9ZnVuY3Rpb24oYWgsYWkpe2lmKHR5cGVvZihhaCk9PSJvYmplY3QiKXthaT1haXx8YWg7YWg9bnVsbH1haD1haHx8RGF0ZS5wYXJzZShuZXcgRGF0ZSgpKTt0aGlzLl9uYW1lPWFoO3RoaXMudGFyZ2V0PXtiYWNrZ3JvdW5kQ29sb3I6bnVsbH07dGhpcy5sZWdlbmQ9e3RleHRDb2xvcjpudWxsLGZvbnRGYW1pbHk6bnVsbCxmb250U2l6ZTpudWxsLGJvcmRlcjpudWxsLGJhY2tncm91bmQ6bnVsbH07dGhpcy50aXRsZT17dGV4dENvbG9yOm51bGwsZm9udEZhbWlseTpudWxsLGZvbnRTaXplOm51bGwsdGV4dEFsaWduOm51bGx9O3RoaXMuc2VyaWVzU3R5bGVzPXt9O3RoaXMuc2VyaWVzPVtdO3RoaXMuZ3JpZD17ZHJhd0dyaWRsaW5lczpudWxsLGdyaWRMaW5lQ29sb3I6bnVsbCxncmlkTGluZVdpZHRoOm51bGwsYmFja2dyb3VuZENvbG9yOm51bGwsYm9yZGVyQ29sb3I6bnVsbCxib3JkZXJXaWR0aDpudWxsLHNoYWRvdzpudWxsfTt0aGlzLmF4ZXNTdHlsZXM9e2xhYmVsOnt9LHRpY2tzOnt9fTt0aGlzLmF4ZXM9e307aWYodHlwZW9mKGFpKT09InN0cmluZyIpe3RoaXMuX25hbWU9YWl9ZWxzZXtpZih0eXBlb2YoYWkpPT0ib2JqZWN0Iil7TC5qcXBsb3QuZXh0ZW5kKHRydWUsdGhpcyxhaSl9fX07dmFyIFA9ZnVuY3Rpb24oKXt0aGlzLmJvcmRlckNvbG9yPW51bGw7dGhpcy5ib3JkZXJXaWR0aD1udWxsO3RoaXMudGlja3M9bmV3IG8oKTt0aGlzLmxhYmVsPW5ldyB0KCl9O3ZhciBvPWZ1bmN0aW9uKCl7dGhpcy5zaG93PW51bGw7dGhpcy5zaG93R3JpZGxpbmU9bnVsbDt0aGlzLnNob3dMYWJlbD1udWxsO3RoaXMuc2hvd01hcms9bnVsbDt0aGlzLnNpemU9bnVsbDt0aGlzLnRleHRDb2xvcj1udWxsO3RoaXMud2hpdGVTcGFjZT1udWxsO3RoaXMuZm9udFNpemU9bnVsbDt0aGlzLmZvbnRGYW1pbHk9bnVsbH07dmFyIHQ9ZnVuY3Rpb24oKXt0aGlzLnRleHRDb2xvcj1udWxsO3RoaXMud2hpdGVTcGFjZT1udWxsO3RoaXMuZm9udFNpemU9bnVsbDt0aGlzLmZvbnRGYW1pbHk9bnVsbDt0aGlzLmZvbnRXZWlnaHQ9bnVsbH07dmFyIHA9ZnVuY3Rpb24oKXt0aGlzLmNvbG9yPW51bGw7dGhpcy5saW5lV2lkdGg9bnVsbDt0aGlzLmxpbmVQYXR0ZXJuPW51bGw7dGhpcy5zaGFkb3c9bnVsbDt0aGlzLmZpbGxDb2xvcj1udWxsO3RoaXMuc2hvd01hcmtlcj1udWxsO3RoaXMubWFya2VyT3B0aW9ucz1uZXcgSSgpfTt2YXIgST1mdW5jdGlvbigpe3RoaXMuc2hvdz1udWxsO3RoaXMuc3R5bGU9bnVsbDt0aGlzLmxpbmVXaWR0aD1udWxsO3RoaXMuc2l6ZT1udWxsO3RoaXMuY29sb3I9bnVsbDt0aGlzLnNoYWRvdz1udWxsfTt2YXIgVD1mdW5jdGlvbigpe3RoaXMuY29sb3I9bnVsbDt0aGlzLnNlcmllc0NvbG9ycz1udWxsO3RoaXMubGluZVdpZHRoPW51bGw7dGhpcy5zaGFkb3c9bnVsbDt0aGlzLmJhclBhZGRpbmc9bnVsbDt0aGlzLmJhck1hcmdpbj1udWxsO3RoaXMuYmFyV2lkdGg9bnVsbDt0aGlzLmhpZ2hsaWdodENvbG9ycz1udWxsfTt2YXIgZj1mdW5jdGlvbigpe3RoaXMuc2VyaWVzQ29sb3JzPW51bGw7dGhpcy5wYWRkaW5nPW51bGw7dGhpcy5zbGljZU1hcmdpbj1udWxsO3RoaXMuZmlsbD1udWxsO3RoaXMuc2hhZG93PW51bGw7dGhpcy5zdGFydEFuZ2xlPW51bGw7dGhpcy5saW5lV2lkdGg9bnVsbDt0aGlzLmhpZ2hsaWdodENvbG9ycz1udWxsfTt2YXIgRz1mdW5jdGlvbigpe3RoaXMuc2VyaWVzQ29sb3JzPW51bGw7dGhpcy5wYWRkaW5nPW51bGw7dGhpcy5zbGljZU1hcmdpbj1udWxsO3RoaXMuZmlsbD1udWxsO3RoaXMuc2hhZG93PW51bGw7dGhpcy5zdGFydEFuZ2xlPW51bGw7dGhpcy5saW5lV2lkdGg9bnVsbDt0aGlzLmlubmVyRGlhbWV0ZXI9bnVsbDt0aGlzLnRoaWNrbmVzcz1udWxsO3RoaXMucmluZ01hcmdpbj1udWxsO3RoaXMuaGlnaGxpZ2h0Q29sb3JzPW51bGx9O3ZhciBaPWZ1bmN0aW9uKCl7dGhpcy5jb2xvcj1udWxsO3RoaXMubGluZVdpZHRoPW51bGw7dGhpcy5zaGFkb3c9bnVsbDt0aGlzLnBhZGRpbmc9bnVsbDt0aGlzLnNlY3Rpb25NYXJnaW49bnVsbDt0aGlzLnNlcmllc0NvbG9ycz1udWxsO3RoaXMuaGlnaGxpZ2h0Q29sb3JzPW51bGx9O3ZhciBEPWZ1bmN0aW9uKCl7dGhpcy5wYWRkaW5nPW51bGw7dGhpcy5iYWNrZ3JvdW5kQ29sb3I9bnVsbDt0aGlzLnJpbmdDb2xvcj1udWxsO3RoaXMudGlja0NvbG9yPW51bGw7dGhpcy5yaW5nV2lkdGg9bnVsbDt0aGlzLmludGVydmFsQ29sb3JzPW51bGw7dGhpcy5pbnRlcnZhbElubmVyUmFkaXVzPW51bGw7dGhpcy5pbnRlcnZhbE91dGVyUmFkaXVzPW51bGw7dGhpcy5odWJSYWRpdXM9bnVsbDt0aGlzLm5lZWRsZVRoaWNrbmVzcz1udWxsO3RoaXMubmVlZGxlUGFkPW51bGx9O0wuZm4uanFwbG90Q2hpbGRUZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIEwodGhpcykuY29udGVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlVHlwZT09M30pLnRleHQoKX07TC5mbi5qcXBsb3RHZXRDb21wdXRlZEZvbnRTdHlsZT1mdW5jdGlvbigpe3ZhciBhaz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZT93aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzWzBdLCIiKTp0aGlzWzBdLmN1cnJlbnRTdHlsZTt2YXIgYWk9YWtbImZvbnQtc3R5bGUiXT9bImZvbnQtc3R5bGUiLCJmb250LXdlaWdodCIsImZvbnQtc2l6ZSIsImZvbnQtZmFtaWx5Il06WyJmb250U3R5bGUiLCJmb250V2VpZ2h0IiwiZm9udFNpemUiLCJmb250RmFtaWx5Il07dmFyIGFsPVtdO2Zvcih2YXIgYWo9MDthajxhaS5sZW5ndGg7Kythail7dmFyIGFoPVN0cmluZyhha1thaVthal1dKTtpZihhaCYmYWghPSJub3JtYWwiKXthbC5wdXNoKGFoKX19cmV0dXJuIGFsLmpvaW4oIiAiKX07TC5mbi5qcXBsb3RUb0ltYWdlQ2FudmFzPWZ1bmN0aW9uKGFqKXthaj1hanx8e307dmFyIGF2PShhai54X29mZnNldD09bnVsbCk/MDphai54X29mZnNldDt2YXIgYXg9KGFqLnlfb2Zmc2V0PT1udWxsKT8wOmFqLnlfb2Zmc2V0O3ZhciBhbD0oYWouYmFja2dyb3VuZENvbG9yPT1udWxsKT8icmdiKDI1NSwyNTUsMjU1KSI6YWouYmFja2dyb3VuZENvbG9yO2lmKEwodGhpcykud2lkdGgoKT09MHx8TCh0aGlzKS5oZWlnaHQoKT09MCl7cmV0dXJuIG51bGx9aWYoTC5qcXBsb3QudXNlX2V4Y2FudmFzKXtyZXR1cm4gbnVsbH12YXIgYW49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7dmFyIGFBPUwodGhpcykub3V0ZXJIZWlnaHQodHJ1ZSk7dmFyIGF0PUwodGhpcykub3V0ZXJXaWR0aCh0cnVlKTt2YXIgYW09TCh0aGlzKS5vZmZzZXQoKTt2YXIgYW89YW0ubGVmdDt2YXIgYXE9YW0udG9wO3ZhciBhdT0wLGFyPTA7dmFyIGF5PVsianFwbG90LXRhYmxlLWxlZ2VuZCIsImpxcGxvdC14YXhpcy10aWNrIiwianFwbG90LXgyYXhpcy10aWNrIiwianFwbG90LXlheGlzLXRpY2siLCJqcXBsb3QteTJheGlzLXRpY2siLCJqcXBsb3QteTNheGlzLXRpY2siLCJqcXBsb3QteTRheGlzLXRpY2siLCJqcXBsb3QteTVheGlzLXRpY2siLCJqcXBsb3QteTZheGlzLXRpY2siLCJqcXBsb3QteTdheGlzLXRpY2siLCJqcXBsb3QteThheGlzLXRpY2siLCJqcXBsb3QteTlheGlzLXRpY2siLCJqcXBsb3QteGF4aXMtbGFiZWwiLCJqcXBsb3QteDJheGlzLWxhYmVsIiwianFwbG90LXlheGlzLWxhYmVsIiwianFwbG90LXkyYXhpcy1sYWJlbCIsImpxcGxvdC15M2F4aXMtbGFiZWwiLCJqcXBsb3QteTRheGlzLWxhYmVsIiwianFwbG90LXk1YXhpcy1sYWJlbCIsImpxcGxvdC15NmF4aXMtbGFiZWwiLCJqcXBsb3QteTdheGlzLWxhYmVsIiwianFwbG90LXk4YXhpcy1sYWJlbCIsImpxcGxvdC15OWF4aXMtbGFiZWwiXTt2YXIgYXAsYWgsYWksYUI7Zm9yKHZhciBhej0wO2F6PGF5Lmxlbmd0aDtheisrKXtMKHRoaXMpLmZpbmQoIi4iK2F5W2F6XSkuZWFjaChmdW5jdGlvbigpe2FwPUwodGhpcykub2Zmc2V0KCkudG9wLWFxO2FoPUwodGhpcykub2Zmc2V0KCkubGVmdC1hbzthQj1haCtMKHRoaXMpLm91dGVyV2lkdGgodHJ1ZSkrYXU7YWk9YXArTCh0aGlzKS5vdXRlckhlaWdodCh0cnVlKSthcjtpZihhaDwtYXUpe2F0PWF0LWF1LWFoO2F1PS1haH1pZihhcDwtYXIpe2FBPWFBLWFyLWFwO2FyPS1hcH1pZihhQj5hdCl7YXQ9YUJ9aWYoYWk+YUEpe2FBPWFpfX0pfWFuLndpZHRoPWF0K051bWJlcihhdik7YW4uaGVpZ2h0PWFBK051bWJlcihheCk7dmFyIGFrPWFuLmdldENvbnRleHQoIjJkIik7YWsuc2F2ZSgpO2FrLmZpbGxTdHlsZT1hbDthay5maWxsUmVjdCgwLDAsYW4ud2lkdGgsYW4uaGVpZ2h0KTthay5yZXN0b3JlKCk7YWsudHJhbnNsYXRlKGF1LGFyKTthay50ZXh0QWxpZ249ImxlZnQiO2FrLnRleHRCYXNlbGluZT0idG9wIjtmdW5jdGlvbiBhQyhhRSl7dmFyIGFGPXBhcnNlSW50KEwoYUUpLmNzcygibGluZS1oZWlnaHQiKSwxMCk7aWYoaXNOYU4oYUYpKXthRj1wYXJzZUludChMKGFFKS5jc3MoImZvbnQtc2l6ZSIpLDEwKSoxLjJ9cmV0dXJuIGFGfWZ1bmN0aW9uIGFEKGFGLGFFLGFTLGFHLGFPLGFIKXt2YXIgYVE9YUMoYUYpO3ZhciBhSz1MKGFGKS5pbm5lcldpZHRoKCk7dmFyIGFMPUwoYUYpLmlubmVySGVpZ2h0KCk7dmFyIGFOPWFTLnNwbGl0KC9ccysvKTt2YXIgYVI9YU4ubGVuZ3RoO3ZhciBhUD0iIjt2YXIgYU09W107dmFyIGFVPWFPO3ZhciBhVD1hRztmb3IodmFyIGFKPTA7YUo8YVI7YUorKyl7YVArPWFOW2FKXTtpZihhRS5tZWFzdXJlVGV4dChhUCkud2lkdGg+YUspe2FNLnB1c2goYUopO2FQPSIiO2FKLS19fWlmKGFNLmxlbmd0aD09PTApe2lmKEwoYUYpLmNzcygidGV4dEFsaWduIik9PT0iY2VudGVyIil7YVQ9YUcrKGFILWFFLm1lYXN1cmVUZXh0KGFQKS53aWR0aCkvMi1hdX1hRS5maWxsVGV4dChhUyxhVCxhTyl9ZWxzZXthUD1hTi5zbGljZSgwLGFNWzBdKS5qb2luKCIgIik7aWYoTChhRikuY3NzKCJ0ZXh0QWxpZ24iKT09PSJjZW50ZXIiKXthVD1hRysoYUgtYUUubWVhc3VyZVRleHQoYVApLndpZHRoKS8yLWF1fWFFLmZpbGxUZXh0KGFQLGFULGFVKTthVSs9YVE7Zm9yKHZhciBhSj0xLGFJPWFNLmxlbmd0aDthSjxhSTthSisrKXthUD1hTi5zbGljZShhTVthSi0xXSxhTVthSl0pLmpvaW4oIiAiKTtpZihMKGFGKS5jc3MoInRleHRBbGlnbiIpPT09ImNlbnRlciIpe2FUPWFHKyhhSC1hRS5tZWFzdXJlVGV4dChhUCkud2lkdGgpLzItYXV9YUUuZmlsbFRleHQoYVAsYVQsYVUpO2FVKz1hUX1hUD1hTi5zbGljZShhTVthSi0xXSxhTi5sZW5ndGgpLmpvaW4oIiAiKTtpZihMKGFGKS5jc3MoInRleHRBbGlnbiIpPT09ImNlbnRlciIpe2FUPWFHKyhhSC1hRS5tZWFzdXJlVGV4dChhUCkud2lkdGgpLzItYXV9YUUuZmlsbFRleHQoYVAsYVQsYVUpfX1mdW5jdGlvbiBhdyhhRyxhSixhRSl7dmFyIGFOPWFHLnRhZ05hbWUudG9Mb3dlckNhc2UoKTt2YXIgYUY9TChhRykucG9zaXRpb24oKTt2YXIgYUs9d2luZG93LmdldENvbXB1dGVkU3R5bGU/d2luZG93LmdldENvbXB1dGVkU3R5bGUoYUcsIiIpOmFHLmN1cnJlbnRTdHlsZTt2YXIgYUk9YUorYUYubGVmdCtwYXJzZUludChhSy5tYXJnaW5MZWZ0LDEwKStwYXJzZUludChhSy5ib3JkZXJMZWZ0V2lkdGgsMTApK3BhcnNlSW50KGFLLnBhZGRpbmdMZWZ0LDEwKTt2YXIgYUw9YUUrYUYudG9wK3BhcnNlSW50KGFLLm1hcmdpblRvcCwxMCkrcGFyc2VJbnQoYUsuYm9yZGVyVG9wV2lkdGgsMTApK3BhcnNlSW50KGFLLnBhZGRpbmdUb3AsMTApO3ZhciBhTT1hbi53aWR0aDtpZigoYU49PSJkaXYifHxhTj09InNwYW4iKSYmIUwoYUcpLmhhc0NsYXNzKCJqcXBsb3QtaGlnaGxpZ2h0ZXItdG9vbHRpcCIpKXtMKGFHKS5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24oKXthdyh0aGlzLGFJLGFMKX0pO3ZhciBhTz1MKGFHKS5qcXBsb3RDaGlsZFRleHQoKTtpZihhTyl7YWsuZm9udD1MKGFHKS5qcXBsb3RHZXRDb21wdXRlZEZvbnRTdHlsZSgpO2FrLmZpbGxTdHlsZT1MKGFHKS5jc3MoImNvbG9yIik7YUQoYUcsYWssYU8sYUksYUwsYU0pfX1lbHNle2lmKGFOPT09InRhYmxlIiYmTChhRykuaGFzQ2xhc3MoImpxcGxvdC10YWJsZS1sZWdlbmQiKSl7YWsuc3Ryb2tlU3R5bGU9TChhRykuY3NzKCJib3JkZXItdG9wLWNvbG9yIik7YWsuZmlsbFN0eWxlPUwoYUcpLmNzcygiYmFja2dyb3VuZC1jb2xvciIpO2FrLmZpbGxSZWN0KGFJLGFMLEwoYUcpLmlubmVyV2lkdGgoKSxMKGFHKS5pbm5lckhlaWdodCgpKTtpZihwYXJzZUludChMKGFHKS5jc3MoImJvcmRlci10b3Atd2lkdGgiKSwxMCk+MCl7YWsuc3Ryb2tlUmVjdChhSSxhTCxMKGFHKS5pbm5lcldpZHRoKCksTChhRykuaW5uZXJIZWlnaHQoKSl9TChhRykuZmluZCgiZGl2LmpxcGxvdC10YWJsZS1sZWdlbmQtc3dhdGNoLW91dGxpbmUiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGFVPUwodGhpcyk7YWsuc3Ryb2tlU3R5bGU9YVUuY3NzKCJib3JkZXItdG9wLWNvbG9yIik7dmFyIGFRPWFJK2FVLnBvc2l0aW9uKCkubGVmdDt2YXIgYVI9YUwrYVUucG9zaXRpb24oKS50b3A7YWsuc3Ryb2tlUmVjdChhUSxhUixhVS5pbm5lcldpZHRoKCksYVUuaW5uZXJIZWlnaHQoKSk7YVErPXBhcnNlSW50KGFVLmNzcygicGFkZGluZy1sZWZ0IiksMTApO2FSKz1wYXJzZUludChhVS5jc3MoInBhZGRpbmctdG9wIiksMTApO3ZhciBhVD1hVS5pbm5lckhlaWdodCgpLTIqcGFyc2VJbnQoYVUuY3NzKCJwYWRkaW5nLXRvcCIpLDEwKTt2YXIgYVA9YVUuaW5uZXJXaWR0aCgpLTIqcGFyc2VJbnQoYVUuY3NzKCJwYWRkaW5nLWxlZnQiKSwxMCk7dmFyIGFTPWFVLmNoaWxkcmVuKCJkaXYuanFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2giKTthay5maWxsU3R5bGU9YVMuY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIik7YWsuZmlsbFJlY3QoYVEsYVIsYVAsYVQpfSk7TChhRykuZmluZCgidGQuanFwbG90LXRhYmxlLWxlZ2VuZC1sYWJlbCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgYVI9TCh0aGlzKTt2YXIgYVA9YUkrYVIucG9zaXRpb24oKS5sZWZ0O3ZhciBhUT1hTCthUi5wb3NpdGlvbigpLnRvcCtwYXJzZUludChhUi5jc3MoInBhZGRpbmctdG9wIiksMTApO2FrLmZvbnQ9YVIuanFwbG90R2V0Q29tcHV0ZWRGb250U3R5bGUoKTthay5maWxsU3R5bGU9YVIuY3NzKCJjb2xvciIpO2FEKGFSLGFrLGFSLnRleHQoKSxhUCxhUSxhTSl9KTt2YXIgYUg9bnVsbH1lbHNle2lmKGFOPT0iY2FudmFzIil7YWsuZHJhd0ltYWdlKGFHLGFJLGFMKX19fX1MKHRoaXMpLmNoaWxkcmVuKCkuZWFjaChmdW5jdGlvbigpe2F3KHRoaXMsYXYsYXgpfSk7cmV0dXJuIGFufTtMLmZuLmpxcGxvdFRvSW1hZ2VTdHI9ZnVuY3Rpb24oYWkpe3ZhciBhaD1MKHRoaXMpLmpxcGxvdFRvSW1hZ2VDYW52YXMoYWkpO2lmKGFoKXtyZXR1cm4gYWgudG9EYXRhVVJMKCJpbWFnZS9wbmciKX1lbHNle3JldHVybiBudWxsfX07TC5mbi5qcXBsb3RUb0ltYWdlRWxlbT1mdW5jdGlvbihhaCl7dmFyIGFpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpO3ZhciBhaj1MKHRoaXMpLmpxcGxvdFRvSW1hZ2VTdHIoYWgpO2FpLnNyYz1hajtyZXR1cm4gYWl9O0wuZm4uanFwbG90VG9JbWFnZUVsZW1TdHI9ZnVuY3Rpb24oYWgpe3ZhciBhaT0iPGltZyBzcmM9IitMKHRoaXMpLmpxcGxvdFRvSW1hZ2VTdHIoYWgpKyIgLz4iO3JldHVybiBhaX07TC5mbi5qcXBsb3RTYXZlSW1hZ2U9ZnVuY3Rpb24oKXt2YXIgYWg9TCh0aGlzKS5qcXBsb3RUb0ltYWdlU3RyKHt9KTtpZihhaCl7d2luZG93LmxvY2F0aW9uLmhyZWY9YWgucmVwbGFjZSgiaW1hZ2UvcG5nIiwiaW1hZ2Uvb2N0ZXQtc3RyZWFtIil9fTtMLmZuLmpxcGxvdFZpZXdJbWFnZT1mdW5jdGlvbigpe3ZhciBhaT1MKHRoaXMpLmpxcGxvdFRvSW1hZ2VFbGVtU3RyKHt9KTt2YXIgYWo9TCh0aGlzKS5qcXBsb3RUb0ltYWdlU3RyKHt9KTtpZihhaSl7dmFyIGFoPXdpbmRvdy5vcGVuKCIiKTthaC5kb2N1bWVudC5vcGVuKCJpbWFnZS9wbmciKTthaC5kb2N1bWVudC53cml0ZShhaSk7YWguZG9jdW1lbnQuY2xvc2UoKTthaD1udWxsfX07dmFyIGFnPWZ1bmN0aW9uKCl7dGhpcy5zeW50YXg9YWcuY29uZmlnLnN5bnRheDt0aGlzLl90eXBlPSJqc0RhdGUiO3RoaXMucHJveHk9bmV3IERhdGUoKTt0aGlzLm9wdGlvbnM9e307dGhpcy5sb2NhbGU9YWcucmVnaW9uYWwuZ2V0TG9jYWxlKCk7dGhpcy5mb3JtYXRTdHJpbmc9IiI7dGhpcy5kZWZhdWx0Q2VudHVyeT1hZy5jb25maWcuZGVmYXVsdENlbnR1cnk7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpicmVhaztjYXNlIDE6aWYobChhcmd1bWVudHNbMF0pPT0iW29iamVjdCBPYmplY3RdIiYmYXJndW1lbnRzWzBdLl90eXBlIT0ianNEYXRlIil7dmFyIGFqPXRoaXMub3B0aW9ucz1hcmd1bWVudHNbMF07dGhpcy5zeW50YXg9YWouc3ludGF4fHx0aGlzLnN5bnRheDt0aGlzLmRlZmF1bHRDZW50dXJ5PWFqLmRlZmF1bHRDZW50dXJ5fHx0aGlzLmRlZmF1bHRDZW50dXJ5O3RoaXMucHJveHk9YWcuY3JlYXRlRGF0ZShhai5kYXRlKX1lbHNle3RoaXMucHJveHk9YWcuY3JlYXRlRGF0ZShhcmd1bWVudHNbMF0pfWJyZWFrO2RlZmF1bHQ6dmFyIGFoPVtdO2Zvcih2YXIgYWk9MDthaTxhcmd1bWVudHMubGVuZ3RoO2FpKyspe2FoLnB1c2goYXJndW1lbnRzW2FpXSl9dGhpcy5wcm94eT1uZXcgRGF0ZSgpO3RoaXMucHJveHkuc2V0RnVsbFllYXIuYXBwbHkodGhpcy5wcm94eSxhaC5zbGljZSgwLDMpKTtpZihhaC5zbGljZSgzKS5sZW5ndGgpe3RoaXMucHJveHkuc2V0SG91cnMuYXBwbHkodGhpcy5wcm94eSxhaC5zbGljZSgzKSl9YnJlYWt9fTthZy5jb25maWc9e2RlZmF1bHRMb2NhbGU6ImVuIixzeW50YXg6InBlcmwiLGRlZmF1bHRDZW50dXJ5OjE5MDB9O2FnLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYWosYWkpe3ZhciBhaD1FW2FpXXx8RS5kYXk7aWYodHlwZW9mIGFoPT0ibnVtYmVyIil7dGhpcy5wcm94eS5zZXRUaW1lKHRoaXMucHJveHkuZ2V0VGltZSgpKyhhaCphaikpfWVsc2V7YWguYWRkKHRoaXMsYWopfXJldHVybiB0aGlzfTthZy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGFnKHRoaXMucHJveHkuZ2V0VGltZSgpKX07YWcucHJvdG90eXBlLmdldFV0Y09mZnNldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3h5LmdldFRpbWV6b25lT2Zmc2V0KCkqNjAwMDB9O2FnLnByb3RvdHlwZS5kaWZmPWZ1bmN0aW9uKGFpLGFsLGFoKXthaT1uZXcgYWcoYWkpO2lmKGFpPT09bnVsbCl7cmV0dXJuIG51bGx9dmFyIGFqPUVbYWxdfHxFLmRheTtpZih0eXBlb2YgYWo9PSJudW1iZXIiKXt2YXIgYWs9KHRoaXMucHJveHkuZ2V0VGltZSgpLWFpLnByb3h5LmdldFRpbWUoKSkvYWp9ZWxzZXt2YXIgYWs9YWouZGlmZih0aGlzLnByb3h5LGFpLnByb3h5KX1yZXR1cm4oYWg/YWs6TWF0aFthaz4wPyJmbG9vciI6ImNlaWwiXShhaykpfTthZy5wcm90b3R5cGUuZ2V0QWJickRheU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gYWcucmVnaW9uYWxbdGhpcy5sb2NhbGVdWyJkYXlOYW1lc1Nob3J0Il1bdGhpcy5wcm94eS5nZXREYXkoKV19O2FnLnByb3RvdHlwZS5nZXRBYmJyTW9udGhOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIGFnLnJlZ2lvbmFsW3RoaXMubG9jYWxlXVsibW9udGhOYW1lc1Nob3J0Il1bdGhpcy5wcm94eS5nZXRNb250aCgpXX07YWcucHJvdG90eXBlLmdldEFNUE09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm94eS5nZXRIb3VycygpPj0xMj8iUE0iOiJBTSJ9O2FnLnByb3RvdHlwZS5nZXRBbVBtPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJveHkuZ2V0SG91cnMoKT49MTI/InBtIjoiYW0ifTthZy5wcm90b3R5cGUuZ2V0Q2VudHVyeT1mdW5jdGlvbigpe3JldHVybiBwYXJzZUludCh0aGlzLnByb3h5LmdldEZ1bGxZZWFyKCkvMTAwLDEwKX07YWcucHJvdG90eXBlLmdldERhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm94eS5nZXREYXRlKCl9O2FnLnByb3RvdHlwZS5nZXREYXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm94eS5nZXREYXkoKX07YWcucHJvdG90eXBlLmdldERheU9mV2Vlaz1mdW5jdGlvbigpe3ZhciBhaD10aGlzLnByb3h5LmdldERheSgpO3JldHVybiBhaD09PTA/NzphaH07YWcucHJvdG90eXBlLmdldERheU9mWWVhcj1mdW5jdGlvbigpe3ZhciBhaT10aGlzLnByb3h5O3ZhciBhaD1haS1uZXcgRGF0ZSgiIithaS5nZXRGdWxsWWVhcigpKyIvMS8xIEdNVCIpO2FoKz1haS5nZXRUaW1lem9uZU9mZnNldCgpKjYwMDAwO2FpPW51bGw7cmV0dXJuIHBhcnNlSW50KGFoLzYwMDAwLzYwLzI0LDEwKSsxfTthZy5wcm90b3R5cGUuZ2V0RGF5TmFtZT1mdW5jdGlvbigpe3JldHVybiBhZy5yZWdpb25hbFt0aGlzLmxvY2FsZV1bImRheU5hbWVzIl1bdGhpcy5wcm94eS5nZXREYXkoKV19O2FnLnByb3RvdHlwZS5nZXRGdWxsV2Vla09mWWVhcj1mdW5jdGlvbigpe3ZhciBhaz10aGlzLnByb3h5O3ZhciBhaD10aGlzLmdldERheU9mWWVhcigpO3ZhciBhaj02LWFrLmdldERheSgpO3ZhciBhaT1wYXJzZUludCgoYWgrYWopLzcsMTApO3JldHVybiBhaX07YWcucHJvdG90eXBlLmdldEZ1bGxZZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJveHkuZ2V0RnVsbFllYXIoKX07YWcucHJvdG90eXBlLmdldEdtdE9mZnNldD1mdW5jdGlvbigpe3ZhciBhaD10aGlzLnByb3h5LmdldFRpbWV6b25lT2Zmc2V0KCkvNjA7dmFyIGFpPWFoPDA/IisiOiItIjthaD1NYXRoLmFicyhhaCk7cmV0dXJuIGFpK04oTWF0aC5mbG9vcihhaCksMikrIjoiK04oKGFoJTEpKjYwLDIpfTthZy5wcm90b3R5cGUuZ2V0SG91cnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm94eS5nZXRIb3VycygpfTthZy5wcm90b3R5cGUuZ2V0SG91cnMxMj1mdW5jdGlvbigpe3ZhciBhaD10aGlzLnByb3h5LmdldEhvdXJzKCk7cmV0dXJuIGFoPjEyP2FoLTEyOihhaD09MD8xMjphaCl9O2FnLnByb3RvdHlwZS5nZXRJc29XZWVrPWZ1bmN0aW9uKCl7dmFyIGFrPXRoaXMucHJveHk7dmFyIGFqPXRoaXMuZ2V0V2Vla09mWWVhcigpO3ZhciBhaD0obmV3IERhdGUoIiIrYWsuZ2V0RnVsbFllYXIoKSsiLzEvMSIpKS5nZXREYXkoKTt2YXIgYWk9YWorKGFoPjR8fGFoPD0xPzA6MSk7aWYoYWk9PTUzJiYobmV3IERhdGUoIiIrYWsuZ2V0RnVsbFllYXIoKSsiLzEyLzMxIikpLmdldERheSgpPDQpe2FpPTF9ZWxzZXtpZihhaT09PTApe2FrPW5ldyBhZyhuZXcgRGF0ZSgiIisoYWsuZ2V0RnVsbFllYXIoKS0xKSsiLzEyLzMxIikpO2FpPWFrLmdldElzb1dlZWsoKX19YWs9bnVsbDtyZXR1cm4gYWl9O2FnLnByb3RvdHlwZS5nZXRNaWxsaXNlY29uZHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm94eS5nZXRNaWxsaXNlY29uZHMoKX07YWcucHJvdG90eXBlLmdldE1pbnV0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm94eS5nZXRNaW51dGVzKCl9O2FnLnByb3RvdHlwZS5nZXRNb250aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3h5LmdldE1vbnRoKCl9O2FnLnByb3RvdHlwZS5nZXRNb250aE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gYWcucmVnaW9uYWxbdGhpcy5sb2NhbGVdWyJtb250aE5hbWVzIl1bdGhpcy5wcm94eS5nZXRNb250aCgpXX07YWcucHJvdG90eXBlLmdldE1vbnRoTnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJveHkuZ2V0TW9udGgoKSsxfTthZy5wcm90b3R5cGUuZ2V0U2Vjb25kcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3h5LmdldFNlY29uZHMoKX07YWcucHJvdG90eXBlLmdldFNob3J0WWVhcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3h5LmdldFllYXIoKSUxMDB9O2FnLnByb3RvdHlwZS5nZXRUaW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJveHkuZ2V0VGltZSgpfTthZy5wcm90b3R5cGUuZ2V0VGltZXpvbmVBYmJyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJveHkudG9TdHJpbmcoKS5yZXBsYWNlKC9eLipcKChbXildKylcKSQvLCIkMSIpfTthZy5wcm90b3R5cGUuZ2V0VGltZXpvbmVOYW1lPWZ1bmN0aW9uKCl7dmFyIGFoPS8oPzpcKCguKylcKSR8IChbQS1aXXszfSkgKS8uZXhlYyh0aGlzLnRvU3RyaW5nKCkpO3JldHVybiBhaFsxXXx8YWhbMl18fCJHTVQiK3RoaXMuZ2V0R210T2Zmc2V0KCl9O2FnLnByb3RvdHlwZS5nZXRUaW1lem9uZU9mZnNldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3h5LmdldFRpbWV6b25lT2Zmc2V0KCl9O2FnLnByb3RvdHlwZS5nZXRXZWVrT2ZZZWFyPWZ1bmN0aW9uKCl7dmFyIGFoPXRoaXMuZ2V0RGF5T2ZZZWFyKCk7dmFyIGFqPTctdGhpcy5nZXREYXlPZldlZWsoKTt2YXIgYWk9cGFyc2VJbnQoKGFoK2FqKS83LDEwKTtyZXR1cm4gYWl9O2FnLnByb3RvdHlwZS5nZXRVbml4PWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgucm91bmQodGhpcy5wcm94eS5nZXRUaW1lKCkvMTAwMCwwKX07YWcucHJvdG90eXBlLmdldFllYXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm94eS5nZXRZZWFyKCl9O2FnLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKGFoKXthaD1haHx8ImRheSI7cmV0dXJuIHRoaXMuY2xvbmUoKS5hZGQoMSxhaCl9O2FnLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOnRoaXMucHJveHk9bmV3IERhdGUoKTticmVhaztjYXNlIDE6aWYobChhcmd1bWVudHNbMF0pPT0iW29iamVjdCBPYmplY3RdIiYmYXJndW1lbnRzWzBdLl90eXBlIT0ianNEYXRlIil7dmFyIGFqPXRoaXMub3B0aW9ucz1hcmd1bWVudHNbMF07dGhpcy5zeW50YXg9YWouc3ludGF4fHx0aGlzLnN5bnRheDt0aGlzLmRlZmF1bHRDZW50dXJ5PWFqLmRlZmF1bHRDZW50dXJ5fHx0aGlzLmRlZmF1bHRDZW50dXJ5O3RoaXMucHJveHk9YWcuY3JlYXRlRGF0ZShhai5kYXRlKX1lbHNle3RoaXMucHJveHk9YWcuY3JlYXRlRGF0ZShhcmd1bWVudHNbMF0pfWJyZWFrO2RlZmF1bHQ6dmFyIGFoPVtdO2Zvcih2YXIgYWk9MDthaTxhcmd1bWVudHMubGVuZ3RoO2FpKyspe2FoLnB1c2goYXJndW1lbnRzW2FpXSl9dGhpcy5wcm94eT1uZXcgRGF0ZSgpO3RoaXMucHJveHkuc2V0RnVsbFllYXIuYXBwbHkodGhpcy5wcm94eSxhaC5zbGljZSgwLDMpKTtpZihhaC5zbGljZSgzKS5sZW5ndGgpe3RoaXMucHJveHkuc2V0SG91cnMuYXBwbHkodGhpcy5wcm94eSxhaC5zbGljZSgzKSl9YnJlYWt9cmV0dXJuIHRoaXN9O2FnLnByb3RvdHlwZS5zZXREYXRlPWZ1bmN0aW9uKGFoKXt0aGlzLnByb3h5LnNldERhdGUoYWgpO3JldHVybiB0aGlzfTthZy5wcm90b3R5cGUuc2V0RnVsbFllYXI9ZnVuY3Rpb24oKXt0aGlzLnByb3h5LnNldEZ1bGxZZWFyLmFwcGx5KHRoaXMucHJveHksYXJndW1lbnRzKTtyZXR1cm4gdGhpc307YWcucHJvdG90eXBlLnNldEhvdXJzPWZ1bmN0aW9uKCl7dGhpcy5wcm94eS5zZXRIb3Vycy5hcHBseSh0aGlzLnByb3h5LGFyZ3VtZW50cyk7cmV0dXJuIHRoaXN9O2FnLnByb3RvdHlwZS5zZXRNaWxsaXNlY29uZHM9ZnVuY3Rpb24oYWgpe3RoaXMucHJveHkuc2V0TWlsbGlzZWNvbmRzKGFoKTtyZXR1cm4gdGhpc307YWcucHJvdG90eXBlLnNldE1pbnV0ZXM9ZnVuY3Rpb24oKXt0aGlzLnByb3h5LnNldE1pbnV0ZXMuYXBwbHkodGhpcy5wcm94eSxhcmd1bWVudHMpO3JldHVybiB0aGlzfTthZy5wcm90b3R5cGUuc2V0TW9udGg9ZnVuY3Rpb24oKXt0aGlzLnByb3h5LnNldE1vbnRoLmFwcGx5KHRoaXMucHJveHksYXJndW1lbnRzKTtyZXR1cm4gdGhpc307YWcucHJvdG90eXBlLnNldFNlY29uZHM9ZnVuY3Rpb24oKXt0aGlzLnByb3h5LnNldFNlY29uZHMuYXBwbHkodGhpcy5wcm94eSxhcmd1bWVudHMpO3JldHVybiB0aGlzfTthZy5wcm90b3R5cGUuc2V0VGltZT1mdW5jdGlvbihhaCl7dGhpcy5wcm94eS5zZXRUaW1lKGFoKTtyZXR1cm4gdGhpc307YWcucHJvdG90eXBlLnNldFllYXI9ZnVuY3Rpb24oKXt0aGlzLnByb3h5LnNldFllYXIuYXBwbHkodGhpcy5wcm94eSxhcmd1bWVudHMpO3JldHVybiB0aGlzfTthZy5wcm90b3R5cGUuc3RyZnRpbWU9ZnVuY3Rpb24oYWgpe2FoPWFofHx0aGlzLmZvcm1hdFN0cmluZ3x8YWcucmVnaW9uYWxbdGhpcy5sb2NhbGVdWyJmb3JtYXRTdHJpbmciXTtyZXR1cm4gYWcuc3RyZnRpbWUodGhpcyxhaCx0aGlzLnN5bnRheCl9O2FnLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3h5LnRvU3RyaW5nKCl9O2FnLnByb3RvdHlwZS50b1ltZEludD1mdW5jdGlvbigpe3JldHVybih0aGlzLnByb3h5LmdldEZ1bGxZZWFyKCkqMTAwMDApKyh0aGlzLmdldE1vbnRoTnVtYmVyKCkqMTAwKSt0aGlzLnByb3h5LmdldERhdGUoKX07YWcucmVnaW9uYWw9e2VuOnttb250aE5hbWVzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sZGF5TmFtZXNTaG9ydDpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLGZvcm1hdFN0cmluZzoiJVktJW0tJWQgJUg6JU06JVMifSxmcjp7bW9udGhOYW1lczpbIkphbnZpZXIiLCJGw6l2cmllciIsIk1hcnMiLCJBdnJpbCIsIk1haSIsIkp1aW4iLCJKdWlsbGV0IiwiQW/Du3QiLCJTZXB0ZW1icmUiLCJPY3RvYnJlIiwiTm92ZW1icmUiLCJEw6ljZW1icmUiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGw6l2IiwiTWFyIiwiQXZyIiwiTWFpIiwiSnVuIiwiSnVsIiwiQW/DuyIsIlNlcCIsIk9jdCIsIk5vdiIsIkTDqWMiXSxkYXlOYW1lczpbIkRpbWFuY2hlIiwiTHVuZGkiLCJNYXJkaSIsIk1lcmNyZWRpIiwiSmV1ZGkiLCJWZW5kcmVkaSIsIlNhbWVkaSJdLGRheU5hbWVzU2hvcnQ6WyJEaW0iLCJMdW4iLCJNYXIiLCJNZXIiLCJKZXUiLCJWZW4iLCJTYW0iXSxmb3JtYXRTdHJpbmc6IiVZLSVtLSVkICVIOiVNOiVTIn0sZGU6e21vbnRoTmFtZXM6WyJKYW51YXIiLCJGZWJydWFyIiwiTcOkcnoiLCJBcHJpbCIsIk1haSIsIkp1bmkiLCJKdWxpIiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2t0b2JlciIsIk5vdmVtYmVyIiwiRGV6ZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNw6RyIiwiQXByIiwiTWFpIiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2t0IiwiTm92IiwiRGV6Il0sZGF5TmFtZXM6WyJTb25udGFnIiwiTW9udGFnIiwiRGllbnN0YWciLCJNaXR0d29jaCIsIkRvbm5lcnN0YWciLCJGcmVpdGFnIiwiU2Ftc3RhZyJdLGRheU5hbWVzU2hvcnQ6WyJTbyIsIk1vIiwiRGkiLCJNaSIsIkRvIiwiRnIiLCJTYSJdLGZvcm1hdFN0cmluZzoiJVktJW0tJWQgJUg6JU06JVMifSxlczp7bW9udGhOYW1lczpbIkVuZXJvIiwiRmVicmVybyIsIk1hcnpvIiwiQWJyaWwiLCJNYXlvIiwiSnVuaW8iLCJKdWxpbyIsIkFnb3N0byIsIlNlcHRpZW1icmUiLCJPY3R1YnJlIiwiTm92aWVtYnJlIiwiRGljaWVtYnJlIl0sbW9udGhOYW1lc1Nob3J0OlsiRW5lIiwiRmViIiwiTWFyIiwiQWJyIiwiTWF5IiwiSnVuIiwiSnVsIiwiQWdvIiwiU2VwIiwiT2N0IiwiTm92IiwiRGljIl0sZGF5TmFtZXM6WyJEb21pbmdvIiwiTHVuZXMiLCJNYXJ0ZXMiLCJNaSZlYWN1dGU7cmNvbGVzIiwiSnVldmVzIiwiVmllcm5lcyIsIlMmYWFjdXRlO2JhZG8iXSxkYXlOYW1lc1Nob3J0OlsiRG9tIiwiTHVuIiwiTWFyIiwiTWkmZWFjdXRlOyIsIkp1diIsIlZpZSIsIlMmYWFjdXRlO2IiXSxmb3JtYXRTdHJpbmc6IiVZLSVtLSVkICVIOiVNOiVTIn0scnU6e21vbnRoTmFtZXM6WyLQr9C90LLQsNGA0YwiLCLQpNC10LLRgNCw0LvRjCIsItCc0LDRgNGCIiwi0JDQv9GA0LXQu9GMIiwi0JzQsNC5Iiwi0JjRjtC90YwiLCLQmNGO0LvRjCIsItCQ0LLQs9GD0YHRgiIsItCh0LXQvdGC0Y/QsdGA0YwiLCLQntC60YLRj9Cx0YDRjCIsItCd0L7Rj9Cx0YDRjCIsItCU0LXQutCw0LHRgNGMIl0sbW9udGhOYW1lc1Nob3J0Olsi0K/QvdCyIiwi0KTQtdCyIiwi0JzQsNGAIiwi0JDQv9GAIiwi0JzQsNC5Iiwi0JjRjtC9Iiwi0JjRjtC7Iiwi0JDQstCzIiwi0KHQtdC9Iiwi0J7QutGCIiwi0J3QvtGPIiwi0JTQtdC6Il0sZGF5TmFtZXM6WyLQstC+0YHQutGA0LXRgdC10L3RjNC1Iiwi0L/QvtC90LXQtNC10LvRjNC90LjQuiIsItCy0YLQvtGA0L3QuNC6Iiwi0YHRgNC10LTQsCIsItGH0LXRgtCy0LXRgNCzIiwi0L/Rj9GC0L3QuNGG0LAiLCLRgdGD0LHQsdC+0YLQsCJdLGRheU5hbWVzU2hvcnQ6WyLQstGB0LoiLCLQv9C90LQiLCLQstGC0YAiLCLRgdGA0LQiLCLRh9GC0LIiLCLQv9GC0L0iLCLRgdCx0YIiXSxmb3JtYXRTdHJpbmc6IiVZLSVtLSVkICVIOiVNOiVTIn0sYXI6e21vbnRoTmFtZXM6WyLZg9in2YbZiNmGINin2YTYq9in2YbZiiIsIti02KjYp9i3Iiwi2KLYsNin2LEiLCLZhtmK2LPYp9mGIiwi2KLYsNin2LEiLCLYrdiy2YrYsdin2YYiLCLYqtmF2YjYsiIsItii2KgiLCLYo9mK2YTZiNmEIiwi2KrYtNix2YrZhiDYp9mE2KPZiNmEIiwi2KrYtNix2YrZhiDYp9mE2KvYp9mG2YoiLCLZg9in2YbZiNmGINin2YTYo9mI2YQiXSxtb250aE5hbWVzU2hvcnQ6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSxkYXlOYW1lczpbItin2YTYs9io2KoiLCLYp9mE2KPYrdivIiwi2KfZhNin2KvZhtmK2YYiLCLYp9mE2KvZhNin2KvYp9ihIiwi2KfZhNij2LHYqNi52KfYoSIsItin2YTYrtmF2YrYsyIsItin2YTYrNmF2LnYqSJdLGRheU5hbWVzU2hvcnQ6WyLYs9io2KoiLCLYo9it2K8iLCLYp9ir2YbZitmGIiwi2KvZhNin2KvYp9ihIiwi2KPYsdio2LnYp9ihIiwi2K7ZhdmK2LMiLCLYrNmF2LnYqSJdLGZvcm1hdFN0cmluZzoiJVktJW0tJWQgJUg6JU06JVMifSxwdDp7bW9udGhOYW1lczpbIkphbmVpcm8iLCJGZXZlcmVpcm8iLCJNYXImY2NlZGlsO28iLCJBYnJpbCIsIk1haW8iLCJKdW5obyIsIkp1bGhvIiwiQWdvc3RvIiwiU2V0ZW1icm8iLCJPdXR1YnJvIiwiTm92ZW1icm8iLCJEZXplbWJybyJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZldiIsIk1hciIsIkFiciIsIk1haSIsIkp1biIsIkp1bCIsIkFnbyIsIlNldCIsIk91dCIsIk5vdiIsIkRleiJdLGRheU5hbWVzOlsiRG9taW5nbyIsIlNlZ3VuZGEtZmVpcmEiLCJUZXImY2NlZGlsO2EtZmVpcmEiLCJRdWFydGEtZmVpcmEiLCJRdWludGEtZmVpcmEiLCJTZXh0YS1mZWlyYSIsIlMmYWFjdXRlO2JhZG8iXSxkYXlOYW1lc1Nob3J0OlsiRG9tIiwiU2VnIiwiVGVyIiwiUXVhIiwiUXVpIiwiU2V4IiwiUyZhYWN1dGU7YiJdLGZvcm1hdFN0cmluZzoiJVktJW0tJWQgJUg6JU06JVMifSwicHQtQlIiOnttb250aE5hbWVzOlsiSmFuZWlybyIsIkZldmVyZWlybyIsIk1hciZjY2VkaWw7byIsIkFicmlsIiwiTWFpbyIsIkp1bmhvIiwiSnVsaG8iLCJBZ29zdG8iLCJTZXRlbWJybyIsIk91dHVicm8iLCJOb3ZlbWJybyIsIkRlemVtYnJvIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmV2IiwiTWFyIiwiQWJyIiwiTWFpIiwiSnVuIiwiSnVsIiwiQWdvIiwiU2V0IiwiT3V0IiwiTm92IiwiRGV6Il0sZGF5TmFtZXM6WyJEb21pbmdvIiwiU2VndW5kYS1mZWlyYSIsIlRlciZjY2VkaWw7YS1mZWlyYSIsIlF1YXJ0YS1mZWlyYSIsIlF1aW50YS1mZWlyYSIsIlNleHRhLWZlaXJhIiwiUyZhYWN1dGU7YmFkbyJdLGRheU5hbWVzU2hvcnQ6WyJEb20iLCJTZWciLCJUZXIiLCJRdWEiLCJRdWkiLCJTZXgiLCJTJmFhY3V0ZTtiIl0sZm9ybWF0U3RyaW5nOiIlWS0lbS0lZCAlSDolTTolUyJ9LHBsOnttb250aE5hbWVzOlsiU3R5Y3plxYQiLCJMdXR5IiwiTWFyemVjIiwiS3dpZWNpZcWEIiwiTWFqIiwiQ3plcndpZWMiLCJMaXBpZWMiLCJTaWVycGllxYQiLCJXcnplc2llxYQiLCJQYcW6ZHppZXJuaWsiLCJMaXN0b3BhZCIsIkdydWR6aWXFhCJdLG1vbnRoTmFtZXNTaG9ydDpbIlN0eSIsIkx1dCIsIk1hciIsIkt3aSIsIk1haiIsIkN6ZSIsIkxpcCIsIlNpZSIsIldyeiIsIlBhxboiLCJMaXMiLCJHcnUiXSxkYXlOYW1lczpbIk5pZWR6aWVsYSIsIlBvbmllZHppYcWCZWsiLCJXdG9yZWsiLCLFmnJvZGEiLCJDendhcnRlayIsIlBpxIV0ZWsiLCJTb2JvdGEiXSxkYXlOYW1lc1Nob3J0OlsiTmkiLCJQbiIsIld0IiwixZpyIiwiQ3oiLCJQdCIsIlNiIl0sZm9ybWF0U3RyaW5nOiIlWS0lbS0lZCAlSDolTTolUyJ9LG5sOnttb250aE5hbWVzOlsiSmFudWFyaSIsIkZlYnJ1YXJpIiwiTWFhcnQiLCJBcHJpbCIsIk1laSIsIkp1bmkiLCJKdWx5IiwiQXVndXN0dXMiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1laSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9rdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOiIsIlsiWm9uZGFnIiwiTWFhbmRhZyIsIkRpbnNkYWciLCJXb2Vuc2RhZyIsIkRvbmRlcmRhZyIsIlZyaWpkYWciLCJaYXRlcmRhZyJdLGRheU5hbWVzU2hvcnQ6WyJabyIsIk1hIiwiRGkiLCJXbyIsIkRvIiwiVnIiLCJaYSJdLGZvcm1hdFN0cmluZzoiJVktJW0tJWQgJUg6JU06JVMifSxzdjp7bW9udGhOYW1lczpbImphbnVhcmkiLCJmZWJydWFyaSIsIm1hcnMiLCJhcHJpbCIsIm1haiIsImp1bmkiLCJqdWxpIiwiYXVndXN0aSIsInNlcHRlbWJlciIsIm9rdG9iZXIiLCJub3ZlbWJlciIsImRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiamFuIiwiZmViIiwibWFyIiwiYXByIiwibWFqIiwianVuIiwianVsIiwiYXVnIiwic2VwIiwib2t0Iiwibm92IiwiZGVjIl0sZGF5TmFtZXM6WyJzw7ZuZGFnIiwibcOlbmRhZyIsInRpc2RhZyIsIm9uc2RhZyIsInRvcnNkYWciLCJmcmVkYWciLCJsw7ZyZGFnIl0sZGF5TmFtZXNTaG9ydDpbInPDtm4iLCJtw6VuIiwidGlzIiwib25zIiwidG9yIiwiZnJlIiwibMO2ciJdLGZvcm1hdFN0cmluZzoiJVktJW0tJWQgJUg6JU06JVMifX07YWcucmVnaW9uYWxbImVuLVVTIl09YWcucmVnaW9uYWxbImVuLUdCIl09YWcucmVnaW9uYWwuZW47YWcucmVnaW9uYWwuZ2V0TG9jYWxlPWZ1bmN0aW9uKCl7dmFyIGFoPWFnLmNvbmZpZy5kZWZhdWx0TG9jYWxlO2lmKGRvY3VtZW50JiZkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpJiZkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdLmxhbmcpe2FoPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF0ubGFuZztpZighYWcucmVnaW9uYWwuaGFzT3duUHJvcGVydHkoYWgpKXthaD1hZy5jb25maWcuZGVmYXVsdExvY2FsZX19cmV0dXJuIGFofTt2YXIgQz0yNCo2MCo2MCoxMDAwO3ZhciBOPWZ1bmN0aW9uKGFoLGFrKXthaD1TdHJpbmcoYWgpO3ZhciBhaT1hay1haC5sZW5ndGg7dmFyIGFqPVN0cmluZyhNYXRoLnBvdygxMCxhaSkpLnNsaWNlKDEpO3JldHVybiBhai5jb25jYXQoYWgpfTt2YXIgRT17bWlsbGlzZWNvbmQ6MSxzZWNvbmQ6MTAwMCxtaW51dGU6NjAqMTAwMCxob3VyOjYwKjYwKjEwMDAsZGF5OkMsd2Vlazo3KkMsbW9udGg6e2FkZDpmdW5jdGlvbihhaixhaCl7RS55ZWFyLmFkZChhaixNYXRoW2FoPjA/ImZsb29yIjoiY2VpbCJdKGFoLzEyKSk7dmFyIGFpPWFqLmdldE1vbnRoKCkrKGFoJTEyKTtpZihhaT09MTIpe2FpPTA7YWouc2V0WWVhcihhai5nZXRGdWxsWWVhcigpKzEpfWVsc2V7aWYoYWk9PS0xKXthaT0xMTthai5zZXRZZWFyKGFqLmdldEZ1bGxZZWFyKCktMSl9fWFqLnNldE1vbnRoKGFpKX0sZGlmZjpmdW5jdGlvbihhbCxhail7dmFyIGFoPWFsLmdldEZ1bGxZZWFyKCktYWouZ2V0RnVsbFllYXIoKTt2YXIgYWk9YWwuZ2V0TW9udGgoKS1hai5nZXRNb250aCgpKyhhaCoxMik7dmFyIGFrPWFsLmdldERhdGUoKS1hai5nZXREYXRlKCk7cmV0dXJuIGFpKyhhay8zMCl9fSx5ZWFyOnthZGQ6ZnVuY3Rpb24oYWksYWgpe2FpLnNldFllYXIoYWkuZ2V0RnVsbFllYXIoKStNYXRoW2FoPjA/ImZsb29yIjoiY2VpbCJdKGFoKSl9LGRpZmY6ZnVuY3Rpb24oYWksYWgpe3JldHVybiBFLm1vbnRoLmRpZmYoYWksYWgpLzEyfX19O2Zvcih2YXIgWSBpbiBFKXtpZihZLnN1YnN0cmluZyhZLmxlbmd0aC0xKSE9InMiKXtFW1krInMiXT1FW1ldfX12YXIgSD1mdW5jdGlvbihhbCxhayxhaSl7aWYoYWcuZm9ybWF0c1thaV1bInNob3J0Y3V0cyJdW2FrXSl7cmV0dXJuIGFnLnN0cmZ0aW1lKGFsLGFnLmZvcm1hdHNbYWldWyJzaG9ydGN1dHMiXVtha10sYWkpfWVsc2V7dmFyIGFoPShhZy5mb3JtYXRzW2FpXVsiY29kZXMiXVtha118fCIiKS5zcGxpdCgiLiIpO3ZhciBhaj1hbFsiZ2V0IithaFswXV0/YWxbImdldCIrYWhbMF1dKCk6IiI7aWYoYWhbMV0pe2FqPU4oYWosYWhbMV0pfXJldHVybiBhan19O2FnLnN0cmZ0aW1lPWZ1bmN0aW9uKGFuLGFrLGFqLGFvKXt2YXIgYWk9InBlcmwiO3ZhciBhbT1hZy5yZWdpb25hbC5nZXRMb2NhbGUoKTtpZihhaiYmYWcuZm9ybWF0cy5oYXNPd25Qcm9wZXJ0eShhaikpe2FpPWFqfWVsc2V7aWYoYWomJmFnLnJlZ2lvbmFsLmhhc093blByb3BlcnR5KGFqKSl7YW09YWp9fWlmKGFvJiZhZy5mb3JtYXRzLmhhc093blByb3BlcnR5KGFvKSl7YWk9YW99ZWxzZXtpZihhbyYmYWcucmVnaW9uYWwuaGFzT3duUHJvcGVydHkoYW8pKXthbT1hb319aWYobChhbikhPSJbb2JqZWN0IE9iamVjdF0ifHxhbi5fdHlwZSE9ImpzRGF0ZSIpe2FuPW5ldyBhZyhhbik7YW4ubG9jYWxlPWFtfWlmKCFhayl7YWs9YW4uZm9ybWF0U3RyaW5nfHxhZy5yZWdpb25hbFthbV1bImZvcm1hdFN0cmluZyJdfXZhciBhaD1ha3x8IiVZLSVtLSVkIixhcD0iIixhbDt3aGlsZShhaC5sZW5ndGg+MCl7aWYoYWw9YWgubWF0Y2goYWcuZm9ybWF0c1thaV0uY29kZXMubWF0Y2hlcikpe2FwKz1haC5zbGljZSgwLGFsLmluZGV4KTthcCs9KGFsWzFdfHwiIikrSChhbixhbFsyXSxhaSk7YWg9YWguc2xpY2UoYWwuaW5kZXgrYWxbMF0ubGVuZ3RoKX1lbHNle2FwKz1haDthaD0iIn19cmV0dXJuIGFwfTthZy5mb3JtYXRzPXtJU086IiVZLSVtLSVkVCVIOiVNOiVTLiVOJUciLFNRTDoiJVktJW0tJWQgJUg6JU06JVMifTthZy5mb3JtYXRzLnBlcmw9e2NvZGVzOnttYXRjaGVyOi8oKSUoIz8oJXxbYS16XSkpL2ksWToiRnVsbFllYXIiLHk6IlNob3J0WWVhci4yIixtOiJNb250aE51bWJlci4yIiwiI20iOiJNb250aE51bWJlciIsQjoiTW9udGhOYW1lIixiOiJBYmJyTW9udGhOYW1lIixkOiJEYXRlLjIiLCIjZCI6IkRhdGUiLGU6IkRhdGUiLEE6IkRheU5hbWUiLGE6IkFiYnJEYXlOYW1lIix3OiJEYXkiLEg6IkhvdXJzLjIiLCIjSCI6IkhvdXJzIixJOiJIb3VyczEyLjIiLCIjSSI6IkhvdXJzMTIiLHA6IkFNUE0iLE06Ik1pbnV0ZXMuMiIsIiNNIjoiTWludXRlcyIsUzoiU2Vjb25kcy4yIiwiI1MiOiJTZWNvbmRzIixzOiJVbml4IixOOiJNaWxsaXNlY29uZHMuMyIsIiNOIjoiTWlsbGlzZWNvbmRzIixPOiJUaW1lem9uZU9mZnNldCIsWjoiVGltZXpvbmVOYW1lIixHOiJHbXRPZmZzZXQifSxzaG9ydGN1dHM6e0Y6IiVZLSVtLSVkIixUOiIlSDolTTolUyIsWDoiJUg6JU06JVMiLHg6IiVtLyVkLyV5IixEOiIlbS8lZC8leSIsIiNjIjoiJWEgJWIgJWUgJUg6JU06JVMgJVkiLHY6IiVlLSViLSVZIixSOiIlSDolTSIscjoiJUk6JU06JVMgJXAiLHQ6Ilx0IixuOiJcbiIsIiUiOiIlIn19O2FnLmZvcm1hdHMucGhwPXtjb2Rlczp7bWF0Y2hlcjovKCklKCglfFthLXpdKSkvaSxhOiJBYmJyRGF5TmFtZSIsQToiRGF5TmFtZSIsZDoiRGF0ZS4yIixlOiJEYXRlIixqOiJEYXlPZlllYXIuMyIsdToiRGF5T2ZXZWVrIix3OiJEYXkiLFU6IkZ1bGxXZWVrT2ZZZWFyLjIiLFY6Iklzb1dlZWsuMiIsVzoiV2Vla09mWWVhci4yIixiOiJBYmJyTW9udGhOYW1lIixCOiJNb250aE5hbWUiLG06Ik1vbnRoTnVtYmVyLjIiLGg6IkFiYnJNb250aE5hbWUiLEM6IkNlbnR1cnkuMiIseToiU2hvcnRZZWFyLjIiLFk6IkZ1bGxZZWFyIixIOiJIb3Vycy4yIixJOiJIb3VyczEyLjIiLGw6IkhvdXJzMTIiLHA6IkFNUE0iLFA6IkFtUG0iLE06Ik1pbnV0ZXMuMiIsUzoiU2Vjb25kcy4yIixzOiJVbml4IixPOiJUaW1lem9uZU9mZnNldCIsejoiR210T2Zmc2V0IixaOiJUaW1lem9uZUFiYnIifSxzaG9ydGN1dHM6e0Q6IiVtLyVkLyV5IixGOiIlWS0lbS0lZCIsVDoiJUg6JU06JVMiLFg6IiVIOiVNOiVTIix4OiIlbS8lZC8leSIsUjoiJUg6JU0iLHI6IiVJOiVNOiVTICVwIix0OiJcdCIsbjoiXG4iLCIlIjoiJSJ9fTthZy5jcmVhdGVEYXRlPWZ1bmN0aW9uKGFqKXtpZihhaj09bnVsbCl7cmV0dXJuIG5ldyBEYXRlKCl9aWYoYWogaW5zdGFuY2VvZiBEYXRlKXtyZXR1cm4gYWp9aWYodHlwZW9mIGFqPT0ibnVtYmVyIil7cmV0dXJuIG5ldyBEYXRlKGFqKX12YXIgYW89U3RyaW5nKGFqKS5yZXBsYWNlKC9eXHMqKC4rKVxzKiQvZywiJDEiKTthbz1hby5yZXBsYWNlKC9eKFswLTldezEsNH0pLShbMC05XXsxLDJ9KS0oWzAtOV17MSw0fSkvLCIkMS8kMi8kMyIpO2FvPWFvLnJlcGxhY2UoL14oM1swMV18WzAtMl0/XGQpWy1cL10oW2Etel17Myx9KVstXC9dKFxkezR9KS9pLCIkMSAkMiAkMyIpO3ZhciBhbj1hby5tYXRjaCgvXigzWzAxXXxbMC0yXT9cZClbLVwvXShbYS16XXszLH0pWy1cL10oXGR7Mn0pXEQqL2kpO2lmKGFuJiZhbi5sZW5ndGg+Myl7dmFyIGF0PXBhcnNlRmxvYXQoYW5bM10pO3ZhciBhbT1hZy5jb25maWcuZGVmYXVsdENlbnR1cnkrYXQ7YW09U3RyaW5nKGFtKTthbz1hby5yZXBsYWNlKC9eKDNbMDFdfFswLTJdP1xkKVstXC9dKFthLXpdezMsfSlbLVwvXShcZHsyfSlcRCovaSxhblsxXSsiICIrYW5bMl0rIiAiK2FtKX1hbj1hby5tYXRjaCgvXihbMC05XXsxLDJ9KVstXC9dKFswLTldezEsMn0pWy1cL10oWzAtOV17MSwyfSlbXjAtOV0vKTtmdW5jdGlvbiBhcihheCxhdyl7dmFyIGFDPXBhcnNlRmxvYXQoYXdbMV0pO3ZhciBhQj1wYXJzZUZsb2F0KGF3WzJdKTt2YXIgYUE9cGFyc2VGbG9hdChhd1szXSk7dmFyIGF6PWFnLmNvbmZpZy5kZWZhdWx0Q2VudHVyeTt2YXIgYXYsYXUsYUQsYXk7aWYoYUM+MzEpe2F1PWFBO2FEPWFCO2F2PWF6K2FDfWVsc2V7YXU9YUI7YUQ9YUM7YXY9YXorYUF9YXk9YUQrIi8iK2F1KyIvIithdjtyZXR1cm4gYXgucmVwbGFjZSgvXihbMC05XXsxLDJ9KVstXC9dKFswLTldezEsMn0pWy1cL10oWzAtOV17MSwyfSkvLGF5KX1pZihhbiYmYW4ubGVuZ3RoPjMpe2FvPWFyKGFvLGFuKX12YXIgYW49YW8ubWF0Y2goL14oWzAtOV17MSwyfSlbLVwvXShbMC05XXsxLDJ9KVstXC9dKFswLTldezEsMn0pJC8pO2lmKGFuJiZhbi5sZW5ndGg+Myl7YW89YXIoYW8sYW4pfXZhciBhbD0wO3ZhciBhaT1hZy5tYXRjaGVycy5sZW5ndGg7dmFyIGFxLGFoLGFwPWFvLGFrO3doaWxlKGFsPGFpKXthaD1EYXRlLnBhcnNlKGFwKTtpZighaXNOYU4oYWgpKXtyZXR1cm4gbmV3IERhdGUoYWgpfWFxPWFnLm1hdGNoZXJzW2FsXTtpZih0eXBlb2YgYXE9PSJmdW5jdGlvbiIpe2FrPWFxLmNhbGwoYWcsYXApO2lmKGFrIGluc3RhbmNlb2YgRGF0ZSl7cmV0dXJuIGFrfX1lbHNle2FwPWFvLnJlcGxhY2UoYXFbMF0sYXFbMV0pfWFsKyt9cmV0dXJuIE5hTn07YWcuZGF5c0luTW9udGg9ZnVuY3Rpb24oYWgsYWkpe2lmKGFpPT0yKXtyZXR1cm4gbmV3IERhdGUoYWgsMSwyOSkuZ2V0RGF0ZSgpPT0yOT8yOToyOH1yZXR1cm5bdSwzMSx1LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXVthaV19O2FnLm1hdGNoZXJzPVtbLygzWzAxXXxbMC0yXVxkKVxzKlwuXHMqKDFbMC0yXXwwXGQpXHMqXC5ccyooWzEtOV1cZHszfSkvLCIkMi8kMS8kMyJdLFsvKFsxLTldXGR7M30pXHMqLVxzKigxWzAtMl18MFxkKVxzKi1ccyooM1swMV18WzAtMl1cZCkvLCIkMi8kMy8kMSJdLGZ1bmN0aW9uKGFrKXt2YXIgYWk9YWsubWF0Y2goL14oPzooLispXHMrKT8oWzAxMl0/XGQpKD86XHMqXDpccyooXGRcZCkpPyg/OlxzKlw6XHMqKFxkXGQoXC5cZCopPykpP1xzKihhbXxwbSk/XHMqJC9pKTtpZihhaSl7aWYoYWlbMV0pe3ZhciBhaj10aGlzLmNyZWF0ZURhdGUoYWlbMV0pO2lmKGlzTmFOKGFqKSl7cmV0dXJufX1lbHNle3ZhciBhaj1uZXcgRGF0ZSgpO2FqLnNldE1pbGxpc2Vjb25kcygwKX12YXIgYWg9cGFyc2VGbG9hdChhaVsyXSk7aWYoYWlbNl0pe2FoPWFpWzZdLnRvTG93ZXJDYXNlKCk9PSJhbSI/KGFoPT0xMj8wOmFoKTooYWg9PTEyPzEyOmFoKzEyKX1hai5zZXRIb3VycyhhaCxwYXJzZUludChhaVszXXx8MCwxMCkscGFyc2VJbnQoYWlbNF18fDAsMTApLCgocGFyc2VGbG9hdChhaVs1XXx8MCkpfHwwKSoxMDAwKTtyZXR1cm4gYWp9ZWxzZXtyZXR1cm4gYWt9fSxmdW5jdGlvbihhayl7dmFyIGFpPWFrLm1hdGNoKC9eKD86KC4rKSlbVHxccytdKFswMTJdXGQpKD86XDooXGRcZCkpKD86XDooXGRcZCkpKD86XC5cZCspKFtcK1wtXVxkXGRcOlxkXGQpJC9pKTtpZihhaSl7aWYoYWlbMV0pe3ZhciBhaj10aGlzLmNyZWF0ZURhdGUoYWlbMV0pO2lmKGlzTmFOKGFqKSl7cmV0dXJufX1lbHNle3ZhciBhaj1uZXcgRGF0ZSgpO2FqLnNldE1pbGxpc2Vjb25kcygwKX12YXIgYWg9cGFyc2VGbG9hdChhaVsyXSk7YWouc2V0SG91cnMoYWgscGFyc2VJbnQoYWlbM10sMTApLHBhcnNlSW50KGFpWzRdLDEwKSxwYXJzZUZsb2F0KGFpWzVdKSoxMDAwKTtyZXR1cm4gYWp9ZWxzZXtyZXR1cm4gYWt9fSxmdW5jdGlvbihhbCl7dmFyIGFqPWFsLm1hdGNoKC9eKFswLTNdP1xkKVxzKlstXC8uXHNdezF9XHMqKFthLXpBLVpdezMsOX0pXHMqWy1cLy5cc117MX1ccyooWzAtM10/XGQpJC8pO2lmKGFqKXt2YXIgYWs9bmV3IERhdGUoKTt2YXIgYW09YWcuY29uZmlnLmRlZmF1bHRDZW50dXJ5O3ZhciBhbz1wYXJzZUZsb2F0KGFqWzFdKTt2YXIgYW49cGFyc2VGbG9hdChhalszXSk7dmFyIGFpLGFoLGFwO2lmKGFvPjMxKXthaD1hbjthaT1hbSthb31lbHNle2FoPWFvO2FpPWFtK2FufXZhciBhcD1hYihhalsyXSxhZy5yZWdpb25hbFthZy5yZWdpb25hbC5nZXRMb2NhbGUoKV1bIm1vbnRoTmFtZXNTaG9ydCJdKTtpZihhcD09LTEpe2FwPWFiKGFqWzJdLGFnLnJlZ2lvbmFsW2FnLnJlZ2lvbmFsLmdldExvY2FsZSgpXVsibW9udGhOYW1lcyJdKX1hay5zZXRGdWxsWWVhcihhaSxhcCxhaCk7YWsuc2V0SG91cnMoMCwwLDAsMCk7cmV0dXJuIGFrfWVsc2V7cmV0dXJuIGFsfX1dO2Z1bmN0aW9uIGFiKGFqLGFrKXtpZihhay5pbmRleE9mKXtyZXR1cm4gYWsuaW5kZXhPZihhail9Zm9yKHZhciBhaD0wLGFpPWFrLmxlbmd0aDthaDxhaTthaCsrKXtpZihha1thaF09PT1hail7cmV0dXJuIGFofX1yZXR1cm4gLTF9ZnVuY3Rpb24gbChhaCl7aWYoYWg9PT1udWxsKXtyZXR1cm4iW29iamVjdCBOdWxsXSJ9cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhaCl9TC5qc0RhdGU9YWc7TC5qcXBsb3Quc3ByaW50Zj1mdW5jdGlvbigpe2Z1bmN0aW9uIGFuKGF1LGFwLGFxLGF0KXt2YXIgYXI9KGF1Lmxlbmd0aD49YXApPyIiOkFycmF5KDErYXAtYXUubGVuZ3RoPj4+MCkuam9pbihhcSk7cmV0dXJuIGF0P2F1K2FyOmFyK2F1fWZ1bmN0aW9uIGFrKGFyKXt2YXIgYXE9bmV3IFN0cmluZyhhcik7Zm9yKHZhciBhcD0xMDthcD4wO2FwLS0pe2lmKGFxPT0oYXE9YXEucmVwbGFjZSgvXihcZCspKFxkezN9KS8sIiQxIitMLmpxcGxvdC5zcHJpbnRmLnRob3VzYW5kc1NlcGFyYXRvcisiJDIiKSkpe2JyZWFrfX1yZXR1cm4gYXF9ZnVuY3Rpb24gYWooYXYsYXUsYXgsYXIsYXQsYXEpe3ZhciBhdz1hci1hdi5sZW5ndGg7aWYoYXc+MCl7dmFyIGFwPSIgIjtpZihhcSl7YXA9IiZuYnNwOyJ9aWYoYXh8fCFhdCl7YXY9YW4oYXYsYXIsYXAsYXgpfWVsc2V7YXY9YXYuc2xpY2UoMCxhdS5sZW5ndGgpK2FuKCIiLGF3LCIwIix0cnVlKSthdi5zbGljZShhdS5sZW5ndGgpfX1yZXR1cm4gYXZ9ZnVuY3Rpb24gYW8oYXksYXEsYXcsYXIsYXAsYXYsYXgsYXUpe3ZhciBhdD1heT4+PjA7YXc9YXcmJmF0JiZ7IjIiOiIwYiIsIjgiOiIwIiwiMTYiOiIweCJ9W2FxXXx8IiI7YXk9YXcrYW4oYXQudG9TdHJpbmcoYXEpLGF2fHwwLCIwIixmYWxzZSk7cmV0dXJuIGFqKGF5LGF3LGFyLGFwLGF4LGF1KX1mdW5jdGlvbiBhaChhdSxhdixhcixhcCxhdCxhcSl7aWYoYXAhPW51bGwpe2F1PWF1LnNsaWNlKDAsYXApfXJldHVybiBhaihhdSwiIixhdixhcixhdCxhcSl9dmFyIGFpPWFyZ3VtZW50cyxhbD0wLGFtPWFpW2FsKytdO3JldHVybiBhbS5yZXBsYWNlKEwuanFwbG90LnNwcmludGYucmVnZXgsZnVuY3Rpb24oYU0sYXgsYXksYUIsYU8sYUosYXYpe2lmKGFNPT0iJSUiKXtyZXR1cm4iJSJ9dmFyIGFEPWZhbHNlLGF6PSIiLGFBPWZhbHNlLGFMPWZhbHNlLGF3PWZhbHNlLGF1PWZhbHNlO2Zvcih2YXIgYUk9MDtheSYmYUk8YXkubGVuZ3RoO2FJKyspe3N3aXRjaChheS5jaGFyQXQoYUkpKXtjYXNlIiAiOmF6PSIgIjticmVhaztjYXNlIisiOmF6PSIrIjticmVhaztjYXNlIi0iOmFEPXRydWU7YnJlYWs7Y2FzZSIwIjphQT10cnVlO2JyZWFrO2Nhc2UiIyI6YUw9dHJ1ZTticmVhaztjYXNlIiYiOmF3PXRydWU7YnJlYWs7Y2FzZSInIjphdT10cnVlO2JyZWFrfX1pZighYUIpe2FCPTB9ZWxzZXtpZihhQj09IioiKXthQj0rYWlbYWwrK119ZWxzZXtpZihhQi5jaGFyQXQoMCk9PSIqIil7YUI9K2FpW2FCLnNsaWNlKDEsLTEpXX1lbHNle2FCPSthQn19fWlmKGFCPDApe2FCPS1hQjthRD10cnVlfWlmKCFpc0Zpbml0ZShhQikpe3Rocm93IG5ldyBFcnJvcigiJC5qcXBsb3Quc3ByaW50ZjogKG1pbmltdW0tKXdpZHRoIG11c3QgYmUgZmluaXRlIil9aWYoIWFKKXthSj0iZkZlRSIuaW5kZXhPZihhdik+LTE/NjooYXY9PSJkIik/MDp2b2lkICgwKX1lbHNle2lmKGFKPT0iKiIpe2FKPSthaVthbCsrXX1lbHNle2lmKGFKLmNoYXJBdCgwKT09IioiKXthSj0rYWlbYUouc2xpY2UoMSwtMSldfWVsc2V7YUo9K2FKfX19dmFyIGFGPWF4P2FpW2F4LnNsaWNlKDAsLTEpXTphaVthbCsrXTtzd2l0Y2goYXYpe2Nhc2UicyI6aWYoYUY9PW51bGwpe3JldHVybiIifXJldHVybiBhaChTdHJpbmcoYUYpLGFELGFCLGFKLGFBLGF3KTtjYXNlImMiOnJldHVybiBhaChTdHJpbmcuZnJvbUNoYXJDb2RlKCthRiksYUQsYUIsYUosYUEsYXcpO2Nhc2UiYiI6cmV0dXJuIGFvKGFGLDIsYUwsYUQsYUIsYUosYUEsYXcpO2Nhc2UibyI6cmV0dXJuIGFvKGFGLDgsYUwsYUQsYUIsYUosYUEsYXcpO2Nhc2UieCI6cmV0dXJuIGFvKGFGLDE2LGFMLGFELGFCLGFKLGFBLGF3KTtjYXNlIlgiOnJldHVybiBhbyhhRiwxNixhTCxhRCxhQixhSixhQSxhdykudG9VcHBlckNhc2UoKTtjYXNlInUiOnJldHVybiBhbyhhRiwxMCxhTCxhRCxhQixhSixhQSxhdyk7Y2FzZSJpIjp2YXIgYXI9cGFyc2VJbnQoK2FGLDEwKTtpZihpc05hTihhcikpe3JldHVybiIifXZhciBhSD1hcjwwPyItIjphejt2YXIgYUs9YXU/YWsoU3RyaW5nKE1hdGguYWJzKGFyKSkpOlN0cmluZyhNYXRoLmFicyhhcikpO2FGPWFIK2FuKGFLLGFKLCIwIixmYWxzZSk7cmV0dXJuIGFqKGFGLGFILGFELGFCLGFBLGF3KTtjYXNlImQiOnZhciBhcj1NYXRoLnJvdW5kKCthRik7aWYoaXNOYU4oYXIpKXtyZXR1cm4iIn12YXIgYUg9YXI8MD8iLSI6YXo7dmFyIGFLPWF1P2FrKFN0cmluZyhNYXRoLmFicyhhcikpKTpTdHJpbmcoTWF0aC5hYnMoYXIpKTthRj1hSCthbihhSyxhSiwiMCIsZmFsc2UpO3JldHVybiBhaihhRixhSCxhRCxhQixhQSxhdyk7Y2FzZSJlIjpjYXNlIkUiOmNhc2UiZiI6Y2FzZSJGIjpjYXNlImciOmNhc2UiRyI6dmFyIGFyPSthRjtpZihpc05hTihhcikpe3JldHVybiIifXZhciBhSD1hcjwwPyItIjphejt2YXIgYXQ9WyJ0b0V4cG9uZW50aWFsIiwidG9GaXhlZCIsInRvUHJlY2lzaW9uIl1bImVmZyIuaW5kZXhPZihhdi50b0xvd2VyQ2FzZSgpKV07dmFyIGFOPVsidG9TdHJpbmciLCJ0b1VwcGVyQ2FzZSJdWyJlRWZGZ0ciLmluZGV4T2YoYXYpJTJdO3ZhciBhSz1NYXRoLmFicyhhcilbYXRdKGFKKTt2YXIgYUU9YUsudG9TdHJpbmcoKS5zcGxpdCgiLiIpO2FFWzBdPWF1P2FrKGFFWzBdKTphRVswXTthSz1hRS5qb2luKEwuanFwbG90LnNwcmludGYuZGVjaW1hbE1hcmspO2FGPWFIK2FLO3ZhciBhQz1haihhRixhSCxhRCxhQixhQSxhdylbYU5dKCk7cmV0dXJuIGFDO2Nhc2UicCI6Y2FzZSJQIjp2YXIgYXI9K2FGO2lmKGlzTmFOKGFyKSl7cmV0dXJuIiJ9dmFyIGFIPWFyPDA/Ii0iOmF6O3ZhciBhRT1TdHJpbmcoTnVtYmVyKE1hdGguYWJzKGFyKSkudG9FeHBvbmVudGlhbCgpKS5zcGxpdCgvZXxFLyk7dmFyIGFxPShhRVswXS5pbmRleE9mKCIuIikhPS0xKT9hRVswXS5sZW5ndGgtMTpTdHJpbmcoYXIpLmxlbmd0aDt2YXIgYUc9KGFFWzFdPDApPy1hRVsxXS0xOjA7aWYoTWF0aC5hYnMoYXIpPDEpe2lmKGFxK2FHPD1hSil7YUY9YUgrTWF0aC5hYnMoYXIpLnRvUHJlY2lzaW9uKGFxKX1lbHNle2lmKGFxPD1hSi0xKXthRj1hSCtNYXRoLmFicyhhcikudG9FeHBvbmVudGlhbChhcS0xKX1lbHNle2FGPWFIK01hdGguYWJzKGFyKS50b0V4cG9uZW50aWFsKGFKLTEpfX19ZWxzZXt2YXIgYXA9KGFxPD1hSik/YXE6YUo7YUY9YUgrTWF0aC5hYnMoYXIpLnRvUHJlY2lzaW9uKGFwKX12YXIgYU49WyJ0b1N0cmluZyIsInRvVXBwZXJDYXNlIl1bInBQIi5pbmRleE9mKGF2KSUyXTtyZXR1cm4gYWooYUYsYUgsYUQsYUIsYUEsYXcpW2FOXSgpO2Nhc2UibiI6cmV0dXJuIiI7ZGVmYXVsdDpyZXR1cm4gYU19fSl9O0wuanFwbG90LnNwcmludGYudGhvdXNhbmRzU2VwYXJhdG9yPSIsIjtMLmpxcGxvdC5zcHJpbnRmLmRlY2ltYWxNYXJrPSIuIjtMLmpxcGxvdC5zcHJpbnRmLnJlZ2V4PS8lJXwlKFxkK1wkKT8oWy0rIzAmXCcgXSopKFwqXGQrXCR8XCp8XGQrKT8oXC4oXCpcZCtcJHxcKnxcZCspKT8oW25Bc2Nib3hYdWlkZmVncEVHUF0pL2c7TC5qcXBsb3QuZ2V0U2lnbmlmaWNhbnRGaWd1cmVzPWZ1bmN0aW9uKGFsKXt2YXIgYW49U3RyaW5nKE51bWJlcihNYXRoLmFicyhhbCkpLnRvRXhwb25lbnRpYWwoKSkuc3BsaXQoL2V8RS8pO3ZhciBhbT0oYW5bMF0uaW5kZXhPZigiLiIpIT0tMSk/YW5bMF0ubGVuZ3RoLTE6YW5bMF0ubGVuZ3RoO3ZhciBhaT0oYW5bMV08MCk/LWFuWzFdLTE6MDt2YXIgYWg9cGFyc2VJbnQoYW5bMV0sMTApO3ZhciBhaj0oYWgrMT4wKT9haCsxOjA7dmFyIGFrPShhbTw9YWopPzA6YW0tYWgtMTtyZXR1cm57c2lnbmlmaWNhbnREaWdpdHM6YW0sZGlnaXRzTGVmdDphaixkaWdpdHNSaWdodDphayx6ZXJvczphaSxleHBvbmVudDphaH19O0wuanFwbG90LmdldFByZWNpc2lvbj1mdW5jdGlvbihhaCl7cmV0dXJuIEwuanFwbG90LmdldFNpZ25pZmljYW50RmlndXJlcyhhaCkuZGlnaXRzUmlnaHR9O3ZhciBYPUwudWlCYWNrQ29tcGF0IT09ZmFsc2U7TC5qcXBsb3QuZWZmZWN0cz17ZWZmZWN0Ont9fTt2YXIgbT0ianFwbG90LnN0b3JhZ2UuIjtMLmV4dGVuZChMLmpxcGxvdC5lZmZlY3RzLHt2ZXJzaW9uOiIxLjlwcmUiLHNhdmU6ZnVuY3Rpb24oYWksYWope2Zvcih2YXIgYWg9MDthaDxhai5sZW5ndGg7YWgrKyl7aWYoYWpbYWhdIT09bnVsbCl7YWkuZGF0YShtK2FqW2FoXSxhaVswXS5zdHlsZVthalthaF1dKX19fSxyZXN0b3JlOmZ1bmN0aW9uKGFpLGFqKXtmb3IodmFyIGFoPTA7YWg8YWoubGVuZ3RoO2FoKyspe2lmKGFqW2FoXSE9PW51bGwpe2FpLmNzcyhhalthaF0sYWkuZGF0YShtK2FqW2FoXSkpfX19LHNldE1vZGU6ZnVuY3Rpb24oYWgsYWkpe2lmKGFpPT09InRvZ2dsZSIpe2FpPWFoLmlzKCI6aGlkZGVuIik/InNob3ciOiJoaWRlIn1yZXR1cm4gYWl9LGNyZWF0ZVdyYXBwZXI6ZnVuY3Rpb24oYWkpe2lmKGFpLnBhcmVudCgpLmlzKCIudWktZWZmZWN0cy13cmFwcGVyIikpe3JldHVybiBhaS5wYXJlbnQoKX12YXIgYWo9e3dpZHRoOmFpLm91dGVyV2lkdGgodHJ1ZSksaGVpZ2h0OmFpLm91dGVySGVpZ2h0KHRydWUpLCJmbG9hdCI6YWkuY3NzKCJmbG9hdCIpfSxhbD1MKCI8ZGl2PjwvZGl2PiIpLmFkZENsYXNzKCJ1aS1lZmZlY3RzLXdyYXBwZXIiKS5jc3Moe2ZvbnRTaXplOiIxMDAlIixiYWNrZ3JvdW5kOiJ0cmFuc3BhcmVudCIsYm9yZGVyOiJub25lIixtYXJnaW46MCxwYWRkaW5nOjB9KSxhaD17d2lkdGg6YWkud2lkdGgoKSxoZWlnaHQ6YWkuaGVpZ2h0KCl9LGFrPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7YWkud3JhcChhbCk7aWYoYWlbMF09PT1ha3x8TC5jb250YWlucyhhaVswXSxhaykpe0woYWspLmZvY3VzKCl9YWw9YWkucGFyZW50KCk7aWYoYWkuY3NzKCJwb3NpdGlvbiIpPT09InN0YXRpYyIpe2FsLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIn0pO2FpLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIn0pfWVsc2V7TC5leHRlbmQoYWose3Bvc2l0aW9uOmFpLmNzcygicG9zaXRpb24iKSx6SW5kZXg6YWkuY3NzKCJ6LWluZGV4Iil9KTtMLmVhY2goWyJ0b3AiLCJsZWZ0IiwiYm90dG9tIiwicmlnaHQiXSxmdW5jdGlvbihhbSxhbil7YWpbYW5dPWFpLmNzcyhhbik7aWYoaXNOYU4ocGFyc2VJbnQoYWpbYW5dLDEwKSkpe2FqW2FuXT0iYXV0byJ9fSk7YWkuY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUiLHRvcDowLGxlZnQ6MCxyaWdodDoiYXV0byIsYm90dG9tOiJhdXRvIn0pfWFpLmNzcyhhaCk7cmV0dXJuIGFsLmNzcyhhaikuc2hvdygpfSxyZW1vdmVXcmFwcGVyOmZ1bmN0aW9uKGFoKXt2YXIgYWk9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtpZihhaC5wYXJlbnQoKS5pcygiLnVpLWVmZmVjdHMtd3JhcHBlciIpKXthaC5wYXJlbnQoKS5yZXBsYWNlV2l0aChhaCk7aWYoYWhbMF09PT1haXx8TC5jb250YWlucyhhaFswXSxhaSkpe0woYWkpLmZvY3VzKCl9fXJldHVybiBhaH19KTtmdW5jdGlvbiBqKGFpLGFoLGFqLGFrKXtpZihMLmlzUGxhaW5PYmplY3QoYWkpKXtyZXR1cm4gYWl9YWk9e2VmZmVjdDphaX07aWYoYWg9PT11KXthaD17fX1pZihMLmlzRnVuY3Rpb24oYWgpKXthaz1haDthaj1udWxsO2FoPXt9fWlmKEwudHlwZShhaCk9PT0ibnVtYmVyInx8TC5meC5zcGVlZHNbYWhdKXthaz1hajthaj1haDthaD17fX1pZihMLmlzRnVuY3Rpb24oYWopKXthaz1hajthaj1udWxsfWlmKGFoKXtMLmV4dGVuZChhaSxhaCl9YWo9YWp8fGFoLmR1cmF0aW9uO2FpLmR1cmF0aW9uPUwuZngub2ZmPzA6dHlwZW9mIGFqPT09Im51bWJlciI/YWo6YWogaW4gTC5meC5zcGVlZHM/TC5meC5zcGVlZHNbYWpdOkwuZnguc3BlZWRzLl9kZWZhdWx0O2FpLmNvbXBsZXRlPWFrfHxhaC5jb21wbGV0ZTtyZXR1cm4gYWl9ZnVuY3Rpb24gYWUoYWgpe2lmKCFhaHx8dHlwZW9mIGFoPT09Im51bWJlciJ8fEwuZnguc3BlZWRzW2FoXSl7cmV0dXJuIHRydWV9aWYodHlwZW9mIGFoPT09InN0cmluZyImJiFMLmpxcGxvdC5lZmZlY3RzLmVmZmVjdFthaF0pe2lmKFgmJkwuanFwbG90LmVmZmVjdHNbYWhdKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfUwuZm4uZXh0ZW5kKHtqcXBsb3RFZmZlY3Q6ZnVuY3Rpb24oYXAsYXEsYWksYW8pe3ZhciBhbj1qLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhaz1hbi5tb2RlLGFsPWFuLnF1ZXVlLGFtPUwuanFwbG90LmVmZmVjdHMuZWZmZWN0W2FuLmVmZmVjdF0sYWg9IWFtJiZYJiZMLmpxcGxvdC5lZmZlY3RzW2FuLmVmZmVjdF07aWYoTC5meC5vZmZ8fCEoYW18fGFoKSl7aWYoYWspe3JldHVybiB0aGlzW2FrXShhbi5kdXJhdGlvbixhbi5jb21wbGV0ZSl9ZWxzZXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoYW4uY29tcGxldGUpe2FuLmNvbXBsZXRlLmNhbGwodGhpcyl9fSl9fWZ1bmN0aW9uIGFqKGF1KXt2YXIgYXY9TCh0aGlzKSxhdD1hbi5jb21wbGV0ZSxhdz1hbi5tb2RlO2Z1bmN0aW9uIGFyKCl7aWYoTC5pc0Z1bmN0aW9uKGF0KSl7YXQuY2FsbChhdlswXSl9aWYoTC5pc0Z1bmN0aW9uKGF1KSl7YXUoKX19aWYoYXYuaXMoIjpoaWRkZW4iKT9hdz09PSJoaWRlIjphdz09PSJzaG93Iil7YXIoKX1lbHNle2FtLmNhbGwoYXZbMF0sYW4sYXIpfX1pZihhbSl7cmV0dXJuIGFsPT09ZmFsc2U/dGhpcy5lYWNoKGFqKTp0aGlzLnF1ZXVlKGFsfHwiZngiLGFqKX1lbHNle3JldHVybiBhaC5jYWxsKHRoaXMse29wdGlvbnM6YW4sZHVyYXRpb246YW4uZHVyYXRpb24sY2FsbGJhY2s6YW4uY29tcGxldGUsbW9kZTphbi5tb2RlfSl9fX0pO3ZhciBhPS91cHxkb3dufHZlcnRpY2FsLyx2PS91cHxsZWZ0fHZlcnRpY2FsfGhvcml6b250YWwvO0wuanFwbG90LmVmZmVjdHMuZWZmZWN0LmJsaW5kPWZ1bmN0aW9uKGFqLGFvKXt2YXIgYWs9TCh0aGlzKSxhcj1bInBvc2l0aW9uIiwidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0IiwiaGVpZ2h0Iiwid2lkdGgiXSxhcD1MLmpxcGxvdC5lZmZlY3RzLnNldE1vZGUoYWssYWoubW9kZXx8ImhpZGUiKSxhdT1hai5kaXJlY3Rpb258fCJ1cCIsYW09YS50ZXN0KGF1KSxhbD1hbT8iaGVpZ2h0Ijoid2lkdGgiLGFxPWFtPyJ0b3AiOiJsZWZ0Iixhdz12LnRlc3QoYXUpLGFuPXt9LGF2PWFwPT09InNob3ciLGFpLGFoLGF0O2lmKGFrLnBhcmVudCgpLmlzKCIudWktZWZmZWN0cy13cmFwcGVyIikpe0wuanFwbG90LmVmZmVjdHMuc2F2ZShhay5wYXJlbnQoKSxhcil9ZWxzZXtMLmpxcGxvdC5lZmZlY3RzLnNhdmUoYWssYXIpfWFrLnNob3coKTthdD1wYXJzZUludChhay5jc3MoInRvcCIpLDEwKTthaT1MLmpxcGxvdC5lZmZlY3RzLmNyZWF0ZVdyYXBwZXIoYWspLmNzcyh7b3ZlcmZsb3c6ImhpZGRlbiJ9KTthaD1hbT9haVthbF0oKSthdDphaVthbF0oKTthblthbF09YXY/U3RyaW5nKGFoKToiMCI7aWYoIWF3KXthay5jc3MoYW0/ImJvdHRvbSI6InJpZ2h0IiwwKS5jc3MoYW0/InRvcCI6ImxlZnQiLCIiKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSJ9KTthblthcV09YXY/IjAiOlN0cmluZyhhaCl9aWYoYXYpe2FpLmNzcyhhbCwwKTtpZighYXcpe2FpLmNzcyhhcSxhaCl9fWFpLmFuaW1hdGUoYW4se2R1cmF0aW9uOmFqLmR1cmF0aW9uLGVhc2luZzphai5lYXNpbmcscXVldWU6ZmFsc2UsY29tcGxldGU6ZnVuY3Rpb24oKXtpZihhcD09PSJoaWRlIil7YWsuaGlkZSgpfUwuanFwbG90LmVmZmVjdHMucmVzdG9yZShhayxhcik7TC5qcXBsb3QuZWZmZWN0cy5yZW1vdmVXcmFwcGVyKGFrKTthbygpfX0pfX0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqplot/plugins/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.barRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgCiAgICAvLyBDbGFzczogJC5qcXBsb3QuQmFyUmVuZGVyZXIKICAgIC8vIEEgcGx1Z2luIHJlbmRlcmVyIGZvciBqcVBsb3QgdG8gZHJhdyBhIGJhciBwbG90LgogICAgLy8gRHJhd3Mgc2VyaWVzIGFzIGEgbGluZS4KICAgIAogICAgJC5qcXBsb3QuQmFyUmVuZGVyZXIgPSBmdW5jdGlvbigpewogICAgICAgICQuanFwbG90LkxpbmVSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQmFyUmVuZGVyZXIucHJvdG90eXBlID0gbmV3ICQuanFwbG90LkxpbmVSZW5kZXJlcigpOwogICAgJC5qcXBsb3QuQmFyUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuQmFyUmVuZGVyZXI7CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHNlcmllcy4KICAgICQuanFwbG90LkJhclJlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucywgcGxvdCkgewogICAgICAgIC8vIEdyb3VwOiBQcm9wZXJ0aWVzCiAgICAgICAgLy8KICAgICAgICAvLyBwcm9wOiBiYXJQYWRkaW5nCiAgICAgICAgLy8gTnVtYmVyIG9mIHBpeGVscyBiZXR3ZWVuIGFkamFjZW50IGJhcnMgYXQgdGhlIHNhbWUgYXhpcyB2YWx1ZS4KICAgICAgICB0aGlzLmJhclBhZGRpbmcgPSA4OwogICAgICAgIC8vIHByb3A6IGJhck1hcmdpbgogICAgICAgIC8vIE51bWJlciBvZiBwaXhlbHMgYmV0d2VlbiBncm91cHMgb2YgYmFycyBhdCBhZGphY2VudCBheGlzIHZhbHVlcy4KICAgICAgICB0aGlzLmJhck1hcmdpbiA9IDEwOwogICAgICAgIC8vIHByb3A6IGJhckRpcmVjdGlvbgogICAgICAgIC8vICd2ZXJ0aWNhbCcgPSB1cCBhbmQgZG93biBiYXJzLCAnaG9yaXpvbnRhbCcgPSBzaWRlIHRvIHNpZGUgYmFycwogICAgICAgIHRoaXMuYmFyRGlyZWN0aW9uID0gJ3ZlcnRpY2FsJzsKICAgICAgICAvLyBwcm9wOiBiYXJXaWR0aAogICAgICAgIC8vIFdpZHRoIG9mIHRoZSBiYXIgaW4gcGl4ZWxzIChhdXRvIGJ5IGRldmF1bCkuICBudWxsID0gY2FsY3VsYXRlZCBhdXRvbWF0aWNhbGx5LgogICAgICAgIHRoaXMuYmFyV2lkdGggPSBudWxsOwogICAgICAgIC8vIHByb3A6IHNoYWRvd09mZnNldAogICAgICAgIC8vIG9mZnNldCBvZiB0aGUgc2hhZG93IGZyb20gdGhlIHNsaWNlIGFuZCBvZmZzZXQgb2YgCiAgICAgICAgLy8gZWFjaCBzdWNjZXNpdmUgc3Ryb2tlIG9mIHRoZSBzaGFkb3cgZnJvbSB0aGUgbGFzdC4KICAgICAgICB0aGlzLnNoYWRvd09mZnNldCA9IDI7CiAgICAgICAgLy8gcHJvcDogc2hhZG93RGVwdGgKICAgICAgICAvLyBudW1iZXIgb2Ygc3Ryb2tlcyB0byBhcHBseSB0byB0aGUgc2hhZG93LCAKICAgICAgICAvLyBlYWNoIHN0cm9rZSBvZmZzZXQgc2hhZG93T2Zmc2V0IGZyb20gdGhlIGxhc3QuCiAgICAgICAgdGhpcy5zaGFkb3dEZXB0aCA9IDU7CiAgICAgICAgLy8gcHJvcDogc2hhZG93QWxwaGEKICAgICAgICAvLyB0cmFuc3BhcmVuY3kgb2YgdGhlIHNoYWRvdyAoMCA9IHRyYW5zcGFyZW50LCAxID0gb3BhcXVlKQogICAgICAgIHRoaXMuc2hhZG93QWxwaGEgPSAwLjA4OwogICAgICAgIC8vIHByb3A6IHdhdGVyZmFsbAogICAgICAgIC8vIHRydWUgdG8gZW5hYmxlIHdhdGVyZmFsbCBwbG90LgogICAgICAgIHRoaXMud2F0ZXJmYWxsID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogZ3JvdXBzCiAgICAgICAgLy8gZ3JvdXAgYmFycyBpbnRvIHRoaXMgbWFueSBncm91cHMKICAgICAgICB0aGlzLmdyb3VwcyA9IDE7CiAgICAgICAgLy8gcHJvcDogdmFyeUJhckNvbG9yCiAgICAgICAgLy8gdHJ1ZSB0byBjb2xvciBlYWNoIGJhciBvZiBhIHNlcmllcyBzZXBhcmF0ZWx5IHJhdGhlciB0aGFuCiAgICAgICAgLy8gaGF2ZSBldmVyeSBiYXIgb2YgYSBnaXZlbiBzZXJpZXMgdGhlIHNhbWUgY29sb3IuCiAgICAgICAgLy8gSWYgdXNlZCBmb3Igbm9uLXN0YWNrZWQgbXVsdGlwbGUgc2VyaWVzIGJhciBwbG90cywgdXNlciBzaG91bGQKICAgICAgICAvLyBzcGVjaWZ5IGEgc2VwYXJhdGUgJ3Nlcmllc0NvbG9ycycgYXJyYXkgZm9yIGVhY2ggc2VyaWVzLgogICAgICAgIC8vIE90aGVyd2lzZSwgZWFjaCBzZXJpZXMgd2lsbCBzZXQgdGhlaXIgYmFycyB0byB0aGUgc2FtZSBjb2xvciBhcnJheS4KICAgICAgICAvLyBUaGlzIG9wdGlvbiBoYXMgbm8gRWZmZWN0IGZvciBzdGFja2VkIGJhciBjaGFydHMgYW5kIGlzIGRpc2FibGVkLgogICAgICAgIHRoaXMudmFyeUJhckNvbG9yID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogaGlnaGxpZ2h0TW91c2VPdmVyCiAgICAgICAgLy8gVHJ1ZSB0byBoaWdobGlnaHQgc2xpY2Ugd2hlbiBtb3VzZWQgb3Zlci4KICAgICAgICAvLyBUaGlzIG11c3QgYmUgZmFsc2UgdG8gZW5hYmxlIGhpZ2hsaWdodE1vdXNlRG93biB0byBoaWdobGlnaHQgd2hlbiBjbGlja2luZyBvbiBhIHNsaWNlLgogICAgICAgIHRoaXMuaGlnaGxpZ2h0TW91c2VPdmVyID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBoaWdobGlnaHRNb3VzZURvd24KICAgICAgICAvLyBUcnVlIHRvIGhpZ2hsaWdodCB3aGVuIGEgbW91c2UgYnV0dG9uIGlzIHByZXNzZWQgb3ZlciBhIHNsaWNlLgogICAgICAgIC8vIFRoaXMgd2lsbCBiZSBkaXNhYmxlZCBpZiBoaWdobGlnaHRNb3VzZU92ZXIgaXMgdHJ1ZS4KICAgICAgICB0aGlzLmhpZ2hsaWdodE1vdXNlRG93biA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGhpZ2hsaWdodENvbG9ycwogICAgICAgIC8vIGFuIGFycmF5IG9mIGNvbG9ycyB0byB1c2Ugd2hlbiBoaWdobGlnaHRpbmcgYSBiYXIuCiAgICAgICAgdGhpcy5oaWdobGlnaHRDb2xvcnMgPSBbXTsKICAgICAgICAvLyBwcm9wOiB0cmFuc3Bvc2VkRGF0YQogICAgICAgIC8vIE5PVCBJTVBMRU1FTlRFRCBZRVQuICBUcnVlIGlmIHRoaXMgaXMgYSBob3Jpem9udGFsIGJhciBwbG90IGFuZCAKICAgICAgICAvLyB4IGFuZCB5IHZhbHVlcyBhcmUgInRyYW5zcG9zZWQiLiAgVHJhbnBvc2VkLCBvciAic3dhcHBlZCIsIGRhdGEgaXMgCiAgICAgICAgLy8gcmVxdWlyZWQgcHJpb3IgdG8gcmV2LiA4OTQgYnVpbGRzIG9mIGpxUGxvdCB3aXRoIGhvcml6b250YWwgYmFycy4gCiAgICAgICAgLy8gQWxsb3dzIGJhY2t3YXJkIGNvbXBhdGFiaWxpdHkgb2YgYmFyIHJlbmRlcmVyIGhvcml6b250YWwgYmFycyB3aXRoIAogICAgICAgIC8vIG9sZCBzdHlsZSBkYXRhIHNldHMuCiAgICAgICAgdGhpcy50cmFuc3Bvc2VkRGF0YSA9IHRydWU7CiAgICAgICAgdGhpcy5yZW5kZXJlci5hbmltYXRpb24gPSB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlLAogICAgICAgICAgICBkaXJlY3Rpb246ICdkb3duJywKICAgICAgICAgICAgc3BlZWQ6IDMwMDAsCiAgICAgICAgICAgIF9zdXBwb3J0ZWQ6IHRydWUKICAgICAgICB9OwogICAgICAgIHRoaXMuX3R5cGUgPSAnYmFyJzsKICAgICAgICAKICAgICAgICAvLyBpZiB1c2VyIGhhcyBwYXNzZWQgaW4gaGlnaGxpZ2h0TW91c2VEb3duIG9wdGlvbiBhbmQgbm90IHNldCBoaWdobGlnaHRNb3VzZU92ZXIsIGRpc2FibGUgaGlnaGxpZ2h0TW91c2VPdmVyCiAgICAgICAgaWYgKG9wdGlvbnMuaGlnaGxpZ2h0TW91c2VEb3duICYmIG9wdGlvbnMuaGlnaGxpZ2h0TW91c2VPdmVyID09IG51bGwpIHsKICAgICAgICAgICAgb3B0aW9ucy5oaWdobGlnaHRNb3VzZU92ZXIgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8vLy8vCiAgICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSB3cm9uZyBoZXJlLgogICAgICAgIC8vIEFmdGVyIGdvaW5nIGJhY2sgYW5kIGZvcnRoIG9uIHdoZXRoZXIgcmVuZGVyZXIgc2hvdWxkIGJlIHRoZSB0aGluZwogICAgICAgIC8vIG9yIGV4dGVuZCB0aGUgdGhpbmcsIGl0IHNlZW1zIHRoYXQgaXQgaXQgYmVzdCBpZiBpdCBpcyBhIHByb3BlcnR5CiAgICAgICAgLy8gb24gdGhlIHRoaW5nLiAgVGhpcyBzaG91bGQgYmUgc29tZXRoaW5nIHRoYXQgaXMgY29tbW9uaXplZCAKICAgICAgICAvLyBhbW9uZyBzZXJpZXMgcmVuZGVyZXJzIGluIHRoZSBmdXR1cmUuCiAgICAgICAgLy8vLy8vCiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CgogICAgICAgIC8vIHJlYWxseSBzaG91bGQgcHJvYmFibHkgZG8gdGhpcwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMucmVuZGVyZXIsIG9wdGlvbnMpOwogICAgICAgIC8vIGZpbGwgaXMgc3RpbGwgbmVlZGVkIHRvIHByb3Blcmx5IGRyYXcgdGhlIGxlZ2VuZC4KICAgICAgICAvLyBiYXJzIGhhdmUgdG8gYmUgZmlsbGVkLgogICAgICAgIHRoaXMuZmlsbCA9IHRydWU7CgogICAgICAgIC8vIGlmIGhvcml6b250YWwgYmFyIGFuZCBhbmltYXRpbmcsIHJlc2V0IHRoZSBkZWZhdWx0IGRpcmVjdGlvbgogICAgICAgIGlmICh0aGlzLmJhckRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnICYmIHRoaXMucmVuZGVyZXJPcHRpb25zLmFuaW1hdGlvbiAmJiB0aGlzLnJlbmRlcmVyT3B0aW9ucy5hbmltYXRpb24uZGlyZWN0aW9uID09IG51bGwpIHsKICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hbmltYXRpb24uZGlyZWN0aW9uID0gJ2xlZnQnOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAodGhpcy53YXRlcmZhbGwpIHsKICAgICAgICAgICAgdGhpcy5maWxsVG9aZXJvID0gZmFsc2U7CiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVN0YWNrID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKHRoaXMuYmFyRGlyZWN0aW9uID09ICd2ZXJ0aWNhbCcgKSB7CiAgICAgICAgICAgIHRoaXMuX3ByaW1hcnlBeGlzID0gJ194YXhpcyc7CiAgICAgICAgICAgIHRoaXMuX3N0YWNrQXhpcyA9ICd5JzsKICAgICAgICAgICAgdGhpcy5maWxsQXhpcyA9ICd5JzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHRoaXMuX3ByaW1hcnlBeGlzID0gJ195YXhpcyc7CiAgICAgICAgICAgIHRoaXMuX3N0YWNrQXhpcyA9ICd4JzsKICAgICAgICAgICAgdGhpcy5maWxsQXhpcyA9ICd4JzsKICAgICAgICB9CiAgICAgICAgLy8gaW5kZXggb2YgdGhlIGN1cnJlbnR5IGhpZ2hsaWdodGVkIHBvaW50LCBpZiBhbnkKICAgICAgICB0aGlzLl9oaWdobGlnaHRlZFBvaW50ID0gbnVsbDsKICAgICAgICAvLyB0b3RhbCBudW1iZXIgb2YgdmFsdWVzIGZvciBhbGwgYmFyIHNlcmllcywgdG90YWwgbnVtYmVyIG9mIGJhciBzZXJpZXMsIGFuZCBwb3NpdGlvbiBvZiB0aGlzIHNlcmllcwogICAgICAgIHRoaXMuX3Bsb3RTZXJpZXNJbmZvID0gbnVsbDsKICAgICAgICAvLyBBcnJheSBvZiBhY3R1YWwgZGF0YSBjb2xvcnMgdXNlZCBmb3IgZWFjaCBkYXRhIHBvaW50LgogICAgICAgIHRoaXMuX2RhdGFDb2xvcnMgPSBbXTsKICAgICAgICB0aGlzLl9iYXJQb2ludHMgPSBbXTsKICAgICAgICAKICAgICAgICAvLyBzZXQgdGhlIHNoYXBlIHJlbmRlcmVyIG9wdGlvbnMKICAgICAgICB2YXIgb3B0cyA9IHtsaW5lSm9pbjonbWl0ZXInLCBsaW5lQ2FwOidyb3VuZCcsIGZpbGw6dHJ1ZSwgaXNhcmM6ZmFsc2UsIHN0cm9rZVN0eWxlOnRoaXMuY29sb3IsIGZpbGxTdHlsZTp0aGlzLmNvbG9yLCBjbG9zZVBhdGg6dGhpcy5maWxsfTsKICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuaW5pdChvcHRzKTsKICAgICAgICAvLyBzZXQgdGhlIHNoYWRvdyByZW5kZXJlciBvcHRpb25zCiAgICAgICAgdmFyIHNvcHRzID0ge2xpbmVKb2luOidtaXRlcicsIGxpbmVDYXA6J3JvdW5kJywgZmlsbDp0cnVlLCBpc2FyYzpmYWxzZSwgYW5nbGU6dGhpcy5zaGFkb3dBbmdsZSwgb2Zmc2V0OnRoaXMuc2hhZG93T2Zmc2V0LCBhbHBoYTp0aGlzLnNoYWRvd0FscGhhLCBkZXB0aDp0aGlzLnNoYWRvd0RlcHRoLCBjbG9zZVBhdGg6dGhpcy5maWxsfTsKICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmluaXQoc29wdHMpOwogICAgICAgIAogICAgICAgIHBsb3QucG9zdEluaXRIb29rcy5hZGRPbmNlKHBvc3RJbml0KTsKICAgICAgICBwbG90LnBvc3REcmF3SG9va3MuYWRkT25jZShwb3N0UGxvdERyYXcpOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdE1vdXNlTW92ZScsIGhhbmRsZU1vdmUpOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdE1vdXNlRG93bicsIGhhbmRsZU1vdXNlRG93bik7CiAgICAgICAgcGxvdC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgnanFwbG90TW91c2VVcCcsIGhhbmRsZU1vdXNlVXApOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdENsaWNrJywgaGFuZGxlQ2xpY2spOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdFJpZ2h0Q2xpY2snLCBoYW5kbGVSaWdodENsaWNrKTsgCiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBzZXJpZXMKICAgIGZ1bmN0aW9uIGJhclByZUluaXQodGFyZ2V0LCBkYXRhLCBzZXJpZXNEZWZhdWx0cywgb3B0aW9ucykgewogICAgICAgIGlmICh0aGlzLnJlbmRlcmVyT3B0aW9ucy5iYXJEaXJlY3Rpb24gPT0gJ2hvcml6b250YWwnKSB7CiAgICAgICAgICAgIHRoaXMuX3N0YWNrQXhpcyA9ICd4JzsKICAgICAgICAgICAgdGhpcy5fcHJpbWFyeUF4aXMgPSAnX3lheGlzJzsKICAgICAgICB9CiAgICAgICAgaWYgKHRoaXMucmVuZGVyZXJPcHRpb25zLndhdGVyZmFsbCA9PSB0cnVlKSB7CiAgICAgICAgICAgIHRoaXMuX2RhdGEgPSAkLmV4dGVuZCh0cnVlLCBbXSwgdGhpcy5kYXRhKTsKICAgICAgICAgICAgdmFyIHN1bSA9IDA7CiAgICAgICAgICAgIHZhciBwb3MgPSAoIXRoaXMucmVuZGVyZXJPcHRpb25zLmJhckRpcmVjdGlvbiB8fCB0aGlzLnJlbmRlcmVyT3B0aW9ucy5iYXJEaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcgfHwgdGhpcy50cmFuc3Bvc2VkRGF0YSA9PT0gZmFsc2UpID8gMSA6IDA7CiAgICAgICAgICAgIGZvcih2YXIgaT0wOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgc3VtICs9IHRoaXMuZGF0YVtpXVtwb3NdOwogICAgICAgICAgICAgICAgaWYgKGk+MCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVtpXVtwb3NdICs9IHRoaXMuZGF0YVtpLTFdW3Bvc107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5kYXRhW3RoaXMuZGF0YS5sZW5ndGhdID0gKHBvcyA9PSAxKSA/IFt0aGlzLmRhdGEubGVuZ3RoKzEsIHN1bV0gOiBbc3VtLCB0aGlzLmRhdGEubGVuZ3RoKzFdOwogICAgICAgICAgICB0aGlzLl9kYXRhW3RoaXMuX2RhdGEubGVuZ3RoXSA9IChwb3MgPT0gMSkgPyBbdGhpcy5fZGF0YS5sZW5ndGgrMSwgc3VtXSA6IFtzdW0sIHRoaXMuX2RhdGEubGVuZ3RoKzFdOwogICAgICAgIH0KICAgICAgICBpZiAodGhpcy5yZW5kZXJlck9wdGlvbnMuZ3JvdXBzID4gMSkgewogICAgICAgICAgICB0aGlzLmJyZWFrT25OdWxsID0gdHJ1ZTsKICAgICAgICAgICAgdmFyIGwgPSB0aGlzLmRhdGEubGVuZ3RoOwogICAgICAgICAgICB2YXIgc2tpcCA9IHBhcnNlSW50KGwvdGhpcy5yZW5kZXJlck9wdGlvbnMuZ3JvdXBzLCAxMCk7CiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7CiAgICAgICAgICAgIGZvciAodmFyIGk9c2tpcDsgaTxsOyBpKz1za2lwKSB7CiAgICAgICAgICAgICAgICB0aGlzLmRhdGEuc3BsaWNlKGkrY291bnQsIDAsIFtudWxsLCBudWxsXSk7CiAgICAgICAgICAgICAgICB0aGlzLl9wbG90RGF0YS5zcGxpY2UoaStjb3VudCwgMCwgW251bGwsIG51bGxdKTsKICAgICAgICAgICAgICAgIHRoaXMuX3N0YWNrRGF0YS5zcGxpY2UoaStjb3VudCwgMCwgW251bGwsIG51bGxdKTsKICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yIChpPTA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5fcHJpbWFyeUF4aXMgPT0gJ194YXhpcycpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFbaV1bMF0gPSBpKzE7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGxvdERhdGFbaV1bMF0gPSBpKzE7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhY2tEYXRhW2ldWzBdID0gaSsxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhW2ldWzFdID0gaSsxOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3Bsb3REYXRhW2ldWzFdID0gaSsxOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YWNrRGF0YVtpXVsxXSA9IGkrMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgJC5qcXBsb3QucHJlU2VyaWVzSW5pdEhvb2tzLnB1c2goYmFyUHJlSW5pdCk7CiAgICAKICAgIC8vIG5lZWRzIHRvIGJlIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHNlcmllcywgbm90IHJlbmRlcmVyLgogICAgJC5qcXBsb3QuQmFyUmVuZGVyZXIucHJvdG90eXBlLmNhbGNTZXJpZXNOdW1iZXJzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIG52YWxzID0gMDsKICAgICAgICB2YXIgbnNlcmllcyA9IDA7CiAgICAgICAgdmFyIHBheGlzID0gdGhpc1t0aGlzLl9wcmltYXJ5QXhpc107CiAgICAgICAgdmFyIHMsIHNlcmllcywgcG9zOwogICAgICAgIC8vIGxvb3AgdGhyb3VnaCBhbGwgc2VyaWVzIG9uIHRoaXMgYXhpcwogICAgICAgIGZvciAodmFyIGk9MDsgaSA8IHBheGlzLl9zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgc2VyaWVzID0gcGF4aXMuX3Nlcmllc1tpXTsKICAgICAgICAgICAgaWYgKHNlcmllcyA9PT0gdGhpcykgewogICAgICAgICAgICAgICAgcG9zID0gaTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBpcyB0aGUgc2VyaWVzIHJlbmRlcmVkIGFzIGEgYmFyPwogICAgICAgICAgICBpZiAoc2VyaWVzLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09ICQuanFwbG90LkJhclJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAvLyBncmlkRGF0YSBtYXkgbm90IGJlIGNvbXB1dGVkIHlldCwgdXNlIGRhdGEgbGVuZ3RoIGluc3RlZAogICAgICAgICAgICAgICAgbnZhbHMgKz0gc2VyaWVzLmRhdGEubGVuZ3RoOwogICAgICAgICAgICAgICAgbnNlcmllcyArPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIHJldHVybiB0b3RhbCBudW1iZXIgb2YgdmFsdWVzIGZvciBhbGwgYmFyIHNlcmllcywgdG90YWwgbnVtYmVyIG9mIGJhciBzZXJpZXMsIGFuZCBwb3NpdGlvbiBvZiB0aGlzIHNlcmllcwogICAgICAgIHJldHVybiBbbnZhbHMsIG5zZXJpZXMsIHBvc107CiAgICB9OwoKICAgICQuanFwbG90LkJhclJlbmRlcmVyLnByb3RvdHlwZS5zZXRCYXJXaWR0aCA9IGZ1bmN0aW9uKCkgewogICAgICAgIC8vIG5lZWQgdG8ga25vdyBob3cgbWFueSBkYXRhIHZhbHVlcyB3ZSBoYXZlIG9uIHRoZSBhcHByb3ByYXRlIGF4aXMgYW5kIGZpZ3VyZSBpdCBvdXQuCiAgICAgICAgdmFyIGk7CiAgICAgICAgdmFyIG52YWxzID0gMDsKICAgICAgICB2YXIgbnNlcmllcyA9IDA7CiAgICAgICAgdmFyIHBheGlzID0gdGhpc1t0aGlzLl9wcmltYXJ5QXhpc107CiAgICAgICAgdmFyIHMsIHNlcmllcywgcG9zOwogICAgICAgIHZhciB0ZW1wID0gdGhpcy5fcGxvdFNlcmllc0luZm8gPSB0aGlzLnJlbmRlcmVyLmNhbGNTZXJpZXNOdW1iZXJzLmNhbGwodGhpcyk7CiAgICAgICAgbnZhbHMgPSB0ZW1wWzBdOwogICAgICAgIG5zZXJpZXMgPSB0ZW1wWzFdOwogICAgICAgIHZhciBudGlja3MgPSBwYXhpcy5udW1iZXJUaWNrczsKICAgICAgICB2YXIgbmJpbnMgPSAobnRpY2tzLTEpLzI7CiAgICAgICAgLy8gc28sIG5vdyB3ZSBoYXZlIHRvdGFsIG51bWJlciBvZiBheGlzIHZhbHVlcy4KICAgICAgICBpZiAocGF4aXMubmFtZSA9PSAneGF4aXMnIHx8IHBheGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgaWYgKHRoaXMuX3N0YWNrKSB7CiAgICAgICAgICAgICAgICB0aGlzLmJhcldpZHRoID0gKHBheGlzLl9vZmZzZXRzLm1heCAtIHBheGlzLl9vZmZzZXRzLm1pbikgLyBudmFscyAqIG5zZXJpZXMgLSB0aGlzLmJhck1hcmdpbjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMuYmFyV2lkdGggPSAoKHBheGlzLl9vZmZzZXRzLm1heCAtIHBheGlzLl9vZmZzZXRzLm1pbikvbmJpbnMgIC0gdGhpcy5iYXJQYWRkaW5nICogKG5zZXJpZXMtMSkgLSB0aGlzLmJhck1hcmdpbioyKS9uc2VyaWVzOwogICAgICAgICAgICAgICAgLy8gdGhpcy5iYXJXaWR0aCA9IChwYXhpcy5fb2Zmc2V0cy5tYXggLSBwYXhpcy5fb2Zmc2V0cy5taW4pIC8gbnZhbHMgLSB0aGlzLmJhclBhZGRpbmcgLSB0aGlzLmJhck1hcmdpbi9uc2VyaWVzOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBpZiAodGhpcy5fc3RhY2spIHsKICAgICAgICAgICAgICAgIHRoaXMuYmFyV2lkdGggPSAocGF4aXMuX29mZnNldHMubWluIC0gcGF4aXMuX29mZnNldHMubWF4KSAvIG52YWxzICogbnNlcmllcyAtIHRoaXMuYmFyTWFyZ2luOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5iYXJXaWR0aCA9ICgocGF4aXMuX29mZnNldHMubWluIC0gcGF4aXMuX29mZnNldHMubWF4KS9uYmlucyAgLSB0aGlzLmJhclBhZGRpbmcgKiAobnNlcmllcy0xKSAtIHRoaXMuYmFyTWFyZ2luKjIpL25zZXJpZXM7CiAgICAgICAgICAgICAgICAvLyB0aGlzLmJhcldpZHRoID0gKHBheGlzLl9vZmZzZXRzLm1pbiAtIHBheGlzLl9vZmZzZXRzLm1heCkgLyBudmFscyAtIHRoaXMuYmFyUGFkZGluZyAtIHRoaXMuYmFyTWFyZ2luL25zZXJpZXM7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIFtudmFscywgbnNlcmllc107CiAgICB9OwoKICAgIGZ1bmN0aW9uIGNvbXB1dGVIaWdobGlnaHRDb2xvcnMgKGNvbG9ycykgewogICAgICAgIHZhciByZXQgPSBbXTsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8Y29sb3JzLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgdmFyIHJnYmEgPSAkLmpxcGxvdC5nZXRDb2xvckNvbXBvbmVudHMoY29sb3JzW2ldKTsKICAgICAgICAgICAgdmFyIG5ld3JnYiA9IFtyZ2JhWzBdLCByZ2JhWzFdLCByZ2JhWzJdXTsKICAgICAgICAgICAgdmFyIHN1bSA9IG5ld3JnYlswXSArIG5ld3JnYlsxXSArIG5ld3JnYlsyXTsKICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPDM7IGorKykgewogICAgICAgICAgICAgICAgLy8gd2hlbiBkYXJrZW5pbmcsIGxvd2VzdCBjb2xvciBjb21wb25lbnQgY2FuIGJlIGlzIDYwLgogICAgICAgICAgICAgICAgbmV3cmdiW2pdID0gKHN1bSA+IDU3MCkgPyAgbmV3cmdiW2pdICogMC44IDogbmV3cmdiW2pdICsgMC4zICogKDI1NSAtIG5ld3JnYltqXSk7CiAgICAgICAgICAgICAgICBuZXdyZ2Jbal0gPSBwYXJzZUludChuZXdyZ2Jbal0sIDEwKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXQucHVzaCgncmdiKCcrbmV3cmdiWzBdKycsJytuZXdyZ2JbMV0rJywnK25ld3JnYlsyXSsnKScpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmV0OwogICAgfQoKICAgIGZ1bmN0aW9uIGdldFN0YXJ0KHNpZHgsIGRpZHgsIGNvbXAsIHBsb3QsIGF4aXMpIHsKICAgICAgICAvLyBjaGVjayBpZiBzaWduIGNoYW5nZQogICAgICAgIHZhciBzZXJpZXNJbmRleCA9IHNpZHgsCiAgICAgICAgICAgIHByZXZTZXJpZXNJbmRleCA9IHNpZHggLSAxLAogICAgICAgICAgICBzdGFydCwKICAgICAgICAgICAgcHJldlZhbCwKICAgICAgICAgICAgYWlkeCA9IChheGlzID09PSAneCcpID8gMCA6IDE7CgogICAgICAgIC8vIGlzIHRoaXMgbm90IHRoZSBmaXJzdCBzZXJpZXM/CiAgICAgICAgaWYgKHNlcmllc0luZGV4ID4gMCkgewogICAgICAgICAgICBwcmV2VmFsID0gcGxvdC5zZXJpZXNbcHJldlNlcmllc0luZGV4XS5fcGxvdERhdGFbZGlkeF1bYWlkeF07CgogICAgICAgICAgICAvLyBpcyB0aGVyZSBhIHNpZ24gY2hhbmdlCiAgICAgICAgICAgIGlmICgoY29tcCAqIHByZXZWYWwpIDwgMCkgewogICAgICAgICAgICAgICAgc3RhcnQgPSBnZXRTdGFydChwcmV2U2VyaWVzSW5kZXgsIGRpZHgsIGNvbXAsIHBsb3QsIGF4aXMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBubyBzaWduIGNoYW5nZS4KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBzdGFydCA9IHBsb3Quc2VyaWVzW3ByZXZTZXJpZXNJbmRleF0uZ3JpZERhdGFbZGlkeF1bYWlkeF07CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICAvLyBpZiBmaXJzdCBzZXJpZXMsIHJldHVybiB2YWx1ZSBhdCAwCiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICBzdGFydCA9IChhaWR4ID09PSAwKSA/IHBsb3Quc2VyaWVzW3Nlcmllc0luZGV4XS5feGF4aXMuc2VyaWVzX3UycCgwKSA6IHBsb3Quc2VyaWVzW3Nlcmllc0luZGV4XS5feWF4aXMuc2VyaWVzX3UycCgwKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzdGFydDsKICAgIH0KCiAgICAKICAgICQuanFwbG90LkJhclJlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24oY3R4LCBncmlkRGF0YSwgb3B0aW9ucywgcGxvdCkgewogICAgICAgIHZhciBpOwogICAgICAgIC8vIFVnaGhoLCBoYXZlIHRvIG1ha2UgYSBjb3B5IG9mIG9wdGlvbnMgYi9jIGl0IG1heSBiZSBtb2RpZmllZCBsYXRlci4KICAgICAgICB2YXIgb3B0cyA9ICQuZXh0ZW5kKHt9LCBvcHRpb25zKTsKICAgICAgICB2YXIgc2hhZG93ID0gKG9wdHMuc2hhZG93ICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNoYWRvdyA6IHRoaXMuc2hhZG93OwogICAgICAgIHZhciBzaG93TGluZSA9IChvcHRzLnNob3dMaW5lICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNob3dMaW5lIDogdGhpcy5zaG93TGluZTsKICAgICAgICB2YXIgZmlsbCA9IChvcHRzLmZpbGwgIT0gdW5kZWZpbmVkKSA/IG9wdHMuZmlsbCA6IHRoaXMuZmlsbDsKICAgICAgICB2YXIgeGF4aXMgPSB0aGlzLnhheGlzOwogICAgICAgIHZhciB5YXhpcyA9IHRoaXMueWF4aXM7CiAgICAgICAgdmFyIHhwID0gdGhpcy5feGF4aXMuc2VyaWVzX3UycDsKICAgICAgICB2YXIgeXAgPSB0aGlzLl95YXhpcy5zZXJpZXNfdTJwOwogICAgICAgIHZhciBwb2ludHgsIHBvaW50eTsKICAgICAgICAvLyBjbGVhciBvdXQgZGF0YSBjb2xvcnMuCiAgICAgICAgdGhpcy5fZGF0YUNvbG9ycyA9IFtdOwogICAgICAgIHRoaXMuX2JhclBvaW50cyA9IFtdOwogICAgICAgIAogICAgICAgIGlmICh0aGlzLmJhcldpZHRoID09IG51bGwpIHsKICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRCYXJXaWR0aC5jYWxsKHRoaXMpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB2YXIgdGVtcCA9IHRoaXMuX3Bsb3RTZXJpZXNJbmZvID0gdGhpcy5yZW5kZXJlci5jYWxjU2VyaWVzTnVtYmVycy5jYWxsKHRoaXMpOwogICAgICAgIHZhciBudmFscyA9IHRlbXBbMF07CiAgICAgICAgdmFyIG5zZXJpZXMgPSB0ZW1wWzFdOwogICAgICAgIHZhciBwb3MgPSB0ZW1wWzJdOwogICAgICAgIHZhciBwb2ludHMgPSBbXTsKICAgICAgICAKICAgICAgICBpZiAodGhpcy5fc3RhY2spIHsKICAgICAgICAgICAgdGhpcy5fYmFyTnVkZ2UgPSAwOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdGhpcy5fYmFyTnVkZ2UgPSAoLU1hdGguYWJzKG5zZXJpZXMvMiAtIDAuNSkgKyBwb3MpICogKHRoaXMuYmFyV2lkdGggKyB0aGlzLmJhclBhZGRpbmcpOwogICAgICAgIH0KICAgICAgICBpZiAoc2hvd0xpbmUpIHsKICAgICAgICAgICAgdmFyIG5lZ2F0aXZlQ29sb3JzID0gbmV3ICQuanFwbG90LkNvbG9yR2VuZXJhdG9yKHRoaXMubmVnYXRpdmVTZXJpZXNDb2xvcnMpOwogICAgICAgICAgICB2YXIgcG9zaXRpdmVDb2xvcnMgPSBuZXcgJC5qcXBsb3QuQ29sb3JHZW5lcmF0b3IodGhpcy5zZXJpZXNDb2xvcnMpOwogICAgICAgICAgICB2YXIgbmVnYXRpdmVDb2xvciA9IG5lZ2F0aXZlQ29sb3JzLmdldCh0aGlzLmluZGV4KTsKICAgICAgICAgICAgaWYgKCEgdGhpcy51c2VOZWdhdGl2ZUNvbG9ycykgewogICAgICAgICAgICAgICAgbmVnYXRpdmVDb2xvciA9IG9wdHMuZmlsbFN0eWxlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBwb3NpdGl2ZUNvbG9yID0gb3B0cy5maWxsU3R5bGU7CiAgICAgICAgICAgIHZhciBiYXNlOwogICAgICAgICAgICB2YXIgeHN0YXJ0OyAKICAgICAgICAgICAgdmFyIHlzdGFydDsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLmJhckRpcmVjdGlvbiA9PSAndmVydGljYWwnKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8Z3JpZERhdGEubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3N0YWNrICYmIHRoaXMuZGF0YVtpXVsxXSA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbXTsKICAgICAgICAgICAgICAgICAgICBiYXNlID0gZ3JpZERhdGFbaV1bMF0gKyB0aGlzLl9iYXJOdWRnZTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBzdGFja2VkCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3N0YWNrICYmIHRoaXMuX3ByZXZHcmlkRGF0YS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgeXN0YXJ0ID0gZ2V0U3RhcnQodGhpcy5pbmRleCwgaSwgdGhpcy5fcGxvdERhdGFbaV1bMV0sIHBsb3QsICd5Jyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvLyBub3Qgc3RhY2tlZAogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5maWxsVG9aZXJvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RhcnQgPSB0aGlzLl95YXhpcy5zZXJpZXNfdTJwKDApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMud2F0ZXJmYWxsICYmIGkgPiAwICYmIGkgPCB0aGlzLmdyaWREYXRhLmxlbmd0aC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RhcnQgPSB0aGlzLmdyaWREYXRhW2ktMV1bMV07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy53YXRlcmZhbGwgJiYgaSA9PSAwICYmIGkgPCB0aGlzLmdyaWREYXRhLmxlbmd0aC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5feWF4aXMubWluIDw9IDAgJiYgdGhpcy5feWF4aXMubWF4ID49IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RhcnQgPSB0aGlzLl95YXhpcy5zZXJpZXNfdTJwKDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5feWF4aXMubWluID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdGFydCA9IGN0eC5jYW52YXMuaGVpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0YXJ0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLndhdGVyZmFsbCAmJiBpID09IHRoaXMuZ3JpZERhdGEubGVuZ3RoIC0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3lheGlzLm1pbiA8PSAwICYmIHRoaXMuX3lheGlzLm1heCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0YXJ0ID0gdGhpcy5feWF4aXMuc2VyaWVzX3UycCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX3lheGlzLm1pbiA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RhcnQgPSBjdHguY2FudmFzLmhlaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdGFydCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RhcnQgPSBjdHguY2FudmFzLmhlaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoKHRoaXMuZmlsbFRvWmVybyAmJiB0aGlzLl9wbG90RGF0YVtpXVsxXSA8IDApIHx8ICh0aGlzLndhdGVyZmFsbCAmJiB0aGlzLl9kYXRhW2ldWzFdIDwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmFyeUJhckNvbG9yICYmICF0aGlzLl9zdGFjaykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudXNlTmVnYXRpdmVDb2xvcnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmZpbGxTdHlsZSA9IG5lZ2F0aXZlQ29sb3JzLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuZmlsbFN0eWxlID0gcG9zaXRpdmVDb2xvcnMubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0cy5maWxsU3R5bGUgPSBuZWdhdGl2ZUNvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52YXJ5QmFyQ29sb3IgJiYgIXRoaXMuX3N0YWNrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmZpbGxTdHlsZSA9IHBvc2l0aXZlQ29sb3JzLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuZmlsbFN0eWxlID0gcG9zaXRpdmVDb2xvcjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZmlsbFRvWmVybyB8fCB0aGlzLl9wbG90RGF0YVtpXVsxXSA+PSAwKSB7IAogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbYmFzZS10aGlzLmJhcldpZHRoLzIsIHlzdGFydF0pOwogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbYmFzZS10aGlzLmJhcldpZHRoLzIsIGdyaWREYXRhW2ldWzFdXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cy5wdXNoKFtiYXNlK3RoaXMuYmFyV2lkdGgvMiwgZ3JpZERhdGFbaV1bMV1dKTsKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnB1c2goW2Jhc2UrdGhpcy5iYXJXaWR0aC8yLCB5c3RhcnRdKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gZm9yIG5lZ2F0aXZlIGJhcnMgbWFrZSBzdXJlIHBvaW50cyBhcmUgYWx3YXlzIG9yZGVyZWQgY2xvY2t3aXNlCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnB1c2goW2Jhc2UtdGhpcy5iYXJXaWR0aC8yLCBncmlkRGF0YVtpXVsxXV0pOwogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbYmFzZS10aGlzLmJhcldpZHRoLzIsIHlzdGFydF0pOwogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbYmFzZSt0aGlzLmJhcldpZHRoLzIsIHlzdGFydF0pOwogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbYmFzZSt0aGlzLmJhcldpZHRoLzIsIGdyaWREYXRhW2ldWzFdXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuX2JhclBvaW50cy5wdXNoKHBvaW50cyk7CiAgICAgICAgICAgICAgICAgICAgLy8gbm93IGRyYXcgdGhlIHNoYWRvd3MgaWYgbm90IHN0YWNrZWQuCiAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHN0YWNrZWQgcGxvdHMsIHRoZXkgYXJlIHByZWRyYXduIGJ5IGRyYXdTaGFkb3cKICAgICAgICAgICAgICAgICAgICBpZiAoc2hhZG93ICYmICF0aGlzLl9zdGFjaykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc29wdHMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgb3B0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gZ2V0IHJpZCBvZiBmaWxsU3R5bGUgb24gc2hhZG93LgogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgc29wdHMuZmlsbFN0eWxlOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoY3R4LCBwb2ludHMsIHNvcHRzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGNsciA9IG9wdHMuZmlsbFN0eWxlIHx8IHRoaXMuY29sb3I7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YUNvbG9ycy5wdXNoKGNscik7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmRyYXcoY3R4LCBwb2ludHMsIG9wdHMpOyAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5iYXJEaXJlY3Rpb24gPT0gJ2hvcml6b250YWwnKXsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxncmlkRGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fc3RhY2sgJiYgdGhpcy5kYXRhW2ldWzBdID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IFtdOwogICAgICAgICAgICAgICAgICAgIGJhc2UgPSBncmlkRGF0YVtpXVsxXSAtIHRoaXMuX2Jhck51ZGdlOwogICAgICAgICAgICAgICAgICAgIHhzdGFydDsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fc3RhY2sgJiYgdGhpcy5fcHJldkdyaWREYXRhLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICB4c3RhcnQgPSBnZXRTdGFydCh0aGlzLmluZGV4LCBpLCB0aGlzLl9wbG90RGF0YVtpXVswXSwgcGxvdCwgJ3gnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gbm90IHN0YWNrZWQKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsbFRvWmVybykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0gdGhpcy5feGF4aXMuc2VyaWVzX3UycCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLndhdGVyZmFsbCAmJiBpID4gMCAmJiBpIDwgdGhpcy5ncmlkRGF0YS5sZW5ndGgtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0gdGhpcy5ncmlkRGF0YVtpLTFdWzBdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMud2F0ZXJmYWxsICYmIGkgPT0gMCAmJiBpIDwgdGhpcy5ncmlkRGF0YS5sZW5ndGgtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3hheGlzLm1pbiA8PSAwICYmIHRoaXMuX3hheGlzLm1heCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0gdGhpcy5feGF4aXMuc2VyaWVzX3UycCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX3hheGlzLm1pbiA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RhcnQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLndhdGVyZmFsbCAmJiBpID09IHRoaXMuZ3JpZERhdGEubGVuZ3RoIC0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3hheGlzLm1pbiA8PSAwICYmIHRoaXMuX3hheGlzLm1heCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0gdGhpcy5feGF4aXMuc2VyaWVzX3UycCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX3hheGlzLm1pbiA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RhcnQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0gY3R4LmNhbnZhcy53aWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdGFydCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCh0aGlzLmZpbGxUb1plcm8gJiYgdGhpcy5fcGxvdERhdGFbaV1bMF0gPCAwKSB8fCAodGhpcy53YXRlcmZhbGwgJiYgdGhpcy5fZGF0YVtpXVswXSA8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhcnlCYXJDb2xvciAmJiAhdGhpcy5fc3RhY2spIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVzZU5lZ2F0aXZlQ29sb3JzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0cy5maWxsU3R5bGUgPSBuZWdhdGl2ZUNvbG9ycy5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmZpbGxTdHlsZSA9IHBvc2l0aXZlQ29sb3JzLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuZmlsbFN0eWxlID0gbmVnYXRpdmVDb2xvcjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmFyeUJhckNvbG9yICYmICF0aGlzLl9zdGFjaykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0cy5maWxsU3R5bGUgPSBwb3NpdGl2ZUNvbG9ycy5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmZpbGxTdHlsZSA9IHBvc2l0aXZlQ29sb3I7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmZpbGxUb1plcm8gfHwgdGhpcy5fcGxvdERhdGFbaV1bMF0gPj0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbeHN0YXJ0LCBiYXNlICsgdGhpcy5iYXJXaWR0aCAvIDJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnB1c2goW3hzdGFydCwgYmFzZSAtIHRoaXMuYmFyV2lkdGggLyAyXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cy5wdXNoKFtncmlkRGF0YVtpXVswXSwgYmFzZSAtIHRoaXMuYmFyV2lkdGggLyAyXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cy5wdXNoKFtncmlkRGF0YVtpXVswXSwgYmFzZSArIHRoaXMuYmFyV2lkdGggLyAyXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbZ3JpZERhdGFbaV1bMF0sIGJhc2UgKyB0aGlzLmJhcldpZHRoIC8gMl0pOwogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbZ3JpZERhdGFbaV1bMF0sIGJhc2UgLSB0aGlzLmJhcldpZHRoIC8gMl0pOwogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbeHN0YXJ0LCBiYXNlIC0gdGhpcy5iYXJXaWR0aCAvIDJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnB1c2goW3hzdGFydCwgYmFzZSArIHRoaXMuYmFyV2lkdGggLyAyXSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB0aGlzLl9iYXJQb2ludHMucHVzaChwb2ludHMpOwogICAgICAgICAgICAgICAgICAgIC8vIG5vdyBkcmF3IHRoZSBzaGFkb3dzIGlmIG5vdCBzdGFja2VkLgogICAgICAgICAgICAgICAgICAgIC8vIGZvciBzdGFja2VkIHBsb3RzLCB0aGV5IGFyZSBwcmVkcmF3biBieSBkcmF3U2hhZG93CiAgICAgICAgICAgICAgICAgICAgaWYgKHNoYWRvdyAmJiAhdGhpcy5fc3RhY2spIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNvcHRzID0gJC5leHRlbmQodHJ1ZSwge30sIG9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgc29wdHMuZmlsbFN0eWxlOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoY3R4LCBwb2ludHMsIHNvcHRzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGNsciA9IG9wdHMuZmlsbFN0eWxlIHx8IHRoaXMuY29sb3I7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YUNvbG9ycy5wdXNoKGNscik7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmRyYXcoY3R4LCBwb2ludHMsIG9wdHMpOwogICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgfQogICAgICAgIH0gICAgICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgaWYgKHRoaXMuaGlnaGxpZ2h0Q29sb3JzLmxlbmd0aCA9PSAwKSB7CiAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0Q29sb3JzID0gJC5qcXBsb3QuY29tcHV0ZUhpZ2hsaWdodENvbG9ycyh0aGlzLl9kYXRhQ29sb3JzKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZWxzZSBpZiAodHlwZW9mKHRoaXMuaGlnaGxpZ2h0Q29sb3JzKSA9PSAnc3RyaW5nJykgewogICAgICAgICAgICB2YXIgdGVtcCA9IHRoaXMuaGlnaGxpZ2h0Q29sb3JzOwogICAgICAgICAgICB0aGlzLmhpZ2hsaWdodENvbG9ycyA9IFtdOwogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5fZGF0YUNvbG9ycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRDb2xvcnMucHVzaCh0ZW1wKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgIH07CiAgICAKICAgICAKICAgIC8vIGZvciBzdGFja2VkIHBsb3RzLCBzaGFkb3dzIHdpbGwgYmUgcHJlIGRyYXduIGJ5IGRyYXdTaGFkb3cuCiAgICAkLmpxcGxvdC5CYXJSZW5kZXJlci5wcm90b3R5cGUuZHJhd1NoYWRvdyA9IGZ1bmN0aW9uKGN0eCwgZ3JpZERhdGEsIG9wdGlvbnMsIHBsb3QpIHsKICAgICAgICB2YXIgaTsKICAgICAgICB2YXIgb3B0cyA9IChvcHRpb25zICE9IHVuZGVmaW5lZCkgPyBvcHRpb25zIDoge307CiAgICAgICAgdmFyIHNoYWRvdyA9IChvcHRzLnNoYWRvdyAhPSB1bmRlZmluZWQpID8gb3B0cy5zaGFkb3cgOiB0aGlzLnNoYWRvdzsKICAgICAgICB2YXIgc2hvd0xpbmUgPSAob3B0cy5zaG93TGluZSAhPSB1bmRlZmluZWQpID8gb3B0cy5zaG93TGluZSA6IHRoaXMuc2hvd0xpbmU7CiAgICAgICAgdmFyIGZpbGwgPSAob3B0cy5maWxsICE9IHVuZGVmaW5lZCkgPyBvcHRzLmZpbGwgOiB0aGlzLmZpbGw7CiAgICAgICAgdmFyIHhheGlzID0gdGhpcy54YXhpczsKICAgICAgICB2YXIgeWF4aXMgPSB0aGlzLnlheGlzOwogICAgICAgIHZhciB4cCA9IHRoaXMuX3hheGlzLnNlcmllc191MnA7CiAgICAgICAgdmFyIHlwID0gdGhpcy5feWF4aXMuc2VyaWVzX3UycDsKICAgICAgICB2YXIgcG9pbnR4LCBwb2ludHMsIHBvaW50eSwgbnZhbHMsIG5zZXJpZXMsIHBvczsKICAgICAgICAKICAgICAgICBpZiAodGhpcy5fc3RhY2sgJiYgdGhpcy5zaGFkb3cpIHsKICAgICAgICAgICAgaWYgKHRoaXMuYmFyV2lkdGggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRCYXJXaWR0aC5jYWxsKHRoaXMpOwogICAgICAgICAgICB9CiAgICAgICAgCiAgICAgICAgICAgIHZhciB0ZW1wID0gdGhpcy5fcGxvdFNlcmllc0luZm8gPSB0aGlzLnJlbmRlcmVyLmNhbGNTZXJpZXNOdW1iZXJzLmNhbGwodGhpcyk7CiAgICAgICAgICAgIG52YWxzID0gdGVtcFswXTsKICAgICAgICAgICAgbnNlcmllcyA9IHRlbXBbMV07CiAgICAgICAgICAgIHBvcyA9IHRlbXBbMl07CiAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLl9zdGFjaykgewogICAgICAgICAgICAgICAgdGhpcy5fYmFyTnVkZ2UgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5fYmFyTnVkZ2UgPSAoLU1hdGguYWJzKG5zZXJpZXMvMiAtIDAuNSkgKyBwb3MpICogKHRoaXMuYmFyV2lkdGggKyB0aGlzLmJhclBhZGRpbmcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChzaG93TGluZSkgewogICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmICh0aGlzLmJhckRpcmVjdGlvbiA9PSAndmVydGljYWwnKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPGdyaWREYXRhLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFbaV1bMV0gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiYXNlID0gZ3JpZERhdGFbaV1bMF0gKyB0aGlzLl9iYXJOdWRnZTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHlzdGFydDsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3N0YWNrICYmIHRoaXMuX3ByZXZHcmlkRGF0YS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdGFydCA9IGdldFN0YXJ0KHRoaXMuaW5kZXgsIGksIHRoaXMuX3Bsb3REYXRhW2ldWzFdLCBwbG90LCAneScpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsbFRvWmVybykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdGFydCA9IHRoaXMuX3lheGlzLnNlcmllc191MnAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RhcnQgPSBjdHguY2FudmFzLmhlaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbYmFzZS10aGlzLmJhcldpZHRoLzIsIHlzdGFydF0pOwogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbYmFzZS10aGlzLmJhcldpZHRoLzIsIGdyaWREYXRhW2ldWzFdXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cy5wdXNoKFtiYXNlK3RoaXMuYmFyV2lkdGgvMiwgZ3JpZERhdGFbaV1bMV1dKTsKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnB1c2goW2Jhc2UrdGhpcy5iYXJXaWR0aC8yLCB5c3RhcnRdKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KGN0eCwgcG9pbnRzLCBvcHRzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5iYXJEaXJlY3Rpb24gPT0gJ2hvcml6b250YWwnKXsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8Z3JpZERhdGEubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVtpXVswXSA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJhc2UgPSBncmlkRGF0YVtpXVsxXSAtIHRoaXMuX2Jhck51ZGdlOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgeHN0YXJ0OwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fc3RhY2sgJiYgdGhpcy5fcHJldkdyaWREYXRhLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0gZ2V0U3RhcnQodGhpcy5pbmRleCwgaSwgdGhpcy5fcGxvdERhdGFbaV1bMF0sIHBsb3QsICd4Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5maWxsVG9aZXJvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0gdGhpcy5feGF4aXMuc2VyaWVzX3UycCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdGFydCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnB1c2goW3hzdGFydCwgYmFzZSt0aGlzLmJhcldpZHRoLzJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnB1c2goW2dyaWREYXRhW2ldWzBdLCBiYXNlK3RoaXMuYmFyV2lkdGgvMl0pOwogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbZ3JpZERhdGFbaV1bMF0sIGJhc2UtdGhpcy5iYXJXaWR0aC8yXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cy5wdXNoKFt4c3RhcnQsIGJhc2UtdGhpcy5iYXJXaWR0aC8yXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIHBvaW50cywgb3B0cyk7CiAgICAgICAgICAgICAgICAgICAgfSAgCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gICAKICAgICAgICAgICAgCiAgICAgICAgfQogICAgfTsKICAgIAogICAgZnVuY3Rpb24gcG9zdEluaXQodGFyZ2V0LCBkYXRhLCBvcHRpb25zKSB7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMuc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmICh0aGlzLnNlcmllc1tpXS5yZW5kZXJlci5jb25zdHJ1Y3RvciA9PSAkLmpxcGxvdC5CYXJSZW5kZXJlcikgewogICAgICAgICAgICAgICAgLy8gZG9uJ3QgYWxsb3cgbW91c2VvdmVyIGFuZCBtb3VzZWRvd24gYXQgc2FtZSB0aW1lLgogICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VyaWVzW2ldLmhpZ2hsaWdodE1vdXNlT3ZlcikgewogICAgICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzW2ldLmhpZ2hsaWdodE1vdXNlRG93biA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgCiAgICAvLyBjYWxsZWQgd2l0aGluIGNvbnRleHQgb2YgcGxvdAogICAgLy8gY3JlYXRlIGEgY2FudmFzIHdoaWNoIHdlIGNhbiBkcmF3IG9uLgogICAgLy8gaW5zZXJ0IGl0IGJlZm9yZSB0aGUgZXZlbnRDYW52YXMsIHNvIGV2ZW50Q2FudmFzIHdpbGwgc3RpbGwgY2FwdHVyZSBldmVudHMuCiAgICBmdW5jdGlvbiBwb3N0UGxvdERyYXcoKSB7CiAgICAgICAgLy8gTWVtb3J5IExlYWtzIHBhdGNoICAgIAogICAgICAgIGlmICh0aGlzLnBsdWdpbnMuYmFyUmVuZGVyZXIgJiYgdGhpcy5wbHVnaW5zLmJhclJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcykgewoKICAgICAgICAgICAgdGhpcy5wbHVnaW5zLmJhclJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5yZXNldENhbnZhcygpOwogICAgICAgICAgICB0aGlzLnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzID0gbnVsbDsKICAgICAgICB9CiAgICAgICAgIAogICAgICAgIHRoaXMucGx1Z2lucy5iYXJSZW5kZXJlciA9IHtoaWdobGlnaHRlZFNlcmllc0luZGV4Om51bGx9OwogICAgICAgIHRoaXMucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRDYW52YXMgPSBuZXcgJC5qcXBsb3QuR2VuZXJpY0NhbnZhcygpOwogICAgICAgIAogICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKHRoaXMucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywgJ2pxcGxvdC1iYXJSZW5kZXJlci1oaWdobGlnaHQtY2FudmFzJywgdGhpcy5fcGxvdERpbWVuc2lvbnMsIHRoaXMpKTsKICAgICAgICB0aGlzLnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnNldENvbnRleHQoKTsKICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJ21vdXNlbGVhdmUnLCB7cGxvdDp0aGlzfSwgZnVuY3Rpb24gKGV2KSB7IHVuaGlnaGxpZ2h0KGV2LmRhdGEucGxvdCk7IH0pOwogICAgfSAgIAogICAgCiAgICBmdW5jdGlvbiBoaWdobGlnaHQgKHBsb3QsIHNpZHgsIHBpZHgsIHBvaW50cykgewogICAgICAgIHZhciBzID0gcGxvdC5zZXJpZXNbc2lkeF07CiAgICAgICAgdmFyIGNhbnZhcyA9IHBsb3QucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7CiAgICAgICAgY2FudmFzLl9jdHguY2xlYXJSZWN0KDAsMCxjYW52YXMuX2N0eC5jYW52YXMud2lkdGgsIGNhbnZhcy5fY3R4LmNhbnZhcy5oZWlnaHQpOwogICAgICAgIHMuX2hpZ2hsaWdodGVkUG9pbnQgPSBwaWR4OwogICAgICAgIHBsb3QucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ID0gc2lkeDsKICAgICAgICB2YXIgb3B0cyA9IHtmaWxsU3R5bGU6IHMuaGlnaGxpZ2h0Q29sb3JzW3BpZHhdfTsKICAgICAgICBzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhjYW52YXMuX2N0eCwgcG9pbnRzLCBvcHRzKTsKICAgICAgICBjYW52YXMgPSBudWxsOwogICAgfQogICAgCiAgICBmdW5jdGlvbiB1bmhpZ2hsaWdodCAocGxvdCkgewogICAgICAgIHZhciBjYW52YXMgPSBwbG90LnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzOwogICAgICAgIGNhbnZhcy5fY3R4LmNsZWFyUmVjdCgwLDAsIGNhbnZhcy5fY3R4LmNhbnZhcy53aWR0aCwgY2FudmFzLl9jdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHBsb3Quc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHBsb3Quc2VyaWVzW2ldLl9oaWdobGlnaHRlZFBvaW50ID0gbnVsbDsKICAgICAgICB9CiAgICAgICAgcGxvdC5wbHVnaW5zLmJhclJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXggPSBudWxsOwogICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoJ2pxcGxvdERhdGFVbmhpZ2hsaWdodCcpOwogICAgICAgIGNhbnZhcyA9ICBudWxsOwogICAgfQogICAgCiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdmUoZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgaWYgKG5laWdoYm9yKSB7CiAgICAgICAgICAgIHZhciBpbnMgPSBbbmVpZ2hib3Iuc2VyaWVzSW5kZXgsIG5laWdoYm9yLnBvaW50SW5kZXgsIG5laWdoYm9yLmRhdGFdOwogICAgICAgICAgICB2YXIgZXZ0MSA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YU1vdXNlT3ZlcicpOwogICAgICAgICAgICBldnQxLnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgIGV2dDEucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQxLCBpbnMpOwogICAgICAgICAgICBpZiAocGxvdC5zZXJpZXNbaW5zWzBdXS5zaG93ICYmIHBsb3Quc2VyaWVzW2luc1swXV0uaGlnaGxpZ2h0TW91c2VPdmVyICYmCiAgICAgICAgICAgICAgICAhKGluc1swXSA9PSBwbG90LnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCAmJiBpbnNbMV0gPT0gcGxvdC5zZXJpZXNbaW5zWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpIHsKICAgICAgICAgICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ2pxcGxvdERhdGFIaWdobGlnaHQnKTsKICAgICAgICAgICAgICAgIGV2dC53aGljaCA9IGV2LndoaWNoOwogICAgICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoZXZ0LCBpbnMpOwogICAgICAgICAgICAgICAgaGlnaGxpZ2h0IChwbG90LCBuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IucG9pbnRzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChuZWlnaGJvciA9PSBudWxsKSB7CiAgICAgICAgICAgIHVuaGlnaGxpZ2h0IChwbG90KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlRG93bihldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAobmVpZ2hib3IpIHsKICAgICAgICAgICAgdmFyIGlucyA9IFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IuZGF0YV07CiAgICAgICAgICAgIGlmIChwbG90LnNlcmllc1tpbnNbMF1dLmhpZ2hsaWdodE1vdXNlRG93biAmJiAhKGluc1swXSA9PSBwbG90LnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCAmJiBpbnNbMV0gPT0gcGxvdC5zZXJpZXNbaW5zWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpIHsKICAgICAgICAgICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ2pxcGxvdERhdGFIaWdobGlnaHQnKTsKICAgICAgICAgICAgICAgIGV2dC53aGljaCA9IGV2LndoaWNoOwogICAgICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoZXZ0LCBpbnMpOwogICAgICAgICAgICAgICAgaGlnaGxpZ2h0IChwbG90LCBuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IucG9pbnRzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChuZWlnaGJvciA9PSBudWxsKSB7CiAgICAgICAgICAgIHVuaGlnaGxpZ2h0IChwbG90KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlVXAoZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgdmFyIGlkeCA9IHBsb3QucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4OwogICAgICAgIGlmIChpZHggIT0gbnVsbCAmJiBwbG90LnNlcmllc1tpZHhdLmhpZ2hsaWdodE1vdXNlRG93bikgewogICAgICAgICAgICB1bmhpZ2hsaWdodChwbG90KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIGlmIChuZWlnaGJvcikgewogICAgICAgICAgICB2YXIgaW5zID0gW25laWdoYm9yLnNlcmllc0luZGV4LCBuZWlnaGJvci5wb2ludEluZGV4LCBuZWlnaGJvci5kYXRhXTsKICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YUNsaWNrJyk7CiAgICAgICAgICAgIGV2dC53aGljaCA9IGV2LndoaWNoOwogICAgICAgICAgICBldnQucGFnZVggPSBldi5wYWdlWDsKICAgICAgICAgICAgZXZ0LnBhZ2VZID0gZXYucGFnZVk7CiAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoZXZ0LCBpbnMpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgZnVuY3Rpb24gaGFuZGxlUmlnaHRDbGljayhldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAobmVpZ2hib3IpIHsKICAgICAgICAgICAgdmFyIGlucyA9IFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IuZGF0YV07CiAgICAgICAgICAgIHZhciBpZHggPSBwbG90LnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDsKICAgICAgICAgICAgaWYgKGlkeCAhPSBudWxsICYmIHBsb3Quc2VyaWVzW2lkeF0uaGlnaGxpZ2h0TW91c2VEb3duKSB7CiAgICAgICAgICAgICAgICB1bmhpZ2hsaWdodChwbG90KTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgZXZ0ID0galF1ZXJ5LkV2ZW50KCdqcXBsb3REYXRhUmlnaHRDbGljaycpOwogICAgICAgICAgICBldnQud2hpY2ggPSBldi53aGljaDsKICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKGV2dCwgaW5zKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIAp9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.barRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGQpe2QuanFwbG90LkJhclJlbmRlcmVyPWZ1bmN0aW9uKCl7ZC5qcXBsb3QuTGluZVJlbmRlcmVyLmNhbGwodGhpcyl9O2QuanFwbG90LkJhclJlbmRlcmVyLnByb3RvdHlwZT1uZXcgZC5qcXBsb3QuTGluZVJlbmRlcmVyKCk7ZC5qcXBsb3QuQmFyUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWQuanFwbG90LkJhclJlbmRlcmVyO2QuanFwbG90LkJhclJlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKG8scSl7dGhpcy5iYXJQYWRkaW5nPTg7dGhpcy5iYXJNYXJnaW49MTA7dGhpcy5iYXJEaXJlY3Rpb249InZlcnRpY2FsIjt0aGlzLmJhcldpZHRoPW51bGw7dGhpcy5zaGFkb3dPZmZzZXQ9Mjt0aGlzLnNoYWRvd0RlcHRoPTU7dGhpcy5zaGFkb3dBbHBoYT0wLjA4O3RoaXMud2F0ZXJmYWxsPWZhbHNlO3RoaXMuZ3JvdXBzPTE7dGhpcy52YXJ5QmFyQ29sb3I9ZmFsc2U7dGhpcy5oaWdobGlnaHRNb3VzZU92ZXI9dHJ1ZTt0aGlzLmhpZ2hsaWdodE1vdXNlRG93bj1mYWxzZTt0aGlzLmhpZ2hsaWdodENvbG9ycz1bXTt0aGlzLnRyYW5zcG9zZWREYXRhPXRydWU7dGhpcy5yZW5kZXJlci5hbmltYXRpb249e3Nob3c6ZmFsc2UsZGlyZWN0aW9uOiJkb3duIixzcGVlZDozMDAwLF9zdXBwb3J0ZWQ6dHJ1ZX07dGhpcy5fdHlwZT0iYmFyIjtpZihvLmhpZ2hsaWdodE1vdXNlRG93biYmby5oaWdobGlnaHRNb3VzZU92ZXI9PW51bGwpe28uaGlnaGxpZ2h0TW91c2VPdmVyPWZhbHNlfWQuZXh0ZW5kKHRydWUsdGhpcyxvKTtkLmV4dGVuZCh0cnVlLHRoaXMucmVuZGVyZXIsbyk7dGhpcy5maWxsPXRydWU7aWYodGhpcy5iYXJEaXJlY3Rpb249PT0iaG9yaXpvbnRhbCImJnRoaXMucmVuZGVyZXJPcHRpb25zLmFuaW1hdGlvbiYmdGhpcy5yZW5kZXJlck9wdGlvbnMuYW5pbWF0aW9uLmRpcmVjdGlvbj09bnVsbCl7dGhpcy5yZW5kZXJlci5hbmltYXRpb24uZGlyZWN0aW9uPSJsZWZ0In1pZih0aGlzLndhdGVyZmFsbCl7dGhpcy5maWxsVG9aZXJvPWZhbHNlO3RoaXMuZGlzYWJsZVN0YWNrPXRydWV9aWYodGhpcy5iYXJEaXJlY3Rpb249PSJ2ZXJ0aWNhbCIpe3RoaXMuX3ByaW1hcnlBeGlzPSJfeGF4aXMiO3RoaXMuX3N0YWNrQXhpcz0ieSI7dGhpcy5maWxsQXhpcz0ieSJ9ZWxzZXt0aGlzLl9wcmltYXJ5QXhpcz0iX3lheGlzIjt0aGlzLl9zdGFja0F4aXM9IngiO3RoaXMuZmlsbEF4aXM9IngifXRoaXMuX2hpZ2hsaWdodGVkUG9pbnQ9bnVsbDt0aGlzLl9wbG90U2VyaWVzSW5mbz1udWxsO3RoaXMuX2RhdGFDb2xvcnM9W107dGhpcy5fYmFyUG9pbnRzPVtdO3ZhciBwPXtsaW5lSm9pbjoibWl0ZXIiLGxpbmVDYXA6InJvdW5kIixmaWxsOnRydWUsaXNhcmM6ZmFsc2Usc3Ryb2tlU3R5bGU6dGhpcy5jb2xvcixmaWxsU3R5bGU6dGhpcy5jb2xvcixjbG9zZVBhdGg6dGhpcy5maWxsfTt0aGlzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuaW5pdChwKTt2YXIgbj17bGluZUpvaW46Im1pdGVyIixsaW5lQ2FwOiJyb3VuZCIsZmlsbDp0cnVlLGlzYXJjOmZhbHNlLGFuZ2xlOnRoaXMuc2hhZG93QW5nbGUsb2Zmc2V0OnRoaXMuc2hhZG93T2Zmc2V0LGFscGhhOnRoaXMuc2hhZG93QWxwaGEsZGVwdGg6dGhpcy5zaGFkb3dEZXB0aCxjbG9zZVBhdGg6dGhpcy5maWxsfTt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmluaXQobik7cS5wb3N0SW5pdEhvb2tzLmFkZE9uY2UoaCk7cS5wb3N0RHJhd0hvb2tzLmFkZE9uY2Uoaik7cS5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90TW91c2VNb3ZlIixiKTtxLmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RNb3VzZURvd24iLGEpO3EuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdE1vdXNlVXAiLGwpO3EuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdENsaWNrIixlKTtxLmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RSaWdodENsaWNrIixtKX07ZnVuY3Rpb24gZyh0LHAsbyx3KXtpZih0aGlzLnJlbmRlcmVyT3B0aW9ucy5iYXJEaXJlY3Rpb249PSJob3Jpem9udGFsIil7dGhpcy5fc3RhY2tBeGlzPSJ4Ijt0aGlzLl9wcmltYXJ5QXhpcz0iX3lheGlzIn1pZih0aGlzLnJlbmRlcmVyT3B0aW9ucy53YXRlcmZhbGw9PXRydWUpe3RoaXMuX2RhdGE9ZC5leHRlbmQodHJ1ZSxbXSx0aGlzLmRhdGEpO3ZhciBzPTA7dmFyIHU9KCF0aGlzLnJlbmRlcmVyT3B0aW9ucy5iYXJEaXJlY3Rpb258fHRoaXMucmVuZGVyZXJPcHRpb25zLmJhckRpcmVjdGlvbj09PSJ2ZXJ0aWNhbCJ8fHRoaXMudHJhbnNwb3NlZERhdGE9PT1mYWxzZSk/MTowO2Zvcih2YXIgcT0wO3E8dGhpcy5kYXRhLmxlbmd0aDtxKyspe3MrPXRoaXMuZGF0YVtxXVt1XTtpZihxPjApe3RoaXMuZGF0YVtxXVt1XSs9dGhpcy5kYXRhW3EtMV1bdV19fXRoaXMuZGF0YVt0aGlzLmRhdGEubGVuZ3RoXT0odT09MSk/W3RoaXMuZGF0YS5sZW5ndGgrMSxzXTpbcyx0aGlzLmRhdGEubGVuZ3RoKzFdO3RoaXMuX2RhdGFbdGhpcy5fZGF0YS5sZW5ndGhdPSh1PT0xKT9bdGhpcy5fZGF0YS5sZW5ndGgrMSxzXTpbcyx0aGlzLl9kYXRhLmxlbmd0aCsxXX1pZih0aGlzLnJlbmRlcmVyT3B0aW9ucy5ncm91cHM+MSl7dGhpcy5icmVha09uTnVsbD10cnVlO3ZhciBuPXRoaXMuZGF0YS5sZW5ndGg7dmFyIHY9cGFyc2VJbnQobi90aGlzLnJlbmRlcmVyT3B0aW9ucy5ncm91cHMsMTApO3ZhciByPTA7Zm9yKHZhciBxPXY7cTxuO3ErPXYpe3RoaXMuZGF0YS5zcGxpY2UocStyLDAsW251bGwsbnVsbF0pO3RoaXMuX3Bsb3REYXRhLnNwbGljZShxK3IsMCxbbnVsbCxudWxsXSk7dGhpcy5fc3RhY2tEYXRhLnNwbGljZShxK3IsMCxbbnVsbCxudWxsXSk7cisrfWZvcihxPTA7cTx0aGlzLmRhdGEubGVuZ3RoO3ErKyl7aWYodGhpcy5fcHJpbWFyeUF4aXM9PSJfeGF4aXMiKXt0aGlzLmRhdGFbcV1bMF09cSsxO3RoaXMuX3Bsb3REYXRhW3FdWzBdPXErMTt0aGlzLl9zdGFja0RhdGFbcV1bMF09cSsxfWVsc2V7dGhpcy5kYXRhW3FdWzFdPXErMTt0aGlzLl9wbG90RGF0YVtxXVsxXT1xKzE7dGhpcy5fc3RhY2tEYXRhW3FdWzFdPXErMX19fX1kLmpxcGxvdC5wcmVTZXJpZXNJbml0SG9va3MucHVzaChnKTtkLmpxcGxvdC5CYXJSZW5kZXJlci5wcm90b3R5cGUuY2FsY1Nlcmllc051bWJlcnM9ZnVuY3Rpb24oKXt2YXIgcj0wO3ZhciB0PTA7dmFyIHE9dGhpc1t0aGlzLl9wcmltYXJ5QXhpc107dmFyIHAsbyx1O2Zvcih2YXIgbj0wO248cS5fc2VyaWVzLmxlbmd0aDtuKyspe289cS5fc2VyaWVzW25dO2lmKG89PT10aGlzKXt1PW59aWYoby5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09ZC5qcXBsb3QuQmFyUmVuZGVyZXIpe3IrPW8uZGF0YS5sZW5ndGg7dCs9MX19cmV0dXJuW3IsdCx1XX07ZC5qcXBsb3QuQmFyUmVuZGVyZXIucHJvdG90eXBlLnNldEJhcldpZHRoPWZ1bmN0aW9uKCl7dmFyIHE7dmFyIG49MDt2YXIgbz0wO3ZhciB0PXRoaXNbdGhpcy5fcHJpbWFyeUF4aXNdO3ZhciB4LHIsdjt2YXIgdz10aGlzLl9wbG90U2VyaWVzSW5mbz10aGlzLnJlbmRlcmVyLmNhbGNTZXJpZXNOdW1iZXJzLmNhbGwodGhpcyk7bj13WzBdO289d1sxXTt2YXIgdT10Lm51bWJlclRpY2tzO3ZhciBwPSh1LTEpLzI7aWYodC5uYW1lPT0ieGF4aXMifHx0Lm5hbWU9PSJ4MmF4aXMiKXtpZih0aGlzLl9zdGFjayl7dGhpcy5iYXJXaWR0aD0odC5fb2Zmc2V0cy5tYXgtdC5fb2Zmc2V0cy5taW4pL24qby10aGlzLmJhck1hcmdpbn1lbHNle3RoaXMuYmFyV2lkdGg9KCh0Ll9vZmZzZXRzLm1heC10Ll9vZmZzZXRzLm1pbikvcC10aGlzLmJhclBhZGRpbmcqKG8tMSktdGhpcy5iYXJNYXJnaW4qMikvb319ZWxzZXtpZih0aGlzLl9zdGFjayl7dGhpcy5iYXJXaWR0aD0odC5fb2Zmc2V0cy5taW4tdC5fb2Zmc2V0cy5tYXgpL24qby10aGlzLmJhck1hcmdpbn1lbHNle3RoaXMuYmFyV2lkdGg9KCh0Ll9vZmZzZXRzLm1pbi10Ll9vZmZzZXRzLm1heCkvcC10aGlzLmJhclBhZGRpbmcqKG8tMSktdGhpcy5iYXJNYXJnaW4qMikvb319cmV0dXJuW24sb119O2Z1bmN0aW9uIGYobyl7dmFyIHE9W107Zm9yKHZhciBzPTA7czxvLmxlbmd0aDtzKyspe3ZhciByPWQuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyhvW3NdKTt2YXIgbj1bclswXSxyWzFdLHJbMl1dO3ZhciB0PW5bMF0rblsxXStuWzJdO2Zvcih2YXIgcD0wO3A8MztwKyspe25bcF09KHQ+NTcwKT9uW3BdKjAuODpuW3BdKzAuMyooMjU1LW5bcF0pO25bcF09cGFyc2VJbnQobltwXSwxMCl9cS5wdXNoKCJyZ2IoIituWzBdKyIsIituWzFdKyIsIituWzJdKyIpIil9cmV0dXJuIHF9ZnVuY3Rpb24gaSh2LHUscyx0LG8pe3ZhciBxPXYsdz12LTEsbixwLHI9KG89PT0ieCIpPzA6MTtpZihxPjApe3A9dC5zZXJpZXNbd10uX3Bsb3REYXRhW3VdW3JdO2lmKChzKnApPDApe249aSh3LHUscyx0LG8pfWVsc2V7bj10LnNlcmllc1t3XS5ncmlkRGF0YVt1XVtyXX19ZWxzZXtuPShyPT09MCk/dC5zZXJpZXNbcV0uX3hheGlzLnNlcmllc191MnAoMCk6dC5zZXJpZXNbcV0uX3lheGlzLnNlcmllc191MnAoMCl9cmV0dXJuIG59ZC5qcXBsb3QuQmFyUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oRSxMLHEsRyl7dmFyIEk7dmFyIEE9ZC5leHRlbmQoe30scSk7dmFyIHc9KEEuc2hhZG93IT11bmRlZmluZWQpP0Euc2hhZG93OnRoaXMuc2hhZG93O3ZhciBPPShBLnNob3dMaW5lIT11bmRlZmluZWQpP0Euc2hvd0xpbmU6dGhpcy5zaG93TGluZTt2YXIgRj0oQS5maWxsIT11bmRlZmluZWQpP0EuZmlsbDp0aGlzLmZpbGw7dmFyIHA9dGhpcy54YXhpczt2YXIgSj10aGlzLnlheGlzO3ZhciB5PXRoaXMuX3hheGlzLnNlcmllc191MnA7dmFyIEs9dGhpcy5feWF4aXMuc2VyaWVzX3UycDt2YXIgRCxDO3RoaXMuX2RhdGFDb2xvcnM9W107dGhpcy5fYmFyUG9pbnRzPVtdO2lmKHRoaXMuYmFyV2lkdGg9PW51bGwpe3RoaXMucmVuZGVyZXIuc2V0QmFyV2lkdGguY2FsbCh0aGlzKX12YXIgTj10aGlzLl9wbG90U2VyaWVzSW5mbz10aGlzLnJlbmRlcmVyLmNhbGNTZXJpZXNOdW1iZXJzLmNhbGwodGhpcyk7dmFyIHg9TlswXTt2YXIgdj1OWzFdO3ZhciBzPU5bMl07dmFyIEg9W107aWYodGhpcy5fc3RhY2spe3RoaXMuX2Jhck51ZGdlPTB9ZWxzZXt0aGlzLl9iYXJOdWRnZT0oLU1hdGguYWJzKHYvMi0wLjUpK3MpKih0aGlzLmJhcldpZHRoK3RoaXMuYmFyUGFkZGluZyl9aWYoTyl7dmFyIHU9bmV3IGQuanFwbG90LkNvbG9yR2VuZXJhdG9yKHRoaXMubmVnYXRpdmVTZXJpZXNDb2xvcnMpO3ZhciBCPW5ldyBkLmpxcGxvdC5Db2xvckdlbmVyYXRvcih0aGlzLnNlcmllc0NvbG9ycyk7dmFyIE09dS5nZXQodGhpcy5pbmRleCk7aWYoIXRoaXMudXNlTmVnYXRpdmVDb2xvcnMpe009QS5maWxsU3R5bGV9dmFyIHQ9QS5maWxsU3R5bGU7dmFyIHI7dmFyIFA7dmFyIG87aWYodGhpcy5iYXJEaXJlY3Rpb249PSJ2ZXJ0aWNhbCIpe2Zvcih2YXIgST0wO0k8TC5sZW5ndGg7SSsrKXtpZighdGhpcy5fc3RhY2smJnRoaXMuZGF0YVtJXVsxXT09bnVsbCl7Y29udGludWV9SD1bXTtyPUxbSV1bMF0rdGhpcy5fYmFyTnVkZ2U7aWYodGhpcy5fc3RhY2smJnRoaXMuX3ByZXZHcmlkRGF0YS5sZW5ndGgpe289aSh0aGlzLmluZGV4LEksdGhpcy5fcGxvdERhdGFbSV1bMV0sRywieSIpfWVsc2V7aWYodGhpcy5maWxsVG9aZXJvKXtvPXRoaXMuX3lheGlzLnNlcmllc191MnAoMCl9ZWxzZXtpZih0aGlzLndhdGVyZmFsbCYmST4wJiZJPHRoaXMuZ3JpZERhdGEubGVuZ3RoLTEpe289dGhpcy5ncmlkRGF0YVtJLTFdWzFdfWVsc2V7aWYodGhpcy53YXRlcmZhbGwmJkk9PTAmJkk8dGhpcy5ncmlkRGF0YS5sZW5ndGgtMSl7aWYodGhpcy5feWF4aXMubWluPD0wJiZ0aGlzLl95YXhpcy5tYXg+PTApe289dGhpcy5feWF4aXMuc2VyaWVzX3UycCgwKX1lbHNle2lmKHRoaXMuX3lheGlzLm1pbj4wKXtvPUUuY2FudmFzLmhlaWdodH1lbHNle289MH19fWVsc2V7aWYodGhpcy53YXRlcmZhbGwmJkk9PXRoaXMuZ3JpZERhdGEubGVuZ3RoLTEpe2lmKHRoaXMuX3lheGlzLm1pbjw9MCYmdGhpcy5feWF4aXMubWF4Pj0wKXtvPXRoaXMuX3lheGlzLnNlcmllc191MnAoMCl9ZWxzZXtpZih0aGlzLl95YXhpcy5taW4+MCl7bz1FLmNhbnZhcy5oZWlnaHR9ZWxzZXtvPTB9fX1lbHNle289RS5jYW52YXMuaGVpZ2h0fX19fX1pZigodGhpcy5maWxsVG9aZXJvJiZ0aGlzLl9wbG90RGF0YVtJXVsxXTwwKXx8KHRoaXMud2F0ZXJmYWxsJiZ0aGlzLl9kYXRhW0ldWzFdPDApKXtpZih0aGlzLnZhcnlCYXJDb2xvciYmIXRoaXMuX3N0YWNrKXtpZih0aGlzLnVzZU5lZ2F0aXZlQ29sb3JzKXtBLmZpbGxTdHlsZT11Lm5leHQoKX1lbHNle0EuZmlsbFN0eWxlPUIubmV4dCgpfX1lbHNle0EuZmlsbFN0eWxlPU19fWVsc2V7aWYodGhpcy52YXJ5QmFyQ29sb3ImJiF0aGlzLl9zdGFjayl7QS5maWxsU3R5bGU9Qi5uZXh0KCl9ZWxzZXtBLmZpbGxTdHlsZT10fX1pZighdGhpcy5maWxsVG9aZXJvfHx0aGlzLl9wbG90RGF0YVtJXVsxXT49MCl7SC5wdXNoKFtyLXRoaXMuYmFyV2lkdGgvMixvXSk7SC5wdXNoKFtyLXRoaXMuYmFyV2lkdGgvMixMW0ldWzFdXSk7SC5wdXNoKFtyK3RoaXMuYmFyV2lkdGgvMixMW0ldWzFdXSk7SC5wdXNoKFtyK3RoaXMuYmFyV2lkdGgvMixvXSl9ZWxzZXtILnB1c2goW3ItdGhpcy5iYXJXaWR0aC8yLExbSV1bMV1dKTtILnB1c2goW3ItdGhpcy5iYXJXaWR0aC8yLG9dKTtILnB1c2goW3IrdGhpcy5iYXJXaWR0aC8yLG9dKTtILnB1c2goW3IrdGhpcy5iYXJXaWR0aC8yLExbSV1bMV1dKX10aGlzLl9iYXJQb2ludHMucHVzaChIKTtpZih3JiYhdGhpcy5fc3RhY2spe3ZhciB6PWQuZXh0ZW5kKHRydWUse30sQSk7ZGVsZXRlIHouZmlsbFN0eWxlO3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhFLEgseil9dmFyIG49QS5maWxsU3R5bGV8fHRoaXMuY29sb3I7dGhpcy5fZGF0YUNvbG9ycy5wdXNoKG4pO3RoaXMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5kcmF3KEUsSCxBKX19ZWxzZXtpZih0aGlzLmJhckRpcmVjdGlvbj09Imhvcml6b250YWwiKXtmb3IodmFyIEk9MDtJPEwubGVuZ3RoO0krKyl7aWYoIXRoaXMuX3N0YWNrJiZ0aGlzLmRhdGFbSV1bMF09PW51bGwpe2NvbnRpbnVlfUg9W107cj1MW0ldWzFdLXRoaXMuX2Jhck51ZGdlO1A7aWYodGhpcy5fc3RhY2smJnRoaXMuX3ByZXZHcmlkRGF0YS5sZW5ndGgpe1A9aSh0aGlzLmluZGV4LEksdGhpcy5fcGxvdERhdGFbSV1bMF0sRywieCIpfWVsc2V7aWYodGhpcy5maWxsVG9aZXJvKXtQPXRoaXMuX3hheGlzLnNlcmllc191MnAoMCl9ZWxzZXtpZih0aGlzLndhdGVyZmFsbCYmST4wJiZJPHRoaXMuZ3JpZERhdGEubGVuZ3RoLTEpe1A9dGhpcy5ncmlkRGF0YVtJLTFdWzBdfWVsc2V7aWYodGhpcy53YXRlcmZhbGwmJkk9PTAmJkk8dGhpcy5ncmlkRGF0YS5sZW5ndGgtMSl7aWYodGhpcy5feGF4aXMubWluPD0wJiZ0aGlzLl94YXhpcy5tYXg+PTApe1A9dGhpcy5feGF4aXMuc2VyaWVzX3UycCgwKX1lbHNle2lmKHRoaXMuX3hheGlzLm1pbj4wKXtQPTB9ZWxzZXtQPTB9fX1lbHNle2lmKHRoaXMud2F0ZXJmYWxsJiZJPT10aGlzLmdyaWREYXRhLmxlbmd0aC0xKXtpZih0aGlzLl94YXhpcy5taW48PTAmJnRoaXMuX3hheGlzLm1heD49MCl7UD10aGlzLl94YXhpcy5zZXJpZXNfdTJwKDApfWVsc2V7aWYodGhpcy5feGF4aXMubWluPjApe1A9MH1lbHNle1A9RS5jYW52YXMud2lkdGh9fX1lbHNle1A9MH19fX19aWYoKHRoaXMuZmlsbFRvWmVybyYmdGhpcy5fcGxvdERhdGFbSV1bMF08MCl8fCh0aGlzLndhdGVyZmFsbCYmdGhpcy5fZGF0YVtJXVswXTwwKSl7aWYodGhpcy52YXJ5QmFyQ29sb3ImJiF0aGlzLl9zdGFjayl7aWYodGhpcy51c2VOZWdhdGl2ZUNvbG9ycyl7QS5maWxsU3R5bGU9dS5uZXh0KCl9ZWxzZXtBLmZpbGxTdHlsZT1CLm5leHQoKX19ZWxzZXtBLmZpbGxTdHlsZT1NfX1lbHNle2lmKHRoaXMudmFyeUJhckNvbG9yJiYhdGhpcy5fc3RhY2spe0EuZmlsbFN0eWxlPUIubmV4dCgpfWVsc2V7QS5maWxsU3R5bGU9dH19aWYoIXRoaXMuZmlsbFRvWmVyb3x8dGhpcy5fcGxvdERhdGFbSV1bMF0+PTApe0gucHVzaChbUCxyK3RoaXMuYmFyV2lkdGgvMl0pO0gucHVzaChbUCxyLXRoaXMuYmFyV2lkdGgvMl0pO0gucHVzaChbTFtJXVswXSxyLXRoaXMuYmFyV2lkdGgvMl0pO0gucHVzaChbTFtJXVswXSxyK3RoaXMuYmFyV2lkdGgvMl0pfWVsc2V7SC5wdXNoKFtMW0ldWzBdLHIrdGhpcy5iYXJXaWR0aC8yXSk7SC5wdXNoKFtMW0ldWzBdLHItdGhpcy5iYXJXaWR0aC8yXSk7SC5wdXNoKFtQLHItdGhpcy5iYXJXaWR0aC8yXSk7SC5wdXNoKFtQLHIrdGhpcy5iYXJXaWR0aC8yXSl9dGhpcy5fYmFyUG9pbnRzLnB1c2goSCk7aWYodyYmIXRoaXMuX3N0YWNrKXt2YXIgej1kLmV4dGVuZCh0cnVlLHt9LEEpO2RlbGV0ZSB6LmZpbGxTdHlsZTt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoRSxILHopfXZhciBuPUEuZmlsbFN0eWxlfHx0aGlzLmNvbG9yO3RoaXMuX2RhdGFDb2xvcnMucHVzaChuKTt0aGlzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhFLEgsQSl9fX19aWYodGhpcy5oaWdobGlnaHRDb2xvcnMubGVuZ3RoPT0wKXt0aGlzLmhpZ2hsaWdodENvbG9ycz1kLmpxcGxvdC5jb21wdXRlSGlnaGxpZ2h0Q29sb3JzKHRoaXMuX2RhdGFDb2xvcnMpfWVsc2V7aWYodHlwZW9mKHRoaXMuaGlnaGxpZ2h0Q29sb3JzKT09InN0cmluZyIpe3ZhciBOPXRoaXMuaGlnaGxpZ2h0Q29sb3JzO3RoaXMuaGlnaGxpZ2h0Q29sb3JzPVtdO2Zvcih2YXIgST0wO0k8dGhpcy5fZGF0YUNvbG9ycy5sZW5ndGg7SSsrKXt0aGlzLmhpZ2hsaWdodENvbG9ycy5wdXNoKE4pfX19fTtkLmpxcGxvdC5CYXJSZW5kZXJlci5wcm90b3R5cGUuZHJhd1NoYWRvdz1mdW5jdGlvbih6LEcscCxCKXt2YXIgRDt2YXIgdz0ocCE9dW5kZWZpbmVkKT9wOnt9O3ZhciB0PSh3LnNoYWRvdyE9dW5kZWZpbmVkKT93LnNoYWRvdzp0aGlzLnNoYWRvdzt2YXIgST0ody5zaG93TGluZSE9dW5kZWZpbmVkKT93LnNob3dMaW5lOnRoaXMuc2hvd0xpbmU7dmFyIEE9KHcuZmlsbCE9dW5kZWZpbmVkKT93LmZpbGw6dGhpcy5maWxsO3ZhciBvPXRoaXMueGF4aXM7dmFyIEU9dGhpcy55YXhpczt2YXIgdj10aGlzLl94YXhpcy5zZXJpZXNfdTJwO3ZhciBGPXRoaXMuX3lheGlzLnNlcmllc191MnA7dmFyIHksQyx4LHUscyxyO2lmKHRoaXMuX3N0YWNrJiZ0aGlzLnNoYWRvdyl7aWYodGhpcy5iYXJXaWR0aD09bnVsbCl7dGhpcy5yZW5kZXJlci5zZXRCYXJXaWR0aC5jYWxsKHRoaXMpfXZhciBIPXRoaXMuX3Bsb3RTZXJpZXNJbmZvPXRoaXMucmVuZGVyZXIuY2FsY1Nlcmllc051bWJlcnMuY2FsbCh0aGlzKTt1PUhbMF07cz1IWzFdO3I9SFsyXTtpZih0aGlzLl9zdGFjayl7dGhpcy5fYmFyTnVkZ2U9MH1lbHNle3RoaXMuX2Jhck51ZGdlPSgtTWF0aC5hYnMocy8yLTAuNSkrcikqKHRoaXMuYmFyV2lkdGgrdGhpcy5iYXJQYWRkaW5nKX1pZihJKXtpZih0aGlzLmJhckRpcmVjdGlvbj09InZlcnRpY2FsIil7Zm9yKHZhciBEPTA7RDxHLmxlbmd0aDtEKyspe2lmKHRoaXMuZGF0YVtEXVsxXT09bnVsbCl7Y29udGludWV9Qz1bXTt2YXIgcT1HW0RdWzBdK3RoaXMuX2Jhck51ZGdlO3ZhciBuO2lmKHRoaXMuX3N0YWNrJiZ0aGlzLl9wcmV2R3JpZERhdGEubGVuZ3RoKXtuPWkodGhpcy5pbmRleCxELHRoaXMuX3Bsb3REYXRhW0RdWzFdLEIsInkiKX1lbHNle2lmKHRoaXMuZmlsbFRvWmVybyl7bj10aGlzLl95YXhpcy5zZXJpZXNfdTJwKDApfWVsc2V7bj16LmNhbnZhcy5oZWlnaHR9fUMucHVzaChbcS10aGlzLmJhcldpZHRoLzIsbl0pO0MucHVzaChbcS10aGlzLmJhcldpZHRoLzIsR1tEXVsxXV0pO0MucHVzaChbcSt0aGlzLmJhcldpZHRoLzIsR1tEXVsxXV0pO0MucHVzaChbcSt0aGlzLmJhcldpZHRoLzIsbl0pO3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyh6LEMsdyl9fWVsc2V7aWYodGhpcy5iYXJEaXJlY3Rpb249PSJob3Jpem9udGFsIil7Zm9yKHZhciBEPTA7RDxHLmxlbmd0aDtEKyspe2lmKHRoaXMuZGF0YVtEXVswXT09bnVsbCl7Y29udGludWV9Qz1bXTt2YXIgcT1HW0RdWzFdLXRoaXMuX2Jhck51ZGdlO3ZhciBKO2lmKHRoaXMuX3N0YWNrJiZ0aGlzLl9wcmV2R3JpZERhdGEubGVuZ3RoKXtKPWkodGhpcy5pbmRleCxELHRoaXMuX3Bsb3REYXRhW0RdWzBdLEIsIngiKX1lbHNle2lmKHRoaXMuZmlsbFRvWmVybyl7Sj10aGlzLl94YXhpcy5zZXJpZXNfdTJwKDApfWVsc2V7Sj0wfX1DLnB1c2goW0oscSt0aGlzLmJhcldpZHRoLzJdKTtDLnB1c2goW0dbRF1bMF0scSt0aGlzLmJhcldpZHRoLzJdKTtDLnB1c2goW0dbRF1bMF0scS10aGlzLmJhcldpZHRoLzJdKTtDLnB1c2goW0oscS10aGlzLmJhcldpZHRoLzJdKTt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoeixDLHcpfX19fX19O2Z1bmN0aW9uIGgocSxwLG4pe2Zvcih2YXIgbz0wO288dGhpcy5zZXJpZXMubGVuZ3RoO28rKyl7aWYodGhpcy5zZXJpZXNbb10ucmVuZGVyZXIuY29uc3RydWN0b3I9PWQuanFwbG90LkJhclJlbmRlcmVyKXtpZih0aGlzLnNlcmllc1tvXS5oaWdobGlnaHRNb3VzZU92ZXIpe3RoaXMuc2VyaWVzW29dLmhpZ2hsaWdodE1vdXNlRG93bj1mYWxzZX19fX1mdW5jdGlvbiBqKCl7aWYodGhpcy5wbHVnaW5zLmJhclJlbmRlcmVyJiZ0aGlzLnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzKXt0aGlzLnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnJlc2V0Q2FudmFzKCk7dGhpcy5wbHVnaW5zLmJhclJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcz1udWxsfXRoaXMucGx1Z2lucy5iYXJSZW5kZXJlcj17aGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDpudWxsfTt0aGlzLnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzPW5ldyBkLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUodGhpcy5wbHVnaW5zLmJhclJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCJqcXBsb3QtYmFyUmVuZGVyZXItaGlnaGxpZ2h0LWNhbnZhcyIsdGhpcy5fcGxvdERpbWVuc2lvbnMsdGhpcykpO3RoaXMucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuc2V0Q29udGV4dCgpO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgibW91c2VsZWF2ZSIse3Bsb3Q6dGhpc30sZnVuY3Rpb24obil7ayhuLmRhdGEucGxvdCl9KX1mdW5jdGlvbiBjKHUsdCxxLHApe3ZhciBvPXUuc2VyaWVzW3RdO3ZhciBuPXUucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7bi5fY3R4LmNsZWFyUmVjdCgwLDAsbi5fY3R4LmNhbnZhcy53aWR0aCxuLl9jdHguY2FudmFzLmhlaWdodCk7by5faGlnaGxpZ2h0ZWRQb2ludD1xO3UucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4PXQ7dmFyIHI9e2ZpbGxTdHlsZTpvLmhpZ2hsaWdodENvbG9yc1txXX07by5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmRyYXcobi5fY3R4LHAscik7bj1udWxsfWZ1bmN0aW9uIGsocCl7dmFyIG49cC5wbHVnaW5zLmJhclJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcztuLl9jdHguY2xlYXJSZWN0KDAsMCxuLl9jdHguY2FudmFzLndpZHRoLG4uX2N0eC5jYW52YXMuaGVpZ2h0KTtmb3IodmFyIG89MDtvPHAuc2VyaWVzLmxlbmd0aDtvKyspe3Auc2VyaWVzW29dLl9oaWdobGlnaHRlZFBvaW50PW51bGx9cC5wbHVnaW5zLmJhclJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg9bnVsbDtwLnRhcmdldC50cmlnZ2VyKCJqcXBsb3REYXRhVW5oaWdobGlnaHQiKTtuPW51bGx9ZnVuY3Rpb24gYihyLHEsdSx0LHMpe2lmKHQpe3ZhciBwPVt0LnNlcmllc0luZGV4LHQucG9pbnRJbmRleCx0LmRhdGFdO3ZhciBvPWpRdWVyeS5FdmVudCgianFwbG90RGF0YU1vdXNlT3ZlciIpO28ucGFnZVg9ci5wYWdlWDtvLnBhZ2VZPXIucGFnZVk7cy50YXJnZXQudHJpZ2dlcihvLHApO2lmKHMuc2VyaWVzW3BbMF1dLnNob3cmJnMuc2VyaWVzW3BbMF1dLmhpZ2hsaWdodE1vdXNlT3ZlciYmIShwWzBdPT1zLnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCYmcFsxXT09cy5zZXJpZXNbcFswXV0uX2hpZ2hsaWdodGVkUG9pbnQpKXt2YXIgbj1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFIaWdobGlnaHQiKTtuLndoaWNoPXIud2hpY2g7bi5wYWdlWD1yLnBhZ2VYO24ucGFnZVk9ci5wYWdlWTtzLnRhcmdldC50cmlnZ2VyKG4scCk7YyhzLHQuc2VyaWVzSW5kZXgsdC5wb2ludEluZGV4LHQucG9pbnRzKX19ZWxzZXtpZih0PT1udWxsKXtrKHMpfX19ZnVuY3Rpb24gYShxLHAsdCxzLHIpe2lmKHMpe3ZhciBvPVtzLnNlcmllc0luZGV4LHMucG9pbnRJbmRleCxzLmRhdGFdO2lmKHIuc2VyaWVzW29bMF1dLmhpZ2hsaWdodE1vdXNlRG93biYmIShvWzBdPT1yLnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCYmb1sxXT09ci5zZXJpZXNbb1swXV0uX2hpZ2hsaWdodGVkUG9pbnQpKXt2YXIgbj1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFIaWdobGlnaHQiKTtuLndoaWNoPXEud2hpY2g7bi5wYWdlWD1xLnBhZ2VYO24ucGFnZVk9cS5wYWdlWTtyLnRhcmdldC50cmlnZ2VyKG4sbyk7YyhyLHMuc2VyaWVzSW5kZXgscy5wb2ludEluZGV4LHMucG9pbnRzKX19ZWxzZXtpZihzPT1udWxsKXtrKHIpfX19ZnVuY3Rpb24gbChwLG8scyxyLHEpe3ZhciBuPXEucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4O2lmKG4hPW51bGwmJnEuc2VyaWVzW25dLmhpZ2hsaWdodE1vdXNlRG93bil7ayhxKX19ZnVuY3Rpb24gZShxLHAsdCxzLHIpe2lmKHMpe3ZhciBvPVtzLnNlcmllc0luZGV4LHMucG9pbnRJbmRleCxzLmRhdGFdO3ZhciBuPWpRdWVyeS5FdmVudCgianFwbG90RGF0YUNsaWNrIik7bi53aGljaD1xLndoaWNoO24ucGFnZVg9cS5wYWdlWDtuLnBhZ2VZPXEucGFnZVk7ci50YXJnZXQudHJpZ2dlcihuLG8pfX1mdW5jdGlvbiBtKHIscSx1LHQscyl7aWYodCl7dmFyIHA9W3Quc2VyaWVzSW5kZXgsdC5wb2ludEluZGV4LHQuZGF0YV07dmFyIG49cy5wbHVnaW5zLmJhclJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg7aWYobiE9bnVsbCYmcy5zZXJpZXNbbl0uaGlnaGxpZ2h0TW91c2VEb3duKXtrKHMpfXZhciBvPWpRdWVyeS5FdmVudCgianFwbG90RGF0YVJpZ2h0Q2xpY2siKTtvLndoaWNoPXIud2hpY2g7by5wYWdlWD1yLnBhZ2VYO28ucGFnZVk9ci5wYWdlWTtzLnRhcmdldC50cmlnZ2VyKG8scCl9fX0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.BezierCurveRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLy8gQ2xhc3M6ICQuanFwbG90LkJlemllckN1cnZlUmVuZGVyZXIuanMKICAgIC8vIFJlbmRlcmVyIHdoaWNoIGRyYXdzIGxpbmVzIGFzIHN0YWNrZWQgYmV6aWVyIGN1cnZlcy4KICAgIC8vIERhdGEgZm9yIHRoZSBsaW5lIHdpbGwgbm90IGJlIHNwZWNpZmllZCBhcyBhbiBhcnJheSBvZgogICAgLy8gW3gsIHldIGRhdGEgcG9pbnQgdmFsdWVzLCBidXQgYXMgYSBhbiBhcnJheSBvZiBbc3RhcnQgcGlvbnQsIGJlemllciBjdXJ2ZV0KICAgIC8vIFNvLCB0aGUgbGluZSBpcyBzcGVjaWZpZWQgYXM6IFtbeHN0YXJ0LCB5c3RhcnRdLCBbY3AxeCwgY3AxeSwgY3AyeCwgY3AyeSwgeGVuZCwgeWVuZF1dLgogICAgJC5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlciA9IGZ1bmN0aW9uKCl7CiAgICAgICAgJC5qcXBsb3QuTGluZVJlbmRlcmVyLmNhbGwodGhpcyk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5CZXppZXJDdXJ2ZVJlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTsKICAgICQuanFwbG90LkJlemllckN1cnZlUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlcjsKCiAgICAKICAgIC8vIE1ldGhvZDogc2V0R3JpZERhdGEKICAgIC8vIGNvbnZlcnRzIHRoZSB1c2VyIGRhdGEgdmFsdWVzIHRvIGdyaWQgY29vcmRpbmF0ZXMgYW5kIHN0b3JlcyB0aGVtCiAgICAvLyBpbiB0aGUgZ3JpZERhdGEgYXJyYXkuCiAgICAvLyBDYWxsZWQgd2l0aCBzY29wZSBvZiBhIHNlcmllcy4KICAgICQuanFwbG90LkJlemllckN1cnZlUmVuZGVyZXIucHJvdG90eXBlLnNldEdyaWREYXRhID0gZnVuY3Rpb24ocGxvdCkgewogICAgICAgIC8vIHJlY2FsY3VsYXRlIHRoZSBncmlkIGRhdGEKICAgICAgICB2YXIgeHAgPSB0aGlzLl94YXhpcy5zZXJpZXNfdTJwOwogICAgICAgIHZhciB5cCA9IHRoaXMuX3lheGlzLnNlcmllc191MnA7CiAgICAgICAgLy8gdGhpcy5fcGxvdERhdGEgc2hvdWxkIGJlIHNhbWUgYXMgdGhpcy5kYXRhCiAgICAgICAgdmFyIGRhdGEgPSB0aGlzLmRhdGE7CiAgICAgICAgdGhpcy5ncmlkRGF0YSA9IFtdOwogICAgICAgIHRoaXMuX3ByZXZHcmlkRGF0YSA9IFtdOwogICAgICAgIC8vIGlmIHNlcmllc0luZGV4ID0gMCwgZmlsbCB0byB4IGF4aXMuCiAgICAgICAgLy8gaWYgc2VyaWVzSW5kZXggPiAwLCBmaWxsIHRvIHByZXZpb3VzIHNlcmllcyBkYXRhLgogICAgICAgIHZhciBpZHggPSB0aGlzLmluZGV4OwogICAgICAgIGlmIChkYXRhLmxlbmd0aCA9PSAyKSB7CiAgICAgICAgICAgIGlmIChpZHggPT0gMCkgewogICAgICAgICAgICAgICAgdGhpcy5ncmlkRGF0YSA9IFsKICAgICAgICAgICAgICAgICAgICBbeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVswXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbMF1bMV0pXSwgCiAgICAgICAgICAgICAgICAgICAgW3hwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMV1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzFdWzFdKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIHhwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMV1bMl0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzFdWzNdKSwgIAogICAgICAgICAgICAgICAgICAgICAgICB4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzFdWzRdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVsxXVs1XSldLAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzFdWzRdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgdGhpcy5feWF4aXMubWluKV0sCiAgICAgICAgICAgICAgICAgICAgW3hwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMF1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCB0aGlzLl95YXhpcy5taW4pXQogICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBwc2QgPSBwbG90LnNlcmllc1tpZHgtMV0uZGF0YTsKICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEgPSBbCiAgICAgICAgICAgICAgICAgICAgW3hwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMF1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzBdWzFdKV0sIAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzFdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVsxXVsxXSksIAogICAgICAgICAgICAgICAgICAgICAgICB4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzFdWzJdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVsxXVszXSksICAKICAgICAgICAgICAgICAgICAgICAgICAgeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVsxXVs0XSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbMV1bNV0pXSwKICAgICAgICAgICAgICAgICAgICBbeHAuY2FsbCh0aGlzLl94YXhpcywgcHNkWzFdWzRdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgcHNkWzFdWzVdKV0sCiAgICAgICAgICAgICAgICAgICAgW3hwLmNhbGwodGhpcy5feGF4aXMsIHBzZFsxXVsyXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIHBzZFsxXVszXSksIAogICAgICAgICAgICAgICAgICAgICAgICB4cC5jYWxsKHRoaXMuX3hheGlzLCBwc2RbMV1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBwc2RbMV1bMV0pLCAgCiAgICAgICAgICAgICAgICAgICAgICAgIHhwLmNhbGwodGhpcy5feGF4aXMsIHBzZFswXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIHBzZFswXVsxXSldCiAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBpZiAoaWR4ID09IDApIHsKICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEgPSBbCiAgICAgICAgICAgICAgICAgICAgW3hwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMF1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzBdWzFdKV0sIAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzFdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVsxXVsxXSksIAogICAgICAgICAgICAgICAgICAgICAgICB4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzJdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVsyXVsxXSksICAKICAgICAgICAgICAgICAgICAgICAgICAgeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVszXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbM11bMV0pXSwKICAgICAgICAgICAgICAgICAgICBbeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVszXVsxXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIHRoaXMuX3lheGlzLm1pbildLAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzBdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgdGhpcy5feWF4aXMubWluKV0KICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgcHNkID0gcGxvdC5zZXJpZXNbaWR4LTFdLmRhdGE7CiAgICAgICAgICAgICAgICB0aGlzLmdyaWREYXRhID0gWwogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzBdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVswXVsxXSldLCAKICAgICAgICAgICAgICAgICAgICBbeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVsxXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbMV1bMV0pLCAKICAgICAgICAgICAgICAgICAgICAgICAgeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVsyXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbMl1bMV0pLCAgCiAgICAgICAgICAgICAgICAgICAgICAgIHhwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbM11bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzNdWzFdKV0sCiAgICAgICAgICAgICAgICAgICAgW3hwLmNhbGwodGhpcy5feGF4aXMsIHBzZFszXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIHBzZFszXVsxXSldLAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBwc2RbMl1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBwc2RbMl1bMV0pLCAKICAgICAgICAgICAgICAgICAgICAgICAgeHAuY2FsbCh0aGlzLl94YXhpcywgcHNkWzFdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgcHNkWzFdWzFdKSwgIAogICAgICAgICAgICAgICAgICAgICAgICB4cC5jYWxsKHRoaXMuX3hheGlzLCBwc2RbMF1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBwc2RbMF1bMV0pXQogICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CiAgICAKICAgIC8vIE1ldGhvZDogbWFrZUdyaWREYXRhCiAgICAvLyBjb252ZXJ0cyBhbnkgYXJiaXRyYXJ5IGRhdGEgdmFsdWVzIHRvIGdyaWQgY29vcmRpbmF0ZXMgYW5kCiAgICAvLyByZXR1cm5zIHRoZW0uICBUaGlzIG1ldGhvZCBleGlzdHMgc28gdGhhdCBwbHVnaW5zIGNhbiB1c2UgYSBzZXJpZXMnCiAgICAvLyBsaW5lcmVuZGVyZXIgdG8gZ2VuZXJhdGUgZ3JpZCBkYXRhIHBvaW50cyB3aXRob3V0IG92ZXJ3cml0aW5nIHRoZQogICAgLy8gZ3JpZCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGF0IHNlcmllcy4KICAgIC8vIENhbGxlZCB3aXRoIHNjb3BlIG9mIGEgc2VyaWVzLgogICAgJC5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlci5wcm90b3R5cGUubWFrZUdyaWREYXRhID0gZnVuY3Rpb24oZGF0YSwgcGxvdCkgewogICAgICAgIC8vIHJlY2FsY3VsYXRlIHRoZSBncmlkIGRhdGEKICAgICAgICB2YXIgeHAgPSB0aGlzLl94YXhpcy5zZXJpZXNfdTJwOwogICAgICAgIHZhciB5cCA9IHRoaXMuX3lheGlzLnNlcmllc191MnA7CiAgICAgICAgdmFyIGdkID0gW107CiAgICAgICAgdmFyIHBnZCA9IFtdOwogICAgICAgIC8vIGlmIHNlcmllc0luZGV4ID0gMCwgZmlsbCB0byB4IGF4aXMuCiAgICAgICAgLy8gaWYgc2VyaWVzSW5kZXggPiAwLCBmaWxsIHRvIHByZXZpb3VzIHNlcmllcyBkYXRhLgogICAgICAgIHZhciBpZHggPSB0aGlzLmluZGV4OwogICAgICAgIGlmIChkYXRhLmxlbmd0aCA9PSAyKSB7CiAgICAgICAgICAgIGlmIChpZHggPT0gMCkgewogICAgICAgICAgICAgICAgZ2QgPSBbCiAgICAgICAgICAgICAgICAgICAgW3hwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMF1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzBdWzFdKV0sIAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzFdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVsxXVsxXSksIAogICAgICAgICAgICAgICAgICAgICAgICB4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzFdWzJdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVsxXVszXSksICAKICAgICAgICAgICAgICAgICAgICAgICAgeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVsxXVs0XSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbMV1bNV0pXSwKICAgICAgICAgICAgICAgICAgICBbeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVsxXVs0XSksIHlwLmNhbGwodGhpcy5feWF4aXMsIHRoaXMuX3lheGlzLm1pbildLAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzBdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgdGhpcy5feWF4aXMubWluKV0KICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgcHNkID0gcGxvdC5zZXJpZXNbaWR4LTFdLmRhdGE7CiAgICAgICAgICAgICAgICBnZCA9IFsKICAgICAgICAgICAgICAgICAgICBbeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVswXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbMF1bMV0pXSwgCiAgICAgICAgICAgICAgICAgICAgW3hwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMV1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzFdWzFdKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIHhwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMV1bMl0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzFdWzNdKSwgIAogICAgICAgICAgICAgICAgICAgICAgICB4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzFdWzRdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVsxXVs1XSldLAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBwc2RbMV1bNF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBwc2RbMV1bNV0pXSwKICAgICAgICAgICAgICAgICAgICBbeHAuY2FsbCh0aGlzLl94YXhpcywgcHNkWzFdWzJdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgcHNkWzFdWzNdKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIHhwLmNhbGwodGhpcy5feGF4aXMsIHBzZFsxXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIHBzZFsxXVsxXSksICAKICAgICAgICAgICAgICAgICAgICAgICAgeHAuY2FsbCh0aGlzLl94YXhpcywgcHNkWzBdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgcHNkWzBdWzFdKV0KICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmIChpZHggPT0gMCkgewogICAgICAgICAgICAgICAgZ2QgPSBbCiAgICAgICAgICAgICAgICAgICAgW3hwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMF1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzBdWzFdKV0sIAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzFdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVsxXVsxXSksIAogICAgICAgICAgICAgICAgICAgICAgICB4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzJdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVsyXVsxXSksICAKICAgICAgICAgICAgICAgICAgICAgICAgeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVszXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbM11bMV0pXSwKICAgICAgICAgICAgICAgICAgICBbeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVszXVsxXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIHRoaXMuX3lheGlzLm1pbildLAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzBdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgdGhpcy5feWF4aXMubWluKV0KICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgcHNkID0gcGxvdC5zZXJpZXNbaWR4LTFdLmRhdGE7CiAgICAgICAgICAgICAgICBnZCA9IFsKICAgICAgICAgICAgICAgICAgICBbeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVswXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbMF1bMV0pXSwgCiAgICAgICAgICAgICAgICAgICAgW3hwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMV1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzFdWzFdKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIHhwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMl1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzJdWzFdKSwgIAogICAgICAgICAgICAgICAgICAgICAgICB4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzNdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVszXVsxXSldLAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBwc2RbM11bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBwc2RbM11bMV0pXSwKICAgICAgICAgICAgICAgICAgICBbeHAuY2FsbCh0aGlzLl94YXhpcywgcHNkWzJdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgcHNkWzJdWzFdKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIHhwLmNhbGwodGhpcy5feGF4aXMsIHBzZFsxXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIHBzZFsxXVsxXSksICAKICAgICAgICAgICAgICAgICAgICAgICAgeHAuY2FsbCh0aGlzLl94YXhpcywgcHNkWzBdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgcHNkWzBdWzFdKV0KICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGdkOwogICAgfTsKICAgIAoKICAgIC8vIGNhbGxlZCB3aXRoaW4gc2NvcGUgb2Ygc2VyaWVzLgogICAgJC5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlci5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGN0eCwgZ2QsIG9wdGlvbnMpIHsKICAgICAgICB2YXIgaTsKICAgICAgICBjdHguc2F2ZSgpOwogICAgICAgIGlmIChnZC5sZW5ndGgpIHsKICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0xpbmUpIHsKICAgICAgICAgICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgICAgICAgICB2YXIgb3B0cyA9IChvcHRpb25zICE9IG51bGwpID8gb3B0aW9ucyA6IHt9OwogICAgICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IG9wdHMuZmlsbFN0eWxlIHx8IHRoaXMuY29sb3I7CiAgICAgICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7CiAgICAgICAgICAgICAgICBjdHgubW92ZVRvKGdkWzBdWzBdLCBnZFswXVsxXSk7CiAgICAgICAgICAgICAgICBjdHguYmV6aWVyQ3VydmVUbyhnZFsxXVswXSwgZ2RbMV1bMV0sIGdkWzFdWzJdLCBnZFsxXVszXSwgZ2RbMV1bNF0sIGdkWzFdWzVdKTsKICAgICAgICAgICAgICAgIGN0eC5saW5lVG8oZ2RbMl1bMF0sIGdkWzJdWzFdKTsKICAgICAgICAgICAgICAgIGlmIChnZFszXS5sZW5ndGggPT0gMikgewogICAgICAgICAgICAgICAgICAgIGN0eC5saW5lVG8oZ2RbM11bMF0sIGdkWzNdWzFdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGN0eC5iZXppZXJDdXJ2ZVRvKGdkWzNdWzBdLCBnZFszXVsxXSwgZ2RbM11bMl0sIGdkWzNdWzNdLCBnZFszXVs0XSwgZ2RbM11bNV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpOwogICAgICAgICAgICAgICAgY3R4LmZpbGwoKTsKICAgICAgICAgICAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgIH07ICAKICAgIAogICAgJC5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlci5wcm90b3R5cGUuZHJhd1NoYWRvdyA9IGZ1bmN0aW9uKGN0eCwgZ2QsIG9wdGlvbnMpIHsKICAgICAgICAvLyBUaGlzIGlzIGEgbm8tb3AsIHNoYWRvd3MgZHJhd24gd2l0aCBsaW5lcy4KICAgIH07CiAgICAKICAgICQuanFwbG90LkJlemllckF4aXNSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQmV6aWVyQXhpc1JlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIoKTsKICAgICQuanFwbG90LkJlemllckF4aXNSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5CZXppZXJBeGlzUmVuZGVyZXI7CiAgICAgICAgCiAgICAKICAgIC8vIEF4ZXMgb24gYSBwbG90IHdpdGggQmV6aWVyIEN1cnZlcwogICAgJC5qcXBsb3QuQmV6aWVyQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucyl7CiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CiAgICAgICAgdmFyIGRiID0gdGhpcy5fZGF0YUJvdW5kczsKICAgICAgICAvLyBHbyB0aHJvdWdoIGFsbCB0aGUgc2VyaWVzIGF0dGFjaGVkIHRvIHRoaXMgYXhpcyBhbmQgZmluZAogICAgICAgIC8vIHRoZSBtaW4vbWF4IGJvdW5kcyBmb3IgdGhpcyBheGlzLgogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHMgPSB0aGlzLl9zZXJpZXNbaV07CiAgICAgICAgICAgIHZhciBkID0gcy5kYXRhOyAgCiAgICAgICAgICAgIGlmIChkLmxlbmd0aCA9PSA0KSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8ZC5sZW5ndGg7IGorKykgeyAKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lID09ICd4YXhpcycgfHwgdGhpcy5uYW1lID09ICd4MmF4aXMnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkW2pdWzBdIDwgZGIubWluIHx8IGRiLm1pbiA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYi5taW4gPSBkW2pdWzBdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkW2pdWzBdID4gZGIubWF4IHx8IGRiLm1heCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYi5tYXggPSBkW2pdWzBdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkW2pdWzFdIDwgZGIubWluIHx8IGRiLm1pbiA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYi5taW4gPSBkW2pdWzFdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkW2pdWzFdID4gZGIubWF4IHx8IGRiLm1heCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYi5tYXggPSBkW2pdWzFdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gICAgICAgICAgCiAgICAgICAgICAgIGVsc2UgeyAgICAKICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZFswXVswXSA8IGRiLm1pbiB8fCBkYi5taW4gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBkYi5taW4gPSBkWzBdWzBdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZFswXVswXSA+IGRiLm1heCB8fCBkYi5tYXggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBkYi5tYXggPSBkWzBdWzBdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8NTsgais9MikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZFsxXVtqXSA8IGRiLm1pbiB8fCBkYi5taW4gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGIubWluID0gZFsxXVtqXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZFsxXVtqXSA+IGRiLm1heCB8fCBkYi5tYXggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGIubWF4ID0gZFsxXVtqXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGRbMF1bMV0gPCBkYi5taW4gfHwgZGIubWluID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGIubWluID0gZFswXVsxXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGRbMF1bMV0gPiBkYi5tYXggfHwgZGIubWF4ID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGIubWF4ID0gZFswXVsxXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0xOyBqPDY7IGorPTIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRbMV1bal0gPCBkYi5taW4gfHwgZGIubWluID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiLm1pbiA9IGRbMV1bal07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRbMV1bal0gPiBkYi5tYXggfHwgZGIubWF4ID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiLm1heCA9IGRbMV1bal07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CiAgICAKICAgIC8vIHNldHVwIGRlZmF1bHQgcmVuZGVyZXJzIGZvciBheGVzIGFuZCBsZWdlbmQgc28gdXNlciBkb2Vzbid0IGhhdmUgdG8KICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHBsb3QKICAgIGZ1bmN0aW9uIHByZUluaXQodGFyZ2V0LCBkYXRhLCBvcHRpb25zKSB7CiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgICAgICAgb3B0aW9ucy5heGVzRGVmYXVsdHMgPSAkLmV4dGVuZCh0cnVlLCB7cGFkOjB9LCBvcHRpb25zLmF4ZXNEZWZhdWx0cyk7CiAgICAgICAgb3B0aW9ucy5zZXJpZXNEZWZhdWx0cyA9IG9wdGlvbnMuc2VyaWVzRGVmYXVsdHMgfHwge307CiAgICAgICAgb3B0aW9ucy5sZWdlbmQgPSAkLmV4dGVuZCh0cnVlLCB7cGxhY2VtZW50OidvdXRzaWRlJ30sIG9wdGlvbnMubGVnZW5kKTsKICAgICAgICAvLyBvbmx5IHNldCB0aGVzZSBpZiB0aGVyZSBpcyBhIHBpZSBzZXJpZXMKICAgICAgICB2YXIgc2V0b3B0cyA9IGZhbHNlOwogICAgICAgIGlmIChvcHRpb25zLnNlcmllc0RlZmF1bHRzLnJlbmRlcmVyID09ICQuanFwbG90LkJlemllckN1cnZlUmVuZGVyZXIpIHsKICAgICAgICAgICAgc2V0b3B0cyA9IHRydWU7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuc2VyaWVzKSB7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaSA8IG9wdGlvbnMuc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5zZXJpZXNbaV0ucmVuZGVyZXIgPT0gJC5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlcikgewogICAgICAgICAgICAgICAgICAgIHNldG9wdHMgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChzZXRvcHRzKSB7CiAgICAgICAgICAgIG9wdGlvbnMuYXhlc0RlZmF1bHRzLnJlbmRlcmVyID0gJC5qcXBsb3QuQmV6aWVyQXhpc1JlbmRlcmVyOwogICAgICAgIH0KICAgIH0KICAgIAogICAgJC5qcXBsb3QucHJlSW5pdEhvb2tzLnB1c2gocHJlSW5pdCk7CiAgICAKfSkoalF1ZXJ5KTsgICAg]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.BezierCurveRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGIpe2IuanFwbG90LkJlemllckN1cnZlUmVuZGVyZXI9ZnVuY3Rpb24oKXtiLmpxcGxvdC5MaW5lUmVuZGVyZXIuY2FsbCh0aGlzKX07Yi5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlci5wcm90b3R5cGU9bmV3IGIuanFwbG90LkxpbmVSZW5kZXJlcigpO2IuanFwbG90LkJlemllckN1cnZlUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWIuanFwbG90LkJlemllckN1cnZlUmVuZGVyZXI7Yi5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlci5wcm90b3R5cGUuc2V0R3JpZERhdGE9ZnVuY3Rpb24oaCl7dmFyIGU9dGhpcy5feGF4aXMuc2VyaWVzX3UycDt2YXIgZz10aGlzLl95YXhpcy5zZXJpZXNfdTJwO3ZhciBmPXRoaXMuZGF0YTt0aGlzLmdyaWREYXRhPVtdO3RoaXMuX3ByZXZHcmlkRGF0YT1bXTt2YXIgZD10aGlzLmluZGV4O2lmKGYubGVuZ3RoPT0yKXtpZihkPT0wKXt0aGlzLmdyaWREYXRhPVtbZS5jYWxsKHRoaXMuX3hheGlzLGZbMF1bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyxmWzBdWzFdKV0sW2UuY2FsbCh0aGlzLl94YXhpcyxmWzFdWzBdKSxnLmNhbGwodGhpcy5feWF4aXMsZlsxXVsxXSksZS5jYWxsKHRoaXMuX3hheGlzLGZbMV1bMl0pLGcuY2FsbCh0aGlzLl95YXhpcyxmWzFdWzNdKSxlLmNhbGwodGhpcy5feGF4aXMsZlsxXVs0XSksZy5jYWxsKHRoaXMuX3lheGlzLGZbMV1bNV0pXSxbZS5jYWxsKHRoaXMuX3hheGlzLGZbMV1bNF0pLGcuY2FsbCh0aGlzLl95YXhpcyx0aGlzLl95YXhpcy5taW4pXSxbZS5jYWxsKHRoaXMuX3hheGlzLGZbMF1bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyx0aGlzLl95YXhpcy5taW4pXV19ZWxzZXt2YXIgYz1oLnNlcmllc1tkLTFdLmRhdGE7dGhpcy5ncmlkRGF0YT1bW2UuY2FsbCh0aGlzLl94YXhpcyxmWzBdWzBdKSxnLmNhbGwodGhpcy5feWF4aXMsZlswXVsxXSldLFtlLmNhbGwodGhpcy5feGF4aXMsZlsxXVswXSksZy5jYWxsKHRoaXMuX3lheGlzLGZbMV1bMV0pLGUuY2FsbCh0aGlzLl94YXhpcyxmWzFdWzJdKSxnLmNhbGwodGhpcy5feWF4aXMsZlsxXVszXSksZS5jYWxsKHRoaXMuX3hheGlzLGZbMV1bNF0pLGcuY2FsbCh0aGlzLl95YXhpcyxmWzFdWzVdKV0sW2UuY2FsbCh0aGlzLl94YXhpcyxjWzFdWzRdKSxnLmNhbGwodGhpcy5feWF4aXMsY1sxXVs1XSldLFtlLmNhbGwodGhpcy5feGF4aXMsY1sxXVsyXSksZy5jYWxsKHRoaXMuX3lheGlzLGNbMV1bM10pLGUuY2FsbCh0aGlzLl94YXhpcyxjWzFdWzBdKSxnLmNhbGwodGhpcy5feWF4aXMsY1sxXVsxXSksZS5jYWxsKHRoaXMuX3hheGlzLGNbMF1bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyxjWzBdWzFdKV1dfX1lbHNle2lmKGQ9PTApe3RoaXMuZ3JpZERhdGE9W1tlLmNhbGwodGhpcy5feGF4aXMsZlswXVswXSksZy5jYWxsKHRoaXMuX3lheGlzLGZbMF1bMV0pXSxbZS5jYWxsKHRoaXMuX3hheGlzLGZbMV1bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyxmWzFdWzFdKSxlLmNhbGwodGhpcy5feGF4aXMsZlsyXVswXSksZy5jYWxsKHRoaXMuX3lheGlzLGZbMl1bMV0pLGUuY2FsbCh0aGlzLl94YXhpcyxmWzNdWzBdKSxnLmNhbGwodGhpcy5feWF4aXMsZlszXVsxXSldLFtlLmNhbGwodGhpcy5feGF4aXMsZlszXVsxXSksZy5jYWxsKHRoaXMuX3lheGlzLHRoaXMuX3lheGlzLm1pbildLFtlLmNhbGwodGhpcy5feGF4aXMsZlswXVswXSksZy5jYWxsKHRoaXMuX3lheGlzLHRoaXMuX3lheGlzLm1pbildXX1lbHNle3ZhciBjPWguc2VyaWVzW2QtMV0uZGF0YTt0aGlzLmdyaWREYXRhPVtbZS5jYWxsKHRoaXMuX3hheGlzLGZbMF1bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyxmWzBdWzFdKV0sW2UuY2FsbCh0aGlzLl94YXhpcyxmWzFdWzBdKSxnLmNhbGwodGhpcy5feWF4aXMsZlsxXVsxXSksZS5jYWxsKHRoaXMuX3hheGlzLGZbMl1bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyxmWzJdWzFdKSxlLmNhbGwodGhpcy5feGF4aXMsZlszXVswXSksZy5jYWxsKHRoaXMuX3lheGlzLGZbM11bMV0pXSxbZS5jYWxsKHRoaXMuX3hheGlzLGNbM11bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyxjWzNdWzFdKV0sW2UuY2FsbCh0aGlzLl94YXhpcyxjWzJdWzBdKSxnLmNhbGwodGhpcy5feWF4aXMsY1syXVsxXSksZS5jYWxsKHRoaXMuX3hheGlzLGNbMV1bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyxjWzFdWzFdKSxlLmNhbGwodGhpcy5feGF4aXMsY1swXVswXSksZy5jYWxsKHRoaXMuX3lheGlzLGNbMF1bMV0pXV19fX07Yi5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlci5wcm90b3R5cGUubWFrZUdyaWREYXRhPWZ1bmN0aW9uKGcsaSl7dmFyIGY9dGhpcy5feGF4aXMuc2VyaWVzX3UycDt2YXIgaD10aGlzLl95YXhpcy5zZXJpZXNfdTJwO3ZhciBlPVtdO3ZhciBqPVtdO3ZhciBkPXRoaXMuaW5kZXg7aWYoZy5sZW5ndGg9PTIpe2lmKGQ9PTApe2U9W1tmLmNhbGwodGhpcy5feGF4aXMsZ1swXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLGdbMF1bMV0pXSxbZi5jYWxsKHRoaXMuX3hheGlzLGdbMV1bMF0pLGguY2FsbCh0aGlzLl95YXhpcyxnWzFdWzFdKSxmLmNhbGwodGhpcy5feGF4aXMsZ1sxXVsyXSksaC5jYWxsKHRoaXMuX3lheGlzLGdbMV1bM10pLGYuY2FsbCh0aGlzLl94YXhpcyxnWzFdWzRdKSxoLmNhbGwodGhpcy5feWF4aXMsZ1sxXVs1XSldLFtmLmNhbGwodGhpcy5feGF4aXMsZ1sxXVs0XSksaC5jYWxsKHRoaXMuX3lheGlzLHRoaXMuX3lheGlzLm1pbildLFtmLmNhbGwodGhpcy5feGF4aXMsZ1swXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLHRoaXMuX3lheGlzLm1pbildXX1lbHNle3ZhciBjPWkuc2VyaWVzW2QtMV0uZGF0YTtlPVtbZi5jYWxsKHRoaXMuX3hheGlzLGdbMF1bMF0pLGguY2FsbCh0aGlzLl95YXhpcyxnWzBdWzFdKV0sW2YuY2FsbCh0aGlzLl94YXhpcyxnWzFdWzBdKSxoLmNhbGwodGhpcy5feWF4aXMsZ1sxXVsxXSksZi5jYWxsKHRoaXMuX3hheGlzLGdbMV1bMl0pLGguY2FsbCh0aGlzLl95YXhpcyxnWzFdWzNdKSxmLmNhbGwodGhpcy5feGF4aXMsZ1sxXVs0XSksaC5jYWxsKHRoaXMuX3lheGlzLGdbMV1bNV0pXSxbZi5jYWxsKHRoaXMuX3hheGlzLGNbMV1bNF0pLGguY2FsbCh0aGlzLl95YXhpcyxjWzFdWzVdKV0sW2YuY2FsbCh0aGlzLl94YXhpcyxjWzFdWzJdKSxoLmNhbGwodGhpcy5feWF4aXMsY1sxXVszXSksZi5jYWxsKHRoaXMuX3hheGlzLGNbMV1bMF0pLGguY2FsbCh0aGlzLl95YXhpcyxjWzFdWzFdKSxmLmNhbGwodGhpcy5feGF4aXMsY1swXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLGNbMF1bMV0pXV19fWVsc2V7aWYoZD09MCl7ZT1bW2YuY2FsbCh0aGlzLl94YXhpcyxnWzBdWzBdKSxoLmNhbGwodGhpcy5feWF4aXMsZ1swXVsxXSldLFtmLmNhbGwodGhpcy5feGF4aXMsZ1sxXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLGdbMV1bMV0pLGYuY2FsbCh0aGlzLl94YXhpcyxnWzJdWzBdKSxoLmNhbGwodGhpcy5feWF4aXMsZ1syXVsxXSksZi5jYWxsKHRoaXMuX3hheGlzLGdbM11bMF0pLGguY2FsbCh0aGlzLl95YXhpcyxnWzNdWzFdKV0sW2YuY2FsbCh0aGlzLl94YXhpcyxnWzNdWzFdKSxoLmNhbGwodGhpcy5feWF4aXMsdGhpcy5feWF4aXMubWluKV0sW2YuY2FsbCh0aGlzLl94YXhpcyxnWzBdWzBdKSxoLmNhbGwodGhpcy5feWF4aXMsdGhpcy5feWF4aXMubWluKV1dfWVsc2V7dmFyIGM9aS5zZXJpZXNbZC0xXS5kYXRhO2U9W1tmLmNhbGwodGhpcy5feGF4aXMsZ1swXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLGdbMF1bMV0pXSxbZi5jYWxsKHRoaXMuX3hheGlzLGdbMV1bMF0pLGguY2FsbCh0aGlzLl95YXhpcyxnWzFdWzFdKSxmLmNhbGwodGhpcy5feGF4aXMsZ1syXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLGdbMl1bMV0pLGYuY2FsbCh0aGlzLl94YXhpcyxnWzNdWzBdKSxoLmNhbGwodGhpcy5feWF4aXMsZ1szXVsxXSldLFtmLmNhbGwodGhpcy5feGF4aXMsY1szXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLGNbM11bMV0pXSxbZi5jYWxsKHRoaXMuX3hheGlzLGNbMl1bMF0pLGguY2FsbCh0aGlzLl95YXhpcyxjWzJdWzFdKSxmLmNhbGwodGhpcy5feGF4aXMsY1sxXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLGNbMV1bMV0pLGYuY2FsbCh0aGlzLl94YXhpcyxjWzBdWzBdKSxoLmNhbGwodGhpcy5feWF4aXMsY1swXVsxXSldXX19cmV0dXJuIGV9O2IuanFwbG90LkJlemllckN1cnZlUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oYyxnLGQpe3ZhciBlO2Muc2F2ZSgpO2lmKGcubGVuZ3RoKXtpZih0aGlzLnNob3dMaW5lKXtjLnNhdmUoKTt2YXIgZj0oZCE9bnVsbCk/ZDp7fTtjLmZpbGxTdHlsZT1mLmZpbGxTdHlsZXx8dGhpcy5jb2xvcjtjLmJlZ2luUGF0aCgpO2MubW92ZVRvKGdbMF1bMF0sZ1swXVsxXSk7Yy5iZXppZXJDdXJ2ZVRvKGdbMV1bMF0sZ1sxXVsxXSxnWzFdWzJdLGdbMV1bM10sZ1sxXVs0XSxnWzFdWzVdKTtjLmxpbmVUbyhnWzJdWzBdLGdbMl1bMV0pO2lmKGdbM10ubGVuZ3RoPT0yKXtjLmxpbmVUbyhnWzNdWzBdLGdbM11bMV0pfWVsc2V7Yy5iZXppZXJDdXJ2ZVRvKGdbM11bMF0sZ1szXVsxXSxnWzNdWzJdLGdbM11bM10sZ1szXVs0XSxnWzNdWzVdKX1jLmNsb3NlUGF0aCgpO2MuZmlsbCgpO2MucmVzdG9yZSgpfX1jLnJlc3RvcmUoKX07Yi5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlci5wcm90b3R5cGUuZHJhd1NoYWRvdz1mdW5jdGlvbihjLGUsZCl7fTtiLmpxcGxvdC5CZXppZXJBeGlzUmVuZGVyZXI9ZnVuY3Rpb24oKXtiLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIuY2FsbCh0aGlzKX07Yi5qcXBsb3QuQmV6aWVyQXhpc1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgYi5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7Yi5qcXBsb3QuQmV6aWVyQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1iLmpxcGxvdC5CZXppZXJBeGlzUmVuZGVyZXI7Yi5qcXBsb3QuQmV6aWVyQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGYpe2IuZXh0ZW5kKHRydWUsdGhpcyxmKTt2YXIgYz10aGlzLl9kYXRhQm91bmRzO2Zvcih2YXIgZz0wO2c8dGhpcy5fc2VyaWVzLmxlbmd0aDtnKyspe3ZhciBoPXRoaXMuX3Nlcmllc1tnXTt2YXIgaz1oLmRhdGE7aWYoay5sZW5ndGg9PTQpe2Zvcih2YXIgZT0wO2U8ay5sZW5ndGg7ZSsrKXtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe2lmKGtbZV1bMF08Yy5taW58fGMubWluPT1udWxsKXtjLm1pbj1rW2VdWzBdfWlmKGtbZV1bMF0+Yy5tYXh8fGMubWF4PT1udWxsKXtjLm1heD1rW2VdWzBdfX1lbHNle2lmKGtbZV1bMV08Yy5taW58fGMubWluPT1udWxsKXtjLm1pbj1rW2VdWzFdfWlmKGtbZV1bMV0+Yy5tYXh8fGMubWF4PT1udWxsKXtjLm1heD1rW2VdWzFdfX19fWVsc2V7aWYodGhpcy5uYW1lPT0ieGF4aXMifHx0aGlzLm5hbWU9PSJ4MmF4aXMiKXtpZihrWzBdWzBdPGMubWlufHxjLm1pbj09bnVsbCl7Yy5taW49a1swXVswXX1pZihrWzBdWzBdPmMubWF4fHxjLm1heD09bnVsbCl7Yy5tYXg9a1swXVswXX1mb3IodmFyIGU9MDtlPDU7ZSs9Mil7aWYoa1sxXVtlXTxjLm1pbnx8Yy5taW49PW51bGwpe2MubWluPWtbMV1bZV19aWYoa1sxXVtlXT5jLm1heHx8Yy5tYXg9PW51bGwpe2MubWF4PWtbMV1bZV19fX1lbHNle2lmKGtbMF1bMV08Yy5taW58fGMubWluPT1udWxsKXtjLm1pbj1rWzBdWzFdfWlmKGtbMF1bMV0+Yy5tYXh8fGMubWF4PT1udWxsKXtjLm1heD1rWzBdWzFdfWZvcih2YXIgZT0xO2U8NjtlKz0yKXtpZihrWzFdW2VdPGMubWlufHxjLm1pbj09bnVsbCl7Yy5taW49a1sxXVtlXX1pZihrWzFdW2VdPmMubWF4fHxjLm1heD09bnVsbCl7Yy5tYXg9a1sxXVtlXX19fX19fTtmdW5jdGlvbiBhKGcsZixkKXtkPWR8fHt9O2QuYXhlc0RlZmF1bHRzPWIuZXh0ZW5kKHRydWUse3BhZDowfSxkLmF4ZXNEZWZhdWx0cyk7ZC5zZXJpZXNEZWZhdWx0cz1kLnNlcmllc0RlZmF1bHRzfHx7fTtkLmxlZ2VuZD1iLmV4dGVuZCh0cnVlLHtwbGFjZW1lbnQ6Im91dHNpZGUifSxkLmxlZ2VuZCk7dmFyIGM9ZmFsc2U7aWYoZC5zZXJpZXNEZWZhdWx0cy5yZW5kZXJlcj09Yi5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlcil7Yz10cnVlfWVsc2V7aWYoZC5zZXJpZXMpe2Zvcih2YXIgZT0wO2U8ZC5zZXJpZXMubGVuZ3RoO2UrKyl7aWYoZC5zZXJpZXNbZV0ucmVuZGVyZXI9PWIuanFwbG90LkJlemllckN1cnZlUmVuZGVyZXIpe2M9dHJ1ZX19fX1pZihjKXtkLmF4ZXNEZWZhdWx0cy5yZW5kZXJlcj1iLmpxcGxvdC5CZXppZXJBeGlzUmVuZGVyZXJ9fWIuanFwbG90LnByZUluaXRIb29rcy5wdXNoKGEpfSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.blockRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuQmxvY2tSZW5kZXJlcgogICAgICogUGx1Z2luIHJlbmRlcmVyIHRvIGRyYXcgYSB4LXkgYmxvY2sgY2hhcnQuICBBIEJsb2NrIGNoYXJ0IGhhcyBkYXRhIHBvaW50cyBkaXNwbGF5ZWQgYXMKICAgICAqIGNvbG9yZWQgc3F1YXJlcyB3aXRoIGEgdGV4dCBsYWJlbCBpbnNpZGUuICBEYXRhIG11c3QgYmUgc3VwcGxpZWQgaW4gdGhlIGZvcm06CiAgICAgKiAKICAgICAqID4gW1t4MSwgeTEsICJsYWJlbCAxIiwge2Nzc31dLCBbeDIsIHkyLCAibGFiZWwgMiIsIHtjc3N9XSwgLi4uXQogICAgICogCiAgICAgKiBUaGUgbGFiZWwgYW5kIGNzcyBvYmplY3QgYXJlIG9wdGlvbmFsLiAgSWYgdGhlIGxhYmVsIGlzIG9tbWl0dGVkLCB0aGUKICAgICAqIGJveCB3aWxsIGNvbGxhcHNlIHVubGVzcyBhIGNzcyBoZWlnaHQgYW5kL29yIHdpZHRoIGlzIHNwZWNpZmllZC4KICAgICAqIAogICAgICogVGhlIGNzcyBvYmplY3QgaXMgYW4gb2JqZWN0IHNwZWNpZnlpbmcgY3NzIHByb3BlcnRpZXMgCiAgICAgKiBzdWNoIGFzOgogICAgICogCiAgICAgKiA+IHtiYWNrZ3JvdW5kOicjNGY5OGE1JywgYm9yZGVyOiczcHggc29saWQgZ3JheScsIHBhZGRpbmc6JzFweCd9CiAgICAgKiAKICAgICAqIE5vdGUgdGhhdCBjc3MgcHJvcGVydGllcyBzcGVjaWZpZWQgd2l0aCB0aGUgZGF0YSBwb2ludCBvdmVycmlkZSBkZWZhdWx0cwogICAgICogc3BlY2lmaWVkIHdpdGggdGhlIHNlcmllcy4KICAgICAqIAogICAgICovCiAgICAkLmpxcGxvdC5CbG9ja1JlbmRlcmVyID0gZnVuY3Rpb24oKXsKICAgICAgICAkLmpxcGxvdC5MaW5lUmVuZGVyZXIuY2FsbCh0aGlzKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkJsb2NrUmVuZGVyZXIucHJvdG90eXBlID0gbmV3ICQuanFwbG90LkxpbmVSZW5kZXJlcigpOwogICAgJC5qcXBsb3QuQmxvY2tSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5CbG9ja1JlbmRlcmVyOwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBhIHNlcmllcwogICAgJC5qcXBsb3QuQmxvY2tSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAvLyBHcm91cDogUHJvcGVydGllcwogICAgICAgIC8vCiAgICAgICAgLy8gcHJvcDogY3NzCiAgICAgICAgLy8gZGVmYXVsdCBjc3Mgc3R5bGVzIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIGFsbCBkYXRhIGJsb2Nrcy4KICAgICAgICAvLyB0aGVzZSB2YWx1ZXMgd2lsbCBiZSBvdmVycmlkZGVuIGJ5IGNzcyBzdHlsZXMgc3VwcGxpZWQgd2l0aCB0aGUKICAgICAgICAvLyBpbmRpdmlkdWxhbCBkYXRhIHBvaW50cy4KICAgICAgICB0aGlzLmNzcyA9IHtwYWRkaW5nOicycHgnLCBib3JkZXI6JzFweCBzb2xpZCAjOTk5JywgdGV4dEFsaWduOidjZW50ZXInfTsKICAgICAgICAvLyBwcm9wOiBlc2NhcGVIdG1sCiAgICAgICAgLy8gdHJ1ZSB0byBlc2NhcGUgaHRtbCBpbiB0aGUgYm94IGxhYmVsLgogICAgICAgIHRoaXMuZXNjYXBlSHRtbCA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGluc2VydEJyZWFrcwogICAgICAgIC8vIHRydWUgdG8gdHVybiBzcGFjZXMgaW4gZGF0YSBibG9jayBsYWJlbCBpbnRvIGh0bWwgYnJlYWtzIDxiciAvPi4KICAgICAgICB0aGlzLmluc2VydEJyZWFrcyA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogdmFyeUJsb2NrQ29sb3JzCiAgICAgICAgLy8gdHJ1ZSB0byB2YXJ5IHRoZSBjb2xvciBvZiBlYWNoIGJsb2NrIGluIHRoaXMgc2VyaWVzIGFjY29yZGluZyB0bwogICAgICAgIC8vIHRoZSBzZXJpZXNDb2xvcnMgYXJyYXkuICBGYWxzZSB0byBzZXQgZWFjaCBibG9jayB0byB0aGUgY29sb3IKICAgICAgICAvLyBzcGVjaWZpZWQgb24gdGhpcyBzZXJpZXMuICBUaGlzIGhhcyBubyBlZmZlY3QgaWYgYSBjc3MgYmFja2dyb3VuZCBjb2xvcgogICAgICAgIC8vIG9wdGlvbiBpcyBzcGVjaWZpZWQgaW4gdGhlIHJlbmRlcmVyIGNzcyBvcHRpb25zLgogICAgICAgIHRoaXMudmFyeUJsb2NrQ29sb3JzID0gZmFsc2U7CiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CiAgICAgICAgaWYgKHRoaXMuY3NzLmJhY2tncm91bmRDb2xvcikgewogICAgICAgICAgICB0aGlzLmNvbG9yID0gdGhpcy5jc3MuYmFja2dyb3VuZENvbG9yOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICh0aGlzLmNzcy5iYWNrZ3JvdW5kKSB7CiAgICAgICAgICAgIHRoaXMuY29sb3IgPSB0aGlzLmNzcy5iYWNrZ3JvdW5kOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICghdGhpcy52YXJ5QmxvY2tDb2xvcnMpIHsKICAgICAgICAgICAgdGhpcy5jc3MuYmFja2dyb3VuZCA9IHRoaXMuY29sb3I7CiAgICAgICAgfQogICAgICAgIHRoaXMuY2FudmFzID0gbmV3ICQuanFwbG90LkJsb2NrQ2FudmFzKCk7CiAgICAgICAgdGhpcy5zaGFkb3dDYW52YXMgPSAgbmV3ICQuanFwbG90LkJsb2NrQ2FudmFzKCk7CiAgICAgICAgdGhpcy5jYW52YXMuX3Bsb3REaW1lbnNpb25zID0gdGhpcy5fcGxvdERpbWVuc2lvbnM7CiAgICAgICAgdGhpcy5zaGFkb3dDYW52YXMuX3Bsb3REaW1lbnNpb25zID0gdGhpcy5fcGxvdERpbWVuc2lvbnM7CiAgICAgICAgdGhpcy5fdHlwZSA9ICdibG9jayc7CiAgICAgICAgCiAgICAgICAgLy8gZ3JvdXA6IE1ldGhvZHMgCiAgICAgICAgLy8KICAgICAgICAvLyBNZXRob2Q6IG1vdmVCbG9jawogICAgICAgIC8vIE1vdmVzIGFuIGluZGl2aWR1YWwgYmxvY2suICBNb3JlIGVmZmljaWVudCB0aGFuIHJlZHJhd2luZwogICAgICAgIC8vIHRoZSB3aG9sZSBzZXJpZXMgYnkgY2FsbGluZyBwbG90LmRyYXdTZXJpZXMoKS4KICAgICAgICAvLyBQcm9wZXJ0aWVzOgogICAgICAgIC8vIGlkeCAtIHRoZSAwIGJhc2VkIGluZGV4IG9mIHRoZSBibG9jayBvciBwb2ludCBpbiB0aGlzIHNlcmllcy4KICAgICAgICAvLyB4IC0gdGhlIHggY29vcmRpbmF0ZSBpbiBkYXRhIHVuaXRzICh2YWx1ZSBvbiB4IGF4aXMpIHRvIG1vdmUgdGhlIGJsb2NrIHRvLgogICAgICAgIC8vIHkgLSB0aGUgeSBjb29yZGluYXRlIGluIGRhdGEgdW5pdHMgKHZhbHVlIG9uIHRoZSB5IGF4aXMpIHRvIG1vdmUgdGhlIGJsb2NrIHRvLgogICAgICAgIC8vIGR1cmF0aW9uIC0gb3B0aW9uYWwgcGFyYW1ldGVyIHRvIGNyZWF0ZSBhbiBhbmltYXRlZCBtb3ZlbWVudC4gIENhbiBiZSBhCiAgICAgICAgLy8gbnVtYmVyIChoaWdoZXIgaXMgc2xvd2VyIGFuaW1hdGlvbikgb3IgJ2Zhc3QnLCAnbm9ybWFsJyBvciAnc2xvdycuICBJZiBub3QKICAgICAgICAvLyBwcm92aWRlZCwgdGhlIGVsZW1lbnQgaXMgbW92ZWQgd2l0aG91dCBhbnkgYW5pbWF0aW9uLgogICAgICAgIHRoaXMubW92ZUJsb2NrID0gZnVuY3Rpb24gKGlkeCwgeCwgeSwgZHVyYXRpb24pIHsKICAgICAgICAgICAgLy8gdXBkYXRlIHBsb3REYXRhLCBzdGFja0RhdGEsIGRhdGEgYW5kIGdyaWREYXRhCiAgICAgICAgICAgIC8vIHggYW5kIHkgYXJlIGluIGRhdGEgY29vcmRpbmF0ZXMuCiAgICAgICAgICAgIHZhciBlbCA9IHRoaXMuY2FudmFzLl9lbGVtLmNoaWxkcmVuKCc6ZXEoJytpZHgrJyknKTsKICAgICAgICAgICAgdGhpcy5kYXRhW2lkeF1bMF0gPSB4OwogICAgICAgICAgICB0aGlzLmRhdGFbaWR4XVsxXSA9IHk7CiAgICAgICAgICAgIHRoaXMuX3Bsb3REYXRhW2lkeF1bMF0gPSB4OwogICAgICAgICAgICB0aGlzLl9wbG90RGF0YVtpZHhdWzFdID0geTsKICAgICAgICAgICAgdGhpcy5fc3RhY2tEYXRhW2lkeF1bMF0gPSB4OwogICAgICAgICAgICB0aGlzLl9zdGFja0RhdGFbaWR4XVsxXSA9IHk7CiAgICAgICAgICAgIHRoaXMuZ3JpZERhdGFbaWR4XVswXSA9IHRoaXMuX3hheGlzLnNlcmllc191MnAoeCk7CiAgICAgICAgICAgIHRoaXMuZ3JpZERhdGFbaWR4XVsxXSA9IHRoaXMuX3lheGlzLnNlcmllc191MnAoeSk7CiAgICAgICAgICAgIHZhciB3ID0gZWwub3V0ZXJXaWR0aCgpOwogICAgICAgICAgICB2YXIgaCA9IGVsLm91dGVySGVpZ2h0KCk7CiAgICAgICAgICAgIHZhciBsZWZ0ID0gdGhpcy5ncmlkRGF0YVtpZHhdWzBdIC0gdy8yICsgJ3B4JzsKICAgICAgICAgICAgdmFyIHRvcCA9IHRoaXMuZ3JpZERhdGFbaWR4XVsxXSAtIGgvMiArICdweCc7CiAgICAgICAgICAgIGlmIChkdXJhdGlvbikgewogICAgICAgICAgICAgICAgaWYgKHBhcnNlSW50KGR1cmF0aW9uLCAxMCkpIHsKICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbiA9IHBhcnNlSW50KGR1cmF0aW9uLCAxMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbC5hbmltYXRlKHtsZWZ0OmxlZnQsIHRvcDp0b3B9LCBkdXJhdGlvbik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBlbC5jc3Moe2xlZnQ6bGVmdCwgdG9wOnRvcH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsID0gbnVsbDsKICAgICAgICB9OwogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2Ygc2VyaWVzCiAgICAkLmpxcGxvdC5CbG9ja1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24gKGN0eCwgZ2QsIG9wdGlvbnMpIHsKICAgICAgICBpZiAodGhpcy5wbHVnaW5zLnBvaW50TGFiZWxzKSB7CiAgICAgICAgICAgIHRoaXMucGx1Z2lucy5wb2ludExhYmVscy5zaG93ID0gZmFsc2U7CiAgICAgICAgfQogICAgICAgIHZhciBpLCBlbCwgZCwgZ2QsIHQsIGNzcywgdywgaCwgbGVmdCwgdG9wOwogICAgICAgIHZhciBvcHRzID0gKG9wdGlvbnMgIT0gdW5kZWZpbmVkKSA/IG9wdGlvbnMgOiB7fTsKICAgICAgICB2YXIgY29sb3JHZW5lcmF0b3IgPSBuZXcgJC5qcXBsb3QuQ29sb3JHZW5lcmF0b3IodGhpcy5zZXJpZXNDb2xvcnMpOwogICAgICAgIHRoaXMuY2FudmFzLl9lbGVtLmVtcHR5KCk7CiAgICAgICAgZm9yIChpPTA7IGk8dGhpcy5ncmlkRGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBkID0gdGhpcy5kYXRhW2ldOwogICAgICAgICAgICBnZCA9IHRoaXMuZ3JpZERhdGFbaV07CiAgICAgICAgICAgIHQgPSAnJzsKICAgICAgICAgICAgY3NzID0ge307CiAgICAgICAgICAgIGlmICh0eXBlb2YgZFsyXSA9PSAnc3RyaW5nJykgewogICAgICAgICAgICAgICAgdCA9IGRbMl07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGRbMl0gPT0gJ29iamVjdCcpIHsKICAgICAgICAgICAgICAgIGNzcyA9IGRbMl07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHR5cGVvZiBkWzNdID09ICAnb2JqZWN0JykgewogICAgICAgICAgICAgICAgY3NzID0gZFszXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodGhpcy5pbnNlcnRCcmVha3MpeyAKICAgICAgICAgICAgICAgIHQgPSB0LnJlcGxhY2UoLyAvZywgJzxiciAvPicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNzcyA9ICQuZXh0ZW5kKHRydWUsIHt9LCB0aGlzLmNzcywgY3NzKTsKICAgICAgICAgICAgLy8gY3JlYXRlIGEgZGl2CiAgICAgICAgICAgIGVsID0gJCgnPGRpdiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bzsiPjwvZGl2PicpOwogICAgICAgICAgICB0aGlzLmNhbnZhcy5fZWxlbS5hcHBlbmQoZWwpOwogICAgICAgICAgICAvLyBzZXQgdGV4dAogICAgICAgICAgICB0aGlzLmVzY2FwZUh0bWwgPyBlbC50ZXh0KHQpIDogZWwuaHRtbCh0KTsKICAgICAgICAgICAgLy8gc3R5bGUgaXQKICAgICAgICAgICAgLy8gcmVtb3ZlIHN0eWxlcyB3ZSBkb24ndCB3YW50IG92ZXJyaWRkZW4uCiAgICAgICAgICAgIGRlbGV0ZSBjc3MucG9zaXRpb247CiAgICAgICAgICAgIGRlbGV0ZSBjc3MubWFyZ2luUmlnaHQ7CiAgICAgICAgICAgIGRlbGV0ZSBjc3MubWFyZ2luTGVmdDsKICAgICAgICAgICAgaWYgKCFjc3MuYmFja2dyb3VuZCAmJiAhY3NzLmJhY2tncm91bmRDb2xvciAmJiAhY3NzLmJhY2tncm91bmRJbWFnZSl7IAogICAgICAgICAgICAgICAgY3NzLmJhY2tncm91bmQgPSBjb2xvckdlbmVyYXRvci5uZXh0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWwuY3NzKGNzcyk7CiAgICAgICAgICAgIHcgPSBlbC5vdXRlcldpZHRoKCk7CiAgICAgICAgICAgIGggPSBlbC5vdXRlckhlaWdodCgpOwogICAgICAgICAgICBsZWZ0ID0gZ2RbMF0gLSB3LzIgKyAncHgnOwogICAgICAgICAgICB0b3AgPSBnZFsxXSAtIGgvMiArICdweCc7CiAgICAgICAgICAgIGVsLmNzcyh7bGVmdDpsZWZ0LCB0b3A6dG9wfSk7CiAgICAgICAgICAgIGVsID0gbnVsbDsKICAgICAgICB9CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5CbG9ja0NhbnZhcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkVsZW1Db250YWluZXIuY2FsbCh0aGlzKTsKICAgICAgICB0aGlzLl9jdHg7ICAKICAgIH07CiAgICAKICAgICQuanFwbG90LkJsb2NrQ2FudmFzLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5FbGVtQ29udGFpbmVyKCk7CiAgICAkLmpxcGxvdC5CbG9ja0NhbnZhcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5CbG9ja0NhbnZhczsKICAgIAogICAgJC5qcXBsb3QuQmxvY2tDYW52YXMucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbihvZmZzZXRzLCBjbHNzLCBwbG90RGltZW5zaW9ucykgewogICAgICAgIHRoaXMuX29mZnNldHMgPSBvZmZzZXRzOwogICAgICAgIHZhciBrbGFzcyA9ICdqcXBsb3QtYmxvY2tDYW52YXMnOwogICAgICAgIGlmIChjbHNzICE9IHVuZGVmaW5lZCkgewogICAgICAgICAgICBrbGFzcyA9IGNsc3M7CiAgICAgICAgfQogICAgICAgIHZhciBlbGVtOwogICAgICAgIC8vIGlmIHRoaXMgY2FudmFzIGFscmVhZHkgaGFzIGEgZG9tIGVsZW1lbnQsIGRvbid0IG1ha2UgYSBuZXcgb25lLgogICAgICAgIGlmICh0aGlzLl9lbGVtKSB7CiAgICAgICAgICAgIGVsZW0gPSB0aGlzLl9lbGVtLmdldCgwKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICB9CiAgICAgICAgLy8gaWYgbmV3IHBsb3REaW1lbnNpb25zIHN1cHBsaWVkLCB1c2UgdGhlbS4KICAgICAgICBpZiAocGxvdERpbWVuc2lvbnMgIT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIHRoaXMuX3Bsb3REaW1lbnNpb25zID0gcGxvdERpbWVuc2lvbnM7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHZhciB3ID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSB0aGlzLl9vZmZzZXRzLmxlZnQgLSB0aGlzLl9vZmZzZXRzLnJpZ2h0ICsgJ3B4JzsKICAgICAgICB2YXIgaCA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIHRoaXMuX29mZnNldHMudG9wIC0gdGhpcy5fb2Zmc2V0cy5ib3R0b20gKyAncHgnOwogICAgICAgIHRoaXMuX2VsZW0gPSAkKGVsZW0pOwogICAgICAgIHRoaXMuX2VsZW0uY3NzKHsgcG9zaXRpb246ICdhYnNvbHV0ZScsIHdpZHRoOncsIGhlaWdodDpoLCBsZWZ0OiB0aGlzLl9vZmZzZXRzLmxlZnQsIHRvcDogdGhpcy5fb2Zmc2V0cy50b3AgfSk7CiAgICAgICAgCiAgICAgICAgdGhpcy5fZWxlbS5hZGRDbGFzcyhrbGFzcyk7CiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW07CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5CbG9ja0NhbnZhcy5wcm90b3R5cGUuc2V0Q29udGV4dCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuX2N0eCA9IHsKICAgICAgICAgICAgY2FudmFzOnsKICAgICAgICAgICAgICAgIHdpZHRoOjAsCiAgICAgICAgICAgICAgICBoZWlnaHQ6MAogICAgICAgICAgICB9LAogICAgICAgICAgICBjbGVhclJlY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbDt9CiAgICAgICAgfTsKICAgICAgICByZXR1cm4gdGhpcy5fY3R4OwogICAgfTsKICAgIAp9KShqUXVlcnkpOwogICAgCiAgICA=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.blockRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGEpe2EuanFwbG90LkJsb2NrUmVuZGVyZXI9ZnVuY3Rpb24oKXthLmpxcGxvdC5MaW5lUmVuZGVyZXIuY2FsbCh0aGlzKX07YS5qcXBsb3QuQmxvY2tSZW5kZXJlci5wcm90b3R5cGU9bmV3IGEuanFwbG90LkxpbmVSZW5kZXJlcigpO2EuanFwbG90LkJsb2NrUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWEuanFwbG90LkJsb2NrUmVuZGVyZXI7YS5qcXBsb3QuQmxvY2tSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihiKXt0aGlzLmNzcz17cGFkZGluZzoiMnB4Iixib3JkZXI6IjFweCBzb2xpZCAjOTk5Iix0ZXh0QWxpZ246ImNlbnRlciJ9O3RoaXMuZXNjYXBlSHRtbD1mYWxzZTt0aGlzLmluc2VydEJyZWFrcz10cnVlO3RoaXMudmFyeUJsb2NrQ29sb3JzPWZhbHNlO2EuZXh0ZW5kKHRydWUsdGhpcyxiKTtpZih0aGlzLmNzcy5iYWNrZ3JvdW5kQ29sb3Ipe3RoaXMuY29sb3I9dGhpcy5jc3MuYmFja2dyb3VuZENvbG9yfWVsc2V7aWYodGhpcy5jc3MuYmFja2dyb3VuZCl7dGhpcy5jb2xvcj10aGlzLmNzcy5iYWNrZ3JvdW5kfWVsc2V7aWYoIXRoaXMudmFyeUJsb2NrQ29sb3JzKXt0aGlzLmNzcy5iYWNrZ3JvdW5kPXRoaXMuY29sb3J9fX10aGlzLmNhbnZhcz1uZXcgYS5qcXBsb3QuQmxvY2tDYW52YXMoKTt0aGlzLnNoYWRvd0NhbnZhcz1uZXcgYS5qcXBsb3QuQmxvY2tDYW52YXMoKTt0aGlzLmNhbnZhcy5fcGxvdERpbWVuc2lvbnM9dGhpcy5fcGxvdERpbWVuc2lvbnM7dGhpcy5zaGFkb3dDYW52YXMuX3Bsb3REaW1lbnNpb25zPXRoaXMuX3Bsb3REaW1lbnNpb25zO3RoaXMuX3R5cGU9ImJsb2NrIjt0aGlzLm1vdmVCbG9jaz1mdW5jdGlvbihsLGosaSxlKXt2YXIgYz10aGlzLmNhbnZhcy5fZWxlbS5jaGlsZHJlbigiOmVxKCIrbCsiKSIpO3RoaXMuZGF0YVtsXVswXT1qO3RoaXMuZGF0YVtsXVsxXT1pO3RoaXMuX3Bsb3REYXRhW2xdWzBdPWo7dGhpcy5fcGxvdERhdGFbbF1bMV09aTt0aGlzLl9zdGFja0RhdGFbbF1bMF09ajt0aGlzLl9zdGFja0RhdGFbbF1bMV09aTt0aGlzLmdyaWREYXRhW2xdWzBdPXRoaXMuX3hheGlzLnNlcmllc191MnAoaik7dGhpcy5ncmlkRGF0YVtsXVsxXT10aGlzLl95YXhpcy5zZXJpZXNfdTJwKGkpO3ZhciBrPWMub3V0ZXJXaWR0aCgpO3ZhciBmPWMub3V0ZXJIZWlnaHQoKTt2YXIgZD10aGlzLmdyaWREYXRhW2xdWzBdLWsvMisicHgiO3ZhciBnPXRoaXMuZ3JpZERhdGFbbF1bMV0tZi8yKyJweCI7aWYoZSl7aWYocGFyc2VJbnQoZSwxMCkpe2U9cGFyc2VJbnQoZSwxMCl9Yy5hbmltYXRlKHtsZWZ0OmQsdG9wOmd9LGUpfWVsc2V7Yy5jc3Moe2xlZnQ6ZCx0b3A6Z30pfWM9bnVsbH19O2EuanFwbG90LkJsb2NrUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24ocSxvLHIpe2lmKHRoaXMucGx1Z2lucy5wb2ludExhYmVscyl7dGhpcy5wbHVnaW5zLnBvaW50TGFiZWxzLnNob3c9ZmFsc2V9dmFyIGYsYyxsLG8scCxrLG4sZyxlLG07dmFyIGI9KHIhPXVuZGVmaW5lZCk/cjp7fTt2YXIgaj1uZXcgYS5qcXBsb3QuQ29sb3JHZW5lcmF0b3IodGhpcy5zZXJpZXNDb2xvcnMpO3RoaXMuY2FudmFzLl9lbGVtLmVtcHR5KCk7Zm9yKGY9MDtmPHRoaXMuZ3JpZERhdGEubGVuZ3RoO2YrKyl7bD10aGlzLmRhdGFbZl07bz10aGlzLmdyaWREYXRhW2ZdO3A9IiI7az17fTtpZih0eXBlb2YgbFsyXT09InN0cmluZyIpe3A9bFsyXX1lbHNle2lmKHR5cGVvZiBsWzJdPT0ib2JqZWN0Iil7az1sWzJdfX1pZih0eXBlb2YgbFszXT09Im9iamVjdCIpe2s9bFszXX1pZih0aGlzLmluc2VydEJyZWFrcyl7cD1wLnJlcGxhY2UoLyAvZywiPGJyIC8+Iil9az1hLmV4dGVuZCh0cnVlLHt9LHRoaXMuY3NzLGspO2M9YSgnPGRpdiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bzsiPjwvZGl2PicpO3RoaXMuY2FudmFzLl9lbGVtLmFwcGVuZChjKTt0aGlzLmVzY2FwZUh0bWw/Yy50ZXh0KHApOmMuaHRtbChwKTtkZWxldGUgay5wb3NpdGlvbjtkZWxldGUgay5tYXJnaW5SaWdodDtkZWxldGUgay5tYXJnaW5MZWZ0O2lmKCFrLmJhY2tncm91bmQmJiFrLmJhY2tncm91bmRDb2xvciYmIWsuYmFja2dyb3VuZEltYWdlKXtrLmJhY2tncm91bmQ9ai5uZXh0KCl9Yy5jc3Moayk7bj1jLm91dGVyV2lkdGgoKTtnPWMub3V0ZXJIZWlnaHQoKTtlPW9bMF0tbi8yKyJweCI7bT1vWzFdLWcvMisicHgiO2MuY3NzKHtsZWZ0OmUsdG9wOm19KTtjPW51bGx9fTthLmpxcGxvdC5CbG9ja0NhbnZhcz1mdW5jdGlvbigpe2EuanFwbG90LkVsZW1Db250YWluZXIuY2FsbCh0aGlzKTt0aGlzLl9jdHh9O2EuanFwbG90LkJsb2NrQ2FudmFzLnByb3RvdHlwZT1uZXcgYS5qcXBsb3QuRWxlbUNvbnRhaW5lcigpO2EuanFwbG90LkJsb2NrQ2FudmFzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hLmpxcGxvdC5CbG9ja0NhbnZhczthLmpxcGxvdC5CbG9ja0NhbnZhcy5wcm90b3R5cGUuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihpLGUsYyl7dGhpcy5fb2Zmc2V0cz1pO3ZhciBiPSJqcXBsb3QtYmxvY2tDYW52YXMiO2lmKGUhPXVuZGVmaW5lZCl7Yj1lfXZhciBnO2lmKHRoaXMuX2VsZW0pe2c9dGhpcy5fZWxlbS5nZXQoMCl9ZWxzZXtnPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpfWlmKGMhPXVuZGVmaW5lZCl7dGhpcy5fcGxvdERpbWVuc2lvbnM9Y312YXIgZD10aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC10aGlzLl9vZmZzZXRzLmxlZnQtdGhpcy5fb2Zmc2V0cy5yaWdodCsicHgiO3ZhciBmPXRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodC10aGlzLl9vZmZzZXRzLnRvcC10aGlzLl9vZmZzZXRzLmJvdHRvbSsicHgiO3RoaXMuX2VsZW09YShnKTt0aGlzLl9lbGVtLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix3aWR0aDpkLGhlaWdodDpmLGxlZnQ6dGhpcy5fb2Zmc2V0cy5sZWZ0LHRvcDp0aGlzLl9vZmZzZXRzLnRvcH0pO3RoaXMuX2VsZW0uYWRkQ2xhc3MoYik7cmV0dXJuIHRoaXMuX2VsZW19O2EuanFwbG90LkJsb2NrQ2FudmFzLnByb3RvdHlwZS5zZXRDb250ZXh0PWZ1bmN0aW9uKCl7dGhpcy5fY3R4PXtjYW52YXM6e3dpZHRoOjAsaGVpZ2h0OjB9LGNsZWFyUmVjdDpmdW5jdGlvbigpe3JldHVybiBudWxsfX07cmV0dXJuIHRoaXMuX2N0eH19KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.bubbleRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgdmFyIGFycmF5TWF4ID0gZnVuY3Rpb24oIGFycmF5ICl7CiAgICAgICAgcmV0dXJuIE1hdGgubWF4LmFwcGx5KCBNYXRoLCBhcnJheSApOwogICAgfTsKICAgIHZhciBhcnJheU1pbiA9IGZ1bmN0aW9uKCBhcnJheSApewogICAgICAgIHJldHVybiBNYXRoLm1pbi5hcHBseSggTWF0aCwgYXJyYXkgKTsKICAgIH07CgogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuQnViYmxlUmVuZGVyZXIKICAgICAqIFBsdWdpbiByZW5kZXJlciB0byBkcmF3IGEgYnViYmxlIGNoYXJ0LiAgQSBCdWJibGUgY2hhcnQgaGFzIGRhdGEgcG9pbnRzIGRpc3BsYXllZCBhcwogICAgICogY29sb3JlZCBjaXJjbGVzIHdpdGggYW4gb3B0aW9uYWwgdGV4dCBsYWJlbCBpbnNpZGUuICBUbyB1c2UKICAgICAqIHRoZSBidWJibGUgcmVuZGVyZXIsIHlvdSBtdXN0IGluY2x1ZGUgdGhlIGJ1YmJsZSByZW5kZXJlciBsaWtlOgogICAgICogCiAgICAgKiA+IDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi9zcmMvcGx1Z2lucy9qcXBsb3QuYnViYmxlUmVuZGVyZXIuanMiPjwvc2NyaXB0PgogICAgICogCiAgICAgKiBEYXRhIG11c3QgYmUgc3VwcGxpZWQgaW4gCiAgICAgKiB0aGUgZm9ybToKICAgICAqIAogICAgICogPiBbW3gxLCB5MSwgcjEsIDxsYWJlbCBvciB7bGFiZWw6J3RleHQnLCBjb2xvcjpjb2xvcn0+XSwgLi4uXQogICAgICogCiAgICAgKiB3aGVyZSB0aGUgbGFiZWwgb3Igb3B0aW9ucyAKICAgICAqIG9iamVjdCBpcyBvcHRpb25hbC4gIAogICAgICogCiAgICAgKiBOb3RlIHRoYXQgYWxsIGJ1YmJsZSBjb2xvcnMgd2lsbCBiZSB0aGUgc2FtZQogICAgICogdW5sZXNzIHRoZSAidmFyeUJ1YmJsZUNvbG9ycyIgb3B0aW9uIGlzIHNldCB0byB0cnVlLiAgQ29sb3JzIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlIGRhdGEgYXJyYXkKICAgICAqIG9yIGluIHRoZSBzZXJpZXNDb2xvcnMgYXJyYXkgb3B0aW9uIG9uIHRoZSBzZXJpZXMuICBJZiBubyBjb2xvcnMgYXJlIGRlZmluZWQsIHRoZSBkZWZhdWx0IGpxUGxvdAogICAgICogc2VyaWVzIG9mIDE2IGNvbG9ycyBhcmUgdXNlZC4gIENvbG9ycyBhcmUgYXV0b21hdGljYWxseSBjeWNsZWQgYXJvdW5kIGFnYWluIGlmIHRoZXJlIGFyZSBtb3JlCiAgICAgKiBidWJibGVzIHRoYW4gY29sb3JzLgogICAgICogCiAgICAgKiBCdWJibGVzIGFyZSBhdXRvc2NhbGVkIGJ5IGRlZmF1bHQgdG8gZml0IHdpdGhpbiB0aGUgY2hhcnQgYXJlYSB3aGlsZSBtYWludGFpbmluZyAKICAgICAqIHJlbGF0aXZlIHNpemVzLiAgSWYgdGhlICJhdXRvc2NhbGVCdWJibGVzIiBvcHRpb24gaXMgc2V0IHRvIGZhbHNlLCB0aGUgcihhZGl1cykgdmFsdWVzCiAgICAgKiBpbiB0aGUgZGF0YSBhcnJheSBhIHRyZWF0ZWQgYXMgbGl0ZXJhbCBwaXhlbCB2YWx1ZXMgZm9yIHRoZSByYWRpaSBvZiB0aGUgYnViYmxlcy4KICAgICAqIAogICAgICogUHJvcGVydGllcyBhcmUgcGFzc2VkIGludG8gdGhlIGJ1YmJsZSByZW5kZXJlciBpbiB0aGUgcmVuZGVyZXJPcHRpb25zIG9iamVjdCBvZgogICAgICogdGhlIHNlcmllcyBvcHRpb25zIGxpa2U6CiAgICAgKiAKICAgICAqID4gc2VyaWVzRGVmYXVsdHM6IHsKICAgICAqID4gICAgIHJlbmRlcmVyOiAkLmpxcGxvdC5CdWJibGVSZW5kZXJlciwKICAgICAqID4gICAgIHJlbmRlcmVyT3B0aW9uczogewogICAgICogPiAgICAgICAgIGJ1YmJsZUFscGhhOiAwLjcsCiAgICAgKiA+ICAgICAgICAgdmFyeUJ1YmJsZUNvbG9yczogZmFsc2UKICAgICAqID4gICAgIH0KICAgICAqID4gfQogICAgICogCiAgICAgKi8KICAgICQuanFwbG90LkJ1YmJsZVJlbmRlcmVyID0gZnVuY3Rpb24oKXsKICAgICAgICAkLmpxcGxvdC5MaW5lUmVuZGVyZXIuY2FsbCh0aGlzKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkJ1YmJsZVJlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTsKICAgICQuanFwbG90LkJ1YmJsZVJlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LkJ1YmJsZVJlbmRlcmVyOwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBhIHNlcmllcwogICAgJC5qcXBsb3QuQnViYmxlUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zLCBwbG90KSB7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAvLwogICAgICAgIC8vIHByb3A6IHZhcnlCdWJibGVDb2xvcnMKICAgICAgICAvLyBUcnVlIHRvIHZhcnkgdGhlIGNvbG9yIG9mIGVhY2ggYnViYmxlIGluIHRoaXMgc2VyaWVzIGFjY29yZGluZyB0bwogICAgICAgIC8vIHRoZSBzZXJpZXNDb2xvcnMgYXJyYXkuICBGYWxzZSB0byBzZXQgZWFjaCBidWJibGUgdG8gdGhlIGNvbG9yCiAgICAgICAgLy8gc3BlY2lmaWVkIG9uIHRoaXMgc2VyaWVzLiAgVGhpcyBoYXMgbm8gZWZmZWN0IGlmIGEgY3NzIGJhY2tncm91bmQgY29sb3IKICAgICAgICAvLyBvcHRpb24gaXMgc3BlY2lmaWVkIGluIHRoZSByZW5kZXJlciBjc3Mgb3B0aW9ucy4KICAgICAgICB0aGlzLnZhcnlCdWJibGVDb2xvcnMgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IGF1dG9zY2FsZUJ1YmJsZXMKICAgICAgICAvLyBUcnVlIHRvIHNjYWxlIHRoZSBidWJibGUgcmFkaXVzIGJhc2VkIG9uIHBsb3Qgc2l6ZS4KICAgICAgICAvLyBGYWxzZSB3aWxsIHVzZSB0aGUgcmFkaXVzIHZhbHVlIGFzIHByb3ZpZGVkIGFzIGEgcmF3IHBpeGVsIHZhbHVlIGZvcgogICAgICAgIC8vIGJ1YmJsZSByYWRpdXMuCiAgICAgICAgdGhpcy5hdXRvc2NhbGVCdWJibGVzID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBhdXRvc2NhbGVNdWx0aXBsaWVyCiAgICAgICAgLy8gTXVsdGlwbGllciB0aGUgYnViYmxlIHNpemUgaWYgYXV0b3NjYWxlQnViYmxlcyBpcyB0cnVlLgogICAgICAgIHRoaXMuYXV0b3NjYWxlTXVsdGlwbGllciA9IDEuMDsKICAgICAgICAvLyBwcm9wOiBhdXRvc2NhbGVQb2ludHNGYWN0b3IKICAgICAgICAvLyBGYWN0b3Igd2hpY2ggZGVjcmVhc2VzIGJ1YmJsZSBzaXplIGJhc2VkIG9uIGhvdyBtYW55IGJ1YmJsZXMgb24gb24gdGhlIGNoYXJ0LgogICAgICAgIC8vIDAgbWVhbnMgbm8gYWRqdXN0bWVudCBmb3IgbnVtYmVyIG9mIGJ1YmJsZXMuICBOZWdhdGl2ZSB2YWx1ZXMgd2lsbCBkZWNyZWFzZQogICAgICAgIC8vIHNpemUgb2YgYnViYmxlcyBhcyBtb3JlIGJ1YmJsZXMgYXJlIGFkZGVkLiAgVmFsdWVzIGJldHdlZW4gMCBhbmQgLTAuMgogICAgICAgIC8vIHNob3VsZCB3b3JrIHdlbGwuCiAgICAgICAgdGhpcy5hdXRvc2NhbGVQb2ludHNGYWN0b3IgPSAtMC4wNzsKICAgICAgICAvLyBwcm9wOiBlc2NhcGVIdG1sCiAgICAgICAgLy8gVHJ1ZSB0byBlc2NhcGUgaHRtbCBpbiBidWJibGUgbGFiZWwgdGV4dC4KICAgICAgICB0aGlzLmVzY2FwZUh0bWwgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IGhpZ2hsaWdodE1vdXNlT3ZlcgogICAgICAgIC8vIFRydWUgdG8gaGlnaGxpZ2h0IGJ1YmJsZXMgd2hlbiBtb3VzZWQgb3Zlci4KICAgICAgICAvLyBUaGlzIG11c3QgYmUgZmFsc2UgdG8gZW5hYmxlIGhpZ2hsaWdodE1vdXNlRG93biB0byBoaWdobGlnaHQgd2hlbiBjbGlja2luZyBvbiBhIHNsaWNlLgogICAgICAgIHRoaXMuaGlnaGxpZ2h0TW91c2VPdmVyID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBoaWdobGlnaHRNb3VzZURvd24KICAgICAgICAvLyBUcnVlIHRvIGhpZ2hsaWdodCB3aGVuIGEgbW91c2UgYnV0dG9uIGlzIHByZXNzZWQgb3ZlciBhIGJ1YmJsZS4KICAgICAgICAvLyBUaGlzIHdpbGwgYmUgZGlzYWJsZWQgaWYgaGlnaGxpZ2h0TW91c2VPdmVyIGlzIHRydWUuCiAgICAgICAgdGhpcy5oaWdobGlnaHRNb3VzZURvd24gPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiBoaWdobGlnaHRDb2xvcnMKICAgICAgICAvLyBBbiBhcnJheSBvZiBjb2xvcnMgdG8gdXNlIHdoZW4gaGlnaGxpZ2h0aW5nIGEgc2xpY2UuICBDYWxjdWxhdGVkIGF1dG9tYXRpY2FsbHkKICAgICAgICAvLyBpZiBub3Qgc3VwcGxpZWQuCiAgICAgICAgdGhpcy5oaWdobGlnaHRDb2xvcnMgPSBbXTsKICAgICAgICAvLyBwcm9wOiBidWJibGVBbHBoYQogICAgICAgIC8vIEFscGhhIHRyYW5zcGFyZW5jeSB0byBhcHBseSB0byBhbGwgYnViYmxlcyBpbiB0aGlzIHNlcmllcy4KICAgICAgICB0aGlzLmJ1YmJsZUFscGhhID0gMS4wOwogICAgICAgIC8vIHByb3A6IGhpZ2hsaWdodEFscGhhCiAgICAgICAgLy8gQWxwaGEgdHJhbnNwYXJlbmN5IHRvIGFwcGx5IHdoZW4gaGlnaGxpZ2h0aW5nIGJ1YmJsZS4KICAgICAgICAvLyBTZXQgdG8gdmFsdWUgb2YgYnViYmxlQWxwaGEgYnkgZGVmYXVsdC4KICAgICAgICB0aGlzLmhpZ2hsaWdodEFscGhhID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBidWJibGVHcmFkaWVudHMKICAgICAgICAvLyBUcnVlIHRvIGNvbG9yIHRoZSBidWJibGVzIHdpdGggZ3JhZGllbnQgZmlsbHMgaW5zdGVhZCBvZiBmbGF0IGNvbG9ycy4KICAgICAgICAvLyBOT1QgQVZBSUxBQkxFIElOIElFIGR1ZSB0byBsYWNrIG9mIGV4Y2FudmFzIHN1cHBvcnQgZm9yIHJhZGlhbCBncmFkaWVudCBmaWxscy4KICAgICAgICAvLyB3aWxsIGJlIGlnbm9yZWQgaW4gSUUuCiAgICAgICAgdGhpcy5idWJibGVHcmFkaWVudHMgPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiBzaG93TGFiZWxzCiAgICAgICAgLy8gVHJ1ZSB0byBzaG93IGxhYmVscyBvbiBidWJibGVzIChpZiBhbnkpLCBmYWxzZSB0byBub3Qgc2hvdy4KICAgICAgICB0aGlzLnNob3dMYWJlbHMgPSB0cnVlOwogICAgICAgIC8vIGFycmF5IG9mIFtwb2ludCBpbmRleCwgcmFkaXVzXSB3aGljaCB3aWxsIGJlIHNvcnRlZCBpbiBkZXNjZW5kaW5nIG9yZGVyIHRvIHBsb3QgCiAgICAgICAgLy8gbGFyZ2VzdCBwb2ludHMgYmVsb3cgc21hbGxlciBwb2ludHMuCiAgICAgICAgdGhpcy5yYWRpaSA9IFtdOwogICAgICAgIHRoaXMubWF4UmFkaXVzID0gMDsKICAgICAgICAvLyBpbmRleCBvZiB0aGUgY3VycmVudHkgaGlnaGxpZ2h0ZWQgcG9pbnQsIGlmIGFueQogICAgICAgIHRoaXMuX2hpZ2hsaWdodGVkUG9pbnQgPSBudWxsOwogICAgICAgIC8vIGFycmF5IG9mIGpRdWVyeSBsYWJlbHMuCiAgICAgICAgdGhpcy5sYWJlbHMgPSBbXTsKICAgICAgICB0aGlzLmJ1YmJsZUNhbnZhc2VzID0gW107CiAgICAgICAgdGhpcy5fdHlwZSA9ICdidWJibGUnOwogICAgICAgIAogICAgICAgIC8vIGlmIHVzZXIgaGFzIHBhc3NlZCBpbiBoaWdobGlnaHRNb3VzZURvd24gb3B0aW9uIGFuZCBub3Qgc2V0IGhpZ2hsaWdodE1vdXNlT3ZlciwgZGlzYWJsZSBoaWdobGlnaHRNb3VzZU92ZXIKICAgICAgICBpZiAob3B0aW9ucy5oaWdobGlnaHRNb3VzZURvd24gJiYgb3B0aW9ucy5oaWdobGlnaHRNb3VzZU92ZXIgPT0gbnVsbCkgewogICAgICAgICAgICBvcHRpb25zLmhpZ2hsaWdodE1vdXNlT3ZlciA9IGZhbHNlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgICAgICAKICAgICAgICBpZiAodGhpcy5oaWdobGlnaHRBbHBoYSA9PSBudWxsKSB7CiAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0QWxwaGEgPSB0aGlzLmJ1YmJsZUFscGhhOwogICAgICAgICAgICBpZiAodGhpcy5idWJibGVHcmFkaWVudHMpIHsKICAgICAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0QWxwaGEgPSAwLjM1OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHRoaXMuYXV0b3NjYWxlTXVsdGlwbGllciA9IHRoaXMuYXV0b3NjYWxlTXVsdGlwbGllciAqIE1hdGgucG93KHRoaXMuZGF0YS5sZW5ndGgsIHRoaXMuYXV0b3NjYWxlUG9pbnRzRmFjdG9yKTsKICAgICAgICAKICAgICAgICAvLyBpbmRleCBvZiB0aGUgY3VycmVudHkgaGlnaGxpZ2h0ZWQgcG9pbnQsIGlmIGFueQogICAgICAgIHRoaXMuX2hpZ2hsaWdodGVkUG9pbnQgPSBudWxsOwogICAgICAgIAogICAgICAgIC8vIGFkanVzdCB0aGUgc2VyaWVzIGNvbG9ycyBmb3Igb3B0aW9ucyBjb2xvcnMgcGFzc2VkIGluIHdpdGggZGF0YSBvciBmb3IgYWxwaGEuCiAgICAgICAgLy8gbm90ZSwgdGhpcyBjYW4gbGVhdmUgdW5kZWZpbmVkIGhvbGVzIGluIHRoZSBzZXJpZXNDb2xvcnMgYXJyYXkuCiAgICAgICAgdmFyIGNvbXBzOwogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIGNvbG9yID0gbnVsbDsKICAgICAgICAgICAgdmFyIGQgPSB0aGlzLmRhdGFbaV07CiAgICAgICAgICAgIHRoaXMubWF4UmFkaXVzID0gTWF0aC5tYXgodGhpcy5tYXhSYWRpdXMsIGRbMl0pOwogICAgICAgICAgICBpZiAoZFszXSkgewogICAgICAgICAgICAgICAgaWYgKHR5cGVvZihkWzNdKSA9PSAnb2JqZWN0JykgewogICAgICAgICAgICAgICAgICAgIGNvbG9yID0gZFszXVsnY29sb3InXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGNvbG9yID09IG51bGwpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlcmllc0NvbG9yc1tpXSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgY29sb3IgPSB0aGlzLnNlcmllc0NvbG9yc1tpXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGNvbG9yICYmIHRoaXMuYnViYmxlQWxwaGEgPCAxLjApIHsKICAgICAgICAgICAgICAgIGNvbXBzID0gJC5qcXBsb3QuZ2V0Q29sb3JDb21wb25lbnRzKGNvbG9yKTsKICAgICAgICAgICAgICAgIGNvbG9yID0gJ3JnYmEoJytjb21wc1swXSsnLCAnK2NvbXBzWzFdKycsICcrY29tcHNbMl0rJywgJyt0aGlzLmJ1YmJsZUFscGhhKycpJzsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGNvbG9yKSB7CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc0NvbG9yc1tpXSA9IGNvbG9yOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICghdGhpcy52YXJ5QnViYmxlQ29sb3JzKSB7CiAgICAgICAgICAgIHRoaXMuc2VyaWVzQ29sb3JzID0gW3RoaXMuY29sb3JdOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB0aGlzLmNvbG9yR2VuZXJhdG9yID0gbmV3ICQuanFwbG90LkNvbG9yR2VuZXJhdG9yKHRoaXMuc2VyaWVzQ29sb3JzKTsKICAgICAgICAKICAgICAgICAvLyBzZXQgaGlnaGxpZ2h0IGNvbG9ycyBpZiBub25lIHByb3ZpZGVkCiAgICAgICAgaWYgKHRoaXMuaGlnaGxpZ2h0Q29sb3JzLmxlbmd0aCA9PSAwKSB7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLnNlcmllc0NvbG9ycy5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAgICAgICB2YXIgcmdiYSA9ICQuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyh0aGlzLnNlcmllc0NvbG9yc1tpXSk7CiAgICAgICAgICAgICAgICB2YXIgbmV3cmdiID0gW3JnYmFbMF0sIHJnYmFbMV0sIHJnYmFbMl1dOwogICAgICAgICAgICAgICAgdmFyIHN1bSA9IG5ld3JnYlswXSArIG5ld3JnYlsxXSArIG5ld3JnYlsyXTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MDsgajwzOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIGRhcmtlbmluZywgbG93ZXN0IGNvbG9yIGNvbXBvbmVudCBjYW4gYmUgaXMgNjAuCiAgICAgICAgICAgICAgICAgICAgbmV3cmdiW2pdID0gKHN1bSA+IDU3MCkgPyAgbmV3cmdiW2pdICogMC44IDogbmV3cmdiW2pdICsgMC4zICogKDI1NSAtIG5ld3JnYltqXSk7CiAgICAgICAgICAgICAgICAgICAgbmV3cmdiW2pdID0gcGFyc2VJbnQobmV3cmdiW2pdLCAxMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLmhpZ2hsaWdodENvbG9ycy5wdXNoKCdyZ2JhKCcrbmV3cmdiWzBdKycsJytuZXdyZ2JbMV0rJywnK25ld3JnYlsyXSsnLCAnK3RoaXMuaGlnaGxpZ2h0QWxwaGErJyknKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICB0aGlzLmhpZ2hsaWdodENvbG9yR2VuZXJhdG9yID0gbmV3ICQuanFwbG90LkNvbG9yR2VuZXJhdG9yKHRoaXMuaGlnaGxpZ2h0Q29sb3JzKTsKICAgICAgICAKICAgICAgICB2YXIgc29wdHMgPSB7ZmlsbDp0cnVlLCBpc2FyYzp0cnVlLCBhbmdsZTp0aGlzLnNoYWRvd0FuZ2xlLCBhbHBoYTp0aGlzLnNoYWRvd0FscGhhLCBjbG9zZVBhdGg6dHJ1ZX07CiAgICAgICAgCiAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5pbml0KHNvcHRzKTsKICAgICAgICAKICAgICAgICB0aGlzLmNhbnZhcyA9IG5ldyAkLmpxcGxvdC5EaXZDYW52YXMoKTsKICAgICAgICB0aGlzLmNhbnZhcy5fcGxvdERpbWVuc2lvbnMgPSB0aGlzLl9wbG90RGltZW5zaW9uczsKICAgICAgICAKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RNb3VzZU1vdmUnLCBoYW5kbGVNb3ZlKTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RNb3VzZURvd24nLCBoYW5kbGVNb3VzZURvd24pOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdE1vdXNlVXAnLCBoYW5kbGVNb3VzZVVwKTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RDbGljaycsIGhhbmRsZUNsaWNrKTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RSaWdodENsaWNrJywgaGFuZGxlUmlnaHRDbGljayk7CiAgICAgICAgcGxvdC5wb3N0RHJhd0hvb2tzLmFkZE9uY2UocG9zdFBsb3REcmF3KTsKICAgICAgICAKICAgIH07CiAgICAKCiAgICAvLyBjb252ZXJ0cyB0aGUgdXNlciBkYXRhIHZhbHVlcyB0byBncmlkIGNvb3JkaW5hdGVzIGFuZCBzdG9yZXMgdGhlbQogICAgLy8gaW4gdGhlIGdyaWREYXRhIGFycmF5LgogICAgLy8gQ2FsbGVkIHdpdGggc2NvcGUgb2YgYSBzZXJpZXMuCiAgICAkLmpxcGxvdC5CdWJibGVSZW5kZXJlci5wcm90b3R5cGUuc2V0R3JpZERhdGEgPSBmdW5jdGlvbihwbG90KSB7CiAgICAgICAgLy8gcmVjYWxjdWxhdGUgdGhlIGdyaWQgZGF0YQogICAgICAgIHZhciB4cCA9IHRoaXMuX3hheGlzLnNlcmllc191MnA7CiAgICAgICAgdmFyIHlwID0gdGhpcy5feWF4aXMuc2VyaWVzX3UycDsKICAgICAgICB2YXIgZGF0YSA9IHRoaXMuX3Bsb3REYXRhOwogICAgICAgIHRoaXMuZ3JpZERhdGEgPSBbXTsKICAgICAgICB2YXIgcmFkaWkgPSBbXTsKICAgICAgICB0aGlzLnJhZGlpID0gW107CiAgICAgICAgdmFyIGRpbSA9IE1hdGgubWluKHBsb3QuX2hlaWdodCwgcGxvdC5fd2lkdGgpOwogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKGRhdGFbaV0gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgdGhpcy5ncmlkRGF0YS5wdXNoKFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhW2ldWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVtpXVsxXSksIGRhdGFbaV1bMl1dKTsKICAgICAgICAgICAgICAgIHRoaXMucmFkaWkucHVzaChbaSwgZGF0YVtpXVsyXV0pOwogICAgICAgICAgICAgICAgcmFkaWkucHVzaChkYXRhW2ldWzJdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB2YXIgciwgdmFsLCBtYXhyID0gdGhpcy5tYXhSYWRpdXMgPSBhcnJheU1heChyYWRpaSk7CiAgICAgICAgdmFyIGwgPSB0aGlzLmdyaWREYXRhLmxlbmd0aDsKICAgICAgICBpZiAodGhpcy5hdXRvc2NhbGVCdWJibGVzKSB7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgICAgIHZhbCA9IHJhZGlpW2ldL21heHI7CiAgICAgICAgICAgICAgICByID0gdGhpcy5hdXRvc2NhbGVNdWx0aXBsaWVyICogZGltIC8gNjsKICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGFbaV1bMl0gPSByICogdmFsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHRoaXMucmFkaWkuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBiWzFdIC0gYVsxXTsgfSk7CiAgICB9OwogICAgCiAgICAvLyBjb252ZXJ0cyBhbnkgYXJiaXRyYXJ5IGRhdGEgdmFsdWVzIHRvIGdyaWQgY29vcmRpbmF0ZXMgYW5kCiAgICAvLyByZXR1cm5zIHRoZW0uICBUaGlzIG1ldGhvZCBleGlzdHMgc28gdGhhdCBwbHVnaW5zIGNhbiB1c2UgYSBzZXJpZXMnCiAgICAvLyBsaW5lcmVuZGVyZXIgdG8gZ2VuZXJhdGUgZ3JpZCBkYXRhIHBvaW50cyB3aXRob3V0IG92ZXJ3cml0aW5nIHRoZQogICAgLy8gZ3JpZCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGF0IHNlcmllcy4KICAgIC8vIENhbGxlZCB3aXRoIHNjb3BlIG9mIGEgc2VyaWVzLgogICAgJC5qcXBsb3QuQnViYmxlUmVuZGVyZXIucHJvdG90eXBlLm1ha2VHcmlkRGF0YSA9IGZ1bmN0aW9uKGRhdGEsIHBsb3QpIHsKICAgICAgICAvLyByZWNhbGN1bGF0ZSB0aGUgZ3JpZCBkYXRhCiAgICAgICAgdmFyIHhwID0gdGhpcy5feGF4aXMuc2VyaWVzX3UycDsKICAgICAgICB2YXIgeXAgPSB0aGlzLl95YXhpcy5zZXJpZXNfdTJwOwogICAgICAgIHZhciBnZCA9IFtdOwogICAgICAgIHZhciByYWRpaSA9IFtdOwogICAgICAgIHRoaXMucmFkaWkgPSBbXTsKICAgICAgICB2YXIgZGltID0gTWF0aC5taW4ocGxvdC5faGVpZ2h0LCBwbG90Ll93aWR0aCk7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPGRhdGEubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKGRhdGFbaV0gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgZ2QucHVzaChbeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVtpXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbaV1bMV0pLCBkYXRhW2ldWzJdXSk7CiAgICAgICAgICAgICAgICByYWRpaS5wdXNoKGRhdGFbaV1bMl0pOwogICAgICAgICAgICAgICAgdGhpcy5yYWRpaS5wdXNoKFtpLCBkYXRhW2ldWzJdXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdmFyIHIsIHZhbCwgbWF4ciA9IHRoaXMubWF4UmFkaXVzID0gYXJyYXlNYXgocmFkaWkpOwogICAgICAgIHZhciBsID0gdGhpcy5ncmlkRGF0YS5sZW5ndGg7CiAgICAgICAgaWYgKHRoaXMuYXV0b3NjYWxlQnViYmxlcykgewogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8bDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YWwgPSByYWRpaVtpXS9tYXhyOwogICAgICAgICAgICAgICAgciA9IHRoaXMuYXV0b3NjYWxlTXVsdGlwbGllciAqIGRpbSAvIDY7CiAgICAgICAgICAgICAgICBnZFtpXVsyXSA9IHIgKiB2YWw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdGhpcy5yYWRpaS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGJbMV0gLSBhWzFdOyB9KTsKICAgICAgICByZXR1cm4gZ2Q7CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBzZXJpZXMKICAgICQuanFwbG90LkJ1YmJsZVJlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24gKGN0eCwgZ2QsIG9wdGlvbnMpIHsKICAgICAgICBpZiAodGhpcy5wbHVnaW5zLnBvaW50TGFiZWxzKSB7CiAgICAgICAgICAgIHRoaXMucGx1Z2lucy5wb2ludExhYmVscy5zaG93ID0gZmFsc2U7CiAgICAgICAgfQogICAgICAgIHZhciBvcHRzID0gKG9wdGlvbnMgIT0gdW5kZWZpbmVkKSA/IG9wdGlvbnMgOiB7fTsKICAgICAgICB2YXIgc2hhZG93ID0gKG9wdHMuc2hhZG93ICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNoYWRvdyA6IHRoaXMuc2hhZG93OwogICAgICAgIHRoaXMuY2FudmFzLl9lbGVtLmVtcHR5KCk7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMucmFkaWkubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIGlkeCA9IHRoaXMucmFkaWlbaV1bMF07CiAgICAgICAgICAgIHZhciB0PW51bGw7CiAgICAgICAgICAgIHZhciBjb2xvciA9IG51bGw7CiAgICAgICAgICAgIHZhciBlbCA9IG51bGw7CiAgICAgICAgICAgIHZhciB0ZWwgPSBudWxsOwogICAgICAgICAgICB2YXIgZCA9IHRoaXMuZGF0YVtpZHhdOwogICAgICAgICAgICB2YXIgZ2QgPSB0aGlzLmdyaWREYXRhW2lkeF07CiAgICAgICAgICAgIGlmIChkWzNdKSB7CiAgICAgICAgICAgICAgICBpZiAodHlwZW9mKGRbM10pID09ICdvYmplY3QnKSB7CiAgICAgICAgICAgICAgICAgICAgdCA9IGRbM11bJ2xhYmVsJ107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YoZFszXSkgPT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgICAgICB0ID0gZFszXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gY29sb3IgPSAodGhpcy52YXJ5QnViYmxlQ29sb3JzKSA/IHRoaXMuY29sb3JHZW5lcmF0b3IuZ2V0KGlkeCkgOiB0aGlzLmNvbG9yOwogICAgICAgICAgICBjb2xvciA9IHRoaXMuY29sb3JHZW5lcmF0b3IuZ2V0KGlkeCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBJZiB3ZSdyZSBkcmF3aW5nIGEgc2hhZG93LCBleHBhbmQgdGhlIGNhbnZhcyBkaW1lbnNpb25zIHRvIGFjY29tb2RhdGUuCiAgICAgICAgICAgIHZhciBjYW52YXNSYWRpdXMgPSBnZFsyXTsKICAgICAgICAgICAgdmFyIG9mZnNldCwgZGVwdGg7CiAgICAgICAgICAgIGlmICh0aGlzLnNoYWRvdykgewogICAgICAgICAgICAgICAgb2Zmc2V0ID0gKDAuNyArIGdkWzJdLzQwKS50b0ZpeGVkKDEpOwogICAgICAgICAgICAgICAgZGVwdGggPSAxICsgTWF0aC5jZWlsKGdkWzJdLzE1KTsKICAgICAgICAgICAgICAgIGNhbnZhc1JhZGl1cyArPSBvZmZzZXQqZGVwdGg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5idWJibGVDYW52YXNlc1tpZHhdID0gbmV3ICQuanFwbG90LkJ1YmJsZUNhbnZhcygpOwogICAgICAgICAgICB0aGlzLmNhbnZhcy5fZWxlbS5hcHBlbmQodGhpcy5idWJibGVDYW52YXNlc1tpZHhdLmNyZWF0ZUVsZW1lbnQoZ2RbMF0sIGdkWzFdLCBjYW52YXNSYWRpdXMpKTsKICAgICAgICAgICAgdGhpcy5idWJibGVDYW52YXNlc1tpZHhdLnNldENvbnRleHQoKTsKICAgICAgICAgICAgdmFyIGN0eCA9IHRoaXMuYnViYmxlQ2FudmFzZXNbaWR4XS5fY3R4OwogICAgICAgICAgICB2YXIgeCA9IGN0eC5jYW52YXMud2lkdGgvMjsKICAgICAgICAgICAgdmFyIHkgPSBjdHguY2FudmFzLmhlaWdodC8yOwogICAgICAgICAgICBpZiAodGhpcy5zaGFkb3cpIHsKICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIFt4LCB5LCBnZFsyXSwgMCwgMipNYXRoLlBJXSwge29mZnNldDogb2Zmc2V0LCBkZXB0aDogZGVwdGh9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLmJ1YmJsZUNhbnZhc2VzW2lkeF0uZHJhdyhnZFsyXSwgY29sb3IsIHRoaXMuYnViYmxlR3JhZGllbnRzLCB0aGlzLnNoYWRvd0FuZ2xlLzE4MCpNYXRoLlBJKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIG5vdyBkcmF3IGxhYmVsLgogICAgICAgICAgICBpZiAodCAmJiB0aGlzLnNob3dMYWJlbHMpIHsKICAgICAgICAgICAgICAgIHRlbCA9ICQoJzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyIgY2xhc3M9ImpxcGxvdC1idWJibGUtbGFiZWwiPjwvZGl2PicpOwogICAgICAgICAgICAgICAgaWYgKHRoaXMuZXNjYXBlSHRtbCkgewogICAgICAgICAgICAgICAgICAgIHRlbC50ZXh0KHQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdGVsLmh0bWwodCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLmNhbnZhcy5fZWxlbS5hcHBlbmQodGVsKTsKICAgICAgICAgICAgICAgIHZhciBoID0gJCh0ZWwpLm91dGVySGVpZ2h0KCk7CiAgICAgICAgICAgICAgICB2YXIgdyA9ICQodGVsKS5vdXRlcldpZHRoKCk7CiAgICAgICAgICAgICAgICB2YXIgdG9wID0gZ2RbMV0gLSAwLjUqaDsKICAgICAgICAgICAgICAgIHZhciBsZWZ0ID0gZ2RbMF0gLSAwLjUqdzsKICAgICAgICAgICAgICAgIHRlbC5jc3Moe3RvcDogdG9wLCBsZWZ0OiBsZWZ0fSk7CiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsc1tpZHhdID0gJCh0ZWwpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICAKICAgICQuanFwbG90LkRpdkNhbnZhcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkVsZW1Db250YWluZXIuY2FsbCh0aGlzKTsKICAgICAgICB0aGlzLl9jdHg7ICAKICAgIH07CiAgICAKICAgICQuanFwbG90LkRpdkNhbnZhcy5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuRWxlbUNvbnRhaW5lcigpOwogICAgJC5qcXBsb3QuRGl2Q2FudmFzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LkRpdkNhbnZhczsKICAgIAogICAgJC5qcXBsb3QuRGl2Q2FudmFzLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24ob2Zmc2V0cywgY2xzcywgcGxvdERpbWVuc2lvbnMpIHsKICAgICAgICB0aGlzLl9vZmZzZXRzID0gb2Zmc2V0czsKICAgICAgICB2YXIga2xhc3MgPSAnanFwbG90LURpdkNhbnZhcyc7CiAgICAgICAgaWYgKGNsc3MgIT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIGtsYXNzID0gY2xzczsKICAgICAgICB9CiAgICAgICAgdmFyIGVsZW07CiAgICAgICAgLy8gaWYgdGhpcyBjYW52YXMgYWxyZWFkeSBoYXMgYSBkb20gZWxlbWVudCwgZG9uJ3QgbWFrZSBhIG5ldyBvbmUuCiAgICAgICAgaWYgKHRoaXMuX2VsZW0pIHsKICAgICAgICAgICAgZWxlbSA9IHRoaXMuX2VsZW0uZ2V0KDApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIH0KICAgICAgICAvLyBpZiBuZXcgcGxvdERpbWVuc2lvbnMgc3VwcGxpZWQsIHVzZSB0aGVtLgogICAgICAgIGlmIChwbG90RGltZW5zaW9ucyAhPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgdGhpcy5fcGxvdERpbWVuc2lvbnMgPSBwbG90RGltZW5zaW9uczsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgdmFyIHcgPSB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIHRoaXMuX29mZnNldHMubGVmdCAtIHRoaXMuX29mZnNldHMucmlnaHQgKyAncHgnOwogICAgICAgIHZhciBoID0gdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0IC0gdGhpcy5fb2Zmc2V0cy50b3AgLSB0aGlzLl9vZmZzZXRzLmJvdHRvbSArICdweCc7CiAgICAgICAgdGhpcy5fZWxlbSA9ICQoZWxlbSk7CiAgICAgICAgdGhpcy5fZWxlbS5jc3MoeyBwb3NpdGlvbjogJ2Fic29sdXRlJywgd2lkdGg6dywgaGVpZ2h0OmgsIGxlZnQ6IHRoaXMuX29mZnNldHMubGVmdCwgdG9wOiB0aGlzLl9vZmZzZXRzLnRvcCB9KTsKICAgICAgICAKICAgICAgICB0aGlzLl9lbGVtLmFkZENsYXNzKGtsYXNzKTsKICAgICAgICByZXR1cm4gdGhpcy5fZWxlbTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkRpdkNhbnZhcy5wcm90b3R5cGUuc2V0Q29udGV4dCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuX2N0eCA9IHsKICAgICAgICAgICAgY2FudmFzOnsKICAgICAgICAgICAgICAgIHdpZHRoOjAsCiAgICAgICAgICAgICAgICBoZWlnaHQ6MAogICAgICAgICAgICB9LAogICAgICAgICAgICBjbGVhclJlY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbDt9CiAgICAgICAgfTsKICAgICAgICByZXR1cm4gdGhpcy5fY3R4OwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQnViYmxlQ2FudmFzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgJC5qcXBsb3QuRWxlbUNvbnRhaW5lci5jYWxsKHRoaXMpOwogICAgICAgIHRoaXMuX2N0eDsKICAgIH07CiAgICAKICAgICQuanFwbG90LkJ1YmJsZUNhbnZhcy5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuRWxlbUNvbnRhaW5lcigpOwogICAgJC5qcXBsb3QuQnViYmxlQ2FudmFzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LkJ1YmJsZUNhbnZhczsKICAgIAogICAgLy8gaW5pdGlhbGl6ZSB3aXRoIHRoZSB4LHkgcG9udCBvZiBidWJibGUgY2VudGVyIGFuZCB0aGUgYnViYmxlIHJhZGl1cy4KICAgICQuanFwbG90LkJ1YmJsZUNhbnZhcy5wcm90b3R5cGUuY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uKHgsIHksIHIpIHsgICAgIAogICAgICAgIHZhciBrbGFzcyA9ICdqcXBsb3QtYnViYmxlLXBvaW50JzsKCiAgICAgICAgdmFyIGVsZW07CiAgICAgICAgLy8gaWYgdGhpcyBjYW52YXMgYWxyZWFkeSBoYXMgYSBkb20gZWxlbWVudCwgZG9uJ3QgbWFrZSBhIG5ldyBvbmUuCiAgICAgICAgaWYgKHRoaXMuX2VsZW0pIHsKICAgICAgICAgICAgZWxlbSA9IHRoaXMuX2VsZW0uZ2V0KDApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBlbGVtLndpZHRoID0gKHIgIT0gbnVsbCkgPyAyKnIgOiBlbGVtLndpZHRoOwogICAgICAgIGVsZW0uaGVpZ2h0ID0gKHIgIT0gbnVsbCkgPyAyKnIgOiBlbGVtLmhlaWdodDsKICAgICAgICB0aGlzLl9lbGVtID0gJChlbGVtKTsKICAgICAgICB2YXIgbCA9ICh4ICE9IG51bGwgJiYgciAhPSBudWxsKSA/IHggLSByIDogdGhpcy5fZWxlbS5jc3MoJ2xlZnQnKTsKICAgICAgICB2YXIgdCA9ICh5ICE9IG51bGwgJiYgciAhPSBudWxsKSA/IHkgLSByIDogdGhpcy5fZWxlbS5jc3MoJ3RvcCcpOwogICAgICAgIHRoaXMuX2VsZW0uY3NzKHsgcG9zaXRpb246ICdhYnNvbHV0ZScsIGxlZnQ6IGwsIHRvcDogdCB9KTsKICAgICAgICAKICAgICAgICB0aGlzLl9lbGVtLmFkZENsYXNzKGtsYXNzKTsKICAgICAgICBpZiAoJC5qcXBsb3QudXNlX2V4Y2FudmFzKSB7CiAgICAgICAgICAgIHdpbmRvdy5HX3ZtbENhbnZhc01hbmFnZXIuaW5pdF8oZG9jdW1lbnQpOwogICAgICAgICAgICBlbGVtID0gd2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci5pbml0RWxlbWVudChlbGVtKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW07CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5CdWJibGVDYW52YXMucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihyLCBjb2xvciwgZ3JhZGllbnRzLCBhbmdsZSkgewogICAgICAgIHZhciBjdHggPSB0aGlzLl9jdHg7CiAgICAgICAgLy8gciA9IE1hdGguZmxvb3IocioxLjA0KTsKICAgICAgICAvLyB2YXIgeCA9IE1hdGgucm91bmQoY3R4LmNhbnZhcy53aWR0aC8yKTsKICAgICAgICAvLyB2YXIgeSA9IE1hdGgucm91bmQoY3R4LmNhbnZhcy5oZWlnaHQvMik7CiAgICAgICAgdmFyIHggPSBjdHguY2FudmFzLndpZHRoLzI7CiAgICAgICAgdmFyIHkgPSBjdHguY2FudmFzLmhlaWdodC8yOwogICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgaWYgKGdyYWRpZW50cyAmJiAhJC5qcXBsb3QudXNlX2V4Y2FudmFzKSB7CiAgICAgICAgICAgIHIgPSByKjEuMDQ7CiAgICAgICAgICAgIHZhciBjb21wcyA9ICQuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyhjb2xvcik7CiAgICAgICAgICAgIHZhciBjb2xvcmlubmVyID0gJ3JnYmEoJytNYXRoLnJvdW5kKGNvbXBzWzBdKzAuOCooMjU1LWNvbXBzWzBdKSkrJywgJytNYXRoLnJvdW5kKGNvbXBzWzFdKzAuOCooMjU1LWNvbXBzWzFdKSkrJywgJytNYXRoLnJvdW5kKGNvbXBzWzJdKzAuOCooMjU1LWNvbXBzWzJdKSkrJywgJytjb21wc1szXSsnKSc7CiAgICAgICAgICAgIHZhciBjb2xvcmVuZCA9ICdyZ2JhKCcrY29tcHNbMF0rJywgJytjb21wc1sxXSsnLCAnK2NvbXBzWzJdKycsIDApJzsKICAgICAgICAgICAgLy8gdmFyIHJpbm5lciA9IE1hdGgucm91bmQoMC4zNSAqIHIpOwogICAgICAgICAgICAvLyB2YXIgeGlubmVyID0gTWF0aC5yb3VuZCh4IC0gTWF0aC5jb3MoYW5nbGUpICogMC4zMyAqIHIpOwogICAgICAgICAgICAvLyB2YXIgeWlubmVyID0gTWF0aC5yb3VuZCh5IC0gTWF0aC5zaW4oYW5nbGUpICogMC4zMyAqIHIpOwogICAgICAgICAgICB2YXIgcmlubmVyID0gMC4zNSAqIHI7CiAgICAgICAgICAgIHZhciB4aW5uZXIgPSB4IC0gTWF0aC5jb3MoYW5nbGUpICogMC4zMyAqIHI7CiAgICAgICAgICAgIHZhciB5aW5uZXIgPSB5IC0gTWF0aC5zaW4oYW5nbGUpICogMC4zMyAqIHI7CiAgICAgICAgICAgIHZhciByYWRncmFkID0gY3R4LmNyZWF0ZVJhZGlhbEdyYWRpZW50KHhpbm5lciwgeWlubmVyLCByaW5uZXIsIHgsIHksIHIpOwogICAgICAgICAgICByYWRncmFkLmFkZENvbG9yU3RvcCgwLCBjb2xvcmlubmVyKTsKICAgICAgICAgICAgcmFkZ3JhZC5hZGRDb2xvclN0b3AoMC45MywgY29sb3IpOwogICAgICAgICAgICByYWRncmFkLmFkZENvbG9yU3RvcCgwLjk2LCBjb2xvcmVuZCk7CiAgICAgICAgICAgIHJhZGdyYWQuYWRkQ29sb3JTdG9wKDEsIGNvbG9yZW5kKTsKICAgICAgICAgICAgLy8gcmFkZ3JhZC5hZGRDb2xvclN0b3AoLjk4LCBjb2xvcmVuZCk7CiAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSByYWRncmFkOwogICAgICAgICAgICBjdHguZmlsbFJlY3QoMCwwLCBjdHguY2FudmFzLndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gY29sb3I7CiAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IGNvbG9yOwogICAgICAgICAgICBjdHgubGluZVdpZHRoID0gMTsKICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwogICAgICAgICAgICB2YXIgYW5nID0gMipNYXRoLlBJOwogICAgICAgICAgICBjdHguYXJjKHgsIHksIHIsIDAsIGFuZywgMCk7CiAgICAgICAgICAgIGN0eC5jbG9zZVBhdGgoKTsKICAgICAgICAgICAgY3R4LmZpbGwoKTsKICAgICAgICB9CiAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkJ1YmJsZUNhbnZhcy5wcm90b3R5cGUuc2V0Q29udGV4dCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuX2N0eCA9IHRoaXMuX2VsZW0uZ2V0KDApLmdldENvbnRleHQoIjJkIik7CiAgICAgICAgcmV0dXJuIHRoaXMuX2N0eDsKICAgIH07CiAgICAKICAgICQuanFwbG90LkJ1YmJsZUF4aXNSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQnViYmxlQXhpc1JlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIoKTsKICAgICQuanFwbG90LkJ1YmJsZUF4aXNSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5CdWJibGVBeGlzUmVuZGVyZXI7CiAgICAgICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBheGlzIG9iamVjdC4KICAgICQuanFwbG90LkJ1YmJsZUF4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpewogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgIHZhciBkYiA9IHRoaXMuX2RhdGFCb3VuZHM7CiAgICAgICAgdmFyIG1pbnNpZHggPSAwLAogICAgICAgICAgICBtaW5waWR4ID0gMCwKICAgICAgICAgICAgbWF4c2lkeCA9IDAsCiAgICAgICAgICAgIG1heHBpZHggPSAwLAogICAgICAgICAgICBtYXhyID0gMCwKICAgICAgICAgICAgbWluciA9IDAsCiAgICAgICAgICAgIG1pbk1heFJhZGl1cyA9IDAsCiAgICAgICAgICAgIG1heE1heFJhZGl1cyA9IDAsCiAgICAgICAgICAgIG1heE11bHQgPSAwLAogICAgICAgICAgICBtaW5NdWx0ID0gMDsKICAgICAgICAvLyBHbyB0aHJvdWdoIGFsbCB0aGUgc2VyaWVzIGF0dGFjaGVkIHRvIHRoaXMgYXhpcyBhbmQgZmluZAogICAgICAgIC8vIHRoZSBtaW4vbWF4IGJvdW5kcyBmb3IgdGhpcyBheGlzLgogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHMgPSB0aGlzLl9zZXJpZXNbaV07CiAgICAgICAgICAgIHZhciBkID0gcy5fcGxvdERhdGE7CiAgICAgICAgICAgIAogICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8ZC5sZW5ndGg7IGorKykgeyAKICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZFtqXVswXSA8IGRiLm1pbiB8fCBkYi5taW4gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBkYi5taW4gPSBkW2pdWzBdOwogICAgICAgICAgICAgICAgICAgICAgICBtaW5zaWR4PWk7CiAgICAgICAgICAgICAgICAgICAgICAgIG1pbnBpZHg9ajsKICAgICAgICAgICAgICAgICAgICAgICAgbWluciA9IGRbal1bMl07CiAgICAgICAgICAgICAgICAgICAgICAgIG1pbk1heFJhZGl1cyA9IHMubWF4UmFkaXVzOwogICAgICAgICAgICAgICAgICAgICAgICBtaW5NdWx0ID0gcy5hdXRvc2NhbGVNdWx0aXBsaWVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZFtqXVswXSA+IGRiLm1heCB8fCBkYi5tYXggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBkYi5tYXggPSBkW2pdWzBdOwogICAgICAgICAgICAgICAgICAgICAgICBtYXhzaWR4PWk7CiAgICAgICAgICAgICAgICAgICAgICAgIG1heHBpZHg9ajsKICAgICAgICAgICAgICAgICAgICAgICAgbWF4ciA9IGRbal1bMl07CiAgICAgICAgICAgICAgICAgICAgICAgIG1heE1heFJhZGl1cyA9IHMubWF4UmFkaXVzOwogICAgICAgICAgICAgICAgICAgICAgICBtYXhNdWx0ID0gcy5hdXRvc2NhbGVNdWx0aXBsaWVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGRbal1bMV0gPCBkYi5taW4gfHwgZGIubWluID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGIubWluID0gZFtqXVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgbWluc2lkeD1pOwogICAgICAgICAgICAgICAgICAgICAgICBtaW5waWR4PWo7CiAgICAgICAgICAgICAgICAgICAgICAgIG1pbnIgPSBkW2pdWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBtaW5NYXhSYWRpdXMgPSBzLm1heFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgICAgbWluTXVsdCA9IHMuYXV0b3NjYWxlTXVsdGlwbGllcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGRbal1bMV0gPiBkYi5tYXggfHwgZGIubWF4ID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGIubWF4ID0gZFtqXVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgbWF4c2lkeD1pOwogICAgICAgICAgICAgICAgICAgICAgICBtYXhwaWR4PWo7CiAgICAgICAgICAgICAgICAgICAgICAgIG1heHIgPSBkW2pdWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBtYXhNYXhSYWRpdXMgPSBzLm1heFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgICAgbWF4TXVsdCA9IHMuYXV0b3NjYWxlTXVsdGlwbGllcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICB2YXIgbWluUmF0aW8gPSBtaW5yL21pbk1heFJhZGl1czsKICAgICAgICB2YXIgbWF4UmF0aW8gPSBtYXhyL21heE1heFJhZGl1czsKICAgICAgICAKICAgICAgICAvLyBuZWVkIHRvIGVzdGltYXRlIHRoZSBlZmZlY3Qgb2YgdGhlIHJhZGl1cyBvbiB0b3RhbCBheGlzIHNwYW4gYW5kIGFkanVzdCBheGlzIGFjY29yZGluZ2x5LgogICAgICAgIHZhciBzcGFuID0gZGIubWF4IC0gZGIubWluOwogICAgICAgIC8vIHZhciBkaW0gPSAodGhpcy5uYW1lID09ICd4YXhpcycgfHwgdGhpcy5uYW1lID09ICd4MmF4aXMnKSA/IHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoIDogdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0OwogICAgICAgIHZhciBkaW0gPSBNYXRoLm1pbih0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCwgdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0KTsKICAgICAgICAKICAgICAgICB2YXIgbWluZmFjdCA9IG1pblJhdGlvICogbWluTXVsdC8zICogc3BhbjsKICAgICAgICB2YXIgbWF4ZmFjdCA9IG1heFJhdGlvICogbWF4TXVsdC8zICogc3BhbjsKICAgICAgICBkYi5tYXggKz0gbWF4ZmFjdDsKICAgICAgICBkYi5taW4gLT0gbWluZmFjdDsKICAgIH07CiAgICAKICAgIGZ1bmN0aW9uIGhpZ2hsaWdodCAocGxvdCwgc2lkeCwgcGlkeCkgewogICAgICAgIHBsb3QucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRMYWJlbENhbnZhcy5lbXB0eSgpOwogICAgICAgIHZhciBzID0gcGxvdC5zZXJpZXNbc2lkeF07CiAgICAgICAgdmFyIGNhbnZhcyA9IHBsb3QucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7CiAgICAgICAgdmFyIGN0eCA9IGNhbnZhcy5fY3R4OwogICAgICAgIGN0eC5jbGVhclJlY3QoMCwwLGN0eC5jYW52YXMud2lkdGgsIGN0eC5jYW52YXMuaGVpZ2h0KTsKICAgICAgICBzLl9oaWdobGlnaHRlZFBvaW50ID0gcGlkeDsKICAgICAgICBwbG90LnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCA9IHNpZHg7CiAgICAgICAgCiAgICAgICAgdmFyIGNvbG9yID0gcy5oaWdobGlnaHRDb2xvckdlbmVyYXRvci5nZXQocGlkeCk7CiAgICAgICAgdmFyIHggPSBzLmdyaWREYXRhW3BpZHhdWzBdLAogICAgICAgICAgICB5ID0gcy5ncmlkRGF0YVtwaWR4XVsxXSwKICAgICAgICAgICAgciA9IHMuZ3JpZERhdGFbcGlkeF1bMl07CiAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICBjdHguZmlsbFN0eWxlID0gY29sb3I7CiAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gY29sb3I7CiAgICAgICAgY3R4LmxpbmVXaWR0aCA9IDE7CiAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwogICAgICAgIGN0eC5hcmMoeCwgeSwgciwgMCwgMipNYXRoLlBJLCAwKTsKICAgICAgICBjdHguY2xvc2VQYXRoKCk7CiAgICAgICAgY3R4LmZpbGwoKTsKICAgICAgICBjdHgucmVzdG9yZSgpOyAgICAgICAgCiAgICAgICAgLy8gYnJpbmcgbGFiZWwgdG8gZnJvbnQKICAgICAgICBpZiAocy5sYWJlbHNbcGlkeF0pIHsKICAgICAgICAgICAgcGxvdC5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodExhYmVsID0gcy5sYWJlbHNbcGlkeF0uY2xvbmUoKTsKICAgICAgICAgICAgcGxvdC5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodExhYmVsLmFwcGVuZFRvKHBsb3QucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRMYWJlbENhbnZhcyk7CiAgICAgICAgICAgIHBsb3QucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRMYWJlbC5hZGRDbGFzcygnanFwbG90LWJ1YmJsZS1sYWJlbC1oaWdobGlnaHQnKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIHVuaGlnaGxpZ2h0IChwbG90KSB7CiAgICAgICAgdmFyIGNhbnZhcyA9IHBsb3QucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7CiAgICAgICAgdmFyIHNpZHggPSBwbG90LnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDsKICAgICAgICBwbG90LnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0TGFiZWxDYW52YXMuZW1wdHkoKTsKICAgICAgICBjYW52YXMuX2N0eC5jbGVhclJlY3QoMCwwLCBjYW52YXMuX2N0eC5jYW52YXMud2lkdGgsIGNhbnZhcy5fY3R4LmNhbnZhcy5oZWlnaHQpOwogICAgICAgIGZvciAodmFyIGk9MDsgaTxwbG90LnNlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBwbG90LnNlcmllc1tpXS5faGlnaGxpZ2h0ZWRQb2ludCA9IG51bGw7CiAgICAgICAgfQogICAgICAgIHBsb3QucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ID0gbnVsbDsKICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKCdqcXBsb3REYXRhVW5oaWdobGlnaHQnKTsKICAgIH0KICAgIAogCiAgICBmdW5jdGlvbiBoYW5kbGVNb3ZlKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIGlmIChuZWlnaGJvcikgewogICAgICAgICAgICB2YXIgc2kgPSBuZWlnaGJvci5zZXJpZXNJbmRleDsKICAgICAgICAgICAgdmFyIHBpID0gbmVpZ2hib3IucG9pbnRJbmRleDsKICAgICAgICAgICAgdmFyIGlucyA9IFtzaSwgcGksIG5laWdoYm9yLmRhdGEsIHBsb3Quc2VyaWVzW3NpXS5ncmlkRGF0YVtwaV1bMl1dOwogICAgICAgICAgICB2YXIgZXZ0MSA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YU1vdXNlT3ZlcicpOwogICAgICAgICAgICBldnQxLnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgIGV2dDEucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQxLCBpbnMpOwogICAgICAgICAgICBpZiAocGxvdC5zZXJpZXNbaW5zWzBdXS5oaWdobGlnaHRNb3VzZU92ZXIgJiYgIShpbnNbMF0gPT0gcGxvdC5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXggJiYgaW5zWzFdID09IHBsb3Quc2VyaWVzW2luc1swXV0uX2hpZ2hsaWdodGVkUG9pbnQpKSB7CiAgICAgICAgICAgICAgICB2YXIgZXZ0ID0galF1ZXJ5LkV2ZW50KCdqcXBsb3REYXRhSGlnaGxpZ2h0Jyk7CiAgICAgICAgICAgICAgICBldnQud2hpY2ggPSBldi53aGljaDsKICAgICAgICAgICAgICAgIGV2dC5wYWdlWCA9IGV2LnBhZ2VYOwogICAgICAgICAgICAgICAgZXZ0LnBhZ2VZID0gZXYucGFnZVk7CiAgICAgICAgICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKGV2dCwgaW5zKTsKICAgICAgICAgICAgICAgIGhpZ2hsaWdodCAocGxvdCwgaW5zWzBdLCBpbnNbMV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG5laWdoYm9yID09IG51bGwpIHsKICAgICAgICAgICAgdW5oaWdobGlnaHQgKHBsb3QpOwogICAgICAgIH0KICAgIH0gCiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlRG93bihldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAobmVpZ2hib3IpIHsKICAgICAgICAgICAgdmFyIHNpID0gbmVpZ2hib3Iuc2VyaWVzSW5kZXg7CiAgICAgICAgICAgIHZhciBwaSA9IG5laWdoYm9yLnBvaW50SW5kZXg7CiAgICAgICAgICAgIHZhciBpbnMgPSBbc2ksIHBpLCBuZWlnaGJvci5kYXRhLCBwbG90LnNlcmllc1tzaV0uZ3JpZERhdGFbcGldWzJdXTsKICAgICAgICAgICAgaWYgKHBsb3Quc2VyaWVzW2luc1swXV0uaGlnaGxpZ2h0TW91c2VEb3duICYmICEoaW5zWzBdID09IHBsb3QucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ICYmIGluc1sxXSA9PSBwbG90LnNlcmllc1tpbnNbMF1dLl9oaWdobGlnaHRlZFBvaW50KSkgewogICAgICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YUhpZ2hsaWdodCcpOwogICAgICAgICAgICAgICAgZXZ0LndoaWNoID0gZXYud2hpY2g7CiAgICAgICAgICAgICAgICBldnQucGFnZVggPSBldi5wYWdlWDsKICAgICAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQsIGlucyk7CiAgICAgICAgICAgICAgICBoaWdobGlnaHQgKHBsb3QsIGluc1swXSwgaW5zWzFdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChuZWlnaGJvciA9PSBudWxsKSB7CiAgICAgICAgICAgIHVuaGlnaGxpZ2h0IChwbG90KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlVXAoZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgdmFyIGlkeCA9IHBsb3QucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4OwogICAgICAgIGlmIChpZHggIT0gbnVsbCAmJiBwbG90LnNlcmllc1tpZHhdLmhpZ2hsaWdodE1vdXNlRG93bikgewogICAgICAgICAgICB1bmhpZ2hsaWdodChwbG90KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIGlmIChuZWlnaGJvcikgewogICAgICAgICAgICB2YXIgc2kgPSBuZWlnaGJvci5zZXJpZXNJbmRleDsKICAgICAgICAgICAgdmFyIHBpID0gbmVpZ2hib3IucG9pbnRJbmRleDsKICAgICAgICAgICAgdmFyIGlucyA9IFtzaSwgcGksIG5laWdoYm9yLmRhdGEsIHBsb3Quc2VyaWVzW3NpXS5ncmlkRGF0YVtwaV1bMl1dOwogICAgICAgICAgICB2YXIgZXZ0ID0galF1ZXJ5LkV2ZW50KCdqcXBsb3REYXRhQ2xpY2snKTsKICAgICAgICAgICAgZXZ0LndoaWNoID0gZXYud2hpY2g7CiAgICAgICAgICAgIGV2dC5wYWdlWCA9IGV2LnBhZ2VYOwogICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQsIGlucyk7CiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVSaWdodENsaWNrKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIGlmIChuZWlnaGJvcikgewogICAgICAgICAgICB2YXIgc2kgPSBuZWlnaGJvci5zZXJpZXNJbmRleDsKICAgICAgICAgICAgdmFyIHBpID0gbmVpZ2hib3IucG9pbnRJbmRleDsKICAgICAgICAgICAgdmFyIGlucyA9IFtzaSwgcGksIG5laWdoYm9yLmRhdGEsIHBsb3Quc2VyaWVzW3NpXS5ncmlkRGF0YVtwaV1bMl1dOwogICAgICAgICAgICB2YXIgaWR4ID0gcGxvdC5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg7CiAgICAgICAgICAgIGlmIChpZHggIT0gbnVsbCAmJiBwbG90LnNlcmllc1tpZHhdLmhpZ2hsaWdodE1vdXNlRG93bikgewogICAgICAgICAgICAgICAgdW5oaWdobGlnaHQocGxvdCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YVJpZ2h0Q2xpY2snKTsKICAgICAgICAgICAgZXZ0LndoaWNoID0gZXYud2hpY2g7CiAgICAgICAgICAgIGV2dC5wYWdlWCA9IGV2LnBhZ2VYOwogICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQsIGlucyk7CiAgICAgICAgfQogICAgfQogICAgCiAgICAvLyBjYWxsZWQgd2l0aGluIGNvbnRleHQgb2YgcGxvdAogICAgLy8gY3JlYXRlIGEgY2FudmFzIHdoaWNoIHdlIGNhbiBkcmF3IG9uLgogICAgLy8gaW5zZXJ0IGl0IGJlZm9yZSB0aGUgZXZlbnRDYW52YXMsIHNvIGV2ZW50Q2FudmFzIHdpbGwgc3RpbGwgY2FwdHVyZSBldmVudHMuCiAgICBmdW5jdGlvbiBwb3N0UGxvdERyYXcoKSB7CiAgICAgICAgLy8gTWVtb3J5IExlYWtzIHBhdGNoICAgIAogICAgICAgIGlmICh0aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIgJiYgdGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcykgewogICAgICAgICAgICB0aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnJlc2V0Q2FudmFzKCk7CiAgICAgICAgICAgIHRoaXMucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMgPSBudWxsOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB0aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIgPSB7aGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDpudWxsfTsKICAgICAgICB0aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzID0gbmV3ICQuanFwbG90LkdlbmVyaWNDYW52YXMoKTsKICAgICAgICB0aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0TGFiZWwgPSBudWxsOwogICAgICAgIHRoaXMucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRMYWJlbENhbnZhcyA9ICQoJzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyI+PC9kaXY+Jyk7CiAgICAgICAgdmFyIHRvcCA9IHRoaXMuX2dyaWRQYWRkaW5nLnRvcDsKICAgICAgICB2YXIgbGVmdCA9IHRoaXMuX2dyaWRQYWRkaW5nLmxlZnQ7CiAgICAgICAgdmFyIHdpZHRoID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSB0aGlzLl9ncmlkUGFkZGluZy5sZWZ0IC0gdGhpcy5fZ3JpZFBhZGRpbmcucmlnaHQ7CiAgICAgICAgdmFyIGhlaWdodCA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIHRoaXMuX2dyaWRQYWRkaW5nLnRvcCAtIHRoaXMuX2dyaWRQYWRkaW5nLmJvdHRvbTsKICAgICAgICB0aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0TGFiZWxDYW52YXMuY3NzKHt0b3A6dG9wLCBsZWZ0OmxlZnQsIHdpZHRoOndpZHRoKydweCcsIGhlaWdodDpoZWlnaHQrJ3B4J30pOwoKICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZSh0aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsICdqcXBsb3QtYnViYmxlUmVuZGVyZXItaGlnaGxpZ2h0LWNhbnZhcycsIHRoaXMuX3Bsb3REaW1lbnNpb25zLCB0aGlzKSk7CiAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUodGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodExhYmVsQ2FudmFzKTsKICAgICAgICAKICAgICAgICB2YXIgaGN0eCA9IHRoaXMucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuc2V0Q29udGV4dCgpOwogICAgfQoKICAgIAogICAgLy8gc2V0dXAgZGVmYXVsdCByZW5kZXJlcnMgZm9yIGF4ZXMgYW5kIGxlZ2VuZCBzbyB1c2VyIGRvZXNuJ3QgaGF2ZSB0bwogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgcGxvdAogICAgZnVuY3Rpb24gcHJlSW5pdCh0YXJnZXQsIGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgICAgICBvcHRpb25zLmF4ZXNEZWZhdWx0cyA9IG9wdGlvbnMuYXhlc0RlZmF1bHRzIHx8IHt9OwogICAgICAgIG9wdGlvbnMuc2VyaWVzRGVmYXVsdHMgPSBvcHRpb25zLnNlcmllc0RlZmF1bHRzIHx8IHt9OwogICAgICAgIC8vIG9ubHkgc2V0IHRoZXNlIGlmIHRoZXJlIGlzIGEgQnViYmxlIHNlcmllcwogICAgICAgIHZhciBzZXRvcHRzID0gZmFsc2U7CiAgICAgICAgaWYgKG9wdGlvbnMuc2VyaWVzRGVmYXVsdHMucmVuZGVyZXIgPT0gJC5qcXBsb3QuQnViYmxlUmVuZGVyZXIpIHsKICAgICAgICAgICAgc2V0b3B0cyA9IHRydWU7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuc2VyaWVzKSB7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaSA8IG9wdGlvbnMuc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5zZXJpZXNbaV0ucmVuZGVyZXIgPT0gJC5qcXBsb3QuQnViYmxlUmVuZGVyZXIpIHsKICAgICAgICAgICAgICAgICAgICBzZXRvcHRzID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoc2V0b3B0cykgewogICAgICAgICAgICBvcHRpb25zLmF4ZXNEZWZhdWx0cy5yZW5kZXJlciA9ICQuanFwbG90LkJ1YmJsZUF4aXNSZW5kZXJlcjsKICAgICAgICAgICAgb3B0aW9ucy5zb3J0RGF0YSA9IGZhbHNlOwogICAgICAgIH0KICAgIH0KICAgIAogICAgJC5qcXBsb3QucHJlSW5pdEhvb2tzLnB1c2gocHJlSW5pdCk7CiAgICAKfSkoalF1ZXJ5KTsKICAgIAogICAg]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.bubbleRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGYpe3ZhciBkPWZ1bmN0aW9uKG0pe3JldHVybiBNYXRoLm1heC5hcHBseShNYXRoLG0pfTt2YXIgaj1mdW5jdGlvbihtKXtyZXR1cm4gTWF0aC5taW4uYXBwbHkoTWF0aCxtKX07Zi5qcXBsb3QuQnViYmxlUmVuZGVyZXI9ZnVuY3Rpb24oKXtmLmpxcGxvdC5MaW5lUmVuZGVyZXIuY2FsbCh0aGlzKX07Zi5qcXBsb3QuQnViYmxlUmVuZGVyZXIucHJvdG90eXBlPW5ldyBmLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTtmLmpxcGxvdC5CdWJibGVSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9Zi5qcXBsb3QuQnViYmxlUmVuZGVyZXI7Zi5qcXBsb3QuQnViYmxlUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24odyx0KXt0aGlzLnZhcnlCdWJibGVDb2xvcnM9dHJ1ZTt0aGlzLmF1dG9zY2FsZUJ1YmJsZXM9dHJ1ZTt0aGlzLmF1dG9zY2FsZU11bHRpcGxpZXI9MTt0aGlzLmF1dG9zY2FsZVBvaW50c0ZhY3Rvcj0tMC4wNzt0aGlzLmVzY2FwZUh0bWw9dHJ1ZTt0aGlzLmhpZ2hsaWdodE1vdXNlT3Zlcj10cnVlO3RoaXMuaGlnaGxpZ2h0TW91c2VEb3duPWZhbHNlO3RoaXMuaGlnaGxpZ2h0Q29sb3JzPVtdO3RoaXMuYnViYmxlQWxwaGE9MTt0aGlzLmhpZ2hsaWdodEFscGhhPW51bGw7dGhpcy5idWJibGVHcmFkaWVudHM9ZmFsc2U7dGhpcy5zaG93TGFiZWxzPXRydWU7dGhpcy5yYWRpaT1bXTt0aGlzLm1heFJhZGl1cz0wO3RoaXMuX2hpZ2hsaWdodGVkUG9pbnQ9bnVsbDt0aGlzLmxhYmVscz1bXTt0aGlzLmJ1YmJsZUNhbnZhc2VzPVtdO3RoaXMuX3R5cGU9ImJ1YmJsZSI7aWYody5oaWdobGlnaHRNb3VzZURvd24mJncuaGlnaGxpZ2h0TW91c2VPdmVyPT1udWxsKXt3LmhpZ2hsaWdodE1vdXNlT3Zlcj1mYWxzZX1mLmV4dGVuZCh0cnVlLHRoaXMsdyk7aWYodGhpcy5oaWdobGlnaHRBbHBoYT09bnVsbCl7dGhpcy5oaWdobGlnaHRBbHBoYT10aGlzLmJ1YmJsZUFscGhhO2lmKHRoaXMuYnViYmxlR3JhZGllbnRzKXt0aGlzLmhpZ2hsaWdodEFscGhhPTAuMzV9fXRoaXMuYXV0b3NjYWxlTXVsdGlwbGllcj10aGlzLmF1dG9zY2FsZU11bHRpcGxpZXIqTWF0aC5wb3codGhpcy5kYXRhLmxlbmd0aCx0aGlzLmF1dG9zY2FsZVBvaW50c0ZhY3Rvcik7dGhpcy5faGlnaGxpZ2h0ZWRQb2ludD1udWxsO3ZhciBuO2Zvcih2YXIgcj0wO3I8dGhpcy5kYXRhLmxlbmd0aDtyKyspe3ZhciBwPW51bGw7dmFyIHY9dGhpcy5kYXRhW3JdO3RoaXMubWF4UmFkaXVzPU1hdGgubWF4KHRoaXMubWF4UmFkaXVzLHZbMl0pO2lmKHZbM10pe2lmKHR5cGVvZih2WzNdKT09Im9iamVjdCIpe3A9dlszXVsiY29sb3IiXX19aWYocD09bnVsbCl7aWYodGhpcy5zZXJpZXNDb2xvcnNbcl0hPW51bGwpe3A9dGhpcy5zZXJpZXNDb2xvcnNbcl19fWlmKHAmJnRoaXMuYnViYmxlQWxwaGE8MSl7bj1mLmpxcGxvdC5nZXRDb2xvckNvbXBvbmVudHMocCk7cD0icmdiYSgiK25bMF0rIiwgIituWzFdKyIsICIrblsyXSsiLCAiK3RoaXMuYnViYmxlQWxwaGErIikifWlmKHApe3RoaXMuc2VyaWVzQ29sb3JzW3JdPXB9fWlmKCF0aGlzLnZhcnlCdWJibGVDb2xvcnMpe3RoaXMuc2VyaWVzQ29sb3JzPVt0aGlzLmNvbG9yXX10aGlzLmNvbG9yR2VuZXJhdG9yPW5ldyBmLmpxcGxvdC5Db2xvckdlbmVyYXRvcih0aGlzLnNlcmllc0NvbG9ycyk7aWYodGhpcy5oaWdobGlnaHRDb2xvcnMubGVuZ3RoPT0wKXtmb3IodmFyIHI9MDtyPHRoaXMuc2VyaWVzQ29sb3JzLmxlbmd0aDtyKyspe3ZhciBvPWYuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyh0aGlzLnNlcmllc0NvbG9yc1tyXSk7dmFyIHU9W29bMF0sb1sxXSxvWzJdXTt2YXIgcz11WzBdK3VbMV0rdVsyXTtmb3IodmFyIHE9MDtxPDM7cSsrKXt1W3FdPShzPjU3MCk/dVtxXSowLjg6dVtxXSswLjMqKDI1NS11W3FdKTt1W3FdPXBhcnNlSW50KHVbcV0sMTApfXRoaXMuaGlnaGxpZ2h0Q29sb3JzLnB1c2goInJnYmEoIit1WzBdKyIsIit1WzFdKyIsIit1WzJdKyIsICIrdGhpcy5oaWdobGlnaHRBbHBoYSsiKSIpfX10aGlzLmhpZ2hsaWdodENvbG9yR2VuZXJhdG9yPW5ldyBmLmpxcGxvdC5Db2xvckdlbmVyYXRvcih0aGlzLmhpZ2hsaWdodENvbG9ycyk7dmFyIG09e2ZpbGw6dHJ1ZSxpc2FyYzp0cnVlLGFuZ2xlOnRoaXMuc2hhZG93QW5nbGUsYWxwaGE6dGhpcy5zaGFkb3dBbHBoYSxjbG9zZVBhdGg6dHJ1ZX07dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5pbml0KG0pO3RoaXMuY2FudmFzPW5ldyBmLmpxcGxvdC5EaXZDYW52YXMoKTt0aGlzLmNhbnZhcy5fcGxvdERpbWVuc2lvbnM9dGhpcy5fcGxvdERpbWVuc2lvbnM7dC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90TW91c2VNb3ZlIixhKTt0LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RNb3VzZURvd24iLGIpO3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdE1vdXNlVXAiLGspO3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdENsaWNrIixnKTt0LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RSaWdodENsaWNrIixsKTt0LnBvc3REcmF3SG9va3MuYWRkT25jZShoKX07Zi5qcXBsb3QuQnViYmxlUmVuZGVyZXIucHJvdG90eXBlLnNldEdyaWREYXRhPWZ1bmN0aW9uKHcpe3ZhciBxPXRoaXMuX3hheGlzLnNlcmllc191MnA7dmFyIG09dGhpcy5feWF4aXMuc2VyaWVzX3UycDt2YXIgdD10aGlzLl9wbG90RGF0YTt0aGlzLmdyaWREYXRhPVtdO3ZhciBzPVtdO3RoaXMucmFkaWk9W107dmFyIHY9TWF0aC5taW4ody5faGVpZ2h0LHcuX3dpZHRoKTtmb3IodmFyIHU9MDt1PHRoaXMuZGF0YS5sZW5ndGg7dSsrKXtpZih0W3VdIT1udWxsKXt0aGlzLmdyaWREYXRhLnB1c2goW3EuY2FsbCh0aGlzLl94YXhpcyx0W3VdWzBdKSxtLmNhbGwodGhpcy5feWF4aXMsdFt1XVsxXSksdFt1XVsyXV0pO3RoaXMucmFkaWkucHVzaChbdSx0W3VdWzJdXSk7cy5wdXNoKHRbdV1bMl0pfX12YXIgbixvLHg9dGhpcy5tYXhSYWRpdXM9ZChzKTt2YXIgcD10aGlzLmdyaWREYXRhLmxlbmd0aDtpZih0aGlzLmF1dG9zY2FsZUJ1YmJsZXMpe2Zvcih2YXIgdT0wO3U8cDt1Kyspe289c1t1XS94O249dGhpcy5hdXRvc2NhbGVNdWx0aXBsaWVyKnYvNjt0aGlzLmdyaWREYXRhW3VdWzJdPW4qb319dGhpcy5yYWRpaS5zb3J0KGZ1bmN0aW9uKHkscil7cmV0dXJuIHJbMV0teVsxXX0pfTtmLmpxcGxvdC5CdWJibGVSZW5kZXJlci5wcm90b3R5cGUubWFrZUdyaWREYXRhPWZ1bmN0aW9uKHQsdyl7dmFyIHE9dGhpcy5feGF4aXMuc2VyaWVzX3UycDt2YXIgbj10aGlzLl95YXhpcy5zZXJpZXNfdTJwO3ZhciB4PVtdO3ZhciBzPVtdO3RoaXMucmFkaWk9W107dmFyIHY9TWF0aC5taW4ody5faGVpZ2h0LHcuX3dpZHRoKTtmb3IodmFyIHU9MDt1PHQubGVuZ3RoO3UrKyl7aWYodFt1XSE9bnVsbCl7eC5wdXNoKFtxLmNhbGwodGhpcy5feGF4aXMsdFt1XVswXSksbi5jYWxsKHRoaXMuX3lheGlzLHRbdV1bMV0pLHRbdV1bMl1dKTtzLnB1c2godFt1XVsyXSk7dGhpcy5yYWRpaS5wdXNoKFt1LHRbdV1bMl1dKX19dmFyIG0sbyx5PXRoaXMubWF4UmFkaXVzPWQocyk7dmFyIHA9dGhpcy5ncmlkRGF0YS5sZW5ndGg7aWYodGhpcy5hdXRvc2NhbGVCdWJibGVzKXtmb3IodmFyIHU9MDt1PHA7dSsrKXtvPXNbdV0veTttPXRoaXMuYXV0b3NjYWxlTXVsdGlwbGllcip2LzY7eFt1XVsyXT1tKm99fXRoaXMucmFkaWkuc29ydChmdW5jdGlvbih6LHIpe3JldHVybiByWzFdLXpbMV19KTtyZXR1cm4geH07Zi5qcXBsb3QuQnViYmxlUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oRCxKLG4pe2lmKHRoaXMucGx1Z2lucy5wb2ludExhYmVscyl7dGhpcy5wbHVnaW5zLnBvaW50TGFiZWxzLnNob3c9ZmFsc2V9dmFyIEE9KG4hPXVuZGVmaW5lZCk/bjp7fTt2YXIgcj0oQS5zaGFkb3chPXVuZGVmaW5lZCk/QS5zaGFkb3c6dGhpcy5zaGFkb3c7dGhpcy5jYW52YXMuX2VsZW0uZW1wdHkoKTtmb3IodmFyIEc9MDtHPHRoaXMucmFkaWkubGVuZ3RoO0crKyl7dmFyIEM9dGhpcy5yYWRpaVtHXVswXTt2YXIgej1udWxsO3ZhciBGPW51bGw7dmFyIG09bnVsbDt2YXIgcD1udWxsO3ZhciBJPXRoaXMuZGF0YVtDXTt2YXIgSj10aGlzLmdyaWREYXRhW0NdO2lmKElbM10pe2lmKHR5cGVvZihJWzNdKT09Im9iamVjdCIpe3o9SVszXVsibGFiZWwiXX1lbHNle2lmKHR5cGVvZihJWzNdKT09InN0cmluZyIpe3o9SVszXX19fUY9dGhpcy5jb2xvckdlbmVyYXRvci5nZXQoQyk7dmFyIEU9SlsyXTt2YXIgcSxLO2lmKHRoaXMuc2hhZG93KXtxPSgwLjcrSlsyXS80MCkudG9GaXhlZCgxKTtLPTErTWF0aC5jZWlsKEpbMl0vMTUpO0UrPXEqS310aGlzLmJ1YmJsZUNhbnZhc2VzW0NdPW5ldyBmLmpxcGxvdC5CdWJibGVDYW52YXMoKTt0aGlzLmNhbnZhcy5fZWxlbS5hcHBlbmQodGhpcy5idWJibGVDYW52YXNlc1tDXS5jcmVhdGVFbGVtZW50KEpbMF0sSlsxXSxFKSk7dGhpcy5idWJibGVDYW52YXNlc1tDXS5zZXRDb250ZXh0KCk7dmFyIEQ9dGhpcy5idWJibGVDYW52YXNlc1tDXS5fY3R4O3ZhciB1PUQuY2FudmFzLndpZHRoLzI7dmFyIHM9RC5jYW52YXMuaGVpZ2h0LzI7aWYodGhpcy5zaGFkb3cpe3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhELFt1LHMsSlsyXSwwLDIqTWF0aC5QSV0se29mZnNldDpxLGRlcHRoOkt9KX10aGlzLmJ1YmJsZUNhbnZhc2VzW0NdLmRyYXcoSlsyXSxGLHRoaXMuYnViYmxlR3JhZGllbnRzLHRoaXMuc2hhZG93QW5nbGUvMTgwKk1hdGguUEkpO2lmKHomJnRoaXMuc2hvd0xhYmVscyl7cD1mKCc8ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsiIGNsYXNzPSJqcXBsb3QtYnViYmxlLWxhYmVsIj48L2Rpdj4nKTtpZih0aGlzLmVzY2FwZUh0bWwpe3AudGV4dCh6KX1lbHNle3AuaHRtbCh6KX10aGlzLmNhbnZhcy5fZWxlbS5hcHBlbmQocCk7dmFyIEg9ZihwKS5vdXRlckhlaWdodCgpO3ZhciB2PWYocCkub3V0ZXJXaWR0aCgpO3ZhciBCPUpbMV0tMC41Kkg7dmFyIG89SlswXS0wLjUqdjtwLmNzcyh7dG9wOkIsbGVmdDpvfSk7dGhpcy5sYWJlbHNbQ109ZihwKX19fTtmLmpxcGxvdC5EaXZDYW52YXM9ZnVuY3Rpb24oKXtmLmpxcGxvdC5FbGVtQ29udGFpbmVyLmNhbGwodGhpcyk7dGhpcy5fY3R4fTtmLmpxcGxvdC5EaXZDYW52YXMucHJvdG90eXBlPW5ldyBmLmpxcGxvdC5FbGVtQ29udGFpbmVyKCk7Zi5qcXBsb3QuRGl2Q2FudmFzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1mLmpxcGxvdC5EaXZDYW52YXM7Zi5qcXBsb3QuRGl2Q2FudmFzLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKHMscCxuKXt0aGlzLl9vZmZzZXRzPXM7dmFyIG09ImpxcGxvdC1EaXZDYW52YXMiO2lmKHAhPXVuZGVmaW5lZCl7bT1wfXZhciByO2lmKHRoaXMuX2VsZW0pe3I9dGhpcy5fZWxlbS5nZXQoMCl9ZWxzZXtyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpfWlmKG4hPXVuZGVmaW5lZCl7dGhpcy5fcGxvdERpbWVuc2lvbnM9bn12YXIgbz10aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC10aGlzLl9vZmZzZXRzLmxlZnQtdGhpcy5fb2Zmc2V0cy5yaWdodCsicHgiO3ZhciBxPXRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodC10aGlzLl9vZmZzZXRzLnRvcC10aGlzLl9vZmZzZXRzLmJvdHRvbSsicHgiO3RoaXMuX2VsZW09ZihyKTt0aGlzLl9lbGVtLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix3aWR0aDpvLGhlaWdodDpxLGxlZnQ6dGhpcy5fb2Zmc2V0cy5sZWZ0LHRvcDp0aGlzLl9vZmZzZXRzLnRvcH0pO3RoaXMuX2VsZW0uYWRkQ2xhc3MobSk7cmV0dXJuIHRoaXMuX2VsZW19O2YuanFwbG90LkRpdkNhbnZhcy5wcm90b3R5cGUuc2V0Q29udGV4dD1mdW5jdGlvbigpe3RoaXMuX2N0eD17Y2FudmFzOnt3aWR0aDowLGhlaWdodDowfSxjbGVhclJlY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19O3JldHVybiB0aGlzLl9jdHh9O2YuanFwbG90LkJ1YmJsZUNhbnZhcz1mdW5jdGlvbigpe2YuanFwbG90LkVsZW1Db250YWluZXIuY2FsbCh0aGlzKTt0aGlzLl9jdHh9O2YuanFwbG90LkJ1YmJsZUNhbnZhcy5wcm90b3R5cGU9bmV3IGYuanFwbG90LkVsZW1Db250YWluZXIoKTtmLmpxcGxvdC5CdWJibGVDYW52YXMucHJvdG90eXBlLmNvbnN0cnVjdG9yPWYuanFwbG90LkJ1YmJsZUNhbnZhcztmLmpxcGxvdC5CdWJibGVDYW52YXMucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24obix1LHMpe3ZhciBtPSJqcXBsb3QtYnViYmxlLXBvaW50Ijt2YXIgcTtpZih0aGlzLl9lbGVtKXtxPXRoaXMuX2VsZW0uZ2V0KDApfWVsc2V7cT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKX1xLndpZHRoPShzIT1udWxsKT8yKnM6cS53aWR0aDtxLmhlaWdodD0ocyE9bnVsbCk/MipzOnEuaGVpZ2h0O3RoaXMuX2VsZW09ZihxKTt2YXIgbz0obiE9bnVsbCYmcyE9bnVsbCk/bi1zOnRoaXMuX2VsZW0uY3NzKCJsZWZ0Iik7dmFyIHA9KHUhPW51bGwmJnMhPW51bGwpP3Utczp0aGlzLl9lbGVtLmNzcygidG9wIik7dGhpcy5fZWxlbS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDpvLHRvcDpwfSk7dGhpcy5fZWxlbS5hZGRDbGFzcyhtKTtpZihmLmpxcGxvdC51c2VfZXhjYW52YXMpe3dpbmRvdy5HX3ZtbENhbnZhc01hbmFnZXIuaW5pdF8oZG9jdW1lbnQpO3E9d2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci5pbml0RWxlbWVudChxKX1yZXR1cm4gdGhpcy5fZWxlbX07Zi5qcXBsb3QuQnViYmxlQ2FudmFzLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKG0scyx2LHApe3ZhciBEPXRoaXMuX2N0eDt2YXIgQj1ELmNhbnZhcy53aWR0aC8yO3ZhciB6PUQuY2FudmFzLmhlaWdodC8yO0Quc2F2ZSgpO2lmKHYmJiFmLmpxcGxvdC51c2VfZXhjYW52YXMpe209bSoxLjA0O3ZhciBvPWYuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyhzKTt2YXIgdT0icmdiYSgiK01hdGgucm91bmQob1swXSswLjgqKDI1NS1vWzBdKSkrIiwgIitNYXRoLnJvdW5kKG9bMV0rMC44KigyNTUtb1sxXSkpKyIsICIrTWF0aC5yb3VuZChvWzJdKzAuOCooMjU1LW9bMl0pKSsiLCAiK29bM10rIikiO3ZhciB0PSJyZ2JhKCIrb1swXSsiLCAiK29bMV0rIiwgIitvWzJdKyIsIDApIjt2YXIgQz0wLjM1Km07dmFyIEE9Qi1NYXRoLmNvcyhwKSowLjMzKm07dmFyIG49ei1NYXRoLnNpbihwKSowLjMzKm07dmFyIHc9RC5jcmVhdGVSYWRpYWxHcmFkaWVudChBLG4sQyxCLHosbSk7dy5hZGRDb2xvclN0b3AoMCx1KTt3LmFkZENvbG9yU3RvcCgwLjkzLHMpO3cuYWRkQ29sb3JTdG9wKDAuOTYsdCk7dy5hZGRDb2xvclN0b3AoMSx0KTtELmZpbGxTdHlsZT13O0QuZmlsbFJlY3QoMCwwLEQuY2FudmFzLndpZHRoLEQuY2FudmFzLmhlaWdodCl9ZWxzZXtELmZpbGxTdHlsZT1zO0Quc3Ryb2tlU3R5bGU9cztELmxpbmVXaWR0aD0xO0QuYmVnaW5QYXRoKCk7dmFyIHE9MipNYXRoLlBJO0QuYXJjKEIseixtLDAscSwwKTtELmNsb3NlUGF0aCgpO0QuZmlsbCgpfUQucmVzdG9yZSgpfTtmLmpxcGxvdC5CdWJibGVDYW52YXMucHJvdG90eXBlLnNldENvbnRleHQ9ZnVuY3Rpb24oKXt0aGlzLl9jdHg9dGhpcy5fZWxlbS5nZXQoMCkuZ2V0Q29udGV4dCgiMmQiKTtyZXR1cm4gdGhpcy5fY3R4fTtmLmpxcGxvdC5CdWJibGVBeGlzUmVuZGVyZXI9ZnVuY3Rpb24oKXtmLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIuY2FsbCh0aGlzKX07Zi5qcXBsb3QuQnViYmxlQXhpc1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgZi5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7Zi5qcXBsb3QuQnViYmxlQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1mLmpxcGxvdC5CdWJibGVBeGlzUmVuZGVyZXI7Zi5qcXBsb3QuQnViYmxlQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKG4pe2YuZXh0ZW5kKHRydWUsdGhpcyxuKTt2YXIgST10aGlzLl9kYXRhQm91bmRzO3ZhciBIPTAsdj0wLG09MCx5PTAscT0wLHI9MCxEPTAsdD0wLEY9MCx6PTA7Zm9yKHZhciBFPTA7RTx0aGlzLl9zZXJpZXMubGVuZ3RoO0UrKyl7dmFyIHg9dGhpcy5fc2VyaWVzW0VdO3ZhciBHPXguX3Bsb3REYXRhO2Zvcih2YXIgQj0wO0I8Ry5sZW5ndGg7QisrKXtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe2lmKEdbQl1bMF08SS5taW58fEkubWluPT1udWxsKXtJLm1pbj1HW0JdWzBdO0g9RTt2PUI7cj1HW0JdWzJdO0Q9eC5tYXhSYWRpdXM7ej14LmF1dG9zY2FsZU11bHRpcGxpZXJ9aWYoR1tCXVswXT5JLm1heHx8SS5tYXg9PW51bGwpe0kubWF4PUdbQl1bMF07bT1FO3k9QjtxPUdbQl1bMl07dD14Lm1heFJhZGl1cztGPXguYXV0b3NjYWxlTXVsdGlwbGllcn19ZWxzZXtpZihHW0JdWzFdPEkubWlufHxJLm1pbj09bnVsbCl7SS5taW49R1tCXVsxXTtIPUU7dj1CO3I9R1tCXVsyXTtEPXgubWF4UmFkaXVzO3o9eC5hdXRvc2NhbGVNdWx0aXBsaWVyfWlmKEdbQl1bMV0+SS5tYXh8fEkubWF4PT1udWxsKXtJLm1heD1HW0JdWzFdO209RTt5PUI7cT1HW0JdWzJdO3Q9eC5tYXhSYWRpdXM7Rj14LmF1dG9zY2FsZU11bHRpcGxpZXJ9fX19dmFyIG89ci9EO3ZhciB3PXEvdDt2YXIgQz1JLm1heC1JLm1pbjt2YXIgQT1NYXRoLm1pbih0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCx0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQpO3ZhciBwPW8qei8zKkM7dmFyIHU9dypGLzMqQztJLm1heCs9dTtJLm1pbi09cH07ZnVuY3Rpb24gZShwLHYscSl7cC5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodExhYmVsQ2FudmFzLmVtcHR5KCk7dmFyIHo9cC5zZXJpZXNbdl07dmFyIG49cC5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhczt2YXIgdz1uLl9jdHg7dy5jbGVhclJlY3QoMCwwLHcuY2FudmFzLndpZHRoLHcuY2FudmFzLmhlaWdodCk7ei5faGlnaGxpZ2h0ZWRQb2ludD1xO3AucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4PXY7dmFyIG89ei5oaWdobGlnaHRDb2xvckdlbmVyYXRvci5nZXQocSk7dmFyIHU9ei5ncmlkRGF0YVtxXVswXSx0PXouZ3JpZERhdGFbcV1bMV0sbT16LmdyaWREYXRhW3FdWzJdO3cuc2F2ZSgpO3cuZmlsbFN0eWxlPW87dy5zdHJva2VTdHlsZT1vO3cubGluZVdpZHRoPTE7dy5iZWdpblBhdGgoKTt3LmFyYyh1LHQsbSwwLDIqTWF0aC5QSSwwKTt3LmNsb3NlUGF0aCgpO3cuZmlsbCgpO3cucmVzdG9yZSgpO2lmKHoubGFiZWxzW3FdKXtwLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0TGFiZWw9ei5sYWJlbHNbcV0uY2xvbmUoKTtwLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0TGFiZWwuYXBwZW5kVG8ocC5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodExhYmVsQ2FudmFzKTtwLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0TGFiZWwuYWRkQ2xhc3MoImpxcGxvdC1idWJibGUtbGFiZWwtaGlnaGxpZ2h0Iil9fWZ1bmN0aW9uIGkocCl7dmFyIG09cC5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhczt2YXIgbz1wLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDtwLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0TGFiZWxDYW52YXMuZW1wdHkoKTttLl9jdHguY2xlYXJSZWN0KDAsMCxtLl9jdHguY2FudmFzLndpZHRoLG0uX2N0eC5jYW52YXMuaGVpZ2h0KTtmb3IodmFyIG49MDtuPHAuc2VyaWVzLmxlbmd0aDtuKyspe3Auc2VyaWVzW25dLl9oaWdobGlnaHRlZFBvaW50PW51bGx9cC5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg9bnVsbDtwLnRhcmdldC50cmlnZ2VyKCJqcXBsb3REYXRhVW5oaWdobGlnaHQiKX1mdW5jdGlvbiBhKHMscCxtLHYscil7aWYodil7dmFyIG49di5zZXJpZXNJbmRleDt2YXIgbz12LnBvaW50SW5kZXg7dmFyIHE9W24sbyx2LmRhdGEsci5zZXJpZXNbbl0uZ3JpZERhdGFbb11bMl1dO3ZhciB0PWpRdWVyeS5FdmVudCgianFwbG90RGF0YU1vdXNlT3ZlciIpO3QucGFnZVg9cy5wYWdlWDt0LnBhZ2VZPXMucGFnZVk7ci50YXJnZXQudHJpZ2dlcih0LHEpO2lmKHIuc2VyaWVzW3FbMF1dLmhpZ2hsaWdodE1vdXNlT3ZlciYmIShxWzBdPT1yLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCYmcVsxXT09ci5zZXJpZXNbcVswXV0uX2hpZ2hsaWdodGVkUG9pbnQpKXt2YXIgdT1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFIaWdobGlnaHQiKTt1LndoaWNoPXMud2hpY2g7dS5wYWdlWD1zLnBhZ2VYO3UucGFnZVk9cy5wYWdlWTtyLnRhcmdldC50cmlnZ2VyKHUscSk7ZShyLHFbMF0scVsxXSl9fWVsc2V7aWYodj09bnVsbCl7aShyKX19fWZ1bmN0aW9uIGIocyxwLG0sdSxyKXtpZih1KXt2YXIgbj11LnNlcmllc0luZGV4O3ZhciBvPXUucG9pbnRJbmRleDt2YXIgcT1bbixvLHUuZGF0YSxyLnNlcmllc1tuXS5ncmlkRGF0YVtvXVsyXV07aWYoci5zZXJpZXNbcVswXV0uaGlnaGxpZ2h0TW91c2VEb3duJiYhKHFbMF09PXIucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4JiZxWzFdPT1yLnNlcmllc1txWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpe3ZhciB0PWpRdWVyeS5FdmVudCgianFwbG90RGF0YUhpZ2hsaWdodCIpO3Qud2hpY2g9cy53aGljaDt0LnBhZ2VYPXMucGFnZVg7dC5wYWdlWT1zLnBhZ2VZO3IudGFyZ2V0LnRyaWdnZXIodCxxKTtlKHIscVswXSxxWzFdKX19ZWxzZXtpZih1PT1udWxsKXtpKHIpfX19ZnVuY3Rpb24gayhvLG4scixxLHApe3ZhciBtPXAucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4O2lmKG0hPW51bGwmJnAuc2VyaWVzW21dLmhpZ2hsaWdodE1vdXNlRG93bil7aShwKX19ZnVuY3Rpb24gZyhzLHAsbSx1LHIpe2lmKHUpe3ZhciBuPXUuc2VyaWVzSW5kZXg7dmFyIG89dS5wb2ludEluZGV4O3ZhciBxPVtuLG8sdS5kYXRhLHIuc2VyaWVzW25dLmdyaWREYXRhW29dWzJdXTt2YXIgdD1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFDbGljayIpO3Qud2hpY2g9cy53aGljaDt0LnBhZ2VYPXMucGFnZVg7dC5wYWdlWT1zLnBhZ2VZO3IudGFyZ2V0LnRyaWdnZXIodCxxKX19ZnVuY3Rpb24gbChzLHAsbSx2LHIpe2lmKHYpe3ZhciBuPXYuc2VyaWVzSW5kZXg7dmFyIG89di5wb2ludEluZGV4O3ZhciBxPVtuLG8sdi5kYXRhLHIuc2VyaWVzW25dLmdyaWREYXRhW29dWzJdXTt2YXIgdD1yLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDtpZih0IT1udWxsJiZyLnNlcmllc1t0XS5oaWdobGlnaHRNb3VzZURvd24pe2kocil9dmFyIHU9alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhUmlnaHRDbGljayIpO3Uud2hpY2g9cy53aGljaDt1LnBhZ2VYPXMucGFnZVg7dS5wYWdlWT1zLnBhZ2VZO3IudGFyZ2V0LnRyaWdnZXIodSxxKX19ZnVuY3Rpb24gaCgpe2lmKHRoaXMucGx1Z2lucy5idWJibGVSZW5kZXJlciYmdGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcyl7dGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5yZXNldENhbnZhcygpO3RoaXMucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRDYW52YXM9bnVsbH10aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXI9e2hpZ2hsaWdodGVkU2VyaWVzSW5kZXg6bnVsbH07dGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcz1uZXcgZi5qcXBsb3QuR2VuZXJpY0NhbnZhcygpO3RoaXMucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRMYWJlbD1udWxsO3RoaXMucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRMYWJlbENhbnZhcz1mKCc8ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsiPjwvZGl2PicpO3ZhciBxPXRoaXMuX2dyaWRQYWRkaW5nLnRvcDt2YXIgcD10aGlzLl9ncmlkUGFkZGluZy5sZWZ0O3ZhciBuPXRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoLXRoaXMuX2dyaWRQYWRkaW5nLmxlZnQtdGhpcy5fZ3JpZFBhZGRpbmcucmlnaHQ7dmFyIG09dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0LXRoaXMuX2dyaWRQYWRkaW5nLnRvcC10aGlzLl9ncmlkUGFkZGluZy5ib3R0b207dGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodExhYmVsQ2FudmFzLmNzcyh7dG9wOnEsbGVmdDpwLHdpZHRoOm4rInB4IixoZWlnaHQ6bSsicHgifSk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUodGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCJqcXBsb3QtYnViYmxlUmVuZGVyZXItaGlnaGxpZ2h0LWNhbnZhcyIsdGhpcy5fcGxvdERpbWVuc2lvbnMsdGhpcykpO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKHRoaXMucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRMYWJlbENhbnZhcyk7dmFyIG89dGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5zZXRDb250ZXh0KCl9ZnVuY3Rpb24gYyhxLHAsbil7bj1ufHx7fTtuLmF4ZXNEZWZhdWx0cz1uLmF4ZXNEZWZhdWx0c3x8e307bi5zZXJpZXNEZWZhdWx0cz1uLnNlcmllc0RlZmF1bHRzfHx7fTt2YXIgbT1mYWxzZTtpZihuLnNlcmllc0RlZmF1bHRzLnJlbmRlcmVyPT1mLmpxcGxvdC5CdWJibGVSZW5kZXJlcil7bT10cnVlfWVsc2V7aWYobi5zZXJpZXMpe2Zvcih2YXIgbz0wO288bi5zZXJpZXMubGVuZ3RoO28rKyl7aWYobi5zZXJpZXNbb10ucmVuZGVyZXI9PWYuanFwbG90LkJ1YmJsZVJlbmRlcmVyKXttPXRydWV9fX19aWYobSl7bi5heGVzRGVmYXVsdHMucmVuZGVyZXI9Zi5qcXBsb3QuQnViYmxlQXhpc1JlbmRlcmVyO24uc29ydERhdGE9ZmFsc2V9fWYuanFwbG90LnByZUluaXRIb29rcy5wdXNoKGMpfSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.canvasAxisLabelRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAqIENsYXNzOiAkLmpxcGxvdC5DYW52YXNBeGlzTGFiZWxSZW5kZXJlcgogICAgKiBSZW5kZXJlciB0byBkcmF3IGF4aXMgbGFiZWxzIHdpdGggYSBjYW52YXMgZWxlbWVudCB0byBzdXBwb3J0IGFkdmFuY2VkCiAgICAqIGZlYXRydWVzIHN1Y2ggYXMgcm90YXRlZCB0ZXh0LiAgVGhpcyByZW5kZXJlciB1c2VzIGEgc2VwYXJhdGUgcmVuZGVyaW5nIGVuZ2luZQogICAgKiB0byBkcmF3IHRoZSB0ZXh0IG9uIHRoZSBjYW52YXMuICBUd28gbW9kZXMgb2YgcmVuZGVyaW5nIHRoZSB0ZXh0IGFyZSBhdmFpbGFibGUuCiAgICAqIElmIHRoZSBicm93c2VyIGhhcyBuYXRpdmUgZm9udCBzdXBwb3J0IGZvciBjYW52YXMgZm9udHMgKGN1cnJlbnRseSBNb3ppbGEgMy41CiAgICAqIGFuZCBTYWZhcmkgNCksIHlvdSBjYW4gZW5hYmxlIHRleHQgcmVuZGVyaW5nIHdpdGggdGhlIGNhbnZhcyBmaWxsVGV4dCBtZXRob2QuCiAgICAqIFlvdSBkbyBzbyBieSBzZXR0aW5nIHRoZSAiZW5hYmxlRm9udFN1cHBvcnQiIG9wdGlvbiB0byB0cnVlLiAKICAgICogCiAgICAqIEJyb3dzZXJzIGxhY2tpbmcgbmF0aXZlIGZvbnQgc3VwcG9ydCB3aWxsIGhhdmUgdGhlIHRleHQgZHJhd24gb24gdGhlIGNhbnZhcwogICAgKiB1c2luZyB0aGUgSGVyc2hleSBmb250IG1ldHJpY3MuICBFdmVuIGlmIHRoZSAiZW5hYmxlRm9udFN1cHBvcnQiIG9wdGlvbiBpcyB0cnVlCiAgICAqIG5vbi1zdXBwb3J0aW5nIGJyb3dzZXJzIHdpbGwgc3RpbGwgcmVuZGVyIHdpdGggdGhlIEhlcnNoZXkgZm9udC4KICAgICogCiAgICAqLwogICAgJC5qcXBsb3QuQ2FudmFzQXhpc0xhYmVsUmVuZGVyZXIgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAKICAgICAgICAvLyBwcm9wOiBhbmdsZQogICAgICAgIC8vIGFuZ2xlIG9mIHRleHQsIG1lYXN1cmVkIGNsb2Nrd2lzZSBmcm9tIHggYXhpcy4KICAgICAgICB0aGlzLmFuZ2xlID0gMDsKICAgICAgICAvLyBuYW1lIG9mIHRoZSBheGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRpY2sKICAgICAgICB0aGlzLmF4aXM7CiAgICAgICAgLy8gcHJvcDogc2hvdwogICAgICAgIC8vIHdoZXRoZXIgb3Igbm90IHRvIHNob3cgdGhlIHRpY2sgKG1hcmsgYW5kIGxhYmVsKS4KICAgICAgICB0aGlzLnNob3cgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IHNob3dMYWJlbAogICAgICAgIC8vIHdoZXRoZXIgb3Igbm90IHRvIHNob3cgdGhlIGxhYmVsLgogICAgICAgIHRoaXMuc2hvd0xhYmVsID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBsYWJlbAogICAgICAgIC8vIGxhYmVsIGZvciB0aGUgYXhpcy4KICAgICAgICB0aGlzLmxhYmVsID0gJyc7CiAgICAgICAgLy8gcHJvcDogZm9udEZhbWlseQogICAgICAgIC8vIENTUyBzcGVjIGZvciB0aGUgZm9udC1mYW1pbHkgY3NzIGF0dHJpYnV0ZS4KICAgICAgICAvLyBBcHBsaWVzIG9ubHkgdG8gYnJvd3NlcnMgc3VwcG9ydGluZyBuYXRpdmUgZm9udCByZW5kZXJpbmcgaW4gdGhlCiAgICAgICAgLy8gY2FudmFzIHRhZy4gIEN1cnJlbnRseSBNb3ppbGxhIDMuNSBhbmQgU2FmYXJpIDQuCiAgICAgICAgdGhpcy5mb250RmFtaWx5ID0gJyJUcmVidWNoZXQgTVMiLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJzsKICAgICAgICAvLyBwcm9wOiBmb250U2l6ZQogICAgICAgIC8vIENTUyBzcGVjIGZvciBmb250IHNpemUuCiAgICAgICAgdGhpcy5mb250U2l6ZSA9ICcxMXB0JzsKICAgICAgICAvLyBwcm9wOiBmb250V2VpZ2h0CiAgICAgICAgLy8gQ1NTIHNwZWMgZm9yIGZvbnRXZWlnaHQ6ICBub3JtYWwsIGJvbGQsIGJvbGRlciwgbGlnaHRlciBvciBhIG51bWJlciAxMDAgLSA5MDAKICAgICAgICB0aGlzLmZvbnRXZWlnaHQgPSAnbm9ybWFsJzsKICAgICAgICAvLyBwcm9wOiBmb250U3RyZXRjaAogICAgICAgIC8vIE11bHRpcGxpZXIgdG8gY29uZGVuc2Ugb3IgZXhwYW5kIGZvbnQgd2lkdGguICAKICAgICAgICAvLyBBcHBsaWVzIG9ubHkgdG8gYnJvd3NlcnMgd2hpY2ggZG9uJ3Qgc3VwcG9ydCBjYW52YXMgbmF0aXZlIGZvbnQgcmVuZGVyaW5nLgogICAgICAgIHRoaXMuZm9udFN0cmV0Y2ggPSAxLjA7CiAgICAgICAgLy8gcHJvcDogdGV4dENvbG9yCiAgICAgICAgLy8gY3NzIHNwZWMgZm9yIHRoZSBjb2xvciBhdHRyaWJ1dGUuCiAgICAgICAgdGhpcy50ZXh0Q29sb3IgPSAnIzY2NjY2Nic7CiAgICAgICAgLy8gcHJvcDogZW5hYmxlRm9udFN1cHBvcnQKICAgICAgICAvLyB0cnVlIHRvIHR1cm4gb24gbmF0aXZlIGNhbnZhcyBmb250IHN1cHBvcnQgaW4gTW96aWxsYSAzLjUrIGFuZCBTYWZhcmkgNCsuCiAgICAgICAgLy8gSWYgdHJ1ZSwgbGFiZWwgd2lsbCBiZSBkcmF3biB3aXRoIGNhbnZhcyB0YWcgbmF0aXZlIHN1cHBvcnQgZm9yIGZvbnRzLgogICAgICAgIC8vIElmIGZhbHNlLCBsYWJlbCB3aWxsIGJlIGRyYXduIHdpdGggSGVyc2hleSBmb250IG1ldHJpY3MuCiAgICAgICAgdGhpcy5lbmFibGVGb250U3VwcG9ydCA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogcHQycHgKICAgICAgICAvLyBQb2ludCB0byBwaXhlbCBzY2FsaW5nIGZhY3RvciwgdXNlZCBmb3IgY29tcHV0aW5nIGhlaWdodCBvZiBib3VuZGluZyBib3gKICAgICAgICAvLyBhcm91bmQgYSBsYWJlbC4gIFRoZSBsYWJlbHMgdGV4dCByZW5kZXJlciBoYXMgYSBkZWZhdWx0IHNldHRpbmcgb2YgMS40LCB3aGljaCAKICAgICAgICAvLyBzaG91bGQgYmUgc3VpdGFibGUgZm9yIG1vc3QgZm9udHMuICBMZWF2ZSBhcyBudWxsIHRvIHVzZSBkZWZhdWx0LiAgSWYgdG9wcyBvZgogICAgICAgIC8vIGxldHRlcnMgYXBwZWFyIGNsaXBwZWQsIGluY3JlYXNlIHRoaXMuICBJZiBib3VuZGluZyBib3ggc2VlbXMgdG9vIGJpZywgZGVjcmVhc2UuCiAgICAgICAgLy8gVGhpcyBpcyBhbiBpc3N1ZSBvbmx5IHdpdGggdGhlIG5hdGl2ZSBmb250IHJlbmRlcmVyaW5nIGNhcGFiaWxpdGllcyBvZiBNb3ppbGxhCiAgICAgICAgLy8gMy41IGFuZCBTYWZhcmkgNCBzaW5jZSB0aGV5IGRvIG5vdCBwcm92aWRlIGEgbWV0aG9kIHRvIGRldGVybWluZSB0aGUgZm9udCBoZWlnaHQuCiAgICAgICAgdGhpcy5wdDJweCA9IG51bGw7CiAgICAgICAgCiAgICAgICAgdGhpcy5fZWxlbTsKICAgICAgICB0aGlzLl9jdHg7CiAgICAgICAgdGhpcy5fcGxvdFdpZHRoOwogICAgICAgIHRoaXMuX3Bsb3RIZWlnaHQ7CiAgICAgICAgdGhpcy5fcGxvdERpbWVuc2lvbnMgPSB7aGVpZ2h0Om51bGwsIHdpZHRoOm51bGx9OwogICAgICAgIAogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgIAogICAgICAgIGlmIChvcHRpb25zLmFuZ2xlID09IG51bGwgJiYgdGhpcy5heGlzICE9ICd4YXhpcycgJiYgdGhpcy5heGlzICE9ICd4MmF4aXMnKSB7CiAgICAgICAgICAgIHRoaXMuYW5nbGUgPSAtOTA7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHZhciByb3B0cyA9IHtmb250U2l6ZTp0aGlzLmZvbnRTaXplLCBmb250V2VpZ2h0OnRoaXMuZm9udFdlaWdodCwgZm9udFN0cmV0Y2g6dGhpcy5mb250U3RyZXRjaCwgZmlsbFN0eWxlOnRoaXMudGV4dENvbG9yLCBhbmdsZTp0aGlzLmdldEFuZ2xlUmFkKCksIGZvbnRGYW1pbHk6dGhpcy5mb250RmFtaWx5fTsKICAgICAgICBpZiAodGhpcy5wdDJweCkgewogICAgICAgICAgICByb3B0cy5wdDJweCA9IHRoaXMucHQycHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICh0aGlzLmVuYWJsZUZvbnRTdXBwb3J0KSB7CiAgICAgICAgICAgIGlmICgkLmpxcGxvdC5zdXBwb3J0X2NhbnZhc190ZXh0KCkpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3RleHRSZW5kZXJlciA9IG5ldyAkLmpxcGxvdC5DYW52YXNGb250UmVuZGVyZXIocm9wdHMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMuX3RleHRSZW5kZXJlciA9IG5ldyAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIocm9wdHMpOyAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdGhpcy5fdGV4dFJlbmRlcmVyID0gbmV3ICQuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlcihyb3B0cyk7IAogICAgICAgIH0KICAgIH07CiAgICAKICAgICQuanFwbG90LkNhbnZhc0F4aXNMYWJlbFJlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgIHRoaXMuX3RleHRSZW5kZXJlci5pbml0KHtmb250U2l6ZTp0aGlzLmZvbnRTaXplLCBmb250V2VpZ2h0OnRoaXMuZm9udFdlaWdodCwgZm9udFN0cmV0Y2g6dGhpcy5mb250U3RyZXRjaCwgZmlsbFN0eWxlOnRoaXMudGV4dENvbG9yLCBhbmdsZTp0aGlzLmdldEFuZ2xlUmFkKCksIGZvbnRGYW1pbHk6dGhpcy5mb250RmFtaWx5fSk7CiAgICB9OwogICAgCiAgICAvLyByZXR1cm4gd2lkdGggYWxvbmcgdGhlIHggYXhpcwogICAgLy8gd2lsbCBjaGVjayBmaXJzdCB0byBzZWUgaWYgYW4gZWxlbWVudCBleGlzdHMuCiAgICAvLyBpZiBub3QsIHdpbGwgcmV0dXJuIHRoZSBjb21wdXRlZCB0ZXh0IGJveCB3aWR0aC4KICAgICQuanFwbG90LkNhbnZhc0F4aXNMYWJlbFJlbmRlcmVyLnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uKGN0eCkgewogICAgICAgIGlmICh0aGlzLl9lbGVtKSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICB2YXIgdHIgPSB0aGlzLl90ZXh0UmVuZGVyZXI7CiAgICAgICAgICAgIHZhciBsID0gdHIuZ2V0V2lkdGgoY3R4KTsKICAgICAgICAgICAgdmFyIGggPSB0ci5nZXRIZWlnaHQoY3R4KTsKICAgICAgICAgICAgdmFyIHcgPSBNYXRoLmFicyhNYXRoLnNpbih0ci5hbmdsZSkqaCkgKyBNYXRoLmFicyhNYXRoLmNvcyh0ci5hbmdsZSkqbCk7CiAgICAgICAgICAgIHJldHVybiB3OwogICAgICAgIH0KICAgIH07CiAgICAKICAgIC8vIHJldHVybiBoZWlnaHQgYWxvbmcgdGhlIHkgYXhpcy4KICAgICQuanFwbG90LkNhbnZhc0F4aXNMYWJlbFJlbmRlcmVyLnByb3RvdHlwZS5nZXRIZWlnaHQgPSBmdW5jdGlvbihjdHgpIHsKICAgICAgICBpZiAodGhpcy5fZWxlbSkgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHZhciB0ciA9IHRoaXMuX3RleHRSZW5kZXJlcjsKICAgICAgICAgICAgdmFyIGwgPSB0ci5nZXRXaWR0aChjdHgpOwogICAgICAgICAgICB2YXIgaCA9IHRyLmdldEhlaWdodChjdHgpOwogICAgICAgICAgICB2YXIgdyA9IE1hdGguYWJzKE1hdGguY29zKHRyLmFuZ2xlKSpoKSArIE1hdGguYWJzKE1hdGguc2luKHRyLmFuZ2xlKSpsKTsKICAgICAgICAgICAgcmV0dXJuIHc7CiAgICAgICAgfQogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQ2FudmFzQXhpc0xhYmVsUmVuZGVyZXIucHJvdG90eXBlLmdldEFuZ2xlUmFkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGEgPSB0aGlzLmFuZ2xlICogTWF0aC5QSS8xODA7CiAgICAgICAgcmV0dXJuIGE7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNBeGlzTGFiZWxSZW5kZXJlci5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGN0eCwgcGxvdCkgewogICAgICAgICAgLy8gTWVtb3J5IExlYWtzIHBhdGNoCiAgICAgICAgICBpZiAodGhpcy5fZWxlbSkgewogICAgICAgICAgICAgIGlmICgkLmpxcGxvdC51c2VfZXhjYW52YXMgJiYgd2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci51bmluaXRFbGVtZW50ICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgd2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci51bmluaXRFbGVtZW50KHRoaXMuX2VsZW0uZ2V0KDApKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAgIHRoaXMuX2VsZW0uZW1wdHlGb3JjZSgpOwogICAgICAgICAgICAgIHRoaXMuX2VsZW0gPSBudWxsOwogICAgICAgICAgfQoKICAgICAgICAvLyBjcmVhdGUgYSBjYW52YXMgaGVyZSwgYnV0IGNhbid0IGRyYXcgb24gaXQgdW50aWxsIGl0IGlzIGFwcGVuZGVkCiAgICAgICAgLy8gdG8gZG9tIGZvciBJRSBjb21wYXRhYmlsaXR5LgogICAgICAgIHZhciBlbGVtID0gcGxvdC5jYW52YXNNYW5hZ2VyLmdldENhbnZhcygpOwoKICAgICAgICB0aGlzLl90ZXh0UmVuZGVyZXIuc2V0VGV4dCh0aGlzLmxhYmVsLCBjdHgpOwogICAgICAgIHZhciB3ID0gdGhpcy5nZXRXaWR0aChjdHgpOwogICAgICAgIHZhciBoID0gdGhpcy5nZXRIZWlnaHQoY3R4KTsKICAgICAgICBlbGVtLndpZHRoID0gdzsKICAgICAgICBlbGVtLmhlaWdodCA9IGg7CiAgICAgICAgZWxlbS5zdHlsZS53aWR0aCA9IHc7CiAgICAgICAgZWxlbS5zdHlsZS5oZWlnaHQgPSBoOwogICAgICAgIAogICAgICAgIGVsZW0gPSBwbG90LmNhbnZhc01hbmFnZXIuaW5pdENhbnZhcyhlbGVtKTsKCiAgICAgICAgdGhpcy5fZWxlbSA9ICQoZWxlbSk7CiAgICAgICAgdGhpcy5fZWxlbS5jc3MoeyBwb3NpdGlvbjogJ2Fic29sdXRlJ30pOwogICAgICAgIHRoaXMuX2VsZW0uYWRkQ2xhc3MoJ2pxcGxvdC0nK3RoaXMuYXhpcysnLWxhYmVsJyk7CiAgICAgICAgCiAgICAgICAgZWxlbSA9IG51bGw7CiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW07CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNBeGlzTGFiZWxSZW5kZXJlci5wcm90b3R5cGUucGFjayA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuX3RleHRSZW5kZXJlci5kcmF3KHRoaXMuX2VsZW0uZ2V0KDApLmdldENvbnRleHQoIjJkIiksIHRoaXMubGFiZWwpOwogICAgfTsKICAgIAp9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGEpe2EuanFwbG90LkNhbnZhc0F4aXNMYWJlbFJlbmRlcmVyPWZ1bmN0aW9uKGIpe3RoaXMuYW5nbGU9MDt0aGlzLmF4aXM7dGhpcy5zaG93PXRydWU7dGhpcy5zaG93TGFiZWw9dHJ1ZTt0aGlzLmxhYmVsPSIiO3RoaXMuZm9udEZhbWlseT0nIlRyZWJ1Y2hldCBNUyIsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYnO3RoaXMuZm9udFNpemU9IjExcHQiO3RoaXMuZm9udFdlaWdodD0ibm9ybWFsIjt0aGlzLmZvbnRTdHJldGNoPTE7dGhpcy50ZXh0Q29sb3I9IiM2NjY2NjYiO3RoaXMuZW5hYmxlRm9udFN1cHBvcnQ9dHJ1ZTt0aGlzLnB0MnB4PW51bGw7dGhpcy5fZWxlbTt0aGlzLl9jdHg7dGhpcy5fcGxvdFdpZHRoO3RoaXMuX3Bsb3RIZWlnaHQ7dGhpcy5fcGxvdERpbWVuc2lvbnM9e2hlaWdodDpudWxsLHdpZHRoOm51bGx9O2EuZXh0ZW5kKHRydWUsdGhpcyxiKTtpZihiLmFuZ2xlPT1udWxsJiZ0aGlzLmF4aXMhPSJ4YXhpcyImJnRoaXMuYXhpcyE9IngyYXhpcyIpe3RoaXMuYW5nbGU9LTkwfXZhciBjPXtmb250U2l6ZTp0aGlzLmZvbnRTaXplLGZvbnRXZWlnaHQ6dGhpcy5mb250V2VpZ2h0LGZvbnRTdHJldGNoOnRoaXMuZm9udFN0cmV0Y2gsZmlsbFN0eWxlOnRoaXMudGV4dENvbG9yLGFuZ2xlOnRoaXMuZ2V0QW5nbGVSYWQoKSxmb250RmFtaWx5OnRoaXMuZm9udEZhbWlseX07aWYodGhpcy5wdDJweCl7Yy5wdDJweD10aGlzLnB0MnB4fWlmKHRoaXMuZW5hYmxlRm9udFN1cHBvcnQpe2lmKGEuanFwbG90LnN1cHBvcnRfY2FudmFzX3RleHQoKSl7dGhpcy5fdGV4dFJlbmRlcmVyPW5ldyBhLmpxcGxvdC5DYW52YXNGb250UmVuZGVyZXIoYyl9ZWxzZXt0aGlzLl90ZXh0UmVuZGVyZXI9bmV3IGEuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlcihjKX19ZWxzZXt0aGlzLl90ZXh0UmVuZGVyZXI9bmV3IGEuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlcihjKX19O2EuanFwbG90LkNhbnZhc0F4aXNMYWJlbFJlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGIpe2EuZXh0ZW5kKHRydWUsdGhpcyxiKTt0aGlzLl90ZXh0UmVuZGVyZXIuaW5pdCh7Zm9udFNpemU6dGhpcy5mb250U2l6ZSxmb250V2VpZ2h0OnRoaXMuZm9udFdlaWdodCxmb250U3RyZXRjaDp0aGlzLmZvbnRTdHJldGNoLGZpbGxTdHlsZTp0aGlzLnRleHRDb2xvcixhbmdsZTp0aGlzLmdldEFuZ2xlUmFkKCksZm9udEZhbWlseTp0aGlzLmZvbnRGYW1pbHl9KX07YS5qcXBsb3QuQ2FudmFzQXhpc0xhYmVsUmVuZGVyZXIucHJvdG90eXBlLmdldFdpZHRoPWZ1bmN0aW9uKGQpe2lmKHRoaXMuX2VsZW0pe3JldHVybiB0aGlzLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSl9ZWxzZXt2YXIgZj10aGlzLl90ZXh0UmVuZGVyZXI7dmFyIGM9Zi5nZXRXaWR0aChkKTt2YXIgZT1mLmdldEhlaWdodChkKTt2YXIgYj1NYXRoLmFicyhNYXRoLnNpbihmLmFuZ2xlKSplKStNYXRoLmFicyhNYXRoLmNvcyhmLmFuZ2xlKSpjKTtyZXR1cm4gYn19O2EuanFwbG90LkNhbnZhc0F4aXNMYWJlbFJlbmRlcmVyLnByb3RvdHlwZS5nZXRIZWlnaHQ9ZnVuY3Rpb24oZCl7aWYodGhpcy5fZWxlbSl7cmV0dXJuIHRoaXMuX2VsZW0ub3V0ZXJIZWlnaHQodHJ1ZSl9ZWxzZXt2YXIgZj10aGlzLl90ZXh0UmVuZGVyZXI7dmFyIGM9Zi5nZXRXaWR0aChkKTt2YXIgZT1mLmdldEhlaWdodChkKTt2YXIgYj1NYXRoLmFicyhNYXRoLmNvcyhmLmFuZ2xlKSplKStNYXRoLmFicyhNYXRoLnNpbihmLmFuZ2xlKSpjKTtyZXR1cm4gYn19O2EuanFwbG90LkNhbnZhc0F4aXNMYWJlbFJlbmRlcmVyLnByb3RvdHlwZS5nZXRBbmdsZVJhZD1mdW5jdGlvbigpe3ZhciBiPXRoaXMuYW5nbGUqTWF0aC5QSS8xODA7cmV0dXJuIGJ9O2EuanFwbG90LkNhbnZhc0F4aXNMYWJlbFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKGMsZil7aWYodGhpcy5fZWxlbSl7aWYoYS5qcXBsb3QudXNlX2V4Y2FudmFzJiZ3aW5kb3cuR192bWxDYW52YXNNYW5hZ2VyLnVuaW5pdEVsZW1lbnQhPT11bmRlZmluZWQpe3dpbmRvdy5HX3ZtbENhbnZhc01hbmFnZXIudW5pbml0RWxlbWVudCh0aGlzLl9lbGVtLmdldCgwKSl9dGhpcy5fZWxlbS5lbXB0eUZvcmNlKCk7dGhpcy5fZWxlbT1udWxsfXZhciBlPWYuY2FudmFzTWFuYWdlci5nZXRDYW52YXMoKTt0aGlzLl90ZXh0UmVuZGVyZXIuc2V0VGV4dCh0aGlzLmxhYmVsLGMpO3ZhciBiPXRoaXMuZ2V0V2lkdGgoYyk7dmFyIGQ9dGhpcy5nZXRIZWlnaHQoYyk7ZS53aWR0aD1iO2UuaGVpZ2h0PWQ7ZS5zdHlsZS53aWR0aD1iO2Uuc3R5bGUuaGVpZ2h0PWQ7ZT1mLmNhbnZhc01hbmFnZXIuaW5pdENhbnZhcyhlKTt0aGlzLl9lbGVtPWEoZSk7dGhpcy5fZWxlbS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSJ9KTt0aGlzLl9lbGVtLmFkZENsYXNzKCJqcXBsb3QtIit0aGlzLmF4aXMrIi1sYWJlbCIpO2U9bnVsbDtyZXR1cm4gdGhpcy5fZWxlbX07YS5qcXBsb3QuQ2FudmFzQXhpc0xhYmVsUmVuZGVyZXIucHJvdG90eXBlLnBhY2s9ZnVuY3Rpb24oKXt0aGlzLl90ZXh0UmVuZGVyZXIuZHJhdyh0aGlzLl9lbGVtLmdldCgwKS5nZXRDb250ZXh0KCIyZCIpLHRoaXMubGFiZWwpfX0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.canvasAxisTickRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAqICBDbGFzczogJC5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlcgogICAgKiBSZW5kZXJlciB0byBkcmF3IGF4aXMgdGlja3Mgd2l0aCBhIGNhbnZhcyBlbGVtZW50IHRvIHN1cHBvcnQgYWR2YW5jZWQKICAgICogZmVhdHJ1ZXMgc3VjaCBhcyByb3RhdGVkIHRleHQuICBUaGlzIHJlbmRlcmVyIHVzZXMgYSBzZXBhcmF0ZSByZW5kZXJpbmcgZW5naW5lCiAgICAqIHRvIGRyYXcgdGhlIHRleHQgb24gdGhlIGNhbnZhcy4gIFR3byBtb2RlcyBvZiByZW5kZXJpbmcgdGhlIHRleHQgYXJlIGF2YWlsYWJsZS4KICAgICogSWYgdGhlIGJyb3dzZXIgaGFzIG5hdGl2ZSBmb250IHN1cHBvcnQgZm9yIGNhbnZhcyBmb250cyAoY3VycmVudGx5IE1vemlsYSAzLjUKICAgICogYW5kIFNhZmFyaSA0KSwgeW91IGNhbiBlbmFibGUgdGV4dCByZW5kZXJpbmcgd2l0aCB0aGUgY2FudmFzIGZpbGxUZXh0IG1ldGhvZC4KICAgICogWW91IGRvIHNvIGJ5IHNldHRpbmcgdGhlICJlbmFibGVGb250U3VwcG9ydCIgb3B0aW9uIHRvIHRydWUuIAogICAgKiAKICAgICogQnJvd3NlcnMgbGFja2luZyBuYXRpdmUgZm9udCBzdXBwb3J0IHdpbGwgaGF2ZSB0aGUgdGV4dCBkcmF3biBvbiB0aGUgY2FudmFzCiAgICAqIHVzaW5nIHRoZSBIZXJzaGV5IGZvbnQgbWV0cmljcy4gIEV2ZW4gaWYgdGhlICJlbmFibGVGb250U3VwcG9ydCIgb3B0aW9uIGlzIHRydWUKICAgICogbm9uLXN1cHBvcnRpbmcgYnJvd3NlcnMgd2lsbCBzdGlsbCByZW5kZXIgd2l0aCB0aGUgSGVyc2hleSBmb250LgogICAgKi8KICAgICQuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAKICAgICAgICAvLyBwcm9wOiBtYXJrCiAgICAgICAgLy8gdGljayBtYXJrIG9uIHRoZSBheGlzLiAgT25lIG9mICdpbnNpZGUnLCAnb3V0c2lkZScsICdjcm9zcycsICcnIG9yIG51bGwuCiAgICAgICAgdGhpcy5tYXJrID0gJ291dHNpZGUnOwogICAgICAgIC8vIHByb3A6IHNob3dNYXJrCiAgICAgICAgLy8gd2hldGhlciBvciBub3QgdG8gc2hvdyB0aGUgbWFyayBvbiB0aGUgYXhpcy4KICAgICAgICB0aGlzLnNob3dNYXJrID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBzaG93R3JpZGxpbmUKICAgICAgICAvLyB3aGV0aGVyIG9yIG5vdCB0byBkcmF3IHRoZSBncmlkbGluZSBvbiB0aGUgZ3JpZCBhdCB0aGlzIHRpY2suCiAgICAgICAgdGhpcy5zaG93R3JpZGxpbmUgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IGlzTWlub3JUaWNrCiAgICAgICAgLy8gaWYgdGhpcyBpcyBhIG1pbm9yIHRpY2suCiAgICAgICAgdGhpcy5pc01pbm9yVGljayA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGFuZ2xlCiAgICAgICAgLy8gYW5nbGUgb2YgdGV4dCwgbWVhc3VyZWQgY2xvY2t3aXNlIGZyb20geCBheGlzLgogICAgICAgIHRoaXMuYW5nbGUgPSAwOwogICAgICAgIC8vIHByb3A6ICBtYXJrU2l6ZQogICAgICAgIC8vIExlbmd0aCBvZiB0aGUgdGljayBtYXJrcyBpbiBwaXhlbHMuICBGb3IgJ2Nyb3NzJyBzdHlsZSwgbGVuZ3RoCiAgICAgICAgLy8gd2lsbCBiZSBzdG9rZWQgYWJvdmUgYW5kIGJlbG93IGF4aXMsIHNvIHRvdGFsIGxlbmd0aCB3aWxsIGJlIHR3aWNlIHRoaXMuCiAgICAgICAgdGhpcy5tYXJrU2l6ZSA9IDQ7CiAgICAgICAgLy8gcHJvcDogc2hvdwogICAgICAgIC8vIHdoZXRoZXIgb3Igbm90IHRvIHNob3cgdGhlIHRpY2sgKG1hcmsgYW5kIGxhYmVsKS4KICAgICAgICB0aGlzLnNob3cgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IHNob3dMYWJlbAogICAgICAgIC8vIHdoZXRoZXIgb3Igbm90IHRvIHNob3cgdGhlIGxhYmVsLgogICAgICAgIHRoaXMuc2hvd0xhYmVsID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBsYWJlbFBvc2l0aW9uCiAgICAgICAgLy8gJ2F1dG8nLCAnc3RhcnQnLCAnbWlkZGxlJyBvciAnZW5kJy4KICAgICAgICAvLyBXaGV0aGVyIHRpY2sgbGFiZWwgc2hvdWxkIGJlIHBvc2l0aW9uZWQgc28gdGhlIHN0YXJ0LCBtaWRkbGUsIG9yIGVuZAogICAgICAgIC8vIG9mIHRoZSB0aWNrIG1hcmsuCiAgICAgICAgdGhpcy5sYWJlbFBvc2l0aW9uID0gJ2F1dG8nOwogICAgICAgIHRoaXMubGFiZWwgPSAnJzsKICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDsKICAgICAgICB0aGlzLl9zdHlsZXMgPSB7fTsKICAgICAgICAvLyBwcm9wOiBmb3JtYXR0ZXIKICAgICAgICAvLyBBIGNsYXNzIG9mIGEgZm9ybWF0dGVyIGZvciB0aGUgdGljayB0ZXh0LgogICAgICAgIC8vIFRoZSBkZWZhdWx0ICQuanFwbG90LkRlZmF1bHRUaWNrRm9ybWF0dGVyIHVzZXMgc3ByaW50Zi4KICAgICAgICB0aGlzLmZvcm1hdHRlciA9ICQuanFwbG90LkRlZmF1bHRUaWNrRm9ybWF0dGVyOwogICAgICAgIC8vIHByb3A6IGZvcm1hdFN0cmluZwogICAgICAgIC8vIHN0cmluZyBwYXNzZWQgdG8gdGhlIGZvcm1hdHRlci4KICAgICAgICB0aGlzLmZvcm1hdFN0cmluZyA9ICcnOwogICAgICAgIC8vIHByb3A6IHByZWZpeAogICAgICAgIC8vIFN0cmluZyB0byBwcmVwZW5kIHRvIHRoZSB0aWNrIGxhYmVsLgogICAgICAgIC8vIFByZWZpeCBpcyBwcmVwZW5kZWQgdG8gdGhlIGZvcm1hdHRlZCB0aWNrIGxhYmVsLgogICAgICAgIHRoaXMucHJlZml4ID0gJyc7CiAgICAgICAgLy8gcHJvcDogZm9udEZhbWlseQogICAgICAgIC8vIGNzcyBzcGVjIGZvciB0aGUgZm9udC1mYW1pbHkgY3NzIGF0dHJpYnV0ZS4KICAgICAgICB0aGlzLmZvbnRGYW1pbHkgPSAnIlRyZWJ1Y2hldCBNUyIsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYnOwogICAgICAgIC8vIHByb3A6IGZvbnRTaXplCiAgICAgICAgLy8gQ1NTIHNwZWMgZm9yIGZvbnQgc2l6ZS4KICAgICAgICB0aGlzLmZvbnRTaXplID0gJzEwcHQnOwogICAgICAgIC8vIHByb3A6IGZvbnRXZWlnaHQKICAgICAgICAvLyBDU1Mgc3BlYyBmb3IgZm9udFdlaWdodAogICAgICAgIHRoaXMuZm9udFdlaWdodCA9ICdub3JtYWwnOwogICAgICAgIC8vIHByb3A6IGZvbnRTdHJldGNoCiAgICAgICAgLy8gTXVsdGlwbGllciB0byBjb25kZW5zZSBvciBleHBhbmQgZm9udCB3aWR0aC4gIAogICAgICAgIC8vIEFwcGxpZXMgb25seSB0byBicm93c2VycyB3aGljaCBkb24ndCBzdXBwb3J0IGNhbnZhcyBuYXRpdmUgZm9udCByZW5kZXJpbmcuCiAgICAgICAgdGhpcy5mb250U3RyZXRjaCA9IDEuMDsKICAgICAgICAvLyBwcm9wOiB0ZXh0Q29sb3IKICAgICAgICAvLyBjc3Mgc3BlYyBmb3IgdGhlIGNvbG9yIGF0dHJpYnV0ZS4KICAgICAgICB0aGlzLnRleHRDb2xvciA9ICcjNjY2NjY2JzsKICAgICAgICAvLyBwcm9wOiBlbmFibGVGb250U3VwcG9ydAogICAgICAgIC8vIHRydWUgdG8gdHVybiBvbiBuYXRpdmUgY2FudmFzIGZvbnQgc3VwcG9ydCBpbiBNb3ppbGxhIDMuNSsgYW5kIFNhZmFyaSA0Ky4KICAgICAgICAvLyBJZiB0cnVlLCB0aWNrIGxhYmVsIHdpbGwgYmUgZHJhd24gd2l0aCBjYW52YXMgdGFnIG5hdGl2ZSBzdXBwb3J0IGZvciBmb250cy4KICAgICAgICAvLyBJZiBmYWxzZSwgdGljayBsYWJlbCB3aWxsIGJlIGRyYXduIHdpdGggSGVyc2hleSBmb250IG1ldHJpY3MuCiAgICAgICAgdGhpcy5lbmFibGVGb250U3VwcG9ydCA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogcHQycHgKICAgICAgICAvLyBQb2ludCB0byBwaXhlbCBzY2FsaW5nIGZhY3RvciwgdXNlZCBmb3IgY29tcHV0aW5nIGhlaWdodCBvZiBib3VuZGluZyBib3gKICAgICAgICAvLyBhcm91bmQgYSBsYWJlbC4gIFRoZSBsYWJlbHMgdGV4dCByZW5kZXJlciBoYXMgYSBkZWZhdWx0IHNldHRpbmcgb2YgMS40LCB3aGljaCAKICAgICAgICAvLyBzaG91bGQgYmUgc3VpdGFibGUgZm9yIG1vc3QgZm9udHMuICBMZWF2ZSBhcyBudWxsIHRvIHVzZSBkZWZhdWx0LiAgSWYgdG9wcyBvZgogICAgICAgIC8vIGxldHRlcnMgYXBwZWFyIGNsaXBwZWQsIGluY3JlYXNlIHRoaXMuICBJZiBib3VuZGluZyBib3ggc2VlbXMgdG9vIGJpZywgZGVjcmVhc2UuCiAgICAgICAgLy8gVGhpcyBpcyBhbiBpc3N1ZSBvbmx5IHdpdGggdGhlIG5hdGl2ZSBmb250IHJlbmRlcmVyaW5nIGNhcGFiaWxpdGllcyBvZiBNb3ppbGxhCiAgICAgICAgLy8gMy41IGFuZCBTYWZhcmkgNCBzaW5jZSB0aGV5IGRvIG5vdCBwcm92aWRlIGEgbWV0aG9kIHRvIGRldGVybWluZSB0aGUgZm9udCBoZWlnaHQuCiAgICAgICAgdGhpcy5wdDJweCA9IG51bGw7CiAgICAgICAgCiAgICAgICAgdGhpcy5fZWxlbTsKICAgICAgICB0aGlzLl9jdHg7CiAgICAgICAgdGhpcy5fcGxvdFdpZHRoOwogICAgICAgIHRoaXMuX3Bsb3RIZWlnaHQ7CiAgICAgICAgdGhpcy5fcGxvdERpbWVuc2lvbnMgPSB7aGVpZ2h0Om51bGwsIHdpZHRoOm51bGx9OwogICAgICAgIAogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgIAogICAgICAgIHZhciByb3B0cyA9IHtmb250U2l6ZTp0aGlzLmZvbnRTaXplLCBmb250V2VpZ2h0OnRoaXMuZm9udFdlaWdodCwgZm9udFN0cmV0Y2g6dGhpcy5mb250U3RyZXRjaCwgZmlsbFN0eWxlOnRoaXMudGV4dENvbG9yLCBhbmdsZTp0aGlzLmdldEFuZ2xlUmFkKCksIGZvbnRGYW1pbHk6dGhpcy5mb250RmFtaWx5fTsKICAgICAgICBpZiAodGhpcy5wdDJweCkgewogICAgICAgICAgICByb3B0cy5wdDJweCA9IHRoaXMucHQycHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICh0aGlzLmVuYWJsZUZvbnRTdXBwb3J0KSB7CiAgICAgICAgICAgIGlmICgkLmpxcGxvdC5zdXBwb3J0X2NhbnZhc190ZXh0KCkpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3RleHRSZW5kZXJlciA9IG5ldyAkLmpxcGxvdC5DYW52YXNGb250UmVuZGVyZXIocm9wdHMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMuX3RleHRSZW5kZXJlciA9IG5ldyAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIocm9wdHMpOyAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdGhpcy5fdGV4dFJlbmRlcmVyID0gbmV3ICQuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlcihyb3B0cyk7IAogICAgICAgIH0KICAgIH07CiAgICAKICAgICQuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CiAgICAgICAgdGhpcy5fdGV4dFJlbmRlcmVyLmluaXQoe2ZvbnRTaXplOnRoaXMuZm9udFNpemUsIGZvbnRXZWlnaHQ6dGhpcy5mb250V2VpZ2h0LCBmb250U3RyZXRjaDp0aGlzLmZvbnRTdHJldGNoLCBmaWxsU3R5bGU6dGhpcy50ZXh0Q29sb3IsIGFuZ2xlOnRoaXMuZ2V0QW5nbGVSYWQoKSwgZm9udEZhbWlseTp0aGlzLmZvbnRGYW1pbHl9KTsKICAgIH07CiAgICAKICAgIC8vIHJldHVybiB3aWR0aCBhbG9uZyB0aGUgeCBheGlzCiAgICAvLyB3aWxsIGNoZWNrIGZpcnN0IHRvIHNlZSBpZiBhbiBlbGVtZW50IGV4aXN0cy4KICAgIC8vIGlmIG5vdCwgd2lsbCByZXR1cm4gdGhlIGNvbXB1dGVkIHRleHQgYm94IHdpZHRoLgogICAgJC5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUuZ2V0V2lkdGggPSBmdW5jdGlvbihjdHgpIHsKICAgICAgICBpZiAodGhpcy5fZWxlbSkgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbS5vdXRlcldpZHRoKHRydWUpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdmFyIHRyID0gdGhpcy5fdGV4dFJlbmRlcmVyOwogICAgICAgICAgICB2YXIgbCA9IHRyLmdldFdpZHRoKGN0eCk7CiAgICAgICAgICAgIHZhciBoID0gdHIuZ2V0SGVpZ2h0KGN0eCk7CiAgICAgICAgICAgIHZhciB3ID0gTWF0aC5hYnMoTWF0aC5zaW4odHIuYW5nbGUpKmgpICsgTWF0aC5hYnMoTWF0aC5jb3ModHIuYW5nbGUpKmwpOwogICAgICAgICAgICByZXR1cm4gdzsKICAgICAgICB9CiAgICB9OwogICAgCiAgICAvLyByZXR1cm4gaGVpZ2h0IGFsb25nIHRoZSB5IGF4aXMuCiAgICAkLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyLnByb3RvdHlwZS5nZXRIZWlnaHQgPSBmdW5jdGlvbihjdHgpIHsKICAgICAgICBpZiAodGhpcy5fZWxlbSkgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHZhciB0ciA9IHRoaXMuX3RleHRSZW5kZXJlcjsKICAgICAgICAgICAgdmFyIGwgPSB0ci5nZXRXaWR0aChjdHgpOwogICAgICAgICAgICB2YXIgaCA9IHRyLmdldEhlaWdodChjdHgpOwogICAgICAgICAgICB2YXIgdyA9IE1hdGguYWJzKE1hdGguY29zKHRyLmFuZ2xlKSpoKSArIE1hdGguYWJzKE1hdGguc2luKHRyLmFuZ2xlKSpsKTsKICAgICAgICAgICAgcmV0dXJuIHc7CiAgICAgICAgfQogICAgfTsKCiAgICAvLyByZXR1cm4gdG9wLgogICAgJC5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUuZ2V0VG9wID0gZnVuY3Rpb24oY3R4KSB7CiAgICAgICAgaWYgKHRoaXMuX2VsZW0pIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW0ucG9zaXRpb24oKS50b3A7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyLnByb3RvdHlwZS5nZXRBbmdsZVJhZCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBhID0gdGhpcy5hbmdsZSAqIE1hdGguUEkvMTgwOwogICAgICAgIHJldHVybiBhOwogICAgfTsKICAgIAogICAgCiAgICAkLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyLnByb3RvdHlwZS5zZXRUaWNrID0gZnVuY3Rpb24odmFsdWUsIGF4aXNOYW1lLCBpc01pbm9yKSB7CiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgICAgIGlmIChpc01pbm9yKSB7CiAgICAgICAgICAgIHRoaXMuaXNNaW5vclRpY2sgPSB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpczsKICAgIH07CiAgICAKICAgICQuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjdHgsIHBsb3QpIHsKICAgICAgICBpZiAoIXRoaXMubGFiZWwpIHsKICAgICAgICAgICAgdGhpcy5sYWJlbCA9IHRoaXMucHJlZml4ICsgdGhpcy5mb3JtYXR0ZXIodGhpcy5mb3JtYXRTdHJpbmcsIHRoaXMudmFsdWUpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBNZW1vcnkgTGVha3MgcGF0Y2gKICAgICAgICBpZiAodGhpcy5fZWxlbSkgewogICAgICAgICAgICBpZiAoJC5qcXBsb3QudXNlX2V4Y2FudmFzICYmIHdpbmRvdy5HX3ZtbENhbnZhc01hbmFnZXIudW5pbml0RWxlbWVudCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cuR192bWxDYW52YXNNYW5hZ2VyLnVuaW5pdEVsZW1lbnQodGhpcy5fZWxlbS5nZXQoMCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICB0aGlzLl9lbGVtLmVtcHR5Rm9yY2UoKTsKICAgICAgICAgICAgdGhpcy5fZWxlbSA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICAvLyBjcmVhdGUgYSBjYW52YXMgaGVyZSwgYnV0IGNhbid0IGRyYXcgb24gaXQgdW50aWxsIGl0IGlzIGFwcGVuZGVkCiAgICAgICAgLy8gdG8gZG9tIGZvciBJRSBjb21wYXRhYmlsaXR5LgoKICAgICAgICB2YXIgZWxlbSA9IHBsb3QuY2FudmFzTWFuYWdlci5nZXRDYW52YXMoKTsKCiAgICAgICAgdGhpcy5fdGV4dFJlbmRlcmVyLnNldFRleHQodGhpcy5sYWJlbCwgY3R4KTsKICAgICAgICB2YXIgdyA9IHRoaXMuZ2V0V2lkdGgoY3R4KTsKICAgICAgICB2YXIgaCA9IHRoaXMuZ2V0SGVpZ2h0KGN0eCk7CiAgICAgICAgLy8gY2FudmFzZXMgc2VlbSB0byBuZWVkIHRvIGhhdmUgd2lkdGggYW5kIGhlaWdoIGF0dHJpYnV0ZXMgZGlyZWN0bHkgc2V0LgogICAgICAgIGVsZW0ud2lkdGggPSB3OwogICAgICAgIGVsZW0uaGVpZ2h0ID0gaDsKICAgICAgICBlbGVtLnN0eWxlLndpZHRoID0gdzsKICAgICAgICBlbGVtLnN0eWxlLmhlaWdodCA9IGg7CiAgICAgICAgZWxlbS5zdHlsZS50ZXh0QWxpZ24gPSAnbGVmdCc7CiAgICAgICAgZWxlbS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CgogICAgICAgIGVsZW0gPSBwbG90LmNhbnZhc01hbmFnZXIuaW5pdENhbnZhcyhlbGVtKTsKCiAgICAgICAgdGhpcy5fZWxlbSA9ICQoZWxlbSk7CiAgICAgICAgdGhpcy5fZWxlbS5jc3ModGhpcy5fc3R5bGVzKTsKICAgICAgICB0aGlzLl9lbGVtLmFkZENsYXNzKCdqcXBsb3QtJyt0aGlzLmF4aXMrJy10aWNrJyk7CgogICAgICAgIGVsZW0gPSBudWxsOwogICAgICAgIHJldHVybiB0aGlzLl9lbGVtOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUucGFjayA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuX3RleHRSZW5kZXJlci5kcmF3KHRoaXMuX2VsZW0uZ2V0KDApLmdldENvbnRleHQoIjJkIiksIHRoaXMubGFiZWwpOwogICAgfTsKICAgIAp9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGEpe2EuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXI9ZnVuY3Rpb24oYil7dGhpcy5tYXJrPSJvdXRzaWRlIjt0aGlzLnNob3dNYXJrPXRydWU7dGhpcy5zaG93R3JpZGxpbmU9dHJ1ZTt0aGlzLmlzTWlub3JUaWNrPWZhbHNlO3RoaXMuYW5nbGU9MDt0aGlzLm1hcmtTaXplPTQ7dGhpcy5zaG93PXRydWU7dGhpcy5zaG93TGFiZWw9dHJ1ZTt0aGlzLmxhYmVsUG9zaXRpb249ImF1dG8iO3RoaXMubGFiZWw9IiI7dGhpcy52YWx1ZT1udWxsO3RoaXMuX3N0eWxlcz17fTt0aGlzLmZvcm1hdHRlcj1hLmpxcGxvdC5EZWZhdWx0VGlja0Zvcm1hdHRlcjt0aGlzLmZvcm1hdFN0cmluZz0iIjt0aGlzLnByZWZpeD0iIjt0aGlzLmZvbnRGYW1pbHk9JyJUcmVidWNoZXQgTVMiLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJzt0aGlzLmZvbnRTaXplPSIxMHB0Ijt0aGlzLmZvbnRXZWlnaHQ9Im5vcm1hbCI7dGhpcy5mb250U3RyZXRjaD0xO3RoaXMudGV4dENvbG9yPSIjNjY2NjY2Ijt0aGlzLmVuYWJsZUZvbnRTdXBwb3J0PXRydWU7dGhpcy5wdDJweD1udWxsO3RoaXMuX2VsZW07dGhpcy5fY3R4O3RoaXMuX3Bsb3RXaWR0aDt0aGlzLl9wbG90SGVpZ2h0O3RoaXMuX3Bsb3REaW1lbnNpb25zPXtoZWlnaHQ6bnVsbCx3aWR0aDpudWxsfTthLmV4dGVuZCh0cnVlLHRoaXMsYik7dmFyIGM9e2ZvbnRTaXplOnRoaXMuZm9udFNpemUsZm9udFdlaWdodDp0aGlzLmZvbnRXZWlnaHQsZm9udFN0cmV0Y2g6dGhpcy5mb250U3RyZXRjaCxmaWxsU3R5bGU6dGhpcy50ZXh0Q29sb3IsYW5nbGU6dGhpcy5nZXRBbmdsZVJhZCgpLGZvbnRGYW1pbHk6dGhpcy5mb250RmFtaWx5fTtpZih0aGlzLnB0MnB4KXtjLnB0MnB4PXRoaXMucHQycHh9aWYodGhpcy5lbmFibGVGb250U3VwcG9ydCl7aWYoYS5qcXBsb3Quc3VwcG9ydF9jYW52YXNfdGV4dCgpKXt0aGlzLl90ZXh0UmVuZGVyZXI9bmV3IGEuanFwbG90LkNhbnZhc0ZvbnRSZW5kZXJlcihjKX1lbHNle3RoaXMuX3RleHRSZW5kZXJlcj1uZXcgYS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyKGMpfX1lbHNle3RoaXMuX3RleHRSZW5kZXJlcj1uZXcgYS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyKGMpfX07YS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihiKXthLmV4dGVuZCh0cnVlLHRoaXMsYik7dGhpcy5fdGV4dFJlbmRlcmVyLmluaXQoe2ZvbnRTaXplOnRoaXMuZm9udFNpemUsZm9udFdlaWdodDp0aGlzLmZvbnRXZWlnaHQsZm9udFN0cmV0Y2g6dGhpcy5mb250U3RyZXRjaCxmaWxsU3R5bGU6dGhpcy50ZXh0Q29sb3IsYW5nbGU6dGhpcy5nZXRBbmdsZVJhZCgpLGZvbnRGYW1pbHk6dGhpcy5mb250RmFtaWx5fSl9O2EuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIucHJvdG90eXBlLmdldFdpZHRoPWZ1bmN0aW9uKGQpe2lmKHRoaXMuX2VsZW0pe3JldHVybiB0aGlzLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSl9ZWxzZXt2YXIgZj10aGlzLl90ZXh0UmVuZGVyZXI7dmFyIGM9Zi5nZXRXaWR0aChkKTt2YXIgZT1mLmdldEhlaWdodChkKTt2YXIgYj1NYXRoLmFicyhNYXRoLnNpbihmLmFuZ2xlKSplKStNYXRoLmFicyhNYXRoLmNvcyhmLmFuZ2xlKSpjKTtyZXR1cm4gYn19O2EuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIucHJvdG90eXBlLmdldEhlaWdodD1mdW5jdGlvbihkKXtpZih0aGlzLl9lbGVtKXtyZXR1cm4gdGhpcy5fZWxlbS5vdXRlckhlaWdodCh0cnVlKX1lbHNle3ZhciBmPXRoaXMuX3RleHRSZW5kZXJlcjt2YXIgYz1mLmdldFdpZHRoKGQpO3ZhciBlPWYuZ2V0SGVpZ2h0KGQpO3ZhciBiPU1hdGguYWJzKE1hdGguY29zKGYuYW5nbGUpKmUpK01hdGguYWJzKE1hdGguc2luKGYuYW5nbGUpKmMpO3JldHVybiBifX07YS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUuZ2V0VG9wPWZ1bmN0aW9uKGIpe2lmKHRoaXMuX2VsZW0pe3JldHVybiB0aGlzLl9lbGVtLnBvc2l0aW9uKCkudG9wfWVsc2V7cmV0dXJuIG51bGx9fTthLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyLnByb3RvdHlwZS5nZXRBbmdsZVJhZD1mdW5jdGlvbigpe3ZhciBiPXRoaXMuYW5nbGUqTWF0aC5QSS8xODA7cmV0dXJuIGJ9O2EuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIucHJvdG90eXBlLnNldFRpY2s9ZnVuY3Rpb24oYixkLGMpe3RoaXMudmFsdWU9YjtpZihjKXt0aGlzLmlzTWlub3JUaWNrPXRydWV9cmV0dXJuIHRoaXN9O2EuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oYyxmKXtpZighdGhpcy5sYWJlbCl7dGhpcy5sYWJlbD10aGlzLnByZWZpeCt0aGlzLmZvcm1hdHRlcih0aGlzLmZvcm1hdFN0cmluZyx0aGlzLnZhbHVlKX1pZih0aGlzLl9lbGVtKXtpZihhLmpxcGxvdC51c2VfZXhjYW52YXMmJndpbmRvdy5HX3ZtbENhbnZhc01hbmFnZXIudW5pbml0RWxlbWVudCE9PXVuZGVmaW5lZCl7d2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci51bmluaXRFbGVtZW50KHRoaXMuX2VsZW0uZ2V0KDApKX10aGlzLl9lbGVtLmVtcHR5Rm9yY2UoKTt0aGlzLl9lbGVtPW51bGx9dmFyIGU9Zi5jYW52YXNNYW5hZ2VyLmdldENhbnZhcygpO3RoaXMuX3RleHRSZW5kZXJlci5zZXRUZXh0KHRoaXMubGFiZWwsYyk7dmFyIGI9dGhpcy5nZXRXaWR0aChjKTt2YXIgZD10aGlzLmdldEhlaWdodChjKTtlLndpZHRoPWI7ZS5oZWlnaHQ9ZDtlLnN0eWxlLndpZHRoPWI7ZS5zdHlsZS5oZWlnaHQ9ZDtlLnN0eWxlLnRleHRBbGlnbj0ibGVmdCI7ZS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO2U9Zi5jYW52YXNNYW5hZ2VyLmluaXRDYW52YXMoZSk7dGhpcy5fZWxlbT1hKGUpO3RoaXMuX2VsZW0uY3NzKHRoaXMuX3N0eWxlcyk7dGhpcy5fZWxlbS5hZGRDbGFzcygianFwbG90LSIrdGhpcy5heGlzKyItdGljayIpO2U9bnVsbDtyZXR1cm4gdGhpcy5fZWxlbX07YS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUucGFjaz1mdW5jdGlvbigpe3RoaXMuX3RleHRSZW5kZXJlci5kcmF3KHRoaXMuX2VsZW0uZ2V0KDApLmdldENvbnRleHQoIjJkIiksdGhpcy5sYWJlbCl9fSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.canvasOverlay.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgdmFyIG9iakNvdW50ZXIgPSAwOwogICAgLy8gY2xhc3M6ICQuanFwbG90LkNhbnZhc092ZXJsYXkKICAgICQuanFwbG90LkNhbnZhc092ZXJsYXkgPSBmdW5jdGlvbihvcHRzKXsKICAgICAgICB2YXIgb3B0aW9ucyA9IG9wdHMgfHwge307CiAgICAgICAgdGhpcy5vcHRpb25zID0gewogICAgICAgICAgICBzaG93OiAkLmpxcGxvdC5jb25maWcuZW5hYmxlUGx1Z2lucywKICAgICAgICAgICAgZGVmZXJEcmF3OiBmYWxzZQogICAgICAgIH07CiAgICAgICAgLy8gcHJvcDogb2JqZWN0cwogICAgICAgIHRoaXMub2JqZWN0cyA9IFtdOwogICAgICAgIHRoaXMub2JqZWN0TmFtZXMgPSBbXTsKICAgICAgICB0aGlzLmNhbnZhcyA9IG51bGw7CiAgICAgICAgdGhpcy5tYXJrZXJSZW5kZXJlciA9IG5ldyAkLmpxcGxvdC5NYXJrZXJSZW5kZXJlcih7c3R5bGU6J2xpbmUnfSk7CiAgICAgICAgdGhpcy5tYXJrZXJSZW5kZXJlci5pbml0KCk7CiAgICAgICAgdGhpcy5oaWdobGlnaHRPYmplY3RJbmRleCA9IG51bGw7CiAgICAgICAgaWYgKG9wdGlvbnMub2JqZWN0cykgewogICAgICAgICAgICB2YXIgb2JqcyA9IG9wdGlvbnMub2JqZWN0cywKICAgICAgICAgICAgICAgIG9iajsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPG9ianMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIG9iaiA9IG9ianNbaV07CiAgICAgICAgICAgICAgICBmb3IgKHZhciBuIGluIG9iaikgewogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaW5lJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkTGluZShvYmpbbl0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvcml6b250YWxMaW5lJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkSG9yaXpvbnRhbExpbmUob2JqW25dKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXNoZWRIb3Jpem9udGFsTGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZERhc2hlZEhvcml6b250YWxMaW5lKG9ialtuXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndmVydGljYWxMaW5lJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkVmVydGljYWxMaW5lKG9ialtuXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZGFzaGVkVmVydGljYWxMaW5lJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRGFzaGVkVmVydGljYWxMaW5lKG9ialtuXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVjdGFuZ2xlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkUmVjdGFuZ2xlKG9ialtuXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gICAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLm9wdGlvbnMsIG9wdGlvbnMpOwogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYSBwbG90IG9iamVjdAogICAgJC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wb3N0UGxvdEluaXQgPSBmdW5jdGlvbiAodGFyZ2V0LCBkYXRhLCBvcHRzKSB7CiAgICAgICAgdmFyIG9wdGlvbnMgPSBvcHRzIHx8IHt9OwogICAgICAgIC8vIGFkZCBhIGNhbnZhc092ZXJsYXkgYXR0cmlidXRlIHRvIHRoZSBwbG90CiAgICAgICAgdGhpcy5wbHVnaW5zLmNhbnZhc092ZXJsYXkgPSBuZXcgJC5qcXBsb3QuQ2FudmFzT3ZlcmxheShvcHRpb25zLmNhbnZhc092ZXJsYXkpOyAgICAgCiAgICB9OwoKCiAgICBmdW5jdGlvbiBMaW5lQmFzZSgpIHsKICAgICAgICB0aGlzLnVpZCA9IG51bGw7CiAgICAgICAgdGhpcy50eXBlID0gbnVsbDsKICAgICAgICB0aGlzLmdyaWRTdGFydCA9IG51bGw7CiAgICAgICAgdGhpcy5ncmlkU3RvcCA9IG51bGw7CiAgICAgICAgdGhpcy50b29sdGlwV2lkdGhGYWN0b3IgPSAwOwogICAgICAgIHRoaXMub3B0aW9ucyA9IHsgICAgICAgICAgIAogICAgICAgICAgICAvLyBwcm9wOiBuYW1lCiAgICAgICAgICAgIC8vIE9wdGlvbmFsIG5hbWUgZm9yIHRoZSBvdmVybGF5IG9iamVjdC4KICAgICAgICAgICAgLy8gQ2FuIGJlIGxhdGVyIHVzZWQgdG8gcmV0cmlldmUgdGhlIG9iamVjdCBieSBuYW1lLgogICAgICAgICAgICBuYW1lOiBudWxsLAogICAgICAgICAgICAvLyBwcm9wOiBzaG93CiAgICAgICAgICAgIC8vIHRydWUgdG8gc2hvdyAoZHJhdyksIGZhbHNlIHRvIG5vdCBkcmF3LgogICAgICAgICAgICBzaG93OiB0cnVlLAogICAgICAgICAgICAvLyBwcm9wOiBsaW5lV2lkdGgKICAgICAgICAgICAgLy8gV2lkdGggb2YgdGhlIGxpbmUuCiAgICAgICAgICAgIGxpbmVXaWR0aDogMiwKICAgICAgICAgICAgLy8gcHJvcDogbGluZUNhcAogICAgICAgICAgICAvLyBUeXBlIG9mIGVuZGluZyBwbGFjZWQgb24gdGhlIGxpbmUgWydyb3VuZCcsICdidXR0JywgJ3NxdWFyZSddCiAgICAgICAgICAgIGxpbmVDYXA6ICdyb3VuZCcsCiAgICAgICAgICAgIC8vIHByb3A6IGNvbG9yCiAgICAgICAgICAgIC8vIGNvbG9yIG9mIHRoZSBsaW5lCiAgICAgICAgICAgIGNvbG9yOiAnIzY2NjY2NicsCiAgICAgICAgICAgIC8vIHByb3A6IHNoYWRvdwogICAgICAgICAgICAvLyB3aGV0aGVyIG9yIG5vdCB0byBkcmF3IGEgc2hhZG93IG9uIHRoZSBsaW5lCiAgICAgICAgICAgIHNoYWRvdzogdHJ1ZSwKICAgICAgICAgICAgLy8gcHJvcDogc2hhZG93QW5nbGUKICAgICAgICAgICAgLy8gU2hhZG93IGFuZ2xlIGluIGRlZ3JlZXMKICAgICAgICAgICAgc2hhZG93QW5nbGU6IDQ1LAogICAgICAgICAgICAvLyBwcm9wOiBzaGFkb3dPZmZzZXQKICAgICAgICAgICAgLy8gU2hhZG93IG9mZnNldCBmcm9tIGxpbmUgaW4gcGl4ZWxzCiAgICAgICAgICAgIHNoYWRvd09mZnNldDogMSwKICAgICAgICAgICAgLy8gcHJvcDogc2hhZG93RGVwdGgKICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHRpbWVzIHNoYWRvdyBpcyBzdHJva2VkLCBlYWNoIHN0cm9rZSBvZmZzZXQgc2hhZG93T2Zmc2V0IGZyb20gdGhlIGxhc3QuCiAgICAgICAgICAgIHNoYWRvd0RlcHRoOiAzLAogICAgICAgICAgICAvLyBwcm9wOiBzaGFkb3dBbHBoYQogICAgICAgICAgICAvLyBBbHBoYSBjaGFubmVsIHRyYW5zcGFyZW5jeSBvZiBzaGFkb3cuICAwID0gdHJhbnNwYXJlbnQuCiAgICAgICAgICAgIHNoYWRvd0FscGhhOiAnMC4wNycsCiAgICAgICAgICAgIC8vIHByb3A6IHhheGlzCiAgICAgICAgICAgIC8vIFggYXhpcyB0byB1c2UgZm9yIHBvc2l0aW9uaW5nL3NjYWxpbmcgdGhlIGxpbmUuCiAgICAgICAgICAgIHhheGlzOiAneGF4aXMnLAogICAgICAgICAgICAvLyBwcm9wOiB5YXhpcwogICAgICAgICAgICAvLyBZIGF4aXMgdG8gdXNlIGZvciBwb3NpdGlvbmluZy9zY2FsaW5nIHRoZSBsaW5lLgogICAgICAgICAgICB5YXhpczogJ3lheGlzJywKICAgICAgICAgICAgLy8gcHJvcDogc2hvd1Rvb2x0aXAKICAgICAgICAgICAgLy8gU2hvdyBhIHRvb2x0aXAgd2l0aCBkYXRhIHBvaW50IHZhbHVlcy4KICAgICAgICAgICAgc2hvd1Rvb2x0aXA6IGZhbHNlLAogICAgICAgICAgICAvLyBwcm9wOiBzaG93VG9vbHRpcFByZWNpc2lvbgogICAgICAgICAgICAvLyBDb250cm9scyBob3cgY2xvc2UgdG8gbGluZSBjdXJzb3IgbXVzdCBiZSB0byBzaG93IHRvb2x0aXAuCiAgICAgICAgICAgIC8vIEhpZ2hlciBudW1iZXIgPSBjbG9zZXIgdG8gbGluZSwgbG93ZXIgbnVtYmVyID0gZmFydGhlciBmcm9tIGxpbmUuCiAgICAgICAgICAgIC8vIDEuMCA9IGN1cnNvciBtdXN0IGJlIG92ZXIgbGluZS4KICAgICAgICAgICAgc2hvd1Rvb2x0aXBQcmVjaXNpb246IDAuNiwKICAgICAgICAgICAgLy8gcHJvcDogdG9vbHRpcExvY2F0aW9uCiAgICAgICAgICAgIC8vIFdoZXJlIHRvIHBvc2l0aW9uIHRvb2x0aXAsICduJywgJ25lJywgJ2UnLCAnc2UnLCAncycsICdzdycsICd3JywgJ253JwogICAgICAgICAgICB0b29sdGlwTG9jYXRpb246ICdudycsCiAgICAgICAgICAgIC8vIHByb3A6IGZhZGVUb29sdGlwCiAgICAgICAgICAgIC8vIHRydWUgPSBmYWRlIGluL291dCB0b29sdGlwLCBmbGFzZSA9IHNob3cvaGlkZSB0b29sdGlwCiAgICAgICAgICAgIGZhZGVUb29sdGlwOiB0cnVlLAogICAgICAgICAgICAvLyBwcm9wOiB0b29sdGlwRmFkZVNwZWVkCiAgICAgICAgICAgIC8vICdzbG93JywgJ2RlZicsICdmYXN0Jywgb3IgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy4KICAgICAgICAgICAgdG9vbHRpcEZhZGVTcGVlZDogImZhc3QiLAogICAgICAgICAgICAvLyBwcm9wOiB0b29sdGlwT2Zmc2V0CiAgICAgICAgICAgIC8vIFBpeGVsIG9mZnNldCBvZiB0b29sdGlwIGZyb20gdGhlIGhpZ2hsaWdodC4KICAgICAgICAgICAgdG9vbHRpcE9mZnNldDogNCwKICAgICAgICAgICAgLy8gcHJvcDogdG9vbHRpcEZvcm1hdFN0cmluZwogICAgICAgICAgICAvLyBGb3JtYXQgc3RyaW5nIHBhc3NlZCB0aGUgeCBhbmQgeSB2YWx1ZXMgb2YgdGhlIGN1cnNvciBvbiB0aGUgbGluZS4KICAgICAgICAgICAgLy8gZS5nLiwgJ0RvZ3M6ICUuMmYsIENhdHM6ICVkJy4KICAgICAgICAgICAgdG9vbHRpcEZvcm1hdFN0cmluZzogJyVkLCAlZCcKICAgICAgICB9OwogICAgfQogICAgCiAgICAKICAgIGZ1bmN0aW9uIFJlY3RhbmdsZShvcHRpb25zKSB7CiAgICAgICAgTGluZUJhc2UuY2FsbCh0aGlzKTsKICAgICAgICB0aGlzLnR5cGUgPSAncmVjdGFuZ2xlJzsKICAgICAgICB2YXIgb3B0cyA9IHsKICAgICAgICAgLy8gcHJvcDogeG1pbgogICAgICAgICAgICAgICAgLy8geCB2YWx1ZSBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLCBudWxsIHRvIHNjYWxlIHRvIGF4aXMgbWluLgogICAgICAgICAgICAgICAgeG1pbjogbnVsbCwKICAgICAgICAgICAgICAgIC8vIHByb3A6IHhtYXgKICAgICAgICAgICAgICAgIC8vIHggdmFsdWUgZm9yIHRoZSBlbmQgb2YgdGhlIGxpbmUsIG51bGwgdG8gc2NhbGUgdG8gYXhpcyBtYXguCiAgICAgICAgICAgICAgICB4bWF4OiBudWxsLAogICAgICAgICAgICAgICAgLy8gcHJvcCB4T2Zmc2V0CiAgICAgICAgICAgICAgICAvLyBvZmZzZXQgZW5kcyBvZiB0aGUgbGluZSBpbnNpZGUgdGhlIGdyaWQuIE51bWJlcgogICAgICAgICAgICAgICAgeE9mZnNldDogJzZweCcsIC8vIG51bWJlciBvciBzdHJpbmcuIE51bWJlciBpbnRlcnByZXRlZCBhcyB1bml0cywgc3RyaW5nIGFzIHBpeGVscy4KICAgICAgICAgICAgICAgIHhtaW5PZmZzZXQ6IG51bGwsCiAgICAgICAgICAgICAgICB4bWF4T2Zmc2V0OiBudWxsLAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB5bWluOiBudWxsLAogICAgICAgICAgICAgICAgeW1heDogbnVsbCwKICAgICAgICAgICAgICAgIHlPZmZzZXQ6ICc2cHgnLCAvLyBudW1iZXIgb3Igc3RyaW5nLiBOdW1iZXIgaW50ZXJwcmV0ZWQgYXMgdW5pdHMsIHN0cmluZyBhcyBwaXhlbHMuCiAgICAgICAgICAgICAgICB5bWluT2Zmc2V0OiBudWxsLAogICAgICAgICAgICAgICAgeW1heE9mZnNldDogbnVsbAogICAgICAgIH07CiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcy5vcHRpb25zLCBvcHRzLCBvcHRpb25zKTsKCiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbiA8IDAuMDEpIHsKICAgICAgICAgICAgdGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uID0gMC4wMTsKICAgICAgICB9CiAgICB9CgogICAgUmVjdGFuZ2xlLnByb3RvdHlwZSA9IG5ldyBMaW5lQmFzZSgpOwogICAgUmVjdGFuZ2xlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFJlY3RhbmdsZTsKCiAgICAKICAgIC8qKgogICAgICogQ2xhc3M6IExpbmUKICAgICAqIEEgc3RyYWlnaHQgbGluZS4KICAgICAqLwogICAgZnVuY3Rpb24gTGluZShvcHRpb25zKSB7CiAgICAgICAgTGluZUJhc2UuY2FsbCh0aGlzKTsKICAgICAgICB0aGlzLnR5cGUgPSAnbGluZSc7CiAgICAgICAgdmFyIG9wdHMgPSB7CiAgICAgICAgICAgIC8vIHByb3A6IHN0YXJ0CiAgICAgICAgICAgIC8vIFt4LCB5XSBjb29yZGluYXRlcyBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLgogICAgICAgICAgICBzdGFydDogW10sCiAgICAgICAgICAgIC8vIHByb3A6IHN0b3AKICAgICAgICAgICAgLy8gW3gsIHldIGNvb3JkaW5hdGVzIGZvciB0aGUgZW5kIG9mIHRoZSBsaW5lLgogICAgICAgICAgICBzdG9wOiBbXQogICAgICAgIH07CiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcy5vcHRpb25zLCBvcHRzLCBvcHRpb25zKTsKCiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbiA8IDAuMDEpIHsKICAgICAgICAgICAgdGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uID0gMC4wMTsKICAgICAgICB9CiAgICB9CgogICAgTGluZS5wcm90b3R5cGUgPSBuZXcgTGluZUJhc2UoKTsKICAgIExpbmUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTGluZTsKCgogICAgLyoqCiAgICAgKiBDbGFzczogSG9yaXpvbnRhbExpbmUKICAgICAqIEEgc3RyYWlnaHQgaG9yaXpvbnRhbCBsaW5lLgogICAgICovCiAgICBmdW5jdGlvbiBIb3Jpem9udGFsTGluZShvcHRpb25zKSB7CiAgICAgICAgTGluZUJhc2UuY2FsbCh0aGlzKTsKICAgICAgICB0aGlzLnR5cGUgPSAnaG9yaXpvbnRhbExpbmUnOwogICAgICAgIHZhciBvcHRzID0gewogICAgICAgICAgICAvLyBwcm9wOiB5CiAgICAgICAgICAgIC8vIHkgdmFsdWUgdG8gcG9zaXRpb24gdGhlIGxpbmUKICAgICAgICAgICAgeTogbnVsbCwKICAgICAgICAgICAgLy8gcHJvcDogeG1pbgogICAgICAgICAgICAvLyB4IHZhbHVlIGZvciB0aGUgc3RhcnQgb2YgdGhlIGxpbmUsIG51bGwgdG8gc2NhbGUgdG8gYXhpcyBtaW4uCiAgICAgICAgICAgIHhtaW46IG51bGwsCiAgICAgICAgICAgIC8vIHByb3A6IHhtYXgKICAgICAgICAgICAgLy8geCB2YWx1ZSBmb3IgdGhlIGVuZCBvZiB0aGUgbGluZSwgbnVsbCB0byBzY2FsZSB0byBheGlzIG1heC4KICAgICAgICAgICAgeG1heDogbnVsbCwKICAgICAgICAgICAgLy8gcHJvcCB4T2Zmc2V0CiAgICAgICAgICAgIC8vIG9mZnNldCBlbmRzIG9mIHRoZSBsaW5lIGluc2lkZSB0aGUgZ3JpZC4gIE51bWJlciAKICAgICAgICAgICAgeE9mZnNldDogJzZweCcsIC8vIG51bWJlciBvciBzdHJpbmcuICBOdW1iZXIgaW50ZXJwcmV0ZWQgYXMgdW5pdHMsIHN0cmluZyBhcyBwaXhlbHMuCiAgICAgICAgICAgIHhtaW5PZmZzZXQ6IG51bGwsCiAgICAgICAgICAgIHhtYXhPZmZzZXQ6IG51bGwKICAgICAgICB9OwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMub3B0aW9ucywgb3B0cywgb3B0aW9ucyk7CgogICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb24gPCAwLjAxKSB7CiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbiA9IDAuMDE7CiAgICAgICAgfQogICAgfQoKICAgIEhvcml6b250YWxMaW5lLnByb3RvdHlwZSA9IG5ldyBMaW5lQmFzZSgpOwogICAgSG9yaXpvbnRhbExpbmUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gSG9yaXpvbnRhbExpbmU7CiAgICAKCiAgICAvKioKICAgICAqIENsYXNzOiBEYXNoZWRIb3Jpem9udGFsTGluZQogICAgICogQSBzdHJhaWdodCBkYXNoZWQgaG9yaXpvbnRhbCBsaW5lLgogICAgICovCiAgICBmdW5jdGlvbiBEYXNoZWRIb3Jpem9udGFsTGluZShvcHRpb25zKSB7CiAgICAgICAgTGluZUJhc2UuY2FsbCh0aGlzKTsKICAgICAgICB0aGlzLnR5cGUgPSAnZGFzaGVkSG9yaXpvbnRhbExpbmUnOwogICAgICAgIHZhciBvcHRzID0gewogICAgICAgICAgICB5OiBudWxsLAogICAgICAgICAgICB4bWluOiBudWxsLAogICAgICAgICAgICB4bWF4OiBudWxsLAogICAgICAgICAgICB4T2Zmc2V0OiAnNnB4JywgLy8gbnVtYmVyIG9yIHN0cmluZy4gIE51bWJlciBpbnRlcnByZXRlZCBhcyB1bml0cywgc3RyaW5nIGFzIHBpeGVscy4KICAgICAgICAgICAgeG1pbk9mZnNldDogbnVsbCwKICAgICAgICAgICAgeG1heE9mZnNldDogbnVsbCwKICAgICAgICAgICAgLy8gcHJvcDogZGFzaFBhdHRlcm4KICAgICAgICAgICAgLy8gQXJyYXkgb2YgbGluZSwgc3BhY2Ugc2V0dGluZ3MgaW4gcGl4ZWxzLgogICAgICAgICAgICAvLyBEZWZhdWx0IGlzIDggcGl4ZWwgb2YgbGluZSwgOCBwaXhlbCBvZiBzcGFjZS4KICAgICAgICAgICAgLy8gTm90ZSwgbGltaXQgdG8gYSAyIGVsZW1lbnQgYXJyYXkgYi9jIG9mIGJ1ZyB3aXRoIGhpZ2hlciBvcmRlciBhcnJheXMuCiAgICAgICAgICAgIGRhc2hQYXR0ZXJuOiBbOCw4XQogICAgICAgIH07CiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcy5vcHRpb25zLCBvcHRzLCBvcHRpb25zKTsKCiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbiA8IDAuMDEpIHsKICAgICAgICAgICAgdGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uID0gMC4wMTsKICAgICAgICB9CiAgICB9CgogICAgRGFzaGVkSG9yaXpvbnRhbExpbmUucHJvdG90eXBlID0gbmV3IExpbmVCYXNlKCk7CiAgICBEYXNoZWRIb3Jpem9udGFsTGluZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBEYXNoZWRIb3Jpem9udGFsTGluZTsKICAgIAoKICAgIC8qKgogICAgICogQ2xhc3M6IFZlcnRpY2FsTGluZQogICAgICogQSBzdHJhaWdodCB2ZXJ0aWNhbCBsaW5lLgogICAgICovCiAgICBmdW5jdGlvbiBWZXJ0aWNhbExpbmUob3B0aW9ucykgewogICAgICAgIExpbmVCYXNlLmNhbGwodGhpcyk7CiAgICAgICAgdGhpcy50eXBlID0gJ3ZlcnRpY2FsTGluZSc7CiAgICAgICAgdmFyIG9wdHMgPSB7CiAgICAgICAgICAgIHg6IG51bGwsCiAgICAgICAgICAgIHltaW46IG51bGwsCiAgICAgICAgICAgIHltYXg6IG51bGwsCiAgICAgICAgICAgIHlPZmZzZXQ6ICc2cHgnLCAvLyBudW1iZXIgb3Igc3RyaW5nLiAgTnVtYmVyIGludGVycHJldGVkIGFzIHVuaXRzLCBzdHJpbmcgYXMgcGl4ZWxzLgogICAgICAgICAgICB5bWluT2Zmc2V0OiBudWxsLAogICAgICAgICAgICB5bWF4T2Zmc2V0OiBudWxsCiAgICAgICAgfTsKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLm9wdGlvbnMsIG9wdHMsIG9wdGlvbnMpOwoKICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uIDwgMC4wMSkgewogICAgICAgICAgICB0aGlzLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb24gPSAwLjAxOwogICAgICAgIH0KICAgIH0KCiAgICBWZXJ0aWNhbExpbmUucHJvdG90eXBlID0gbmV3IExpbmVCYXNlKCk7CiAgICBWZXJ0aWNhbExpbmUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVmVydGljYWxMaW5lOwogICAgCgogICAgLyoqCiAgICAgKiBDbGFzczogRGFzaGVkVmVydGljYWxMaW5lCiAgICAgKiBBIHN0cmFpZ2h0IGRhc2hlZCB2ZXJ0aWNhbCBsaW5lLgogICAgICovCiAgICBmdW5jdGlvbiBEYXNoZWRWZXJ0aWNhbExpbmUob3B0aW9ucykgewogICAgICAgIExpbmVCYXNlLmNhbGwodGhpcyk7CiAgICAgICAgdGhpcy50eXBlID0gJ2Rhc2hlZFZlcnRpY2FsTGluZSc7CiAgICAgICAgdGhpcy5zdGFydCA9IG51bGw7CiAgICAgICAgdGhpcy5zdG9wID0gbnVsbDsKICAgICAgICB2YXIgb3B0cyA9IHsKICAgICAgICAgICAgeDogbnVsbCwKICAgICAgICAgICAgeW1pbjogbnVsbCwKICAgICAgICAgICAgeW1heDogbnVsbCwKICAgICAgICAgICAgeU9mZnNldDogJzZweCcsIC8vIG51bWJlciBvciBzdHJpbmcuICBOdW1iZXIgaW50ZXJwcmV0ZWQgYXMgdW5pdHMsIHN0cmluZyBhcyBwaXhlbHMuCiAgICAgICAgICAgIHltaW5PZmZzZXQ6IG51bGwsCiAgICAgICAgICAgIHltYXhPZmZzZXQ6IG51bGwsCiAgICAgICAgICAgIC8vIHByb3A6IGRhc2hQYXR0ZXJuCiAgICAgICAgICAgIC8vIEFycmF5IG9mIGxpbmUsIHNwYWNlIHNldHRpbmdzIGluIHBpeGVscy4KICAgICAgICAgICAgLy8gRGVmYXVsdCBpcyA4IHBpeGVsIG9mIGxpbmUsIDggcGl4ZWwgb2Ygc3BhY2UuCiAgICAgICAgICAgIC8vIE5vdGUsIGxpbWl0IHRvIGEgMiBlbGVtZW50IGFycmF5IGIvYyBvZiBidWcgd2l0aCBoaWdoZXIgb3JkZXIgYXJyYXlzLgogICAgICAgICAgICBkYXNoUGF0dGVybjogWzgsOF0KICAgICAgICB9OwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMub3B0aW9ucywgb3B0cywgb3B0aW9ucyk7CgogICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb24gPCAwLjAxKSB7CiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbiA9IDAuMDE7CiAgICAgICAgfQogICAgfQoKICAgIERhc2hlZFZlcnRpY2FsTGluZS5wcm90b3R5cGUgPSBuZXcgTGluZUJhc2UoKTsKICAgIERhc2hlZFZlcnRpY2FsTGluZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBEYXNoZWRWZXJ0aWNhbExpbmU7CiAgICAKICAgICQuanFwbG90LkNhbnZhc092ZXJsYXkucHJvdG90eXBlLmFkZExpbmUgPSBmdW5jdGlvbihvcHRzKSB7CiAgICAgICAgdmFyIGxpbmUgPSBuZXcgTGluZShvcHRzKTsKICAgICAgICBsaW5lLnVpZCA9IG9iakNvdW50ZXIrKzsKICAgICAgICB0aGlzLm9iamVjdHMucHVzaChsaW5lKTsKICAgICAgICB0aGlzLm9iamVjdE5hbWVzLnB1c2gobGluZS5vcHRpb25zLm5hbWUpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuYWRkSG9yaXpvbnRhbExpbmUgPSBmdW5jdGlvbihvcHRzKSB7CiAgICAgICAgdmFyIGxpbmUgPSBuZXcgSG9yaXpvbnRhbExpbmUob3B0cyk7CiAgICAgICAgbGluZS51aWQgPSBvYmpDb3VudGVyKys7CiAgICAgICAgdGhpcy5vYmplY3RzLnB1c2gobGluZSk7CiAgICAgICAgdGhpcy5vYmplY3ROYW1lcy5wdXNoKGxpbmUub3B0aW9ucy5uYW1lKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkNhbnZhc092ZXJsYXkucHJvdG90eXBlLmFkZERhc2hlZEhvcml6b250YWxMaW5lID0gZnVuY3Rpb24ob3B0cykgewogICAgICAgIHZhciBsaW5lID0gbmV3IERhc2hlZEhvcml6b250YWxMaW5lKG9wdHMpOwogICAgICAgIGxpbmUudWlkID0gb2JqQ291bnRlcisrOwogICAgICAgIHRoaXMub2JqZWN0cy5wdXNoKGxpbmUpOwogICAgICAgIHRoaXMub2JqZWN0TmFtZXMucHVzaChsaW5lLm9wdGlvbnMubmFtZSk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNPdmVybGF5LnByb3RvdHlwZS5hZGRWZXJ0aWNhbExpbmUgPSBmdW5jdGlvbihvcHRzKSB7CiAgICAgICAgdmFyIGxpbmUgPSBuZXcgVmVydGljYWxMaW5lKG9wdHMpOwogICAgICAgIGxpbmUudWlkID0gb2JqQ291bnRlcisrOwogICAgICAgIHRoaXMub2JqZWN0cy5wdXNoKGxpbmUpOwogICAgICAgIHRoaXMub2JqZWN0TmFtZXMucHVzaChsaW5lLm9wdGlvbnMubmFtZSk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNPdmVybGF5LnByb3RvdHlwZS5hZGREYXNoZWRWZXJ0aWNhbExpbmUgPSBmdW5jdGlvbihvcHRzKSB7CiAgICAgICAgdmFyIGxpbmUgPSBuZXcgRGFzaGVkVmVydGljYWxMaW5lKG9wdHMpOwogICAgICAgIGxpbmUudWlkID0gb2JqQ291bnRlcisrOwogICAgICAgIHRoaXMub2JqZWN0cy5wdXNoKGxpbmUpOwogICAgICAgIHRoaXMub2JqZWN0TmFtZXMucHVzaChsaW5lLm9wdGlvbnMubmFtZSk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNPdmVybGF5LnByb3RvdHlwZS5hZGRSZWN0YW5nbGUgPSBmdW5jdGlvbihvcHRzKSB7CiAgICAgICAgdmFyIGxpbmUgPSBuZXcgUmVjdGFuZ2xlKG9wdHMpOwogICAgICAgIGxpbmUudWlkID0gb2JqQ291bnRlcisrOwogICAgICAgIHRoaXMub2JqZWN0cy5wdXNoKGxpbmUpOwogICAgICAgIHRoaXMub2JqZWN0TmFtZXMucHVzaChsaW5lLm9wdGlvbnMubmFtZSk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNPdmVybGF5LnByb3RvdHlwZS5yZW1vdmVPYmplY3QgPSBmdW5jdGlvbihpZHgpIHsKICAgICAgICAvLyBjaGVjayBpZiBpbnRlZ2VyLCByZW1vdmUgYnkgaW5kZXgKICAgICAgICBpZiAoJC50eXBlKGlkeCkgPT0gJ251bWJlcicpIHsKICAgICAgICAgICAgdGhpcy5vYmplY3RzLnNwbGljZShpZHgsIDEpOwogICAgICAgICAgICB0aGlzLm9iamVjdE5hbWVzLnNwbGljZShpZHgsIDEpOwogICAgICAgIH0KICAgICAgICAvLyBpZiBzdHJpbmcsIHJlbW92ZSBieSBuYW1lCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHZhciBpZCA9ICQuaW5BcnJheShpZHgsIHRoaXMub2JqZWN0TmFtZXMpOwogICAgICAgICAgICBpZiAoaWQgIT0gLTEpIHsKICAgICAgICAgICAgICAgIHRoaXMub2JqZWN0cy5zcGxpY2UoaWQsIDEpOwogICAgICAgICAgICAgICAgdGhpcy5vYmplY3ROYW1lcy5zcGxpY2UoaWQsIDEpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuZ2V0T2JqZWN0ID0gZnVuY3Rpb24oaWR4KSB7CiAgICAgICAgLy8gY2hlY2sgaWYgaW50ZWdlciwgcmVtb3ZlIGJ5IGluZGV4CiAgICAgICAgaWYgKCQudHlwZShpZHgpID09ICdudW1iZXInKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLm9iamVjdHNbaWR4XTsKICAgICAgICB9CiAgICAgICAgLy8gaWYgc3RyaW5nLCByZW1vdmUgYnkgbmFtZQogICAgICAgIGVsc2UgewogICAgICAgICAgICB2YXIgaWQgPSAkLmluQXJyYXkoaWR4LCB0aGlzLm9iamVjdE5hbWVzKTsKICAgICAgICAgICAgaWYgKGlkICE9IC0xKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vYmplY3RzW2lkXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CiAgICAKICAgIC8vIFNldCBnZXQgYXMgYWxpYXMgZm9yIGdldE9iamVjdC4KICAgICQuanFwbG90LkNhbnZhc092ZXJsYXkucHJvdG90eXBlLmdldCA9ICQuanFwbG90LkNhbnZhc092ZXJsYXkucHJvdG90eXBlLmdldE9iamVjdDsKICAgIAogICAgJC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbihwbG90KSB7CiAgICAgICAgdGhpcy5jYW52YXMuX2N0eC5jbGVhclJlY3QoMCwwLHRoaXMuY2FudmFzLmdldFdpZHRoKCksIHRoaXMuY2FudmFzLmdldEhlaWdodCgpKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkNhbnZhc092ZXJsYXkucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihwbG90KSB7CiAgICAgICAgdmFyIG9iaiwgCiAgICAgICAgICAgIG9ianMgPSB0aGlzLm9iamVjdHMsCiAgICAgICAgICAgIG1yID0gdGhpcy5tYXJrZXJSZW5kZXJlciwKICAgICAgICAgICAgc3RhcnQsCiAgICAgICAgICAgIHN0b3A7CiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93KSB7CiAgICAgICAgICAgIHRoaXMuY2FudmFzLl9jdHguY2xlYXJSZWN0KDAsMCx0aGlzLmNhbnZhcy5nZXRXaWR0aCgpLCB0aGlzLmNhbnZhcy5nZXRIZWlnaHQoKSk7CiAgICAgICAgICAgIGZvciAodmFyIGs9MDsgazxvYmpzLmxlbmd0aDsgaysrKSB7CiAgICAgICAgICAgICAgICBvYmogPSBvYmpzW2tdOwogICAgICAgICAgICAgICAgdmFyIG9wdHMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgb2JqLm9wdGlvbnMpOwogICAgICAgICAgICAgICAgaWYgKG9iai5vcHRpb25zLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICAvLyBzdHlsZSBhbmQgc2hhZG93IHByb3BlcnRpZXMgc2hvdWxkIGJlIHNldCBiZWZvcmUKICAgICAgICAgICAgICAgICAgICAvLyBldmVyeSBkcmF3IG9mIG1hcmtlciByZW5kZXJlci4KICAgICAgICAgICAgICAgICAgICBtci5zaGFkb3cgPSBvYmoub3B0aW9ucy5zaGFkb3c7CiAgICAgICAgICAgICAgICAgICAgb2JqLnRvb2x0aXBXaWR0aEZhY3RvciA9IG9iai5vcHRpb25zLmxpbmVXaWR0aCAvIG9iai5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uOwogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAob2JqLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHlsZSBhbmQgc2hhZG93IHByb3BlcnRpZXMgc2hvdWxkIGJlIHNldCBiZWZvcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV2ZXJ5IGRyYXcgb2YgbWFya2VyIHJlbmRlcmVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXIuc3R5bGUgPSAnbGluZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmNsb3NlUGF0aCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBbcGxvdC5heGVzW29iai5vcHRpb25zLnhheGlzXS5zZXJpZXNfdTJwKG9iai5vcHRpb25zLnN0YXJ0WzBdKSwgcGxvdC5heGVzW29iai5vcHRpb25zLnlheGlzXS5zZXJpZXNfdTJwKG9iai5vcHRpb25zLnN0YXJ0WzFdKV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wID0gW3Bsb3QuYXhlc1tvYmoub3B0aW9ucy54YXhpc10uc2VyaWVzX3UycChvYmoub3B0aW9ucy5zdG9wWzBdKSwgcGxvdC5heGVzW29iai5vcHRpb25zLnlheGlzXS5zZXJpZXNfdTJwKG9iai5vcHRpb25zLnN0b3BbMV0pXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5ncmlkU3RhcnQgPSBzdGFydDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5ncmlkU3RvcCA9IHN0b3A7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtci5kcmF3KHN0YXJ0LCBzdG9wLCB0aGlzLmNhbnZhcy5fY3R4LCBvcHRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdob3Jpem9udGFsTGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0eWxlIGFuZCBzaGFkb3cgcHJvcGVydGllcyBzaG91bGQgYmUgc2V0IGJlZm9yZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXZlcnkgZHJhdyBvZiBtYXJrZXIgcmVuZGVyZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm9wdGlvbnMueSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXIuc3R5bGUgPSAnbGluZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0cy5jbG9zZVBhdGggPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeGF4aXMgPSBwbG90LmF4ZXNbb2JqLm9wdGlvbnMueGF4aXNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcGxvdC5heGVzW29iai5vcHRpb25zLnlheGlzXS5zZXJpZXNfdTJwKG9iai5vcHRpb25zLnkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWlub2ZmID0gb2JqLm9wdGlvbnMueG1pbk9mZnNldCB8fCBvYmoub3B0aW9ucy54T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWF4b2ZmID0gb2JqLm9wdGlvbnMueG1heE9mZnNldCB8fCBvYmoub3B0aW9ucy54T2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoub3B0aW9ucy54bWluICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0geGF4aXMuc2VyaWVzX3UycChvYmoub3B0aW9ucy54bWluKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoeG1pbm9mZiAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLnR5cGUoeG1pbm9mZikgPT0gIm51bWJlciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdGFydCA9IHhheGlzLnNlcmllc191MnAoeGF4aXMubWluICsgeG1pbm9mZik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJC50eXBlKHhtaW5vZmYpID09ICJzdHJpbmciKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RhcnQgPSB4YXhpcy5zZXJpZXNfdTJwKHhheGlzLm1pbikgKyBwYXJzZUZsb2F0KHhtaW5vZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoub3B0aW9ucy54bWF4ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0b3AgPSB4YXhpcy5zZXJpZXNfdTJwKG9iai5vcHRpb25zLnhtYXgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4bWF4b2ZmICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQudHlwZSh4bWF4b2ZmKSA9PSAibnVtYmVyIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0b3AgPSB4YXhpcy5zZXJpZXNfdTJwKHhheGlzLm1heCAtIHhtYXhvZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCQudHlwZSh4bWF4b2ZmKSA9PSAic3RyaW5nIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0b3AgPSB4YXhpcy5zZXJpZXNfdTJwKHhheGlzLm1heCkgLSBwYXJzZUZsb2F0KHhtYXhvZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4c3RvcCAhPSBudWxsICYmIHhzdGFydCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5ncmlkU3RhcnQgPSBbeHN0YXJ0LCB5XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLmdyaWRTdG9wID0gW3hzdG9wLCB5XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXIuZHJhdyhbeHN0YXJ0LCB5XSwgW3hzdG9wLCB5XSwgdGhpcy5jYW52YXMuX2N0eCwgb3B0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXNoZWRIb3Jpem9udGFsTGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXNoUGF0ID0gb2JqLm9wdGlvbnMuZGFzaFBhdHRlcm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGFzaFBhdExlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8ZGFzaFBhdC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hQYXRMZW4gKz0gZGFzaFBhdFtpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHlsZSBhbmQgc2hhZG93IHByb3BlcnRpZXMgc2hvdWxkIGJlIHNldCBiZWZvcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV2ZXJ5IGRyYXcgb2YgbWFya2VyIHJlbmRlcmVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5vcHRpb25zLnkgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1yLnN0eWxlID0gJ2xpbmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuY2xvc2VQYXRoID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHhheGlzID0gcGxvdC5heGVzW29iai5vcHRpb25zLnhheGlzXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHBsb3QuYXhlc1tvYmoub3B0aW9ucy55YXhpc10uc2VyaWVzX3UycChvYmoub3B0aW9ucy55KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1pbm9mZiA9IG9iai5vcHRpb25zLnhtaW5PZmZzZXQgfHwgb2JqLm9wdGlvbnMueE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1heG9mZiA9IG9iai5vcHRpb25zLnhtYXhPZmZzZXQgfHwgb2JqLm9wdGlvbnMueE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm9wdGlvbnMueG1pbiAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdGFydCA9IHhheGlzLnNlcmllc191MnAob2JqLm9wdGlvbnMueG1pbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhtaW5vZmYgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJC50eXBlKHhtaW5vZmYpID09ICJudW1iZXIiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RhcnQgPSB4YXhpcy5zZXJpZXNfdTJwKHhheGlzLm1pbiArIHhtaW5vZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCQudHlwZSh4bWlub2ZmKSA9PSAic3RyaW5nIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0geGF4aXMuc2VyaWVzX3UycCh4YXhpcy5taW4pICsgcGFyc2VGbG9hdCh4bWlub2ZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm9wdGlvbnMueG1heCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdG9wID0geGF4aXMuc2VyaWVzX3UycChvYmoub3B0aW9ucy54bWF4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoeG1heG9mZiAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLnR5cGUoeG1heG9mZikgPT0gIm51bWJlciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdG9wID0geGF4aXMuc2VyaWVzX3UycCh4YXhpcy5tYXggLSB4bWF4b2ZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkLnR5cGUoeG1heG9mZikgPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdG9wID0geGF4aXMuc2VyaWVzX3UycCh4YXhpcy5tYXgpIC0gcGFyc2VGbG9hdCh4bWF4b2ZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeHN0b3AgIT0gbnVsbCAmJiB4c3RhcnQgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouZ3JpZFN0YXJ0ID0gW3hzdGFydCwgeV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5ncmlkU3RvcCA9IFt4c3RvcCwgeV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBudW1EYXNoID0gTWF0aC5jZWlsKCh4c3RvcCAtIHhzdGFydCkvZGFzaFBhdExlbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiPXhzdGFydCwgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPG51bURhc2g7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPGRhc2hQYXQubGVuZ3RoOyBqKz0yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGIrZGFzaFBhdFtqXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtci5kcmF3KFtiLCB5XSwgW2UsIHldLCB0aGlzLmNhbnZhcy5fY3R4LCBvcHRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiICs9IGRhc2hQYXRbal07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogPCBkYXNoUGF0Lmxlbmd0aC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgKz0gZGFzaFBhdFtqKzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndmVydGljYWxMaW5lJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3R5bGUgYW5kIHNoYWRvdyBwcm9wZXJ0aWVzIHNob3VsZCBiZSBzZXQgYmVmb3JlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVyeSBkcmF3IG9mIG1hcmtlciByZW5kZXJlci4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoub3B0aW9ucy54ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtci5zdHlsZSA9ICdsaW5lJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmNsb3NlUGF0aCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5YXhpcyA9IHBsb3QuYXhlc1tvYmoub3B0aW9ucy55YXhpc10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBwbG90LmF4ZXNbb2JqLm9wdGlvbnMueGF4aXNdLnNlcmllc191MnAob2JqLm9wdGlvbnMueCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHltaW5vZmYgPSBvYmoub3B0aW9ucy55bWluT2Zmc2V0IHx8IG9iai5vcHRpb25zLnlPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHltYXhvZmYgPSBvYmoub3B0aW9ucy55bWF4T2Zmc2V0IHx8IG9iai5vcHRpb25zLnlPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5vcHRpb25zLnltaW4gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RhcnQgPSB5YXhpcy5zZXJpZXNfdTJwKG9iai5vcHRpb25zLnltaW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh5bWlub2ZmICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQudHlwZSh5bWlub2ZmKSA9PSAibnVtYmVyIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0YXJ0ID0geWF4aXMuc2VyaWVzX3UycCh5YXhpcy5taW4gLSB5bWlub2ZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkLnR5cGUoeW1pbm9mZikgPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdGFydCA9IHlheGlzLnNlcmllc191MnAoeWF4aXMubWluKSAtIHBhcnNlRmxvYXQoeW1pbm9mZik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5vcHRpb25zLnltYXggIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RvcCA9IHlheGlzLnNlcmllc191MnAob2JqLm9wdGlvbnMueW1heCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHltYXhvZmYgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJC50eXBlKHltYXhvZmYpID09ICJudW1iZXIiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RvcCA9IHlheGlzLnNlcmllc191MnAoeWF4aXMubWF4ICsgeW1heG9mZik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJC50eXBlKHltYXhvZmYpID09ICJzdHJpbmciKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RvcCA9IHlheGlzLnNlcmllc191MnAoeWF4aXMubWF4KSArIHBhcnNlRmxvYXQoeW1heG9mZik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHlzdG9wICE9IG51bGwgJiYgeXN0YXJ0ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLmdyaWRTdGFydCA9IFt4LCB5c3RhcnRdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouZ3JpZFN0b3AgPSBbeCwgeXN0b3BdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtci5kcmF3KFt4LCB5c3RhcnRdLCBbeCwgeXN0b3BdLCB0aGlzLmNhbnZhcy5fY3R4LCBvcHRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Rhc2hlZFZlcnRpY2FsTGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXNoUGF0ID0gb2JqLm9wdGlvbnMuZGFzaFBhdHRlcm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGFzaFBhdExlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8ZGFzaFBhdC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hQYXRMZW4gKz0gZGFzaFBhdFtpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHlsZSBhbmQgc2hhZG93IHByb3BlcnRpZXMgc2hvdWxkIGJlIHNldCBiZWZvcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV2ZXJ5IGRyYXcgb2YgbWFya2VyIHJlbmRlcmVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5vcHRpb25zLnggIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1yLnN0eWxlID0gJ2xpbmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuY2xvc2VQYXRoID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHlheGlzID0gcGxvdC5heGVzW29iai5vcHRpb25zLnlheGlzXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHBsb3QuYXhlc1tvYmoub3B0aW9ucy54YXhpc10uc2VyaWVzX3UycChvYmoub3B0aW9ucy54KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW1pbm9mZiA9IG9iai5vcHRpb25zLnltaW5PZmZzZXQgfHwgb2JqLm9wdGlvbnMueU9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW1heG9mZiA9IG9iai5vcHRpb25zLnltYXhPZmZzZXQgfHwgb2JqLm9wdGlvbnMueU9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm9wdGlvbnMueW1pbiAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdGFydCA9IHlheGlzLnNlcmllc191MnAob2JqLm9wdGlvbnMueW1pbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHltaW5vZmYgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJC50eXBlKHltaW5vZmYpID09ICJudW1iZXIiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RhcnQgPSB5YXhpcy5zZXJpZXNfdTJwKHlheGlzLm1pbiAtIHltaW5vZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCQudHlwZSh5bWlub2ZmKSA9PSAic3RyaW5nIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0YXJ0ID0geWF4aXMuc2VyaWVzX3UycCh5YXhpcy5taW4pIC0gcGFyc2VGbG9hdCh5bWlub2ZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm9wdGlvbnMueW1heCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdG9wID0geWF4aXMuc2VyaWVzX3UycChvYmoub3B0aW9ucy55bWF4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoeW1heG9mZiAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLnR5cGUoeW1heG9mZikgPT0gIm51bWJlciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdG9wID0geWF4aXMuc2VyaWVzX3UycCh5YXhpcy5tYXggKyB5bWF4b2ZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkLnR5cGUoeW1heG9mZikgPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdG9wID0geWF4aXMuc2VyaWVzX3UycCh5YXhpcy5tYXgpICsgcGFyc2VGbG9hdCh5bWF4b2ZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh5c3RvcCAhPSBudWxsICYmIHlzdGFydCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5ncmlkU3RhcnQgPSBbeCwgeXN0YXJ0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLmdyaWRTdG9wID0gW3gsIHlzdG9wXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG51bURhc2ggPSBNYXRoLmNlaWwoKHlzdGFydCAtIHlzdG9wKS9kYXNoUGF0TGVuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZpcnN0RGFzaEFkanVzdCA9ICgobnVtRGFzaCAqIGRhc2hQYXRMZW4pIC0gKHlzdGFydCAtIHlzdG9wKSkvMi4wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYj15c3RhcnQsIGUsIGJzLCBlczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPG51bURhc2g7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPGRhc2hQYXQubGVuZ3RoOyBqKz0yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGIgLSBkYXNoUGF0W2pdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlIDwgeXN0b3ApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHlzdG9wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYiA8IHlzdG9wKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB5c3RvcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXMgPSBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgZXMgKz0gZmlyc3REYXNoQWRqdXN0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtci5kcmF3KFt4LCBiXSwgW3gsIGVdLCB0aGlzLmNhbnZhcy5fY3R4LCBvcHRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIC09IGRhc2hQYXRbal07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogPCBkYXNoUGF0Lmxlbmd0aC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgLT0gZGFzaFBhdFtqKzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlY3RhbmdsZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHlsZSBhbmQgc2hhZG93IHByb3BlcnRpZXMgc2hvdWxkIGJlIHNldCBiZWZvcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV2ZXJ5IGRyYXcgb2YgbWFya2VyIHJlbmRlcmVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXIuc3R5bGUgPSAnbGluZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmNsb3NlUGF0aCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4YXhpcyA9IHBsb3QuYXhlc1tvYmoub3B0aW9ucy54YXhpc10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBwbG90LmF4ZXNbb2JqLm9wdGlvbnMueWF4aXNdLnNlcmllc191MnAob2JqLm9wdGlvbnMueSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtaW5vZmYgPSBvYmoub3B0aW9ucy54bWluT2Zmc2V0IHx8IG9iai5vcHRpb25zLnhPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtYXhvZmYgPSBvYmoub3B0aW9ucy54bWF4T2Zmc2V0IHx8IG9iai5vcHRpb25zLnhPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm9wdGlvbnMueG1pbiAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0geGF4aXMuc2VyaWVzX3UycChvYmoub3B0aW9ucy54bWluKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhtaW5vZmYgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLnR5cGUoeG1pbm9mZikgPT0gIm51bWJlciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0geGF4aXMuc2VyaWVzX3UycCh4YXhpcy5taW4gKyB4bWlub2ZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJC50eXBlKHhtaW5vZmYpID09ICJzdHJpbmciKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdGFydCA9IHhheGlzLnNlcmllc191MnAoeGF4aXMubWluKSArIHBhcnNlRmxvYXQoeG1pbm9mZik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5vcHRpb25zLnhtYXggIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdG9wID0geGF4aXMuc2VyaWVzX3UycChvYmoub3B0aW9ucy54bWF4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhtYXhvZmYgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLnR5cGUoeG1heG9mZikgPT0gIm51bWJlciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0b3AgPSB4YXhpcy5zZXJpZXNfdTJwKHhheGlzLm1heCAtIHhtYXhvZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkLnR5cGUoeG1heG9mZikgPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0b3AgPSB4YXhpcy5zZXJpZXNfdTJwKHhheGlzLm1heCkgLSBwYXJzZUZsb2F0KHhtYXhvZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHlheGlzID0gcGxvdC5heGVzW29iai5vcHRpb25zLnlheGlzXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHBsb3QuYXhlc1tvYmoub3B0aW9ucy54YXhpc10uc2VyaWVzX3UycChvYmoub3B0aW9ucy54KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5bWlub2ZmID0gb2JqLm9wdGlvbnMueW1pbk9mZnNldCB8fCBvYmoub3B0aW9ucy55T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHltYXhvZmYgPSBvYmoub3B0aW9ucy55bWF4T2Zmc2V0IHx8IG9iai5vcHRpb25zLnlPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm9wdGlvbnMueW1pbiAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0YXJ0ID0geWF4aXMuc2VyaWVzX3UycChvYmoub3B0aW9ucy55bWluKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHltaW5vZmYgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLnR5cGUoeW1pbm9mZikgPT0gIm51bWJlciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0YXJ0ID0geWF4aXMuc2VyaWVzX3UycCh5YXhpcy5taW4gLSB5bWlub2ZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJC50eXBlKHltaW5vZmYpID09ICJzdHJpbmciKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdGFydCA9IHlheGlzLnNlcmllc191MnAoeWF4aXMubWluKSAtIHBhcnNlRmxvYXQoeW1pbm9mZik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5vcHRpb25zLnltYXggIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdG9wID0geWF4aXMuc2VyaWVzX3UycChvYmoub3B0aW9ucy55bWF4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHltYXhvZmYgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLnR5cGUoeW1heG9mZikgPT0gIm51bWJlciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0b3AgPSB5YXhpcy5zZXJpZXNfdTJwKHlheGlzLm1heCArIHltYXhvZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkLnR5cGUoeW1heG9mZikgPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0b3AgPSB5YXhpcy5zZXJpZXNfdTJwKHlheGlzLm1heCkgKyBwYXJzZUZsb2F0KHltYXhvZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4c3RvcCAhPSBudWxsICYmIHhzdGFydCAhPSBudWxsICYmIHlzdG9wICE9IG51bGwgJiYgeXN0YXJ0ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouZ3JpZFN0YXJ0ID0gW3hzdGFydCwgeXN0YXJ0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouZ3JpZFN0b3AgPSBbeHN0b3AsIHlzdG9wXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbnZhcy5fY3R4LmZpbGxTdHlsZSA9IG9iai5vcHRpb25zLmNvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzLl9jdHguZmlsbFJlY3QoeHN0YXJ0LCB5c3RhcnQsIHhzdG9wIC0geHN0YXJ0LCB5c3RvcCAtIHlzdGFydCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aGluIGNvbnRleHQgb2YgcGxvdAogICAgLy8gY3JlYXRlIGEgY2FudmFzIHdoaWNoIHdlIGNhbiBkcmF3IG9uLgogICAgLy8gaW5zZXJ0IGl0IGJlZm9yZSB0aGUgZXZlbnRDYW52YXMsIHNvIGV2ZW50Q2FudmFzIHdpbGwgc3RpbGwgY2FwdHVyZSBldmVudHMuCiAgICAkLmpxcGxvdC5DYW52YXNPdmVybGF5LnBvc3RQbG90RHJhdyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBjbyA9IHRoaXMucGx1Z2lucy5jYW52YXNPdmVybGF5OwogICAgICAgIC8vIE1lbW9yeSBMZWFrcyBwYXRjaCAgICAKICAgICAgICBpZiAoY28gJiYgY28uaGlnaGxpZ2h0Q2FudmFzKSB7CiAgICAgICAgICAgIGNvLmhpZ2hsaWdodENhbnZhcy5yZXNldENhbnZhcygpOwogICAgICAgICAgICBjby5oaWdobGlnaHRDYW52YXMgPSBudWxsOwogICAgICAgIH0KICAgICAgICBjby5jYW52YXMgPSBuZXcgJC5qcXBsb3QuR2VuZXJpY0NhbnZhcygpOwogICAgICAgIAogICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKGNvLmNhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCAnanFwbG90LW92ZXJsYXlDYW52YXMtY2FudmFzJywgdGhpcy5fcGxvdERpbWVuc2lvbnMsIHRoaXMpKTsKICAgICAgICBjby5jYW52YXMuc2V0Q29udGV4dCgpOwogICAgICAgIGlmICghY28uZGVmZXJEcmF3KSB7CiAgICAgICAgICAgIGNvLmRyYXcodGhpcyk7CiAgICAgICAgfQoKICAgICAgICB2YXIgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIGNvLl90b29sdGlwRWxlbSA9ICQoZWxlbSk7CiAgICAgICAgZWxlbSA9IG51bGw7CiAgICAgICAgY28uX3Rvb2x0aXBFbGVtLmFkZENsYXNzKCdqcXBsb3QtY2FudmFzT3ZlcmxheS10b29sdGlwJyk7CiAgICAgICAgY28uX3Rvb2x0aXBFbGVtLmNzcyh7cG9zaXRpb246J2Fic29sdXRlJywgZGlzcGxheTonbm9uZSd9KTsKICAgICAgICAKICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZShjby5fdG9vbHRpcEVsZW0pOwogICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgnbW91c2VsZWF2ZScsIHsgZWxlbTogY28uX3Rvb2x0aXBFbGVtIH0sIGZ1bmN0aW9uIChldikgeyBldi5kYXRhLmVsZW0uaGlkZSgpOyB9KTsKCiAgICAgICAgdmFyIGNvID0gbnVsbDsKICAgIH07CgoKICAgIGZ1bmN0aW9uIHNob3dUb29sdGlwKHBsb3QsIG9iaiwgZ3JpZHBvcywgZGF0YXBvcykgewogICAgICAgIHZhciBjbyA9IHBsb3QucGx1Z2lucy5jYW52YXNPdmVybGF5OwogICAgICAgIHZhciBlbGVtID0gY28uX3Rvb2x0aXBFbGVtOwoKICAgICAgICB2YXIgb3B0cyA9IG9iai5vcHRpb25zLCB4LCB5OwoKICAgICAgICBlbGVtLmh0bWwoJC5qcXBsb3Quc3ByaW50ZihvcHRzLnRvb2x0aXBGb3JtYXRTdHJpbmcsIGRhdGFwb3NbMF0sIGRhdGFwb3NbMV0pKTsKICAgICAgICAKICAgICAgICBzd2l0Y2ggKG9wdHMudG9vbHRpcExvY2F0aW9uKSB7CiAgICAgICAgICAgIGNhc2UgJ253JzoKICAgICAgICAgICAgICAgIHggPSBncmlkcG9zWzBdICsgcGxvdC5fZ3JpZFBhZGRpbmcubGVmdCAtIGVsZW0ub3V0ZXJXaWR0aCh0cnVlKSAtIG9wdHMudG9vbHRpcE9mZnNldDsKICAgICAgICAgICAgICAgIHkgPSBncmlkcG9zWzFdICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wIC0gb3B0cy50b29sdGlwT2Zmc2V0IC0gZWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICduJzoKICAgICAgICAgICAgICAgIHggPSBncmlkcG9zWzBdICsgcGxvdC5fZ3JpZFBhZGRpbmcubGVmdCAtIGVsZW0ub3V0ZXJXaWR0aCh0cnVlKS8yOwogICAgICAgICAgICAgICAgeSA9IGdyaWRwb3NbMV0gKyBwbG90Ll9ncmlkUGFkZGluZy50b3AgLSBvcHRzLnRvb2x0aXBPZmZzZXQgLSBlbGVtLm91dGVySGVpZ2h0KHRydWUpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ25lJzoKICAgICAgICAgICAgICAgIHggPSBncmlkcG9zWzBdICsgcGxvdC5fZ3JpZFBhZGRpbmcubGVmdCArIG9wdHMudG9vbHRpcE9mZnNldDsKICAgICAgICAgICAgICAgIHkgPSBncmlkcG9zWzFdICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wIC0gb3B0cy50b29sdGlwT2Zmc2V0IC0gZWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdlJzoKICAgICAgICAgICAgICAgIHggPSBncmlkcG9zWzBdICsgcGxvdC5fZ3JpZFBhZGRpbmcubGVmdCArIG9wdHMudG9vbHRpcE9mZnNldDsKICAgICAgICAgICAgICAgIHkgPSBncmlkcG9zWzFdICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wIC0gZWxlbS5vdXRlckhlaWdodCh0cnVlKS8yOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3NlJzoKICAgICAgICAgICAgICAgIHggPSBncmlkcG9zWzBdICsgcGxvdC5fZ3JpZFBhZGRpbmcubGVmdCArIG9wdHMudG9vbHRpcE9mZnNldDsKICAgICAgICAgICAgICAgIHkgPSBncmlkcG9zWzFdICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wICsgb3B0cy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgICAgeCA9IGdyaWRwb3NbMF0gKyBwbG90Ll9ncmlkUGFkZGluZy5sZWZ0IC0gZWxlbS5vdXRlcldpZHRoKHRydWUpLzI7CiAgICAgICAgICAgICAgICB5ID0gZ3JpZHBvc1sxXSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCArIG9wdHMudG9vbHRpcE9mZnNldDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzdyc6CiAgICAgICAgICAgICAgICB4ID0gZ3JpZHBvc1swXSArIHBsb3QuX2dyaWRQYWRkaW5nLmxlZnQgLSBlbGVtLm91dGVyV2lkdGgodHJ1ZSkgLSBvcHRzLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB5ID0gZ3JpZHBvc1sxXSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCArIG9wdHMudG9vbHRpcE9mZnNldDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICd3JzoKICAgICAgICAgICAgICAgIHggPSBncmlkcG9zWzBdICsgcGxvdC5fZ3JpZFBhZGRpbmcubGVmdCAtIGVsZW0ub3V0ZXJXaWR0aCh0cnVlKSAtIG9wdHMudG9vbHRpcE9mZnNldDsKICAgICAgICAgICAgICAgIHkgPSBncmlkcG9zWzFdICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wIC0gZWxlbS5vdXRlckhlaWdodCh0cnVlKS8yOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6IC8vIHNhbWUgYXMgJ253JwogICAgICAgICAgICAgICAgeCA9IGdyaWRwb3NbMF0gKyBwbG90Ll9ncmlkUGFkZGluZy5sZWZ0IC0gZWxlbS5vdXRlcldpZHRoKHRydWUpIC0gb3B0cy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgeSA9IGdyaWRwb3NbMV0gKyBwbG90Ll9ncmlkUGFkZGluZy50b3AgLSBvcHRzLnRvb2x0aXBPZmZzZXQgLSBlbGVtLm91dGVySGVpZ2h0KHRydWUpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBlbGVtLmNzcygnbGVmdCcsIHgpOwogICAgICAgIGVsZW0uY3NzKCd0b3AnLCB5KTsKICAgICAgICBpZiAob3B0cy5mYWRlVG9vbHRpcCkgewogICAgICAgICAgICAvLyBGaXggZm9yIHN0YWNrZWQgdXAgYW5pbWF0aW9ucy4gIFRobmFua3MgVHJldm9yIQogICAgICAgICAgICBlbGVtLnN0b3AodHJ1ZSx0cnVlKS5mYWRlSW4ob3B0cy50b29sdGlwRmFkZVNwZWVkKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGVsZW0uc2hvdygpOwogICAgICAgIH0KICAgICAgICBlbGVtID0gbnVsbDsKICAgIH0KCgogICAgZnVuY3Rpb24gaXNOZWFyTGluZShwb2ludCwgbHN0YXJ0LCBsc3RvcCwgd2lkdGgpIHsKICAgICAgICAvLyByIGlzIHBvaW50IHRvIHRlc3QsIHAgYW5kIHEgYXJlIGVuZCBwb2ludHMuCiAgICAgICAgdmFyIHJ4ID0gcG9pbnRbMF07CiAgICAgICAgdmFyIHJ5ID0gcG9pbnRbMV07CiAgICAgICAgdmFyIHB4ID0gTWF0aC5yb3VuZChsc3RvcFswXSk7CiAgICAgICAgdmFyIHB5ID0gTWF0aC5yb3VuZChsc3RvcFsxXSk7CiAgICAgICAgdmFyIHF4ID0gTWF0aC5yb3VuZChsc3RhcnRbMF0pOwogICAgICAgIHZhciBxeSA9IE1hdGgucm91bmQobHN0YXJ0WzFdKTsKCiAgICAgICAgdmFyIGwgPSBNYXRoLnNxcnQoTWF0aC5wb3cocHgtcXgsIDIpICsgTWF0aC5wb3cocHktcXksIDIpKTsKCiAgICAgICAgLy8gc2NhbGUgZXJyb3IgdGVybSBieSBsZW5ndGggb2YgbGluZS4KICAgICAgICB2YXIgZXBzID0gd2lkdGgqbDsKICAgICAgICB2YXIgcmVzID0gTWF0aC5hYnMoKHF4LXB4KSAqIChyeS1weSkgLSAocXktcHkpICogKHJ4LXB4KSk7CiAgICAgICAgdmFyIHJldCA9IChyZXMgPCBlcHMpID8gdHJ1ZSA6IGZhbHNlOwogICAgICAgIHJldHVybiByZXQ7CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGlzTmVhclJlY3RhbmdsZShwb2ludCwgbHN0YXJ0LCBsc3RvcCwgd2lkdGgpIHsKICAgICAgICAvLyByIGlzIHBvaW50IHRvIHRlc3QsIHAgYW5kIHEgYXJlIGVuZCBwb2ludHMuCiAgICAgICAgdmFyIHJ4ID0gcG9pbnRbMF07CiAgICAgICAgdmFyIHJ5ID0gcG9pbnRbMV07CiAgICAgICAgdmFyIHB4ID0gTWF0aC5yb3VuZChsc3RvcFswXSk7CiAgICAgICAgdmFyIHB5ID0gTWF0aC5yb3VuZChsc3RvcFsxXSk7CiAgICAgICAgdmFyIHF4ID0gTWF0aC5yb3VuZChsc3RhcnRbMF0pOwogICAgICAgIHZhciBxeSA9IE1hdGgucm91bmQobHN0YXJ0WzFdKTsKICAgICAgICAKICAgICAgICB2YXIgdGVtcDsKICAgICAgICBpZiAocHggPiBxeCkgeyB0ZW1wID0gcHg7IHB4ID0gcXg7IHF4ID0gdGVtcDsgfQogICAgICAgIGlmIChweSA+IHF5KSB7IHRlbXAgPSBweTsgcHkgPSBxeTsgcXkgPSB0ZW1wOyB9CiAgICAgICAgCiAgICAgICAgdmFyIHJldCA9IChyeCA+PSBweCAmJiByeCA8PSBxeCAmJiByeSA+PSBweSAmJiByeSA8PSBxeSk7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHJldDsKICAgIH0KCgogICAgZnVuY3Rpb24gaGFuZGxlTW92ZShldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICB2YXIgY28gPSBwbG90LnBsdWdpbnMuY2FudmFzT3ZlcmxheTsKICAgICAgICB2YXIgb2JqcyA9IGNvLm9iamVjdHM7CiAgICAgICAgdmFyIGwgPSBvYmpzLmxlbmd0aDsKICAgICAgICB2YXIgb2JqLCBoYXZlSGlnaGxpZ2h0PWZhbHNlOwogICAgICAgIHZhciBlbGVtOwogICAgICAgIGZvciAodmFyIGk9MDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgb2JqID0gb2Jqc1tpXTsKICAgICAgICAgICAgaWYgKG9iai5vcHRpb25zLnNob3dUb29sdGlwKSB7CiAgICAgICAgICAgIAl2YXIgbjsKICAgICAgICAgICAgICAgIGlmIChvYmoudHlwZSA9PT0gJ3JlY3RhbmdsZScpIHsKICAgICAgICAgICAgICAgICBuID0gaXNOZWFyUmVjdGFuZ2xlKFtncmlkcG9zLngsIGdyaWRwb3MueV0sIG9iai5ncmlkU3RhcnQsIG9iai5ncmlkU3RvcCwgb2JqLnRvb2x0aXBXaWR0aEZhY3Rvcik7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIG4gPSBpc05lYXJMaW5lKFtncmlkcG9zLngsIGdyaWRwb3MueV0sIG9iai5ncmlkU3RhcnQsIG9iai5ncmlkU3RvcCwgb2JqLnRvb2x0aXBXaWR0aEZhY3Rvcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkYXRhcG9zID0gW3Bsb3QuYXhlc1tvYmoub3B0aW9ucy54YXhpc10uc2VyaWVzX3AydShncmlkcG9zLngpLCBwbG90LmF4ZXNbb2JqLm9wdGlvbnMueWF4aXNdLnNlcmllc19wMnUoZ3JpZHBvcy55KV07CgogICAgICAgICAgICAgICAgLy8gY2FzZXM6CiAgICAgICAgICAgICAgICAvLyAgICBuZWFyIGxpbmUsIG5vIGhpZ2hsaWdodGluZwogICAgICAgICAgICAgICAgLy8gICAgbmVhciBsaW5lLCBoaWdobGl0aW5nIG9uIHRoaXMgbGluZQogICAgICAgICAgICAgICAgLy8gICAgbmVhciBsaW5lLCBoaWdobGlnaHRpbmcgYW5vdGhlciBsaW5lCiAgICAgICAgICAgICAgICAvLyAgICBub3QgbmVhciBhbnkgbGluZSwgaGlnaGxpZ2h0aW5nCiAgICAgICAgICAgICAgICAvLyAgICBub3QgbmVhciBhbnkgbGluZSwgbm8gaGlnaGxpZ2h0aW5nCgogICAgICAgICAgICAgICAgLy8gbmVhciBsaW5lLCBub3QgY3VycmVudGx5IGhpZ2hsaWdodGluZwogICAgICAgICAgICAgICAgaWYgKG4gJiYgY28uaGlnaGxpZ2h0T2JqZWN0SW5kZXggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAob2JqLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VG9vbHRpcChwbG90LCBvYmosIFtncmlkcG9zLngsIGdyaWRwb3MueV0sIGRhdGFwb3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdob3Jpem9udGFsTGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Rhc2hlZEhvcml6b250YWxMaW5lJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUb29sdGlwKHBsb3QsIG9iaiwgW2dyaWRwb3MueCwgb2JqLmdyaWRTdGFydFsxXV0sIFtkYXRhcG9zWzBdLCBvYmoub3B0aW9ucy55XSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ZlcnRpY2FsTGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Rhc2hlZFZlcnRpY2FsTGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VG9vbHRpcChwbG90LCBvYmosIFtvYmouZ3JpZFN0YXJ0WzBdLCBncmlkcG9zLnldLCBbb2JqLm9wdGlvbnMueCwgZGF0YXBvc1sxXV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVjdGFuZ2xlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUb29sdGlwKHBsb3QsIG9iaiwgW29iai5ncmlkU3RhcnRbMF0sIGdyaWRwb3MueV0sIFtvYmoub3B0aW9ucy54LCBkYXRhcG9zWzFdXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgICAgICAgICBjby5oaWdobGlnaHRPYmplY3RJbmRleCA9IGk7CiAgICAgICAgICAgICAgICAgICAgaGF2ZUhpZ2hsaWdodCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gbmVhciBsaW5lLCBoaWdobGlnaHRpbmcgYW5vdGhlciBsaW5lLgogICAgICAgICAgICAgICAgZWxzZSBpZiAobiAmJiBjby5oaWdobGlnaHRPYmplY3RJbmRleCAhPT0gaSkgewogICAgICAgICAgICAgICAgICAgIC8vIHR1cm4gb2ZmIHRvb2x0aXAuCiAgICAgICAgICAgICAgICAgICAgZWxlbSA9IGNvLl90b29sdGlwRWxlbTsKICAgICAgICAgICAgICAgICAgICBpZiAob2JqLmZhZGVUb29sdGlwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uZmFkZU91dChvYmoudG9vbHRpcEZhZGVTcGVlZCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vIHR1cm4gb24gcmlnaHQgdG9vbHRpcC4KICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9iai50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpbmUnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1Rvb2x0aXAocGxvdCwgb2JqLCBbZ3JpZHBvcy54LCBncmlkcG9zLnldLCBkYXRhcG9zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaG9yaXpvbnRhbExpbmUnOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXNoZWRIb3Jpem9udGFsTGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VG9vbHRpcChwbG90LCBvYmosIFtncmlkcG9zLngsIG9iai5ncmlkU3RhcnRbMV1dLCBbZGF0YXBvc1swXSwgb2JqLm9wdGlvbnMueV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd2ZXJ0aWNhbExpbmUnOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXNoZWRWZXJ0aWNhbExpbmUnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1Rvb2x0aXAocGxvdCwgb2JqLCBbb2JqLmdyaWRTdGFydFswXSwgZ3JpZHBvcy55XSwgW29iai5vcHRpb25zLngsIGRhdGFwb3NbMV1dKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlY3RhbmdsZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VG9vbHRpcChwbG90LCBvYmosIFtvYmouZ3JpZFN0YXJ0WzBdLCBncmlkcG9zLnldLCBbb2JqLm9wdGlvbnMueCwgZGF0YXBvc1sxXV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgY28uaGlnaGxpZ2h0T2JqZWN0SW5kZXggPSBpOwogICAgICAgICAgICAgICAgICAgIGhhdmVIaWdobGlnaHQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIG5lYXIgbGluZSwgYWxyZWFkeSBoaWdobGlnaHRpbmcgdGhpcyBsaW5lLCB1cGRhdGUKICAgICAgICAgICAgICAgIGVsc2UgaWYgKG4pIHsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9iai50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpbmUnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1Rvb2x0aXAocGxvdCwgb2JqLCBbZ3JpZHBvcy54LCBncmlkcG9zLnldLCBkYXRhcG9zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaG9yaXpvbnRhbExpbmUnOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXNoZWRIb3Jpem9udGFsTGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VG9vbHRpcChwbG90LCBvYmosIFtncmlkcG9zLngsIG9iai5ncmlkU3RhcnRbMV1dLCBbZGF0YXBvc1swXSwgb2JqLm9wdGlvbnMueV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd2ZXJ0aWNhbExpbmUnOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXNoZWRWZXJ0aWNhbExpbmUnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1Rvb2x0aXAocGxvdCwgb2JqLCBbb2JqLmdyaWRTdGFydFswXSwgZ3JpZHBvcy55XSwgW29iai5vcHRpb25zLngsIGRhdGFwb3NbMV1dKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlY3RhbmdsZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VG9vbHRpcChwbG90LCBvYmosIFtvYmouZ3JpZFN0YXJ0WzBdLCBncmlkcG9zLnldLCBbb2JqLm9wdGlvbnMueCwgZGF0YXBvc1sxXV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaGF2ZUhpZ2hsaWdodCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIGNoZWNrIGlmIHdlIGFyZSBoaWdobGlnaHRpbmcgYW5kIG5vdCBuZWFyIGEgbGluZSwgdHVybiBpdCBvZmYuCiAgICAgICAgaWYgKCFoYXZlSGlnaGxpZ2h0ICYmIGNvLmhpZ2hsaWdodE9iamVjdEluZGV4ICE9PSBudWxsKSB7CiAgICAgICAgICAgIGVsZW0gPSBjby5fdG9vbHRpcEVsZW07CiAgICAgICAgICAgIG9iaiA9IGNvLmdldE9iamVjdChjby5oaWdobGlnaHRPYmplY3RJbmRleCk7CiAgICAgICAgICAgIGlmIChvYmouZmFkZVRvb2x0aXApIHsKICAgICAgICAgICAgICAgIGVsZW0uZmFkZU91dChvYmoudG9vbHRpcEZhZGVTcGVlZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBlbGVtLmhpZGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjby5oaWdobGlnaHRPYmplY3RJbmRleCA9IG51bGw7CiAgICAgICAgfQogICAgfQogICAgCiAgICAkLmpxcGxvdC5wb3N0SW5pdEhvb2tzLnB1c2goJC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wb3N0UGxvdEluaXQpOwogICAgJC5qcXBsb3QucG9zdERyYXdIb29rcy5wdXNoKCQuanFwbG90LkNhbnZhc092ZXJsYXkucG9zdFBsb3REcmF3KTsKICAgICQuanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsnanFwbG90TW91c2VNb3ZlJywgaGFuZGxlTW92ZV0pOwoKfSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.canvasOverlay.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGQpe3ZhciBmPTA7ZC5qcXBsb3QuQ2FudmFzT3ZlcmxheT1mdW5jdGlvbihxKXt2YXIgbz1xfHx7fTt0aGlzLm9wdGlvbnM9e3Nob3c6ZC5qcXBsb3QuY29uZmlnLmVuYWJsZVBsdWdpbnMsZGVmZXJEcmF3OmZhbHNlfTt0aGlzLm9iamVjdHM9W107dGhpcy5vYmplY3ROYW1lcz1bXTt0aGlzLmNhbnZhcz1udWxsO3RoaXMubWFya2VyUmVuZGVyZXI9bmV3IGQuanFwbG90Lk1hcmtlclJlbmRlcmVyKHtzdHlsZToibGluZSJ9KTt0aGlzLm1hcmtlclJlbmRlcmVyLmluaXQoKTt0aGlzLmhpZ2hsaWdodE9iamVjdEluZGV4PW51bGw7aWYoby5vYmplY3RzKXt2YXIgcz1vLm9iamVjdHMscjtmb3IodmFyIHA9MDtwPHMubGVuZ3RoO3ArKyl7cj1zW3BdO2Zvcih2YXIgdCBpbiByKXtzd2l0Y2godCl7Y2FzZSJsaW5lIjp0aGlzLmFkZExpbmUoclt0XSk7YnJlYWs7Y2FzZSJob3Jpem9udGFsTGluZSI6dGhpcy5hZGRIb3Jpem9udGFsTGluZShyW3RdKTticmVhaztjYXNlImRhc2hlZEhvcml6b250YWxMaW5lIjp0aGlzLmFkZERhc2hlZEhvcml6b250YWxMaW5lKHJbdF0pO2JyZWFrO2Nhc2UidmVydGljYWxMaW5lIjp0aGlzLmFkZFZlcnRpY2FsTGluZShyW3RdKTticmVhaztjYXNlImRhc2hlZFZlcnRpY2FsTGluZSI6dGhpcy5hZGREYXNoZWRWZXJ0aWNhbExpbmUoclt0XSk7YnJlYWs7Y2FzZSJyZWN0YW5nbGUiOnRoaXMuYWRkUmVjdGFuZ2xlKHJbdF0pO2JyZWFrO2RlZmF1bHQ6YnJlYWt9fX19ZC5leHRlbmQodHJ1ZSx0aGlzLm9wdGlvbnMsbyl9O2QuanFwbG90LkNhbnZhc092ZXJsYXkucG9zdFBsb3RJbml0PWZ1bmN0aW9uKHEscCxvKXt2YXIgbj1vfHx7fTt0aGlzLnBsdWdpbnMuY2FudmFzT3ZlcmxheT1uZXcgZC5qcXBsb3QuQ2FudmFzT3ZlcmxheShuLmNhbnZhc092ZXJsYXkpfTtmdW5jdGlvbiBpKCl7dGhpcy51aWQ9bnVsbDt0aGlzLnR5cGU9bnVsbDt0aGlzLmdyaWRTdGFydD1udWxsO3RoaXMuZ3JpZFN0b3A9bnVsbDt0aGlzLnRvb2x0aXBXaWR0aEZhY3Rvcj0wO3RoaXMub3B0aW9ucz17bmFtZTpudWxsLHNob3c6dHJ1ZSxsaW5lV2lkdGg6MixsaW5lQ2FwOiJyb3VuZCIsY29sb3I6IiM2NjY2NjYiLHNoYWRvdzp0cnVlLHNoYWRvd0FuZ2xlOjQ1LHNoYWRvd09mZnNldDoxLHNoYWRvd0RlcHRoOjMsc2hhZG93QWxwaGE6IjAuMDciLHhheGlzOiJ4YXhpcyIseWF4aXM6InlheGlzIixzaG93VG9vbHRpcDpmYWxzZSxzaG93VG9vbHRpcFByZWNpc2lvbjowLjYsdG9vbHRpcExvY2F0aW9uOiJudyIsZmFkZVRvb2x0aXA6dHJ1ZSx0b29sdGlwRmFkZVNwZWVkOiJmYXN0Iix0b29sdGlwT2Zmc2V0OjQsdG9vbHRpcEZvcm1hdFN0cmluZzoiJWQsICVkIn19ZnVuY3Rpb24gbShuKXtpLmNhbGwodGhpcyk7dGhpcy50eXBlPSJyZWN0YW5nbGUiO3ZhciBvPXt4bWluOm51bGwseG1heDpudWxsLHhPZmZzZXQ6IjZweCIseG1pbk9mZnNldDpudWxsLHhtYXhPZmZzZXQ6bnVsbCx5bWluOm51bGwseW1heDpudWxsLHlPZmZzZXQ6IjZweCIseW1pbk9mZnNldDpudWxsLHltYXhPZmZzZXQ6bnVsbH07ZC5leHRlbmQodHJ1ZSx0aGlzLm9wdGlvbnMsbyxuKTtpZih0aGlzLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb248MC4wMSl7dGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uPTAuMDF9fW0ucHJvdG90eXBlPW5ldyBpKCk7bS5wcm90b3R5cGUuY29uc3RydWN0b3I9bTtmdW5jdGlvbiBiKG4pe2kuY2FsbCh0aGlzKTt0aGlzLnR5cGU9ImxpbmUiO3ZhciBvPXtzdGFydDpbXSxzdG9wOltdfTtkLmV4dGVuZCh0cnVlLHRoaXMub3B0aW9ucyxvLG4pO2lmKHRoaXMub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbjwwLjAxKXt0aGlzLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb249MC4wMX19Yi5wcm90b3R5cGU9bmV3IGkoKTtiLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1iO2Z1bmN0aW9uIGUobil7aS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iaG9yaXpvbnRhbExpbmUiO3ZhciBvPXt5Om51bGwseG1pbjpudWxsLHhtYXg6bnVsbCx4T2Zmc2V0OiI2cHgiLHhtaW5PZmZzZXQ6bnVsbCx4bWF4T2Zmc2V0Om51bGx9O2QuZXh0ZW5kKHRydWUsdGhpcy5vcHRpb25zLG8sbik7aWYodGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uPDAuMDEpe3RoaXMub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbj0wLjAxfX1lLnByb3RvdHlwZT1uZXcgaSgpO2UucHJvdG90eXBlLmNvbnN0cnVjdG9yPWU7ZnVuY3Rpb24gaihuKXtpLmNhbGwodGhpcyk7dGhpcy50eXBlPSJkYXNoZWRIb3Jpem9udGFsTGluZSI7dmFyIG89e3k6bnVsbCx4bWluOm51bGwseG1heDpudWxsLHhPZmZzZXQ6IjZweCIseG1pbk9mZnNldDpudWxsLHhtYXhPZmZzZXQ6bnVsbCxkYXNoUGF0dGVybjpbOCw4XX07ZC5leHRlbmQodHJ1ZSx0aGlzLm9wdGlvbnMsbyxuKTtpZih0aGlzLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb248MC4wMSl7dGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uPTAuMDF9fWoucHJvdG90eXBlPW5ldyBpKCk7ai5wcm90b3R5cGUuY29uc3RydWN0b3I9ajtmdW5jdGlvbiBjKG4pe2kuY2FsbCh0aGlzKTt0aGlzLnR5cGU9InZlcnRpY2FsTGluZSI7dmFyIG89e3g6bnVsbCx5bWluOm51bGwseW1heDpudWxsLHlPZmZzZXQ6IjZweCIseW1pbk9mZnNldDpudWxsLHltYXhPZmZzZXQ6bnVsbH07ZC5leHRlbmQodHJ1ZSx0aGlzLm9wdGlvbnMsbyxuKTtpZih0aGlzLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb248MC4wMSl7dGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uPTAuMDF9fWMucHJvdG90eXBlPW5ldyBpKCk7Yy5wcm90b3R5cGUuY29uc3RydWN0b3I9YztmdW5jdGlvbiBsKG4pe2kuY2FsbCh0aGlzKTt0aGlzLnR5cGU9ImRhc2hlZFZlcnRpY2FsTGluZSI7dGhpcy5zdGFydD1udWxsO3RoaXMuc3RvcD1udWxsO3ZhciBvPXt4Om51bGwseW1pbjpudWxsLHltYXg6bnVsbCx5T2Zmc2V0OiI2cHgiLHltaW5PZmZzZXQ6bnVsbCx5bWF4T2Zmc2V0Om51bGwsZGFzaFBhdHRlcm46WzgsOF19O2QuZXh0ZW5kKHRydWUsdGhpcy5vcHRpb25zLG8sbik7aWYodGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uPDAuMDEpe3RoaXMub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbj0wLjAxfX1sLnByb3RvdHlwZT1uZXcgaSgpO2wucHJvdG90eXBlLmNvbnN0cnVjdG9yPWw7ZC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuYWRkTGluZT1mdW5jdGlvbihvKXt2YXIgbj1uZXcgYihvKTtuLnVpZD1mKys7dGhpcy5vYmplY3RzLnB1c2gobik7dGhpcy5vYmplY3ROYW1lcy5wdXNoKG4ub3B0aW9ucy5uYW1lKX07ZC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuYWRkSG9yaXpvbnRhbExpbmU9ZnVuY3Rpb24obyl7dmFyIG49bmV3IGUobyk7bi51aWQ9ZisrO3RoaXMub2JqZWN0cy5wdXNoKG4pO3RoaXMub2JqZWN0TmFtZXMucHVzaChuLm9wdGlvbnMubmFtZSl9O2QuanFwbG90LkNhbnZhc092ZXJsYXkucHJvdG90eXBlLmFkZERhc2hlZEhvcml6b250YWxMaW5lPWZ1bmN0aW9uKG8pe3ZhciBuPW5ldyBqKG8pO24udWlkPWYrKzt0aGlzLm9iamVjdHMucHVzaChuKTt0aGlzLm9iamVjdE5hbWVzLnB1c2gobi5vcHRpb25zLm5hbWUpfTtkLmpxcGxvdC5DYW52YXNPdmVybGF5LnByb3RvdHlwZS5hZGRWZXJ0aWNhbExpbmU9ZnVuY3Rpb24obyl7dmFyIG49bmV3IGMobyk7bi51aWQ9ZisrO3RoaXMub2JqZWN0cy5wdXNoKG4pO3RoaXMub2JqZWN0TmFtZXMucHVzaChuLm9wdGlvbnMubmFtZSl9O2QuanFwbG90LkNhbnZhc092ZXJsYXkucHJvdG90eXBlLmFkZERhc2hlZFZlcnRpY2FsTGluZT1mdW5jdGlvbihvKXt2YXIgbj1uZXcgbChvKTtuLnVpZD1mKys7dGhpcy5vYmplY3RzLnB1c2gobik7dGhpcy5vYmplY3ROYW1lcy5wdXNoKG4ub3B0aW9ucy5uYW1lKX07ZC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuYWRkUmVjdGFuZ2xlPWZ1bmN0aW9uKG8pe3ZhciBuPW5ldyBtKG8pO24udWlkPWYrKzt0aGlzLm9iamVjdHMucHVzaChuKTt0aGlzLm9iamVjdE5hbWVzLnB1c2gobi5vcHRpb25zLm5hbWUpfTtkLmpxcGxvdC5DYW52YXNPdmVybGF5LnByb3RvdHlwZS5yZW1vdmVPYmplY3Q9ZnVuY3Rpb24obil7aWYoZC50eXBlKG4pPT0ibnVtYmVyIil7dGhpcy5vYmplY3RzLnNwbGljZShuLDEpO3RoaXMub2JqZWN0TmFtZXMuc3BsaWNlKG4sMSl9ZWxzZXt2YXIgbz1kLmluQXJyYXkobix0aGlzLm9iamVjdE5hbWVzKTtpZihvIT0tMSl7dGhpcy5vYmplY3RzLnNwbGljZShvLDEpO3RoaXMub2JqZWN0TmFtZXMuc3BsaWNlKG8sMSl9fX07ZC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuZ2V0T2JqZWN0PWZ1bmN0aW9uKG4pe2lmKGQudHlwZShuKT09Im51bWJlciIpe3JldHVybiB0aGlzLm9iamVjdHNbbl19ZWxzZXt2YXIgbz1kLmluQXJyYXkobix0aGlzLm9iamVjdE5hbWVzKTtpZihvIT0tMSl7cmV0dXJuIHRoaXMub2JqZWN0c1tvXX19fTtkLmpxcGxvdC5DYW52YXNPdmVybGF5LnByb3RvdHlwZS5nZXQ9ZC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuZ2V0T2JqZWN0O2QuanFwbG90LkNhbnZhc092ZXJsYXkucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKG4pe3RoaXMuY2FudmFzLl9jdHguY2xlYXJSZWN0KDAsMCx0aGlzLmNhbnZhcy5nZXRXaWR0aCgpLHRoaXMuY2FudmFzLmdldEhlaWdodCgpKX07ZC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbihLKXt2YXIgQSx2PXRoaXMub2JqZWN0cyxGPXRoaXMubWFya2VyUmVuZGVyZXIscyxHO2lmKHRoaXMub3B0aW9ucy5zaG93KXt0aGlzLmNhbnZhcy5fY3R4LmNsZWFyUmVjdCgwLDAsdGhpcy5jYW52YXMuZ2V0V2lkdGgoKSx0aGlzLmNhbnZhcy5nZXRIZWlnaHQoKSk7Zm9yKHZhciBIPTA7SDx2Lmxlbmd0aDtIKyspe0E9dltIXTt2YXIgQj1kLmV4dGVuZCh0cnVlLHt9LEEub3B0aW9ucyk7aWYoQS5vcHRpb25zLnNob3cpe0Yuc2hhZG93PUEub3B0aW9ucy5zaGFkb3c7QS50b29sdGlwV2lkdGhGYWN0b3I9QS5vcHRpb25zLmxpbmVXaWR0aC9BLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb247c3dpdGNoKEEudHlwZSl7Y2FzZSJsaW5lIjpGLnN0eWxlPSJsaW5lIjtCLmNsb3NlUGF0aD1mYWxzZTtzPVtLLmF4ZXNbQS5vcHRpb25zLnhheGlzXS5zZXJpZXNfdTJwKEEub3B0aW9ucy5zdGFydFswXSksSy5heGVzW0Eub3B0aW9ucy55YXhpc10uc2VyaWVzX3UycChBLm9wdGlvbnMuc3RhcnRbMV0pXTtHPVtLLmF4ZXNbQS5vcHRpb25zLnhheGlzXS5zZXJpZXNfdTJwKEEub3B0aW9ucy5zdG9wWzBdKSxLLmF4ZXNbQS5vcHRpb25zLnlheGlzXS5zZXJpZXNfdTJwKEEub3B0aW9ucy5zdG9wWzFdKV07QS5ncmlkU3RhcnQ9cztBLmdyaWRTdG9wPUc7Ri5kcmF3KHMsRyx0aGlzLmNhbnZhcy5fY3R4LEIpO2JyZWFrO2Nhc2UiaG9yaXpvbnRhbExpbmUiOmlmKEEub3B0aW9ucy55IT1udWxsKXtGLnN0eWxlPSJsaW5lIjtCLmNsb3NlUGF0aD1mYWxzZTt2YXIgcD1LLmF4ZXNbQS5vcHRpb25zLnhheGlzXSxTLEwsdz1LLmF4ZXNbQS5vcHRpb25zLnlheGlzXS5zZXJpZXNfdTJwKEEub3B0aW9ucy55KSxJPUEub3B0aW9ucy54bWluT2Zmc2V0fHxBLm9wdGlvbnMueE9mZnNldCx0PUEub3B0aW9ucy54bWF4T2Zmc2V0fHxBLm9wdGlvbnMueE9mZnNldDtpZihBLm9wdGlvbnMueG1pbiE9bnVsbCl7Uz1wLnNlcmllc191MnAoQS5vcHRpb25zLnhtaW4pfWVsc2V7aWYoSSE9bnVsbCl7aWYoZC50eXBlKEkpPT0ibnVtYmVyIil7Uz1wLnNlcmllc191MnAocC5taW4rSSl9ZWxzZXtpZihkLnR5cGUoSSk9PSJzdHJpbmciKXtTPXAuc2VyaWVzX3UycChwLm1pbikrcGFyc2VGbG9hdChJKX19fX1pZihBLm9wdGlvbnMueG1heCE9bnVsbCl7TD1wLnNlcmllc191MnAoQS5vcHRpb25zLnhtYXgpfWVsc2V7aWYodCE9bnVsbCl7aWYoZC50eXBlKHQpPT0ibnVtYmVyIil7TD1wLnNlcmllc191MnAocC5tYXgtdCl9ZWxzZXtpZihkLnR5cGUodCk9PSJzdHJpbmciKXtMPXAuc2VyaWVzX3UycChwLm1heCktcGFyc2VGbG9hdCh0KX19fX1pZihMIT1udWxsJiZTIT1udWxsKXtBLmdyaWRTdGFydD1bUyx3XTtBLmdyaWRTdG9wPVtMLHddO0YuZHJhdyhbUyx3XSxbTCx3XSx0aGlzLmNhbnZhcy5fY3R4LEIpfX1icmVhaztjYXNlImRhc2hlZEhvcml6b250YWxMaW5lIjp2YXIgbz1BLm9wdGlvbnMuZGFzaFBhdHRlcm47dmFyIEU9MDtmb3IodmFyIE09MDtNPG8ubGVuZ3RoO00rKyl7RSs9b1tNXX1pZihBLm9wdGlvbnMueSE9bnVsbCl7Ri5zdHlsZT0ibGluZSI7Qi5jbG9zZVBhdGg9ZmFsc2U7dmFyIHA9Sy5heGVzW0Eub3B0aW9ucy54YXhpc10sUyxMLHc9Sy5heGVzW0Eub3B0aW9ucy55YXhpc10uc2VyaWVzX3UycChBLm9wdGlvbnMueSksST1BLm9wdGlvbnMueG1pbk9mZnNldHx8QS5vcHRpb25zLnhPZmZzZXQsdD1BLm9wdGlvbnMueG1heE9mZnNldHx8QS5vcHRpb25zLnhPZmZzZXQ7aWYoQS5vcHRpb25zLnhtaW4hPW51bGwpe1M9cC5zZXJpZXNfdTJwKEEub3B0aW9ucy54bWluKX1lbHNle2lmKEkhPW51bGwpe2lmKGQudHlwZShJKT09Im51bWJlciIpe1M9cC5zZXJpZXNfdTJwKHAubWluK0kpfWVsc2V7aWYoZC50eXBlKEkpPT0ic3RyaW5nIil7Uz1wLnNlcmllc191MnAocC5taW4pK3BhcnNlRmxvYXQoSSl9fX19aWYoQS5vcHRpb25zLnhtYXghPW51bGwpe0w9cC5zZXJpZXNfdTJwKEEub3B0aW9ucy54bWF4KX1lbHNle2lmKHQhPW51bGwpe2lmKGQudHlwZSh0KT09Im51bWJlciIpe0w9cC5zZXJpZXNfdTJwKHAubWF4LXQpfWVsc2V7aWYoZC50eXBlKHQpPT0ic3RyaW5nIil7TD1wLnNlcmllc191MnAocC5tYXgpLXBhcnNlRmxvYXQodCl9fX19aWYoTCE9bnVsbCYmUyE9bnVsbCl7QS5ncmlkU3RhcnQ9W1Msd107QS5ncmlkU3RvcD1bTCx3XTt2YXIgcj1NYXRoLmNlaWwoKEwtUykvRSk7dmFyIFE9UyxPO2Zvcih2YXIgTT0wO008cjtNKyspe2Zvcih2YXIgSj0wO0o8by5sZW5ndGg7Sis9Mil7Tz1RK29bSl07Ri5kcmF3KFtRLHddLFtPLHddLHRoaXMuY2FudmFzLl9jdHgsQik7USs9b1tKXTtpZihKPG8ubGVuZ3RoLTEpe1ErPW9bSisxXX19fX19YnJlYWs7Y2FzZSJ2ZXJ0aWNhbExpbmUiOmlmKEEub3B0aW9ucy54IT1udWxsKXtGLnN0eWxlPSJsaW5lIjtCLmNsb3NlUGF0aD1mYWxzZTt2YXIgTj1LLmF4ZXNbQS5vcHRpb25zLnlheGlzXSxuLHUsej1LLmF4ZXNbQS5vcHRpb25zLnhheGlzXS5zZXJpZXNfdTJwKEEub3B0aW9ucy54KSxEPUEub3B0aW9ucy55bWluT2Zmc2V0fHxBLm9wdGlvbnMueU9mZnNldCxxPUEub3B0aW9ucy55bWF4T2Zmc2V0fHxBLm9wdGlvbnMueU9mZnNldDtpZihBLm9wdGlvbnMueW1pbiE9bnVsbCl7bj1OLnNlcmllc191MnAoQS5vcHRpb25zLnltaW4pfWVsc2V7aWYoRCE9bnVsbCl7aWYoZC50eXBlKEQpPT0ibnVtYmVyIil7bj1OLnNlcmllc191MnAoTi5taW4tRCl9ZWxzZXtpZihkLnR5cGUoRCk9PSJzdHJpbmciKXtuPU4uc2VyaWVzX3UycChOLm1pbiktcGFyc2VGbG9hdChEKX19fX1pZihBLm9wdGlvbnMueW1heCE9bnVsbCl7dT1OLnNlcmllc191MnAoQS5vcHRpb25zLnltYXgpfWVsc2V7aWYocSE9bnVsbCl7aWYoZC50eXBlKHEpPT0ibnVtYmVyIil7dT1OLnNlcmllc191MnAoTi5tYXgrcSl9ZWxzZXtpZihkLnR5cGUocSk9PSJzdHJpbmciKXt1PU4uc2VyaWVzX3UycChOLm1heCkrcGFyc2VGbG9hdChxKX19fX1pZih1IT1udWxsJiZuIT1udWxsKXtBLmdyaWRTdGFydD1beixuXTtBLmdyaWRTdG9wPVt6LHVdO0YuZHJhdyhbeixuXSxbeix1XSx0aGlzLmNhbnZhcy5fY3R4LEIpfX1icmVhaztjYXNlImRhc2hlZFZlcnRpY2FsTGluZSI6dmFyIG89QS5vcHRpb25zLmRhc2hQYXR0ZXJuO3ZhciBFPTA7Zm9yKHZhciBNPTA7TTxvLmxlbmd0aDtNKyspe0UrPW9bTV19aWYoQS5vcHRpb25zLnghPW51bGwpe0Yuc3R5bGU9ImxpbmUiO0IuY2xvc2VQYXRoPWZhbHNlO3ZhciBOPUsuYXhlc1tBLm9wdGlvbnMueWF4aXNdLG4sdSx6PUsuYXhlc1tBLm9wdGlvbnMueGF4aXNdLnNlcmllc191MnAoQS5vcHRpb25zLngpLEQ9QS5vcHRpb25zLnltaW5PZmZzZXR8fEEub3B0aW9ucy55T2Zmc2V0LHE9QS5vcHRpb25zLnltYXhPZmZzZXR8fEEub3B0aW9ucy55T2Zmc2V0O2lmKEEub3B0aW9ucy55bWluIT1udWxsKXtuPU4uc2VyaWVzX3UycChBLm9wdGlvbnMueW1pbil9ZWxzZXtpZihEIT1udWxsKXtpZihkLnR5cGUoRCk9PSJudW1iZXIiKXtuPU4uc2VyaWVzX3UycChOLm1pbi1EKX1lbHNle2lmKGQudHlwZShEKT09InN0cmluZyIpe249Ti5zZXJpZXNfdTJwKE4ubWluKS1wYXJzZUZsb2F0KEQpfX19fWlmKEEub3B0aW9ucy55bWF4IT1udWxsKXt1PU4uc2VyaWVzX3UycChBLm9wdGlvbnMueW1heCl9ZWxzZXtpZihxIT1udWxsKXtpZihkLnR5cGUocSk9PSJudW1iZXIiKXt1PU4uc2VyaWVzX3UycChOLm1heCtxKX1lbHNle2lmKGQudHlwZShxKT09InN0cmluZyIpe3U9Ti5zZXJpZXNfdTJwKE4ubWF4KStwYXJzZUZsb2F0KHEpfX19fWlmKHUhPW51bGwmJm4hPW51bGwpe0EuZ3JpZFN0YXJ0PVt6LG5dO0EuZ3JpZFN0b3A9W3osdV07dmFyIHI9TWF0aC5jZWlsKChuLXUpL0UpO3ZhciBDPSgocipFKS0obi11KSkvMjt2YXIgUT1uLE8sUCxSO2Zvcih2YXIgTT0wO008cjtNKyspe2Zvcih2YXIgSj0wO0o8by5sZW5ndGg7Sis9Mil7Tz1RLW9bSl07aWYoTzx1KXtPPXV9aWYoUTx1KXtRPXV9Ri5kcmF3KFt6LFFdLFt6LE9dLHRoaXMuY2FudmFzLl9jdHgsQik7US09b1tKXTtpZihKPG8ubGVuZ3RoLTEpe1EtPW9bSisxXX19fX19YnJlYWs7Y2FzZSJyZWN0YW5nbGUiOkYuc3R5bGU9ImxpbmUiO0IuY2xvc2VQYXRoPXRydWU7dmFyIHA9Sy5heGVzW0Eub3B0aW9ucy54YXhpc10sUyxMLHc9Sy5heGVzW0Eub3B0aW9ucy55YXhpc10uc2VyaWVzX3UycChBLm9wdGlvbnMueSksST1BLm9wdGlvbnMueG1pbk9mZnNldHx8QS5vcHRpb25zLnhPZmZzZXQsdD1BLm9wdGlvbnMueG1heE9mZnNldHx8QS5vcHRpb25zLnhPZmZzZXQ7aWYoQS5vcHRpb25zLnhtaW4hPW51bGwpe1M9cC5zZXJpZXNfdTJwKEEub3B0aW9ucy54bWluKX1lbHNle2lmKEkhPW51bGwpe2lmKGQudHlwZShJKT09Im51bWJlciIpe1M9cC5zZXJpZXNfdTJwKHAubWluK0kpfWVsc2V7aWYoZC50eXBlKEkpPT0ic3RyaW5nIil7Uz1wLnNlcmllc191MnAocC5taW4pK3BhcnNlRmxvYXQoSSl9fX19aWYoQS5vcHRpb25zLnhtYXghPW51bGwpe0w9cC5zZXJpZXNfdTJwKEEub3B0aW9ucy54bWF4KX1lbHNle2lmKHQhPW51bGwpe2lmKGQudHlwZSh0KT09Im51bWJlciIpe0w9cC5zZXJpZXNfdTJwKHAubWF4LXQpfWVsc2V7aWYoZC50eXBlKHQpPT0ic3RyaW5nIil7TD1wLnNlcmllc191MnAocC5tYXgpLXBhcnNlRmxvYXQodCl9fX19dmFyIE49Sy5heGVzW0Eub3B0aW9ucy55YXhpc10sbix1LHo9Sy5heGVzW0Eub3B0aW9ucy54YXhpc10uc2VyaWVzX3UycChBLm9wdGlvbnMueCksRD1BLm9wdGlvbnMueW1pbk9mZnNldHx8QS5vcHRpb25zLnlPZmZzZXQscT1BLm9wdGlvbnMueW1heE9mZnNldHx8QS5vcHRpb25zLnlPZmZzZXQ7aWYoQS5vcHRpb25zLnltaW4hPW51bGwpe249Ti5zZXJpZXNfdTJwKEEub3B0aW9ucy55bWluKX1lbHNle2lmKEQhPW51bGwpe2lmKGQudHlwZShEKT09Im51bWJlciIpe249Ti5zZXJpZXNfdTJwKE4ubWluLUQpfWVsc2V7aWYoZC50eXBlKEQpPT0ic3RyaW5nIil7bj1OLnNlcmllc191MnAoTi5taW4pLXBhcnNlRmxvYXQoRCl9fX19aWYoQS5vcHRpb25zLnltYXghPW51bGwpe3U9Ti5zZXJpZXNfdTJwKEEub3B0aW9ucy55bWF4KX1lbHNle2lmKHEhPW51bGwpe2lmKGQudHlwZShxKT09Im51bWJlciIpe3U9Ti5zZXJpZXNfdTJwKE4ubWF4K3EpfWVsc2V7aWYoZC50eXBlKHEpPT0ic3RyaW5nIil7dT1OLnNlcmllc191MnAoTi5tYXgpK3BhcnNlRmxvYXQocSl9fX19aWYoTCE9bnVsbCYmUyE9bnVsbCYmdSE9bnVsbCYmbiE9bnVsbCl7QS5ncmlkU3RhcnQ9W1Msbl07QS5ncmlkU3RvcD1bTCx1XTt0aGlzLmNhbnZhcy5fY3R4LmZpbGxTdHlsZT1BLm9wdGlvbnMuY29sb3I7dGhpcy5jYW52YXMuX2N0eC5maWxsUmVjdChTLG4sTC1TLHUtbil9YnJlYWs7ZGVmYXVsdDpicmVha319fX19O2QuanFwbG90LkNhbnZhc092ZXJsYXkucG9zdFBsb3REcmF3PWZ1bmN0aW9uKCl7dmFyIG89dGhpcy5wbHVnaW5zLmNhbnZhc092ZXJsYXk7aWYobyYmby5oaWdobGlnaHRDYW52YXMpe28uaGlnaGxpZ2h0Q2FudmFzLnJlc2V0Q2FudmFzKCk7by5oaWdobGlnaHRDYW52YXM9bnVsbH1vLmNhbnZhcz1uZXcgZC5qcXBsb3QuR2VuZXJpY0NhbnZhcygpO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKG8uY2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsImpxcGxvdC1vdmVybGF5Q2FudmFzLWNhbnZhcyIsdGhpcy5fcGxvdERpbWVuc2lvbnMsdGhpcykpO28uY2FudmFzLnNldENvbnRleHQoKTtpZighby5kZWZlckRyYXcpe28uZHJhdyh0aGlzKX12YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtvLl90b29sdGlwRWxlbT1kKG4pO249bnVsbDtvLl90b29sdGlwRWxlbS5hZGRDbGFzcygianFwbG90LWNhbnZhc092ZXJsYXktdG9vbHRpcCIpO28uX3Rvb2x0aXBFbGVtLmNzcyh7cG9zaXRpb246ImFic29sdXRlIixkaXNwbGF5OiJub25lIn0pO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKG8uX3Rvb2x0aXBFbGVtKTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoIm1vdXNlbGVhdmUiLHtlbGVtOm8uX3Rvb2x0aXBFbGVtfSxmdW5jdGlvbihwKXtwLmRhdGEuZWxlbS5oaWRlKCl9KTt2YXIgbz1udWxsfTtmdW5jdGlvbiBrKHMscSxyLHApe3ZhciB1PXMucGx1Z2lucy5jYW52YXNPdmVybGF5O3ZhciBvPXUuX3Rvb2x0aXBFbGVtO3ZhciBuPXEub3B0aW9ucyx2LHQ7by5odG1sKGQuanFwbG90LnNwcmludGYobi50b29sdGlwRm9ybWF0U3RyaW5nLHBbMF0scFsxXSkpO3N3aXRjaChuLnRvb2x0aXBMb2NhdGlvbil7Y2FzZSJudyI6dj1yWzBdK3MuX2dyaWRQYWRkaW5nLmxlZnQtby5vdXRlcldpZHRoKHRydWUpLW4udG9vbHRpcE9mZnNldDt0PXJbMV0rcy5fZ3JpZFBhZGRpbmcudG9wLW4udG9vbHRpcE9mZnNldC1vLm91dGVySGVpZ2h0KHRydWUpO2JyZWFrO2Nhc2UibiI6dj1yWzBdK3MuX2dyaWRQYWRkaW5nLmxlZnQtby5vdXRlcldpZHRoKHRydWUpLzI7dD1yWzFdK3MuX2dyaWRQYWRkaW5nLnRvcC1uLnRvb2x0aXBPZmZzZXQtby5vdXRlckhlaWdodCh0cnVlKTticmVhaztjYXNlIm5lIjp2PXJbMF0rcy5fZ3JpZFBhZGRpbmcubGVmdCtuLnRvb2x0aXBPZmZzZXQ7dD1yWzFdK3MuX2dyaWRQYWRkaW5nLnRvcC1uLnRvb2x0aXBPZmZzZXQtby5vdXRlckhlaWdodCh0cnVlKTticmVhaztjYXNlImUiOnY9clswXStzLl9ncmlkUGFkZGluZy5sZWZ0K24udG9vbHRpcE9mZnNldDt0PXJbMV0rcy5fZ3JpZFBhZGRpbmcudG9wLW8ub3V0ZXJIZWlnaHQodHJ1ZSkvMjticmVhaztjYXNlInNlIjp2PXJbMF0rcy5fZ3JpZFBhZGRpbmcubGVmdCtuLnRvb2x0aXBPZmZzZXQ7dD1yWzFdK3MuX2dyaWRQYWRkaW5nLnRvcCtuLnRvb2x0aXBPZmZzZXQ7YnJlYWs7Y2FzZSJzIjp2PXJbMF0rcy5fZ3JpZFBhZGRpbmcubGVmdC1vLm91dGVyV2lkdGgodHJ1ZSkvMjt0PXJbMV0rcy5fZ3JpZFBhZGRpbmcudG9wK24udG9vbHRpcE9mZnNldDticmVhaztjYXNlInN3Ijp2PXJbMF0rcy5fZ3JpZFBhZGRpbmcubGVmdC1vLm91dGVyV2lkdGgodHJ1ZSktbi50b29sdGlwT2Zmc2V0O3Q9clsxXStzLl9ncmlkUGFkZGluZy50b3Arbi50b29sdGlwT2Zmc2V0O2JyZWFrO2Nhc2UidyI6dj1yWzBdK3MuX2dyaWRQYWRkaW5nLmxlZnQtby5vdXRlcldpZHRoKHRydWUpLW4udG9vbHRpcE9mZnNldDt0PXJbMV0rcy5fZ3JpZFBhZGRpbmcudG9wLW8ub3V0ZXJIZWlnaHQodHJ1ZSkvMjticmVhaztkZWZhdWx0OnY9clswXStzLl9ncmlkUGFkZGluZy5sZWZ0LW8ub3V0ZXJXaWR0aCh0cnVlKS1uLnRvb2x0aXBPZmZzZXQ7dD1yWzFdK3MuX2dyaWRQYWRkaW5nLnRvcC1uLnRvb2x0aXBPZmZzZXQtby5vdXRlckhlaWdodCh0cnVlKTticmVha31vLmNzcygibGVmdCIsdik7by5jc3MoInRvcCIsdCk7aWYobi5mYWRlVG9vbHRpcCl7by5zdG9wKHRydWUsdHJ1ZSkuZmFkZUluKG4udG9vbHRpcEZhZGVTcGVlZCl9ZWxzZXtvLnNob3coKX1vPW51bGx9ZnVuY3Rpb24gaCh6LHEscyxwKXt2YXIgbz16WzBdO3ZhciBuPXpbMV07dmFyIHk9TWF0aC5yb3VuZChzWzBdKTt2YXIgeD1NYXRoLnJvdW5kKHNbMV0pO3ZhciB1PU1hdGgucm91bmQocVswXSk7dmFyIHQ9TWF0aC5yb3VuZChxWzFdKTt2YXIgcj1NYXRoLnNxcnQoTWF0aC5wb3coeS11LDIpK01hdGgucG93KHgtdCwyKSk7dmFyIEE9cCpyO3ZhciB3PU1hdGguYWJzKCh1LXkpKihuLXgpLSh0LXgpKihvLXkpKTt2YXIgdj0odzxBKT90cnVlOmZhbHNlO3JldHVybiB2fWZ1bmN0aW9uIGcoeCxxLHIscCl7dmFyIG89eFswXTt2YXIgbj14WzFdO3ZhciB3PU1hdGgucm91bmQoclswXSk7dmFyIHY9TWF0aC5yb3VuZChyWzFdKTt2YXIgdD1NYXRoLnJvdW5kKHFbMF0pO3ZhciBzPU1hdGgucm91bmQocVsxXSk7dmFyIHk7aWYodz50KXt5PXc7dz10O3Q9eX1pZih2PnMpe3k9djt2PXM7cz15fXZhciB1PShvPj13JiZvPD10JiZuPj12JiZuPD1zKTtyZXR1cm4gdX1mdW5jdGlvbiBhKHosdyxyLEEseCl7dmFyIHk9eC5wbHVnaW5zLmNhbnZhc092ZXJsYXk7dmFyIHY9eS5vYmplY3RzO3ZhciBzPXYubGVuZ3RoO3ZhciB1LG89ZmFsc2U7dmFyIHE7Zm9yKHZhciB0PTA7dDxzO3QrKyl7dT12W3RdO2lmKHUub3B0aW9ucy5zaG93VG9vbHRpcCl7dmFyIHA7aWYodS50eXBlPT09InJlY3RhbmdsZSIpe3A9Zyhbdy54LHcueV0sdS5ncmlkU3RhcnQsdS5ncmlkU3RvcCx1LnRvb2x0aXBXaWR0aEZhY3Rvcil9ZWxzZXtwPWgoW3cueCx3LnldLHUuZ3JpZFN0YXJ0LHUuZ3JpZFN0b3AsdS50b29sdGlwV2lkdGhGYWN0b3IpfXI9W3guYXhlc1t1Lm9wdGlvbnMueGF4aXNdLnNlcmllc19wMnUody54KSx4LmF4ZXNbdS5vcHRpb25zLnlheGlzXS5zZXJpZXNfcDJ1KHcueSldO2lmKHAmJnkuaGlnaGxpZ2h0T2JqZWN0SW5kZXg9PW51bGwpe3N3aXRjaCh1LnR5cGUpe2Nhc2UibGluZSI6ayh4LHUsW3cueCx3LnldLHIpO2JyZWFrO2Nhc2UiaG9yaXpvbnRhbExpbmUiOmNhc2UiZGFzaGVkSG9yaXpvbnRhbExpbmUiOmsoeCx1LFt3LngsdS5ncmlkU3RhcnRbMV1dLFtyWzBdLHUub3B0aW9ucy55XSk7YnJlYWs7Y2FzZSJ2ZXJ0aWNhbExpbmUiOmNhc2UiZGFzaGVkVmVydGljYWxMaW5lIjprKHgsdSxbdS5ncmlkU3RhcnRbMF0sdy55XSxbdS5vcHRpb25zLngsclsxXV0pO2JyZWFrO2Nhc2UicmVjdGFuZ2xlIjprKHgsdSxbdS5ncmlkU3RhcnRbMF0sdy55XSxbdS5vcHRpb25zLngsclsxXV0pO2JyZWFrO2RlZmF1bHQ6YnJlYWt9eS5oaWdobGlnaHRPYmplY3RJbmRleD10O289dHJ1ZTticmVha31lbHNle2lmKHAmJnkuaGlnaGxpZ2h0T2JqZWN0SW5kZXghPT10KXtxPXkuX3Rvb2x0aXBFbGVtO2lmKHUuZmFkZVRvb2x0aXApe3EuZmFkZU91dCh1LnRvb2x0aXBGYWRlU3BlZWQpfWVsc2V7cS5oaWRlKCl9c3dpdGNoKHUudHlwZSl7Y2FzZSJsaW5lIjprKHgsdSxbdy54LHcueV0scik7YnJlYWs7Y2FzZSJob3Jpem9udGFsTGluZSI6Y2FzZSJkYXNoZWRIb3Jpem9udGFsTGluZSI6ayh4LHUsW3cueCx1LmdyaWRTdGFydFsxXV0sW3JbMF0sdS5vcHRpb25zLnldKTticmVhaztjYXNlInZlcnRpY2FsTGluZSI6Y2FzZSJkYXNoZWRWZXJ0aWNhbExpbmUiOmsoeCx1LFt1LmdyaWRTdGFydFswXSx3LnldLFt1Lm9wdGlvbnMueCxyWzFdXSk7YnJlYWs7Y2FzZSJyZWN0YW5nbGUiOmsoeCx1LFt1LmdyaWRTdGFydFswXSx3LnldLFt1Lm9wdGlvbnMueCxyWzFdXSk7YnJlYWs7ZGVmYXVsdDpicmVha315LmhpZ2hsaWdodE9iamVjdEluZGV4PXQ7bz10cnVlO2JyZWFrfWVsc2V7aWYocCl7c3dpdGNoKHUudHlwZSl7Y2FzZSJsaW5lIjprKHgsdSxbdy54LHcueV0scik7YnJlYWs7Y2FzZSJob3Jpem9udGFsTGluZSI6Y2FzZSJkYXNoZWRIb3Jpem9udGFsTGluZSI6ayh4LHUsW3cueCx1LmdyaWRTdGFydFsxXV0sW3JbMF0sdS5vcHRpb25zLnldKTticmVhaztjYXNlInZlcnRpY2FsTGluZSI6Y2FzZSJkYXNoZWRWZXJ0aWNhbExpbmUiOmsoeCx1LFt1LmdyaWRTdGFydFswXSx3LnldLFt1Lm9wdGlvbnMueCxyWzFdXSk7YnJlYWs7Y2FzZSJyZWN0YW5nbGUiOmsoeCx1LFt1LmdyaWRTdGFydFswXSx3LnldLFt1Lm9wdGlvbnMueCxyWzFdXSk7YnJlYWs7ZGVmYXVsdDpicmVha31vPXRydWU7YnJlYWt9fX19fWlmKCFvJiZ5LmhpZ2hsaWdodE9iamVjdEluZGV4IT09bnVsbCl7cT15Ll90b29sdGlwRWxlbTt1PXkuZ2V0T2JqZWN0KHkuaGlnaGxpZ2h0T2JqZWN0SW5kZXgpO2lmKHUuZmFkZVRvb2x0aXApe3EuZmFkZU91dCh1LnRvb2x0aXBGYWRlU3BlZWQpfWVsc2V7cS5oaWRlKCl9eS5oaWdobGlnaHRPYmplY3RJbmRleD1udWxsfX1kLmpxcGxvdC5wb3N0SW5pdEhvb2tzLnB1c2goZC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wb3N0UGxvdEluaXQpO2QuanFwbG90LnBvc3REcmF3SG9va3MucHVzaChkLmpxcGxvdC5DYW52YXNPdmVybGF5LnBvc3RQbG90RHJhdyk7ZC5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLnB1c2goWyJqcXBsb3RNb3VzZU1vdmUiLGFdKX0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.canvasTextRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICoKICogaW5jbHVkZWQganNEYXRlIGxpYnJhcnkgYnkgQ2hyaXMgTGVvbmVsbG86CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvCiAqCiAqIGpzRGF0ZSBpcyBjdXJyZW50bHkgYXZhaWxhYmxlIGZvciB1c2UgaW4gYWxsIHBlcnNvbmFsIG9yIGNvbW1lcmNpYWwgcHJvamVjdHMgCiAqIHVuZGVyIGJvdGggdGhlIE1JVCBhbmQgR1BMIHZlcnNpb24gMi4wIGxpY2Vuc2VzLiBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiAKICogY2hvb3NlIHRoZSBsaWNlbnNlIHRoYXQgYmVzdCBzdWl0cyB5b3VyIHByb2plY3QgYW5kIHVzZSBpdCBhY2NvcmRpbmdseS4KICoKICoganNEYXRlIGJvcnJvd3MgbWFueSBjb25jZXB0cyBhbmQgaWRlYXMgZnJvbSB0aGUgRGF0ZSBJbnN0YW5jZSAKICogTWV0aG9kcyBieSBLZW4gU255ZGVyIGFsb25nIHdpdGggc29tZSBwYXJ0cyBvZiBLZW4ncyBhY3R1YWwgY29kZS4KICogCiAqIEtlbidzIG9yaWdpbmFsIERhdGUgSW5zdGFuY2UgTWV0aG9kcyBhbmQgY29weXJpZ2h0IG5vdGljZToKICogCiAqIEtlbiBTbnlkZXIgKGtlbiBkIHNueWRlciBhdCBnbWFpbCBkb3QgY29tKQogKiAyMDA4LTA5LTEwCiAqIHZlcnNpb24gMi4wLjIgKGh0dHA6Ly9rZW5kc255ZGVyLmNvbS9zYW5kYm94L2RhdGUvKSAgICAgCiAqIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24gTGljZW5zZSAzLjAgKGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzMuMC8pCiAqCiAqIGpxcGxvdFRvSW1hZ2UgZnVuY3Rpb24gYmFzZWQgb24gTGFycnkgU2lkZW4ncyBleHBvcnQtanFwbG90LXRvLXBuZy5qcy4KICogTGFycnkgaGFzIGdlbmVyb3VzbHkgZ2l2ZW4gcGVybWlzc2lvbiB0byBhZGFwdCBoaXMgY29kZSBmb3IgaW5jbHVzaW9uCiAqIGludG8ganFQbG90LgogKgogKiBMYXJyeSdzIG9yaWdpbmFsIGNvZGUgY2FuIGJlIGZvdW5kIGhlcmU6CiAqCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9sc2lkZW4vZXhwb3J0LWpxcGxvdC10by1wbmcKICogCiAqIAogKi8KCihmdW5jdGlvbigkKSB7ICAgIAogICAgLy8gVGhpcyBjb2RlIGlzIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgY2FudmFzdGV4dC5qcyBjb2RlLCBjb3B5cmlnaHQgYmVsb3c6CiAgICAvLwogICAgLy8gVGhpcyBjb2RlIGlzIHJlbGVhc2VkIHRvIHRoZSBwdWJsaWMgZG9tYWluIGJ5IEppbSBTdHVkdCwgMjAwNy4KICAgIC8vIEhlIG1heSBrZWVwIHNvbWUgc29ydCBvZiB1cCB0byBkYXRlIGNvcHkgYXQgaHR0cDovL3d3dy5mZWRlcmF0ZWQuY29tL35qaW0vY2FudmFzdGV4dC8KICAgIC8vCiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIgPSBmdW5jdGlvbihvcHRpb25zKXsKICAgICAgICB0aGlzLmZvbnRTdHlsZSA9ICdub3JtYWwnOyAgLy8gbm9ybWFsLCBpdGFsaWMsIG9ibGlxdWUgW25vdCBpbXBsZW1lbnRlZF0KICAgICAgICB0aGlzLmZvbnRWYXJpYW50ID0gJ25vcm1hbCc7ICAgIC8vIG5vcm1hbCwgc21hbGwgY2FwcyBbbm90IGltcGxlbWVudGVkXQogICAgICAgIHRoaXMuZm9udFdlaWdodCA9ICdub3JtYWwnOyAvLyBub3JtYWwsIGJvbGQsIGJvbGRlciwgbGlnaHRlciwgMTAwIC0gOTAwCiAgICAgICAgdGhpcy5mb250U2l6ZSA9ICcxMHB4JzsgCiAgICAgICAgdGhpcy5mb250RmFtaWx5ID0gJ3NhbnMtc2VyaWYnOwogICAgICAgIHRoaXMuZm9udFN0cmV0Y2ggPSAxLjA7CiAgICAgICAgdGhpcy5maWxsU3R5bGUgPSAnIzY2NjY2Nic7CiAgICAgICAgdGhpcy5hbmdsZSA9IDA7CiAgICAgICAgdGhpcy50ZXh0QWxpZ24gPSAnc3RhcnQnOwogICAgICAgIHRoaXMudGV4dEJhc2VsaW5lID0gJ2FscGhhYmV0aWMnOwogICAgICAgIHRoaXMudGV4dDsKICAgICAgICB0aGlzLndpZHRoOwogICAgICAgIHRoaXMuaGVpZ2h0OwogICAgICAgIHRoaXMucHQycHggPSAxLjI4OwoKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgICAgICB0aGlzLm5vcm1hbGl6ZWRGb250U2l6ZSA9IHRoaXMubm9ybWFsaXplRm9udFNpemUodGhpcy5mb250U2l6ZSk7CiAgICAgICAgdGhpcy5zZXRIZWlnaHQoKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgICAgICB0aGlzLm5vcm1hbGl6ZWRGb250U2l6ZSA9IHRoaXMubm9ybWFsaXplRm9udFNpemUodGhpcy5mb250U2l6ZSk7CiAgICAgICAgdGhpcy5zZXRIZWlnaHQoKTsKICAgIH07CiAgICAKICAgIC8vIGNvbnZlcnQgY3NzIHNwZWMgaW50byBwb2ludCBzaXplCiAgICAvLyByZXR1cm5zIGZsb2F0CiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLm5vcm1hbGl6ZUZvbnRTaXplID0gZnVuY3Rpb24oc3opIHsKICAgICAgICBzeiA9IFN0cmluZyhzeik7CiAgICAgICAgdmFyIG4gPSBwYXJzZUZsb2F0KHN6KTsKICAgICAgICBpZiAoc3ouaW5kZXhPZigncHgnKSA+IC0xKSB7CiAgICAgICAgICAgIHJldHVybiBuL3RoaXMucHQycHg7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHN6LmluZGV4T2YoJ3B0JykgPiAtMSkgewogICAgICAgICAgICByZXR1cm4gbjsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoc3ouaW5kZXhPZignZW0nKSA+IC0xKSB7CiAgICAgICAgICAgIHJldHVybiBuKjEyOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChzei5pbmRleE9mKCclJykgPiAtMSkgewogICAgICAgICAgICByZXR1cm4gbioxMi8xMDA7CiAgICAgICAgfQogICAgICAgIC8vIGRlZmF1bHQgdG8gcGl4ZWxzOwogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gbi90aGlzLnB0MnB4OwogICAgICAgIH0KICAgIH07CiAgICAKICAgIAogICAgJC5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLnByb3RvdHlwZS5mb250V2VpZ2h0MkZsb2F0ID0gZnVuY3Rpb24odykgewogICAgICAgIC8vIHcgPSBub3JtYWwgfCBib2xkIHwgYm9sZGVyIHwgbGlnaHRlciB8IDEwMCB8IDIwMCB8IDMwMCB8IDQwMCB8IDUwMCB8IDYwMCB8IDcwMCB8IDgwMCB8IDkwMAogICAgICAgIC8vIHJldHVybiB2YWx1ZXMgYWRqdXN0ZWQgZm9yIEhlcnNoZXkgZm9udC4KICAgICAgICBpZiAoTnVtYmVyKHcpKSB7CiAgICAgICAgICAgIHJldHVybiB3LzQwMDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHN3aXRjaCAodykgewogICAgICAgICAgICAgICAgY2FzZSAnbm9ybWFsJzoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2JvbGQnOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAxLjc1OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnYm9sZGVyJzoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMi4yNTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2xpZ2h0ZXInOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAwLjc1OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0gICAKICAgICAgICB9CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmdldFRleHQgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy50ZXh0OwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLnByb3RvdHlwZS5zZXRUZXh0ID0gZnVuY3Rpb24odCwgY3R4KSB7CiAgICAgICAgdGhpcy50ZXh0ID0gdDsKICAgICAgICB0aGlzLnNldFdpZHRoKGN0eCk7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmdldFdpZHRoID0gZnVuY3Rpb24oY3R4KSB7CiAgICAgICAgcmV0dXJuIHRoaXMud2lkdGg7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLnNldFdpZHRoID0gZnVuY3Rpb24oY3R4LCB3KSB7CiAgICAgICAgaWYgKCF3KSB7CiAgICAgICAgICAgIHRoaXMud2lkdGggPSB0aGlzLm1lYXN1cmUoY3R4LCB0aGlzLnRleHQpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdGhpcy53aWR0aCA9IHc7ICAgCiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzOwogICAgfTsKICAgIAogICAgLy8gcmV0dXJuIGhlaWdodCBpbiBwaXhlbHMuCiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmdldEhlaWdodCA9IGZ1bmN0aW9uKGN0eCkgewogICAgICAgIHJldHVybiB0aGlzLmhlaWdodDsKICAgIH07CiAgICAKICAgIC8vIHcgLSBoZWlnaHQgaW4gcHQKICAgIC8vIHNldCBoZWlnaCBpbiBweAogICAgJC5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLnByb3RvdHlwZS5zZXRIZWlnaHQgPSBmdW5jdGlvbih3KSB7CiAgICAgICAgaWYgKCF3KSB7CiAgICAgICAgICAgIC8vaGVpZ2h0ID0gdGhpcy5mb250U2l6ZSAvMC43NTsKICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSB0aGlzLm5vcm1hbGl6ZWRGb250U2l6ZSAqIHRoaXMucHQycHg7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICB0aGlzLmhlaWdodCA9IHc7ICAgCiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzOwogICAgfTsKCiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmxldHRlciA9IGZ1bmN0aW9uIChjaCkKICAgIHsKICAgICAgICByZXR1cm4gdGhpcy5sZXR0ZXJzW2NoXTsKICAgIH07CgogICAgJC5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLnByb3RvdHlwZS5hc2NlbnQgPSBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuIHRoaXMubm9ybWFsaXplZEZvbnRTaXplOwogICAgfTsKCiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmRlc2NlbnQgPSBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuIDcuMCp0aGlzLm5vcm1hbGl6ZWRGb250U2l6ZS8yNS4wOwogICAgfTsKCiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLm1lYXN1cmUgPSBmdW5jdGlvbihjdHgsIHN0cikKICAgIHsKICAgICAgICB2YXIgdG90YWwgPSAwOwogICAgICAgIHZhciBsZW4gPSBzdHIubGVuZ3RoOwogCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICAgICAgICB2YXIgYyA9IHRoaXMubGV0dGVyKHN0ci5jaGFyQXQoaSkpOwogICAgICAgICAgICBpZiAoYykgewogICAgICAgICAgICAgICAgdG90YWwgKz0gYy53aWR0aCAqIHRoaXMubm9ybWFsaXplZEZvbnRTaXplIC8gMjUuMCAqIHRoaXMuZm9udFN0cmV0Y2g7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRvdGFsOwogICAgfTsKCiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjdHgsc3RyKQogICAgewogICAgICAgIHZhciB4ID0gMDsKICAgICAgICAvLyBsZWF2ZSByb29tIGF0IGJvdHRvbSBmb3IgZGVzY2VuZGVycy4KICAgICAgICB2YXIgeSA9IHRoaXMuaGVpZ2h0KjAuNzI7CiAgICAgICAgIHZhciB0b3RhbCA9IDA7CiAgICAgICAgIHZhciBsZW4gPSBzdHIubGVuZ3RoOwogICAgICAgICB2YXIgbWFnID0gdGhpcy5ub3JtYWxpemVkRm9udFNpemUgLyAyNS4wOwoKICAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICAgdmFyIHR4LCB0eTsKICAgICAgICAgCiAgICAgICAgIC8vIDFzdCBxdWFkcmFudAogICAgICAgICBpZiAoKC1NYXRoLlBJLzIgPD0gdGhpcy5hbmdsZSAmJiB0aGlzLmFuZ2xlIDw9IDApIHx8IChNYXRoLlBJKjMvMiA8PSB0aGlzLmFuZ2xlICYmIHRoaXMuYW5nbGUgPD0gTWF0aC5QSSoyKSkgewogICAgICAgICAgICAgdHggPSAwOwogICAgICAgICAgICAgdHkgPSAtTWF0aC5zaW4odGhpcy5hbmdsZSkgKiB0aGlzLndpZHRoOwogICAgICAgICB9CiAgICAgICAgIC8vIDR0aCBxdWFkcmFudAogICAgICAgICBlbHNlIGlmICgoMCA8IHRoaXMuYW5nbGUgJiYgdGhpcy5hbmdsZSA8PSBNYXRoLlBJLzIpIHx8ICgtTWF0aC5QSSoyIDw9IHRoaXMuYW5nbGUgJiYgdGhpcy5hbmdsZSA8PSAtTWF0aC5QSSozLzIpKSB7CiAgICAgICAgICAgICB0eCA9IE1hdGguc2luKHRoaXMuYW5nbGUpICogdGhpcy5oZWlnaHQ7CiAgICAgICAgICAgICB0eSA9IDA7CiAgICAgICAgIH0KICAgICAgICAgLy8gMm5kIHF1YWRyYW50CiAgICAgICAgIGVsc2UgaWYgKCgtTWF0aC5QSSA8IHRoaXMuYW5nbGUgJiYgdGhpcy5hbmdsZSA8IC1NYXRoLlBJLzIpIHx8IChNYXRoLlBJIDw9IHRoaXMuYW5nbGUgJiYgdGhpcy5hbmdsZSA8PSBNYXRoLlBJKjMvMikpIHsKICAgICAgICAgICAgIHR4ID0gLU1hdGguY29zKHRoaXMuYW5nbGUpICogdGhpcy53aWR0aDsKICAgICAgICAgICAgIHR5ID0gLU1hdGguc2luKHRoaXMuYW5nbGUpICogdGhpcy53aWR0aCAtIE1hdGguY29zKHRoaXMuYW5nbGUpICogdGhpcy5oZWlnaHQ7CiAgICAgICAgIH0KICAgICAgICAgLy8gM3JkIHF1YWRyYW50CiAgICAgICAgIGVsc2UgaWYgKCgtTWF0aC5QSSozLzIgPCB0aGlzLmFuZ2xlICYmIHRoaXMuYW5nbGUgPCBNYXRoLlBJKSB8fCAoTWF0aC5QSS8yIDwgdGhpcy5hbmdsZSAmJiB0aGlzLmFuZ2xlIDwgTWF0aC5QSSkpIHsKICAgICAgICAgICAgIHR4ID0gTWF0aC5zaW4odGhpcy5hbmdsZSkgKiB0aGlzLmhlaWdodCAtIE1hdGguY29zKHRoaXMuYW5nbGUpKnRoaXMud2lkdGg7CiAgICAgICAgICAgICB0eSA9IC1NYXRoLmNvcyh0aGlzLmFuZ2xlKSAqIHRoaXMuaGVpZ2h0OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSB0aGlzLmZpbGxTdHlsZTsKICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IHRoaXMuZmlsbFN0eWxlOwogICAgICAgICBjdHgudHJhbnNsYXRlKHR4LCB0eSk7CiAgICAgICAgIGN0eC5yb3RhdGUodGhpcy5hbmdsZSk7CiAgICAgICAgIGN0eC5saW5lQ2FwID0gInJvdW5kIjsKICAgICAgICAgLy8gbXVsdGlwbGllciB3YXMgMi4wCiAgICAgICAgIHZhciBmYWN0ID0gKHRoaXMubm9ybWFsaXplZEZvbnRTaXplID4gMzApID8gMi4wIDogMiArICgzMCAtIHRoaXMubm9ybWFsaXplZEZvbnRTaXplKS8yMDsKICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IGZhY3QgKiBtYWcgKiB0aGlzLmZvbnRXZWlnaHQyRmxvYXQodGhpcy5mb250V2VpZ2h0KTsKICAgICAgICAgCiAgICAgICAgIGZvciAoIHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgICAgIHZhciBjID0gdGhpcy5sZXR0ZXIoIHN0ci5jaGFyQXQoaSkpOwogICAgICAgICAgICBpZiAoICFjKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwoKICAgICAgICAgICAgdmFyIHBlblVwID0gMTsKICAgICAgICAgICAgdmFyIG5lZWRTdHJva2UgPSAwOwogICAgICAgICAgICBmb3IgKCB2YXIgaiA9IDA7IGogPCBjLnBvaW50cy5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgIHZhciBhID0gYy5wb2ludHNbal07CiAgICAgICAgICAgICAgaWYgKCBhWzBdID09IC0xICYmIGFbMV0gPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgcGVuVXAgPSAxOwogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKCBwZW5VcCkgewogICAgICAgICAgICAgICAgICBjdHgubW92ZVRvKCB4ICsgYVswXSptYWcqdGhpcy5mb250U3RyZXRjaCwgeSAtIGFbMV0qbWFnKTsKICAgICAgICAgICAgICAgICAgcGVuVXAgPSBmYWxzZTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBjdHgubGluZVRvKCB4ICsgYVswXSptYWcqdGhpcy5mb250U3RyZXRjaCwgeSAtIGFbMV0qbWFnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY3R4LnN0cm9rZSgpOwogICAgICAgICAgICB4ICs9IGMud2lkdGgqbWFnKnRoaXMuZm9udFN0cmV0Y2g7CiAgICAgICAgIH0KICAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgICAgICAgcmV0dXJuIHRvdGFsOwogICAgfTsKCiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmxldHRlcnMgPSB7CiAgICAgICAgICcgJzogeyB3aWR0aDogMTYsIHBvaW50czogW10gfSwKICAgICAgICAgJyEnOiB7IHdpZHRoOiAxMCwgcG9pbnRzOiBbWzUsMjFdLFs1LDddLFstMSwtMV0sWzUsMl0sWzQsMV0sWzUsMF0sWzYsMV0sWzUsMl1dIH0sCiAgICAgICAgICciJzogeyB3aWR0aDogMTYsIHBvaW50czogW1s0LDIxXSxbNCwxNF0sWy0xLC0xXSxbMTIsMjFdLFsxMiwxNF1dIH0sCiAgICAgICAgICcjJzogeyB3aWR0aDogMjEsIHBvaW50czogW1sxMSwyNV0sWzQsLTddLFstMSwtMV0sWzE3LDI1XSxbMTAsLTddLFstMSwtMV0sWzQsMTJdLFsxOCwxMl0sWy0xLC0xXSxbMyw2XSxbMTcsNl1dIH0sCiAgICAgICAgICckJzogeyB3aWR0aDogMjAsIHBvaW50czogW1s4LDI1XSxbOCwtNF0sWy0xLC0xXSxbMTIsMjVdLFsxMiwtNF0sWy0xLC0xXSxbMTcsMThdLFsxNSwyMF0sWzEyLDIxXSxbOCwyMV0sWzUsMjBdLFszLDE4XSxbMywxNl0sWzQsMTRdLFs1LDEzXSxbNywxMl0sWzEzLDEwXSxbMTUsOV0sWzE2LDhdLFsxNyw2XSxbMTcsM10sWzE1LDFdLFsxMiwwXSxbOCwwXSxbNSwxXSxbMywzXV0gfSwKICAgICAgICAgJyUnOiB7IHdpZHRoOiAyNCwgcG9pbnRzOiBbWzIxLDIxXSxbMywwXSxbLTEsLTFdLFs4LDIxXSxbMTAsMTldLFsxMCwxN10sWzksMTVdLFs3LDE0XSxbNSwxNF0sWzMsMTZdLFszLDE4XSxbNCwyMF0sWzYsMjFdLFs4LDIxXSxbMTAsMjBdLFsxMywxOV0sWzE2LDE5XSxbMTksMjBdLFsyMSwyMV0sWy0xLC0xXSxbMTcsN10sWzE1LDZdLFsxNCw0XSxbMTQsMl0sWzE2LDBdLFsxOCwwXSxbMjAsMV0sWzIxLDNdLFsyMSw1XSxbMTksN10sWzE3LDddXSB9LAogICAgICAgICAnJic6IHsgd2lkdGg6IDI2LCBwb2ludHM6IFtbMjMsMTJdLFsyMywxM10sWzIyLDE0XSxbMjEsMTRdLFsyMCwxM10sWzE5LDExXSxbMTcsNl0sWzE1LDNdLFsxMywxXSxbMTEsMF0sWzcsMF0sWzUsMV0sWzQsMl0sWzMsNF0sWzMsNl0sWzQsOF0sWzUsOV0sWzEyLDEzXSxbMTMsMTRdLFsxNCwxNl0sWzE0LDE4XSxbMTMsMjBdLFsxMSwyMV0sWzksMjBdLFs4LDE4XSxbOCwxNl0sWzksMTNdLFsxMSwxMF0sWzE2LDNdLFsxOCwxXSxbMjAsMF0sWzIyLDBdLFsyMywxXSxbMjMsMl1dIH0sCiAgICAgICAgICdcJyc6IHsgd2lkdGg6IDEwLCBwb2ludHM6IFtbNSwxOV0sWzQsMjBdLFs1LDIxXSxbNiwyMF0sWzYsMThdLFs1LDE2XSxbNCwxNV1dIH0sCiAgICAgICAgICcoJzogeyB3aWR0aDogMTQsIHBvaW50czogW1sxMSwyNV0sWzksMjNdLFs3LDIwXSxbNSwxNl0sWzQsMTFdLFs0LDddLFs1LDJdLFs3LC0yXSxbOSwtNV0sWzExLC03XV0gfSwKICAgICAgICAgJyknOiB7IHdpZHRoOiAxNCwgcG9pbnRzOiBbWzMsMjVdLFs1LDIzXSxbNywyMF0sWzksMTZdLFsxMCwxMV0sWzEwLDddLFs5LDJdLFs3LC0yXSxbNSwtNV0sWzMsLTddXSB9LAogICAgICAgICAnKic6IHsgd2lkdGg6IDE2LCBwb2ludHM6IFtbOCwyMV0sWzgsOV0sWy0xLC0xXSxbMywxOF0sWzEzLDEyXSxbLTEsLTFdLFsxMywxOF0sWzMsMTJdXSB9LAogICAgICAgICAnKyc6IHsgd2lkdGg6IDI2LCBwb2ludHM6IFtbMTMsMThdLFsxMywwXSxbLTEsLTFdLFs0LDldLFsyMiw5XV0gfSwKICAgICAgICAgJywnOiB7IHdpZHRoOiAxMCwgcG9pbnRzOiBbWzYsMV0sWzUsMF0sWzQsMV0sWzUsMl0sWzYsMV0sWzYsLTFdLFs1LC0zXSxbNCwtNF1dIH0sCiAgICAgICAgICctJzogeyB3aWR0aDogMTgsIHBvaW50czogW1s2LDldLFsxMiw5XV0gfSwKICAgICAgICAgJy4nOiB7IHdpZHRoOiAxMCwgcG9pbnRzOiBbWzUsMl0sWzQsMV0sWzUsMF0sWzYsMV0sWzUsMl1dIH0sCiAgICAgICAgICcvJzogeyB3aWR0aDogMjIsIHBvaW50czogW1syMCwyNV0sWzIsLTddXSB9LAogICAgICAgICAnMCc6IHsgd2lkdGg6IDIwLCBwb2ludHM6IFtbOSwyMV0sWzYsMjBdLFs0LDE3XSxbMywxMl0sWzMsOV0sWzQsNF0sWzYsMV0sWzksMF0sWzExLDBdLFsxNCwxXSxbMTYsNF0sWzE3LDldLFsxNywxMl0sWzE2LDE3XSxbMTQsMjBdLFsxMSwyMV0sWzksMjFdXSB9LAogICAgICAgICAnMSc6IHsgd2lkdGg6IDIwLCBwb2ludHM6IFtbNiwxN10sWzgsMThdLFsxMSwyMV0sWzExLDBdXSB9LAogICAgICAgICAnMic6IHsgd2lkdGg6IDIwLCBwb2ludHM6IFtbNCwxNl0sWzQsMTddLFs1LDE5XSxbNiwyMF0sWzgsMjFdLFsxMiwyMV0sWzE0LDIwXSxbMTUsMTldLFsxNiwxN10sWzE2LDE1XSxbMTUsMTNdLFsxMywxMF0sWzMsMF0sWzE3LDBdXSB9LAogICAgICAgICAnMyc6IHsgd2lkdGg6IDIwLCBwb2ludHM6IFtbNSwyMV0sWzE2LDIxXSxbMTAsMTNdLFsxMywxM10sWzE1LDEyXSxbMTYsMTFdLFsxNyw4XSxbMTcsNl0sWzE2LDNdLFsxNCwxXSxbMTEsMF0sWzgsMF0sWzUsMV0sWzQsMl0sWzMsNF1dIH0sCiAgICAgICAgICc0JzogeyB3aWR0aDogMjAsIHBvaW50czogW1sxMywyMV0sWzMsN10sWzE4LDddLFstMSwtMV0sWzEzLDIxXSxbMTMsMF1dIH0sCiAgICAgICAgICc1JzogeyB3aWR0aDogMjAsIHBvaW50czogW1sxNSwyMV0sWzUsMjFdLFs0LDEyXSxbNSwxM10sWzgsMTRdLFsxMSwxNF0sWzE0LDEzXSxbMTYsMTFdLFsxNyw4XSxbMTcsNl0sWzE2LDNdLFsxNCwxXSxbMTEsMF0sWzgsMF0sWzUsMV0sWzQsMl0sWzMsNF1dIH0sCiAgICAgICAgICc2JzogeyB3aWR0aDogMjAsIHBvaW50czogW1sxNiwxOF0sWzE1LDIwXSxbMTIsMjFdLFsxMCwyMV0sWzcsMjBdLFs1LDE3XSxbNCwxMl0sWzQsN10sWzUsM10sWzcsMV0sWzEwLDBdLFsxMSwwXSxbMTQsMV0sWzE2LDNdLFsxNyw2XSxbMTcsN10sWzE2LDEwXSxbMTQsMTJdLFsxMSwxM10sWzEwLDEzXSxbNywxMl0sWzUsMTBdLFs0LDddXSB9LAogICAgICAgICAnNyc6IHsgd2lkdGg6IDIwLCBwb2ludHM6IFtbMTcsMjFdLFs3LDBdLFstMSwtMV0sWzMsMjFdLFsxNywyMV1dIH0sCiAgICAgICAgICc4JzogeyB3aWR0aDogMjAsIHBvaW50czogW1s4LDIxXSxbNSwyMF0sWzQsMThdLFs0LDE2XSxbNSwxNF0sWzcsMTNdLFsxMSwxMl0sWzE0LDExXSxbMTYsOV0sWzE3LDddLFsxNyw0XSxbMTYsMl0sWzE1LDFdLFsxMiwwXSxbOCwwXSxbNSwxXSxbNCwyXSxbMyw0XSxbMyw3XSxbNCw5XSxbNiwxMV0sWzksMTJdLFsxMywxM10sWzE1LDE0XSxbMTYsMTZdLFsxNiwxOF0sWzE1LDIwXSxbMTIsMjFdLFs4LDIxXV0gfSwKICAgICAgICAgJzknOiB7IHdpZHRoOiAyMCwgcG9pbnRzOiBbWzE2LDE0XSxbMTUsMTFdLFsxMyw5XSxbMTAsOF0sWzksOF0sWzYsOV0sWzQsMTFdLFszLDE0XSxbMywxNV0sWzQsMThdLFs2LDIwXSxbOSwyMV0sWzEwLDIxXSxbMTMsMjBdLFsxNSwxOF0sWzE2LDE0XSxbMTYsOV0sWzE1LDRdLFsxMywxXSxbMTAsMF0sWzgsMF0sWzUsMV0sWzQsM11dIH0sCiAgICAgICAgICc6JzogeyB3aWR0aDogMTAsIHBvaW50czogW1s1LDE0XSxbNCwxM10sWzUsMTJdLFs2LDEzXSxbNSwxNF0sWy0xLC0xXSxbNSwyXSxbNCwxXSxbNSwwXSxbNiwxXSxbNSwyXV0gfSwKICAgICAgICAgJzsnOiB7IHdpZHRoOiAxMCwgcG9pbnRzOiBbWzUsMTRdLFs0LDEzXSxbNSwxMl0sWzYsMTNdLFs1LDE0XSxbLTEsLTFdLFs2LDFdLFs1LDBdLFs0LDFdLFs1LDJdLFs2LDFdLFs2LC0xXSxbNSwtM10sWzQsLTRdXSB9LAogICAgICAgICAnPCc6IHsgd2lkdGg6IDI0LCBwb2ludHM6IFtbMjAsMThdLFs0LDldLFsyMCwwXV0gfSwKICAgICAgICAgJz0nOiB7IHdpZHRoOiAyNiwgcG9pbnRzOiBbWzQsMTJdLFsyMiwxMl0sWy0xLC0xXSxbNCw2XSxbMjIsNl1dIH0sCiAgICAgICAgICc+JzogeyB3aWR0aDogMjQsIHBvaW50czogW1s0LDE4XSxbMjAsOV0sWzQsMF1dIH0sCiAgICAgICAgICc/JzogeyB3aWR0aDogMTgsIHBvaW50czogW1szLDE2XSxbMywxN10sWzQsMTldLFs1LDIwXSxbNywyMV0sWzExLDIxXSxbMTMsMjBdLFsxNCwxOV0sWzE1LDE3XSxbMTUsMTVdLFsxNCwxM10sWzEzLDEyXSxbOSwxMF0sWzksN10sWy0xLC0xXSxbOSwyXSxbOCwxXSxbOSwwXSxbMTAsMV0sWzksMl1dIH0sCiAgICAgICAgICdAJzogeyB3aWR0aDogMjcsIHBvaW50czogW1sxOCwxM10sWzE3LDE1XSxbMTUsMTZdLFsxMiwxNl0sWzEwLDE1XSxbOSwxNF0sWzgsMTFdLFs4LDhdLFs5LDZdLFsxMSw1XSxbMTQsNV0sWzE2LDZdLFsxNyw4XSxbLTEsLTFdLFsxMiwxNl0sWzEwLDE0XSxbOSwxMV0sWzksOF0sWzEwLDZdLFsxMSw1XSxbLTEsLTFdLFsxOCwxNl0sWzE3LDhdLFsxNyw2XSxbMTksNV0sWzIxLDVdLFsyMyw3XSxbMjQsMTBdLFsyNCwxMl0sWzIzLDE1XSxbMjIsMTddLFsyMCwxOV0sWzE4LDIwXSxbMTUsMjFdLFsxMiwyMV0sWzksMjBdLFs3LDE5XSxbNSwxN10sWzQsMTVdLFszLDEyXSxbMyw5XSxbNCw2XSxbNSw0XSxbNywyXSxbOSwxXSxbMTIsMF0sWzE1LDBdLFsxOCwxXSxbMjAsMl0sWzIxLDNdLFstMSwtMV0sWzE5LDE2XSxbMTgsOF0sWzE4LDZdLFsxOSw1XV0gfSwKICAgICAgICAgJ0EnOiB7IHdpZHRoOiAxOCwgcG9pbnRzOiBbWzksMjFdLFsxLDBdLFstMSwtMV0sWzksMjFdLFsxNywwXSxbLTEsLTFdLFs0LDddLFsxNCw3XV0gfSwKICAgICAgICAgJ0InOiB7IHdpZHRoOiAyMSwgcG9pbnRzOiBbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzQsMjFdLFsxMywyMV0sWzE2LDIwXSxbMTcsMTldLFsxOCwxN10sWzE4LDE1XSxbMTcsMTNdLFsxNiwxMl0sWzEzLDExXSxbLTEsLTFdLFs0LDExXSxbMTMsMTFdLFsxNiwxMF0sWzE3LDldLFsxOCw3XSxbMTgsNF0sWzE3LDJdLFsxNiwxXSxbMTMsMF0sWzQsMF1dIH0sCiAgICAgICAgICdDJzogeyB3aWR0aDogMjEsIHBvaW50czogW1sxOCwxNl0sWzE3LDE4XSxbMTUsMjBdLFsxMywyMV0sWzksMjFdLFs3LDIwXSxbNSwxOF0sWzQsMTZdLFszLDEzXSxbMyw4XSxbNCw1XSxbNSwzXSxbNywxXSxbOSwwXSxbMTMsMF0sWzE1LDFdLFsxNywzXSxbMTgsNV1dIH0sCiAgICAgICAgICdEJzogeyB3aWR0aDogMjEsIHBvaW50czogW1s0LDIxXSxbNCwwXSxbLTEsLTFdLFs0LDIxXSxbMTEsMjFdLFsxNCwyMF0sWzE2LDE4XSxbMTcsMTZdLFsxOCwxM10sWzE4LDhdLFsxNyw1XSxbMTYsM10sWzE0LDFdLFsxMSwwXSxbNCwwXV0gfSwKICAgICAgICAgJ0UnOiB7IHdpZHRoOiAxOSwgcG9pbnRzOiBbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzQsMjFdLFsxNywyMV0sWy0xLC0xXSxbNCwxMV0sWzEyLDExXSxbLTEsLTFdLFs0LDBdLFsxNywwXV0gfSwKICAgICAgICAgJ0YnOiB7IHdpZHRoOiAxOCwgcG9pbnRzOiBbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzQsMjFdLFsxNywyMV0sWy0xLC0xXSxbNCwxMV0sWzEyLDExXV0gfSwKICAgICAgICAgJ0cnOiB7IHdpZHRoOiAyMSwgcG9pbnRzOiBbWzE4LDE2XSxbMTcsMThdLFsxNSwyMF0sWzEzLDIxXSxbOSwyMV0sWzcsMjBdLFs1LDE4XSxbNCwxNl0sWzMsMTNdLFszLDhdLFs0LDVdLFs1LDNdLFs3LDFdLFs5LDBdLFsxMywwXSxbMTUsMV0sWzE3LDNdLFsxOCw1XSxbMTgsOF0sWy0xLC0xXSxbMTMsOF0sWzE4LDhdXSB9LAogICAgICAgICAnSCc6IHsgd2lkdGg6IDIyLCBwb2ludHM6IFtbNCwyMV0sWzQsMF0sWy0xLC0xXSxbMTgsMjFdLFsxOCwwXSxbLTEsLTFdLFs0LDExXSxbMTgsMTFdXSB9LAogICAgICAgICAnSSc6IHsgd2lkdGg6IDgsIHBvaW50czogW1s0LDIxXSxbNCwwXV0gfSwKICAgICAgICAgJ0onOiB7IHdpZHRoOiAxNiwgcG9pbnRzOiBbWzEyLDIxXSxbMTIsNV0sWzExLDJdLFsxMCwxXSxbOCwwXSxbNiwwXSxbNCwxXSxbMywyXSxbMiw1XSxbMiw3XV0gfSwKICAgICAgICAgJ0snOiB7IHdpZHRoOiAyMSwgcG9pbnRzOiBbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzE4LDIxXSxbNCw3XSxbLTEsLTFdLFs5LDEyXSxbMTgsMF1dIH0sCiAgICAgICAgICdMJzogeyB3aWR0aDogMTcsIHBvaW50czogW1s0LDIxXSxbNCwwXSxbLTEsLTFdLFs0LDBdLFsxNiwwXV0gfSwKICAgICAgICAgJ00nOiB7IHdpZHRoOiAyNCwgcG9pbnRzOiBbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzQsMjFdLFsxMiwwXSxbLTEsLTFdLFsyMCwyMV0sWzEyLDBdLFstMSwtMV0sWzIwLDIxXSxbMjAsMF1dIH0sCiAgICAgICAgICdOJzogeyB3aWR0aDogMjIsIHBvaW50czogW1s0LDIxXSxbNCwwXSxbLTEsLTFdLFs0LDIxXSxbMTgsMF0sWy0xLC0xXSxbMTgsMjFdLFsxOCwwXV0gfSwKICAgICAgICAgJ08nOiB7IHdpZHRoOiAyMiwgcG9pbnRzOiBbWzksMjFdLFs3LDIwXSxbNSwxOF0sWzQsMTZdLFszLDEzXSxbMyw4XSxbNCw1XSxbNSwzXSxbNywxXSxbOSwwXSxbMTMsMF0sWzE1LDFdLFsxNywzXSxbMTgsNV0sWzE5LDhdLFsxOSwxM10sWzE4LDE2XSxbMTcsMThdLFsxNSwyMF0sWzEzLDIxXSxbOSwyMV1dIH0sCiAgICAgICAgICdQJzogeyB3aWR0aDogMjEsIHBvaW50czogW1s0LDIxXSxbNCwwXSxbLTEsLTFdLFs0LDIxXSxbMTMsMjFdLFsxNiwyMF0sWzE3LDE5XSxbMTgsMTddLFsxOCwxNF0sWzE3LDEyXSxbMTYsMTFdLFsxMywxMF0sWzQsMTBdXSB9LAogICAgICAgICAnUSc6IHsgd2lkdGg6IDIyLCBwb2ludHM6IFtbOSwyMV0sWzcsMjBdLFs1LDE4XSxbNCwxNl0sWzMsMTNdLFszLDhdLFs0LDVdLFs1LDNdLFs3LDFdLFs5LDBdLFsxMywwXSxbMTUsMV0sWzE3LDNdLFsxOCw1XSxbMTksOF0sWzE5LDEzXSxbMTgsMTZdLFsxNywxOF0sWzE1LDIwXSxbMTMsMjFdLFs5LDIxXSxbLTEsLTFdLFsxMiw0XSxbMTgsLTJdXSB9LAogICAgICAgICAnUic6IHsgd2lkdGg6IDIxLCBwb2ludHM6IFtbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwyMV0sWzEzLDIxXSxbMTYsMjBdLFsxNywxOV0sWzE4LDE3XSxbMTgsMTVdLFsxNywxM10sWzE2LDEyXSxbMTMsMTFdLFs0LDExXSxbLTEsLTFdLFsxMSwxMV0sWzE4LDBdXSB9LAogICAgICAgICAnUyc6IHsgd2lkdGg6IDIwLCBwb2ludHM6IFtbMTcsMThdLFsxNSwyMF0sWzEyLDIxXSxbOCwyMV0sWzUsMjBdLFszLDE4XSxbMywxNl0sWzQsMTRdLFs1LDEzXSxbNywxMl0sWzEzLDEwXSxbMTUsOV0sWzE2LDhdLFsxNyw2XSxbMTcsM10sWzE1LDFdLFsxMiwwXSxbOCwwXSxbNSwxXSxbMywzXV0gfSwKICAgICAgICAgJ1QnOiB7IHdpZHRoOiAxNiwgcG9pbnRzOiBbWzgsMjFdLFs4LDBdLFstMSwtMV0sWzEsMjFdLFsxNSwyMV1dIH0sCiAgICAgICAgICdVJzogeyB3aWR0aDogMjIsIHBvaW50czogW1s0LDIxXSxbNCw2XSxbNSwzXSxbNywxXSxbMTAsMF0sWzEyLDBdLFsxNSwxXSxbMTcsM10sWzE4LDZdLFsxOCwyMV1dIH0sCiAgICAgICAgICdWJzogeyB3aWR0aDogMTgsIHBvaW50czogW1sxLDIxXSxbOSwwXSxbLTEsLTFdLFsxNywyMV0sWzksMF1dIH0sCiAgICAgICAgICdXJzogeyB3aWR0aDogMjQsIHBvaW50czogW1syLDIxXSxbNywwXSxbLTEsLTFdLFsxMiwyMV0sWzcsMF0sWy0xLC0xXSxbMTIsMjFdLFsxNywwXSxbLTEsLTFdLFsyMiwyMV0sWzE3LDBdXSB9LAogICAgICAgICAnWCc6IHsgd2lkdGg6IDIwLCBwb2ludHM6IFtbMywyMV0sWzE3LDBdLFstMSwtMV0sWzE3LDIxXSxbMywwXV0gfSwKICAgICAgICAgJ1knOiB7IHdpZHRoOiAxOCwgcG9pbnRzOiBbWzEsMjFdLFs5LDExXSxbOSwwXSxbLTEsLTFdLFsxNywyMV0sWzksMTFdXSB9LAogICAgICAgICAnWic6IHsgd2lkdGg6IDIwLCBwb2ludHM6IFtbMTcsMjFdLFszLDBdLFstMSwtMV0sWzMsMjFdLFsxNywyMV0sWy0xLC0xXSxbMywwXSxbMTcsMF1dIH0sCiAgICAgICAgICdbJzogeyB3aWR0aDogMTQsIHBvaW50czogW1s0LDI1XSxbNCwtN10sWy0xLC0xXSxbNSwyNV0sWzUsLTddLFstMSwtMV0sWzQsMjVdLFsxMSwyNV0sWy0xLC0xXSxbNCwtN10sWzExLC03XV0gfSwKICAgICAgICAgJ1xcJzogeyB3aWR0aDogMTQsIHBvaW50czogW1swLDIxXSxbMTQsLTNdXSB9LAogICAgICAgICAnXSc6IHsgd2lkdGg6IDE0LCBwb2ludHM6IFtbOSwyNV0sWzksLTddLFstMSwtMV0sWzEwLDI1XSxbMTAsLTddLFstMSwtMV0sWzMsMjVdLFsxMCwyNV0sWy0xLC0xXSxbMywtN10sWzEwLC03XV0gfSwKICAgICAgICAgJ14nOiB7IHdpZHRoOiAxNiwgcG9pbnRzOiBbWzYsMTVdLFs4LDE4XSxbMTAsMTVdLFstMSwtMV0sWzMsMTJdLFs4LDE3XSxbMTMsMTJdLFstMSwtMV0sWzgsMTddLFs4LDBdXSB9LAogICAgICAgICAnXyc6IHsgd2lkdGg6IDE2LCBwb2ludHM6IFtbMCwtMl0sWzE2LC0yXV0gfSwKICAgICAgICAgJ2AnOiB7IHdpZHRoOiAxMCwgcG9pbnRzOiBbWzYsMjFdLFs1LDIwXSxbNCwxOF0sWzQsMTZdLFs1LDE1XSxbNiwxNl0sWzUsMTddXSB9LAogICAgICAgICAnYSc6IHsgd2lkdGg6IDE5LCBwb2ludHM6IFtbMTUsMTRdLFsxNSwwXSxbLTEsLTFdLFsxNSwxMV0sWzEzLDEzXSxbMTEsMTRdLFs4LDE0XSxbNiwxM10sWzQsMTFdLFszLDhdLFszLDZdLFs0LDNdLFs2LDFdLFs4LDBdLFsxMSwwXSxbMTMsMV0sWzE1LDNdXSB9LAogICAgICAgICAnYic6IHsgd2lkdGg6IDE5LCBwb2ludHM6IFtbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwxMV0sWzYsMTNdLFs4LDE0XSxbMTEsMTRdLFsxMywxM10sWzE1LDExXSxbMTYsOF0sWzE2LDZdLFsxNSwzXSxbMTMsMV0sWzExLDBdLFs4LDBdLFs2LDFdLFs0LDNdXSB9LAogICAgICAgICAnYyc6IHsgd2lkdGg6IDE4LCBwb2ludHM6IFtbMTUsMTFdLFsxMywxM10sWzExLDE0XSxbOCwxNF0sWzYsMTNdLFs0LDExXSxbMyw4XSxbMyw2XSxbNCwzXSxbNiwxXSxbOCwwXSxbMTEsMF0sWzEzLDFdLFsxNSwzXV0gfSwKICAgICAgICAgJ2QnOiB7IHdpZHRoOiAxOSwgcG9pbnRzOiBbWzE1LDIxXSxbMTUsMF0sWy0xLC0xXSxbMTUsMTFdLFsxMywxM10sWzExLDE0XSxbOCwxNF0sWzYsMTNdLFs0LDExXSxbMyw4XSxbMyw2XSxbNCwzXSxbNiwxXSxbOCwwXSxbMTEsMF0sWzEzLDFdLFsxNSwzXV0gfSwKICAgICAgICAgJ2UnOiB7IHdpZHRoOiAxOCwgcG9pbnRzOiBbWzMsOF0sWzE1LDhdLFsxNSwxMF0sWzE0LDEyXSxbMTMsMTNdLFsxMSwxNF0sWzgsMTRdLFs2LDEzXSxbNCwxMV0sWzMsOF0sWzMsNl0sWzQsM10sWzYsMV0sWzgsMF0sWzExLDBdLFsxMywxXSxbMTUsM11dIH0sCiAgICAgICAgICdmJzogeyB3aWR0aDogMTIsIHBvaW50czogW1sxMCwyMV0sWzgsMjFdLFs2LDIwXSxbNSwxN10sWzUsMF0sWy0xLC0xXSxbMiwxNF0sWzksMTRdXSB9LAogICAgICAgICAnZyc6IHsgd2lkdGg6IDE5LCBwb2ludHM6IFtbMTUsMTRdLFsxNSwtMl0sWzE0LC01XSxbMTMsLTZdLFsxMSwtN10sWzgsLTddLFs2LC02XSxbLTEsLTFdLFsxNSwxMV0sWzEzLDEzXSxbMTEsMTRdLFs4LDE0XSxbNiwxM10sWzQsMTFdLFszLDhdLFszLDZdLFs0LDNdLFs2LDFdLFs4LDBdLFsxMSwwXSxbMTMsMV0sWzE1LDNdXSB9LAogICAgICAgICAnaCc6IHsgd2lkdGg6IDE5LCBwb2ludHM6IFtbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwxMF0sWzcsMTNdLFs5LDE0XSxbMTIsMTRdLFsxNCwxM10sWzE1LDEwXSxbMTUsMF1dIH0sCiAgICAgICAgICdpJzogeyB3aWR0aDogOCwgcG9pbnRzOiBbWzMsMjFdLFs0LDIwXSxbNSwyMV0sWzQsMjJdLFszLDIxXSxbLTEsLTFdLFs0LDE0XSxbNCwwXV0gfSwKICAgICAgICAgJ2onOiB7IHdpZHRoOiAxMCwgcG9pbnRzOiBbWzUsMjFdLFs2LDIwXSxbNywyMV0sWzYsMjJdLFs1LDIxXSxbLTEsLTFdLFs2LDE0XSxbNiwtM10sWzUsLTZdLFszLC03XSxbMSwtN11dIH0sCiAgICAgICAgICdrJzogeyB3aWR0aDogMTcsIHBvaW50czogW1s0LDIxXSxbNCwwXSxbLTEsLTFdLFsxNCwxNF0sWzQsNF0sWy0xLC0xXSxbOCw4XSxbMTUsMF1dIH0sCiAgICAgICAgICdsJzogeyB3aWR0aDogOCwgcG9pbnRzOiBbWzQsMjFdLFs0LDBdXSB9LAogICAgICAgICAnbSc6IHsgd2lkdGg6IDMwLCBwb2ludHM6IFtbNCwxNF0sWzQsMF0sWy0xLC0xXSxbNCwxMF0sWzcsMTNdLFs5LDE0XSxbMTIsMTRdLFsxNCwxM10sWzE1LDEwXSxbMTUsMF0sWy0xLC0xXSxbMTUsMTBdLFsxOCwxM10sWzIwLDE0XSxbMjMsMTRdLFsyNSwxM10sWzI2LDEwXSxbMjYsMF1dIH0sCiAgICAgICAgICduJzogeyB3aWR0aDogMTksIHBvaW50czogW1s0LDE0XSxbNCwwXSxbLTEsLTFdLFs0LDEwXSxbNywxM10sWzksMTRdLFsxMiwxNF0sWzE0LDEzXSxbMTUsMTBdLFsxNSwwXV0gfSwKICAgICAgICAgJ28nOiB7IHdpZHRoOiAxOSwgcG9pbnRzOiBbWzgsMTRdLFs2LDEzXSxbNCwxMV0sWzMsOF0sWzMsNl0sWzQsM10sWzYsMV0sWzgsMF0sWzExLDBdLFsxMywxXSxbMTUsM10sWzE2LDZdLFsxNiw4XSxbMTUsMTFdLFsxMywxM10sWzExLDE0XSxbOCwxNF1dIH0sCiAgICAgICAgICdwJzogeyB3aWR0aDogMTksIHBvaW50czogW1s0LDE0XSxbNCwtN10sWy0xLC0xXSxbNCwxMV0sWzYsMTNdLFs4LDE0XSxbMTEsMTRdLFsxMywxM10sWzE1LDExXSxbMTYsOF0sWzE2LDZdLFsxNSwzXSxbMTMsMV0sWzExLDBdLFs4LDBdLFs2LDFdLFs0LDNdXSB9LAogICAgICAgICAncSc6IHsgd2lkdGg6IDE5LCBwb2ludHM6IFtbMTUsMTRdLFsxNSwtN10sWy0xLC0xXSxbMTUsMTFdLFsxMywxM10sWzExLDE0XSxbOCwxNF0sWzYsMTNdLFs0LDExXSxbMyw4XSxbMyw2XSxbNCwzXSxbNiwxXSxbOCwwXSxbMTEsMF0sWzEzLDFdLFsxNSwzXV0gfSwKICAgICAgICAgJ3InOiB7IHdpZHRoOiAxMywgcG9pbnRzOiBbWzQsMTRdLFs0LDBdLFstMSwtMV0sWzQsOF0sWzUsMTFdLFs3LDEzXSxbOSwxNF0sWzEyLDE0XV0gfSwKICAgICAgICAgJ3MnOiB7IHdpZHRoOiAxNywgcG9pbnRzOiBbWzE0LDExXSxbMTMsMTNdLFsxMCwxNF0sWzcsMTRdLFs0LDEzXSxbMywxMV0sWzQsOV0sWzYsOF0sWzExLDddLFsxMyw2XSxbMTQsNF0sWzE0LDNdLFsxMywxXSxbMTAsMF0sWzcsMF0sWzQsMV0sWzMsM11dIH0sCiAgICAgICAgICd0JzogeyB3aWR0aDogMTIsIHBvaW50czogW1s1LDIxXSxbNSw0XSxbNiwxXSxbOCwwXSxbMTAsMF0sWy0xLC0xXSxbMiwxNF0sWzksMTRdXSB9LAogICAgICAgICAndSc6IHsgd2lkdGg6IDE5LCBwb2ludHM6IFtbNCwxNF0sWzQsNF0sWzUsMV0sWzcsMF0sWzEwLDBdLFsxMiwxXSxbMTUsNF0sWy0xLC0xXSxbMTUsMTRdLFsxNSwwXV0gfSwKICAgICAgICAgJ3YnOiB7IHdpZHRoOiAxNiwgcG9pbnRzOiBbWzIsMTRdLFs4LDBdLFstMSwtMV0sWzE0LDE0XSxbOCwwXV0gfSwKICAgICAgICAgJ3cnOiB7IHdpZHRoOiAyMiwgcG9pbnRzOiBbWzMsMTRdLFs3LDBdLFstMSwtMV0sWzExLDE0XSxbNywwXSxbLTEsLTFdLFsxMSwxNF0sWzE1LDBdLFstMSwtMV0sWzE5LDE0XSxbMTUsMF1dIH0sCiAgICAgICAgICd4JzogeyB3aWR0aDogMTcsIHBvaW50czogW1szLDE0XSxbMTQsMF0sWy0xLC0xXSxbMTQsMTRdLFszLDBdXSB9LAogICAgICAgICAneSc6IHsgd2lkdGg6IDE2LCBwb2ludHM6IFtbMiwxNF0sWzgsMF0sWy0xLC0xXSxbMTQsMTRdLFs4LDBdLFs2LC00XSxbNCwtNl0sWzIsLTddLFsxLC03XV0gfSwKICAgICAgICAgJ3onOiB7IHdpZHRoOiAxNywgcG9pbnRzOiBbWzE0LDE0XSxbMywwXSxbLTEsLTFdLFszLDE0XSxbMTQsMTRdLFstMSwtMV0sWzMsMF0sWzE0LDBdXSB9LAogICAgICAgICAneyc6IHsgd2lkdGg6IDE0LCBwb2ludHM6IFtbOSwyNV0sWzcsMjRdLFs2LDIzXSxbNSwyMV0sWzUsMTldLFs2LDE3XSxbNywxNl0sWzgsMTRdLFs4LDEyXSxbNiwxMF0sWy0xLC0xXSxbNywyNF0sWzYsMjJdLFs2LDIwXSxbNywxOF0sWzgsMTddLFs5LDE1XSxbOSwxM10sWzgsMTFdLFs0LDldLFs4LDddLFs5LDVdLFs5LDNdLFs4LDFdLFs3LDBdLFs2LC0yXSxbNiwtNF0sWzcsLTZdLFstMSwtMV0sWzYsOF0sWzgsNl0sWzgsNF0sWzcsMl0sWzYsMV0sWzUsLTFdLFs1LC0zXSxbNiwtNV0sWzcsLTZdLFs5LC03XV0gfSwKICAgICAgICAgJ3wnOiB7IHdpZHRoOiA4LCBwb2ludHM6IFtbNCwyNV0sWzQsLTddXSB9LAogICAgICAgICAnfSc6IHsgd2lkdGg6IDE0LCBwb2ludHM6IFtbNSwyNV0sWzcsMjRdLFs4LDIzXSxbOSwyMV0sWzksMTldLFs4LDE3XSxbNywxNl0sWzYsMTRdLFs2LDEyXSxbOCwxMF0sWy0xLC0xXSxbNywyNF0sWzgsMjJdLFs4LDIwXSxbNywxOF0sWzYsMTddLFs1LDE1XSxbNSwxM10sWzYsMTFdLFsxMCw5XSxbNiw3XSxbNSw1XSxbNSwzXSxbNiwxXSxbNywwXSxbOCwtMl0sWzgsLTRdLFs3LC02XSxbLTEsLTFdLFs4LDhdLFs2LDZdLFs2LDRdLFs3LDJdLFs4LDFdLFs5LC0xXSxbOSwtM10sWzgsLTVdLFs3LC02XSxbNSwtN11dIH0sCiAgICAgICAgICd+JzogeyB3aWR0aDogMjQsIHBvaW50czogW1szLDZdLFszLDhdLFs0LDExXSxbNiwxMl0sWzgsMTJdLFsxMCwxMV0sWzE0LDhdLFsxNiw3XSxbMTgsN10sWzIwLDhdLFsyMSwxMF0sWy0xLC0xXSxbMyw4XSxbNCwxMF0sWzYsMTFdLFs4LDExXSxbMTAsMTBdLFsxNCw3XSxbMTYsNl0sWzE4LDZdLFsyMCw3XSxbMjEsMTBdLFsyMSwxMl1dIH0KICAgICB9OwogICAgIAogICAgJC5qcXBsb3QuQ2FudmFzRm9udFJlbmRlcmVyID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogICAgICAgIGlmICghb3B0aW9ucy5wdDJweCkgewogICAgICAgICAgICBvcHRpb25zLnB0MnB4ID0gMS41OwogICAgICAgIH0KICAgICAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIuY2FsbCh0aGlzLCBvcHRpb25zKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkNhbnZhc0ZvbnRSZW5kZXJlci5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyKHt9KTsKICAgICQuanFwbG90LkNhbnZhc0ZvbnRSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5DYW52YXNGb250UmVuZGVyZXI7CgogICAgJC5qcXBsb3QuQ2FudmFzRm9udFJlbmRlcmVyLnByb3RvdHlwZS5tZWFzdXJlID0gZnVuY3Rpb24oY3R4LCBzdHIpCiAgICB7CiAgICAgICAgLy8gdmFyIGZzdHlsZSA9IHRoaXMuZm9udFN0eWxlKycgJyt0aGlzLmZvbnRWYXJpYW50KycgJyt0aGlzLmZvbnRXZWlnaHQrJyAnK3RoaXMuZm9udFNpemUrJyAnK3RoaXMuZm9udEZhbWlseTsKICAgICAgICB2YXIgZnN0eWxlID0gdGhpcy5mb250U2l6ZSsnICcrdGhpcy5mb250RmFtaWx5OwogICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgY3R4LmZvbnQgPSBmc3R5bGU7CiAgICAgICAgdmFyIHcgPSBjdHgubWVhc3VyZVRleHQoc3RyKS53aWR0aDsKICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICAgIHJldHVybiB3OwogICAgfTsKCiAgICAkLmpxcGxvdC5DYW52YXNGb250UmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjdHgsIHN0cikKICAgIHsKICAgICAgICB2YXIgeCA9IDA7CiAgICAgICAgLy8gbGVhdmUgcm9vbSBhdCBib3R0b20gZm9yIGRlc2NlbmRlcnMuCiAgICAgICAgdmFyIHkgPSB0aGlzLmhlaWdodCowLjcyOwogICAgICAgIC8vdmFyIHkgPSAxMjsKCiAgICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgIHZhciB0eCwgdHk7CiAgICAgICAgIAogICAgICAgICAvLyAxc3QgcXVhZHJhbnQKICAgICAgICAgaWYgKCgtTWF0aC5QSS8yIDw9IHRoaXMuYW5nbGUgJiYgdGhpcy5hbmdsZSA8PSAwKSB8fCAoTWF0aC5QSSozLzIgPD0gdGhpcy5hbmdsZSAmJiB0aGlzLmFuZ2xlIDw9IE1hdGguUEkqMikpIHsKICAgICAgICAgICAgIHR4ID0gMDsKICAgICAgICAgICAgIHR5ID0gLU1hdGguc2luKHRoaXMuYW5nbGUpICogdGhpcy53aWR0aDsKICAgICAgICAgfQogICAgICAgICAvLyA0dGggcXVhZHJhbnQKICAgICAgICAgZWxzZSBpZiAoKDAgPCB0aGlzLmFuZ2xlICYmIHRoaXMuYW5nbGUgPD0gTWF0aC5QSS8yKSB8fCAoLU1hdGguUEkqMiA8PSB0aGlzLmFuZ2xlICYmIHRoaXMuYW5nbGUgPD0gLU1hdGguUEkqMy8yKSkgewogICAgICAgICAgICAgdHggPSBNYXRoLnNpbih0aGlzLmFuZ2xlKSAqIHRoaXMuaGVpZ2h0OwogICAgICAgICAgICAgdHkgPSAwOwogICAgICAgICB9CiAgICAgICAgIC8vIDJuZCBxdWFkcmFudAogICAgICAgICBlbHNlIGlmICgoLU1hdGguUEkgPCB0aGlzLmFuZ2xlICYmIHRoaXMuYW5nbGUgPCAtTWF0aC5QSS8yKSB8fCAoTWF0aC5QSSA8PSB0aGlzLmFuZ2xlICYmIHRoaXMuYW5nbGUgPD0gTWF0aC5QSSozLzIpKSB7CiAgICAgICAgICAgICB0eCA9IC1NYXRoLmNvcyh0aGlzLmFuZ2xlKSAqIHRoaXMud2lkdGg7CiAgICAgICAgICAgICB0eSA9IC1NYXRoLnNpbih0aGlzLmFuZ2xlKSAqIHRoaXMud2lkdGggLSBNYXRoLmNvcyh0aGlzLmFuZ2xlKSAqIHRoaXMuaGVpZ2h0OwogICAgICAgICB9CiAgICAgICAgIC8vIDNyZCBxdWFkcmFudAogICAgICAgICBlbHNlIGlmICgoLU1hdGguUEkqMy8yIDwgdGhpcy5hbmdsZSAmJiB0aGlzLmFuZ2xlIDwgTWF0aC5QSSkgfHwgKE1hdGguUEkvMiA8IHRoaXMuYW5nbGUgJiYgdGhpcy5hbmdsZSA8IE1hdGguUEkpKSB7CiAgICAgICAgICAgICB0eCA9IE1hdGguc2luKHRoaXMuYW5nbGUpICogdGhpcy5oZWlnaHQgLSBNYXRoLmNvcyh0aGlzLmFuZ2xlKSp0aGlzLndpZHRoOwogICAgICAgICAgICAgdHkgPSAtTWF0aC5jb3ModGhpcy5hbmdsZSkgKiB0aGlzLmhlaWdodDsKICAgICAgICAgfQogICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSB0aGlzLmZpbGxTdHlsZTsKICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IHRoaXMuZmlsbFN0eWxlOwogICAgICAgIC8vIHZhciBmc3R5bGUgPSB0aGlzLmZvbnRTdHlsZSsnICcrdGhpcy5mb250VmFyaWFudCsnICcrdGhpcy5mb250V2VpZ2h0KycgJyt0aGlzLmZvbnRTaXplKycgJyt0aGlzLmZvbnRGYW1pbHk7CiAgICAgICAgdmFyIGZzdHlsZSA9IHRoaXMuZm9udFNpemUrJyAnK3RoaXMuZm9udEZhbWlseTsKICAgICAgICAgY3R4LmZvbnQgPSBmc3R5bGU7CiAgICAgICAgIGN0eC50cmFuc2xhdGUodHgsIHR5KTsKICAgICAgICAgY3R4LnJvdGF0ZSh0aGlzLmFuZ2xlKTsKICAgICAgICAgY3R4LmZpbGxUZXh0KHN0ciwgeCwgeSk7CiAgICAgICAgIC8vIGN0eC5zdHJva2VUZXh0KHN0ciwgeCwgeSk7CgogICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgfTsKICAgIAp9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.canvasTextRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGEpe2EuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlcj1mdW5jdGlvbihiKXt0aGlzLmZvbnRTdHlsZT0ibm9ybWFsIjt0aGlzLmZvbnRWYXJpYW50PSJub3JtYWwiO3RoaXMuZm9udFdlaWdodD0ibm9ybWFsIjt0aGlzLmZvbnRTaXplPSIxMHB4Ijt0aGlzLmZvbnRGYW1pbHk9InNhbnMtc2VyaWYiO3RoaXMuZm9udFN0cmV0Y2g9MTt0aGlzLmZpbGxTdHlsZT0iIzY2NjY2NiI7dGhpcy5hbmdsZT0wO3RoaXMudGV4dEFsaWduPSJzdGFydCI7dGhpcy50ZXh0QmFzZWxpbmU9ImFscGhhYmV0aWMiO3RoaXMudGV4dDt0aGlzLndpZHRoO3RoaXMuaGVpZ2h0O3RoaXMucHQycHg9MS4yODthLmV4dGVuZCh0cnVlLHRoaXMsYik7dGhpcy5ub3JtYWxpemVkRm9udFNpemU9dGhpcy5ub3JtYWxpemVGb250U2l6ZSh0aGlzLmZvbnRTaXplKTt0aGlzLnNldEhlaWdodCgpfTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oYil7YS5leHRlbmQodHJ1ZSx0aGlzLGIpO3RoaXMubm9ybWFsaXplZEZvbnRTaXplPXRoaXMubm9ybWFsaXplRm9udFNpemUodGhpcy5mb250U2l6ZSk7dGhpcy5zZXRIZWlnaHQoKX07YS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLnByb3RvdHlwZS5ub3JtYWxpemVGb250U2l6ZT1mdW5jdGlvbihiKXtiPVN0cmluZyhiKTt2YXIgYz1wYXJzZUZsb2F0KGIpO2lmKGIuaW5kZXhPZigicHgiKT4tMSl7cmV0dXJuIGMvdGhpcy5wdDJweH1lbHNle2lmKGIuaW5kZXhPZigicHQiKT4tMSl7cmV0dXJuIGN9ZWxzZXtpZihiLmluZGV4T2YoImVtIik+LTEpe3JldHVybiBjKjEyfWVsc2V7aWYoYi5pbmRleE9mKCIlIik+LTEpe3JldHVybiBjKjEyLzEwMH1lbHNle3JldHVybiBjL3RoaXMucHQycHh9fX19fTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmZvbnRXZWlnaHQyRmxvYXQ9ZnVuY3Rpb24oYil7aWYoTnVtYmVyKGIpKXtyZXR1cm4gYi80MDB9ZWxzZXtzd2l0Y2goYil7Y2FzZSJub3JtYWwiOnJldHVybiAxO2JyZWFrO2Nhc2UiYm9sZCI6cmV0dXJuIDEuNzU7YnJlYWs7Y2FzZSJib2xkZXIiOnJldHVybiAyLjI1O2JyZWFrO2Nhc2UibGlnaHRlciI6cmV0dXJuIDAuNzU7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gMTticmVha319fTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmdldFRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0fTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLnNldFRleHQ9ZnVuY3Rpb24oYyxiKXt0aGlzLnRleHQ9Yzt0aGlzLnNldFdpZHRoKGIpO3JldHVybiB0aGlzfTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmdldFdpZHRoPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLndpZHRofTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLnNldFdpZHRoPWZ1bmN0aW9uKGMsYil7aWYoIWIpe3RoaXMud2lkdGg9dGhpcy5tZWFzdXJlKGMsdGhpcy50ZXh0KX1lbHNle3RoaXMud2lkdGg9Yn1yZXR1cm4gdGhpc307YS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLnByb3RvdHlwZS5nZXRIZWlnaHQ9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuaGVpZ2h0fTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLnNldEhlaWdodD1mdW5jdGlvbihiKXtpZighYil7dGhpcy5oZWlnaHQ9dGhpcy5ub3JtYWxpemVkRm9udFNpemUqdGhpcy5wdDJweH1lbHNle3RoaXMuaGVpZ2h0PWJ9cmV0dXJuIHRoaXN9O2EuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlci5wcm90b3R5cGUubGV0dGVyPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxldHRlcnNbYl19O2EuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlci5wcm90b3R5cGUuYXNjZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9ybWFsaXplZEZvbnRTaXplfTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmRlc2NlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gNyp0aGlzLm5vcm1hbGl6ZWRGb250U2l6ZS8yNX07YS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLnByb3RvdHlwZS5tZWFzdXJlPWZ1bmN0aW9uKGQsZyl7dmFyIGY9MDt2YXIgYj1nLmxlbmd0aDtmb3IodmFyIGU9MDtlPGI7ZSsrKXt2YXIgaD10aGlzLmxldHRlcihnLmNoYXJBdChlKSk7aWYoaCl7Zis9aC53aWR0aCp0aGlzLm5vcm1hbGl6ZWRGb250U2l6ZS8yNSp0aGlzLmZvbnRTdHJldGNofX1yZXR1cm4gZn07YS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKHMsbil7dmFyIHI9MDt2YXIgbz10aGlzLmhlaWdodCowLjcyO3ZhciBwPTA7dmFyIGw9bi5sZW5ndGg7dmFyIGs9dGhpcy5ub3JtYWxpemVkRm9udFNpemUvMjU7cy5zYXZlKCk7dmFyIGgsZjtpZigoLU1hdGguUEkvMjw9dGhpcy5hbmdsZSYmdGhpcy5hbmdsZTw9MCl8fChNYXRoLlBJKjMvMjw9dGhpcy5hbmdsZSYmdGhpcy5hbmdsZTw9TWF0aC5QSSoyKSl7aD0wO2Y9LU1hdGguc2luKHRoaXMuYW5nbGUpKnRoaXMud2lkdGh9ZWxzZXtpZigoMDx0aGlzLmFuZ2xlJiZ0aGlzLmFuZ2xlPD1NYXRoLlBJLzIpfHwoLU1hdGguUEkqMjw9dGhpcy5hbmdsZSYmdGhpcy5hbmdsZTw9LU1hdGguUEkqMy8yKSl7aD1NYXRoLnNpbih0aGlzLmFuZ2xlKSp0aGlzLmhlaWdodDtmPTB9ZWxzZXtpZigoLU1hdGguUEk8dGhpcy5hbmdsZSYmdGhpcy5hbmdsZTwtTWF0aC5QSS8yKXx8KE1hdGguUEk8PXRoaXMuYW5nbGUmJnRoaXMuYW5nbGU8PU1hdGguUEkqMy8yKSl7aD0tTWF0aC5jb3ModGhpcy5hbmdsZSkqdGhpcy53aWR0aDtmPS1NYXRoLnNpbih0aGlzLmFuZ2xlKSp0aGlzLndpZHRoLU1hdGguY29zKHRoaXMuYW5nbGUpKnRoaXMuaGVpZ2h0fWVsc2V7aWYoKC1NYXRoLlBJKjMvMjx0aGlzLmFuZ2xlJiZ0aGlzLmFuZ2xlPE1hdGguUEkpfHwoTWF0aC5QSS8yPHRoaXMuYW5nbGUmJnRoaXMuYW5nbGU8TWF0aC5QSSkpe2g9TWF0aC5zaW4odGhpcy5hbmdsZSkqdGhpcy5oZWlnaHQtTWF0aC5jb3ModGhpcy5hbmdsZSkqdGhpcy53aWR0aDtmPS1NYXRoLmNvcyh0aGlzLmFuZ2xlKSp0aGlzLmhlaWdodH19fX1zLnN0cm9rZVN0eWxlPXRoaXMuZmlsbFN0eWxlO3MuZmlsbFN0eWxlPXRoaXMuZmlsbFN0eWxlO3MudHJhbnNsYXRlKGgsZik7cy5yb3RhdGUodGhpcy5hbmdsZSk7cy5saW5lQ2FwPSJyb3VuZCI7dmFyIHQ9KHRoaXMubm9ybWFsaXplZEZvbnRTaXplPjMwKT8yOjIrKDMwLXRoaXMubm9ybWFsaXplZEZvbnRTaXplKS8yMDtzLmxpbmVXaWR0aD10KmsqdGhpcy5mb250V2VpZ2h0MkZsb2F0KHRoaXMuZm9udFdlaWdodCk7Zm9yKHZhciBnPTA7ZzxsO2crKyl7dmFyIG09dGhpcy5sZXR0ZXIobi5jaGFyQXQoZykpO2lmKCFtKXtjb250aW51ZX1zLmJlZ2luUGF0aCgpO3ZhciBlPTE7dmFyIGI9MDtmb3IodmFyIGQ9MDtkPG0ucG9pbnRzLmxlbmd0aDtkKyspe3ZhciBxPW0ucG9pbnRzW2RdO2lmKHFbMF09PS0xJiZxWzFdPT0tMSl7ZT0xO2NvbnRpbnVlfWlmKGUpe3MubW92ZVRvKHIrcVswXSprKnRoaXMuZm9udFN0cmV0Y2gsby1xWzFdKmspO2U9ZmFsc2V9ZWxzZXtzLmxpbmVUbyhyK3FbMF0qayp0aGlzLmZvbnRTdHJldGNoLG8tcVsxXSprKX19cy5zdHJva2UoKTtyKz1tLndpZHRoKmsqdGhpcy5mb250U3RyZXRjaH1zLnJlc3RvcmUoKTtyZXR1cm4gcH07YS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLnByb3RvdHlwZS5sZXR0ZXJzPXsiICI6e3dpZHRoOjE2LHBvaW50czpbXX0sIiEiOnt3aWR0aDoxMCxwb2ludHM6W1s1LDIxXSxbNSw3XSxbLTEsLTFdLFs1LDJdLFs0LDFdLFs1LDBdLFs2LDFdLFs1LDJdXX0sJyInOnt3aWR0aDoxNixwb2ludHM6W1s0LDIxXSxbNCwxNF0sWy0xLC0xXSxbMTIsMjFdLFsxMiwxNF1dfSwiIyI6e3dpZHRoOjIxLHBvaW50czpbWzExLDI1XSxbNCwtN10sWy0xLC0xXSxbMTcsMjVdLFsxMCwtN10sWy0xLC0xXSxbNCwxMl0sWzE4LDEyXSxbLTEsLTFdLFszLDZdLFsxNyw2XV19LCIkIjp7d2lkdGg6MjAscG9pbnRzOltbOCwyNV0sWzgsLTRdLFstMSwtMV0sWzEyLDI1XSxbMTIsLTRdLFstMSwtMV0sWzE3LDE4XSxbMTUsMjBdLFsxMiwyMV0sWzgsMjFdLFs1LDIwXSxbMywxOF0sWzMsMTZdLFs0LDE0XSxbNSwxM10sWzcsMTJdLFsxMywxMF0sWzE1LDldLFsxNiw4XSxbMTcsNl0sWzE3LDNdLFsxNSwxXSxbMTIsMF0sWzgsMF0sWzUsMV0sWzMsM11dfSwiJSI6e3dpZHRoOjI0LHBvaW50czpbWzIxLDIxXSxbMywwXSxbLTEsLTFdLFs4LDIxXSxbMTAsMTldLFsxMCwxN10sWzksMTVdLFs3LDE0XSxbNSwxNF0sWzMsMTZdLFszLDE4XSxbNCwyMF0sWzYsMjFdLFs4LDIxXSxbMTAsMjBdLFsxMywxOV0sWzE2LDE5XSxbMTksMjBdLFsyMSwyMV0sWy0xLC0xXSxbMTcsN10sWzE1LDZdLFsxNCw0XSxbMTQsMl0sWzE2LDBdLFsxOCwwXSxbMjAsMV0sWzIxLDNdLFsyMSw1XSxbMTksN10sWzE3LDddXX0sIiYiOnt3aWR0aDoyNixwb2ludHM6W1syMywxMl0sWzIzLDEzXSxbMjIsMTRdLFsyMSwxNF0sWzIwLDEzXSxbMTksMTFdLFsxNyw2XSxbMTUsM10sWzEzLDFdLFsxMSwwXSxbNywwXSxbNSwxXSxbNCwyXSxbMyw0XSxbMyw2XSxbNCw4XSxbNSw5XSxbMTIsMTNdLFsxMywxNF0sWzE0LDE2XSxbMTQsMThdLFsxMywyMF0sWzExLDIxXSxbOSwyMF0sWzgsMThdLFs4LDE2XSxbOSwxM10sWzExLDEwXSxbMTYsM10sWzE4LDFdLFsyMCwwXSxbMjIsMF0sWzIzLDFdLFsyMywyXV19LCInIjp7d2lkdGg6MTAscG9pbnRzOltbNSwxOV0sWzQsMjBdLFs1LDIxXSxbNiwyMF0sWzYsMThdLFs1LDE2XSxbNCwxNV1dfSwiKCI6e3dpZHRoOjE0LHBvaW50czpbWzExLDI1XSxbOSwyM10sWzcsMjBdLFs1LDE2XSxbNCwxMV0sWzQsN10sWzUsMl0sWzcsLTJdLFs5LC01XSxbMTEsLTddXX0sIikiOnt3aWR0aDoxNCxwb2ludHM6W1szLDI1XSxbNSwyM10sWzcsMjBdLFs5LDE2XSxbMTAsMTFdLFsxMCw3XSxbOSwyXSxbNywtMl0sWzUsLTVdLFszLC03XV19LCIqIjp7d2lkdGg6MTYscG9pbnRzOltbOCwyMV0sWzgsOV0sWy0xLC0xXSxbMywxOF0sWzEzLDEyXSxbLTEsLTFdLFsxMywxOF0sWzMsMTJdXX0sIisiOnt3aWR0aDoyNixwb2ludHM6W1sxMywxOF0sWzEzLDBdLFstMSwtMV0sWzQsOV0sWzIyLDldXX0sIiwiOnt3aWR0aDoxMCxwb2ludHM6W1s2LDFdLFs1LDBdLFs0LDFdLFs1LDJdLFs2LDFdLFs2LC0xXSxbNSwtM10sWzQsLTRdXX0sIi0iOnt3aWR0aDoxOCxwb2ludHM6W1s2LDldLFsxMiw5XV19LCIuIjp7d2lkdGg6MTAscG9pbnRzOltbNSwyXSxbNCwxXSxbNSwwXSxbNiwxXSxbNSwyXV19LCIvIjp7d2lkdGg6MjIscG9pbnRzOltbMjAsMjVdLFsyLC03XV19LCIwIjp7d2lkdGg6MjAscG9pbnRzOltbOSwyMV0sWzYsMjBdLFs0LDE3XSxbMywxMl0sWzMsOV0sWzQsNF0sWzYsMV0sWzksMF0sWzExLDBdLFsxNCwxXSxbMTYsNF0sWzE3LDldLFsxNywxMl0sWzE2LDE3XSxbMTQsMjBdLFsxMSwyMV0sWzksMjFdXX0sIjEiOnt3aWR0aDoyMCxwb2ludHM6W1s2LDE3XSxbOCwxOF0sWzExLDIxXSxbMTEsMF1dfSwiMiI6e3dpZHRoOjIwLHBvaW50czpbWzQsMTZdLFs0LDE3XSxbNSwxOV0sWzYsMjBdLFs4LDIxXSxbMTIsMjFdLFsxNCwyMF0sWzE1LDE5XSxbMTYsMTddLFsxNiwxNV0sWzE1LDEzXSxbMTMsMTBdLFszLDBdLFsxNywwXV19LCIzIjp7d2lkdGg6MjAscG9pbnRzOltbNSwyMV0sWzE2LDIxXSxbMTAsMTNdLFsxMywxM10sWzE1LDEyXSxbMTYsMTFdLFsxNyw4XSxbMTcsNl0sWzE2LDNdLFsxNCwxXSxbMTEsMF0sWzgsMF0sWzUsMV0sWzQsMl0sWzMsNF1dfSwiNCI6e3dpZHRoOjIwLHBvaW50czpbWzEzLDIxXSxbMyw3XSxbMTgsN10sWy0xLC0xXSxbMTMsMjFdLFsxMywwXV19LCI1Ijp7d2lkdGg6MjAscG9pbnRzOltbMTUsMjFdLFs1LDIxXSxbNCwxMl0sWzUsMTNdLFs4LDE0XSxbMTEsMTRdLFsxNCwxM10sWzE2LDExXSxbMTcsOF0sWzE3LDZdLFsxNiwzXSxbMTQsMV0sWzExLDBdLFs4LDBdLFs1LDFdLFs0LDJdLFszLDRdXX0sIjYiOnt3aWR0aDoyMCxwb2ludHM6W1sxNiwxOF0sWzE1LDIwXSxbMTIsMjFdLFsxMCwyMV0sWzcsMjBdLFs1LDE3XSxbNCwxMl0sWzQsN10sWzUsM10sWzcsMV0sWzEwLDBdLFsxMSwwXSxbMTQsMV0sWzE2LDNdLFsxNyw2XSxbMTcsN10sWzE2LDEwXSxbMTQsMTJdLFsxMSwxM10sWzEwLDEzXSxbNywxMl0sWzUsMTBdLFs0LDddXX0sIjciOnt3aWR0aDoyMCxwb2ludHM6W1sxNywyMV0sWzcsMF0sWy0xLC0xXSxbMywyMV0sWzE3LDIxXV19LCI4Ijp7d2lkdGg6MjAscG9pbnRzOltbOCwyMV0sWzUsMjBdLFs0LDE4XSxbNCwxNl0sWzUsMTRdLFs3LDEzXSxbMTEsMTJdLFsxNCwxMV0sWzE2LDldLFsxNyw3XSxbMTcsNF0sWzE2LDJdLFsxNSwxXSxbMTIsMF0sWzgsMF0sWzUsMV0sWzQsMl0sWzMsNF0sWzMsN10sWzQsOV0sWzYsMTFdLFs5LDEyXSxbMTMsMTNdLFsxNSwxNF0sWzE2LDE2XSxbMTYsMThdLFsxNSwyMF0sWzEyLDIxXSxbOCwyMV1dfSwiOSI6e3dpZHRoOjIwLHBvaW50czpbWzE2LDE0XSxbMTUsMTFdLFsxMyw5XSxbMTAsOF0sWzksOF0sWzYsOV0sWzQsMTFdLFszLDE0XSxbMywxNV0sWzQsMThdLFs2LDIwXSxbOSwyMV0sWzEwLDIxXSxbMTMsMjBdLFsxNSwxOF0sWzE2LDE0XSxbMTYsOV0sWzE1LDRdLFsxMywxXSxbMTAsMF0sWzgsMF0sWzUsMV0sWzQsM11dfSwiOiI6e3dpZHRoOjEwLHBvaW50czpbWzUsMTRdLFs0LDEzXSxbNSwxMl0sWzYsMTNdLFs1LDE0XSxbLTEsLTFdLFs1LDJdLFs0LDFdLFs1LDBdLFs2LDFdLFs1LDJdXX0sIjsiOnt3aWR0aDoxMCxwb2ludHM6W1s1LDE0XSxbNCwxM10sWzUsMTJdLFs2LDEzXSxbNSwxNF0sWy0xLC0xXSxbNiwxXSxbNSwwXSxbNCwxXSxbNSwyXSxbNiwxXSxbNiwtMV0sWzUsLTNdLFs0LC00XV19LCI8Ijp7d2lkdGg6MjQscG9pbnRzOltbMjAsMThdLFs0LDldLFsyMCwwXV19LCI9Ijp7d2lkdGg6MjYscG9pbnRzOltbNCwxMl0sWzIyLDEyXSxbLTEsLTFdLFs0LDZdLFsyMiw2XV19LCI+Ijp7d2lkdGg6MjQscG9pbnRzOltbNCwxOF0sWzIwLDldLFs0LDBdXX0sIj8iOnt3aWR0aDoxOCxwb2ludHM6W1szLDE2XSxbMywxN10sWzQsMTldLFs1LDIwXSxbNywyMV0sWzExLDIxXSxbMTMsMjBdLFsxNCwxOV0sWzE1LDE3XSxbMTUsMTVdLFsxNCwxM10sWzEzLDEyXSxbOSwxMF0sWzksN10sWy0xLC0xXSxbOSwyXSxbOCwxXSxbOSwwXSxbMTAsMV0sWzksMl1dfSwiQCI6e3dpZHRoOjI3LHBvaW50czpbWzE4LDEzXSxbMTcsMTVdLFsxNSwxNl0sWzEyLDE2XSxbMTAsMTVdLFs5LDE0XSxbOCwxMV0sWzgsOF0sWzksNl0sWzExLDVdLFsxNCw1XSxbMTYsNl0sWzE3LDhdLFstMSwtMV0sWzEyLDE2XSxbMTAsMTRdLFs5LDExXSxbOSw4XSxbMTAsNl0sWzExLDVdLFstMSwtMV0sWzE4LDE2XSxbMTcsOF0sWzE3LDZdLFsxOSw1XSxbMjEsNV0sWzIzLDddLFsyNCwxMF0sWzI0LDEyXSxbMjMsMTVdLFsyMiwxN10sWzIwLDE5XSxbMTgsMjBdLFsxNSwyMV0sWzEyLDIxXSxbOSwyMF0sWzcsMTldLFs1LDE3XSxbNCwxNV0sWzMsMTJdLFszLDldLFs0LDZdLFs1LDRdLFs3LDJdLFs5LDFdLFsxMiwwXSxbMTUsMF0sWzE4LDFdLFsyMCwyXSxbMjEsM10sWy0xLC0xXSxbMTksMTZdLFsxOCw4XSxbMTgsNl0sWzE5LDVdXX0sQTp7d2lkdGg6MTgscG9pbnRzOltbOSwyMV0sWzEsMF0sWy0xLC0xXSxbOSwyMV0sWzE3LDBdLFstMSwtMV0sWzQsN10sWzE0LDddXX0sQjp7d2lkdGg6MjEscG9pbnRzOltbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwyMV0sWzEzLDIxXSxbMTYsMjBdLFsxNywxOV0sWzE4LDE3XSxbMTgsMTVdLFsxNywxM10sWzE2LDEyXSxbMTMsMTFdLFstMSwtMV0sWzQsMTFdLFsxMywxMV0sWzE2LDEwXSxbMTcsOV0sWzE4LDddLFsxOCw0XSxbMTcsMl0sWzE2LDFdLFsxMywwXSxbNCwwXV19LEM6e3dpZHRoOjIxLHBvaW50czpbWzE4LDE2XSxbMTcsMThdLFsxNSwyMF0sWzEzLDIxXSxbOSwyMV0sWzcsMjBdLFs1LDE4XSxbNCwxNl0sWzMsMTNdLFszLDhdLFs0LDVdLFs1LDNdLFs3LDFdLFs5LDBdLFsxMywwXSxbMTUsMV0sWzE3LDNdLFsxOCw1XV19LEQ6e3dpZHRoOjIxLHBvaW50czpbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzQsMjFdLFsxMSwyMV0sWzE0LDIwXSxbMTYsMThdLFsxNywxNl0sWzE4LDEzXSxbMTgsOF0sWzE3LDVdLFsxNiwzXSxbMTQsMV0sWzExLDBdLFs0LDBdXX0sRTp7d2lkdGg6MTkscG9pbnRzOltbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwyMV0sWzE3LDIxXSxbLTEsLTFdLFs0LDExXSxbMTIsMTFdLFstMSwtMV0sWzQsMF0sWzE3LDBdXX0sRjp7d2lkdGg6MTgscG9pbnRzOltbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwyMV0sWzE3LDIxXSxbLTEsLTFdLFs0LDExXSxbMTIsMTFdXX0sRzp7d2lkdGg6MjEscG9pbnRzOltbMTgsMTZdLFsxNywxOF0sWzE1LDIwXSxbMTMsMjFdLFs5LDIxXSxbNywyMF0sWzUsMThdLFs0LDE2XSxbMywxM10sWzMsOF0sWzQsNV0sWzUsM10sWzcsMV0sWzksMF0sWzEzLDBdLFsxNSwxXSxbMTcsM10sWzE4LDVdLFsxOCw4XSxbLTEsLTFdLFsxMyw4XSxbMTgsOF1dfSxIOnt3aWR0aDoyMixwb2ludHM6W1s0LDIxXSxbNCwwXSxbLTEsLTFdLFsxOCwyMV0sWzE4LDBdLFstMSwtMV0sWzQsMTFdLFsxOCwxMV1dfSxJOnt3aWR0aDo4LHBvaW50czpbWzQsMjFdLFs0LDBdXX0sSjp7d2lkdGg6MTYscG9pbnRzOltbMTIsMjFdLFsxMiw1XSxbMTEsMl0sWzEwLDFdLFs4LDBdLFs2LDBdLFs0LDFdLFszLDJdLFsyLDVdLFsyLDddXX0sSzp7d2lkdGg6MjEscG9pbnRzOltbNCwyMV0sWzQsMF0sWy0xLC0xXSxbMTgsMjFdLFs0LDddLFstMSwtMV0sWzksMTJdLFsxOCwwXV19LEw6e3dpZHRoOjE3LHBvaW50czpbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzQsMF0sWzE2LDBdXX0sTTp7d2lkdGg6MjQscG9pbnRzOltbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwyMV0sWzEyLDBdLFstMSwtMV0sWzIwLDIxXSxbMTIsMF0sWy0xLC0xXSxbMjAsMjFdLFsyMCwwXV19LE46e3dpZHRoOjIyLHBvaW50czpbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzQsMjFdLFsxOCwwXSxbLTEsLTFdLFsxOCwyMV0sWzE4LDBdXX0sTzp7d2lkdGg6MjIscG9pbnRzOltbOSwyMV0sWzcsMjBdLFs1LDE4XSxbNCwxNl0sWzMsMTNdLFszLDhdLFs0LDVdLFs1LDNdLFs3LDFdLFs5LDBdLFsxMywwXSxbMTUsMV0sWzE3LDNdLFsxOCw1XSxbMTksOF0sWzE5LDEzXSxbMTgsMTZdLFsxNywxOF0sWzE1LDIwXSxbMTMsMjFdLFs5LDIxXV19LFA6e3dpZHRoOjIxLHBvaW50czpbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzQsMjFdLFsxMywyMV0sWzE2LDIwXSxbMTcsMTldLFsxOCwxN10sWzE4LDE0XSxbMTcsMTJdLFsxNiwxMV0sWzEzLDEwXSxbNCwxMF1dfSxROnt3aWR0aDoyMixwb2ludHM6W1s5LDIxXSxbNywyMF0sWzUsMThdLFs0LDE2XSxbMywxM10sWzMsOF0sWzQsNV0sWzUsM10sWzcsMV0sWzksMF0sWzEzLDBdLFsxNSwxXSxbMTcsM10sWzE4LDVdLFsxOSw4XSxbMTksMTNdLFsxOCwxNl0sWzE3LDE4XSxbMTUsMjBdLFsxMywyMV0sWzksMjFdLFstMSwtMV0sWzEyLDRdLFsxOCwtMl1dfSxSOnt3aWR0aDoyMSxwb2ludHM6W1s0LDIxXSxbNCwwXSxbLTEsLTFdLFs0LDIxXSxbMTMsMjFdLFsxNiwyMF0sWzE3LDE5XSxbMTgsMTddLFsxOCwxNV0sWzE3LDEzXSxbMTYsMTJdLFsxMywxMV0sWzQsMTFdLFstMSwtMV0sWzExLDExXSxbMTgsMF1dfSxTOnt3aWR0aDoyMCxwb2ludHM6W1sxNywxOF0sWzE1LDIwXSxbMTIsMjFdLFs4LDIxXSxbNSwyMF0sWzMsMThdLFszLDE2XSxbNCwxNF0sWzUsMTNdLFs3LDEyXSxbMTMsMTBdLFsxNSw5XSxbMTYsOF0sWzE3LDZdLFsxNywzXSxbMTUsMV0sWzEyLDBdLFs4LDBdLFs1LDFdLFszLDNdXX0sVDp7d2lkdGg6MTYscG9pbnRzOltbOCwyMV0sWzgsMF0sWy0xLC0xXSxbMSwyMV0sWzE1LDIxXV19LFU6e3dpZHRoOjIyLHBvaW50czpbWzQsMjFdLFs0LDZdLFs1LDNdLFs3LDFdLFsxMCwwXSxbMTIsMF0sWzE1LDFdLFsxNywzXSxbMTgsNl0sWzE4LDIxXV19LFY6e3dpZHRoOjE4LHBvaW50czpbWzEsMjFdLFs5LDBdLFstMSwtMV0sWzE3LDIxXSxbOSwwXV19LFc6e3dpZHRoOjI0LHBvaW50czpbWzIsMjFdLFs3LDBdLFstMSwtMV0sWzEyLDIxXSxbNywwXSxbLTEsLTFdLFsxMiwyMV0sWzE3LDBdLFstMSwtMV0sWzIyLDIxXSxbMTcsMF1dfSxYOnt3aWR0aDoyMCxwb2ludHM6W1szLDIxXSxbMTcsMF0sWy0xLC0xXSxbMTcsMjFdLFszLDBdXX0sWTp7d2lkdGg6MTgscG9pbnRzOltbMSwyMV0sWzksMTFdLFs5LDBdLFstMSwtMV0sWzE3LDIxXSxbOSwxMV1dfSxaOnt3aWR0aDoyMCxwb2ludHM6W1sxNywyMV0sWzMsMF0sWy0xLC0xXSxbMywyMV0sWzE3LDIxXSxbLTEsLTFdLFszLDBdLFsxNywwXV19LCJbIjp7d2lkdGg6MTQscG9pbnRzOltbNCwyNV0sWzQsLTddLFstMSwtMV0sWzUsMjVdLFs1LC03XSxbLTEsLTFdLFs0LDI1XSxbMTEsMjVdLFstMSwtMV0sWzQsLTddLFsxMSwtN11dfSwiXFwiOnt3aWR0aDoxNCxwb2ludHM6W1swLDIxXSxbMTQsLTNdXX0sIl0iOnt3aWR0aDoxNCxwb2ludHM6W1s5LDI1XSxbOSwtN10sWy0xLC0xXSxbMTAsMjVdLFsxMCwtN10sWy0xLC0xXSxbMywyNV0sWzEwLDI1XSxbLTEsLTFdLFszLC03XSxbMTAsLTddXX0sIl4iOnt3aWR0aDoxNixwb2ludHM6W1s2LDE1XSxbOCwxOF0sWzEwLDE1XSxbLTEsLTFdLFszLDEyXSxbOCwxN10sWzEzLDEyXSxbLTEsLTFdLFs4LDE3XSxbOCwwXV19LF86e3dpZHRoOjE2LHBvaW50czpbWzAsLTJdLFsxNiwtMl1dfSwiYCI6e3dpZHRoOjEwLHBvaW50czpbWzYsMjFdLFs1LDIwXSxbNCwxOF0sWzQsMTZdLFs1LDE1XSxbNiwxNl0sWzUsMTddXX0sYTp7d2lkdGg6MTkscG9pbnRzOltbMTUsMTRdLFsxNSwwXSxbLTEsLTFdLFsxNSwxMV0sWzEzLDEzXSxbMTEsMTRdLFs4LDE0XSxbNiwxM10sWzQsMTFdLFszLDhdLFszLDZdLFs0LDNdLFs2LDFdLFs4LDBdLFsxMSwwXSxbMTMsMV0sWzE1LDNdXX0sYjp7d2lkdGg6MTkscG9pbnRzOltbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwxMV0sWzYsMTNdLFs4LDE0XSxbMTEsMTRdLFsxMywxM10sWzE1LDExXSxbMTYsOF0sWzE2LDZdLFsxNSwzXSxbMTMsMV0sWzExLDBdLFs4LDBdLFs2LDFdLFs0LDNdXX0sYzp7d2lkdGg6MTgscG9pbnRzOltbMTUsMTFdLFsxMywxM10sWzExLDE0XSxbOCwxNF0sWzYsMTNdLFs0LDExXSxbMyw4XSxbMyw2XSxbNCwzXSxbNiwxXSxbOCwwXSxbMTEsMF0sWzEzLDFdLFsxNSwzXV19LGQ6e3dpZHRoOjE5LHBvaW50czpbWzE1LDIxXSxbMTUsMF0sWy0xLC0xXSxbMTUsMTFdLFsxMywxM10sWzExLDE0XSxbOCwxNF0sWzYsMTNdLFs0LDExXSxbMyw4XSxbMyw2XSxbNCwzXSxbNiwxXSxbOCwwXSxbMTEsMF0sWzEzLDFdLFsxNSwzXV19LGU6e3dpZHRoOjE4LHBvaW50czpbWzMsOF0sWzE1LDhdLFsxNSwxMF0sWzE0LDEyXSxbMTMsMTNdLFsxMSwxNF0sWzgsMTRdLFs2LDEzXSxbNCwxMV0sWzMsOF0sWzMsNl0sWzQsM10sWzYsMV0sWzgsMF0sWzExLDBdLFsxMywxXSxbMTUsM11dfSxmOnt3aWR0aDoxMixwb2ludHM6W1sxMCwyMV0sWzgsMjFdLFs2LDIwXSxbNSwxN10sWzUsMF0sWy0xLC0xXSxbMiwxNF0sWzksMTRdXX0sZzp7d2lkdGg6MTkscG9pbnRzOltbMTUsMTRdLFsxNSwtMl0sWzE0LC01XSxbMTMsLTZdLFsxMSwtN10sWzgsLTddLFs2LC02XSxbLTEsLTFdLFsxNSwxMV0sWzEzLDEzXSxbMTEsMTRdLFs4LDE0XSxbNiwxM10sWzQsMTFdLFszLDhdLFszLDZdLFs0LDNdLFs2LDFdLFs4LDBdLFsxMSwwXSxbMTMsMV0sWzE1LDNdXX0saDp7d2lkdGg6MTkscG9pbnRzOltbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwxMF0sWzcsMTNdLFs5LDE0XSxbMTIsMTRdLFsxNCwxM10sWzE1LDEwXSxbMTUsMF1dfSxpOnt3aWR0aDo4LHBvaW50czpbWzMsMjFdLFs0LDIwXSxbNSwyMV0sWzQsMjJdLFszLDIxXSxbLTEsLTFdLFs0LDE0XSxbNCwwXV19LGo6e3dpZHRoOjEwLHBvaW50czpbWzUsMjFdLFs2LDIwXSxbNywyMV0sWzYsMjJdLFs1LDIxXSxbLTEsLTFdLFs2LDE0XSxbNiwtM10sWzUsLTZdLFszLC03XSxbMSwtN11dfSxrOnt3aWR0aDoxNyxwb2ludHM6W1s0LDIxXSxbNCwwXSxbLTEsLTFdLFsxNCwxNF0sWzQsNF0sWy0xLC0xXSxbOCw4XSxbMTUsMF1dfSxsOnt3aWR0aDo4LHBvaW50czpbWzQsMjFdLFs0LDBdXX0sbTp7d2lkdGg6MzAscG9pbnRzOltbNCwxNF0sWzQsMF0sWy0xLC0xXSxbNCwxMF0sWzcsMTNdLFs5LDE0XSxbMTIsMTRdLFsxNCwxM10sWzE1LDEwXSxbMTUsMF0sWy0xLC0xXSxbMTUsMTBdLFsxOCwxM10sWzIwLDE0XSxbMjMsMTRdLFsyNSwxM10sWzI2LDEwXSxbMjYsMF1dfSxuOnt3aWR0aDoxOSxwb2ludHM6W1s0LDE0XSxbNCwwXSxbLTEsLTFdLFs0LDEwXSxbNywxM10sWzksMTRdLFsxMiwxNF0sWzE0LDEzXSxbMTUsMTBdLFsxNSwwXV19LG86e3dpZHRoOjE5LHBvaW50czpbWzgsMTRdLFs2LDEzXSxbNCwxMV0sWzMsOF0sWzMsNl0sWzQsM10sWzYsMV0sWzgsMF0sWzExLDBdLFsxMywxXSxbMTUsM10sWzE2LDZdLFsxNiw4XSxbMTUsMTFdLFsxMywxM10sWzExLDE0XSxbOCwxNF1dfSxwOnt3aWR0aDoxOSxwb2ludHM6W1s0LDE0XSxbNCwtN10sWy0xLC0xXSxbNCwxMV0sWzYsMTNdLFs4LDE0XSxbMTEsMTRdLFsxMywxM10sWzE1LDExXSxbMTYsOF0sWzE2LDZdLFsxNSwzXSxbMTMsMV0sWzExLDBdLFs4LDBdLFs2LDFdLFs0LDNdXX0scTp7d2lkdGg6MTkscG9pbnRzOltbMTUsMTRdLFsxNSwtN10sWy0xLC0xXSxbMTUsMTFdLFsxMywxM10sWzExLDE0XSxbOCwxNF0sWzYsMTNdLFs0LDExXSxbMyw4XSxbMyw2XSxbNCwzXSxbNiwxXSxbOCwwXSxbMTEsMF0sWzEzLDFdLFsxNSwzXV19LHI6e3dpZHRoOjEzLHBvaW50czpbWzQsMTRdLFs0LDBdLFstMSwtMV0sWzQsOF0sWzUsMTFdLFs3LDEzXSxbOSwxNF0sWzEyLDE0XV19LHM6e3dpZHRoOjE3LHBvaW50czpbWzE0LDExXSxbMTMsMTNdLFsxMCwxNF0sWzcsMTRdLFs0LDEzXSxbMywxMV0sWzQsOV0sWzYsOF0sWzExLDddLFsxMyw2XSxbMTQsNF0sWzE0LDNdLFsxMywxXSxbMTAsMF0sWzcsMF0sWzQsMV0sWzMsM11dfSx0Ont3aWR0aDoxMixwb2ludHM6W1s1LDIxXSxbNSw0XSxbNiwxXSxbOCwwXSxbMTAsMF0sWy0xLC0xXSxbMiwxNF0sWzksMTRdXX0sdTp7d2lkdGg6MTkscG9pbnRzOltbNCwxNF0sWzQsNF0sWzUsMV0sWzcsMF0sWzEwLDBdLFsxMiwxXSxbMTUsNF0sWy0xLC0xXSxbMTUsMTRdLFsxNSwwXV19LHY6e3dpZHRoOjE2LHBvaW50czpbWzIsMTRdLFs4LDBdLFstMSwtMV0sWzE0LDE0XSxbOCwwXV19LHc6e3dpZHRoOjIyLHBvaW50czpbWzMsMTRdLFs3LDBdLFstMSwtMV0sWzExLDE0XSxbNywwXSxbLTEsLTFdLFsxMSwxNF0sWzE1LDBdLFstMSwtMV0sWzE5LDE0XSxbMTUsMF1dfSx4Ont3aWR0aDoxNyxwb2ludHM6W1szLDE0XSxbMTQsMF0sWy0xLC0xXSxbMTQsMTRdLFszLDBdXX0seTp7d2lkdGg6MTYscG9pbnRzOltbMiwxNF0sWzgsMF0sWy0xLC0xXSxbMTQsMTRdLFs4LDBdLFs2LC00XSxbNCwtNl0sWzIsLTddLFsxLC03XV19LHo6e3dpZHRoOjE3LHBvaW50czpbWzE0LDE0XSxbMywwXSxbLTEsLTFdLFszLDE0XSxbMTQsMTRdLFstMSwtMV0sWzMsMF0sWzE0LDBdXX0sInsiOnt3aWR0aDoxNCxwb2ludHM6W1s5LDI1XSxbNywyNF0sWzYsMjNdLFs1LDIxXSxbNSwxOV0sWzYsMTddLFs3LDE2XSxbOCwxNF0sWzgsMTJdLFs2LDEwXSxbLTEsLTFdLFs3LDI0XSxbNiwyMl0sWzYsMjBdLFs3LDE4XSxbOCwxN10sWzksMTVdLFs5LDEzXSxbOCwxMV0sWzQsOV0sWzgsN10sWzksNV0sWzksM10sWzgsMV0sWzcsMF0sWzYsLTJdLFs2LC00XSxbNywtNl0sWy0xLC0xXSxbNiw4XSxbOCw2XSxbOCw0XSxbNywyXSxbNiwxXSxbNSwtMV0sWzUsLTNdLFs2LC01XSxbNywtNl0sWzksLTddXX0sInwiOnt3aWR0aDo4LHBvaW50czpbWzQsMjVdLFs0LC03XV19LCJ9Ijp7d2lkdGg6MTQscG9pbnRzOltbNSwyNV0sWzcsMjRdLFs4LDIzXSxbOSwyMV0sWzksMTldLFs4LDE3XSxbNywxNl0sWzYsMTRdLFs2LDEyXSxbOCwxMF0sWy0xLC0xXSxbNywyNF0sWzgsMjJdLFs4LDIwXSxbNywxOF0sWzYsMTddLFs1LDE1XSxbNSwxM10sWzYsMTFdLFsxMCw5XSxbNiw3XSxbNSw1XSxbNSwzXSxbNiwxXSxbNywwXSxbOCwtMl0sWzgsLTRdLFs3LC02XSxbLTEsLTFdLFs4LDhdLFs2LDZdLFs2LDRdLFs3LDJdLFs4LDFdLFs5LC0xXSxbOSwtM10sWzgsLTVdLFs3LC02XSxbNSwtN11dfSwifiI6e3dpZHRoOjI0LHBvaW50czpbWzMsNl0sWzMsOF0sWzQsMTFdLFs2LDEyXSxbOCwxMl0sWzEwLDExXSxbMTQsOF0sWzE2LDddLFsxOCw3XSxbMjAsOF0sWzIxLDEwXSxbLTEsLTFdLFszLDhdLFs0LDEwXSxbNiwxMV0sWzgsMTFdLFsxMCwxMF0sWzE0LDddLFsxNiw2XSxbMTgsNl0sWzIwLDddLFsyMSwxMF0sWzIxLDEyXV19fTthLmpxcGxvdC5DYW52YXNGb250UmVuZGVyZXI9ZnVuY3Rpb24oYil7Yj1ifHx7fTtpZighYi5wdDJweCl7Yi5wdDJweD0xLjV9YS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLmNhbGwodGhpcyxiKX07YS5qcXBsb3QuQ2FudmFzRm9udFJlbmRlcmVyLnByb3RvdHlwZT1uZXcgYS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyKHt9KTthLmpxcGxvdC5DYW52YXNGb250UmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWEuanFwbG90LkNhbnZhc0ZvbnRSZW5kZXJlcjthLmpxcGxvdC5DYW52YXNGb250UmVuZGVyZXIucHJvdG90eXBlLm1lYXN1cmU9ZnVuY3Rpb24oYyxlKXt2YXIgZD10aGlzLmZvbnRTaXplKyIgIit0aGlzLmZvbnRGYW1pbHk7Yy5zYXZlKCk7Yy5mb250PWQ7dmFyIGI9Yy5tZWFzdXJlVGV4dChlKS53aWR0aDtjLnJlc3RvcmUoKTtyZXR1cm4gYn07YS5qcXBsb3QuQ2FudmFzRm9udFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKGUsZyl7dmFyIGM9MDt2YXIgaD10aGlzLmhlaWdodCowLjcyO2Uuc2F2ZSgpO3ZhciBkLGI7aWYoKC1NYXRoLlBJLzI8PXRoaXMuYW5nbGUmJnRoaXMuYW5nbGU8PTApfHwoTWF0aC5QSSozLzI8PXRoaXMuYW5nbGUmJnRoaXMuYW5nbGU8PU1hdGguUEkqMikpe2Q9MDtiPS1NYXRoLnNpbih0aGlzLmFuZ2xlKSp0aGlzLndpZHRofWVsc2V7aWYoKDA8dGhpcy5hbmdsZSYmdGhpcy5hbmdsZTw9TWF0aC5QSS8yKXx8KC1NYXRoLlBJKjI8PXRoaXMuYW5nbGUmJnRoaXMuYW5nbGU8PS1NYXRoLlBJKjMvMikpe2Q9TWF0aC5zaW4odGhpcy5hbmdsZSkqdGhpcy5oZWlnaHQ7Yj0wfWVsc2V7aWYoKC1NYXRoLlBJPHRoaXMuYW5nbGUmJnRoaXMuYW5nbGU8LU1hdGguUEkvMil8fChNYXRoLlBJPD10aGlzLmFuZ2xlJiZ0aGlzLmFuZ2xlPD1NYXRoLlBJKjMvMikpe2Q9LU1hdGguY29zKHRoaXMuYW5nbGUpKnRoaXMud2lkdGg7Yj0tTWF0aC5zaW4odGhpcy5hbmdsZSkqdGhpcy53aWR0aC1NYXRoLmNvcyh0aGlzLmFuZ2xlKSp0aGlzLmhlaWdodH1lbHNle2lmKCgtTWF0aC5QSSozLzI8dGhpcy5hbmdsZSYmdGhpcy5hbmdsZTxNYXRoLlBJKXx8KE1hdGguUEkvMjx0aGlzLmFuZ2xlJiZ0aGlzLmFuZ2xlPE1hdGguUEkpKXtkPU1hdGguc2luKHRoaXMuYW5nbGUpKnRoaXMuaGVpZ2h0LU1hdGguY29zKHRoaXMuYW5nbGUpKnRoaXMud2lkdGg7Yj0tTWF0aC5jb3ModGhpcy5hbmdsZSkqdGhpcy5oZWlnaHR9fX19ZS5zdHJva2VTdHlsZT10aGlzLmZpbGxTdHlsZTtlLmZpbGxTdHlsZT10aGlzLmZpbGxTdHlsZTt2YXIgZj10aGlzLmZvbnRTaXplKyIgIit0aGlzLmZvbnRGYW1pbHk7ZS5mb250PWY7ZS50cmFuc2xhdGUoZCxiKTtlLnJvdGF0ZSh0aGlzLmFuZ2xlKTtlLmZpbGxUZXh0KGcsYyxoKTtlLnJlc3RvcmUoKX19KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.categoryAxisRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgeyAgIAogICAgLyoqCiAgICAqICBjbGFzczogJC5qcXBsb3QuQ2F0ZWdvcnlBeGlzUmVuZGVyZXIKICAgICogIEEgcGx1Z2luIGZvciBqcVBsb3QgdG8gcmVuZGVyIGEgY2F0ZWdvcnkgc3R5bGUgYXhpcywgd2l0aCBlcXVhbCBwaXhlbCBzcGFjaW5nIGJldHdlZW4geSBkYXRhIHZhbHVlcyBvZiBhIHNlcmllcy4KICAgICogIAogICAgKiAgVG8gdXNlIHRoaXMgcmVuZGVyZXIsIGluY2x1ZGUgdGhlIHBsdWdpbiBpbiB5b3VyIHNvdXJjZQogICAgKiAgPiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0icGx1Z2lucy9qcXBsb3QuY2F0ZWdvcnlBeGlzUmVuZGVyZXIuanMiPjwvc2NyaXB0PgogICAgKiAgCiAgICAqICBhbmQgc3VwcGx5IHRoZSBhcHByb3ByaWF0ZSBvcHRpb25zIHRvIHlvdXIgcGxvdAogICAgKiAgCiAgICAqICA+IHtheGVzOnt4YXhpczp7cmVuZGVyZXI6JC5qcXBsb3QuQ2F0ZWdvcnlBeGlzUmVuZGVyZXJ9fX0KICAgICoqLwogICAgJC5qcXBsb3QuQ2F0ZWdvcnlBeGlzUmVuZGVyZXIgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgJC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyLmNhbGwodGhpcyk7CiAgICAgICAgLy8gcHJvcDogc29ydE1lcmdlZExhYmVscwogICAgICAgIC8vIFRydWUgdG8gc29ydCB0aWNrIGxhYmVscyB3aGVuIGxhYmVscyBhcmUgY3JlYXRlZCBieSBtZXJnaW5nCiAgICAgICAgLy8geCBheGlzIHZhbHVlcyBmcm9tIG11bHRpcGxlIHNlcmllcy4gIFRoYXQgaXMsIHNheSB5b3UgaGF2ZQogICAgICAgIC8vIHR3byBzZXJpZXMgbGlrZToKICAgICAgICAvLyA+IGxpbmUxID0gW1syMDA2LCA0XSwgICAgICAgICAgICBbMjAwOCwgOV0sIFsyMDA5LCAxNl1dOwogICAgICAgIC8vID4gbGluZTIgPSBbWzIwMDYsIDNdLCBbMjAwNywgN10sIFsyMDA4LCA2XV07CiAgICAgICAgLy8gSWYgbm8gbGFiZWwgYXJyYXkgaXMgc3BlY2lmaWVkLCB0aWNrIGxhYmVscyB3aWxsIGJlIGNvbGxlY3RlZAogICAgICAgIC8vIGZyb20gdGhlIHggdmFsdWVzIG9mIHRoZSBzZXJpZXMuICBXaXRoIHNvcnRNZXJnZWRMYWJlbHMKICAgICAgICAvLyBzZXQgdG8gdHJ1ZSwgdGljayBsYWJlbHMgd2lsbCBiZToKICAgICAgICAvLyA+IFsyMDA2LCAyMDA3LCAyMDA4LCAyMDA5XQogICAgICAgIC8vIFdpdGggc29ydE1lcmdlZExhYmVscyBzZXQgdG8gZmFsc2UsIHRpY2sgbGFiZWxzIHdpbGwgYmU6CiAgICAgICAgLy8gPiBbMjAwNiwgMjAwOCwgMjAwOSwgMjAwN10KICAgICAgICAvLwogICAgICAgIC8vIE5vdGUsIHRoaXMgcHJvcGVydHkgaXMgc3BlY2lmaWVkIG9uIHRoZSByZW5kZXJPcHRpb25zIGZvciB0aGUgCiAgICAgICAgLy8gYXhlcyB3aGVuIGNyZWF0aW5nIGEgcGxvdDoKICAgICAgICAvLyA+IGF4ZXM6e3hheGlzOntyZW5kZXJlcjokLmpxcGxvdC5DYXRlZ29yeUF4aXNSZW5kZXJlciwgcmVuZGVyZXJPcHRpb25zOntzb3J0TWVyZ2VkTGFiZWxzOnRydWV9fX0KICAgICAgICB0aGlzLnNvcnRNZXJnZWRMYWJlbHMgPSBmYWxzZTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkNhdGVnb3J5QXhpc1JlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIoKTsKICAgICQuanFwbG90LkNhdGVnb3J5QXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LkNhdGVnb3J5QXhpc1JlbmRlcmVyOwogICAgCiAgICAkLmpxcGxvdC5DYXRlZ29yeUF4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpewogICAgICAgIHRoaXMuZ3JvdXBzID0gMTsKICAgICAgICB0aGlzLmdyb3VwTGFiZWxzID0gW107CiAgICAgICAgdGhpcy5fZ3JvdXBMYWJlbHMgPSBbXTsKICAgICAgICB0aGlzLl9ncm91cGVkID0gZmFsc2U7CiAgICAgICAgdGhpcy5fYmFyc1Blckdyb3VwID0gbnVsbDsKICAgICAgICB0aGlzLnJldmVyc2UgPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiB0aWNrUmVuZGVyZXIKICAgICAgICAvLyBBIGNsYXNzIG9mIGEgcmVuZGVyaW5nIGVuZ2luZSBmb3IgY3JlYXRpbmcgdGhlIHRpY2tzIGxhYmVscyBkaXNwbGF5ZWQgb24gdGhlIHBsb3QsIAogICAgICAgIC8vIFNlZSA8JC5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlcj4uCiAgICAgICAgLy8gdGhpcy50aWNrUmVuZGVyZXIgPSAkLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyOwogICAgICAgIC8vIHRoaXMubGFiZWxSZW5kZXJlciA9ICQuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyOwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIHt0aWNrT3B0aW9uczp7Zm9ybWF0U3RyaW5nOiclZCd9fSwgb3B0aW9ucyk7CiAgICAgICAgdmFyIGRiID0gdGhpcy5fZGF0YUJvdW5kczsKICAgICAgICAvLyBHbyB0aHJvdWdoIGFsbCB0aGUgc2VyaWVzIGF0dGFjaGVkIHRvIHRoaXMgYXhpcyBhbmQgZmluZAogICAgICAgIC8vIHRoZSBtaW4vbWF4IGJvdW5kcyBmb3IgdGhpcyBheGlzLgogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHMgPSB0aGlzLl9zZXJpZXNbaV07CiAgICAgICAgICAgIGlmIChzLmdyb3VwcykgewogICAgICAgICAgICAgICAgdGhpcy5ncm91cHMgPSBzLmdyb3VwczsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgZCA9IHMuZGF0YTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGZvciAodmFyIGo9MDsgajxkLmxlbmd0aDsgaisrKSB7IAogICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnIHx8IHRoaXMubmFtZSA9PSAneDJheGlzJykgewogICAgICAgICAgICAgICAgICAgIGlmIChkW2pdWzBdIDwgZGIubWluIHx8IGRiLm1pbiA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRiLm1pbiA9IGRbal1bMF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChkW2pdWzBdID4gZGIubWF4IHx8IGRiLm1heCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRiLm1heCA9IGRbal1bMF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZFtqXVsxXSA8IGRiLm1pbiB8fCBkYi5taW4gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBkYi5taW4gPSBkW2pdWzFdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZFtqXVsxXSA+IGRiLm1heCB8fCBkYi5tYXggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBkYi5tYXggPSBkW2pdWzFdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICh0aGlzLmdyb3VwTGFiZWxzLmxlbmd0aCkgewogICAgICAgICAgICB0aGlzLmdyb3VwcyA9IHRoaXMuZ3JvdXBMYWJlbHMubGVuZ3RoOwogICAgICAgIH0KICAgIH07CiAKCiAgICAkLmpxcGxvdC5DYXRlZ29yeUF4aXNSZW5kZXJlci5wcm90b3R5cGUuY3JlYXRlVGlja3MgPSBmdW5jdGlvbigpIHsKICAgICAgICAvLyB3ZSdyZSBhcmUgb3BlcmF0aW5nIG9uIGFuIGF4aXMgaGVyZQogICAgICAgIHZhciB0aWNrcyA9IHRoaXMuX3RpY2tzOwogICAgICAgIHZhciB1c2VyVGlja3MgPSB0aGlzLnRpY2tzOwogICAgICAgIHZhciBuYW1lID0gdGhpcy5uYW1lOwogICAgICAgIC8vIGRhdGFib3VuZHMgd2VyZSBzZXQgb24gYXhpcyBpbml0aWFsaXphdGlvbi4KICAgICAgICB2YXIgZGIgPSB0aGlzLl9kYXRhQm91bmRzOwogICAgICAgIHZhciBkaW0sIGludGVydmFsOwogICAgICAgIHZhciBtaW4sIG1heDsKICAgICAgICB2YXIgcG9zMSwgcG9zMjsKICAgICAgICB2YXIgdHQsIGk7CgogICAgICAgIC8vIGlmIHdlIGFscmVhZHkgaGF2ZSB0aWNrcywgdXNlIHRoZW0uCiAgICAgICAgaWYgKHVzZXJUaWNrcy5sZW5ndGgpIHsKICAgICAgICAgICAgLy8gYWRqdXN0IHdpdGggYmxhbmtzIGlmIHdlIGhhdmUgZ3JvdXBzCiAgICAgICAgICAgIGlmICh0aGlzLmdyb3VwcyA+IDEgJiYgIXRoaXMuX2dyb3VwZWQpIHsKICAgICAgICAgICAgICAgIHZhciBsID0gdXNlclRpY2tzLmxlbmd0aDsKICAgICAgICAgICAgICAgIHZhciBza2lwID0gcGFyc2VJbnQobC90aGlzLmdyb3VwcywgMTApOwogICAgICAgICAgICAgICAgdmFyIGNvdW50ID0gMDsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9c2tpcDsgaTxsOyBpKz1za2lwKSB7CiAgICAgICAgICAgICAgICAgICAgdXNlclRpY2tzLnNwbGljZShpK2NvdW50LCAwLCAnICcpOwogICAgICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLl9ncm91cGVkID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLm1pbiA9IDAuNTsKICAgICAgICAgICAgdGhpcy5tYXggPSB1c2VyVGlja3MubGVuZ3RoICsgMC41OwogICAgICAgICAgICB2YXIgcmFuZ2UgPSB0aGlzLm1heCAtIHRoaXMubWluOwogICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gMip1c2VyVGlja3MubGVuZ3RoICsgMTsKICAgICAgICAgICAgZm9yIChpPTA7IGk8dXNlclRpY2tzLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgICAgIHR0ID0gdGhpcy5taW4gKyAyICogaSAqIHJhbmdlIC8gKHRoaXMubnVtYmVyVGlja3MtMSk7CiAgICAgICAgICAgICAgICAvLyBuZWVkIGEgbWFya2VyIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHRpY2sKICAgICAgICAgICAgICAgIHZhciB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwogICAgICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgICAgIC8vIHQuc2hvd01hcmsgPSB0cnVlOwogICAgICAgICAgICAgICAgdC5zZXRUaWNrKHR0LCB0aGlzLm5hbWUpOwogICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgICAgIHZhciB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwogICAgICAgICAgICAgICAgdC5sYWJlbCA9IHVzZXJUaWNrc1tpXTsKICAgICAgICAgICAgICAgIC8vIHQuc2hvd0xhYmVsID0gdHJ1ZTsKICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHQuc2hvd0dyaWRsaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICB0LnNldFRpY2sodHQrMC41LCB0aGlzLm5hbWUpOwogICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBub3cgYWRkIHRoZSBsYXN0IHRpY2sgYXQgdGhlIGVuZAogICAgICAgICAgICB2YXIgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTsKICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgLy8gdC5zaG93TWFyayA9IHRydWU7CiAgICAgICAgICAgIHQuc2V0VGljayh0dCsxLCB0aGlzLm5hbWUpOwogICAgICAgICAgICB0aGlzLl90aWNrcy5wdXNoKHQpOwogICAgICAgIH0KCiAgICAgICAgLy8gd2UgZG9uJ3QgaGF2ZSBhbnkgdGlja3MgeWV0LCBsZXQncyBtYWtlIHNvbWUhCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmIChuYW1lID09ICd4YXhpcycgfHwgbmFtZSA9PSAneDJheGlzJykgewogICAgICAgICAgICAgICAgZGltID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBkaW0gPSB0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIGlmIG1pbiwgbWF4IGFuZCBudW1iZXIgb2YgdGlja3Mgc3BlY2lmaWVkLCB1c2VyIGNhbid0IHNwZWNpZnkgaW50ZXJ2YWwuCiAgICAgICAgICAgIGlmICh0aGlzLm1pbiAhPSBudWxsICYmIHRoaXMubWF4ICE9IG51bGwgJiYgdGhpcy5udW1iZXJUaWNrcyAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9IG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIGlmIG1heCwgbWluLCBhbmQgaW50ZXJ2YWwgc3BlY2lmaWVkIGFuZCBpbnRlcnZhbCB3b24ndCBmaXQsIGlnbm9yZSBpbnRlcnZhbC4KICAgICAgICAgICAgaWYgKHRoaXMubWluICE9IG51bGwgJiYgdGhpcy5tYXggIT0gbnVsbCAmJiB0aGlzLnRpY2tJbnRlcnZhbCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQoKHRoaXMubWF4LXRoaXMubWluKS90aGlzLnRpY2tJbnRlcnZhbCwgMTApICE9ICh0aGlzLm1heC10aGlzLm1pbikvdGhpcy50aWNrSW50ZXJ2YWwpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9IG51bGw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAKICAgICAgICAgICAgLy8gZmluZCBvdXQgaG93IG1hbnkgY2F0ZWdvcmllcyBhcmUgaW4gdGhlIGxpbmVzIGFuZCBjb2xsZWN0IGxhYmVscwogICAgICAgICAgICB2YXIgbGFiZWxzID0gW107CiAgICAgICAgICAgIHZhciBudW1jYXRzID0gMDsKICAgICAgICAgICAgdmFyIG1pbiA9IDAuNTsKICAgICAgICAgICAgdmFyIG1heCwgdmFsOwogICAgICAgICAgICB2YXIgaXNNZXJnZWQgPSBmYWxzZTsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMuX3Nlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgdmFyIHMgPSB0aGlzLl9zZXJpZXNbaV07CiAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8cy5kYXRhLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnIHx8IHRoaXMubmFtZSA9PSAneDJheGlzJykgewogICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBzLmRhdGFbal1bMF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBzLmRhdGFbal1bMV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICgkLmluQXJyYXkodmFsLCBsYWJlbHMpID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlzTWVyZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgbnVtY2F0cyArPSAxOyAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMucHVzaCh2YWwpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGlzTWVyZ2VkICYmIHRoaXMuc29ydE1lcmdlZExhYmVscykgewogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBsYWJlbHNbMF0gPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgICAgICAgICBsYWJlbHMuc29ydCgpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBsYWJlbHMuc29ydChmdW5jdGlvbihhLGIpIHsgcmV0dXJuIGEgLSBiOyB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGVzZSB0aWNrIGxhYmVscyB0byB1c2UgZm9yIHJlZHJhd2luZyBwbG90IChzZWUgYnVnICM1NykKICAgICAgICAgICAgdGhpcy50aWNrcyA9IGxhYmVsczsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIG5vdyBiaW4gdGhlIGRhdGEgdmFsdWVzIHRvIHRoZSByaWdodCBsYWJsZXMuCiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHZhciBzID0gdGhpcy5fc2VyaWVzW2ldOwogICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPHMuZGF0YS5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gcy5kYXRhW2pdWzBdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gcy5kYXRhW2pdWzFdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAvLyBmb3IgY2F0ZWdvcnkgYXhpcywgZm9yY2UgdGhlIHZhbHVlcyBpbnRvIGNhdGVnb3J5IGJpbnMuCiAgICAgICAgICAgICAgICAgICAgLy8gd2Ugc2hvdWxkIGhhdmUgdGhlIHZhbHVlIGluIHRoZSBsYWJlbCBhcnJheSBub3cuCiAgICAgICAgICAgICAgICAgICAgdmFyIGlkeCA9ICQuaW5BcnJheSh2YWwsIGxhYmVscykrMTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lID09ICd4YXhpcycgfHwgdGhpcy5uYW1lID09ICd4MmF4aXMnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHMuZGF0YVtqXVswXSA9IGlkeDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHMuZGF0YVtqXVsxXSA9IGlkeDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIGFkanVzdCB3aXRoIGJsYW5rcyBpZiB3ZSBoYXZlIGdyb3VwcwogICAgICAgICAgICBpZiAodGhpcy5ncm91cHMgPiAxICYmICF0aGlzLl9ncm91cGVkKSB7CiAgICAgICAgICAgICAgICB2YXIgbCA9IGxhYmVscy5sZW5ndGg7CiAgICAgICAgICAgICAgICB2YXIgc2tpcCA9IHBhcnNlSW50KGwvdGhpcy5ncm91cHMsIDEwKTsKICAgICAgICAgICAgICAgIHZhciBjb3VudCA9IDA7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPXNraXA7IGk8bDsgaSs9c2tpcCsxKSB7CiAgICAgICAgICAgICAgICAgICAgbGFiZWxzW2ldID0gJyAnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5fZ3JvdXBlZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAKICAgICAgICAgICAgbWF4ID0gbnVtY2F0cyArIDAuNTsKICAgICAgICAgICAgaWYgKHRoaXMubnVtYmVyVGlja3MgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IDIqbnVtY2F0cyArIDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciByYW5nZSA9IG1heCAtIG1pbjsKICAgICAgICAgICAgdGhpcy5taW4gPSBtaW47CiAgICAgICAgICAgIHRoaXMubWF4ID0gbWF4OwogICAgICAgICAgICB2YXIgdHJhY2sgPSAwOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gdG9kbzogYWRqdXN0IHRoaXMgc28gbW9yZSB0aWNrcyBkaXNwbGF5ZWQuCiAgICAgICAgICAgIHZhciBtYXhWaXNpYmxlVGlja3MgPSBwYXJzZUludCgzK2RpbS8xMCwgMTApOwogICAgICAgICAgICB2YXIgc2tpcCA9IHBhcnNlSW50KG51bWNhdHMvbWF4VmlzaWJsZVRpY2tzLCAxMCk7CgogICAgICAgICAgICBpZiAodGhpcy50aWNrSW50ZXJ2YWwgPT0gbnVsbCkgewoKICAgICAgICAgICAgICAgIHRoaXMudGlja0ludGVydmFsID0gcmFuZ2UgLyAodGhpcy5udW1iZXJUaWNrcy0xKTsKCiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gaWYgdGlja0ludGVydmFsIGlzIHNwZWNpZmllZCwgd2Ugd2lsbCBpZ25vcmUgYW55IGNvbXB1dGVkIG1heGltdW0uCiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLm51bWJlclRpY2tzOyBpKyspewogICAgICAgICAgICAgICAgdHQgPSB0aGlzLm1pbiArIGkgKiB0aGlzLnRpY2tJbnRlcnZhbDsKICAgICAgICAgICAgICAgIHZhciB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwogICAgICAgICAgICAgICAgLy8gaWYgZXZlbiB0aWNrLCBpdCBpc24ndCBhIGNhdGVnb3J5LCBpdCdzIGEgZGl2aWRlcgogICAgICAgICAgICAgICAgaWYgKGkvMiA9PSBwYXJzZUludChpLzIsIDEwKSkgewogICAgICAgICAgICAgICAgICAgIHQuc2hvd0xhYmVsID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoc2tpcD4wICYmIHRyYWNrPHNraXApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgKz0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd0xhYmVsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgPSAwOwogICAgICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICAgICAgICAgdC5sYWJlbCA9IHQuZm9ybWF0dGVyKHQuZm9ybWF0U3RyaW5nLCBsYWJlbHNbKGktMSkvMl0pOwogICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB0LnNob3dHcmlkbGluZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdC5zZXRUaWNrKHR0LCB0aGlzLm5hbWUpOwogICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgIH07CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIGF4aXMKICAgICQuanFwbG90LkNhdGVnb3J5QXhpc1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24oY3R4LCBwbG90KSB7CiAgICAgICAgaWYgKHRoaXMuc2hvdykgewogICAgICAgICAgICAvLyBwb3B1bGF0ZSB0aGUgYXhpcyBsYWJlbCBhbmQgdmFsdWUgcHJvcGVydGllcy4KICAgICAgICAgICAgLy8gY3JlYXRlVGlja3MgaXMgYSBtZXRob2Qgb24gdGhlIHJlbmRlcmVyLCBidXQKICAgICAgICAgICAgLy8gY2FsbCBpdCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBheGlzLgogICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRpY2tzLmNhbGwodGhpcyk7CiAgICAgICAgICAgIC8vIGZpbGwgYSBkaXYgd2l0aCBheGVzIGxhYmVscyBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLgogICAgICAgICAgICAvLyBOZWVkIHRvIHByZWdlbmVyYXRlIGVhY2ggYXhpcyB0byBnZXQgaXRzIGJvdW5kcyBhbmQKICAgICAgICAgICAgLy8gcG9zaXRpb24gaXQgYW5kIHRoZSBsYWJlbHMgY29ycmVjdGx5IG9uIHRoZSBwbG90LgogICAgICAgICAgICB2YXIgZGltPTA7CiAgICAgICAgICAgIHZhciB0ZW1wOwogICAgICAgICAgICAvLyBBZGRlZCBmb3IgdGhlbWluZy4KICAgICAgICAgICAgaWYgKHRoaXMuX2VsZW0pIHsKICAgICAgICAgICAgICAgIC8vIHRoaXMuX2VsZW0uZW1wdHkoKTsKICAgICAgICAgICAgICAgIC8vIE1lbW9yeSBMZWFrcyBwYXRjaAogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5lbXB0eUZvcmNlKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRoaXMuX2VsZW0gPSB0aGlzLl9lbGVtIHx8ICQoJzxkaXYgY2xhc3M9ImpxcGxvdC1heGlzIGpxcGxvdC0nK3RoaXMubmFtZSsnIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7Ij48L2Rpdj4nKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0ud2lkdGgodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5oZWlnaHQodGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gY3JlYXRlIGEgX2xhYmVsIG9iamVjdC4KICAgICAgICAgICAgdGhpcy5sYWJlbE9wdGlvbnMuYXhpcyA9IHRoaXMubmFtZTsKICAgICAgICAgICAgdGhpcy5fbGFiZWwgPSBuZXcgdGhpcy5sYWJlbFJlbmRlcmVyKHRoaXMubGFiZWxPcHRpb25zKTsKICAgICAgICAgICAgaWYgKHRoaXMuX2xhYmVsLnNob3cpIHsKICAgICAgICAgICAgICAgIHZhciBlbGVtID0gdGhpcy5fbGFiZWwuZHJhdyhjdHgsIHBsb3QpOwogICAgICAgICAgICAgICAgZWxlbS5hcHBlbmRUbyh0aGlzLl9lbGVtKTsKICAgICAgICAgICAgfQogICAgCiAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fdGlja3M7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgdGljayA9IHRbaV07CiAgICAgICAgICAgICAgICBpZiAodGljay5zaG93TGFiZWwgJiYgKCF0aWNrLmlzTWlub3JUaWNrIHx8IHRoaXMuc2hvd01pbm9yVGlja3MpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW0gPSB0aWNrLmRyYXcoY3R4LCBwbG90KTsKICAgICAgICAgICAgICAgICAgICBlbGVtLmFwcGVuZFRvKHRoaXMuX2VsZW0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgCiAgICAgICAgICAgIHRoaXMuX2dyb3VwTGFiZWxzID0gW107CiAgICAgICAgICAgIC8vIG5vdyBtYWtlIGdyb3VwIGxhYmVscwogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5ncm91cExhYmVscy5sZW5ndGg7IGkrKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIGVsZW0gPSAkKCc8ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsiIGNsYXNzPSJqcXBsb3QtJyt0aGlzLm5hbWUrJy1ncm91cExhYmVsIj48L2Rpdj4nKTsKICAgICAgICAgICAgICAgIGVsZW0uaHRtbCh0aGlzLmdyb3VwTGFiZWxzW2ldKTsKICAgICAgICAgICAgICAgIHRoaXMuX2dyb3VwTGFiZWxzLnB1c2goZWxlbSk7CiAgICAgICAgICAgICAgICBlbGVtLmFwcGVuZFRvKHRoaXMuX2VsZW0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLl9lbGVtOwogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYXhpcwogICAgJC5qcXBsb3QuQ2F0ZWdvcnlBeGlzUmVuZGVyZXIucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKCkgeyAKICAgICAgICB2YXIgZGltID0gMDsKICAgICAgICB2YXIgdGVtcDsKICAgICAgICB2YXIgdyA9IDA7CiAgICAgICAgdmFyIGggPSAwOwogICAgICAgIHZhciBsc2hvdyA9ICh0aGlzLl9sYWJlbCA9PSBudWxsKSA/IGZhbHNlIDogdGhpcy5fbGFiZWwuc2hvdzsKICAgICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fdGlja3M7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgdGljayA9IHRbaV07CiAgICAgICAgICAgICAgICBpZiAodGljay5zaG93TGFiZWwgJiYgKCF0aWNrLmlzTWlub3JUaWNrIHx8IHRoaXMuc2hvd01pbm9yVGlja3MpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnIHx8IHRoaXMubmFtZSA9PSAneDJheGlzJykgewogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gdGljay5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSB0aWNrLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wID4gZGltKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRpbSA9IHRlbXA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICB2YXIgZGltMiA9IDA7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9ncm91cExhYmVscy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgdmFyIGwgPSB0aGlzLl9ncm91cExhYmVsc1tpXTsKICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgICAgICB0ZW1wID0gbC5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHRlbXAgPSBsLm91dGVyV2lkdGgodHJ1ZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodGVtcCA+IGRpbTIpIHsKICAgICAgICAgICAgICAgICAgICBkaW0yID0gdGVtcDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGxzaG93KSB7CiAgICAgICAgICAgICAgICB3ID0gdGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTsKICAgICAgICAgICAgICAgIGggPSB0aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTsgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnKSB7CiAgICAgICAgICAgICAgICBkaW0gKz0gZGltMiArIGg7CiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7J2hlaWdodCc6ZGltKydweCcsIGxlZnQ6JzBweCcsIGJvdHRvbTonMHB4J30pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PSAneDJheGlzJykgewogICAgICAgICAgICAgICAgZGltICs9IGRpbTIgKyBoOwogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoeydoZWlnaHQnOmRpbSsncHgnLCBsZWZ0OicwcHgnLCB0b3A6JzBweCd9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmICh0aGlzLm5hbWUgPT0gJ3lheGlzJykgewogICAgICAgICAgICAgICAgZGltICs9IGRpbTIgKyB3OwogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moeyd3aWR0aCc6ZGltKydweCcsIGxlZnQ6JzBweCcsIHRvcDonMHB4J30pOwogICAgICAgICAgICAgICAgaWYgKGxzaG93ICYmIHRoaXMuX2xhYmVsLmNvbnN0cnVjdG9yID09ICQuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCd3aWR0aCcsIHcrJ3B4Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBkaW0gKz0gZGltMiArIHc7CiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7J3dpZHRoJzpkaW0rJ3B4JywgcmlnaHQ6JzBweCcsIHRvcDonMHB4J30pOwogICAgICAgICAgICAgICAgaWYgKGxzaG93ICYmIHRoaXMuX2xhYmVsLmNvbnN0cnVjdG9yID09ICQuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCd3aWR0aCcsIHcrJ3B4Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9ICAKICAgIH07CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIGF4aXMKICAgICQuanFwbG90LkNhdGVnb3J5QXhpc1JlbmRlcmVyLnByb3RvdHlwZS5wYWNrID0gZnVuY3Rpb24ocG9zLCBvZmZzZXRzKSB7CiAgICAgICAgdmFyIHRpY2tzID0gdGhpcy5fdGlja3M7CiAgICAgICAgdmFyIG1heCA9IHRoaXMubWF4OwogICAgICAgIHZhciBtaW4gPSB0aGlzLm1pbjsKICAgICAgICB2YXIgb2ZmbWF4ID0gb2Zmc2V0cy5tYXg7CiAgICAgICAgdmFyIG9mZm1pbiA9IG9mZnNldHMubWluOwogICAgICAgIHZhciBsc2hvdyA9ICh0aGlzLl9sYWJlbCA9PSBudWxsKSA/IGZhbHNlIDogdGhpcy5fbGFiZWwuc2hvdzsKICAgICAgICB2YXIgaTsKCiAgICAgICAgZm9yICh2YXIgcCBpbiBwb3MpIHsKICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MocCwgcG9zW3BdKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgdGhpcy5fb2Zmc2V0cyA9IG9mZnNldHM7CiAgICAgICAgLy8gcGl4ZWxsZW5ndGggd2lsbCBiZSArIGZvciB4IGF4ZXMgYW5kIC0gZm9yIHkgYXhlcyBiZWNhc3VlIHBpeGVscyBhbHdheXMgbWVhc3VyZWQgZnJvbSB0b3AgbGVmdC4KICAgICAgICB2YXIgcGl4ZWxsZW5ndGggPSBvZmZtYXggLSBvZmZtaW47CiAgICAgICAgdmFyIHVuaXRsZW5ndGggPSBtYXggLSBtaW47CiAgICAgICAgCiAgICAgICAgaWYgKCF0aGlzLnJldmVyc2UpIHsKICAgICAgICAgICAgLy8gcG9pbnQgdG8gdW5pdCBhbmQgdW5pdCB0byBwb2ludCBjb252ZXJzaW9ucyByZWZlcmVuY2VzIHRvIFBsb3QgRE9NIGVsZW1lbnQgdG9wIGxlZnQgY29ybmVyLgogICAgICAgICAgICAKICAgICAgICAgICAgdGhpcy51MnAgPSBmdW5jdGlvbih1KXsKICAgICAgICAgICAgICAgIHJldHVybiAodSAtIG1pbikgKiBwaXhlbGxlbmd0aCAvIHVuaXRsZW5ndGggKyBvZmZtaW47CiAgICAgICAgICAgIH07CgogICAgICAgICAgICB0aGlzLnAydSA9IGZ1bmN0aW9uKHApewogICAgICAgICAgICAgICAgcmV0dXJuIChwIC0gb2ZmbWluKSAqIHVuaXRsZW5ndGggLyBwaXhlbGxlbmd0aCArIG1pbjsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnIHx8IHRoaXMubmFtZSA9PSAneDJheGlzJyl7CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc191MnAgPSBmdW5jdGlvbih1KXsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHUgLSBtaW4pICogcGl4ZWxsZW5ndGggLyB1bml0bGVuZ3RoOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzX3AydSA9IGZ1bmN0aW9uKHApewogICAgICAgICAgICAgICAgICAgIHJldHVybiBwICogdW5pdGxlbmd0aCAvIHBpeGVsbGVuZ3RoICsgbWluOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc191MnAgPSBmdW5jdGlvbih1KXsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHUgLSBtYXgpICogcGl4ZWxsZW5ndGggLyB1bml0bGVuZ3RoOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzX3AydSA9IGZ1bmN0aW9uKHApewogICAgICAgICAgICAgICAgICAgIHJldHVybiBwICogdW5pdGxlbmd0aCAvIHBpeGVsbGVuZ3RoICsgbWF4OwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIHBvaW50IHRvIHVuaXQgYW5kIHVuaXQgdG8gcG9pbnQgY29udmVyc2lvbnMgcmVmZXJlbmNlcyB0byBQbG90IERPTSBlbGVtZW50IHRvcCBsZWZ0IGNvcm5lci4KICAgICAgICAgICAgCiAgICAgICAgICAgIHRoaXMudTJwID0gZnVuY3Rpb24odSl7CiAgICAgICAgICAgICAgICByZXR1cm4gb2ZmbWluICsgKG1heCAtIHUpICogcGl4ZWxsZW5ndGggLyB1bml0bGVuZ3RoOwogICAgICAgICAgICB9OwoKICAgICAgICAgICAgdGhpcy5wMnUgPSBmdW5jdGlvbihwKXsKICAgICAgICAgICAgICAgIHJldHVybiBtaW4gKyAocCAtIG9mZm1pbikgKiB1bml0bGVuZ3RoIC8gcGl4ZWxsZW5ndGg7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpewogICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNfdTJwID0gZnVuY3Rpb24odSl7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChtYXggLSB1KSAqIHBpeGVsbGVuZ3RoIC8gdW5pdGxlbmd0aDsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc19wMnUgPSBmdW5jdGlvbihwKXsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcCAqIHVuaXRsZW5ndGggLyBwaXhlbGxlbmd0aCArIG1heDsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNfdTJwID0gZnVuY3Rpb24odSl7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChtaW4gLSB1KSAqIHBpeGVsbGVuZ3RoIC8gdW5pdGxlbmd0aDsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc19wMnUgPSBmdW5jdGlvbihwKXsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcCAqIHVuaXRsZW5ndGggLyBwaXhlbGxlbmd0aCArIG1pbjsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAKICAgICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPHRpY2tzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aWNrc1tpXTsKICAgICAgICAgICAgICAgICAgICBpZiAodC5zaG93ICYmIHQuc2hvd0xhYmVsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaGltOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuY29uc3RydWN0b3IgPT0gJC5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciAmJiB0LmFuZ2xlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIG5lZWQgdG8gYWRqdXN0IGF1dG8gcG9zaXRpb25pbmcgYmFzZWQgb24gd2hpY2ggYXhpcyB0aGlzIGlzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXAgPSAodGhpcy5uYW1lID09ICd4YXhpcycpID8gMSA6IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LmxhYmVsUG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhdXRvJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9zaXRpb24gYXQgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wICogdC5hbmdsZSA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5nZXRXaWR0aCgpICsgdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKC10Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3NpdGlvbiBhdCBzdGFydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKHQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2VuZCc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5nZXRXaWR0aCgpICsgdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKC10Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3RhcnQnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbih0Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWlkZGxlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldFdpZHRoKCkvMiArIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbigtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5nZXRXaWR0aCgpLzIgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5zaW4oLXQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5nZXRXaWR0aCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IHRoaXMudTJwKHQudmFsdWUpICsgc2hpbSArICdweCc7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuX2VsZW0uY3NzKCdsZWZ0JywgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5wYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgbGFiZWxlZGdlPVsnYm90dG9tJywgMF07CiAgICAgICAgICAgICAgICBpZiAobHNob3cpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IHRoaXMuX2xhYmVsLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCdsZWZ0Jywgb2ZmbWluICsgcGl4ZWxsZW5ndGgvMiAtIHcvMiArICdweCcpOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJykgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5fZWxlbS5jc3MoJ2JvdHRvbScsICcwcHgnKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxlZGdlID0gWydib3R0b20nLCB0aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5fZWxlbS5jc3MoJ3RvcCcsICcwcHgnKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxlZGdlID0gWyd0b3AnLCB0aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLnBhY2soKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gZHJhdyB0aGUgZ3JvdXAgbGFiZWxzCiAgICAgICAgICAgICAgICB2YXIgc3RlcCA9IHBhcnNlSW50KHRoaXMuX3RpY2tzLmxlbmd0aC90aGlzLmdyb3VwcywgMTApICsgMTsKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPHRoaXMuX2dyb3VwTGFiZWxzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1pZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50ID0gMDsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqPWkqc3RlcDsgajwoaSsxKSpzdGVwOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogPj0gdGhpcy5fdGlja3MubGVuZ3RoLTEpIGNvbnRpbnVlOyAvLyB0aGUgbGFzdCB0aWNrIGRvZXMgbm90IGV4aXN0IGFzIHRoZXJlIGlzIG5vIG90aGVyIGdyb3VwIGluIG9yZGVyIHRvIGhhdmUgYW4gZW1wdHkgb25lLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGlja3Nbal0uX2VsZW0gJiYgdGhpcy5fdGlja3Nbal0ubGFiZWwgIT0gIiAiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX3RpY2tzW2pdLl9lbGVtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSB0LnBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWQgKz0gcC5sZWZ0ICsgdC5vdXRlcldpZHRoKHRydWUpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG1pZCA9IG1pZC9jb3VudDsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9ncm91cExhYmVsc1tpXS5jc3MoeydsZWZ0JzoobWlkIC0gdGhpcy5fZ3JvdXBMYWJlbHNbaV0ub3V0ZXJXaWR0aCh0cnVlKS8yKX0pOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2dyb3VwTGFiZWxzW2ldLmNzcyhsYWJlbGVkZ2VbMF0sIGxhYmVsZWRnZVsxXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTx0aWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGlja3NbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvdyAmJiB0LnNob3dMYWJlbCkgeyAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2hpbTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuY29uc3RydWN0b3IgPT0gJC5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciAmJiB0LmFuZ2xlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIG5lZWQgdG8gYWRqdXN0IGF1dG8gcG9zaXRpb25pbmcgYmFzZWQgb24gd2hpY2ggYXhpcyB0aGlzIGlzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXAgPSAodGhpcy5uYW1lID09ICd5YXhpcycpID8gMSA6IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LmxhYmVsUG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhdXRvJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9zaXRpb24gYXQgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZW5kJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAgKiB0LmFuZ2xlIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5jb3MoLXQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldEhlaWdodCgpICsgdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguY29zKHQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuYW5nbGUgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLmNvcygtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5jb3ModC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWlkZGxlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHQuYW5nbGUgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkvMiArIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbigtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkvMiAtIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbih0Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldEhlaWdodCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldEhlaWdodCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSB0aGlzLnUycCh0LnZhbHVlKSArIHNoaW0gKyAncHgnOwogICAgICAgICAgICAgICAgICAgICAgICB0Ll9lbGVtLmNzcygndG9wJywgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5wYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgbGFiZWxlZGdlPVsnbGVmdCcsIDBdOwogICAgICAgICAgICAgICAgaWYgKGxzaG93KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGggPSB0aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5fZWxlbS5jc3MoJ3RvcCcsIG9mZm1heCAtIHBpeGVsbGVuZ3RoLzIgLSBoLzIgKyAncHgnKTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lID09ICd5YXhpcycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCdsZWZ0JywgJzBweCcpOwogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbGVkZ2UgPSBbJ2xlZnQnLCB0aGlzLl9sYWJlbC5fZWxlbS5vdXRlcldpZHRoKHRydWUpXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygncmlnaHQnLCAnMHB4Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsZWRnZSA9IFsncmlnaHQnLCB0aGlzLl9sYWJlbC5fZWxlbS5vdXRlcldpZHRoKHRydWUpXTsKICAgICAgICAgICAgICAgICAgICB9ICAgCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwucGFjaygpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSBncm91cCBsYWJlbHMsIHBvc2l0aW9uIHRvcCBoZXJlLCBkbyBsZWZ0IGFmdGVyIGxhYmVsIHBvc2l0aW9uLgogICAgICAgICAgICAgICAgdmFyIHN0ZXAgPSBwYXJzZUludCh0aGlzLl90aWNrcy5sZW5ndGgvdGhpcy5ncm91cHMsIDEwKSArIDE7IC8vIHN0ZXAgaXMgb25lIG1vcmUgdGhhbiBiZWZvcmUgYXMgd2UgZG9uJ3Qgd2FudCB0byBoYXZlIG92ZXJsYXBzIGluIGxvb3BzCiAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTx0aGlzLl9ncm91cExhYmVscy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciBtaWQgPSAwOwogICAgICAgICAgICAgICAgICAgIHZhciBjb3VudCA9IDA7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj1pKnN0ZXA7IGo8KGkrMSkqc3RlcDsgaisrKSB7IC8vIGogbXVzdCBuZXZlciByZWFjaCAoaSsxKSpzdGVwIGFzIHdlIGRvbid0IHdhbnQgdG8gaGF2ZSBvdmVybGFwIGJldHdlZW4gbG9vcHMKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogPj0gdGhpcy5fdGlja3MubGVuZ3RoLTEpIGNvbnRpbnVlOyAvLyB0aGUgbGFzdCB0aWNrIGRvZXMgbm90IGV4aXN0IGFzIHRoZXJlIGlzIG5vIG90aGVyIGdyb3VwIGluIG9yZGVyIHRvIGhhdmUgYW4gZW1wdHkgb25lLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGlja3Nbal0uX2VsZW0gJiYgdGhpcy5fdGlja3Nbal0ubGFiZWwgIT0gIiAiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX3RpY2tzW2pdLl9lbGVtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSB0LnBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWQgKz0gcC50b3AgKyB0Lm91dGVySGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbWlkID0gbWlkL2NvdW50OwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2dyb3VwTGFiZWxzW2ldLmNzcyh7J3RvcCc6bWlkIC0gdGhpcy5fZ3JvdXBMYWJlbHNbaV0ub3V0ZXJIZWlnaHQoKS8yfSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZ3JvdXBMYWJlbHNbaV0uY3NzKGxhYmVsZWRnZVswXSwgbGFiZWxlZGdlWzFdKTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07ICAgIAogICAgCiAgICAKfSkoalF1ZXJ5KTsK]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.categoryAxisRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGEpe2EuanFwbG90LkNhdGVnb3J5QXhpc1JlbmRlcmVyPWZ1bmN0aW9uKGIpe2EuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpO3RoaXMuc29ydE1lcmdlZExhYmVscz1mYWxzZX07YS5qcXBsb3QuQ2F0ZWdvcnlBeGlzUmVuZGVyZXIucHJvdG90eXBlPW5ldyBhLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIoKTthLmpxcGxvdC5DYXRlZ29yeUF4aXNSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9YS5qcXBsb3QuQ2F0ZWdvcnlBeGlzUmVuZGVyZXI7YS5qcXBsb3QuQ2F0ZWdvcnlBeGlzUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZSl7dGhpcy5ncm91cHM9MTt0aGlzLmdyb3VwTGFiZWxzPVtdO3RoaXMuX2dyb3VwTGFiZWxzPVtdO3RoaXMuX2dyb3VwZWQ9ZmFsc2U7dGhpcy5fYmFyc1Blckdyb3VwPW51bGw7dGhpcy5yZXZlcnNlPWZhbHNlO2EuZXh0ZW5kKHRydWUsdGhpcyx7dGlja09wdGlvbnM6e2Zvcm1hdFN0cmluZzoiJWQifX0sZSk7dmFyIGI9dGhpcy5fZGF0YUJvdW5kcztmb3IodmFyIGY9MDtmPHRoaXMuX3Nlcmllcy5sZW5ndGg7ZisrKXt2YXIgZz10aGlzLl9zZXJpZXNbZl07aWYoZy5ncm91cHMpe3RoaXMuZ3JvdXBzPWcuZ3JvdXBzfXZhciBoPWcuZGF0YTtmb3IodmFyIGM9MDtjPGgubGVuZ3RoO2MrKyl7aWYodGhpcy5uYW1lPT0ieGF4aXMifHx0aGlzLm5hbWU9PSJ4MmF4aXMiKXtpZihoW2NdWzBdPGIubWlufHxiLm1pbj09bnVsbCl7Yi5taW49aFtjXVswXX1pZihoW2NdWzBdPmIubWF4fHxiLm1heD09bnVsbCl7Yi5tYXg9aFtjXVswXX19ZWxzZXtpZihoW2NdWzFdPGIubWlufHxiLm1pbj09bnVsbCl7Yi5taW49aFtjXVsxXX1pZihoW2NdWzFdPmIubWF4fHxiLm1heD09bnVsbCl7Yi5tYXg9aFtjXVsxXX19fX1pZih0aGlzLmdyb3VwTGFiZWxzLmxlbmd0aCl7dGhpcy5ncm91cHM9dGhpcy5ncm91cExhYmVscy5sZW5ndGh9fTthLmpxcGxvdC5DYXRlZ29yeUF4aXNSZW5kZXJlci5wcm90b3R5cGUuY3JlYXRlVGlja3M9ZnVuY3Rpb24oKXt2YXIgRD10aGlzLl90aWNrczt2YXIgej10aGlzLnRpY2tzO3ZhciBGPXRoaXMubmFtZTt2YXIgQz10aGlzLl9kYXRhQm91bmRzO3ZhciB2LEE7dmFyIHEsdzt2YXIgZCxjO3ZhciBiLHg7aWYoei5sZW5ndGgpe2lmKHRoaXMuZ3JvdXBzPjEmJiF0aGlzLl9ncm91cGVkKXt2YXIgcj16Lmxlbmd0aDt2YXIgcD1wYXJzZUludChyL3RoaXMuZ3JvdXBzLDEwKTt2YXIgZT0wO2Zvcih2YXIgeD1wO3g8cjt4Kz1wKXt6LnNwbGljZSh4K2UsMCwiICIpO2UrK310aGlzLl9ncm91cGVkPXRydWV9dGhpcy5taW49MC41O3RoaXMubWF4PXoubGVuZ3RoKzAuNTt2YXIgbT10aGlzLm1heC10aGlzLm1pbjt0aGlzLm51bWJlclRpY2tzPTIqei5sZW5ndGgrMTtmb3IoeD0wO3g8ei5sZW5ndGg7eCsrKXtiPXRoaXMubWluKzIqeCptLyh0aGlzLm51bWJlclRpY2tzLTEpO3ZhciBoPW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTtoLnNob3dMYWJlbD1mYWxzZTtoLnNldFRpY2soYix0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goaCk7dmFyIGg9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2gubGFiZWw9elt4XTtoLnNob3dNYXJrPWZhbHNlO2guc2hvd0dyaWRsaW5lPWZhbHNlO2guc2V0VGljayhiKzAuNSx0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goaCl9dmFyIGg9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2guc2hvd0xhYmVsPWZhbHNlO2guc2V0VGljayhiKzEsdGhpcy5uYW1lKTt0aGlzLl90aWNrcy5wdXNoKGgpfWVsc2V7aWYoRj09InhheGlzInx8Rj09IngyYXhpcyIpe3Y9dGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGh9ZWxzZXt2PXRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodH1pZih0aGlzLm1pbiE9bnVsbCYmdGhpcy5tYXghPW51bGwmJnRoaXMubnVtYmVyVGlja3MhPW51bGwpe3RoaXMudGlja0ludGVydmFsPW51bGx9aWYodGhpcy5taW4hPW51bGwmJnRoaXMubWF4IT1udWxsJiZ0aGlzLnRpY2tJbnRlcnZhbCE9bnVsbCl7aWYocGFyc2VJbnQoKHRoaXMubWF4LXRoaXMubWluKS90aGlzLnRpY2tJbnRlcnZhbCwxMCkhPSh0aGlzLm1heC10aGlzLm1pbikvdGhpcy50aWNrSW50ZXJ2YWwpe3RoaXMudGlja0ludGVydmFsPW51bGx9fXZhciB5PVtdO3ZhciBCPTA7dmFyIHE9MC41O3ZhciB3LEU7dmFyIGY9ZmFsc2U7Zm9yKHZhciB4PTA7eDx0aGlzLl9zZXJpZXMubGVuZ3RoO3grKyl7dmFyIGs9dGhpcy5fc2VyaWVzW3hdO2Zvcih2YXIgdT0wO3U8ay5kYXRhLmxlbmd0aDt1Kyspe2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7RT1rLmRhdGFbdV1bMF19ZWxzZXtFPWsuZGF0YVt1XVsxXX1pZihhLmluQXJyYXkoRSx5KT09LTEpe2Y9dHJ1ZTtCKz0xO3kucHVzaChFKX19fWlmKGYmJnRoaXMuc29ydE1lcmdlZExhYmVscyl7aWYodHlwZW9mIHlbMF09PSJzdHJpbmciKXt5LnNvcnQoKX1lbHNle3kuc29ydChmdW5jdGlvbihqLGkpe3JldHVybiBqLWl9KX19dGhpcy50aWNrcz15O2Zvcih2YXIgeD0wO3g8dGhpcy5fc2VyaWVzLmxlbmd0aDt4Kyspe3ZhciBrPXRoaXMuX3Nlcmllc1t4XTtmb3IodmFyIHU9MDt1PGsuZGF0YS5sZW5ndGg7dSsrKXtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe0U9ay5kYXRhW3VdWzBdfWVsc2V7RT1rLmRhdGFbdV1bMV19dmFyIG49YS5pbkFycmF5KEUseSkrMTtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe2suZGF0YVt1XVswXT1ufWVsc2V7ay5kYXRhW3VdWzFdPW59fX1pZih0aGlzLmdyb3Vwcz4xJiYhdGhpcy5fZ3JvdXBlZCl7dmFyIHI9eS5sZW5ndGg7dmFyIHA9cGFyc2VJbnQoci90aGlzLmdyb3VwcywxMCk7dmFyIGU9MDtmb3IodmFyIHg9cDt4PHI7eCs9cCsxKXt5W3hdPSIgIn10aGlzLl9ncm91cGVkPXRydWV9dz1CKzAuNTtpZih0aGlzLm51bWJlclRpY2tzPT1udWxsKXt0aGlzLm51bWJlclRpY2tzPTIqQisxfXZhciBtPXctcTt0aGlzLm1pbj1xO3RoaXMubWF4PXc7dmFyIG89MDt2YXIgZz1wYXJzZUludCgzK3YvMTAsMTApO3ZhciBwPXBhcnNlSW50KEIvZywxMCk7aWYodGhpcy50aWNrSW50ZXJ2YWw9PW51bGwpe3RoaXMudGlja0ludGVydmFsPW0vKHRoaXMubnVtYmVyVGlja3MtMSl9Zm9yKHZhciB4PTA7eDx0aGlzLm51bWJlclRpY2tzO3grKyl7Yj10aGlzLm1pbit4KnRoaXMudGlja0ludGVydmFsO3ZhciBoPW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTtpZih4LzI9PXBhcnNlSW50KHgvMiwxMCkpe2guc2hvd0xhYmVsPWZhbHNlO2guc2hvd01hcms9dHJ1ZX1lbHNle2lmKHA+MCYmbzxwKXtoLnNob3dMYWJlbD1mYWxzZTtvKz0xfWVsc2V7aC5zaG93TGFiZWw9dHJ1ZTtvPTB9aC5sYWJlbD1oLmZvcm1hdHRlcihoLmZvcm1hdFN0cmluZyx5Wyh4LTEpLzJdKTtoLnNob3dNYXJrPWZhbHNlO2guc2hvd0dyaWRsaW5lPWZhbHNlfWguc2V0VGljayhiLHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChoKX19fTthLmpxcGxvdC5DYXRlZ29yeUF4aXNSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbihiLGope2lmKHRoaXMuc2hvdyl7dGhpcy5yZW5kZXJlci5jcmVhdGVUaWNrcy5jYWxsKHRoaXMpO3ZhciBoPTA7dmFyIGM7aWYodGhpcy5fZWxlbSl7dGhpcy5fZWxlbS5lbXB0eUZvcmNlKCl9dGhpcy5fZWxlbT10aGlzLl9lbGVtfHxhKCc8ZGl2IGNsYXNzPSJqcXBsb3QtYXhpcyBqcXBsb3QtJyt0aGlzLm5hbWUrJyIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyI+PC9kaXY+Jyk7aWYodGhpcy5uYW1lPT0ieGF4aXMifHx0aGlzLm5hbWU9PSJ4MmF4aXMiKXt0aGlzLl9lbGVtLndpZHRoKHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoKX1lbHNle3RoaXMuX2VsZW0uaGVpZ2h0KHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCl9dGhpcy5sYWJlbE9wdGlvbnMuYXhpcz10aGlzLm5hbWU7dGhpcy5fbGFiZWw9bmV3IHRoaXMubGFiZWxSZW5kZXJlcih0aGlzLmxhYmVsT3B0aW9ucyk7aWYodGhpcy5fbGFiZWwuc2hvdyl7dmFyIGc9dGhpcy5fbGFiZWwuZHJhdyhiLGopO2cuYXBwZW5kVG8odGhpcy5fZWxlbSl9dmFyIGY9dGhpcy5fdGlja3M7Zm9yKHZhciBlPTA7ZTxmLmxlbmd0aDtlKyspe3ZhciBkPWZbZV07aWYoZC5zaG93TGFiZWwmJighZC5pc01pbm9yVGlja3x8dGhpcy5zaG93TWlub3JUaWNrcykpe3ZhciBnPWQuZHJhdyhiLGopO2cuYXBwZW5kVG8odGhpcy5fZWxlbSl9fXRoaXMuX2dyb3VwTGFiZWxzPVtdO2Zvcih2YXIgZT0wO2U8dGhpcy5ncm91cExhYmVscy5sZW5ndGg7ZSsrKXt2YXIgZz1hKCc8ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsiIGNsYXNzPSJqcXBsb3QtJyt0aGlzLm5hbWUrJy1ncm91cExhYmVsIj48L2Rpdj4nKTtnLmh0bWwodGhpcy5ncm91cExhYmVsc1tlXSk7dGhpcy5fZ3JvdXBMYWJlbHMucHVzaChnKTtnLmFwcGVuZFRvKHRoaXMuX2VsZW0pfX1yZXR1cm4gdGhpcy5fZWxlbX07YS5qcXBsb3QuQ2F0ZWdvcnlBeGlzUmVuZGVyZXIucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe3ZhciBlPTA7dmFyIG07dmFyIGs9MDt2YXIgZj0wO3ZhciBkPSh0aGlzLl9sYWJlbD09bnVsbCk/ZmFsc2U6dGhpcy5fbGFiZWwuc2hvdztpZih0aGlzLnNob3cpe3ZhciBuPXRoaXMuX3RpY2tzO2Zvcih2YXIgYz0wO2M8bi5sZW5ndGg7YysrKXt2YXIgZz1uW2NdO2lmKGcuc2hvd0xhYmVsJiYoIWcuaXNNaW5vclRpY2t8fHRoaXMuc2hvd01pbm9yVGlja3MpKXtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe209Zy5fZWxlbS5vdXRlckhlaWdodCh0cnVlKX1lbHNle209Zy5fZWxlbS5vdXRlcldpZHRoKHRydWUpfWlmKG0+ZSl7ZT1tfX19dmFyIGo9MDtmb3IodmFyIGM9MDtjPHRoaXMuX2dyb3VwTGFiZWxzLmxlbmd0aDtjKyspe3ZhciBiPXRoaXMuX2dyb3VwTGFiZWxzW2NdO2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7bT1iLm91dGVySGVpZ2h0KHRydWUpfWVsc2V7bT1iLm91dGVyV2lkdGgodHJ1ZSl9aWYobT5qKXtqPW19fWlmKGQpe2s9dGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTtmPXRoaXMuX2xhYmVsLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpfWlmKHRoaXMubmFtZT09InhheGlzIil7ZSs9aitmO3RoaXMuX2VsZW0uY3NzKHtoZWlnaHQ6ZSsicHgiLGxlZnQ6IjBweCIsYm90dG9tOiIwcHgifSl9ZWxzZXtpZih0aGlzLm5hbWU9PSJ4MmF4aXMiKXtlKz1qK2Y7dGhpcy5fZWxlbS5jc3Moe2hlaWdodDplKyJweCIsbGVmdDoiMHB4Iix0b3A6IjBweCJ9KX1lbHNle2lmKHRoaXMubmFtZT09InlheGlzIil7ZSs9aitrO3RoaXMuX2VsZW0uY3NzKHt3aWR0aDplKyJweCIsbGVmdDoiMHB4Iix0b3A6IjBweCJ9KTtpZihkJiZ0aGlzLl9sYWJlbC5jb25zdHJ1Y3Rvcj09YS5qcXBsb3QuQXhpc0xhYmVsUmVuZGVyZXIpe3RoaXMuX2xhYmVsLl9lbGVtLmNzcygid2lkdGgiLGsrInB4Iil9fWVsc2V7ZSs9aitrO3RoaXMuX2VsZW0uY3NzKHt3aWR0aDplKyJweCIscmlnaHQ6IjBweCIsdG9wOiIwcHgifSk7aWYoZCYmdGhpcy5fbGFiZWwuY29uc3RydWN0b3I9PWEuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoIndpZHRoIixrKyJweCIpfX19fX19O2EuanFwbG90LkNhdGVnb3J5QXhpc1JlbmRlcmVyLnByb3RvdHlwZS5wYWNrPWZ1bmN0aW9uKGUsYyl7dmFyIEM9dGhpcy5fdGlja3M7dmFyIHY9dGhpcy5tYXg7dmFyIHM9dGhpcy5taW47dmFyIG49Yy5tYXg7dmFyIGw9Yy5taW47dmFyIHE9KHRoaXMuX2xhYmVsPT1udWxsKT9mYWxzZTp0aGlzLl9sYWJlbC5zaG93O3ZhciB4O2Zvcih2YXIgciBpbiBlKXt0aGlzLl9lbGVtLmNzcyhyLGVbcl0pfXRoaXMuX29mZnNldHM9Yzt2YXIgZz1uLWw7dmFyIGs9di1zO2lmKCF0aGlzLnJldmVyc2Upe3RoaXMudTJwPWZ1bmN0aW9uKGgpe3JldHVybihoLXMpKmcvaytsfTt0aGlzLnAydT1mdW5jdGlvbihoKXtyZXR1cm4oaC1sKSprL2crc307aWYodGhpcy5uYW1lPT0ieGF4aXMifHx0aGlzLm5hbWU9PSJ4MmF4aXMiKXt0aGlzLnNlcmllc191MnA9ZnVuY3Rpb24oaCl7cmV0dXJuKGgtcykqZy9rfTt0aGlzLnNlcmllc19wMnU9ZnVuY3Rpb24oaCl7cmV0dXJuIGgqay9nK3N9fWVsc2V7dGhpcy5zZXJpZXNfdTJwPWZ1bmN0aW9uKGgpe3JldHVybihoLXYpKmcva307dGhpcy5zZXJpZXNfcDJ1PWZ1bmN0aW9uKGgpe3JldHVybiBoKmsvZyt2fX19ZWxzZXt0aGlzLnUycD1mdW5jdGlvbihoKXtyZXR1cm4gbCsodi1oKSpnL2t9O3RoaXMucDJ1PWZ1bmN0aW9uKGgpe3JldHVybiBzKyhoLWwpKmsvZ307aWYodGhpcy5uYW1lPT0ieGF4aXMifHx0aGlzLm5hbWU9PSJ4MmF4aXMiKXt0aGlzLnNlcmllc191MnA9ZnVuY3Rpb24oaCl7cmV0dXJuKHYtaCkqZy9rfTt0aGlzLnNlcmllc19wMnU9ZnVuY3Rpb24oaCl7cmV0dXJuIGgqay9nK3Z9fWVsc2V7dGhpcy5zZXJpZXNfdTJwPWZ1bmN0aW9uKGgpe3JldHVybihzLWgpKmcva307dGhpcy5zZXJpZXNfcDJ1PWZ1bmN0aW9uKGgpe3JldHVybiBoKmsvZytzfX19aWYodGhpcy5zaG93KXtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe2Zvcih4PTA7eDxDLmxlbmd0aDt4Kyspe3ZhciBvPUNbeF07aWYoby5zaG93JiZvLnNob3dMYWJlbCl7dmFyIGI7aWYoby5jb25zdHJ1Y3Rvcj09YS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciYmby5hbmdsZSl7dmFyIEE9KHRoaXMubmFtZT09InhheGlzIik/MTotMTtzd2l0Y2goby5sYWJlbFBvc2l0aW9uKXtjYXNlImF1dG8iOmlmKEEqby5hbmdsZTwwKXtiPS1vLmdldFdpZHRoKCkrby5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbigtby5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWVsc2V7Yj0tby5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbihvLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9YnJlYWs7Y2FzZSJlbmQiOmI9LW8uZ2V0V2lkdGgoKStvLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKC1vLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzI7YnJlYWs7Y2FzZSJzdGFydCI6Yj0tby5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbihvLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzI7YnJlYWs7Y2FzZSJtaWRkbGUiOmI9LW8uZ2V0V2lkdGgoKS8yK28uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4oLW8uX3RleHRSZW5kZXJlci5hbmdsZSkvMjticmVhaztkZWZhdWx0OmI9LW8uZ2V0V2lkdGgoKS8yK28uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4oLW8uX3RleHRSZW5kZXJlci5hbmdsZSkvMjticmVha319ZWxzZXtiPS1vLmdldFdpZHRoKCkvMn12YXIgRD10aGlzLnUycChvLnZhbHVlKStiKyJweCI7by5fZWxlbS5jc3MoImxlZnQiLEQpO28ucGFjaygpfX12YXIgej1bImJvdHRvbSIsMF07aWYocSl7dmFyIG09dGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoImxlZnQiLGwrZy8yLW0vMisicHgiKTtpZih0aGlzLm5hbWU9PSJ4YXhpcyIpe3RoaXMuX2xhYmVsLl9lbGVtLmNzcygiYm90dG9tIiwiMHB4Iik7ej1bImJvdHRvbSIsdGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJIZWlnaHQodHJ1ZSldfWVsc2V7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJ0b3AiLCIwcHgiKTt6PVsidG9wIix0aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKV19dGhpcy5fbGFiZWwucGFjaygpfXZhciBkPXBhcnNlSW50KHRoaXMuX3RpY2tzLmxlbmd0aC90aGlzLmdyb3VwcywxMCkrMTtmb3IoeD0wO3g8dGhpcy5fZ3JvdXBMYWJlbHMubGVuZ3RoO3grKyl7dmFyIEI9MDt2YXIgZj0wO2Zvcih2YXIgdT14KmQ7dTwoeCsxKSpkO3UrKyl7aWYodT49dGhpcy5fdGlja3MubGVuZ3RoLTEpe2NvbnRpbnVlfWlmKHRoaXMuX3RpY2tzW3VdLl9lbGVtJiZ0aGlzLl90aWNrc1t1XS5sYWJlbCE9IiAiKXt2YXIgbz10aGlzLl90aWNrc1t1XS5fZWxlbTt2YXIgcj1vLnBvc2l0aW9uKCk7Qis9ci5sZWZ0K28ub3V0ZXJXaWR0aCh0cnVlKS8yO2YrK319Qj1CL2Y7dGhpcy5fZ3JvdXBMYWJlbHNbeF0uY3NzKHtsZWZ0OihCLXRoaXMuX2dyb3VwTGFiZWxzW3hdLm91dGVyV2lkdGgodHJ1ZSkvMil9KTt0aGlzLl9ncm91cExhYmVsc1t4XS5jc3MoelswXSx6WzFdKX19ZWxzZXtmb3IoeD0wO3g8Qy5sZW5ndGg7eCsrKXt2YXIgbz1DW3hdO2lmKG8uc2hvdyYmby5zaG93TGFiZWwpe3ZhciBiO2lmKG8uY29uc3RydWN0b3I9PWEuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXImJm8uYW5nbGUpe3ZhciBBPSh0aGlzLm5hbWU9PSJ5YXhpcyIpPzE6LTE7c3dpdGNoKG8ubGFiZWxQb3NpdGlvbil7Y2FzZSJhdXRvIjpjYXNlImVuZCI6aWYoQSpvLmFuZ2xlPDApe2I9LW8uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5jb3MoLW8uX3RleHRSZW5kZXJlci5hbmdsZSkvMn1lbHNle2I9LW8uZ2V0SGVpZ2h0KCkrby5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLmNvcyhvLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9YnJlYWs7Y2FzZSJzdGFydCI6aWYoby5hbmdsZT4wKXtiPS1vLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguY29zKC1vLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9ZWxzZXtiPS1vLmdldEhlaWdodCgpK28uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5jb3Moby5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWJyZWFrO2Nhc2UibWlkZGxlIjpiPS1vLmdldEhlaWdodCgpLzI7YnJlYWs7ZGVmYXVsdDpiPS1vLmdldEhlaWdodCgpLzI7YnJlYWt9fWVsc2V7Yj0tby5nZXRIZWlnaHQoKS8yfXZhciBEPXRoaXMudTJwKG8udmFsdWUpK2IrInB4IjtvLl9lbGVtLmNzcygidG9wIixEKTtvLnBhY2soKX19dmFyIHo9WyJsZWZ0IiwwXTtpZihxKXt2YXIgeT10aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoInRvcCIsbi1nLzIteS8yKyJweCIpO2lmKHRoaXMubmFtZT09InlheGlzIil7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJsZWZ0IiwiMHB4Iik7ej1bImxlZnQiLHRoaXMuX2xhYmVsLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSldfWVsc2V7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJyaWdodCIsIjBweCIpO3o9WyJyaWdodCIsdGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKV19dGhpcy5fbGFiZWwucGFjaygpfXZhciBkPXBhcnNlSW50KHRoaXMuX3RpY2tzLmxlbmd0aC90aGlzLmdyb3VwcywxMCkrMTtmb3IoeD0wO3g8dGhpcy5fZ3JvdXBMYWJlbHMubGVuZ3RoO3grKyl7dmFyIEI9MDt2YXIgZj0wO2Zvcih2YXIgdT14KmQ7dTwoeCsxKSpkO3UrKyl7aWYodT49dGhpcy5fdGlja3MubGVuZ3RoLTEpe2NvbnRpbnVlfWlmKHRoaXMuX3RpY2tzW3VdLl9lbGVtJiZ0aGlzLl90aWNrc1t1XS5sYWJlbCE9IiAiKXt2YXIgbz10aGlzLl90aWNrc1t1XS5fZWxlbTt2YXIgcj1vLnBvc2l0aW9uKCk7Qis9ci50b3Arby5vdXRlckhlaWdodCgpLzI7ZisrfX1CPUIvZjt0aGlzLl9ncm91cExhYmVsc1t4XS5jc3Moe3RvcDpCLXRoaXMuX2dyb3VwTGFiZWxzW3hdLm91dGVySGVpZ2h0KCkvMn0pO3RoaXMuX2dyb3VwTGFiZWxzW3hdLmNzcyh6WzBdLHpbMV0pfX19fX0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.ciParser.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuY2lQYXJzZXIKICAgICAqIERhdGEgUmVuZGVyZXIgZnVuY3Rpb24gd2hpY2ggY29udmVydHMgYSBjdXN0b20gSlNPTiBkYXRhIG9iamVjdCBpbnRvIGpxUGxvdCBkYXRhIGZvcm1hdC4KICAgICAqIFNldCB0aGlzIGFzIGEgY2FsbGFibGUgb24gdGhlIGpxcGxvdCBkYXRhUmVuZGVyZXIgcGxvdCBvcHRpb246CiAgICAgKiAKICAgICAqID4gcGxvdCA9ICQuanFwbG90KCdteWNoYXJ0JywgW2RhdGFdLCB7IGRhdGFSZW5kZXJlcjogJC5qcXBsb3QuY2lQYXJzZXIsIC4uLiB9KTsKICAgICAqIAogICAgICogV2hlcmUgZGF0YSBpcyBhbiBvYmplY3QgaW4gSlNPTiBmb3JtYXQgb3IgYSBKU09OIGVuY29kZWQgc3RyaW5nIGNvbmZvcm1pbmcgdG8gdGhlCiAgICAgKiBDaXR5IEluZGV4IEFQSSBzcGVjLgogICAgICogCiAgICAgKiBOb3RlIHRoYXQgY2FsbGluZyB0aGUgcmVuZGVyZXIgZnVuY3Rpb24gaXMgaGFuZGxlZCBpbnRlcm5hbGx5IGJ5IGpxUGxvdC4gIFRoZQogICAgICogdXNlciBkb2VzIG5vdCBoYXZlIHRvIGNhbGwgdGhlIGZ1bmN0aW9uLiAgVGhlIHBhcmFtZXRlcnMgZGVzY3JpYmVkIGJlbG93IHdpbGwKICAgICAqIGF1dG9tYXRpY2FsbHkgYmUgcGFzc2VkIHRvIHRoZSBjaVBhcnNlciBmdW5jdGlvbi4KICAgICAqIAogICAgICogUGFyYW1ldGVyczoKICAgICAqIGRhdGEgLSBKU09OIGVuY29kZWQgc3RyaW5nIG9yIG9iamVjdC4KICAgICAqIHBsb3QgLSByZWZlcmVuY2UgdG8ganFQbG90IFBsb3Qgb2JqZWN0LgogICAgICogCiAgICAgKiBSZXR1cm5zOgogICAgICogZGF0YSBhcnJheSBpbiBqcVBsb3QgZm9ybWF0LgogICAgICogCiAgICAgKi8KICAgICQuanFwbG90LmNpUGFyc2VyID0gZnVuY3Rpb24gKGRhdGEsIHBsb3QpIHsKICAgICAgICB2YXIgcmV0ID0gW10sCiAgICAgICAgICAgIGxpbmUsCiAgICAgICAgICAgIHRlbXAsCiAgICAgICAgICAgIGksIGosIGssIGtrOwogICAgCiAgICAgICAgIGlmICh0eXBlb2YoZGF0YSkgPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgIGRhdGEgPSAgJC5qcXBsb3QuSlNPTi5wYXJzZShkYXRhLCBoYW5kbGVTdHJpbmdzKTsKICAgICAgICAgfQogCiAgICAgICAgIGVsc2UgaWYgKHR5cGVvZihkYXRhKSA9PSAib2JqZWN0IikgewogICAgICAgICAgICAgZm9yIChrIGluIGRhdGEpIHsKICAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTxkYXRhW2tdLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoa2sgaW4gZGF0YVtrXVtpXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtrXVtpXVtra10gPSBoYW5kbGVTdHJpbmdzKGtrLCBkYXRhW2tdW2ldW2trXSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9CiAKICAgICAgICAgLy8gZnVuY3Rpb24gaGFuZGxlU3RyaW5ncwogICAgICAgICAvLyBDaGVja3MgYW55IEpTT04gZW5jb2RlZCBzdHJpbmdzIHRvIHNlZSBpZiB0aGV5IGFyZQogICAgICAgICAvLyBlbmNvZGVkIGRhdGVzLiAgSWYgc28sIHB1bGwgb3V0IHRoZSB0aW1lc3RhbXAuCiAgICAgICAgIC8vIEV4cGVjdHMgZGF0ZXMgdG8gYmUgcmVwcmVzZW50ZWQgYnkganMgdGltZXN0YW1wcy4KIAogICAgICAgICBmdW5jdGlvbiBoYW5kbGVTdHJpbmdzKGtleSwgdmFsdWUpIHsKICAgICAgICAgICAgdmFyIGE7CiAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBpZiAodmFsdWUudG9TdHJpbmcoKS5pbmRleE9mKCdEYXRlJykgPj0gMCkgewogICAgICAgICAgICAgICAgICAgIC8vaGVyZSB3ZSB3aWxsIHRyeSB0byBleHRyYWN0IHRoZSB0aWNrcyBmcm9tIHRoZSBEYXRlIHN0cmluZyBpbiB0aGUgInZhbHVlIiBmaWVsZHMgb2YgSlNPTiByZXR1cm5lZCBkYXRhCiAgICAgICAgICAgICAgICAgICAgYSA9IC9eXC9EYXRlXCgoLT9bMC05XSspXClcLyQvLmV4ZWModmFsdWUpOwogICAgICAgICAgICAgICAgICAgIGlmIChhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChhWzFdLCAxMCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgIGZvciAodmFyIHByb3AgaW4gZGF0YSkgewogICAgICAgICAgICBsaW5lID0gW107CiAgICAgICAgICAgIHRlbXAgPSBkYXRhW3Byb3BdOwogICAgICAgICAgICBzd2l0Y2ggKHByb3ApIHsKICAgICAgICAgICAgICAgIGNhc2UgIlByaWNlVGlja3MiOgogICAgICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPHRlbXAubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5wdXNoKFt0ZW1wW2ldWydUaWNrRGF0ZSddLCB0ZW1wW2ldWydQcmljZSddXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAiUHJpY2VCYXJzIjoKICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTx0ZW1wLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUucHVzaChbdGVtcFtpXVsnQmFyRGF0ZSddLCB0ZW1wW2ldWydPcGVuJ10sIHRlbXBbaV1bJ0hpZ2gnXSwgdGVtcFtpXVsnTG93J10sIHRlbXBbaV1bJ0Nsb3NlJ11dKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0LnB1c2gobGluZSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXQ7CiAgICB9Owp9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.ciParser.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGEpe2EuanFwbG90LmNpUGFyc2VyPWZ1bmN0aW9uKGcsbCl7dmFyIG09W10sbyxuLGgsZixlLGM7aWYodHlwZW9mKGcpPT0ic3RyaW5nIil7Zz1hLmpxcGxvdC5KU09OLnBhcnNlKGcsZCl9ZWxzZXtpZih0eXBlb2YoZyk9PSJvYmplY3QiKXtmb3IoZSBpbiBnKXtmb3IoaD0wO2g8Z1tlXS5sZW5ndGg7aCsrKXtmb3IoYyBpbiBnW2VdW2hdKXtnW2VdW2hdW2NdPWQoYyxnW2VdW2hdW2NdKX19fX1lbHNle3JldHVybiBudWxsfX1mdW5jdGlvbiBkKGosayl7dmFyIGk7aWYoayE9bnVsbCl7aWYoay50b1N0cmluZygpLmluZGV4T2YoIkRhdGUiKT49MCl7aT0vXlwvRGF0ZVwoKC0/WzAtOV0rKVwpXC8kLy5leGVjKGspO2lmKGkpe3JldHVybiBwYXJzZUludChpWzFdLDEwKX19cmV0dXJuIGt9fWZvcih2YXIgYiBpbiBnKXtvPVtdO249Z1tiXTtzd2l0Y2goYil7Y2FzZSJQcmljZVRpY2tzIjpmb3IoaD0wO2g8bi5sZW5ndGg7aCsrKXtvLnB1c2goW25baF1bIlRpY2tEYXRlIl0sbltoXVsiUHJpY2UiXV0pfWJyZWFrO2Nhc2UiUHJpY2VCYXJzIjpmb3IoaD0wO2g8bi5sZW5ndGg7aCsrKXtvLnB1c2goW25baF1bIkJhckRhdGUiXSxuW2hdWyJPcGVuIl0sbltoXVsiSGlnaCJdLG5baF1bIkxvdyJdLG5baF1bIkNsb3NlIl1dKX1icmVha31tLnB1c2gobyl9cmV0dXJuIG19fSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.cursor.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgCiAgICAvKioKICAgICAqIENsYXNzOiAkLmpxcGxvdC5DdXJzb3IKICAgICAqIFBsdWdpbiBjbGFzcyByZXByZXNlbnRpbmcgdGhlIGN1cnNvciBhcyBkaXNwbGF5ZWQgb24gdGhlIHBsb3QuCiAgICAgKi8KICAgICQuanFwbG90LkN1cnNvciA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAvLyBHcm91cDogUHJvcGVydGllcwogICAgICAgIC8vCiAgICAgICAgLy8gcHJvcDogc3R5bGUKICAgICAgICAvLyBDU1Mgc3BlYyBmb3IgY3Vyc29yIHN0eWxlCiAgICAgICAgdGhpcy5zdHlsZSA9ICdjcm9zc2hhaXInOwogICAgICAgIHRoaXMucHJldmlvdXNDdXJzb3IgPSAnYXV0byc7CiAgICAgICAgLy8gcHJvcDogc2hvdwogICAgICAgIC8vIHdoZXRoZXIgdG8gc2hvdyB0aGUgY3Vyc29yIG9yIG5vdC4KICAgICAgICB0aGlzLnNob3cgPSAkLmpxcGxvdC5jb25maWcuZW5hYmxlUGx1Z2luczsKICAgICAgICAvLyBwcm9wOiBzaG93VG9vbHRpcAogICAgICAgIC8vIHNob3cgYSBjdXJzb3IgcG9zaXRpb24gdG9vbHRpcC4gIExvY2F0aW9uIG9mIHRoZSB0b29sdGlwCiAgICAgICAgLy8gd2lsbCBiZSBjb250cm9sbGVkIGJ5IGZvbGxvd01vdXNlIGFuZCB0b29sdGlwTG9jYXRpb24uCiAgICAgICAgdGhpcy5zaG93VG9vbHRpcCA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogZm9sbG93TW91c2UKICAgICAgICAvLyBUb29sdGlwIGZvbGxvd3MgdGhlIG1vdXNlLCBpdCBpcyBub3QgYXQgYSBmaXhlZCBsb2NhdGlvbi4KICAgICAgICAvLyBUb29sdGlwIHdpbGwgc2hvdyBvbiB0aGUgZ3JpZCBhdCB0aGUgbG9jYXRpb24gZ2l2ZW4gYnkKICAgICAgICAvLyB0b29sdGlwTG9jYXRpb24sIG9mZnNldCBmcm9tIHRoZSBncmlkIGVkZ2UgYnkgdG9vbHRpcE9mZnNldC4KICAgICAgICB0aGlzLmZvbGxvd01vdXNlID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogdG9vbHRpcExvY2F0aW9uCiAgICAgICAgLy8gV2hlcmUgdG8gcG9zaXRpb24gdG9vbHRpcC4gIElmIGZvbGxvd01vdXNlIGlzIHRydWUsIHRoaXMgaXMKICAgICAgICAvLyByZWxhdGl2ZSB0byB0aGUgY3Vyc29yLCBvdGhlcndpc2UsIGl0IGlzIHJlbGF0aXZlIHRvIHRoZSBncmlkLgogICAgICAgIC8vIE9uZSBvZiAnbicsICduZScsICdlJywgJ3NlJywgJ3MnLCAnc3cnLCAndycsICdudycKICAgICAgICB0aGlzLnRvb2x0aXBMb2NhdGlvbiA9ICdzZSc7CiAgICAgICAgLy8gcHJvcDogdG9vbHRpcE9mZnNldAogICAgICAgIC8vIFBpeGVsIG9mZnNldCBvZiB0b29sdGlwIGZyb20gdGhlIGdyaWQgYm91ZGFyaWVzIG9yIGN1cnNvciBjZW50ZXIuCiAgICAgICAgdGhpcy50b29sdGlwT2Zmc2V0ID0gNjsKICAgICAgICAvLyBwcm9wOiBzaG93VG9vbHRpcEdyaWRQb3NpdGlvbgogICAgICAgIC8vIHNob3cgdGhlIGdyaWQgcGl4ZWwgY29vcmRpbmF0ZXMgb2YgdGhlIG1vdXNlLgogICAgICAgIHRoaXMuc2hvd1Rvb2x0aXBHcmlkUG9zaXRpb24gPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiBzaG93VG9vbHRpcFVuaXRQb3NpdGlvbgogICAgICAgIC8vIHNob3cgdGhlIHVuaXQgKGRhdGEpIGNvb3JkaW5hdGVzIG9mIHRoZSBtb3VzZS4KICAgICAgICB0aGlzLnNob3dUb29sdGlwVW5pdFBvc2l0aW9uID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBzaG93VG9vbHRpcERhdGFQb3NpdGlvbgogICAgICAgIC8vIFVzZWQgd2l0aCBzaG93VmVydGljYWxMaW5lIHRvIHNob3cgaW50ZXJzZWN0aW5nIGRhdGEgcG9pbnRzIGluIHRoZSB0b29sdGlwLgogICAgICAgIHRoaXMuc2hvd1Rvb2x0aXBEYXRhUG9zaXRpb24gPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiB0b29sdGlwRm9ybWF0U3RyaW5nCiAgICAgICAgLy8gc3ByaW50ZiBmb3JtYXQgc3RyaW5nIGZvciB0aGUgdG9vbHRpcC4KICAgICAgICAvLyBVc2VzIEFzaCBTZWFybGUncyBqYXZhc2NyaXB0IHNwcmludGYgaW1wbGVtZW50YXRpb24KICAgICAgICAvLyBmb3VuZCBoZXJlOiBodHRwOi8vaGV4bWVuLmNvbS9ibG9nLzIwMDcvMDMvcHJpbnRmLXNwcmludGYvCiAgICAgICAgLy8gU2VlIGh0dHA6Ly9wZXJsZG9jLnBlcmwub3JnL2Z1bmN0aW9ucy9zcHJpbnRmLmh0bWwgZm9yIHJlZmVyZW5jZQogICAgICAgIC8vIE5vdGUsIGlmIHNob3dUb29sdGlwRGF0YVBvc2l0aW9uIGlzIHRydWUsIHRoZSBkZWZhdWx0IHRvb2x0aXBGb3JtYXRTdHJpbmcKICAgICAgICAvLyB3aWxsIGJlIHNldCB0byB0aGUgY3Vyc29yTGVnZW5kRm9ybWF0U3RyaW5nLCBub3QgdGhlIGRlZmF1bHQgZ2l2ZW4gaGVyZS4KICAgICAgICB0aGlzLnRvb2x0aXBGb3JtYXRTdHJpbmcgPSAnJS40UCwgJS40UCc7CiAgICAgICAgLy8gcHJvcDogdXNlQXhlc0Zvcm1hdHRlcnMKICAgICAgICAvLyBVc2UgdGhlIHggYW5kIHkgYXhlcyBmb3JtYXR0ZXJzIHRvIGZvcm1hdCB0aGUgdGV4dCBpbiB0aGUgdG9vbHRpcC4KICAgICAgICB0aGlzLnVzZUF4ZXNGb3JtYXR0ZXJzID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiB0b29sdGlwQXhpc0dyb3VwcwogICAgICAgIC8vIFNob3cgcG9zaXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgYXhlcy4KICAgICAgICAvLyBUaGlzIGlzIGFuIGFycmF5IGxpa2UgW1sneGF4aXMnLCAneWF4aXMnXSwgWyd4YXhpcycsICd5MmF4aXMnXV0KICAgICAgICAvLyBEZWZhdWx0IGlzIHRvIGNvbXB1dGUgYXV0b21hdGljYWxseSBmb3IgYWxsIHZpc2libGUgYXhlcy4KICAgICAgICB0aGlzLnRvb2x0aXBBeGlzR3JvdXBzID0gW107CiAgICAgICAgLy8gcHJvcDogem9vbQogICAgICAgIC8vIEVuYWJsZSBwbG90IHpvb21pbmcuCiAgICAgICAgdGhpcy56b29tID0gZmFsc2U7CiAgICAgICAgLy8gem9vbVByb3h5IGFuZCB6b29tVGFyZ2V0IHByb3BlcnRpZXMgYXJlIG5vdCBkaXJlY3RseSBzZXQgYnkgdXNlci4gIAogICAgICAgIC8vIFRoZXkgV2lsbCBiZSBzZXQgdGhyb3VnaCBjYWxsIHRvIHpvb21Qcm94eSBtZXRob2QuCiAgICAgICAgdGhpcy56b29tUHJveHkgPSBmYWxzZTsKICAgICAgICB0aGlzLnpvb21UYXJnZXQgPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiBsb29zZVpvb20KICAgICAgICAvLyBXaWxsIGV4cGFuZCB6b29tIHJhbmdlIHRvIHByb3ZpZGUgbW9yZSByb3VuZGVkIHRpY2sgdmFsdWVzLgogICAgICAgIC8vIFdvcmtzIG9ubHkgd2l0aCBsaW5lYXIsIGxvZyBhbmQgZGF0ZSBheGVzLgogICAgICAgIHRoaXMubG9vc2Vab29tID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBjbGlja1Jlc2V0CiAgICAgICAgLy8gV2lsbCByZXNldCBwbG90IHpvb20gaWYgc2luZ2xlIGNsaWNrIG9uIHBsb3Qgd2l0aG91dCBkcmFnLgogICAgICAgIHRoaXMuY2xpY2tSZXNldCA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGRibENsaWNrUmVzZXQKICAgICAgICAvLyBXaWxsIHJlc2V0IHBsb3Qgem9vbSBpZiBkb3VibGUgY2xpY2sgb24gcGxvdCB3aXRob3V0IGRyYWcuCiAgICAgICAgdGhpcy5kYmxDbGlja1Jlc2V0ID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBzaG93VmVydGljYWxMaW5lCiAgICAgICAgLy8gZHJhdyBhIHZlcnRpY2FsIGxpbmUgYWNyb3NzIHRoZSBwbG90IHdoaWNoIGZvbGxvd3MgdGhlIGN1cnNvci4KICAgICAgICAvLyBXaGVuIHRoZSBsaW5lIGlzIG5lYXIgYSBkYXRhIHBvaW50LCBhIHNwZWNpYWwgbGVnZW5kIGFuZC9vciB0b29sdGlwIGNhbgogICAgICAgIC8vIGJlIHVwZGF0ZWQgd2l0aCB0aGUgZGF0YSB2YWx1ZXMuCiAgICAgICAgdGhpcy5zaG93VmVydGljYWxMaW5lID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogc2hvd0hvcml6b250YWxMaW5lCiAgICAgICAgLy8gZHJhdyBhIGhvcml6b250YWwgbGluZSBhY3Jvc3MgdGhlIHBsb3Qgd2hpY2ggZm9sbG93cyB0aGUgY3Vyc29yLgogICAgICAgIHRoaXMuc2hvd0hvcml6b250YWxMaW5lID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogY29uc3RyYWluWm9vbVRvCiAgICAgICAgLy8gJ25vbmUnLCAneCcgb3IgJ3knCiAgICAgICAgdGhpcy5jb25zdHJhaW5ab29tVG8gPSAnbm9uZSc7CiAgICAgICAgLy8gLy8gcHJvcDogYXV0b3NjYWxlQ29uc3RyYWludAogICAgICAgIC8vIC8vIHdoZW4gYSBjb25zdHJhaW5lZCBheGlzIGlzIHNwZWNpZmllZCwgdHJ1ZSB3aWxsCiAgICAgICAgLy8gLy8gYXVhdG9zY2FsZSB0aGUgYWRqYWNlbnQgYXhpcy4KICAgICAgICAvLyB0aGlzLmF1dG9zY2FsZUNvbnN0cmFpbnQgPSB0cnVlOwogICAgICAgIHRoaXMuc2hhcGVSZW5kZXJlciA9IG5ldyAkLmpxcGxvdC5TaGFwZVJlbmRlcmVyKCk7CiAgICAgICAgdGhpcy5fem9vbSA9IHtzdGFydDpbXSwgZW5kOltdLCBzdGFydGVkOiBmYWxzZSwgem9vbWluZzpmYWxzZSwgaXNab29tZWQ6ZmFsc2UsIGF4ZXM6e3N0YXJ0Ont9LCBlbmQ6e319LCBncmlkcG9zOnt9LCBkYXRhcG9zOnt9fTsKICAgICAgICB0aGlzLl90b29sdGlwRWxlbTsKICAgICAgICB0aGlzLnpvb21DYW52YXM7CiAgICAgICAgdGhpcy5jdXJzb3JDYW52YXM7CiAgICAgICAgLy8gcHJvcDogaW50ZXJzZWN0aW9uVGhyZXNob2xkCiAgICAgICAgLy8gcGl4ZWwgZGlzdGFuY2UgZnJvbSBkYXRhIHBvaW50IG9yIG1hcmtlciB0byBjb25zaWRlciBjdXJzb3IgbGluZXMgaW50ZXJzZWN0aW5nIHdpdGggcG9pbnQuCiAgICAgICAgLy8gSWYgZGF0YSBwb2ludCBtYXJrZXJzIGFyZSBub3Qgc2hvd24sIHRoaXMgc2hvdWxkIGJlID49IDEgb3Igd2lsbCBvZnRlbiBtaXNzIHBvaW50IGludGVyc2VjdGlvbnMuCiAgICAgICAgdGhpcy5pbnRlcnNlY3Rpb25UaHJlc2hvbGQgPSAyOwogICAgICAgIC8vIHByb3A6IHNob3dDdXJzb3JMZWdlbmQKICAgICAgICAvLyBSZXBsYWNlIHRoZSBwbG90IGxlZ2VuZCB3aXRoIGFuIGVuaGFuY2VkIGxlZ2VuZCBkaXNwbGF5aW5nIGludGVyc2VjdGlvbiBpbmZvcm1hdGlvbi4KICAgICAgICB0aGlzLnNob3dDdXJzb3JMZWdlbmQgPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiBjdXJzb3JMZWdlbmRGb3JtYXRTdHJpbmcKICAgICAgICAvLyBGb3JtYXQgc3RyaW5nIHVzZWQgaW4gdGhlIGN1cnNvciBsZWdlbmQuICBJZiBzaG93VG9vbHRpcERhdGFQb3NpdGlvbiBpcyB0cnVlLAogICAgICAgIC8vIHRoaXMgd2lsbCBhbHNvIGJlIHRoZSBkZWZhdWx0IGZvcm1hdCBzdHJpbmcgdXNlZCBieSB0b29sdGlwRm9ybWF0U3RyaW5nLgogICAgICAgIHRoaXMuY3Vyc29yTGVnZW5kRm9ybWF0U3RyaW5nID0gJC5qcXBsb3QuQ3Vyc29yLmN1cnNvckxlZ2VuZEZvcm1hdFN0cmluZzsKICAgICAgICAvLyB3aGV0aGVyIHRoZSBjdXJzb3IgaXMgb3ZlciB0aGUgZ3JpZCBvciBub3QuCiAgICAgICAgdGhpcy5fb2xkSGFuZGxlcnMgPSB7b25zZWxlY3RzdGFydDogbnVsbCwgb25kcmFnOiBudWxsLCBvbm1vdXNlZG93bjogbnVsbH07CiAgICAgICAgLy8gcHJvcDogY29uc3RyYWluT3V0c2lkZVpvb20KICAgICAgICAvLyBUcnVlIHRvIGxpbWl0IGFjdHVhbCB6b29tIGFyZWEgdG8gZWRnZXMgb2YgZ3JpZCwgZXZlbiB3aGVuIHpvb21pbmcKICAgICAgICAvLyBvdXRzaWRlIG9mIHBsb3QgYXJlYS4gIFRoYXQgaXMsIGNhbid0IHpvb20gb3V0IGJ5IG1vdXNpbmcgb3V0c2lkZSBwbG90LgogICAgICAgIHRoaXMuY29uc3RyYWluT3V0c2lkZVpvb20gPSB0cnVlOwogICAgICAgIC8vIHByb3A6IHNob3dUb29sdGlwT3V0c2lkZVpvb20KICAgICAgICAvLyBUcnVlIHdpbGwga2VlcCB1cGRhdGluZyB0aGUgdG9vbHRpcCB3aGVuIHpvb21pbmcgb2YgdGhlIGdyaWQuCiAgICAgICAgdGhpcy5zaG93VG9vbHRpcE91dHNpZGVab29tID0gZmFsc2U7CiAgICAgICAgLy8gdHJ1ZSBpZiBtb3VzZSBpcyBvdmVyIGdyaWQsIGZhbHNlIGlmIG5vdC4KICAgICAgICB0aGlzLm9uR3JpZCA9IGZhbHNlOwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQ3Vyc29yLmN1cnNvckxlZ2VuZEZvcm1hdFN0cmluZyA9ICclcyB4OiVzLCB5OiVzJzsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgcGxvdAogICAgJC5qcXBsb3QuQ3Vyc29yLmluaXQgPSBmdW5jdGlvbiAodGFyZ2V0LCBkYXRhLCBvcHRzKXsKICAgICAgICAvLyBhZGQgYSBjdXJzb3IgYXR0cmlidXRlIHRvIHRoZSBwbG90CiAgICAgICAgdmFyIG9wdGlvbnMgPSBvcHRzIHx8IHt9OwogICAgICAgIHRoaXMucGx1Z2lucy5jdXJzb3IgPSBuZXcgJC5qcXBsb3QuQ3Vyc29yKG9wdGlvbnMuY3Vyc29yKTsKICAgICAgICB2YXIgYyA9IHRoaXMucGx1Z2lucy5jdXJzb3I7CgogICAgICAgIGlmIChjLnNob3cpIHsKICAgICAgICAgICAgJC5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLnB1c2goWydqcXBsb3RNb3VzZUVudGVyJywgaGFuZGxlTW91c2VFbnRlcl0pOwogICAgICAgICAgICAkLmpxcGxvdC5ldmVudExpc3RlbmVySG9va3MucHVzaChbJ2pxcGxvdE1vdXNlTGVhdmUnLCBoYW5kbGVNb3VzZUxlYXZlXSk7CiAgICAgICAgICAgICQuanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsnanFwbG90TW91c2VNb3ZlJywgaGFuZGxlTW91c2VNb3ZlXSk7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoYy5zaG93Q3Vyc29yTGVnZW5kKSB7ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIG9wdHMubGVnZW5kID0gb3B0cy5sZWdlbmQgfHwge307CiAgICAgICAgICAgICAgICBvcHRzLmxlZ2VuZC5yZW5kZXJlciA9ICAkLmpxcGxvdC5DdXJzb3JMZWdlbmRSZW5kZXJlcjsKICAgICAgICAgICAgICAgIG9wdHMubGVnZW5kLmZvcm1hdFN0cmluZyA9IHRoaXMucGx1Z2lucy5jdXJzb3IuY3Vyc29yTGVnZW5kRm9ybWF0U3RyaW5nOwogICAgICAgICAgICAgICAgb3B0cy5sZWdlbmQuc2hvdyA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChjLnpvb20pIHsKICAgICAgICAgICAgICAgICQuanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsnanFwbG90TW91c2VEb3duJywgaGFuZGxlTW91c2VEb3duXSk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmIChjLmNsaWNrUmVzZXQpIHsKICAgICAgICAgICAgICAgICAgICAkLmpxcGxvdC5ldmVudExpc3RlbmVySG9va3MucHVzaChbJ2pxcGxvdENsaWNrJywgaGFuZGxlQ2xpY2tdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYgKGMuZGJsQ2xpY2tSZXNldCkgewogICAgICAgICAgICAgICAgICAgICQuanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsnanFwbG90RGJsQ2xpY2snLCBoYW5kbGVEYmxDbGlja10pOwogICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgCiAgICAgICAgICAgIHRoaXMucmVzZXRab29tID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgYXhlcyA9IHRoaXMuYXhlczsKICAgICAgICAgICAgICAgIGlmICghYy56b29tUHJveHkpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBheCBpbiBheGVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGF4ZXNbYXhdLnJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGF4ZXNbYXhdLl90aWNrcyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBmYWtlIG91dCB0aWNrIGNyZWF0aW9uIGFsZ29yaXRobSB0byBtYWtlIHN1cmUgb3JpZ2luYWwgYXV0bwogICAgICAgICAgICAgICAgICAgICAgICAvLyBjb21wdXRlZCBmb3JtYXQgc3RyaW5nIGlzIHVzZWQgaWYgX292ZXJyaWRlRm9ybWF0U3RyaW5nIGlzIHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMuX3pvb20uYXhlc1theF0gIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXhlc1theF0uX2F1dG9Gb3JtYXRTdHJpbmcgPSBjLl96b29tLmF4ZXNbYXhdLnRpY2tGb3JtYXRTdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWRyYXcoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZhciBjdHggPSB0aGlzLnBsdWdpbnMuY3Vyc29yLnpvb21DYW52YXMuX2N0eDsKICAgICAgICAgICAgICAgICAgICBjdHguY2xlYXJSZWN0KDAsMCxjdHguY2FudmFzLndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgY3R4ID0gbnVsbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRoaXMucGx1Z2lucy5jdXJzb3IuX3pvb20uaXNab29tZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRyaWdnZXIoJ2pxcGxvdFJlc2V0Wm9vbScsIFt0aGlzLCB0aGlzLnBsdWdpbnMuY3Vyc29yXSk7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIAoKICAgICAgICAgICAgaWYgKGMuc2hvd1Rvb2x0aXBEYXRhUG9zaXRpb24pIHsKICAgICAgICAgICAgICAgIGMuc2hvd1Rvb2x0aXBVbml0UG9zaXRpb24gPSBmYWxzZTsKICAgICAgICAgICAgICAgIGMuc2hvd1Rvb2x0aXBHcmlkUG9zaXRpb24gPSBmYWxzZTsKICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmN1cnNvci50b29sdGlwRm9ybWF0U3RyaW5nID09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgIGMudG9vbHRpcEZvcm1hdFN0cmluZyA9ICQuanFwbG90LkN1cnNvci5jdXJzb3JMZWdlbmRGb3JtYXRTdHJpbmc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBjb250ZXh0IG9mIHBsb3QKICAgICQuanFwbG90LkN1cnNvci5wb3N0RHJhdyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBjID0gdGhpcy5wbHVnaW5zLmN1cnNvcjsKICAgICAgICAKICAgICAgICAvLyBNZW1vcnkgTGVha3MgcGF0Y2gKICAgICAgICBpZiAoYy56b29tQ2FudmFzKSB7CiAgICAgICAgICAgIGMuem9vbUNhbnZhcy5yZXNldENhbnZhcygpOwogICAgICAgICAgICBjLnpvb21DYW52YXMgPSBudWxsOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoYy5jdXJzb3JDYW52YXMpIHsKICAgICAgICAgICAgYy5jdXJzb3JDYW52YXMucmVzZXRDYW52YXMoKTsKICAgICAgICAgICAgYy5jdXJzb3JDYW52YXMgPSBudWxsOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoYy5fdG9vbHRpcEVsZW0pIHsKICAgICAgICAgICAgYy5fdG9vbHRpcEVsZW0uZW1wdHlGb3JjZSgpOwogICAgICAgICAgICBjLl90b29sdGlwRWxlbSA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICAKICAgICAgICBpZiAoYy56b29tKSB7CiAgICAgICAgICAgIGMuem9vbUNhbnZhcyA9IG5ldyAkLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7CiAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKGMuem9vbUNhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCAnanFwbG90LXpvb20tY2FudmFzJywgdGhpcy5fcGxvdERpbWVuc2lvbnMsIHRoaXMpKTsKICAgICAgICAgICAgYy56b29tQ2FudmFzLnNldENvbnRleHQoKTsKICAgICAgICB9CgogICAgICAgIHZhciBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgYy5fdG9vbHRpcEVsZW0gPSAkKGVsZW0pOwogICAgICAgIGVsZW0gPSBudWxsOwogICAgICAgIGMuX3Rvb2x0aXBFbGVtLmFkZENsYXNzKCdqcXBsb3QtY3Vyc29yLXRvb2x0aXAnKTsKICAgICAgICBjLl90b29sdGlwRWxlbS5jc3Moe3Bvc2l0aW9uOidhYnNvbHV0ZScsIGRpc3BsYXk6J25vbmUnfSk7CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgaWYgKGMuem9vbUNhbnZhcykgewogICAgICAgICAgICBjLnpvb21DYW52YXMuX2VsZW0uYmVmb3JlKGMuX3Rvb2x0aXBFbGVtKTsKICAgICAgICB9CgogICAgICAgIGVsc2UgewogICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZShjLl90b29sdGlwRWxlbSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoYy5zaG93VmVydGljYWxMaW5lIHx8IGMuc2hvd0hvcml6b250YWxMaW5lKSB7CiAgICAgICAgICAgIGMuY3Vyc29yQ2FudmFzID0gbmV3ICQuanFwbG90LkdlbmVyaWNDYW52YXMoKTsKICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUoYy5jdXJzb3JDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywgJ2pxcGxvdC1jdXJzb3ItY2FudmFzJywgdGhpcy5fcGxvdERpbWVuc2lvbnMsIHRoaXMpKTsKICAgICAgICAgICAgYy5jdXJzb3JDYW52YXMuc2V0Q29udGV4dCgpOwogICAgICAgIH0KCiAgICAgICAgLy8gaWYgd2UgYXJlIHNob3dpbmcgdGhlIHBvc2l0aW9ucyBpbiB1bml0IGNvb3JkaW5hdGVzLCBhbmQgbm8gYXhlcyBncm91cHMKICAgICAgICAvLyB3ZXJlIHNwZWNpZmllZCwgY3JlYXRlIGEgZGVmYXVsdCBzZXQuCiAgICAgICAgaWYgKGMuc2hvd1Rvb2x0aXBVbml0UG9zaXRpb24pewogICAgICAgICAgICBpZiAoYy50b29sdGlwQXhpc0dyb3Vwcy5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgICAgIHZhciBzZXJpZXMgPSB0aGlzLnNlcmllczsKICAgICAgICAgICAgICAgIHZhciBzOwogICAgICAgICAgICAgICAgdmFyIHRlbXAgPSBbXTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxzZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBzID0gc2VyaWVzW2ldOwogICAgICAgICAgICAgICAgICAgIHZhciBheCA9IHMueGF4aXMrJywnK3MueWF4aXM7CiAgICAgICAgICAgICAgICAgICAgaWYgKCQuaW5BcnJheShheCwgdGVtcCkgPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5wdXNoKGF4KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGVtcC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIGMudG9vbHRpcEF4aXNHcm91cHMucHVzaCh0ZW1wW2ldLnNwbGl0KCcsJykpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKICAgIAogICAgLy8gR3JvdXA6IG1ldGhvZHMKICAgIC8vCiAgICAvLyBtZXRob2Q6ICQuanFwbG90LkN1cnNvci56b29tUHJveHkKICAgIC8vIGxpbmtzIHRhcmdldFBsb3QgdG8gY29udHJvbGxlclBsb3Qgc28gdGhhdCBwbG90IHpvb21pbmcgb2YKICAgIC8vIHRhcmdldFBsb3Qgd2lsbCBiZSBjb250cm9sbGVkIGJ5IHpvb21pbmcgb24gdGhlIGNvbnRyb2xsZXJQbG90LgogICAgLy8gY29udHJvbGxlclBsb3Qgd2lsbCBub3QgYWN0dWFsbHkgem9vbSwgYnV0IGFjdHMgYXMgYW4KICAgIC8vIG92ZXJ2aWV3IHBsb3QuICBOb3RlLCB0aGUgem9vbSBvcHRpb25zIG11c3QgYmUgc2V0IHRvIHRydWUgZm9yCiAgICAvLyB6b29tUHJveHkgdG8gd29yay4KICAgICQuanFwbG90LkN1cnNvci56b29tUHJveHkgPSBmdW5jdGlvbih0YXJnZXRQbG90LCBjb250cm9sbGVyUGxvdCkgewogICAgICAgIHZhciB0YyA9IHRhcmdldFBsb3QucGx1Z2lucy5jdXJzb3I7CiAgICAgICAgdmFyIGNjID0gY29udHJvbGxlclBsb3QucGx1Z2lucy5jdXJzb3I7CiAgICAgICAgdGMuem9vbVRhcmdldCA9IHRydWU7CiAgICAgICAgdGMuem9vbSA9IHRydWU7CiAgICAgICAgdGMuc3R5bGUgPSAnYXV0byc7CiAgICAgICAgdGMuZGJsQ2xpY2tSZXNldCA9IGZhbHNlOwogICAgICAgIGNjLnpvb20gPSB0cnVlOwogICAgICAgIGNjLnpvb21Qcm94eSA9IHRydWU7CiAgICAgICAgICAgICAgCiAgICAgICAgY29udHJvbGxlclBsb3QudGFyZ2V0LmJpbmQoJ2pxcGxvdFpvb20nLCBwbG90Wm9vbSk7CiAgICAgICAgY29udHJvbGxlclBsb3QudGFyZ2V0LmJpbmQoJ2pxcGxvdFJlc2V0Wm9vbScsIHBsb3RSZXNldCk7CgogICAgICAgIGZ1bmN0aW9uIHBsb3Rab29tKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBwbG90LCBjdXJzb3IpIHsKICAgICAgICAgICAgdGMuZG9ab29tKGdyaWRwb3MsIGRhdGFwb3MsIHRhcmdldFBsb3QsIGN1cnNvcik7CiAgICAgICAgfSAKCiAgICAgICAgZnVuY3Rpb24gcGxvdFJlc2V0KGV2LCBwbG90LCBjdXJzb3IpIHsKICAgICAgICAgICAgdGFyZ2V0UGxvdC5yZXNldFpvb20oKTsKICAgICAgICB9CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DdXJzb3IucHJvdG90eXBlLnJlc2V0Wm9vbSA9IGZ1bmN0aW9uKHBsb3QsIGN1cnNvcikgewogICAgICAgIHZhciBheGVzID0gcGxvdC5heGVzOwogICAgICAgIHZhciBjYXggPSBjdXJzb3IuX3pvb20uYXhlczsKICAgICAgICBpZiAoIXBsb3QucGx1Z2lucy5jdXJzb3Iuem9vbVByb3h5ICYmIGN1cnNvci5fem9vbS5pc1pvb21lZCkgewogICAgICAgICAgICBmb3IgKHZhciBheCBpbiBheGVzKSB7CiAgICAgICAgICAgICAgICAvLyBheGVzW2F4XS5fdGlja3MgPSBbXTsKICAgICAgICAgICAgICAgIC8vIGF4ZXNbYXhdLm1pbiA9IGNheFtheF0ubWluOwogICAgICAgICAgICAgICAgLy8gYXhlc1theF0ubWF4ID0gY2F4W2F4XS5tYXg7CiAgICAgICAgICAgICAgICAvLyBheGVzW2F4XS5udW1iZXJUaWNrcyA9IGNheFtheF0ubnVtYmVyVGlja3M7IAogICAgICAgICAgICAgICAgLy8gYXhlc1theF0udGlja0ludGVydmFsID0gY2F4W2F4XS50aWNrSW50ZXJ2YWw7CiAgICAgICAgICAgICAgICAvLyAvLyBmb3IgZGF0ZSBheGVzCiAgICAgICAgICAgICAgICAvLyBheGVzW2F4XS5kYVRpY2tJbnRlcnZhbCA9IGNheFtheF0uZGFUaWNrSW50ZXJ2YWw7CiAgICAgICAgICAgICAgICBheGVzW2F4XS5yZXNldCgpOwogICAgICAgICAgICAgICAgYXhlc1theF0uX3RpY2tzID0gW107CiAgICAgICAgICAgICAgICAvLyBmYWtlIG91dCB0aWNrIGNyZWF0aW9uIGFsZ29yaXRobSB0byBtYWtlIHN1cmUgb3JpZ2luYWwgYXV0bwogICAgICAgICAgICAgICAgLy8gY29tcHV0ZWQgZm9ybWF0IHN0cmluZyBpcyB1c2VkIGlmIF9vdmVycmlkZUZvcm1hdFN0cmluZyBpcyB0cnVlCiAgICAgICAgICAgICAgICBheGVzW2F4XS5fYXV0b0Zvcm1hdFN0cmluZyA9IGNheFtheF0udGlja0Zvcm1hdFN0cmluZzsKICAgICAgICAgICAgfQogICAgICAgICAgICBwbG90LnJlZHJhdygpOwogICAgICAgICAgICBjdXJzb3IuX3pvb20uaXNab29tZWQgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHZhciBjdHggPSBjdXJzb3Iuem9vbUNhbnZhcy5fY3R4OwogICAgICAgICAgICBjdHguY2xlYXJSZWN0KDAsMCxjdHguY2FudmFzLndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgICAgIGN0eCA9IG51bGw7CiAgICAgICAgfQogICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoJ2pxcGxvdFJlc2V0Wm9vbScsIFtwbG90LCBjdXJzb3JdKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkN1cnNvci5yZXNldFpvb20gPSBmdW5jdGlvbihwbG90KSB7CiAgICAgICAgcGxvdC5yZXNldFpvb20oKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkN1cnNvci5wcm90b3R5cGUuZG9ab29tID0gZnVuY3Rpb24gKGdyaWRwb3MsIGRhdGFwb3MsIHBsb3QsIGN1cnNvcikgewogICAgICAgIHZhciBjID0gY3Vyc29yOwogICAgICAgIHZhciBheGVzID0gcGxvdC5heGVzOwogICAgICAgIHZhciB6YXhlcyA9IGMuX3pvb20uYXhlczsKICAgICAgICB2YXIgc3RhcnQgPSB6YXhlcy5zdGFydDsKICAgICAgICB2YXIgZW5kID0gemF4ZXMuZW5kOwogICAgICAgIHZhciBtaW4sIG1heCwgZHAsIHNwYW4sCiAgICAgICAgICAgIG5ld21pbiwgbmV3bWF4LCBjdXJheCwgX251bWJlclRpY2tzLCByZXQ7CiAgICAgICAgdmFyIGN0eCA9IHBsb3QucGx1Z2lucy5jdXJzb3Iuem9vbUNhbnZhcy5fY3R4OwogICAgICAgIC8vIGRvbid0IHpvb20gaWYgem9vbSBhcmVhIGlzIHRvbyBzbWFsbCAoaW4gcGl4ZWxzKQogICAgICAgIGlmICgoYy5jb25zdHJhaW5ab29tVG8gPT0gJ25vbmUnICYmIE1hdGguYWJzKGdyaWRwb3MueCAtIGMuX3pvb20uc3RhcnRbMF0pID4gNiAmJiBNYXRoLmFicyhncmlkcG9zLnkgLSBjLl96b29tLnN0YXJ0WzFdKSA+IDYpIHx8IChjLmNvbnN0cmFpblpvb21UbyA9PSAneCcgJiYgTWF0aC5hYnMoZ3JpZHBvcy54IC0gYy5fem9vbS5zdGFydFswXSkgPiA2KSB8fCAgKGMuY29uc3RyYWluWm9vbVRvID09ICd5JyAmJiBNYXRoLmFicyhncmlkcG9zLnkgLSBjLl96b29tLnN0YXJ0WzFdKSA+IDYpKSB7CiAgICAgICAgICAgIGlmICghcGxvdC5wbHVnaW5zLmN1cnNvci56b29tUHJveHkpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGF4IGluIGRhdGFwb3MpIHsKICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgYXhlcyB0byByZXZlcnQgYmFjay4KICAgICAgICAgICAgICAgICAgICBpZiAoYy5fem9vbS5heGVzW2F4XSA9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYy5fem9vbS5heGVzW2F4XSA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICBjLl96b29tLmF4ZXNbYXhdLm51bWJlclRpY2tzID0gYXhlc1theF0ubnVtYmVyVGlja3M7CiAgICAgICAgICAgICAgICAgICAgICAgIGMuX3pvb20uYXhlc1theF0udGlja0ludGVydmFsID0gYXhlc1theF0udGlja0ludGVydmFsOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgZGF0ZSBheGVzLi4uCiAgICAgICAgICAgICAgICAgICAgICAgIGMuX3pvb20uYXhlc1theF0uZGFUaWNrSW50ZXJ2YWwgPSBheGVzW2F4XS5kYVRpY2tJbnRlcnZhbDsKICAgICAgICAgICAgICAgICAgICAgICAgYy5fem9vbS5heGVzW2F4XS5taW4gPSBheGVzW2F4XS5taW47CiAgICAgICAgICAgICAgICAgICAgICAgIGMuX3pvb20uYXhlc1theF0ubWF4ID0gYXhlc1theF0ubWF4OwogICAgICAgICAgICAgICAgICAgICAgICBjLl96b29tLmF4ZXNbYXhdLnRpY2tGb3JtYXRTdHJpbmcgPSAoYXhlc1theF0udGlja09wdGlvbnMgIT0gbnVsbCkgPyBheGVzW2F4XS50aWNrT3B0aW9ucy5mb3JtYXRTdHJpbmcgOiAgJyc7CiAgICAgICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICAgICAgaWYgKChjLmNvbnN0cmFpblpvb21UbyA9PSAnbm9uZScpIHx8IChjLmNvbnN0cmFpblpvb21UbyA9PSAneCcgJiYgYXguY2hhckF0KDApID09ICd4JykgfHwgKGMuY29uc3RyYWluWm9vbVRvID09ICd5JyAmJiBheC5jaGFyQXQoMCkgPT0gJ3knKSkgeyAgIAogICAgICAgICAgICAgICAgICAgICAgICBkcCA9IGRhdGFwb3NbYXhdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZHAgIT0gbnVsbCkgeyAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZHAgPiBzdGFydFtheF0pIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3bWluID0gc3RhcnRbYXhdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld21heCA9IGRwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhbiA9IHN0YXJ0W2F4XSAtIGRwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld21pbiA9IGRwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld21heCA9IHN0YXJ0W2F4XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJheCA9IGF4ZXNbYXhdOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9udW1iZXJUaWNrcyA9IG51bGw7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgYWxpZ25pbmcgdGhpcyBheGlzLCB1c2UgbnVtYmVyIG9mIHRpY2tzIGZyb20gcHJldmlvdXMgYXhpcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvIEkgbmVlZCB0byByZXNldCBzb21laG93IGlmIGFsaWduVGlja3MgaXMgY2hhbmdlZCBhbmQgdGhlbiBncmFwaCBpcyByZXBsb3R0ZWQ/PwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cmF4LmFsaWduVGlja3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyYXgubmFtZSA9PT0gJ3gyYXhpcycgJiYgcGxvdC5heGVzLnhheGlzLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX251bWJlclRpY2tzID0gcGxvdC5heGVzLnhheGlzLm51bWJlclRpY2tzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJheC5uYW1lLmNoYXJBdCgwKSA9PT0gJ3knICYmIGN1cmF4Lm5hbWUgIT09ICd5YXhpcycgJiYgY3VyYXgubmFtZSAhPT0gJ3lNaWRBeGlzJyAmJiBwbG90LmF4ZXMueWF4aXMuc2hvdykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbnVtYmVyVGlja3MgPSBwbG90LmF4ZXMueWF4aXMubnVtYmVyVGlja3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb29zZVpvb20gJiYgKGF4ZXNbYXhdLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09PSAkLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIgfHwgYXhlc1theF0ucmVuZGVyZXIuY29uc3RydWN0b3IgPT09ICQuanFwbG90LkxvZ0F4aXNSZW5kZXJlciApKSB7IC8vfSB8fCBheGVzW2F4XS5yZW5kZXJlci5jb25zdHJ1Y3RvciA9PT0gJC5qcXBsb3QuRGF0ZUF4aXNSZW5kZXJlcikpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gJC5qcXBsb3QuTGluZWFyVGlja0dlbmVyYXRvcihuZXdtaW4sIG5ld21heCwgY3VyYXguX3NjYWxlZmFjdCwgX251bWJlclRpY2tzKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgbmV3IG1pbmltdW0gaXMgbGVzcyB0aGFuICJ0cnVlIiBtaW5pbXVtIG9mIGF4aXMgZGlzcGxheSwgYWRqdXN0IGl0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF4ZXNbYXhdLnRpY2tJbnNldCAmJiByZXRbMF0gPCBheGVzW2F4XS5taW4gKyBheGVzW2F4XS50aWNrSW5zZXQgKiBheGVzW2F4XS50aWNrSW50ZXJ2YWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0WzBdICs9IHJldFs0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0WzJdIC09IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBuZXcgbWF4aW11bSBpcyBncmVhdGVyIHRoYW4gInRydWUiIG1heCBvZiBheGlzIGRpc3BsYXksIGFkanVzdCBpdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChheGVzW2F4XS50aWNrSW5zZXQgJiYgcmV0WzFdID4gYXhlc1theF0ubWF4IC0gYXhlc1theF0udGlja0luc2V0ICogYXhlc1theF0udGlja0ludGVydmFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldFsxXSAtPSByZXRbNF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldFsyXSAtPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGxvZyBheGVzLCBkb24ndCBmYWxsIGJlbG93IGN1cnJlbnQgbWluaW11bSwgdGhpcyB3aWxsIGxvb2sgYmFkIGFuZCBjYW4ndCBoYXZlIDAgaW4gcmFuZ2UgYW55d2F5LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChheGVzW2F4XS5yZW5kZXJlci5jb25zdHJ1Y3RvciA9PT0gJC5qcXBsb3QuTG9nQXhpc1JlbmRlcmVyICYmIHJldFswXSA8IGF4ZXNbYXhdLm1pbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgYSB0aWNrIGFuZCBzaGlmdCBtaW4gdXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0WzBdICs9IHJldFs0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0WzJdIC09IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheGVzW2F4XS5taW4gPSByZXRbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXhlc1theF0ubWF4ID0gcmV0WzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF4ZXNbYXhdLl9hdXRvRm9ybWF0U3RyaW5nID0gcmV0WzNdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF4ZXNbYXhdLm51bWJlclRpY2tzID0gcmV0WzJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF4ZXNbYXhdLnRpY2tJbnRlcnZhbCA9IHJldFs0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgZGF0ZSBheGVzLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXhlc1theF0uZGFUaWNrSW50ZXJ2YWwgPSBbcmV0WzRdLzEwMDAsICdzZWNvbmRzJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheGVzW2F4XS5taW4gPSBuZXdtaW47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXhlc1theF0ubWF4ID0gbmV3bWF4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF4ZXNbYXhdLnRpY2tJbnRlcnZhbCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXhlc1theF0ubnVtYmVyVGlja3MgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBkYXRlIGF4ZXMuLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheGVzW2F4XS5kYVRpY2tJbnRlcnZhbCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXhlc1theF0uX3RpY2tzID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBpZiAoKGMuY29uc3RyYWluWm9vbVRvID09ICd4JyAmJiBheC5jaGFyQXQoMCkgPT0gJ3knICYmIGMuYXV0b3NjYWxlQ29uc3RyYWludCkgfHwgKGMuY29uc3RyYWluWm9vbVRvID09ICd5JyAmJiBheC5jaGFyQXQoMCkgPT0gJ3gnICYmIGMuYXV0b3NjYWxlQ29uc3RyYWludCkpIHsKICAgICAgICAgICAgICAgICAgICAvLyAgICAgZHAgPSBkYXRhcG9zW2F4XTsKICAgICAgICAgICAgICAgICAgICAvLyAgICAgaWYgKGRwICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgIGF4ZXNbYXhdLm1heCA9PSBudWxsOwogICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgYXhlc1theF0ubWluID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAvLyAgICAgfQogICAgICAgICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGN0eC5jbGVhclJlY3QoMCwwLGN0eC5jYW52YXMud2lkdGgsIGN0eC5jYW52YXMuaGVpZ2h0KTsKICAgICAgICAgICAgICAgIHBsb3QucmVkcmF3KCk7CiAgICAgICAgICAgICAgICBjLl96b29tLmlzWm9vbWVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGN0eCA9IG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcignanFwbG90Wm9vbScsIFtncmlkcG9zLCBkYXRhcG9zLCBwbG90LCBjdXJzb3JdKTsKICAgICAgICB9CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5wcmVJbml0SG9va3MucHVzaCgkLmpxcGxvdC5DdXJzb3IuaW5pdCk7CiAgICAkLmpxcGxvdC5wb3N0RHJhd0hvb2tzLnB1c2goJC5qcXBsb3QuQ3Vyc29yLnBvc3REcmF3KTsKICAgIAogICAgZnVuY3Rpb24gdXBkYXRlVG9vbHRpcChncmlkcG9zLCBkYXRhcG9zLCBwbG90KSB7CiAgICAgICAgdmFyIGMgPSBwbG90LnBsdWdpbnMuY3Vyc29yOwogICAgICAgIHZhciBzID0gJyc7CiAgICAgICAgdmFyIGFkZGJyID0gZmFsc2U7CiAgICAgICAgaWYgKGMuc2hvd1Rvb2x0aXBHcmlkUG9zaXRpb24pIHsKICAgICAgICAgICAgcyA9IGdyaWRwb3MueCsnLCAnK2dyaWRwb3MueTsKICAgICAgICAgICAgYWRkYnIgPSB0cnVlOwogICAgICAgIH0KICAgICAgICBpZiAoYy5zaG93VG9vbHRpcFVuaXRQb3NpdGlvbikgewogICAgICAgICAgICB2YXIgZzsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPGMudG9vbHRpcEF4aXNHcm91cHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGcgPSBjLnRvb2x0aXBBeGlzR3JvdXBzW2ldOwogICAgICAgICAgICAgICAgaWYgKGFkZGJyKSB7CiAgICAgICAgICAgICAgICAgICAgcyArPSAnPGJyIC8+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChjLnVzZUF4ZXNGb3JtYXR0ZXJzKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPGcubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGopIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gJywgJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWYgPSBwbG90LmF4ZXNbZ1tqXV0uX3RpY2tzWzBdLmZvcm1hdHRlcjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFmc3RyID0gcGxvdC5heGVzW2dbal1dLl90aWNrc1swXS5mb3JtYXRTdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gYWYoYWZzdHIsIGRhdGFwb3NbZ1tqXV0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHMgKz0gJC5qcXBsb3Quc3ByaW50ZihjLnRvb2x0aXBGb3JtYXRTdHJpbmcsIGRhdGFwb3NbZ1swXV0sIGRhdGFwb3NbZ1sxXV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYWRkYnIgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChjLnNob3dUb29sdGlwRGF0YVBvc2l0aW9uKSB7CiAgICAgICAgICAgIHZhciBzZXJpZXMgPSBwbG90LnNlcmllczsgCiAgICAgICAgICAgIHZhciByZXQgPSBnZXRJbnRlcnNlY3RpbmdQb2ludHMocGxvdCwgZ3JpZHBvcy54LCBncmlkcG9zLnkpOwogICAgICAgICAgICB2YXIgYWRkYnIgPSBmYWxzZTsKICAgICAgICAKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGk8IHNlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKHNlcmllc1tpXS5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGlkeCA9IHNlcmllc1tpXS5pbmRleDsKICAgICAgICAgICAgICAgICAgICB2YXIgbGFiZWwgPSBzZXJpZXNbaV0ubGFiZWwudG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbGlkID0gJC5pbkFycmF5KGlkeCwgcmV0LmluZGljZXMpOwogICAgICAgICAgICAgICAgICAgIHZhciBzeCA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICB2YXIgc3kgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxpZCAhPSAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHJldC5kYXRhW2NlbGxpZF0uZGF0YTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMudXNlQXhlc0Zvcm1hdHRlcnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ZiA9IHNlcmllc1tpXS5feGF4aXMuX3RpY2tzWzBdLmZvcm1hdHRlcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ZiA9IHNlcmllc1tpXS5feWF4aXMuX3RpY2tzWzBdLmZvcm1hdHRlcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ZnN0ciA9IHNlcmllc1tpXS5feGF4aXMuX3RpY2tzWzBdLmZvcm1hdFN0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ZnN0ciA9IHNlcmllc1tpXS5feWF4aXMuX3RpY2tzWzBdLmZvcm1hdFN0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN4ID0geGYoeGZzdHIsIGRhdGFbMF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3kgPSB5Zih5ZnN0ciwgZGF0YVsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeCA9IGRhdGFbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeSA9IGRhdGFbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFkZGJyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzICs9ICc8YnIgLz4nOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gJC5qcXBsb3Quc3ByaW50ZihjLnRvb2x0aXBGb3JtYXRTdHJpbmcsIGxhYmVsLCBzeCwgc3kpOwogICAgICAgICAgICAgICAgICAgICAgICBhZGRiciA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICBjLl90b29sdGlwRWxlbS5odG1sKHMpOwogICAgfQogICAgCiAgICBmdW5jdGlvbiBtb3ZlTGluZShncmlkcG9zLCBwbG90KSB7CiAgICAgICAgdmFyIGMgPSBwbG90LnBsdWdpbnMuY3Vyc29yOwogICAgICAgIHZhciBjdHggPSBjLmN1cnNvckNhbnZhcy5fY3R4OwogICAgICAgIGN0eC5jbGVhclJlY3QoMCwwLGN0eC5jYW52YXMud2lkdGgsIGN0eC5jYW52YXMuaGVpZ2h0KTsKICAgICAgICBpZiAoYy5zaG93VmVydGljYWxMaW5lKSB7CiAgICAgICAgICAgIGMuc2hhcGVSZW5kZXJlci5kcmF3KGN0eCwgW1tncmlkcG9zLngsIDBdLCBbZ3JpZHBvcy54LCBjdHguY2FudmFzLmhlaWdodF1dKTsKICAgICAgICB9CiAgICAgICAgaWYgKGMuc2hvd0hvcml6b250YWxMaW5lKSB7CiAgICAgICAgICAgIGMuc2hhcGVSZW5kZXJlci5kcmF3KGN0eCwgW1swLCBncmlkcG9zLnldLCBbY3R4LmNhbnZhcy53aWR0aCwgZ3JpZHBvcy55XV0pOwogICAgICAgIH0KICAgICAgICB2YXIgcmV0ID0gZ2V0SW50ZXJzZWN0aW5nUG9pbnRzKHBsb3QsIGdyaWRwb3MueCwgZ3JpZHBvcy55KTsKICAgICAgICBpZiAoYy5zaG93Q3Vyc29yTGVnZW5kKSB7CiAgICAgICAgICAgIHZhciBjZWxscyA9ICQocGxvdC50YXJnZXRJZCArICcgdGQuanFwbG90LWN1cnNvci1sZWdlbmQtbGFiZWwnKTsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPGNlbGxzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgaWR4ID0gJChjZWxsc1tpXSkuZGF0YSgnc2VyaWVzSW5kZXgnKTsKICAgICAgICAgICAgICAgIHZhciBzZXJpZXMgPSBwbG90LnNlcmllc1tpZHhdOwogICAgICAgICAgICAgICAgdmFyIGxhYmVsID0gc2VyaWVzLmxhYmVsLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICB2YXIgY2VsbGlkID0gJC5pbkFycmF5KGlkeCwgcmV0LmluZGljZXMpOwogICAgICAgICAgICAgICAgdmFyIHN4ID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgdmFyIHN5ID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgaWYgKGNlbGxpZCAhPSAtMSkgewogICAgICAgICAgICAgICAgICAgIHZhciBkYXRhID0gcmV0LmRhdGFbY2VsbGlkXS5kYXRhOwogICAgICAgICAgICAgICAgICAgIGlmIChjLnVzZUF4ZXNGb3JtYXR0ZXJzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ZiA9IHNlcmllcy5feGF4aXMuX3RpY2tzWzBdLmZvcm1hdHRlcjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHlmID0gc2VyaWVzLl95YXhpcy5fdGlja3NbMF0uZm9ybWF0dGVyOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgeGZzdHIgPSBzZXJpZXMuX3hheGlzLl90aWNrc1swXS5mb3JtYXRTdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ZnN0ciA9IHNlcmllcy5feWF4aXMuX3RpY2tzWzBdLmZvcm1hdFN0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgc3ggPSB4Zih4ZnN0ciwgZGF0YVswXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHN5ID0geWYoeWZzdHIsIGRhdGFbMV0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3ggPSBkYXRhWzBdOwogICAgICAgICAgICAgICAgICAgICAgICBzeSA9IGRhdGFbMV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHBsb3QubGVnZW5kLmVzY2FwZUh0bWwpIHsKICAgICAgICAgICAgICAgICAgICAkKGNlbGxzW2ldKS50ZXh0KCQuanFwbG90LnNwcmludGYoYy5jdXJzb3JMZWdlbmRGb3JtYXRTdHJpbmcsIGxhYmVsLCBzeCwgc3kpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICQoY2VsbHNbaV0pLmh0bWwoJC5qcXBsb3Quc3ByaW50ZihjLmN1cnNvckxlZ2VuZEZvcm1hdFN0cmluZywgbGFiZWwsIHN4LCBzeSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9ICAgICAgICAKICAgICAgICB9CiAgICAgICAgY3R4ID0gbnVsbDsKICAgIH0KICAgICAgICAKICAgIGZ1bmN0aW9uIGdldEludGVyc2VjdGluZ1BvaW50cyhwbG90LCB4LCB5KSB7CiAgICAgICAgdmFyIHJldCA9IHtpbmRpY2VzOltdLCBkYXRhOltdfTsKICAgICAgICB2YXIgcywgaSwgZDAsIGQsIGosIHIsIHA7CiAgICAgICAgdmFyIHRocmVzaG9sZDsKICAgICAgICB2YXIgYyA9IHBsb3QucGx1Z2lucy5jdXJzb3I7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHBsb3Quc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHMgPSBwbG90LnNlcmllc1tpXTsKICAgICAgICAgICAgciA9IHMucmVuZGVyZXI7CiAgICAgICAgICAgIGlmIChzLnNob3cpIHsKICAgICAgICAgICAgICAgIHRocmVzaG9sZCA9IGMuaW50ZXJzZWN0aW9uVGhyZXNob2xkOwogICAgICAgICAgICAgICAgaWYgKHMuc2hvd01hcmtlcikgewogICAgICAgICAgICAgICAgICAgIHRocmVzaG9sZCArPSBzLm1hcmtlclJlbmRlcmVyLnNpemUvMjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MDsgajxzLmdyaWREYXRhLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgcCA9IHMuZ3JpZERhdGFbal07CiAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgdmVydGljYWwgbGluZQogICAgICAgICAgICAgICAgICAgIGlmIChjLnNob3dWZXJ0aWNhbExpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHgtcFswXSkgPD0gdGhyZXNob2xkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQuaW5kaWNlcy5wdXNoKGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LmRhdGEucHVzaCh7c2VyaWVzSW5kZXg6IGksIHBvaW50SW5kZXg6aiwgZ3JpZERhdGE6cCwgZGF0YTpzLmRhdGFbal19KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJldDsKICAgIH0KICAgIAogICAgZnVuY3Rpb24gbW92ZVRvb2x0aXAoZ3JpZHBvcywgcGxvdCkgewogICAgICAgIHZhciBjID0gcGxvdC5wbHVnaW5zLmN1cnNvcjsgIAogICAgICAgIHZhciBlbGVtID0gYy5fdG9vbHRpcEVsZW07CiAgICAgICAgc3dpdGNoIChjLnRvb2x0aXBMb2NhdGlvbikgewogICAgICAgICAgICBjYXNlICdudyc6CiAgICAgICAgICAgICAgICB2YXIgeCA9IGdyaWRwb3MueCArIHBsb3QuX2dyaWRQYWRkaW5nLmxlZnQgLSBlbGVtLm91dGVyV2lkdGgodHJ1ZSkgLSBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgeSA9IGdyaWRwb3MueSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCAtIGMudG9vbHRpcE9mZnNldCAtIGVsZW0ub3V0ZXJIZWlnaHQodHJ1ZSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnbic6CiAgICAgICAgICAgICAgICB2YXIgeCA9IGdyaWRwb3MueCArIHBsb3QuX2dyaWRQYWRkaW5nLmxlZnQgLSBlbGVtLm91dGVyV2lkdGgodHJ1ZSkvMjsKICAgICAgICAgICAgICAgIHZhciB5ID0gZ3JpZHBvcy55ICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wIC0gYy50b29sdGlwT2Zmc2V0IC0gZWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICduZSc6CiAgICAgICAgICAgICAgICB2YXIgeCA9IGdyaWRwb3MueCArIHBsb3QuX2dyaWRQYWRkaW5nLmxlZnQgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgeSA9IGdyaWRwb3MueSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCAtIGMudG9vbHRpcE9mZnNldCAtIGVsZW0ub3V0ZXJIZWlnaHQodHJ1ZSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnZSc6CiAgICAgICAgICAgICAgICB2YXIgeCA9IGdyaWRwb3MueCArIHBsb3QuX2dyaWRQYWRkaW5nLmxlZnQgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgeSA9IGdyaWRwb3MueSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCAtIGVsZW0ub3V0ZXJIZWlnaHQodHJ1ZSkvMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZSc6CiAgICAgICAgICAgICAgICB2YXIgeCA9IGdyaWRwb3MueCArIHBsb3QuX2dyaWRQYWRkaW5nLmxlZnQgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgeSA9IGdyaWRwb3MueSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCArIGMudG9vbHRpcE9mZnNldDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgICAgIHZhciB4ID0gZ3JpZHBvcy54ICsgcGxvdC5fZ3JpZFBhZGRpbmcubGVmdCAtIGVsZW0ub3V0ZXJXaWR0aCh0cnVlKS8yOwogICAgICAgICAgICAgICAgdmFyIHkgPSBncmlkcG9zLnkgKyBwbG90Ll9ncmlkUGFkZGluZy50b3AgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc3cnOgogICAgICAgICAgICAgICAgdmFyIHggPSBncmlkcG9zLnggKyBwbG90Ll9ncmlkUGFkZGluZy5sZWZ0IC0gZWxlbS5vdXRlcldpZHRoKHRydWUpIC0gYy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgdmFyIHkgPSBncmlkcG9zLnkgKyBwbG90Ll9ncmlkUGFkZGluZy50b3AgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAndyc6CiAgICAgICAgICAgICAgICB2YXIgeCA9IGdyaWRwb3MueCArIHBsb3QuX2dyaWRQYWRkaW5nLmxlZnQgLSBlbGVtLm91dGVyV2lkdGgodHJ1ZSkgLSBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgeSA9IGdyaWRwb3MueSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCAtIGVsZW0ub3V0ZXJIZWlnaHQodHJ1ZSkvMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdmFyIHggPSBncmlkcG9zLnggKyBwbG90Ll9ncmlkUGFkZGluZy5sZWZ0ICsgYy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgdmFyIHkgPSBncmlkcG9zLnkgKyBwbG90Ll9ncmlkUGFkZGluZy50b3AgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgIGVsZW0uY3NzKCdsZWZ0JywgeCk7CiAgICAgICAgZWxlbS5jc3MoJ3RvcCcsIHkpOwogICAgICAgIGVsZW0gPSBudWxsOwogICAgfQogICAgCiAgICBmdW5jdGlvbiBwb3NpdGlvblRvb2x0aXAocGxvdCkgeyAKICAgICAgICAvLyBmYWtlIGEgZ3JpZCBmb3IgcG9zaXRpb25pbmcKICAgICAgICB2YXIgZ3JpZCA9IHBsb3QuX2dyaWRQYWRkaW5nOyAKICAgICAgICB2YXIgYyA9IHBsb3QucGx1Z2lucy5jdXJzb3I7CiAgICAgICAgdmFyIGVsZW0gPSBjLl90b29sdGlwRWxlbTsgIAogICAgICAgIHN3aXRjaCAoYy50b29sdGlwTG9jYXRpb24pIHsKICAgICAgICAgICAgY2FzZSAnbncnOgogICAgICAgICAgICAgICAgdmFyIGEgPSBncmlkLmxlZnQgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQudG9wICsgYy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgZWxlbS5jc3MoJ2xlZnQnLCBhKTsKICAgICAgICAgICAgICAgIGVsZW0uY3NzKCd0b3AnLCBiKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICduJzoKICAgICAgICAgICAgICAgIHZhciBhID0gKGdyaWQubGVmdCArIChwbG90Ll9wbG90RGltZW5zaW9ucy53aWR0aCAtIGdyaWQucmlnaHQpKS8yIC0gZWxlbS5vdXRlcldpZHRoKHRydWUpLzI7CiAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQudG9wICsgYy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgZWxlbS5jc3MoJ2xlZnQnLCBhKTsKICAgICAgICAgICAgICAgIGVsZW0uY3NzKCd0b3AnLCBiKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICduZSc6CiAgICAgICAgICAgICAgICB2YXIgYSA9IGdyaWQucmlnaHQgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQudG9wICsgYy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgZWxlbS5jc3Moe3JpZ2h0OmEsIHRvcDpifSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnZSc6CiAgICAgICAgICAgICAgICB2YXIgYSA9IGdyaWQucmlnaHQgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgYiA9IChncmlkLnRvcCArIChwbG90Ll9wbG90RGltZW5zaW9ucy5oZWlnaHQgLSBncmlkLmJvdHRvbSkpLzIgLSBlbGVtLm91dGVySGVpZ2h0KHRydWUpLzI7CiAgICAgICAgICAgICAgICBlbGVtLmNzcyh7cmlnaHQ6YSwgdG9wOmJ9KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZSc6CiAgICAgICAgICAgICAgICB2YXIgYSA9IGdyaWQucmlnaHQgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQuYm90dG9tICsgYy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgZWxlbS5jc3Moe3JpZ2h0OmEsIGJvdHRvbTpifSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICAgICB2YXIgYSA9IChncmlkLmxlZnQgKyAocGxvdC5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBncmlkLnJpZ2h0KSkvMiAtIGVsZW0ub3V0ZXJXaWR0aCh0cnVlKS8yOwogICAgICAgICAgICAgICAgdmFyIGIgPSBncmlkLmJvdHRvbSArIGMudG9vbHRpcE9mZnNldDsKICAgICAgICAgICAgICAgIGVsZW0uY3NzKHtsZWZ0OmEsIGJvdHRvbTpifSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc3cnOgogICAgICAgICAgICAgICAgdmFyIGEgPSBncmlkLmxlZnQgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQuYm90dG9tICsgYy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgZWxlbS5jc3Moe2xlZnQ6YSwgYm90dG9tOmJ9KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICd3JzoKICAgICAgICAgICAgICAgIHZhciBhID0gZ3JpZC5sZWZ0ICsgYy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgdmFyIGIgPSAoZ3JpZC50b3AgKyAocGxvdC5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0IC0gZ3JpZC5ib3R0b20pKS8yIC0gZWxlbS5vdXRlckhlaWdodCh0cnVlKS8yOwogICAgICAgICAgICAgICAgZWxlbS5jc3Moe2xlZnQ6YSwgdG9wOmJ9KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OiAgLy8gc2FtZSBhcyAnc2UnCiAgICAgICAgICAgICAgICB2YXIgYSA9IGdyaWQucmlnaHQgLSBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQuYm90dG9tICsgYy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgZWxlbS5jc3Moe3JpZ2h0OmEsIGJvdHRvbTpifSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgZWxlbSA9IG51bGw7CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrIChldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIGV2LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOwogICAgICAgIHZhciBjID0gcGxvdC5wbHVnaW5zLmN1cnNvcjsKICAgICAgICBpZiAoYy5jbGlja1Jlc2V0KSB7CiAgICAgICAgICAgIGMucmVzZXRab29tKHBsb3QsIGMpOwogICAgICAgIH0KICAgICAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbjsKICAgICAgICBpZiAoZG9jdW1lbnQuc2VsZWN0aW9uICYmIGRvY3VtZW50LnNlbGVjdGlvbi5lbXB0eSkKICAgICAgICB7CiAgICAgICAgICAgIGRvY3VtZW50LnNlbGVjdGlvbi5lbXB0eSgpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChzZWwgJiYgIXNlbCgpLmlzQ29sbGFwc2VkKSB7CiAgICAgICAgICAgIHNlbCgpLmNvbGxhcHNlKCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIAogICAgZnVuY3Rpb24gaGFuZGxlRGJsQ2xpY2sgKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgZXYuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7CiAgICAgICAgdmFyIGMgPSBwbG90LnBsdWdpbnMuY3Vyc29yOwogICAgICAgIGlmIChjLmRibENsaWNrUmVzZXQpIHsKICAgICAgICAgICAgYy5yZXNldFpvb20ocGxvdCwgYyk7CiAgICAgICAgfQogICAgICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uOwogICAgICAgIGlmIChkb2N1bWVudC5zZWxlY3Rpb24gJiYgZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KQogICAgICAgIHsKICAgICAgICAgICAgZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHNlbCAmJiAhc2VsKCkuaXNDb2xsYXBzZWQpIHsKICAgICAgICAgICAgc2VsKCkuY29sbGFwc2UoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZUxlYXZlKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIHZhciBjID0gcGxvdC5wbHVnaW5zLmN1cnNvcjsKICAgICAgICBjLm9uR3JpZCA9IGZhbHNlOwogICAgICAgIGlmIChjLnNob3cpIHsKICAgICAgICAgICAgJChldi50YXJnZXQpLmNzcygnY3Vyc29yJywgYy5wcmV2aW91c0N1cnNvcik7CiAgICAgICAgICAgIGlmIChjLnNob3dUb29sdGlwICYmICEoYy5fem9vbS56b29taW5nICYmIGMuc2hvd1Rvb2x0aXBPdXRzaWRlWm9vbSAmJiAhYy5jb25zdHJhaW5PdXRzaWRlWm9vbSkpIHsKICAgICAgICAgICAgICAgIGMuX3Rvb2x0aXBFbGVtLmVtcHR5KCk7CiAgICAgICAgICAgICAgICBjLl90b29sdGlwRWxlbS5oaWRlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGMuem9vbSkgewogICAgICAgICAgICAgICAgYy5fem9vbS5ncmlkcG9zID0gZ3JpZHBvczsKICAgICAgICAgICAgICAgIGMuX3pvb20uZGF0YXBvcyA9IGRhdGFwb3M7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGMuc2hvd1ZlcnRpY2FsTGluZSB8fCBjLnNob3dIb3Jpem9udGFsTGluZSkgewogICAgICAgICAgICAgICAgdmFyIGN0eCA9IGMuY3Vyc29yQ2FudmFzLl9jdHg7CiAgICAgICAgICAgICAgICBjdHguY2xlYXJSZWN0KDAsMCxjdHguY2FudmFzLndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgICAgICAgICBjdHggPSBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChjLnNob3dDdXJzb3JMZWdlbmQpIHsKICAgICAgICAgICAgICAgIHZhciBjZWxscyA9ICQocGxvdC50YXJnZXRJZCArICcgdGQuanFwbG90LWN1cnNvci1sZWdlbmQtbGFiZWwnKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxjZWxscy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciBpZHggPSAkKGNlbGxzW2ldKS5kYXRhKCdzZXJpZXNJbmRleCcpOwogICAgICAgICAgICAgICAgICAgIHZhciBzZXJpZXMgPSBwbG90LnNlcmllc1tpZHhdOwogICAgICAgICAgICAgICAgICAgIHZhciBsYWJlbCA9IHNlcmllcy5sYWJlbC50b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgIGlmIChwbG90LmxlZ2VuZC5lc2NhcGVIdG1sKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoY2VsbHNbaV0pLnRleHQoJC5qcXBsb3Quc3ByaW50ZihjLmN1cnNvckxlZ2VuZEZvcm1hdFN0cmluZywgbGFiZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkKGNlbGxzW2ldKS5odG1sKCQuanFwbG90LnNwcmludGYoYy5jdXJzb3JMZWdlbmRGb3JtYXRTdHJpbmcsIGxhYmVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfSAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlRW50ZXIoZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgdmFyIGMgPSBwbG90LnBsdWdpbnMuY3Vyc29yOwogICAgICAgIGMub25HcmlkID0gdHJ1ZTsKICAgICAgICBpZiAoYy5zaG93KSB7CiAgICAgICAgICAgIGMucHJldmlvdXNDdXJzb3IgPSBldi50YXJnZXQuc3R5bGUuY3Vyc29yOwogICAgICAgICAgICBldi50YXJnZXQuc3R5bGUuY3Vyc29yID0gYy5zdHlsZTsKICAgICAgICAgICAgaWYgKGMuc2hvd1Rvb2x0aXApIHsKICAgICAgICAgICAgICAgIHVwZGF0ZVRvb2x0aXAoZ3JpZHBvcywgZGF0YXBvcywgcGxvdCk7CiAgICAgICAgICAgICAgICBpZiAoYy5mb2xsb3dNb3VzZSkgewogICAgICAgICAgICAgICAgICAgIG1vdmVUb29sdGlwKGdyaWRwb3MsIHBsb3QpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25Ub29sdGlwKHBsb3QpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYy5fdG9vbHRpcEVsZW0uc2hvdygpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChjLnNob3dWZXJ0aWNhbExpbmUgfHwgYy5zaG93SG9yaXpvbnRhbExpbmUpIHsKICAgICAgICAgICAgICAgIG1vdmVMaW5lKGdyaWRwb3MsIHBsb3QpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgIH0gICAgCiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlTW92ZShldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICB2YXIgYyA9IHBsb3QucGx1Z2lucy5jdXJzb3I7CiAgICAgICAgaWYgKGMuc2hvdykgewogICAgICAgICAgICBpZiAoYy5zaG93VG9vbHRpcCkgewogICAgICAgICAgICAgICAgdXBkYXRlVG9vbHRpcChncmlkcG9zLCBkYXRhcG9zLCBwbG90KTsKICAgICAgICAgICAgICAgIGlmIChjLmZvbGxvd01vdXNlKSB7CiAgICAgICAgICAgICAgICAgICAgbW92ZVRvb2x0aXAoZ3JpZHBvcywgcGxvdCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGMuc2hvd1ZlcnRpY2FsTGluZSB8fCBjLnNob3dIb3Jpem9udGFsTGluZSkgewogICAgICAgICAgICAgICAgbW92ZUxpbmUoZ3JpZHBvcywgcGxvdCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAgICAgICAgIAogICAgZnVuY3Rpb24gZ2V0RXZlbnRQb3NpdGlvbihldikgewogICAgICAgIHZhciBwbG90ID0gZXYuZGF0YS5wbG90OwogICAgICAgIHZhciBnbyA9IHBsb3QuZXZlbnRDYW52YXMuX2VsZW0ub2Zmc2V0KCk7CiAgICAgICAgdmFyIGdyaWRQb3MgPSB7eDpldi5wYWdlWCAtIGdvLmxlZnQsIHk6ZXYucGFnZVkgLSBnby50b3B9OwogICAgICAgIC8vLy8vLwogICAgICAgIC8vIFRPIERPOiBoYW5kbGUgeU1pZEF4aXMKICAgICAgICAvLy8vLy8KICAgICAgICB2YXIgZGF0YVBvcyA9IHt4YXhpczpudWxsLCB5YXhpczpudWxsLCB4MmF4aXM6bnVsbCwgeTJheGlzOm51bGwsIHkzYXhpczpudWxsLCB5NGF4aXM6bnVsbCwgeTVheGlzOm51bGwsIHk2YXhpczpudWxsLCB5N2F4aXM6bnVsbCwgeThheGlzOm51bGwsIHk5YXhpczpudWxsLCB5TWlkQXhpczpudWxsfTsKICAgICAgICB2YXIgYW4gPSBbJ3hheGlzJywgJ3lheGlzJywgJ3gyYXhpcycsICd5MmF4aXMnLCAneTNheGlzJywgJ3k0YXhpcycsICd5NWF4aXMnLCAneTZheGlzJywgJ3k3YXhpcycsICd5OGF4aXMnLCAneTlheGlzJywgJ3lNaWRBeGlzJ107CiAgICAgICAgdmFyIGF4ID0gcGxvdC5heGVzOwogICAgICAgIHZhciBuLCBheGlzOwogICAgICAgIGZvciAobj0xMTsgbj4wOyBuLS0pIHsKICAgICAgICAgICAgYXhpcyA9IGFuW24tMV07CiAgICAgICAgICAgIGlmIChheFtheGlzXS5zaG93KSB7CiAgICAgICAgICAgICAgICBkYXRhUG9zW2F4aXNdID0gYXhbYXhpc10uc2VyaWVzX3AydShncmlkUG9zW2F4aXMuY2hhckF0KDApXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiB7b2Zmc2V0czpnbywgZ3JpZFBvczpncmlkUG9zLCBkYXRhUG9zOmRhdGFQb3N9OwogICAgfSAgICAKICAgIAogICAgZnVuY3Rpb24gaGFuZGxlWm9vbU1vdmUoZXYpIHsKICAgICAgICB2YXIgcGxvdCA9IGV2LmRhdGEucGxvdDsKICAgICAgICB2YXIgYyA9IHBsb3QucGx1Z2lucy5jdXJzb3I7CiAgICAgICAgLy8gZG9uJ3QgZG8gYW55dGhpbmcgaWYgbm90IG9uIGdyaWQuCiAgICAgICAgaWYgKGMuc2hvdyAmJiBjLnpvb20gJiYgYy5fem9vbS5zdGFydGVkICYmICFjLnpvb21UYXJnZXQpIHsKICAgICAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgdmFyIGN0eCA9IGMuem9vbUNhbnZhcy5fY3R4OwogICAgICAgICAgICB2YXIgcG9zaXRpb25zID0gZ2V0RXZlbnRQb3NpdGlvbihldik7CiAgICAgICAgICAgIHZhciBncmlkcG9zID0gcG9zaXRpb25zLmdyaWRQb3M7CiAgICAgICAgICAgIHZhciBkYXRhcG9zID0gcG9zaXRpb25zLmRhdGFQb3M7CiAgICAgICAgICAgIGMuX3pvb20uZ3JpZHBvcyA9IGdyaWRwb3M7CiAgICAgICAgICAgIGMuX3pvb20uZGF0YXBvcyA9IGRhdGFwb3M7CiAgICAgICAgICAgIGMuX3pvb20uem9vbWluZyA9IHRydWU7CiAgICAgICAgICAgIHZhciB4cG9zID0gZ3JpZHBvcy54OwogICAgICAgICAgICB2YXIgeXBvcyA9IGdyaWRwb3MueTsKICAgICAgICAgICAgdmFyIGhlaWdodCA9IGN0eC5jYW52YXMuaGVpZ2h0OwogICAgICAgICAgICB2YXIgd2lkdGggPSBjdHguY2FudmFzLndpZHRoOwogICAgICAgICAgICBpZiAoYy5zaG93VG9vbHRpcCAmJiAhYy5vbkdyaWQgJiYgYy5zaG93VG9vbHRpcE91dHNpZGVab29tKSB7CiAgICAgICAgICAgICAgICB1cGRhdGVUb29sdGlwKGdyaWRwb3MsIGRhdGFwb3MsIHBsb3QpOwogICAgICAgICAgICAgICAgaWYgKGMuZm9sbG93TW91c2UpIHsKICAgICAgICAgICAgICAgICAgICBtb3ZlVG9vbHRpcChncmlkcG9zLCBwbG90KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYy5jb25zdHJhaW5ab29tVG8gPT0gJ3gnKSB7CiAgICAgICAgICAgICAgICBjLl96b29tLmVuZCA9IFt4cG9zLCBoZWlnaHRdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGMuY29uc3RyYWluWm9vbVRvID09ICd5JykgewogICAgICAgICAgICAgICAgYy5fem9vbS5lbmQgPSBbd2lkdGgsIHlwb3NdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgYy5fem9vbS5lbmQgPSBbeHBvcywgeXBvc107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb247CiAgICAgICAgICAgIGlmIChkb2N1bWVudC5zZWxlY3Rpb24gJiYgZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5zZWxlY3Rpb24uZW1wdHkoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChzZWwgJiYgIXNlbCgpLmlzQ29sbGFwc2VkKSB7CiAgICAgICAgICAgICAgICBzZWwoKS5jb2xsYXBzZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRyYXdab29tQm94LmNhbGwoYyk7CiAgICAgICAgICAgIGN0eCA9IG51bGw7CiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZURvd24oZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgdmFyIGMgPSBwbG90LnBsdWdpbnMuY3Vyc29yOwogICAgICAgIGlmKHBsb3QucGx1Z2lucy5tb2JpbGUpewogICAgICAgICAgICAkKGRvY3VtZW50KS5vbmUoJ3Ztb3VzZXVwLmpxcGxvdF9jdXJzb3InLCB7cGxvdDpwbG90fSwgaGFuZGxlTW91c2VVcCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJChkb2N1bWVudCkub25lKCdtb3VzZXVwLmpxcGxvdF9jdXJzb3InLCB7cGxvdDpwbG90fSwgaGFuZGxlTW91c2VVcCk7CiAgICAgICAgfQogICAgICAgIHZhciBheGVzID0gcGxvdC5heGVzOwogICAgICAgIGlmIChkb2N1bWVudC5vbnNlbGVjdHN0YXJ0ICE9IHVuZGVmaW5lZCkgewogICAgICAgICAgICBjLl9vbGRIYW5kbGVycy5vbnNlbGVjdHN0YXJ0ID0gZG9jdW1lbnQub25zZWxlY3RzdGFydDsKICAgICAgICAgICAgZG9jdW1lbnQub25zZWxlY3RzdGFydCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9OwogICAgICAgIH0KICAgICAgICBpZiAoZG9jdW1lbnQub25kcmFnICE9IHVuZGVmaW5lZCkgewogICAgICAgICAgICBjLl9vbGRIYW5kbGVycy5vbmRyYWcgPSBkb2N1bWVudC5vbmRyYWc7CiAgICAgICAgICAgIGRvY3VtZW50Lm9uZHJhZyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9OwogICAgICAgIH0KICAgICAgICBpZiAoZG9jdW1lbnQub25tb3VzZWRvd24gIT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIGMuX29sZEhhbmRsZXJzLm9ubW91c2Vkb3duID0gZG9jdW1lbnQub25tb3VzZWRvd247CiAgICAgICAgICAgIGRvY3VtZW50Lm9ubW91c2Vkb3duID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZmFsc2U7IH07CiAgICAgICAgfQogICAgICAgIGlmIChjLnpvb20pIHsKICAgICAgICAgICAgaWYgKCFjLnpvb21Qcm94eSkgewogICAgICAgICAgICAgICAgdmFyIGN0eCA9IGMuem9vbUNhbnZhcy5fY3R4OwogICAgICAgICAgICAgICAgY3R4LmNsZWFyUmVjdCgwLDAsY3R4LmNhbnZhcy53aWR0aCwgY3R4LmNhbnZhcy5oZWlnaHQpOwogICAgICAgICAgICAgICAgY3R4ID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYy5jb25zdHJhaW5ab29tVG8gPT0gJ3gnKSB7CiAgICAgICAgICAgICAgICBjLl96b29tLnN0YXJ0ID0gW2dyaWRwb3MueCwgMF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoYy5jb25zdHJhaW5ab29tVG8gPT0gJ3knKSB7CiAgICAgICAgICAgICAgICBjLl96b29tLnN0YXJ0ID0gWzAsIGdyaWRwb3MueV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBjLl96b29tLnN0YXJ0ID0gW2dyaWRwb3MueCwgZ3JpZHBvcy55XTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjLl96b29tLnN0YXJ0ZWQgPSB0cnVlOwogICAgICAgICAgICBmb3IgKHZhciBheCBpbiBkYXRhcG9zKSB7CiAgICAgICAgICAgICAgICAvLyBnZXQgem9vbSBzdGFydGluZyBwb3NpdGlvbi4KICAgICAgICAgICAgICAgIGMuX3pvb20uYXhlcy5zdGFydFtheF0gPSBkYXRhcG9zW2F4XTsKICAgICAgICAgICAgfSAgCiAgICAgICAgICAgaWYocGxvdC5wbHVnaW5zLm1vYmlsZSl7CiAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5iaW5kKCd2bW91c2Vtb3ZlLmpxcGxvdEN1cnNvcicsIHtwbG90OnBsb3R9LCBoYW5kbGVab29tTW92ZSk7ICAgICAgICAgICAgICAKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmJpbmQoJ21vdXNlbW92ZS5qcXBsb3RDdXJzb3InLCB7cGxvdDpwbG90fSwgaGFuZGxlWm9vbU1vdmUpOyAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZVVwKGV2KSB7CiAgICAgICAgdmFyIHBsb3QgPSBldi5kYXRhLnBsb3Q7CiAgICAgICAgdmFyIGMgPSBwbG90LnBsdWdpbnMuY3Vyc29yOwogICAgICAgIGlmIChjLnpvb20gJiYgYy5fem9vbS56b29taW5nICYmICFjLnpvb21UYXJnZXQpIHsKICAgICAgICAgICAgdmFyIHhwb3MgPSBjLl96b29tLmdyaWRwb3MueDsKICAgICAgICAgICAgdmFyIHlwb3MgPSBjLl96b29tLmdyaWRwb3MueTsKICAgICAgICAgICAgdmFyIGRhdGFwb3MgPSBjLl96b29tLmRhdGFwb3M7CiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBjLnpvb21DYW52YXMuX2N0eC5jYW52YXMuaGVpZ2h0OwogICAgICAgICAgICB2YXIgd2lkdGggPSBjLnpvb21DYW52YXMuX2N0eC5jYW52YXMud2lkdGg7CiAgICAgICAgICAgIHZhciBheGVzID0gcGxvdC5heGVzOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGMuY29uc3RyYWluT3V0c2lkZVpvb20gJiYgIWMub25HcmlkKSB7CiAgICAgICAgICAgICAgICBpZiAoeHBvcyA8IDApIHsgeHBvcyA9IDA7IH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhwb3MgPiB3aWR0aCkgeyB4cG9zID0gd2lkdGg7IH0KICAgICAgICAgICAgICAgIGlmICh5cG9zIDwgMCkgeyB5cG9zID0gMDsgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoeXBvcyA+IGhlaWdodCkgeyB5cG9zID0gaGVpZ2h0OyB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGZvciAodmFyIGF4aXMgaW4gZGF0YXBvcykgewogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhcG9zW2F4aXNdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChheGlzLmNoYXJBdCgwKSA9PSAneCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFwb3NbYXhpc10gPSBheGVzW2F4aXNdLnNlcmllc19wMnUoeHBvcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhcG9zW2F4aXNdID0gYXhlc1theGlzXS5zZXJpZXNfcDJ1KHlwb3MpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoYy5jb25zdHJhaW5ab29tVG8gPT0gJ3gnKSB7CiAgICAgICAgICAgICAgICB5cG9zID0gaGVpZ2h0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGMuY29uc3RyYWluWm9vbVRvID09ICd5JykgewogICAgICAgICAgICAgICAgeHBvcyA9IHdpZHRoOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGMuX3pvb20uZW5kID0gW3hwb3MsIHlwb3NdOwogICAgICAgICAgICBjLl96b29tLmdyaWRwb3MgPSB7eDp4cG9zLCB5Onlwb3N9OwogICAgICAgICAgICAKICAgICAgICAgICAgYy5kb1pvb20oYy5fem9vbS5ncmlkcG9zLCBkYXRhcG9zLCBwbG90LCBjKTsKICAgICAgICB9CiAgICAgICAgYy5fem9vbS5zdGFydGVkID0gZmFsc2U7CiAgICAgICAgYy5fem9vbS56b29taW5nID0gZmFsc2U7CiAgICAgICAgCiAgICAgICAgJChkb2N1bWVudCkudW5iaW5kKCdtb3VzZW1vdmUuanFwbG90Q3Vyc29yJywgaGFuZGxlWm9vbU1vdmUpOwogICAgICAgIAogICAgICAgIGlmIChkb2N1bWVudC5vbnNlbGVjdHN0YXJ0ICE9IHVuZGVmaW5lZCAmJiBjLl9vbGRIYW5kbGVycy5vbnNlbGVjdHN0YXJ0ICE9IG51bGwpewogICAgICAgICAgICBkb2N1bWVudC5vbnNlbGVjdHN0YXJ0ID0gYy5fb2xkSGFuZGxlcnMub25zZWxlY3RzdGFydDsKICAgICAgICAgICAgYy5fb2xkSGFuZGxlcnMub25zZWxlY3RzdGFydCA9IG51bGw7CiAgICAgICAgfQogICAgICAgIGlmIChkb2N1bWVudC5vbmRyYWcgIT0gdW5kZWZpbmVkICYmIGMuX29sZEhhbmRsZXJzLm9uZHJhZyAhPSBudWxsKXsKICAgICAgICAgICAgZG9jdW1lbnQub25kcmFnID0gYy5fb2xkSGFuZGxlcnMub25kcmFnOwogICAgICAgICAgICBjLl9vbGRIYW5kbGVycy5vbmRyYWcgPSBudWxsOwogICAgICAgIH0KICAgICAgICBpZiAoZG9jdW1lbnQub25tb3VzZWRvd24gIT0gdW5kZWZpbmVkICYmIGMuX29sZEhhbmRsZXJzLm9ubW91c2Vkb3duICE9IG51bGwpewogICAgICAgICAgICBkb2N1bWVudC5vbm1vdXNlZG93biA9IGMuX29sZEhhbmRsZXJzLm9ubW91c2Vkb3duOwogICAgICAgICAgICBjLl9vbGRIYW5kbGVycy5vbm1vdXNlZG93biA9IG51bGw7CiAgICAgICAgfQoKICAgIH0KICAgIAogICAgZnVuY3Rpb24gZHJhd1pvb21Cb3goKSB7CiAgICAgICAgdmFyIHN0YXJ0ID0gdGhpcy5fem9vbS5zdGFydDsKICAgICAgICB2YXIgZW5kID0gdGhpcy5fem9vbS5lbmQ7CiAgICAgICAgdmFyIGN0eCA9IHRoaXMuem9vbUNhbnZhcy5fY3R4OwogICAgICAgIHZhciBsLCB0LCBoLCB3OwogICAgICAgIGlmIChlbmRbMF0gPiBzdGFydFswXSkgewogICAgICAgICAgICBsID0gc3RhcnRbMF07CiAgICAgICAgICAgIHcgPSBlbmRbMF0gLSBzdGFydFswXTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGwgPSBlbmRbMF07CiAgICAgICAgICAgIHcgPSBzdGFydFswXSAtIGVuZFswXTsKICAgICAgICB9CiAgICAgICAgaWYgKGVuZFsxXSA+IHN0YXJ0WzFdKSB7CiAgICAgICAgICAgIHQgPSBzdGFydFsxXTsKICAgICAgICAgICAgaCA9IGVuZFsxXSAtIHN0YXJ0WzFdOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdCA9IGVuZFsxXTsKICAgICAgICAgICAgaCA9IHN0YXJ0WzFdIC0gZW5kWzFdOwogICAgICAgIH0KICAgICAgICBjdHguZmlsbFN0eWxlID0gJ3JnYmEoMCwwLDAsMC4yKSc7CiAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gJyM5OTk5OTknOwogICAgICAgIGN0eC5saW5lV2lkdGggPSAxLjA7CiAgICAgICAgY3R4LmNsZWFyUmVjdCgwLDAsY3R4LmNhbnZhcy53aWR0aCwgY3R4LmNhbnZhcy5oZWlnaHQpOwogICAgICAgIGN0eC5maWxsUmVjdCgwLDAsY3R4LmNhbnZhcy53aWR0aCwgY3R4LmNhbnZhcy5oZWlnaHQpOwogICAgICAgIGN0eC5jbGVhclJlY3QobCwgdCwgdywgaCk7CiAgICAgICAgLy8gSUUgd29uJ3Qgc2hvdyB0cmFuc3BhcmVudCBmaWxsIHJlY3QsIHNvIHN0cm9rZSBhIHJlY3QgYWxzby4KICAgICAgICBjdHguc3Ryb2tlUmVjdChsLHQsdyxoKTsKICAgICAgICBjdHggPSBudWxsOwogICAgfQogICAgCiAgICAkLmpxcGxvdC5DdXJzb3JMZWdlbmRSZW5kZXJlciA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAkLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyLmNhbGwodGhpcywgb3B0aW9ucyk7CiAgICAgICAgdGhpcy5mb3JtYXRTdHJpbmcgPSAnJXMnOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQ3Vyc29yTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlID0gbmV3ICQuanFwbG90LlRhYmxlTGVnZW5kUmVuZGVyZXIoKTsKICAgICQuanFwbG90LkN1cnNvckxlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LkN1cnNvckxlZ2VuZFJlbmRlcmVyOwogICAgCiAgICAvLyBjYWxsZWQgaW4gY29udGV4dCBvZiBhIExlZ2VuZAogICAgJC5qcXBsb3QuQ3Vyc29yTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbigpIHsKICAgICAgICBpZiAodGhpcy5fZWxlbSkgewogICAgICAgICAgICB0aGlzLl9lbGVtLmVtcHR5Rm9yY2UoKTsKICAgICAgICAgICAgdGhpcy5fZWxlbSA9IG51bGw7CiAgICAgICAgfQogICAgICAgIGlmICh0aGlzLnNob3cpIHsKICAgICAgICAgICAgdmFyIHNlcmllcyA9IHRoaXMuX3NlcmllcywgczsKICAgICAgICAgICAgLy8gbWFrZSBhIHRhYmxlLiAgb25lIGxpbmUgbGFiZWwgcGVyIHJvdy4KICAgICAgICAgICAgdmFyIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScpOwogICAgICAgICAgICB0aGlzLl9lbGVtID0gJChlbGVtKTsKICAgICAgICAgICAgZWxlbSA9IG51bGw7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uYWRkQ2xhc3MoJ2pxcGxvdC1sZWdlbmQganFwbG90LWN1cnNvci1sZWdlbmQnKTsKICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7CiAgICAgICAgCiAgICAgICAgICAgIHZhciBwYWQgPSBmYWxzZTsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGk8IHNlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgcyA9IHNlcmllc1tpXTsKICAgICAgICAgICAgICAgIGlmIChzLnNob3cgJiYgcy5zaG93TGFiZWwpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbHQgPSAkLmpxcGxvdC5zcHJpbnRmKHRoaXMuZm9ybWF0U3RyaW5nLCBzLmxhYmVsLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgIGlmIChsdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29sb3IgPSBzLmNvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAocy5fc3RhY2sgJiYgIXMuZmlsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBhZGRyb3cuY2FsbCh0aGlzLCBsdCwgY29sb3IsIHBhZCwgaSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIC8vIGxldCBwbHVnaW5zIGFkZCBtb3JlIHJvd3MgdG8gbGVnZW5kLiAgVXNlZCBieSB0cmVuZCBsaW5lIHBsdWdpbi4KICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8JC5qcXBsb3QuYWRkTGVnZW5kUm93SG9va3MubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSAkLmpxcGxvdC5hZGRMZWdlbmRSb3dIb29rc1tqXS5jYWxsKHRoaXMsIHMpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcm93LmNhbGwodGhpcywgaXRlbS5sYWJlbCwgaXRlbS5jb2xvciwgcGFkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlcmllcyA9IHMgPSBudWxsOwogICAgICAgICAgICBkZWxldGUgc2VyaWVzOwogICAgICAgICAgICBkZWxldGUgczsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gYWRkcm93KGxhYmVsLCBjb2xvciwgcGFkLCBpZHgpIHsKICAgICAgICAgICAgdmFyIHJzID0gKHBhZCkgPyB0aGlzLnJvd1NwYWNpbmcgOiAnMCc7CiAgICAgICAgICAgIHZhciB0ciA9ICQoJzx0ciBjbGFzcz0ianFwbG90LWxlZ2VuZCBqcXBsb3QtY3Vyc29yLWxlZ2VuZCI+PC90cj4nKS5hcHBlbmRUbyh0aGlzLl9lbGVtKTsKICAgICAgICAgICAgdHIuZGF0YSgnc2VyaWVzSW5kZXgnLCBpZHgpOwogICAgICAgICAgICAkKCc8dGQgY2xhc3M9ImpxcGxvdC1sZWdlbmQganFwbG90LWN1cnNvci1sZWdlbmQtc3dhdGNoIiBzdHlsZT0icGFkZGluZy10b3A6JytycysnOyI+JysKICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICNjY2NjY2M7cGFkZGluZzowLjJlbTsiPicrCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ianFwbG90LWN1cnNvci1sZWdlbmQtc3dhdGNoIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjonK2NvbG9yKyc7Ij48L2Rpdj4nKwogICAgICAgICAgICAgICAgJzwvZGl2PjwvdGQ+JykuYXBwZW5kVG8odHIpOwogICAgICAgICAgICB2YXIgdGQgPSAkKCc8dGQgY2xhc3M9ImpxcGxvdC1sZWdlbmQganFwbG90LWN1cnNvci1sZWdlbmQtbGFiZWwiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7cGFkZGluZy10b3A6JytycysnOyI+PC90ZD4nKTsKICAgICAgICAgICAgdGQuYXBwZW5kVG8odHIpOwogICAgICAgICAgICB0ZC5kYXRhKCdzZXJpZXNJbmRleCcsIGlkeCk7CiAgICAgICAgICAgIGlmICh0aGlzLmVzY2FwZUh0bWwpIHsKICAgICAgICAgICAgICAgIHRkLnRleHQobGFiZWwpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGQuaHRtbChsYWJlbCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHIgPSBudWxsOwogICAgICAgICAgICB0ZCA9IG51bGw7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLl9lbGVtOwogICAgfTsKICAgIAp9KShqUXVlcnkpOwo=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.cursor.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGope2ouanFwbG90LkN1cnNvcj1mdW5jdGlvbihxKXt0aGlzLnN0eWxlPSJjcm9zc2hhaXIiO3RoaXMucHJldmlvdXNDdXJzb3I9ImF1dG8iO3RoaXMuc2hvdz1qLmpxcGxvdC5jb25maWcuZW5hYmxlUGx1Z2luczt0aGlzLnNob3dUb29sdGlwPXRydWU7dGhpcy5mb2xsb3dNb3VzZT1mYWxzZTt0aGlzLnRvb2x0aXBMb2NhdGlvbj0ic2UiO3RoaXMudG9vbHRpcE9mZnNldD02O3RoaXMuc2hvd1Rvb2x0aXBHcmlkUG9zaXRpb249ZmFsc2U7dGhpcy5zaG93VG9vbHRpcFVuaXRQb3NpdGlvbj10cnVlO3RoaXMuc2hvd1Rvb2x0aXBEYXRhUG9zaXRpb249ZmFsc2U7dGhpcy50b29sdGlwRm9ybWF0U3RyaW5nPSIlLjRQLCAlLjRQIjt0aGlzLnVzZUF4ZXNGb3JtYXR0ZXJzPXRydWU7dGhpcy50b29sdGlwQXhpc0dyb3Vwcz1bXTt0aGlzLnpvb209ZmFsc2U7dGhpcy56b29tUHJveHk9ZmFsc2U7dGhpcy56b29tVGFyZ2V0PWZhbHNlO3RoaXMubG9vc2Vab29tPXRydWU7dGhpcy5jbGlja1Jlc2V0PWZhbHNlO3RoaXMuZGJsQ2xpY2tSZXNldD10cnVlO3RoaXMuc2hvd1ZlcnRpY2FsTGluZT1mYWxzZTt0aGlzLnNob3dIb3Jpem9udGFsTGluZT1mYWxzZTt0aGlzLmNvbnN0cmFpblpvb21Ubz0ibm9uZSI7dGhpcy5zaGFwZVJlbmRlcmVyPW5ldyBqLmpxcGxvdC5TaGFwZVJlbmRlcmVyKCk7dGhpcy5fem9vbT17c3RhcnQ6W10sZW5kOltdLHN0YXJ0ZWQ6ZmFsc2Usem9vbWluZzpmYWxzZSxpc1pvb21lZDpmYWxzZSxheGVzOntzdGFydDp7fSxlbmQ6e319LGdyaWRwb3M6e30sZGF0YXBvczp7fX07dGhpcy5fdG9vbHRpcEVsZW07dGhpcy56b29tQ2FudmFzO3RoaXMuY3Vyc29yQ2FudmFzO3RoaXMuaW50ZXJzZWN0aW9uVGhyZXNob2xkPTI7dGhpcy5zaG93Q3Vyc29yTGVnZW5kPWZhbHNlO3RoaXMuY3Vyc29yTGVnZW5kRm9ybWF0U3RyaW5nPWouanFwbG90LkN1cnNvci5jdXJzb3JMZWdlbmRGb3JtYXRTdHJpbmc7dGhpcy5fb2xkSGFuZGxlcnM9e29uc2VsZWN0c3RhcnQ6bnVsbCxvbmRyYWc6bnVsbCxvbm1vdXNlZG93bjpudWxsfTt0aGlzLmNvbnN0cmFpbk91dHNpZGVab29tPXRydWU7dGhpcy5zaG93VG9vbHRpcE91dHNpZGVab29tPWZhbHNlO3RoaXMub25HcmlkPWZhbHNlO2ouZXh0ZW5kKHRydWUsdGhpcyxxKX07ai5qcXBsb3QuQ3Vyc29yLmN1cnNvckxlZ2VuZEZvcm1hdFN0cmluZz0iJXMgeDolcywgeTolcyI7ai5qcXBsb3QuQ3Vyc29yLmluaXQ9ZnVuY3Rpb24odCxzLHIpe3ZhciBxPXJ8fHt9O3RoaXMucGx1Z2lucy5jdXJzb3I9bmV3IGouanFwbG90LkN1cnNvcihxLmN1cnNvcik7dmFyIHU9dGhpcy5wbHVnaW5zLmN1cnNvcjtpZih1LnNob3cpe2ouanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsianFwbG90TW91c2VFbnRlciIsYl0pO2ouanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsianFwbG90TW91c2VMZWF2ZSIsZl0pO2ouanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsianFwbG90TW91c2VNb3ZlIixpXSk7aWYodS5zaG93Q3Vyc29yTGVnZW5kKXtyLmxlZ2VuZD1yLmxlZ2VuZHx8e307ci5sZWdlbmQucmVuZGVyZXI9ai5qcXBsb3QuQ3Vyc29yTGVnZW5kUmVuZGVyZXI7ci5sZWdlbmQuZm9ybWF0U3RyaW5nPXRoaXMucGx1Z2lucy5jdXJzb3IuY3Vyc29yTGVnZW5kRm9ybWF0U3RyaW5nO3IubGVnZW5kLnNob3c9dHJ1ZX1pZih1Lnpvb20pe2ouanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsianFwbG90TW91c2VEb3duIixhXSk7aWYodS5jbGlja1Jlc2V0KXtqLmpxcGxvdC5ldmVudExpc3RlbmVySG9va3MucHVzaChbImpxcGxvdENsaWNrIixrXSl9aWYodS5kYmxDbGlja1Jlc2V0KXtqLmpxcGxvdC5ldmVudExpc3RlbmVySG9va3MucHVzaChbImpxcGxvdERibENsaWNrIixjXSl9fXRoaXMucmVzZXRab29tPWZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5heGVzO2lmKCF1Lnpvb21Qcm94eSl7Zm9yKHZhciB3IGluIHgpe3hbd10ucmVzZXQoKTt4W3ddLl90aWNrcz1bXTtpZih1Ll96b29tLmF4ZXNbd10hPT11bmRlZmluZWQpe3hbd10uX2F1dG9Gb3JtYXRTdHJpbmc9dS5fem9vbS5heGVzW3ddLnRpY2tGb3JtYXRTdHJpbmd9fXRoaXMucmVkcmF3KCl9ZWxzZXt2YXIgdj10aGlzLnBsdWdpbnMuY3Vyc29yLnpvb21DYW52YXMuX2N0eDt2LmNsZWFyUmVjdCgwLDAsdi5jYW52YXMud2lkdGgsdi5jYW52YXMuaGVpZ2h0KTt2PW51bGx9dGhpcy5wbHVnaW5zLmN1cnNvci5fem9vbS5pc1pvb21lZD1mYWxzZTt0aGlzLnRhcmdldC50cmlnZ2VyKCJqcXBsb3RSZXNldFpvb20iLFt0aGlzLHRoaXMucGx1Z2lucy5jdXJzb3JdKX07aWYodS5zaG93VG9vbHRpcERhdGFQb3NpdGlvbil7dS5zaG93VG9vbHRpcFVuaXRQb3NpdGlvbj1mYWxzZTt1LnNob3dUb29sdGlwR3JpZFBvc2l0aW9uPWZhbHNlO2lmKHEuY3Vyc29yLnRvb2x0aXBGb3JtYXRTdHJpbmc9PXVuZGVmaW5lZCl7dS50b29sdGlwRm9ybWF0U3RyaW5nPWouanFwbG90LkN1cnNvci5jdXJzb3JMZWdlbmRGb3JtYXRTdHJpbmd9fX19O2ouanFwbG90LkN1cnNvci5wb3N0RHJhdz1mdW5jdGlvbigpe3ZhciB4PXRoaXMucGx1Z2lucy5jdXJzb3I7aWYoeC56b29tQ2FudmFzKXt4Lnpvb21DYW52YXMucmVzZXRDYW52YXMoKTt4Lnpvb21DYW52YXM9bnVsbH1pZih4LmN1cnNvckNhbnZhcyl7eC5jdXJzb3JDYW52YXMucmVzZXRDYW52YXMoKTt4LmN1cnNvckNhbnZhcz1udWxsfWlmKHguX3Rvb2x0aXBFbGVtKXt4Ll90b29sdGlwRWxlbS5lbXB0eUZvcmNlKCk7eC5fdG9vbHRpcEVsZW09bnVsbH1pZih4Lnpvb20pe3guem9vbUNhbnZhcz1uZXcgai5qcXBsb3QuR2VuZXJpY0NhbnZhcygpO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKHguem9vbUNhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCJqcXBsb3Qtem9vbS1jYW52YXMiLHRoaXMuX3Bsb3REaW1lbnNpb25zLHRoaXMpKTt4Lnpvb21DYW52YXMuc2V0Q29udGV4dCgpfXZhciB2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3guX3Rvb2x0aXBFbGVtPWoodik7dj1udWxsO3guX3Rvb2x0aXBFbGVtLmFkZENsYXNzKCJqcXBsb3QtY3Vyc29yLXRvb2x0aXAiKTt4Ll90b29sdGlwRWxlbS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsZGlzcGxheToibm9uZSJ9KTtpZih4Lnpvb21DYW52YXMpe3guem9vbUNhbnZhcy5fZWxlbS5iZWZvcmUoeC5fdG9vbHRpcEVsZW0pfWVsc2V7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUoeC5fdG9vbHRpcEVsZW0pfWlmKHguc2hvd1ZlcnRpY2FsTGluZXx8eC5zaG93SG9yaXpvbnRhbExpbmUpe3guY3Vyc29yQ2FudmFzPW5ldyBqLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUoeC5jdXJzb3JDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywianFwbG90LWN1cnNvci1jYW52YXMiLHRoaXMuX3Bsb3REaW1lbnNpb25zLHRoaXMpKTt4LmN1cnNvckNhbnZhcy5zZXRDb250ZXh0KCl9aWYoeC5zaG93VG9vbHRpcFVuaXRQb3NpdGlvbil7aWYoeC50b29sdGlwQXhpc0dyb3Vwcy5sZW5ndGg9PT0wKXt2YXIgdD10aGlzLnNlcmllczt2YXIgdTt2YXIgcT1bXTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dT10W3JdO3ZhciB3PXUueGF4aXMrIiwiK3UueWF4aXM7aWYoai5pbkFycmF5KHcscSk9PS0xKXtxLnB1c2godyl9fWZvcih2YXIgcj0wO3I8cS5sZW5ndGg7cisrKXt4LnRvb2x0aXBBeGlzR3JvdXBzLnB1c2gocVtyXS5zcGxpdCgiLCIpKX19fX07ai5qcXBsb3QuQ3Vyc29yLnpvb21Qcm94eT1mdW5jdGlvbih2LHIpe3ZhciBxPXYucGx1Z2lucy5jdXJzb3I7dmFyIHU9ci5wbHVnaW5zLmN1cnNvcjtxLnpvb21UYXJnZXQ9dHJ1ZTtxLnpvb209dHJ1ZTtxLnN0eWxlPSJhdXRvIjtxLmRibENsaWNrUmVzZXQ9ZmFsc2U7dS56b29tPXRydWU7dS56b29tUHJveHk9dHJ1ZTtyLnRhcmdldC5iaW5kKCJqcXBsb3Rab29tIix0KTtyLnRhcmdldC5iaW5kKCJqcXBsb3RSZXNldFpvb20iLHMpO2Z1bmN0aW9uIHQoeCx3LHoseSxBKXtxLmRvWm9vbSh3LHosdixBKX1mdW5jdGlvbiBzKHcseCx5KXt2LnJlc2V0Wm9vbSgpfX07ai5qcXBsb3QuQ3Vyc29yLnByb3RvdHlwZS5yZXNldFpvb209ZnVuY3Rpb24odSx2KXt2YXIgdD11LmF4ZXM7dmFyIHM9di5fem9vbS5heGVzO2lmKCF1LnBsdWdpbnMuY3Vyc29yLnpvb21Qcm94eSYmdi5fem9vbS5pc1pvb21lZCl7Zm9yKHZhciByIGluIHQpe3Rbcl0ucmVzZXQoKTt0W3JdLl90aWNrcz1bXTt0W3JdLl9hdXRvRm9ybWF0U3RyaW5nPXNbcl0udGlja0Zvcm1hdFN0cmluZ311LnJlZHJhdygpO3YuX3pvb20uaXNab29tZWQ9ZmFsc2V9ZWxzZXt2YXIgcT12Lnpvb21DYW52YXMuX2N0eDtxLmNsZWFyUmVjdCgwLDAscS5jYW52YXMud2lkdGgscS5jYW52YXMuaGVpZ2h0KTtxPW51bGx9dS50YXJnZXQudHJpZ2dlcigianFwbG90UmVzZXRab29tIixbdSx2XSl9O2ouanFwbG90LkN1cnNvci5yZXNldFpvb209ZnVuY3Rpb24ocSl7cS5yZXNldFpvb20oKX07ai5qcXBsb3QuQ3Vyc29yLnByb3RvdHlwZS5kb1pvb209ZnVuY3Rpb24oRyx0LEMsdSl7dmFyIEk9dTt2YXIgRj1DLmF4ZXM7dmFyIHI9SS5fem9vbS5heGVzO3ZhciB3PXIuc3RhcnQ7dmFyIHM9ci5lbmQ7dmFyIEIsRSx6LEQsdix4LHEsSCxKO3ZhciBBPUMucGx1Z2lucy5jdXJzb3Iuem9vbUNhbnZhcy5fY3R4O2lmKChJLmNvbnN0cmFpblpvb21Ubz09Im5vbmUiJiZNYXRoLmFicyhHLngtSS5fem9vbS5zdGFydFswXSk+NiYmTWF0aC5hYnMoRy55LUkuX3pvb20uc3RhcnRbMV0pPjYpfHwoSS5jb25zdHJhaW5ab29tVG89PSJ4IiYmTWF0aC5hYnMoRy54LUkuX3pvb20uc3RhcnRbMF0pPjYpfHwoSS5jb25zdHJhaW5ab29tVG89PSJ5IiYmTWF0aC5hYnMoRy55LUkuX3pvb20uc3RhcnRbMV0pPjYpKXtpZighQy5wbHVnaW5zLmN1cnNvci56b29tUHJveHkpe2Zvcih2YXIgeSBpbiB0KXtpZihJLl96b29tLmF4ZXNbeV09PXVuZGVmaW5lZCl7SS5fem9vbS5heGVzW3ldPXt9O0kuX3pvb20uYXhlc1t5XS5udW1iZXJUaWNrcz1GW3ldLm51bWJlclRpY2tzO0kuX3pvb20uYXhlc1t5XS50aWNrSW50ZXJ2YWw9Rlt5XS50aWNrSW50ZXJ2YWw7SS5fem9vbS5heGVzW3ldLmRhVGlja0ludGVydmFsPUZbeV0uZGFUaWNrSW50ZXJ2YWw7SS5fem9vbS5heGVzW3ldLm1pbj1GW3ldLm1pbjtJLl96b29tLmF4ZXNbeV0ubWF4PUZbeV0ubWF4O0kuX3pvb20uYXhlc1t5XS50aWNrRm9ybWF0U3RyaW5nPShGW3ldLnRpY2tPcHRpb25zIT1udWxsKT9GW3ldLnRpY2tPcHRpb25zLmZvcm1hdFN0cmluZzoiIn1pZigoSS5jb25zdHJhaW5ab29tVG89PSJub25lIil8fChJLmNvbnN0cmFpblpvb21Ubz09IngiJiZ5LmNoYXJBdCgwKT09IngiKXx8KEkuY29uc3RyYWluWm9vbVRvPT0ieSImJnkuY2hhckF0KDApPT0ieSIpKXt6PXRbeV07aWYoeiE9bnVsbCl7aWYoej53W3ldKXt2PXdbeV07eD16fWVsc2V7RD13W3ldLXo7dj16O3g9d1t5XX1xPUZbeV07SD1udWxsO2lmKHEuYWxpZ25UaWNrcyl7aWYocS5uYW1lPT09IngyYXhpcyImJkMuYXhlcy54YXhpcy5zaG93KXtIPUMuYXhlcy54YXhpcy5udW1iZXJUaWNrc31lbHNle2lmKHEubmFtZS5jaGFyQXQoMCk9PT0ieSImJnEubmFtZSE9PSJ5YXhpcyImJnEubmFtZSE9PSJ5TWlkQXhpcyImJkMuYXhlcy55YXhpcy5zaG93KXtIPUMuYXhlcy55YXhpcy5udW1iZXJUaWNrc319fWlmKHRoaXMubG9vc2Vab29tJiYoRlt5XS5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09PWouanFwbG90LkxpbmVhckF4aXNSZW5kZXJlcnx8Rlt5XS5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09PWouanFwbG90LkxvZ0F4aXNSZW5kZXJlcikpe0o9ai5qcXBsb3QuTGluZWFyVGlja0dlbmVyYXRvcih2LHgscS5fc2NhbGVmYWN0LEgpO2lmKEZbeV0udGlja0luc2V0JiZKWzBdPEZbeV0ubWluK0ZbeV0udGlja0luc2V0KkZbeV0udGlja0ludGVydmFsKXtKWzBdKz1KWzRdO0pbMl0tPTF9aWYoRlt5XS50aWNrSW5zZXQmJkpbMV0+Rlt5XS5tYXgtRlt5XS50aWNrSW5zZXQqRlt5XS50aWNrSW50ZXJ2YWwpe0pbMV0tPUpbNF07SlsyXS09MX1pZihGW3ldLnJlbmRlcmVyLmNvbnN0cnVjdG9yPT09ai5qcXBsb3QuTG9nQXhpc1JlbmRlcmVyJiZKWzBdPEZbeV0ubWluKXtKWzBdKz1KWzRdO0pbMl0tPTF9Rlt5XS5taW49SlswXTtGW3ldLm1heD1KWzFdO0ZbeV0uX2F1dG9Gb3JtYXRTdHJpbmc9SlszXTtGW3ldLm51bWJlclRpY2tzPUpbMl07Rlt5XS50aWNrSW50ZXJ2YWw9Sls0XTtGW3ldLmRhVGlja0ludGVydmFsPVtKWzRdLzEwMDAsInNlY29uZHMiXX1lbHNle0ZbeV0ubWluPXY7Rlt5XS5tYXg9eDtGW3ldLnRpY2tJbnRlcnZhbD1udWxsO0ZbeV0ubnVtYmVyVGlja3M9bnVsbDtGW3ldLmRhVGlja0ludGVydmFsPW51bGx9Rlt5XS5fdGlja3M9W119fX1BLmNsZWFyUmVjdCgwLDAsQS5jYW52YXMud2lkdGgsQS5jYW52YXMuaGVpZ2h0KTtDLnJlZHJhdygpO0kuX3pvb20uaXNab29tZWQ9dHJ1ZTtBPW51bGx9Qy50YXJnZXQudHJpZ2dlcigianFwbG90Wm9vbSIsW0csdCxDLHVdKX19O2ouanFwbG90LnByZUluaXRIb29rcy5wdXNoKGouanFwbG90LkN1cnNvci5pbml0KTtqLmpxcGxvdC5wb3N0RHJhd0hvb2tzLnB1c2goai5qcXBsb3QuQ3Vyc29yLnBvc3REcmF3KTtmdW5jdGlvbiBlKEcscixDKXt2YXIgSj1DLnBsdWdpbnMuY3Vyc29yO3ZhciB3PSIiO3ZhciBOPWZhbHNlO2lmKEouc2hvd1Rvb2x0aXBHcmlkUG9zaXRpb24pe3c9Ry54KyIsICIrRy55O049dHJ1ZX1pZihKLnNob3dUb29sdGlwVW5pdFBvc2l0aW9uKXt2YXIgRjtmb3IodmFyIEU9MDtFPEoudG9vbHRpcEF4aXNHcm91cHMubGVuZ3RoO0UrKyl7Rj1KLnRvb2x0aXBBeGlzR3JvdXBzW0VdO2lmKE4pe3crPSI8YnIgLz4ifWlmKEoudXNlQXhlc0Zvcm1hdHRlcnMpe2Zvcih2YXIgRD0wO0Q8Ri5sZW5ndGg7RCsrKXtpZihEKXt3Kz0iLCAifXZhciBIPUMuYXhlc1tGW0RdXS5fdGlja3NbMF0uZm9ybWF0dGVyO3ZhciBCPUMuYXhlc1tGW0RdXS5fdGlja3NbMF0uZm9ybWF0U3RyaW5nO3crPUgoQixyW0ZbRF1dKX19ZWxzZXt3Kz1qLmpxcGxvdC5zcHJpbnRmKEoudG9vbHRpcEZvcm1hdFN0cmluZyxyW0ZbMF1dLHJbRlsxXV0pfU49dHJ1ZX19aWYoSi5zaG93VG9vbHRpcERhdGFQb3NpdGlvbil7dmFyIHU9Qy5zZXJpZXM7dmFyIE09ZChDLEcueCxHLnkpO3ZhciBOPWZhbHNlO2Zvcih2YXIgRT0wO0U8dS5sZW5ndGg7RSsrKXtpZih1W0VdLnNob3cpe3ZhciB5PXVbRV0uaW5kZXg7dmFyIHQ9dVtFXS5sYWJlbC50b1N0cmluZygpO3ZhciBJPWouaW5BcnJheSh5LE0uaW5kaWNlcyk7dmFyIHo9dW5kZWZpbmVkO3ZhciB4PXVuZGVmaW5lZDtpZihJIT0tMSl7dmFyIEw9TS5kYXRhW0ldLmRhdGE7aWYoSi51c2VBeGVzRm9ybWF0dGVycyl7dmFyIEE9dVtFXS5feGF4aXMuX3RpY2tzWzBdLmZvcm1hdHRlcjt2YXIgcT11W0VdLl95YXhpcy5fdGlja3NbMF0uZm9ybWF0dGVyO3ZhciBLPXVbRV0uX3hheGlzLl90aWNrc1swXS5mb3JtYXRTdHJpbmc7dmFyIHY9dVtFXS5feWF4aXMuX3RpY2tzWzBdLmZvcm1hdFN0cmluZzt6PUEoSyxMWzBdKTt4PXEodixMWzFdKX1lbHNle3o9TFswXTt4PUxbMV19aWYoTil7dys9IjxiciAvPiJ9dys9ai5qcXBsb3Quc3ByaW50ZihKLnRvb2x0aXBGb3JtYXRTdHJpbmcsdCx6LHgpO049dHJ1ZX19fX1KLl90b29sdGlwRWxlbS5odG1sKHcpfWZ1bmN0aW9uIGcoQyxBKXt2YXIgRT1BLnBsdWdpbnMuY3Vyc29yO3ZhciB6PUUuY3Vyc29yQ2FudmFzLl9jdHg7ei5jbGVhclJlY3QoMCwwLHouY2FudmFzLndpZHRoLHouY2FudmFzLmhlaWdodCk7aWYoRS5zaG93VmVydGljYWxMaW5lKXtFLnNoYXBlUmVuZGVyZXIuZHJhdyh6LFtbQy54LDBdLFtDLngsei5jYW52YXMuaGVpZ2h0XV0pfWlmKEUuc2hvd0hvcml6b250YWxMaW5lKXtFLnNoYXBlUmVuZGVyZXIuZHJhdyh6LFtbMCxDLnldLFt6LmNhbnZhcy53aWR0aCxDLnldXSl9dmFyIEc9ZChBLEMueCxDLnkpO2lmKEUuc2hvd0N1cnNvckxlZ2VuZCl7dmFyIHI9aihBLnRhcmdldElkKyIgdGQuanFwbG90LWN1cnNvci1sZWdlbmQtbGFiZWwiKTtmb3IodmFyIEI9MDtCPHIubGVuZ3RoO0IrKyl7dmFyIHY9aihyW0JdKS5kYXRhKCJzZXJpZXNJbmRleCIpO3ZhciB0PUEuc2VyaWVzW3ZdO3ZhciBzPXQubGFiZWwudG9TdHJpbmcoKTt2YXIgRD1qLmluQXJyYXkodixHLmluZGljZXMpO3ZhciB4PXVuZGVmaW5lZDt2YXIgdz11bmRlZmluZWQ7aWYoRCE9LTEpe3ZhciBIPUcuZGF0YVtEXS5kYXRhO2lmKEUudXNlQXhlc0Zvcm1hdHRlcnMpe3ZhciB5PXQuX3hheGlzLl90aWNrc1swXS5mb3JtYXR0ZXI7dmFyIHE9dC5feWF4aXMuX3RpY2tzWzBdLmZvcm1hdHRlcjt2YXIgRj10Ll94YXhpcy5fdGlja3NbMF0uZm9ybWF0U3RyaW5nO3ZhciB1PXQuX3lheGlzLl90aWNrc1swXS5mb3JtYXRTdHJpbmc7eD15KEYsSFswXSk7dz1xKHUsSFsxXSl9ZWxzZXt4PUhbMF07dz1IWzFdfX1pZihBLmxlZ2VuZC5lc2NhcGVIdG1sKXtqKHJbQl0pLnRleHQoai5qcXBsb3Quc3ByaW50ZihFLmN1cnNvckxlZ2VuZEZvcm1hdFN0cmluZyxzLHgsdykpfWVsc2V7aihyW0JdKS5odG1sKGouanFwbG90LnNwcmludGYoRS5jdXJzb3JMZWdlbmRGb3JtYXRTdHJpbmcscyx4LHcpKX19fXo9bnVsbH1mdW5jdGlvbiBkKEEsRixFKXt2YXIgQj17aW5kaWNlczpbXSxkYXRhOltdfTt2YXIgRyx3LHUsQyx2LHEsdDt2YXIgejt2YXIgRD1BLnBsdWdpbnMuY3Vyc29yO2Zvcih2YXIgdz0wO3c8QS5zZXJpZXMubGVuZ3RoO3crKyl7Rz1BLnNlcmllc1t3XTtxPUcucmVuZGVyZXI7aWYoRy5zaG93KXt6PUQuaW50ZXJzZWN0aW9uVGhyZXNob2xkO2lmKEcuc2hvd01hcmtlcil7eis9Ry5tYXJrZXJSZW5kZXJlci5zaXplLzJ9Zm9yKHZhciB2PTA7djxHLmdyaWREYXRhLmxlbmd0aDt2Kyspe3Q9Ry5ncmlkRGF0YVt2XTtpZihELnNob3dWZXJ0aWNhbExpbmUpe2lmKE1hdGguYWJzKEYtdFswXSk8PXope0IuaW5kaWNlcy5wdXNoKHcpO0IuZGF0YS5wdXNoKHtzZXJpZXNJbmRleDp3LHBvaW50SW5kZXg6dixncmlkRGF0YTp0LGRhdGE6Ry5kYXRhW3ZdfSl9fX19fXJldHVybiBCfWZ1bmN0aW9uIG4ocix0KXt2YXIgdj10LnBsdWdpbnMuY3Vyc29yO3ZhciBzPXYuX3Rvb2x0aXBFbGVtO3N3aXRjaCh2LnRvb2x0aXBMb2NhdGlvbil7Y2FzZSJudyI6dmFyIHE9ci54K3QuX2dyaWRQYWRkaW5nLmxlZnQtcy5vdXRlcldpZHRoKHRydWUpLXYudG9vbHRpcE9mZnNldDt2YXIgdT1yLnkrdC5fZ3JpZFBhZGRpbmcudG9wLXYudG9vbHRpcE9mZnNldC1zLm91dGVySGVpZ2h0KHRydWUpO2JyZWFrO2Nhc2UibiI6dmFyIHE9ci54K3QuX2dyaWRQYWRkaW5nLmxlZnQtcy5vdXRlcldpZHRoKHRydWUpLzI7dmFyIHU9ci55K3QuX2dyaWRQYWRkaW5nLnRvcC12LnRvb2x0aXBPZmZzZXQtcy5vdXRlckhlaWdodCh0cnVlKTticmVhaztjYXNlIm5lIjp2YXIgcT1yLngrdC5fZ3JpZFBhZGRpbmcubGVmdCt2LnRvb2x0aXBPZmZzZXQ7dmFyIHU9ci55K3QuX2dyaWRQYWRkaW5nLnRvcC12LnRvb2x0aXBPZmZzZXQtcy5vdXRlckhlaWdodCh0cnVlKTticmVhaztjYXNlImUiOnZhciBxPXIueCt0Ll9ncmlkUGFkZGluZy5sZWZ0K3YudG9vbHRpcE9mZnNldDt2YXIgdT1yLnkrdC5fZ3JpZFBhZGRpbmcudG9wLXMub3V0ZXJIZWlnaHQodHJ1ZSkvMjticmVhaztjYXNlInNlIjp2YXIgcT1yLngrdC5fZ3JpZFBhZGRpbmcubGVmdCt2LnRvb2x0aXBPZmZzZXQ7dmFyIHU9ci55K3QuX2dyaWRQYWRkaW5nLnRvcCt2LnRvb2x0aXBPZmZzZXQ7YnJlYWs7Y2FzZSJzIjp2YXIgcT1yLngrdC5fZ3JpZFBhZGRpbmcubGVmdC1zLm91dGVyV2lkdGgodHJ1ZSkvMjt2YXIgdT1yLnkrdC5fZ3JpZFBhZGRpbmcudG9wK3YudG9vbHRpcE9mZnNldDticmVhaztjYXNlInN3Ijp2YXIgcT1yLngrdC5fZ3JpZFBhZGRpbmcubGVmdC1zLm91dGVyV2lkdGgodHJ1ZSktdi50b29sdGlwT2Zmc2V0O3ZhciB1PXIueSt0Ll9ncmlkUGFkZGluZy50b3Ardi50b29sdGlwT2Zmc2V0O2JyZWFrO2Nhc2UidyI6dmFyIHE9ci54K3QuX2dyaWRQYWRkaW5nLmxlZnQtcy5vdXRlcldpZHRoKHRydWUpLXYudG9vbHRpcE9mZnNldDt2YXIgdT1yLnkrdC5fZ3JpZFBhZGRpbmcudG9wLXMub3V0ZXJIZWlnaHQodHJ1ZSkvMjticmVhaztkZWZhdWx0OnZhciBxPXIueCt0Ll9ncmlkUGFkZGluZy5sZWZ0K3YudG9vbHRpcE9mZnNldDt2YXIgdT1yLnkrdC5fZ3JpZFBhZGRpbmcudG9wK3YudG9vbHRpcE9mZnNldDticmVha31zLmNzcygibGVmdCIscSk7cy5jc3MoInRvcCIsdSk7cz1udWxsfWZ1bmN0aW9uIG0odSl7dmFyIHM9dS5fZ3JpZFBhZGRpbmc7dmFyIHY9dS5wbHVnaW5zLmN1cnNvcjt2YXIgdD12Ll90b29sdGlwRWxlbTtzd2l0Y2godi50b29sdGlwTG9jYXRpb24pe2Nhc2UibnciOnZhciByPXMubGVmdCt2LnRvb2x0aXBPZmZzZXQ7dmFyIHE9cy50b3Ardi50b29sdGlwT2Zmc2V0O3QuY3NzKCJsZWZ0IixyKTt0LmNzcygidG9wIixxKTticmVhaztjYXNlIm4iOnZhciByPShzLmxlZnQrKHUuX3Bsb3REaW1lbnNpb25zLndpZHRoLXMucmlnaHQpKS8yLXQub3V0ZXJXaWR0aCh0cnVlKS8yO3ZhciBxPXMudG9wK3YudG9vbHRpcE9mZnNldDt0LmNzcygibGVmdCIscik7dC5jc3MoInRvcCIscSk7YnJlYWs7Y2FzZSJuZSI6dmFyIHI9cy5yaWdodCt2LnRvb2x0aXBPZmZzZXQ7dmFyIHE9cy50b3Ardi50b29sdGlwT2Zmc2V0O3QuY3NzKHtyaWdodDpyLHRvcDpxfSk7YnJlYWs7Y2FzZSJlIjp2YXIgcj1zLnJpZ2h0K3YudG9vbHRpcE9mZnNldDt2YXIgcT0ocy50b3ArKHUuX3Bsb3REaW1lbnNpb25zLmhlaWdodC1zLmJvdHRvbSkpLzItdC5vdXRlckhlaWdodCh0cnVlKS8yO3QuY3NzKHtyaWdodDpyLHRvcDpxfSk7YnJlYWs7Y2FzZSJzZSI6dmFyIHI9cy5yaWdodCt2LnRvb2x0aXBPZmZzZXQ7dmFyIHE9cy5ib3R0b20rdi50b29sdGlwT2Zmc2V0O3QuY3NzKHtyaWdodDpyLGJvdHRvbTpxfSk7YnJlYWs7Y2FzZSJzIjp2YXIgcj0ocy5sZWZ0Kyh1Ll9wbG90RGltZW5zaW9ucy53aWR0aC1zLnJpZ2h0KSkvMi10Lm91dGVyV2lkdGgodHJ1ZSkvMjt2YXIgcT1zLmJvdHRvbSt2LnRvb2x0aXBPZmZzZXQ7dC5jc3Moe2xlZnQ6cixib3R0b206cX0pO2JyZWFrO2Nhc2Uic3ciOnZhciByPXMubGVmdCt2LnRvb2x0aXBPZmZzZXQ7dmFyIHE9cy5ib3R0b20rdi50b29sdGlwT2Zmc2V0O3QuY3NzKHtsZWZ0OnIsYm90dG9tOnF9KTticmVhaztjYXNlInciOnZhciByPXMubGVmdCt2LnRvb2x0aXBPZmZzZXQ7dmFyIHE9KHMudG9wKyh1Ll9wbG90RGltZW5zaW9ucy5oZWlnaHQtcy5ib3R0b20pKS8yLXQub3V0ZXJIZWlnaHQodHJ1ZSkvMjt0LmNzcyh7bGVmdDpyLHRvcDpxfSk7YnJlYWs7ZGVmYXVsdDp2YXIgcj1zLnJpZ2h0LXYudG9vbHRpcE9mZnNldDt2YXIgcT1zLmJvdHRvbSt2LnRvb2x0aXBPZmZzZXQ7dC5jc3Moe3JpZ2h0OnIsYm90dG9tOnF9KTticmVha310PW51bGx9ZnVuY3Rpb24gayhyLHEsdix1LHQpe3IucHJldmVudERlZmF1bHQoKTtyLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO3ZhciB3PXQucGx1Z2lucy5jdXJzb3I7aWYody5jbGlja1Jlc2V0KXt3LnJlc2V0Wm9vbSh0LHcpfXZhciBzPXdpbmRvdy5nZXRTZWxlY3Rpb247aWYoZG9jdW1lbnQuc2VsZWN0aW9uJiZkb2N1bWVudC5zZWxlY3Rpb24uZW1wdHkpe2RvY3VtZW50LnNlbGVjdGlvbi5lbXB0eSgpfWVsc2V7aWYocyYmIXMoKS5pc0NvbGxhcHNlZCl7cygpLmNvbGxhcHNlKCl9fXJldHVybiBmYWxzZX1mdW5jdGlvbiBjKHIscSx2LHUsdCl7ci5wcmV2ZW50RGVmYXVsdCgpO3Iuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7dmFyIHc9dC5wbHVnaW5zLmN1cnNvcjtpZih3LmRibENsaWNrUmVzZXQpe3cucmVzZXRab29tKHQsdyl9dmFyIHM9d2luZG93LmdldFNlbGVjdGlvbjtpZihkb2N1bWVudC5zZWxlY3Rpb24mJmRvY3VtZW50LnNlbGVjdGlvbi5lbXB0eSl7ZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KCl9ZWxzZXtpZihzJiYhcygpLmlzQ29sbGFwc2VkKXtzKCkuY29sbGFwc2UoKX19cmV0dXJuIGZhbHNlfWZ1bmN0aW9uIGYodyx0LHEseix1KXt2YXIgdj11LnBsdWdpbnMuY3Vyc29yO3Yub25HcmlkPWZhbHNlO2lmKHYuc2hvdyl7aih3LnRhcmdldCkuY3NzKCJjdXJzb3IiLHYucHJldmlvdXNDdXJzb3IpO2lmKHYuc2hvd1Rvb2x0aXAmJiEodi5fem9vbS56b29taW5nJiZ2LnNob3dUb29sdGlwT3V0c2lkZVpvb20mJiF2LmNvbnN0cmFpbk91dHNpZGVab29tKSl7di5fdG9vbHRpcEVsZW0uZW1wdHkoKTt2Ll90b29sdGlwRWxlbS5oaWRlKCl9aWYodi56b29tKXt2Ll96b29tLmdyaWRwb3M9dDt2Ll96b29tLmRhdGFwb3M9cX1pZih2LnNob3dWZXJ0aWNhbExpbmV8fHYuc2hvd0hvcml6b250YWxMaW5lKXt2YXIgQj12LmN1cnNvckNhbnZhcy5fY3R4O0IuY2xlYXJSZWN0KDAsMCxCLmNhbnZhcy53aWR0aCxCLmNhbnZhcy5oZWlnaHQpO0I9bnVsbH1pZih2LnNob3dDdXJzb3JMZWdlbmQpe3ZhciBBPWoodS50YXJnZXRJZCsiIHRkLmpxcGxvdC1jdXJzb3ItbGVnZW5kLWxhYmVsIik7Zm9yKHZhciBzPTA7czxBLmxlbmd0aDtzKyspe3ZhciB5PWooQVtzXSkuZGF0YSgic2VyaWVzSW5kZXgiKTt2YXIgcj11LnNlcmllc1t5XTt2YXIgeD1yLmxhYmVsLnRvU3RyaW5nKCk7aWYodS5sZWdlbmQuZXNjYXBlSHRtbCl7aihBW3NdKS50ZXh0KGouanFwbG90LnNwcmludGYodi5jdXJzb3JMZWdlbmRGb3JtYXRTdHJpbmcseCx1bmRlZmluZWQsdW5kZWZpbmVkKSl9ZWxzZXtqKEFbc10pLmh0bWwoai5qcXBsb3Quc3ByaW50Zih2LmN1cnNvckxlZ2VuZEZvcm1hdFN0cmluZyx4LHVuZGVmaW5lZCx1bmRlZmluZWQpKX19fX19ZnVuY3Rpb24gYihyLHEsdSx0LHMpe3ZhciB2PXMucGx1Z2lucy5jdXJzb3I7di5vbkdyaWQ9dHJ1ZTtpZih2LnNob3cpe3YucHJldmlvdXNDdXJzb3I9ci50YXJnZXQuc3R5bGUuY3Vyc29yO3IudGFyZ2V0LnN0eWxlLmN1cnNvcj12LnN0eWxlO2lmKHYuc2hvd1Rvb2x0aXApe2UocSx1LHMpO2lmKHYuZm9sbG93TW91c2Upe24ocSxzKX1lbHNle20ocyl9di5fdG9vbHRpcEVsZW0uc2hvdygpfWlmKHYuc2hvd1ZlcnRpY2FsTGluZXx8di5zaG93SG9yaXpvbnRhbExpbmUpe2cocSxzKX19fWZ1bmN0aW9uIGkocixxLHUsdCxzKXt2YXIgdj1zLnBsdWdpbnMuY3Vyc29yO2lmKHYuc2hvdyl7aWYodi5zaG93VG9vbHRpcCl7ZShxLHUscyk7aWYodi5mb2xsb3dNb3VzZSl7bihxLHMpfX1pZih2LnNob3dWZXJ0aWNhbExpbmV8fHYuc2hvd0hvcml6b250YWxMaW5lKXtnKHEscyl9fX1mdW5jdGlvbiBvKHkpe3ZhciB4PXkuZGF0YS5wbG90O3ZhciB0PXguZXZlbnRDYW52YXMuX2VsZW0ub2Zmc2V0KCk7dmFyIHc9e3g6eS5wYWdlWC10LmxlZnQseTp5LnBhZ2VZLXQudG9wfTt2YXIgdT17eGF4aXM6bnVsbCx5YXhpczpudWxsLHgyYXhpczpudWxsLHkyYXhpczpudWxsLHkzYXhpczpudWxsLHk0YXhpczpudWxsLHk1YXhpczpudWxsLHk2YXhpczpudWxsLHk3YXhpczpudWxsLHk4YXhpczpudWxsLHk5YXhpczpudWxsLHlNaWRBeGlzOm51bGx9O3ZhciB2PVsieGF4aXMiLCJ5YXhpcyIsIngyYXhpcyIsInkyYXhpcyIsInkzYXhpcyIsInk0YXhpcyIsInk1YXhpcyIsInk2YXhpcyIsInk3YXhpcyIsInk4YXhpcyIsInk5YXhpcyIsInlNaWRBeGlzIl07dmFyIHE9eC5heGVzO3ZhciByLHM7Zm9yKHI9MTE7cj4wO3ItLSl7cz12W3ItMV07aWYocVtzXS5zaG93KXt1W3NdPXFbc10uc2VyaWVzX3AydSh3W3MuY2hhckF0KDApXSl9fXJldHVybntvZmZzZXRzOnQsZ3JpZFBvczp3LGRhdGFQb3M6dX19ZnVuY3Rpb24gaCh6KXt2YXIgeD16LmRhdGEucGxvdDt2YXIgeT14LnBsdWdpbnMuY3Vyc29yO2lmKHkuc2hvdyYmeS56b29tJiZ5Ll96b29tLnN0YXJ0ZWQmJiF5Lnpvb21UYXJnZXQpe3oucHJldmVudERlZmF1bHQoKTt2YXIgQj15Lnpvb21DYW52YXMuX2N0eDt2YXIgdj1vKHopO3ZhciB3PXYuZ3JpZFBvczt2YXIgdD12LmRhdGFQb3M7eS5fem9vbS5ncmlkcG9zPXc7eS5fem9vbS5kYXRhcG9zPXQ7eS5fem9vbS56b29taW5nPXRydWU7dmFyIHU9dy54O3ZhciBzPXcueTt2YXIgQT1CLmNhbnZhcy5oZWlnaHQ7dmFyIHE9Qi5jYW52YXMud2lkdGg7aWYoeS5zaG93VG9vbHRpcCYmIXkub25HcmlkJiZ5LnNob3dUb29sdGlwT3V0c2lkZVpvb20pe2Uodyx0LHgpO2lmKHkuZm9sbG93TW91c2Upe24odyx4KX19aWYoeS5jb25zdHJhaW5ab29tVG89PSJ4Iil7eS5fem9vbS5lbmQ9W3UsQV19ZWxzZXtpZih5LmNvbnN0cmFpblpvb21Ubz09InkiKXt5Ll96b29tLmVuZD1bcSxzXX1lbHNle3kuX3pvb20uZW5kPVt1LHNdfX12YXIgcj13aW5kb3cuZ2V0U2VsZWN0aW9uO2lmKGRvY3VtZW50LnNlbGVjdGlvbiYmZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KXtkb2N1bWVudC5zZWxlY3Rpb24uZW1wdHkoKX1lbHNle2lmKHImJiFyKCkuaXNDb2xsYXBzZWQpe3IoKS5jb2xsYXBzZSgpfX1sLmNhbGwoeSk7Qj1udWxsfX1mdW5jdGlvbiBhKHcscyxyLHgsdCl7dmFyIHY9dC5wbHVnaW5zLmN1cnNvcjtpZih0LnBsdWdpbnMubW9iaWxlKXtqKGRvY3VtZW50KS5vbmUoInZtb3VzZXVwLmpxcGxvdF9jdXJzb3IiLHtwbG90OnR9LHApfWVsc2V7aihkb2N1bWVudCkub25lKCJtb3VzZXVwLmpxcGxvdF9jdXJzb3IiLHtwbG90OnR9LHApfXZhciB1PXQuYXhlcztpZihkb2N1bWVudC5vbnNlbGVjdHN0YXJ0IT11bmRlZmluZWQpe3YuX29sZEhhbmRsZXJzLm9uc2VsZWN0c3RhcnQ9ZG9jdW1lbnQub25zZWxlY3RzdGFydDtkb2N1bWVudC5vbnNlbGVjdHN0YXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlfX1pZihkb2N1bWVudC5vbmRyYWchPXVuZGVmaW5lZCl7di5fb2xkSGFuZGxlcnMub25kcmFnPWRvY3VtZW50Lm9uZHJhZztkb2N1bWVudC5vbmRyYWc9ZnVuY3Rpb24oKXtyZXR1cm4gZmFsc2V9fWlmKGRvY3VtZW50Lm9ubW91c2Vkb3duIT11bmRlZmluZWQpe3YuX29sZEhhbmRsZXJzLm9ubW91c2Vkb3duPWRvY3VtZW50Lm9ubW91c2Vkb3duO2RvY3VtZW50Lm9ubW91c2Vkb3duPWZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlfX1pZih2Lnpvb20pe2lmKCF2Lnpvb21Qcm94eSl7dmFyIHk9di56b29tQ2FudmFzLl9jdHg7eS5jbGVhclJlY3QoMCwwLHkuY2FudmFzLndpZHRoLHkuY2FudmFzLmhlaWdodCk7eT1udWxsfWlmKHYuY29uc3RyYWluWm9vbVRvPT0ieCIpe3YuX3pvb20uc3RhcnQ9W3MueCwwXX1lbHNle2lmKHYuY29uc3RyYWluWm9vbVRvPT0ieSIpe3YuX3pvb20uc3RhcnQ9WzAscy55XX1lbHNle3YuX3pvb20uc3RhcnQ9W3MueCxzLnldfX12Ll96b29tLnN0YXJ0ZWQ9dHJ1ZTtmb3IodmFyIHEgaW4gcil7di5fem9vbS5heGVzLnN0YXJ0W3FdPXJbcV19aWYodC5wbHVnaW5zLm1vYmlsZSl7aihkb2N1bWVudCkuYmluZCgidm1vdXNlbW92ZS5qcXBsb3RDdXJzb3IiLHtwbG90OnR9LGgpfWVsc2V7aihkb2N1bWVudCkuYmluZCgibW91c2Vtb3ZlLmpxcGxvdEN1cnNvciIse3Bsb3Q6dH0saCl9fX1mdW5jdGlvbiBwKHkpe3ZhciB2PXkuZGF0YS5wbG90O3ZhciB4PXYucGx1Z2lucy5jdXJzb3I7aWYoeC56b29tJiZ4Ll96b29tLnpvb21pbmcmJiF4Lnpvb21UYXJnZXQpe3ZhciB1PXguX3pvb20uZ3JpZHBvcy54O3ZhciByPXguX3pvb20uZ3JpZHBvcy55O3ZhciB0PXguX3pvb20uZGF0YXBvczt2YXIgej14Lnpvb21DYW52YXMuX2N0eC5jYW52YXMuaGVpZ2h0O3ZhciBxPXguem9vbUNhbnZhcy5fY3R4LmNhbnZhcy53aWR0aDt2YXIgdz12LmF4ZXM7aWYoeC5jb25zdHJhaW5PdXRzaWRlWm9vbSYmIXgub25HcmlkKXtpZih1PDApe3U9MH1lbHNle2lmKHU+cSl7dT1xfX1pZihyPDApe3I9MH1lbHNle2lmKHI+eil7cj16fX1mb3IodmFyIHMgaW4gdCl7aWYodFtzXSl7aWYocy5jaGFyQXQoMCk9PSJ4Iil7dFtzXT13W3NdLnNlcmllc19wMnUodSl9ZWxzZXt0W3NdPXdbc10uc2VyaWVzX3AydShyKX19fX1pZih4LmNvbnN0cmFpblpvb21Ubz09IngiKXtyPXp9ZWxzZXtpZih4LmNvbnN0cmFpblpvb21Ubz09InkiKXt1PXF9fXguX3pvb20uZW5kPVt1LHJdO3guX3pvb20uZ3JpZHBvcz17eDp1LHk6cn07eC5kb1pvb20oeC5fem9vbS5ncmlkcG9zLHQsdix4KX14Ll96b29tLnN0YXJ0ZWQ9ZmFsc2U7eC5fem9vbS56b29taW5nPWZhbHNlO2ooZG9jdW1lbnQpLnVuYmluZCgibW91c2Vtb3ZlLmpxcGxvdEN1cnNvciIsaCk7aWYoZG9jdW1lbnQub25zZWxlY3RzdGFydCE9dW5kZWZpbmVkJiZ4Ll9vbGRIYW5kbGVycy5vbnNlbGVjdHN0YXJ0IT1udWxsKXtkb2N1bWVudC5vbnNlbGVjdHN0YXJ0PXguX29sZEhhbmRsZXJzLm9uc2VsZWN0c3RhcnQ7eC5fb2xkSGFuZGxlcnMub25zZWxlY3RzdGFydD1udWxsfWlmKGRvY3VtZW50Lm9uZHJhZyE9dW5kZWZpbmVkJiZ4Ll9vbGRIYW5kbGVycy5vbmRyYWchPW51bGwpe2RvY3VtZW50Lm9uZHJhZz14Ll9vbGRIYW5kbGVycy5vbmRyYWc7eC5fb2xkSGFuZGxlcnMub25kcmFnPW51bGx9aWYoZG9jdW1lbnQub25tb3VzZWRvd24hPXVuZGVmaW5lZCYmeC5fb2xkSGFuZGxlcnMub25tb3VzZWRvd24hPW51bGwpe2RvY3VtZW50Lm9ubW91c2Vkb3duPXguX29sZEhhbmRsZXJzLm9ubW91c2Vkb3duO3guX29sZEhhbmRsZXJzLm9ubW91c2Vkb3duPW51bGx9fWZ1bmN0aW9uIGwoKXt2YXIgeT10aGlzLl96b29tLnN0YXJ0O3ZhciB1PXRoaXMuX3pvb20uZW5kO3ZhciBzPXRoaXMuem9vbUNhbnZhcy5fY3R4O3ZhciByLHYseCxxO2lmKHVbMF0+eVswXSl7cj15WzBdO3E9dVswXS15WzBdfWVsc2V7cj11WzBdO3E9eVswXS11WzBdfWlmKHVbMV0+eVsxXSl7dj15WzFdO3g9dVsxXS15WzFdfWVsc2V7dj11WzFdO3g9eVsxXS11WzFdfXMuZmlsbFN0eWxlPSJyZ2JhKDAsMCwwLDAuMikiO3Muc3Ryb2tlU3R5bGU9IiM5OTk5OTkiO3MubGluZVdpZHRoPTE7cy5jbGVhclJlY3QoMCwwLHMuY2FudmFzLndpZHRoLHMuY2FudmFzLmhlaWdodCk7cy5maWxsUmVjdCgwLDAscy5jYW52YXMud2lkdGgscy5jYW52YXMuaGVpZ2h0KTtzLmNsZWFyUmVjdChyLHYscSx4KTtzLnN0cm9rZVJlY3Qocix2LHEseCk7cz1udWxsfWouanFwbG90LkN1cnNvckxlZ2VuZFJlbmRlcmVyPWZ1bmN0aW9uKHEpe2ouanFwbG90LlRhYmxlTGVnZW5kUmVuZGVyZXIuY2FsbCh0aGlzLHEpO3RoaXMuZm9ybWF0U3RyaW5nPSIlcyJ9O2ouanFwbG90LkN1cnNvckxlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZT1uZXcgai5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlcigpO2ouanFwbG90LkN1cnNvckxlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1qLmpxcGxvdC5DdXJzb3JMZWdlbmRSZW5kZXJlcjtqLmpxcGxvdC5DdXJzb3JMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbigpe2lmKHRoaXMuX2VsZW0pe3RoaXMuX2VsZW0uZW1wdHlGb3JjZSgpO3RoaXMuX2VsZW09bnVsbH1pZih0aGlzLnNob3cpe3ZhciB3PXRoaXMuX3NlcmllcyxBO3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxlIik7dGhpcy5fZWxlbT1qKHIpO3I9bnVsbDt0aGlzLl9lbGVtLmFkZENsYXNzKCJqcXBsb3QtbGVnZW5kIGpxcGxvdC1jdXJzb3ItbGVnZW5kIik7dGhpcy5fZWxlbS5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKTt2YXIgcT1mYWxzZTtmb3IodmFyIHg9MDt4PHcubGVuZ3RoO3grKyl7QT13W3hdO2lmKEEuc2hvdyYmQS5zaG93TGFiZWwpe3ZhciB2PWouanFwbG90LnNwcmludGYodGhpcy5mb3JtYXRTdHJpbmcsQS5sYWJlbC50b1N0cmluZygpKTtpZih2KXt2YXIgdD1BLmNvbG9yO2lmKEEuX3N0YWNrJiYhQS5maWxsKXt0PSIifXouY2FsbCh0aGlzLHYsdCxxLHgpO3E9dHJ1ZX1mb3IodmFyIHU9MDt1PGouanFwbG90LmFkZExlZ2VuZFJvd0hvb2tzLmxlbmd0aDt1Kyspe3ZhciB5PWouanFwbG90LmFkZExlZ2VuZFJvd0hvb2tzW3VdLmNhbGwodGhpcyxBKTtpZih5KXt6LmNhbGwodGhpcyx5LmxhYmVsLHkuY29sb3IscSk7cT10cnVlfX19fXc9QT1udWxsO2RlbGV0ZSB3O2RlbGV0ZSBBfWZ1bmN0aW9uIHooRCxDLEYscyl7dmFyIEI9KEYpP3RoaXMucm93U3BhY2luZzoiMCI7dmFyIEU9aignPHRyIGNsYXNzPSJqcXBsb3QtbGVnZW5kIGpxcGxvdC1jdXJzb3ItbGVnZW5kIj48L3RyPicpLmFwcGVuZFRvKHRoaXMuX2VsZW0pO0UuZGF0YSgic2VyaWVzSW5kZXgiLHMpO2ooJzx0ZCBjbGFzcz0ianFwbG90LWxlZ2VuZCBqcXBsb3QtY3Vyc29yLWxlZ2VuZC1zd2F0Y2giIHN0eWxlPSJwYWRkaW5nLXRvcDonK0IrJzsiPjxkaXYgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgI2NjY2NjYztwYWRkaW5nOjAuMmVtOyI+PGRpdiBjbGFzcz0ianFwbG90LWN1cnNvci1sZWdlbmQtc3dhdGNoIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjonK0MrJzsiPjwvZGl2PjwvZGl2PjwvdGQ+JykuYXBwZW5kVG8oRSk7dmFyIEc9aignPHRkIGNsYXNzPSJqcXBsb3QtbGVnZW5kIGpxcGxvdC1jdXJzb3ItbGVnZW5kLWxhYmVsIiBzdHlsZT0idmVydGljYWwtYWxpZ246bWlkZGxlO3BhZGRpbmctdG9wOicrQisnOyI+PC90ZD4nKTtHLmFwcGVuZFRvKEUpO0cuZGF0YSgic2VyaWVzSW5kZXgiLHMpO2lmKHRoaXMuZXNjYXBlSHRtbCl7Ry50ZXh0KEQpfWVsc2V7Ry5odG1sKEQpfUU9bnVsbDtHPW51bGx9cmV0dXJuIHRoaXMuX2VsZW19fSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.dateAxisRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgeyAgCiAgICAvKioKICAgICAqIENsYXNzOiAkLmpxcGxvdC5EYXRlQXhpc1JlbmRlcmVyCiAgICAgKiBBIHBsdWdpbiBmb3IgYSBqcVBsb3QgdG8gcmVuZGVyIGFuIGF4aXMgYXMgYSBzZXJpZXMgb2YgZGF0ZSB2YWx1ZXMuCiAgICAgKiBUaGlzIHJlbmRlcmVyIGhhcyBubyBvcHRpb25zIGJleW9uZCB0aG9zZSBzdXBwbGllZCBieSB0aGUgPEF4aXM+IGNsYXNzLgogICAgICogSXQgc3VwcGxpZXMgaXRzIG93biB0aWNrIGZvcm1hdHRlciwgc28gdGhlIHRpY2tPcHRpb25zLmZvcm1hdHRlciBvcHRpb24KICAgICAqIHNob3VsZCBub3QgYmUgb3ZlcnJpZGRlbi4KICAgICAqIAogICAgICogVGhhbmtzIHRvIEtlbiBTeW5kZXIgZm9yIGhpcyBlbmhhbmNlZCBEYXRlIGluc3RhbmNlIG1ldGhvZHMgd2hpY2ggYXJlCiAgICAgKiBpbmNsdWRlZCB3aXRoIHRoaXMgY29kZSA8aHR0cDovL2tlbmRzbnlkZXIuY29tL3NhbmRib3gvZGF0ZS8+LgogICAgICogCiAgICAgKiBUbyB1c2UgdGhpcyByZW5kZXJlciwgaW5jbHVkZSB0aGUgcGx1Z2luIGluIHlvdXIgc291cmNlCiAgICAgKiA+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSJwbHVnaW5zL2pxcGxvdC5kYXRlQXhpc1JlbmRlcmVyLmpzIj48L3NjcmlwdD4KICAgICAqIAogICAgICogYW5kIHN1cHBseSB0aGUgYXBwcm9wcmlhdGUgb3B0aW9ucyB0byB5b3VyIHBsb3QKICAgICAqIAogICAgICogPiB7YXhlczp7eGF4aXM6e3JlbmRlcmVyOiQuanFwbG90LkRhdGVBeGlzUmVuZGVyZXJ9fX0KICAgICAqIAogICAgICogRGF0ZXMgY2FuIGJlIHBhc3NlZCBpbnRvIHRoZSBheGlzIGluIGFsbW9zdCBhbnkgcmVjb2duaXphYmxlIHZhbHVlIGFuZCAKICAgICAqIHdpbGwgYmUgcGFyc2VkLiAgVGhleSB3aWxsIGJlIHJlbmRlcmVkIG9uIHRoZSBheGlzIGluIHRoZSBmb3JtYXQKICAgICAqIHNwZWNpZmllZCBieSB0aWNrT3B0aW9ucy5mb3JtYXRTdHJpbmcuICBlLmcuIHRpY2tPcHRpb25zLmZvcm1hdFN0cmluZyA9ICclWS0lbS0lZCcuCiAgICAgKiAKICAgICAqIEFjY2VjcHRhYmxlIGZvcm1hdCBjb2RlcyAKICAgICAqIGFyZToKICAgICAqIAogICAgICogPiBDb2RlICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uCiAgICAgKiA+ICAgICAgICAgICAgID09IFllYXJzID09CiAgICAgKiA+ICVZICAgICAgMjAwOCAgICAgICAgICAgICAgICBGb3VyLWRpZ2l0IHllYXIKICAgICAqID4gJXkgICAgICAwOCAgICAgICAgICAgICAgICAgIFR3by1kaWdpdCB5ZWFyCiAgICAgKiA+ICAgICAgICAgICAgID09IE1vbnRocyA9PQogICAgICogPiAlbSAgICAgIDA5ICAgICAgICAgICAgICAgICAgVHdvLWRpZ2l0IG1vbnRoCiAgICAgKiA+ICUjbSAgICAgOSAgICAgICAgICAgICAgICAgICBPbmUgb3IgdHdvLWRpZ2l0IG1vbnRoCiAgICAgKiA+ICVCICAgICAgU2VwdGVtYmVyICAgICAgICAgICBGdWxsIG1vbnRoIG5hbWUKICAgICAqID4gJWIgICAgICBTZXAgICAgICAgICAgICAgICAgIEFiYnJldmlhdGVkIG1vbnRoIG5hbWUKICAgICAqID4gICAgICAgICAgICAgPT0gRGF5cyA9PQogICAgICogPiAlZCAgICAgIDA1ICAgICAgICAgICAgICAgICAgVHdvLWRpZ2l0IGRheSBvZiBtb250aAogICAgICogPiAlI2QgICAgIDUgICAgICAgICAgICAgICAgICAgT25lIG9yIHR3by1kaWdpdCBkYXkgb2YgbW9udGgKICAgICAqID4gJWUgICAgICA1ICAgICAgICAgICAgICAgICAgIE9uZSBvciB0d28tZGlnaXQgZGF5IG9mIG1vbnRoCiAgICAgKiA+ICVBICAgICAgU3VuZGF5ICAgICAgICAgICAgICBGdWxsIG5hbWUgb2YgdGhlIGRheSBvZiB0aGUgd2VlawogICAgICogPiAlYSAgICAgIFN1biAgICAgICAgICAgICAgICAgQWJicmV2aWF0ZWQgbmFtZSBvZiB0aGUgZGF5IG9mIHRoZSB3ZWVrCiAgICAgKiA+ICV3ICAgICAgMCAgICAgICAgICAgICAgICAgICBOdW1iZXIgb2YgdGhlIGRheSBvZiB0aGUgd2VlayAoMCA9IFN1bmRheSwgNiA9IFNhdHVyZGF5KQogICAgICogPiAlbyAgICAgIHRoICAgICAgICAgICAgICAgICAgVGhlIG9yZGluYWwgc3VmZml4IHN0cmluZyBmb2xsb3dpbmcgdGhlIGRheSBvZiB0aGUgbW9udGgKICAgICAqID4gICAgICAgICAgICAgPT0gSG91cnMgPT0KICAgICAqID4gJUggICAgICAyMyAgICAgICAgICAgICAgICAgIEhvdXJzIGluIDI0LWhvdXIgZm9ybWF0ICh0d28gZGlnaXRzKQogICAgICogPiAlI0ggICAgIDMgICAgICAgICAgICAgICAgICAgSG91cnMgaW4gMjQtaG91ciBpbnRlZ2VyIGZvcm1hdCAob25lIG9yIHR3byBkaWdpdHMpCiAgICAgKiA+ICVJICAgICAgMTEgICAgICAgICAgICAgICAgICBIb3VycyBpbiAxMi1ob3VyIGZvcm1hdCAodHdvIGRpZ2l0cykKICAgICAqID4gJSNJICAgICAzICAgICAgICAgICAgICAgICAgIEhvdXJzIGluIDEyLWhvdXIgaW50ZWdlciBmb3JtYXQgKG9uZSBvciB0d28gZGlnaXRzKQogICAgICogPiAlcCAgICAgIFBNICAgICAgICAgICAgICAgICAgQU0gb3IgUE0KICAgICAqID4gICAgICAgICAgICAgPT0gTWludXRlcyA9PQogICAgICogPiAlTSAgICAgIDA5ICAgICAgICAgICAgICAgICAgTWludXRlcyAodHdvIGRpZ2l0cykKICAgICAqID4gJSNNICAgICA5ICAgICAgICAgICAgICAgICAgIE1pbnV0ZXMgKG9uZSBvciB0d28gZGlnaXRzKQogICAgICogPiAgICAgICAgICAgICA9PSBTZWNvbmRzID09CiAgICAgKiA+ICVTICAgICAgMDIgICAgICAgICAgICAgICAgICBTZWNvbmRzICh0d28gZGlnaXRzKQogICAgICogPiAlI1MgICAgIDIgICAgICAgICAgICAgICAgICAgU2Vjb25kcyAob25lIG9yIHR3byBkaWdpdHMpCiAgICAgKiA+ICVzICAgICAgMTIwNjU2NzYyNTcyMyAgICAgICBVbml4IHRpbWVzdGFtcCAoU2Vjb25kcyBwYXN0IDE5NzAtMDEtMDEgMDA6MDA6MDApCiAgICAgKiA+ICAgICAgICAgICAgID09IE1pbGxpc2Vjb25kcyA9PQogICAgICogPiAlTiAgICAgIDAwOCAgICAgICAgICAgICAgICAgTWlsbGlzZWNvbmRzICh0aHJlZSBkaWdpdHMpCiAgICAgKiA+ICUjTiAgICAgOCAgICAgICAgICAgICAgICAgICBNaWxsaXNlY29uZHMgKG9uZSB0byB0aHJlZSBkaWdpdHMpCiAgICAgKiA+ICAgICAgICAgICAgID09IFRpbWV6b25lID09CiAgICAgKiA+ICVPICAgICAgMzYwICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlIGluIG1pbnV0ZXMgYmV0d2VlbiBsb2NhbCB0aW1lIGFuZCBHTVQKICAgICAqID4gJVogICAgICBNb3VudGFpbiBTdGFuZGFyZCBUaW1lICBOYW1lIG9mIHRpbWV6b25lIGFzIHJlcG9ydGVkIGJ5IGJyb3dzZXIKICAgICAqID4gJUcgICAgICAtMDY6MDAgICAgICAgICAgICAgIEhvdXJzIGFuZCBtaW51dGVzIGJldHdlZW4gR01UCiAgICAgKiA+ICAgICAgICAgICAgID09IFNob3J0Y3V0cyA9PQogICAgICogPiAlRiAgICAgIDIwMDgtMDMtMjYgICAgICAgICAgJVktJW0tJWQKICAgICAqID4gJVQgICAgICAwNTowNjozMCAgICAgICAgICAgICVIOiVNOiVTCiAgICAgKiA+ICVYICAgICAgMDU6MDY6MzAgICAgICAgICAgICAlSDolTTolUwogICAgICogPiAleCAgICAgIDAzLzI2LzA4ICAgICAgICAgICAgJW0vJWQvJXkKICAgICAqID4gJUQgICAgICAwMy8yNi8wOCAgICAgICAgICAgICVtLyVkLyV5CiAgICAgKiA+ICUjYyAgICAgV2VkIE1hciAyNiAxNTozMTowMCAyMDA4ICAlYSAlYiAlZSAlSDolTTolUyAlWQogICAgICogPiAldiAgICAgIDMtU2VwLTIwMDggICAgICAgICAgJWUtJWItJVkKICAgICAqID4gJVIgICAgICAxNTozMSAgICAgICAgICAgICAgICVIOiVNCiAgICAgKiA+ICVyICAgICAgMzozMTowMCBQTSAgICAgICAgICAlSTolTTolUyAlcAogICAgICogPiAgICAgICAgICAgICA9PSBDaGFyYWN0ZXJzID09CiAgICAgKiA+ICVuICAgICAgXG4gICAgICAgICAgICAgICAgICBOZXdsaW5lCiAgICAgKiA+ICV0ICAgICAgXHQgICAgICAgICAgICAgICAgICBUYWIKICAgICAqID4gJSUgICAgICAlICAgICAgICAgICAgICAgICAgIFBlcmNlbnQgU3ltYm9sIAogICAgICovCiAgICAkLmpxcGxvdC5EYXRlQXhpc1JlbmRlcmVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgJC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyLmNhbGwodGhpcyk7CiAgICAgICAgdGhpcy5kYXRlID0gbmV3ICQuanNEYXRlKCk7CiAgICB9OwoKICAgIHZhciBzZWNvbmQgPSAxMDAwOwogICAgdmFyIG1pbnV0ZSA9IDYwICogc2Vjb25kOwogICAgdmFyIGhvdXIgPSA2MCAqIG1pbnV0ZTsKICAgIHZhciBkYXkgPSAyNCAqIGhvdXI7CiAgICB2YXIgd2VlayA9IDcgKiBkYXk7CgogICAgLy8gdGhlc2UgYXJlIGxlc3MgZGVmaW5pdGl2ZQogICAgdmFyIG1vbnRoID0gMzAuNDM2ODQ5OSAqIGRheTsKICAgIHZhciB5ZWFyID0gMzY1LjI0MjE5OSAqIGRheTsKCiAgICB2YXIgZGF5c0luTW9udGhzID0gWzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMwLDMxLDMwLDMxLDMwXTsKICAgIC8vIGFycmF5IG9mIGNvbnNpc3RlbnQgbmljZSBpbnRlcnZhbHMuICBMb25nZXIgaW50ZXJ2YWxzCiAgICAvLyB3aWxsIGRlcGVuZCBvbiBkYXlzIGluIG1vbnRoLCBkYXlzIGluIHllYXIsIGV0Yy4KICAgIHZhciBuaWNlRm9ybWF0U3RyaW5ncyA9IFsnJU06JVMuJSNOJywgJyVNOiVTLiUjTicsICclTTolUy4lI04nLCAnJU06JVMnLCAnJU06JVMnLCAnJU06JVMnLCAnJU06JVMnLCAnJUg6JU06JVMnLCAnJUg6JU06JVMnLCAnJUg6JU0nLCAnJUg6JU0nLCAnJUg6JU0nLCAnJUg6JU0nLCAnJUg6JU0nLCAnJUg6JU0nLCAnJWEgJUg6JU0nLCAnJWEgJUg6JU0nLCAnJWIgJWUgJUg6JU0nLCAnJWIgJWUgJUg6JU0nLCAnJWIgJWUgJUg6JU0nLCAnJWIgJWUgJUg6JU0nLCAnJXYnLCAnJXYnLCAnJXYnLCAnJXYnLCAnJXYnLCAnJXYnLCAnJXYnXTsKICAgIHZhciBuaWNlSW50ZXJ2YWxzID0gWzAuMSpzZWNvbmQsIDAuMipzZWNvbmQsIDAuNSpzZWNvbmQsIHNlY29uZCwgMipzZWNvbmQsIDUqc2Vjb25kLCAxMCpzZWNvbmQsIDE1KnNlY29uZCwgMzAqc2Vjb25kLCBtaW51dGUsIDIqbWludXRlLCA1Km1pbnV0ZSwgMTAqbWludXRlLCAxNSptaW51dGUsIDMwKm1pbnV0ZSwgaG91ciwgMipob3VyLCA0KmhvdXIsIDYqaG91ciwgOCpob3VyLCAxMipob3VyLCBkYXksIDIqZGF5LCAzKmRheSwgNCpkYXksIDUqZGF5LCB3ZWVrLCAyKndlZWtdOwoKICAgIHZhciBuaWNlTW9udGhseUludGVydmFscyA9IFtdOwoKICAgIGZ1bmN0aW9uIGJlc3REYXRlSW50ZXJ2YWwobWluLCBtYXgsIHRpdGFyZ2V0KSB7CiAgICAgICAgLy8gaXRlcmF0ZSB0aHJvdWdoIG5pY2VJbnRlcnZhbHMgdG8gZmluZCBvbmUgY2xvc2VzdCB0byB0aXRhcmdldAogICAgICAgIHZhciBiYWRuZXNzID0gTnVtYmVyLk1BWF9WQUxVRTsKICAgICAgICB2YXIgdGVtcCwgYmVzdFRpLCBiZXN0Zm10OwogICAgICAgIGZvciAodmFyIGk9MCwgbD1uaWNlSW50ZXJ2YWxzLmxlbmd0aDsgaSA8IGw7IGkrKykgewogICAgICAgICAgICB0ZW1wID0gTWF0aC5hYnModGl0YXJnZXQgLSBuaWNlSW50ZXJ2YWxzW2ldKTsKICAgICAgICAgICAgaWYgKHRlbXAgPCBiYWRuZXNzKSB7CiAgICAgICAgICAgICAgICBiYWRuZXNzID0gdGVtcDsKICAgICAgICAgICAgICAgIGJlc3RUaSA9IG5pY2VJbnRlcnZhbHNbaV07CiAgICAgICAgICAgICAgICBiZXN0Zm10ID0gbmljZUZvcm1hdFN0cmluZ3NbaV07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBbYmVzdFRpLCBiZXN0Zm10XTsKICAgIH0KICAgIAogICAgJC5qcXBsb3QuRGF0ZUF4aXNSZW5kZXJlci5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7CiAgICAkLmpxcGxvdC5EYXRlQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LkRhdGVBeGlzUmVuZGVyZXI7CiAgICAKICAgICQuanFwbG90LkRhdGVUaWNrRm9ybWF0dGVyID0gZnVuY3Rpb24oZm9ybWF0LCB2YWwpIHsKICAgICAgICBpZiAoIWZvcm1hdCkgewogICAgICAgICAgICBmb3JtYXQgPSAnJVkvJW0vJWQnOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJC5qc0RhdGUuc3RyZnRpbWUodmFsLCBmb3JtYXQpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRGF0ZUF4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpewogICAgICAgIC8vIHByb3A6IHRpY2tSZW5kZXJlcgogICAgICAgIC8vIEEgY2xhc3Mgb2YgYSByZW5kZXJpbmcgZW5naW5lIGZvciBjcmVhdGluZyB0aGUgdGlja3MgbGFiZWxzIGRpc3BsYXllZCBvbiB0aGUgcGxvdCwgCiAgICAgICAgLy8gU2VlIDwkLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyPi4KICAgICAgICAvLyB0aGlzLnRpY2tSZW5kZXJlciA9ICQuanFwbG90LkF4aXNUaWNrUmVuZGVyZXI7CiAgICAgICAgLy8gdGhpcy5sYWJlbFJlbmRlcmVyID0gJC5qcXBsb3QuQXhpc0xhYmVsUmVuZGVyZXI7CiAgICAgICAgdGhpcy50aWNrT3B0aW9ucy5mb3JtYXR0ZXIgPSAkLmpxcGxvdC5EYXRlVGlja0Zvcm1hdHRlcjsKICAgICAgICAvLyBwcm9wOiB0aWNrSW5zZXQKICAgICAgICAvLyBDb250cm9scyB0aGUgYW1vdW50IHRvIGluc2V0IHRoZSBmaXJzdCBhbmQgbGFzdCB0aWNrcyBmcm9tIAogICAgICAgIC8vIHRoZSBlZGdlcyBvZiB0aGUgZ3JpZCwgaW4gbXVsdGlwbGVzIG9mIHRoZSB0aWNrIGludGVydmFsLgogICAgICAgIC8vIDAgaXMgbm8gaW5zZXQsIDAuNSBpcyBvbmUgaGFsZiBhIHRpY2sgaW50ZXJ2YWwsIDEgaXMgYSBmdWxsCiAgICAgICAgLy8gdGljayBpbnRlcnZhbCwgZXRjLgogICAgICAgIHRoaXMudGlja0luc2V0ID0gMDsKICAgICAgICAvLyBwcm9wOiBkcmF3QmFzZWxpbmUKICAgICAgICAvLyBUcnVlIHRvIGRyYXcgdGhlIGF4aXMgYmFzZWxpbmUuCiAgICAgICAgdGhpcy5kcmF3QmFzZWxpbmUgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IGJhc2VsaW5lV2lkdGgKICAgICAgICAvLyB3aWR0aCBvZiB0aGUgYmFzZWxpbmUgaW4gcGl4ZWxzLgogICAgICAgIHRoaXMuYmFzZWxpbmVXaWR0aCA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogYmFzZWxpbmVDb2xvcgogICAgICAgIC8vIENTUyBjb2xvciBzcGVjIGZvciB0aGUgYmFzZWxpbmUuCiAgICAgICAgdGhpcy5iYXNlbGluZUNvbG9yID0gbnVsbDsKICAgICAgICB0aGlzLmRhVGlja0ludGVydmFsID0gbnVsbDsKICAgICAgICB0aGlzLl9kYVRpY2tJbnRlcnZhbCA9IG51bGw7CiAgICAgICAgCiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CiAgICAgICAgCiAgICAgICAgdmFyIGRiID0gdGhpcy5fZGF0YUJvdW5kcywKICAgICAgICAgICAgc3RhdHMsIAogICAgICAgICAgICBzdW0sCiAgICAgICAgICAgIHMsCiAgICAgICAgICAgIGQsCiAgICAgICAgICAgIHBkLAogICAgICAgICAgICBzZCwKICAgICAgICAgICAgaW50djsKICAgICAgICAKICAgICAgICAvLyBHbyB0aHJvdWdoIGFsbCB0aGUgc2VyaWVzIGF0dGFjaGVkIHRvIHRoaXMgYXhpcyBhbmQgZmluZAogICAgICAgIC8vIHRoZSBtaW4vbWF4IGJvdW5kcyBmb3IgdGhpcyBheGlzLgogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgc3RhdHMgPSB7aW50ZXJ2YWxzOltdLCBmcmVxdWVuY2llczp7fSwgc29ydGVkSW50ZXJ2YWxzOltdLCBtaW46bnVsbCwgbWF4Om51bGwsIG1lYW46bnVsbH07CiAgICAgICAgICAgIHN1bSA9IDA7CiAgICAgICAgICAgIHMgPSB0aGlzLl9zZXJpZXNbaV07CiAgICAgICAgICAgIGQgPSBzLmRhdGE7CiAgICAgICAgICAgIHBkID0gcy5fcGxvdERhdGE7CiAgICAgICAgICAgIHNkID0gcy5fc3RhY2tEYXRhOwogICAgICAgICAgICBpbnR2ID0gMDsKICAgICAgICAgICAgCiAgICAgICAgICAgIGZvciAodmFyIGo9MDsgajxkLmxlbmd0aDsgaisrKSB7IAogICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnIHx8IHRoaXMubmFtZSA9PSAneDJheGlzJykgewogICAgICAgICAgICAgICAgICAgIGRbal1bMF0gPSBuZXcgJC5qc0RhdGUoZFtqXVswXSkuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgICAgIHBkW2pdWzBdID0gbmV3ICQuanNEYXRlKGRbal1bMF0pLmdldFRpbWUoKTsKICAgICAgICAgICAgICAgICAgICBzZFtqXVswXSA9IG5ldyAkLmpzRGF0ZShkW2pdWzBdKS5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKChkW2pdWzBdICE9IG51bGwgJiYgZFtqXVswXSA8IGRiLm1pbikgfHwgZGIubWluID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGIubWluID0gZFtqXVswXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKChkW2pdWzBdICE9IG51bGwgJiYgZFtqXVswXSA+IGRiLm1heCkgfHwgZGIubWF4ID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGIubWF4ID0gZFtqXVswXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGo+MCkgewogICAgICAgICAgICAgICAgICAgICAgICBpbnR2ID0gTWF0aC5hYnMoZFtqXVswXSAtIGRbai0xXVswXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRzLmludGVydmFscy5wdXNoKGludHYpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHMuZnJlcXVlbmNpZXMuaGFzT3duUHJvcGVydHkoaW50dikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRzLmZyZXF1ZW5jaWVzW2ludHZdICs9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0cy5mcmVxdWVuY2llc1tpbnR2XSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgc3VtICs9IGludHY7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGRbal1bMV0gPSBuZXcgJC5qc0RhdGUoZFtqXVsxXSkuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgICAgIHBkW2pdWzFdID0gbmV3ICQuanNEYXRlKGRbal1bMV0pLmdldFRpbWUoKTsKICAgICAgICAgICAgICAgICAgICBzZFtqXVsxXSA9IG5ldyAkLmpzRGF0ZShkW2pdWzFdKS5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKChkW2pdWzFdICE9IG51bGwgJiYgZFtqXVsxXSA8IGRiLm1pbikgfHwgZGIubWluID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGIubWluID0gZFtqXVsxXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKChkW2pdWzFdICE9IG51bGwgJiYgZFtqXVsxXSA+IGRiLm1heCkgfHwgZGIubWF4ID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGIubWF4ID0gZFtqXVsxXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGo+MCkgewogICAgICAgICAgICAgICAgICAgICAgICBpbnR2ID0gTWF0aC5hYnMoZFtqXVsxXSAtIGRbai0xXVsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRzLmludGVydmFscy5wdXNoKGludHYpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHMuZnJlcXVlbmNpZXMuaGFzT3duUHJvcGVydHkoaW50dikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRzLmZyZXF1ZW5jaWVzW2ludHZdICs9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0cy5mcmVxdWVuY2llc1tpbnR2XSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdW0gKz0gaW50djsgICAgICAgICAgICAgIAogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAocy5yZW5kZXJlci5iYW5kcykgewogICAgICAgICAgICAgICAgaWYgKHMucmVuZGVyZXIuYmFuZHMuaGlEYXRhLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIHZhciBiZCA9IHMucmVuZGVyZXIuYmFuZHMuaGlEYXRhOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MCwgbD1iZC5sZW5ndGg7IGogPCBsOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT09ICd4MmF4aXMnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZFtqXVswXSA9IG5ldyAkLmpzRGF0ZShiZFtqXVswXSkuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChiZFtqXVswXSAhPSBudWxsICYmIGJkW2pdWzBdID4gZGIubWF4KSB8fCBkYi5tYXggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiLm1heCA9IGJkW2pdWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZFtqXVsxXSA9IG5ldyAkLmpzRGF0ZShiZFtqXVsxXSkuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChiZFtqXVsxXSAhPSBudWxsICYmIGJkW2pdWzFdID4gZGIubWF4KSB8fCBkYi5tYXggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiLm1heCA9IGJkW2pdWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHMucmVuZGVyZXIuYmFuZHMubG93RGF0YS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYmQgPSBzLnJlbmRlcmVyLmJhbmRzLmxvd0RhdGE7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wLCBsPWJkLmxlbmd0aDsgaiA8IGw7IGorKykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lID09PSAneGF4aXMnIHx8IHRoaXMubmFtZSA9PT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJkW2pdWzBdID0gbmV3ICQuanNEYXRlKGJkW2pdWzBdKS5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGJkW2pdWzBdICE9IG51bGwgJiYgYmRbal1bMF0gPCBkYi5taW4pIHx8IGRiLm1pbiA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGIubWluID0gYmRbal1bMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmRbal1bMV0gPSBuZXcgJC5qc0RhdGUoYmRbal1bMV0pLmdldFRpbWUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYmRbal1bMV0gIT0gbnVsbCAmJiBiZFtqXVsxXSA8IGRiLm1pbikgfHwgZGIubWluID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYi5taW4gPSBiZFtqXVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIHRlbXBmID0gMCwKICAgICAgICAgICAgICAgIHRlbXBuPTA7CiAgICAgICAgICAgIGZvciAodmFyIG4gaW4gc3RhdHMuZnJlcXVlbmNpZXMpIHsKICAgICAgICAgICAgICAgIHN0YXRzLnNvcnRlZEludGVydmFscy5wdXNoKHtpbnRlcnZhbDpuLCBmcmVxdWVuY3k6c3RhdHMuZnJlcXVlbmNpZXNbbl19KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGF0cy5zb3J0ZWRJbnRlcnZhbHMuc29ydChmdW5jdGlvbihhLCBiKXsKICAgICAgICAgICAgICAgIHJldHVybiBiLmZyZXF1ZW5jeSAtIGEuZnJlcXVlbmN5OwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHN0YXRzLm1pbiA9ICQuanFwbG90LmFycmF5TWluKHN0YXRzLmludGVydmFscyk7CiAgICAgICAgICAgIHN0YXRzLm1heCA9ICQuanFwbG90LmFycmF5TWF4KHN0YXRzLmludGVydmFscyk7CiAgICAgICAgICAgIHN0YXRzLm1lYW4gPSBzdW0vZC5sZW5ndGg7CiAgICAgICAgICAgIHRoaXMuX2ludGVydmFsU3RhdHMucHVzaChzdGF0cyk7CiAgICAgICAgICAgIHN0YXRzID0gc3VtID0gcyA9IGQgPSBwZCA9IHNkID0gbnVsbDsKICAgICAgICB9CiAgICAgICAgZGIgPSBudWxsOwogICAgICAgIAogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYW4gYXhpcwogICAgJC5qcXBsb3QuRGF0ZUF4aXNSZW5kZXJlci5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbigpIHsKICAgICAgICB0aGlzLm1pbiA9IHRoaXMuX29wdGlvbnMubWluOwogICAgICAgIHRoaXMubWF4ID0gdGhpcy5fb3B0aW9ucy5tYXg7CiAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSB0aGlzLl9vcHRpb25zLnRpY2tJbnRlcnZhbDsKICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gdGhpcy5fb3B0aW9ucy5udW1iZXJUaWNrczsKICAgICAgICB0aGlzLl9hdXRvRm9ybWF0U3RyaW5nID0gJyc7CiAgICAgICAgaWYgKHRoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nICYmIHRoaXMudGlja09wdGlvbnMgJiYgdGhpcy50aWNrT3B0aW9ucy5mb3JtYXRTdHJpbmcpIHsKICAgICAgICAgICAgdGhpcy50aWNrT3B0aW9ucy5mb3JtYXRTdHJpbmcgPSAnJzsKICAgICAgICB9CiAgICAgICAgdGhpcy5kYVRpY2tJbnRlcnZhbCA9IHRoaXMuX2RhVGlja0ludGVydmFsOwogICAgICAgIC8vIHRoaXMuX3RpY2tzID0gdGhpcy5fX3RpY2tzOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRGF0ZUF4aXNSZW5kZXJlci5wcm90b3R5cGUuY3JlYXRlVGlja3MgPSBmdW5jdGlvbihwbG90KSB7CiAgICAgICAgLy8gd2UncmUgYXJlIG9wZXJhdGluZyBvbiBhbiBheGlzIGhlcmUKICAgICAgICB2YXIgdGlja3MgPSB0aGlzLl90aWNrczsKICAgICAgICB2YXIgdXNlclRpY2tzID0gdGhpcy50aWNrczsKICAgICAgICB2YXIgbmFtZSA9IHRoaXMubmFtZTsKICAgICAgICAvLyBkYXRhYm91bmRzIHdlcmUgc2V0IG9uIGF4aXMgaW5pdGlhbGl6YXRpb24uCiAgICAgICAgdmFyIGRiID0gdGhpcy5fZGF0YUJvdW5kczsKICAgICAgICB2YXIgaXYgPSB0aGlzLl9pbnRlcnZhbFN0YXRzOwogICAgICAgIHZhciBkaW0gPSAodGhpcy5uYW1lLmNoYXJBdCgwKSA9PT0gJ3gnKSA/IHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoIDogdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0OwogICAgICAgIHZhciBpbnRlcnZhbDsKICAgICAgICB2YXIgbWluLCBtYXg7CiAgICAgICAgdmFyIHBvczEsIHBvczI7CiAgICAgICAgdmFyIHR0LCBpOwogICAgICAgIHZhciB0aHJlc2hvbGQgPSAzMDsKICAgICAgICB2YXIgaW5zZXRNdWx0ID0gMTsKICAgICAgICB2YXIgZGFUaWNrSW50ZXJ2YWwgPSBudWxsOwogICAgICAgIAogICAgICAgIC8vIGlmIHVzZXIgc3BlY2lmaWVkIGEgdGljayBpbnRlcnZhbCwgY29udmVydCB0byB1c2FibGUuCiAgICAgICAgaWYgKHRoaXMudGlja0ludGVydmFsICE9IG51bGwpCiAgICAgICAgewogICAgICAgICAgICAvLyBpZiBpbnRlcnZhbCBpcyBhIG51bWJlciBvciBjYW4gYmUgY29udmVydGVkIHRvIG9uZSwgdXNlIGl0LgogICAgICAgICAgICAvLyBBc3N1bWUgaXQgaXMgaW4gU0VDT05EUyEhIQogICAgICAgICAgICBpZiAoTnVtYmVyKHRoaXMudGlja0ludGVydmFsKSkgewogICAgICAgICAgICAgICAgZGFUaWNrSW50ZXJ2YWwgPSBbTnVtYmVyKHRoaXMudGlja0ludGVydmFsKSwgJ3NlY29uZHMnXTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBlbHNlLCBwYXJzZSBvdXQgc29tZXRoaW5nIHdlIGNhbiBidWlsZCBmcm9tLgogICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdGhpcy50aWNrSW50ZXJ2YWwgPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgICAgIHZhciBwYXJ0cyA9IHRoaXMudGlja0ludGVydmFsLnNwbGl0KCcgJyk7CiAgICAgICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID09IDEpIHsKICAgICAgICAgICAgICAgICAgICBkYVRpY2tJbnRlcnZhbCA9IFsxLCBwYXJ0c1swXV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChwYXJ0cy5sZW5ndGggPT0gMikgewogICAgICAgICAgICAgICAgICAgIGRhVGlja0ludGVydmFsID0gW3BhcnRzWzBdLCBwYXJ0c1sxXV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZhciB0aWNrSW50ZXJ2YWwgPSB0aGlzLnRpY2tJbnRlcnZhbDsKICAgICAgICAKICAgICAgICAvLyBpZiB3ZSBhbHJlYWR5IGhhdmUgdGlja3MsIHVzZSB0aGVtLgogICAgICAgIC8vIHRpY2tzIG11c3QgYmUgaW4gb3JkZXIgb2YgaW5jcmVhc2luZyB2YWx1ZS4KICAgICAgICAKICAgICAgICBtaW4gPSBuZXcgJC5qc0RhdGUoKHRoaXMubWluICE9IG51bGwpID8gdGhpcy5taW4gOiBkYi5taW4pLmdldFRpbWUoKTsKICAgICAgICBtYXggPSBuZXcgJC5qc0RhdGUoKHRoaXMubWF4ICE9IG51bGwpID8gdGhpcy5tYXggOiBkYi5tYXgpLmdldFRpbWUoKTsKCiAgICAgICAgLy8gc2VlIGlmIHdlJ3JlIHpvb21pbmcuICBpZiB3ZSBhcmUsIGRvbid0IHVzZSB0aGUgbWluIGFuZCBtYXggd2UncmUgZ2l2ZW4sCiAgICAgICAgLy8gYnV0IGNvbXB1dGUgc29tZSBuaWNlIG9uZXMuICBUaGV5IHdpbGwgYmUgcmVzZXQgbGF0ZXIuCgogICAgICAgIHZhciBjdXJzb3IgPSBwbG90LnBsdWdpbnMuY3Vyc29yOwoKICAgICAgICBpZiAoY3Vyc29yICYmIGN1cnNvci5fem9vbSAmJiBjdXJzb3IuX3pvb20uem9vbWluZykgewogICAgICAgICAgICB0aGlzLm1pbiA9IG51bGw7CiAgICAgICAgICAgIHRoaXMubWF4ID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIHZhciByYW5nZSA9IG1heCAtIG1pbjsKCiAgICAgICAgaWYgKHRoaXMudGlja09wdGlvbnMgPT0gbnVsbCB8fCAhdGhpcy50aWNrT3B0aW9ucy5mb3JtYXRTdHJpbmcpIHsKICAgICAgICAgICAgdGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcgPSB0cnVlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAodXNlclRpY2tzLmxlbmd0aCkgewogICAgICAgICAgICAvLyB0aWNrcyBjb3VsZCBiZSAxRCBvciAyRCBhcnJheSBvZiBbdmFsLCB2YWwsICwsLF0gb3IgW1t2YWwsIGxhYmVsXSwgW3ZhbCwgbGFiZWxdLCAuLi5dIG9yIG1peGVkCiAgICAgICAgICAgIGZvciAoaT0wOyBpPHVzZXJUaWNrcy5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAgICAgICB2YXIgdXQgPSB1c2VyVGlja3NbaV07CiAgICAgICAgICAgICAgICB2YXIgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTsKICAgICAgICAgICAgICAgIGlmICh1dC5jb25zdHJ1Y3RvciA9PSBBcnJheSkgewogICAgICAgICAgICAgICAgICAgIHQudmFsdWUgPSBuZXcgJC5qc0RhdGUodXRbMF0pLmdldFRpbWUoKTsKICAgICAgICAgICAgICAgICAgICB0LmxhYmVsID0gdXRbMV07CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dUaWNrcykgewogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dMYWJlbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLnNob3dUaWNrTWFya3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0LnNldFRpY2sodC52YWx1ZSwgdGhpcy5uYW1lKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90aWNrcy5wdXNoKHQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0LnZhbHVlID0gbmV3ICQuanNEYXRlKHV0KS5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dUaWNrcykgewogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dMYWJlbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLnNob3dUaWNrTWFya3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0LnNldFRpY2sodC52YWx1ZSwgdGhpcy5uYW1lKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90aWNrcy5wdXNoKHQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSB1c2VyVGlja3MubGVuZ3RoOwogICAgICAgICAgICB0aGlzLm1pbiA9IHRoaXMuX3RpY2tzWzBdLnZhbHVlOwogICAgICAgICAgICB0aGlzLm1heCA9IHRoaXMuX3RpY2tzW3RoaXMubnVtYmVyVGlja3MtMV0udmFsdWU7CiAgICAgICAgICAgIHRoaXMuZGFUaWNrSW50ZXJ2YWwgPSBbKHRoaXMubWF4IC0gdGhpcy5taW4pIC8gKHRoaXMubnVtYmVyVGlja3MgLSAxKS8xMDAwLCAnc2Vjb25kcyddOwogICAgICAgIH0KCiAgICAgICAgLy8vLy8vLy8KICAgICAgICAvLyBXZSBkb24ndCBoYXZlIGFueSB0aWNrcyB5ZXQsIGxldCdzIG1ha2Ugc29tZSEKICAgICAgICAvLy8vLy8vLwoKICAgICAgICAvLyBzcGVjaWFsIGNhc2Ugd2hlbiB0aGVyZSBpcyBvbmx5IG9uZSBwb2ludCwgbWFrZSB0aHJlZSB0aWNrIG1hcmtzIHRvIGNlbnRlciB0aGUgcG9pbnQKICAgICAgICBlbHNlIGlmICh0aGlzLm1pbiA9PSBudWxsICYmIHRoaXMubWF4ID09IG51bGwgJiYgZGIubWluID09IGRiLm1heCkKICAgICAgICB7CiAgICAgICAgICAgICB2YXIgb25lUG9pbnRPcHRzID0gJC5leHRlbmQodHJ1ZSwge30sIHRoaXMudGlja09wdGlvbnMsIHtuYW1lOiB0aGlzLm5hbWUsIHZhbHVlOiBudWxsfSk7CiAgICAgICAgICAgICB2YXIgZGVsdGEgPSAzMDAwMDA7CiAgICAgICAgICAgICB0aGlzLm1pbiA9IGRiLm1pbiAtIGRlbHRhOwogICAgICAgICAgICAgdGhpcy5tYXggPSBkYi5tYXggKyBkZWx0YTsKICAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSAzOwoKICAgICAgICAgICAgIGZvcih2YXIgaT10aGlzLm1pbjtpPD10aGlzLm1heDtpKz0gZGVsdGEpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgb25lUG9pbnRPcHRzLnZhbHVlID0gaTsKCiAgICAgICAgICAgICAgICAgdmFyIHQgPSBuZXcgdGhpcy50aWNrUmVuZGVyZXIob25lUG9pbnRPcHRzKTsKCiAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nICYmIHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmcgIT0gJycpIHsKICAgICAgICAgICAgICAgICAgICB0LmZvcm1hdFN0cmluZyA9IHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmc7CiAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICB0LnNob3dMYWJlbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKCiAgICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICBpZih0aGlzLnNob3dUaWNrcykgewogICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzWzFdLnNob3dMYWJlbCA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZih0aGlzLnNob3dUaWNrTWFya3MpIHsKICAgICAgICAgICAgICAgICB0aGlzLl90aWNrc1sxXS5zaG93VGlja01hcmtzID0gdHJ1ZTsKICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIC8vIGlmIHVzZXIgc3BlY2lmaWVkIG1pbiBhbmQgbWF4IGFyZSBudWxsLCB3ZSBzZXQgdGhvc2UgdG8gbWFrZSBiZXN0IHRpY2tzLgogICAgICAgIGVsc2UgaWYgKHRoaXMubWluID09IG51bGwgJiYgdGhpcy5tYXggPT0gbnVsbCkgewoKICAgICAgICAgICAgdmFyIG9wdHMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgdGhpcy50aWNrT3B0aW9ucywge25hbWU6IHRoaXMubmFtZSwgdmFsdWU6IG51bGx9KTsKCiAgICAgICAgICAgIC8vIHdhbnQgdG8gZmluZCBhIG5pY2UgaW50ZXJ2YWwgCiAgICAgICAgICAgIHZhciBudHRhcmdldCwKICAgICAgICAgICAgICAgIHRpdGFyZ2V0OwoKICAgICAgICAgICAgLy8gaWYgbm8gdGlja0ludGVydmFsIG9yIG51bWJlclRpY2tzIG9wdGlvbnMgc3BlY2lmaWVkLCAgbWFrZSBhIGdvb2QgZ3Vlc3MuCiAgICAgICAgICAgIGlmICghdGhpcy50aWNrSW50ZXJ2YWwgJiYgIXRoaXMubnVtYmVyVGlja3MpIHsKICAgICAgICAgICAgICAgIHZhciB0ZGltID0gTWF0aC5tYXgoZGltLCB0aHJlc2hvbGQrMSk7CiAgICAgICAgICAgICAgICAvLyBob3cgbWFueSB0aWNrcyB0byBwdXQgb24gdGhlIGF4aXM/CiAgICAgICAgICAgICAgICAvLyBkYXRlIGxhYmVscyB0ZW5kIHRvIGJlIGxvbmcuICBJZiB0aWNrcyBub3Qgcm90YXRlZCwKICAgICAgICAgICAgICAgIC8vIGRvbid0IHVzZSB0b28gbWFueSBhbmQgaGF2ZSBhIGhpZ2ggc3BhY2luZyBmYWN0b3IuCiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgcm90YXRpbmcgdGlja3MsIHVzZSBhIGxvd2VyIGZhY3Rvci4KICAgICAgICAgICAgICAgIHZhciBzcGFjaW5nRmFjdG9yID0gMTE1OwogICAgICAgICAgICAgICAgaWYgKHRoaXMudGlja1JlbmRlcmVyID09PSAkLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyICYmIHRoaXMudGlja09wdGlvbnMuYW5nbGUpIHsKICAgICAgICAgICAgICAgICAgICBzcGFjaW5nRmFjdG9yID0gMTE1IC0gNDAgKiBNYXRoLmFicyhNYXRoLnNpbih0aGlzLnRpY2tPcHRpb25zLmFuZ2xlLzE4MCpNYXRoLlBJKSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbnR0YXJnZXQgPSAgTWF0aC5jZWlsKCh0ZGltLXRocmVzaG9sZCkvc3BhY2luZ0ZhY3RvciArIDEpOwogICAgICAgICAgICAgICAgdGl0YXJnZXQgPSAobWF4IC0gbWluKSAvIChudHRhcmdldCAtIDEpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJZiB0aWNrSW50ZXJ2YWwgaXMgc3BlY2lmaWVkLCB3ZSdsbCB0cnkgdG8gaG9ub3IgaXQuCiAgICAgICAgICAgIC8vIE5vdCBndWFyYW50ZWVkIHRvIGdldCB0aGlzIGludGVydmFsLCBidXQgd2UnbGwgZ2V0IGFzIGNsb3NlIGFzCiAgICAgICAgICAgIC8vIHdlIGNhbi4KICAgICAgICAgICAgLy8gdGlja0ludGVydmFsIHdpbGwgYmUgdXNlZCBiZWZvcmUgbnVtYmVyVGlja3MsIHRoYXQgaXMgaWYKICAgICAgICAgICAgLy8gYm90aCBhcmUgc3BlY2lmaWVkLCBudW1iZXJUaWNrcyB3aWxsIGJlIGlnbm9yZWQuCiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudGlja0ludGVydmFsKSB7CiAgICAgICAgICAgICAgICB0aXRhcmdldCA9IG5ldyAkLmpzRGF0ZSgwKS5hZGQoZGFUaWNrSW50ZXJ2YWxbMF0sIGRhVGlja0ludGVydmFsWzFdKS5nZXRUaW1lKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGlmIG51bWJlclRpY2tzIHNwZWNpZmllZCwgdHJ5IHRvIGhvbm9yIGl0LgogICAgICAgICAgICAvLyBOb3QgZ3VhcmFudGVlZCwgYnV0IHdpbGwgdHJ5IHRvIGdldCBjbG9zZS4KICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5udW1iZXJUaWNrcykgewogICAgICAgICAgICAgICAgbnR0YXJnZXQgPSB0aGlzLm51bWJlclRpY2tzOwogICAgICAgICAgICAgICAgdGl0YXJnZXQgPSAobWF4IC0gbWluKSAvIChudHRhcmdldCAtIDEpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJZiB3ZSBjYW4gdXNlIGFuIGludGVydmFsIG9mIDIgd2Vla3Mgb3IgbGVzcywgcGljayBiZXN0IG9uZQogICAgICAgICAgICBpZiAodGl0YXJnZXQgPD0gMTkqZGF5KSB7CiAgICAgICAgICAgICAgICB2YXIgcmV0ID0gYmVzdERhdGVJbnRlcnZhbChtaW4sIG1heCwgdGl0YXJnZXQpOwogICAgICAgICAgICAgICAgdmFyIHRlbXB0aSA9IHJldFswXTsKICAgICAgICAgICAgICAgIHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmcgPSByZXRbMV07CgogICAgICAgICAgICAgICAgbWluID0gbmV3ICQuanNEYXRlKG1pbik7CiAgICAgICAgICAgICAgICBtaW4gPSBNYXRoLmZsb29yKChtaW4uZ2V0VGltZSgpIC0gbWluLmdldFV0Y09mZnNldCgpKS90ZW1wdGkpICogdGVtcHRpICsgbWluLmdldFV0Y09mZnNldCgpOwoKICAgICAgICAgICAgICAgIG50dGFyZ2V0ID0gTWF0aC5jZWlsKChtYXggLSBtaW4pIC8gdGVtcHRpKSArIDE7CiAgICAgICAgICAgICAgICB0aGlzLm1pbiA9IG1pbjsKICAgICAgICAgICAgICAgIHRoaXMubWF4ID0gbWluICsgKG50dGFyZ2V0IC0gMSkgKiB0ZW1wdGk7CgogICAgICAgICAgICAgICAgLy8gaWYgbWF4IGlzIGxlc3MgdGhhbiBtYXgsIGFkZCBhbiBpbnRlcnZhbAogICAgICAgICAgICAgICAgaWYgKHRoaXMubWF4IDwgbWF4KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXggKz0gdGVtcHRpOwogICAgICAgICAgICAgICAgICAgIG50dGFyZ2V0ICs9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9IHRlbXB0aTsKICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSBudHRhcmdldDsKCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8bnR0YXJnZXQ7IGkrKykgewogICAgICAgICAgICAgICAgICAgIG9wdHMudmFsdWUgPSB0aGlzLm1pbiArIGkgKiB0ZW1wdGk7CiAgICAgICAgICAgICAgICAgICAgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcihvcHRzKTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcgJiYgdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyAhPSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICB0LmZvcm1hdFN0cmluZyA9IHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaG93VGlja3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghdGhpcy5zaG93VGlja01hcmtzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpbnNldE11bHQgPSB0aGlzLnRpY2tJbnRlcnZhbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gc2hvdWxkIHdlIHVzZSBhIG1vbnRobHkgaW50ZXJ2YWw/CiAgICAgICAgICAgIGVsc2UgaWYgKHRpdGFyZ2V0IDw9IDkgKiBtb250aCkgewoKICAgICAgICAgICAgICAgIHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmcgPSAnJXYnOwoKICAgICAgICAgICAgICAgIC8vIGhvdyBtYW55IG1vbnRocyBpbiBhbiBpbnRlcnZhbD8KICAgICAgICAgICAgICAgIHZhciBpbnR2ID0gTWF0aC5yb3VuZCh0aXRhcmdldC9tb250aCk7CiAgICAgICAgICAgICAgICBpZiAoaW50diA8IDEpIHsKICAgICAgICAgICAgICAgICAgICBpbnR2ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKGludHYgPiA2KSB7CiAgICAgICAgICAgICAgICAgICAgaW50diA9IDY7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gZmlndXJlIG91dCB0aGUgc3RhcnRpbmcgbW9udGggYW5kIGVuZGluZyBtb250aC4KICAgICAgICAgICAgICAgIHZhciBtc3RhcnQgPSBuZXcgJC5qc0RhdGUobWluKS5zZXREYXRlKDEpLnNldEhvdXJzKDAsMCwwLDApOwoKICAgICAgICAgICAgICAgIC8vIFNlZSBpZiBtYXggZW5kcyBleGFjdGx5IG9uIGEgbW9udGgKICAgICAgICAgICAgICAgIHZhciB0ZW1wbWVuZCA9IG5ldyAkLmpzRGF0ZShtYXgpOwogICAgICAgICAgICAgICAgdmFyIG1lbmQgPSBuZXcgJC5qc0RhdGUobWF4KS5zZXREYXRlKDEpLnNldEhvdXJzKDAsMCwwLDApOwoKICAgICAgICAgICAgICAgIGlmICh0ZW1wbWVuZC5nZXRUaW1lKCkgIT09IG1lbmQuZ2V0VGltZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgbWVuZCA9IG1lbmQuYWRkKDEsICdtb250aCcpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciBubW9udGhzID0gbWVuZC5kaWZmKG1zdGFydCwgJ21vbnRoJyk7CgogICAgICAgICAgICAgICAgbnR0YXJnZXQgPSBNYXRoLmNlaWwobm1vbnRocy9pbnR2KSArIDE7CgogICAgICAgICAgICAgICAgdGhpcy5taW4gPSBtc3RhcnQuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgdGhpcy5tYXggPSBtc3RhcnQuY2xvbmUoKS5hZGQoKG50dGFyZ2V0IC0gMSkgKiBpbnR2LCAnbW9udGgnKS5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gbnR0YXJnZXQ7CgogICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPG50dGFyZ2V0OyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBvcHRzLnZhbHVlID0gbXN0YXJ0LmdldFRpbWUoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMudmFsdWUgPSBtc3RhcnQuYWRkKGludHYsICdtb250aCcpLmdldFRpbWUoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcihvcHRzKTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcgJiYgdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyAhPSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICB0LmZvcm1hdFN0cmluZyA9IHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaG93VGlja3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghdGhpcy5zaG93VGlja01hcmtzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpbnNldE11bHQgPSBpbnR2ICogbW9udGg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHVzZSB5ZWFybHkgaW50ZXJ2YWxzCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgIHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmcgPSAnJXYnOwoKICAgICAgICAgICAgICAgIC8vIGhvdyBtYW55IHllYXJzIGluIGFuIGludGVydmFsPwogICAgICAgICAgICAgICAgdmFyIGludHYgPSBNYXRoLnJvdW5kKHRpdGFyZ2V0L3llYXIpOwogICAgICAgICAgICAgICAgaWYgKGludHYgPCAxKSB7CiAgICAgICAgICAgICAgICAgICAgaW50diA9IDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gZmlndXJlIG91dCB0aGUgc3RhcnRpbmcgYW5kIGVuZGluZyB5ZWFycy4KICAgICAgICAgICAgICAgIHZhciBtc3RhcnQgPSBuZXcgJC5qc0RhdGUobWluKS5zZXRNb250aCgwLCAxKS5zZXRIb3VycygwLDAsMCwwKTsKICAgICAgICAgICAgICAgIHZhciBtZW5kID0gbmV3ICQuanNEYXRlKG1heCkuYWRkKDEsICd5ZWFyJykuc2V0TW9udGgoMCwgMSkuc2V0SG91cnMoMCwwLDAsMCk7CgogICAgICAgICAgICAgICAgdmFyIG55ZWFycyA9IG1lbmQuZGlmZihtc3RhcnQsICd5ZWFyJyk7CgogICAgICAgICAgICAgICAgbnR0YXJnZXQgPSBNYXRoLmNlaWwobnllYXJzL2ludHYpICsgMTsKCiAgICAgICAgICAgICAgICB0aGlzLm1pbiA9IG1zdGFydC5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICB0aGlzLm1heCA9IG1zdGFydC5jbG9uZSgpLmFkZCgobnR0YXJnZXQgLSAxKSAqIGludHYsICd5ZWFyJykuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IG50dGFyZ2V0OwoKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxudHRhcmdldDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgb3B0cy52YWx1ZSA9IG1zdGFydC5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBvcHRzLnZhbHVlID0gbXN0YXJ0LmFkZChpbnR2LCAneWVhcicpLmdldFRpbWUoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcihvcHRzKTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcgJiYgdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyAhPSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICB0LmZvcm1hdFN0cmluZyA9IHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaG93VGlja3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghdGhpcy5zaG93VGlja01hcmtzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpbnNldE11bHQgPSBpbnR2ICogeWVhcjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8vLy8vLy8KICAgICAgICAvLyBTb21lIG9wdGlvbihzKSBzcGVjaWZpZWQsIHdvcmsgYXJvdW5kIHRoYXQuCiAgICAgICAgLy8vLy8vLy8KICAgICAgICAKICAgICAgICBlbHNlIHsgICAgICAKICAgICAgICAgICAgaWYgKG5hbWUgPT0gJ3hheGlzJyB8fCBuYW1lID09ICd4MmF4aXMnKSB7CiAgICAgICAgICAgICAgICBkaW0gPSB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGRpbSA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gaWYgbWluLCBtYXggYW5kIG51bWJlciBvZiB0aWNrcyBzcGVjaWZpZWQsIHVzZXIgY2FuJ3Qgc3BlY2lmeSBpbnRlcnZhbC4KICAgICAgICAgICAgaWYgKHRoaXMubWluICE9IG51bGwgJiYgdGhpcy5tYXggIT0gbnVsbCAmJiB0aGlzLm51bWJlclRpY2tzICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHRoaXMudGlja0ludGVydmFsID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHRoaXMudGlja0ludGVydmFsICE9IG51bGwgJiYgZGFUaWNrSW50ZXJ2YWwgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgdGhpcy5kYVRpY2tJbnRlcnZhbCA9IGRhVGlja0ludGVydmFsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBpZiBtaW4gYW5kIG1heCBhcmUgc2FtZSwgc3BhY2UgdGhlbSBvdXQgYSBiaXQKICAgICAgICAgICAgaWYgKG1pbiA9PSBtYXgpIHsKICAgICAgICAgICAgICAgIHZhciBhZGogPSAyNCo2MCo2MCo1MDA7ICAvLyAxLzIgZGF5CiAgICAgICAgICAgICAgICBtaW4gLT0gYWRqOwogICAgICAgICAgICAgICAgbWF4ICs9IGFkajsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmFuZ2UgPSBtYXggLSBtaW47CiAgICAgICAgICAgIAogICAgICAgICAgICB2YXIgb3B0TnVtVGlja3MgPSAyICsgcGFyc2VJbnQoTWF0aC5tYXgoMCwgZGltLTEwMCkvMTAwLCAxMCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIHJtaW4sIHJtYXg7CiAgICAgICAgICAgIAogICAgICAgICAgICBybWluID0gKHRoaXMubWluICE9IG51bGwpID8gbmV3ICQuanNEYXRlKHRoaXMubWluKS5nZXRUaW1lKCkgOiBtaW4gLSByYW5nZS8yKih0aGlzLnBhZE1pbiAtIDEpOwogICAgICAgICAgICBybWF4ID0gKHRoaXMubWF4ICE9IG51bGwpID8gbmV3ICQuanNEYXRlKHRoaXMubWF4KS5nZXRUaW1lKCkgOiBtYXggKyByYW5nZS8yKih0aGlzLnBhZE1heCAtIDEpOwogICAgICAgICAgICB0aGlzLm1pbiA9IHJtaW47CiAgICAgICAgICAgIHRoaXMubWF4ID0gcm1heDsKICAgICAgICAgICAgcmFuZ2UgPSB0aGlzLm1heCAtIHRoaXMubWluOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHRoaXMubnVtYmVyVGlja3MgPT0gbnVsbCl7CiAgICAgICAgICAgICAgICAvLyBpZiB0aWNrSW50ZXJ2YWwgaXMgc3BlY2lmaWVkIGJ5IHVzZXIsIHdlIHdpbGwgaWdub3JlIGNvbXB1dGVkIG1heGltdW0uCiAgICAgICAgICAgICAgICAvLyBtYXggd2lsbCBiZSBlcXVhbCBvciBncmVhdGVyIHRvIGZpdCBldmVuICMgb2YgdGlja3MuCiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYVRpY2tJbnRlcnZhbCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG5jID0gbmV3ICQuanNEYXRlKHRoaXMubWF4KS5kaWZmKHRoaXMubWluLCB0aGlzLmRhVGlja0ludGVydmFsWzFdLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gTWF0aC5jZWlsKG5jL3RoaXMuZGFUaWNrSW50ZXJ2YWxbMF0pICsxOwogICAgICAgICAgICAgICAgICAgIC8vIHRoaXMubWF4ID0gbmV3ICQuanNEYXRlKHRoaXMubWluKS5hZGQodGhpcy5udW1iZXJUaWNrcy0xLCB0aGlzLmRhVGlja0ludGVydmFsWzFdKS5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXggPSBuZXcgJC5qc0RhdGUodGhpcy5taW4pLmFkZCgodGhpcy5udW1iZXJUaWNrcy0xKSAqIHRoaXMuZGFUaWNrSW50ZXJ2YWxbMF0sIHRoaXMuZGFUaWNrSW50ZXJ2YWxbMV0pLmdldFRpbWUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRpbSA+IDIwMCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSBwYXJzZUludCgzKyhkaW0tMjAwKS8xMDAsIDEwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSAyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBpbnNldE11bHQgPSByYW5nZSAvICh0aGlzLm51bWJlclRpY2tzLTEpLzEwMDA7CgogICAgICAgICAgICBpZiAodGhpcy5kYVRpY2tJbnRlcnZhbCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICB0aGlzLmRhVGlja0ludGVydmFsID0gW2luc2V0TXVsdCwgJ3NlY29uZHMnXTsKICAgICAgICAgICAgfQoKCiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLm51bWJlclRpY2tzOyBpKyspewogICAgICAgICAgICAgICAgdmFyIG1pbiA9IG5ldyAkLmpzRGF0ZSh0aGlzLm1pbik7CiAgICAgICAgICAgICAgICB0dCA9IG1pbi5hZGQoaSp0aGlzLmRhVGlja0ludGVydmFsWzBdLCB0aGlzLmRhVGlja0ludGVydmFsWzFdKS5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICB2YXIgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTsKICAgICAgICAgICAgICAgIC8vIHZhciB0ID0gbmV3ICQuanFwbG90LkF4aXNUaWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2hvd1RpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICghdGhpcy5zaG93VGlja01hcmtzKSB7CiAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdC5zZXRUaWNrKHR0LCB0aGlzLm5hbWUpOwogICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMudGlja0luc2V0KSB7CiAgICAgICAgICAgIHRoaXMubWluID0gdGhpcy5taW4gLSB0aGlzLnRpY2tJbnNldCAqIGluc2V0TXVsdDsKICAgICAgICAgICAgdGhpcy5tYXggPSB0aGlzLm1heCArIHRoaXMudGlja0luc2V0ICogaW5zZXRNdWx0OwogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMuX2RhVGlja0ludGVydmFsID09IG51bGwpIHsKICAgICAgICAgICAgdGhpcy5fZGFUaWNrSW50ZXJ2YWwgPSB0aGlzLmRhVGlja0ludGVydmFsOyAgICAKICAgICAgICB9CgogICAgICAgIHRpY2tzID0gbnVsbDsKICAgIH07CiAgIAp9KShqUXVlcnkpOwoK]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.dateAxisRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGgpe2guanFwbG90LkRhdGVBeGlzUmVuZGVyZXI9ZnVuY3Rpb24oKXtoLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIuY2FsbCh0aGlzKTt0aGlzLmRhdGU9bmV3IGguanNEYXRlKCl9O3ZhciBjPTEwMDA7dmFyIGU9NjAqYzt2YXIgZj02MCplO3ZhciBsPTI0KmY7dmFyIGI9NypsO3ZhciBqPTMwLjQzNjg0OTkqbDt2YXIgaz0zNjUuMjQyMTk5Kmw7dmFyIGc9WzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMwLDMxLDMwLDMxLDMwXTt2YXIgaT1bIiVNOiVTLiUjTiIsIiVNOiVTLiUjTiIsIiVNOiVTLiUjTiIsIiVNOiVTIiwiJU06JVMiLCIlTTolUyIsIiVNOiVTIiwiJUg6JU06JVMiLCIlSDolTTolUyIsIiVIOiVNIiwiJUg6JU0iLCIlSDolTSIsIiVIOiVNIiwiJUg6JU0iLCIlSDolTSIsIiVhICVIOiVNIiwiJWEgJUg6JU0iLCIlYiAlZSAlSDolTSIsIiViICVlICVIOiVNIiwiJWIgJWUgJUg6JU0iLCIlYiAlZSAlSDolTSIsIiV2IiwiJXYiLCIldiIsIiV2IiwiJXYiLCIldiIsIiV2Il07dmFyIG09WzAuMSpjLDAuMipjLDAuNSpjLGMsMipjLDUqYywxMCpjLDE1KmMsMzAqYyxlLDIqZSw1KmUsMTAqZSwxNSplLDMwKmUsZiwyKmYsNCpmLDYqZiw4KmYsMTIqZixsLDIqbCwzKmwsNCpsLDUqbCxiLDIqYl07dmFyIGQ9W107ZnVuY3Rpb24gYShwLHMsdCl7dmFyIG89TnVtYmVyLk1BWF9WQUxVRTt2YXIgdSxyLHY7Zm9yKHZhciBxPTAsbj1tLmxlbmd0aDtxPG47cSsrKXt1PU1hdGguYWJzKHQtbVtxXSk7aWYodTxvKXtvPXU7cj1tW3FdO3Y9aVtxXX19cmV0dXJuW3Isdl19aC5qcXBsb3QuRGF0ZUF4aXNSZW5kZXJlci5wcm90b3R5cGU9bmV3IGguanFwbG90LkxpbmVhckF4aXNSZW5kZXJlcigpO2guanFwbG90LkRhdGVBeGlzUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWguanFwbG90LkRhdGVBeGlzUmVuZGVyZXI7aC5qcXBsb3QuRGF0ZVRpY2tGb3JtYXR0ZXI9ZnVuY3Rpb24obixvKXtpZighbil7bj0iJVkvJW0vJWQifXJldHVybiBoLmpzRGF0ZS5zdHJmdGltZShvLG4pfTtoLmpxcGxvdC5EYXRlQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKEUpe3RoaXMudGlja09wdGlvbnMuZm9ybWF0dGVyPWguanFwbG90LkRhdGVUaWNrRm9ybWF0dGVyO3RoaXMudGlja0luc2V0PTA7dGhpcy5kcmF3QmFzZWxpbmU9dHJ1ZTt0aGlzLmJhc2VsaW5lV2lkdGg9bnVsbDt0aGlzLmJhc2VsaW5lQ29sb3I9bnVsbDt0aGlzLmRhVGlja0ludGVydmFsPW51bGw7dGhpcy5fZGFUaWNrSW50ZXJ2YWw9bnVsbDtoLmV4dGVuZCh0cnVlLHRoaXMsRSk7dmFyIEM9dGhpcy5fZGF0YUJvdW5kcyx1LHgsRCx5LEEseixvO2Zvcih2YXIgdD0wO3Q8dGhpcy5fc2VyaWVzLmxlbmd0aDt0Kyspe3U9e2ludGVydmFsczpbXSxmcmVxdWVuY2llczp7fSxzb3J0ZWRJbnRlcnZhbHM6W10sbWluOm51bGwsbWF4Om51bGwsbWVhbjpudWxsfTt4PTA7RD10aGlzLl9zZXJpZXNbdF07eT1ELmRhdGE7QT1ELl9wbG90RGF0YTt6PUQuX3N0YWNrRGF0YTtvPTA7Zm9yKHZhciByPTA7cjx5Lmxlbmd0aDtyKyspe2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7eVtyXVswXT1uZXcgaC5qc0RhdGUoeVtyXVswXSkuZ2V0VGltZSgpO0Fbcl1bMF09bmV3IGguanNEYXRlKHlbcl1bMF0pLmdldFRpbWUoKTt6W3JdWzBdPW5ldyBoLmpzRGF0ZSh5W3JdWzBdKS5nZXRUaW1lKCk7aWYoKHlbcl1bMF0hPW51bGwmJnlbcl1bMF08Qy5taW4pfHxDLm1pbj09bnVsbCl7Qy5taW49eVtyXVswXX1pZigoeVtyXVswXSE9bnVsbCYmeVtyXVswXT5DLm1heCl8fEMubWF4PT1udWxsKXtDLm1heD15W3JdWzBdfWlmKHI+MCl7bz1NYXRoLmFicyh5W3JdWzBdLXlbci0xXVswXSk7dS5pbnRlcnZhbHMucHVzaChvKTtpZih1LmZyZXF1ZW5jaWVzLmhhc093blByb3BlcnR5KG8pKXt1LmZyZXF1ZW5jaWVzW29dKz0xfWVsc2V7dS5mcmVxdWVuY2llc1tvXT0xfX14Kz1vfWVsc2V7eVtyXVsxXT1uZXcgaC5qc0RhdGUoeVtyXVsxXSkuZ2V0VGltZSgpO0Fbcl1bMV09bmV3IGguanNEYXRlKHlbcl1bMV0pLmdldFRpbWUoKTt6W3JdWzFdPW5ldyBoLmpzRGF0ZSh5W3JdWzFdKS5nZXRUaW1lKCk7aWYoKHlbcl1bMV0hPW51bGwmJnlbcl1bMV08Qy5taW4pfHxDLm1pbj09bnVsbCl7Qy5taW49eVtyXVsxXX1pZigoeVtyXVsxXSE9bnVsbCYmeVtyXVsxXT5DLm1heCl8fEMubWF4PT1udWxsKXtDLm1heD15W3JdWzFdfWlmKHI+MCl7bz1NYXRoLmFicyh5W3JdWzFdLXlbci0xXVsxXSk7dS5pbnRlcnZhbHMucHVzaChvKTtpZih1LmZyZXF1ZW5jaWVzLmhhc093blByb3BlcnR5KG8pKXt1LmZyZXF1ZW5jaWVzW29dKz0xfWVsc2V7dS5mcmVxdWVuY2llc1tvXT0xfX19eCs9b31pZihELnJlbmRlcmVyLmJhbmRzKXtpZihELnJlbmRlcmVyLmJhbmRzLmhpRGF0YS5sZW5ndGgpe3ZhciB3PUQucmVuZGVyZXIuYmFuZHMuaGlEYXRhO2Zvcih2YXIgcj0wLHE9dy5sZW5ndGg7cjxxO3IrKyl7aWYodGhpcy5uYW1lPT09InhheGlzInx8dGhpcy5uYW1lPT09IngyYXhpcyIpe3dbcl1bMF09bmV3IGguanNEYXRlKHdbcl1bMF0pLmdldFRpbWUoKTtpZigod1tyXVswXSE9bnVsbCYmd1tyXVswXT5DLm1heCl8fEMubWF4PT1udWxsKXtDLm1heD13W3JdWzBdfX1lbHNle3dbcl1bMV09bmV3IGguanNEYXRlKHdbcl1bMV0pLmdldFRpbWUoKTtpZigod1tyXVsxXSE9bnVsbCYmd1tyXVsxXT5DLm1heCl8fEMubWF4PT1udWxsKXtDLm1heD13W3JdWzFdfX19fWlmKEQucmVuZGVyZXIuYmFuZHMubG93RGF0YS5sZW5ndGgpe3ZhciB3PUQucmVuZGVyZXIuYmFuZHMubG93RGF0YTtmb3IodmFyIHI9MCxxPXcubGVuZ3RoO3I8cTtyKyspe2lmKHRoaXMubmFtZT09PSJ4YXhpcyJ8fHRoaXMubmFtZT09PSJ4MmF4aXMiKXt3W3JdWzBdPW5ldyBoLmpzRGF0ZSh3W3JdWzBdKS5nZXRUaW1lKCk7aWYoKHdbcl1bMF0hPW51bGwmJndbcl1bMF08Qy5taW4pfHxDLm1pbj09bnVsbCl7Qy5taW49d1tyXVswXX19ZWxzZXt3W3JdWzFdPW5ldyBoLmpzRGF0ZSh3W3JdWzFdKS5nZXRUaW1lKCk7aWYoKHdbcl1bMV0hPW51bGwmJndbcl1bMV08Qy5taW4pfHxDLm1pbj09bnVsbCl7Qy5taW49d1tyXVsxXX19fX19dmFyIEI9MCx2PTA7Zm9yKHZhciBwIGluIHUuZnJlcXVlbmNpZXMpe3Uuc29ydGVkSW50ZXJ2YWxzLnB1c2goe2ludGVydmFsOnAsZnJlcXVlbmN5OnUuZnJlcXVlbmNpZXNbcF19KX11LnNvcnRlZEludGVydmFscy5zb3J0KGZ1bmN0aW9uKHMsbil7cmV0dXJuIG4uZnJlcXVlbmN5LXMuZnJlcXVlbmN5fSk7dS5taW49aC5qcXBsb3QuYXJyYXlNaW4odS5pbnRlcnZhbHMpO3UubWF4PWguanFwbG90LmFycmF5TWF4KHUuaW50ZXJ2YWxzKTt1Lm1lYW49eC95Lmxlbmd0aDt0aGlzLl9pbnRlcnZhbFN0YXRzLnB1c2godSk7dT14PUQ9eT1BPXo9bnVsbH1DPW51bGx9O2guanFwbG90LkRhdGVBeGlzUmVuZGVyZXIucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5taW49dGhpcy5fb3B0aW9ucy5taW47dGhpcy5tYXg9dGhpcy5fb3B0aW9ucy5tYXg7dGhpcy50aWNrSW50ZXJ2YWw9dGhpcy5fb3B0aW9ucy50aWNrSW50ZXJ2YWw7dGhpcy5udW1iZXJUaWNrcz10aGlzLl9vcHRpb25zLm51bWJlclRpY2tzO3RoaXMuX2F1dG9Gb3JtYXRTdHJpbmc9IiI7aWYodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcmJnRoaXMudGlja09wdGlvbnMmJnRoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nKXt0aGlzLnRpY2tPcHRpb25zLmZvcm1hdFN0cmluZz0iIn10aGlzLmRhVGlja0ludGVydmFsPXRoaXMuX2RhVGlja0ludGVydmFsfTtoLmpxcGxvdC5EYXRlQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jcmVhdGVUaWNrcz1mdW5jdGlvbihwKXt2YXIgWD10aGlzLl90aWNrczt2YXIgTD10aGlzLnRpY2tzO3ZhciBGPXRoaXMubmFtZTt2YXIgSD10aGlzLl9kYXRhQm91bmRzO3ZhciBNPXRoaXMuX2ludGVydmFsU3RhdHM7dmFyIG49KHRoaXMubmFtZS5jaGFyQXQoMCk9PT0ieCIpP3RoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoOnRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodDt2YXIgdzt2YXIgYWUsSjt2YXIgeSx4O3ZhciBhZCxhYTt2YXIgcz0zMDt2YXIgTz0xO3ZhciBVPW51bGw7aWYodGhpcy50aWNrSW50ZXJ2YWwhPW51bGwpe2lmKE51bWJlcih0aGlzLnRpY2tJbnRlcnZhbCkpe1U9W051bWJlcih0aGlzLnRpY2tJbnRlcnZhbCksInNlY29uZHMiXX1lbHNle2lmKHR5cGVvZiB0aGlzLnRpY2tJbnRlcnZhbD09InN0cmluZyIpe3ZhciBhYz10aGlzLnRpY2tJbnRlcnZhbC5zcGxpdCgiICIpO2lmKGFjLmxlbmd0aD09MSl7VT1bMSxhY1swXV19ZWxzZXtpZihhYy5sZW5ndGg9PTIpe1U9W2FjWzBdLGFjWzFdXX19fX19dmFyIHY9dGhpcy50aWNrSW50ZXJ2YWw7YWU9bmV3IGguanNEYXRlKCh0aGlzLm1pbiE9bnVsbCk/dGhpcy5taW46SC5taW4pLmdldFRpbWUoKTtKPW5ldyBoLmpzRGF0ZSgodGhpcy5tYXghPW51bGwpP3RoaXMubWF4OkgubWF4KS5nZXRUaW1lKCk7dmFyIEE9cC5wbHVnaW5zLmN1cnNvcjtpZihBJiZBLl96b29tJiZBLl96b29tLnpvb21pbmcpe3RoaXMubWluPW51bGw7dGhpcy5tYXg9bnVsbH12YXIgQj1KLWFlO2lmKHRoaXMudGlja09wdGlvbnM9PW51bGx8fCF0aGlzLnRpY2tPcHRpb25zLmZvcm1hdFN0cmluZyl7dGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmc9dHJ1ZX1pZihMLmxlbmd0aCl7Zm9yKGFhPTA7YWE8TC5sZW5ndGg7YWErKyl7dmFyIFA9TFthYV07dmFyIFk9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2lmKFAuY29uc3RydWN0b3I9PUFycmF5KXtZLnZhbHVlPW5ldyBoLmpzRGF0ZShQWzBdKS5nZXRUaW1lKCk7WS5sYWJlbD1QWzFdO2lmKCF0aGlzLnNob3dUaWNrcyl7WS5zaG93TGFiZWw9ZmFsc2U7WS5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe1kuc2hvd01hcms9ZmFsc2V9fVkuc2V0VGljayhZLnZhbHVlLHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChZKX1lbHNle1kudmFsdWU9bmV3IGguanNEYXRlKFApLmdldFRpbWUoKTtpZighdGhpcy5zaG93VGlja3Mpe1kuc2hvd0xhYmVsPWZhbHNlO1kuc2hvd01hcms9ZmFsc2V9ZWxzZXtpZighdGhpcy5zaG93VGlja01hcmtzKXtZLnNob3dNYXJrPWZhbHNlfX1ZLnNldFRpY2soWS52YWx1ZSx0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goWSl9fXRoaXMubnVtYmVyVGlja3M9TC5sZW5ndGg7dGhpcy5taW49dGhpcy5fdGlja3NbMF0udmFsdWU7dGhpcy5tYXg9dGhpcy5fdGlja3NbdGhpcy5udW1iZXJUaWNrcy0xXS52YWx1ZTt0aGlzLmRhVGlja0ludGVydmFsPVsodGhpcy5tYXgtdGhpcy5taW4pLyh0aGlzLm51bWJlclRpY2tzLTEpLzEwMDAsInNlY29uZHMiXX1lbHNle2lmKHRoaXMubWluPT1udWxsJiZ0aGlzLm1heD09bnVsbCYmSC5taW49PUgubWF4KXt2YXIgRT1oLmV4dGVuZCh0cnVlLHt9LHRoaXMudGlja09wdGlvbnMse25hbWU6dGhpcy5uYW1lLHZhbHVlOm51bGx9KTt2YXIgVD0zMDAwMDA7dGhpcy5taW49SC5taW4tVDt0aGlzLm1heD1ILm1heCtUO3RoaXMubnVtYmVyVGlja3M9Mztmb3IodmFyIGFhPXRoaXMubWluO2FhPD10aGlzLm1heDthYSs9VCl7RS52YWx1ZT1hYTt2YXIgWT1uZXcgdGhpcy50aWNrUmVuZGVyZXIoRSk7aWYodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcmJnRoaXMuX2F1dG9Gb3JtYXRTdHJpbmchPSIiKXtZLmZvcm1hdFN0cmluZz10aGlzLl9hdXRvRm9ybWF0U3RyaW5nfVkuc2hvd0xhYmVsPWZhbHNlO1kuc2hvd01hcms9ZmFsc2U7dGhpcy5fdGlja3MucHVzaChZKX1pZih0aGlzLnNob3dUaWNrcyl7dGhpcy5fdGlja3NbMV0uc2hvd0xhYmVsPXRydWV9aWYodGhpcy5zaG93VGlja01hcmtzKXt0aGlzLl90aWNrc1sxXS5zaG93VGlja01hcmtzPXRydWV9fWVsc2V7aWYodGhpcy5taW49PW51bGwmJnRoaXMubWF4PT1udWxsKXt2YXIgTj1oLmV4dGVuZCh0cnVlLHt9LHRoaXMudGlja09wdGlvbnMse25hbWU6dGhpcy5uYW1lLHZhbHVlOm51bGx9KTt2YXIgYWIsSTtpZighdGhpcy50aWNrSW50ZXJ2YWwmJiF0aGlzLm51bWJlclRpY2tzKXt2YXIgUj1NYXRoLm1heChuLHMrMSk7dmFyIFo9MTE1O2lmKHRoaXMudGlja1JlbmRlcmVyPT09aC5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciYmdGhpcy50aWNrT3B0aW9ucy5hbmdsZSl7Wj0xMTUtNDAqTWF0aC5hYnMoTWF0aC5zaW4odGhpcy50aWNrT3B0aW9ucy5hbmdsZS8xODAqTWF0aC5QSSkpfWFiPU1hdGguY2VpbCgoUi1zKS9aKzEpO0k9KEotYWUpLyhhYi0xKX1lbHNle2lmKHRoaXMudGlja0ludGVydmFsKXtJPW5ldyBoLmpzRGF0ZSgwKS5hZGQoVVswXSxVWzFdKS5nZXRUaW1lKCl9ZWxzZXtpZih0aGlzLm51bWJlclRpY2tzKXthYj10aGlzLm51bWJlclRpY2tzO0k9KEotYWUpLyhhYi0xKX19fWlmKEk8PTE5Kmwpe3ZhciBRPWEoYWUsSixJKTt2YXIgcj1RWzBdO3RoaXMuX2F1dG9Gb3JtYXRTdHJpbmc9UVsxXTthZT1uZXcgaC5qc0RhdGUoYWUpO2FlPU1hdGguZmxvb3IoKGFlLmdldFRpbWUoKS1hZS5nZXRVdGNPZmZzZXQoKSkvcikqcithZS5nZXRVdGNPZmZzZXQoKTthYj1NYXRoLmNlaWwoKEotYWUpL3IpKzE7dGhpcy5taW49YWU7dGhpcy5tYXg9YWUrKGFiLTEpKnI7aWYodGhpcy5tYXg8Sil7dGhpcy5tYXgrPXI7YWIrPTF9dGhpcy50aWNrSW50ZXJ2YWw9cjt0aGlzLm51bWJlclRpY2tzPWFiO2Zvcih2YXIgYWE9MDthYTxhYjthYSsrKXtOLnZhbHVlPXRoaXMubWluK2FhKnI7WT1uZXcgdGhpcy50aWNrUmVuZGVyZXIoTik7aWYodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcmJnRoaXMuX2F1dG9Gb3JtYXRTdHJpbmchPSIiKXtZLmZvcm1hdFN0cmluZz10aGlzLl9hdXRvRm9ybWF0U3RyaW5nfWlmKCF0aGlzLnNob3dUaWNrcyl7WS5zaG93TGFiZWw9ZmFsc2U7WS5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe1kuc2hvd01hcms9ZmFsc2V9fXRoaXMuX3RpY2tzLnB1c2goWSl9Tz10aGlzLnRpY2tJbnRlcnZhbH1lbHNle2lmKEk8PTkqail7dGhpcy5fYXV0b0Zvcm1hdFN0cmluZz0iJXYiO3ZhciBEPU1hdGgucm91bmQoSS9qKTtpZihEPDEpe0Q9MX1lbHNle2lmKEQ+Nil7RD02fX12YXIgVj1uZXcgaC5qc0RhdGUoYWUpLnNldERhdGUoMSkuc2V0SG91cnMoMCwwLDAsMCk7dmFyIHE9bmV3IGguanNEYXRlKEopO3ZhciB6PW5ldyBoLmpzRGF0ZShKKS5zZXREYXRlKDEpLnNldEhvdXJzKDAsMCwwLDApO2lmKHEuZ2V0VGltZSgpIT09ei5nZXRUaW1lKCkpe3o9ei5hZGQoMSwibW9udGgiKX12YXIgUz16LmRpZmYoViwibW9udGgiKTthYj1NYXRoLmNlaWwoUy9EKSsxO3RoaXMubWluPVYuZ2V0VGltZSgpO3RoaXMubWF4PVYuY2xvbmUoKS5hZGQoKGFiLTEpKkQsIm1vbnRoIikuZ2V0VGltZSgpO3RoaXMubnVtYmVyVGlja3M9YWI7Zm9yKHZhciBhYT0wO2FhPGFiO2FhKyspe2lmKGFhPT09MCl7Ti52YWx1ZT1WLmdldFRpbWUoKX1lbHNle04udmFsdWU9Vi5hZGQoRCwibW9udGgiKS5nZXRUaW1lKCl9WT1uZXcgdGhpcy50aWNrUmVuZGVyZXIoTik7aWYodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcmJnRoaXMuX2F1dG9Gb3JtYXRTdHJpbmchPSIiKXtZLmZvcm1hdFN0cmluZz10aGlzLl9hdXRvRm9ybWF0U3RyaW5nfWlmKCF0aGlzLnNob3dUaWNrcyl7WS5zaG93TGFiZWw9ZmFsc2U7WS5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe1kuc2hvd01hcms9ZmFsc2V9fXRoaXMuX3RpY2tzLnB1c2goWSl9Tz1EKmp9ZWxzZXt0aGlzLl9hdXRvRm9ybWF0U3RyaW5nPSIldiI7dmFyIEQ9TWF0aC5yb3VuZChJL2spO2lmKEQ8MSl7RD0xfXZhciBWPW5ldyBoLmpzRGF0ZShhZSkuc2V0TW9udGgoMCwxKS5zZXRIb3VycygwLDAsMCwwKTt2YXIgej1uZXcgaC5qc0RhdGUoSikuYWRkKDEsInllYXIiKS5zZXRNb250aCgwLDEpLnNldEhvdXJzKDAsMCwwLDApO3ZhciBLPXouZGlmZihWLCJ5ZWFyIik7YWI9TWF0aC5jZWlsKEsvRCkrMTt0aGlzLm1pbj1WLmdldFRpbWUoKTt0aGlzLm1heD1WLmNsb25lKCkuYWRkKChhYi0xKSpELCJ5ZWFyIikuZ2V0VGltZSgpO3RoaXMubnVtYmVyVGlja3M9YWI7Zm9yKHZhciBhYT0wO2FhPGFiO2FhKyspe2lmKGFhPT09MCl7Ti52YWx1ZT1WLmdldFRpbWUoKX1lbHNle04udmFsdWU9Vi5hZGQoRCwieWVhciIpLmdldFRpbWUoKX1ZPW5ldyB0aGlzLnRpY2tSZW5kZXJlcihOKTtpZih0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZyYmdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyE9IiIpe1kuZm9ybWF0U3RyaW5nPXRoaXMuX2F1dG9Gb3JtYXRTdHJpbmd9aWYoIXRoaXMuc2hvd1RpY2tzKXtZLnNob3dMYWJlbD1mYWxzZTtZLnNob3dNYXJrPWZhbHNlfWVsc2V7aWYoIXRoaXMuc2hvd1RpY2tNYXJrcyl7WS5zaG93TWFyaz1mYWxzZX19dGhpcy5fdGlja3MucHVzaChZKX1PPUQqa319fWVsc2V7aWYoRj09InhheGlzInx8Rj09IngyYXhpcyIpe249dGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGh9ZWxzZXtuPXRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodH1pZih0aGlzLm1pbiE9bnVsbCYmdGhpcy5tYXghPW51bGwmJnRoaXMubnVtYmVyVGlja3MhPW51bGwpe3RoaXMudGlja0ludGVydmFsPW51bGx9aWYodGhpcy50aWNrSW50ZXJ2YWwhPW51bGwmJlUhPW51bGwpe3RoaXMuZGFUaWNrSW50ZXJ2YWw9VX1pZihhZT09Sil7dmFyIG89MjQqNjAqNjAqNTAwO2FlLT1vO0orPW99Qj1KLWFlO3ZhciBHPTIrcGFyc2VJbnQoTWF0aC5tYXgoMCxuLTEwMCkvMTAwLDEwKTt2YXIgVyxDO1c9KHRoaXMubWluIT1udWxsKT9uZXcgaC5qc0RhdGUodGhpcy5taW4pLmdldFRpbWUoKTphZS1CLzIqKHRoaXMucGFkTWluLTEpO0M9KHRoaXMubWF4IT1udWxsKT9uZXcgaC5qc0RhdGUodGhpcy5tYXgpLmdldFRpbWUoKTpKK0IvMioodGhpcy5wYWRNYXgtMSk7dGhpcy5taW49Vzt0aGlzLm1heD1DO0I9dGhpcy5tYXgtdGhpcy5taW47aWYodGhpcy5udW1iZXJUaWNrcz09bnVsbCl7aWYodGhpcy5kYVRpY2tJbnRlcnZhbCE9bnVsbCl7dmFyIHU9bmV3IGguanNEYXRlKHRoaXMubWF4KS5kaWZmKHRoaXMubWluLHRoaXMuZGFUaWNrSW50ZXJ2YWxbMV0sdHJ1ZSk7dGhpcy5udW1iZXJUaWNrcz1NYXRoLmNlaWwodS90aGlzLmRhVGlja0ludGVydmFsWzBdKSsxO3RoaXMubWF4PW5ldyBoLmpzRGF0ZSh0aGlzLm1pbikuYWRkKCh0aGlzLm51bWJlclRpY2tzLTEpKnRoaXMuZGFUaWNrSW50ZXJ2YWxbMF0sdGhpcy5kYVRpY2tJbnRlcnZhbFsxXSkuZ2V0VGltZSgpfWVsc2V7aWYobj4yMDApe3RoaXMubnVtYmVyVGlja3M9cGFyc2VJbnQoMysobi0yMDApLzEwMCwxMCl9ZWxzZXt0aGlzLm51bWJlclRpY2tzPTJ9fX1PPUIvKHRoaXMubnVtYmVyVGlja3MtMSkvMTAwMDtpZih0aGlzLmRhVGlja0ludGVydmFsPT1udWxsKXt0aGlzLmRhVGlja0ludGVydmFsPVtPLCJzZWNvbmRzIl19Zm9yKHZhciBhYT0wO2FhPHRoaXMubnVtYmVyVGlja3M7YWErKyl7dmFyIGFlPW5ldyBoLmpzRGF0ZSh0aGlzLm1pbik7YWQ9YWUuYWRkKGFhKnRoaXMuZGFUaWNrSW50ZXJ2YWxbMF0sdGhpcy5kYVRpY2tJbnRlcnZhbFsxXSkuZ2V0VGltZSgpO3ZhciBZPW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTtpZighdGhpcy5zaG93VGlja3Mpe1kuc2hvd0xhYmVsPWZhbHNlO1kuc2hvd01hcms9ZmFsc2V9ZWxzZXtpZighdGhpcy5zaG93VGlja01hcmtzKXtZLnNob3dNYXJrPWZhbHNlfX1ZLnNldFRpY2soYWQsdGhpcy5uYW1lKTt0aGlzLl90aWNrcy5wdXNoKFkpfX19fWlmKHRoaXMudGlja0luc2V0KXt0aGlzLm1pbj10aGlzLm1pbi10aGlzLnRpY2tJbnNldCpPO3RoaXMubWF4PXRoaXMubWF4K3RoaXMudGlja0luc2V0Kk99aWYodGhpcy5fZGFUaWNrSW50ZXJ2YWw9PW51bGwpe3RoaXMuX2RhVGlja0ludGVydmFsPXRoaXMuZGFUaWNrSW50ZXJ2YWx9WD1udWxsfX0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.donutRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuRG9udXRSZW5kZXJlcgogICAgICogUGx1Z2luIHJlbmRlcmVyIHRvIGRyYXcgYSBkb251dCBjaGFydC4KICAgICAqIHggdmFsdWVzLCBpZiBwcmVzZW50LCB3aWxsIGJlIHVzZWQgYXMgc2xpY2UgbGFiZWxzLgogICAgICogeSB2YWx1ZXMgZ2l2ZSBzbGljZSBzaXplLgogICAgICogCiAgICAgKiBUbyB1c2UgdGhpcyByZW5kZXJlciwgeW91IG5lZWQgdG8gaW5jbHVkZSB0aGUgCiAgICAgKiBkb251dCByZW5kZXJlciBwbHVnaW4sIGZvciBleGFtcGxlOgogICAgICogCiAgICAgKiA+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InBsdWdpbnMvanFwbG90LmRvbnV0UmVuZGVyZXIuanMiPjwvc2NyaXB0PgogICAgICogCiAgICAgKiBQcm9wZXJ0aWVzIGRlc2NyaWJlZCBoZXJlIGFyZSBwYXNzZWQgaW50byB0aGUgJC5qcXBsb3QgZnVuY3Rpb24KICAgICAqIGFzIG9wdGlvbnMgb24gdGhlIHNlcmllcyByZW5kZXJlci4gIEZvciBleGFtcGxlOgogICAgICogCiAgICAgKiA+IHBsb3QyID0gJC5qcXBsb3QoJ2NoYXJ0MicsIFtzMSwgczJdLCB7CiAgICAgKiA+ICAgICBzZXJpZXNEZWZhdWx0czogewogICAgICogPiAgICAgICAgIHJlbmRlcmVyOiQuanFwbG90LkRvbnV0UmVuZGVyZXIsCiAgICAgKiA+ICAgICAgICAgcmVuZGVyZXJPcHRpb25zOnsKICAgICAqID4gICAgICAgICAgICAgIHNsaWNlTWFyZ2luOiAyLAogICAgICogPiAgICAgICAgICAgICAgaW5uZXJEaWFtZXRlcjogMTEwLAogICAgICogPiAgICAgICAgICAgICAgc3RhcnRBbmdsZTogLTkwCiAgICAgKiA+ICAgICAgICAgIH0KICAgICAqID4gICAgICB9CiAgICAgKiA+IH0pOwogICAgICogCiAgICAgKiBBIGRvbnV0IHBsb3Qgd2lsbCB0cmlnZ2VyIGV2ZW50cyBvbiB0aGUgcGxvdCB0YXJnZXQKICAgICAqIGFjY29yZGluZyB0byB1c2VyIGludGVyYWN0aW9uLiAgQWxsIGV2ZW50cyByZXR1cm4gdGhlIGV2ZW50IG9iamVjdCwKICAgICAqIHRoZSBzZXJpZXMgaW5kZXgsIHRoZSBwb2ludCAoc2xpY2UpIGluZGV4LCBhbmQgdGhlIHBvaW50IGRhdGEgZm9yIAogICAgICogdGhlIGFwcHJvcHJpYXRlIHNsaWNlLgogICAgICogCiAgICAgKiAnanFwbG90RGF0YU1vdXNlT3ZlcicgLSB0cmlnZ2VyZWQgd2hlbiB1c2VyIG1vdXNlaW5nIG92ZXIgYSBzbGljZS4KICAgICAqICdqcXBsb3REYXRhSGlnaGxpZ2h0JyAtIHRyaWdnZXJlZCB0aGUgZmlyc3QgdGltZSB1c2VyIG1vdXNlcyBvdmVyIGEgc2xpY2UsCiAgICAgKiBpZiBoaWdobGlnaHRpbmcgaXMgZW5hYmxlZC4KICAgICAqICdqcXBsb3REYXRhVW5oaWdobGlnaHQnIC0gdHJpZ2dlcmVkIHdoZW4gYSB1c2VyIG1vdmVzIHRoZSBtb3VzZSBvdXQgb2YKICAgICAqIGEgaGlnaGxpZ2h0ZWQgc2xpY2UuCiAgICAgKiAnanFwbG90RGF0YUNsaWNrJyAtIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiBhIHNsaWNlLgogICAgICogJ2pxcGxvdERhdGFSaWdodENsaWNrJyAtIHRpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgcmlnaHQgY2xpY2tzIG9uIGEgc2xpY2UgaWYKICAgICAqIHRoZSAiY2FwdHVyZVJpZ2h0Q2xpY2siIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZSBvbiB0aGUgcGxvdC4KICAgICAqLwogICAgJC5qcXBsb3QuRG9udXRSZW5kZXJlciA9IGZ1bmN0aW9uKCl7CiAgICAgICAgJC5qcXBsb3QuTGluZVJlbmRlcmVyLmNhbGwodGhpcyk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5Eb251dFJlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTsKICAgICQuanFwbG90LkRvbnV0UmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuRG9udXRSZW5kZXJlcjsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYSBzZXJpZXMKICAgICQuanFwbG90LkRvbnV0UmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zLCBwbG90KSB7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAvLwogICAgICAgIC8vIHByb3A6IGRpYW1ldGVyCiAgICAgICAgLy8gT3V0ZXIgZGlhbWV0ZXIgb2YgdGhlIGRvbnV0LCBhdXRvIGNvbXB1dGVkIGJ5IGRlZmF1bHQKICAgICAgICB0aGlzLmRpYW1ldGVyID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBpbm5lckRpYW1ldGVyCiAgICAgICAgLy8gSW5uZXIgZGlhbWV0ZXIgb2YgdGhlIGRvbnV0LCBhdXRvIGNhbGN1bGF0ZWQgYnkgZGVmYXVsdC4KICAgICAgICAvLyBJZiBzcGVjaWZpZWQgd2lsbCBvdmVycmlkZSB0aGlja25lc3MgdmFsdWUuCiAgICAgICAgdGhpcy5pbm5lckRpYW1ldGVyID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiB0aGlja25lc3MKICAgICAgICAvLyB0aGlja25lc3Mgb2YgdGhlIGRvbnV0LCBhdXRvIGNvbXB1dGVkIGJ5IGRlZmF1bHQKICAgICAgICAvLyBPdmVycmlkZGVuIGJ5IGlmIGlubmVyRGlhbWV0ZXIgaXMgc3BlY2lmaWVkLgogICAgICAgIHRoaXMudGhpY2tuZXNzID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBwYWRkaW5nCiAgICAgICAgLy8gcGFkZGluZyBiZXR3ZWVuIHRoZSBkb251dCBhbmQgcGxvdCBlZGdlcywgbGVnZW5kLCBldGMuCiAgICAgICAgdGhpcy5wYWRkaW5nID0gMjA7CiAgICAgICAgLy8gcHJvcDogc2xpY2VNYXJnaW4KICAgICAgICAvLyBhbmd1bGFyIHNwYWNpbmcgYmV0d2VlbiBkb251dCBzbGljZXMgaW4gZGVncmVlcy4KICAgICAgICB0aGlzLnNsaWNlTWFyZ2luID0gMDsKICAgICAgICAvLyBwcm9wOiByaW5nTWFyZ2luCiAgICAgICAgLy8gcGl4ZWwgZGlzdGFuY2UgYmV0d2VlbiByaW5ncywgb3IgbXVsdGlwbGUgc2VyaWVzIGluIGEgZG9udXQgcGxvdC4KICAgICAgICAvLyBudWxsIHdpbGwgY29tcHV0ZSByaW5nTWFyZ2luIGJhc2VkIG9uIHNsaWNlTWFyZ2luLgogICAgICAgIHRoaXMucmluZ01hcmdpbiA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogZmlsbAogICAgICAgIC8vIHRydWUgb3IgZmFsc2UsIHdoZXRoZXIgdG8gZmlsIHRoZSBzbGljZXMuCiAgICAgICAgdGhpcy5maWxsID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBzaGFkb3dPZmZzZXQKICAgICAgICAvLyBvZmZzZXQgb2YgdGhlIHNoYWRvdyBmcm9tIHRoZSBzbGljZSBhbmQgb2Zmc2V0IG9mIAogICAgICAgIC8vIGVhY2ggc3VjY2VzaXZlIHN0cm9rZSBvZiB0aGUgc2hhZG93IGZyb20gdGhlIGxhc3QuCiAgICAgICAgdGhpcy5zaGFkb3dPZmZzZXQgPSAyOwogICAgICAgIC8vIHByb3A6IHNoYWRvd0FscGhhCiAgICAgICAgLy8gdHJhbnNwYXJlbmN5IG9mIHRoZSBzaGFkb3cgKDAgPSB0cmFuc3BhcmVudCwgMSA9IG9wYXF1ZSkKICAgICAgICB0aGlzLnNoYWRvd0FscGhhID0gMC4wNzsKICAgICAgICAvLyBwcm9wOiBzaGFkb3dEZXB0aAogICAgICAgIC8vIG51bWJlciBvZiBzdHJva2VzIHRvIGFwcGx5IHRvIHRoZSBzaGFkb3csIAogICAgICAgIC8vIGVhY2ggc3Ryb2tlIG9mZnNldCBzaGFkb3dPZmZzZXQgZnJvbSB0aGUgbGFzdC4KICAgICAgICB0aGlzLnNoYWRvd0RlcHRoID0gNTsKICAgICAgICAvLyBwcm9wOiBoaWdobGlnaHRNb3VzZU92ZXIKICAgICAgICAvLyBUcnVlIHRvIGhpZ2hsaWdodCBzbGljZSB3aGVuIG1vdXNlZCBvdmVyLgogICAgICAgIC8vIFRoaXMgbXVzdCBiZSBmYWxzZSB0byBlbmFibGUgaGlnaGxpZ2h0TW91c2VEb3duIHRvIGhpZ2hsaWdodCB3aGVuIGNsaWNraW5nIG9uIGEgc2xpY2UuCiAgICAgICAgdGhpcy5oaWdobGlnaHRNb3VzZU92ZXIgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IGhpZ2hsaWdodE1vdXNlRG93bgogICAgICAgIC8vIFRydWUgdG8gaGlnaGxpZ2h0IHdoZW4gYSBtb3VzZSBidXR0b24gaXMgcHJlc3NlZCBvdmVyIGEgc2xpY2UuCiAgICAgICAgLy8gVGhpcyB3aWxsIGJlIGRpc2FibGVkIGlmIGhpZ2hsaWdodE1vdXNlT3ZlciBpcyB0cnVlLgogICAgICAgIHRoaXMuaGlnaGxpZ2h0TW91c2VEb3duID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogaGlnaGxpZ2h0Q29sb3JzCiAgICAgICAgLy8gYW4gYXJyYXkgb2YgY29sb3JzIHRvIHVzZSB3aGVuIGhpZ2hsaWdodGluZyBhIHNsaWNlLgogICAgICAgIHRoaXMuaGlnaGxpZ2h0Q29sb3JzID0gW107CiAgICAgICAgLy8gcHJvcDogZGF0YUxhYmVscwogICAgICAgIC8vIEVpdGhlciAnbGFiZWwnLCAndmFsdWUnLCAncGVyY2VudCcgb3IgYW4gYXJyYXkgb2YgbGFiZWxzIHRvIHBsYWNlIG9uIHRoZSBwaWUgc2xpY2VzLgogICAgICAgIC8vIERlZmF1bHRzIHRvIHBlcmNlbnRhZ2Ugb2YgZWFjaCBwaWUgc2xpY2UuCiAgICAgICAgdGhpcy5kYXRhTGFiZWxzID0gJ3BlcmNlbnQnOwogICAgICAgIC8vIHByb3A6IHNob3dEYXRhTGFiZWxzCiAgICAgICAgLy8gdHJ1ZSB0byBzaG93IGRhdGEgbGFiZWxzIG9uIHNsaWNlcy4KICAgICAgICB0aGlzLnNob3dEYXRhTGFiZWxzID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogZGF0YUxhYmVsRm9ybWF0U3RyaW5nCiAgICAgICAgLy8gRm9ybWF0IHN0cmluZyBmb3IgZGF0YSBsYWJlbHMuICBJZiBub25lLCAnJXMnIGlzIHVzZWQgZm9yICJsYWJlbCIgYW5kIGZvciBhcnJheXMsICclZCcgZm9yIHZhbHVlIGFuZCAnJWQlJScgZm9yIHBlcmNlbnRhZ2UuCiAgICAgICAgdGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmcgPSBudWxsOwogICAgICAgIC8vIHByb3A6IGRhdGFMYWJlbFRocmVzaG9sZAogICAgICAgIC8vIFRocmVzaGhvbGQgaW4gcGVyY2VudGFnZSAoMCAtIDEwMCkgb2YgcGllIGFyZWEsIGJlbG93IHdoaWNoIG5vIGxhYmVsIHdpbGwgYmUgZGlzcGxheWVkLgogICAgICAgIC8vIFRoaXMgYXBwbGllcyB0byBhbGwgbGFiZWwgdHlwZXMsIG5vdCBqdXN0IHRvIHBlcmNlbnRhZ2UgbGFiZWxzLgogICAgICAgIHRoaXMuZGF0YUxhYmVsVGhyZXNob2xkID0gMzsKICAgICAgICAvLyBwcm9wOiBkYXRhTGFiZWxQb3NpdGlvbkZhY3RvcgogICAgICAgIC8vIEEgTXVsdGlwbGllciAoMC0xKSBvZiB0aGUgcGllIHJhZGl1cyB3aGljaCBjb250cm9scyBwb3NpdGlvbiBvZiBsYWJlbCBvbiBzbGljZS4KICAgICAgICAvLyBJbmNyZWFzaW5nIHdpbGwgc2xpZGUgbGFiZWwgdG93YXJkIGVkZ2Ugb2YgcGllLCBkZWNyZWFzaW5nIHdpbGwgc2xpZGUgbGFiZWwgdG93YXJkIGNlbnRlciBvZiBwaWUuCiAgICAgICAgdGhpcy5kYXRhTGFiZWxQb3NpdGlvbkZhY3RvciA9IDAuNDsKICAgICAgICAvLyBwcm9wOiBkYXRhTGFiZWxOdWRnZQogICAgICAgIC8vIE51bWJlciBvZiBwaXhlbHMgdG8gc2xpZGUgdGhlIGxhYmVsIGF3YXkgZnJvbSAoKykgb3IgdG93YXJkICgtKSB0aGUgY2VudGVyIG9mIHRoZSBwaWUuCiAgICAgICAgdGhpcy5kYXRhTGFiZWxOdWRnZSA9IDA7CiAgICAgICAgLy8gcHJvcDogc3RhcnRBbmdsZQogICAgICAgIC8vIEFuZ2xlIHRvIHN0YXJ0IGRyYXdpbmcgZG9udXQgaW4gZGVncmVlcy4gIAogICAgICAgIC8vIEFjY29yZGluZyB0byBvcmllbnRhdGlvbiBvZiBjYW52YXMgY29vcmRpbmF0ZSBzeXN0ZW06CiAgICAgICAgLy8gMCA9IG9uIHRoZSBwb3NpdGl2ZSB4IGF4aXMKICAgICAgICAvLyAtOTAgPSBvbiB0aGUgcG9zaXRpdmUgeSBheGlzLgogICAgICAgIC8vIDkwID0gb24gdGhlIG5lZ2FpdmUgeSBheGlzLgogICAgICAgIC8vIDE4MCBvciAtIDE4MCA9IG9uIHRoZSBuZWdhdGl2ZSB4IGF4aXMuCiAgICAgICAgdGhpcy5zdGFydEFuZ2xlID0gMDsKICAgICAgICB0aGlzLnRpY2tSZW5kZXJlciA9ICQuanFwbG90LkRvbnV0VGlja1JlbmRlcmVyOwogICAgICAgIC8vIFVzZWQgYXMgY2hlY2sgZm9yIGNvbmRpdGlvbnMgd2hlcmUgZG9udXQgc2hvdWxkbid0IGJlIGRyYXduLgogICAgICAgIHRoaXMuX2RyYXdEYXRhID0gdHJ1ZTsKICAgICAgICB0aGlzLl90eXBlID0gJ2RvbnV0JzsKICAgICAgICAKICAgICAgICAvLyBpZiB1c2VyIGhhcyBwYXNzZWQgaW4gaGlnaGxpZ2h0TW91c2VEb3duIG9wdGlvbiBhbmQgbm90IHNldCBoaWdobGlnaHRNb3VzZU92ZXIsIGRpc2FibGUgaGlnaGxpZ2h0TW91c2VPdmVyCiAgICAgICAgaWYgKG9wdGlvbnMuaGlnaGxpZ2h0TW91c2VEb3duICYmIG9wdGlvbnMuaGlnaGxpZ2h0TW91c2VPdmVyID09IG51bGwpIHsKICAgICAgICAgICAgb3B0aW9ucy5oaWdobGlnaHRNb3VzZU92ZXIgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CiAgICAgICAgaWYgKHRoaXMuZGlhbWV0ZXIgIT0gbnVsbCkgewogICAgICAgICAgICB0aGlzLmRpYW1ldGVyID0gdGhpcy5kaWFtZXRlciAtIHRoaXMuc2xpY2VNYXJnaW47CiAgICAgICAgfQogICAgICAgIHRoaXMuX2RpYW1ldGVyID0gbnVsbDsKICAgICAgICB0aGlzLl9pbm5lckRpYW1ldGVyID0gbnVsbDsKICAgICAgICB0aGlzLl9yYWRpdXMgPSBudWxsOwogICAgICAgIHRoaXMuX2lubmVyUmFkaXVzID0gbnVsbDsKICAgICAgICB0aGlzLl90aGlja25lc3MgPSBudWxsOwogICAgICAgIC8vIHJlZmVyZW5jZXMgdG8gdGhlIHByZXZpb3VzIHNlcmllcyBpbiB0aGUgcGxvdCB0byBwcm9wZXJseSBjYWxjdWxhdGUgZGlhbWV0ZXJzCiAgICAgICAgLy8gYW5kIHRoaWNrbmVzc2VzIG9mIG5lc3RlZCByaW5ncy4KICAgICAgICB0aGlzLl9wcmV2aW91c1NlcmllcyA9IFtdOwogICAgICAgIHRoaXMuX251bWJlclNlcmllcyA9IDE7CiAgICAgICAgLy8gYXJyYXkgb2YgW3N0YXJ0LGVuZF0gYW5nbGVzIGFycmF5cywgb25lIGZvciBlYWNoIHNsaWNlLiAgSW4gcmFkaWFucy4KICAgICAgICB0aGlzLl9zbGljZUFuZ2xlcyA9IFtdOwogICAgICAgIC8vIGluZGV4IG9mIHRoZSBjdXJyZW50eSBoaWdobGlnaHRlZCBwb2ludCwgaWYgYW55CiAgICAgICAgdGhpcy5faGlnaGxpZ2h0ZWRQb2ludCA9IG51bGw7CiAgICAgICAgCiAgICAgICAgLy8gc2V0IGhpZ2hsaWdodCBjb2xvcnMgaWYgbm9uZSBwcm92aWRlZAogICAgICAgIGlmICh0aGlzLmhpZ2hsaWdodENvbG9ycy5sZW5ndGggPT0gMCkgewogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5zZXJpZXNDb2xvcnMubGVuZ3RoOyBpKyspewogICAgICAgICAgICAgICAgdmFyIHJnYmEgPSAkLmpxcGxvdC5nZXRDb2xvckNvbXBvbmVudHModGhpcy5zZXJpZXNDb2xvcnNbaV0pOwogICAgICAgICAgICAgICAgdmFyIG5ld3JnYiA9IFtyZ2JhWzBdLCByZ2JhWzFdLCByZ2JhWzJdXTsKICAgICAgICAgICAgICAgIHZhciBzdW0gPSBuZXdyZ2JbMF0gKyBuZXdyZ2JbMV0gKyBuZXdyZ2JbMl07CiAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8MzsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBkYXJrZW5pbmcsIGxvd2VzdCBjb2xvciBjb21wb25lbnQgY2FuIGJlIGlzIDYwLgogICAgICAgICAgICAgICAgICAgIG5ld3JnYltqXSA9IChzdW0gPiA1NzApID8gIG5ld3JnYltqXSAqIDAuOCA6IG5ld3JnYltqXSArIDAuMyAqICgyNTUgLSBuZXdyZ2Jbal0pOwogICAgICAgICAgICAgICAgICAgIG5ld3JnYltqXSA9IHBhcnNlSW50KG5ld3JnYltqXSwgMTApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRDb2xvcnMucHVzaCgncmdiKCcrbmV3cmdiWzBdKycsJytuZXdyZ2JbMV0rJywnK25ld3JnYlsyXSsnKScpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHBsb3QucG9zdFBhcnNlT3B0aW9uc0hvb2tzLmFkZE9uY2UocG9zdFBhcnNlT3B0aW9ucyk7CiAgICAgICAgcGxvdC5wb3N0SW5pdEhvb2tzLmFkZE9uY2UocG9zdEluaXQpOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdE1vdXNlTW92ZScsIGhhbmRsZU1vdmUpOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdE1vdXNlRG93bicsIGhhbmRsZU1vdXNlRG93bik7CiAgICAgICAgcGxvdC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgnanFwbG90TW91c2VVcCcsIGhhbmRsZU1vdXNlVXApOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdENsaWNrJywgaGFuZGxlQ2xpY2spOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdFJpZ2h0Q2xpY2snLCBoYW5kbGVSaWdodENsaWNrKTsKICAgICAgICBwbG90LnBvc3REcmF3SG9va3MuYWRkT25jZShwb3N0UGxvdERyYXcpOwogICAgICAgIAogICAgICAgIAogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRG9udXRSZW5kZXJlci5wcm90b3R5cGUuc2V0R3JpZERhdGEgPSBmdW5jdGlvbihwbG90KSB7CiAgICAgICAgLy8gc2V0IGdyaWREYXRhIHByb3BlcnR5LiAgVGhpcyB3aWxsIGhvbGQgYW5nbGUgaW4gcmFkaWFucyBvZiBlYWNoIGRhdGEgcG9pbnQuCiAgICAgICAgdmFyIHN0YWNrID0gW107CiAgICAgICAgdmFyIHRkID0gW107CiAgICAgICAgdmFyIHNhID0gdGhpcy5zdGFydEFuZ2xlLzE4MCpNYXRoLlBJOwogICAgICAgIHZhciB0b3QgPSAwOwogICAgICAgIC8vIGRvbid0IGtub3cgaWYgd2UgaGF2ZSBhbnkgdmFsaWQgZGF0YSB5ZXQsIHNvIHNldCBwbG90IHRvIG5vdCBkcmF3LgogICAgICAgIHRoaXMuX2RyYXdEYXRhID0gZmFsc2U7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAgIGlmICh0aGlzLmRhdGFbaV1bMV0gIT0gMCkgewogICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSBkYXRhLCBPLksuIHRvIGRyYXcuCiAgICAgICAgICAgICAgICB0aGlzLl9kcmF3RGF0YSA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3RhY2sucHVzaCh0aGlzLmRhdGFbaV1bMV0pOwogICAgICAgICAgICB0ZC5wdXNoKFt0aGlzLmRhdGFbaV1bMF1dKTsKICAgICAgICAgICAgaWYgKGk+MCkgewogICAgICAgICAgICAgICAgc3RhY2tbaV0gKz0gc3RhY2tbaS0xXTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0b3QgKz0gdGhpcy5kYXRhW2ldWzFdOwogICAgICAgIH0KICAgICAgICB2YXIgZmFjdCA9IE1hdGguUEkqMi9zdGFja1tzdGFjay5sZW5ndGggLSAxXTsKICAgICAgICAKICAgICAgICBmb3IgKHZhciBpPTA7IGk8c3RhY2subGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdGRbaV1bMV0gPSBzdGFja1tpXSAqIGZhY3Q7CiAgICAgICAgICAgIHRkW2ldWzJdID0gdGhpcy5kYXRhW2ldWzFdL3RvdDsKICAgICAgICB9CiAgICAgICAgdGhpcy5ncmlkRGF0YSA9IHRkOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRG9udXRSZW5kZXJlci5wcm90b3R5cGUubWFrZUdyaWREYXRhID0gZnVuY3Rpb24oZGF0YSwgcGxvdCkgewogICAgICAgIHZhciBzdGFjayA9IFtdOwogICAgICAgIHZhciB0ZCA9IFtdOwogICAgICAgIHZhciB0b3QgPSAwOwogICAgICAgIHZhciBzYSA9IHRoaXMuc3RhcnRBbmdsZS8xODAqTWF0aC5QSTsKICAgICAgICAvLyBkb24ndCBrbm93IGlmIHdlIGhhdmUgYW55IHZhbGlkIGRhdGEgeWV0LCBzbyBzZXQgcGxvdCB0byBub3QgZHJhdy4KICAgICAgICB0aGlzLl9kcmF3RGF0YSA9IGZhbHNlOwogICAgICAgIGZvciAodmFyIGk9MDsgaTxkYXRhLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVtpXVsxXSAhPSAwKSB7CiAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIGRhdGEsIE8uSy4gdG8gZHJhdy4KICAgICAgICAgICAgICAgIHRoaXMuX2RyYXdEYXRhID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGFjay5wdXNoKGRhdGFbaV1bMV0pOwogICAgICAgICAgICB0ZC5wdXNoKFtkYXRhW2ldWzBdXSk7CiAgICAgICAgICAgIGlmIChpPjApIHsKICAgICAgICAgICAgICAgIHN0YWNrW2ldICs9IHN0YWNrW2ktMV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdG90ICs9IGRhdGFbaV1bMV07CiAgICAgICAgfQogICAgICAgIHZhciBmYWN0ID0gTWF0aC5QSSoyL3N0YWNrW3N0YWNrLmxlbmd0aCAtIDFdOwogICAgICAgIAogICAgICAgIGZvciAodmFyIGk9MDsgaTxzdGFjay5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB0ZFtpXVsxXSA9IHN0YWNrW2ldICogZmFjdDsKICAgICAgICAgICAgdGRbaV1bMl0gPSBkYXRhW2ldWzFdL3RvdDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRkOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRG9udXRSZW5kZXJlci5wcm90b3R5cGUuZHJhd1NsaWNlID0gZnVuY3Rpb24gKGN0eCwgYW5nMSwgYW5nMiwgY29sb3IsIGlzU2hhZG93KSB7CiAgICAgICAgdmFyIHIgPSB0aGlzLl9kaWFtZXRlciAvIDI7CiAgICAgICAgdmFyIHJpID0gciAtIHRoaXMuX3RoaWNrbmVzczsKICAgICAgICB2YXIgZmlsbCA9IHRoaXMuZmlsbDsKICAgICAgICAvLyB2YXIgbGluZVdpZHRoID0gdGhpcy5saW5lV2lkdGg7CiAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICBjdHgudHJhbnNsYXRlKHRoaXMuX2NlbnRlclswXSwgdGhpcy5fY2VudGVyWzFdKTsKICAgICAgICAvLyBjdHgudHJhbnNsYXRlKHRoaXMuc2xpY2VNYXJnaW4qTWF0aC5jb3MoKGFuZzErYW5nMikvMiksIHRoaXMuc2xpY2VNYXJnaW4qTWF0aC5zaW4oKGFuZzErYW5nMikvMikpOwogICAgICAgIAogICAgICAgIGlmIChpc1NoYWRvdykgewogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5zaGFkb3dEZXB0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBjdHguc2F2ZSgpOwogICAgICAgICAgICAgICAgY3R4LnRyYW5zbGF0ZSh0aGlzLnNoYWRvd09mZnNldCpNYXRoLmNvcyh0aGlzLnNoYWRvd0FuZ2xlLzE4MCpNYXRoLlBJKSwgdGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5zaW4odGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSkpOwogICAgICAgICAgICAgICAgZG9EcmF3KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRvRHJhdygpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBmdW5jdGlvbiBkb0RyYXcgKCkgewogICAgICAgICAgICAvLyBGaXggZm9yIElFIGFuZCBDaHJvbWUgdGhhdCBjYW4ndCBzZWVtIHRvIGRyYXcgY2lyY2xlcyBjb3JyZWN0bHkuCiAgICAgICAgICAgIC8vIGFuZzIgc2hvdWxkIGFsd2F5cyBiZSA8PSAyIHBpIHNpbmNlIHRoYXQgaXMgdGhlIHdheSB0aGUgZGF0YSBpcyBjb252ZXJ0ZWQuCiAgICAgICAgICAgICBpZiAoYW5nMiA+IDYuMjgyICsgdGhpcy5zdGFydEFuZ2xlKSB7CiAgICAgICAgICAgICAgICBhbmcyID0gNi4yODIgKyB0aGlzLnN0YXJ0QW5nbGU7CiAgICAgICAgICAgICAgICBpZiAoYW5nMSA+IGFuZzIpIHsKICAgICAgICAgICAgICAgICAgICBhbmcxID0gNi4yODEgKyB0aGlzLnN0YXJ0QW5nbGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gRml4IGZvciBJRSwgd2hlcmUgaXQgY2FuJ3Qgc2VlbSB0byBoYW5kbGUgMCBkZWdyZWUgYW5nbGVzLiAgQWxzbyBhdm9pZHMKICAgICAgICAgICAgLy8gdWdseSBsaW5lIG9uIHVuZmlsbGVkIGRvbnV0cy4KICAgICAgICAgICAgaWYgKGFuZzEgPj0gYW5nMikgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTsgIAogICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gY29sb3I7CiAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IGNvbG9yOwogICAgICAgICAgICAvLyBjdHgubGluZVdpZHRoID0gbGluZVdpZHRoOwogICAgICAgICAgICBjdHguYXJjKDAsIDAsIHIsIGFuZzEsIGFuZzIsIGZhbHNlKTsKICAgICAgICAgICAgY3R4LmxpbmVUbyhyaSpNYXRoLmNvcyhhbmcyKSwgcmkqTWF0aC5zaW4oYW5nMikpOwogICAgICAgICAgICBjdHguYXJjKDAsMCwgcmksIGFuZzIsIGFuZzEsIHRydWUpOwogICAgICAgICAgICBjdHguY2xvc2VQYXRoKCk7CiAgICAgICAgICAgIGlmIChmaWxsKSB7CiAgICAgICAgICAgICAgICBjdHguZmlsbCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgY3R4LnN0cm9rZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChpc1NoYWRvdykgewogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5zaGFkb3dEZXB0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBzZXJpZXMKICAgICQuanFwbG90LkRvbnV0UmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbiAoY3R4LCBnZCwgb3B0aW9ucywgcGxvdCkgewogICAgICAgIHZhciBpOwogICAgICAgIHZhciBvcHRzID0gKG9wdGlvbnMgIT0gdW5kZWZpbmVkKSA/IG9wdGlvbnMgOiB7fTsKICAgICAgICAvLyBvZmZzZXQgYW5kIGRpcmVjdGlvbiBvZiBvZmZzZXQgZHVlIHRvIGxlZ2VuZCBwbGFjZW1lbnQKICAgICAgICB2YXIgb2ZmeCA9IDA7CiAgICAgICAgdmFyIG9mZnkgPSAwOwogICAgICAgIHZhciB0cmFucyA9IDE7CiAgICAgICAgLy8gdmFyIGNvbG9yR2VuZXJhdG9yID0gbmV3IHRoaXMuY29sb3JHZW5lcmF0b3IodGhpcy5zZXJpZXNDb2xvcnMpOwogICAgICAgIGlmIChvcHRpb25zLmxlZ2VuZEluZm8gJiYgb3B0aW9ucy5sZWdlbmRJbmZvLnBsYWNlbWVudCA9PSAnaW5zaWRlR3JpZCcpIHsKICAgICAgICAgICAgdmFyIGxpID0gb3B0aW9ucy5sZWdlbmRJbmZvOwogICAgICAgICAgICBzd2l0Y2ggKGxpLmxvY2F0aW9uKSB7CiAgICAgICAgICAgICAgICBjYXNlICdudyc6CiAgICAgICAgICAgICAgICAgICAgb2ZmeCA9IGxpLndpZHRoICsgbGkueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3cnOgogICAgICAgICAgICAgICAgICAgIG9mZnggPSBsaS53aWR0aCArIGxpLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdzdyc6CiAgICAgICAgICAgICAgICAgICAgb2ZmeCA9IGxpLndpZHRoICsgbGkueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ25lJzoKICAgICAgICAgICAgICAgICAgICBvZmZ4ID0gbGkud2lkdGggKyBsaS54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIHRyYW5zID0gLTE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdlJzoKICAgICAgICAgICAgICAgICAgICBvZmZ4ID0gbGkud2lkdGggKyBsaS54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIHRyYW5zID0gLTE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdzZSc6CiAgICAgICAgICAgICAgICAgICAgb2ZmeCA9IGxpLndpZHRoICsgbGkueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICB0cmFucyA9IC0xOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnbic6CiAgICAgICAgICAgICAgICAgICAgb2ZmeSA9IGxpLmhlaWdodCArIGxpLnlvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgICAgICAgICBvZmZ5ID0gbGkuaGVpZ2h0ICsgbGkueW9mZnNldDsKICAgICAgICAgICAgICAgICAgICB0cmFucyA9IC0xOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICB2YXIgc2hhZG93ID0gKG9wdHMuc2hhZG93ICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNoYWRvdyA6IHRoaXMuc2hhZG93OwogICAgICAgIHZhciBzaG93TGluZSA9IChvcHRzLnNob3dMaW5lICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNob3dMaW5lIDogdGhpcy5zaG93TGluZTsKICAgICAgICB2YXIgZmlsbCA9IChvcHRzLmZpbGwgIT0gdW5kZWZpbmVkKSA/IG9wdHMuZmlsbCA6IHRoaXMuZmlsbDsKICAgICAgICB2YXIgY3cgPSBjdHguY2FudmFzLndpZHRoOwogICAgICAgIHZhciBjaCA9IGN0eC5jYW52YXMuaGVpZ2h0OwogICAgICAgIHZhciB3ID0gY3cgLSBvZmZ4IC0gMiAqIHRoaXMucGFkZGluZzsKICAgICAgICB2YXIgaCA9IGNoIC0gb2ZmeSAtIDIgKiB0aGlzLnBhZGRpbmc7CiAgICAgICAgdmFyIG1pbmRpbSA9IE1hdGgubWluKHcsaCk7CiAgICAgICAgdmFyIGQgPSBtaW5kaW07CiAgICAgICAgdmFyIHJpbmdtYXJnaW4gPSAgKHRoaXMucmluZ01hcmdpbiA9PSBudWxsKSA/IHRoaXMuc2xpY2VNYXJnaW4gKiAyLjAgOiB0aGlzLnJpbmdNYXJnaW47CiAgICAgICAgCiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMuX3ByZXZpb3VzU2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGQgLT0gMi4wICogdGhpcy5fcHJldmlvdXNTZXJpZXNbaV0uX3RoaWNrbmVzcyArIDIuMCAqIHJpbmdtYXJnaW47CiAgICAgICAgfQogICAgICAgIHRoaXMuX2RpYW1ldGVyID0gdGhpcy5kaWFtZXRlciB8fCBkOwogICAgICAgIGlmICh0aGlzLmlubmVyRGlhbWV0ZXIgIT0gbnVsbCkgewogICAgICAgICAgICB2YXIgb2QgPSAodGhpcy5fbnVtYmVyU2VyaWVzID4gMSAmJiB0aGlzLmluZGV4ID4gMCkgPyB0aGlzLl9wcmV2aW91c1Nlcmllc1swXS5fZGlhbWV0ZXIgOiB0aGlzLl9kaWFtZXRlcjsKICAgICAgICAgICAgdGhpcy5fdGhpY2tuZXNzID0gdGhpcy50aGlja25lc3MgfHwgKG9kIC0gdGhpcy5pbm5lckRpYW1ldGVyIC0gMi4wKnJpbmdtYXJnaW4qdGhpcy5fbnVtYmVyU2VyaWVzKSAvIHRoaXMuX251bWJlclNlcmllcy8yLjA7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICB0aGlzLl90aGlja25lc3MgPSB0aGlzLnRoaWNrbmVzcyB8fCBtaW5kaW0gLyAyIC8gKHRoaXMuX251bWJlclNlcmllcyArIDEpICogMC44NTsKICAgICAgICB9CgogICAgICAgIHZhciByID0gdGhpcy5fcmFkaXVzID0gdGhpcy5fZGlhbWV0ZXIvMjsKICAgICAgICB0aGlzLl9pbm5lclJhZGl1cyA9IHRoaXMuX3JhZGl1cyAtIHRoaXMuX3RoaWNrbmVzczsKICAgICAgICB2YXIgc2EgPSB0aGlzLnN0YXJ0QW5nbGUgLyAxODAgKiBNYXRoLlBJOwogICAgICAgIHRoaXMuX2NlbnRlciA9IFsoY3cgLSB0cmFucyAqIG9mZngpLzIgKyB0cmFucyAqIG9mZngsIChjaCAtIHRyYW5zKm9mZnkpLzIgKyB0cmFucyAqIG9mZnldOwogICAgICAgIAogICAgICAgIGlmICh0aGlzLnNoYWRvdykgewogICAgICAgICAgICB2YXIgc2hhZG93Q29sb3IgPSAncmdiYSgwLDAsMCwnK3RoaXMuc2hhZG93QWxwaGErJyknOwogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8Z2QubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHZhciBhbmcxID0gKGkgPT0gMCkgPyBzYSA6IGdkW2ktMV1bMV0gKyBzYTsKICAgICAgICAgICAgICAgIC8vIEFkanVzdCBhbmcxIGFuZCBhbmcyIGZvciBzbGljZU1hcmdpbgogICAgICAgICAgICAgICAgYW5nMSArPSB0aGlzLnNsaWNlTWFyZ2luLzE4MCpNYXRoLlBJOwogICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5kcmF3U2xpY2UuY2FsbCAodGhpcywgY3R4LCBhbmcxLCBnZFtpXVsxXStzYSwgc2hhZG93Q29sb3IsIHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICBmb3IgKHZhciBpPTA7IGk8Z2QubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIGFuZzEgPSAoaSA9PSAwKSA/IHNhIDogZ2RbaS0xXVsxXSArIHNhOwogICAgICAgICAgICAvLyBBZGp1c3QgYW5nMSBhbmQgYW5nMiBmb3Igc2xpY2VNYXJnaW4KICAgICAgICAgICAgYW5nMSArPSB0aGlzLnNsaWNlTWFyZ2luLzE4MCpNYXRoLlBJOwogICAgICAgICAgICB2YXIgYW5nMiA9IGdkW2ldWzFdICsgc2E7CiAgICAgICAgICAgIHRoaXMuX3NsaWNlQW5nbGVzLnB1c2goW2FuZzEsIGFuZzJdKTsKICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5kcmF3U2xpY2UuY2FsbCAodGhpcywgY3R4LCBhbmcxLCBhbmcyLCB0aGlzLnNlcmllc0NvbG9yc1tpXSwgZmFsc2UpOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0RhdGFMYWJlbHMgJiYgZ2RbaV1bMl0qMTAwID49IHRoaXMuZGF0YUxhYmVsVGhyZXNob2xkKSB7CiAgICAgICAgICAgICAgICB2YXIgZnN0ciwgYXZnYW5nID0gKGFuZzErYW5nMikvMiwgbGFiZWw7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFMYWJlbHMgPT0gJ2xhYmVsJykgewogICAgICAgICAgICAgICAgICAgIGZzdHIgPSB0aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZyB8fCAnJXMnOwogICAgICAgICAgICAgICAgICAgIGxhYmVsID0gJC5qcXBsb3Quc3ByaW50Zihmc3RyLCBnZFtpXVswXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmRhdGFMYWJlbHMgPT0gJ3ZhbHVlJykgewogICAgICAgICAgICAgICAgICAgIGZzdHIgPSB0aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZyB8fCAnJWQnOwogICAgICAgICAgICAgICAgICAgIGxhYmVsID0gJC5qcXBsb3Quc3ByaW50Zihmc3RyLCB0aGlzLmRhdGFbaV1bMV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5kYXRhTGFiZWxzID09ICdwZXJjZW50JykgewogICAgICAgICAgICAgICAgICAgIGZzdHIgPSB0aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZyB8fCAnJWQlJSc7CiAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSAkLmpxcGxvdC5zcHJpbnRmKGZzdHIsIGdkW2ldWzJdKjEwMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmRhdGFMYWJlbHMuY29uc3RydWN0b3IgPT0gQXJyYXkpIHsKICAgICAgICAgICAgICAgICAgICBmc3RyID0gdGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmcgfHwgJyVzJzsKICAgICAgICAgICAgICAgICAgICBsYWJlbCA9ICQuanFwbG90LnNwcmludGYoZnN0ciwgdGhpcy5kYXRhTGFiZWxzW2ldKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGZhY3QgPSB0aGlzLl9pbm5lclJhZGl1cyArIHRoaXMuX3RoaWNrbmVzcyAqIHRoaXMuZGF0YUxhYmVsUG9zaXRpb25GYWN0b3IgKyB0aGlzLnNsaWNlTWFyZ2luICsgdGhpcy5kYXRhTGFiZWxOdWRnZTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIHggPSB0aGlzLl9jZW50ZXJbMF0gKyBNYXRoLmNvcyhhdmdhbmcpICogZmFjdCArIHRoaXMuY2FudmFzLl9vZmZzZXRzLmxlZnQ7CiAgICAgICAgICAgICAgICB2YXIgeSA9IHRoaXMuX2NlbnRlclsxXSArIE1hdGguc2luKGF2Z2FuZykgKiBmYWN0ICsgdGhpcy5jYW52YXMuX29mZnNldHMudG9wOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgbGFiZWxlbGVtID0gJCgnPHNwYW4gY2xhc3M9ImpxcGxvdC1kb251dC1zZXJpZXMganFwbG90LWRhdGEtbGFiZWwiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsiPicgKyBsYWJlbCArICc8L3NwYW4+JykuaW5zZXJ0QmVmb3JlKHBsb3QuZXZlbnRDYW52YXMuX2VsZW0pOwogICAgICAgICAgICAgICAgeCAtPSBsYWJlbGVsZW0ud2lkdGgoKS8yOwogICAgICAgICAgICAgICAgeSAtPSBsYWJlbGVsZW0uaGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgIHggPSBNYXRoLnJvdW5kKHgpOwogICAgICAgICAgICAgICAgeSA9IE1hdGgucm91bmQoeSk7CiAgICAgICAgICAgICAgICBsYWJlbGVsZW0uY3NzKHtsZWZ0OiB4LCB0b3A6IHl9KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAgICAgICAgCiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5Eb251dEF4aXNSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRG9udXRBeGlzUmVuZGVyZXIucHJvdG90eXBlID0gbmV3ICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlcigpOwogICAgJC5qcXBsb3QuRG9udXRBeGlzUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuRG9udXRBeGlzUmVuZGVyZXI7CiAgICAgICAgCiAgICAKICAgIC8vIFRoZXJlIGFyZSBubyB0cmFkaXRpb25hbCBheGVzIG9uIGEgZG9udXQgY2hhcnQuICBXZSBqdXN0IG5lZWQgdG8gcHJvdmlkZQogICAgLy8gZHVtbXkgb2JqZWN0cyB3aXRoIHByb3BlcnRpZXMgc28gdGhlIHBsb3Qgd2lsbCByZW5kZXIuCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBheGlzIG9iamVjdC4KICAgICQuanFwbG90LkRvbnV0QXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucyl7CiAgICAgICAgLy8KICAgICAgICB0aGlzLnRpY2tSZW5kZXJlciA9ICQuanFwbG90LkRvbnV0VGlja1JlbmRlcmVyOwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgIC8vIEkgZG9uJ3QgdGhpbmsgSSdtIGdvaW5nIHRvIG5lZWQgX2RhdGFCb3VuZHMgaGVyZS4KICAgICAgICAvLyBoYXZlIHRvIGdvIEF4aXMgc2NhbGluZyBpbiBhIHdheSB0byBmaXQgY2hhcnQgb250byBwbG90IGFyZWEKICAgICAgICAvLyBhbmQgcHJvdmlkZSB1MnAgYW5kIHAydSBmdW5jdGlvbmFsaXR5IGZvciBtb3VzZSBjdXJzb3IsIGV0Yy4KICAgICAgICAvLyBmb3IgY29udmllbmVuY2Ugc2V0IF9kYXRhQm91bmRzIHRvIDAgYW5kIDEwMCBhbmQKICAgICAgICAvLyBzZXQgbWluL21heCB0byAwIGFuZCAxMDAuCiAgICAgICAgdGhpcy5fZGF0YUJvdW5kcyA9IHttaW46MCwgbWF4OjEwMH07CiAgICAgICAgdGhpcy5taW4gPSAwOwogICAgICAgIHRoaXMubWF4ID0gMTAwOwogICAgICAgIHRoaXMuc2hvd1RpY2tzID0gZmFsc2U7CiAgICAgICAgdGhpcy50aWNrcyA9IFtdOwogICAgICAgIHRoaXMuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICB0aGlzLnNob3cgPSBmYWxzZTsgCiAgICB9OwogICAgCiAgICAKICAgIAogICAgCiAgICAkLmpxcGxvdC5Eb251dExlZ2VuZFJlbmRlcmVyID0gZnVuY3Rpb24oKXsKICAgICAgICAkLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyLmNhbGwodGhpcyk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5Eb251dExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyKCk7CiAgICAkLmpxcGxvdC5Eb251dExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LkRvbnV0TGVnZW5kUmVuZGVyZXI7CiAgICAKICAgIC8qKgogICAgICogQ2xhc3M6ICQuanFwbG90LkRvbnV0TGVnZW5kUmVuZGVyZXIKICAgICAqIExlZ2VuZCBSZW5kZXJlciBzcGVjaWZpYyB0byBkb251dCBwbG90cy4gIFNldCBieSBkZWZhdWx0CiAgICAgKiB3aGVuIHVzZXIgY3JlYXRlcyBhIGRvbnV0IHBsb3QuCiAgICAgKi8KICAgICQuanFwbG90LkRvbnV0TGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAvLwogICAgICAgIC8vIHByb3A6IG51bWJlclJvd3MKICAgICAgICAvLyBNYXhpbXVtIG51bWJlciBvZiByb3dzIGluIHRoZSBsZWdlbmQuICAwIG9yIG51bGwgZm9yIHVubGltaXRlZC4KICAgICAgICB0aGlzLm51bWJlclJvd3MgPSBudWxsOwogICAgICAgIC8vIHByb3A6IG51bWJlckNvbHVtbnMKICAgICAgICAvLyBNYXhpbXVtIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBsZWdlbmQuICAwIG9yIG51bGwgZm9yIHVubGltaXRlZC4KICAgICAgICB0aGlzLm51bWJlckNvbHVtbnMgPSBudWxsOwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggY29udGV4dCBvZiBsZWdlbmQKICAgICQuanFwbG90LkRvbnV0TGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgbGVnZW5kID0gdGhpczsKICAgICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAgICAgICAgIHZhciBzZXJpZXMgPSB0aGlzLl9zZXJpZXM7CiAgICAgICAgICAgIHZhciBzcyA9ICdwb3NpdGlvbjphYnNvbHV0ZTsnOwogICAgICAgICAgICBzcyArPSAodGhpcy5iYWNrZ3JvdW5kKSA/ICdiYWNrZ3JvdW5kOicrdGhpcy5iYWNrZ3JvdW5kKyc7JyA6ICcnOwogICAgICAgICAgICBzcyArPSAodGhpcy5ib3JkZXIpID8gJ2JvcmRlcjonK3RoaXMuYm9yZGVyKyc7JyA6ICcnOwogICAgICAgICAgICBzcyArPSAodGhpcy5mb250U2l6ZSkgPyAnZm9udC1zaXplOicrdGhpcy5mb250U2l6ZSsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMuZm9udEZhbWlseSkgPyAnZm9udC1mYW1pbHk6Jyt0aGlzLmZvbnRGYW1pbHkrJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLnRleHRDb2xvcikgPyAnY29sb3I6Jyt0aGlzLnRleHRDb2xvcisnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMubWFyZ2luVG9wICE9IG51bGwpID8gJ21hcmdpbi10b3A6Jyt0aGlzLm1hcmdpblRvcCsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMubWFyZ2luQm90dG9tICE9IG51bGwpID8gJ21hcmdpbi1ib3R0b206Jyt0aGlzLm1hcmdpbkJvdHRvbSsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMubWFyZ2luTGVmdCAhPSBudWxsKSA/ICdtYXJnaW4tbGVmdDonK3RoaXMubWFyZ2luTGVmdCsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMubWFyZ2luUmlnaHQgIT0gbnVsbCkgPyAnbWFyZ2luLXJpZ2h0OicrdGhpcy5tYXJnaW5SaWdodCsnOycgOiAnJzsKICAgICAgICAgICAgdGhpcy5fZWxlbSA9ICQoJzx0YWJsZSBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9Iicrc3MrJyI+PC90YWJsZT4nKTsKICAgICAgICAgICAgLy8gRG9udXQgY2hhcnRzIGxlZ2VuZHMgZG9uJ3QgZ28gYnkgbnVtYmVyIG9mIHNlcmllcywgYnV0IGJ5IG51bWJlciBvZiBkYXRhIHBvaW50cwogICAgICAgICAgICAvLyBpbiB0aGUgc2VyaWVzLiAgUmVmYWN0b3IgdGhpbmdzIGhlcmUgZm9yIHRoYXQuCiAgICAgICAgICAgIAogICAgICAgICAgICB2YXIgcGFkID0gZmFsc2UsIAogICAgICAgICAgICAgICAgcmV2ZXJzZSA9IGZhbHNlLAogICAgICAgICAgICAgICAgbnIsIG5jOwogICAgICAgICAgICB2YXIgcyA9IHNlcmllc1swXTsKICAgICAgICAgICAgdmFyIGNvbG9yR2VuZXJhdG9yID0gbmV3ICQuanFwbG90LkNvbG9yR2VuZXJhdG9yKHMuc2VyaWVzQ29sb3JzKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChzLnNob3cpIHsKICAgICAgICAgICAgICAgIHZhciBwZCA9IHMuZGF0YTsKICAgICAgICAgICAgICAgIGlmICh0aGlzLm51bWJlclJvd3MpIHsKICAgICAgICAgICAgICAgICAgICBuciA9IHRoaXMubnVtYmVyUm93czsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMubnVtYmVyQ29sdW1ucyl7CiAgICAgICAgICAgICAgICAgICAgICAgIG5jID0gTWF0aC5jZWlsKHBkLmxlbmd0aC9ucik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgIG5jID0gdGhpcy5udW1iZXJDb2x1bW5zOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubnVtYmVyQ29sdW1ucykgewogICAgICAgICAgICAgICAgICAgIG5jID0gdGhpcy5udW1iZXJDb2x1bW5zOwogICAgICAgICAgICAgICAgICAgIG5yID0gTWF0aC5jZWlsKHBkLmxlbmd0aC90aGlzLm51bWJlckNvbHVtbnMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbnIgPSBwZC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgbmMgPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaSwgaiwgdHIsIHRkMSwgdGQyLCBsdCwgcnMsIGNvbG9yOwogICAgICAgICAgICAgICAgdmFyIGlkeCA9IDA7ICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTxucjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHJldmVyc2UpewogICAgICAgICAgICAgICAgICAgICAgICB0ciA9ICQoJzx0ciBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCI+PC90cj4nKS5wcmVwZW5kVG8odGhpcy5fZWxlbSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyID0gJCgnPHRyIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIj48L3RyPicpLmFwcGVuZFRvKHRoaXMuX2VsZW0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgKGo9MDsgajxuYzsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHggPCBwZC5sZW5ndGgpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbHQgPSB0aGlzLmxhYmVsc1tpZHhdIHx8IHBkW2lkeF1bMF0udG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gY29sb3JHZW5lcmF0b3IubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXZlcnNlKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaT4wKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSBuciAtMSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzID0gKHBhZCkgPyB0aGlzLnJvd1NwYWNpbmcgOiAnMCc7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMSA9ICQoJzx0ZCBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3BhZGRpbmctdG9wOicrcnMrJzsiPicrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXY+PGRpdiBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2giIHN0eWxlPSJib3JkZXItY29sb3I6Jytjb2xvcisnOyI+PC9kaXY+JysKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+PC90ZD4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMiA9ICQoJzx0ZCBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9InBhZGRpbmctdG9wOicrcnMrJzsiPjwvdGQ+Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5lc2NhcGVIdG1sKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDIudGV4dChsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDIuaHRtbChsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV2ZXJzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5wcmVwZW5kVG8odHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMS5wcmVwZW5kVG8odHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxLmFwcGVuZFRvKHRyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDIuYXBwZW5kVG8odHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZHgrKzsKICAgICAgICAgICAgICAgICAgICB9ICAgCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW07ICAgICAgICAgICAgICAgIAogICAgfTsKICAgIAogICAgLy8gc2V0dXAgZGVmYXVsdCByZW5kZXJlcnMgZm9yIGF4ZXMgYW5kIGxlZ2VuZCBzbyB1c2VyIGRvZXNuJ3QgaGF2ZSB0bwogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgcGxvdAogICAgZnVuY3Rpb24gcHJlSW5pdCh0YXJnZXQsIGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgICAgICBvcHRpb25zLmF4ZXNEZWZhdWx0cyA9IG9wdGlvbnMuYXhlc0RlZmF1bHRzIHx8IHt9OwogICAgICAgIG9wdGlvbnMubGVnZW5kID0gb3B0aW9ucy5sZWdlbmQgfHwge307CiAgICAgICAgb3B0aW9ucy5zZXJpZXNEZWZhdWx0cyA9IG9wdGlvbnMuc2VyaWVzRGVmYXVsdHMgfHwge307CiAgICAgICAgLy8gb25seSBzZXQgdGhlc2UgaWYgdGhlcmUgaXMgYSBkb251dCBzZXJpZXMKICAgICAgICB2YXIgc2V0b3B0cyA9IGZhbHNlOwogICAgICAgIGlmIChvcHRpb25zLnNlcmllc0RlZmF1bHRzLnJlbmRlcmVyID09ICQuanFwbG90LkRvbnV0UmVuZGVyZXIpIHsKICAgICAgICAgICAgc2V0b3B0cyA9IHRydWU7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuc2VyaWVzKSB7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaSA8IG9wdGlvbnMuc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5zZXJpZXNbaV0ucmVuZGVyZXIgPT0gJC5qcXBsb3QuRG9udXRSZW5kZXJlcikgewogICAgICAgICAgICAgICAgICAgIHNldG9wdHMgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChzZXRvcHRzKSB7CiAgICAgICAgICAgIG9wdGlvbnMuYXhlc0RlZmF1bHRzLnJlbmRlcmVyID0gJC5qcXBsb3QuRG9udXRBeGlzUmVuZGVyZXI7CiAgICAgICAgICAgIG9wdGlvbnMubGVnZW5kLnJlbmRlcmVyID0gJC5qcXBsb3QuRG9udXRMZWdlbmRSZW5kZXJlcjsKICAgICAgICAgICAgb3B0aW9ucy5sZWdlbmQucHJlRHJhdyA9IHRydWU7CiAgICAgICAgICAgIG9wdGlvbnMuc2VyaWVzRGVmYXVsdHMucG9pbnRMYWJlbHMgPSB7c2hvdzogZmFsc2V9OwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgcGxvdC4KICAgIGZ1bmN0aW9uIHBvc3RJbml0KHRhcmdldCwgZGF0YSwgb3B0aW9ucykgewogICAgICAgIC8vIGlmIG11bHRpcGxlIHNlcmllcywgYWRkIGEgcmVmZXJlbmNlIHRvIHRoZSBwcmV2aW91cyBvbmUgc28gdGhhdAogICAgICAgIC8vIGRvbnV0IHJpbmdzIGNhbiBuZXN0LgogICAgICAgIGZvciAodmFyIGk9MTsgaTx0aGlzLnNlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoIXRoaXMuc2VyaWVzW2ldLl9wcmV2aW91c1Nlcmllcy5sZW5ndGgpewogICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPGk7IGorKykgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlcmllc1tpXS5yZW5kZXJlci5jb25zdHJ1Y3RvciA9PSAkLmpxcGxvdC5Eb251dFJlbmRlcmVyICYmIHRoaXMuc2VyaWVzW2pdLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09ICQuanFwbG90LkRvbnV0UmVuZGVyZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNbaV0uX3ByZXZpb3VzU2VyaWVzLnB1c2godGhpcy5zZXJpZXNbal0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBmb3IgKGk9MDsgaTx0aGlzLnNlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAodGhpcy5zZXJpZXNbaV0ucmVuZGVyZXIuY29uc3RydWN0b3IgPT0gJC5qcXBsb3QuRG9udXRSZW5kZXJlcikgewogICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNbaV0uX251bWJlclNlcmllcyA9IHRoaXMuc2VyaWVzLmxlbmd0aDsKICAgICAgICAgICAgICAgIC8vIGRvbid0IGFsbG93IG1vdXNlb3ZlciBhbmQgbW91c2Vkb3duIGF0IHNhbWUgdGltZS4KICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlcmllc1tpXS5oaWdobGlnaHRNb3VzZU92ZXIpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNlcmllc1tpXS5oaWdobGlnaHRNb3VzZURvd24gPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgdmFyIHBvc3RQYXJzZU9wdGlvbnNSdW4gPSBmYWxzZTsKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHBsb3QKICAgIGZ1bmN0aW9uIHBvc3RQYXJzZU9wdGlvbnMob3B0aW9ucykgewogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLnNlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB0aGlzLnNlcmllc1tpXS5zZXJpZXNDb2xvcnMgPSB0aGlzLnNlcmllc0NvbG9yczsKICAgICAgICAgICAgdGhpcy5zZXJpZXNbaV0uY29sb3JHZW5lcmF0b3IgPSAkLmpxcGxvdC5jb2xvckdlbmVyYXRvcjsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhpZ2hsaWdodCAocGxvdCwgc2lkeCwgcGlkeCkgewogICAgICAgIHZhciBzID0gcGxvdC5zZXJpZXNbc2lkeF07CiAgICAgICAgdmFyIGNhbnZhcyA9IHBsb3QucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhczsKICAgICAgICBjYW52YXMuX2N0eC5jbGVhclJlY3QoMCwwLGNhbnZhcy5fY3R4LmNhbnZhcy53aWR0aCwgY2FudmFzLl9jdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgcy5faGlnaGxpZ2h0ZWRQb2ludCA9IHBpZHg7CiAgICAgICAgcGxvdC5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCA9IHNpZHg7CiAgICAgICAgcy5yZW5kZXJlci5kcmF3U2xpY2UuY2FsbChzLCBjYW52YXMuX2N0eCwgcy5fc2xpY2VBbmdsZXNbcGlkeF1bMF0sIHMuX3NsaWNlQW5nbGVzW3BpZHhdWzFdLCBzLmhpZ2hsaWdodENvbG9yc1twaWR4XSwgZmFsc2UpOwogICAgfQogICAgCiAgICBmdW5jdGlvbiB1bmhpZ2hsaWdodCAocGxvdCkgewogICAgICAgIHZhciBjYW52YXMgPSBwbG90LnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7CiAgICAgICAgY2FudmFzLl9jdHguY2xlYXJSZWN0KDAsMCwgY2FudmFzLl9jdHguY2FudmFzLndpZHRoLCBjYW52YXMuX2N0eC5jYW52YXMuaGVpZ2h0KTsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8cGxvdC5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgcGxvdC5zZXJpZXNbaV0uX2hpZ2hsaWdodGVkUG9pbnQgPSBudWxsOwogICAgICAgIH0KICAgICAgICBwbG90LnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ID0gbnVsbDsKICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKCdqcXBsb3REYXRhVW5oaWdobGlnaHQnKTsKICAgIH0KIAogICAgZnVuY3Rpb24gaGFuZGxlTW92ZShldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAobmVpZ2hib3IpIHsKICAgICAgICAgICAgdmFyIGlucyA9IFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IuZGF0YV07CiAgICAgICAgICAgIHZhciBldnQxID0galF1ZXJ5LkV2ZW50KCdqcXBsb3REYXRhTW91c2VPdmVyJyk7CiAgICAgICAgICAgIGV2dDEucGFnZVggPSBldi5wYWdlWDsKICAgICAgICAgICAgZXZ0MS5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKGV2dDEsIGlucyk7CiAgICAgICAgICAgIGlmIChwbG90LnNlcmllc1tpbnNbMF1dLmhpZ2hsaWdodE1vdXNlT3ZlciAmJiAhKGluc1swXSA9PSBwbG90LnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ICYmIGluc1sxXSA9PSBwbG90LnNlcmllc1tpbnNbMF1dLl9oaWdobGlnaHRlZFBvaW50KSkgewogICAgICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YUhpZ2hsaWdodCcpOwogICAgICAgICAgICAgICAgZXZ0LndoaWNoID0gZXYud2hpY2g7CiAgICAgICAgICAgICAgICBldnQucGFnZVggPSBldi5wYWdlWDsKICAgICAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQsIGlucyk7CiAgICAgICAgICAgICAgICBoaWdobGlnaHQgKHBsb3QsIGluc1swXSwgaW5zWzFdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChuZWlnaGJvciA9PSBudWxsKSB7CiAgICAgICAgICAgIHVuaGlnaGxpZ2h0IChwbG90KTsKICAgICAgICB9CiAgICB9IAogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZURvd24oZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgaWYgKG5laWdoYm9yKSB7CiAgICAgICAgICAgIHZhciBpbnMgPSBbbmVpZ2hib3Iuc2VyaWVzSW5kZXgsIG5laWdoYm9yLnBvaW50SW5kZXgsIG5laWdoYm9yLmRhdGFdOwogICAgICAgICAgICBpZiAocGxvdC5zZXJpZXNbaW5zWzBdXS5oaWdobGlnaHRNb3VzZURvd24gJiYgIShpbnNbMF0gPT0gcGxvdC5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCAmJiBpbnNbMV0gPT0gcGxvdC5zZXJpZXNbaW5zWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpIHsKICAgICAgICAgICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ2pxcGxvdERhdGFIaWdobGlnaHQnKTsKICAgICAgICAgICAgICAgIGV2dC53aGljaCA9IGV2LndoaWNoOwogICAgICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoZXZ0LCBpbnMpOwogICAgICAgICAgICAgICAgaGlnaGxpZ2h0IChwbG90LCBpbnNbMF0sIGluc1sxXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAobmVpZ2hib3IgPT0gbnVsbCkgewogICAgICAgICAgICB1bmhpZ2hsaWdodCAocGxvdCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZVVwKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIHZhciBpZHggPSBwbG90LnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4OwogICAgICAgIGlmIChpZHggIT0gbnVsbCAmJiBwbG90LnNlcmllc1tpZHhdLmhpZ2hsaWdodE1vdXNlRG93bikgewogICAgICAgICAgICB1bmhpZ2hsaWdodChwbG90KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIGlmIChuZWlnaGJvcikgewogICAgICAgICAgICB2YXIgaW5zID0gW25laWdoYm9yLnNlcmllc0luZGV4LCBuZWlnaGJvci5wb2ludEluZGV4LCBuZWlnaGJvci5kYXRhXTsKICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YUNsaWNrJyk7CiAgICAgICAgICAgIGV2dC53aGljaCA9IGV2LndoaWNoOwogICAgICAgICAgICBldnQucGFnZVggPSBldi5wYWdlWDsKICAgICAgICAgICAgZXZ0LnBhZ2VZID0gZXYucGFnZVk7CiAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoZXZ0LCBpbnMpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgZnVuY3Rpb24gaGFuZGxlUmlnaHRDbGljayhldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAobmVpZ2hib3IpIHsKICAgICAgICAgICAgdmFyIGlucyA9IFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IuZGF0YV07CiAgICAgICAgICAgIHZhciBpZHggPSBwbG90LnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4OwogICAgICAgICAgICBpZiAoaWR4ICE9IG51bGwgJiYgcGxvdC5zZXJpZXNbaWR4XS5oaWdobGlnaHRNb3VzZURvd24pIHsKICAgICAgICAgICAgICAgIHVuaGlnaGxpZ2h0KHBsb3QpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ2pxcGxvdERhdGFSaWdodENsaWNrJyk7CiAgICAgICAgICAgIGV2dC53aGljaCA9IGV2LndoaWNoOwogICAgICAgICAgICBldnQucGFnZVggPSBldi5wYWdlWDsKICAgICAgICAgICAgZXZ0LnBhZ2VZID0gZXYucGFnZVk7CiAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoZXZ0LCBpbnMpOwogICAgICAgIH0KICAgIH0gICAgCiAgICAKICAgIC8vIGNhbGxlZCB3aXRoaW4gY29udGV4dCBvZiBwbG90CiAgICAvLyBjcmVhdGUgYSBjYW52YXMgd2hpY2ggd2UgY2FuIGRyYXcgb24uCiAgICAvLyBpbnNlcnQgaXQgYmVmb3JlIHRoZSBldmVudENhbnZhcywgc28gZXZlbnRDYW52YXMgd2lsbCBzdGlsbCBjYXB0dXJlIGV2ZW50cy4KICAgIGZ1bmN0aW9uIHBvc3RQbG90RHJhdygpIHsKICAgICAgICAvLyBNZW1vcnkgTGVha3MgcGF0Y2ggICAgCiAgICAgICAgaWYgKHRoaXMucGx1Z2lucy5kb251dFJlbmRlcmVyICYmIHRoaXMucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcykgewogICAgICAgICAgICB0aGlzLnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRDYW52YXMucmVzZXRDYW52YXMoKTsKICAgICAgICAgICAgdGhpcy5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIHRoaXMucGx1Z2lucy5kb251dFJlbmRlcmVyID0ge2hpZ2hsaWdodGVkU2VyaWVzSW5kZXg6bnVsbH07CiAgICAgICAgdGhpcy5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzID0gbmV3ICQuanFwbG90LkdlbmVyaWNDYW52YXMoKTsKICAgICAgICAvLyBkbyB3ZSBoYXZlIGFueSBkYXRhIGxhYmVscz8gIGlmIHNvLCBwdXQgaGlnaGxpZ2h0IGNhbnZhcyBiZWZvcmUgdGhvc2UKICAgICAgICAvLyBGaXggZm9yIGJyb2tlbiBqcXVlcnkgOmZpcnN0IHNlbGVjdG9yIHdpdGggY2FudmFzIChWTUwpIGVsZW1lbnRzLgogICAgICAgIHZhciBsYWJlbHMgPSAkKHRoaXMudGFyZ2V0SWQrJyAuanFwbG90LWRhdGEtbGFiZWwnKTsKICAgICAgICBpZiAobGFiZWxzLmxlbmd0aCkgewogICAgICAgICAgICAkKGxhYmVsc1swXSkuYmVmb3JlKHRoaXMucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCAnanFwbG90LWRvbnV0UmVuZGVyZXItaGlnaGxpZ2h0LWNhbnZhcycsIHRoaXMuX3Bsb3REaW1lbnNpb25zLCB0aGlzKSk7CiAgICAgICAgfQogICAgICAgIC8vIGVsc2UgcHV0IGhpZ2hsaWdodCBjYW52YXMgYmVmb3JlIGV2ZW50IGNhbnZhcy4KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUodGhpcy5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsICdqcXBsb3QtZG9udXRSZW5kZXJlci1oaWdobGlnaHQtY2FudmFzJywgdGhpcy5fcGxvdERpbWVuc2lvbnMsIHRoaXMpKTsKICAgICAgICB9CiAgICAgICAgdmFyIGhjdHggPSB0aGlzLnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuc2V0Q29udGV4dCgpOwogICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgnbW91c2VsZWF2ZScsIHtwbG90OnRoaXN9LCBmdW5jdGlvbiAoZXYpIHsgdW5oaWdobGlnaHQoZXYuZGF0YS5wbG90KTsgfSk7CiAgICB9CiAgICAKICAgICQuanFwbG90LnByZUluaXRIb29rcy5wdXNoKHByZUluaXQpOwogICAgCiAgICAkLmpxcGxvdC5Eb251dFRpY2tSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkF4aXNUaWNrUmVuZGVyZXIuY2FsbCh0aGlzKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkRvbnV0VGlja1JlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyKCk7CiAgICAkLmpxcGxvdC5Eb251dFRpY2tSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5Eb251dFRpY2tSZW5kZXJlcjsKICAgIAp9KShqUXVlcnkpOwogICAgCiAgICA=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.donutRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGUpe2UuanFwbG90LkRvbnV0UmVuZGVyZXI9ZnVuY3Rpb24oKXtlLmpxcGxvdC5MaW5lUmVuZGVyZXIuY2FsbCh0aGlzKX07ZS5qcXBsb3QuRG9udXRSZW5kZXJlci5wcm90b3R5cGU9bmV3IGUuanFwbG90LkxpbmVSZW5kZXJlcigpO2UuanFwbG90LkRvbnV0UmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUuanFwbG90LkRvbnV0UmVuZGVyZXI7ZS5qcXBsb3QuRG9udXRSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihwLHQpe3RoaXMuZGlhbWV0ZXI9bnVsbDt0aGlzLmlubmVyRGlhbWV0ZXI9bnVsbDt0aGlzLnRoaWNrbmVzcz1udWxsO3RoaXMucGFkZGluZz0yMDt0aGlzLnNsaWNlTWFyZ2luPTA7dGhpcy5yaW5nTWFyZ2luPW51bGw7dGhpcy5maWxsPXRydWU7dGhpcy5zaGFkb3dPZmZzZXQ9Mjt0aGlzLnNoYWRvd0FscGhhPTAuMDc7dGhpcy5zaGFkb3dEZXB0aD01O3RoaXMuaGlnaGxpZ2h0TW91c2VPdmVyPXRydWU7dGhpcy5oaWdobGlnaHRNb3VzZURvd249ZmFsc2U7dGhpcy5oaWdobGlnaHRDb2xvcnM9W107dGhpcy5kYXRhTGFiZWxzPSJwZXJjZW50Ijt0aGlzLnNob3dEYXRhTGFiZWxzPWZhbHNlO3RoaXMuZGF0YUxhYmVsRm9ybWF0U3RyaW5nPW51bGw7dGhpcy5kYXRhTGFiZWxUaHJlc2hvbGQ9Mzt0aGlzLmRhdGFMYWJlbFBvc2l0aW9uRmFjdG9yPTAuNDt0aGlzLmRhdGFMYWJlbE51ZGdlPTA7dGhpcy5zdGFydEFuZ2xlPTA7dGhpcy50aWNrUmVuZGVyZXI9ZS5qcXBsb3QuRG9udXRUaWNrUmVuZGVyZXI7dGhpcy5fZHJhd0RhdGE9dHJ1ZTt0aGlzLl90eXBlPSJkb251dCI7aWYocC5oaWdobGlnaHRNb3VzZURvd24mJnAuaGlnaGxpZ2h0TW91c2VPdmVyPT1udWxsKXtwLmhpZ2hsaWdodE1vdXNlT3Zlcj1mYWxzZX1lLmV4dGVuZCh0cnVlLHRoaXMscCk7aWYodGhpcy5kaWFtZXRlciE9bnVsbCl7dGhpcy5kaWFtZXRlcj10aGlzLmRpYW1ldGVyLXRoaXMuc2xpY2VNYXJnaW59dGhpcy5fZGlhbWV0ZXI9bnVsbDt0aGlzLl9pbm5lckRpYW1ldGVyPW51bGw7dGhpcy5fcmFkaXVzPW51bGw7dGhpcy5faW5uZXJSYWRpdXM9bnVsbDt0aGlzLl90aGlja25lc3M9bnVsbDt0aGlzLl9wcmV2aW91c1Nlcmllcz1bXTt0aGlzLl9udW1iZXJTZXJpZXM9MTt0aGlzLl9zbGljZUFuZ2xlcz1bXTt0aGlzLl9oaWdobGlnaHRlZFBvaW50PW51bGw7aWYodGhpcy5oaWdobGlnaHRDb2xvcnMubGVuZ3RoPT0wKXtmb3IodmFyIHI9MDtyPHRoaXMuc2VyaWVzQ29sb3JzLmxlbmd0aDtyKyspe3ZhciBxPWUuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyh0aGlzLnNlcmllc0NvbG9yc1tyXSk7dmFyIG49W3FbMF0scVsxXSxxWzJdXTt2YXIgcz1uWzBdK25bMV0rblsyXTtmb3IodmFyIG89MDtvPDM7bysrKXtuW29dPShzPjU3MCk/bltvXSowLjg6bltvXSswLjMqKDI1NS1uW29dKTtuW29dPXBhcnNlSW50KG5bb10sMTApfXRoaXMuaGlnaGxpZ2h0Q29sb3JzLnB1c2goInJnYigiK25bMF0rIiwiK25bMV0rIiwiK25bMl0rIikiKX19dC5wb3N0UGFyc2VPcHRpb25zSG9va3MuYWRkT25jZShsKTt0LnBvc3RJbml0SG9va3MuYWRkT25jZShnKTt0LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RNb3VzZU1vdmUiLGIpO3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdE1vdXNlRG93biIsYSk7dC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90TW91c2VVcCIsaik7dC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90Q2xpY2siLGYpO3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdFJpZ2h0Q2xpY2siLG0pO3QucG9zdERyYXdIb29rcy5hZGRPbmNlKGgpfTtlLmpxcGxvdC5Eb251dFJlbmRlcmVyLnByb3RvdHlwZS5zZXRHcmlkRGF0YT1mdW5jdGlvbihzKXt2YXIgbz1bXTt2YXIgdD1bXTt2YXIgbj10aGlzLnN0YXJ0QW5nbGUvMTgwKk1hdGguUEk7dmFyIHI9MDt0aGlzLl9kcmF3RGF0YT1mYWxzZTtmb3IodmFyIHE9MDtxPHRoaXMuZGF0YS5sZW5ndGg7cSsrKXtpZih0aGlzLmRhdGFbcV1bMV0hPTApe3RoaXMuX2RyYXdEYXRhPXRydWV9by5wdXNoKHRoaXMuZGF0YVtxXVsxXSk7dC5wdXNoKFt0aGlzLmRhdGFbcV1bMF1dKTtpZihxPjApe29bcV0rPW9bcS0xXX1yKz10aGlzLmRhdGFbcV1bMV19dmFyIHA9TWF0aC5QSSoyL29bby5sZW5ndGgtMV07Zm9yKHZhciBxPTA7cTxvLmxlbmd0aDtxKyspe3RbcV1bMV09b1txXSpwO3RbcV1bMl09dGhpcy5kYXRhW3FdWzFdL3J9dGhpcy5ncmlkRGF0YT10fTtlLmpxcGxvdC5Eb251dFJlbmRlcmVyLnByb3RvdHlwZS5tYWtlR3JpZERhdGE9ZnVuY3Rpb24ocyx0KXt2YXIgbz1bXTt2YXIgdT1bXTt2YXIgcj0wO3ZhciBuPXRoaXMuc3RhcnRBbmdsZS8xODAqTWF0aC5QSTt0aGlzLl9kcmF3RGF0YT1mYWxzZTtmb3IodmFyIHE9MDtxPHMubGVuZ3RoO3ErKyl7aWYodGhpcy5kYXRhW3FdWzFdIT0wKXt0aGlzLl9kcmF3RGF0YT10cnVlfW8ucHVzaChzW3FdWzFdKTt1LnB1c2goW3NbcV1bMF1dKTtpZihxPjApe29bcV0rPW9bcS0xXX1yKz1zW3FdWzFdfXZhciBwPU1hdGguUEkqMi9vW28ubGVuZ3RoLTFdO2Zvcih2YXIgcT0wO3E8by5sZW5ndGg7cSsrKXt1W3FdWzFdPW9bcV0qcDt1W3FdWzJdPXNbcV1bMV0vcn1yZXR1cm4gdX07ZS5qcXBsb3QuRG9udXRSZW5kZXJlci5wcm90b3R5cGUuZHJhd1NsaWNlPWZ1bmN0aW9uKHgsdSx0LHAscyl7dmFyIG49dGhpcy5fZGlhbWV0ZXIvMjt2YXIgdj1uLXRoaXMuX3RoaWNrbmVzczt2YXIgdz10aGlzLmZpbGw7eC5zYXZlKCk7eC50cmFuc2xhdGUodGhpcy5fY2VudGVyWzBdLHRoaXMuX2NlbnRlclsxXSk7aWYocyl7Zm9yKHZhciBxPTA7cTx0aGlzLnNoYWRvd0RlcHRoO3ErKyl7eC5zYXZlKCk7eC50cmFuc2xhdGUodGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5jb3ModGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSksdGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5zaW4odGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSkpO28oKX19ZWxzZXtvKCl9ZnVuY3Rpb24gbygpe2lmKHQ+Ni4yODIrdGhpcy5zdGFydEFuZ2xlKXt0PTYuMjgyK3RoaXMuc3RhcnRBbmdsZTtpZih1PnQpe3U9Ni4yODErdGhpcy5zdGFydEFuZ2xlfX1pZih1Pj10KXtyZXR1cm59eC5iZWdpblBhdGgoKTt4LmZpbGxTdHlsZT1wO3guc3Ryb2tlU3R5bGU9cDt4LmFyYygwLDAsbix1LHQsZmFsc2UpO3gubGluZVRvKHYqTWF0aC5jb3ModCksdipNYXRoLnNpbih0KSk7eC5hcmMoMCwwLHYsdCx1LHRydWUpO3guY2xvc2VQYXRoKCk7aWYodyl7eC5maWxsKCl9ZWxzZXt4LnN0cm9rZSgpfX1pZihzKXtmb3IodmFyIHE9MDtxPHRoaXMuc2hhZG93RGVwdGg7cSsrKXt4LnJlc3RvcmUoKX19eC5yZXN0b3JlKCl9O2UuanFwbG90LkRvbnV0UmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oTixWLHQsUCl7dmFyIFE7dmFyIEo9KHQhPXVuZGVmaW5lZCk/dDp7fTt2YXIgcT0wO3ZhciBwPTA7dmFyIHU9MTtpZih0LmxlZ2VuZEluZm8mJnQubGVnZW5kSW5mby5wbGFjZW1lbnQ9PSJpbnNpZGVHcmlkIil7dmFyIEk9dC5sZWdlbmRJbmZvO3N3aXRjaChJLmxvY2F0aW9uKXtjYXNlIm53IjpxPUkud2lkdGgrSS54b2Zmc2V0O2JyZWFrO2Nhc2UidyI6cT1JLndpZHRoK0kueG9mZnNldDticmVhaztjYXNlInN3IjpxPUkud2lkdGgrSS54b2Zmc2V0O2JyZWFrO2Nhc2UibmUiOnE9SS53aWR0aCtJLnhvZmZzZXQ7dT0tMTticmVhaztjYXNlImUiOnE9SS53aWR0aCtJLnhvZmZzZXQ7dT0tMTticmVhaztjYXNlInNlIjpxPUkud2lkdGgrSS54b2Zmc2V0O3U9LTE7YnJlYWs7Y2FzZSJuIjpwPUkuaGVpZ2h0K0kueW9mZnNldDticmVhaztjYXNlInMiOnA9SS5oZWlnaHQrSS55b2Zmc2V0O3U9LTE7YnJlYWs7ZGVmYXVsdDpicmVha319dmFyIEI9KEouc2hhZG93IT11bmRlZmluZWQpP0ouc2hhZG93OnRoaXMuc2hhZG93O3ZhciBXPShKLnNob3dMaW5lIT11bmRlZmluZWQpP0ouc2hvd0xpbmU6dGhpcy5zaG93TGluZTt2YXIgTz0oSi5maWxsIT11bmRlZmluZWQpP0ouZmlsbDp0aGlzLmZpbGw7dmFyIHM9Ti5jYW52YXMud2lkdGg7dmFyIEg9Ti5jYW52YXMuaGVpZ2h0O3ZhciBHPXMtcS0yKnRoaXMucGFkZGluZzt2YXIgUj1ILXAtMip0aGlzLnBhZGRpbmc7dmFyIHY9TWF0aC5taW4oRyxSKTt2YXIgVD12O3ZhciBYPSh0aGlzLnJpbmdNYXJnaW49PW51bGwpP3RoaXMuc2xpY2VNYXJnaW4qMjp0aGlzLnJpbmdNYXJnaW47Zm9yKHZhciBRPTA7UTx0aGlzLl9wcmV2aW91c1Nlcmllcy5sZW5ndGg7USsrKXtULT0yKnRoaXMuX3ByZXZpb3VzU2VyaWVzW1FdLl90aGlja25lc3MrMipYfXRoaXMuX2RpYW1ldGVyPXRoaXMuZGlhbWV0ZXJ8fFQ7aWYodGhpcy5pbm5lckRpYW1ldGVyIT1udWxsKXt2YXIgTT0odGhpcy5fbnVtYmVyU2VyaWVzPjEmJnRoaXMuaW5kZXg+MCk/dGhpcy5fcHJldmlvdXNTZXJpZXNbMF0uX2RpYW1ldGVyOnRoaXMuX2RpYW1ldGVyO3RoaXMuX3RoaWNrbmVzcz10aGlzLnRoaWNrbmVzc3x8KE0tdGhpcy5pbm5lckRpYW1ldGVyLTIqWCp0aGlzLl9udW1iZXJTZXJpZXMpL3RoaXMuX251bWJlclNlcmllcy8yfWVsc2V7dGhpcy5fdGhpY2tuZXNzPXRoaXMudGhpY2tuZXNzfHx2LzIvKHRoaXMuX251bWJlclNlcmllcysxKSowLjg1fXZhciBLPXRoaXMuX3JhZGl1cz10aGlzLl9kaWFtZXRlci8yO3RoaXMuX2lubmVyUmFkaXVzPXRoaXMuX3JhZGl1cy10aGlzLl90aGlja25lc3M7dmFyIG89dGhpcy5zdGFydEFuZ2xlLzE4MCpNYXRoLlBJO3RoaXMuX2NlbnRlcj1bKHMtdSpxKS8yK3UqcSwoSC11KnApLzIrdSpwXTtpZih0aGlzLnNoYWRvdyl7dmFyIEw9InJnYmEoMCwwLDAsIit0aGlzLnNoYWRvd0FscGhhKyIpIjtmb3IodmFyIFE9MDtRPFYubGVuZ3RoO1ErKyl7dmFyIEE9KFE9PTApP286VltRLTFdWzFdK287QSs9dGhpcy5zbGljZU1hcmdpbi8xODAqTWF0aC5QSTt0aGlzLnJlbmRlcmVyLmRyYXdTbGljZS5jYWxsKHRoaXMsTixBLFZbUV1bMV0rbyxMLHRydWUpfX1mb3IodmFyIFE9MDtRPFYubGVuZ3RoO1ErKyl7dmFyIEE9KFE9PTApP286VltRLTFdWzFdK287QSs9dGhpcy5zbGljZU1hcmdpbi8xODAqTWF0aC5QSTt2YXIgej1WW1FdWzFdK287dGhpcy5fc2xpY2VBbmdsZXMucHVzaChbQSx6XSk7dGhpcy5yZW5kZXJlci5kcmF3U2xpY2UuY2FsbCh0aGlzLE4sQSx6LHRoaXMuc2VyaWVzQ29sb3JzW1FdLGZhbHNlKTtpZih0aGlzLnNob3dEYXRhTGFiZWxzJiZWW1FdWzJdKjEwMD49dGhpcy5kYXRhTGFiZWxUaHJlc2hvbGQpe3ZhciBTLFU9KEEreikvMixDO2lmKHRoaXMuZGF0YUxhYmVscz09ImxhYmVsIil7Uz10aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZ3x8IiVzIjtDPWUuanFwbG90LnNwcmludGYoUyxWW1FdWzBdKX1lbHNle2lmKHRoaXMuZGF0YUxhYmVscz09InZhbHVlIil7Uz10aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZ3x8IiVkIjtDPWUuanFwbG90LnNwcmludGYoUyx0aGlzLmRhdGFbUV1bMV0pfWVsc2V7aWYodGhpcy5kYXRhTGFiZWxzPT0icGVyY2VudCIpe1M9dGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmd8fCIlZCUlIjtDPWUuanFwbG90LnNwcmludGYoUyxWW1FdWzJdKjEwMCl9ZWxzZXtpZih0aGlzLmRhdGFMYWJlbHMuY29uc3RydWN0b3I9PUFycmF5KXtTPXRoaXMuZGF0YUxhYmVsRm9ybWF0U3RyaW5nfHwiJXMiO0M9ZS5qcXBsb3Quc3ByaW50ZihTLHRoaXMuZGF0YUxhYmVsc1tRXSl9fX19dmFyIG49dGhpcy5faW5uZXJSYWRpdXMrdGhpcy5fdGhpY2tuZXNzKnRoaXMuZGF0YUxhYmVsUG9zaXRpb25GYWN0b3IrdGhpcy5zbGljZU1hcmdpbit0aGlzLmRhdGFMYWJlbE51ZGdlO3ZhciBGPXRoaXMuX2NlbnRlclswXStNYXRoLmNvcyhVKSpuK3RoaXMuY2FudmFzLl9vZmZzZXRzLmxlZnQ7dmFyIEU9dGhpcy5fY2VudGVyWzFdK01hdGguc2luKFUpKm4rdGhpcy5jYW52YXMuX29mZnNldHMudG9wO3ZhciBEPWUoJzxzcGFuIGNsYXNzPSJqcXBsb3QtZG9udXQtc2VyaWVzIGpxcGxvdC1kYXRhLWxhYmVsIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7Ij4nK0MrIjwvc3Bhbj4iKS5pbnNlcnRCZWZvcmUoUC5ldmVudENhbnZhcy5fZWxlbSk7Ri09RC53aWR0aCgpLzI7RS09RC5oZWlnaHQoKS8yO0Y9TWF0aC5yb3VuZChGKTtFPU1hdGgucm91bmQoRSk7RC5jc3Moe2xlZnQ6Rix0b3A6RX0pfX19O2UuanFwbG90LkRvbnV0QXhpc1JlbmRlcmVyPWZ1bmN0aW9uKCl7ZS5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyLmNhbGwodGhpcyl9O2UuanFwbG90LkRvbnV0QXhpc1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgZS5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7ZS5qcXBsb3QuRG9udXRBeGlzUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUuanFwbG90LkRvbnV0QXhpc1JlbmRlcmVyO2UuanFwbG90LkRvbnV0QXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKG4pe3RoaXMudGlja1JlbmRlcmVyPWUuanFwbG90LkRvbnV0VGlja1JlbmRlcmVyO2UuZXh0ZW5kKHRydWUsdGhpcyxuKTt0aGlzLl9kYXRhQm91bmRzPXttaW46MCxtYXg6MTAwfTt0aGlzLm1pbj0wO3RoaXMubWF4PTEwMDt0aGlzLnNob3dUaWNrcz1mYWxzZTt0aGlzLnRpY2tzPVtdO3RoaXMuc2hvd01hcms9ZmFsc2U7dGhpcy5zaG93PWZhbHNlfTtlLmpxcGxvdC5Eb251dExlZ2VuZFJlbmRlcmVyPWZ1bmN0aW9uKCl7ZS5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlci5jYWxsKHRoaXMpfTtlLmpxcGxvdC5Eb251dExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZT1uZXcgZS5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlcigpO2UuanFwbG90LkRvbnV0TGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUuanFwbG90LkRvbnV0TGVnZW5kUmVuZGVyZXI7ZS5qcXBsb3QuRG9udXRMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihuKXt0aGlzLm51bWJlclJvd3M9bnVsbDt0aGlzLm51bWJlckNvbHVtbnM9bnVsbDtlLmV4dGVuZCh0cnVlLHRoaXMsbil9O2UuanFwbG90LkRvbnV0TGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oKXt2YXIgcT10aGlzO2lmKHRoaXMuc2hvdyl7dmFyIHk9dGhpcy5fc2VyaWVzO3ZhciBCPSJwb3NpdGlvbjphYnNvbHV0ZTsiO0IrPSh0aGlzLmJhY2tncm91bmQpPyJiYWNrZ3JvdW5kOiIrdGhpcy5iYWNrZ3JvdW5kKyI7IjoiIjtCKz0odGhpcy5ib3JkZXIpPyJib3JkZXI6Iit0aGlzLmJvcmRlcisiOyI6IiI7Qis9KHRoaXMuZm9udFNpemUpPyJmb250LXNpemU6Iit0aGlzLmZvbnRTaXplKyI7IjoiIjtCKz0odGhpcy5mb250RmFtaWx5KT8iZm9udC1mYW1pbHk6Iit0aGlzLmZvbnRGYW1pbHkrIjsiOiIiO0IrPSh0aGlzLnRleHRDb2xvcik/ImNvbG9yOiIrdGhpcy50ZXh0Q29sb3IrIjsiOiIiO0IrPSh0aGlzLm1hcmdpblRvcCE9bnVsbCk/Im1hcmdpbi10b3A6Iit0aGlzLm1hcmdpblRvcCsiOyI6IiI7Qis9KHRoaXMubWFyZ2luQm90dG9tIT1udWxsKT8ibWFyZ2luLWJvdHRvbToiK3RoaXMubWFyZ2luQm90dG9tKyI7IjoiIjtCKz0odGhpcy5tYXJnaW5MZWZ0IT1udWxsKT8ibWFyZ2luLWxlZnQ6Iit0aGlzLm1hcmdpbkxlZnQrIjsiOiIiO0IrPSh0aGlzLm1hcmdpblJpZ2h0IT1udWxsKT8ibWFyZ2luLXJpZ2h0OiIrdGhpcy5tYXJnaW5SaWdodCsiOyI6IiI7dGhpcy5fZWxlbT1lKCc8dGFibGUgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSInK0IrJyI+PC90YWJsZT4nKTt2YXIgRj1mYWxzZSx4PWZhbHNlLG4sdjt2YXIgej15WzBdO3ZhciBvPW5ldyBlLmpxcGxvdC5Db2xvckdlbmVyYXRvcih6LnNlcmllc0NvbG9ycyk7aWYoei5zaG93KXt2YXIgRz16LmRhdGE7aWYodGhpcy5udW1iZXJSb3dzKXtuPXRoaXMubnVtYmVyUm93cztpZighdGhpcy5udW1iZXJDb2x1bW5zKXt2PU1hdGguY2VpbChHLmxlbmd0aC9uKX1lbHNle3Y9dGhpcy5udW1iZXJDb2x1bW5zfX1lbHNle2lmKHRoaXMubnVtYmVyQ29sdW1ucyl7dj10aGlzLm51bWJlckNvbHVtbnM7bj1NYXRoLmNlaWwoRy5sZW5ndGgvdGhpcy5udW1iZXJDb2x1bW5zKX1lbHNle249Ry5sZW5ndGg7dj0xfX12YXIgRSxELHAsdCxyLHUsdyxDO3ZhciBBPTA7Zm9yKEU9MDtFPG47RSsrKXtpZih4KXtwPWUoJzx0ciBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCI+PC90cj4nKS5wcmVwZW5kVG8odGhpcy5fZWxlbSl9ZWxzZXtwPWUoJzx0ciBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCI+PC90cj4nKS5hcHBlbmRUbyh0aGlzLl9lbGVtKX1mb3IoRD0wO0Q8djtEKyspe2lmKEE8Ry5sZW5ndGgpe3U9dGhpcy5sYWJlbHNbQV18fEdbQV1bMF0udG9TdHJpbmcoKTtDPW8ubmV4dCgpO2lmKCF4KXtpZihFPjApe0Y9dHJ1ZX1lbHNle0Y9ZmFsc2V9fWVsc2V7aWYoRT09bi0xKXtGPWZhbHNlfWVsc2V7Rj10cnVlfX13PShGKT90aGlzLnJvd1NwYWNpbmc6IjAiO3Q9ZSgnPHRkIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6Jyt3Kyc7Ij48ZGl2PjxkaXYgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQtc3dhdGNoIiBzdHlsZT0iYm9yZGVyLWNvbG9yOicrQysnOyI+PC9kaXY+PC9kaXY+PC90ZD4nKTtyPWUoJzx0ZCBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9InBhZGRpbmctdG9wOicrdysnOyI+PC90ZD4nKTtpZih0aGlzLmVzY2FwZUh0bWwpe3IudGV4dCh1KX1lbHNle3IuaHRtbCh1KX1pZih4KXtyLnByZXBlbmRUbyhwKTt0LnByZXBlbmRUbyhwKX1lbHNle3QuYXBwZW5kVG8ocCk7ci5hcHBlbmRUbyhwKX1GPXRydWV9QSsrfX19fXJldHVybiB0aGlzLl9lbGVtfTtmdW5jdGlvbiBjKHIscSxvKXtvPW98fHt9O28uYXhlc0RlZmF1bHRzPW8uYXhlc0RlZmF1bHRzfHx7fTtvLmxlZ2VuZD1vLmxlZ2VuZHx8e307by5zZXJpZXNEZWZhdWx0cz1vLnNlcmllc0RlZmF1bHRzfHx7fTt2YXIgbj1mYWxzZTtpZihvLnNlcmllc0RlZmF1bHRzLnJlbmRlcmVyPT1lLmpxcGxvdC5Eb251dFJlbmRlcmVyKXtuPXRydWV9ZWxzZXtpZihvLnNlcmllcyl7Zm9yKHZhciBwPTA7cDxvLnNlcmllcy5sZW5ndGg7cCsrKXtpZihvLnNlcmllc1twXS5yZW5kZXJlcj09ZS5qcXBsb3QuRG9udXRSZW5kZXJlcil7bj10cnVlfX19fWlmKG4pe28uYXhlc0RlZmF1bHRzLnJlbmRlcmVyPWUuanFwbG90LkRvbnV0QXhpc1JlbmRlcmVyO28ubGVnZW5kLnJlbmRlcmVyPWUuanFwbG90LkRvbnV0TGVnZW5kUmVuZGVyZXI7by5sZWdlbmQucHJlRHJhdz10cnVlO28uc2VyaWVzRGVmYXVsdHMucG9pbnRMYWJlbHM9e3Nob3c6ZmFsc2V9fX1mdW5jdGlvbiBnKHIscSxvKXtmb3IodmFyIHA9MTtwPHRoaXMuc2VyaWVzLmxlbmd0aDtwKyspe2lmKCF0aGlzLnNlcmllc1twXS5fcHJldmlvdXNTZXJpZXMubGVuZ3RoKXtmb3IodmFyIG49MDtuPHA7bisrKXtpZih0aGlzLnNlcmllc1twXS5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09ZS5qcXBsb3QuRG9udXRSZW5kZXJlciYmdGhpcy5zZXJpZXNbbl0ucmVuZGVyZXIuY29uc3RydWN0b3I9PWUuanFwbG90LkRvbnV0UmVuZGVyZXIpe3RoaXMuc2VyaWVzW3BdLl9wcmV2aW91c1Nlcmllcy5wdXNoKHRoaXMuc2VyaWVzW25dKX19fX1mb3IocD0wO3A8dGhpcy5zZXJpZXMubGVuZ3RoO3ArKyl7aWYodGhpcy5zZXJpZXNbcF0ucmVuZGVyZXIuY29uc3RydWN0b3I9PWUuanFwbG90LkRvbnV0UmVuZGVyZXIpe3RoaXMuc2VyaWVzW3BdLl9udW1iZXJTZXJpZXM9dGhpcy5zZXJpZXMubGVuZ3RoO2lmKHRoaXMuc2VyaWVzW3BdLmhpZ2hsaWdodE1vdXNlT3Zlcil7dGhpcy5zZXJpZXNbcF0uaGlnaGxpZ2h0TW91c2VEb3duPWZhbHNlfX19fXZhciBrPWZhbHNlO2Z1bmN0aW9uIGwobil7Zm9yKHZhciBvPTA7bzx0aGlzLnNlcmllcy5sZW5ndGg7bysrKXt0aGlzLnNlcmllc1tvXS5zZXJpZXNDb2xvcnM9dGhpcy5zZXJpZXNDb2xvcnM7dGhpcy5zZXJpZXNbb10uY29sb3JHZW5lcmF0b3I9ZS5qcXBsb3QuY29sb3JHZW5lcmF0b3J9fWZ1bmN0aW9uIGQocixxLHApe3ZhciBvPXIuc2VyaWVzW3FdO3ZhciBuPXIucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcztuLl9jdHguY2xlYXJSZWN0KDAsMCxuLl9jdHguY2FudmFzLndpZHRoLG4uX2N0eC5jYW52YXMuaGVpZ2h0KTtvLl9oaWdobGlnaHRlZFBvaW50PXA7ci5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleD1xO28ucmVuZGVyZXIuZHJhd1NsaWNlLmNhbGwobyxuLl9jdHgsby5fc2xpY2VBbmdsZXNbcF1bMF0sby5fc2xpY2VBbmdsZXNbcF1bMV0sby5oaWdobGlnaHRDb2xvcnNbcF0sZmFsc2UpfWZ1bmN0aW9uIGkocCl7dmFyIG49cC5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzO24uX2N0eC5jbGVhclJlY3QoMCwwLG4uX2N0eC5jYW52YXMud2lkdGgsbi5fY3R4LmNhbnZhcy5oZWlnaHQpO2Zvcih2YXIgbz0wO288cC5zZXJpZXMubGVuZ3RoO28rKyl7cC5zZXJpZXNbb10uX2hpZ2hsaWdodGVkUG9pbnQ9bnVsbH1wLnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4PW51bGw7cC50YXJnZXQudHJpZ2dlcigianFwbG90RGF0YVVuaGlnaGxpZ2h0Iil9ZnVuY3Rpb24gYihyLHEsdSx0LHMpe2lmKHQpe3ZhciBwPVt0LnNlcmllc0luZGV4LHQucG9pbnRJbmRleCx0LmRhdGFdO3ZhciBvPWpRdWVyeS5FdmVudCgianFwbG90RGF0YU1vdXNlT3ZlciIpO28ucGFnZVg9ci5wYWdlWDtvLnBhZ2VZPXIucGFnZVk7cy50YXJnZXQudHJpZ2dlcihvLHApO2lmKHMuc2VyaWVzW3BbMF1dLmhpZ2hsaWdodE1vdXNlT3ZlciYmIShwWzBdPT1zLnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4JiZwWzFdPT1zLnNlcmllc1twWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpe3ZhciBuPWpRdWVyeS5FdmVudCgianFwbG90RGF0YUhpZ2hsaWdodCIpO24ud2hpY2g9ci53aGljaDtuLnBhZ2VYPXIucGFnZVg7bi5wYWdlWT1yLnBhZ2VZO3MudGFyZ2V0LnRyaWdnZXIobixwKTtkKHMscFswXSxwWzFdKX19ZWxzZXtpZih0PT1udWxsKXtpKHMpfX19ZnVuY3Rpb24gYShxLHAsdCxzLHIpe2lmKHMpe3ZhciBvPVtzLnNlcmllc0luZGV4LHMucG9pbnRJbmRleCxzLmRhdGFdO2lmKHIuc2VyaWVzW29bMF1dLmhpZ2hsaWdodE1vdXNlRG93biYmIShvWzBdPT1yLnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4JiZvWzFdPT1yLnNlcmllc1tvWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpe3ZhciBuPWpRdWVyeS5FdmVudCgianFwbG90RGF0YUhpZ2hsaWdodCIpO24ud2hpY2g9cS53aGljaDtuLnBhZ2VYPXEucGFnZVg7bi5wYWdlWT1xLnBhZ2VZO3IudGFyZ2V0LnRyaWdnZXIobixvKTtkKHIsb1swXSxvWzFdKX19ZWxzZXtpZihzPT1udWxsKXtpKHIpfX19ZnVuY3Rpb24gaihwLG8scyxyLHEpe3ZhciBuPXEucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg7aWYobiE9bnVsbCYmcS5zZXJpZXNbbl0uaGlnaGxpZ2h0TW91c2VEb3duKXtpKHEpfX1mdW5jdGlvbiBmKHEscCx0LHMscil7aWYocyl7dmFyIG89W3Muc2VyaWVzSW5kZXgscy5wb2ludEluZGV4LHMuZGF0YV07dmFyIG49alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhQ2xpY2siKTtuLndoaWNoPXEud2hpY2g7bi5wYWdlWD1xLnBhZ2VYO24ucGFnZVk9cS5wYWdlWTtyLnRhcmdldC50cmlnZ2VyKG4sbyl9fWZ1bmN0aW9uIG0ocixxLHUsdCxzKXtpZih0KXt2YXIgcD1bdC5zZXJpZXNJbmRleCx0LnBvaW50SW5kZXgsdC5kYXRhXTt2YXIgbj1zLnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4O2lmKG4hPW51bGwmJnMuc2VyaWVzW25dLmhpZ2hsaWdodE1vdXNlRG93bil7aShzKX12YXIgbz1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFSaWdodENsaWNrIik7by53aGljaD1yLndoaWNoO28ucGFnZVg9ci5wYWdlWDtvLnBhZ2VZPXIucGFnZVk7cy50YXJnZXQudHJpZ2dlcihvLHApfX1mdW5jdGlvbiBoKCl7aWYodGhpcy5wbHVnaW5zLmRvbnV0UmVuZGVyZXImJnRoaXMucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcyl7dGhpcy5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnJlc2V0Q2FudmFzKCk7dGhpcy5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzPW51bGx9dGhpcy5wbHVnaW5zLmRvbnV0UmVuZGVyZXI9e2hpZ2hsaWdodGVkU2VyaWVzSW5kZXg6bnVsbH07dGhpcy5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzPW5ldyBlLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7dmFyIG89ZSh0aGlzLnRhcmdldElkKyIgLmpxcGxvdC1kYXRhLWxhYmVsIik7aWYoby5sZW5ndGgpe2Uob1swXSkuYmVmb3JlKHRoaXMucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCJqcXBsb3QtZG9udXRSZW5kZXJlci1oaWdobGlnaHQtY2FudmFzIix0aGlzLl9wbG90RGltZW5zaW9ucyx0aGlzKSl9ZWxzZXt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZSh0aGlzLnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywianFwbG90LWRvbnV0UmVuZGVyZXItaGlnaGxpZ2h0LWNhbnZhcyIsdGhpcy5fcGxvdERpbWVuc2lvbnMsdGhpcykpfXZhciBuPXRoaXMucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5zZXRDb250ZXh0KCk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCJtb3VzZWxlYXZlIix7cGxvdDp0aGlzfSxmdW5jdGlvbihwKXtpKHAuZGF0YS5wbG90KX0pfWUuanFwbG90LnByZUluaXRIb29rcy5wdXNoKGMpO2UuanFwbG90LkRvbnV0VGlja1JlbmRlcmVyPWZ1bmN0aW9uKCl7ZS5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlci5jYWxsKHRoaXMpfTtlLmpxcGxvdC5Eb251dFRpY2tSZW5kZXJlci5wcm90b3R5cGU9bmV3IGUuanFwbG90LkF4aXNUaWNrUmVuZGVyZXIoKTtlLmpxcGxvdC5Eb251dFRpY2tSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9ZS5qcXBsb3QuRG9udXRUaWNrUmVuZGVyZXJ9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.dragable.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgCiAgICAvKioKICAgICAqIENsYXNzOiAkLmpxcGxvdC5EcmFnYWJsZQogICAgICogUGx1Z2luIHRvIG1ha2UgcGxvdHRlZCBwb2ludHMgZHJhZ2FibGUgYnkgdGhlIHVzZXIuCiAgICAgKi8KICAgICQuanFwbG90LkRyYWdhYmxlID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgIC8vIEdyb3VwOiBQcm9wZXJ0aWVzCiAgICAgICAgdGhpcy5tYXJrZXJSZW5kZXJlciA9IG5ldyAkLmpxcGxvdC5NYXJrZXJSZW5kZXJlcih7c2hhZG93OmZhbHNlfSk7CiAgICAgICAgdGhpcy5zaGFwZVJlbmRlcmVyID0gbmV3ICQuanFwbG90LlNoYXBlUmVuZGVyZXIoKTsKICAgICAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTsKICAgICAgICB0aGlzLmlzT3ZlciA9IGZhbHNlOwogICAgICAgIHRoaXMuX2N0eDsKICAgICAgICB0aGlzLl9lbGVtOwogICAgICAgIHRoaXMuX3BvaW50OwogICAgICAgIHRoaXMuX2dyaWREYXRhOwogICAgICAgIC8vIHByb3A6IGNvbG9yCiAgICAgICAgLy8gQ1NTIGNvbG9yIHNwZWMgZm9yIHRoZSBkcmFnZ2VkIHBvaW50IChhbmQgYWRqYWNlbnQgbGluZSBzZWdtZW50IG9yIGJhcikuCiAgICAgICAgdGhpcy5jb2xvcjsKICAgICAgICAvLyBwcm9wOiBjb25zdHJhaW5UbwogICAgICAgIC8vIENvbnN0cmFpbiBkcmFnZ2luZyBtb3Rpb24gdG8gYW4gYXhpcyBvciB0byBub25lLgogICAgICAgIC8vIEFsbG93YWJsZSB2YWx1ZXMgYXJlICdub25lJywgJ3gnLCAneScKICAgICAgICB0aGlzLmNvbnN0cmFpblRvID0gJ25vbmUnOyAgLy8gJ3gnLCAneScsIG9yICdub25lJzsKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgIH07CiAgICAKICAgIGZ1bmN0aW9uIERyYWdDYW52YXMoKSB7CiAgICAgICAgJC5qcXBsb3QuR2VuZXJpY0NhbnZhcy5jYWxsKHRoaXMpOwogICAgICAgIHRoaXMuaXNEcmFnZ2luZyA9IGZhbHNlOwogICAgICAgIHRoaXMuaXNPdmVyID0gZmFsc2U7CiAgICAgICAgdGhpcy5fbmVpZ2hib3I7CiAgICAgICAgdGhpcy5fY3Vyc29ycyA9IFtdOwogICAgfQogICAgCiAgICBEcmFnQ2FudmFzLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7CiAgICBEcmFnQ2FudmFzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IERyYWdDYW52YXM7CiAgICAKICAgIAogICAgLy8gY2FsbGVkIHdpdGhpbiBzY29wZSBvZiBzZXJpZXMKICAgICQuanFwbG90LkRyYWdhYmxlLnBhcnNlT3B0aW9ucyA9IGZ1bmN0aW9uIChkZWZhdWx0cywgb3B0cykgewogICAgICAgIHZhciBvcHRpb25zID0gb3B0cyB8fCB7fTsKICAgICAgICB0aGlzLnBsdWdpbnMuZHJhZ2FibGUgPSBuZXcgJC5qcXBsb3QuRHJhZ2FibGUob3B0aW9ucy5kcmFnYWJsZSk7CiAgICAgICAgLy8gc2luY2UgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb3JlIHNlcmllcyBvcHRpb25zIGFyZSBwYXJzZWQsCiAgICAgICAgLy8gd2UgY2FuIHNldCB0aGlzIGhlcmUgYW5kIGl0IHdpbGwgYmUgb3ZlcnJpZGRlbiBpZiBuZWVkZWQuCiAgICAgICAgdGhpcy5pc0RyYWdhYmxlID0gJC5qcXBsb3QuY29uZmlnLmVuYWJsZVBsdWdpbnM7CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aGluIGNvbnRleHQgb2YgcGxvdAogICAgLy8gY3JlYXRlIGEgY2FudmFzIHdoaWNoIHdlIGNhbiBkcmF3IG9uLgogICAgLy8gaW5zZXJ0IGl0IGJlZm9yZSB0aGUgZXZlbnRDYW52YXMsIHNvIGV2ZW50Q2FudmFzIHdpbGwgc3RpbGwgY2FwdHVyZSBldmVudHMuCiAgICAvLyBhZGQgYSBuZXcgRHJhZ0NhbnZhcyBvYmplY3QgdG8gdGhlIHBsb3QgcGx1Z2lucyB0byBoYW5kbGUgZHJhd2luZyBvbiB0aGlzIG5ldyBjYW52YXMuCiAgICAkLmpxcGxvdC5EcmFnYWJsZS5wb3N0UGxvdERyYXcgPSBmdW5jdGlvbigpIHsKICAgICAgICAvLyBNZW1vcnkgTGVha3MgcGF0Y2ggICAgCiAgICAgICAgaWYgKHRoaXMucGx1Z2lucy5kcmFnYWJsZSAmJiB0aGlzLnBsdWdpbnMuZHJhZ2FibGUuaGlnaGxpZ2h0Q2FudmFzKSB7CiAgICAgICAgICAgIHRoaXMucGx1Z2lucy5kcmFnYWJsZS5oaWdobGlnaHRDYW52YXMucmVzZXRDYW52YXMoKTsKICAgICAgICAgICAgdGhpcy5wbHVnaW5zLmRyYWdhYmxlLmhpZ2hsaWdodENhbnZhcyA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICB0aGlzLnBsdWdpbnMuZHJhZ2FibGUgPSB7cHJldmlvdXNDdXJzb3I6J2F1dG8nLCBpc092ZXI6ZmFsc2V9OwogICAgICAgIHRoaXMucGx1Z2lucy5kcmFnYWJsZS5kcmFnQ2FudmFzID0gbmV3IERyYWdDYW52YXMoKTsKICAgICAgICAKICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZSh0aGlzLnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCAnanFwbG90LWRyYWdhYmxlLWNhbnZhcycsIHRoaXMuX3Bsb3REaW1lbnNpb25zLCB0aGlzKSk7CiAgICAgICAgdmFyIGRjdHggPSB0aGlzLnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhcy5zZXRDb250ZXh0KCk7CiAgICB9OwogICAgCiAgICAvLyQuanFwbG90LnByZUluaXRIb29rcy5wdXNoKCQuanFwbG90LkRyYWdhYmxlLmluaXQpOwogICAgJC5qcXBsb3QucHJlUGFyc2VTZXJpZXNPcHRpb25zSG9va3MucHVzaCgkLmpxcGxvdC5EcmFnYWJsZS5wYXJzZU9wdGlvbnMpOwogICAgJC5qcXBsb3QucG9zdERyYXdIb29rcy5wdXNoKCQuanFwbG90LkRyYWdhYmxlLnBvc3RQbG90RHJhdyk7CiAgICAkLmpxcGxvdC5ldmVudExpc3RlbmVySG9va3MucHVzaChbJ2pxcGxvdE1vdXNlTW92ZScsIGhhbmRsZU1vdmVdKTsKICAgICQuanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsnanFwbG90TW91c2VEb3duJywgaGFuZGxlRG93bl0pOwogICAgJC5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLnB1c2goWydqcXBsb3RNb3VzZVVwJywgaGFuZGxlVXBdKTsKCiAgICAKICAgIGZ1bmN0aW9uIGluaXREcmFnUG9pbnQocGxvdCwgbmVpZ2hib3IpIHsKICAgICAgICB2YXIgcyA9IHBsb3Quc2VyaWVzW25laWdoYm9yLnNlcmllc0luZGV4XTsKICAgICAgICB2YXIgZHJhZyA9IHMucGx1Z2lucy5kcmFnYWJsZTsKICAgICAgICAKICAgICAgICAvLyBmaXJzdCwgaW5pdCB0aGUgbWFyayByZW5kZXJlciBmb3IgdGhlIGRyYWdnZWQgcG9pbnQKICAgICAgICB2YXIgc21yID0gcy5tYXJrZXJSZW5kZXJlcjsKICAgICAgICB2YXIgbXIgPSBkcmFnLm1hcmtlclJlbmRlcmVyOwogICAgICAgIG1yLnN0eWxlID0gc21yLnN0eWxlOwogICAgICAgIG1yLmxpbmVXaWR0aCA9IHNtci5saW5lV2lkdGggKyAyLjU7CiAgICAgICAgbXIuc2l6ZSA9IHNtci5zaXplICsgNTsKICAgICAgICBpZiAoIWRyYWcuY29sb3IpIHsKICAgICAgICAgICAgdmFyIHJnYmEgPSAkLmpxcGxvdC5nZXRDb2xvckNvbXBvbmVudHMoc21yLmNvbG9yKTsKICAgICAgICAgICAgdmFyIG5ld3JnYiA9IFtyZ2JhWzBdLCByZ2JhWzFdLCByZ2JhWzJdXTsKICAgICAgICAgICAgdmFyIGFscGhhID0gKHJnYmFbM10gPj0gMC42KSA/IHJnYmFbM10qMC42IDogcmdiYVszXSooMi1yZ2JhWzNdKTsKICAgICAgICAgICAgZHJhZy5jb2xvciA9ICdyZ2JhKCcrbmV3cmdiWzBdKycsJytuZXdyZ2JbMV0rJywnK25ld3JnYlsyXSsnLCcrYWxwaGErJyknOwogICAgICAgIH0KICAgICAgICBtci5jb2xvciA9IGRyYWcuY29sb3I7CiAgICAgICAgbXIuaW5pdCgpOwoKICAgICAgICB2YXIgc3RhcnQgPSAobmVpZ2hib3IucG9pbnRJbmRleCA+IDApID8gbmVpZ2hib3IucG9pbnRJbmRleCAtIDEgOiAwOwogICAgICAgIHZhciBlbmQgPSBuZWlnaGJvci5wb2ludEluZGV4KzI7CiAgICAgICAgZHJhZy5fZ3JpZERhdGEgPSBzLmdyaWREYXRhLnNsaWNlKHN0YXJ0LCBlbmQpOwogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVNb3ZlKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIGlmIChwbG90LnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhcy5pc0RyYWdnaW5nKSB7CiAgICAgICAgICAgIHZhciBkYyA9IHBsb3QucGx1Z2lucy5kcmFnYWJsZS5kcmFnQ2FudmFzOwogICAgICAgICAgICB2YXIgZHAgPSBkYy5fbmVpZ2hib3I7CiAgICAgICAgICAgIHZhciBzID0gcGxvdC5zZXJpZXNbZHAuc2VyaWVzSW5kZXhdOwogICAgICAgICAgICB2YXIgZHJhZyA9IHMucGx1Z2lucy5kcmFnYWJsZTsKICAgICAgICAgICAgdmFyIGdkID0gcy5ncmlkRGF0YTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIGNvbXB1dGUgdGhlIG5ldyBncmlkIHBvc2l0aW9uIHdpdGggYW55IGNvbnN0cmFpbnRzLgogICAgICAgICAgICB2YXIgeCA9IChkcmFnLmNvbnN0cmFpblRvID09ICd5JykgPyBkcC5ncmlkRGF0YVswXSA6IGdyaWRwb3MueDsKICAgICAgICAgICAgdmFyIHkgPSAoZHJhZy5jb25zdHJhaW5UbyA9PSAneCcpID8gZHAuZ3JpZERhdGFbMV0gOiBncmlkcG9zLnk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBjb21wdXRlIGRhdGEgdmFsdWVzIGZvciBhbnkgbGlzdGVuZXJzLgogICAgICAgICAgICB2YXIgeHUgPSBzLl94YXhpcy5zZXJpZXNfcDJ1KHgpOwogICAgICAgICAgICB2YXIgeXUgPSBzLl95YXhpcy5zZXJpZXNfcDJ1KHkpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gY2xlYXIgdGhlIGNhbnZhcyB0aGVuIHJlZHJhdyBlZmZlY3QgYXQgbmV3IHBvc2l0aW9uLgogICAgICAgICAgICB2YXIgY3R4ID0gZGMuX2N0eDsKICAgICAgICAgICAgY3R4LmNsZWFyUmVjdCgwLCAwLCBjdHguY2FudmFzLndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBhZGp1c3Qgb3VyIGdyaWREYXRhIGZvciB0aGUgbmV3IG1vdXNlIHBvc2l0aW9uCiAgICAgICAgICAgIGlmIChkcC5wb2ludEluZGV4ID4gMCkgewogICAgICAgICAgICAgICAgZHJhZy5fZ3JpZERhdGFbMV0gPSBbeCwgeV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBkcmFnLl9ncmlkRGF0YVswXSA9IFt4LCB5XTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwbG90LnNlcmllc1tkcC5zZXJpZXNJbmRleF0uZHJhdyhkYy5fY3R4LCB7Z3JpZERhdGE6ZHJhZy5fZ3JpZERhdGEsIHNoYWRvdzpmYWxzZSwgcHJldmVudEpxUGxvdFNlcmllc0RyYXdUcmlnZ2VyOnRydWUsIGNvbG9yOmRyYWcuY29sb3IsIG1hcmtlck9wdGlvbnM6e2NvbG9yOmRyYWcuY29sb3IsIHNoYWRvdzpmYWxzZX0sIHRyZW5kbGluZTp7c2hvdzpmYWxzZX19KTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcignanFwbG90U2VyaWVzUG9pbnRDaGFuZ2UnLCBbZHAuc2VyaWVzSW5kZXgsIGRwLnBvaW50SW5kZXgsIFt4dSx5dV0sIFt4LHldXSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG5laWdoYm9yICE9IG51bGwpIHsKICAgICAgICAgICAgdmFyIHNlcmllcyA9IHBsb3Quc2VyaWVzW25laWdoYm9yLnNlcmllc0luZGV4XTsKICAgICAgICAgICAgaWYgKHNlcmllcy5pc0RyYWdhYmxlKSB7CiAgICAgICAgICAgICAgICB2YXIgZGMgPSBwbG90LnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhczsKICAgICAgICAgICAgICAgIGlmICghZGMuaXNPdmVyKSB7CiAgICAgICAgICAgICAgICAgICAgZGMuX2N1cnNvcnMucHVzaChldi50YXJnZXQuc3R5bGUuY3Vyc29yKTsKICAgICAgICAgICAgICAgICAgICBldi50YXJnZXQuc3R5bGUuY3Vyc29yID0gInBvaW50ZXIiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGMuaXNPdmVyID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChuZWlnaGJvciA9PSBudWxsKSB7CiAgICAgICAgICAgIHZhciBkYyA9IHBsb3QucGx1Z2lucy5kcmFnYWJsZS5kcmFnQ2FudmFzOwogICAgICAgICAgICBpZiAoZGMuaXNPdmVyKSB7CiAgICAgICAgICAgICAgICBldi50YXJnZXQuc3R5bGUuY3Vyc29yID0gZGMuX2N1cnNvcnMucG9wKCk7CiAgICAgICAgICAgICAgICBkYy5pc092ZXIgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgZnVuY3Rpb24gaGFuZGxlRG93bihldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICB2YXIgZGMgPSBwbG90LnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhczsKICAgICAgICBkYy5fY3Vyc29ycy5wdXNoKGV2LnRhcmdldC5zdHlsZS5jdXJzb3IpOwogICAgICAgIGlmIChuZWlnaGJvciAhPSBudWxsKSB7CiAgICAgICAgICAgIHZhciBzID0gcGxvdC5zZXJpZXNbbmVpZ2hib3Iuc2VyaWVzSW5kZXhdOwogICAgICAgICAgICB2YXIgZHJhZyA9IHMucGx1Z2lucy5kcmFnYWJsZTsKICAgICAgICAgICAgaWYgKHMuaXNEcmFnYWJsZSAmJiAhZGMuaXNEcmFnZ2luZykgewogICAgICAgICAgICAgICAgZGMuX25laWdoYm9yID0gbmVpZ2hib3I7CiAgICAgICAgICAgICAgICBkYy5pc0RyYWdnaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGluaXREcmFnUG9pbnQocGxvdCwgbmVpZ2hib3IpOwogICAgICAgICAgICAgICAgZHJhZy5tYXJrZXJSZW5kZXJlci5kcmF3KHMuZ3JpZERhdGFbbmVpZ2hib3IucG9pbnRJbmRleF1bMF0sIHMuZ3JpZERhdGFbbmVpZ2hib3IucG9pbnRJbmRleF1bMV0sIGRjLl9jdHgpOwogICAgICAgICAgICAgICAgZXYudGFyZ2V0LnN0eWxlLmN1cnNvciA9ICJtb3ZlIjsKICAgICAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoJ2pxcGxvdERyYWdTdGFydCcsIFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgZ3JpZHBvcywgZGF0YXBvc10pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIEp1c3QgaW4gY2FzZSBvZiBhIGhpY2t1cCwgd2UnbGwgY2xlYXIgdGhlIGRyYWcgY2FudmFzIGFuZCByZXNldC4KICAgICAgICBlbHNlIHsKICAgICAgICAgICB2YXIgY3R4ID0gZGMuX2N0eDsKICAgICAgICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIGN0eC5jYW52YXMud2lkdGgsIGN0eC5jYW52YXMuaGVpZ2h0KTsKICAgICAgICAgICBkYy5pc0RyYWdnaW5nID0gZmFsc2U7CiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVVcChldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAocGxvdC5wbHVnaW5zLmRyYWdhYmxlLmRyYWdDYW52YXMuaXNEcmFnZ2luZykgewogICAgICAgICAgICB2YXIgZGMgPSBwbG90LnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhczsKICAgICAgICAgICAgLy8gY2xlYXIgdGhlIGNhbnZhcwogICAgICAgICAgICB2YXIgY3R4ID0gZGMuX2N0eDsKICAgICAgICAgICAgY3R4LmNsZWFyUmVjdCgwLCAwLCBjdHguY2FudmFzLndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgICAgIGRjLmlzRHJhZ2dpbmcgPSBmYWxzZTsKICAgICAgICAgICAgLy8gcmVkcmF3IHRoZSBzZXJpZXMgY2FudmFzIGF0IHRoZSBuZXcgcG9pbnQuCiAgICAgICAgICAgIHZhciBkcCA9IGRjLl9uZWlnaGJvcjsKICAgICAgICAgICAgdmFyIHMgPSBwbG90LnNlcmllc1tkcC5zZXJpZXNJbmRleF07CiAgICAgICAgICAgIHZhciBkcmFnID0gcy5wbHVnaW5zLmRyYWdhYmxlOwogICAgICAgICAgICAvLyBjb21wdXRlIHRoZSBuZXcgZ3JpZCBwb3NpdGlvbiB3aXRoIGFueSBjb25zdHJhaW50cy4KICAgICAgICAgICAgdmFyIHggPSAoZHJhZy5jb25zdHJhaW5UbyA9PSAneScpID8gZHAuZGF0YVswXSA6IGRhdGFwb3Nbcy54YXhpc107CiAgICAgICAgICAgIHZhciB5ID0gKGRyYWcuY29uc3RyYWluVG8gPT0gJ3gnKSA/IGRwLmRhdGFbMV0gOiBkYXRhcG9zW3MueWF4aXNdOwogICAgICAgICAgICAvLyB2YXIgeCA9IGRhdGFwb3Nbcy54YXhpc107CiAgICAgICAgICAgIC8vIHZhciB5ID0gZGF0YXBvc1tzLnlheGlzXTsKICAgICAgICAgICAgcy5kYXRhW2RwLnBvaW50SW5kZXhdWzBdID0geDsKICAgICAgICAgICAgcy5kYXRhW2RwLnBvaW50SW5kZXhdWzFdID0geTsKICAgICAgICAgICAgcGxvdC5kcmF3U2VyaWVzKHtwcmV2ZW50SnFQbG90U2VyaWVzRHJhd1RyaWdnZXI6dHJ1ZX0sIGRwLnNlcmllc0luZGV4KTsKICAgICAgICAgICAgZGMuX25laWdoYm9yID0gbnVsbDsKICAgICAgICAgICAgZXYudGFyZ2V0LnN0eWxlLmN1cnNvciA9IGRjLl9jdXJzb3JzLnBvcCgpOwogICAgICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKCdqcXBsb3REcmFnU3RvcCcsIFtncmlkcG9zLCBkYXRhcG9zXSk7CiAgICAgICAgfQogICAgfQp9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.dragable.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGQpe2QuanFwbG90LkRyYWdhYmxlPWZ1bmN0aW9uKGcpe3RoaXMubWFya2VyUmVuZGVyZXI9bmV3IGQuanFwbG90Lk1hcmtlclJlbmRlcmVyKHtzaGFkb3c6ZmFsc2V9KTt0aGlzLnNoYXBlUmVuZGVyZXI9bmV3IGQuanFwbG90LlNoYXBlUmVuZGVyZXIoKTt0aGlzLmlzRHJhZ2dpbmc9ZmFsc2U7dGhpcy5pc092ZXI9ZmFsc2U7dGhpcy5fY3R4O3RoaXMuX2VsZW07dGhpcy5fcG9pbnQ7dGhpcy5fZ3JpZERhdGE7dGhpcy5jb2xvcjt0aGlzLmNvbnN0cmFpblRvPSJub25lIjtkLmV4dGVuZCh0cnVlLHRoaXMsZyl9O2Z1bmN0aW9uIGIoKXtkLmpxcGxvdC5HZW5lcmljQ2FudmFzLmNhbGwodGhpcyk7dGhpcy5pc0RyYWdnaW5nPWZhbHNlO3RoaXMuaXNPdmVyPWZhbHNlO3RoaXMuX25laWdoYm9yO3RoaXMuX2N1cnNvcnM9W119Yi5wcm90b3R5cGU9bmV3IGQuanFwbG90LkdlbmVyaWNDYW52YXMoKTtiLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1iO2QuanFwbG90LkRyYWdhYmxlLnBhcnNlT3B0aW9ucz1mdW5jdGlvbihpLGgpe3ZhciBnPWh8fHt9O3RoaXMucGx1Z2lucy5kcmFnYWJsZT1uZXcgZC5qcXBsb3QuRHJhZ2FibGUoZy5kcmFnYWJsZSk7dGhpcy5pc0RyYWdhYmxlPWQuanFwbG90LmNvbmZpZy5lbmFibGVQbHVnaW5zfTtkLmpxcGxvdC5EcmFnYWJsZS5wb3N0UGxvdERyYXc9ZnVuY3Rpb24oKXtpZih0aGlzLnBsdWdpbnMuZHJhZ2FibGUmJnRoaXMucGx1Z2lucy5kcmFnYWJsZS5oaWdobGlnaHRDYW52YXMpe3RoaXMucGx1Z2lucy5kcmFnYWJsZS5oaWdobGlnaHRDYW52YXMucmVzZXRDYW52YXMoKTt0aGlzLnBsdWdpbnMuZHJhZ2FibGUuaGlnaGxpZ2h0Q2FudmFzPW51bGx9dGhpcy5wbHVnaW5zLmRyYWdhYmxlPXtwcmV2aW91c0N1cnNvcjoiYXV0byIsaXNPdmVyOmZhbHNlfTt0aGlzLnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhcz1uZXcgYigpO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKHRoaXMucGx1Z2lucy5kcmFnYWJsZS5kcmFnQ2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsImpxcGxvdC1kcmFnYWJsZS1jYW52YXMiLHRoaXMuX3Bsb3REaW1lbnNpb25zLHRoaXMpKTt2YXIgZz10aGlzLnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhcy5zZXRDb250ZXh0KCl9O2QuanFwbG90LnByZVBhcnNlU2VyaWVzT3B0aW9uc0hvb2tzLnB1c2goZC5qcXBsb3QuRHJhZ2FibGUucGFyc2VPcHRpb25zKTtkLmpxcGxvdC5wb3N0RHJhd0hvb2tzLnB1c2goZC5qcXBsb3QuRHJhZ2FibGUucG9zdFBsb3REcmF3KTtkLmpxcGxvdC5ldmVudExpc3RlbmVySG9va3MucHVzaChbImpxcGxvdE1vdXNlTW92ZSIsZV0pO2QuanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsianFwbG90TW91c2VEb3duIixjXSk7ZC5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLnB1c2goWyJqcXBsb3RNb3VzZVVwIixhXSk7ZnVuY3Rpb24gZihuLHApe3ZhciBxPW4uc2VyaWVzW3Auc2VyaWVzSW5kZXhdO3ZhciBtPXEucGx1Z2lucy5kcmFnYWJsZTt2YXIgaD1xLm1hcmtlclJlbmRlcmVyO3ZhciBpPW0ubWFya2VyUmVuZGVyZXI7aS5zdHlsZT1oLnN0eWxlO2kubGluZVdpZHRoPWgubGluZVdpZHRoKzIuNTtpLnNpemU9aC5zaXplKzU7aWYoIW0uY29sb3Ipe3ZhciBsPWQuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyhoLmNvbG9yKTt2YXIgbz1bbFswXSxsWzFdLGxbMl1dO3ZhciBrPShsWzNdPj0wLjYpP2xbM10qMC42OmxbM10qKDItbFszXSk7bS5jb2xvcj0icmdiYSgiK29bMF0rIiwiK29bMV0rIiwiK29bMl0rIiwiK2srIikifWkuY29sb3I9bS5jb2xvcjtpLmluaXQoKTt2YXIgZz0ocC5wb2ludEluZGV4PjApP3AucG9pbnRJbmRleC0xOjA7dmFyIGo9cC5wb2ludEluZGV4KzI7bS5fZ3JpZERhdGE9cS5ncmlkRGF0YS5zbGljZShnLGopfWZ1bmN0aW9uIGUobyxsLGgsdCxtKXtpZihtLnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhcy5pc0RyYWdnaW5nKXt2YXIgdT1tLnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhczt2YXIgaT11Ll9uZWlnaGJvcjt2YXIgdz1tLnNlcmllc1tpLnNlcmllc0luZGV4XTt2YXIgaz13LnBsdWdpbnMuZHJhZ2FibGU7dmFyIHI9dy5ncmlkRGF0YTt2YXIgcD0oay5jb25zdHJhaW5Ubz09InkiKT9pLmdyaWREYXRhWzBdOmwueDt2YXIgbj0oay5jb25zdHJhaW5Ubz09IngiKT9pLmdyaWREYXRhWzFdOmwueTt2YXIgZz13Ll94YXhpcy5zZXJpZXNfcDJ1KHApO3ZhciBxPXcuX3lheGlzLnNlcmllc19wMnUobik7dmFyIHY9dS5fY3R4O3YuY2xlYXJSZWN0KDAsMCx2LmNhbnZhcy53aWR0aCx2LmNhbnZhcy5oZWlnaHQpO2lmKGkucG9pbnRJbmRleD4wKXtrLl9ncmlkRGF0YVsxXT1bcCxuXX1lbHNle2suX2dyaWREYXRhWzBdPVtwLG5dfW0uc2VyaWVzW2kuc2VyaWVzSW5kZXhdLmRyYXcodS5fY3R4LHtncmlkRGF0YTprLl9ncmlkRGF0YSxzaGFkb3c6ZmFsc2UscHJldmVudEpxUGxvdFNlcmllc0RyYXdUcmlnZ2VyOnRydWUsY29sb3I6ay5jb2xvcixtYXJrZXJPcHRpb25zOntjb2xvcjprLmNvbG9yLHNoYWRvdzpmYWxzZX0sdHJlbmRsaW5lOntzaG93OmZhbHNlfX0pO20udGFyZ2V0LnRyaWdnZXIoImpxcGxvdFNlcmllc1BvaW50Q2hhbmdlIixbaS5zZXJpZXNJbmRleCxpLnBvaW50SW5kZXgsW2cscV0sW3Asbl1dKX1lbHNle2lmKHQhPW51bGwpe3ZhciBqPW0uc2VyaWVzW3Quc2VyaWVzSW5kZXhdO2lmKGouaXNEcmFnYWJsZSl7dmFyIHU9bS5wbHVnaW5zLmRyYWdhYmxlLmRyYWdDYW52YXM7aWYoIXUuaXNPdmVyKXt1Ll9jdXJzb3JzLnB1c2goby50YXJnZXQuc3R5bGUuY3Vyc29yKTtvLnRhcmdldC5zdHlsZS5jdXJzb3I9InBvaW50ZXIifXUuaXNPdmVyPXRydWV9fWVsc2V7aWYodD09bnVsbCl7dmFyIHU9bS5wbHVnaW5zLmRyYWdhYmxlLmRyYWdDYW52YXM7aWYodS5pc092ZXIpe28udGFyZ2V0LnN0eWxlLmN1cnNvcj11Ll9jdXJzb3JzLnBvcCgpO3UuaXNPdmVyPWZhbHNlfX19fX1mdW5jdGlvbiBjKGssaSxnLGwsail7dmFyIG09ai5wbHVnaW5zLmRyYWdhYmxlLmRyYWdDYW52YXM7bS5fY3Vyc29ycy5wdXNoKGsudGFyZ2V0LnN0eWxlLmN1cnNvcik7aWYobCE9bnVsbCl7dmFyIG89ai5zZXJpZXNbbC5zZXJpZXNJbmRleF07dmFyIGg9by5wbHVnaW5zLmRyYWdhYmxlO2lmKG8uaXNEcmFnYWJsZSYmIW0uaXNEcmFnZ2luZyl7bS5fbmVpZ2hib3I9bDttLmlzRHJhZ2dpbmc9dHJ1ZTtmKGosbCk7aC5tYXJrZXJSZW5kZXJlci5kcmF3KG8uZ3JpZERhdGFbbC5wb2ludEluZGV4XVswXSxvLmdyaWREYXRhW2wucG9pbnRJbmRleF1bMV0sbS5fY3R4KTtrLnRhcmdldC5zdHlsZS5jdXJzb3I9Im1vdmUiO2oudGFyZ2V0LnRyaWdnZXIoImpxcGxvdERyYWdTdGFydCIsW2wuc2VyaWVzSW5kZXgsbC5wb2ludEluZGV4LGksZ10pfX1lbHNle3ZhciBuPW0uX2N0eDtuLmNsZWFyUmVjdCgwLDAsbi5jYW52YXMud2lkdGgsbi5jYW52YXMuaGVpZ2h0KTttLmlzRHJhZ2dpbmc9ZmFsc2V9fWZ1bmN0aW9uIGEobSxqLGcsbyxrKXtpZihrLnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhcy5pc0RyYWdnaW5nKXt2YXIgcD1rLnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhczt2YXIgcT1wLl9jdHg7cS5jbGVhclJlY3QoMCwwLHEuY2FudmFzLndpZHRoLHEuY2FudmFzLmhlaWdodCk7cC5pc0RyYWdnaW5nPWZhbHNlO3ZhciBoPXAuX25laWdoYm9yO3ZhciByPWsuc2VyaWVzW2guc2VyaWVzSW5kZXhdO3ZhciBpPXIucGx1Z2lucy5kcmFnYWJsZTt2YXIgbj0oaS5jb25zdHJhaW5Ubz09InkiKT9oLmRhdGFbMF06Z1tyLnhheGlzXTt2YXIgbD0oaS5jb25zdHJhaW5Ubz09IngiKT9oLmRhdGFbMV06Z1tyLnlheGlzXTtyLmRhdGFbaC5wb2ludEluZGV4XVswXT1uO3IuZGF0YVtoLnBvaW50SW5kZXhdWzFdPWw7ay5kcmF3U2VyaWVzKHtwcmV2ZW50SnFQbG90U2VyaWVzRHJhd1RyaWdnZXI6dHJ1ZX0saC5zZXJpZXNJbmRleCk7cC5fbmVpZ2hib3I9bnVsbDttLnRhcmdldC5zdHlsZS5jdXJzb3I9cC5fY3Vyc29ycy5wb3AoKTtrLnRhcmdldC50cmlnZ2VyKCJqcXBsb3REcmFnU3RvcCIsW2osZ10pfX19KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.enhancedLegendRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLy8gY2xhc3MgJC5qcXBsb3QuRW5oYW5jZWRMZWdlbmRSZW5kZXJlcgogICAgLy8gTGVnZW5kIHJlbmRlcmVyIHdoaWNoIGNhbiBzcGVjaWZ5IHRoZSBudW1iZXIgb2Ygcm93cyBhbmQvb3IgY29sdW1ucyBpbiB0aGUgbGVnZW5kLgogICAgJC5qcXBsb3QuRW5oYW5jZWRMZWdlbmRSZW5kZXJlciA9IGZ1bmN0aW9uKCl7CiAgICAgICAgJC5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRW5oYW5jZWRMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlcigpOwogICAgJC5qcXBsb3QuRW5oYW5jZWRMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5FbmhhbmNlZExlZ2VuZFJlbmRlcmVyOwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBsZWdlbmQuCiAgICAkLmpxcGxvdC5FbmhhbmNlZExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgIC8vIHByb3A6IG51bWJlclJvd3MKICAgICAgICAvLyBNYXhpbXVtIG51bWJlciBvZiByb3dzIGluIHRoZSBsZWdlbmQuICAwIG9yIG51bGwgZm9yIHVubGltaXRlZC4KICAgICAgICB0aGlzLm51bWJlclJvd3MgPSBudWxsOwogICAgICAgIC8vIHByb3A6IG51bWJlckNvbHVtbnMKICAgICAgICAvLyBNYXhpbXVtIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBsZWdlbmQuICAwIG9yIG51bGwgZm9yIHVubGltaXRlZC4KICAgICAgICB0aGlzLm51bWJlckNvbHVtbnMgPSBudWxsOwogICAgICAgIC8vIHByb3A6IHNlcmllc1RvZ2dsZQogICAgICAgIC8vIGZhbHNlIHRvIG5vdCBlbmFibGUgc2VyaWVzIG9uL29mZiB0b2dnbGluZyBvbiB0aGUgbGVnZW5kLgogICAgICAgIC8vIHRydWUgb3IgYSBmYWRlaW4vZmFkZW91dCBzcGVlZCAobnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBvciAnZmFzdCcsICdub3JtYWwnLCAnc2xvdycpIAogICAgICAgIC8vIHRvIGVuYWJsZSBzaG93L2hpZGUgb2Ygc2VyaWVzIG9uIGNsaWNrIG9mIGxlZ2VuZCBpdGVtLgogICAgICAgIHRoaXMuc2VyaWVzVG9nZ2xlID0gJ25vcm1hbCc7CiAgICAgICAgLy8gcHJvcDogc2VyaWVzVG9nZ2xlUmVwbG90CiAgICAgICAgLy8gVHJ1ZSB0byByZXBsb3QgdGhlIGNoYXJ0IGFmdGVyIHRvZ2dsaW5nIHNlcmllcyBvbi9vZmYuCiAgICAgICAgLy8gVGhpcyB3aWxsIHNldCB0aGUgc2VyaWVzIHNob3cgcHJvcGVydHkgdG8gZmFsc2UuCiAgICAgICAgLy8gVGhpcyBhbGxvd3MgZm9yIHJlc2NhbGluZyBvciBvdGhlciBtYW5pcGxhdGlvbiBvZiBjaGFydC4KICAgICAgICAvLyBTZXQgdG8gYW4gb3B0aW9ucyBvYmplY3QgKGUuZy4ge3Jlc2V0QXhlczogdHJ1ZX0pIGZvciByZXBsb3Qgb3B0aW9ucy4KICAgICAgICB0aGlzLnNlcmllc1RvZ2dsZVJlcGxvdCA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGRpc2FibGVJRUZhZGluZwogICAgICAgIC8vIHRydWUgdG8gdG9nZ2xlIHNlcmllcyB3aXRoIGEgc2hvdy9oaWRlIG1ldGhvZCBvbmx5IGFuZCBub3QgYWxsb3cgZmFkaW5nIGluL291dC4gIAogICAgICAgIC8vIFRoaXMgaXMgdG8gb3ZlcmNvbWUgcG9vciBwZXJmb3JtYW5jZSBvZiBmYWRlIGluIHNvbWUgdmVyc2lvbnMgb2YgSUUuCiAgICAgICAgdGhpcy5kaXNhYmxlSUVGYWRpbmcgPSB0cnVlOwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgIAogICAgICAgIGlmICh0aGlzLnNlcmllc1RvZ2dsZSkgewogICAgICAgICAgICAkLmpxcGxvdC5wb3N0RHJhd0hvb2tzLnB1c2gocG9zdERyYXcpOwogICAgICAgIH0KICAgIH07CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIGxlZ2VuZAogICAgJC5qcXBsb3QuRW5oYW5jZWRMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKG9mZnNldHMsIHBsb3QpIHsKICAgICAgICB2YXIgbGVnZW5kID0gdGhpczsKICAgICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAgICAgICAgIHZhciBzZXJpZXMgPSB0aGlzLl9zZXJpZXM7CiAgICAgICAgICAgIHZhciBzOwogICAgICAgICAgICB2YXIgc3MgPSAncG9zaXRpb246YWJzb2x1dGU7JzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMuYmFja2dyb3VuZCkgPyAnYmFja2dyb3VuZDonK3RoaXMuYmFja2dyb3VuZCsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMuYm9yZGVyKSA/ICdib3JkZXI6Jyt0aGlzLmJvcmRlcisnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMuZm9udFNpemUpID8gJ2ZvbnQtc2l6ZTonK3RoaXMuZm9udFNpemUrJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLmZvbnRGYW1pbHkpID8gJ2ZvbnQtZmFtaWx5OicrdGhpcy5mb250RmFtaWx5Kyc7JyA6ICcnOwogICAgICAgICAgICBzcyArPSAodGhpcy50ZXh0Q29sb3IpID8gJ2NvbG9yOicrdGhpcy50ZXh0Q29sb3IrJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLm1hcmdpblRvcCAhPSBudWxsKSA/ICdtYXJnaW4tdG9wOicrdGhpcy5tYXJnaW5Ub3ArJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLm1hcmdpbkJvdHRvbSAhPSBudWxsKSA/ICdtYXJnaW4tYm90dG9tOicrdGhpcy5tYXJnaW5Cb3R0b20rJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLm1hcmdpbkxlZnQgIT0gbnVsbCkgPyAnbWFyZ2luLWxlZnQ6Jyt0aGlzLm1hcmdpbkxlZnQrJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLm1hcmdpblJpZ2h0ICE9IG51bGwpID8gJ21hcmdpbi1yaWdodDonK3RoaXMubWFyZ2luUmlnaHQrJzsnIDogJyc7CiAgICAgICAgICAgIHRoaXMuX2VsZW0gPSAkKCc8dGFibGUgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSInK3NzKyciPjwvdGFibGU+Jyk7CiAgICAgICAgICAgIGlmICh0aGlzLnNlcmllc1RvZ2dsZSkgewogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoJ3otaW5kZXgnLCAnMycpOwogICAgICAgICAgICB9CiAgICAgICAgCiAgICAgICAgICAgIHZhciBwYWQgPSBmYWxzZSwgCiAgICAgICAgICAgICAgICByZXZlcnNlID0gZmFsc2UsCiAgICAgICAgICAgICAgICBuciwgbmM7CiAgICAgICAgICAgIGlmICh0aGlzLm51bWJlclJvd3MpIHsKICAgICAgICAgICAgICAgIG5yID0gdGhpcy5udW1iZXJSb3dzOwogICAgICAgICAgICAgICAgaWYgKCF0aGlzLm51bWJlckNvbHVtbnMpewogICAgICAgICAgICAgICAgICAgIG5jID0gTWF0aC5jZWlsKHNlcmllcy5sZW5ndGgvbnIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICBuYyA9IHRoaXMubnVtYmVyQ29sdW1uczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmICh0aGlzLm51bWJlckNvbHVtbnMpIHsKICAgICAgICAgICAgICAgIG5jID0gdGhpcy5udW1iZXJDb2x1bW5zOwogICAgICAgICAgICAgICAgbnIgPSBNYXRoLmNlaWwoc2VyaWVzLmxlbmd0aC90aGlzLm51bWJlckNvbHVtbnMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbnIgPSBzZXJpZXMubGVuZ3RoOwogICAgICAgICAgICAgICAgbmMgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgdmFyIGksIGosIHRyLCB0ZDEsIHRkMiwgbHQsIHJzLCBkaXYsIGRpdjAsIGRpdjE7CiAgICAgICAgICAgIHZhciBpZHggPSAwOwogICAgICAgICAgICAvLyBjaGVjayB0byBzZWUgaWYgd2UgbmVlZCB0byByZXZlcnNlCiAgICAgICAgICAgIGZvciAoaT1zZXJpZXMubGVuZ3RoLTE7IGk+PTA7IGktLSkgewogICAgICAgICAgICAgICAgaWYgKG5jID09IDEgJiYgc2VyaWVzW2ldLl9zdGFjayB8fCBzZXJpZXNbaV0ucmVuZGVyZXIuY29uc3RydWN0b3IgPT0gJC5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlcil7CiAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZSA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgZm9yIChpPTA7IGk8bnI7IGkrKykgewogICAgICAgICAgICAgICAgdHIgPSAkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJykpOwogICAgICAgICAgICAgICAgdHIuYWRkQ2xhc3MoJ2pxcGxvdC10YWJsZS1sZWdlbmQnKTsKICAgICAgICAgICAgICAgIGlmIChyZXZlcnNlKXsKICAgICAgICAgICAgICAgICAgICB0ci5wcmVwZW5kVG8odGhpcy5fZWxlbSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgIHRyLmFwcGVuZFRvKHRoaXMuX2VsZW0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yIChqPTA7IGo8bmM7IGorKykgewogICAgICAgICAgICAgICAgICAgIGlmIChpZHggPCBzZXJpZXMubGVuZ3RoICYmIChzZXJpZXNbaWR4XS5zaG93IHx8IHNlcmllc1tpZHhdLnNob3dMYWJlbCkpewogICAgICAgICAgICAgICAgICAgICAgICBzID0gc2VyaWVzW2lkeF07CiAgICAgICAgICAgICAgICAgICAgICAgIGx0ID0gdGhpcy5sYWJlbHNbaWR4XSB8fCBzLmxhYmVsLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbG9yID0gcy5jb2xvcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmV2ZXJzZSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGk+MCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gbnIgLTEpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBycyA9IChwYWQpID8gdGhpcy5yb3dTcGFjaW5nIDogJzAnOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMSA9ICQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDEuYWRkQ2xhc3MoJ2pxcGxvdC10YWJsZS1sZWdlbmQganFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2gnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMS5jc3Moe3RleHRBbGlnbjogJ2NlbnRlcicsIHBhZGRpbmdUb3A6IHJzfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2MCA9ICQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2MC5hZGRDbGFzcygnanFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2gtb3V0bGluZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2MSA9ICQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2MS5hZGRDbGFzcygnanFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2gnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpdjEuY3NzKHtiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLCBib3JkZXJDb2xvcjogY29sb3J9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDEuYXBwZW5kKGRpdjAuYXBwZW5kKGRpdjEpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDIgPSAkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQyLmFkZENsYXNzKCdqcXBsb3QtdGFibGUtbGVnZW5kIGpxcGxvdC10YWJsZS1sZWdlbmQtbGFiZWwnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5jc3MoJ3BhZGRpbmdUb3AnLCBycyk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0ZDEgPSAkKCc8dGQgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nLXRvcDonK3JzKyc7Ij4nKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICc8ZGl2PjxkaXYgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQtc3dhdGNoIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjonK2NvbG9yKyc7Ym9yZGVyLWNvbG9yOicrY29sb3IrJzsiPjwvZGl2PicrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgJzwvZGl2PjwvdGQ+Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0ZDIgPSAkKCc8dGQgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSJwYWRkaW5nLXRvcDonK3JzKyc7Ij48L3RkPicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZXNjYXBlSHRtbCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQyLnRleHQobHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQyLmh0bWwobHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldmVyc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zaG93TGFiZWxzKSB7dGQyLnByZXBlbmRUbyh0cik7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3dTd2F0Y2hlcykge3RkMS5wcmVwZW5kVG8odHIpO30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3dTd2F0Y2hlcykge3RkMS5hcHBlbmRUbyh0cik7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3dMYWJlbHMpIHt0ZDIuYXBwZW5kVG8odHIpO30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VyaWVzVG9nZ2xlKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZCBhbiBvdmVybGF5IGZvciBjbGlja2luZyBzZXJpZXMgb24vb2ZmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGl2MCA9ICQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpdjAuYWRkQ2xhc3MoJ2pxcGxvdC10YWJsZS1sZWdlbmQtb3ZlcmxheScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpdjAuY3NzKHtwb3NpdGlvbjoncmVsYXRpdmUnLCBsZWZ0OjAsIHRvcDowLCBoZWlnaHQ6JzEwMCUnLCB3aWR0aDonMTAwJSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0ci5hcHBlbmQoZGl2MCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzcGVlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mKHRoaXMuc2VyaWVzVG9nZ2xlKSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mKHRoaXMuc2VyaWVzVG9nZ2xlKSA9PT0gJ251bWJlcicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkLmpxcGxvdC51c2VfZXhjYW52YXMgfHwgIXRoaXMuZGlzYWJsZUlFRmFkaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVlZCA9IHRoaXMuc2VyaWVzVG9nZ2xlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zaG93U3dhdGNoZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxLmJpbmQoJ2NsaWNrJywge3NlcmllczpzLCBzcGVlZDpzcGVlZCwgcGxvdDogcGxvdCwgcmVwbG90OnRoaXMuc2VyaWVzVG9nZ2xlUmVwbG90fSwgaGFuZGxlVG9nZ2xlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxLmFkZENsYXNzKCdqcXBsb3Qtc2VyaWVzVG9nZ2xlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3dMYWJlbHMpICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5iaW5kKCdjbGljaycsIHtzZXJpZXM6cywgc3BlZWQ6c3BlZWQsIHBsb3Q6IHBsb3QsIHJlcGxvdDp0aGlzLnNlcmllc1RvZ2dsZVJlcGxvdH0sIGhhbmRsZVRvZ2dsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5hZGRDbGFzcygnanFwbG90LXNlcmllc1RvZ2dsZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHNlcmllcyB0aGF0IGFyZSBhbHJlYWR5IGhpZGRlbiwgYWRkIHRoZSBoaWRkZW4gY2xhc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXMuc2hvdyAmJiBzLnNob3dMYWJlbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDEuYWRkQ2xhc3MoJ2pxcGxvdC1zZXJpZXMtaGlkZGVuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5hZGRDbGFzcygnanFwbG90LXNlcmllcy1oaWRkZW4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWR4Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHRkMSA9IHRkMiA9IGRpdjAgPSBkaXYxID0gbnVsbDsgICAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy5fZWxlbTsKICAgIH07CgogICAgdmFyIGhhbmRsZVRvZ2dsZSA9IGZ1bmN0aW9uIChldikgewogICAgICAgIHZhciBkID0gZXYuZGF0YSwKICAgICAgICAgICAgcyA9IGQuc2VyaWVzLAogICAgICAgICAgICByZXBsb3QgPSBkLnJlcGxvdCwKICAgICAgICAgICAgcGxvdCA9IGQucGxvdCwKICAgICAgICAgICAgc3BlZWQgPSBkLnNwZWVkLAogICAgICAgICAgICBzaWR4ID0gcy5pbmRleCwKICAgICAgICAgICAgc2hvd2luZyA9IGZhbHNlOwoKICAgICAgICBpZiAocy5jYW52YXMuX2VsZW0uaXMoJzpoaWRkZW4nKSB8fCAhcy5zaG93KSB7CiAgICAgICAgICAgIHNob3dpbmcgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIGRvTGVnZW5kVG9nZ2xlID0gZnVuY3Rpb24oKSB7CgogICAgICAgICAgICBpZiAocmVwbG90KSB7CiAgICAgICAgICAgICAgICB2YXIgb3B0cyA9IHt9OwoKICAgICAgICAgICAgICAgIGlmICgkLmlzUGxhaW5PYmplY3QocmVwbG90KSkgewogICAgICAgICAgICAgICAgICAgICQuZXh0ZW5kKHRydWUsIG9wdHMsIHJlcGxvdCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcGxvdC5yZXBsb3Qob3B0cyk7CiAgICAgICAgICAgICAgICAvLyBpZiBzaG93aW5nLCB0aGVyZSB3YXMgbm8gY2FudmFzIGVsZW1lbnQgdG8gZmFkZSBpbiwgc28gaGlkZSBoZXJlCiAgICAgICAgICAgICAgICAvLyBhbmQgdGhlbiBkbyBhIGZhZGUgaW4uCiAgICAgICAgICAgICAgICBpZiAoc2hvd2luZyAmJiBzcGVlZCkgewogICAgICAgICAgICAgICAgICAgIHZhciBzID0gcGxvdC5zZXJpZXNbc2lkeF07CgogICAgICAgICAgICAgICAgICAgIGlmIChzLnNoYWRvd0NhbnZhcy5fZWxlbSkgewogICAgICAgICAgICAgICAgICAgICAgICBzLnNoYWRvd0NhbnZhcy5fZWxlbS5oaWRlKCkuZmFkZUluKHNwZWVkKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcy5jYW52YXMuX2VsZW0uaGlkZSgpLmZhZGVJbihzcGVlZCk7CiAgICAgICAgICAgICAgICAgICAgcy5jYW52YXMuX2VsZW0ubmV4dEFsbCgnLmpxcGxvdC1wb2ludC1sYWJlbC5qcXBsb3Qtc2VyaWVzLScrcy5pbmRleCkuaGlkZSgpLmZhZGVJbihzcGVlZCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBzID0gcGxvdC5zZXJpZXNbc2lkeF07CgogICAgICAgICAgICAgICAgaWYgKHMuY2FudmFzLl9lbGVtLmlzKCc6aGlkZGVuJykgfHwgIXMuc2hvdykgewogICAgICAgICAgICAgICAgICAgIC8vIE5vdCBzdXJlIGlmIHRoZXJlIGlzIGEgYmV0dGVyIHdheSB0byBjaGVjayBmb3Igc2hvd1N3YXRjaGVzIGFuZCBzaG93TGFiZWxzID09PSB0cnVlLgogICAgICAgICAgICAgICAgICAgIC8vIFRlc3QgZm9yICJ1bmRlZmluZWQiIHNpbmNlIGRlZmF1bHQgdmFsdWVzIGZvciBib3RoIHNob3dTd2F0Y2hlcyBhbmQgc2hvd0xhYmxlcyBpcyB0cnVlLgogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGxvdC5vcHRpb25zLmxlZ2VuZC5zaG93U3dhdGNoZXMgPT09ICd1bmRlZmluZWQnIHx8IHBsb3Qub3B0aW9ucy5sZWdlbmQuc2hvd1N3YXRjaGVzID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBsb3QubGVnZW5kLl9lbGVtLmZpbmQoJ3RkJykuZXEoc2lkeCAqIDIpLmFkZENsYXNzKCdqcXBsb3Qtc2VyaWVzLWhpZGRlbicpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHBsb3Qub3B0aW9ucy5sZWdlbmQuc2hvd0xhYmVscyA9PT0gJ3VuZGVmaW5lZCcgfHwgcGxvdC5vcHRpb25zLmxlZ2VuZC5zaG93TGFiZWxzID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBsb3QubGVnZW5kLl9lbGVtLmZpbmQoJ3RkJykuZXEoKHNpZHggKiAyKSArIDEpLmFkZENsYXNzKCdqcXBsb3Qtc2VyaWVzLWhpZGRlbicpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGxvdC5vcHRpb25zLmxlZ2VuZC5zaG93U3dhdGNoZXMgPT09ICd1bmRlZmluZWQnIHx8IHBsb3Qub3B0aW9ucy5sZWdlbmQuc2hvd1N3YXRjaGVzID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBsb3QubGVnZW5kLl9lbGVtLmZpbmQoJ3RkJykuZXEoc2lkeCAqIDIpLnJlbW92ZUNsYXNzKCdqcXBsb3Qtc2VyaWVzLWhpZGRlbicpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHBsb3Qub3B0aW9ucy5sZWdlbmQuc2hvd0xhYmVscyA9PT0gJ3VuZGVmaW5lZCcgfHwgcGxvdC5vcHRpb25zLmxlZ2VuZC5zaG93TGFiZWxzID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBsb3QubGVnZW5kLl9lbGVtLmZpbmQoJ3RkJykuZXEoKHNpZHggKiAyKSArIDEpLnJlbW92ZUNsYXNzKCdqcXBsb3Qtc2VyaWVzLWhpZGRlbicpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KCiAgICAgICAgfTsKCiAgICAgICAgcy50b2dnbGVEaXNwbGF5KGV2LCBkb0xlZ2VuZFRvZ2dsZSk7CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBwbG90LgogICAgdmFyIHBvc3REcmF3ID0gZnVuY3Rpb24gKCkgewogICAgICAgIGlmICh0aGlzLmxlZ2VuZC5yZW5kZXJlci5jb25zdHJ1Y3RvciA9PSAkLmpxcGxvdC5FbmhhbmNlZExlZ2VuZFJlbmRlcmVyICYmIHRoaXMubGVnZW5kLnNlcmllc1RvZ2dsZSl7CiAgICAgICAgICAgIHZhciBlID0gdGhpcy5sZWdlbmQuX2VsZW0uZGV0YWNoKCk7CiAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYWZ0ZXIoZSk7CiAgICAgICAgfQogICAgfTsKfSkoalF1ZXJ5KTsK]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGMpe2MuanFwbG90LkVuaGFuY2VkTGVnZW5kUmVuZGVyZXI9ZnVuY3Rpb24oKXtjLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyLmNhbGwodGhpcyl9O2MuanFwbG90LkVuaGFuY2VkTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlPW5ldyBjLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyKCk7Yy5qcXBsb3QuRW5oYW5jZWRMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9Yy5qcXBsb3QuRW5oYW5jZWRMZWdlbmRSZW5kZXJlcjtjLmpxcGxvdC5FbmhhbmNlZExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGQpe3RoaXMubnVtYmVyUm93cz1udWxsO3RoaXMubnVtYmVyQ29sdW1ucz1udWxsO3RoaXMuc2VyaWVzVG9nZ2xlPSJub3JtYWwiO3RoaXMuc2VyaWVzVG9nZ2xlUmVwbG90PWZhbHNlO3RoaXMuZGlzYWJsZUlFRmFkaW5nPXRydWU7Yy5leHRlbmQodHJ1ZSx0aGlzLGQpO2lmKHRoaXMuc2VyaWVzVG9nZ2xlKXtjLmpxcGxvdC5wb3N0RHJhd0hvb2tzLnB1c2goYil9fTtjLmpxcGxvdC5FbmhhbmNlZExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKG0seSl7dmFyIGY9dGhpcztpZih0aGlzLnNob3cpe3ZhciByPXRoaXMuX3Nlcmllczt2YXIgdTt2YXIgdz0icG9zaXRpb246YWJzb2x1dGU7Ijt3Kz0odGhpcy5iYWNrZ3JvdW5kKT8iYmFja2dyb3VuZDoiK3RoaXMuYmFja2dyb3VuZCsiOyI6IiI7dys9KHRoaXMuYm9yZGVyKT8iYm9yZGVyOiIrdGhpcy5ib3JkZXIrIjsiOiIiO3crPSh0aGlzLmZvbnRTaXplKT8iZm9udC1zaXplOiIrdGhpcy5mb250U2l6ZSsiOyI6IiI7dys9KHRoaXMuZm9udEZhbWlseSk/ImZvbnQtZmFtaWx5OiIrdGhpcy5mb250RmFtaWx5KyI7IjoiIjt3Kz0odGhpcy50ZXh0Q29sb3IpPyJjb2xvcjoiK3RoaXMudGV4dENvbG9yKyI7IjoiIjt3Kz0odGhpcy5tYXJnaW5Ub3AhPW51bGwpPyJtYXJnaW4tdG9wOiIrdGhpcy5tYXJnaW5Ub3ArIjsiOiIiO3crPSh0aGlzLm1hcmdpbkJvdHRvbSE9bnVsbCk/Im1hcmdpbi1ib3R0b206Iit0aGlzLm1hcmdpbkJvdHRvbSsiOyI6IiI7dys9KHRoaXMubWFyZ2luTGVmdCE9bnVsbCk/Im1hcmdpbi1sZWZ0OiIrdGhpcy5tYXJnaW5MZWZ0KyI7IjoiIjt3Kz0odGhpcy5tYXJnaW5SaWdodCE9bnVsbCk/Im1hcmdpbi1yaWdodDoiK3RoaXMubWFyZ2luUmlnaHQrIjsiOiIiO3RoaXMuX2VsZW09YygnPHRhYmxlIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIiBzdHlsZT0iJyt3KyciPjwvdGFibGU+Jyk7aWYodGhpcy5zZXJpZXNUb2dnbGUpe3RoaXMuX2VsZW0uY3NzKCJ6LWluZGV4IiwiMyIpfXZhciBDPWZhbHNlLHE9ZmFsc2UsZCxvO2lmKHRoaXMubnVtYmVyUm93cyl7ZD10aGlzLm51bWJlclJvd3M7aWYoIXRoaXMubnVtYmVyQ29sdW1ucyl7bz1NYXRoLmNlaWwoci5sZW5ndGgvZCl9ZWxzZXtvPXRoaXMubnVtYmVyQ29sdW1uc319ZWxzZXtpZih0aGlzLm51bWJlckNvbHVtbnMpe289dGhpcy5udW1iZXJDb2x1bW5zO2Q9TWF0aC5jZWlsKHIubGVuZ3RoL3RoaXMubnVtYmVyQ29sdW1ucyl9ZWxzZXtkPXIubGVuZ3RoO289MX19dmFyIEIseixlLGwsayxuLHAsdCxoLGc7dmFyIHY9MDtmb3IoQj1yLmxlbmd0aC0xO0I+PTA7Qi0tKXtpZihvPT0xJiZyW0JdLl9zdGFja3x8cltCXS5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09Yy5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlcil7cT10cnVlfX1mb3IoQj0wO0I8ZDtCKyspe2U9Yyhkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpKTtlLmFkZENsYXNzKCJqcXBsb3QtdGFibGUtbGVnZW5kIik7aWYocSl7ZS5wcmVwZW5kVG8odGhpcy5fZWxlbSl9ZWxzZXtlLmFwcGVuZFRvKHRoaXMuX2VsZW0pfWZvcih6PTA7ejxvO3orKyl7aWYodjxyLmxlbmd0aCYmKHJbdl0uc2hvd3x8clt2XS5zaG93TGFiZWwpKXt1PXJbdl07bj10aGlzLmxhYmVsc1t2XXx8dS5sYWJlbC50b1N0cmluZygpO2lmKG4pe3ZhciB4PXUuY29sb3I7aWYoIXEpe2lmKEI+MCl7Qz10cnVlfWVsc2V7Qz1mYWxzZX19ZWxzZXtpZihCPT1kLTEpe0M9ZmFsc2V9ZWxzZXtDPXRydWV9fXA9KEMpP3RoaXMucm93U3BhY2luZzoiMCI7bD1jKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIikpO2wuYWRkQ2xhc3MoImpxcGxvdC10YWJsZS1sZWdlbmQganFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2giKTtsLmNzcyh7dGV4dEFsaWduOiJjZW50ZXIiLHBhZGRpbmdUb3A6cH0pO2g9Yyhkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7aC5hZGRDbGFzcygianFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2gtb3V0bGluZSIpO2c9Yyhkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Zy5hZGRDbGFzcygianFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2giKTtnLmNzcyh7YmFja2dyb3VuZENvbG9yOngsYm9yZGVyQ29sb3I6eH0pO2wuYXBwZW5kKGguYXBwZW5kKGcpKTtrPWMoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKSk7ay5hZGRDbGFzcygianFwbG90LXRhYmxlLWxlZ2VuZCBqcXBsb3QtdGFibGUtbGVnZW5kLWxhYmVsIik7ay5jc3MoInBhZGRpbmdUb3AiLHApO2lmKHRoaXMuZXNjYXBlSHRtbCl7ay50ZXh0KG4pfWVsc2V7ay5odG1sKG4pfWlmKHEpe2lmKHRoaXMuc2hvd0xhYmVscyl7ay5wcmVwZW5kVG8oZSl9aWYodGhpcy5zaG93U3dhdGNoZXMpe2wucHJlcGVuZFRvKGUpfX1lbHNle2lmKHRoaXMuc2hvd1N3YXRjaGVzKXtsLmFwcGVuZFRvKGUpfWlmKHRoaXMuc2hvd0xhYmVscyl7ay5hcHBlbmRUbyhlKX19aWYodGhpcy5zZXJpZXNUb2dnbGUpe3ZhciBBO2lmKHR5cGVvZih0aGlzLnNlcmllc1RvZ2dsZSk9PT0ic3RyaW5nInx8dHlwZW9mKHRoaXMuc2VyaWVzVG9nZ2xlKT09PSJudW1iZXIiKXtpZighYy5qcXBsb3QudXNlX2V4Y2FudmFzfHwhdGhpcy5kaXNhYmxlSUVGYWRpbmcpe0E9dGhpcy5zZXJpZXNUb2dnbGV9fWlmKHRoaXMuc2hvd1N3YXRjaGVzKXtsLmJpbmQoImNsaWNrIix7c2VyaWVzOnUsc3BlZWQ6QSxwbG90OnkscmVwbG90OnRoaXMuc2VyaWVzVG9nZ2xlUmVwbG90fSxhKTtsLmFkZENsYXNzKCJqcXBsb3Qtc2VyaWVzVG9nZ2xlIil9aWYodGhpcy5zaG93TGFiZWxzKXtrLmJpbmQoImNsaWNrIix7c2VyaWVzOnUsc3BlZWQ6QSxwbG90OnkscmVwbG90OnRoaXMuc2VyaWVzVG9nZ2xlUmVwbG90fSxhKTtrLmFkZENsYXNzKCJqcXBsb3Qtc2VyaWVzVG9nZ2xlIil9aWYoIXUuc2hvdyYmdS5zaG93TGFiZWwpe2wuYWRkQ2xhc3MoImpxcGxvdC1zZXJpZXMtaGlkZGVuIik7ay5hZGRDbGFzcygianFwbG90LXNlcmllcy1oaWRkZW4iKX19Qz10cnVlfX12Kyt9bD1rPWg9Zz1udWxsfX1yZXR1cm4gdGhpcy5fZWxlbX07dmFyIGE9ZnVuY3Rpb24oail7dmFyIGk9ai5kYXRhLG09aS5zZXJpZXMsaz1pLnJlcGxvdCxoPWkucGxvdCxmPWkuc3BlZWQsbD1tLmluZGV4LGc9ZmFsc2U7aWYobS5jYW52YXMuX2VsZW0uaXMoIjpoaWRkZW4iKXx8IW0uc2hvdyl7Zz10cnVlfXZhciBlPWZ1bmN0aW9uKCl7aWYoayl7dmFyIG49e307aWYoYy5pc1BsYWluT2JqZWN0KGspKXtjLmV4dGVuZCh0cnVlLG4sayl9aC5yZXBsb3Qobik7aWYoZyYmZil7dmFyIGQ9aC5zZXJpZXNbbF07aWYoZC5zaGFkb3dDYW52YXMuX2VsZW0pe2Quc2hhZG93Q2FudmFzLl9lbGVtLmhpZGUoKS5mYWRlSW4oZil9ZC5jYW52YXMuX2VsZW0uaGlkZSgpLmZhZGVJbihmKTtkLmNhbnZhcy5fZWxlbS5uZXh0QWxsKCIuanFwbG90LXBvaW50LWxhYmVsLmpxcGxvdC1zZXJpZXMtIitkLmluZGV4KS5oaWRlKCkuZmFkZUluKGYpfX1lbHNle3ZhciBkPWguc2VyaWVzW2xdO2lmKGQuY2FudmFzLl9lbGVtLmlzKCI6aGlkZGVuIil8fCFkLnNob3cpe2lmKHR5cGVvZiBoLm9wdGlvbnMubGVnZW5kLnNob3dTd2F0Y2hlcz09PSJ1bmRlZmluZWQifHxoLm9wdGlvbnMubGVnZW5kLnNob3dTd2F0Y2hlcz09PXRydWUpe2gubGVnZW5kLl9lbGVtLmZpbmQoInRkIikuZXEobCoyKS5hZGRDbGFzcygianFwbG90LXNlcmllcy1oaWRkZW4iKX1pZih0eXBlb2YgaC5vcHRpb25zLmxlZ2VuZC5zaG93TGFiZWxzPT09InVuZGVmaW5lZCJ8fGgub3B0aW9ucy5sZWdlbmQuc2hvd0xhYmVscz09PXRydWUpe2gubGVnZW5kLl9lbGVtLmZpbmQoInRkIikuZXEoKGwqMikrMSkuYWRkQ2xhc3MoImpxcGxvdC1zZXJpZXMtaGlkZGVuIil9fWVsc2V7aWYodHlwZW9mIGgub3B0aW9ucy5sZWdlbmQuc2hvd1N3YXRjaGVzPT09InVuZGVmaW5lZCJ8fGgub3B0aW9ucy5sZWdlbmQuc2hvd1N3YXRjaGVzPT09dHJ1ZSl7aC5sZWdlbmQuX2VsZW0uZmluZCgidGQiKS5lcShsKjIpLnJlbW92ZUNsYXNzKCJqcXBsb3Qtc2VyaWVzLWhpZGRlbiIpfWlmKHR5cGVvZiBoLm9wdGlvbnMubGVnZW5kLnNob3dMYWJlbHM9PT0idW5kZWZpbmVkInx8aC5vcHRpb25zLmxlZ2VuZC5zaG93TGFiZWxzPT09dHJ1ZSl7aC5sZWdlbmQuX2VsZW0uZmluZCgidGQiKS5lcSgobCoyKSsxKS5yZW1vdmVDbGFzcygianFwbG90LXNlcmllcy1oaWRkZW4iKX19fX07bS50b2dnbGVEaXNwbGF5KGosZSl9O3ZhciBiPWZ1bmN0aW9uKCl7aWYodGhpcy5sZWdlbmQucmVuZGVyZXIuY29uc3RydWN0b3I9PWMuanFwbG90LkVuaGFuY2VkTGVnZW5kUmVuZGVyZXImJnRoaXMubGVnZW5kLnNlcmllc1RvZ2dsZSl7dmFyIGQ9dGhpcy5sZWdlbmQuX2VsZW0uZGV0YWNoKCk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5hZnRlcihkKX19fSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.funnelRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuRnVubmVsUmVuZGVyZXIKICAgICAqIFBsdWdpbiByZW5kZXJlciB0byBkcmF3IGEgZnVubmVsIGNoYXJ0LgogICAgICogeCB2YWx1ZXMsIGlmIHByZXNlbnQsIHdpbGwgYmUgdXNlZCBhcyBsYWJlbHMuCiAgICAgKiB5IHZhbHVlcyBnaXZlIGFyZWEgc2l6ZS4KICAgICAqIAogICAgICogRnVubmVsIGNoYXJ0cyB3aWxsIGRyYXcgYSBzaW5nbGUgc2VyaWVzCiAgICAgKiBvbmx5LgogICAgICogCiAgICAgKiBUbyB1c2UgdGhpcyByZW5kZXJlciwgeW91IG5lZWQgdG8gaW5jbHVkZSB0aGUgCiAgICAgKiBmdW5uZWwgcmVuZGVyZXIgcGx1Z2luLCBmb3IgZXhhbXBsZToKICAgICAqIAogICAgICogPiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJwbHVnaW5zL2pxcGxvdC5mdW5uZWxSZW5kZXJlci5qcyI+PC9zY3JpcHQ+CiAgICAgKiAKICAgICAqIFByb3BlcnRpZXMgZGVzY3JpYmVkIGhlcmUgYXJlIHBhc3NlZCBpbnRvIHRoZSAkLmpxcGxvdCBmdW5jdGlvbgogICAgICogYXMgb3B0aW9ucyBvbiB0aGUgc2VyaWVzIHJlbmRlcmVyLiAgRm9yIGV4YW1wbGU6CiAgICAgKiAKICAgICAqID4gcGxvdDIgPSAkLmpxcGxvdCgnY2hhcnQyJywgW3MxLCBzMl0sIHsKICAgICAqID4gICAgIHNlcmllc0RlZmF1bHRzOiB7CiAgICAgKiA+ICAgICAgICAgcmVuZGVyZXI6JC5qcXBsb3QuRnVubmVsUmVuZGVyZXIsCiAgICAgKiA+ICAgICAgICAgcmVuZGVyZXJPcHRpb25zOnsKICAgICAqID4gICAgICAgICAgICAgIHNlY3Rpb25NYXJnaW46IDEyLAogICAgICogPiAgICAgICAgICAgICAgd2lkdGhSYXRpbzogMC4zCiAgICAgKiA+ICAgICAgICAgIH0KICAgICAqID4gICAgICB9CiAgICAgKiA+IH0pOwogICAgICogCiAgICAgKiBJTVBPUlRBTlQKICAgICAqIAogICAgICogKlRoZSBmdW5uZWwgcmVuZGVyZXIgd2lsbCByZW9yZGVyIGRhdGEgaW4gZGVzY2VuZGluZyBvcmRlciogc28gdGhlIGxhcmdlc3QgdmFsdWUgaW4KICAgICAqIHRoZSBkYXRhIHNldCBpcyBmaXJzdCBhbmQgZGlzcGxheWVkIG9uIHRvcCBvZiB0aGUgZnVubmVsLiAgRGF0YSB3aWxsIHRoZW4KICAgICAqIGJlIGRpc3BsYXllZCBpbiBkZXNjZW5kaW5nIG9yZGVyIGRvd24gdGhlIGZ1bm5lbC4gIFRoZSBhcmVhIG9mIGVhY2ggZnVubmVsCiAgICAgKiBzZWN0aW9uIHdpbGwgY29ycmVzcG9uZCB0byB0aGUgdmFsdWUgb2YgZWFjaCBkYXRhIHBvaW50IHJlbGF0aXZlIHRvIHRoZSBzdW0KICAgICAqIG9mIGFsbCB2YWx1ZXMuICBUaGF0IGlzIHNlY3Rpb24gYXJlYSBpcyBwcm9wb3J0aW9uYWwgdG8gc2VjdGlvbiB2YWx1ZSBkaXZpZGVkIGJ5IAogICAgICogc3VtIG9mIGFsbCBzZWN0aW9uIHZhbHVlcy4KICAgICAqIAogICAgICogSWYgeW91ciBkYXRhIGlzIG5vdCBpbiBkZXNjZW5kaW5nIG9yZGVyIHdoZW4gcGFzc2VkIGludG8gdGhlIHBsb3QsICppdCB3aWxsIGJlCiAgICAgKiByZW9yZGVyZWQqIHdoZW4gc3RvcmVkIGluIHRoZSBzZXJpZXMuZGF0YSBwcm9wZXJ0eS4gIEEgY29weSBvZiB0aGUgdW5vcmRlcmVkCiAgICAgKiBkYXRhIGlzIGtlcHQgaW4gdGhlIHNlcmllcy5fdW5vcmRlcmVkRGF0YSBwcm9wZXJ0eS4KICAgICAqIAogICAgICogQSBmdW5uZWwgcGxvdCB3aWxsIHRyaWdnZXIgZXZlbnRzIG9uIHRoZSBwbG90IHRhcmdldAogICAgICogYWNjb3JkaW5nIHRvIHVzZXIgaW50ZXJhY3Rpb24uICBBbGwgZXZlbnRzIHJldHVybiB0aGUgZXZlbnQgb2JqZWN0LAogICAgICogdGhlIHNlcmllcyBpbmRleCwgdGhlIHBvaW50IChzZWN0aW9uKSBpbmRleCwgYW5kIHRoZSBwb2ludCBkYXRhIGZvciAKICAgICAqIHRoZSBhcHByb3ByaWF0ZSBzZWN0aW9uLiAqTm90ZSogdGhlIHBvaW50IGluZGV4IHdpbGwgcmVmZXJyIHRvIHRoZSBvcmRlcmVkCiAgICAgKiBkYXRhLCBub3QgdGhlIG9yaWdpbmFsIHVub3JkZXJlZCBkYXRhLgogICAgICogCiAgICAgKiAnanFwbG90RGF0YU1vdXNlT3ZlcicgLSB0cmlnZ2VyZWQgd2hlbiBtb3VzaW5nIG92ZXIgYSBzZWN0aW9uLgogICAgICogJ2pxcGxvdERhdGFIaWdobGlnaHQnIC0gdHJpZ2dlcmVkIHRoZSBmaXJzdCB0aW1lIHVzZXIgbW91c2VzIG92ZXIgYSBzZWN0aW9uLAogICAgICogaWYgaGlnaGxpZ2h0aW5nIGlzIGVuYWJsZWQuCiAgICAgKiAnanFwbG90RGF0YVVuaGlnaGxpZ2h0JyAtIHRyaWdnZXJlZCB3aGVuIGEgdXNlciBtb3ZlcyB0aGUgbW91c2Ugb3V0IG9mCiAgICAgKiBhIGhpZ2hsaWdodGVkIHNlY3Rpb24uCiAgICAgKiAnanFwbG90RGF0YUNsaWNrJyAtIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiBhIHNlY3Rpb24uCiAgICAgKiAnanFwbG90RGF0YVJpZ2h0Q2xpY2snIC0gdGlnZ2VyZWQgd2hlbiB0aGUgdXNlciByaWdodCBjbGlja3Mgb24gYSBzZWN0aW9uIGlmCiAgICAgKiB0aGUgImNhcHR1cmVSaWdodENsaWNrIiBvcHRpb24gaXMgc2V0IHRvIHRydWUgb24gdGhlIHBsb3QuCiAgICAgKi8KICAgICQuanFwbG90LkZ1bm5lbFJlbmRlcmVyID0gZnVuY3Rpb24oKXsKICAgICAgICAkLmpxcGxvdC5MaW5lUmVuZGVyZXIuY2FsbCh0aGlzKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkZ1bm5lbFJlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTsKICAgICQuanFwbG90LkZ1bm5lbFJlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LkZ1bm5lbFJlbmRlcmVyOwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBhIHNlcmllcwogICAgJC5qcXBsb3QuRnVubmVsUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zLCBwbG90KSB7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAvLwogICAgICAgIC8vIHByb3A6IHBhZGRpbmcKICAgICAgICAvLyBwYWRkaW5nIGJldHdlZW4gdGhlIGZ1bm5lbCBhbmQgcGxvdCBlZGdlcywgbGVnZW5kLCBldGMuCiAgICAgICAgdGhpcy5wYWRkaW5nID0ge3RvcDogMjAsIHJpZ2h0OiAyMCwgYm90dG9tOiAyMCwgbGVmdDogMjB9OwogICAgICAgIC8vIHByb3A6IHNlY3Rpb25NYXJnaW4KICAgICAgICAvLyBzcGFjaW5nIGJldHdlZW4gZnVubmVsIHNlY3Rpb25zIGluIHBpeGVscy4KICAgICAgICB0aGlzLnNlY3Rpb25NYXJnaW4gPSA2OwogICAgICAgIC8vIHByb3A6IGZpbGwKICAgICAgICAvLyB0cnVlIG9yIGZhbHNlLCB3aGV0aGVyIHRvIGZpbGwgdGhlIGFyZWFzLgogICAgICAgIHRoaXMuZmlsbCA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogc2hhZG93T2Zmc2V0CiAgICAgICAgLy8gb2Zmc2V0IG9mIHRoZSBzaGFkb3cgZnJvbSB0aGUgYXJlYSBhbmQgb2Zmc2V0IG9mIAogICAgICAgIC8vIGVhY2ggc3VjY2VzaXZlIHN0cm9rZSBvZiB0aGUgc2hhZG93IGZyb20gdGhlIGxhc3QuCiAgICAgICAgdGhpcy5zaGFkb3dPZmZzZXQgPSAyOwogICAgICAgIC8vIHByb3A6IHNoYWRvd0FscGhhCiAgICAgICAgLy8gdHJhbnNwYXJlbmN5IG9mIHRoZSBzaGFkb3cgKDAgPSB0cmFuc3BhcmVudCwgMSA9IG9wYXF1ZSkKICAgICAgICB0aGlzLnNoYWRvd0FscGhhID0gMC4wNzsKICAgICAgICAvLyBwcm9wOiBzaGFkb3dEZXB0aAogICAgICAgIC8vIG51bWJlciBvZiBzdHJva2VzIHRvIGFwcGx5IHRvIHRoZSBzaGFkb3csIAogICAgICAgIC8vIGVhY2ggc3Ryb2tlIG9mZnNldCBzaGFkb3dPZmZzZXQgZnJvbSB0aGUgbGFzdC4KICAgICAgICB0aGlzLnNoYWRvd0RlcHRoID0gNTsKICAgICAgICAvLyBwcm9wOiBoaWdobGlnaHRNb3VzZU92ZXIKICAgICAgICAvLyBUcnVlIHRvIGhpZ2hsaWdodCBhcmVhIHdoZW4gbW91c2VkIG92ZXIuCiAgICAgICAgLy8gVGhpcyBtdXN0IGJlIGZhbHNlIHRvIGVuYWJsZSBoaWdobGlnaHRNb3VzZURvd24gdG8gaGlnaGxpZ2h0IHdoZW4gY2xpY2tpbmcgb24gYSBhcmVhLgogICAgICAgIHRoaXMuaGlnaGxpZ2h0TW91c2VPdmVyID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBoaWdobGlnaHRNb3VzZURvd24KICAgICAgICAvLyBUcnVlIHRvIGhpZ2hsaWdodCB3aGVuIGEgbW91c2UgYnV0dG9uIGlzIHByZXNzZWQgb3ZlciBhIGFyZWEuCiAgICAgICAgLy8gVGhpcyB3aWxsIGJlIGRpc2FibGVkIGlmIGhpZ2hsaWdodE1vdXNlT3ZlciBpcyB0cnVlLgogICAgICAgIHRoaXMuaGlnaGxpZ2h0TW91c2VEb3duID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogaGlnaGxpZ2h0Q29sb3JzCiAgICAgICAgLy8gYXJyYXkgb2YgY29sb3JzIHRvIHVzZSB3aGVuIGhpZ2hsaWdodGluZyBhbiBhcmVhLgogICAgICAgIHRoaXMuaGlnaGxpZ2h0Q29sb3JzID0gW107CiAgICAgICAgLy8gcHJvcDogd2lkdGhSYXRpbwogICAgICAgIC8vIFRoZSByYXRpbyBvZiB0aGUgd2lkdGggb2YgdGhlIHRvcCBvZiB0aGUgZnVubmVsIHRvIHRoZSBib3R0b20uCiAgICAgICAgLy8gYSByYXRpbyBvZiAwIHdpbGwgbWFrZSBhbiB1cHNpZGUgZG93biBweXJhbWlkLiAKICAgICAgICB0aGlzLndpZHRoUmF0aW8gPSAwLjI7CiAgICAgICAgLy8gcHJvcDogbGluZVdpZHRoCiAgICAgICAgLy8gd2lkdGggb2YgbGluZSBpZiBhcmVhcyBhcmUgc3Ryb2tlZCBhbmQgbm90IGZpbGxlZC4KICAgICAgICB0aGlzLmxpbmVXaWR0aCA9IDI7CiAgICAgICAgLy8gcHJvcDogZGF0YUxhYmVscwogICAgICAgIC8vIEVpdGhlciAnbGFiZWwnLCAndmFsdWUnLCAncGVyY2VudCcgb3IgYW4gYXJyYXkgb2YgbGFiZWxzIHRvIHBsYWNlIG9uIHRoZSBwaWUgc2xpY2VzLgogICAgICAgIC8vIERlZmF1bHRzIHRvIHBlcmNlbnRhZ2Ugb2YgZWFjaCBwaWUgc2xpY2UuCiAgICAgICAgdGhpcy5kYXRhTGFiZWxzID0gJ3BlcmNlbnQnOwogICAgICAgIC8vIHByb3A6IHNob3dEYXRhTGFiZWxzCiAgICAgICAgLy8gdHJ1ZSB0byBzaG93IGRhdGEgbGFiZWxzIG9uIHNsaWNlcy4KICAgICAgICB0aGlzLnNob3dEYXRhTGFiZWxzID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogZGF0YUxhYmVsRm9ybWF0U3RyaW5nCiAgICAgICAgLy8gRm9ybWF0IHN0cmluZyBmb3IgZGF0YSBsYWJlbHMuICBJZiBub25lLCAnJXMnIGlzIHVzZWQgZm9yICJsYWJlbCIgYW5kIGZvciBhcnJheXMsICclZCcgZm9yIHZhbHVlIGFuZCAnJWQlJScgZm9yIHBlcmNlbnRhZ2UuCiAgICAgICAgdGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmcgPSBudWxsOwogICAgICAgIC8vIHByb3A6IGRhdGFMYWJlbFRocmVzaG9sZAogICAgICAgIC8vIFRocmVzaGhvbGQgaW4gcGVyY2VudGFnZSAoMCAtIDEwMCkgb2YgcGllIGFyZWEsIGJlbG93IHdoaWNoIG5vIGxhYmVsIHdpbGwgYmUgZGlzcGxheWVkLgogICAgICAgIC8vIFRoaXMgYXBwbGllcyB0byBhbGwgbGFiZWwgdHlwZXMsIG5vdCBqdXN0IHRvIHBlcmNlbnRhZ2UgbGFiZWxzLgogICAgICAgIHRoaXMuZGF0YUxhYmVsVGhyZXNob2xkID0gMzsKICAgICAgICB0aGlzLl90eXBlID0gJ2Z1bm5lbCc7CiAgICAgICAgCiAgICAgICAgdGhpcy50aWNrUmVuZGVyZXIgPSAkLmpxcGxvdC5GdW5uZWxUaWNrUmVuZGVyZXI7CiAgICAgICAgCiAgICAgICAgLy8gaWYgdXNlciBoYXMgcGFzc2VkIGluIGhpZ2hsaWdodE1vdXNlRG93biBvcHRpb24gYW5kIG5vdCBzZXQgaGlnaGxpZ2h0TW91c2VPdmVyLCBkaXNhYmxlIGhpZ2hsaWdodE1vdXNlT3ZlcgogICAgICAgIGlmIChvcHRpb25zLmhpZ2hsaWdodE1vdXNlRG93biAmJiBvcHRpb25zLmhpZ2hsaWdodE1vdXNlT3ZlciA9PSBudWxsKSB7CiAgICAgICAgICAgIG9wdGlvbnMuaGlnaGxpZ2h0TW91c2VPdmVyID0gZmFsc2U7CiAgICAgICAgfQogICAgICAgIAogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgIAogICAgICAgIC8vIGluZGV4IG9mIHRoZSBjdXJyZW50eSBoaWdobGlnaHRlZCBwb2ludCwgaWYgYW55CiAgICAgICAgdGhpcy5faGlnaGxpZ2h0ZWRQb2ludCA9IG51bGw7CiAgICAgICAgCiAgICAgICAgLy8gbGVuZ3RocyBvZiBiYXNlcywgb3IgaG9yaXpvbnRhbCBzaWRlcyBvZiBhcmVhcyBvZiB0cmFwZXpvaWQuCiAgICAgICAgdGhpcy5fYmFzZXMgPSBbXTsKICAgICAgICAvLyB0b3RhbCBhcmVhCiAgICAgICAgdGhpcy5fYXRvdDsKICAgICAgICAvLyBhcmVhcyBvZiBzZWdtZW50cy4KICAgICAgICB0aGlzLl9hcmVhcyA9IFtdOwogICAgICAgIC8vIHZlcnRpY2FsIGxlbmd0aHMgb2Ygc2VnbWVudHMuCiAgICAgICAgdGhpcy5fbGVuZ3RocyA9IFtdOwogICAgICAgIC8vIGFuZ2xlIG9mIHRoZSBmdW5uZWwgdG8gdmVydGljYWwuCiAgICAgICAgdGhpcy5fYW5nbGU7CiAgICAgICAgdGhpcy5fZGF0YUluZGljZXMgPSBbXTsKICAgICAgICAKICAgICAgICAvLyBzb3J0IGRhdGEKICAgICAgICB0aGlzLl91bm9yZGVyZWREYXRhID0gJC5leHRlbmQodHJ1ZSwgW10sIHRoaXMuZGF0YSk7CiAgICAgICAgdmFyIGlkeHMgPSAkLmV4dGVuZCh0cnVlLCBbXSwgdGhpcy5kYXRhKTsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8aWR4cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZHhzW2ldLnB1c2goaSk7CiAgICAgICAgfQogICAgICAgIHRoaXMuZGF0YS5zb3J0KCBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYlsxXSAtIGFbMV07IH0gKTsKICAgICAgICBpZHhzLnNvcnQoIGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBiWzFdIC0gYVsxXTsgfSk7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPGlkeHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdGhpcy5fZGF0YUluZGljZXMucHVzaChpZHhzW2ldWzJdKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gc2V0IGhpZ2hsaWdodCBjb2xvcnMgaWYgbm9uZSBwcm92aWRlZAogICAgICAgIGlmICh0aGlzLmhpZ2hsaWdodENvbG9ycy5sZW5ndGggPT0gMCkgewogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5zZXJpZXNDb2xvcnMubGVuZ3RoOyBpKyspewogICAgICAgICAgICAgICAgdmFyIHJnYmEgPSAkLmpxcGxvdC5nZXRDb2xvckNvbXBvbmVudHModGhpcy5zZXJpZXNDb2xvcnNbaV0pOwogICAgICAgICAgICAgICAgdmFyIG5ld3JnYiA9IFtyZ2JhWzBdLCByZ2JhWzFdLCByZ2JhWzJdXTsKICAgICAgICAgICAgICAgIHZhciBzdW0gPSBuZXdyZ2JbMF0gKyBuZXdyZ2JbMV0gKyBuZXdyZ2JbMl07CiAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8MzsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBkYXJrZW5pbmcsIGxvd2VzdCBjb2xvciBjb21wb25lbnQgY2FuIGJlIGlzIDYwLgogICAgICAgICAgICAgICAgICAgIG5ld3JnYltqXSA9IChzdW0gPiA1NzApID8gIG5ld3JnYltqXSAqIDAuOCA6IG5ld3JnYltqXSArIDAuNCAqICgyNTUgLSBuZXdyZ2Jbal0pOwogICAgICAgICAgICAgICAgICAgIG5ld3JnYltqXSA9IHBhcnNlSW50KG5ld3JnYltqXSwgMTApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRDb2xvcnMucHVzaCgncmdiKCcrbmV3cmdiWzBdKycsJytuZXdyZ2JbMV0rJywnK25ld3JnYlsyXSsnKScpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwbG90LnBvc3RQYXJzZU9wdGlvbnNIb29rcy5hZGRPbmNlKHBvc3RQYXJzZU9wdGlvbnMpOwogICAgICAgIHBsb3QucG9zdEluaXRIb29rcy5hZGRPbmNlKHBvc3RJbml0KTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RNb3VzZU1vdmUnLCBoYW5kbGVNb3ZlKTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RNb3VzZURvd24nLCBoYW5kbGVNb3VzZURvd24pOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdE1vdXNlVXAnLCBoYW5kbGVNb3VzZVVwKTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RDbGljaycsIGhhbmRsZUNsaWNrKTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RSaWdodENsaWNrJywgaGFuZGxlUmlnaHRDbGljayk7CiAgICAgICAgcGxvdC5wb3N0RHJhd0hvb2tzLmFkZE9uY2UocG9zdFBsb3REcmF3KTsgICAgICAgIAogICAgICAgIAogICAgfTsKICAgIAogICAgLy8gZ3JpZERhdGEgd2lsbCBiZSBvZiBmb3JtIFtsYWJlbCwgcGVyY2VudGFnZSBvZiB0b3RhbF0KICAgICQuanFwbG90LkZ1bm5lbFJlbmRlcmVyLnByb3RvdHlwZS5zZXRHcmlkRGF0YSA9IGZ1bmN0aW9uKHBsb3QpIHsKICAgICAgICAvLyBzZXQgZ3JpZERhdGEgcHJvcGVydHkuICBUaGlzIHdpbGwgaG9sZCBhbmdsZSBpbiByYWRpYW5zIG9mIGVhY2ggZGF0YSBwb2ludC4KICAgICAgICB2YXIgc3VtID0gMDsKICAgICAgICB2YXIgdGQgPSBbXTsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgc3VtICs9IHRoaXMuZGF0YVtpXVsxXTsKICAgICAgICAgICAgdGQucHVzaChbdGhpcy5kYXRhW2ldWzBdLCB0aGlzLmRhdGFbaV1bMV1dKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gbm9ybWFsaXplIHkgdmFsdWVzLCBzbyBhcmVhcyBhcmUgcHJvcG9ydGlvbmFsLgogICAgICAgIGZvciAodmFyIGk9MDsgaTx0ZC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB0ZFtpXVsxXSA9IHRkW2ldWzFdL3N1bTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgdGhpcy5fYmFzZXMgPSBuZXcgQXJyYXkodGQubGVuZ3RoICsgMSk7CiAgICAgICAgdGhpcy5fbGVuZ3RocyA9IG5ldyBBcnJheSh0ZC5sZW5ndGgpOwogICAgICAgIAogICAgICAgIHRoaXMuZ3JpZERhdGEgPSB0ZDsKICAgIH07CiAgICAKICAgICQuanFwbG90LkZ1bm5lbFJlbmRlcmVyLnByb3RvdHlwZS5tYWtlR3JpZERhdGEgPSBmdW5jdGlvbihkYXRhLCBwbG90KSB7CiAgICAgICAgLy8gc2V0IGdyaWREYXRhIHByb3BlcnR5LiAgVGhpcyB3aWxsIGhvbGQgYW5nbGUgaW4gcmFkaWFucyBvZiBlYWNoIGRhdGEgcG9pbnQuCiAgICAgICAgdmFyIHN1bSA9IDA7CiAgICAgICAgdmFyIHRkID0gW107CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAgIHN1bSArPSB0aGlzLmRhdGFbaV1bMV07CiAgICAgICAgICAgIHRkLnB1c2goW3RoaXMuZGF0YVtpXVswXSwgdGhpcy5kYXRhW2ldWzFdXSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIG5vcm1hbGl6ZSB5IHZhbHVlcywgc28gYXJlYXMgYXJlIHByb3BvcnRpb25hbC4KICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGQubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdGRbaV1bMV0gPSB0ZFtpXVsxXS9zdW07CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHRoaXMuX2Jhc2VzID0gbmV3IEFycmF5KHRkLmxlbmd0aCArIDEpOwogICAgICAgIHRoaXMuX2xlbmd0aHMgPSBuZXcgQXJyYXkodGQubGVuZ3RoKTsKICAgICAgICAKICAgICAgICByZXR1cm4gdGQ7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5GdW5uZWxSZW5kZXJlci5wcm90b3R5cGUuZHJhd1NlY3Rpb24gPSBmdW5jdGlvbiAoY3R4LCB2ZXJ0aWNlcywgY29sb3IsIGlzU2hhZG93KSB7CiAgICAgICAgdmFyIGZpbGwgPSB0aGlzLmZpbGw7CiAgICAgICAgdmFyIGxpbmVXaWR0aCA9IHRoaXMubGluZVdpZHRoOwogICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgCiAgICAgICAgaWYgKGlzU2hhZG93KSB7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLnNoYWRvd0RlcHRoOyBpKyspIHsKICAgICAgICAgICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgICAgICAgICBjdHgudHJhbnNsYXRlKHRoaXMuc2hhZG93T2Zmc2V0Kk1hdGguY29zKHRoaXMuc2hhZG93QW5nbGUvMTgwKk1hdGguUEkpLCB0aGlzLnNoYWRvd09mZnNldCpNYXRoLnNpbih0aGlzLnNoYWRvd0FuZ2xlLzE4MCpNYXRoLlBJKSk7CiAgICAgICAgICAgICAgICBkb0RyYXcoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZG9EcmF3KCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGZ1bmN0aW9uIGRvRHJhdyAoKSB7CiAgICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTsgIAogICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gY29sb3I7CiAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IGNvbG9yOwogICAgICAgICAgICBjdHgubGluZVdpZHRoID0gbGluZVdpZHRoOwogICAgICAgICAgICBjdHgubW92ZVRvKHZlcnRpY2VzWzBdWzBdLCB2ZXJ0aWNlc1swXVsxXSk7CiAgICAgICAgICAgIGZvciAodmFyIGk9MTsgaTw0OyBpKyspIHsKICAgICAgICAgICAgICAgIGN0eC5saW5lVG8odmVydGljZXNbaV1bMF0sIHZlcnRpY2VzW2ldWzFdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjdHguY2xvc2VQYXRoKCk7CiAgICAgICAgICAgIGlmIChmaWxsKSB7CiAgICAgICAgICAgICAgICBjdHguZmlsbCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgY3R4LnN0cm9rZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChpc1NoYWRvdykgewogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5zaGFkb3dEZXB0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBzZXJpZXMKICAgICQuanFwbG90LkZ1bm5lbFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24gKGN0eCwgZ2QsIG9wdGlvbnMsIHBsb3QpIHsKICAgICAgICB2YXIgaTsKICAgICAgICB2YXIgb3B0cyA9IChvcHRpb25zICE9IHVuZGVmaW5lZCkgPyBvcHRpb25zIDoge307CiAgICAgICAgLy8gb2Zmc2V0IGFuZCBkaXJlY3Rpb24gb2Ygb2Zmc2V0IGR1ZSB0byBsZWdlbmQgcGxhY2VtZW50CiAgICAgICAgdmFyIG9mZnggPSAwOwogICAgICAgIHZhciBvZmZ5ID0gMDsKICAgICAgICB2YXIgdHJhbnMgPSAxOwogICAgICAgIHRoaXMuX2FyZWFzID0gW107CiAgICAgICAgLy8gdmFyIGNvbG9yR2VuZXJhdG9yID0gbmV3IHRoaXMuY29sb3JHZW5lcmF0b3IodGhpcy5zZXJpZXNDb2xvcnMpOwogICAgICAgIGlmIChvcHRpb25zLmxlZ2VuZEluZm8gJiYgb3B0aW9ucy5sZWdlbmRJbmZvLnBsYWNlbWVudCA9PSAnaW5zaWRlR3JpZCcpIHsKICAgICAgICAgICAgdmFyIGxpID0gb3B0aW9ucy5sZWdlbmRJbmZvOwogICAgICAgICAgICBzd2l0Y2ggKGxpLmxvY2F0aW9uKSB7CiAgICAgICAgICAgICAgICBjYXNlICdudyc6CiAgICAgICAgICAgICAgICAgICAgb2ZmeCA9IGxpLndpZHRoICsgbGkueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3cnOgogICAgICAgICAgICAgICAgICAgIG9mZnggPSBsaS53aWR0aCArIGxpLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdzdyc6CiAgICAgICAgICAgICAgICAgICAgb2ZmeCA9IGxpLndpZHRoICsgbGkueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ25lJzoKICAgICAgICAgICAgICAgICAgICBvZmZ4ID0gbGkud2lkdGggKyBsaS54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIHRyYW5zID0gLTE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdlJzoKICAgICAgICAgICAgICAgICAgICBvZmZ4ID0gbGkud2lkdGggKyBsaS54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIHRyYW5zID0gLTE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdzZSc6CiAgICAgICAgICAgICAgICAgICAgb2ZmeCA9IGxpLndpZHRoICsgbGkueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICB0cmFucyA9IC0xOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnbic6CiAgICAgICAgICAgICAgICAgICAgb2ZmeSA9IGxpLmhlaWdodCArIGxpLnlvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgICAgICAgICBvZmZ5ID0gbGkuaGVpZ2h0ICsgbGkueW9mZnNldDsKICAgICAgICAgICAgICAgICAgICB0cmFucyA9IC0xOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICB2YXIgbG9mZiA9ICh0cmFucz09MSkgPyB0aGlzLnBhZGRpbmcubGVmdCArIG9mZnggOiB0aGlzLnBhZGRpbmcubGVmdDsKICAgICAgICB2YXIgdG9mZiA9ICh0cmFucz09MSkgPyB0aGlzLnBhZGRpbmcudG9wICsgb2ZmeSA6IHRoaXMucGFkZGluZy50b3A7CiAgICAgICAgdmFyIHJvZmYgPSAodHJhbnM9PS0xKSA/IHRoaXMucGFkZGluZy5yaWdodCArIG9mZnggOiB0aGlzLnBhZGRpbmcucmlnaHQ7CiAgICAgICAgdmFyIGJvZmYgPSAodHJhbnM9PS0xKSA/IHRoaXMucGFkZGluZy5ib3R0b20gKyBvZmZ5IDogdGhpcy5wYWRkaW5nLmJvdHRvbTsKICAgICAgICAKICAgICAgICB2YXIgc2hhZG93ID0gKG9wdHMuc2hhZG93ICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNoYWRvdyA6IHRoaXMuc2hhZG93OwogICAgICAgIHZhciBzaG93TGluZSA9IChvcHRzLnNob3dMaW5lICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNob3dMaW5lIDogdGhpcy5zaG93TGluZTsKICAgICAgICB2YXIgZmlsbCA9IChvcHRzLmZpbGwgIT0gdW5kZWZpbmVkKSA/IG9wdHMuZmlsbCA6IHRoaXMuZmlsbDsKICAgICAgICB2YXIgY3cgPSBjdHguY2FudmFzLndpZHRoOwogICAgICAgIHZhciBjaCA9IGN0eC5jYW52YXMuaGVpZ2h0OwogICAgICAgIHRoaXMuX2Jhc2VzWzBdID0gY3cgLSBsb2ZmIC0gcm9mZjsKICAgICAgICB2YXIgbHRvdCA9IHRoaXMuX2xlbmd0aCA9IGNoIC0gdG9mZiAtIGJvZmY7CgogICAgICAgIHZhciBoZW5kID0gdGhpcy5fYmFzZXNbMF0qdGhpcy53aWR0aFJhdGlvOwogICAgICAgIHRoaXMuX2F0b3QgPSBsdG90LzIgKiAodGhpcy5fYmFzZXNbMF0gKyB0aGlzLl9iYXNlc1swXSp0aGlzLndpZHRoUmF0aW8pOwoKICAgICAgICB0aGlzLl9hbmdsZSA9IE1hdGguYXRhbigodGhpcy5fYmFzZXNbMF0gLSBoZW5kKS8yL2x0b3QpOwoKICAgICAgICBmb3IgKGk9MDsgaTxnZC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB0aGlzLl9hcmVhcy5wdXNoKGdkW2ldWzFdICogdGhpcy5fYXRvdCk7CiAgICAgICAgfQoKICAgICAgICAKICAgICAgICB2YXIgZ3Vlc3MsIGVyciwgY291bnQsIGxzdW09MDsKICAgICAgICB2YXIgdG9sZXJhbmNlID0gMC4wMDAxOwoKICAgICAgICBmb3IgKGk9MDsgaTx0aGlzLl9hcmVhcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBndWVzcyA9IHRoaXMuX2FyZWFzW2ldL3RoaXMuX2Jhc2VzW2ldOwogICAgICAgICAgICBlcnIgPSA5OTk5OTk7CiAgICAgICAgICAgIHRoaXMuX2xlbmd0aHNbaV0gPSBndWVzczsKICAgICAgICAgICAgY291bnQgPSAwOwogICAgICAgICAgICB3aGlsZSAoZXJyID4gdGhpcy5fbGVuZ3Roc1tpXSp0b2xlcmFuY2UgJiYgY291bnQgPCAxMDApIHsKICAgICAgICAgICAgICAgIHRoaXMuX2xlbmd0aHNbaV0gPSB0aGlzLl9hcmVhc1tpXS8odGhpcy5fYmFzZXNbaV0gLSB0aGlzLl9sZW5ndGhzW2ldICogTWF0aC50YW4odGhpcy5fYW5nbGUpKTsKICAgICAgICAgICAgICAgIGVyciA9IE1hdGguYWJzKHRoaXMuX2xlbmd0aHNbaV0gLSBndWVzcyk7CiAgICAgICAgICAgICAgICB0aGlzLl9iYXNlc1tpKzFdID0gdGhpcy5fYmFzZXNbaV0gLSAoMip0aGlzLl9sZW5ndGhzW2ldKk1hdGgudGFuKHRoaXMuX2FuZ2xlKSk7CiAgICAgICAgICAgICAgICBndWVzcyA9IHRoaXMuX2xlbmd0aHNbaV07CiAgICAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxzdW0gKz0gdGhpcy5fbGVuZ3Roc1tpXTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gZmlndXJlIG91dCB2ZXJ0aWNlcyBvZiBlYWNoIHNlY3Rpb24KICAgICAgICB0aGlzLl92ZXJ0aWNlcyA9IG5ldyBBcnJheShnZC5sZW5ndGgpOwogICAgICAgIAogICAgICAgIC8vIHRoZXNlIGFyZSA0IGNvbmVycyBvZiBlbnRpcmUgdHJhcGV6b2lkCiAgICAgICAgdmFyIHAwID0gW2xvZmYsIHRvZmZdLAogICAgICAgICAgICBwMSA9IFtsb2ZmK3RoaXMuX2Jhc2VzWzBdLCB0b2ZmXSwKICAgICAgICAgICAgcDIgPSBbbG9mZiArICh0aGlzLl9iYXNlc1swXSAtIHRoaXMuX2Jhc2VzW3RoaXMuX2Jhc2VzLmxlbmd0aC0xXSkvMiwgdG9mZiArIHRoaXMuX2xlbmd0aF0sCiAgICAgICAgICAgIHAzID0gW3AyWzBdICsgdGhpcy5fYmFzZXNbdGhpcy5fYmFzZXMubGVuZ3RoLTFdLCBwMlsxXV07CiAgICAgICAgICAgIAogICAgICAgIC8vIGVxdWF0aW9ucyBvZiByaWdodCBhbmQgbGVmdCBzaWRlcywgcmV0dXJucyB4LCB5IHZhbHVlcyBnaXZlbiBoZWlnaHQgb2Ygc2VjdGlvbiAoeSB2YWx1ZSkKICAgICAgICBmdW5jdGlvbiBmaW5kbGVmdCAobCkgewogICAgICAgICAgICB2YXIgbSA9IChwMFsxXSAtIHAyWzFdKS8ocDBbMF0gLSBwMlswXSk7CiAgICAgICAgICAgIHZhciBiID0gcDBbMV0gLSBtKnAwWzBdOwogICAgICAgICAgICB2YXIgeSA9IGwgKyBwMFsxXTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHJldHVybiBbKHkgLSBiKS9tLCB5XTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gZmluZHJpZ2h0IChsKSB7CiAgICAgICAgICAgIHZhciBtID0gKHAxWzFdIC0gcDNbMV0pLyhwMVswXSAtIHAzWzBdKTsKICAgICAgICAgICAgdmFyIGIgPSBwMVsxXSAtIG0qcDFbMF07CiAgICAgICAgICAgIHZhciB5ID0gbCArIHAxWzFdOwogICAgICAgICAgICAKICAgICAgICAgICAgcmV0dXJuIFsoeSAtIGIpL20sIHldOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB2YXIgeCA9IG9mZngsIHkgPSBvZmZ5OwogICAgICAgIHZhciBoPTAsIGFkaj0wOwogICAgICAgIAogICAgICAgIGZvciAoaT0wOyBpPGdkLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHRoaXMuX3ZlcnRpY2VzW2ldID0gbmV3IEFycmF5KCk7CiAgICAgICAgICAgIHZhciB2ID0gdGhpcy5fdmVydGljZXNbaV07CiAgICAgICAgICAgIHZhciBzbSA9IHRoaXMuc2VjdGlvbk1hcmdpbjsKICAgICAgICAgICAgaWYgKGkgPT0gMCkgewogICAgICAgICAgICAgICAgYWRqID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaSA9PSAxKSB7CiAgICAgICAgICAgICAgICBhZGogPSBzbS8zOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGkgPiAwICYmIGkgPCBnZC5sZW5ndGgtMSkgewogICAgICAgICAgICAgICAgYWRqID0gc20vMjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChpID09IGdkLmxlbmd0aCAtMSkgewogICAgICAgICAgICAgICAgYWRqID0gMipzbS8zOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHYucHVzaChmaW5kbGVmdChoK2FkaikpOwogICAgICAgICAgICB2LnB1c2goZmluZHJpZ2h0KGgrYWRqKSk7CiAgICAgICAgICAgIGggKz0gdGhpcy5fbGVuZ3Roc1tpXTsKICAgICAgICAgICAgaWYgKGkgPT0gMCkgewogICAgICAgICAgICAgICAgYWRqID0gLTIqc20vMzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChpID4gMCAmJiBpIDwgZ2QubGVuZ3RoLTEpIHsKICAgICAgICAgICAgICAgIGFkaiA9IC1zbS8yOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGkgPT0gZ2QubGVuZ3RoIC0gMSkgewogICAgICAgICAgICAgICAgYWRqID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICB2LnB1c2goZmluZHJpZ2h0KGgrYWRqKSk7CiAgICAgICAgICAgIHYucHVzaChmaW5kbGVmdChoK2FkaikpOwogICAgICAgICAgICAKICAgICAgICB9CgogICAgICAgIGlmICh0aGlzLnNoYWRvdykgewogICAgICAgICAgICB2YXIgc2hhZG93Q29sb3IgPSAncmdiYSgwLDAsMCwnK3RoaXMuc2hhZG93QWxwaGErJyknOwogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8Z2QubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuZHJhd1NlY3Rpb24uY2FsbCAodGhpcywgY3R4LCB0aGlzLl92ZXJ0aWNlc1tpXSwgc2hhZG93Q29sb3IsIHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICBmb3IgKHZhciBpPTA7IGk8Z2QubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHYgPSB0aGlzLl92ZXJ0aWNlc1tpXTsKICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5kcmF3U2VjdGlvbi5jYWxsICh0aGlzLCBjdHgsIHYsIHRoaXMuc2VyaWVzQ29sb3JzW2ldKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLnNob3dEYXRhTGFiZWxzICYmIGdkW2ldWzFdKjEwMCA+PSB0aGlzLmRhdGFMYWJlbFRocmVzaG9sZCkgewogICAgICAgICAgICAgICAgdmFyIGZzdHIsIGxhYmVsOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhTGFiZWxzID09ICdsYWJlbCcpIHsKICAgICAgICAgICAgICAgICAgICBmc3RyID0gdGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmcgfHwgJyVzJzsKICAgICAgICAgICAgICAgICAgICBsYWJlbCA9ICQuanFwbG90LnNwcmludGYoZnN0ciwgZ2RbaV1bMF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5kYXRhTGFiZWxzID09ICd2YWx1ZScpIHsKICAgICAgICAgICAgICAgICAgICBmc3RyID0gdGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmcgfHwgJyVkJzsKICAgICAgICAgICAgICAgICAgICBsYWJlbCA9ICQuanFwbG90LnNwcmludGYoZnN0ciwgdGhpcy5kYXRhW2ldWzFdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZGF0YUxhYmVscyA9PSAncGVyY2VudCcpIHsKICAgICAgICAgICAgICAgICAgICBmc3RyID0gdGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmcgfHwgJyVkJSUnOwogICAgICAgICAgICAgICAgICAgIGxhYmVsID0gJC5qcXBsb3Quc3ByaW50Zihmc3RyLCBnZFtpXVsxXSoxMDApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5kYXRhTGFiZWxzLmNvbnN0cnVjdG9yID09IEFycmF5KSB7CiAgICAgICAgICAgICAgICAgICAgZnN0ciA9IHRoaXMuZGF0YUxhYmVsRm9ybWF0U3RyaW5nIHx8ICclcyc7CiAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSAkLmpxcGxvdC5zcHJpbnRmKGZzdHIsIHRoaXMuZGF0YUxhYmVsc1t0aGlzLl9kYXRhSW5kaWNlc1tpXV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgZmFjdCA9ICh0aGlzLl9yYWRpdXMgKSAqIHRoaXMuZGF0YUxhYmVsUG9zaXRpb25GYWN0b3IgKyB0aGlzLnNsaWNlTWFyZ2luICsgdGhpcy5kYXRhTGFiZWxOdWRnZTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIHggPSAodlswXVswXSArIHZbMV1bMF0pLzIgKyB0aGlzLmNhbnZhcy5fb2Zmc2V0cy5sZWZ0OwogICAgICAgICAgICAgICAgdmFyIHkgPSAodlsxXVsxXSArIHZbMl1bMV0pLzIgKyB0aGlzLmNhbnZhcy5fb2Zmc2V0cy50b3A7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBsYWJlbGVsZW0gPSAkKCc8c3BhbiBjbGFzcz0ianFwbG90LWZ1bm5lbC1zZXJpZXMganFwbG90LWRhdGEtbGFiZWwiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsiPicgKyBsYWJlbCArICc8L3NwYW4+JykuaW5zZXJ0QmVmb3JlKHBsb3QuZXZlbnRDYW52YXMuX2VsZW0pOwogICAgICAgICAgICAgICAgeCAtPSBsYWJlbGVsZW0ud2lkdGgoKS8yOwogICAgICAgICAgICAgICAgeSAtPSBsYWJlbGVsZW0uaGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgIHggPSBNYXRoLnJvdW5kKHgpOwogICAgICAgICAgICAgICAgeSA9IE1hdGgucm91bmQoeSk7CiAgICAgICAgICAgICAgICBsYWJlbGVsZW0uY3NzKHtsZWZ0OiB4LCB0b3A6IHl9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgICAgICAgIAogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRnVubmVsQXhpc1JlbmRlcmVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgJC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyLmNhbGwodGhpcyk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5GdW5uZWxBeGlzUmVuZGVyZXIucHJvdG90eXBlID0gbmV3ICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlcigpOwogICAgJC5qcXBsb3QuRnVubmVsQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LkZ1bm5lbEF4aXNSZW5kZXJlcjsKICAgICAgICAKICAgIAogICAgLy8gVGhlcmUgYXJlIG5vIHRyYWRpdGlvbmFsIGF4ZXMgb24gYSBmdW5uZWwgY2hhcnQuICBXZSBqdXN0IG5lZWQgdG8gcHJvdmlkZQogICAgLy8gZHVtbXkgb2JqZWN0cyB3aXRoIHByb3BlcnRpZXMgc28gdGhlIHBsb3Qgd2lsbCByZW5kZXIuCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBheGlzIG9iamVjdC4KICAgICQuanFwbG90LkZ1bm5lbEF4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpewogICAgICAgIC8vCiAgICAgICAgdGhpcy50aWNrUmVuZGVyZXIgPSAkLmpxcGxvdC5GdW5uZWxUaWNrUmVuZGVyZXI7CiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CiAgICAgICAgLy8gSSBkb24ndCB0aGluayBJJ20gZ29pbmcgdG8gbmVlZCBfZGF0YUJvdW5kcyBoZXJlLgogICAgICAgIC8vIGhhdmUgdG8gZ28gQXhpcyBzY2FsaW5nIGluIGEgd2F5IHRvIGZpdCBjaGFydCBvbnRvIHBsb3QgYXJlYQogICAgICAgIC8vIGFuZCBwcm92aWRlIHUycCBhbmQgcDJ1IGZ1bmN0aW9uYWxpdHkgZm9yIG1vdXNlIGN1cnNvciwgZXRjLgogICAgICAgIC8vIGZvciBjb252aWVuZW5jZSBzZXQgX2RhdGFCb3VuZHMgdG8gMCBhbmQgMTAwIGFuZAogICAgICAgIC8vIHNldCBtaW4vbWF4IHRvIDAgYW5kIDEwMC4KICAgICAgICB0aGlzLl9kYXRhQm91bmRzID0ge21pbjowLCBtYXg6MTAwfTsKICAgICAgICB0aGlzLm1pbiA9IDA7CiAgICAgICAgdGhpcy5tYXggPSAxMDA7CiAgICAgICAgdGhpcy5zaG93VGlja3MgPSBmYWxzZTsKICAgICAgICB0aGlzLnRpY2tzID0gW107CiAgICAgICAgdGhpcy5zaG93TWFyayA9IGZhbHNlOwogICAgICAgIHRoaXMuc2hvdyA9IGZhbHNlOyAKICAgIH07CiAgICAKICAgIAogICAgCiAgICAvKioKICAgICAqIENsYXNzOiAkLmpxcGxvdC5GdW5uZWxMZWdlbmRSZW5kZXJlcgogICAgICogTGVnZW5kIFJlbmRlcmVyIHNwZWNpZmljIHRvIGZ1bm5lbCBwbG90cy4gIFNldCBieSBkZWZhdWx0CiAgICAgKiB3aGVuIHRoZSB1c2VyIGNyZWF0ZXMgYSBmdW5uZWwgcGxvdC4KICAgICAqLwogICAgJC5qcXBsb3QuRnVubmVsTGVnZW5kUmVuZGVyZXIgPSBmdW5jdGlvbigpewogICAgICAgICQuanFwbG90LlRhYmxlTGVnZW5kUmVuZGVyZXIuY2FsbCh0aGlzKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkZ1bm5lbExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyKCk7CiAgICAkLmpxcGxvdC5GdW5uZWxMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5GdW5uZWxMZWdlbmRSZW5kZXJlcjsKICAgIAogICAgJC5qcXBsb3QuRnVubmVsTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAvLwogICAgICAgIC8vIHByb3A6IG51bWJlclJvd3MKICAgICAgICAvLyBNYXhpbXVtIG51bWJlciBvZiByb3dzIGluIHRoZSBsZWdlbmQuICAwIG9yIG51bGwgZm9yIHVubGltaXRlZC4KICAgICAgICB0aGlzLm51bWJlclJvd3MgPSBudWxsOwogICAgICAgIC8vIHByb3A6IG51bWJlckNvbHVtbnMKICAgICAgICAvLyBNYXhpbXVtIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBsZWdlbmQuICAwIG9yIG51bGwgZm9yIHVubGltaXRlZC4KICAgICAgICB0aGlzLm51bWJlckNvbHVtbnMgPSBudWxsOwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggY29udGV4dCBvZiBsZWdlbmQKICAgICQuanFwbG90LkZ1bm5lbExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGxlZ2VuZCA9IHRoaXM7CiAgICAgICAgaWYgKHRoaXMuc2hvdykgewogICAgICAgICAgICB2YXIgc2VyaWVzID0gdGhpcy5fc2VyaWVzOwogICAgICAgICAgICB2YXIgc3MgPSAncG9zaXRpb246YWJzb2x1dGU7JzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMuYmFja2dyb3VuZCkgPyAnYmFja2dyb3VuZDonK3RoaXMuYmFja2dyb3VuZCsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMuYm9yZGVyKSA/ICdib3JkZXI6Jyt0aGlzLmJvcmRlcisnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMuZm9udFNpemUpID8gJ2ZvbnQtc2l6ZTonK3RoaXMuZm9udFNpemUrJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLmZvbnRGYW1pbHkpID8gJ2ZvbnQtZmFtaWx5OicrdGhpcy5mb250RmFtaWx5Kyc7JyA6ICcnOwogICAgICAgICAgICBzcyArPSAodGhpcy50ZXh0Q29sb3IpID8gJ2NvbG9yOicrdGhpcy50ZXh0Q29sb3IrJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLm1hcmdpblRvcCAhPSBudWxsKSA/ICdtYXJnaW4tdG9wOicrdGhpcy5tYXJnaW5Ub3ArJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLm1hcmdpbkJvdHRvbSAhPSBudWxsKSA/ICdtYXJnaW4tYm90dG9tOicrdGhpcy5tYXJnaW5Cb3R0b20rJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLm1hcmdpbkxlZnQgIT0gbnVsbCkgPyAnbWFyZ2luLWxlZnQ6Jyt0aGlzLm1hcmdpbkxlZnQrJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLm1hcmdpblJpZ2h0ICE9IG51bGwpID8gJ21hcmdpbi1yaWdodDonK3RoaXMubWFyZ2luUmlnaHQrJzsnIDogJyc7CiAgICAgICAgICAgIHRoaXMuX2VsZW0gPSAkKCc8dGFibGUgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSInK3NzKyciPjwvdGFibGU+Jyk7CiAgICAgICAgICAgIC8vIEZ1bm5lbCBjaGFydHMgbGVnZW5kcyBkb24ndCBnbyBieSBudW1iZXIgb2Ygc2VyaWVzLCBidXQgYnkgbnVtYmVyIG9mIGRhdGEgcG9pbnRzCiAgICAgICAgICAgIC8vIGluIHRoZSBzZXJpZXMuICBSZWZhY3RvciB0aGluZ3MgaGVyZSBmb3IgdGhhdC4KICAgICAgICAgICAgCiAgICAgICAgICAgIHZhciBwYWQgPSBmYWxzZSwgCiAgICAgICAgICAgICAgICByZXZlcnNlID0gZmFsc2UsCiAgICAgICAgICAgICAgICBuciwgbmM7CiAgICAgICAgICAgIHZhciBzID0gc2VyaWVzWzBdOwogICAgICAgICAgICB2YXIgY29sb3JHZW5lcmF0b3IgPSBuZXcgJC5qcXBsb3QuQ29sb3JHZW5lcmF0b3Iocy5zZXJpZXNDb2xvcnMpOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHMuc2hvdykgewogICAgICAgICAgICAgICAgdmFyIHBkID0gcy5kYXRhOwogICAgICAgICAgICAgICAgaWYgKHRoaXMubnVtYmVyUm93cykgewogICAgICAgICAgICAgICAgICAgIG5yID0gdGhpcy5udW1iZXJSb3dzOwogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5udW1iZXJDb2x1bW5zKXsKICAgICAgICAgICAgICAgICAgICAgICAgbmMgPSBNYXRoLmNlaWwocGQubGVuZ3RoL25yKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgbmMgPSB0aGlzLm51bWJlckNvbHVtbnM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5udW1iZXJDb2x1bW5zKSB7CiAgICAgICAgICAgICAgICAgICAgbmMgPSB0aGlzLm51bWJlckNvbHVtbnM7CiAgICAgICAgICAgICAgICAgICAgbnIgPSBNYXRoLmNlaWwocGQubGVuZ3RoL3RoaXMubnVtYmVyQ29sdW1ucyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBuciA9IHBkLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBuYyA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBpLCBqLCB0ciwgdGQxLCB0ZDIsIGx0LCBycywgY29sb3I7CiAgICAgICAgICAgICAgICB2YXIgaWR4ID0gMDsgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPG5yOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAocmV2ZXJzZSl7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyID0gJCgnPHRyIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIj48L3RyPicpLnByZXBlbmRUbyh0aGlzLl9lbGVtKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgdHIgPSAkKCc8dHIgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiPjwvdHI+JykuYXBwZW5kVG8odGhpcy5fZWxlbSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZvciAoaj0wOyBqPG5jOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA8IHBkLmxlbmd0aCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsdCA9IHRoaXMubGFiZWxzW2lkeF0gfHwgcGRbaWR4XVswXS50b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBjb2xvckdlbmVyYXRvci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJldmVyc2UpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpPjApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IG5yIC0xKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcnMgPSAocGFkKSA/IHRoaXMucm93U3BhY2luZyA6ICcwJzsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxID0gJCgnPHRkIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6JytycysnOyI+JysKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdj48ZGl2IGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaCIgc3R5bGU9ImJvcmRlci1jb2xvcjonK2NvbG9yKyc7Ij48L2Rpdj4nKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj48L3RkPicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQyID0gJCgnPHRkIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIiBzdHlsZT0icGFkZGluZy10b3A6JytycysnOyI+PC90ZD4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVzY2FwZUh0bWwpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi50ZXh0KGx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5odG1sKGx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXZlcnNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQyLnByZXBlbmRUbyh0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxLnByZXBlbmRUbyh0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDEuYXBwZW5kVG8odHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5hcHBlbmRUbyh0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlkeCsrOwogICAgICAgICAgICAgICAgICAgIH0gICAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy5fZWxlbTsgICAgICAgICAgICAgICAgCiAgICB9OwogICAgCiAgICAvLyAkLmpxcGxvdC5GdW5uZWxMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUucGFjayA9IGZ1bmN0aW9uKG9mZnNldHMpIHsKICAgIC8vICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAvLyAgICAgICAgIC8vIGZha2UgYSBncmlkIGZvciBwb3NpdGlvbmluZwogICAgLy8gICAgICAgICB2YXIgZ3JpZCA9IHtfdG9wOm9mZnNldHMudG9wLCBfbGVmdDpvZmZzZXRzLmxlZnQsIF9yaWdodDpvZmZzZXRzLnJpZ2h0LCBfYm90dG9tOnRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIG9mZnNldHMuYm90dG9tfTsgICAgICAgIAogICAgLy8gICAgICAgICBpZiAodGhpcy5wbGFjZW1lbnQgPT0gJ2luc2lkZUdyaWQnKSB7CiAgICAvLyAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubG9jYXRpb24pIHsKICAgIC8vICAgICAgICAgICAgICAgICBjYXNlICdudyc6CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZ3JpZC5fbGVmdCArIHRoaXMueG9mZnNldDsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBncmlkLl90b3AgKyB0aGlzLnlvZmZzZXQ7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCdsZWZ0JywgYSk7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCd0b3AnLCBiKTsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAvLyAgICAgICAgICAgICAgICAgY2FzZSAnbic6CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gKG9mZnNldHMubGVmdCArICh0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIG9mZnNldHMucmlnaHQpKS8yIC0gdGhpcy5nZXRXaWR0aCgpLzI7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gZ3JpZC5fdG9wICsgdGhpcy55b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcygnbGVmdCcsIGEpOwogICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcygndG9wJywgYik7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgLy8gICAgICAgICAgICAgICAgIGNhc2UgJ25lJzoKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBvZmZzZXRzLnJpZ2h0ICsgdGhpcy54b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQuX3RvcCArIHRoaXMueW9mZnNldDsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe3JpZ2h0OmEsIHRvcDpifSk7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgLy8gICAgICAgICAgICAgICAgIGNhc2UgJ2UnOgogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG9mZnNldHMucmlnaHQgKyB0aGlzLnhvZmZzZXQ7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gKG9mZnNldHMudG9wICsgKHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIG9mZnNldHMuYm90dG9tKSkvMiAtIHRoaXMuZ2V0SGVpZ2h0KCkvMjsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe3JpZ2h0OmEsIHRvcDpifSk7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgLy8gICAgICAgICAgICAgICAgIGNhc2UgJ3NlJzoKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBvZmZzZXRzLnJpZ2h0ICsgdGhpcy54b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IG9mZnNldHMuYm90dG9tICsgdGhpcy55b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6YSwgYm90dG9tOmJ9KTsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAvLyAgICAgICAgICAgICAgICAgY2FzZSAncyc6CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gKG9mZnNldHMubGVmdCArICh0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIG9mZnNldHMucmlnaHQpKS8yIC0gdGhpcy5nZXRXaWR0aCgpLzI7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gb2Zmc2V0cy5ib3R0b20gKyB0aGlzLnlvZmZzZXQ7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtsZWZ0OmEsIGJvdHRvbTpifSk7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgLy8gICAgICAgICAgICAgICAgIGNhc2UgJ3N3JzoKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBncmlkLl9sZWZ0ICsgdGhpcy54b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IG9mZnNldHMuYm90dG9tICsgdGhpcy55b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7bGVmdDphLCBib3R0b206Yn0pOwogICAgLy8gICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgIC8vICAgICAgICAgICAgICAgICBjYXNlICd3JzoKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBncmlkLl9sZWZ0ICsgdGhpcy54b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IChvZmZzZXRzLnRvcCArICh0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQgLSBvZmZzZXRzLmJvdHRvbSkpLzIgLSB0aGlzLmdldEhlaWdodCgpLzI7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtsZWZ0OmEsIHRvcDpifSk7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgLy8gICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICAvLyBzYW1lIGFzICdzZScKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBncmlkLl9yaWdodCAtIHRoaXMueG9mZnNldDsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBncmlkLl9ib3R0b20gKyB0aGlzLnlvZmZzZXQ7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtyaWdodDphLCBib3R0b206Yn0pOwogICAgLy8gICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgIC8vICAgICAgICAgICAgIH0KICAgIC8vICAgICAgICAgICAgIAogICAgLy8gICAgICAgICB9CiAgICAvLyAgICAgICAgIGVsc2UgewogICAgLy8gICAgICAgICAgICAgc3dpdGNoICh0aGlzLmxvY2F0aW9uKSB7CiAgICAvLyAgICAgICAgICAgICAgICAgY2FzZSAnbncnOgogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoIC0gZ3JpZC5fbGVmdCArIHRoaXMueG9mZnNldDsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBncmlkLl90b3AgKyB0aGlzLnlvZmZzZXQ7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCdyaWdodCcsIGEpOwogICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcygndG9wJywgYik7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgLy8gICAgICAgICAgICAgICAgIGNhc2UgJ24nOgogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IChvZmZzZXRzLmxlZnQgKyAodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBvZmZzZXRzLnJpZ2h0KSkvMiAtIHRoaXMuZ2V0V2lkdGgoKS8yOwogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIGdyaWQuX3RvcCArIHRoaXMueW9mZnNldDsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoJ2xlZnQnLCBhKTsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoJ2JvdHRvbScsIGIpOwogICAgLy8gICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgIC8vICAgICAgICAgICAgICAgICBjYXNlICduZSc6CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBvZmZzZXRzLnJpZ2h0ICsgdGhpcy54b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQuX3RvcCArIHRoaXMueW9mZnNldDsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe2xlZnQ6YSwgdG9wOmJ9KTsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAvLyAgICAgICAgICAgICAgICAgY2FzZSAnZSc6CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBvZmZzZXRzLnJpZ2h0ICsgdGhpcy54b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IChvZmZzZXRzLnRvcCArICh0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQgLSBvZmZzZXRzLmJvdHRvbSkpLzIgLSB0aGlzLmdldEhlaWdodCgpLzI7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtsZWZ0OmEsIHRvcDpifSk7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgLy8gICAgICAgICAgICAgICAgIGNhc2UgJ3NlJzoKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIG9mZnNldHMucmlnaHQgKyB0aGlzLnhvZmZzZXQ7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gb2Zmc2V0cy5ib3R0b20gKyB0aGlzLnlvZmZzZXQ7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtsZWZ0OmEsIGJvdHRvbTpifSk7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgLy8gICAgICAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IChvZmZzZXRzLmxlZnQgKyAodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBvZmZzZXRzLnJpZ2h0KSkvMiAtIHRoaXMuZ2V0V2lkdGgoKS8yOwogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIG9mZnNldHMuYm90dG9tICsgdGhpcy55b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7bGVmdDphLCB0b3A6Yn0pOwogICAgLy8gICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgIC8vICAgICAgICAgICAgICAgICBjYXNlICdzdyc6CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBncmlkLl9sZWZ0ICsgdGhpcy54b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IG9mZnNldHMuYm90dG9tICsgdGhpcy55b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6YSwgYm90dG9tOmJ9KTsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAvLyAgICAgICAgICAgICAgICAgY2FzZSAndyc6CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBncmlkLl9sZWZ0ICsgdGhpcy54b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IChvZmZzZXRzLnRvcCArICh0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQgLSBvZmZzZXRzLmJvdHRvbSkpLzIgLSB0aGlzLmdldEhlaWdodCgpLzI7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtyaWdodDphLCB0b3A6Yn0pOwogICAgLy8gICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgIC8vICAgICAgICAgICAgICAgICBkZWZhdWx0OiAgLy8gc2FtZSBhcyAnc2UnCiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZ3JpZC5fcmlnaHQgLSB0aGlzLnhvZmZzZXQ7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gZ3JpZC5fYm90dG9tICsgdGhpcy55b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6YSwgYm90dG9tOmJ9KTsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAvLyAgICAgICAgICAgICB9CiAgICAvLyAgICAgICAgIH0KICAgIC8vICAgICB9IAogICAgLy8gfTsKICAgIAogICAgLy8gc2V0dXAgZGVmYXVsdCByZW5kZXJlcnMgZm9yIGF4ZXMgYW5kIGxlZ2VuZCBzbyB1c2VyIGRvZXNuJ3QgaGF2ZSB0bwogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgcGxvdAogICAgZnVuY3Rpb24gcHJlSW5pdCh0YXJnZXQsIGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgICAgICBvcHRpb25zLmF4ZXNEZWZhdWx0cyA9IG9wdGlvbnMuYXhlc0RlZmF1bHRzIHx8IHt9OwogICAgICAgIG9wdGlvbnMubGVnZW5kID0gb3B0aW9ucy5sZWdlbmQgfHwge307CiAgICAgICAgb3B0aW9ucy5zZXJpZXNEZWZhdWx0cyA9IG9wdGlvbnMuc2VyaWVzRGVmYXVsdHMgfHwge307CiAgICAgICAgLy8gb25seSBzZXQgdGhlc2UgaWYgdGhlcmUgaXMgYSBmdW5uZWwgc2VyaWVzCiAgICAgICAgdmFyIHNldG9wdHMgPSBmYWxzZTsKICAgICAgICBpZiAob3B0aW9ucy5zZXJpZXNEZWZhdWx0cy5yZW5kZXJlciA9PSAkLmpxcGxvdC5GdW5uZWxSZW5kZXJlcikgewogICAgICAgICAgICBzZXRvcHRzID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAob3B0aW9ucy5zZXJpZXMpIHsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpIDwgb3B0aW9ucy5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnNlcmllc1tpXS5yZW5kZXJlciA9PSAkLmpxcGxvdC5GdW5uZWxSZW5kZXJlcikgewogICAgICAgICAgICAgICAgICAgIHNldG9wdHMgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChzZXRvcHRzKSB7CiAgICAgICAgICAgIG9wdGlvbnMuYXhlc0RlZmF1bHRzLnJlbmRlcmVyID0gJC5qcXBsb3QuRnVubmVsQXhpc1JlbmRlcmVyOwogICAgICAgICAgICBvcHRpb25zLmxlZ2VuZC5yZW5kZXJlciA9ICQuanFwbG90LkZ1bm5lbExlZ2VuZFJlbmRlcmVyOwogICAgICAgICAgICBvcHRpb25zLmxlZ2VuZC5wcmVEcmF3ID0gdHJ1ZTsKICAgICAgICAgICAgb3B0aW9ucy5zb3J0RGF0YSA9IGZhbHNlOwogICAgICAgICAgICBvcHRpb25zLnNlcmllc0RlZmF1bHRzLnBvaW50TGFiZWxzID0ge3Nob3c6IGZhbHNlfTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIHBvc3RJbml0KHRhcmdldCwgZGF0YSwgb3B0aW9ucykgewogICAgICAgIC8vIGlmIG11bHRpcGxlIHNlcmllcywgYWRkIGEgcmVmZXJlbmNlIHRvIHRoZSBwcmV2aW91cyBvbmUgc28gdGhhdAogICAgICAgIC8vIGZ1bm5lbCByaW5ncyBjYW4gbmVzdC4KICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKHRoaXMuc2VyaWVzW2ldLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09ICQuanFwbG90LkZ1bm5lbFJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAvLyBkb24ndCBhbGxvdyBtb3VzZW92ZXIgYW5kIG1vdXNlZG93biBhdCBzYW1lIHRpbWUuCiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZXJpZXNbaV0uaGlnaGxpZ2h0TW91c2VPdmVyKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNbaV0uaGlnaGxpZ2h0TW91c2VEb3duID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHBsb3QKICAgIGZ1bmN0aW9uIHBvc3RQYXJzZU9wdGlvbnMob3B0aW9ucykgewogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLnNlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB0aGlzLnNlcmllc1tpXS5zZXJpZXNDb2xvcnMgPSB0aGlzLnNlcmllc0NvbG9yczsKICAgICAgICAgICAgdGhpcy5zZXJpZXNbaV0uY29sb3JHZW5lcmF0b3IgPSAkLmpxcGxvdC5jb2xvckdlbmVyYXRvcjsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhpZ2hsaWdodCAocGxvdCwgc2lkeCwgcGlkeCkgewogICAgICAgIHZhciBzID0gcGxvdC5zZXJpZXNbc2lkeF07CiAgICAgICAgdmFyIGNhbnZhcyA9IHBsb3QucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7CiAgICAgICAgY2FudmFzLl9jdHguY2xlYXJSZWN0KDAsMCxjYW52YXMuX2N0eC5jYW52YXMud2lkdGgsIGNhbnZhcy5fY3R4LmNhbnZhcy5oZWlnaHQpOwogICAgICAgIHMuX2hpZ2hsaWdodGVkUG9pbnQgPSBwaWR4OwogICAgICAgIHBsb3QucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ID0gc2lkeDsKICAgICAgICBzLnJlbmRlcmVyLmRyYXdTZWN0aW9uLmNhbGwocywgY2FudmFzLl9jdHgsIHMuX3ZlcnRpY2VzW3BpZHhdLCBzLmhpZ2hsaWdodENvbG9yc1twaWR4XSwgZmFsc2UpOwogICAgfQogICAgCiAgICBmdW5jdGlvbiB1bmhpZ2hsaWdodCAocGxvdCkgewogICAgICAgIHZhciBjYW52YXMgPSBwbG90LnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzOwogICAgICAgIGNhbnZhcy5fY3R4LmNsZWFyUmVjdCgwLDAsIGNhbnZhcy5fY3R4LmNhbnZhcy53aWR0aCwgY2FudmFzLl9jdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHBsb3Quc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHBsb3Quc2VyaWVzW2ldLl9oaWdobGlnaHRlZFBvaW50ID0gbnVsbDsKICAgICAgICB9CiAgICAgICAgcGxvdC5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXggPSBudWxsOwogICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoJ2pxcGxvdERhdGFVbmhpZ2hsaWdodCcpOwogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVNb3ZlKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIGlmIChuZWlnaGJvcikgewogICAgICAgICAgICB2YXIgaW5zID0gW25laWdoYm9yLnNlcmllc0luZGV4LCBuZWlnaGJvci5wb2ludEluZGV4LCBuZWlnaGJvci5kYXRhXTsKICAgICAgICAgICAgdmFyIGV2dDEgPSBqUXVlcnkuRXZlbnQoJ2pxcGxvdERhdGFNb3VzZU92ZXInKTsKICAgICAgICAgICAgZXZ0MS5wYWdlWCA9IGV2LnBhZ2VYOwogICAgICAgICAgICBldnQxLnBhZ2VZID0gZXYucGFnZVk7CiAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoZXZ0MSwgaW5zKTsKICAgICAgICAgICAgaWYgKHBsb3Quc2VyaWVzW2luc1swXV0uaGlnaGxpZ2h0TW91c2VPdmVyICYmICEoaW5zWzBdID09IHBsb3QucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ICYmIGluc1sxXSA9PSBwbG90LnNlcmllc1tpbnNbMF1dLl9oaWdobGlnaHRlZFBvaW50KSkgewogICAgICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YUhpZ2hsaWdodCcpOwogICAgICAgICAgICAgICAgZXZ0LndoaWNoID0gZXYud2hpY2g7CiAgICAgICAgICAgICAgICBldnQucGFnZVggPSBldi5wYWdlWDsKICAgICAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQsIGlucyk7CiAgICAgICAgICAgICAgICBoaWdobGlnaHQgKHBsb3QsIGluc1swXSwgaW5zWzFdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChuZWlnaGJvciA9PSBudWxsKSB7CiAgICAgICAgICAgIHVuaGlnaGxpZ2h0IChwbG90KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlRG93bihldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAobmVpZ2hib3IpIHsKICAgICAgICAgICAgdmFyIGlucyA9IFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IuZGF0YV07CiAgICAgICAgICAgIGlmIChwbG90LnNlcmllc1tpbnNbMF1dLmhpZ2hsaWdodE1vdXNlRG93biAmJiAhKGluc1swXSA9PSBwbG90LnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCAmJiBpbnNbMV0gPT0gcGxvdC5zZXJpZXNbaW5zWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpIHsKICAgICAgICAgICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ2pxcGxvdERhdGFIaWdobGlnaHQnKTsKICAgICAgICAgICAgICAgIGV2dC53aGljaCA9IGV2LndoaWNoOwogICAgICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoZXZ0LCBpbnMpOwogICAgICAgICAgICAgICAgaGlnaGxpZ2h0IChwbG90LCBpbnNbMF0sIGluc1sxXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAobmVpZ2hib3IgPT0gbnVsbCkgewogICAgICAgICAgICB1bmhpZ2hsaWdodCAocGxvdCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZVVwKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIHZhciBpZHggPSBwbG90LnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDsKICAgICAgICBpZiAoaWR4ICE9IG51bGwgJiYgcGxvdC5zZXJpZXNbaWR4XS5oaWdobGlnaHRNb3VzZURvd24pIHsKICAgICAgICAgICAgdW5oaWdobGlnaHQocGxvdCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAobmVpZ2hib3IpIHsKICAgICAgICAgICAgdmFyIGlucyA9IFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IuZGF0YV07CiAgICAgICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ2pxcGxvdERhdGFDbGljaycpOwogICAgICAgICAgICBldnQud2hpY2ggPSBldi53aGljaDsKICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKGV2dCwgaW5zKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZVJpZ2h0Q2xpY2soZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgaWYgKG5laWdoYm9yKSB7CiAgICAgICAgICAgIHZhciBpbnMgPSBbbmVpZ2hib3Iuc2VyaWVzSW5kZXgsIG5laWdoYm9yLnBvaW50SW5kZXgsIG5laWdoYm9yLmRhdGFdOwogICAgICAgICAgICB2YXIgaWR4ID0gcGxvdC5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg7CiAgICAgICAgICAgIGlmIChpZHggIT0gbnVsbCAmJiBwbG90LnNlcmllc1tpZHhdLmhpZ2hsaWdodE1vdXNlRG93bikgewogICAgICAgICAgICAgICAgdW5oaWdobGlnaHQocGxvdCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YVJpZ2h0Q2xpY2snKTsKICAgICAgICAgICAgZXZ0LndoaWNoID0gZXYud2hpY2g7CiAgICAgICAgICAgIGV2dC5wYWdlWCA9IGV2LnBhZ2VYOwogICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQsIGlucyk7CiAgICAgICAgfQogICAgfQogICAgCiAgICAvLyBjYWxsZWQgd2l0aGluIGNvbnRleHQgb2YgcGxvdAogICAgLy8gY3JlYXRlIGEgY2FudmFzIHdoaWNoIHdlIGNhbiBkcmF3IG9uLgogICAgLy8gaW5zZXJ0IGl0IGJlZm9yZSB0aGUgZXZlbnRDYW52YXMsIHNvIGV2ZW50Q2FudmFzIHdpbGwgc3RpbGwgY2FwdHVyZSBldmVudHMuCiAgICBmdW5jdGlvbiBwb3N0UGxvdERyYXcoKSB7CiAgICAgICAgLy8gTWVtb3J5IExlYWtzIHBhdGNoICAgIAogICAgICAgIGlmICh0aGlzLnBsdWdpbnMuZnVubmVsUmVuZGVyZXIgJiYgdGhpcy5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcykgewogICAgICAgICAgICB0aGlzLnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnJlc2V0Q2FudmFzKCk7CiAgICAgICAgICAgIHRoaXMucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRDYW52YXMgPSBudWxsOwogICAgICAgIH0KCiAgICAgICAgdGhpcy5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyID0ge307CiAgICAgICAgdGhpcy5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcyA9IG5ldyAkLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7CiAgICAgICAgCiAgICAgICAgLy8gZG8gd2UgaGF2ZSBhbnkgZGF0YSBsYWJlbHM/ICBpZiBzbywgcHV0IGhpZ2hsaWdodCBjYW52YXMgYmVmb3JlIHRob3NlCiAgICAgICAgdmFyIGxhYmVscyA9ICQodGhpcy50YXJnZXRJZCsnIC5qcXBsb3QtZGF0YS1sYWJlbCcpOwogICAgICAgIGlmIChsYWJlbHMubGVuZ3RoKSB7CiAgICAgICAgICAgICQobGFiZWxzWzBdKS5iZWZvcmUodGhpcy5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCAnanFwbG90LWZ1bm5lbFJlbmRlcmVyLWhpZ2hsaWdodC1jYW52YXMnLCB0aGlzLl9wbG90RGltZW5zaW9ucywgdGhpcykpOwogICAgICAgIH0KICAgICAgICAvLyBlbHNlIHB1dCBoaWdobGlnaHQgY2FudmFzIGJlZm9yZSBldmVudCBjYW52YXMuCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKHRoaXMucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywgJ2pxcGxvdC1mdW5uZWxSZW5kZXJlci1oaWdobGlnaHQtY2FudmFzJywgdGhpcy5fcGxvdERpbWVuc2lvbnMsIHRoaXMpKTsKICAgICAgICB9CiAgICAgICAgdmFyIGhjdHggPSB0aGlzLnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnNldENvbnRleHQoKTsKICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJ21vdXNlbGVhdmUnLCB7cGxvdDp0aGlzfSwgZnVuY3Rpb24gKGV2KSB7IHVuaGlnaGxpZ2h0KGV2LmRhdGEucGxvdCk7IH0pOwogICAgfQogICAgCiAgICAkLmpxcGxvdC5wcmVJbml0SG9va3MucHVzaChwcmVJbml0KTsKICAgIAogICAgJC5qcXBsb3QuRnVubmVsVGlja1JlbmRlcmVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgJC5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRnVubmVsVGlja1JlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyKCk7CiAgICAkLmpxcGxvdC5GdW5uZWxUaWNrUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuRnVubmVsVGlja1JlbmRlcmVyOwogICAgCn0pKGpRdWVyeSk7CiAgICAKICAgIA==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.funnelRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGUpe2UuanFwbG90LkZ1bm5lbFJlbmRlcmVyPWZ1bmN0aW9uKCl7ZS5qcXBsb3QuTGluZVJlbmRlcmVyLmNhbGwodGhpcyl9O2UuanFwbG90LkZ1bm5lbFJlbmRlcmVyLnByb3RvdHlwZT1uZXcgZS5qcXBsb3QuTGluZVJlbmRlcmVyKCk7ZS5qcXBsb3QuRnVubmVsUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUuanFwbG90LkZ1bm5lbFJlbmRlcmVyO2UuanFwbG90LkZ1bm5lbFJlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKHAsdCl7dGhpcy5wYWRkaW5nPXt0b3A6MjAscmlnaHQ6MjAsYm90dG9tOjIwLGxlZnQ6MjB9O3RoaXMuc2VjdGlvbk1hcmdpbj02O3RoaXMuZmlsbD10cnVlO3RoaXMuc2hhZG93T2Zmc2V0PTI7dGhpcy5zaGFkb3dBbHBoYT0wLjA3O3RoaXMuc2hhZG93RGVwdGg9NTt0aGlzLmhpZ2hsaWdodE1vdXNlT3Zlcj10cnVlO3RoaXMuaGlnaGxpZ2h0TW91c2VEb3duPWZhbHNlO3RoaXMuaGlnaGxpZ2h0Q29sb3JzPVtdO3RoaXMud2lkdGhSYXRpbz0wLjI7dGhpcy5saW5lV2lkdGg9Mjt0aGlzLmRhdGFMYWJlbHM9InBlcmNlbnQiO3RoaXMuc2hvd0RhdGFMYWJlbHM9ZmFsc2U7dGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmc9bnVsbDt0aGlzLmRhdGFMYWJlbFRocmVzaG9sZD0zO3RoaXMuX3R5cGU9ImZ1bm5lbCI7dGhpcy50aWNrUmVuZGVyZXI9ZS5qcXBsb3QuRnVubmVsVGlja1JlbmRlcmVyO2lmKHAuaGlnaGxpZ2h0TW91c2VEb3duJiZwLmhpZ2hsaWdodE1vdXNlT3Zlcj09bnVsbCl7cC5oaWdobGlnaHRNb3VzZU92ZXI9ZmFsc2V9ZS5leHRlbmQodHJ1ZSx0aGlzLHApO3RoaXMuX2hpZ2hsaWdodGVkUG9pbnQ9bnVsbDt0aGlzLl9iYXNlcz1bXTt0aGlzLl9hdG90O3RoaXMuX2FyZWFzPVtdO3RoaXMuX2xlbmd0aHM9W107dGhpcy5fYW5nbGU7dGhpcy5fZGF0YUluZGljZXM9W107dGhpcy5fdW5vcmRlcmVkRGF0YT1lLmV4dGVuZCh0cnVlLFtdLHRoaXMuZGF0YSk7dmFyIG89ZS5leHRlbmQodHJ1ZSxbXSx0aGlzLmRhdGEpO2Zvcih2YXIgcj0wO3I8by5sZW5ndGg7cisrKXtvW3JdLnB1c2gocil9dGhpcy5kYXRhLnNvcnQoZnVuY3Rpb24odix1KXtyZXR1cm4gdVsxXS12WzFdfSk7by5zb3J0KGZ1bmN0aW9uKHYsdSl7cmV0dXJuIHVbMV0tdlsxXX0pO2Zvcih2YXIgcj0wO3I8by5sZW5ndGg7cisrKXt0aGlzLl9kYXRhSW5kaWNlcy5wdXNoKG9bcl1bMl0pfWlmKHRoaXMuaGlnaGxpZ2h0Q29sb3JzLmxlbmd0aD09MCl7Zm9yKHZhciByPTA7cjx0aGlzLnNlcmllc0NvbG9ycy5sZW5ndGg7cisrKXt2YXIgcT1lLmpxcGxvdC5nZXRDb2xvckNvbXBvbmVudHModGhpcy5zZXJpZXNDb2xvcnNbcl0pO3ZhciBtPVtxWzBdLHFbMV0scVsyXV07dmFyIHM9bVswXSttWzFdK21bMl07Zm9yKHZhciBuPTA7bjwzO24rKyl7bVtuXT0ocz41NzApP21bbl0qMC44Om1bbl0rMC40KigyNTUtbVtuXSk7bVtuXT1wYXJzZUludChtW25dLDEwKX10aGlzLmhpZ2hsaWdodENvbG9ycy5wdXNoKCJyZ2IoIittWzBdKyIsIittWzFdKyIsIittWzJdKyIpIil9fXQucG9zdFBhcnNlT3B0aW9uc0hvb2tzLmFkZE9uY2Uoayk7dC5wb3N0SW5pdEhvb2tzLmFkZE9uY2UoZyk7dC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90TW91c2VNb3ZlIixhKTt0LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RNb3VzZURvd24iLGIpO3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdE1vdXNlVXAiLGopO3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdENsaWNrIixmKTt0LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RSaWdodENsaWNrIixsKTt0LnBvc3REcmF3SG9va3MuYWRkT25jZShoKX07ZS5qcXBsb3QuRnVubmVsUmVuZGVyZXIucHJvdG90eXBlLnNldEdyaWREYXRhPWZ1bmN0aW9uKG8pe3ZhciBuPTA7dmFyIHA9W107Zm9yKHZhciBtPTA7bTx0aGlzLmRhdGEubGVuZ3RoO20rKyl7bis9dGhpcy5kYXRhW21dWzFdO3AucHVzaChbdGhpcy5kYXRhW21dWzBdLHRoaXMuZGF0YVttXVsxXV0pfWZvcih2YXIgbT0wO208cC5sZW5ndGg7bSsrKXtwW21dWzFdPXBbbV1bMV0vbn10aGlzLl9iYXNlcz1uZXcgQXJyYXkocC5sZW5ndGgrMSk7dGhpcy5fbGVuZ3Rocz1uZXcgQXJyYXkocC5sZW5ndGgpO3RoaXMuZ3JpZERhdGE9cH07ZS5qcXBsb3QuRnVubmVsUmVuZGVyZXIucHJvdG90eXBlLm1ha2VHcmlkRGF0YT1mdW5jdGlvbihvLHApe3ZhciBuPTA7dmFyIHE9W107Zm9yKHZhciBtPTA7bTx0aGlzLmRhdGEubGVuZ3RoO20rKyl7bis9dGhpcy5kYXRhW21dWzFdO3EucHVzaChbdGhpcy5kYXRhW21dWzBdLHRoaXMuZGF0YVttXVsxXV0pfWZvcih2YXIgbT0wO208cS5sZW5ndGg7bSsrKXtxW21dWzFdPXFbbV1bMV0vbn10aGlzLl9iYXNlcz1uZXcgQXJyYXkocS5sZW5ndGgrMSk7dGhpcy5fbGVuZ3Rocz1uZXcgQXJyYXkocS5sZW5ndGgpO3JldHVybiBxfTtlLmpxcGxvdC5GdW5uZWxSZW5kZXJlci5wcm90b3R5cGUuZHJhd1NlY3Rpb249ZnVuY3Rpb24obixwLG8scyl7dmFyIHQ9dGhpcy5maWxsO3ZhciBtPXRoaXMubGluZVdpZHRoO24uc2F2ZSgpO2lmKHMpe2Zvcih2YXIgcj0wO3I8dGhpcy5zaGFkb3dEZXB0aDtyKyspe24uc2F2ZSgpO24udHJhbnNsYXRlKHRoaXMuc2hhZG93T2Zmc2V0Kk1hdGguY29zKHRoaXMuc2hhZG93QW5nbGUvMTgwKk1hdGguUEkpLHRoaXMuc2hhZG93T2Zmc2V0Kk1hdGguc2luKHRoaXMuc2hhZG93QW5nbGUvMTgwKk1hdGguUEkpKTtxKCl9fWVsc2V7cSgpfWZ1bmN0aW9uIHEoKXtuLmJlZ2luUGF0aCgpO24uZmlsbFN0eWxlPW87bi5zdHJva2VTdHlsZT1vO24ubGluZVdpZHRoPW07bi5tb3ZlVG8ocFswXVswXSxwWzBdWzFdKTtmb3IodmFyIHU9MTt1PDQ7dSsrKXtuLmxpbmVUbyhwW3VdWzBdLHBbdV1bMV0pfW4uY2xvc2VQYXRoKCk7aWYodCl7bi5maWxsKCl9ZWxzZXtuLnN0cm9rZSgpfX1pZihzKXtmb3IodmFyIHI9MDtyPHRoaXMuc2hhZG93RGVwdGg7cisrKXtuLnJlc3RvcmUoKX19bi5yZXN0b3JlKCl9O2UuanFwbG90LkZ1bm5lbFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKEcsQixKLHApe3ZhciBZO3ZhciBMPShKIT11bmRlZmluZWQpP0o6e307dmFyIHc9MDt2YXIgdT0wO3ZhciBSPTE7dGhpcy5fYXJlYXM9W107aWYoSi5sZWdlbmRJbmZvJiZKLmxlZ2VuZEluZm8ucGxhY2VtZW50PT0iaW5zaWRlR3JpZCIpe3ZhciBPPUoubGVnZW5kSW5mbztzd2l0Y2goTy5sb2NhdGlvbil7Y2FzZSJudyI6dz1PLndpZHRoK08ueG9mZnNldDticmVhaztjYXNlInciOnc9Ty53aWR0aCtPLnhvZmZzZXQ7YnJlYWs7Y2FzZSJzdyI6dz1PLndpZHRoK08ueG9mZnNldDticmVhaztjYXNlIm5lIjp3PU8ud2lkdGgrTy54b2Zmc2V0O1I9LTE7YnJlYWs7Y2FzZSJlIjp3PU8ud2lkdGgrTy54b2Zmc2V0O1I9LTE7YnJlYWs7Y2FzZSJzZSI6dz1PLndpZHRoK08ueG9mZnNldDtSPS0xO2JyZWFrO2Nhc2UibiI6dT1PLmhlaWdodCtPLnlvZmZzZXQ7YnJlYWs7Y2FzZSJzIjp1PU8uaGVpZ2h0K08ueW9mZnNldDtSPS0xO2JyZWFrO2RlZmF1bHQ6YnJlYWt9fXZhciB0PShSPT0xKT90aGlzLnBhZGRpbmcubGVmdCt3OnRoaXMucGFkZGluZy5sZWZ0O3ZhciBGPShSPT0xKT90aGlzLnBhZGRpbmcudG9wK3U6dGhpcy5wYWRkaW5nLnRvcDt2YXIgTT0oUj09LTEpP3RoaXMucGFkZGluZy5yaWdodCt3OnRoaXMucGFkZGluZy5yaWdodDt2YXIgbz0oUj09LTEpP3RoaXMucGFkZGluZy5ib3R0b20rdTp0aGlzLnBhZGRpbmcuYm90dG9tO3ZhciBQPShMLnNoYWRvdyE9dW5kZWZpbmVkKT9MLnNoYWRvdzp0aGlzLnNoYWRvdzt2YXIgcT0oTC5zaG93TGluZSE9dW5kZWZpbmVkKT9MLnNob3dMaW5lOnRoaXMuc2hvd0xpbmU7dmFyIEM9KEwuZmlsbCE9dW5kZWZpbmVkKT9MLmZpbGw6dGhpcy5maWxsO3ZhciBIPUcuY2FudmFzLndpZHRoO3ZhciBOPUcuY2FudmFzLmhlaWdodDt0aGlzLl9iYXNlc1swXT1ILXQtTTt2YXIgST10aGlzLl9sZW5ndGg9Ti1GLW87dmFyIHI9dGhpcy5fYmFzZXNbMF0qdGhpcy53aWR0aFJhdGlvO3RoaXMuX2F0b3Q9SS8yKih0aGlzLl9iYXNlc1swXSt0aGlzLl9iYXNlc1swXSp0aGlzLndpZHRoUmF0aW8pO3RoaXMuX2FuZ2xlPU1hdGguYXRhbigodGhpcy5fYmFzZXNbMF0tcikvMi9JKTtmb3IoWT0wO1k8Qi5sZW5ndGg7WSsrKXt0aGlzLl9hcmVhcy5wdXNoKEJbWV1bMV0qdGhpcy5fYXRvdCl9dmFyIEUsYWEsVyxRPTA7dmFyIG49MC4wMDAxO2ZvcihZPTA7WTx0aGlzLl9hcmVhcy5sZW5ndGg7WSsrKXtFPXRoaXMuX2FyZWFzW1ldL3RoaXMuX2Jhc2VzW1ldO2FhPTk5OTk5OTt0aGlzLl9sZW5ndGhzW1ldPUU7Vz0wO3doaWxlKGFhPnRoaXMuX2xlbmd0aHNbWV0qbiYmVzwxMDApe3RoaXMuX2xlbmd0aHNbWV09dGhpcy5fYXJlYXNbWV0vKHRoaXMuX2Jhc2VzW1ldLXRoaXMuX2xlbmd0aHNbWV0qTWF0aC50YW4odGhpcy5fYW5nbGUpKTthYT1NYXRoLmFicyh0aGlzLl9sZW5ndGhzW1ldLUUpO3RoaXMuX2Jhc2VzW1krMV09dGhpcy5fYmFzZXNbWV0tKDIqdGhpcy5fbGVuZ3Roc1tZXSpNYXRoLnRhbih0aGlzLl9hbmdsZSkpO0U9dGhpcy5fbGVuZ3Roc1tZXTtXKyt9USs9dGhpcy5fbGVuZ3Roc1tZXX10aGlzLl92ZXJ0aWNlcz1uZXcgQXJyYXkoQi5sZW5ndGgpO3ZhciBhZT1bdCxGXSxhZD1bdCt0aGlzLl9iYXNlc1swXSxGXSxhYz1bdCsodGhpcy5fYmFzZXNbMF0tdGhpcy5fYmFzZXNbdGhpcy5fYmFzZXMubGVuZ3RoLTFdKS8yLEYrdGhpcy5fbGVuZ3RoXSxhYj1bYWNbMF0rdGhpcy5fYmFzZXNbdGhpcy5fYmFzZXMubGVuZ3RoLTFdLGFjWzFdXTtmdW5jdGlvbiBWKGFnKXt2YXIgeD0oYWVbMV0tYWNbMV0pLyhhZVswXS1hY1swXSk7dmFyIHY9YWVbMV0teCphZVswXTt2YXIgYWg9YWcrYWVbMV07cmV0dXJuWyhhaC12KS94LGFoXX1mdW5jdGlvbiBEKGFnKXt2YXIgeD0oYWRbMV0tYWJbMV0pLyhhZFswXS1hYlswXSk7dmFyIHY9YWRbMV0teCphZFswXTt2YXIgYWg9YWcrYWRbMV07cmV0dXJuWyhhaC12KS94LGFoXX12YXIgVD13LFM9dTt2YXIgWj0wLG09MDtmb3IoWT0wO1k8Qi5sZW5ndGg7WSsrKXt0aGlzLl92ZXJ0aWNlc1tZXT1uZXcgQXJyYXkoKTt2YXIgVT10aGlzLl92ZXJ0aWNlc1tZXTt2YXIgQT10aGlzLnNlY3Rpb25NYXJnaW47aWYoWT09MCl7bT0wfWlmKFk9PTEpe209QS8zfWVsc2V7aWYoWT4wJiZZPEIubGVuZ3RoLTEpe209QS8yfWVsc2V7aWYoWT09Qi5sZW5ndGgtMSl7bT0yKkEvM319fVUucHVzaChWKForbSkpO1UucHVzaChEKForbSkpO1orPXRoaXMuX2xlbmd0aHNbWV07aWYoWT09MCl7bT0tMipBLzN9ZWxzZXtpZihZPjAmJlk8Qi5sZW5ndGgtMSl7bT0tQS8yfWVsc2V7aWYoWT09Qi5sZW5ndGgtMSl7bT0wfX19VS5wdXNoKEQoWittKSk7VS5wdXNoKFYoWittKSl9aWYodGhpcy5zaGFkb3cpe3ZhciBhZj0icmdiYSgwLDAsMCwiK3RoaXMuc2hhZG93QWxwaGErIikiO2Zvcih2YXIgWT0wO1k8Qi5sZW5ndGg7WSsrKXt0aGlzLnJlbmRlcmVyLmRyYXdTZWN0aW9uLmNhbGwodGhpcyxHLHRoaXMuX3ZlcnRpY2VzW1ldLGFmLHRydWUpfX1mb3IodmFyIFk9MDtZPEIubGVuZ3RoO1krKyl7dmFyIFU9dGhpcy5fdmVydGljZXNbWV07dGhpcy5yZW5kZXJlci5kcmF3U2VjdGlvbi5jYWxsKHRoaXMsRyxVLHRoaXMuc2VyaWVzQ29sb3JzW1ldKTtpZih0aGlzLnNob3dEYXRhTGFiZWxzJiZCW1ldWzFdKjEwMD49dGhpcy5kYXRhTGFiZWxUaHJlc2hvbGQpe3ZhciBLLFg7aWYodGhpcy5kYXRhTGFiZWxzPT0ibGFiZWwiKXtLPXRoaXMuZGF0YUxhYmVsRm9ybWF0U3RyaW5nfHwiJXMiO1g9ZS5qcXBsb3Quc3ByaW50ZihLLEJbWV1bMF0pfWVsc2V7aWYodGhpcy5kYXRhTGFiZWxzPT0idmFsdWUiKXtLPXRoaXMuZGF0YUxhYmVsRm9ybWF0U3RyaW5nfHwiJWQiO1g9ZS5qcXBsb3Quc3ByaW50ZihLLHRoaXMuZGF0YVtZXVsxXSl9ZWxzZXtpZih0aGlzLmRhdGFMYWJlbHM9PSJwZXJjZW50Iil7Sz10aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZ3x8IiVkJSUiO1g9ZS5qcXBsb3Quc3ByaW50ZihLLEJbWV1bMV0qMTAwKX1lbHNle2lmKHRoaXMuZGF0YUxhYmVscy5jb25zdHJ1Y3Rvcj09QXJyYXkpe0s9dGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmd8fCIlcyI7WD1lLmpxcGxvdC5zcHJpbnRmKEssdGhpcy5kYXRhTGFiZWxzW3RoaXMuX2RhdGFJbmRpY2VzW1ldXSl9fX19dmFyIHM9KHRoaXMuX3JhZGl1cykqdGhpcy5kYXRhTGFiZWxQb3NpdGlvbkZhY3Rvcit0aGlzLnNsaWNlTWFyZ2luK3RoaXMuZGF0YUxhYmVsTnVkZ2U7dmFyIFQ9KFVbMF1bMF0rVVsxXVswXSkvMit0aGlzLmNhbnZhcy5fb2Zmc2V0cy5sZWZ0O3ZhciBTPShVWzFdWzFdK1VbMl1bMV0pLzIrdGhpcy5jYW52YXMuX29mZnNldHMudG9wO3ZhciB6PWUoJzxzcGFuIGNsYXNzPSJqcXBsb3QtZnVubmVsLXNlcmllcyBqcXBsb3QtZGF0YS1sYWJlbCIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyI+JytYKyI8L3NwYW4+IikuaW5zZXJ0QmVmb3JlKHAuZXZlbnRDYW52YXMuX2VsZW0pO1QtPXoud2lkdGgoKS8yO1MtPXouaGVpZ2h0KCkvMjtUPU1hdGgucm91bmQoVCk7Uz1NYXRoLnJvdW5kKFMpO3ouY3NzKHtsZWZ0OlQsdG9wOlN9KX19fTtlLmpxcGxvdC5GdW5uZWxBeGlzUmVuZGVyZXI9ZnVuY3Rpb24oKXtlLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIuY2FsbCh0aGlzKX07ZS5qcXBsb3QuRnVubmVsQXhpc1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgZS5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7ZS5qcXBsb3QuRnVubmVsQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLmpxcGxvdC5GdW5uZWxBeGlzUmVuZGVyZXI7ZS5qcXBsb3QuRnVubmVsQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKG0pe3RoaXMudGlja1JlbmRlcmVyPWUuanFwbG90LkZ1bm5lbFRpY2tSZW5kZXJlcjtlLmV4dGVuZCh0cnVlLHRoaXMsbSk7dGhpcy5fZGF0YUJvdW5kcz17bWluOjAsbWF4OjEwMH07dGhpcy5taW49MDt0aGlzLm1heD0xMDA7dGhpcy5zaG93VGlja3M9ZmFsc2U7dGhpcy50aWNrcz1bXTt0aGlzLnNob3dNYXJrPWZhbHNlO3RoaXMuc2hvdz1mYWxzZX07ZS5qcXBsb3QuRnVubmVsTGVnZW5kUmVuZGVyZXI9ZnVuY3Rpb24oKXtlLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyLmNhbGwodGhpcyl9O2UuanFwbG90LkZ1bm5lbExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZT1uZXcgZS5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlcigpO2UuanFwbG90LkZ1bm5lbExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLmpxcGxvdC5GdW5uZWxMZWdlbmRSZW5kZXJlcjtlLmpxcGxvdC5GdW5uZWxMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihtKXt0aGlzLm51bWJlclJvd3M9bnVsbDt0aGlzLm51bWJlckNvbHVtbnM9bnVsbDtlLmV4dGVuZCh0cnVlLHRoaXMsbSl9O2UuanFwbG90LkZ1bm5lbExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKCl7dmFyIHA9dGhpcztpZih0aGlzLnNob3cpe3ZhciB4PXRoaXMuX3Nlcmllczt2YXIgQT0icG9zaXRpb246YWJzb2x1dGU7IjtBKz0odGhpcy5iYWNrZ3JvdW5kKT8iYmFja2dyb3VuZDoiK3RoaXMuYmFja2dyb3VuZCsiOyI6IiI7QSs9KHRoaXMuYm9yZGVyKT8iYm9yZGVyOiIrdGhpcy5ib3JkZXIrIjsiOiIiO0ErPSh0aGlzLmZvbnRTaXplKT8iZm9udC1zaXplOiIrdGhpcy5mb250U2l6ZSsiOyI6IiI7QSs9KHRoaXMuZm9udEZhbWlseSk/ImZvbnQtZmFtaWx5OiIrdGhpcy5mb250RmFtaWx5KyI7IjoiIjtBKz0odGhpcy50ZXh0Q29sb3IpPyJjb2xvcjoiK3RoaXMudGV4dENvbG9yKyI7IjoiIjtBKz0odGhpcy5tYXJnaW5Ub3AhPW51bGwpPyJtYXJnaW4tdG9wOiIrdGhpcy5tYXJnaW5Ub3ArIjsiOiIiO0ErPSh0aGlzLm1hcmdpbkJvdHRvbSE9bnVsbCk/Im1hcmdpbi1ib3R0b206Iit0aGlzLm1hcmdpbkJvdHRvbSsiOyI6IiI7QSs9KHRoaXMubWFyZ2luTGVmdCE9bnVsbCk/Im1hcmdpbi1sZWZ0OiIrdGhpcy5tYXJnaW5MZWZ0KyI7IjoiIjtBKz0odGhpcy5tYXJnaW5SaWdodCE9bnVsbCk/Im1hcmdpbi1yaWdodDoiK3RoaXMubWFyZ2luUmlnaHQrIjsiOiIiO3RoaXMuX2VsZW09ZSgnPHRhYmxlIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIiBzdHlsZT0iJytBKyciPjwvdGFibGU+Jyk7dmFyIEU9ZmFsc2Usdz1mYWxzZSxtLHU7dmFyIHk9eFswXTt2YXIgbj1uZXcgZS5qcXBsb3QuQ29sb3JHZW5lcmF0b3IoeS5zZXJpZXNDb2xvcnMpO2lmKHkuc2hvdyl7dmFyIEY9eS5kYXRhO2lmKHRoaXMubnVtYmVyUm93cyl7bT10aGlzLm51bWJlclJvd3M7aWYoIXRoaXMubnVtYmVyQ29sdW1ucyl7dT1NYXRoLmNlaWwoRi5sZW5ndGgvbSl9ZWxzZXt1PXRoaXMubnVtYmVyQ29sdW1uc319ZWxzZXtpZih0aGlzLm51bWJlckNvbHVtbnMpe3U9dGhpcy5udW1iZXJDb2x1bW5zO209TWF0aC5jZWlsKEYubGVuZ3RoL3RoaXMubnVtYmVyQ29sdW1ucyl9ZWxzZXttPUYubGVuZ3RoO3U9MX19dmFyIEQsQyxvLHIscSx0LHYsQjt2YXIgej0wO2ZvcihEPTA7RDxtO0QrKyl7aWYodyl7bz1lKCc8dHIgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiPjwvdHI+JykucHJlcGVuZFRvKHRoaXMuX2VsZW0pfWVsc2V7bz1lKCc8dHIgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiPjwvdHI+JykuYXBwZW5kVG8odGhpcy5fZWxlbSl9Zm9yKEM9MDtDPHU7QysrKXtpZih6PEYubGVuZ3RoKXt0PXRoaXMubGFiZWxzW3pdfHxGW3pdWzBdLnRvU3RyaW5nKCk7Qj1uLm5leHQoKTtpZighdyl7aWYoRD4wKXtFPXRydWV9ZWxzZXtFPWZhbHNlfX1lbHNle2lmKEQ9PW0tMSl7RT1mYWxzZX1lbHNle0U9dHJ1ZX19dj0oRSk/dGhpcy5yb3dTcGFjaW5nOiIwIjtyPWUoJzx0ZCBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3BhZGRpbmctdG9wOicrdisnOyI+PGRpdj48ZGl2IGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaCIgc3R5bGU9ImJvcmRlci1jb2xvcjonK0IrJzsiPjwvZGl2PjwvZGl2PjwvdGQ+Jyk7cT1lKCc8dGQgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSJwYWRkaW5nLXRvcDonK3YrJzsiPjwvdGQ+Jyk7aWYodGhpcy5lc2NhcGVIdG1sKXtxLnRleHQodCl9ZWxzZXtxLmh0bWwodCl9aWYodyl7cS5wcmVwZW5kVG8obyk7ci5wcmVwZW5kVG8obyl9ZWxzZXtyLmFwcGVuZFRvKG8pO3EuYXBwZW5kVG8obyl9RT10cnVlfXorK319fX1yZXR1cm4gdGhpcy5fZWxlbX07ZnVuY3Rpb24gYyhxLHAsbil7bj1ufHx7fTtuLmF4ZXNEZWZhdWx0cz1uLmF4ZXNEZWZhdWx0c3x8e307bi5sZWdlbmQ9bi5sZWdlbmR8fHt9O24uc2VyaWVzRGVmYXVsdHM9bi5zZXJpZXNEZWZhdWx0c3x8e307dmFyIG09ZmFsc2U7aWYobi5zZXJpZXNEZWZhdWx0cy5yZW5kZXJlcj09ZS5qcXBsb3QuRnVubmVsUmVuZGVyZXIpe209dHJ1ZX1lbHNle2lmKG4uc2VyaWVzKXtmb3IodmFyIG89MDtvPG4uc2VyaWVzLmxlbmd0aDtvKyspe2lmKG4uc2VyaWVzW29dLnJlbmRlcmVyPT1lLmpxcGxvdC5GdW5uZWxSZW5kZXJlcil7bT10cnVlfX19fWlmKG0pe24uYXhlc0RlZmF1bHRzLnJlbmRlcmVyPWUuanFwbG90LkZ1bm5lbEF4aXNSZW5kZXJlcjtuLmxlZ2VuZC5yZW5kZXJlcj1lLmpxcGxvdC5GdW5uZWxMZWdlbmRSZW5kZXJlcjtuLmxlZ2VuZC5wcmVEcmF3PXRydWU7bi5zb3J0RGF0YT1mYWxzZTtuLnNlcmllc0RlZmF1bHRzLnBvaW50TGFiZWxzPXtzaG93OmZhbHNlfX19ZnVuY3Rpb24gZyhwLG8sbSl7Zm9yKHZhciBuPTA7bjx0aGlzLnNlcmllcy5sZW5ndGg7bisrKXtpZih0aGlzLnNlcmllc1tuXS5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09ZS5qcXBsb3QuRnVubmVsUmVuZGVyZXIpe2lmKHRoaXMuc2VyaWVzW25dLmhpZ2hsaWdodE1vdXNlT3Zlcil7dGhpcy5zZXJpZXNbbl0uaGlnaGxpZ2h0TW91c2VEb3duPWZhbHNlfX19fWZ1bmN0aW9uIGsobSl7Zm9yKHZhciBuPTA7bjx0aGlzLnNlcmllcy5sZW5ndGg7bisrKXt0aGlzLnNlcmllc1tuXS5zZXJpZXNDb2xvcnM9dGhpcy5zZXJpZXNDb2xvcnM7dGhpcy5zZXJpZXNbbl0uY29sb3JHZW5lcmF0b3I9ZS5qcXBsb3QuY29sb3JHZW5lcmF0b3J9fWZ1bmN0aW9uIGQocSxwLG8pe3ZhciBuPXEuc2VyaWVzW3BdO3ZhciBtPXEucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7bS5fY3R4LmNsZWFyUmVjdCgwLDAsbS5fY3R4LmNhbnZhcy53aWR0aCxtLl9jdHguY2FudmFzLmhlaWdodCk7bi5faGlnaGxpZ2h0ZWRQb2ludD1vO3EucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4PXA7bi5yZW5kZXJlci5kcmF3U2VjdGlvbi5jYWxsKG4sbS5fY3R4LG4uX3ZlcnRpY2VzW29dLG4uaGlnaGxpZ2h0Q29sb3JzW29dLGZhbHNlKX1mdW5jdGlvbiBpKG8pe3ZhciBtPW8ucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7bS5fY3R4LmNsZWFyUmVjdCgwLDAsbS5fY3R4LmNhbnZhcy53aWR0aCxtLl9jdHguY2FudmFzLmhlaWdodCk7Zm9yKHZhciBuPTA7bjxvLnNlcmllcy5sZW5ndGg7bisrKXtvLnNlcmllc1tuXS5faGlnaGxpZ2h0ZWRQb2ludD1udWxsfW8ucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4PW51bGw7by50YXJnZXQudHJpZ2dlcigianFwbG90RGF0YVVuaGlnaGxpZ2h0Iil9ZnVuY3Rpb24gYShxLHAsdCxzLHIpe2lmKHMpe3ZhciBvPVtzLnNlcmllc0luZGV4LHMucG9pbnRJbmRleCxzLmRhdGFdO3ZhciBuPWpRdWVyeS5FdmVudCgianFwbG90RGF0YU1vdXNlT3ZlciIpO24ucGFnZVg9cS5wYWdlWDtuLnBhZ2VZPXEucGFnZVk7ci50YXJnZXQudHJpZ2dlcihuLG8pO2lmKHIuc2VyaWVzW29bMF1dLmhpZ2hsaWdodE1vdXNlT3ZlciYmIShvWzBdPT1yLnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCYmb1sxXT09ci5zZXJpZXNbb1swXV0uX2hpZ2hsaWdodGVkUG9pbnQpKXt2YXIgbT1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFIaWdobGlnaHQiKTttLndoaWNoPXEud2hpY2g7bS5wYWdlWD1xLnBhZ2VYO20ucGFnZVk9cS5wYWdlWTtyLnRhcmdldC50cmlnZ2VyKG0sbyk7ZChyLG9bMF0sb1sxXSl9fWVsc2V7aWYocz09bnVsbCl7aShyKX19fWZ1bmN0aW9uIGIocCxvLHMscixxKXtpZihyKXt2YXIgbj1bci5zZXJpZXNJbmRleCxyLnBvaW50SW5kZXgsci5kYXRhXTtpZihxLnNlcmllc1tuWzBdXS5oaWdobGlnaHRNb3VzZURvd24mJiEoblswXT09cS5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXgmJm5bMV09PXEuc2VyaWVzW25bMF1dLl9oaWdobGlnaHRlZFBvaW50KSl7dmFyIG09alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhSGlnaGxpZ2h0Iik7bS53aGljaD1wLndoaWNoO20ucGFnZVg9cC5wYWdlWDttLnBhZ2VZPXAucGFnZVk7cS50YXJnZXQudHJpZ2dlcihtLG4pO2QocSxuWzBdLG5bMV0pfX1lbHNle2lmKHI9PW51bGwpe2kocSl9fX1mdW5jdGlvbiBqKG8sbixyLHEscCl7dmFyIG09cC5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg7aWYobSE9bnVsbCYmcC5zZXJpZXNbbV0uaGlnaGxpZ2h0TW91c2VEb3duKXtpKHApfX1mdW5jdGlvbiBmKHAsbyxzLHIscSl7aWYocil7dmFyIG49W3Iuc2VyaWVzSW5kZXgsci5wb2ludEluZGV4LHIuZGF0YV07dmFyIG09alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhQ2xpY2siKTttLndoaWNoPXAud2hpY2g7bS5wYWdlWD1wLnBhZ2VYO20ucGFnZVk9cC5wYWdlWTtxLnRhcmdldC50cmlnZ2VyKG0sbil9fWZ1bmN0aW9uIGwocSxwLHQscyxyKXtpZihzKXt2YXIgbz1bcy5zZXJpZXNJbmRleCxzLnBvaW50SW5kZXgscy5kYXRhXTt2YXIgbT1yLnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDtpZihtIT1udWxsJiZyLnNlcmllc1ttXS5oaWdobGlnaHRNb3VzZURvd24pe2kocil9dmFyIG49alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhUmlnaHRDbGljayIpO24ud2hpY2g9cS53aGljaDtuLnBhZ2VYPXEucGFnZVg7bi5wYWdlWT1xLnBhZ2VZO3IudGFyZ2V0LnRyaWdnZXIobixvKX19ZnVuY3Rpb24gaCgpe2lmKHRoaXMucGx1Z2lucy5mdW5uZWxSZW5kZXJlciYmdGhpcy5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcyl7dGhpcy5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5yZXNldENhbnZhcygpO3RoaXMucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRDYW52YXM9bnVsbH10aGlzLnBsdWdpbnMuZnVubmVsUmVuZGVyZXI9e307dGhpcy5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcz1uZXcgZS5qcXBsb3QuR2VuZXJpY0NhbnZhcygpO3ZhciBuPWUodGhpcy50YXJnZXRJZCsiIC5qcXBsb3QtZGF0YS1sYWJlbCIpO2lmKG4ubGVuZ3RoKXtlKG5bMF0pLmJlZm9yZSh0aGlzLnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsImpxcGxvdC1mdW5uZWxSZW5kZXJlci1oaWdobGlnaHQtY2FudmFzIix0aGlzLl9wbG90RGltZW5zaW9ucyx0aGlzKSl9ZWxzZXt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZSh0aGlzLnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsImpxcGxvdC1mdW5uZWxSZW5kZXJlci1oaWdobGlnaHQtY2FudmFzIix0aGlzLl9wbG90RGltZW5zaW9ucyx0aGlzKSl9dmFyIG09dGhpcy5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5zZXRDb250ZXh0KCk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCJtb3VzZWxlYXZlIix7cGxvdDp0aGlzfSxmdW5jdGlvbihvKXtpKG8uZGF0YS5wbG90KX0pfWUuanFwbG90LnByZUluaXRIb29rcy5wdXNoKGMpO2UuanFwbG90LkZ1bm5lbFRpY2tSZW5kZXJlcj1mdW5jdGlvbigpe2UuanFwbG90LkF4aXNUaWNrUmVuZGVyZXIuY2FsbCh0aGlzKX07ZS5qcXBsb3QuRnVubmVsVGlja1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgZS5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlcigpO2UuanFwbG90LkZ1bm5lbFRpY2tSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9ZS5qcXBsb3QuRnVubmVsVGlja1JlbmRlcmVyfSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.highlighter.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgJC5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLnB1c2goWydqcXBsb3RNb3VzZU1vdmUnLCBoYW5kbGVNb3ZlXSk7CiAgICAKICAgIC8qKgogICAgICogQ2xhc3M6ICQuanFwbG90LkhpZ2hsaWdodGVyCiAgICAgKiBQbHVnaW4gd2hpY2ggd2lsbCBoaWdobGlnaHQgZGF0YSBwb2ludHMgd2hlbiB0aGV5IGFyZSBtb3VzZWQgb3Zlci4KICAgICAqIAogICAgICogVG8gdXNlIHRoaXMgcGx1Z2luLCBpbmNsdWRlIHRoZSBqcwogICAgICogZmlsZSBpbiB5b3VyIHNvdXJjZToKICAgICAqIAogICAgICogPiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJwbHVnaW5zL2pxcGxvdC5oaWdobGlnaHRlci5qcyI+PC9zY3JpcHQ+CiAgICAgKiAKICAgICAqIEEgdG9vbHRpcCBwcm92aWRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRhdGEgcG9pbnQgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgogICAgICogVG8gZGlzYWJsZSB0aGUgdG9vbHRpcCwgc2V0ICJzaG93VG9vbHRpcCIgdG8gZmFsc2UuCiAgICAgKiAKICAgICAqIFlvdSBjYW4gY29udHJvbCB3aGF0IGRhdGEgaXMgZGlzcGxheWVkIGluIHRoZSB0b29sdGlwIHdpdGggdmFyaW91cwogICAgICogb3B0aW9ucy4gIFRoZSAidG9vbHRpcEF4ZXMiIG9wdGlvbiBjb250cm9scyB3aGV0aGVyIHRoZSB4LCB5IG9yIGJvdGgKICAgICAqIGRhdGEgdmFsdWVzIGFyZSBkaXNwbGF5ZWQuCiAgICAgKiAKICAgICAqIFNvbWUgY2hhcnQgdHlwZXMgKGUuZy4gaGktbG93LWNsb3NlKSBoYXZlIG1vcmUgdGhhbiBvbmUgeSB2YWx1ZSBwZXIKICAgICAqIGRhdGEgcG9pbnQuIFRvIGRpc3BsYXkgdGhlIGFkZGl0aW9uYWwgdmFsdWVzIGluIHRoZSB0b29sdGlwLCBzZXQgdGhlCiAgICAgKiAieXZhbHVlcyIgb3B0aW9uIHRvIHRoZSBkZXNpcmVkIG51bWJlciBvZiB5IHZhbHVlcyBwcmVzZW50ICgzIGZvciBhIGhsYyBjaGFydCkuCiAgICAgKiAKICAgICAqIEJ5IGRlZmF1bHQsIGRhdGEgdmFsdWVzIHdpbGwgYmUgZm9ybWF0dGVkIHdpdGggdGhlIHNhbWUgZm9ybWF0dGluZwogICAgICogc3BlY2lmaWVycyBhcyB1c2VkIHRvIGZvcm1hdCB0aGUgYXhpcyB0aWNrcy4gIEEgY3VzdG9tIGZvcm1hdCBjb2RlCiAgICAgKiBjYW4gYmUgc3VwcGxpZWQgd2l0aCB0aGUgdG9vbHRpcEZvcm1hdFN0cmluZyBvcHRpb24uICBUaGlzIHdpbGwgYXBwbHkgCiAgICAgKiB0byBhbGwgdmFsdWVzIGluIHRoZSB0b29sdGlwLiAgCiAgICAgKiAKICAgICAqIEZvciBtb3JlIGNvbXBsZXRlIGNvbnRyb2wsIHRoZSAiZm9ybWF0U3RyaW5nIiBvcHRpb24gY2FuIGJlIHNldC4gIFRoaXMKICAgICAqIEFsbG93cyBjb25wbGV0ZSBjb250cm9sIG92ZXIgdG9vbHRpcCBmb3JtYXR0aW5nLiAgVmFsdWVzIGFyZSBwYXNzZWQgdG8KICAgICAqIHRoZSBmb3JtYXQgc3RyaW5nIGluIGFuIG9yZGVyIGRldGVybWluZWQgYnkgdGhlICJ0b29sdGlwQXhlcyIgYW5kICJ5dmFsdWVzIgogICAgICogb3B0aW9ucy4gIFNvLCBpZiB5b3UgaGF2ZSBhIGhpLWxvdy1jbG9zZSBjaGFydCBhbmQgeW91IGp1c3Qgd2FudCB0byBkaXNwbGF5IAogICAgICogdGhlIGhpLWxvdy1jbG9zZSB2YWx1ZXMgaW4gdGhlIHRvb2x0aXAsIHlvdSBjb3VsZCBzZXQgYSBmb3JtYXRTdHJpbmcgbGlrZToKICAgICAqIAogICAgICogPiBoaWdobGlnaHRlcjogewogICAgICogPiAgICAgdG9vbHRpcEF4ZXM6ICd5JywKICAgICAqID4gICAgIHl2YWx1ZXM6IDMsCiAgICAgKiA+ICAgICBmb3JtYXRTdHJpbmc6Jzx0YWJsZSBjbGFzcz0ianFwbG90LWhpZ2hsaWdodGVyIj4KICAgICAqID4gICAgICAgICA8dHI+PHRkPmhpOjwvdGQ+PHRkPiVzPC90ZD48L3RyPgogICAgICogPiAgICAgICAgIDx0cj48dGQ+bG93OjwvdGQ+PHRkPiVzPC90ZD48L3RyPgogICAgICogPiAgICAgICAgIDx0cj48dGQ+Y2xvc2U6PC90ZD48dGQ+JXM8L3RkPjwvdHI+PC90YWJsZT4nCiAgICAgKiA+IH0KICAgICAqIAogICAgICovCiAgICAkLmpxcGxvdC5IaWdobGlnaHRlciA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAvLyBHcm91cDogUHJvcGVydGllcwogICAgICAgIC8vCiAgICAgICAgLy9wcm9wOiBzaG93CiAgICAgICAgLy8gdHJ1ZSB0byBzaG93IHRoZSBoaWdobGlnaHQuCiAgICAgICAgdGhpcy5zaG93ID0gJC5qcXBsb3QuY29uZmlnLmVuYWJsZVBsdWdpbnM7CiAgICAgICAgLy8gcHJvcDogbWFya2VyUmVuZGVyZXIKICAgICAgICAvLyBSZW5kZXJlciB1c2VkIHRvIGRyYXcgdGhlIG1hcmtlciBvZiB0aGUgaGlnaGxpZ2h0ZWQgcG9pbnQuCiAgICAgICAgLy8gUmVuZGVyZXIgd2lsbCBhc3NpbWlsYXRlIGF0dHJpYnV0ZXMgZnJvbSB0aGUgZGF0YSBwb2ludCBiZWluZyBoaWdobGlnaHRlZCwKICAgICAgICAvLyBzbyBubyBhdHRyaWJ1dGVzIG5lZWQgc2V0IG9uIHRoZSByZW5kZXJlciBkaXJlY3RseS4KICAgICAgICAvLyBEZWZhdWx0IGlzIHRvIHR1cm4gb2ZmIHNoYWRvdyBkcmF3aW5nIG9uIHRoZSBoaWdobGlnaHRlZCBwb2ludC4KICAgICAgICB0aGlzLm1hcmtlclJlbmRlcmVyID0gbmV3ICQuanFwbG90Lk1hcmtlclJlbmRlcmVyKHtzaGFkb3c6ZmFsc2V9KTsKICAgICAgICAvLyBwcm9wOiBzaG93TWFya2VyCiAgICAgICAgLy8gdHJ1ZSB0byBzaG93IHRoZSBtYXJrZXIKICAgICAgICB0aGlzLnNob3dNYXJrZXIgID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBsaW5lV2lkdGhBZGp1c3QKICAgICAgICAvLyBQaXhlbHMgdG8gYWRkIHRvIHRoZSBsaW5lV2lkdGggb2YgdGhlIGhpZ2hsaWdodC4KICAgICAgICB0aGlzLmxpbmVXaWR0aEFkanVzdCA9IDIuNTsKICAgICAgICAvLyBwcm9wOiBzaXplQWRqdXN0CiAgICAgICAgLy8gUGl4ZWxzIHRvIGFkZCB0byB0aGUgb3ZlcmFsbCBzaXplIG9mIHRoZSBoaWdobGlnaHQuCiAgICAgICAgdGhpcy5zaXplQWRqdXN0ID0gNTsKICAgICAgICAvLyBwcm9wOiBzaG93VG9vbHRpcAogICAgICAgIC8vIFNob3cgYSB0b29sdGlwIHdpdGggZGF0YSBwb2ludCB2YWx1ZXMuCiAgICAgICAgdGhpcy5zaG93VG9vbHRpcCA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogdG9vbHRpcExvY2F0aW9uCiAgICAgICAgLy8gV2hlcmUgdG8gcG9zaXRpb24gdG9vbHRpcCwgJ24nLCAnbmUnLCAnZScsICdzZScsICdzJywgJ3N3JywgJ3cnLCAnbncnCiAgICAgICAgdGhpcy50b29sdGlwTG9jYXRpb24gPSAnbncnOwogICAgICAgIC8vIHByb3A6IGZhZGVUb29sdGlwCiAgICAgICAgLy8gdHJ1ZSA9IGZhZGUgaW4vb3V0IHRvb2x0aXAsIGZsYXNlID0gc2hvdy9oaWRlIHRvb2x0aXAKICAgICAgICB0aGlzLmZhZGVUb29sdGlwID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiB0b29sdGlwRmFkZVNwZWVkCiAgICAgICAgLy8gJ3Nsb3cnLCAnZGVmJywgJ2Zhc3QnLCBvciBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLgogICAgICAgIHRoaXMudG9vbHRpcEZhZGVTcGVlZCA9ICJmYXN0IjsKICAgICAgICAvLyBwcm9wOiB0b29sdGlwT2Zmc2V0CiAgICAgICAgLy8gUGl4ZWwgb2Zmc2V0IG9mIHRvb2x0aXAgZnJvbSB0aGUgaGlnaGxpZ2h0LgogICAgICAgIHRoaXMudG9vbHRpcE9mZnNldCA9IDI7CiAgICAgICAgLy8gcHJvcDogdG9vbHRpcEF4ZXMKICAgICAgICAvLyBXaGljaCBheGVzIHRvIGRpc3BsYXkgaW4gdG9vbHRpcCwgJ3gnLCAneScgb3IgJ2JvdGgnLCAneHknIG9yICd5eCcKICAgICAgICAvLyAnYm90aCcgYW5kICd4eScgYXJlIGVxdWl2YWxlbnQsICd5eCcgcmV2ZXJzZXMgb3JkZXIgb2YgbGFiZWxzLgogICAgICAgIHRoaXMudG9vbHRpcEF4ZXMgPSAnYm90aCc7CiAgICAgICAgLy8gcHJvcDsgdG9vbHRpcFNlcGFyYXRvcgogICAgICAgIC8vIFN0cmluZyB0byB1c2UgdG8gc2VwYXJhdGUgeCBhbmQgeSBheGVzIGluIHRvb2x0aXAuCiAgICAgICAgdGhpcy50b29sdGlwU2VwYXJhdG9yID0gJywgJzsKICAgICAgICAvLyBwcm9wOyB0b29sdGlwQ29udGVudEVkaXRvcgogICAgICAgIC8vIEZ1bmN0aW9uIHVzZWQgdG8gZWRpdC9hdWdtZW50L3JlcGxhY2UgdGhlIGZvcm1hdHRlZCB0b29sdGlwIGNvbnRlbnRzLgogICAgICAgIC8vIENhbGxlZCBhcyBzdHIgPSB0b29sdGlwQ29udGVudEVkaXRvcihzdHIsIHNlcmllc0luZGV4LCBwb2ludEluZGV4KQogICAgICAgIC8vIHdoZXJlIHN0ciBpcyB0aGUgZ2VuZXJhdGVkIHRvb2x0aXAgaHRtbCBhbmQgc2VyaWVzSW5kZXggYW5kIHBvaW50SW5kZXggaWRlbnRpZnkKICAgICAgICAvLyB0aGUgZGF0YSBwb2ludCBiZWluZyBoaWdobGlnaHRlZC4gU2hvdWxkIHJldHVybiB0aGUgaHRtbCBmb3IgdGhlIHRvb2x0aXAgY29udGVudHMuCiAgICAgICAgdGhpcy50b29sdGlwQ29udGVudEVkaXRvciA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogdXNlQXhlc0Zvcm1hdHRlcnMKICAgICAgICAvLyBVc2UgdGhlIHggYW5kIHkgYXhlcyBmb3JtYXR0ZXJzIHRvIGZvcm1hdCB0aGUgdGV4dCBpbiB0aGUgdG9vbHRpcC4KICAgICAgICB0aGlzLnVzZUF4ZXNGb3JtYXR0ZXJzID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiB0b29sdGlwRm9ybWF0U3RyaW5nCiAgICAgICAgLy8gc3ByaW50ZiBmb3JtYXQgc3RyaW5nIGZvciB0aGUgdG9vbHRpcC4KICAgICAgICAvLyBVc2VzIEFzaCBTZWFybGUncyBqYXZhc2NyaXB0IHNwcmludGYgaW1wbGVtZW50YXRpb24KICAgICAgICAvLyBmb3VuZCBoZXJlOiBodHRwOi8vaGV4bWVuLmNvbS9ibG9nLzIwMDcvMDMvcHJpbnRmLXNwcmludGYvCiAgICAgICAgLy8gU2VlIGh0dHA6Ly9wZXJsZG9jLnBlcmwub3JnL2Z1bmN0aW9ucy9zcHJpbnRmLmh0bWwgZm9yIHJlZmVyZW5jZS4KICAgICAgICAvLyBBZGRpdGlvbmFsICJwIiBhbmQgIlAiIGZvcm1hdCBzcGVjaWZpZXJzIGFkZGVkIGJ5IENocmlzIExlb25lbGxvLgogICAgICAgIHRoaXMudG9vbHRpcEZvcm1hdFN0cmluZyA9ICclLjVQJzsKICAgICAgICAvLyBwcm9wOiBmb3JtYXRTdHJpbmcKICAgICAgICAvLyBhbHRlcm5hdGl2ZSB0byB0b29sdGlwRm9ybWF0U3RyaW5nCiAgICAgICAgLy8gd2lsbCBmb3JtYXQgdGhlIHdob2xlIHRvb2x0aXAgdGV4dCwgcG9wdWxhdGluZyB3aXRoIHgsIHkgdmFsdWVzIGFzCiAgICAgICAgLy8gaW5kaWNhdGVkIGJ5IHRvb2x0aXBBeGVzIG9wdGlvbi4gIFNvLCB5b3UgY291bGQgaGF2ZSBhIHRvb2x0aXAgbGlrZToKICAgICAgICAvLyAnRGF0ZTogJXMsIG51bWJlciBvZiBjYXRzOiAlZCcgdG8gZm9ybWF0IHRoZSB3aG9sZSB0b29sdGlwIGF0IG9uZSBnby4KICAgICAgICAvLyBJZiB1c2VBeGVzRm9ybWF0dGVycyBpcyB0cnVlLCB2YWx1ZXMgd2lsbCBiZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvCiAgICAgICAgLy8gQXhlcyBmb3JtYXR0ZXJzIGFuZCB5b3UgY2FuIHBvcHVsYXRlIHlvdXIgdG9vbHRpcCBzdHJpbmcgd2l0aCAKICAgICAgICAvLyAlcyBwbGFjZWhvbGRlcnMuCiAgICAgICAgdGhpcy5mb3JtYXRTdHJpbmcgPSBudWxsOwogICAgICAgIC8vIHByb3A6IHl2YWx1ZXMKICAgICAgICAvLyBOdW1iZXIgb2YgeSB2YWx1ZXMgdG8gZXhwZWN0IGluIHRoZSBkYXRhIHBvaW50IGFycmF5LgogICAgICAgIC8vIFR5cGljYWxseSB0aGlzIGlzIDEuICBDZXJ0YWluIHBsb3RzLCBsaWtlIE9ITEMsIHdpbGwKICAgICAgICAvLyBoYXZlIG1vcmUgeSB2YWx1ZXMgaW4gZWFjaCBkYXRhIHBvaW50IGFycmF5LgogICAgICAgIHRoaXMueXZhbHVlcyA9IDE7CiAgICAgICAgLy8gcHJvcDogYnJpbmdTZXJpZXNUb0Zyb250CiAgICAgICAgLy8gVGhpcyBvcHRpb24gcmVxdWlyZXMgalF1ZXJ5IDEuNCsKICAgICAgICAvLyBUcnVlIHRvIGJyaW5nIHRoZSBzZXJpZXMgb2YgdGhlIGhpZ2hsaWdodGVkIHBvaW50IHRvIHRoZSBmcm9udAogICAgICAgIC8vIG9mIG90aGVyIHNlcmllcy4KICAgICAgICB0aGlzLmJyaW5nU2VyaWVzVG9Gcm9udCA9IGZhbHNlOwogICAgICAgIHRoaXMuX3Rvb2x0aXBFbGVtOwogICAgICAgIHRoaXMuaXNIaWdobGlnaHRpbmcgPSBmYWxzZTsKICAgICAgICB0aGlzLmN1cnJlbnROZWlnaGJvciA9IG51bGw7CgogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgfTsKICAgIAogICAgdmFyIGxvY2F0aW9ucyA9IFsnbncnLCAnbicsICduZScsICdlJywgJ3NlJywgJ3MnLCAnc3cnLCAndyddOwogICAgdmFyIGxvY2F0aW9uSW5kaWNpZXMgPSB7J253JzowLCAnbic6MSwgJ25lJzoyLCAnZSc6MywgJ3NlJzo0LCAncyc6NSwgJ3N3Jzo2LCAndyc6N307CiAgICB2YXIgb3Bwb3NpdGVMb2NhdGlvbnMgPSBbJ3NlJywgJ3MnLCAnc3cnLCAndycsICdudycsICduJywgJ25lJywgJ2UnXTsKICAgIAogICAgLy8gYXhpcy5yZW5kZXJlci50aWNrcmVuZGVyZXIuZm9ybWF0dGVyCiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHBsb3QKICAgICQuanFwbG90LkhpZ2hsaWdodGVyLmluaXQgPSBmdW5jdGlvbiAodGFyZ2V0LCBkYXRhLCBvcHRzKXsKICAgICAgICB2YXIgb3B0aW9ucyA9IG9wdHMgfHwge307CiAgICAgICAgLy8gYWRkIGEgaGlnaGxpZ2h0ZXIgYXR0cmlidXRlIHRvIHRoZSBwbG90CiAgICAgICAgdGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyID0gbmV3ICQuanFwbG90LkhpZ2hsaWdodGVyKG9wdGlvbnMuaGlnaGxpZ2h0ZXIpOwogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGhpbiBzY29wZSBvZiBzZXJpZXMKICAgICQuanFwbG90LkhpZ2hsaWdodGVyLnBhcnNlT3B0aW9ucyA9IGZ1bmN0aW9uIChkZWZhdWx0cywgb3B0aW9ucykgewogICAgICAgIC8vIEFkZCBhIHNob3dIaWdobGlnaHQgb3B0aW9uIHRvIHRoZSBzZXJpZXMgCiAgICAgICAgLy8gYW5kIHNldCBpdCB0byB0cnVlIGJ5IGRlZmF1bHQuCiAgICAgICAgdGhpcy5zaG93SGlnaGxpZ2h0ID0gdHJ1ZTsKICAgIH07CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoaW4gY29udGV4dCBvZiBwbG90CiAgICAvLyBjcmVhdGUgYSBjYW52YXMgd2hpY2ggd2UgY2FuIGRyYXcgb24uCiAgICAvLyBpbnNlcnQgaXQgYmVmb3JlIHRoZSBldmVudENhbnZhcywgc28gZXZlbnRDYW52YXMgd2lsbCBzdGlsbCBjYXB0dXJlIGV2ZW50cy4KICAgICQuanFwbG90LkhpZ2hsaWdodGVyLnBvc3RQbG90RHJhdyA9IGZ1bmN0aW9uKCkgewogICAgICAgIC8vIE1lbW9yeSBMZWFrcyBwYXRjaCAgICAKICAgICAgICBpZiAodGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyICYmIHRoaXMucGx1Z2lucy5oaWdobGlnaHRlci5oaWdobGlnaHRDYW52YXMpIHsKICAgICAgICAgICAgdGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLmhpZ2hsaWdodENhbnZhcy5yZXNldENhbnZhcygpOwogICAgICAgICAgICB0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuaGlnaGxpZ2h0Q2FudmFzID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmICh0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIgJiYgdGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLl90b29sdGlwRWxlbSkgewogICAgICAgICAgICB0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuX3Rvb2x0aXBFbGVtLmVtcHR5Rm9yY2UoKTsKICAgICAgICAgICAgdGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLl90b29sdGlwRWxlbSA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICB0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuaGlnaGxpZ2h0Q2FudmFzID0gbmV3ICQuanFwbG90LkdlbmVyaWNDYW52YXMoKTsKICAgICAgICAKICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZSh0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuaGlnaGxpZ2h0Q2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsICdqcXBsb3QtaGlnaGxpZ2h0LWNhbnZhcycsIHRoaXMuX3Bsb3REaW1lbnNpb25zLCB0aGlzKSk7CiAgICAgICAgdGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLmhpZ2hsaWdodENhbnZhcy5zZXRDb250ZXh0KCk7CgogICAgICAgIHZhciBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgdGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLl90b29sdGlwRWxlbSA9ICQoZWxlbSk7CiAgICAgICAgZWxlbSA9IG51bGw7CiAgICAgICAgdGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLl90b29sdGlwRWxlbS5hZGRDbGFzcygnanFwbG90LWhpZ2hsaWdodGVyLXRvb2x0aXAnKTsKICAgICAgICB0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuX3Rvb2x0aXBFbGVtLmNzcyh7cG9zaXRpb246J2Fic29sdXRlJywgZGlzcGxheTonbm9uZSd9KTsKICAgICAgICAKICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZSh0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuX3Rvb2x0aXBFbGVtKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LnByZUluaXRIb29rcy5wdXNoKCQuanFwbG90LkhpZ2hsaWdodGVyLmluaXQpOwogICAgJC5qcXBsb3QucHJlUGFyc2VTZXJpZXNPcHRpb25zSG9va3MucHVzaCgkLmpxcGxvdC5IaWdobGlnaHRlci5wYXJzZU9wdGlvbnMpOwogICAgJC5qcXBsb3QucG9zdERyYXdIb29rcy5wdXNoKCQuanFwbG90LkhpZ2hsaWdodGVyLnBvc3RQbG90RHJhdyk7CiAgICAKICAgIGZ1bmN0aW9uIGRyYXcocGxvdCwgbmVpZ2hib3IpIHsKICAgICAgICB2YXIgaGwgPSBwbG90LnBsdWdpbnMuaGlnaGxpZ2h0ZXI7CiAgICAgICAgdmFyIHMgPSBwbG90LnNlcmllc1tuZWlnaGJvci5zZXJpZXNJbmRleF07CiAgICAgICAgdmFyIHNtciA9IHMubWFya2VyUmVuZGVyZXI7CiAgICAgICAgdmFyIG1yID0gaGwubWFya2VyUmVuZGVyZXI7CiAgICAgICAgbXIuc3R5bGUgPSBzbXIuc3R5bGU7CiAgICAgICAgbXIubGluZVdpZHRoID0gc21yLmxpbmVXaWR0aCArIGhsLmxpbmVXaWR0aEFkanVzdDsKICAgICAgICBtci5zaXplID0gc21yLnNpemUgKyBobC5zaXplQWRqdXN0OwogICAgICAgIHZhciByZ2JhID0gJC5qcXBsb3QuZ2V0Q29sb3JDb21wb25lbnRzKHNtci5jb2xvcik7CiAgICAgICAgdmFyIG5ld3JnYiA9IFtyZ2JhWzBdLCByZ2JhWzFdLCByZ2JhWzJdXTsKICAgICAgICB2YXIgYWxwaGEgPSAocmdiYVszXSA+PSAwLjYpID8gcmdiYVszXSowLjYgOiByZ2JhWzNdKigyLXJnYmFbM10pOwogICAgICAgIG1yLmNvbG9yID0gJ3JnYmEoJytuZXdyZ2JbMF0rJywnK25ld3JnYlsxXSsnLCcrbmV3cmdiWzJdKycsJythbHBoYSsnKSc7CiAgICAgICAgbXIuaW5pdCgpOwogICAgICAgIG1yLmRyYXcocy5ncmlkRGF0YVtuZWlnaGJvci5wb2ludEluZGV4XVswXSwgcy5ncmlkRGF0YVtuZWlnaGJvci5wb2ludEluZGV4XVsxXSwgaGwuaGlnaGxpZ2h0Q2FudmFzLl9jdHgpOwogICAgfQogICAgCiAgICBmdW5jdGlvbiBzaG93VG9vbHRpcChwbG90LCBzZXJpZXMsIG5laWdoYm9yKSB7CiAgICAgICAgLy8gbmVpZ2hib3IgbG9va3MgbGlrZToge3Nlcmllc0luZGV4OiBpLCBwb2ludEluZGV4OmosIGdyaWREYXRhOnAsIGRhdGE6cy5kYXRhW2pdfQogICAgICAgIC8vIGdyaWREYXRhIHNob3VsZCBiZSB4LHkgcGl4ZWwgY29vcmRzIG9uIHRoZSBncmlkLgogICAgICAgIC8vIGFkZCB0aGUgcGxvdC5fZ3JpZFBhZGRpbmcgdG8gdGhhdCB0byBnZXQgeCx5IGluIHRoZSB0YXJnZXQuCiAgICAgICAgdmFyIGhsID0gcGxvdC5wbHVnaW5zLmhpZ2hsaWdodGVyOwogICAgICAgIHZhciBlbGVtID0gaGwuX3Rvb2x0aXBFbGVtOwogICAgICAgIHZhciBzZXJpZXNobCA9IHNlcmllcy5oaWdobGlnaHRlciB8fCB7fTsKCiAgICAgICAgdmFyIG9wdHMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgaGwsIHNlcmllc2hsKTsKCiAgICAgICAgaWYgKG9wdHMudXNlQXhlc0Zvcm1hdHRlcnMpIHsKICAgICAgICAgICAgdmFyIHhmID0gc2VyaWVzLl94YXhpcy5fdGlja3NbMF0uZm9ybWF0dGVyOwogICAgICAgICAgICB2YXIgeWYgPSBzZXJpZXMuX3lheGlzLl90aWNrc1swXS5mb3JtYXR0ZXI7CiAgICAgICAgICAgIHZhciB4ZnN0ciA9IHNlcmllcy5feGF4aXMuX3RpY2tzWzBdLmZvcm1hdFN0cmluZzsKICAgICAgICAgICAgdmFyIHlmc3RyID0gc2VyaWVzLl95YXhpcy5fdGlja3NbMF0uZm9ybWF0U3RyaW5nOwogICAgICAgICAgICB2YXIgc3RyOwogICAgICAgICAgICB2YXIgeHN0ciA9IHhmKHhmc3RyLCBuZWlnaGJvci5kYXRhWzBdKTsKICAgICAgICAgICAgdmFyIHlzdHJzID0gW107CiAgICAgICAgICAgIGZvciAodmFyIGk9MTsgaTxvcHRzLnl2YWx1ZXMrMTsgaSsrKSB7CiAgICAgICAgICAgICAgICB5c3Rycy5wdXNoKHlmKHlmc3RyLCBuZWlnaGJvci5kYXRhW2ldKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRzLmZvcm1hdFN0cmluZyA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgIHN3aXRjaCAob3B0cy50b29sdGlwQXhlcykgewogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JvdGgnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3h5JzoKICAgICAgICAgICAgICAgICAgICAgICAgeXN0cnMudW5zaGlmdCh4c3RyKTsKICAgICAgICAgICAgICAgICAgICAgICAgeXN0cnMudW5zaGlmdChvcHRzLmZvcm1hdFN0cmluZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9ICQuanFwbG90LnNwcmludGYuYXBwbHkoJC5qcXBsb3Quc3ByaW50ZiwgeXN0cnMpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICd5eCc6CiAgICAgICAgICAgICAgICAgICAgICAgIHlzdHJzLnB1c2goeHN0cik7CiAgICAgICAgICAgICAgICAgICAgICAgIHlzdHJzLnVuc2hpZnQob3B0cy5mb3JtYXRTdHJpbmcpOwogICAgICAgICAgICAgICAgICAgICAgICBzdHIgPSAkLmpxcGxvdC5zcHJpbnRmLmFwcGx5KCQuanFwbG90LnNwcmludGYsIHlzdHJzKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAneCc6CiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9ICQuanFwbG90LnNwcmludGYuYXBwbHkoJC5qcXBsb3Quc3ByaW50ZiwgW29wdHMuZm9ybWF0U3RyaW5nLCB4c3RyXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3knOgogICAgICAgICAgICAgICAgICAgICAgICB5c3Rycy51bnNoaWZ0KG9wdHMuZm9ybWF0U3RyaW5nKTsKICAgICAgICAgICAgICAgICAgICAgICAgc3RyID0gJC5qcXBsb3Quc3ByaW50Zi5hcHBseSgkLmpxcGxvdC5zcHJpbnRmLCB5c3Rycyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IC8vIHNhbWUgYXMgeHkKICAgICAgICAgICAgICAgICAgICAgICAgeXN0cnMudW5zaGlmdCh4c3RyKTsKICAgICAgICAgICAgICAgICAgICAgICAgeXN0cnMudW5zaGlmdChvcHRzLmZvcm1hdFN0cmluZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9ICQuanFwbG90LnNwcmludGYuYXBwbHkoJC5qcXBsb3Quc3ByaW50ZiwgeXN0cnMpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wdHMudG9vbHRpcEF4ZXMpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICdib3RoJzoKICAgICAgICAgICAgICAgICAgICBjYXNlICd4eSc6CiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IHhzdHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx5c3Rycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9IG9wdHMudG9vbHRpcFNlcGFyYXRvciArIHlzdHJzW2ldOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3l4JzoKICAgICAgICAgICAgICAgICAgICAgICAgc3RyID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx5c3Rycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9IHlzdHJzW2ldICsgb3B0cy50b29sdGlwU2VwYXJhdG9yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSB4c3RyOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICd4JzoKICAgICAgICAgICAgICAgICAgICAgICAgc3RyID0geHN0cjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAneSc6CiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IHlzdHJzLmpvaW4ob3B0cy50b29sdGlwU2VwYXJhdG9yKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogLy8gc2FtZSBhcyAneHknCiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IHhzdHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx5c3Rycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9IG9wdHMudG9vbHRpcFNlcGFyYXRvciArIHlzdHJzW2ldOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdmFyIHN0cjsKICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRzLmZvcm1hdFN0cmluZyA9PT0gICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICBzdHIgPSAkLmpxcGxvdC5zcHJpbnRmLmFwcGx5KCQuanFwbG90LnNwcmludGYsIFtvcHRzLmZvcm1hdFN0cmluZ10uY29uY2F0KG5laWdoYm9yLmRhdGEpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAob3B0cy50b29sdGlwQXhlcyA9PSAnYm90aCcgfHwgb3B0cy50b29sdGlwQXhlcyA9PSAneHknKSB7CiAgICAgICAgICAgICAgICAgICAgc3RyID0gJC5qcXBsb3Quc3ByaW50ZihvcHRzLnRvb2x0aXBGb3JtYXRTdHJpbmcsIG5laWdoYm9yLmRhdGFbMF0pICsgb3B0cy50b29sdGlwU2VwYXJhdG9yICsgJC5qcXBsb3Quc3ByaW50ZihvcHRzLnRvb2x0aXBGb3JtYXRTdHJpbmcsIG5laWdoYm9yLmRhdGFbMV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAob3B0cy50b29sdGlwQXhlcyA9PSAneXgnKSB7CiAgICAgICAgICAgICAgICAgICAgc3RyID0gJC5qcXBsb3Quc3ByaW50ZihvcHRzLnRvb2x0aXBGb3JtYXRTdHJpbmcsIG5laWdoYm9yLmRhdGFbMV0pICsgb3B0cy50b29sdGlwU2VwYXJhdG9yICsgJC5qcXBsb3Quc3ByaW50ZihvcHRzLnRvb2x0aXBGb3JtYXRTdHJpbmcsIG5laWdoYm9yLmRhdGFbMF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAob3B0cy50b29sdGlwQXhlcyA9PSAneCcpIHsKICAgICAgICAgICAgICAgICAgICBzdHIgPSAkLmpxcGxvdC5zcHJpbnRmKG9wdHMudG9vbHRpcEZvcm1hdFN0cmluZywgbmVpZ2hib3IuZGF0YVswXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChvcHRzLnRvb2x0aXBBeGVzID09ICd5JykgewogICAgICAgICAgICAgICAgICAgIHN0ciA9ICQuanFwbG90LnNwcmludGYob3B0cy50b29sdGlwRm9ybWF0U3RyaW5nLCBuZWlnaGJvci5kYXRhWzFdKTsKICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCQuaXNGdW5jdGlvbihvcHRzLnRvb2x0aXBDb250ZW50RWRpdG9yKSkgewogICAgICAgICAgICAvLyBhcmdzIHN0ciwgc2VyaWVzSW5kZXgsIHBvaW50SW5kZXggYXJlIGVzc2VudGlhbCBzbyB0aGUgaG9vayBjYW4gbG9vayB1cAogICAgICAgICAgICAvLyBleHRyYSBkYXRhIGZvciB0aGUgcG9pbnQuCiAgICAgICAgICAgIHN0ciA9IG9wdHMudG9vbHRpcENvbnRlbnRFZGl0b3Ioc3RyLCBuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgcGxvdCk7CiAgICAgICAgfQogICAgICAgIGVsZW0uaHRtbChzdHIpOwogICAgICAgIHZhciBncmlkcG9zID0ge3g6bmVpZ2hib3IuZ3JpZERhdGFbMF0sIHk6bmVpZ2hib3IuZ3JpZERhdGFbMV19OwogICAgICAgIHZhciBtcyA9IDA7CiAgICAgICAgdmFyIGZhY3QgPSAwLjcwNzsKICAgICAgICBpZiAoc2VyaWVzLm1hcmtlclJlbmRlcmVyLnNob3cgPT0gdHJ1ZSkgeyAKICAgICAgICAgICAgbXMgPSAoc2VyaWVzLm1hcmtlclJlbmRlcmVyLnNpemUgKyBvcHRzLnNpemVBZGp1c3QpLzI7CiAgICAgICAgfQoKICAgICAgICB2YXIgbG9jID0gbG9jYXRpb25zOwogICAgICAgIGlmIChzZXJpZXMuZmlsbFRvWmVybyAmJiBzZXJpZXMuZmlsbCAmJiBuZWlnaGJvci5kYXRhWzFdIDwgMCkgewogICAgICAgICAgbG9jID0gb3Bwb3NpdGVMb2NhdGlvbnM7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKGxvY1tsb2NhdGlvbkluZGljaWVzW29wdHMudG9vbHRpcExvY2F0aW9uXV0pIHsKICAgICAgICAgICAgY2FzZSAnbncnOgogICAgICAgICAgICAgICAgdmFyIHggPSBncmlkcG9zLnggKyBwbG90Ll9ncmlkUGFkZGluZy5sZWZ0IC0gZWxlbS5vdXRlcldpZHRoKHRydWUpIC0gb3B0cy50b29sdGlwT2Zmc2V0IC0gZmFjdCAqIG1zOwogICAgICAgICAgICAgICAgdmFyIHkgPSBncmlkcG9zLnkgKyBwbG90Ll9ncmlkUGFkZGluZy50b3AgLSBvcHRzLnRvb2x0aXBPZmZzZXQgLSBlbGVtLm91dGVySGVpZ2h0KHRydWUpIC0gZmFjdCAqIG1zOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ24nOgogICAgICAgICAgICAgICAgdmFyIHggPSBncmlkcG9zLnggKyBwbG90Ll9ncmlkUGFkZGluZy5sZWZ0IC0gZWxlbS5vdXRlcldpZHRoKHRydWUpLzI7CiAgICAgICAgICAgICAgICB2YXIgeSA9IGdyaWRwb3MueSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCAtIG9wdHMudG9vbHRpcE9mZnNldCAtIGVsZW0ub3V0ZXJIZWlnaHQodHJ1ZSkgLSBtczsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICduZSc6CiAgICAgICAgICAgICAgICB2YXIgeCA9IGdyaWRwb3MueCArIHBsb3QuX2dyaWRQYWRkaW5nLmxlZnQgKyBvcHRzLnRvb2x0aXBPZmZzZXQgKyBmYWN0ICogbXM7CiAgICAgICAgICAgICAgICB2YXIgeSA9IGdyaWRwb3MueSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCAtIG9wdHMudG9vbHRpcE9mZnNldCAtIGVsZW0ub3V0ZXJIZWlnaHQodHJ1ZSkgLSBmYWN0ICogbXM7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnZSc6CiAgICAgICAgICAgICAgICB2YXIgeCA9IGdyaWRwb3MueCArIHBsb3QuX2dyaWRQYWRkaW5nLmxlZnQgKyBvcHRzLnRvb2x0aXBPZmZzZXQgKyBtczsKICAgICAgICAgICAgICAgIHZhciB5ID0gZ3JpZHBvcy55ICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wIC0gZWxlbS5vdXRlckhlaWdodCh0cnVlKS8yOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3NlJzoKICAgICAgICAgICAgICAgIHZhciB4ID0gZ3JpZHBvcy54ICsgcGxvdC5fZ3JpZFBhZGRpbmcubGVmdCArIG9wdHMudG9vbHRpcE9mZnNldCArIGZhY3QgKiBtczsKICAgICAgICAgICAgICAgIHZhciB5ID0gZ3JpZHBvcy55ICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wICsgb3B0cy50b29sdGlwT2Zmc2V0ICsgZmFjdCAqIG1zOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgICAgdmFyIHggPSBncmlkcG9zLnggKyBwbG90Ll9ncmlkUGFkZGluZy5sZWZ0IC0gZWxlbS5vdXRlcldpZHRoKHRydWUpLzI7CiAgICAgICAgICAgICAgICB2YXIgeSA9IGdyaWRwb3MueSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCArIG9wdHMudG9vbHRpcE9mZnNldCArIG1zOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3N3JzoKICAgICAgICAgICAgICAgIHZhciB4ID0gZ3JpZHBvcy54ICsgcGxvdC5fZ3JpZFBhZGRpbmcubGVmdCAtIGVsZW0ub3V0ZXJXaWR0aCh0cnVlKSAtIG9wdHMudG9vbHRpcE9mZnNldCAtIGZhY3QgKiBtczsKICAgICAgICAgICAgICAgIHZhciB5ID0gZ3JpZHBvcy55ICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wICsgb3B0cy50b29sdGlwT2Zmc2V0ICsgZmFjdCAqIG1zOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3cnOgogICAgICAgICAgICAgICAgdmFyIHggPSBncmlkcG9zLnggKyBwbG90Ll9ncmlkUGFkZGluZy5sZWZ0IC0gZWxlbS5vdXRlcldpZHRoKHRydWUpIC0gb3B0cy50b29sdGlwT2Zmc2V0IC0gbXM7CiAgICAgICAgICAgICAgICB2YXIgeSA9IGdyaWRwb3MueSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCAtIGVsZW0ub3V0ZXJIZWlnaHQodHJ1ZSkvMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OiAvLyBzYW1lIGFzICdudycKICAgICAgICAgICAgICAgIHZhciB4ID0gZ3JpZHBvcy54ICsgcGxvdC5fZ3JpZFBhZGRpbmcubGVmdCAtIGVsZW0ub3V0ZXJXaWR0aCh0cnVlKSAtIG9wdHMudG9vbHRpcE9mZnNldCAtIGZhY3QgKiBtczsKICAgICAgICAgICAgICAgIHZhciB5ID0gZ3JpZHBvcy55ICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wIC0gb3B0cy50b29sdGlwT2Zmc2V0IC0gZWxlbS5vdXRlckhlaWdodCh0cnVlKSAtIGZhY3QgKiBtczsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBlbGVtLmNzcygnbGVmdCcsIHgpOwogICAgICAgIGVsZW0uY3NzKCd0b3AnLCB5KTsKICAgICAgICBpZiAob3B0cy5mYWRlVG9vbHRpcCkgewogICAgICAgICAgICAvLyBGaXggZm9yIHN0YWNrZWQgdXAgYW5pbWF0aW9ucy4gIFRobmFua3MgVHJldm9yIQogICAgICAgICAgICBlbGVtLnN0b3AodHJ1ZSx0cnVlKS5mYWRlSW4ob3B0cy50b29sdGlwRmFkZVNwZWVkKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGVsZW0uc2hvdygpOwogICAgICAgIH0KICAgICAgICBlbGVtID0gbnVsbDsKICAgICAgICAKICAgIH0KICAgIAogICAgZnVuY3Rpb24gaGFuZGxlTW92ZShldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICB2YXIgaGwgPSBwbG90LnBsdWdpbnMuaGlnaGxpZ2h0ZXI7CiAgICAgICAgdmFyIGMgPSBwbG90LnBsdWdpbnMuY3Vyc29yOwogICAgICAgIGlmIChobC5zaG93KSB7CiAgICAgICAgICAgIGlmIChuZWlnaGJvciA9PSBudWxsICYmIGhsLmlzSGlnaGxpZ2h0aW5nKSB7CiAgICAgICAgICAgICAgICB2YXIgZXZ0ID0galF1ZXJ5LkV2ZW50KCdqcXBsb3RIaWdobGlnaHRlclVuaGlnaGxpZ2h0Jyk7CiAgICAgICAgICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKGV2dCk7CgogICAgICAgICAgICAgICAgdmFyIGN0eCA9IGhsLmhpZ2hsaWdodENhbnZhcy5fY3R4OwogICAgICAgICAgICAgICAgY3R4LmNsZWFyUmVjdCgwLCAwLCBjdHguY2FudmFzLndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgICAgICAgICBpZiAoaGwuZmFkZVRvb2x0aXApIHsKICAgICAgICAgICAgICAgICAgICBobC5fdG9vbHRpcEVsZW0uZmFkZU91dChobC50b29sdGlwRmFkZVNwZWVkKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGhsLl90b29sdGlwRWxlbS5oaWRlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaGwuYnJpbmdTZXJpZXNUb0Zyb250KSB7CiAgICAgICAgICAgICAgICAgICAgcGxvdC5yZXN0b3JlUHJldmlvdXNTZXJpZXNPcmRlcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaGwuaXNIaWdobGlnaHRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGhsLmN1cnJlbnROZWlnaGJvciA9IG51bGw7CiAgICAgICAgICAgICAgICBjdHggPSBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKG5laWdoYm9yICE9IG51bGwgJiYgcGxvdC5zZXJpZXNbbmVpZ2hib3Iuc2VyaWVzSW5kZXhdLnNob3dIaWdobGlnaHQgJiYgIWhsLmlzSGlnaGxpZ2h0aW5nKSB7CiAgICAgICAgICAgICAgICB2YXIgZXZ0ID0galF1ZXJ5LkV2ZW50KCdqcXBsb3RIaWdobGlnaHRlckhpZ2hsaWdodCcpOwogICAgICAgICAgICAgICAgZXZ0LndoaWNoID0gZXYud2hpY2g7CiAgICAgICAgICAgICAgICBldnQucGFnZVggPSBldi5wYWdlWDsKICAgICAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICAgICAgdmFyIGlucyA9IFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IuZGF0YSwgcGxvdF07CiAgICAgICAgICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKGV2dCwgaW5zKTsKCiAgICAgICAgICAgICAgICBobC5pc0hpZ2hsaWdodGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICBobC5jdXJyZW50TmVpZ2hib3IgPSBuZWlnaGJvcjsKICAgICAgICAgICAgICAgIGlmIChobC5zaG93TWFya2VyKSB7CiAgICAgICAgICAgICAgICAgICAgZHJhdyhwbG90LCBuZWlnaGJvcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocGxvdC5zZXJpZXNbbmVpZ2hib3Iuc2VyaWVzSW5kZXhdLnNob3cgJiYgaGwuc2hvd1Rvb2x0aXAgJiYgKCFjIHx8ICFjLl96b29tLnN0YXJ0ZWQpKSB7CiAgICAgICAgICAgICAgICAgICAgc2hvd1Rvb2x0aXAocGxvdCwgcGxvdC5zZXJpZXNbbmVpZ2hib3Iuc2VyaWVzSW5kZXhdLCBuZWlnaGJvcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaGwuYnJpbmdTZXJpZXNUb0Zyb250KSB7CiAgICAgICAgICAgICAgICAgICAgcGxvdC5tb3ZlU2VyaWVzVG9Gcm9udChuZWlnaGJvci5zZXJpZXNJbmRleCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gY2hlY2sgdG8gc2VlIGlmIHdlJ3JlIGhpZ2hsaWdodGluZyB0aGUgd3JvbmcgcG9pbnQuCiAgICAgICAgICAgIGVsc2UgaWYgKG5laWdoYm9yICE9IG51bGwgJiYgaGwuaXNIaWdobGlnaHRpbmcgJiYgaGwuY3VycmVudE5laWdoYm9yICE9IG5laWdoYm9yKSB7CiAgICAgICAgICAgICAgICAvLyBoaWdobGlnaHRpbmcgdGhlIHdyb25nIHBvaW50LgoKICAgICAgICAgICAgICAgIC8vIGlmIG5ldyBzZXJpZXMgYWxsb3dzIGhpZ2hsaWdodGluZywgaGlnaGxpZ2h0IG5ldyBwb2ludC4KICAgICAgICAgICAgICAgIGlmIChwbG90LnNlcmllc1tuZWlnaGJvci5zZXJpZXNJbmRleF0uc2hvd0hpZ2hsaWdodCkgewogICAgICAgICAgICAgICAgICAgIHZhciBjdHggPSBobC5oaWdobGlnaHRDYW52YXMuX2N0eDsKICAgICAgICAgICAgICAgICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIGN0eC5jYW52YXMud2lkdGgsIGN0eC5jYW52YXMuaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICBobC5pc0hpZ2hsaWdodGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgaGwuY3VycmVudE5laWdoYm9yID0gbmVpZ2hib3I7CiAgICAgICAgICAgICAgICAgICAgaWYgKGhsLnNob3dNYXJrZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZHJhdyhwbG90LCBuZWlnaGJvcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChwbG90LnNlcmllc1tuZWlnaGJvci5zZXJpZXNJbmRleF0uc2hvdyAmJiBobC5zaG93VG9vbHRpcCAmJiAoIWMgfHwgIWMuX3pvb20uc3RhcnRlZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1Rvb2x0aXAocGxvdCwgcGxvdC5zZXJpZXNbbmVpZ2hib3Iuc2VyaWVzSW5kZXhdLCBuZWlnaGJvcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChobC5icmluZ1Nlcmllc1RvRnJvbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGxvdC5tb3ZlU2VyaWVzVG9Gcm9udChuZWlnaGJvci5zZXJpZXNJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.highlighter.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGQpe2QuanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsianFwbG90TW91c2VNb3ZlIixmXSk7ZC5qcXBsb3QuSGlnaGxpZ2h0ZXI9ZnVuY3Rpb24oaCl7dGhpcy5zaG93PWQuanFwbG90LmNvbmZpZy5lbmFibGVQbHVnaW5zO3RoaXMubWFya2VyUmVuZGVyZXI9bmV3IGQuanFwbG90Lk1hcmtlclJlbmRlcmVyKHtzaGFkb3c6ZmFsc2V9KTt0aGlzLnNob3dNYXJrZXI9dHJ1ZTt0aGlzLmxpbmVXaWR0aEFkanVzdD0yLjU7dGhpcy5zaXplQWRqdXN0PTU7dGhpcy5zaG93VG9vbHRpcD10cnVlO3RoaXMudG9vbHRpcExvY2F0aW9uPSJudyI7dGhpcy5mYWRlVG9vbHRpcD10cnVlO3RoaXMudG9vbHRpcEZhZGVTcGVlZD0iZmFzdCI7dGhpcy50b29sdGlwT2Zmc2V0PTI7dGhpcy50b29sdGlwQXhlcz0iYm90aCI7dGhpcy50b29sdGlwU2VwYXJhdG9yPSIsICI7dGhpcy50b29sdGlwQ29udGVudEVkaXRvcj1udWxsO3RoaXMudXNlQXhlc0Zvcm1hdHRlcnM9dHJ1ZTt0aGlzLnRvb2x0aXBGb3JtYXRTdHJpbmc9IiUuNVAiO3RoaXMuZm9ybWF0U3RyaW5nPW51bGw7dGhpcy55dmFsdWVzPTE7dGhpcy5icmluZ1Nlcmllc1RvRnJvbnQ9ZmFsc2U7dGhpcy5fdG9vbHRpcEVsZW07dGhpcy5pc0hpZ2hsaWdodGluZz1mYWxzZTt0aGlzLmN1cnJlbnROZWlnaGJvcj1udWxsO2QuZXh0ZW5kKHRydWUsdGhpcyxoKX07dmFyIGI9WyJudyIsIm4iLCJuZSIsImUiLCJzZSIsInMiLCJzdyIsInciXTt2YXIgZT17bnc6MCxuOjEsbmU6MixlOjMsc2U6NCxzOjUsc3c6Nix3Ojd9O3ZhciBjPVsic2UiLCJzIiwic3ciLCJ3IiwibnciLCJuIiwibmUiLCJlIl07ZC5qcXBsb3QuSGlnaGxpZ2h0ZXIuaW5pdD1mdW5jdGlvbihrLGosaSl7dmFyIGg9aXx8e307dGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyPW5ldyBkLmpxcGxvdC5IaWdobGlnaHRlcihoLmhpZ2hsaWdodGVyKX07ZC5qcXBsb3QuSGlnaGxpZ2h0ZXIucGFyc2VPcHRpb25zPWZ1bmN0aW9uKGksaCl7dGhpcy5zaG93SGlnaGxpZ2h0PXRydWV9O2QuanFwbG90LkhpZ2hsaWdodGVyLnBvc3RQbG90RHJhdz1mdW5jdGlvbigpe2lmKHRoaXMucGx1Z2lucy5oaWdobGlnaHRlciYmdGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLmhpZ2hsaWdodENhbnZhcyl7dGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLmhpZ2hsaWdodENhbnZhcy5yZXNldENhbnZhcygpO3RoaXMucGx1Z2lucy5oaWdobGlnaHRlci5oaWdobGlnaHRDYW52YXM9bnVsbH1pZih0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXImJnRoaXMucGx1Z2lucy5oaWdobGlnaHRlci5fdG9vbHRpcEVsZW0pe3RoaXMucGx1Z2lucy5oaWdobGlnaHRlci5fdG9vbHRpcEVsZW0uZW1wdHlGb3JjZSgpO3RoaXMucGx1Z2lucy5oaWdobGlnaHRlci5fdG9vbHRpcEVsZW09bnVsbH10aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuaGlnaGxpZ2h0Q2FudmFzPW5ldyBkLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUodGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLmhpZ2hsaWdodENhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCJqcXBsb3QtaGlnaGxpZ2h0LWNhbnZhcyIsdGhpcy5fcGxvdERpbWVuc2lvbnMsdGhpcykpO3RoaXMucGx1Z2lucy5oaWdobGlnaHRlci5oaWdobGlnaHRDYW52YXMuc2V0Q29udGV4dCgpO3ZhciBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RoaXMucGx1Z2lucy5oaWdobGlnaHRlci5fdG9vbHRpcEVsZW09ZChoKTtoPW51bGw7dGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLl90b29sdGlwRWxlbS5hZGRDbGFzcygianFwbG90LWhpZ2hsaWdodGVyLXRvb2x0aXAiKTt0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuX3Rvb2x0aXBFbGVtLmNzcyh7cG9zaXRpb246ImFic29sdXRlIixkaXNwbGF5OiJub25lIn0pO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKHRoaXMucGx1Z2lucy5oaWdobGlnaHRlci5fdG9vbHRpcEVsZW0pfTtkLmpxcGxvdC5wcmVJbml0SG9va3MucHVzaChkLmpxcGxvdC5IaWdobGlnaHRlci5pbml0KTtkLmpxcGxvdC5wcmVQYXJzZVNlcmllc09wdGlvbnNIb29rcy5wdXNoKGQuanFwbG90LkhpZ2hsaWdodGVyLnBhcnNlT3B0aW9ucyk7ZC5qcXBsb3QucG9zdERyYXdIb29rcy5wdXNoKGQuanFwbG90LkhpZ2hsaWdodGVyLnBvc3RQbG90RHJhdyk7ZnVuY3Rpb24gYShtLG8pe3ZhciBqPW0ucGx1Z2lucy5oaWdobGlnaHRlcjt2YXIgcD1tLnNlcmllc1tvLnNlcmllc0luZGV4XTt2YXIgaD1wLm1hcmtlclJlbmRlcmVyO3ZhciBpPWoubWFya2VyUmVuZGVyZXI7aS5zdHlsZT1oLnN0eWxlO2kubGluZVdpZHRoPWgubGluZVdpZHRoK2oubGluZVdpZHRoQWRqdXN0O2kuc2l6ZT1oLnNpemUrai5zaXplQWRqdXN0O3ZhciBsPWQuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyhoLmNvbG9yKTt2YXIgbj1bbFswXSxsWzFdLGxbMl1dO3ZhciBrPShsWzNdPj0wLjYpP2xbM10qMC42OmxbM10qKDItbFszXSk7aS5jb2xvcj0icmdiYSgiK25bMF0rIiwiK25bMV0rIiwiK25bMl0rIiwiK2srIikiO2kuaW5pdCgpO2kuZHJhdyhwLmdyaWREYXRhW28ucG9pbnRJbmRleF1bMF0scC5ncmlkRGF0YVtvLnBvaW50SW5kZXhdWzFdLGouaGlnaGxpZ2h0Q2FudmFzLl9jdHgpfWZ1bmN0aW9uIGcoQSxxLG0pe3ZhciBrPUEucGx1Z2lucy5oaWdobGlnaHRlcjt2YXIgRD1rLl90b29sdGlwRWxlbTt2YXIgcj1xLmhpZ2hsaWdodGVyfHx7fTt2YXIgdD1kLmV4dGVuZCh0cnVlLHt9LGsscik7aWYodC51c2VBeGVzRm9ybWF0dGVycyl7dmFyIHc9cS5feGF4aXMuX3RpY2tzWzBdLmZvcm1hdHRlcjt2YXIgaD1xLl95YXhpcy5fdGlja3NbMF0uZm9ybWF0dGVyO3ZhciBFPXEuX3hheGlzLl90aWNrc1swXS5mb3JtYXRTdHJpbmc7dmFyIHM9cS5feWF4aXMuX3RpY2tzWzBdLmZvcm1hdFN0cmluZzt2YXIgejt2YXIgdT13KEUsbS5kYXRhWzBdKTt2YXIgbD1bXTtmb3IodmFyIEI9MTtCPHQueXZhbHVlcysxO0IrKyl7bC5wdXNoKGgocyxtLmRhdGFbQl0pKX1pZih0eXBlb2YgdC5mb3JtYXRTdHJpbmc9PT0ic3RyaW5nIil7c3dpdGNoKHQudG9vbHRpcEF4ZXMpe2Nhc2UiYm90aCI6Y2FzZSJ4eSI6bC51bnNoaWZ0KHUpO2wudW5zaGlmdCh0LmZvcm1hdFN0cmluZyk7ej1kLmpxcGxvdC5zcHJpbnRmLmFwcGx5KGQuanFwbG90LnNwcmludGYsbCk7YnJlYWs7Y2FzZSJ5eCI6bC5wdXNoKHUpO2wudW5zaGlmdCh0LmZvcm1hdFN0cmluZyk7ej1kLmpxcGxvdC5zcHJpbnRmLmFwcGx5KGQuanFwbG90LnNwcmludGYsbCk7YnJlYWs7Y2FzZSJ4Ijp6PWQuanFwbG90LnNwcmludGYuYXBwbHkoZC5qcXBsb3Quc3ByaW50ZixbdC5mb3JtYXRTdHJpbmcsdV0pO2JyZWFrO2Nhc2UieSI6bC51bnNoaWZ0KHQuZm9ybWF0U3RyaW5nKTt6PWQuanFwbG90LnNwcmludGYuYXBwbHkoZC5qcXBsb3Quc3ByaW50ZixsKTticmVhaztkZWZhdWx0OmwudW5zaGlmdCh1KTtsLnVuc2hpZnQodC5mb3JtYXRTdHJpbmcpO3o9ZC5qcXBsb3Quc3ByaW50Zi5hcHBseShkLmpxcGxvdC5zcHJpbnRmLGwpO2JyZWFrfX1lbHNle3N3aXRjaCh0LnRvb2x0aXBBeGVzKXtjYXNlImJvdGgiOmNhc2UieHkiOno9dTtmb3IodmFyIEI9MDtCPGwubGVuZ3RoO0IrKyl7eis9dC50b29sdGlwU2VwYXJhdG9yK2xbQl19YnJlYWs7Y2FzZSJ5eCI6ej0iIjtmb3IodmFyIEI9MDtCPGwubGVuZ3RoO0IrKyl7eis9bFtCXSt0LnRvb2x0aXBTZXBhcmF0b3J9eis9dTticmVhaztjYXNlIngiOno9dTticmVhaztjYXNlInkiOno9bC5qb2luKHQudG9vbHRpcFNlcGFyYXRvcik7YnJlYWs7ZGVmYXVsdDp6PXU7Zm9yKHZhciBCPTA7QjxsLmxlbmd0aDtCKyspe3orPXQudG9vbHRpcFNlcGFyYXRvcitsW0JdfWJyZWFrfX19ZWxzZXt2YXIgejtpZih0eXBlb2YgdC5mb3JtYXRTdHJpbmc9PT0ic3RyaW5nIil7ej1kLmpxcGxvdC5zcHJpbnRmLmFwcGx5KGQuanFwbG90LnNwcmludGYsW3QuZm9ybWF0U3RyaW5nXS5jb25jYXQobS5kYXRhKSl9ZWxzZXtpZih0LnRvb2x0aXBBeGVzPT0iYm90aCJ8fHQudG9vbHRpcEF4ZXM9PSJ4eSIpe3o9ZC5qcXBsb3Quc3ByaW50Zih0LnRvb2x0aXBGb3JtYXRTdHJpbmcsbS5kYXRhWzBdKSt0LnRvb2x0aXBTZXBhcmF0b3IrZC5qcXBsb3Quc3ByaW50Zih0LnRvb2x0aXBGb3JtYXRTdHJpbmcsbS5kYXRhWzFdKX1lbHNle2lmKHQudG9vbHRpcEF4ZXM9PSJ5eCIpe3o9ZC5qcXBsb3Quc3ByaW50Zih0LnRvb2x0aXBGb3JtYXRTdHJpbmcsbS5kYXRhWzFdKSt0LnRvb2x0aXBTZXBhcmF0b3IrZC5qcXBsb3Quc3ByaW50Zih0LnRvb2x0aXBGb3JtYXRTdHJpbmcsbS5kYXRhWzBdKX1lbHNle2lmKHQudG9vbHRpcEF4ZXM9PSJ4Iil7ej1kLmpxcGxvdC5zcHJpbnRmKHQudG9vbHRpcEZvcm1hdFN0cmluZyxtLmRhdGFbMF0pfWVsc2V7aWYodC50b29sdGlwQXhlcz09InkiKXt6PWQuanFwbG90LnNwcmludGYodC50b29sdGlwRm9ybWF0U3RyaW5nLG0uZGF0YVsxXSl9fX19fX1pZihkLmlzRnVuY3Rpb24odC50b29sdGlwQ29udGVudEVkaXRvcikpe3o9dC50b29sdGlwQ29udGVudEVkaXRvcih6LG0uc2VyaWVzSW5kZXgsbS5wb2ludEluZGV4LEEpfUQuaHRtbCh6KTt2YXIgQz17eDptLmdyaWREYXRhWzBdLHk6bS5ncmlkRGF0YVsxXX07dmFyIHY9MDt2YXIgaj0wLjcwNztpZihxLm1hcmtlclJlbmRlcmVyLnNob3c9PXRydWUpe3Y9KHEubWFya2VyUmVuZGVyZXIuc2l6ZSt0LnNpemVBZGp1c3QpLzJ9dmFyIG89YjtpZihxLmZpbGxUb1plcm8mJnEuZmlsbCYmbS5kYXRhWzFdPDApe289Y31zd2l0Y2gob1tlW3QudG9vbHRpcExvY2F0aW9uXV0pe2Nhc2UibnciOnZhciBwPUMueCtBLl9ncmlkUGFkZGluZy5sZWZ0LUQub3V0ZXJXaWR0aCh0cnVlKS10LnRvb2x0aXBPZmZzZXQtaip2O3ZhciBuPUMueStBLl9ncmlkUGFkZGluZy50b3AtdC50b29sdGlwT2Zmc2V0LUQub3V0ZXJIZWlnaHQodHJ1ZSktaip2O2JyZWFrO2Nhc2UibiI6dmFyIHA9Qy54K0EuX2dyaWRQYWRkaW5nLmxlZnQtRC5vdXRlcldpZHRoKHRydWUpLzI7dmFyIG49Qy55K0EuX2dyaWRQYWRkaW5nLnRvcC10LnRvb2x0aXBPZmZzZXQtRC5vdXRlckhlaWdodCh0cnVlKS12O2JyZWFrO2Nhc2UibmUiOnZhciBwPUMueCtBLl9ncmlkUGFkZGluZy5sZWZ0K3QudG9vbHRpcE9mZnNldCtqKnY7dmFyIG49Qy55K0EuX2dyaWRQYWRkaW5nLnRvcC10LnRvb2x0aXBPZmZzZXQtRC5vdXRlckhlaWdodCh0cnVlKS1qKnY7YnJlYWs7Y2FzZSJlIjp2YXIgcD1DLngrQS5fZ3JpZFBhZGRpbmcubGVmdCt0LnRvb2x0aXBPZmZzZXQrdjt2YXIgbj1DLnkrQS5fZ3JpZFBhZGRpbmcudG9wLUQub3V0ZXJIZWlnaHQodHJ1ZSkvMjticmVhaztjYXNlInNlIjp2YXIgcD1DLngrQS5fZ3JpZFBhZGRpbmcubGVmdCt0LnRvb2x0aXBPZmZzZXQraip2O3ZhciBuPUMueStBLl9ncmlkUGFkZGluZy50b3ArdC50b29sdGlwT2Zmc2V0K2oqdjticmVhaztjYXNlInMiOnZhciBwPUMueCtBLl9ncmlkUGFkZGluZy5sZWZ0LUQub3V0ZXJXaWR0aCh0cnVlKS8yO3ZhciBuPUMueStBLl9ncmlkUGFkZGluZy50b3ArdC50b29sdGlwT2Zmc2V0K3Y7YnJlYWs7Y2FzZSJzdyI6dmFyIHA9Qy54K0EuX2dyaWRQYWRkaW5nLmxlZnQtRC5vdXRlcldpZHRoKHRydWUpLXQudG9vbHRpcE9mZnNldC1qKnY7dmFyIG49Qy55K0EuX2dyaWRQYWRkaW5nLnRvcCt0LnRvb2x0aXBPZmZzZXQraip2O2JyZWFrO2Nhc2UidyI6dmFyIHA9Qy54K0EuX2dyaWRQYWRkaW5nLmxlZnQtRC5vdXRlcldpZHRoKHRydWUpLXQudG9vbHRpcE9mZnNldC12O3ZhciBuPUMueStBLl9ncmlkUGFkZGluZy50b3AtRC5vdXRlckhlaWdodCh0cnVlKS8yO2JyZWFrO2RlZmF1bHQ6dmFyIHA9Qy54K0EuX2dyaWRQYWRkaW5nLmxlZnQtRC5vdXRlcldpZHRoKHRydWUpLXQudG9vbHRpcE9mZnNldC1qKnY7dmFyIG49Qy55K0EuX2dyaWRQYWRkaW5nLnRvcC10LnRvb2x0aXBPZmZzZXQtRC5vdXRlckhlaWdodCh0cnVlKS1qKnY7YnJlYWt9RC5jc3MoImxlZnQiLHApO0QuY3NzKCJ0b3AiLG4pO2lmKHQuZmFkZVRvb2x0aXApe0Quc3RvcCh0cnVlLHRydWUpLmZhZGVJbih0LnRvb2x0aXBGYWRlU3BlZWQpfWVsc2V7RC5zaG93KCl9RD1udWxsfWZ1bmN0aW9uIGYobixqLGkscCxsKXt2YXIgaD1sLnBsdWdpbnMuaGlnaGxpZ2h0ZXI7dmFyIG09bC5wbHVnaW5zLmN1cnNvcjtpZihoLnNob3cpe2lmKHA9PW51bGwmJmguaXNIaWdobGlnaHRpbmcpe3ZhciBvPWpRdWVyeS5FdmVudCgianFwbG90SGlnaGxpZ2h0ZXJVbmhpZ2hsaWdodCIpO2wudGFyZ2V0LnRyaWdnZXIobyk7dmFyIHE9aC5oaWdobGlnaHRDYW52YXMuX2N0eDtxLmNsZWFyUmVjdCgwLDAscS5jYW52YXMud2lkdGgscS5jYW52YXMuaGVpZ2h0KTtpZihoLmZhZGVUb29sdGlwKXtoLl90b29sdGlwRWxlbS5mYWRlT3V0KGgudG9vbHRpcEZhZGVTcGVlZCl9ZWxzZXtoLl90b29sdGlwRWxlbS5oaWRlKCl9aWYoaC5icmluZ1Nlcmllc1RvRnJvbnQpe2wucmVzdG9yZVByZXZpb3VzU2VyaWVzT3JkZXIoKX1oLmlzSGlnaGxpZ2h0aW5nPWZhbHNlO2guY3VycmVudE5laWdoYm9yPW51bGw7cT1udWxsfWVsc2V7aWYocCE9bnVsbCYmbC5zZXJpZXNbcC5zZXJpZXNJbmRleF0uc2hvd0hpZ2hsaWdodCYmIWguaXNIaWdobGlnaHRpbmcpe3ZhciBvPWpRdWVyeS5FdmVudCgianFwbG90SGlnaGxpZ2h0ZXJIaWdobGlnaHQiKTtvLndoaWNoPW4ud2hpY2g7by5wYWdlWD1uLnBhZ2VYO28ucGFnZVk9bi5wYWdlWTt2YXIgaz1bcC5zZXJpZXNJbmRleCxwLnBvaW50SW5kZXgscC5kYXRhLGxdO2wudGFyZ2V0LnRyaWdnZXIobyxrKTtoLmlzSGlnaGxpZ2h0aW5nPXRydWU7aC5jdXJyZW50TmVpZ2hib3I9cDtpZihoLnNob3dNYXJrZXIpe2EobCxwKX1pZihsLnNlcmllc1twLnNlcmllc0luZGV4XS5zaG93JiZoLnNob3dUb29sdGlwJiYoIW18fCFtLl96b29tLnN0YXJ0ZWQpKXtnKGwsbC5zZXJpZXNbcC5zZXJpZXNJbmRleF0scCl9aWYoaC5icmluZ1Nlcmllc1RvRnJvbnQpe2wubW92ZVNlcmllc1RvRnJvbnQocC5zZXJpZXNJbmRleCl9fWVsc2V7aWYocCE9bnVsbCYmaC5pc0hpZ2hsaWdodGluZyYmaC5jdXJyZW50TmVpZ2hib3IhPXApe2lmKGwuc2VyaWVzW3Auc2VyaWVzSW5kZXhdLnNob3dIaWdobGlnaHQpe3ZhciBxPWguaGlnaGxpZ2h0Q2FudmFzLl9jdHg7cS5jbGVhclJlY3QoMCwwLHEuY2FudmFzLndpZHRoLHEuY2FudmFzLmhlaWdodCk7aC5pc0hpZ2hsaWdodGluZz10cnVlO2guY3VycmVudE5laWdoYm9yPXA7aWYoaC5zaG93TWFya2VyKXthKGwscCl9aWYobC5zZXJpZXNbcC5zZXJpZXNJbmRleF0uc2hvdyYmaC5zaG93VG9vbHRpcCYmKCFtfHwhbS5fem9vbS5zdGFydGVkKSl7ZyhsLGwuc2VyaWVzW3Auc2VyaWVzSW5kZXhdLHApfWlmKGguYnJpbmdTZXJpZXNUb0Zyb250KXtsLm1vdmVTZXJpZXNUb0Zyb250KHAuc2VyaWVzSW5kZXgpfX19fX19fX0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.json2.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICAgIDIwMTAtMTEtMDEgQ2hyaXMgTGVvbmVsbG8KICAgIAogICAgU2xpZ2h0bHkgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgb3JpZ2luYWwganNvbjIuanMgdG8gcHV0IEpTT04KICAgIGZ1bmN0aW9ucyB1bmRlciB0aGUgJC5qcXBsb3QgbmFtZXNwYWNlLgogICAgCiAgICBsaWNlbnNpbmcgYW5kIG9yaWduYWwgY29tbWVudHMgZm9sbG93OgogICAgCiAgICBodHRwOi8vd3d3LkpTT04ub3JnL2pzb24yLmpzCiAgICAyMDEwLTA4LTI1CiAgICAKICAgIFB1YmxpYyBEb21haW4uCgogICAgTk8gV0FSUkFOVFkgRVhQUkVTU0VEIE9SIElNUExJRUQuIFVTRSBBVCBZT1VSIE9XTiBSSVNLLgoKICAgIFNlZSBodHRwOi8vd3d3LkpTT04ub3JnL2pzLmh0bWwKCgogICAgVGhpcyBjb2RlIHNob3VsZCBiZSBtaW5pZmllZCBiZWZvcmUgZGVwbG95bWVudC4KICAgIFNlZSBodHRwOi8vamF2YXNjcmlwdC5jcm9ja2ZvcmQuY29tL2pzbWluLmh0bWwKCiAgICBVU0UgWU9VUiBPV04gQ09QWS4gSVQgSVMgRVhUUkVNRUxZIFVOV0lTRSBUTyBMT0FEIENPREUgRlJPTSBTRVJWRVJTIFlPVSBETwogICAgTk9UIENPTlRST0wuCgoKICAgIFRoaXMgZmlsZSBjcmVhdGVzIGEgZ2xvYmFsIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdHdvIG1ldGhvZHM6IHN0cmluZ2lmeQogICAgYW5kIHBhcnNlLgoKICAgICAgICAkLmpxcGxvdC5KU09OLnN0cmluZ2lmeSh2YWx1ZSwgcmVwbGFjZXIsIHNwYWNlKQogICAgICAgICAgICB2YWx1ZSAgICAgICBhbnkgSmF2YVNjcmlwdCB2YWx1ZSwgdXN1YWxseSBhbiBvYmplY3Qgb3IgYXJyYXkuCgogICAgICAgICAgICByZXBsYWNlciAgICBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBkZXRlcm1pbmVzIGhvdyBvYmplY3QKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzIGFyZSBzdHJpbmdpZmllZCBmb3Igb2JqZWN0cy4gSXQgY2FuIGJlIGEKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncy4KCiAgICAgICAgICAgIHNwYWNlICAgICAgIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IHNwZWNpZmllcyB0aGUgaW5kZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgb2YgbmVzdGVkIHN0cnVjdHVyZXMuIElmIGl0IGlzIG9taXR0ZWQsIHRoZSB0ZXh0IHdpbGwKICAgICAgICAgICAgICAgICAgICAgICAgYmUgcGFja2VkIHdpdGhvdXQgZXh0cmEgd2hpdGVzcGFjZS4gSWYgaXQgaXMgYSBudW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIGl0IHdpbGwgc3BlY2lmeSB0aGUgbnVtYmVyIG9mIHNwYWNlcyB0byBpbmRlbnQgYXQgZWFjaAogICAgICAgICAgICAgICAgICAgICAgICBsZXZlbC4gSWYgaXQgaXMgYSBzdHJpbmcgKHN1Y2ggYXMgJ1x0JyBvciAnJm5ic3A7JyksCiAgICAgICAgICAgICAgICAgICAgICAgIGl0IGNvbnRhaW5zIHRoZSBjaGFyYWN0ZXJzIHVzZWQgdG8gaW5kZW50IGF0IGVhY2ggbGV2ZWwuCgogICAgICAgICAgICBUaGlzIG1ldGhvZCBwcm9kdWNlcyBhIEpTT04gdGV4dCBmcm9tIGEgSmF2YVNjcmlwdCB2YWx1ZS4KCiAgICAgICAgICAgIFdoZW4gYW4gb2JqZWN0IHZhbHVlIGlzIGZvdW5kLCBpZiB0aGUgb2JqZWN0IGNvbnRhaW5zIGEgdG9KU09OCiAgICAgICAgICAgIG1ldGhvZCwgaXRzIHRvSlNPTiBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYW5kIHRoZSByZXN1bHQgd2lsbCBiZQogICAgICAgICAgICBzdHJpbmdpZmllZC4gQSB0b0pTT04gbWV0aG9kIGRvZXMgbm90IHNlcmlhbGl6ZTogaXQgcmV0dXJucyB0aGUKICAgICAgICAgICAgdmFsdWUgcmVwcmVzZW50ZWQgYnkgdGhlIG5hbWUvdmFsdWUgcGFpciB0aGF0IHNob3VsZCBiZSBzZXJpYWxpemVkLAogICAgICAgICAgICBvciB1bmRlZmluZWQgaWYgbm90aGluZyBzaG91bGQgYmUgc2VyaWFsaXplZC4gVGhlIHRvSlNPTiBtZXRob2QKICAgICAgICAgICAgd2lsbCBiZSBwYXNzZWQgdGhlIGtleSBhc3NvY2lhdGVkIHdpdGggdGhlIHZhbHVlLCBhbmQgdGhpcyB3aWxsIGJlCiAgICAgICAgICAgIGJvdW5kIHRvIHRoZSB2YWx1ZQoKICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoaXMgd291bGQgc2VyaWFsaXplIERhdGVzIGFzIElTTyBzdHJpbmdzLgoKICAgICAgICAgICAgICAgIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIChrZXkpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBmKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9ybWF0IGludGVnZXJzIHRvIGhhdmUgYXQgbGVhc3QgdHdvIGRpZ2l0cy4KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gPCAxMCA/ICcwJyArIG4gOiBuOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VVRDRnVsbFllYXIoKSAgICsgJy0nICsKICAgICAgICAgICAgICAgICAgICAgICAgIGYodGhpcy5nZXRVVENNb250aCgpICsgMSkgKyAnLScgKwogICAgICAgICAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVUQ0RhdGUoKSkgICAgICArICdUJyArCiAgICAgICAgICAgICAgICAgICAgICAgICBmKHRoaXMuZ2V0VVRDSG91cnMoKSkgICAgICsgJzonICsKICAgICAgICAgICAgICAgICAgICAgICAgIGYodGhpcy5nZXRVVENNaW51dGVzKCkpICAgKyAnOicgKwogICAgICAgICAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVUQ1NlY29uZHMoKSkgICArICdaJzsKICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICBZb3UgY2FuIHByb3ZpZGUgYW4gb3B0aW9uYWwgcmVwbGFjZXIgbWV0aG9kLiBJdCB3aWxsIGJlIHBhc3NlZCB0aGUKICAgICAgICAgICAga2V5IGFuZCB2YWx1ZSBvZiBlYWNoIG1lbWJlciwgd2l0aCB0aGlzIGJvdW5kIHRvIHRoZSBjb250YWluaW5nCiAgICAgICAgICAgIG9iamVjdC4gVGhlIHZhbHVlIHRoYXQgaXMgcmV0dXJuZWQgZnJvbSB5b3VyIG1ldGhvZCB3aWxsIGJlCiAgICAgICAgICAgIHNlcmlhbGl6ZWQuIElmIHlvdXIgbWV0aG9kIHJldHVybnMgdW5kZWZpbmVkLCB0aGVuIHRoZSBtZW1iZXIgd2lsbAogICAgICAgICAgICBiZSBleGNsdWRlZCBmcm9tIHRoZSBzZXJpYWxpemF0aW9uLgoKICAgICAgICAgICAgSWYgdGhlIHJlcGxhY2VyIHBhcmFtZXRlciBpcyBhbiBhcnJheSBvZiBzdHJpbmdzLCB0aGVuIGl0IHdpbGwgYmUKICAgICAgICAgICAgdXNlZCB0byBzZWxlY3QgdGhlIG1lbWJlcnMgdG8gYmUgc2VyaWFsaXplZC4gSXQgZmlsdGVycyB0aGUgcmVzdWx0cwogICAgICAgICAgICBzdWNoIHRoYXQgb25seSBtZW1iZXJzIHdpdGgga2V5cyBsaXN0ZWQgaW4gdGhlIHJlcGxhY2VyIGFycmF5IGFyZQogICAgICAgICAgICBzdHJpbmdpZmllZC4KCiAgICAgICAgICAgIFZhbHVlcyB0aGF0IGRvIG5vdCBoYXZlIEpTT04gcmVwcmVzZW50YXRpb25zLCBzdWNoIGFzIHVuZGVmaW5lZCBvcgogICAgICAgICAgICBmdW5jdGlvbnMsIHdpbGwgbm90IGJlIHNlcmlhbGl6ZWQuIFN1Y2ggdmFsdWVzIGluIG9iamVjdHMgd2lsbCBiZQogICAgICAgICAgICBkcm9wcGVkOyBpbiBhcnJheXMgdGhleSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggbnVsbC4gWW91IGNhbiB1c2UKICAgICAgICAgICAgYSByZXBsYWNlciBmdW5jdGlvbiB0byByZXBsYWNlIHRob3NlIHdpdGggSlNPTiB2YWx1ZXMuCiAgICAgICAgICAgICQuanFwbG90LkpTT04uc3RyaW5naWZ5KHVuZGVmaW5lZCkgcmV0dXJucyB1bmRlZmluZWQuCgogICAgICAgICAgICBUaGUgb3B0aW9uYWwgc3BhY2UgcGFyYW1ldGVyIHByb2R1Y2VzIGEgc3RyaW5naWZpY2F0aW9uIG9mIHRoZQogICAgICAgICAgICB2YWx1ZSB0aGF0IGlzIGZpbGxlZCB3aXRoIGxpbmUgYnJlYWtzIGFuZCBpbmRlbnRhdGlvbiB0byBtYWtlIGl0CiAgICAgICAgICAgIGVhc2llciB0byByZWFkLgoKICAgICAgICAgICAgSWYgdGhlIHNwYWNlIHBhcmFtZXRlciBpcyBhIG5vbi1lbXB0eSBzdHJpbmcsIHRoZW4gdGhhdCBzdHJpbmcgd2lsbAogICAgICAgICAgICBiZSB1c2VkIGZvciBpbmRlbnRhdGlvbi4gSWYgdGhlIHNwYWNlIHBhcmFtZXRlciBpcyBhIG51bWJlciwgdGhlbgogICAgICAgICAgICB0aGUgaW5kZW50YXRpb24gd2lsbCBiZSB0aGF0IG1hbnkgc3BhY2VzLgoKICAgICAgICAgICAgRXhhbXBsZToKCiAgICAgICAgICAgIHRleHQgPSAkLmpxcGxvdC5KU09OLnN0cmluZ2lmeShbJ2UnLCB7cGx1cmlidXM6ICd1bnVtJ31dKTsKICAgICAgICAgICAgLy8gdGV4dCBpcyAnWyJlIix7InBsdXJpYnVzIjoidW51bSJ9XScKCgogICAgICAgICAgICB0ZXh0ID0gJC5qcXBsb3QuSlNPTi5zdHJpbmdpZnkoWydlJywge3BsdXJpYnVzOiAndW51bSd9XSwgbnVsbCwgJ1x0Jyk7CiAgICAgICAgICAgIC8vIHRleHQgaXMgJ1tcblx0ImUiLFxuXHR7XG5cdFx0InBsdXJpYnVzIjogInVudW0iXG5cdH1cbl0nCgogICAgICAgICAgICB0ZXh0ID0gJC5qcXBsb3QuSlNPTi5zdHJpbmdpZnkoW25ldyBEYXRlKCldLCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNba2V5XSBpbnN0YW5jZW9mIERhdGUgPwogICAgICAgICAgICAgICAgICAgICdEYXRlKCcgKyB0aGlzW2tleV0gKyAnKScgOiB2YWx1ZTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIC8vIHRleHQgaXMgJ1siRGF0ZSgtLS1jdXJyZW50IHRpbWUtLS0pIl0nCgoKICAgICAgICAkLmpxcGxvdC5KU09OLnBhcnNlKHRleHQsIHJldml2ZXIpCiAgICAgICAgICAgIFRoaXMgbWV0aG9kIHBhcnNlcyBhIEpTT04gdGV4dCB0byBwcm9kdWNlIGFuIG9iamVjdCBvciBhcnJheS4KICAgICAgICAgICAgSXQgY2FuIHRocm93IGEgU3ludGF4RXJyb3IgZXhjZXB0aW9uLgoKICAgICAgICAgICAgVGhlIG9wdGlvbmFsIHJldml2ZXIgcGFyYW1ldGVyIGlzIGEgZnVuY3Rpb24gdGhhdCBjYW4gZmlsdGVyIGFuZAogICAgICAgICAgICB0cmFuc2Zvcm0gdGhlIHJlc3VsdHMuIEl0IHJlY2VpdmVzIGVhY2ggb2YgdGhlIGtleXMgYW5kIHZhbHVlcywKICAgICAgICAgICAgYW5kIGl0cyByZXR1cm4gdmFsdWUgaXMgdXNlZCBpbnN0ZWFkIG9mIHRoZSBvcmlnaW5hbCB2YWx1ZS4KICAgICAgICAgICAgSWYgaXQgcmV0dXJucyB3aGF0IGl0IHJlY2VpdmVkLCB0aGVuIHRoZSBzdHJ1Y3R1cmUgaXMgbm90IG1vZGlmaWVkLgogICAgICAgICAgICBJZiBpdCByZXR1cm5zIHVuZGVmaW5lZCB0aGVuIHRoZSBtZW1iZXIgaXMgZGVsZXRlZC4KCiAgICAgICAgICAgIEV4YW1wbGU6CgogICAgICAgICAgICAvLyBQYXJzZSB0aGUgdGV4dC4gVmFsdWVzIHRoYXQgbG9vayBsaWtlIElTTyBkYXRlIHN0cmluZ3Mgd2lsbAogICAgICAgICAgICAvLyBiZSBjb252ZXJ0ZWQgdG8gRGF0ZSBvYmplY3RzLgoKICAgICAgICAgICAgbXlEYXRhID0gJC5qcXBsb3QuSlNPTi5wYXJzZSh0ZXh0LCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkgewogICAgICAgICAgICAgICAgdmFyIGE7CiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgICAgICAgIGEgPQovXihcZHs0fSktKFxkezJ9KS0oXGR7Mn0pVChcZHsyfSk6KFxkezJ9KTooXGR7Mn0oPzpcLlxkKik/KVokLy5leGVjKHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICBpZiAoYSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoK2FbMV0sICthWzJdIC0gMSwgK2FbM10sICthWzRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgK2FbNV0sICthWzZdKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIG15RGF0YSA9ICQuanFwbG90LkpTT04ucGFyc2UoJ1siRGF0ZSgwOS8wOS8yMDAxKSJdJywgZnVuY3Rpb24gKGtleSwgdmFsdWUpIHsKICAgICAgICAgICAgICAgIHZhciBkOwogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuc2xpY2UoMCwgNSkgPT09ICdEYXRlKCcgJiYKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuc2xpY2UoLTEpID09PSAnKScpIHsKICAgICAgICAgICAgICAgICAgICBkID0gbmV3IERhdGUodmFsdWUuc2xpY2UoNSwgLTEpKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgICAgIH0pOwoKCiAgICBUaGlzIGlzIGEgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uLiBZb3UgYXJlIGZyZWUgdG8gY29weSwgbW9kaWZ5LCBvcgogICAgcmVkaXN0cmlidXRlLgoqLwoKKGZ1bmN0aW9uKCQpIHsKCiAgICAkLmpxcGxvdC5KU09OID0gd2luZG93LkpTT047CgogICAgaWYgKCF3aW5kb3cuSlNPTikgewogICAgICAgICQuanFwbG90LkpTT04gPSB7fTsKICAgIH0KICAgIAogICAgZnVuY3Rpb24gZihuKSB7CiAgICAgICAgLy8gRm9ybWF0IGludGVnZXJzIHRvIGhhdmUgYXQgbGVhc3QgdHdvIGRpZ2l0cy4KICAgICAgICByZXR1cm4gbiA8IDEwID8gJzAnICsgbiA6IG47CiAgICB9CgogICAgaWYgKHR5cGVvZiBEYXRlLnByb3RvdHlwZS50b0pTT04gIT09ICdmdW5jdGlvbicpIHsKCiAgICAgICAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gKGtleSkgewoKICAgICAgICAgICAgcmV0dXJuIGlzRmluaXRlKHRoaXMudmFsdWVPZigpKSA/CiAgICAgICAgICAgICAgICAgICB0aGlzLmdldFVUQ0Z1bGxZZWFyKCkgICArICctJyArCiAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVUQ01vbnRoKCkgKyAxKSArICctJyArCiAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVUQ0RhdGUoKSkgICAgICArICdUJyArCiAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVUQ0hvdXJzKCkpICAgICArICc6JyArCiAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVUQ01pbnV0ZXMoKSkgICArICc6JyArCiAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVUQ1NlY29uZHMoKSkgICArICdaJyA6IG51bGw7CiAgICAgICAgfTsKCiAgICAgICAgU3RyaW5nLnByb3RvdHlwZS50b0pTT04gPQogICAgICAgIE51bWJlci5wcm90b3R5cGUudG9KU09OID0KICAgICAgICBCb29sZWFuLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiAoa2V5KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKTsKICAgICAgICB9OwogICAgfQoKICAgIHZhciBjeCA9IC9bXHUwMDAwXHUwMGFkXHUwNjAwLVx1MDYwNFx1MDcwZlx1MTdiNFx1MTdiNVx1MjAwYy1cdTIwMGZcdTIwMjgtXHUyMDJmXHUyMDYwLVx1MjA2Zlx1ZmVmZlx1ZmZmMC1cdWZmZmZdL2csCiAgICAgICAgZXNjYXBhYmxlID0gL1tcXFwiXHgwMC1ceDFmXHg3Zi1ceDlmXHUwMGFkXHUwNjAwLVx1MDYwNFx1MDcwZlx1MTdiNFx1MTdiNVx1MjAwYy1cdTIwMGZcdTIwMjgtXHUyMDJmXHUyMDYwLVx1MjA2Zlx1ZmVmZlx1ZmZmMC1cdWZmZmZdL2csCiAgICAgICAgZ2FwLAogICAgICAgIGluZGVudCwKICAgICAgICBtZXRhID0geyAgICAvLyB0YWJsZSBvZiBjaGFyYWN0ZXIgc3Vic3RpdHV0aW9ucwogICAgICAgICAgICAnXGInOiAnXFxiJywKICAgICAgICAgICAgJ1x0JzogJ1xcdCcsCiAgICAgICAgICAgICdcbic6ICdcXG4nLAogICAgICAgICAgICAnXGYnOiAnXFxmJywKICAgICAgICAgICAgJ1xyJzogJ1xccicsCiAgICAgICAgICAgICciJyA6ICdcXCInLAogICAgICAgICAgICAnXFwnOiAnXFxcXCcKICAgICAgICB9LAogICAgICAgIHJlcDsKCgogICAgZnVuY3Rpb24gcXVvdGUoc3RyaW5nKSB7CgovLyBJZiB0aGUgc3RyaW5nIGNvbnRhaW5zIG5vIGNvbnRyb2wgY2hhcmFjdGVycywgbm8gcXVvdGUgY2hhcmFjdGVycywgYW5kIG5vCi8vIGJhY2tzbGFzaCBjaGFyYWN0ZXJzLCB0aGVuIHdlIGNhbiBzYWZlbHkgc2xhcCBzb21lIHF1b3RlcyBhcm91bmQgaXQuCi8vIE90aGVyd2lzZSB3ZSBtdXN0IGFsc28gcmVwbGFjZSB0aGUgb2ZmZW5kaW5nIGNoYXJhY3RlcnMgd2l0aCBzYWZlIGVzY2FwZQovLyBzZXF1ZW5jZXMuCgogICAgICAgIGVzY2FwYWJsZS5sYXN0SW5kZXggPSAwOwogICAgICAgIHJldHVybiBlc2NhcGFibGUudGVzdChzdHJpbmcpID8KICAgICAgICAgICAgJyInICsgc3RyaW5nLnJlcGxhY2UoZXNjYXBhYmxlLCBmdW5jdGlvbiAoYSkgewogICAgICAgICAgICAgICAgdmFyIGMgPSBtZXRhW2FdOwogICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBjID09PSAnc3RyaW5nJyA/IGMgOgogICAgICAgICAgICAgICAgICAgICdcXHUnICsgKCcwMDAwJyArIGEuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KTsKICAgICAgICAgICAgfSkgKyAnIicgOgogICAgICAgICAgICAnIicgKyBzdHJpbmcgKyAnIic7CiAgICB9CgoKICAgIGZ1bmN0aW9uIHN0cihrZXksIGhvbGRlcikgewoKLy8gUHJvZHVjZSBhIHN0cmluZyBmcm9tIGhvbGRlcltrZXldLgoKICAgICAgICB2YXIgaSwgICAgICAgICAgLy8gVGhlIGxvb3AgY291bnRlci4KICAgICAgICAgICAgaywgICAgICAgICAgLy8gVGhlIG1lbWJlciBrZXkuCiAgICAgICAgICAgIHYsICAgICAgICAgIC8vIFRoZSBtZW1iZXIgdmFsdWUuCiAgICAgICAgICAgIGxlbmd0aCwKICAgICAgICAgICAgbWluZCA9IGdhcCwKICAgICAgICAgICAgcGFydGlhbCwKICAgICAgICAgICAgdmFsdWUgPSBob2xkZXJba2V5XTsKCi8vIElmIHRoZSB2YWx1ZSBoYXMgYSB0b0pTT04gbWV0aG9kLCBjYWxsIGl0IHRvIG9idGFpbiBhIHJlcGxhY2VtZW50IHZhbHVlLgoKICAgICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJgogICAgICAgICAgICAgICAgdHlwZW9mIHZhbHVlLnRvSlNPTiA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvSlNPTihrZXkpOwogICAgICAgIH0KCi8vIElmIHdlIHdlcmUgY2FsbGVkIHdpdGggYSByZXBsYWNlciBmdW5jdGlvbiwgdGhlbiBjYWxsIHRoZSByZXBsYWNlciB0bwovLyBvYnRhaW4gYSByZXBsYWNlbWVudCB2YWx1ZS4KCiAgICAgICAgaWYgKHR5cGVvZiByZXAgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgdmFsdWUgPSByZXAuY2FsbChob2xkZXIsIGtleSwgdmFsdWUpOwogICAgICAgIH0KCi8vIFdoYXQgaGFwcGVucyBuZXh0IGRlcGVuZHMgb24gdGhlIHZhbHVlJ3MgdHlwZS4KCiAgICAgICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHsKICAgICAgICBjYXNlICdzdHJpbmcnOgogICAgICAgICAgICByZXR1cm4gcXVvdGUodmFsdWUpOwoKICAgICAgICBjYXNlICdudW1iZXInOgoKLy8gSlNPTiBudW1iZXJzIG11c3QgYmUgZmluaXRlLiBFbmNvZGUgbm9uLWZpbml0ZSBudW1iZXJzIGFzIG51bGwuCgogICAgICAgICAgICByZXR1cm4gaXNGaW5pdGUodmFsdWUpID8gU3RyaW5nKHZhbHVlKSA6ICdudWxsJzsKCiAgICAgICAgY2FzZSAnYm9vbGVhbic6CiAgICAgICAgY2FzZSAnbnVsbCc6CgovLyBJZiB0aGUgdmFsdWUgaXMgYSBib29sZWFuIG9yIG51bGwsIGNvbnZlcnQgaXQgdG8gYSBzdHJpbmcuIE5vdGU6Ci8vIHR5cGVvZiBudWxsIGRvZXMgbm90IHByb2R1Y2UgJ251bGwnLiBUaGUgY2FzZSBpcyBpbmNsdWRlZCBoZXJlIGluCi8vIHRoZSByZW1vdGUgY2hhbmNlIHRoYXQgdGhpcyBnZXRzIGZpeGVkIHNvbWVkYXkuCgogICAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTsKCi8vIElmIHRoZSB0eXBlIGlzICdvYmplY3QnLCB3ZSBtaWdodCBiZSBkZWFsaW5nIHdpdGggYW4gb2JqZWN0IG9yIGFuIGFycmF5IG9yCi8vIG51bGwuCgogICAgICAgIGNhc2UgJ29iamVjdCc6CgovLyBEdWUgdG8gYSBzcGVjaWZpY2F0aW9uIGJsdW5kZXIgaW4gRUNNQVNjcmlwdCwgdHlwZW9mIG51bGwgaXMgJ29iamVjdCcsCi8vIHNvIHdhdGNoIG91dCBmb3IgdGhhdCBjYXNlLgoKICAgICAgICAgICAgaWYgKCF2YWx1ZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICdudWxsJzsKICAgICAgICAgICAgfQoKLy8gTWFrZSBhbiBhcnJheSB0byBob2xkIHRoZSBwYXJ0aWFsIHJlc3VsdHMgb2Ygc3RyaW5naWZ5aW5nIHRoaXMgb2JqZWN0IHZhbHVlLgoKICAgICAgICAgICAgZ2FwICs9IGluZGVudDsKICAgICAgICAgICAgcGFydGlhbCA9IFtdOwoKLy8gSXMgdGhlIHZhbHVlIGFuIGFycmF5PwoKICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkodmFsdWUpID09PSAnW29iamVjdCBBcnJheV0nKSB7CgovLyBUaGUgdmFsdWUgaXMgYW4gYXJyYXkuIFN0cmluZ2lmeSBldmVyeSBlbGVtZW50LiBVc2UgbnVsbCBhcyBhIHBsYWNlaG9sZGVyCi8vIGZvciBub24tSlNPTiB2YWx1ZXMuCgogICAgICAgICAgICAgICAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoOwogICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgcGFydGlhbFtpXSA9IHN0cihpLCB2YWx1ZSkgfHwgJ251bGwnOwogICAgICAgICAgICAgICAgfQoKLy8gSm9pbiBhbGwgb2YgdGhlIGVsZW1lbnRzIHRvZ2V0aGVyLCBzZXBhcmF0ZWQgd2l0aCBjb21tYXMsIGFuZCB3cmFwIHRoZW0gaW4KLy8gYnJhY2tldHMuCgogICAgICAgICAgICAgICAgdiA9IHBhcnRpYWwubGVuZ3RoID09PSAwID8gJ1tdJyA6CiAgICAgICAgICAgICAgICAgICAgZ2FwID8gJ1tcbicgKyBnYXAgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbC5qb2luKCcsXG4nICsgZ2FwKSArICdcbicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmQgKyAnXScgOgogICAgICAgICAgICAgICAgICAgICAgICAgICdbJyArIHBhcnRpYWwuam9pbignLCcpICsgJ10nOwogICAgICAgICAgICAgICAgZ2FwID0gbWluZDsKICAgICAgICAgICAgICAgIHJldHVybiB2OwogICAgICAgICAgICB9CgovLyBJZiB0aGUgcmVwbGFjZXIgaXMgYW4gYXJyYXksIHVzZSBpdCB0byBzZWxlY3QgdGhlIG1lbWJlcnMgdG8gYmUgc3RyaW5naWZpZWQuCgogICAgICAgICAgICBpZiAocmVwICYmIHR5cGVvZiByZXAgPT09ICdvYmplY3QnKSB7CiAgICAgICAgICAgICAgICBsZW5ndGggPSByZXAubGVuZ3RoOwogICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgayA9IHJlcFtpXTsKICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGsgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBzdHIoaywgdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbC5wdXNoKHF1b3RlKGspICsgKGdhcCA/ICc6ICcgOiAnOicpICsgdik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CgovLyBPdGhlcndpc2UsIGl0ZXJhdGUgdGhyb3VnaCBhbGwgb2YgdGhlIGtleXMgaW4gdGhlIG9iamVjdC4KCiAgICAgICAgICAgICAgICBmb3IgKGsgaW4gdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGspKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBzdHIoaywgdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbC5wdXNoKHF1b3RlKGspICsgKGdhcCA/ICc6ICcgOiAnOicpICsgdik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCi8vIEpvaW4gYWxsIG9mIHRoZSBtZW1iZXIgdGV4dHMgdG9nZXRoZXIsIHNlcGFyYXRlZCB3aXRoIGNvbW1hcywKLy8gYW5kIHdyYXAgdGhlbSBpbiBicmFjZXMuCgogICAgICAgICAgICB2ID0gcGFydGlhbC5sZW5ndGggPT09IDAgPyAne30nIDoKICAgICAgICAgICAgICAgIGdhcCA/ICd7XG4nICsgZ2FwICsgcGFydGlhbC5qb2luKCcsXG4nICsgZ2FwKSArICdcbicgKwogICAgICAgICAgICAgICAgICAgICAgICBtaW5kICsgJ30nIDogJ3snICsgcGFydGlhbC5qb2luKCcsJykgKyAnfSc7CiAgICAgICAgICAgIGdhcCA9IG1pbmQ7CiAgICAgICAgICAgIHJldHVybiB2OwogICAgICAgIH0KICAgIH0KCi8vIElmIHRoZSBKU09OIG9iamVjdCBkb2VzIG5vdCB5ZXQgaGF2ZSBhIHN0cmluZ2lmeSBtZXRob2QsIGdpdmUgaXQgb25lLgoKICAgIGlmICh0eXBlb2YgJC5qcXBsb3QuSlNPTi5zdHJpbmdpZnkgIT09ICdmdW5jdGlvbicpIHsKICAgICAgICAkLmpxcGxvdC5KU09OLnN0cmluZ2lmeSA9IGZ1bmN0aW9uICh2YWx1ZSwgcmVwbGFjZXIsIHNwYWNlKSB7CgovLyBUaGUgc3RyaW5naWZ5IG1ldGhvZCB0YWtlcyBhIHZhbHVlIGFuZCBhbiBvcHRpb25hbCByZXBsYWNlciwgYW5kIGFuIG9wdGlvbmFsCi8vIHNwYWNlIHBhcmFtZXRlciwgYW5kIHJldHVybnMgYSBKU09OIHRleHQuIFRoZSByZXBsYWNlciBjYW4gYmUgYSBmdW5jdGlvbgovLyB0aGF0IGNhbiByZXBsYWNlIHZhbHVlcywgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncyB0aGF0IHdpbGwgc2VsZWN0IHRoZSBrZXlzLgovLyBBIGRlZmF1bHQgcmVwbGFjZXIgbWV0aG9kIGNhbiBiZSBwcm92aWRlZC4gVXNlIG9mIHRoZSBzcGFjZSBwYXJhbWV0ZXIgY2FuCi8vIHByb2R1Y2UgdGV4dCB0aGF0IGlzIG1vcmUgZWFzaWx5IHJlYWRhYmxlLgoKICAgICAgICAgICAgdmFyIGk7CiAgICAgICAgICAgIGdhcCA9ICcnOwogICAgICAgICAgICBpbmRlbnQgPSAnJzsKCi8vIElmIHRoZSBzcGFjZSBwYXJhbWV0ZXIgaXMgYSBudW1iZXIsIG1ha2UgYW4gaW5kZW50IHN0cmluZyBjb250YWluaW5nIHRoYXQKLy8gbWFueSBzcGFjZXMuCgogICAgICAgICAgICBpZiAodHlwZW9mIHNwYWNlID09PSAnbnVtYmVyJykgewogICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNwYWNlOyBpICs9IDEpIHsKICAgICAgICAgICAgICAgICAgICBpbmRlbnQgKz0gJyAnOwogICAgICAgICAgICAgICAgfQoKLy8gSWYgdGhlIHNwYWNlIHBhcmFtZXRlciBpcyBhIHN0cmluZywgaXQgd2lsbCBiZSB1c2VkIGFzIHRoZSBpbmRlbnQgc3RyaW5nLgoKICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc3BhY2UgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICBpbmRlbnQgPSBzcGFjZTsKICAgICAgICAgICAgfQoKLy8gSWYgdGhlcmUgaXMgYSByZXBsYWNlciwgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uIG9yIGFuIGFycmF5LgovLyBPdGhlcndpc2UsIHRocm93IGFuIGVycm9yLgoKICAgICAgICAgICAgcmVwID0gcmVwbGFjZXI7CiAgICAgICAgICAgIGlmIChyZXBsYWNlciAmJiB0eXBlb2YgcmVwbGFjZXIgIT09ICdmdW5jdGlvbicgJiYKICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHJlcGxhY2VyICE9PSAnb2JqZWN0JyB8fAogICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcmVwbGFjZXIubGVuZ3RoICE9PSAnbnVtYmVyJykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignJC5qcXBsb3QuSlNPTi5zdHJpbmdpZnknKTsKICAgICAgICAgICAgfQoKLy8gTWFrZSBhIGZha2Ugcm9vdCBvYmplY3QgY29udGFpbmluZyBvdXIgdmFsdWUgdW5kZXIgdGhlIGtleSBvZiAnJy4KLy8gUmV0dXJuIHRoZSByZXN1bHQgb2Ygc3RyaW5naWZ5aW5nIHRoZSB2YWx1ZS4KCiAgICAgICAgICAgIHJldHVybiBzdHIoJycsIHsnJzogdmFsdWV9KTsKICAgICAgICB9OwogICAgfQoKCi8vIElmIHRoZSBKU09OIG9iamVjdCBkb2VzIG5vdCB5ZXQgaGF2ZSBhIHBhcnNlIG1ldGhvZCwgZ2l2ZSBpdCBvbmUuCgogICAgaWYgKHR5cGVvZiAkLmpxcGxvdC5KU09OLnBhcnNlICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgJC5qcXBsb3QuSlNPTi5wYXJzZSA9IGZ1bmN0aW9uICh0ZXh0LCByZXZpdmVyKSB7CgovLyBUaGUgcGFyc2UgbWV0aG9kIHRha2VzIGEgdGV4dCBhbmQgYW4gb3B0aW9uYWwgcmV2aXZlciBmdW5jdGlvbiwgYW5kIHJldHVybnMKLy8gYSBKYXZhU2NyaXB0IHZhbHVlIGlmIHRoZSB0ZXh0IGlzIGEgdmFsaWQgSlNPTiB0ZXh0LgoKICAgICAgICAgICAgdmFyIGo7CgogICAgICAgICAgICBmdW5jdGlvbiB3YWxrKGhvbGRlciwga2V5KSB7CgovLyBUaGUgd2FsayBtZXRob2QgaXMgdXNlZCB0byByZWN1cnNpdmVseSB3YWxrIHRoZSByZXN1bHRpbmcgc3RydWN0dXJlIHNvCi8vIHRoYXQgbW9kaWZpY2F0aW9ucyBjYW4gYmUgbWFkZS4KCiAgICAgICAgICAgICAgICB2YXIgaywgdiwgdmFsdWUgPSBob2xkZXJba2V5XTsKICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChrIGluIHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSB3YWxrKHZhbHVlLCBrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVtrXSA9IHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2YWx1ZVtrXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiByZXZpdmVyLmNhbGwoaG9sZGVyLCBrZXksIHZhbHVlKTsKICAgICAgICAgICAgfQoKCi8vIFBhcnNpbmcgaGFwcGVucyBpbiBmb3VyIHN0YWdlcy4gSW4gdGhlIGZpcnN0IHN0YWdlLCB3ZSByZXBsYWNlIGNlcnRhaW4KLy8gVW5pY29kZSBjaGFyYWN0ZXJzIHdpdGggZXNjYXBlIHNlcXVlbmNlcy4gSmF2YVNjcmlwdCBoYW5kbGVzIG1hbnkgY2hhcmFjdGVycwovLyBpbmNvcnJlY3RseSwgZWl0aGVyIHNpbGVudGx5IGRlbGV0aW5nIHRoZW0sIG9yIHRyZWF0aW5nIHRoZW0gYXMgbGluZSBlbmRpbmdzLgoKICAgICAgICAgICAgdGV4dCA9IFN0cmluZyh0ZXh0KTsKICAgICAgICAgICAgY3gubGFzdEluZGV4ID0gMDsKICAgICAgICAgICAgaWYgKGN4LnRlc3QodGV4dCkpIHsKICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoY3gsIGZ1bmN0aW9uIChhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdcXHUnICsKICAgICAgICAgICAgICAgICAgICAgICAgKCcwMDAwJyArIGEuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgovLyBJbiB0aGUgc2Vjb25kIHN0YWdlLCB3ZSBydW4gdGhlIHRleHQgYWdhaW5zdCByZWd1bGFyIGV4cHJlc3Npb25zIHRoYXQgbG9vawovLyBmb3Igbm9uLUpTT04gcGF0dGVybnMuIFdlIGFyZSBlc3BlY2lhbGx5IGNvbmNlcm5lZCB3aXRoICcoKScgYW5kICduZXcnCi8vIGJlY2F1c2UgdGhleSBjYW4gY2F1c2UgaW52b2NhdGlvbiwgYW5kICc9JyBiZWNhdXNlIGl0IGNhbiBjYXVzZSBtdXRhdGlvbi4KLy8gQnV0IGp1c3QgdG8gYmUgc2FmZSwgd2Ugd2FudCB0byByZWplY3QgYWxsIHVuZXhwZWN0ZWQgZm9ybXMuCgovLyBXZSBzcGxpdCB0aGUgc2Vjb25kIHN0YWdlIGludG8gNCByZWdleHAgb3BlcmF0aW9ucyBpbiBvcmRlciB0byB3b3JrIGFyb3VuZAovLyBjcmlwcGxpbmcgaW5lZmZpY2llbmNpZXMgaW4gSUUncyBhbmQgU2FmYXJpJ3MgcmVnZXhwIGVuZ2luZXMuIEZpcnN0IHdlCi8vIHJlcGxhY2UgdGhlIEpTT04gYmFja3NsYXNoIHBhaXJzIHdpdGggJ0AnIChhIG5vbi1KU09OIGNoYXJhY3RlcikuIFNlY29uZCwgd2UKLy8gcmVwbGFjZSBhbGwgc2ltcGxlIHZhbHVlIHRva2VucyB3aXRoICddJyBjaGFyYWN0ZXJzLiBUaGlyZCwgd2UgZGVsZXRlIGFsbAovLyBvcGVuIGJyYWNrZXRzIHRoYXQgZm9sbG93IGEgY29sb24gb3IgY29tbWEgb3IgdGhhdCBiZWdpbiB0aGUgdGV4dC4gRmluYWxseSwKLy8gd2UgbG9vayB0byBzZWUgdGhhdCB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG9ubHkgd2hpdGVzcGFjZSBvciAnXScgb3IKLy8gJywnIG9yICc6JyBvciAneycgb3IgJ30nLiBJZiB0aGF0IGlzIHNvLCB0aGVuIHRoZSB0ZXh0IGlzIHNhZmUgZm9yIGV2YWwuCgogICAgICAgICAgICBpZiAoL15bXF0sOnt9XHNdKiQvLnRlc3QodGV4dC5yZXBsYWNlKC9cXCg/OlsiXFxcL2JmbnJ0XXx1WzAtOWEtZkEtRl17NH0pL2csICdAJykucmVwbGFjZSgvIlteIlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/L2csICddJykucmVwbGFjZSgvKD86Xnw6fCwpKD86XHMqXFspKy9nLCAnJykpKSB7CgovLyBJbiB0aGUgdGhpcmQgc3RhZ2Ugd2UgdXNlIHRoZSBldmFsIGZ1bmN0aW9uIHRvIGNvbXBpbGUgdGhlIHRleHQgaW50byBhCi8vIEphdmFTY3JpcHQgc3RydWN0dXJlLiBUaGUgJ3snIG9wZXJhdG9yIGlzIHN1YmplY3QgdG8gYSBzeW50YWN0aWMgYW1iaWd1aXR5Ci8vIGluIEphdmFTY3JpcHQ6IGl0IGNhbiBiZWdpbiBhIGJsb2NrIG9yIGFuIG9iamVjdCBsaXRlcmFsLiBXZSB3cmFwIHRoZSB0ZXh0Ci8vIGluIHBhcmVucyB0byBlbGltaW5hdGUgdGhlIGFtYmlndWl0eS4KCiAgICAgICAgICAgICAgICBqID0gZXZhbCgnKCcgKyB0ZXh0ICsgJyknKTsKCi8vIEluIHRoZSBvcHRpb25hbCBmb3VydGggc3RhZ2UsIHdlIHJlY3Vyc2l2ZWx5IHdhbGsgdGhlIG5ldyBzdHJ1Y3R1cmUsIHBhc3NpbmcKLy8gZWFjaCBuYW1lL3ZhbHVlIHBhaXIgdG8gYSByZXZpdmVyIGZ1bmN0aW9uIGZvciBwb3NzaWJsZSB0cmFuc2Zvcm1hdGlvbi4KCiAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIHJldml2ZXIgPT09ICdmdW5jdGlvbicgPwogICAgICAgICAgICAgICAgICAgIHdhbGsoeycnOiBqfSwgJycpIDogajsKICAgICAgICAgICAgfQoKLy8gSWYgdGhlIHRleHQgaXMgbm90IEpTT04gcGFyc2VhYmxlLCB0aGVuIGEgU3ludGF4RXJyb3IgaXMgdGhyb3duLgoKICAgICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKCckLmpxcGxvdC5KU09OLnBhcnNlJyk7CiAgICAgICAgfTsKICAgIH0KfSkoalF1ZXJ5KTsK]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.json2.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKCQpeyQuanFwbG90LkpTT049d2luZG93LkpTT047aWYoIXdpbmRvdy5KU09OKXskLmpxcGxvdC5KU09OPXt9fWZ1bmN0aW9uIGYobil7cmV0dXJuIG48MTA/IjAiK246bn1pZih0eXBlb2YgRGF0ZS5wcm90b3R5cGUudG9KU09OIT09ImZ1bmN0aW9uIil7RGF0ZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKGtleSl7cmV0dXJuIGlzRmluaXRlKHRoaXMudmFsdWVPZigpKT90aGlzLmdldFVUQ0Z1bGxZZWFyKCkrIi0iK2YodGhpcy5nZXRVVENNb250aCgpKzEpKyItIitmKHRoaXMuZ2V0VVRDRGF0ZSgpKSsiVCIrZih0aGlzLmdldFVUQ0hvdXJzKCkpKyI6IitmKHRoaXMuZ2V0VVRDTWludXRlcygpKSsiOiIrZih0aGlzLmdldFVUQ1NlY29uZHMoKSkrIloiOm51bGx9O1N0cmluZy5wcm90b3R5cGUudG9KU09OPU51bWJlci5wcm90b3R5cGUudG9KU09OPUJvb2xlYW4ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbihrZXkpe3JldHVybiB0aGlzLnZhbHVlT2YoKX19dmFyIGN4PS9bXHUwMDAwXHUwMGFkXHUwNjAwLVx1MDYwNFx1MDcwZlx1MTdiNFx1MTdiNVx1MjAwYy1cdTIwMGZcdTIwMjgtXHUyMDJmXHUyMDYwLVx1MjA2Zlx1ZmVmZlx1ZmZmMC1cdWZmZmZdL2csZXNjYXBhYmxlPS9bXFxcIlx4MDAtXHgxZlx4N2YtXHg5Zlx1MDBhZFx1MDYwMC1cdTA2MDRcdTA3MGZcdTE3YjRcdTE3YjVcdTIwMGMtXHUyMDBmXHUyMDI4LVx1MjAyZlx1MjA2MC1cdTIwNmZcdWZlZmZcdWZmZjAtXHVmZmZmXS9nLGdhcCxpbmRlbnQsbWV0YT17IlxiIjoiXFxiIiwiXHQiOiJcXHQiLCJcbiI6IlxcbiIsIlxmIjoiXFxmIiwiXHIiOiJcXHIiLCciJzonXFwiJywiXFwiOiJcXFxcIn0scmVwO2Z1bmN0aW9uIHF1b3RlKHN0cmluZyl7ZXNjYXBhYmxlLmxhc3RJbmRleD0wO3JldHVybiBlc2NhcGFibGUudGVzdChzdHJpbmcpPyciJytzdHJpbmcucmVwbGFjZShlc2NhcGFibGUsZnVuY3Rpb24oYSl7dmFyIGM9bWV0YVthXTtyZXR1cm4gdHlwZW9mIGM9PT0ic3RyaW5nIj9jOiJcXHUiKygiMDAwMCIrYS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpfSkrJyInOiciJytzdHJpbmcrJyInfWZ1bmN0aW9uIHN0cihrZXksaG9sZGVyKXt2YXIgaSxrLHYsbGVuZ3RoLG1pbmQ9Z2FwLHBhcnRpYWwsdmFsdWU9aG9sZGVyW2tleV07aWYodmFsdWUmJnR5cGVvZiB2YWx1ZT09PSJvYmplY3QiJiZ0eXBlb2YgdmFsdWUudG9KU09OPT09ImZ1bmN0aW9uIil7dmFsdWU9dmFsdWUudG9KU09OKGtleSl9aWYodHlwZW9mIHJlcD09PSJmdW5jdGlvbiIpe3ZhbHVlPXJlcC5jYWxsKGhvbGRlcixrZXksdmFsdWUpfXN3aXRjaCh0eXBlb2YgdmFsdWUpe2Nhc2Uic3RyaW5nIjpyZXR1cm4gcXVvdGUodmFsdWUpO2Nhc2UibnVtYmVyIjpyZXR1cm4gaXNGaW5pdGUodmFsdWUpP1N0cmluZyh2YWx1ZSk6Im51bGwiO2Nhc2UiYm9vbGVhbiI6Y2FzZSJudWxsIjpyZXR1cm4gU3RyaW5nKHZhbHVlKTtjYXNlIm9iamVjdCI6aWYoIXZhbHVlKXtyZXR1cm4ibnVsbCJ9Z2FwKz1pbmRlbnQ7cGFydGlhbD1bXTtpZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KHZhbHVlKT09PSJbb2JqZWN0IEFycmF5XSIpe2xlbmd0aD12YWx1ZS5sZW5ndGg7Zm9yKGk9MDtpPGxlbmd0aDtpKz0xKXtwYXJ0aWFsW2ldPXN0cihpLHZhbHVlKXx8Im51bGwifXY9cGFydGlhbC5sZW5ndGg9PT0wPyJbXSI6Z2FwPyJbXG4iK2dhcCtwYXJ0aWFsLmpvaW4oIixcbiIrZ2FwKSsiXG4iK21pbmQrIl0iOiJbIitwYXJ0aWFsLmpvaW4oIiwiKSsiXSI7Z2FwPW1pbmQ7cmV0dXJuIHZ9aWYocmVwJiZ0eXBlb2YgcmVwPT09Im9iamVjdCIpe2xlbmd0aD1yZXAubGVuZ3RoO2ZvcihpPTA7aTxsZW5ndGg7aSs9MSl7az1yZXBbaV07aWYodHlwZW9mIGs9PT0ic3RyaW5nIil7dj1zdHIoayx2YWx1ZSk7aWYodil7cGFydGlhbC5wdXNoKHF1b3RlKGspKyhnYXA/IjogIjoiOiIpK3YpfX19fWVsc2V7Zm9yKGsgaW4gdmFsdWUpe2lmKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLGspKXt2PXN0cihrLHZhbHVlKTtpZih2KXtwYXJ0aWFsLnB1c2gocXVvdGUoaykrKGdhcD8iOiAiOiI6Iikrdil9fX19dj1wYXJ0aWFsLmxlbmd0aD09PTA/Int9IjpnYXA/IntcbiIrZ2FwK3BhcnRpYWwuam9pbigiLFxuIitnYXApKyJcbiIrbWluZCsifSI6InsiK3BhcnRpYWwuam9pbigiLCIpKyJ9IjtnYXA9bWluZDtyZXR1cm4gdn19aWYodHlwZW9mICQuanFwbG90LkpTT04uc3RyaW5naWZ5IT09ImZ1bmN0aW9uIil7JC5qcXBsb3QuSlNPTi5zdHJpbmdpZnk9ZnVuY3Rpb24odmFsdWUscmVwbGFjZXIsc3BhY2Upe3ZhciBpO2dhcD0iIjtpbmRlbnQ9IiI7aWYodHlwZW9mIHNwYWNlPT09Im51bWJlciIpe2ZvcihpPTA7aTxzcGFjZTtpKz0xKXtpbmRlbnQrPSIgIn19ZWxzZXtpZih0eXBlb2Ygc3BhY2U9PT0ic3RyaW5nIil7aW5kZW50PXNwYWNlfX1yZXA9cmVwbGFjZXI7aWYocmVwbGFjZXImJnR5cGVvZiByZXBsYWNlciE9PSJmdW5jdGlvbiImJih0eXBlb2YgcmVwbGFjZXIhPT0ib2JqZWN0Inx8dHlwZW9mIHJlcGxhY2VyLmxlbmd0aCE9PSJudW1iZXIiKSl7dGhyb3cgbmV3IEVycm9yKCIkLmpxcGxvdC5KU09OLnN0cmluZ2lmeSIpfXJldHVybiBzdHIoIiIseyIiOnZhbHVlfSl9fWlmKHR5cGVvZiAkLmpxcGxvdC5KU09OLnBhcnNlIT09ImZ1bmN0aW9uIil7JC5qcXBsb3QuSlNPTi5wYXJzZT1mdW5jdGlvbih0ZXh0LHJldml2ZXIpe3ZhciBqO2Z1bmN0aW9uIHdhbGsoaG9sZGVyLGtleSl7dmFyIGssdix2YWx1ZT1ob2xkZXJba2V5XTtpZih2YWx1ZSYmdHlwZW9mIHZhbHVlPT09Im9iamVjdCIpe2ZvcihrIGluIHZhbHVlKXtpZihPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSxrKSl7dj13YWxrKHZhbHVlLGspO2lmKHYhPT11bmRlZmluZWQpe3ZhbHVlW2tdPXZ9ZWxzZXtkZWxldGUgdmFsdWVba119fX19cmV0dXJuIHJldml2ZXIuY2FsbChob2xkZXIsa2V5LHZhbHVlKX10ZXh0PVN0cmluZyh0ZXh0KTtjeC5sYXN0SW5kZXg9MDtpZihjeC50ZXN0KHRleHQpKXt0ZXh0PXRleHQucmVwbGFjZShjeCxmdW5jdGlvbihhKXtyZXR1cm4iXFx1IisoIjAwMDAiK2EuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KX0pfWlmKC9eW1xdLDp7fVxzXSokLy50ZXN0KHRleHQucmVwbGFjZSgvXFwoPzpbIlxcXC9iZm5ydF18dVswLTlhLWZBLUZdezR9KS9nLCJAIikucmVwbGFjZSgvIlteIlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/L2csIl0iKS5yZXBsYWNlKC8oPzpefDp8LCkoPzpccypcWykrL2csIiIpKSl7aj1ldmFsKCIoIit0ZXh0KyIpIik7cmV0dXJuIHR5cGVvZiByZXZpdmVyPT09ImZ1bmN0aW9uIj93YWxrKHsiIjpqfSwiIik6an10aHJvdyBuZXcgU3ludGF4RXJyb3IoIiQuanFwbG90LkpTT04ucGFyc2UiKX19fSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.logAxisRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAqICBjbGFzczogJC5qcXBsb3QuTG9nQXhpc1JlbmRlcmVyCiAgICAqICBBIHBsdWdpbiBmb3IgYSBqcVBsb3QgdG8gcmVuZGVyIGEgbG9nYXJpdGhtaWMgYXhpcy4KICAgICogCiAgICAqICBUbyB1c2UgdGhpcyByZW5kZXJlciwgaW5jbHVkZSB0aGUgcGx1Z2luIGluIHlvdXIgc291cmNlCiAgICAqICA+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSJwbHVnaW5zL2pxcGxvdC5sb2dBeGlzUmVuZGVyZXIuanMiPjwvc2NyaXB0PgogICAgKiAgCiAgICAqICBhbmQgc3VwcGx5IHRoZSBhcHByb3ByaWF0ZSBvcHRpb25zIHRvIHlvdXIgcGxvdAogICAgKiAgCiAgICAqICA+IHtheGVzOnt4YXhpczp7cmVuZGVyZXI6JC5qcXBsb3QuTG9nQXhpc1JlbmRlcmVyfX19CiAgICAqKi8gCiAgICAkLmpxcGxvdC5Mb2dBeGlzUmVuZGVyZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAkLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIuY2FsbCh0aGlzKTsKICAgICAgICAvLyBwcm9wOiBheGlzRGVmYXVsdHMKICAgICAgICAvLyBEZWZhdWx0IHByb3BlcnRpZXMgd2hpY2ggd2lsbCBiZSBhcHBsaWVkIGRpcmVjdGx5IHRvIHRoZSBzZXJpZXMuCiAgICAgICAgLy8KICAgICAgICAvLyBHcm91cDogUHJvcGVydGllcwogICAgICAgIC8vCiAgICAgICAgLy8gUHJvcGVydGllcwogICAgICAgIC8vCiAgICAgICAgLy8gYmFzZSAtIHRoZSBsb2dhcml0aG1pYyBiYXNlLCBjb21tb25seSAyLCAxMCBvciBNYXRoLkUKICAgICAgICAvLyB0aWNrRGlzdHJpYnV0aW9uIC0gRGVwcmVjYXRlZC4gICJwb3dlciIgZGlzdHJpYnV0aW9uIG9mIHRpY2tzCiAgICAgICAgLy8gYWx3YXlzIHVzZWQuICBPcHRpb24gaGFzIG5vIGVmZmVjdC4KICAgICAgICB0aGlzLmF4aXNEZWZhdWx0cyA9IHsKICAgICAgICAgICAgYmFzZSA6IDEwLAogICAgICAgICAgICB0aWNrRGlzdHJpYnV0aW9uIDoncG93ZXInCiAgICAgICAgfTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkxvZ0F4aXNSZW5kZXJlci5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7CiAgICAkLmpxcGxvdC5Mb2dBeGlzUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuTG9nQXhpc1JlbmRlcmVyOwogICAgCiAgICAkLmpxcGxvdC5Mb2dBeGlzUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgLy8gcHJvcDogZHJhd0Jhc2VsaW5lCiAgICAgICAgLy8gVHJ1ZSB0byBkcmF3IHRoZSBheGlzIGJhc2VsaW5lLgogICAgICAgIHRoaXMuZHJhd0Jhc2VsaW5lID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBtaW5vclRpY2tzCiAgICAgICAgLy8gTnVtYmVyIG9mIHRpY2tzIHRvIGFkZCBiZXR3ZWVuICJtYWpvciIgdGlja3MuCiAgICAgICAgLy8gTWFqb3IgdGlja3MgYXJlIHRpY2tzIHN1cHBsaWVkIGJ5IHVzZXIgb3IgYXV0byBjb21wdXRlZC4KICAgICAgICAvLyBNaW5vciB0aWNrcyBjYW5ub3QgYmUgY3JlYXRlZCBieSB1c2VyLgogICAgICAgIHRoaXMubWlub3JUaWNrcyA9ICdhdXRvJzsKICAgICAgICB0aGlzLl9zY2FsZWZhY3QgPSAxLjA7CgogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwoKICAgICAgICB0aGlzLl9hdXRvRm9ybWF0U3RyaW5nID0gJyVkJzsKICAgICAgICB0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZyA9IGZhbHNlOwoKICAgICAgICBmb3IgKHZhciBkIGluIHRoaXMucmVuZGVyZXIuYXhpc0RlZmF1bHRzKSB7CiAgICAgICAgICAgIGlmICh0aGlzW2RdID09IG51bGwpIHsKICAgICAgICAgICAgICAgIHRoaXNbZF0gPSB0aGlzLnJlbmRlcmVyLmF4aXNEZWZhdWx0c1tkXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdGhpcy5yZXNldERhdGFCb3VuZHMoKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkxvZ0F4aXNSZW5kZXJlci5wcm90b3R5cGUuY3JlYXRlVGlja3MgPSBmdW5jdGlvbihwbG90KSB7CiAgICAgICAgLy8gd2UncmUgYXJlIG9wZXJhdGluZyBvbiBhbiBheGlzIGhlcmUKICAgICAgICB2YXIgdGlja3MgPSB0aGlzLl90aWNrczsKICAgICAgICB2YXIgdXNlclRpY2tzID0gdGhpcy50aWNrczsKICAgICAgICB2YXIgbmFtZSA9IHRoaXMubmFtZTsKICAgICAgICB2YXIgZGIgPSB0aGlzLl9kYXRhQm91bmRzOwogICAgICAgIHZhciBkaW0gPSAodGhpcy5uYW1lLmNoYXJBdCgwKSA9PT0gJ3gnKSA/IHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoIDogdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0OwogICAgICAgIHZhciBpbnRlcnZhbDsKICAgICAgICB2YXIgbWluLCBtYXg7CiAgICAgICAgdmFyIHBvczEsIHBvczI7CiAgICAgICAgdmFyIHR0LCBpOwoKICAgICAgICB2YXIgdGhyZXNob2xkID0gMzA7CiAgICAgICAgLy8gRm9yIHNvbWUgcmVhc29uIHNjYWxlZmFjdG9yIGlzIHNjcmV3aW5nIHVwIHRpY2tzLgogICAgICAgIHRoaXMuX3NjYWxlZmFjdCA9ICAoTWF0aC5tYXgoZGltLCB0aHJlc2hvbGQrMSkgLSB0aHJlc2hvbGQpLzMwMDsKCiAgICAgICAgLy8gaWYgd2UgYWxyZWFkeSBoYXZlIHRpY2tzLCB1c2UgdGhlbS4KICAgICAgICAvLyB0aWNrcyBtdXN0IGJlIGluIG9yZGVyIG9mIGluY3JlYXNpbmcgdmFsdWUuCiAgICAgICAgaWYgKHVzZXJUaWNrcy5sZW5ndGgpIHsKICAgICAgICAgICAgLy8gdGlja3MgY291bGQgYmUgMUQgb3IgMkQgYXJyYXkgb2YgW3ZhbCwgdmFsLCAsLCxdIG9yIFtbdmFsLCBsYWJlbF0sIFt2YWwsIGxhYmVsXSwgLi4uXSBvciBtaXhlZAogICAgICAgICAgICBmb3IgKGk9MDsgaTx1c2VyVGlja3MubGVuZ3RoOyBpKyspewogICAgICAgICAgICAgICAgdmFyIHV0ID0gdXNlclRpY2tzW2ldOwogICAgICAgICAgICAgICAgdmFyIHQgPSBuZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7CiAgICAgICAgICAgICAgICBpZiAodXQuY29uc3RydWN0b3IgPT0gQXJyYXkpIHsKICAgICAgICAgICAgICAgICAgICB0LnZhbHVlID0gdXRbMF07CiAgICAgICAgICAgICAgICAgICAgdC5sYWJlbCA9IHV0WzFdOwogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaG93VGlja3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghdGhpcy5zaG93VGlja01hcmtzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdC5zZXRUaWNrKHV0WzBdLCB0aGlzLm5hbWUpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzZSBpZiAoJC5pc1BsYWluT2JqZWN0KHV0KSkgewogICAgICAgICAgICAgICAgICAgICQuZXh0ZW5kKHRydWUsIHQsIHV0KTsKICAgICAgICAgICAgICAgICAgICB0LmF4aXMgPSB0aGlzLm5hbWU7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdC52YWx1ZSA9IHV0OwogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaG93VGlja3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghdGhpcy5zaG93VGlja01hcmtzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdC5zZXRUaWNrKHV0LCB0aGlzLm5hbWUpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IHVzZXJUaWNrcy5sZW5ndGg7CiAgICAgICAgICAgIHRoaXMubWluID0gdGhpcy5fdGlja3NbMF0udmFsdWU7CiAgICAgICAgICAgIHRoaXMubWF4ID0gdGhpcy5fdGlja3NbdGhpcy5udW1iZXJUaWNrcy0xXS52YWx1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gd2UgZG9uJ3QgaGF2ZSBhbnkgdGlja3MgeWV0LCBsZXQncyBtYWtlIHNvbWUhCiAgICAgICAgZWxzZSBpZiAodGhpcy5taW4gPT0gbnVsbCAmJiB0aGlzLm1heCA9PSBudWxsKSB7CiAgICAgICAgICAgIG1pbiA9IGRiLm1pbiAqICgyIC0gdGhpcy5wYWRNaW4pOwogICAgICAgICAgICBtYXggPSBkYi5tYXggKiB0aGlzLnBhZE1heDsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIGlmIG1pbiBhbmQgbWF4IGFyZSBzYW1lLCBzcGFjZSB0aGVtIG91dCBhIGJpdAogICAgICAgICAgICBpZiAobWluID09IG1heCkgewogICAgICAgICAgICAgICAgdmFyIGFkaiA9IDAuMDU7CiAgICAgICAgICAgICAgICBtaW4gPSBtaW4qKDEtYWRqKTsKICAgICAgICAgICAgICAgIG1heCA9IG1heCooMSthZGopOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBwZXJmb3JtIHNvbWUgY2hlY2tzCiAgICAgICAgICAgIGlmICh0aGlzLm1pbiAhPSBudWxsICYmIHRoaXMubWluIDw9IDApIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTG9nIGF4aXMgbWluaW11bSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMubWF4ICE9IG51bGwgJiYgdGhpcy5tYXggPD0gMCkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJMb2cgYXhpcyBtYXhpbXVtIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAiKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZmluZENlaWwgKHZhbCkgewogICAgICAgICAgICAgICAgdmFyIG9yZGVyID0gTWF0aC5wb3coMTAsIE1hdGguZmxvb3IoTWF0aC5sb2codmFsKS9NYXRoLkxOMTApKTsKICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwodmFsL29yZGVyKSAqIG9yZGVyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBmaW5kRmxvb3IodmFsKSB7CiAgICAgICAgICAgICAgICB2YXIgb3JkZXIgPSBNYXRoLnBvdygxMCwgTWF0aC5mbG9vcihNYXRoLmxvZyh2YWwpL01hdGguTE4xMCkpOwogICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodmFsL29yZGVyKSAqIG9yZGVyOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyB2YXIgcmFuZ2UgPSBtYXggLSBtaW47CiAgICAgICAgICAgIHZhciBybWluLCBybWF4OwoKICAgICAgICAgICAgLy8gZm9yIHBvd2VyIGRpc3RyaWJ1dGlvbiwgb3BlbiB1cCByYW5nZSB0byBnZXQgYSBuaWNlIHBvd2VyIG9mIGF4aXMucmVuZGVyZXIuYmFzZS4KICAgICAgICAgICAgLy8gcG93ZXIgZGlzdHJpYnV0aW9uIHdvbid0IHJlc3BlY3QgdGhlIHVzZXIncyBtaW4vbWF4IHNldHRpbmdzLgogICAgICAgICAgICBybWluID0gTWF0aC5wb3codGhpcy5iYXNlLCBNYXRoLmZsb29yKE1hdGgubG9nKG1pbikvTWF0aC5sb2codGhpcy5iYXNlKSkpOwogICAgICAgICAgICBybWF4ID0gTWF0aC5wb3codGhpcy5iYXNlLCBNYXRoLmNlaWwoTWF0aC5sb2cobWF4KS9NYXRoLmxvZyh0aGlzLmJhc2UpKSk7CgogICAgICAgICAgICAvLyAvLyBpZiBtaW4gYW5kIG1heCBhcmUgc2FtZSwgc3BhY2UgdGhlbSBvdXQgYSBiaXQKICAgICAgICAgICAgLy8gaWYgKHJtaW4gPT09IHJtYXgpIHsKICAgICAgICAgICAgLy8gICAgIHZhciBhZGogPSAwLjA1OwogICAgICAgICAgICAvLyAgICAgcm1pbiA9IHJtaW4qKDEtYWRqKTsKICAgICAgICAgICAgLy8gICAgIHJtYXggPSBybWF4KigxK2Fkaik7CiAgICAgICAgICAgIC8vIH0KCiAgICAgICAgICAgIC8vIEhhbmRsZSBjYXNlIHdoZXJlIGEgZGF0YSB2YWx1ZSB3YXMgemVybwogICAgICAgICAgICBpZiAocm1pbiA9PT0gMCkgewogICAgICAgICAgICAgIHJtaW4gPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgb3JkZXIgPSBNYXRoLnJvdW5kKE1hdGgubG9nKHJtaW4pL01hdGguTE4xMCk7CgogICAgICAgICAgICBpZiAodGhpcy50aWNrT3B0aW9ucyA9PSBudWxsIHx8ICF0aGlzLnRpY2tPcHRpb25zLmZvcm1hdFN0cmluZykgewogICAgICAgICAgICAgICAgdGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcgPSB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0aGlzLm1pbiA9IHJtaW47CiAgICAgICAgICAgIHRoaXMubWF4ID0gcm1heDsKICAgICAgICAgICAgdmFyIHJhbmdlID0gdGhpcy5tYXggLSB0aGlzLm1pbjsgICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtaW5vclRpY2tzID0gKHRoaXMubWlub3JUaWNrcyA9PT0gJ2F1dG8nKSA/IDAgOiB0aGlzLm1pbm9yVGlja3M7CiAgICAgICAgICAgIHZhciBudW1iZXJUaWNrczsKICAgICAgICAgICAgaWYgKHRoaXMubnVtYmVyVGlja3MgPT0gbnVsbCl7CiAgICAgICAgICAgICAgICBpZiAoZGltID4gMTQwKSB7CiAgICAgICAgICAgICAgICAgICAgbnVtYmVyVGlja3MgPSBNYXRoLnJvdW5kKE1hdGgubG9nKHRoaXMubWF4L3RoaXMubWluKS9NYXRoLmxvZyh0aGlzLmJhc2UpICsgMSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlclRpY2tzIDwgMikgewogICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJUaWNrcyA9IDI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChtaW5vclRpY2tzID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZW1wID0gZGltLyhudW1iZXJUaWNrcyAtIDEpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVtcCA8IDEwMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3JUaWNrcyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGVtcCA8IDE5MCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3JUaWNrcyA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGVtcCA8IDI1MCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3JUaWNrcyA9IDM7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGVtcCA8IDYwMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3JUaWNrcyA9IDQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5vclRpY2tzID0gOTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIG51bWJlclRpY2tzID0gMjsKICAgICAgICAgICAgICAgICAgICBpZiAobWlub3JUaWNrcyA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBtaW5vclRpY2tzID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbWlub3JUaWNrcyA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBudW1iZXJUaWNrcyA9IHRoaXMubnVtYmVyVGlja3M7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChvcmRlciA+PSAwICYmIG1pbm9yVGlja3MgIT09IDMpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmcgPSAnJWQnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIEFkanVzdCBmb3JtYXQgc3RyaW5nIGZvciBjYXNlIHdpdGggMyB0aWNrcyB3aGVyZSB3ZSdsbCBoYXZlIGxpa2UgMSwgMi41LCA1LCA3LjUsIDEwCiAgICAgICAgICAgIGVsc2UgaWYgKG9yZGVyIDw9IDAgJiYgbWlub3JUaWNrcyA9PT0gMykgewogICAgICAgICAgICAgICAgdmFyIHRlbXAgPSAtKG9yZGVyIC0gMSk7CiAgICAgICAgICAgICAgICB0aGlzLl9hdXRvRm9ybWF0U3RyaW5nID0gJyUuJysgTWF0aC5hYnMob3JkZXItMSkgKyAnZic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIEFkanVzdCBmb3JtYXQgc3RyaW5nIGZvciB2YWx1ZXMgbGVzcyB0aGFuIDEuCiAgICAgICAgICAgIGVsc2UgaWYgKG9yZGVyIDwgMCkgewogICAgICAgICAgICAgICAgdmFyIHRlbXAgPSAtb3JkZXI7CiAgICAgICAgICAgICAgICB0aGlzLl9hdXRvRm9ybWF0U3RyaW5nID0gJyUuJysgTWF0aC5hYnMob3JkZXIpICsgJ2YnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmcgPSAnJWQnOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgdG8sIHQsIHZhbCwgdHQxLCBzcHJlYWQsIGludGVydmFsOwogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8bnVtYmVyVGlja3M7IGkrKyl7CiAgICAgICAgICAgICAgICB0dCA9IE1hdGgucG93KHRoaXMuYmFzZSwgaSAtIG51bWJlclRpY2tzICsgMSkgKiB0aGlzLm1heDsKCiAgICAgICAgICAgICAgICB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwogICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmICh0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZykgewogICAgICAgICAgICAgICAgICAgIHQuZm9ybWF0U3RyaW5nID0gdGhpcy5fYXV0b0Zvcm1hdFN0cmluZzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dUaWNrcykgewogICAgICAgICAgICAgICAgICAgIHQuc2hvd0xhYmVsID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuc2hvd1RpY2tNYXJrcykgewogICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHQuc2V0VGljayh0dCwgdGhpcy5uYW1lKTsKICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CgogICAgICAgICAgICAgICAgaWYgKG1pbm9yVGlja3MgJiYgaTxudW1iZXJUaWNrcy0xKSB7CiAgICAgICAgICAgICAgICAgICAgdHQxID0gTWF0aC5wb3codGhpcy5iYXNlLCBpIC0gbnVtYmVyVGlja3MgKyAyKSAqIHRoaXMubWF4OwogICAgICAgICAgICAgICAgICAgIHNwcmVhZCA9IHR0MSAtIHR0OwogICAgICAgICAgICAgICAgICAgIGludGVydmFsID0gdHQxIC8gKG1pbm9yVGlja3MrMSk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj1taW5vclRpY2tzLTE7IGo+PTA7IGotLSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSB0dDEtaW50ZXJ2YWwqKGorMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBuZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcgJiYgdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyAhPSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5mb3JtYXRTdHJpbmcgPSB0aGlzLl9hdXRvRm9ybWF0U3RyaW5nOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaG93VGlja3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd0xhYmVsID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuc2hvd1RpY2tNYXJrcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2V0VGljayh2YWwsIHRoaXMubmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSAgICAgICAKICAgICAgICAgICAgfSAgICAgCiAgICAgICAgfQoKICAgICAgICAvLyBtaW4gYW5kIG1heCBhcmUgc2V0IGFzIHdvdWxkIGJlIHRoZSBjYXNlIHdpdGggem9vbWluZwogICAgICAgIGVsc2UgaWYgKHRoaXMubWluICE9IG51bGwgJiYgdGhpcy5tYXggIT0gbnVsbCkgewogICAgICAgICAgICB2YXIgb3B0cyA9ICQuZXh0ZW5kKHRydWUsIHt9LCB0aGlzLnRpY2tPcHRpb25zLCB7bmFtZTogdGhpcy5uYW1lLCB2YWx1ZTogbnVsbH0pOwogICAgICAgICAgICB2YXIgbnQsIHRpOwogICAgICAgICAgICAvLyBkb24ndCBoYXZlIGFuIGludGVydmFsIHlldCwgcGljayBvbmUgdGhhdCBnaXZlcyB0aGUgbW9zdAogICAgICAgICAgICAvLyAicm91bmQiIHRpY2tzIHdlIGNhbiBnZXQuCiAgICAgICAgICAgIGlmICh0aGlzLm51bWJlclRpY2tzID09IG51bGwgJiYgdGhpcy50aWNrSW50ZXJ2YWwgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgLy8gdmFyIHRocmVzaG9sZCA9IDMwOwogICAgICAgICAgICAgICAgdmFyIHRkaW0gPSBNYXRoLm1heChkaW0sIHRocmVzaG9sZCsxKTsKICAgICAgICAgICAgICAgIHZhciBudHRhcmdldCA9ICBNYXRoLmNlaWwoKHRkaW0tdGhyZXNob2xkKS8zNSArIDEpOwoKICAgICAgICAgICAgICAgIHZhciByZXQgPSAkLmpxcGxvdC5MaW5lYXJUaWNrR2VuZXJhdG9yLmJlc3RDb25zdHJhaW5lZEludGVydmFsKHRoaXMubWluLCB0aGlzLm1heCwgbnR0YXJnZXQpOwoKICAgICAgICAgICAgICAgIHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmcgPSByZXRbM107CiAgICAgICAgICAgICAgICBudCA9IHJldFsyXTsKICAgICAgICAgICAgICAgIHRpID0gcmV0WzRdOwoKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxudDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgb3B0cy52YWx1ZSA9IHRoaXMubWluICsgaSAqIHRpOwogICAgICAgICAgICAgICAgICAgIHQgPSBuZXcgdGhpcy50aWNrUmVuZGVyZXIob3B0cyk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nICYmIHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmcgIT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5mb3JtYXRTdHJpbmcgPSB0aGlzLl9hdXRvRm9ybWF0U3RyaW5nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2hvd1RpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd0xhYmVsID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuc2hvd1RpY2tNYXJrcykgewogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGZvciBsb29zZSB6b29tLCBudW1iZXIgdGlja3MgYW5kIGludGVydmFsIGFyZSBhbHNvIHNldC4KICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5udW1iZXJUaWNrcyAhPSBudWxsICYmIHRoaXMudGlja0ludGVydmFsICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIG50ID0gdGhpcy5udW1iZXJUaWNrczsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxudDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgb3B0cy52YWx1ZSA9IHRoaXMubWluICsgaSAqIHRoaXMudGlja0ludGVydmFsOwogICAgICAgICAgICAgICAgICAgIHQgPSBuZXcgdGhpcy50aWNrUmVuZGVyZXIob3B0cyk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nICYmIHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmcgIT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5mb3JtYXRTdHJpbmcgPSB0aGlzLl9hdXRvRm9ybWF0U3RyaW5nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2hvd1RpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd0xhYmVsID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuc2hvd1RpY2tNYXJrcykgewogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5Mb2dBeGlzUmVuZGVyZXIucHJvdG90eXBlLnBhY2sgPSBmdW5jdGlvbihwb3MsIG9mZnNldHMpIHsKICAgICAgICB2YXIgbGIgPSBwYXJzZUludCh0aGlzLmJhc2UsIDEwKTsKICAgICAgICB2YXIgdGlja3MgPSB0aGlzLl90aWNrczsKICAgICAgICB2YXIgdHJhbnMgPSBmdW5jdGlvbiAodikgeyByZXR1cm4gTWF0aC5sb2codikvTWF0aC5sb2cobGIpOyB9OwogICAgICAgIHZhciBpbnZ0cmFucyA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBNYXRoLnBvdyhNYXRoLkUsIChNYXRoLmxvZyhsYikqdikpOyB9OwogICAgICAgIHZhciBtYXggPSB0cmFucyh0aGlzLm1heCk7CiAgICAgICAgdmFyIG1pbiA9IHRyYW5zKHRoaXMubWluKTsKICAgICAgICB2YXIgb2ZmbWF4ID0gb2Zmc2V0cy5tYXg7CiAgICAgICAgdmFyIG9mZm1pbiA9IG9mZnNldHMubWluOwogICAgICAgIHZhciBsc2hvdyA9ICh0aGlzLl9sYWJlbCA9PSBudWxsKSA/IGZhbHNlIDogdGhpcy5fbGFiZWwuc2hvdzsKICAgICAgICAKICAgICAgICBmb3IgKHZhciBwIGluIHBvcykgewogICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyhwLCBwb3NbcF0pOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB0aGlzLl9vZmZzZXRzID0gb2Zmc2V0czsKICAgICAgICAvLyBwaXhlbGxlbmd0aCB3aWxsIGJlICsgZm9yIHggYXhlcyBhbmQgLSBmb3IgeSBheGVzIGJlY2FzdWUgcGl4ZWxzIGFsd2F5cyBtZWFzdXJlZCBmcm9tIHRvcCBsZWZ0LgogICAgICAgIHZhciBwaXhlbGxlbmd0aCA9IG9mZm1heCAtIG9mZm1pbjsKICAgICAgICB2YXIgdW5pdGxlbmd0aCA9IG1heCAtIG1pbjsKICAgICAgICAKICAgICAgICAvLyBwb2ludCB0byB1bml0IGFuZCB1bml0IHRvIHBvaW50IGNvbnZlcnNpb25zIHJlZmVyZW5jZXMgdG8gUGxvdCBET00gZWxlbWVudCB0b3AgbGVmdCBjb3JuZXIuCiAgICAgICAgdGhpcy5wMnUgPSBmdW5jdGlvbihwKXsKICAgICAgICAgICAgcmV0dXJuIGludnRyYW5zKChwIC0gb2ZmbWluKSAqIHVuaXRsZW5ndGggLyBwaXhlbGxlbmd0aCArIG1pbik7CiAgICAgICAgfTsKICAgICAgICAKICAgICAgICB0aGlzLnUycCA9IGZ1bmN0aW9uKHUpewogICAgICAgICAgICByZXR1cm4gKHRyYW5zKHUpIC0gbWluKSAqIHBpeGVsbGVuZ3RoIC8gdW5pdGxlbmd0aCArIG9mZm1pbjsKICAgICAgICB9OwogICAgICAgIAogICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpewogICAgICAgICAgICB0aGlzLnNlcmllc191MnAgPSBmdW5jdGlvbih1KXsKICAgICAgICAgICAgICAgIHJldHVybiAodHJhbnModSkgLSBtaW4pICogcGl4ZWxsZW5ndGggLyB1bml0bGVuZ3RoOwogICAgICAgICAgICB9OwogICAgICAgICAgICB0aGlzLnNlcmllc19wMnUgPSBmdW5jdGlvbihwKXsKICAgICAgICAgICAgICAgIHJldHVybiBpbnZ0cmFucyhwICogdW5pdGxlbmd0aCAvIHBpeGVsbGVuZ3RoICsgbWluKTsKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgLy8geWF4aXMgaXMgbWF4IGF0IHRvcCBvZiBjYW52YXMuCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHRoaXMuc2VyaWVzX3UycCA9IGZ1bmN0aW9uKHUpewogICAgICAgICAgICAgICAgcmV0dXJuICh0cmFucyh1KSAtIG1heCkgKiBwaXhlbGxlbmd0aCAvIHVuaXRsZW5ndGg7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHRoaXMuc2VyaWVzX3AydSA9IGZ1bmN0aW9uKHApewogICAgICAgICAgICAgICAgcmV0dXJuIGludnRyYW5zKHAgKiB1bml0bGVuZ3RoIC8gcGl4ZWxsZW5ndGggKyBtYXgpOwogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGlja3NbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvdyAmJiB0LnNob3dMYWJlbCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2hpbTsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmNvbnN0cnVjdG9yID09ICQuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIgJiYgdC5hbmdsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LmxhYmVsUG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhdXRvJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9zaXRpb24gYXQgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmFuZ2xlIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldFdpZHRoKCkgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5zaW4oLXQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvc2l0aW9uIGF0IHN0YXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5zaW4odC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZW5kJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldFdpZHRoKCkgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5zaW4oLXQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdGFydCc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKHQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtaWRkbGUnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0V2lkdGgoKS8yICsgdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKC10Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldFdpZHRoKCkvMiArIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbigtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldFdpZHRoKCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAvLyB2YXIgc2hpbSA9IHQuZ2V0V2lkdGgoKS8yOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsID0gdGhpcy51MnAodC52YWx1ZSkgKyBzaGltICsgJ3B4JzsKICAgICAgICAgICAgICAgICAgICAgICAgdC5fZWxlbS5jc3MoJ2xlZnQnLCB2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICB0LnBhY2soKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobHNob3cpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IHRoaXMuX2xhYmVsLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCdsZWZ0Jywgb2ZmbWluICsgcGl4ZWxsZW5ndGgvMiAtIHcvMiArICdweCcpOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJykgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5fZWxlbS5jc3MoJ2JvdHRvbScsICcwcHgnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygndG9wJywgJzBweCcpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5wYWNrKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGlja3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRpY2tzW2ldOwogICAgICAgICAgICAgICAgICAgIGlmICh0LnNob3cgJiYgdC5zaG93TGFiZWwpIHsgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNoaW07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmNvbnN0cnVjdG9yID09ICQuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIgJiYgdC5hbmdsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LmxhYmVsUG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhdXRvJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9zaXRpb24gYXQgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZW5kJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuYW5nbGUgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLmNvcygtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5jb3ModC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3RhcnQnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5hbmdsZSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguY29zKC10Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5nZXRIZWlnaHQoKSArIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLmNvcyh0Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtaWRkbGUnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAodC5hbmdsZSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHNoaW0gPSAtdC5nZXRIZWlnaHQoKS8yICsgdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKC10Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHNoaW0gPSAtdC5nZXRIZWlnaHQoKS8yIC0gdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKHQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5nZXRIZWlnaHQoKS8yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IHRoaXMudTJwKHQudmFsdWUpICsgc2hpbSArICdweCc7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuX2VsZW0uY3NzKCd0b3AnLCB2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICB0LnBhY2soKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobHNob3cpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IHRoaXMuX2xhYmVsLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygndG9wJywgb2ZmbWF4IC0gcGl4ZWxsZW5ndGgvMiAtIGgvMiArICdweCcpOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3lheGlzJykgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5fZWxlbS5jc3MoJ2xlZnQnLCAnMHB4Jyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5fZWxlbS5jc3MoJ3JpZ2h0JywgJzBweCcpOwogICAgICAgICAgICAgICAgICAgIH0gICAKICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5wYWNrKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9ICAgICAgICAKICAgIH07Cn0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.logAxisRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGEpe2EuanFwbG90LkxvZ0F4aXNSZW5kZXJlcj1mdW5jdGlvbigpe2EuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpO3RoaXMuYXhpc0RlZmF1bHRzPXtiYXNlOjEwLHRpY2tEaXN0cmlidXRpb246InBvd2VyIn19O2EuanFwbG90LkxvZ0F4aXNSZW5kZXJlci5wcm90b3R5cGU9bmV3IGEuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlcigpO2EuanFwbG90LkxvZ0F4aXNSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9YS5qcXBsb3QuTG9nQXhpc1JlbmRlcmVyO2EuanFwbG90LkxvZ0F4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihiKXt0aGlzLmRyYXdCYXNlbGluZT10cnVlO3RoaXMubWlub3JUaWNrcz0iYXV0byI7dGhpcy5fc2NhbGVmYWN0PTE7YS5leHRlbmQodHJ1ZSx0aGlzLGIpO3RoaXMuX2F1dG9Gb3JtYXRTdHJpbmc9IiVkIjt0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZz1mYWxzZTtmb3IodmFyIGMgaW4gdGhpcy5yZW5kZXJlci5heGlzRGVmYXVsdHMpe2lmKHRoaXNbY109PW51bGwpe3RoaXNbY109dGhpcy5yZW5kZXJlci5heGlzRGVmYXVsdHNbY119fXRoaXMucmVzZXREYXRhQm91bmRzKCl9O2EuanFwbG90LkxvZ0F4aXNSZW5kZXJlci5wcm90b3R5cGUuY3JlYXRlVGlja3M9ZnVuY3Rpb24oZCl7dmFyIEc9dGhpcy5fdGlja3M7dmFyIHc9dGhpcy50aWNrczt2YXIgcz10aGlzLm5hbWU7dmFyIHU9dGhpcy5fZGF0YUJvdW5kczt2YXIgYj0odGhpcy5uYW1lLmNoYXJBdCgwKT09PSJ4Iik/dGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGg6dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0O3ZhciBrO3ZhciBOLHY7dmFyIG0sbDt2YXIgTSxLO3ZhciBnPTMwO3RoaXMuX3NjYWxlZmFjdD0oTWF0aC5tYXgoYixnKzEpLWcpLzMwMDtpZih3Lmxlbmd0aCl7Zm9yKEs9MDtLPHcubGVuZ3RoO0srKyl7dmFyIEE9d1tLXTt2YXIgSD1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7aWYoQS5jb25zdHJ1Y3Rvcj09QXJyYXkpe0gudmFsdWU9QVswXTtILmxhYmVsPUFbMV07aWYoIXRoaXMuc2hvd1RpY2tzKXtILnNob3dMYWJlbD1mYWxzZTtILnNob3dNYXJrPWZhbHNlfWVsc2V7aWYoIXRoaXMuc2hvd1RpY2tNYXJrcyl7SC5zaG93TWFyaz1mYWxzZX19SC5zZXRUaWNrKEFbMF0sdGhpcy5uYW1lKTt0aGlzLl90aWNrcy5wdXNoKEgpfWVsc2V7aWYoYS5pc1BsYWluT2JqZWN0KEEpKXthLmV4dGVuZCh0cnVlLEgsQSk7SC5heGlzPXRoaXMubmFtZTt0aGlzLl90aWNrcy5wdXNoKEgpfWVsc2V7SC52YWx1ZT1BO2lmKCF0aGlzLnNob3dUaWNrcyl7SC5zaG93TGFiZWw9ZmFsc2U7SC5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe0guc2hvd01hcms9ZmFsc2V9fUguc2V0VGljayhBLHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChIKX19fXRoaXMubnVtYmVyVGlja3M9dy5sZW5ndGg7dGhpcy5taW49dGhpcy5fdGlja3NbMF0udmFsdWU7dGhpcy5tYXg9dGhpcy5fdGlja3NbdGhpcy5udW1iZXJUaWNrcy0xXS52YWx1ZX1lbHNle2lmKHRoaXMubWluPT1udWxsJiZ0aGlzLm1heD09bnVsbCl7Tj11Lm1pbiooMi10aGlzLnBhZE1pbik7dj11Lm1heCp0aGlzLnBhZE1heDtpZihOPT12KXt2YXIgYz0wLjA1O049TiooMS1jKTt2PXYqKDErYyl9aWYodGhpcy5taW4hPW51bGwmJnRoaXMubWluPD0wKXt0aHJvdyBuZXcgRXJyb3IoIkxvZyBheGlzIG1pbmltdW0gbXVzdCBiZSBncmVhdGVyIHRoYW4gMCIpfWlmKHRoaXMubWF4IT1udWxsJiZ0aGlzLm1heDw9MCl7dGhyb3cgbmV3IEVycm9yKCJMb2cgYXhpcyBtYXhpbXVtIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAiKX1mdW5jdGlvbiBmKGope3ZhciBpPU1hdGgucG93KDEwLE1hdGguZmxvb3IoTWF0aC5sb2coaikvTWF0aC5MTjEwKSk7cmV0dXJuIE1hdGguY2VpbChqL2kpKml9ZnVuY3Rpb24geChqKXt2YXIgaT1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKGopL01hdGguTE4xMCkpO3JldHVybiBNYXRoLmZsb29yKGovaSkqaX12YXIgRixyO0Y9TWF0aC5wb3codGhpcy5iYXNlLE1hdGguZmxvb3IoTWF0aC5sb2coTikvTWF0aC5sb2codGhpcy5iYXNlKSkpO3I9TWF0aC5wb3codGhpcy5iYXNlLE1hdGguY2VpbChNYXRoLmxvZyh2KS9NYXRoLmxvZyh0aGlzLmJhc2UpKSk7aWYoRj09PTApe0Y9MX12YXIgRT1NYXRoLnJvdW5kKE1hdGgubG9nKEYpL01hdGguTE4xMCk7aWYodGhpcy50aWNrT3B0aW9ucz09bnVsbHx8IXRoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nKXt0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZz10cnVlfXRoaXMubWluPUY7dGhpcy5tYXg9cjt2YXIgcT10aGlzLm1heC10aGlzLm1pbjt2YXIgQz0odGhpcy5taW5vclRpY2tzPT09ImF1dG8iKT8wOnRoaXMubWlub3JUaWNrczt2YXIgaDtpZih0aGlzLm51bWJlclRpY2tzPT1udWxsKXtpZihiPjE0MCl7aD1NYXRoLnJvdW5kKE1hdGgubG9nKHRoaXMubWF4L3RoaXMubWluKS9NYXRoLmxvZyh0aGlzLmJhc2UpKzEpO2lmKGg8Mil7aD0yfWlmKEM9PT0wKXt2YXIgbz1iLyhoLTEpO2lmKG88MTAwKXtDPTB9ZWxzZXtpZihvPDE5MCl7Qz0xfWVsc2V7aWYobzwyNTApe0M9M31lbHNle2lmKG88NjAwKXtDPTR9ZWxzZXtDPTl9fX19fX1lbHNle2g9MjtpZihDPT09MCl7Qz0xfUM9MH19ZWxzZXtoPXRoaXMubnVtYmVyVGlja3N9aWYoRT49MCYmQyE9PTMpe3RoaXMuX2F1dG9Gb3JtYXRTdHJpbmc9IiVkIn1lbHNle2lmKEU8PTAmJkM9PT0zKXt2YXIgbz0tKEUtMSk7dGhpcy5fYXV0b0Zvcm1hdFN0cmluZz0iJS4iK01hdGguYWJzKEUtMSkrImYifWVsc2V7aWYoRTwwKXt2YXIgbz0tRTt0aGlzLl9hdXRvRm9ybWF0U3RyaW5nPSIlLiIrTWF0aC5hYnMoRSkrImYifWVsc2V7dGhpcy5fYXV0b0Zvcm1hdFN0cmluZz0iJWQifX19dmFyIE8sSCx6LHAsbixrO2Zvcih2YXIgSz0wO0s8aDtLKyspe009TWF0aC5wb3codGhpcy5iYXNlLEstaCsxKSp0aGlzLm1heDtIPW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTtpZih0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZyl7SC5mb3JtYXRTdHJpbmc9dGhpcy5fYXV0b0Zvcm1hdFN0cmluZ31pZighdGhpcy5zaG93VGlja3Mpe0guc2hvd0xhYmVsPWZhbHNlO0guc2hvd01hcms9ZmFsc2V9ZWxzZXtpZighdGhpcy5zaG93VGlja01hcmtzKXtILnNob3dNYXJrPWZhbHNlfX1ILnNldFRpY2soTSx0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goSCk7aWYoQyYmSzxoLTEpe3A9TWF0aC5wb3codGhpcy5iYXNlLEstaCsyKSp0aGlzLm1heDtuPXAtTTtrPXAvKEMrMSk7Zm9yKHZhciBKPUMtMTtKPj0wO0otLSl7ej1wLWsqKEorMSk7SD1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7aWYodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcmJnRoaXMuX2F1dG9Gb3JtYXRTdHJpbmchPSIiKXtILmZvcm1hdFN0cmluZz10aGlzLl9hdXRvRm9ybWF0U3RyaW5nfWlmKCF0aGlzLnNob3dUaWNrcyl7SC5zaG93TGFiZWw9ZmFsc2U7SC5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe0guc2hvd01hcms9ZmFsc2V9fUguc2V0VGljayh6LHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChIKX19fX1lbHNle2lmKHRoaXMubWluIT1udWxsJiZ0aGlzLm1heCE9bnVsbCl7dmFyIHk9YS5leHRlbmQodHJ1ZSx7fSx0aGlzLnRpY2tPcHRpb25zLHtuYW1lOnRoaXMubmFtZSx2YWx1ZTpudWxsfSk7dmFyIEksZTtpZih0aGlzLm51bWJlclRpY2tzPT1udWxsJiZ0aGlzLnRpY2tJbnRlcnZhbD09bnVsbCl7dmFyIEQ9TWF0aC5tYXgoYixnKzEpO3ZhciBMPU1hdGguY2VpbCgoRC1nKS8zNSsxKTt2YXIgQj1hLmpxcGxvdC5MaW5lYXJUaWNrR2VuZXJhdG9yLmJlc3RDb25zdHJhaW5lZEludGVydmFsKHRoaXMubWluLHRoaXMubWF4LEwpO3RoaXMuX2F1dG9Gb3JtYXRTdHJpbmc9QlszXTtJPUJbMl07ZT1CWzRdO2Zvcih2YXIgSz0wO0s8STtLKyspe3kudmFsdWU9dGhpcy5taW4rSyplO0g9bmV3IHRoaXMudGlja1JlbmRlcmVyKHkpO2lmKHRoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nJiZ0aGlzLl9hdXRvRm9ybWF0U3RyaW5nIT0iIil7SC5mb3JtYXRTdHJpbmc9dGhpcy5fYXV0b0Zvcm1hdFN0cmluZ31pZighdGhpcy5zaG93VGlja3Mpe0guc2hvd0xhYmVsPWZhbHNlO0guc2hvd01hcms9ZmFsc2V9ZWxzZXtpZighdGhpcy5zaG93VGlja01hcmtzKXtILnNob3dNYXJrPWZhbHNlfX10aGlzLl90aWNrcy5wdXNoKEgpfX1lbHNle2lmKHRoaXMubnVtYmVyVGlja3MhPW51bGwmJnRoaXMudGlja0ludGVydmFsIT1udWxsKXtJPXRoaXMubnVtYmVyVGlja3M7Zm9yKHZhciBLPTA7SzxJO0srKyl7eS52YWx1ZT10aGlzLm1pbitLKnRoaXMudGlja0ludGVydmFsO0g9bmV3IHRoaXMudGlja1JlbmRlcmVyKHkpO2lmKHRoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nJiZ0aGlzLl9hdXRvRm9ybWF0U3RyaW5nIT0iIil7SC5mb3JtYXRTdHJpbmc9dGhpcy5fYXV0b0Zvcm1hdFN0cmluZ31pZighdGhpcy5zaG93VGlja3Mpe0guc2hvd0xhYmVsPWZhbHNlO0guc2hvd01hcms9ZmFsc2V9ZWxzZXtpZighdGhpcy5zaG93VGlja01hcmtzKXtILnNob3dNYXJrPWZhbHNlfX10aGlzLl90aWNrcy5wdXNoKEgpfX19fX19fTthLmpxcGxvdC5Mb2dBeGlzUmVuZGVyZXIucHJvdG90eXBlLnBhY2s9ZnVuY3Rpb24oZixlKXt2YXIgcj1wYXJzZUludCh0aGlzLmJhc2UsMTApO3ZhciB5PXRoaXMuX3RpY2tzO3ZhciBkPWZ1bmN0aW9uKGgpe3JldHVybiBNYXRoLmxvZyhoKS9NYXRoLmxvZyhyKX07dmFyIGI9ZnVuY3Rpb24oaCl7cmV0dXJuIE1hdGgucG93KE1hdGguRSwoTWF0aC5sb2cocikqaCkpfTt2YXIgdT1kKHRoaXMubWF4KTt2YXIgcz1kKHRoaXMubWluKTt2YXIgbT1lLm1heDt2YXIgaz1lLm1pbjt2YXIgbz0odGhpcy5fbGFiZWw9PW51bGwpP2ZhbHNlOnRoaXMuX2xhYmVsLnNob3c7Zm9yKHZhciBxIGluIGYpe3RoaXMuX2VsZW0uY3NzKHEsZltxXSl9dGhpcy5fb2Zmc2V0cz1lO3ZhciBnPW0tazt2YXIgaj11LXM7dGhpcy5wMnU9ZnVuY3Rpb24oaCl7cmV0dXJuIGIoKGgtaykqai9nK3MpfTt0aGlzLnUycD1mdW5jdGlvbihoKXtyZXR1cm4oZChoKS1zKSpnL2ora307aWYodGhpcy5uYW1lPT0ieGF4aXMifHx0aGlzLm5hbWU9PSJ4MmF4aXMiKXt0aGlzLnNlcmllc191MnA9ZnVuY3Rpb24oaCl7cmV0dXJuKGQoaCktcykqZy9qfTt0aGlzLnNlcmllc19wMnU9ZnVuY3Rpb24oaCl7cmV0dXJuIGIoaCpqL2crcyl9fWVsc2V7dGhpcy5zZXJpZXNfdTJwPWZ1bmN0aW9uKGgpe3JldHVybihkKGgpLXUpKmcvan07dGhpcy5zZXJpZXNfcDJ1PWZ1bmN0aW9uKGgpe3JldHVybiBiKGgqai9nK3UpfX1pZih0aGlzLnNob3cpe2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7Zm9yKHZhciB2PTA7djx5Lmxlbmd0aDt2Kyspe3ZhciBuPXlbdl07aWYobi5zaG93JiZuLnNob3dMYWJlbCl7dmFyIGM7aWYobi5jb25zdHJ1Y3Rvcj09YS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciYmbi5hbmdsZSl7c3dpdGNoKG4ubGFiZWxQb3NpdGlvbil7Y2FzZSJhdXRvIjppZihuLmFuZ2xlPDApe2M9LW4uZ2V0V2lkdGgoKStuLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKC1uLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9ZWxzZXtjPS1uLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKG4uX3RleHRSZW5kZXJlci5hbmdsZSkvMn1icmVhaztjYXNlImVuZCI6Yz0tbi5nZXRXaWR0aCgpK24uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4oLW4uX3RleHRSZW5kZXJlci5hbmdsZSkvMjticmVhaztjYXNlInN0YXJ0IjpjPS1uLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKG4uX3RleHRSZW5kZXJlci5hbmdsZSkvMjticmVhaztjYXNlIm1pZGRsZSI6Yz0tbi5nZXRXaWR0aCgpLzIrbi5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbigtbi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yO2JyZWFrO2RlZmF1bHQ6Yz0tbi5nZXRXaWR0aCgpLzIrbi5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbigtbi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yO2JyZWFrfX1lbHNle2M9LW4uZ2V0V2lkdGgoKS8yfXZhciB6PXRoaXMudTJwKG4udmFsdWUpK2MrInB4IjtuLl9lbGVtLmNzcygibGVmdCIseik7bi5wYWNrKCl9fWlmKG8pe3ZhciBsPXRoaXMuX2xhYmVsLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSk7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJsZWZ0IixrK2cvMi1sLzIrInB4Iik7aWYodGhpcy5uYW1lPT0ieGF4aXMiKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoImJvdHRvbSIsIjBweCIpfWVsc2V7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJ0b3AiLCIwcHgiKX10aGlzLl9sYWJlbC5wYWNrKCl9fWVsc2V7Zm9yKHZhciB2PTA7djx5Lmxlbmd0aDt2Kyspe3ZhciBuPXlbdl07aWYobi5zaG93JiZuLnNob3dMYWJlbCl7dmFyIGM7aWYobi5jb25zdHJ1Y3Rvcj09YS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciYmbi5hbmdsZSl7c3dpdGNoKG4ubGFiZWxQb3NpdGlvbil7Y2FzZSJhdXRvIjpjYXNlImVuZCI6aWYobi5hbmdsZTwwKXtjPS1uLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguY29zKC1uLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9ZWxzZXtjPS1uLmdldEhlaWdodCgpK24uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5jb3Mobi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWJyZWFrO2Nhc2Uic3RhcnQiOmlmKG4uYW5nbGU+MCl7Yz0tbi5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLmNvcygtbi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWVsc2V7Yz0tbi5nZXRIZWlnaHQoKStuLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguY29zKG4uX3RleHRSZW5kZXJlci5hbmdsZSkvMn1icmVhaztjYXNlIm1pZGRsZSI6Yz0tbi5nZXRIZWlnaHQoKS8yO2JyZWFrO2RlZmF1bHQ6Yz0tbi5nZXRIZWlnaHQoKS8yO2JyZWFrfX1lbHNle2M9LW4uZ2V0SGVpZ2h0KCkvMn12YXIgej10aGlzLnUycChuLnZhbHVlKStjKyJweCI7bi5fZWxlbS5jc3MoInRvcCIseik7bi5wYWNrKCl9fWlmKG8pe3ZhciB4PXRoaXMuX2xhYmVsLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpO3RoaXMuX2xhYmVsLl9lbGVtLmNzcygidG9wIixtLWcvMi14LzIrInB4Iik7aWYodGhpcy5uYW1lPT0ieWF4aXMiKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoImxlZnQiLCIwcHgiKX1lbHNle3RoaXMuX2xhYmVsLl9lbGVtLmNzcygicmlnaHQiLCIwcHgiKX10aGlzLl9sYWJlbC5wYWNrKCl9fX19fSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.mekkoAxisRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLy8gY2xhc3M6ICQuanFwbG90Lk1la2tvQXhpc1JlbmRlcmVyCiAgICAvLyBBbiBheGlzIHJlbmRlcmVyIGZvciBhIE1la2tvIGNoYXJ0LgogICAgLy8gU2hvdWxkIGJlIHVzZWQgd2l0aCBhIE1la2tvIGNoYXJ0IHdoZXJlIHRoZSBtZWtrb1JlbmRlcmVyIGlzIHVzZWQgb24gdGhlIHNlcmllcy4KICAgIC8vIERpc3BsYXlzIHRoZSBZIGF4aXMgYXMgYSByYW5nZSBmcm9tIDAgdG8gMSAoMCB0byAxMDAlKSBhbmQgdGhlIHggYXhpcyB3aXRoIGEgdGljawogICAgLy8gZm9yIGVhY2ggc2VyaWVzIHNjYWxlZCB0byB0aGUgc3VtIG9mIGFsbCB0aGUgeSB2YWx1ZXMuCiAgICAkLmpxcGxvdC5NZWtrb0F4aXNSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYXhpcyBvYmplY3QuCiAgICAkLmpxcGxvdC5NZWtrb0F4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpewogICAgICAgIC8vIHByb3A6IHRpY2tNb2RlCiAgICAgICAgLy8gSG93IHRvIHNwYWNlIHRoZSB0aWNrcyBvbiB0aGUgYXhpcy4KICAgICAgICAvLyAnYmFyJyB3aWxsIHBsYWNlIGEgdGljayBhdCB0aGUgd2lkdGggb2YgZWFjaCBiYXIuICAKICAgICAgICAvLyBUaGlzIGlzIHRoZSBkZWZhdWx0IGZvciB0aGUgeCBheGlzLgogICAgICAgIC8vICdldmVuJyB3aWxsIHBsYWNlIHRpY2tzIGF0IGV2ZW4gaW50ZXJ2YWxzLiAgVGhpcyBpcwogICAgICAgIC8vIHRoZSBkZWZhdWx0IGZvciB4MiBheGlzIGFuZCB5IGF4aXMuICB5IGF4aXMgY2Fubm90IGJlIGNoYW5nZWQuCiAgICAgICAgdGhpcy50aWNrTW9kZTsKICAgICAgICAvLyBwcm9wOiBiYXJMYWJlbFJlbmRlcmVyCiAgICAgICAgLy8gcmVuZGVyZXIgdG8gdXNlIHRvIGRyYXcgbGFiZWxzIHVuZGVyIGVhY2ggYmFyLgogICAgICAgIHRoaXMuYmFyTGFiZWxSZW5kZXJlciA9ICQuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyOwogICAgICAgIC8vIHByb3A6IGJhckxhYmVscwogICAgICAgIC8vIGFycmF5IG9mIGxhYmVscyB0byBwdXQgdW5kZXIgZWFjaCBiYXIuCiAgICAgICAgdGhpcy5iYXJMYWJlbHMgPSB0aGlzLmJhckxhYmVscyB8fCBbXTsKICAgICAgICAvLyBwcm9wOiBiYXJMYWJlbE9wdGlvbnMKICAgICAgICAvLyBvcHRpb25zIG9iamVjdCB0byBwYXNzIHRvIHRoZSBiYXIgbGFiZWwgcmVuZGVyZXIuCiAgICAgICAgdGhpcy5iYXJMYWJlbE9wdGlvbnMgPSB7fTsKICAgICAgICB0aGlzLnRpY2tPcHRpb25zID0gJC5leHRlbmQodHJ1ZSwge3Nob3dHcmlkbGluZTpmYWxzZX0sIHRoaXMudGlja09wdGlvbnMpOwogICAgICAgIHRoaXMuX2JhckxhYmVscyA9IFtdOwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3lheGlzJykgewogICAgICAgICAgICB0aGlzLnRpY2tPcHRpb25zLmZvcm1hdFN0cmluZyA9IHRoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nIHx8ICIlZFwlIjsKICAgICAgICB9CiAgICAgICAgdmFyIGRiID0gdGhpcy5fZGF0YUJvdW5kczsKICAgICAgICBkYi5taW4gPSAwOwogICAgICAgIC8vIGZvciB5IGF4ZXMsIHNjYWxlIGFsd2F5cyBnbyBmcm9tIDAgdG8gMSAoMCB0byAxMDAlKQogICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3lheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3kyYXhpcycpIHsKICAgICAgICAgICAgZGIubWF4ID0gMTAwOwogICAgICAgICAgICB0aGlzLnRpY2tNb2RlID0gJ2V2ZW4nOwogICAgICAgIH0KICAgICAgICAvLyBGb3IgeCBheGVzLCBzY2FsZSBnb2VzIGZyb20gMCB0byBzdW0gb2YgYWxsIHkgdmFsdWVzLgogICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnKXsKICAgICAgICAgICAgdGhpcy50aWNrTW9kZSA9ICh0aGlzLnRpY2tNb2RlID09IG51bGwpID8gJ2JhcicgOiB0aGlzLnRpY2tNb2RlOwogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5fc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBkYi5tYXggKz0gdGhpcy5fc2VyaWVzW2ldLl9zdW15OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PSAneDJheGlzJyl7CiAgICAgICAgICAgIHRoaXMudGlja01vZGUgPSAodGhpcy50aWNrTW9kZSA9PSBudWxsKSA/ICdldmVuJyA6IHRoaXMudGlja01vZGU7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGRiLm1heCArPSB0aGlzLl9zZXJpZXNbaV0uX3N1bXk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBheGlzCiAgICAkLmpxcGxvdC5NZWtrb0F4aXNSZW5kZXJlci5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGN0eCwgcGxvdCkgewogICAgICAgIGlmICh0aGlzLnNob3cpIHsKICAgICAgICAgICAgLy8gcG9wdWxhdGUgdGhlIGF4aXMgbGFiZWwgYW5kIHZhbHVlIHByb3BlcnRpZXMuCiAgICAgICAgICAgIC8vIGNyZWF0ZVRpY2tzIGlzIGEgbWV0aG9kIG9uIHRoZSByZW5kZXJlciwgYnV0CiAgICAgICAgICAgIC8vIGNhbGwgaXQgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgYXhpcy4KICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5jcmVhdGVUaWNrcy5jYWxsKHRoaXMpOwogICAgICAgICAgICAvLyBmaWxsIGEgZGl2IHdpdGggYXhlcyBsYWJlbHMgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbi4KICAgICAgICAgICAgLy8gTmVlZCB0byBwcmVnZW5lcmF0ZSBlYWNoIGF4aXMgdG8gZ2V0IGl0cyBib3VuZHMgYW5kCiAgICAgICAgICAgIC8vIHBvc2l0aW9uIGl0IGFuZCB0aGUgbGFiZWxzIGNvcnJlY3RseSBvbiB0aGUgcGxvdC4KICAgICAgICAgICAgdmFyIGRpbT0wOwogICAgICAgICAgICB2YXIgdGVtcDsKICAgICAgICAgICAgCiAgICAgICAgICAgIHZhciBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgIHRoaXMuX2VsZW0gPSAkKGVsZW0pOwogICAgICAgICAgICB0aGlzLl9lbGVtLmFkZENsYXNzKCdqcXBsb3QtYXhpcyBqcXBsb3QtJyt0aGlzLm5hbWUpOwogICAgICAgICAgICB0aGlzLl9lbGVtLmNzcygncG9zaXRpb24nLCAnYWJzb2x1dGUnKTsKICAgICAgICAgICAgZWxlbSA9IG51bGw7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAodGhpcy5uYW1lID09ICd4YXhpcycgfHwgdGhpcy5uYW1lID09ICd4MmF4aXMnKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLndpZHRoKHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uaGVpZ2h0KHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIGRyYXcgdGhlIGF4aXMgbGFiZWwKICAgICAgICAgICAgLy8gY3JlYXRlIGEgX2xhYmVsIG9iamVjdC4KICAgICAgICAgICAgdGhpcy5sYWJlbE9wdGlvbnMuYXhpcyA9IHRoaXMubmFtZTsKICAgICAgICAgICAgdGhpcy5fbGFiZWwgPSBuZXcgdGhpcy5sYWJlbFJlbmRlcmVyKHRoaXMubGFiZWxPcHRpb25zKTsKICAgICAgICAgICAgaWYgKHRoaXMuX2xhYmVsLnNob3cpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uYXBwZW5kKHRoaXMuX2xhYmVsLmRyYXcoY3R4KSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIHZhciB0LCB0aWNrLCBlbGVtOwogICAgICAgICAgICBpZiAodGhpcy5zaG93VGlja3MpIHsKICAgICAgICAgICAgICAgIHQgPSB0aGlzLl90aWNrczsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdGljayA9IHRbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHRpY2suc2hvd0xhYmVsICYmICghdGljay5pc01pbm9yVGljayB8fCB0aGlzLnNob3dNaW5vclRpY2tzKSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmFwcGVuZCh0aWNrLmRyYXcoY3R4KSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBkcmF3IHRoZSBzZXJpZXMgbGFiZWxzCiAgICAgICAgICAgIGZvciAoaT0wOyBpPHRoaXMuYmFyTGFiZWxzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB0aGlzLmJhckxhYmVsT3B0aW9ucy5heGlzID0gdGhpcy5uYW1lOwogICAgICAgICAgICAgICAgdGhpcy5iYXJMYWJlbE9wdGlvbnMubGFiZWwgPSB0aGlzLmJhckxhYmVsc1tpXTsKICAgICAgICAgICAgICAgIHRoaXMuX2JhckxhYmVscy5wdXNoKG5ldyB0aGlzLmJhckxhYmVsUmVuZGVyZXIodGhpcy5iYXJMYWJlbE9wdGlvbnMpKTsKICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpY2tNb2RlICE9ICdiYXInKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYmFyTGFiZWxzW2ldLnNob3cgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICh0aGlzLl9iYXJMYWJlbHNbaV0uc2hvdykgewogICAgICAgICAgICAgICAgICAgIHZhciBlbGVtID0gdGhpcy5fYmFyTGFiZWxzW2ldLmRyYXcoY3R4LCBwbG90KTsKICAgICAgICAgICAgICAgICAgICBlbGVtLnJlbW92ZUNsYXNzKCdqcXBsb3QtJyt0aGlzLm5hbWUrJy1sYWJlbCcpOwogICAgICAgICAgICAgICAgICAgIGVsZW0uYWRkQ2xhc3MoJ2pxcGxvdC0nK3RoaXMubmFtZSsnLXRpY2snKTsKICAgICAgICAgICAgICAgICAgICBlbGVtLmFkZENsYXNzKCdqcXBsb3QtbWVra28tYmFyTGFiZWwnKTsKICAgICAgICAgICAgICAgICAgICBlbGVtLmFwcGVuZFRvKHRoaXMuX2VsZW0pOwogICAgICAgICAgICAgICAgICAgIGVsZW0gPSBudWxsOwogICAgICAgICAgICAgICAgfSAgIAogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy5fZWxlbTsKICAgIH07CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIGFuIGF4aXMKICAgICQuanFwbG90Lk1la2tvQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMubWluID0gdGhpcy5fbWluOwogICAgICAgIHRoaXMubWF4ID0gdGhpcy5fbWF4OwogICAgICAgIHRoaXMudGlja0ludGVydmFsID0gdGhpcy5fdGlja0ludGVydmFsOwogICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSB0aGlzLl9udW1iZXJUaWNrczsKICAgICAgICAvLyB0aGlzLl90aWNrcyA9IHRoaXMuX190aWNrczsKICAgIH07CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIGF4aXMKICAgICQuanFwbG90Lk1la2tvQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbigpIHsgCiAgICAgICAgdmFyIGRpbSA9IDA7CiAgICAgICAgdmFyIHRlbXA7CiAgICAgICAgdmFyIHcgPSAwOwogICAgICAgIHZhciBoID0gMDsKICAgICAgICB2YXIgbHNob3cgPSAodGhpcy5fbGFiZWwgPT0gbnVsbCkgPyBmYWxzZSA6IHRoaXMuX2xhYmVsLnNob3c7CiAgICAgICAgaWYgKHRoaXMuc2hvdyAmJiB0aGlzLnNob3dUaWNrcykgewogICAgICAgICAgICB2YXIgdCA9IHRoaXMuX3RpY2tzOwogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgdmFyIHRpY2sgPSB0W2ldOwogICAgICAgICAgICAgICAgaWYgKHRpY2suc2hvd0xhYmVsICYmICghdGljay5pc01pbm9yVGljayB8fCB0aGlzLnNob3dNaW5vclRpY2tzKSkgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IHRpY2suX2VsZW0ub3V0ZXJIZWlnaHQodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gdGljay5fZWxlbS5vdXRlcldpZHRoKHRydWUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodGVtcCA+IGRpbSkgewogICAgICAgICAgICAgICAgICAgICAgICBkaW0gPSB0ZW1wOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGxzaG93KSB7CiAgICAgICAgICAgICAgICB3ID0gdGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTsKICAgICAgICAgICAgICAgIGggPSB0aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTsgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnKSB7CiAgICAgICAgICAgICAgICBkaW0gPSBkaW0gKyBoOwogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoeydoZWlnaHQnOmRpbSsncHgnLCBsZWZ0OicwcHgnLCBib3R0b206JzBweCd9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmICh0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgIGRpbSA9IGRpbSArIGg7CiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7J2hlaWdodCc6ZGltKydweCcsIGxlZnQ6JzBweCcsIHRvcDonMHB4J30pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PSAneWF4aXMnKSB7CiAgICAgICAgICAgICAgICBkaW0gPSBkaW0gKyB3OwogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moeyd3aWR0aCc6ZGltKydweCcsIGxlZnQ6JzBweCcsIHRvcDonMHB4J30pOwogICAgICAgICAgICAgICAgaWYgKGxzaG93ICYmIHRoaXMuX2xhYmVsLmNvbnN0cnVjdG9yID09ICQuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCd3aWR0aCcsIHcrJ3B4Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBkaW0gPSBkaW0gKyB3OwogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moeyd3aWR0aCc6ZGltKydweCcsIHJpZ2h0OicwcHgnLCB0b3A6JzBweCd9KTsKICAgICAgICAgICAgICAgIGlmIChsc2hvdyAmJiB0aGlzLl9sYWJlbC5jb25zdHJ1Y3RvciA9PSAkLmpxcGxvdC5BeGlzTGFiZWxSZW5kZXJlcikgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygnd2lkdGgnLCB3KydweCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSAgCiAgICB9OyAgICAKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYXhpcwogICAgJC5qcXBsb3QuTWVra29BeGlzUmVuZGVyZXIucHJvdG90eXBlLmNyZWF0ZVRpY2tzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gd2UncmUgYXJlIG9wZXJhdGluZyBvbiBhbiBheGlzIGhlcmUKICAgICAgICB2YXIgdGlja3MgPSB0aGlzLl90aWNrczsKICAgICAgICB2YXIgdXNlclRpY2tzID0gdGhpcy50aWNrczsKICAgICAgICB2YXIgbmFtZSA9IHRoaXMubmFtZTsKICAgICAgICAvLyBkYXRhYm91bmRzIHdlcmUgc2V0IG9uIGF4aXMgaW5pdGlhbGl6YXRpb24uCiAgICAgICAgdmFyIGRiID0gdGhpcy5fZGF0YUJvdW5kczsKICAgICAgICB2YXIgZGltLCBpbnRlcnZhbDsKICAgICAgICB2YXIgbWluLCBtYXg7CiAgICAgICAgdmFyIHBvczEsIHBvczI7CiAgICAgICAgdmFyIHQsIHR0LCBpLCBqOwogICAgICAgIAogICAgICAgIC8vIGlmIHdlIGFscmVhZHkgaGF2ZSB0aWNrcywgdXNlIHRoZW0uCiAgICAgICAgLy8gdGlja3MgbXVzdCBiZSBpbiBvcmRlciBvZiBpbmNyZWFzaW5nIHZhbHVlLgogICAgICAgIAogICAgICAgIGlmICh1c2VyVGlja3MubGVuZ3RoKSB7CiAgICAgICAgICAgIC8vIHRpY2tzIGNvdWxkIGJlIDFEIG9yIDJEIGFycmF5IG9mIFt2YWwsIHZhbCwgLCwsXSBvciBbW3ZhbCwgbGFiZWxdLCBbdmFsLCBsYWJlbF0sIC4uLl0gb3IgbWl4ZWQKICAgICAgICAgICAgZm9yIChpPTA7IGk8dXNlclRpY2tzLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgICAgIHZhciB1dCA9IHVzZXJUaWNrc1tpXTsKICAgICAgICAgICAgICAgIHZhciB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwogICAgICAgICAgICAgICAgaWYgKHV0LmNvbnN0cnVjdG9yID09IEFycmF5KSB7CiAgICAgICAgICAgICAgICAgICAgdC52YWx1ZSA9IHV0WzBdOwogICAgICAgICAgICAgICAgICAgIHQubGFiZWwgPSB1dFsxXTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2hvd1RpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd0xhYmVsID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuc2hvd1RpY2tNYXJrcykgewogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHQuc2V0VGljayh1dFswXSwgdGhpcy5uYW1lKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90aWNrcy5wdXNoKHQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0LnZhbHVlID0gdXQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dUaWNrcykgewogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dMYWJlbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLnNob3dUaWNrTWFya3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0LnNldFRpY2sodXQsIHRoaXMubmFtZSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gdXNlclRpY2tzLmxlbmd0aDsKICAgICAgICAgICAgdGhpcy5taW4gPSB0aGlzLl90aWNrc1swXS52YWx1ZTsKICAgICAgICAgICAgdGhpcy5tYXggPSB0aGlzLl90aWNrc1t0aGlzLm51bWJlclRpY2tzLTFdLnZhbHVlOwogICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9ICh0aGlzLm1heCAtIHRoaXMubWluKSAvICh0aGlzLm51bWJlclRpY2tzIC0gMSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIHdlIGRvbid0IGhhdmUgYW55IHRpY2tzIHlldCwgbGV0J3MgbWFrZSBzb21lIQogICAgICAgIGVsc2UgewogICAgICAgICAgICBpZiAobmFtZSA9PSAneGF4aXMnIHx8IG5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgIGRpbSA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgZGltID0gdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBpZiBtaW4sIG1heCBhbmQgbnVtYmVyIG9mIHRpY2tzIHNwZWNpZmllZCwgdXNlciBjYW4ndCBzcGVjaWZ5IGludGVydmFsLgogICAgICAgICAgICBpZiAodGhpcy5taW4gIT0gbnVsbCAmJiB0aGlzLm1heCAhPSBudWxsICYmIHRoaXMubnVtYmVyVGlja3MgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgCiAgICAgICAgICAgIG1pbiA9ICh0aGlzLm1pbiAhPSBudWxsKSA/IHRoaXMubWluIDogZGIubWluOwogICAgICAgICAgICBtYXggPSAodGhpcy5tYXggIT0gbnVsbCkgPyB0aGlzLm1heCA6IGRiLm1heDsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIGlmIG1pbiBhbmQgbWF4IGFyZSBzYW1lLCBzcGFjZSB0aGVtIG91dCBhIGJpdC4rCiAgICAgICAgICAgIGlmIChtaW4gPT0gbWF4KSB7CiAgICAgICAgICAgICAgICB2YXIgYWRqID0gMC4wNTsKICAgICAgICAgICAgICAgIGlmIChtaW4gPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgYWRqID0gTWF0aC5tYXgoTWF0aC5sb2cobWluKS9NYXRoLkxOMTAsIDAuMDUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbWluIC09IGFkajsKICAgICAgICAgICAgICAgIG1heCArPSBhZGo7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciByYW5nZSA9IG1heCAtIG1pbjsKICAgICAgICAgICAgdmFyIHJtaW4sIHJtYXg7CiAgICAgICAgICAgIHZhciB0ZW1wLCBwcmV2LCBjdXJyOwogICAgICAgICAgICB2YXIgeW51bXRpY2tzID0gWzMsNSw2LDExLDIxXTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIHlheGlzIGRpdmlkZSB0aWNrcyBpbiBuaWNlIGludGVydmFscyBmcm9tIDAgdG8gMS4KICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneWF4aXMnIHx8IHRoaXMubmFtZSA9PSAneTJheGlzJykgeyAKICAgICAgICAgICAgICAgIHRoaXMubWluID0gMDsKICAgICAgICAgICAgICAgIHRoaXMubWF4ID0gMTAwOyAKICAgICAgICAgICAgICAgIC8vIHVzZXIgZGlkbid0IHNwZWNpZnkgbnVtYmVyIG9mIHRpY2tzLgogICAgICAgICAgICAgICAgaWYgKCF0aGlzLm51bWJlclRpY2tzKXsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50aWNrSW50ZXJ2YWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IDMgKyBNYXRoLmNlaWwocmFuZ2UgLyB0aGlzLnRpY2tJbnRlcnZhbCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gMiArIE1hdGguY2VpbCgoZGltLSh0aGlzLnRpY2tTcGFjaW5nLTEpKS90aGlzLnRpY2tTcGFjaW5nKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpPTA7IGk8eW51bXRpY2tzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyID0gdGVtcC95bnVtdGlja3NbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyciA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IHludW10aWNrc1tpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnIgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldiA9IGN1cnI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyIDwgMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdhcyBwcmV2IG9yIGlzIGN1cnIgY2xvc2VyIHRvIG9uZT8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMocHJldiAtIDEpIDwgTWF0aC5hYnMoY3VyciAtIDEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSB5bnVtdGlja3NbaS0xXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0geW51bXRpY2tzW2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpID09IHludW10aWNrcy5sZW5ndGggLTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0geW51bXRpY2tzW2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGlja0ludGVydmFsID0gcmFuZ2UgLyAodGhpcy5udW1iZXJUaWNrcyAtIDEpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gdXNlciBkaWQgc3BlY2lmeSBudW1iZXIgb2YgdGlja3MuCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9IHJhbmdlIC8gKHRoaXMubnVtYmVyVGlja3MgLSAxKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5udW1iZXJUaWNrczsgaSsrKXsKICAgICAgICAgICAgICAgICAgICB0dCA9IHRoaXMubWluICsgaSAqIHRoaXMudGlja0ludGVydmFsOwogICAgICAgICAgICAgICAgICAgIHQgPSBuZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgLy8gdmFyIHQgPSBuZXcgJC5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2hvd1RpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd0xhYmVsID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuc2hvd1RpY2tNYXJrcykgewogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHQuc2V0VGljayh0dCwgdGhpcy5uYW1lKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90aWNrcy5wdXNoKHQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBmb3IgeCBheGVzLCBoYXZlIG51bWJlciBvdCB0aWNrcyBlcXVhbCB0byBudW1iZXIgb2Ygc2VyaWVzIGFuZCB0aWNrcyBwbGFjZWQKICAgICAgICAgICAgLy8gYXQgc3VtIG9mIHkgdmFsdWVzIGZvciBlYWNoIHNlcmllcy4KICAgICAgICAgICAgZWxzZSBpZiAodGhpcy50aWNrTW9kZSA9PSAnYmFyJykgewogICAgICAgICAgICAgICAgdGhpcy5taW4gPSAwOwogICAgICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IHRoaXMuX3Nlcmllcy5sZW5ndGggKyAxOwogICAgICAgICAgICAgICAgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTsKICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaG93VGlja3MpIHsKICAgICAgICAgICAgICAgICAgICB0LnNob3dMYWJlbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLnNob3dUaWNrTWFya3MpIHsKICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0LnNldFRpY2soMCwgdGhpcy5uYW1lKTsKICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHRlbXAgPSAwOwoKICAgICAgICAgICAgICAgIGZvciAoaT0xOyBpPHRoaXMubnVtYmVyVGlja3M7IGkrKyl7CiAgICAgICAgICAgICAgICAgICAgdGVtcCArPSB0aGlzLl9zZXJpZXNbaS0xXS5fc3VteTsKICAgICAgICAgICAgICAgICAgICB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaG93VGlja3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghdGhpcy5zaG93VGlja01hcmtzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdC5zZXRUaWNrKHRlbXAsIHRoaXMubmFtZSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRoaXMubWF4ID0gdGhpcy5tYXggfHwgdGVtcDsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gaWYgdXNlciBzcGVjaWZpZWQgYSBtYXggYW5kIGl0IGlzIGdyZWF0ZXIgdGhhbiBzdW0sIGFkZCBhIHRpY2sKICAgICAgICAgICAgICAgIGlmICh0aGlzLm1heCA+IHRlbXApIHsKICAgICAgICAgICAgICAgICAgICAgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2hvd1RpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd0xhYmVsID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuc2hvd1RpY2tNYXJrcykgewogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHQuc2V0VGljayh0aGlzLm1heCwgdGhpcy5uYW1lKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90aWNrcy5wdXNoKHQpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBlbHNlIGlmICh0aGlzLnRpY2tNb2RlID09ICdldmVuJykgewogICAgICAgICAgICAgICAgdGhpcy5taW4gPSAwOwogICAgICAgICAgICAgICAgdGhpcy5tYXggPSB0aGlzLm1heCB8fCBkYi5tYXg7CiAgICAgICAgICAgICAgICAvLyBnZXQgYSBkZXNpcmVkIG51bWJlciBvZiB0aWNrcwogICAgICAgICAgICAgICAgdmFyIG50ID0gMiArIE1hdGguY2VpbCgoZGltLSh0aGlzLnRpY2tTcGFjaW5nLTEpKS90aGlzLnRpY2tTcGFjaW5nKTsKICAgICAgICAgICAgICAgIHJhbmdlID0gdGhpcy5tYXggLSB0aGlzLm1pbjsKICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSBudDsKICAgICAgICAgICAgICAgIHRoaXMudGlja0ludGVydmFsID0gcmFuZ2UgLyAodGhpcy5udW1iZXJUaWNrcyAtIDEpOwoKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPHRoaXMubnVtYmVyVGlja3M7IGkrKyl7CiAgICAgICAgICAgICAgICAgICAgdHQgPSB0aGlzLm1pbiArIGkgKiB0aGlzLnRpY2tJbnRlcnZhbDsKICAgICAgICAgICAgICAgICAgICB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgIC8vIHZhciB0ID0gbmV3ICQuanFwbG90LkF4aXNUaWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dUaWNrcykgewogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dMYWJlbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLnNob3dUaWNrTWFya3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0LnNldFRpY2sodHQsIHRoaXMubmFtZSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYXhpcwogICAgJC5qcXBsb3QuTWVra29BeGlzUmVuZGVyZXIucHJvdG90eXBlLnBhY2sgPSBmdW5jdGlvbihwb3MsIG9mZnNldHMpIHsKICAgICAgICB2YXIgdGlja3MgPSB0aGlzLl90aWNrczsKICAgICAgICB2YXIgbWF4ID0gdGhpcy5tYXg7CiAgICAgICAgdmFyIG1pbiA9IHRoaXMubWluOwogICAgICAgIHZhciBvZmZtYXggPSBvZmZzZXRzLm1heDsKICAgICAgICB2YXIgb2ZmbWluID0gb2Zmc2V0cy5taW47CiAgICAgICAgdmFyIGxzaG93ID0gKHRoaXMuX2xhYmVsID09IG51bGwpID8gZmFsc2UgOiB0aGlzLl9sYWJlbC5zaG93OwogICAgICAgIAogICAgICAgIGZvciAodmFyIHAgaW4gcG9zKSB7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHAsIHBvc1twXSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHRoaXMuX29mZnNldHMgPSBvZmZzZXRzOwogICAgICAgIC8vIHBpeGVsbGVuZ3RoIHdpbGwgYmUgKyBmb3IgeCBheGVzIGFuZCAtIGZvciB5IGF4ZXMgYmVjYXN1ZSBwaXhlbHMgYWx3YXlzIG1lYXN1cmVkIGZyb20gdG9wIGxlZnQuCiAgICAgICAgdmFyIHBpeGVsbGVuZ3RoID0gb2ZmbWF4IC0gb2ZmbWluOwogICAgICAgIHZhciB1bml0bGVuZ3RoID0gbWF4IC0gbWluOwogICAgICAgIAogICAgICAgIC8vIHBvaW50IHRvIHVuaXQgYW5kIHVuaXQgdG8gcG9pbnQgY29udmVyc2lvbnMgcmVmZXJlbmNlcyB0byBQbG90IERPTSBlbGVtZW50IHRvcCBsZWZ0IGNvcm5lci4KICAgICAgICB0aGlzLnAydSA9IGZ1bmN0aW9uKHApewogICAgICAgICAgICByZXR1cm4gKHAgLSBvZmZtaW4pICogdW5pdGxlbmd0aCAvIHBpeGVsbGVuZ3RoICsgbWluOwogICAgICAgIH07CiAgICAgICAgCiAgICAgICAgdGhpcy51MnAgPSBmdW5jdGlvbih1KXsKICAgICAgICAgICAgcmV0dXJuICh1IC0gbWluKSAqIHBpeGVsbGVuZ3RoIC8gdW5pdGxlbmd0aCArIG9mZm1pbjsKICAgICAgICB9OwogICAgICAgICAgICAgICAgCiAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnIHx8IHRoaXMubmFtZSA9PSAneDJheGlzJyl7CiAgICAgICAgICAgIHRoaXMuc2VyaWVzX3UycCA9IGZ1bmN0aW9uKHUpewogICAgICAgICAgICAgICAgcmV0dXJuICh1IC0gbWluKSAqIHBpeGVsbGVuZ3RoIC8gdW5pdGxlbmd0aDsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgdGhpcy5zZXJpZXNfcDJ1ID0gZnVuY3Rpb24ocCl7CiAgICAgICAgICAgICAgICByZXR1cm4gcCAqIHVuaXRsZW5ndGggLyBwaXhlbGxlbmd0aCArIG1pbjsKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHRoaXMuc2VyaWVzX3UycCA9IGZ1bmN0aW9uKHUpewogICAgICAgICAgICAgICAgcmV0dXJuICh1IC0gbWF4KSAqIHBpeGVsbGVuZ3RoIC8gdW5pdGxlbmd0aDsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgdGhpcy5zZXJpZXNfcDJ1ID0gZnVuY3Rpb24ocCl7CiAgICAgICAgICAgICAgICByZXR1cm4gcCAqIHVuaXRsZW5ndGggLyBwaXhlbGxlbmd0aCArIG1heDsKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKHRoaXMuc2hvdykgewogICAgICAgICAgICBpZiAodGhpcy5uYW1lID09ICd4YXhpcycgfHwgdGhpcy5uYW1lID09ICd4MmF4aXMnKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGlja3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRpY2tzW2ldOwogICAgICAgICAgICAgICAgICAgIGlmICh0LnNob3cgJiYgdC5zaG93TGFiZWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNoaW07CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5jb25zdHJ1Y3RvciA9PSAkLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyICYmIHQuYW5nbGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgbmVlZCB0byBhZGp1c3QgYXV0byBwb3NpdGlvbmluZyBiYXNlZCBvbiB3aGljaCBheGlzIHRoaXMgaXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGVtcCA9ICh0aGlzLm5hbWUgPT0gJ3hheGlzJykgPyAxIDogLTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHQubGFiZWxQb3NpdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2F1dG8nOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3NpdGlvbiBhdCBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAgKiB0LmFuZ2xlIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldFdpZHRoKCkgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5zaW4oLXQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvc2l0aW9uIGF0IHN0YXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5zaW4odC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZW5kJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldFdpZHRoKCkgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5zaW4oLXQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdGFydCc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKHQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtaWRkbGUnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0V2lkdGgoKS8yICsgdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKC10Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldFdpZHRoKCkvMiArIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbigtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldFdpZHRoKCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsID0gdGhpcy51MnAodC52YWx1ZSkgKyBzaGltICsgJ3B4JzsKICAgICAgICAgICAgICAgICAgICAgICAgdC5fZWxlbS5jc3MoJ2xlZnQnLCB2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICB0LnBhY2soKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgdzsKICAgICAgICAgICAgICAgIGlmIChsc2hvdykgewogICAgICAgICAgICAgICAgICAgIHcgPSB0aGlzLl9sYWJlbC5fZWxlbS5vdXRlcldpZHRoKHRydWUpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygnbGVmdCcsIG9mZm1pbiArIHBpeGVsbGVuZ3RoLzIgLSB3LzIgKyAncHgnKTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lID09ICd4YXhpcycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCdib3R0b20nLCAnMHB4Jyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5fZWxlbS5jc3MoJ3RvcCcsICcwcHgnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwucGFjaygpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gbm93IHNob3cgdGhlIGxhYmVscyB1bmRlciB0aGUgYmFycy4KICAgICAgICAgICAgICAgIHZhciBiLCBsLCByOwogICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMuYmFyTGFiZWxzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX2JhckxhYmVsc1tpXTsKICAgICAgICAgICAgICAgICAgICBpZiAoYi5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBiLmdldFdpZHRoKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0aGlzLl90aWNrc1tpXS5nZXRMZWZ0KCkgKyB0aGlzLl90aWNrc1tpXS5nZXRXaWR0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5fdGlja3NbaSsxXS5nZXRMZWZ0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGIuX2VsZW0uY3NzKCdsZWZ0JywgKHIrbC13KS8yKydweCcpOwogICAgICAgICAgICAgICAgICAgICAgICBiLl9lbGVtLmNzcygndG9wJywgdGhpcy5fdGlja3NbaV0uX2VsZW0uY3NzKCd0b3AnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGIucGFjaygpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGlja3NbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvdyAmJiB0LnNob3dMYWJlbCkgeyAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2hpbTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuY29uc3RydWN0b3IgPT0gJC5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciAmJiB0LmFuZ2xlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIG5lZWQgdG8gYWRqdXN0IGF1dG8gcG9zaXRpb25pbmcgYmFzZWQgb24gd2hpY2ggYXhpcyB0aGlzIGlzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXAgPSAodGhpcy5uYW1lID09ICd5YXhpcycpID8gMSA6IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LmxhYmVsUG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhdXRvJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9zaXRpb24gYXQgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZW5kJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAgKiB0LmFuZ2xlIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5jb3MoLXQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldEhlaWdodCgpICsgdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguY29zKHQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuYW5nbGUgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLmNvcygtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5jb3ModC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWlkZGxlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldEhlaWdodCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5nZXRIZWlnaHQoKS8yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5nZXRIZWlnaHQoKS8yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsID0gdGhpcy51MnAodC52YWx1ZSkgKyBzaGltICsgJ3B4JzsKICAgICAgICAgICAgICAgICAgICAgICAgdC5fZWxlbS5jc3MoJ3RvcCcsIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQucGFjaygpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChsc2hvdykgewogICAgICAgICAgICAgICAgICAgIHZhciBoID0gdGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJIZWlnaHQodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCd0b3AnLCBvZmZtYXggLSBwaXhlbGxlbmd0aC8yIC0gaC8yICsgJ3B4Jyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneWF4aXMnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygnbGVmdCcsICcwcHgnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygncmlnaHQnLCAnMHB4Jyk7CiAgICAgICAgICAgICAgICAgICAgfSAgIAogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLnBhY2soKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07Cn0pKGpRdWVyeSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.mekkoAxisRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGEpe2EuanFwbG90Lk1la2tvQXhpc1JlbmRlcmVyPWZ1bmN0aW9uKCl7fTthLmpxcGxvdC5NZWtrb0F4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihjKXt0aGlzLnRpY2tNb2RlO3RoaXMuYmFyTGFiZWxSZW5kZXJlcj1hLmpxcGxvdC5BeGlzTGFiZWxSZW5kZXJlcjt0aGlzLmJhckxhYmVscz10aGlzLmJhckxhYmVsc3x8W107dGhpcy5iYXJMYWJlbE9wdGlvbnM9e307dGhpcy50aWNrT3B0aW9ucz1hLmV4dGVuZCh0cnVlLHtzaG93R3JpZGxpbmU6ZmFsc2V9LHRoaXMudGlja09wdGlvbnMpO3RoaXMuX2JhckxhYmVscz1bXTthLmV4dGVuZCh0cnVlLHRoaXMsYyk7aWYodGhpcy5uYW1lPT0ieWF4aXMiKXt0aGlzLnRpY2tPcHRpb25zLmZvcm1hdFN0cmluZz10aGlzLnRpY2tPcHRpb25zLmZvcm1hdFN0cmluZ3x8IiVkJSJ9dmFyIGI9dGhpcy5fZGF0YUJvdW5kcztiLm1pbj0wO2lmKHRoaXMubmFtZT09InlheGlzInx8dGhpcy5uYW1lPT0ieTJheGlzIil7Yi5tYXg9MTAwO3RoaXMudGlja01vZGU9ImV2ZW4ifWVsc2V7aWYodGhpcy5uYW1lPT0ieGF4aXMiKXt0aGlzLnRpY2tNb2RlPSh0aGlzLnRpY2tNb2RlPT1udWxsKT8iYmFyIjp0aGlzLnRpY2tNb2RlO2Zvcih2YXIgZD0wO2Q8dGhpcy5fc2VyaWVzLmxlbmd0aDtkKyspe2IubWF4Kz10aGlzLl9zZXJpZXNbZF0uX3N1bXl9fWVsc2V7aWYodGhpcy5uYW1lPT0ieDJheGlzIil7dGhpcy50aWNrTW9kZT0odGhpcy50aWNrTW9kZT09bnVsbCk/ImV2ZW4iOnRoaXMudGlja01vZGU7Zm9yKHZhciBkPTA7ZDx0aGlzLl9zZXJpZXMubGVuZ3RoO2QrKyl7Yi5tYXgrPXRoaXMuX3Nlcmllc1tkXS5fc3VteX19fX19O2EuanFwbG90Lk1la2tvQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKGIsail7aWYodGhpcy5zaG93KXt0aGlzLnJlbmRlcmVyLmNyZWF0ZVRpY2tzLmNhbGwodGhpcyk7dmFyIGg9MDt2YXIgYzt2YXIgZz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0aGlzLl9lbGVtPWEoZyk7dGhpcy5fZWxlbS5hZGRDbGFzcygianFwbG90LWF4aXMganFwbG90LSIrdGhpcy5uYW1lKTt0aGlzLl9lbGVtLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIpO2c9bnVsbDtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe3RoaXMuX2VsZW0ud2lkdGgodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgpfWVsc2V7dGhpcy5fZWxlbS5oZWlnaHQodGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0KX10aGlzLmxhYmVsT3B0aW9ucy5heGlzPXRoaXMubmFtZTt0aGlzLl9sYWJlbD1uZXcgdGhpcy5sYWJlbFJlbmRlcmVyKHRoaXMubGFiZWxPcHRpb25zKTtpZih0aGlzLl9sYWJlbC5zaG93KXt0aGlzLl9lbGVtLmFwcGVuZCh0aGlzLl9sYWJlbC5kcmF3KGIpKX12YXIgZixlLGc7aWYodGhpcy5zaG93VGlja3Mpe2Y9dGhpcy5fdGlja3M7Zm9yKHZhciBkPTA7ZDxmLmxlbmd0aDtkKyspe2U9ZltkXTtpZihlLnNob3dMYWJlbCYmKCFlLmlzTWlub3JUaWNrfHx0aGlzLnNob3dNaW5vclRpY2tzKSl7dGhpcy5fZWxlbS5hcHBlbmQoZS5kcmF3KGIpKX19fWZvcihkPTA7ZDx0aGlzLmJhckxhYmVscy5sZW5ndGg7ZCsrKXt0aGlzLmJhckxhYmVsT3B0aW9ucy5heGlzPXRoaXMubmFtZTt0aGlzLmJhckxhYmVsT3B0aW9ucy5sYWJlbD10aGlzLmJhckxhYmVsc1tkXTt0aGlzLl9iYXJMYWJlbHMucHVzaChuZXcgdGhpcy5iYXJMYWJlbFJlbmRlcmVyKHRoaXMuYmFyTGFiZWxPcHRpb25zKSk7aWYodGhpcy50aWNrTW9kZSE9ImJhciIpe3RoaXMuX2JhckxhYmVsc1tkXS5zaG93PWZhbHNlfWlmKHRoaXMuX2JhckxhYmVsc1tkXS5zaG93KXt2YXIgZz10aGlzLl9iYXJMYWJlbHNbZF0uZHJhdyhiLGopO2cucmVtb3ZlQ2xhc3MoImpxcGxvdC0iK3RoaXMubmFtZSsiLWxhYmVsIik7Zy5hZGRDbGFzcygianFwbG90LSIrdGhpcy5uYW1lKyItdGljayIpO2cuYWRkQ2xhc3MoImpxcGxvdC1tZWtrby1iYXJMYWJlbCIpO2cuYXBwZW5kVG8odGhpcy5fZWxlbSk7Zz1udWxsfX19cmV0dXJuIHRoaXMuX2VsZW19O2EuanFwbG90Lk1la2tvQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMubWluPXRoaXMuX21pbjt0aGlzLm1heD10aGlzLl9tYXg7dGhpcy50aWNrSW50ZXJ2YWw9dGhpcy5fdGlja0ludGVydmFsO3RoaXMubnVtYmVyVGlja3M9dGhpcy5fbnVtYmVyVGlja3N9O2EuanFwbG90Lk1la2tvQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oKXt2YXIgaz0wO3ZhciBkO3ZhciBjPTA7dmFyIGo9MDt2YXIgYj0odGhpcy5fbGFiZWw9PW51bGwpP2ZhbHNlOnRoaXMuX2xhYmVsLnNob3c7aWYodGhpcy5zaG93JiZ0aGlzLnNob3dUaWNrcyl7dmFyIGc9dGhpcy5fdGlja3M7Zm9yKHZhciBmPTA7ZjxnLmxlbmd0aDtmKyspe3ZhciBlPWdbZl07aWYoZS5zaG93TGFiZWwmJighZS5pc01pbm9yVGlja3x8dGhpcy5zaG93TWlub3JUaWNrcykpe2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7ZD1lLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpfWVsc2V7ZD1lLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSl9aWYoZD5rKXtrPWR9fX1pZihiKXtjPXRoaXMuX2xhYmVsLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSk7aj10aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKX1pZih0aGlzLm5hbWU9PSJ4YXhpcyIpe2s9aytqO3RoaXMuX2VsZW0uY3NzKHtoZWlnaHQ6aysicHgiLGxlZnQ6IjBweCIsYm90dG9tOiIwcHgifSl9ZWxzZXtpZih0aGlzLm5hbWU9PSJ4MmF4aXMiKXtrPWsrajt0aGlzLl9lbGVtLmNzcyh7aGVpZ2h0OmsrInB4IixsZWZ0OiIwcHgiLHRvcDoiMHB4In0pfWVsc2V7aWYodGhpcy5uYW1lPT0ieWF4aXMiKXtrPWsrYzt0aGlzLl9lbGVtLmNzcyh7d2lkdGg6aysicHgiLGxlZnQ6IjBweCIsdG9wOiIwcHgifSk7aWYoYiYmdGhpcy5fbGFiZWwuY29uc3RydWN0b3I9PWEuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoIndpZHRoIixjKyJweCIpfX1lbHNle2s9aytjO3RoaXMuX2VsZW0uY3NzKHt3aWR0aDprKyJweCIscmlnaHQ6IjBweCIsdG9wOiIwcHgifSk7aWYoYiYmdGhpcy5fbGFiZWwuY29uc3RydWN0b3I9PWEuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoIndpZHRoIixjKyJweCIpfX19fX19O2EuanFwbG90Lk1la2tvQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jcmVhdGVUaWNrcz1mdW5jdGlvbigpe3ZhciB6PXRoaXMuX3RpY2tzO3ZhciB3PXRoaXMudGlja3M7dmFyIEI9dGhpcy5uYW1lO3ZhciB5PXRoaXMuX2RhdGFCb3VuZHM7dmFyIHAseDt2YXIgbixyO3ZhciBkLGM7dmFyIGgsYixzLHE7aWYody5sZW5ndGgpe2ZvcihzPTA7czx3Lmxlbmd0aDtzKyspe3ZhciBlPXdbc107dmFyIGg9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2lmKGUuY29uc3RydWN0b3I9PUFycmF5KXtoLnZhbHVlPWVbMF07aC5sYWJlbD1lWzFdO2lmKCF0aGlzLnNob3dUaWNrcyl7aC5zaG93TGFiZWw9ZmFsc2U7aC5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe2guc2hvd01hcms9ZmFsc2V9fWguc2V0VGljayhlWzBdLHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChoKX1lbHNle2gudmFsdWU9ZTtpZighdGhpcy5zaG93VGlja3Mpe2guc2hvd0xhYmVsPWZhbHNlO2guc2hvd01hcms9ZmFsc2V9ZWxzZXtpZighdGhpcy5zaG93VGlja01hcmtzKXtoLnNob3dNYXJrPWZhbHNlfX1oLnNldFRpY2soZSx0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goaCl9fXRoaXMubnVtYmVyVGlja3M9dy5sZW5ndGg7dGhpcy5taW49dGhpcy5fdGlja3NbMF0udmFsdWU7dGhpcy5tYXg9dGhpcy5fdGlja3NbdGhpcy5udW1iZXJUaWNrcy0xXS52YWx1ZTt0aGlzLnRpY2tJbnRlcnZhbD0odGhpcy5tYXgtdGhpcy5taW4pLyh0aGlzLm51bWJlclRpY2tzLTEpfWVsc2V7aWYoQj09InhheGlzInx8Qj09IngyYXhpcyIpe3A9dGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGh9ZWxzZXtwPXRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodH1pZih0aGlzLm1pbiE9bnVsbCYmdGhpcy5tYXghPW51bGwmJnRoaXMubnVtYmVyVGlja3MhPW51bGwpe3RoaXMudGlja0ludGVydmFsPW51bGx9bj0odGhpcy5taW4hPW51bGwpP3RoaXMubWluOnkubWluO3I9KHRoaXMubWF4IT1udWxsKT90aGlzLm1heDp5Lm1heDtpZihuPT1yKXt2YXIgZz0wLjA1O2lmKG4+MCl7Zz1NYXRoLm1heChNYXRoLmxvZyhuKS9NYXRoLkxOMTAsMC4wNSl9bi09ZztyKz1nfXZhciBrPXItbjt2YXIgbSxvO3ZhciB2LGwsdTt2YXIgZj1bMyw1LDYsMTEsMjFdO2lmKHRoaXMubmFtZT09InlheGlzInx8dGhpcy5uYW1lPT0ieTJheGlzIil7dGhpcy5taW49MDt0aGlzLm1heD0xMDA7aWYoIXRoaXMubnVtYmVyVGlja3Mpe2lmKHRoaXMudGlja0ludGVydmFsKXt0aGlzLm51bWJlclRpY2tzPTMrTWF0aC5jZWlsKGsvdGhpcy50aWNrSW50ZXJ2YWwpfWVsc2V7dj0yK01hdGguY2VpbCgocC0odGhpcy50aWNrU3BhY2luZy0xKSkvdGhpcy50aWNrU3BhY2luZyk7Zm9yKHM9MDtzPGYubGVuZ3RoO3MrKyl7dT12L2Zbc107aWYodT09MSl7dGhpcy5udW1iZXJUaWNrcz1mW3NdO2JyZWFrfWVsc2V7aWYodT4xKXtsPXU7Y29udGludWV9ZWxzZXtpZih1PDEpe2lmKE1hdGguYWJzKGwtMSk8TWF0aC5hYnModS0xKSl7dGhpcy5udW1iZXJUaWNrcz1mW3MtMV07YnJlYWt9ZWxzZXt0aGlzLm51bWJlclRpY2tzPWZbc107YnJlYWt9fWVsc2V7aWYocz09Zi5sZW5ndGgtMSl7dGhpcy5udW1iZXJUaWNrcz1mW3NdfX19fX10aGlzLnRpY2tJbnRlcnZhbD1rLyh0aGlzLm51bWJlclRpY2tzLTEpfX1lbHNle3RoaXMudGlja0ludGVydmFsPWsvKHRoaXMubnVtYmVyVGlja3MtMSl9Zm9yKHZhciBzPTA7czx0aGlzLm51bWJlclRpY2tzO3MrKyl7Yj10aGlzLm1pbitzKnRoaXMudGlja0ludGVydmFsO2g9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2lmKCF0aGlzLnNob3dUaWNrcyl7aC5zaG93TGFiZWw9ZmFsc2U7aC5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe2guc2hvd01hcms9ZmFsc2V9fWguc2V0VGljayhiLHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChoKX19ZWxzZXtpZih0aGlzLnRpY2tNb2RlPT0iYmFyIil7dGhpcy5taW49MDt0aGlzLm51bWJlclRpY2tzPXRoaXMuX3Nlcmllcy5sZW5ndGgrMTtoPW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTtpZighdGhpcy5zaG93VGlja3Mpe2guc2hvd0xhYmVsPWZhbHNlO2guc2hvd01hcms9ZmFsc2V9ZWxzZXtpZighdGhpcy5zaG93VGlja01hcmtzKXtoLnNob3dNYXJrPWZhbHNlfX1oLnNldFRpY2soMCx0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goaCk7dj0wO2ZvcihzPTE7czx0aGlzLm51bWJlclRpY2tzO3MrKyl7dis9dGhpcy5fc2VyaWVzW3MtMV0uX3N1bXk7aD1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7aWYoIXRoaXMuc2hvd1RpY2tzKXtoLnNob3dMYWJlbD1mYWxzZTtoLnNob3dNYXJrPWZhbHNlfWVsc2V7aWYoIXRoaXMuc2hvd1RpY2tNYXJrcyl7aC5zaG93TWFyaz1mYWxzZX19aC5zZXRUaWNrKHYsdGhpcy5uYW1lKTt0aGlzLl90aWNrcy5wdXNoKGgpfXRoaXMubWF4PXRoaXMubWF4fHx2O2lmKHRoaXMubWF4PnYpe2g9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2lmKCF0aGlzLnNob3dUaWNrcyl7aC5zaG93TGFiZWw9ZmFsc2U7aC5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe2guc2hvd01hcms9ZmFsc2V9fWguc2V0VGljayh0aGlzLm1heCx0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goaCl9fWVsc2V7aWYodGhpcy50aWNrTW9kZT09ImV2ZW4iKXt0aGlzLm1pbj0wO3RoaXMubWF4PXRoaXMubWF4fHx5Lm1heDt2YXIgQT0yK01hdGguY2VpbCgocC0odGhpcy50aWNrU3BhY2luZy0xKSkvdGhpcy50aWNrU3BhY2luZyk7az10aGlzLm1heC10aGlzLm1pbjt0aGlzLm51bWJlclRpY2tzPUE7dGhpcy50aWNrSW50ZXJ2YWw9ay8odGhpcy5udW1iZXJUaWNrcy0xKTtmb3Iocz0wO3M8dGhpcy5udW1iZXJUaWNrcztzKyspe2I9dGhpcy5taW4rcyp0aGlzLnRpY2tJbnRlcnZhbDtoPW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTtpZighdGhpcy5zaG93VGlja3Mpe2guc2hvd0xhYmVsPWZhbHNlO2guc2hvd01hcms9ZmFsc2V9ZWxzZXtpZighdGhpcy5zaG93VGlja01hcmtzKXtoLnNob3dNYXJrPWZhbHNlfX1oLnNldFRpY2soYix0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goaCl9fX19fX07YS5qcXBsb3QuTWVra29BeGlzUmVuZGVyZXIucHJvdG90eXBlLnBhY2s9ZnVuY3Rpb24oZSxkKXt2YXIgQz10aGlzLl90aWNrczt2YXIgeD10aGlzLm1heDt2YXIgdj10aGlzLm1pbjt2YXIgbT1kLm1heDt2YXIgaj1kLm1pbjt2YXIgbz0odGhpcy5fbGFiZWw9PW51bGwpP2ZhbHNlOnRoaXMuX2xhYmVsLnNob3c7Zm9yKHZhciBzIGluIGUpe3RoaXMuX2VsZW0uY3NzKHMsZVtzXSl9dGhpcy5fb2Zmc2V0cz1kO3ZhciBmPW0tajt2YXIgZz14LXY7dGhpcy5wMnU9ZnVuY3Rpb24oYil7cmV0dXJuKGItaikqZy9mK3Z9O3RoaXMudTJwPWZ1bmN0aW9uKGIpe3JldHVybihiLXYpKmYvZytqfTtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe3RoaXMuc2VyaWVzX3UycD1mdW5jdGlvbihiKXtyZXR1cm4oYi12KSpmL2d9O3RoaXMuc2VyaWVzX3AydT1mdW5jdGlvbihiKXtyZXR1cm4gYipnL2Yrdn19ZWxzZXt0aGlzLnNlcmllc191MnA9ZnVuY3Rpb24oYil7cmV0dXJuKGIteCkqZi9nfTt0aGlzLnNlcmllc19wMnU9ZnVuY3Rpb24oYil7cmV0dXJuIGIqZy9mK3h9fWlmKHRoaXMuc2hvdyl7aWYodGhpcy5uYW1lPT0ieGF4aXMifHx0aGlzLm5hbWU9PSJ4MmF4aXMiKXtmb3IodmFyIHk9MDt5PEMubGVuZ3RoO3krKyl7dmFyIG49Q1t5XTtpZihuLnNob3cmJm4uc2hvd0xhYmVsKXt2YXIgYztpZihuLmNvbnN0cnVjdG9yPT1hLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyJiZuLmFuZ2xlKXt2YXIgQT0odGhpcy5uYW1lPT0ieGF4aXMiKT8xOi0xO3N3aXRjaChuLmxhYmVsUG9zaXRpb24pe2Nhc2UiYXV0byI6aWYoQSpuLmFuZ2xlPDApe2M9LW4uZ2V0V2lkdGgoKStuLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKC1uLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9ZWxzZXtjPS1uLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKG4uX3RleHRSZW5kZXJlci5hbmdsZSkvMn1icmVhaztjYXNlImVuZCI6Yz0tbi5nZXRXaWR0aCgpK24uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4oLW4uX3RleHRSZW5kZXJlci5hbmdsZSkvMjticmVhaztjYXNlInN0YXJ0IjpjPS1uLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKG4uX3RleHRSZW5kZXJlci5hbmdsZSkvMjticmVhaztjYXNlIm1pZGRsZSI6Yz0tbi5nZXRXaWR0aCgpLzIrbi5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbigtbi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yO2JyZWFrO2RlZmF1bHQ6Yz0tbi5nZXRXaWR0aCgpLzIrbi5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbigtbi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yO2JyZWFrfX1lbHNle2M9LW4uZ2V0V2lkdGgoKS8yfXZhciBEPXRoaXMudTJwKG4udmFsdWUpK2MrInB4IjtuLl9lbGVtLmNzcygibGVmdCIsRCk7bi5wYWNrKCl9fXZhciBrO2lmKG8pe2s9dGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoImxlZnQiLGorZi8yLWsvMisicHgiKTtpZih0aGlzLm5hbWU9PSJ4YXhpcyIpe3RoaXMuX2xhYmVsLl9lbGVtLmNzcygiYm90dG9tIiwiMHB4Iil9ZWxzZXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoInRvcCIsIjBweCIpfXRoaXMuX2xhYmVsLnBhY2soKX12YXIgQix1LHE7Zm9yKHZhciB5PTA7eTx0aGlzLmJhckxhYmVscy5sZW5ndGg7eSsrKXtCPXRoaXMuX2JhckxhYmVsc1t5XTtpZihCLnNob3cpe2s9Qi5nZXRXaWR0aCgpO3U9dGhpcy5fdGlja3NbeV0uZ2V0TGVmdCgpK3RoaXMuX3RpY2tzW3ldLmdldFdpZHRoKCk7cT10aGlzLl90aWNrc1t5KzFdLmdldExlZnQoKTtCLl9lbGVtLmNzcygibGVmdCIsKHErdS1rKS8yKyJweCIpO0IuX2VsZW0uY3NzKCJ0b3AiLHRoaXMuX3RpY2tzW3ldLl9lbGVtLmNzcygidG9wIikpO0IucGFjaygpfX19ZWxzZXtmb3IodmFyIHk9MDt5PEMubGVuZ3RoO3krKyl7dmFyIG49Q1t5XTtpZihuLnNob3cmJm4uc2hvd0xhYmVsKXt2YXIgYztpZihuLmNvbnN0cnVjdG9yPT1hLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyJiZuLmFuZ2xlKXt2YXIgQT0odGhpcy5uYW1lPT0ieWF4aXMiKT8xOi0xO3N3aXRjaChuLmxhYmVsUG9zaXRpb24pe2Nhc2UiYXV0byI6Y2FzZSJlbmQiOmlmKEEqbi5hbmdsZTwwKXtjPS1uLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguY29zKC1uLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9ZWxzZXtjPS1uLmdldEhlaWdodCgpK24uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5jb3Mobi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWJyZWFrO2Nhc2Uic3RhcnQiOmlmKG4uYW5nbGU+MCl7Yz0tbi5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLmNvcygtbi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWVsc2V7Yz0tbi5nZXRIZWlnaHQoKStuLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguY29zKG4uX3RleHRSZW5kZXJlci5hbmdsZSkvMn1icmVhaztjYXNlIm1pZGRsZSI6Yz0tbi5nZXRIZWlnaHQoKS8yO2JyZWFrO2RlZmF1bHQ6Yz0tbi5nZXRIZWlnaHQoKS8yO2JyZWFrfX1lbHNle2M9LW4uZ2V0SGVpZ2h0KCkvMn12YXIgRD10aGlzLnUycChuLnZhbHVlKStjKyJweCI7bi5fZWxlbS5jc3MoInRvcCIsRCk7bi5wYWNrKCl9fWlmKG8pe3ZhciB6PXRoaXMuX2xhYmVsLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpO3RoaXMuX2xhYmVsLl9lbGVtLmNzcygidG9wIixtLWYvMi16LzIrInB4Iik7aWYodGhpcy5uYW1lPT0ieWF4aXMiKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoImxlZnQiLCIwcHgiKX1lbHNle3RoaXMuX2xhYmVsLl9lbGVtLmNzcygicmlnaHQiLCIwcHgiKX10aGlzLl9sYWJlbC5wYWNrKCl9fX19fSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.mekkoRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuTWVra29SZW5kZXJlcgogICAgICogRHJhd3MgYSBNZWtrbyBzdHlsZSBjaGFydCB3aGljaCBzaG93cyAzIGRpbWVuc2lvbmFsIGRhdGEgb24gYSAyIGRpbWVuc2lvbmFsIGdyYXBoLgogICAgICogdGhlIDwkLmpxcGxvdC5NZWtrb0F4aXNSZW5kZXJlcj4gc2hvdWxkIGJlIHVzZWQgd2l0aCBtZWtrbyBjaGFydHMuICBUaGUgbWVra28gcmVuZGVyZXIKICAgICAqIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBsZWdlbmQgcmVuZGVyZXIgd2l0aCBpdHMgb3duICQuanFwbG90Lk1la2tvTGVnZW5kUmVuZGVyZXIKICAgICAqIHdoaWNoIGFsbG93cyBtb3JlIGZsZXhpYmlsaXR5IHRvIHNwZWNpZnkgbnVtYmVyIG9mIHJvd3MgYW5kIGNvbHVtbnMgaW4gdGhlIGxlZ2VuZC4KICAgICAqIAogICAgICogRGF0YSBpcyBzcGVjaWZpZWQgcGVyIGJhciBpbiB0aGUgY2hhcnQuICBZb3UgY2FuIHNwZWNpZnkgZGF0YSBhcyBhbiBhcnJheSBvZiB5IHZhbHVlcywgb3IgYXMgCiAgICAgKiBhbiBhcnJheSBvZiBbbGFiZWwsIHZhbHVlXSBwYWlycy4gIE5vdGUgdGhhdCBsYWJlbHMgYXJlIHVzZWQgb25seSBvbiB0aGUgZmlyc3Qgc2VyaWVzLiAgCiAgICAgKiBMYWJlbHMgb24gc3Vic2VxdWVudCBzZXJpZXMgYXJlIGlnbm9yZWQ6CiAgICAgKiAKICAgICAqID4gYmFyMSA9IFtbJ3NoaXJ0cycsIDhdLFsnaGF0cycsIDE0XSxbJ3Nob2VzJywgNl0sWydnbG92ZXMnLCAxNl0sWydkb2xscycsIDEyXV07CiAgICAgKiA+IGJhcjIgPSBbMTUsNiw5LDEzLDZdOwogICAgICogPiBiYXIzID0gW1snZ3J1bXB5Jyw0XSxbJ3NuZWV6eScsMl0sWydoYXBweScsN10sWydzbGVlcHknLDldLFsnZG9jJyw3XV07CiAgICAgKiAKICAgICAqIElmIHlvdSB3YW50IHRvIHBsYWNlIGxhYmVscyBmb3IgZWFjaCBiYXIgdW5kZXIgdGhlIGF4aXMsIHlvdSB1c2UgdGhlIGJhckxhYmVscyBvcHRpb24gb24gCiAgICAgKiB0aGUgYXhlcy4gIFRoZSBiYXIgbGFiZWxzIGNhbiBiZSBzdHlsZWQgd2l0aCB0aGUgIi5qcXBsb3QtbWVra28tYmFyTGFiZWwiIGNzcyBjbGFzcy4KICAgICAqIAogICAgICogPiBiYXJMYWJlbHMgPSBbJ01pY2tleSBNb3VzZScsICdEb25hbGQgRHVjaycsICdHb29meSddOwogICAgICogPiBheGVzOnt4YXhpczp7YmFyTGFiZWxzOmJhckxhYmVsc319CiAgICAgKiAKICAgICAqLwogICAgCiAgICAKICAgICQuanFwbG90Lk1la2tvUmVuZGVyZXIgPSBmdW5jdGlvbigpewogICAgICAgIHRoaXMuc2hhcGVSZW5kZXJlciA9IG5ldyAkLmpxcGxvdC5TaGFwZVJlbmRlcmVyKCk7CiAgICAgICAgLy8gcHJvcDogYm9yZGVyQ29sb3IKICAgICAgICAvLyBjb2xvciBvZiB0aGUgYm9yZGVycyBiZXR3ZWVuIGFyZWFzIG9uIHRoZSBjaGFydAogICAgICAgIHRoaXMuYm9yZGVyQ29sb3IgPSBudWxsOwogICAgICAgIC8vIHByb3A6IHNob3dCb3JkZXJzCiAgICAgICAgLy8gVHJ1ZSB0byBkcmF3IGJvcmRlcnMgbGluZXMgYmV0d2VlbiBhcmVhcyBvbiB0aGUgY2hhcnQuCiAgICAgICAgLy8gRmFsc2Ugd2lsbCBkcmF3IGJvcmRlcnMgbGluZXMgd2l0aCB0aGUgc2FtZSBjb2xvciBhcyB0aGUgYXJlYS4KICAgICAgICB0aGlzLnNob3dCb3JkZXJzID0gdHJ1ZTsKICAgIH07CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHNlcmllcy4KICAgICQuanFwbG90Lk1la2tvUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zLCBwbG90KSB7CiAgICAgICAgdGhpcy5maWxsID0gZmFsc2U7CiAgICAgICAgdGhpcy5maWxsUmVjdCA9IHRydWU7CiAgICAgICAgdGhpcy5zdHJva2VSZWN0ID0gdHJ1ZTsKICAgICAgICB0aGlzLnNoYWRvdyA9IGZhbHNlOwogICAgICAgIC8vIHdpZHRoIG9mIGJhciBvbiB4IGF4aXMuCiAgICAgICAgdGhpcy5feHdpZHRoID0gMDsKICAgICAgICB0aGlzLl94c3RhcnQgPSAwOwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMucmVuZGVyZXIsIG9wdGlvbnMpOwogICAgICAgIC8vIHNldCB0aGUgc2hhcGUgcmVuZGVyZXIgb3B0aW9ucwogICAgICAgIHZhciBvcHRzID0ge2xpbmVKb2luOidtaXRlcicsIGxpbmVDYXA6J2J1dHQnLCBpc2FyYzpmYWxzZSwgZmlsbFJlY3Q6dGhpcy5maWxsUmVjdCwgc3Ryb2tlUmVjdDp0aGlzLnN0cm9rZVJlY3R9OwogICAgICAgIHRoaXMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5pbml0KG9wdHMpOwogICAgICAgIHBsb3QuYXhlcy54MmF4aXMuX3Nlcmllcy5wdXNoKHRoaXMpOwogICAgICAgIHRoaXMuX3R5cGUgPSAnbWVra28nOwogICAgfTsKICAgIAogICAgLy8gTWV0aG9kOiBzZXRHcmlkRGF0YQogICAgLy8gY29udmVydHMgdGhlIHVzZXIgZGF0YSB2YWx1ZXMgdG8gZ3JpZCBjb29yZGluYXRlcyBhbmQgc3RvcmVzIHRoZW0KICAgIC8vIGluIHRoZSBncmlkRGF0YSBhcnJheS4gIFdpbGwgY29udmVydCB1c2VyIGRhdGEgaW50byBhcHByb3ByaWF0ZQogICAgLy8gcmVjdGFuZ2xlcy4KICAgIC8vIENhbGxlZCB3aXRoIHNjb3BlIG9mIGEgc2VyaWVzLgogICAgJC5qcXBsb3QuTWVra29SZW5kZXJlci5wcm90b3R5cGUuc2V0R3JpZERhdGEgPSBmdW5jdGlvbihwbG90KSB7CiAgICAgICAgLy8gcmVjYWxjdWxhdGUgdGhlIGdyaWQgZGF0YQogICAgICAgIHZhciB4cCA9IHRoaXMuX3hheGlzLnNlcmllc191MnA7CiAgICAgICAgdmFyIHlwID0gdGhpcy5feWF4aXMuc2VyaWVzX3UycDsKICAgICAgICB2YXIgZGF0YSA9IHRoaXMuX3Bsb3REYXRhOwogICAgICAgIHRoaXMuZ3JpZERhdGEgPSBbXTsKICAgICAgICAvLyBmaWd1cmUgb3V0IHdpZHRoIG9uIHggYXhpcy4KICAgICAgICAvLyB0aGlzLl94d2lkdGggPSB0aGlzLl9zdW15IC8gcGxvdC5fc3VteSAqIHRoaXMuY2FudmFzLmdldFdpZHRoKCk7CiAgICAgICAgdGhpcy5feHdpZHRoID0geHAodGhpcy5fc3VteSkgLSB4cCgwKTsKICAgICAgICBpZiAodGhpcy5pbmRleD4wKSB7CiAgICAgICAgICAgIHRoaXMuX3hzdGFydCA9IHBsb3Quc2VyaWVzW3RoaXMuaW5kZXgtMV0uX3hzdGFydCArIHBsb3Quc2VyaWVzW3RoaXMuaW5kZXgtMV0uX3h3aWR0aDsKICAgICAgICB9CiAgICAgICAgdmFyIHRvdGhlaWdodCA9IHRoaXMuY2FudmFzLmdldEhlaWdodCgpOwogICAgICAgIHZhciBzdW15ID0gMDsKICAgICAgICB2YXIgY3VyeTsKICAgICAgICB2YXIgY3VyaGVpZ2h0OwogICAgICAgIGZvciAodmFyIGk9MDsgaTxkYXRhLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChkYXRhW2ldICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHN1bXkgKz0gZGF0YVtpXVsxXTsKICAgICAgICAgICAgICAgIGN1cnkgPSB0b3RoZWlnaHQgLSAoc3VteSAvIHRoaXMuX3N1bXkgKiB0b3RoZWlnaHQpOwogICAgICAgICAgICAgICAgY3VyaGVpZ2h0ID0gZGF0YVtpXVsxXSAvIHRoaXMuX3N1bXkgKiB0b3RoZWlnaHQ7CiAgICAgICAgICAgICAgICB0aGlzLmdyaWREYXRhLnB1c2goW3RoaXMuX3hzdGFydCwgY3VyeSwgdGhpcy5feHdpZHRoLCBjdXJoZWlnaHRdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CiAgICAKICAgIC8vIE1ldGhvZDogbWFrZUdyaWREYXRhCiAgICAvLyBjb252ZXJ0cyBhbnkgYXJiaXRyYXJ5IGRhdGEgdmFsdWVzIHRvIGdyaWQgY29vcmRpbmF0ZXMgYW5kCiAgICAvLyByZXR1cm5zIHRoZW0uICBUaGlzIG1ldGhvZCBleGlzdHMgc28gdGhhdCBwbHVnaW5zIGNhbiB1c2UgYSBzZXJpZXMnCiAgICAvLyBsaW5lcmVuZGVyZXIgdG8gZ2VuZXJhdGUgZ3JpZCBkYXRhIHBvaW50cyB3aXRob3V0IG92ZXJ3cml0aW5nIHRoZQogICAgLy8gZ3JpZCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGF0IHNlcmllcy4KICAgIC8vIENhbGxlZCB3aXRoIHNjb3BlIG9mIGEgc2VyaWVzLgogICAgJC5qcXBsb3QuTWVra29SZW5kZXJlci5wcm90b3R5cGUubWFrZUdyaWREYXRhID0gZnVuY3Rpb24oZGF0YSwgcGxvdCkgewogICAgICAgIC8vIHJlY2FsY3VsYXRlIHRoZSBncmlkIGRhdGEKICAgICAgICAvLyBmaWd1cmUgb3V0IHdpZHRoIG9uIHggYXhpcy4KICAgICAgICB2YXIgeHAgPSB0aGlzLl94YXhpcy5zZXJpZXNfdTJwOwogICAgICAgIHZhciB0b3RoZWlnaHQgPSB0aGlzLmNhbnZhcy5nZXRIZWlnaHQoKTsKICAgICAgICB2YXIgc3VteSA9IDA7CiAgICAgICAgdmFyIGN1cnk7CiAgICAgICAgdmFyIGN1cmhlaWdodDsKICAgICAgICB2YXIgZ2QgPSBbXTsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8ZGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoZGF0YVtpXSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBzdW15ICs9IGRhdGFbaV1bMV07CiAgICAgICAgICAgICAgICBjdXJ5ID0gdG90aGVpZ2h0IC0gKHN1bXkgLyB0aGlzLl9zdW15ICogdG90aGVpZ2h0KTsKICAgICAgICAgICAgICAgIGN1cmhlaWdodCA9IGRhdGFbaV1bMV0gLyB0aGlzLl9zdW15ICogdG90aGVpZ2h0OwogICAgICAgICAgICAgICAgZ2QucHVzaChbdGhpcy5feHN0YXJ0LCBjdXJ5LCB0aGlzLl94d2lkdGgsIGN1cmhlaWdodF0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBnZDsKICAgIH07CiAgICAKCiAgICAvLyBjYWxsZWQgd2l0aGluIHNjb3BlIG9mIHNlcmllcy4KICAgICQuanFwbG90Lk1la2tvUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjdHgsIGdkLCBvcHRpb25zKSB7CiAgICAgICAgdmFyIGk7CiAgICAgICAgdmFyIG9wdHMgPSAob3B0aW9ucyAhPSB1bmRlZmluZWQpID8gb3B0aW9ucyA6IHt9OwogICAgICAgIHZhciBzaG93TGluZSA9IChvcHRzLnNob3dMaW5lICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNob3dMaW5lIDogdGhpcy5zaG93TGluZTsKICAgICAgICB2YXIgY29sb3JHZW5lcmF0b3IgPSBuZXcgJC5qcXBsb3QuQ29sb3JHZW5lcmF0b3IodGhpcy5zZXJpZXNDb2xvcnMpOwogICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgaWYgKGdkLmxlbmd0aCkgewogICAgICAgICAgICBpZiAoc2hvd0xpbmUpIHsKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPGdkLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgICAgICAgICBvcHRzLmZpbGxTdHlsZSA9IGNvbG9yR2VuZXJhdG9yLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZW5kZXJlci5zaG93Qm9yZGVycykgewogICAgICAgICAgICAgICAgICAgICAgICBvcHRzLnN0cm9rZVN0eWxlID0gdGhpcy5yZW5kZXJlci5ib3JkZXJDb2xvcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuc3Ryb2tlU3R5bGUgPSBvcHRzLmZpbGxTdHlsZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmRyYXcoY3R4LCBnZFtpXSwgb3B0cyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgIH07ICAKICAgIAogICAgJC5qcXBsb3QuTWVra29SZW5kZXJlci5wcm90b3R5cGUuZHJhd1NoYWRvdyA9IGZ1bmN0aW9uKGN0eCwgZ2QsIG9wdGlvbnMpIHsKICAgICAgICAvLyBUaGlzIGlzIGEgbm8tb3AsIG5vIHNoYWRvd3Mgb24gbWVra28gY2hhcnRzLgogICAgfTsKICAgIAogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuTWVra29MZWdlbmRSZW5kZXJlcgogICAgICogTGVnZW5kIHJlbmRlcmVyIHVzZWQgYnkgbWVra28gY2hhcnRzIHdpdGggb3B0aW9ucyBmb3IgCiAgICAgKiBjb250cm9sbGluZyBudW1iZXIgb3Igcm93cyBhbmQgY29sdW1ucyBhcyB3ZWxsIGFzIHBsYWNlbWVudAogICAgICogb3V0c2lkZSBvZiBwbG90IGFyZWEuCiAgICAgKiAKICAgICAqLwogICAgJC5qcXBsb3QuTWVra29MZWdlbmRSZW5kZXJlciA9IGZ1bmN0aW9uKCl7CiAgICAgICAgLy8KICAgIH07CiAgICAKICAgICQuanFwbG90Lk1la2tvTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgLy8gcHJvcDogbnVtYmVyUm93cwogICAgICAgIC8vIE1heGltdW0gbnVtYmVyIG9mIHJvd3MgaW4gdGhlIGxlZ2VuZC4gIDAgb3IgbnVsbCBmb3IgdW5saW1pdGVkLgogICAgICAgIHRoaXMubnVtYmVyUm93cyA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogbnVtYmVyQ29sdW1ucwogICAgICAgIC8vIE1heGltdW0gbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGxlZ2VuZC4gIDAgb3IgbnVsbCBmb3IgdW5saW1pdGVkLgogICAgICAgIHRoaXMubnVtYmVyQ29sdW1ucyA9IG51bGw7CiAgICAgICAgLy8gdGhpcyB3aWxsIG92ZXJyaWRlIHRoZSBwbGFjZW1lbnQgb3B0aW9uIG9uIHRoZSBMZWdlbmQgb2JqZWN0CiAgICAgICAgdGhpcy5wbGFjZW1lbnQgPSAib3V0c2lkZSI7CiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBsZWdlbmQKICAgICQuanFwbG90Lk1la2tvTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgbGVnZW5kID0gdGhpczsKICAgICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAgICAgICAgIHZhciBzZXJpZXMgPSB0aGlzLl9zZXJpZXM7CiAgICAgICAgICAgIHZhciBzcyA9ICdwb3NpdGlvbjphYnNvbHV0ZTsnOwogICAgICAgICAgICBzcyArPSAodGhpcy5iYWNrZ3JvdW5kKSA/ICdiYWNrZ3JvdW5kOicrdGhpcy5iYWNrZ3JvdW5kKyc7JyA6ICcnOwogICAgICAgICAgICBzcyArPSAodGhpcy5ib3JkZXIpID8gJ2JvcmRlcjonK3RoaXMuYm9yZGVyKyc7JyA6ICcnOwogICAgICAgICAgICBzcyArPSAodGhpcy5mb250U2l6ZSkgPyAnZm9udC1zaXplOicrdGhpcy5mb250U2l6ZSsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMuZm9udEZhbWlseSkgPyAnZm9udC1mYW1pbHk6Jyt0aGlzLmZvbnRGYW1pbHkrJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLnRleHRDb2xvcikgPyAnY29sb3I6Jyt0aGlzLnRleHRDb2xvcisnOycgOiAnJzsKICAgICAgICAgICAgdGhpcy5fZWxlbSA9ICQoJzx0YWJsZSBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9Iicrc3MrJyI+PC90YWJsZT4nKTsKICAgICAgICAgICAgLy8gTWVra28gY2hhcnRzICBsZWdlbmRzIGRvbid0IGdvIGJ5IG51bWJlciBvZiBzZXJpZXMsIGJ1dCBieSBudW1iZXIgb2YgZGF0YSBwb2ludHMKICAgICAgICAgICAgLy8gaW4gdGhlIHNlcmllcy4gIFJlZmFjdG9yIHRoaW5ncyBoZXJlIGZvciB0aGF0LgogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIHBhZCA9IGZhbHNlLCAKICAgICAgICAgICAgICAgIHJldmVyc2UgPSB0cnVlLCAgICAvLyBtZWtrbyBjaGFydHMgYXJlIGFsd2F5cyBzdGFja2VkLCBzbyByZXZlcnNlCiAgICAgICAgICAgICAgICBuciwgbmM7CiAgICAgICAgICAgIHZhciBzID0gc2VyaWVzWzBdOwogICAgICAgICAgICB2YXIgY29sb3JHZW5lcmF0b3IgPSBuZXcgJC5qcXBsb3QuQ29sb3JHZW5lcmF0b3Iocy5zZXJpZXNDb2xvcnMpOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHMuc2hvdykgewogICAgICAgICAgICAgICAgdmFyIHBkID0gcy5kYXRhOwogICAgICAgICAgICAgICAgaWYgKHRoaXMubnVtYmVyUm93cykgewogICAgICAgICAgICAgICAgICAgIG5yID0gdGhpcy5udW1iZXJSb3dzOwogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5udW1iZXJDb2x1bW5zKXsKICAgICAgICAgICAgICAgICAgICAgICAgbmMgPSBNYXRoLmNlaWwocGQubGVuZ3RoL25yKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgbmMgPSB0aGlzLm51bWJlckNvbHVtbnM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5udW1iZXJDb2x1bW5zKSB7CiAgICAgICAgICAgICAgICAgICAgbmMgPSB0aGlzLm51bWJlckNvbHVtbnM7CiAgICAgICAgICAgICAgICAgICAgbnIgPSBNYXRoLmNlaWwocGQubGVuZ3RoL3RoaXMubnVtYmVyQ29sdW1ucyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBuciA9IHBkLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBuYyA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBpLCBqLCB0ciwgdGQxLCB0ZDIsIGx0LCBycywgY29sb3I7CiAgICAgICAgICAgICAgICB2YXIgaWR4ID0gMDsgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPG5yOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAocmV2ZXJzZSl7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyID0gJCgnPHRyIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIj48L3RyPicpLnByZXBlbmRUbyh0aGlzLl9lbGVtKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgdHIgPSAkKCc8dHIgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiPjwvdHI+JykuYXBwZW5kVG8odGhpcy5fZWxlbSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZvciAoaj0wOyBqPG5jOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA8IHBkLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbHQgPSB0aGlzLmxhYmVsc1tpZHhdIHx8IHBkW2lkeF1bMF0udG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gY29sb3JHZW5lcmF0b3IubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXZlcnNlKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaT4wKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSBuciAtMSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzID0gKHBhZCkgPyB0aGlzLnJvd1NwYWNpbmcgOiAnMCc7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMSA9ICQoJzx0ZCBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3BhZGRpbmctdG9wOicrcnMrJzsiPicrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXY+PGRpdiBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2giIHN0eWxlPSJib3JkZXItY29sb3I6Jytjb2xvcisnOyI+PC9kaXY+JysKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+PC90ZD4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMiA9ICQoJzx0ZCBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9InBhZGRpbmctdG9wOicrcnMrJzsiPjwvdGQ+Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5lc2NhcGVIdG1sKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDIudGV4dChsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDIuaHRtbChsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV2ZXJzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5wcmVwZW5kVG8odHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMS5wcmVwZW5kVG8odHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxLmFwcGVuZFRvKHRyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDIuYXBwZW5kVG8odHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZHgrKzsKICAgICAgICAgICAgICAgICAgICB9ICAgCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdHIgPSBudWxsOwogICAgICAgICAgICAgICAgdGQxID0gbnVsbDsKICAgICAgICAgICAgICAgIHRkMiA9IG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW07CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5NZWtrb0xlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5wYWNrID0gZnVuY3Rpb24ob2Zmc2V0cykgewogICAgICAgIGlmICh0aGlzLnNob3cpIHsKICAgICAgICAgICAgLy8gZmFrZSBhIGdyaWQgZm9yIHBvc2l0aW9uaW5nCiAgICAgICAgICAgIHZhciBncmlkID0ge190b3A6b2Zmc2V0cy50b3AsIF9sZWZ0Om9mZnNldHMubGVmdCwgX3JpZ2h0Om9mZnNldHMucmlnaHQsIF9ib3R0b206dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0IC0gb2Zmc2V0cy5ib3R0b219OyAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLnBsYWNlbWVudCA9PSAnaW5zaWRlR3JpZCcpIHsKICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5sb2NhdGlvbikgewogICAgICAgICAgICAgICAgICAgIGNhc2UgJ253JzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBncmlkLl9sZWZ0ICsgdGhpcy54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQuX3RvcCArIHRoaXMueW9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoJ2xlZnQnLCBhKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoJ3RvcCcsIGIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICduJzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSAob2Zmc2V0cy5sZWZ0ICsgKHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoIC0gb2Zmc2V0cy5yaWdodCkpLzIgLSB0aGlzLmdldFdpZHRoKCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBncmlkLl90b3AgKyB0aGlzLnlvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCdsZWZ0JywgYSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCd0b3AnLCBiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmUnOgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG9mZnNldHMucmlnaHQgKyB0aGlzLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gZ3JpZC5fdG9wICsgdGhpcy55b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6YSwgdG9wOmJ9KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZSc6CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gb2Zmc2V0cy5yaWdodCArIHRoaXMueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSAob2Zmc2V0cy50b3AgKyAodGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0IC0gb2Zmc2V0cy5ib3R0b20pKS8yIC0gdGhpcy5nZXRIZWlnaHQoKS8yOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6YSwgdG9wOmJ9KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2UnOgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG9mZnNldHMucmlnaHQgKyB0aGlzLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gb2Zmc2V0cy5ib3R0b20gKyB0aGlzLnlvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtyaWdodDphLCBib3R0b206Yn0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSAob2Zmc2V0cy5sZWZ0ICsgKHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoIC0gb2Zmc2V0cy5yaWdodCkpLzIgLSB0aGlzLmdldFdpZHRoKCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBvZmZzZXRzLmJvdHRvbSArIHRoaXMueW9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe2xlZnQ6YSwgYm90dG9tOmJ9KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3cnOgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGdyaWQuX2xlZnQgKyB0aGlzLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gb2Zmc2V0cy5ib3R0b20gKyB0aGlzLnlvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtsZWZ0OmEsIGJvdHRvbTpifSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3cnOgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGdyaWQuX2xlZnQgKyB0aGlzLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gKG9mZnNldHMudG9wICsgKHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIG9mZnNldHMuYm90dG9tKSkvMiAtIHRoaXMuZ2V0SGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe2xlZnQ6YSwgdG9wOmJ9KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogIC8vIHNhbWUgYXMgJ3NlJwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGdyaWQuX3JpZ2h0IC0gdGhpcy54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQuX2JvdHRvbSArIHRoaXMueW9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe3JpZ2h0OmEsIGJvdHRvbTpifSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubG9jYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICdudyc6CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBncmlkLl9sZWZ0ICsgdGhpcy54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQuX3RvcCArIHRoaXMueW9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoJ3JpZ2h0JywgYSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCd0b3AnLCBiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbic6CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gKG9mZnNldHMubGVmdCArICh0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIG9mZnNldHMucmlnaHQpKS8yIC0gdGhpcy5nZXRXaWR0aCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0IC0gZ3JpZC5fdG9wICsgdGhpcy55b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcygnbGVmdCcsIGEpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcygnYm90dG9tJywgYik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ25lJzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIG9mZnNldHMucmlnaHQgKyB0aGlzLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gZ3JpZC5fdG9wICsgdGhpcy55b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7bGVmdDphLCB0b3A6Yn0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdlJzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIG9mZnNldHMucmlnaHQgKyB0aGlzLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gKG9mZnNldHMudG9wICsgKHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIG9mZnNldHMuYm90dG9tKSkvMiAtIHRoaXMuZ2V0SGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe2xlZnQ6YSwgdG9wOmJ9KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2UnOgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoIC0gb2Zmc2V0cy5yaWdodCArIHRoaXMueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBvZmZzZXRzLmJvdHRvbSArIHRoaXMueW9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe2xlZnQ6YSwgYm90dG9tOmJ9KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gKG9mZnNldHMubGVmdCArICh0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIG9mZnNldHMucmlnaHQpKS8yIC0gdGhpcy5nZXRXaWR0aCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0IC0gb2Zmc2V0cy5ib3R0b20gKyB0aGlzLnlvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtsZWZ0OmEsIHRvcDpifSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N3JzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIGdyaWQuX2xlZnQgKyB0aGlzLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gb2Zmc2V0cy5ib3R0b20gKyB0aGlzLnlvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtyaWdodDphLCBib3R0b206Yn0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICd3JzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIGdyaWQuX2xlZnQgKyB0aGlzLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gKG9mZnNldHMudG9wICsgKHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIG9mZnNldHMuYm90dG9tKSkvMiAtIHRoaXMuZ2V0SGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe3JpZ2h0OmEsIHRvcDpifSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICAvLyBzYW1lIGFzICdzZScKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBncmlkLl9yaWdodCAtIHRoaXMueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBncmlkLl9ib3R0b20gKyB0aGlzLnlvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtyaWdodDphLCBib3R0b206Yn0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0gCiAgICB9OwogICAgCiAgICAvLyBzZXR1cCBkZWZhdWx0IHJlbmRlcmVycyBmb3IgYXhlcyBhbmQgbGVnZW5kIHNvIHVzZXIgZG9lc24ndCBoYXZlIHRvCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBwbG90CiAgICBmdW5jdGlvbiBwcmVJbml0KHRhcmdldCwgZGF0YSwgb3B0aW9ucykgewogICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogICAgICAgIG9wdGlvbnMuYXhlc0RlZmF1bHRzID0gb3B0aW9ucy5heGVzRGVmYXVsdHMgfHwge307CiAgICAgICAgb3B0aW9ucy5sZWdlbmQgPSBvcHRpb25zLmxlZ2VuZCB8fCB7fTsKICAgICAgICBvcHRpb25zLnNlcmllc0RlZmF1bHRzID0gb3B0aW9ucy5zZXJpZXNEZWZhdWx0cyB8fCB7fTsKICAgICAgICB2YXIgc2V0b3B0cyA9IGZhbHNlOwogICAgICAgIGlmIChvcHRpb25zLnNlcmllc0RlZmF1bHRzLnJlbmRlcmVyID09ICQuanFwbG90Lk1la2tvUmVuZGVyZXIpIHsKICAgICAgICAgICAgc2V0b3B0cyA9IHRydWU7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuc2VyaWVzKSB7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaSA8IG9wdGlvbnMuc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5zZXJpZXNbaV0ucmVuZGVyZXIgPT0gJC5qcXBsb3QuTWVra29SZW5kZXJlcikgewogICAgICAgICAgICAgICAgICAgIHNldG9wdHMgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChzZXRvcHRzKSB7CiAgICAgICAgICAgIG9wdGlvbnMuYXhlc0RlZmF1bHRzLnJlbmRlcmVyID0gJC5qcXBsb3QuTWVra29BeGlzUmVuZGVyZXI7CiAgICAgICAgICAgIG9wdGlvbnMubGVnZW5kLnJlbmRlcmVyID0gJC5qcXBsb3QuTWVra29MZWdlbmRSZW5kZXJlcjsKICAgICAgICAgICAgb3B0aW9ucy5sZWdlbmQucHJlRHJhdyA9IHRydWU7CiAgICAgICAgfQogICAgfQogICAgCiAgICAkLmpxcGxvdC5wcmVJbml0SG9va3MucHVzaChwcmVJbml0KTsKICAgIAp9KShqUXVlcnkpOyAgICAK]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.mekkoRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGIpe2IuanFwbG90Lk1la2tvUmVuZGVyZXI9ZnVuY3Rpb24oKXt0aGlzLnNoYXBlUmVuZGVyZXI9bmV3IGIuanFwbG90LlNoYXBlUmVuZGVyZXIoKTt0aGlzLmJvcmRlckNvbG9yPW51bGw7dGhpcy5zaG93Qm9yZGVycz10cnVlfTtiLmpxcGxvdC5NZWtrb1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGMsZSl7dGhpcy5maWxsPWZhbHNlO3RoaXMuZmlsbFJlY3Q9dHJ1ZTt0aGlzLnN0cm9rZVJlY3Q9dHJ1ZTt0aGlzLnNoYWRvdz1mYWxzZTt0aGlzLl94d2lkdGg9MDt0aGlzLl94c3RhcnQ9MDtiLmV4dGVuZCh0cnVlLHRoaXMucmVuZGVyZXIsYyk7dmFyIGQ9e2xpbmVKb2luOiJtaXRlciIsbGluZUNhcDoiYnV0dCIsaXNhcmM6ZmFsc2UsZmlsbFJlY3Q6dGhpcy5maWxsUmVjdCxzdHJva2VSZWN0OnRoaXMuc3Ryb2tlUmVjdH07dGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmluaXQoZCk7ZS5heGVzLngyYXhpcy5fc2VyaWVzLnB1c2godGhpcyk7dGhpcy5fdHlwZT0ibWVra28ifTtiLmpxcGxvdC5NZWtrb1JlbmRlcmVyLnByb3RvdHlwZS5zZXRHcmlkRGF0YT1mdW5jdGlvbihoKXt2YXIgZT10aGlzLl94YXhpcy5zZXJpZXNfdTJwO3ZhciBjPXRoaXMuX3lheGlzLnNlcmllc191MnA7dmFyIGc9dGhpcy5fcGxvdERhdGE7dGhpcy5ncmlkRGF0YT1bXTt0aGlzLl94d2lkdGg9ZSh0aGlzLl9zdW15KS1lKDApO2lmKHRoaXMuaW5kZXg+MCl7dGhpcy5feHN0YXJ0PWguc2VyaWVzW3RoaXMuaW5kZXgtMV0uX3hzdGFydCtoLnNlcmllc1t0aGlzLmluZGV4LTFdLl94d2lkdGh9dmFyIGw9dGhpcy5jYW52YXMuZ2V0SGVpZ2h0KCk7dmFyIGQ9MDt2YXIgazt2YXIgajtmb3IodmFyIGY9MDtmPGcubGVuZ3RoO2YrKyl7aWYoZ1tmXSE9bnVsbCl7ZCs9Z1tmXVsxXTtrPWwtKGQvdGhpcy5fc3VteSpsKTtqPWdbZl1bMV0vdGhpcy5fc3VteSpsO3RoaXMuZ3JpZERhdGEucHVzaChbdGhpcy5feHN0YXJ0LGssdGhpcy5feHdpZHRoLGpdKX19fTtiLmpxcGxvdC5NZWtrb1JlbmRlcmVyLnByb3RvdHlwZS5tYWtlR3JpZERhdGE9ZnVuY3Rpb24oZixnKXt2YXIgZD10aGlzLl94YXhpcy5zZXJpZXNfdTJwO3ZhciBsPXRoaXMuY2FudmFzLmdldEhlaWdodCgpO3ZhciBjPTA7dmFyIGo7dmFyIGg7dmFyIGs9W107Zm9yKHZhciBlPTA7ZTxmLmxlbmd0aDtlKyspe2lmKGZbZV0hPW51bGwpe2MrPWZbZV1bMV07aj1sLShjL3RoaXMuX3N1bXkqbCk7aD1mW2VdWzFdL3RoaXMuX3N1bXkqbDtrLnB1c2goW3RoaXMuX3hzdGFydCxqLHRoaXMuX3h3aWR0aCxoXSl9fXJldHVybiBrfTtiLmpxcGxvdC5NZWtrb1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKGMsaCxkKXt2YXIgZTt2YXIgZz0oZCE9dW5kZWZpbmVkKT9kOnt9O3ZhciBmPShnLnNob3dMaW5lIT11bmRlZmluZWQpP2cuc2hvd0xpbmU6dGhpcy5zaG93TGluZTt2YXIgaj1uZXcgYi5qcXBsb3QuQ29sb3JHZW5lcmF0b3IodGhpcy5zZXJpZXNDb2xvcnMpO2Muc2F2ZSgpO2lmKGgubGVuZ3RoKXtpZihmKXtmb3IoZT0wO2U8aC5sZW5ndGg7ZSsrKXtnLmZpbGxTdHlsZT1qLm5leHQoKTtpZih0aGlzLnJlbmRlcmVyLnNob3dCb3JkZXJzKXtnLnN0cm9rZVN0eWxlPXRoaXMucmVuZGVyZXIuYm9yZGVyQ29sb3J9ZWxzZXtnLnN0cm9rZVN0eWxlPWcuZmlsbFN0eWxlfXRoaXMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5kcmF3KGMsaFtlXSxnKX19fWMucmVzdG9yZSgpfTtiLmpxcGxvdC5NZWtrb1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3U2hhZG93PWZ1bmN0aW9uKGMsZSxkKXt9O2IuanFwbG90Lk1la2tvTGVnZW5kUmVuZGVyZXI9ZnVuY3Rpb24oKXt9O2IuanFwbG90Lk1la2tvTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oYyl7dGhpcy5udW1iZXJSb3dzPW51bGw7dGhpcy5udW1iZXJDb2x1bW5zPW51bGw7dGhpcy5wbGFjZW1lbnQ9Im91dHNpZGUiO2IuZXh0ZW5kKHRydWUsdGhpcyxjKX07Yi5qcXBsb3QuTWVra29MZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbigpe3ZhciBmPXRoaXM7aWYodGhpcy5zaG93KXt2YXIgbz10aGlzLl9zZXJpZXM7dmFyIHI9InBvc2l0aW9uOmFic29sdXRlOyI7cis9KHRoaXMuYmFja2dyb3VuZCk/ImJhY2tncm91bmQ6Iit0aGlzLmJhY2tncm91bmQrIjsiOiIiO3IrPSh0aGlzLmJvcmRlcik/ImJvcmRlcjoiK3RoaXMuYm9yZGVyKyI7IjoiIjtyKz0odGhpcy5mb250U2l6ZSk/ImZvbnQtc2l6ZToiK3RoaXMuZm9udFNpemUrIjsiOiIiO3IrPSh0aGlzLmZvbnRGYW1pbHkpPyJmb250LWZhbWlseToiK3RoaXMuZm9udEZhbWlseSsiOyI6IiI7cis9KHRoaXMudGV4dENvbG9yKT8iY29sb3I6Iit0aGlzLnRleHRDb2xvcisiOyI6IiI7dGhpcy5fZWxlbT1iKCc8dGFibGUgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSInK3IrJyI+PC90YWJsZT4nKTt2YXIgdz1mYWxzZSxuPXRydWUsYyxsO3ZhciBwPW9bMF07dmFyIGQ9bmV3IGIuanFwbG90LkNvbG9yR2VuZXJhdG9yKHAuc2VyaWVzQ29sb3JzKTtpZihwLnNob3cpe3ZhciB4PXAuZGF0YTtpZih0aGlzLm51bWJlclJvd3Mpe2M9dGhpcy5udW1iZXJSb3dzO2lmKCF0aGlzLm51bWJlckNvbHVtbnMpe2w9TWF0aC5jZWlsKHgubGVuZ3RoL2MpfWVsc2V7bD10aGlzLm51bWJlckNvbHVtbnN9fWVsc2V7aWYodGhpcy5udW1iZXJDb2x1bW5zKXtsPXRoaXMubnVtYmVyQ29sdW1ucztjPU1hdGguY2VpbCh4Lmxlbmd0aC90aGlzLm51bWJlckNvbHVtbnMpfWVsc2V7Yz14Lmxlbmd0aDtsPTF9fXZhciB2LHUsZSxoLGcsayxtLHQ7dmFyIHE9MDtmb3Iodj0wO3Y8Yzt2Kyspe2lmKG4pe2U9YignPHRyIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIj48L3RyPicpLnByZXBlbmRUbyh0aGlzLl9lbGVtKX1lbHNle2U9YignPHRyIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIj48L3RyPicpLmFwcGVuZFRvKHRoaXMuX2VsZW0pfWZvcih1PTA7dTxsO3UrKyl7aWYocTx4Lmxlbmd0aCl7az10aGlzLmxhYmVsc1txXXx8eFtxXVswXS50b1N0cmluZygpO3Q9ZC5uZXh0KCk7aWYoIW4pe2lmKHY+MCl7dz10cnVlfWVsc2V7dz1mYWxzZX19ZWxzZXtpZih2PT1jLTEpe3c9ZmFsc2V9ZWxzZXt3PXRydWV9fW09KHcpP3RoaXMucm93U3BhY2luZzoiMCI7aD1iKCc8dGQgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nLXRvcDonK20rJzsiPjxkaXY+PGRpdiBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2giIHN0eWxlPSJib3JkZXItY29sb3I6Jyt0Kyc7Ij48L2Rpdj48L2Rpdj48L3RkPicpO2c9YignPHRkIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIiBzdHlsZT0icGFkZGluZy10b3A6JyttKyc7Ij48L3RkPicpO2lmKHRoaXMuZXNjYXBlSHRtbCl7Zy50ZXh0KGspfWVsc2V7Zy5odG1sKGspfWlmKG4pe2cucHJlcGVuZFRvKGUpO2gucHJlcGVuZFRvKGUpfWVsc2V7aC5hcHBlbmRUbyhlKTtnLmFwcGVuZFRvKGUpfXc9dHJ1ZX1xKyt9fWU9bnVsbDtoPW51bGw7Zz1udWxsfX1yZXR1cm4gdGhpcy5fZWxlbX07Yi5qcXBsb3QuTWVra29MZWdlbmRSZW5kZXJlci5wcm90b3R5cGUucGFjaz1mdW5jdGlvbihmKXtpZih0aGlzLnNob3cpe3ZhciBlPXtfdG9wOmYudG9wLF9sZWZ0OmYubGVmdCxfcmlnaHQ6Zi5yaWdodCxfYm90dG9tOnRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodC1mLmJvdHRvbX07aWYodGhpcy5wbGFjZW1lbnQ9PSJpbnNpZGVHcmlkIil7c3dpdGNoKHRoaXMubG9jYXRpb24pe2Nhc2UibnciOnZhciBkPWUuX2xlZnQrdGhpcy54b2Zmc2V0O3ZhciBjPWUuX3RvcCt0aGlzLnlvZmZzZXQ7dGhpcy5fZWxlbS5jc3MoImxlZnQiLGQpO3RoaXMuX2VsZW0uY3NzKCJ0b3AiLGMpO2JyZWFrO2Nhc2UibiI6dmFyIGQ9KGYubGVmdCsodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgtZi5yaWdodCkpLzItdGhpcy5nZXRXaWR0aCgpLzI7dmFyIGM9ZS5fdG9wK3RoaXMueW9mZnNldDt0aGlzLl9lbGVtLmNzcygibGVmdCIsZCk7dGhpcy5fZWxlbS5jc3MoInRvcCIsYyk7YnJlYWs7Y2FzZSJuZSI6dmFyIGQ9Zi5yaWdodCt0aGlzLnhvZmZzZXQ7dmFyIGM9ZS5fdG9wK3RoaXMueW9mZnNldDt0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6ZCx0b3A6Y30pO2JyZWFrO2Nhc2UiZSI6dmFyIGQ9Zi5yaWdodCt0aGlzLnhvZmZzZXQ7dmFyIGM9KGYudG9wKyh0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQtZi5ib3R0b20pKS8yLXRoaXMuZ2V0SGVpZ2h0KCkvMjt0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6ZCx0b3A6Y30pO2JyZWFrO2Nhc2Uic2UiOnZhciBkPWYucmlnaHQrdGhpcy54b2Zmc2V0O3ZhciBjPWYuYm90dG9tK3RoaXMueW9mZnNldDt0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6ZCxib3R0b206Y30pO2JyZWFrO2Nhc2UicyI6dmFyIGQ9KGYubGVmdCsodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgtZi5yaWdodCkpLzItdGhpcy5nZXRXaWR0aCgpLzI7dmFyIGM9Zi5ib3R0b20rdGhpcy55b2Zmc2V0O3RoaXMuX2VsZW0uY3NzKHtsZWZ0OmQsYm90dG9tOmN9KTticmVhaztjYXNlInN3Ijp2YXIgZD1lLl9sZWZ0K3RoaXMueG9mZnNldDt2YXIgYz1mLmJvdHRvbSt0aGlzLnlvZmZzZXQ7dGhpcy5fZWxlbS5jc3Moe2xlZnQ6ZCxib3R0b206Y30pO2JyZWFrO2Nhc2UidyI6dmFyIGQ9ZS5fbGVmdCt0aGlzLnhvZmZzZXQ7dmFyIGM9KGYudG9wKyh0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQtZi5ib3R0b20pKS8yLXRoaXMuZ2V0SGVpZ2h0KCkvMjt0aGlzLl9lbGVtLmNzcyh7bGVmdDpkLHRvcDpjfSk7YnJlYWs7ZGVmYXVsdDp2YXIgZD1lLl9yaWdodC10aGlzLnhvZmZzZXQ7dmFyIGM9ZS5fYm90dG9tK3RoaXMueW9mZnNldDt0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6ZCxib3R0b206Y30pO2JyZWFrfX1lbHNle3N3aXRjaCh0aGlzLmxvY2F0aW9uKXtjYXNlIm53Ijp2YXIgZD10aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC1lLl9sZWZ0K3RoaXMueG9mZnNldDt2YXIgYz1lLl90b3ArdGhpcy55b2Zmc2V0O3RoaXMuX2VsZW0uY3NzKCJyaWdodCIsZCk7dGhpcy5fZWxlbS5jc3MoInRvcCIsYyk7YnJlYWs7Y2FzZSJuIjp2YXIgZD0oZi5sZWZ0Kyh0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC1mLnJpZ2h0KSkvMi10aGlzLmdldFdpZHRoKCkvMjt2YXIgYz10aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQtZS5fdG9wK3RoaXMueW9mZnNldDt0aGlzLl9lbGVtLmNzcygibGVmdCIsZCk7dGhpcy5fZWxlbS5jc3MoImJvdHRvbSIsYyk7YnJlYWs7Y2FzZSJuZSI6dmFyIGQ9dGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgtZi5yaWdodCt0aGlzLnhvZmZzZXQ7dmFyIGM9ZS5fdG9wK3RoaXMueW9mZnNldDt0aGlzLl9lbGVtLmNzcyh7bGVmdDpkLHRvcDpjfSk7YnJlYWs7Y2FzZSJlIjp2YXIgZD10aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC1mLnJpZ2h0K3RoaXMueG9mZnNldDt2YXIgYz0oZi50b3ArKHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodC1mLmJvdHRvbSkpLzItdGhpcy5nZXRIZWlnaHQoKS8yO3RoaXMuX2VsZW0uY3NzKHtsZWZ0OmQsdG9wOmN9KTticmVhaztjYXNlInNlIjp2YXIgZD10aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC1mLnJpZ2h0K3RoaXMueG9mZnNldDt2YXIgYz1mLmJvdHRvbSt0aGlzLnlvZmZzZXQ7dGhpcy5fZWxlbS5jc3Moe2xlZnQ6ZCxib3R0b206Y30pO2JyZWFrO2Nhc2UicyI6dmFyIGQ9KGYubGVmdCsodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgtZi5yaWdodCkpLzItdGhpcy5nZXRXaWR0aCgpLzI7dmFyIGM9dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0LWYuYm90dG9tK3RoaXMueW9mZnNldDt0aGlzLl9lbGVtLmNzcyh7bGVmdDpkLHRvcDpjfSk7YnJlYWs7Y2FzZSJzdyI6dmFyIGQ9dGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgtZS5fbGVmdCt0aGlzLnhvZmZzZXQ7dmFyIGM9Zi5ib3R0b20rdGhpcy55b2Zmc2V0O3RoaXMuX2VsZW0uY3NzKHtyaWdodDpkLGJvdHRvbTpjfSk7YnJlYWs7Y2FzZSJ3Ijp2YXIgZD10aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC1lLl9sZWZ0K3RoaXMueG9mZnNldDt2YXIgYz0oZi50b3ArKHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodC1mLmJvdHRvbSkpLzItdGhpcy5nZXRIZWlnaHQoKS8yO3RoaXMuX2VsZW0uY3NzKHtyaWdodDpkLHRvcDpjfSk7YnJlYWs7ZGVmYXVsdDp2YXIgZD1lLl9yaWdodC10aGlzLnhvZmZzZXQ7dmFyIGM9ZS5fYm90dG9tK3RoaXMueW9mZnNldDt0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6ZCxib3R0b206Y30pO2JyZWFrfX19fTtmdW5jdGlvbiBhKGcsZixkKXtkPWR8fHt9O2QuYXhlc0RlZmF1bHRzPWQuYXhlc0RlZmF1bHRzfHx7fTtkLmxlZ2VuZD1kLmxlZ2VuZHx8e307ZC5zZXJpZXNEZWZhdWx0cz1kLnNlcmllc0RlZmF1bHRzfHx7fTt2YXIgYz1mYWxzZTtpZihkLnNlcmllc0RlZmF1bHRzLnJlbmRlcmVyPT1iLmpxcGxvdC5NZWtrb1JlbmRlcmVyKXtjPXRydWV9ZWxzZXtpZihkLnNlcmllcyl7Zm9yKHZhciBlPTA7ZTxkLnNlcmllcy5sZW5ndGg7ZSsrKXtpZihkLnNlcmllc1tlXS5yZW5kZXJlcj09Yi5qcXBsb3QuTWVra29SZW5kZXJlcil7Yz10cnVlfX19fWlmKGMpe2QuYXhlc0RlZmF1bHRzLnJlbmRlcmVyPWIuanFwbG90Lk1la2tvQXhpc1JlbmRlcmVyO2QubGVnZW5kLnJlbmRlcmVyPWIuanFwbG90Lk1la2tvTGVnZW5kUmVuZGVyZXI7ZC5sZWdlbmQucHJlRHJhdz10cnVlfX1iLmpxcGxvdC5wcmVJbml0SG9va3MucHVzaChhKX0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.meterGaugeRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuTWV0ZXJHYXVnZVJlbmRlcmVyCiAgICAgKiBQbHVnaW4gcmVuZGVyZXIgdG8gZHJhdyBhIG1ldGVyIGdhdWdlIGNoYXJ0LgogICAgICogCiAgICAgKiBEYXRhIGNvbnNpc3RzIG9mIGEgc2luZ2xlIHNlcmllcyB3aXRoIDEgZGF0YSBwb2ludCB0byBwb3NpdGlvbiB0aGUgZ2F1Z2UgbmVlZGxlLgogICAgICogCiAgICAgKiBUbyB1c2UgdGhpcyByZW5kZXJlciwgeW91IG5lZWQgdG8gaW5jbHVkZSB0aGUgCiAgICAgKiBtZXRlciBnYXVnZSByZW5kZXJlciBwbHVnaW4sIGZvciBleGFtcGxlOgogICAgICogCiAgICAgKiA+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InBsdWdpbnMvanFwbG90Lm1ldGVyR2F1Z2VSZW5kZXJlci5qcyI+PC9zY3JpcHQ+CiAgICAgKiAKICAgICAqIFByb3BlcnRpZXMgZGVzY3JpYmVkIGhlcmUgYXJlIHBhc3NlZCBpbnRvIHRoZSAkLmpxcGxvdCBmdW5jdGlvbgogICAgICogYXMgb3B0aW9ucyBvbiB0aGUgc2VyaWVzIHJlbmRlcmVyLiAgRm9yIGV4YW1wbGU6CiAgICAgKiAKICAgICAqID4gcGxvdDAgPSAkLmpxcGxvdCgnY2hhcnQwJyxbWzE4XV0sewogICAgICogPiAgICAgdGl0bGU6ICdOZXR3b3JrIFNwZWVkJywKICAgICAqID4gICAgIHNlcmllc0RlZmF1bHRzOiB7CiAgICAgKiA+ICAgICAgICAgcmVuZGVyZXI6ICQuanFwbG90Lk1ldGVyR2F1Z2VSZW5kZXJlciwKICAgICAqID4gICAgICAgICByZW5kZXJlck9wdGlvbnM6IHsKICAgICAqID4gICAgICAgICAgICAgbGFiZWw6ICdNQi9zJwogICAgICogPiAgICAgICAgIH0KICAgICAqID4gICAgIH0KICAgICAqID4gfSk7CiAgICAgKiAKICAgICAqIEEgbWV0ZXJHYXVnZSBwbG90IGRvZXMgbm90IHN1cHBvcnQgZXZlbnRzLgogICAgICovCiAgICAkLmpxcGxvdC5NZXRlckdhdWdlUmVuZGVyZXIgPSBmdW5jdGlvbigpewogICAgICAgICQuanFwbG90LkxpbmVSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuTWV0ZXJHYXVnZVJlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTsKICAgICQuanFwbG90Lk1ldGVyR2F1Z2VSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5NZXRlckdhdWdlUmVuZGVyZXI7CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIGEgc2VyaWVzCiAgICAkLmpxcGxvdC5NZXRlckdhdWdlUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAvLwogICAgICAgIC8vIHByb3A6IGRpYW1ldGVyCiAgICAgICAgLy8gT3V0ZXIgZGlhbWV0ZXIgb2YgdGhlIG1ldGVyR2F1Z2UsIGF1dG8gY29tcHV0ZWQgYnkgZGVmYXVsdAogICAgICAgIHRoaXMuZGlhbWV0ZXIgPSBudWxsOwogICAgICAgIC8vIHByb3A6IHBhZGRpbmcKICAgICAgICAvLyBwYWRkaW5nIGJldHdlZW4gdGhlIG1ldGVyR2F1Z2UgYW5kIHBsb3QgZWRnZXMsIGF1dG8KICAgICAgICAvLyBjYWxjdWxhdGVkIGJ5IGRlZmF1bHQuCiAgICAgICAgdGhpcy5wYWRkaW5nID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBzaGFkb3dPZmZzZXQKICAgICAgICAvLyBvZmZzZXQgb2YgdGhlIHNoYWRvdyBmcm9tIHRoZSBnYXVnZSByaW5nIGFuZCBvZmZzZXQgb2YgCiAgICAgICAgLy8gZWFjaCBzdWNjZXNpdmUgc3Ryb2tlIG9mIHRoZSBzaGFkb3cgZnJvbSB0aGUgbGFzdC4KICAgICAgICB0aGlzLnNoYWRvd09mZnNldCA9IDI7CiAgICAgICAgLy8gcHJvcDogc2hhZG93QWxwaGEKICAgICAgICAvLyB0cmFuc3BhcmVuY3kgb2YgdGhlIHNoYWRvdyAoMCA9IHRyYW5zcGFyZW50LCAxID0gb3BhcXVlKQogICAgICAgIHRoaXMuc2hhZG93QWxwaGEgPSAwLjA3OwogICAgICAgIC8vIHByb3A6IHNoYWRvd0RlcHRoCiAgICAgICAgLy8gbnVtYmVyIG9mIHN0cm9rZXMgdG8gYXBwbHkgdG8gdGhlIHNoYWRvdywgCiAgICAgICAgLy8gZWFjaCBzdHJva2Ugb2Zmc2V0IHNoYWRvd09mZnNldCBmcm9tIHRoZSBsYXN0LgogICAgICAgIHRoaXMuc2hhZG93RGVwdGggPSA0OwogICAgICAgIC8vIHByb3A6IGJhY2tncm91bmQKICAgICAgICAvLyBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBpbnNpZGUgb2YgdGhlIGdhdWdlLgogICAgICAgIHRoaXMuYmFja2dyb3VuZCA9ICIjZWZlZmVmIjsKICAgICAgICAvLyBwcm9wOiByaW5nQ29sb3IKICAgICAgICAvLyBjb2xvciBvZiB0aGUgb3V0ZXIgcmluZywgaHViLCBhbmQgbmVlZGxlIG9mIHRoZSBnYXVnZS4KICAgICAgICB0aGlzLnJpbmdDb2xvciA9ICIjQkJDNkQwIjsKICAgICAgICAvLyBuZWVkbGUgY29sb3Igbm90IGltcGxlbWVudGVkIHlldC4KICAgICAgICB0aGlzLm5lZWRsZUNvbG9yID0gIiNDM0QzRTUiOwogICAgICAgIC8vIHByb3A6IHRpY2tDb2xvcgogICAgICAgIC8vIGNvbG9yIG9mIHRoZSB0aWNrIG1hcmtzIGFyb3VuZCB0aGUgZ2F1Z2UuCiAgICAgICAgdGhpcy50aWNrQ29sb3IgPSAiIzk4OTg5OCI7CiAgICAgICAgLy8gcHJvcDogcmluZ1dpZHRoCiAgICAgICAgLy8gd2lkdGggb2YgdGhlIHJpbmcgYXJvdW5kIHRoZSBnYXVnZS4gIEF1dG8gY29tcHV0ZWQgYnkgZGVmYXVsdC4KICAgICAgICB0aGlzLnJpbmdXaWR0aCA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogbWluCiAgICAgICAgLy8gTWluaW11bSB2YWx1ZSBvbiB0aGUgZ2F1Z2UuICBBdXRvIGNvbXB1dGVkIGJ5IGRlZmF1bHQKICAgICAgICB0aGlzLm1pbjsKICAgICAgICAvLyBwcm9wOiBtYXgKICAgICAgICAvLyBNYXhpbXVtIHZhbHVlIG9uIHRoZSBnYXVnZS4gQXV0byBjb21wdXRlZCBieSBkZWZhdWx0CiAgICAgICAgdGhpcy5tYXg7CiAgICAgICAgLy8gcHJvcDogdGlja3MKICAgICAgICAvLyBBcnJheSBvZiB0aWNrIHZhbHVlcy4gQXV0byBjb21wdXRlZCBieSBkZWZhdWx0LgogICAgICAgIHRoaXMudGlja3MgPSBbXTsKICAgICAgICAvLyBwcm9wOiBzaG93VGlja3MKICAgICAgICAvLyB0cnVlIHRvIHNob3cgdGlja3MgYXJvdW5kIGdhdWdlLgogICAgICAgIHRoaXMuc2hvd1RpY2tzID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBzaG93VGlja0xhYmVscwogICAgICAgIC8vIHRydWUgdG8gc2hvdyB0aWNrIGxhYmVscyBuZXh0IHRvIHRpY2tzLgogICAgICAgIHRoaXMuc2hvd1RpY2tMYWJlbHMgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IGxhYmVsCiAgICAgICAgLy8gQSBnYXVnZSBsYWJlbCBsaWtlICdrcGgnIG9yICdWb2x0cycKICAgICAgICB0aGlzLmxhYmVsID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBsYWJlbEhlaWdodEFkanVzdAogICAgICAgIC8vIE51bWJlciBvZiBQaXhlbHMgdG8gb2Zmc2V0IHRoZSBsYWJlbCB1cCAoLSkgb3IgZG93biAoKykgZnJvbSBpdHMgZGVmYXVsdCBwb3NpdGlvbi4KICAgICAgICB0aGlzLmxhYmVsSGVpZ2h0QWRqdXN0ID0gMDsKICAgICAgICAvLyBwcm9wOiBsYWJlbFBvc2l0aW9uCiAgICAgICAgLy8gV2hlcmUgdG8gcG9zaXRpb24gdGhlIGxhYmVsLCBlaXRoZXIgJ2luc2lkZScgb3IgJ2JvdHRvbScuCiAgICAgICAgdGhpcy5sYWJlbFBvc2l0aW9uID0gJ2luc2lkZSc7CiAgICAgICAgLy8gcHJvcDogaW50ZXJ2YWxzCiAgICAgICAgLy8gQXJyYXkgb2YgcmFuZ2VzIHRvIGJlIGRyYXduIGFyb3VuZCB0aGUgZ2F1Z2UuCiAgICAgICAgLy8gQXJyYXkgb2YgZm9ybToKICAgICAgICAvLyA+IFt2YWx1ZTEsIHZhbHVlMiwgLi4uXQogICAgICAgIC8vIGluZGljYXRpbmcgdGhlIHZhbHVlcyBmb3IgdGhlIGZpcnN0LCBzZWNvbmQsIC4uLiBpbnRlcnZhbHMuCiAgICAgICAgdGhpcy5pbnRlcnZhbHMgPSBbXTsKICAgICAgICAvLyBwcm9wOiBpbnRlcnZhbENvbG9ycwogICAgICAgIC8vIEFycmF5IG9mIGNvbG9ycyB0byB1c2UgZm9yIHRoZSBpbnRlcnZhbHMuCiAgICAgICAgdGhpcy5pbnRlcnZhbENvbG9ycyA9IFsgIiM0YmIyYzUiLCAiI0VBQTIyOCIsICIjYzViNDdmIiwgIiM1Nzk1NzUiLCAiIzgzOTU1NyIsICIjOTU4YzEyIiwgIiM5NTM1NzkiLCAiIzRiNWRlNCIsICIjZDhiODNmIiwgIiNmZjU4MDAiLCAiIzAwODVjYyIsICIjYzc0N2EzIiwgIiNjZGRmNTQiLCAiI0ZCRDE3OCIsICIjMjZCNEUzIiwgIiNiZDcwYzciXTsKICAgICAgICAvLyBwcm9wOiBpbnRlcnZhbElubmVyUmFkaXVzCiAgICAgICAgLy8gUmFkaXVzIG9mIHRoZSBpbm5lciBjaXJjbGUgb2YgdGhlIGludGVydmFsIHJpbmcuCiAgICAgICAgdGhpcy5pbnRlcnZhbElubmVyUmFkaXVzID0gIG51bGw7CiAgICAgICAgLy8gcHJvcDogaW50ZXJ2YWxPdXRlclJhZGl1cwogICAgICAgIC8vIFJhZGl1cyBvZiB0aGUgb3V0ZXIgY2lyY2xlIG9mIHRoZSBpbnRlcnZhbCByaW5nLgogICAgICAgIHRoaXMuaW50ZXJ2YWxPdXRlclJhZGl1cyA9IG51bGw7CiAgICAgICAgdGhpcy50aWNrUmVuZGVyZXIgPSAkLmpxcGxvdC5NZXRlckdhdWdlVGlja1JlbmRlcmVyOwogICAgICAgIC8vIHRpY2tzIHNwYWNlZCBldmVyeSAxLCAyLCAyLjUsIDUsIDEwLCAyMCwgLjEsIC4yLCAuMjUsIC41LCBldGMuCiAgICAgICAgdGhpcy50aWNrUG9zaXRpb25zID0gWzEsIDIsIDIuNSwgNSwgMTBdOwogICAgICAgIC8vIHByb3A6IHRpY2tTcGFjaW5nCiAgICAgICAgLy8gRGVncmVlcyBiZXR3ZWVuIHRpY2tzLiAgVGhpcyBpcyBhIHRhcmdldCBudW1iZXIsIGlmIAogICAgICAgIC8vIGluY29tcGF0aWJsZSBzcGFuIGFuZCB0aWNrcyBhcmUgc3VwcGxpZWQsIGEgc3VpdGFibGUKICAgICAgICAvLyBzcGFjaW5nIGNsb3NlIHRvIHRoaXMgdmFsdWUgd2lsbCBiZSBjb21wdXRlZC4KICAgICAgICB0aGlzLnRpY2tTcGFjaW5nID0gMzA7CiAgICAgICAgdGhpcy5udW1iZXJNaW5vclRpY2tzID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBodWJSYWRpdXMKICAgICAgICAvLyBSYWRpdXMgb2YgdGhlIGh1YiBhdCB0aGUgYm90dG9tIGNlbnRlciBvZiBnYXVnZSB3aGljaCB0aGUgbmVlZGxlIGF0dGFjaGVzIHRvLgogICAgICAgIC8vIEF1dG8gY29tcHV0ZWQgYnkgZGVmYXVsdAogICAgICAgIHRoaXMuaHViUmFkaXVzID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiB0aWNrUGFkZGluZwogICAgICAgIC8vIHBhZGRpbmcgb2YgdGhlIHRpY2sgbWFya3MgdG8gdGhlIG91dGVyIHJpbmcgYW5kIHRoZSB0aWNrIGxhYmVscyB0byBtYXJrcy4KICAgICAgICAvLyBBdXRvIGNvbXB1dGVkIGJ5IGRlZmF1bHQuCiAgICAgICAgdGhpcy50aWNrUGFkZGluZyA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogbmVlZGxlVGhpY2tuZXNzCiAgICAgICAgLy8gTWF4aW11bSB0aGlja25lc3MgdGhlIG5lZWRsZS4gIEF1dG8gY29tcHV0ZWQgYnkgZGVmYXVsdC4KICAgICAgICB0aGlzLm5lZWRsZVRoaWNrbmVzcyA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogbmVlZGxlUGFkCiAgICAgICAgLy8gUGFkZGluZyBiZXR3ZWVuIG5lZWRsZSBhbmQgaW5uZXIgZWRnZSBvZiB0aGUgcmluZyB3aGVuIHRoZSBuZWVkbGUgaXMgYXQgdGhlIG1pbiBvciBtYXggZ2F1Z2UgdmFsdWUuCiAgICAgICAgdGhpcy5uZWVkbGVQYWQgPSA2OwogICAgICAgIC8vIHByb3A6IHBlZ05lZWRsZQogICAgICAgIC8vIFRydWUgd2lsbCBzdG9wIG5lZWRsZSBqdXN0IGJlbG93L2Fib3ZlIHRoZSAgbWluL21heCB2YWx1ZXMgaWYgZGF0YSBpcyBiZWxvdy9hYm92ZSBtaW4vbWF4LAogICAgICAgIC8vIGFzIGlmIHRoZSBtZXRlciBpcyAicGVnZ2VkIi4KICAgICAgICB0aGlzLnBlZ05lZWRsZSA9IHRydWU7CiAgICAgICAgdGhpcy5fdHlwZSA9ICdtZXRlckdhdWdlJzsKICAgICAgICAKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgICAgICB0aGlzLnR5cGUgPSBudWxsOwogICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSBudWxsOwogICAgICAgIHRoaXMudGlja0ludGVydmFsID0gbnVsbDsKICAgICAgICAvLyBzcGFuLCB0aGUgc3dlZXAgKGluIGRlZ3JlZXMpIGZyb20gbWluIHRvIG1heC4gIFRoaXMgZ2F1Z2UgaXMgCiAgICAgICAgLy8gYSBzZW1pLWNpcmNsZS4KICAgICAgICB0aGlzLnNwYW4gPSAxODA7CiAgICAgICAgLy8gZ2V0IHJpZCBvZiB0aGlzIG5vbnNlbnNlCiAgICAgICAgLy8gdGhpcy5pbm5lclNwYW4gPSB0aGlzLnNwYW47CiAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAnY2lyY3VsYXInKSB7CiAgICAgICAgICAgIHRoaXMuc2VtaUNpcmN1bGFyID0gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHRoaXMudHlwZSAhPSAnY2lyY3VsYXInKSB7CiAgICAgICAgICAgIHRoaXMuc2VtaUNpcmN1bGFyID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHRoaXMuc2VtaUNpcmN1bGFyID0gKHRoaXMuc3BhbiA8PSAxODApID8gdHJ1ZSA6IGZhbHNlOwogICAgICAgIH0KICAgICAgICB0aGlzLl90aWNrUG9pbnRzID0gW107CiAgICAgICAgLy8gcmVmZXJlbmNlIHRvIGxhYmVsIGVsZW1lbnQuCiAgICAgICAgdGhpcy5fbGFiZWxFbGVtID0gbnVsbDsKICAgICAgICAKICAgICAgICAvLyBzdGFydCB0aGUgZ2F1Z2UgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3BhbgogICAgICAgIHRoaXMuc3RhcnRBbmdsZSA9ICg5MCArICgzNjAgLSB0aGlzLnNwYW4pLzIpICogTWF0aC5QSS8xODA7CiAgICAgICAgdGhpcy5lbmRBbmdsZSA9ICg5MCAtICgzNjAgLSB0aGlzLnNwYW4pLzIpICogTWF0aC5QSS8xODA7CiAgICAgICAgCiAgICAgICAgdGhpcy5zZXRtaW4gPSAhISh0aGlzLm1pbiA9PSBudWxsKTsKICAgICAgICB0aGlzLnNldG1heCA9ICEhKHRoaXMubWF4ID09IG51bGwpOwogICAgICAgIAogICAgICAgIC8vIGlmIGdpdmVuIGludGVydmFscyBhbmQgaXMgYW4gYXJyYXkgb2YgdmFsdWVzLCBjcmVhdGUgbGFiZWxzIGFuZCBjb2xvcnMuCiAgICAgICAgaWYgKHRoaXMuaW50ZXJ2YWxzLmxlbmd0aCkgewogICAgICAgICAgICBpZiAodGhpcy5pbnRlcnZhbHNbMF0ubGVuZ3RoID09IG51bGwgfHwgdGhpcy5pbnRlcnZhbHMubGVuZ3RoID09IDEpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLmludGVydmFscy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJ2YWxzW2ldID0gW3RoaXMuaW50ZXJ2YWxzW2ldLCB0aGlzLmludGVydmFsc1tpXSwgdGhpcy5pbnRlcnZhbENvbG9yc1tpXV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5pbnRlcnZhbHNbMF0ubGVuZ3RoID09IDIpIHsKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPHRoaXMuaW50ZXJ2YWxzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnRlcnZhbHNbaV0gPSBbdGhpcy5pbnRlcnZhbHNbaV1bMF0sIHRoaXMuaW50ZXJ2YWxzW2ldWzFdLCB0aGlzLmludGVydmFsQ29sb3JzW2ldXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBjb21wdXRlIG1pbiwgbWF4IGFuZCB0aWNrcyBpZiBub3Qgc3VwcGxpZWQ6CiAgICAgICAgaWYgKHRoaXMudGlja3MubGVuZ3RoKSB7CiAgICAgICAgICAgIGlmICh0aGlzLnRpY2tzWzBdLmxlbmd0aCA9PSBudWxsIHx8IHRoaXMudGlja3NbMF0ubGVuZ3RoID09IDEpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLnRpY2tzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50aWNrc1tpXSA9IFt0aGlzLnRpY2tzW2ldLCB0aGlzLnRpY2tzW2ldXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLm1pbiA9ICh0aGlzLm1pbiA9PSBudWxsKSA/IHRoaXMudGlja3NbMF1bMF0gOiB0aGlzLm1pbjsKICAgICAgICAgICAgdGhpcy5tYXggPSAodGhpcy5tYXggPT0gbnVsbCkgPyB0aGlzLnRpY2tzW3RoaXMudGlja3MubGVuZ3RoLTFdWzBdIDogdGhpcy5tYXg7CiAgICAgICAgICAgIHRoaXMuc2V0bWluID0gZmFsc2U7CiAgICAgICAgICAgIHRoaXMuc2V0bWF4ID0gZmFsc2U7CiAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSB0aGlzLnRpY2tzLmxlbmd0aDsKICAgICAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSB0aGlzLnRpY2tzWzFdWzBdIC0gdGhpcy50aWNrc1swXVswXTsKICAgICAgICAgICAgdGhpcy50aWNrRmFjdG9yID0gTWF0aC5mbG9vcihwYXJzZUZsb2F0KChNYXRoLmxvZyh0aGlzLnRpY2tJbnRlcnZhbCkvTWF0aC5sb2coMTApKS50b0ZpeGVkKDExKSkpOwogICAgICAgICAgICAvLyB1c2UgdGhlIGZpcnN0IGludGVyYWwgdG8gY2FsY3VsYXRlIG1pbm9yIHRpY2tzOwogICAgICAgICAgICB0aGlzLm51bWJlck1pbm9yVGlja3MgPSBnZXRubXQodGhpcy50aWNrUG9zaXRpb25zLCB0aGlzLnRpY2tJbnRlcnZhbCwgdGhpcy50aWNrRmFjdG9yKTsKICAgICAgICAgICAgaWYgKCF0aGlzLm51bWJlck1pbm9yVGlja3MpIHsKICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyTWlub3JUaWNrcyA9IGdldG5tdCh0aGlzLnRpY2tQb3NpdGlvbnMsIHRoaXMudGlja0ludGVydmFsLCB0aGlzLnRpY2tGYWN0b3ItMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCF0aGlzLm51bWJlck1pbm9yVGlja3MpIHsKICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyTWlub3JUaWNrcyA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZWxzZSBpZiAodGhpcy5pbnRlcnZhbHMubGVuZ3RoKSB7CiAgICAgICAgICAgIHRoaXMubWluID0gKHRoaXMubWluID09IG51bGwpID8gMCA6IHRoaXMubWluOwogICAgICAgICAgICB0aGlzLnNldG1pbiA9IGZhbHNlOwogICAgICAgICAgICBpZiAodGhpcy5tYXggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMuaW50ZXJ2YWxzW3RoaXMuaW50ZXJ2YWxzLmxlbmd0aC0xXVswXSA+PSB0aGlzLmRhdGFbMF1bMV0pIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLm1heCA9IHRoaXMuaW50ZXJ2YWxzW3RoaXMuaW50ZXJ2YWxzLmxlbmd0aC0xXVswXTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNldG1heCA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5zZXRtYXggPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgLy8gbm8gdGlja3MgYW5kIG5vIGludGVydmFscyBzdXBwbGllZCwgcHV0IG5lZWRsZSBpbiBtaWRkbGUKICAgICAgICAgICAgdGhpcy5taW4gPSAodGhpcy5taW4gPT0gbnVsbCkgPyAwIDogdGhpcy5taW47CiAgICAgICAgICAgIHRoaXMuc2V0bWluID0gZmFsc2U7CiAgICAgICAgICAgIGlmICh0aGlzLm1heCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICB0aGlzLm1heCA9IHRoaXMuZGF0YVswXVsxXSAqIDEuMjU7CiAgICAgICAgICAgICAgICB0aGlzLnNldG1heCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB0aGlzLnNldG1heCA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKICAgIAogICAgJC5qcXBsb3QuTWV0ZXJHYXVnZVJlbmRlcmVyLnByb3RvdHlwZS5zZXRHcmlkRGF0YSA9IGZ1bmN0aW9uKHBsb3QpIHsKICAgICAgICAvLyBzZXQgZ3JpZERhdGEgcHJvcGVydHkuICBUaGlzIHdpbGwgaG9sZCBhbmdsZSBpbiByYWRpYW5zIG9mIGVhY2ggZGF0YSBwb2ludC4KICAgICAgICB2YXIgc3RhY2sgPSBbXTsKICAgICAgICB2YXIgdGQgPSBbXTsKICAgICAgICB2YXIgc2EgPSB0aGlzLnN0YXJ0QW5nbGU7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAgIHN0YWNrLnB1c2godGhpcy5kYXRhW2ldWzFdKTsKICAgICAgICAgICAgdGQucHVzaChbdGhpcy5kYXRhW2ldWzBdXSk7CiAgICAgICAgICAgIGlmIChpPjApIHsKICAgICAgICAgICAgICAgIHN0YWNrW2ldICs9IHN0YWNrW2ktMV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdmFyIGZhY3QgPSBNYXRoLlBJKjIvc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07CiAgICAgICAgCiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHN0YWNrLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHRkW2ldWzFdID0gc3RhY2tbaV0gKiBmYWN0OwogICAgICAgIH0KICAgICAgICB0aGlzLmdyaWREYXRhID0gdGQ7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5NZXRlckdhdWdlUmVuZGVyZXIucHJvdG90eXBlLm1ha2VHcmlkRGF0YSA9IGZ1bmN0aW9uKGRhdGEsIHBsb3QpIHsKICAgICAgICB2YXIgc3RhY2sgPSBbXTsKICAgICAgICB2YXIgdGQgPSBbXTsKICAgICAgICB2YXIgc2EgPSB0aGlzLnN0YXJ0QW5nbGU7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPGRhdGEubGVuZ3RoOyBpKyspewogICAgICAgICAgICBzdGFjay5wdXNoKGRhdGFbaV1bMV0pOwogICAgICAgICAgICB0ZC5wdXNoKFtkYXRhW2ldWzBdXSk7CiAgICAgICAgICAgIGlmIChpPjApIHsKICAgICAgICAgICAgICAgIHN0YWNrW2ldICs9IHN0YWNrW2ktMV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdmFyIGZhY3QgPSBNYXRoLlBJKjIvc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07CiAgICAgICAgCiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHN0YWNrLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHRkW2ldWzFdID0gc3RhY2tbaV0gKiBmYWN0OwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGQ7CiAgICB9OwoKICAgICAgICAKICAgIGZ1bmN0aW9uIGdldG5tdChwb3MsIGludGVydmFsLCBmYWN0KSB7CiAgICAgICAgdmFyIHRlbXA7CiAgICAgICAgZm9yICh2YXIgaT1wb3MubGVuZ3RoLTE7IGk+PTA7IGktLSkgewogICAgICAgICAgICB0ZW1wID0gaW50ZXJ2YWwvKHBvc1tpXSAqIE1hdGgucG93KDEwLCBmYWN0KSk7CiAgICAgICAgICAgIGlmICh0ZW1wID09IDQgfHwgdGVtcCA9PSA1KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGVtcCAtIDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHNlcmllcwogICAgJC5qcXBsb3QuTWV0ZXJHYXVnZVJlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24gKGN0eCwgZ2QsIG9wdGlvbnMpIHsKICAgICAgICB2YXIgaTsKICAgICAgICB2YXIgb3B0cyA9IChvcHRpb25zICE9IHVuZGVmaW5lZCkgPyBvcHRpb25zIDoge307CiAgICAgICAgLy8gb2Zmc2V0IGFuZCBkaXJlY3Rpb24gb2Ygb2Zmc2V0IGR1ZSB0byBsZWdlbmQgcGxhY2VtZW50CiAgICAgICAgdmFyIG9mZnggPSAwOwogICAgICAgIHZhciBvZmZ5ID0gMDsKICAgICAgICB2YXIgdHJhbnMgPSAxOwogICAgICAgIGlmIChvcHRpb25zLmxlZ2VuZEluZm8gJiYgb3B0aW9ucy5sZWdlbmRJbmZvLnBsYWNlbWVudCA9PSAnaW5zaWRlJykgewogICAgICAgICAgICB2YXIgbGkgPSBvcHRpb25zLmxlZ2VuZEluZm87CiAgICAgICAgICAgIHN3aXRjaCAobGkubG9jYXRpb24pIHsKICAgICAgICAgICAgICAgIGNhc2UgJ253JzoKICAgICAgICAgICAgICAgICAgICBvZmZ4ID0gbGkud2lkdGggKyBsaS54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAndyc6CiAgICAgICAgICAgICAgICAgICAgb2ZmeCA9IGxpLndpZHRoICsgbGkueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3N3JzoKICAgICAgICAgICAgICAgICAgICBvZmZ4ID0gbGkud2lkdGggKyBsaS54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnbmUnOgogICAgICAgICAgICAgICAgICAgIG9mZnggPSBsaS53aWR0aCArIGxpLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgdHJhbnMgPSAtMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2UnOgogICAgICAgICAgICAgICAgICAgIG9mZnggPSBsaS53aWR0aCArIGxpLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgdHJhbnMgPSAtMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3NlJzoKICAgICAgICAgICAgICAgICAgICBvZmZ4ID0gbGkud2lkdGggKyBsaS54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIHRyYW5zID0gLTE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICduJzoKICAgICAgICAgICAgICAgICAgICBvZmZ5ID0gbGkuaGVpZ2h0ICsgbGkueW9mZnNldDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgICAgICAgIG9mZnkgPSBsaS5oZWlnaHQgKyBsaS55b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIHRyYW5zID0gLTE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAvLyBwcmUtZHJhdyBzbyBjYW4gZ2V0IGl0cyBkaW1lbnNpb25zLgogICAgICAgIGlmICh0aGlzLmxhYmVsKSB7CiAgICAgICAgICAgIHRoaXMuX2xhYmVsRWxlbSA9ICQoJzxkaXYgY2xhc3M9ImpxcGxvdC1tZXRlckdhdWdlLWxhYmVsIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7Ij4nK3RoaXMubGFiZWwrJzwvZGl2PicpOwogICAgICAgICAgICB0aGlzLmNhbnZhcy5fZWxlbS5hZnRlcih0aGlzLl9sYWJlbEVsZW0pOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB2YXIgc2hhZG93ID0gKG9wdHMuc2hhZG93ICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNoYWRvdyA6IHRoaXMuc2hhZG93OwogICAgICAgIHZhciBzaG93TGluZSA9IChvcHRzLnNob3dMaW5lICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNob3dMaW5lIDogdGhpcy5zaG93TGluZTsKICAgICAgICB2YXIgZmlsbCA9IChvcHRzLmZpbGwgIT0gdW5kZWZpbmVkKSA/IG9wdHMuZmlsbCA6IHRoaXMuZmlsbDsKICAgICAgICB2YXIgY3cgPSBjdHguY2FudmFzLndpZHRoOwogICAgICAgIHZhciBjaCA9IGN0eC5jYW52YXMuaGVpZ2h0OwogICAgICAgIGlmICh0aGlzLnBhZGRpbmcgPT0gbnVsbCkgewogICAgICAgICAgICB0aGlzLnBhZGRpbmcgPSBNYXRoLnJvdW5kKE1hdGgubWluKGN3LCBjaCkvMzApOwogICAgICAgIH0KICAgICAgICB2YXIgdyA9IGN3IC0gb2ZmeCAtIDIgKiB0aGlzLnBhZGRpbmc7CiAgICAgICAgdmFyIGggPSBjaCAtIG9mZnkgLSAyICogdGhpcy5wYWRkaW5nOwogICAgICAgIGlmICh0aGlzLmxhYmVsUG9zaXRpb24gPT0gJ2JvdHRvbScgJiYgdGhpcy5sYWJlbCkgewogICAgICAgICAgICBoIC09IHRoaXMuX2xhYmVsRWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICB9CiAgICAgICAgdmFyIG1pbmRpbSA9IE1hdGgubWluKHcsaCk7CiAgICAgICAgdmFyIGQgPSBtaW5kaW07CiAgICAgICAgICAgIAogICAgICAgIGlmICghdGhpcy5kaWFtZXRlcikgewogICAgICAgICAgICBpZiAodGhpcy5zZW1pQ2lyY3VsYXIpIHsKICAgICAgICAgICAgICAgIGlmICggdyA+PSAyKmgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMucmluZ1dpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmluZ1dpZHRoID0gMipoLzM1OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0aGlzLm5lZWRsZVRoaWNrbmVzcyA9IHRoaXMubmVlZGxlVGhpY2tuZXNzIHx8IDIrTWF0aC5wb3codGhpcy5yaW5nV2lkdGgsIDAuOCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbm5lclBhZCA9IHRoaXMucmluZ1dpZHRoLzIgKyB0aGlzLm5lZWRsZVRoaWNrbmVzcy8yICsgdGhpcy5uZWVkbGVQYWQ7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFtZXRlciA9IDIgKiAoaCAtIDIqdGhpcy5pbm5lclBhZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMucmluZ1dpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmluZ1dpZHRoID0gdy8zNTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZWVkbGVUaGlja25lc3MgPSB0aGlzLm5lZWRsZVRoaWNrbmVzcyB8fCAyK01hdGgucG93KHRoaXMucmluZ1dpZHRoLCAwLjgpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuaW5uZXJQYWQgPSB0aGlzLnJpbmdXaWR0aC8yICsgdGhpcy5uZWVkbGVUaGlja25lc3MvMiArIHRoaXMubmVlZGxlUGFkOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbWV0ZXIgPSB3IC0gMip0aGlzLmlubmVyUGFkIC0gdGhpcy5yaW5nV2lkdGggLSB0aGlzLnBhZGRpbmc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyBjZW50ZXIgdGFraW5nIGludG8gYWNjb3VudCBsZWdlbmQgYW5kIG92ZXIgZHJhdyBmb3IgZ2F1Z2UgYm90dG9tIGJlbG93IGh1Yi4KICAgICAgICAgICAgICAgIC8vIHRoaXMgd2lsbCBiZSBjZW50ZXIgb2YgaHViLgogICAgICAgICAgICAgICAgdGhpcy5fY2VudGVyID0gWyhjdyAtIHRyYW5zICogb2ZmeCkvMiArIHRyYW5zICogb2ZmeCwgIChjaCArIHRyYW5zKm9mZnkgLSB0aGlzLnBhZGRpbmcgLSB0aGlzLnJpbmdXaWR0aCAtIHRoaXMuaW5uZXJQYWQpXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICghdGhpcy5yaW5nV2lkdGgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnJpbmdXaWR0aCA9IGQvMzU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLm5lZWRsZVRoaWNrbmVzcyA9IHRoaXMubmVlZGxlVGhpY2tuZXNzIHx8IDIrTWF0aC5wb3codGhpcy5yaW5nV2lkdGgsIDAuOCk7CiAgICAgICAgICAgICAgICB0aGlzLmlubmVyUGFkID0gMDsKICAgICAgICAgICAgICAgIHRoaXMuZGlhbWV0ZXIgPSBkIC0gdGhpcy5yaW5nV2lkdGg7CiAgICAgICAgICAgICAgICAvLyBjZW50ZXIgaW4gbWlkZGxlIG9mIGNhbnZhcyB0YWtpbmcgaW50byBhY2NvdW50IGxlZ2VuZC4KICAgICAgICAgICAgICAgIC8vIHdpbGwgYmUgY2VudGVyIG9mIGh1Yi4KICAgICAgICAgICAgICAgIHRoaXMuX2NlbnRlciA9IFsoY3ctdHJhbnMqb2ZmeCkvMiArIHRyYW5zICogb2ZmeCwgKGNoLXRyYW5zKm9mZnkpLzIgKyB0cmFucyAqIG9mZnldOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0aGlzLl9sYWJlbEVsZW0gJiYgdGhpcy5sYWJlbFBvc2l0aW9uID09ICdib3R0b20nKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9jZW50ZXJbMV0gLT0gdGhpcy5fbGFiZWxFbGVtLm91dGVySGVpZ2h0KHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgIH0KCiAgICAgICAgdGhpcy5fcmFkaXVzID0gdGhpcy5kaWFtZXRlci8yOwogICAgICAgIAogICAgICAgIHRoaXMudGlja1NwYWNpbmcgPSA2MDAwL3RoaXMuZGlhbWV0ZXI7CiAgICAgICAgCiAgICAgICAgaWYgKCF0aGlzLmh1YlJhZGl1cykgewogICAgICAgICAgICB0aGlzLmh1YlJhZGl1cyA9IHRoaXMuZGlhbWV0ZXIvMTg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHRoaXMuc2hhZG93T2Zmc2V0ID0gMC41ICsgdGhpcy5yaW5nV2lkdGgvOTsKICAgICAgICB0aGlzLnNoYWRvd1dpZHRoID0gdGhpcy5yaW5nV2lkdGgqMTsKICAgICAgICAKICAgICAgICB0aGlzLnRpY2tQYWRkaW5nID0gMyArIE1hdGgucG93KHRoaXMuZGlhbWV0ZXIvMjAsIDAuNyk7CiAgICAgICAgdGhpcy50aWNrT3V0ZXJSYWRpdXMgPSB0aGlzLl9yYWRpdXMgLSB0aGlzLnJpbmdXaWR0aC8yIC0gdGhpcy50aWNrUGFkZGluZzsKICAgICAgICB0aGlzLnRpY2tMZW5ndGggPSAodGhpcy5zaG93VGlja3MpID8gdGhpcy5fcmFkaXVzLzEzIDogMDsKICAgICAgICAKICAgICAgICBpZiAodGhpcy50aWNrcy5sZW5ndGggPT0gMCkgewogICAgICAgICAgICAvLyBubyB0aWNrcywgbGV0cyBtYWtlIHNvbWUuCiAgICAgICAgICAgIHZhciBtYXggPSB0aGlzLm1heCwKICAgICAgICAgICAgICAgIG1pbiA9IHRoaXMubWluLAogICAgICAgICAgICAgICAgc2V0bWF4ID0gdGhpcy5zZXRtYXgsCiAgICAgICAgICAgICAgICBzZXRtaW4gPSB0aGlzLnNldG1pbiwKICAgICAgICAgICAgICAgIHRpID0gKG1heCAtIG1pbikgKiB0aGlzLnRpY2tTcGFjaW5nIC8gdGhpcy5zcGFuOwogICAgICAgICAgICB2YXIgdGYgPSBNYXRoLmZsb29yKHBhcnNlRmxvYXQoKE1hdGgubG9nKHRpKS9NYXRoLmxvZygxMCkpLnRvRml4ZWQoMTEpKSk7CiAgICAgICAgICAgIHZhciB0cCA9ICh0aS9NYXRoLnBvdygxMCwgdGYpKTsKICAgICAgICAgICAgKHRwID4gMiAmJiB0cCA8PSAyLjUpID8gdHAgPSAyLjUgOiB0cCA9IE1hdGguY2VpbCh0cCk7CiAgICAgICAgICAgIHZhciB0ID0gdGhpcy50aWNrUG9zaXRpb25zOwogICAgICAgICAgICB2YXIgdHBpbmRleCwgbnQ7CiAgICAKICAgICAgICAgICAgZm9yIChpPTA7IGk8dC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKHRwID09IHRbaV0gfHwgaSAmJiB0W2ktMV0gPCB0cCAmJiB0cCA8IHRbaV0pIHsgCiAgICAgICAgICAgICAgICAgICAgdGkgPSB0W2ldKk1hdGgucG93KDEwLCB0Zik7CiAgICAgICAgICAgICAgICAgICAgdHBpbmRleCA9IGk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAKICAgICAgICAgICAgZm9yIChpPTA7IGk8dC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKHRwID09IHRbaV0gfHwgaSAmJiB0W2ktMV0gPCB0cCAmJiB0cCA8IHRbaV0pIHsgCiAgICAgICAgICAgICAgICAgICAgdGkgPSB0W2ldKk1hdGgucG93KDEwLCB0Zik7CiAgICAgICAgICAgICAgICAgICAgbnQgPSBNYXRoLmNlaWwoKG1heCAtIG1pbikgLyB0aSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAKICAgICAgICAgICAgLy8gYm90aCBtYXggYW5kIG1pbiBhcmUgZnJlZQogICAgICAgICAgICBpZiAoc2V0bWF4ICYmIHNldG1pbikgewogICAgICAgICAgICAgICAgdmFyIHRtaW4gPSAobWluID4gMCkgPyBtaW4gLSBtaW4gJSB0aSA6IG1pbiAtIG1pbiAlIHRpIC0gdGk7CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZm9yY2VaZXJvKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGRpZmYgPSBNYXRoLm1pbihtaW4gLSB0bWluLCAwLjgqdGkpOwogICAgICAgICAgICAgICAgICAgIHZhciBudHAgPSBNYXRoLmZsb29yKGRpZmYvdFt0cGluZGV4XSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKG50cCA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdG1pbiA9IHRtaW4gKyB0W3RwaW5kZXhdICogKG50cC0xKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlSW50KHRtaW4sIDEwKSAhPSB0bWluICYmIHBhcnNlSW50KHRtaW4tdFt0cGluZGV4XSwgMTApID09IHRtaW4tdFt0cGluZGV4XSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1pbiA9IHRtaW4gLSB0W3RwaW5kZXhdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG1pbiA9PSB0bWluKSB7CiAgICAgICAgICAgICAgICAgICAgbWluIC09IHRpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gdG1pbiBzaG91bGQgYWx3YXlzIGJlIGxvd2VyIHRoYW4gZGF0YU1pbgogICAgICAgICAgICAgICAgICAgIGlmIChtaW4gLSB0bWluID4gMC4yMyp0aSkgewogICAgICAgICAgICAgICAgICAgICAgICBtaW4gPSB0bWluOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWluID0gdG1pbiAtdGk7CiAgICAgICAgICAgICAgICAgICAgICAgIG50ICs9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbnQgKz0gMTsKICAgICAgICAgICAgICAgIHZhciB0bWF4ID0gbWluICsgKG50IC0gMSkgKiB0aTsKICAgICAgICAgICAgICAgIGlmIChtYXggPj0gdG1heCkgeyAKICAgICAgICAgICAgICAgICAgICB0bWF4ICs9IHRpOwogICAgICAgICAgICAgICAgICAgIG50ICs9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyBub3cgdG1heCBzaG91bGQgYWx3YXlzIGJlIG1yb2UgdGhhbiBkYXRhTWF4CiAgICAgICAgICAgICAgICBpZiAodG1heCAtIG1heCA8IDAuMjMqdGkpIHsgCiAgICAgICAgICAgICAgICAgICAgdG1heCArPSB0aTsKICAgICAgICAgICAgICAgICAgICBudCArPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5tYXggPSBtYXggPSB0bWF4OwogICAgICAgICAgICAgICAgdGhpcy5taW4gPSBtaW47ICAgIAoKICAgICAgICAgICAgICAgIHRoaXMudGlja0ludGVydmFsID0gdGk7CiAgICAgICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gbnQ7CiAgICAgICAgICAgICAgICB2YXIgaXQ7CiAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTxudDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgaXQgPSBwYXJzZUZsb2F0KChtaW4raSp0aSkudG9GaXhlZCgxMSkpOwogICAgICAgICAgICAgICAgICAgIHRoaXMudGlja3MucHVzaChbaXQsIGl0XSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLm1heCA9IHRoaXMudGlja3NbbnQtMV1bMV07CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdGhpcy50aWNrRmFjdG9yID0gdGY7ICAgICAgCiAgICAgICAgICAgICAgICAvLyBkZXRlcm1pbmUgbnVtYmVyIG9mIG1pbm9yIHRpY2tzCgogICAgICAgICAgICAgICAgdGhpcy5udW1iZXJNaW5vclRpY2tzID0gZ2V0bm10KHRoaXMudGlja1Bvc2l0aW9ucywgdGhpcy50aWNrSW50ZXJ2YWwsIHRoaXMudGlja0ZhY3Rvcik7ICAgICAKICAgICAgICAKICAgICAgICAgICAgICAgIGlmICghdGhpcy5udW1iZXJNaW5vclRpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJNaW5vclRpY2tzID0gZ2V0bm10KHRoaXMudGlja1Bvc2l0aW9ucywgdGhpcy50aWNrSW50ZXJ2YWwsIHRoaXMudGlja0ZhY3Rvci0xKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBtYXggaXMgZnJlZSwgbWluIGlzIGZpeGVkCiAgICAgICAgICAgIGVsc2UgaWYgKHNldG1heCkgewogICAgICAgICAgICAgICAgdmFyIHRtYXggPSBtaW4gKyAobnQgLSAxKSAqIHRpOwogICAgICAgICAgICAgICAgaWYgKG1heCA+PSB0bWF4KSB7CiAgICAgICAgICAgICAgICAgICAgbWF4ID0gdG1heCArIHRpOwogICAgICAgICAgICAgICAgICAgIG50ICs9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBtYXggPSB0bWF4OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHRoaXMudGlja0ludGVydmFsID0gdGhpcy50aWNrSW50ZXJ2YWwgfHwgdGk7CiAgICAgICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gdGhpcy5udW1iZXJUaWNrcyB8fCBudDsKICAgICAgICAgICAgICAgIHZhciBpdDsKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPHRoaXMubnVtYmVyVGlja3M7IGkrKykgewogICAgICAgICAgICAgICAgICAgIGl0ID0gcGFyc2VGbG9hdCgobWluK2kqdGhpcy50aWNrSW50ZXJ2YWwpLnRvRml4ZWQoMTEpKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRpY2tzLnB1c2goW2l0LCBpdF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5tYXggPSB0aGlzLnRpY2tzW3RoaXMubnVtYmVyVGlja3MtMV1bMV07CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdGhpcy50aWNrRmFjdG9yID0gdGY7CiAgICAgICAgICAgICAgICAvLyBkZXRlcm1pbmUgbnVtYmVyIG9mIG1pbm9yIHRpY2tzCiAgICAgICAgICAgICAgICB0aGlzLm51bWJlck1pbm9yVGlja3MgPSBnZXRubXQodGhpcy50aWNrUG9zaXRpb25zLCB0aGlzLnRpY2tJbnRlcnZhbCwgdGhpcy50aWNrRmFjdG9yKTsKICAgICAgICAKICAgICAgICAgICAgICAgIGlmICghdGhpcy5udW1iZXJNaW5vclRpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJNaW5vclRpY2tzID0gZ2V0bm10KHRoaXMudGlja1Bvc2l0aW9ucywgdGhpcy50aWNrSW50ZXJ2YWwsIHRoaXMudGlja0ZhY3Rvci0xKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gbm90IHNldHRpbmcgbWF4IG9yIG1pbgogICAgICAgICAgICBpZiAoIXNldG1heCAmJiAhc2V0bWluKSB7CiAgICAgICAgICAgICAgICB2YXIgcmFuZ2UgPSB0aGlzLm1heCAtIHRoaXMubWluOwogICAgICAgICAgICAgICAgdGYgPSBNYXRoLmZsb29yKHBhcnNlRmxvYXQoKE1hdGgubG9nKHJhbmdlKS9NYXRoLmxvZygxMCkpLnRvRml4ZWQoMTEpKSkgLSAxOwogICAgICAgICAgICAgICAgdmFyIG50aWNrcyA9IFs1LDYsNCw3LDMsOCw5LDEwLDJdLCByZXMsIG51bXRpY2tzLCBub25TaWdEaWdpdHM9MCwgc2lnUmFuZ2U7CiAgICAgICAgICAgICAgICAvLyBjaGVjayB0byBzZWUgaG93IG1hbnkgemVyb3MgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIHJhbmdlCiAgICAgICAgICAgICAgICBpZiAocmFuZ2UgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJzdHIgPSBTdHJpbmcocmFuZ2UpOwogICAgICAgICAgICAgICAgICAgIGlmIChyc3RyLnNlYXJjaCgvXC4vKSA9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9IHJzdHIuc2VhcmNoKC8wKyQvKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG5vblNpZ0RpZ2l0cyA9IChwb3MgPiAwKSA/IHJzdHIubGVuZ3RoIC0gcG9zIC0gMSA6IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2lnUmFuZ2UgPSByYW5nZS9NYXRoLnBvdygxMCwgbm9uU2lnRGlnaXRzKTsKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPG50aWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHJlcyA9IHNpZ1JhbmdlLyhudGlja3NbaV0tMSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBwYXJzZUludChyZXMsIDEwKSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gbnRpY2tzW2ldOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9IHJhbmdlLyh0aGlzLm51bWJlclRpY2tzLTEpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRpY2tGYWN0b3IgPSB0ZisxOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgaXQ7CiAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTx0aGlzLm51bWJlclRpY2tzOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBpdCA9IHBhcnNlRmxvYXQoKHRoaXMubWluK2kqdGhpcy50aWNrSW50ZXJ2YWwpLnRvRml4ZWQoMTEpKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRpY2tzLnB1c2goW2l0LCBpdF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gZGV0ZXJtaW5lIG51bWJlciBvZiBtaW5vciB0aWNrcwogICAgICAgICAgICAgICAgdGhpcy5udW1iZXJNaW5vclRpY2tzID0gZ2V0bm10KHRoaXMudGlja1Bvc2l0aW9ucywgdGhpcy50aWNrSW50ZXJ2YWwsIHRoaXMudGlja0ZhY3Rvcik7CiAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubnVtYmVyTWlub3JUaWNrcykgewogICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyTWlub3JUaWNrcyA9IGdldG5tdCh0aGlzLnRpY2tQb3NpdGlvbnMsIHRoaXMudGlja0ludGVydmFsLCB0aGlzLnRpY2tGYWN0b3ItMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmICghdGhpcy5udW1iZXJNaW5vclRpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJNaW5vclRpY2tzID0gMTsKICAgICAgICAgICAgICAgICAgICB2YXIgbnVtcyA9IFs0LCA1LCAzLCA2LCAyXTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTw1OyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXAgPSB0aGlzLnRpY2tJbnRlcnZhbC9udW1zW2ldOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVtcCA9PSBwYXJzZUludCh0ZW1wLCAxMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyTWlub3JUaWNrcyA9IG51bXNbaV0tMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAoKICAgICAgICB2YXIgciA9IHRoaXMuX3JhZGl1cywKICAgICAgICAgICAgc2EgPSB0aGlzLnN0YXJ0QW5nbGUsCiAgICAgICAgICAgIGVhID0gdGhpcy5lbmRBbmdsZSwgICAgICAgCiAgICAgICAgICAgIHBpID0gTWF0aC5QSSwKICAgICAgICAgICAgaHBpID0gTWF0aC5QSS8yOwogICAgICAgICAgICAKICAgICAgICBpZiAodGhpcy5zZW1pQ2lyY3VsYXIpIHsKICAgICAgICAgICAgdmFyIG92ZXJBbmdsZSA9IE1hdGguYXRhbih0aGlzLmlubmVyUGFkL3IpLAogICAgICAgICAgICAgICAgb3V0ZXJzYSA9IHRoaXMub3V0ZXJTdGFydEFuZ2xlID0gc2EgLSBvdmVyQW5nbGUsCiAgICAgICAgICAgICAgICBvdXRlcmVhID0gdGhpcy5vdXRlckVuZEFuZ2xlID0gZWEgKyBvdmVyQW5nbGUsCiAgICAgICAgICAgICAgICBodWJzYSA9IHRoaXMuaHViU3RhcnRBbmdsZSA9IHNhIC0gTWF0aC5hdGFuKHRoaXMuaW5uZXJQYWQvdGhpcy5odWJSYWRpdXMqMiksCiAgICAgICAgICAgICAgICBodWJlYSA9IHRoaXMuaHViRW5kQW5nbGUgPSBlYSArIE1hdGguYXRhbih0aGlzLmlubmVyUGFkL3RoaXMuaHViUmFkaXVzKjIpOwoKICAgICAgICAgICAgY3R4LnNhdmUoKTsgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIGN0eC50cmFuc2xhdGUodGhpcy5fY2VudGVyWzBdLCB0aGlzLl9jZW50ZXJbMV0pOwogICAgICAgICAgICBjdHgubGluZUpvaW4gPSAicm91bmQiOwogICAgICAgICAgICBjdHgubGluZUNhcCA9ICJyb3VuZCI7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBkcmF3IHRoZSBpbm5lcmJhY2tncm91bmQKICAgICAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOyAgCiAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSB0aGlzLmJhY2tncm91bmQ7CiAgICAgICAgICAgIGN0eC5hcmMoMCwgMCwgciwgb3V0ZXJzYSwgb3V0ZXJlYSwgZmFsc2UpOwogICAgICAgICAgICBjdHguY2xvc2VQYXRoKCk7CiAgICAgICAgICAgIGN0eC5maWxsKCk7CiAgICAgICAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBkcmF3IHRoZSBzaGFkb3cKICAgICAgICAgICAgLy8gdGhlIG91dGVyIHJpbmcuCiAgICAgICAgICAgIHZhciBzaGFkb3dDb2xvciA9ICdyZ2JhKDAsMCwwLCcrdGhpcy5zaGFkb3dBbHBoYSsnKSc7CiAgICAgICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLnNoYWRvd0RlcHRoOyBpKyspIHsKICAgICAgICAgICAgICAgIGN0eC50cmFuc2xhdGUodGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5jb3ModGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSksIHRoaXMuc2hhZG93T2Zmc2V0Kk1hdGguc2luKHRoaXMuc2hhZG93QW5nbGUvMTgwKk1hdGguUEkpKTsKICAgICAgICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTsgIAogICAgICAgICAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gc2hhZG93Q29sb3I7CiAgICAgICAgICAgICAgICBjdHgubGluZVdpZHRoID0gdGhpcy5zaGFkb3dXaWR0aDsKICAgICAgICAgICAgICAgIGN0eC5hcmMoMCAsMCwgciwgb3V0ZXJzYSwgb3V0ZXJlYSwgZmFsc2UpOwogICAgICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpOwogICAgICAgICAgICAgICAgY3R4LnN0cm9rZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyB0aGUgaW5uZXIgaHViLgogICAgICAgICAgICBjdHguc2F2ZSgpOwogICAgICAgICAgICB2YXIgdGVtcGQgPSBwYXJzZUludCgodGhpcy5zaGFkb3dEZXB0aCsxKS8yLCAxMCk7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0ZW1wZDsgaSsrKSB7CiAgICAgICAgICAgICAgICBjdHgudHJhbnNsYXRlKHRoaXMuc2hhZG93T2Zmc2V0Kk1hdGguY29zKHRoaXMuc2hhZG93QW5nbGUvMTgwKk1hdGguUEkpLCB0aGlzLnNoYWRvd09mZnNldCpNYXRoLnNpbih0aGlzLnNoYWRvd0FuZ2xlLzE4MCpNYXRoLlBJKSk7CiAgICAgICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7ICAKICAgICAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBzaGFkb3dDb2xvcjsKICAgICAgICAgICAgICAgIGN0eC5hcmMoMCAsMCwgdGhpcy5odWJSYWRpdXMsIGh1YnNhLCBodWJlYSwgZmFsc2UpOwogICAgICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpOwogICAgICAgICAgICAgICAgY3R4LmZpbGwoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gZHJhdyB0aGUgb3V0ZXIgcmluZy4KICAgICAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOyAgCiAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IHRoaXMucmluZ0NvbG9yOwogICAgICAgICAgICBjdHgubGluZVdpZHRoID0gdGhpcy5yaW5nV2lkdGg7CiAgICAgICAgICAgIGN0eC5hcmMoMCAsMCwgciwgb3V0ZXJzYSwgb3V0ZXJlYSwgZmFsc2UpOwogICAgICAgICAgICBjdHguY2xvc2VQYXRoKCk7CiAgICAgICAgICAgIGN0eC5zdHJva2UoKTsKICAgICAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIGRyYXcgdGhlIGh1YgogICAgICAgICAgICAKICAgICAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOyAgCiAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSB0aGlzLnJpbmdDb2xvcjsKICAgICAgICAgICAgY3R4LmFyYygwICwwLCB0aGlzLmh1YlJhZGl1cyxodWJzYSwgaHViZWEsIGZhbHNlKTsKICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpOwogICAgICAgICAgICBjdHguZmlsbCgpOwogICAgICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gZHJhdyB0aGUgdGlja3MKICAgICAgICAgICAgaWYgKHRoaXMuc2hvd1RpY2tzKSB7CiAgICAgICAgICAgICAgICBjdHguc2F2ZSgpOwogICAgICAgICAgICAgICAgdmFyIG9yYWQgPSB0aGlzLnRpY2tPdXRlclJhZGl1cywKICAgICAgICAgICAgICAgICAgICB0bCA9IHRoaXMudGlja0xlbmd0aCwKICAgICAgICAgICAgICAgICAgICBtdGwgPSB0bC8yLAogICAgICAgICAgICAgICAgICAgIG5tdCA9IHRoaXMubnVtYmVyTWlub3JUaWNrcywKICAgICAgICAgICAgICAgICAgICB0cyA9IHRoaXMuc3BhbiAqIE1hdGguUEkgLyAxODAgLyAodGhpcy50aWNrcy5sZW5ndGgtMSksCiAgICAgICAgICAgICAgICAgICAgbXRzID0gdHMvKG5tdCArIDEpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpPHRoaXMudGlja3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7CiAgICAgICAgICAgICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IDEuNSArIHRoaXMuZGlhbWV0ZXIvMzYwOwogICAgICAgICAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IHRoaXMucmluZ0NvbG9yOwogICAgICAgICAgICAgICAgICAgIHZhciB3cHMgPSB0cyppK3NhOwogICAgICAgICAgICAgICAgICAgIGN0eC5tb3ZlVG8oLW9yYWQgKiBNYXRoLmNvcyh0cyppK3NhKSwgb3JhZCAqIE1hdGguc2luKHRzKmkrc2EpKTsKICAgICAgICAgICAgICAgICAgICBjdHgubGluZVRvKC0ob3JhZC10bCkgKiBNYXRoLmNvcyh0cyppK3NhKSwgKG9yYWQgLSB0bCkgKiBNYXRoLnNpbih0cyppK3NhKSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGlja1BvaW50cy5wdXNoKFsob3JhZC10bCkgKiBNYXRoLmNvcyh0cyppK3NhKSArIHRoaXMuX2NlbnRlclswXSArIHRoaXMuY2FudmFzLl9vZmZzZXRzLmxlZnQsIChvcmFkIC0gdGwpICogTWF0aC5zaW4odHMqaStzYSkgKyB0aGlzLl9jZW50ZXJbMV0gKyB0aGlzLmNhbnZhcy5fb2Zmc2V0cy50b3AsIHRzKmkrc2FdKTsKICAgICAgICAgICAgICAgICAgICBjdHguc3Ryb2tlKCk7CiAgICAgICAgICAgICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IDEuMCArIHRoaXMuZGlhbWV0ZXIvNDQwOwogICAgICAgICAgICAgICAgICAgIGlmIChpPHRoaXMudGlja3MubGVuZ3RoLTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0xOyBqPD1ubXQ7IGorKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4Lm1vdmVUbygtb3JhZCAqIE1hdGguY29zKHRzKmkrbXRzKmorc2EpLCBvcmFkICogTWF0aC5zaW4odHMqaSttdHMqaitzYSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LmxpbmVUbygtKG9yYWQtbXRsKSAqIE1hdGguY29zKHRzKmkrbXRzKmorc2EpLCAob3JhZC1tdGwpICogTWF0aC5zaW4odHMqaSttdHMqaitzYSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LnN0cm9rZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9ICAgCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gZHJhdyB0aGUgdGljayBsYWJlbHMKICAgICAgICAgICAgaWYgKHRoaXMuc2hvd1RpY2tMYWJlbHMpIHsKICAgICAgICAgICAgICAgIHZhciBlbGVtLCBsLCB0LCBldywgZWgsIGRpbSwgbWF4ZGltPTA7CiAgICAgICAgICAgICAgICB2YXIgdHAgPSB0aGlzLnRpY2tQYWRkaW5nICogKDEgLSAxLyh0aGlzLmRpYW1ldGVyLzgwKzEpKTsKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPHRoaXMudGlja3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBlbGVtID0gJCgnPGRpdiBjbGFzcz0ianFwbG90LW1ldGVyR2F1Z2UtdGljayIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyI+Jyt0aGlzLnRpY2tzW2ldWzFdKyc8L2Rpdj4nKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbnZhcy5fZWxlbS5hZnRlcihlbGVtKTsKICAgICAgICAgICAgICAgICAgICBldyA9IGVsZW0ub3V0ZXJXaWR0aCh0cnVlKTsKICAgICAgICAgICAgICAgICAgICBlaCA9IGVsZW0ub3V0ZXJIZWlnaHQodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgbCA9IHRoaXMuX3RpY2tQb2ludHNbaV1bMF0gLSBldyAqICh0aGlzLl90aWNrUG9pbnRzW2ldWzJdLU1hdGguUEkpL01hdGguUEkgLSB0cCAqIE1hdGguY29zKHRoaXMuX3RpY2tQb2ludHNbaV1bMl0pOwogICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLl90aWNrUG9pbnRzW2ldWzFdIC0gZWgvMiArIGVoLzIgKiBNYXRoLnBvdyhNYXRoLmFicygoTWF0aC5zaW4odGhpcy5fdGlja1BvaW50c1tpXVsyXSkpKSwgMC41KSArIHRwLzMgKiBNYXRoLnBvdyhNYXRoLmFicygoTWF0aC5zaW4odGhpcy5fdGlja1BvaW50c1tpXVsyXSkpKSwgMC41KSA7CiAgICAgICAgICAgICAgICAgICAgLy8gdCA9IHRoaXMuX3RpY2tQb2ludHNbaV1bMV0gLSBlaC8yIC0gZWgvMiAqIE1hdGguc2luKHRoaXMuX3RpY2tQb2ludHNbaV1bMl0pIC0gdHAvMiAqIE1hdGguc2luKHRoaXMuX3RpY2tQb2ludHNbaV1bMl0pOwogICAgICAgICAgICAgICAgICAgIGVsZW0uY3NzKHtsZWZ0OmwsIHRvcDp0LCBjb2xvcjogdGhpcy50aWNrQ29sb3J9KTsKICAgICAgICAgICAgICAgICAgICBkaW0gID0gZXcqTWF0aC5jb3ModGhpcy5fdGlja1BvaW50c1tpXVsyXSkgKyBlaCpNYXRoLnNpbihNYXRoLlBJLzIrdGhpcy5fdGlja1BvaW50c1tpXVsyXS8yKTsKICAgICAgICAgICAgICAgICAgICBtYXhkaW0gPSAoZGltID4gbWF4ZGltKSA/IGRpbSA6IG1heGRpbTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gZHJhdyB0aGUgZ2F1Z2UgbGFiZWwKICAgICAgICAgICAgaWYgKHRoaXMubGFiZWwgJiYgdGhpcy5sYWJlbFBvc2l0aW9uID09ICdpbnNpZGUnKSB7CiAgICAgICAgICAgICAgICB2YXIgbCA9IHRoaXMuX2NlbnRlclswXSArIHRoaXMuY2FudmFzLl9vZmZzZXRzLmxlZnQ7CiAgICAgICAgICAgICAgICB2YXIgdHAgPSB0aGlzLnRpY2tQYWRkaW5nICogKDEgLSAxLyh0aGlzLmRpYW1ldGVyLzgwKzEpKTsKICAgICAgICAgICAgICAgIHZhciB0ID0gMC41Kih0aGlzLl9jZW50ZXJbMV0gKyB0aGlzLmNhbnZhcy5fb2Zmc2V0cy50b3AgLSB0aGlzLmh1YlJhZGl1cykgKyAwLjUqKHRoaXMuX2NlbnRlclsxXSArIHRoaXMuY2FudmFzLl9vZmZzZXRzLnRvcCAtIHRoaXMudGlja091dGVyUmFkaXVzICsgdGhpcy50aWNrTGVuZ3RoICsgdHApICsgdGhpcy5sYWJlbEhlaWdodEFkanVzdDsKICAgICAgICAgICAgICAgIC8vIHRoaXMuX2xhYmVsRWxlbSA9ICQoJzxkaXYgY2xhc3M9ImpxcGxvdC1tZXRlckdhdWdlLWxhYmVsIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7Ij4nK3RoaXMubGFiZWwrJzwvZGl2PicpOwogICAgICAgICAgICAgICAgLy8gdGhpcy5jYW52YXMuX2VsZW0uYWZ0ZXIodGhpcy5fbGFiZWxFbGVtKTsKICAgICAgICAgICAgICAgIGwgLT0gdGhpcy5fbGFiZWxFbGVtLm91dGVyV2lkdGgodHJ1ZSkvMjsKICAgICAgICAgICAgICAgIHQgLT0gdGhpcy5fbGFiZWxFbGVtLm91dGVySGVpZ2h0KHRydWUpLzI7CiAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbEVsZW0uY3NzKHtsZWZ0OmwsIHRvcDp0fSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubGFiZWwgJiYgdGhpcy5sYWJlbFBvc2l0aW9uID09ICdib3R0b20nKSB7CiAgICAgICAgICAgICAgICB2YXIgbCA9IHRoaXMuX2NlbnRlclswXSArIHRoaXMuY2FudmFzLl9vZmZzZXRzLmxlZnQgLSB0aGlzLl9sYWJlbEVsZW0ub3V0ZXJXaWR0aCh0cnVlKS8yOwogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9jZW50ZXJbMV0gKyB0aGlzLmNhbnZhcy5fb2Zmc2V0cy50b3AgKyB0aGlzLmlubmVyUGFkICsgdGhpcy5yaW5nV2lkdGggKyB0aGlzLnBhZGRpbmcgKyB0aGlzLmxhYmVsSGVpZ2h0QWRqdXN0OwogICAgICAgICAgICAgICAgdGhpcy5fbGFiZWxFbGVtLmNzcyh7bGVmdDpsLCB0b3A6dH0pOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIGRyYXcgdGhlIGludGVydmFscwogICAgICAgICAgICAKICAgICAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICAgICAgdmFyIGlubmVyID0gdGhpcy5pbnRlcnZhbElubmVyUmFkaXVzIHx8IHRoaXMuaHViUmFkaXVzICogMS41OwogICAgICAgICAgICBpZiAodGhpcy5pbnRlcnZhbE91dGVyUmFkaXVzID09IG51bGwpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3dUaWNrTGFiZWxzKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG91dGVyID0gKHRoaXMudGlja091dGVyUmFkaXVzIC0gdGhpcy50aWNrTGVuZ3RoIC0gdGhpcy50aWNrUGFkZGluZyAtIHRoaXMuZGlhbWV0ZXIvOCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB2YXIgb3V0ZXIgPSAodGhpcy50aWNrT3V0ZXJSYWRpdXMgLSB0aGlzLnRpY2tMZW5ndGggLSB0aGlzLmRpYW1ldGVyLzE2KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBvdXRlciA9IHRoaXMuaW50ZXJ2YWxPdXRlclJhZGl1czsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgcmFuZ2UgPSB0aGlzLm1heCAtIHRoaXMubWluOwogICAgICAgICAgICB2YXIgaW50cmFuZ2UgPSB0aGlzLmludGVydmFsc1t0aGlzLmludGVydmFscy5sZW5ndGgtMV0gLSB0aGlzLm1pbjsKICAgICAgICAgICAgdmFyIHN0YXJ0LCBlbmQsIHNwYW4gPSB0aGlzLnNwYW4qTWF0aC5QSS8xODA7CiAgICAgICAgICAgIGZvciAoaT0wOyBpPHRoaXMuaW50ZXJ2YWxzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBzdGFydCA9IChpID09IDApID8gc2EgOiBzYSArICh0aGlzLmludGVydmFsc1tpLTFdWzBdIC0gdGhpcy5taW4pKnNwYW4vcmFuZ2U7CiAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZW5kID0gc2EgKyAodGhpcy5pbnRlcnZhbHNbaV1bMF0gLSB0aGlzLm1pbikqc3Bhbi9yYW5nZTsKICAgICAgICAgICAgICAgIGlmIChlbmQgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgZW5kID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTsKICAgICAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSB0aGlzLmludGVydmFsc1tpXVsyXTsKICAgICAgICAgICAgICAgIGN0eC5hcmMoMCwgMCwgaW5uZXIsIHN0YXJ0LCBlbmQsIGZhbHNlKTsKICAgICAgICAgICAgICAgIGN0eC5saW5lVG8ob3V0ZXIqTWF0aC5jb3MoZW5kKSwgb3V0ZXIqTWF0aC5zaW4oZW5kKSk7CiAgICAgICAgICAgICAgICBjdHguYXJjKDAsIDAsIG91dGVyLCBlbmQsIHN0YXJ0LCB0cnVlKTsKICAgICAgICAgICAgICAgIGN0eC5saW5lVG8oaW5uZXIqTWF0aC5jb3Moc3RhcnQpLCBpbm5lcipNYXRoLnNpbihzdGFydCkpOwogICAgICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpOwogICAgICAgICAgICAgICAgY3R4LmZpbGwoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gZHJhdyB0aGUgbmVlZGxlCiAgICAgICAgICAgIHZhciBkYXRhcG9pbnQgPSB0aGlzLmRhdGFbMF1bMV07CiAgICAgICAgICAgIHZhciBkYXRhc3BhbiA9IHRoaXMubWF4IC0gdGhpcy5taW47CiAgICAgICAgICAgIGlmICh0aGlzLnBlZ05lZWRsZSkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVswXVsxXSA+IHRoaXMubWF4ICsgZGF0YXNwYW4qMy90aGlzLnNwYW4pIHsKICAgICAgICAgICAgICAgICAgICBkYXRhcG9pbnQgPSB0aGlzLm1heCArIGRhdGFzcGFuKjMvdGhpcy5zcGFuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVswXVsxXSA8IHRoaXMubWluIC0gZGF0YXNwYW4qMy90aGlzLnNwYW4pIHsKICAgICAgICAgICAgICAgICAgICBkYXRhcG9pbnQgPSB0aGlzLm1pbiAtIGRhdGFzcGFuKjMvdGhpcy5zcGFuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBkYXRhYW5nID0gKGRhdGFwb2ludCAtIHRoaXMubWluKS9kYXRhc3BhbiAqIHRoaXMuc3BhbiAqIE1hdGguUEkvMTgwICsgdGhpcy5zdGFydEFuZ2xlOwogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTsKICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IHRoaXMucmluZ0NvbG9yOwogICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSB0aGlzLnJpbmdDb2xvcjsKICAgICAgICAgICAgdGhpcy5uZWVkbGVMZW5ndGggPSAodGhpcy50aWNrT3V0ZXJSYWRpdXMgLSB0aGlzLnRpY2tMZW5ndGgpICogMC44NTsKICAgICAgICAgICAgdGhpcy5uZWVkbGVUaGlja25lc3MgPSAodGhpcy5uZWVkbGVUaGlja25lc3MgPCAyKSA/IDIgOiB0aGlzLm5lZWRsZVRoaWNrbmVzczsKICAgICAgICAgICAgdmFyIGVuZHdpZHRoID0gdGhpcy5uZWVkbGVUaGlja25lc3MgKiAwLjQ7CgogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIGRsID0gdGhpcy5uZWVkbGVMZW5ndGgvMTA7CiAgICAgICAgICAgIHZhciBkdCA9ICh0aGlzLm5lZWRsZVRoaWNrbmVzcyAtIGVuZHdpZHRoKS8xMDsKICAgICAgICAgICAgdmFyIHRlbXBsOwogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8MTA7IGkrKykgewogICAgICAgICAgICAgICAgdGVtcGwgPSB0aGlzLm5lZWRsZVRoaWNrbmVzcyAtIGkqZHQ7CiAgICAgICAgICAgICAgICBjdHgubW92ZVRvKGRsKmkqTWF0aC5jb3MoZGF0YWFuZyksIGRsKmkqTWF0aC5zaW4oZGF0YWFuZykpOwogICAgICAgICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IHRlbXBsOwogICAgICAgICAgICAgICAgY3R4LmxpbmVUbyhkbCooaSsxKSpNYXRoLmNvcyhkYXRhYW5nKSwgZGwqKGkrMSkqTWF0aC5zaW4oZGF0YWFuZykpOwogICAgICAgICAgICAgICAgY3R4LnN0cm9rZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdGhpcy5fY2VudGVyID0gWyhjdyAtIHRyYW5zICogb2ZmeCkvMiArIHRyYW5zICogb2ZmeCwgKGNoIC0gdHJhbnMqb2ZmeSkvMiArIHRyYW5zICogb2ZmeV07CiAgICAgICAgfSAgICAgICAgICAgICAgIAogICAgfTsKICAgIAogICAgJC5qcXBsb3QuTWV0ZXJHYXVnZUF4aXNSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuTWV0ZXJHYXVnZUF4aXNSZW5kZXJlci5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7CiAgICAkLmpxcGxvdC5NZXRlckdhdWdlQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90Lk1ldGVyR2F1Z2VBeGlzUmVuZGVyZXI7CiAgICAgICAgCiAgICAKICAgIC8vIFRoZXJlIGFyZSBubyB0cmFkaXRpb25hbCBheGVzIG9uIGEgZ2F1Z2UgY2hhcnQuICBXZSBqdXN0IG5lZWQgdG8gcHJvdmlkZQogICAgLy8gZHVtbXkgb2JqZWN0cyB3aXRoIHByb3BlcnRpZXMgc28gdGhlIHBsb3Qgd2lsbCByZW5kZXIuCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBheGlzIG9iamVjdC4KICAgICQuanFwbG90Lk1ldGVyR2F1Z2VBeGlzUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zKXsKICAgICAgICAvLwogICAgICAgIHRoaXMudGlja1JlbmRlcmVyID0gJC5qcXBsb3QuTWV0ZXJHYXVnZVRpY2tSZW5kZXJlcjsKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgICAgICAvLyBJIGRvbid0IHRoaW5rIEknbSBnb2luZyB0byBuZWVkIF9kYXRhQm91bmRzIGhlcmUuCiAgICAgICAgLy8gaGF2ZSB0byBnbyBBeGlzIHNjYWxpbmcgaW4gYSB3YXkgdG8gZml0IGNoYXJ0IG9udG8gcGxvdCBhcmVhCiAgICAgICAgLy8gYW5kIHByb3ZpZGUgdTJwIGFuZCBwMnUgZnVuY3Rpb25hbGl0eSBmb3IgbW91c2UgY3Vyc29yLCBldGMuCiAgICAgICAgLy8gZm9yIGNvbnZpZW5lbmNlIHNldCBfZGF0YUJvdW5kcyB0byAwIGFuZCAxMDAgYW5kCiAgICAgICAgLy8gc2V0IG1pbi9tYXggdG8gMCBhbmQgMTAwLgogICAgICAgIHRoaXMuX2RhdGFCb3VuZHMgPSB7bWluOjAsIG1heDoxMDB9OwogICAgICAgIHRoaXMubWluID0gMDsKICAgICAgICB0aGlzLm1heCA9IDEwMDsKICAgICAgICB0aGlzLnNob3dUaWNrcyA9IGZhbHNlOwogICAgICAgIHRoaXMudGlja3MgPSBbXTsKICAgICAgICB0aGlzLnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgdGhpcy5zaG93ID0gZmFsc2U7IAogICAgfTsKICAgIAogICAgJC5qcXBsb3QuTWV0ZXJHYXVnZUxlZ2VuZFJlbmRlcmVyID0gZnVuY3Rpb24oKXsKICAgICAgICAkLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyLmNhbGwodGhpcyk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5NZXRlckdhdWdlTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlID0gbmV3ICQuanFwbG90LlRhYmxlTGVnZW5kUmVuZGVyZXIoKTsKICAgICQuanFwbG90Lk1ldGVyR2F1Z2VMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5NZXRlckdhdWdlTGVnZW5kUmVuZGVyZXI7CiAgICAKICAgIC8qKgogICAgICogQ2xhc3M6ICQuanFwbG90Lk1ldGVyR2F1Z2VMZWdlbmRSZW5kZXJlcgogICAgICpNZXRlciBnYXVnZXMgZG9uJ3QgdHlwaWNhbGx5IGhhdmUgYSBsZWdlbmQsIHRoaXMgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGxlZ2VuZCByZW5kZXJlci4KICAgICAqLwogICAgJC5qcXBsb3QuTWV0ZXJHYXVnZUxlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgIC8vIE1heGltdW0gbnVtYmVyIG9mIHJvd3MgaW4gdGhlIGxlZ2VuZC4gIDAgb3IgbnVsbCBmb3IgdW5saW1pdGVkLgogICAgICAgIHRoaXMubnVtYmVyUm93cyA9IG51bGw7CiAgICAgICAgLy8gTWF4aW11bSBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgbGVnZW5kLiAgMCBvciBudWxsIGZvciB1bmxpbWl0ZWQuCiAgICAgICAgdGhpcy5udW1iZXJDb2x1bW5zID0gbnVsbDsKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgIH07CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIGNvbnRleHQgb2YgbGVnZW5kCiAgICAkLmpxcGxvdC5NZXRlckdhdWdlTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbigpIHsKICAgICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAgICAgICAgIHZhciBzZXJpZXMgPSB0aGlzLl9zZXJpZXM7CiAgICAgICAgICAgIHZhciBzcyA9ICdwb3NpdGlvbjphYnNvbHV0ZTsnOwogICAgICAgICAgICBzcyArPSAodGhpcy5iYWNrZ3JvdW5kKSA/ICdiYWNrZ3JvdW5kOicrdGhpcy5iYWNrZ3JvdW5kKyc7JyA6ICcnOwogICAgICAgICAgICBzcyArPSAodGhpcy5ib3JkZXIpID8gJ2JvcmRlcjonK3RoaXMuYm9yZGVyKyc7JyA6ICcnOwogICAgICAgICAgICBzcyArPSAodGhpcy5mb250U2l6ZSkgPyAnZm9udC1zaXplOicrdGhpcy5mb250U2l6ZSsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMuZm9udEZhbWlseSkgPyAnZm9udC1mYW1pbHk6Jyt0aGlzLmZvbnRGYW1pbHkrJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLnRleHRDb2xvcikgPyAnY29sb3I6Jyt0aGlzLnRleHRDb2xvcisnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMubWFyZ2luVG9wICE9IG51bGwpID8gJ21hcmdpbi10b3A6Jyt0aGlzLm1hcmdpblRvcCsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMubWFyZ2luQm90dG9tICE9IG51bGwpID8gJ21hcmdpbi1ib3R0b206Jyt0aGlzLm1hcmdpbkJvdHRvbSsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMubWFyZ2luTGVmdCAhPSBudWxsKSA/ICdtYXJnaW4tbGVmdDonK3RoaXMubWFyZ2luTGVmdCsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMubWFyZ2luUmlnaHQgIT0gbnVsbCkgPyAnbWFyZ2luLXJpZ2h0OicrdGhpcy5tYXJnaW5SaWdodCsnOycgOiAnJzsKICAgICAgICAgICAgdGhpcy5fZWxlbSA9ICQoJzx0YWJsZSBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9Iicrc3MrJyI+PC90YWJsZT4nKTsKICAgICAgICAgICAgLy8gTWV0ZXJHYXVnZSBjaGFydHMgbGVnZW5kcyBkb24ndCBnbyBieSBudW1iZXIgb2Ygc2VyaWVzLCBidXQgYnkgbnVtYmVyIG9mIGRhdGEgcG9pbnRzCiAgICAgICAgICAgIC8vIGluIHRoZSBzZXJpZXMuICBSZWZhY3RvciB0aGluZ3MgaGVyZSBmb3IgdGhhdC4KICAgICAgICAgICAgCiAgICAgICAgICAgIHZhciBwYWQgPSBmYWxzZSwgCiAgICAgICAgICAgICAgICByZXZlcnNlID0gZmFsc2UsCiAgICAgICAgICAgICAgICBuciwgbmM7CiAgICAgICAgICAgIHZhciBzID0gc2VyaWVzWzBdOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHMuc2hvdykgewogICAgICAgICAgICAgICAgdmFyIHBkID0gcy5kYXRhOwogICAgICAgICAgICAgICAgaWYgKHRoaXMubnVtYmVyUm93cykgewogICAgICAgICAgICAgICAgICAgIG5yID0gdGhpcy5udW1iZXJSb3dzOwogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5udW1iZXJDb2x1bW5zKXsKICAgICAgICAgICAgICAgICAgICAgICAgbmMgPSBNYXRoLmNlaWwocGQubGVuZ3RoL25yKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgbmMgPSB0aGlzLm51bWJlckNvbHVtbnM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5udW1iZXJDb2x1bW5zKSB7CiAgICAgICAgICAgICAgICAgICAgbmMgPSB0aGlzLm51bWJlckNvbHVtbnM7CiAgICAgICAgICAgICAgICAgICAgbnIgPSBNYXRoLmNlaWwocGQubGVuZ3RoL3RoaXMubnVtYmVyQ29sdW1ucyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBuciA9IHBkLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBuYyA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBpLCBqLCB0ciwgdGQxLCB0ZDIsIGx0LCBycywgY29sb3I7CiAgICAgICAgICAgICAgICB2YXIgaWR4ID0gMDsgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPG5yOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAocmV2ZXJzZSl7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyID0gJCgnPHRyIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIj48L3RyPicpLnByZXBlbmRUbyh0aGlzLl9lbGVtKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgdHIgPSAkKCc8dHIgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiPjwvdHI+JykuYXBwZW5kVG8odGhpcy5fZWxlbSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZvciAoaj0wOyBqPG5jOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA8IHBkLmxlbmd0aCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWJ1Z2dlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbHQgPSB0aGlzLmxhYmVsc1tpZHhdIHx8IHBkW2lkeF1bMF0udG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gcy5jb2xvcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmV2ZXJzZSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGk+MCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gbnIgLTEpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBycyA9IChwYWQpID8gdGhpcy5yb3dTcGFjaW5nIDogJzAnOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDEgPSAkKCc8dGQgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nLXRvcDonK3JzKyc7Ij4nKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2PjxkaXYgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQtc3dhdGNoIiBzdHlsZT0iYm9yZGVyLWNvbG9yOicrY29sb3IrJzsiPjwvZGl2PicrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2PjwvdGQ+Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDIgPSAkKCc8dGQgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSJwYWRkaW5nLXRvcDonK3JzKyc7Ij48L3RkPicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZXNjYXBlSHRtbCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQyLnRleHQobHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQyLmh0bWwobHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldmVyc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDIucHJlcGVuZFRvKHRyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDEucHJlcGVuZFRvKHRyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMS5hcHBlbmRUbyh0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQyLmFwcGVuZFRvKHRyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWR4Kys7CiAgICAgICAgICAgICAgICAgICAgfSAgIAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLl9lbGVtOyAgICAgICAgICAgICAgICAKICAgIH07CiAgICAKICAgIAogICAgLy8gc2V0dXAgZGVmYXVsdCByZW5kZXJlcnMgZm9yIGF4ZXMgYW5kIGxlZ2VuZCBzbyB1c2VyIGRvZXNuJ3QgaGF2ZSB0bwogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgcGxvdAogICAgZnVuY3Rpb24gcHJlSW5pdCh0YXJnZXQsIGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICAvLyBkZWJ1Z2dlcgogICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogICAgICAgIG9wdGlvbnMuYXhlc0RlZmF1bHRzID0gb3B0aW9ucy5heGVzRGVmYXVsdHMgfHwge307CiAgICAgICAgb3B0aW9ucy5sZWdlbmQgPSBvcHRpb25zLmxlZ2VuZCB8fCB7fTsKICAgICAgICBvcHRpb25zLnNlcmllc0RlZmF1bHRzID0gb3B0aW9ucy5zZXJpZXNEZWZhdWx0cyB8fCB7fTsKICAgICAgICBvcHRpb25zLmdyaWQgPSBvcHRpb25zLmdyaWQgfHwge307CiAgICAgICAgICAgCiAgICAgICAgLy8gb25seSBzZXQgdGhlc2UgaWYgdGhlcmUgaXMgYSBnYXVnZSBzZXJpZXMKICAgICAgICB2YXIgc2V0b3B0cyA9IGZhbHNlOwogICAgICAgIGlmIChvcHRpb25zLnNlcmllc0RlZmF1bHRzLnJlbmRlcmVyID09ICQuanFwbG90Lk1ldGVyR2F1Z2VSZW5kZXJlcikgewogICAgICAgICAgICBzZXRvcHRzID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAob3B0aW9ucy5zZXJpZXMpIHsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpIDwgb3B0aW9ucy5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnNlcmllc1tpXS5yZW5kZXJlciA9PSAkLmpxcGxvdC5NZXRlckdhdWdlUmVuZGVyZXIpIHsKICAgICAgICAgICAgICAgICAgICBzZXRvcHRzID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoc2V0b3B0cykgewogICAgICAgICAgICBvcHRpb25zLmF4ZXNEZWZhdWx0cy5yZW5kZXJlciA9ICQuanFwbG90Lk1ldGVyR2F1Z2VBeGlzUmVuZGVyZXI7CiAgICAgICAgICAgIG9wdGlvbnMubGVnZW5kLnJlbmRlcmVyID0gJC5qcXBsb3QuTWV0ZXJHYXVnZUxlZ2VuZFJlbmRlcmVyOwogICAgICAgICAgICBvcHRpb25zLmxlZ2VuZC5wcmVEcmF3ID0gdHJ1ZTsKICAgICAgICAgICAgb3B0aW9ucy5ncmlkLmJhY2tncm91bmQgPSBvcHRpb25zLmdyaWQuYmFja2dyb3VuZCB8fCAnd2hpdGUnOwogICAgICAgICAgICBvcHRpb25zLmdyaWQuZHJhd0dyaWRsaW5lcyA9IGZhbHNlOwogICAgICAgICAgICBvcHRpb25zLmdyaWQuYm9yZGVyV2lkdGggPSAob3B0aW9ucy5ncmlkLmJvcmRlcldpZHRoICE9IG51bGwpID8gb3B0aW9ucy5ncmlkLmJvcmRlcldpZHRoIDogMDsKICAgICAgICAgICAgb3B0aW9ucy5ncmlkLnNoYWRvdyA9IChvcHRpb25zLmdyaWQuc2hhZG93ICE9IG51bGwpID8gb3B0aW9ucy5ncmlkLnNoYWRvdyA6IGZhbHNlOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgcGxvdAogICAgZnVuY3Rpb24gcG9zdFBhcnNlT3B0aW9ucyhvcHRpb25zKSB7CiAgICAgICAgLy8KICAgIH0KICAgIAogICAgJC5qcXBsb3QucHJlSW5pdEhvb2tzLnB1c2gocHJlSW5pdCk7CiAgICAkLmpxcGxvdC5wb3N0UGFyc2VPcHRpb25zSG9va3MucHVzaChwb3N0UGFyc2VPcHRpb25zKTsKICAgIAogICAgJC5qcXBsb3QuTWV0ZXJHYXVnZVRpY2tSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkF4aXNUaWNrUmVuZGVyZXIuY2FsbCh0aGlzKTsKICAgIH07CiAgICAKICAgICQuanFwbG90Lk1ldGVyR2F1Z2VUaWNrUmVuZGVyZXIucHJvdG90eXBlID0gbmV3ICQuanFwbG90LkF4aXNUaWNrUmVuZGVyZXIoKTsKICAgICQuanFwbG90Lk1ldGVyR2F1Z2VUaWNrUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuTWV0ZXJHYXVnZVRpY2tSZW5kZXJlcjsKICAgIAp9KShqUXVlcnkpOwogICAgCiAgICAK]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.meterGaugeRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGMpe2MuanFwbG90Lk1ldGVyR2F1Z2VSZW5kZXJlcj1mdW5jdGlvbigpe2MuanFwbG90LkxpbmVSZW5kZXJlci5jYWxsKHRoaXMpfTtjLmpxcGxvdC5NZXRlckdhdWdlUmVuZGVyZXIucHJvdG90eXBlPW5ldyBjLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTtjLmpxcGxvdC5NZXRlckdhdWdlUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWMuanFwbG90Lk1ldGVyR2F1Z2VSZW5kZXJlcjtjLmpxcGxvdC5NZXRlckdhdWdlUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZSl7dGhpcy5kaWFtZXRlcj1udWxsO3RoaXMucGFkZGluZz1udWxsO3RoaXMuc2hhZG93T2Zmc2V0PTI7dGhpcy5zaGFkb3dBbHBoYT0wLjA3O3RoaXMuc2hhZG93RGVwdGg9NDt0aGlzLmJhY2tncm91bmQ9IiNlZmVmZWYiO3RoaXMucmluZ0NvbG9yPSIjQkJDNkQwIjt0aGlzLm5lZWRsZUNvbG9yPSIjQzNEM0U1Ijt0aGlzLnRpY2tDb2xvcj0iIzk4OTg5OCI7dGhpcy5yaW5nV2lkdGg9bnVsbDt0aGlzLm1pbjt0aGlzLm1heDt0aGlzLnRpY2tzPVtdO3RoaXMuc2hvd1RpY2tzPXRydWU7dGhpcy5zaG93VGlja0xhYmVscz10cnVlO3RoaXMubGFiZWw9bnVsbDt0aGlzLmxhYmVsSGVpZ2h0QWRqdXN0PTA7dGhpcy5sYWJlbFBvc2l0aW9uPSJpbnNpZGUiO3RoaXMuaW50ZXJ2YWxzPVtdO3RoaXMuaW50ZXJ2YWxDb2xvcnM9WyIjNGJiMmM1IiwiI0VBQTIyOCIsIiNjNWI0N2YiLCIjNTc5NTc1IiwiIzgzOTU1NyIsIiM5NThjMTIiLCIjOTUzNTc5IiwiIzRiNWRlNCIsIiNkOGI4M2YiLCIjZmY1ODAwIiwiIzAwODVjYyIsIiNjNzQ3YTMiLCIjY2RkZjU0IiwiI0ZCRDE3OCIsIiMyNkI0RTMiLCIjYmQ3MGM3Il07dGhpcy5pbnRlcnZhbElubmVyUmFkaXVzPW51bGw7dGhpcy5pbnRlcnZhbE91dGVyUmFkaXVzPW51bGw7dGhpcy50aWNrUmVuZGVyZXI9Yy5qcXBsb3QuTWV0ZXJHYXVnZVRpY2tSZW5kZXJlcjt0aGlzLnRpY2tQb3NpdGlvbnM9WzEsMiwyLjUsNSwxMF07dGhpcy50aWNrU3BhY2luZz0zMDt0aGlzLm51bWJlck1pbm9yVGlja3M9bnVsbDt0aGlzLmh1YlJhZGl1cz1udWxsO3RoaXMudGlja1BhZGRpbmc9bnVsbDt0aGlzLm5lZWRsZVRoaWNrbmVzcz1udWxsO3RoaXMubmVlZGxlUGFkPTY7dGhpcy5wZWdOZWVkbGU9dHJ1ZTt0aGlzLl90eXBlPSJtZXRlckdhdWdlIjtjLmV4dGVuZCh0cnVlLHRoaXMsZSk7dGhpcy50eXBlPW51bGw7dGhpcy5udW1iZXJUaWNrcz1udWxsO3RoaXMudGlja0ludGVydmFsPW51bGw7dGhpcy5zcGFuPTE4MDtpZih0aGlzLnR5cGU9PSJjaXJjdWxhciIpe3RoaXMuc2VtaUNpcmN1bGFyPWZhbHNlfWVsc2V7aWYodGhpcy50eXBlIT0iY2lyY3VsYXIiKXt0aGlzLnNlbWlDaXJjdWxhcj10cnVlfWVsc2V7dGhpcy5zZW1pQ2lyY3VsYXI9KHRoaXMuc3Bhbjw9MTgwKT90cnVlOmZhbHNlfX10aGlzLl90aWNrUG9pbnRzPVtdO3RoaXMuX2xhYmVsRWxlbT1udWxsO3RoaXMuc3RhcnRBbmdsZT0oOTArKDM2MC10aGlzLnNwYW4pLzIpKk1hdGguUEkvMTgwO3RoaXMuZW5kQW5nbGU9KDkwLSgzNjAtdGhpcy5zcGFuKS8yKSpNYXRoLlBJLzE4MDt0aGlzLnNldG1pbj0hISh0aGlzLm1pbj09bnVsbCk7dGhpcy5zZXRtYXg9ISEodGhpcy5tYXg9PW51bGwpO2lmKHRoaXMuaW50ZXJ2YWxzLmxlbmd0aCl7aWYodGhpcy5pbnRlcnZhbHNbMF0ubGVuZ3RoPT1udWxsfHx0aGlzLmludGVydmFscy5sZW5ndGg9PTEpe2Zvcih2YXIgZj0wO2Y8dGhpcy5pbnRlcnZhbHMubGVuZ3RoO2YrKyl7dGhpcy5pbnRlcnZhbHNbZl09W3RoaXMuaW50ZXJ2YWxzW2ZdLHRoaXMuaW50ZXJ2YWxzW2ZdLHRoaXMuaW50ZXJ2YWxDb2xvcnNbZl1dfX1lbHNle2lmKHRoaXMuaW50ZXJ2YWxzWzBdLmxlbmd0aD09Mil7Zm9yKGY9MDtmPHRoaXMuaW50ZXJ2YWxzLmxlbmd0aDtmKyspe3RoaXMuaW50ZXJ2YWxzW2ZdPVt0aGlzLmludGVydmFsc1tmXVswXSx0aGlzLmludGVydmFsc1tmXVsxXSx0aGlzLmludGVydmFsQ29sb3JzW2ZdXX19fX1pZih0aGlzLnRpY2tzLmxlbmd0aCl7aWYodGhpcy50aWNrc1swXS5sZW5ndGg9PW51bGx8fHRoaXMudGlja3NbMF0ubGVuZ3RoPT0xKXtmb3IodmFyIGY9MDtmPHRoaXMudGlja3MubGVuZ3RoO2YrKyl7dGhpcy50aWNrc1tmXT1bdGhpcy50aWNrc1tmXSx0aGlzLnRpY2tzW2ZdXX19dGhpcy5taW49KHRoaXMubWluPT1udWxsKT90aGlzLnRpY2tzWzBdWzBdOnRoaXMubWluO3RoaXMubWF4PSh0aGlzLm1heD09bnVsbCk/dGhpcy50aWNrc1t0aGlzLnRpY2tzLmxlbmd0aC0xXVswXTp0aGlzLm1heDt0aGlzLnNldG1pbj1mYWxzZTt0aGlzLnNldG1heD1mYWxzZTt0aGlzLm51bWJlclRpY2tzPXRoaXMudGlja3MubGVuZ3RoO3RoaXMudGlja0ludGVydmFsPXRoaXMudGlja3NbMV1bMF0tdGhpcy50aWNrc1swXVswXTt0aGlzLnRpY2tGYWN0b3I9TWF0aC5mbG9vcihwYXJzZUZsb2F0KChNYXRoLmxvZyh0aGlzLnRpY2tJbnRlcnZhbCkvTWF0aC5sb2coMTApKS50b0ZpeGVkKDExKSkpO3RoaXMubnVtYmVyTWlub3JUaWNrcz1iKHRoaXMudGlja1Bvc2l0aW9ucyx0aGlzLnRpY2tJbnRlcnZhbCx0aGlzLnRpY2tGYWN0b3IpO2lmKCF0aGlzLm51bWJlck1pbm9yVGlja3Mpe3RoaXMubnVtYmVyTWlub3JUaWNrcz1iKHRoaXMudGlja1Bvc2l0aW9ucyx0aGlzLnRpY2tJbnRlcnZhbCx0aGlzLnRpY2tGYWN0b3ItMSl9aWYoIXRoaXMubnVtYmVyTWlub3JUaWNrcyl7dGhpcy5udW1iZXJNaW5vclRpY2tzPTF9fWVsc2V7aWYodGhpcy5pbnRlcnZhbHMubGVuZ3RoKXt0aGlzLm1pbj0odGhpcy5taW49PW51bGwpPzA6dGhpcy5taW47dGhpcy5zZXRtaW49ZmFsc2U7aWYodGhpcy5tYXg9PW51bGwpe2lmKHRoaXMuaW50ZXJ2YWxzW3RoaXMuaW50ZXJ2YWxzLmxlbmd0aC0xXVswXT49dGhpcy5kYXRhWzBdWzFdKXt0aGlzLm1heD10aGlzLmludGVydmFsc1t0aGlzLmludGVydmFscy5sZW5ndGgtMV1bMF07dGhpcy5zZXRtYXg9ZmFsc2V9fWVsc2V7dGhpcy5zZXRtYXg9ZmFsc2V9fWVsc2V7dGhpcy5taW49KHRoaXMubWluPT1udWxsKT8wOnRoaXMubWluO3RoaXMuc2V0bWluPWZhbHNlO2lmKHRoaXMubWF4PT1udWxsKXt0aGlzLm1heD10aGlzLmRhdGFbMF1bMV0qMS4yNTt0aGlzLnNldG1heD10cnVlfWVsc2V7dGhpcy5zZXRtYXg9ZmFsc2V9fX19O2MuanFwbG90Lk1ldGVyR2F1Z2VSZW5kZXJlci5wcm90b3R5cGUuc2V0R3JpZERhdGE9ZnVuY3Rpb24oail7dmFyIGY9W107dmFyIGs9W107dmFyIGU9dGhpcy5zdGFydEFuZ2xlO2Zvcih2YXIgaD0wO2g8dGhpcy5kYXRhLmxlbmd0aDtoKyspe2YucHVzaCh0aGlzLmRhdGFbaF1bMV0pO2sucHVzaChbdGhpcy5kYXRhW2hdWzBdXSk7aWYoaD4wKXtmW2hdKz1mW2gtMV19fXZhciBnPU1hdGguUEkqMi9mW2YubGVuZ3RoLTFdO2Zvcih2YXIgaD0wO2g8Zi5sZW5ndGg7aCsrKXtrW2hdWzFdPWZbaF0qZ310aGlzLmdyaWREYXRhPWt9O2MuanFwbG90Lk1ldGVyR2F1Z2VSZW5kZXJlci5wcm90b3R5cGUubWFrZUdyaWREYXRhPWZ1bmN0aW9uKGosayl7dmFyIGY9W107dmFyIGw9W107dmFyIGU9dGhpcy5zdGFydEFuZ2xlO2Zvcih2YXIgaD0wO2g8ai5sZW5ndGg7aCsrKXtmLnB1c2goaltoXVsxXSk7bC5wdXNoKFtqW2hdWzBdXSk7aWYoaD4wKXtmW2hdKz1mW2gtMV19fXZhciBnPU1hdGguUEkqMi9mW2YubGVuZ3RoLTFdO2Zvcih2YXIgaD0wO2g8Zi5sZW5ndGg7aCsrKXtsW2hdWzFdPWZbaF0qZ31yZXR1cm4gbH07ZnVuY3Rpb24gYihqLGYsZyl7dmFyIGU7Zm9yKHZhciBoPWoubGVuZ3RoLTE7aD49MDtoLS0pe2U9Zi8oaltoXSpNYXRoLnBvdygxMCxnKSk7aWYoZT09NHx8ZT09NSl7cmV0dXJuIGUtMX19cmV0dXJuIG51bGx9Yy5qcXBsb3QuTWV0ZXJHYXVnZVJlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKFgsYUMsYXApe3ZhciBhYTt2YXIgYU09KGFwIT11bmRlZmluZWQpP2FwOnt9O3ZhciBhaT0wO3ZhciBhaD0wO3ZhciBhdD0xO2lmKGFwLmxlZ2VuZEluZm8mJmFwLmxlZ2VuZEluZm8ucGxhY2VtZW50PT0iaW5zaWRlIil7dmFyIGFJPWFwLmxlZ2VuZEluZm87c3dpdGNoKGFJLmxvY2F0aW9uKXtjYXNlIm53IjphaT1hSS53aWR0aCthSS54b2Zmc2V0O2JyZWFrO2Nhc2UidyI6YWk9YUkud2lkdGgrYUkueG9mZnNldDticmVhaztjYXNlInN3IjphaT1hSS53aWR0aCthSS54b2Zmc2V0O2JyZWFrO2Nhc2UibmUiOmFpPWFJLndpZHRoK2FJLnhvZmZzZXQ7YXQ9LTE7YnJlYWs7Y2FzZSJlIjphaT1hSS53aWR0aCthSS54b2Zmc2V0O2F0PS0xO2JyZWFrO2Nhc2Uic2UiOmFpPWFJLndpZHRoK2FJLnhvZmZzZXQ7YXQ9LTE7YnJlYWs7Y2FzZSJuIjphaD1hSS5oZWlnaHQrYUkueW9mZnNldDticmVhaztjYXNlInMiOmFoPWFJLmhlaWdodCthSS55b2Zmc2V0O2F0PS0xO2JyZWFrO2RlZmF1bHQ6YnJlYWt9fWlmKHRoaXMubGFiZWwpe3RoaXMuX2xhYmVsRWxlbT1jKCc8ZGl2IGNsYXNzPSJqcXBsb3QtbWV0ZXJHYXVnZS1sYWJlbCIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyI+Jyt0aGlzLmxhYmVsKyI8L2Rpdj4iKTt0aGlzLmNhbnZhcy5fZWxlbS5hZnRlcih0aGlzLl9sYWJlbEVsZW0pfXZhciBtPShhTS5zaGFkb3chPXVuZGVmaW5lZCk/YU0uc2hhZG93OnRoaXMuc2hhZG93O3ZhciBOPShhTS5zaG93TGluZSE9dW5kZWZpbmVkKT9hTS5zaG93TGluZTp0aGlzLnNob3dMaW5lO3ZhciBJPShhTS5maWxsIT11bmRlZmluZWQpP2FNLmZpbGw6dGhpcy5maWxsO3ZhciBLPVguY2FudmFzLndpZHRoO3ZhciBTPVguY2FudmFzLmhlaWdodDtpZih0aGlzLnBhZGRpbmc9PW51bGwpe3RoaXMucGFkZGluZz1NYXRoLnJvdW5kKE1hdGgubWluKEssUykvMzApfXZhciBRPUstYWktMip0aGlzLnBhZGRpbmc7dmFyIGFiPVMtYWgtMip0aGlzLnBhZGRpbmc7aWYodGhpcy5sYWJlbFBvc2l0aW9uPT0iYm90dG9tIiYmdGhpcy5sYWJlbCl7YWItPXRoaXMuX2xhYmVsRWxlbS5vdXRlckhlaWdodCh0cnVlKX12YXIgTD1NYXRoLm1pbihRLGFiKTt2YXIgYWQ9TDtpZighdGhpcy5kaWFtZXRlcil7aWYodGhpcy5zZW1pQ2lyY3VsYXIpe2lmKFE+PTIqYWIpe2lmKCF0aGlzLnJpbmdXaWR0aCl7dGhpcy5yaW5nV2lkdGg9MiphYi8zNX10aGlzLm5lZWRsZVRoaWNrbmVzcz10aGlzLm5lZWRsZVRoaWNrbmVzc3x8MitNYXRoLnBvdyh0aGlzLnJpbmdXaWR0aCwwLjgpO3RoaXMuaW5uZXJQYWQ9dGhpcy5yaW5nV2lkdGgvMit0aGlzLm5lZWRsZVRoaWNrbmVzcy8yK3RoaXMubmVlZGxlUGFkO3RoaXMuZGlhbWV0ZXI9MiooYWItMip0aGlzLmlubmVyUGFkKX1lbHNle2lmKCF0aGlzLnJpbmdXaWR0aCl7dGhpcy5yaW5nV2lkdGg9US8zNX10aGlzLm5lZWRsZVRoaWNrbmVzcz10aGlzLm5lZWRsZVRoaWNrbmVzc3x8MitNYXRoLnBvdyh0aGlzLnJpbmdXaWR0aCwwLjgpO3RoaXMuaW5uZXJQYWQ9dGhpcy5yaW5nV2lkdGgvMit0aGlzLm5lZWRsZVRoaWNrbmVzcy8yK3RoaXMubmVlZGxlUGFkO3RoaXMuZGlhbWV0ZXI9US0yKnRoaXMuaW5uZXJQYWQtdGhpcy5yaW5nV2lkdGgtdGhpcy5wYWRkaW5nfXRoaXMuX2NlbnRlcj1bKEstYXQqYWkpLzIrYXQqYWksKFMrYXQqYWgtdGhpcy5wYWRkaW5nLXRoaXMucmluZ1dpZHRoLXRoaXMuaW5uZXJQYWQpXX1lbHNle2lmKCF0aGlzLnJpbmdXaWR0aCl7dGhpcy5yaW5nV2lkdGg9YWQvMzV9dGhpcy5uZWVkbGVUaGlja25lc3M9dGhpcy5uZWVkbGVUaGlja25lc3N8fDIrTWF0aC5wb3codGhpcy5yaW5nV2lkdGgsMC44KTt0aGlzLmlubmVyUGFkPTA7dGhpcy5kaWFtZXRlcj1hZC10aGlzLnJpbmdXaWR0aDt0aGlzLl9jZW50ZXI9WyhLLWF0KmFpKS8yK2F0KmFpLChTLWF0KmFoKS8yK2F0KmFoXX1pZih0aGlzLl9sYWJlbEVsZW0mJnRoaXMubGFiZWxQb3NpdGlvbj09ImJvdHRvbSIpe3RoaXMuX2NlbnRlclsxXS09dGhpcy5fbGFiZWxFbGVtLm91dGVySGVpZ2h0KHRydWUpfX10aGlzLl9yYWRpdXM9dGhpcy5kaWFtZXRlci8yO3RoaXMudGlja1NwYWNpbmc9NjAwMC90aGlzLmRpYW1ldGVyO2lmKCF0aGlzLmh1YlJhZGl1cyl7dGhpcy5odWJSYWRpdXM9dGhpcy5kaWFtZXRlci8xOH10aGlzLnNoYWRvd09mZnNldD0wLjUrdGhpcy5yaW5nV2lkdGgvOTt0aGlzLnNoYWRvd1dpZHRoPXRoaXMucmluZ1dpZHRoKjE7dGhpcy50aWNrUGFkZGluZz0zK01hdGgucG93KHRoaXMuZGlhbWV0ZXIvMjAsMC43KTt0aGlzLnRpY2tPdXRlclJhZGl1cz10aGlzLl9yYWRpdXMtdGhpcy5yaW5nV2lkdGgvMi10aGlzLnRpY2tQYWRkaW5nO3RoaXMudGlja0xlbmd0aD0odGhpcy5zaG93VGlja3MpP3RoaXMuX3JhZGl1cy8xMzowO2lmKHRoaXMudGlja3MubGVuZ3RoPT0wKXt2YXIgQT10aGlzLm1heCxhTD10aGlzLm1pbixxPXRoaXMuc2V0bWF4LGFHPXRoaXMuc2V0bWluLGF1PShBLWFMKSp0aGlzLnRpY2tTcGFjaW5nL3RoaXMuc3Bhbjt2YXIgYXc9TWF0aC5mbG9vcihwYXJzZUZsb2F0KChNYXRoLmxvZyhhdSkvTWF0aC5sb2coMTApKS50b0ZpeGVkKDExKSkpO3ZhciBhbj0oYXUvTWF0aC5wb3coMTAsYXcpKTsoYW4+MiYmYW48PTIuNSk/YW49Mi41OmFuPU1hdGguY2VpbChhbik7dmFyIFQ9dGhpcy50aWNrUG9zaXRpb25zO3ZhciBhQSxhaztmb3IoYWE9MDthYTxULmxlbmd0aDthYSsrKXtpZihhbj09VFthYV18fGFhJiZUW2FhLTFdPGFuJiZhbjxUW2FhXSl7YXU9VFthYV0qTWF0aC5wb3coMTAsYXcpO2FBPWFhfX1mb3IoYWE9MDthYTxULmxlbmd0aDthYSsrKXtpZihhbj09VFthYV18fGFhJiZUW2FhLTFdPGFuJiZhbjxUW2FhXSl7YXU9VFthYV0qTWF0aC5wb3coMTAsYXcpO2FrPU1hdGguY2VpbCgoQS1hTCkvYXUpfX1pZihxJiZhRyl7dmFyIGFQPShhTD4wKT9hTC1hTCVhdTphTC1hTCVhdS1hdTtpZighdGhpcy5mb3JjZVplcm8pe3ZhciBEPU1hdGgubWluKGFMLWFQLDAuOCphdSk7dmFyIG89TWF0aC5mbG9vcihEL1RbYUFdKTtpZihvPjEpe2FQPWFQK1RbYUFdKihvLTEpO2lmKHBhcnNlSW50KGFQLDEwKSE9YVAmJnBhcnNlSW50KGFQLVRbYUFdLDEwKT09YVAtVFthQV0pe2FQPWFQLVRbYUFdfX19aWYoYUw9PWFQKXthTC09YXV9ZWxzZXtpZihhTC1hUD4wLjIzKmF1KXthTD1hUH1lbHNle2FMPWFQLWF1O2FrKz0xfX1hays9MTt2YXIgRT1hTCsoYWstMSkqYXU7aWYoQT49RSl7RSs9YXU7YWsrPTF9aWYoRS1BPDAuMjMqYXUpe0UrPWF1O2FrKz0xfXRoaXMubWF4PUE9RTt0aGlzLm1pbj1hTDt0aGlzLnRpY2tJbnRlcnZhbD1hdTt0aGlzLm51bWJlclRpY2tzPWFrO3ZhciBPO2ZvcihhYT0wO2FhPGFrO2FhKyspe089cGFyc2VGbG9hdCgoYUwrYWEqYXUpLnRvRml4ZWQoMTEpKTt0aGlzLnRpY2tzLnB1c2goW08sT10pfXRoaXMubWF4PXRoaXMudGlja3NbYWstMV1bMV07dGhpcy50aWNrRmFjdG9yPWF3O3RoaXMubnVtYmVyTWlub3JUaWNrcz1iKHRoaXMudGlja1Bvc2l0aW9ucyx0aGlzLnRpY2tJbnRlcnZhbCx0aGlzLnRpY2tGYWN0b3IpO2lmKCF0aGlzLm51bWJlck1pbm9yVGlja3Mpe3RoaXMubnVtYmVyTWlub3JUaWNrcz1iKHRoaXMudGlja1Bvc2l0aW9ucyx0aGlzLnRpY2tJbnRlcnZhbCx0aGlzLnRpY2tGYWN0b3ItMSl9fWVsc2V7aWYocSl7dmFyIEU9YUwrKGFrLTEpKmF1O2lmKEE+PUUpe0E9RSthdTthays9MX1lbHNle0E9RX10aGlzLnRpY2tJbnRlcnZhbD10aGlzLnRpY2tJbnRlcnZhbHx8YXU7dGhpcy5udW1iZXJUaWNrcz10aGlzLm51bWJlclRpY2tzfHxhazt2YXIgTztmb3IoYWE9MDthYTx0aGlzLm51bWJlclRpY2tzO2FhKyspe089cGFyc2VGbG9hdCgoYUwrYWEqdGhpcy50aWNrSW50ZXJ2YWwpLnRvRml4ZWQoMTEpKTt0aGlzLnRpY2tzLnB1c2goW08sT10pfXRoaXMubWF4PXRoaXMudGlja3NbdGhpcy5udW1iZXJUaWNrcy0xXVsxXTt0aGlzLnRpY2tGYWN0b3I9YXc7dGhpcy5udW1iZXJNaW5vclRpY2tzPWIodGhpcy50aWNrUG9zaXRpb25zLHRoaXMudGlja0ludGVydmFsLHRoaXMudGlja0ZhY3Rvcik7aWYoIXRoaXMubnVtYmVyTWlub3JUaWNrcyl7dGhpcy5udW1iZXJNaW5vclRpY2tzPWIodGhpcy50aWNrUG9zaXRpb25zLHRoaXMudGlja0ludGVydmFsLHRoaXMudGlja0ZhY3Rvci0xKX19fWlmKCFxJiYhYUcpe3ZhciBQPXRoaXMubWF4LXRoaXMubWluO2F3PU1hdGguZmxvb3IocGFyc2VGbG9hdCgoTWF0aC5sb2coUCkvTWF0aC5sb2coMTApKS50b0ZpeGVkKDExKSkpLTE7dmFyIGFOPVs1LDYsNCw3LDMsOCw5LDEwLDJdLFYsQyxhdj0wLE07aWYoUD4xKXt2YXIgYUo9U3RyaW5nKFApO2lmKGFKLnNlYXJjaCgvXC4vKT09LTEpe3ZhciBhRj1hSi5zZWFyY2goLzArJC8pO2F2PShhRj4wKT9hSi5sZW5ndGgtYUYtMTowfX1NPVAvTWF0aC5wb3coMTAsYXYpO2ZvcihhYT0wO2FhPGFOLmxlbmd0aDthYSsrKXtWPU0vKGFOW2FhXS0xKTtpZihWPT1wYXJzZUludChWLDEwKSl7dGhpcy5udW1iZXJUaWNrcz1hTlthYV07dGhpcy50aWNrSW50ZXJ2YWw9UC8odGhpcy5udW1iZXJUaWNrcy0xKTt0aGlzLnRpY2tGYWN0b3I9YXcrMTticmVha319dmFyIE87Zm9yKGFhPTA7YWE8dGhpcy5udW1iZXJUaWNrczthYSsrKXtPPXBhcnNlRmxvYXQoKHRoaXMubWluK2FhKnRoaXMudGlja0ludGVydmFsKS50b0ZpeGVkKDExKSk7dGhpcy50aWNrcy5wdXNoKFtPLE9dKX10aGlzLm51bWJlck1pbm9yVGlja3M9Yih0aGlzLnRpY2tQb3NpdGlvbnMsdGhpcy50aWNrSW50ZXJ2YWwsdGhpcy50aWNrRmFjdG9yKTtpZighdGhpcy5udW1iZXJNaW5vclRpY2tzKXt0aGlzLm51bWJlck1pbm9yVGlja3M9Yih0aGlzLnRpY2tQb3NpdGlvbnMsdGhpcy50aWNrSW50ZXJ2YWwsdGhpcy50aWNrRmFjdG9yLTEpfWlmKCF0aGlzLm51bWJlck1pbm9yVGlja3Mpe3RoaXMubnVtYmVyTWlub3JUaWNrcz0xO3ZhciBhSD1bNCw1LDMsNiwyXTtmb3IoYWE9MDthYTw1O2FhKyspe3ZhciBhbz10aGlzLnRpY2tJbnRlcnZhbC9hSFthYV07aWYoYW89PXBhcnNlSW50KGFvLDEwKSl7dGhpcy5udW1iZXJNaW5vclRpY2tzPWFIW2FhXS0xO2JyZWFrfX19fX12YXIgVT10aGlzLl9yYWRpdXMsYUU9dGhpcy5zdGFydEFuZ2xlLGs9dGhpcy5lbmRBbmdsZSxIPU1hdGguUEksZT1NYXRoLlBJLzI7aWYodGhpcy5zZW1pQ2lyY3VsYXIpe3ZhciB6PU1hdGguYXRhbih0aGlzLmlubmVyUGFkL1UpLGFjPXRoaXMub3V0ZXJTdGFydEFuZ2xlPWFFLXosYUI9dGhpcy5vdXRlckVuZEFuZ2xlPWsreixCPXRoaXMuaHViU3RhcnRBbmdsZT1hRS1NYXRoLmF0YW4odGhpcy5pbm5lclBhZC90aGlzLmh1YlJhZGl1cyoyKSxhZj10aGlzLmh1YkVuZEFuZ2xlPWsrTWF0aC5hdGFuKHRoaXMuaW5uZXJQYWQvdGhpcy5odWJSYWRpdXMqMik7WC5zYXZlKCk7WC50cmFuc2xhdGUodGhpcy5fY2VudGVyWzBdLHRoaXMuX2NlbnRlclsxXSk7WC5saW5lSm9pbj0icm91bmQiO1gubGluZUNhcD0icm91bmQiO1guc2F2ZSgpO1guYmVnaW5QYXRoKCk7WC5maWxsU3R5bGU9dGhpcy5iYWNrZ3JvdW5kO1guYXJjKDAsMCxVLGFjLGFCLGZhbHNlKTtYLmNsb3NlUGF0aCgpO1guZmlsbCgpO1gucmVzdG9yZSgpO3ZhciBhaj0icmdiYSgwLDAsMCwiK3RoaXMuc2hhZG93QWxwaGErIikiO1guc2F2ZSgpO2Zvcih2YXIgYWE9MDthYTx0aGlzLnNoYWRvd0RlcHRoO2FhKyspe1gudHJhbnNsYXRlKHRoaXMuc2hhZG93T2Zmc2V0Kk1hdGguY29zKHRoaXMuc2hhZG93QW5nbGUvMTgwKk1hdGguUEkpLHRoaXMuc2hhZG93T2Zmc2V0Kk1hdGguc2luKHRoaXMuc2hhZG93QW5nbGUvMTgwKk1hdGguUEkpKTtYLmJlZ2luUGF0aCgpO1guc3Ryb2tlU3R5bGU9YWo7WC5saW5lV2lkdGg9dGhpcy5zaGFkb3dXaWR0aDtYLmFyYygwLDAsVSxhYyxhQixmYWxzZSk7WC5jbG9zZVBhdGgoKTtYLnN0cm9rZSgpfVgucmVzdG9yZSgpO1guc2F2ZSgpO3ZhciBhej1wYXJzZUludCgodGhpcy5zaGFkb3dEZXB0aCsxKS8yLDEwKTtmb3IodmFyIGFhPTA7YWE8YXo7YWErKyl7WC50cmFuc2xhdGUodGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5jb3ModGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSksdGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5zaW4odGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSkpO1guYmVnaW5QYXRoKCk7WC5maWxsU3R5bGU9YWo7WC5hcmMoMCwwLHRoaXMuaHViUmFkaXVzLEIsYWYsZmFsc2UpO1guY2xvc2VQYXRoKCk7WC5maWxsKCl9WC5yZXN0b3JlKCk7WC5zYXZlKCk7WC5iZWdpblBhdGgoKTtYLnN0cm9rZVN0eWxlPXRoaXMucmluZ0NvbG9yO1gubGluZVdpZHRoPXRoaXMucmluZ1dpZHRoO1guYXJjKDAsMCxVLGFjLGFCLGZhbHNlKTtYLmNsb3NlUGF0aCgpO1guc3Ryb2tlKCk7WC5yZXN0b3JlKCk7WC5zYXZlKCk7WC5iZWdpblBhdGgoKTtYLmZpbGxTdHlsZT10aGlzLnJpbmdDb2xvcjtYLmFyYygwLDAsdGhpcy5odWJSYWRpdXMsQixhZixmYWxzZSk7WC5jbG9zZVBhdGgoKTtYLmZpbGwoKTtYLnJlc3RvcmUoKTtpZih0aGlzLnNob3dUaWNrcyl7WC5zYXZlKCk7dmFyIGY9dGhpcy50aWNrT3V0ZXJSYWRpdXMsYXE9dGhpcy50aWNrTGVuZ3RoLHY9YXEvMixGPXRoaXMubnVtYmVyTWlub3JUaWNrcyxhbT10aGlzLnNwYW4qTWF0aC5QSS8xODAvKHRoaXMudGlja3MubGVuZ3RoLTEpLHA9YW0vKEYrMSk7Zm9yKGFhPTA7YWE8dGhpcy50aWNrcy5sZW5ndGg7YWErKyl7WC5iZWdpblBhdGgoKTtYLmxpbmVXaWR0aD0xLjUrdGhpcy5kaWFtZXRlci8zNjA7WC5zdHJva2VTdHlsZT10aGlzLnJpbmdDb2xvcjt2YXIgYWU9YW0qYWErYUU7WC5tb3ZlVG8oLWYqTWF0aC5jb3MoYW0qYWErYUUpLGYqTWF0aC5zaW4oYW0qYWErYUUpKTtYLmxpbmVUbygtKGYtYXEpKk1hdGguY29zKGFtKmFhK2FFKSwoZi1hcSkqTWF0aC5zaW4oYW0qYWErYUUpKTt0aGlzLl90aWNrUG9pbnRzLnB1c2goWyhmLWFxKSpNYXRoLmNvcyhhbSphYSthRSkrdGhpcy5fY2VudGVyWzBdK3RoaXMuY2FudmFzLl9vZmZzZXRzLmxlZnQsKGYtYXEpKk1hdGguc2luKGFtKmFhK2FFKSt0aGlzLl9jZW50ZXJbMV0rdGhpcy5jYW52YXMuX29mZnNldHMudG9wLGFtKmFhK2FFXSk7WC5zdHJva2UoKTtYLmxpbmVXaWR0aD0xK3RoaXMuZGlhbWV0ZXIvNDQwO2lmKGFhPHRoaXMudGlja3MubGVuZ3RoLTEpe2Zvcih2YXIgWT0xO1k8PUY7WSsrKXtYLmJlZ2luUGF0aCgpO1gubW92ZVRvKC1mKk1hdGguY29zKGFtKmFhK3AqWSthRSksZipNYXRoLnNpbihhbSphYStwKlkrYUUpKTtYLmxpbmVUbygtKGYtdikqTWF0aC5jb3MoYW0qYWErcCpZK2FFKSwoZi12KSpNYXRoLnNpbihhbSphYStwKlkrYUUpKTtYLnN0cm9rZSgpfX19WC5yZXN0b3JlKCl9aWYodGhpcy5zaG93VGlja0xhYmVscyl7dmFyIEosVyxULGFPLGcsRyxuPTA7dmFyIGFuPXRoaXMudGlja1BhZGRpbmcqKDEtMS8odGhpcy5kaWFtZXRlci84MCsxKSk7Zm9yKGFhPTA7YWE8dGhpcy50aWNrcy5sZW5ndGg7YWErKyl7Sj1jKCc8ZGl2IGNsYXNzPSJqcXBsb3QtbWV0ZXJHYXVnZS10aWNrIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7Ij4nK3RoaXMudGlja3NbYWFdWzFdKyI8L2Rpdj4iKTt0aGlzLmNhbnZhcy5fZWxlbS5hZnRlcihKKTthTz1KLm91dGVyV2lkdGgodHJ1ZSk7Zz1KLm91dGVySGVpZ2h0KHRydWUpO1c9dGhpcy5fdGlja1BvaW50c1thYV1bMF0tYU8qKHRoaXMuX3RpY2tQb2ludHNbYWFdWzJdLU1hdGguUEkpL01hdGguUEktYW4qTWF0aC5jb3ModGhpcy5fdGlja1BvaW50c1thYV1bMl0pO1Q9dGhpcy5fdGlja1BvaW50c1thYV1bMV0tZy8yK2cvMipNYXRoLnBvdyhNYXRoLmFicygoTWF0aC5zaW4odGhpcy5fdGlja1BvaW50c1thYV1bMl0pKSksMC41KSthbi8zKk1hdGgucG93KE1hdGguYWJzKChNYXRoLnNpbih0aGlzLl90aWNrUG9pbnRzW2FhXVsyXSkpKSwwLjUpO0ouY3NzKHtsZWZ0OlcsdG9wOlQsY29sb3I6dGhpcy50aWNrQ29sb3J9KTtHPWFPKk1hdGguY29zKHRoaXMuX3RpY2tQb2ludHNbYWFdWzJdKStnKk1hdGguc2luKE1hdGguUEkvMit0aGlzLl90aWNrUG9pbnRzW2FhXVsyXS8yKTtuPShHPm4pP0c6bn19aWYodGhpcy5sYWJlbCYmdGhpcy5sYWJlbFBvc2l0aW9uPT0iaW5zaWRlIil7dmFyIFc9dGhpcy5fY2VudGVyWzBdK3RoaXMuY2FudmFzLl9vZmZzZXRzLmxlZnQ7dmFyIGFuPXRoaXMudGlja1BhZGRpbmcqKDEtMS8odGhpcy5kaWFtZXRlci84MCsxKSk7dmFyIFQ9MC41Kih0aGlzLl9jZW50ZXJbMV0rdGhpcy5jYW52YXMuX29mZnNldHMudG9wLXRoaXMuaHViUmFkaXVzKSswLjUqKHRoaXMuX2NlbnRlclsxXSt0aGlzLmNhbnZhcy5fb2Zmc2V0cy50b3AtdGhpcy50aWNrT3V0ZXJSYWRpdXMrdGhpcy50aWNrTGVuZ3RoK2FuKSt0aGlzLmxhYmVsSGVpZ2h0QWRqdXN0O1ctPXRoaXMuX2xhYmVsRWxlbS5vdXRlcldpZHRoKHRydWUpLzI7VC09dGhpcy5fbGFiZWxFbGVtLm91dGVySGVpZ2h0KHRydWUpLzI7dGhpcy5fbGFiZWxFbGVtLmNzcyh7bGVmdDpXLHRvcDpUfSl9ZWxzZXtpZih0aGlzLmxhYmVsJiZ0aGlzLmxhYmVsUG9zaXRpb249PSJib3R0b20iKXt2YXIgVz10aGlzLl9jZW50ZXJbMF0rdGhpcy5jYW52YXMuX29mZnNldHMubGVmdC10aGlzLl9sYWJlbEVsZW0ub3V0ZXJXaWR0aCh0cnVlKS8yO3ZhciBUPXRoaXMuX2NlbnRlclsxXSt0aGlzLmNhbnZhcy5fb2Zmc2V0cy50b3ArdGhpcy5pbm5lclBhZCt0aGlzLnJpbmdXaWR0aCt0aGlzLnBhZGRpbmcrdGhpcy5sYWJlbEhlaWdodEFkanVzdDt0aGlzLl9sYWJlbEVsZW0uY3NzKHtsZWZ0OlcsdG9wOlR9KX19WC5zYXZlKCk7dmFyIGF4PXRoaXMuaW50ZXJ2YWxJbm5lclJhZGl1c3x8dGhpcy5odWJSYWRpdXMqMS41O2lmKHRoaXMuaW50ZXJ2YWxPdXRlclJhZGl1cz09bnVsbCl7aWYodGhpcy5zaG93VGlja0xhYmVscyl7dmFyIGFnPSh0aGlzLnRpY2tPdXRlclJhZGl1cy10aGlzLnRpY2tMZW5ndGgtdGhpcy50aWNrUGFkZGluZy10aGlzLmRpYW1ldGVyLzgpfWVsc2V7dmFyIGFnPSh0aGlzLnRpY2tPdXRlclJhZGl1cy10aGlzLnRpY2tMZW5ndGgtdGhpcy5kaWFtZXRlci8xNil9fWVsc2V7dmFyIGFnPXRoaXMuaW50ZXJ2YWxPdXRlclJhZGl1c312YXIgUD10aGlzLm1heC10aGlzLm1pbjt2YXIgYUQ9dGhpcy5pbnRlcnZhbHNbdGhpcy5pbnRlcnZhbHMubGVuZ3RoLTFdLXRoaXMubWluO3ZhciB5LFosdT10aGlzLnNwYW4qTWF0aC5QSS8xODA7Zm9yKGFhPTA7YWE8dGhpcy5pbnRlcnZhbHMubGVuZ3RoO2FhKyspe3k9KGFhPT0wKT9hRTphRSsodGhpcy5pbnRlcnZhbHNbYWEtMV1bMF0tdGhpcy5taW4pKnUvUDtpZih5PDApe3k9MH1aPWFFKyh0aGlzLmludGVydmFsc1thYV1bMF0tdGhpcy5taW4pKnUvUDtpZihaPDApe1o9MH1YLmJlZ2luUGF0aCgpO1guZmlsbFN0eWxlPXRoaXMuaW50ZXJ2YWxzW2FhXVsyXTtYLmFyYygwLDAsYXgseSxaLGZhbHNlKTtYLmxpbmVUbyhhZypNYXRoLmNvcyhaKSxhZypNYXRoLnNpbihaKSk7WC5hcmMoMCwwLGFnLFoseSx0cnVlKTtYLmxpbmVUbyhheCpNYXRoLmNvcyh5KSxheCpNYXRoLnNpbih5KSk7WC5jbG9zZVBhdGgoKTtYLmZpbGwoKX1YLnJlc3RvcmUoKTt2YXIgYXk9dGhpcy5kYXRhWzBdWzFdO3ZhciBSPXRoaXMubWF4LXRoaXMubWluO2lmKHRoaXMucGVnTmVlZGxlKXtpZih0aGlzLmRhdGFbMF1bMV0+dGhpcy5tYXgrUiozL3RoaXMuc3Bhbil7YXk9dGhpcy5tYXgrUiozL3RoaXMuc3Bhbn1pZih0aGlzLmRhdGFbMF1bMV08dGhpcy5taW4tUiozL3RoaXMuc3Bhbil7YXk9dGhpcy5taW4tUiozL3RoaXMuc3Bhbn19dmFyIGFsPShheS10aGlzLm1pbikvUip0aGlzLnNwYW4qTWF0aC5QSS8xODArdGhpcy5zdGFydEFuZ2xlO1guc2F2ZSgpO1guYmVnaW5QYXRoKCk7WC5maWxsU3R5bGU9dGhpcy5yaW5nQ29sb3I7WC5zdHJva2VTdHlsZT10aGlzLnJpbmdDb2xvcjt0aGlzLm5lZWRsZUxlbmd0aD0odGhpcy50aWNrT3V0ZXJSYWRpdXMtdGhpcy50aWNrTGVuZ3RoKSowLjg1O3RoaXMubmVlZGxlVGhpY2tuZXNzPSh0aGlzLm5lZWRsZVRoaWNrbmVzczwyKT8yOnRoaXMubmVlZGxlVGhpY2tuZXNzO3ZhciBhSz10aGlzLm5lZWRsZVRoaWNrbmVzcyowLjQ7dmFyIHg9dGhpcy5uZWVkbGVMZW5ndGgvMTA7dmFyIHM9KHRoaXMubmVlZGxlVGhpY2tuZXNzLWFLKS8xMDt2YXIgYXI7Zm9yKHZhciBhYT0wO2FhPDEwO2FhKyspe2FyPXRoaXMubmVlZGxlVGhpY2tuZXNzLWFhKnM7WC5tb3ZlVG8oeCphYSpNYXRoLmNvcyhhbCkseCphYSpNYXRoLnNpbihhbCkpO1gubGluZVdpZHRoPWFyO1gubGluZVRvKHgqKGFhKzEpKk1hdGguY29zKGFsKSx4KihhYSsxKSpNYXRoLnNpbihhbCkpO1guc3Ryb2tlKCl9WC5yZXN0b3JlKCl9ZWxzZXt0aGlzLl9jZW50ZXI9WyhLLWF0KmFpKS8yK2F0KmFpLChTLWF0KmFoKS8yK2F0KmFoXX19O2MuanFwbG90Lk1ldGVyR2F1Z2VBeGlzUmVuZGVyZXI9ZnVuY3Rpb24oKXtjLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIuY2FsbCh0aGlzKX07Yy5qcXBsb3QuTWV0ZXJHYXVnZUF4aXNSZW5kZXJlci5wcm90b3R5cGU9bmV3IGMuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlcigpO2MuanFwbG90Lk1ldGVyR2F1Z2VBeGlzUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWMuanFwbG90Lk1ldGVyR2F1Z2VBeGlzUmVuZGVyZXI7Yy5qcXBsb3QuTWV0ZXJHYXVnZUF4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihlKXt0aGlzLnRpY2tSZW5kZXJlcj1jLmpxcGxvdC5NZXRlckdhdWdlVGlja1JlbmRlcmVyO2MuZXh0ZW5kKHRydWUsdGhpcyxlKTt0aGlzLl9kYXRhQm91bmRzPXttaW46MCxtYXg6MTAwfTt0aGlzLm1pbj0wO3RoaXMubWF4PTEwMDt0aGlzLnNob3dUaWNrcz1mYWxzZTt0aGlzLnRpY2tzPVtdO3RoaXMuc2hvd01hcms9ZmFsc2U7dGhpcy5zaG93PWZhbHNlfTtjLmpxcGxvdC5NZXRlckdhdWdlTGVnZW5kUmVuZGVyZXI9ZnVuY3Rpb24oKXtjLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyLmNhbGwodGhpcyl9O2MuanFwbG90Lk1ldGVyR2F1Z2VMZWdlbmRSZW5kZXJlci5wcm90b3R5cGU9bmV3IGMuanFwbG90LlRhYmxlTGVnZW5kUmVuZGVyZXIoKTtjLmpxcGxvdC5NZXRlckdhdWdlTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWMuanFwbG90Lk1ldGVyR2F1Z2VMZWdlbmRSZW5kZXJlcjtjLmpxcGxvdC5NZXRlckdhdWdlTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZSl7dGhpcy5udW1iZXJSb3dzPW51bGw7dGhpcy5udW1iZXJDb2x1bW5zPW51bGw7Yy5leHRlbmQodHJ1ZSx0aGlzLGUpfTtjLmpxcGxvdC5NZXRlckdhdWdlTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oKXtpZih0aGlzLnNob3cpe3ZhciBwPXRoaXMuX3Nlcmllczt2YXIgeD0icG9zaXRpb246YWJzb2x1dGU7Ijt4Kz0odGhpcy5iYWNrZ3JvdW5kKT8iYmFja2dyb3VuZDoiK3RoaXMuYmFja2dyb3VuZCsiOyI6IiI7eCs9KHRoaXMuYm9yZGVyKT8iYm9yZGVyOiIrdGhpcy5ib3JkZXIrIjsiOiIiO3grPSh0aGlzLmZvbnRTaXplKT8iZm9udC1zaXplOiIrdGhpcy5mb250U2l6ZSsiOyI6IiI7eCs9KHRoaXMuZm9udEZhbWlseSk/ImZvbnQtZmFtaWx5OiIrdGhpcy5mb250RmFtaWx5KyI7IjoiIjt4Kz0odGhpcy50ZXh0Q29sb3IpPyJjb2xvcjoiK3RoaXMudGV4dENvbG9yKyI7IjoiIjt4Kz0odGhpcy5tYXJnaW5Ub3AhPW51bGwpPyJtYXJnaW4tdG9wOiIrdGhpcy5tYXJnaW5Ub3ArIjsiOiIiO3grPSh0aGlzLm1hcmdpbkJvdHRvbSE9bnVsbCk/Im1hcmdpbi1ib3R0b206Iit0aGlzLm1hcmdpbkJvdHRvbSsiOyI6IiI7eCs9KHRoaXMubWFyZ2luTGVmdCE9bnVsbCk/Im1hcmdpbi1sZWZ0OiIrdGhpcy5tYXJnaW5MZWZ0KyI7IjoiIjt4Kz0odGhpcy5tYXJnaW5SaWdodCE9bnVsbCk/Im1hcmdpbi1yaWdodDoiK3RoaXMubWFyZ2luUmlnaHQrIjsiOiIiO3RoaXMuX2VsZW09YygnPHRhYmxlIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIiBzdHlsZT0iJyt4KyciPjwvdGFibGU+Jyk7dmFyIGY9ZmFsc2UscT1mYWxzZSx1LG87dmFyIHc9cFswXTtpZih3LnNob3cpe3ZhciB0PXcuZGF0YTtpZih0aGlzLm51bWJlclJvd3Mpe3U9dGhpcy5udW1iZXJSb3dzO2lmKCF0aGlzLm51bWJlckNvbHVtbnMpe289TWF0aC5jZWlsKHQubGVuZ3RoL3UpfWVsc2V7bz10aGlzLm51bWJlckNvbHVtbnN9fWVsc2V7aWYodGhpcy5udW1iZXJDb2x1bW5zKXtvPXRoaXMubnVtYmVyQ29sdW1uczt1PU1hdGguY2VpbCh0Lmxlbmd0aC90aGlzLm51bWJlckNvbHVtbnMpfWVsc2V7dT10Lmxlbmd0aDtvPTF9fXZhciBuLG0scixnLGUsbCxrLGg7dmFyIHY9MDtmb3Iobj0wO248dTtuKyspe2lmKHEpe3I9YygnPHRyIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIj48L3RyPicpLnByZXBlbmRUbyh0aGlzLl9lbGVtKX1lbHNle3I9YygnPHRyIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIj48L3RyPicpLmFwcGVuZFRvKHRoaXMuX2VsZW0pfWZvcihtPTA7bTxvO20rKyl7aWYodjx0Lmxlbmd0aCl7bD10aGlzLmxhYmVsc1t2XXx8dFt2XVswXS50b1N0cmluZygpO2g9dy5jb2xvcjtpZighcSl7aWYobj4wKXtmPXRydWV9ZWxzZXtmPWZhbHNlfX1lbHNle2lmKG49PXUtMSl7Zj1mYWxzZX1lbHNle2Y9dHJ1ZX19az0oZik/dGhpcy5yb3dTcGFjaW5nOiIwIjtnPWMoJzx0ZCBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3BhZGRpbmctdG9wOicraysnOyI+PGRpdj48ZGl2IGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaCIgc3R5bGU9ImJvcmRlci1jb2xvcjonK2grJzsiPjwvZGl2PjwvZGl2PjwvdGQ+Jyk7ZT1jKCc8dGQgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSJwYWRkaW5nLXRvcDonK2srJzsiPjwvdGQ+Jyk7aWYodGhpcy5lc2NhcGVIdG1sKXtlLnRleHQobCl9ZWxzZXtlLmh0bWwobCl9aWYocSl7ZS5wcmVwZW5kVG8ocik7Zy5wcmVwZW5kVG8ocil9ZWxzZXtnLmFwcGVuZFRvKHIpO2UuYXBwZW5kVG8ocil9Zj10cnVlfXYrK319fX1yZXR1cm4gdGhpcy5fZWxlbX07ZnVuY3Rpb24gYShqLGgsZil7Zj1mfHx7fTtmLmF4ZXNEZWZhdWx0cz1mLmF4ZXNEZWZhdWx0c3x8e307Zi5sZWdlbmQ9Zi5sZWdlbmR8fHt9O2Yuc2VyaWVzRGVmYXVsdHM9Zi5zZXJpZXNEZWZhdWx0c3x8e307Zi5ncmlkPWYuZ3JpZHx8e307dmFyIGU9ZmFsc2U7aWYoZi5zZXJpZXNEZWZhdWx0cy5yZW5kZXJlcj09Yy5qcXBsb3QuTWV0ZXJHYXVnZVJlbmRlcmVyKXtlPXRydWV9ZWxzZXtpZihmLnNlcmllcyl7Zm9yKHZhciBnPTA7ZzxmLnNlcmllcy5sZW5ndGg7ZysrKXtpZihmLnNlcmllc1tnXS5yZW5kZXJlcj09Yy5qcXBsb3QuTWV0ZXJHYXVnZVJlbmRlcmVyKXtlPXRydWV9fX19aWYoZSl7Zi5heGVzRGVmYXVsdHMucmVuZGVyZXI9Yy5qcXBsb3QuTWV0ZXJHYXVnZUF4aXNSZW5kZXJlcjtmLmxlZ2VuZC5yZW5kZXJlcj1jLmpxcGxvdC5NZXRlckdhdWdlTGVnZW5kUmVuZGVyZXI7Zi5sZWdlbmQucHJlRHJhdz10cnVlO2YuZ3JpZC5iYWNrZ3JvdW5kPWYuZ3JpZC5iYWNrZ3JvdW5kfHwid2hpdGUiO2YuZ3JpZC5kcmF3R3JpZGxpbmVzPWZhbHNlO2YuZ3JpZC5ib3JkZXJXaWR0aD0oZi5ncmlkLmJvcmRlcldpZHRoIT1udWxsKT9mLmdyaWQuYm9yZGVyV2lkdGg6MDtmLmdyaWQuc2hhZG93PShmLmdyaWQuc2hhZG93IT1udWxsKT9mLmdyaWQuc2hhZG93OmZhbHNlfX1mdW5jdGlvbiBkKGUpe31jLmpxcGxvdC5wcmVJbml0SG9va3MucHVzaChhKTtjLmpxcGxvdC5wb3N0UGFyc2VPcHRpb25zSG9va3MucHVzaChkKTtjLmpxcGxvdC5NZXRlckdhdWdlVGlja1JlbmRlcmVyPWZ1bmN0aW9uKCl7Yy5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlci5jYWxsKHRoaXMpfTtjLmpxcGxvdC5NZXRlckdhdWdlVGlja1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgYy5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlcigpO2MuanFwbG90Lk1ldGVyR2F1Z2VUaWNrUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWMuanFwbG90Lk1ldGVyR2F1Z2VUaWNrUmVuZGVyZXJ9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.mobile.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxcGxvdC5qcXVlcnltb2JpbGUgcGx1Z2luCiAqIGpRdWVyeSBNb2JpbGUgdmlydHVhbCBldmVudCBzdXBwb3J0LgogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTEgVGFrYXNoaSBPa2Ftb3RvCiAqIGpxUGxvdCBpcyBjdXJyZW50bHkgYXZhaWxhYmxlIGZvciB1c2UgaW4gYWxsIHBlcnNvbmFsIG9yIGNvbW1lcmNpYWwgcHJvamVjdHMgCiAqIHVuZGVyIGJvdGggdGhlIE1JVCAoaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHApIGFuZCBHUEwgCiAqIHZlcnNpb24gMi4wIChodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sKSBsaWNlbnNlcy4gVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gCiAqIGNob29zZSB0aGUgbGljZW5zZSB0aGF0IGJlc3Qgc3VpdHMgeW91ciBwcm9qZWN0IGFuZCB1c2UgaXQgYWNjb3JkaW5nbHkuIAogKgogKiBBbHRob3VnaCBub3QgcmVxdWlyZWQsIHRoZSBhdXRob3Igd291bGQgYXBwcmVjaWF0ZSBhbiBlbWFpbCBsZXR0aW5nIGhpbSAKICoga25vdyBvZiBhbnkgc3Vic3RhbnRpYWwgdXNlIG9mIGpxUGxvdC4gIFlvdSBjYW4gcmVhY2ggdGhlIGF1dGhvciBhdDogCiAqIGNocmlzIGF0IGpxcGxvdCBkb3QgY29tIG9yIHNlZSBodHRwOi8vd3d3LmpxcGxvdC5jb20vaW5mby5waHAgLgogKgogKiBJZiB5b3UgYXJlIGZlZWxpbmcga2luZCBhbmQgZ2VuZXJvdXMsIGNvbnNpZGVyIHN1cHBvcnRpbmcgdGhlIHByb2plY3QgYnkKICogbWFraW5nIGEgZG9uYXRpb24gYXQ6IGh0dHA6Ly93d3cuanFwbG90LmNvbS9kb25hdGUucGhwIC4KICoKICovCihmdW5jdGlvbigkKSB7CiAgICBmdW5jdGlvbiBwb3N0SW5pdCh0YXJnZXQsIGRhdGEsIG9wdGlvbnMpewogICAgICAgIHRoaXMuYmluZEN1c3RvbUV2ZW50cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJ3ZjbGljaycsIHtwbG90OnRoaXN9LCB0aGlzLm9uQ2xpY2spOwogICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJ2RibGNsaWNrJywge3Bsb3Q6dGhpc30sIHRoaXMub25EYmxDbGljayk7CiAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgndGFwaG9sZCcsIHtwbG90OnRoaXN9LCB0aGlzLm9uRGJsQ2xpY2spOwogICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJ3Ztb3VzZWRvd24nLCB7cGxvdDp0aGlzfSwgdGhpcy5vbk1vdXNlRG93bik7CiAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgndm1vdXNlbW92ZScsIHtwbG90OnRoaXN9LCB0aGlzLm9uTW91c2VNb3ZlKTsKICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCdtb3VzZWVudGVyJywge3Bsb3Q6dGhpc30sIHRoaXMub25Nb3VzZUVudGVyKTsKICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCdtb3VzZWxlYXZlJywge3Bsb3Q6dGhpc30sIHRoaXMub25Nb3VzZUxlYXZlKTsKICAgICAgICAgICAgaWYgKHRoaXMuY2FwdHVyZVJpZ2h0Q2xpY2spIHsKICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgndm1vdXNldXAnLCB7cGxvdDp0aGlzfSwgdGhpcy5vblJpZ2h0Q2xpY2spOwogICAgICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5nZXQoMCkub25jb250ZXh0bWVudSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJ3Ztb3VzZXVwJywge3Bsb3Q6dGhpc30sIHRoaXMub25Nb3VzZVVwKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgdGhpcy5wbHVnaW5zLm1vYmlsZSA9IHRydWU7CiAgICB9CiAgICAkLmpxcGxvdC5wb3N0SW5pdEhvb2tzLnB1c2gocG9zdEluaXQpOwp9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.mobile.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGEoZSxkLGMpe3RoaXMuYmluZEN1c3RvbUV2ZW50cz1mdW5jdGlvbigpe3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgidmNsaWNrIix7cGxvdDp0aGlzfSx0aGlzLm9uQ2xpY2spO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgiZGJsY2xpY2siLHtwbG90OnRoaXN9LHRoaXMub25EYmxDbGljayk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCJ0YXBob2xkIix7cGxvdDp0aGlzfSx0aGlzLm9uRGJsQ2xpY2spO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgidm1vdXNlZG93biIse3Bsb3Q6dGhpc30sdGhpcy5vbk1vdXNlRG93bik7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCJ2bW91c2Vtb3ZlIix7cGxvdDp0aGlzfSx0aGlzLm9uTW91c2VNb3ZlKTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoIm1vdXNlZW50ZXIiLHtwbG90OnRoaXN9LHRoaXMub25Nb3VzZUVudGVyKTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoIm1vdXNlbGVhdmUiLHtwbG90OnRoaXN9LHRoaXMub25Nb3VzZUxlYXZlKTtpZih0aGlzLmNhcHR1cmVSaWdodENsaWNrKXt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoInZtb3VzZXVwIix7cGxvdDp0aGlzfSx0aGlzLm9uUmlnaHRDbGljayk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5nZXQoMCkub25jb250ZXh0bWVudT1mdW5jdGlvbigpe3JldHVybiBmYWxzZX19ZWxzZXt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoInZtb3VzZXVwIix7cGxvdDp0aGlzfSx0aGlzLm9uTW91c2VVcCl9fTt0aGlzLnBsdWdpbnMubW9iaWxlPXRydWV9Yi5qcXBsb3QucG9zdEluaXRIb29rcy5wdXNoKGEpfSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.ohlcRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuT0hMQ1JlbmRlcmVyCiAgICAgKiBqcVBsb3QgUGx1Z2luIHRvIGRyYXcgT3BlbiBIaSBMb3cgQ2xvc2UsIENhbmRsZXN0aWNrIGFuZCBIaSBMb3cgQ2xvc2UgY2hhcnRzLgogICAgICogCiAgICAgKiBUbyB1c2UgdGhpcyBwbHVnaW4sIGluY2x1ZGUgdGhlIHJlbmRlcmVyIGpzIGZpbGUgaW4gCiAgICAgKiB5b3VyIHNvdXJjZToKICAgICAqIAogICAgICogPiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJwbHVnaW5zL2pxcGxvdC5vaGxjUmVuZGVyZXIuanMiPjwvc2NyaXB0PgogICAgICogCiAgICAgKiBZb3Ugd2lsbCBtb3N0IGxpa2VseSB3YW50IHRvIHVzZSBhIGRhdGUgYXhpcyByZW5kZXJlcgogICAgICogZm9yIHRoZSB4IGF4aXMgYWxzbywgc28gaW5jbHVkZSB0aGUgZGF0ZSBheGlzIHJlbmRlciBqcyBmaWxlIGFsc286CiAgICAgKiAKICAgICAqID4gPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icGx1Z2lucy9qcXBsb3QuZGF0ZUF4aXNSZW5kZXJlci5qcyI+PC9zY3JpcHQ+CiAgICAgKiAKICAgICAqIFRoZW4geW91IHNldCB0aGUgcmVuZGVyZXIgaW4gdGhlIHNlcmllcyBvcHRpb25zIG9uIHlvdXIgcGxvdDoKICAgICAqIAogICAgICogPiBzZXJpZXM6IFt7cmVuZGVyZXI6JC5qcXBsb3QuT0hMQ1JlbmRlcmVyfV0KICAgICAqIAogICAgICogRm9yIE9ITEMgYW5kIGNhbmRsZXN0aWNrIGNoYXJ0cywgZGF0YSBzaG91bGQgYmUgc3BlY2lmaWVkCiAgICAgKiBsaWtlIHNvOgogICAgICogCiAgICAgKiA+IGRhdCA9IFtbJzA3LzA2LzIwMDknLDEzOC43LDEzOS42OCwxMzUuMTgsMTM1LjRdLCBbJzA2LzI5LzIwMDknLDE0My40NiwxNDQuNjYsMTM5Ljc5LDE0MC4wMl0sIC4uLl0KICAgICAqIAogICAgICogSWYgdGhlIGRhdGEgYXJyYXkgaGFzIG9ubHkgNCB2YWx1ZXMgcGVyIHBvaW50IGluc3RlYWQgb2YgNSwKICAgICAqIHRoZSByZW5kZXJlciB3aWxsIGNyZWF0ZSBhIEhpIExvdyBDbG9zZSBjaGFydCBpbnN0ZWFkLiAgSW4gdGhhdCBjYXNlLAogICAgICogZGF0YSBzaG91bGQgYmUgc3VwcGxpZWQgbGlrZToKICAgICAqIAogICAgICogPiBkYXQgPSBbWycwNy8wNi8yMDA5JywxMzkuNjgsMTM1LjE4LDEzNS40XSwgWycwNi8yOS8yMDA5JywxNDQuNjYsMTM5Ljc5LDE0MC4wMl0sIC4uLl0KICAgICAqIAogICAgICogVG8gZ2VuZXJhdGUgYSBjYW5kbGVzdGljayBjaGFydCBpbnN0ZWFkIG9mIGFuIE9ITEMgY2hhcnQsCiAgICAgKiBzZXQgdGhlICJjYW5kbGVzdGljayIgb3B0aW9uIHRvIHRydWU6CiAgICAgKiAKICAgICAqID4gc2VyaWVzOiBbe3JlbmRlcmVyOiQuanFwbG90Lk9ITENSZW5kZXJlciwgcmVuZGVyZXJPcHRpb25zOntjYW5kbGVTdGljazp0cnVlfX1dLAogICAgICogCiAgICAgKi8KICAgICQuanFwbG90Lk9ITENSZW5kZXJlciA9IGZ1bmN0aW9uKCl7CiAgICAgICAgLy8gc3ViY2xhc3MgbGluZSByZW5kZXJlciB0byBtYWtlIHVzZSBvZiBzb21lIG9mIGl0cyBtZXRob2RzLgogICAgICAgICQuanFwbG90LkxpbmVSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgICAgIC8vIHByb3A6IGNhbmRsZVN0aWNrCiAgICAgICAgLy8gdHJ1ZSB0byByZW5kZXIgY2hhcnQgYXMgY2FuZGxlU3RpY2suCiAgICAgICAgLy8gTXVzdCBoYXZlIGFuIG9wZW4gcHJpY2UsIGNhbm5vdCBiZSBhIGhsYyBjaGFydC4KICAgICAgICB0aGlzLmNhbmRsZVN0aWNrID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogdGlja0xlbmd0aAogICAgICAgIC8vIGxlbmd0aCBvZiB0aGUgbGluZSBpbiBwaXhlbHMgaW5kaWNhdGluZyBvcGVuIGFuZCBjbG9zZSBwcmljZS4KICAgICAgICAvLyBEZWZhdWx0IHdpbGwgYXV0byBjYWxjdWxhdGUgYmFzZWQgb24gcGxvdCB3aWR0aCBhbmQgCiAgICAgICAgLy8gbnVtYmVyIG9mIHBvaW50cyBkaXNwbGF5ZWQuCiAgICAgICAgdGhpcy50aWNrTGVuZ3RoID0gJ2F1dG8nOwogICAgICAgIC8vIHByb3A6IGJvZHlXaWR0aAogICAgICAgIC8vIHdpZHRoIG9mIHRoZSBjYW5kbGVzdGljayBib2R5IGluIHBpeGVscy4gIERlZmF1bHQgd2lsbCBhdXRvIGNhbGN1bGF0ZQogICAgICAgIC8vIGJhc2VkIG9uIHBsb3Qgd2lkdGggYW5kIG51bWJlciBvZiBjYW5kbGVzdGlja3MgZGlzcGxheWVkLgogICAgICAgIHRoaXMuYm9keVdpZHRoID0gJ2F1dG8nOwogICAgICAgIC8vIHByb3A6IG9wZW5Db2xvcgogICAgICAgIC8vIGNvbG9yIG9mIHRoZSBvcGVuIHByaWNlIHRpY2sgbWFyay4gIERlZmF1bHQgaXMgc2VyaWVzIGNvbG9yLgogICAgICAgIHRoaXMub3BlbkNvbG9yID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBjbG9zZUNvbG9yCiAgICAgICAgLy8gY29sb3Igb2YgdGhlIGNsb3NlIHByaWNlIHRpY2sgbWFyay4gIERlZmF1bHQgaXMgc2VyaWVzIGNvbG9yLgogICAgICAgIHRoaXMuY2xvc2VDb2xvciA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogd2lja0NvbG9yCiAgICAgICAgLy8gY29sb3Igb2YgdGhlIGhpLWxvIGxpbmUgdGhvcnVnaCB0aGUgY2FuZGxlc3RpY2sgYm9keS4KICAgICAgICAvLyBEZWZhdWx0IGlzIHRoZSBzZXJpZXMgY29sb3IuCiAgICAgICAgdGhpcy53aWNrQ29sb3IgPSBudWxsOwogICAgICAgIC8vIHByb3A6IGZpbGxVcEJvZHkKICAgICAgICAvLyB0cnVlIHRvIHJlbmRlciBhbiAidXAiIGRheSAoY2xvc2UgcHJpY2UgZ3JlYXRlciB0aGFuIG9wZW4gcHJpY2UpCiAgICAgICAgLy8gd2l0aCBhIGZpbGxlZCBjYW5kbGVzdGljayBib2R5LgogICAgICAgIHRoaXMuZmlsbFVwQm9keSA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGZpbGxEb3duQm9keQogICAgICAgIC8vIHRydWUgdG8gcmVuZGVyIGEgImRvd24iIGRheSAoY2xvc2UgcHJpY2UgbG93ZXIgdGhhbiBvcGVuIHByaWNlKQogICAgICAgIC8vIHdpdGggYSBmaWxsZWQgY2FuZGxlc3RpY2sgYm9keS4KICAgICAgICB0aGlzLmZpbGxEb3duQm9keSA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogdXBCb2R5Q29sb3IKICAgICAgICAvLyBDb2xvciBvZiBjYW5kbGVzdGljayBib2R5IG9mIGFuICJ1cCIgZGF5LiAgRGVmYXVsdCBpcyBzZXJpZXMgY29sb3IuCiAgICAgICAgdGhpcy51cEJvZHlDb2xvciA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogZG93bkJvZHlDb2xvcgogICAgICAgIC8vIENvbG9yIG9mIGNhbmRsZXN0aWNrIGJvZHkgb24gYSAiZG93biIgZGF5LiAgRGVmYXVsdCBpcyBzZXJpZXMgY29sb3IuCiAgICAgICAgdGhpcy5kb3duQm9keUNvbG9yID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBobGMKICAgICAgICAvLyB0cnVlIGlmIGlzIGEgaGktbG93LWNsb3NlIGNoYXJ0IChubyBvcGVuIHByaWNlKS4KICAgICAgICAvLyBUaGlzIGlzIGRldGVybWluZWQgYXV0b21hdGljYWxseSBmcm9tIHRoZSBzZXJpZXMgZGF0YS4KICAgICAgICB0aGlzLmhsYyA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGxpbmVXaWR0aAogICAgICAgIC8vIFdpZHRoIG9mIHRoZSBoaS1sb3cgbGluZSBhbmQgb3Blbi9jbG9zZSB0aWNrcy4KICAgICAgICAvLyBNdXN0IGJlIHNldCBpbiB0aGUgcmVuZGVyZXJPcHRpb25zIGZvciB0aGUgc2VyaWVzLgogICAgICAgIHRoaXMubGluZVdpZHRoID0gMS41OwogICAgICAgIHRoaXMuX3RpY2tMZW5ndGg7CiAgICAgICAgdGhpcy5fYm9keVdpZHRoOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuT0hMQ1JlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTsKICAgICQuanFwbG90Lk9ITENSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5PSExDUmVuZGVyZXI7CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHNlcmllcy4KICAgICQuanFwbG90Lk9ITENSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgICAgICAvLyBsaW5lV2lkdGggaGFzIHRvIGJlIHNldCBvbiB0aGUgc2VyaWVzLCBjaGFuZ2VzIGluIHJlbmRlcmVyCiAgICAgICAgLy8gY29uc3RydWN0b3IgaGF2ZSBubyBlZmZlY3QuICBzZXQgdGhlIGRlZmF1bHQgaGVyZQogICAgICAgIC8vIGlmIG5vIHJlbmRlcmVyIG9wdGlvbiBmb3IgbGluZVdpZHRoIGlzIHNwZWNpZmllZC4KICAgICAgICB0aGlzLmxpbmVXaWR0aCA9IG9wdGlvbnMubGluZVdpZHRoIHx8IDEuNTsKICAgICAgICAkLmpxcGxvdC5MaW5lUmVuZGVyZXIucHJvdG90eXBlLmluaXQuY2FsbCh0aGlzLCBvcHRpb25zKTsKICAgICAgICB0aGlzLl90eXBlID0gJ29obGMnOwogICAgICAgIC8vIHNldCB0aGUgeWF4aXMgZGF0YSBib3VuZHMgaGVyZSB0byBhY2NvdW50IGZvciBoaSBhbmQgbG93IHZhbHVlcwogICAgICAgIHZhciBkYiA9IHRoaXMuX3lheGlzLl9kYXRhQm91bmRzOwogICAgICAgIHZhciBkID0gdGhpcy5fcGxvdERhdGE7CiAgICAgICAgLy8gaWYgZGF0YSBwb2ludHMgaGF2ZSBsZXNzIHRoYW4gNSB2YWx1ZXMsIGZvcmNlIGEgaGxjIGNoYXJ0LgogICAgICAgIGlmIChkWzBdLmxlbmd0aCA8IDUpIHsKICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5obGMgPSB0cnVlOwoKICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPGQubGVuZ3RoOyBqKyspIHsgCiAgICAgICAgICAgICAgICBpZiAoZFtqXVsyXSA8IGRiLm1pbiB8fCBkYi5taW4gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIGRiLm1pbiA9IGRbal1bMl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZFtqXVsxXSA+IGRiLm1heCB8fCBkYi5tYXggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIGRiLm1heCA9IGRbal1bMV07CiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8ZC5sZW5ndGg7IGorKykgeyAKICAgICAgICAgICAgICAgIGlmIChkW2pdWzNdIDwgZGIubWluIHx8IGRiLm1pbiA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgZGIubWluID0gZFtqXVszXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChkW2pdWzJdID4gZGIubWF4IHx8IGRiLm1heCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgZGIubWF4ID0gZFtqXVsyXTsKICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aGluIHNjb3BlIG9mIHNlcmllcy4KICAgICQuanFwbG90Lk9ITENSZW5kZXJlci5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGN0eCwgZ2QsIG9wdGlvbnMpIHsKICAgICAgICB2YXIgZCA9IHRoaXMuZGF0YTsKICAgICAgICB2YXIgeG1pbiA9IHRoaXMuX3hheGlzLm1pbjsKICAgICAgICB2YXIgeG1heCA9IHRoaXMuX3hheGlzLm1heDsKICAgICAgICAvLyBpbmRleCBvZiBsYXN0IHZhbHVlIGJlbG93IHJhbmdlIG9mIHBsb3QuCiAgICAgICAgdmFyIHhtaW5pZHggPSAwOwogICAgICAgIC8vIGluZGV4IG9mIGZpcnN0IHZhbHVlIGFib3ZlIHJhbmdlIG9mIHBsb3QuCiAgICAgICAgdmFyIHhtYXhpZHggPSBkLmxlbmd0aDsKICAgICAgICB2YXIgeHAgPSB0aGlzLl94YXhpcy5zZXJpZXNfdTJwOwogICAgICAgIHZhciB5cCA9IHRoaXMuX3lheGlzLnNlcmllc191MnA7CiAgICAgICAgdmFyIGksIHByZXZDb2xvciwgb3BzLCBiLCBoLCB3LCBhLCBwb2ludHM7CiAgICAgICAgdmFyIG87CiAgICAgICAgdmFyIHIgPSB0aGlzLnJlbmRlcmVyOwogICAgICAgIHZhciBvcHRzID0gKG9wdGlvbnMgIT0gdW5kZWZpbmVkKSA/IG9wdGlvbnMgOiB7fTsKICAgICAgICB2YXIgc2hhZG93ID0gKG9wdHMuc2hhZG93ICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNoYWRvdyA6IHRoaXMuc2hhZG93OwogICAgICAgIHZhciBmaWxsID0gKG9wdHMuZmlsbCAhPSB1bmRlZmluZWQpID8gb3B0cy5maWxsIDogdGhpcy5maWxsOwogICAgICAgIHZhciBmaWxsQW5kU3Ryb2tlID0gKG9wdHMuZmlsbEFuZFN0cm9rZSAhPSB1bmRlZmluZWQpID8gb3B0cy5maWxsQW5kU3Ryb2tlIDogdGhpcy5maWxsQW5kU3Ryb2tlOwogICAgICAgIHIuYm9keVdpZHRoID0gKG9wdHMuYm9keVdpZHRoICE9IHVuZGVmaW5lZCkgPyBvcHRzLmJvZHlXaWR0aCA6IHIuYm9keVdpZHRoOwogICAgICAgIHIudGlja0xlbmd0aCA9IChvcHRzLnRpY2tMZW5ndGggIT0gdW5kZWZpbmVkKSA/IG9wdHMudGlja0xlbmd0aCA6IHIudGlja0xlbmd0aDsKICAgICAgICBjdHguc2F2ZSgpOwogICAgICAgIGlmICh0aGlzLnNob3cpIHsKICAgICAgICAgICAgdmFyIHgsIG9wZW4sIGhpLCBsb3csIGNsb3NlOwogICAgICAgICAgICAvLyBuZWVkIHRvIGdldCB3aWR0aHMgYmFzZWQgb24gbnVtYmVyIG9mIHBvaW50cyBzaG93biwKICAgICAgICAgICAgLy8gbm90IG9uIHRvdGFsIG51bWJlciBvZiBwb2ludHMuICBVc2UgdGhlIHJlc3VsdHMgCiAgICAgICAgICAgIC8vIHRvIHNwZWVkIHVwIGRyYXdpbmcgaW4gbmV4dCBzdGVwLgogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8ZC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKGRbaV1bMF0gPCB4bWluKSB7CiAgICAgICAgICAgICAgICAgICAgeG1pbmlkeCA9IGk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChkW2ldWzBdIDwgeG1heCkgewogICAgICAgICAgICAgICAgICAgIHhtYXhpZHggPSBpKzE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBkd2lkdGggPSB0aGlzLmdyaWREYXRhW3htYXhpZHgtMV1bMF0gLSB0aGlzLmdyaWREYXRhW3htaW5pZHhdWzBdOwogICAgICAgICAgICB2YXIgbnZpc2libGVQb2ludHMgPSB4bWF4aWR4IC0geG1pbmlkeDsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHZhciBkaW50ZXJ2YWwgPSBNYXRoLmFicyh0aGlzLl94YXhpcy5zZXJpZXNfdTJwKHBhcnNlSW50KHRoaXMuX3hheGlzLl9pbnRlcnZhbFN0YXRzWzBdLnNvcnRlZEludGVydmFsc1swXS5pbnRlcnZhbCwgMTApKSAtIHRoaXMuX3hheGlzLnNlcmllc191MnAoMCkpOyAKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIHZhciBkaW50ZXJ2YWwgPSBkd2lkdGggLyBudmlzaWJsZVBvaW50czsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHIuY2FuZGxlU3RpY2spIHsKICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yoci5ib2R5V2lkdGgpID09ICdudW1iZXInKSB7CiAgICAgICAgICAgICAgICAgICAgci5fYm9keVdpZHRoID0gci5ib2R5V2lkdGg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByLl9ib2R5V2lkdGggPSBNYXRoLm1pbigyMCwgZGludGVydmFsLzEuNjUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKHR5cGVvZihyLnRpY2tMZW5ndGgpID09ICdudW1iZXInKSB7CiAgICAgICAgICAgICAgICAgICAgci5fdGlja0xlbmd0aCA9IHIudGlja0xlbmd0aDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHIuX3RpY2tMZW5ndGggPSBNYXRoLm1pbigxMCwgZGludGVydmFsLzMuNSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGZvciAodmFyIGk9eG1pbmlkeDsgaTx4bWF4aWR4OyBpKyspIHsKICAgICAgICAgICAgICAgIHggPSB4cChkW2ldWzBdKTsKICAgICAgICAgICAgICAgIGlmIChyLmhsYykgewogICAgICAgICAgICAgICAgICAgIG9wZW4gPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGhpID0geXAoZFtpXVsxXSk7CiAgICAgICAgICAgICAgICAgICAgbG93ID0geXAoZFtpXVsyXSk7CiAgICAgICAgICAgICAgICAgICAgY2xvc2UgPSB5cChkW2ldWzNdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIG9wZW4gPSB5cChkW2ldWzFdKTsKICAgICAgICAgICAgICAgICAgICBoaSA9IHlwKGRbaV1bMl0pOwogICAgICAgICAgICAgICAgICAgIGxvdyA9IHlwKGRbaV1bM10pOwogICAgICAgICAgICAgICAgICAgIGNsb3NlID0geXAoZFtpXVs0XSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvID0ge307CiAgICAgICAgICAgICAgICBpZiAoci5jYW5kbGVTdGljayAmJiAhci5obGMpIHsKICAgICAgICAgICAgICAgICAgICB3ID0gci5fYm9keVdpZHRoOwogICAgICAgICAgICAgICAgICAgIGEgPSB4IC0gdy8yOwogICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgY2FuZGxlCiAgICAgICAgICAgICAgICAgICAgLy8gZGV0ZXJtaW5lIGlmIGNhbmRsZSB1cCBvciBkb3duCiAgICAgICAgICAgICAgICAgICAgLy8gdXAsIHJlbWVtYmVyIGdyaWQgY29vcmRpbmF0ZXMgaW5jcmVhc2UgZG93bndhcmQKICAgICAgICAgICAgICAgICAgICBpZiAoY2xvc2UgPCBvcGVuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgd2ljawogICAgICAgICAgICAgICAgICAgICAgICBpZiAoci53aWNrQ29sb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uY29sb3IgPSByLndpY2tDb2xvcjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyLmRvd25Cb2R5Q29sb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uY29sb3IgPSByLnVwQm9keUNvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG9wcyA9ICQuZXh0ZW5kKHRydWUsIHt9LCBvcHRzLCBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgci5zaGFwZVJlbmRlcmVyLmRyYXcoY3R4LCBbW3gsIGhpXSwgW3gsIGNsb3NlXV0sIG9wcyk7IAogICAgICAgICAgICAgICAgICAgICAgICByLnNoYXBlUmVuZGVyZXIuZHJhdyhjdHgsIFtbeCwgb3Blbl0sIFt4LCBsb3ddXSwgb3BzKTsgCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGNsb3NlOwogICAgICAgICAgICAgICAgICAgICAgICBoID0gb3BlbiAtIGNsb3NlOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBjb2xvciBzcGVjaWZpZWQsIHVzZSBpdAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5maWxsVXBCb2R5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmZpbGxSZWN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uc3Ryb2tlUmVjdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gdyAtIHRoaXMubGluZVdpZHRoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHggLSB3LzI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIudXBCb2R5Q29sb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uY29sb3IgPSByLnVwQm9keUNvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5maWxsU3R5bGUgPSByLnVwQm9keUNvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IFthLCBiLCB3LCBoXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gZG93bgogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNsb3NlID4gIG9wZW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB3aWNrCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLndpY2tDb2xvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5jb2xvciA9IHIud2lja0NvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHIuZG93bkJvZHlDb2xvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5jb2xvciA9IHIuZG93bkJvZHlDb2xvcjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBvcHMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgb3B0cywgbyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHIuc2hhcGVSZW5kZXJlci5kcmF3KGN0eCwgW1t4LCBoaV0sIFt4LCBvcGVuXV0sIG9wcyk7IAogICAgICAgICAgICAgICAgICAgICAgICByLnNoYXBlUmVuZGVyZXIuZHJhdyhjdHgsIFtbeCwgY2xvc2VdLCBbeCwgbG93XV0sIG9wcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IG9wZW47CiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBjbG9zZSAtIG9wZW47CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGNvbG9yIHNwZWNpZmllZCwgdXNlIGl0CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLmZpbGxEb3duQm9keSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5maWxsUmVjdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnN0cm9rZVJlY3QgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IHcgLSB0aGlzLmxpbmVXaWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB4IC0gdy8yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLmRvd25Cb2R5Q29sb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uY29sb3IgPSByLmRvd25Cb2R5Q29sb3I7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmZpbGxTdHlsZSA9IHIuZG93bkJvZHlDb2xvcjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbYSwgYiwgdywgaF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIC8vIGV2ZW4sIG9wZW4gPSBjbG9zZQogICAgICAgICAgICAgICAgICAgIGVsc2UgIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB3aWNrCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLndpY2tDb2xvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5jb2xvciA9IHIud2lja0NvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG9wcyA9ICQuZXh0ZW5kKHRydWUsIHt9LCBvcHRzLCBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgci5zaGFwZVJlbmRlcmVyLmRyYXcoY3R4LCBbW3gsIGhpXSwgW3gsIGxvd11dLCBvcHMpOyAKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICBvLmZpbGxSZWN0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIG8uc3Ryb2tlUmVjdCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICBhID0gW3ggLSB3LzIsIG9wZW5dOwogICAgICAgICAgICAgICAgICAgICAgICBiID0gW3ggKyB3LzIsIGNsb3NlXTsKICAgICAgICAgICAgICAgICAgICAgICAgdyA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbYSwgYl07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG9wcyA9ICQuZXh0ZW5kKHRydWUsIHt9LCBvcHRzLCBvKTsKICAgICAgICAgICAgICAgICAgICByLnNoYXBlUmVuZGVyZXIuZHJhdyhjdHgsIHBvaW50cywgb3BzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHByZXZDb2xvciA9IG9wdHMuY29sb3I7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIub3BlbkNvbG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuY29sb3IgPSByLm9wZW5Db2xvcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyBvcGVuIHRpY2sKICAgICAgICAgICAgICAgICAgICBpZiAoIXIuaGxjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHIuc2hhcGVSZW5kZXJlci5kcmF3KGN0eCwgW1t4LXIuX3RpY2tMZW5ndGgsIG9wZW5dLCBbeCwgb3Blbl1dLCBvcHRzKTsgICAgCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG9wdHMuY29sb3IgPSBwcmV2Q29sb3I7CiAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB3aWNrCiAgICAgICAgICAgICAgICAgICAgaWYgKHIud2lja0NvbG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuY29sb3IgPSByLndpY2tDb2xvcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgci5zaGFwZVJlbmRlcmVyLmRyYXcoY3R4LCBbW3gsIGhpXSwgW3gsIGxvd11dLCBvcHRzKTsgCiAgICAgICAgICAgICAgICAgICAgb3B0cy5jb2xvciAgPSBwcmV2Q29sb3I7CiAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyBjbG9zZSB0aWNrCiAgICAgICAgICAgICAgICAgICAgaWYgKHIuY2xvc2VDb2xvcikgewogICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmNvbG9yID0gci5jbG9zZUNvbG9yOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByLnNoYXBlUmVuZGVyZXIuZHJhdyhjdHgsIFtbeCwgY2xvc2VdLCBbeCtyLl90aWNrTGVuZ3RoLCBjbG9zZV1dLCBvcHRzKTsgCiAgICAgICAgICAgICAgICAgICAgb3B0cy5jb2xvciA9IHByZXZDb2xvcjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgfTsgIAogICAgCiAgICAkLmpxcGxvdC5PSExDUmVuZGVyZXIucHJvdG90eXBlLmRyYXdTaGFkb3cgPSBmdW5jdGlvbihjdHgsIGdkLCBvcHRpb25zKSB7CiAgICAgICAgLy8gVGhpcyBpcyBhIG5vLW9wLCBzaGFkb3dzIGRyYXduIHdpdGggbGluZXMuCiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBwbG90LgogICAgJC5qcXBsb3QuT0hMQ1JlbmRlcmVyLmNoZWNrT3B0aW9ucyA9IGZ1bmN0aW9uKHRhcmdldCwgZGF0YSwgb3B0aW9ucykgewogICAgICAgIC8vIHByb3ZpZGUgc29tZSBzZW5zaWJsZSBoaWdobGlnaHRlciBvcHRpb25zIGJ5IGRlZmF1bHQKICAgICAgICAvLyBUaGVzZSBhcmVuJ3QgZ29vZCBmb3IgaGxjLCBvbmx5IGZvciBvaGxjIG9yIGNhbmRsZXN0aWNrCiAgICAgICAgaWYgKCFvcHRpb25zLmhpZ2hsaWdodGVyKSB7CiAgICAgICAgICAgIG9wdGlvbnMuaGlnaGxpZ2h0ZXIgPSB7CiAgICAgICAgICAgICAgICBzaG93TWFya2VyOmZhbHNlLAogICAgICAgICAgICAgICAgdG9vbHRpcEF4ZXM6ICd5JywKICAgICAgICAgICAgICAgIHl2YWx1ZXM6IDQsCiAgICAgICAgICAgICAgICBmb3JtYXRTdHJpbmc6Jzx0YWJsZSBjbGFzcz0ianFwbG90LWhpZ2hsaWdodGVyIj48dHI+PHRkPmRhdGU6PC90ZD48dGQ+JXM8L3RkPjwvdHI+PHRyPjx0ZD5vcGVuOjwvdGQ+PHRkPiVzPC90ZD48L3RyPjx0cj48dGQ+aGk6PC90ZD48dGQ+JXM8L3RkPjwvdHI+PHRyPjx0ZD5sb3c6PC90ZD48dGQ+JXM8L3RkPjwvdHI+PHRyPjx0ZD5jbG9zZTo8L3RkPjx0ZD4lczwvdGQ+PC90cj48L3RhYmxlPicKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9OwogICAgCiAgICAvLyQuanFwbG90LnByZUluaXRIb29rcy5wdXNoKCQuanFwbG90Lk9ITENSZW5kZXJlci5jaGVja09wdGlvbnMpOwogICAgCn0pKGpRdWVyeSk7ICAgIAo=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.ohlcRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGEpe2EuanFwbG90Lk9ITENSZW5kZXJlcj1mdW5jdGlvbigpe2EuanFwbG90LkxpbmVSZW5kZXJlci5jYWxsKHRoaXMpO3RoaXMuY2FuZGxlU3RpY2s9ZmFsc2U7dGhpcy50aWNrTGVuZ3RoPSJhdXRvIjt0aGlzLmJvZHlXaWR0aD0iYXV0byI7dGhpcy5vcGVuQ29sb3I9bnVsbDt0aGlzLmNsb3NlQ29sb3I9bnVsbDt0aGlzLndpY2tDb2xvcj1udWxsO3RoaXMuZmlsbFVwQm9keT1mYWxzZTt0aGlzLmZpbGxEb3duQm9keT10cnVlO3RoaXMudXBCb2R5Q29sb3I9bnVsbDt0aGlzLmRvd25Cb2R5Q29sb3I9bnVsbDt0aGlzLmhsYz1mYWxzZTt0aGlzLmxpbmVXaWR0aD0xLjU7dGhpcy5fdGlja0xlbmd0aDt0aGlzLl9ib2R5V2lkdGh9O2EuanFwbG90Lk9ITENSZW5kZXJlci5wcm90b3R5cGU9bmV3IGEuanFwbG90LkxpbmVSZW5kZXJlcigpO2EuanFwbG90Lk9ITENSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9YS5qcXBsb3QuT0hMQ1JlbmRlcmVyO2EuanFwbG90Lk9ITENSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihlKXtlPWV8fHt9O3RoaXMubGluZVdpZHRoPWUubGluZVdpZHRofHwxLjU7YS5qcXBsb3QuTGluZVJlbmRlcmVyLnByb3RvdHlwZS5pbml0LmNhbGwodGhpcyxlKTt0aGlzLl90eXBlPSJvaGxjIjt2YXIgYj10aGlzLl95YXhpcy5fZGF0YUJvdW5kczt2YXIgZj10aGlzLl9wbG90RGF0YTtpZihmWzBdLmxlbmd0aDw1KXt0aGlzLnJlbmRlcmVyLmhsYz10cnVlO2Zvcih2YXIgYz0wO2M8Zi5sZW5ndGg7YysrKXtpZihmW2NdWzJdPGIubWlufHxiLm1pbj09bnVsbCl7Yi5taW49ZltjXVsyXX1pZihmW2NdWzFdPmIubWF4fHxiLm1heD09bnVsbCl7Yi5tYXg9ZltjXVsxXX19fWVsc2V7Zm9yKHZhciBjPTA7YzxmLmxlbmd0aDtjKyspe2lmKGZbY11bM108Yi5taW58fGIubWluPT1udWxsKXtiLm1pbj1mW2NdWzNdfWlmKGZbY11bMl0+Yi5tYXh8fGIubWF4PT1udWxsKXtiLm1heD1mW2NdWzJdfX19fTthLmpxcGxvdC5PSExDUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oQSxOLGope3ZhciBKPXRoaXMuZGF0YTt2YXIgdj10aGlzLl94YXhpcy5taW47dmFyIHo9dGhpcy5feGF4aXMubWF4O3ZhciBsPTA7dmFyIEs9Si5sZW5ndGg7dmFyIHA9dGhpcy5feGF4aXMuc2VyaWVzX3UycDt2YXIgRz10aGlzLl95YXhpcy5zZXJpZXNfdTJwO3ZhciBELEUsZixNLEYsbixPLEM7dmFyIHk7dmFyIHU9dGhpcy5yZW5kZXJlcjt2YXIgcz0oaiE9dW5kZWZpbmVkKT9qOnt9O3ZhciBrPShzLnNoYWRvdyE9dW5kZWZpbmVkKT9zLnNoYWRvdzp0aGlzLnNoYWRvdzt2YXIgQj0ocy5maWxsIT11bmRlZmluZWQpP3MuZmlsbDp0aGlzLmZpbGw7dmFyIGM9KHMuZmlsbEFuZFN0cm9rZSE9dW5kZWZpbmVkKT9zLmZpbGxBbmRTdHJva2U6dGhpcy5maWxsQW5kU3Ryb2tlO3UuYm9keVdpZHRoPShzLmJvZHlXaWR0aCE9dW5kZWZpbmVkKT9zLmJvZHlXaWR0aDp1LmJvZHlXaWR0aDt1LnRpY2tMZW5ndGg9KHMudGlja0xlbmd0aCE9dW5kZWZpbmVkKT9zLnRpY2tMZW5ndGg6dS50aWNrTGVuZ3RoO0Euc2F2ZSgpO2lmKHRoaXMuc2hvdyl7dmFyIG0scSxnLFEsdDtmb3IodmFyIEQ9MDtEPEoubGVuZ3RoO0QrKyl7aWYoSltEXVswXTx2KXtsPUR9ZWxzZXtpZihKW0RdWzBdPHope0s9RCsxfX19dmFyIEk9dGhpcy5ncmlkRGF0YVtLLTFdWzBdLXRoaXMuZ3JpZERhdGFbbF1bMF07dmFyIEw9Sy1sO3RyeXt2YXIgUD1NYXRoLmFicyh0aGlzLl94YXhpcy5zZXJpZXNfdTJwKHBhcnNlSW50KHRoaXMuX3hheGlzLl9pbnRlcnZhbFN0YXRzWzBdLnNvcnRlZEludGVydmFsc1swXS5pbnRlcnZhbCwxMCkpLXRoaXMuX3hheGlzLnNlcmllc191MnAoMCkpfWNhdGNoKEgpe3ZhciBQPUkvTH1pZih1LmNhbmRsZVN0aWNrKXtpZih0eXBlb2YodS5ib2R5V2lkdGgpPT0ibnVtYmVyIil7dS5fYm9keVdpZHRoPXUuYm9keVdpZHRofWVsc2V7dS5fYm9keVdpZHRoPU1hdGgubWluKDIwLFAvMS42NSl9fWVsc2V7aWYodHlwZW9mKHUudGlja0xlbmd0aCk9PSJudW1iZXIiKXt1Ll90aWNrTGVuZ3RoPXUudGlja0xlbmd0aH1lbHNle3UuX3RpY2tMZW5ndGg9TWF0aC5taW4oMTAsUC8zLjUpfX1mb3IodmFyIEQ9bDtEPEs7RCsrKXttPXAoSltEXVswXSk7aWYodS5obGMpe3E9bnVsbDtnPUcoSltEXVsxXSk7UT1HKEpbRF1bMl0pO3Q9RyhKW0RdWzNdKX1lbHNle3E9RyhKW0RdWzFdKTtnPUcoSltEXVsyXSk7UT1HKEpbRF1bM10pO3Q9RyhKW0RdWzRdKX15PXt9O2lmKHUuY2FuZGxlU3RpY2smJiF1LmhsYyl7bj11Ll9ib2R5V2lkdGg7Tz1tLW4vMjtpZih0PHEpe2lmKHUud2lja0NvbG9yKXt5LmNvbG9yPXUud2lja0NvbG9yfWVsc2V7aWYodS5kb3duQm9keUNvbG9yKXt5LmNvbG9yPXUudXBCb2R5Q29sb3J9fWY9YS5leHRlbmQodHJ1ZSx7fSxzLHkpO3Uuc2hhcGVSZW5kZXJlci5kcmF3KEEsW1ttLGddLFttLHRdXSxmKTt1LnNoYXBlUmVuZGVyZXIuZHJhdyhBLFtbbSxxXSxbbSxRXV0sZik7eT17fTtNPXQ7Rj1xLXQ7aWYodS5maWxsVXBCb2R5KXt5LmZpbGxSZWN0PXRydWV9ZWxzZXt5LnN0cm9rZVJlY3Q9dHJ1ZTtuPW4tdGhpcy5saW5lV2lkdGg7Tz1tLW4vMn1pZih1LnVwQm9keUNvbG9yKXt5LmNvbG9yPXUudXBCb2R5Q29sb3I7eS5maWxsU3R5bGU9dS51cEJvZHlDb2xvcn1DPVtPLE0sbixGXX1lbHNle2lmKHQ+cSl7aWYodS53aWNrQ29sb3Ipe3kuY29sb3I9dS53aWNrQ29sb3J9ZWxzZXtpZih1LmRvd25Cb2R5Q29sb3Ipe3kuY29sb3I9dS5kb3duQm9keUNvbG9yfX1mPWEuZXh0ZW5kKHRydWUse30scyx5KTt1LnNoYXBlUmVuZGVyZXIuZHJhdyhBLFtbbSxnXSxbbSxxXV0sZik7dS5zaGFwZVJlbmRlcmVyLmRyYXcoQSxbW20sdF0sW20sUV1dLGYpO3k9e307TT1xO0Y9dC1xO2lmKHUuZmlsbERvd25Cb2R5KXt5LmZpbGxSZWN0PXRydWV9ZWxzZXt5LnN0cm9rZVJlY3Q9dHJ1ZTtuPW4tdGhpcy5saW5lV2lkdGg7Tz1tLW4vMn1pZih1LmRvd25Cb2R5Q29sb3Ipe3kuY29sb3I9dS5kb3duQm9keUNvbG9yO3kuZmlsbFN0eWxlPXUuZG93bkJvZHlDb2xvcn1DPVtPLE0sbixGXX1lbHNle2lmKHUud2lja0NvbG9yKXt5LmNvbG9yPXUud2lja0NvbG9yfWY9YS5leHRlbmQodHJ1ZSx7fSxzLHkpO3Uuc2hhcGVSZW5kZXJlci5kcmF3KEEsW1ttLGddLFttLFFdXSxmKTt5PXt9O3kuZmlsbFJlY3Q9ZmFsc2U7eS5zdHJva2VSZWN0PWZhbHNlO089W20tbi8yLHFdO009W20rbi8yLHRdO249bnVsbDtGPW51bGw7Qz1bTyxNXX19Zj1hLmV4dGVuZCh0cnVlLHt9LHMseSk7dS5zaGFwZVJlbmRlcmVyLmRyYXcoQSxDLGYpfWVsc2V7RT1zLmNvbG9yO2lmKHUub3BlbkNvbG9yKXtzLmNvbG9yPXUub3BlbkNvbG9yfWlmKCF1LmhsYyl7dS5zaGFwZVJlbmRlcmVyLmRyYXcoQSxbW20tdS5fdGlja0xlbmd0aCxxXSxbbSxxXV0scyl9cy5jb2xvcj1FO2lmKHUud2lja0NvbG9yKXtzLmNvbG9yPXUud2lja0NvbG9yfXUuc2hhcGVSZW5kZXJlci5kcmF3KEEsW1ttLGddLFttLFFdXSxzKTtzLmNvbG9yPUU7aWYodS5jbG9zZUNvbG9yKXtzLmNvbG9yPXUuY2xvc2VDb2xvcn11LnNoYXBlUmVuZGVyZXIuZHJhdyhBLFtbbSx0XSxbbSt1Ll90aWNrTGVuZ3RoLHRdXSxzKTtzLmNvbG9yPUV9fX1BLnJlc3RvcmUoKX07YS5qcXBsb3QuT0hMQ1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3U2hhZG93PWZ1bmN0aW9uKGIsZCxjKXt9O2EuanFwbG90Lk9ITENSZW5kZXJlci5jaGVja09wdGlvbnM9ZnVuY3Rpb24oZCxjLGIpe2lmKCFiLmhpZ2hsaWdodGVyKXtiLmhpZ2hsaWdodGVyPXtzaG93TWFya2VyOmZhbHNlLHRvb2x0aXBBeGVzOiJ5Iix5dmFsdWVzOjQsZm9ybWF0U3RyaW5nOic8dGFibGUgY2xhc3M9ImpxcGxvdC1oaWdobGlnaHRlciI+PHRyPjx0ZD5kYXRlOjwvdGQ+PHRkPiVzPC90ZD48L3RyPjx0cj48dGQ+b3Blbjo8L3RkPjx0ZD4lczwvdGQ+PC90cj48dHI+PHRkPmhpOjwvdGQ+PHRkPiVzPC90ZD48L3RyPjx0cj48dGQ+bG93OjwvdGQ+PHRkPiVzPC90ZD48L3RyPjx0cj48dGQ+Y2xvc2U6PC90ZD48dGQ+JXM8L3RkPjwvdHI+PC90YWJsZT4nfX19fSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.pieRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuUGllUmVuZGVyZXIKICAgICAqIFBsdWdpbiByZW5kZXJlciB0byBkcmF3IGEgcGllIGNoYXJ0LgogICAgICogeCB2YWx1ZXMsIGlmIHByZXNlbnQsIHdpbGwgYmUgdXNlZCBhcyBzbGljZSBsYWJlbHMuCiAgICAgKiB5IHZhbHVlcyBnaXZlIHNsaWNlIHNpemUuCiAgICAgKiAKICAgICAqIFRvIHVzZSB0aGlzIHJlbmRlcmVyLCB5b3UgbmVlZCB0byBpbmNsdWRlIHRoZSAKICAgICAqIHBpZSByZW5kZXJlciBwbHVnaW4sIGZvciBleGFtcGxlOgogICAgICogCiAgICAgKiA+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InBsdWdpbnMvanFwbG90LnBpZVJlbmRlcmVyLmpzIj48L3NjcmlwdD4KICAgICAqIAogICAgICogUHJvcGVydGllcyBkZXNjcmliZWQgaGVyZSBhcmUgcGFzc2VkIGludG8gdGhlICQuanFwbG90IGZ1bmN0aW9uCiAgICAgKiBhcyBvcHRpb25zIG9uIHRoZSBzZXJpZXMgcmVuZGVyZXIuICBGb3IgZXhhbXBsZToKICAgICAqIAogICAgICogPiBwbG90MiA9ICQuanFwbG90KCdjaGFydDInLCBbczEsIHMyXSwgewogICAgICogPiAgICAgc2VyaWVzRGVmYXVsdHM6IHsKICAgICAqID4gICAgICAgICByZW5kZXJlcjokLmpxcGxvdC5QaWVSZW5kZXJlciwKICAgICAqID4gICAgICAgICByZW5kZXJlck9wdGlvbnM6ewogICAgICogPiAgICAgICAgICAgICAgc2xpY2VNYXJnaW46IDIsCiAgICAgKiA+ICAgICAgICAgICAgICBzdGFydEFuZ2xlOiAtOTAKICAgICAqID4gICAgICAgICAgfQogICAgICogPiAgICAgIH0KICAgICAqID4gfSk7CiAgICAgKiAKICAgICAqIEEgcGllIHBsb3Qgd2lsbCB0cmlnZ2VyIGV2ZW50cyBvbiB0aGUgcGxvdCB0YXJnZXQKICAgICAqIGFjY29yZGluZyB0byB1c2VyIGludGVyYWN0aW9uLiAgQWxsIGV2ZW50cyByZXR1cm4gdGhlIGV2ZW50IG9iamVjdCwKICAgICAqIHRoZSBzZXJpZXMgaW5kZXgsIHRoZSBwb2ludCAoc2xpY2UpIGluZGV4LCBhbmQgdGhlIHBvaW50IGRhdGEgZm9yIAogICAgICogdGhlIGFwcHJvcHJpYXRlIHNsaWNlLgogICAgICogCiAgICAgKiAnanFwbG90RGF0YU1vdXNlT3ZlcicgLSB0cmlnZ2VyZWQgd2hlbiB1c2VyIG1vdXNlaW5nIG92ZXIgYSBzbGljZS4KICAgICAqICdqcXBsb3REYXRhSGlnaGxpZ2h0JyAtIHRyaWdnZXJlZCB0aGUgZmlyc3QgdGltZSB1c2VyIG1vdXNlcyBvdmVyIGEgc2xpY2UsCiAgICAgKiBpZiBoaWdobGlnaHRpbmcgaXMgZW5hYmxlZC4KICAgICAqICdqcXBsb3REYXRhVW5oaWdobGlnaHQnIC0gdHJpZ2dlcmVkIHdoZW4gYSB1c2VyIG1vdmVzIHRoZSBtb3VzZSBvdXQgb2YKICAgICAqIGEgaGlnaGxpZ2h0ZWQgc2xpY2UuCiAgICAgKiAnanFwbG90RGF0YUNsaWNrJyAtIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiBhIHNsaWNlLgogICAgICogJ2pxcGxvdERhdGFSaWdodENsaWNrJyAtIHRpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgcmlnaHQgY2xpY2tzIG9uIGEgc2xpY2UgaWYKICAgICAqIHRoZSAiY2FwdHVyZVJpZ2h0Q2xpY2siIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZSBvbiB0aGUgcGxvdC4KICAgICAqLwogICAgJC5qcXBsb3QuUGllUmVuZGVyZXIgPSBmdW5jdGlvbigpewogICAgICAgICQuanFwbG90LkxpbmVSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuUGllUmVuZGVyZXIucHJvdG90eXBlID0gbmV3ICQuanFwbG90LkxpbmVSZW5kZXJlcigpOwogICAgJC5qcXBsb3QuUGllUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuUGllUmVuZGVyZXI7CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIGEgc2VyaWVzCiAgICAkLmpxcGxvdC5QaWVSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMsIHBsb3QpIHsKICAgICAgICAvLyBHcm91cDogUHJvcGVydGllcwogICAgICAgIC8vCiAgICAgICAgLy8gcHJvcDogZGlhbWV0ZXIKICAgICAgICAvLyBPdXRlciBkaWFtZXRlciBvZiB0aGUgcGllLCBhdXRvIGNvbXB1dGVkIGJ5IGRlZmF1bHQKICAgICAgICB0aGlzLmRpYW1ldGVyID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBwYWRkaW5nCiAgICAgICAgLy8gcGFkZGluZyBiZXR3ZWVuIHRoZSBwaWUgYW5kIHBsb3QgZWRnZXMsIGxlZ2VuZCwgZXRjLgogICAgICAgIHRoaXMucGFkZGluZyA9IDIwOwogICAgICAgIC8vIHByb3A6IHNsaWNlTWFyZ2luCiAgICAgICAgLy8gYW5ndWxhciBzcGFjaW5nIGJldHdlZW4gcGllIHNsaWNlcyBpbiBkZWdyZWVzLgogICAgICAgIHRoaXMuc2xpY2VNYXJnaW4gPSAwOwogICAgICAgIC8vIHByb3A6IGZpbGwKICAgICAgICAvLyB0cnVlIG9yIGZhbHNlLCB3aGV0aGVyIHRvIGZpbCB0aGUgc2xpY2VzLgogICAgICAgIHRoaXMuZmlsbCA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogc2hhZG93T2Zmc2V0CiAgICAgICAgLy8gb2Zmc2V0IG9mIHRoZSBzaGFkb3cgZnJvbSB0aGUgc2xpY2UgYW5kIG9mZnNldCBvZiAKICAgICAgICAvLyBlYWNoIHN1Y2Nlc2l2ZSBzdHJva2Ugb2YgdGhlIHNoYWRvdyBmcm9tIHRoZSBsYXN0LgogICAgICAgIHRoaXMuc2hhZG93T2Zmc2V0ID0gMjsKICAgICAgICAvLyBwcm9wOiBzaGFkb3dBbHBoYQogICAgICAgIC8vIHRyYW5zcGFyZW5jeSBvZiB0aGUgc2hhZG93ICgwID0gdHJhbnNwYXJlbnQsIDEgPSBvcGFxdWUpCiAgICAgICAgdGhpcy5zaGFkb3dBbHBoYSA9IDAuMDc7CiAgICAgICAgLy8gcHJvcDogc2hhZG93RGVwdGgKICAgICAgICAvLyBudW1iZXIgb2Ygc3Ryb2tlcyB0byBhcHBseSB0byB0aGUgc2hhZG93LCAKICAgICAgICAvLyBlYWNoIHN0cm9rZSBvZmZzZXQgc2hhZG93T2Zmc2V0IGZyb20gdGhlIGxhc3QuCiAgICAgICAgdGhpcy5zaGFkb3dEZXB0aCA9IDU7CiAgICAgICAgLy8gcHJvcDogaGlnaGxpZ2h0TW91c2VPdmVyCiAgICAgICAgLy8gVHJ1ZSB0byBoaWdobGlnaHQgc2xpY2Ugd2hlbiBtb3VzZWQgb3Zlci4KICAgICAgICAvLyBUaGlzIG11c3QgYmUgZmFsc2UgdG8gZW5hYmxlIGhpZ2hsaWdodE1vdXNlRG93biB0byBoaWdobGlnaHQgd2hlbiBjbGlja2luZyBvbiBhIHNsaWNlLgogICAgICAgIHRoaXMuaGlnaGxpZ2h0TW91c2VPdmVyID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBoaWdobGlnaHRNb3VzZURvd24KICAgICAgICAvLyBUcnVlIHRvIGhpZ2hsaWdodCB3aGVuIGEgbW91c2UgYnV0dG9uIGlzIHByZXNzZWQgb3ZlciBhIHNsaWNlLgogICAgICAgIC8vIFRoaXMgd2lsbCBiZSBkaXNhYmxlZCBpZiBoaWdobGlnaHRNb3VzZU92ZXIgaXMgdHJ1ZS4KICAgICAgICB0aGlzLmhpZ2hsaWdodE1vdXNlRG93biA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGhpZ2hsaWdodENvbG9ycwogICAgICAgIC8vIGFuIGFycmF5IG9mIGNvbG9ycyB0byB1c2Ugd2hlbiBoaWdobGlnaHRpbmcgYSBzbGljZS4KICAgICAgICB0aGlzLmhpZ2hsaWdodENvbG9ycyA9IFtdOwogICAgICAgIC8vIHByb3A6IGRhdGFMYWJlbHMKICAgICAgICAvLyBFaXRoZXIgJ2xhYmVsJywgJ3ZhbHVlJywgJ3BlcmNlbnQnIG9yIGFuIGFycmF5IG9mIGxhYmVscyB0byBwbGFjZSBvbiB0aGUgcGllIHNsaWNlcy4KICAgICAgICAvLyBEZWZhdWx0cyB0byBwZXJjZW50YWdlIG9mIGVhY2ggcGllIHNsaWNlLgogICAgICAgIHRoaXMuZGF0YUxhYmVscyA9ICdwZXJjZW50JzsKICAgICAgICAvLyBwcm9wOiBzaG93RGF0YUxhYmVscwogICAgICAgIC8vIHRydWUgdG8gc2hvdyBkYXRhIGxhYmVscyBvbiBzbGljZXMuCiAgICAgICAgdGhpcy5zaG93RGF0YUxhYmVscyA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGRhdGFMYWJlbEZvcm1hdFN0cmluZwogICAgICAgIC8vIEZvcm1hdCBzdHJpbmcgZm9yIGRhdGEgbGFiZWxzLiAgSWYgbm9uZSwgJyVzJyBpcyB1c2VkIGZvciAibGFiZWwiIGFuZCBmb3IgYXJyYXlzLCAnJWQnIGZvciB2YWx1ZSBhbmQgJyVkJSUnIGZvciBwZXJjZW50YWdlLgogICAgICAgIHRoaXMuZGF0YUxhYmVsRm9ybWF0U3RyaW5nID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBkYXRhTGFiZWxUaHJlc2hvbGQKICAgICAgICAvLyBUaHJlc2hob2xkIGluIHBlcmNlbnRhZ2UgKDAtMTAwKSBvZiBwaWUgYXJlYSwgYmVsb3cgd2hpY2ggbm8gbGFiZWwgd2lsbCBiZSBkaXNwbGF5ZWQuCiAgICAgICAgLy8gVGhpcyBhcHBsaWVzIHRvIGFsbCBsYWJlbCB0eXBlcywgbm90IGp1c3QgdG8gcGVyY2VudGFnZSBsYWJlbHMuCiAgICAgICAgdGhpcy5kYXRhTGFiZWxUaHJlc2hvbGQgPSAzOwogICAgICAgIC8vIHByb3A6IGRhdGFMYWJlbFBvc2l0aW9uRmFjdG9yCiAgICAgICAgLy8gQSBNdWx0aXBsaWVyICgwLTEpIG9mIHRoZSBwaWUgcmFkaXVzIHdoaWNoIGNvbnRyb2xzIHBvc2l0aW9uIG9mIGxhYmVsIG9uIHNsaWNlLgogICAgICAgIC8vIEluY3JlYXNpbmcgd2lsbCBzbGlkZSBsYWJlbCB0b3dhcmQgZWRnZSBvZiBwaWUsIGRlY3JlYXNpbmcgd2lsbCBzbGlkZSBsYWJlbCB0b3dhcmQgY2VudGVyIG9mIHBpZS4KICAgICAgICB0aGlzLmRhdGFMYWJlbFBvc2l0aW9uRmFjdG9yID0gMC41MjsKICAgICAgICAvLyBwcm9wOiBkYXRhTGFiZWxOdWRnZQogICAgICAgIC8vIE51bWJlciBvZiBwaXhlbHMgdG8gc2xpZGUgdGhlIGxhYmVsIGF3YXkgZnJvbSAoKykgb3IgdG93YXJkICgtKSB0aGUgY2VudGVyIG9mIHRoZSBwaWUuCiAgICAgICAgdGhpcy5kYXRhTGFiZWxOdWRnZSA9IDI7CiAgICAgICAgLy8gcHJvcDogZGF0YUxhYmVsQ2VudGVyT24KICAgICAgICAvLyBUcnVlIHRvIGNlbnRlciB0aGUgZGF0YSBsYWJlbCBhdCBpdHMgcG9zaXRpb24uCiAgICAgICAgLy8gRmFsc2UgdG8gc2V0IHRoZSBpbnNpZGUgZmFjaW5nIGVkZ2Ugb2YgdGhlIGxhYmVsIGF0IGl0cyBwb3NpdGlvbi4KICAgICAgICB0aGlzLmRhdGFMYWJlbENlbnRlck9uID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBzdGFydEFuZ2xlCiAgICAgICAgLy8gQW5nbGUgdG8gc3RhcnQgZHJhd2luZyBwaWUgaW4gZGVncmVlcy4gIAogICAgICAgIC8vIEFjY29yZGluZyB0byBvcmllbnRhdGlvbiBvZiBjYW52YXMgY29vcmRpbmF0ZSBzeXN0ZW06CiAgICAgICAgLy8gMCA9IG9uIHRoZSBwb3NpdGl2ZSB4IGF4aXMKICAgICAgICAvLyAtOTAgPSBvbiB0aGUgcG9zaXRpdmUgeSBheGlzLgogICAgICAgIC8vIDkwID0gb24gdGhlIG5lZ2FpdmUgeSBheGlzLgogICAgICAgIC8vIDE4MCBvciAtIDE4MCA9IG9uIHRoZSBuZWdhdGl2ZSB4IGF4aXMuCiAgICAgICAgdGhpcy5zdGFydEFuZ2xlID0gMDsKICAgICAgICB0aGlzLnRpY2tSZW5kZXJlciA9ICQuanFwbG90LlBpZVRpY2tSZW5kZXJlcjsKICAgICAgICAvLyBVc2VkIGFzIGNoZWNrIGZvciBjb25kaXRpb25zIHdoZXJlIHBpZSBzaG91bGRuJ3QgYmUgZHJhd24uCiAgICAgICAgdGhpcy5fZHJhd0RhdGEgPSB0cnVlOwogICAgICAgIHRoaXMuX3R5cGUgPSAncGllJzsKICAgICAgICAKICAgICAgICAvLyBpZiB1c2VyIGhhcyBwYXNzZWQgaW4gaGlnaGxpZ2h0TW91c2VEb3duIG9wdGlvbiBhbmQgbm90IHNldCBoaWdobGlnaHRNb3VzZU92ZXIsIGRpc2FibGUgaGlnaGxpZ2h0TW91c2VPdmVyCiAgICAgICAgaWYgKG9wdGlvbnMuaGlnaGxpZ2h0TW91c2VEb3duICYmIG9wdGlvbnMuaGlnaGxpZ2h0TW91c2VPdmVyID09IG51bGwpIHsKICAgICAgICAgICAgb3B0aW9ucy5oaWdobGlnaHRNb3VzZU92ZXIgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CgogICAgICAgIGlmICh0aGlzLnNsaWNlTWFyZ2luIDwgMCkgewogICAgICAgICAgICB0aGlzLnNsaWNlTWFyZ2luID0gMDsKICAgICAgICB9CgogICAgICAgIHRoaXMuX2RpYW1ldGVyID0gbnVsbDsKICAgICAgICB0aGlzLl9yYWRpdXMgPSBudWxsOwogICAgICAgIC8vIGFycmF5IG9mIFtzdGFydCxlbmRdIGFuZ2xlcyBhcnJheXMsIG9uZSBmb3IgZWFjaCBzbGljZS4gIEluIHJhZGlhbnMuCiAgICAgICAgdGhpcy5fc2xpY2VBbmdsZXMgPSBbXTsKICAgICAgICAvLyBpbmRleCBvZiB0aGUgY3VycmVudHkgaGlnaGxpZ2h0ZWQgcG9pbnQsIGlmIGFueQogICAgICAgIHRoaXMuX2hpZ2hsaWdodGVkUG9pbnQgPSBudWxsOwogICAgICAgIAogICAgICAgIC8vIHNldCBoaWdobGlnaHQgY29sb3JzIGlmIG5vbmUgcHJvdmlkZWQKICAgICAgICBpZiAodGhpcy5oaWdobGlnaHRDb2xvcnMubGVuZ3RoID09IDApIHsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMuc2VyaWVzQ29sb3JzLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgICAgIHZhciByZ2JhID0gJC5qcXBsb3QuZ2V0Q29sb3JDb21wb25lbnRzKHRoaXMuc2VyaWVzQ29sb3JzW2ldKTsKICAgICAgICAgICAgICAgIHZhciBuZXdyZ2IgPSBbcmdiYVswXSwgcmdiYVsxXSwgcmdiYVsyXV07CiAgICAgICAgICAgICAgICB2YXIgc3VtID0gbmV3cmdiWzBdICsgbmV3cmdiWzFdICsgbmV3cmdiWzJdOwogICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPDM7IGorKykgewogICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gZGFya2VuaW5nLCBsb3dlc3QgY29sb3IgY29tcG9uZW50IGNhbiBiZSBpcyA2MC4KICAgICAgICAgICAgICAgICAgICBuZXdyZ2Jbal0gPSAoc3VtID4gNTcwKSA/ICBuZXdyZ2Jbal0gKiAwLjggOiBuZXdyZ2Jbal0gKyAwLjMgKiAoMjU1IC0gbmV3cmdiW2pdKTsKICAgICAgICAgICAgICAgICAgICBuZXdyZ2Jbal0gPSBwYXJzZUludChuZXdyZ2Jbal0sIDEwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0Q29sb3JzLnB1c2goJ3JnYignK25ld3JnYlswXSsnLCcrbmV3cmdiWzFdKycsJytuZXdyZ2JbMl0rJyknKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICB0aGlzLmhpZ2hsaWdodENvbG9yR2VuZXJhdG9yID0gbmV3ICQuanFwbG90LkNvbG9yR2VuZXJhdG9yKHRoaXMuaGlnaGxpZ2h0Q29sb3JzKTsKICAgICAgICAKICAgICAgICBwbG90LnBvc3RQYXJzZU9wdGlvbnNIb29rcy5hZGRPbmNlKHBvc3RQYXJzZU9wdGlvbnMpOwogICAgICAgIHBsb3QucG9zdEluaXRIb29rcy5hZGRPbmNlKHBvc3RJbml0KTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RNb3VzZU1vdmUnLCBoYW5kbGVNb3ZlKTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RNb3VzZURvd24nLCBoYW5kbGVNb3VzZURvd24pOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdE1vdXNlVXAnLCBoYW5kbGVNb3VzZVVwKTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RDbGljaycsIGhhbmRsZUNsaWNrKTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RSaWdodENsaWNrJywgaGFuZGxlUmlnaHRDbGljayk7CiAgICAgICAgcGxvdC5wb3N0RHJhd0hvb2tzLmFkZE9uY2UocG9zdFBsb3REcmF3KTsKICAgIH07CiAgICAKICAgICQuanFwbG90LlBpZVJlbmRlcmVyLnByb3RvdHlwZS5zZXRHcmlkRGF0YSA9IGZ1bmN0aW9uKHBsb3QpIHsKICAgICAgICAvLyBzZXQgZ3JpZERhdGEgcHJvcGVydHkuICBUaGlzIHdpbGwgaG9sZCBhbmdsZSBpbiByYWRpYW5zIG9mIGVhY2ggZGF0YSBwb2ludC4KICAgICAgICB2YXIgc3RhY2sgPSBbXTsKICAgICAgICB2YXIgdGQgPSBbXTsKICAgICAgICB2YXIgc2EgPSB0aGlzLnN0YXJ0QW5nbGUvMTgwKk1hdGguUEk7CiAgICAgICAgdmFyIHRvdCA9IDA7CiAgICAgICAgLy8gZG9uJ3Qga25vdyBpZiB3ZSBoYXZlIGFueSB2YWxpZCBkYXRhIHlldCwgc28gc2V0IHBsb3QgdG8gbm90IGRyYXcuCiAgICAgICAgdGhpcy5fZHJhd0RhdGEgPSBmYWxzZTsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVtpXVsxXSAhPSAwKSB7CiAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIGRhdGEsIE8uSy4gdG8gZHJhdy4KICAgICAgICAgICAgICAgIHRoaXMuX2RyYXdEYXRhID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGFjay5wdXNoKHRoaXMuZGF0YVtpXVsxXSk7CiAgICAgICAgICAgIHRkLnB1c2goW3RoaXMuZGF0YVtpXVswXV0pOwogICAgICAgICAgICBpZiAoaT4wKSB7CiAgICAgICAgICAgICAgICBzdGFja1tpXSArPSBzdGFja1tpLTFdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRvdCArPSB0aGlzLmRhdGFbaV1bMV07CiAgICAgICAgfQogICAgICAgIHZhciBmYWN0ID0gTWF0aC5QSSoyL3N0YWNrW3N0YWNrLmxlbmd0aCAtIDFdOwogICAgICAgIAogICAgICAgIGZvciAodmFyIGk9MDsgaTxzdGFjay5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB0ZFtpXVsxXSA9IHN0YWNrW2ldICogZmFjdDsKICAgICAgICAgICAgdGRbaV1bMl0gPSB0aGlzLmRhdGFbaV1bMV0vdG90OwogICAgICAgIH0KICAgICAgICB0aGlzLmdyaWREYXRhID0gdGQ7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5QaWVSZW5kZXJlci5wcm90b3R5cGUubWFrZUdyaWREYXRhID0gZnVuY3Rpb24oZGF0YSwgcGxvdCkgewogICAgICAgIHZhciBzdGFjayA9IFtdOwogICAgICAgIHZhciB0ZCA9IFtdOwogICAgICAgIHZhciB0b3QgPSAwOwogICAgICAgIHZhciBzYSA9IHRoaXMuc3RhcnRBbmdsZS8xODAqTWF0aC5QSTsKICAgICAgICAvLyBkb24ndCBrbm93IGlmIHdlIGhhdmUgYW55IHZhbGlkIGRhdGEgeWV0LCBzbyBzZXQgcGxvdCB0byBub3QgZHJhdy4KICAgICAgICB0aGlzLl9kcmF3RGF0YSA9IGZhbHNlOwogICAgICAgIGZvciAodmFyIGk9MDsgaTxkYXRhLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVtpXVsxXSAhPSAwKSB7CiAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIGRhdGEsIE8uSy4gdG8gZHJhdy4KICAgICAgICAgICAgICAgIHRoaXMuX2RyYXdEYXRhID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGFjay5wdXNoKGRhdGFbaV1bMV0pOwogICAgICAgICAgICB0ZC5wdXNoKFtkYXRhW2ldWzBdXSk7CiAgICAgICAgICAgIGlmIChpPjApIHsKICAgICAgICAgICAgICAgIHN0YWNrW2ldICs9IHN0YWNrW2ktMV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdG90ICs9IGRhdGFbaV1bMV07CiAgICAgICAgfQogICAgICAgIHZhciBmYWN0ID0gTWF0aC5QSSoyL3N0YWNrW3N0YWNrLmxlbmd0aCAtIDFdOwogICAgICAgIAogICAgICAgIGZvciAodmFyIGk9MDsgaTxzdGFjay5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB0ZFtpXVsxXSA9IHN0YWNrW2ldICogZmFjdDsKICAgICAgICAgICAgdGRbaV1bMl0gPSBkYXRhW2ldWzFdL3RvdDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRkOwogICAgfTsKCiAgICBmdW5jdGlvbiBjYWxjUmFkaXVzQWRqdXN0bWVudChhbmcpIHsKICAgICAgICByZXR1cm4gTWF0aC5zaW4oKGFuZyAtIChhbmctTWF0aC5QSSkgLyA4IC8gTWF0aC5QSSApLzIuMCk7CiAgICB9CgogICAgZnVuY3Rpb24gY2FsY1JQcmltZShhbmcxLCBhbmcyLCBzbGljZU1hcmdpbiwgZmlsbCwgbGluZVdpZHRoKSB7CiAgICAgICAgdmFyIHJwcmltZSA9IDA7CiAgICAgICAgdmFyIGFuZyA9IGFuZzIgLSBhbmcxOwogICAgICAgIHZhciBhYnNhbmcgPSBNYXRoLmFicyhhbmcpOwogICAgICAgIHZhciBzbSA9IHNsaWNlTWFyZ2luOwogICAgICAgIGlmIChmaWxsID09IGZhbHNlKSB7CiAgICAgICAgICAgIHNtICs9IGxpbmVXaWR0aDsKICAgICAgICB9CgogICAgICAgIGlmIChzbSA+IDAgJiYgYWJzYW5nID4gMC4wMSAmJiBhYnNhbmcgPCA2LjI4MikgewogICAgICAgICAgICBycHJpbWUgPSBwYXJzZUZsb2F0KHNtKSAvIDIuMCAvIGNhbGNSYWRpdXNBZGp1c3RtZW50KGFuZyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcnByaW1lOwogICAgfQogICAgCiAgICAkLmpxcGxvdC5QaWVSZW5kZXJlci5wcm90b3R5cGUuZHJhd1NsaWNlID0gZnVuY3Rpb24gKGN0eCwgYW5nMSwgYW5nMiwgY29sb3IsIGlzU2hhZG93KSB7CiAgICAgICAgaWYgKHRoaXMuX2RyYXdEYXRhKSB7CiAgICAgICAgICAgIHZhciByID0gdGhpcy5fcmFkaXVzOwogICAgICAgICAgICB2YXIgZmlsbCA9IHRoaXMuZmlsbDsKICAgICAgICAgICAgdmFyIGxpbmVXaWR0aCA9IHRoaXMubGluZVdpZHRoOwogICAgICAgICAgICB2YXIgc20gPSB0aGlzLnNsaWNlTWFyZ2luOwogICAgICAgICAgICBpZiAodGhpcy5maWxsID09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICBzbSArPSB0aGlzLmxpbmVXaWR0aDsKICAgICAgICAgICAgfQogICAgICAgICAgICBjdHguc2F2ZSgpOwogICAgICAgICAgICBjdHgudHJhbnNsYXRlKHRoaXMuX2NlbnRlclswXSwgdGhpcy5fY2VudGVyWzFdKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHZhciBycHJpbWUgPSBjYWxjUlByaW1lKGFuZzEsIGFuZzIsIHRoaXMuc2xpY2VNYXJnaW4sIHRoaXMuZmlsbCwgdGhpcy5saW5lV2lkdGgpOwoKICAgICAgICAgICAgdmFyIHRyYW5zeCA9IHJwcmltZSAqIE1hdGguY29zKChhbmcxICsgYW5nMikgLyAyLjApOwogICAgICAgICAgICB2YXIgdHJhbnN5ID0gcnByaW1lICogTWF0aC5zaW4oKGFuZzEgKyBhbmcyKSAvIDIuMCk7CgogICAgICAgICAgICBpZiAoKGFuZzIgLSBhbmcxKSA8PSBNYXRoLlBJKSB7CiAgICAgICAgICAgICAgICByIC09IHJwcmltZTsgIAogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgciArPSBycHJpbWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGN0eC50cmFuc2xhdGUodHJhbnN4LCB0cmFuc3kpOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGlzU2hhZG93KSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTAsIGw9dGhpcy5zaGFkb3dEZXB0aDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBjdHguc2F2ZSgpOwogICAgICAgICAgICAgICAgICAgIGN0eC50cmFuc2xhdGUodGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5jb3ModGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSksIHRoaXMuc2hhZG93T2Zmc2V0Kk1hdGguc2luKHRoaXMuc2hhZG93QW5nbGUvMTgwKk1hdGguUEkpKTsKICAgICAgICAgICAgICAgICAgICBkb0RyYXcocik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTAsIGw9dGhpcy5zaGFkb3dEZXB0aDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBkb0RyYXcocik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgICAgICB9CiAgICAKICAgICAgICBmdW5jdGlvbiBkb0RyYXcgKHJhZCkgewogICAgICAgICAgICAvLyBGaXggZm9yIElFIGFuZCBDaHJvbWUgdGhhdCBjYW4ndCBzZWVtIHRvIGRyYXcgY2lyY2xlcyBjb3JyZWN0bHkuCiAgICAgICAgICAgIC8vIGFuZzIgc2hvdWxkIGFsd2F5cyBiZSA8PSAyIHBpIHNpbmNlIHRoYXQgaXMgdGhlIHdheSB0aGUgZGF0YSBpcyBjb252ZXJ0ZWQuCiAgICAgICAgICAgIC8vIDJQaSA9IDYuMjgzMTg1MywgUGkgPSAzLjE0MTU5MjcKICAgICAgICAgICAgIGlmIChhbmcyID4gNi4yODIgKyB0aGlzLnN0YXJ0QW5nbGUpIHsKICAgICAgICAgICAgICAgIGFuZzIgPSA2LjI4MiArIHRoaXMuc3RhcnRBbmdsZTsKICAgICAgICAgICAgICAgIGlmIChhbmcxID4gYW5nMikgewogICAgICAgICAgICAgICAgICAgIGFuZzEgPSA2LjI4MSArIHRoaXMuc3RhcnRBbmdsZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBGaXggZm9yIElFLCB3aGVyZSBpdCBjYW4ndCBzZWVtIHRvIGhhbmRsZSAwIGRlZ3JlZSBhbmdsZXMuICBBbHNvIGF2b2lkcwogICAgICAgICAgICAvLyB1Z2x5IGxpbmUgb24gdW5maWxsZWQgcGllcy4KICAgICAgICAgICAgaWYgKGFuZzEgPj0gYW5nMikgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9ICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTsgIAogICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gY29sb3I7CiAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IGNvbG9yOwogICAgICAgICAgICBjdHgubGluZVdpZHRoID0gbGluZVdpZHRoOwogICAgICAgICAgICBjdHguYXJjKDAsIDAsIHJhZCwgYW5nMSwgYW5nMiwgZmFsc2UpOwogICAgICAgICAgICBjdHgubGluZVRvKDAsMCk7CiAgICAgICAgICAgIGN0eC5jbG9zZVBhdGgoKTsKICAgICAgICAKICAgICAgICAgICAgaWYgKGZpbGwpIHsKICAgICAgICAgICAgICAgIGN0eC5maWxsKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBjdHguc3Ryb2tlKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBzZXJpZXMKICAgICQuanFwbG90LlBpZVJlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24gKGN0eCwgZ2QsIG9wdGlvbnMsIHBsb3QpIHsKICAgICAgICB2YXIgaTsKICAgICAgICB2YXIgb3B0cyA9IChvcHRpb25zICE9IHVuZGVmaW5lZCkgPyBvcHRpb25zIDoge307CiAgICAgICAgLy8gb2Zmc2V0IGFuZCBkaXJlY3Rpb24gb2Ygb2Zmc2V0IGR1ZSB0byBsZWdlbmQgcGxhY2VtZW50CiAgICAgICAgdmFyIG9mZnggPSAwOwogICAgICAgIHZhciBvZmZ5ID0gMDsKICAgICAgICB2YXIgdHJhbnMgPSAxOwogICAgICAgIHZhciBjb2xvckdlbmVyYXRvciA9IG5ldyAkLmpxcGxvdC5Db2xvckdlbmVyYXRvcih0aGlzLnNlcmllc0NvbG9ycyk7CiAgICAgICAgaWYgKG9wdGlvbnMubGVnZW5kSW5mbyAmJiBvcHRpb25zLmxlZ2VuZEluZm8ucGxhY2VtZW50ID09ICdpbnNpZGVHcmlkJykgewogICAgICAgICAgICB2YXIgbGkgPSBvcHRpb25zLmxlZ2VuZEluZm87CiAgICAgICAgICAgIHN3aXRjaCAobGkubG9jYXRpb24pIHsKICAgICAgICAgICAgICAgIGNhc2UgJ253JzoKICAgICAgICAgICAgICAgICAgICBvZmZ4ID0gbGkud2lkdGggKyBsaS54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAndyc6CiAgICAgICAgICAgICAgICAgICAgb2ZmeCA9IGxpLndpZHRoICsgbGkueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3N3JzoKICAgICAgICAgICAgICAgICAgICBvZmZ4ID0gbGkud2lkdGggKyBsaS54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnbmUnOgogICAgICAgICAgICAgICAgICAgIG9mZnggPSBsaS53aWR0aCArIGxpLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgdHJhbnMgPSAtMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2UnOgogICAgICAgICAgICAgICAgICAgIG9mZnggPSBsaS53aWR0aCArIGxpLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgdHJhbnMgPSAtMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3NlJzoKICAgICAgICAgICAgICAgICAgICBvZmZ4ID0gbGkud2lkdGggKyBsaS54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIHRyYW5zID0gLTE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICduJzoKICAgICAgICAgICAgICAgICAgICBvZmZ5ID0gbGkuaGVpZ2h0ICsgbGkueW9mZnNldDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgICAgICAgIG9mZnkgPSBsaS5oZWlnaHQgKyBsaS55b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIHRyYW5zID0gLTE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHZhciBzaGFkb3cgPSAob3B0cy5zaGFkb3cgIT0gdW5kZWZpbmVkKSA/IG9wdHMuc2hhZG93IDogdGhpcy5zaGFkb3c7CiAgICAgICAgdmFyIGZpbGwgPSAob3B0cy5maWxsICE9IHVuZGVmaW5lZCkgPyBvcHRzLmZpbGwgOiB0aGlzLmZpbGw7CiAgICAgICAgdmFyIGN3ID0gY3R4LmNhbnZhcy53aWR0aDsKICAgICAgICB2YXIgY2ggPSBjdHguY2FudmFzLmhlaWdodDsKICAgICAgICB2YXIgdyA9IGN3IC0gb2ZmeCAtIDIgKiB0aGlzLnBhZGRpbmc7CiAgICAgICAgdmFyIGggPSBjaCAtIG9mZnkgLSAyICogdGhpcy5wYWRkaW5nOwogICAgICAgIHZhciBtaW5kaW0gPSBNYXRoLm1pbih3LGgpOwogICAgICAgIHZhciBkID0gbWluZGltOwogICAgICAgIAogICAgICAgIC8vIEZpeGVzIGlzc3VlICMyNzIuICBUaGFua3MgaHVnd2lqc3QhCiAgICAgICAgLy8gcmVzZXQgc2xpY2UgYW5nbGVzIGFycmF5LgogICAgICAgIHRoaXMuX3NsaWNlQW5nbGVzID0gW107CgogICAgICAgIHZhciBzbSA9IHRoaXMuc2xpY2VNYXJnaW47CiAgICAgICAgaWYgKHRoaXMuZmlsbCA9PSBmYWxzZSkgewogICAgICAgICAgICBzbSArPSB0aGlzLmxpbmVXaWR0aDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgdmFyIHJwcmltZTsKICAgICAgICB2YXIgbWF4cnByaW1lID0gMDsKCiAgICAgICAgdmFyIGFuZywgYW5nMSwgYW5nMiwgc2hhZG93Q29sb3I7CiAgICAgICAgdmFyIHNhID0gdGhpcy5zdGFydEFuZ2xlIC8gMTgwICogTWF0aC5QSTsKCiAgICAgICAgLy8gaGF2ZSB0byBwcmUtZHJhdyBzaGFkb3dzLCBzbyBsb29wIHRocm9naCBoZXJlIGFuZCBjYWxjdWxhdGUgc29tZSB2YWx1ZXMgYWxzby4KICAgICAgICBmb3IgKHZhciBpPTAsIGw9Z2QubGVuZ3RoOyBpPGw7IGkrKykgewogICAgICAgICAgICBhbmcxID0gKGkgPT0gMCkgPyBzYSA6IGdkW2ktMV1bMV0gKyBzYTsKICAgICAgICAgICAgYW5nMiA9IGdkW2ldWzFdICsgc2E7CgogICAgICAgICAgICB0aGlzLl9zbGljZUFuZ2xlcy5wdXNoKFthbmcxLCBhbmcyXSk7CgogICAgICAgICAgICBycHJpbWUgPSBjYWxjUlByaW1lKGFuZzEsIGFuZzIsIHRoaXMuc2xpY2VNYXJnaW4sIHRoaXMuZmlsbCwgdGhpcy5saW5lV2lkdGgpOwoKICAgICAgICAgICAgaWYgKE1hdGguYWJzKGFuZzItYW5nMSkgPiBNYXRoLlBJKSB7CiAgICAgICAgICAgICAgICBtYXhycHJpbWUgPSBNYXRoLm1heChycHJpbWUsIG1heHJwcmltZSk7ICAKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMuZGlhbWV0ZXIgIT0gbnVsbCAmJiB0aGlzLmRpYW1ldGVyID4gMCkgewogICAgICAgICAgICB0aGlzLl9kaWFtZXRlciA9IHRoaXMuZGlhbWV0ZXIgLSAyKm1heHJwcmltZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHRoaXMuX2RpYW1ldGVyID0gZCAtIDIqbWF4cnByaW1lOwogICAgICAgIH0KCiAgICAgICAgLy8gTmVlZCB0byBjaGVjayBmb3IgdW5kZXJzaXplZCBwaWUuICBUaGlzIGNhbiBoYXBwZW4gaWYKICAgICAgICAvLyBwbG90IGFyZWEgdG9vIHNtYWxsIGFuZCBsZWdlbmQgaXMgdG9vIGJpZy4KICAgICAgICBpZiAodGhpcy5fZGlhbWV0ZXIgPCA2KSB7CiAgICAgICAgICAgICQuanFwbG90LmxvZygnRGlhbWV0ZXIgb2YgcGllIHRvbyBzbWFsbCwgbm90IHJlbmRlcmluZy4nKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdmFyIHIgPSB0aGlzLl9yYWRpdXMgPSB0aGlzLl9kaWFtZXRlci8yOwoKICAgICAgICB0aGlzLl9jZW50ZXIgPSBbKGN3IC0gdHJhbnMgKiBvZmZ4KS8yICsgdHJhbnMgKiBvZmZ4ICsgbWF4cnByaW1lICogTWF0aC5jb3Moc2EpLCAoY2ggLSB0cmFucypvZmZ5KS8yICsgdHJhbnMgKiBvZmZ5ICsgbWF4cnByaW1lICogTWF0aC5zaW4oc2EpXTsKCiAgICAgICAgaWYgKHRoaXMuc2hhZG93KSB7CiAgICAgICAgICAgIGZvciAodmFyIGk9MCwgbD1nZC5sZW5ndGg7IGk8bDsgaSsrKSB7CiAgICAgICAgICAgICAgICBzaGFkb3dDb2xvciA9ICdyZ2JhKDAsMCwwLCcrdGhpcy5zaGFkb3dBbHBoYSsnKSc7CiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmRyYXdTbGljZS5jYWxsICh0aGlzLCBjdHgsIHRoaXMuX3NsaWNlQW5nbGVzW2ldWzBdLCB0aGlzLl9zbGljZUFuZ2xlc1tpXVsxXSwgc2hhZG93Q29sb3IsIHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGZvciAodmFyIGk9MDsgaTxnZC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuZHJhd1NsaWNlLmNhbGwgKHRoaXMsIGN0eCwgdGhpcy5fc2xpY2VBbmdsZXNbaV1bMF0sIHRoaXMuX3NsaWNlQW5nbGVzW2ldWzFdLCBjb2xvckdlbmVyYXRvci5uZXh0KCksIGZhbHNlKTsKICAgICAgICAKICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0RhdGFMYWJlbHMgJiYgZ2RbaV1bMl0qMTAwID49IHRoaXMuZGF0YUxhYmVsVGhyZXNob2xkKSB7CiAgICAgICAgICAgICAgICB2YXIgZnN0ciwgYXZnYW5nID0gKHRoaXMuX3NsaWNlQW5nbGVzW2ldWzBdICsgdGhpcy5fc2xpY2VBbmdsZXNbaV1bMV0pLzIsIGxhYmVsOwogICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFMYWJlbHMgPT0gJ2xhYmVsJykgewogICAgICAgICAgICAgICAgICAgIGZzdHIgPSB0aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZyB8fCAnJXMnOwogICAgICAgICAgICAgICAgICAgIGxhYmVsID0gJC5qcXBsb3Quc3ByaW50Zihmc3RyLCBnZFtpXVswXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmRhdGFMYWJlbHMgPT0gJ3ZhbHVlJykgewogICAgICAgICAgICAgICAgICAgIGZzdHIgPSB0aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZyB8fCAnJWQnOwogICAgICAgICAgICAgICAgICAgIGxhYmVsID0gJC5qcXBsb3Quc3ByaW50Zihmc3RyLCB0aGlzLmRhdGFbaV1bMV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5kYXRhTGFiZWxzID09ICdwZXJjZW50JykgewogICAgICAgICAgICAgICAgICAgIGZzdHIgPSB0aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZyB8fCAnJWQlJSc7CiAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSAkLmpxcGxvdC5zcHJpbnRmKGZzdHIsIGdkW2ldWzJdKjEwMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmRhdGFMYWJlbHMuY29uc3RydWN0b3IgPT0gQXJyYXkpIHsKICAgICAgICAgICAgICAgICAgICBmc3RyID0gdGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmcgfHwgJyVzJzsKICAgICAgICAgICAgICAgICAgICBsYWJlbCA9ICQuanFwbG90LnNwcmludGYoZnN0ciwgdGhpcy5kYXRhTGFiZWxzW2ldKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgZmFjdCA9ICh0aGlzLl9yYWRpdXMgKSAqIHRoaXMuZGF0YUxhYmVsUG9zaXRpb25GYWN0b3IgKyB0aGlzLnNsaWNlTWFyZ2luICsgdGhpcy5kYXRhTGFiZWxOdWRnZTsKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgeCA9IHRoaXMuX2NlbnRlclswXSArIE1hdGguY29zKGF2Z2FuZykgKiBmYWN0ICsgdGhpcy5jYW52YXMuX29mZnNldHMubGVmdDsKICAgICAgICAgICAgICAgIHZhciB5ID0gdGhpcy5fY2VudGVyWzFdICsgTWF0aC5zaW4oYXZnYW5nKSAqIGZhY3QgKyB0aGlzLmNhbnZhcy5fb2Zmc2V0cy50b3A7CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGxhYmVsZWxlbSA9ICQoJzxkaXYgY2xhc3M9ImpxcGxvdC1waWUtc2VyaWVzIGpxcGxvdC1kYXRhLWxhYmVsIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7Ij4nICsgbGFiZWwgKyAnPC9kaXY+JykuaW5zZXJ0QmVmb3JlKHBsb3QuZXZlbnRDYW52YXMuX2VsZW0pOwogICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YUxhYmVsQ2VudGVyT24pIHsKICAgICAgICAgICAgICAgICAgICB4IC09IGxhYmVsZWxlbS53aWR0aCgpLzI7CiAgICAgICAgICAgICAgICAgICAgeSAtPSBsYWJlbGVsZW0uaGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHggLT0gbGFiZWxlbGVtLndpZHRoKCkgKiBNYXRoLnNpbihhdmdhbmcvMik7CiAgICAgICAgICAgICAgICAgICAgeSAtPSBsYWJlbGVsZW0uaGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHggPSBNYXRoLnJvdW5kKHgpOwogICAgICAgICAgICAgICAgeSA9IE1hdGgucm91bmQoeSk7CiAgICAgICAgICAgICAgICBsYWJlbGVsZW0uY3NzKHtsZWZ0OiB4LCB0b3A6IHl9KTsKICAgICAgICAgICAgfQogICAgICAgIH0gICAgICAgICAgICAKICAgIH07CiAgICAKICAgICQuanFwbG90LlBpZUF4aXNSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuUGllQXhpc1JlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIoKTsKICAgICQuanFwbG90LlBpZUF4aXNSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5QaWVBeGlzUmVuZGVyZXI7CiAgICAgICAgCiAgICAKICAgIC8vIFRoZXJlIGFyZSBubyB0cmFkaXRpb25hbCBheGVzIG9uIGEgcGllIGNoYXJ0LiAgV2UganVzdCBuZWVkIHRvIHByb3ZpZGUKICAgIC8vIGR1bW15IG9iamVjdHMgd2l0aCBwcm9wZXJ0aWVzIHNvIHRoZSBwbG90IHdpbGwgcmVuZGVyLgogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYXhpcyBvYmplY3QuCiAgICAkLmpxcGxvdC5QaWVBeGlzUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zKXsKICAgICAgICAvLwogICAgICAgIHRoaXMudGlja1JlbmRlcmVyID0gJC5qcXBsb3QuUGllVGlja1JlbmRlcmVyOwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgIC8vIEkgZG9uJ3QgdGhpbmsgSSdtIGdvaW5nIHRvIG5lZWQgX2RhdGFCb3VuZHMgaGVyZS4KICAgICAgICAvLyBoYXZlIHRvIGdvIEF4aXMgc2NhbGluZyBpbiBhIHdheSB0byBmaXQgY2hhcnQgb250byBwbG90IGFyZWEKICAgICAgICAvLyBhbmQgcHJvdmlkZSB1MnAgYW5kIHAydSBmdW5jdGlvbmFsaXR5IGZvciBtb3VzZSBjdXJzb3IsIGV0Yy4KICAgICAgICAvLyBmb3IgY29udmllbmVuY2Ugc2V0IF9kYXRhQm91bmRzIHRvIDAgYW5kIDEwMCBhbmQKICAgICAgICAvLyBzZXQgbWluL21heCB0byAwIGFuZCAxMDAuCiAgICAgICAgdGhpcy5fZGF0YUJvdW5kcyA9IHttaW46MCwgbWF4OjEwMH07CiAgICAgICAgdGhpcy5taW4gPSAwOwogICAgICAgIHRoaXMubWF4ID0gMTAwOwogICAgICAgIHRoaXMuc2hvd1RpY2tzID0gZmFsc2U7CiAgICAgICAgdGhpcy50aWNrcyA9IFtdOwogICAgICAgIHRoaXMuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICB0aGlzLnNob3cgPSBmYWxzZTsgCiAgICB9OwogICAgCiAgICAKICAgIAogICAgCiAgICAkLmpxcGxvdC5QaWVMZWdlbmRSZW5kZXJlciA9IGZ1bmN0aW9uKCl7CiAgICAgICAgJC5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuUGllTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlID0gbmV3ICQuanFwbG90LlRhYmxlTGVnZW5kUmVuZGVyZXIoKTsKICAgICQuanFwbG90LlBpZUxlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LlBpZUxlZ2VuZFJlbmRlcmVyOwogICAgCiAgICAvKioKICAgICAqIENsYXNzOiAkLmpxcGxvdC5QaWVMZWdlbmRSZW5kZXJlcgogICAgICogTGVnZW5kIFJlbmRlcmVyIHNwZWNpZmljIHRvIHBpZSBwbG90cy4gIFNldCBieSBkZWZhdWx0CiAgICAgKiB3aGVuIHVzZXIgY3JlYXRlcyBhIHBpZSBwbG90LgogICAgICovCiAgICAkLmpxcGxvdC5QaWVMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAvLyBHcm91cDogUHJvcGVydGllcwogICAgICAgIC8vCiAgICAgICAgLy8gcHJvcDogbnVtYmVyUm93cwogICAgICAgIC8vIE1heGltdW0gbnVtYmVyIG9mIHJvd3MgaW4gdGhlIGxlZ2VuZC4gIDAgb3IgbnVsbCBmb3IgdW5saW1pdGVkLgogICAgICAgIHRoaXMubnVtYmVyUm93cyA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogbnVtYmVyQ29sdW1ucwogICAgICAgIC8vIE1heGltdW0gbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGxlZ2VuZC4gIDAgb3IgbnVsbCBmb3IgdW5saW1pdGVkLgogICAgICAgIHRoaXMubnVtYmVyQ29sdW1ucyA9IG51bGw7CiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBjb250ZXh0IG9mIGxlZ2VuZAogICAgJC5qcXBsb3QuUGllTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgbGVnZW5kID0gdGhpczsKICAgICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAgICAgICAgIHZhciBzZXJpZXMgPSB0aGlzLl9zZXJpZXM7CgoKICAgICAgICAgICAgdGhpcy5fZWxlbSA9ICQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKSk7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uYWRkQ2xhc3MoJ2pxcGxvdC10YWJsZS1sZWdlbmQnKTsKCiAgICAgICAgICAgIHZhciBzcyA9IHtwb3NpdGlvbjonYWJzb2x1dGUnfTsKICAgICAgICAgICAgaWYgKHRoaXMuYmFja2dyb3VuZCkgewogICAgICAgICAgICAgICAgc3NbJ2JhY2tncm91bmQnXSA9IHRoaXMuYmFja2dyb3VuZDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodGhpcy5ib3JkZXIpIHsKICAgICAgICAgICAgICAgIHNzWydib3JkZXInXSA9IHRoaXMuYm9yZGVyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0aGlzLmZvbnRTaXplKSB7CiAgICAgICAgICAgICAgICBzc1snZm9udFNpemUnXSA9IHRoaXMuZm9udFNpemU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMuZm9udEZhbWlseSkgewogICAgICAgICAgICAgICAgc3NbJ2ZvbnRGYW1pbHknXSA9IHRoaXMuZm9udEZhbWlseTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodGhpcy50ZXh0Q29sb3IpIHsKICAgICAgICAgICAgICAgIHNzWyd0ZXh0Q29sb3InXSA9IHRoaXMudGV4dENvbG9yOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0aGlzLm1hcmdpblRvcCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBzc1snbWFyZ2luVG9wJ10gPSB0aGlzLm1hcmdpblRvcDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodGhpcy5tYXJnaW5Cb3R0b20gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgc3NbJ21hcmdpbkJvdHRvbSddID0gdGhpcy5tYXJnaW5Cb3R0b207CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMubWFyZ2luTGVmdCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBzc1snbWFyZ2luTGVmdCddID0gdGhpcy5tYXJnaW5MZWZ0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0aGlzLm1hcmdpblJpZ2h0ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHNzWydtYXJnaW5SaWdodCddID0gdGhpcy5tYXJnaW5SaWdodDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moc3MpOwoKICAgICAgICAgICAgLy8gUGllIGNoYXJ0cyBsZWdlbmRzIGRvbid0IGdvIGJ5IG51bWJlciBvZiBzZXJpZXMsIGJ1dCBieSBudW1iZXIgb2YgZGF0YSBwb2ludHMKICAgICAgICAgICAgLy8gaW4gdGhlIHNlcmllcy4gIFJlZmFjdG9yIHRoaW5ncyBoZXJlIGZvciB0aGF0LgogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIHBhZCA9IGZhbHNlLCAKICAgICAgICAgICAgICAgIHJldmVyc2UgPSBmYWxzZSwKICAgICAgICAgICAgICAgIG5yLCAKICAgICAgICAgICAgICAgIG5jOwogICAgICAgICAgICB2YXIgcyA9IHNlcmllc1swXTsKICAgICAgICAgICAgdmFyIGNvbG9yR2VuZXJhdG9yID0gbmV3ICQuanFwbG90LkNvbG9yR2VuZXJhdG9yKHMuc2VyaWVzQ29sb3JzKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChzLnNob3cpIHsKICAgICAgICAgICAgICAgIHZhciBwZCA9IHMuZGF0YTsKICAgICAgICAgICAgICAgIGlmICh0aGlzLm51bWJlclJvd3MpIHsKICAgICAgICAgICAgICAgICAgICBuciA9IHRoaXMubnVtYmVyUm93czsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMubnVtYmVyQ29sdW1ucyl7CiAgICAgICAgICAgICAgICAgICAgICAgIG5jID0gTWF0aC5jZWlsKHBkLmxlbmd0aC9ucik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgIG5jID0gdGhpcy5udW1iZXJDb2x1bW5zOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubnVtYmVyQ29sdW1ucykgewogICAgICAgICAgICAgICAgICAgIG5jID0gdGhpcy5udW1iZXJDb2x1bW5zOwogICAgICAgICAgICAgICAgICAgIG5yID0gTWF0aC5jZWlsKHBkLmxlbmd0aC90aGlzLm51bWJlckNvbHVtbnMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbnIgPSBwZC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgbmMgPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaSwgajsKICAgICAgICAgICAgICAgIHZhciB0ciwgdGQxLCB0ZDI7IAogICAgICAgICAgICAgICAgdmFyIGx0LCBycywgY29sb3I7CiAgICAgICAgICAgICAgICB2YXIgaWR4ID0gMDsgCiAgICAgICAgICAgICAgICB2YXIgZGl2MCwgZGl2MTsgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZm9yIChpPTA7IGk8bnI7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHRyID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpKTsKICAgICAgICAgICAgICAgICAgICB0ci5hZGRDbGFzcygnanFwbG90LXRhYmxlLWxlZ2VuZCcpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGlmIChyZXZlcnNlKXsKICAgICAgICAgICAgICAgICAgICAgICAgdHIucHJlcGVuZFRvKHRoaXMuX2VsZW0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICB0ci5hcHBlbmRUbyh0aGlzLl9lbGVtKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgZm9yIChqPTA7IGo8bmM7IGorKykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4IDwgcGQubGVuZ3RoKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx0ID0gdGhpcy5sYWJlbHNbaWR4XSB8fCBwZFtpZHhdWzBdLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IGNvbG9yR2VuZXJhdG9yLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmV2ZXJzZSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGk+MCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gbnIgLTEpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBycyA9IChwYWQpID8gdGhpcy5yb3dTcGFjaW5nIDogJzAnOwoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMS5hZGRDbGFzcygnanFwbG90LXRhYmxlLWxlZ2VuZCBqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxLmNzcyh7dGV4dEFsaWduOiAnY2VudGVyJywgcGFkZGluZ1RvcDogcnN9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXYwID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXYwLmFkZENsYXNzKCdqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaC1vdXRsaW5lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXYxID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXYxLmFkZENsYXNzKCdqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2MS5jc3Moe2JhY2tncm91bmRDb2xvcjogY29sb3IsIGJvcmRlckNvbG9yOiBjb2xvcn0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxLmFwcGVuZChkaXYwLmFwcGVuZChkaXYxKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQyID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5hZGRDbGFzcygnanFwbG90LXRhYmxlLWxlZ2VuZCBqcXBsb3QtdGFibGUtbGVnZW5kLWxhYmVsJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDIuY3NzKCdwYWRkaW5nVG9wJywgcnMpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVzY2FwZUh0bWwpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi50ZXh0KGx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5odG1sKGx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXZlcnNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQyLnByZXBlbmRUbyh0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxLnByZXBlbmRUbyh0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDEuYXBwZW5kVG8odHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5hcHBlbmRUbyh0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlkeCsrOwogICAgICAgICAgICAgICAgICAgIH0gICAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy5fZWxlbTsgICAgICAgICAgICAgICAgCiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5QaWVSZW5kZXJlci5wcm90b3R5cGUuaGFuZGxlTW92ZSA9IGZ1bmN0aW9uKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIGlmIChuZWlnaGJvcikgewogICAgICAgICAgICB2YXIgaW5zID0gW25laWdoYm9yLnNlcmllc0luZGV4LCBuZWlnaGJvci5wb2ludEluZGV4LCBuZWlnaGJvci5kYXRhXTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcignanFwbG90RGF0YU1vdXNlT3ZlcicsIGlucyk7CiAgICAgICAgICAgIGlmIChwbG90LnNlcmllc1tpbnNbMF1dLmhpZ2hsaWdodE1vdXNlT3ZlciAmJiAhKGluc1swXSA9PSBwbG90LnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCAmJiBpbnNbMV0gPT0gcGxvdC5zZXJpZXNbaW5zWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpIHsKICAgICAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoJ2pxcGxvdERhdGFIaWdobGlnaHQnLCBpbnMpOwogICAgICAgICAgICAgICAgaGlnaGxpZ2h0IChwbG90LCBpbnNbMF0sIGluc1sxXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAobmVpZ2hib3IgPT0gbnVsbCkgewogICAgICAgICAgICB1bmhpZ2hsaWdodCAocGxvdCk7CiAgICAgICAgfQogICAgfTsKICAgIAogICAgCiAgICAvLyB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJC5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzW2ldWzBdLCB7cGxvdDp0aGlzfSwgJC5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzW2ldWzFdKTsKICAgIAogICAgLy8gc2V0dXAgZGVmYXVsdCByZW5kZXJlcnMgZm9yIGF4ZXMgYW5kIGxlZ2VuZCBzbyB1c2VyIGRvZXNuJ3QgaGF2ZSB0bwogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgcGxvdAogICAgZnVuY3Rpb24gcHJlSW5pdCh0YXJnZXQsIGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgICAgICBvcHRpb25zLmF4ZXNEZWZhdWx0cyA9IG9wdGlvbnMuYXhlc0RlZmF1bHRzIHx8IHt9OwogICAgICAgIG9wdGlvbnMubGVnZW5kID0gb3B0aW9ucy5sZWdlbmQgfHwge307CiAgICAgICAgb3B0aW9ucy5zZXJpZXNEZWZhdWx0cyA9IG9wdGlvbnMuc2VyaWVzRGVmYXVsdHMgfHwge307CiAgICAgICAgLy8gb25seSBzZXQgdGhlc2UgaWYgdGhlcmUgaXMgYSBwaWUgc2VyaWVzCiAgICAgICAgdmFyIHNldG9wdHMgPSBmYWxzZTsKICAgICAgICBpZiAob3B0aW9ucy5zZXJpZXNEZWZhdWx0cy5yZW5kZXJlciA9PSAkLmpxcGxvdC5QaWVSZW5kZXJlcikgewogICAgICAgICAgICBzZXRvcHRzID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAob3B0aW9ucy5zZXJpZXMpIHsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpIDwgb3B0aW9ucy5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnNlcmllc1tpXS5yZW5kZXJlciA9PSAkLmpxcGxvdC5QaWVSZW5kZXJlcikgewogICAgICAgICAgICAgICAgICAgIHNldG9wdHMgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChzZXRvcHRzKSB7CiAgICAgICAgICAgIG9wdGlvbnMuYXhlc0RlZmF1bHRzLnJlbmRlcmVyID0gJC5qcXBsb3QuUGllQXhpc1JlbmRlcmVyOwogICAgICAgICAgICBvcHRpb25zLmxlZ2VuZC5yZW5kZXJlciA9ICQuanFwbG90LlBpZUxlZ2VuZFJlbmRlcmVyOwogICAgICAgICAgICBvcHRpb25zLmxlZ2VuZC5wcmVEcmF3ID0gdHJ1ZTsKICAgICAgICAgICAgb3B0aW9ucy5zZXJpZXNEZWZhdWx0cy5wb2ludExhYmVscyA9IHtzaG93OiBmYWxzZX07CiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBwb3N0SW5pdCh0YXJnZXQsIGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKHRoaXMuc2VyaWVzW2ldLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09ICQuanFwbG90LlBpZVJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAvLyBkb24ndCBhbGxvdyBtb3VzZW92ZXIgYW5kIG1vdXNlZG93biBhdCBzYW1lIHRpbWUuCiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZXJpZXNbaV0uaGlnaGxpZ2h0TW91c2VPdmVyKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNbaV0uaGlnaGxpZ2h0TW91c2VEb3duID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHBsb3QKICAgIGZ1bmN0aW9uIHBvc3RQYXJzZU9wdGlvbnMob3B0aW9ucykgewogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLnNlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB0aGlzLnNlcmllc1tpXS5zZXJpZXNDb2xvcnMgPSB0aGlzLnNlcmllc0NvbG9yczsKICAgICAgICAgICAgdGhpcy5zZXJpZXNbaV0uY29sb3JHZW5lcmF0b3IgPSAkLmpxcGxvdC5jb2xvckdlbmVyYXRvcjsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhpZ2hsaWdodCAocGxvdCwgc2lkeCwgcGlkeCkgewogICAgICAgIHZhciBzID0gcGxvdC5zZXJpZXNbc2lkeF07CiAgICAgICAgdmFyIGNhbnZhcyA9IHBsb3QucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7CiAgICAgICAgY2FudmFzLl9jdHguY2xlYXJSZWN0KDAsMCxjYW52YXMuX2N0eC5jYW52YXMud2lkdGgsIGNhbnZhcy5fY3R4LmNhbnZhcy5oZWlnaHQpOwogICAgICAgIHMuX2hpZ2hsaWdodGVkUG9pbnQgPSBwaWR4OwogICAgICAgIHBsb3QucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ID0gc2lkeDsKICAgICAgICBzLnJlbmRlcmVyLmRyYXdTbGljZS5jYWxsKHMsIGNhbnZhcy5fY3R4LCBzLl9zbGljZUFuZ2xlc1twaWR4XVswXSwgcy5fc2xpY2VBbmdsZXNbcGlkeF1bMV0sIHMuaGlnaGxpZ2h0Q29sb3JHZW5lcmF0b3IuZ2V0KHBpZHgpLCBmYWxzZSk7CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIHVuaGlnaGxpZ2h0IChwbG90KSB7CiAgICAgICAgdmFyIGNhbnZhcyA9IHBsb3QucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7CiAgICAgICAgY2FudmFzLl9jdHguY2xlYXJSZWN0KDAsMCwgY2FudmFzLl9jdHguY2FudmFzLndpZHRoLCBjYW52YXMuX2N0eC5jYW52YXMuaGVpZ2h0KTsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8cGxvdC5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgcGxvdC5zZXJpZXNbaV0uX2hpZ2hsaWdodGVkUG9pbnQgPSBudWxsOwogICAgICAgIH0KICAgICAgICBwbG90LnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCA9IG51bGw7CiAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcignanFwbG90RGF0YVVuaGlnaGxpZ2h0Jyk7CiAgICB9CiAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdmUoZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgaWYgKG5laWdoYm9yKSB7CiAgICAgICAgICAgIHZhciBpbnMgPSBbbmVpZ2hib3Iuc2VyaWVzSW5kZXgsIG5laWdoYm9yLnBvaW50SW5kZXgsIG5laWdoYm9yLmRhdGFdOwogICAgICAgICAgICB2YXIgZXZ0MSA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YU1vdXNlT3ZlcicpOwogICAgICAgICAgICBldnQxLnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgIGV2dDEucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQxLCBpbnMpOwogICAgICAgICAgICBpZiAocGxvdC5zZXJpZXNbaW5zWzBdXS5oaWdobGlnaHRNb3VzZU92ZXIgJiYgIShpbnNbMF0gPT0gcGxvdC5wbHVnaW5zLnBpZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXggJiYgaW5zWzFdID09IHBsb3Quc2VyaWVzW2luc1swXV0uX2hpZ2hsaWdodGVkUG9pbnQpKSB7CiAgICAgICAgICAgICAgICB2YXIgZXZ0ID0galF1ZXJ5LkV2ZW50KCdqcXBsb3REYXRhSGlnaGxpZ2h0Jyk7CiAgICAgICAgICAgICAgICBldnQud2hpY2ggPSBldi53aGljaDsKICAgICAgICAgICAgICAgIGV2dC5wYWdlWCA9IGV2LnBhZ2VYOwogICAgICAgICAgICAgICAgZXZ0LnBhZ2VZID0gZXYucGFnZVk7CiAgICAgICAgICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKGV2dCwgaW5zKTsKICAgICAgICAgICAgICAgIGhpZ2hsaWdodCAocGxvdCwgaW5zWzBdLCBpbnNbMV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG5laWdoYm9yID09IG51bGwpIHsKICAgICAgICAgICAgdW5oaWdobGlnaHQgKHBsb3QpOwogICAgICAgIH0KICAgIH0gCiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlRG93bihldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAobmVpZ2hib3IpIHsKICAgICAgICAgICAgdmFyIGlucyA9IFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IuZGF0YV07CiAgICAgICAgICAgIGlmIChwbG90LnNlcmllc1tpbnNbMF1dLmhpZ2hsaWdodE1vdXNlRG93biAmJiAhKGluc1swXSA9PSBwbG90LnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCAmJiBpbnNbMV0gPT0gcGxvdC5zZXJpZXNbaW5zWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpIHsKICAgICAgICAgICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ2pxcGxvdERhdGFIaWdobGlnaHQnKTsKICAgICAgICAgICAgICAgIGV2dC53aGljaCA9IGV2LndoaWNoOwogICAgICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoZXZ0LCBpbnMpOwogICAgICAgICAgICAgICAgaGlnaGxpZ2h0IChwbG90LCBpbnNbMF0sIGluc1sxXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAobmVpZ2hib3IgPT0gbnVsbCkgewogICAgICAgICAgICB1bmhpZ2hsaWdodCAocGxvdCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZVVwKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIHZhciBpZHggPSBwbG90LnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDsKICAgICAgICBpZiAoaWR4ICE9IG51bGwgJiYgcGxvdC5zZXJpZXNbaWR4XS5oaWdobGlnaHRNb3VzZURvd24pIHsKICAgICAgICAgICAgdW5oaWdobGlnaHQocGxvdCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAobmVpZ2hib3IpIHsKICAgICAgICAgICAgdmFyIGlucyA9IFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IuZGF0YV07CiAgICAgICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ2pxcGxvdERhdGFDbGljaycpOwogICAgICAgICAgICBldnQud2hpY2ggPSBldi53aGljaDsKICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKGV2dCwgaW5zKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZVJpZ2h0Q2xpY2soZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgaWYgKG5laWdoYm9yKSB7CiAgICAgICAgICAgIHZhciBpbnMgPSBbbmVpZ2hib3Iuc2VyaWVzSW5kZXgsIG5laWdoYm9yLnBvaW50SW5kZXgsIG5laWdoYm9yLmRhdGFdOwogICAgICAgICAgICB2YXIgaWR4ID0gcGxvdC5wbHVnaW5zLnBpZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg7CiAgICAgICAgICAgIGlmIChpZHggIT0gbnVsbCAmJiBwbG90LnNlcmllc1tpZHhdLmhpZ2hsaWdodE1vdXNlRG93bikgewogICAgICAgICAgICAgICAgdW5oaWdobGlnaHQocGxvdCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YVJpZ2h0Q2xpY2snKTsKICAgICAgICAgICAgZXZ0LndoaWNoID0gZXYud2hpY2g7CiAgICAgICAgICAgIGV2dC5wYWdlWCA9IGV2LnBhZ2VYOwogICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQsIGlucyk7CiAgICAgICAgfQogICAgfSAgICAKICAgIAogICAgLy8gY2FsbGVkIHdpdGhpbiBjb250ZXh0IG9mIHBsb3QKICAgIC8vIGNyZWF0ZSBhIGNhbnZhcyB3aGljaCB3ZSBjYW4gZHJhdyBvbi4KICAgIC8vIGluc2VydCBpdCBiZWZvcmUgdGhlIGV2ZW50Q2FudmFzLCBzbyBldmVudENhbnZhcyB3aWxsIHN0aWxsIGNhcHR1cmUgZXZlbnRzLgogICAgZnVuY3Rpb24gcG9zdFBsb3REcmF3KCkgewogICAgICAgIC8vIE1lbW9yeSBMZWFrcyBwYXRjaCAgICAKICAgICAgICBpZiAodGhpcy5wbHVnaW5zLnBpZVJlbmRlcmVyICYmIHRoaXMucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMpIHsKICAgICAgICAgICAgdGhpcy5wbHVnaW5zLnBpZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5yZXNldENhbnZhcygpOwogICAgICAgICAgICB0aGlzLnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIHRoaXMucGx1Z2lucy5waWVSZW5kZXJlciA9IHtoaWdobGlnaHRlZFNlcmllc0luZGV4Om51bGx9OwogICAgICAgIHRoaXMucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMgPSBuZXcgJC5qcXBsb3QuR2VuZXJpY0NhbnZhcygpOwogICAgICAgIAogICAgICAgIC8vIGRvIHdlIGhhdmUgYW55IGRhdGEgbGFiZWxzPyAgaWYgc28sIHB1dCBoaWdobGlnaHQgY2FudmFzIGJlZm9yZSB0aG9zZQogICAgICAgIHZhciBsYWJlbHMgPSAkKHRoaXMudGFyZ2V0SWQrJyAuanFwbG90LWRhdGEtbGFiZWwnKTsKICAgICAgICBpZiAobGFiZWxzLmxlbmd0aCkgewogICAgICAgICAgICAkKGxhYmVsc1swXSkuYmVmb3JlKHRoaXMucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywgJ2pxcGxvdC1waWVSZW5kZXJlci1oaWdobGlnaHQtY2FudmFzJywgdGhpcy5fcGxvdERpbWVuc2lvbnMsIHRoaXMpKTsKICAgICAgICB9CiAgICAgICAgLy8gZWxzZSBwdXQgaGlnaGxpZ2h0IGNhbnZhcyBiZWZvcmUgZXZlbnQgY2FudmFzLgogICAgICAgIGVsc2UgewogICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZSh0aGlzLnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsICdqcXBsb3QtcGllUmVuZGVyZXItaGlnaGxpZ2h0LWNhbnZhcycsIHRoaXMuX3Bsb3REaW1lbnNpb25zLCB0aGlzKSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHZhciBoY3R4ID0gdGhpcy5wbHVnaW5zLnBpZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5zZXRDb250ZXh0KCk7CiAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCdtb3VzZWxlYXZlJywge3Bsb3Q6dGhpc30sIGZ1bmN0aW9uIChldikgeyB1bmhpZ2hsaWdodChldi5kYXRhLnBsb3QpOyB9KTsKICAgIH0KICAgIAogICAgJC5qcXBsb3QucHJlSW5pdEhvb2tzLnB1c2gocHJlSW5pdCk7CiAgICAKICAgICQuanFwbG90LlBpZVRpY2tSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkF4aXNUaWNrUmVuZGVyZXIuY2FsbCh0aGlzKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LlBpZVRpY2tSZW5kZXJlci5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlcigpOwogICAgJC5qcXBsb3QuUGllVGlja1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LlBpZVRpY2tSZW5kZXJlcjsKICAgIAp9KShqUXVlcnkpOwogICAgCiAgICA=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.pieRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGUpe2UuanFwbG90LlBpZVJlbmRlcmVyPWZ1bmN0aW9uKCl7ZS5qcXBsb3QuTGluZVJlbmRlcmVyLmNhbGwodGhpcyl9O2UuanFwbG90LlBpZVJlbmRlcmVyLnByb3RvdHlwZT1uZXcgZS5qcXBsb3QuTGluZVJlbmRlcmVyKCk7ZS5qcXBsb3QuUGllUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUuanFwbG90LlBpZVJlbmRlcmVyO2UuanFwbG90LlBpZVJlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKHEsdSl7dGhpcy5kaWFtZXRlcj1udWxsO3RoaXMucGFkZGluZz0yMDt0aGlzLnNsaWNlTWFyZ2luPTA7dGhpcy5maWxsPXRydWU7dGhpcy5zaGFkb3dPZmZzZXQ9Mjt0aGlzLnNoYWRvd0FscGhhPTAuMDc7dGhpcy5zaGFkb3dEZXB0aD01O3RoaXMuaGlnaGxpZ2h0TW91c2VPdmVyPXRydWU7dGhpcy5oaWdobGlnaHRNb3VzZURvd249ZmFsc2U7dGhpcy5oaWdobGlnaHRDb2xvcnM9W107dGhpcy5kYXRhTGFiZWxzPSJwZXJjZW50Ijt0aGlzLnNob3dEYXRhTGFiZWxzPWZhbHNlO3RoaXMuZGF0YUxhYmVsRm9ybWF0U3RyaW5nPW51bGw7dGhpcy5kYXRhTGFiZWxUaHJlc2hvbGQ9Mzt0aGlzLmRhdGFMYWJlbFBvc2l0aW9uRmFjdG9yPTAuNTI7dGhpcy5kYXRhTGFiZWxOdWRnZT0yO3RoaXMuZGF0YUxhYmVsQ2VudGVyT249dHJ1ZTt0aGlzLnN0YXJ0QW5nbGU9MDt0aGlzLnRpY2tSZW5kZXJlcj1lLmpxcGxvdC5QaWVUaWNrUmVuZGVyZXI7dGhpcy5fZHJhd0RhdGE9dHJ1ZTt0aGlzLl90eXBlPSJwaWUiO2lmKHEuaGlnaGxpZ2h0TW91c2VEb3duJiZxLmhpZ2hsaWdodE1vdXNlT3Zlcj09bnVsbCl7cS5oaWdobGlnaHRNb3VzZU92ZXI9ZmFsc2V9ZS5leHRlbmQodHJ1ZSx0aGlzLHEpO2lmKHRoaXMuc2xpY2VNYXJnaW48MCl7dGhpcy5zbGljZU1hcmdpbj0wfXRoaXMuX2RpYW1ldGVyPW51bGw7dGhpcy5fcmFkaXVzPW51bGw7dGhpcy5fc2xpY2VBbmdsZXM9W107dGhpcy5faGlnaGxpZ2h0ZWRQb2ludD1udWxsO2lmKHRoaXMuaGlnaGxpZ2h0Q29sb3JzLmxlbmd0aD09MCl7Zm9yKHZhciBzPTA7czx0aGlzLnNlcmllc0NvbG9ycy5sZW5ndGg7cysrKXt2YXIgcj1lLmpxcGxvdC5nZXRDb2xvckNvbXBvbmVudHModGhpcy5zZXJpZXNDb2xvcnNbc10pO3ZhciBvPVtyWzBdLHJbMV0sclsyXV07dmFyIHQ9b1swXStvWzFdK29bMl07Zm9yKHZhciBwPTA7cDwzO3ArKyl7b1twXT0odD41NzApP29bcF0qMC44Om9bcF0rMC4zKigyNTUtb1twXSk7b1twXT1wYXJzZUludChvW3BdLDEwKX10aGlzLmhpZ2hsaWdodENvbG9ycy5wdXNoKCJyZ2IoIitvWzBdKyIsIitvWzFdKyIsIitvWzJdKyIpIil9fXRoaXMuaGlnaGxpZ2h0Q29sb3JHZW5lcmF0b3I9bmV3IGUuanFwbG90LkNvbG9yR2VuZXJhdG9yKHRoaXMuaGlnaGxpZ2h0Q29sb3JzKTt1LnBvc3RQYXJzZU9wdGlvbnNIb29rcy5hZGRPbmNlKG0pO3UucG9zdEluaXRIb29rcy5hZGRPbmNlKGcpO3UuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdE1vdXNlTW92ZSIsYik7dS5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90TW91c2VEb3duIixhKTt1LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RNb3VzZVVwIixsKTt1LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RDbGljayIsZik7dS5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90UmlnaHRDbGljayIsbik7dS5wb3N0RHJhd0hvb2tzLmFkZE9uY2UoaSl9O2UuanFwbG90LlBpZVJlbmRlcmVyLnByb3RvdHlwZS5zZXRHcmlkRGF0YT1mdW5jdGlvbih0KXt2YXIgcD1bXTt2YXIgdT1bXTt2YXIgbz10aGlzLnN0YXJ0QW5nbGUvMTgwKk1hdGguUEk7dmFyIHM9MDt0aGlzLl9kcmF3RGF0YT1mYWxzZTtmb3IodmFyIHI9MDtyPHRoaXMuZGF0YS5sZW5ndGg7cisrKXtpZih0aGlzLmRhdGFbcl1bMV0hPTApe3RoaXMuX2RyYXdEYXRhPXRydWV9cC5wdXNoKHRoaXMuZGF0YVtyXVsxXSk7dS5wdXNoKFt0aGlzLmRhdGFbcl1bMF1dKTtpZihyPjApe3Bbcl0rPXBbci0xXX1zKz10aGlzLmRhdGFbcl1bMV19dmFyIHE9TWF0aC5QSSoyL3BbcC5sZW5ndGgtMV07Zm9yKHZhciByPTA7cjxwLmxlbmd0aDtyKyspe3Vbcl1bMV09cFtyXSpxO3Vbcl1bMl09dGhpcy5kYXRhW3JdWzFdL3N9dGhpcy5ncmlkRGF0YT11fTtlLmpxcGxvdC5QaWVSZW5kZXJlci5wcm90b3R5cGUubWFrZUdyaWREYXRhPWZ1bmN0aW9uKHQsdSl7dmFyIHA9W107dmFyIHY9W107dmFyIHM9MDt2YXIgbz10aGlzLnN0YXJ0QW5nbGUvMTgwKk1hdGguUEk7dGhpcy5fZHJhd0RhdGE9ZmFsc2U7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe2lmKHRoaXMuZGF0YVtyXVsxXSE9MCl7dGhpcy5fZHJhd0RhdGE9dHJ1ZX1wLnB1c2godFtyXVsxXSk7di5wdXNoKFt0W3JdWzBdXSk7aWYocj4wKXtwW3JdKz1wW3ItMV19cys9dFtyXVsxXX12YXIgcT1NYXRoLlBJKjIvcFtwLmxlbmd0aC0xXTtmb3IodmFyIHI9MDtyPHAubGVuZ3RoO3IrKyl7dltyXVsxXT1wW3JdKnE7dltyXVsyXT10W3JdWzFdL3N9cmV0dXJuIHZ9O2Z1bmN0aW9uIGgobyl7cmV0dXJuIE1hdGguc2luKChvLShvLU1hdGguUEkpLzgvTWF0aC5QSSkvMil9ZnVuY3Rpb24gaih1LHQsbyx2LHIpe3ZhciB3PTA7dmFyIHE9dC11O3ZhciBzPU1hdGguYWJzKHEpO3ZhciBwPW87aWYodj09ZmFsc2Upe3ArPXJ9aWYocD4wJiZzPjAuMDEmJnM8Ni4yODIpe3c9cGFyc2VGbG9hdChwKS8yL2gocSl9cmV0dXJuIHd9ZS5qcXBsb3QuUGllUmVuZGVyZXIucHJvdG90eXBlLmRyYXdTbGljZT1mdW5jdGlvbihCLHoseSx1LHcpe2lmKHRoaXMuX2RyYXdEYXRhKXt2YXIgcD10aGlzLl9yYWRpdXM7dmFyIEE9dGhpcy5maWxsO3ZhciB4PXRoaXMubGluZVdpZHRoO3ZhciBzPXRoaXMuc2xpY2VNYXJnaW47aWYodGhpcy5maWxsPT1mYWxzZSl7cys9dGhpcy5saW5lV2lkdGh9Qi5zYXZlKCk7Qi50cmFuc2xhdGUodGhpcy5fY2VudGVyWzBdLHRoaXMuX2NlbnRlclsxXSk7dmFyIEQ9aih6LHksdGhpcy5zbGljZU1hcmdpbix0aGlzLmZpbGwsdGhpcy5saW5lV2lkdGgpO3ZhciBvPUQqTWF0aC5jb3MoKHoreSkvMik7dmFyIEM9RCpNYXRoLnNpbigoeit5KS8yKTtpZigoeS16KTw9TWF0aC5QSSl7cC09RH1lbHNle3ArPUR9Qi50cmFuc2xhdGUobyxDKTtpZih3KXtmb3IodmFyIHY9MCx0PXRoaXMuc2hhZG93RGVwdGg7djx0O3YrKyl7Qi5zYXZlKCk7Qi50cmFuc2xhdGUodGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5jb3ModGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSksdGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5zaW4odGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSkpO3EocCl9Zm9yKHZhciB2PTAsdD10aGlzLnNoYWRvd0RlcHRoO3Y8dDt2Kyspe0IucmVzdG9yZSgpfX1lbHNle3EocCl9Qi5yZXN0b3JlKCl9ZnVuY3Rpb24gcShyKXtpZih5PjYuMjgyK3RoaXMuc3RhcnRBbmdsZSl7eT02LjI4Mit0aGlzLnN0YXJ0QW5nbGU7aWYoej55KXt6PTYuMjgxK3RoaXMuc3RhcnRBbmdsZX19aWYoej49eSl7cmV0dXJufUIuYmVnaW5QYXRoKCk7Qi5maWxsU3R5bGU9dTtCLnN0cm9rZVN0eWxlPXU7Qi5saW5lV2lkdGg9eDtCLmFyYygwLDAscix6LHksZmFsc2UpO0IubGluZVRvKDAsMCk7Qi5jbG9zZVBhdGgoKTtpZihBKXtCLmZpbGwoKX1lbHNle0Iuc3Ryb2tlKCl9fX07ZS5qcXBsb3QuUGllUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oQix6LEUsbyl7dmFyIFc7dmFyIEg9KEUhPXVuZGVmaW5lZCk/RTp7fTt2YXIgdD0wO3ZhciBzPTA7dmFyIE49MTt2YXIgTD1uZXcgZS5qcXBsb3QuQ29sb3JHZW5lcmF0b3IodGhpcy5zZXJpZXNDb2xvcnMpO2lmKEUubGVnZW5kSW5mbyYmRS5sZWdlbmRJbmZvLnBsYWNlbWVudD09Imluc2lkZUdyaWQiKXt2YXIgSj1FLmxlZ2VuZEluZm87c3dpdGNoKEoubG9jYXRpb24pe2Nhc2UibnciOnQ9Si53aWR0aCtKLnhvZmZzZXQ7YnJlYWs7Y2FzZSJ3Ijp0PUoud2lkdGgrSi54b2Zmc2V0O2JyZWFrO2Nhc2Uic3ciOnQ9Si53aWR0aCtKLnhvZmZzZXQ7YnJlYWs7Y2FzZSJuZSI6dD1KLndpZHRoK0oueG9mZnNldDtOPS0xO2JyZWFrO2Nhc2UiZSI6dD1KLndpZHRoK0oueG9mZnNldDtOPS0xO2JyZWFrO2Nhc2Uic2UiOnQ9Si53aWR0aCtKLnhvZmZzZXQ7Tj0tMTticmVhaztjYXNlIm4iOnM9Si5oZWlnaHQrSi55b2Zmc2V0O2JyZWFrO2Nhc2UicyI6cz1KLmhlaWdodCtKLnlvZmZzZXQ7Tj0tMTticmVhaztkZWZhdWx0OmJyZWFrfX12YXIgSz0oSC5zaGFkb3chPXVuZGVmaW5lZCk/SC5zaGFkb3c6dGhpcy5zaGFkb3c7dmFyIEE9KEguZmlsbCE9dW5kZWZpbmVkKT9ILmZpbGw6dGhpcy5maWxsO3ZhciBDPUIuY2FudmFzLndpZHRoO3ZhciBJPUIuY2FudmFzLmhlaWdodDt2YXIgUT1DLXQtMip0aGlzLnBhZGRpbmc7dmFyIFg9SS1zLTIqdGhpcy5wYWRkaW5nO3ZhciBNPU1hdGgubWluKFEsWCk7dmFyIFk9TTt0aGlzLl9zbGljZUFuZ2xlcz1bXTt2YXIgdj10aGlzLnNsaWNlTWFyZ2luO2lmKHRoaXMuZmlsbD09ZmFsc2Upe3YrPXRoaXMubGluZVdpZHRofXZhciBxO3ZhciBHPTA7dmFyIFIsYWEsWixhYjt2YXIgRD10aGlzLnN0YXJ0QW5nbGUvMTgwKk1hdGguUEk7Zm9yKHZhciBXPTAsVj16Lmxlbmd0aDtXPFY7VysrKXthYT0oVz09MCk/RDp6W1ctMV1bMV0rRDtaPXpbV11bMV0rRDt0aGlzLl9zbGljZUFuZ2xlcy5wdXNoKFthYSxaXSk7cT1qKGFhLFosdGhpcy5zbGljZU1hcmdpbix0aGlzLmZpbGwsdGhpcy5saW5lV2lkdGgpO2lmKE1hdGguYWJzKFotYWEpPk1hdGguUEkpe0c9TWF0aC5tYXgocSxHKX19aWYodGhpcy5kaWFtZXRlciE9bnVsbCYmdGhpcy5kaWFtZXRlcj4wKXt0aGlzLl9kaWFtZXRlcj10aGlzLmRpYW1ldGVyLTIqR31lbHNle3RoaXMuX2RpYW1ldGVyPVktMipHfWlmKHRoaXMuX2RpYW1ldGVyPDYpe2UuanFwbG90LmxvZygiRGlhbWV0ZXIgb2YgcGllIHRvbyBzbWFsbCwgbm90IHJlbmRlcmluZy4iKTtyZXR1cm59dmFyIFM9dGhpcy5fcmFkaXVzPXRoaXMuX2RpYW1ldGVyLzI7dGhpcy5fY2VudGVyPVsoQy1OKnQpLzIrTip0K0cqTWF0aC5jb3MoRCksKEktTipzKS8yK04qcytHKk1hdGguc2luKEQpXTtpZih0aGlzLnNoYWRvdyl7Zm9yKHZhciBXPTAsVj16Lmxlbmd0aDtXPFY7VysrKXthYj0icmdiYSgwLDAsMCwiK3RoaXMuc2hhZG93QWxwaGErIikiO3RoaXMucmVuZGVyZXIuZHJhd1NsaWNlLmNhbGwodGhpcyxCLHRoaXMuX3NsaWNlQW5nbGVzW1ddWzBdLHRoaXMuX3NsaWNlQW5nbGVzW1ddWzFdLGFiLHRydWUpfX1mb3IodmFyIFc9MDtXPHoubGVuZ3RoO1crKyl7dGhpcy5yZW5kZXJlci5kcmF3U2xpY2UuY2FsbCh0aGlzLEIsdGhpcy5fc2xpY2VBbmdsZXNbV11bMF0sdGhpcy5fc2xpY2VBbmdsZXNbV11bMV0sTC5uZXh0KCksZmFsc2UpO2lmKHRoaXMuc2hvd0RhdGFMYWJlbHMmJnpbV11bMl0qMTAwPj10aGlzLmRhdGFMYWJlbFRocmVzaG9sZCl7dmFyIEYsVT0odGhpcy5fc2xpY2VBbmdsZXNbV11bMF0rdGhpcy5fc2xpY2VBbmdsZXNbV11bMV0pLzIsVDtpZih0aGlzLmRhdGFMYWJlbHM9PSJsYWJlbCIpe0Y9dGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmd8fCIlcyI7VD1lLmpxcGxvdC5zcHJpbnRmKEYseltXXVswXSl9ZWxzZXtpZih0aGlzLmRhdGFMYWJlbHM9PSJ2YWx1ZSIpe0Y9dGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmd8fCIlZCI7VD1lLmpxcGxvdC5zcHJpbnRmKEYsdGhpcy5kYXRhW1ddWzFdKX1lbHNle2lmKHRoaXMuZGF0YUxhYmVscz09InBlcmNlbnQiKXtGPXRoaXMuZGF0YUxhYmVsRm9ybWF0U3RyaW5nfHwiJWQlJSI7VD1lLmpxcGxvdC5zcHJpbnRmKEYseltXXVsyXSoxMDApfWVsc2V7aWYodGhpcy5kYXRhTGFiZWxzLmNvbnN0cnVjdG9yPT1BcnJheSl7Rj10aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZ3x8IiVzIjtUPWUuanFwbG90LnNwcmludGYoRix0aGlzLmRhdGFMYWJlbHNbV10pfX19fXZhciBwPSh0aGlzLl9yYWRpdXMpKnRoaXMuZGF0YUxhYmVsUG9zaXRpb25GYWN0b3IrdGhpcy5zbGljZU1hcmdpbit0aGlzLmRhdGFMYWJlbE51ZGdlO3ZhciBQPXRoaXMuX2NlbnRlclswXStNYXRoLmNvcyhVKSpwK3RoaXMuY2FudmFzLl9vZmZzZXRzLmxlZnQ7dmFyIE89dGhpcy5fY2VudGVyWzFdK01hdGguc2luKFUpKnArdGhpcy5jYW52YXMuX29mZnNldHMudG9wO3ZhciB1PWUoJzxkaXYgY2xhc3M9ImpxcGxvdC1waWUtc2VyaWVzIGpxcGxvdC1kYXRhLWxhYmVsIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7Ij4nK1QrIjwvZGl2PiIpLmluc2VydEJlZm9yZShvLmV2ZW50Q2FudmFzLl9lbGVtKTtpZih0aGlzLmRhdGFMYWJlbENlbnRlck9uKXtQLT11LndpZHRoKCkvMjtPLT11LmhlaWdodCgpLzJ9ZWxzZXtQLT11LndpZHRoKCkqTWF0aC5zaW4oVS8yKTtPLT11LmhlaWdodCgpLzJ9UD1NYXRoLnJvdW5kKFApO089TWF0aC5yb3VuZChPKTt1LmNzcyh7bGVmdDpQLHRvcDpPfSl9fX07ZS5qcXBsb3QuUGllQXhpc1JlbmRlcmVyPWZ1bmN0aW9uKCl7ZS5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyLmNhbGwodGhpcyl9O2UuanFwbG90LlBpZUF4aXNSZW5kZXJlci5wcm90b3R5cGU9bmV3IGUuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlcigpO2UuanFwbG90LlBpZUF4aXNSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9ZS5qcXBsb3QuUGllQXhpc1JlbmRlcmVyO2UuanFwbG90LlBpZUF4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihvKXt0aGlzLnRpY2tSZW5kZXJlcj1lLmpxcGxvdC5QaWVUaWNrUmVuZGVyZXI7ZS5leHRlbmQodHJ1ZSx0aGlzLG8pO3RoaXMuX2RhdGFCb3VuZHM9e21pbjowLG1heDoxMDB9O3RoaXMubWluPTA7dGhpcy5tYXg9MTAwO3RoaXMuc2hvd1RpY2tzPWZhbHNlO3RoaXMudGlja3M9W107dGhpcy5zaG93TWFyaz1mYWxzZTt0aGlzLnNob3c9ZmFsc2V9O2UuanFwbG90LlBpZUxlZ2VuZFJlbmRlcmVyPWZ1bmN0aW9uKCl7ZS5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlci5jYWxsKHRoaXMpfTtlLmpxcGxvdC5QaWVMZWdlbmRSZW5kZXJlci5wcm90b3R5cGU9bmV3IGUuanFwbG90LlRhYmxlTGVnZW5kUmVuZGVyZXIoKTtlLmpxcGxvdC5QaWVMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9ZS5qcXBsb3QuUGllTGVnZW5kUmVuZGVyZXI7ZS5qcXBsb3QuUGllTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24obyl7dGhpcy5udW1iZXJSb3dzPW51bGw7dGhpcy5udW1iZXJDb2x1bW5zPW51bGw7ZS5leHRlbmQodHJ1ZSx0aGlzLG8pfTtlLmpxcGxvdC5QaWVMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbigpe3ZhciByPXRoaXM7aWYodGhpcy5zaG93KXt2YXIgQj10aGlzLl9zZXJpZXM7dGhpcy5fZWxlbT1lKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxlIikpO3RoaXMuX2VsZW0uYWRkQ2xhc3MoImpxcGxvdC10YWJsZS1sZWdlbmQiKTt2YXIgRT17cG9zaXRpb246ImFic29sdXRlIn07aWYodGhpcy5iYWNrZ3JvdW5kKXtFLmJhY2tncm91bmQ9dGhpcy5iYWNrZ3JvdW5kfWlmKHRoaXMuYm9yZGVyKXtFLmJvcmRlcj10aGlzLmJvcmRlcn1pZih0aGlzLmZvbnRTaXplKXtFLmZvbnRTaXplPXRoaXMuZm9udFNpemV9aWYodGhpcy5mb250RmFtaWx5KXtFLmZvbnRGYW1pbHk9dGhpcy5mb250RmFtaWx5fWlmKHRoaXMudGV4dENvbG9yKXtFLnRleHRDb2xvcj10aGlzLnRleHRDb2xvcn1pZih0aGlzLm1hcmdpblRvcCE9bnVsbCl7RS5tYXJnaW5Ub3A9dGhpcy5tYXJnaW5Ub3B9aWYodGhpcy5tYXJnaW5Cb3R0b20hPW51bGwpe0UubWFyZ2luQm90dG9tPXRoaXMubWFyZ2luQm90dG9tfWlmKHRoaXMubWFyZ2luTGVmdCE9bnVsbCl7RS5tYXJnaW5MZWZ0PXRoaXMubWFyZ2luTGVmdH1pZih0aGlzLm1hcmdpblJpZ2h0IT1udWxsKXtFLm1hcmdpblJpZ2h0PXRoaXMubWFyZ2luUmlnaHR9dGhpcy5fZWxlbS5jc3MoRSk7dmFyIEk9ZmFsc2UsQT1mYWxzZSxvLHk7dmFyIEM9QlswXTt2YXIgcD1uZXcgZS5qcXBsb3QuQ29sb3JHZW5lcmF0b3IoQy5zZXJpZXNDb2xvcnMpO2lmKEMuc2hvdyl7dmFyIEo9Qy5kYXRhO2lmKHRoaXMubnVtYmVyUm93cyl7bz10aGlzLm51bWJlclJvd3M7aWYoIXRoaXMubnVtYmVyQ29sdW1ucyl7eT1NYXRoLmNlaWwoSi5sZW5ndGgvbyl9ZWxzZXt5PXRoaXMubnVtYmVyQ29sdW1uc319ZWxzZXtpZih0aGlzLm51bWJlckNvbHVtbnMpe3k9dGhpcy5udW1iZXJDb2x1bW5zO289TWF0aC5jZWlsKEoubGVuZ3RoL3RoaXMubnVtYmVyQ29sdW1ucyl9ZWxzZXtvPUoubGVuZ3RoO3k9MX19dmFyIEgsRzt2YXIgcSx3LHY7dmFyIHgseixGO3ZhciBEPTA7dmFyIHUsdDtmb3IoSD0wO0g8bztIKyspe3E9ZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpKTtxLmFkZENsYXNzKCJqcXBsb3QtdGFibGUtbGVnZW5kIik7aWYoQSl7cS5wcmVwZW5kVG8odGhpcy5fZWxlbSl9ZWxzZXtxLmFwcGVuZFRvKHRoaXMuX2VsZW0pfWZvcihHPTA7Rzx5O0crKyl7aWYoRDxKLmxlbmd0aCl7eD10aGlzLmxhYmVsc1tEXXx8SltEXVswXS50b1N0cmluZygpO0Y9cC5uZXh0KCk7aWYoIUEpe2lmKEg+MCl7ST10cnVlfWVsc2V7ST1mYWxzZX19ZWxzZXtpZihIPT1vLTEpe0k9ZmFsc2V9ZWxzZXtJPXRydWV9fXo9KEkpP3RoaXMucm93U3BhY2luZzoiMCI7dz1lKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIikpO3cuYWRkQ2xhc3MoImpxcGxvdC10YWJsZS1sZWdlbmQganFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2giKTt3LmNzcyh7dGV4dEFsaWduOiJjZW50ZXIiLHBhZGRpbmdUb3A6en0pO3U9ZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7dS5hZGRDbGFzcygianFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2gtb3V0bGluZSIpO3Q9ZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7dC5hZGRDbGFzcygianFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2giKTt0LmNzcyh7YmFja2dyb3VuZENvbG9yOkYsYm9yZGVyQ29sb3I6Rn0pO3cuYXBwZW5kKHUuYXBwZW5kKHQpKTt2PWUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKSk7di5hZGRDbGFzcygianFwbG90LXRhYmxlLWxlZ2VuZCBqcXBsb3QtdGFibGUtbGVnZW5kLWxhYmVsIik7di5jc3MoInBhZGRpbmdUb3AiLHopO2lmKHRoaXMuZXNjYXBlSHRtbCl7di50ZXh0KHgpfWVsc2V7di5odG1sKHgpfWlmKEEpe3YucHJlcGVuZFRvKHEpO3cucHJlcGVuZFRvKHEpfWVsc2V7dy5hcHBlbmRUbyhxKTt2LmFwcGVuZFRvKHEpfUk9dHJ1ZX1EKyt9fX19cmV0dXJuIHRoaXMuX2VsZW19O2UuanFwbG90LlBpZVJlbmRlcmVyLnByb3RvdHlwZS5oYW5kbGVNb3ZlPWZ1bmN0aW9uKHEscCx0LHMscil7aWYocyl7dmFyIG89W3Muc2VyaWVzSW5kZXgscy5wb2ludEluZGV4LHMuZGF0YV07ci50YXJnZXQudHJpZ2dlcigianFwbG90RGF0YU1vdXNlT3ZlciIsbyk7aWYoci5zZXJpZXNbb1swXV0uaGlnaGxpZ2h0TW91c2VPdmVyJiYhKG9bMF09PXIucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4JiZvWzFdPT1yLnNlcmllc1tvWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpe3IudGFyZ2V0LnRyaWdnZXIoImpxcGxvdERhdGFIaWdobGlnaHQiLG8pO2QocixvWzBdLG9bMV0pfX1lbHNle2lmKHM9PW51bGwpe2socil9fX07ZnVuY3Rpb24gYyhzLHIscCl7cD1wfHx7fTtwLmF4ZXNEZWZhdWx0cz1wLmF4ZXNEZWZhdWx0c3x8e307cC5sZWdlbmQ9cC5sZWdlbmR8fHt9O3Auc2VyaWVzRGVmYXVsdHM9cC5zZXJpZXNEZWZhdWx0c3x8e307dmFyIG89ZmFsc2U7aWYocC5zZXJpZXNEZWZhdWx0cy5yZW5kZXJlcj09ZS5qcXBsb3QuUGllUmVuZGVyZXIpe289dHJ1ZX1lbHNle2lmKHAuc2VyaWVzKXtmb3IodmFyIHE9MDtxPHAuc2VyaWVzLmxlbmd0aDtxKyspe2lmKHAuc2VyaWVzW3FdLnJlbmRlcmVyPT1lLmpxcGxvdC5QaWVSZW5kZXJlcil7bz10cnVlfX19fWlmKG8pe3AuYXhlc0RlZmF1bHRzLnJlbmRlcmVyPWUuanFwbG90LlBpZUF4aXNSZW5kZXJlcjtwLmxlZ2VuZC5yZW5kZXJlcj1lLmpxcGxvdC5QaWVMZWdlbmRSZW5kZXJlcjtwLmxlZ2VuZC5wcmVEcmF3PXRydWU7cC5zZXJpZXNEZWZhdWx0cy5wb2ludExhYmVscz17c2hvdzpmYWxzZX19fWZ1bmN0aW9uIGcocixxLG8pe2Zvcih2YXIgcD0wO3A8dGhpcy5zZXJpZXMubGVuZ3RoO3ArKyl7aWYodGhpcy5zZXJpZXNbcF0ucmVuZGVyZXIuY29uc3RydWN0b3I9PWUuanFwbG90LlBpZVJlbmRlcmVyKXtpZih0aGlzLnNlcmllc1twXS5oaWdobGlnaHRNb3VzZU92ZXIpe3RoaXMuc2VyaWVzW3BdLmhpZ2hsaWdodE1vdXNlRG93bj1mYWxzZX19fX1mdW5jdGlvbiBtKG8pe2Zvcih2YXIgcD0wO3A8dGhpcy5zZXJpZXMubGVuZ3RoO3ArKyl7dGhpcy5zZXJpZXNbcF0uc2VyaWVzQ29sb3JzPXRoaXMuc2VyaWVzQ29sb3JzO3RoaXMuc2VyaWVzW3BdLmNvbG9yR2VuZXJhdG9yPWUuanFwbG90LmNvbG9yR2VuZXJhdG9yfX1mdW5jdGlvbiBkKHQscixxKXt2YXIgcD10LnNlcmllc1tyXTt2YXIgbz10LnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzO28uX2N0eC5jbGVhclJlY3QoMCwwLG8uX2N0eC5jYW52YXMud2lkdGgsby5fY3R4LmNhbnZhcy5oZWlnaHQpO3AuX2hpZ2hsaWdodGVkUG9pbnQ9cTt0LnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleD1yO3AucmVuZGVyZXIuZHJhd1NsaWNlLmNhbGwocCxvLl9jdHgscC5fc2xpY2VBbmdsZXNbcV1bMF0scC5fc2xpY2VBbmdsZXNbcV1bMV0scC5oaWdobGlnaHRDb2xvckdlbmVyYXRvci5nZXQocSksZmFsc2UpfWZ1bmN0aW9uIGsocSl7dmFyIG89cS5wbHVnaW5zLnBpZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcztvLl9jdHguY2xlYXJSZWN0KDAsMCxvLl9jdHguY2FudmFzLndpZHRoLG8uX2N0eC5jYW52YXMuaGVpZ2h0KTtmb3IodmFyIHA9MDtwPHEuc2VyaWVzLmxlbmd0aDtwKyspe3Euc2VyaWVzW3BdLl9oaWdobGlnaHRlZFBvaW50PW51bGx9cS5wbHVnaW5zLnBpZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg9bnVsbDtxLnRhcmdldC50cmlnZ2VyKCJqcXBsb3REYXRhVW5oaWdobGlnaHQiKX1mdW5jdGlvbiBiKHMscix2LHUsdCl7aWYodSl7dmFyIHE9W3Uuc2VyaWVzSW5kZXgsdS5wb2ludEluZGV4LHUuZGF0YV07dmFyIHA9alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhTW91c2VPdmVyIik7cC5wYWdlWD1zLnBhZ2VYO3AucGFnZVk9cy5wYWdlWTt0LnRhcmdldC50cmlnZ2VyKHAscSk7aWYodC5zZXJpZXNbcVswXV0uaGlnaGxpZ2h0TW91c2VPdmVyJiYhKHFbMF09PXQucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4JiZxWzFdPT10LnNlcmllc1txWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpe3ZhciBvPWpRdWVyeS5FdmVudCgianFwbG90RGF0YUhpZ2hsaWdodCIpO28ud2hpY2g9cy53aGljaDtvLnBhZ2VYPXMucGFnZVg7by5wYWdlWT1zLnBhZ2VZO3QudGFyZ2V0LnRyaWdnZXIobyxxKTtkKHQscVswXSxxWzFdKX19ZWxzZXtpZih1PT1udWxsKXtrKHQpfX19ZnVuY3Rpb24gYShyLHEsdSx0LHMpe2lmKHQpe3ZhciBwPVt0LnNlcmllc0luZGV4LHQucG9pbnRJbmRleCx0LmRhdGFdO2lmKHMuc2VyaWVzW3BbMF1dLmhpZ2hsaWdodE1vdXNlRG93biYmIShwWzBdPT1zLnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCYmcFsxXT09cy5zZXJpZXNbcFswXV0uX2hpZ2hsaWdodGVkUG9pbnQpKXt2YXIgbz1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFIaWdobGlnaHQiKTtvLndoaWNoPXIud2hpY2g7by5wYWdlWD1yLnBhZ2VYO28ucGFnZVk9ci5wYWdlWTtzLnRhcmdldC50cmlnZ2VyKG8scCk7ZChzLHBbMF0scFsxXSl9fWVsc2V7aWYodD09bnVsbCl7ayhzKX19fWZ1bmN0aW9uIGwocSxwLHQscyxyKXt2YXIgbz1yLnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDtpZihvIT1udWxsJiZyLnNlcmllc1tvXS5oaWdobGlnaHRNb3VzZURvd24pe2socil9fWZ1bmN0aW9uIGYocixxLHUsdCxzKXtpZih0KXt2YXIgcD1bdC5zZXJpZXNJbmRleCx0LnBvaW50SW5kZXgsdC5kYXRhXTt2YXIgbz1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFDbGljayIpO28ud2hpY2g9ci53aGljaDtvLnBhZ2VYPXIucGFnZVg7by5wYWdlWT1yLnBhZ2VZO3MudGFyZ2V0LnRyaWdnZXIobyxwKX19ZnVuY3Rpb24gbihzLHIsdix1LHQpe2lmKHUpe3ZhciBxPVt1LnNlcmllc0luZGV4LHUucG9pbnRJbmRleCx1LmRhdGFdO3ZhciBvPXQucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4O2lmKG8hPW51bGwmJnQuc2VyaWVzW29dLmhpZ2hsaWdodE1vdXNlRG93bil7ayh0KX12YXIgcD1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFSaWdodENsaWNrIik7cC53aGljaD1zLndoaWNoO3AucGFnZVg9cy5wYWdlWDtwLnBhZ2VZPXMucGFnZVk7dC50YXJnZXQudHJpZ2dlcihwLHEpfX1mdW5jdGlvbiBpKCl7aWYodGhpcy5wbHVnaW5zLnBpZVJlbmRlcmVyJiZ0aGlzLnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzKXt0aGlzLnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnJlc2V0Q2FudmFzKCk7dGhpcy5wbHVnaW5zLnBpZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcz1udWxsfXRoaXMucGx1Z2lucy5waWVSZW5kZXJlcj17aGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDpudWxsfTt0aGlzLnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzPW5ldyBlLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7dmFyIHA9ZSh0aGlzLnRhcmdldElkKyIgLmpxcGxvdC1kYXRhLWxhYmVsIik7aWYocC5sZW5ndGgpe2UocFswXSkuYmVmb3JlKHRoaXMucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywianFwbG90LXBpZVJlbmRlcmVyLWhpZ2hsaWdodC1jYW52YXMiLHRoaXMuX3Bsb3REaW1lbnNpb25zLHRoaXMpKX1lbHNle3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKHRoaXMucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywianFwbG90LXBpZVJlbmRlcmVyLWhpZ2hsaWdodC1jYW52YXMiLHRoaXMuX3Bsb3REaW1lbnNpb25zLHRoaXMpKX12YXIgbz10aGlzLnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnNldENvbnRleHQoKTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoIm1vdXNlbGVhdmUiLHtwbG90OnRoaXN9LGZ1bmN0aW9uKHEpe2socS5kYXRhLnBsb3QpfSl9ZS5qcXBsb3QucHJlSW5pdEhvb2tzLnB1c2goYyk7ZS5qcXBsb3QuUGllVGlja1JlbmRlcmVyPWZ1bmN0aW9uKCl7ZS5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlci5jYWxsKHRoaXMpfTtlLmpxcGxvdC5QaWVUaWNrUmVuZGVyZXIucHJvdG90eXBlPW5ldyBlLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyKCk7ZS5qcXBsb3QuUGllVGlja1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLmpxcGxvdC5QaWVUaWNrUmVuZGVyZXJ9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.pointLabels.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgCiAgICAvKioKICAgICAqIENsYXNzOiAkLmpxcGxvdC5Qb2ludExhYmVscwogICAgICogUGx1Z2luIGZvciBwdXR0aW5nIGxhYmVscyBhdCB0aGUgZGF0YSBwb2ludHMuCiAgICAgKiAKICAgICAqIFRvIHVzZSB0aGlzIHBsdWdpbiwgaW5jbHVkZSB0aGUganMKICAgICAqIGZpbGUgaW4geW91ciBzb3VyY2U6CiAgICAgKiAKICAgICAqID4gPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icGx1Z2lucy9qcXBsb3QucG9pbnRMYWJlbHMuanMiPjwvc2NyaXB0PgogICAgICogCiAgICAgKiBCeSBkZWZhdWx0LCB0aGUgbGFzdCB2YWx1ZSBpbiB0aGUgZGF0YSBwb25pdCBhcnJheSBpbiB0aGUgZGF0YSBzZXJpZXMgaXMgdXNlZAogICAgICogZm9yIHRoZSBsYWJlbC4gIEZvciBtb3N0IHNlcmllcyByZW5kZXJlcnMsIGV4dHJhIGRhdGEgY2FuIGJlIGFkZGVkIHRvIHRoZSAKICAgICAqIGRhdGEgcG9pbnQgYXJyYXlzIGFuZCB0aGUgbGFzdCB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMgdGhlIGxhYmVsLgogICAgICogCiAgICAgKiBGb3IgaW5zdGFuY2UsIAogICAgICogdGhpcyBzZXJpZXM6CiAgICAgKiAKICAgICAqID4gW1sxLDRdLCBbMyw1XSwgWzcsMl1dCiAgICAgKiAKICAgICAqIFdvdWxkLCBieSBkZWZhdWx0LCB1c2UgdGhlIHkgdmFsdWVzIGluIHRoZSBsYWJlbHMuCiAgICAgKiBFeHRyYSBkYXRhIGNhbiBiZSBhZGRlZCB0byB0aGUgc2VyaWVzIGxpa2Ugc286CiAgICAgKiAKICAgICAqID4gW1sxLDQsJ21pZCddLCBbMyA1LCdoaSddLCBbNywyLCdsb3cnXV0KICAgICAqIAogICAgICogQW5kIG5vdyB0aGUgcG9pbnQgbGFiZWxzIHdvdWxkIGJlICdtaWQnLCAnbG93JywgYW5kICdoaScuCiAgICAgKiAKICAgICAqIE9wdGlvbnMgdG8gdGhlIHBvaW50IGxhYmVscyBhbmQgYSBjdXN0b20gbGFiZWxzIGFycmF5IGNhbiBiZSBwYXNzZWQgaW50byB0aGUKICAgICAqICJwb2ludExhYmVscyIgb3B0aW9uIG9uIHRoZSBzZXJpZXMgb3B0aW9uIGxpa2Ugc286CiAgICAgKiAKICAgICAqID4gc2VyaWVzOlt7cG9pbnRMYWJlbHM6ewogICAgICogPiAgICBsYWJlbHM6WydtaWQnLCAnaGknLCAnbG93J10sCiAgICAgKiA+ICAgIGxvY2F0aW9uOidzZScsCiAgICAgKiA+ICAgIHlwYWRkaW5nOiAxMgogICAgICogPiAgICB9CiAgICAgKiA+IH1dCiAgICAgKiAKICAgICAqIEEgY3VzdG9tIGxhYmVscyBhcnJheSBpbiB0aGUgb3B0aW9ucyB0YWtlcyBwcmVjZW5kZW5jZSBvdmVyIGFueSBsYWJlbHMKICAgICAqIGluIHRoZSBzZXJpZXMgZGF0YS4gIElmIHlvdSBoYXZlIGEgY3VzdG9tIGxhYmVscyBhcnJheSBpbiB0aGUgb3B0aW9ucywKICAgICAqIGJ1dCBzdGlsbCB3YW50IHRvIHVzZSB2YWx1ZXMgZnJvbSB0aGUgc2VyaWVzIGFycmF5IGFzIGxhYmVscywgc2V0IHRoZQogICAgICogImxhYmVsc0Zyb21TZXJpZXMiIG9wdGlvbiB0byB0cnVlLgogICAgICogCiAgICAgKiBCeSBkZWZhdWx0LCBodG1sIGVudGl0aWVzICg8LCA+LCBldGMuKSBhcmUgZXNjYXBlZCBpbiBwb2ludCBsYWJlbHMuICAKICAgICAqIElmIHlvdSB3YW50IHRvIGluY2x1ZGUgYWN0dWFsIGh0bWwgbWFya3VwIGluIHRoZSBsYWJlbHMsIAogICAgICogc2V0IHRoZSAiZXNjYXBlSFRNTCIgb3B0aW9uIHRvIGZhbHNlLgogICAgICogCiAgICAgKi8KICAgICQuanFwbG90LlBvaW50TGFiZWxzID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgIC8vIEdyb3VwOiBQcm9wZXJ0aWVzCiAgICAgICAgLy8KICAgICAgICAvLyBwcm9wOiBzaG93CiAgICAgICAgLy8gc2hvdyB0aGUgbGFiZWxzIG9yIG5vdC4KICAgICAgICB0aGlzLnNob3cgPSAkLmpxcGxvdC5jb25maWcuZW5hYmxlUGx1Z2luczsKICAgICAgICAvLyBwcm9wOiBsb2NhdGlvbgogICAgICAgIC8vIGNvbXBhc3MgbG9jYXRpb24gd2hlcmUgdG8gcG9zaXRpb24gdGhlIGxhYmVsIGFyb3VuZCB0aGUgcG9pbnQuCiAgICAgICAgLy8gJ24nLCAnbmUnLCAnZScsICdzZScsICdzJywgJ3N3JywgJ3cnLCAnbncnCiAgICAgICAgdGhpcy5sb2NhdGlvbiA9ICduJzsKICAgICAgICAvLyBwcm9wOiBsYWJlbHNGcm9tU2VyaWVzCiAgICAgICAgLy8gdHJ1ZSB0byB1c2UgbGFiZWxzIHdpdGhpbiBkYXRhIHBvaW50IGFycmF5cy4KICAgICAgICB0aGlzLmxhYmVsc0Zyb21TZXJpZXMgPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiBzZXJpZXNMYWJlbEluZGV4CiAgICAgICAgLy8gYXJyYXkgaW5kZXggZm9yIGxvY2F0aW9uIG9mIGxhYmVscyB3aXRoaW4gZGF0YSBwb2ludCBhcnJheXMuCiAgICAgICAgLy8gaWYgbnVsbCwgd2lsbCB1c2UgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgZGF0YSBwb2ludCBhcnJheS4KICAgICAgICB0aGlzLnNlcmllc0xhYmVsSW5kZXggPSBudWxsOwogICAgICAgIC8vIHByb3A6IGxhYmVscwogICAgICAgIC8vIGFycmF5IG9mIGFycmF5cyBvZiBsYWJlbHMsIG9uZSBhcnJheSBmb3IgZWFjaCBzZXJpZXMuCiAgICAgICAgdGhpcy5sYWJlbHMgPSBbXTsKICAgICAgICAvLyBhY3R1YWwgbGFiZWxzIHRoYXQgd2lsbCBnZXQgZGlzcGxheWVkLgogICAgICAgIC8vIG5lZWRlZCB0byBwcmVzZXJ2ZSB1c2VyIHNwZWNpZmllZCBsYWJlbHMgaW4gbGFiZWxzIGFycmF5LgogICAgICAgIHRoaXMuX2xhYmVscyA9IFtdOwogICAgICAgIC8vIHByb3A6IHN0YWNrZWRWYWx1ZQogICAgICAgIC8vIHRydWUgdG8gZGlzcGxheSB2YWx1ZSBhcyBzdGFja2VkIGluIGEgc3RhY2tlZCBwbG90LgogICAgICAgIC8vIG5vIGVmZmVjdCBpZiBsYWJlbHMgaXMgc3BlY2lmaWVkLgogICAgICAgIHRoaXMuc3RhY2tlZFZhbHVlID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogeXBhZGRpbmcKICAgICAgICAvLyB2ZXJ0aWNhbCBwYWRkaW5nIGluIHBpeGVscyBiZXR3ZWVuIHBvaW50IGFuZCBsYWJlbAogICAgICAgIHRoaXMueXBhZGRpbmcgPSA2OwogICAgICAgIC8vIHByb3A6IHhwYWRkaW5nCiAgICAgICAgLy8gaG9yaXpvbnRhbCBwYWRkaW5nIGluIHBpeGVscyBiZXR3ZWVuIHBvaW50IGFuZCBsYWJlbAogICAgICAgIHRoaXMueHBhZGRpbmcgPSA2OwogICAgICAgIC8vIHByb3A6IGVzY2FwZUhUTUwKICAgICAgICAvLyB0cnVlIHRvIGVzY2FwZSBodG1sIGVudGl0aWVzIGluIHRoZSBsYWJlbHMuCiAgICAgICAgLy8gSWYgeW91IHdhbnQgdG8gaW5jbHVkZSBtYXJrdXAgaW4gdGhlIGxhYmVscywgc2V0IHRvIGZhbHNlLgogICAgICAgIHRoaXMuZXNjYXBlSFRNTCA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogZWRnZVRvbGVyYW5jZQogICAgICAgIC8vIE51bWJlciBvZiBwaXhlbHMgdGhhdCB0aGUgbGFiZWwgbXVzdCBiZSBhd2F5IGZyb20gYW4gYXhpcwogICAgICAgIC8vIGJvdW5kYXJ5IGluIG9yZGVyIHRvIGJlIGRyYXduLiAgTmVnYXRpdmUgdmFsdWVzIHdpbGwgYWxsb3cgb3ZlcmxhcAogICAgICAgIC8vIHdpdGggdGhlIGdyaWQgYm91bmRhcmllcy4KICAgICAgICB0aGlzLmVkZ2VUb2xlcmFuY2UgPSAtNTsKICAgICAgICAvLyBwcm9wOiBmb3JtYXR0ZXIKICAgICAgICAvLyBBIGNsYXNzIG9mIGEgZm9ybWF0dGVyIGZvciB0aGUgdGljayB0ZXh0LiAgc3ByaW50ZiBieSBkZWZhdWx0LgogICAgICAgIHRoaXMuZm9ybWF0dGVyID0gJC5qcXBsb3QuRGVmYXVsdFRpY2tGb3JtYXR0ZXI7CiAgICAgICAgLy8gcHJvcDogZm9ybWF0U3RyaW5nCiAgICAgICAgLy8gc3RyaW5nIHBhc3NlZCB0byB0aGUgZm9ybWF0dGVyLgogICAgICAgIHRoaXMuZm9ybWF0U3RyaW5nID0gJyc7CiAgICAgICAgLy8gcHJvcDogaGlkZVplcm9zCiAgICAgICAgLy8gdHJ1ZSB0byBub3Qgc2hvdyBhIGxhYmVsIGZvciBhIHZhbHVlIHdoaWNoIGlzIDAuCiAgICAgICAgdGhpcy5oaWRlWmVyb3MgPSBmYWxzZTsKICAgICAgICB0aGlzLl9lbGVtcyA9IFtdOwogICAgICAgIAogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgfTsKICAgIAogICAgdmFyIGxvY2F0aW9ucyA9IFsnbncnLCAnbicsICduZScsICdlJywgJ3NlJywgJ3MnLCAnc3cnLCAndyddOwogICAgdmFyIGxvY2F0aW9uSW5kaWNpZXMgPSB7J253JzowLCAnbic6MSwgJ25lJzoyLCAnZSc6MywgJ3NlJzo0LCAncyc6NSwgJ3N3Jzo2LCAndyc6N307CiAgICB2YXIgb3Bwb3NpdGVMb2NhdGlvbnMgPSBbJ3NlJywgJ3MnLCAnc3cnLCAndycsICdudycsICduJywgJ25lJywgJ2UnXTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYSBzZXJpZXMKICAgICQuanFwbG90LlBvaW50TGFiZWxzLmluaXQgPSBmdW5jdGlvbiAodGFyZ2V0LCBkYXRhLCBzZXJpZXNEZWZhdWx0cywgb3B0cywgcGxvdCl7CiAgICAgICAgdmFyIG9wdGlvbnMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgc2VyaWVzRGVmYXVsdHMsIG9wdHMpOwogICAgICAgIG9wdGlvbnMucG9pbnRMYWJlbHMgPSBvcHRpb25zLnBvaW50TGFiZWxzIHx8IHt9OwogICAgICAgIGlmICh0aGlzLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09PSAkLmpxcGxvdC5CYXJSZW5kZXJlciAmJiB0aGlzLmJhckRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnICYmICFvcHRpb25zLnBvaW50TGFiZWxzLmxvY2F0aW9uKSB7CiAgICAgICAgICAgIG9wdGlvbnMucG9pbnRMYWJlbHMubG9jYXRpb24gPSAnZSc7CiAgICAgICAgfQogICAgICAgIC8vIGFkZCBhIHBvaW50TGFiZWxzIGF0dHJpYnV0ZSB0byB0aGUgc2VyaWVzIHBsdWdpbnMKICAgICAgICB0aGlzLnBsdWdpbnMucG9pbnRMYWJlbHMgPSBuZXcgJC5qcXBsb3QuUG9pbnRMYWJlbHMob3B0aW9ucy5wb2ludExhYmVscyk7CiAgICAgICAgdGhpcy5wbHVnaW5zLnBvaW50TGFiZWxzLnNldExhYmVscy5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2Ygc2VyaWVzCiAgICAkLmpxcGxvdC5Qb2ludExhYmVscy5wcm90b3R5cGUuc2V0TGFiZWxzID0gZnVuY3Rpb24oKSB7ICAgCiAgICAgICAgdmFyIHAgPSB0aGlzLnBsdWdpbnMucG9pbnRMYWJlbHM7IAogICAgICAgIHZhciBsYWJlbElkeDsKICAgICAgICBpZiAocC5zZXJpZXNMYWJlbEluZGV4ICE9IG51bGwpIHsKICAgICAgICAgICAgbGFiZWxJZHggPSBwLnNlcmllc0xhYmVsSW5kZXg7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHRoaXMucmVuZGVyZXIuY29uc3RydWN0b3IgPT09ICQuanFwbG90LkJhclJlbmRlcmVyICYmIHRoaXMuYmFyRGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcpIHsKICAgICAgICAgICBsYWJlbElkeCA9ICh0aGlzLl9wbG90RGF0YVswXS5sZW5ndGggPCAzKSA/IDAgOiB0aGlzLl9wbG90RGF0YVswXS5sZW5ndGggLTE7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBsYWJlbElkeCA9ICh0aGlzLl9wbG90RGF0YS5sZW5ndGggPT09IDApID8gMCA6IHRoaXMuX3Bsb3REYXRhWzBdLmxlbmd0aCAtMTsKICAgICAgICB9CiAgICAgICAgcC5fbGFiZWxzID0gW107CiAgICAgICAgaWYgKHAubGFiZWxzLmxlbmd0aCA9PT0gMCB8fCBwLmxhYmVsc0Zyb21TZXJpZXMpIHsgICAgCiAgICAgICAgICAgIGlmIChwLnN0YWNrZWRWYWx1ZSkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMuX3Bsb3REYXRhLmxlbmd0aCAmJiB0aGlzLl9wbG90RGF0YVswXS5sZW5ndGgpewogICAgICAgICAgICAgICAgICAgIC8vIHZhciBpZHggPSBwLnNlcmllc0xhYmVsSW5kZXggfHwgdGhpcy5fcGxvdERhdGFbMF0ubGVuZ3RoIC0xOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9wbG90RGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICBwLl9sYWJlbHMucHVzaCh0aGlzLl9wbG90RGF0YVtpXVtsYWJlbElkeF0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIHZhciBkID0gdGhpcy5fcGxvdERhdGE7CiAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMuZGF0YTsKICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09PSAkLmpxcGxvdC5CYXJSZW5kZXJlciAmJiB0aGlzLndhdGVyZmFsbCkgewogICAgICAgICAgICAgICAgICAgIGQgPSB0aGlzLl9kYXRhOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGQubGVuZ3RoICYmIGRbMF0ubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gdmFyIGlkeCA9IHAuc2VyaWVzTGFiZWxJbmRleCB8fCBkWzBdLmxlbmd0aCAtMTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8ZC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICBwLl9sYWJlbHMucHVzaChkW2ldW2xhYmVsSWR4XSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZCA9IG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAocC5sYWJlbHMubGVuZ3RoKXsKICAgICAgICAgICAgcC5fbGFiZWxzID0gcC5sYWJlbHM7CiAgICAgICAgfQogICAgfTsKICAgIAogICAgJC5qcXBsb3QuUG9pbnRMYWJlbHMucHJvdG90eXBlLnhPZmZzZXQgPSBmdW5jdGlvbihlbGVtLCBsb2NhdGlvbiwgcGFkZGluZykgewogICAgICAgIGxvY2F0aW9uID0gbG9jYXRpb24gfHwgdGhpcy5sb2NhdGlvbjsKICAgICAgICBwYWRkaW5nID0gcGFkZGluZyB8fCB0aGlzLnhwYWRkaW5nOwogICAgICAgIHZhciBvZmZzZXQ7CiAgICAgICAgCiAgICAgICAgc3dpdGNoIChsb2NhdGlvbikgewogICAgICAgICAgICBjYXNlICdudyc6CiAgICAgICAgICAgICAgICBvZmZzZXQgPSAtZWxlbS5vdXRlcldpZHRoKHRydWUpIC0gdGhpcy54cGFkZGluZzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICduJzoKICAgICAgICAgICAgICAgIG9mZnNldCA9IC1lbGVtLm91dGVyV2lkdGgodHJ1ZSkvMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICduZSc6CiAgICAgICAgICAgICAgICBvZmZzZXQgPSAgdGhpcy54cGFkZGluZzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdlJzoKICAgICAgICAgICAgICAgIG9mZnNldCA9IHRoaXMueHBhZGRpbmc7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2UnOgogICAgICAgICAgICAgICAgb2Zmc2V0ID0gdGhpcy54cGFkZGluZzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgICAgIG9mZnNldCA9IC1lbGVtLm91dGVyV2lkdGgodHJ1ZSkvMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzdyc6CiAgICAgICAgICAgICAgICBvZmZzZXQgPSAtZWxlbS5vdXRlcldpZHRoKHRydWUpIC0gdGhpcy54cGFkZGluZzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICd3JzoKICAgICAgICAgICAgICAgIG9mZnNldCA9IC1lbGVtLm91dGVyV2lkdGgodHJ1ZSkgLSB0aGlzLnhwYWRkaW5nOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6IC8vIHNhbWUgYXMgJ253JwogICAgICAgICAgICAgICAgb2Zmc2V0ID0gLWVsZW0ub3V0ZXJXaWR0aCh0cnVlKSAtIHRoaXMueHBhZGRpbmc7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG9mZnNldDsgCiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5Qb2ludExhYmVscy5wcm90b3R5cGUueU9mZnNldCA9IGZ1bmN0aW9uKGVsZW0sIGxvY2F0aW9uLCBwYWRkaW5nKSB7CiAgICAgICAgbG9jYXRpb24gPSBsb2NhdGlvbiB8fCB0aGlzLmxvY2F0aW9uOwogICAgICAgIHBhZGRpbmcgPSBwYWRkaW5nIHx8IHRoaXMueHBhZGRpbmc7CiAgICAgICAgdmFyIG9mZnNldDsKICAgICAgICAKICAgICAgICBzd2l0Y2ggKGxvY2F0aW9uKSB7CiAgICAgICAgICAgIGNhc2UgJ253JzoKICAgICAgICAgICAgICAgIG9mZnNldCA9IC1lbGVtLm91dGVySGVpZ2h0KHRydWUpIC0gdGhpcy55cGFkZGluZzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICduJzoKICAgICAgICAgICAgICAgIG9mZnNldCA9IC1lbGVtLm91dGVySGVpZ2h0KHRydWUpIC0gdGhpcy55cGFkZGluZzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICduZSc6CiAgICAgICAgICAgICAgICBvZmZzZXQgPSAtZWxlbS5vdXRlckhlaWdodCh0cnVlKSAtIHRoaXMueXBhZGRpbmc7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnZSc6CiAgICAgICAgICAgICAgICBvZmZzZXQgPSAtZWxlbS5vdXRlckhlaWdodCh0cnVlKS8yOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3NlJzoKICAgICAgICAgICAgICAgIG9mZnNldCA9IHRoaXMueXBhZGRpbmc7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICAgICBvZmZzZXQgPSB0aGlzLnlwYWRkaW5nOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3N3JzoKICAgICAgICAgICAgICAgIG9mZnNldCA9IHRoaXMueXBhZGRpbmc7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAndyc6CiAgICAgICAgICAgICAgICBvZmZzZXQgPSAtZWxlbS5vdXRlckhlaWdodCh0cnVlKS8yOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6IC8vIHNhbWUgYXMgJ253JwogICAgICAgICAgICAgICAgb2Zmc2V0ID0gLWVsZW0ub3V0ZXJIZWlnaHQodHJ1ZSkgLSB0aGlzLnlwYWRkaW5nOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHJldHVybiBvZmZzZXQ7IAogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2Ygc2VyaWVzCiAgICAkLmpxcGxvdC5Qb2ludExhYmVscy5kcmF3ID0gZnVuY3Rpb24gKHNjdHgsIG9wdGlvbnMsIHBsb3QpIHsKICAgICAgICB2YXIgcCA9IHRoaXMucGx1Z2lucy5wb2ludExhYmVsczsKICAgICAgICAvLyBzZXQgbGFiZWxzIGFnYWluIGluIGNhc2UgdGhleSBoYXZlIGNoYW5nZWQuCiAgICAgICAgcC5zZXRMYWJlbHMuY2FsbCh0aGlzKTsKICAgICAgICAvLyByZW1vdmUgYW55IHByZXZpb3VzIGxhYmVscwogICAgICAgIGZvciAodmFyIGk9MDsgaTxwLl9lbGVtcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAvLyBNZW1vcnkgTGVha3MgcGF0Y2gKICAgICAgICAgICAgLy8gcC5fZWxlbXNbaV0ucmVtb3ZlKCk7CiAgICAgICAgICAgIHAuX2VsZW1zW2ldLmVtcHR5Rm9yY2UoKTsKICAgICAgICB9CiAgICAgICAgcC5fZWxlbXMuc3BsaWNlKDAsIHAuX2VsZW1zLmxlbmd0aCk7CgogICAgICAgIGlmIChwLnNob3cpIHsKICAgICAgICAgICAgdmFyIGF4ID0gJ18nK3RoaXMuX3N0YWNrQXhpcysnYXhpcyc7CiAgICAgICAgCiAgICAgICAgICAgIGlmICghcC5mb3JtYXRTdHJpbmcpIHsKICAgICAgICAgICAgICAgIHAuZm9ybWF0U3RyaW5nID0gdGhpc1theF0uX3RpY2tzWzBdLmZvcm1hdFN0cmluZzsKICAgICAgICAgICAgICAgIHAuZm9ybWF0dGVyID0gdGhpc1theF0uX3RpY2tzWzBdLmZvcm1hdHRlcjsKICAgICAgICAgICAgfQogICAgICAgIAogICAgICAgICAgICB2YXIgcGQgPSB0aGlzLl9wbG90RGF0YTsKICAgICAgICAgICAgdmFyIHBwZCA9IHRoaXMuX3ByZXZQbG90RGF0YTsKICAgICAgICAgICAgdmFyIHhheCA9IHRoaXMuX3hheGlzOwogICAgICAgICAgICB2YXIgeWF4ID0gdGhpcy5feWF4aXM7CiAgICAgICAgICAgIHZhciBlbGVtLCBoZWxlbTsKCiAgICAgICAgICAgIGZvciAodmFyIGk9MCwgbD1wLl9sYWJlbHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgbGFiZWwgPSBwLl9sYWJlbHNbaV07CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmIChsYWJlbCA9PSBudWxsIHx8IChwLmhpZGVaZXJvcyAmJiBwYXJzZUludChsYWJlbCwgMTApID09IDApKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGxhYmVsID0gcC5mb3JtYXR0ZXIocC5mb3JtYXRTdHJpbmcsIGxhYmVsKTsKCiAgICAgICAgICAgICAgICBoZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICAgICAgcC5fZWxlbXNbaV0gPSAkKGhlbGVtKTsKCiAgICAgICAgICAgICAgICBlbGVtID0gcC5fZWxlbXNbaV07CgoKICAgICAgICAgICAgICAgIGVsZW0uYWRkQ2xhc3MoJ2pxcGxvdC1wb2ludC1sYWJlbCBqcXBsb3Qtc2VyaWVzLScrdGhpcy5pbmRleCsnIGpxcGxvdC1wb2ludC0nK2kpOwogICAgICAgICAgICAgICAgZWxlbS5jc3MoJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7CiAgICAgICAgICAgICAgICBlbGVtLmluc2VydEFmdGVyKHNjdHguY2FudmFzKTsKCiAgICAgICAgICAgICAgICBpZiAocC5lc2NhcGVIVE1MKSB7CiAgICAgICAgICAgICAgICAgICAgZWxlbS50ZXh0KGxhYmVsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGVsZW0uaHRtbChsYWJlbCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgbG9jYXRpb24gPSBwLmxvY2F0aW9uOwogICAgICAgICAgICAgICAgaWYgKCh0aGlzLmZpbGxUb1plcm8gJiYgcGRbaV1bMV0gPCAwKSB8fCAodGhpcy5maWxsVG9aZXJvICYmIHRoaXMuX3R5cGUgPT09ICdiYXInICYmIHRoaXMuYmFyRGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgJiYgcGRbaV1bMF0gPCAwKSB8fCAodGhpcy53YXRlcmZhbGwgJiYgcGFyc2VJbnQobGFiZWwsIDEwKSkgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gPSBvcHBvc2l0ZUxvY2F0aW9uc1tsb2NhdGlvbkluZGljaWVzW2xvY2F0aW9uXV07CiAgICAgICAgICAgICAgICB9CgoKICAgICAgICAgICAgICAgIHZhciBlbGwgPSB4YXgudTJwKHBkW2ldWzBdKSArIHAueE9mZnNldChlbGVtLCBsb2NhdGlvbik7CiAgICAgICAgICAgICAgICB2YXIgZWx0ID0geWF4LnUycChwZFtpXVsxXSkgKyBwLnlPZmZzZXQoZWxlbSwgbG9jYXRpb24pOwoKICAgICAgICAgICAgICAgIC8vIHdlIGhhdmUgc3RhY2tlZCBjaGFydCBidXQgYXJlIG5vdCBzaG93aW5nIHN0YWNrZWQgdmFsdWVzLAogICAgICAgICAgICAgICAgLy8gcGxhY2UgbGFiZWxzIGluIGNlbnRlci4KICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zdGFjayAmJiAhcC5zdGFja2VkVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5iYXJEaXJlY3Rpb24gPT09ICJ2ZXJ0aWNhbCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWx0ID0gKHRoaXMuX2JhclBvaW50c1tpXVswXVsxXSArIHRoaXMuX2JhclBvaW50c1tpXVsxXVsxXSkgLyAyICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wIC0gMC41ICogZWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsbCA9ICh0aGlzLl9iYXJQb2ludHNbaV1bMl1bMF0gKyB0aGlzLl9iYXJQb2ludHNbaV1bMF1bMF0pIC8gMiArIHBsb3QuX2dyaWRQYWRkaW5nLmxlZnQgLSAwLjUgKiBlbGVtLm91dGVyV2lkdGgodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09ICQuanFwbG90LkJhclJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYmFyRGlyZWN0aW9uID09ICJ2ZXJ0aWNhbCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWxsICs9IHRoaXMuX2Jhck51ZGdlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWx0IC09IHRoaXMuX2Jhck51ZGdlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsZW0uY3NzKCdsZWZ0JywgZWxsKTsKICAgICAgICAgICAgICAgIGVsZW0uY3NzKCd0b3AnLCBlbHQpOwogICAgICAgICAgICAgICAgdmFyIGVsciA9IGVsbCArIGVsZW0ud2lkdGgoKTsKICAgICAgICAgICAgICAgIHZhciBlbGIgPSBlbHQgKyBlbGVtLmhlaWdodCgpOwogICAgICAgICAgICAgICAgdmFyIGV0ID0gcC5lZGdlVG9sZXJhbmNlOwogICAgICAgICAgICAgICAgdmFyIHNjbCA9ICQoc2N0eC5jYW52YXMpLnBvc2l0aW9uKCkubGVmdDsKICAgICAgICAgICAgICAgIHZhciBzY3QgPSAkKHNjdHguY2FudmFzKS5wb3NpdGlvbigpLnRvcDsKICAgICAgICAgICAgICAgIHZhciBzY3IgPSBzY3R4LmNhbnZhcy53aWR0aCArIHNjbDsKICAgICAgICAgICAgICAgIHZhciBzY2IgPSBzY3R4LmNhbnZhcy5oZWlnaHQgKyBzY3Q7CiAgICAgICAgICAgICAgICAvLyBpZiBsYWJlbCBpcyBvdXRzaWRlIG9mIGFsbG93ZWQgYXJlYSwgcmVtb3ZlIGl0CiAgICAgICAgICAgICAgICBpZiAoZWxsIC0gZXQgPCBzY2wgfHwgZWx0IC0gZXQgPCBzY3QgfHwgZWxyICsgZXQgPiBzY3IgfHwgZWxiICsgZXQgPiBzY2IpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsZW0gPSBudWxsOwogICAgICAgICAgICAgICAgaGVsZW0gPSBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBmaW5hbGx5LCBhbmltYXRlIHRoZW0gaWYgdGhlIHNlcmllcyBpcyBhbmltYXRlZAogICAgICAgICAgICAvLyBpZiAodGhpcy5yZW5kZXJlci5hbmltYXRpb24gJiYgdGhpcy5yZW5kZXJlci5hbmltYXRpb24uX3N1cHBvcnRlZCAmJiB0aGlzLnJlbmRlcmVyLmFuaW1hdGlvbi5zaG93ICYmIHBsb3QuX2RyYXdDb3VudCA8IDIpIHsKICAgICAgICAgICAgLy8gICAgIHZhciBzZWwgPSAnLmpxcGxvdC1wb2ludC1sYWJlbC5qcXBsb3Qtc2VyaWVzLScrdGhpcy5pbmRleDsKICAgICAgICAgICAgLy8gICAgICQoc2VsKS5oaWRlKCk7CiAgICAgICAgICAgIC8vICAgICAkKHNlbCkuZmFkZUluKDEwMDApOwogICAgICAgICAgICAvLyB9CgogICAgICAgIH0KICAgIH07CiAgICAKICAgICQuanFwbG90LnBvc3RTZXJpZXNJbml0SG9va3MucHVzaCgkLmpxcGxvdC5Qb2ludExhYmVscy5pbml0KTsKICAgICQuanFwbG90LnBvc3REcmF3U2VyaWVzSG9va3MucHVzaCgkLmpxcGxvdC5Qb2ludExhYmVscy5kcmF3KTsKfSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.pointLabels.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGMpe2MuanFwbG90LlBvaW50TGFiZWxzPWZ1bmN0aW9uKGUpe3RoaXMuc2hvdz1jLmpxcGxvdC5jb25maWcuZW5hYmxlUGx1Z2luczt0aGlzLmxvY2F0aW9uPSJuIjt0aGlzLmxhYmVsc0Zyb21TZXJpZXM9ZmFsc2U7dGhpcy5zZXJpZXNMYWJlbEluZGV4PW51bGw7dGhpcy5sYWJlbHM9W107dGhpcy5fbGFiZWxzPVtdO3RoaXMuc3RhY2tlZFZhbHVlPWZhbHNlO3RoaXMueXBhZGRpbmc9Njt0aGlzLnhwYWRkaW5nPTY7dGhpcy5lc2NhcGVIVE1MPXRydWU7dGhpcy5lZGdlVG9sZXJhbmNlPS01O3RoaXMuZm9ybWF0dGVyPWMuanFwbG90LkRlZmF1bHRUaWNrRm9ybWF0dGVyO3RoaXMuZm9ybWF0U3RyaW5nPSIiO3RoaXMuaGlkZVplcm9zPWZhbHNlO3RoaXMuX2VsZW1zPVtdO2MuZXh0ZW5kKHRydWUsdGhpcyxlKX07dmFyIGE9WyJudyIsIm4iLCJuZSIsImUiLCJzZSIsInMiLCJzdyIsInciXTt2YXIgZD17bnc6MCxuOjEsbmU6MixlOjMsc2U6NCxzOjUsc3c6Nix3Ojd9O3ZhciBiPVsic2UiLCJzIiwic3ciLCJ3IiwibnciLCJuIiwibmUiLCJlIl07Yy5qcXBsb3QuUG9pbnRMYWJlbHMuaW5pdD1mdW5jdGlvbihqLGgsZixnLGkpe3ZhciBlPWMuZXh0ZW5kKHRydWUse30sZixnKTtlLnBvaW50TGFiZWxzPWUucG9pbnRMYWJlbHN8fHt9O2lmKHRoaXMucmVuZGVyZXIuY29uc3RydWN0b3I9PT1jLmpxcGxvdC5CYXJSZW5kZXJlciYmdGhpcy5iYXJEaXJlY3Rpb249PT0iaG9yaXpvbnRhbCImJiFlLnBvaW50TGFiZWxzLmxvY2F0aW9uKXtlLnBvaW50TGFiZWxzLmxvY2F0aW9uPSJlIn10aGlzLnBsdWdpbnMucG9pbnRMYWJlbHM9bmV3IGMuanFwbG90LlBvaW50TGFiZWxzKGUucG9pbnRMYWJlbHMpO3RoaXMucGx1Z2lucy5wb2ludExhYmVscy5zZXRMYWJlbHMuY2FsbCh0aGlzKX07Yy5qcXBsb3QuUG9pbnRMYWJlbHMucHJvdG90eXBlLnNldExhYmVscz1mdW5jdGlvbigpe3ZhciBmPXRoaXMucGx1Z2lucy5wb2ludExhYmVsczt2YXIgaDtpZihmLnNlcmllc0xhYmVsSW5kZXghPW51bGwpe2g9Zi5zZXJpZXNMYWJlbEluZGV4fWVsc2V7aWYodGhpcy5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09PWMuanFwbG90LkJhclJlbmRlcmVyJiZ0aGlzLmJhckRpcmVjdGlvbj09PSJob3Jpem9udGFsIil7aD0odGhpcy5fcGxvdERhdGFbMF0ubGVuZ3RoPDMpPzA6dGhpcy5fcGxvdERhdGFbMF0ubGVuZ3RoLTF9ZWxzZXtoPSh0aGlzLl9wbG90RGF0YS5sZW5ndGg9PT0wKT8wOnRoaXMuX3Bsb3REYXRhWzBdLmxlbmd0aC0xfX1mLl9sYWJlbHM9W107aWYoZi5sYWJlbHMubGVuZ3RoPT09MHx8Zi5sYWJlbHNGcm9tU2VyaWVzKXtpZihmLnN0YWNrZWRWYWx1ZSl7aWYodGhpcy5fcGxvdERhdGEubGVuZ3RoJiZ0aGlzLl9wbG90RGF0YVswXS5sZW5ndGgpe2Zvcih2YXIgZT0wO2U8dGhpcy5fcGxvdERhdGEubGVuZ3RoO2UrKyl7Zi5fbGFiZWxzLnB1c2godGhpcy5fcGxvdERhdGFbZV1baF0pfX19ZWxzZXt2YXIgZz10aGlzLmRhdGE7aWYodGhpcy5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09PWMuanFwbG90LkJhclJlbmRlcmVyJiZ0aGlzLndhdGVyZmFsbCl7Zz10aGlzLl9kYXRhfWlmKGcubGVuZ3RoJiZnWzBdLmxlbmd0aCl7Zm9yKHZhciBlPTA7ZTxnLmxlbmd0aDtlKyspe2YuX2xhYmVscy5wdXNoKGdbZV1baF0pfX1nPW51bGx9fWVsc2V7aWYoZi5sYWJlbHMubGVuZ3RoKXtmLl9sYWJlbHM9Zi5sYWJlbHN9fX07Yy5qcXBsb3QuUG9pbnRMYWJlbHMucHJvdG90eXBlLnhPZmZzZXQ9ZnVuY3Rpb24oZixlLGcpe2U9ZXx8dGhpcy5sb2NhdGlvbjtnPWd8fHRoaXMueHBhZGRpbmc7dmFyIGg7c3dpdGNoKGUpe2Nhc2UibnciOmg9LWYub3V0ZXJXaWR0aCh0cnVlKS10aGlzLnhwYWRkaW5nO2JyZWFrO2Nhc2UibiI6aD0tZi5vdXRlcldpZHRoKHRydWUpLzI7YnJlYWs7Y2FzZSJuZSI6aD10aGlzLnhwYWRkaW5nO2JyZWFrO2Nhc2UiZSI6aD10aGlzLnhwYWRkaW5nO2JyZWFrO2Nhc2Uic2UiOmg9dGhpcy54cGFkZGluZzticmVhaztjYXNlInMiOmg9LWYub3V0ZXJXaWR0aCh0cnVlKS8yO2JyZWFrO2Nhc2Uic3ciOmg9LWYub3V0ZXJXaWR0aCh0cnVlKS10aGlzLnhwYWRkaW5nO2JyZWFrO2Nhc2UidyI6aD0tZi5vdXRlcldpZHRoKHRydWUpLXRoaXMueHBhZGRpbmc7YnJlYWs7ZGVmYXVsdDpoPS1mLm91dGVyV2lkdGgodHJ1ZSktdGhpcy54cGFkZGluZzticmVha31yZXR1cm4gaH07Yy5qcXBsb3QuUG9pbnRMYWJlbHMucHJvdG90eXBlLnlPZmZzZXQ9ZnVuY3Rpb24oZixlLGcpe2U9ZXx8dGhpcy5sb2NhdGlvbjtnPWd8fHRoaXMueHBhZGRpbmc7dmFyIGg7c3dpdGNoKGUpe2Nhc2UibnciOmg9LWYub3V0ZXJIZWlnaHQodHJ1ZSktdGhpcy55cGFkZGluZzticmVhaztjYXNlIm4iOmg9LWYub3V0ZXJIZWlnaHQodHJ1ZSktdGhpcy55cGFkZGluZzticmVhaztjYXNlIm5lIjpoPS1mLm91dGVySGVpZ2h0KHRydWUpLXRoaXMueXBhZGRpbmc7YnJlYWs7Y2FzZSJlIjpoPS1mLm91dGVySGVpZ2h0KHRydWUpLzI7YnJlYWs7Y2FzZSJzZSI6aD10aGlzLnlwYWRkaW5nO2JyZWFrO2Nhc2UicyI6aD10aGlzLnlwYWRkaW5nO2JyZWFrO2Nhc2Uic3ciOmg9dGhpcy55cGFkZGluZzticmVhaztjYXNlInciOmg9LWYub3V0ZXJIZWlnaHQodHJ1ZSkvMjticmVhaztkZWZhdWx0Omg9LWYub3V0ZXJIZWlnaHQodHJ1ZSktdGhpcy55cGFkZGluZzticmVha31yZXR1cm4gaH07Yy5qcXBsb3QuUG9pbnRMYWJlbHMuZHJhdz1mdW5jdGlvbih4LGosdil7dmFyIHQ9dGhpcy5wbHVnaW5zLnBvaW50TGFiZWxzO3Quc2V0TGFiZWxzLmNhbGwodGhpcyk7Zm9yKHZhciB3PTA7dzx0Ll9lbGVtcy5sZW5ndGg7dysrKXt0Ll9lbGVtc1t3XS5lbXB0eUZvcmNlKCl9dC5fZWxlbXMuc3BsaWNlKDAsdC5fZWxlbXMubGVuZ3RoKTtpZih0LnNob3cpe3ZhciByPSJfIit0aGlzLl9zdGFja0F4aXMrImF4aXMiO2lmKCF0LmZvcm1hdFN0cmluZyl7dC5mb3JtYXRTdHJpbmc9dGhpc1tyXS5fdGlja3NbMF0uZm9ybWF0U3RyaW5nO3QuZm9ybWF0dGVyPXRoaXNbcl0uX3RpY2tzWzBdLmZvcm1hdHRlcn12YXIgRT10aGlzLl9wbG90RGF0YTt2YXIgRD10aGlzLl9wcmV2UGxvdERhdGE7dmFyIEE9dGhpcy5feGF4aXM7dmFyIHE9dGhpcy5feWF4aXM7dmFyIHosZjtmb3IodmFyIHc9MCx1PXQuX2xhYmVscy5sZW5ndGg7dzx1O3crKyl7dmFyIG89dC5fbGFiZWxzW3ddO2lmKG89PW51bGx8fCh0LmhpZGVaZXJvcyYmcGFyc2VJbnQobywxMCk9PTApKXtjb250aW51ZX1vPXQuZm9ybWF0dGVyKHQuZm9ybWF0U3RyaW5nLG8pO2Y9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5fZWxlbXNbd109YyhmKTt6PXQuX2VsZW1zW3ddO3ouYWRkQ2xhc3MoImpxcGxvdC1wb2ludC1sYWJlbCBqcXBsb3Qtc2VyaWVzLSIrdGhpcy5pbmRleCsiIGpxcGxvdC1wb2ludC0iK3cpO3ouY3NzKCJwb3NpdGlvbiIsImFic29sdXRlIik7ei5pbnNlcnRBZnRlcih4LmNhbnZhcyk7aWYodC5lc2NhcGVIVE1MKXt6LnRleHQobyl9ZWxzZXt6Lmh0bWwobyl9dmFyIGc9dC5sb2NhdGlvbjtpZigodGhpcy5maWxsVG9aZXJvJiZFW3ddWzFdPDApfHwodGhpcy5maWxsVG9aZXJvJiZ0aGlzLl90eXBlPT09ImJhciImJnRoaXMuYmFyRGlyZWN0aW9uPT09Imhvcml6b250YWwiJiZFW3ddWzBdPDApfHwodGhpcy53YXRlcmZhbGwmJnBhcnNlSW50KG8sMTApKTwwKXtnPWJbZFtnXV19dmFyIG49QS51MnAoRVt3XVswXSkrdC54T2Zmc2V0KHosZyk7dmFyIGg9cS51MnAoRVt3XVsxXSkrdC55T2Zmc2V0KHosZyk7aWYodGhpcy5fc3RhY2smJiF0LnN0YWNrZWRWYWx1ZSl7aWYodGhpcy5iYXJEaXJlY3Rpb249PT0idmVydGljYWwiKXtoPSh0aGlzLl9iYXJQb2ludHNbd11bMF1bMV0rdGhpcy5fYmFyUG9pbnRzW3ddWzFdWzFdKS8yK3YuX2dyaWRQYWRkaW5nLnRvcC0wLjUqei5vdXRlckhlaWdodCh0cnVlKX1lbHNle249KHRoaXMuX2JhclBvaW50c1t3XVsyXVswXSt0aGlzLl9iYXJQb2ludHNbd11bMF1bMF0pLzIrdi5fZ3JpZFBhZGRpbmcubGVmdC0wLjUqei5vdXRlcldpZHRoKHRydWUpfX1pZih0aGlzLnJlbmRlcmVyLmNvbnN0cnVjdG9yPT1jLmpxcGxvdC5CYXJSZW5kZXJlcil7aWYodGhpcy5iYXJEaXJlY3Rpb249PSJ2ZXJ0aWNhbCIpe24rPXRoaXMuX2Jhck51ZGdlfWVsc2V7aC09dGhpcy5fYmFyTnVkZ2V9fXouY3NzKCJsZWZ0IixuKTt6LmNzcygidG9wIixoKTt2YXIgaz1uK3oud2lkdGgoKTt2YXIgcz1oK3ouaGVpZ2h0KCk7dmFyIEM9dC5lZGdlVG9sZXJhbmNlO3ZhciBlPWMoeC5jYW52YXMpLnBvc2l0aW9uKCkubGVmdDt2YXIgeT1jKHguY2FudmFzKS5wb3NpdGlvbigpLnRvcDt2YXIgQj14LmNhbnZhcy53aWR0aCtlO3ZhciBtPXguY2FudmFzLmhlaWdodCt5O2lmKG4tQzxlfHxoLUM8eXx8aytDPkJ8fHMrQz5tKXt6LnJlbW92ZSgpfXo9bnVsbDtmPW51bGx9fX07Yy5qcXBsb3QucG9zdFNlcmllc0luaXRIb29rcy5wdXNoKGMuanFwbG90LlBvaW50TGFiZWxzLmluaXQpO2MuanFwbG90LnBvc3REcmF3U2VyaWVzSG9va3MucHVzaChjLmpxcGxvdC5Qb2ludExhYmVscy5kcmF3KX0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.pyramidAxisRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgJC5qcXBsb3QuUHlyYW1pZEF4aXNSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuUHlyYW1pZEF4aXNSZW5kZXJlci5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7CiAgICAkLmpxcGxvdC5QeXJhbWlkQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXI7CiAgICAgICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBheGlzCiAgICAkLmpxcGxvdC5QeXJhbWlkQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucyl7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAvLwogICAgICAgIC8vIHByb3A6IHBvc2l0aW9uCiAgICAgICAgLy8gUG9zaXRpb24gb2YgYXhpcy4gIFZhbHVlcyBhcmU6IHRvcCwgYm90dG9tICwgbGVmdCwgY2VudGVyLCByaWdodC4KICAgICAgICAvLyBCeSBkZWZhdWx0LCB4IGFuZCB4MiBheGVzIGFyZSBib3R0b20sIHkgYXhpcyBpcyBjZW50ZXIuCiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogZHJhd0Jhc2VsaW5lCiAgICAgICAgLy8gVHJ1ZSB0byBkcmF3IHRoZSBheGlzIGJhc2VsaW5lLgogICAgICAgIHRoaXMuZHJhd0Jhc2VsaW5lID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBiYXNlbGluZVdpZHRoCiAgICAgICAgLy8gd2lkdGggb2YgdGhlIGJhc2VsaW5lIGluIHBpeGVscy4KICAgICAgICB0aGlzLmJhc2VsaW5lV2lkdGggPSBudWxsOwogICAgICAgIC8vIHByb3A6IGJhc2VsaW5lQ29sb3IKICAgICAgICAvLyBDU1MgY29sb3Igc3BlYyBmb3IgdGhlIGJhc2VsaW5lLgogICAgICAgIHRoaXMuYmFzZWxpbmVDb2xvciA9IG51bGw7CiAgICAgICAgdGhpcy50aWNrU3BhY2luZ0ZhY3RvciA9IDI1OwogICAgICAgIHRoaXMuX3R5cGUgPSAncHlyYW1pZCc7CiAgICAgICAgdGhpcy5fc3BsaXRBeGlzID0gZmFsc2U7CiAgICAgICAgdGhpcy5fc3BsaXRMZW5ndGggPSBudWxsOwogICAgICAgIHRoaXMuY2F0ZWdvcnkgPSBmYWxzZTsKICAgICAgICB0aGlzLl9hdXRvRm9ybWF0U3RyaW5nID0gJyc7CiAgICAgICAgdGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcgPSBmYWxzZTsKICAgICAgICAKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgICAgICB0aGlzLnJlbmRlcmVyLm9wdGlvbnMgPSBvcHRpb25zOwoKICAgICAgICB0aGlzLnJlc2V0RGF0YUJvdW5kcyA9IHRoaXMucmVuZGVyZXIucmVzZXREYXRhQm91bmRzOwogICAgICAgIHRoaXMucmVzZXREYXRhQm91bmRzKCk7CgogICAgfTsKCiAgICAkLmpxcGxvdC5QeXJhbWlkQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5yZXNldERhdGFCb3VuZHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAvLyBHbyB0aHJvdWdoIGFsbCB0aGUgc2VyaWVzIGF0dGFjaGVkIHRvIHRoaXMgYXhpcyBhbmQgZmluZAogICAgICAgIC8vIHRoZSBtaW4vbWF4IGJvdW5kcyBmb3IgdGhpcyBheGlzLgogICAgICAgIHZhciBkYiA9IHRoaXMuX2RhdGFCb3VuZHM7CiAgICAgICAgZGIubWluID0gbnVsbDsKICAgICAgICBkYi5tYXggPSBudWxsOwogICAgICAgIHZhciB0ZW1wOwogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHMgPSB0aGlzLl9zZXJpZXNbaV07CiAgICAgICAgICAgIHZhciBkID0gcy5fcGxvdERhdGE7CiAgICAgICAgICAgIAogICAgICAgICAgICBmb3IgKHZhciBqPTAsIGw9ZC5sZW5ndGg7IGo8bDsgaisrKSB7IAogICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZS5jaGFyQXQoMCkgPT09ICd4JykgewogICAgICAgICAgICAgICAgICAgIHRlbXAgPSBkW2pdWzFdOwogICAgICAgICAgICAgICAgICAgIGlmICgodGVtcCAhPT0gbnVsbCAmJiB0ZW1wIDwgZGIubWluKSB8fCBkYi5taW4gPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGIubWluID0gdGVtcDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCh0ZW1wICE9PSBudWxsICYmIHRlbXAgPiBkYi5tYXgpIHx8IGRiLm1heCA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBkYi5tYXggPSB0ZW1wOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdGVtcCA9IGRbal1bMF07CiAgICAgICAgICAgICAgICAgICAgaWYgKCh0ZW1wICE9PSBudWxsICYmIHRlbXAgPCBkYi5taW4pIHx8IGRiLm1pbiA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBkYi5taW4gPSB0ZW1wOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoKHRlbXAgIT09IG51bGwgJiYgdGVtcCA+IGRiLm1heCkgfHwgZGIubWF4ID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRiLm1heCA9IHRlbXA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBheGlzCiAgICAkLmpxcGxvdC5QeXJhbWlkQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24oY3R4LCBwbG90KSB7CiAgICAgICAgaWYgKHRoaXMuc2hvdykgewogICAgICAgICAgICAvLyBwb3B1bGF0ZSB0aGUgYXhpcyBsYWJlbCBhbmQgdmFsdWUgcHJvcGVydGllcy4KICAgICAgICAgICAgLy8gY3JlYXRlVGlja3MgaXMgYSBtZXRob2Qgb24gdGhlIHJlbmRlcmVyLCBidXQKICAgICAgICAgICAgLy8gY2FsbCBpdCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBheGlzLgogICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRpY2tzLmNhbGwodGhpcywgcGxvdCk7CiAgICAgICAgICAgIC8vIGZpbGwgYSBkaXYgd2l0aCBheGVzIGxhYmVscyBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLgogICAgICAgICAgICAvLyBOZWVkIHRvIHByZWdlbmVyYXRlIGVhY2ggYXhpcyB0byBnZXQgaXRzIGJvdW5kcyBhbmQKICAgICAgICAgICAgLy8gcG9zaXRpb24gaXQgYW5kIHRoZSBsYWJlbHMgY29ycmVjdGx5IG9uIHRoZSBwbG90LgogICAgICAgICAgICB2YXIgZGltPTA7CiAgICAgICAgICAgIHZhciB0ZW1wOwogICAgICAgICAgICAvLyBBZGRlZCBmb3IgdGhlbWluZy4KICAgICAgICAgICAgaWYgKHRoaXMuX2VsZW0pIHsKICAgICAgICAgICAgICAgIC8vIE1lbW9yeSBMZWFrcyBwYXRjaAogICAgICAgICAgICAgICAgLy90aGlzLl9lbGVtLmVtcHR5KCk7CiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmVtcHR5Rm9yY2UoKTsKICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0gPSBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICB0aGlzLl9lbGVtID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uYWRkQ2xhc3MoJ2pxcGxvdC1heGlzIGpxcGxvdC0nK3RoaXMubmFtZSk7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCdwb3NpdGlvbicsICdhYnNvbHV0ZScpOwoKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0ud2lkdGgodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5oZWlnaHQodGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gY3JlYXRlIGEgX2xhYmVsIG9iamVjdC4KICAgICAgICAgICAgdGhpcy5sYWJlbE9wdGlvbnMuYXhpcyA9IHRoaXMubmFtZTsKICAgICAgICAgICAgdGhpcy5fbGFiZWwgPSBuZXcgdGhpcy5sYWJlbFJlbmRlcmVyKHRoaXMubGFiZWxPcHRpb25zKTsKICAgICAgICAgICAgaWYgKHRoaXMuX2xhYmVsLnNob3cpIHsKICAgICAgICAgICAgICAgIHZhciBlbGVtID0gdGhpcy5fbGFiZWwuZHJhdyhjdHgsIHBsb3QpOwogICAgICAgICAgICAgICAgZWxlbS5hcHBlbmRUbyh0aGlzLl9lbGVtKTsKICAgICAgICAgICAgICAgIGVsZW0gPSBudWxsOwogICAgICAgICAgICB9CiAgICAKICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl90aWNrczsKICAgICAgICAgICAgdmFyIHRpY2s7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB0aWNrID0gdFtpXTsKICAgICAgICAgICAgICAgIGlmICh0aWNrLnNob3cgJiYgdGljay5zaG93TGFiZWwgJiYgKCF0aWNrLmlzTWlub3JUaWNrKSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uYXBwZW5kKHRpY2suZHJhdyhjdHgsIHBsb3QpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0aWNrID0gbnVsbDsKICAgICAgICAgICAgdCA9IG51bGw7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLl9lbGVtOwogICAgfTsgICAKCiAgICAvLyBOb3RlLCBwcmltZXMgY2FuIGJlIGZvdW5kIG9uIGh0dHA6Ly9wcmltZXMudXRtLmVkdS8KICAgIHZhciBfcHJpbWVzID0gWzIsIDMsIDUsIDcsIDExLCAxMywgMTcsIDE5LCAyMywgMjksIDMxLCAzNywgNDEsIDQzLCA0NywgNTMsIDU5LCA2MSwgNjcsIDcxLCA3MywgNzksIDgzLCA4OSwgOTcsIDEwMSwgMTAzLCAxMDcsIDEwOSwgMTEzLCAxMjcsIDEzMSwgMTM3LCAxMzksIDE0OSwgMTUxLCAxNTcsIDE2MywgMTY3LCAxNzMsIDE3OSwgMTgxLCAxOTEsIDE5MywgMTk3LCAxOTksIDIxMSwgMjIzLCAyMjcsIDIyOSwgMjMzLCAyMzksIDI0MSwgMjUxLCAyNTcsIDI2MywgMjY5LCAyNzEsIDI3NywgMjgxLCAyODMsIDI5MywgMzA3LCAzMTEsIDMxMywgMzE3LCAzMzEsIDMzNywgMzQ3LCAzNDksIDM1MywgMzU5LCAzNjcsIDM3MywgMzc5LCAzODMsIDM4OSwgMzk3LCA0MDEsIDQwOSwgNDE5LCA0MjEsIDQzMSwgNDMzLCA0MzksIDQ0MywgNDQ5LCA0NTcsIDQ2MSwgNDYzLCA0NjcsIDQ3OSwgNDg3LCA0OTEsIDQ5OSwgNTAzLCA1MDksIDUyMSwgNTIzLCA1NDEsIDU0NywgNTU3LCA1NjMsIDU2OSwgNTcxLCA1NzcsIDU4NywgNTkzLCA1OTksIDYwMSwgNjA3LCA2MTMsIDYxNywgNjE5LCA2MzEsIDY0MSwgNjQzLCA2NDcsIDY1MywgNjU5LCA2NjEsIDY3MywgNjc3LCA2ODMsIDY5MSwgNzAxLCA3MDksIDcxOSwgNzI3LCA3MzMsIDczOSwgNzQzLCA3NTEsIDc1NywgNzYxLCA3NjksIDc3MywgNzg3LCA3OTcsIDgwOSwgODExLCA4MjEsIDgyMywgODI3LCA4MjksIDgzOSwgODUzLCA4NTcsIDg1OSwgODYzLCA4NzcsIDg4MSwgODgzLCA4ODcsIDkwNywgOTExLCA5MTksIDkyOSwgOTM3LCA5NDEsIDk0NywgOTUzLCA5NjcsIDk3MSwgOTc3LCA5ODMsIDk5MSwgOTk3XTsKCgogICAgdmFyIF9wcmltZXNIYXNoID0ge307CgogICAgZm9yICh2YXIgaSA9MCwgbCA9IF9wcmltZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CiAgICAgICAgX3ByaW1lc0hhc2hbX3ByaW1lc1tpXV0gPSBfcHJpbWVzW2ldOwogICAgfQoKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIGF4aXMKICAgICQuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXIucHJvdG90eXBlLmNyZWF0ZVRpY2tzID0gZnVuY3Rpb24ocGxvdCkgewogICAgICAgIC8vIHdlJ3JlIGFyZSBvcGVyYXRpbmcgb24gYW4gYXhpcyBoZXJlCiAgICAgICAgdmFyIHVzZXJUaWNrcyA9IHRoaXMudGlja3M7CiAgICAgICAgLy8gZGF0YWJvdW5kcyB3ZXJlIHNldCBvbiBheGlzIGluaXRpYWxpemF0aW9uLgogICAgICAgIHZhciBkYiA9IHRoaXMuX2RhdGFCb3VuZHM7CiAgICAgICAgdmFyIGRpbTsKICAgICAgICB2YXIgaW50ZXJ2YWw7CiAgICAgICAgdmFyIG1pbjsKICAgICAgICB2YXIgbWF4OwogICAgICAgIHZhciByYW5nZTsKICAgICAgICB2YXIgcG9zMTsKICAgICAgICB2YXIgcG9zMjsKICAgICAgICB2YXIgdHQ7CiAgICAgICAgdmFyIGk7CiAgICAgICAgdmFyIGw7CiAgICAgICAgdmFyIHM7CiAgICAgICAgLy8gZ2V0IGEgY29weSBvZiB1c2VyJ3Mgc2V0dGluZ3MgZm9yIG1pbi9tYXguCiAgICAgICAgdmFyIHVzZXJNaW4gPSB0aGlzLm1pbjsKICAgICAgICB2YXIgdXNlck1heCA9IHRoaXMubWF4OwogICAgICAgIHZhciB1dDsKICAgICAgICB2YXIgdDsKICAgICAgICB2YXIgdGhyZXNob2xkOwogICAgICAgIHZhciB0ZGltOwogICAgICAgIHZhciBzY2FsZWZhY3Q7CiAgICAgICAgdmFyIHJldDsKICAgICAgICB2YXIgdHVtaW47CiAgICAgICAgdmFyIHR1bWF4OwogICAgICAgIHZhciBtYXhWaXNpYmxlVGlja3M7CiAgICAgICAgdmFyIHZhbDsKICAgICAgICB2YXIgc2tpcCA9IG51bGw7CiAgICAgICAgdmFyIHRlbXA7CiAgICAgICAgCiAgICAgICAgLy8gaWYgd2UgYWxyZWFkeSBoYXZlIHRpY2tzLCB1c2UgdGhlbS4KICAgICAgICAvLyB0aWNrcyBtdXN0IGJlIGluIG9yZGVyIG9mIGluY3JlYXNpbmcgdmFsdWUuCgogICAgICAgIGlmICh1c2VyVGlja3MubGVuZ3RoKSB7CiAgICAgICAgICAgIC8vIHRpY2tzIGNvdWxkIGJlIDFEIG9yIDJEIGFycmF5IG9mIFt2YWwsIHZhbCwgLCwsXSBvciBbW3ZhbCwgbGFiZWxdLCBbdmFsLCBsYWJlbF0sIC4uLl0gb3IgbWl4ZWQKICAgICAgICAgICAgZm9yIChpPTAsIGw9dXNlclRpY2tzLmxlbmd0aDsgaTxsOyBpKyspewogICAgICAgICAgICAgICAgdXQgPSB1c2VyVGlja3NbaV07CiAgICAgICAgICAgICAgICB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwogICAgICAgICAgICAgICAgaWYgKCQuaXNBcnJheSh1dCkpIHsKICAgICAgICAgICAgICAgICAgICB0LnZhbHVlID0gdXRbMF07CiAgICAgICAgICAgICAgICAgICAgdC5sYWJlbCA9IHV0WzFdOwogICAgICAgICAgICAgICAgICAgIHQuc2V0VGljayh1dFswXSwgdGhpcy5uYW1lKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90aWNrcy5wdXNoKHQpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2UgaWYgKCQuaXNQbGFpbk9iamVjdCh1dCkpIHsKICAgICAgICAgICAgICAgICAgICAkLmV4dGVuZCh0cnVlLCB0LCB1dCk7CiAgICAgICAgICAgICAgICAgICAgdC5heGlzID0gdGhpcy5uYW1lOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdXQgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGkgKyBwbG90LmRlZmF1bHRBeGlzU3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSB1dDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdC52YWx1ZSA9IHZhbDsKICAgICAgICAgICAgICAgICAgICB0LmxhYmVsID0gdXQ7CiAgICAgICAgICAgICAgICAgICAgdC5heGlzID0gdGhpcy5uYW1lOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IHVzZXJUaWNrcy5sZW5ndGg7CiAgICAgICAgICAgIHRoaXMubWluID0gdGhpcy5fdGlja3NbMF0udmFsdWU7CiAgICAgICAgICAgIHRoaXMubWF4ID0gdGhpcy5fdGlja3NbdGhpcy5udW1iZXJUaWNrcy0xXS52YWx1ZTsKICAgICAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSAodGhpcy5tYXggLSB0aGlzLm1pbikgLyAodGhpcy5udW1iZXJUaWNrcyAtIDEpOwoKICAgICAgICAgICAgLy8gdXNlIHVzZXIgc3BlY2lmaWVkIHRpY2tJbnRlcnZhbCBpZiB0aGVyZSBpcyBvbmUKICAgICAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMudGlja0ludGVydmFsKSB7CiAgICAgICAgICAgICAgICAvLyBoaWRlIGV2ZXJ5IHRpY2sgZXhjZXB0IGZvciB0aWNrcyBvbiBpbnRlcnZhbAogICAgICAgICAgICAgICAgdmFyIHRpID0gdGhpcy5fb3B0aW9ucy50aWNrSW50ZXJ2YWw7CiAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTx0aGlzLm51bWJlclRpY2tzOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaSV0aSAhPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLl90aWNrc1tpXS5zaG93ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzW2ldLmlzTWlub3JUaWNrID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgd2UgaGF2ZSB0b28gbWFueSB0aWNrcwogICAgICAgICAgICAgICAgZGltID0gKHRoaXMubmFtZS5jaGFyQXQoMCkgPT09ICd4JykgPyB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCA6IHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodDsKICAgICAgICAgICAgICAgIG1heFZpc2libGVUaWNrcyA9IE1hdGgucm91bmQoMi4wICsgZGltL3RoaXMudGlja1NwYWNpbmdGYWN0b3IpOwoKICAgICAgICAgICAgICAgIGlmICh0aGlzLm51bWJlclRpY2tzID4gbWF4VmlzaWJsZVRpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgZm9yIG51bWJlciBvZiB0aWNrcyB3ZSBjYW4gc2tpcAogICAgICAgICAgICAgICAgICAgIHRlbXAgPSB0aGlzLm51bWJlclRpY2tzIC0gMTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MjsgaTx0ZW1wOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAgJSBpID09PSAwICYmIHRlbXAvaSA8IG1heFZpc2libGVUaWNrcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCA9IGktMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoc2tpcCAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY291bnQgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MSwgbD10aGlzLl90aWNrcy5sZW5ndGg7IGk8bDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgPD0gc2tpcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzW2ldLnNob3cgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCArPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBpZiBjYXRlZ29yeSBzdHlsZSwgYWRkIG1pbm9yIHRpY2tzIGluIGJldHdlZW4KICAgICAgICAgICAgdGVtcCA9IFtdOwogICAgICAgICAgICBpZiAodGhpcy5jYXRlZ29yeSkgewogICAgICAgICAgICAgICAgLy8gdHVybiBvZmYgZ3JpZGxpbmUgYW5kIG1hcmsgb24gZmlyc3QgdGljawogICAgICAgICAgICAgICAgdGhpcy5fdGlja3NbMF0uc2hvd0dyaWRsaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICB0aGlzLl90aWNrc1swXS5zaG93TWFyayA9IGZhbHNlOwoKICAgICAgICAgICAgICAgIGZvciAoaT10aGlzLl90aWNrcy5sZW5ndGgtMTsgaT4wOyBpLS0pIHsKICAgICAgICAgICAgICAgICAgICB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgIHQudmFsdWUgPSB0aGlzLl90aWNrc1tpLTFdLnZhbHVlICsgdGhpcy50aWNrSW50ZXJ2YWwvMi4wOwogICAgICAgICAgICAgICAgICAgIHQubGFiZWwgPSAnJzsKICAgICAgICAgICAgICAgICAgICB0LnNob3dMYWJlbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIHQuYXhpcyA9IHRoaXMubmFtZTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90aWNrc1tpXS5zaG93R3JpZGxpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90aWNrc1tpXS5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnNwbGljZShpLCAwLCB0KTsKICAgICAgICAgICAgICAgICAgICAvLyB0ZW1wLnB1c2godCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gbWVyZ2UgaW4gdGhlIG5ldyB0aWNrcwogICAgICAgICAgICAgICAgLy8gZm9yIChpPTEsIGw9dGVtcC5sZW5ndGg7IGk8bDsgaSsrKSB7CiAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5fdGlja3Muc3BsaWNlKGksIDAsIHRlbXBbaV0pOwogICAgICAgICAgICAgICAgLy8gfQoKICAgICAgICAgICAgICAgIC8vIG5vdyBhZGQgYSB0aWNrIGF0IGJlZ2lubmluZyBhbmQgZW5kCiAgICAgICAgICAgICAgICB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwogICAgICAgICAgICAgICAgdC52YWx1ZSA9IHRoaXMuX3RpY2tzWzBdLnZhbHVlIC0gdGhpcy50aWNrSW50ZXJ2YWwvMi4wOwogICAgICAgICAgICAgICAgdC5sYWJlbCA9ICcnOwogICAgICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHQuYXhpcyA9IHRoaXMubmFtZTsKICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnVuc2hpZnQodCk7CgogICAgICAgICAgICAgICAgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTsKICAgICAgICAgICAgICAgIHQudmFsdWUgPSB0aGlzLl90aWNrc1t0aGlzLl90aWNrcy5sZW5ndGgtMV0udmFsdWUgKyB0aGlzLnRpY2tJbnRlcnZhbC8yLjA7CiAgICAgICAgICAgICAgICB0LmxhYmVsID0gJyc7CiAgICAgICAgICAgICAgICB0LnNob3dMYWJlbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgdC5heGlzID0gdGhpcy5uYW1lOwogICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKCiAgICAgICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9IHRoaXMudGlja0ludGVydmFsIC8gMi4wOwogICAgICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IHRoaXMuX3RpY2tzLmxlbmd0aDsKICAgICAgICAgICAgICAgIHRoaXMubWluID0gdGhpcy5fdGlja3NbMF0udmFsdWU7CiAgICAgICAgICAgICAgICB0aGlzLm1heCA9IHRoaXMuX3RpY2tzW3RoaXMuX3RpY2tzLmxlbmd0aC0xXS52YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gd2UgZG9uJ3QgaGF2ZSBhbnkgdGlja3MgeWV0LCBsZXQncyBtYWtlIHNvbWUhCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUuY2hhckF0KDApID09PSAneCcpIHsKICAgICAgICAgICAgICAgIGRpbSA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoOwogICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHggYXhpcyBpcyBzeW1ldHJpYyBhYm91dCAwLgogICAgICAgICAgICAgICAgdmFyIHRlbXBtYXggPSBNYXRoLm1heChkYi5tYXgsIE1hdGguYWJzKGRiLm1pbikpOwogICAgICAgICAgICAgICAgdmFyIHRlbXBtaW4gPSBNYXRoLm1pbihkYi5taW4sIC10ZW1wbWF4KTsKICAgICAgICAgICAgICAgIC8vIG1pbiA9ICgodGhpcy5taW4gIT0gbnVsbCkgPyB0aGlzLm1pbiA6IHRlbXBtaW4pOwogICAgICAgICAgICAgICAgLy8gbWF4ID0gKCh0aGlzLm1heCAhPSBudWxsKSA/IHRoaXMubWF4IDogdGVtcG1heCk7CiAgICAgICAgICAgICAgICBtaW4gPSB0ZW1wbWluOwogICAgICAgICAgICAgICAgbWF4ID0gdGVtcG1heDsKICAgICAgICAgICAgICAgIHJhbmdlID0gbWF4IC0gbWluOwoKICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpY2tPcHRpb25zID09IG51bGwgfHwgIXRoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHRocmVzaG9sZCA9IDMwOwogICAgICAgICAgICAgICAgdGRpbSA9IE1hdGgubWF4KGRpbSwgdGhyZXNob2xkKzEpOwogICAgICAgICAgICAgICAgc2NhbGVmYWN0ID0gICh0ZGltLXRocmVzaG9sZCkvMzAwLjA7CiAgICAgICAgICAgICAgICByZXQgPSAkLmpxcGxvdC5MaW5lYXJUaWNrR2VuZXJhdG9yKG1pbiwgbWF4LCBzY2FsZWZhY3QpOyAKICAgICAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSBhIHBhZGRlZCBtYXggYW5kIG1pbiwgcG9pbnRzIHNob3VsZCBiZSBsZXNzIHRoYW4gdGhlc2UKICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhleSBhcmVuJ3QgdG9vIGNsb3NlIHRvIHRoZSBlZGdlcyBvZiB0aGUgcGxvdC4KICAgICAgICAgICAgICAgIC8vIFVzZXIgY2FuIGFkanVzdCBob3cgbXVjaCBwYWRkaW5nIGlzIGFsbG93ZWQgd2l0aCBwYWQsIHBhZE1pbiBhbmQgUGFkTWF4IG9wdGlvbnMuIAogICAgICAgICAgICAgICAgdHVtaW4gPSBtaW4gKyByYW5nZSoodGhpcy5wYWRNaW4gLSAxKTsKICAgICAgICAgICAgICAgIHR1bWF4ID0gbWF4IC0gcmFuZ2UqKHRoaXMucGFkTWF4IC0gMSk7CgogICAgICAgICAgICAgICAgaWYgKG1pbiA8IHR1bWluIHx8IG1heCA+IHR1bWF4KSB7CiAgICAgICAgICAgICAgICAgICAgdHVtaW4gPSBtaW4gLSByYW5nZSoodGhpcy5wYWRNaW4gLSAxKTsKICAgICAgICAgICAgICAgICAgICB0dW1heCA9IG1heCArIHJhbmdlKih0aGlzLnBhZE1heCAtIDEpOwogICAgICAgICAgICAgICAgICAgIHJldCA9ICQuanFwbG90LkxpbmVhclRpY2tHZW5lcmF0b3IodHVtaW4sIHR1bWF4LCBzY2FsZWZhY3QpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHRoaXMubWluID0gcmV0WzBdOwogICAgICAgICAgICAgICAgdGhpcy5tYXggPSByZXRbMV07CiAgICAgICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gcmV0WzJdOwogICAgICAgICAgICAgICAgdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyA9IHJldFszXTsKICAgICAgICAgICAgICAgIHRoaXMudGlja0ludGVydmFsID0gcmV0WzRdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgZGltID0gdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0OwoKICAgICAgICAgICAgICAgIC8vIHRpY2tzIHdpbGwgYmUgb24gd2hvbGUgaW50ZWdlcnMgbGlrZSAxLCAyLCAzLCAuLi4gb3IgMSwgNCwgNywgLi4uCiAgICAgICAgICAgICAgICBtaW4gPSBkYi5taW47CiAgICAgICAgICAgICAgICBtYXggPSBkYi5tYXg7CiAgICAgICAgICAgICAgICBzID0gdGhpcy5fc2VyaWVzWzBdOwogICAgICAgICAgICAgICAgdGhpcy5fdGlja3MgPSBbXTsKCiAgICAgICAgICAgICAgICByYW5nZSA9IG1heCAtIG1pbjsKCiAgICAgICAgICAgICAgICAvLyBpZiByYW5nZSBpcyBhIHByaW1lLCB3aWxsIGdldCBvbmx5IDIgdGlja3MsIGV4cGFuZCByYW5nZSBpbiB0aGF0IGNhc2UuCiAgICAgICAgICAgICAgICBpZiAoX3ByaW1lc0hhc2hbcmFuZ2VdKSB7CiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgKz0gMTsKICAgICAgICAgICAgICAgICAgICBtYXggKz0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB0aGlzLm1heCA9IG1heDsKICAgICAgICAgICAgICAgIHRoaXMubWluID0gbWluOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBtYXhWaXNpYmxlVGlja3MgPSBNYXRoLnJvdW5kKDIuMCArIGRpbS90aGlzLnRpY2tTcGFjaW5nRmFjdG9yKTsKCiAgICAgICAgICAgICAgICBpZiAocmFuZ2UgKyAxIDw9IG1heFZpc2libGVUaWNrcykgewogICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSByYW5nZSArIDE7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSAxLjA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gZmlndXJlIG91dCBhIHJvdW5kIG51bWJlciBvZiB0aWNrcyB0byBza2lwIGluIGV2ZXJ5IGludGVydmFsCiAgICAgICAgICAgICAgICAgICAgLy8gcmFuZ2UgLyB0aSArIDEgPSBudAogICAgICAgICAgICAgICAgICAgIC8vIHRpID0gcmFuZ2UgLyAobnQgLSAxKQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9bWF4VmlzaWJsZVRpY2tzOyBpPjE7IGktLSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAocmFuZ2UvKGkgLSAxKSA9PT0gTWF0aC5yb3VuZChyYW5nZS8oaSAtIDEpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9IHJhbmdlLyhpIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZyAmJiB0aGlzLl9hdXRvRm9ybWF0U3RyaW5nICE9ICcnKSB7CiAgICAgICAgICAgICAgICB0aGlzLnRpY2tPcHRpb25zID0gdGhpcy50aWNrT3B0aW9ucyB8fCB7fTsKICAgICAgICAgICAgICAgIHRoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nID0gdGhpcy5fYXV0b0Zvcm1hdFN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGxhYmVsdmFsOwogICAgICAgICAgICBmb3IgKGk9MDsgaTx0aGlzLm51bWJlclRpY2tzOyBpKyspIHsKICAgICAgICAgICAgICAgIHRoaXMudGlja09wdGlvbnMuYXhpcyA9IHRoaXMubmFtZTsKICAgICAgICAgICAgICAgIGxhYmVsdmFsID0gdGhpcy5taW4gKyB0aGlzLnRpY2tJbnRlcnZhbCAqIGk7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lLmNoYXJBdCgwKSA9PT0gJ3gnKSB7CiAgICAgICAgICAgICAgICAgICAgbGFiZWx2YWwgPSBNYXRoLmFicyhsYWJlbHZhbCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyB0aGlzLnRpY2tPcHRpb25zLmxhYmVsID0gU3RyaW5nIChsYWJlbHZhbCk7CiAgICAgICAgICAgICAgICB0aGlzLnRpY2tPcHRpb25zLnZhbHVlID0gdGhpcy5taW4gKyB0aGlzLnRpY2tJbnRlcnZhbCAqIGk7CiAgICAgICAgICAgICAgICB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwoKICAgICAgICAgICAgICAgIHQubGFiZWwgPSB0LnByZWZpeCArIHQuZm9ybWF0dGVyKHQuZm9ybWF0U3RyaW5nLCBsYWJlbHZhbCk7CgogICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgICAgIC8vIGZvciB4IGF4aXMsIGlmIHkgYXhpcyBpcyBpbiBtaWRkbGUsIGFkZCBhIHN5bWV0cmljYWwgMCB0aWNrCiAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lLmNoYXJBdCgwKSA9PT0gJ3gnICYmIHBsb3QuYXhlcy55TWlkQXhpcy5zaG93ICYmIHRoaXMudGlja09wdGlvbnMudmFsdWUgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9zcGxpdEF4aXMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3NwbGl0TGVuZ3RoID0gcGxvdC5heGVzLnlNaWRBeGlzLmdldFdpZHRoKCk7CiAgICAgICAgICAgICAgICAgICAgLy8gdC52YWx1ZSA9IC10aGlzLm1heC8yMDAwLjA7CiAgICAgICAgICAgICAgICAgICAgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90aWNrcy5wdXNoKHQpOwogICAgICAgICAgICAgICAgICAgIHQudmFsdWUgPSB0aGlzLm1heC8yMDAwLjA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdCA9IG51bGw7CiAgICAgICAgfQogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYXhpcwogICAgJC5qcXBsb3QuUHlyYW1pZEF4aXNSZW5kZXJlci5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24oKSB7IAogICAgICAgIHZhciBkaW0gPSAwOwogICAgICAgIHZhciB0ZW1wOwogICAgICAgIHZhciB3ID0gMDsKICAgICAgICB2YXIgaCA9IDA7CiAgICAgICAgdmFyIGk7CiAgICAgICAgdmFyIHQ7CiAgICAgICAgdmFyIHRpY2s7CiAgICAgICAgdmFyIGxzaG93ID0gKHRoaXMuX2xhYmVsID09IG51bGwpID8gZmFsc2UgOiB0aGlzLl9sYWJlbC5zaG93OwogICAgICAgIGlmICh0aGlzLnNob3cpIHsKICAgICAgICAgICAgdCA9IHRoaXMuX3RpY2tzOwogICAgICAgICAgICBsID0gdC5sZW5ndGg7CiAgICAgICAgICAgIGZvciAoaT0wOyBpPGw7IGkrKykgewogICAgICAgICAgICAgICAgdGljayA9IHRbaV07CiAgICAgICAgICAgICAgICBpZiAoIXRpY2suX2JyZWFrVGljayAmJiB0aWNrLnNob3cgJiYgdGljay5zaG93TGFiZWwgJiYgIXRpY2suaXNNaW5vclRpY2spIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lLmNoYXJBdCgwKSA9PT0gJ3gnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSB0aWNrLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IHRpY2suX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAgPiBkaW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGltID0gdGVtcDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT09ICd5TWlkQXhpcycpIHsKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPGw7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHRpY2sgPSB0W2ldOwogICAgICAgICAgICAgICAgICAgIGlmICh0aWNrLl9lbGVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSAoZGltIC0gdGljay5fZWxlbS5vdXRlcldpZHRoKHRydWUpKS8yLjA7CiAgICAgICAgICAgICAgICAgICAgICAgIHRpY2suX2VsZW0uY3NzKCdsZWZ0JywgdGVtcCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRpY2sgPSBudWxsOwogICAgICAgICAgICB0ID0gbnVsbDsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChsc2hvdykgewogICAgICAgICAgICAgICAgdyA9IHRoaXMuX2xhYmVsLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSk7CiAgICAgICAgICAgICAgICBoID0gdGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJIZWlnaHQodHJ1ZSk7IAogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT09ICd4YXhpcycpIHsKICAgICAgICAgICAgICAgIGRpbSA9IGRpbSArIGg7CiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7J2hlaWdodCc6ZGltKydweCcsIGxlZnQ6JzBweCcsIGJvdHRvbTonMHB4J30pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgIGRpbSA9IGRpbSArIGg7CiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7J2hlaWdodCc6ZGltKydweCcsIGxlZnQ6JzBweCcsIHRvcDonMHB4J30pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ3lheGlzJykgewogICAgICAgICAgICAgICAgZGltID0gZGltICsgdzsKICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHsnd2lkdGgnOmRpbSsncHgnLCBsZWZ0OicwcHgnLCB0b3A6JzBweCd9KTsKICAgICAgICAgICAgICAgIGlmIChsc2hvdyAmJiB0aGlzLl9sYWJlbC5jb25zdHJ1Y3RvciA9PSAkLmpxcGxvdC5BeGlzTGFiZWxSZW5kZXJlcikgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygnd2lkdGgnLCB3KydweCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ3lNaWRBeGlzJykgewogICAgICAgICAgICAgICAgLy8gZG9uJ3QgaW5jbHVkZSB3aWR0aCBvZiBsYWJlbCBhdCBhbGwgaW4gd2lkdGggb2YgYXhpcz8KICAgICAgICAgICAgICAgIC8vIGRpbSA9IChkaW0gPiB3KSA/IGRpbSA6IHc7CiAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IGRpbS8yLjAgLSB3LzIuMDsKICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHsnd2lkdGgnOmRpbSsncHgnLCB0b3A6JzBweCd9KTsKICAgICAgICAgICAgICAgIGlmIChsc2hvdyAmJiB0aGlzLl9sYWJlbC5jb25zdHJ1Y3RvciA9PSAkLmpxcGxvdC5BeGlzTGFiZWxSZW5kZXJlcikgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcyh7d2lkdGg6IHcsIGxlZnQ6IHRlbXAsIHRvcDogMH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgZGltID0gZGltICsgdzsKICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHsnd2lkdGgnOmRpbSsncHgnLCByaWdodDonMHB4JywgdG9wOicwcHgnfSk7CiAgICAgICAgICAgICAgICBpZiAobHNob3cgJiYgdGhpcy5fbGFiZWwuY29uc3RydWN0b3IgPT0gJC5qcXBsb3QuQXhpc0xhYmVsUmVuZGVyZXIpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5fZWxlbS5jc3MoJ3dpZHRoJywgdysncHgnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0gIAogICAgfTsKICAgIAogICAgJC5qcXBsb3QuUHlyYW1pZEF4aXNSZW5kZXJlci5wcm90b3R5cGUucGFjayA9IGZ1bmN0aW9uKHBvcywgb2Zmc2V0cykgeyAKICAgICAgICAvLyBBZGQgZGVmYXVsdHMgZm9yIHJlcGFja2luZyBmcm9tIHJlc2V0VGlja1ZhbHVlcyBmdW5jdGlvbi4KICAgICAgICBwb3MgPSBwb3MgfHwge307CiAgICAgICAgb2Zmc2V0cyA9IG9mZnNldHMgfHwgdGhpcy5fb2Zmc2V0czsKICAgICAgICAKICAgICAgICB2YXIgdGlja3MgPSB0aGlzLl90aWNrczsKICAgICAgICB2YXIgbWF4ID0gdGhpcy5tYXg7CiAgICAgICAgdmFyIG1pbiA9IHRoaXMubWluOwogICAgICAgIHZhciBvZmZtYXggPSBvZmZzZXRzLm1heDsKICAgICAgICB2YXIgb2ZmbWluID0gb2Zmc2V0cy5taW47CiAgICAgICAgdmFyIGxzaG93ID0gKHRoaXMuX2xhYmVsID09IG51bGwpID8gZmFsc2UgOiB0aGlzLl9sYWJlbC5zaG93OwogICAgICAgIAogICAgICAgIGZvciAodmFyIHAgaW4gcG9zKSB7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHAsIHBvc1twXSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHRoaXMuX29mZnNldHMgPSBvZmZzZXRzOwogICAgICAgIC8vIHBpeGVsbGVuZ3RoIHdpbGwgYmUgKyBmb3IgeCBheGVzIGFuZCAtIGZvciB5IGF4ZXMgYmVjYXN1ZSBwaXhlbHMgYWx3YXlzIG1lYXN1cmVkIGZyb20gdG9wIGxlZnQuCiAgICAgICAgdmFyIHBpeGVsbGVuZ3RoID0gb2ZmbWF4IC0gb2ZmbWluOwogICAgICAgIHZhciB1bml0bGVuZ3RoID0gbWF4IC0gbWluOwogICAgICAgIHZhciBzbCA9IHRoaXMuX3NwbGl0TGVuZ3RoOwogICAgICAgIAogICAgICAgIC8vIHBvaW50IHRvIHVuaXQgYW5kIHVuaXQgdG8gcG9pbnQgY29udmVyc2lvbnMgcmVmZXJlbmNlcyB0byBQbG90IERPTSBlbGVtZW50IHRvcCBsZWZ0IGNvcm5lci4KICAgICAgICBpZiAodGhpcy5fc3BsaXRBeGlzKSB7CiAgICAgICAgICAgIHBpeGVsbGVuZ3RoIC09IHRoaXMuX3NwbGl0TGVuZ3RoOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gZG9uJ3Qga25vdyB0aGF0IHRoaXMgb25lIGlzIGNvcnJlY3QuCiAgICAgICAgICAgIHRoaXMucDJ1ID0gZnVuY3Rpb24ocCl7CiAgICAgICAgICAgICAgICByZXR1cm4gKHAgLSBvZmZtaW4pICogdW5pdGxlbmd0aCAvIHBpeGVsbGVuZ3RoICsgbWluOwogICAgICAgICAgICB9OwogICAgICAgIAogICAgICAgICAgICB0aGlzLnUycCA9IGZ1bmN0aW9uKHUpewogICAgICAgICAgICAgICAgaWYgKHUgPD0gMCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAodSAtIG1pbikgKiBwaXhlbGxlbmd0aCAvIHVuaXRsZW5ndGggKyBvZmZtaW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHUgLSBtaW4pICogcGl4ZWxsZW5ndGggLyB1bml0bGVuZ3RoICsgb2ZmbWluICsgc2w7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgdGhpcy5zZXJpZXNfdTJwID0gZnVuY3Rpb24odSl7CiAgICAgICAgICAgICAgICBpZiAodSA8PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh1IC0gbWluKSAqIHBpeGVsbGVuZ3RoIC8gdW5pdGxlbmd0aDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAodSAtIG1pbikgKiBwaXhlbGxlbmd0aCAvIHVuaXRsZW5ndGggKyBzbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIC8vIGRvbid0IGtub3cgdGhhdCB0aGlzIG9uZSBpcyBjb3JyZWN0LgogICAgICAgICAgICB0aGlzLnNlcmllc19wMnUgPSBmdW5jdGlvbihwKXsKICAgICAgICAgICAgICAgIHJldHVybiBwICogdW5pdGxlbmd0aCAvIHBpeGVsbGVuZ3RoICsgbWluOwogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdGhpcy5wMnUgPSBmdW5jdGlvbihwKXsKICAgICAgICAgICAgICAgIHJldHVybiAocCAtIG9mZm1pbikgKiB1bml0bGVuZ3RoIC8gcGl4ZWxsZW5ndGggKyBtaW47CiAgICAgICAgICAgIH07CiAgICAgICAgCiAgICAgICAgICAgIHRoaXMudTJwID0gZnVuY3Rpb24odSl7CiAgICAgICAgICAgICAgICByZXR1cm4gKHUgLSBtaW4pICogcGl4ZWxsZW5ndGggLyB1bml0bGVuZ3RoICsgb2ZmbWluOwogICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUuY2hhckF0KDApID09PSAneCcpewogICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNfdTJwID0gZnVuY3Rpb24odSl7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh1IC0gbWluKSAqIHBpeGVsbGVuZ3RoIC8gdW5pdGxlbmd0aDsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc19wMnUgPSBmdW5jdGlvbihwKXsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcCAqIHVuaXRsZW5ndGggLyBwaXhlbGxlbmd0aCArIG1pbjsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc191MnAgPSBmdW5jdGlvbih1KXsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHUgLSBtYXgpICogcGl4ZWxsZW5ndGggLyB1bml0bGVuZ3RoOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzX3AydSA9IGZ1bmN0aW9uKHApewogICAgICAgICAgICAgICAgICAgIHJldHVybiBwICogdW5pdGxlbmd0aCAvIHBpeGVsbGVuZ3RoICsgbWF4OwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUuY2hhckF0KDApID09PSAneCcpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGlja3NbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvdyAmJiB0LnNob3dMYWJlbCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2hpbTsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmNvbnN0cnVjdG9yID09ICQuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIgJiYgdC5hbmdsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBuZWVkIHRvIGFkanVzdCBhdXRvIHBvc2l0aW9uaW5nIGJhc2VkIG9uIHdoaWNoIGF4aXMgdGhpcyBpcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZW1wID0gKHRoaXMubmFtZSA9PSAneGF4aXMnKSA/IDEgOiAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodC5sYWJlbFBvc2l0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYXV0byc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvc2l0aW9uIGF0IGVuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVtcCAqIHQuYW5nbGUgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0V2lkdGgoKSArIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbigtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9zaXRpb24gYXQgc3RhcnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbih0Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdlbmQnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0V2lkdGgoKSArIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbigtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5zaW4odC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21pZGRsZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5nZXRXaWR0aCgpLzIgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5zaW4oLXQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0V2lkdGgoKS8yICsgdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKC10Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0V2lkdGgoKS8yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSB0aGlzLnUycCh0LnZhbHVlKSArIHNoaW0gKyAncHgnOwogICAgICAgICAgICAgICAgICAgICAgICB0Ll9lbGVtLmNzcygnbGVmdCcsIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQucGFjaygpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChsc2hvdykgewogICAgICAgICAgICAgICAgICAgIHZhciB3ID0gdGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5fZWxlbS5jc3MoJ2xlZnQnLCBvZmZtaW4gKyBwaXhlbGxlbmd0aC8yIC0gdy8yICsgJ3B4Jyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygnYm90dG9tJywgJzBweCcpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCd0b3AnLCAnMHB4Jyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLnBhY2soKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGlja3NbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvdyAmJiB0LnNob3dMYWJlbCAmJiAhdC5pc01pbm9yVGljaykgeyAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2hpbTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuY29uc3RydWN0b3IgPT0gJC5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciAmJiB0LmFuZ2xlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIG5lZWQgdG8gYWRqdXN0IGF1dG8gcG9zaXRpb25pbmcgYmFzZWQgb24gd2hpY2ggYXhpcyB0aGlzIGlzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXAgPSAodGhpcy5uYW1lID09ICd5YXhpcycpID8gMSA6IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LmxhYmVsUG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhdXRvJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9zaXRpb24gYXQgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZW5kJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAgKiB0LmFuZ2xlIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5jb3MoLXQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldEhlaWdodCgpICsgdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguY29zKHQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuYW5nbGUgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLmNvcygtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5jb3ModC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWlkZGxlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHQuYW5nbGUgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkvMiArIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbigtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkvMiAtIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbih0Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldEhlaWdodCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldEhlaWdodCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSB0aGlzLnUycCh0LnZhbHVlKSArIHNoaW0gKyAncHgnOwogICAgICAgICAgICAgICAgICAgICAgICB0Ll9lbGVtLmNzcygndG9wJywgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5wYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGxzaG93KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGggPSB0aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lICE9PSAneU1pZEF4aXMnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygndG9wJywgb2ZmbWF4IC0gcGl4ZWxsZW5ndGgvMiAtIGgvMiArICdweCcpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lID09ICd5YXhpcycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCdsZWZ0JywgJzBweCcpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLm5hbWUgIT09ICd5TWlkQXhpcycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCdyaWdodCcsICcwcHgnKTsKICAgICAgICAgICAgICAgICAgICB9ICAgCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwucGFjaygpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB0aWNrcyA9IG51bGw7CiAgICB9Owp9KShqUXVlcnkpOwo=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.pyramidAxisRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGUpe2UuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXI9ZnVuY3Rpb24oKXtlLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIuY2FsbCh0aGlzKX07ZS5qcXBsb3QuUHlyYW1pZEF4aXNSZW5kZXJlci5wcm90b3R5cGU9bmV3IGUuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlcigpO2UuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXI7ZS5qcXBsb3QuUHlyYW1pZEF4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihmKXt0aGlzLnBvc2l0aW9uPW51bGw7dGhpcy5kcmF3QmFzZWxpbmU9dHJ1ZTt0aGlzLmJhc2VsaW5lV2lkdGg9bnVsbDt0aGlzLmJhc2VsaW5lQ29sb3I9bnVsbDt0aGlzLnRpY2tTcGFjaW5nRmFjdG9yPTI1O3RoaXMuX3R5cGU9InB5cmFtaWQiO3RoaXMuX3NwbGl0QXhpcz1mYWxzZTt0aGlzLl9zcGxpdExlbmd0aD1udWxsO3RoaXMuY2F0ZWdvcnk9ZmFsc2U7dGhpcy5fYXV0b0Zvcm1hdFN0cmluZz0iIjt0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZz1mYWxzZTtlLmV4dGVuZCh0cnVlLHRoaXMsZik7dGhpcy5yZW5kZXJlci5vcHRpb25zPWY7dGhpcy5yZXNldERhdGFCb3VuZHM9dGhpcy5yZW5kZXJlci5yZXNldERhdGFCb3VuZHM7dGhpcy5yZXNldERhdGFCb3VuZHMoKX07ZS5qcXBsb3QuUHlyYW1pZEF4aXNSZW5kZXJlci5wcm90b3R5cGUucmVzZXREYXRhQm91bmRzPWZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5fZGF0YUJvdW5kcztoLm1pbj1udWxsO2gubWF4PW51bGw7dmFyIGc7Zm9yKHZhciBtPTA7bTx0aGlzLl9zZXJpZXMubGVuZ3RoO20rKyl7dmFyIG49dGhpcy5fc2VyaWVzW21dO3ZhciBvPW4uX3Bsb3REYXRhO2Zvcih2YXIgaz0wLGY9by5sZW5ndGg7azxmO2srKyl7aWYodGhpcy5uYW1lLmNoYXJBdCgwKT09PSJ4Iil7Zz1vW2tdWzFdO2lmKChnIT09bnVsbCYmZzxoLm1pbil8fGgubWluPT09bnVsbCl7aC5taW49Z31pZigoZyE9PW51bGwmJmc+aC5tYXgpfHxoLm1heD09PW51bGwpe2gubWF4PWd9fWVsc2V7Zz1vW2tdWzBdO2lmKChnIT09bnVsbCYmZzxoLm1pbil8fGgubWluPT09bnVsbCl7aC5taW49Z31pZigoZyE9PW51bGwmJmc+aC5tYXgpfHxoLm1heD09PW51bGwpe2gubWF4PWd9fX19fTtlLmpxcGxvdC5QeXJhbWlkQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKGYsbil7aWYodGhpcy5zaG93KXt0aGlzLnJlbmRlcmVyLmNyZWF0ZVRpY2tzLmNhbGwodGhpcyxuKTt2YXIgbT0wO3ZhciBnO2lmKHRoaXMuX2VsZW0pe3RoaXMuX2VsZW0uZW1wdHlGb3JjZSgpO3RoaXMuX2VsZW09bnVsbH10aGlzLl9lbGVtPWUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO3RoaXMuX2VsZW0uYWRkQ2xhc3MoImpxcGxvdC1heGlzIGpxcGxvdC0iK3RoaXMubmFtZSk7dGhpcy5fZWxlbS5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKTtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe3RoaXMuX2VsZW0ud2lkdGgodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgpfWVsc2V7dGhpcy5fZWxlbS5oZWlnaHQodGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0KX10aGlzLmxhYmVsT3B0aW9ucy5heGlzPXRoaXMubmFtZTt0aGlzLl9sYWJlbD1uZXcgdGhpcy5sYWJlbFJlbmRlcmVyKHRoaXMubGFiZWxPcHRpb25zKTtpZih0aGlzLl9sYWJlbC5zaG93KXt2YXIgbD10aGlzLl9sYWJlbC5kcmF3KGYsbik7bC5hcHBlbmRUbyh0aGlzLl9lbGVtKTtsPW51bGx9dmFyIGs9dGhpcy5fdGlja3M7dmFyIGo7Zm9yKHZhciBoPTA7aDxrLmxlbmd0aDtoKyspe2o9a1toXTtpZihqLnNob3cmJmouc2hvd0xhYmVsJiYoIWouaXNNaW5vclRpY2spKXt0aGlzLl9lbGVtLmFwcGVuZChqLmRyYXcoZixuKSl9fWo9bnVsbDtrPW51bGx9cmV0dXJuIHRoaXMuX2VsZW19O3ZhciBiPVsyLDMsNSw3LDExLDEzLDE3LDE5LDIzLDI5LDMxLDM3LDQxLDQzLDQ3LDUzLDU5LDYxLDY3LDcxLDczLDc5LDgzLDg5LDk3LDEwMSwxMDMsMTA3LDEwOSwxMTMsMTI3LDEzMSwxMzcsMTM5LDE0OSwxNTEsMTU3LDE2MywxNjcsMTczLDE3OSwxODEsMTkxLDE5MywxOTcsMTk5LDIxMSwyMjMsMjI3LDIyOSwyMzMsMjM5LDI0MSwyNTEsMjU3LDI2MywyNjksMjcxLDI3NywyODEsMjgzLDI5MywzMDcsMzExLDMxMywzMTcsMzMxLDMzNywzNDcsMzQ5LDM1MywzNTksMzY3LDM3MywzNzksMzgzLDM4OSwzOTcsNDAxLDQwOSw0MTksNDIxLDQzMSw0MzMsNDM5LDQ0Myw0NDksNDU3LDQ2MSw0NjMsNDY3LDQ3OSw0ODcsNDkxLDQ5OSw1MDMsNTA5LDUyMSw1MjMsNTQxLDU0Nyw1NTcsNTYzLDU2OSw1NzEsNTc3LDU4Nyw1OTMsNTk5LDYwMSw2MDcsNjEzLDYxNyw2MTksNjMxLDY0MSw2NDMsNjQ3LDY1Myw2NTksNjYxLDY3Myw2NzcsNjgzLDY5MSw3MDEsNzA5LDcxOSw3MjcsNzMzLDczOSw3NDMsNzUxLDc1Nyw3NjEsNzY5LDc3Myw3ODcsNzk3LDgwOSw4MTEsODIxLDgyMyw4MjcsODI5LDgzOSw4NTMsODU3LDg1OSw4NjMsODc3LDg4MSw4ODMsODg3LDkwNyw5MTEsOTE5LDkyOSw5MzcsOTQxLDk0Nyw5NTMsOTY3LDk3MSw5NzcsOTgzLDk5MSw5OTddO3ZhciBkPXt9O2Zvcih2YXIgYz0wLGE9Yi5sZW5ndGg7YzxhO2MrKyl7ZFtiW2NdXT1iW2NdfWUuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXIucHJvdG90eXBlLmNyZWF0ZVRpY2tzPWZ1bmN0aW9uKEQpe3ZhciBKPXRoaXMudGlja3M7dmFyIE09dGhpcy5fZGF0YUJvdW5kczt2YXIgRTt2YXIgSzt2YXIgQjt2YXIgRzt2YXIgeTt2YXIgbjt2YXIgazt2YXIgaDt2YXIgSDt2YXIgQzt2YXIgeDt2YXIgTD10aGlzLm1pbjt2YXIgTj10aGlzLm1heDt2YXIgcTt2YXIgdjt2YXIgbTt2YXIgZzt2YXIgajt2YXIgTzt2YXIgQTt2YXIgRjt2YXIgcjt2YXIgUDt2YXIgej1udWxsO3ZhciBJO2lmKEoubGVuZ3RoKXtmb3IoSD0wLEM9Si5sZW5ndGg7SDxDO0grKyl7cT1KW0hdO3Y9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2lmKGUuaXNBcnJheShxKSl7di52YWx1ZT1xWzBdO3YubGFiZWw9cVsxXTt2LnNldFRpY2socVswXSx0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2godil9ZWxzZXtpZihlLmlzUGxhaW5PYmplY3QocSkpe2UuZXh0ZW5kKHRydWUsdixxKTt2LmF4aXM9dGhpcy5uYW1lO3RoaXMuX3RpY2tzLnB1c2godil9ZWxzZXtpZih0eXBlb2YgcT09PSJzdHJpbmciKXtQPUgrRC5kZWZhdWx0QXhpc1N0YXJ0fWVsc2V7UD1xfXYudmFsdWU9UDt2LmxhYmVsPXE7di5heGlzPXRoaXMubmFtZTt0aGlzLl90aWNrcy5wdXNoKHYpfX19dGhpcy5udW1iZXJUaWNrcz1KLmxlbmd0aDt0aGlzLm1pbj10aGlzLl90aWNrc1swXS52YWx1ZTt0aGlzLm1heD10aGlzLl90aWNrc1t0aGlzLm51bWJlclRpY2tzLTFdLnZhbHVlO3RoaXMudGlja0ludGVydmFsPSh0aGlzLm1heC10aGlzLm1pbikvKHRoaXMubnVtYmVyVGlja3MtMSk7aWYodGhpcy5fb3B0aW9ucy50aWNrSW50ZXJ2YWwpe3ZhciBvPXRoaXMuX29wdGlvbnMudGlja0ludGVydmFsO2ZvcihIPTA7SDx0aGlzLm51bWJlclRpY2tzO0grKyl7aWYoSCVvIT09MCl7dGhpcy5fdGlja3NbSF0uaXNNaW5vclRpY2s9dHJ1ZX19fWVsc2V7RT0odGhpcy5uYW1lLmNoYXJBdCgwKT09PSJ4Iik/dGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGg6dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0O3I9TWF0aC5yb3VuZCgyK0UvdGhpcy50aWNrU3BhY2luZ0ZhY3Rvcik7aWYodGhpcy5udW1iZXJUaWNrcz5yKXtJPXRoaXMubnVtYmVyVGlja3MtMTtmb3IoSD0yO0g8STtIKyspe2lmKEklSD09PTAmJkkvSDxyKXt6PUgtMTticmVha319aWYoeiE9PW51bGwpe3ZhciBwPTE7Zm9yKEg9MSxDPXRoaXMuX3RpY2tzLmxlbmd0aDtIPEM7SCsrKXtpZihwPD16KXt0aGlzLl90aWNrc1tIXS5zaG93PWZhbHNlO3ArPTF9ZWxzZXtwPTF9fX19fUk9W107aWYodGhpcy5jYXRlZ29yeSl7dGhpcy5fdGlja3NbMF0uc2hvd0dyaWRsaW5lPWZhbHNlO3RoaXMuX3RpY2tzWzBdLnNob3dNYXJrPWZhbHNlO2ZvcihIPXRoaXMuX3RpY2tzLmxlbmd0aC0xO0g+MDtILS0pe3Y9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO3YudmFsdWU9dGhpcy5fdGlja3NbSC0xXS52YWx1ZSt0aGlzLnRpY2tJbnRlcnZhbC8yO3YubGFiZWw9IiI7di5zaG93TGFiZWw9ZmFsc2U7di5heGlzPXRoaXMubmFtZTt0aGlzLl90aWNrc1tIXS5zaG93R3JpZGxpbmU9ZmFsc2U7dGhpcy5fdGlja3NbSF0uc2hvd01hcms9ZmFsc2U7dGhpcy5fdGlja3Muc3BsaWNlKEgsMCx2KX12PW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTt2LnZhbHVlPXRoaXMuX3RpY2tzWzBdLnZhbHVlLXRoaXMudGlja0ludGVydmFsLzI7di5sYWJlbD0iIjt2LnNob3dMYWJlbD1mYWxzZTt2LmF4aXM9dGhpcy5uYW1lO3RoaXMuX3RpY2tzLnVuc2hpZnQodik7dj1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7di52YWx1ZT10aGlzLl90aWNrc1t0aGlzLl90aWNrcy5sZW5ndGgtMV0udmFsdWUrdGhpcy50aWNrSW50ZXJ2YWwvMjt2LmxhYmVsPSIiO3Yuc2hvd0xhYmVsPWZhbHNlO3YuYXhpcz10aGlzLm5hbWU7dGhpcy5fdGlja3MucHVzaCh2KTt0aGlzLnRpY2tJbnRlcnZhbD10aGlzLnRpY2tJbnRlcnZhbC8yO3RoaXMubnVtYmVyVGlja3M9dGhpcy5fdGlja3MubGVuZ3RoO3RoaXMubWluPXRoaXMuX3RpY2tzWzBdLnZhbHVlO3RoaXMubWF4PXRoaXMuX3RpY2tzW3RoaXMuX3RpY2tzLmxlbmd0aC0xXS52YWx1ZX19ZWxzZXtpZih0aGlzLm5hbWUuY2hhckF0KDApPT09IngiKXtFPXRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoO3ZhciB3PU1hdGgubWF4KE0ubWF4LE1hdGguYWJzKE0ubWluKSk7dmFyIHU9TWF0aC5taW4oTS5taW4sLXcpO0I9dTtHPXc7eT1HLUI7aWYodGhpcy50aWNrT3B0aW9ucz09bnVsbHx8IXRoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nKXt0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZz10cnVlfW09MzA7Zz1NYXRoLm1heChFLG0rMSk7aj0oZy1tKS8zMDA7Tz1lLmpxcGxvdC5MaW5lYXJUaWNrR2VuZXJhdG9yKEIsRyxqKTtBPUIreSoodGhpcy5wYWRNaW4tMSk7Rj1HLXkqKHRoaXMucGFkTWF4LTEpO2lmKEI8QXx8Rz5GKXtBPUIteSoodGhpcy5wYWRNaW4tMSk7Rj1HK3kqKHRoaXMucGFkTWF4LTEpO089ZS5qcXBsb3QuTGluZWFyVGlja0dlbmVyYXRvcihBLEYsail9dGhpcy5taW49T1swXTt0aGlzLm1heD1PWzFdO3RoaXMubnVtYmVyVGlja3M9T1syXTt0aGlzLl9hdXRvRm9ybWF0U3RyaW5nPU9bM107dGhpcy50aWNrSW50ZXJ2YWw9T1s0XX1lbHNle0U9dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0O0I9TS5taW47Rz1NLm1heDt4PXRoaXMuX3Nlcmllc1swXTt0aGlzLl90aWNrcz1bXTt5PUctQjtpZihkW3ldKXt5Kz0xO0crPTF9dGhpcy5tYXg9Rzt0aGlzLm1pbj1CO3I9TWF0aC5yb3VuZCgyK0UvdGhpcy50aWNrU3BhY2luZ0ZhY3Rvcik7aWYoeSsxPD1yKXt0aGlzLm51bWJlclRpY2tzPXkrMTt0aGlzLnRpY2tJbnRlcnZhbD0xfWVsc2V7Zm9yKHZhciBIPXI7SD4xO0gtLSl7aWYoeS8oSC0xKT09PU1hdGgucm91bmQoeS8oSC0xKSkpe3RoaXMubnVtYmVyVGlja3M9SDt0aGlzLnRpY2tJbnRlcnZhbD15LyhILTEpO2JyZWFrfX19fWlmKHRoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nJiZ0aGlzLl9hdXRvRm9ybWF0U3RyaW5nIT0iIil7dGhpcy50aWNrT3B0aW9ucz10aGlzLnRpY2tPcHRpb25zfHx7fTt0aGlzLnRpY2tPcHRpb25zLmZvcm1hdFN0cmluZz10aGlzLl9hdXRvRm9ybWF0U3RyaW5nfXZhciBmO2ZvcihIPTA7SDx0aGlzLm51bWJlclRpY2tzO0grKyl7dGhpcy50aWNrT3B0aW9ucy5heGlzPXRoaXMubmFtZTtmPXRoaXMubWluK3RoaXMudGlja0ludGVydmFsKkg7aWYodGhpcy5uYW1lLmNoYXJBdCgwKT09PSJ4Iil7Zj1NYXRoLmFicyhmKX10aGlzLnRpY2tPcHRpb25zLnZhbHVlPXRoaXMubWluK3RoaXMudGlja0ludGVydmFsKkg7dj1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7di5sYWJlbD12LnByZWZpeCt2LmZvcm1hdHRlcih2LmZvcm1hdFN0cmluZyxmKTt0aGlzLl90aWNrcy5wdXNoKHYpO2lmKHRoaXMubmFtZS5jaGFyQXQoMCk9PT0ieCImJkQuYXhlcy55TWlkQXhpcy5zaG93JiZ0aGlzLnRpY2tPcHRpb25zLnZhbHVlPT09MCl7dGhpcy5fc3BsaXRBeGlzPXRydWU7dGhpcy5fc3BsaXRMZW5ndGg9RC5heGVzLnlNaWRBeGlzLmdldFdpZHRoKCk7dj1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7dGhpcy5fdGlja3MucHVzaCh2KTt2LnZhbHVlPXRoaXMubWF4LzIwMDB9fXY9bnVsbH19O2UuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXIucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe3ZhciBvPTA7dmFyIGo7dmFyIGc9MDt2YXIgbj0wO3ZhciBtO3ZhciBsO3ZhciBrO3ZhciBmPSh0aGlzLl9sYWJlbD09bnVsbCk/ZmFsc2U6dGhpcy5fbGFiZWwuc2hvdztpZih0aGlzLnNob3cpe2w9dGhpcy5fdGlja3M7YT1sLmxlbmd0aDtmb3IobT0wO208YTttKyspe2s9bFttXTtpZighay5fYnJlYWtUaWNrJiZrLnNob3cmJmsuc2hvd0xhYmVsJiYhay5pc01pbm9yVGljayl7aWYodGhpcy5uYW1lLmNoYXJBdCgwKT09PSJ4Iil7aj1rLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpfWVsc2V7aj1rLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSl9aWYoaj5vKXtvPWp9fX1pZih0aGlzLm5hbWU9PT0ieU1pZEF4aXMiKXtmb3IobT0wO208YTttKyspe2s9bFttXTtpZihrLl9lbGVtKXtqPShvLWsuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKSkvMjtrLl9lbGVtLmNzcygibGVmdCIsail9fX1rPW51bGw7bD1udWxsO2lmKGYpe2c9dGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTtuPXRoaXMuX2xhYmVsLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpfWlmKHRoaXMubmFtZT09PSJ4YXhpcyIpe289bytuO3RoaXMuX2VsZW0uY3NzKHtoZWlnaHQ6bysicHgiLGxlZnQ6IjBweCIsYm90dG9tOiIwcHgifSl9ZWxzZXtpZih0aGlzLm5hbWU9PT0ieDJheGlzIil7bz1vK247dGhpcy5fZWxlbS5jc3Moe2hlaWdodDpvKyJweCIsbGVmdDoiMHB4Iix0b3A6IjBweCJ9KX1lbHNle2lmKHRoaXMubmFtZT09PSJ5YXhpcyIpe289bytnO3RoaXMuX2VsZW0uY3NzKHt3aWR0aDpvKyJweCIsbGVmdDoiMHB4Iix0b3A6IjBweCJ9KTtpZihmJiZ0aGlzLl9sYWJlbC5jb25zdHJ1Y3Rvcj09ZS5qcXBsb3QuQXhpc0xhYmVsUmVuZGVyZXIpe3RoaXMuX2xhYmVsLl9lbGVtLmNzcygid2lkdGgiLGcrInB4Iil9fWVsc2V7aWYodGhpcy5uYW1lPT09InlNaWRBeGlzIil7dmFyIGo9by8yLWcvMjt0aGlzLl9lbGVtLmNzcyh7d2lkdGg6bysicHgiLHRvcDoiMHB4In0pO2lmKGYmJnRoaXMuX2xhYmVsLmNvbnN0cnVjdG9yPT1lLmpxcGxvdC5BeGlzTGFiZWxSZW5kZXJlcil7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKHt3aWR0aDpnLGxlZnQ6aix0b3A6MH0pfX1lbHNle289bytnO3RoaXMuX2VsZW0uY3NzKHt3aWR0aDpvKyJweCIscmlnaHQ6IjBweCIsdG9wOiIwcHgifSk7aWYoZiYmdGhpcy5fbGFiZWwuY29uc3RydWN0b3I9PWUuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoIndpZHRoIixnKyJweCIpfX19fX19fTtlLmpxcGxvdC5QeXJhbWlkQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5wYWNrPWZ1bmN0aW9uKGosZyl7aj1qfHx7fTtnPWd8fHRoaXMuX29mZnNldHM7dmFyIEI9dGhpcy5fdGlja3M7dmFyIHY9dGhpcy5tYXg7dmFyIHU9dGhpcy5taW47dmFyIG89Zy5tYXg7dmFyIG09Zy5taW47dmFyIHI9KHRoaXMuX2xhYmVsPT1udWxsKT9mYWxzZTp0aGlzLl9sYWJlbC5zaG93O2Zvcih2YXIgcyBpbiBqKXt0aGlzLl9lbGVtLmNzcyhzLGpbc10pfXRoaXMuX29mZnNldHM9Zzt2YXIgaz1vLW07dmFyIGw9di11O3ZhciB6PXRoaXMuX3NwbGl0TGVuZ3RoO2lmKHRoaXMuX3NwbGl0QXhpcyl7ay09dGhpcy5fc3BsaXRMZW5ndGg7dGhpcy5wMnU9ZnVuY3Rpb24oaCl7cmV0dXJuKGgtbSkqbC9rK3V9O3RoaXMudTJwPWZ1bmN0aW9uKGgpe2lmKGg8PTApe3JldHVybihoLXUpKmsvbCttfWVsc2V7cmV0dXJuKGgtdSkqay9sK20ren19O3RoaXMuc2VyaWVzX3UycD1mdW5jdGlvbihoKXtpZihoPD0wKXtyZXR1cm4oaC11KSprL2x9ZWxzZXtyZXR1cm4oaC11KSprL2wren19O3RoaXMuc2VyaWVzX3AydT1mdW5jdGlvbihoKXtyZXR1cm4gaCpsL2srdX19ZWxzZXt0aGlzLnAydT1mdW5jdGlvbihoKXtyZXR1cm4oaC1tKSpsL2srdX07dGhpcy51MnA9ZnVuY3Rpb24oaCl7cmV0dXJuKGgtdSkqay9sK219O2lmKHRoaXMubmFtZS5jaGFyQXQoMCk9PT0ieCIpe3RoaXMuc2VyaWVzX3UycD1mdW5jdGlvbihoKXtyZXR1cm4oaC11KSprL2x9O3RoaXMuc2VyaWVzX3AydT1mdW5jdGlvbihoKXtyZXR1cm4gaCpsL2srdX19ZWxzZXt0aGlzLnNlcmllc191MnA9ZnVuY3Rpb24oaCl7cmV0dXJuKGgtdikqay9sfTt0aGlzLnNlcmllc19wMnU9ZnVuY3Rpb24oaCl7cmV0dXJuIGgqbC9rK3Z9fX1pZih0aGlzLnNob3cpe2lmKHRoaXMubmFtZS5jaGFyQXQoMCk9PT0ieCIpe2Zvcih2YXIgeD0wO3g8Qi5sZW5ndGg7eCsrKXt2YXIgcT1CW3hdO2lmKHEuc2hvdyYmcS5zaG93TGFiZWwpe3ZhciBmO2lmKHEuY29uc3RydWN0b3I9PWUuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXImJnEuYW5nbGUpe3ZhciBBPSh0aGlzLm5hbWU9PSJ4YXhpcyIpPzE6LTE7c3dpdGNoKHEubGFiZWxQb3NpdGlvbil7Y2FzZSJhdXRvIjppZihBKnEuYW5nbGU8MCl7Zj0tcS5nZXRXaWR0aCgpK3EuX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4oLXEuX3RleHRSZW5kZXJlci5hbmdsZSkvMn1lbHNle2Y9LXEuX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4ocS5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWJyZWFrO2Nhc2UiZW5kIjpmPS1xLmdldFdpZHRoKCkrcS5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbigtcS5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yO2JyZWFrO2Nhc2Uic3RhcnQiOmY9LXEuX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4ocS5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yO2JyZWFrO2Nhc2UibWlkZGxlIjpmPS1xLmdldFdpZHRoKCkvMitxLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKC1xLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzI7YnJlYWs7ZGVmYXVsdDpmPS1xLmdldFdpZHRoKCkvMitxLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKC1xLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzI7YnJlYWt9fWVsc2V7Zj0tcS5nZXRXaWR0aCgpLzJ9dmFyIEM9dGhpcy51MnAocS52YWx1ZSkrZisicHgiO3EuX2VsZW0uY3NzKCJsZWZ0IixDKTtxLnBhY2soKX19aWYocil7dmFyIG49dGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoImxlZnQiLG0ray8yLW4vMisicHgiKTtpZih0aGlzLm5hbWU9PSJ4YXhpcyIpe3RoaXMuX2xhYmVsLl9lbGVtLmNzcygiYm90dG9tIiwiMHB4Iil9ZWxzZXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoInRvcCIsIjBweCIpfXRoaXMuX2xhYmVsLnBhY2soKX19ZWxzZXtmb3IodmFyIHg9MDt4PEIubGVuZ3RoO3grKyl7dmFyIHE9Qlt4XTtpZihxLnNob3cmJnEuc2hvd0xhYmVsJiYhcS5pc01pbm9yVGljayl7dmFyIGY7aWYocS5jb25zdHJ1Y3Rvcj09ZS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciYmcS5hbmdsZSl7dmFyIEE9KHRoaXMubmFtZT09InlheGlzIik/MTotMTtzd2l0Y2gocS5sYWJlbFBvc2l0aW9uKXtjYXNlImF1dG8iOmNhc2UiZW5kIjppZihBKnEuYW5nbGU8MCl7Zj0tcS5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLmNvcygtcS5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWVsc2V7Zj0tcS5nZXRIZWlnaHQoKStxLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguY29zKHEuX3RleHRSZW5kZXJlci5hbmdsZSkvMn1icmVhaztjYXNlInN0YXJ0IjppZihxLmFuZ2xlPjApe2Y9LXEuX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5jb3MoLXEuX3RleHRSZW5kZXJlci5hbmdsZSkvMn1lbHNle2Y9LXEuZ2V0SGVpZ2h0KCkrcS5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLmNvcyhxLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9YnJlYWs7Y2FzZSJtaWRkbGUiOmY9LXEuZ2V0SGVpZ2h0KCkvMjticmVhaztkZWZhdWx0OmY9LXEuZ2V0SGVpZ2h0KCkvMjticmVha319ZWxzZXtmPS1xLmdldEhlaWdodCgpLzJ9dmFyIEM9dGhpcy51MnAocS52YWx1ZSkrZisicHgiO3EuX2VsZW0uY3NzKCJ0b3AiLEMpO3EucGFjaygpfX1pZihyKXt2YXIgeT10aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTtpZih0aGlzLm5hbWUhPT0ieU1pZEF4aXMiKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoInRvcCIsby1rLzIteS8yKyJweCIpfWlmKHRoaXMubmFtZT09InlheGlzIil7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJsZWZ0IiwiMHB4Iil9ZWxzZXtpZih0aGlzLm5hbWUhPT0ieU1pZEF4aXMiKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoInJpZ2h0IiwiMHB4Iil9fXRoaXMuX2xhYmVsLnBhY2soKX19fUI9bnVsbH19KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.pyramidGridRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgeyAgICAgCiAgICAvLyBDbGFzczogJC5qcXBsb3QuQ2FudmFzR3JpZFJlbmRlcmVyCiAgICAvLyBUaGUgZGVmYXVsdCBqcVBsb3QgZ3JpZCByZW5kZXJlciwgY3JlYXRpbmcgYSBncmlkIG9uIGEgY2FudmFzIGVsZW1lbnQuCiAgICAvLyBUaGUgcmVuZGVyZXIgaGFzIG5vIGFkZGl0aW9uYWwgb3B0aW9ucyBiZXlvbmQgdGhlIDxHcmlkPiBjbGFzcy4KICAgICQuanFwbG90LlB5cmFtaWRHcmlkUmVuZGVyZXIgPSBmdW5jdGlvbigpewogICAgICAgICQuanFwbG90LkNhbnZhc0dyaWRSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKCiAgICAkLmpxcGxvdC5QeXJhbWlkR3JpZFJlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5DYW52YXNHcmlkUmVuZGVyZXIoKTsKICAgICQuanFwbG90LlB5cmFtaWRHcmlkUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuUHlyYW1pZEdyaWRSZW5kZXJlcjsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggY29udGV4dCBvZiBHcmlkIG9iamVjdAogICAgJC5qcXBsb3QuQ2FudmFzR3JpZFJlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgIHRoaXMuX2N0eDsKICAgICAgICB0aGlzLnBsb3RCYW5kcyA9IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UsCiAgICAgICAgICAgIGNvbG9yOiAncmdiKDIzMCwgMjE5LCAxNzkpJywKICAgICAgICAgICAgYXhpczogJ3knLAogICAgICAgICAgICBzdGFydDogbnVsbCwKICAgICAgICAgICAgaW50ZXJ2YWw6IDEwCiAgICAgICAgfTsKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgICAgICAvLyBzZXQgdGhlIHNoYWRvdyByZW5kZXJlciBvcHRpb25zCiAgICAgICAgdmFyIHNvcHRzID0ge2xpbmVKb2luOidtaXRlcicsIGxpbmVDYXA6J3JvdW5kJywgZmlsbDpmYWxzZSwgaXNhcmM6ZmFsc2UsIGFuZ2xlOnRoaXMuc2hhZG93QW5nbGUsIG9mZnNldDp0aGlzLnNoYWRvd09mZnNldCwgYWxwaGE6dGhpcy5zaGFkb3dBbHBoYSwgZGVwdGg6dGhpcy5zaGFkb3dEZXB0aCwgbGluZVdpZHRoOnRoaXMuc2hhZG93V2lkdGgsIGNsb3NlUGF0aDpmYWxzZSwgc3Ryb2tlU3R5bGU6dGhpcy5zaGFkb3dDb2xvcn07CiAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5pbml0KHNvcHRzKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LlB5cmFtaWRHcmlkUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbigpIHsKICAgICAgICB0aGlzLl9jdHggPSB0aGlzLl9lbGVtLmdldCgwKS5nZXRDb250ZXh0KCIyZCIpOwogICAgICAgIHZhciBjdHggPSB0aGlzLl9jdHg7CiAgICAgICAgdmFyIGF4ZXMgPSB0aGlzLl9heGVzOwogICAgICAgIHZhciB4cCA9IGF4ZXMueGF4aXMudTJwOwogICAgICAgIHZhciB5cCA9IGF4ZXMueU1pZEF4aXMudTJwOwogICAgICAgIHZhciB4bnVkZ2UgPSBheGVzLnhheGlzLm1heC8xMDAwLjA7CiAgICAgICAgdmFyIHhwMCA9IHhwKDApOwogICAgICAgIHZhciB4cG4gPSB4cCh4bnVkZ2UpOwogICAgICAgIHZhciBheCA9IFsneGF4aXMnLCAneWF4aXMnLCAneDJheGlzJywgJ3kyYXhpcycsJ3lNaWRBeGlzJ107CiAgICAgICAgLy8gQWRkIHRoZSBncmlkIG9udG8gdGhlIGdyaWQgY2FudmFzLiAgVGhpcyBpcyB0aGUgYm90dG9tIG1vc3QgbGF5ZXIuCiAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoLCB0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQpOwogICAgICAgIGN0eC5maWxsU3R5bGUgPSB0aGlzLmJhY2tncm91bmRDb2xvciB8fCB0aGlzLmJhY2tncm91bmQ7CgogICAgICAgIGN0eC5maWxsUmVjdCh0aGlzLl9sZWZ0LCB0aGlzLl90b3AsIHRoaXMuX3dpZHRoLCB0aGlzLl9oZWlnaHQpOwoKICAgICAgICBpZiAodGhpcy5wbG90QmFuZHMuc2hvdykgewogICAgICAgICAgICBjdHguc2F2ZSgpOwogICAgICAgICAgICB2YXIgcGIgPSB0aGlzLnBsb3RCYW5kczsKICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IHBiLmNvbG9yOwogICAgICAgICAgICB2YXIgYXhpczsKICAgICAgICAgICAgdmFyIHgsIHksIHcsIGg7CiAgICAgICAgICAgIC8vIGZpbmQgYXhpcyB0byB3b3JrIHdpdGgKICAgICAgICAgICAgaWYgKHBiLmF4aXMuY2hhckF0KDApID09PSAneCcpIHsKICAgICAgICAgICAgICAgIGlmIChheGVzLnhheGlzLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICBheGlzID0gYXhlcy54YXhpczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChwYi5heGlzLmNoYXJBdCgwKSA9PT0gJ3knKSB7CiAgICAgICAgICAgICAgICBpZiAoYXhlcy55YXhpcy5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgYXhpcyA9IGF4ZXMueWF4aXM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChheGVzLnkyYXhpcy5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgYXhpcyA9IGF4ZXMueTJheGlzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoYXhlcy55TWlkQXhpcy5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgYXhpcyA9IGF4ZXMueU1pZEF4aXM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChheGlzICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIC8vIGRyYXcgc29tZSByZWN0YW5nbGVzCiAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSBwYi5zdGFydDsKICAgICAgICAgICAgICAgIGlmIChzdGFydCA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gYXhpcy5taW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBheGlzLm1heDsgaSArPSAyICogcGIuaW50ZXJ2YWwpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYXhpcy5uYW1lLmNoYXJBdCgwKSA9PT0gJ3knKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHggPSB0aGlzLl9sZWZ0OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGkgKyBwYi5pbnRlcnZhbCkgPCBheGlzLm1heCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGF4aXMuc2VyaWVzX3UycChpICsgcGIuaW50ZXJ2YWwpICsgdGhpcy5fdG9wOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGF4aXMuc2VyaWVzX3UycChheGlzLm1heCkgKyB0aGlzLl90b3A7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdyA9IHRoaXMuX3JpZ2h0IC0gdGhpcy5fbGVmdDsKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGF4aXMuc2VyaWVzX3UycChzdGFydCkgLSBheGlzLnNlcmllc191MnAoc3RhcnQgKyBwYi5pbnRlcnZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5maWxsUmVjdCh4LCB5LCB3LCBoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gICAgIHkgPSAwOwogICAgICAgICAgICAgICAgICAgIC8vICAgICB4ID0gYXhpcy5zZXJpZXNfdTJwKGkpOwogICAgICAgICAgICAgICAgICAgIC8vICAgICBoID0gdGhpcy5faGVpZ2h0OwogICAgICAgICAgICAgICAgICAgIC8vICAgICB3ID0gYXhpcy5zZXJpZXNfdTJwKHN0YXJ0ICsgcGIuaW50ZXJ2YWwpIC0gYXhpcy5zZXJpZXNfdTJwKHN0YXJ0KTsKICAgICAgICAgICAgICAgICAgICAvLyB9CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgY3R4LmxpbmVKb2luID0gJ21pdGVyJzsKICAgICAgICBjdHgubGluZUNhcCA9ICdidXR0JzsKICAgICAgICBjdHgubGluZVdpZHRoID0gdGhpcy5ncmlkTGluZVdpZHRoOwogICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IHRoaXMuZ3JpZExpbmVDb2xvcjsKICAgICAgICB2YXIgYiwgZSwgcywgbTsKICAgICAgICBmb3IgKHZhciBpPTU7IGk+MDsgaS0tKSB7CiAgICAgICAgICAgIHZhciBuYW1lID0gYXhbaS0xXTsKICAgICAgICAgICAgdmFyIGF4aXMgPSBheGVzW25hbWVdOwogICAgICAgICAgICB2YXIgdGlja3MgPSBheGlzLl90aWNrczsKICAgICAgICAgICAgdmFyIG51bXRpY2tzID0gdGlja3MubGVuZ3RoOwogICAgICAgICAgICBpZiAoYXhpcy5zaG93KSB7CiAgICAgICAgICAgICAgICBpZiAoYXhpcy5kcmF3QmFzZWxpbmUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYm9wdHMgPSB7fTsKICAgICAgICAgICAgICAgICAgICBpZiAoYXhpcy5iYXNlbGluZVdpZHRoICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJvcHRzLmxpbmVXaWR0aCA9IGF4aXMuYmFzZWxpbmVXaWR0aDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGF4aXMuYmFzZWxpbmVDb2xvciAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBib3B0cy5zdHJva2VTdHlsZSA9IGF4aXMuYmFzZWxpbmVDb2xvcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChuYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3hheGlzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChheGVzLnlNaWRBeGlzLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZSAodGhpcy5fbGVmdCwgdGhpcy5fYm90dG9tLCB4cDAsIHRoaXMuX2JvdHRvbSwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lICh4cG4sIHRoaXMuX2JvdHRvbSwgdGhpcy5fcmlnaHQsIHRoaXMuX2JvdHRvbSwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmUgKHRoaXMuX2xlZnQsIHRoaXMuX2JvdHRvbSwgdGhpcy5fcmlnaHQsIHRoaXMuX2JvdHRvbSwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3lheGlzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lICh0aGlzLl9sZWZ0LCB0aGlzLl9ib3R0b20sIHRoaXMuX2xlZnQsIHRoaXMuX3RvcCwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3lNaWRBeGlzJzogICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lKHhwMCwgdGhpcy5fYm90dG9tLCB4cDAsIHRoaXMuX3RvcCwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmUoeHBuLCB0aGlzLl9ib3R0b20sIHhwbiwgdGhpcy5fdG9wLCBib3B0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAneDJheGlzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChheGVzLnlNaWRBeGlzLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZSAodGhpcy5fbGVmdCwgdGhpcy5fdG9wLCB4cDAsIHRoaXMuX3RvcCwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lICh4cG4sIHRoaXMuX3RvcCwgdGhpcy5fcmlnaHQsIHRoaXMuX3RvcCwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmUgKHRoaXMuX2xlZnQsIHRoaXMuX2JvdHRvbSwgdGhpcy5fcmlnaHQsIHRoaXMuX2JvdHRvbSwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3kyYXhpcyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZSAodGhpcy5fcmlnaHQsIHRoaXMuX2JvdHRvbSwgdGhpcy5fcmlnaHQsIHRoaXMuX3RvcCwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAodmFyIGo9bnVtdGlja3M7IGo+MDsgai0tKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aWNrc1tqLTFdOwogICAgICAgICAgICAgICAgICAgIGlmICh0LnNob3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9IE1hdGgucm91bmQoYXhpcy51MnAodC52YWx1ZSkpICsgMC41OwogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3hheGlzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSBncmlkIGxpbmUgaWYgd2Ugc2hvdWxkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvd0dyaWRsaW5lICYmIHRoaXMuZHJhd0dyaWRsaW5lcyAmJiAoIXQuaXNNaW5vclRpY2sgfHwgYXhpcy5zaG93TWlub3JUaWNrcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmUocG9zLCB0aGlzLl90b3AsIHBvcywgdGhpcy5fYm90dG9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB0aGUgbWFyawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LnNob3dNYXJrICYmIHQubWFyayAmJiAoIXQuaXNNaW5vclRpY2sgfHwgYXhpcy5zaG93TWlub3JUaWNrcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQubWFya1NpemU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSB0Lm1hcms7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSBNYXRoLnJvdW5kKGF4aXMudTJwKHQudmFsdWUpKSArIDAuNTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvdXRzaWRlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy5fYm90dG9tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9ib3R0b20rczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luc2lkZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX2JvdHRvbS1zOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9ib3R0b207CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjcm9zcyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX2JvdHRvbS1zOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9ib3R0b20rczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX2JvdHRvbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fYm90dG9tK3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB0aGUgc2hhZG93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNoYWRvdykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KGN0eCwgW1twb3MsYl0sW3BvcyxlXV0sIHtsaW5lQ2FwOididXR0JywgbGluZVdpZHRoOnRoaXMuZ3JpZExpbmVXaWR0aCwgb2Zmc2V0OnRoaXMuZ3JpZExpbmVXaWR0aCowLjc1LCBkZXB0aDoyLCBmaWxsOmZhbHNlLCBjbG9zZVBhdGg6ZmFsc2V9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lKHBvcywgYiwgcG9zLCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd5YXhpcyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB0aGUgZ3JpZCBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvd0dyaWRsaW5lICYmIHRoaXMuZHJhd0dyaWRsaW5lcyAmJiAoIXQuaXNNaW5vclRpY2sgfHwgYXhpcy5zaG93TWlub3JUaWNrcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmUodGhpcy5fcmlnaHQsIHBvcywgdGhpcy5fbGVmdCwgcG9zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgdGhlIG1hcmsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5zaG93TWFyayAmJiB0Lm1hcmsgJiYgKCF0LmlzTWlub3JUaWNrIHx8IGF4aXMuc2hvd01pbm9yVGlja3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0Lm1hcmtTaXplOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gdC5tYXJrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9zID0gTWF0aC5yb3VuZChheGlzLnUycCh0LnZhbHVlKSkgKyAwLjU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb3V0c2lkZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX2xlZnQtczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fbGVmdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luc2lkZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX2xlZnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX2xlZnQrczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Nyb3NzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy5fbGVmdC1zOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9sZWZ0K3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB0aGlzLl9sZWZ0LXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX2xlZnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSBzaGFkb3cKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hhZG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoY3R4LCBbW2IsIHBvc10sIFtlLCBwb3NdXSwge2xpbmVDYXA6J2J1dHQnLCBsaW5lV2lkdGg6dGhpcy5ncmlkTGluZVdpZHRoKjEuNSwgb2Zmc2V0OnRoaXMuZ3JpZExpbmVXaWR0aCowLjc1LCBmaWxsOmZhbHNlLCBjbG9zZVBhdGg6ZmFsc2V9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZShiLCBwb3MsIGUsIHBvcywge3N0cm9rZVN0eWxlOmF4aXMuYm9yZGVyQ29sb3J9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd5TWlkQXhpcyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB0aGUgZ3JpZCBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvd0dyaWRsaW5lICYmIHRoaXMuZHJhd0dyaWRsaW5lcyAmJiAoIXQuaXNNaW5vclRpY2sgfHwgYXhpcy5zaG93TWlub3JUaWNrcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmUodGhpcy5fbGVmdCwgcG9zLCB4cDAsIHBvcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lKHhwbiwgcG9zLCB0aGlzLl9yaWdodCwgcG9zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB0aGUgbWFyawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LnNob3dNYXJrICYmIHQubWFyayAmJiAoIXQuaXNNaW5vclRpY2sgfHwgYXhpcy5zaG93TWlub3JUaWNrcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQubWFya1NpemU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSB0Lm1hcms7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSBNYXRoLnJvdW5kKGF4aXMudTJwKHQudmFsdWUpKSArIDAuNTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB4cDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB4cDAgKyBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSBzaGFkb3cKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hhZG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoY3R4LCBbW2IsIHBvc10sIFtlLCBwb3NdXSwge2xpbmVDYXA6J2J1dHQnLCBsaW5lV2lkdGg6dGhpcy5ncmlkTGluZVdpZHRoKjEuNSwgb2Zmc2V0OnRoaXMuZ3JpZExpbmVXaWR0aCowLjc1LCBmaWxsOmZhbHNlLCBjbG9zZVBhdGg6ZmFsc2V9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZShiLCBwb3MsIGUsIHBvcywge3N0cm9rZVN0eWxlOmF4aXMuYm9yZGVyQ29sb3J9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB4cG4gLSBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0geHBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSBzaGFkb3cKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hhZG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoY3R4LCBbW2IsIHBvc10sIFtlLCBwb3NdXSwge2xpbmVDYXA6J2J1dHQnLCBsaW5lV2lkdGg6dGhpcy5ncmlkTGluZVdpZHRoKjEuNSwgb2Zmc2V0OnRoaXMuZ3JpZExpbmVXaWR0aCowLjc1LCBmaWxsOmZhbHNlLCBjbG9zZVBhdGg6ZmFsc2V9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZShiLCBwb3MsIGUsIHBvcywge3N0cm9rZVN0eWxlOmF4aXMuYm9yZGVyQ29sb3J9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd4MmF4aXMnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgdGhlIGdyaWQgbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LnNob3dHcmlkbGluZSAmJiB0aGlzLmRyYXdHcmlkbGluZXMgJiYgKCF0LmlzTWlub3JUaWNrIHx8IGF4aXMuc2hvd01pbm9yVGlja3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lKHBvcywgdGhpcy5fYm90dG9tLCBwb3MsIHRoaXMuX3RvcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSBtYXJrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvd01hcmsgJiYgdC5tYXJrICYmICghdC5pc01pbm9yVGljayB8fCBheGlzLnNob3dNaW5vclRpY2tzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5tYXJrU2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHQubWFyazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9IE1hdGgucm91bmQoYXhpcy51MnAodC52YWx1ZSkpICsgMC41OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ291dHNpZGUnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB0aGlzLl90b3AtczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fdG9wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5zaWRlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy5fdG9wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl90b3ArczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Nyb3NzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy5fdG9wLXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX3RvcCtzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy5fdG9wLXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX3RvcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgdGhlIHNoYWRvdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zaGFkb3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIFtbcG9zLGJdLFtwb3MsZV1dLCB7bGluZUNhcDonYnV0dCcsIGxpbmVXaWR0aDp0aGlzLmdyaWRMaW5lV2lkdGgsIG9mZnNldDp0aGlzLmdyaWRMaW5lV2lkdGgqMC43NSwgZGVwdGg6MiwgZmlsbDpmYWxzZSwgY2xvc2VQYXRoOmZhbHNlfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmUocG9zLCBiLCBwb3MsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3kyYXhpcyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB0aGUgZ3JpZCBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvd0dyaWRsaW5lICYmIHRoaXMuZHJhd0dyaWRsaW5lcyAmJiAoIXQuaXNNaW5vclRpY2sgfHwgYXhpcy5zaG93TWlub3JUaWNrcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmUodGhpcy5fbGVmdCwgcG9zLCB0aGlzLl9yaWdodCwgcG9zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgdGhlIG1hcmsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5zaG93TWFyayAmJiB0Lm1hcmsgJiYgKCF0LmlzTWlub3JUaWNrIHx8IGF4aXMuc2hvd01pbm9yVGlja3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0Lm1hcmtTaXplOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gdC5tYXJrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9zID0gTWF0aC5yb3VuZChheGlzLnUycCh0LnZhbHVlKSkgKyAwLjU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb3V0c2lkZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX3JpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9yaWdodCtzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5zaWRlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy5fcmlnaHQtczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fcmlnaHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjcm9zcyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX3JpZ2h0LXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX3JpZ2h0K3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB0aGlzLl9yaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fcmlnaHQrczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgdGhlIHNoYWRvdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zaGFkb3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIFtbYiwgcG9zXSwgW2UsIHBvc11dLCB7bGluZUNhcDonYnV0dCcsIGxpbmVXaWR0aDp0aGlzLmdyaWRMaW5lV2lkdGgqMS41LCBvZmZzZXQ6dGhpcy5ncmlkTGluZVdpZHRoKjAuNzUsIGZpbGw6ZmFsc2UsIGNsb3NlUGF0aDpmYWxzZX0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lKGIsIHBvcywgZSwgcG9zLCB7c3Ryb2tlU3R5bGU6YXhpcy5ib3JkZXJDb2xvcn0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0ID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBheGlzID0gbnVsbDsKICAgICAgICAgICAgdGlja3MgPSBudWxsOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICAgIAogICAgICAgIGZ1bmN0aW9uIGRyYXdMaW5lKGJ4LCBieSwgZXgsIGV5LCBvcHRzKSB7CiAgICAgICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgICAgIG9wdHMgPSBvcHRzIHx8IHt9OwogICAgICAgICAgICBpZiAob3B0cy5saW5lV2lkdGggPT0gbnVsbCB8fCBvcHRzLmxpbmVXaWR0aCAhPSAwKXsKICAgICAgICAgICAgICAgICQuZXh0ZW5kKHRydWUsIGN0eCwgb3B0cyk7CiAgICAgICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7CiAgICAgICAgICAgICAgICBjdHgubW92ZVRvKGJ4LCBieSk7CiAgICAgICAgICAgICAgICBjdHgubGluZVRvKGV4LCBleSk7CiAgICAgICAgICAgICAgICBjdHguc3Ryb2tlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKHRoaXMuc2hhZG93KSB7CiAgICAgICAgICAgIGlmIChheGVzLnlNaWRBeGlzLnNob3cpIHsKICAgICAgICAgICAgICAgIHZhciBwb2ludHMgPSBbW3RoaXMuX2xlZnQsIHRoaXMuX2JvdHRvbV0sIFt4cDAsIHRoaXMuX2JvdHRvbV1dOwogICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KGN0eCwgcG9pbnRzKTsKICAgICAgICAgICAgICAgIHZhciBwb2ludHMgPSBbW3hwbiwgdGhpcy5fYm90dG9tXSwgW3RoaXMuX3JpZ2h0LCB0aGlzLl9ib3R0b21dLCBbdGhpcy5fcmlnaHQsIHRoaXMuX3RvcF1dOwogICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KGN0eCwgcG9pbnRzKTsKICAgICAgICAgICAgICAgIHZhciBwb2ludHMgPSBbW3hwMCwgdGhpcy5fYm90dG9tXSwgW3hwMCwgdGhpcy5fdG9wXV07CiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoY3R4LCBwb2ludHMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdmFyIHBvaW50cyA9IFtbdGhpcy5fbGVmdCwgdGhpcy5fYm90dG9tXSwgW3RoaXMuX3JpZ2h0LCB0aGlzLl9ib3R0b21dLCBbdGhpcy5fcmlnaHQsIHRoaXMuX3RvcF1dOwogICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KGN0eCwgcG9pbnRzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBOb3cgZHJhdyBib3JkZXIgYXJvdW5kIGdyaWQuICBVc2UgYXhpcyBib3JkZXIgZGVmaW5pdGlvbnMuIHN0YXJ0IGF0CiAgICAgICAgLy8gdXBwZXIgbGVmdCBhbmQgZ28gY2xvY2t3aXNlLgogICAgICAgIGlmICh0aGlzLmJvcmRlcldpZHRoICE9IDAgJiYgdGhpcy5kcmF3Qm9yZGVyKSB7CiAgICAgICAgICAgIGlmIChheGVzLnlNaWRBeGlzLnNob3cpIHsKICAgICAgICAgICAgICAgIGRyYXdMaW5lICh0aGlzLl9sZWZ0LCB0aGlzLl90b3AsIHhwMCwgdGhpcy5fdG9wLCB7bGluZUNhcDoncm91bmQnLCBzdHJva2VTdHlsZTpheGVzLngyYXhpcy5ib3JkZXJDb2xvciwgbGluZVdpZHRoOmF4ZXMueDJheGlzLmJvcmRlcldpZHRofSk7CiAgICAgICAgICAgICAgICBkcmF3TGluZSAoeHBuLCB0aGlzLl90b3AsIHRoaXMuX3JpZ2h0LCB0aGlzLl90b3AsIHtsaW5lQ2FwOidyb3VuZCcsIHN0cm9rZVN0eWxlOmF4ZXMueDJheGlzLmJvcmRlckNvbG9yLCBsaW5lV2lkdGg6YXhlcy54MmF4aXMuYm9yZGVyV2lkdGh9KTsKICAgICAgICAgICAgICAgIGRyYXdMaW5lICh0aGlzLl9yaWdodCwgdGhpcy5fdG9wLCB0aGlzLl9yaWdodCwgdGhpcy5fYm90dG9tLCB7bGluZUNhcDoncm91bmQnLCBzdHJva2VTdHlsZTpheGVzLnkyYXhpcy5ib3JkZXJDb2xvciwgbGluZVdpZHRoOmF4ZXMueTJheGlzLmJvcmRlcldpZHRofSk7CiAgICAgICAgICAgICAgICBkcmF3TGluZSAodGhpcy5fcmlnaHQsIHRoaXMuX2JvdHRvbSwgeHBuLCB0aGlzLl9ib3R0b20sIHtsaW5lQ2FwOidyb3VuZCcsIHN0cm9rZVN0eWxlOmF4ZXMueGF4aXMuYm9yZGVyQ29sb3IsIGxpbmVXaWR0aDpheGVzLnhheGlzLmJvcmRlcldpZHRofSk7CiAgICAgICAgICAgICAgICBkcmF3TGluZSAoeHAwLCB0aGlzLl9ib3R0b20sIHRoaXMuX2xlZnQsIHRoaXMuX2JvdHRvbSwge2xpbmVDYXA6J3JvdW5kJywgc3Ryb2tlU3R5bGU6YXhlcy54YXhpcy5ib3JkZXJDb2xvciwgbGluZVdpZHRoOmF4ZXMueGF4aXMuYm9yZGVyV2lkdGh9KTsKICAgICAgICAgICAgICAgIGRyYXdMaW5lICh0aGlzLl9sZWZ0LCB0aGlzLl9ib3R0b20sIHRoaXMuX2xlZnQsIHRoaXMuX3RvcCwge2xpbmVDYXA6J3JvdW5kJywgc3Ryb2tlU3R5bGU6YXhlcy55YXhpcy5ib3JkZXJDb2xvciwgbGluZVdpZHRoOmF4ZXMueWF4aXMuYm9yZGVyV2lkdGh9KTsKICAgICAgICAgICAgICAgIGRyYXdMaW5lICh4cDAsIHRoaXMuX2JvdHRvbSwgeHAwLCB0aGlzLl90b3AsIHtsaW5lQ2FwOidyb3VuZCcsIHN0cm9rZVN0eWxlOmF4ZXMueWF4aXMuYm9yZGVyQ29sb3IsIGxpbmVXaWR0aDpheGVzLnlheGlzLmJvcmRlcldpZHRofSk7CiAgICAgICAgICAgICAgICBkcmF3TGluZSAoeHBuLCB0aGlzLl9ib3R0b20sIHhwbiwgdGhpcy5fdG9wLCB7bGluZUNhcDoncm91bmQnLCBzdHJva2VTdHlsZTpheGVzLnlheGlzLmJvcmRlckNvbG9yLCBsaW5lV2lkdGg6YXhlcy55YXhpcy5ib3JkZXJXaWR0aH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgZHJhd0xpbmUgKHRoaXMuX2xlZnQsIHRoaXMuX3RvcCwgdGhpcy5fcmlnaHQsIHRoaXMuX3RvcCwge2xpbmVDYXA6J3JvdW5kJywgc3Ryb2tlU3R5bGU6YXhlcy54MmF4aXMuYm9yZGVyQ29sb3IsIGxpbmVXaWR0aDpheGVzLngyYXhpcy5ib3JkZXJXaWR0aH0pOwogICAgICAgICAgICAgICAgZHJhd0xpbmUgKHRoaXMuX3JpZ2h0LCB0aGlzLl90b3AsIHRoaXMuX3JpZ2h0LCB0aGlzLl9ib3R0b20sIHtsaW5lQ2FwOidyb3VuZCcsIHN0cm9rZVN0eWxlOmF4ZXMueTJheGlzLmJvcmRlckNvbG9yLCBsaW5lV2lkdGg6YXhlcy55MmF4aXMuYm9yZGVyV2lkdGh9KTsKICAgICAgICAgICAgICAgIGRyYXdMaW5lICh0aGlzLl9yaWdodCwgdGhpcy5fYm90dG9tLCB0aGlzLl9sZWZ0LCB0aGlzLl9ib3R0b20sIHtsaW5lQ2FwOidyb3VuZCcsIHN0cm9rZVN0eWxlOmF4ZXMueGF4aXMuYm9yZGVyQ29sb3IsIGxpbmVXaWR0aDpheGVzLnhheGlzLmJvcmRlcldpZHRofSk7CiAgICAgICAgICAgICAgICBkcmF3TGluZSAodGhpcy5fbGVmdCwgdGhpcy5fYm90dG9tLCB0aGlzLl9sZWZ0LCB0aGlzLl90b3AsIHtsaW5lQ2FwOidyb3VuZCcsIHN0cm9rZVN0eWxlOmF4ZXMueWF4aXMuYm9yZGVyQ29sb3IsIGxpbmVXaWR0aDpheGVzLnlheGlzLmJvcmRlcldpZHRofSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gY3R4LmxpbmVXaWR0aCA9IHRoaXMuYm9yZGVyV2lkdGg7CiAgICAgICAgLy8gY3R4LnN0cm9rZVN0eWxlID0gdGhpcy5ib3JkZXJDb2xvcjsKICAgICAgICAvLyBjdHguc3Ryb2tlUmVjdCh0aGlzLl9sZWZ0LCB0aGlzLl90b3AsIHRoaXMuX3dpZHRoLCB0aGlzLl9oZWlnaHQpOwogICAgICAgIAogICAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICAgICAgY3R4ID0gIG51bGw7CiAgICAgICAgYXhlcyA9IG51bGw7CiAgICB9Owp9KShqUXVlcnkpOyA=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.pyramidGridRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGEpe2EuanFwbG90LlB5cmFtaWRHcmlkUmVuZGVyZXI9ZnVuY3Rpb24oKXthLmpxcGxvdC5DYW52YXNHcmlkUmVuZGVyZXIuY2FsbCh0aGlzKX07YS5qcXBsb3QuUHlyYW1pZEdyaWRSZW5kZXJlci5wcm90b3R5cGU9bmV3IGEuanFwbG90LkNhbnZhc0dyaWRSZW5kZXJlcigpO2EuanFwbG90LlB5cmFtaWRHcmlkUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWEuanFwbG90LlB5cmFtaWRHcmlkUmVuZGVyZXI7YS5qcXBsb3QuQ2FudmFzR3JpZFJlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGMpe3RoaXMuX2N0eDt0aGlzLnBsb3RCYW5kcz17c2hvdzpmYWxzZSxjb2xvcjoicmdiKDIzMCwgMjE5LCAxNzkpIixheGlzOiJ5IixzdGFydDpudWxsLGludGVydmFsOjEwfTthLmV4dGVuZCh0cnVlLHRoaXMsYyk7dmFyIGI9e2xpbmVKb2luOiJtaXRlciIsbGluZUNhcDoicm91bmQiLGZpbGw6ZmFsc2UsaXNhcmM6ZmFsc2UsYW5nbGU6dGhpcy5zaGFkb3dBbmdsZSxvZmZzZXQ6dGhpcy5zaGFkb3dPZmZzZXQsYWxwaGE6dGhpcy5zaGFkb3dBbHBoYSxkZXB0aDp0aGlzLnNoYWRvd0RlcHRoLGxpbmVXaWR0aDp0aGlzLnNoYWRvd1dpZHRoLGNsb3NlUGF0aDpmYWxzZSxzdHJva2VTdHlsZTp0aGlzLnNoYWRvd0NvbG9yfTt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmluaXQoYil9O2EuanFwbG90LlB5cmFtaWRHcmlkUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oKXt0aGlzLl9jdHg9dGhpcy5fZWxlbS5nZXQoMCkuZ2V0Q29udGV4dCgiMmQiKTt2YXIgRD10aGlzLl9jdHg7dmFyIEc9dGhpcy5fYXhlczt2YXIgcT1HLnhheGlzLnUycDt2YXIgSj1HLnlNaWRBeGlzLnUycDt2YXIgbD1HLnhheGlzLm1heC8xMDAwO3ZhciB1PXEoMCk7dmFyIGY9cShsKTt2YXIgcj1bInhheGlzIiwieWF4aXMiLCJ4MmF4aXMiLCJ5MmF4aXMiLCJ5TWlkQXhpcyJdO0Quc2F2ZSgpO0QuY2xlYXJSZWN0KDAsMCx0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCx0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQpO0QuZmlsbFN0eWxlPXRoaXMuYmFja2dyb3VuZENvbG9yfHx0aGlzLmJhY2tncm91bmQ7RC5maWxsUmVjdCh0aGlzLl9sZWZ0LHRoaXMuX3RvcCx0aGlzLl93aWR0aCx0aGlzLl9oZWlnaHQpO2lmKHRoaXMucGxvdEJhbmRzLnNob3cpe0Quc2F2ZSgpO3ZhciBjPXRoaXMucGxvdEJhbmRzO0QuZmlsbFN0eWxlPWMuY29sb3I7dmFyIGQ7dmFyIG8sbixwLEk7aWYoYy5heGlzLmNoYXJBdCgwKT09PSJ4Iil7aWYoRy54YXhpcy5zaG93KXtkPUcueGF4aXN9fWVsc2V7aWYoYy5heGlzLmNoYXJBdCgwKT09PSJ5Iil7aWYoRy55YXhpcy5zaG93KXtkPUcueWF4aXN9ZWxzZXtpZihHLnkyYXhpcy5zaG93KXtkPUcueTJheGlzfWVsc2V7aWYoRy55TWlkQXhpcy5zaG93KXtkPUcueU1pZEF4aXN9fX19fWlmKGQhPT11bmRlZmluZWQpe3ZhciBnPWMuc3RhcnQ7aWYoZz09PW51bGwpe2c9ZC5taW59Zm9yKHZhciBIPWc7SDxkLm1heDtIKz0yKmMuaW50ZXJ2YWwpe2lmKGQubmFtZS5jaGFyQXQoMCk9PT0ieSIpe289dGhpcy5fbGVmdDtpZigoSCtjLmludGVydmFsKTxkLm1heCl7bj1kLnNlcmllc191MnAoSCtjLmludGVydmFsKSt0aGlzLl90b3B9ZWxzZXtuPWQuc2VyaWVzX3UycChkLm1heCkrdGhpcy5fdG9wfXA9dGhpcy5fcmlnaHQtdGhpcy5fbGVmdDtJPWQuc2VyaWVzX3UycChnKS1kLnNlcmllc191MnAoZytjLmludGVydmFsKTtELmZpbGxSZWN0KG8sbixwLEkpfX19RC5yZXN0b3JlKCl9RC5zYXZlKCk7RC5saW5lSm9pbj0ibWl0ZXIiO0QubGluZUNhcD0iYnV0dCI7RC5saW5lV2lkdGg9dGhpcy5ncmlkTGluZVdpZHRoO0Quc3Ryb2tlU3R5bGU9dGhpcy5ncmlkTGluZUNvbG9yO3ZhciBMLEssQSxDO2Zvcih2YXIgSD01O0g+MDtILS0pe3ZhciBPPXJbSC0xXTt2YXIgZD1HW09dO3ZhciBNPWQuX3RpY2tzO3ZhciBCPU0ubGVuZ3RoO2lmKGQuc2hvdyl7aWYoZC5kcmF3QmFzZWxpbmUpe3ZhciBOPXt9O2lmKGQuYmFzZWxpbmVXaWR0aCE9PW51bGwpe04ubGluZVdpZHRoPWQuYmFzZWxpbmVXaWR0aH1pZihkLmJhc2VsaW5lQ29sb3IhPT1udWxsKXtOLnN0cm9rZVN0eWxlPWQuYmFzZWxpbmVDb2xvcn1zd2l0Y2goTyl7Y2FzZSJ4YXhpcyI6aWYoRy55TWlkQXhpcy5zaG93KXt6KHRoaXMuX2xlZnQsdGhpcy5fYm90dG9tLHUsdGhpcy5fYm90dG9tLE4pO3ooZix0aGlzLl9ib3R0b20sdGhpcy5fcmlnaHQsdGhpcy5fYm90dG9tLE4pfWVsc2V7eih0aGlzLl9sZWZ0LHRoaXMuX2JvdHRvbSx0aGlzLl9yaWdodCx0aGlzLl9ib3R0b20sTil9YnJlYWs7Y2FzZSJ5YXhpcyI6eih0aGlzLl9sZWZ0LHRoaXMuX2JvdHRvbSx0aGlzLl9sZWZ0LHRoaXMuX3RvcCxOKTticmVhaztjYXNlInlNaWRBeGlzIjp6KHUsdGhpcy5fYm90dG9tLHUsdGhpcy5fdG9wLE4pO3ooZix0aGlzLl9ib3R0b20sZix0aGlzLl90b3AsTik7YnJlYWs7Y2FzZSJ4MmF4aXMiOmlmKEcueU1pZEF4aXMuc2hvdyl7eih0aGlzLl9sZWZ0LHRoaXMuX3RvcCx1LHRoaXMuX3RvcCxOKTt6KGYsdGhpcy5fdG9wLHRoaXMuX3JpZ2h0LHRoaXMuX3RvcCxOKX1lbHNle3oodGhpcy5fbGVmdCx0aGlzLl9ib3R0b20sdGhpcy5fcmlnaHQsdGhpcy5fYm90dG9tLE4pfWJyZWFrO2Nhc2UieTJheGlzIjp6KHRoaXMuX3JpZ2h0LHRoaXMuX2JvdHRvbSx0aGlzLl9yaWdodCx0aGlzLl90b3AsTik7YnJlYWt9fWZvcih2YXIgRT1CO0U+MDtFLS0pe3ZhciB2PU1bRS0xXTtpZih2LnNob3cpe3ZhciBrPU1hdGgucm91bmQoZC51MnAodi52YWx1ZSkpKzAuNTtzd2l0Y2goTyl7Y2FzZSJ4YXhpcyI6aWYodi5zaG93R3JpZGxpbmUmJnRoaXMuZHJhd0dyaWRsaW5lcyYmKCF2LmlzTWlub3JUaWNrfHxkLnNob3dNaW5vclRpY2tzKSl7eihrLHRoaXMuX3RvcCxrLHRoaXMuX2JvdHRvbSl9aWYodi5zaG93TWFyayYmdi5tYXJrJiYoIXYuaXNNaW5vclRpY2t8fGQuc2hvd01pbm9yVGlja3MpKXtBPXYubWFya1NpemU7Qz12Lm1hcms7dmFyIGs9TWF0aC5yb3VuZChkLnUycCh2LnZhbHVlKSkrMC41O3N3aXRjaChDKXtjYXNlIm91dHNpZGUiOkw9dGhpcy5fYm90dG9tO0s9dGhpcy5fYm90dG9tK0E7YnJlYWs7Y2FzZSJpbnNpZGUiOkw9dGhpcy5fYm90dG9tLUE7Sz10aGlzLl9ib3R0b207YnJlYWs7Y2FzZSJjcm9zcyI6TD10aGlzLl9ib3R0b20tQTtLPXRoaXMuX2JvdHRvbStBO2JyZWFrO2RlZmF1bHQ6TD10aGlzLl9ib3R0b207Sz10aGlzLl9ib3R0b20rQTticmVha31pZih0aGlzLnNoYWRvdyl7dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KEQsW1trLExdLFtrLEtdXSx7bGluZUNhcDoiYnV0dCIsbGluZVdpZHRoOnRoaXMuZ3JpZExpbmVXaWR0aCxvZmZzZXQ6dGhpcy5ncmlkTGluZVdpZHRoKjAuNzUsZGVwdGg6MixmaWxsOmZhbHNlLGNsb3NlUGF0aDpmYWxzZX0pfXooayxMLGssSyl9YnJlYWs7Y2FzZSJ5YXhpcyI6aWYodi5zaG93R3JpZGxpbmUmJnRoaXMuZHJhd0dyaWRsaW5lcyYmKCF2LmlzTWlub3JUaWNrfHxkLnNob3dNaW5vclRpY2tzKSl7eih0aGlzLl9yaWdodCxrLHRoaXMuX2xlZnQsayl9aWYodi5zaG93TWFyayYmdi5tYXJrJiYoIXYuaXNNaW5vclRpY2t8fGQuc2hvd01pbm9yVGlja3MpKXtBPXYubWFya1NpemU7Qz12Lm1hcms7dmFyIGs9TWF0aC5yb3VuZChkLnUycCh2LnZhbHVlKSkrMC41O3N3aXRjaChDKXtjYXNlIm91dHNpZGUiOkw9dGhpcy5fbGVmdC1BO0s9dGhpcy5fbGVmdDticmVhaztjYXNlImluc2lkZSI6TD10aGlzLl9sZWZ0O0s9dGhpcy5fbGVmdCtBO2JyZWFrO2Nhc2UiY3Jvc3MiOkw9dGhpcy5fbGVmdC1BO0s9dGhpcy5fbGVmdCtBO2JyZWFrO2RlZmF1bHQ6TD10aGlzLl9sZWZ0LUE7Sz10aGlzLl9sZWZ0O2JyZWFrfWlmKHRoaXMuc2hhZG93KXt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoRCxbW0wsa10sW0ssa11dLHtsaW5lQ2FwOiJidXR0IixsaW5lV2lkdGg6dGhpcy5ncmlkTGluZVdpZHRoKjEuNSxvZmZzZXQ6dGhpcy5ncmlkTGluZVdpZHRoKjAuNzUsZmlsbDpmYWxzZSxjbG9zZVBhdGg6ZmFsc2V9KX16KEwsayxLLGsse3N0cm9rZVN0eWxlOmQuYm9yZGVyQ29sb3J9KX1icmVhaztjYXNlInlNaWRBeGlzIjppZih2LnNob3dHcmlkbGluZSYmdGhpcy5kcmF3R3JpZGxpbmVzJiYoIXYuaXNNaW5vclRpY2t8fGQuc2hvd01pbm9yVGlja3MpKXt6KHRoaXMuX2xlZnQsayx1LGspO3ooZixrLHRoaXMuX3JpZ2h0LGspfWlmKHYuc2hvd01hcmsmJnYubWFyayYmKCF2LmlzTWlub3JUaWNrfHxkLnNob3dNaW5vclRpY2tzKSl7QT12Lm1hcmtTaXplO0M9di5tYXJrO3ZhciBrPU1hdGgucm91bmQoZC51MnAodi52YWx1ZSkpKzAuNTtMPXU7Sz11K0E7aWYodGhpcy5zaGFkb3cpe3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhELFtbTCxrXSxbSyxrXV0se2xpbmVDYXA6ImJ1dHQiLGxpbmVXaWR0aDp0aGlzLmdyaWRMaW5lV2lkdGgqMS41LG9mZnNldDp0aGlzLmdyaWRMaW5lV2lkdGgqMC43NSxmaWxsOmZhbHNlLGNsb3NlUGF0aDpmYWxzZX0pfXooTCxrLEssayx7c3Ryb2tlU3R5bGU6ZC5ib3JkZXJDb2xvcn0pO0w9Zi1BO0s9ZjtpZih0aGlzLnNoYWRvdyl7dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KEQsW1tMLGtdLFtLLGtdXSx7bGluZUNhcDoiYnV0dCIsbGluZVdpZHRoOnRoaXMuZ3JpZExpbmVXaWR0aCoxLjUsb2Zmc2V0OnRoaXMuZ3JpZExpbmVXaWR0aCowLjc1LGZpbGw6ZmFsc2UsY2xvc2VQYXRoOmZhbHNlfSl9eihMLGssSyxrLHtzdHJva2VTdHlsZTpkLmJvcmRlckNvbG9yfSl9YnJlYWs7Y2FzZSJ4MmF4aXMiOmlmKHYuc2hvd0dyaWRsaW5lJiZ0aGlzLmRyYXdHcmlkbGluZXMmJighdi5pc01pbm9yVGlja3x8ZC5zaG93TWlub3JUaWNrcykpe3ooayx0aGlzLl9ib3R0b20sayx0aGlzLl90b3ApfWlmKHYuc2hvd01hcmsmJnYubWFyayYmKCF2LmlzTWlub3JUaWNrfHxkLnNob3dNaW5vclRpY2tzKSl7QT12Lm1hcmtTaXplO0M9di5tYXJrO3ZhciBrPU1hdGgucm91bmQoZC51MnAodi52YWx1ZSkpKzAuNTtzd2l0Y2goQyl7Y2FzZSJvdXRzaWRlIjpMPXRoaXMuX3RvcC1BO0s9dGhpcy5fdG9wO2JyZWFrO2Nhc2UiaW5zaWRlIjpMPXRoaXMuX3RvcDtLPXRoaXMuX3RvcCtBO2JyZWFrO2Nhc2UiY3Jvc3MiOkw9dGhpcy5fdG9wLUE7Sz10aGlzLl90b3ArQTticmVhaztkZWZhdWx0Okw9dGhpcy5fdG9wLUE7Sz10aGlzLl90b3A7YnJlYWt9aWYodGhpcy5zaGFkb3cpe3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhELFtbayxMXSxbayxLXV0se2xpbmVDYXA6ImJ1dHQiLGxpbmVXaWR0aDp0aGlzLmdyaWRMaW5lV2lkdGgsb2Zmc2V0OnRoaXMuZ3JpZExpbmVXaWR0aCowLjc1LGRlcHRoOjIsZmlsbDpmYWxzZSxjbG9zZVBhdGg6ZmFsc2V9KX16KGssTCxrLEspfWJyZWFrO2Nhc2UieTJheGlzIjppZih2LnNob3dHcmlkbGluZSYmdGhpcy5kcmF3R3JpZGxpbmVzJiYoIXYuaXNNaW5vclRpY2t8fGQuc2hvd01pbm9yVGlja3MpKXt6KHRoaXMuX2xlZnQsayx0aGlzLl9yaWdodCxrKX1pZih2LnNob3dNYXJrJiZ2Lm1hcmsmJighdi5pc01pbm9yVGlja3x8ZC5zaG93TWlub3JUaWNrcykpe0E9di5tYXJrU2l6ZTtDPXYubWFyazt2YXIgaz1NYXRoLnJvdW5kKGQudTJwKHYudmFsdWUpKSswLjU7c3dpdGNoKEMpe2Nhc2Uib3V0c2lkZSI6TD10aGlzLl9yaWdodDtLPXRoaXMuX3JpZ2h0K0E7YnJlYWs7Y2FzZSJpbnNpZGUiOkw9dGhpcy5fcmlnaHQtQTtLPXRoaXMuX3JpZ2h0O2JyZWFrO2Nhc2UiY3Jvc3MiOkw9dGhpcy5fcmlnaHQtQTtLPXRoaXMuX3JpZ2h0K0E7YnJlYWs7ZGVmYXVsdDpMPXRoaXMuX3JpZ2h0O0s9dGhpcy5fcmlnaHQrQTticmVha31pZih0aGlzLnNoYWRvdyl7dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KEQsW1tMLGtdLFtLLGtdXSx7bGluZUNhcDoiYnV0dCIsbGluZVdpZHRoOnRoaXMuZ3JpZExpbmVXaWR0aCoxLjUsb2Zmc2V0OnRoaXMuZ3JpZExpbmVXaWR0aCowLjc1LGZpbGw6ZmFsc2UsY2xvc2VQYXRoOmZhbHNlfSl9eihMLGssSyxrLHtzdHJva2VTdHlsZTpkLmJvcmRlckNvbG9yfSl9YnJlYWs7ZGVmYXVsdDpicmVha319fXY9bnVsbH1kPW51bGw7TT1udWxsfUQucmVzdG9yZSgpO2Z1bmN0aW9uIHooaixpLGUsYixoKXtELnNhdmUoKTtoPWh8fHt9O2lmKGgubGluZVdpZHRoPT1udWxsfHxoLmxpbmVXaWR0aCE9MCl7YS5leHRlbmQodHJ1ZSxELGgpO0QuYmVnaW5QYXRoKCk7RC5tb3ZlVG8oaixpKTtELmxpbmVUbyhlLGIpO0Quc3Ryb2tlKCl9RC5yZXN0b3JlKCl9aWYodGhpcy5zaGFkb3cpe2lmKEcueU1pZEF4aXMuc2hvdyl7dmFyIEY9W1t0aGlzLl9sZWZ0LHRoaXMuX2JvdHRvbV0sW3UsdGhpcy5fYm90dG9tXV07dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KEQsRik7dmFyIEY9W1tmLHRoaXMuX2JvdHRvbV0sW3RoaXMuX3JpZ2h0LHRoaXMuX2JvdHRvbV0sW3RoaXMuX3JpZ2h0LHRoaXMuX3RvcF1dO3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhELEYpO3ZhciBGPVtbdSx0aGlzLl9ib3R0b21dLFt1LHRoaXMuX3RvcF1dO3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhELEYpfWVsc2V7dmFyIEY9W1t0aGlzLl9sZWZ0LHRoaXMuX2JvdHRvbV0sW3RoaXMuX3JpZ2h0LHRoaXMuX2JvdHRvbV0sW3RoaXMuX3JpZ2h0LHRoaXMuX3RvcF1dO3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhELEYpfX1pZih0aGlzLmJvcmRlcldpZHRoIT0wJiZ0aGlzLmRyYXdCb3JkZXIpe2lmKEcueU1pZEF4aXMuc2hvdyl7eih0aGlzLl9sZWZ0LHRoaXMuX3RvcCx1LHRoaXMuX3RvcCx7bGluZUNhcDoicm91bmQiLHN0cm9rZVN0eWxlOkcueDJheGlzLmJvcmRlckNvbG9yLGxpbmVXaWR0aDpHLngyYXhpcy5ib3JkZXJXaWR0aH0pO3ooZix0aGlzLl90b3AsdGhpcy5fcmlnaHQsdGhpcy5fdG9wLHtsaW5lQ2FwOiJyb3VuZCIsc3Ryb2tlU3R5bGU6Ry54MmF4aXMuYm9yZGVyQ29sb3IsbGluZVdpZHRoOkcueDJheGlzLmJvcmRlcldpZHRofSk7eih0aGlzLl9yaWdodCx0aGlzLl90b3AsdGhpcy5fcmlnaHQsdGhpcy5fYm90dG9tLHtsaW5lQ2FwOiJyb3VuZCIsc3Ryb2tlU3R5bGU6Ry55MmF4aXMuYm9yZGVyQ29sb3IsbGluZVdpZHRoOkcueTJheGlzLmJvcmRlcldpZHRofSk7eih0aGlzLl9yaWdodCx0aGlzLl9ib3R0b20sZix0aGlzLl9ib3R0b20se2xpbmVDYXA6InJvdW5kIixzdHJva2VTdHlsZTpHLnhheGlzLmJvcmRlckNvbG9yLGxpbmVXaWR0aDpHLnhheGlzLmJvcmRlcldpZHRofSk7eih1LHRoaXMuX2JvdHRvbSx0aGlzLl9sZWZ0LHRoaXMuX2JvdHRvbSx7bGluZUNhcDoicm91bmQiLHN0cm9rZVN0eWxlOkcueGF4aXMuYm9yZGVyQ29sb3IsbGluZVdpZHRoOkcueGF4aXMuYm9yZGVyV2lkdGh9KTt6KHRoaXMuX2xlZnQsdGhpcy5fYm90dG9tLHRoaXMuX2xlZnQsdGhpcy5fdG9wLHtsaW5lQ2FwOiJyb3VuZCIsc3Ryb2tlU3R5bGU6Ry55YXhpcy5ib3JkZXJDb2xvcixsaW5lV2lkdGg6Ry55YXhpcy5ib3JkZXJXaWR0aH0pO3oodSx0aGlzLl9ib3R0b20sdSx0aGlzLl90b3Ase2xpbmVDYXA6InJvdW5kIixzdHJva2VTdHlsZTpHLnlheGlzLmJvcmRlckNvbG9yLGxpbmVXaWR0aDpHLnlheGlzLmJvcmRlcldpZHRofSk7eihmLHRoaXMuX2JvdHRvbSxmLHRoaXMuX3RvcCx7bGluZUNhcDoicm91bmQiLHN0cm9rZVN0eWxlOkcueWF4aXMuYm9yZGVyQ29sb3IsbGluZVdpZHRoOkcueWF4aXMuYm9yZGVyV2lkdGh9KX1lbHNle3oodGhpcy5fbGVmdCx0aGlzLl90b3AsdGhpcy5fcmlnaHQsdGhpcy5fdG9wLHtsaW5lQ2FwOiJyb3VuZCIsc3Ryb2tlU3R5bGU6Ry54MmF4aXMuYm9yZGVyQ29sb3IsbGluZVdpZHRoOkcueDJheGlzLmJvcmRlcldpZHRofSk7eih0aGlzLl9yaWdodCx0aGlzLl90b3AsdGhpcy5fcmlnaHQsdGhpcy5fYm90dG9tLHtsaW5lQ2FwOiJyb3VuZCIsc3Ryb2tlU3R5bGU6Ry55MmF4aXMuYm9yZGVyQ29sb3IsbGluZVdpZHRoOkcueTJheGlzLmJvcmRlcldpZHRofSk7eih0aGlzLl9yaWdodCx0aGlzLl9ib3R0b20sdGhpcy5fbGVmdCx0aGlzLl9ib3R0b20se2xpbmVDYXA6InJvdW5kIixzdHJva2VTdHlsZTpHLnhheGlzLmJvcmRlckNvbG9yLGxpbmVXaWR0aDpHLnhheGlzLmJvcmRlcldpZHRofSk7eih0aGlzLl9sZWZ0LHRoaXMuX2JvdHRvbSx0aGlzLl9sZWZ0LHRoaXMuX3RvcCx7bGluZUNhcDoicm91bmQiLHN0cm9rZVN0eWxlOkcueWF4aXMuYm9yZGVyQ29sb3IsbGluZVdpZHRoOkcueWF4aXMuYm9yZGVyV2lkdGh9KX19RC5yZXN0b3JlKCk7RD1udWxsO0c9bnVsbH19KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.pyramidRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewoKICAgIC8vIE5lZWQgdG8gZW5zdXJlIHB5cmFtaWQgYXhpcyBhbmQgZ3JpZCByZW5kZXJlcnMgYXJlIGxvYWRlZC4KICAgIC8vIFlvdSBzaG91bGQgbG9hZCB0aGVzZSB3aXRoIHNjcmlwdCB0YWdzIGluIHRoZSBodG1sIGhlYWQsIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQKICAgIC8vIGFzIHRoZSBicm93c2VyIHdpbGwgY2FjaGUgdGhlIHJlcXVlc3QuCiAgICAvLyBOb3RlLCBoYXZlIHRvIGJsb2NrIHdpdGggc3luY2hyb25vdXMgcmVxdWVzdCBpbiBvcmRlciB0byBleGVjdXRlIGJhciByZW5kZXJlciBjb2RlLgogICAgaWYgKCQuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXIgPT09IHVuZGVmaW5lZCkgewogICAgICAgICQuYWpheCh7CiAgICAgICAgICAgIHVybDogJC5qcXBsb3QucGx1Z2luTG9jYXRpb24gKyAnanFwbG90LnB5cmFtaWRBeGlzUmVuZGVyZXIuanMnLAogICAgICAgICAgICBkYXRhVHlwZTogInNjcmlwdCIsCiAgICAgICAgICAgIGFzeW5jOiBmYWxzZQogICAgICAgIH0pOwogICAgfQogICAgCiAgICBpZiAoJC5qcXBsb3QuUHlyYW1pZEdyaWRSZW5kZXJlciA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgJC5hamF4KHsKICAgICAgICAgICAgdXJsOiAkLmpxcGxvdC5wbHVnaW5Mb2NhdGlvbiArICdqcXBsb3QucHlyYW1pZEdyaWRSZW5kZXJlci5qcycsCiAgICAgICAgICAgIGRhdGFUeXBlOiAic2NyaXB0IiwKICAgICAgICAgICAgYXN5bmM6IGZhbHNlCiAgICAgICAgfSk7CiAgICB9CgogICAgJC5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyID0gZnVuY3Rpb24oKXsKICAgICAgICAkLmpxcGxvdC5MaW5lUmVuZGVyZXIuY2FsbCh0aGlzKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LlB5cmFtaWRSZW5kZXJlci5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuTGluZVJlbmRlcmVyKCk7CiAgICAkLmpxcGxvdC5QeXJhbWlkUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyOwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBhIHNlcmllcwogICAgJC5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucywgcGxvdCkgewogICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogICAgICAgIHRoaXMuX3R5cGUgPSAncHlyYW1pZCc7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAvLwogICAgICAgIC8vIHByb3A6IGJhclBhZGRpbmcKICAgICAgICB0aGlzLmJhclBhZGRpbmcgPSAxMDsKICAgICAgICB0aGlzLmJhcldpZHRoID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBmaWxsCiAgICAgICAgLy8gVHJ1ZSB0byBmaWxsIHRoZSBiYXJzLgogICAgICAgIHRoaXMuZmlsbCA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogaGlnaGxpZ2h0TW91c2VPdmVyCiAgICAgICAgLy8gVHJ1ZSB0byBoaWdobGlnaHQgc2xpY2Ugd2hlbiBtb3VzZWQgb3Zlci4KICAgICAgICAvLyBUaGlzIG11c3QgYmUgZmFsc2UgdG8gZW5hYmxlIGhpZ2hsaWdodE1vdXNlRG93biB0byBoaWdobGlnaHQgd2hlbiBjbGlja2luZyBvbiBhIHNsaWNlLgogICAgICAgIHRoaXMuaGlnaGxpZ2h0TW91c2VPdmVyID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBoaWdobGlnaHRNb3VzZURvd24KICAgICAgICAvLyBUcnVlIHRvIGhpZ2hsaWdodCB3aGVuIGEgbW91c2UgYnV0dG9uIGlzIHByZXNzZWQgb3ZlciBhIHNsaWNlLgogICAgICAgIC8vIFRoaXMgd2lsbCBiZSBkaXNhYmxlZCBpZiBoaWdobGlnaHRNb3VzZU92ZXIgaXMgdHJ1ZS4KICAgICAgICB0aGlzLmhpZ2hsaWdodE1vdXNlRG93biA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGhpZ2hsaWdodENvbG9ycwogICAgICAgIC8vIGFuIGFycmF5IG9mIGNvbG9ycyB0byB1c2Ugd2hlbiBoaWdobGlnaHRpbmcgYSBzbGljZS4KICAgICAgICB0aGlzLmhpZ2hsaWdodENvbG9ycyA9IFtdOwogICAgICAgIC8vIHByb3AgaGlnaGxpZ2h0VGhyZXNob2xkCiAgICAgICAgLy8gRXhwYW5kIHRoZSBoaWdobGlnaHRhYmxlIHJlZ2lvbiBpbiB0aGUgeCBkaXJlY3Rpb24uCiAgICAgICAgLy8gRS5nLiBhIHZhbHVlIG9mIDMgd2lsbCBoaWdobGlnaHQgYSBiYXIgd2hlbiB0aGUgbW91c2UgaXMKICAgICAgICAvLyB3aXRoaW4gMyBwaXhlbHMgb2YgdGhlIGJhciBpbiB0aGUgeCBkaXJlY3Rpb24uCiAgICAgICAgdGhpcy5oaWdobGlnaHRUaHJlc2hvbGQgPSAyOwogICAgICAgIC8vIHByb3A6IHN5bmNocm9uaXplSGlnaGxpZ2h0CiAgICAgICAgLy8gSW5kZXggb2YgYW5vdGhlciBzZXJpZXMgdG8gaGlnaGxpZ2h0IHdoZW4gdGhpcyBzZXJpZXMgaXMgaGlnaGxpZ2h0ZWQuCiAgICAgICAgLy8gbnVsbCBvciBmYWxzZSB0byBub3Qgc3luY2hyb25pemUuCiAgICAgICAgdGhpcy5zeW5jaHJvbml6ZUhpZ2hsaWdodCA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IG9mZnNldEJhcnMKICAgICAgICAvLyBGYWxzZSB3aWxsIGNlbnRlciBiYXJzIG9uIHRoZWlyIHkgdmFsdWUuCiAgICAgICAgLy8gVHJ1ZSB3aWxsIHB1c2ggYmFycyB1cCBieSAxLzIgYmFyIHdpZHRoIHRvIGZpbGwgYmV0d2VlbiB0aGVpciB5IHZhbHVlcy4KICAgICAgICAvLyBJZiB0cnVlLCB0aGVyZSBuZWVkcyB0byBiZSAxIG1vcmUgdGljayB0aGFuIHRoZXJlIGFyZSBiYXJzLgogICAgICAgIHRoaXMub2Zmc2V0QmFycyA9IGZhbHNlOwogICAgICAgIAogICAgICAgIC8vIGlmIHVzZXIgaGFzIHBhc3NlZCBpbiBoaWdobGlnaHRNb3VzZURvd24gb3B0aW9uIGFuZCBub3Qgc2V0IGhpZ2hsaWdodE1vdXNlT3ZlciwgZGlzYWJsZSBoaWdobGlnaHRNb3VzZU92ZXIKICAgICAgICBpZiAob3B0aW9ucy5oaWdobGlnaHRNb3VzZURvd24gJiYgb3B0aW9ucy5oaWdobGlnaHRNb3VzZU92ZXIgPT0gbnVsbCkgewogICAgICAgICAgICBvcHRpb25zLmhpZ2hsaWdodE1vdXNlT3ZlciA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgdGhpcy5zaWRlID0gJ3JpZ2h0JzsKICAgICAgICAKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKCiAgICAgICAgLy8gaWYgKHRoaXMuZmlsbCA9PT0gZmFsc2UpIHsKICAgICAgICAvLyAgICAgdGhpcy5zaGFkb3cgPSBmYWxzZTsKICAgICAgICAvLyB9CgogICAgICAgIGlmICh0aGlzLnNpZGUgPT09ICdsZWZ0JykgewogICAgICAgICAgICB0aGlzLl9oaWdobGlnaHRUaHJlc2hvbGQgPSBbWy10aGlzLmhpZ2hsaWdodFRocmVzaG9sZCwgMF0sIFstdGhpcy5oaWdobGlnaHRUaHJlc2hvbGQsIDBdLCBbMCwwXSwgWzAsMF1dOwogICAgICAgIH0KCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHRoaXMuX2hpZ2hsaWdodFRocmVzaG9sZCA9IFtbMCwwXSwgWzAsMF0sIFt0aGlzLmhpZ2hsaWdodFRocmVzaG9sZCwgMF0sIFt0aGlzLmhpZ2hsaWdodFRocmVzaG9sZCwgMF1dOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB0aGlzLnJlbmRlcmVyLm9wdGlvbnMgPSBvcHRpb25zOwogICAgICAgIC8vIGluZGV4IG9mIHRoZSBjdXJyZW50eSBoaWdobGlnaHRlZCBwb2ludCwgaWYgYW55CiAgICAgICAgdGhpcy5faGlnaGxpZ2h0ZWRQb2ludCA9IG51bGw7CiAgICAgICAgLy8gQXJyYXkgb2YgYWN0dWFsIGRhdGEgY29sb3JzIHVzZWQgZm9yIGVhY2ggZGF0YSBwb2ludC4KICAgICAgICB0aGlzLl9kYXRhQ29sb3JzID0gW107CiAgICAgICAgdGhpcy5fYmFyUG9pbnRzID0gW107CiAgICAgICAgdGhpcy5maWxsQXhpcyA9ICd5JzsKICAgICAgICB0aGlzLl9wcmltYXJ5QXhpcyA9ICdfeWF4aXMnOwogICAgICAgIHRoaXMuX3hudWRnZSA9IDA7CiAgICAgICAgCiAgICAgICAgLy8gc2V0IHRoZSBzaGFwZSByZW5kZXJlciBvcHRpb25zCiAgICAgICAgdmFyIG9wdHMgPSB7bGluZUpvaW46J21pdGVyJywgbGluZUNhcDonYnV0dCcsIGZpbGw6dGhpcy5maWxsLCBmaWxsUmVjdDp0aGlzLmZpbGwsIGlzYXJjOmZhbHNlLCBzdHJva2VTdHlsZTp0aGlzLmNvbG9yLCBmaWxsU3R5bGU6dGhpcy5jb2xvciwgY2xvc2VQYXRoOnRoaXMuZmlsbCwgbGluZVdpZHRoOiB0aGlzLmxpbmVXaWR0aH07CiAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmluaXQob3B0cyk7CiAgICAgICAgLy8gc2V0IHRoZSBzaGFkb3cgcmVuZGVyZXIgb3B0aW9ucwogICAgICAgIHZhciBzaGFkb3dfb2Zmc2V0ID0gb3B0aW9ucy5zaGFkb3dPZmZzZXQ7CiAgICAgICAgLy8gc2V0IHRoZSBzaGFkb3cgcmVuZGVyZXIgb3B0aW9ucwogICAgICAgIGlmIChzaGFkb3dfb2Zmc2V0ID09IG51bGwpIHsKICAgICAgICAgICAgLy8gc2NhbGUgdGhlIHNoYWRvd09mZnNldCB0byB0aGUgd2lkdGggb2YgdGhlIGxpbmUuCiAgICAgICAgICAgIGlmICh0aGlzLmxpbmVXaWR0aCA+IDIuNSkgewogICAgICAgICAgICAgICAgc2hhZG93X29mZnNldCA9IDEuMjUgKiAoMSArIChNYXRoLmF0YW4oKHRoaXMubGluZVdpZHRoLzIuNSkpLzAuNzg1Mzk4MTYzIC0gMSkqMC42KTsKICAgICAgICAgICAgICAgIC8vIHZhciBzaGFkb3dfb2Zmc2V0ID0gdGhpcy5zaGFkb3dPZmZzZXQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gZm9yIHNraW5ueSBsaW5lcywgZG9uJ3QgbWFrZSBzdWNoIGEgYmlnIHNoYWRvdy4KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBzaGFkb3dfb2Zmc2V0ID0gMS4yNSAqIE1hdGguYXRhbigodGhpcy5saW5lV2lkdGgvMi41KSkvMC43ODUzOTgxNjM7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdmFyIHNvcHRzID0ge2xpbmVKb2luOidtaXRlcicsIGxpbmVDYXA6J2J1dHQnLCBmaWxsOnRoaXMuZmlsbCwgZmlsbFJlY3Q6dGhpcy5maWxsLCBpc2FyYzpmYWxzZSwgYW5nbGU6dGhpcy5zaGFkb3dBbmdsZSwgb2Zmc2V0OnNoYWRvd19vZmZzZXQsIGFscGhhOnRoaXMuc2hhZG93QWxwaGEsIGRlcHRoOnRoaXMuc2hhZG93RGVwdGgsIGNsb3NlUGF0aDp0aGlzLmZpbGwsIGxpbmVXaWR0aDogdGhpcy5saW5lV2lkdGh9OwogICAgICAgIHRoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuaW5pdChzb3B0cyk7CgogICAgICAgIHBsb3QucG9zdERyYXdIb29rcy5hZGRPbmNlKHBvc3RQbG90RHJhdyk7CiAgICAgICAgcGxvdC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgnanFwbG90TW91c2VNb3ZlJywgaGFuZGxlTW92ZSk7CgogICAgICAgIC8vIGlmIHRoaXMgaXMgdGhlIGxlZnQgc2lkZSBvZiBweXJhbWlkLCBzZXQgeSB2YWx1ZXMgdG8gbmVnYXRpdmUuCiAgICAgICAgaWYgKHRoaXMuc2lkZSA9PT0gJ2xlZnQnKSB7CiAgICAgICAgICAgIGZvciAodmFyIGk9MCwgbD10aGlzLmRhdGEubGVuZ3RoOyBpPGw7IGkrKykgewogICAgICAgICAgICAgICAgdGhpcy5kYXRhW2ldWzFdID0gLU1hdGguYWJzKHRoaXMuZGF0YVtpXVsxXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgCiAgICAvLyBzZXRHcmlkRGF0YQogICAgLy8gY29udmVydHMgdGhlIHVzZXIgZGF0YSB2YWx1ZXMgdG8gZ3JpZCBjb29yZGluYXRlcyBhbmQgc3RvcmVzIHRoZW0KICAgIC8vIGluIHRoZSBncmlkRGF0YSBhcnJheS4KICAgIC8vIENhbGxlZCB3aXRoIHNjb3BlIG9mIGEgc2VyaWVzLgogICAgJC5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyLnByb3RvdHlwZS5zZXRHcmlkRGF0YSA9IGZ1bmN0aW9uKHBsb3QpIHsKICAgICAgICAvLyByZWNhbGN1bGF0ZSB0aGUgZ3JpZCBkYXRhCiAgICAgICAgdmFyIHhwID0gdGhpcy5feGF4aXMuc2VyaWVzX3UycDsKICAgICAgICB2YXIgeXAgPSB0aGlzLl95YXhpcy5zZXJpZXNfdTJwOwogICAgICAgIHZhciBkYXRhID0gdGhpcy5fcGxvdERhdGE7CiAgICAgICAgdmFyIHBkYXRhID0gdGhpcy5fcHJldlBsb3REYXRhOwogICAgICAgIHRoaXMuZ3JpZERhdGEgPSBbXTsKICAgICAgICB0aGlzLl9wcmV2R3JpZERhdGEgPSBbXTsKICAgICAgICB2YXIgbCA9IGRhdGEubGVuZ3RoOwogICAgICAgIHZhciBhZGp1c3QgPSBmYWxzZTsKICAgICAgICB2YXIgaTsKCiAgICAgICAgLy8gaWYgYW55IGRhdGEgdmFsdWVzIGFyZSA8IDAsICBjb25zaWRlciB0aGlzIGEgbmVnYXRpdmUgc2VyaWVzCiAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykgewogICAgICAgICAgICBpZiAoZGF0YVtpXVsxXSA8IDApIHsKICAgICAgICAgICAgICAgIHRoaXMuc2lkZSA9ICdsZWZ0JzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMuX3lheGlzLm5hbWUgPT09ICd5TWlkQXhpcycgJiYgdGhpcy5zaWRlID09PSAncmlnaHQnKSB7CiAgICAgICAgICAgIHRoaXMuX3hudWRnZSA9IHRoaXMuX3hheGlzLm1heC8yMDAwLjA7CiAgICAgICAgICAgIGFkanVzdCA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7CiAgICAgICAgICAgIC8vIGlmIG5vdCBhIGxpbmUgc2VyaWVzIG9yIGlmIG5vIG51bGxzIGluIGRhdGEsIHB1c2ggdGhlIGNvbnZlcnRlZCBwb2ludCBvbnRvIHRoZSBhcnJheS4KICAgICAgICAgICAgaWYgKGRhdGFbaV1bMF0gIT0gbnVsbCAmJiBkYXRhW2ldWzFdICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEucHVzaChbeHAoZGF0YVtpXVsxXSksIHlwKGRhdGFbaV1bMF0pXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gZWxzZSBpZiB0aGVyZSBpcyBhIG51bGwsIHByZXNlcnZlIGl0LgogICAgICAgICAgICBlbHNlIGlmIChkYXRhW2ldWzBdID09IG51bGwpIHsKICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEucHVzaChbeHAoZGF0YVtpXVsxXSksIG51bGxdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChkYXRhW2ldWzFdID09IG51bGwpIHsKICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEucHVzaChudWxsLCBbeXAoZGF0YVtpXVswXSldKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBmaW5hbGx5LCBhZGp1c3QgeCBncmlkIGRhdGEgaWYgaGF2ZSB0bwogICAgICAgICAgICBpZiAoZGF0YVtpXVsxXSA9PT0gMCAmJiBhZGp1c3QpIHsKICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGFbaV1bMF0gPSB4cCh0aGlzLl94bnVkZ2UpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKICAgIAogICAgLy8gbWFrZUdyaWREYXRhCiAgICAvLyBjb252ZXJ0cyBhbnkgYXJiaXRyYXJ5IGRhdGEgdmFsdWVzIHRvIGdyaWQgY29vcmRpbmF0ZXMgYW5kCiAgICAvLyByZXR1cm5zIHRoZW0uICBUaGlzIG1ldGhvZCBleGlzdHMgc28gdGhhdCBwbHVnaW5zIGNhbiB1c2UgYSBzZXJpZXMnCiAgICAvLyBsaW5lcmVuZGVyZXIgdG8gZ2VuZXJhdGUgZ3JpZCBkYXRhIHBvaW50cyB3aXRob3V0IG92ZXJ3cml0aW5nIHRoZQogICAgLy8gZ3JpZCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGF0IHNlcmllcy4KICAgIC8vIENhbGxlZCB3aXRoIHNjb3BlIG9mIGEgc2VyaWVzLgogICAgJC5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyLnByb3RvdHlwZS5tYWtlR3JpZERhdGEgPSBmdW5jdGlvbihkYXRhLCBwbG90KSB7CiAgICAgICAgLy8gcmVjYWxjdWxhdGUgdGhlIGdyaWQgZGF0YQogICAgICAgIHZhciB4cCA9IHRoaXMuX3hheGlzLnNlcmllc191MnA7CiAgICAgICAgdmFyIHlwID0gdGhpcy5feWF4aXMuc2VyaWVzX3UycDsKICAgICAgICB2YXIgZ2QgPSBbXTsKICAgICAgICB2YXIgbCA9IGRhdGEubGVuZ3RoOwogICAgICAgIHZhciBhZGp1c3QgPSBmYWxzZTsKICAgICAgICB2YXIgaTsKCiAgICAgICAgLy8gaWYgYW55IGRhdGEgdmFsdWVzIGFyZSA8IDAsICBjb25zaWRlciB0aGlzIGEgbmVnYXRpdmUgc2VyaWVzCiAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykgewogICAgICAgICAgICBpZiAoZGF0YVtpXVsxXSA8IDApIHsKICAgICAgICAgICAgICAgIHRoaXMuc2lkZSA9ICdsZWZ0JzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMuX3lheGlzLm5hbWUgPT09ICd5TWlkQXhpcycgJiYgdGhpcy5zaWRlID09PSAncmlnaHQnKSB7CiAgICAgICAgICAgIHRoaXMuX3hudWRnZSA9IHRoaXMuX3hheGlzLm1heC8yMDAwLjA7CiAgICAgICAgICAgIGFkanVzdCA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7CiAgICAgICAgICAgIC8vIGlmIG5vdCBhIGxpbmUgc2VyaWVzIG9yIGlmIG5vIG51bGxzIGluIGRhdGEsIHB1c2ggdGhlIGNvbnZlcnRlZCBwb2ludCBvbnRvIHRoZSBhcnJheS4KICAgICAgICAgICAgaWYgKGRhdGFbaV1bMF0gIT0gbnVsbCAmJiBkYXRhW2ldWzFdICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIGdkLnB1c2goW3hwKGRhdGFbaV1bMV0pLCB5cChkYXRhW2ldWzBdKV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIGVsc2UgaWYgdGhlcmUgaXMgYSBudWxsLCBwcmVzZXJ2ZSBpdC4KICAgICAgICAgICAgZWxzZSBpZiAoZGF0YVtpXVswXSA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICBnZC5wdXNoKFt4cChkYXRhW2ldWzFdKSwgbnVsbF0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGRhdGFbaV1bMV0gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgZ2QucHVzaChbbnVsbCwgeXAoZGF0YVtpXVswXSldKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBmaW5hbGx5LCBhZGp1c3QgeCBncmlkIGRhdGEgaWYgaGF2ZSB0bwogICAgICAgICAgICBpZiAoZGF0YVtpXVsxXSA9PT0gMCAmJiBhZGp1c3QpIHsKICAgICAgICAgICAgICAgIGdkW2ldWzBdID0geHAodGhpcy5feG51ZGdlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGdkOwogICAgfTsKCiAgICAkLmpxcGxvdC5QeXJhbWlkUmVuZGVyZXIucHJvdG90eXBlLnNldEJhcldpZHRoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gbmVlZCB0byBrbm93IGhvdyBtYW55IGRhdGEgdmFsdWVzIHdlIGhhdmUgb24gdGhlIGFwcHJvcHJhdGUgYXhpcyBhbmQgZmlndXJlIGl0IG91dC4KICAgICAgICB2YXIgaTsKICAgICAgICB2YXIgbnZhbHMgPSAwOwogICAgICAgIHZhciBuc2VyaWVzID0gMDsKICAgICAgICB2YXIgcGF4aXMgPSB0aGlzW3RoaXMuX3ByaW1hcnlBeGlzXTsKICAgICAgICB2YXIgcywgc2VyaWVzLCBwb3M7CiAgICAgICAgbnZhbHMgPSBwYXhpcy5tYXggLSBwYXhpcy5taW47CiAgICAgICAgdmFyIG50aWNrcyA9IHBheGlzLm51bWJlclRpY2tzOwogICAgICAgIHZhciBuYmlucyA9IChudGlja3MtMSkvMjsKICAgICAgICAvLyBzbywgbm93IHdlIGhhdmUgdG90YWwgbnVtYmVyIG9mIGF4aXMgdmFsdWVzLgogICAgICAgIHZhciB0ZW1wID0gKHRoaXMuYmFyUGFkZGluZyA9PT0gMCkgPyAxLjAgOiAwOwogICAgICAgIGlmIChwYXhpcy5uYW1lID09ICd4YXhpcycgfHwgcGF4aXMubmFtZSA9PSAneDJheGlzJykgewogICAgICAgICAgICB0aGlzLmJhcldpZHRoID0gKHBheGlzLl9vZmZzZXRzLm1heCAtIHBheGlzLl9vZmZzZXRzLm1pbikgLyBudmFscyAtIHRoaXMuYmFyUGFkZGluZyArIHRlbXA7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBpZiAodGhpcy5maWxsKSB7CiAgICAgICAgICAgICAgICB0aGlzLmJhcldpZHRoID0gKHBheGlzLl9vZmZzZXRzLm1pbiAtIHBheGlzLl9vZmZzZXRzLm1heCkgLyBudmFscyAtIHRoaXMuYmFyUGFkZGluZyArIHRlbXA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB0aGlzLmJhcldpZHRoID0gKHBheGlzLl9vZmZzZXRzLm1pbiAtIHBheGlzLl9vZmZzZXRzLm1heCkgLyBudmFsczsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CiAgICAKICAgICQuanFwbG90LlB5cmFtaWRSZW5kZXJlci5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGN0eCwgZ3JpZERhdGEsIG9wdGlvbnMpIHsKICAgICAgICB2YXIgaTsKICAgICAgICAvLyBVZ2hoaCwgaGF2ZSB0byBtYWtlIGEgY29weSBvZiBvcHRpb25zIGIvYyBpdCBtYXkgYmUgbW9kaWZpZWQgbGF0ZXIuCiAgICAgICAgdmFyIG9wdHMgPSAkLmV4dGVuZCh7fSwgb3B0aW9ucyk7CiAgICAgICAgdmFyIHNoYWRvdyA9IChvcHRzLnNoYWRvdyAhPSB1bmRlZmluZWQpID8gb3B0cy5zaGFkb3cgOiB0aGlzLnNoYWRvdzsKICAgICAgICB2YXIgc2hvd0xpbmUgPSAob3B0cy5zaG93TGluZSAhPSB1bmRlZmluZWQpID8gb3B0cy5zaG93TGluZSA6IHRoaXMuc2hvd0xpbmU7CiAgICAgICAgdmFyIGZpbGwgPSAob3B0cy5maWxsICE9IHVuZGVmaW5lZCkgPyBvcHRzLmZpbGwgOiB0aGlzLmZpbGw7CiAgICAgICAgdmFyIHhwID0gdGhpcy5feGF4aXMuc2VyaWVzX3UycDsKICAgICAgICB2YXIgeXAgPSB0aGlzLl95YXhpcy5zZXJpZXNfdTJwOwogICAgICAgIHZhciBwb2ludHgsIHBvaW50eTsKICAgICAgICAvLyBjbGVhciBvdXQgZGF0YSBjb2xvcnMuCiAgICAgICAgdGhpcy5fZGF0YUNvbG9ycyA9IFtdOwogICAgICAgIHRoaXMuX2JhclBvaW50cyA9IFtdOwogICAgICAgIAogICAgICAgIGlmICh0aGlzLnJlbmRlcmVyLm9wdGlvbnMuYmFyV2lkdGggPT0gbnVsbCkgewogICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEJhcldpZHRoLmNhbGwodGhpcyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIHZhciB0ZW1wID0gdGhpcy5fcGxvdFNlcmllc0luZm8gPSB0aGlzLnJlbmRlcmVyLmNhbGNTZXJpZXNOdW1iZXJzLmNhbGwodGhpcyk7CiAgICAgICAgLy8gdmFyIG52YWxzID0gdGVtcFswXTsKICAgICAgICAvLyB2YXIgbnNlcmllcyA9IHRlbXBbMV07CiAgICAgICAgLy8gdmFyIHBvcyA9IHRlbXBbMl07CiAgICAgICAgdmFyIHBvaW50cyA9IFtdLAogICAgICAgICAgICB3LAogICAgICAgICAgICBoOwogICAgICAgIAogICAgICAgIC8vIHRoaXMuX2Jhck51ZGdlID0gMDsKCiAgICAgICAgaWYgKHNob3dMaW5lKSB7CiAgICAgICAgICAgIHZhciBuZWdhdGl2ZUNvbG9ycyA9IG5ldyAkLmpxcGxvdC5Db2xvckdlbmVyYXRvcih0aGlzLm5lZ2F0aXZlU2VyaWVzQ29sb3JzKTsKICAgICAgICAgICAgdmFyIHBvc2l0aXZlQ29sb3JzID0gbmV3ICQuanFwbG90LkNvbG9yR2VuZXJhdG9yKHRoaXMuc2VyaWVzQ29sb3JzKTsKICAgICAgICAgICAgdmFyIG5lZ2F0aXZlQ29sb3IgPSBuZWdhdGl2ZUNvbG9ycy5nZXQodGhpcy5pbmRleCk7CiAgICAgICAgICAgIGlmICghIHRoaXMudXNlTmVnYXRpdmVDb2xvcnMpIHsKICAgICAgICAgICAgICAgIG5lZ2F0aXZlQ29sb3IgPSBvcHRzLmZpbGxTdHlsZTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgcG9zaXRpdmVDb2xvciA9IG9wdHMuZmlsbFN0eWxlOwogICAgICAgICAgICB2YXIgYmFzZTsKICAgICAgICAgICAgdmFyIHhzdGFydCA9IHRoaXMuX3hheGlzLnNlcmllc191MnAodGhpcy5feG51ZGdlKTsKICAgICAgICAgICAgdmFyIHlzdGFydCA9IHRoaXMuX3lheGlzLnNlcmllc191MnAodGhpcy5feWF4aXMubWluKTsKICAgICAgICAgICAgdmFyIHllbmQgPSB0aGlzLl95YXhpcy5zZXJpZXNfdTJwKHRoaXMuX3lheGlzLm1heCk7CiAgICAgICAgICAgIHZhciBidyA9IHRoaXMuYmFyV2lkdGg7CiAgICAgICAgICAgIHZhciBidzIgPSBidy8yLjA7CiAgICAgICAgICAgIHZhciBwb2ludHMgPSBbXTsKICAgICAgICAgICAgdmFyIHlhZGogPSB0aGlzLm9mZnNldEJhcnMgPyBidzIgOiAwOwogICAgICAgICAgICAKICAgICAgICAgICAgZm9yICh2YXIgaT0wLCBsPWdyaWREYXRhLmxlbmd0aDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFbaV1bMF0gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYmFzZSA9IGdyaWREYXRhW2ldWzFdOwogICAgICAgICAgICAgICAgLy8gbm90IHN0YWNrZWQgYW5kIGZpcnN0IHNlcmllcyBpbiBzdGFjawoKICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wbG90RGF0YVtpXVsxXSA8IDApIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52YXJ5QmFyQ29sb3IgJiYgIXRoaXMuX3N0YWNrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVzZU5lZ2F0aXZlQ29sb3JzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmZpbGxTdHlsZSA9IG5lZ2F0aXZlQ29sb3JzLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuZmlsbFN0eWxlID0gcG9zaXRpdmVDb2xvcnMubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmFyeUJhckNvbG9yICYmICF0aGlzLl9zdGFjaykgewogICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmZpbGxTdHlsZSA9IHBvc2l0aXZlQ29sb3JzLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuZmlsbFN0eWxlID0gcG9zaXRpdmVDb2xvcjsKICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsbCkgewoKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGxvdERhdGFbaV1bMV0gPj0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyB4c3RhcnQgPSB0aGlzLl94YXhpcy5zZXJpZXNfdTJwKHRoaXMuX3hudWRnZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBncmlkRGF0YVtpXVswXSAtIHhzdGFydDsKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHRoaXMuYmFyV2lkdGg7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IFt4c3RhcnQsIGJhc2UgLSBidzIgLSB5YWRqLCB3LCBoXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHhzdGFydCA9IHRoaXMuX3hheGlzLnNlcmllc191MnAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHcgPSB4c3RhcnQgLSBncmlkRGF0YVtpXVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHRoaXMuYmFyV2lkdGg7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IFtncmlkRGF0YVtpXVswXSwgYmFzZSAtIGJ3MiAtIHlhZGosIHcsIGhdOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYmFyUG9pbnRzLnB1c2goW1twb2ludHNbMF0sIHBvaW50c1sxXSArIGhdLCBbcG9pbnRzWzBdLCBwb2ludHNbMV1dLCBbcG9pbnRzWzBdICsgdywgcG9pbnRzWzFdXSwgW3BvaW50c1swXSArIHcsIHBvaW50c1sxXSArIGhdXSk7CgogICAgICAgICAgICAgICAgICAgIGlmIChzaGFkb3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KGN0eCwgcG9pbnRzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGNsciA9IG9wdHMuZmlsbFN0eWxlIHx8IHRoaXMuY29sb3I7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YUNvbG9ycy5wdXNoKGNscik7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmRyYXcoY3R4LCBwb2ludHMsIG9wdHMpOyAKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPVtbeHN0YXJ0LCB5c3RhcnRdLCBbZ3JpZERhdGFbaV1bMF0sIHlzdGFydF0sIFtncmlkRGF0YVtpXVswXSwgZ3JpZERhdGFbaV1bMV0gLSBidzIgLSB5YWRqXV07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpIDwgbC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IHBvaW50cy5jb25jYXQoW1tncmlkRGF0YVtpLTFdWzBdLCBncmlkRGF0YVtpLTFdWzFdIC0gYncyIC0geWFkal0sIFtncmlkRGF0YVtpXVswXSwgZ3JpZERhdGFbaV1bMV0gKyBidzIgLSB5YWRqXSwgW2dyaWREYXRhW2ldWzBdLCBncmlkRGF0YVtpXVsxXSAtIGJ3MiAtIHlhZGpdXSk7CiAgICAgICAgICAgICAgICAgICAgfSAKCiAgICAgICAgICAgICAgICAgICAgLy8gZmluYWxseSwgZHJhdyB0aGUgbGluZQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBwb2ludHMuY29uY2F0KFtbZ3JpZERhdGFbaS0xXVswXSwgZ3JpZERhdGFbaS0xXVsxXSAtIGJ3MiAtIHlhZGpdLCBbZ3JpZERhdGFbaV1bMF0sIGdyaWREYXRhW2ldWzFdICsgYncyIC0geWFkal0sIFtncmlkRGF0YVtpXVswXSwgeWVuZF0sIFt4c3RhcnQsIHllbmRdXSk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaGFkb3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIHBvaW50cyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNsciA9IG9wdHMuZmlsbFN0eWxlIHx8IHRoaXMuY29sb3I7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFDb2xvcnMucHVzaChjbHIpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhjdHgsIHBvaW50cywgb3B0cyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9ICAKICAgICAgICB9ICAgICAgICAKICAgICAgICAKICAgICAgICBpZiAodGhpcy5oaWdobGlnaHRDb2xvcnMubGVuZ3RoID09IDApIHsKICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRDb2xvcnMgPSAkLmpxcGxvdC5jb21wdXRlSGlnaGxpZ2h0Q29sb3JzKHRoaXMuX2RhdGFDb2xvcnMpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBlbHNlIGlmICh0eXBlb2YodGhpcy5oaWdobGlnaHRDb2xvcnMpID09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0Q29sb3JzID0gW107CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9kYXRhQ29sb3JzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB0aGlzLmhpZ2hsaWdodENvbG9ycy5wdXNoKHRoaXMuaGlnaGxpZ2h0Q29sb3JzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgIH07CgogICAgICAgIAogICAgLy8gc2V0dXAgZGVmYXVsdCByZW5kZXJlcnMgZm9yIGF4ZXMgYW5kIGxlZ2VuZCBzbyB1c2VyIGRvZXNuJ3QgaGF2ZSB0bwogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgcGxvdAogICAgZnVuY3Rpb24gcHJlSW5pdCh0YXJnZXQsIGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgICAgICBvcHRpb25zLmF4ZXNEZWZhdWx0cyA9IG9wdGlvbnMuYXhlc0RlZmF1bHRzIHx8IHt9OwogICAgICAgIG9wdGlvbnMuZ3JpZCA9IG9wdGlvbnMuZ3JpZCB8fCB7fTsKICAgICAgICBvcHRpb25zLmxlZ2VuZCA9IG9wdGlvbnMubGVnZW5kIHx8IHt9OwogICAgICAgIG9wdGlvbnMuc2VyaWVzRGVmYXVsdHMgPSBvcHRpb25zLnNlcmllc0RlZmF1bHRzIHx8IHt9OwogICAgICAgIC8vIG9ubHkgc2V0IHRoZXNlIGlmIHRoZXJlIGlzIGEgcGllIHNlcmllcwogICAgICAgIHZhciBzZXRvcHRzID0gZmFsc2U7CiAgICAgICAgaWYgKG9wdGlvbnMuc2VyaWVzRGVmYXVsdHMucmVuZGVyZXIgPT09ICQuanFwbG90LlB5cmFtaWRSZW5kZXJlcikgewogICAgICAgICAgICBzZXRvcHRzID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAob3B0aW9ucy5zZXJpZXMpIHsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpIDwgb3B0aW9ucy5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnNlcmllc1tpXS5yZW5kZXJlciA9PT0gJC5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAgICAgc2V0b3B0cyA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKHNldG9wdHMpIHsKICAgICAgICAgICAgb3B0aW9ucy5heGVzRGVmYXVsdHMucmVuZGVyZXIgPSAkLmpxcGxvdC5QeXJhbWlkQXhpc1JlbmRlcmVyOwogICAgICAgICAgICBvcHRpb25zLmdyaWQucmVuZGVyZXIgPSAkLmpxcGxvdC5QeXJhbWlkR3JpZFJlbmRlcmVyOwogICAgICAgICAgICBvcHRpb25zLnNlcmllc0RlZmF1bHRzLnBvaW50TGFiZWxzID0ge3Nob3c6IGZhbHNlfTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoaW4gY29udGV4dCBvZiBwbG90CiAgICAvLyBjcmVhdGUgYSBjYW52YXMgd2hpY2ggd2UgY2FuIGRyYXcgb24uCiAgICAvLyBpbnNlcnQgaXQgYmVmb3JlIHRoZSBldmVudENhbnZhcywgc28gZXZlbnRDYW52YXMgd2lsbCBzdGlsbCBjYXB0dXJlIGV2ZW50cy4KICAgIGZ1bmN0aW9uIHBvc3RQbG90RHJhdygpIHsKICAgICAgICAvLyBNZW1vcnkgTGVha3MgcGF0Y2ggICAgCiAgICAgICAgaWYgKHRoaXMucGx1Z2lucy5weXJhbWlkUmVuZGVyZXIgJiYgdGhpcy5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRDYW52YXMpIHsKCiAgICAgICAgICAgIHRoaXMucGx1Z2lucy5weXJhbWlkUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnJlc2V0Q2FudmFzKCk7CiAgICAgICAgICAgIHRoaXMucGx1Z2lucy5weXJhbWlkUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzID0gbnVsbDsKICAgICAgICB9CiAgICAgICAgIAogICAgICAgIHRoaXMucGx1Z2lucy5weXJhbWlkUmVuZGVyZXIgPSB7aGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDpudWxsfTsKICAgICAgICB0aGlzLnBsdWdpbnMucHlyYW1pZFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcyA9IG5ldyAkLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7CiAgICAgICAgCiAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUodGhpcy5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywgJ2pxcGxvdC1weXJhbWlkUmVuZGVyZXItaGlnaGxpZ2h0LWNhbnZhcycsIHRoaXMuX3Bsb3REaW1lbnNpb25zLCB0aGlzKSk7CiAgICAgICAgdGhpcy5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuc2V0Q29udGV4dCgpOwogICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgnbW91c2VsZWF2ZScsIHtwbG90OnRoaXN9LCBmdW5jdGlvbiAoZXYpIHsgdW5oaWdobGlnaHQoZXYuZGF0YS5wbG90KTsgfSk7CiAgICB9ICAKICAgIAogICAgZnVuY3Rpb24gaGlnaGxpZ2h0IChwbG90LCBzaWR4LCBwaWR4LCBwb2ludHMpIHsKICAgICAgICB2YXIgcyA9IHBsb3Quc2VyaWVzW3NpZHhdOwogICAgICAgIHZhciBjYW52YXMgPSBwbG90LnBsdWdpbnMucHlyYW1pZFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhczsKICAgICAgICBjYW52YXMuX2N0eC5jbGVhclJlY3QoMCwwLGNhbnZhcy5fY3R4LmNhbnZhcy53aWR0aCwgY2FudmFzLl9jdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgcy5faGlnaGxpZ2h0ZWRQb2ludCA9IHBpZHg7CiAgICAgICAgcGxvdC5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ID0gc2lkeDsKICAgICAgICB2YXIgb3B0cyA9IHtmaWxsU3R5bGU6IHMuaGlnaGxpZ2h0Q29sb3JzW3BpZHhdLCBmaWxsUmVjdDogZmFsc2V9OwogICAgICAgIHMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5kcmF3KGNhbnZhcy5fY3R4LCBwb2ludHMsIG9wdHMpOwogICAgICAgIGlmIChzLnN5bmNocm9uaXplSGlnaGxpZ2h0ICE9PSBmYWxzZSAmJiBwbG90LnNlcmllcy5sZW5ndGggPj0gcy5zeW5jaHJvbml6ZUhpZ2hsaWdodCAmJiBzLnN5bmNocm9uaXplSGlnaGxpZ2h0ICE9PSBzaWR4KSB7CiAgICAgICAgICAgIHMgPSBwbG90LnNlcmllc1tzLnN5bmNocm9uaXplSGlnaGxpZ2h0XTsKICAgICAgICAgICAgb3B0cyA9IHtmaWxsU3R5bGU6IHMuaGlnaGxpZ2h0Q29sb3JzW3BpZHhdLCBmaWxsUmVjdDogZmFsc2V9OwogICAgICAgICAgICBzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhjYW52YXMuX2N0eCwgcy5fYmFyUG9pbnRzW3BpZHhdLCBvcHRzKTsKICAgICAgICB9CiAgICAgICAgY2FudmFzID0gbnVsbDsKICAgIH0KICAgIAogICAgZnVuY3Rpb24gdW5oaWdobGlnaHQgKHBsb3QpIHsKICAgICAgICB2YXIgY2FudmFzID0gcGxvdC5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7CiAgICAgICAgY2FudmFzLl9jdHguY2xlYXJSZWN0KDAsMCwgY2FudmFzLl9jdHguY2FudmFzLndpZHRoLCBjYW52YXMuX2N0eC5jYW52YXMuaGVpZ2h0KTsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8cGxvdC5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgcGxvdC5zZXJpZXNbaV0uX2hpZ2hsaWdodGVkUG9pbnQgPSBudWxsOwogICAgICAgIH0KICAgICAgICBwbG90LnBsdWdpbnMucHlyYW1pZFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXggPSBudWxsOwogICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoJ2pxcGxvdERhdGFVbmhpZ2hsaWdodCcpOwogICAgICAgIGNhbnZhcyA9ICBudWxsOwogICAgfQogICAgCiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdmUoZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgaWYgKG5laWdoYm9yKSB7CiAgICAgICAgICAgIHZhciBpbnMgPSBbbmVpZ2hib3Iuc2VyaWVzSW5kZXgsIG5laWdoYm9yLnBvaW50SW5kZXgsIG5laWdoYm9yLmRhdGFdOwogICAgICAgICAgICB2YXIgZXZ0MSA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YU1vdXNlT3ZlcicpOwogICAgICAgICAgICBldnQxLnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgIGV2dDEucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQxLCBpbnMpOwogICAgICAgICAgICBpZiAocGxvdC5zZXJpZXNbaW5zWzBdXS5oaWdobGlnaHRNb3VzZU92ZXIgJiYgIShpbnNbMF0gPT0gcGxvdC5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ICYmIGluc1sxXSA9PSBwbG90LnNlcmllc1tpbnNbMF1dLl9oaWdobGlnaHRlZFBvaW50KSkgewogICAgICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YUhpZ2hsaWdodCcpOwogICAgICAgICAgICAgICAgZXZ0LndoaWNoID0gZXYud2hpY2g7CiAgICAgICAgICAgICAgICBldnQucGFnZVggPSBldi5wYWdlWDsKICAgICAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQsIGlucyk7CiAgICAgICAgICAgICAgICBoaWdobGlnaHQgKHBsb3QsIG5laWdoYm9yLnNlcmllc0luZGV4LCBuZWlnaGJvci5wb2ludEluZGV4LCBuZWlnaGJvci5wb2ludHMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG5laWdoYm9yID09IG51bGwpIHsKICAgICAgICAgICAgdW5oaWdobGlnaHQgKHBsb3QpOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBIYXZlIHRvIGFkZCBob29rIGhlcmUsIGJlY3Vhc2UgaXQgbmVlZHMgY2FsbGVkIGJlZm9yZSBzZXJpZXMgaXMgaW5pdGVkLgogICAgJC5qcXBsb3QucHJlSW5pdEhvb2tzLnB1c2gocHJlSW5pdCk7CiAgICAKCn0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.pyramidRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGMpe2lmKGMuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXI9PT11bmRlZmluZWQpe2MuYWpheCh7dXJsOmMuanFwbG90LnBsdWdpbkxvY2F0aW9uKyJqcXBsb3QucHlyYW1pZEF4aXNSZW5kZXJlci5qcyIsZGF0YVR5cGU6InNjcmlwdCIsYXN5bmM6ZmFsc2V9KX1pZihjLmpxcGxvdC5QeXJhbWlkR3JpZFJlbmRlcmVyPT09dW5kZWZpbmVkKXtjLmFqYXgoe3VybDpjLmpxcGxvdC5wbHVnaW5Mb2NhdGlvbisianFwbG90LnB5cmFtaWRHcmlkUmVuZGVyZXIuanMiLGRhdGFUeXBlOiJzY3JpcHQiLGFzeW5jOmZhbHNlfSl9Yy5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyPWZ1bmN0aW9uKCl7Yy5qcXBsb3QuTGluZVJlbmRlcmVyLmNhbGwodGhpcyl9O2MuanFwbG90LlB5cmFtaWRSZW5kZXJlci5wcm90b3R5cGU9bmV3IGMuanFwbG90LkxpbmVSZW5kZXJlcigpO2MuanFwbG90LlB5cmFtaWRSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9Yy5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyO2MuanFwbG90LlB5cmFtaWRSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihqLG8pe2o9anx8e307dGhpcy5fdHlwZT0icHlyYW1pZCI7dGhpcy5iYXJQYWRkaW5nPTEwO3RoaXMuYmFyV2lkdGg9bnVsbDt0aGlzLmZpbGw9dHJ1ZTt0aGlzLmhpZ2hsaWdodE1vdXNlT3Zlcj10cnVlO3RoaXMuaGlnaGxpZ2h0TW91c2VEb3duPWZhbHNlO3RoaXMuaGlnaGxpZ2h0Q29sb3JzPVtdO3RoaXMuaGlnaGxpZ2h0VGhyZXNob2xkPTI7dGhpcy5zeW5jaHJvbml6ZUhpZ2hsaWdodD1mYWxzZTt0aGlzLm9mZnNldEJhcnM9ZmFsc2U7aWYoai5oaWdobGlnaHRNb3VzZURvd24mJmouaGlnaGxpZ2h0TW91c2VPdmVyPT1udWxsKXtqLmhpZ2hsaWdodE1vdXNlT3Zlcj1mYWxzZX10aGlzLnNpZGU9InJpZ2h0IjtjLmV4dGVuZCh0cnVlLHRoaXMsaik7aWYodGhpcy5zaWRlPT09ImxlZnQiKXt0aGlzLl9oaWdobGlnaHRUaHJlc2hvbGQ9W1stdGhpcy5oaWdobGlnaHRUaHJlc2hvbGQsMF0sWy10aGlzLmhpZ2hsaWdodFRocmVzaG9sZCwwXSxbMCwwXSxbMCwwXV19ZWxzZXt0aGlzLl9oaWdobGlnaHRUaHJlc2hvbGQ9W1swLDBdLFswLDBdLFt0aGlzLmhpZ2hsaWdodFRocmVzaG9sZCwwXSxbdGhpcy5oaWdobGlnaHRUaHJlc2hvbGQsMF1dfXRoaXMucmVuZGVyZXIub3B0aW9ucz1qO3RoaXMuX2hpZ2hsaWdodGVkUG9pbnQ9bnVsbDt0aGlzLl9kYXRhQ29sb3JzPVtdO3RoaXMuX2JhclBvaW50cz1bXTt0aGlzLmZpbGxBeGlzPSJ5Ijt0aGlzLl9wcmltYXJ5QXhpcz0iX3lheGlzIjt0aGlzLl94bnVkZ2U9MDt2YXIgbj17bGluZUpvaW46Im1pdGVyIixsaW5lQ2FwOiJidXR0IixmaWxsOnRoaXMuZmlsbCxmaWxsUmVjdDp0aGlzLmZpbGwsaXNhcmM6ZmFsc2Usc3Ryb2tlU3R5bGU6dGhpcy5jb2xvcixmaWxsU3R5bGU6dGhpcy5jb2xvcixjbG9zZVBhdGg6dGhpcy5maWxsLGxpbmVXaWR0aDp0aGlzLmxpbmVXaWR0aH07dGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmluaXQobik7dmFyIG09ai5zaGFkb3dPZmZzZXQ7aWYobT09bnVsbCl7aWYodGhpcy5saW5lV2lkdGg+Mi41KXttPTEuMjUqKDErKE1hdGguYXRhbigodGhpcy5saW5lV2lkdGgvMi41KSkvMC43ODUzOTgxNjMtMSkqMC42KX1lbHNle209MS4yNSpNYXRoLmF0YW4oKHRoaXMubGluZVdpZHRoLzIuNSkpLzAuNzg1Mzk4MTYzfX12YXIgaD17bGluZUpvaW46Im1pdGVyIixsaW5lQ2FwOiJidXR0IixmaWxsOnRoaXMuZmlsbCxmaWxsUmVjdDp0aGlzLmZpbGwsaXNhcmM6ZmFsc2UsYW5nbGU6dGhpcy5zaGFkb3dBbmdsZSxvZmZzZXQ6bSxhbHBoYTp0aGlzLnNoYWRvd0FscGhhLGRlcHRoOnRoaXMuc2hhZG93RGVwdGgsY2xvc2VQYXRoOnRoaXMuZmlsbCxsaW5lV2lkdGg6dGhpcy5saW5lV2lkdGh9O3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuaW5pdChoKTtvLnBvc3REcmF3SG9va3MuYWRkT25jZShmKTtvLmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RNb3VzZU1vdmUiLGUpO2lmKHRoaXMuc2lkZT09PSJsZWZ0Iil7Zm9yKHZhciBrPTAsZz10aGlzLmRhdGEubGVuZ3RoO2s8ZztrKyspe3RoaXMuZGF0YVtrXVsxXT0tTWF0aC5hYnModGhpcy5kYXRhW2tdWzFdKX19fTtjLmpxcGxvdC5QeXJhbWlkUmVuZGVyZXIucHJvdG90eXBlLnNldEdyaWREYXRhPWZ1bmN0aW9uKHApe3ZhciBqPXRoaXMuX3hheGlzLnNlcmllc191MnA7dmFyIG89dGhpcy5feWF4aXMuc2VyaWVzX3UycDt2YXIgaz10aGlzLl9wbG90RGF0YTt2YXIgbj10aGlzLl9wcmV2UGxvdERhdGE7dGhpcy5ncmlkRGF0YT1bXTt0aGlzLl9wcmV2R3JpZERhdGE9W107dmFyIGc9ay5sZW5ndGg7dmFyIG09ZmFsc2U7dmFyIGg7Zm9yKGg9MDtoPGc7aCsrKXtpZihrW2hdWzFdPDApe3RoaXMuc2lkZT0ibGVmdCJ9fWlmKHRoaXMuX3lheGlzLm5hbWU9PT0ieU1pZEF4aXMiJiZ0aGlzLnNpZGU9PT0icmlnaHQiKXt0aGlzLl94bnVkZ2U9dGhpcy5feGF4aXMubWF4LzIwMDA7bT10cnVlfWZvcihoPTA7aDxnO2grKyl7aWYoa1toXVswXSE9bnVsbCYma1toXVsxXSE9bnVsbCl7dGhpcy5ncmlkRGF0YS5wdXNoKFtqKGtbaF1bMV0pLG8oa1toXVswXSldKX1lbHNle2lmKGtbaF1bMF09PW51bGwpe3RoaXMuZ3JpZERhdGEucHVzaChbaihrW2hdWzFdKSxudWxsXSl9ZWxzZXtpZihrW2hdWzFdPT1udWxsKXt0aGlzLmdyaWREYXRhLnB1c2gobnVsbCxbbyhrW2hdWzBdKV0pfX19aWYoa1toXVsxXT09PTAmJm0pe3RoaXMuZ3JpZERhdGFbaF1bMF09aih0aGlzLl94bnVkZ2UpfX19O2MuanFwbG90LlB5cmFtaWRSZW5kZXJlci5wcm90b3R5cGUubWFrZUdyaWREYXRhPWZ1bmN0aW9uKG0scCl7dmFyIGs9dGhpcy5feGF4aXMuc2VyaWVzX3UycDt2YXIgbz10aGlzLl95YXhpcy5zZXJpZXNfdTJwO3ZhciBqPVtdO3ZhciBnPW0ubGVuZ3RoO3ZhciBuPWZhbHNlO3ZhciBoO2ZvcihoPTA7aDxnO2grKyl7aWYobVtoXVsxXTwwKXt0aGlzLnNpZGU9ImxlZnQifX1pZih0aGlzLl95YXhpcy5uYW1lPT09InlNaWRBeGlzIiYmdGhpcy5zaWRlPT09InJpZ2h0Iil7dGhpcy5feG51ZGdlPXRoaXMuX3hheGlzLm1heC8yMDAwO249dHJ1ZX1mb3IoaD0wO2g8ZztoKyspe2lmKG1baF1bMF0hPW51bGwmJm1baF1bMV0hPW51bGwpe2oucHVzaChbayhtW2hdWzFdKSxvKG1baF1bMF0pXSl9ZWxzZXtpZihtW2hdWzBdPT1udWxsKXtqLnB1c2goW2sobVtoXVsxXSksbnVsbF0pfWVsc2V7aWYobVtoXVsxXT09bnVsbCl7ai5wdXNoKFtudWxsLG8obVtoXVswXSldKX19fWlmKG1baF1bMV09PT0wJiZuKXtqW2hdWzBdPWsodGhpcy5feG51ZGdlKX19cmV0dXJuIGp9O2MuanFwbG90LlB5cmFtaWRSZW5kZXJlci5wcm90b3R5cGUuc2V0QmFyV2lkdGg9ZnVuY3Rpb24oKXt2YXIgazt2YXIgZz0wO3ZhciBoPTA7dmFyIG09dGhpc1t0aGlzLl9wcmltYXJ5QXhpc107dmFyIHEsbCxvO2c9bS5tYXgtbS5taW47dmFyIG49bS5udW1iZXJUaWNrczt2YXIgaj0obi0xKS8yO3ZhciBwPSh0aGlzLmJhclBhZGRpbmc9PT0wKT8xOjA7aWYobS5uYW1lPT0ieGF4aXMifHxtLm5hbWU9PSJ4MmF4aXMiKXt0aGlzLmJhcldpZHRoPShtLl9vZmZzZXRzLm1heC1tLl9vZmZzZXRzLm1pbikvZy10aGlzLmJhclBhZGRpbmcrcH1lbHNle2lmKHRoaXMuZmlsbCl7dGhpcy5iYXJXaWR0aD0obS5fb2Zmc2V0cy5taW4tbS5fb2Zmc2V0cy5tYXgpL2ctdGhpcy5iYXJQYWRkaW5nK3B9ZWxzZXt0aGlzLmJhcldpZHRoPShtLl9vZmZzZXRzLm1pbi1tLl9vZmZzZXRzLm1heCkvZ319fTtjLmpxcGxvdC5QeXJhbWlkUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oQixJLGspe3ZhciBFO3ZhciB1PWMuZXh0ZW5kKHt9LGspO3ZhciBwPSh1LnNoYWRvdyE9dW5kZWZpbmVkKT91LnNoYWRvdzp0aGlzLnNoYWRvdzt2YXIgSz0odS5zaG93TGluZSE9dW5kZWZpbmVkKT91LnNob3dMaW5lOnRoaXMuc2hvd0xpbmU7dmFyIEM9KHUuZmlsbCE9dW5kZWZpbmVkKT91LmZpbGw6dGhpcy5maWxsO3ZhciB0PXRoaXMuX3hheGlzLnNlcmllc191MnA7dmFyIEc9dGhpcy5feWF4aXMuc2VyaWVzX3UycDt2YXIgeix4O3RoaXMuX2RhdGFDb2xvcnM9W107dGhpcy5fYmFyUG9pbnRzPVtdO2lmKHRoaXMucmVuZGVyZXIub3B0aW9ucy5iYXJXaWR0aD09bnVsbCl7dGhpcy5yZW5kZXJlci5zZXRCYXJXaWR0aC5jYWxsKHRoaXMpfXZhciBEPVtdLHMsRjtpZihLKXt2YXIgcT1uZXcgYy5qcXBsb3QuQ29sb3JHZW5lcmF0b3IodGhpcy5uZWdhdGl2ZVNlcmllc0NvbG9ycyk7dmFyIHY9bmV3IGMuanFwbG90LkNvbG9yR2VuZXJhdG9yKHRoaXMuc2VyaWVzQ29sb3JzKTt2YXIgSj1xLmdldCh0aGlzLmluZGV4KTtpZighdGhpcy51c2VOZWdhdGl2ZUNvbG9ycyl7Sj11LmZpbGxTdHlsZX12YXIgbz11LmZpbGxTdHlsZTt2YXIgbjt2YXIgTD10aGlzLl94YXhpcy5zZXJpZXNfdTJwKHRoaXMuX3hudWRnZSk7dmFyIGo9dGhpcy5feWF4aXMuc2VyaWVzX3UycCh0aGlzLl95YXhpcy5taW4pO3ZhciBtPXRoaXMuX3lheGlzLnNlcmllc191MnAodGhpcy5feWF4aXMubWF4KTt2YXIgSD10aGlzLmJhcldpZHRoO3ZhciB5PUgvMjt2YXIgRD1bXTt2YXIgcj10aGlzLm9mZnNldEJhcnM/eTowO2Zvcih2YXIgRT0wLEE9SS5sZW5ndGg7RTxBO0UrKyl7aWYodGhpcy5kYXRhW0VdWzBdPT1udWxsKXtjb250aW51ZX1uPUlbRV1bMV07aWYodGhpcy5fcGxvdERhdGFbRV1bMV08MCl7aWYodGhpcy52YXJ5QmFyQ29sb3ImJiF0aGlzLl9zdGFjayl7aWYodGhpcy51c2VOZWdhdGl2ZUNvbG9ycyl7dS5maWxsU3R5bGU9cS5uZXh0KCl9ZWxzZXt1LmZpbGxTdHlsZT12Lm5leHQoKX19fWVsc2V7aWYodGhpcy52YXJ5QmFyQ29sb3ImJiF0aGlzLl9zdGFjayl7dS5maWxsU3R5bGU9di5uZXh0KCl9ZWxzZXt1LmZpbGxTdHlsZT1vfX1pZih0aGlzLmZpbGwpe2lmKHRoaXMuX3Bsb3REYXRhW0VdWzFdPj0wKXtzPUlbRV1bMF0tTDtGPXRoaXMuYmFyV2lkdGg7RD1bTCxuLXktcixzLEZdfWVsc2V7cz1MLUlbRV1bMF07Rj10aGlzLmJhcldpZHRoO0Q9W0lbRV1bMF0sbi15LXIscyxGXX10aGlzLl9iYXJQb2ludHMucHVzaChbW0RbMF0sRFsxXStGXSxbRFswXSxEWzFdXSxbRFswXStzLERbMV1dLFtEWzBdK3MsRFsxXStGXV0pO2lmKHApe3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhCLEQpfXZhciBnPXUuZmlsbFN0eWxlfHx0aGlzLmNvbG9yO3RoaXMuX2RhdGFDb2xvcnMucHVzaChnKTt0aGlzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhCLEQsdSl9ZWxzZXtpZihFPT09MCl7RD1bW0wsal0sW0lbRV1bMF0sal0sW0lbRV1bMF0sSVtFXVsxXS15LXJdXX1lbHNle2lmKEU8QS0xKXtEPUQuY29uY2F0KFtbSVtFLTFdWzBdLElbRS0xXVsxXS15LXJdLFtJW0VdWzBdLElbRV1bMV0reS1yXSxbSVtFXVswXSxJW0VdWzFdLXktcl1dKX1lbHNle0Q9RC5jb25jYXQoW1tJW0UtMV1bMF0sSVtFLTFdWzFdLXktcl0sW0lbRV1bMF0sSVtFXVsxXSt5LXJdLFtJW0VdWzBdLG1dLFtMLG1dXSk7aWYocCl7dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KEIsRCl9dmFyIGc9dS5maWxsU3R5bGV8fHRoaXMuY29sb3I7dGhpcy5fZGF0YUNvbG9ycy5wdXNoKGcpO3RoaXMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5kcmF3KEIsRCx1KX19fX19aWYodGhpcy5oaWdobGlnaHRDb2xvcnMubGVuZ3RoPT0wKXt0aGlzLmhpZ2hsaWdodENvbG9ycz1jLmpxcGxvdC5jb21wdXRlSGlnaGxpZ2h0Q29sb3JzKHRoaXMuX2RhdGFDb2xvcnMpfWVsc2V7aWYodHlwZW9mKHRoaXMuaGlnaGxpZ2h0Q29sb3JzKT09InN0cmluZyIpe3RoaXMuaGlnaGxpZ2h0Q29sb3JzPVtdO2Zvcih2YXIgRT0wO0U8dGhpcy5fZGF0YUNvbG9ycy5sZW5ndGg7RSsrKXt0aGlzLmhpZ2hsaWdodENvbG9ycy5wdXNoKHRoaXMuaGlnaGxpZ2h0Q29sb3JzKX19fX07ZnVuY3Rpb24gYihsLGssaCl7aD1ofHx7fTtoLmF4ZXNEZWZhdWx0cz1oLmF4ZXNEZWZhdWx0c3x8e307aC5ncmlkPWguZ3JpZHx8e307aC5sZWdlbmQ9aC5sZWdlbmR8fHt9O2guc2VyaWVzRGVmYXVsdHM9aC5zZXJpZXNEZWZhdWx0c3x8e307dmFyIGc9ZmFsc2U7aWYoaC5zZXJpZXNEZWZhdWx0cy5yZW5kZXJlcj09PWMuanFwbG90LlB5cmFtaWRSZW5kZXJlcil7Zz10cnVlfWVsc2V7aWYoaC5zZXJpZXMpe2Zvcih2YXIgaj0wO2o8aC5zZXJpZXMubGVuZ3RoO2orKyl7aWYoaC5zZXJpZXNbal0ucmVuZGVyZXI9PT1jLmpxcGxvdC5QeXJhbWlkUmVuZGVyZXIpe2c9dHJ1ZX19fX1pZihnKXtoLmF4ZXNEZWZhdWx0cy5yZW5kZXJlcj1jLmpxcGxvdC5QeXJhbWlkQXhpc1JlbmRlcmVyO2guZ3JpZC5yZW5kZXJlcj1jLmpxcGxvdC5QeXJhbWlkR3JpZFJlbmRlcmVyO2guc2VyaWVzRGVmYXVsdHMucG9pbnRMYWJlbHM9e3Nob3c6ZmFsc2V9fX1mdW5jdGlvbiBmKCl7aWYodGhpcy5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlciYmdGhpcy5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRDYW52YXMpe3RoaXMucGx1Z2lucy5weXJhbWlkUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnJlc2V0Q2FudmFzKCk7dGhpcy5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRDYW52YXM9bnVsbH10aGlzLnBsdWdpbnMucHlyYW1pZFJlbmRlcmVyPXtoaWdobGlnaHRlZFNlcmllc0luZGV4Om51bGx9O3RoaXMucGx1Z2lucy5weXJhbWlkUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzPW5ldyBjLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUodGhpcy5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywianFwbG90LXB5cmFtaWRSZW5kZXJlci1oaWdobGlnaHQtY2FudmFzIix0aGlzLl9wbG90RGltZW5zaW9ucyx0aGlzKSk7dGhpcy5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuc2V0Q29udGV4dCgpO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgibW91c2VsZWF2ZSIse3Bsb3Q6dGhpc30sZnVuY3Rpb24oZyl7ZChnLmRhdGEucGxvdCl9KX1mdW5jdGlvbiBhKG0sbCxqLGkpe3ZhciBoPW0uc2VyaWVzW2xdO3ZhciBnPW0ucGx1Z2lucy5weXJhbWlkUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzO2cuX2N0eC5jbGVhclJlY3QoMCwwLGcuX2N0eC5jYW52YXMud2lkdGgsZy5fY3R4LmNhbnZhcy5oZWlnaHQpO2guX2hpZ2hsaWdodGVkUG9pbnQ9ajttLnBsdWdpbnMucHlyYW1pZFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg9bDt2YXIgaz17ZmlsbFN0eWxlOmguaGlnaGxpZ2h0Q29sb3JzW2pdLGZpbGxSZWN0OmZhbHNlfTtoLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhnLl9jdHgsaSxrKTtpZihoLnN5bmNocm9uaXplSGlnaGxpZ2h0IT09ZmFsc2UmJm0uc2VyaWVzLmxlbmd0aD49aC5zeW5jaHJvbml6ZUhpZ2hsaWdodCYmaC5zeW5jaHJvbml6ZUhpZ2hsaWdodCE9PWwpe2g9bS5zZXJpZXNbaC5zeW5jaHJvbml6ZUhpZ2hsaWdodF07az17ZmlsbFN0eWxlOmguaGlnaGxpZ2h0Q29sb3JzW2pdLGZpbGxSZWN0OmZhbHNlfTtoLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhnLl9jdHgsaC5fYmFyUG9pbnRzW2pdLGspfWc9bnVsbH1mdW5jdGlvbiBkKGope3ZhciBnPWoucGx1Z2lucy5weXJhbWlkUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzO2cuX2N0eC5jbGVhclJlY3QoMCwwLGcuX2N0eC5jYW52YXMud2lkdGgsZy5fY3R4LmNhbnZhcy5oZWlnaHQpO2Zvcih2YXIgaD0wO2g8ai5zZXJpZXMubGVuZ3RoO2grKyl7ai5zZXJpZXNbaF0uX2hpZ2hsaWdodGVkUG9pbnQ9bnVsbH1qLnBsdWdpbnMucHlyYW1pZFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg9bnVsbDtqLnRhcmdldC50cmlnZ2VyKCJqcXBsb3REYXRhVW5oaWdobGlnaHQiKTtnPW51bGx9ZnVuY3Rpb24gZShrLGosbixtLGwpe2lmKG0pe3ZhciBpPVttLnNlcmllc0luZGV4LG0ucG9pbnRJbmRleCxtLmRhdGFdO3ZhciBoPWpRdWVyeS5FdmVudCgianFwbG90RGF0YU1vdXNlT3ZlciIpO2gucGFnZVg9ay5wYWdlWDtoLnBhZ2VZPWsucGFnZVk7bC50YXJnZXQudHJpZ2dlcihoLGkpO2lmKGwuc2VyaWVzW2lbMF1dLmhpZ2hsaWdodE1vdXNlT3ZlciYmIShpWzBdPT1sLnBsdWdpbnMucHlyYW1pZFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXgmJmlbMV09PWwuc2VyaWVzW2lbMF1dLl9oaWdobGlnaHRlZFBvaW50KSl7dmFyIGc9alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhSGlnaGxpZ2h0Iik7Zy53aGljaD1rLndoaWNoO2cucGFnZVg9ay5wYWdlWDtnLnBhZ2VZPWsucGFnZVk7bC50YXJnZXQudHJpZ2dlcihnLGkpO2EobCxtLnNlcmllc0luZGV4LG0ucG9pbnRJbmRleCxtLnBvaW50cyl9fWVsc2V7aWYobT09bnVsbCl7ZChsKX19fWMuanFwbG90LnByZUluaXRIb29rcy5wdXNoKGIpfSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.trendline.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgCiAgICAvKioKICAgICAqIENsYXNzOiAkLmpxcGxvdC5UcmVuZGxpbmUKICAgICAqIFBsdWdpbiB3aGljaCB3aWxsIGF1dG9tYXRpY2FsbHkgY29tcHV0ZSBhbmQgZHJhdyB0cmVuZGxpbmVzIGZvciBwbG90dGVkIGRhdGEuCiAgICAgKi8KICAgICQuanFwbG90LlRyZW5kbGluZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIC8vIEdyb3VwOiBQcm9wZXJ0aWVzCiAgICAgICAgCiAgICAgICAgLy8gcHJvcDogc2hvdwogICAgICAgIC8vIFdldGhlciBvciBub3QgdG8gc2hvdyB0aGUgdHJlbmQgbGluZS4KICAgICAgICB0aGlzLnNob3cgPSAkLmpxcGxvdC5jb25maWcuZW5hYmxlUGx1Z2luczsKICAgICAgICAvLyBwcm9wOiBjb2xvcgogICAgICAgIC8vIENTUyBjb2xvciBzcGVjIGZvciB0aGUgdHJlbmQgbGluZS4KICAgICAgICAvLyBCeSBkZWZhdWx0IHRoaXMgd2lsIGJlIHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBwcmltYXJ5IGxpbmUuCiAgICAgICAgdGhpcy5jb2xvciA9ICcjNjY2NjY2JzsKICAgICAgICAvLyBwcm9wOiByZW5kZXJlcgogICAgICAgIC8vIFJlbmRlcmVyIHRvIHVzZSB0byBkcmF3IHRoZSB0cmVuZCBsaW5lLgogICAgICAgIC8vIFRoZSBkYXRhIHNlcmllcyB0aGF0IGlzIHBsb3R0ZWQgbWF5IG5vdCBiZSByZW5kZXJlZCBhcyBhIGxpbmUuCiAgICAgICAgLy8gVGhlcmVmb3JlLCB3ZSB1c2Ugb3VyIG93biBsaW5lIHJlbmRlcmVyIGhlcmUgdG8gZHJhdyBhIHRyZW5kIGxpbmUuCiAgICAgICAgdGhpcy5yZW5kZXJlciA9IG5ldyAkLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTsKICAgICAgICAvLyBwcm9wOiByZW5kZXJlck9wdGlvbnMKICAgICAgICAvLyBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGxpbmUgcmVuZGVyZXIuCiAgICAgICAgLy8gQnkgZGVmYXVsdCwgbWFya2VycyBhcmUgbm90IHNob3duIG9uIHRyZW5kIGxpbmVzLgogICAgICAgIHRoaXMucmVuZGVyZXJPcHRpb25zID0ge21hcmtlcjp7c2hvdzpmYWxzZX19OwogICAgICAgIC8vIHByb3A6IGxhYmVsCiAgICAgICAgLy8gTGFiZWwgZm9yIHRoZSB0cmVuZCBsaW5lIHRvIHVzZSBpbiB0aGUgbGVnZW5kLgogICAgICAgIHRoaXMubGFiZWwgPSAnJzsKICAgICAgICAvLyBwcm9wOiB0eXBlCiAgICAgICAgLy8gRWl0aGVyICdleHBvbmVudGlhbCcsICdleHAnLCBvciAnbGluZWFyJy4KICAgICAgICB0aGlzLnR5cGUgPSAnbGluZWFyJzsKICAgICAgICAvLyBwcm9wOiBzaGFkb3cKICAgICAgICAvLyB0cnVlIG9yIGZhbHNlLCB3aGV0aGVyIG9yIG5vdCB0byBzaG93IHRoZSBzaGFkb3cuCiAgICAgICAgdGhpcy5zaGFkb3cgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IG1hcmtlclJlbmRlcmVyCiAgICAgICAgLy8gUmVuZGVyZXIgdG8gdXNlIHRvIGRyYXcgbWFya2VycyBvbiB0aGUgbGluZS4KICAgICAgICAvLyBJIHRoaW5rIHRoaXMgaXMgd3JvbmcuCiAgICAgICAgdGhpcy5tYXJrZXJSZW5kZXJlciA9IHtzaG93OmZhbHNlfTsKICAgICAgICAvLyBwcm9wOiBsaW5lV2lkdGgKICAgICAgICAvLyBXaWR0aCBvZiB0aGUgdHJlbmQgbGluZS4KICAgICAgICB0aGlzLmxpbmVXaWR0aCA9IDEuNTsKICAgICAgICAvLyBwcm9wOiBzaGFkb3dBbmdsZQogICAgICAgIC8vIEFuZ2xlIG9mIHRoZSBzaGFkb3cgb24gdGhlIHRyZW5kIGxpbmUuCiAgICAgICAgdGhpcy5zaGFkb3dBbmdsZSA9IDQ1OwogICAgICAgIC8vIHByb3A6IHNoYWRvd09mZnNldAogICAgICAgIC8vIHBpeGVsIG9mZnNldCBmb3IgZWFjaCBzdHJva2Ugb2YgdGhlIHNoYWRvdy4KICAgICAgICB0aGlzLnNoYWRvd09mZnNldCA9IDEuMDsKICAgICAgICAvLyBwcm9wOiBzaGFkb3dBbHBoYQogICAgICAgIC8vIEFscGhhIHRyYW5zcGFyZW5jeSBvZiB0aGUgc2hhZG93LgogICAgICAgIHRoaXMuc2hhZG93QWxwaGEgPSAwLjA3OwogICAgICAgIC8vIHByb3A6IHNoYWRvd0RlcHRoCiAgICAgICAgLy8gbnVtYmVyIG9mIHN0cm9rZXMgdG8gbWFrZSBvZiB0aGUgc2hhZG93LgogICAgICAgIHRoaXMuc2hhZG93RGVwdGggPSAzOwogICAgICAgIHRoaXMuaXNUcmVuZGxpbmUgPSB0cnVlOwogICAgICAgIAogICAgfTsKICAgIAogICAgJC5qcXBsb3QucG9zdFNlcmllc0luaXRIb29rcy5wdXNoKHBhcnNlVHJlbmRMaW5lT3B0aW9ucyk7CiAgICAkLmpxcGxvdC5wb3N0RHJhd1Nlcmllc0hvb2tzLnB1c2goZHJhd1RyZW5kbGluZSk7CiAgICAkLmpxcGxvdC5hZGRMZWdlbmRSb3dIb29rcy5wdXNoKGFkZFRyZW5kbGluZUxlZ2VuZCk7CiAgICAKICAgIC8vIGNhbGxlZCB3aXRpbiBzY29wZSBvZiB0aGUgbGVnZW5kIG9iamVjdAogICAgLy8gY3VycmVudCBzZXJpZXMgcGFzc2VkIGluCiAgICAvLyBtdXN0IHJldHVybiBudWxsIG9yIGFuIG9iamVjdCB7bGFiZWw6bGFiZWwsIGNvbG9yOmNvbG9yfQogICAgZnVuY3Rpb24gYWRkVHJlbmRsaW5lTGVnZW5kKHNlcmllcykgewogICAgICAgIHZhciByZXQgPSBudWxsOwogICAgICAgIGlmIChzZXJpZXMudHJlbmRsaW5lICYmIHNlcmllcy50cmVuZGxpbmUuc2hvdykgewogICAgICAgICAgICB2YXIgbHQgPSBzZXJpZXMudHJlbmRsaW5lLmxhYmVsLnRvU3RyaW5nKCk7CiAgICAgICAgICAgIGlmIChsdCkgewogICAgICAgICAgICAgICAgcmV0ID0ge2xhYmVsOmx0LCBjb2xvcjpzZXJpZXMudHJlbmRsaW5lLmNvbG9yfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gcmV0OwogICAgfQoKICAgIC8vIGNhbGxlZCB3aXRoaW4gc2NvcGUgb2YgYSBzZXJpZXMKICAgIGZ1bmN0aW9uIHBhcnNlVHJlbmRMaW5lT3B0aW9ucyAodGFyZ2V0LCBkYXRhLCBzZXJpZXNEZWZhdWx0cywgb3B0aW9ucywgcGxvdCkgewogICAgICAgIGlmICh0aGlzLl90eXBlICYmICh0aGlzLl90eXBlID09PSAnbGluZScgfHwgdGhpcy5fdHlwZSA9PSAnYmFyJykpIHsKICAgICAgICAgICAgdGhpcy50cmVuZGxpbmUgPSBuZXcgJC5qcXBsb3QuVHJlbmRsaW5lKCk7CiAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogICAgICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLnRyZW5kbGluZSwge2NvbG9yOnRoaXMuY29sb3J9LCBzZXJpZXNEZWZhdWx0cy50cmVuZGxpbmUsIG9wdGlvbnMudHJlbmRsaW5lKTsKICAgICAgICAgICAgdGhpcy50cmVuZGxpbmUucmVuZGVyZXIuaW5pdC5jYWxsKHRoaXMudHJlbmRsaW5lLCBudWxsKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoaW4gc2NvcGUgb2Ygc2VyaWVzIG9iamVjdAogICAgZnVuY3Rpb24gZHJhd1RyZW5kbGluZShzY3R4LCBvcHRpb25zKSB7CiAgICAgICAgLy8gaWYgd2UgaGF2ZSBvcHRpb25zLCBtZXJnZSB0cmVuZGxpbmUgb3B0aW9ucyBpbiB3aXRoIHByZWNlZGVuY2UKICAgICAgICBvcHRpb25zID0gJC5leHRlbmQodHJ1ZSwge30sIHRoaXMudHJlbmRsaW5lLCBvcHRpb25zKTsKCiAgICAgICAgaWYgKHRoaXMudHJlbmRsaW5lICYmIG9wdGlvbnMuc2hvdykgewogICAgICAgICAgICB2YXIgZml0OwogICAgICAgICAgICAvLyB0aGlzLnJlbmRlcmVyLnNldEdyaWREYXRhLmNhbGwodGhpcyk7CiAgICAgICAgICAgIHZhciBkYXRhID0gb3B0aW9ucy5kYXRhIHx8IHRoaXMuZGF0YTsKICAgICAgICAgICAgZml0ID0gZml0RGF0YShkYXRhLCB0aGlzLnRyZW5kbGluZS50eXBlKTsKICAgICAgICAgICAgdmFyIGdyaWREYXRhID0gb3B0aW9ucy5ncmlkRGF0YSB8fCB0aGlzLnJlbmRlcmVyLm1ha2VHcmlkRGF0YS5jYWxsKHRoaXMsIGZpdC5kYXRhKTsKICAgICAgICAgICAgdGhpcy50cmVuZGxpbmUucmVuZGVyZXIuZHJhdy5jYWxsKHRoaXMudHJlbmRsaW5lLCBzY3R4LCBncmlkRGF0YSwge3Nob3dMaW5lOnRydWUsIHNoYWRvdzp0aGlzLnRyZW5kbGluZS5zaGFkb3d9KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIHJlZ3Jlc3Npb24oeCwgeSwgdHlwKSAgewogICAgICAgIHZhciB0eXBlID0gKHR5cCA9PSBudWxsKSA/ICdsaW5lYXInIDogdHlwOwogICAgICAgIHZhciBOID0geC5sZW5ndGg7CiAgICAgICAgdmFyIHNsb3BlOwogICAgICAgIHZhciBpbnRlcmNlcHQ7ICAKICAgICAgICB2YXIgU1ggPSAwOwogICAgICAgIHZhciBTWSA9IDA7CiAgICAgICAgdmFyIFNYWCA9IDA7CiAgICAgICAgdmFyIFNYWSA9IDA7CiAgICAgICAgdmFyIFNZWSA9IDA7CiAgICAgICAgdmFyIFkgPSBbXTsKICAgICAgICB2YXIgWCA9IFtdOwogICAgCiAgICAgICAgaWYgKHR5cGUgPT0gJ2xpbmVhcicpIHsKICAgICAgICAgICAgWCA9IHg7CiAgICAgICAgICAgIFkgPSB5OwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICh0eXBlID09ICdleHAnIHx8IHR5cGUgPT0gJ2V4cG9uZW50aWFsJykgewogICAgICAgICAgICBmb3IgKCB2YXIgaT0wOyBpPHkubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIC8vIGlnbm9yZSBwb2ludHMgPD0gMCwgbG9nIHVuZGVmaW5lZC4KICAgICAgICAgICAgICAgIGlmICh5W2ldIDw9IDApIHsKICAgICAgICAgICAgICAgICAgICBOLS07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBYLnB1c2goeFtpXSk7CiAgICAgICAgICAgICAgICAgICAgWS5wdXNoKE1hdGgubG9nKHlbaV0pKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yICggdmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7CiAgICAgICAgICAgIFNYID0gU1ggKyBYW2ldOwogICAgICAgICAgICBTWSA9IFNZICsgWVtpXTsKICAgICAgICAgICAgU1hZID0gU1hZICsgWFtpXSogWVtpXTsKICAgICAgICAgICAgU1hYID0gU1hYICsgWFtpXSogWFtpXTsKICAgICAgICAgICAgU1lZID0gU1lZICsgWVtpXSogWVtpXTsKICAgICAgICB9CgogICAgICAgIHNsb3BlID0gKE4qU1hZIC0gU1gqU1kpLyhOKlNYWCAtIFNYKlNYKTsKICAgICAgICBpbnRlcmNlcHQgPSAoU1kgLSBzbG9wZSpTWCkvTjsKCiAgICAgICAgcmV0dXJuIFtzbG9wZSwgaW50ZXJjZXB0XTsKICAgIH0KCiAgICBmdW5jdGlvbiBsaW5lYXJSZWdyZXNzaW9uKFgsWSkgewogICAgICAgIHZhciByZXQ7CiAgICAgICAgcmV0ID0gcmVncmVzc2lvbihYLFksJ2xpbmVhcicpOwogICAgICAgIHJldHVybiBbcmV0WzBdLHJldFsxXV07CiAgICB9CgogICAgZnVuY3Rpb24gZXhwUmVncmVzc2lvbihYLFkpIHsKICAgICAgICB2YXIgcmV0OwogICAgICAgIHZhciB4ID0gWDsKICAgICAgICB2YXIgeSA9IFk7CiAgICAgICAgcmV0ID0gcmVncmVzc2lvbih4LCB5LCdleHAnKTsKICAgICAgICB2YXIgYmFzZSA9IE1hdGguZXhwKHJldFswXSk7CiAgICAgICAgdmFyIGNvZWZmID0gTWF0aC5leHAocmV0WzFdKTsKICAgICAgICByZXR1cm4gW2Jhc2UsIGNvZWZmXTsKICAgIH0KCiAgICBmdW5jdGlvbiBmaXREYXRhKGRhdGEsIHR5cCkgewogICAgICAgIHZhciB0eXBlID0gKHR5cCA9PSBudWxsKSA/ICAnbGluZWFyJyA6IHR5cDsKICAgICAgICB2YXIgcmV0OwogICAgICAgIHZhciByZXM7CiAgICAgICAgdmFyIHggPSBbXTsKICAgICAgICB2YXIgeSA9IFtdOwogICAgICAgIHZhciB5cHJlZCA9IFtdOwogICAgICAgIAogICAgICAgIGZvciAoaT0wOyBpPGRhdGEubGVuZ3RoOyBpKyspewogICAgICAgICAgICBpZiAoZGF0YVtpXSAhPSBudWxsICYmIGRhdGFbaV1bMF0gIT0gbnVsbCAmJiBkYXRhW2ldWzFdICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHgucHVzaChkYXRhW2ldWzBdKTsKICAgICAgICAgICAgICAgIHkucHVzaChkYXRhW2ldWzFdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAodHlwZSA9PSAnbGluZWFyJykgewogICAgICAgICAgICByZXQgPSBsaW5lYXJSZWdyZXNzaW9uKHgseSk7CiAgICAgICAgICAgIGZvciAoIHZhciBpPTA7IGk8eC5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAgICAgICByZXMgPSByZXRbMF0qeFtpXSArIHJldFsxXTsKICAgICAgICAgICAgICAgIHlwcmVkLnB1c2goW3hbaV0sIHJlc10pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gJ2V4cCcgfHwgdHlwZSA9PSAnZXhwb25lbnRpYWwnKSB7CiAgICAgICAgICAgIHJldCA9IGV4cFJlZ3Jlc3Npb24oeCx5KTsKICAgICAgICAgICAgZm9yICggdmFyIGk9MDsgaTx4Lmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgICAgIHJlcyA9IHJldFsxXSpNYXRoLnBvdyhyZXRbMF0seFtpXSk7CiAgICAgICAgICAgICAgICB5cHJlZC5wdXNoKFt4W2ldLCByZXNdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4ge2RhdGE6IHlwcmVkLCBzbG9wZTogcmV0WzBdLCBpbnRlcmNlcHQ6IHJldFsxXX07CiAgICB9IAoKfSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.trendline.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGYpe2YuanFwbG90LlRyZW5kbGluZT1mdW5jdGlvbigpe3RoaXMuc2hvdz1mLmpxcGxvdC5jb25maWcuZW5hYmxlUGx1Z2luczt0aGlzLmNvbG9yPSIjNjY2NjY2Ijt0aGlzLnJlbmRlcmVyPW5ldyBmLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTt0aGlzLnJlbmRlcmVyT3B0aW9ucz17bWFya2VyOntzaG93OmZhbHNlfX07dGhpcy5sYWJlbD0iIjt0aGlzLnR5cGU9ImxpbmVhciI7dGhpcy5zaGFkb3c9dHJ1ZTt0aGlzLm1hcmtlclJlbmRlcmVyPXtzaG93OmZhbHNlfTt0aGlzLmxpbmVXaWR0aD0xLjU7dGhpcy5zaGFkb3dBbmdsZT00NTt0aGlzLnNoYWRvd09mZnNldD0xO3RoaXMuc2hhZG93QWxwaGE9MC4wNzt0aGlzLnNoYWRvd0RlcHRoPTM7dGhpcy5pc1RyZW5kbGluZT10cnVlfTtmLmpxcGxvdC5wb3N0U2VyaWVzSW5pdEhvb2tzLnB1c2goZSk7Zi5qcXBsb3QucG9zdERyYXdTZXJpZXNIb29rcy5wdXNoKGcpO2YuanFwbG90LmFkZExlZ2VuZFJvd0hvb2tzLnB1c2goYSk7ZnVuY3Rpb24gYShrKXt2YXIgaj1udWxsO2lmKGsudHJlbmRsaW5lJiZrLnRyZW5kbGluZS5zaG93KXt2YXIgaT1rLnRyZW5kbGluZS5sYWJlbC50b1N0cmluZygpO2lmKGkpe2o9e2xhYmVsOmksY29sb3I6ay50cmVuZGxpbmUuY29sb3J9fX1yZXR1cm4gan1mdW5jdGlvbiBlKG0sayxqLGksbCl7aWYodGhpcy5fdHlwZSYmKHRoaXMuX3R5cGU9PT0ibGluZSJ8fHRoaXMuX3R5cGU9PSJiYXIiKSl7dGhpcy50cmVuZGxpbmU9bmV3IGYuanFwbG90LlRyZW5kbGluZSgpO2k9aXx8e307Zi5leHRlbmQodHJ1ZSx0aGlzLnRyZW5kbGluZSx7Y29sb3I6dGhpcy5jb2xvcn0sai50cmVuZGxpbmUsaS50cmVuZGxpbmUpO3RoaXMudHJlbmRsaW5lLnJlbmRlcmVyLmluaXQuY2FsbCh0aGlzLnRyZW5kbGluZSxudWxsKX19ZnVuY3Rpb24gZyhtLGkpe2k9Zi5leHRlbmQodHJ1ZSx7fSx0aGlzLnRyZW5kbGluZSxpKTtpZih0aGlzLnRyZW5kbGluZSYmaS5zaG93KXt2YXIgazt2YXIgbD1pLmRhdGF8fHRoaXMuZGF0YTtrPWMobCx0aGlzLnRyZW5kbGluZS50eXBlKTt2YXIgaj1pLmdyaWREYXRhfHx0aGlzLnJlbmRlcmVyLm1ha2VHcmlkRGF0YS5jYWxsKHRoaXMsay5kYXRhKTt0aGlzLnRyZW5kbGluZS5yZW5kZXJlci5kcmF3LmNhbGwodGhpcy50cmVuZGxpbmUsbSxqLHtzaG93TGluZTp0cnVlLHNoYWRvdzp0aGlzLnRyZW5kbGluZS5zaGFkb3d9KX19ZnVuY3Rpb24gYih3LHYsbil7dmFyIHU9KG49PW51bGwpPyJsaW5lYXIiOm47dmFyIHM9dy5sZW5ndGg7dmFyIHQ7dmFyIHo7dmFyIG89MDt2YXIgbT0wO3ZhciByPTA7dmFyIHE9MDt2YXIgbD0wO3ZhciBqPVtdO3ZhciBrPVtdO2lmKHU9PSJsaW5lYXIiKXtrPXc7aj12fWVsc2V7aWYodT09ImV4cCJ8fHU9PSJleHBvbmVudGlhbCIpe2Zvcih2YXIgcD0wO3A8di5sZW5ndGg7cCsrKXtpZih2W3BdPD0wKXtzLS19ZWxzZXtrLnB1c2god1twXSk7ai5wdXNoKE1hdGgubG9nKHZbcF0pKX19fX1mb3IodmFyIHA9MDtwPHM7cCsrKXtvPW8ra1twXTttPW0raltwXTtxPXEra1twXSpqW3BdO3I9citrW3BdKmtbcF07bD1sK2pbcF0qaltwXX10PShzKnEtbyptKS8ocypyLW8qbyk7ej0obS10Km8pL3M7cmV0dXJuW3Qsel19ZnVuY3Rpb24gaChrLGope3ZhciBpO2k9YihrLGosImxpbmVhciIpO3JldHVybltpWzBdLGlbMV1dfWZ1bmN0aW9uIGQobyxtKXt2YXIgazt2YXIgaT1vO3ZhciBuPW07az1iKGksbiwiZXhwIik7dmFyIGw9TWF0aC5leHAoa1swXSk7dmFyIGo9TWF0aC5leHAoa1sxXSk7cmV0dXJuW2wsal19ZnVuY3Rpb24gYyhsLGope3ZhciBwPShqPT1udWxsKT8ibGluZWFyIjpqO3ZhciBuO3ZhciBvO3ZhciByPVtdO3ZhciBxPVtdO3ZhciBtPVtdO2ZvcihrPTA7azxsLmxlbmd0aDtrKyspe2lmKGxba10hPW51bGwmJmxba11bMF0hPW51bGwmJmxba11bMV0hPW51bGwpe3IucHVzaChsW2tdWzBdKTtxLnB1c2gobFtrXVsxXSl9fWlmKHA9PSJsaW5lYXIiKXtuPWgocixxKTtmb3IodmFyIGs9MDtrPHIubGVuZ3RoO2srKyl7bz1uWzBdKnJba10rblsxXTttLnB1c2goW3Jba10sb10pfX1lbHNle2lmKHA9PSJleHAifHxwPT0iZXhwb25lbnRpYWwiKXtuPWQocixxKTtmb3IodmFyIGs9MDtrPHIubGVuZ3RoO2srKyl7bz1uWzFdKk1hdGgucG93KG5bMF0scltrXSk7bS5wdXNoKFtyW2tdLG9dKX19fXJldHVybntkYXRhOm0sc2xvcGU6blswXSxpbnRlcmNlcHQ6blsxXX19fSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAACGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAABAAAQAABwAHQAc2RzY2xibwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAHAHMAYwByAGkAcAB0AHNkc2NsYm9vbAEAAAAGAHMAdAB5AGwAZQBzZHNjbGJvb2wBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAAAhgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAIAAAAGAAAAABAAAAwAAAAAAAAAABAAABAAAAAAEAAAIAAAAAAQAABAAAAAACAAAIAAAAGAAAAAAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/LGPL-LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CQkgICBHTlUgTEVTU0VSIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNwoKIENvcHlyaWdodCAoQykgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gPGh0dHA6Ly9mc2Yub3JnLz4KIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgoKICBUaGlzIHZlcnNpb24gb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpbmNvcnBvcmF0ZXMKdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHZlcnNpb24gMyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCkxpY2Vuc2UsIHN1cHBsZW1lbnRlZCBieSB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBsaXN0ZWQgYmVsb3cuCgogIDAuIEFkZGl0aW9uYWwgRGVmaW5pdGlvbnMuIAoKICBBcyB1c2VkIGhlcmVpbiwgInRoaXMgTGljZW5zZSIgcmVmZXJzIHRvIHZlcnNpb24gMyBvZiB0aGUgR05VIExlc3NlcgpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhbmQgdGhlICJHTlUgR1BMIiByZWZlcnMgdG8gdmVyc2lvbiAzIG9mIHRoZSBHTlUKR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgIlRoZSBMaWJyYXJ5IiByZWZlcnMgdG8gYSBjb3ZlcmVkIHdvcmsgZ292ZXJuZWQgYnkgdGhpcyBMaWNlbnNlLApvdGhlciB0aGFuIGFuIEFwcGxpY2F0aW9uIG9yIGEgQ29tYmluZWQgV29yayBhcyBkZWZpbmVkIGJlbG93LgoKICBBbiAiQXBwbGljYXRpb24iIGlzIGFueSB3b3JrIHRoYXQgbWFrZXMgdXNlIG9mIGFuIGludGVyZmFjZSBwcm92aWRlZApieSB0aGUgTGlicmFyeSwgYnV0IHdoaWNoIGlzIG5vdCBvdGhlcndpc2UgYmFzZWQgb24gdGhlIExpYnJhcnkuCkRlZmluaW5nIGEgc3ViY2xhc3Mgb2YgYSBjbGFzcyBkZWZpbmVkIGJ5IHRoZSBMaWJyYXJ5IGlzIGRlZW1lZCBhIG1vZGUKb2YgdXNpbmcgYW4gaW50ZXJmYWNlIHByb3ZpZGVkIGJ5IHRoZSBMaWJyYXJ5LgoKICBBICJDb21iaW5lZCBXb3JrIiBpcyBhIHdvcmsgcHJvZHVjZWQgYnkgY29tYmluaW5nIG9yIGxpbmtpbmcgYW4KQXBwbGljYXRpb24gd2l0aCB0aGUgTGlicmFyeS4gIFRoZSBwYXJ0aWN1bGFyIHZlcnNpb24gb2YgdGhlIExpYnJhcnkKd2l0aCB3aGljaCB0aGUgQ29tYmluZWQgV29yayB3YXMgbWFkZSBpcyBhbHNvIGNhbGxlZCB0aGUgIkxpbmtlZApWZXJzaW9uIi4KCiAgVGhlICJNaW5pbWFsIENvcnJlc3BvbmRpbmcgU291cmNlIiBmb3IgYSBDb21iaW5lZCBXb3JrIG1lYW5zIHRoZQpDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgdGhlIENvbWJpbmVkIFdvcmssIGV4Y2x1ZGluZyBhbnkgc291cmNlIGNvZGUKZm9yIHBvcnRpb25zIG9mIHRoZSBDb21iaW5lZCBXb3JrIHRoYXQsIGNvbnNpZGVyZWQgaW4gaXNvbGF0aW9uLCBhcmUKYmFzZWQgb24gdGhlIEFwcGxpY2F0aW9uLCBhbmQgbm90IG9uIHRoZSBMaW5rZWQgVmVyc2lvbi4KCiAgVGhlICJDb3JyZXNwb25kaW5nIEFwcGxpY2F0aW9uIENvZGUiIGZvciBhIENvbWJpbmVkIFdvcmsgbWVhbnMgdGhlCm9iamVjdCBjb2RlIGFuZC9vciBzb3VyY2UgY29kZSBmb3IgdGhlIEFwcGxpY2F0aW9uLCBpbmNsdWRpbmcgYW55IGRhdGEKYW5kIHV0aWxpdHkgcHJvZ3JhbXMgbmVlZGVkIGZvciByZXByb2R1Y2luZyB0aGUgQ29tYmluZWQgV29yayBmcm9tIHRoZQpBcHBsaWNhdGlvbiwgYnV0IGV4Y2x1ZGluZyB0aGUgU3lzdGVtIExpYnJhcmllcyBvZiB0aGUgQ29tYmluZWQgV29yay4KCiAgMS4gRXhjZXB0aW9uIHRvIFNlY3Rpb24gMyBvZiB0aGUgR05VIEdQTC4KCiAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsgdW5kZXIgc2VjdGlvbnMgMyBhbmQgNCBvZiB0aGlzIExpY2Vuc2UKd2l0aG91dCBiZWluZyBib3VuZCBieSBzZWN0aW9uIDMgb2YgdGhlIEdOVSBHUEwuCgogIDIuIENvbnZleWluZyBNb2RpZmllZCBWZXJzaW9ucy4KCiAgSWYgeW91IG1vZGlmeSBhIGNvcHkgb2YgdGhlIExpYnJhcnksIGFuZCwgaW4geW91ciBtb2RpZmljYXRpb25zLCBhCmZhY2lsaXR5IHJlZmVycyB0byBhIGZ1bmN0aW9uIG9yIGRhdGEgdG8gYmUgc3VwcGxpZWQgYnkgYW4gQXBwbGljYXRpb24KdGhhdCB1c2VzIHRoZSBmYWNpbGl0eSAob3RoZXIgdGhhbiBhcyBhbiBhcmd1bWVudCBwYXNzZWQgd2hlbiB0aGUKZmFjaWxpdHkgaXMgaW52b2tlZCksIHRoZW4geW91IG1heSBjb252ZXkgYSBjb3B5IG9mIHRoZSBtb2RpZmllZAp2ZXJzaW9uOgoKICAgYSkgdW5kZXIgdGhpcyBMaWNlbnNlLCBwcm92aWRlZCB0aGF0IHlvdSBtYWtlIGEgZ29vZCBmYWl0aCBlZmZvcnQgdG8KICAgZW5zdXJlIHRoYXQsIGluIHRoZSBldmVudCBhbiBBcHBsaWNhdGlvbiBkb2VzIG5vdCBzdXBwbHkgdGhlCiAgIGZ1bmN0aW9uIG9yIGRhdGEsIHRoZSBmYWNpbGl0eSBzdGlsbCBvcGVyYXRlcywgYW5kIHBlcmZvcm1zCiAgIHdoYXRldmVyIHBhcnQgb2YgaXRzIHB1cnBvc2UgcmVtYWlucyBtZWFuaW5nZnVsLCBvcgoKICAgYikgdW5kZXIgdGhlIEdOVSBHUEwsIHdpdGggbm9uZSBvZiB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvZgogICB0aGlzIExpY2Vuc2UgYXBwbGljYWJsZSB0byB0aGF0IGNvcHkuCgogIDMuIE9iamVjdCBDb2RlIEluY29ycG9yYXRpbmcgTWF0ZXJpYWwgZnJvbSBMaWJyYXJ5IEhlYWRlciBGaWxlcy4KCiAgVGhlIG9iamVjdCBjb2RlIGZvcm0gb2YgYW4gQXBwbGljYXRpb24gbWF5IGluY29ycG9yYXRlIG1hdGVyaWFsIGZyb20KYSBoZWFkZXIgZmlsZSB0aGF0IGlzIHBhcnQgb2YgdGhlIExpYnJhcnkuICBZb3UgbWF5IGNvbnZleSBzdWNoIG9iamVjdApjb2RlIHVuZGVyIHRlcm1zIG9mIHlvdXIgY2hvaWNlLCBwcm92aWRlZCB0aGF0LCBpZiB0aGUgaW5jb3Jwb3JhdGVkCm1hdGVyaWFsIGlzIG5vdCBsaW1pdGVkIHRvIG51bWVyaWNhbCBwYXJhbWV0ZXJzLCBkYXRhIHN0cnVjdHVyZQpsYXlvdXRzIGFuZCBhY2Nlc3NvcnMsIG9yIHNtYWxsIG1hY3JvcywgaW5saW5lIGZ1bmN0aW9ucyBhbmQgdGVtcGxhdGVzCih0ZW4gb3IgZmV3ZXIgbGluZXMgaW4gbGVuZ3RoKSwgeW91IGRvIGJvdGggb2YgdGhlIGZvbGxvd2luZzoKCiAgIGEpIEdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBvZiB0aGUgb2JqZWN0IGNvZGUgdGhhdCB0aGUKICAgTGlicmFyeSBpcyB1c2VkIGluIGl0IGFuZCB0aGF0IHRoZSBMaWJyYXJ5IGFuZCBpdHMgdXNlIGFyZQogICBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZS4KCiAgIGIpIEFjY29tcGFueSB0aGUgb2JqZWN0IGNvZGUgd2l0aCBhIGNvcHkgb2YgdGhlIEdOVSBHUEwgYW5kIHRoaXMgbGljZW5zZQogICBkb2N1bWVudC4KCiAgNC4gQ29tYmluZWQgV29ya3MuCgogIFlvdSBtYXkgY29udmV5IGEgQ29tYmluZWQgV29yayB1bmRlciB0ZXJtcyBvZiB5b3VyIGNob2ljZSB0aGF0LAp0YWtlbiB0b2dldGhlciwgZWZmZWN0aXZlbHkgZG8gbm90IHJlc3RyaWN0IG1vZGlmaWNhdGlvbiBvZiB0aGUKcG9ydGlvbnMgb2YgdGhlIExpYnJhcnkgY29udGFpbmVkIGluIHRoZSBDb21iaW5lZCBXb3JrIGFuZCByZXZlcnNlCmVuZ2luZWVyaW5nIGZvciBkZWJ1Z2dpbmcgc3VjaCBtb2RpZmljYXRpb25zLCBpZiB5b3UgYWxzbyBkbyBlYWNoIG9mCnRoZSBmb2xsb3dpbmc6CgogICBhKSBHaXZlIHByb21pbmVudCBub3RpY2Ugd2l0aCBlYWNoIGNvcHkgb2YgdGhlIENvbWJpbmVkIFdvcmsgdGhhdAogICB0aGUgTGlicmFyeSBpcyB1c2VkIGluIGl0IGFuZCB0aGF0IHRoZSBMaWJyYXJ5IGFuZCBpdHMgdXNlIGFyZQogICBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZS4KCiAgIGIpIEFjY29tcGFueSB0aGUgQ29tYmluZWQgV29yayB3aXRoIGEgY29weSBvZiB0aGUgR05VIEdQTCBhbmQgdGhpcyBsaWNlbnNlCiAgIGRvY3VtZW50LgoKICAgYykgRm9yIGEgQ29tYmluZWQgV29yayB0aGF0IGRpc3BsYXlzIGNvcHlyaWdodCBub3RpY2VzIGR1cmluZwogICBleGVjdXRpb24sIGluY2x1ZGUgdGhlIGNvcHlyaWdodCBub3RpY2UgZm9yIHRoZSBMaWJyYXJ5IGFtb25nCiAgIHRoZXNlIG5vdGljZXMsIGFzIHdlbGwgYXMgYSByZWZlcmVuY2UgZGlyZWN0aW5nIHRoZSB1c2VyIHRvIHRoZQogICBjb3BpZXMgb2YgdGhlIEdOVSBHUEwgYW5kIHRoaXMgbGljZW5zZSBkb2N1bWVudC4KCiAgIGQpIERvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgoKICAgICAgIDApIENvbnZleSB0aGUgTWluaW1hbCBDb3JyZXNwb25kaW5nIFNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcwogICAgICAgTGljZW5zZSwgYW5kIHRoZSBDb3JyZXNwb25kaW5nIEFwcGxpY2F0aW9uIENvZGUgaW4gYSBmb3JtCiAgICAgICBzdWl0YWJsZSBmb3IsIGFuZCB1bmRlciB0ZXJtcyB0aGF0IHBlcm1pdCwgdGhlIHVzZXIgdG8KICAgICAgIHJlY29tYmluZSBvciByZWxpbmsgdGhlIEFwcGxpY2F0aW9uIHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mCiAgICAgICB0aGUgTGlua2VkIFZlcnNpb24gdG8gcHJvZHVjZSBhIG1vZGlmaWVkIENvbWJpbmVkIFdvcmssIGluIHRoZQogICAgICAgbWFubmVyIHNwZWNpZmllZCBieSBzZWN0aW9uIDYgb2YgdGhlIEdOVSBHUEwgZm9yIGNvbnZleWluZwogICAgICAgQ29ycmVzcG9uZGluZyBTb3VyY2UuCgogICAgICAgMSkgVXNlIGEgc3VpdGFibGUgc2hhcmVkIGxpYnJhcnkgbWVjaGFuaXNtIGZvciBsaW5raW5nIHdpdGggdGhlCiAgICAgICBMaWJyYXJ5LiAgQSBzdWl0YWJsZSBtZWNoYW5pc20gaXMgb25lIHRoYXQgKGEpIHVzZXMgYXQgcnVuIHRpbWUKICAgICAgIGEgY29weSBvZiB0aGUgTGlicmFyeSBhbHJlYWR5IHByZXNlbnQgb24gdGhlIHVzZXIncyBjb21wdXRlcgogICAgICAgc3lzdGVtLCBhbmQgKGIpIHdpbGwgb3BlcmF0ZSBwcm9wZXJseSB3aXRoIGEgbW9kaWZpZWQgdmVyc2lvbgogICAgICAgb2YgdGhlIExpYnJhcnkgdGhhdCBpcyBpbnRlcmZhY2UtY29tcGF0aWJsZSB3aXRoIHRoZSBMaW5rZWQKICAgICAgIFZlcnNpb24uIAoKICAgZSkgUHJvdmlkZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24sIGJ1dCBvbmx5IGlmIHlvdSB3b3VsZCBvdGhlcndpc2UKICAgYmUgcmVxdWlyZWQgdG8gcHJvdmlkZSBzdWNoIGluZm9ybWF0aW9uIHVuZGVyIHNlY3Rpb24gNiBvZiB0aGUKICAgR05VIEdQTCwgYW5kIG9ubHkgdG8gdGhlIGV4dGVudCB0aGF0IHN1Y2ggaW5mb3JtYXRpb24gaXMKICAgbmVjZXNzYXJ5IHRvIGluc3RhbGwgYW5kIGV4ZWN1dGUgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZQogICBDb21iaW5lZCBXb3JrIHByb2R1Y2VkIGJ5IHJlY29tYmluaW5nIG9yIHJlbGlua2luZyB0aGUKICAgQXBwbGljYXRpb24gd2l0aCBhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIExpbmtlZCBWZXJzaW9uLiAoSWYKICAgeW91IHVzZSBvcHRpb24gNGQwLCB0aGUgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIG11c3QgYWNjb21wYW55CiAgIHRoZSBNaW5pbWFsIENvcnJlc3BvbmRpbmcgU291cmNlIGFuZCBDb3JyZXNwb25kaW5nIEFwcGxpY2F0aW9uCiAgIENvZGUuIElmIHlvdSB1c2Ugb3B0aW9uIDRkMSwgeW91IG11c3QgcHJvdmlkZSB0aGUgSW5zdGFsbGF0aW9uCiAgIEluZm9ybWF0aW9uIGluIHRoZSBtYW5uZXIgc3BlY2lmaWVkIGJ5IHNlY3Rpb24gNiBvZiB0aGUgR05VIEdQTAogICBmb3IgY29udmV5aW5nIENvcnJlc3BvbmRpbmcgU291cmNlLikKCiAgNS4gQ29tYmluZWQgTGlicmFyaWVzLgoKICBZb3UgbWF5IHBsYWNlIGxpYnJhcnkgZmFjaWxpdGllcyB0aGF0IGFyZSBhIHdvcmsgYmFzZWQgb24gdGhlCkxpYnJhcnkgc2lkZSBieSBzaWRlIGluIGEgc2luZ2xlIGxpYnJhcnkgdG9nZXRoZXIgd2l0aCBvdGhlciBsaWJyYXJ5CmZhY2lsaXRpZXMgdGhhdCBhcmUgbm90IEFwcGxpY2F0aW9ucyBhbmQgYXJlIG5vdCBjb3ZlcmVkIGJ5IHRoaXMKTGljZW5zZSwgYW5kIGNvbnZleSBzdWNoIGEgY29tYmluZWQgbGlicmFyeSB1bmRlciB0ZXJtcyBvZiB5b3VyCmNob2ljZSwgaWYgeW91IGRvIGJvdGggb2YgdGhlIGZvbGxvd2luZzoKCiAgIGEpIEFjY29tcGFueSB0aGUgY29tYmluZWQgbGlicmFyeSB3aXRoIGEgY29weSBvZiB0aGUgc2FtZSB3b3JrIGJhc2VkCiAgIG9uIHRoZSBMaWJyYXJ5LCB1bmNvbWJpbmVkIHdpdGggYW55IG90aGVyIGxpYnJhcnkgZmFjaWxpdGllcywKICAgY29udmV5ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KCiAgIGIpIEdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIHRoZSBjb21iaW5lZCBsaWJyYXJ5IHRoYXQgcGFydCBvZiBpdAogICBpcyBhIHdvcmsgYmFzZWQgb24gdGhlIExpYnJhcnksIGFuZCBleHBsYWluaW5nIHdoZXJlIHRvIGZpbmQgdGhlCiAgIGFjY29tcGFueWluZyB1bmNvbWJpbmVkIGZvcm0gb2YgdGhlIHNhbWUgd29yay4KCiAgNi4gUmV2aXNlZCBWZXJzaW9ucyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgoKICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucwpvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiBTdWNoIG5ldwp2ZXJzaW9ucyB3aWxsIGJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkKZGlmZmVyIGluIGRldGFpbCB0byBhZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCiAgRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuIElmIHRoZQpMaWJyYXJ5IGFzIHlvdSByZWNlaXZlZCBpdCBzcGVjaWZpZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbgpvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICJvciBhbnkgbGF0ZXIgdmVyc2lvbiIKYXBwbGllcyB0byBpdCwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZApjb25kaXRpb25zIGVpdGhlciBvZiB0aGF0IHB1Ymxpc2hlZCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uCnB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBJZiB0aGUgTGlicmFyeSBhcyB5b3UKcmVjZWl2ZWQgaXQgZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBHTlUgTGVzc2VyCkdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIG9mIHRoZSBHTlUgTGVzc2VyCkdlbmVyYWwgUHVibGljIExpY2Vuc2UgZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KCiAgSWYgdGhlIExpYnJhcnkgYXMgeW91IHJlY2VpdmVkIGl0IHNwZWNpZmllcyB0aGF0IGEgcHJveHkgY2FuIGRlY2lkZQp3aGV0aGVyIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHNoYWxsCmFwcGx5LCB0aGF0IHByb3h5J3MgcHVibGljIHN0YXRlbWVudCBvZiBhY2NlcHRhbmNlIG9mIGFueSB2ZXJzaW9uIGlzCnBlcm1hbmVudCBhdXRob3JpemF0aW9uIGZvciB5b3UgdG8gY2hvb3NlIHRoYXQgdmVyc2lvbiBmb3IgdGhlCkxpYnJhcnku]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/MIT-LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDAzLCAyMDA0IEppbSBXZWlyaWNoCgpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCiJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLApkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCnRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKClRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCmluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCkVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgpNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORApOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCkxJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCldJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo=]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/scripts/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/scripts/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/scripts/shAutoloader.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFN5bnRheEhpZ2hsaWdodGVyCiAqIGh0dHA6Ly9hbGV4Z29yYmF0Y2hldi5jb20vU3ludGF4SGlnaGxpZ2h0ZXIKICoKICogU3ludGF4SGlnaGxpZ2h0ZXIgaXMgZG9uYXRpb253YXJlLiBJZiB5b3UgYXJlIHVzaW5nIGl0LCBwbGVhc2UgZG9uYXRlLgogKiBodHRwOi8vYWxleGdvcmJhdGNoZXYuY29tL1N5bnRheEhpZ2hsaWdodGVyL2RvbmF0ZS5odG1sCiAqCiAqIEB2ZXJzaW9uCiAqIDMuMC44MyAoSnVseSAwMiAyMDEwKQogKiAKICogQGNvcHlyaWdodAogKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMCBBbGV4IEdvcmJhdGNoZXYuCiAqCiAqIEBsaWNlbnNlCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgogKi8KZXZhbChmdW5jdGlvbihwLGEsYyxrLGUsZCl7ZT1mdW5jdGlvbihjKXtyZXR1cm4oYzxhPycnOmUocGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50b1N0cmluZygzNikpfTtpZighJycucmVwbGFjZSgvXi8sU3RyaW5nKSl7d2hpbGUoYy0tKXtkW2UoYyldPWtbY118fGUoYyl9az1bZnVuY3Rpb24oZSl7cmV0dXJuIGRbZV19XTtlPWZ1bmN0aW9uKCl7cmV0dXJuJ1xcdysnfTtjPTF9O3doaWxlKGMtLSl7aWYoa1tjXSl7cD1wLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxiJytlKGMpKydcXGInLCdnJyksa1tjXSl9fXJldHVybiBwfSgnKDIoKXsxIGg9NTtoLkk9MigpezIgbihjLGEpezQoMSBkPTA7ZDxjLjk7ZCsrKWlbY1tkXV09YX0yIG8oYyl7MSBhPXIuSCgiSiIpLGQ9MzthLks9YzthLk09IkwvdCI7YS5HPSJ0IjthLnU9YS52PTIoKXs2KCFkJiYoITguN3x8OC43PT0iRiJ8fDguNz09InoiKSl7ZD1xO2VbY109cTthOns0KDEgcCB5IGUpNihlW3BdPT0zKUIgYTtqJiY1LkMoayl9YS51PWEudj14O2EuRC5PKGEpfX07ci5OLlIoYSl9MSBmPVEsbD1oLlAoKSxpPXt9LGU9e30saj0zLGs9eCxiOzUuVD0yKGMpe2s9YztqPXF9OzQoYj0wO2I8Zi45O2IrKyl7MSBtPWZbYl0udz9mW2JdOmZbYl0uUygvXFxzKy8pLGc9bS53KCk7bihtLGcpfTQoYj0wO2I8bC45O2IrKyk2KGc9aVtsW2JdLkUuQV0pe2VbZ109MztvKGcpfX19KSgpOycsNTYsNTYsJ3x2YXJ8ZnVuY3Rpb258ZmFsc2V8Zm9yfFN5bnRheEhpZ2hsaWdodGVyfGlmfHJlYWR5U3RhdGV8dGhpc3xsZW5ndGh8fHx8fHx8fHx8fHx8fHx8fHRydWV8ZG9jdW1lbnR8fGphdmFzY3JpcHR8b25sb2FkfG9ucmVhZHlzdGF0ZWNoYW5nZXxwb3B8bnVsbHxpbnxjb21wbGV0ZXxicnVzaHxicmVha3xoaWdobGlnaHR8cGFyZW50Tm9kZXxwYXJhbXN8bG9hZGVkfGxhbmd1YWdlfGNyZWF0ZUVsZW1lbnR8YXV0b2xvYWRlcnxzY3JpcHR8c3JjfHRleHR8dHlwZXxib2R5fHJlbW92ZUNoaWxkfGZpbmRFbGVtZW50c3xhcmd1bWVudHN8YXBwZW5kQ2hpbGR8c3BsaXR8YWxsJy5zcGxpdCgnfCcpLDAse30pKQo=]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/scripts/shAutoloader.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZXZhbChmdW5jdGlvbihoLGIsaixmLGcsaSl7Zz1mdW5jdGlvbihhKXtyZXR1cm4oYTxiPyIiOmcocGFyc2VJbnQoYS9iKSkpKygoYT1hJWIpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYSsyOSk6YS50b1N0cmluZygzNikpfTtpZighIiIucmVwbGFjZSgvXi8sU3RyaW5nKSl7d2hpbGUoai0tKXtpW2coaildPWZbal18fGcoail9Zj1bZnVuY3Rpb24oYSl7cmV0dXJuIGlbYV19XTtnPWZ1bmN0aW9uKCl7cmV0dXJuIlxcdysifTtqPTF9d2hpbGUoai0tKXtpZihmW2pdKXtoPWgucmVwbGFjZShuZXcgUmVnRXhwKCJcXGIiK2coaikrIlxcYiIsImciKSxmW2pdKX19cmV0dXJuIGh9KCcoMigpezEgaD01O2guST0yKCl7MiBuKGMsYSl7NCgxIGQ9MDtkPGMuOTtkKyspaVtjW2RdXT1hfTIgbyhjKXsxIGE9ci5IKCJKIiksZD0zO2EuSz1jO2EuTT0iTC90IjthLkc9InQiO2EudT1hLnY9MigpezYoIWQmJighOC43fHw4Ljc9PSJGInx8OC43PT0ieiIpKXtkPXE7ZVtjXT1xO2E6ezQoMSBwIHkgZSk2KGVbcF09PTMpQiBhO2omJjUuQyhrKX1hLnU9YS52PXg7YS5ELk8oYSl9fTtyLk4uUihhKX0xIGY9USxsPWguUCgpLGk9e30sZT17fSxqPTMsaz14LGI7NS5UPTIoYyl7az1jO2o9cX07NChiPTA7YjxmLjk7YisrKXsxIG09ZltiXS53P2ZbYl06ZltiXS5TKC9cXHMrLyksZz1tLncoKTtuKG0sZyl9NChiPTA7YjxsLjk7YisrKTYoZz1pW2xbYl0uRS5BXSl7ZVtnXT0zO28oZyl9fX0pKCk7Jyw1Niw1NiwifHZhcnxmdW5jdGlvbnxmYWxzZXxmb3J8U3ludGF4SGlnaGxpZ2h0ZXJ8aWZ8cmVhZHlTdGF0ZXx0aGlzfGxlbmd0aHx8fHx8fHx8fHx8fHx8fHx8dHJ1ZXxkb2N1bWVudHx8amF2YXNjcmlwdHxvbmxvYWR8b25yZWFkeXN0YXRlY2hhbmdlfHBvcHxudWxsfGlufGNvbXBsZXRlfGJydXNofGJyZWFrfGhpZ2hsaWdodHxwYXJlbnROb2RlfHBhcmFtc3xsb2FkZWR8bGFuZ3VhZ2V8Y3JlYXRlRWxlbWVudHxhdXRvbG9hZGVyfHNjcmlwdHxzcmN8dGV4dHx0eXBlfGJvZHl8cmVtb3ZlQ2hpbGR8ZmluZEVsZW1lbnRzfGFyZ3VtZW50c3xhcHBlbmRDaGlsZHxzcGxpdHxhbGwiLnNwbGl0KCJ8IiksMCx7fSkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/scripts/shBrushJScript.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFN5bnRheEhpZ2hsaWdodGVyCiAqIGh0dHA6Ly9hbGV4Z29yYmF0Y2hldi5jb20vU3ludGF4SGlnaGxpZ2h0ZXIKICoKICogU3ludGF4SGlnaGxpZ2h0ZXIgaXMgZG9uYXRpb253YXJlLiBJZiB5b3UgYXJlIHVzaW5nIGl0LCBwbGVhc2UgZG9uYXRlLgogKiBodHRwOi8vYWxleGdvcmJhdGNoZXYuY29tL1N5bnRheEhpZ2hsaWdodGVyL2RvbmF0ZS5odG1sCiAqCiAqIEB2ZXJzaW9uCiAqIDMuMC44MyAoSnVseSAwMiAyMDEwKQogKiAKICogQGNvcHlyaWdodAogKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMCBBbGV4IEdvcmJhdGNoZXYuCiAqCiAqIEBsaWNlbnNlCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgogKi8KOyhmdW5jdGlvbigpCnsKCS8vIENvbW1vbkpTCgl0eXBlb2YocmVxdWlyZSkgIT0gJ3VuZGVmaW5lZCcgPyBTeW50YXhIaWdobGlnaHRlciA9IHJlcXVpcmUoJ3NoQ29yZScpLlN5bnRheEhpZ2hsaWdodGVyIDogbnVsbDsKCglmdW5jdGlvbiBCcnVzaCgpCgl7CgkJdmFyIGtleXdvcmRzID0JJ2JyZWFrIGNhc2UgY2F0Y2ggY29udGludWUgJyArCgkJCQkJCSdkZWZhdWx0IGRlbGV0ZSBkbyBlbHNlIGZhbHNlICAnICsKCQkJCQkJJ2ZvciBmdW5jdGlvbiBpZiBpbiBpbnN0YW5jZW9mICcgKwoJCQkJCQknbmV3IG51bGwgcmV0dXJuIHN1cGVyIHN3aXRjaCAnICsKCQkJCQkJJ3RoaXMgdGhyb3cgdHJ1ZSB0cnkgdHlwZW9mIHZhciB3aGlsZSB3aXRoJwoJCQkJCQk7CgoJCXZhciByID0gU3ludGF4SGlnaGxpZ2h0ZXIucmVnZXhMaWI7CgkJCgkJdGhpcy5yZWdleExpc3QgPSBbCgkJCXsgcmVnZXg6IHIubXVsdGlMaW5lRG91YmxlUXVvdGVkU3RyaW5nLAkJCQkJY3NzOiAnc3RyaW5nJyB9LAkJCS8vIGRvdWJsZSBxdW90ZWQgc3RyaW5ncwoJCQl7IHJlZ2V4OiByLm11bHRpTGluZVNpbmdsZVF1b3RlZFN0cmluZywJCQkJCWNzczogJ3N0cmluZycgfSwJCQkvLyBzaW5nbGUgcXVvdGVkIHN0cmluZ3MKCQkJeyByZWdleDogci5zaW5nbGVMaW5lQ0NvbW1lbnRzLAkJCQkJCQljc3M6ICdjb21tZW50cycgfSwJCQkvLyBvbmUgbGluZSBjb21tZW50cwoJCQl7IHJlZ2V4OiByLm11bHRpTGluZUNDb21tZW50cywJCQkJCQkJY3NzOiAnY29tbWVudHMnIH0sCQkJLy8gbXVsdGlsaW5lIGNvbW1lbnRzCgkJCXsgcmVnZXg6IC9ccyojLiovZ20sCQkJCQkJCQkJY3NzOiAncHJlcHJvY2Vzc29yJyB9LAkJLy8gcHJlcHJvY2Vzc29yIHRhZ3MgbGlrZSAjcmVnaW9uIGFuZCAjZW5kcmVnaW9uCgkJCXsgcmVnZXg6IG5ldyBSZWdFeHAodGhpcy5nZXRLZXl3b3JkcyhrZXl3b3JkcyksICdnbScpLAljc3M6ICdrZXl3b3JkJyB9CQkJLy8ga2V5d29yZHMKCQkJXTsKCQoJCXRoaXMuZm9ySHRtbFNjcmlwdChyLnNjcmlwdFNjcmlwdFRhZ3MpOwoJfTsKCglCcnVzaC5wcm90b3R5cGUJPSBuZXcgU3ludGF4SGlnaGxpZ2h0ZXIuSGlnaGxpZ2h0ZXIoKTsKCUJydXNoLmFsaWFzZXMJPSBbJ2pzJywgJ2pzY3JpcHQnLCAnamF2YXNjcmlwdCddOwoKCVN5bnRheEhpZ2hsaWdodGVyLmJydXNoZXMuSlNjcmlwdCA9IEJydXNoOwoKCS8vIENvbW1vbkpTCgl0eXBlb2YoZXhwb3J0cykgIT0gJ3VuZGVmaW5lZCcgPyBleHBvcnRzLkJydXNoID0gQnJ1c2ggOiBudWxsOwp9KSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/scripts/shBrushJScript.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[KGZ1bmN0aW9uKCl7dHlwZW9mKHJlcXVpcmUpIT0idW5kZWZpbmVkIj9TeW50YXhIaWdobGlnaHRlcj1yZXF1aXJlKCJzaENvcmUiKS5TeW50YXhIaWdobGlnaHRlcjpudWxsO2Z1bmN0aW9uIGEoKXt2YXIgYj0iYnJlYWsgY2FzZSBjYXRjaCBjb250aW51ZSBkZWZhdWx0IGRlbGV0ZSBkbyBlbHNlIGZhbHNlICBmb3IgZnVuY3Rpb24gaWYgaW4gaW5zdGFuY2VvZiBuZXcgbnVsbCByZXR1cm4gc3VwZXIgc3dpdGNoIHRoaXMgdGhyb3cgdHJ1ZSB0cnkgdHlwZW9mIHZhciB3aGlsZSB3aXRoIjt2YXIgYz1TeW50YXhIaWdobGlnaHRlci5yZWdleExpYjt0aGlzLnJlZ2V4TGlzdD1be3JlZ2V4OmMubXVsdGlMaW5lRG91YmxlUXVvdGVkU3RyaW5nLGNzczoic3RyaW5nIn0se3JlZ2V4OmMubXVsdGlMaW5lU2luZ2xlUXVvdGVkU3RyaW5nLGNzczoic3RyaW5nIn0se3JlZ2V4OmMuc2luZ2xlTGluZUNDb21tZW50cyxjc3M6ImNvbW1lbnRzIn0se3JlZ2V4OmMubXVsdGlMaW5lQ0NvbW1lbnRzLGNzczoiY29tbWVudHMifSx7cmVnZXg6L1xzKiMuKi9nbSxjc3M6InByZXByb2Nlc3NvciJ9LHtyZWdleDpuZXcgUmVnRXhwKHRoaXMuZ2V0S2V5d29yZHMoYiksImdtIiksY3NzOiJrZXl3b3JkIn1dO3RoaXMuZm9ySHRtbFNjcmlwdChjLnNjcmlwdFNjcmlwdFRhZ3MpfWEucHJvdG90eXBlPW5ldyBTeW50YXhIaWdobGlnaHRlci5IaWdobGlnaHRlcigpO2EuYWxpYXNlcz1bImpzIiwianNjcmlwdCIsImphdmFzY3JpcHQiXTtTeW50YXhIaWdobGlnaHRlci5icnVzaGVzLkpTY3JpcHQ9YTt0eXBlb2YoZXhwb3J0cykhPSJ1bmRlZmluZWQiP2V4cG9ydHMuQnJ1c2g9YTpudWxsfSkoKTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/scripts/shBrushXml.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFN5bnRheEhpZ2hsaWdodGVyCiAqIGh0dHA6Ly9hbGV4Z29yYmF0Y2hldi5jb20vU3ludGF4SGlnaGxpZ2h0ZXIKICoKICogU3ludGF4SGlnaGxpZ2h0ZXIgaXMgZG9uYXRpb253YXJlLiBJZiB5b3UgYXJlIHVzaW5nIGl0LCBwbGVhc2UgZG9uYXRlLgogKiBodHRwOi8vYWxleGdvcmJhdGNoZXYuY29tL1N5bnRheEhpZ2hsaWdodGVyL2RvbmF0ZS5odG1sCiAqCiAqIEB2ZXJzaW9uCiAqIDMuMC44MyAoSnVseSAwMiAyMDEwKQogKiAKICogQGNvcHlyaWdodAogKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMCBBbGV4IEdvcmJhdGNoZXYuCiAqCiAqIEBsaWNlbnNlCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgogKi8KOyhmdW5jdGlvbigpCnsKCS8vIENvbW1vbkpTCgl0eXBlb2YocmVxdWlyZSkgIT0gJ3VuZGVmaW5lZCcgPyBTeW50YXhIaWdobGlnaHRlciA9IHJlcXVpcmUoJ3NoQ29yZScpLlN5bnRheEhpZ2hsaWdodGVyIDogbnVsbDsKCglmdW5jdGlvbiBCcnVzaCgpCgl7CgkJZnVuY3Rpb24gcHJvY2VzcyhtYXRjaCwgcmVnZXhJbmZvKQoJCXsKCQkJdmFyIGNvbnN0cnVjdG9yID0gU3ludGF4SGlnaGxpZ2h0ZXIuTWF0Y2gsCgkJCQljb2RlID0gbWF0Y2hbMF0sCgkJCQl0YWcgPSBuZXcgWFJlZ0V4cCgnKCZsdDt8PClbXFxzXFwvXFw/XSooPzxuYW1lPls6XFx3LVxcLl0rKScsICd4ZycpLmV4ZWMoY29kZSksCgkJCQlyZXN1bHQgPSBbXQoJCQkJOwoJCQoJCQlpZiAobWF0Y2guYXR0cmlidXRlcyAhPSBudWxsKSAKCQkJewoJCQkJdmFyIGF0dHJpYnV0ZXMsCgkJCQkJcmVnZXggPSBuZXcgWFJlZ0V4cCgnKD88bmFtZT4gW1xcdzpcXC1cXC5dKyknICsKCQkJCQkJCQkJCSdcXHMqPVxccyonICsKCQkJCQkJCQkJCScoPzx2YWx1ZT4gIi4qPyJ8XCcuKj9cJ3xcXHcrKScsCgkJCQkJCQkJCQkneGcnKTsKCgkJCQl3aGlsZSAoKGF0dHJpYnV0ZXMgPSByZWdleC5leGVjKGNvZGUpKSAhPSBudWxsKSAKCQkJCXsKCQkJCQlyZXN1bHQucHVzaChuZXcgY29uc3RydWN0b3IoYXR0cmlidXRlcy5uYW1lLCBtYXRjaC5pbmRleCArIGF0dHJpYnV0ZXMuaW5kZXgsICdjb2xvcjEnKSk7CgkJCQkJcmVzdWx0LnB1c2gobmV3IGNvbnN0cnVjdG9yKGF0dHJpYnV0ZXMudmFsdWUsIG1hdGNoLmluZGV4ICsgYXR0cmlidXRlcy5pbmRleCArIGF0dHJpYnV0ZXNbMF0uaW5kZXhPZihhdHRyaWJ1dGVzLnZhbHVlKSwgJ3N0cmluZycpKTsKCQkJCX0KCQkJfQoKCQkJaWYgKHRhZyAhPSBudWxsKQoJCQkJcmVzdWx0LnB1c2goCgkJCQkJbmV3IGNvbnN0cnVjdG9yKHRhZy5uYW1lLCBtYXRjaC5pbmRleCArIHRhZ1swXS5pbmRleE9mKHRhZy5uYW1lKSwgJ2tleXdvcmQnKQoJCQkJKTsKCgkJCXJldHVybiByZXN1bHQ7CgkJfQoJCgkJdGhpcy5yZWdleExpc3QgPSBbCgkJCXsgcmVnZXg6IG5ldyBYUmVnRXhwKCcoXFwmbHQ7fDwpXFwhXFxbW1xcd1xcc10qP1xcWygufFxccykqP1xcXVxcXShcXCZndDt8PiknLCAnZ20nKSwJCQljc3M6ICdjb2xvcjInIH0sCS8vIDwhWyAuLi4gWyAuLi4gXV0+CgkJCXsgcmVnZXg6IFN5bnRheEhpZ2hsaWdodGVyLnJlZ2V4TGliLnhtbENvbW1lbnRzLAkJCQkJCQkJCQkJCWNzczogJ2NvbW1lbnRzJyB9LAkvLyA8IS0tIC4uLiAtLT4KCQkJeyByZWdleDogbmV3IFhSZWdFeHAoJygmbHQ7fDwpW1xcc1xcL1xcP10qKFxcdyspKD88YXR0cmlidXRlcz4uKj8pW1xcc1xcL1xcP10qKCZndDt8PiknLCAnc2cnKSwgZnVuYzogcHJvY2VzcyB9CgkJXTsKCX07CgoJQnJ1c2gucHJvdG90eXBlCT0gbmV3IFN5bnRheEhpZ2hsaWdodGVyLkhpZ2hsaWdodGVyKCk7CglCcnVzaC5hbGlhc2VzCT0gWyd4bWwnLCAneGh0bWwnLCAneHNsdCcsICdodG1sJ107CgoJU3ludGF4SGlnaGxpZ2h0ZXIuYnJ1c2hlcy5YbWwgPSBCcnVzaDsKCgkvLyBDb21tb25KUwoJdHlwZW9mKGV4cG9ydHMpICE9ICd1bmRlZmluZWQnID8gZXhwb3J0cy5CcnVzaCA9IEJydXNoIDogbnVsbDsKfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/scripts/shBrushXml.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[KGZ1bmN0aW9uKCl7dHlwZW9mKHJlcXVpcmUpIT0idW5kZWZpbmVkIj9TeW50YXhIaWdobGlnaHRlcj1yZXF1aXJlKCJzaENvcmUiKS5TeW50YXhIaWdobGlnaHRlcjpudWxsO2Z1bmN0aW9uIGEoKXtmdW5jdGlvbiBiKGYsail7dmFyIGc9U3ludGF4SGlnaGxpZ2h0ZXIuTWF0Y2gsaT1mWzBdLGQ9bmV3IFhSZWdFeHAoIigmbHQ7fDwpW1xcc1xcL1xcP10qKD88bmFtZT5bOlxcdy1cXC5dKykiLCJ4ZyIpLmV4ZWMoaSksYz1bXTtpZihmLmF0dHJpYnV0ZXMhPW51bGwpe3ZhciBlLGg9bmV3IFhSZWdFeHAoIig/PG5hbWU+IFtcXHc6XFwtXFwuXSspXFxzKj1cXHMqKD88dmFsdWU+IFwiLio/XCJ8Jy4qPyd8XFx3KykiLCJ4ZyIpO3doaWxlKChlPWguZXhlYyhpKSkhPW51bGwpe2MucHVzaChuZXcgZyhlLm5hbWUsZi5pbmRleCtlLmluZGV4LCJjb2xvcjEiKSk7Yy5wdXNoKG5ldyBnKGUudmFsdWUsZi5pbmRleCtlLmluZGV4K2VbMF0uaW5kZXhPZihlLnZhbHVlKSwic3RyaW5nIikpfX1pZihkIT1udWxsKXtjLnB1c2gobmV3IGcoZC5uYW1lLGYuaW5kZXgrZFswXS5pbmRleE9mKGQubmFtZSksImtleXdvcmQiKSl9cmV0dXJuIGN9dGhpcy5yZWdleExpc3Q9W3tyZWdleDpuZXcgWFJlZ0V4cCgiKFxcJmx0O3w8KVxcIVxcW1tcXHdcXHNdKj9cXFsoLnxcXHMpKj9cXF1cXF0oXFwmZ3Q7fD4pIiwiZ20iKSxjc3M6ImNvbG9yMiJ9LHtyZWdleDpTeW50YXhIaWdobGlnaHRlci5yZWdleExpYi54bWxDb21tZW50cyxjc3M6ImNvbW1lbnRzIn0se3JlZ2V4Om5ldyBYUmVnRXhwKCIoJmx0O3w8KVtcXHNcXC9cXD9dKihcXHcrKSg/PGF0dHJpYnV0ZXM+Lio/KVtcXHNcXC9cXD9dKigmZ3Q7fD4pIiwic2ciKSxmdW5jOmJ9XX1hLnByb3RvdHlwZT1uZXcgU3ludGF4SGlnaGxpZ2h0ZXIuSGlnaGxpZ2h0ZXIoKTthLmFsaWFzZXM9WyJ4bWwiLCJ4aHRtbCIsInhzbHQiLCJodG1sIl07U3ludGF4SGlnaGxpZ2h0ZXIuYnJ1c2hlcy5YbWw9YTt0eXBlb2YoZXhwb3J0cykhPSJ1bmRlZmluZWQiP2V4cG9ydHMuQnJ1c2g9YTpudWxsfSkoKTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/scripts/shCore.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFN5bnRheEhpZ2hsaWdodGVyCiAqIGh0dHA6Ly9hbGV4Z29yYmF0Y2hldi5jb20vU3ludGF4SGlnaGxpZ2h0ZXIKICoKICogU3ludGF4SGlnaGxpZ2h0ZXIgaXMgZG9uYXRpb253YXJlLiBJZiB5b3UgYXJlIHVzaW5nIGl0LCBwbGVhc2UgZG9uYXRlLgogKiBodHRwOi8vYWxleGdvcmJhdGNoZXYuY29tL1N5bnRheEhpZ2hsaWdodGVyL2RvbmF0ZS5odG1sCiAqCiAqIEB2ZXJzaW9uCiAqIDMuMC44MyAoSnVseSAwMiAyMDEwKQogKiAKICogQGNvcHlyaWdodAogKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMCBBbGV4IEdvcmJhdGNoZXYuCiAqCiAqIEBsaWNlbnNlCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgogKi8KZXZhbChmdW5jdGlvbihwLGEsYyxrLGUsZCl7ZT1mdW5jdGlvbihjKXtyZXR1cm4oYzxhPycnOmUocGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50b1N0cmluZygzNikpfTtpZighJycucmVwbGFjZSgvXi8sU3RyaW5nKSl7d2hpbGUoYy0tKXtkW2UoYyldPWtbY118fGUoYyl9az1bZnVuY3Rpb24oZSl7cmV0dXJuIGRbZV19XTtlPWZ1bmN0aW9uKCl7cmV0dXJuJ1xcdysnfTtjPTF9O3doaWxlKGMtLSl7aWYoa1tjXSl7cD1wLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxiJytlKGMpKydcXGInLCdnJyksa1tjXSl9fXJldHVybiBwfSgnSyBNO0koTSkxUyAyVSgiMmFcJ3QgNGsgTSA0SyAyZyAzbCA0RyA0SCIpOyg2KCl7NiByKGYsZSl7SSghTS4xUihmKSkxUyAzbSgiM3MgMTUgNFIiKTtLIGE9Zi4xdztmPU0oZi4xbSx0KGYpKyhlfHwiIikpO0koYSlmLjF3PXsxbTphLjFtLDE5OmEuMTk/YS4xOS4xYSgwKTpOfTtIIGZ9NiB0KGYpe0goZi4xSj8iZyI6IiIpKyhmLjRzPyJpIjoiIikrKGYuNHA/Im0iOiIiKSsoZi40dj8ieCI6IiIpKyhmLjNuPyJ5IjoiIil9NiBCKGYsZSxhLGIpe0sgYz11LkwsZCxoLGc7dj1SOzVLe08oO2MtLTspe2c9dVtjXTtJKGEmZy4zciYmKCFnLjJwfHxnLjJwLlcoYikpKXtnLjJxLjEyPWU7SSgoaD1nLjJxLlgoZikpJiZoLlA9PT1lKXtkPXszazpnLjJiLlcoYixoLGEpLDFDOmh9OzFOfX19fTV2KGkpezFTIGl9NXF7dj0xMX1IIGR9NiBwKGYsZSxhKXtJKDNiLlouMWkpSCBmLjFpKGUsYSk7TyhhPWF8fDA7YTxmLkw7YSsrKUkoZlthXT09PWUpSCBhO0gtMX1NPTYoZixlKXtLIGE9W10sYj1NLjFCLGM9MCxkLGg7SShNLjFSKGYpKXtJKGUhPT0xZCkxUyAzbSgiMmFcJ3QgNXIgNUkgNUYgNUIgNUMgMTUgNUUgNXAiKTtIIHIoZil9SSh2KTFTIDJVKCIyYVwndCBXIDNsIE0gNTkgNW0gNWcgNXggNWkiKTtlPWV8fCIiO08oZD17Mk46MTEsMTk6W10sMks6NihnKXtIIGUuMWkoZyk+LTF9LDNkOjYoZyl7ZSs9Z319O2M8Zi5MOylJKGg9QihmLGMsYixkKSl7YS5VKGguM2spO2MrPWguMUNbMF0uTHx8MX1ZIEkoaD1uLlguVyh6W2JdLGYuMWEoYykpKXthLlUoaFswXSk7Yys9aFswXS5MfVl7aD1mLjNhKGMpO0koaD09PSJbIiliPU0uMkk7WSBJKGg9PT0iXSIpYj1NLjFCO2EuVShoKTtjKyt9YT0xNShhLjFLKCIiKSxuLlEuVyhlLHcsIiIpKTthLjF3PXsxbTpmLDE5OmQuMk4/ZC4xOTpOfTtIIGF9O00uM3Y9IjEuNS4wIjtNLjJJPTE7TS4xQj0yO0sgQz0vXFwkKD86KFxcZFxcZD98WyQmYFwnXSl8eyhbJFxcd10rKX0pL2csdz0vW141aF0rfChbXFxzXFxTXSkoPz1bXFxzXFxTXSpcXDEpL2csQT0vXig/Ols/KitdfHtcXGQrKD86LFxcZCopP30pXFw/Py8sdj0xMSx1PVtdLG49e1g6MTUuWi5YLDFBOjE1LlouMUEsMUM6MXIuWi4xQyxROjFyLlouUSwxZToxci5aLjFlfSx4PW4uWC5XKC8oKT8/LywiIilbMV09PT0xZCxEPTYoKXtLIGY9L14vZztuLjFBLlcoZiwiIik7SCFmLjEyfSgpLHk9Nigpe0sgZj0veC9nO24uUS5XKCJ4IixmLCIiKTtIIWYuMTJ9KCksRT0xNS5aLjNuIT09MWQsej17fTt6W00uMkldPS9eKD86XFxcXCg/OlswLTNdWzAtN117MCwyfXxbNC03XVswLTddP3x4W1xcMjktMjYtZl17Mn18dVtcXDI5LTI2LWZdezR9fGNbQS0zby16XXxbXFxzXFxTXSkpLzt6W00uMUJdPS9eKD86XFxcXCg/OjAoPzpbMC0zXVswLTddezAsMn18WzQtN11bMC03XT8pP3xbMS05XVxcZCp8eFtcXDI5LTI2LWZdezJ9fHVbXFwyOS0yNi1mXXs0fXxjW0EtM28tel18W1xcc1xcU10pfFxcKFxcP1s6PSFdfFs/KitdXFw/fHtcXGQrKD86LFxcZCopP31cXD8/KS87TS4xaD02KGYsZSxhLGIpe3UuVSh7MnE6cihmLCJnIisoRT8ieSI6IiIpKSwyYjplLDNyOmF8fE0uMUIsMnA6Ynx8Tn0pfTtNLjJuPTYoZixlKXtLIGE9ZisiLyIrKGV8fCIiKTtIIE0uMm5bYV18fChNLjJuW2FdPU0oZixlKSl9O00uM2M9NihmKXtIIHIoZiwiZyIpfTtNLjVsPTYoZil7SCBmLlEoL1stW1xcXXt9KCkqKz8uLFxcXFxeJHwjXFxzXS9nLCJcXFxcJCYiKX07TS41ZT02KGYsZSxhLGIpe2U9cihlLCJnIisoYiYmRT8ieSI6IiIpKTtlLjEyPWE9YXx8MDtmPWUuWChmKTtIIGI/ZiYmZi5QPT09YT9mOk46Zn07TS4zcT02KCl7TS4xaD02KCl7MVMgMlUoIjJhXCd0IDU1IDFoIDU0IDNxIil9fTtNLjFSPTYoZil7SCA1My5aLjFxLlcoZik9PT0iWzJtIDE1XSJ9O00uM3A9NihmLGUsYSxiKXtPKEsgYz1yKGUsImciKSxkPS0xLGg7aD1jLlgoZik7KXthLlcoYixoLCsrZCxmLGMpO2MuMTI9PT1oLlAmJmMuMTIrK31JKGUuMUopZS4xMj0wfTtNLjU3PTYoZixlKXtIIDYgYShiLGMpe0sgZD1lW2NdLjFJP2VbY106ezFJOmVbY119LGg9cihkLjFJLCJnIiksZz1bXSxpO08oaT0wO2k8Yi5MO2krKylNLjNwKGJbaV0saCw2KGspe2cuVShkLjNqP2tbZC4zal18fCIiOmtbMF0pfSk7SCBjPT09ZS5MLTF8fCFnLkw/ZzphKGcsYysxKX0oW2ZdLDApfTsxNS5aLjFwPTYoZixlKXtIIEouWChlWzBdKX07MTUuWi5XPTYoZixlKXtIIEouWChlKX07MTUuWi5YPTYoZil7SyBlPW4uWC4xcChKLDE0KSxhO0koZSl7SSgheCYmZS5MPjEmJnAoZSwiIik+LTEpe2E9MTUoSi4xbSxuLlEuVyh0KEopLCJnIiwiIikpO24uUS5XKGYuMWEoZS5QKSxhLDYoKXtPKEsgYz0xO2M8MTQuTC0yO2MrKylJKDE0W2NdPT09MWQpZVtjXT0xZH0pfUkoSi4xdyYmSi4xdy4xOSlPKEsgYj0xO2I8ZS5MO2IrKylJKGE9Si4xdy4xOVtiLTFdKWVbYV09ZVtiXTshRCYmSi4xSiYmIWVbMF0uTCYmSi4xMj5lLlAmJkouMTItLX1IIGV9O0koIUQpMTUuWi4xQT02KGYpeyhmPW4uWC5XKEosZikpJiZKLjFKJiYhZlswXS5MJiZKLjEyPmYuUCYmSi4xMi0tO0ghIWZ9OzFyLlouMUM9NihmKXtNLjFSKGYpfHwoZj0xNShmKSk7SShmLjFKKXtLIGU9bi4xQy4xcChKLDE0KTtmLjEyPTA7SCBlfUggZi5YKEopfTsxci5aLlE9NihmLGUpe0sgYT1NLjFSKGYpLGIsYztJKGEmJjFqIGUuNTgoKT09PSIzZiImJmUuMWkoIiR7Iik9PT0tMSYmeSlIIG4uUS4xcChKLDE0KTtJKGEpe0koZi4xdyliPWYuMXcuMTl9WSBmKz0iIjtJKDFqIGU9PT0iNiIpYz1uLlEuVyhKLGYsNigpe0koYil7MTRbMF09MWYgMXIoMTRbMF0pO08oSyBkPTA7ZDxiLkw7ZCsrKUkoYltkXSkxNFswXVtiW2RdXT0xNFtkKzFdfUkoYSYmZi4xSilmLjEyPTE0WzE0LkwtMl0rMTRbMF0uTDtIIGUuMXAoTiwxNCl9KTtZe2M9SisiIjtjPW4uUS5XKGMsZiw2KCl7SyBkPTE0O0ggbi5RLlcoZSxDLDYoaCxnLGkpe0koZyk1YihnKXsyNCIkIjpIIiQiOzI0IiYiOkggZFswXTsyNCJgIjpIIGRbZC5MLTFdLjFhKDAsZFtkLkwtMl0pOzI0IlwnIjpIIGRbZC5MLTFdLjFhKGRbZC5MLTJdK2RbMF0uTCk7NWE6aT0iIjtnPStnO0koIWcpSCBoO08oO2c+ZC5MLTM7KXtpPTFyLlouMWEuVyhnLC0xKStpO2c9MVEuM2koZy8xMCl9SChnP2RbZ118fCIiOiIkIikraX1Ze2c9K2k7SShnPD1kLkwtMylIIGRbZ107Zz1iP3AoYixpKTotMTtIIGc+LTE/ZFtnKzFdOmh9fSl9KX1JKGEmJmYuMUopZi4xMj0wO0ggY307MXIuWi4xZT02KGYsZSl7SSghTS4xUihmKSlIIG4uMWUuMXAoSiwxNCk7SyBhPUorIiIsYj1bXSxjPTAsZCxoO0koZT09PTFkfHwrZTwwKWU9NUQ7WXtlPTFRLjNpKCtlKTtJKCFlKUhbXX1PKGY9TS4zYyhmKTtkPWYuWChhKTspe0koZi4xMj5jKXtiLlUoYS4xYShjLGQuUCkpO2QuTD4xJiZkLlA8YS5MJiYzYi5aLlUuMXAoYixkLjFhKDEpKTtoPWRbMF0uTDtjPWYuMTI7SShiLkw+PWUpMU59Zi4xMj09PWQuUCYmZi4xMisrfUkoYz09PWEuTCl7SSghbi4xQS5XKGYsIiIpfHxoKWIuVSgiIil9WSBiLlUoYS4xYShjKSk7SCBiLkw+ZT9iLjFhKDAsZSk6Yn07TS4xaCgvXFwoXFw/I1teKV0qXFwpLyw2KGYpe0ggbi4xQS5XKEEsZi4yUy4xYShmLlArZlswXS5MKSk/IiI6Iig/OikifSk7TS4xaCgvXFwoKD8hXFw/KS8sNigpe0ouMTkuVShOKTtIIigifSk7TS4xaCgvXFwoXFw/PChbJFxcd10rKT4vLDYoZil7Si4xOS5VKGZbMV0pO0ouMk49UjtIIigifSk7TS4xaCgvXFxcXGs8KFtcXHckXSspPi8sNihmKXtLIGU9cChKLjE5LGZbMV0pO0ggZT4tMT8iXFxcXCIrKGUrMSkrKDNSKGYuMlMuM2EoZi5QK2ZbMF0uTCkpPyIiOiIoPzopIik6ZlswXX0pO00uMWgoL1xcW1xcXj9dLyw2KGYpe0ggZlswXT09PSJbXSI/IlxcXFxiXFxcXEIiOiJbXFxcXHNcXFxcU10ifSk7TS4xaCgvXlxcKFxcPyhbNUFdKylcXCkvLDYoZil7Si4zZChmWzFdKTtIIiJ9KTtNLjFoKC8oPzpcXHMrfCMuKikrLyw2KGYpe0ggbi4xQS5XKEEsZi4yUy4xYShmLlArZlswXS5MKSk/IiI6Iig/OikifSxNLjFCLDYoKXtIIEouMksoIngiKX0pO00uMWgoL1xcLi8sNigpe0giW1xcXFxzXFxcXFNdIn0sTS4xQiw2KCl7SCBKLjJLKCJzIil9KX0pKCk7MWogMmUhPSIxZCImJigyZS5NPU0pO0sgMXY9NigpezYgcihhLGIpe2EuMWwuMWkoYikhPS0xfHwoYS4xbCs9IiAiK2IpfTYgdChhKXtIIGEuMWkoIjNlIik9PTA/YToiM2UiK2F9NiBCKGEpe0ggZS4xWS4yQVt0KGEpXX02IHAoYSxiLGMpe0koYT09TilIIE47SyBkPWMhPVI/YS4zRzpbYS4yR10saD17IiMiOiIxYyIsIi4iOiIxbCJ9W2IuMW8oMCwxKV18fCIzaCIsZyxpO2c9aCE9IjNoIj9iLjFvKDEpOmIuNXUoKTtJKChhW2hdfHwiIikuMWkoZykhPS0xKUggYTtPKGE9MDtkJiZhPGQuTCYmaT09TjthKyspaT1wKGRbYV0sYixjKTtIIGl9NiBDKGEsYil7SyBjPXt9LGQ7TyhkIDJnIGEpY1tkXT1hW2RdO08oZCAyZyBiKWNbZF09YltkXTtIIGN9NiB3KGEsYixjLGQpezYgaChnKXtnPWd8fDFQLjV5O0koIWcuMUYpe2cuMUY9Zy41MjtnLjNOPTYoKXtKLjV3PTExfX1jLlcoZHx8MVAsZyl9YS4zZz9hLjNnKCI0VSIrYixoKTphLjR5KGIsaCwxMSl9NiBBKGEsYil7SyBjPWUuMVkuMmosZD1OO0koYz09Til7Yz17fTtPKEsgaCAyZyBlLjFVKXtLIGc9ZS4xVVtoXTtkPWcuNHg7SShkIT1OKXtnLjFWPWguNHcoKTtPKGc9MDtnPGQuTDtnKyspY1tkW2ddXT1ofX1lLjFZLjJqPWN9ZD1lLjFVW2NbYV1dO2Q9PU4mJmIhPTExJiYxUC4xWChlLjEzLjF4LjFYKyhlLjEzLjF4LjNFK2EpKTtIIGR9NiB2KGEsYil7TyhLIGM9YS4xZSgiXFxuIiksZD0wO2Q8Yy5MO2QrKyljW2RdPWIoY1tkXSxkKTtIIGMuMUsoIlxcbiIpfTYgdShhLGIpe0koYT09Tnx8YS5MPT0wfHxhPT0iXFxuIilIIGE7YT1hLlEoLzwvZywiJjF5OyIpO2E9YS5RKC8gezIsfS9nLDYoYyl7TyhLIGQ9IiIsaD0wO2g8Yy5MLTE7aCsrKWQrPWUuMTMuMVc7SCBkKyIgIn0pO0koYiE9TilhPXYoYSw2KGMpe0koYy5MPT0wKUgiIjtLIGQ9IiI7Yz1jLlEoL14oJjJzO3wgKSsvLDYoaCl7ZD1oO0giIn0pO0koYy5MPT0wKUggZDtIIGQrXCc8MTcgMWc9IlwnK2IrXCciPlwnK2MrIjwvMTc+In0pO0ggYX02IG4oYSxiKXthLjFlKCJcXG4iKTtPKEsgYz0iIixkPTA7ZDw1MDtkKyspYys9IiAgICAgICAgICAgICAgICAgICAgIjtIIGE9dihhLDYoaCl7SShoLjFpKCJcXHQiKT09LTEpSCBoO08oSyBnPTA7KGc9aC4xaSgiXFx0IikpIT0tMTspaD1oLjFvKDAsZykrYy4xbygwLGItZyViKStoLjFvKGcrMSxoLkwpO0ggaH0pfTYgeChhKXtIIGEuUSgvXlxccyt8XFxzKyQvZywiIil9NiBEKGEsYil7SShhLlA8Yi5QKUgtMTtZIEkoYS5QPmIuUClIIDE7WSBJKGEuTDxiLkwpSC0xO1kgSShhLkw+Yi5MKUggMTtIIDB9NiB5KGEsYil7NiBjKGspe0gga1swXX1PKEsgZD1OLGg9W10sZz1iLjJEP2IuMkQ6YzsoZD1iLjFJLlgoYSkpIT1OOyl7SyBpPWcoZCxiKTtJKDFqIGk9PSIzZiIpaT1bMWYgZS4yTChpLGQuUCxiLjIzKV07aD1oLjFPKGkpfUggaH02IEUoYSl7SyBiPS8oLiopKCgmMUc7fCYxeTspLiopLztIIGEuUShlLjNBLjNNLDYoYyl7SyBkPSIiLGg9TjtJKGg9Yi5YKGMpKXtjPWhbMV07ZD1oWzJdfUhcJzxhIDJoPSJcJytjK1wnIj5cJytjKyI8L2E+IitkfSl9NiB6KCl7TyhLIGE9MUUuMzYoIjFrIiksYj1bXSxjPTA7YzxhLkw7YysrKWFbY10uM3M9PSIyMCImJmIuVShhW2NdKTtIIGJ9NiBmKGEpe2E9YS4xRjtLIGI9cChhLCIuMjAiLFIpO2E9cChhLCIuM08iLFIpO0sgYz0xRS40aSgiM3QiKTtJKCEoIWF8fCFifHxwKGEsIjN0IikpKXtCKGIuMWMpO3IoYiwiMW0iKTtPKEsgZD1hLjNHLGg9W10sZz0wO2c8ZC5MO2crKyloLlUoZFtnXS40enx8ZFtnXS40QSk7aD1oLjFLKCJcXHIiKTtjLjM5KDFFLjREKGgpKTthLjM5KGMpO2MuMkMoKTtjLjRDKCk7dyhjLCI0dSIsNigpe2MuMkcuNEUoYyk7Yi4xbD1iLjFsLlEoIjFtIiwiIil9KX19SSgxaiAzRiE9IjFkIiYmMWogTT09IjFkIilNPTNGKCJNIikuTTtLIGU9ezJ2OnsiMWctMjciOiIiLCIyaS0xcyI6MSwiMnotMXMtMnQiOjExLDFNOk4sMXQ6TiwiNDItNDUiOlIsIjQzLTIyIjo0LDF1OlIsMTY6UiwiM1YtMTciOlIsMmw6MTEsIjQxLTQwIjpSLDJrOjExLCIxei0xayI6MTF9LDEzOnsxVzoiJjJzOyIsMk06Uiw0NjoxMSw0NDoxMSwzNDoiNG4iLDF4OnsyMToiNG8gMW0iLDJQOiI/IiwxWDoiMXZcXG5cXG4iLDNFOiI0clwndCA0dCAxRCBPOiAiLDRnOiI0bSA0QlwndCA1MSBPIDF6LTFrIDRGOiAiLDM3OlwnPCE0VCAxeiA0UyAiLS8vNFYvLzNIIDRXIDEuMCA0Wi8vNFkiICIxWjovLzJ5LjNMLjNLLzRYLzNJLzNILzNJLTRQLjRKIj48MXogNEk9IjFaOi8vMnkuM0wuM0svNEwvNUwiPjwzSj48NE4gMVotNE09IjVHLTVNIiA2Sz0iMk8vMXo7IDZKPTZJLTgiIC8+PDF0PjZMIDF2PC8xdD48LzNKPjwzQiAxTD0iMjUtNk06NlEsNlAsNk8sNk4tNkY7NnktMmY6IzZ4OzJmOiM2dzsyNS0yMjo2djsyTy0zRDozQzsiPjxUIDFMPSIyTy0zRDozQzszdy0zMjoxLjZ6OyI+PFQgMUw9IjI1LTIyOjZBLTZFOyI+MXY8L1Q+PFQgMUw9IjI1LTIyOi42Qzszdy02Qjo2UjsiPjxUPjN2IDMuMC43NiAoNzIgNzMgM3gpPC9UPjxUPjxhIDJoPSIxWjovLzN1LjJ3LzF2IiAxRj0iMzgiIDFMPSIyZjojM3kiPjFaOi8vM3UuMncvMXY8L2E+PC9UPjxUPjcwIDE3IDZVIDcxLjwvVD48VD42VCA2WC0zeCA2WSA2RC48L1Q+PC9UPjxUPjZ0IDYxIDYwIEogMWssIDVaIDxhIDJoPSI2dTovLzJ5LjYyLjJ3LzYzLTY2LzY1PzY0PTVYLTVXJjVQPTVPIiAxTD0iMmY6IzN5Ij41UjwvYT4gNVYgPDJSLz41VSA1VCA1UyE8L1Q+PC9UPjwvM0I+PC8xej5cJ319LDFZOnsyajpOLDJBOnt9fSwxVTp7fSwzQTp7Nm46L1xcL1xcKltcXHNcXFNdKj9cXCpcXC8vMmMsNm06L1xcL1xcLy4qJC8yYyw2bDovIy4qJC8yYyw2azovIihbXlxcXFwiXFxuXXxcXFxcLikqIi9nLDZvOi9cJyhbXlxcXFxcJ1xcbl18XFxcXC4pKlwnL2csNnA6MWYgTShcJyIoW15cXFxcXFxcXCJdfFxcXFxcXFxcLikqIlwnLCIzeiIpLDZzOjFmIE0oIlwnKFteXFxcXFxcXFxcJ118XFxcXFxcXFwuKSpcJyIsIjN6IiksNnE6LygmMXk7fDwpIS0tW1xcc1xcU10qPy0tKCYxRzt8PikvMmMsM006L1xcdys6XFwvXFwvW1xcdy0uXFwvPyUmPTpAO10qL2csNmE6ezE4Oi8oJjF5O3w8KVxcPz0/L2csMWI6L1xcPygmMUc7fD4pL2d9LDY5OnsxODovKCYxeTt8PCklPT8vZywxYjovJSgmMUc7fD4pL2d9LDZkOnsxODovKCYxeTt8PClcXHMqMWsuKj8oJjFHO3w+KS8yVCwxYjovKCYxeTt8PClcXC9cXHMqMWtcXHMqKCYxRzt8PikvMlR9fSwxNjp7MUg6NihhKXs2IGIoaSxrKXtIIGUuMTYuMm8oaSxrLGUuMTMuMXhba10pfU8oSyBjPVwnPFQgMWc9IjE2Ij5cJyxkPWUuMTYuMngsaD1kLjJYLGc9MDtnPGguTDtnKyspYys9KGRbaFtnXV0uMUh8fGIpKGEsaFtnXSk7Yys9IjwvVD4iO0ggY30sMm86NihhLGIsYyl7SFwnPDJXPjxhIDJoPSIjIiAxZz0iNmUgNmhcJytiKyIgIitiK1wnIj5cJytjKyI8L2E+PC8yVz4ifSwyYjo2KGEpe0sgYj1hLjFGLGM9Yi4xbHx8IiI7Yj1CKHAoYiwiLjIwIixSKS4xYyk7SyBkPTYoaCl7SChoPTE1KGgrIjZmKFxcXFx3KykiKS5YKGMpKT9oWzFdOk59KCI2ZyIpO2ImJmQmJmUuMTYuMnhbZF0uMkIoYik7YS4zTigpfSwyeDp7Mlg6WyIyMSIsIjJQIl0sMjE6ezFIOjYoYSl7SShhLlYoIjJsIikhPVIpSCIiO0sgYj1hLlYoIjF0Iik7SCBlLjE2LjJvKGEsIjIxIixiP2I6ZS4xMy4xeC4yMSl9LDJCOjYoYSl7YT0xRS42aih0KGEuMWMpKTthLjFsPWEuMWwuUSgiNDciLCIiKX19LDJQOnsyQjo2KCl7SyBhPSI2OD0wIjthKz0iLCAxOD0iKygzMS4zMC0zMykvMisiLCAzMj0iKygzMS4yWi0yWSkvMisiLCAzMD0zMywgMlo9MlkiO2E9YS5RKC9eLC8sIiIpO2E9MVAuNlooIiIsIjM4IixhKTthLjJDKCk7SyBiPWEuMUU7Yi42VyhlLjEzLjF4LjM3KTtiLjZWKCk7YS4yQygpfX19fSwzNTo2KGEsYil7SyBjO0koYiljPVtiXTtZe2M9MUUuMzYoZS4xMy4zNCk7TyhLIGQ9W10saD0wO2g8Yy5MO2grKylkLlUoY1toXSk7Yz1kfWM9YztkPVtdO0koZS4xMy4yTSljPWMuMU8oeigpKTtJKGMuTD09PTApSCBkO08oaD0wO2g8Yy5MO2grKyl7TyhLIGc9Y1toXSxpPWEsaz1jW2hdLjFsLGo9M1cgMCxsPXt9LG09MWYgTSgiXlxcXFxbKD88MlY+KC4qPykpXFxcXF0kIikscz0xZiBNKCIoPzwyNz5bXFxcXHctXSspXFxcXHMqOlxcXFxzKig/PDFUPltcXFxcdy0lI10rfFxcXFxbLio/XFxcXF18XFwiLio/XFwifFwnLio/XCcpXFxcXHMqOz8iLCJnIik7KGo9cy5YKGspKSE9Tjspe0sgbz1qLjFULlEoL15bXCciXXxbXCciXSQvZywiIik7SShvIT1OJiZtLjFBKG8pKXtvPW0uWChvKTtvPW8uMlYuTD4wP28uMlYuMWUoL1xccyosXFxzKi8pOltdfWxbai4yN109b31nPXsxRjpnLDFuOkMoaSxsKX07Zy4xbi4xRCE9TiYmZC5VKGcpfUggZH0sMU06NihhLGIpe0sgYz1KLjM1KGEsYiksZD1OLGg9ZS4xMztJKGMuTCE9PTApTyhLIGc9MDtnPGMuTDtnKyspe2I9Y1tnXTtLIGk9Yi4xRixrPWIuMW4saj1rLjFELGw7SShqIT1OKXtJKGtbIjF6LTFrIl09PSJSInx8ZS4ydlsiMXotMWsiXT09Uil7ZD0xZiBlLjRsKGopO2o9IjRPIn1ZIEkoZD1BKGopKWQ9MWYgZDtZIDZIO2w9aS4zWDtJKGguMk0pe2w9bDtLIG09eChsKSxzPTExO0kobS4xaSgiPCFbNkdbIik9PTApe209bS40aCg5KTtzPVJ9SyBvPW0uTDtJKG0uMWkoIl1dXFw+Iik9PW8tMyl7bT1tLjRoKDAsby0zKTtzPVJ9bD1zP206bH1JKChpLjF0fHwiIikhPSIiKWsuMXQ9aS4xdDtrLjFEPWo7ZC4yUShrKTtiPWQuMkYobCk7SSgoaS4xY3x8IiIpIT0iIiliLjFjPWkuMWM7aS4yRy43NChiLGkpfX19LDJFOjYoYSl7dygxUCwiNGsiLDYoKXtlLjFNKGEpfSl9fTtlLjJFPWUuMkU7ZS4xTT1lLjFNO2UuMkw9NihhLGIsYyl7Si4xVD1hO0ouUD1iO0ouTD1hLkw7Si4yMz1jO0ouMVY9Tn07ZS4yTC5aLjFxPTYoKXtIIEouMVR9O2UuNGw9NihhKXs2IGIoaixsKXtPKEsgbT0wO208ai5MO20rKylqW21dLlArPWx9SyBjPUEoYSksZCxoPTFmIGUuMVUuNVksZz1KLGk9IjJGIDFIIDJRIi4xZSgiICIpO0koYyE9Til7ZD0xZiBjO08oSyBrPTA7azxpLkw7aysrKSg2KCl7SyBqPWlba107Z1tqXT02KCl7SCBoW2pdLjFwKGgsMTQpfX0pKCk7ZC4yOD09Tj8xUC4xWChlLjEzLjF4LjFYKyhlLjEzLjF4LjRnK2EpKTpoLjJKLlUoezFJOmQuMjguMTcsMkQ6NihqKXtPKEsgbD1qLjE3LG09W10scz1kLjJKLG89ai5QK2ouMTguTCxGPWQuMjgscSxHPTA7RzxzLkw7RysrKXtxPXkobCxzW0ddKTtiKHEsbyk7bT1tLjFPKHEpfUkoRi4xOCE9TiYmai4xOCE9Til7cT15KGouMTgsRi4xOCk7YihxLGouUCk7bT1tLjFPKHEpfUkoRi4xYiE9TiYmai4xYiE9Til7cT15KGouMWIsRi4xYik7YihxLGouUCtqWzBdLjVRKGouMWIpKTttPW0uMU8ocSl9TyhqPTA7ajxtLkw7aisrKW1bal0uMVY9Yy4xVjtIIG19fSl9fTtlLjRqPTYoKXt9O2UuNGouWj17Vjo2KGEsYil7SyBjPUouMW5bYV07Yz1jPT1OP2I6YztLIGQ9eyJSIjpSLCIxMSI6MTF9W2NdO0ggZD09Tj9jOmR9LDNZOjYoYSl7SCAxRS40aShhKX0sNGM6NihhLGIpe0sgYz1bXTtJKGEhPU4pTyhLIGQ9MDtkPGEuTDtkKyspSSgxaiBhW2RdPT0iMm0iKWM9Yy4xTyh5KGIsYVtkXSkpO0ggSi40ZShjLjZiKEQpKX0sNGU6NihhKXtPKEsgYj0wO2I8YS5MO2IrKylJKGFbYl0hPT1OKU8oSyBjPWFbYl0sZD1jLlArYy5MLGg9YisxO2g8YS5MJiZhW2JdIT09TjtoKyspe0sgZz1hW2hdO0koZyE9PU4pSShnLlA+ZCkxTjtZIEkoZy5QPT1jLlAmJmcuTD5jLkwpYVtiXT1OO1kgSShnLlA+PWMuUCYmZy5QPGQpYVtoXT1OfUggYX0sNGQ6NihhKXtLIGI9W10sYz0ydShKLlYoIjJpLTFzIikpO3YoYSw2KGQsaCl7Yi5VKGgrYyl9KTtIIGJ9LDNVOjYoYSl7SyBiPUouVigiMU0iLFtdKTtJKDFqIGIhPSIybSImJmIuVT09TiliPVtiXTthOnthPWEuMXEoKTtLIGM9M1cgMDtPKGM9Yz0xUS42YyhjfHwwLDApO2M8Yi5MO2MrKylJKGJbY109PWEpe2I9YzsxTiBhfWI9LTF9SCBiIT0tMX0sMnI6NihhLGIsYyl7YT1bIjFzIiwiNmkiK2IsIlAiK2EsIjZyIisoYiUyPT0wPzE6MikuMXEoKV07Si4zVShiKSYmYS5VKCI2NyIpO2I9PTAmJmEuVSgiMU4iKTtIXCc8VCAxZz0iXCcrYS4xSygiICIpK1wnIj5cJytjKyI8L1Q+In0sM1E6NihhLGIpe0sgYz0iIixkPWEuMWUoIlxcbiIpLkwsaD0ydShKLlYoIjJpLTFzIikpLGc9Si5WKCIyei0xcy0ydCIpO0koZz09UilnPShoK2QtMSkuMXEoKS5MO1kgSSgzUihnKT09UilnPTA7TyhLIGk9MDtpPGQ7aSsrKXtLIGs9Yj9iW2ldOmgraSxqO0koaz09MClqPWUuMTMuMVc7WXtqPWc7TyhLIGw9ay4xcSgpO2wuTDxqOylsPSIwIitsO2o9bH1hPWo7Yys9Si4ycihpLGssYSl9SCBjfSw0OTo2KGEsYil7YT14KGEpO0sgYz1hLjFlKCJcXG4iKTtKLlYoIjJ6LTFzLTJ0Iik7SyBkPTJ1KEouVigiMmktMXMiKSk7YT0iIjtPKEsgaD1KLlYoIjFEIiksZz0wO2c8Yy5MO2crKyl7SyBpPWNbZ10saz0vXigmMnM7fFxccykrLy5YKGkpLGo9TixsPWI/YltnXTpkK2c7SShrIT1OKXtqPWtbMF0uMXEoKTtpPWkuMW8oai5MKTtqPWouUSgiICIsZS4xMy4xVyl9aT14KGkpO0koaS5MPT0wKWk9ZS4xMy4xVzthKz1KLjJyKGcsbCwoaiE9Tj9cJzwxNyAxZz0iXCcraCtcJyA1TiI+XCcraisiPC8xNz4iOiIiKStpKX1IIGF9LDRmOjYoYSl7SCBhPyI8NGE+IithKyI8LzRhPiI6IiJ9LDRiOjYoYSxiKXs2IGMobCl7SChsPWw/bC4xVnx8ZzpnKT9sKyIgIjoiIn1PKEsgZD0wLGg9IiIsZz1KLlYoIjFEIiwiIiksaT0wO2k8Yi5MO2krKyl7SyBrPWJbaV0sajtJKCEoaz09PU58fGsuTD09PTApKXtqPWMoayk7aCs9dShhLjFvKGQsay5QLWQpLGorIjQ4IikrdShrLjFULGoray4yMyk7ZD1rLlAray5MKyhrLjc1fHwwKX19aCs9dShhLjFvKGQpLGMoKSsiNDgiKTtIIGh9LDFIOjYoYSl7SyBiPSIiLGM9WyIyMCJdLGQ7SShKLlYoIjJrIik9PVIpSi4xbi4xNj1KLjFuLjF1PTExOzFsPSIyMCI7Si5WKCIybCIpPT1SJiZjLlUoIjQ3Iik7SSgoMXU9Si5WKCIxdSIpKT09MTEpYy5VKCI2UyIpO2MuVShKLlYoIjFnLTI3IikpO2MuVShKLlYoIjFEIikpO2E9YS5RKC9eWyBdKltcXG5dK3xbXFxuXSpbIF0qJC9nLCIiKS5RKC9cXHIvZywiICIpO2I9Si5WKCI0My0yMiIpO0koSi5WKCI0Mi00NSIpPT1SKWE9bihhLGIpO1l7TyhLIGg9IiIsZz0wO2c8YjtnKyspaCs9IiAiO2E9YS5RKC9cXHQvZyxoKX1hPWE7YTp7Yj1hPWE7aD0vPDJSXFxzKlxcLz8+fCYxeTsyUlxccypcXC8/JjFHOy8yVDtJKGUuMTMuNDY9PVIpYj1iLlEoaCwiXFxuIik7SShlLjEzLjQ0PT1SKWI9Yi5RKGgsIiIpO2I9Yi4xZSgiXFxuIik7aD0vXlxccyovO2c9NFE7TyhLIGk9MDtpPGIuTCYmZz4wO2krKyl7SyBrPWJbaV07SSh4KGspLkwhPTApe2s9aC5YKGspO0koaz09Til7YT1hOzFOIGF9Zz0xUS40cShrWzBdLkwsZyl9fUkoZz4wKU8oaT0wO2k8Yi5MO2krKyliW2ldPWJbaV0uMW8oZyk7YT1iLjFLKCJcXG4iKX1JKDF1KWQ9Si40ZChhKTtiPUouNGMoSi4ySixhKTtiPUouNGIoYSxiKTtiPUouNDkoYixkKTtJKEouVigiNDEtNDAiKSliPUUoYik7MWogMkghPSIxZCImJjJILjNTJiYySC4zUy4xQygvNXMvKSYmYy5VKCI1dCIpO0ggYj1cJzxUIDFjPSJcJyt0KEouMWMpK1wnIiAxZz0iXCcrYy4xSygiICIpK1wnIj5cJysoSi5WKCIxNiIpP2UuMTYuMUgoSik6IiIpK1wnPDNaIDV6PSIwIiA1SD0iMCIgNUo9IjAiPlwnK0ouNGYoSi5WKCIxdCIpKSsiPDNUPjwzUD4iKygxdT9cJzwyZCAxZz0iMXUiPlwnK0ouM1EoYSkrIjwvMmQ+IjoiIikrXCc8MmQgMWc9IjE3Ij48VCAxZz0iM08iPlwnK2IrIjwvVD48LzJkPjwvM1A+PC8zVD48LzNaPjwvVD4ifSwyRjo2KGEpe0koYT09PU4pYT0iIjtKLjE3PWE7SyBiPUouM1koIlQiKTtiLjNYPUouMUgoYSk7Si5WKCIxNiIpJiZ3KHAoYiwiLjE2IiksIjVjIixlLjE2LjJiKTtKLlYoIjNWLTE3IikmJncocChiLCIuMTciKSwiNTYiLGYpO0ggYn0sMlE6NihhKXtKLjFjPSIiKzFRLjVkKDFRLjVuKCkqNWspLjFxKCk7ZS4xWS4yQVt0KEouMWMpXT1KO0ouMW49QyhlLjJ2LGF8fHt9KTtJKEouVigiMmsiKT09UilKLjFuLjE2PUouMW4uMXU9MTF9LDVqOjYoYSl7YT1hLlEoL15cXHMrfFxccyskL2csIiIpLlEoL1xccysvZywifCIpO0giXFxcXGIoPzoiK2ErIilcXFxcYiJ9LDVmOjYoYSl7Si4yOD17MTg6ezFJOmEuMTgsMjM6IjFrIn0sMWI6ezFJOmEuMWIsMjM6IjFrIn0sMTc6MWYgTSgiKD88MTg+IithLjE4LjFtKyIpKD88MTc+Lio/KSg/PDFiPiIrYS4xYi4xbSsiKSIsIjVvIil9fX07SCBlfSgpOzFqIDJlIT0iMWQiJiYoMmUuMXY9MXYpOycsNjIsNDQxLCd8fHx8fHxmdW5jdGlvbnx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHxyZXR1cm58aWZ8dGhpc3x2YXJ8bGVuZ3RofFhSZWdFeHB8bnVsbHxmb3J8aW5kZXh8cmVwbGFjZXx0cnVlfHxkaXZ8cHVzaHxnZXRQYXJhbXxjYWxsfGV4ZWN8ZWxzZXxwcm90b3R5cGV8fGZhbHNlfGxhc3RJbmRleHxjb25maWd8YXJndW1lbnRzfFJlZ0V4cHx0b29sYmFyfGNvZGV8bGVmdHxjYXB0dXJlTmFtZXN8c2xpY2V8cmlnaHR8aWR8dW5kZWZpbmVkfHNwbGl0fG5ld3xjbGFzc3xhZGRUb2tlbnxpbmRleE9mfHR5cGVvZnxzY3JpcHR8Y2xhc3NOYW1lfHNvdXJjZXxwYXJhbXN8c3Vic3RyfGFwcGx5fHRvU3RyaW5nfFN0cmluZ3xsaW5lfHRpdGxlfGd1dHRlcnxTeW50YXhIaWdobGlnaHRlcnxfeHJlZ2V4cHxzdHJpbmdzfGx0fGh0bWx8dGVzdHxPVVRTSURFX0NMQVNTfG1hdGNofGJydXNofGRvY3VtZW50fHRhcmdldHxndHxnZXRIdG1sfHJlZ2V4fGdsb2JhbHxqb2lufHN0eWxlfGhpZ2hsaWdodHxicmVha3xjb25jYXR8d2luZG93fE1hdGh8aXNSZWdFeHB8dGhyb3d8dmFsdWV8YnJ1c2hlc3xicnVzaE5hbWV8c3BhY2V8YWxlcnR8dmFyc3xodHRwfHN5bnRheGhpZ2hsaWdodGVyfGV4cGFuZFNvdXJjZXxzaXplfGNzc3xjYXNlfGZvbnR8RmF8bmFtZXxodG1sU2NyaXB0fGRBfGNhbnxoYW5kbGVyfGdtfHRkfGV4cG9ydHN8Y29sb3J8aW58aHJlZnxmaXJzdHxkaXNjb3ZlcmVkQnJ1c2hlc3xsaWdodHxjb2xsYXBzZXxvYmplY3R8Y2FjaGV8Z2V0QnV0dG9uSHRtbHx0cmlnZ2VyfHBhdHRlcm58Z2V0TGluZUh0bWx8bmJzcHxudW1iZXJzfHBhcnNlSW50fGRlZmF1bHRzfGNvbXxpdGVtc3x3d3d8cGFkfGhpZ2hsaWdodGVyc3xleGVjdXRlfGZvY3VzfGZ1bmN8YWxsfGdldERpdnxwYXJlbnROb2RlfG5hdmlnYXRvcnxJTlNJREVfQ0xBU1N8cmVnZXhMaXN0fGhhc0ZsYWd8TWF0Y2h8dXNlU2NyaXB0VGFnc3xoYXNOYW1lZENhcHR1cmV8dGV4dHxoZWxwfGluaXR8YnJ8aW5wdXR8Z2l8RXJyb3J8dmFsdWVzfHNwYW58bGlzdHwyNTB8aGVpZ2h0fHdpZHRofHNjcmVlbnx0b3B8NTAwfHRhZ05hbWV8ZmluZEVsZW1lbnRzfGdldEVsZW1lbnRzQnlUYWdOYW1lfGFib3V0RGlhbG9nfF9ibGFua3xhcHBlbmRDaGlsZHxjaGFyQXR8QXJyYXl8Y29weUFzR2xvYmFsfHNldEZsYWd8aGlnaGxpZ2h0ZXJffHN0cmluZ3xhdHRhY2hFdmVudHxub2RlTmFtZXxmbG9vcnxiYWNrcmVmfG91dHB1dHx0aGV8VHlwZUVycm9yfHN0aWNreXxaYXxpdGVyYXRlfGZyZWV6ZVRva2Vuc3xzY29wZXx0eXBlfHRleHRhcmVhfGFsZXhnb3JiYXRjaGV2fHZlcnNpb258bWFyZ2lufDIwMTB8MDA1ODk2fGdzfHJlZ2V4TGlifGJvZHl8Y2VudGVyfGFsaWdufG5vQnJ1c2h8cmVxdWlyZXxjaGlsZE5vZGVzfERURHx4aHRtbDF8aGVhZHxvcmd8dzN8dXJsfHByZXZlbnREZWZhdWx0fGNvbnRhaW5lcnx0cnxnZXRMaW5lTnVtYmVyc0h0bWx8aXNOYU58dXNlckFnZW50fHRib2R5fGlzTGluZUhpZ2hsaWdodGVkfHF1aWNrfHZvaWR8aW5uZXJIVE1MfGNyZWF0ZXx0YWJsZXxsaW5rc3xhdXRvfHNtYXJ0fHRhYnxzdHJpcEJyc3x0YWJzfGJsb2dnZXJNb2RlfGNvbGxhcHNlZHxwbGFpbnxnZXRDb2RlTGluZXNIdG1sfGNhcHRpb258Z2V0TWF0Y2hlc0h0bWx8ZmluZE1hdGNoZXN8ZmlndXJlT3V0TGluZU51bWJlcnN8cmVtb3ZlTmVzdGVkTWF0Y2hlc3xnZXRUaXRsZUh0bWx8YnJ1c2hOb3RIdG1sU2NyaXB0fHN1YnN0cmluZ3xjcmVhdGVFbGVtZW50fEhpZ2hsaWdodGVyfGxvYWR8SHRtbFNjcmlwdHxCcnVzaHxwcmV8ZXhwYW5kfG11bHRpbGluZXxtaW58Q2FufGlnbm9yZUNhc2V8ZmluZHxibHVyfGV4dGVuZGVkfHRvTG93ZXJDYXNlfGFsaWFzZXN8YWRkRXZlbnRMaXN0ZW5lcnxpbm5lclRleHR8dGV4dENvbnRlbnR8d2FzbnxzZWxlY3R8Y3JlYXRlVGV4dE5vZGV8cmVtb3ZlQ2hpbGR8b3B0aW9ufHNhbWV8ZnJhbWV8eG1sbnN8ZHRkfHR3aWNlfDE5OTl8ZXF1aXZ8bWV0YXxodG1sc2NyaXB0fHRyYW5zaXRpb25hbHwxRTN8ZXhwZWN0ZWR8UFVCTElDfERPQ1RZUEV8b258VzNDfFhIVE1MfFRSfEVOfFRyYW5zaXRpb25hbHx8Y29uZmlndXJlZHxzcmNFbGVtZW50fE9iamVjdHxhZnRlcnxydW58ZGJsY2xpY2t8bWF0Y2hDaGFpbnx2YWx1ZU9mfGNvbnN0cnVjdG9yfGRlZmF1bHR8c3dpdGNofGNsaWNrfHJvdW5kfGV4ZWNBdHxmb3JIdG1sU2NyaXB0fHRva2VufGdpbXl8ZnVuY3Rpb25zfGdldEtleXdvcmRzfDFFNnxlc2NhcGV8d2l0aGlufHJhbmRvbXxzZ2l8YW5vdGhlcnxmaW5hbGx5fHN1cHBseXxNU0lFfGllfHRvVXBwZXJDYXNlfGNhdGNofHJldHVyblZhbHVlfGRlZmluaXRpb258ZXZlbnR8Ym9yZGVyfGltc3h8Y29uc3RydWN0aW5nfG9uZXxJbmZpbml0eXxmcm9tfHdoZW58Q29udGVudHxjZWxscGFkZGluZ3xmbGFnc3xjZWxsc3BhY2luZ3x0cnl8eGh0bWx8VHlwZXxzcGFjZXN8MjkzMDQwMnxob3N0ZWRfYnV0dG9uX2lkfGxhc3RJbmRleE9mfGRvbmF0ZXxhY3RpdmV8ZGV2ZWxvcG1lbnR8a2VlcHx0b3x4Y2xpY2t8X3N8WG1sfHBsZWFzZXxsaWtlfHlvdXxwYXlwYWx8Y2dpfGNtZHx3ZWJzY3J8YmlufGhpZ2hsaWdodGVkfHNjcm9sbGJhcnN8YXNwU2NyaXB0VGFnc3xwaHBTY3JpcHRUYWdzfHNvcnR8bWF4fHNjcmlwdFNjcmlwdFRhZ3N8dG9vbGJhcl9pdGVtfF98Y29tbWFuZHxjb21tYW5kX3xudW1iZXJ8Z2V0RWxlbWVudEJ5SWR8ZG91YmxlUXVvdGVkU3RyaW5nfHNpbmdsZUxpbmVQZXJsQ29tbWVudHN8c2luZ2xlTGluZUNDb21tZW50c3xtdWx0aUxpbmVDQ29tbWVudHN8c2luZ2xlUXVvdGVkU3RyaW5nfG11bHRpTGluZURvdWJsZVF1b3RlZFN0cmluZ3x4bWxDb21tZW50c3xhbHR8bXVsdGlMaW5lU2luZ2xlUXVvdGVkU3RyaW5nfElmfGh0dHBzfDFlbXwwMDB8ZmZmfGJhY2tncm91bmR8NWVtfHh4fGJvdHRvbXw3NWVtfEdvcmJhdGNoZXZ8bGFyZ2V8c2VyaWZ8Q0RBVEF8Y29udGludWV8dXRmfGNoYXJzZXR8Y29udGVudHxBYm91dHxmYW1pbHl8c2Fuc3xIZWx2ZXRpY2F8QXJpYWx8R2VuZXZhfDNlbXxub2d1dHRlcnxDb3B5cmlnaHR8c3ludGF4fGNsb3NlfHdyaXRlfDIwMDR8QWxleHxvcGVufEphdmFTY3JpcHR8aGlnaGxpZ2h0ZXJ8SnVseXwwMnxyZXBsYWNlQ2hpbGR8b2Zmc2V0fDgzJy5zcGxpdCgnfCcpLDAse30pKQo=]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/scripts/shCore.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZXZhbChmdW5jdGlvbihoLGIsaixmLGcsaSl7Zz1mdW5jdGlvbihhKXtyZXR1cm4oYTxiPyIiOmcocGFyc2VJbnQoYS9iKSkpKygoYT1hJWIpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYSsyOSk6YS50b1N0cmluZygzNikpfTtpZighIiIucmVwbGFjZSgvXi8sU3RyaW5nKSl7d2hpbGUoai0tKXtpW2coaildPWZbal18fGcoail9Zj1bZnVuY3Rpb24oYSl7cmV0dXJuIGlbYV19XTtnPWZ1bmN0aW9uKCl7cmV0dXJuIlxcdysifTtqPTF9d2hpbGUoai0tKXtpZihmW2pdKXtoPWgucmVwbGFjZShuZXcgUmVnRXhwKCJcXGIiK2coaikrIlxcYiIsImciKSxmW2pdKX19cmV0dXJuIGh9KCdLIE07SShNKTFTIDJVKCIyYVwndCA0ayBNIDRLIDJnIDNsIDRHIDRIIik7KDYoKXs2IHIoZixlKXtJKCFNLjFSKGYpKTFTIDNtKCIzcyAxNSA0UiIpO0sgYT1mLjF3O2Y9TShmLjFtLHQoZikrKGV8fCIiKSk7SShhKWYuMXc9ezFtOmEuMW0sMTk6YS4xOT9hLjE5LjFhKDApOk59O0ggZn02IHQoZil7SChmLjFKPyJnIjoiIikrKGYuNHM/ImkiOiIiKSsoZi40cD8ibSI6IiIpKyhmLjR2PyJ4IjoiIikrKGYuM24/InkiOiIiKX02IEIoZixlLGEsYil7SyBjPXUuTCxkLGgsZzt2PVI7NUt7Tyg7Yy0tOyl7Zz11W2NdO0koYSZnLjNyJiYoIWcuMnB8fGcuMnAuVyhiKSkpe2cuMnEuMTI9ZTtJKChoPWcuMnEuWChmKSkmJmguUD09PWUpe2Q9ezNrOmcuMmIuVyhiLGgsYSksMUM6aH07MU59fX19NXYoaSl7MVMgaX01cXt2PTExfUggZH02IHAoZixlLGEpe0koM2IuWi4xaSlIIGYuMWkoZSxhKTtPKGE9YXx8MDthPGYuTDthKyspSShmW2FdPT09ZSlIIGE7SC0xfU09NihmLGUpe0sgYT1bXSxiPU0uMUIsYz0wLGQsaDtJKE0uMVIoZikpe0koZSE9PTFkKTFTIDNtKCIyYVwndCA1ciA1SSA1RiA1QiA1QyAxNSA1RSA1cCIpO0ggcihmKX1JKHYpMVMgMlUoIjJhXCd0IFcgM2wgTSA1OSA1bSA1ZyA1eCA1aSIpO2U9ZXx8IiI7TyhkPXsyTjoxMSwxOTpbXSwySzo2KGcpe0ggZS4xaShnKT4tMX0sM2Q6NihnKXtlKz1nfX07YzxmLkw7KUkoaD1CKGYsYyxiLGQpKXthLlUoaC4zayk7Yys9aC4xQ1swXS5MfHwxfVkgSShoPW4uWC5XKHpbYl0sZi4xYShjKSkpe2EuVShoWzBdKTtjKz1oWzBdLkx9WXtoPWYuM2EoYyk7SShoPT09IlsiKWI9TS4ySTtZIEkoaD09PSJdIiliPU0uMUI7YS5VKGgpO2MrK31hPTE1KGEuMUsoIiIpLG4uUS5XKGUsdywiIikpO2EuMXc9ezFtOmYsMTk6ZC4yTj9kLjE5Ok59O0ggYX07TS4zdj0iMS41LjAiO00uMkk9MTtNLjFCPTI7SyBDPS9cXCQoPzooXFxkXFxkP3xbJCZgXCddKXx7KFskXFx3XSspfSkvZyx3PS9bXjVoXSt8KFtcXHNcXFNdKSg/PVtcXHNcXFNdKlxcMSkvZyxBPS9eKD86Wz8qK118e1xcZCsoPzosXFxkKik/fSlcXD8/Lyx2PTExLHU9W10sbj17WDoxNS5aLlgsMUE6MTUuWi4xQSwxQzoxci5aLjFDLFE6MXIuWi5RLDFlOjFyLlouMWV9LHg9bi5YLlcoLygpPz8vLCIiKVsxXT09PTFkLEQ9Nigpe0sgZj0vXi9nO24uMUEuVyhmLCIiKTtIIWYuMTJ9KCkseT02KCl7SyBmPS94L2c7bi5RLlcoIngiLGYsIiIpO0ghZi4xMn0oKSxFPTE1LlouM24hPT0xZCx6PXt9O3pbTS4ySV09L14oPzpcXFxcKD86WzAtM11bMC03XXswLDJ9fFs0LTddWzAtN10/fHhbXFwyOS0yNi1mXXsyfXx1W1xcMjktMjYtZl17NH18Y1tBLTNvLXpdfFtcXHNcXFNdKSkvO3pbTS4xQl09L14oPzpcXFxcKD86MCg/OlswLTNdWzAtN117MCwyfXxbNC03XVswLTddPyk/fFsxLTldXFxkKnx4W1xcMjktMjYtZl17Mn18dVtcXDI5LTI2LWZdezR9fGNbQS0zby16XXxbXFxzXFxTXSl8XFwoXFw/Wzo9IV18Wz8qK11cXD98e1xcZCsoPzosXFxkKik/fVxcPz8pLztNLjFoPTYoZixlLGEsYil7dS5VKHsycTpyKGYsImciKyhFPyJ5IjoiIikpLDJiOmUsM3I6YXx8TS4xQiwycDpifHxOfSl9O00uMm49NihmLGUpe0sgYT1mKyIvIisoZXx8IiIpO0ggTS4yblthXXx8KE0uMm5bYV09TShmLGUpKX07TS4zYz02KGYpe0ggcihmLCJnIil9O00uNWw9NihmKXtIIGYuUSgvWy1bXFxde30oKSorPy4sXFxcXF4kfCNcXHNdL2csIlxcXFwkJiIpfTtNLjVlPTYoZixlLGEsYil7ZT1yKGUsImciKyhiJiZFPyJ5IjoiIikpO2UuMTI9YT1hfHwwO2Y9ZS5YKGYpO0ggYj9mJiZmLlA9PT1hP2Y6TjpmfTtNLjNxPTYoKXtNLjFoPTYoKXsxUyAyVSgiMmFcJ3QgNTUgMWggNTQgM3EiKX19O00uMVI9NihmKXtIIDUzLlouMXEuVyhmKT09PSJbMm0gMTVdIn07TS4zcD02KGYsZSxhLGIpe08oSyBjPXIoZSwiZyIpLGQ9LTEsaDtoPWMuWChmKTspe2EuVyhiLGgsKytkLGYsYyk7Yy4xMj09PWguUCYmYy4xMisrfUkoZS4xSillLjEyPTB9O00uNTc9NihmLGUpe0ggNiBhKGIsYyl7SyBkPWVbY10uMUk/ZVtjXTp7MUk6ZVtjXX0saD1yKGQuMUksImciKSxnPVtdLGk7TyhpPTA7aTxiLkw7aSsrKU0uM3AoYltpXSxoLDYoayl7Zy5VKGQuM2o/a1tkLjNqXXx8IiI6a1swXSl9KTtIIGM9PT1lLkwtMXx8IWcuTD9nOmEoZyxjKzEpfShbZl0sMCl9OzE1LlouMXA9NihmLGUpe0ggSi5YKGVbMF0pfTsxNS5aLlc9NihmLGUpe0ggSi5YKGUpfTsxNS5aLlg9NihmKXtLIGU9bi5YLjFwKEosMTQpLGE7SShlKXtJKCF4JiZlLkw+MSYmcChlLCIiKT4tMSl7YT0xNShKLjFtLG4uUS5XKHQoSiksImciLCIiKSk7bi5RLlcoZi4xYShlLlApLGEsNigpe08oSyBjPTE7YzwxNC5MLTI7YysrKUkoMTRbY109PT0xZCllW2NdPTFkfSl9SShKLjF3JiZKLjF3LjE5KU8oSyBiPTE7YjxlLkw7YisrKUkoYT1KLjF3LjE5W2ItMV0pZVthXT1lW2JdOyFEJiZKLjFKJiYhZVswXS5MJiZKLjEyPmUuUCYmSi4xMi0tfUggZX07SSghRCkxNS5aLjFBPTYoZil7KGY9bi5YLlcoSixmKSkmJkouMUomJiFmWzBdLkwmJkouMTI+Zi5QJiZKLjEyLS07SCEhZn07MXIuWi4xQz02KGYpe00uMVIoZil8fChmPTE1KGYpKTtJKGYuMUope0sgZT1uLjFDLjFwKEosMTQpO2YuMTI9MDtIIGV9SCBmLlgoSil9OzFyLlouUT02KGYsZSl7SyBhPU0uMVIoZiksYixjO0koYSYmMWogZS41OCgpPT09IjNmIiYmZS4xaSgiJHsiKT09PS0xJiZ5KUggbi5RLjFwKEosMTQpO0koYSl7SShmLjF3KWI9Zi4xdy4xOX1ZIGYrPSIiO0koMWogZT09PSI2IiljPW4uUS5XKEosZiw2KCl7SShiKXsxNFswXT0xZiAxcigxNFswXSk7TyhLIGQ9MDtkPGIuTDtkKyspSShiW2RdKTE0WzBdW2JbZF1dPTE0W2QrMV19SShhJiZmLjFKKWYuMTI9MTRbMTQuTC0yXSsxNFswXS5MO0ggZS4xcChOLDE0KX0pO1l7Yz1KKyIiO2M9bi5RLlcoYyxmLDYoKXtLIGQ9MTQ7SCBuLlEuVyhlLEMsNihoLGcsaSl7SShnKTViKGcpezI0IiQiOkgiJCI7MjQiJiI6SCBkWzBdOzI0ImAiOkggZFtkLkwtMV0uMWEoMCxkW2QuTC0yXSk7MjQiXCciOkggZFtkLkwtMV0uMWEoZFtkLkwtMl0rZFswXS5MKTs1YTppPSIiO2c9K2c7SSghZylIIGg7Tyg7Zz5kLkwtMzspe2k9MXIuWi4xYS5XKGcsLTEpK2k7Zz0xUS4zaShnLzEwKX1IKGc/ZFtnXXx8IiI6IiQiKStpfVl7Zz0raTtJKGc8PWQuTC0zKUggZFtnXTtnPWI/cChiLGkpOi0xO0ggZz4tMT9kW2crMV06aH19KX0pfUkoYSYmZi4xSilmLjEyPTA7SCBjfTsxci5aLjFlPTYoZixlKXtJKCFNLjFSKGYpKUggbi4xZS4xcChKLDE0KTtLIGE9SisiIixiPVtdLGM9MCxkLGg7SShlPT09MWR8fCtlPDApZT01RDtZe2U9MVEuM2koK2UpO0koIWUpSFtdfU8oZj1NLjNjKGYpO2Q9Zi5YKGEpOyl7SShmLjEyPmMpe2IuVShhLjFhKGMsZC5QKSk7ZC5MPjEmJmQuUDxhLkwmJjNiLlouVS4xcChiLGQuMWEoMSkpO2g9ZFswXS5MO2M9Zi4xMjtJKGIuTD49ZSkxTn1mLjEyPT09ZC5QJiZmLjEyKyt9SShjPT09YS5MKXtJKCFuLjFBLlcoZiwiIil8fGgpYi5VKCIiKX1ZIGIuVShhLjFhKGMpKTtIIGIuTD5lP2IuMWEoMCxlKTpifTtNLjFoKC9cXChcXD8jW14pXSpcXCkvLDYoZil7SCBuLjFBLlcoQSxmLjJTLjFhKGYuUCtmWzBdLkwpKT8iIjoiKD86KSJ9KTtNLjFoKC9cXCgoPyFcXD8pLyw2KCl7Si4xOS5VKE4pO0giKCJ9KTtNLjFoKC9cXChcXD88KFskXFx3XSspPi8sNihmKXtKLjE5LlUoZlsxXSk7Si4yTj1SO0giKCJ9KTtNLjFoKC9cXFxcazwoW1xcdyRdKyk+Lyw2KGYpe0sgZT1wKEouMTksZlsxXSk7SCBlPi0xPyJcXFxcIisoZSsxKSsoM1IoZi4yUy4zYShmLlArZlswXS5MKSk/IiI6Iig/OikiKTpmWzBdfSk7TS4xaCgvXFxbXFxeP10vLDYoZil7SCBmWzBdPT09IltdIj8iXFxcXGJcXFxcQiI6IltcXFxcc1xcXFxTXSJ9KTtNLjFoKC9eXFwoXFw/KFs1QV0rKVxcKS8sNihmKXtKLjNkKGZbMV0pO0giIn0pO00uMWgoLyg/Olxccyt8Iy4qKSsvLDYoZil7SCBuLjFBLlcoQSxmLjJTLjFhKGYuUCtmWzBdLkwpKT8iIjoiKD86KSJ9LE0uMUIsNigpe0ggSi4ySygieCIpfSk7TS4xaCgvXFwuLyw2KCl7SCJbXFxcXHNcXFxcU10ifSxNLjFCLDYoKXtIIEouMksoInMiKX0pfSkoKTsxaiAyZSE9IjFkIiYmKDJlLk09TSk7SyAxdj02KCl7NiByKGEsYil7YS4xbC4xaShiKSE9LTF8fChhLjFsKz0iICIrYil9NiB0KGEpe0ggYS4xaSgiM2UiKT09MD9hOiIzZSIrYX02IEIoYSl7SCBlLjFZLjJBW3QoYSldfTYgcChhLGIsYyl7SShhPT1OKUggTjtLIGQ9YyE9Uj9hLjNHOlthLjJHXSxoPXsiIyI6IjFjIiwiLiI6IjFsIn1bYi4xbygwLDEpXXx8IjNoIixnLGk7Zz1oIT0iM2giP2IuMW8oMSk6Yi41dSgpO0koKGFbaF18fCIiKS4xaShnKSE9LTEpSCBhO08oYT0wO2QmJmE8ZC5MJiZpPT1OO2ErKylpPXAoZFthXSxiLGMpO0ggaX02IEMoYSxiKXtLIGM9e30sZDtPKGQgMmcgYSljW2RdPWFbZF07TyhkIDJnIGIpY1tkXT1iW2RdO0ggY302IHcoYSxiLGMsZCl7NiBoKGcpe2c9Z3x8MVAuNXk7SSghZy4xRil7Zy4xRj1nLjUyO2cuM049Nigpe0ouNXc9MTF9fWMuVyhkfHwxUCxnKX1hLjNnP2EuM2coIjRVIitiLGgpOmEuNHkoYixoLDExKX02IEEoYSxiKXtLIGM9ZS4xWS4yaixkPU47SShjPT1OKXtjPXt9O08oSyBoIDJnIGUuMVUpe0sgZz1lLjFVW2hdO2Q9Zy40eDtJKGQhPU4pe2cuMVY9aC40dygpO08oZz0wO2c8ZC5MO2crKyljW2RbZ11dPWh9fWUuMVkuMmo9Y31kPWUuMVVbY1thXV07ZD09TiYmYiE9MTEmJjFQLjFYKGUuMTMuMXguMVgrKGUuMTMuMXguM0UrYSkpO0ggZH02IHYoYSxiKXtPKEsgYz1hLjFlKCJcXG4iKSxkPTA7ZDxjLkw7ZCsrKWNbZF09YihjW2RdLGQpO0ggYy4xSygiXFxuIil9NiB1KGEsYil7SShhPT1OfHxhLkw9PTB8fGE9PSJcXG4iKUggYTthPWEuUSgvPC9nLCImMXk7Iik7YT1hLlEoLyB7Mix9L2csNihjKXtPKEsgZD0iIixoPTA7aDxjLkwtMTtoKyspZCs9ZS4xMy4xVztIIGQrIiAifSk7SShiIT1OKWE9dihhLDYoYyl7SShjLkw9PTApSCIiO0sgZD0iIjtjPWMuUSgvXigmMnM7fCApKy8sNihoKXtkPWg7SCIifSk7SShjLkw9PTApSCBkO0ggZCtcJzwxNyAxZz0iXCcrYitcJyI+XCcrYysiPC8xNz4ifSk7SCBhfTYgbihhLGIpe2EuMWUoIlxcbiIpO08oSyBjPSIiLGQ9MDtkPDUwO2QrKyljKz0iICAgICAgICAgICAgICAgICAgICAiO0ggYT12KGEsNihoKXtJKGguMWkoIlxcdCIpPT0tMSlIIGg7TyhLIGc9MDsoZz1oLjFpKCJcXHQiKSkhPS0xOyloPWguMW8oMCxnKStjLjFvKDAsYi1nJWIpK2guMW8oZysxLGguTCk7SCBofSl9NiB4KGEpe0ggYS5RKC9eXFxzK3xcXHMrJC9nLCIiKX02IEQoYSxiKXtJKGEuUDxiLlApSC0xO1kgSShhLlA+Yi5QKUggMTtZIEkoYS5MPGIuTClILTE7WSBJKGEuTD5iLkwpSCAxO0ggMH02IHkoYSxiKXs2IGMoayl7SCBrWzBdfU8oSyBkPU4saD1bXSxnPWIuMkQ/Yi4yRDpjOyhkPWIuMUkuWChhKSkhPU47KXtLIGk9ZyhkLGIpO0koMWogaT09IjNmIilpPVsxZiBlLjJMKGksZC5QLGIuMjMpXTtoPWguMU8oaSl9SCBofTYgRShhKXtLIGI9LyguKikoKCYxRzt8JjF5OykuKikvO0ggYS5RKGUuM0EuM00sNihjKXtLIGQ9IiIsaD1OO0koaD1iLlgoYykpe2M9aFsxXTtkPWhbMl19SFwnPGEgMmg9IlwnK2MrXCciPlwnK2MrIjwvYT4iK2R9KX02IHooKXtPKEsgYT0xRS4zNigiMWsiKSxiPVtdLGM9MDtjPGEuTDtjKyspYVtjXS4zcz09IjIwIiYmYi5VKGFbY10pO0ggYn02IGYoYSl7YT1hLjFGO0sgYj1wKGEsIi4yMCIsUik7YT1wKGEsIi4zTyIsUik7SyBjPTFFLjRpKCIzdCIpO0koISghYXx8IWJ8fHAoYSwiM3QiKSkpe0IoYi4xYyk7cihiLCIxbSIpO08oSyBkPWEuM0csaD1bXSxnPTA7ZzxkLkw7ZysrKWguVShkW2ddLjR6fHxkW2ddLjRBKTtoPWguMUsoIlxcciIpO2MuMzkoMUUuNEQoaCkpO2EuMzkoYyk7Yy4yQygpO2MuNEMoKTt3KGMsIjR1Iiw2KCl7Yy4yRy40RShjKTtiLjFsPWIuMWwuUSgiMW0iLCIiKX0pfX1JKDFqIDNGIT0iMWQiJiYxaiBNPT0iMWQiKU09M0YoIk0iKS5NO0sgZT17MnY6eyIxZy0yNyI6IiIsIjJpLTFzIjoxLCIyei0xcy0ydCI6MTEsMU06TiwxdDpOLCI0Mi00NSI6UiwiNDMtMjIiOjQsMXU6UiwxNjpSLCIzVi0xNyI6UiwybDoxMSwiNDEtNDAiOlIsMms6MTEsIjF6LTFrIjoxMX0sMTM6ezFXOiImMnM7IiwyTTpSLDQ2OjExLDQ0OjExLDM0OiI0biIsMXg6ezIxOiI0byAxbSIsMlA6Ij8iLDFYOiIxdlxcblxcbiIsM0U6IjRyXCd0IDR0IDFEIE86ICIsNGc6IjRtIDRCXCd0IDUxIE8gMXotMWsgNEY6ICIsMzc6XCc8ITRUIDF6IDRTICItLy80Vi8vM0ggNFcgMS4wIDRaLy80WSIgIjFaOi8vMnkuM0wuM0svNFgvM0kvM0gvM0ktNFAuNEoiPjwxeiA0ST0iMVo6Ly8yeS4zTC4zSy80TC81TCI+PDNKPjw0TiAxWi00TT0iNUctNU0iIDZLPSIyTy8xejsgNko9NkktOCIgLz48MXQ+NkwgMXY8LzF0PjwvM0o+PDNCIDFMPSIyNS02TTo2USw2UCw2Tyw2Ti02Rjs2eS0yZjojNng7MmY6IzZ3OzI1LTIyOjZ2OzJPLTNEOjNDOyI+PFQgMUw9IjJPLTNEOjNDOzN3LTMyOjEuNno7Ij48VCAxTD0iMjUtMjI6NkEtNkU7Ij4xdjwvVD48VCAxTD0iMjUtMjI6LjZDOzN3LTZCOjZSOyI+PFQ+M3YgMy4wLjc2ICg3MiA3MyAzeCk8L1Q+PFQ+PGEgMmg9IjFaOi8vM3UuMncvMXYiIDFGPSIzOCIgMUw9IjJmOiMzeSI+MVo6Ly8zdS4ydy8xdjwvYT48L1Q+PFQ+NzAgMTcgNlUgNzEuPC9UPjxUPjZUIDZYLTN4IDZZIDZELjwvVD48L1Q+PFQ+NnQgNjEgNjAgSiAxaywgNVogPGEgMmg9IjZ1Oi8vMnkuNjIuMncvNjMtNjYvNjU/NjQ9NVgtNVcmNVA9NU8iIDFMPSIyZjojM3kiPjVSPC9hPiA1ViA8MlIvPjVVIDVUIDVTITwvVD48L1Q+PC8zQj48LzF6PlwnfX0sMVk6ezJqOk4sMkE6e319LDFVOnt9LDNBOns2bjovXFwvXFwqW1xcc1xcU10qP1xcKlxcLy8yYyw2bTovXFwvXFwvLiokLzJjLDZsOi8jLiokLzJjLDZrOi8iKFteXFxcXCJcXG5dfFxcXFwuKSoiL2csNm86L1wnKFteXFxcXFwnXFxuXXxcXFxcLikqXCcvZyw2cDoxZiBNKFwnIihbXlxcXFxcXFxcIl18XFxcXFxcXFwuKSoiXCcsIjN6IiksNnM6MWYgTSgiXCcoW15cXFxcXFxcXFwnXXxcXFxcXFxcXC4pKlwnIiwiM3oiKSw2cTovKCYxeTt8PCkhLS1bXFxzXFxTXSo/LS0oJjFHO3w+KS8yYywzTTovXFx3KzpcXC9cXC9bXFx3LS5cXC8/JSY9OkA7XSovZyw2YTp7MTg6LygmMXk7fDwpXFw/PT8vZywxYjovXFw/KCYxRzt8PikvZ30sNjk6ezE4Oi8oJjF5O3w8KSU9Py9nLDFiOi8lKCYxRzt8PikvZ30sNmQ6ezE4Oi8oJjF5O3w8KVxccyoxay4qPygmMUc7fD4pLzJULDFiOi8oJjF5O3w8KVxcL1xccyoxa1xccyooJjFHO3w+KS8yVH19LDE2OnsxSDo2KGEpezYgYihpLGspe0ggZS4xNi4ybyhpLGssZS4xMy4xeFtrXSl9TyhLIGM9XCc8VCAxZz0iMTYiPlwnLGQ9ZS4xNi4yeCxoPWQuMlgsZz0wO2c8aC5MO2crKyljKz0oZFtoW2ddXS4xSHx8YikoYSxoW2ddKTtjKz0iPC9UPiI7SCBjfSwybzo2KGEsYixjKXtIXCc8Mlc+PGEgMmg9IiMiIDFnPSI2ZSA2aFwnK2IrIiAiK2IrXCciPlwnK2MrIjwvYT48LzJXPiJ9LDJiOjYoYSl7SyBiPWEuMUYsYz1iLjFsfHwiIjtiPUIocChiLCIuMjAiLFIpLjFjKTtLIGQ9NihoKXtIKGg9MTUoaCsiNmYoXFxcXHcrKSIpLlgoYykpP2hbMV06Tn0oIjZnIik7YiYmZCYmZS4xNi4yeFtkXS4yQihiKTthLjNOKCl9LDJ4OnsyWDpbIjIxIiwiMlAiXSwyMTp7MUg6NihhKXtJKGEuVigiMmwiKSE9UilIIiI7SyBiPWEuVigiMXQiKTtIIGUuMTYuMm8oYSwiMjEiLGI/YjplLjEzLjF4LjIxKX0sMkI6NihhKXthPTFFLjZqKHQoYS4xYykpO2EuMWw9YS4xbC5RKCI0NyIsIiIpfX0sMlA6ezJCOjYoKXtLIGE9IjY4PTAiO2ErPSIsIDE4PSIrKDMxLjMwLTMzKS8yKyIsIDMyPSIrKDMxLjJaLTJZKS8yKyIsIDMwPTMzLCAyWj0yWSI7YT1hLlEoL14sLywiIik7YT0xUC42WigiIiwiMzgiLGEpO2EuMkMoKTtLIGI9YS4xRTtiLjZXKGUuMTMuMXguMzcpO2IuNlYoKTthLjJDKCl9fX19LDM1OjYoYSxiKXtLIGM7SShiKWM9W2JdO1l7Yz0xRS4zNihlLjEzLjM0KTtPKEsgZD1bXSxoPTA7aDxjLkw7aCsrKWQuVShjW2hdKTtjPWR9Yz1jO2Q9W107SShlLjEzLjJNKWM9Yy4xTyh6KCkpO0koYy5MPT09MClIIGQ7TyhoPTA7aDxjLkw7aCsrKXtPKEsgZz1jW2hdLGk9YSxrPWNbaF0uMWwsaj0zVyAwLGw9e30sbT0xZiBNKCJeXFxcXFsoPzwyVj4oLio/KSlcXFxcXSQiKSxzPTFmIE0oIig/PDI3PltcXFxcdy1dKylcXFxccyo6XFxcXHMqKD88MVQ+W1xcXFx3LSUjXSt8XFxcXFsuKj9cXFxcXXxcXCIuKj9cXCJ8XCcuKj9cJylcXFxccyo7PyIsImciKTsoaj1zLlgoaykpIT1OOyl7SyBvPWouMVQuUSgvXltcJyJdfFtcJyJdJC9nLCIiKTtJKG8hPU4mJm0uMUEobykpe289bS5YKG8pO289by4yVi5MPjA/by4yVi4xZSgvXFxzKixcXHMqLyk6W119bFtqLjI3XT1vfWc9ezFGOmcsMW46QyhpLGwpfTtnLjFuLjFEIT1OJiZkLlUoZyl9SCBkfSwxTTo2KGEsYil7SyBjPUouMzUoYSxiKSxkPU4saD1lLjEzO0koYy5MIT09MClPKEsgZz0wO2c8Yy5MO2crKyl7Yj1jW2ddO0sgaT1iLjFGLGs9Yi4xbixqPWsuMUQsbDtJKGohPU4pe0koa1siMXotMWsiXT09IlIifHxlLjJ2WyIxei0xayJdPT1SKXtkPTFmIGUuNGwoaik7aj0iNE8ifVkgSShkPUEoaikpZD0xZiBkO1kgNkg7bD1pLjNYO0koaC4yTSl7bD1sO0sgbT14KGwpLHM9MTE7SShtLjFpKCI8IVs2R1siKT09MCl7bT1tLjRoKDkpO3M9Un1LIG89bS5MO0kobS4xaSgiXV1cXD4iKT09by0zKXttPW0uNGgoMCxvLTMpO3M9Un1sPXM/bTpsfUkoKGkuMXR8fCIiKSE9IiIpay4xdD1pLjF0O2suMUQ9ajtkLjJRKGspO2I9ZC4yRihsKTtJKChpLjFjfHwiIikhPSIiKWIuMWM9aS4xYztpLjJHLjc0KGIsaSl9fX0sMkU6NihhKXt3KDFQLCI0ayIsNigpe2UuMU0oYSl9KX19O2UuMkU9ZS4yRTtlLjFNPWUuMU07ZS4yTD02KGEsYixjKXtKLjFUPWE7Si5QPWI7Si5MPWEuTDtKLjIzPWM7Si4xVj1OfTtlLjJMLlouMXE9Nigpe0ggSi4xVH07ZS40bD02KGEpezYgYihqLGwpe08oSyBtPTA7bTxqLkw7bSsrKWpbbV0uUCs9bH1LIGM9QShhKSxkLGg9MWYgZS4xVS41WSxnPUosaT0iMkYgMUggMlEiLjFlKCIgIik7SShjIT1OKXtkPTFmIGM7TyhLIGs9MDtrPGkuTDtrKyspKDYoKXtLIGo9aVtrXTtnW2pdPTYoKXtIIGhbal0uMXAoaCwxNCl9fSkoKTtkLjI4PT1OPzFQLjFYKGUuMTMuMXguMVgrKGUuMTMuMXguNGcrYSkpOmguMkouVSh7MUk6ZC4yOC4xNywyRDo2KGope08oSyBsPWouMTcsbT1bXSxzPWQuMkosbz1qLlArai4xOC5MLEY9ZC4yOCxxLEc9MDtHPHMuTDtHKyspe3E9eShsLHNbR10pO2IocSxvKTttPW0uMU8ocSl9SShGLjE4IT1OJiZqLjE4IT1OKXtxPXkoai4xOCxGLjE4KTtiKHEsai5QKTttPW0uMU8ocSl9SShGLjFiIT1OJiZqLjFiIT1OKXtxPXkoai4xYixGLjFiKTtiKHEsai5QK2pbMF0uNVEoai4xYikpO209bS4xTyhxKX1PKGo9MDtqPG0uTDtqKyspbVtqXS4xVj1jLjFWO0ggbX19KX19O2UuNGo9Nigpe307ZS40ai5aPXtWOjYoYSxiKXtLIGM9Si4xblthXTtjPWM9PU4/YjpjO0sgZD17IlIiOlIsIjExIjoxMX1bY107SCBkPT1OP2M6ZH0sM1k6NihhKXtIIDFFLjRpKGEpfSw0Yzo2KGEsYil7SyBjPVtdO0koYSE9TilPKEsgZD0wO2Q8YS5MO2QrKylJKDFqIGFbZF09PSIybSIpYz1jLjFPKHkoYixhW2RdKSk7SCBKLjRlKGMuNmIoRCkpfSw0ZTo2KGEpe08oSyBiPTA7YjxhLkw7YisrKUkoYVtiXSE9PU4pTyhLIGM9YVtiXSxkPWMuUCtjLkwsaD1iKzE7aDxhLkwmJmFbYl0hPT1OO2grKyl7SyBnPWFbaF07SShnIT09TilJKGcuUD5kKTFOO1kgSShnLlA9PWMuUCYmZy5MPmMuTClhW2JdPU47WSBJKGcuUD49Yy5QJiZnLlA8ZClhW2hdPU59SCBhfSw0ZDo2KGEpe0sgYj1bXSxjPTJ1KEouVigiMmktMXMiKSk7dihhLDYoZCxoKXtiLlUoaCtjKX0pO0ggYn0sM1U6NihhKXtLIGI9Si5WKCIxTSIsW10pO0koMWogYiE9IjJtIiYmYi5VPT1OKWI9W2JdO2E6e2E9YS4xcSgpO0sgYz0zVyAwO08oYz1jPTFRLjZjKGN8fDAsMCk7YzxiLkw7YysrKUkoYltjXT09YSl7Yj1jOzFOIGF9Yj0tMX1IIGIhPS0xfSwycjo2KGEsYixjKXthPVsiMXMiLCI2aSIrYiwiUCIrYSwiNnIiKyhiJTI9PTA/MToyKS4xcSgpXTtKLjNVKGIpJiZhLlUoIjY3Iik7Yj09MCYmYS5VKCIxTiIpO0hcJzxUIDFnPSJcJythLjFLKCIgIikrXCciPlwnK2MrIjwvVD4ifSwzUTo2KGEsYil7SyBjPSIiLGQ9YS4xZSgiXFxuIikuTCxoPTJ1KEouVigiMmktMXMiKSksZz1KLlYoIjJ6LTFzLTJ0Iik7SShnPT1SKWc9KGgrZC0xKS4xcSgpLkw7WSBJKDNSKGcpPT1SKWc9MDtPKEsgaT0wO2k8ZDtpKyspe0sgaz1iP2JbaV06aCtpLGo7SShrPT0wKWo9ZS4xMy4xVztZe2o9ZztPKEsgbD1rLjFxKCk7bC5MPGo7KWw9IjAiK2w7aj1sfWE9ajtjKz1KLjJyKGksayxhKX1IIGN9LDQ5OjYoYSxiKXthPXgoYSk7SyBjPWEuMWUoIlxcbiIpO0ouVigiMnotMXMtMnQiKTtLIGQ9MnUoSi5WKCIyaS0xcyIpKTthPSIiO08oSyBoPUouVigiMUQiKSxnPTA7ZzxjLkw7ZysrKXtLIGk9Y1tnXSxrPS9eKCYyczt8XFxzKSsvLlgoaSksaj1OLGw9Yj9iW2ddOmQrZztJKGshPU4pe2o9a1swXS4xcSgpO2k9aS4xbyhqLkwpO2o9ai5RKCIgIixlLjEzLjFXKX1pPXgoaSk7SShpLkw9PTApaT1lLjEzLjFXO2ErPUouMnIoZyxsLChqIT1OP1wnPDE3IDFnPSJcJytoK1wnIDVOIj5cJytqKyI8LzE3PiI6IiIpK2kpfUggYX0sNGY6NihhKXtIIGE/Ijw0YT4iK2ErIjwvNGE+IjoiIn0sNGI6NihhLGIpezYgYyhsKXtIKGw9bD9sLjFWfHxnOmcpP2wrIiAiOiIifU8oSyBkPTAsaD0iIixnPUouVigiMUQiLCIiKSxpPTA7aTxiLkw7aSsrKXtLIGs9YltpXSxqO0koIShrPT09Tnx8ay5MPT09MCkpe2o9YyhrKTtoKz11KGEuMW8oZCxrLlAtZCksaisiNDgiKSt1KGsuMVQsaitrLjIzKTtkPWsuUCtrLkwrKGsuNzV8fDApfX1oKz11KGEuMW8oZCksYygpKyI0OCIpO0ggaH0sMUg6NihhKXtLIGI9IiIsYz1bIjIwIl0sZDtJKEouVigiMmsiKT09UilKLjFuLjE2PUouMW4uMXU9MTE7MWw9IjIwIjtKLlYoIjJsIik9PVImJmMuVSgiNDciKTtJKCgxdT1KLlYoIjF1IikpPT0xMSljLlUoIjZTIik7Yy5VKEouVigiMWctMjciKSk7Yy5VKEouVigiMUQiKSk7YT1hLlEoL15bIF0qW1xcbl0rfFtcXG5dKlsgXSokL2csIiIpLlEoL1xcci9nLCIgIik7Yj1KLlYoIjQzLTIyIik7SShKLlYoIjQyLTQ1Iik9PVIpYT1uKGEsYik7WXtPKEsgaD0iIixnPTA7ZzxiO2crKyloKz0iICI7YT1hLlEoL1xcdC9nLGgpfWE9YTthOntiPWE9YTtoPS88MlJcXHMqXFwvPz58JjF5OzJSXFxzKlxcLz8mMUc7LzJUO0koZS4xMy40Nj09UiliPWIuUShoLCJcXG4iKTtJKGUuMTMuNDQ9PVIpYj1iLlEoaCwiIik7Yj1iLjFlKCJcXG4iKTtoPS9eXFxzKi87Zz00UTtPKEsgaT0wO2k8Yi5MJiZnPjA7aSsrKXtLIGs9YltpXTtJKHgoaykuTCE9MCl7az1oLlgoayk7SShrPT1OKXthPWE7MU4gYX1nPTFRLjRxKGtbMF0uTCxnKX19SShnPjApTyhpPTA7aTxiLkw7aSsrKWJbaV09YltpXS4xbyhnKTthPWIuMUsoIlxcbiIpfUkoMXUpZD1KLjRkKGEpO2I9Si40YyhKLjJKLGEpO2I9Si40YihhLGIpO2I9Si40OShiLGQpO0koSi5WKCI0MS00MCIpKWI9RShiKTsxaiAySCE9IjFkIiYmMkguM1MmJjJILjNTLjFDKC81cy8pJiZjLlUoIjV0Iik7SCBiPVwnPFQgMWM9IlwnK3QoSi4xYykrXCciIDFnPSJcJytjLjFLKCIgIikrXCciPlwnKyhKLlYoIjE2Iik/ZS4xNi4xSChKKToiIikrXCc8M1ogNXo9IjAiIDVIPSIwIiA1Sj0iMCI+XCcrSi40ZihKLlYoIjF0IikpKyI8M1Q+PDNQPiIrKDF1P1wnPDJkIDFnPSIxdSI+XCcrSi4zUShhKSsiPC8yZD4iOiIiKStcJzwyZCAxZz0iMTciPjxUIDFnPSIzTyI+XCcrYisiPC9UPjwvMmQ+PC8zUD48LzNUPjwvM1o+PC9UPiJ9LDJGOjYoYSl7SShhPT09TilhPSIiO0ouMTc9YTtLIGI9Si4zWSgiVCIpO2IuM1g9Si4xSChhKTtKLlYoIjE2IikmJncocChiLCIuMTYiKSwiNWMiLGUuMTYuMmIpO0ouVigiM1YtMTciKSYmdyhwKGIsIi4xNyIpLCI1NiIsZik7SCBifSwyUTo2KGEpe0ouMWM9IiIrMVEuNWQoMVEuNW4oKSo1aykuMXEoKTtlLjFZLjJBW3QoSi4xYyldPUo7Si4xbj1DKGUuMnYsYXx8e30pO0koSi5WKCIyayIpPT1SKUouMW4uMTY9Si4xbi4xdT0xMX0sNWo6NihhKXthPWEuUSgvXlxccyt8XFxzKyQvZywiIikuUSgvXFxzKy9nLCJ8Iik7SCJcXFxcYig/OiIrYSsiKVxcXFxiIn0sNWY6NihhKXtKLjI4PXsxODp7MUk6YS4xOCwyMzoiMWsifSwxYjp7MUk6YS4xYiwyMzoiMWsifSwxNzoxZiBNKCIoPzwxOD4iK2EuMTguMW0rIikoPzwxNz4uKj8pKD88MWI+IithLjFiLjFtKyIpIiwiNW8iKX19fTtIIGV9KCk7MWogMmUhPSIxZCImJigyZS4xdj0xdik7Jyw2Miw0NDEsInx8fHx8fGZ1bmN0aW9ufHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHJldHVybnxpZnx0aGlzfHZhcnxsZW5ndGh8WFJlZ0V4cHxudWxsfGZvcnxpbmRleHxyZXBsYWNlfHRydWV8fGRpdnxwdXNofGdldFBhcmFtfGNhbGx8ZXhlY3xlbHNlfHByb3RvdHlwZXx8ZmFsc2V8bGFzdEluZGV4fGNvbmZpZ3xhcmd1bWVudHN8UmVnRXhwfHRvb2xiYXJ8Y29kZXxsZWZ0fGNhcHR1cmVOYW1lc3xzbGljZXxyaWdodHxpZHx1bmRlZmluZWR8c3BsaXR8bmV3fGNsYXNzfGFkZFRva2VufGluZGV4T2Z8dHlwZW9mfHNjcmlwdHxjbGFzc05hbWV8c291cmNlfHBhcmFtc3xzdWJzdHJ8YXBwbHl8dG9TdHJpbmd8U3RyaW5nfGxpbmV8dGl0bGV8Z3V0dGVyfFN5bnRheEhpZ2hsaWdodGVyfF94cmVnZXhwfHN0cmluZ3N8bHR8aHRtbHx0ZXN0fE9VVFNJREVfQ0xBU1N8bWF0Y2h8YnJ1c2h8ZG9jdW1lbnR8dGFyZ2V0fGd0fGdldEh0bWx8cmVnZXh8Z2xvYmFsfGpvaW58c3R5bGV8aGlnaGxpZ2h0fGJyZWFrfGNvbmNhdHx3aW5kb3d8TWF0aHxpc1JlZ0V4cHx0aHJvd3x2YWx1ZXxicnVzaGVzfGJydXNoTmFtZXxzcGFjZXxhbGVydHx2YXJzfGh0dHB8c3ludGF4aGlnaGxpZ2h0ZXJ8ZXhwYW5kU291cmNlfHNpemV8Y3NzfGNhc2V8Zm9udHxGYXxuYW1lfGh0bWxTY3JpcHR8ZEF8Y2FufGhhbmRsZXJ8Z218dGR8ZXhwb3J0c3xjb2xvcnxpbnxocmVmfGZpcnN0fGRpc2NvdmVyZWRCcnVzaGVzfGxpZ2h0fGNvbGxhcHNlfG9iamVjdHxjYWNoZXxnZXRCdXR0b25IdG1sfHRyaWdnZXJ8cGF0dGVybnxnZXRMaW5lSHRtbHxuYnNwfG51bWJlcnN8cGFyc2VJbnR8ZGVmYXVsdHN8Y29tfGl0ZW1zfHd3d3xwYWR8aGlnaGxpZ2h0ZXJzfGV4ZWN1dGV8Zm9jdXN8ZnVuY3xhbGx8Z2V0RGl2fHBhcmVudE5vZGV8bmF2aWdhdG9yfElOU0lERV9DTEFTU3xyZWdleExpc3R8aGFzRmxhZ3xNYXRjaHx1c2VTY3JpcHRUYWdzfGhhc05hbWVkQ2FwdHVyZXx0ZXh0fGhlbHB8aW5pdHxicnxpbnB1dHxnaXxFcnJvcnx2YWx1ZXN8c3BhbnxsaXN0fDI1MHxoZWlnaHR8d2lkdGh8c2NyZWVufHRvcHw1MDB8dGFnTmFtZXxmaW5kRWxlbWVudHN8Z2V0RWxlbWVudHNCeVRhZ05hbWV8YWJvdXREaWFsb2d8X2JsYW5rfGFwcGVuZENoaWxkfGNoYXJBdHxBcnJheXxjb3B5QXNHbG9iYWx8c2V0RmxhZ3xoaWdobGlnaHRlcl98c3RyaW5nfGF0dGFjaEV2ZW50fG5vZGVOYW1lfGZsb29yfGJhY2tyZWZ8b3V0cHV0fHRoZXxUeXBlRXJyb3J8c3RpY2t5fFphfGl0ZXJhdGV8ZnJlZXplVG9rZW5zfHNjb3BlfHR5cGV8dGV4dGFyZWF8YWxleGdvcmJhdGNoZXZ8dmVyc2lvbnxtYXJnaW58MjAxMHwwMDU4OTZ8Z3N8cmVnZXhMaWJ8Ym9keXxjZW50ZXJ8YWxpZ258bm9CcnVzaHxyZXF1aXJlfGNoaWxkTm9kZXN8RFREfHhodG1sMXxoZWFkfG9yZ3x3M3x1cmx8cHJldmVudERlZmF1bHR8Y29udGFpbmVyfHRyfGdldExpbmVOdW1iZXJzSHRtbHxpc05hTnx1c2VyQWdlbnR8dGJvZHl8aXNMaW5lSGlnaGxpZ2h0ZWR8cXVpY2t8dm9pZHxpbm5lckhUTUx8Y3JlYXRlfHRhYmxlfGxpbmtzfGF1dG98c21hcnR8dGFifHN0cmlwQnJzfHRhYnN8YmxvZ2dlck1vZGV8Y29sbGFwc2VkfHBsYWlufGdldENvZGVMaW5lc0h0bWx8Y2FwdGlvbnxnZXRNYXRjaGVzSHRtbHxmaW5kTWF0Y2hlc3xmaWd1cmVPdXRMaW5lTnVtYmVyc3xyZW1vdmVOZXN0ZWRNYXRjaGVzfGdldFRpdGxlSHRtbHxicnVzaE5vdEh0bWxTY3JpcHR8c3Vic3RyaW5nfGNyZWF0ZUVsZW1lbnR8SGlnaGxpZ2h0ZXJ8bG9hZHxIdG1sU2NyaXB0fEJydXNofHByZXxleHBhbmR8bXVsdGlsaW5lfG1pbnxDYW58aWdub3JlQ2FzZXxmaW5kfGJsdXJ8ZXh0ZW5kZWR8dG9Mb3dlckNhc2V8YWxpYXNlc3xhZGRFdmVudExpc3RlbmVyfGlubmVyVGV4dHx0ZXh0Q29udGVudHx3YXNufHNlbGVjdHxjcmVhdGVUZXh0Tm9kZXxyZW1vdmVDaGlsZHxvcHRpb258c2FtZXxmcmFtZXx4bWxuc3xkdGR8dHdpY2V8MTk5OXxlcXVpdnxtZXRhfGh0bWxzY3JpcHR8dHJhbnNpdGlvbmFsfDFFM3xleHBlY3RlZHxQVUJMSUN8RE9DVFlQRXxvbnxXM0N8WEhUTUx8VFJ8RU58VHJhbnNpdGlvbmFsfHxjb25maWd1cmVkfHNyY0VsZW1lbnR8T2JqZWN0fGFmdGVyfHJ1bnxkYmxjbGlja3xtYXRjaENoYWlufHZhbHVlT2Z8Y29uc3RydWN0b3J8ZGVmYXVsdHxzd2l0Y2h8Y2xpY2t8cm91bmR8ZXhlY0F0fGZvckh0bWxTY3JpcHR8dG9rZW58Z2lteXxmdW5jdGlvbnN8Z2V0S2V5d29yZHN8MUU2fGVzY2FwZXx3aXRoaW58cmFuZG9tfHNnaXxhbm90aGVyfGZpbmFsbHl8c3VwcGx5fE1TSUV8aWV8dG9VcHBlckNhc2V8Y2F0Y2h8cmV0dXJuVmFsdWV8ZGVmaW5pdGlvbnxldmVudHxib3JkZXJ8aW1zeHxjb25zdHJ1Y3Rpbmd8b25lfEluZmluaXR5fGZyb218d2hlbnxDb250ZW50fGNlbGxwYWRkaW5nfGZsYWdzfGNlbGxzcGFjaW5nfHRyeXx4aHRtbHxUeXBlfHNwYWNlc3wyOTMwNDAyfGhvc3RlZF9idXR0b25faWR8bGFzdEluZGV4T2Z8ZG9uYXRlfGFjdGl2ZXxkZXZlbG9wbWVudHxrZWVwfHRvfHhjbGlja3xfc3xYbWx8cGxlYXNlfGxpa2V8eW91fHBheXBhbHxjZ2l8Y21kfHdlYnNjcnxiaW58aGlnaGxpZ2h0ZWR8c2Nyb2xsYmFyc3xhc3BTY3JpcHRUYWdzfHBocFNjcmlwdFRhZ3N8c29ydHxtYXh8c2NyaXB0U2NyaXB0VGFnc3x0b29sYmFyX2l0ZW18X3xjb21tYW5kfGNvbW1hbmRffG51bWJlcnxnZXRFbGVtZW50QnlJZHxkb3VibGVRdW90ZWRTdHJpbmd8c2luZ2xlTGluZVBlcmxDb21tZW50c3xzaW5nbGVMaW5lQ0NvbW1lbnRzfG11bHRpTGluZUNDb21tZW50c3xzaW5nbGVRdW90ZWRTdHJpbmd8bXVsdGlMaW5lRG91YmxlUXVvdGVkU3RyaW5nfHhtbENvbW1lbnRzfGFsdHxtdWx0aUxpbmVTaW5nbGVRdW90ZWRTdHJpbmd8SWZ8aHR0cHN8MWVtfDAwMHxmZmZ8YmFja2dyb3VuZHw1ZW18eHh8Ym90dG9tfDc1ZW18R29yYmF0Y2hldnxsYXJnZXxzZXJpZnxDREFUQXxjb250aW51ZXx1dGZ8Y2hhcnNldHxjb250ZW50fEFib3V0fGZhbWlseXxzYW5zfEhlbHZldGljYXxBcmlhbHxHZW5ldmF8M2VtfG5vZ3V0dGVyfENvcHlyaWdodHxzeW50YXh8Y2xvc2V8d3JpdGV8MjAwNHxBbGV4fG9wZW58SmF2YVNjcmlwdHxoaWdobGlnaHRlcnxKdWx5fDAyfHJlcGxhY2VDaGlsZHxvZmZzZXR8ODMiLnNwbGl0KCJ8IiksMCx7fSkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/styles/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/styles/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/styles/shCore.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFN5bnRheEhpZ2hsaWdodGVyCiAqIGh0dHA6Ly9hbGV4Z29yYmF0Y2hldi5jb20vU3ludGF4SGlnaGxpZ2h0ZXIKICoKICogU3ludGF4SGlnaGxpZ2h0ZXIgaXMgZG9uYXRpb253YXJlLiBJZiB5b3UgYXJlIHVzaW5nIGl0LCBwbGVhc2UgZG9uYXRlLgogKiBodHRwOi8vYWxleGdvcmJhdGNoZXYuY29tL1N5bnRheEhpZ2hsaWdodGVyL2RvbmF0ZS5odG1sCiAqCiAqIEB2ZXJzaW9uCiAqIDMuMC44MyAoSnVseSAwMiAyMDEwKQogKiAKICogQGNvcHlyaWdodAogKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMCBBbGV4IEdvcmJhdGNoZXYuCiAqCiAqIEBsaWNlbnNlCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgogKi8KLnN5bnRheGhpZ2hsaWdodGVyIGEsCi5zeW50YXhoaWdobGlnaHRlciBkaXYsCi5zeW50YXhoaWdobGlnaHRlciBjb2RlLAouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUsCi5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZCwKLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRyLAouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGJvZHksCi5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0aGVhZCwKLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIGNhcHRpb24sCi5zeW50YXhoaWdobGlnaHRlciB0ZXh0YXJlYSB7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAwIDAgMCAwICFpbXBvcnRhbnQ7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwIDAgMCAwICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50OwogIGJvcmRlcjogMCAhaW1wb3J0YW50OwogIGJvdHRvbTogYXV0byAhaW1wb3J0YW50OwogIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7CiAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgbGVmdDogYXV0byAhaW1wb3J0YW50OwogIGxpbmUtaGVpZ2h0OiAxLjFlbSAhaW1wb3J0YW50OwogIG1hcmdpbjogMCAhaW1wb3J0YW50OwogIG91dGxpbmU6IDAgIWltcG9ydGFudDsKICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OwogIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7CiAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgdG9wOiBhdXRvICFpbXBvcnRhbnQ7CiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICBib3gtc2l6aW5nOiBjb250ZW50LWJveCAhaW1wb3J0YW50OwogIGZvbnQtZmFtaWx5OiAiQ29uc29sYXMiLCAiQml0c3RyZWFtIFZlcmEgU2FucyBNb25vIiwgIkNvdXJpZXIgTmV3IiwgQ291cmllciwgbW9ub3NwYWNlICFpbXBvcnRhbnQ7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50OwogIGZvbnQtc3R5bGU6IG5vcm1hbCAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZTogMWVtICFpbXBvcnRhbnQ7CiAgbWluLWhlaWdodDogaW5oZXJpdCAhaW1wb3J0YW50OwogIG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQoKLnN5bnRheGhpZ2hsaWdodGVyIHsKICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogIG1hcmdpbjogMWVtIDAgMWVtIDAgIWltcG9ydGFudDsKICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKICBvdmVyZmxvdzogYXV0byAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZTogMWVtICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnNvdXJjZSB7CiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAuYm9sZCB7CiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLml0YWxpYyB7CiAgZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5saW5lIHsKICB3aGl0ZS1zcGFjZTogcHJlICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHsKICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciB0YWJsZSBjYXB0aW9uIHsKICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgcGFkZGluZzogLjVlbSAwIDAuNWVtIDFlbSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZC5jb2RlIHsKICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZC5jb2RlIC5jb250YWluZXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZC5jb2RlIC5jb250YWluZXIgdGV4dGFyZWEgewogIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsKICBsZWZ0OiAwICFpbXBvcnRhbnQ7CiAgdG9wOiAwICFpbXBvcnRhbnQ7CiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kOiB3aGl0ZSAhaW1wb3J0YW50OwogIHBhZGRpbmctbGVmdDogMWVtICFpbXBvcnRhbnQ7CiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OwogIHdoaXRlLXNwYWNlOiBwcmUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGQuZ3V0dGVyIC5saW5lIHsKICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OwogIHBhZGRpbmc6IDAgMC41ZW0gMCAxZW0gIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGQuY29kZSAubGluZSB7CiAgcGFkZGluZzogMCAxZW0gIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIubm9ndXR0ZXIgdGQuY29kZSAuY29udGFpbmVyIHRleHRhcmVhLCAuc3ludGF4aGlnaGxpZ2h0ZXIubm9ndXR0ZXIgdGQuY29kZSAubGluZSB7CiAgcGFkZGluZy1sZWZ0OiAwZW0gIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuc2hvdyB7CiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIHRhYmxlIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciB7CiAgcGFkZGluZzogMC4xZW0gMC44ZW0gMGVtIDAuOGVtICFpbXBvcnRhbnQ7CiAgZm9udC1zaXplOiAxZW0gIWltcG9ydGFudDsKICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7CiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIC50b29sYmFyIHNwYW4gewogIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIG1hcmdpbi1yaWdodDogMWVtICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciBzcGFuIGEgewogIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciBzcGFuIGEuZXhwYW5kU291cmNlIHsKICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OwogIHJpZ2h0OiAxcHggIWltcG9ydGFudDsKICB0b3A6IDFweCAhaW1wb3J0YW50OwogIHdpZHRoOiAxMXB4ICFpbXBvcnRhbnQ7CiAgaGVpZ2h0OiAxMXB4ICFpbXBvcnRhbnQ7CiAgZm9udC1zaXplOiAxMHB4ICFpbXBvcnRhbnQ7CiAgei1pbmRleDogMTAgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgc3Bhbi50aXRsZSB7CiAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC50b29sYmFyIGEgewogIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7CiAgcGFkZGluZy10b3A6IDFweCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAudG9vbGJhciBhLmV4cGFuZFNvdXJjZSB7CiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5pZSB7CiAgZm9udC1zaXplOiAuOWVtICFpbXBvcnRhbnQ7CiAgcGFkZGluZzogMXB4IDAgMXB4IDAgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuaWUgLnRvb2xiYXIgewogIGxpbmUtaGVpZ2h0OiA4cHggIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuaWUgLnRvb2xiYXIgYSB7CiAgcGFkZGluZy10b3A6IDBweCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAubGluZS5hbHQxIC5jb250ZW50LAouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuYWx0MiAuY29udGVudCwKLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5saW5lLmhpZ2hsaWdodGVkIC5udW1iZXIsCi5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAubGluZS5oaWdobGlnaHRlZC5hbHQxIC5jb250ZW50LAouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MiAuY29udGVudCB7CiAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAubGluZSAubnVtYmVyIHsKICBjb2xvcjogI2JiYmJiYiAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAubGluZSAuY29udGVudCB7CiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC50b29sYmFyIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIGEgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAucGxhaW4sIC5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAucGxhaW4gYSB7CiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb21tZW50cywgLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb21tZW50cyBhIHsKICBjb2xvcjogIzAwODIwMCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuc3RyaW5nLCAuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLnN0cmluZyBhIHsKICBjb2xvcjogYmx1ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAua2V5d29yZCB7CiAgY29sb3I6ICMwMDY2OTkgIWltcG9ydGFudDsKICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAucHJlcHJvY2Vzc29yIHsKICBjb2xvcjogZ3JheSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAudmFyaWFibGUgewogIGNvbG9yOiAjYWE3NzAwICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC52YWx1ZSB7CiAgY29sb3I6ICMwMDk5MDAgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmZ1bmN0aW9ucyB7CiAgY29sb3I6ICNmZjE0OTMgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmNvbnN0YW50cyB7CiAgY29sb3I6ICMwMDY2Y2MgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLnNjcmlwdCB7CiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmNvbG9yMSwgLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjEgYSB7CiAgY29sb3I6IGdyYXkgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmNvbG9yMiwgLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjIgYSB7CiAgY29sb3I6ICNmZjE0OTMgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmNvbG9yMywgLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjMgYSB7CiAgY29sb3I6IHJlZCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuYnJlYWssIC5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuYnJlYWsgYSB7CiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/styles/shCore.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnN5bnRheGhpZ2hsaWdodGVyIGEsLnN5bnRheGhpZ2hsaWdodGVyIGRpdiwuc3ludGF4aGlnaGxpZ2h0ZXIgY29kZSwuc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUsLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRkLC5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ciwuc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGJvZHksLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRoZWFkLC5zeW50YXhoaWdobGlnaHRlciB0YWJsZSBjYXB0aW9uLC5zeW50YXhoaWdobGlnaHRlciB0ZXh0YXJlYXstbW96LWJvcmRlci1yYWRpdXM6MCAwIDAgMCFpbXBvcnRhbnQ7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjAgMCAwIDAhaW1wb3J0YW50O2JhY2tncm91bmQ6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O2JvdHRvbTphdXRvIWltcG9ydGFudDtmbG9hdDpub25lIWltcG9ydGFudDtoZWlnaHQ6YXV0byFpbXBvcnRhbnQ7bGVmdDphdXRvIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjFlbSFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O291dGxpbmU6MCFpbXBvcnRhbnQ7b3ZlcmZsb3c6dmlzaWJsZSFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDtwb3NpdGlvbjpzdGF0aWMhaW1wb3J0YW50O3JpZ2h0OmF1dG8haW1wb3J0YW50O3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnQ7dG9wOmF1dG8haW1wb3J0YW50O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lIWltcG9ydGFudDt3aWR0aDphdXRvIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94IWltcG9ydGFudDtmb250LWZhbWlseToiQ29uc29sYXMiLCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm8iLCJDb3VyaWVyIE5ldyIsQ291cmllcixtb25vc3BhY2UhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0Om5vcm1hbCFpbXBvcnRhbnQ7Zm9udC1zdHlsZTpub3JtYWwhaW1wb3J0YW50O2ZvbnQtc2l6ZToxZW0haW1wb3J0YW50O21pbi1oZWlnaHQ6aW5oZXJpdCFpbXBvcnRhbnQ7bWluLWhlaWdodDphdXRvIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVye3dpZHRoOjEwMCUhaW1wb3J0YW50O21hcmdpbjoxZW0gMCAxZW0gMCFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O292ZXJmbG93OmF1dG8haW1wb3J0YW50O2ZvbnQtc2l6ZToxZW0haW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIuc291cmNle292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAuYm9sZHtmb250LXdlaWdodDpib2xkIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5pdGFsaWN7Zm9udC1zdHlsZTppdGFsaWMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmV7d2hpdGUtc3BhY2U6cHJlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIHRhYmxle3dpZHRoOjEwMCUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgY2FwdGlvbnt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50O3BhZGRpbmc6LjVlbSAwIC41ZW0gMWVtIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRkLmNvZGV7d2lkdGg6MTAwJSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZC5jb2RlIC5jb250YWluZXJ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGQuY29kZSAuY29udGFpbmVyIHRleHRhcmVhe2JveC1zaXppbmc6Ym9yZGVyLWJveCFpbXBvcnRhbnQ7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50O2xlZnQ6MCFpbXBvcnRhbnQ7dG9wOjAhaW1wb3J0YW50O3dpZHRoOjEwMCUhaW1wb3J0YW50O2hlaWdodDoxMDAlIWltcG9ydGFudDtib3JkZXI6bm9uZSFpbXBvcnRhbnQ7YmFja2dyb3VuZDp3aGl0ZSFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjFlbSFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDt3aGl0ZS1zcGFjZTpwcmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGQuZ3V0dGVyIC5saW5le3RleHQtYWxpZ246cmlnaHQhaW1wb3J0YW50O3BhZGRpbmc6MCAuNWVtIDAgMWVtIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRkLmNvZGUgLmxpbmV7cGFkZGluZzowIDFlbSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5ub2d1dHRlciB0ZC5jb2RlIC5jb250YWluZXIgdGV4dGFyZWEsLnN5bnRheGhpZ2hsaWdodGVyLm5vZ3V0dGVyIHRkLmNvZGUgLmxpbmV7cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIuc2hvd3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCB0YWJsZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIC50b29sYmFye3BhZGRpbmc6LjFlbSAuOGVtIDAgLjhlbSFpbXBvcnRhbnQ7Zm9udC1zaXplOjFlbSFpbXBvcnRhbnQ7cG9zaXRpb246c3RhdGljIWltcG9ydGFudDt3aWR0aDphdXRvIWltcG9ydGFudDtoZWlnaHQ6YXV0byFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgc3BhbntkaXNwbGF5OmlubGluZSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OjFlbSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgc3BhbiBhe3BhZGRpbmc6MCFpbXBvcnRhbnQ7ZGlzcGxheTpub25lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciBzcGFuIGEuZXhwYW5kU291cmNle2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC50b29sYmFye3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDtyaWdodDoxcHghaW1wb3J0YW50O3RvcDoxcHghaW1wb3J0YW50O3dpZHRoOjExcHghaW1wb3J0YW50O2hlaWdodDoxMXB4IWltcG9ydGFudDtmb250LXNpemU6MTBweCFpbXBvcnRhbnQ7ei1pbmRleDoxMCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAudG9vbGJhciBzcGFuLnRpdGxle2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC50b29sYmFyIGF7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7dGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDtwYWRkaW5nLXRvcDoxcHghaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgYS5leHBhbmRTb3VyY2V7ZGlzcGxheTpub25lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmlle2ZvbnQtc2l6ZTouOWVtIWltcG9ydGFudDtwYWRkaW5nOjFweCAwIDFweCAwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmllIC50b29sYmFye2xpbmUtaGVpZ2h0OjhweCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5pZSAudG9vbGJhciBhe3BhZGRpbmctdG9wOjAhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuYWx0MSAuY29udGVudCwuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuYWx0MiAuY29udGVudCwuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuaGlnaGxpZ2h0ZWQgLm51bWJlciwuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MSAuY29udGVudCwuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MiAuY29udGVudHtiYWNrZ3JvdW5kOm5vbmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUgLm51bWJlcntjb2xvcjojYmJiIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5saW5lIC5jb250ZW50e2NvbG9yOmJsYWNrIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC50b29sYmFye2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyBhe3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5wbGFpbiwuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLnBsYWluIGF7Y29sb3I6YmxhY2shaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmNvbW1lbnRzLC5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuY29tbWVudHMgYXtjb2xvcjojMDA4MjAwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5zdHJpbmcsLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5zdHJpbmcgYXtjb2xvcjpibHVlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5rZXl3b3Jke2NvbG9yOiMwNjkhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OmJvbGQhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLnByZXByb2Nlc3Nvcntjb2xvcjpncmF5IWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC52YXJpYWJsZXtjb2xvcjojYTcwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC52YWx1ZXtjb2xvcjojMDkwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5mdW5jdGlvbnN7Y29sb3I6I2ZmMTQ5MyFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuY29uc3RhbnRze2NvbG9yOiMwNmMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLnNjcmlwdHtmb250LXdlaWdodDpib2xkIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjEsLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjEgYXtjb2xvcjpncmF5IWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjIsLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjIgYXtjb2xvcjojZmYxNDkzIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjMsLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjMgYXtjb2xvcjpyZWQhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmJyZWFrLC5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuYnJlYWsgYXtjb2xvcjpibGFjayFpbXBvcnRhbnQ7fQ==]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/styles/shCoreDefault.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFN5bnRheEhpZ2hsaWdodGVyCiAqIGh0dHA6Ly9hbGV4Z29yYmF0Y2hldi5jb20vU3ludGF4SGlnaGxpZ2h0ZXIKICoKICogU3ludGF4SGlnaGxpZ2h0ZXIgaXMgZG9uYXRpb253YXJlLiBJZiB5b3UgYXJlIHVzaW5nIGl0LCBwbGVhc2UgZG9uYXRlLgogKiBodHRwOi8vYWxleGdvcmJhdGNoZXYuY29tL1N5bnRheEhpZ2hsaWdodGVyL2RvbmF0ZS5odG1sCiAqCiAqIEB2ZXJzaW9uCiAqIDMuMC44MyAoSnVseSAwMiAyMDEwKQogKiAKICogQGNvcHlyaWdodAogKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMCBBbGV4IEdvcmJhdGNoZXYuCiAqCiAqIEBsaWNlbnNlCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgogKi8KLnN5bnRheGhpZ2hsaWdodGVyIGEsCi5zeW50YXhoaWdobGlnaHRlciBkaXYsCi5zeW50YXhoaWdobGlnaHRlciBjb2RlLAouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUsCi5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZCwKLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRyLAouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGJvZHksCi5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0aGVhZCwKLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIGNhcHRpb24sCi5zeW50YXhoaWdobGlnaHRlciB0ZXh0YXJlYSB7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAwIDAgMCAwICFpbXBvcnRhbnQ7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwIDAgMCAwICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50OwogIGJvcmRlcjogMCAhaW1wb3J0YW50OwogIGJvdHRvbTogYXV0byAhaW1wb3J0YW50OwogIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7CiAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgbGVmdDogYXV0byAhaW1wb3J0YW50OwogIGxpbmUtaGVpZ2h0OiAxLjFlbSAhaW1wb3J0YW50OwogIG1hcmdpbjogMCAhaW1wb3J0YW50OwogIG91dGxpbmU6IDAgIWltcG9ydGFudDsKICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OwogIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7CiAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgdG9wOiBhdXRvICFpbXBvcnRhbnQ7CiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICBib3gtc2l6aW5nOiBjb250ZW50LWJveCAhaW1wb3J0YW50OwogIGZvbnQtZmFtaWx5OiAiQ29uc29sYXMiLCAiQml0c3RyZWFtIFZlcmEgU2FucyBNb25vIiwgIkNvdXJpZXIgTmV3IiwgQ291cmllciwgbW9ub3NwYWNlICFpbXBvcnRhbnQ7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50OwogIGZvbnQtc3R5bGU6IG5vcm1hbCAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZTogMWVtICFpbXBvcnRhbnQ7CiAgbWluLWhlaWdodDogaW5oZXJpdCAhaW1wb3J0YW50OwogIG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQoKLnN5bnRheGhpZ2hsaWdodGVyIHsKICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogIG1hcmdpbjogMWVtIDAgMWVtIDAgIWltcG9ydGFudDsKICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKICBvdmVyZmxvdzogYXV0byAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZTogMWVtICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnNvdXJjZSB7CiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAuYm9sZCB7CiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLml0YWxpYyB7CiAgZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5saW5lIHsKICB3aGl0ZS1zcGFjZTogcHJlICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHsKICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciB0YWJsZSBjYXB0aW9uIHsKICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgcGFkZGluZzogLjVlbSAwIDAuNWVtIDFlbSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZC5jb2RlIHsKICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZC5jb2RlIC5jb250YWluZXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZC5jb2RlIC5jb250YWluZXIgdGV4dGFyZWEgewogIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsKICBsZWZ0OiAwICFpbXBvcnRhbnQ7CiAgdG9wOiAwICFpbXBvcnRhbnQ7CiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kOiB3aGl0ZSAhaW1wb3J0YW50OwogIHBhZGRpbmctbGVmdDogMWVtICFpbXBvcnRhbnQ7CiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OwogIHdoaXRlLXNwYWNlOiBwcmUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGQuZ3V0dGVyIC5saW5lIHsKICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OwogIHBhZGRpbmc6IDAgMC41ZW0gMCAxZW0gIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGQuY29kZSAubGluZSB7CiAgcGFkZGluZzogMCAxZW0gIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIubm9ndXR0ZXIgdGQuY29kZSAuY29udGFpbmVyIHRleHRhcmVhLCAuc3ludGF4aGlnaGxpZ2h0ZXIubm9ndXR0ZXIgdGQuY29kZSAubGluZSB7CiAgcGFkZGluZy1sZWZ0OiAwZW0gIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuc2hvdyB7CiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIHRhYmxlIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciB7CiAgcGFkZGluZzogMC4xZW0gMC44ZW0gMGVtIDAuOGVtICFpbXBvcnRhbnQ7CiAgZm9udC1zaXplOiAxZW0gIWltcG9ydGFudDsKICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7CiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIC50b29sYmFyIHNwYW4gewogIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIG1hcmdpbi1yaWdodDogMWVtICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciBzcGFuIGEgewogIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciBzcGFuIGEuZXhwYW5kU291cmNlIHsKICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OwogIHJpZ2h0OiAxcHggIWltcG9ydGFudDsKICB0b3A6IDFweCAhaW1wb3J0YW50OwogIHdpZHRoOiAxMXB4ICFpbXBvcnRhbnQ7CiAgaGVpZ2h0OiAxMXB4ICFpbXBvcnRhbnQ7CiAgZm9udC1zaXplOiAxMHB4ICFpbXBvcnRhbnQ7CiAgei1pbmRleDogMTAgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgc3Bhbi50aXRsZSB7CiAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC50b29sYmFyIGEgewogIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7CiAgcGFkZGluZy10b3A6IDFweCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAudG9vbGJhciBhLmV4cGFuZFNvdXJjZSB7CiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5pZSB7CiAgZm9udC1zaXplOiAuOWVtICFpbXBvcnRhbnQ7CiAgcGFkZGluZzogMXB4IDAgMXB4IDAgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuaWUgLnRvb2xiYXIgewogIGxpbmUtaGVpZ2h0OiA4cHggIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuaWUgLnRvb2xiYXIgYSB7CiAgcGFkZGluZy10b3A6IDBweCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAubGluZS5hbHQxIC5jb250ZW50LAouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuYWx0MiAuY29udGVudCwKLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5saW5lLmhpZ2hsaWdodGVkIC5udW1iZXIsCi5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAubGluZS5oaWdobGlnaHRlZC5hbHQxIC5jb250ZW50LAouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MiAuY29udGVudCB7CiAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAubGluZSAubnVtYmVyIHsKICBjb2xvcjogI2JiYmJiYiAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAubGluZSAuY29udGVudCB7CiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC50b29sYmFyIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIGEgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAucGxhaW4sIC5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAucGxhaW4gYSB7CiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb21tZW50cywgLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb21tZW50cyBhIHsKICBjb2xvcjogIzAwODIwMCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuc3RyaW5nLCAuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLnN0cmluZyBhIHsKICBjb2xvcjogYmx1ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAua2V5d29yZCB7CiAgY29sb3I6ICMwMDY2OTkgIWltcG9ydGFudDsKICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAucHJlcHJvY2Vzc29yIHsKICBjb2xvcjogZ3JheSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAudmFyaWFibGUgewogIGNvbG9yOiAjYWE3NzAwICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC52YWx1ZSB7CiAgY29sb3I6ICMwMDk5MDAgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmZ1bmN0aW9ucyB7CiAgY29sb3I6ICNmZjE0OTMgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmNvbnN0YW50cyB7CiAgY29sb3I6ICMwMDY2Y2MgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLnNjcmlwdCB7CiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmNvbG9yMSwgLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjEgYSB7CiAgY29sb3I6IGdyYXkgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmNvbG9yMiwgLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjIgYSB7CiAgY29sb3I6ICNmZjE0OTMgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmNvbG9yMywgLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjMgYSB7CiAgY29sb3I6IHJlZCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuYnJlYWssIC5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuYnJlYWsgYSB7CiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cn0KCi5zeW50YXhoaWdobGlnaHRlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuYWx0MSB7CiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuYWx0MiB7CiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MSwgLnN5bnRheGhpZ2hsaWdodGVyIC5saW5lLmhpZ2hsaWdodGVkLmFsdDIgewogIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTAgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuaGlnaGxpZ2h0ZWQubnVtYmVyIHsKICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgY2FwdGlvbiB7CiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5ndXR0ZXIgewogIGNvbG9yOiAjYWZhZmFmICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5ndXR0ZXIgLmxpbmUgewogIGJvcmRlci1yaWdodDogM3B4IHNvbGlkICM2Y2UyNmMgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmd1dHRlciAubGluZS5oaWdobGlnaHRlZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzZjZTI2YyAhaW1wb3J0YW50OwogIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAubGluZSAuY29udGVudCB7CiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCB7CiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIC50b29sYmFyIHsKICBjb2xvcjogYmx1ZSAhaW1wb3J0YW50OwogIGJhY2tncm91bmQ6IHdoaXRlICFpbXBvcnRhbnQ7CiAgYm9yZGVyOiAxcHggc29saWQgIzZjZTI2YyAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgYSB7CiAgY29sb3I6IGJsdWUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIC50b29sYmFyIGE6aG92ZXIgewogIGNvbG9yOiByZWQgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgewogIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OwogIGJhY2tncm91bmQ6ICM2Y2UyNmMgIWltcG9ydGFudDsKICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgYSB7CiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC50b29sYmFyIGE6aG92ZXIgewogIGNvbG9yOiBibGFjayAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAucGxhaW4sIC5zeW50YXhoaWdobGlnaHRlciAucGxhaW4gYSB7CiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5jb21tZW50cywgLnN5bnRheGhpZ2hsaWdodGVyIC5jb21tZW50cyBhIHsKICBjb2xvcjogIzAwODIwMCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAuc3RyaW5nLCAuc3ludGF4aGlnaGxpZ2h0ZXIgLnN0cmluZyBhIHsKICBjb2xvcjogYmx1ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAua2V5d29yZCB7CiAgY29sb3I6ICMwMDY2OTkgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnByZXByb2Nlc3NvciB7CiAgY29sb3I6IGdyYXkgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnZhcmlhYmxlIHsKICBjb2xvcjogI2FhNzcwMCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAudmFsdWUgewogIGNvbG9yOiAjMDA5OTAwICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5mdW5jdGlvbnMgewogIGNvbG9yOiAjZmYxNDkzICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5jb25zdGFudHMgewogIGNvbG9yOiAjMDA2NmNjICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5zY3JpcHQgewogIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7CiAgY29sb3I6ICMwMDY2OTkgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBub25lICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjEsIC5zeW50YXhoaWdobGlnaHRlciAuY29sb3IxIGEgewogIGNvbG9yOiBncmF5ICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjIsIC5zeW50YXhoaWdobGlnaHRlciAuY29sb3IyIGEgewogIGNvbG9yOiAjZmYxNDkzICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjMsIC5zeW50YXhoaWdobGlnaHRlciAuY29sb3IzIGEgewogIGNvbG9yOiByZWQgIWltcG9ydGFudDsKfQoKLnN5bnRheGhpZ2hsaWdodGVyIC5rZXl3b3JkIHsKICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/styles/shCoreDefault.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnN5bnRheGhpZ2hsaWdodGVyIGEsLnN5bnRheGhpZ2hsaWdodGVyIGRpdiwuc3ludGF4aGlnaGxpZ2h0ZXIgY29kZSwuc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUsLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRkLC5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ciwuc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGJvZHksLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRoZWFkLC5zeW50YXhoaWdobGlnaHRlciB0YWJsZSBjYXB0aW9uLC5zeW50YXhoaWdobGlnaHRlciB0ZXh0YXJlYXstbW96LWJvcmRlci1yYWRpdXM6MCAwIDAgMCFpbXBvcnRhbnQ7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjAgMCAwIDAhaW1wb3J0YW50O2JhY2tncm91bmQ6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O2JvdHRvbTphdXRvIWltcG9ydGFudDtmbG9hdDpub25lIWltcG9ydGFudDtoZWlnaHQ6YXV0byFpbXBvcnRhbnQ7bGVmdDphdXRvIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjFlbSFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O291dGxpbmU6MCFpbXBvcnRhbnQ7b3ZlcmZsb3c6dmlzaWJsZSFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDtwb3NpdGlvbjpzdGF0aWMhaW1wb3J0YW50O3JpZ2h0OmF1dG8haW1wb3J0YW50O3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnQ7dG9wOmF1dG8haW1wb3J0YW50O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lIWltcG9ydGFudDt3aWR0aDphdXRvIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94IWltcG9ydGFudDtmb250LWZhbWlseToiQ29uc29sYXMiLCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm8iLCJDb3VyaWVyIE5ldyIsQ291cmllcixtb25vc3BhY2UhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0Om5vcm1hbCFpbXBvcnRhbnQ7Zm9udC1zdHlsZTpub3JtYWwhaW1wb3J0YW50O2ZvbnQtc2l6ZToxZW0haW1wb3J0YW50O21pbi1oZWlnaHQ6aW5oZXJpdCFpbXBvcnRhbnQ7bWluLWhlaWdodDphdXRvIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVye3dpZHRoOjEwMCUhaW1wb3J0YW50O21hcmdpbjoxZW0gMCAxZW0gMCFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O292ZXJmbG93OmF1dG8haW1wb3J0YW50O2ZvbnQtc2l6ZToxZW0haW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIuc291cmNle292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAuYm9sZHtmb250LXdlaWdodDpib2xkIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5pdGFsaWN7Zm9udC1zdHlsZTppdGFsaWMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmV7d2hpdGUtc3BhY2U6cHJlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIHRhYmxle3dpZHRoOjEwMCUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgY2FwdGlvbnt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50O3BhZGRpbmc6LjVlbSAwIC41ZW0gMWVtIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRkLmNvZGV7d2lkdGg6MTAwJSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZC5jb2RlIC5jb250YWluZXJ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGQuY29kZSAuY29udGFpbmVyIHRleHRhcmVhe2JveC1zaXppbmc6Ym9yZGVyLWJveCFpbXBvcnRhbnQ7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50O2xlZnQ6MCFpbXBvcnRhbnQ7dG9wOjAhaW1wb3J0YW50O3dpZHRoOjEwMCUhaW1wb3J0YW50O2hlaWdodDoxMDAlIWltcG9ydGFudDtib3JkZXI6bm9uZSFpbXBvcnRhbnQ7YmFja2dyb3VuZDp3aGl0ZSFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjFlbSFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDt3aGl0ZS1zcGFjZTpwcmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGQuZ3V0dGVyIC5saW5le3RleHQtYWxpZ246cmlnaHQhaW1wb3J0YW50O3BhZGRpbmc6MCAuNWVtIDAgMWVtIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRkLmNvZGUgLmxpbmV7cGFkZGluZzowIDFlbSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5ub2d1dHRlciB0ZC5jb2RlIC5jb250YWluZXIgdGV4dGFyZWEsLnN5bnRheGhpZ2hsaWdodGVyLm5vZ3V0dGVyIHRkLmNvZGUgLmxpbmV7cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIuc2hvd3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCB0YWJsZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIC50b29sYmFye3BhZGRpbmc6LjFlbSAuOGVtIDAgLjhlbSFpbXBvcnRhbnQ7Zm9udC1zaXplOjFlbSFpbXBvcnRhbnQ7cG9zaXRpb246c3RhdGljIWltcG9ydGFudDt3aWR0aDphdXRvIWltcG9ydGFudDtoZWlnaHQ6YXV0byFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgc3BhbntkaXNwbGF5OmlubGluZSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OjFlbSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgc3BhbiBhe3BhZGRpbmc6MCFpbXBvcnRhbnQ7ZGlzcGxheTpub25lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciBzcGFuIGEuZXhwYW5kU291cmNle2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC50b29sYmFye3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDtyaWdodDoxcHghaW1wb3J0YW50O3RvcDoxcHghaW1wb3J0YW50O3dpZHRoOjExcHghaW1wb3J0YW50O2hlaWdodDoxMXB4IWltcG9ydGFudDtmb250LXNpemU6MTBweCFpbXBvcnRhbnQ7ei1pbmRleDoxMCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAudG9vbGJhciBzcGFuLnRpdGxle2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC50b29sYmFyIGF7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7dGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDtwYWRkaW5nLXRvcDoxcHghaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgYS5leHBhbmRTb3VyY2V7ZGlzcGxheTpub25lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmlle2ZvbnQtc2l6ZTouOWVtIWltcG9ydGFudDtwYWRkaW5nOjFweCAwIDFweCAwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmllIC50b29sYmFye2xpbmUtaGVpZ2h0OjhweCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5pZSAudG9vbGJhciBhe3BhZGRpbmctdG9wOjAhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuYWx0MSAuY29udGVudCwuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuYWx0MiAuY29udGVudCwuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuaGlnaGxpZ2h0ZWQgLm51bWJlciwuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MSAuY29udGVudCwuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MiAuY29udGVudHtiYWNrZ3JvdW5kOm5vbmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUgLm51bWJlcntjb2xvcjojYmJiIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5saW5lIC5jb250ZW50e2NvbG9yOmJsYWNrIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC50b29sYmFye2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyBhe3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5wbGFpbiwuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLnBsYWluIGF7Y29sb3I6YmxhY2shaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmNvbW1lbnRzLC5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuY29tbWVudHMgYXtjb2xvcjojMDA4MjAwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5zdHJpbmcsLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5zdHJpbmcgYXtjb2xvcjpibHVlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5rZXl3b3Jke2NvbG9yOiMwNjkhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OmJvbGQhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLnByZXByb2Nlc3Nvcntjb2xvcjpncmF5IWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC52YXJpYWJsZXtjb2xvcjojYTcwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC52YWx1ZXtjb2xvcjojMDkwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5mdW5jdGlvbnN7Y29sb3I6I2ZmMTQ5MyFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuY29uc3RhbnRze2NvbG9yOiMwNmMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLnNjcmlwdHtmb250LXdlaWdodDpib2xkIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjEsLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjEgYXtjb2xvcjpncmF5IWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjIsLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjIgYXtjb2xvcjojZmYxNDkzIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjMsLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjMgYXtjb2xvcjpyZWQhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmJyZWFrLC5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuYnJlYWsgYXtjb2xvcjpibGFjayFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlcntiYWNrZ3JvdW5kLWNvbG9yOndoaXRlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5saW5lLmFsdDF7YmFja2dyb3VuZC1jb2xvcjp3aGl0ZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAubGluZS5hbHQye2JhY2tncm91bmQtY29sb3I6d2hpdGUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MSwuc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MntiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTAhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuaGlnaGxpZ2h0ZWQubnVtYmVye2NvbG9yOmJsYWNrIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIGNhcHRpb257Y29sb3I6YmxhY2shaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmd1dHRlcntjb2xvcjojYWZhZmFmIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5ndXR0ZXIgLmxpbmV7Ym9yZGVyLXJpZ2h0OjNweCBzb2xpZCAjNmNlMjZjIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5ndXR0ZXIgLmxpbmUuaGlnaGxpZ2h0ZWR7YmFja2dyb3VuZC1jb2xvcjojNmNlMjZjIWltcG9ydGFudDtjb2xvcjp3aGl0ZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAubGluZSAuY29udGVudHtib3JkZXI6bm9uZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWR7b3ZlcmZsb3c6dmlzaWJsZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXJ7Y29sb3I6Ymx1ZSFpbXBvcnRhbnQ7YmFja2dyb3VuZDp3aGl0ZSFpbXBvcnRhbnQ7Ym9yZGVyOjFweCBzb2xpZCAjNmNlMjZjIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciBhe2NvbG9yOmJsdWUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIC50b29sYmFyIGE6aG92ZXJ7Y29sb3I6cmVkIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC50b29sYmFye2NvbG9yOndoaXRlIWltcG9ydGFudDtiYWNrZ3JvdW5kOiM2Y2UyNmMhaW1wb3J0YW50O2JvcmRlcjpub25lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC50b29sYmFyIGF7Y29sb3I6d2hpdGUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgYTpob3Zlcntjb2xvcjpibGFjayFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAucGxhaW4sLnN5bnRheGhpZ2hsaWdodGVyIC5wbGFpbiBhe2NvbG9yOmJsYWNrIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5jb21tZW50cywuc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbW1lbnRzIGF7Y29sb3I6IzAwODIwMCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAuc3RyaW5nLC5zeW50YXhoaWdobGlnaHRlciAuc3RyaW5nIGF7Y29sb3I6Ymx1ZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAua2V5d29yZHtjb2xvcjojMDY5IWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5wcmVwcm9jZXNzb3J7Y29sb3I6Z3JheSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAudmFyaWFibGV7Y29sb3I6I2E3MCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAudmFsdWV7Y29sb3I6IzA5MCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAuZnVuY3Rpb25ze2NvbG9yOiNmZjE0OTMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbnN0YW50c3tjb2xvcjojMDZjIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5zY3JpcHR7Zm9udC13ZWlnaHQ6Ym9sZCFpbXBvcnRhbnQ7Y29sb3I6IzA2OSFpbXBvcnRhbnQ7YmFja2dyb3VuZC1jb2xvcjpub25lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjEsLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjEgYXtjb2xvcjpncmF5IWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjIsLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjIgYXtjb2xvcjojZmYxNDkzIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjMsLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjMgYXtjb2xvcjpyZWQhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmtleXdvcmR7Zm9udC13ZWlnaHQ6Ym9sZCFpbXBvcnRhbnQ7fQ==]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/styles/shThemeDefault.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFN5bnRheEhpZ2hsaWdodGVyCiAqIGh0dHA6Ly9hbGV4Z29yYmF0Y2hldi5jb20vU3ludGF4SGlnaGxpZ2h0ZXIKICoKICogU3ludGF4SGlnaGxpZ2h0ZXIgaXMgZG9uYXRpb253YXJlLiBJZiB5b3UgYXJlIHVzaW5nIGl0LCBwbGVhc2UgZG9uYXRlLgogKiBodHRwOi8vYWxleGdvcmJhdGNoZXYuY29tL1N5bnRheEhpZ2hsaWdodGVyL2RvbmF0ZS5odG1sCiAqCiAqIEB2ZXJzaW9uCiAqIDMuMC44MyAoSnVseSAwMiAyMDEwKQogKiAKICogQGNvcHlyaWdodAogKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMCBBbGV4IEdvcmJhdGNoZXYuCiAqCiAqIEBsaWNlbnNlCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgogKi8KLnN5bnRheGhpZ2hsaWdodGVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAubGluZS5hbHQxIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAubGluZS5hbHQyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAubGluZS5oaWdobGlnaHRlZC5hbHQxLCAuc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MiB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAubGluZS5oaWdobGlnaHRlZC5udW1iZXIgewogIGNvbG9yOiBibGFjayAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciB0YWJsZSBjYXB0aW9uIHsKICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmd1dHRlciB7CiAgY29sb3I6ICNhZmFmYWYgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmd1dHRlciAubGluZSB7CiAgYm9yZGVyLXJpZ2h0OiAzcHggc29saWQgIzZjZTI2YyAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAuZ3V0dGVyIC5saW5lLmhpZ2hsaWdodGVkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmNlMjZjICFpbXBvcnRhbnQ7CiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5saW5lIC5jb250ZW50IHsKICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIHsKICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgewogIGNvbG9yOiBibHVlICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogd2hpdGUgIWltcG9ydGFudDsKICBib3JkZXI6IDFweCBzb2xpZCAjNmNlMjZjICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciBhIHsKICBjb2xvcjogYmx1ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgYTpob3ZlciB7CiAgY29sb3I6IHJlZCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAudG9vbGJhciB7CiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogIzZjZTI2YyAhaW1wb3J0YW50OwogIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAudG9vbGJhciBhIHsKICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgYTpob3ZlciB7CiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5wbGFpbiwgLnN5bnRheGhpZ2hsaWdodGVyIC5wbGFpbiBhIHsKICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbW1lbnRzLCAuc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbW1lbnRzIGEgewogIGNvbG9yOiAjMDA4MjAwICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5zdHJpbmcsIC5zeW50YXhoaWdobGlnaHRlciAuc3RyaW5nIGEgewogIGNvbG9yOiBibHVlICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5rZXl3b3JkIHsKICBjb2xvcjogIzAwNjY5OSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAucHJlcHJvY2Vzc29yIHsKICBjb2xvcjogZ3JheSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAudmFyaWFibGUgewogIGNvbG9yOiAjYWE3NzAwICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC52YWx1ZSB7CiAgY29sb3I6ICMwMDk5MDAgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmZ1bmN0aW9ucyB7CiAgY29sb3I6ICNmZjE0OTMgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbnN0YW50cyB7CiAgY29sb3I6ICMwMDY2Y2MgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnNjcmlwdCB7CiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDsKICBjb2xvcjogIzAwNjY5OSAhaW1wb3J0YW50OwogIGJhY2tncm91bmQtY29sb3I6IG5vbmUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMSwgLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjEgYSB7CiAgY29sb3I6IGdyYXkgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMiwgLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjIgYSB7CiAgY29sb3I6ICNmZjE0OTMgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMywgLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjMgYSB7CiAgY29sb3I6IHJlZCAhaW1wb3J0YW50Owp9Cgouc3ludGF4aGlnaGxpZ2h0ZXIgLmtleXdvcmQgewogIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/styles/shThemeDefault.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnN5bnRheGhpZ2hsaWdodGVye2JhY2tncm91bmQtY29sb3I6d2hpdGUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuYWx0MXtiYWNrZ3JvdW5kLWNvbG9yOndoaXRlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5saW5lLmFsdDJ7YmFja2dyb3VuZC1jb2xvcjp3aGl0ZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAubGluZS5oaWdobGlnaHRlZC5hbHQxLC5zeW50YXhoaWdobGlnaHRlciAubGluZS5oaWdobGlnaHRlZC5hbHQye2JhY2tncm91bmQtY29sb3I6I2UwZTBlMCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAubGluZS5oaWdobGlnaHRlZC5udW1iZXJ7Y29sb3I6YmxhY2shaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgY2FwdGlvbntjb2xvcjpibGFjayFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAuZ3V0dGVye2NvbG9yOiNhZmFmYWYhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmd1dHRlciAubGluZXtib3JkZXItcmlnaHQ6M3B4IHNvbGlkICM2Y2UyNmMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmd1dHRlciAubGluZS5oaWdobGlnaHRlZHtiYWNrZ3JvdW5kLWNvbG9yOiM2Y2UyNmMhaW1wb3J0YW50O2NvbG9yOndoaXRlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5saW5lIC5jb250ZW50e2JvcmRlcjpub25lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZHtvdmVyZmxvdzp2aXNpYmxlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhcntjb2xvcjpibHVlIWltcG9ydGFudDtiYWNrZ3JvdW5kOndoaXRlIWltcG9ydGFudDtib3JkZXI6MXB4IHNvbGlkICM2Y2UyNmMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIC50b29sYmFyIGF7Y29sb3I6Ymx1ZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgYTpob3Zlcntjb2xvcjpyZWQhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXJ7Y29sb3I6d2hpdGUhaW1wb3J0YW50O2JhY2tncm91bmQ6IzZjZTI2YyFpbXBvcnRhbnQ7Ym9yZGVyOm5vbmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgYXtjb2xvcjp3aGl0ZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAudG9vbGJhciBhOmhvdmVye2NvbG9yOmJsYWNrIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5wbGFpbiwuc3ludGF4aGlnaGxpZ2h0ZXIgLnBsYWluIGF7Y29sb3I6YmxhY2shaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbW1lbnRzLC5zeW50YXhoaWdobGlnaHRlciAuY29tbWVudHMgYXtjb2xvcjojMDA4MjAwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5zdHJpbmcsLnN5bnRheGhpZ2hsaWdodGVyIC5zdHJpbmcgYXtjb2xvcjpibHVlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5rZXl3b3Jke2NvbG9yOiMwNjkhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnByZXByb2Nlc3Nvcntjb2xvcjpncmF5IWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC52YXJpYWJsZXtjb2xvcjojYTcwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC52YWx1ZXtjb2xvcjojMDkwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5mdW5jdGlvbnN7Y29sb3I6I2ZmMTQ5MyFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAuY29uc3RhbnRze2NvbG9yOiMwNmMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnNjcmlwdHtmb250LXdlaWdodDpib2xkIWltcG9ydGFudDtjb2xvcjojMDY5IWltcG9ydGFudDtiYWNrZ3JvdW5kLWNvbG9yOm5vbmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMSwuc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMSBhe2NvbG9yOmdyYXkhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMiwuc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMiBhe2NvbG9yOiNmZjE0OTMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMywuc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMyBhe2NvbG9yOnJlZCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAua2V5d29yZHtmb250LXdlaWdodDpib2xkIWltcG9ydGFudDt9]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/styles/shThemejqPlot.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFN5bnRheEhpZ2hsaWdodGVyCiAqIGh0dHA6Ly9hbGV4Z29yYmF0Y2hldi5jb20vU3ludGF4SGlnaGxpZ2h0ZXIKICoKICogU3ludGF4SGlnaGxpZ2h0ZXIgaXMgZG9uYXRpb253YXJlLiBJZiB5b3UgYXJlIHVzaW5nIGl0LCBwbGVhc2UgZG9uYXRlLgogKiBodHRwOi8vYWxleGdvcmJhdGNoZXYuY29tL1N5bnRheEhpZ2hsaWdodGVyL2RvbmF0ZS5odG1sCiAqCiAqIEB2ZXJzaW9uCiAqIDMuMC44MyAoSnVseSAwMiAyMDEwKQogKiAKICogQGNvcHlyaWdodAogKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMCBBbGV4IEdvcmJhdGNoZXYuCiAqCiAqIEBsaWNlbnNlCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgogKi8KLnN5bnRheGhpZ2hsaWdodGVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAubGluZS5hbHQxIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAubGluZS5hbHQyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAubGluZS5oaWdobGlnaHRlZC5hbHQxLCAuc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MiB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAubGluZS5oaWdobGlnaHRlZC5udW1iZXIgewogIGNvbG9yOiBibGFjayAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciB0YWJsZSBjYXB0aW9uIHsKICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmd1dHRlciB7CiAgY29sb3I6ICNhZmFmYWYgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmd1dHRlciAubGluZSB7CiAgYm9yZGVyLXJpZ2h0OiAzcHggc29saWQgIzZjZTI2YyAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAuZ3V0dGVyIC5saW5lLmhpZ2hsaWdodGVkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmNlMjZjICFpbXBvcnRhbnQ7CiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5saW5lIC5jb250ZW50IHsKICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIHsKICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgewogIGNvbG9yOiBibHVlICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogd2hpdGUgIWltcG9ydGFudDsKICBib3JkZXI6IDFweCBzb2xpZCAjNmNlMjZjICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciBhIHsKICBjb2xvcjogYmx1ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgYTpob3ZlciB7CiAgY29sb3I6IHJlZCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAudG9vbGJhciB7CiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogIzZjZTI2YyAhaW1wb3J0YW50OwogIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAudG9vbGJhciBhIHsKICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgYTpob3ZlciB7CiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5wbGFpbiwgLnN5bnRheGhpZ2hsaWdodGVyIC5wbGFpbiBhIHsKICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbW1lbnRzLCAuc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbW1lbnRzIGEgewogIGNvbG9yOiAjMDA4MjAwICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5zdHJpbmcsIC5zeW50YXhoaWdobGlnaHRlciAuc3RyaW5nIGEgewogIGNvbG9yOiBibHVlICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5rZXl3b3JkIHsKICBjb2xvcjogIzAwNjY5OSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAucHJlcHJvY2Vzc29yIHsKICBjb2xvcjogZ3JheSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAudmFyaWFibGUgewogIGNvbG9yOiAjYWE3NzAwICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC52YWx1ZSB7CiAgY29sb3I6ICMwMDk5MDAgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmZ1bmN0aW9ucyB7CiAgY29sb3I6ICNmZjE0OTMgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbnN0YW50cyB7CiAgY29sb3I6ICMwMDY2Y2MgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnNjcmlwdCB7CiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDsKICBjb2xvcjogIzAwNjY5OSAhaW1wb3J0YW50OwogIGJhY2tncm91bmQtY29sb3I6IG5vbmUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMSwgLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjEgYSB7CiAgY29sb3I6IGdyYXkgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMiwgLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjIgYSB7CiAgY29sb3I6ICNmZjE0OTMgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMywgLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjMgYSB7CiAgY29sb3I6IHJlZCAhaW1wb3J0YW50Owp9Cgouc3ludGF4aGlnaGxpZ2h0ZXIgLmtleXdvcmQgewogIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7Cn0KCi5zeW50YXhoaWdobGlnaHRlciBhLAouc3ludGF4aGlnaGxpZ2h0ZXIgZGl2LAouc3ludGF4aGlnaGxpZ2h0ZXIgY29kZSwKLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlLAouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGQsCi5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ciwKLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRib2R5LAouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGhlYWQsCi5zeW50YXhoaWdobGlnaHRlciB0YWJsZSBjYXB0aW9uLAouc3ludGF4aGlnaGxpZ2h0ZXIgdGV4dGFyZWEgewogIGxpbmUtaGVpZ2h0OiAxLjNlbSAhaW1wb3J0YW50Owp9CgpkaXYuc3ludGF4aGlnaGxpZ2h0ZXIgewogIGZvbnQtc2l6ZTogMC44NWVtICFpbXBvcnRhbnQ7Cn0KCmRpdi5pbmNsdWRlIGRpdi5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZC5jb2RlIC5saW5lIHsKICBtYXJnaW4tdG9wOiAwLjFlbSAhaW1wb3J0YW50Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/styles/shThemejqPlot.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnN5bnRheGhpZ2hsaWdodGVye2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuYWx0MXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5saW5lLmFsdDJ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAubGluZS5oaWdobGlnaHRlZC5hbHQxLC5zeW50YXhoaWdobGlnaHRlciAubGluZS5oaWdobGlnaHRlZC5hbHQye2JhY2tncm91bmQtY29sb3I6I2UwZTBlMCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAubGluZS5oaWdobGlnaHRlZC5udW1iZXJ7Y29sb3I6YmxhY2shaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgY2FwdGlvbntjb2xvcjpibGFjayFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAuZ3V0dGVye2NvbG9yOiNhZmFmYWYhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmd1dHRlciAubGluZXtib3JkZXItcmlnaHQ6M3B4IHNvbGlkICM2Y2UyNmMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmd1dHRlciAubGluZS5oaWdobGlnaHRlZHtiYWNrZ3JvdW5kLWNvbG9yOiM2Y2UyNmMhaW1wb3J0YW50O2NvbG9yOndoaXRlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5saW5lIC5jb250ZW50e2JvcmRlcjpub25lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZHtvdmVyZmxvdzp2aXNpYmxlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhcntjb2xvcjpibHVlIWltcG9ydGFudDtiYWNrZ3JvdW5kOndoaXRlIWltcG9ydGFudDtib3JkZXI6MXB4IHNvbGlkICM2Y2UyNmMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIC50b29sYmFyIGF7Y29sb3I6Ymx1ZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgYTpob3Zlcntjb2xvcjpyZWQhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXJ7Y29sb3I6d2hpdGUhaW1wb3J0YW50O2JhY2tncm91bmQ6IzZjZTI2YyFpbXBvcnRhbnQ7Ym9yZGVyOm5vbmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgYXtjb2xvcjp3aGl0ZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAudG9vbGJhciBhOmhvdmVye2NvbG9yOmJsYWNrIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5wbGFpbiwuc3ludGF4aGlnaGxpZ2h0ZXIgLnBsYWluIGF7Y29sb3I6YmxhY2shaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbW1lbnRzLC5zeW50YXhoaWdobGlnaHRlciAuY29tbWVudHMgYXtjb2xvcjojMDA4MjAwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5zdHJpbmcsLnN5bnRheGhpZ2hsaWdodGVyIC5zdHJpbmcgYXtjb2xvcjpibHVlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5rZXl3b3Jke2NvbG9yOiMwNjkhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnByZXByb2Nlc3Nvcntjb2xvcjpncmF5IWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC52YXJpYWJsZXtjb2xvcjojYTcwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC52YWx1ZXtjb2xvcjojMDkwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5mdW5jdGlvbnN7Y29sb3I6I2ZmMTQ5MyFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAuY29uc3RhbnRze2NvbG9yOiMwNmMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnNjcmlwdHtmb250LXdlaWdodDpib2xkIWltcG9ydGFudDtjb2xvcjojMDY5IWltcG9ydGFudDtiYWNrZ3JvdW5kLWNvbG9yOm5vbmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMSwuc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMSBhe2NvbG9yOmdyYXkhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMiwuc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMiBhe2NvbG9yOiNmZjE0OTMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMywuc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMyBhe2NvbG9yOnJlZCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAua2V5d29yZHtmb250LXdlaWdodDpib2xkIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIGEsLnN5bnRheGhpZ2hsaWdodGVyIGRpdiwuc3ludGF4aGlnaGxpZ2h0ZXIgY29kZSwuc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUsLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRkLC5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ciwuc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGJvZHksLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRoZWFkLC5zeW50YXhoaWdobGlnaHRlciB0YWJsZSBjYXB0aW9uLC5zeW50YXhoaWdobGlnaHRlciB0ZXh0YXJlYXtsaW5lLWhlaWdodDoxLjNlbSFpbXBvcnRhbnQ7fWRpdi5zeW50YXhoaWdobGlnaHRlcntmb250LXNpemU6Ljg1ZW0haW1wb3J0YW50O31kaXYuaW5jbHVkZSBkaXYuc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGQuY29kZSAubGluZXttYXJnaW4tdG9wOi4xZW0haW1wb3J0YW50O30=]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/fullcalendar.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEZ1bGxDYWxlbmRhciB2Mi4zLjIKICogRG9jcyAmIExpY2Vuc2U6IGh0dHA6Ly9mdWxsY2FsZW5kYXIuaW8vCiAqIChjKSAyMDE1IEFkYW0gU2hhdwogKiBldCBkZWJ1Z2fDqSBwYXIgQ2xhdWRlIFNJT0hBTgogKi8KCihmdW5jdGlvbihmYWN0b3J5KSB7CglpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7CgkJZGVmaW5lKFsgJ2pxdWVyeScsICdtb21lbnQnIF0sIGZhY3RvcnkpOwoJfQoJZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7IC8vIE5vZGUvQ29tbW9uSlMKCQltb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZSgnanF1ZXJ5JyksIHJlcXVpcmUoJ21vbWVudCcpKTsKCX0KCWVsc2UgewoJCWZhY3RvcnkoalF1ZXJ5LCBtb21lbnQpOwoJfQp9KShmdW5jdGlvbigkLCBtb21lbnQpIHsKCjs7Cgp2YXIgZmMgPSAkLmZ1bGxDYWxlbmRhciA9IHsgdmVyc2lvbjogIjIuMy4yIiB9Owp2YXIgZmNWaWV3cyA9IGZjLnZpZXdzID0ge307CgoKJC5mbi5mdWxsQ2FsZW5kYXIgPSBmdW5jdGlvbihvcHRpb25zKSB7Cgl2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7IC8vIGZvciBhIHBvc3NpYmxlIG1ldGhvZCBjYWxsCgl2YXIgcmVzID0gdGhpczsgLy8gd2hhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuICh0aGlzIGpRdWVyeSBvYmplY3QgYnkgZGVmYXVsdCkKCgl0aGlzLmVhY2goZnVuY3Rpb24oaSwgX2VsZW1lbnQpIHsgLy8gbG9vcCBlYWNoIERPTSBlbGVtZW50IGludm9sdmVkCgkJdmFyIGVsZW1lbnQgPSAkKF9lbGVtZW50KTsKCQl2YXIgY2FsZW5kYXIgPSBlbGVtZW50LmRhdGEoJ2Z1bGxDYWxlbmRhcicpOyAvLyBnZXQgdGhlIGV4aXN0aW5nIGNhbGVuZGFyIG9iamVjdCAoaWYgYW55KQoJCXZhciBzaW5nbGVSZXM7IC8vIHRoZSByZXR1cm5lZCB2YWx1ZSBvZiB0aGlzIHNpbmdsZSBtZXRob2QgY2FsbAoKCQkvLyBhIG1ldGhvZCBjYWxsCgkJaWYgKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykgewoJCQlpZiAoY2FsZW5kYXIgJiYgJC5pc0Z1bmN0aW9uKGNhbGVuZGFyW29wdGlvbnNdKSkgewoJCQkJc2luZ2xlUmVzID0gY2FsZW5kYXJbb3B0aW9uc10uYXBwbHkoY2FsZW5kYXIsIGFyZ3MpOwoJCQkJaWYgKCFpKSB7CgkJCQkJcmVzID0gc2luZ2xlUmVzOyAvLyByZWNvcmQgdGhlIGZpcnN0IG1ldGhvZCBjYWxsIHJlc3VsdAoJCQkJfQoJCQkJaWYgKG9wdGlvbnMgPT09ICdkZXN0cm95JykgeyAvLyBmb3IgdGhlIGRlc3Ryb3kgbWV0aG9kLCBtdXN0IHJlbW92ZSBDYWxlbmRhciBvYmplY3QgZGF0YQoJCQkJCWVsZW1lbnQucmVtb3ZlRGF0YSgnZnVsbENhbGVuZGFyJyk7CgkJCQl9CgkJCX0KCQl9CgkJLy8gYSBuZXcgY2FsZW5kYXIgaW5pdGlhbGl6YXRpb24KCQllbHNlIGlmICghY2FsZW5kYXIpIHsgLy8gZG9uJ3QgaW5pdGlhbGl6ZSB0d2ljZQoJCQljYWxlbmRhciA9IG5ldyBDYWxlbmRhcihlbGVtZW50LCBvcHRpb25zKTsKCQkJZWxlbWVudC5kYXRhKCdmdWxsQ2FsZW5kYXInLCBjYWxlbmRhcik7CgkJCWNhbGVuZGFyLnJlbmRlcigpOwoJCX0KCX0pOwoJCglyZXR1cm4gcmVzOwp9OwoKCnZhciBjb21wbGV4T3B0aW9ucyA9IFsgLy8gbmFtZXMgb2Ygb3B0aW9ucyB0aGF0IGFyZSBvYmplY3RzIHdob3NlIHByb3BlcnRpZXMgc2hvdWxkIGJlIGNvbWJpbmVkCgknaGVhZGVyJywKCSdidXR0b25UZXh0JywKCSdidXR0b25JY29ucycsCgkndGhlbWVCdXR0b25JY29ucycKXTsKCgovLyBNZXJnZXMgYW4gYXJyYXkgb2Ygb3B0aW9uIG9iamVjdHMgaW50byBhIHNpbmdsZSBvYmplY3QKZnVuY3Rpb24gbWVyZ2VPcHRpb25zKG9wdGlvbk9ianMpIHsKCXJldHVybiBtZXJnZVByb3BzKG9wdGlvbk9ianMsIGNvbXBsZXhPcHRpb25zKTsKfQoKCi8vIEdpdmVuIG9wdGlvbnMgc3BlY2lmaWVkIGZvciB0aGUgY2FsZW5kYXIncyBjb25zdHJ1Y3RvciwgbWFzc2FnZXMgYW55IGxlZ2FjeSBvcHRpb25zIGludG8gYSBub24tbGVnYWN5IGZvcm0uCi8vIENvbnZlcnRzIFZpZXctT3B0aW9uLUhhc2hlcyBpbnRvIHRoZSBWaWV3LVNwZWNpZmljLU9wdGlvbnMgZm9ybWF0LgpmdW5jdGlvbiBtYXNzYWdlT3ZlcnJpZGVzKGlucHV0KSB7Cgl2YXIgb3ZlcnJpZGVzID0geyB2aWV3czogaW5wdXQudmlld3MgfHwge30gfTsgLy8gdGhlIG91dHB1dC4gZW5zdXJlIGEgYHZpZXdzYCBoYXNoCgl2YXIgc3ViT2JqOwoKCS8vIGl0ZXJhdGUgdGhyb3VnaCBhbGwgb3B0aW9uIG92ZXJyaWRlIHByb3BlcnRpZXMgKGV4Y2VwdCBgdmlld3NgKQoJJC5lYWNoKGlucHV0LCBmdW5jdGlvbihuYW1lLCB2YWwpIHsKCQlpZiAobmFtZSAhPSAndmlld3MnKSB7CgoJCQkvLyBjb3VsZCB0aGUgdmFsdWUgYmUgYSBsZWdhY3kgVmlldy1PcHRpb24tSGFzaD8KCQkJaWYgKAoJCQkJJC5pc1BsYWluT2JqZWN0KHZhbCkgJiYKCQkJCSEvKHRpbWV8ZHVyYXRpb258aW50ZXJ2YWwpJC9pLnRlc3QobmFtZSkgJiYgLy8gZXhjbHVkZSBkdXJhdGlvbiBvcHRpb25zLiBtaWdodCBiZSBnaXZlbiBhcyBvYmplY3RzCgkJCQkkLmluQXJyYXkobmFtZSwgY29tcGxleE9wdGlvbnMpID09IC0xIC8vIGNvbXBsZXggb3B0aW9ucyBhcmVuJ3QgYWxsb3dlZCB0byBiZSBWaWV3LU9wdGlvbi1IYXNoZXMKCQkJKSB7CgkJCQlzdWJPYmogPSBudWxsOwoKCQkJCS8vIGl0ZXJhdGUgdGhyb3VnaCB0aGUgcHJvcGVydGllcyBvZiB0aGlzIHBvc3NpYmxlIFZpZXctT3B0aW9uLUhhc2ggdmFsdWUKCQkJCSQuZWFjaCh2YWwsIGZ1bmN0aW9uKHN1Yk5hbWUsIHN1YlZhbCkgewoKCQkJCQkvLyBpcyB0aGUgcHJvcGVydHkgdGFyZ2V0aW5nIGEgdmlldz8KCQkJCQlpZiAoL14obW9udGh8d2Vla3xkYXl8ZGVmYXVsdHxiYXNpYyhXZWVrfERheSk/fGFnZW5kYShXZWVrfERheSk/KSQvLnRlc3Qoc3ViTmFtZSkpIHsKCQkJCQkJaWYgKCFvdmVycmlkZXMudmlld3Nbc3ViTmFtZV0pIHsgLy8gZW5zdXJlIHRoZSB2aWV3LXRhcmdldCBlbnRyeSBleGlzdHMKCQkJCQkJCW92ZXJyaWRlcy52aWV3c1tzdWJOYW1lXSA9IHt9OwoJCQkJCQl9CgkJCQkJCW92ZXJyaWRlcy52aWV3c1tzdWJOYW1lXVtuYW1lXSA9IHN1YlZhbDsgLy8gcmVjb3JkIHRoZSB2YWx1ZSBpbiB0aGUgYHZpZXdzYCBvYmplY3QKCQkJCQl9CgkJCQkJZWxzZSB7IC8vIGEgbm9uLVZpZXctT3B0aW9uLUhhc2ggcHJvcGVydHkKCQkJCQkJaWYgKCFzdWJPYmopIHsKCQkJCQkJCXN1Yk9iaiA9IHt9OwoJCQkJCQl9CgkJCQkJCXN1Yk9ialtzdWJOYW1lXSA9IHN1YlZhbDsgLy8gYWNjdW11bGF0ZSB0aGVzZSB1bnJlbGF0ZWQgdmFsdWVzIGZvciBsYXRlcgoJCQkJCX0KCQkJCX0pOwoKCQkJCWlmIChzdWJPYmopIHsgLy8gbm9uLVZpZXctT3B0aW9uLUhhc2ggcHJvcGVydGllcz8gdHJhbnNmZXIgdGhlbSBhcy1pcwoJCQkJCW92ZXJyaWRlc1tuYW1lXSA9IHN1Yk9iajsKCQkJCX0KCQkJfQoJCQllbHNlIHsKCQkJCW92ZXJyaWRlc1tuYW1lXSA9IHZhbDsgLy8gdHJhbnNmZXIgbm9ybWFsIG9wdGlvbnMgYXMtaXMKCQkJfQoJCX0KCX0pOwoKCXJldHVybiBvdmVycmlkZXM7Cn0KCjs7CgovLyBleHBvcnRzCmZjLmludGVyc2VjdGlvblRvU2VnID0gaW50ZXJzZWN0aW9uVG9TZWc7CmZjLmFwcGx5QWxsID0gYXBwbHlBbGw7CmZjLmRlYm91bmNlID0gZGVib3VuY2U7CmZjLmlzSW50ID0gaXNJbnQ7CmZjLmh0bWxFc2NhcGUgPSBodG1sRXNjYXBlOwpmYy5jc3NUb1N0ciA9IGNzc1RvU3RyOwpmYy5wcm94eSA9IHByb3h5OwpmYy5jYXBpdGFsaXNlRmlyc3RMZXR0ZXIgPSBjYXBpdGFsaXNlRmlyc3RMZXR0ZXI7CgoKLyogRnVsbENhbGVuZGFyLXNwZWNpZmljIERPTSBVdGlsaXRpZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKLy8gR2l2ZW4gdGhlIHNjcm9sbGJhciB3aWR0aHMgb2Ygc29tZSBvdGhlciBjb250YWluZXIsIGNyZWF0ZSBib3JkZXJzL21hcmdpbnMgb24gcm93RWxzIGluIG9yZGVyIHRvIG1hdGNoIHRoZSBsZWZ0Ci8vIGFuZCByaWdodCBzcGFjZSB0aGF0IHdhcyBvZmZzZXQgYnkgdGhlIHNjcm9sbGJhcnMuIEEgMS1waXhlbCBib3JkZXIgZmlyc3QsIHRoZW4gbWFyZ2luIGJleW9uZCB0aGF0LgpmdW5jdGlvbiBjb21wZW5zYXRlU2Nyb2xsKHJvd0Vscywgc2Nyb2xsYmFyV2lkdGhzKSB7CglpZiAoc2Nyb2xsYmFyV2lkdGhzLmxlZnQpIHsKCQlyb3dFbHMuY3NzKHsKCQkJJ2JvcmRlci1sZWZ0LXdpZHRoJzogMSwKCQkJJ21hcmdpbi1sZWZ0Jzogc2Nyb2xsYmFyV2lkdGhzLmxlZnQgLSAxCgkJfSk7Cgl9CglpZiAoc2Nyb2xsYmFyV2lkdGhzLnJpZ2h0KSB7CgkJcm93RWxzLmNzcyh7CgkJCSdib3JkZXItcmlnaHQtd2lkdGgnOiAxLAoJCQknbWFyZ2luLXJpZ2h0Jzogc2Nyb2xsYmFyV2lkdGhzLnJpZ2h0IC0gMQoJCX0pOwoJfQp9CgoKLy8gVW5kb2VzIGNvbXBlbnNhdGVTY3JvbGwgYW5kIHJlc3RvcmVzIGFsbCBib3JkZXJzL21hcmdpbnMKZnVuY3Rpb24gdW5jb21wZW5zYXRlU2Nyb2xsKHJvd0VscykgewoJcm93RWxzLmNzcyh7CgkJJ21hcmdpbi1sZWZ0JzogJycsCgkJJ21hcmdpbi1yaWdodCc6ICcnLAoJCSdib3JkZXItbGVmdC13aWR0aCc6ICcnLAoJCSdib3JkZXItcmlnaHQtd2lkdGgnOiAnJwoJfSk7Cn0KCgovLyBNYWtlIHRoZSBtb3VzZSBjdXJzb3IgZXhwcmVzcyB0aGF0IGFuIGV2ZW50IGlzIG5vdCBhbGxvd2VkIGluIHRoZSBjdXJyZW50IGFyZWEKZnVuY3Rpb24gZGlzYWJsZUN1cnNvcigpIHsKCSQoJ2JvZHknKS5hZGRDbGFzcygnZmMtbm90LWFsbG93ZWQnKTsKfQoKCi8vIFJldHVybnMgdGhlIG1vdXNlIGN1cnNvciB0byBpdHMgb3JpZ2luYWwgbG9vawpmdW5jdGlvbiBlbmFibGVDdXJzb3IoKSB7CgkkKCdib2R5JykucmVtb3ZlQ2xhc3MoJ2ZjLW5vdC1hbGxvd2VkJyk7Cn0KCgovLyBHaXZlbiBhIHRvdGFsIGF2YWlsYWJsZSBoZWlnaHQgdG8gZmlsbCwgaGF2ZSBgZWxzYCAoZXNzZW50aWFsbHkgY2hpbGQgcm93cykgZXhwYW5kIHRvIGFjY29tb2RhdGUuCi8vIEJ5IGRlZmF1bHQsIGFsbCBlbGVtZW50cyB0aGF0IGFyZSBzaG9ydGVyIHRoYW4gdGhlIHJlY29tbWVuZGVkIGhlaWdodCBhcmUgZXhwYW5kZWQgdW5pZm9ybWx5LCBub3QgY29uc2lkZXJpbmcKLy8gYW55IG90aGVyIGVscyB0aGF0IGFyZSBhbHJlYWR5IHRvbyB0YWxsLiBpZiBgc2hvdWxkUmVkaXN0cmlidXRlYCBpcyBvbiwgaXQgY29uc2lkZXJzIHRoZXNlIHRhbGwgcm93cyBhbmQgCi8vIHJlZHVjZXMgdGhlIGF2YWlsYWJsZSBoZWlnaHQuCmZ1bmN0aW9uIGRpc3RyaWJ1dGVIZWlnaHQoZWxzLCBhdmFpbGFibGVIZWlnaHQsIHNob3VsZFJlZGlzdHJpYnV0ZSkgewoKCS8vICpGTE9PUklORyBOT1RFKjogd2UgZmxvb3IgaW4gY2VydGFpbiBwbGFjZXMgYmVjYXVzZSB6b29tIGNhbiBnaXZlIGluYWNjdXJhdGUgZmxvYXRpbmctcG9pbnQgZGltZW5zaW9ucywKCS8vIGFuZCBpdCBpcyBiZXR0ZXIgdG8gYmUgc2hvcnRlciB0aGFuIHRhbGxlciwgdG8gYXZvaWQgY3JlYXRpbmcgdW5uZWNlc3Nhcnkgc2Nyb2xsYmFycy4KCgl2YXIgbWluT2Zmc2V0MSA9IE1hdGguZmxvb3IoYXZhaWxhYmxlSGVpZ2h0IC8gZWxzLmxlbmd0aCk7IC8vIGZvciBub24tbGFzdCBlbGVtZW50Cgl2YXIgbWluT2Zmc2V0MiA9IE1hdGguZmxvb3IoYXZhaWxhYmxlSGVpZ2h0IC0gbWluT2Zmc2V0MSAqIChlbHMubGVuZ3RoIC0gMSkpOyAvLyBmb3IgbGFzdCBlbGVtZW50ICpGTE9PUklORyBOT1RFKgoJdmFyIGZsZXhFbHMgPSBbXTsgLy8gZWxlbWVudHMgdGhhdCBhcmUgYWxsb3dlZCB0byBleHBhbmQuIGFycmF5IG9mIERPTSBub2RlcwoJdmFyIGZsZXhPZmZzZXRzID0gW107IC8vIGFtb3VudCBvZiB2ZXJ0aWNhbCBzcGFjZSBpdCB0YWtlcyB1cAoJdmFyIGZsZXhIZWlnaHRzID0gW107IC8vIGFjdHVhbCBjc3MgaGVpZ2h0Cgl2YXIgdXNlZEhlaWdodCA9IDA7CgoJdW5kaXN0cmlidXRlSGVpZ2h0KGVscyk7IC8vIGdpdmUgYWxsIGVsZW1lbnRzIHRoZWlyIG5hdHVyYWwgaGVpZ2h0CgoJLy8gZmluZCBlbGVtZW50cyB0aGF0IGFyZSBiZWxvdyB0aGUgcmVjb21tZW5kZWQgaGVpZ2h0IChleHBhbmRhYmxlKS4KCS8vIGltcG9ydGFudCB0byBxdWVyeSBmb3IgaGVpZ2h0cyBpbiBhIHNpbmdsZSBmaXJzdCBwYXNzICh0byBhdm9pZCByZWZsb3cgb3NjaWxsYXRpb24pLgoJZWxzLmVhY2goZnVuY3Rpb24oaSwgZWwpIHsKCQl2YXIgbWluT2Zmc2V0ID0gaSA9PT0gZWxzLmxlbmd0aCAtIDEgPyBtaW5PZmZzZXQyIDogbWluT2Zmc2V0MTsKCQl2YXIgbmF0dXJhbE9mZnNldCA9ICQoZWwpLm91dGVySGVpZ2h0KHRydWUpOwoKCQlpZiAobmF0dXJhbE9mZnNldCA8IG1pbk9mZnNldCkgewoJCQlmbGV4RWxzLnB1c2goZWwpOwoJCQlmbGV4T2Zmc2V0cy5wdXNoKG5hdHVyYWxPZmZzZXQpOwoJCQlmbGV4SGVpZ2h0cy5wdXNoKCQoZWwpLmhlaWdodCgpKTsKCQl9CgkJZWxzZSB7CgkJCS8vIHRoaXMgZWxlbWVudCBzdHJldGNoZXMgcGFzdCByZWNvbW1lbmRlZCBoZWlnaHQgKG5vbi1leHBhbmRhYmxlKS4gbWFyayB0aGUgc3BhY2UgYXMgb2NjdXBpZWQuCgkJCXVzZWRIZWlnaHQgKz0gbmF0dXJhbE9mZnNldDsKCQl9Cgl9KTsKCgkvLyByZWFkanVzdCB0aGUgcmVjb21tZW5kZWQgaGVpZ2h0IHRvIG9ubHkgY29uc2lkZXIgdGhlIGhlaWdodCBhdmFpbGFibGUgdG8gbm9uLW1heGVkLW91dCByb3dzLgoJaWYgKHNob3VsZFJlZGlzdHJpYnV0ZSkgewoJCWF2YWlsYWJsZUhlaWdodCAtPSB1c2VkSGVpZ2h0OwoJCW1pbk9mZnNldDEgPSBNYXRoLmZsb29yKGF2YWlsYWJsZUhlaWdodCAvIGZsZXhFbHMubGVuZ3RoKTsKCQltaW5PZmZzZXQyID0gTWF0aC5mbG9vcihhdmFpbGFibGVIZWlnaHQgLSBtaW5PZmZzZXQxICogKGZsZXhFbHMubGVuZ3RoIC0gMSkpOyAvLyAqRkxPT1JJTkcgTk9URSoKCX0KCgkvLyBhc3NpZ24gaGVpZ2h0cyB0byBhbGwgZXhwYW5kYWJsZSBlbGVtZW50cwoJJChmbGV4RWxzKS5lYWNoKGZ1bmN0aW9uKGksIGVsKSB7CgkJdmFyIG1pbk9mZnNldCA9IGkgPT09IGZsZXhFbHMubGVuZ3RoIC0gMSA/IG1pbk9mZnNldDIgOiBtaW5PZmZzZXQxOwoJCXZhciBuYXR1cmFsT2Zmc2V0ID0gZmxleE9mZnNldHNbaV07CgkJdmFyIG5hdHVyYWxIZWlnaHQgPSBmbGV4SGVpZ2h0c1tpXTsKCQl2YXIgbmV3SGVpZ2h0ID0gbWluT2Zmc2V0IC0gKG5hdHVyYWxPZmZzZXQgLSBuYXR1cmFsSGVpZ2h0KTsgLy8gc3VidHJhY3QgdGhlIG1hcmdpbi9wYWRkaW5nCgoJCWlmIChuYXR1cmFsT2Zmc2V0IDwgbWluT2Zmc2V0KSB7IC8vIHdlIGNoZWNrIHRoaXMgYWdhaW4gYmVjYXVzZSByZWRpc3RyaWJ1dGlvbiBtaWdodCBoYXZlIGNoYW5nZWQgdGhpbmdzCgkJCSQoZWwpLmhlaWdodChuZXdIZWlnaHQpOwoJCX0KCX0pOwp9CgoKLy8gVW5kb2VzIGRpc3RydWJ1dGVIZWlnaHQsIHJlc3RvcmluZyBhbGwgZWxzIHRvIHRoZWlyIG5hdHVyYWwgaGVpZ2h0CmZ1bmN0aW9uIHVuZGlzdHJpYnV0ZUhlaWdodChlbHMpIHsKCWVscy5oZWlnaHQoJycpOwp9CgoKLy8gR2l2ZW4gYGVsc2AsIGEgalF1ZXJ5IHNldCBvZiA8dGQ+IGNlbGxzLCBmaW5kIHRoZSBjZWxsIHdpdGggdGhlIGxhcmdlc3QgbmF0dXJhbCB3aWR0aCBhbmQgc2V0IHRoZSB3aWR0aHMgb2YgYWxsIHRoZQovLyBjZWxscyB0byBiZSB0aGF0IHdpZHRoLgovLyBQUkVSRVFVSVNJVEU6IGlmIHlvdSB3YW50IGEgY2VsbCB0byB0YWtlIHVwIHdpZHRoLCBpdCBuZWVkcyB0byBoYXZlIGEgc2luZ2xlIGlubmVyIGVsZW1lbnQgdy8gZGlzcGxheTppbmxpbmUKZnVuY3Rpb24gbWF0Y2hDZWxsV2lkdGhzKGVscykgewoJdmFyIG1heElubmVyV2lkdGggPSAwOwoKCWVscy5maW5kKCc+IConKS5lYWNoKGZ1bmN0aW9uKGksIGlubmVyRWwpIHsKCQl2YXIgaW5uZXJXaWR0aCA9ICQoaW5uZXJFbCkub3V0ZXJXaWR0aCgpOwoJCWlmIChpbm5lcldpZHRoID4gbWF4SW5uZXJXaWR0aCkgewoJCQltYXhJbm5lcldpZHRoID0gaW5uZXJXaWR0aDsKCQl9Cgl9KTsKCgltYXhJbm5lcldpZHRoKys7IC8vIHNvbWV0aW1lcyBub3QgYWNjdXJhdGUgb2Ygd2lkdGggdGhlIHRleHQgbmVlZHMgdG8gc3RheSBvbiBvbmUgbGluZS4gaW5zdXJhbmNlCgoJZWxzLndpZHRoKG1heElubmVyV2lkdGgpOwoKCXJldHVybiBtYXhJbm5lcldpZHRoOwp9CgoKLy8gVHVybnMgYSBjb250YWluZXIgZWxlbWVudCBpbnRvIGEgc2Nyb2xsZXIgaWYgaXRzIGNvbnRlbnRzIGlzIHRhbGxlciB0aGFuIHRoZSBhbGxvdHRlZCBoZWlnaHQuCi8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZWxlbWVudCBpcyBub3cgYSBzY3JvbGxlciwgZmFsc2Ugb3RoZXJ3aXNlLgovLyBOT1RFOiB0aGlzIG1ldGhvZCBpcyBiZXN0IGJlY2F1c2UgaXQgdGFrZXMgd2VpcmQgem9vbWluZyBkaW1lbnNpb25zIGludG8gYWNjb3VudApmdW5jdGlvbiBzZXRQb3RlbnRpYWxTY3JvbGxlcihjb250YWluZXJFbCwgaGVpZ2h0KSB7Cgljb250YWluZXJFbC5oZWlnaHQoaGVpZ2h0KS5hZGRDbGFzcygnZmMtc2Nyb2xsZXInKTsKCgkvLyBhcmUgc2Nyb2xsYmFycyBuZWVkZWQ/CglpZiAoY29udGFpbmVyRWxbMF0uc2Nyb2xsSGVpZ2h0IC0gMSA+IGNvbnRhaW5lckVsWzBdLmNsaWVudEhlaWdodCkgeyAvLyAhISEgLTEgYmVjYXVzZSBJRSBpcyBvZnRlbiBvZmYtYnktb25lIDooCgkJcmV0dXJuIHRydWU7Cgl9CgoJdW5zZXRTY3JvbGxlcihjb250YWluZXJFbCk7IC8vIHVuZG8KCXJldHVybiBmYWxzZTsKfQoKCi8vIFRha2VzIGFuIGVsZW1lbnQgdGhhdCBtaWdodCBoYXZlIGJlZW4gYSBzY3JvbGxlciwgYW5kIHR1cm5zIGl0IGJhY2sgaW50byBhIG5vcm1hbCBlbGVtZW50LgpmdW5jdGlvbiB1bnNldFNjcm9sbGVyKGNvbnRhaW5lckVsKSB7Cgljb250YWluZXJFbC5oZWlnaHQoJycpLnJlbW92ZUNsYXNzKCdmYy1zY3JvbGxlcicpOwp9CgoKLyogR2VuZXJhbCBET00gVXRpbGl0aWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKZmMuZ2V0Q2xpZW50UmVjdCA9IGdldENsaWVudFJlY3Q7CmZjLmdldENvbnRlbnRSZWN0ID0gZ2V0Q29udGVudFJlY3Q7CmZjLmdldFNjcm9sbGJhcldpZHRocyA9IGdldFNjcm9sbGJhcldpZHRoczsKCgovLyBib3Jyb3dlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5LXVpL2Jsb2IvMS4xMS4wL3VpL2NvcmUuanMjTDUxCmZ1bmN0aW9uIGdldFNjcm9sbFBhcmVudChlbCkgewoJdmFyIHBvc2l0aW9uID0gZWwuY3NzKCdwb3NpdGlvbicpLAoJCXNjcm9sbFBhcmVudCA9IGVsLnBhcmVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKSB7CgkJCXZhciBwYXJlbnQgPSAkKHRoaXMpOwoJCQlyZXR1cm4gKC8oYXV0b3xzY3JvbGwpLykudGVzdCgKCQkJCXBhcmVudC5jc3MoJ292ZXJmbG93JykgKyBwYXJlbnQuY3NzKCdvdmVyZmxvdy15JykgKyBwYXJlbnQuY3NzKCdvdmVyZmxvdy14JykKCQkJKTsKCQl9KS5lcSgwKTsKCglyZXR1cm4gcG9zaXRpb24gPT09ICdmaXhlZCcgfHwgIXNjcm9sbFBhcmVudC5sZW5ndGggPyAkKGVsWzBdLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQpIDogc2Nyb2xsUGFyZW50Owp9CgoKLy8gUXVlcmllcyB0aGUgb3V0ZXIgYm91bmRpbmcgYXJlYSBvZiBhIGpRdWVyeSBlbGVtZW50LgovLyBSZXR1cm5zIGEgcmVjdGFuZ2xlIHdpdGggYWJzb2x1dGUgY29vcmRpbmF0ZXM6IGxlZnQsIHJpZ2h0IChleGNsdXNpdmUpLCB0b3AsIGJvdHRvbSAoZXhjbHVzaXZlKS4KZnVuY3Rpb24gZ2V0T3V0ZXJSZWN0KGVsKSB7Cgl2YXIgb2Zmc2V0ID0gZWwub2Zmc2V0KCk7CgoJcmV0dXJuIHsKCQlsZWZ0OiBvZmZzZXQubGVmdCwKCQlyaWdodDogb2Zmc2V0LmxlZnQgKyBlbC5vdXRlcldpZHRoKCksCgkJdG9wOiBvZmZzZXQudG9wLAoJCWJvdHRvbTogb2Zmc2V0LnRvcCArIGVsLm91dGVySGVpZ2h0KCkKCX07Cn0KCgovLyBRdWVyaWVzIHRoZSBhcmVhIHdpdGhpbiB0aGUgbWFyZ2luL2JvcmRlci9zY3JvbGxiYXJzIG9mIGEgalF1ZXJ5IGVsZW1lbnQuIERvZXMgbm90IGdvIHdpdGhpbiB0aGUgcGFkZGluZy4KLy8gUmV0dXJucyBhIHJlY3RhbmdsZSB3aXRoIGFic29sdXRlIGNvb3JkaW5hdGVzOiBsZWZ0LCByaWdodCAoZXhjbHVzaXZlKSwgdG9wLCBib3R0b20gKGV4Y2x1c2l2ZSkuCi8vIE5PVEU6IHNob3VsZCB1c2UgY2xpZW50TGVmdC9jbGllbnRUb3AsIGJ1dCB2ZXJ5IHVucmVsaWFibGUgY3Jvc3MtYnJvd3Nlci4KZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdChlbCkgewoJdmFyIG9mZnNldCA9IGVsLm9mZnNldCgpOwoJdmFyIHNjcm9sbGJhcldpZHRocyA9IGdldFNjcm9sbGJhcldpZHRocyhlbCk7Cgl2YXIgbGVmdCA9IG9mZnNldC5sZWZ0ICsgZ2V0Q3NzRmxvYXQoZWwsICdib3JkZXItbGVmdC13aWR0aCcpICsgc2Nyb2xsYmFyV2lkdGhzLmxlZnQ7Cgl2YXIgdG9wID0gb2Zmc2V0LnRvcCArIGdldENzc0Zsb2F0KGVsLCAnYm9yZGVyLXRvcC13aWR0aCcpICsgc2Nyb2xsYmFyV2lkdGhzLnRvcDsKCglyZXR1cm4gewoJCWxlZnQ6IGxlZnQsCgkJcmlnaHQ6IGxlZnQgKyBlbFswXS5jbGllbnRXaWR0aCwgLy8gY2xpZW50V2lkdGggaW5jbHVkZXMgcGFkZGluZyBidXQgTk9UIHNjcm9sbGJhcnMKCQl0b3A6IHRvcCwKCQlib3R0b206IHRvcCArIGVsWzBdLmNsaWVudEhlaWdodCAvLyBjbGllbnRIZWlnaHQgaW5jbHVkZXMgcGFkZGluZyBidXQgTk9UIHNjcm9sbGJhcnMKCX07Cn0KCgovLyBRdWVyaWVzIHRoZSBhcmVhIHdpdGhpbiB0aGUgbWFyZ2luL2JvcmRlci9wYWRkaW5nIG9mIGEgalF1ZXJ5IGVsZW1lbnQuIEFzc3VtZWQgbm90IHRvIGhhdmUgc2Nyb2xsYmFycy4KLy8gUmV0dXJucyBhIHJlY3RhbmdsZSB3aXRoIGFic29sdXRlIGNvb3JkaW5hdGVzOiBsZWZ0LCByaWdodCAoZXhjbHVzaXZlKSwgdG9wLCBib3R0b20gKGV4Y2x1c2l2ZSkuCmZ1bmN0aW9uIGdldENvbnRlbnRSZWN0KGVsKSB7Cgl2YXIgb2Zmc2V0ID0gZWwub2Zmc2V0KCk7IC8vIGp1c3Qgb3V0c2lkZSBvZiBib3JkZXIsIG1hcmdpbiBub3QgaW5jbHVkZWQKCXZhciBsZWZ0ID0gb2Zmc2V0LmxlZnQgKyBnZXRDc3NGbG9hdChlbCwgJ2JvcmRlci1sZWZ0LXdpZHRoJykgKyBnZXRDc3NGbG9hdChlbCwgJ3BhZGRpbmctbGVmdCcpOwoJdmFyIHRvcCA9IG9mZnNldC50b3AgKyBnZXRDc3NGbG9hdChlbCwgJ2JvcmRlci10b3Atd2lkdGgnKSArIGdldENzc0Zsb2F0KGVsLCAncGFkZGluZy10b3AnKTsKCglyZXR1cm4gewoJCWxlZnQ6IGxlZnQsCgkJcmlnaHQ6IGxlZnQgKyBlbC53aWR0aCgpLAoJCXRvcDogdG9wLAoJCWJvdHRvbTogdG9wICsgZWwuaGVpZ2h0KCkKCX07Cn0KCgovLyBSZXR1cm5zIHRoZSBjb21wdXRlZCBsZWZ0L3JpZ2h0L3RvcC9ib3R0b20gc2Nyb2xsYmFyIHdpZHRocyBmb3IgdGhlIGdpdmVuIGpRdWVyeSBlbGVtZW50LgovLyBOT1RFOiBzaG91bGQgdXNlIGNsaWVudExlZnQvY2xpZW50VG9wLCBidXQgdmVyeSB1bnJlbGlhYmxlIGNyb3NzLWJyb3dzZXIuCmZ1bmN0aW9uIGdldFNjcm9sbGJhcldpZHRocyhlbCkgewoJdmFyIGxlZnRSaWdodFdpZHRoID0gZWwuaW5uZXJXaWR0aCgpIC0gZWxbMF0uY2xpZW50V2lkdGg7IC8vIHRoZSBwYWRkaW5ncyBjYW5jZWwgb3V0LCBsZWF2aW5nIHRoZSBzY3JvbGxiYXJzCgl2YXIgd2lkdGhzID0gewoJCWxlZnQ6IDAsCgkJcmlnaHQ6IDAsCgkJdG9wOiAwLAoJCWJvdHRvbTogZWwuaW5uZXJIZWlnaHQoKSAtIGVsWzBdLmNsaWVudEhlaWdodCAvLyB0aGUgcGFkZGluZ3MgY2FuY2VsIG91dCwgbGVhdmluZyB0aGUgYm90dG9tIHNjcm9sbGJhcgoJfTsKCglpZiAoZ2V0SXNMZWZ0UnRsU2Nyb2xsYmFycygpICYmIGVsLmNzcygnZGlyZWN0aW9uJykgPT0gJ3J0bCcpIHsgLy8gaXMgdGhlIHNjcm9sbGJhciBvbiB0aGUgbGVmdCBzaWRlPwoJCXdpZHRocy5sZWZ0ID0gbGVmdFJpZ2h0V2lkdGg7Cgl9CgllbHNlIHsKCQl3aWR0aHMucmlnaHQgPSBsZWZ0UmlnaHRXaWR0aDsKCX0KCglyZXR1cm4gd2lkdGhzOwp9CgoKLy8gTG9naWMgZm9yIGRldGVybWluaW5nIGlmLCB3aGVuIHRoZSBlbGVtZW50IGlzIHJpZ2h0LXRvLWxlZnQsIHRoZSBzY3JvbGxiYXIgYXBwZWFycyBvbiB0aGUgbGVmdCBzaWRlCgp2YXIgX2lzTGVmdFJ0bFNjcm9sbGJhcnMgPSBudWxsOwoKZnVuY3Rpb24gZ2V0SXNMZWZ0UnRsU2Nyb2xsYmFycygpIHsgLy8gcmVzcG9uc2libGUgZm9yIGNhY2hpbmcgdGhlIGNvbXB1dGF0aW9uCglpZiAoX2lzTGVmdFJ0bFNjcm9sbGJhcnMgPT09IG51bGwpIHsKCQlfaXNMZWZ0UnRsU2Nyb2xsYmFycyA9IGNvbXB1dGVJc0xlZnRSdGxTY3JvbGxiYXJzKCk7Cgl9CglyZXR1cm4gX2lzTGVmdFJ0bFNjcm9sbGJhcnM7Cn0KCmZ1bmN0aW9uIGNvbXB1dGVJc0xlZnRSdGxTY3JvbGxiYXJzKCkgeyAvLyBjcmVhdGVzIGFuIG9mZnNjcmVlbiB0ZXN0IGVsZW1lbnQsIHRoZW4gcmVtb3ZlcyBpdAoJdmFyIGVsID0gJCgnPGRpdj48ZGl2Lz48L2Rpdj4nKQoJCS5jc3MoewoJCQlwb3NpdGlvbjogJ2Fic29sdXRlJywKCQkJdG9wOiAtMTAwMCwKCQkJbGVmdDogMCwKCQkJYm9yZGVyOiAwLAoJCQlwYWRkaW5nOiAwLAoJCQlvdmVyZmxvdzogJ3Njcm9sbCcsCgkJCWRpcmVjdGlvbjogJ3J0bCcKCQl9KQoJCS5hcHBlbmRUbygnYm9keScpOwoJdmFyIGlubmVyRWwgPSBlbC5jaGlsZHJlbigpOwoJdmFyIHJlcyA9IGlubmVyRWwub2Zmc2V0KCkubGVmdCA+IGVsLm9mZnNldCgpLmxlZnQ7IC8vIGlzIHRoZSBpbm5lciBkaXYgc2hpZnRlZCB0byBhY2NvbW1vZGF0ZSBhIGxlZnQgc2Nyb2xsYmFyPwoJZWwucmVtb3ZlKCk7CglyZXR1cm4gcmVzOwp9CgoKLy8gUmV0cmlldmVzIGEgalF1ZXJ5IGVsZW1lbnQncyBjb21wdXRlZCBDU1MgdmFsdWUgYXMgYSBmbG9hdGluZy1wb2ludCBudW1iZXIuCi8vIElmIHRoZSBxdWVyaWVkIHZhbHVlIGlzIG5vbi1udW1lcmljIChleDogSUUgY2FuIHJldHVybiAibWVkaXVtIiBmb3IgYm9yZGVyIHdpZHRoKSwgd2lsbCBqdXN0IHJldHVybiB6ZXJvLgpmdW5jdGlvbiBnZXRDc3NGbG9hdChlbCwgcHJvcCkgewoJcmV0dXJuIHBhcnNlRmxvYXQoZWwuY3NzKHByb3ApKSB8fCAwOwp9CgoKLy8gUmV0dXJucyBhIGJvb2xlYW4gd2hldGhlciB0aGlzIHdhcyBhIGxlZnQgbW91c2UgY2xpY2sgYW5kIG5vIGN0cmwga2V5ICh3aGljaCBtZWFucyByaWdodCBjbGljayBvbiBNYWMpCmZ1bmN0aW9uIGlzUHJpbWFyeU1vdXNlQnV0dG9uKGV2KSB7CglyZXR1cm4gZXYud2hpY2ggPT0gMSAmJiAhZXYuY3RybEtleTsKfQoKCi8qIEdlb21ldHJ5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCi8vIFJldHVybnMgYSBuZXcgcmVjdGFuZ2xlIHRoYXQgaXMgdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgdHdvIHJlY3RhbmdsZXMuIElmIHRoZXkgZG9uJ3QgaW50ZXJzZWN0LCByZXR1cm5zIGZhbHNlCmZ1bmN0aW9uIGludGVyc2VjdFJlY3RzKHJlY3QxLCByZWN0MikgewoJdmFyIHJlcyA9IHsKCQlsZWZ0OiBNYXRoLm1heChyZWN0MS5sZWZ0LCByZWN0Mi5sZWZ0KSwKCQlyaWdodDogTWF0aC5taW4ocmVjdDEucmlnaHQsIHJlY3QyLnJpZ2h0KSwKCQl0b3A6IE1hdGgubWF4KHJlY3QxLnRvcCwgcmVjdDIudG9wKSwKCQlib3R0b206IE1hdGgubWluKHJlY3QxLmJvdHRvbSwgcmVjdDIuYm90dG9tKQoJfTsKCglpZiAocmVzLmxlZnQgPCByZXMucmlnaHQgJiYgcmVzLnRvcCA8IHJlcy5ib3R0b20pIHsKCQlyZXR1cm4gcmVzOwoJfQoJcmV0dXJuIGZhbHNlOwp9CgoKLy8gUmV0dXJucyBhIG5ldyBwb2ludCB0aGF0IHdpbGwgaGF2ZSBiZWVuIG1vdmVkIHRvIHJlc2lkZSB3aXRoaW4gdGhlIGdpdmVuIHJlY3RhbmdsZQpmdW5jdGlvbiBjb25zdHJhaW5Qb2ludChwb2ludCwgcmVjdCkgewoJcmV0dXJuIHsKCQlsZWZ0OiBNYXRoLm1pbihNYXRoLm1heChwb2ludC5sZWZ0LCByZWN0LmxlZnQpLCByZWN0LnJpZ2h0KSwKCQl0b3A6IE1hdGgubWluKE1hdGgubWF4KHBvaW50LnRvcCwgcmVjdC50b3ApLCByZWN0LmJvdHRvbSkKCX07Cn0KCgovLyBSZXR1cm5zIGEgcG9pbnQgdGhhdCBpcyB0aGUgY2VudGVyIG9mIHRoZSBnaXZlbiByZWN0YW5nbGUKZnVuY3Rpb24gZ2V0UmVjdENlbnRlcihyZWN0KSB7CglyZXR1cm4gewoJCWxlZnQ6IChyZWN0LmxlZnQgKyByZWN0LnJpZ2h0KSAvIDIsCgkJdG9wOiAocmVjdC50b3AgKyByZWN0LmJvdHRvbSkgLyAyCgl9Owp9CgoKLy8gU3VidHJhY3RzIHBvaW50MidzIGNvb3JkaW5hdGVzIGZyb20gcG9pbnQxJ3MgY29vcmRpbmF0ZXMsIHJldHVybmluZyBhIGRlbHRhCmZ1bmN0aW9uIGRpZmZQb2ludHMocG9pbnQxLCBwb2ludDIpIHsKCXJldHVybiB7CgkJbGVmdDogcG9pbnQxLmxlZnQgLSBwb2ludDIubGVmdCwKCQl0b3A6IHBvaW50MS50b3AgLSBwb2ludDIudG9wCgl9Owp9CgoKLyogRnVsbENhbGVuZGFyLXNwZWNpZmljIE1pc2MgVXRpbGl0aWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCi8vIENyZWF0ZXMgYSBiYXNpYyBzZWdtZW50IHdpdGggdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgdHdvIHJhbmdlcy4gUmV0dXJucyB1bmRlZmluZWQgaWYgbm8gaW50ZXJzZWN0aW9uLgovLyBFeHBlY3RzIGFsbCBkYXRlcyB0byBiZSBub3JtYWxpemVkIHRvIHRoZSBzYW1lIHRpbWV6b25lIGJlZm9yZWhhbmQuCi8vIFRPRE86IG1vdmUgdG8gZGF0ZSBzZWN0aW9uPwpmdW5jdGlvbiBpbnRlcnNlY3Rpb25Ub1NlZyhzdWJqZWN0UmFuZ2UsIGNvbnN0cmFpbnRSYW5nZSkgewoJdmFyIHN1YmplY3RTdGFydCA9IHN1YmplY3RSYW5nZS5zdGFydDsKCXZhciBzdWJqZWN0RW5kID0gc3ViamVjdFJhbmdlLmVuZDsKCXZhciBjb25zdHJhaW50U3RhcnQgPSBjb25zdHJhaW50UmFuZ2Uuc3RhcnQ7Cgl2YXIgY29uc3RyYWludEVuZCA9IGNvbnN0cmFpbnRSYW5nZS5lbmQ7Cgl2YXIgc2VnU3RhcnQsIHNlZ0VuZDsKCXZhciBpc1N0YXJ0LCBpc0VuZDsKCglpZiAoc3ViamVjdEVuZCA+IGNvbnN0cmFpbnRTdGFydCAmJiBzdWJqZWN0U3RhcnQgPCBjb25zdHJhaW50RW5kKSB7IC8vIGluIGJvdW5kcyBhdCBhbGw/CgoJCWlmIChzdWJqZWN0U3RhcnQgPj0gY29uc3RyYWludFN0YXJ0KSB7CgkJCXNlZ1N0YXJ0ID0gc3ViamVjdFN0YXJ0LmNsb25lKCk7CgkJCWlzU3RhcnQgPSB0cnVlOwoJCX0KCQllbHNlIHsKCQkJc2VnU3RhcnQgPSBjb25zdHJhaW50U3RhcnQuY2xvbmUoKTsKCQkJaXNTdGFydCA9ICBmYWxzZTsKCQl9CgoJCWlmIChzdWJqZWN0RW5kIDw9IGNvbnN0cmFpbnRFbmQpIHsKCQkJc2VnRW5kID0gc3ViamVjdEVuZC5jbG9uZSgpOwoJCQlpc0VuZCA9IHRydWU7CgkJfQoJCWVsc2UgewoJCQlzZWdFbmQgPSBjb25zdHJhaW50RW5kLmNsb25lKCk7CgkJCWlzRW5kID0gZmFsc2U7CgkJfQoKCQlyZXR1cm4gewoJCQlzdGFydDogc2VnU3RhcnQsCgkJCWVuZDogc2VnRW5kLAoJCQlpc1N0YXJ0OiBpc1N0YXJ0LAoJCQlpc0VuZDogaXNFbmQKCQl9OwoJfQp9CgoKLyogRGF0ZSBVdGlsaXRpZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpmYy5jb21wdXRlSW50ZXJ2YWxVbml0ID0gY29tcHV0ZUludGVydmFsVW5pdDsKZmMuZHVyYXRpb25IYXNUaW1lID0gZHVyYXRpb25IYXNUaW1lOwoKdmFyIGRheUlEcyA9IFsgJ3N1bicsICdtb24nLCAndHVlJywgJ3dlZCcsICd0aHUnLCAnZnJpJywgJ3NhdCcgXTsKdmFyIGludGVydmFsVW5pdHMgPSBbICd5ZWFyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsICdtaWxsaXNlY29uZCcgXTsKCgovLyBEaWZmcyB0aGUgdHdvIG1vbWVudHMgaW50byBhIER1cmF0aW9uIHdoZXJlIGZ1bGwtZGF5cyBhcmUgcmVjb3JkZWQgZmlyc3QsIHRoZW4gdGhlIHJlbWFpbmluZyB0aW1lLgovLyBNb21lbnRzIHdpbGwgaGF2ZSB0aGVpciB0aW1lem9uZXMgbm9ybWFsaXplZC4KZnVuY3Rpb24gZGlmZkRheVRpbWUoYSwgYikgewoJcmV0dXJuIG1vbWVudC5kdXJhdGlvbih7CgkJZGF5czogYS5jbG9uZSgpLnN0cmlwVGltZSgpLmRpZmYoYi5jbG9uZSgpLnN0cmlwVGltZSgpLCAnZGF5cycpLAoJCW1zOiBhLnRpbWUoKSAtIGIudGltZSgpIC8vIHRpbWUtb2YtZGF5IGZyb20gZGF5IHN0YXJ0LiBkaXNyZWdhcmRzIHRpbWV6b25lCgl9KTsKfQoKCi8vIERpZmZzIHRoZSB0d28gbW9tZW50cyB2aWEgdGhlaXIgc3RhcnQtb2YtZGF5IChyZWdhcmRsZXNzIG9mIHRpbWV6b25lKS4gUHJvZHVjZXMgd2hvbGUtZGF5IGR1cmF0aW9ucy4KZnVuY3Rpb24gZGlmZkRheShhLCBiKSB7CglyZXR1cm4gbW9tZW50LmR1cmF0aW9uKHsKCQlkYXlzOiBhLmNsb25lKCkuc3RyaXBUaW1lKCkuZGlmZihiLmNsb25lKCkuc3RyaXBUaW1lKCksICdkYXlzJykKCX0pOwp9CgoKLy8gRGlmZnMgdHdvIG1vbWVudHMsIHByb2R1Y2luZyBhIGR1cmF0aW9uLCBtYWRlIG9mIGEgd2hvbGUtdW5pdC1pbmNyZW1lbnQgb2YgdGhlIGdpdmVuIHVuaXQuIFVzZXMgcm91bmRpbmcuCmZ1bmN0aW9uIGRpZmZCeVVuaXQoYSwgYiwgdW5pdCkgewoJcmV0dXJuIG1vbWVudC5kdXJhdGlvbigKCQlNYXRoLnJvdW5kKGEuZGlmZihiLCB1bml0LCB0cnVlKSksIC8vIHJldHVybkZsb2F0PXRydWUKCQl1bml0CgkpOwp9CgoKLy8gQ29tcHV0ZXMgdGhlIHVuaXQgbmFtZSBvZiB0aGUgbGFyZ2VzdCB3aG9sZS11bml0IHBlcmlvZCBvZiB0aW1lLgovLyBGb3IgZXhhbXBsZSwgNDggaG91cnMgd2lsbCBiZSAiZGF5cyIgd2hlcmVhcyA0OSBob3VycyB3aWxsIGJlICJob3VycyIuCi8vIEFjY2VwdHMgc3RhcnQvZW5kLCBhIHJhbmdlIG9iamVjdCwgb3IgYW4gb3JpZ2luYWwgZHVyYXRpb24gb2JqZWN0LgpmdW5jdGlvbiBjb21wdXRlSW50ZXJ2YWxVbml0KHN0YXJ0LCBlbmQpIHsKCXZhciBpLCB1bml0OwoJdmFyIHZhbDsKCglmb3IgKGkgPSAwOyBpIDwgaW50ZXJ2YWxVbml0cy5sZW5ndGg7IGkrKykgewoJCXVuaXQgPSBpbnRlcnZhbFVuaXRzW2ldOwoJCXZhbCA9IGNvbXB1dGVSYW5nZUFzKHVuaXQsIHN0YXJ0LCBlbmQpOwoKCQlpZiAodmFsID49IDEgJiYgaXNJbnQodmFsKSkgewoJCQlicmVhazsKCQl9Cgl9CgoJcmV0dXJuIHVuaXQ7IC8vIHdpbGwgYmUgIm1pbGxpc2Vjb25kcyIgaWYgbm90aGluZyBlbHNlIG1hdGNoZXMKfQoKCi8vIENvbXB1dGVzIHRoZSBudW1iZXIgb2YgdW5pdHMgKGxpa2UgImhvdXJzIikgaW4gdGhlIGdpdmVuIHJhbmdlLgovLyBSYW5nZSBjYW4gYmUgYSB7c3RhcnQsZW5kfSBvYmplY3QsIHNlcGFyYXRlIHN0YXJ0L2VuZCBhcmdzLCBvciBhIER1cmF0aW9uLgovLyBSZXN1bHRzIGFyZSBiYXNlZCBvbiBNb21lbnQncyAuYXMoKSBhbmQgLmRpZmYoKSBtZXRob2RzLCBzbyByZXN1bHRzIGNhbiBkZXBlbmQgb24gaW50ZXJuYWwgaGFuZGxpbmcKLy8gb2YgbW9udGgtZGlmZmluZyBsb2dpYyAod2hpY2ggdGVuZHMgdG8gdmFyeSBmcm9tIHZlcnNpb24gdG8gdmVyc2lvbikuCmZ1bmN0aW9uIGNvbXB1dGVSYW5nZUFzKHVuaXQsIHN0YXJ0LCBlbmQpIHsKCglpZiAoZW5kICE9IG51bGwpIHsgLy8gZ2l2ZW4gc3RhcnQsIGVuZAoJCXJldHVybiBlbmQuZGlmZihzdGFydCwgdW5pdCwgdHJ1ZSk7Cgl9CgllbHNlIGlmIChtb21lbnQuaXNEdXJhdGlvbihzdGFydCkpIHsgLy8gZ2l2ZW4gZHVyYXRpb24KCQlyZXR1cm4gc3RhcnQuYXModW5pdCk7Cgl9CgllbHNlIHsgLy8gZ2l2ZW4geyBzdGFydCwgZW5kIH0gcmFuZ2Ugb2JqZWN0CgkJcmV0dXJuIHN0YXJ0LmVuZC5kaWZmKHN0YXJ0LnN0YXJ0LCB1bml0LCB0cnVlKTsKCX0KfQoKCi8vIFJldHVybnMgYSBib29sZWFuIGFib3V0IHdoZXRoZXIgdGhlIGdpdmVuIGR1cmF0aW9uIGhhcyBhbnkgdGltZSBwYXJ0cyAoaG91cnMvbWludXRlcy9zZWNvbmRzL21zKQpmdW5jdGlvbiBkdXJhdGlvbkhhc1RpbWUoZHVyKSB7CglyZXR1cm4gQm9vbGVhbihkdXIuaG91cnMoKSB8fCBkdXIubWludXRlcygpIHx8IGR1ci5zZWNvbmRzKCkgfHwgZHVyLm1pbGxpc2Vjb25kcygpKTsKfQoKCmZ1bmN0aW9uIGlzTmF0aXZlRGF0ZShpbnB1dCkgewoJcmV0dXJuICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBEYXRlXScgfHwgaW5wdXQgaW5zdGFuY2VvZiBEYXRlOwp9CgoKLy8gUmV0dXJucyBhIGJvb2xlYW4gYWJvdXQgd2hldGhlciB0aGUgZ2l2ZW4gaW5wdXQgaXMgYSB0aW1lIHN0cmluZywgbGlrZSAiMDY6NDA6MDAiIG9yICIwNjowMCIKZnVuY3Rpb24gaXNUaW1lU3RyaW5nKHN0cikgewoJcmV0dXJuIC9eXGQrXDpcZCsoPzpcOlxkK1wuPyg/OlxkezN9KT8pPyQvLnRlc3Qoc3RyKTsKfQoKCi8qIEdlbmVyYWwgVXRpbGl0aWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKdmFyIGhhc093blByb3BNZXRob2QgPSB7fS5oYXNPd25Qcm9wZXJ0eTsKCgovLyBNZXJnZXMgYW4gYXJyYXkgb2Ygb2JqZWN0cyBpbnRvIGEgc2luZ2xlIG9iamVjdC4KLy8gVGhlIHNlY29uZCBhcmd1bWVudCBhbGxvd3MgZm9yIGFuIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIHdobydzIG9iamVjdCB2YWx1ZXMgd2lsbCBiZSBtZXJnZWQgdG9nZXRoZXIuCmZ1bmN0aW9uIG1lcmdlUHJvcHMocHJvcE9ianMsIGNvbXBsZXhQcm9wcykgewoJdmFyIGRlc3QgPSB7fTsKCXZhciBpLCBuYW1lOwoJdmFyIGNvbXBsZXhPYmpzOwoJdmFyIGosIHZhbDsKCXZhciBwcm9wczsKCglpZiAoY29tcGxleFByb3BzKSB7CgkJZm9yIChpID0gMDsgaSA8IGNvbXBsZXhQcm9wcy5sZW5ndGg7IGkrKykgewoJCQluYW1lID0gY29tcGxleFByb3BzW2ldOwoJCQljb21wbGV4T2JqcyA9IFtdOwoKCQkJLy8gY29sbGVjdCB0aGUgdHJhaWxpbmcgb2JqZWN0IHZhbHVlcywgc3RvcHBpbmcgd2hlbiBhIG5vbi1vYmplY3QgaXMgZGlzY292ZXJlZAoJCQlmb3IgKGogPSBwcm9wT2Jqcy5sZW5ndGggLSAxOyBqID49IDA7IGotLSkgewoJCQkJdmFsID0gcHJvcE9ianNbal1bbmFtZV07CgoJCQkJaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSB7CgkJCQkJY29tcGxleE9ianMudW5zaGlmdCh2YWwpOwoJCQkJfQoJCQkJZWxzZSBpZiAodmFsICE9PSB1bmRlZmluZWQpIHsKCQkJCQlkZXN0W25hbWVdID0gdmFsOyAvLyBpZiB0aGVyZSB3ZXJlIG5vIG9iamVjdHMsIHRoaXMgdmFsdWUgd2lsbCBiZSB1c2VkCgkJCQkJYnJlYWs7CgkJCQl9CgkJCX0KCgkJCS8vIGlmIHRoZSB0cmFpbGluZyB2YWx1ZXMgd2VyZSBvYmplY3RzLCB1c2UgdGhlIG1lcmdlZCB2YWx1ZQoJCQlpZiAoY29tcGxleE9ianMubGVuZ3RoKSB7CgkJCQlkZXN0W25hbWVdID0gbWVyZ2VQcm9wcyhjb21wbGV4T2Jqcyk7CgkJCX0KCQl9Cgl9CgoJLy8gY29weSB2YWx1ZXMgaW50byB0aGUgZGVzdGluYXRpb24sIGdvaW5nIGZyb20gbGFzdCB0byBmaXJzdAoJZm9yIChpID0gcHJvcE9ianMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKCQlwcm9wcyA9IHByb3BPYmpzW2ldOwoKCQlmb3IgKG5hbWUgaW4gcHJvcHMpIHsKCQkJaWYgKCEobmFtZSBpbiBkZXN0KSkgeyAvLyBpZiBhbHJlYWR5IGFzc2lnbmVkIGJ5IHByZXZpb3VzIHByb3BzIG9yIGNvbXBsZXggcHJvcHMsIGRvbid0IHJlYXNzaWduCgkJCQlkZXN0W25hbWVdID0gcHJvcHNbbmFtZV07CgkJCX0KCQl9Cgl9CgoJcmV0dXJuIGRlc3Q7Cn0KCgovLyBDcmVhdGUgYW4gb2JqZWN0IHRoYXQgaGFzIHRoZSBnaXZlbiBwcm90b3R5cGUuIEp1c3QgbGlrZSBPYmplY3QuY3JlYXRlCmZ1bmN0aW9uIGNyZWF0ZU9iamVjdChwcm90bykgewoJdmFyIGYgPSBmdW5jdGlvbigpIHt9OwoJZi5wcm90b3R5cGUgPSBwcm90bzsKCXJldHVybiBuZXcgZigpOwp9CgoKZnVuY3Rpb24gY29weU93blByb3BzKHNyYywgZGVzdCkgewoJZm9yICh2YXIgbmFtZSBpbiBzcmMpIHsKCQlpZiAoaGFzT3duUHJvcChzcmMsIG5hbWUpKSB7CgkJCWRlc3RbbmFtZV0gPSBzcmNbbmFtZV07CgkJfQoJfQp9CgoKLy8gQ29waWVzIG92ZXIgY2VydGFpbiBtZXRob2RzIHdpdGggdGhlIHNhbWUgbmFtZXMgYXMgT2JqZWN0LnByb3RvdHlwZSBtZXRob2RzLiBPdmVyY29tZXMgYW4gSUU8PTggYnVnOgovLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0VDTUFTY3JpcHRfRG9udEVudW1fYXR0cmlidXRlI0pTY3JpcHRfRG9udEVudW1fQnVnCmZ1bmN0aW9uIGNvcHlOYXRpdmVNZXRob2RzKHNyYywgZGVzdCkgewoJdmFyIG5hbWVzID0gWyAnY29uc3RydWN0b3InLCAndG9TdHJpbmcnLCAndmFsdWVPZicgXTsKCXZhciBpLCBuYW1lOwoKCWZvciAoaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykgewoJCW5hbWUgPSBuYW1lc1tpXTsKCgkJaWYgKHNyY1tuYW1lXSAhPT0gT2JqZWN0LnByb3RvdHlwZVtuYW1lXSkgewoJCQlkZXN0W25hbWVdID0gc3JjW25hbWVdOwoJCX0KCX0KfQoKCmZ1bmN0aW9uIGhhc093blByb3Aob2JqLCBuYW1lKSB7CglyZXR1cm4gaGFzT3duUHJvcE1ldGhvZC5jYWxsKG9iaiwgbmFtZSk7Cn0KCgovLyBJcyB0aGUgZ2l2ZW4gdmFsdWUgYSBub24tb2JqZWN0IG5vbi1mdW5jdGlvbiB2YWx1ZT8KZnVuY3Rpb24gaXNBdG9taWModmFsKSB7CglyZXR1cm4gL3VuZGVmaW5lZHxudWxsfGJvb2xlYW58bnVtYmVyfHN0cmluZy8udGVzdCgkLnR5cGUodmFsKSk7Cn0KCgpmdW5jdGlvbiBhcHBseUFsbChmdW5jdGlvbnMsIHRoaXNPYmosIGFyZ3MpIHsKCWlmICgkLmlzRnVuY3Rpb24oZnVuY3Rpb25zKSkgewoJCWZ1bmN0aW9ucyA9IFsgZnVuY3Rpb25zIF07Cgl9CglpZiAoZnVuY3Rpb25zKSB7CgkJdmFyIGk7CgkJdmFyIHJldDsKCQlmb3IgKGk9MDsgaTxmdW5jdGlvbnMubGVuZ3RoOyBpKyspIHsKCQkJcmV0ID0gZnVuY3Rpb25zW2ldLmFwcGx5KHRoaXNPYmosIGFyZ3MpIHx8IHJldDsKCQl9CgkJcmV0dXJuIHJldDsKCX0KfQoKCmZ1bmN0aW9uIGZpcnN0RGVmaW5lZCgpIHsKCWZvciAodmFyIGk9MDsgaTxhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKCQlpZiAoYXJndW1lbnRzW2ldICE9PSB1bmRlZmluZWQpIHsKCQkJcmV0dXJuIGFyZ3VtZW50c1tpXTsKCQl9Cgl9Cn0KCgpmdW5jdGlvbiBodG1sRXNjYXBlKHMpIHsKCXJldHVybiAocyArICcnKS5yZXBsYWNlKC8mL2csICcmYW1wOycpCgkJLnJlcGxhY2UoLzwvZywgJyZsdDsnKQoJCS5yZXBsYWNlKC8+L2csICcmZ3Q7JykKCQkucmVwbGFjZSgvJy9nLCAnJiMwMzk7JykKCQkucmVwbGFjZSgvIi9nLCAnJnF1b3Q7JykKCQkucmVwbGFjZSgvXG4vZywgJzxiciAvPicpOwp9CgoKZnVuY3Rpb24gc3RyaXBIdG1sRW50aXRpZXModGV4dCkgewoJcmV0dXJuIHRleHQucmVwbGFjZSgvJi4qPzsvZywgJycpOwp9CgoKLy8gR2l2ZW4gYSBoYXNoIG9mIENTUyBwcm9wZXJ0aWVzLCByZXR1cm5zIGEgc3RyaW5nIG9mIENTUy4KLy8gVXNlcyBwcm9wZXJ0eSBuYW1lcyBhcy1pcyAobm8gY2FtZWwtY2FzZSBjb252ZXJzaW9uKS4gV2lsbCBub3QgbWFrZSBzdGF0ZW1lbnRzIGZvciBudWxsL3VuZGVmaW5lZCB2YWx1ZXMuCmZ1bmN0aW9uIGNzc1RvU3RyKGNzc1Byb3BzKSB7Cgl2YXIgc3RhdGVtZW50cyA9IFtdOwoKCSQuZWFjaChjc3NQcm9wcywgZnVuY3Rpb24obmFtZSwgdmFsKSB7CgkJaWYgKHZhbCAhPSBudWxsKSB7CgkJCXN0YXRlbWVudHMucHVzaChuYW1lICsgJzonICsgdmFsKTsKCQl9Cgl9KTsKCglyZXR1cm4gc3RhdGVtZW50cy5qb2luKCc7Jyk7Cn0KCgpmdW5jdGlvbiBjYXBpdGFsaXNlRmlyc3RMZXR0ZXIoc3RyKSB7CglyZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpOwp9CgoKZnVuY3Rpb24gY29tcGFyZU51bWJlcnMoYSwgYikgeyAvLyBmb3IgLnNvcnQoKQoJcmV0dXJuIGEgLSBiOwp9CgoKZnVuY3Rpb24gaXNJbnQobikgewoJcmV0dXJuIG4gJSAxID09PSAwOwp9CgoKLy8gUmV0dXJucyBhIG1ldGhvZCBib3VuZCB0byB0aGUgZ2l2ZW4gb2JqZWN0IGNvbnRleHQuCi8vIEp1c3QgbGlrZSBvbmUgb2YgdGhlIGpRdWVyeS5wcm94eSBzaWduYXR1cmVzLCBidXQgd2l0aG91dCB0aGUgdW5kZXNpcmVkIGJlaGF2aW9yIG9mIHRyZWF0aW5nIHRoZSBzYW1lIG1ldGhvZCB3aXRoCi8vIGRpZmZlcmVudCBjb250ZXh0cyBhcyBpZGVudGljYWwgd2hlbiBiaW5kaW5nL3VuYmluZGluZyBldmVudHMuCmZ1bmN0aW9uIHByb3h5KG9iaiwgbWV0aG9kTmFtZSkgewoJdmFyIG1ldGhvZCA9IG9ialttZXRob2ROYW1lXTsKCglyZXR1cm4gZnVuY3Rpb24oKSB7CgkJcmV0dXJuIG1ldGhvZC5hcHBseShvYmosIGFyZ3VtZW50cyk7Cgl9Owp9CgoKLy8gUmV0dXJucyBhIGZ1bmN0aW9uLCB0aGF0LCBhcyBsb25nIGFzIGl0IGNvbnRpbnVlcyB0byBiZSBpbnZva2VkLCB3aWxsIG5vdAovLyBiZSB0cmlnZ2VyZWQuIFRoZSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBhZnRlciBpdCBzdG9wcyBiZWluZyBjYWxsZWQgZm9yCi8vIE4gbWlsbGlzZWNvbmRzLgovLyBodHRwczovL2dpdGh1Yi5jb20vamFzaGtlbmFzL3VuZGVyc2NvcmUvYmxvYi8xLjYuMC91bmRlcnNjb3JlLmpzI0w3MTQKZnVuY3Rpb24gZGVib3VuY2UoZnVuYywgd2FpdCkgewoJdmFyIHRpbWVvdXRJZDsKCXZhciBhcmdzOwoJdmFyIGNvbnRleHQ7Cgl2YXIgdGltZXN0YW1wOyAvLyBvZiBtb3N0IHJlY2VudCBjYWxsCgl2YXIgbGF0ZXIgPSBmdW5jdGlvbigpIHsKCQl2YXIgbGFzdCA9ICtuZXcgRGF0ZSgpIC0gdGltZXN0YW1wOwoJCWlmIChsYXN0IDwgd2FpdCAmJiBsYXN0ID4gMCkgewoJCQl0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0IC0gbGFzdCk7CgkJfQoJCWVsc2UgewoJCQl0aW1lb3V0SWQgPSBudWxsOwoJCQlmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpOwoJCQlpZiAoIXRpbWVvdXRJZCkgewoJCQkJY29udGV4dCA9IGFyZ3MgPSBudWxsOwoJCQl9CgkJfQoJfTsKCglyZXR1cm4gZnVuY3Rpb24oKSB7CgkJY29udGV4dCA9IHRoaXM7CgkJYXJncyA9IGFyZ3VtZW50czsKCQl0aW1lc3RhbXAgPSArbmV3IERhdGUoKTsKCQlpZiAoIXRpbWVvdXRJZCkgewoJCQl0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0KTsKCQl9Cgl9Owp9Cgo7OwoKdmFyIGFtYmlnRGF0ZU9mTW9udGhSZWdleCA9IC9eXHMqXGR7NH0tXGRcZCQvOwp2YXIgYW1iaWdUaW1lT3Jab25lUmVnZXggPQoJL15ccypcZHs0fS0oPzooXGRcZC1cZFxkKXwoV1xkXGQkKXwoV1xkXGQtXGQpfChcZFxkXGQpKSgoVHwgKShcZFxkKDpcZFxkKDpcZFxkKFwuXGQrKT8pPyk/KT8pPyQvOwp2YXIgbmV3TW9tZW50UHJvdG8gPSBtb21lbnQuZm47IC8vIHdoZXJlIHdlIHdpbGwgYXR0YWNoIG91ciBuZXcgbWV0aG9kcwp2YXIgb2xkTW9tZW50UHJvdG8gPSAkLmV4dGVuZCh7fSwgbmV3TW9tZW50UHJvdG8pOyAvLyBjb3B5IG9mIG9yaWdpbmFsIG1vbWVudCBtZXRob2RzCnZhciBhbGxvd1ZhbHVlT3B0aW1pemF0aW9uOwp2YXIgc2V0VVRDVmFsdWVzOyAvLyBmdW5jdGlvbiBkZWZpbmVkIGJlbG93CnZhciBzZXRMb2NhbFZhbHVlczsgLy8gZnVuY3Rpb24gZGVmaW5lZCBiZWxvdwoKCi8vIENyZWF0aW5nCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIENyZWF0ZXMgYSBuZXcgbW9tZW50LCBzaW1pbGFyIHRvIHRoZSB2YW5pbGxhIG1vbWVudCguLi4pIGNvbnN0cnVjdG9yLCBidXQgd2l0aAovLyBleHRyYSBmZWF0dXJlcyAoYW1iaWd1b3VzIHRpbWUsIGVuaGFuY2VkIGZvcm1hdHRpbmcpLiBXaGVuIGdpdmVuIGFuIGV4aXN0aW5nIG1vbWVudCwKLy8gaXQgd2lsbCBmdW5jdGlvbiBhcyBhIGNsb25lIChhbmQgcmV0YWluIHRoZSB6b25lIG9mIHRoZSBtb21lbnQpLiBBbnl0aGluZyBlbHNlIHdpbGwKLy8gcmVzdWx0IGluIGEgbW9tZW50IGluIHRoZSBsb2NhbCB6b25lLgpmYy5tb21lbnQgPSBmdW5jdGlvbigpIHsKCXJldHVybiBtYWtlTW9tZW50KGFyZ3VtZW50cyk7Cn07CgovLyBTYW1lcyBhcyBmYy5tb21lbnQsIGJ1dCBmb3JjZXMgdGhlIHJlc3VsdGluZyBtb21lbnQgdG8gYmUgaW4gdGhlIFVUQyB0aW1lem9uZS4KZmMubW9tZW50LnV0YyA9IGZ1bmN0aW9uKCkgewoJdmFyIG1vbSA9IG1ha2VNb21lbnQoYXJndW1lbnRzLCB0cnVlKTsKCgkvLyBGb3JjZSBpdCBpbnRvIFVUQyBiZWNhdXNlIG1ha2VNb21lbnQgZG9lc24ndCBndWFyYW50ZWUgaXQKCS8vIChpZiBnaXZlbiBhIHByZS1leGlzdGluZyBtb21lbnQgZm9yIGV4YW1wbGUpCglpZiAobW9tLmhhc1RpbWUoKSkgeyAvLyBkb24ndCBnaXZlIGFtYmlndW91c2x5LXRpbWVkIG1vbWVudHMgYSBVVEMgem9uZQoJCW1vbS51dGMoKTsKCX0KCglyZXR1cm4gbW9tOwp9OwoKLy8gU2FtZSBhcyBmYy5tb21lbnQsIGJ1dCB3aGVuIGdpdmVuIGFuIElTTzg2MDEgc3RyaW5nLCB0aGUgdGltZXpvbmUgb2Zmc2V0IGlzIHByZXNlcnZlZC4KLy8gSVNPODYwMSBzdHJpbmdzIHdpdGggbm8gdGltZXpvbmUgb2Zmc2V0IHdpbGwgYmVjb21lIGFtYmlndW91c2x5IHpvbmVkLgpmYy5tb21lbnQucGFyc2Vab25lID0gZnVuY3Rpb24oKSB7CglyZXR1cm4gbWFrZU1vbWVudChhcmd1bWVudHMsIHRydWUsIHRydWUpOwp9OwoKLy8gQnVpbGRzIGFuIGVuaGFuY2VkIG1vbWVudCBmcm9tIGFyZ3MuIFdoZW4gZ2l2ZW4gYW4gZXhpc3RpbmcgbW9tZW50LCBpdCBjbG9uZXMuIFdoZW4gZ2l2ZW4gYQovLyBuYXRpdmUgRGF0ZSwgb3IgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzICh0aGUgY3VycmVudCB0aW1lKSwgdGhlIHJlc3VsdGluZyBtb21lbnQgd2lsbCBiZSBsb2NhbC4KLy8gQW55dGhpbmcgZWxzZSBuZWVkcyB0byBiZSAicGFyc2VkIiAoYSBzdHJpbmcgb3IgYW4gYXJyYXkpLCBhbmQgd2lsbCBiZSBhZmZlY3RlZCBieToKLy8gICAgcGFyc2VBc1VUQyAtIGlmIHRoZXJlIGlzIG5vIHpvbmUgaW5mb3JtYXRpb24sIHNob3VsZCB3ZSBwYXJzZSB0aGUgaW5wdXQgaW4gVVRDPwovLyAgICBwYXJzZVpvbmUgLSBpZiB0aGVyZSBpcyB6b25lIGluZm9ybWF0aW9uLCBzaG91bGQgd2UgZm9yY2UgdGhlIHpvbmUgb2YgdGhlIG1vbWVudD8KZnVuY3Rpb24gbWFrZU1vbWVudChhcmdzLCBwYXJzZUFzVVRDLCBwYXJzZVpvbmUpIHsKCXZhciBpbnB1dCA9IGFyZ3NbMF07Cgl2YXIgaXNTaW5nbGVTdHJpbmcgPSBhcmdzLmxlbmd0aCA9PSAxICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZyc7Cgl2YXIgaXNBbWJpZ1RpbWU7Cgl2YXIgaXNBbWJpZ1pvbmU7Cgl2YXIgYW1iaWdNYXRjaDsKCXZhciBtb207CgoJaWYgKG1vbWVudC5pc01vbWVudChpbnB1dCkpIHsKCQltb20gPSBtb21lbnQuYXBwbHkobnVsbCwgYXJncyk7IC8vIGNsb25lIGl0CgkJdHJhbnNmZXJBbWJpZ3MoaW5wdXQsIG1vbSk7IC8vIHRoZSBhbWJpZyBmbGFncyB3ZXJlbid0IHRyYW5zZmVyZWQgd2l0aCB0aGUgY2xvbmUKCX0KCWVsc2UgaWYgKGlzTmF0aXZlRGF0ZShpbnB1dCkgfHwgaW5wdXQgPT09IHVuZGVmaW5lZCkgewoJCW1vbSA9IG1vbWVudC5hcHBseShudWxsLCBhcmdzKTsgLy8gd2lsbCBiZSBsb2NhbAoJfQoJZWxzZSB7IC8vICJwYXJzaW5nIiBpcyByZXF1aXJlZAoJCWlzQW1iaWdUaW1lID0gZmFsc2U7CgkJaXNBbWJpZ1pvbmUgPSBmYWxzZTsKCgkJaWYgKGlzU2luZ2xlU3RyaW5nKSB7CgkJCWlmIChhbWJpZ0RhdGVPZk1vbnRoUmVnZXgudGVzdChpbnB1dCkpIHsKCQkJCS8vIGFjY2VwdCBzdHJpbmdzIGxpa2UgJzIwMTQtMDUnLCBidXQgY29udmVydCB0byB0aGUgZmlyc3Qgb2YgdGhlIG1vbnRoCgkJCQlpbnB1dCArPSAnLTAxJzsKCQkJCWFyZ3MgPSBbIGlucHV0IF07IC8vIGZvciB3aGVuIHdlIHBhc3MgaXQgb24gdG8gbW9tZW50J3MgY29uc3RydWN0b3IKCQkJCWlzQW1iaWdUaW1lID0gdHJ1ZTsKCQkJCWlzQW1iaWdab25lID0gdHJ1ZTsKCQkJfQoJCQllbHNlIGlmICgoYW1iaWdNYXRjaCA9IGFtYmlnVGltZU9yWm9uZVJlZ2V4LmV4ZWMoaW5wdXQpKSkgewoJCQkJaXNBbWJpZ1RpbWUgPSAhYW1iaWdNYXRjaFs1XTsgLy8gbm8gdGltZSBwYXJ0PwoJCQkJaXNBbWJpZ1pvbmUgPSB0cnVlOwoJCQl9CgkJfQoJCWVsc2UgaWYgKCQuaXNBcnJheShpbnB1dCkpIHsKCQkJLy8gYXJyYXlzIGhhdmUgbm8gdGltZXpvbmUgaW5mb3JtYXRpb24sIHNvIGFzc3VtZSBhbWJpZ3VvdXMgem9uZQoJCQlpc0FtYmlnWm9uZSA9IHRydWU7CgkJfQoJCS8vIG90aGVyd2lzZSwgcHJvYmFibHkgYSBzdHJpbmcgd2l0aCBhIGZvcm1hdAoKCQlpZiAocGFyc2VBc1VUQyB8fCBpc0FtYmlnVGltZSkgewoJCQltb20gPSBtb21lbnQudXRjLmFwcGx5KG1vbWVudCwgYXJncyk7CgkJfQoJCWVsc2UgewoJCQltb20gPSBtb21lbnQuYXBwbHkobnVsbCwgYXJncyk7CgkJfQoKCQlpZiAoaXNBbWJpZ1RpbWUpIHsKCQkJbW9tLl9hbWJpZ1RpbWUgPSB0cnVlOwoJCQltb20uX2FtYmlnWm9uZSA9IHRydWU7IC8vIGFtYmlndW91cyB0aW1lIGFsd2F5cyBtZWFucyBhbWJpZ3VvdXMgem9uZQoJCX0KCQllbHNlIGlmIChwYXJzZVpvbmUpIHsgLy8gbGV0J3MgcmVjb3JkIHRoZSBpbnB1dHRlZCB6b25lIHNvbWVob3cKCQkJaWYgKGlzQW1iaWdab25lKSB7CgkJCQltb20uX2FtYmlnWm9uZSA9IHRydWU7CgkJCX0KCQkJZWxzZSBpZiAoaXNTaW5nbGVTdHJpbmcpIHsKCQkJCWlmIChtb20udXRjT2Zmc2V0KSB7CgkJCQkJbW9tLnV0Y09mZnNldChpbnB1dCk7IC8vIGlmIG5vdCBhIHZhbGlkIHpvbmUsIHdpbGwgYXNzaWduIFVUQwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJbW9tLnpvbmUoaW5wdXQpOyAvLyBmb3IgbW9tZW50LXByZS0yLjkKCQkJCX0KCQkJfQoJCX0KCX0KCgltb20uX2Z1bGxDYWxlbmRhciA9IHRydWU7IC8vIGZsYWcgZm9yIGV4dGVuZGVkIGZ1bmN0aW9uYWxpdHkKCglyZXR1cm4gbW9tOwp9CgoKLy8gQSBjbG9uZSBtZXRob2QgdGhhdCB3b3JrcyB3aXRoIHRoZSBmbGFncyByZWxhdGVkIHRvIG91ciBlbmhhbmNlZCBmdW5jdGlvbmFsaXR5LgovLyBJbiB0aGUgZnV0dXJlLCB1c2UgbW9tZW50Lm1vbWVudFByb3BlcnRpZXMKbmV3TW9tZW50UHJvdG8uY2xvbmUgPSBmdW5jdGlvbigpIHsKCXZhciBtb20gPSBvbGRNb21lbnRQcm90by5jbG9uZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwoKCS8vIHRoZXNlIGZsYWdzIHdlcmVuJ3QgdHJhbnNmZXJlZCB3aXRoIHRoZSBjbG9uZQoJdHJhbnNmZXJBbWJpZ3ModGhpcywgbW9tKTsKCWlmICh0aGlzLl9mdWxsQ2FsZW5kYXIpIHsKCQltb20uX2Z1bGxDYWxlbmRhciA9IHRydWU7Cgl9CgoJcmV0dXJuIG1vbTsKfTsKCgovLyBXZWVrIE51bWJlcgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gUmV0dXJucyB0aGUgd2VlayBudW1iZXIsIGNvbnNpZGVyaW5nIHRoZSBsb2NhbGUncyBjdXN0b20gd2VlayBudW1iZXIgY2FsY3VhdGlvbgovLyBgd2Vla3NgIGlzIGFuIGFsaWFzIGZvciBgd2Vla2AKbmV3TW9tZW50UHJvdG8ud2VlayA9IG5ld01vbWVudFByb3RvLndlZWtzID0gZnVuY3Rpb24oaW5wdXQpIHsKCXZhciB3ZWVrQ2FsYyA9ICh0aGlzLl9sb2NhbGUgfHwgdGhpcy5fbGFuZykgLy8gd29ya3MgcHJlLW1vbWVudC0yLjgKCQkuX2Z1bGxDYWxlbmRhcl93ZWVrQ2FsYzsKCglpZiAoaW5wdXQgPT0gbnVsbCAmJiB0eXBlb2Ygd2Vla0NhbGMgPT09ICdmdW5jdGlvbicpIHsgLy8gY3VzdG9tIGZ1bmN0aW9uIG9ubHkgd29ya3MgZm9yIGdldHRlcgoJCXJldHVybiB3ZWVrQ2FsYyh0aGlzKTsKCX0KCWVsc2UgaWYgKHdlZWtDYWxjID09PSAnSVNPJykgewoJCXJldHVybiBvbGRNb21lbnRQcm90by5pc29XZWVrLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IC8vIElTTyBnZXR0ZXIvc2V0dGVyCgl9CgoJcmV0dXJuIG9sZE1vbWVudFByb3RvLndlZWsuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgLy8gbG9jYWwgZ2V0dGVyL3NldHRlcgp9OwoKCi8vIFRpbWUtb2YtZGF5Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIEdFVFRFUgovLyBSZXR1cm5zIGEgRHVyYXRpb24gd2l0aCB0aGUgaG91cnMvbWludXRlcy9zZWNvbmRzL21zIHZhbHVlcyBvZiB0aGUgbW9tZW50LgovLyBJZiB0aGUgbW9tZW50IGhhcyBhbiBhbWJpZ3VvdXMgdGltZSwgYSBkdXJhdGlvbiBvZiAwMDowMCB3aWxsIGJlIHJldHVybmVkLgovLwovLyBTRVRURVIKLy8gWW91IGNhbiBzdXBwbHkgYSBEdXJhdGlvbiwgYSBNb21lbnQsIG9yIGEgRHVyYXRpb24tbGlrZSBhcmd1bWVudC4KLy8gV2hlbiBzZXR0aW5nIHRoZSB0aW1lLCBhbmQgdGhlIG1vbWVudCBoYXMgYW4gYW1iaWd1b3VzIHRpbWUsIGl0IHRoZW4gYmVjb21lcyB1bmFtYmlndW91cy4KbmV3TW9tZW50UHJvdG8udGltZSA9IGZ1bmN0aW9uKHRpbWUpIHsKCgkvLyBGYWxsYmFjayB0byB0aGUgb3JpZ2luYWwgbWV0aG9kIChpZiB0aGVyZSBpcyBvbmUpIGlmIHRoaXMgbW9tZW50IHdhc24ndCBjcmVhdGVkIHZpYSBGdWxsQ2FsZW5kYXIuCgkvLyBgdGltZWAgaXMgYSBnZW5lcmljIGVub3VnaCBtZXRob2QgbmFtZSB3aGVyZSB0aGlzIHByZWNhdXRpb24gaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGNvbGxpc2lvbnMgdy8gb3RoZXIgcGx1Z2lucy4KCWlmICghdGhpcy5fZnVsbENhbGVuZGFyKSB7CgkJcmV0dXJuIG9sZE1vbWVudFByb3RvLnRpbWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKCX0KCglpZiAodGltZSA9PSBudWxsKSB7IC8vIGdldHRlcgoJCXJldHVybiBtb21lbnQuZHVyYXRpb24oewoJCQlob3VyczogdGhpcy5ob3VycygpLAoJCQltaW51dGVzOiB0aGlzLm1pbnV0ZXMoKSwKCQkJc2Vjb25kczogdGhpcy5zZWNvbmRzKCksCgkJCW1pbGxpc2Vjb25kczogdGhpcy5taWxsaXNlY29uZHMoKQoJCX0pOwoJfQoJZWxzZSB7IC8vIHNldHRlcgoKCQl0aGlzLl9hbWJpZ1RpbWUgPSBmYWxzZTsgLy8gbWFyayB0aGF0IHRoZSBtb21lbnQgbm93IGhhcyBhIHRpbWUKCgkJaWYgKCFtb21lbnQuaXNEdXJhdGlvbih0aW1lKSAmJiAhbW9tZW50LmlzTW9tZW50KHRpbWUpKSB7CgkJCXRpbWUgPSBtb21lbnQuZHVyYXRpb24odGltZSk7CgkJfQoKCQkvLyBUaGUgZGF5IHZhbHVlIHNob3VsZCBjYXVzZSBvdmVyZmxvdyAoc28gMjQgaG91cnMgYmVjb21lcyAwMDowMDowMCBvZiBuZXh0IGRheSkuCgkJLy8gT25seSBmb3IgRHVyYXRpb24gdGltZXMsIG5vdCBNb21lbnQgdGltZXMuCgkJdmFyIGRheUhvdXJzID0gMDsKCQlpZiAobW9tZW50LmlzRHVyYXRpb24odGltZSkpIHsKCQkJZGF5SG91cnMgPSBNYXRoLmZsb29yKHRpbWUuYXNEYXlzKCkpICogMjQ7CgkJfQoKCQkvLyBXZSBuZWVkIHRvIHNldCB0aGUgaW5kaXZpZHVhbCBmaWVsZHMuCgkJLy8gQ2FuJ3QgdXNlIHN0YXJ0T2YoJ2RheScpIHRoZW4gYWRkIGR1cmF0aW9uLiBJbiBjYXNlIG9mIERTVCBhdCBzdGFydCBvZiBkYXkuCgkJcmV0dXJuIHRoaXMuaG91cnMoZGF5SG91cnMgKyB0aW1lLmhvdXJzKCkpCgkJCS5taW51dGVzKHRpbWUubWludXRlcygpKQoJCQkuc2Vjb25kcyh0aW1lLnNlY29uZHMoKSkKCQkJLm1pbGxpc2Vjb25kcyh0aW1lLm1pbGxpc2Vjb25kcygpKTsKCX0KfTsKCi8vIENvbnZlcnRzIHRoZSBtb21lbnQgdG8gVVRDLCBzdHJpcHBpbmcgb3V0IGl0cyB0aW1lLW9mLWRheSBhbmQgdGltZXpvbmUgb2Zmc2V0LAovLyBidXQgcHJlc2VydmluZyBpdHMgWU1ELiBBIG1vbWVudCB3aXRoIGEgc3RyaXBwZWQgdGltZSB3aWxsIGRpc3BsYXkgbm8gdGltZQovLyBub3IgdGltZXpvbmUgb2Zmc2V0IHdoZW4gLmZvcm1hdCgpIGlzIGNhbGxlZC4KbmV3TW9tZW50UHJvdG8uc3RyaXBUaW1lID0gZnVuY3Rpb24oKSB7Cgl2YXIgYTsKCglpZiAoIXRoaXMuX2FtYmlnVGltZSkgewoKCQkvLyBnZXQgdGhlIHZhbHVlcyBiZWZvcmUgYW55IGNvbnZlcnNpb24gaGFwcGVucwoJCWEgPSB0aGlzLnRvQXJyYXkoKTsgLy8gYXJyYXkgb2YgeS9tL2QvaC9tL3MvbXMKCgkJLy8gVE9ETzogdXNlIGtlZXBMb2NhbFRpbWUgaW4gdGhlIGZ1dHVyZQoJCXRoaXMudXRjKCk7IC8vIHNldCB0aGUgaW50ZXJuYWwgVVRDIGZsYWcgKHdpbGwgY2xlYXIgdGhlIGFtYmlnIGZsYWdzKQoJCXNldFVUQ1ZhbHVlcyh0aGlzLCBhLnNsaWNlKDAsIDMpKTsgLy8gc2V0IHRoZSB5ZWFyL21vbnRoL2RhdGUuIHRpbWUgd2lsbCBiZSB6ZXJvCgoJCS8vIE1hcmsgdGhlIHRpbWUgYXMgYW1iaWd1b3VzLiBUaGlzIG5lZWRzIHRvIGhhcHBlbiBhZnRlciB0aGUgLnV0YygpIGNhbGwsIHdoaWNoIG1pZ2h0IGNhbGwgLnV0Y09mZnNldCgpLAoJCS8vIHdoaWNoIGNsZWFycyBhbGwgYW1iaWcgZmxhZ3MuIFNhbWUgd2l0aCBzZXRVVENWYWx1ZXMgd2l0aCBtb21lbnQtdGltZXpvbmUuCgkJdGhpcy5fYW1iaWdUaW1lID0gdHJ1ZTsKCQl0aGlzLl9hbWJpZ1pvbmUgPSB0cnVlOyAvLyBpZiBhbWJpZ3VvdXMgdGltZSwgYWxzbyBhbWJpZ3VvdXMgdGltZXpvbmUgb2Zmc2V0Cgl9CgoJcmV0dXJuIHRoaXM7IC8vIGZvciBjaGFpbmluZwp9OwoKLy8gUmV0dXJucyBpZiB0aGUgbW9tZW50IGhhcyBhIG5vbi1hbWJpZ3VvdXMgdGltZSAoYm9vbGVhbikKbmV3TW9tZW50UHJvdG8uaGFzVGltZSA9IGZ1bmN0aW9uKCkgewoJcmV0dXJuICF0aGlzLl9hbWJpZ1RpbWU7Cn07CgoKLy8gVGltZXpvbmUKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gQ29udmVydHMgdGhlIG1vbWVudCB0byBVVEMsIHN0cmlwcGluZyBvdXQgaXRzIHRpbWV6b25lIG9mZnNldCwgYnV0IHByZXNlcnZpbmcgaXRzCi8vIFlNRCBhbmQgdGltZS1vZi1kYXkuIEEgbW9tZW50IHdpdGggYSBzdHJpcHBlZCB0aW1lem9uZSBvZmZzZXQgd2lsbCBkaXNwbGF5IG5vCi8vIHRpbWV6b25lIG9mZnNldCB3aGVuIC5mb3JtYXQoKSBpcyBjYWxsZWQuCi8vIFRPRE86IGxvb2sgaW50byBNb21lbnQncyBrZWVwTG9jYWxUaW1lIGZ1bmN0aW9uYWxpdHkKbmV3TW9tZW50UHJvdG8uc3RyaXBab25lID0gZnVuY3Rpb24oKSB7Cgl2YXIgYSwgd2FzQW1iaWdUaW1lOwoKCWlmICghdGhpcy5fYW1iaWdab25lKSB7CgoJCS8vIGdldCB0aGUgdmFsdWVzIGJlZm9yZSBhbnkgY29udmVyc2lvbiBoYXBwZW5zCgkJYSA9IHRoaXMudG9BcnJheSgpOyAvLyBhcnJheSBvZiB5L20vZC9oL20vcy9tcwoJCXdhc0FtYmlnVGltZSA9IHRoaXMuX2FtYmlnVGltZTsKCgkJdGhpcy51dGMoKTsgLy8gc2V0IHRoZSBpbnRlcm5hbCBVVEMgZmxhZyAobWlnaHQgY2xlYXIgdGhlIGFtYmlnIGZsYWdzLCBkZXBlbmRpbmcgb24gTW9tZW50IGludGVybmFscykKCQlzZXRVVENWYWx1ZXModGhpcywgYSk7IC8vIHdpbGwgc2V0IHRoZSB5ZWFyL21vbnRoL2RhdGUvaG91cnMvbWludXRlcy9zZWNvbmRzL21zCgoJCS8vIHRoZSBhYm92ZSBjYWxsIHRvIC51dGMoKS8udXRjT2Zmc2V0KCkgdW5mb3J0dW5hdGVseSBtaWdodCBjbGVhciB0aGUgYW1iaWcgZmxhZ3MsIHNvIHJlc3RvcmUKCQl0aGlzLl9hbWJpZ1RpbWUgPSB3YXNBbWJpZ1RpbWUgfHwgZmFsc2U7CgoJCS8vIE1hcmsgdGhlIHpvbmUgYXMgYW1iaWd1b3VzLiBUaGlzIG5lZWRzIHRvIGhhcHBlbiBhZnRlciB0aGUgLnV0YygpIGNhbGwsIHdoaWNoIG1pZ2h0IGNhbGwgLnV0Y09mZnNldCgpLAoJCS8vIHdoaWNoIGNsZWFycyB0aGUgYW1iaWcgZmxhZ3MuIFNhbWUgd2l0aCBzZXRVVENWYWx1ZXMgd2l0aCBtb21lbnQtdGltZXpvbmUuCgkJdGhpcy5fYW1iaWdab25lID0gdHJ1ZTsKCX0KCglyZXR1cm4gdGhpczsgLy8gZm9yIGNoYWluaW5nCn07CgovLyBSZXR1cm5zIG9mIHRoZSBtb21lbnQgaGFzIGEgbm9uLWFtYmlndW91cyB0aW1lem9uZSBvZmZzZXQgKGJvb2xlYW4pCm5ld01vbWVudFByb3RvLmhhc1pvbmUgPSBmdW5jdGlvbigpIHsKCXJldHVybiAhdGhpcy5fYW1iaWdab25lOwp9OwoKCi8vIHRoaXMgbWV0aG9kIGltcGxpY2l0bHkgbWFya3MgYSB6b25lCm5ld01vbWVudFByb3RvLmxvY2FsID0gZnVuY3Rpb24oKSB7Cgl2YXIgYSA9IHRoaXMudG9BcnJheSgpOyAvLyB5ZWFyLG1vbnRoLGRhdGUsaG91cnMsbWludXRlcyxzZWNvbmRzLG1zIGFzIGFuIGFycmF5Cgl2YXIgd2FzQW1iaWdab25lID0gdGhpcy5fYW1iaWdab25lOwoKCW9sZE1vbWVudFByb3RvLmxvY2FsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CgoJLy8gZW5zdXJlIG5vbi1hbWJpZ3VvdXMKCS8vIHRoaXMgcHJvYmFibHkgYWxyZWFkeSBoYXBwZW5lZCB2aWEgbG9jYWwoKSAtPiB1dGNPZmZzZXQoKSwgYnV0IGRvbid0IHJlbHkgb24gTW9tZW50J3MgaW50ZXJuYWxzCgl0aGlzLl9hbWJpZ1RpbWUgPSBmYWxzZTsKCXRoaXMuX2FtYmlnWm9uZSA9IGZhbHNlOwoKCWlmICh3YXNBbWJpZ1pvbmUpIHsKCQkvLyBJZiB0aGUgbW9tZW50IHdhcyBhbWJpZ3VvdXNseSB6b25lZCwgdGhlIGRhdGUgZmllbGRzIHdlcmUgc3RvcmVkIGFzIFVUQy4KCQkvLyBXZSB3YW50IHRvIHByZXNlcnZlIHRoZXNlLCBidXQgaW4gbG9jYWwgdGltZS4KCQkvLyBUT0RPOiBsb29rIGludG8gTW9tZW50J3Mga2VlcExvY2FsVGltZSBmdW5jdGlvbmFsaXR5CgkJc2V0TG9jYWxWYWx1ZXModGhpcywgYSk7Cgl9CgoJcmV0dXJuIHRoaXM7IC8vIGZvciBjaGFpbmluZwp9OwoKCi8vIGltcGxpY2l0bHkgbWFya3MgYSB6b25lCm5ld01vbWVudFByb3RvLnV0YyA9IGZ1bmN0aW9uKCkgewoJb2xkTW9tZW50UHJvdG8udXRjLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CgoJLy8gZW5zdXJlIG5vbi1hbWJpZ3VvdXMKCS8vIHRoaXMgcHJvYmFibHkgYWxyZWFkeSBoYXBwZW5lZCB2aWEgdXRjKCkgLT4gdXRjT2Zmc2V0KCksIGJ1dCBkb24ndCByZWx5IG9uIE1vbWVudCdzIGludGVybmFscwoJdGhpcy5fYW1iaWdUaW1lID0gZmFsc2U7Cgl0aGlzLl9hbWJpZ1pvbmUgPSBmYWxzZTsKCglyZXR1cm4gdGhpczsKfTsKCgovLyBtZXRob2RzIGZvciBhcmJpdHJhcmlseSBtYW5pcHVsYXRpbmcgdGltZXpvbmUgb2Zmc2V0LgovLyBzaG91bGQgY2xlYXIgdGltZS96b25lIGFtYmlndWl0eSB3aGVuIGNhbGxlZC4KJC5lYWNoKFsKCSd6b25lJywgLy8gb25seSBpbiBtb21lbnQtcHJlLTIuOS4gZGVwcmVjYXRlZCBhZnRlcndhcmRzCgkndXRjT2Zmc2V0JwpdLCBmdW5jdGlvbihpLCBuYW1lKSB7CglpZiAob2xkTW9tZW50UHJvdG9bbmFtZV0pIHsgLy8gb3JpZ2luYWwgbWV0aG9kIGV4aXN0cz8KCgkJLy8gdGhpcyBtZXRob2QgaW1wbGljaXRseSBtYXJrcyBhIHpvbmUgKHdpbGwgcHJvYmFibHkgZ2V0IGNhbGxlZCB1cG9uIC51dGMoKSBhbmQgLmxvY2FsKCkpCgkJbmV3TW9tZW50UHJvdG9bbmFtZV0gPSBmdW5jdGlvbih0em8pIHsKCgkJCWlmICh0em8gIT0gbnVsbCkgeyAvLyBzZXR0ZXIKCQkJCS8vIHRoZXNlIGFzc2lnbm1lbnRzIG5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgdGhlIG9yaWdpbmFsIHpvbmUgbWV0aG9kIGlzIGNhbGxlZC4KCQkJCS8vIEkgZm9yZ2V0IHdoeSwgc29tZXRoaW5nIHRvIGRvIHdpdGggYSBicm93c2VyIGNyYXNoLgoJCQkJdGhpcy5fYW1iaWdUaW1lID0gZmFsc2U7CgkJCQl0aGlzLl9hbWJpZ1pvbmUgPSBmYWxzZTsKCQkJfQoKCQkJcmV0dXJuIG9sZE1vbWVudFByb3RvW25hbWVdLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CgkJfTsKCX0KfSk7CgoKLy8gRm9ybWF0dGluZwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpuZXdNb21lbnRQcm90by5mb3JtYXQgPSBmdW5jdGlvbigpIHsKCWlmICh0aGlzLl9mdWxsQ2FsZW5kYXIgJiYgYXJndW1lbnRzWzBdKSB7IC8vIGFuIGVuaGFuY2VkIG1vbWVudD8gYW5kIGEgZm9ybWF0IHN0cmluZyBwcm92aWRlZD8KCQlyZXR1cm4gZm9ybWF0RGF0ZSh0aGlzLCBhcmd1bWVudHNbMF0pOyAvLyBvdXIgZXh0ZW5kZWQgZm9ybWF0dGluZwoJfQoJaWYgKHRoaXMuX2FtYmlnVGltZSkgewoJCXJldHVybiBvbGRNb21lbnRGb3JtYXQodGhpcywgJ1lZWVktTU0tREQnKTsKCX0KCWlmICh0aGlzLl9hbWJpZ1pvbmUpIHsKCQlyZXR1cm4gb2xkTW9tZW50Rm9ybWF0KHRoaXMsICdZWVlZLU1NLUREW1RdSEg6bW06c3MnKTsKCX0KCXJldHVybiBvbGRNb21lbnRQcm90by5mb3JtYXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKfTsKCm5ld01vbWVudFByb3RvLnRvSVNPU3RyaW5nID0gZnVuY3Rpb24oKSB7CglpZiAodGhpcy5fYW1iaWdUaW1lKSB7CgkJcmV0dXJuIG9sZE1vbWVudEZvcm1hdCh0aGlzLCAnWVlZWS1NTS1ERCcpOwoJfQoJaWYgKHRoaXMuX2FtYmlnWm9uZSkgewoJCXJldHVybiBvbGRNb21lbnRGb3JtYXQodGhpcywgJ1lZWVktTU0tRERbVF1ISDptbTpzcycpOwoJfQoJcmV0dXJuIG9sZE1vbWVudFByb3RvLnRvSVNPU3RyaW5nLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Cn07CgoKLy8gUXVlcnlpbmcKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gSXMgdGhlIG1vbWVudCB3aXRoaW4gdGhlIHNwZWNpZmllZCByYW5nZT8gYGVuZGAgaXMgZXhjbHVzaXZlLgovLyBGWUksIHRoaXMgbWV0aG9kIGlzIG5vdCBhIHN0YW5kYXJkIE1vbWVudCBtZXRob2QsIHNvIGFsd2F5cyBkbyBvdXIgZW5oYW5jZWQgbG9naWMuCm5ld01vbWVudFByb3RvLmlzV2l0aGluID0gZnVuY3Rpb24oc3RhcnQsIGVuZCkgewoJdmFyIGEgPSBjb21tb25seUFtYmlndWF0ZShbIHRoaXMsIHN0YXJ0LCBlbmQgXSk7CglyZXR1cm4gYVswXSA+PSBhWzFdICYmIGFbMF0gPCBhWzJdOwp9OwoKLy8gV2hlbiBpc1NhbWUgaXMgY2FsbGVkIHdpdGggdW5pdHMsIHRpbWV6b25lIGFtYmlndWl0eSBpcyBub3JtYWxpemVkIGJlZm9yZSB0aGUgY29tcGFyaXNvbiBoYXBwZW5zLgovLyBJZiBubyB1bml0cyBzcGVjaWZpZWQsIHRoZSB0d28gbW9tZW50cyBtdXN0IGJlIGlkZW50aWNhbGx5IHRoZSBzYW1lLCB3aXRoIG1hdGNoaW5nIGFtYmlnIGZsYWdzLgpuZXdNb21lbnRQcm90by5pc1NhbWUgPSBmdW5jdGlvbihpbnB1dCwgdW5pdHMpIHsKCXZhciBhOwoKCS8vIG9ubHkgZG8gY3VzdG9tIGxvZ2ljIGlmIHRoaXMgaXMgYW4gZW5oYW5jZWQgbW9tZW50CglpZiAoIXRoaXMuX2Z1bGxDYWxlbmRhcikgewoJCXJldHVybiBvbGRNb21lbnRQcm90by5pc1NhbWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKCX0KCglpZiAodW5pdHMpIHsKCQlhID0gY29tbW9ubHlBbWJpZ3VhdGUoWyB0aGlzLCBpbnB1dCBdLCB0cnVlKTsgLy8gbm9ybWFsaXplIHRpbWV6b25lcyBidXQgZG9uJ3QgZXJhc2UgdGltZXMKCQlyZXR1cm4gb2xkTW9tZW50UHJvdG8uaXNTYW1lLmNhbGwoYVswXSwgYVsxXSwgdW5pdHMpOwoJfQoJZWxzZSB7CgkJaW5wdXQgPSBmYy5tb21lbnQucGFyc2Vab25lKGlucHV0KTsgLy8gbm9ybWFsaXplIGlucHV0CgkJcmV0dXJuIG9sZE1vbWVudFByb3RvLmlzU2FtZS5jYWxsKHRoaXMsIGlucHV0KSAmJgoJCQlCb29sZWFuKHRoaXMuX2FtYmlnVGltZSkgPT09IEJvb2xlYW4oaW5wdXQuX2FtYmlnVGltZSkgJiYKCQkJQm9vbGVhbih0aGlzLl9hbWJpZ1pvbmUpID09PSBCb29sZWFuKGlucHV0Ll9hbWJpZ1pvbmUpOwoJfQp9OwoKLy8gTWFrZSB0aGVzZSBxdWVyeSBtZXRob2RzIHdvcmsgd2l0aCBhbWJpZ3VvdXMgbW9tZW50cwokLmVhY2goWwoJJ2lzQmVmb3JlJywKCSdpc0FmdGVyJwpdLCBmdW5jdGlvbihpLCBtZXRob2ROYW1lKSB7CgluZXdNb21lbnRQcm90b1ttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKGlucHV0LCB1bml0cykgewoJCXZhciBhOwoKCQkvLyBvbmx5IGRvIGN1c3RvbSBsb2dpYyBpZiB0aGlzIGlzIGFuIGVuaGFuY2VkIG1vbWVudAoJCWlmICghdGhpcy5fZnVsbENhbGVuZGFyKSB7CgkJCXJldHVybiBvbGRNb21lbnRQcm90b1ttZXRob2ROYW1lXS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwoJCX0KCgkJYSA9IGNvbW1vbmx5QW1iaWd1YXRlKFsgdGhpcywgaW5wdXQgXSk7CgkJcmV0dXJuIG9sZE1vbWVudFByb3RvW21ldGhvZE5hbWVdLmNhbGwoYVswXSwgYVsxXSwgdW5pdHMpOwoJfTsKfSk7CgoKLy8gTWlzYyBJbnRlcm5hbHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gZ2l2ZW4gYW4gYXJyYXkgb2YgbW9tZW50LWxpa2UgaW5wdXRzLCByZXR1cm4gYSBwYXJhbGxlbCBhcnJheSB3LyBtb21lbnRzIHNpbWlsYXJseSBhbWJpZ3VhdGVkLgovLyBmb3IgZXhhbXBsZSwgb2Ygb25lIG1vbWVudCBoYXMgYW1iaWcgdGltZSwgYnV0IG5vdCBvdGhlcnMsIGFsbCBtb21lbnRzIHdpbGwgaGF2ZSB0aGVpciB0aW1lIHN0cmlwcGVkLgovLyBzZXQgYHByZXNlcnZlVGltZWAgdG8gYHRydWVgIHRvIGtlZXAgdGltZXMsIGJ1dCBvbmx5IG5vcm1hbGl6ZSB6b25lIGFtYmlndWl0eS4KLy8gcmV0dXJucyB0aGUgb3JpZ2luYWwgbW9tZW50cyBpZiBubyBtb2RpZmljYXRpb25zIGFyZSBuZWNlc3NhcnkuCmZ1bmN0aW9uIGNvbW1vbmx5QW1iaWd1YXRlKGlucHV0cywgcHJlc2VydmVUaW1lKSB7Cgl2YXIgYW55QW1iaWdUaW1lID0gZmFsc2U7Cgl2YXIgYW55QW1iaWdab25lID0gZmFsc2U7Cgl2YXIgbGVuID0gaW5wdXRzLmxlbmd0aDsKCXZhciBtb21zID0gW107Cgl2YXIgaSwgbW9tOwoKCS8vIHBhcnNlIGlucHV0cyBpbnRvIHJlYWwgbW9tZW50cyBhbmQgcXVlcnkgdGhlaXIgYW1iaWcgZmxhZ3MKCWZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewoJCW1vbSA9IGlucHV0c1tpXTsKCQlpZiAoIW1vbWVudC5pc01vbWVudChtb20pKSB7CgkJCW1vbSA9IGZjLm1vbWVudC5wYXJzZVpvbmUobW9tKTsKCQl9CgkJYW55QW1iaWdUaW1lID0gYW55QW1iaWdUaW1lIHx8IG1vbS5fYW1iaWdUaW1lOwoJCWFueUFtYmlnWm9uZSA9IGFueUFtYmlnWm9uZSB8fCBtb20uX2FtYmlnWm9uZTsKCQltb21zLnB1c2gobW9tKTsKCX0KCgkvLyBzdHJpcCBlYWNoIG1vbWVudCBkb3duIHRvIGxvd2VzdCBjb21tb24gYW1iaWd1aXR5CgkvLyB1c2UgY2xvbmVzIHRvIGF2b2lkIG1vZGlmeWluZyB0aGUgb3JpZ2luYWwgbW9tZW50cwoJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CgkJbW9tID0gbW9tc1tpXTsKCQlpZiAoIXByZXNlcnZlVGltZSAmJiBhbnlBbWJpZ1RpbWUgJiYgIW1vbS5fYW1iaWdUaW1lKSB7CgkJCW1vbXNbaV0gPSBtb20uY2xvbmUoKS5zdHJpcFRpbWUoKTsKCQl9CgkJZWxzZSBpZiAoYW55QW1iaWdab25lICYmICFtb20uX2FtYmlnWm9uZSkgewoJCQltb21zW2ldID0gbW9tLmNsb25lKCkuc3RyaXBab25lKCk7CgkJfQoJfQoKCXJldHVybiBtb21zOwp9CgovLyBUcmFuc2ZlcnMgYWxsIHRoZSBmbGFncyByZWxhdGVkIHRvIGFtYmlndW91cyB0aW1lL3pvbmUgZnJvbSB0aGUgYHNyY2AgbW9tZW50IHRvIHRoZSBgZGVzdGAgbW9tZW50Ci8vIFRPRE86IGxvb2sgaW50byBtb21lbnQubW9tZW50UHJvcGVydGllcyBmb3IgdGhpcy4KZnVuY3Rpb24gdHJhbnNmZXJBbWJpZ3Moc3JjLCBkZXN0KSB7CglpZiAoc3JjLl9hbWJpZ1RpbWUpIHsKCQlkZXN0Ll9hbWJpZ1RpbWUgPSB0cnVlOwoJfQoJZWxzZSBpZiAoZGVzdC5fYW1iaWdUaW1lKSB7CgkJZGVzdC5fYW1iaWdUaW1lID0gZmFsc2U7Cgl9CgoJaWYgKHNyYy5fYW1iaWdab25lKSB7CgkJZGVzdC5fYW1iaWdab25lID0gdHJ1ZTsKCX0KCWVsc2UgaWYgKGRlc3QuX2FtYmlnWm9uZSkgewoJCWRlc3QuX2FtYmlnWm9uZSA9IGZhbHNlOwoJfQp9CgoKLy8gU2V0cyB0aGUgeWVhci9tb250aC9kYXRlL2V0YyB2YWx1ZXMgb2YgdGhlIG1vbWVudCBmcm9tIHRoZSBnaXZlbiBhcnJheS4KLy8gSW5lZmZpY2llbnQgYmVjYXVzZSBpdCBjYWxscyBlYWNoIGluZGl2aWR1YWwgc2V0dGVyLgpmdW5jdGlvbiBzZXRNb21lbnRWYWx1ZXMobW9tLCBhKSB7Cgltb20ueWVhcihhWzBdIHx8IDApCgkJLm1vbnRoKGFbMV0gfHwgMCkKCQkuZGF0ZShhWzJdIHx8IDApCgkJLmhvdXJzKGFbM10gfHwgMCkKCQkubWludXRlcyhhWzRdIHx8IDApCgkJLnNlY29uZHMoYVs1XSB8fCAwKQoJCS5taWxsaXNlY29uZHMoYVs2XSB8fCAwKTsKfQoKLy8gQ2FuIHdlIHNldCB0aGUgbW9tZW50J3MgaW50ZXJuYWwgZGF0ZSBkaXJlY3RseT8KYWxsb3dWYWx1ZU9wdGltaXphdGlvbiA9ICdfZCcgaW4gbW9tZW50KCkgJiYgJ3VwZGF0ZU9mZnNldCcgaW4gbW9tZW50OwoKLy8gVXRpbGl0eSBmdW5jdGlvbi4gQWNjZXB0cyBhIG1vbWVudCBhbmQgYW4gYXJyYXkgb2YgdGhlIFVUQyB5ZWFyL21vbnRoL2RhdGUvZXRjIHZhbHVlcyB0byBzZXQuCi8vIEFzc3VtZXMgdGhlIGdpdmVuIG1vbWVudCBpcyBhbHJlYWR5IGluIFVUQyBtb2RlLgpzZXRVVENWYWx1ZXMgPSBhbGxvd1ZhbHVlT3B0aW1pemF0aW9uID8gZnVuY3Rpb24obW9tLCBhKSB7CgkvLyBzaW1sYXRlIHdoYXQgbW9tZW50J3MgYWNjZXNzb3JzIGRvCgltb20uX2Quc2V0VGltZShEYXRlLlVUQy5hcHBseShEYXRlLCBhKSk7Cgltb21lbnQudXBkYXRlT2Zmc2V0KG1vbSwgZmFsc2UpOyAvLyBrZWVwVGltZT1mYWxzZQp9IDogc2V0TW9tZW50VmFsdWVzOwoKLy8gVXRpbGl0eSBmdW5jdGlvbi4gQWNjZXB0cyBhIG1vbWVudCBhbmQgYW4gYXJyYXkgb2YgdGhlIGxvY2FsIHllYXIvbW9udGgvZGF0ZS9ldGMgdmFsdWVzIHRvIHNldC4KLy8gQXNzdW1lcyB0aGUgZ2l2ZW4gbW9tZW50IGlzIGFscmVhZHkgaW4gbG9jYWwgbW9kZS4Kc2V0TG9jYWxWYWx1ZXMgPSBhbGxvd1ZhbHVlT3B0aW1pemF0aW9uID8gZnVuY3Rpb24obW9tLCBhKSB7CgkvLyBzaW1sYXRlIHdoYXQgbW9tZW50J3MgYWNjZXNzb3JzIGRvCgltb20uX2Quc2V0VGltZSgrbmV3IERhdGUoIC8vIEZZSSwgdGhlcmUgaXMgbm93IHdheSB0byBhcHBseSBhbiBhcnJheSBvZiBhcmdzIHRvIGEgY29uc3RydWN0b3IKCQlhWzBdIHx8IDAsCgkJYVsxXSB8fCAwLAoJCWFbMl0gfHwgMCwKCQlhWzNdIHx8IDAsCgkJYVs0XSB8fCAwLAoJCWFbNV0gfHwgMCwKCQlhWzZdIHx8IDAKCSkpOwoJbW9tZW50LnVwZGF0ZU9mZnNldChtb20sIGZhbHNlKTsgLy8ga2VlcFRpbWU9ZmFsc2UKfSA6IHNldE1vbWVudFZhbHVlczsKCjs7CgovLyBTaW5nbGUgRGF0ZSBGb3JtYXR0aW5nCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBjYWxsIHRoaXMgaWYgeW91IHdhbnQgTW9tZW50J3Mgb3JpZ2luYWwgZm9ybWF0IG1ldGhvZCB0byBiZSB1c2VkCmZ1bmN0aW9uIG9sZE1vbWVudEZvcm1hdChtb20sIGZvcm1hdFN0cikgewoJcmV0dXJuIG9sZE1vbWVudFByb3RvLmZvcm1hdC5jYWxsKG1vbSwgZm9ybWF0U3RyKTsgLy8gb2xkTW9tZW50UHJvdG8gZGVmaW5lZCBpbiBtb21lbnQtZXh0LmpzCn0KCgovLyBGb3JtYXRzIGBkYXRlYCB3aXRoIGEgTW9tZW50IGZvcm1hdHRpbmcgc3RyaW5nLCBidXQgYWxsb3cgb3VyIG5vbi16ZXJvIGFyZWFzIGFuZAovLyBhZGRpdGlvbmFsIHRva2VuLgpmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUsIGZvcm1hdFN0cikgewoJcmV0dXJuIGZvcm1hdERhdGVXaXRoQ2h1bmtzKGRhdGUsIGdldEZvcm1hdFN0cmluZ0NodW5rcyhmb3JtYXRTdHIpKTsKfQoKCmZ1bmN0aW9uIGZvcm1hdERhdGVXaXRoQ2h1bmtzKGRhdGUsIGNodW5rcykgewoJdmFyIHMgPSAnJzsKCXZhciBpOwoKCWZvciAoaT0wOyBpPGNodW5rcy5sZW5ndGg7IGkrKykgewoJCXMgKz0gZm9ybWF0RGF0ZVdpdGhDaHVuayhkYXRlLCBjaHVua3NbaV0pOwoJfQoKCXJldHVybiBzOwp9CgoKLy8gYWRkaXRpb24gZm9ybWF0dGluZyB0b2tlbnMgd2Ugd2FudCByZWNvZ25pemVkCnZhciB0b2tlbk92ZXJyaWRlcyA9IHsKCXQ6IGZ1bmN0aW9uKGRhdGUpIHsgLy8gImEiIG9yICJwIgoJCXJldHVybiBvbGRNb21lbnRGb3JtYXQoZGF0ZSwgJ2EnKS5jaGFyQXQoMCk7Cgl9LAoJVDogZnVuY3Rpb24oZGF0ZSkgeyAvLyAiQSIgb3IgIlAiCgkJcmV0dXJuIG9sZE1vbWVudEZvcm1hdChkYXRlLCAnQScpLmNoYXJBdCgwKTsKCX0KfTsKCgpmdW5jdGlvbiBmb3JtYXREYXRlV2l0aENodW5rKGRhdGUsIGNodW5rKSB7Cgl2YXIgdG9rZW47Cgl2YXIgbWF5YmVTdHI7CgoJaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHsgLy8gYSBsaXRlcmFsIHN0cmluZwoJCXJldHVybiBjaHVuazsKCX0KCWVsc2UgaWYgKCh0b2tlbiA9IGNodW5rLnRva2VuKSkgeyAvLyBhIHRva2VuLCBsaWtlICJZWVlZIgoJCWlmICh0b2tlbk92ZXJyaWRlc1t0b2tlbl0pIHsKCQkJcmV0dXJuIHRva2VuT3ZlcnJpZGVzW3Rva2VuXShkYXRlKTsgLy8gdXNlIG91ciBjdXN0b20gdG9rZW4KCQl9CgkJcmV0dXJuIG9sZE1vbWVudEZvcm1hdChkYXRlLCB0b2tlbik7Cgl9CgllbHNlIGlmIChjaHVuay5tYXliZSkgeyAvLyBhIGdyb3VwaW5nIG9mIG90aGVyIGNodW5rcyB0aGF0IG11c3QgYmUgbm9uLXplcm8KCQltYXliZVN0ciA9IGZvcm1hdERhdGVXaXRoQ2h1bmtzKGRhdGUsIGNodW5rLm1heWJlKTsKCQlpZiAobWF5YmVTdHIubWF0Y2goL1sxLTldLykpIHsKCQkJcmV0dXJuIG1heWJlU3RyOwoJCX0KCX0KCglyZXR1cm4gJyc7Cn0KCgovLyBEYXRlIFJhbmdlIEZvcm1hdHRpbmcKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBUT0RPOiBtYWtlIGl0IHdvcmsgd2l0aCB0aW1lem9uZSBvZmZzZXQKCi8vIFVzaW5nIGEgZm9ybWF0dGluZyBzdHJpbmcgbWVhbnQgZm9yIGEgc2luZ2xlIGRhdGUsIGdlbmVyYXRlIGEgcmFuZ2Ugc3RyaW5nLCBsaWtlCi8vICJTZXAgMiAtIDkgMjAxMyIsIHRoYXQgaW50ZWxsaWdlbnRseSBpbnNlcnRzIGEgc2VwYXJhdG9yIHdoZXJlIHRoZSBkYXRlcyBkaWZmZXIuCi8vIElmIHRoZSBkYXRlcyBhcmUgdGhlIHNhbWUgYXMgZmFyIGFzIHRoZSBmb3JtYXQgc3RyaW5nIGlzIGNvbmNlcm5lZCwganVzdCByZXR1cm4gYSBzaW5nbGUKLy8gcmVuZGVyaW5nIG9mIG9uZSBkYXRlLCB3aXRob3V0IGFueSBzZXBhcmF0b3IuCmZ1bmN0aW9uIGZvcm1hdFJhbmdlKGRhdGUxLCBkYXRlMiwgZm9ybWF0U3RyLCBzZXBhcmF0b3IsIGlzUlRMKSB7Cgl2YXIgbG9jYWxlRGF0YTsKCglkYXRlMSA9IGZjLm1vbWVudC5wYXJzZVpvbmUoZGF0ZTEpOwoJZGF0ZTIgPSBmYy5tb21lbnQucGFyc2Vab25lKGRhdGUyKTsKCglsb2NhbGVEYXRhID0gKGRhdGUxLmxvY2FsZURhdGEgfHwgZGF0ZTEubGFuZykuY2FsbChkYXRlMSk7IC8vIHdvcmtzIHdpdGggbW9tZW50LXByZS0yLjgKCgkvLyBFeHBhbmQgbG9jYWxpemVkIGZvcm1hdCBzdHJpbmdzLCBsaWtlICJMTCIgLT4gIk1NTU0gRCBZWVlZIgoJZm9ybWF0U3RyID0gbG9jYWxlRGF0YS5sb25nRGF0ZUZvcm1hdChmb3JtYXRTdHIpIHx8IGZvcm1hdFN0cjsKCS8vIEJUVywgdGhpcyBpcyBub3QgaW1wb3J0YW50IGZvciBgZm9ybWF0RGF0ZWAgYmVjYXVzZSBpdCBpcyBpbXBvc3NpYmxlIHRvIHB1dCBjdXN0b20gdG9rZW5zCgkvLyBvciBub24temVybyBhcmVhcyBpbiBNb21lbnQncyBsb2NhbGl6ZWQgZm9ybWF0IHN0cmluZ3MuCgoJc2VwYXJhdG9yID0gc2VwYXJhdG9yIHx8ICcgLSAnOwoKCXJldHVybiBmb3JtYXRSYW5nZVdpdGhDaHVua3MoCgkJZGF0ZTEsCgkJZGF0ZTIsCgkJZ2V0Rm9ybWF0U3RyaW5nQ2h1bmtzKGZvcm1hdFN0ciksCgkJc2VwYXJhdG9yLAoJCWlzUlRMCgkpOwp9CmZjLmZvcm1hdFJhbmdlID0gZm9ybWF0UmFuZ2U7IC8vIGV4cG9zZQoKCmZ1bmN0aW9uIGZvcm1hdFJhbmdlV2l0aENodW5rcyhkYXRlMSwgZGF0ZTIsIGNodW5rcywgc2VwYXJhdG9yLCBpc1JUTCkgewoJdmFyIGNodW5rU3RyOyAvLyB0aGUgcmVuZGVyaW5nIG9mIHRoZSBjaHVuawoJdmFyIGxlZnRJOwoJdmFyIGxlZnRTdHIgPSAnJzsKCXZhciByaWdodEk7Cgl2YXIgcmlnaHRTdHIgPSAnJzsKCXZhciBtaWRkbGVJOwoJdmFyIG1pZGRsZVN0cjEgPSAnJzsKCXZhciBtaWRkbGVTdHIyID0gJyc7Cgl2YXIgbWlkZGxlU3RyID0gJyc7CgoJLy8gU3RhcnQgYXQgdGhlIGxlZnRtb3N0IHNpZGUgb2YgdGhlIGZvcm1hdHRpbmcgc3RyaW5nIGFuZCBjb250aW51ZSB1bnRpbCB5b3UgaGl0IGEgdG9rZW4KCS8vIHRoYXQgaXMgbm90IHRoZSBzYW1lIGJldHdlZW4gZGF0ZXMuCglmb3IgKGxlZnRJPTA7IGxlZnRJPGNodW5rcy5sZW5ndGg7IGxlZnRJKyspIHsKCQljaHVua1N0ciA9IGZvcm1hdFNpbWlsYXJDaHVuayhkYXRlMSwgZGF0ZTIsIGNodW5rc1tsZWZ0SV0pOwoJCWlmIChjaHVua1N0ciA9PT0gZmFsc2UpIHsKCQkJYnJlYWs7CgkJfQoJCWxlZnRTdHIgKz0gY2h1bmtTdHI7Cgl9CgoJLy8gU2ltaWxhcmx5LCBzdGFydCBhdCB0aGUgcmlnaHRtb3N0IHNpZGUgb2YgdGhlIGZvcm1hdHRpbmcgc3RyaW5nIGFuZCBtb3ZlIGxlZnQKCWZvciAocmlnaHRJPWNodW5rcy5sZW5ndGgtMTsgcmlnaHRJPmxlZnRJOyByaWdodEktLSkgewoJCWNodW5rU3RyID0gZm9ybWF0U2ltaWxhckNodW5rKGRhdGUxLCBkYXRlMiwgY2h1bmtzW3JpZ2h0SV0pOwoJCWlmIChjaHVua1N0ciA9PT0gZmFsc2UpIHsKCQkJYnJlYWs7CgkJfQoJCXJpZ2h0U3RyID0gY2h1bmtTdHIgKyByaWdodFN0cjsKCX0KCgkvLyBUaGUgYXJlYSBpbiB0aGUgbWlkZGxlIGlzIGRpZmZlcmVudCBmb3IgYm90aCBvZiB0aGUgZGF0ZXMuCgkvLyBDb2xsZWN0IHRoZW0gZGlzdGluY3RseSBzbyB3ZSBjYW4gamFtIHRoZW0gdG9nZXRoZXIgbGF0ZXIuCglmb3IgKG1pZGRsZUk9bGVmdEk7IG1pZGRsZUk8PXJpZ2h0STsgbWlkZGxlSSsrKSB7CgkJbWlkZGxlU3RyMSArPSBmb3JtYXREYXRlV2l0aENodW5rKGRhdGUxLCBjaHVua3NbbWlkZGxlSV0pOwoJCW1pZGRsZVN0cjIgKz0gZm9ybWF0RGF0ZVdpdGhDaHVuayhkYXRlMiwgY2h1bmtzW21pZGRsZUldKTsKCX0KCglpZiAobWlkZGxlU3RyMSB8fCBtaWRkbGVTdHIyKSB7CgkJaWYgKGlzUlRMKSB7CgkJCW1pZGRsZVN0ciA9IG1pZGRsZVN0cjIgKyBzZXBhcmF0b3IgKyBtaWRkbGVTdHIxOwoJCX0KCQllbHNlIHsKCQkJbWlkZGxlU3RyID0gbWlkZGxlU3RyMSArIHNlcGFyYXRvciArIG1pZGRsZVN0cjI7CgkJfQoJfQoKCXJldHVybiBsZWZ0U3RyICsgbWlkZGxlU3RyICsgcmlnaHRTdHI7Cn0KCgp2YXIgc2ltaWxhclVuaXRNYXAgPSB7CglZOiAneWVhcicsCglNOiAnbW9udGgnLAoJRDogJ2RheScsIC8vIGRheSBvZiBtb250aAoJZDogJ2RheScsIC8vIGRheSBvZiB3ZWVrCgkvLyBwcmV2ZW50cyBhIHNlcGFyYXRvciBiZXR3ZWVuIGFueXRoaW5nIHRpbWUtcmVsYXRlZC4uLgoJQTogJ3NlY29uZCcsIC8vIEFNL1BNCglhOiAnc2Vjb25kJywgLy8gYW0vcG0KCVQ6ICdzZWNvbmQnLCAvLyBBL1AKCXQ6ICdzZWNvbmQnLCAvLyBhL3AKCUg6ICdzZWNvbmQnLCAvLyBob3VyICgyNCkKCWg6ICdzZWNvbmQnLCAvLyBob3VyICgxMikKCW06ICdzZWNvbmQnLCAvLyBtaW51dGUKCXM6ICdzZWNvbmQnIC8vIHNlY29uZAp9OwovLyBUT0RPOiB3ZWVrIG1heWJlPwoKCi8vIEdpdmVuIGEgZm9ybWF0dGluZyBjaHVuaywgYW5kIGdpdmVuIHRoYXQgYm90aCBkYXRlcyBhcmUgc2ltaWxhciBpbiB0aGUgcmVnYXJkIHRoZQovLyBmb3JtYXR0aW5nIGNodW5rIGlzIGNvbmNlcm5lZCwgZm9ybWF0IGRhdGUxIGFnYWluc3QgYGNodW5rYC4gT3RoZXJ3aXNlLCByZXR1cm4gYGZhbHNlYC4KZnVuY3Rpb24gZm9ybWF0U2ltaWxhckNodW5rKGRhdGUxLCBkYXRlMiwgY2h1bmspIHsKCXZhciB0b2tlbjsKCXZhciB1bml0OwoKCWlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7IC8vIGEgbGl0ZXJhbCBzdHJpbmcKCQlyZXR1cm4gY2h1bms7Cgl9CgllbHNlIGlmICgodG9rZW4gPSBjaHVuay50b2tlbikpIHsKCQl1bml0ID0gc2ltaWxhclVuaXRNYXBbdG9rZW4uY2hhckF0KDApXTsKCQkvLyBhcmUgdGhlIGRhdGVzIHRoZSBzYW1lIGZvciB0aGlzIHVuaXQgb2YgbWVhc3VyZW1lbnQ/CgkJaWYgKHVuaXQgJiYgZGF0ZTEuaXNTYW1lKGRhdGUyLCB1bml0KSkgewoJCQlyZXR1cm4gb2xkTW9tZW50Rm9ybWF0KGRhdGUxLCB0b2tlbik7IC8vIHdvdWxkIGJlIHRoZSBzYW1lIGlmIHdlIHVzZWQgYGRhdGUyYAoJCQkvLyBCVFcsIGRvbid0IHN1cHBvcnQgY3VzdG9tIHRva2VucwoJCX0KCX0KCglyZXR1cm4gZmFsc2U7IC8vIHRoZSBjaHVuayBpcyBOT1QgdGhlIHNhbWUgZm9yIHRoZSB0d28gZGF0ZXMKCS8vIEJUVywgZG9uJ3Qgc3VwcG9ydCBzcGxpdHRpbmcgb24gbm9uLXplcm8gYXJlYXMKfQoKCi8vIENodW5raW5nIFV0aWxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgp2YXIgZm9ybWF0U3RyaW5nQ2h1bmtDYWNoZSA9IHt9OwoKCmZ1bmN0aW9uIGdldEZvcm1hdFN0cmluZ0NodW5rcyhmb3JtYXRTdHIpIHsKCWlmIChmb3JtYXRTdHIgaW4gZm9ybWF0U3RyaW5nQ2h1bmtDYWNoZSkgewoJCXJldHVybiBmb3JtYXRTdHJpbmdDaHVua0NhY2hlW2Zvcm1hdFN0cl07Cgl9CglyZXR1cm4gKGZvcm1hdFN0cmluZ0NodW5rQ2FjaGVbZm9ybWF0U3RyXSA9IGNodW5rRm9ybWF0U3RyaW5nKGZvcm1hdFN0cikpOwp9CgoKLy8gQnJlYWsgdGhlIGZvcm1hdHRpbmcgc3RyaW5nIGludG8gYW4gYXJyYXkgb2YgY2h1bmtzCmZ1bmN0aW9uIGNodW5rRm9ybWF0U3RyaW5nKGZvcm1hdFN0cikgewoJdmFyIGNodW5rcyA9IFtdOwoJdmFyIGNodW5rZXIgPSAvXFsoW15cXV0qKVxdfFwoKFteXCldKilcKXwoTFRTfExUfChcdylcNCpvPyl8KFteXHdcW1woXSspL2c7IC8vIFRPRE86IG1vcmUgZGVzY3JpbWluYXRpb24KCXZhciBtYXRjaDsKCgl3aGlsZSAoKG1hdGNoID0gY2h1bmtlci5leGVjKGZvcm1hdFN0cikpKSB7CgkJaWYgKG1hdGNoWzFdKSB7IC8vIGEgbGl0ZXJhbCBzdHJpbmcgaW5zaWRlIFsgLi4uIF0KCQkJY2h1bmtzLnB1c2gobWF0Y2hbMV0pOwoJCX0KCQllbHNlIGlmIChtYXRjaFsyXSkgeyAvLyBub24temVybyBmb3JtYXR0aW5nIGluc2lkZSAoIC4uLiApCgkJCWNodW5rcy5wdXNoKHsgbWF5YmU6IGNodW5rRm9ybWF0U3RyaW5nKG1hdGNoWzJdKSB9KTsKCQl9CgkJZWxzZSBpZiAobWF0Y2hbM10pIHsgLy8gYSBmb3JtYXR0aW5nIHRva2VuCgkJCWNodW5rcy5wdXNoKHsgdG9rZW46IG1hdGNoWzNdIH0pOwoJCX0KCQllbHNlIGlmIChtYXRjaFs1XSkgeyAvLyBhbiB1bmVuY2xvc2VkIGxpdGVyYWwgc3RyaW5nCgkJCWNodW5rcy5wdXNoKG1hdGNoWzVdKTsKCQl9Cgl9CgoJcmV0dXJuIGNodW5rczsKfQoKOzsKCmZjLkNsYXNzID0gQ2xhc3M7IC8vIGV4cG9ydAoKLy8gY2xhc3MgdGhhdCBhbGwgb3RoZXIgY2xhc3NlcyB3aWxsIGluaGVyaXQgZnJvbQpmdW5jdGlvbiBDbGFzcygpIHsgfQoKLy8gY2FsbGVkIHVwb24gYSBjbGFzcyB0byBjcmVhdGUgYSBzdWJjbGFzcwpDbGFzcy5leHRlbmQgPSBmdW5jdGlvbihtZW1iZXJzKSB7Cgl2YXIgc3VwZXJDbGFzcyA9IHRoaXM7Cgl2YXIgc3ViQ2xhc3M7CgoJbWVtYmVycyA9IG1lbWJlcnMgfHwge307CgoJLy8gZW5zdXJlIGEgY29uc3RydWN0b3IgZm9yIHRoZSBzdWJjbGFzcywgZm9yd2FyZGluZyBhbGwgYXJndW1lbnRzIHRvIHRoZSBzdXBlci1jb25zdHJ1Y3RvciBpZiBpdCBkb2Vzbid0IGV4aXN0CglpZiAoaGFzT3duUHJvcChtZW1iZXJzLCAnY29uc3RydWN0b3InKSkgewoJCXN1YkNsYXNzID0gbWVtYmVycy5jb25zdHJ1Y3RvcjsKCX0KCWlmICh0eXBlb2Ygc3ViQ2xhc3MgIT09ICdmdW5jdGlvbicpIHsKCQlzdWJDbGFzcyA9IG1lbWJlcnMuY29uc3RydWN0b3IgPSBmdW5jdGlvbigpIHsKCQkJc3VwZXJDbGFzcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwoJCX07Cgl9CgoJLy8gYnVpbGQgdGhlIGJhc2UgcHJvdG90eXBlIGZvciB0aGUgc3ViY2xhc3MsIHdoaWNoIGlzIGFuIG5ldyBvYmplY3QgY2hhaW5lZCB0byB0aGUgc3VwZXJjbGFzcydzIHByb3RvdHlwZQoJc3ViQ2xhc3MucHJvdG90eXBlID0gY3JlYXRlT2JqZWN0KHN1cGVyQ2xhc3MucHJvdG90eXBlKTsKCgkvLyBjb3B5IGVhY2ggbWVtYmVyIHZhcmlhYmxlL21ldGhvZCBvbnRvIHRoZSB0aGUgc3ViY2xhc3MncyBwcm90b3R5cGUKCWNvcHlPd25Qcm9wcyhtZW1iZXJzLCBzdWJDbGFzcy5wcm90b3R5cGUpOwoJY29weU5hdGl2ZU1ldGhvZHMobWVtYmVycywgc3ViQ2xhc3MucHJvdG90eXBlKTsgLy8gaGFjayBmb3IgSUU4CgoJLy8gY29weSBvdmVyIGFsbCBjbGFzcyB2YXJpYWJsZXMvbWV0aG9kcyB0byB0aGUgc3ViY2xhc3MsIHN1Y2ggYXMgYGV4dGVuZGAgYW5kIGBtaXhpbmAKCWNvcHlPd25Qcm9wcyhzdXBlckNsYXNzLCBzdWJDbGFzcyk7CgoJcmV0dXJuIHN1YkNsYXNzOwp9OwoKLy8gYWRkcyBuZXcgbWVtYmVyIHZhcmlhYmxlcy9tZXRob2RzIHRvIHRoZSBjbGFzcydzIHByb3RvdHlwZS4KLy8gY2FuIGJlIGNhbGxlZCB3aXRoIGFub3RoZXIgY2xhc3MsIG9yIGEgcGxhaW4gb2JqZWN0IGhhc2ggY29udGFpbmluZyBuZXcgbWVtYmVycy4KQ2xhc3MubWl4aW4gPSBmdW5jdGlvbihtZW1iZXJzKSB7Cgljb3B5T3duUHJvcHMobWVtYmVycy5wcm90b3R5cGUgfHwgbWVtYmVycywgdGhpcy5wcm90b3R5cGUpOyAvLyBUT0RPOiBjb3B5TmF0aXZlTWV0aG9kcz8KfTsKOzsKCi8qIEEgcmVjdGFuZ3VsYXIgcGFuZWwgdGhhdCBpcyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgb3ZlciBvdGhlciBjb250ZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpPcHRpb25zOgoJLSBjbGFzc05hbWUgKHN0cmluZykKCS0gY29udGVudCAoSFRNTCBzdHJpbmcgb3IgalF1ZXJ5IGVsZW1lbnQgc2V0KQoJLSBwYXJlbnRFbAoJLSB0b3AKCS0gbGVmdAoJLSByaWdodCAodGhlIHggY29vcmQgb2Ygd2hlcmUgdGhlIHJpZ2h0IGVkZ2Ugc2hvdWxkIGJlLiBub3QgYSAiQ1NTIiByaWdodCkKCS0gYXV0b0hpZGUgKGJvb2xlYW4pCgktIHNob3cgKGNhbGxiYWNrKQoJLSBoaWRlIChjYWxsYmFjaykKKi8KCnZhciBQb3BvdmVyID0gQ2xhc3MuZXh0ZW5kKHsKCglpc0hpZGRlbjogdHJ1ZSwKCW9wdGlvbnM6IG51bGwsCgllbDogbnVsbCwgLy8gdGhlIGNvbnRhaW5lciBlbGVtZW50IGZvciB0aGUgcG9wb3Zlci4gZ2VuZXJhdGVkIGJ5IHRoaXMgb2JqZWN0Cglkb2N1bWVudE1vdXNlZG93blByb3h5OiBudWxsLCAvLyBkb2N1bWVudCBtb3VzZWRvd24gaGFuZGxlciBib3VuZCB0byBgdGhpc2AKCW1hcmdpbjogMTAsIC8vIHRoZSBzcGFjZSByZXF1aXJlZCBiZXR3ZWVuIHRoZSBwb3BvdmVyIGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbCBjb250YWluZXIKCgoJY29uc3RydWN0b3I6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKCQl0aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwoJfSwKCgoJLy8gU2hvd3MgdGhlIHBvcG92ZXIgb24gdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4gUmVuZGVycyBpdCBpZiBub3QgYWxyZWFkeQoJc2hvdzogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMuaXNIaWRkZW4pIHsKCQkJaWYgKCF0aGlzLmVsKSB7CgkJCQl0aGlzLnJlbmRlcigpOwoJCQl9CgkJCXRoaXMuZWwuc2hvdygpOwoJCQl0aGlzLnBvc2l0aW9uKCk7CgkJCXRoaXMuaXNIaWRkZW4gPSBmYWxzZTsKCQkJdGhpcy50cmlnZ2VyKCdzaG93Jyk7CgkJfQoJfSwKCgoJLy8gSGlkZXMgdGhlIHBvcG92ZXIsIHRocm91Z2ggQ1NTLCBidXQgZG9lcyBub3QgcmVtb3ZlIGl0IGZyb20gdGhlIERPTQoJaGlkZTogZnVuY3Rpb24oKSB7CgkJaWYgKCF0aGlzLmlzSGlkZGVuKSB7CgkJCXRoaXMuZWwuaGlkZSgpOwoJCQl0aGlzLmlzSGlkZGVuID0gdHJ1ZTsKCQkJdGhpcy50cmlnZ2VyKCdoaWRlJyk7CgkJfQoJfSwKCgoJLy8gQ3JlYXRlcyBgdGhpcy5lbGAgYW5kIHJlbmRlcnMgY29udGVudCBpbnNpZGUgb2YgaXQKCXJlbmRlcjogZnVuY3Rpb24oKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCQl2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9uczsKCgkJdGhpcy5lbCA9ICQoJzxkaXYgY2xhc3M9ImZjLXBvcG92ZXIiLz4nKQoJCQkuYWRkQ2xhc3Mob3B0aW9ucy5jbGFzc05hbWUgfHwgJycpCgkJCS5jc3MoewoJCQkJLy8gcG9zaXRpb24gaW5pdGlhbGx5IHRvIHRoZSB0b3AgbGVmdCB0byBhdm9pZCBjcmVhdGluZyBzY3JvbGxiYXJzCgkJCQl0b3A6IDAsCgkJCQlsZWZ0OiAwCgkJCX0pCgkJCS5hcHBlbmQob3B0aW9ucy5jb250ZW50KQoJCQkuYXBwZW5kVG8ob3B0aW9ucy5wYXJlbnRFbCk7CgoJCS8vIHdoZW4gYSBjbGljayBoYXBwZW5zIG9uIGFueXRoaW5nIGluc2lkZSB3aXRoIGEgJ2ZjLWNsb3NlJyBjbGFzc05hbWUsIGhpZGUgdGhlIHBvcG92ZXIKCQl0aGlzLmVsLm9uKCdjbGljaycsICcuZmMtY2xvc2UnLCBmdW5jdGlvbigpIHsKCQkJX3RoaXMuaGlkZSgpOwoJCX0pOwoKCQlpZiAob3B0aW9ucy5hdXRvSGlkZSkgewoJCQkkKGRvY3VtZW50KS5vbignbW91c2Vkb3duJywgdGhpcy5kb2N1bWVudE1vdXNlZG93blByb3h5ID0gcHJveHkodGhpcywgJ2RvY3VtZW50TW91c2Vkb3duJykpOwoJCX0KCX0sCgoKCS8vIFRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyAqYW55d2hlcmUqIGluIHRoZSBkb2N1bWVudCwgZm9yIHRoZSBhdXRvSGlkZSBmZWF0dXJlCglkb2N1bWVudE1vdXNlZG93bjogZnVuY3Rpb24oZXYpIHsKCQkvLyBvbmx5IGhpZGUgdGhlIHBvcG92ZXIgaWYgdGhlIGNsaWNrIGhhcHBlbmVkIG91dHNpZGUgdGhlIHBvcG92ZXIKCQlpZiAodGhpcy5lbCAmJiAhJChldi50YXJnZXQpLmNsb3Nlc3QodGhpcy5lbCkubGVuZ3RoKSB7CgkJCXRoaXMuaGlkZSgpOwoJCX0KCX0sCgoKCS8vIEhpZGVzIGFuZCB1bnJlZ2lzdGVycyBhbnkgaGFuZGxlcnMKCXJlbW92ZUVsZW1lbnQ6IGZ1bmN0aW9uKCkgewoJCXRoaXMuaGlkZSgpOwoKCQlpZiAodGhpcy5lbCkgewoJCQl0aGlzLmVsLnJlbW92ZSgpOwoJCQl0aGlzLmVsID0gbnVsbDsKCQl9CgoJCSQoZG9jdW1lbnQpLm9mZignbW91c2Vkb3duJywgdGhpcy5kb2N1bWVudE1vdXNlZG93blByb3h5KTsKCX0sCgoKCS8vIFBvc2l0aW9ucyB0aGUgcG9wb3ZlciBvcHRpbWFsbHksIHVzaW5nIHRoZSB0b3AvbGVmdC9yaWdodCBvcHRpb25zCglwb3NpdGlvbjogZnVuY3Rpb24oKSB7CgkJdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7CgkJdmFyIG9yaWdpbiA9IHRoaXMuZWwub2Zmc2V0UGFyZW50KCkub2Zmc2V0KCk7CgkJdmFyIHdpZHRoID0gdGhpcy5lbC5vdXRlcldpZHRoKCk7CgkJdmFyIGhlaWdodCA9IHRoaXMuZWwub3V0ZXJIZWlnaHQoKTsKCQl2YXIgd2luZG93RWwgPSAkKHdpbmRvdyk7CgkJdmFyIHZpZXdwb3J0RWwgPSBnZXRTY3JvbGxQYXJlbnQodGhpcy5lbCk7CgkJdmFyIHZpZXdwb3J0VG9wOwoJCXZhciB2aWV3cG9ydExlZnQ7CgkJdmFyIHZpZXdwb3J0T2Zmc2V0OwoJCXZhciB0b3A7IC8vIHRoZSAicG9zaXRpb24iIChub3QgIm9mZnNldCIpIHZhbHVlcyBmb3IgdGhlIHBvcG92ZXIKCQl2YXIgbGVmdDsgLy8KCgkJLy8gY29tcHV0ZSB0b3AgYW5kIGxlZnQKCQl0b3AgPSBvcHRpb25zLnRvcCB8fCAwOwoJCWlmIChvcHRpb25zLmxlZnQgIT09IHVuZGVmaW5lZCkgewoJCQlsZWZ0ID0gb3B0aW9ucy5sZWZ0OwoJCX0KCQllbHNlIGlmIChvcHRpb25zLnJpZ2h0ICE9PSB1bmRlZmluZWQpIHsKCQkJbGVmdCA9IG9wdGlvbnMucmlnaHQgLSB3aWR0aDsgLy8gZGVyaXZlIHRoZSBsZWZ0IHZhbHVlIGZyb20gdGhlIHJpZ2h0IHZhbHVlCgkJfQoJCWVsc2UgewoJCQlsZWZ0ID0gMDsKCQl9CgoJCWlmICh2aWV3cG9ydEVsLmlzKHdpbmRvdykgfHwgdmlld3BvcnRFbC5pcyhkb2N1bWVudCkpIHsgLy8gbm9ybWFsaXplIGdldFNjcm9sbFBhcmVudCdzIHJlc3VsdAoJCQl2aWV3cG9ydEVsID0gd2luZG93RWw7CgkJCXZpZXdwb3J0VG9wID0gMDsgLy8gdGhlIHdpbmRvdyBpcyBhbHdheXMgYXQgdGhlIHRvcCBsZWZ0CgkJCXZpZXdwb3J0TGVmdCA9IDA7IC8vIChhbmQgLm9mZnNldCgpIHdvbid0IHdvcmsgaWYgY2FsbGVkIGhlcmUpCgkJfQoJCWVsc2UgewoJCQl2aWV3cG9ydE9mZnNldCA9IHZpZXdwb3J0RWwub2Zmc2V0KCk7CgkJCXZpZXdwb3J0VG9wID0gdmlld3BvcnRPZmZzZXQudG9wOwoJCQl2aWV3cG9ydExlZnQgPSB2aWV3cG9ydE9mZnNldC5sZWZ0OwoJCX0KCgkJLy8gaWYgdGhlIHdpbmRvdyBpcyBzY3JvbGxlZCwgaXQgY2F1c2VzIHRoZSB2aXNpYmxlIGFyZWEgdG8gYmUgZnVydGhlciBkb3duCgkJdmlld3BvcnRUb3AgKz0gd2luZG93RWwuc2Nyb2xsVG9wKCk7CgkJdmlld3BvcnRMZWZ0ICs9IHdpbmRvd0VsLnNjcm9sbExlZnQoKTsKCgkJLy8gY29uc3RyYWluIHRvIHRoZSB2aWV3IHBvcnQuIGlmIGNvbnN0cmFpbmVkIGJ5IHR3byBlZGdlcywgZ2l2ZSBwcmVjZWRlbmNlIHRvIHRvcC9sZWZ0CgkJaWYgKG9wdGlvbnMudmlld3BvcnRDb25zdHJhaW4gIT09IGZhbHNlKSB7CgkJCXRvcCA9IE1hdGgubWluKHRvcCwgdmlld3BvcnRUb3AgKyB2aWV3cG9ydEVsLm91dGVySGVpZ2h0KCkgLSBoZWlnaHQgLSB0aGlzLm1hcmdpbik7CgkJCXRvcCA9IE1hdGgubWF4KHRvcCwgdmlld3BvcnRUb3AgKyB0aGlzLm1hcmdpbik7CgkJCWxlZnQgPSBNYXRoLm1pbihsZWZ0LCB2aWV3cG9ydExlZnQgKyB2aWV3cG9ydEVsLm91dGVyV2lkdGgoKSAtIHdpZHRoIC0gdGhpcy5tYXJnaW4pOwoJCQlsZWZ0ID0gTWF0aC5tYXgobGVmdCwgdmlld3BvcnRMZWZ0ICsgdGhpcy5tYXJnaW4pOwoJCX0KCgkJdGhpcy5lbC5jc3MoewoJCQl0b3A6IHRvcCAtIG9yaWdpbi50b3AsCgkJCWxlZnQ6IGxlZnQgLSBvcmlnaW4ubGVmdAoJCX0pOwoJfSwKCgoJLy8gVHJpZ2dlcnMgYSBjYWxsYmFjay4gQ2FsbHMgYSBmdW5jdGlvbiBpbiB0aGUgb3B0aW9uIGhhc2ggb2YgdGhlIHNhbWUgbmFtZS4KCS8vIEFyZ3VtZW50cyBiZXlvbmQgdGhlIGZpcnN0IGBuYW1lYCBhcmUgZm9yd2FyZGVkIG9uLgoJLy8gVE9ETzogYmV0dGVyIGNvZGUgcmV1c2UgZm9yIHRoaXMuIFJlcGVhdCBjb2RlCgl0cmlnZ2VyOiBmdW5jdGlvbihuYW1lKSB7CgkJaWYgKHRoaXMub3B0aW9uc1tuYW1lXSkgewoJCQl0aGlzLm9wdGlvbnNbbmFtZV0uYXBwbHkodGhpcywgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7CgkJfQoJfQoKfSk7Cgo7OwoKLyogQSAiY29vcmRpbmF0ZSBtYXAiIGNvbnZlcnRzIHBpeGVsIGNvb3JkaW5hdGVzIGludG8gYW4gYXNzb2NpYXRlZCBjZWxsLCB3aGljaCBoYXMgYW4gYXNzb2NpYXRlZCBkYXRlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpDb21tb24gaW50ZXJmYWNlOgoKCUNvb3JkTWFwLnByb3RvdHlwZSA9IHsKCQlidWlsZDogZnVuY3Rpb24oKSB7fSwKCQlnZXRDZWxsOiBmdW5jdGlvbih4LCB5KSB7fQoJfTsKCiovCgovKiBDb29yZGluYXRlIG1hcCBmb3IgYSBncmlkIGNvbXBvbmVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnZhciBHcmlkQ29vcmRNYXAgPSBDbGFzcy5leHRlbmQoewoKCWdyaWQ6IG51bGwsIC8vIHJlZmVyZW5jZSB0byB0aGUgR3JpZAoJcm93Q29vcmRzOiBudWxsLCAvLyBhcnJheSBvZiB7dG9wLGJvdHRvbX0gb2JqZWN0cwoJY29sQ29vcmRzOiBudWxsLCAvLyBhcnJheSBvZiB7bGVmdCxyaWdodH0gb2JqZWN0cwoKCWNvbnRhaW5lckVsOiBudWxsLCAvLyBjb250YWluZXIgZWxlbWVudCB0aGF0IGFsbCBjb29yZGluYXRlcyBhcmUgY29uc3RyYWluZWQgdG8uIG9wdGlvbmFsbHkgYXNzaWduZWQKCWJvdW5kczogbnVsbCwKCgoJY29uc3RydWN0b3I6IGZ1bmN0aW9uKGdyaWQpIHsKCQl0aGlzLmdyaWQgPSBncmlkOwoJfSwKCgoJLy8gUXVlcmllcyB0aGUgZ3JpZCBmb3IgdGhlIGNvb3JkaW5hdGVzIG9mIGFsbCB0aGUgY2VsbHMKCWJ1aWxkOiBmdW5jdGlvbigpIHsKCQl0aGlzLmdyaWQuYnVpbGQoKTsKCQl0aGlzLnJvd0Nvb3JkcyA9IHRoaXMuZ3JpZC5jb21wdXRlUm93Q29vcmRzKCk7CgkJdGhpcy5jb2xDb29yZHMgPSB0aGlzLmdyaWQuY29tcHV0ZUNvbENvb3JkcygpOwoJCXRoaXMuY29tcHV0ZUJvdW5kcygpOwoJfSwKCgoJLy8gQ2xlYXJzIHRoZSBjb29yZGluYXRlcyBkYXRhIHRvIGZyZWUgdXAgbWVtb3J5CgljbGVhcjogZnVuY3Rpb24oKSB7CgkJdGhpcy5ncmlkLmNsZWFyKCk7CgkJdGhpcy5yb3dDb29yZHMgPSBudWxsOwoJCXRoaXMuY29sQ29vcmRzID0gbnVsbDsKCX0sCgoKCS8vIEdpdmVuIGEgY29vcmRpbmF0ZSBvZiB0aGUgZG9jdW1lbnQsIGdldHMgdGhlIGFzc29jaWF0ZWQgY2VsbC4gSWYgbm8gY2VsbCBpcyB1bmRlcm5lYXRoLCByZXR1cm5zIG51bGwKCWdldENlbGw6IGZ1bmN0aW9uKHgsIHkpIHsKCQl2YXIgcm93Q29vcmRzID0gdGhpcy5yb3dDb29yZHM7CgkJdmFyIHJvd0NudCA9IHJvd0Nvb3Jkcy5sZW5ndGg7CgkJdmFyIGNvbENvb3JkcyA9IHRoaXMuY29sQ29vcmRzOwoJCXZhciBjb2xDbnQgPSBjb2xDb29yZHMubGVuZ3RoOwoJCXZhciBoaXRSb3cgPSBudWxsOwoJCXZhciBoaXRDb2wgPSBudWxsOwoJCXZhciBpLCBjb29yZHM7CgkJdmFyIGNlbGw7CgoJCWlmICh0aGlzLmluQm91bmRzKHgsIHkpKSB7CgoJCQlmb3IgKGkgPSAwOyBpIDwgcm93Q250OyBpKyspIHsKCQkJCWNvb3JkcyA9IHJvd0Nvb3Jkc1tpXTsKCQkJCWlmICh5ID49IGNvb3Jkcy50b3AgJiYgeSA8IGNvb3Jkcy5ib3R0b20pIHsKCQkJCQloaXRSb3cgPSBpOwoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9CgoJCQlmb3IgKGkgPSAwOyBpIDwgY29sQ250OyBpKyspIHsKCQkJCWNvb3JkcyA9IGNvbENvb3Jkc1tpXTsKCQkJCWlmICh4ID49IGNvb3Jkcy5sZWZ0ICYmIHggPCBjb29yZHMucmlnaHQpIHsKCQkJCQloaXRDb2wgPSBpOwoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9CgoJCQlpZiAoaGl0Um93ICE9PSBudWxsICYmIGhpdENvbCAhPT0gbnVsbCkgewoKCQkJCWNlbGwgPSB0aGlzLmdyaWQuZ2V0Q2VsbChoaXRSb3csIGhpdENvbCk7IC8vIGV4cGVjdGVkIHRvIHJldHVybiBhIGZyZXNoIG9iamVjdCB3ZSBjYW4gbW9kaWZ5CgkJCQljZWxsLmdyaWQgPSB0aGlzLmdyaWQ7IC8vIGZvciBDZWxsRHJhZ0xpc3RlbmVyJ3MgaXNDZWxsc0VxdWFsLiBkcmFnZ2luZyBiZXR3ZWVuIGdyaWRzCgoJCQkJLy8gbWFrZSB0aGUgY29vcmRpbmF0ZXMgYXZhaWxhYmxlIG9uIHRoZSBjZWxsIG9iamVjdAoJCQkJJC5leHRlbmQoY2VsbCwgcm93Q29vcmRzW2hpdFJvd10sIGNvbENvb3Jkc1toaXRDb2xdKTsKCgkJCQlyZXR1cm4gY2VsbDsKCQkJfQoJCX0KCgkJcmV0dXJuIG51bGw7Cgl9LAoKCgkvLyBJZiB0aGVyZSBpcyBhIGNvbnRhaW5lckVsLCBjb21wdXRlIHRoZSBib3VuZHMgaW50byBtaW4vbWF4IHZhbHVlcwoJY29tcHV0ZUJvdW5kczogZnVuY3Rpb24oKSB7CgkJdGhpcy5ib3VuZHMgPSB0aGlzLmNvbnRhaW5lckVsID8KCQkJZ2V0Q2xpZW50UmVjdCh0aGlzLmNvbnRhaW5lckVsKSA6IC8vIGFyZWEgd2l0aGluIHNjcm9sbGJhcnMKCQkJbnVsbDsKCX0sCgoKCS8vIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGNvb3JkaW5hdGVzIGFyZSBpbiBib3VuZHMuIElmIG5vIGBjb250YWluZXJFbGAsIGFsd2F5cyB0cnVlCglpbkJvdW5kczogZnVuY3Rpb24oeCwgeSkgewoJCXZhciBib3VuZHMgPSB0aGlzLmJvdW5kczsKCgkJaWYgKGJvdW5kcykgewoJCQlyZXR1cm4geCA+PSBib3VuZHMubGVmdCAmJiB4IDwgYm91bmRzLnJpZ2h0ICYmIHkgPj0gYm91bmRzLnRvcCAmJiB5IDwgYm91bmRzLmJvdHRvbTsKCQl9CgoJCXJldHVybiB0cnVlOwoJfQoKfSk7CgoKLyogQ29vcmRpbmF0ZSBtYXAgdGhhdCBpcyBhIGNvbWJpbmF0aW9uIG9mIG11bHRpcGxlIG90aGVyIGNvb3JkaW5hdGUgbWFwcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnZhciBDb21ib0Nvb3JkTWFwID0gQ2xhc3MuZXh0ZW5kKHsKCgljb29yZE1hcHM6IG51bGwsIC8vIGFuIGFycmF5IG9mIENvb3JkTWFwcwoKCgljb25zdHJ1Y3RvcjogZnVuY3Rpb24oY29vcmRNYXBzKSB7CgkJdGhpcy5jb29yZE1hcHMgPSBjb29yZE1hcHM7Cgl9LAoKCgkvLyBCdWlsZHMgYWxsIGNvb3JkTWFwcwoJYnVpbGQ6IGZ1bmN0aW9uKCkgewoJCXZhciBjb29yZE1hcHMgPSB0aGlzLmNvb3JkTWFwczsKCQl2YXIgaTsKCgkJZm9yIChpID0gMDsgaSA8IGNvb3JkTWFwcy5sZW5ndGg7IGkrKykgewoJCQljb29yZE1hcHNbaV0uYnVpbGQoKTsKCQl9Cgl9LAoKCgkvLyBRdWVyaWVzIGFsbCBjb29yZE1hcHMgZm9yIHRoZSBjZWxsIHVuZGVybmVhdGggdGhlIGdpdmVuIGNvb3JkaW5hdGVzLCByZXR1cm5pbmcgdGhlIGZpcnN0IHJlc3VsdAoJZ2V0Q2VsbDogZnVuY3Rpb24oeCwgeSkgewoJCXZhciBjb29yZE1hcHMgPSB0aGlzLmNvb3JkTWFwczsKCQl2YXIgY2VsbCA9IG51bGw7CgkJdmFyIGk7CgoJCWZvciAoaSA9IDA7IGkgPCBjb29yZE1hcHMubGVuZ3RoICYmICFjZWxsOyBpKyspIHsKCQkJY2VsbCA9IGNvb3JkTWFwc1tpXS5nZXRDZWxsKHgsIHkpOwoJCX0KCgkJcmV0dXJuIGNlbGw7Cgl9LAoKCgkvLyBDbGVhcnMgYWxsIGNvb3JkTWFwcwoJY2xlYXI6IGZ1bmN0aW9uKCkgewoJCXZhciBjb29yZE1hcHMgPSB0aGlzLmNvb3JkTWFwczsKCQl2YXIgaTsKCgkJZm9yIChpID0gMDsgaSA8IGNvb3JkTWFwcy5sZW5ndGg7IGkrKykgewoJCQljb29yZE1hcHNbaV0uY2xlYXIoKTsKCQl9Cgl9Cgp9KTsKCjs7CgovKiBUcmFja3MgYSBkcmFnJ3MgbW91c2UgbW92ZW1lbnQsIGZpcmluZyB2YXJpb3VzIGhhbmRsZXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKdmFyIERyYWdMaXN0ZW5lciA9IGZjLkRyYWdMaXN0ZW5lciA9IENsYXNzLmV4dGVuZCh7CgoJb3B0aW9uczogbnVsbCwKCglpc0xpc3RlbmluZzogZmFsc2UsCglpc0RyYWdnaW5nOiBmYWxzZSwKCgkvLyBjb29yZGluYXRlcyBvZiB0aGUgaW5pdGlhbCBtb3VzZWRvd24KCW9yaWdpblg6IG51bGwsCglvcmlnaW5ZOiBudWxsLAoKCS8vIGhhbmRsZXIgYXR0YWNoZWQgdG8gdGhlIGRvY3VtZW50LCBib3VuZCB0byB0aGUgRHJhZ0xpc3RlbmVyJ3MgYHRoaXNgCgltb3VzZW1vdmVQcm94eTogbnVsbCwKCW1vdXNldXBQcm94eTogbnVsbCwKCgkvLyBmb3IgSUU4IGJ1Zy1maWdodGluZyBiZWhhdmlvciwgZm9yIG5vdwoJc3ViamVjdEVsOiBudWxsLCAvLyB0aGUgZWxlbWVudCBiZWluZyBkcmFnZWQuIG9wdGlvbmFsCglzdWJqZWN0SHJlZjogbnVsbCwKCglzY3JvbGxFbDogbnVsbCwKCXNjcm9sbEJvdW5kczogbnVsbCwgLy8geyB0b3AsIGJvdHRvbSwgbGVmdCwgcmlnaHQgfQoJc2Nyb2xsVG9wVmVsOiBudWxsLCAvLyBwaXhlbHMgcGVyIHNlY29uZAoJc2Nyb2xsTGVmdFZlbDogbnVsbCwgLy8gcGl4ZWxzIHBlciBzZWNvbmQKCXNjcm9sbEludGVydmFsSWQ6IG51bGwsIC8vIElEIG9mIHNldFRpbWVvdXQgZm9yIHNjcm9sbGluZyBhbmltYXRpb24gbG9vcAoJc2Nyb2xsSGFuZGxlclByb3h5OiBudWxsLCAvLyB0aGlzLXNjb3BlZCBmdW5jdGlvbiBmb3IgaGFuZGxpbmcgd2hlbiBzY3JvbGxFbCBpcyBzY3JvbGxlZAoKCXNjcm9sbFNlbnNpdGl2aXR5OiAzMCwgLy8gcGl4ZWxzIGZyb20gZWRnZSBmb3Igc2Nyb2xsaW5nIHRvIHN0YXJ0CglzY3JvbGxTcGVlZDogMjAwLCAvLyBwaXhlbHMgcGVyIHNlY29uZCwgYXQgbWF4aW11bSBzcGVlZAoJc2Nyb2xsSW50ZXJ2YWxNczogNTAsIC8vIG1pbGxpc2Vjb25kIHdhaXQgYmV0d2VlbiBzY3JvbGwgaW5jcmVtZW50CgoKCWNvbnN0cnVjdG9yOiBmdW5jdGlvbihvcHRpb25zKSB7CgkJb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CgkJdGhpcy5vcHRpb25zID0gb3B0aW9uczsKCQl0aGlzLnN1YmplY3RFbCA9IG9wdGlvbnMuc3ViamVjdEVsOwoJfSwKCgoJLy8gQ2FsbCB0aGlzIHdoZW4gdGhlIHVzZXIgZG9lcyBhIG1vdXNlZG93bi4gV2lsbCBwcm9iYWJseSBsZWFkIHRvIHN0YXJ0TGlzdGVuaW5nCgltb3VzZWRvd246IGZ1bmN0aW9uKGV2KSB7CgkJaWYgKGlzUHJpbWFyeU1vdXNlQnV0dG9uKGV2KSkgewoKCQkJZXYucHJldmVudERlZmF1bHQoKTsgLy8gcHJldmVudHMgbmF0aXZlIHNlbGVjdGlvbiBpbiBtb3N0IGJyb3dzZXJzCgoJCQl0aGlzLnN0YXJ0TGlzdGVuaW5nKGV2KTsKCgkJCS8vIHN0YXJ0IHRoZSBkcmFnIGltbWVkaWF0ZWx5IGlmIHRoZXJlIGlzIG5vIG1pbmltdW0gZGlzdGFuY2UgZm9yIGEgZHJhZyBzdGFydAoJCQlpZiAoIXRoaXMub3B0aW9ucy5kaXN0YW5jZSkgewoJCQkJdGhpcy5zdGFydERyYWcoZXYpOwoJCQl9CgkJfQoJfSwKCgoJLy8gQ2FsbCB0aGlzIHRvIHN0YXJ0IHRyYWNraW5nIG1vdXNlIG1vdmVtZW50cwoJc3RhcnRMaXN0ZW5pbmc6IGZ1bmN0aW9uKGV2KSB7CgkJdmFyIHNjcm9sbFBhcmVudDsKCgkJaWYgKCF0aGlzLmlzTGlzdGVuaW5nKSB7CgoJCQkvLyBncmFiIHNjcm9sbCBjb250YWluZXIgYW5kIGF0dGFjaCBoYW5kbGVyCgkJCWlmIChldiAmJiB0aGlzLm9wdGlvbnMuc2Nyb2xsKSB7CgkJCQlzY3JvbGxQYXJlbnQgPSBnZXRTY3JvbGxQYXJlbnQoJChldi50YXJnZXQpKTsKCQkJCWlmICghc2Nyb2xsUGFyZW50LmlzKHdpbmRvdykgJiYgIXNjcm9sbFBhcmVudC5pcyhkb2N1bWVudCkpIHsKCQkJCQl0aGlzLnNjcm9sbEVsID0gc2Nyb2xsUGFyZW50OwoKCQkJCQkvLyBzY29wZSB0byBgdGhpc2AsIGFuZCB1c2UgYGRlYm91bmNlYCB0byBtYWtlIHN1cmUgcmFwaWQgY2FsbHMgZG9uJ3QgaGFwcGVuCgkJCQkJdGhpcy5zY3JvbGxIYW5kbGVyUHJveHkgPSBkZWJvdW5jZShwcm94eSh0aGlzLCAnc2Nyb2xsSGFuZGxlcicpLCAxMDApOwoJCQkJCXRoaXMuc2Nyb2xsRWwub24oJ3Njcm9sbCcsIHRoaXMuc2Nyb2xsSGFuZGxlclByb3h5KTsKCQkJCX0KCQkJfQoKCQkJJChkb2N1bWVudCkKCQkJCS5vbignbW91c2Vtb3ZlJywgdGhpcy5tb3VzZW1vdmVQcm94eSA9IHByb3h5KHRoaXMsICdtb3VzZW1vdmUnKSkKCQkJCS5vbignbW91c2V1cCcsIHRoaXMubW91c2V1cFByb3h5ID0gcHJveHkodGhpcywgJ21vdXNldXAnKSkKCQkJCS5vbignc2VsZWN0c3RhcnQnLCB0aGlzLnByZXZlbnREZWZhdWx0KTsgLy8gcHJldmVudHMgbmF0aXZlIHNlbGVjdGlvbiBpbiBJRTw9OAoKCQkJaWYgKGV2KSB7CgkJCQl0aGlzLm9yaWdpblggPSBldi5wYWdlWDsKCQkJCXRoaXMub3JpZ2luWSA9IGV2LnBhZ2VZOwoJCQl9CgkJCWVsc2UgewoJCQkJLy8gaWYgbm8gc3RhcnRpbmcgaW5mb3JtYXRpb24gd2FzIGdpdmVuLCBvcmlnaW4gd2lsbCBiZSB0aGUgdG9wbGVmdCBjb3JuZXIgb2YgdGhlIHNjcmVlbi4KCQkJCS8vIGlmIHNvLCBkeC9keSBpbiB0aGUgZnV0dXJlIHdpbGwgYmUgdGhlIGFic29sdXRlIGNvb3JkaW5hdGVzLgoJCQkJdGhpcy5vcmlnaW5YID0gMDsKCQkJCXRoaXMub3JpZ2luWSA9IDA7CgkJCX0KCgkJCXRoaXMuaXNMaXN0ZW5pbmcgPSB0cnVlOwoJCQl0aGlzLmxpc3RlblN0YXJ0KGV2KTsKCQl9Cgl9LAoKCgkvLyBDYWxsZWQgd2hlbiBkcmFnIGxpc3RlbmluZyBoYXMgc3RhcnRlZCAoYnV0IGEgcmVhbCBkcmFnIGhhcyBub3QgbmVjZXNzYXJpbHkgYmVnYW4pCglsaXN0ZW5TdGFydDogZnVuY3Rpb24oZXYpIHsKCQl0aGlzLnRyaWdnZXIoJ2xpc3RlblN0YXJ0JywgZXYpOwoJfSwKCgoJLy8gQ2FsbGVkIHdoZW4gdGhlIHVzZXIgbW92ZXMgdGhlIG1vdXNlCgltb3VzZW1vdmU6IGZ1bmN0aW9uKGV2KSB7CgkJdmFyIGR4ID0gZXYucGFnZVggLSB0aGlzLm9yaWdpblg7CgkJdmFyIGR5ID0gZXYucGFnZVkgLSB0aGlzLm9yaWdpblk7CgkJdmFyIG1pbkRpc3RhbmNlOwoJCXZhciBkaXN0YW5jZVNxOyAvLyBjdXJyZW50IGRpc3RhbmNlIGZyb20gdGhlIG9yaWdpbiwgc3F1YXJlZAoKCQlpZiAoIXRoaXMuaXNEcmFnZ2luZykgeyAvLyBpZiBub3QgYWxyZWFkeSBkcmFnZ2luZy4uLgoJCQkvLyB0aGVuIHN0YXJ0IHRoZSBkcmFnIGlmIHRoZSBtaW5pbXVtIGRpc3RhbmNlIGNyaXRlcmlhIGlzIG1ldAoJCQltaW5EaXN0YW5jZSA9IHRoaXMub3B0aW9ucy5kaXN0YW5jZSB8fCAxOwoJCQlkaXN0YW5jZVNxID0gZHggKiBkeCArIGR5ICogZHk7CgkJCWlmIChkaXN0YW5jZVNxID49IG1pbkRpc3RhbmNlICogbWluRGlzdGFuY2UpIHsgLy8gdXNlIHB5dGhhZ29yZWFuIHRoZW9yZW0KCQkJCXRoaXMuc3RhcnREcmFnKGV2KTsKCQkJfQoJCX0KCgkJaWYgKHRoaXMuaXNEcmFnZ2luZykgewoJCQl0aGlzLmRyYWcoZHgsIGR5LCBldik7IC8vIHJlcG9ydCBhIGRyYWcsIGV2ZW4gaWYgdGhpcyBtb3VzZW1vdmUgaW5pdGlhdGVkIHRoZSBkcmFnCgkJfQoJfSwKCgoJLy8gQ2FsbCB0aGlzIHRvIGluaXRpYXRlIGEgbGVnaXRpbWF0ZSBkcmFnLgoJLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW50ZXJuYWxseSBmcm9tIHRoaXMgY2xhc3MsIGJ1dCBjYW4gYWxzbyBiZSBjYWxsZWQgZXhwbGljaXRseSBmcm9tIG91dHNpZGUKCXN0YXJ0RHJhZzogZnVuY3Rpb24oZXYpIHsKCgkJaWYgKCF0aGlzLmlzTGlzdGVuaW5nKSB7IC8vIHN0YXJ0RHJhZyBtdXN0IGhhdmUgbWFudWFsbHkgaW5pdGlhdGVkCgkJCXRoaXMuc3RhcnRMaXN0ZW5pbmcoKTsKCQl9CgoJCWlmICghdGhpcy5pc0RyYWdnaW5nKSB7CgkJCXRoaXMuaXNEcmFnZ2luZyA9IHRydWU7CgkJCXRoaXMuZHJhZ1N0YXJ0KGV2KTsKCQl9Cgl9LAoKCgkvLyBDYWxsZWQgd2hlbiB0aGUgYWN0dWFsIGRyYWcgaGFzIHN0YXJ0ZWQgKHdlbnQgYmV5b25kIG1pbkRpc3RhbmNlKQoJZHJhZ1N0YXJ0OiBmdW5jdGlvbihldikgewoJCXZhciBzdWJqZWN0RWwgPSB0aGlzLnN1YmplY3RFbDsKCgkJdGhpcy50cmlnZ2VyKCdkcmFnU3RhcnQnLCBldik7CgoJCS8vIHJlbW92ZSBhIG1vdXNlZG93bidkIDxhPidzIGhyZWYgc28gaXQgaXMgbm90IHZpc2l0ZWQgKElFOCBidWcpCgkJaWYgKCh0aGlzLnN1YmplY3RIcmVmID0gc3ViamVjdEVsID8gc3ViamVjdEVsLmF0dHIoJ2hyZWYnKSA6IG51bGwpKSB7CgkJCXN1YmplY3RFbC5yZW1vdmVBdHRyKCdocmVmJyk7CgkJfQoJfSwKCgoJLy8gQ2FsbGVkIHdoaWxlIHRoZSBtb3VzZSBpcyBiZWluZyBtb3ZlZCBhbmQgd2hlbiB3ZSBrbm93IGEgbGVnaXRpbWF0ZSBkcmFnIGlzIHRha2luZyBwbGFjZQoJZHJhZzogZnVuY3Rpb24oZHgsIGR5LCBldikgewoJCXRoaXMudHJpZ2dlcignZHJhZycsIGR4LCBkeSwgZXYpOwoJCXRoaXMudXBkYXRlU2Nyb2xsKGV2KTsgLy8gd2lsbCBwb3NzaWJseSBjYXVzZSBzY3JvbGxpbmcKCX0sCgoKCS8vIENhbGxlZCB3aGVuIHRoZSB1c2VyIGRvZXMgYSBtb3VzZXVwCgltb3VzZXVwOiBmdW5jdGlvbihldikgewoJCXRoaXMuc3RvcExpc3RlbmluZyhldik7Cgl9LAoKCgkvLyBDYWxsZWQgd2hlbiB0aGUgZHJhZyBpcyBvdmVyLiBXaWxsIG5vdCBjYXVzZSBsaXN0ZW5pbmcgdG8gc3RvcCBob3dldmVyLgoJLy8gQSBjb25jbHVkaW5nICdjZWxsT3V0JyBldmVudCB3aWxsIE5PVCBiZSB0cmlnZ2VyZWQuCglzdG9wRHJhZzogZnVuY3Rpb24oZXYpIHsKCQlpZiAodGhpcy5pc0RyYWdnaW5nKSB7CgkJCXRoaXMuc3RvcFNjcm9sbGluZygpOwoJCQl0aGlzLmRyYWdTdG9wKGV2KTsKCQkJdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7CgkJfQoJfSwKCgoJLy8gQ2FsbGVkIHdoZW4gZHJhZ2dpbmcgaGFzIGJlZW4gc3RvcHBlZAoJZHJhZ1N0b3A6IGZ1bmN0aW9uKGV2KSB7CgkJdmFyIF90aGlzID0gdGhpczsKCgkJdGhpcy50cmlnZ2VyKCdkcmFnU3RvcCcsIGV2KTsKCgkJLy8gcmVzdG9yZSBhIG1vdXNlZG93bidkIDxhPidzIGhyZWYgKGZvciBJRTggYnVnKQoJCXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IC8vIG11c3QgYmUgb3V0c2lkZSBvZiB0aGUgY2xpY2sncyBleGVjdXRpb24KCQkJaWYgKF90aGlzLnN1YmplY3RIcmVmKSB7CgkJCQlfdGhpcy5zdWJqZWN0RWwuYXR0cignaHJlZicsIF90aGlzLnN1YmplY3RIcmVmKTsKCQkJfQoJCX0sIDApOwoJfSwKCgoJLy8gQ2FsbCB0aGlzIHRvIHN0b3AgbGlzdGVuaW5nIHRvIHRoZSB1c2VyJ3MgbW91c2UgZXZlbnRzCglzdG9wTGlzdGVuaW5nOiBmdW5jdGlvbihldikgewoJCXRoaXMuc3RvcERyYWcoZXYpOyAvLyBpZiB0aGVyZSdzIGEgY3VycmVudCBkcmFnLCBraWxsIGl0CgoJCWlmICh0aGlzLmlzTGlzdGVuaW5nKSB7CgoJCQkvLyByZW1vdmUgdGhlIHNjcm9sbCBoYW5kbGVyIGlmIHRoZXJlIGlzIGEgc2Nyb2xsRWwKCQkJaWYgKHRoaXMuc2Nyb2xsRWwpIHsKCQkJCXRoaXMuc2Nyb2xsRWwub2ZmKCdzY3JvbGwnLCB0aGlzLnNjcm9sbEhhbmRsZXJQcm94eSk7CgkJCQl0aGlzLnNjcm9sbEhhbmRsZXJQcm94eSA9IG51bGw7CgkJCX0KCgkJCSQoZG9jdW1lbnQpCgkJCQkub2ZmKCdtb3VzZW1vdmUnLCB0aGlzLm1vdXNlbW92ZVByb3h5KQoJCQkJLm9mZignbW91c2V1cCcsIHRoaXMubW91c2V1cFByb3h5KQoJCQkJLm9mZignc2VsZWN0c3RhcnQnLCB0aGlzLnByZXZlbnREZWZhdWx0KTsKCgkJCXRoaXMubW91c2Vtb3ZlUHJveHkgPSBudWxsOwoJCQl0aGlzLm1vdXNldXBQcm94eSA9IG51bGw7CgoJCQl0aGlzLmlzTGlzdGVuaW5nID0gZmFsc2U7CgkJCXRoaXMubGlzdGVuU3RvcChldik7CgkJfQoJfSwKCgoJLy8gQ2FsbGVkIHdoZW4gZHJhZyBsaXN0ZW5pbmcgaGFzIHN0b3BwZWQKCWxpc3RlblN0b3A6IGZ1bmN0aW9uKGV2KSB7CgkJdGhpcy50cmlnZ2VyKCdsaXN0ZW5TdG9wJywgZXYpOwoJfSwKCgoJLy8gVHJpZ2dlcnMgYSBjYWxsYmFjay4gQ2FsbHMgYSBmdW5jdGlvbiBpbiB0aGUgb3B0aW9uIGhhc2ggb2YgdGhlIHNhbWUgbmFtZS4KCS8vIEFyZ3VtZW50cyBiZXlvbmQgdGhlIGZpcnN0IGBuYW1lYCBhcmUgZm9yd2FyZGVkIG9uLgoJdHJpZ2dlcjogZnVuY3Rpb24obmFtZSkgewoJCWlmICh0aGlzLm9wdGlvbnNbbmFtZV0pIHsKCQkJdGhpcy5vcHRpb25zW25hbWVdLmFwcGx5KHRoaXMsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpOwoJCX0KCX0sCgoKCS8vIFN0b3BzIGEgZ2l2ZW4gbW91c2UgZXZlbnQgZnJvbSBkb2luZyBpdCdzIG5hdGl2ZSBicm93c2VyIGFjdGlvbi4gSW4gb3VyIGNhc2UsIHRleHQgc2VsZWN0aW9uLgoJcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uKGV2KSB7CgkJZXYucHJldmVudERlZmF1bHQoKTsKCX0sCgoKCS8qIFNjcm9sbGluZwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQ29tcHV0ZXMgYW5kIHN0b3JlcyB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHNjcm9sbEVsCgljb21wdXRlU2Nyb2xsQm91bmRzOiBmdW5jdGlvbigpIHsKCQl2YXIgZWwgPSB0aGlzLnNjcm9sbEVsOwoKCQl0aGlzLnNjcm9sbEJvdW5kcyA9IGVsID8gZ2V0T3V0ZXJSZWN0KGVsKSA6IG51bGw7CgkJCS8vIFRPRE86IHVzZSBnZXRDbGllbnRSZWN0IGluIGZ1dHVyZS4gYnV0IHByZXZlbnRzIGF1dG8gc2Nyb2xsaW5nIHdoZW4gb24gdG9wIG9mIHNjcm9sbGJhcnMKCX0sCgoKCS8vIENhbGxlZCB3aGVuIHRoZSBkcmFnZ2luZyBpcyBpbiBwcm9ncmVzcyBhbmQgc2Nyb2xsaW5nIHNob3VsZCBiZSB1cGRhdGVkCgl1cGRhdGVTY3JvbGw6IGZ1bmN0aW9uKGV2KSB7CgkJdmFyIHNlbnNpdGl2aXR5ID0gdGhpcy5zY3JvbGxTZW5zaXRpdml0eTsKCQl2YXIgYm91bmRzID0gdGhpcy5zY3JvbGxCb3VuZHM7CgkJdmFyIHRvcENsb3NlbmVzcywgYm90dG9tQ2xvc2VuZXNzOwoJCXZhciBsZWZ0Q2xvc2VuZXNzLCByaWdodENsb3NlbmVzczsKCQl2YXIgdG9wVmVsID0gMDsKCQl2YXIgbGVmdFZlbCA9IDA7CgoJCWlmIChib3VuZHMpIHsgLy8gb25seSBzY3JvbGwgaWYgc2Nyb2xsRWwgZXhpc3RzCgoJCQkvLyBjb21wdXRlIGNsb3NlbmVzcyB0byBlZGdlcy4gdmFsaWQgcmFuZ2UgaXMgZnJvbSAwLjAgLSAxLjAKCQkJdG9wQ2xvc2VuZXNzID0gKHNlbnNpdGl2aXR5IC0gKGV2LnBhZ2VZIC0gYm91bmRzLnRvcCkpIC8gc2Vuc2l0aXZpdHk7CgkJCWJvdHRvbUNsb3NlbmVzcyA9IChzZW5zaXRpdml0eSAtIChib3VuZHMuYm90dG9tIC0gZXYucGFnZVkpKSAvIHNlbnNpdGl2aXR5OwoJCQlsZWZ0Q2xvc2VuZXNzID0gKHNlbnNpdGl2aXR5IC0gKGV2LnBhZ2VYIC0gYm91bmRzLmxlZnQpKSAvIHNlbnNpdGl2aXR5OwoJCQlyaWdodENsb3NlbmVzcyA9IChzZW5zaXRpdml0eSAtIChib3VuZHMucmlnaHQgLSBldi5wYWdlWCkpIC8gc2Vuc2l0aXZpdHk7CgoJCQkvLyB0cmFuc2xhdGUgdmVydGljYWwgY2xvc2VuZXNzIGludG8gdmVsb2NpdHkuCgkJCS8vIG1vdXNlIG11c3QgYmUgY29tcGxldGVseSBpbiBib3VuZHMgZm9yIHZlbG9jaXR5IHRvIGhhcHBlbi4KCQkJaWYgKHRvcENsb3NlbmVzcyA+PSAwICYmIHRvcENsb3NlbmVzcyA8PSAxKSB7CgkJCQl0b3BWZWwgPSB0b3BDbG9zZW5lc3MgKiB0aGlzLnNjcm9sbFNwZWVkICogLTE7IC8vIG5lZ2F0aXZlLiBmb3Igc2Nyb2xsaW5nIHVwCgkJCX0KCQkJZWxzZSBpZiAoYm90dG9tQ2xvc2VuZXNzID49IDAgJiYgYm90dG9tQ2xvc2VuZXNzIDw9IDEpIHsKCQkJCXRvcFZlbCA9IGJvdHRvbUNsb3NlbmVzcyAqIHRoaXMuc2Nyb2xsU3BlZWQ7CgkJCX0KCgkJCS8vIHRyYW5zbGF0ZSBob3Jpem9udGFsIGNsb3NlbmVzcyBpbnRvIHZlbG9jaXR5CgkJCWlmIChsZWZ0Q2xvc2VuZXNzID49IDAgJiYgbGVmdENsb3NlbmVzcyA8PSAxKSB7CgkJCQlsZWZ0VmVsID0gbGVmdENsb3NlbmVzcyAqIHRoaXMuc2Nyb2xsU3BlZWQgKiAtMTsgLy8gbmVnYXRpdmUuIGZvciBzY3JvbGxpbmcgbGVmdAoJCQl9CgkJCWVsc2UgaWYgKHJpZ2h0Q2xvc2VuZXNzID49IDAgJiYgcmlnaHRDbG9zZW5lc3MgPD0gMSkgewoJCQkJbGVmdFZlbCA9IHJpZ2h0Q2xvc2VuZXNzICogdGhpcy5zY3JvbGxTcGVlZDsKCQkJfQoJCX0KCgkJdGhpcy5zZXRTY3JvbGxWZWwodG9wVmVsLCBsZWZ0VmVsKTsKCX0sCgoKCS8vIFNldHMgdGhlIHNwZWVkLW9mLXNjcm9sbGluZyBmb3IgdGhlIHNjcm9sbEVsCglzZXRTY3JvbGxWZWw6IGZ1bmN0aW9uKHRvcFZlbCwgbGVmdFZlbCkgewoKCQl0aGlzLnNjcm9sbFRvcFZlbCA9IHRvcFZlbDsKCQl0aGlzLnNjcm9sbExlZnRWZWwgPSBsZWZ0VmVsOwoKCQl0aGlzLmNvbnN0cmFpblNjcm9sbFZlbCgpOyAvLyBtYXNzYWdlcyBpbnRvIHJlYWxpc3RpYyB2YWx1ZXMKCgkJLy8gaWYgdGhlcmUgaXMgbm9uLXplcm8gdmVsb2NpdHksIGFuZCBhbiBhbmltYXRpb24gbG9vcCBoYXNuJ3QgYWxyZWFkeSBzdGFydGVkLCB0aGVuIFNUQVJUCgkJaWYgKCh0aGlzLnNjcm9sbFRvcFZlbCB8fCB0aGlzLnNjcm9sbExlZnRWZWwpICYmICF0aGlzLnNjcm9sbEludGVydmFsSWQpIHsKCQkJdGhpcy5zY3JvbGxJbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoCgkJCQlwcm94eSh0aGlzLCAnc2Nyb2xsSW50ZXJ2YWxGdW5jJyksIC8vIHNjb3BlIHRvIGB0aGlzYAoJCQkJdGhpcy5zY3JvbGxJbnRlcnZhbE1zCgkJCSk7CgkJfQoJfSwKCgoJLy8gRm9yY2VzIHNjcm9sbFRvcFZlbCBhbmQgc2Nyb2xsTGVmdFZlbCB0byBiZSB6ZXJvIGlmIHNjcm9sbGluZyBoYXMgYWxyZWFkeSBnb25lIGFsbCB0aGUgd2F5Cgljb25zdHJhaW5TY3JvbGxWZWw6IGZ1bmN0aW9uKCkgewoJCXZhciBlbCA9IHRoaXMuc2Nyb2xsRWw7CgoJCWlmICh0aGlzLnNjcm9sbFRvcFZlbCA8IDApIHsgLy8gc2Nyb2xsaW5nIHVwPwoJCQlpZiAoZWwuc2Nyb2xsVG9wKCkgPD0gMCkgeyAvLyBhbHJlYWR5IHNjcm9sbGVkIGFsbCB0aGUgd2F5IHVwPwoJCQkJdGhpcy5zY3JvbGxUb3BWZWwgPSAwOwoJCQl9CgkJfQoJCWVsc2UgaWYgKHRoaXMuc2Nyb2xsVG9wVmVsID4gMCkgeyAvLyBzY3JvbGxpbmcgZG93bj8KCQkJaWYgKGVsLnNjcm9sbFRvcCgpICsgZWxbMF0uY2xpZW50SGVpZ2h0ID49IGVsWzBdLnNjcm9sbEhlaWdodCkgeyAvLyBhbHJlYWR5IHNjcm9sbGVkIGFsbCB0aGUgd2F5IGRvd24/CgkJCQl0aGlzLnNjcm9sbFRvcFZlbCA9IDA7CgkJCX0KCQl9CgoJCWlmICh0aGlzLnNjcm9sbExlZnRWZWwgPCAwKSB7IC8vIHNjcm9sbGluZyBsZWZ0PwoJCQlpZiAoZWwuc2Nyb2xsTGVmdCgpIDw9IDApIHsgLy8gYWxyZWFkeSBzY3JvbGxlZCBhbGwgdGhlIGxlZnQ/CgkJCQl0aGlzLnNjcm9sbExlZnRWZWwgPSAwOwoJCQl9CgkJfQoJCWVsc2UgaWYgKHRoaXMuc2Nyb2xsTGVmdFZlbCA+IDApIHsgLy8gc2Nyb2xsaW5nIHJpZ2h0PwoJCQlpZiAoZWwuc2Nyb2xsTGVmdCgpICsgZWxbMF0uY2xpZW50V2lkdGggPj0gZWxbMF0uc2Nyb2xsV2lkdGgpIHsgLy8gYWxyZWFkeSBzY3JvbGxlZCBhbGwgdGhlIHdheSByaWdodD8KCQkJCXRoaXMuc2Nyb2xsTGVmdFZlbCA9IDA7CgkJCX0KCQl9Cgl9LAoKCgkvLyBUaGlzIGZ1bmN0aW9uIGdldHMgY2FsbGVkIGR1cmluZyBldmVyeSBpdGVyYXRpb24gb2YgdGhlIHNjcm9sbGluZyBhbmltYXRpb24gbG9vcAoJc2Nyb2xsSW50ZXJ2YWxGdW5jOiBmdW5jdGlvbigpIHsKCQl2YXIgZWwgPSB0aGlzLnNjcm9sbEVsOwoJCXZhciBmcmFjID0gdGhpcy5zY3JvbGxJbnRlcnZhbE1zIC8gMTAwMDsgLy8gY29uc2lkZXJpbmcgYW5pbWF0aW9uIGZyZXF1ZW5jeSwgd2hhdCB0aGUgdmVsIHNob3VsZCBiZSBtdWx0J2QgYnkKCgkJLy8gY2hhbmdlIHRoZSB2YWx1ZSBvZiBzY3JvbGxFbCdzIHNjcm9sbAoJCWlmICh0aGlzLnNjcm9sbFRvcFZlbCkgewoJCQllbC5zY3JvbGxUb3AoZWwuc2Nyb2xsVG9wKCkgKyB0aGlzLnNjcm9sbFRvcFZlbCAqIGZyYWMpOwoJCX0KCQlpZiAodGhpcy5zY3JvbGxMZWZ0VmVsKSB7CgkJCWVsLnNjcm9sbExlZnQoZWwuc2Nyb2xsTGVmdCgpICsgdGhpcy5zY3JvbGxMZWZ0VmVsICogZnJhYyk7CgkJfQoKCQl0aGlzLmNvbnN0cmFpblNjcm9sbFZlbCgpOyAvLyBzaW5jZSB0aGUgc2Nyb2xsIHZhbHVlcyBjaGFuZ2VkLCByZWNvbXB1dGUgdGhlIHZlbG9jaXRpZXMKCgkJLy8gaWYgc2Nyb2xsZWQgYWxsIHRoZSB3YXksIHdoaWNoIGNhdXNlcyB0aGUgdmVscyB0byBiZSB6ZXJvLCBzdG9wIHRoZSBhbmltYXRpb24gbG9vcAoJCWlmICghdGhpcy5zY3JvbGxUb3BWZWwgJiYgIXRoaXMuc2Nyb2xsTGVmdFZlbCkgewoJCQl0aGlzLnN0b3BTY3JvbGxpbmcoKTsKCQl9Cgl9LAoKCgkvLyBLaWxscyBhbnkgZXhpc3Rpbmcgc2Nyb2xsaW5nIGFuaW1hdGlvbiBsb29wCglzdG9wU2Nyb2xsaW5nOiBmdW5jdGlvbigpIHsKCQlpZiAodGhpcy5zY3JvbGxJbnRlcnZhbElkKSB7CgkJCWNsZWFySW50ZXJ2YWwodGhpcy5zY3JvbGxJbnRlcnZhbElkKTsKCQkJdGhpcy5zY3JvbGxJbnRlcnZhbElkID0gbnVsbDsKCgkJCS8vIHdoZW4gYWxsIGRvbmUgd2l0aCBzY3JvbGxpbmcsIHJlY29tcHV0ZSBwb3NpdGlvbnMgc2luY2UgdGhleSBwcm9iYWJseSBjaGFuZ2VkCgkJCXRoaXMuc2Nyb2xsU3RvcCgpOwoJCX0KCX0sCgoKCS8vIEdldCBjYWxsZWQgd2hlbiB0aGUgc2Nyb2xsRWwgaXMgc2Nyb2xsZWQgKE5PVEU6IHRoaXMgaXMgZGVsYXllZCB2aWEgZGVib3VuY2UpCglzY3JvbGxIYW5kbGVyOiBmdW5jdGlvbigpIHsKCQkvLyByZWNvbXB1dGUgYWxsIGNvb3JkaW5hdGVzLCBidXQgKm9ubHkqIGlmIHRoaXMgaXMgKm5vdCogcGFydCBvZiBvdXIgc2Nyb2xsaW5nIGFuaW1hdGlvbgoJCWlmICghdGhpcy5zY3JvbGxJbnRlcnZhbElkKSB7CgkJCXRoaXMuc2Nyb2xsU3RvcCgpOwoJCX0KCX0sCgoKCS8vIENhbGxlZCB3aGVuIHNjcm9sbGluZyBoYXMgc3RvcHBlZCwgd2hldGhlciB0aHJvdWdoIGF1dG8gc2Nyb2xsLCBvciB0aGUgdXNlciBzY3JvbGxpbmcKCXNjcm9sbFN0b3A6IGZ1bmN0aW9uKCkgewoJfQoKfSk7Cgo7OwoKLyogVHJhY2tzIG1vdXNlIG1vdmVtZW50cyBvdmVyIGEgQ29vcmRNYXAgYW5kIHJhaXNlcyBldmVudHMgYWJvdXQgd2hpY2ggY2VsbCB0aGUgbW91c2UgaXMgb3Zlci4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCm9wdGlvbnM6Ci0gc3ViamVjdEVsCi0gc3ViamVjdENlbnRlcgoqLwoKdmFyIENlbGxEcmFnTGlzdGVuZXIgPSBEcmFnTGlzdGVuZXIuZXh0ZW5kKHsKCgljb29yZE1hcDogbnVsbCwgLy8gY29udmVydHMgY29vcmRpbmF0ZXMgdG8gZGF0ZSBjZWxscwoJb3JpZ0NlbGw6IG51bGwsIC8vIHRoZSBjZWxsIHRoZSBtb3VzZSB3YXMgb3ZlciB3aGVuIGxpc3RlbmluZyBzdGFydGVkCgljZWxsOiBudWxsLCAvLyB0aGUgY2VsbCB0aGUgbW91c2UgaXMgb3ZlcgoJY29vcmRBZGp1c3Q6IG51bGwsIC8vIGRlbHRhIHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgbW91c2UgY29vcmRpbmF0ZXMgd2hlbiBjb21wdXRpbmcgY29sbGlzaW9ucwoKCgljb25zdHJ1Y3RvcjogZnVuY3Rpb24oY29vcmRNYXAsIG9wdGlvbnMpIHsKCQlEcmFnTGlzdGVuZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgb3B0aW9ucyk7IC8vIGNhbGwgdGhlIHN1cGVyLWNvbnN0cnVjdG9yCgoJCXRoaXMuY29vcmRNYXAgPSBjb29yZE1hcDsKCX0sCgoKCS8vIENhbGxlZCB3aGVuIGRyYWcgbGlzdGVuaW5nIHN0YXJ0cyAoYnV0IGEgcmVhbCBkcmFnIGhhcyBub3QgbmVjZXNzYXJpbHkgYmVnYW4pLgoJLy8gZXYgbWlnaHQgYmUgdW5kZWZpbmVkIGlmIGRyYWdnaW5nIHdhcyBzdGFydGVkIG1hbnVhbGx5LgoJbGlzdGVuU3RhcnQ6IGZ1bmN0aW9uKGV2KSB7CgkJdmFyIHN1YmplY3RFbCA9IHRoaXMuc3ViamVjdEVsOwoJCXZhciBzdWJqZWN0UmVjdDsKCQl2YXIgb3JpZ1BvaW50OwoJCXZhciBwb2ludDsKCgkJRHJhZ0xpc3RlbmVyLnByb3RvdHlwZS5saXN0ZW5TdGFydC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyAvLyBjYWxsIHRoZSBzdXBlci1tZXRob2QKCgkJdGhpcy5jb21wdXRlQ29vcmRzKCk7CgoJCWlmIChldikgewoJCQlvcmlnUG9pbnQgPSB7IGxlZnQ6IGV2LnBhZ2VYLCB0b3A6IGV2LnBhZ2VZIH07CgkJCXBvaW50ID0gb3JpZ1BvaW50OwoKCQkJLy8gY29uc3RyYWluIHRoZSBwb2ludCB0byBib3VuZHMgb2YgdGhlIGVsZW1lbnQgYmVpbmcgZHJhZ2dlZAoJCQlpZiAoc3ViamVjdEVsKSB7CgkJCQlzdWJqZWN0UmVjdCA9IGdldE91dGVyUmVjdChzdWJqZWN0RWwpOyAvLyB1c2VkIGZvciBjZW50ZXJpbmcgYXMgd2VsbAoJCQkJcG9pbnQgPSBjb25zdHJhaW5Qb2ludChwb2ludCwgc3ViamVjdFJlY3QpOwoJCQl9CgoJCQl0aGlzLm9yaWdDZWxsID0gdGhpcy5nZXRDZWxsKHBvaW50LmxlZnQsIHBvaW50LnRvcCk7CgoJCQkvLyB0cmVhdCB0aGUgY2VudGVyIG9mIHRoZSBzdWJqZWN0IGFzIHRoZSBjb2xsaXNpb24gcG9pbnQ/CgkJCWlmIChzdWJqZWN0RWwgJiYgdGhpcy5vcHRpb25zLnN1YmplY3RDZW50ZXIpIHsKCgkJCQkvLyBvbmx5IGNvbnNpZGVyIHRoZSBhcmVhIHRoZSBzdWJqZWN0IG92ZXJsYXBzIHRoZSBjZWxsLiBiZXN0IGZvciBsYXJnZSBzdWJqZWN0cwoJCQkJaWYgKHRoaXMub3JpZ0NlbGwpIHsKCQkJCQlzdWJqZWN0UmVjdCA9IGludGVyc2VjdFJlY3RzKHRoaXMub3JpZ0NlbGwsIHN1YmplY3RSZWN0KSB8fAoJCQkJCQlzdWJqZWN0UmVjdDsgLy8gaW4gY2FzZSB0aGVyZSBpcyBubyBpbnRlcnNlY3Rpb24KCQkJCX0KCgkJCQlwb2ludCA9IGdldFJlY3RDZW50ZXIoc3ViamVjdFJlY3QpOwoJCQl9CgoJCQl0aGlzLmNvb3JkQWRqdXN0ID0gZGlmZlBvaW50cyhwb2ludCwgb3JpZ1BvaW50KTsgLy8gcG9pbnQgLSBvcmlnUG9pbnQKCQl9CgkJZWxzZSB7CgkJCXRoaXMub3JpZ0NlbGwgPSBudWxsOwoJCQl0aGlzLmNvb3JkQWRqdXN0ID0gbnVsbDsKCQl9Cgl9LAoKCgkvLyBSZWNvbXB1dGVzIHRoZSBkcmFnLWNyaXRpY2FsIHBvc2l0aW9ucyBvZiBlbGVtZW50cwoJY29tcHV0ZUNvb3JkczogZnVuY3Rpb24oKSB7CgkJdGhpcy5jb29yZE1hcC5idWlsZCgpOwoJCXRoaXMuY29tcHV0ZVNjcm9sbEJvdW5kcygpOwoJfSwKCgoJLy8gQ2FsbGVkIHdoZW4gdGhlIGFjdHVhbCBkcmFnIGhhcyBzdGFydGVkCglkcmFnU3RhcnQ6IGZ1bmN0aW9uKGV2KSB7CgkJdmFyIGNlbGw7CgoJCURyYWdMaXN0ZW5lci5wcm90b3R5cGUuZHJhZ1N0YXJ0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IC8vIGNhbGwgdGhlIHN1cGVyLW1ldGhvZAoKCQljZWxsID0gdGhpcy5nZXRDZWxsKGV2LnBhZ2VYLCBldi5wYWdlWSk7IC8vIG1pZ2h0IGJlIGRpZmZlcmVudCBmcm9tIHRoaXMub3JpZ0NlbGwgaWYgdGhlIG1pbi1kaXN0YW5jZSBpcyBsYXJnZQoKCQkvLyByZXBvcnQgdGhlIGluaXRpYWwgY2VsbCB0aGUgbW91c2UgaXMgb3ZlcgoJCS8vIGVzcGVjaWFsbHkgaW1wb3J0YW50IGlmIG5vIG1pbi1kaXN0YW5jZSBhbmQgZHJhZyBzdGFydHMgaW1tZWRpYXRlbHkKCQlpZiAoY2VsbCkgewoJCQl0aGlzLmNlbGxPdmVyKGNlbGwpOwoJCX0KCX0sCgoKCS8vIENhbGxlZCB3aGVuIHRoZSBkcmFnIG1vdmVzCglkcmFnOiBmdW5jdGlvbihkeCwgZHksIGV2KSB7CgkJdmFyIGNlbGw7CgoJCURyYWdMaXN0ZW5lci5wcm90b3R5cGUuZHJhZy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyAvLyBjYWxsIHRoZSBzdXBlci1tZXRob2QKCgkJY2VsbCA9IHRoaXMuZ2V0Q2VsbChldi5wYWdlWCwgZXYucGFnZVkpOwoKCQlpZiAoIWlzQ2VsbHNFcXVhbChjZWxsLCB0aGlzLmNlbGwpKSB7IC8vIGEgZGlmZmVyZW50IGNlbGwgdGhhbiBiZWZvcmU/CgkJCWlmICh0aGlzLmNlbGwpIHsKCQkJCXRoaXMuY2VsbE91dCgpOwoJCQl9CgkJCWlmIChjZWxsKSB7CgkJCQl0aGlzLmNlbGxPdmVyKGNlbGwpOwoJCQl9CgkJfQoJfSwKCgoJLy8gQ2FsbGVkIHdoZW4gZHJhZ2dpbmcgaGFzIGJlZW4gc3RvcHBlZAoJZHJhZ1N0b3A6IGZ1bmN0aW9uKCkgewoJCXRoaXMuY2VsbERvbmUoKTsKCQlEcmFnTGlzdGVuZXIucHJvdG90eXBlLmRyYWdTdG9wLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IC8vIGNhbGwgdGhlIHN1cGVyLW1ldGhvZAoJfSwKCgoJLy8gQ2FsbGVkIHdoZW4gYSB0aGUgbW91c2UgaGFzIGp1c3QgbW92ZWQgb3ZlciBhIG5ldyBjZWxsCgljZWxsT3ZlcjogZnVuY3Rpb24oY2VsbCkgewoJCXRoaXMuY2VsbCA9IGNlbGw7CgkJdGhpcy50cmlnZ2VyKCdjZWxsT3ZlcicsIGNlbGwsIGlzQ2VsbHNFcXVhbChjZWxsLCB0aGlzLm9yaWdDZWxsKSwgdGhpcy5vcmlnQ2VsbCk7Cgl9LAoKCgkvLyBDYWxsZWQgd2hlbiB0aGUgbW91c2UgaGFzIGp1c3QgbW92ZWQgb3V0IG9mIGEgY2VsbAoJY2VsbE91dDogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMuY2VsbCkgewoJCQl0aGlzLnRyaWdnZXIoJ2NlbGxPdXQnLCB0aGlzLmNlbGwpOwoJCQl0aGlzLmNlbGxEb25lKCk7CgkJCXRoaXMuY2VsbCA9IG51bGw7CgkJfQoJfSwKCgoJLy8gQ2FsbGVkIGFmdGVyIGEgY2VsbE91dC4gQWxzbyBjYWxsZWQgYmVmb3JlIGEgZHJhZ1N0b3AKCWNlbGxEb25lOiBmdW5jdGlvbigpIHsKCQlpZiAodGhpcy5jZWxsKSB7CgkJCXRoaXMudHJpZ2dlcignY2VsbERvbmUnLCB0aGlzLmNlbGwpOwoJCX0KCX0sCgoKCS8vIENhbGxlZCB3aGVuIGRyYWcgbGlzdGVuaW5nIGhhcyBzdG9wcGVkCglsaXN0ZW5TdG9wOiBmdW5jdGlvbigpIHsKCQlEcmFnTGlzdGVuZXIucHJvdG90eXBlLmxpc3RlblN0b3AuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgLy8gY2FsbCB0aGUgc3VwZXItbWV0aG9kCgoJCXRoaXMub3JpZ0NlbGwgPSB0aGlzLmNlbGwgPSBudWxsOwoJCXRoaXMuY29vcmRNYXAuY2xlYXIoKTsKCX0sCgoKCS8vIENhbGxlZCB3aGVuIHNjcm9sbGluZyBoYXMgc3RvcHBlZCwgd2hldGhlciB0aHJvdWdoIGF1dG8gc2Nyb2xsLCBvciB0aGUgdXNlciBzY3JvbGxpbmcKCXNjcm9sbFN0b3A6IGZ1bmN0aW9uKCkgewoJCURyYWdMaXN0ZW5lci5wcm90b3R5cGUuc2Nyb2xsU3RvcC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyAvLyBjYWxsIHRoZSBzdXBlci1tZXRob2QKCgkJdGhpcy5jb21wdXRlQ29vcmRzKCk7IC8vIGNlbGxzJyBhYnNvbHV0ZSBwb3NpdGlvbnMgd2lsbCBiZSBpbiBuZXcgcGxhY2VzLiByZWNvbXB1dGUKCX0sCgoKCS8vIEdldHMgdGhlIGNlbGwgdW5kZXJuZWF0aCB0aGUgY29vcmRpbmF0ZXMgZm9yIHRoZSBnaXZlbiBtb3VzZSBldmVudAoJZ2V0Q2VsbDogZnVuY3Rpb24obGVmdCwgdG9wKSB7CgoJCWlmICh0aGlzLmNvb3JkQWRqdXN0KSB7CgkJCWxlZnQgKz0gdGhpcy5jb29yZEFkanVzdC5sZWZ0OwoJCQl0b3AgKz0gdGhpcy5jb29yZEFkanVzdC50b3A7CgkJfQoKCQlyZXR1cm4gdGhpcy5jb29yZE1hcC5nZXRDZWxsKGxlZnQsIHRvcCk7Cgl9Cgp9KTsKCgovLyBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgY2VsbHMgYXJlIGlkZW50aWNhbGx5IGVxdWFsLiBgZmFsc2VgIG90aGVyd2lzZS4KLy8gVGhleSBtdXN0IGhhdmUgdGhlIHNhbWUgcm93LCBjb2wsIGFuZCBiZSBmcm9tIHRoZSBzYW1lIGdyaWQuCi8vIFR3byBudWxsIHZhbHVlcyB3aWxsIGJlIGNvbnNpZGVyZWQgZXF1YWwsIGFzIHR3byAib3V0IG9mIHRoZSBncmlkIiBzdGF0ZXMgYXJlIHRoZSBzYW1lLgpmdW5jdGlvbiBpc0NlbGxzRXF1YWwoY2VsbDEsIGNlbGwyKSB7CgoJaWYgKCFjZWxsMSAmJiAhY2VsbDIpIHsKCQlyZXR1cm4gdHJ1ZTsKCX0KCglpZiAoY2VsbDEgJiYgY2VsbDIpIHsKCQlyZXR1cm4gY2VsbDEuZ3JpZCA9PT0gY2VsbDIuZ3JpZCAmJgoJCQljZWxsMS5yb3cgPT09IGNlbGwyLnJvdyAmJgoJCQljZWxsMS5jb2wgPT09IGNlbGwyLmNvbDsKCX0KCglyZXR1cm4gZmFsc2U7Cn0KCjs7CgovKiBDcmVhdGVzIGEgY2xvbmUgb2YgYW4gZWxlbWVudCBhbmQgbGV0cyBpdCB0cmFjayB0aGUgbW91c2UgYXMgaXQgbW92ZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgTW91c2VGb2xsb3dlciA9IENsYXNzLmV4dGVuZCh7CgoJb3B0aW9uczogbnVsbCwKCglzb3VyY2VFbDogbnVsbCwgLy8gdGhlIGVsZW1lbnQgdGhhdCB3aWxsIGJlIGNsb25lZCBhbmQgbWFkZSB0byBsb29rIGxpa2UgaXQgaXMgZHJhZ2dpbmcKCWVsOiBudWxsLCAvLyB0aGUgY2xvbmUgb2YgYHNvdXJjZUVsYCB0aGF0IHdpbGwgdHJhY2sgdGhlIG1vdXNlCglwYXJlbnRFbDogbnVsbCwgLy8gdGhlIGVsZW1lbnQgdGhhdCBgZWxgICh0aGUgY2xvbmUpIHdpbGwgYmUgYXR0YWNoZWQgdG8KCgkvLyB0aGUgaW5pdGlhbCBwb3NpdGlvbiBvZiBlbCwgcmVsYXRpdmUgdG8gdGhlIG9mZnNldCBwYXJlbnQuIG1hZGUgdG8gbWF0Y2ggdGhlIGluaXRpYWwgb2Zmc2V0IG9mIHNvdXJjZUVsCgl0b3AwOiBudWxsLAoJbGVmdDA6IG51bGwsCgoJLy8gdGhlIGluaXRpYWwgcG9zaXRpb24gb2YgdGhlIG1vdXNlCgltb3VzZVkwOiBudWxsLAoJbW91c2VYMDogbnVsbCwKCgkvLyB0aGUgbnVtYmVyIG9mIHBpeGVscyB0aGUgbW91c2UgaGFzIG1vdmVkIGZyb20gaXRzIGluaXRpYWwgcG9zaXRpb24KCXRvcERlbHRhOiBudWxsLAoJbGVmdERlbHRhOiBudWxsLAoKCW1vdXNlbW92ZVByb3h5OiBudWxsLCAvLyBkb2N1bWVudCBtb3VzZW1vdmUgaGFuZGxlciwgYm91bmQgdG8gdGhlIE1vdXNlRm9sbG93ZXIncyBgdGhpc2AKCglpc0ZvbGxvd2luZzogZmFsc2UsCglpc0hpZGRlbjogZmFsc2UsCglpc0FuaW1hdGluZzogZmFsc2UsIC8vIGRvaW5nIHRoZSByZXZlcnQgYW5pbWF0aW9uPwoKCWNvbnN0cnVjdG9yOiBmdW5jdGlvbihzb3VyY2VFbCwgb3B0aW9ucykgewoJCXRoaXMub3B0aW9ucyA9IG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwoJCXRoaXMuc291cmNlRWwgPSBzb3VyY2VFbDsKCQl0aGlzLnBhcmVudEVsID0gb3B0aW9ucy5wYXJlbnRFbCA/ICQob3B0aW9ucy5wYXJlbnRFbCkgOiBzb3VyY2VFbC5wYXJlbnQoKTsgLy8gZGVmYXVsdCB0byBzb3VyY2VFbCdzIHBhcmVudAoJfSwKCgoJLy8gQ2F1c2VzIHRoZSBlbGVtZW50IHRvIHN0YXJ0IGZvbGxvd2luZyB0aGUgbW91c2UKCXN0YXJ0OiBmdW5jdGlvbihldikgewoJCWlmICghdGhpcy5pc0ZvbGxvd2luZykgewoJCQl0aGlzLmlzRm9sbG93aW5nID0gdHJ1ZTsKCgkJCXRoaXMubW91c2VZMCA9IGV2LnBhZ2VZOwoJCQl0aGlzLm1vdXNlWDAgPSBldi5wYWdlWDsKCQkJdGhpcy50b3BEZWx0YSA9IDA7CgkJCXRoaXMubGVmdERlbHRhID0gMDsKCgkJCWlmICghdGhpcy5pc0hpZGRlbikgewoJCQkJdGhpcy51cGRhdGVQb3NpdGlvbigpOwoJCQl9CgoJCQkkKGRvY3VtZW50KS5vbignbW91c2Vtb3ZlJywgdGhpcy5tb3VzZW1vdmVQcm94eSA9IHByb3h5KHRoaXMsICdtb3VzZW1vdmUnKSk7CgkJfQoJfSwKCgoJLy8gQ2F1c2VzIHRoZSBlbGVtZW50IHRvIHN0b3AgZm9sbG93aW5nIHRoZSBtb3VzZS4gSWYgc2hvdWxkUmV2ZXJ0IGlzIHRydWUsIHdpbGwgYW5pbWF0ZSBiYWNrIHRvIG9yaWdpbmFsIHBvc2l0aW9uLgoJLy8gYGNhbGxiYWNrYCBnZXRzIGludm9rZWQgd2hlbiB0aGUgYW5pbWF0aW9uIGlzIGNvbXBsZXRlLiBJZiBubyBhbmltYXRpb24sIGl0IGlzIGludm9rZWQgaW1tZWRpYXRlbHkuCglzdG9wOiBmdW5jdGlvbihzaG91bGRSZXZlcnQsIGNhbGxiYWNrKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCQl2YXIgcmV2ZXJ0RHVyYXRpb24gPSB0aGlzLm9wdGlvbnMucmV2ZXJ0RHVyYXRpb247CgoJCWZ1bmN0aW9uIGNvbXBsZXRlKCkgewoJCQl0aGlzLmlzQW5pbWF0aW5nID0gZmFsc2U7CgkJCV90aGlzLnJlbW92ZUVsZW1lbnQoKTsKCgkJCXRoaXMudG9wMCA9IHRoaXMubGVmdDAgPSBudWxsOyAvLyByZXNldCBzdGF0ZSBmb3IgZnV0dXJlIHVwZGF0ZVBvc2l0aW9uIGNhbGxzCgoJCQlpZiAoY2FsbGJhY2spIHsKCQkJCWNhbGxiYWNrKCk7CgkJCX0KCQl9CgoJCWlmICh0aGlzLmlzRm9sbG93aW5nICYmICF0aGlzLmlzQW5pbWF0aW5nKSB7IC8vIGRpc2FsbG93IG1vcmUgdGhhbiBvbmUgc3RvcCBhbmltYXRpb24gYXQgYSB0aW1lCgkJCXRoaXMuaXNGb2xsb3dpbmcgPSBmYWxzZTsKCgkJCSQoZG9jdW1lbnQpLm9mZignbW91c2Vtb3ZlJywgdGhpcy5tb3VzZW1vdmVQcm94eSk7CgoJCQlpZiAoc2hvdWxkUmV2ZXJ0ICYmIHJldmVydER1cmF0aW9uICYmICF0aGlzLmlzSGlkZGVuKSB7IC8vIGRvIGEgcmV2ZXJ0IGFuaW1hdGlvbj8KCQkJCXRoaXMuaXNBbmltYXRpbmcgPSB0cnVlOwoJCQkJdGhpcy5lbC5hbmltYXRlKHsKCQkJCQl0b3A6IHRoaXMudG9wMCwKCQkJCQlsZWZ0OiB0aGlzLmxlZnQwCgkJCQl9LCB7CgkJCQkJZHVyYXRpb246IHJldmVydER1cmF0aW9uLAoJCQkJCWNvbXBsZXRlOiBjb21wbGV0ZQoJCQkJfSk7CgkJCX0KCQkJZWxzZSB7CgkJCQljb21wbGV0ZSgpOwoJCQl9CgkJfQoJfSwKCgoJLy8gR2V0cyB0aGUgdHJhY2tpbmcgZWxlbWVudC4gQ3JlYXRlIGl0IGlmIG5lY2Vzc2FyeQoJZ2V0RWw6IGZ1bmN0aW9uKCkgewoJCXZhciBlbCA9IHRoaXMuZWw7CgoJCWlmICghZWwpIHsKCQkJdGhpcy5zb3VyY2VFbC53aWR0aCgpOyAvLyBoYWNrIHRvIGZvcmNlIElFOCB0byBjb21wdXRlIGNvcnJlY3QgYm91bmRpbmcgYm94CgkJCWVsID0gdGhpcy5lbCA9IHRoaXMuc291cmNlRWwuY2xvbmUoKQoJCQkJLmNzcyh7CgkJCQkJcG9zaXRpb246ICdhYnNvbHV0ZScsCgkJCQkJdmlzaWJpbGl0eTogJycsIC8vIGluIGNhc2Ugb3JpZ2luYWwgZWxlbWVudCB3YXMgaGlkZGVuIChjb21tb25seSB0aHJvdWdoIGhpZGVFdmVudHMoKSkKCQkJCQlkaXNwbGF5OiB0aGlzLmlzSGlkZGVuID8gJ25vbmUnIDogJycsIC8vIGZvciB3aGVuIGluaXRpYWxseSBoaWRkZW4KCQkJCQltYXJnaW46IDAsCgkJCQkJcmlnaHQ6ICdhdXRvJywgLy8gZXJhc2UgYW5kIHNldCB3aWR0aCBpbnN0ZWFkCgkJCQkJYm90dG9tOiAnYXV0bycsIC8vIGVyYXNlIGFuZCBzZXQgaGVpZ2h0IGluc3RlYWQKCQkJCQl3aWR0aDogdGhpcy5zb3VyY2VFbC53aWR0aCgpLCAvLyBleHBsaWNpdCBoZWlnaHQgaW4gY2FzZSB0aGVyZSB3YXMgYSAncmlnaHQnIHZhbHVlCgkJCQkJaGVpZ2h0OiB0aGlzLnNvdXJjZUVsLmhlaWdodCgpLCAvLyBleHBsaWNpdCB3aWR0aCBpbiBjYXNlIHRoZXJlIHdhcyBhICdib3R0b20nIHZhbHVlCgkJCQkJb3BhY2l0eTogdGhpcy5vcHRpb25zLm9wYWNpdHkgfHwgJycsCgkJCQkJekluZGV4OiB0aGlzLm9wdGlvbnMuekluZGV4CgkJCQl9KQoJCQkJLmFwcGVuZFRvKHRoaXMucGFyZW50RWwpOwoJCX0KCgkJcmV0dXJuIGVsOwoJfSwKCgoJLy8gUmVtb3ZlcyB0aGUgdHJhY2tpbmcgZWxlbWVudCBpZiBpdCBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQKCXJlbW92ZUVsZW1lbnQ6IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLmVsKSB7CgkJCXRoaXMuZWwucmVtb3ZlKCk7CgkJCXRoaXMuZWwgPSBudWxsOwoJCX0KCX0sCgoKCS8vIFVwZGF0ZSB0aGUgQ1NTIHBvc2l0aW9uIG9mIHRoZSB0cmFja2luZyBlbGVtZW50Cgl1cGRhdGVQb3NpdGlvbjogZnVuY3Rpb24oKSB7CgkJdmFyIHNvdXJjZU9mZnNldDsKCQl2YXIgb3JpZ2luOwoKCQl0aGlzLmdldEVsKCk7IC8vIGVuc3VyZSB0aGlzLmVsCgoJCS8vIG1ha2Ugc3VyZSBvcmlnaW4gaW5mbyB3YXMgY29tcHV0ZWQKCQlpZiAodGhpcy50b3AwID09PSBudWxsKSB7CgkJCXRoaXMuc291cmNlRWwud2lkdGgoKTsgLy8gaGFjayB0byBmb3JjZSBJRTggdG8gY29tcHV0ZSBjb3JyZWN0IGJvdW5kaW5nIGJveAoJCQlzb3VyY2VPZmZzZXQgPSB0aGlzLnNvdXJjZUVsLm9mZnNldCgpOwoJCQlvcmlnaW4gPSB0aGlzLmVsLm9mZnNldFBhcmVudCgpLm9mZnNldCgpOwoJCQl0aGlzLnRvcDAgPSBzb3VyY2VPZmZzZXQudG9wIC0gb3JpZ2luLnRvcDsKCQkJdGhpcy5sZWZ0MCA9IHNvdXJjZU9mZnNldC5sZWZ0IC0gb3JpZ2luLmxlZnQ7CgkJfQoKCQl0aGlzLmVsLmNzcyh7CgkJCXRvcDogdGhpcy50b3AwICsgdGhpcy50b3BEZWx0YSwKCQkJbGVmdDogdGhpcy5sZWZ0MCArIHRoaXMubGVmdERlbHRhCgkJfSk7Cgl9LAoKCgkvLyBHZXRzIGNhbGxlZCB3aGVuIHRoZSB1c2VyIG1vdmVzIHRoZSBtb3VzZQoJbW91c2Vtb3ZlOiBmdW5jdGlvbihldikgewoJCXRoaXMudG9wRGVsdGEgPSBldi5wYWdlWSAtIHRoaXMubW91c2VZMDsKCQl0aGlzLmxlZnREZWx0YSA9IGV2LnBhZ2VYIC0gdGhpcy5tb3VzZVgwOwoKCQlpZiAoIXRoaXMuaXNIaWRkZW4pIHsKCQkJdGhpcy51cGRhdGVQb3NpdGlvbigpOwoJCX0KCX0sCgoKCS8vIFRlbXBvcmFyaWx5IG1ha2VzIHRoZSB0cmFja2luZyBlbGVtZW50IGludmlzaWJsZS4gQ2FuIGJlIGNhbGxlZCBiZWZvcmUgZm9sbG93aW5nIHN0YXJ0cwoJaGlkZTogZnVuY3Rpb24oKSB7CgkJaWYgKCF0aGlzLmlzSGlkZGVuKSB7CgkJCXRoaXMuaXNIaWRkZW4gPSB0cnVlOwoJCQlpZiAodGhpcy5lbCkgewoJCQkJdGhpcy5lbC5oaWRlKCk7CgkJCX0KCQl9Cgl9LAoKCgkvLyBTaG93IHRoZSB0cmFja2luZyBlbGVtZW50IGFmdGVyIGl0IGhhcyBiZWVuIHRlbXBvcmFyaWx5IGhpZGRlbgoJc2hvdzogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMuaXNIaWRkZW4pIHsKCQkJdGhpcy5pc0hpZGRlbiA9IGZhbHNlOwoJCQl0aGlzLnVwZGF0ZVBvc2l0aW9uKCk7CgkJCXRoaXMuZ2V0RWwoKS5zaG93KCk7CgkJfQoJfQoKfSk7Cgo7OwoKLyogQSB1dGlsaXR5IGNsYXNzIGZvciByZW5kZXJpbmcgPHRyPiByb3dzLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLy8gSXQgbGV2ZXJhZ2VzIG1ldGhvZHMgb2YgdGhlIHN1YmNsYXNzIGFuZCB0aGUgVmlldyB0byBkZXRlcm1pbmUgY3VzdG9tIHJlbmRlcmluZyBiZWhhdmlvciBmb3IgZWFjaCByb3cgInR5cGUiCi8vIChzdWNoIGFzIGhpZ2hsaWdodCByb3dzLCBkYXkgcm93cywgaGVscGVyIHJvd3MsIGV0YykuCgp2YXIgUm93UmVuZGVyZXIgPSBDbGFzcy5leHRlbmQoewoKCXZpZXc6IG51bGwsIC8vIGEgVmlldyBvYmplY3QKCWlzUlRMOiBudWxsLCAvLyBzaG9ydGN1dCB0byB0aGUgdmlldydzIGlzUlRMIG9wdGlvbgoJY2VsbEh0bWw6ICc8dGQvPicsIC8vIHBsYWluIGRlZmF1bHQgSFRNTCB1c2VkIGZvciBhIGNlbGwgd2hlbiBubyBvdGhlciBpcyBhdmFpbGFibGUKCgoJY29uc3RydWN0b3I6IGZ1bmN0aW9uKHZpZXcpIHsKCQl0aGlzLnZpZXcgPSB2aWV3OwoJCXRoaXMuaXNSVEwgPSB2aWV3Lm9wdCgnaXNSVEwnKTsKCX0sCgoKCS8vIFJlbmRlcnMgdGhlIEhUTUwgZm9yIGEgcm93LCBsZXZlcmFnaW5nIGN1c3RvbSBjZWxsLUhUTUwtcmVuZGVyZXJzIGJhc2VkIG9uIHRoZSBgcm93VHlwZWAuCgkvLyBBbHNvIGFwcGxpZXMgdGhlICJpbnRybyIgYW5kICJvdXRybyIgY2VsbHMsIHdoaWNoIGFyZSBzcGVjaWZpZWQgYnkgdGhlIHN1YmNsYXNzIGFuZCB2aWV3cy4KCS8vIGByb3dgIGlzIGFuIG9wdGlvbmFsIHJvdyBudW1iZXIuCglyb3dIdG1sOiBmdW5jdGlvbihyb3dUeXBlLCByb3cpIHsKCQl2YXIgcmVuZGVyQ2VsbCA9IHRoaXMuZ2V0SHRtbFJlbmRlcmVyKCdjZWxsJywgcm93VHlwZSk7CgkJdmFyIHJvd0NlbGxIdG1sID0gJyc7CgkJdmFyIGNvbDsKCQl2YXIgY2VsbDsKCgkJcm93ID0gcm93IHx8IDA7CgoJCWZvciAoY29sID0gMDsgY29sIDwgdGhpcy5jb2xDbnQ7IGNvbCsrKSB7CgkJCWNlbGwgPSB0aGlzLmdldENlbGwocm93LCBjb2wpOwoJCQlyb3dDZWxsSHRtbCArPSByZW5kZXJDZWxsKGNlbGwpOwoJCX0KCgkJcm93Q2VsbEh0bWwgPSB0aGlzLmJvb2tlbmRDZWxscyhyb3dDZWxsSHRtbCwgcm93VHlwZSwgcm93KTsgLy8gYXBwbHkgaW50cm8gYW5kIG91dHJvCgoJCXJldHVybiAnPHRyPicgKyByb3dDZWxsSHRtbCArICc8L3RyPic7Cgl9LAoKCgkvLyBBcHBsaWVzIHRoZSAiaW50cm8iIGFuZCAib3V0cm8iIEhUTUwgdG8gdGhlIGdpdmVuIGNlbGxzLgoJLy8gSW50cm8gbWVhbnMgdGhlIGxlZnRtb3N0IGNlbGwgd2hlbiB0aGUgY2FsZW5kYXIgaXMgTFRSIGFuZCB0aGUgcmlnaHRtb3N0IGNlbGwgd2hlbiBSVEwuIFZpY2UtdmVyc2EgZm9yIG91dHJvLgoJLy8gYGNlbGxzYCBjYW4gYmUgYW4gSFRNTCBzdHJpbmcgb2YgPHRkPidzIG9yIGEgalF1ZXJ5IDx0cj4gZWxlbWVudAoJLy8gYHJvd2AgaXMgYW4gb3B0aW9uYWwgcm93IG51bWJlci4KCWJvb2tlbmRDZWxsczogZnVuY3Rpb24oY2VsbHMsIHJvd1R5cGUsIHJvdykgewoJCXZhciBpbnRybyA9IHRoaXMuZ2V0SHRtbFJlbmRlcmVyKCdpbnRybycsIHJvd1R5cGUpKHJvdyB8fCAwKTsKCQl2YXIgb3V0cm8gPSB0aGlzLmdldEh0bWxSZW5kZXJlcignb3V0cm8nLCByb3dUeXBlKShyb3cgfHwgMCk7CgkJdmFyIHByZXBlbmRIdG1sID0gdGhpcy5pc1JUTCA/IG91dHJvIDogaW50cm87CgkJdmFyIGFwcGVuZEh0bWwgPSB0aGlzLmlzUlRMID8gaW50cm8gOiBvdXRybzsKCgkJaWYgKHR5cGVvZiBjZWxscyA9PT0gJ3N0cmluZycpIHsKCQkJcmV0dXJuIHByZXBlbmRIdG1sICsgY2VsbHMgKyBhcHBlbmRIdG1sOwoJCX0KCQllbHNlIHsgLy8gYSBqUXVlcnkgPHRyPiBlbGVtZW50CgkJCXJldHVybiBjZWxscy5wcmVwZW5kKHByZXBlbmRIdG1sKS5hcHBlbmQoYXBwZW5kSHRtbCk7CgkJfQoJfSwKCgoJLy8gUmV0dXJucyBhbiBIVE1MLXJlbmRlcmluZyBmdW5jdGlvbiBnaXZlbiBhIHNwZWNpZmljIGByZW5kZXJlck5hbWVgIChsaWtlIGNlbGwsIGludHJvLCBvciBvdXRybykgYW5kIGEgc3BlY2lmaWMKCS8vIGByb3dUeXBlYCAobGlrZSBkYXksIGV2ZW50U2tlbGV0b24sIGhlbHBlclNrZWxldG9uKSwgd2hpY2ggaXMgb3B0aW9uYWwuCgkvLyBJZiBhIHJlbmRlcmVyIGZvciB0aGUgc3BlY2lmaWMgcm93VHlwZSBkb2Vzbid0IGV4aXN0LCBpdCB3aWxsIGZhbGwgYmFjayB0byBhIGdlbmVyaWMgcmVuZGVyZXIuCgkvLyBXZSB3aWxsIHF1ZXJ5IHRoZSBWaWV3IG9iamVjdCBmaXJzdCBmb3IgYW55IGN1c3RvbSByZW5kZXJpbmcgZnVuY3Rpb25zLCB0aGVuIHRoZSBtZXRob2RzIG9mIHRoZSBzdWJjbGFzcy4KCWdldEh0bWxSZW5kZXJlcjogZnVuY3Rpb24ocmVuZGVyZXJOYW1lLCByb3dUeXBlKSB7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIGdlbmVyYWxOYW1lOyAvLyBsaWtlICJjZWxsSHRtbCIKCQl2YXIgc3BlY2lmaWNOYW1lOyAvLyBsaWtlICJkYXlDZWxsSHRtbCIuIGJhc2VkIG9uIHJvd1R5cGUKCQl2YXIgcHJvdmlkZXI7IC8vIGVpdGhlciB0aGUgVmlldyBvciB0aGUgUm93UmVuZGVyZXIgc3ViY2xhc3MsIHdoaWNoZXZlciBwcm92aWRlZCB0aGUgbWV0aG9kCgkJdmFyIHJlbmRlcmVyOwoKCQlnZW5lcmFsTmFtZSA9IHJlbmRlcmVyTmFtZSArICdIdG1sJzsKCQlpZiAocm93VHlwZSkgewoJCQlzcGVjaWZpY05hbWUgPSByb3dUeXBlICsgY2FwaXRhbGlzZUZpcnN0TGV0dGVyKHJlbmRlcmVyTmFtZSkgKyAnSHRtbCc7CgkJfQoKCQlpZiAoc3BlY2lmaWNOYW1lICYmIChyZW5kZXJlciA9IHZpZXdbc3BlY2lmaWNOYW1lXSkpIHsKCQkJcHJvdmlkZXIgPSB2aWV3OwoJCX0KCQllbHNlIGlmIChzcGVjaWZpY05hbWUgJiYgKHJlbmRlcmVyID0gdGhpc1tzcGVjaWZpY05hbWVdKSkgewoJCQlwcm92aWRlciA9IHRoaXM7CgkJfQoJCWVsc2UgaWYgKChyZW5kZXJlciA9IHZpZXdbZ2VuZXJhbE5hbWVdKSkgewoJCQlwcm92aWRlciA9IHZpZXc7CgkJfQoJCWVsc2UgaWYgKChyZW5kZXJlciA9IHRoaXNbZ2VuZXJhbE5hbWVdKSkgewoJCQlwcm92aWRlciA9IHRoaXM7CgkJfQoKCQlpZiAodHlwZW9mIHJlbmRlcmVyID09PSAnZnVuY3Rpb24nKSB7CgkJCXJldHVybiBmdW5jdGlvbigpIHsKCQkJCXJldHVybiByZW5kZXJlci5hcHBseShwcm92aWRlciwgYXJndW1lbnRzKSB8fCAnJzsgLy8gdXNlIGNvcnJlY3QgYHRoaXNgIGFuZCBhbHdheXMgcmV0dXJuIGEgc3RyaW5nCgkJCX07CgkJfQoKCQkvLyB0aGUgcmVuZGVyZWQgY2FuIGJlIGEgcGxhaW4gc3RyaW5nIGFzIHdlbGwuIGlmIG5vdCBzcGVjaWZpZWQsIGFsd2F5cyBhbiBlbXB0eSBzdHJpbmcuCgkJcmV0dXJuIGZ1bmN0aW9uKCkgewoJCQlyZXR1cm4gcmVuZGVyZXIgfHwgJyc7CgkJfTsKCX0KCn0pOwoKOzsKCi8qIEFuIGFic3RyYWN0IGNsYXNzIGNvbXByaXNlZCBvZiBhICJncmlkIiBvZiBjZWxscyB0aGF0IGVhY2ggcmVwcmVzZW50IGEgc3BlY2lmaWMgZGF0ZXRpbWUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgR3JpZCA9IGZjLkdyaWQgPSBSb3dSZW5kZXJlci5leHRlbmQoewoKCXN0YXJ0OiBudWxsLCAvLyB0aGUgZGF0ZSBvZiB0aGUgZmlyc3QgY2VsbAoJZW5kOiBudWxsLCAvLyB0aGUgZGF0ZSBhZnRlciB0aGUgbGFzdCBjZWxsCgoJcm93Q250OiAwLCAvLyBudW1iZXIgb2Ygcm93cwoJY29sQ250OiAwLCAvLyBudW1iZXIgb2YgY29scwoKCWVsOiBudWxsLCAvLyB0aGUgY29udGFpbmluZyBlbGVtZW50Cgljb29yZE1hcDogbnVsbCwgLy8gYSBHcmlkQ29vcmRNYXAgdGhhdCBjb252ZXJ0cyBwaXhlbCB2YWx1ZXMgdG8gZGF0ZXRpbWVzCgllbHNCeUZpbGw6IG51bGwsIC8vIGEgaGFzaCBvZiBqUXVlcnkgZWxlbWVudCBzZXRzIHVzZWQgZm9yIHJlbmRlcmluZyBlYWNoIGZpbGwuIEtleWVkIGJ5IGZpbGwgbmFtZS4KCglleHRlcm5hbERyYWdTdGFydFByb3h5OiBudWxsLCAvLyBiaW5kcyB0aGUgR3JpZCdzIHNjb3BlIHRvIGV4dGVybmFsRHJhZ1N0YXJ0IChpbiBEYXlHcmlkLmV2ZW50cykKCgkvLyBkZXJpdmVkIGZyb20gb3B0aW9ucwoJY29sSGVhZEZvcm1hdDogbnVsbCwgLy8gVE9ETzogbW92ZSB0byBhbm90aGVyIGNsYXNzLiBub3QgYXBwbGljYWJsZSB0byBhbGwgR3JpZHMKCWV2ZW50VGltZUZvcm1hdDogbnVsbCwKCWRpc3BsYXlFdmVudFRpbWU6IG51bGwsCglkaXNwbGF5RXZlbnRFbmQ6IG51bGwsCgoJLy8gaWYgYWxsIGNlbGxzIGFyZSB0aGUgc2FtZSBsZW5ndGggb2YgdGltZSwgdGhlIGR1cmF0aW9uIHRoZXkgYWxsIHNoYXJlLiBvcHRpb25hbC4KCS8vIHdoZW4gZGVmaW5lZCwgYWxsb3dzIHRoZSBjb21wdXRlQ2VsbFJhbmdlIHNob3J0Y3V0LCBhcyB3ZWxsIGFzIGltcHJvdmVkIHJlc2l6aW5nIGJlaGF2aW9yLgoJY2VsbER1cmF0aW9uOiBudWxsLAoKCS8vIGlmIGRlZmluZWQsIGhvbGRzIHRoZSB1bml0IGlkZW50aWZpZWQgKGV4OiAieWVhciIgb3IgIm1vbnRoIikgdGhhdCBkZXRlcm1pbmVzIHRoZSBsZXZlbCBvZiBncmFudWxhcml0eQoJLy8gb2YgdGhlIGRhdGUgY2VsbHMuIGlmIG5vdCBkZWZpbmVkLCBhc3N1bWVzIHRvIGJlIGRheSBhbmQgdGltZSBncmFudWxhcml0eS4KCWxhcmdlVW5pdDogbnVsbCwKCgoJY29uc3RydWN0b3I6IGZ1bmN0aW9uKCkgewoJCVJvd1JlbmRlcmVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IC8vIGNhbGwgdGhlIHN1cGVyLWNvbnN0cnVjdG9yCgoJCXRoaXMuY29vcmRNYXAgPSBuZXcgR3JpZENvb3JkTWFwKHRoaXMpOwoJCXRoaXMuZWxzQnlGaWxsID0ge307CgkJdGhpcy5leHRlcm5hbERyYWdTdGFydFByb3h5ID0gcHJveHkodGhpcywgJ2V4dGVybmFsRHJhZ1N0YXJ0Jyk7Cgl9LAoKCgkvKiBPcHRpb25zCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBHZW5lcmF0ZXMgdGhlIGZvcm1hdCBzdHJpbmcgdXNlZCBmb3IgdGhlIHRleHQgaW4gY29sdW1uIGhlYWRlcnMsIGlmIG5vdCBleHBsaWNpdGx5IGRlZmluZWQgYnkgJ2NvbHVtbkZvcm1hdCcKCS8vIFRPRE86IG1vdmUgdG8gYW5vdGhlciBjbGFzcy4gbm90IGFwcGxpY2FibGUgdG8gYWxsIEdyaWRzCgljb21wdXRlQ29sSGVhZEZvcm1hdDogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCBpZiB0aGV5IHdhbnQgdG8gdXNlIGhlYWRIdG1sKCkKCX0sCgoKCS8vIEdlbmVyYXRlcyB0aGUgZm9ybWF0IHN0cmluZyB1c2VkIGZvciBldmVudCB0aW1lIHRleHQsIGlmIG5vdCBleHBsaWNpdGx5IGRlZmluZWQgYnkgJ3RpbWVGb3JtYXQnCgljb21wdXRlRXZlbnRUaW1lRm9ybWF0OiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy52aWV3Lm9wdCgnc21hbGxUaW1lRm9ybWF0Jyk7Cgl9LAoKCgkvLyBEZXRlcm1pbmVzIHdoZXRoZXIgZXZlbnRzIHNob3VsZCBoYXZlIHRoZWlyIGVuZCB0aW1lcyBkaXNwbGF5ZWQsIGlmIG5vdCBleHBsaWNpdGx5IGRlZmluZWQgYnkgJ2Rpc3BsYXlFdmVudFRpbWUnLgoJLy8gT25seSBhcHBsaWVzIHRvIG5vbi1hbGwtZGF5IGV2ZW50cy4KCWNvbXB1dGVEaXNwbGF5RXZlbnRUaW1lOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdHJ1ZTsKCX0sCgoKCS8vIERldGVybWluZXMgd2hldGhlciBldmVudHMgc2hvdWxkIGhhdmUgdGhlaXIgZW5kIHRpbWVzIGRpc3BsYXllZCwgaWYgbm90IGV4cGxpY2l0bHkgZGVmaW5lZCBieSAnZGlzcGxheUV2ZW50RW5kJwoJY29tcHV0ZURpc3BsYXlFdmVudEVuZDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRydWU7Cgl9LAoKCgkvKiBEYXRlcwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gVGVsbHMgdGhlIGdyaWQgYWJvdXQgd2hhdCBwZXJpb2Qgb2YgdGltZSB0byBkaXNwbGF5LgoJLy8gQW55IGRhdGUtcmVsYXRlZCBjZWxsIHN5c3RlbSBpbnRlcm5hbCBkYXRhIHNob3VsZCBiZSBnZW5lcmF0ZWQuCglzZXRSYW5nZTogZnVuY3Rpb24ocmFuZ2UpIHsKCQl0aGlzLnN0YXJ0ID0gcmFuZ2Uuc3RhcnQuY2xvbmUoKTsKCQl0aGlzLmVuZCA9IHJhbmdlLmVuZC5jbG9uZSgpOwoKCQl0aGlzLnJhbmdlVXBkYXRlZCgpOwoJCXRoaXMucHJvY2Vzc1JhbmdlT3B0aW9ucygpOwoJfSwKCgoJLy8gQ2FsbGVkIHdoZW4gaW50ZXJuYWwgdmFyaWFibGVzIHRoYXQgcmVseSBvbiB0aGUgcmFuZ2Ugc2hvdWxkIGJlIHVwZGF0ZWQKCXJhbmdlVXBkYXRlZDogZnVuY3Rpb24oKSB7Cgl9LAoKCgkvLyBVcGRhdGVzIHZhbHVlcyB0aGF0IHJlbHkgb24gb3B0aW9ucyBhbmQgYWxzbyByZWxhdGUgdG8gcmFuZ2UKCXByb2Nlc3NSYW5nZU9wdGlvbnM6IGZ1bmN0aW9uKCkgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBkaXNwbGF5RXZlbnRUaW1lOwoJCXZhciBkaXNwbGF5RXZlbnRFbmQ7CgoJCS8vIFBvcHVsYXRlIG9wdGlvbi1kZXJpdmVkIHNldHRpbmdzLiBMb29rIGZvciBvdmVycmlkZSBmaXJzdCwgdGhlbiBjb21wdXRlIGlmIG5lY2Vzc2FyeS4KCQl0aGlzLmNvbEhlYWRGb3JtYXQgPSB2aWV3Lm9wdCgnY29sdW1uRm9ybWF0JykgfHwgdGhpcy5jb21wdXRlQ29sSGVhZEZvcm1hdCgpOwoKCQl0aGlzLmV2ZW50VGltZUZvcm1hdCA9CgkJCXZpZXcub3B0KCdldmVudFRpbWVGb3JtYXQnKSB8fAoJCQl2aWV3Lm9wdCgndGltZUZvcm1hdCcpIHx8IC8vIGRlcHJlY2F0ZWQKCQkJdGhpcy5jb21wdXRlRXZlbnRUaW1lRm9ybWF0KCk7CgoJCWRpc3BsYXlFdmVudFRpbWUgPSB2aWV3Lm9wdCgnZGlzcGxheUV2ZW50VGltZScpOwoJCWlmIChkaXNwbGF5RXZlbnRUaW1lID09IG51bGwpIHsKCQkJZGlzcGxheUV2ZW50VGltZSA9IHRoaXMuY29tcHV0ZURpc3BsYXlFdmVudFRpbWUoKTsgLy8gbWlnaHQgYmUgYmFzZWQgb2ZmIG9mIHJhbmdlCgkJfQoKCQlkaXNwbGF5RXZlbnRFbmQgPSB2aWV3Lm9wdCgnZGlzcGxheUV2ZW50RW5kJyk7CgkJaWYgKGRpc3BsYXlFdmVudEVuZCA9PSBudWxsKSB7CgkJCWRpc3BsYXlFdmVudEVuZCA9IHRoaXMuY29tcHV0ZURpc3BsYXlFdmVudEVuZCgpOyAvLyBtaWdodCBiZSBiYXNlZCBvZmYgb2YgcmFuZ2UKCQl9CgoJCXRoaXMuZGlzcGxheUV2ZW50VGltZSA9IGRpc3BsYXlFdmVudFRpbWU7CgkJdGhpcy5kaXNwbGF5RXZlbnRFbmQgPSBkaXNwbGF5RXZlbnRFbmQ7Cgl9LAoKCgkvLyBDYWxsZWQgYmVmb3JlIHRoZSBncmlkJ3MgY29vcmRpbmF0ZXMgd2lsbCBuZWVkIHRvIGJlIHF1ZXJpZWQgZm9yIGNlbGxzLgoJLy8gQW55IG5vbi1kYXRlLXJlbGF0ZWQgY2VsbCBzeXN0ZW0gaW50ZXJuYWwgZGF0YSBzaG91bGQgYmUgYnVpbHQuCglidWlsZDogZnVuY3Rpb24oKSB7Cgl9LAoKCgkvLyBDYWxsZWQgYWZ0ZXIgdGhlIGdyaWQncyBjb29yZGluYXRlcyBhcmUgZG9uZSBiZWluZyByZWxpZWQgdXBvbi4KCS8vIEFueSBub24tZGF0ZS1yZWxhdGVkIGNlbGwgc3lzdGVtIGludGVybmFsIGRhdGEgc2hvdWxkIGJlIGNsZWFyZWQuCgljbGVhcjogZnVuY3Rpb24oKSB7Cgl9LAoKCgkvLyBDb252ZXJ0cyBhIHJhbmdlIHdpdGggYW4gaW5jbHVzaXZlIGBzdGFydGAgYW5kIGFuIGV4Y2x1c2l2ZSBgZW5kYCBpbnRvIGFuIGFycmF5IG9mIHNlZ21lbnQgb2JqZWN0cwoJcmFuZ2VUb1NlZ3M6IGZ1bmN0aW9uKHJhbmdlKSB7CgkJLy8gc3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudAoJfSwKCgoJLy8gRGlmZnMgdGhlIHR3byBkYXRlcywgcmV0dXJuaW5nIGEgZHVyYXRpb24sIGJhc2VkIG9uIGdyYW51bGFyaXR5IG9mIHRoZSBncmlkCglkaWZmRGF0ZXM6IGZ1bmN0aW9uKGEsIGIpIHsKCQlpZiAodGhpcy5sYXJnZVVuaXQpIHsKCQkJcmV0dXJuIGRpZmZCeVVuaXQoYSwgYiwgdGhpcy5sYXJnZVVuaXQpOwoJCX0KCQllbHNlIHsKCQkJcmV0dXJuIGRpZmZEYXlUaW1lKGEsIGIpOwoJCX0KCX0sCgoKCS8qIENlbGxzCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJLy8gTk9URTogY29sdW1ucyBhcmUgb3JkZXJlZCBsZWZ0LXRvLXJpZ2h0CgoKCS8vIEdldHMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgcm93L2NvbCBudW1iZXIsIG1pc2MgZGF0YSwgYW5kIHJhbmdlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjZWxsLgoJLy8gQWNjZXB0cyByb3cvY29sIHZhbHVlcywgYW4gb2JqZWN0IHdpdGggcm93L2NvbCBwcm9wZXJ0aWVzLCBvciBhIHNpbmdsZS1udW1iZXIgb2Zmc2V0IGZyb20gdGhlIGZpcnN0IGNlbGwuCglnZXRDZWxsOiBmdW5jdGlvbihyb3csIGNvbCkgewoJCXZhciBjZWxsOwoKCQlpZiAoY29sID09IG51bGwpIHsKCQkJaWYgKHR5cGVvZiByb3cgPT09ICdudW1iZXInKSB7IC8vIGEgc2luZ2xlLW51bWJlciBvZmZzZXQKCQkJCWNvbCA9IHJvdyAlIHRoaXMuY29sQ250OwoJCQkJcm93ID0gTWF0aC5mbG9vcihyb3cgLyB0aGlzLmNvbENudCk7CgkJCX0KCQkJZWxzZSB7IC8vIGFuIG9iamVjdCB3aXRoIHJvdy9jb2wgcHJvcGVydGllcwoJCQkJY29sID0gcm93LmNvbDsKCQkJCXJvdyA9IHJvdy5yb3c7CgkJCX0KCQl9CgoJCWNlbGwgPSB7IHJvdzogcm93LCBjb2w6IGNvbCB9OwoKCQkkLmV4dGVuZChjZWxsLCB0aGlzLmdldFJvd0RhdGEocm93KSwgdGhpcy5nZXRDb2xEYXRhKGNvbCkpOwoJCSQuZXh0ZW5kKGNlbGwsIHRoaXMuY29tcHV0ZUNlbGxSYW5nZShjZWxsKSk7CgoJCXJldHVybiBjZWxsOwoJfSwKCgoJLy8gR2l2ZW4gYSBjZWxsIG9iamVjdCB3aXRoIGluZGV4IGFuZCBtaXNjIGRhdGEsIGdlbmVyYXRlcyBhIHJhbmdlIG9iamVjdAoJLy8gSWYgdGhlIGdyaWQgaXMgbGV2ZXJhZ2luZyBjZWxsRHVyYXRpb24sIHRoaXMgZG9lc24ndCBuZWVkIHRvIGJlIGRlZmluZWQuIE9ubHkgY29tcHV0ZUNlbGxEYXRlIGRvZXMuCgkvLyBJZiBiZWluZyBvdmVycmlkZGVuLCBzaG91bGQgcmV0dXJuIGEgcmFuZ2Ugd2l0aCByZWZlcmVuY2UtZnJlZSBkYXRlIGNvcGllcy4KCWNvbXB1dGVDZWxsUmFuZ2U6IGZ1bmN0aW9uKGNlbGwpIHsKCQl2YXIgZGF0ZSA9IHRoaXMuY29tcHV0ZUNlbGxEYXRlKGNlbGwpOwoKCQlyZXR1cm4gewoJCQlzdGFydDogZGF0ZSwKCQkJZW5kOiBkYXRlLmNsb25lKCkuYWRkKHRoaXMuY2VsbER1cmF0aW9uKQoJCX07Cgl9LAoKCgkvLyBHaXZlbiBhIGNlbGwsIHJldHVybnMgaXRzIHN0YXJ0IGRhdGUuIFNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UtZnJlZSBkYXRlIGNvcHkuCgljb21wdXRlQ2VsbERhdGU6IGZ1bmN0aW9uKGNlbGwpIHsKCQkvLyBzdWJjbGFzc2VzIGNhbiBpbXBsZW1lbnQKCX0sCgoKCS8vIFJldHJpZXZlcyBtaXNjIGRhdGEgYWJvdXQgdGhlIGdpdmVuIHJvdwoJZ2V0Um93RGF0YTogZnVuY3Rpb24ocm93KSB7CgkJcmV0dXJuIHt9OwoJfSwKCgoJLy8gUmV0cmlldmVzIG1pc2MgZGF0YSBiYW91dCB0aGUgZ2l2ZW4gY29sdW1uCglnZXRDb2xEYXRhOiBmdW5jdGlvbihjb2wpIHsKCQlyZXR1cm4ge307Cgl9LAoKCgkvLyBSZXRyaWV2ZXMgdGhlIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBnaXZlbiByb3cKCWdldFJvd0VsOiBmdW5jdGlvbihyb3cpIHsKCQkvLyBzdWJjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQgaWYgbGV2ZXJhZ2luZyB0aGUgZGVmYXVsdCBnZXRDZWxsRGF5RWwoKSBvciBjb21wdXRlUm93Q29vcmRzKCkKCX0sCgoKCS8vIFJldHJpZXZlcyB0aGUgZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGdpdmVuIGNvbHVtbgoJZ2V0Q29sRWw6IGZ1bmN0aW9uKGNvbCkgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCBpZiBsZXZlcmFnaW5nIHRoZSBkZWZhdWx0IGdldENlbGxEYXlFbCgpIG9yIGNvbXB1dGVDb2xDb29yZHMoKQoJfSwKCgoJLy8gR2l2ZW4gYSBjZWxsIG9iamVjdCwgcmV0dXJucyB0aGUgZWxlbWVudCB0aGF0IHJlcHJlc2VudHMgdGhlIGNlbGwncyB3aG9sZS1kYXkKCWdldENlbGxEYXlFbDogZnVuY3Rpb24oY2VsbCkgewoJCXJldHVybiB0aGlzLmdldENvbEVsKGNlbGwuY29sKSB8fCB0aGlzLmdldFJvd0VsKGNlbGwucm93KTsKCX0sCgoKCS8qIENlbGwgQ29vcmRpbmF0ZXMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIENvbXB1dGVzIHRoZSB0b3AvYm90dG9tIGNvb3JkaW5hdGVzIG9mIGFsbCByb3dzLgoJLy8gQnkgZGVmYXVsdCwgcXVlcmllcyB0aGUgZGltZW5zaW9ucyBvZiB0aGUgZWxlbWVudCBwcm92aWRlZCBieSBnZXRSb3dFbCgpLgoJY29tcHV0ZVJvd0Nvb3JkczogZnVuY3Rpb24oKSB7CgkJdmFyIGl0ZW1zID0gW107CgkJdmFyIGksIGVsOwoJCXZhciB0b3A7CgoJCWZvciAoaSA9IDA7IGkgPCB0aGlzLnJvd0NudDsgaSsrKSB7CgkJCWVsID0gdGhpcy5nZXRSb3dFbChpKTsKCQkJdG9wID0gZWwub2Zmc2V0KCkudG9wOwoJCQlpdGVtcy5wdXNoKHsKCQkJCXRvcDogdG9wLAoJCQkJYm90dG9tOiB0b3AgKyBlbC5vdXRlckhlaWdodCgpCgkJCX0pOwoJCX0KCgkJcmV0dXJuIGl0ZW1zOwoJfSwKCgoJLy8gQ29tcHV0ZXMgdGhlIGxlZnQvcmlnaHQgY29vcmRpbmF0ZXMgb2YgYWxsIHJvd3MuCgkvLyBCeSBkZWZhdWx0LCBxdWVyaWVzIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBlbGVtZW50IHByb3ZpZGVkIGJ5IGdldENvbEVsKCkuIENvbHVtbnMgY2FuIGJlIExUUiBvciBSVEwuCgljb21wdXRlQ29sQ29vcmRzOiBmdW5jdGlvbigpIHsKCQl2YXIgaXRlbXMgPSBbXTsKCQl2YXIgaSwgZWw7CgkJdmFyIGxlZnQ7CgoJCWZvciAoaSA9IDA7IGkgPCB0aGlzLmNvbENudDsgaSsrKSB7CgkJCWVsID0gdGhpcy5nZXRDb2xFbChpKTsKCQkJbGVmdCA9IGVsLm9mZnNldCgpLmxlZnQ7CgkJCWl0ZW1zLnB1c2goewoJCQkJbGVmdDogbGVmdCwKCQkJCXJpZ2h0OiBsZWZ0ICsgZWwub3V0ZXJXaWR0aCgpCgkJCX0pOwoJCX0KCgkJcmV0dXJuIGl0ZW1zOwoJfSwKCgoJLyogUmVuZGVyaW5nCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBTZXRzIHRoZSBjb250YWluZXIgZWxlbWVudCB0aGF0IHRoZSBncmlkIHNob3VsZCByZW5kZXIgaW5zaWRlIG9mLgoJLy8gRG9lcyBvdGhlciBET00tcmVsYXRlZCBpbml0aWFsaXphdGlvbnMuCglzZXRFbGVtZW50OiBmdW5jdGlvbihlbCkgewoJCXZhciBfdGhpcyA9IHRoaXM7CgoJCXRoaXMuZWwgPSBlbDsKCgkJLy8gYXR0YWNoIGEgaGFuZGxlciB0byB0aGUgZ3JpZCdzIHJvb3QgZWxlbWVudC4KCQkvLyBqUXVlcnkgd2lsbCB0YWtlIGNhcmUgb2YgdW5yZWdpc3RlcmluZyB0aGVtIHdoZW4gcmVtb3ZlRWxlbWVudCBnZXRzIGNhbGxlZC4KCQllbC5vbignbW91c2Vkb3duJywgZnVuY3Rpb24oZXYpIHsKCQkJaWYgKAoJCQkJISQoZXYudGFyZ2V0KS5pcygnLmZjLWV2ZW50LWNvbnRhaW5lciAqLCAuZmMtbW9yZScpICYmIC8vIG5vdCBhbiBhbiBldmVudCBlbGVtZW50LCBvciAibW9yZS4uIiBsaW5rCgkJCQkhJChldi50YXJnZXQpLmNsb3Nlc3QoJy5mYy1wb3BvdmVyJykubGVuZ3RoIC8vIG5vdCBvbiBhIHBvcG92ZXIgKGxpa2UgdGhlICJtb3JlLi4iIGV2ZW50cyBvbmUpCgkJCSkgewoJCQkJX3RoaXMuZGF5TW91c2Vkb3duKGV2KTsKCQkJfQoJCX0pOwoKCQkvLyBhdHRhY2ggZXZlbnQtZWxlbWVudC1yZWxhdGVkIGhhbmRsZXJzLiBpbiBHcmlkLmV2ZW50cwoJCS8vIHNhbWUgZ2FyYmFnZSBjb2xsZWN0aW9uIG5vdGUgYXMgYWJvdmUuCgkJdGhpcy5iaW5kU2VnSGFuZGxlcnMoKTsKCgkJdGhpcy5iaW5kR2xvYmFsSGFuZGxlcnMoKTsKCX0sCgoKCS8vIFJlbW92ZXMgdGhlIGdyaWQncyBjb250YWluZXIgZWxlbWVudCBmcm9tIHRoZSBET00uIFVuZG9lcyBhbnkgb3RoZXIgRE9NLXJlbGF0ZWQgYXR0YWNobWVudHMuCgkvLyBET0VTIE5PVCByZW1vdmUgYW55IGNvbnRlbnQgYmVmb3JlaGFuZCAoZG9lc24ndCBjbGVhciBldmVudHMgb3IgY2FsbCB1bnJlbmRlckRhdGVzKSwgdW5saWtlIFZpZXcKCXJlbW92ZUVsZW1lbnQ6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5iaW5kR2xvYmFsSGFuZGxlcnMoKTsKCgkJdGhpcy5lbC5yZW1vdmUoKTsKCgkJLy8gTk9URTogd2UgZG9uJ3QgbnVsbC1vdXQgdGhpcy5lbCBmb3IgdGhlIHNhbWUgcmVhc29ucyB3ZSBkb24ndCBkbyBpdCB3aXRoaW4gVmlldzo6cmVtb3ZlRWxlbWVudAoJfSwKCgoJLy8gUmVuZGVycyB0aGUgYmFzaWMgc3RydWN0dXJlIG9mIGdyaWQgdmlldyBiZWZvcmUgYW55IGNvbnRlbnQgaXMgcmVuZGVyZWQKCXJlbmRlclNrZWxldG9uOiBmdW5jdGlvbigpIHsKCQkvLyBzdWJjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQKCX0sCgoKCS8vIFJlbmRlcnMgdGhlIGdyaWQncyBkYXRlLXJlbGF0ZWQgY29udGVudCAobGlrZSBjZWxscyB0aGF0IHJlcHJlc2VudCBkYXlzL3RpbWVzKS4KCS8vIEFzc3VtZXMgc2V0UmFuZ2UgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgYW5kIHRoZSBza2VsZXRvbiBoYXMgYWxyZWFkeSBiZWVuIHJlbmRlcmVkLgoJcmVuZGVyRGF0ZXM6IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLy8gVW5yZW5kZXJzIHRoZSBncmlkJ3MgZGF0ZS1yZWxhdGVkIGNvbnRlbnQKCXVucmVuZGVyRGF0ZXM6IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLyogSGFuZGxlcnMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIEJpbmRzIERPTSBoYW5kbGVycyB0byBlbGVtZW50cyB0aGF0IHJlc2lkZSBvdXRzaWRlIHRoZSBncmlkLCBzdWNoIGFzIHRoZSBkb2N1bWVudAoJYmluZEdsb2JhbEhhbmRsZXJzOiBmdW5jdGlvbigpIHsKCQkkKGRvY3VtZW50KS5vbignZHJhZ3N0YXJ0IHNvcnRzdGFydCcsIHRoaXMuZXh0ZXJuYWxEcmFnU3RhcnRQcm94eSk7IC8vIGpxdWkKCX0sCgoKCS8vIFVuYmluZHMgRE9NIGhhbmRsZXJzIGZyb20gZWxlbWVudHMgdGhhdCByZXNpZGUgb3V0c2lkZSB0aGUgZ3JpZAoJdW5iaW5kR2xvYmFsSGFuZGxlcnM6IGZ1bmN0aW9uKCkgewoJCSQoZG9jdW1lbnQpLm9mZignZHJhZ3N0YXJ0IHNvcnRzdGFydCcsIHRoaXMuZXh0ZXJuYWxEcmFnU3RhcnRQcm94eSk7IC8vIGpxdWkKCX0sCgoKCS8vIFByb2Nlc3MgYSBtb3VzZWRvd24gb24gYW4gZWxlbWVudCB0aGF0IHJlcHJlc2VudHMgYSBkYXkuIEZvciBkYXkgY2xpY2tpbmcgYW5kIHNlbGVjdGluZy4KCWRheU1vdXNlZG93bjogZnVuY3Rpb24oZXYpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBpc1NlbGVjdGFibGUgPSB2aWV3Lm9wdCgnc2VsZWN0YWJsZScpOwoJCXZhciBkYXlDbGlja0NlbGw7IC8vIG51bGwgaWYgaW52YWxpZCBkYXlDbGljawoJCXZhciBzZWxlY3Rpb25SYW5nZTsgLy8gbnVsbCBpZiBpbnZhbGlkIHNlbGVjdGlvbgoKCQkvLyB0aGlzIGxpc3RlbmVyIHRyYWNrcyBhIG1vdXNlZG93biBvbiBhIGRheSBlbGVtZW50LCBhbmQgYSBzdWJzZXF1ZW50IGRyYWcuCgkJLy8gaWYgdGhlIGRyYWcgZW5kcyBvbiB0aGUgc2FtZSBkYXksIGl0IGlzIGEgJ2RheUNsaWNrJy4KCQkvLyBpZiAnc2VsZWN0YWJsZScgaXMgZW5hYmxlZCwgdGhpcyBsaXN0ZW5lciBhbHNvIGRldGVjdHMgc2VsZWN0aW9ucy4KCQl2YXIgZHJhZ0xpc3RlbmVyID0gbmV3IENlbGxEcmFnTGlzdGVuZXIodGhpcy5jb29yZE1hcCwgewoJCQkvL2Rpc3RhbmNlOiA1LCAvLyBuZWVkcyBtb3JlIHdvcmsgaWYgd2Ugd2FudCBkYXlDbGljayB0byBmaXJlIGNvcnJlY3RseQoJCQlzY3JvbGw6IHZpZXcub3B0KCdkcmFnU2Nyb2xsJyksCgkJCWRyYWdTdGFydDogZnVuY3Rpb24oKSB7CgkJCQl2aWV3LnVuc2VsZWN0KCk7IC8vIHNpbmNlIHdlIGNvdWxkIGJlIHJlbmRlcmluZyBhIG5ldyBzZWxlY3Rpb24sIHdlIHdhbnQgdG8gY2xlYXIgYW55IG9sZCBvbmUKCQkJfSwKCQkJY2VsbE92ZXI6IGZ1bmN0aW9uKGNlbGwsIGlzT3JpZywgb3JpZ0NlbGwpIHsKCQkJCWlmIChvcmlnQ2VsbCkgeyAvLyBjbGljayBuZWVkcyB0byBoYXZlIHN0YXJ0ZWQgb24gYSBjZWxsCgkJCQkJZGF5Q2xpY2tDZWxsID0gaXNPcmlnID8gY2VsbCA6IG51bGw7IC8vIHNpbmdsZS1jZWxsIHNlbGVjdGlvbiBpcyBhIGRheSBjbGljawoJCQkJCWlmIChpc1NlbGVjdGFibGUpIHsKCQkJCQkJc2VsZWN0aW9uUmFuZ2UgPSBfdGhpcy5jb21wdXRlU2VsZWN0aW9uKG9yaWdDZWxsLCBjZWxsKTsKCQkJCQkJaWYgKHNlbGVjdGlvblJhbmdlKSB7CgkJCQkJCQlfdGhpcy5yZW5kZXJTZWxlY3Rpb24oc2VsZWN0aW9uUmFuZ2UpOwoJCQkJCQl9CgkJCQkJCWVsc2UgewoJCQkJCQkJZGlzYWJsZUN1cnNvcigpOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9LAoJCQljZWxsT3V0OiBmdW5jdGlvbihjZWxsKSB7CgkJCQlkYXlDbGlja0NlbGwgPSBudWxsOwoJCQkJc2VsZWN0aW9uUmFuZ2UgPSBudWxsOwoJCQkJX3RoaXMudW5yZW5kZXJTZWxlY3Rpb24oKTsKCQkJCWVuYWJsZUN1cnNvcigpOwoJCQl9LAoJCQlsaXN0ZW5TdG9wOiBmdW5jdGlvbihldikgewoJCQkJaWYgKGRheUNsaWNrQ2VsbCkgewoJCQkJCXZpZXcudHJpZ2dlckRheUNsaWNrKGRheUNsaWNrQ2VsbCwgX3RoaXMuZ2V0Q2VsbERheUVsKGRheUNsaWNrQ2VsbCksIGV2KTsKCQkJCX0KCQkJCWlmIChzZWxlY3Rpb25SYW5nZSkgewoJCQkJCS8vIHRoZSBzZWxlY3Rpb24gd2lsbCBhbHJlYWR5IGhhdmUgYmVlbiByZW5kZXJlZC4ganVzdCByZXBvcnQgaXQKCQkJCQl2aWV3LnJlcG9ydFNlbGVjdGlvbihzZWxlY3Rpb25SYW5nZSwgZXYpOwoJCQkJfQoJCQkJZW5hYmxlQ3Vyc29yKCk7CgkJCX0KCQl9KTsKCgkJZHJhZ0xpc3RlbmVyLm1vdXNlZG93bihldik7IC8vIHN0YXJ0IGxpc3RlbmluZywgd2hpY2ggd2lsbCBldmVudHVhbGx5IGluaXRpYXRlIGEgZHJhZ1N0YXJ0Cgl9LAoKCgkvKiBFdmVudCBIZWxwZXIKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgkvLyBUT0RPOiBzaG91bGQgcHJvYmFibHkgbW92ZSB0aGlzIHRvIEdyaWQuZXZlbnRzLCBsaWtlIHdlIGRpZCBldmVudCBkcmFnZ2luZyAvIHJlc2l6aW5nCgoKCS8vIFJlbmRlcnMgYSBtb2NrIGV2ZW50IG92ZXIgdGhlIGdpdmVuIHJhbmdlCglyZW5kZXJSYW5nZUhlbHBlcjogZnVuY3Rpb24ocmFuZ2UsIHNvdXJjZVNlZykgewoJCXZhciBmYWtlRXZlbnQgPSB0aGlzLmZhYnJpY2F0ZUhlbHBlckV2ZW50KHJhbmdlLCBzb3VyY2VTZWcpOwoKCQl0aGlzLnJlbmRlckhlbHBlcihmYWtlRXZlbnQsIHNvdXJjZVNlZyk7IC8vIGRvIHRoZSBhY3R1YWwgcmVuZGVyaW5nCgl9LAoKCgkvLyBCdWlsZHMgYSBmYWtlIGV2ZW50IGdpdmVuIGEgZGF0ZSByYW5nZSBpdCBzaG91bGQgY292ZXIsIGFuZCBhIHNlZ21lbnQgaXMgc2hvdWxkIGJlIGluc3BpcmVkIGZyb20uCgkvLyBUaGUgcmFuZ2UncyBlbmQgY2FuIGJlIG51bGwsIGluIHdoaWNoIGNhc2UgdGhlIG1vY2sgZXZlbnQgdGhhdCBpcyByZW5kZXJlZCB3aWxsIGhhdmUgYSBudWxsIGVuZCB0aW1lLgoJLy8gYHNvdXJjZVNlZ2AgaXMgdGhlIGludGVybmFsIHNlZ21lbnQgb2JqZWN0IGludm9sdmVkIGluIHRoZSBkcmFnLiBJZiBudWxsLCBzb21ldGhpbmcgZXh0ZXJuYWwgaXMgZHJhZ2dpbmcuCglmYWJyaWNhdGVIZWxwZXJFdmVudDogZnVuY3Rpb24ocmFuZ2UsIHNvdXJjZVNlZykgewoJCXZhciBmYWtlRXZlbnQgPSBzb3VyY2VTZWcgPyBjcmVhdGVPYmplY3Qoc291cmNlU2VnLmV2ZW50KSA6IHt9OyAvLyBtYXNrIHRoZSBvcmlnaW5hbCBldmVudCBvYmplY3QgaWYgcG9zc2libGUKCgkJZmFrZUV2ZW50LnN0YXJ0ID0gcmFuZ2Uuc3RhcnQuY2xvbmUoKTsKCQlmYWtlRXZlbnQuZW5kID0gcmFuZ2UuZW5kID8gcmFuZ2UuZW5kLmNsb25lKCkgOiBudWxsOwoJCWZha2VFdmVudC5hbGxEYXkgPSBudWxsOyAvLyBmb3JjZSBpdCB0byBiZSBmcmVzaGx5IGNvbXB1dGVkIGJ5IG5vcm1hbGl6ZUV2ZW50UmFuZ2UKCQl0aGlzLnZpZXcuY2FsZW5kYXIubm9ybWFsaXplRXZlbnRSYW5nZShmYWtlRXZlbnQpOwoKCQkvLyB0aGlzIGV4dHJhIGNsYXNzTmFtZSB3aWxsIGJlIHVzZWZ1bCBmb3IgZGlmZmVyZW50aWF0aW5nIHJlYWwgZXZlbnRzIGZyb20gbW9jayBldmVudHMgaW4gQ1NTCgkJZmFrZUV2ZW50LmNsYXNzTmFtZSA9IChmYWtlRXZlbnQuY2xhc3NOYW1lIHx8IFtdKS5jb25jYXQoJ2ZjLWhlbHBlcicpOwoKCQkvLyBpZiBzb21ldGhpbmcgZXh0ZXJuYWwgaXMgYmVpbmcgZHJhZ2dlZCBpbiwgZG9uJ3QgcmVuZGVyIGEgcmVzaXplcgoJCWlmICghc291cmNlU2VnKSB7CgkJCWZha2VFdmVudC5lZGl0YWJsZSA9IGZhbHNlOwoJCX0KCgkJcmV0dXJuIGZha2VFdmVudDsKCX0sCgoKCS8vIFJlbmRlcnMgYSBtb2NrIGV2ZW50CglyZW5kZXJIZWxwZXI6IGZ1bmN0aW9uKGV2ZW50LCBzb3VyY2VTZWcpIHsKCQkvLyBzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYSBtb2NrIGV2ZW50Cgl1bnJlbmRlckhlbHBlcjogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudAoJfSwKCgoJLyogU2VsZWN0aW9uCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZW5kZXJzIGEgdmlzdWFsIGluZGljYXRpb24gb2YgYSBzZWxlY3Rpb24uIFdpbGwgaGlnaGxpZ2h0IGJ5IGRlZmF1bHQgYnV0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCglyZW5kZXJTZWxlY3Rpb246IGZ1bmN0aW9uKHJhbmdlKSB7CgkJdGhpcy5yZW5kZXJIaWdobGlnaHQodGhpcy5zZWxlY3Rpb25SYW5nZVRvU2VncyhyYW5nZSkpOwoJfSwKCgoJLy8gVW5yZW5kZXJzIGFueSB2aXN1YWwgaW5kaWNhdGlvbnMgb2YgYSBzZWxlY3Rpb24uIFdpbGwgdW5yZW5kZXIgYSBoaWdobGlnaHQgYnkgZGVmYXVsdC4KCXVucmVuZGVyU2VsZWN0aW9uOiBmdW5jdGlvbigpIHsKCQl0aGlzLnVucmVuZGVySGlnaGxpZ2h0KCk7Cgl9LAoKCgkvLyBHaXZlbiB0aGUgZmlyc3QgYW5kIGxhc3QgY2VsbHMgb2YgYSBzZWxlY3Rpb24sIHJldHVybnMgYSByYW5nZSBvYmplY3QuCgkvLyBXaWxsIHJldHVybiBzb21ldGhpbmcgZmFsc3kgaWYgdGhlIHNlbGVjdGlvbiBpcyBpbnZhbGlkICh3aGVuIG91dHNpZGUgb2Ygc2VsZWN0aW9uQ29uc3RyYWludCBmb3IgZXhhbXBsZSkuCgkvLyBTdWJjbGFzc2VzIGNhbiBvdmVycmlkZSBhbmQgcHJvdmlkZSBhZGRpdGlvbmFsIGRhdGEgaW4gdGhlIHJhbmdlIG9iamVjdC4gV2lsbCBiZSBwYXNzZWQgdG8gcmVuZGVyU2VsZWN0aW9uKCkuCgljb21wdXRlU2VsZWN0aW9uOiBmdW5jdGlvbihmaXJzdENlbGwsIGxhc3RDZWxsKSB7CgkJdmFyIGRhdGVzID0gWwoJCQlmaXJzdENlbGwuc3RhcnQsCgkJCWZpcnN0Q2VsbC5lbmQsCgkJCWxhc3RDZWxsLnN0YXJ0LAoJCQlsYXN0Q2VsbC5lbmQKCQldOwoJCXZhciByYW5nZTsKCgkJZGF0ZXMuc29ydChjb21wYXJlTnVtYmVycyk7IC8vIHNvcnRzIGNocm9ub2xvZ2ljYWxseS4gd29ya3Mgd2l0aCBNb21lbnRzCgoJCXJhbmdlID0gewoJCQlzdGFydDogZGF0ZXNbMF0uY2xvbmUoKSwKCQkJZW5kOiBkYXRlc1szXS5jbG9uZSgpCgkJfTsKCgkJaWYgKCF0aGlzLnZpZXcuY2FsZW5kYXIuaXNTZWxlY3Rpb25SYW5nZUFsbG93ZWQocmFuZ2UpKSB7CgkJCXJldHVybiBudWxsOwoJCX0KCgkJcmV0dXJuIHJhbmdlOwoJfSwKCgoJc2VsZWN0aW9uUmFuZ2VUb1NlZ3M6IGZ1bmN0aW9uKHJhbmdlKSB7CgkJcmV0dXJuIHRoaXMucmFuZ2VUb1NlZ3MocmFuZ2UpOwoJfSwKCgoJLyogSGlnaGxpZ2h0CgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZW5kZXJzIGFuIGVtcGhhc2lzIG9uIHRoZSBnaXZlbiBkYXRlIHJhbmdlLiBHaXZlbiBhbiBhcnJheSBvZiBzZWdtZW50cy4KCXJlbmRlckhpZ2hsaWdodDogZnVuY3Rpb24oc2VncykgewoJCXRoaXMucmVuZGVyRmlsbCgnaGlnaGxpZ2h0Jywgc2Vncyk7Cgl9LAoKCgkvLyBVbnJlbmRlcnMgdGhlIGVtcGhhc2lzIG9uIGEgZGF0ZSByYW5nZQoJdW5yZW5kZXJIaWdobGlnaHQ6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5yZW5kZXJGaWxsKCdoaWdobGlnaHQnKTsKCX0sCgoKCS8vIEdlbmVyYXRlcyBhbiBhcnJheSBvZiBjbGFzc05hbWVzIGZvciByZW5kZXJpbmcgdGhlIGhpZ2hsaWdodC4gVXNlZCBieSB0aGUgZmlsbCBzeXN0ZW0uCgloaWdobGlnaHRTZWdDbGFzc2VzOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gWyAnZmMtaGlnaGxpZ2h0JyBdOwoJfSwKCgoJLyogRmlsbCBTeXN0ZW0gKGhpZ2hsaWdodCwgYmFja2dyb3VuZCBldmVudHMsIGJ1c2luZXNzIGhvdXJzKQoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVuZGVycyBhIHNldCBvZiByZWN0YW5nbGVzIG92ZXIgdGhlIGdpdmVuIHNlZ21lbnRzIG9mIHRpbWUuCgkvLyBNVVNUIFJFVFVSTiBhIHN1YnNldCBvZiBzZWdzLCB0aGUgc2VncyB0aGF0IHdlcmUgYWN0dWFsbHkgcmVuZGVyZWQuCgkvLyBSZXNwb25zaWJsZSBmb3IgcG9wdWxhdGluZyB0aGlzLmVsc0J5RmlsbC4gVE9ETzogYmV0dGVyIEFQSSBmb3IgZXhwcmVzc2luZyB0aGlzIHJlcXVpcmVtZW50CglyZW5kZXJGaWxsOiBmdW5jdGlvbih0eXBlLCBzZWdzKSB7CgkJLy8gc3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudAoJfSwKCgoJLy8gVW5yZW5kZXJzIGEgc3BlY2lmaWMgdHlwZSBvZiBmaWxsIHRoYXQgaXMgY3VycmVudGx5IHJlbmRlcmVkIG9uIHRoZSBncmlkCgl1bnJlbmRlckZpbGw6IGZ1bmN0aW9uKHR5cGUpIHsKCQl2YXIgZWwgPSB0aGlzLmVsc0J5RmlsbFt0eXBlXTsKCgkJaWYgKGVsKSB7CgkJCWVsLnJlbW92ZSgpOwoJCQlkZWxldGUgdGhpcy5lbHNCeUZpbGxbdHlwZV07CgkJfQoJfSwKCgoJLy8gUmVuZGVycyBhbmQgYXNzaWducyBhbiBgZWxgIHByb3BlcnR5IGZvciBlYWNoIGZpbGwgc2VnbWVudC4gR2VuZXJpYyBlbm91Z2ggdG8gd29yayB3aXRoIGRpZmZlcmVudCB0eXBlcy4KCS8vIE9ubHkgcmV0dXJucyBzZWdtZW50cyB0aGF0IHN1Y2Nlc3NmdWxseSByZW5kZXJlZC4KCS8vIFRvIGJlIGhhcm5lc3NlZCBieSByZW5kZXJGaWxsIChpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzKS4KCS8vIEFuYWxhZ291cyB0byByZW5kZXJGZ1NlZ0Vscy4KCXJlbmRlckZpbGxTZWdFbHM6IGZ1bmN0aW9uKHR5cGUsIHNlZ3MpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoJCXZhciBzZWdFbE1ldGhvZCA9IHRoaXNbdHlwZSArICdTZWdFbCddOwoJCXZhciBodG1sID0gJyc7CgkJdmFyIHJlbmRlcmVkU2VncyA9IFtdOwoJCXZhciBpOwoKCQlpZiAoc2Vncy5sZW5ndGgpIHsKCgkJCS8vIGJ1aWxkIGEgbGFyZ2UgY29uY2F0ZW5hdGlvbiBvZiBzZWdtZW50IEhUTUwKCQkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJCWh0bWwgKz0gdGhpcy5maWxsU2VnSHRtbCh0eXBlLCBzZWdzW2ldKTsKCQkJfQoKCQkJLy8gR3JhYiBpbmRpdmlkdWFsIGVsZW1lbnRzIGZyb20gdGhlIGNvbWJpbmVkIEhUTUwgc3RyaW5nLiBVc2UgZWFjaCBhcyB0aGUgZGVmYXVsdCByZW5kZXJpbmcuCgkJCS8vIFRoZW4sIGNvbXB1dGUgdGhlICdlbCcgZm9yIGVhY2ggc2VnbWVudC4KCQkJJChodG1sKS5lYWNoKGZ1bmN0aW9uKGksIG5vZGUpIHsKCQkJCXZhciBzZWcgPSBzZWdzW2ldOwoJCQkJdmFyIGVsID0gJChub2RlKTsKCgkJCQkvLyBhbGxvdyBjdXN0b20gZmlsdGVyIG1ldGhvZHMgcGVyLXR5cGUKCQkJCWlmIChzZWdFbE1ldGhvZCkgewoJCQkJCWVsID0gc2VnRWxNZXRob2QuY2FsbChfdGhpcywgc2VnLCBlbCk7CgkJCQl9CgoJCQkJaWYgKGVsKSB7IC8vIGN1c3RvbSBmaWx0ZXJzIGRpZCBub3QgY2FuY2VsIHRoZSByZW5kZXIKCQkJCQllbCA9ICQoZWwpOyAvLyBhbGxvdyBjdXN0b20gZmlsdGVyIHRvIHJldHVybiByYXcgRE9NIG5vZGUKCgkJCQkJLy8gY29ycmVjdCBlbGVtZW50IHR5cGU/ICh3b3VsZCBiZSBiYWQgaWYgYSBub24tVEQgd2VyZSBpbnNlcnRlZCBpbnRvIGEgdGFibGUgZm9yIGV4YW1wbGUpCgkJCQkJaWYgKGVsLmlzKF90aGlzLmZpbGxTZWdUYWcpKSB7CgkJCQkJCXNlZy5lbCA9IGVsOwoJCQkJCQlyZW5kZXJlZFNlZ3MucHVzaChzZWcpOwoJCQkJCX0KCQkJCX0KCQkJfSk7CgkJfQoKCQlyZXR1cm4gcmVuZGVyZWRTZWdzOwoJfSwKCgoJZmlsbFNlZ1RhZzogJ2RpdicsIC8vIHN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlCgoKCS8vIEJ1aWxkcyB0aGUgSFRNTCBuZWVkZWQgZm9yIG9uZSBmaWxsIHNlZ21lbnQuIEdlbmVyaWMgZW5vdWdodCBvIHdvcmsgd2l0aCBkaWZmZXJlbnQgdHlwZXMuCglmaWxsU2VnSHRtbDogZnVuY3Rpb24odHlwZSwgc2VnKSB7CgoJCS8vIGN1c3RvbSBob29rcyBwZXItdHlwZQoJCXZhciBjbGFzc2VzTWV0aG9kID0gdGhpc1t0eXBlICsgJ1NlZ0NsYXNzZXMnXTsKCQl2YXIgY3NzTWV0aG9kID0gdGhpc1t0eXBlICsgJ1NlZ0NzcyddOwoKCQl2YXIgY2xhc3NlcyA9IGNsYXNzZXNNZXRob2QgPyBjbGFzc2VzTWV0aG9kLmNhbGwodGhpcywgc2VnKSA6IFtdOwoJCXZhciBjc3MgPSBjc3NUb1N0cihjc3NNZXRob2QgPyBjc3NNZXRob2QuY2FsbCh0aGlzLCBzZWcpIDoge30pOwoKCQlyZXR1cm4gJzwnICsgdGhpcy5maWxsU2VnVGFnICsKCQkJKGNsYXNzZXMubGVuZ3RoID8gJyBjbGFzcz0iJyArIGNsYXNzZXMuam9pbignICcpICsgJyInIDogJycpICsKCQkJKGNzcyA/ICcgc3R5bGU9IicgKyBjc3MgKyAnIicgOiAnJykgKwoJCQknIC8+JzsKCX0sCgoKCS8qIEdlbmVyaWMgcmVuZGVyaW5nIHV0aWxpdGllcyBmb3Igc3ViY2xhc3NlcwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVuZGVycyBhIGRheS1vZi13ZWVrIGhlYWRlciByb3cuCgkvLyBUT0RPOiBtb3ZlIHRvIGFub3RoZXIgY2xhc3MuIG5vdCBhcHBsaWNhYmxlIHRvIGFsbCBHcmlkcwoJaGVhZEh0bWw6IGZ1bmN0aW9uKCkgewoJCXJldHVybiAnJyArCgkJCSc8ZGl2IGNsYXNzPSJmYy1yb3cgJyArIHRoaXMudmlldy53aWRnZXRIZWFkZXJDbGFzcyArICciPicgKwoJCQkJJzx0YWJsZT4nICsKCQkJCQknPHRoZWFkPicgKwoJCQkJCQl0aGlzLnJvd0h0bWwoJ2hlYWQnKSArIC8vIGxldmVyYWdlcyBSb3dSZW5kZXJlcgoJCQkJCSc8L3RoZWFkPicgKwoJCQkJJzwvdGFibGU+JyArCgkJCSc8L2Rpdj4nOwoJfSwKCgoJLy8gVXNlZCBieSB0aGUgYGhlYWRIdG1sYCBtZXRob2QsIHZpYSBSb3dSZW5kZXJlciwgZm9yIHJlbmRlcmluZyB0aGUgSFRNTCBvZiBhIGRheS1vZi13ZWVrIGhlYWRlciBjZWxsCgkvLyBUT0RPOiBtb3ZlIHRvIGFub3RoZXIgY2xhc3MuIG5vdCBhcHBsaWNhYmxlIHRvIGFsbCBHcmlkcwoJaGVhZENlbGxIdG1sOiBmdW5jdGlvbihjZWxsKSB7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIGRhdGUgPSBjZWxsLnN0YXJ0OwoKCQlyZXR1cm4gJycgKwoJCQknPHRoIGNsYXNzPSJmYy1kYXktaGVhZGVyICcgKyB2aWV3LndpZGdldEhlYWRlckNsYXNzICsgJyBmYy0nICsgZGF5SURzW2RhdGUuZGF5KCldICsgJyI+JyArCgkJCQlodG1sRXNjYXBlKGRhdGUuZm9ybWF0KHRoaXMuY29sSGVhZEZvcm1hdCkpICsKCQkJJzwvdGg+JzsKCX0sCgoKCS8vIFJlbmRlcnMgdGhlIEhUTUwgZm9yIGEgc2luZ2xlLWRheSBiYWNrZ3JvdW5kIGNlbGwKCWJnQ2VsbEh0bWw6IGZ1bmN0aW9uKGNlbGwpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgZGF0ZSA9IGNlbGwuc3RhcnQ7CgkJdmFyIGNsYXNzZXMgPSB0aGlzLmdldERheUNsYXNzZXMoZGF0ZSk7CgoJCWNsYXNzZXMudW5zaGlmdCgnZmMtZGF5Jywgdmlldy53aWRnZXRDb250ZW50Q2xhc3MpOwoKCQlyZXR1cm4gJzx0ZCBjbGFzcz0iJyArIGNsYXNzZXMuam9pbignICcpICsgJyInICsKCQkJJyBkYXRhLWRhdGU9IicgKyBkYXRlLmZvcm1hdCgnWVlZWS1NTS1ERCcpICsgJyInICsgLy8gaWYgZGF0ZSBoYXMgYSB0aW1lLCB3b24ndCBmb3JtYXQgaXQKCQkJJz48L3RkPic7Cgl9LAoKCgkvLyBDb21wdXRlcyBIVE1MIGNsYXNzTmFtZXMgZm9yIGEgc2luZ2xlLWRheSBjZWxsCglnZXREYXlDbGFzc2VzOiBmdW5jdGlvbihkYXRlKSB7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIHRvZGF5ID0gdmlldy5jYWxlbmRhci5nZXROb3coKS5zdHJpcFRpbWUoKTsKCQl2YXIgY2xhc3NlcyA9IFsgJ2ZjLScgKyBkYXlJRHNbZGF0ZS5kYXkoKV0gXTsKCgkJaWYgKAoJCQl2aWV3LmludGVydmFsRHVyYXRpb24uYXMoJ21vbnRocycpID09IDEgJiYKCQkJZGF0ZS5tb250aCgpICE9IHZpZXcuaW50ZXJ2YWxTdGFydC5tb250aCgpCgkJKSB7CgkJCWNsYXNzZXMucHVzaCgnZmMtb3RoZXItbW9udGgnKTsKCQl9CgoJCWlmIChkYXRlLmlzU2FtZSh0b2RheSwgJ2RheScpKSB7CgkJCWNsYXNzZXMucHVzaCgKCQkJCSdmYy10b2RheScsCgkJCQl2aWV3LmhpZ2hsaWdodFN0YXRlQ2xhc3MKCQkJKTsKCQl9CgkJZWxzZSBpZiAoZGF0ZSA8IHRvZGF5KSB7CgkJCWNsYXNzZXMucHVzaCgnZmMtcGFzdCcpOwoJCX0KCQllbHNlIHsKCQkJY2xhc3Nlcy5wdXNoKCdmYy1mdXR1cmUnKTsKCQl9CgoJCXJldHVybiBjbGFzc2VzOwoJfQoKfSk7Cgo7OwoKLyogRXZlbnQtcmVuZGVyaW5nIGFuZCBldmVudC1pbnRlcmFjdGlvbiBtZXRob2RzIGZvciB0aGUgYWJzdHJhY3QgR3JpZCBjbGFzcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCkdyaWQubWl4aW4oewoKCW1vdXNlZE92ZXJTZWc6IG51bGwsIC8vIHRoZSBzZWdtZW50IG9iamVjdCB0aGUgdXNlcidzIG1vdXNlIGlzIG92ZXIuIG51bGwgaWYgb3ZlciBub3RoaW5nCglpc0RyYWdnaW5nU2VnOiBmYWxzZSwgLy8gaXMgYSBzZWdtZW50IGJlaW5nIGRyYWdnZWQ/IGJvb2xlYW4KCWlzUmVzaXppbmdTZWc6IGZhbHNlLCAvLyBpcyBhIHNlZ21lbnQgYmVpbmcgcmVzaXplZD8gYm9vbGVhbgoJaXNEcmFnZ2luZ0V4dGVybmFsOiBmYWxzZSwgLy8ganF1aS1kcmFnZ2luZyBhbiBleHRlcm5hbCBlbGVtZW50PyBib29sZWFuCglzZWdzOiBudWxsLCAvLyB0aGUgZXZlbnQgc2VnbWVudHMgY3VycmVudGx5IHJlbmRlcmVkIGluIHRoZSBncmlkCgoKCS8vIFJlbmRlcnMgdGhlIGdpdmVuIGV2ZW50cyBvbnRvIHRoZSBncmlkCglyZW5kZXJFdmVudHM6IGZ1bmN0aW9uKGV2ZW50cykgewoJCXZhciBzZWdzID0gdGhpcy5ldmVudHNUb1NlZ3MoZXZlbnRzKTsKCQl2YXIgYmdTZWdzID0gW107CgkJdmFyIGZnU2VncyA9IFtdOwoJCXZhciBpLCBzZWc7CgoJCWZvciAoaSA9IDA7IGkgPCBzZWdzLmxlbmd0aDsgaSsrKSB7CgkJCXNlZyA9IHNlZ3NbaV07CgoJCQlpZiAoaXNCZ0V2ZW50KHNlZy5ldmVudCkpIHsKCQkJCWJnU2Vncy5wdXNoKHNlZyk7CgkJCX0KCQkJZWxzZSB7CgkJCQlmZ1NlZ3MucHVzaChzZWcpOwoJCQl9CgkJfQoKCQkvLyBSZW5kZXIgZWFjaCBkaWZmZXJlbnQgdHlwZSBvZiBzZWdtZW50LgoJCS8vIEVhY2ggZnVuY3Rpb24gbWF5IHJldHVybiBhIHN1YnNldCBvZiB0aGUgc2Vncywgc2VncyB0aGF0IHdlcmUgYWN0dWFsbHkgcmVuZGVyZWQuCgkJYmdTZWdzID0gdGhpcy5yZW5kZXJCZ1NlZ3MoYmdTZWdzKSB8fCBiZ1NlZ3M7CgkJZmdTZWdzID0gdGhpcy5yZW5kZXJGZ1NlZ3MoZmdTZWdzKSB8fCBmZ1NlZ3M7CgoJCXRoaXMuc2VncyA9IGJnU2Vncy5jb25jYXQoZmdTZWdzKTsKCX0sCgoKCS8vIFVucmVuZGVycyBhbGwgZXZlbnRzIGN1cnJlbnRseSByZW5kZXJlZCBvbiB0aGUgZ3JpZAoJdW5yZW5kZXJFdmVudHM6IGZ1bmN0aW9uKCkgewoJCXRoaXMudHJpZ2dlclNlZ01vdXNlb3V0KCk7IC8vIHRyaWdnZXIgYW4gZXZlbnRNb3VzZW91dCBpZiB1c2VyJ3MgbW91c2UgaXMgb3ZlciBhbiBldmVudAoKCQl0aGlzLnVucmVuZGVyRmdTZWdzKCk7CgkJdGhpcy51bnJlbmRlckJnU2VncygpOwoKCQl0aGlzLnNlZ3MgPSBudWxsOwoJfSwKCgoJLy8gUmV0cmlldmVzIGFsbCByZW5kZXJlZCBzZWdtZW50IG9iamVjdHMgY3VycmVudGx5IHJlbmRlcmVkIG9uIHRoZSBncmlkCglnZXRFdmVudFNlZ3M6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0aGlzLnNlZ3MgfHwgW107Cgl9LAoKCgkvKiBGb3JlZ3JvdW5kIFNlZ21lbnQgUmVuZGVyaW5nCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZW5kZXJzIGZvcmVncm91bmQgZXZlbnQgc2VnbWVudHMgb250byB0aGUgZ3JpZC4gTWF5IHJldHVybiBhIHN1YnNldCBvZiBzZWdzIHRoYXQgd2VyZSByZW5kZXJlZC4KCXJlbmRlckZnU2VnczogZnVuY3Rpb24oc2VncykgewoJCS8vIHN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQKCX0sCgoKCS8vIFVucmVuZGVycyBhbGwgY3VycmVudGx5IHJlbmRlcmVkIGZvcmVncm91bmQgc2VnbWVudHMKCXVucmVuZGVyRmdTZWdzOiBmdW5jdGlvbigpIHsKCQkvLyBzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50Cgl9LAoKCgkvLyBSZW5kZXJzIGFuZCBhc3NpZ25zIGFuIGBlbGAgcHJvcGVydHkgZm9yIGVhY2ggZm9yZWdyb3VuZCBldmVudCBzZWdtZW50LgoJLy8gT25seSByZXR1cm5zIHNlZ21lbnRzIHRoYXQgc3VjY2Vzc2Z1bGx5IHJlbmRlcmVkLgoJLy8gQSB1dGlsaXR5IHRoYXQgc3ViY2xhc3NlcyBtYXkgdXNlLgoJcmVuZGVyRmdTZWdFbHM6IGZ1bmN0aW9uKHNlZ3MsIGRpc2FibGVSZXNpemluZykgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBodG1sID0gJyc7CgkJdmFyIHJlbmRlcmVkU2VncyA9IFtdOwoJCXZhciBpOwoKCQlpZiAoc2Vncy5sZW5ndGgpIHsgLy8gZG9uJ3QgYnVpbGQgYW4gZW1wdHkgaHRtbCBzdHJpbmcKCgkJCS8vIGJ1aWxkIGEgbGFyZ2UgY29uY2F0ZW5hdGlvbiBvZiBldmVudCBzZWdtZW50IEhUTUwKCQkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJCWh0bWwgKz0gdGhpcy5mZ1NlZ0h0bWwoc2Vnc1tpXSwgZGlzYWJsZVJlc2l6aW5nKTsKCQkJfQoKCQkJLy8gR3JhYiBpbmRpdmlkdWFsIGVsZW1lbnRzIGZyb20gdGhlIGNvbWJpbmVkIEhUTUwgc3RyaW5nLiBVc2UgZWFjaCBhcyB0aGUgZGVmYXVsdCByZW5kZXJpbmcuCgkJCS8vIFRoZW4sIGNvbXB1dGUgdGhlICdlbCcgZm9yIGVhY2ggc2VnbWVudC4gQW4gZWwgbWlnaHQgYmUgbnVsbCBpZiB0aGUgZXZlbnRSZW5kZXIgY2FsbGJhY2sgcmV0dXJuZWQgZmFsc2UuCgkJCSQoaHRtbCkuZWFjaChmdW5jdGlvbihpLCBub2RlKSB7CgkJCQl2YXIgc2VnID0gc2Vnc1tpXTsKCQkJCXZhciBlbCA9IHZpZXcucmVzb2x2ZUV2ZW50RWwoc2VnLmV2ZW50LCAkKG5vZGUpKTsKCgkJCQlpZiAoZWwpIHsKCQkJCQllbC5kYXRhKCdmYy1zZWcnLCBzZWcpOyAvLyB1c2VkIGJ5IGhhbmRsZXJzCgkJCQkJc2VnLmVsID0gZWw7CgkJCQkJcmVuZGVyZWRTZWdzLnB1c2goc2VnKTsKCQkJCX0KCQkJfSk7CgkJfQoKCQlyZXR1cm4gcmVuZGVyZWRTZWdzOwoJfSwKCgoJLy8gR2VuZXJhdGVzIHRoZSBIVE1MIGZvciB0aGUgZGVmYXVsdCByZW5kZXJpbmcgb2YgYSBmb3JlZ3JvdW5kIGV2ZW50IHNlZ21lbnQuIFVzZWQgYnkgcmVuZGVyRmdTZWdFbHMoKQoJZmdTZWdIdG1sOiBmdW5jdGlvbihzZWcsIGRpc2FibGVSZXNpemluZykgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLyogQmFja2dyb3VuZCBTZWdtZW50IFJlbmRlcmluZwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVuZGVycyB0aGUgZ2l2ZW4gYmFja2dyb3VuZCBldmVudCBzZWdtZW50cyBvbnRvIHRoZSBncmlkLgoJLy8gUmV0dXJucyBhIHN1YnNldCBvZiB0aGUgc2VncyB0aGF0IHdlcmUgYWN0dWFsbHkgcmVuZGVyZWQuCglyZW5kZXJCZ1NlZ3M6IGZ1bmN0aW9uKHNlZ3MpIHsKCQlyZXR1cm4gdGhpcy5yZW5kZXJGaWxsKCdiZ0V2ZW50Jywgc2Vncyk7Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYWxsIHRoZSBjdXJyZW50bHkgcmVuZGVyZWQgYmFja2dyb3VuZCBldmVudCBzZWdtZW50cwoJdW5yZW5kZXJCZ1NlZ3M6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5yZW5kZXJGaWxsKCdiZ0V2ZW50Jyk7Cgl9LAoKCgkvLyBSZW5kZXJzIGEgYmFja2dyb3VuZCBldmVudCBlbGVtZW50LCBnaXZlbiB0aGUgZGVmYXVsdCByZW5kZXJpbmcuIENhbGxlZCBieSB0aGUgZmlsbCBzeXN0ZW0uCgliZ0V2ZW50U2VnRWw6IGZ1bmN0aW9uKHNlZywgZWwpIHsKCQlyZXR1cm4gdGhpcy52aWV3LnJlc29sdmVFdmVudEVsKHNlZy5ldmVudCwgZWwpOyAvLyB3aWxsIGZpbHRlciB0aHJvdWdoIGV2ZW50UmVuZGVyCgl9LAoKCgkvLyBHZW5lcmF0ZXMgYW4gYXJyYXkgb2YgY2xhc3NOYW1lcyB0byBiZSB1c2VkIGZvciB0aGUgZGVmYXVsdCByZW5kZXJpbmcgb2YgYSBiYWNrZ3JvdW5kIGV2ZW50LgoJLy8gQ2FsbGVkIGJ5IHRoZSBmaWxsIHN5c3RlbS4KCWJnRXZlbnRTZWdDbGFzc2VzOiBmdW5jdGlvbihzZWcpIHsKCQl2YXIgZXZlbnQgPSBzZWcuZXZlbnQ7CgkJdmFyIHNvdXJjZSA9IGV2ZW50LnNvdXJjZSB8fCB7fTsKCgkJcmV0dXJuIFsgJ2ZjLWJnZXZlbnQnIF0uY29uY2F0KAoJCQlldmVudC5jbGFzc05hbWUsCgkJCXNvdXJjZS5jbGFzc05hbWUgfHwgW10KCQkpOwoJfSwKCgoJLy8gR2VuZXJhdGVzIGEgc2VtaWNvbG9uLXNlcGFyYXRlZCBDU1Mgc3RyaW5nIHRvIGJlIHVzZWQgZm9yIHRoZSBkZWZhdWx0IHJlbmRlcmluZyBvZiBhIGJhY2tncm91bmQgZXZlbnQuCgkvLyBDYWxsZWQgYnkgdGhlIGZpbGwgc3lzdGVtLgoJLy8gVE9ETzogY29uc29saWRhdGUgd2l0aCBnZXRFdmVudFNraW5Dc3M/CgliZ0V2ZW50U2VnQ3NzOiBmdW5jdGlvbihzZWcpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgZXZlbnQgPSBzZWcuZXZlbnQ7CgkJdmFyIHNvdXJjZSA9IGV2ZW50LnNvdXJjZSB8fCB7fTsKCgkJcmV0dXJuIHsKCQkJJ2JhY2tncm91bmQtY29sb3InOgoJCQkJZXZlbnQuYmFja2dyb3VuZENvbG9yIHx8CgkJCQlldmVudC5jb2xvciB8fAoJCQkJc291cmNlLmJhY2tncm91bmRDb2xvciB8fAoJCQkJc291cmNlLmNvbG9yIHx8CgkJCQl2aWV3Lm9wdCgnZXZlbnRCYWNrZ3JvdW5kQ29sb3InKSB8fAoJCQkJdmlldy5vcHQoJ2V2ZW50Q29sb3InKQoJCX07Cgl9LAoKCgkvLyBHZW5lcmF0ZXMgYW4gYXJyYXkgb2YgY2xhc3NOYW1lcyB0byBiZSB1c2VkIGZvciB0aGUgcmVuZGVyaW5nIGJ1c2luZXNzIGhvdXJzIG92ZXJsYXkuIENhbGxlZCBieSB0aGUgZmlsbCBzeXN0ZW0uCglidXNpbmVzc0hvdXJzU2VnQ2xhc3NlczogZnVuY3Rpb24oc2VnKSB7CgkJcmV0dXJuIFsgJ2ZjLW5vbmJ1c2luZXNzJywgJ2ZjLWJnZXZlbnQnIF07Cgl9LAoKCgkvKiBIYW5kbGVycwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQXR0YWNoZXMgZXZlbnQtZWxlbWVudC1yZWxhdGVkIGhhbmRsZXJzIHRvIHRoZSBjb250YWluZXIgZWxlbWVudCBhbmQgbGV2ZXJhZ2UgYnViYmxpbmcKCWJpbmRTZWdIYW5kbGVyczogZnVuY3Rpb24oKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCgkJJC5lYWNoKAoJCQl7CgkJCQltb3VzZWVudGVyOiBmdW5jdGlvbihzZWcsIGV2KSB7CgkJCQkJX3RoaXMudHJpZ2dlclNlZ01vdXNlb3ZlcihzZWcsIGV2KTsKCQkJCX0sCgkJCQltb3VzZWxlYXZlOiBmdW5jdGlvbihzZWcsIGV2KSB7CgkJCQkJX3RoaXMudHJpZ2dlclNlZ01vdXNlb3V0KHNlZywgZXYpOwoJCQkJfSwKCQkJCWNsaWNrOiBmdW5jdGlvbihzZWcsIGV2KSB7CgkJCQkJcmV0dXJuIHZpZXcudHJpZ2dlcignZXZlbnRDbGljaycsIHRoaXMsIHNlZy5ldmVudCwgZXYpOyAvLyBjYW4gcmV0dXJuIGBmYWxzZWAgdG8gY2FuY2VsCgkJCQl9LAoJCQkJbW91c2Vkb3duOiBmdW5jdGlvbihzZWcsIGV2KSB7CgkJCQkJaWYgKCQoZXYudGFyZ2V0KS5pcygnLmZjLXJlc2l6ZXInKSAmJiB2aWV3LmlzRXZlbnRSZXNpemFibGUoc2VnLmV2ZW50KSkgewoJCQkJCQlfdGhpcy5zZWdSZXNpemVNb3VzZWRvd24oc2VnLCBldiwgJChldi50YXJnZXQpLmlzKCcuZmMtc3RhcnQtcmVzaXplcicpKTsKCQkJCQl9CgkJCQkJZWxzZSBpZiAodmlldy5pc0V2ZW50RHJhZ2dhYmxlKHNlZy5ldmVudCkpIHsKCQkJCQkJX3RoaXMuc2VnRHJhZ01vdXNlZG93bihzZWcsIGV2KTsKCQkJCQl9CgkJCQl9CgkJCX0sCgkJCWZ1bmN0aW9uKG5hbWUsIGZ1bmMpIHsKCQkJCS8vIGF0dGFjaCB0aGUgaGFuZGxlciB0byB0aGUgY29udGFpbmVyIGVsZW1lbnQgYW5kIG9ubHkgbGlzdGVuIGZvciByZWFsIGV2ZW50IGVsZW1lbnRzIHZpYSBidWJibGluZwoJCQkJX3RoaXMuZWwub24obmFtZSwgJy5mYy1ldmVudC1jb250YWluZXIgPiAqJywgZnVuY3Rpb24oZXYpIHsKCQkJCQl2YXIgc2VnID0gJCh0aGlzKS5kYXRhKCdmYy1zZWcnKTsgLy8gZ3JhYiBzZWdtZW50IGRhdGEuIHB1dCB0aGVyZSBieSBWaWV3OjpyZW5kZXJFdmVudHMKCgkJCQkJLy8gb25seSBjYWxsIHRoZSBoYW5kbGVycyBpZiB0aGVyZSBpcyBub3QgYSBkcmFnL3Jlc2l6ZSBpbiBwcm9ncmVzcwoJCQkJCWlmIChzZWcgJiYgIV90aGlzLmlzRHJhZ2dpbmdTZWcgJiYgIV90aGlzLmlzUmVzaXppbmdTZWcpIHsKCQkJCQkJcmV0dXJuIGZ1bmMuY2FsbCh0aGlzLCBzZWcsIGV2KTsgLy8gYHRoaXNgIHdpbGwgYmUgdGhlIGV2ZW50IGVsZW1lbnQKCQkJCQl9CgkJCQl9KTsKCQkJfQoJCSk7Cgl9LAoKCgkvLyBVcGRhdGVzIGludGVybmFsIHN0YXRlIGFuZCB0cmlnZ2VycyBoYW5kbGVycyBmb3Igd2hlbiBhbiBldmVudCBlbGVtZW50IGlzIG1vdXNlZCBvdmVyCgl0cmlnZ2VyU2VnTW91c2VvdmVyOiBmdW5jdGlvbihzZWcsIGV2KSB7CgkJaWYgKCF0aGlzLm1vdXNlZE92ZXJTZWcpIHsKCQkJdGhpcy5tb3VzZWRPdmVyU2VnID0gc2VnOwoJCQl0aGlzLnZpZXcudHJpZ2dlcignZXZlbnRNb3VzZW92ZXInLCBzZWcuZWxbMF0sIHNlZy5ldmVudCwgZXYpOwoJCX0KCX0sCgoKCS8vIFVwZGF0ZXMgaW50ZXJuYWwgc3RhdGUgYW5kIHRyaWdnZXJzIGhhbmRsZXJzIGZvciB3aGVuIGFuIGV2ZW50IGVsZW1lbnQgaXMgbW91c2VkIG91dC4KCS8vIENhbiBiZSBnaXZlbiBubyBhcmd1bWVudHMsIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBtb3VzZW91dCB0aGUgc2VnbWVudCB0aGF0IHdhcyBwcmV2aW91c2x5IG1vdXNlZCBvdmVyLgoJdHJpZ2dlclNlZ01vdXNlb3V0OiBmdW5jdGlvbihzZWcsIGV2KSB7CgkJZXYgPSBldiB8fCB7fTsgLy8gaWYgZ2l2ZW4gbm8gYXJncywgbWFrZSBhIG1vY2sgbW91c2UgZXZlbnQKCgkJaWYgKHRoaXMubW91c2VkT3ZlclNlZykgewoJCQlzZWcgPSBzZWcgfHwgdGhpcy5tb3VzZWRPdmVyU2VnOyAvLyBpZiBnaXZlbiBubyBhcmdzLCB1c2UgdGhlIGN1cnJlbnRseSBtb3VzZWQtb3ZlciBzZWdtZW50CgkJCXRoaXMubW91c2VkT3ZlclNlZyA9IG51bGw7CgkJCXRoaXMudmlldy50cmlnZ2VyKCdldmVudE1vdXNlb3V0Jywgc2VnLmVsWzBdLCBzZWcuZXZlbnQsIGV2KTsKCQl9Cgl9LAoKCgkvKiBFdmVudCBEcmFnZ2luZwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQ2FsbGVkIHdoZW4gdGhlIHVzZXIgZG9lcyBhIG1vdXNlZG93biBvbiBhbiBldmVudCwgd2hpY2ggbWlnaHQgbGVhZCB0byBkcmFnZ2luZy4KCS8vIEdlbmVyaWMgZW5vdWdoIHRvIHdvcmsgd2l0aCBhbnkgdHlwZSBvZiBHcmlkLgoJc2VnRHJhZ01vdXNlZG93bjogZnVuY3Rpb24oc2VnLCBldikgewoJCXZhciBfdGhpcyA9IHRoaXM7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIGNhbGVuZGFyID0gdmlldy5jYWxlbmRhcjsKCQl2YXIgZWwgPSBzZWcuZWw7CgkJdmFyIGV2ZW50ID0gc2VnLmV2ZW50OwoJCXZhciBkcm9wTG9jYXRpb247CgoJCS8vIEEgY2xvbmUgb2YgdGhlIG9yaWdpbmFsIGVsZW1lbnQgdGhhdCB3aWxsIG1vdmUgd2l0aCB0aGUgbW91c2UKCQl2YXIgbW91c2VGb2xsb3dlciA9IG5ldyBNb3VzZUZvbGxvd2VyKHNlZy5lbCwgewoJCQlwYXJlbnRFbDogdmlldy5lbCwKCQkJb3BhY2l0eTogdmlldy5vcHQoJ2RyYWdPcGFjaXR5JyksCgkJCXJldmVydER1cmF0aW9uOiB2aWV3Lm9wdCgnZHJhZ1JldmVydER1cmF0aW9uJyksCgkJCXpJbmRleDogMiAvLyBvbmUgYWJvdmUgdGhlIC5mYy12aWV3CgkJfSk7CgoJCS8vIFRyYWNrcyBtb3VzZSBtb3ZlbWVudCBvdmVyIHRoZSAqdmlldydzKiBjb29yZGluYXRlIG1hcC4gQWxsb3dzIGRyYWdnaW5nIGFuZCBkcm9wcGluZyBiZXR3ZWVuIHN1YmNvbXBvbmVudHMKCQkvLyBvZiB0aGUgdmlldy4KCQl2YXIgZHJhZ0xpc3RlbmVyID0gbmV3IENlbGxEcmFnTGlzdGVuZXIodmlldy5jb29yZE1hcCwgewoJCQlkaXN0YW5jZTogNSwKCQkJc2Nyb2xsOiB2aWV3Lm9wdCgnZHJhZ1Njcm9sbCcpLAoJCQlzdWJqZWN0RWw6IGVsLAoJCQlzdWJqZWN0Q2VudGVyOiB0cnVlLAoJCQlsaXN0ZW5TdGFydDogZnVuY3Rpb24oZXYpIHsKCQkJCW1vdXNlRm9sbG93ZXIuaGlkZSgpOyAvLyBkb24ndCBzaG93IHVudGlsIHdlIGtub3cgdGhpcyBpcyBhIHJlYWwgZHJhZwoJCQkJbW91c2VGb2xsb3dlci5zdGFydChldik7CgkJCX0sCgkJCWRyYWdTdGFydDogZnVuY3Rpb24oZXYpIHsKCQkJCV90aGlzLnRyaWdnZXJTZWdNb3VzZW91dChzZWcsIGV2KTsgLy8gZW5zdXJlIGEgbW91c2VvdXQgb24gdGhlIG1hbmlwdWxhdGVkIGV2ZW50IGhhcyBiZWVuIHJlcG9ydGVkCgkJCQlfdGhpcy5zZWdEcmFnU3RhcnQoc2VnLCBldik7CgkJCQl2aWV3LmhpZGVFdmVudChldmVudCk7IC8vIGhpZGUgYWxsIGV2ZW50IHNlZ21lbnRzLiBvdXIgbW91c2VGb2xsb3dlciB3aWxsIHRha2Ugb3ZlcgoJCQl9LAoJCQljZWxsT3ZlcjogZnVuY3Rpb24oY2VsbCwgaXNPcmlnLCBvcmlnQ2VsbCkgewoKCQkJCS8vIHN0YXJ0aW5nIGNlbGwgY291bGQgYmUgZm9yY2VkIChEYXlHcmlkLmxpbWl0KQoJCQkJaWYgKHNlZy5jZWxsKSB7CgkJCQkJb3JpZ0NlbGwgPSBzZWcuY2VsbDsKCQkJCX0KCgkJCQlkcm9wTG9jYXRpb24gPSBfdGhpcy5jb21wdXRlRXZlbnREcm9wKG9yaWdDZWxsLCBjZWxsLCBldmVudCk7CgoJCQkJaWYgKGRyb3BMb2NhdGlvbiAmJiAhY2FsZW5kYXIuaXNFdmVudFJhbmdlQWxsb3dlZChkcm9wTG9jYXRpb24sIGV2ZW50KSkgewoJCQkJCWRpc2FibGVDdXJzb3IoKTsKCQkJCQlkcm9wTG9jYXRpb24gPSBudWxsOwoJCQkJfQoKCQkJCS8vIGlmIGEgdmFsaWQgZHJvcCBsb2NhdGlvbiwgaGF2ZSB0aGUgc3ViY2xhc3MgcmVuZGVyIGEgdmlzdWFsIGluZGljYXRpb24KCQkJCWlmIChkcm9wTG9jYXRpb24gJiYgdmlldy5yZW5kZXJEcmFnKGRyb3BMb2NhdGlvbiwgc2VnKSkgewoJCQkJCW1vdXNlRm9sbG93ZXIuaGlkZSgpOyAvLyBpZiB0aGUgc3ViY2xhc3MgaXMgYWxyZWFkeSB1c2luZyBhIG1vY2sgZXZlbnQgImhlbHBlciIsIGhpZGUgb3VyIG93bgoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJbW91c2VGb2xsb3dlci5zaG93KCk7IC8vIG90aGVyd2lzZSwgaGF2ZSB0aGUgaGVscGVyIGZvbGxvdyB0aGUgbW91c2UgKG5vIHNuYXBwaW5nKQoJCQkJfQoKCQkJCWlmIChpc09yaWcpIHsKCQkJCQlkcm9wTG9jYXRpb24gPSBudWxsOyAvLyBuZWVkcyB0byBoYXZlIG1vdmVkIGNlbGxzIHRvIGJlIGEgdmFsaWQgZHJvcAoJCQkJfQoJCQl9LAoJCQljZWxsT3V0OiBmdW5jdGlvbigpIHsgLy8gY2FsbGVkIGJlZm9yZSBtb3VzZSBtb3ZlcyB0byBhIGRpZmZlcmVudCBjZWxsIE9SIG1vdmVkIG91dCBvZiBhbGwgY2VsbHMKCQkJCXZpZXcudW5yZW5kZXJEcmFnKCk7IC8vIHVucmVuZGVyIHdoYXRldmVyIHdhcyBkb25lIGluIHJlbmRlckRyYWcKCQkJCW1vdXNlRm9sbG93ZXIuc2hvdygpOyAvLyBzaG93IGluIGNhc2Ugd2UgYXJlIG1vdmluZyBvdXQgb2YgYWxsIGNlbGxzCgkJCQlkcm9wTG9jYXRpb24gPSBudWxsOwoJCQl9LAoJCQljZWxsRG9uZTogZnVuY3Rpb24oKSB7IC8vIENhbGxlZCBhZnRlciBhIGNlbGxPdXQgT1IgYmVmb3JlIGEgZHJhZ1N0b3AKCQkJCWVuYWJsZUN1cnNvcigpOwoJCQl9LAoJCQlkcmFnU3RvcDogZnVuY3Rpb24oZXYpIHsKCQkJCS8vIGRvIHJldmVydCBhbmltYXRpb24gaWYgaGFzbid0IGNoYW5nZWQuIGNhbGxzIGEgY2FsbGJhY2sgd2hlbiBmaW5pc2hlZCAod2hldGhlciBhbmltYXRpb24gb3Igbm90KQoJCQkJbW91c2VGb2xsb3dlci5zdG9wKCFkcm9wTG9jYXRpb24sIGZ1bmN0aW9uKCkgewoJCQkJCXZpZXcudW5yZW5kZXJEcmFnKCk7CgkJCQkJdmlldy5zaG93RXZlbnQoZXZlbnQpOwoJCQkJCV90aGlzLnNlZ0RyYWdTdG9wKHNlZywgZXYpOwoKCQkJCQlpZiAoZHJvcExvY2F0aW9uKSB7CgkJCQkJCXZpZXcucmVwb3J0RXZlbnREcm9wKGV2ZW50LCBkcm9wTG9jYXRpb24sIHRoaXMubGFyZ2VVbml0LCBlbCwgZXYpOwoJCQkJCX0KCQkJCX0pOwoJCQl9LAoJCQlsaXN0ZW5TdG9wOiBmdW5jdGlvbigpIHsKCQkJCW1vdXNlRm9sbG93ZXIuc3RvcCgpOyAvLyBwdXQgaW4gbGlzdGVuU3RvcCBpbiBjYXNlIHRoZXJlIHdhcyBhIG1vdXNlZG93biBidXQgdGhlIGRyYWcgbmV2ZXIgc3RhcnRlZAoJCQl9CgkJfSk7CgoJCWRyYWdMaXN0ZW5lci5tb3VzZWRvd24oZXYpOyAvLyBzdGFydCBsaXN0ZW5pbmcsIHdoaWNoIHdpbGwgZXZlbnR1YWxseSBsZWFkIHRvIGEgZHJhZ1N0YXJ0Cgl9LAoKCgkvLyBDYWxsZWQgYmVmb3JlIGV2ZW50IHNlZ21lbnQgZHJhZ2dpbmcgc3RhcnRzCglzZWdEcmFnU3RhcnQ6IGZ1bmN0aW9uKHNlZywgZXYpIHsKCQl0aGlzLmlzRHJhZ2dpbmdTZWcgPSB0cnVlOwoJCXRoaXMudmlldy50cmlnZ2VyKCdldmVudERyYWdTdGFydCcsIHNlZy5lbFswXSwgc2VnLmV2ZW50LCBldiwge30pOyAvLyBsYXN0IGFyZ3VtZW50IGlzIGpxdWkgZHVtbXkKCX0sCgoKCS8vIENhbGxlZCBhZnRlciBldmVudCBzZWdtZW50IGRyYWdnaW5nIHN0b3BzCglzZWdEcmFnU3RvcDogZnVuY3Rpb24oc2VnLCBldikgewoJCXRoaXMuaXNEcmFnZ2luZ1NlZyA9IGZhbHNlOwoJCXRoaXMudmlldy50cmlnZ2VyKCdldmVudERyYWdTdG9wJywgc2VnLmVsWzBdLCBzZWcuZXZlbnQsIGV2LCB7fSk7IC8vIGxhc3QgYXJndW1lbnQgaXMganF1aSBkdW1teQoJfSwKCgoJLy8gR2l2ZW4gdGhlIGNlbGwgYW4gZXZlbnQgZHJhZyBiZWdhbiwgYW5kIHRoZSBjZWxsIGV2ZW50IHdhcyBkcm9wcGVkLCBjYWxjdWxhdGVzIHRoZSBuZXcgc3RhcnQvZW5kL2FsbERheQoJLy8gdmFsdWVzIGZvciB0aGUgZXZlbnQuIFN1YmNsYXNzZXMgbWF5IG92ZXJyaWRlIGFuZCBzZXQgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHRvIGJlIHVzZWQgYnkgcmVuZGVyRHJhZy4KCS8vIEEgZmFsc3kgcmV0dXJuZWQgdmFsdWUgaW5kaWNhdGVzIGFuIGludmFsaWQgZHJvcC4KCWNvbXB1dGVFdmVudERyb3A6IGZ1bmN0aW9uKHN0YXJ0Q2VsbCwgZW5kQ2VsbCwgZXZlbnQpIHsKCQl2YXIgY2FsZW5kYXIgPSB0aGlzLnZpZXcuY2FsZW5kYXI7CgkJdmFyIGRyYWdTdGFydCA9IHN0YXJ0Q2VsbC5zdGFydDsKCQl2YXIgZHJhZ0VuZCA9IGVuZENlbGwuc3RhcnQ7CgkJdmFyIGRlbHRhOwoJCXZhciBkcm9wTG9jYXRpb247CgoJCWlmIChkcmFnU3RhcnQuaGFzVGltZSgpID09PSBkcmFnRW5kLmhhc1RpbWUoKSkgewoJCQlkZWx0YSA9IHRoaXMuZGlmZkRhdGVzKGRyYWdFbmQsIGRyYWdTdGFydCk7CgoJCQkvLyBpZiBhbiBhbGwtZGF5IGV2ZW50IHdhcyBpbiBhIHRpbWVkIGFyZWEgYW5kIGl0IHdhcyBkcmFnZ2VkIHRvIGEgZGlmZmVyZW50IHRpbWUsCgkJCS8vIGd1YXJhbnRlZSBhbiBlbmQgYW5kIGFkanVzdCBzdGFydC9lbmQgdG8gaGF2ZSB0aW1lcwoJCQlpZiAoZXZlbnQuYWxsRGF5ICYmIGR1cmF0aW9uSGFzVGltZShkZWx0YSkpIHsKCQkJCWRyb3BMb2NhdGlvbiA9IHsKCQkJCQlzdGFydDogZXZlbnQuc3RhcnQuY2xvbmUoKSwKCQkJCQllbmQ6IGNhbGVuZGFyLmdldEV2ZW50RW5kKGV2ZW50KSwgLy8gd2lsbCBiZSBhbiBhbWJpZyBkYXkKCQkJCQlhbGxEYXk6IGZhbHNlIC8vIGZvciBub3JtYWxpemVFdmVudFJhbmdlVGltZXMKCQkJCX07CgkJCQljYWxlbmRhci5ub3JtYWxpemVFdmVudFJhbmdlVGltZXMoZHJvcExvY2F0aW9uKTsKCQkJfQoJCQkvLyBvdGhld2lzZSwgd29yayBvZmYgZXhpc3RpbmcgdmFsdWVzCgkJCWVsc2UgewoJCQkJZHJvcExvY2F0aW9uID0gewoJCQkJCXN0YXJ0OiBldmVudC5zdGFydC5jbG9uZSgpLAoJCQkJCWVuZDogZXZlbnQuZW5kID8gZXZlbnQuZW5kLmNsb25lKCkgOiBudWxsLAoJCQkJCWFsbERheTogZXZlbnQuYWxsRGF5IC8vIGtlZXAgaXQgdGhlIHNhbWUKCQkJCX07CgkJCX0KCgkJCWRyb3BMb2NhdGlvbi5zdGFydC5hZGQoZGVsdGEpOwoJCQlpZiAoZHJvcExvY2F0aW9uLmVuZCkgewoJCQkJZHJvcExvY2F0aW9uLmVuZC5hZGQoZGVsdGEpOwoJCQl9CgkJfQoJCWVsc2UgewoJCQkvLyBpZiBzd2l0Y2hpbmcgZnJvbSBkYXkgPC0+IHRpbWVkLCBzdGFydCBzaG91bGQgYmUgcmVzZXQgdG8gdGhlIGRyb3BwZWQgZGF0ZSwgYW5kIHRoZSBlbmQgY2xlYXJlZAoJCQlkcm9wTG9jYXRpb24gPSB7CgkJCQlzdGFydDogZHJhZ0VuZC5jbG9uZSgpLAoJCQkJZW5kOiBudWxsLCAvLyBlbmQgc2hvdWxkIGJlIGNsZWFyZWQKCQkJCWFsbERheTogIWRyYWdFbmQuaGFzVGltZSgpCgkJCX07CgkJfQoKCQlyZXR1cm4gZHJvcExvY2F0aW9uOwoJfSwKCgoJLy8gVXRpbGl0eSBmb3IgYXBwbHkgZHJhZ09wYWNpdHkgdG8gYSBqUXVlcnkgc2V0CglhcHBseURyYWdPcGFjaXR5OiBmdW5jdGlvbihlbHMpIHsKCQl2YXIgb3BhY2l0eSA9IHRoaXMudmlldy5vcHQoJ2RyYWdPcGFjaXR5Jyk7CgoJCWlmIChvcGFjaXR5ICE9IG51bGwpIHsKCQkJZWxzLmVhY2goZnVuY3Rpb24oaSwgbm9kZSkgewoJCQkJLy8gRG9uJ3QgdXNlIGpRdWVyeSAod2lsbCBzZXQgYW4gSUUgZmlsdGVyKSwgZG8gaXQgdGhlIG9sZCBmYXNoaW9uZWQgd2F5LgoJCQkJLy8gSW4gSUU4LCBhIGhlbHBlciBlbGVtZW50IHdpbGwgZGlzYXBwZWFycyBpZiB0aGVyZSdzIGEgZmlsdGVyLgoJCQkJbm9kZS5zdHlsZS5vcGFjaXR5ID0gb3BhY2l0eTsKCQkJfSk7CgkJfQoJfSwKCgoJLyogRXh0ZXJuYWwgRWxlbWVudCBEcmFnZ2luZwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQ2FsbGVkIHdoZW4gYSBqUXVlcnkgVUkgZHJhZyBpcyBpbml0aWF0ZWQgYW55d2hlcmUgaW4gdGhlIERPTQoJZXh0ZXJuYWxEcmFnU3RhcnQ6IGZ1bmN0aW9uKGV2LCB1aSkgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBlbDsKCQl2YXIgYWNjZXB0OwoKCQlpZiAodmlldy5vcHQoJ2Ryb3BwYWJsZScpKSB7IC8vIG9ubHkgbGlzdGVuIGlmIHRoaXMgc2V0dGluZyBpcyBvbgoJCQllbCA9ICQoKHVpID8gdWkuaXRlbSA6IG51bGwpIHx8IGV2LnRhcmdldCk7CgoJCQkvLyBUZXN0IHRoYXQgdGhlIGRyYWdnZWQgZWxlbWVudCBwYXNzZXMgdGhlIGRyb3BBY2NlcHQgc2VsZWN0b3Igb3IgZmlsdGVyIGZ1bmN0aW9uLgoJCQkvLyBGWUksIHRoZSBkZWZhdWx0IGlzICIqIiAobWF0Y2hlcyBhbGwpCgkJCWFjY2VwdCA9IHZpZXcub3B0KCdkcm9wQWNjZXB0Jyk7CgkJCWlmICgkLmlzRnVuY3Rpb24oYWNjZXB0KSA/IGFjY2VwdC5jYWxsKGVsWzBdLCBlbCkgOiBlbC5pcyhhY2NlcHQpKSB7CgkJCQlpZiAoIXRoaXMuaXNEcmFnZ2luZ0V4dGVybmFsKSB7IC8vIHByZXZlbnQgZG91YmxlLWxpc3RlbmluZyBpZiBmaXJlZCB0d2ljZQoJCQkJCXRoaXMubGlzdGVuVG9FeHRlcm5hbERyYWcoZWwsIGV2LCB1aSk7CgkJCQl9CgkJCX0KCQl9Cgl9LAoKCgkvLyBDYWxsZWQgd2hlbiBhIGpRdWVyeSBVSSBkcmFnIHN0YXJ0cyBhbmQgaXQgbmVlZHMgdG8gYmUgbW9uaXRvcmVkIGZvciBjZWxsIGRyb3BwaW5nCglsaXN0ZW5Ub0V4dGVybmFsRHJhZzogZnVuY3Rpb24oZWwsIGV2LCB1aSkgewoJCXZhciBfdGhpcyA9IHRoaXM7CgkJdmFyIG1ldGEgPSBnZXREcmFnZ2VkRWxNZXRhKGVsKTsgLy8gZXh0cmEgZGF0YSBhYm91dCBldmVudCBkcm9wLCBpbmNsdWRpbmcgcG9zc2libGUgZXZlbnQgdG8gY3JlYXRlCgkJdmFyIGRyYWdMaXN0ZW5lcjsKCQl2YXIgZHJvcExvY2F0aW9uOyAvLyBhIG51bGwgdmFsdWUgc2lnbmFscyBhbiB1bnN1Y2Nlc3NmdWwgZHJhZwoKCQkvLyBsaXN0ZW5lciB0aGF0IHRyYWNrcyBtb3VzZSBtb3ZlbWVudCBvdmVyIGRhdGUtYXNzb2NpYXRlZCBwaXhlbCByZWdpb25zCgkJZHJhZ0xpc3RlbmVyID0gbmV3IENlbGxEcmFnTGlzdGVuZXIodGhpcy5jb29yZE1hcCwgewoJCQlsaXN0ZW5TdGFydDogZnVuY3Rpb24oKSB7CgkJCQlfdGhpcy5pc0RyYWdnaW5nRXh0ZXJuYWwgPSB0cnVlOwoJCQl9LAoJCQljZWxsT3ZlcjogZnVuY3Rpb24oY2VsbCkgewoJCQkJZHJvcExvY2F0aW9uID0gX3RoaXMuY29tcHV0ZUV4dGVybmFsRHJvcChjZWxsLCBtZXRhKTsKCQkJCWlmIChkcm9wTG9jYXRpb24pIHsKCQkJCQlfdGhpcy5yZW5kZXJEcmFnKGRyb3BMb2NhdGlvbik7IC8vIGNhbGxlZCB3aXRob3V0IGEgc2VnIHBhcmFtZXRlcgoJCQkJfQoJCQkJZWxzZSB7IC8vIGludmFsaWQgZHJvcCBjZWxsCgkJCQkJZGlzYWJsZUN1cnNvcigpOwoJCQkJfQoJCQl9LAoJCQljZWxsT3V0OiBmdW5jdGlvbigpIHsKCQkJCWRyb3BMb2NhdGlvbiA9IG51bGw7IC8vIHNpZ25hbCB1bnN1Y2Nlc3NmdWwKCQkJCV90aGlzLnVucmVuZGVyRHJhZygpOwoJCQkJZW5hYmxlQ3Vyc29yKCk7CgkJCX0sCgkJCWRyYWdTdG9wOiBmdW5jdGlvbigpIHsKCQkJCV90aGlzLnVucmVuZGVyRHJhZygpOwoJCQkJZW5hYmxlQ3Vyc29yKCk7CgoJCQkJaWYgKGRyb3BMb2NhdGlvbikgeyAvLyBlbGVtZW50IHdhcyBkcm9wcGVkIG9uIGEgdmFsaWQgZGF0ZS90aW1lIGNlbGwKCQkJCQlfdGhpcy52aWV3LnJlcG9ydEV4dGVybmFsRHJvcChtZXRhLCBkcm9wTG9jYXRpb24sIGVsLCBldiwgdWkpOwoJCQkJfQoJCQl9LAoJCQlsaXN0ZW5TdG9wOiBmdW5jdGlvbigpIHsKCQkJCV90aGlzLmlzRHJhZ2dpbmdFeHRlcm5hbCA9IGZhbHNlOwoJCQl9CgkJfSk7CgoJCWRyYWdMaXN0ZW5lci5zdGFydERyYWcoZXYpOyAvLyBzdGFydCBsaXN0ZW5pbmcgaW1tZWRpYXRlbHkKCX0sCgoKCS8vIEdpdmVuIGEgY2VsbCB0byBiZSBkcm9wcGVkIHVwb24sIGFuZCBtaXNjIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBqcXVpIGRyYWcgKGd1YXJhbnRlZWQgdG8gYmUgYSBwbGFpbiBvYmplY3QpLAoJLy8gcmV0dXJucyBzdGFydC9lbmQgZGF0ZXMgZm9yIHRoZSBldmVudCB0aGF0IHdvdWxkIHJlc3VsdCBmcm9tIHRoZSBoeXBvdGhldGljYWwgZHJvcC4gZW5kIG1pZ2h0IGJlIG51bGwuCgkvLyBSZXR1cm5pbmcgYSBudWxsIHZhbHVlIHNpZ25hbHMgYW4gaW52YWxpZCBkcm9wIGNlbGwuCgljb21wdXRlRXh0ZXJuYWxEcm9wOiBmdW5jdGlvbihjZWxsLCBtZXRhKSB7CgkJdmFyIGRyb3BMb2NhdGlvbiA9IHsKCQkJc3RhcnQ6IGNlbGwuc3RhcnQuY2xvbmUoKSwKCQkJZW5kOiBudWxsCgkJfTsKCgkJLy8gaWYgZHJvcHBlZCBvbiBhbiBhbGwtZGF5IGNlbGwsIGFuZCBlbGVtZW50J3MgbWV0YWRhdGEgc3BlY2lmaWVkIGEgdGltZSwgc2V0IGl0CgkJaWYgKG1ldGEuc3RhcnRUaW1lICYmICFkcm9wTG9jYXRpb24uc3RhcnQuaGFzVGltZSgpKSB7CgkJCWRyb3BMb2NhdGlvbi5zdGFydC50aW1lKG1ldGEuc3RhcnRUaW1lKTsKCQl9CgoJCWlmIChtZXRhLmR1cmF0aW9uKSB7CgkJCWRyb3BMb2NhdGlvbi5lbmQgPSBkcm9wTG9jYXRpb24uc3RhcnQuY2xvbmUoKS5hZGQobWV0YS5kdXJhdGlvbik7CgkJfQoKCQlpZiAoIXRoaXMudmlldy5jYWxlbmRhci5pc0V4dGVybmFsRHJvcFJhbmdlQWxsb3dlZChkcm9wTG9jYXRpb24sIG1ldGEuZXZlbnRQcm9wcykpIHsKCQkJcmV0dXJuIG51bGw7CgkJfQoKCQlyZXR1cm4gZHJvcExvY2F0aW9uOwoJfSwKCgoKCS8qIERyYWcgUmVuZGVyaW5nIChmb3IgYm90aCBldmVudHMgYW5kIGFuIGV4dGVybmFsIGVsZW1lbnRzKQoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVuZGVycyBhIHZpc3VhbCBpbmRpY2F0aW9uIG9mIGFuIGV2ZW50IG9yIGV4dGVybmFsIGVsZW1lbnQgYmVpbmcgZHJhZ2dlZC4KCS8vIGBkcm9wTG9jYXRpb25gIGNvbnRhaW5zIGh5cG90aGV0aWNhbCBzdGFydC9lbmQvYWxsRGF5IHZhbHVlcyB0aGUgZXZlbnQgd291bGQgaGF2ZSBpZiBkcm9wcGVkLiBlbmQgY2FuIGJlIG51bGwuCgkvLyBgc2VnYCBpcyB0aGUgaW50ZXJuYWwgc2VnbWVudCBvYmplY3QgdGhhdCBpcyBiZWluZyBkcmFnZ2VkLiBJZiBkcmFnZ2luZyBhbiBleHRlcm5hbCBlbGVtZW50LCBgc2VnYCBpcyBudWxsLgoJLy8gQSB0cnV0aHkgcmV0dXJuZWQgdmFsdWUgaW5kaWNhdGVzIHRoaXMgbWV0aG9kIGhhcyByZW5kZXJlZCBhIGhlbHBlciBlbGVtZW50LgoJcmVuZGVyRHJhZzogZnVuY3Rpb24oZHJvcExvY2F0aW9uLCBzZWcpIHsKCQkvLyBzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhbiBldmVudCBvciBleHRlcm5hbCBlbGVtZW50IGJlaW5nIGRyYWdnZWQKCXVucmVuZGVyRHJhZzogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudAoJfSwKCgoJLyogUmVzaXppbmcKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIENhbGxlZCB3aGVuIHRoZSB1c2VyIGRvZXMgYSBtb3VzZWRvd24gb24gYW4gZXZlbnQncyByZXNpemVyLCB3aGljaCBtaWdodCBsZWFkIHRvIHJlc2l6aW5nLgoJLy8gR2VuZXJpYyBlbm91Z2ggdG8gd29yayB3aXRoIGFueSB0eXBlIG9mIEdyaWQuCglzZWdSZXNpemVNb3VzZWRvd246IGZ1bmN0aW9uKHNlZywgZXYsIGlzU3RhcnQpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBjYWxlbmRhciA9IHZpZXcuY2FsZW5kYXI7CgkJdmFyIGVsID0gc2VnLmVsOwoJCXZhciBldmVudCA9IHNlZy5ldmVudDsKCQl2YXIgZXZlbnRFbmQgPSBjYWxlbmRhci5nZXRFdmVudEVuZChldmVudCk7CgkJdmFyIGRyYWdMaXN0ZW5lcjsKCQl2YXIgcmVzaXplTG9jYXRpb247IC8vIGZhbHN5IGlmIGludmFsaWQgcmVzaXplCgoJCS8vIFRyYWNrcyBtb3VzZSBtb3ZlbWVudCBvdmVyIHRoZSAqZ3JpZCdzKiBjb29yZGluYXRlIG1hcAoJCWRyYWdMaXN0ZW5lciA9IG5ldyBDZWxsRHJhZ0xpc3RlbmVyKHRoaXMuY29vcmRNYXAsIHsKCQkJZGlzdGFuY2U6IDUsCgkJCXNjcm9sbDogdmlldy5vcHQoJ2RyYWdTY3JvbGwnKSwKCQkJc3ViamVjdEVsOiBlbCwKCQkJZHJhZ1N0YXJ0OiBmdW5jdGlvbihldikgewoJCQkJX3RoaXMudHJpZ2dlclNlZ01vdXNlb3V0KHNlZywgZXYpOyAvLyBlbnN1cmUgYSBtb3VzZW91dCBvbiB0aGUgbWFuaXB1bGF0ZWQgZXZlbnQgaGFzIGJlZW4gcmVwb3J0ZWQKCQkJCV90aGlzLnNlZ1Jlc2l6ZVN0YXJ0KHNlZywgZXYpOwoJCQl9LAoJCQljZWxsT3ZlcjogZnVuY3Rpb24oY2VsbCwgaXNPcmlnLCBvcmlnQ2VsbCkgewoJCQkJcmVzaXplTG9jYXRpb24gPSBpc1N0YXJ0ID8KCQkJCQlfdGhpcy5jb21wdXRlRXZlbnRTdGFydFJlc2l6ZShvcmlnQ2VsbCwgY2VsbCwgZXZlbnQpIDoKCQkJCQlfdGhpcy5jb21wdXRlRXZlbnRFbmRSZXNpemUob3JpZ0NlbGwsIGNlbGwsIGV2ZW50KTsKCgkJCQlpZiAocmVzaXplTG9jYXRpb24pIHsKCQkJCQlpZiAoIWNhbGVuZGFyLmlzRXZlbnRSYW5nZUFsbG93ZWQocmVzaXplTG9jYXRpb24sIGV2ZW50KSkgewoJCQkJCQlkaXNhYmxlQ3Vyc29yKCk7CgkJCQkJCXJlc2l6ZUxvY2F0aW9uID0gbnVsbDsKCQkJCQl9CgkJCQkJLy8gbm8gY2hhbmdlPyAoVE9ETzogaG93IGRvZXMgdGhpcyB3b3JrIHdpdGggdGltZXpvbmVzPykKCQkJCQllbHNlIGlmIChyZXNpemVMb2NhdGlvbi5zdGFydC5pc1NhbWUoZXZlbnQuc3RhcnQpICYmIHJlc2l6ZUxvY2F0aW9uLmVuZC5pc1NhbWUoZXZlbnRFbmQpKSB7CgkJCQkJCXJlc2l6ZUxvY2F0aW9uID0gbnVsbDsKCQkJCQl9CgkJCQl9CgoJCQkJaWYgKHJlc2l6ZUxvY2F0aW9uKSB7CgkJCQkJdmlldy5oaWRlRXZlbnQoZXZlbnQpOwoJCQkJCV90aGlzLnJlbmRlckV2ZW50UmVzaXplKHJlc2l6ZUxvY2F0aW9uLCBzZWcpOwoJCQkJfQoJCQl9LAoJCQljZWxsT3V0OiBmdW5jdGlvbigpIHsgLy8gY2FsbGVkIGJlZm9yZSBtb3VzZSBtb3ZlcyB0byBhIGRpZmZlcmVudCBjZWxsIE9SIG1vdmVkIG91dCBvZiBhbGwgY2VsbHMKCQkJCXJlc2l6ZUxvY2F0aW9uID0gbnVsbDsKCQkJfSwKCQkJY2VsbERvbmU6IGZ1bmN0aW9uKCkgeyAvLyByZXNldHMgdGhlIHJlbmRlcmluZyB0byBzaG93IHRoZSBvcmlnaW5hbCBldmVudAoJCQkJX3RoaXMudW5yZW5kZXJFdmVudFJlc2l6ZSgpOwoJCQkJdmlldy5zaG93RXZlbnQoZXZlbnQpOwoJCQkJZW5hYmxlQ3Vyc29yKCk7CgkJCX0sCgkJCWRyYWdTdG9wOiBmdW5jdGlvbihldikgewoJCQkJX3RoaXMuc2VnUmVzaXplU3RvcChzZWcsIGV2KTsKCgkJCQlpZiAocmVzaXplTG9jYXRpb24pIHsgLy8gdmFsaWQgZGF0ZSB0byByZXNpemUgdG8/CgkJCQkJdmlldy5yZXBvcnRFdmVudFJlc2l6ZShldmVudCwgcmVzaXplTG9jYXRpb24sIHRoaXMubGFyZ2VVbml0LCBlbCwgZXYpOwoJCQkJfQoJCQl9CgkJfSk7CgoJCWRyYWdMaXN0ZW5lci5tb3VzZWRvd24oZXYpOyAvLyBzdGFydCBsaXN0ZW5pbmcsIHdoaWNoIHdpbGwgZXZlbnR1YWxseSBsZWFkIHRvIGEgZHJhZ1N0YXJ0Cgl9LAoKCgkvLyBDYWxsZWQgYmVmb3JlIGV2ZW50IHNlZ21lbnQgcmVzaXppbmcgc3RhcnRzCglzZWdSZXNpemVTdGFydDogZnVuY3Rpb24oc2VnLCBldikgewoJCXRoaXMuaXNSZXNpemluZ1NlZyA9IHRydWU7CgkJdGhpcy52aWV3LnRyaWdnZXIoJ2V2ZW50UmVzaXplU3RhcnQnLCBzZWcuZWxbMF0sIHNlZy5ldmVudCwgZXYsIHt9KTsgLy8gbGFzdCBhcmd1bWVudCBpcyBqcXVpIGR1bW15Cgl9LAoKCgkvLyBDYWxsZWQgYWZ0ZXIgZXZlbnQgc2VnbWVudCByZXNpemluZyBzdG9wcwoJc2VnUmVzaXplU3RvcDogZnVuY3Rpb24oc2VnLCBldikgewoJCXRoaXMuaXNSZXNpemluZ1NlZyA9IGZhbHNlOwoJCXRoaXMudmlldy50cmlnZ2VyKCdldmVudFJlc2l6ZVN0b3AnLCBzZWcuZWxbMF0sIHNlZy5ldmVudCwgZXYsIHt9KTsgLy8gbGFzdCBhcmd1bWVudCBpcyBqcXVpIGR1bW15Cgl9LAoKCgkvLyBSZXR1cm5zIG5ldyBkYXRlLWluZm9ybWF0aW9uIGZvciBhbiBldmVudCBzZWdtZW50IGJlaW5nIHJlc2l6ZWQgZnJvbSBpdHMgc3RhcnQKCWNvbXB1dGVFdmVudFN0YXJ0UmVzaXplOiBmdW5jdGlvbihzdGFydENlbGwsIGVuZENlbGwsIGV2ZW50KSB7CgkJcmV0dXJuIHRoaXMuY29tcHV0ZUV2ZW50UmVzaXplKCdzdGFydCcsIHN0YXJ0Q2VsbCwgZW5kQ2VsbCwgZXZlbnQpOwoJfSwKCgoJLy8gUmV0dXJucyBuZXcgZGF0ZS1pbmZvcm1hdGlvbiBmb3IgYW4gZXZlbnQgc2VnbWVudCBiZWluZyByZXNpemVkIGZyb20gaXRzIGVuZAoJY29tcHV0ZUV2ZW50RW5kUmVzaXplOiBmdW5jdGlvbihzdGFydENlbGwsIGVuZENlbGwsIGV2ZW50KSB7CgkJcmV0dXJuIHRoaXMuY29tcHV0ZUV2ZW50UmVzaXplKCdlbmQnLCBzdGFydENlbGwsIGVuZENlbGwsIGV2ZW50KTsKCX0sCgoKCS8vIFJldHVybnMgbmV3IGRhdGUtaW5mb3JtYXRpb24gZm9yIGFuIGV2ZW50IHNlZ21lbnQgYmVpbmcgcmVzaXplZCBmcm9tIGl0cyBzdGFydCBPUiBlbmQKCS8vIGB0eXBlYCBpcyBlaXRoZXIgJ3N0YXJ0JyBvciAnZW5kJwoJY29tcHV0ZUV2ZW50UmVzaXplOiBmdW5jdGlvbih0eXBlLCBzdGFydENlbGwsIGVuZENlbGwsIGV2ZW50KSB7CgkJdmFyIGNhbGVuZGFyID0gdGhpcy52aWV3LmNhbGVuZGFyOwoJCXZhciBkZWx0YSA9IHRoaXMuZGlmZkRhdGVzKGVuZENlbGxbdHlwZV0sIHN0YXJ0Q2VsbFt0eXBlXSk7CgkJdmFyIHJhbmdlOwoJCXZhciBkZWZhdWx0RHVyYXRpb247CgoJCS8vIGJ1aWxkIG9yaWdpbmFsIHZhbHVlcyB0byB3b3JrIGZyb20sIGd1YXJhbnRlZWluZyBhIHN0YXJ0IGFuZCBlbmQKCQlyYW5nZSA9IHsKCQkJc3RhcnQ6IGV2ZW50LnN0YXJ0LmNsb25lKCksCgkJCWVuZDogY2FsZW5kYXIuZ2V0RXZlbnRFbmQoZXZlbnQpLAoJCQlhbGxEYXk6IGV2ZW50LmFsbERheQoJCX07CgoJCS8vIGlmIGFuIGFsbC1kYXkgZXZlbnQgd2FzIGluIGEgdGltZWQgYXJlYSBhbmQgd2FzIHJlc2l6ZWQgdG8gYSB0aW1lLCBhZGp1c3Qgc3RhcnQvZW5kIHRvIGhhdmUgdGltZXMKCQlpZiAocmFuZ2UuYWxsRGF5ICYmIGR1cmF0aW9uSGFzVGltZShkZWx0YSkpIHsKCQkJcmFuZ2UuYWxsRGF5ID0gZmFsc2U7CgkJCWNhbGVuZGFyLm5vcm1hbGl6ZUV2ZW50UmFuZ2VUaW1lcyhyYW5nZSk7CgkJfQoKCQlyYW5nZVt0eXBlXS5hZGQoZGVsdGEpOyAvLyBhcHBseSBkZWx0YSB0byBzdGFydCBvciBlbmQKCgkJLy8gaWYgdGhlIGV2ZW50IHdhcyBjb21wcmVzc2VkIHRvbyBzbWFsbCwgZmluZCBhIG5ldyByZWFzb25hYmxlIGR1cmF0aW9uIGZvciBpdAoJCWlmICghcmFuZ2Uuc3RhcnQuaXNCZWZvcmUocmFuZ2UuZW5kKSkgewoKCQkJZGVmYXVsdER1cmF0aW9uID0gZXZlbnQuYWxsRGF5ID8KCQkJCWNhbGVuZGFyLmRlZmF1bHRBbGxEYXlFdmVudER1cmF0aW9uIDoKCQkJCWNhbGVuZGFyLmRlZmF1bHRUaW1lZEV2ZW50RHVyYXRpb247CgoJCQkvLyBiZXR3ZWVuIHRoZSBjZWxsJ3MgZHVyYXRpb24gYW5kIHRoZSBldmVudCdzIGRlZmF1bHQgZHVyYXRpb24sIHVzZSB0aGUgc21hbGxlciBvZiB0aGUgdHdvLgoJCQkvLyBleGFtcGxlOiBpZiB5ZWFyLWxlbmd0aCBzbG90cywgYW5kIGNvbXByZXNzZWQgdG8gb25lIHNsb3QsIHdlIGRvbid0IHdhbnQgdGhlIGV2ZW50IHRvIGJlIGEgeWVhciBsb25nCgkJCWlmICh0aGlzLmNlbGxEdXJhdGlvbiAmJiB0aGlzLmNlbGxEdXJhdGlvbiA8IGRlZmF1bHREdXJhdGlvbikgewoJCQkJZGVmYXVsdER1cmF0aW9uID0gdGhpcy5jZWxsRHVyYXRpb247CgkJCX0KCgkJCWlmICh0eXBlID09ICdzdGFydCcpIHsgLy8gcmVzaXppbmcgdGhlIHN0YXJ0PwoJCQkJcmFuZ2Uuc3RhcnQgPSByYW5nZS5lbmQuY2xvbmUoKS5zdWJ0cmFjdChkZWZhdWx0RHVyYXRpb24pOwoJCQl9CgkJCWVsc2UgeyAvLyByZXNpemluZyB0aGUgZW5kPwoJCQkJcmFuZ2UuZW5kID0gcmFuZ2Uuc3RhcnQuY2xvbmUoKS5hZGQoZGVmYXVsdER1cmF0aW9uKTsKCQkJfQoJCX0KCgkJcmV0dXJuIHJhbmdlOwoJfSwKCgoJLy8gUmVuZGVycyBhIHZpc3VhbCBpbmRpY2F0aW9uIG9mIGFuIGV2ZW50IGJlaW5nIHJlc2l6ZWQuCgkvLyBgcmFuZ2VgIGhhcyB0aGUgdXBkYXRlZCBkYXRlcyBvZiB0aGUgZXZlbnQuIGBzZWdgIGlzIHRoZSBvcmlnaW5hbCBzZWdtZW50IG9iamVjdCBpbnZvbHZlZCBpbiB0aGUgZHJhZy4KCXJlbmRlckV2ZW50UmVzaXplOiBmdW5jdGlvbihyYW5nZSwgc2VnKSB7CgkJLy8gc3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudAoJfSwKCgoJLy8gVW5yZW5kZXJzIGEgdmlzdWFsIGluZGljYXRpb24gb2YgYW4gZXZlbnQgYmVpbmcgcmVzaXplZC4KCXVucmVuZGVyRXZlbnRSZXNpemU6IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQKCX0sCgoKCS8qIFJlbmRlcmluZyBVdGlscwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQ29tcHV0ZSB0aGUgdGV4dCB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQgb24gYW4gZXZlbnQncyBlbGVtZW50LgoJLy8gYHJhbmdlYCBjYW4gYmUgdGhlIEV2ZW50IG9iamVjdCBpdHNlbGYsIG9yIHNvbWV0aGluZyByYW5nZS1saWtlLCB3aXRoIGF0IGxlYXN0IGEgYHN0YXJ0YC4KCS8vIElmIGV2ZW50IHRpbWVzIGFyZSBkaXNhYmxlZCwgb3IgdGhlIGV2ZW50IGhhcyBubyB0aW1lLCB3aWxsIHJldHVybiBhIGJsYW5rIHN0cmluZy4KCS8vIElmIG5vdCBzcGVjaWZpZWQsIGZvcm1hdFN0ciB3aWxsIGRlZmF1bHQgdG8gdGhlIGV2ZW50VGltZUZvcm1hdCBzZXR0aW5nLAoJLy8gYW5kIGRpc3BsYXlFbmQgd2lsbCBkZWZhdWx0IHRvIHRoZSBkaXNwbGF5RXZlbnRFbmQgc2V0dGluZy4KCWdldEV2ZW50VGltZVRleHQ6IGZ1bmN0aW9uKHJhbmdlLCBmb3JtYXRTdHIsIGRpc3BsYXlFbmQpIHsKCgkJaWYgKGZvcm1hdFN0ciA9PSBudWxsKSB7CgkJCWZvcm1hdFN0ciA9IHRoaXMuZXZlbnRUaW1lRm9ybWF0OwoJCX0KCgkJaWYgKGRpc3BsYXlFbmQgPT0gbnVsbCkgewoJCQlkaXNwbGF5RW5kID0gdGhpcy5kaXNwbGF5RXZlbnRFbmQ7CgkJfQoKCQlpZiAodGhpcy5kaXNwbGF5RXZlbnRUaW1lICYmIHJhbmdlLnN0YXJ0Lmhhc1RpbWUoKSkgewoJCQlpZiAoZGlzcGxheUVuZCAmJiByYW5nZS5lbmQpIHsKCQkJCXJldHVybiB0aGlzLnZpZXcuZm9ybWF0UmFuZ2UocmFuZ2UsIGZvcm1hdFN0cik7CgkJCX0KCQkJZWxzZSB7CgkJCQlyZXR1cm4gcmFuZ2Uuc3RhcnQuZm9ybWF0KGZvcm1hdFN0cik7CgkJCX0KCQl9CgoJCXJldHVybiAnJzsKCX0sCgoKCS8vIEdlbmVyaWMgdXRpbGl0eSBmb3IgZ2VuZXJhdGluZyB0aGUgSFRNTCBjbGFzc05hbWVzIGZvciBhbiBldmVudCBzZWdtZW50J3MgZWxlbWVudAoJZ2V0U2VnQ2xhc3NlczogZnVuY3Rpb24oc2VnLCBpc0RyYWdnYWJsZSwgaXNSZXNpemFibGUpIHsKCQl2YXIgZXZlbnQgPSBzZWcuZXZlbnQ7CgkJdmFyIGNsYXNzZXMgPSBbCgkJCSdmYy1ldmVudCcsCgkJCXNlZy5pc1N0YXJ0ID8gJ2ZjLXN0YXJ0JyA6ICdmYy1ub3Qtc3RhcnQnLAoJCQlzZWcuaXNFbmQgPyAnZmMtZW5kJyA6ICdmYy1ub3QtZW5kJwoJCV0uY29uY2F0KAoJCQlldmVudC5jbGFzc05hbWUsCgkJCWV2ZW50LnNvdXJjZSA/IGV2ZW50LnNvdXJjZS5jbGFzc05hbWUgOiBbXQoJCSk7CgoJCWlmIChpc0RyYWdnYWJsZSkgewoJCQljbGFzc2VzLnB1c2goJ2ZjLWRyYWdnYWJsZScpOwoJCX0KCQlpZiAoaXNSZXNpemFibGUpIHsKCQkJY2xhc3Nlcy5wdXNoKCdmYy1yZXNpemFibGUnKTsKCQl9CgoJCXJldHVybiBjbGFzc2VzOwoJfSwKCgoJLy8gVXRpbGl0eSBmb3IgZ2VuZXJhdGluZyBldmVudCBza2luLXJlbGF0ZWQgQ1NTIHByb3BlcnRpZXMKCWdldEV2ZW50U2tpbkNzczogZnVuY3Rpb24oZXZlbnQpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgc291cmNlID0gZXZlbnQuc291cmNlIHx8IHt9OwoJCXZhciBldmVudENvbG9yID0gZXZlbnQuY29sb3I7CgkJdmFyIHNvdXJjZUNvbG9yID0gc291cmNlLmNvbG9yOwoJCXZhciBvcHRpb25Db2xvciA9IHZpZXcub3B0KCdldmVudENvbG9yJyk7CgoJCXJldHVybiB7CgkJCSdiYWNrZ3JvdW5kLWNvbG9yJzoKCQkJCWV2ZW50LmJhY2tncm91bmRDb2xvciB8fAoJCQkJZXZlbnRDb2xvciB8fAoJCQkJc291cmNlLmJhY2tncm91bmRDb2xvciB8fAoJCQkJc291cmNlQ29sb3IgfHwKCQkJCXZpZXcub3B0KCdldmVudEJhY2tncm91bmRDb2xvcicpIHx8CgkJCQlvcHRpb25Db2xvciwKCQkJJ2JvcmRlci1jb2xvcic6CgkJCQlldmVudC5ib3JkZXJDb2xvciB8fAoJCQkJZXZlbnRDb2xvciB8fAoJCQkJc291cmNlLmJvcmRlckNvbG9yIHx8CgkJCQlzb3VyY2VDb2xvciB8fAoJCQkJdmlldy5vcHQoJ2V2ZW50Qm9yZGVyQ29sb3InKSB8fAoJCQkJb3B0aW9uQ29sb3IsCgkJCWNvbG9yOgoJCQkJZXZlbnQudGV4dENvbG9yIHx8CgkJCQlzb3VyY2UudGV4dENvbG9yIHx8CgkJCQl2aWV3Lm9wdCgnZXZlbnRUZXh0Q29sb3InKQoJCX07Cgl9LAoKCgkvKiBDb252ZXJ0aW5nIGV2ZW50cyAtPiByYW5nZXMgLT4gc2VncwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQ29udmVydHMgYW4gYXJyYXkgb2YgZXZlbnQgb2JqZWN0cyBpbnRvIGFuIGFycmF5IG9mIGV2ZW50IHNlZ21lbnQgb2JqZWN0cy4KCS8vIEEgY3VzdG9tIGByYW5nZVRvU2Vnc0Z1bmNgIG1heSBiZSBnaXZlbiBmb3IgYXJiaXRyYXJpbHkgc2xpY2luZyB1cCBldmVudHMuCgkvLyBEb2Vzbid0IGd1YXJhbnRlZSBhbiBvcmRlciBmb3IgdGhlIHJlc3VsdGluZyBhcnJheS4KCWV2ZW50c1RvU2VnczogZnVuY3Rpb24oZXZlbnRzLCByYW5nZVRvU2Vnc0Z1bmMpIHsKCQl2YXIgZXZlbnRSYW5nZXMgPSB0aGlzLmV2ZW50c1RvUmFuZ2VzKGV2ZW50cyk7CgkJdmFyIHNlZ3MgPSBbXTsKCQl2YXIgaTsKCgkJZm9yIChpID0gMDsgaSA8IGV2ZW50UmFuZ2VzLmxlbmd0aDsgaSsrKSB7CgkJCXNlZ3MucHVzaC5hcHBseSgKCQkJCXNlZ3MsCgkJCQl0aGlzLmV2ZW50UmFuZ2VUb1NlZ3MoZXZlbnRSYW5nZXNbaV0sIHJhbmdlVG9TZWdzRnVuYykKCQkJKTsKCQl9CgoJCXJldHVybiBzZWdzOwoJfSwKCgoJLy8gQ29udmVydHMgYW4gYXJyYXkgb2YgZXZlbnRzIGludG8gYW4gYXJyYXkgb2YgInJhbmdlIiBvYmplY3RzLgoJLy8gQSAicmFuZ2UiIG9iamVjdCBpcyBhIHBsYWluIG9iamVjdCB3aXRoIHN0YXJ0L2VuZCBwcm9wZXJ0aWVzIGRlbm90aW5nIHRoZSB0aW1lIGl0IGNvdmVycy4gQWxzbyBhbiBldmVudCBwcm9wZXJ0eS4KCS8vIEZvciAibm9ybWFsIiBldmVudHMsIHRoaXMgd2lsbCBiZSBpZGVudGljYWwgdG8gdGhlIGV2ZW50J3Mgc3RhcnQvZW5kLCBidXQgZm9yICJpbnZlcnNlLWJhY2tncm91bmQiIGV2ZW50cywKCS8vIHdpbGwgY3JlYXRlIGFuIGFycmF5IG9mIHJhbmdlcyB0aGF0IHNwYW4gdGhlIHRpbWUgKm5vdCogY292ZXJlZCBieSB0aGUgZ2l2ZW4gZXZlbnQuCgkvLyBEb2Vzbid0IGd1YXJhbnRlZSBhbiBvcmRlciBmb3IgdGhlIHJlc3VsdGluZyBhcnJheS4KCWV2ZW50c1RvUmFuZ2VzOiBmdW5jdGlvbihldmVudHMpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoJCXZhciBldmVudHNCeUlkID0gZ3JvdXBFdmVudHNCeUlkKGV2ZW50cyk7CgkJdmFyIHJhbmdlcyA9IFtdOwoKCQkvLyBncm91cCBieSBJRCBzbyB0aGF0IHJlbGF0ZWQgaW52ZXJzZS1iYWNrZ3JvdW5kIGV2ZW50cyBjYW4gYmUgcmVuZGVyZWQgdG9nZXRoZXIKCQkkLmVhY2goZXZlbnRzQnlJZCwgZnVuY3Rpb24oaWQsIGV2ZW50R3JvdXApIHsKCQkJaWYgKGV2ZW50R3JvdXAubGVuZ3RoKSB7CgkJCQlyYW5nZXMucHVzaC5hcHBseSgKCQkJCQlyYW5nZXMsCgkJCQkJaXNJbnZlcnNlQmdFdmVudChldmVudEdyb3VwWzBdKSA/CgkJCQkJCV90aGlzLmV2ZW50c1RvSW52ZXJzZVJhbmdlcyhldmVudEdyb3VwKSA6CgkJCQkJCV90aGlzLmV2ZW50c1RvTm9ybWFsUmFuZ2VzKGV2ZW50R3JvdXApCgkJCQkpOwoJCQl9CgkJfSk7CgoJCXJldHVybiByYW5nZXM7Cgl9LAoKCgkvLyBDb252ZXJ0cyBhbiBhcnJheSBvZiAibm9ybWFsIiBldmVudHMgKG5vdCBpbnZlcnRlZCByZW5kZXJpbmcpIGludG8gYSBwYXJhbGxlbCBhcnJheSBvZiByYW5nZXMKCWV2ZW50c1RvTm9ybWFsUmFuZ2VzOiBmdW5jdGlvbihldmVudHMpIHsKCQl2YXIgY2FsZW5kYXIgPSB0aGlzLnZpZXcuY2FsZW5kYXI7CgkJdmFyIHJhbmdlcyA9IFtdOwoJCXZhciBpLCBldmVudDsKCQl2YXIgZXZlbnRTdGFydCwgZXZlbnRFbmQ7CgoJCWZvciAoaSA9IDA7IGkgPCBldmVudHMubGVuZ3RoOyBpKyspIHsKCQkJZXZlbnQgPSBldmVudHNbaV07CgoJCQkvLyBtYWtlIGNvcGllcyBhbmQgbm9ybWFsaXplIGJ5IHN0cmlwcGluZyB0aW1lem9uZQoJCQlldmVudFN0YXJ0ID0gZXZlbnQuc3RhcnQuY2xvbmUoKS5zdHJpcFpvbmUoKTsKCQkJZXZlbnRFbmQgPSBjYWxlbmRhci5nZXRFdmVudEVuZChldmVudCkuc3RyaXBab25lKCk7CgoJCQlyYW5nZXMucHVzaCh7CgkJCQlldmVudDogZXZlbnQsCgkJCQlzdGFydDogZXZlbnRTdGFydCwKCQkJCWVuZDogZXZlbnRFbmQsCgkJCQlldmVudFN0YXJ0TVM6ICtldmVudFN0YXJ0LAoJCQkJZXZlbnREdXJhdGlvbk1TOiBldmVudEVuZCAtIGV2ZW50U3RhcnQKCQkJfSk7CgkJfQoKCQlyZXR1cm4gcmFuZ2VzOwoJfSwKCgoJLy8gQ29udmVydHMgYW4gYXJyYXkgb2YgZXZlbnRzLCB3aXRoIGludmVyc2UtYmFja2dyb3VuZCByZW5kZXJpbmcsIGludG8gYW4gYXJyYXkgb2YgcmFuZ2Ugb2JqZWN0cy4KCS8vIFRoZSByYW5nZSBvYmplY3RzIHdpbGwgY292ZXIgYWxsIHRoZSB0aW1lIE5PVCBjb3ZlcmVkIGJ5IHRoZSBldmVudHMuCglldmVudHNUb0ludmVyc2VSYW5nZXM6IGZ1bmN0aW9uKGV2ZW50cykgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciB2aWV3U3RhcnQgPSB2aWV3LnN0YXJ0LmNsb25lKCkuc3RyaXBab25lKCk7IC8vIG5vcm1hbGl6ZSB0aW1lem9uZQoJCXZhciB2aWV3RW5kID0gdmlldy5lbmQuY2xvbmUoKS5zdHJpcFpvbmUoKTsgLy8gbm9ybWFsaXplIHRpbWV6b25lCgkJdmFyIG5vcm1hbFJhbmdlcyA9IHRoaXMuZXZlbnRzVG9Ob3JtYWxSYW5nZXMoZXZlbnRzKTsgLy8gd2lsbCBnaXZlIHVzIG5vcm1hbGl6ZWQgZGF0ZXMgd2UgY2FuIHVzZSB3L28gY29waWVzCgkJdmFyIGludmVyc2VSYW5nZXMgPSBbXTsKCQl2YXIgZXZlbnQwID0gZXZlbnRzWzBdOyAvLyBhc3NpZ24gdGhpcyB0byBlYWNoIHJhbmdlJ3MgYC5ldmVudGAKCQl2YXIgc3RhcnQgPSB2aWV3U3RhcnQ7IC8vIHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIHJhbmdlLiB0aGUgc3RhcnQgb2YgdGhlIG5ldyByYW5nZQoJCXZhciBpLCBub3JtYWxSYW5nZTsKCgkJLy8gcmFuZ2VzIG5lZWQgdG8gYmUgaW4gb3JkZXIuIHJlcXVpcmVkIGZvciBvdXIgZGF0ZS13YWxraW5nIGFsZ29yaXRobQoJCW5vcm1hbFJhbmdlcy5zb3J0KGNvbXBhcmVOb3JtYWxSYW5nZXMpOwoKCQlmb3IgKGkgPSAwOyBpIDwgbm9ybWFsUmFuZ2VzLmxlbmd0aDsgaSsrKSB7CgkJCW5vcm1hbFJhbmdlID0gbm9ybWFsUmFuZ2VzW2ldOwoKCQkJLy8gYWRkIHRoZSBzcGFuIG9mIHRpbWUgYmVmb3JlIHRoZSBldmVudCAoaWYgdGhlcmUgaXMgYW55KQoJCQlpZiAobm9ybWFsUmFuZ2Uuc3RhcnQgPiBzdGFydCkgeyAvLyBjb21wYXJlIG1pbGxpc2Vjb25kIHRpbWUgKHNraXAgYW55IGFtYmlnIGxvZ2ljKQoJCQkJaW52ZXJzZVJhbmdlcy5wdXNoKHsKCQkJCQlldmVudDogZXZlbnQwLAoJCQkJCXN0YXJ0OiBzdGFydCwKCQkJCQllbmQ6IG5vcm1hbFJhbmdlLnN0YXJ0CgkJCQl9KTsKCQkJfQoKCQkJc3RhcnQgPSBub3JtYWxSYW5nZS5lbmQ7CgkJfQoKCQkvLyBhZGQgdGhlIHNwYW4gb2YgdGltZSBhZnRlciB0aGUgbGFzdCBldmVudCAoaWYgdGhlcmUgaXMgYW55KQoJCWlmIChzdGFydCA8IHZpZXdFbmQpIHsgLy8gY29tcGFyZSBtaWxsaXNlY29uZCB0aW1lIChza2lwIGFueSBhbWJpZyBsb2dpYykKCQkJaW52ZXJzZVJhbmdlcy5wdXNoKHsKCQkJCWV2ZW50OiBldmVudDAsCgkJCQlzdGFydDogc3RhcnQsCgkJCQllbmQ6IHZpZXdFbmQKCQkJfSk7CgkJfQoKCQlyZXR1cm4gaW52ZXJzZVJhbmdlczsKCX0sCgoKCS8vIFNsaWNlcyB0aGUgZ2l2ZW4gZXZlbnQgcmFuZ2UgaW50byBvbmUgb3IgbW9yZSBzZWdtZW50IG9iamVjdHMuCgkvLyBBIGByYW5nZVRvU2Vnc0Z1bmNgIGN1c3RvbSBzbGljaW5nIGZ1bmN0aW9uIGNhbiBiZSBnaXZlbi4KCWV2ZW50UmFuZ2VUb1NlZ3M6IGZ1bmN0aW9uKGV2ZW50UmFuZ2UsIHJhbmdlVG9TZWdzRnVuYykgewoJCXZhciBzZWdzOwoJCXZhciBpLCBzZWc7CgoJCWV2ZW50UmFuZ2UgPSB0aGlzLnZpZXcuY2FsZW5kYXIuZW5zdXJlVmlzaWJsZUV2ZW50UmFuZ2UoZXZlbnRSYW5nZSk7CgoJCWlmIChyYW5nZVRvU2Vnc0Z1bmMpIHsKCQkJc2VncyA9IHJhbmdlVG9TZWdzRnVuYyhldmVudFJhbmdlKTsKCQl9CgkJZWxzZSB7CgkJCXNlZ3MgPSB0aGlzLnJhbmdlVG9TZWdzKGV2ZW50UmFuZ2UpOyAvLyBkZWZpbmVkIGJ5IHRoZSBzdWJjbGFzcwoJCX0KCgkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJc2VnID0gc2Vnc1tpXTsKCQkJc2VnLmV2ZW50ID0gZXZlbnRSYW5nZS5ldmVudDsKCQkJc2VnLmV2ZW50U3RhcnRNUyA9IGV2ZW50UmFuZ2UuZXZlbnRTdGFydE1TOwoJCQlzZWcuZXZlbnREdXJhdGlvbk1TID0gZXZlbnRSYW5nZS5ldmVudER1cmF0aW9uTVM7CgkJfQoKCQlyZXR1cm4gc2VnczsKCX0KCn0pOwoKCi8qIFV0aWxpdGllcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgpmdW5jdGlvbiBpc0JnRXZlbnQoZXZlbnQpIHsgLy8gcmV0dXJucyB0cnVlIGlmIGJhY2tncm91bmQgT1IgaW52ZXJzZS1iYWNrZ3JvdW5kCgl2YXIgcmVuZGVyaW5nID0gZ2V0RXZlbnRSZW5kZXJpbmcoZXZlbnQpOwoJcmV0dXJuIHJlbmRlcmluZyA9PT0gJ2JhY2tncm91bmQnIHx8IHJlbmRlcmluZyA9PT0gJ2ludmVyc2UtYmFja2dyb3VuZCc7Cn0KCgpmdW5jdGlvbiBpc0ludmVyc2VCZ0V2ZW50KGV2ZW50KSB7CglyZXR1cm4gZ2V0RXZlbnRSZW5kZXJpbmcoZXZlbnQpID09PSAnaW52ZXJzZS1iYWNrZ3JvdW5kJzsKfQoKCmZ1bmN0aW9uIGdldEV2ZW50UmVuZGVyaW5nKGV2ZW50KSB7CglyZXR1cm4gZmlyc3REZWZpbmVkKChldmVudC5zb3VyY2UgfHwge30pLnJlbmRlcmluZywgZXZlbnQucmVuZGVyaW5nKTsKfQoKCmZ1bmN0aW9uIGdyb3VwRXZlbnRzQnlJZChldmVudHMpIHsKCXZhciBldmVudHNCeUlkID0ge307Cgl2YXIgaSwgZXZlbnQ7CgoJZm9yIChpID0gMDsgaSA8IGV2ZW50cy5sZW5ndGg7IGkrKykgewoJCWV2ZW50ID0gZXZlbnRzW2ldOwoJCShldmVudHNCeUlkW2V2ZW50Ll9pZF0gfHwgKGV2ZW50c0J5SWRbZXZlbnQuX2lkXSA9IFtdKSkucHVzaChldmVudCk7Cgl9CgoJcmV0dXJuIGV2ZW50c0J5SWQ7Cn0KCgovLyBBIGNtcCBmdW5jdGlvbiBmb3IgZGV0ZXJtaW5pbmcgd2hpY2ggbm9uLWludmVydGVkICJyYW5nZXMiIChzZWUgYWJvdmUpIGhhcHBlbiBlYXJsaWVyCmZ1bmN0aW9uIGNvbXBhcmVOb3JtYWxSYW5nZXMocmFuZ2UxLCByYW5nZTIpIHsKCXJldHVybiByYW5nZTEuZXZlbnRTdGFydE1TIC0gcmFuZ2UyLmV2ZW50U3RhcnRNUzsgLy8gZWFybGllciByYW5nZXMgZ28gZmlyc3QKfQoKCi8vIEEgY21wIGZ1bmN0aW9uIGZvciBkZXRlcm1pbmluZyB3aGljaCBzZWdtZW50cyBzaG91bGQgdGFrZSB2aXN1YWwgcHJpb3JpdHkKLy8gRE9FUyBOT1QgV09SSyBPTiBJTlZFUlRFRCBCQUNLR1JPVU5EIEVWRU5UUyBiZWNhdXNlIHRoZXkgaGF2ZSBubyBldmVudFN0YXJ0TVMvZXZlbnREdXJhdGlvbk1TCmZ1bmN0aW9uIGNvbXBhcmVTZWdzKHNlZzEsIHNlZzIpIHsKCXJldHVybiBzZWcxLmV2ZW50U3RhcnRNUyAtIHNlZzIuZXZlbnRTdGFydE1TIHx8IC8vIGVhcmxpZXIgZXZlbnRzIGdvIGZpcnN0CgkJc2VnMi5ldmVudER1cmF0aW9uTVMgLSBzZWcxLmV2ZW50RHVyYXRpb25NUyB8fCAvLyB0aWU/IGxvbmdlciBldmVudHMgZ28gZmlyc3QKCQlzZWcyLmV2ZW50LmFsbERheSAtIHNlZzEuZXZlbnQuYWxsRGF5IHx8IC8vIHRpZT8gcHV0IGFsbC1kYXkgZXZlbnRzIGZpcnN0IChib29sZWFucyBjYXN0IHRvIDAvMSkKCQkoc2VnMS5ldmVudC50aXRsZSB8fCAnJykubG9jYWxlQ29tcGFyZShzZWcyLmV2ZW50LnRpdGxlKTsgLy8gdGllPyBhbHBoYWJldGljYWxseSBieSB0aXRsZQp9CgpmYy5jb21wYXJlU2VncyA9IGNvbXBhcmVTZWdzOyAvLyBleHBvcnQKCgovKiBFeHRlcm5hbC1EcmFnZ2luZy1FbGVtZW50IERhdGEKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgovLyBSZXF1aXJlIGFsbCBIVE1MNSBkYXRhLSogYXR0cmlidXRlcyB1c2VkIGJ5IEZ1bGxDYWxlbmRhciB0byBoYXZlIHRoaXMgcHJlZml4LgovLyBBIHZhbHVlIG9mICcnIHdpbGwgcXVlcnkgYXR0cmlidXRlcyBsaWtlIGRhdGEtZXZlbnQuIEEgdmFsdWUgb2YgJ2ZjJyB3aWxsIHF1ZXJ5IGF0dHJpYnV0ZXMgbGlrZSBkYXRhLWZjLWV2ZW50LgpmYy5kYXRhQXR0clByZWZpeCA9ICcnOwoKLy8gR2l2ZW4gYSBqUXVlcnkgZWxlbWVudCB0aGF0IG1pZ2h0IHJlcHJlc2VudCBhIGRyYWdnZWQgRnVsbENhbGVuZGFyIGV2ZW50LCByZXR1cm5zIGFuIGludGVybWVkaWF0ZSBkYXRhIHN0cnVjdHVyZQovLyB0byBiZSB1c2VkIGZvciBFdmVudCBPYmplY3QgY3JlYXRpb24uCi8vIEEgZGVmaW5lZCBgLmV2ZW50UHJvcHNgLCBldmVuIHdoZW4gZW1wdHksIGluZGljYXRlcyB0aGF0IGFuIGV2ZW50IHNob3VsZCBiZSBjcmVhdGVkLgpmdW5jdGlvbiBnZXREcmFnZ2VkRWxNZXRhKGVsKSB7Cgl2YXIgcHJlZml4ID0gZmMuZGF0YUF0dHJQcmVmaXg7Cgl2YXIgZXZlbnRQcm9wczsgLy8gcHJvcGVydGllcyBmb3IgY3JlYXRpbmcgdGhlIGV2ZW50LCBub3QgcmVsYXRlZCB0byBkYXRlL3RpbWUKCXZhciBzdGFydFRpbWU7IC8vIGEgRHVyYXRpb24KCXZhciBkdXJhdGlvbjsKCXZhciBzdGljazsKCglpZiAocHJlZml4KSB7IHByZWZpeCArPSAnLSc7IH0KCWV2ZW50UHJvcHMgPSBlbC5kYXRhKHByZWZpeCArICdldmVudCcpIHx8IG51bGw7CgoJaWYgKGV2ZW50UHJvcHMpIHsKCQlpZiAodHlwZW9mIGV2ZW50UHJvcHMgPT09ICdvYmplY3QnKSB7CgkJCWV2ZW50UHJvcHMgPSAkLmV4dGVuZCh7fSwgZXZlbnRQcm9wcyk7IC8vIG1ha2UgYSBjb3B5CgkJfQoJCWVsc2UgeyAvLyBzb21ldGhpbmcgbGlrZSAxIG9yIHRydWUuIHN0aWxsIHNpZ25hbCBldmVudCBjcmVhdGlvbgoJCQlldmVudFByb3BzID0ge307CgkJfQoKCQkvLyBwbHVjayBzcGVjaWFsLWNhc2VkIGRhdGUvdGltZSBwcm9wZXJ0aWVzCgkJc3RhcnRUaW1lID0gZXZlbnRQcm9wcy5zdGFydDsKCQlpZiAoc3RhcnRUaW1lID09IG51bGwpIHsgc3RhcnRUaW1lID0gZXZlbnRQcm9wcy50aW1lOyB9IC8vIGFjY2VwdCAndGltZScgYXMgd2VsbAoJCWR1cmF0aW9uID0gZXZlbnRQcm9wcy5kdXJhdGlvbjsKCQlzdGljayA9IGV2ZW50UHJvcHMuc3RpY2s7CgkJZGVsZXRlIGV2ZW50UHJvcHMuc3RhcnQ7CgkJZGVsZXRlIGV2ZW50UHJvcHMudGltZTsKCQlkZWxldGUgZXZlbnRQcm9wcy5kdXJhdGlvbjsKCQlkZWxldGUgZXZlbnRQcm9wcy5zdGljazsKCX0KCgkvLyBmYWxsYmFjayB0byBzdGFuZGFsb25lIGF0dHJpYnV0ZSB2YWx1ZXMgZm9yIGVhY2ggb2YgdGhlIGRhdGUvdGltZSBwcm9wZXJ0aWVzCglpZiAoc3RhcnRUaW1lID09IG51bGwpIHsgc3RhcnRUaW1lID0gZWwuZGF0YShwcmVmaXggKyAnc3RhcnQnKTsgfQoJaWYgKHN0YXJ0VGltZSA9PSBudWxsKSB7IHN0YXJ0VGltZSA9IGVsLmRhdGEocHJlZml4ICsgJ3RpbWUnKTsgfSAvLyBhY2NlcHQgJ3RpbWUnIGFzIHdlbGwKCWlmIChkdXJhdGlvbiA9PSBudWxsKSB7IGR1cmF0aW9uID0gZWwuZGF0YShwcmVmaXggKyAnZHVyYXRpb24nKTsgfQoJaWYgKHN0aWNrID09IG51bGwpIHsgc3RpY2sgPSBlbC5kYXRhKHByZWZpeCArICdzdGljaycpOyB9CgoJLy8gbWFzc2FnZSBpbnRvIGNvcnJlY3QgZGF0YSB0eXBlcwoJc3RhcnRUaW1lID0gc3RhcnRUaW1lICE9IG51bGwgPyBtb21lbnQuZHVyYXRpb24oc3RhcnRUaW1lKSA6IG51bGw7CglkdXJhdGlvbiA9IGR1cmF0aW9uICE9IG51bGwgPyBtb21lbnQuZHVyYXRpb24oZHVyYXRpb24pIDogbnVsbDsKCXN0aWNrID0gQm9vbGVhbihzdGljayk7CgoJcmV0dXJuIHsgZXZlbnRQcm9wczogZXZlbnRQcm9wcywgc3RhcnRUaW1lOiBzdGFydFRpbWUsIGR1cmF0aW9uOiBkdXJhdGlvbiwgc3RpY2s6IHN0aWNrIH07Cn0KCgo7OwoKLyogQSBjb21wb25lbnQgdGhhdCByZW5kZXJzIGEgZ3JpZCBvZiB3aG9sZS1kYXlzIHRoYXQgcnVucyBob3Jpem9udGFsbHkuIFRoZXJlIGNhbiBiZSBtdWx0aXBsZSByb3dzLCBvbmUgcGVyIHdlZWsuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKdmFyIERheUdyaWQgPSBHcmlkLmV4dGVuZCh7CgoJbnVtYmVyc1Zpc2libGU6IGZhbHNlLCAvLyBzaG91bGQgcmVuZGVyIGEgcm93IGZvciBkYXkvd2VlayBudW1iZXJzPyBzZXQgYnkgb3V0c2lkZSB2aWV3LiBUT0RPOiBtYWtlIGludGVybmFsCglib3R0b21Db29yZFBhZGRpbmc6IDAsIC8vIGhhY2sgZm9yIGV4dGVuZGluZyB0aGUgaGl0IGFyZWEgZm9yIHRoZSBsYXN0IHJvdyBvZiB0aGUgY29vcmRpbmF0ZSBncmlkCglicmVha09uV2Vla3M6IG51bGwsIC8vIHNob3VsZCBjcmVhdGUgYSBuZXcgcm93IGZvciBlYWNoIHdlZWs/IHNldCBieSBvdXRzaWRlIHZpZXcKCgljZWxsRGF0ZXM6IG51bGwsIC8vIGZsYXQgY2hyb25vbG9naWNhbCBhcnJheSBvZiBlYWNoIGNlbGwncyBkYXRlcwoJZGF5VG9DZWxsT2Zmc2V0czogbnVsbCwgLy8gbWFwcyBkYXlzIG9mZnNldHMgZnJvbSBncmlkJ3Mgc3RhcnQgZGF0ZSwgdG8gY2VsbCBvZmZzZXRzCgoJcm93RWxzOiBudWxsLCAvLyBzZXQgb2YgZmFrZSByb3cgZWxlbWVudHMKCWRheUVsczogbnVsbCwgLy8gc2V0IG9mIHdob2xlLWRheSBlbGVtZW50cyBjb21wcmlzaW5nIHRoZSByb3cncyBiYWNrZ3JvdW5kCgloZWxwZXJFbHM6IG51bGwsIC8vIHNldCBvZiBjZWxsIHNrZWxldG9uIGVsZW1lbnRzIGZvciByZW5kZXJpbmcgdGhlIG1vY2sgZXZlbnQgImhlbHBlciIKCgoJY29uc3RydWN0b3I6IGZ1bmN0aW9uKCkgewoJCUdyaWQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKCgkJdGhpcy5jZWxsRHVyYXRpb24gPSBtb21lbnQuZHVyYXRpb24oMSwgJ2RheScpOyAvLyBmb3IgR3JpZCBzeXN0ZW0KCX0sCgoKCS8vIFJlbmRlcnMgdGhlIHJvd3MgYW5kIGNvbHVtbnMgaW50byB0aGUgY29tcG9uZW50J3MgYHRoaXMuZWxgLCB3aGljaCBzaG91bGQgYWxyZWFkeSBiZSBhc3NpZ25lZC4KCS8vIGlzUmlnaWQgZGV0ZXJtaW5zIHdoZXRoZXIgdGhlIGluZGl2aWR1YWwgcm93cyBzaG91bGQgaWdub3JlIHRoZSBjb250ZW50cyBhbmQgYmUgYSBjb25zdGFudCBoZWlnaHQuCgkvLyBSZWxpZXMgb24gdGhlIHZpZXcncyBjb2xDbnQgYW5kIHJvd0NudC4gSW4gdGhlIGZ1dHVyZSwgdGhpcyBjb21wb25lbnQgc2hvdWxkIHByb2JhYmx5IGJlIHNlbGYtc3VmZmljaWVudC4KCXJlbmRlckRhdGVzOiBmdW5jdGlvbihpc1JpZ2lkKSB7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIHJvd0NudCA9IHRoaXMucm93Q250OwoJCXZhciBjb2xDbnQgPSB0aGlzLmNvbENudDsKCQl2YXIgY2VsbENudCA9IHJvd0NudCAqIGNvbENudDsKCQl2YXIgaHRtbCA9ICcnOwoJCXZhciByb3c7CgkJdmFyIGksIGNlbGw7CgoJCWZvciAocm93ID0gMDsgcm93IDwgcm93Q250OyByb3crKykgewoJCQlodG1sICs9IHRoaXMuZGF5Um93SHRtbChyb3csIGlzUmlnaWQpOwoJCX0KCQl0aGlzLmVsLmh0bWwoaHRtbCk7CgoJCXRoaXMucm93RWxzID0gdGhpcy5lbC5maW5kKCcuZmMtcm93Jyk7CgkJdGhpcy5kYXlFbHMgPSB0aGlzLmVsLmZpbmQoJy5mYy1kYXknKTsKCgkJLy8gdHJpZ2dlciBkYXlSZW5kZXIgd2l0aCBlYWNoIGNlbGwncyBlbGVtZW50CgkJZm9yIChpID0gMDsgaSA8IGNlbGxDbnQ7IGkrKykgewoJCQljZWxsID0gdGhpcy5nZXRDZWxsKGkpOwoJCQl2aWV3LnRyaWdnZXIoJ2RheVJlbmRlcicsIG51bGwsIGNlbGwuc3RhcnQsIHRoaXMuZGF5RWxzLmVxKGkpKTsKCQl9Cgl9LAoKCgl1bnJlbmRlckRhdGVzOiBmdW5jdGlvbigpIHsKCQl0aGlzLnJlbW92ZVNlZ1BvcG92ZXIoKTsKCX0sCgoKCXJlbmRlckJ1c2luZXNzSG91cnM6IGZ1bmN0aW9uKCkgewoJCXZhciBldmVudHMgPSB0aGlzLnZpZXcuY2FsZW5kYXIuZ2V0QnVzaW5lc3NIb3Vyc0V2ZW50cyh0cnVlKTsgLy8gd2hvbGVEYXk9dHJ1ZQoJCXZhciBzZWdzID0gdGhpcy5ldmVudHNUb1NlZ3MoZXZlbnRzKTsKCgkJdGhpcy5yZW5kZXJGaWxsKCdidXNpbmVzc0hvdXJzJywgc2VncywgJ2JnZXZlbnQnKTsKCX0sCgoKCS8vIEdlbmVyYXRlcyB0aGUgSFRNTCBmb3IgYSBzaW5nbGUgcm93LiBgcm93YCBpcyB0aGUgcm93IG51bWJlci4KCWRheVJvd0h0bWw6IGZ1bmN0aW9uKHJvdywgaXNSaWdpZCkgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBjbGFzc2VzID0gWyAnZmMtcm93JywgJ2ZjLXdlZWsnLCB2aWV3LndpZGdldENvbnRlbnRDbGFzcyBdOwoKCQlpZiAoaXNSaWdpZCkgewoJCQljbGFzc2VzLnB1c2goJ2ZjLXJpZ2lkJyk7CgkJfQoKCQlyZXR1cm4gJycgKwoJCQknPGRpdiBjbGFzcz0iJyArIGNsYXNzZXMuam9pbignICcpICsgJyI+JyArCgkJCQknPGRpdiBjbGFzcz0iZmMtYmciPicgKwoJCQkJCSc8dGFibGU+JyArCgkJCQkJCXRoaXMucm93SHRtbCgnZGF5Jywgcm93KSArIC8vIGxldmVyYWdlcyBSb3dSZW5kZXJlci4gY2FsbHMgZGF5Q2VsbEh0bWwoKQoJCQkJCSc8L3RhYmxlPicgKwoJCQkJJzwvZGl2PicgKwoJCQkJJzxkaXYgY2xhc3M9ImZjLWNvbnRlbnQtc2tlbGV0b24iPicgKwoJCQkJCSc8dGFibGU+JyArCgkJCQkJCSh0aGlzLm51bWJlcnNWaXNpYmxlID8KCQkJCQkJCSc8dGhlYWQ+JyArCgkJCQkJCQkJdGhpcy5yb3dIdG1sKCdudW1iZXInLCByb3cpICsgLy8gbGV2ZXJhZ2VzIFJvd1JlbmRlcmVyLiBWaWV3IHdpbGwgZGVmaW5lIHJlbmRlciBtZXRob2QKCQkJCQkJCSc8L3RoZWFkPicgOgoJCQkJCQkJJycKCQkJCQkJCSkgKwoJCQkJCSc8L3RhYmxlPicgKwoJCQkJJzwvZGl2PicgKwoJCQknPC9kaXY+JzsKCX0sCgoKCS8vIFJlbmRlcnMgdGhlIEhUTUwgZm9yIGEgd2hvbGUtZGF5IGNlbGwuIFdpbGwgZXZlbnR1YWxseSBlbmQgdXAgaW4gdGhlIGRheS1yb3cncyBiYWNrZ3JvdW5kLgoJLy8gV2UgZ28gdGhyb3VnaCBhICdkYXknIHJvdyB0eXBlIGluc3RlYWQgb2YganVzdCBkb2luZyBhICdiZycgcm93IHR5cGUgc28gdGhhdCB0aGUgVmlldyBjYW4gZG8gY3VzdG9tIHJlbmRlcmluZwoJLy8gc3BlY2lmaWNhbGx5IGZvciB3aG9sZS1kYXkgcm93cywgd2hlcmVhcyBhICdiZycgbWlnaHQgYWxzbyBiZSB1c2VkIGZvciBvdGhlciBwdXJwb3NlcyAoVGltZUdyaWQgYmcgZm9yIGV4YW1wbGUpLgoJZGF5Q2VsbEh0bWw6IGZ1bmN0aW9uKGNlbGwpIHsKCQlyZXR1cm4gdGhpcy5iZ0NlbGxIdG1sKGNlbGwpOwoJfSwKCgoJLyogT3B0aW9ucwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQ29tcHV0ZXMgYSBkZWZhdWx0IGNvbHVtbiBoZWFkZXIgZm9ybWF0dGluZyBzdHJpbmcgaWYgYGNvbEZvcm1hdGAgaXMgbm90IGV4cGxpY2l0bHkgZGVmaW5lZAoJY29tcHV0ZUNvbEhlYWRGb3JtYXQ6IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLnJvd0NudCA+IDEpIHsgLy8gbW9yZSB0aGFuIG9uZSB3ZWVrIHJvdy4gZGF5IG51bWJlcnMgd2lsbCBiZSBpbiBlYWNoIGNlbGwKCQkJcmV0dXJuICdkZGQnOyAvLyAiU2F0IgoJCX0KCQllbHNlIGlmICh0aGlzLmNvbENudCA+IDEpIHsgLy8gbXVsdGlwbGUgZGF5cywgc28gZnVsbCBzaW5nbGUgZGF0ZSBzdHJpbmcgV09OJ1QgYmUgaW4gdGl0bGUgdGV4dAoJCQlyZXR1cm4gdGhpcy52aWV3Lm9wdCgnZGF5T2ZNb250aEZvcm1hdCcpOyAvLyAiU2F0IDEyLzEwIgoJCX0KCQllbHNlIHsgLy8gc2luZ2xlIGRheSwgc28gZnVsbCBzaW5nbGUgZGF0ZSBzdHJpbmcgd2lsbCBwcm9iYWJseSBiZSBpbiB0aXRsZSB0ZXh0CgkJCXJldHVybiAnZGRkZCc7IC8vICJTYXR1cmRheSIKCQl9Cgl9LAoKCgkvLyBDb21wdXRlcyBhIGRlZmF1bHQgZXZlbnQgdGltZSBmb3JtYXR0aW5nIHN0cmluZyBpZiBgdGltZUZvcm1hdGAgaXMgbm90IGV4cGxpY2l0bHkgZGVmaW5lZAoJY29tcHV0ZUV2ZW50VGltZUZvcm1hdDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMudmlldy5vcHQoJ2V4dHJhU21hbGxUaW1lRm9ybWF0Jyk7IC8vIGxpa2UgIjZwIiBvciAiNjozMHAiCgl9LAoKCgkvLyBDb21wdXRlcyBhIGRlZmF1bHQgYGRpc3BsYXlFdmVudEVuZGAgdmFsdWUgaWYgb25lIGlzIG5vdCBleHBsaWNsdHkgZGVmaW5lZAoJY29tcHV0ZURpc3BsYXlFdmVudEVuZDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMuY29sQ250ID09IDE7IC8vIHdlJ2xsIGxpa2VseSBoYXZlIHNwYWNlIGlmIHRoZXJlJ3Mgb25seSBvbmUgZGF5Cgl9LAoKCgkvKiBDZWxsIFN5c3RlbQoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJcmFuZ2VVcGRhdGVkOiBmdW5jdGlvbigpIHsKCQl2YXIgY2VsbERhdGVzOwoJCXZhciBmaXJzdERheTsKCQl2YXIgcm93Q250OwoJCXZhciBjb2xDbnQ7CgoJCXRoaXMudXBkYXRlQ2VsbERhdGVzKCk7IC8vIHBvcHVsYXRlcyBjZWxsRGF0ZXMgYW5kIGRheVRvQ2VsbE9mZnNldHMKCQljZWxsRGF0ZXMgPSB0aGlzLmNlbGxEYXRlczsKCgkJaWYgKHRoaXMuYnJlYWtPbldlZWtzKSB7CgkJCS8vIGNvdW50IGNvbHVtbnMgdW50aWwgdGhlIGRheS1vZi13ZWVrIHJlcGVhdHMKCQkJZmlyc3REYXkgPSBjZWxsRGF0ZXNbMF0uZGF5KCk7CgkJCWZvciAoY29sQ250ID0gMTsgY29sQ250IDwgY2VsbERhdGVzLmxlbmd0aDsgY29sQ250KyspIHsKCQkJCWlmIChjZWxsRGF0ZXNbY29sQ250XS5kYXkoKSA9PSBmaXJzdERheSkgewoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9CgkJCXJvd0NudCA9IE1hdGguY2VpbChjZWxsRGF0ZXMubGVuZ3RoIC8gY29sQ250KTsKCQl9CgkJZWxzZSB7CgkJCXJvd0NudCA9IDE7CgkJCWNvbENudCA9IGNlbGxEYXRlcy5sZW5ndGg7CgkJfQoKCQl0aGlzLnJvd0NudCA9IHJvd0NudDsKCQl0aGlzLmNvbENudCA9IGNvbENudDsKCX0sCgoKCS8vIFBvcHVsYXRlcyBjZWxsRGF0ZXMgYW5kIGRheVRvQ2VsbE9mZnNldHMKCXVwZGF0ZUNlbGxEYXRlczogZnVuY3Rpb24oKSB7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIGRhdGUgPSB0aGlzLnN0YXJ0LmNsb25lKCk7CgkJdmFyIGRhdGVzID0gW107CgkJdmFyIG9mZnNldCA9IC0xOwoJCXZhciBvZmZzZXRzID0gW107CgoJCXdoaWxlIChkYXRlLmlzQmVmb3JlKHRoaXMuZW5kKSkgeyAvLyBsb29wIGVhY2ggZGF5IGZyb20gc3RhcnQgdG8gZW5kCgkJCWlmICh2aWV3LmlzSGlkZGVuRGF5KGRhdGUpKSB7CgkJCQlvZmZzZXRzLnB1c2gob2Zmc2V0ICsgMC41KTsgLy8gbWFyayB0aGF0IGl0J3MgYmV0d2VlbiBvZmZzZXRzCgkJCX0KCQkJZWxzZSB7CgkJCQlvZmZzZXQrKzsKCQkJCW9mZnNldHMucHVzaChvZmZzZXQpOwoJCQkJZGF0ZXMucHVzaChkYXRlLmNsb25lKCkpOwoJCQl9CgkJCWRhdGUuYWRkKDEsICdkYXlzJyk7CgkJfQoKCQl0aGlzLmNlbGxEYXRlcyA9IGRhdGVzOwoJCXRoaXMuZGF5VG9DZWxsT2Zmc2V0cyA9IG9mZnNldHM7Cgl9LAoKCgkvLyBHaXZlbiBhIGNlbGwgb2JqZWN0LCBnZW5lcmF0ZXMgaXRzIHN0YXJ0IGRhdGUuIFJldHVybnMgYSByZWZlcmVuY2UtZnJlZSBjb3B5LgoJY29tcHV0ZUNlbGxEYXRlOiBmdW5jdGlvbihjZWxsKSB7CgkJdmFyIGNvbENudCA9IHRoaXMuY29sQ250OwoJCXZhciBpbmRleCA9IGNlbGwucm93ICogY29sQ250ICsgKHRoaXMuaXNSVEwgPyBjb2xDbnQgLSBjZWxsLmNvbCAtIDEgOiBjZWxsLmNvbCk7CgoJCXJldHVybiB0aGlzLmNlbGxEYXRlc1tpbmRleF0uY2xvbmUoKTsKCX0sCgoKCS8vIFJldHJpZXZlcyB0aGUgZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGdpdmVuIHJvdwoJZ2V0Um93RWw6IGZ1bmN0aW9uKHJvdykgewoJCXJldHVybiB0aGlzLnJvd0Vscy5lcShyb3cpOwoJfSwKCgoJLy8gUmV0cmlldmVzIHRoZSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgZ2l2ZW4gY29sdW1uCglnZXRDb2xFbDogZnVuY3Rpb24oY29sKSB7CgkJcmV0dXJuIHRoaXMuZGF5RWxzLmVxKGNvbCk7Cgl9LAoKCgkvLyBHZXRzIHRoZSB3aG9sZS1kYXkgZWxlbWVudCBhc3NvY2lhdGVkIHdpdGggdGhlIGNlbGwKCWdldENlbGxEYXlFbDogZnVuY3Rpb24oY2VsbCkgewoJCXJldHVybiB0aGlzLmRheUVscy5lcShjZWxsLnJvdyAqIHRoaXMuY29sQ250ICsgY2VsbC5jb2wpOwoJfSwKCgoJLy8gT3ZlcnJpZGVzIEdyaWQncyBtZXRob2QgZm9yIHdoZW4gcm93IGNvb3JkaW5hdGVzIGFyZSBjb21wdXRlZAoJY29tcHV0ZVJvd0Nvb3JkczogZnVuY3Rpb24oKSB7CgkJdmFyIHJvd0Nvb3JkcyA9IEdyaWQucHJvdG90eXBlLmNvbXB1dGVSb3dDb29yZHMuY2FsbCh0aGlzKTsgLy8gY2FsbCB0aGUgc3VwZXItbWV0aG9kCgoJCS8vIGhhY2sgZm9yIGV4dGVuZGluZyBsYXN0IHJvdyAodXNlZCBieSBBZ2VuZGFWaWV3KQoJCXJvd0Nvb3Jkc1tyb3dDb29yZHMubGVuZ3RoIC0gMV0uYm90dG9tICs9IHRoaXMuYm90dG9tQ29vcmRQYWRkaW5nOwoKCQlyZXR1cm4gcm93Q29vcmRzOwoJfSwKCgoJLyogRGF0ZXMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFNsaWNlcyB1cCBhIGRhdGUgcmFuZ2UgYnkgcm93IGludG8gYW4gYXJyYXkgb2Ygc2VnbWVudHMKCXJhbmdlVG9TZWdzOiBmdW5jdGlvbihyYW5nZSkgewoJCXZhciBpc1JUTCA9IHRoaXMuaXNSVEw7CgkJdmFyIHJvd0NudCA9IHRoaXMucm93Q250OwoJCXZhciBjb2xDbnQgPSB0aGlzLmNvbENudDsKCQl2YXIgc2VncyA9IFtdOwoJCXZhciBmaXJzdCwgbGFzdDsgLy8gaW5jbHVzaXZlIGNlbGwtb2Zmc2V0IHJhbmdlIGZvciBnaXZlbiByYW5nZQoJCXZhciByb3c7CgkJdmFyIHJvd0ZpcnN0LCByb3dMYXN0OyAvLyBpbmNsdXNpdmUgY2VsbC1vZmZzZXQgcmFuZ2UgZm9yIGN1cnJlbnQgcm93CgkJdmFyIGlzU3RhcnQsIGlzRW5kOwoJCXZhciBzZWdGaXJzdCwgc2VnTGFzdDsgLy8gaW5jbHVzaXZlIGNlbGwtb2Zmc2V0IHJhbmdlIGZvciBzZWdtZW50CgkJdmFyIHNlZzsKCgkJcmFuZ2UgPSB0aGlzLnZpZXcuY29tcHV0ZURheVJhbmdlKHJhbmdlKTsgLy8gbWFrZSB3aG9sZS1kYXkgcmFuZ2UsIGNvbnNpZGVyaW5nIG5leHREYXlUaHJlc2hvbGQKCQlmaXJzdCA9IHRoaXMuZGF0ZVRvQ2VsbE9mZnNldChyYW5nZS5zdGFydCk7CgkJbGFzdCA9IHRoaXMuZGF0ZVRvQ2VsbE9mZnNldChyYW5nZS5lbmQuc3VidHJhY3QoMSwgJ2RheXMnKSk7IC8vIG9mZnNldCBvZiBpbmNsdXNpdmUgZW5kIGRhdGUKCgkJZm9yIChyb3cgPSAwOyByb3cgPCByb3dDbnQ7IHJvdysrKSB7CgkJCXJvd0ZpcnN0ID0gcm93ICogY29sQ250OwoJCQlyb3dMYXN0ID0gcm93Rmlyc3QgKyBjb2xDbnQgLSAxOwoKCQkJLy8gaW50ZXJzZWN0IHNlZ21lbnQncyBvZmZzZXQgcmFuZ2Ugd2l0aCB0aGUgcm93J3MKCQkJc2VnRmlyc3QgPSBNYXRoLm1heChyb3dGaXJzdCwgZmlyc3QpOwoJCQlzZWdMYXN0ID0gTWF0aC5taW4ocm93TGFzdCwgbGFzdCk7CgoJCQkvLyBkZWFsIHdpdGggaW4tYmV0d2VlbiBpbmRpY2VzCgkJCXNlZ0ZpcnN0ID0gTWF0aC5jZWlsKHNlZ0ZpcnN0KTsgLy8gaW4tYmV0d2VlbiBzdGFydHMgcm91bmQgdG8gbmV4dCBjZWxsCgkJCXNlZ0xhc3QgPSBNYXRoLmZsb29yKHNlZ0xhc3QpOyAvLyBpbi1iZXR3ZWVuIGVuZHMgcm91bmQgdG8gcHJldiBjZWxsCgoJCQlpZiAoc2VnRmlyc3QgPD0gc2VnTGFzdCkgeyAvLyB3YXMgdGhlcmUgYW55IGludGVyc2VjdGlvbiB3aXRoIHRoZSBjdXJyZW50IHJvdz8KCgkJCQkvLyBtdXN0IGJlIG1hdGNoaW5nIGludGVnZXJzIHRvIGJlIHRoZSBzZWdtZW50J3Mgc3RhcnQvZW5kCgkJCQlpc1N0YXJ0ID0gc2VnRmlyc3QgPT09IGZpcnN0OwoJCQkJaXNFbmQgPSBzZWdMYXN0ID09PSBsYXN0OwoKCQkJCS8vIHRyYW5zbGF0ZSBvZmZzZXRzIHRvIGJlIHJlbGF0aXZlIHRvIHN0YXJ0LW9mLXJvdwoJCQkJc2VnRmlyc3QgLT0gcm93Rmlyc3Q7CgkJCQlzZWdMYXN0IC09IHJvd0ZpcnN0OwoKCQkJCXNlZyA9IHsgcm93OiByb3csIGlzU3RhcnQ6IGlzU3RhcnQsIGlzRW5kOiBpc0VuZCB9OwoJCQkJaWYgKGlzUlRMKSB7CgkJCQkJc2VnLmxlZnRDb2wgPSBjb2xDbnQgLSBzZWdMYXN0IC0gMTsKCQkJCQlzZWcucmlnaHRDb2wgPSBjb2xDbnQgLSBzZWdGaXJzdCAtIDE7CgkJCQl9CgkJCQllbHNlIHsKCQkJCQlzZWcubGVmdENvbCA9IHNlZ0ZpcnN0OwoJCQkJCXNlZy5yaWdodENvbCA9IHNlZ0xhc3Q7CgkJCQl9CgkJCQlzZWdzLnB1c2goc2VnKTsKCQkJfQoJCX0KCgkJcmV0dXJuIHNlZ3M7Cgl9LAoKCgkvLyBHaXZlbiBhIGRhdGUsIHJldHVybnMgaXRzIGNocm9ub2xvY2lhbCBjZWxsLW9mZnNldCBmcm9tIHRoZSBmaXJzdCBjZWxsIG9mIHRoZSBncmlkLgoJLy8gSWYgdGhlIGRhdGUgbGllcyBiZXR3ZWVuIGNlbGxzIChiZWNhdXNlIG9mIGhpZGRlbkRheXMpLCByZXR1cm5zIGEgZmxvYXRpbmctcG9pbnQgdmFsdWUgYmV0d2VlbiBvZmZzZXRzLgoJLy8gSWYgYmVmb3JlIHRoZSBmaXJzdCBvZmZzZXQsIHJldHVybnMgYSBuZWdhdGl2ZSBudW1iZXIuCgkvLyBJZiBhZnRlciB0aGUgbGFzdCBvZmZzZXQsIHJldHVybnMgYW4gb2Zmc2V0IHBhc3QgdGhlIGxhc3QgY2VsbCBvZmZzZXQuCgkvLyBPbmx5IHdvcmtzIGZvciAqc3RhcnQqIGRhdGVzIG9mIGNlbGxzLiBXaWxsIG5vdCB3b3JrIGZvciBleGNsdXNpdmUgZW5kIGRhdGVzIGZvciBjZWxscy4KCWRhdGVUb0NlbGxPZmZzZXQ6IGZ1bmN0aW9uKGRhdGUpIHsKCQl2YXIgb2Zmc2V0cyA9IHRoaXMuZGF5VG9DZWxsT2Zmc2V0czsKCQl2YXIgZGF5ID0gZGF0ZS5kaWZmKHRoaXMuc3RhcnQsICdkYXlzJyk7CgoJCWlmIChkYXkgPCAwKSB7CgkJCXJldHVybiBvZmZzZXRzWzBdIC0gMTsKCQl9CgkJZWxzZSBpZiAoZGF5ID49IG9mZnNldHMubGVuZ3RoKSB7CgkJCXJldHVybiBvZmZzZXRzW29mZnNldHMubGVuZ3RoIC0gMV0gKyAxOwoJCX0KCQllbHNlIHsKCQkJcmV0dXJuIG9mZnNldHNbZGF5XTsKCQl9Cgl9LAoKCgkvKiBFdmVudCBEcmFnIFZpc3VhbGl6YXRpb24KCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgkvLyBUT0RPOiBtb3ZlIHRvIERheUdyaWQuZXZlbnQsIHNpbWlsYXIgdG8gd2hhdCB3ZSBkaWQgd2l0aCBHcmlkJ3MgZHJhZyBtZXRob2RzCgoKCS8vIFJlbmRlcnMgYSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhbiBldmVudCBvciBleHRlcm5hbCBlbGVtZW50IGJlaW5nIGRyYWdnZWQuCgkvLyBUaGUgZHJvcExvY2F0aW9uJ3MgZW5kIGNhbiBiZSBudWxsLiBzZWcgY2FuIGJlIG51bGwuIFNlZSBHcmlkOjpyZW5kZXJEcmFnIGZvciBtb3JlIGluZm8uCglyZW5kZXJEcmFnOiBmdW5jdGlvbihkcm9wTG9jYXRpb24sIHNlZykgewoKCQkvLyBhbHdheXMgcmVuZGVyIGEgaGlnaGxpZ2h0IHVuZGVybmVhdGgKCQl0aGlzLnJlbmRlckhpZ2hsaWdodCh0aGlzLmV2ZW50UmFuZ2VUb1NlZ3MoZHJvcExvY2F0aW9uKSk7CgoJCS8vIGlmIGEgc2VnbWVudCBmcm9tIHRoZSBzYW1lIGNhbGVuZGFyIGJ1dCBhbm90aGVyIGNvbXBvbmVudCBpcyBiZWluZyBkcmFnZ2VkLCByZW5kZXIgYSBoZWxwZXIgZXZlbnQKCQlpZiAoc2VnICYmICFzZWcuZWwuY2xvc2VzdCh0aGlzLmVsKS5sZW5ndGgpIHsKCgkJCXRoaXMucmVuZGVyUmFuZ2VIZWxwZXIoZHJvcExvY2F0aW9uLCBzZWcpOwoJCQl0aGlzLmFwcGx5RHJhZ09wYWNpdHkodGhpcy5oZWxwZXJFbHMpOwoKCQkJcmV0dXJuIHRydWU7IC8vIGEgaGVscGVyIGhhcyBiZWVuIHJlbmRlcmVkCgkJfQoJfSwKCgoJLy8gVW5yZW5kZXJzIGFueSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhIGhvdmVyaW5nIGV2ZW50Cgl1bnJlbmRlckRyYWc6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5yZW5kZXJIaWdobGlnaHQoKTsKCQl0aGlzLnVucmVuZGVySGVscGVyKCk7Cgl9LAoKCgkvKiBFdmVudCBSZXNpemUgVmlzdWFsaXphdGlvbgoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVuZGVycyBhIHZpc3VhbCBpbmRpY2F0aW9uIG9mIGFuIGV2ZW50IGJlaW5nIHJlc2l6ZWQKCXJlbmRlckV2ZW50UmVzaXplOiBmdW5jdGlvbihyYW5nZSwgc2VnKSB7CgkJdGhpcy5yZW5kZXJIaWdobGlnaHQodGhpcy5ldmVudFJhbmdlVG9TZWdzKHJhbmdlKSk7CgkJdGhpcy5yZW5kZXJSYW5nZUhlbHBlcihyYW5nZSwgc2VnKTsKCX0sCgoKCS8vIFVucmVuZGVycyBhIHZpc3VhbCBpbmRpY2F0aW9uIG9mIGFuIGV2ZW50IGJlaW5nIHJlc2l6ZWQKCXVucmVuZGVyRXZlbnRSZXNpemU6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5yZW5kZXJIaWdobGlnaHQoKTsKCQl0aGlzLnVucmVuZGVySGVscGVyKCk7Cgl9LAoKCgkvKiBFdmVudCBIZWxwZXIKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFJlbmRlcnMgYSBtb2NrICJoZWxwZXIiIGV2ZW50LiBgc291cmNlU2VnYCBpcyB0aGUgYXNzb2NpYXRlZCBpbnRlcm5hbCBzZWdtZW50IG9iamVjdC4gSXQgY2FuIGJlIG51bGwuCglyZW5kZXJIZWxwZXI6IGZ1bmN0aW9uKGV2ZW50LCBzb3VyY2VTZWcpIHsKCQl2YXIgaGVscGVyTm9kZXMgPSBbXTsKCQl2YXIgc2VncyA9IHRoaXMuZXZlbnRzVG9TZWdzKFsgZXZlbnQgXSk7CgkJdmFyIHJvd1N0cnVjdHM7CgoJCXNlZ3MgPSB0aGlzLnJlbmRlckZnU2VnRWxzKHNlZ3MpOyAvLyBhc3NpZ25zIGVhY2ggc2VnJ3MgZWwgYW5kIHJldHVybnMgYSBzdWJzZXQgb2Ygc2VncyB0aGF0IHdlcmUgcmVuZGVyZWQKCQlyb3dTdHJ1Y3RzID0gdGhpcy5yZW5kZXJTZWdSb3dzKHNlZ3MpOwoKCQkvLyBpbmplY3QgZWFjaCBuZXcgZXZlbnQgc2tlbGV0b24gaW50byBlYWNoIGFzc29jaWF0ZWQgcm93CgkJdGhpcy5yb3dFbHMuZWFjaChmdW5jdGlvbihyb3csIHJvd05vZGUpIHsKCQkJdmFyIHJvd0VsID0gJChyb3dOb2RlKTsgLy8gdGhlIC5mYy1yb3cKCQkJdmFyIHNrZWxldG9uRWwgPSAkKCc8ZGl2IGNsYXNzPSJmYy1oZWxwZXItc2tlbGV0b24iPjx0YWJsZS8+PC9kaXY+Jyk7IC8vIHdpbGwgYmUgYWJzb2x1dGVseSBwb3NpdGlvbmVkCgkJCXZhciBza2VsZXRvblRvcDsKCgkJCS8vIElmIHRoZXJlIGlzIGFuIG9yaWdpbmFsIHNlZ21lbnQsIG1hdGNoIHRoZSB0b3AgcG9zaXRpb24uIE90aGVyd2lzZSwgcHV0IGl0IGF0IHRoZSByb3cncyB0b3AgbGV2ZWwKCQkJaWYgKHNvdXJjZVNlZyAmJiBzb3VyY2VTZWcucm93ID09PSByb3cpIHsKCQkJCXNrZWxldG9uVG9wID0gc291cmNlU2VnLmVsLnBvc2l0aW9uKCkudG9wOwoJCQl9CgkJCWVsc2UgewoJCQkJc2tlbGV0b25Ub3AgPSByb3dFbC5maW5kKCcuZmMtY29udGVudC1za2VsZXRvbiB0Ym9keScpLnBvc2l0aW9uKCkudG9wOwoJCQl9CgoJCQlza2VsZXRvbkVsLmNzcygndG9wJywgc2tlbGV0b25Ub3ApCgkJCQkuZmluZCgndGFibGUnKQoJCQkJCS5hcHBlbmQocm93U3RydWN0c1tyb3ddLnRib2R5RWwpOwoKCQkJcm93RWwuYXBwZW5kKHNrZWxldG9uRWwpOwoJCQloZWxwZXJOb2Rlcy5wdXNoKHNrZWxldG9uRWxbMF0pOwoJCX0pOwoKCQl0aGlzLmhlbHBlckVscyA9ICQoaGVscGVyTm9kZXMpOyAvLyBhcnJheSAtPiBqUXVlcnkgc2V0Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYW55IHZpc3VhbCBpbmRpY2F0aW9uIG9mIGEgbW9jayBoZWxwZXIgZXZlbnQKCXVucmVuZGVySGVscGVyOiBmdW5jdGlvbigpIHsKCQlpZiAodGhpcy5oZWxwZXJFbHMpIHsKCQkJdGhpcy5oZWxwZXJFbHMucmVtb3ZlKCk7CgkJCXRoaXMuaGVscGVyRWxzID0gbnVsbDsKCQl9Cgl9LAoKCgkvKiBGaWxsIFN5c3RlbSAoaGlnaGxpZ2h0LCBiYWNrZ3JvdW5kIGV2ZW50cywgYnVzaW5lc3MgaG91cnMpCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCglmaWxsU2VnVGFnOiAndGQnLCAvLyBvdmVycmlkZSB0aGUgZGVmYXVsdCB0YWcgbmFtZQoKCgkvLyBSZW5kZXJzIGEgc2V0IG9mIHJlY3RhbmdsZXMgb3ZlciB0aGUgZ2l2ZW4gc2VnbWVudHMgb2YgZGF5cy4KCS8vIE9ubHkgcmV0dXJucyBzZWdtZW50cyB0aGF0IHN1Y2Nlc3NmdWxseSByZW5kZXJlZC4KCXJlbmRlckZpbGw6IGZ1bmN0aW9uKHR5cGUsIHNlZ3MsIGNsYXNzTmFtZSkgewoJCXZhciBub2RlcyA9IFtdOwoJCXZhciBpLCBzZWc7CgkJdmFyIHNrZWxldG9uRWw7CgoJCXNlZ3MgPSB0aGlzLnJlbmRlckZpbGxTZWdFbHModHlwZSwgc2Vncyk7IC8vIGFzc2lnbmVzIGAuZWxgIHRvIGVhY2ggc2VnLiByZXR1cm5zIHN1Y2Nlc3NmdWxseSByZW5kZXJlZCBzZWdzCgoJCWZvciAoaSA9IDA7IGkgPCBzZWdzLmxlbmd0aDsgaSsrKSB7CgkJCXNlZyA9IHNlZ3NbaV07CgkJCXNrZWxldG9uRWwgPSB0aGlzLnJlbmRlckZpbGxSb3codHlwZSwgc2VnLCBjbGFzc05hbWUpOwoJCQl0aGlzLnJvd0Vscy5lcShzZWcucm93KS5hcHBlbmQoc2tlbGV0b25FbCk7CgkJCW5vZGVzLnB1c2goc2tlbGV0b25FbFswXSk7CgkJfQoKCQl0aGlzLmVsc0J5RmlsbFt0eXBlXSA9ICQobm9kZXMpOwoKCQlyZXR1cm4gc2VnczsKCX0sCgoKCS8vIEdlbmVyYXRlcyB0aGUgSFRNTCBuZWVkZWQgZm9yIG9uZSByb3cgb2YgYSBmaWxsLiBSZXF1aXJlcyB0aGUgc2VnJ3MgZWwgdG8gYmUgcmVuZGVyZWQuCglyZW5kZXJGaWxsUm93OiBmdW5jdGlvbih0eXBlLCBzZWcsIGNsYXNzTmFtZSkgewoJCXZhciBjb2xDbnQgPSB0aGlzLmNvbENudDsKCQl2YXIgc3RhcnRDb2wgPSBzZWcubGVmdENvbDsKCQl2YXIgZW5kQ29sID0gc2VnLnJpZ2h0Q29sICsgMTsKCQl2YXIgc2tlbGV0b25FbDsKCQl2YXIgdHJFbDsKCgkJY2xhc3NOYW1lID0gY2xhc3NOYW1lIHx8IHR5cGUudG9Mb3dlckNhc2UoKTsKCgkJc2tlbGV0b25FbCA9ICQoCgkJCSc8ZGl2IGNsYXNzPSJmYy0nICsgY2xhc3NOYW1lICsgJy1za2VsZXRvbiI+JyArCgkJCQknPHRhYmxlPjx0ci8+PC90YWJsZT4nICsKCQkJJzwvZGl2PicKCQkpOwoJCXRyRWwgPSBza2VsZXRvbkVsLmZpbmQoJ3RyJyk7CgoJCWlmIChzdGFydENvbCA+IDApIHsKCQkJdHJFbC5hcHBlbmQoJzx0ZCBjb2xzcGFuPSInICsgc3RhcnRDb2wgKyAnIi8+Jyk7CgkJfQoKCQl0ckVsLmFwcGVuZCgKCQkJc2VnLmVsLmF0dHIoJ2NvbHNwYW4nLCBlbmRDb2wgLSBzdGFydENvbCkKCQkpOwoKCQlpZiAoZW5kQ29sIDwgY29sQ250KSB7CgkJCXRyRWwuYXBwZW5kKCc8dGQgY29sc3Bhbj0iJyArIChjb2xDbnQgLSBlbmRDb2wpICsgJyIvPicpOwoJCX0KCgkJdGhpcy5ib29rZW5kQ2VsbHModHJFbCwgdHlwZSk7CgoJCXJldHVybiBza2VsZXRvbkVsOwoJfQoKfSk7Cgo7OwoKLyogRXZlbnQtcmVuZGVyaW5nIG1ldGhvZHMgZm9yIHRoZSBEYXlHcmlkIGNsYXNzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKRGF5R3JpZC5taXhpbih7CgoJcm93U3RydWN0czogbnVsbCwgLy8gYW4gYXJyYXkgb2Ygb2JqZWN0cywgZWFjaCBob2xkaW5nIGluZm9ybWF0aW9uIGFib3V0IGEgcm93J3MgZm9yZWdyb3VuZCBldmVudC1yZW5kZXJpbmcKCgoJLy8gVW5yZW5kZXJzIGFsbCBldmVudHMgY3VycmVudGx5IHJlbmRlcmVkIG9uIHRoZSBncmlkCgl1bnJlbmRlckV2ZW50czogZnVuY3Rpb24oKSB7CgkJdGhpcy5yZW1vdmVTZWdQb3BvdmVyKCk7IC8vIHJlbW92ZXMgdGhlICJtb3JlLi4iIGV2ZW50cyBwb3BvdmVyCgkJR3JpZC5wcm90b3R5cGUudW5yZW5kZXJFdmVudHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgLy8gY2FsbHMgdGhlIHN1cGVyLW1ldGhvZAoJfSwKCgoJLy8gUmV0cmlldmVzIGFsbCByZW5kZXJlZCBzZWdtZW50IG9iamVjdHMgY3VycmVudGx5IHJlbmRlcmVkIG9uIHRoZSBncmlkCglnZXRFdmVudFNlZ3M6IGZ1bmN0aW9uKCkgewoJCXJldHVybiBHcmlkLnByb3RvdHlwZS5nZXRFdmVudFNlZ3MuY2FsbCh0aGlzKSAvLyBnZXQgdGhlIHNlZ21lbnRzIGZyb20gdGhlIHN1cGVyLW1ldGhvZAoJCQkuY29uY2F0KHRoaXMucG9wb3ZlclNlZ3MgfHwgW10pOyAvLyBhcHBlbmQgdGhlIHNlZ21lbnRzIGZyb20gdGhlICJtb3JlLi4uIiBwb3BvdmVyCgl9LAoKCgkvLyBSZW5kZXJzIHRoZSBnaXZlbiBiYWNrZ3JvdW5kIGV2ZW50IHNlZ21lbnRzIG9udG8gdGhlIGdyaWQKCXJlbmRlckJnU2VnczogZnVuY3Rpb24oc2VncykgewoKCQkvLyBkb24ndCByZW5kZXIgdGltZWQgYmFja2dyb3VuZCBldmVudHMKCQl2YXIgYWxsRGF5U2VncyA9ICQuZ3JlcChzZWdzLCBmdW5jdGlvbihzZWcpIHsKCQkJcmV0dXJuIHNlZy5ldmVudC5hbGxEYXk7CgkJfSk7CgoJCXJldHVybiBHcmlkLnByb3RvdHlwZS5yZW5kZXJCZ1NlZ3MuY2FsbCh0aGlzLCBhbGxEYXlTZWdzKTsgLy8gY2FsbCB0aGUgc3VwZXItbWV0aG9kCgl9LAoKCgkvLyBSZW5kZXJzIHRoZSBnaXZlbiBmb3JlZ3JvdW5kIGV2ZW50IHNlZ21lbnRzIG9udG8gdGhlIGdyaWQKCXJlbmRlckZnU2VnczogZnVuY3Rpb24oc2VncykgewoJCXZhciByb3dTdHJ1Y3RzOwoKCQkvLyByZW5kZXIgYW4gYC5lbGAgb24gZWFjaCBzZWcKCQkvLyByZXR1cm5zIGEgc3Vic2V0IG9mIHRoZSBzZWdzLiBzZWdzIHRoYXQgd2VyZSBhY3R1YWxseSByZW5kZXJlZAoJCXNlZ3MgPSB0aGlzLnJlbmRlckZnU2VnRWxzKHNlZ3MpOwoKCQlyb3dTdHJ1Y3RzID0gdGhpcy5yb3dTdHJ1Y3RzID0gdGhpcy5yZW5kZXJTZWdSb3dzKHNlZ3MpOwoKCQkvLyBhcHBlbmQgdG8gZWFjaCByb3cncyBjb250ZW50IHNrZWxldG9uCgkJdGhpcy5yb3dFbHMuZWFjaChmdW5jdGlvbihpLCByb3dOb2RlKSB7CgkJCSQocm93Tm9kZSkuZmluZCgnLmZjLWNvbnRlbnQtc2tlbGV0b24gPiB0YWJsZScpLmFwcGVuZCgKCQkJCXJvd1N0cnVjdHNbaV0udGJvZHlFbAoJCQkpOwoJCX0pOwoKCQlyZXR1cm4gc2VnczsgLy8gcmV0dXJuIG9ubHkgdGhlIHNlZ3MgdGhhdCB3ZXJlIGFjdHVhbGx5IHJlbmRlcmVkCgl9LAoKCgkvLyBVbnJlbmRlcnMgYWxsIGN1cnJlbnRseSByZW5kZXJlZCBmb3JlZ3JvdW5kIGV2ZW50IHNlZ21lbnRzCgl1bnJlbmRlckZnU2VnczogZnVuY3Rpb24oKSB7CgkJdmFyIHJvd1N0cnVjdHMgPSB0aGlzLnJvd1N0cnVjdHMgfHwgW107CgkJdmFyIHJvd1N0cnVjdDsKCgkJd2hpbGUgKChyb3dTdHJ1Y3QgPSByb3dTdHJ1Y3RzLnBvcCgpKSkgewoJCQlyb3dTdHJ1Y3QudGJvZHlFbC5yZW1vdmUoKTsKCQl9CgoJCXRoaXMucm93U3RydWN0cyA9IG51bGw7Cgl9LAoKCgkvLyBVc2VzIHRoZSBnaXZlbiBldmVudHMgYXJyYXkgdG8gZ2VuZXJhdGUgPHRib2R5PiBlbGVtZW50cyB0aGF0IHNob3VsZCBiZSBhcHBlbmRlZCB0byBlYWNoIHJvdydzIGNvbnRlbnQgc2tlbGV0b24uCgkvLyBSZXR1cm5zIGFuIGFycmF5IG9mIHJvd1N0cnVjdCBvYmplY3RzIChzZWUgdGhlIGJvdHRvbSBvZiBgcmVuZGVyU2VnUm93YCkuCgkvLyBQUkVDT05ESVRJT046IGVhY2ggc2VnbWVudCBzaG91ZCBhbHJlYWR5IGhhdmUgYSByZW5kZXJlZCBhbmQgYXNzaWduZWQgYC5lbGAKCXJlbmRlclNlZ1Jvd3M6IGZ1bmN0aW9uKHNlZ3MpIHsKCQl2YXIgcm93U3RydWN0cyA9IFtdOwoJCXZhciBzZWdSb3dzOwoJCXZhciByb3c7CgoJCXNlZ1Jvd3MgPSB0aGlzLmdyb3VwU2VnUm93cyhzZWdzKTsgLy8gZ3JvdXAgaW50byBuZXN0ZWQgYXJyYXlzCgoJCS8vIGl0ZXJhdGUgZWFjaCByb3cgb2Ygc2VnbWVudCBncm91cGluZ3MKCQlmb3IgKHJvdyA9IDA7IHJvdyA8IHNlZ1Jvd3MubGVuZ3RoOyByb3crKykgewoJCQlyb3dTdHJ1Y3RzLnB1c2goCgkJCQl0aGlzLnJlbmRlclNlZ1Jvdyhyb3csIHNlZ1Jvd3Nbcm93XSkKCQkJKTsKCQl9CgoJCXJldHVybiByb3dTdHJ1Y3RzOwoJfSwKCgoJLy8gQnVpbGRzIHRoZSBIVE1MIHRvIGJlIHVzZWQgZm9yIHRoZSBkZWZhdWx0IGVsZW1lbnQgZm9yIGFuIGluZGl2aWR1YWwgc2VnbWVudAoJZmdTZWdIdG1sOiBmdW5jdGlvbihzZWcsIGRpc2FibGVSZXNpemluZykgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBldmVudCA9IHNlZy5ldmVudDsKCQl2YXIgaXNEcmFnZ2FibGUgPSB2aWV3LmlzRXZlbnREcmFnZ2FibGUoZXZlbnQpOwoJCXZhciBpc1Jlc2l6YWJsZUZyb21TdGFydCA9ICFkaXNhYmxlUmVzaXppbmcgJiYgZXZlbnQuYWxsRGF5ICYmCgkJCXNlZy5pc1N0YXJ0ICYmIHZpZXcuaXNFdmVudFJlc2l6YWJsZUZyb21TdGFydChldmVudCk7CgkJdmFyIGlzUmVzaXphYmxlRnJvbUVuZCA9ICFkaXNhYmxlUmVzaXppbmcgJiYgZXZlbnQuYWxsRGF5ICYmCgkJCXNlZy5pc0VuZCAmJiB2aWV3LmlzRXZlbnRSZXNpemFibGVGcm9tRW5kKGV2ZW50KTsKCQl2YXIgY2xhc3NlcyA9IHRoaXMuZ2V0U2VnQ2xhc3NlcyhzZWcsIGlzRHJhZ2dhYmxlLCBpc1Jlc2l6YWJsZUZyb21TdGFydCB8fCBpc1Jlc2l6YWJsZUZyb21FbmQpOwoJCXZhciBza2luQ3NzID0gY3NzVG9TdHIodGhpcy5nZXRFdmVudFNraW5Dc3MoZXZlbnQpKTsKCQl2YXIgdGltZUh0bWwgPSAnJzsKCQl2YXIgdGltZVRleHQ7CgkJdmFyIHRpdGxlSHRtbDsKCgkJY2xhc3Nlcy51bnNoaWZ0KCdmYy1kYXktZ3JpZC1ldmVudCcsICdmYy1oLWV2ZW50Jyk7CgoJCS8vIE9ubHkgZGlzcGxheSBhIHRpbWVkIGV2ZW50cyB0aW1lIGlmIGl0IGlzIHRoZSBzdGFydGluZyBzZWdtZW50CgkJaWYgKHNlZy5pc1N0YXJ0KSB7CgkJCXRpbWVUZXh0ID0gdGhpcy5nZXRFdmVudFRpbWVUZXh0KGV2ZW50KTsKCQkJaWYgKHRpbWVUZXh0KSB7CgkJCQl0aW1lSHRtbCA9ICc8c3BhbiBjbGFzcz0iZmMtdGltZSI+JyArIGh0bWxFc2NhcGUodGltZVRleHQpICsgJzwvc3Bhbj4nOwoJCQl9CgkJfQoKCQl0aXRsZUh0bWwgPQoJCQknPHNwYW4gY2xhc3M9ImZjLXRpdGxlIj4nICsKCQkJCShodG1sRXNjYXBlKGV2ZW50LnRpdGxlIHx8ICcnKSB8fCAnJm5ic3A7JykgKyAvLyB3ZSBhbHdheXMgd2FudCBvbmUgbGluZSBvZiBoZWlnaHQKCQkJJzwvc3Bhbj4nOwoJCQoJCXJldHVybiAnPGEgY2xhc3M9IicgKyBjbGFzc2VzLmpvaW4oJyAnKSArICciJyArCgkJCQkoZXZlbnQudXJsID8KCQkJCQknIGhyZWY9IicgKyBodG1sRXNjYXBlKGV2ZW50LnVybCkgKyAnIicgOgoJCQkJCScnCgkJCQkJKSArCgkJCQkoc2tpbkNzcyA/CgkJCQkJJyBzdHlsZT0iJyArIHNraW5Dc3MgKyAnIicgOgoJCQkJCScnCgkJCQkJKSArCgkJCSc+JyArCgkJCQknPGRpdiBjbGFzcz0iZmMtY29udGVudCI+JyArCgkJCQkJKHRoaXMuaXNSVEwgPwoJCQkJCQl0aXRsZUh0bWwgKyAnICcgKyB0aW1lSHRtbCA6IC8vIHB1dCBhIG5hdHVyYWwgc3BhY2UgaW4gYmV0d2VlbgoJCQkJCQl0aW1lSHRtbCArICcgJyArIHRpdGxlSHRtbCAgIC8vCgkJCQkJCSkgKwoJCQkJJzwvZGl2PicgKwoJCQkJKGlzUmVzaXphYmxlRnJvbVN0YXJ0ID8KCQkJCQknPGRpdiBjbGFzcz0iZmMtcmVzaXplciBmYy1zdGFydC1yZXNpemVyIiAvPicgOgoJCQkJCScnCgkJCQkJKSArCgkJCQkoaXNSZXNpemFibGVGcm9tRW5kID8KCQkJCQknPGRpdiBjbGFzcz0iZmMtcmVzaXplciBmYy1lbmQtcmVzaXplciIgLz4nIDoKCQkJCQknJwoJCQkJCSkgKwoJCQknPC9hPic7Cgl9LAoKCgkvLyBHaXZlbiBhIHJvdyAjIGFuZCBhbiBhcnJheSBvZiBzZWdtZW50cyBhbGwgaW4gdGhlIHNhbWUgcm93LCByZW5kZXIgYSA8dGJvZHk+IGVsZW1lbnQsIGEgc2tlbGV0b24gdGhhdCBjb250YWlucwoJLy8gdGhlIHNlZ21lbnRzLiBSZXR1cm5zIG9iamVjdCB3aXRoIGEgYnVuY2ggb2YgaW50ZXJuYWwgZGF0YSBhYm91dCBob3cgdGhlIHJlbmRlciB3YXMgY2FsY3VsYXRlZC4KCS8vIE5PVEU6IG1vZGlmaWVzIHJvd1NlZ3MKCXJlbmRlclNlZ1JvdzogZnVuY3Rpb24ocm93LCByb3dTZWdzKSB7CgkJdmFyIGNvbENudCA9IHRoaXMuY29sQ250OwoJCXZhciBzZWdMZXZlbHMgPSB0aGlzLmJ1aWxkU2VnTGV2ZWxzKHJvd1NlZ3MpOyAvLyBncm91cCBpbnRvIHN1Yi1hcnJheXMgb2YgbGV2ZWxzCgkJdmFyIGxldmVsQ250ID0gTWF0aC5tYXgoMSwgc2VnTGV2ZWxzLmxlbmd0aCk7IC8vIGVuc3VyZSBhdCBsZWFzdCBvbmUgbGV2ZWwKCQl2YXIgdGJvZHkgPSAkKCc8dGJvZHkvPicpOwoJCXZhciBzZWdNYXRyaXggPSBbXTsgLy8gbG9va3VwIGZvciB3aGljaCBzZWdtZW50cyBhcmUgcmVuZGVyZWQgaW50byB3aGljaCBsZXZlbCtjb2wgY2VsbHMKCQl2YXIgY2VsbE1hdHJpeCA9IFtdOyAvLyBsb29rdXAgZm9yIGFsbCA8dGQ+IGVsZW1lbnRzIG9mIHRoZSBsZXZlbCtjb2wgbWF0cml4CgkJdmFyIGxvbmVDZWxsTWF0cml4ID0gW107IC8vIGxvb2t1cCBmb3IgPHRkPiBlbGVtZW50cyB0aGF0IG9ubHkgdGFrZSB1cCBhIHNpbmdsZSBjb2x1bW4KCQl2YXIgaSwgbGV2ZWxTZWdzOwoJCXZhciBjb2w7CgkJdmFyIHRyOwoJCXZhciBqLCBzZWc7CgkJdmFyIHRkOwoKCQkvLyBwb3B1bGF0ZXMgZW1wdHkgY2VsbHMgZnJvbSB0aGUgY3VycmVudCBjb2x1bW4gKGBjb2xgKSB0byBgZW5kQ29sYAoJCWZ1bmN0aW9uIGVtcHR5Q2VsbHNVbnRpbChlbmRDb2wpIHsKCQkJd2hpbGUgKGNvbCA8IGVuZENvbCkgewoJCQkJLy8gdHJ5IHRvIGdyYWIgYSBjZWxsIGZyb20gdGhlIGxldmVsIGFib3ZlIGFuZCBleHRlbmQgaXRzIHJvd3NwYW4uIG90aGVyd2lzZSwgY3JlYXRlIGEgZnJlc2ggY2VsbAoJCQkJdGQgPSAobG9uZUNlbGxNYXRyaXhbaSAtIDFdIHx8IFtdKVtjb2xdOwoJCQkJaWYgKHRkKSB7CgkJCQkJdGQuYXR0cigKCQkJCQkJJ3Jvd3NwYW4nLAoJCQkJCQlwYXJzZUludCh0ZC5hdHRyKCdyb3dzcGFuJykgfHwgMSwgMTApICsgMQoJCQkJCSk7CgkJCQl9CgkJCQllbHNlIHsKCQkJCQl0ZCA9ICQoJzx0ZC8+Jyk7CgkJCQkJdHIuYXBwZW5kKHRkKTsKCQkJCX0KCQkJCWNlbGxNYXRyaXhbaV1bY29sXSA9IHRkOwoJCQkJbG9uZUNlbGxNYXRyaXhbaV1bY29sXSA9IHRkOwoJCQkJY29sKys7CgkJCX0KCQl9CgoJCWZvciAoaSA9IDA7IGkgPCBsZXZlbENudDsgaSsrKSB7IC8vIGl0ZXJhdGUgdGhyb3VnaCBhbGwgbGV2ZWxzCgkJCWxldmVsU2VncyA9IHNlZ0xldmVsc1tpXTsKCQkJY29sID0gMDsKCQkJdHIgPSAkKCc8dHIvPicpOwoKCQkJc2VnTWF0cml4LnB1c2goW10pOwoJCQljZWxsTWF0cml4LnB1c2goW10pOwoJCQlsb25lQ2VsbE1hdHJpeC5wdXNoKFtdKTsKCgkJCS8vIGxldmVsQ250IG1pZ2h0IGJlIDEgZXZlbiB0aG91Z2ggdGhlcmUgYXJlIG5vIGFjdHVhbCBsZXZlbHMuIHByb3RlY3QgYWdhaW5zdCB0aGlzLgoJCQkvLyB0aGlzIHNpbmdsZSBlbXB0eSByb3cgaXMgdXNlZnVsIGZvciBzdHlsaW5nLgoJCQlpZiAobGV2ZWxTZWdzKSB7CgkJCQlmb3IgKGogPSAwOyBqIDwgbGV2ZWxTZWdzLmxlbmd0aDsgaisrKSB7IC8vIGl0ZXJhdGUgdGhyb3VnaCBzZWdtZW50cyBpbiBsZXZlbAoJCQkJCXNlZyA9IGxldmVsU2Vnc1tqXTsKCgkJCQkJZW1wdHlDZWxsc1VudGlsKHNlZy5sZWZ0Q29sKTsKCgkJCQkJLy8gY3JlYXRlIGEgY29udGFpbmVyIHRoYXQgb2NjdXBpZXMgb3IgbW9yZSBjb2x1bW5zLiBhcHBlbmQgdGhlIGV2ZW50IGVsZW1lbnQuCgkJCQkJdGQgPSAkKCc8dGQgY2xhc3M9ImZjLWV2ZW50LWNvbnRhaW5lciIvPicpLmFwcGVuZChzZWcuZWwpOwoJCQkJCWlmIChzZWcubGVmdENvbCAhPSBzZWcucmlnaHRDb2wpIHsKCQkJCQkJdGQuYXR0cignY29sc3BhbicsIHNlZy5yaWdodENvbCAtIHNlZy5sZWZ0Q29sICsgMSk7CgkJCQkJfQoJCQkJCWVsc2UgeyAvLyBhIHNpbmdsZS1jb2x1bW4gc2VnbWVudAoJCQkJCQlsb25lQ2VsbE1hdHJpeFtpXVtjb2xdID0gdGQ7CgkJCQkJfQoKCQkJCQl3aGlsZSAoY29sIDw9IHNlZy5yaWdodENvbCkgewoJCQkJCQljZWxsTWF0cml4W2ldW2NvbF0gPSB0ZDsKCQkJCQkJc2VnTWF0cml4W2ldW2NvbF0gPSBzZWc7CgkJCQkJCWNvbCsrOwoJCQkJCX0KCgkJCQkJdHIuYXBwZW5kKHRkKTsKCQkJCX0KCQkJfQoKCQkJZW1wdHlDZWxsc1VudGlsKGNvbENudCk7IC8vIGZpbmlzaCBvZmYgdGhlIHJvdwoJCQl0aGlzLmJvb2tlbmRDZWxscyh0ciwgJ2V2ZW50U2tlbGV0b24nKTsKCQkJdGJvZHkuYXBwZW5kKHRyKTsKCQl9CgoJCXJldHVybiB7IC8vIGEgInJvd1N0cnVjdCIKCQkJcm93OiByb3csIC8vIHRoZSByb3cgbnVtYmVyCgkJCXRib2R5RWw6IHRib2R5LAoJCQljZWxsTWF0cml4OiBjZWxsTWF0cml4LAoJCQlzZWdNYXRyaXg6IHNlZ01hdHJpeCwKCQkJc2VnTGV2ZWxzOiBzZWdMZXZlbHMsCgkJCXNlZ3M6IHJvd1NlZ3MKCQl9OwoJfSwKCgoJLy8gU3RhY2tzIGEgZmxhdCBhcnJheSBvZiBzZWdtZW50cywgd2hpY2ggYXJlIGFsbCBhc3N1bWVkIHRvIGJlIGluIHRoZSBzYW1lIHJvdywgaW50byBzdWJhcnJheXMgb2YgdmVydGljYWwgbGV2ZWxzLgoJLy8gTk9URTogbW9kaWZpZXMgc2VncwoJYnVpbGRTZWdMZXZlbHM6IGZ1bmN0aW9uKHNlZ3MpIHsKCQl2YXIgbGV2ZWxzID0gW107CgkJdmFyIGksIHNlZzsKCQl2YXIgajsKCgkJLy8gR2l2ZSBwcmVmZXJlbmNlIHRvIGVsZW1lbnRzIHdpdGggY2VydGFpbiBjcml0ZXJpYSwgc28gdGhleSBoYXZlCgkJLy8gYSBjaGFuY2UgdG8gYmUgY2xvc2VyIHRvIHRoZSB0b3AuCgkJc2Vncy5zb3J0KGNvbXBhcmVTZWdzKTsKCQkKCQlmb3IgKGkgPSAwOyBpIDwgc2Vncy5sZW5ndGg7IGkrKykgewoJCQlzZWcgPSBzZWdzW2ldOwoKCQkJLy8gbG9vcCB0aHJvdWdoIGxldmVscywgc3RhcnRpbmcgd2l0aCB0aGUgdG9wbW9zdCwgdW50aWwgdGhlIHNlZ21lbnQgZG9lc24ndCBjb2xsaWRlIHdpdGggb3RoZXIgc2VnbWVudHMKCQkJZm9yIChqID0gMDsgaiA8IGxldmVscy5sZW5ndGg7IGorKykgewoJCQkJaWYgKCFpc0RheVNlZ0NvbGxpc2lvbihzZWcsIGxldmVsc1tqXSkpIHsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoJCQkvLyBgamAgbm93IGhvbGRzIHRoZSBkZXNpcmVkIHN1YnJvdyBpbmRleAoJCQlzZWcubGV2ZWwgPSBqOwoKCQkJLy8gY3JlYXRlIG5ldyBsZXZlbCBhcnJheSBpZiBuZWVkZWQgYW5kIGFwcGVuZCBzZWdtZW50CgkJCShsZXZlbHNbal0gfHwgKGxldmVsc1tqXSA9IFtdKSkucHVzaChzZWcpOwoJCX0KCgkJLy8gb3JkZXIgc2VnbWVudHMgbGVmdC10by1yaWdodC4gdmVyeSBpbXBvcnRhbnQgaWYgY2FsZW5kYXIgaXMgUlRMCgkJZm9yIChqID0gMDsgaiA8IGxldmVscy5sZW5ndGg7IGorKykgewoJCQlsZXZlbHNbal0uc29ydChjb21wYXJlRGF5U2VnQ29scyk7CgkJfQoKCQlyZXR1cm4gbGV2ZWxzOwoJfSwKCgoJLy8gR2l2ZW4gYSBmbGF0IGFycmF5IG9mIHNlZ21lbnRzLCByZXR1cm4gYW4gYXJyYXkgb2Ygc3ViLWFycmF5cywgZ3JvdXBlZCBieSBlYWNoIHNlZ21lbnQncyByb3cKCWdyb3VwU2VnUm93czogZnVuY3Rpb24oc2VncykgewoJCXZhciBzZWdSb3dzID0gW107CgkJdmFyIGk7CgoJCWZvciAoaSA9IDA7IGkgPCB0aGlzLnJvd0NudDsgaSsrKSB7CgkJCXNlZ1Jvd3MucHVzaChbXSk7CgkJfQoKCQlmb3IgKGkgPSAwOyBpIDwgc2Vncy5sZW5ndGg7IGkrKykgewoJCQlzZWdSb3dzW3NlZ3NbaV0ucm93XS5wdXNoKHNlZ3NbaV0pOwoJCX0KCgkJcmV0dXJuIHNlZ1Jvd3M7Cgl9Cgp9KTsKCgovLyBDb21wdXRlcyB3aGV0aGVyIHR3byBzZWdtZW50cycgY29sdW1ucyBjb2xsaWRlLiBUaGV5IGFyZSBhc3N1bWVkIHRvIGJlIGluIHRoZSBzYW1lIHJvdy4KZnVuY3Rpb24gaXNEYXlTZWdDb2xsaXNpb24oc2VnLCBvdGhlclNlZ3MpIHsKCXZhciBpLCBvdGhlclNlZzsKCglmb3IgKGkgPSAwOyBpIDwgb3RoZXJTZWdzLmxlbmd0aDsgaSsrKSB7CgkJb3RoZXJTZWcgPSBvdGhlclNlZ3NbaV07CgoJCWlmICgKCQkJb3RoZXJTZWcubGVmdENvbCA8PSBzZWcucmlnaHRDb2wgJiYKCQkJb3RoZXJTZWcucmlnaHRDb2wgPj0gc2VnLmxlZnRDb2wKCQkpIHsKCQkJcmV0dXJuIHRydWU7CgkJfQoJfQoKCXJldHVybiBmYWxzZTsKfQoKCi8vIEEgY21wIGZ1bmN0aW9uIGZvciBkZXRlcm1pbmluZyB0aGUgbGVmdG1vc3QgZXZlbnQKZnVuY3Rpb24gY29tcGFyZURheVNlZ0NvbHMoYSwgYikgewoJcmV0dXJuIGEubGVmdENvbCAtIGIubGVmdENvbDsKfQoKOzsKCi8qIE1ldGhvZHMgcmVsYXRlIHRvIGxpbWl0aW5nIHRoZSBudW1iZXIgZXZlbnRzIGZvciBhIGdpdmVuIGRheSBvbiBhIERheUdyaWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8vIE5PVEU6IGFsbCB0aGUgc2VncyBiZWluZyBwYXNzZWQgYXJvdW5kIGluIGhlcmUgYXJlIGZvcmVncm91bmQgc2VncwoKRGF5R3JpZC5taXhpbih7CgoJc2VnUG9wb3ZlcjogbnVsbCwgLy8gdGhlIFBvcG92ZXIgdGhhdCBob2xkcyBldmVudHMgdGhhdCBjYW4ndCBmaXQgaW4gYSBjZWxsLiBudWxsIHdoZW4gbm90IHZpc2libGUKCXBvcG92ZXJTZWdzOiBudWxsLCAvLyBhbiBhcnJheSBvZiBzZWdtZW50IG9iamVjdHMgdGhhdCB0aGUgc2VnUG9wb3ZlciBob2xkcy4gbnVsbCB3aGVuIG5vdCB2aXNpYmxlCgoKCXJlbW92ZVNlZ1BvcG92ZXI6IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLnNlZ1BvcG92ZXIpIHsKCQkJdGhpcy5zZWdQb3BvdmVyLmhpZGUoKTsgLy8gaW4gaGFuZGxlciwgd2lsbCBjYWxsIHNlZ1BvcG92ZXIncyByZW1vdmVFbGVtZW50CgkJfQoJfSwKCgoJLy8gTGltaXRzIHRoZSBudW1iZXIgb2YgImxldmVscyIgKHZlcnRpY2FsbHkgc3RhY2tpbmcgbGF5ZXJzIG9mIGV2ZW50cykgZm9yIGVhY2ggcm93IG9mIHRoZSBncmlkLgoJLy8gYGxldmVsTGltaXRgIGNhbiBiZSBmYWxzZSAoZG9uJ3QgbGltaXQpLCBhIG51bWJlciwgb3IgdHJ1ZSAoc2hvdWxkIGJlIGNvbXB1dGVkKS4KCWxpbWl0Um93czogZnVuY3Rpb24obGV2ZWxMaW1pdCkgewoJCXZhciByb3dTdHJ1Y3RzID0gdGhpcy5yb3dTdHJ1Y3RzIHx8IFtdOwoJCXZhciByb3c7IC8vIHJvdyAjCgkJdmFyIHJvd0xldmVsTGltaXQ7CgoJCWZvciAocm93ID0gMDsgcm93IDwgcm93U3RydWN0cy5sZW5ndGg7IHJvdysrKSB7CgkJCXRoaXMudW5saW1pdFJvdyhyb3cpOwoKCQkJaWYgKCFsZXZlbExpbWl0KSB7CgkJCQlyb3dMZXZlbExpbWl0ID0gZmFsc2U7CgkJCX0KCQkJZWxzZSBpZiAodHlwZW9mIGxldmVsTGltaXQgPT09ICdudW1iZXInKSB7CgkJCQlyb3dMZXZlbExpbWl0ID0gbGV2ZWxMaW1pdDsKCQkJfQoJCQllbHNlIHsKCQkJCXJvd0xldmVsTGltaXQgPSB0aGlzLmNvbXB1dGVSb3dMZXZlbExpbWl0KHJvdyk7CgkJCX0KCgkJCWlmIChyb3dMZXZlbExpbWl0ICE9PSBmYWxzZSkgewoJCQkJdGhpcy5saW1pdFJvdyhyb3csIHJvd0xldmVsTGltaXQpOwoJCQl9CgkJfQoJfSwKCgoJLy8gQ29tcHV0ZXMgdGhlIG51bWJlciBvZiBsZXZlbHMgYSByb3cgd2lsbCBhY2NvbW9kYXRlIHdpdGhvdXQgZ29pbmcgb3V0c2lkZSBpdHMgYm91bmRzLgoJLy8gQXNzdW1lcyB0aGUgcm93IGlzICJyaWdpZCIgKG1haW50YWlucyBhIGNvbnN0YW50IGhlaWdodCByZWdhcmRsZXNzIG9mIHdoYXQgaXMgaW5zaWRlKS4KCS8vIGByb3dgIGlzIHRoZSByb3cgbnVtYmVyLgoJY29tcHV0ZVJvd0xldmVsTGltaXQ6IGZ1bmN0aW9uKHJvdykgewoJCXZhciByb3dFbCA9IHRoaXMucm93RWxzLmVxKHJvdyk7IC8vIHRoZSBjb250YWluaW5nICJmYWtlIiByb3cgZGl2CgkJdmFyIHJvd0hlaWdodCA9IHJvd0VsLmhlaWdodCgpOyAvLyBUT0RPOiBjYWNoZSBzb21laG93PwoJCXZhciB0ckVscyA9IHRoaXMucm93U3RydWN0c1tyb3ddLnRib2R5RWwuY2hpbGRyZW4oKTsKCQl2YXIgaSwgdHJFbDsKCQl2YXIgdHJIZWlnaHQ7CgoJCWZ1bmN0aW9uIGl0ZXJJbm5lckhlaWdodHMoaSwgY2hpbGROb2RlKSB7CgkJCXRySGVpZ2h0ID0gTWF0aC5tYXgodHJIZWlnaHQsICQoY2hpbGROb2RlKS5vdXRlckhlaWdodCgpKTsKCQl9CgoJCS8vIFJldmVhbCBvbmUgbGV2ZWwgPHRyPiBhdCBhIHRpbWUgYW5kIHN0b3Agd2hlbiB3ZSBmaW5kIG9uZSBvdXQgb2YgYm91bmRzCgkJZm9yIChpID0gMDsgaSA8IHRyRWxzLmxlbmd0aDsgaSsrKSB7CgkJCXRyRWwgPSB0ckVscy5lcShpKS5yZW1vdmVDbGFzcygnZmMtbGltaXRlZCcpOyAvLyByZXNldCB0byBvcmlnaW5hbCBzdGF0ZSAocmV2ZWFsKQoKCQkJLy8gd2l0aCByb3dzcGFucz4xIGFuZCBJRTgsIHRyRWwub3V0ZXJIZWlnaHQoKSB3b3VsZCByZXR1cm4gdGhlIGhlaWdodCBvZiB0aGUgbGFyZ2VzdCBjZWxsLAoJCQkvLyBzbyBpbnN0ZWFkLCBmaW5kIHRoZSB0YWxsZXN0IGlubmVyIGNvbnRlbnQgZWxlbWVudC4KCQkJdHJIZWlnaHQgPSAwOwoJCQl0ckVsLmZpbmQoJz4gdGQgPiA6Zmlyc3QtY2hpbGQnKS5lYWNoKGl0ZXJJbm5lckhlaWdodHMpOwoKCQkJaWYgKHRyRWwucG9zaXRpb24oKS50b3AgKyB0ckhlaWdodCA+IHJvd0hlaWdodCkgewoJCQkJcmV0dXJuIGk7CgkJCX0KCQl9CgoJCXJldHVybiBmYWxzZTsgLy8gc2hvdWxkIG5vdCBsaW1pdCBhdCBhbGwKCX0sCgoKCS8vIExpbWl0cyB0aGUgZ2l2ZW4gZ3JpZCByb3cgdG8gdGhlIG1heGltdW0gbnVtYmVyIG9mIGxldmVscyBhbmQgaW5qZWN0cyAibW9yZSIgbGlua3MgaWYgbmVjZXNzYXJ5LgoJLy8gYHJvd2AgaXMgdGhlIHJvdyBudW1iZXIuCgkvLyBgbGV2ZWxMaW1pdGAgaXMgYSBudW1iZXIgZm9yIHRoZSBtYXhpbXVtIChpbmNsdXNpdmUpIG51bWJlciBvZiBsZXZlbHMgYWxsb3dlZC4KCWxpbWl0Um93OiBmdW5jdGlvbihyb3csIGxldmVsTGltaXQpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoJCXZhciByb3dTdHJ1Y3QgPSB0aGlzLnJvd1N0cnVjdHNbcm93XTsKCQl2YXIgbW9yZU5vZGVzID0gW107IC8vIGFycmF5IG9mICJtb3JlIiA8YT4gbGlua3MgYW5kIDx0ZD4gRE9NIG5vZGVzCgkJdmFyIGNvbCA9IDA7IC8vIGNvbCAjLCBsZWZ0LXRvLXJpZ2h0IChub3QgY2hyb25vbG9naWNhbGx5KQoJCXZhciBjZWxsOwoJCXZhciBsZXZlbFNlZ3M7IC8vIGFycmF5IG9mIHNlZ21lbnQgb2JqZWN0cyBpbiB0aGUgbGFzdCBhbGxvd2FibGUgbGV2ZWwsIG9yZGVyZWQgbGVmdC10by1yaWdodAoJCXZhciBjZWxsTWF0cml4OyAvLyBhIG1hdHJpeCAoYnkgbGV2ZWwsIHRoZW4gY29sdW1uKSBvZiBhbGwgPHRkPiBqUXVlcnkgZWxlbWVudHMgaW4gdGhlIHJvdwoJCXZhciBsaW1pdGVkTm9kZXM7IC8vIGFycmF5IG9mIHRlbXBvcmFyaWx5IGhpZGRlbiBsZXZlbCA8dHI+IGFuZCBzZWdtZW50IDx0ZD4gRE9NIG5vZGVzCgkJdmFyIGksIHNlZzsKCQl2YXIgc2Vnc0JlbG93OyAvLyBhcnJheSBvZiBzZWdtZW50IG9iamVjdHMgYmVsb3cgYHNlZ2AgaW4gdGhlIGN1cnJlbnQgYGNvbGAKCQl2YXIgdG90YWxTZWdzQmVsb3c7IC8vIHRvdGFsIG51bWJlciBvZiBzZWdtZW50cyBiZWxvdyBgc2VnYCBpbiBhbnkgb2YgdGhlIGNvbHVtbnMgYHNlZ2Agb2NjdXBpZXMKCQl2YXIgY29sU2Vnc0JlbG93OyAvLyBhcnJheSBvZiBzZWdtZW50IGFycmF5cywgYmVsb3cgc2VnLCBvbmUgZm9yIGVhY2ggY29sdW1uIChvZmZzZXQgZnJvbSBzZWdzJ3MgZmlyc3QgY29sdW1uKQoJCXZhciB0ZCwgcm93c3BhbjsKCQl2YXIgc2VnTW9yZU5vZGVzOyAvLyBhcnJheSBvZiAibW9yZSIgPHRkPiBjZWxscyB0aGF0IHdpbGwgc3RhbmQtaW4gZm9yIHRoZSBjdXJyZW50IHNlZydzIGNlbGwKCQl2YXIgajsKCQl2YXIgbW9yZVRkLCBtb3JlV3JhcCwgbW9yZUxpbms7CgoJCS8vIEl0ZXJhdGVzIHRocm91Z2ggZW1wdHkgbGV2ZWwgY2VsbHMgYW5kIHBsYWNlcyAibW9yZSIgbGlua3MgaW5zaWRlIGlmIG5lZWQgYmUKCQlmdW5jdGlvbiBlbXB0eUNlbGxzVW50aWwoZW5kQ29sKSB7IC8vIGdvZXMgZnJvbSBjdXJyZW50IGBjb2xgIHRvIGBlbmRDb2xgCgkJCXdoaWxlIChjb2wgPCBlbmRDb2wpIHsKCQkJCWNlbGwgPSBfdGhpcy5nZXRDZWxsKHJvdywgY29sKTsKCQkJCXNlZ3NCZWxvdyA9IF90aGlzLmdldENlbGxTZWdzKGNlbGwsIGxldmVsTGltaXQpOwoJCQkJaWYgKHNlZ3NCZWxvdy5sZW5ndGgpIHsKCQkJCQl0ZCA9IGNlbGxNYXRyaXhbbGV2ZWxMaW1pdCAtIDFdW2NvbF07CgkJCQkJbW9yZUxpbmsgPSBfdGhpcy5yZW5kZXJNb3JlTGluayhjZWxsLCBzZWdzQmVsb3cpOwoJCQkJCW1vcmVXcmFwID0gJCgnPGRpdi8+JykuYXBwZW5kKG1vcmVMaW5rKTsKCQkJCQl0ZC5hcHBlbmQobW9yZVdyYXApOwoJCQkJCW1vcmVOb2Rlcy5wdXNoKG1vcmVXcmFwWzBdKTsKCQkJCX0KCQkJCWNvbCsrOwoJCQl9CgkJfQoKCQlpZiAobGV2ZWxMaW1pdCAmJiBsZXZlbExpbWl0IDwgcm93U3RydWN0LnNlZ0xldmVscy5sZW5ndGgpIHsgLy8gaXMgaXQgYWN0dWFsbHkgb3ZlciB0aGUgbGltaXQ/CgkJCWxldmVsU2VncyA9IHJvd1N0cnVjdC5zZWdMZXZlbHNbbGV2ZWxMaW1pdCAtIDFdOwoJCQljZWxsTWF0cml4ID0gcm93U3RydWN0LmNlbGxNYXRyaXg7CgoJCQlsaW1pdGVkTm9kZXMgPSByb3dTdHJ1Y3QudGJvZHlFbC5jaGlsZHJlbigpLnNsaWNlKGxldmVsTGltaXQpIC8vIGdldCBsZXZlbCA8dHI+IGVsZW1lbnRzIHBhc3QgdGhlIGxpbWl0CgkJCQkuYWRkQ2xhc3MoJ2ZjLWxpbWl0ZWQnKS5nZXQoKTsgLy8gaGlkZSBlbGVtZW50cyBhbmQgZ2V0IGEgc2ltcGxlIERPTS1ub2RlcyBhcnJheQoKCQkJLy8gaXRlcmF0ZSB0aG91Z2ggc2VnbWVudHMgaW4gdGhlIGxhc3QgYWxsb3dhYmxlIGxldmVsCgkJCWZvciAoaSA9IDA7IGkgPCBsZXZlbFNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJCXNlZyA9IGxldmVsU2Vnc1tpXTsKCQkJCWVtcHR5Q2VsbHNVbnRpbChzZWcubGVmdENvbCk7IC8vIHByb2Nlc3MgZW1wdHkgY2VsbHMgYmVmb3JlIHRoZSBzZWdtZW50CgoJCQkJLy8gZGV0ZXJtaW5lICphbGwqIHNlZ21lbnRzIGJlbG93IGBzZWdgIHRoYXQgb2NjdXB5IHRoZSBzYW1lIGNvbHVtbnMKCQkJCWNvbFNlZ3NCZWxvdyA9IFtdOwoJCQkJdG90YWxTZWdzQmVsb3cgPSAwOwoJCQkJd2hpbGUgKGNvbCA8PSBzZWcucmlnaHRDb2wpIHsKCQkJCQljZWxsID0gdGhpcy5nZXRDZWxsKHJvdywgY29sKTsKCQkJCQlzZWdzQmVsb3cgPSB0aGlzLmdldENlbGxTZWdzKGNlbGwsIGxldmVsTGltaXQpOwoJCQkJCWNvbFNlZ3NCZWxvdy5wdXNoKHNlZ3NCZWxvdyk7CgkJCQkJdG90YWxTZWdzQmVsb3cgKz0gc2Vnc0JlbG93Lmxlbmd0aDsKCQkJCQljb2wrKzsKCQkJCX0KCgkJCQlpZiAodG90YWxTZWdzQmVsb3cpIHsgLy8gZG8gd2UgbmVlZCB0byByZXBsYWNlIHRoaXMgc2VnbWVudCB3aXRoIG9uZSBvciBtYW55ICJtb3JlIiBsaW5rcz8KCQkJCQl0ZCA9IGNlbGxNYXRyaXhbbGV2ZWxMaW1pdCAtIDFdW3NlZy5sZWZ0Q29sXTsgLy8gdGhlIHNlZ21lbnQncyBwYXJlbnQgY2VsbAoJCQkJCXJvd3NwYW4gPSB0ZC5hdHRyKCdyb3dzcGFuJykgfHwgMTsKCQkJCQlzZWdNb3JlTm9kZXMgPSBbXTsKCgkJCQkJLy8gbWFrZSBhIHJlcGxhY2VtZW50IDx0ZD4gZm9yIGVhY2ggY29sdW1uIHRoZSBzZWdtZW50IG9jY3VwaWVzLiB3aWxsIGJlIG9uZSBmb3IgZWFjaCBjb2xzcGFuCgkJCQkJZm9yIChqID0gMDsgaiA8IGNvbFNlZ3NCZWxvdy5sZW5ndGg7IGorKykgewoJCQkJCQltb3JlVGQgPSAkKCc8dGQgY2xhc3M9ImZjLW1vcmUtY2VsbCIvPicpLmF0dHIoJ3Jvd3NwYW4nLCByb3dzcGFuKTsKCQkJCQkJc2Vnc0JlbG93ID0gY29sU2Vnc0JlbG93W2pdOwoJCQkJCQljZWxsID0gdGhpcy5nZXRDZWxsKHJvdywgc2VnLmxlZnRDb2wgKyBqKTsKCQkJCQkJbW9yZUxpbmsgPSB0aGlzLnJlbmRlck1vcmVMaW5rKGNlbGwsIFsgc2VnIF0uY29uY2F0KHNlZ3NCZWxvdykpOyAvLyBjb3VudCBzZWcgYXMgaGlkZGVuIHRvbwoJCQkJCQltb3JlV3JhcCA9ICQoJzxkaXYvPicpLmFwcGVuZChtb3JlTGluayk7CgkJCQkJCW1vcmVUZC5hcHBlbmQobW9yZVdyYXApOwoJCQkJCQlzZWdNb3JlTm9kZXMucHVzaChtb3JlVGRbMF0pOwoJCQkJCQltb3JlTm9kZXMucHVzaChtb3JlVGRbMF0pOwoJCQkJCX0KCgkJCQkJdGQuYWRkQ2xhc3MoJ2ZjLWxpbWl0ZWQnKS5hZnRlcigkKHNlZ01vcmVOb2RlcykpOyAvLyBoaWRlIG9yaWdpbmFsIDx0ZD4gYW5kIGluamVjdCByZXBsYWNlbWVudHMKCQkJCQlsaW1pdGVkTm9kZXMucHVzaCh0ZFswXSk7CgkJCQl9CgkJCX0KCgkJCWVtcHR5Q2VsbHNVbnRpbCh0aGlzLmNvbENudCk7IC8vIGZpbmlzaCBvZmYgdGhlIGxldmVsCgkJCXJvd1N0cnVjdC5tb3JlRWxzID0gJChtb3JlTm9kZXMpOyAvLyBmb3IgZWFzeSB1bmRvaW5nIGxhdGVyCgkJCXJvd1N0cnVjdC5saW1pdGVkRWxzID0gJChsaW1pdGVkTm9kZXMpOyAvLyBmb3IgZWFzeSB1bmRvaW5nIGxhdGVyCgkJfQoJfSwKCgoJLy8gUmV2ZWFscyBhbGwgbGV2ZWxzIGFuZCByZW1vdmVzIGFsbCAibW9yZSItcmVsYXRlZCBlbGVtZW50cyBmb3IgYSBncmlkJ3Mgcm93LgoJLy8gYHJvd2AgaXMgYSByb3cgbnVtYmVyLgoJdW5saW1pdFJvdzogZnVuY3Rpb24ocm93KSB7CgkJdmFyIHJvd1N0cnVjdCA9IHRoaXMucm93U3RydWN0c1tyb3ddOwoKCQlpZiAocm93U3RydWN0Lm1vcmVFbHMpIHsKCQkJcm93U3RydWN0Lm1vcmVFbHMucmVtb3ZlKCk7CgkJCXJvd1N0cnVjdC5tb3JlRWxzID0gbnVsbDsKCQl9CgoJCWlmIChyb3dTdHJ1Y3QubGltaXRlZEVscykgewoJCQlyb3dTdHJ1Y3QubGltaXRlZEVscy5yZW1vdmVDbGFzcygnZmMtbGltaXRlZCcpOwoJCQlyb3dTdHJ1Y3QubGltaXRlZEVscyA9IG51bGw7CgkJfQoJfSwKCgoJLy8gUmVuZGVycyBhbiA8YT4gZWxlbWVudCB0aGF0IHJlcHJlc2VudHMgaGlkZGVuIGV2ZW50IGVsZW1lbnQgZm9yIGEgY2VsbC4KCS8vIFJlc3BvbnNpYmxlIGZvciBhdHRhY2hpbmcgY2xpY2sgaGFuZGxlciBhcyB3ZWxsLgoJcmVuZGVyTW9yZUxpbms6IGZ1bmN0aW9uKGNlbGwsIGhpZGRlblNlZ3MpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoKCQlyZXR1cm4gJCgnPGEgY2xhc3M9ImZjLW1vcmUiLz4nKQoJCQkudGV4dCgKCQkJCXRoaXMuZ2V0TW9yZUxpbmtUZXh0KGhpZGRlblNlZ3MubGVuZ3RoKQoJCQkpCgkJCS5vbignY2xpY2snLCBmdW5jdGlvbihldikgewoJCQkJdmFyIGNsaWNrT3B0aW9uID0gdmlldy5vcHQoJ2V2ZW50TGltaXRDbGljaycpOwoJCQkJdmFyIGRhdGUgPSBjZWxsLnN0YXJ0OwoJCQkJdmFyIG1vcmVFbCA9ICQodGhpcyk7CgkJCQl2YXIgZGF5RWwgPSBfdGhpcy5nZXRDZWxsRGF5RWwoY2VsbCk7CgkJCQl2YXIgYWxsU2VncyA9IF90aGlzLmdldENlbGxTZWdzKGNlbGwpOwoKCQkJCS8vIHJlc2NvcGUgdGhlIHNlZ21lbnRzIHRvIGJlIHdpdGhpbiB0aGUgY2VsbCdzIGRhdGUKCQkJCXZhciByZXNsaWNlZEFsbFNlZ3MgPSBfdGhpcy5yZXNsaWNlRGF5U2VncyhhbGxTZWdzLCBkYXRlKTsKCQkJCXZhciByZXNsaWNlZEhpZGRlblNlZ3MgPSBfdGhpcy5yZXNsaWNlRGF5U2VncyhoaWRkZW5TZWdzLCBkYXRlKTsKCgkJCQlpZiAodHlwZW9mIGNsaWNrT3B0aW9uID09PSAnZnVuY3Rpb24nKSB7CgkJCQkJLy8gdGhlIHJldHVybmVkIHZhbHVlIGNhbiBiZSBhbiBhdG9taWMgb3B0aW9uCgkJCQkJY2xpY2tPcHRpb24gPSB2aWV3LnRyaWdnZXIoJ2V2ZW50TGltaXRDbGljaycsIG51bGwsIHsKCQkJCQkJZGF0ZTogZGF0ZSwKCQkJCQkJZGF5RWw6IGRheUVsLAoJCQkJCQltb3JlRWw6IG1vcmVFbCwKCQkJCQkJc2VnczogcmVzbGljZWRBbGxTZWdzLAoJCQkJCQloaWRkZW5TZWdzOiByZXNsaWNlZEhpZGRlblNlZ3MKCQkJCQl9LCBldik7CgkJCQl9CgoJCQkJaWYgKGNsaWNrT3B0aW9uID09PSAncG9wb3ZlcicpIHsKCQkJCQlfdGhpcy5zaG93U2VnUG9wb3ZlcihjZWxsLCBtb3JlRWwsIHJlc2xpY2VkQWxsU2Vncyk7CgkJCQl9CgkJCQllbHNlIGlmICh0eXBlb2YgY2xpY2tPcHRpb24gPT09ICdzdHJpbmcnKSB7IC8vIGEgdmlldyBuYW1lCgkJCQkJdmlldy5jYWxlbmRhci56b29tVG8oZGF0ZSwgY2xpY2tPcHRpb24pOwoJCQkJfQoJCQl9KTsKCX0sCgoKCS8vIFJldmVhbHMgdGhlIHBvcG92ZXIgdGhhdCBkaXNwbGF5cyBhbGwgZXZlbnRzIHdpdGhpbiBhIGNlbGwKCXNob3dTZWdQb3BvdmVyOiBmdW5jdGlvbihjZWxsLCBtb3JlTGluaywgc2VncykgewoJCXZhciBfdGhpcyA9IHRoaXM7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIG1vcmVXcmFwID0gbW9yZUxpbmsucGFyZW50KCk7IC8vIHRoZSA8ZGl2PiB3cmFwcGVyIGFyb3VuZCB0aGUgPGE+CgkJdmFyIHRvcEVsOyAvLyB0aGUgZWxlbWVudCB3ZSB3YW50IHRvIG1hdGNoIHRoZSB0b3AgY29vcmRpbmF0ZSBvZgoJCXZhciBvcHRpb25zOwoKCQlpZiAodGhpcy5yb3dDbnQgPT0gMSkgewoJCQl0b3BFbCA9IHZpZXcuZWw7IC8vIHdpbGwgY2F1c2UgdGhlIHBvcG92ZXIgdG8gY292ZXIgYW55IHNvcnQgb2YgaGVhZGVyCgkJfQoJCWVsc2UgewoJCQl0b3BFbCA9IHRoaXMucm93RWxzLmVxKGNlbGwucm93KTsgLy8gd2lsbCBhbGlnbiB3aXRoIHRvcCBvZiByb3cKCQl9CgoJCW9wdGlvbnMgPSB7CgkJCWNsYXNzTmFtZTogJ2ZjLW1vcmUtcG9wb3ZlcicsCgkJCWNvbnRlbnQ6IHRoaXMucmVuZGVyU2VnUG9wb3ZlckNvbnRlbnQoY2VsbCwgc2VncyksCgkJCXBhcmVudEVsOiB0aGlzLmVsLAoJCQl0b3A6IHRvcEVsLm9mZnNldCgpLnRvcCwKCQkJYXV0b0hpZGU6IHRydWUsIC8vIHdoZW4gdGhlIHVzZXIgY2xpY2tzIGVsc2V3aGVyZSwgaGlkZSB0aGUgcG9wb3ZlcgoJCQl2aWV3cG9ydENvbnN0cmFpbjogdmlldy5vcHQoJ3BvcG92ZXJWaWV3cG9ydENvbnN0cmFpbicpLAoJCQloaWRlOiBmdW5jdGlvbigpIHsKCQkJCS8vIGtpbGwgZXZlcnl0aGluZyB3aGVuIHRoZSBwb3BvdmVyIGlzIGhpZGRlbgoJCQkJX3RoaXMuc2VnUG9wb3Zlci5yZW1vdmVFbGVtZW50KCk7CgkJCQlfdGhpcy5zZWdQb3BvdmVyID0gbnVsbDsKCQkJCV90aGlzLnBvcG92ZXJTZWdzID0gbnVsbDsKCQkJfQoJCX07CgoJCS8vIERldGVybWluZSBob3Jpem9udGFsIGNvb3JkaW5hdGUuCgkJLy8gV2UgdXNlIHRoZSBtb3JlV3JhcCBpbnN0ZWFkIG9mIHRoZSA8dGQ+IHRvIGF2b2lkIGJvcmRlciBjb25mdXNpb24uCgkJaWYgKHRoaXMuaXNSVEwpIHsKCQkJb3B0aW9ucy5yaWdodCA9IG1vcmVXcmFwLm9mZnNldCgpLmxlZnQgKyBtb3JlV3JhcC5vdXRlcldpZHRoKCkgKyAxOyAvLyArMSB0byBiZSBvdmVyIGNlbGwgYm9yZGVyCgkJfQoJCWVsc2UgewoJCQlvcHRpb25zLmxlZnQgPSBtb3JlV3JhcC5vZmZzZXQoKS5sZWZ0IC0gMTsgLy8gLTEgdG8gYmUgb3ZlciBjZWxsIGJvcmRlcgoJCX0KCgkJdGhpcy5zZWdQb3BvdmVyID0gbmV3IFBvcG92ZXIob3B0aW9ucyk7CgkJdGhpcy5zZWdQb3BvdmVyLnNob3coKTsKCX0sCgoKCS8vIEJ1aWxkcyB0aGUgaW5uZXIgRE9NIGNvbnRlbnRzIG9mIHRoZSBzZWdtZW50IHBvcG92ZXIKCXJlbmRlclNlZ1BvcG92ZXJDb250ZW50OiBmdW5jdGlvbihjZWxsLCBzZWdzKSB7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIGlzVGhlbWUgPSB2aWV3Lm9wdCgndGhlbWUnKTsKCQl2YXIgdGl0bGUgPSBjZWxsLnN0YXJ0LmZvcm1hdCh2aWV3Lm9wdCgnZGF5UG9wb3ZlckZvcm1hdCcpKTsKCQl2YXIgY29udGVudCA9ICQoCgkJCSc8ZGl2IGNsYXNzPSJmYy1oZWFkZXIgJyArIHZpZXcud2lkZ2V0SGVhZGVyQ2xhc3MgKyAnIj4nICsKCQkJCSc8c3BhbiBjbGFzcz0iZmMtY2xvc2UgJyArCgkJCQkJKGlzVGhlbWUgPyAndWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2snIDogJ2ZjLWljb24gZmMtaWNvbi14JykgKwoJCQkJJyI+PC9zcGFuPicgKwoJCQkJJzxzcGFuIGNsYXNzPSJmYy10aXRsZSI+JyArCgkJCQkJaHRtbEVzY2FwZSh0aXRsZSkgKwoJCQkJJzwvc3Bhbj4nICsKCQkJCSc8ZGl2IGNsYXNzPSJmYy1jbGVhciIvPicgKwoJCQknPC9kaXY+JyArCgkJCSc8ZGl2IGNsYXNzPSJmYy1ib2R5ICcgKyB2aWV3LndpZGdldENvbnRlbnRDbGFzcyArICciPicgKwoJCQkJJzxkaXYgY2xhc3M9ImZjLWV2ZW50LWNvbnRhaW5lciI+PC9kaXY+JyArCgkJCSc8L2Rpdj4nCgkJKTsKCQl2YXIgc2VnQ29udGFpbmVyID0gY29udGVudC5maW5kKCcuZmMtZXZlbnQtY29udGFpbmVyJyk7CgkJdmFyIGk7CgoJCS8vIHJlbmRlciBlYWNoIHNlZydzIGBlbGAgYW5kIG9ubHkgcmV0dXJuIHRoZSB2aXNpYmxlIHNlZ3MKCQlzZWdzID0gdGhpcy5yZW5kZXJGZ1NlZ0VscyhzZWdzLCB0cnVlKTsgLy8gZGlzYWJsZVJlc2l6aW5nPXRydWUKCQl0aGlzLnBvcG92ZXJTZWdzID0gc2VnczsKCgkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCgkJCS8vIGJlY2F1c2Ugc2VnbWVudHMgaW4gdGhlIHBvcG92ZXIgYXJlIG5vdCBwYXJ0IG9mIGEgZ3JpZCBjb29yZGluYXRlIHN5c3RlbSwgcHJvdmlkZSBhIGhpbnQgdG8gYW55CgkJCS8vIGdyaWRzIHRoYXQgd2FudCB0byBkbyBkcmFnLW4tZHJvcCBhYm91dCB3aGljaCBjZWxsIGl0IGNhbWUgZnJvbQoJCQlzZWdzW2ldLmNlbGwgPSBjZWxsOwoKCQkJc2VnQ29udGFpbmVyLmFwcGVuZChzZWdzW2ldLmVsKTsKCQl9CgoJCXJldHVybiBjb250ZW50OwoJfSwKCgoJLy8gR2l2ZW4gdGhlIGV2ZW50cyB3aXRoaW4gYW4gYXJyYXkgb2Ygc2VnbWVudCBvYmplY3RzLCByZXNsaWNlIHRoZW0gdG8gYmUgaW4gYSBzaW5nbGUgZGF5CglyZXNsaWNlRGF5U2VnczogZnVuY3Rpb24oc2VncywgZGF5RGF0ZSkgewoKCQkvLyBidWlsZCBhbiBhcnJheSBvZiB0aGUgb3JpZ2luYWwgZXZlbnRzCgkJdmFyIGV2ZW50cyA9ICQubWFwKHNlZ3MsIGZ1bmN0aW9uKHNlZykgewoJCQlyZXR1cm4gc2VnLmV2ZW50OwoJCX0pOwoKCQl2YXIgZGF5U3RhcnQgPSBkYXlEYXRlLmNsb25lKCkuc3RyaXBUaW1lKCk7CgkJdmFyIGRheUVuZCA9IGRheVN0YXJ0LmNsb25lKCkuYWRkKDEsICdkYXlzJyk7CgkJdmFyIGRheVJhbmdlID0geyBzdGFydDogZGF5U3RhcnQsIGVuZDogZGF5RW5kIH07CgoJCS8vIHNsaWNlIHRoZSBldmVudHMgd2l0aCBhIGN1c3RvbSBzbGljaW5nIGZ1bmN0aW9uCgkJc2VncyA9IHRoaXMuZXZlbnRzVG9TZWdzKAoJCQlldmVudHMsCgkJCWZ1bmN0aW9uKHJhbmdlKSB7CgkJCQl2YXIgc2VnID0gaW50ZXJzZWN0aW9uVG9TZWcocmFuZ2UsIGRheVJhbmdlKTsgLy8gdW5kZWZpbmQgaWYgbm8gaW50ZXJzZWN0aW9uCgkJCQlyZXR1cm4gc2VnID8gWyBzZWcgXSA6IFtdOyAvLyBtdXN0IHJldHVybiBhbiBhcnJheSBvZiBzZWdtZW50cwoJCQl9CgkJKTsKCgkJLy8gZm9yY2UgYW4gb3JkZXIgYmVjYXVzZSBldmVudHNUb1NlZ3MgZG9lc24ndCBndWFyYW50ZWUgb25lCgkJc2Vncy5zb3J0KGNvbXBhcmVTZWdzKTsKCgkJcmV0dXJuIHNlZ3M7Cgl9LAoKCgkvLyBHZW5lcmF0ZXMgdGhlIHRleHQgdGhhdCBzaG91bGQgYmUgaW5zaWRlIGEgIm1vcmUiIGxpbmssIGdpdmVuIHRoZSBudW1iZXIgb2YgZXZlbnRzIGl0IHJlcHJlc2VudHMKCWdldE1vcmVMaW5rVGV4dDogZnVuY3Rpb24obnVtKSB7CgkJdmFyIG9wdCA9IHRoaXMudmlldy5vcHQoJ2V2ZW50TGltaXRUZXh0Jyk7CgoJCWlmICh0eXBlb2Ygb3B0ID09PSAnZnVuY3Rpb24nKSB7CgkJCXJldHVybiBvcHQobnVtKTsKCQl9CgkJZWxzZSB7CgkJCXJldHVybiAnKycgKyBudW0gKyAnICcgKyBvcHQ7CgkJfQoJfSwKCgoJLy8gUmV0dXJucyBzZWdtZW50cyB3aXRoaW4gYSBnaXZlbiBjZWxsLgoJLy8gSWYgYHN0YXJ0TGV2ZWxgIGlzIHNwZWNpZmllZCwgcmV0dXJucyBvbmx5IGV2ZW50cyBpbmNsdWRpbmcgYW5kIGJlbG93IHRoYXQgbGV2ZWwuIE90aGVyd2lzZSByZXR1cm5zIGFsbCBzZWdzLgoJZ2V0Q2VsbFNlZ3M6IGZ1bmN0aW9uKGNlbGwsIHN0YXJ0TGV2ZWwpIHsKCQl2YXIgc2VnTWF0cml4ID0gdGhpcy5yb3dTdHJ1Y3RzW2NlbGwucm93XS5zZWdNYXRyaXg7CgkJdmFyIGxldmVsID0gc3RhcnRMZXZlbCB8fCAwOwoJCXZhciBzZWdzID0gW107CgkJdmFyIHNlZzsKCgkJd2hpbGUgKGxldmVsIDwgc2VnTWF0cml4Lmxlbmd0aCkgewoJCQlzZWcgPSBzZWdNYXRyaXhbbGV2ZWxdW2NlbGwuY29sXTsKCQkJaWYgKHNlZykgewoJCQkJc2Vncy5wdXNoKHNlZyk7CgkJCX0KCQkJbGV2ZWwrKzsKCQl9CgoJCXJldHVybiBzZWdzOwoJfQoKfSk7Cgo7OwoKLyogQSBjb21wb25lbnQgdGhhdCByZW5kZXJzIG9uZSBvciBtb3JlIGNvbHVtbnMgb2YgdmVydGljYWwgdGltZSBzbG90cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnZhciBUaW1lR3JpZCA9IEdyaWQuZXh0ZW5kKHsKCglzbG90RHVyYXRpb246IG51bGwsIC8vIGR1cmF0aW9uIG9mIGEgInNsb3QiLCBhIGRpc3RpbmN0IHRpbWUgc2VnbWVudCBvbiBnaXZlbiBkYXksIHZpc3VhbGl6ZWQgYnkgbGluZXMKCXNuYXBEdXJhdGlvbjogbnVsbCwgLy8gZ3JhbnVsYXJpdHkgb2YgdGltZSBmb3IgZHJhZ2dpbmcgYW5kIHNlbGVjdGluZwoJbWluVGltZTogbnVsbCwgLy8gRHVyYXRpb24gb2JqZWN0IHRoYXQgZGVub3RlcyB0aGUgZmlyc3QgdmlzaWJsZSB0aW1lIG9mIGFueSBnaXZlbiBkYXkKCW1heFRpbWU6IG51bGwsIC8vIER1cmF0aW9uIG9iamVjdCB0aGF0IGRlbm90ZXMgdGhlIGV4Y2x1c2l2ZSB2aXNpYmxlIGVuZCB0aW1lIG9mIGFueSBnaXZlbiBkYXkKCWNvbERhdGVzOiBudWxsLCAvLyB3aG9sZS1kYXkgZGF0ZXMgZm9yIGVhY2ggY29sdW1uLiBsZWZ0IHRvIHJpZ2h0CglheGlzRm9ybWF0OiBudWxsLCAvLyBmb3JtYXR0aW5nIHN0cmluZyBmb3IgdGltZXMgcnVubmluZyBhbG9uZyB2ZXJ0aWNhbCBheGlzCgoJZGF5RWxzOiBudWxsLCAvLyBjZWxscyBlbGVtZW50cyBpbiB0aGUgZGF5LXJvdyBiYWNrZ3JvdW5kCglzbGF0RWxzOiBudWxsLCAvLyBlbGVtZW50cyBydW5uaW5nIGhvcml6b250YWxseSBhY3Jvc3MgYWxsIGNvbHVtbnMKCglzbGF0VG9wczogbnVsbCwgLy8gYW4gYXJyYXkgb2YgdG9wIHBvc2l0aW9ucywgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5lci4gbGFzdCBpdGVtIGhvbGRzIGJvdHRvbSBvZiBsYXN0IHNsb3QKCgloZWxwZXJFbDogbnVsbCwgLy8gY2VsbCBza2VsZXRvbiBlbGVtZW50IGZvciByZW5kZXJpbmcgdGhlIG1vY2sgZXZlbnQgImhlbHBlciIKCglidXNpbmVzc0hvdXJTZWdzOiBudWxsLAoKCgljb25zdHJ1Y3RvcjogZnVuY3Rpb24oKSB7CgkJR3JpZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyAvLyBjYWxsIHRoZSBzdXBlci1jb25zdHJ1Y3RvcgoJCXRoaXMucHJvY2Vzc09wdGlvbnMoKTsKCX0sCgoKCS8vIFJlbmRlcnMgdGhlIHRpbWUgZ3JpZCBpbnRvIGB0aGlzLmVsYCwgd2hpY2ggc2hvdWxkIGFscmVhZHkgYmUgYXNzaWduZWQuCgkvLyBSZWxpZXMgb24gdGhlIHZpZXcncyBjb2xDbnQuIEluIHRoZSBmdXR1cmUsIHRoaXMgY29tcG9uZW50IHNob3VsZCBwcm9iYWJseSBiZSBzZWxmLXN1ZmZpY2llbnQuCglyZW5kZXJEYXRlczogZnVuY3Rpb24oKSB7CgkJdGhpcy5lbC5odG1sKHRoaXMucmVuZGVySHRtbCgpKTsKCQl0aGlzLmRheUVscyA9IHRoaXMuZWwuZmluZCgnLmZjLWRheScpOwoJCXRoaXMuc2xhdEVscyA9IHRoaXMuZWwuZmluZCgnLmZjLXNsYXRzIHRyJyk7Cgl9LAoKCglyZW5kZXJCdXNpbmVzc0hvdXJzOiBmdW5jdGlvbigpIHsKCQl2YXIgZXZlbnRzID0gdGhpcy52aWV3LmNhbGVuZGFyLmdldEJ1c2luZXNzSG91cnNFdmVudHMoKTsKCQl0aGlzLmJ1c2luZXNzSG91clNlZ3MgPSB0aGlzLnJlbmRlckZpbGwoJ2J1c2luZXNzSG91cnMnLCB0aGlzLmV2ZW50c1RvU2VncyhldmVudHMpLCAnYmdldmVudCcpOwoJfSwKCgoJLy8gUmVuZGVycyB0aGUgYmFzaWMgSFRNTCBza2VsZXRvbiBmb3IgdGhlIGdyaWQKCXJlbmRlckh0bWw6IGZ1bmN0aW9uKCkgewoJCXJldHVybiAnJyArCgkJCSc8ZGl2IGNsYXNzPSJmYy1iZyI+JyArCgkJCQknPHRhYmxlPicgKwoJCQkJCXRoaXMucm93SHRtbCgnc2xvdEJnJykgKyAvLyBsZXZlcmFnZXMgUm93UmVuZGVyZXIsIHdoaWNoIHdpbGwgY2FsbCBzbG90QmdDZWxsSHRtbAoJCQkJJzwvdGFibGU+JyArCgkJCSc8L2Rpdj4nICsKCQkJJzxkaXYgY2xhc3M9ImZjLXNsYXRzIj4nICsKCQkJCSc8dGFibGU+JyArCgkJCQkJdGhpcy5zbGF0Um93SHRtbCgpICsKCQkJCSc8L3RhYmxlPicgKwoJCQknPC9kaXY+JzsKCX0sCgoKCS8vIFJlbmRlcnMgdGhlIEhUTUwgZm9yIGEgdmVydGljYWwgYmFja2dyb3VuZCBjZWxsIGJlaGluZCB0aGUgc2xvdHMuCgkvLyBUaGlzIG1ldGhvZCBpcyBkaXN0aW5jdCBmcm9tICdiZycgYmVjYXVzZSB3ZSB3YW50ZWQgYSBuZXcgYHJvd1R5cGVgIHNvIHRoZSBWaWV3IGNvdWxkIGN1c3RvbWl6ZSB0aGUgcmVuZGVyaW5nLgoJc2xvdEJnQ2VsbEh0bWw6IGZ1bmN0aW9uKGNlbGwpIHsKCQlyZXR1cm4gdGhpcy5iZ0NlbGxIdG1sKGNlbGwpOwoJfSwKCgoJLy8gR2VuZXJhdGVzIHRoZSBIVE1MIGZvciB0aGUgaG9yaXpvbnRhbCAic2xhdHMiIHRoYXQgcnVuIHdpZHRoLXdpc2UuIEhhcyBhIHRpbWUgYXhpcyBvbiBhIHNpZGUuIERlcGVuZHMgb24gUlRMLgoJc2xhdFJvd0h0bWw6IGZ1bmN0aW9uKCkgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBpc1JUTCA9IHRoaXMuaXNSVEw7CgkJdmFyIGh0bWwgPSAnJzsKCQl2YXIgc2xvdE5vcm1hbCA9IHRoaXMuc2xvdER1cmF0aW9uLmFzTWludXRlcygpICUgMTUgPT09IDA7CgkJdmFyIHNsb3RUaW1lID0gbW9tZW50LmR1cmF0aW9uKCt0aGlzLm1pblRpbWUpOyAvLyB3aXNoIHRoZXJlIHdhcyAuY2xvbmUoKSBmb3IgZHVyYXRpb25zCgkJdmFyIHNsb3REYXRlOyAvLyB3aWxsIGJlIG9uIHRoZSB2aWV3J3MgZmlyc3QgZGF5LCBidXQgd2Ugb25seSBjYXJlIGFib3V0IGl0cyB0aW1lCgkJdmFyIG1pbnV0ZXM7CgkJdmFyIGF4aXNIdG1sOwoKCQkvLyBDYWxjdWxhdGUgdGhlIHRpbWUgZm9yIGVhY2ggc2xvdAoJCXdoaWxlIChzbG90VGltZSA8IHRoaXMubWF4VGltZSkgewoJCQlzbG90RGF0ZSA9IHRoaXMuc3RhcnQuY2xvbmUoKS50aW1lKHNsb3RUaW1lKTsgLy8gd2lsbCBiZSBpbiBVVEMgYnV0IHRoYXQncyBnb29kLiB0byBhdm9pZCBEU1QgaXNzdWVzCgkJCW1pbnV0ZXMgPSBzbG90RGF0ZS5taW51dGVzKCk7CgoJCQlheGlzSHRtbCA9CgkJCQknPHRkIGNsYXNzPSJmYy1heGlzIGZjLXRpbWUgJyArIHZpZXcud2lkZ2V0Q29udGVudENsYXNzICsgJyIgJyArIHZpZXcuYXhpc1N0eWxlQXR0cigpICsgJz4nICsKCQkJCQkoKCFzbG90Tm9ybWFsIHx8ICFtaW51dGVzKSA/IC8vIGlmIGlycmVndWxhciBzbG90IGR1cmF0aW9uLCBvciBvbiB0aGUgaG91ciwgdGhlbiBkaXNwbGF5IHRoZSB0aW1lCgkJCQkJCSc8c3Bhbj4nICsgLy8gZm9yIG1hdGNoQ2VsbFdpZHRocwoJCQkJCQkJaHRtbEVzY2FwZShzbG90RGF0ZS5mb3JtYXQodGhpcy5heGlzRm9ybWF0KSkgKwoJCQkJCQknPC9zcGFuPicgOgoJCQkJCQknJwoJCQkJCQkpICsKCQkJCSc8L3RkPic7CgoJCQlodG1sICs9CgkJCQknPHRyICcgKyAoIW1pbnV0ZXMgPyAnJyA6ICdjbGFzcz0iZmMtbWlub3IiJykgKyAnPicgKwoJCQkJCSghaXNSVEwgPyBheGlzSHRtbCA6ICcnKSArCgkJCQkJJzx0ZCBjbGFzcz0iJyArIHZpZXcud2lkZ2V0Q29udGVudENsYXNzICsgJyIvPicgKwoJCQkJCShpc1JUTCA/IGF4aXNIdG1sIDogJycpICsKCQkJCSI8L3RyPiI7CgoJCQlzbG90VGltZS5hZGQodGhpcy5zbG90RHVyYXRpb24pOwoJCX0KCgkJcmV0dXJuIGh0bWw7Cgl9LAoKCgkvKiBPcHRpb25zCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBQYXJzZXMgdmFyaW91cyBvcHRpb25zIGludG8gcHJvcGVydGllcyBvZiB0aGlzIG9iamVjdAoJcHJvY2Vzc09wdGlvbnM6IGZ1bmN0aW9uKCkgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBzbG90RHVyYXRpb24gPSB2aWV3Lm9wdCgnc2xvdER1cmF0aW9uJyk7CgkJdmFyIHNuYXBEdXJhdGlvbiA9IHZpZXcub3B0KCdzbmFwRHVyYXRpb24nKTsKCgkJc2xvdER1cmF0aW9uID0gbW9tZW50LmR1cmF0aW9uKHNsb3REdXJhdGlvbik7CgkJc25hcER1cmF0aW9uID0gc25hcER1cmF0aW9uID8gbW9tZW50LmR1cmF0aW9uKHNuYXBEdXJhdGlvbikgOiBzbG90RHVyYXRpb247CgoJCXRoaXMuc2xvdER1cmF0aW9uID0gc2xvdER1cmF0aW9uOwoJCXRoaXMuc25hcER1cmF0aW9uID0gc25hcER1cmF0aW9uOwoJCXRoaXMuY2VsbER1cmF0aW9uID0gc25hcER1cmF0aW9uOyAvLyBmb3IgR3JpZCBzeXN0ZW0KCgkJdGhpcy5taW5UaW1lID0gbW9tZW50LmR1cmF0aW9uKHZpZXcub3B0KCdtaW5UaW1lJykpOwoJCXRoaXMubWF4VGltZSA9IG1vbWVudC5kdXJhdGlvbih2aWV3Lm9wdCgnbWF4VGltZScpKTsKCgkJdGhpcy5heGlzRm9ybWF0ID0gdmlldy5vcHQoJ2F4aXNGb3JtYXQnKSB8fCB2aWV3Lm9wdCgnc21hbGxUaW1lRm9ybWF0Jyk7Cgl9LAoKCgkvLyBDb21wdXRlcyBhIGRlZmF1bHQgY29sdW1uIGhlYWRlciBmb3JtYXR0aW5nIHN0cmluZyBpZiBgY29sRm9ybWF0YCBpcyBub3QgZXhwbGljaXRseSBkZWZpbmVkCgljb21wdXRlQ29sSGVhZEZvcm1hdDogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMuY29sQ250ID4gMSkgeyAvLyBtdWx0aXBsZSBkYXlzLCBzbyBmdWxsIHNpbmdsZSBkYXRlIHN0cmluZyBXT04nVCBiZSBpbiB0aXRsZSB0ZXh0CgkJCXJldHVybiB0aGlzLnZpZXcub3B0KCdkYXlPZk1vbnRoRm9ybWF0Jyk7IC8vICJTYXQgMTIvMTAiCgkJfQoJCWVsc2UgeyAvLyBzaW5nbGUgZGF5LCBzbyBmdWxsIHNpbmdsZSBkYXRlIHN0cmluZyB3aWxsIHByb2JhYmx5IGJlIGluIHRpdGxlIHRleHQKCQkJcmV0dXJuICdkZGRkJzsgLy8gIlNhdHVyZGF5IgoJCX0KCX0sCgoKCS8vIENvbXB1dGVzIGEgZGVmYXVsdCBldmVudCB0aW1lIGZvcm1hdHRpbmcgc3RyaW5nIGlmIGB0aW1lRm9ybWF0YCBpcyBub3QgZXhwbGljaXRseSBkZWZpbmVkCgljb21wdXRlRXZlbnRUaW1lRm9ybWF0OiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy52aWV3Lm9wdCgnbm9NZXJpZGllbVRpbWVGb3JtYXQnKTsgLy8gbGlrZSAiNjozMCIgKG5vIEFNL1BNKQoJfSwKCgoJLy8gQ29tcHV0ZXMgYSBkZWZhdWx0IGBkaXNwbGF5RXZlbnRFbmRgIHZhbHVlIGlmIG9uZSBpcyBub3QgZXhwbGljbHR5IGRlZmluZWQKCWNvbXB1dGVEaXNwbGF5RXZlbnRFbmQ6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0cnVlOwoJfSwKCgoJLyogQ2VsbCBTeXN0ZW0KCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCXJhbmdlVXBkYXRlZDogZnVuY3Rpb24oKSB7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIGNvbERhdGVzID0gW107CgkJdmFyIGRhdGU7CgoJCWRhdGUgPSB0aGlzLnN0YXJ0LmNsb25lKCk7CgkJd2hpbGUgKGRhdGUuaXNCZWZvcmUodGhpcy5lbmQpKSB7CgkJCWNvbERhdGVzLnB1c2goZGF0ZS5jbG9uZSgpKTsKCQkJZGF0ZS5hZGQoMSwgJ2RheScpOwoJCQlkYXRlID0gdmlldy5za2lwSGlkZGVuRGF5cyhkYXRlKTsKCQl9CgoJCWlmICh0aGlzLmlzUlRMKSB7CgkJCWNvbERhdGVzLnJldmVyc2UoKTsKCQl9CgoJCXRoaXMuY29sRGF0ZXMgPSBjb2xEYXRlczsKCQl0aGlzLmNvbENudCA9IGNvbERhdGVzLmxlbmd0aDsKCQl0aGlzLnJvd0NudCA9IE1hdGguY2VpbCgodGhpcy5tYXhUaW1lIC0gdGhpcy5taW5UaW1lKSAvIHRoaXMuc25hcER1cmF0aW9uKTsgLy8gIyBvZiB2ZXJ0aWNhbCBzbmFwcwoJfSwKCgoJLy8gR2l2ZW4gYSBjZWxsIG9iamVjdCwgZ2VuZXJhdGVzIGl0cyBzdGFydCBkYXRlLiBSZXR1cm5zIGEgcmVmZXJlbmNlLWZyZWUgY29weS4KCWNvbXB1dGVDZWxsRGF0ZTogZnVuY3Rpb24oY2VsbCkgewoJCXZhciBkYXRlID0gdGhpcy5jb2xEYXRlc1tjZWxsLmNvbF07CgkJdmFyIHRpbWUgPSB0aGlzLmNvbXB1dGVTbmFwVGltZShjZWxsLnJvdyk7CgoJCWRhdGUgPSB0aGlzLnZpZXcuY2FsZW5kYXIucmV6b25lRGF0ZShkYXRlKTsgLy8gZ2l2ZSBpdCBhIDAwOjAwIHRpbWUKCQlkYXRlLnRpbWUodGltZSk7CgoJCXJldHVybiBkYXRlOwoJfSwKCgoJLy8gUmV0cmlldmVzIHRoZSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgZ2l2ZW4gY29sdW1uCglnZXRDb2xFbDogZnVuY3Rpb24oY29sKSB7CgkJcmV0dXJuIHRoaXMuZGF5RWxzLmVxKGNvbCk7Cgl9LAoKCgkvKiBEYXRlcwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gR2l2ZW4gYSByb3cgbnVtYmVyIG9mIHRoZSBncmlkLCByZXByZXNlbnRpbmcgYSAic25hcCIsIHJldHVybnMgYSB0aW1lIChEdXJhdGlvbikgZnJvbSBpdHMgc3RhcnQtb2YtZGF5Cgljb21wdXRlU25hcFRpbWU6IGZ1bmN0aW9uKHJvdykgewoJCXJldHVybiBtb21lbnQuZHVyYXRpb24odGhpcy5taW5UaW1lICsgdGhpcy5zbmFwRHVyYXRpb24gKiByb3cpOwoJfSwKCgoJLy8gU2xpY2VzIHVwIGEgZGF0ZSByYW5nZSBieSBjb2x1bW4gaW50byBhbiBhcnJheSBvZiBzZWdtZW50cwoJcmFuZ2VUb1NlZ3M6IGZ1bmN0aW9uKHJhbmdlKSB7CgkJdmFyIGNvbENudCA9IHRoaXMuY29sQ250OwoJCXZhciBzZWdzID0gW107CgkJdmFyIHNlZzsKCQl2YXIgY29sOwoJCXZhciBjb2xEYXRlOwoJCXZhciBjb2xSYW5nZTsKCgkJLy8gbm9ybWFsaXplIDooCgkJcmFuZ2UgPSB7CgkJCXN0YXJ0OiByYW5nZS5zdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpLAoJCQllbmQ6IHJhbmdlLmVuZC5jbG9uZSgpLnN0cmlwWm9uZSgpCgkJfTsKCgkJZm9yIChjb2wgPSAwOyBjb2wgPCBjb2xDbnQ7IGNvbCsrKSB7CgkJCWNvbERhdGUgPSB0aGlzLmNvbERhdGVzW2NvbF07IC8vIHdpbGwgYmUgYW1iaWcgdGltZS90aW1lem9uZQoJCQljb2xSYW5nZSA9IHsKCQkJCXN0YXJ0OiBjb2xEYXRlLmNsb25lKCkudGltZSh0aGlzLm1pblRpbWUpLAoJCQkJZW5kOiBjb2xEYXRlLmNsb25lKCkudGltZSh0aGlzLm1heFRpbWUpCgkJCX07CgkJCXNlZyA9IGludGVyc2VjdGlvblRvU2VnKHJhbmdlLCBjb2xSYW5nZSk7IC8vIGJvdGggd2lsbCBiZSBhbWJpZyB0aW1lem9uZQoJCQlpZiAoc2VnKSB7CgkJCQlzZWcuY29sID0gY29sOwoJCQkJc2Vncy5wdXNoKHNlZyk7CgkJCX0KCQl9CgoJCXJldHVybiBzZWdzOwoJfSwKCgoJLyogQ29vcmRpbmF0ZXMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCXVwZGF0ZVNpemU6IGZ1bmN0aW9uKGlzUmVzaXplKSB7IC8vIE5PVCBhIHN0YW5kYXJkIEdyaWQgbWV0aG9kCgkJdGhpcy5jb21wdXRlU2xhdFRvcHMoKTsKCgkJaWYgKGlzUmVzaXplKSB7CgkJCXRoaXMudXBkYXRlU2VnVmVydGljYWxzKCk7CgkJfQoJfSwKCgoJLy8gQ29tcHV0ZXMgdGhlIHRvcC9ib3R0b20gY29vcmRpbmF0ZXMgb2YgZWFjaCAic25hcCIgcm93cwoJY29tcHV0ZVJvd0Nvb3JkczogZnVuY3Rpb24oKSB7CgkJdmFyIG9yaWdpblRvcCA9IHRoaXMuZWwub2Zmc2V0KCkudG9wOwoJCXZhciBpdGVtcyA9IFtdOwoJCXZhciBpOwoJCXZhciBpdGVtOwoKCQlmb3IgKGkgPSAwOyBpIDwgdGhpcy5yb3dDbnQ7IGkrKykgewoJCQlpdGVtID0gewoJCQkJdG9wOiBvcmlnaW5Ub3AgKyB0aGlzLmNvbXB1dGVUaW1lVG9wKHRoaXMuY29tcHV0ZVNuYXBUaW1lKGkpKQoJCQl9OwoJCQlpZiAoaSA+IDApIHsKCQkJCWl0ZW1zW2kgLSAxXS5ib3R0b20gPSBpdGVtLnRvcDsKCQkJfQoJCQlpdGVtcy5wdXNoKGl0ZW0pOwoJCX0KCQlpdGVtLmJvdHRvbSA9IGl0ZW0udG9wICsgdGhpcy5jb21wdXRlVGltZVRvcCh0aGlzLmNvbXB1dGVTbmFwVGltZShpKSk7CgoJCXJldHVybiBpdGVtczsKCX0sCgoKCS8vIENvbXB1dGVzIHRoZSB0b3AgY29vcmRpbmF0ZSwgcmVsYXRpdmUgdG8gdGhlIGJvdW5kcyBvZiB0aGUgZ3JpZCwgb2YgdGhlIGdpdmVuIGRhdGUuCgkvLyBBIGBzdGFydE9mRGF5RGF0ZWAgbXVzdCBiZSBnaXZlbiBmb3IgYXZvaWRpbmcgYW1iaWd1aXR5IG92ZXIgaG93IHRvIHRyZWF0IG1pZG5pZ2h0LgoJY29tcHV0ZURhdGVUb3A6IGZ1bmN0aW9uKGRhdGUsIHN0YXJ0T2ZEYXlEYXRlKSB7CgkJcmV0dXJuIHRoaXMuY29tcHV0ZVRpbWVUb3AoCgkJCW1vbWVudC5kdXJhdGlvbigKCQkJCWRhdGUuY2xvbmUoKS5zdHJpcFpvbmUoKSAtIHN0YXJ0T2ZEYXlEYXRlLmNsb25lKCkuc3RyaXBUaW1lKCkKCQkJKQoJCSk7Cgl9LAoKCgkvLyBDb21wdXRlcyB0aGUgdG9wIGNvb3JkaW5hdGUsIHJlbGF0aXZlIHRvIHRoZSBib3VuZHMgb2YgdGhlIGdyaWQsIG9mIHRoZSBnaXZlbiB0aW1lIChhIER1cmF0aW9uKS4KCWNvbXB1dGVUaW1lVG9wOiBmdW5jdGlvbih0aW1lKSB7CgkJdmFyIHNsYXRDb3ZlcmFnZSA9ICh0aW1lIC0gdGhpcy5taW5UaW1lKSAvIHRoaXMuc2xvdER1cmF0aW9uOyAvLyBmbG9hdGluZy1wb2ludCB2YWx1ZSBvZiAjIG9mIHNsb3RzIGNvdmVyZWQKCQl2YXIgc2xhdEluZGV4OwoJCXZhciBzbGF0UmVtYWluZGVyOwoJCXZhciBzbGF0VG9wOwoJCXZhciBzbGF0Qm90dG9tOwoKCQkvLyBjb25zdHJhaW4uIGJlY2F1c2UgbWluVGltZS9tYXhUaW1lIG1pZ2h0IGJlIGN1c3RvbWl6ZWQKCQlzbGF0Q292ZXJhZ2UgPSBNYXRoLm1heCgwLCBzbGF0Q292ZXJhZ2UpOwoJCXNsYXRDb3ZlcmFnZSA9IE1hdGgubWluKHRoaXMuc2xhdEVscy5sZW5ndGgsIHNsYXRDb3ZlcmFnZSk7CgoJCXNsYXRJbmRleCA9IE1hdGguZmxvb3Ioc2xhdENvdmVyYWdlKTsgLy8gYW4gaW50ZWdlciBpbmRleCBvZiB0aGUgZnVydGhlc3Qgd2hvbGUgc2xvdAoJCXNsYXRSZW1haW5kZXIgPSBzbGF0Q292ZXJhZ2UgLSBzbGF0SW5kZXg7CgkJc2xhdFRvcCA9IHRoaXMuc2xhdFRvcHNbc2xhdEluZGV4XTsgLy8gdGhlIHRvcCBwb3NpdGlvbiBvZiB0aGUgZnVydGhlc3Qgd2hvbGUgc2xvdAoKCQlpZiAoc2xhdFJlbWFpbmRlcikgeyAvLyB0aW1lIHNwYW5zIHBhcnQtd2F5IGludG8gdGhlIHNsb3QKCQkJc2xhdEJvdHRvbSA9IHRoaXMuc2xhdFRvcHNbc2xhdEluZGV4ICsgMV07CgkJCXJldHVybiBzbGF0VG9wICsgKHNsYXRCb3R0b20gLSBzbGF0VG9wKSAqIHNsYXRSZW1haW5kZXI7IC8vIHBhcnQtd2F5IGJldHdlZW4gc2xvdHMKCQl9CgkJZWxzZSB7CgkJCXJldHVybiBzbGF0VG9wOwoJCX0KCX0sCgoKCS8vIFF1ZXJpZXMgZWFjaCBgc2xhdEVsYCBmb3IgaXRzIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBncmlkJ3MgY29udGFpbmVyIGFuZCBzdG9yZXMgaXQgaW4gYHNsYXRUb3BzYC4KCS8vIEluY2x1ZGVzIHRoZSB0aGUgYm90dG9tIG9mIHRoZSBsYXN0IHNsYXQgYXMgdGhlIGxhc3QgaXRlbSBpbiB0aGUgYXJyYXkuCgljb21wdXRlU2xhdFRvcHM6IGZ1bmN0aW9uKCkgewoJCXZhciB0b3BzID0gW107CgkJdmFyIHRvcDsKCgkJdGhpcy5zbGF0RWxzLmVhY2goZnVuY3Rpb24oaSwgbm9kZSkgewoJCQl0b3AgPSAkKG5vZGUpLnBvc2l0aW9uKCkudG9wOwoJCQl0b3BzLnB1c2godG9wKTsKCQl9KTsKCgkJdG9wcy5wdXNoKHRvcCArIHRoaXMuc2xhdEVscy5sYXN0KCkub3V0ZXJIZWlnaHQoKSk7IC8vIGJvdHRvbSBvZiB0aGUgbGFzdCBzbGF0CgoJCXRoaXMuc2xhdFRvcHMgPSB0b3BzOwoJfSwKCgoJLyogRXZlbnQgRHJhZyBWaXN1YWxpemF0aW9uCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZW5kZXJzIGEgdmlzdWFsIGluZGljYXRpb24gb2YgYW4gZXZlbnQgYmVpbmcgZHJhZ2dlZCBvdmVyIHRoZSBzcGVjaWZpZWQgZGF0ZShzKS4KCS8vIGRyb3BMb2NhdGlvbidzIGVuZCBtaWdodCBiZSBudWxsLCBhcyB3ZWxsIGFzIGBzZWdgLiBTZWUgR3JpZDo6cmVuZGVyRHJhZyBmb3IgbW9yZSBpbmZvLgoJLy8gQSByZXR1cm5lZCB2YWx1ZSBvZiBgdHJ1ZWAgc2lnbmFscyB0aGF0IGEgbW9jayAiaGVscGVyIiBldmVudCBoYXMgYmVlbiByZW5kZXJlZC4KCXJlbmRlckRyYWc6IGZ1bmN0aW9uKGRyb3BMb2NhdGlvbiwgc2VnKSB7CgoJCWlmIChzZWcpIHsgLy8gaWYgdGhlcmUgaXMgZXZlbnQgaW5mb3JtYXRpb24gZm9yIHRoaXMgZHJhZywgcmVuZGVyIGEgaGVscGVyIGV2ZW50CgkJCXRoaXMucmVuZGVyUmFuZ2VIZWxwZXIoZHJvcExvY2F0aW9uLCBzZWcpOwoJCQl0aGlzLmFwcGx5RHJhZ09wYWNpdHkodGhpcy5oZWxwZXJFbCk7CgoJCQlyZXR1cm4gdHJ1ZTsgLy8gc2lnbmFsIHRoYXQgYSBoZWxwZXIgaGFzIGJlZW4gcmVuZGVyZWQKCQl9CgkJZWxzZSB7CgkJCS8vIG90aGVyd2lzZSwganVzdCByZW5kZXIgYSBoaWdobGlnaHQKCQkJdGhpcy5yZW5kZXJIaWdobGlnaHQodGhpcy5ldmVudFJhbmdlVG9TZWdzKGRyb3BMb2NhdGlvbikpOwoJCX0KCX0sCgoKCS8vIFVucmVuZGVycyBhbnkgdmlzdWFsIGluZGljYXRpb24gb2YgYW4gZXZlbnQgYmVpbmcgZHJhZ2dlZAoJdW5yZW5kZXJEcmFnOiBmdW5jdGlvbigpIHsKCQl0aGlzLnVucmVuZGVySGVscGVyKCk7CgkJdGhpcy51bnJlbmRlckhpZ2hsaWdodCgpOwoJfSwKCgoJLyogRXZlbnQgUmVzaXplIFZpc3VhbGl6YXRpb24KCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFJlbmRlcnMgYSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhbiBldmVudCBiZWluZyByZXNpemVkCglyZW5kZXJFdmVudFJlc2l6ZTogZnVuY3Rpb24ocmFuZ2UsIHNlZykgewoJCXRoaXMucmVuZGVyUmFuZ2VIZWxwZXIocmFuZ2UsIHNlZyk7Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYW55IHZpc3VhbCBpbmRpY2F0aW9uIG9mIGFuIGV2ZW50IGJlaW5nIHJlc2l6ZWQKCXVucmVuZGVyRXZlbnRSZXNpemU6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5yZW5kZXJIZWxwZXIoKTsKCX0sCgoKCS8qIEV2ZW50IEhlbHBlcgoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVuZGVycyBhIG1vY2sgImhlbHBlciIgZXZlbnQuIGBzb3VyY2VTZWdgIGlzIHRoZSBvcmlnaW5hbCBzZWdtZW50IG9iamVjdCBhbmQgbWlnaHQgYmUgbnVsbCAoYW4gZXh0ZXJuYWwgZHJhZykKCXJlbmRlckhlbHBlcjogZnVuY3Rpb24oZXZlbnQsIHNvdXJjZVNlZykgewoJCXZhciBzZWdzID0gdGhpcy5ldmVudHNUb1NlZ3MoWyBldmVudCBdKTsKCQl2YXIgdGFibGVFbDsKCQl2YXIgaSwgc2VnOwoJCXZhciBzb3VyY2VFbDsKCgkJc2VncyA9IHRoaXMucmVuZGVyRmdTZWdFbHMoc2Vncyk7IC8vIGFzc2lnbnMgZWFjaCBzZWcncyBlbCBhbmQgcmV0dXJucyBhIHN1YnNldCBvZiBzZWdzIHRoYXQgd2VyZSByZW5kZXJlZAoJCXRhYmxlRWwgPSB0aGlzLnJlbmRlclNlZ1RhYmxlKHNlZ3MpOwoKCQkvLyBUcnkgdG8gbWFrZSB0aGUgc2VnbWVudCB0aGF0IGlzIGluIHRoZSBzYW1lIHJvdyBhcyBzb3VyY2VTZWcgbG9vayB0aGUgc2FtZQoJCWZvciAoaSA9IDA7IGkgPCBzZWdzLmxlbmd0aDsgaSsrKSB7CgkJCXNlZyA9IHNlZ3NbaV07CgkJCWlmIChzb3VyY2VTZWcgJiYgc291cmNlU2VnLmNvbCA9PT0gc2VnLmNvbCkgewoJCQkJc291cmNlRWwgPSBzb3VyY2VTZWcuZWw7CgkJCQlzZWcuZWwuY3NzKHsKCQkJCQlsZWZ0OiBzb3VyY2VFbC5jc3MoJ2xlZnQnKSwKCQkJCQlyaWdodDogc291cmNlRWwuY3NzKCdyaWdodCcpLAoJCQkJCSdtYXJnaW4tbGVmdCc6IHNvdXJjZUVsLmNzcygnbWFyZ2luLWxlZnQnKSwKCQkJCQknbWFyZ2luLXJpZ2h0Jzogc291cmNlRWwuY3NzKCdtYXJnaW4tcmlnaHQnKQoJCQkJfSk7CgkJCX0KCQl9CgoJCXRoaXMuaGVscGVyRWwgPSAkKCc8ZGl2IGNsYXNzPSJmYy1oZWxwZXItc2tlbGV0b24iLz4nKQoJCQkuYXBwZW5kKHRhYmxlRWwpCgkJCQkuYXBwZW5kVG8odGhpcy5lbCk7Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYW55IG1vY2sgaGVscGVyIGV2ZW50Cgl1bnJlbmRlckhlbHBlcjogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMuaGVscGVyRWwpIHsKCQkJdGhpcy5oZWxwZXJFbC5yZW1vdmUoKTsKCQkJdGhpcy5oZWxwZXJFbCA9IG51bGw7CgkJfQoJfSwKCgoJLyogU2VsZWN0aW9uCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZW5kZXJzIGEgdmlzdWFsIGluZGljYXRpb24gb2YgYSBzZWxlY3Rpb24uIE92ZXJyaWRlcyB0aGUgZGVmYXVsdCwgd2hpY2ggd2FzIHRvIHNpbXBseSByZW5kZXIgYSBoaWdobGlnaHQuCglyZW5kZXJTZWxlY3Rpb246IGZ1bmN0aW9uKHJhbmdlKSB7CgkJaWYgKHRoaXMudmlldy5vcHQoJ3NlbGVjdEhlbHBlcicpKSB7IC8vIHRoaXMgc2V0dGluZyBzaWduYWxzIHRoYXQgYSBtb2NrIGhlbHBlciBldmVudCBzaG91bGQgYmUgcmVuZGVyZWQKCQkJdGhpcy5yZW5kZXJSYW5nZUhlbHBlcihyYW5nZSk7CgkJfQoJCWVsc2UgewoJCQl0aGlzLnJlbmRlckhpZ2hsaWdodCh0aGlzLnNlbGVjdGlvblJhbmdlVG9TZWdzKHJhbmdlKSk7CgkJfQoJfSwKCgoJLy8gVW5yZW5kZXJzIGFueSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhIHNlbGVjdGlvbgoJdW5yZW5kZXJTZWxlY3Rpb246IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5yZW5kZXJIZWxwZXIoKTsKCQl0aGlzLnVucmVuZGVySGlnaGxpZ2h0KCk7Cgl9LAoKCgkvKiBGaWxsIFN5c3RlbSAoaGlnaGxpZ2h0LCBiYWNrZ3JvdW5kIGV2ZW50cywgYnVzaW5lc3MgaG91cnMpCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZW5kZXJzIGEgc2V0IG9mIHJlY3RhbmdsZXMgb3ZlciB0aGUgZ2l2ZW4gdGltZSBzZWdtZW50cy4KCS8vIE9ubHkgcmV0dXJucyBzZWdtZW50cyB0aGF0IHN1Y2Nlc3NmdWxseSByZW5kZXJlZC4KCXJlbmRlckZpbGw6IGZ1bmN0aW9uKHR5cGUsIHNlZ3MsIGNsYXNzTmFtZSkgewoJCXZhciBzZWdDb2xzOwoJCXZhciBza2VsZXRvbkVsOwoJCXZhciB0ckVsOwoJCXZhciBjb2wsIGNvbFNlZ3M7CgkJdmFyIHRkRWw7CgkJdmFyIGNvbnRhaW5lckVsOwoJCXZhciBkYXlEYXRlOwoJCXZhciBpLCBzZWc7CgoJCWlmIChzZWdzLmxlbmd0aCkgewoKCQkJc2VncyA9IHRoaXMucmVuZGVyRmlsbFNlZ0Vscyh0eXBlLCBzZWdzKTsgLy8gYXNzaWduZXMgYC5lbGAgdG8gZWFjaCBzZWcuIHJldHVybnMgc3VjY2Vzc2Z1bGx5IHJlbmRlcmVkIHNlZ3MKCQkJc2VnQ29scyA9IHRoaXMuZ3JvdXBTZWdDb2xzKHNlZ3MpOyAvLyBncm91cCBpbnRvIHN1Yi1hcnJheXMsIGFuZCBhc3NpZ25zICdjb2wnIHRvIGVhY2ggc2VnCgoJCQljbGFzc05hbWUgPSBjbGFzc05hbWUgfHwgdHlwZS50b0xvd2VyQ2FzZSgpOwoJCQlza2VsZXRvbkVsID0gJCgKCQkJCSc8ZGl2IGNsYXNzPSJmYy0nICsgY2xhc3NOYW1lICsgJy1za2VsZXRvbiI+JyArCgkJCQkJJzx0YWJsZT48dHIvPjwvdGFibGU+JyArCgkJCQknPC9kaXY+JwoJCQkpOwoJCQl0ckVsID0gc2tlbGV0b25FbC5maW5kKCd0cicpOwoKCQkJZm9yIChjb2wgPSAwOyBjb2wgPCBzZWdDb2xzLmxlbmd0aDsgY29sKyspIHsKCQkJCWNvbFNlZ3MgPSBzZWdDb2xzW2NvbF07CgkJCQl0ZEVsID0gJCgnPHRkLz4nKS5hcHBlbmRUbyh0ckVsKTsKCgkJCQlpZiAoY29sU2Vncy5sZW5ndGgpIHsKCQkJCQljb250YWluZXJFbCA9ICQoJzxkaXYgY2xhc3M9ImZjLScgKyBjbGFzc05hbWUgKyAnLWNvbnRhaW5lciIvPicpLmFwcGVuZFRvKHRkRWwpOwoJCQkJCWRheURhdGUgPSB0aGlzLmNvbERhdGVzW2NvbF07CgoJCQkJCWZvciAoaSA9IDA7IGkgPCBjb2xTZWdzLmxlbmd0aDsgaSsrKSB7CgkJCQkJCXNlZyA9IGNvbFNlZ3NbaV07CgkJCQkJCWNvbnRhaW5lckVsLmFwcGVuZCgKCQkJCQkJCXNlZy5lbC5jc3MoewoJCQkJCQkJCXRvcDogdGhpcy5jb21wdXRlRGF0ZVRvcChzZWcuc3RhcnQsIGRheURhdGUpLAoJCQkJCQkJCWJvdHRvbTogLXRoaXMuY29tcHV0ZURhdGVUb3Aoc2VnLmVuZCwgZGF5RGF0ZSkgLy8gdGhlIHkgcG9zaXRpb24gb2YgdGhlIGJvdHRvbSBlZGdlCgkJCQkJCQl9KQoJCQkJCQkpOwoJCQkJCX0KCQkJCX0KCQkJfQoKCQkJdGhpcy5ib29rZW5kQ2VsbHModHJFbCwgdHlwZSk7CgoJCQl0aGlzLmVsLmFwcGVuZChza2VsZXRvbkVsKTsKCQkJdGhpcy5lbHNCeUZpbGxbdHlwZV0gPSBza2VsZXRvbkVsOwoJCX0KCgkJcmV0dXJuIHNlZ3M7Cgl9Cgp9KTsKCjs7CgovKiBFdmVudC1yZW5kZXJpbmcgbWV0aG9kcyBmb3IgdGhlIFRpbWVHcmlkIGNsYXNzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKVGltZUdyaWQubWl4aW4oewoKCWV2ZW50U2tlbGV0b25FbDogbnVsbCwgLy8gaGFzIGNlbGxzIHdpdGggZXZlbnQtY29udGFpbmVycywgd2hpY2ggY29udGFpbiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgZXZlbnQgZWxlbWVudHMKCgoJLy8gUmVuZGVycyB0aGUgZ2l2ZW4gZm9yZWdyb3VuZCBldmVudCBzZWdtZW50cyBvbnRvIHRoZSBncmlkCglyZW5kZXJGZ1NlZ3M6IGZ1bmN0aW9uKHNlZ3MpIHsKCQlzZWdzID0gdGhpcy5yZW5kZXJGZ1NlZ0VscyhzZWdzKTsgLy8gcmV0dXJucyBhIHN1YnNldCBvZiB0aGUgc2Vncy4gc2VncyB0aGF0IHdlcmUgYWN0dWFsbHkgcmVuZGVyZWQKCgkJdGhpcy5lbC5hcHBlbmQoCgkJCXRoaXMuZXZlbnRTa2VsZXRvbkVsID0gJCgnPGRpdiBjbGFzcz0iZmMtY29udGVudC1za2VsZXRvbiIvPicpCgkJCQkuYXBwZW5kKHRoaXMucmVuZGVyU2VnVGFibGUoc2VncykpCgkJKTsKCgkJcmV0dXJuIHNlZ3M7IC8vIHJldHVybiBvbmx5IHRoZSBzZWdzIHRoYXQgd2VyZSBhY3R1YWxseSByZW5kZXJlZAoJfSwKCgoJLy8gVW5yZW5kZXJzIGFsbCBjdXJyZW50bHkgcmVuZGVyZWQgZm9yZWdyb3VuZCBldmVudCBzZWdtZW50cwoJdW5yZW5kZXJGZ1NlZ3M6IGZ1bmN0aW9uKHNlZ3MpIHsKCQlpZiAodGhpcy5ldmVudFNrZWxldG9uRWwpIHsKCQkJdGhpcy5ldmVudFNrZWxldG9uRWwucmVtb3ZlKCk7CgkJCXRoaXMuZXZlbnRTa2VsZXRvbkVsID0gbnVsbDsKCQl9Cgl9LAoKCgkvLyBSZW5kZXJzIGFuZCByZXR1cm5zIHRoZSA8dGFibGU+IHBvcnRpb24gb2YgdGhlIGV2ZW50LXNrZWxldG9uLgoJLy8gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzICd0Ym9keUVsJyBhbmQgJ3NlZ3MnLgoJcmVuZGVyU2VnVGFibGU6IGZ1bmN0aW9uKHNlZ3MpIHsKCQl2YXIgdGFibGVFbCA9ICQoJzx0YWJsZT48dHIvPjwvdGFibGU+Jyk7CgkJdmFyIHRyRWwgPSB0YWJsZUVsLmZpbmQoJ3RyJyk7CgkJdmFyIHNlZ0NvbHM7CgkJdmFyIGksIHNlZzsKCQl2YXIgY29sLCBjb2xTZWdzOwoJCXZhciBjb250YWluZXJFbDsKCgkJc2VnQ29scyA9IHRoaXMuZ3JvdXBTZWdDb2xzKHNlZ3MpOyAvLyBncm91cCBpbnRvIHN1Yi1hcnJheXMsIGFuZCBhc3NpZ25zICdjb2wnIHRvIGVhY2ggc2VnCgoJCXRoaXMuY29tcHV0ZVNlZ1ZlcnRpY2FscyhzZWdzKTsgLy8gY29tcHV0ZSBhbmQgYXNzaWduIHRvcC9ib3R0b20KCgkJZm9yIChjb2wgPSAwOyBjb2wgPCBzZWdDb2xzLmxlbmd0aDsgY29sKyspIHsgLy8gaXRlcmF0ZSBlYWNoIGNvbHVtbiBncm91cGluZwoJCQljb2xTZWdzID0gc2VnQ29sc1tjb2xdOwoJCQlwbGFjZVNsb3RTZWdzKGNvbFNlZ3MpOyAvLyBjb21wdXRlIGhvcml6b250YWwgY29vcmRpbmF0ZXMsIHotaW5kZXgncywgYW5kIHJlb3JkZXIgdGhlIGFycmF5CgoJCQljb250YWluZXJFbCA9ICQoJzxkaXYgY2xhc3M9ImZjLWV2ZW50LWNvbnRhaW5lciIvPicpOwoKCQkJLy8gYXNzaWduIHBvc2l0aW9uaW5nIENTUyBhbmQgaW5zZXJ0IGludG8gY29udGFpbmVyCgkJCWZvciAoaSA9IDA7IGkgPCBjb2xTZWdzLmxlbmd0aDsgaSsrKSB7CgkJCQlzZWcgPSBjb2xTZWdzW2ldOwoJCQkJc2VnLmVsLmNzcyh0aGlzLmdlbmVyYXRlU2VnUG9zaXRpb25Dc3Moc2VnKSk7CgoJCQkJLy8gaWYgdGhlIGhlaWdodCBpcyBzaG9ydCwgYWRkIGEgY2xhc3NOYW1lIGZvciBhbHRlcm5hdGUgc3R5bGluZwoJCQkJaWYgKHNlZy5ib3R0b20gLSBzZWcudG9wIDwgMzApIHsKCQkJCQlzZWcuZWwuYWRkQ2xhc3MoJ2ZjLXNob3J0Jyk7CgkJCQl9CgoJCQkJY29udGFpbmVyRWwuYXBwZW5kKHNlZy5lbCk7CgkJCX0KCgkJCXRyRWwuYXBwZW5kKCQoJzx0ZC8+JykuYXBwZW5kKGNvbnRhaW5lckVsKSk7CgkJfQoKCQl0aGlzLmJvb2tlbmRDZWxscyh0ckVsLCAnZXZlbnRTa2VsZXRvbicpOwoKCQlyZXR1cm4gdGFibGVFbDsKCX0sCgoKCS8vIFJlZnJlc2hlcyB0aGUgQ1NTIHRvcC9ib3R0b20gY29vcmRpbmF0ZXMgZm9yIGVhY2ggc2VnbWVudCBlbGVtZW50LiBQcm9iYWJseSBhZnRlciBhIHdpbmRvdyByZXNpemUvem9vbS4KCS8vIFJlcG9zaXRpb25zIGJ1c2luZXNzIGhvdXJzIHNlZ3MgdG9vLCBzbyBub3QganVzdCBmb3IgZXZlbnRzLiBNYXliZSBzaG91bGRuJ3QgYmUgaGVyZS4KCXVwZGF0ZVNlZ1ZlcnRpY2FsczogZnVuY3Rpb24oKSB7CgkJdmFyIGFsbFNlZ3MgPSAodGhpcy5zZWdzIHx8IFtdKS5jb25jYXQodGhpcy5idXNpbmVzc0hvdXJTZWdzIHx8IFtdKTsKCQl2YXIgaTsKCgkJdGhpcy5jb21wdXRlU2VnVmVydGljYWxzKGFsbFNlZ3MpOwoKCQlmb3IgKGkgPSAwOyBpIDwgYWxsU2Vncy5sZW5ndGg7IGkrKykgewoJCQlhbGxTZWdzW2ldLmVsLmNzcygKCQkJCXRoaXMuZ2VuZXJhdGVTZWdWZXJ0aWNhbENzcyhhbGxTZWdzW2ldKQoJCQkpOwoJCX0KCX0sCgoKCS8vIEZvciBlYWNoIHNlZ21lbnQgaW4gYW4gYXJyYXksIGNvbXB1dGVzIGFuZCBhc3NpZ25zIGl0cyB0b3AgYW5kIGJvdHRvbSBwcm9wZXJ0aWVzCgljb21wdXRlU2VnVmVydGljYWxzOiBmdW5jdGlvbihzZWdzKSB7CgkJdmFyIGksIHNlZzsKCgkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJc2VnID0gc2Vnc1tpXTsKCQkJc2VnLnRvcCA9IHRoaXMuY29tcHV0ZURhdGVUb3Aoc2VnLnN0YXJ0LCBzZWcuc3RhcnQpOwoJCQlzZWcuYm90dG9tID0gdGhpcy5jb21wdXRlRGF0ZVRvcChzZWcuZW5kLCBzZWcuc3RhcnQpOwoJCX0KCX0sCgoKCS8vIFJlbmRlcnMgdGhlIEhUTUwgZm9yIGEgc2luZ2xlIGV2ZW50IHNlZ21lbnQncyBkZWZhdWx0IHJlbmRlcmluZwoJZmdTZWdIdG1sOiBmdW5jdGlvbihzZWcsIGRpc2FibGVSZXNpemluZykgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBldmVudCA9IHNlZy5ldmVudDsKCQl2YXIgaXNEcmFnZ2FibGUgPSB2aWV3LmlzRXZlbnREcmFnZ2FibGUoZXZlbnQpOwoJCXZhciBpc1Jlc2l6YWJsZUZyb21TdGFydCA9ICFkaXNhYmxlUmVzaXppbmcgJiYgc2VnLmlzU3RhcnQgJiYgdmlldy5pc0V2ZW50UmVzaXphYmxlRnJvbVN0YXJ0KGV2ZW50KTsKCQl2YXIgaXNSZXNpemFibGVGcm9tRW5kID0gIWRpc2FibGVSZXNpemluZyAmJiBzZWcuaXNFbmQgJiYgdmlldy5pc0V2ZW50UmVzaXphYmxlRnJvbUVuZChldmVudCk7CgkJdmFyIGNsYXNzZXMgPSB0aGlzLmdldFNlZ0NsYXNzZXMoc2VnLCBpc0RyYWdnYWJsZSwgaXNSZXNpemFibGVGcm9tU3RhcnQgfHwgaXNSZXNpemFibGVGcm9tRW5kKTsKCQl2YXIgc2tpbkNzcyA9IGNzc1RvU3RyKHRoaXMuZ2V0RXZlbnRTa2luQ3NzKGV2ZW50KSk7CgkJdmFyIHRpbWVUZXh0OwoJCXZhciBmdWxsVGltZVRleHQ7IC8vIG1vcmUgdmVyYm9zZSB0aW1lIHRleHQuIGZvciB0aGUgcHJpbnQgc3R5bGVzaGVldAoJCXZhciBzdGFydFRpbWVUZXh0OyAvLyBqdXN0IHRoZSBzdGFydCB0aW1lIHRleHQKCgkJY2xhc3Nlcy51bnNoaWZ0KCdmYy10aW1lLWdyaWQtZXZlbnQnLCAnZmMtdi1ldmVudCcpOwoKCQlpZiAodmlldy5pc011bHRpRGF5RXZlbnQoZXZlbnQpKSB7IC8vIGlmIHRoZSBldmVudCBhcHBlYXJzIHRvIHNwYW4gbW9yZSB0aGFuIG9uZSBkYXkuLi4KCQkJLy8gRG9uJ3QgZGlzcGxheSB0aW1lIHRleHQgb24gc2VnbWVudHMgdGhhdCBydW4gZW50aXJlbHkgdGhyb3VnaCBhIGRheS4KCQkJLy8gVGhhdCB3b3VsZCBhcHBlYXIgYXMgbWlkbmlnaHQtbWlkbmlnaHQgYW5kIHdvdWxkIGxvb2sgZHVtYi4KCQkJLy8gT3RoZXJ3aXNlLCBkaXNwbGF5IHRoZSB0aW1lIHRleHQgZm9yIHRoZSAqc2VnbWVudCdzKiB0aW1lcyAobGlrZSA2cG0tbWlkbmlnaHQgb3IgbWlkbmlnaHQtMTBhbSkKCQkJaWYgKHNlZy5pc1N0YXJ0IHx8IHNlZy5pc0VuZCkgewoJCQkJdGltZVRleHQgPSB0aGlzLmdldEV2ZW50VGltZVRleHQoc2VnKTsKCQkJCWZ1bGxUaW1lVGV4dCA9IHRoaXMuZ2V0RXZlbnRUaW1lVGV4dChzZWcsICdMVCcpOwoJCQkJc3RhcnRUaW1lVGV4dCA9IHRoaXMuZ2V0RXZlbnRUaW1lVGV4dChzZWcsIG51bGwsIGZhbHNlKTsgLy8gZGlzcGxheUVuZD1mYWxzZQoJCQl9CgkJfSBlbHNlIHsKCQkJLy8gRGlzcGxheSB0aGUgbm9ybWFsIHRpbWUgdGV4dCBmb3IgdGhlICpldmVudCdzKiB0aW1lcwoJCQl0aW1lVGV4dCA9IHRoaXMuZ2V0RXZlbnRUaW1lVGV4dChldmVudCk7CgkJCWZ1bGxUaW1lVGV4dCA9IHRoaXMuZ2V0RXZlbnRUaW1lVGV4dChldmVudCwgJ0xUJyk7CgkJCXN0YXJ0VGltZVRleHQgPSB0aGlzLmdldEV2ZW50VGltZVRleHQoZXZlbnQsIG51bGwsIGZhbHNlKTsgLy8gZGlzcGxheUVuZD1mYWxzZQoJCX0KCgkJcmV0dXJuICc8YSBjbGFzcz0iJyArIGNsYXNzZXMuam9pbignICcpICsgJyInICsKCQkJKGV2ZW50LnVybCA/CgkJCQknIGhyZWY9IicgKyBodG1sRXNjYXBlKGV2ZW50LnVybCkgKyAnIicgOgoJCQkJJycKCQkJCSkgKwoJCQkoc2tpbkNzcyA/CgkJCQknIHN0eWxlPSInICsgc2tpbkNzcyArICciJyA6CgkJCQknJwoJCQkJKSArCgkJCSc+JyArCgkJCQknPGRpdiBjbGFzcz0iZmMtY29udGVudCI+JyArCgkJCQkJKHRpbWVUZXh0ID8KCQkJCQkJJzxkaXYgY2xhc3M9ImZjLXRpbWUiJyArCgkJCQkJCScgZGF0YS1zdGFydD0iJyArIGh0bWxFc2NhcGUoc3RhcnRUaW1lVGV4dCkgKyAnIicgKwoJCQkJCQknIGRhdGEtZnVsbD0iJyArIGh0bWxFc2NhcGUoZnVsbFRpbWVUZXh0KSArICciJyArCgkJCQkJCSc+JyArCgkJCQkJCQknPHNwYW4+JyArIGh0bWxFc2NhcGUodGltZVRleHQpICsgJzwvc3Bhbj4nICsKCQkJCQkJJzwvZGl2PicgOgoJCQkJCQknJwoJCQkJCQkpICsKCQkJCQkoZXZlbnQudGl0bGUgPwoJCQkJCQknPGRpdiBjbGFzcz0iZmMtdGl0bGUiPicgKwoJCQkJCQkJaHRtbEVzY2FwZShldmVudC50aXRsZSkgKwoJCQkJCQknPC9kaXY+JyA6CgkJCQkJCScnCgkJCQkJCSkgKwoJCQkJJzwvZGl2PicgKwoJCQkJJzxkaXYgY2xhc3M9ImZjLWJnIi8+JyArCgkJCQkvKiBUT0RPOiB3cml0ZSBDU1MgZm9yIHRoaXMKCQkJCShpc1Jlc2l6YWJsZUZyb21TdGFydCA/CgkJCQkJJzxkaXYgY2xhc3M9ImZjLXJlc2l6ZXIgZmMtc3RhcnQtcmVzaXplciIgLz4nIDoKCQkJCQknJwoJCQkJCSkgKwoJCQkJKi8KCQkJCShpc1Jlc2l6YWJsZUZyb21FbmQgPwoJCQkJCSc8ZGl2IGNsYXNzPSJmYy1yZXNpemVyIGZjLWVuZC1yZXNpemVyIiAvPicgOgoJCQkJCScnCgkJCQkJKSArCgkJCSc8L2E+JzsKCX0sCgoKCS8vIEdlbmVyYXRlcyBhbiBvYmplY3Qgd2l0aCBDU1MgcHJvcGVydGllcy92YWx1ZXMgdGhhdCBzaG91bGQgYmUgYXBwbGllZCB0byBhbiBldmVudCBzZWdtZW50IGVsZW1lbnQuCgkvLyBDb250YWlucyBpbXBvcnRhbnQgcG9zaXRpb25pbmctcmVsYXRlZCBwcm9wZXJ0aWVzIHRoYXQgc2hvdWxkIGJlIGFwcGxpZWQgdG8gYW55IGV2ZW50IGVsZW1lbnQsIGN1c3RvbWl6ZWQgb3Igbm90LgoJZ2VuZXJhdGVTZWdQb3NpdGlvbkNzczogZnVuY3Rpb24oc2VnKSB7CgkJdmFyIHNob3VsZE92ZXJsYXAgPSB0aGlzLnZpZXcub3B0KCdzbG90RXZlbnRPdmVybGFwJyk7CgkJdmFyIGJhY2t3YXJkQ29vcmQgPSBzZWcuYmFja3dhcmRDb29yZDsgLy8gdGhlIGxlZnQgc2lkZSBpZiBMVFIuIHRoZSByaWdodCBzaWRlIGlmIFJUTC4gZmxvYXRpbmctcG9pbnQKCQl2YXIgZm9yd2FyZENvb3JkID0gc2VnLmZvcndhcmRDb29yZDsgLy8gdGhlIHJpZ2h0IHNpZGUgaWYgTFRSLiB0aGUgbGVmdCBzaWRlIGlmIFJUTC4gZmxvYXRpbmctcG9pbnQKCQl2YXIgcHJvcHMgPSB0aGlzLmdlbmVyYXRlU2VnVmVydGljYWxDc3Moc2VnKTsgLy8gZ2V0IHRvcC9ib3R0b20gZmlyc3QKCQl2YXIgbGVmdDsgLy8gYW1vdW50IG9mIHNwYWNlIGZyb20gbGVmdCBlZGdlLCBhIGZyYWN0aW9uIG9mIHRoZSB0b3RhbCB3aWR0aAoJCXZhciByaWdodDsgLy8gYW1vdW50IG9mIHNwYWNlIGZyb20gcmlnaHQgZWRnZSwgYSBmcmFjdGlvbiBvZiB0aGUgdG90YWwgd2lkdGgKCgkJaWYgKHNob3VsZE92ZXJsYXApIHsKCQkJLy8gZG91YmxlIHRoZSB3aWR0aCwgYnV0IGRvbid0IGdvIGJleW9uZCB0aGUgbWF4aW11bSBmb3J3YXJkIGNvb3JkaW5hdGUgKDEuMCkKCQkJZm9yd2FyZENvb3JkID0gTWF0aC5taW4oMSwgYmFja3dhcmRDb29yZCArIChmb3J3YXJkQ29vcmQgLSBiYWNrd2FyZENvb3JkKSAqIDIpOwoJCX0KCgkJaWYgKHRoaXMuaXNSVEwpIHsKCQkJbGVmdCA9IDEgLSBmb3J3YXJkQ29vcmQ7CgkJCXJpZ2h0ID0gYmFja3dhcmRDb29yZDsKCQl9CgkJZWxzZSB7CgkJCWxlZnQgPSBiYWNrd2FyZENvb3JkOwoJCQlyaWdodCA9IDEgLSBmb3J3YXJkQ29vcmQ7CgkJfQoKCQlwcm9wcy56SW5kZXggPSBzZWcubGV2ZWwgKyAxOyAvLyBjb252ZXJ0IGZyb20gMC1iYXNlIHRvIDEtYmFzZWQKCQlwcm9wcy5sZWZ0ID0gbGVmdCAqIDEwMCArICclJzsKCQlwcm9wcy5yaWdodCA9IHJpZ2h0ICogMTAwICsgJyUnOwoKCQlpZiAoc2hvdWxkT3ZlcmxhcCAmJiBzZWcuZm9yd2FyZFByZXNzdXJlKSB7CgkJCS8vIGFkZCBwYWRkaW5nIHRvIHRoZSBlZGdlIHNvIHRoYXQgZm9yd2FyZCBzdGFja2VkIGV2ZW50cyBkb24ndCBjb3ZlciB0aGUgcmVzaXplcidzIGljb24KCQkJcHJvcHNbdGhpcy5pc1JUTCA/ICdtYXJnaW5MZWZ0JyA6ICdtYXJnaW5SaWdodCddID0gMTAgKiAyOyAvLyAxMCBpcyBhIGd1ZXNzdGltYXRlIG9mIHRoZSBpY29uJ3Mgd2lkdGgKCQl9CgoJCXJldHVybiBwcm9wczsKCX0sCgoKCS8vIEdlbmVyYXRlcyBhbiBvYmplY3Qgd2l0aCBDU1MgcHJvcGVydGllcyBmb3IgdGhlIHRvcC9ib3R0b20gY29vcmRpbmF0ZXMgb2YgYSBzZWdtZW50IGVsZW1lbnQKCWdlbmVyYXRlU2VnVmVydGljYWxDc3M6IGZ1bmN0aW9uKHNlZykgewoJCXJldHVybiB7CgkJCXRvcDogc2VnLnRvcCwKCQkJYm90dG9tOiAtc2VnLmJvdHRvbSAvLyBmbGlwcGVkIGJlY2F1c2UgbmVlZHMgdG8gYmUgc3BhY2UgYmV5b25kIGJvdHRvbSBlZGdlIG9mIGV2ZW50IGNvbnRhaW5lcgoJCX07Cgl9LAoKCgkvLyBHaXZlbiBhIGZsYXQgYXJyYXkgb2Ygc2VnbWVudHMsIHJldHVybiBhbiBhcnJheSBvZiBzdWItYXJyYXlzLCBncm91cGVkIGJ5IGVhY2ggc2VnbWVudCdzIGNvbAoJZ3JvdXBTZWdDb2xzOiBmdW5jdGlvbihzZWdzKSB7CgkJdmFyIHNlZ0NvbHMgPSBbXTsKCQl2YXIgaTsKCgkJZm9yIChpID0gMDsgaSA8IHRoaXMuY29sQ250OyBpKyspIHsKCQkJc2VnQ29scy5wdXNoKFtdKTsKCQl9CgoJCWZvciAoaSA9IDA7IGkgPCBzZWdzLmxlbmd0aDsgaSsrKSB7CgkJCXNlZ0NvbHNbc2Vnc1tpXS5jb2xdLnB1c2goc2Vnc1tpXSk7CgkJfQoKCQlyZXR1cm4gc2VnQ29sczsKCX0KCn0pOwoKCi8vIEdpdmVuIGFuIGFycmF5IG9mIHNlZ21lbnRzIHRoYXQgYXJlIGFsbCBpbiB0aGUgc2FtZSBjb2x1bW4sIHNldHMgdGhlIGJhY2t3YXJkQ29vcmQgYW5kIGZvcndhcmRDb29yZCBvbiBlYWNoLgovLyBOT1RFOiBBbHNvIHJlb3JkZXJzIHRoZSBnaXZlbiBhcnJheSBieSBkYXRlIQpmdW5jdGlvbiBwbGFjZVNsb3RTZWdzKHNlZ3MpIHsKCXZhciBsZXZlbHM7Cgl2YXIgbGV2ZWwwOwoJdmFyIGk7CgoJc2Vncy5zb3J0KGNvbXBhcmVTZWdzKTsgLy8gb3JkZXIgYnkgZGF0ZQoJbGV2ZWxzID0gYnVpbGRTbG90U2VnTGV2ZWxzKHNlZ3MpOwoJY29tcHV0ZUZvcndhcmRTbG90U2VncyhsZXZlbHMpOwoKCWlmICgobGV2ZWwwID0gbGV2ZWxzWzBdKSkgewoKCQlmb3IgKGkgPSAwOyBpIDwgbGV2ZWwwLmxlbmd0aDsgaSsrKSB7CgkJCWNvbXB1dGVTbG90U2VnUHJlc3N1cmVzKGxldmVsMFtpXSk7CgkJfQoKCQlmb3IgKGkgPSAwOyBpIDwgbGV2ZWwwLmxlbmd0aDsgaSsrKSB7CgkJCWNvbXB1dGVTbG90U2VnQ29vcmRzKGxldmVsMFtpXSwgMCwgMCk7CgkJfQoJfQp9CgoKLy8gQnVpbGRzIGFuIGFycmF5IG9mIHNlZ21lbnRzICJsZXZlbHMiLiBUaGUgZmlyc3QgbGV2ZWwgd2lsbCBiZSB0aGUgbGVmdG1vc3QgdGllciBvZiBzZWdtZW50cyBpZiB0aGUgY2FsZW5kYXIgaXMKLy8gbGVmdC10by1yaWdodCwgb3IgdGhlIHJpZ2h0bW9zdCBpZiB0aGUgY2FsZW5kYXIgaXMgcmlnaHQtdG8tbGVmdC4gQXNzdW1lcyB0aGUgc2VnbWVudHMgYXJlIGFscmVhZHkgb3JkZXJlZCBieSBkYXRlLgpmdW5jdGlvbiBidWlsZFNsb3RTZWdMZXZlbHMoc2VncykgewoJdmFyIGxldmVscyA9IFtdOwoJdmFyIGksIHNlZzsKCXZhciBqOwoKCWZvciAoaT0wOyBpPHNlZ3MubGVuZ3RoOyBpKyspIHsKCQlzZWcgPSBzZWdzW2ldOwoKCQkvLyBnbyB0aHJvdWdoIGFsbCB0aGUgbGV2ZWxzIGFuZCBzdG9wIG9uIHRoZSBmaXJzdCBsZXZlbCB3aGVyZSB0aGVyZSBhcmUgbm8gY29sbGlzaW9ucwoJCWZvciAoaj0wOyBqPGxldmVscy5sZW5ndGg7IGorKykgewoJCQlpZiAoIWNvbXB1dGVTbG90U2VnQ29sbGlzaW9ucyhzZWcsIGxldmVsc1tqXSkubGVuZ3RoKSB7CgkJCQlicmVhazsKCQkJfQoJCX0KCgkJc2VnLmxldmVsID0gajsKCgkJKGxldmVsc1tqXSB8fCAobGV2ZWxzW2pdID0gW10pKS5wdXNoKHNlZyk7Cgl9CgoJcmV0dXJuIGxldmVsczsKfQoKCi8vIEZvciBldmVyeSBzZWdtZW50LCBmaWd1cmUgb3V0IHRoZSBvdGhlciBzZWdtZW50cyB0aGF0IGFyZSBpbiBzdWJzZXF1ZW50Ci8vIGxldmVscyB0aGF0IGFsc28gb2NjdXB5IHRoZSBzYW1lIHZlcnRpY2FsIHNwYWNlLiBBY2N1bXVsYXRlIGluIHNlZy5mb3J3YXJkU2VncwpmdW5jdGlvbiBjb21wdXRlRm9yd2FyZFNsb3RTZWdzKGxldmVscykgewoJdmFyIGksIGxldmVsOwoJdmFyIGosIHNlZzsKCXZhciBrOwoKCWZvciAoaT0wOyBpPGxldmVscy5sZW5ndGg7IGkrKykgewoJCWxldmVsID0gbGV2ZWxzW2ldOwoKCQlmb3IgKGo9MDsgajxsZXZlbC5sZW5ndGg7IGorKykgewoJCQlzZWcgPSBsZXZlbFtqXTsKCgkJCXNlZy5mb3J3YXJkU2VncyA9IFtdOwoJCQlmb3IgKGs9aSsxOyBrPGxldmVscy5sZW5ndGg7IGsrKykgewoJCQkJY29tcHV0ZVNsb3RTZWdDb2xsaXNpb25zKHNlZywgbGV2ZWxzW2tdLCBzZWcuZm9yd2FyZFNlZ3MpOwoJCQl9CgkJfQoJfQp9CgoKLy8gRmlndXJlIG91dCB3aGljaCBwYXRoIGZvcndhcmQgKHZpYSBzZWcuZm9yd2FyZFNlZ3MpIHJlc3VsdHMgaW4gdGhlIGxvbmdlc3QgcGF0aCB1bnRpbAovLyB0aGUgZnVydGhlc3QgZWRnZSBpcyByZWFjaGVkLiBUaGUgbnVtYmVyIG9mIHNlZ21lbnRzIGluIHRoaXMgcGF0aCB3aWxsIGJlIHNlZy5mb3J3YXJkUHJlc3N1cmUKZnVuY3Rpb24gY29tcHV0ZVNsb3RTZWdQcmVzc3VyZXMoc2VnKSB7Cgl2YXIgZm9yd2FyZFNlZ3MgPSBzZWcuZm9yd2FyZFNlZ3M7Cgl2YXIgZm9yd2FyZFByZXNzdXJlID0gMDsKCXZhciBpLCBmb3J3YXJkU2VnOwoKCWlmIChzZWcuZm9yd2FyZFByZXNzdXJlID09PSB1bmRlZmluZWQpIHsgLy8gbm90IGFscmVhZHkgY29tcHV0ZWQKCgkJZm9yIChpPTA7IGk8Zm9yd2FyZFNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJZm9yd2FyZFNlZyA9IGZvcndhcmRTZWdzW2ldOwoKCQkJLy8gZmlndXJlIG91dCB0aGUgY2hpbGQncyBtYXhpbXVtIGZvcndhcmQgcGF0aAoJCQljb21wdXRlU2xvdFNlZ1ByZXNzdXJlcyhmb3J3YXJkU2VnKTsKCgkJCS8vIGVpdGhlciB1c2UgdGhlIGV4aXN0aW5nIG1heGltdW0sIG9yIHVzZSB0aGUgY2hpbGQncyBmb3J3YXJkIHByZXNzdXJlCgkJCS8vIHBsdXMgb25lIChmb3IgdGhlIGZvcndhcmRTZWcgaXRzZWxmKQoJCQlmb3J3YXJkUHJlc3N1cmUgPSBNYXRoLm1heCgKCQkJCWZvcndhcmRQcmVzc3VyZSwKCQkJCTEgKyBmb3J3YXJkU2VnLmZvcndhcmRQcmVzc3VyZQoJCQkpOwoJCX0KCgkJc2VnLmZvcndhcmRQcmVzc3VyZSA9IGZvcndhcmRQcmVzc3VyZTsKCX0KfQoKCi8vIENhbGN1bGF0ZSBzZWcuZm9yd2FyZENvb3JkIGFuZCBzZWcuYmFja3dhcmRDb29yZCBmb3IgdGhlIHNlZ21lbnQsIHdoZXJlIGJvdGggdmFsdWVzIHJhbmdlCi8vIGZyb20gMCB0byAxLiBJZiB0aGUgY2FsZW5kYXIgaXMgbGVmdC10by1yaWdodCwgdGhlIHNlZy5iYWNrd2FyZENvb3JkIG1hcHMgdG8gImxlZnQiIGFuZAovLyBzZWcuZm9yd2FyZENvb3JkIG1hcHMgdG8gInJpZ2h0IiAodmlhIHBlcmNlbnRhZ2UpLiBWaWNlLXZlcnNhIGlmIHRoZSBjYWxlbmRhciBpcyByaWdodC10by1sZWZ0LgovLwovLyBUaGUgc2VnbWVudCBtaWdodCBiZSBwYXJ0IG9mIGEgInNlcmllcyIsIHdoaWNoIG1lYW5zIGNvbnNlY3V0aXZlIHNlZ21lbnRzIHdpdGggdGhlIHNhbWUgcHJlc3N1cmUKLy8gd2hvJ3Mgd2lkdGggaXMgdW5rbm93biB1bnRpbCBhbiBlZGdlIGhhcyBiZWVuIGhpdC4gYHNlcmllc0JhY2t3YXJkUHJlc3N1cmVgIGlzIHRoZSBudW1iZXIgb2YKLy8gc2VnbWVudHMgYmVoaW5kIHRoaXMgb25lIGluIHRoZSBjdXJyZW50IHNlcmllcywgYW5kIGBzZXJpZXNCYWNrd2FyZENvb3JkYCBpcyB0aGUgc3RhcnRpbmcKLy8gY29vcmRpbmF0ZSBvZiB0aGUgZmlyc3Qgc2VnbWVudCBpbiB0aGUgc2VyaWVzLgpmdW5jdGlvbiBjb21wdXRlU2xvdFNlZ0Nvb3JkcyhzZWcsIHNlcmllc0JhY2t3YXJkUHJlc3N1cmUsIHNlcmllc0JhY2t3YXJkQ29vcmQpIHsKCXZhciBmb3J3YXJkU2VncyA9IHNlZy5mb3J3YXJkU2VnczsKCXZhciBpOwoKCWlmIChzZWcuZm9yd2FyZENvb3JkID09PSB1bmRlZmluZWQpIHsgLy8gbm90IGFscmVhZHkgY29tcHV0ZWQKCgkJaWYgKCFmb3J3YXJkU2Vncy5sZW5ndGgpIHsKCgkJCS8vIGlmIHRoZXJlIGFyZSBubyBmb3J3YXJkIHNlZ21lbnRzLCB0aGlzIHNlZ21lbnQgc2hvdWxkIGJ1dHQgdXAgYWdhaW5zdCB0aGUgZWRnZQoJCQlzZWcuZm9yd2FyZENvb3JkID0gMTsKCQl9CgkJZWxzZSB7CgoJCQkvLyBzb3J0IGhpZ2hlc3QgcHJlc3N1cmUgZmlyc3QKCQkJZm9yd2FyZFNlZ3Muc29ydChjb21wYXJlRm9yd2FyZFNsb3RTZWdzKTsKCgkJCS8vIHRoaXMgc2VnbWVudCdzIGZvcndhcmRDb29yZCB3aWxsIGJlIGNhbGN1bGF0ZWQgZnJvbSB0aGUgYmFja3dhcmRDb29yZCBvZiB0aGUKCQkJLy8gaGlnaGVzdC1wcmVzc3VyZSBmb3J3YXJkIHNlZ21lbnQuCgkJCWNvbXB1dGVTbG90U2VnQ29vcmRzKGZvcndhcmRTZWdzWzBdLCBzZXJpZXNCYWNrd2FyZFByZXNzdXJlICsgMSwgc2VyaWVzQmFja3dhcmRDb29yZCk7CgkJCXNlZy5mb3J3YXJkQ29vcmQgPSBmb3J3YXJkU2Vnc1swXS5iYWNrd2FyZENvb3JkOwoJCX0KCgkJLy8gY2FsY3VsYXRlIHRoZSBiYWNrd2FyZENvb3JkIGZyb20gdGhlIGZvcndhcmRDb29yZC4gY29uc2lkZXIgdGhlIHNlcmllcwoJCXNlZy5iYWNrd2FyZENvb3JkID0gc2VnLmZvcndhcmRDb29yZCAtCgkJCShzZWcuZm9yd2FyZENvb3JkIC0gc2VyaWVzQmFja3dhcmRDb29yZCkgLyAvLyBhdmFpbGFibGUgd2lkdGggZm9yIHNlcmllcwoJCQkoc2VyaWVzQmFja3dhcmRQcmVzc3VyZSArIDEpOyAvLyAjIG9mIHNlZ21lbnRzIGluIHRoZSBzZXJpZXMKCgkJLy8gdXNlIHRoaXMgc2VnbWVudCdzIGNvb3JkaW5hdGVzIHRvIGNvbXB1dGVkIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgbGVzcy1wcmVzc3VyaXplZAoJCS8vIGZvcndhcmQgc2VnbWVudHMKCQlmb3IgKGk9MDsgaTxmb3J3YXJkU2Vncy5sZW5ndGg7IGkrKykgewoJCQljb21wdXRlU2xvdFNlZ0Nvb3Jkcyhmb3J3YXJkU2Vnc1tpXSwgMCwgc2VnLmZvcndhcmRDb29yZCk7CgkJfQoJfQp9CgoKLy8gRmluZCBhbGwgdGhlIHNlZ21lbnRzIGluIGBvdGhlclNlZ3NgIHRoYXQgdmVydGljYWxseSBjb2xsaWRlIHdpdGggYHNlZ2AuCi8vIEFwcGVuZCBpbnRvIGFuIG9wdGlvbmFsbHktc3VwcGxpZWQgYHJlc3VsdHNgIGFycmF5IGFuZCByZXR1cm4uCmZ1bmN0aW9uIGNvbXB1dGVTbG90U2VnQ29sbGlzaW9ucyhzZWcsIG90aGVyU2VncywgcmVzdWx0cykgewoJcmVzdWx0cyA9IHJlc3VsdHMgfHwgW107CgoJZm9yICh2YXIgaT0wOyBpPG90aGVyU2Vncy5sZW5ndGg7IGkrKykgewoJCWlmIChpc1Nsb3RTZWdDb2xsaXNpb24oc2VnLCBvdGhlclNlZ3NbaV0pKSB7CgkJCXJlc3VsdHMucHVzaChvdGhlclNlZ3NbaV0pOwoJCX0KCX0KCglyZXR1cm4gcmVzdWx0czsKfQoKCi8vIERvIHRoZXNlIHNlZ21lbnRzIG9jY3VweSB0aGUgc2FtZSB2ZXJ0aWNhbCBzcGFjZT8KZnVuY3Rpb24gaXNTbG90U2VnQ29sbGlzaW9uKHNlZzEsIHNlZzIpIHsKCXJldHVybiBzZWcxLmJvdHRvbSA+IHNlZzIudG9wICYmIHNlZzEudG9wIDwgc2VnMi5ib3R0b207Cn0KCgovLyBBIGNtcCBmdW5jdGlvbiBmb3IgZGV0ZXJtaW5pbmcgd2hpY2ggZm9yd2FyZCBzZWdtZW50IHRvIHJlbHkgb24gbW9yZSB3aGVuIGNvbXB1dGluZyBjb29yZGluYXRlcy4KZnVuY3Rpb24gY29tcGFyZUZvcndhcmRTbG90U2VncyhzZWcxLCBzZWcyKSB7CgkvLyBwdXQgaGlnaGVyLXByZXNzdXJlIGZpcnN0CglyZXR1cm4gc2VnMi5mb3J3YXJkUHJlc3N1cmUgLSBzZWcxLmZvcndhcmRQcmVzc3VyZSB8fAoJCS8vIHB1dCBzZWdtZW50cyB0aGF0IGFyZSBjbG9zZXIgdG8gaW5pdGlhbCBlZGdlIGZpcnN0IChhbmQgZmF2b3Igb25lcyB3aXRoIG5vIGNvb3JkcyB5ZXQpCgkJKHNlZzEuYmFja3dhcmRDb29yZCB8fCAwKSAtIChzZWcyLmJhY2t3YXJkQ29vcmQgfHwgMCkgfHwKCQkvLyBkbyBub3JtYWwgc29ydGluZy4uLgoJCWNvbXBhcmVTZWdzKHNlZzEsIHNlZzIpOwp9Cgo7OwoKLyogQW4gYWJzdHJhY3QgY2xhc3MgZnJvbSB3aGljaCBvdGhlciB2aWV3cyBpbmhlcml0IGZyb20KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgVmlldyA9IGZjLlZpZXcgPSBDbGFzcy5leHRlbmQoewoKCXR5cGU6IG51bGwsIC8vIHN1YmNsYXNzJyB2aWV3IG5hbWUgKHN0cmluZykKCW5hbWU6IG51bGwsIC8vIGRlcHJlY2F0ZWQuIHVzZSBgdHlwZWAgaW5zdGVhZAoJdGl0bGU6IG51bGwsIC8vIHRoZSB0ZXh0IHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIGhlYWRlcidzIHRpdGxlCgoJY2FsZW5kYXI6IG51bGwsIC8vIG93bmVyIENhbGVuZGFyIG9iamVjdAoJb3B0aW9uczogbnVsbCwgLy8gaGFzaCBjb250YWluaW5nIGFsbCBvcHRpb25zLiBhbHJlYWR5IG1lcmdlZCB3aXRoIHZpZXctc3BlY2lmaWMtb3B0aW9ucwoJY29vcmRNYXA6IG51bGwsIC8vIGEgQ29vcmRNYXAgb2JqZWN0IGZvciBjb252ZXJ0aW5nIHBpeGVsIHJlZ2lvbnMgdG8gZGF0ZXMKCWVsOiBudWxsLCAvLyB0aGUgdmlldydzIGNvbnRhaW5pbmcgZWxlbWVudC4gc2V0IGJ5IENhbGVuZGFyCgoJZGlzcGxheWluZzogbnVsbCwgLy8gYSBwcm9taXNlIHJlcHJlc2VudGluZyB0aGUgc3RhdGUgb2YgcmVuZGVyaW5nLiBudWxsIGlmIG5vIHJlbmRlciByZXF1ZXN0ZWQKCWlzU2tlbGV0b25SZW5kZXJlZDogZmFsc2UsCglpc0V2ZW50c1JlbmRlcmVkOiBmYWxzZSwKCgkvLyByYW5nZSB0aGUgdmlldyBpcyBhY3R1YWxseSBkaXNwbGF5aW5nIChtb21lbnRzKQoJc3RhcnQ6IG51bGwsCgllbmQ6IG51bGwsIC8vIGV4Y2x1c2l2ZQoKCS8vIHJhbmdlIHRoZSB2aWV3IGlzIGZvcm1hbGx5IHJlc3BvbnNpYmxlIGZvciAobW9tZW50cykKCS8vIG1heSBiZSBkaWZmZXJlbnQgZnJvbSBzdGFydC9lbmQuIGZvciBleGFtcGxlLCBhIG1vbnRoIHZpZXcgbWlnaHQgaGF2ZSAxc3QtMzFzdCwgZXhjbHVkaW5nIHBhZGRlZCBkYXRlcwoJaW50ZXJ2YWxTdGFydDogbnVsbCwKCWludGVydmFsRW5kOiBudWxsLCAvLyBleGNsdXNpdmUKCWludGVydmFsRHVyYXRpb246IG51bGwsCglpbnRlcnZhbFVuaXQ6IG51bGwsIC8vIG5hbWUgb2YgbGFyZ2VzdCB1bml0IGJlaW5nIGRpc3BsYXllZCwgbGlrZSAibW9udGgiIG9yICJ3ZWVrIgoKCWlzUlRMOiBmYWxzZSwKCWlzU2VsZWN0ZWQ6IGZhbHNlLCAvLyBib29sZWFuIHdoZXRoZXIgYSByYW5nZSBvZiB0aW1lIGlzIHVzZXItc2VsZWN0ZWQgb3Igbm90CgoJLy8gc3ViY2xhc3NlcyBjYW4gb3B0aW9uYWxseSB1c2UgYSBzY3JvbGwgY29udGFpbmVyCglzY3JvbGxlckVsOiBudWxsLCAvLyB0aGUgZWxlbWVudCB0aGF0IHdpbGwgbW9zdCBsaWtlbHkgc2Nyb2xsIHdoZW4gY29udGVudCBpcyB0b28gdGFsbAoJc2Nyb2xsVG9wOiBudWxsLCAvLyBjYWNoZWQgdmVydGljYWwgc2Nyb2xsIHZhbHVlCgoJLy8gY2xhc3NOYW1lcyBzdHlsZWQgYnkganF1aSB0aGVtZXMKCXdpZGdldEhlYWRlckNsYXNzOiBudWxsLAoJd2lkZ2V0Q29udGVudENsYXNzOiBudWxsLAoJaGlnaGxpZ2h0U3RhdGVDbGFzczogbnVsbCwKCgkvLyBmb3IgZGF0ZSB1dGlscywgY29tcHV0ZWQgZnJvbSBvcHRpb25zCgluZXh0RGF5VGhyZXNob2xkOiBudWxsLAoJaXNIaWRkZW5EYXlIYXNoOiBudWxsLAoKCS8vIGRvY3VtZW50IGhhbmRsZXJzLCBib3VuZCB0byBgdGhpc2Agb2JqZWN0Cglkb2N1bWVudE1vdXNlZG93blByb3h5OiBudWxsLCAvLyBUT0RPOiBkb2Vzbid0IHdvcmsgd2l0aCB0b3VjaAoKCgljb25zdHJ1Y3RvcjogZnVuY3Rpb24oY2FsZW5kYXIsIHR5cGUsIG9wdGlvbnMsIGludGVydmFsRHVyYXRpb24pIHsKCgkJdGhpcy5jYWxlbmRhciA9IGNhbGVuZGFyOwoJCXRoaXMudHlwZSA9IHRoaXMubmFtZSA9IHR5cGU7IC8vIC5uYW1lIGlzIGRlcHJlY2F0ZWQKCQl0aGlzLm9wdGlvbnMgPSBvcHRpb25zOwoJCXRoaXMuaW50ZXJ2YWxEdXJhdGlvbiA9IGludGVydmFsRHVyYXRpb24gfHwgbW9tZW50LmR1cmF0aW9uKDEsICdkYXknKTsKCgkJdGhpcy5uZXh0RGF5VGhyZXNob2xkID0gbW9tZW50LmR1cmF0aW9uKHRoaXMub3B0KCduZXh0RGF5VGhyZXNob2xkJykpOwoJCXRoaXMuaW5pdFRoZW1pbmdQcm9wcygpOwoJCXRoaXMuaW5pdEhpZGRlbkRheXMoKTsKCQl0aGlzLmlzUlRMID0gdGhpcy5vcHQoJ2lzUlRMJyk7CgoJCXRoaXMuZG9jdW1lbnRNb3VzZWRvd25Qcm94eSA9IHByb3h5KHRoaXMsICdkb2N1bWVudE1vdXNlZG93bicpOwoKCQl0aGlzLmluaXRpYWxpemUoKTsKCX0sCgoKCS8vIEEgZ29vZCBwbGFjZSBmb3Igc3ViY2xhc3NlcyB0byBpbml0aWFsaXplIG1lbWJlciB2YXJpYWJsZXMKCWluaXRpYWxpemU6IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgY2FuIGltcGxlbWVudAoJfSwKCgoJLy8gUmV0cmlldmVzIGFuIG9wdGlvbiB3aXRoIHRoZSBnaXZlbiBuYW1lCglvcHQ6IGZ1bmN0aW9uKG5hbWUpIHsKCQlyZXR1cm4gdGhpcy5vcHRpb25zW25hbWVdOwoJfSwKCgoJLy8gVHJpZ2dlcnMgaGFuZGxlcnMgdGhhdCBhcmUgdmlldy1yZWxhdGVkLiBNb2RpZmllcyBhcmdzIGJlZm9yZSBwYXNzaW5nIHRvIGNhbGVuZGFyLgoJdHJpZ2dlcjogZnVuY3Rpb24obmFtZSwgdGhpc09iaikgeyAvLyBhcmd1bWVudHMgYmV5b25kIHRoaXNPYmogYXJlIHBhc3NlZCBhbG9uZwoJCXZhciBjYWxlbmRhciA9IHRoaXMuY2FsZW5kYXI7CgoJCXJldHVybiBjYWxlbmRhci50cmlnZ2VyLmFwcGx5KAoJCQljYWxlbmRhciwKCQkJW25hbWUsIHRoaXNPYmogfHwgdGhpc10uY29uY2F0KAoJCQkJQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKSwgLy8gYXJndW1lbnRzIGJleW9uZCB0aGlzT2JqCgkJCQlbIHRoaXMgXSAvLyBhbHdheXMgbWFrZSB0aGUgbGFzdCBhcmd1bWVudCBhIHJlZmVyZW5jZSB0byB0aGUgdmlldy4gVE9ETzogZGVwcmVjYXRlCgkJCSkKCQkpOwoJfSwKCgoJLyogRGF0ZXMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFVwZGF0ZXMgYWxsIGludGVybmFsIGRhdGVzIHRvIGNlbnRlciBhcm91bmQgdGhlIGdpdmVuIGN1cnJlbnQgZGF0ZQoJc2V0RGF0ZTogZnVuY3Rpb24oZGF0ZSkgewoJCXRoaXMuc2V0UmFuZ2UodGhpcy5jb21wdXRlUmFuZ2UoZGF0ZSkpOwoJfSwKCgoJLy8gVXBkYXRlcyBhbGwgaW50ZXJuYWwgZGF0ZXMgZm9yIGRpc3BsYXlpbmcgdGhlIGdpdmVuIHJhbmdlLgoJLy8gRXhwZWN0cyBhbGwgdmFsdWVzIHRvIGJlIG5vcm1hbGl6ZWQgKGxpa2Ugd2hhdCBjb21wdXRlUmFuZ2UgZG9lcykuCglzZXRSYW5nZTogZnVuY3Rpb24ocmFuZ2UpIHsKCQkkLmV4dGVuZCh0aGlzLCByYW5nZSk7CgkJdGhpcy51cGRhdGVUaXRsZSgpOwoJfSwKCgoJLy8gR2l2ZW4gYSBzaW5nbGUgY3VycmVudCBkYXRlLCBwcm9kdWNlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgcmFuZ2UgdG8gZGlzcGxheS4KCS8vIFN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlLiBNdXN0IHJldHVybiBhbGwgcHJvcGVydGllcy4KCWNvbXB1dGVSYW5nZTogZnVuY3Rpb24oZGF0ZSkgewoJCXZhciBpbnRlcnZhbFVuaXQgPSBjb21wdXRlSW50ZXJ2YWxVbml0KHRoaXMuaW50ZXJ2YWxEdXJhdGlvbik7CgkJdmFyIGludGVydmFsU3RhcnQgPSBkYXRlLmNsb25lKCkuc3RhcnRPZihpbnRlcnZhbFVuaXQpOwoJCXZhciBpbnRlcnZhbEVuZCA9IGludGVydmFsU3RhcnQuY2xvbmUoKS5hZGQodGhpcy5pbnRlcnZhbER1cmF0aW9uKTsKCQl2YXIgc3RhcnQsIGVuZDsKCgkJLy8gbm9ybWFsaXplIHRoZSByYW5nZSdzIHRpbWUtYW1iaWd1aXR5CgkJaWYgKC95ZWFyfG1vbnRofHdlZWt8ZGF5Ly50ZXN0KGludGVydmFsVW5pdCkpIHsgLy8gd2hvbGUtZGF5cz8KCQkJaW50ZXJ2YWxTdGFydC5zdHJpcFRpbWUoKTsKCQkJaW50ZXJ2YWxFbmQuc3RyaXBUaW1lKCk7CgkJfQoJCWVsc2UgeyAvLyBuZWVkcyB0byBoYXZlIGEgdGltZT8KCQkJaWYgKCFpbnRlcnZhbFN0YXJ0Lmhhc1RpbWUoKSkgewoJCQkJaW50ZXJ2YWxTdGFydCA9IHRoaXMuY2FsZW5kYXIucmV6b25lRGF0ZShpbnRlcnZhbFN0YXJ0KTsgLy8gY29udmVydCB0byBjdXJyZW50IHRpbWV6b25lLCB3aXRoIDAwOjAwCgkJCX0KCQkJaWYgKCFpbnRlcnZhbEVuZC5oYXNUaW1lKCkpIHsKCQkJCWludGVydmFsRW5kID0gdGhpcy5jYWxlbmRhci5yZXpvbmVEYXRlKGludGVydmFsRW5kKTsgLy8gY29udmVydCB0byBjdXJyZW50IHRpbWV6b25lLCB3aXRoIDAwOjAwCgkJCX0KCQl9CgoJCXN0YXJ0ID0gaW50ZXJ2YWxTdGFydC5jbG9uZSgpOwoJCXN0YXJ0ID0gdGhpcy5za2lwSGlkZGVuRGF5cyhzdGFydCk7CgkJZW5kID0gaW50ZXJ2YWxFbmQuY2xvbmUoKTsKCQllbmQgPSB0aGlzLnNraXBIaWRkZW5EYXlzKGVuZCwgLTEsIHRydWUpOyAvLyBleGNsdXNpdmVseSBtb3ZlIGJhY2t3YXJkcwoKCQlyZXR1cm4gewoJCQlpbnRlcnZhbFVuaXQ6IGludGVydmFsVW5pdCwKCQkJaW50ZXJ2YWxTdGFydDogaW50ZXJ2YWxTdGFydCwKCQkJaW50ZXJ2YWxFbmQ6IGludGVydmFsRW5kLAoJCQlzdGFydDogc3RhcnQsCgkJCWVuZDogZW5kCgkJfTsKCX0sCgoKCS8vIENvbXB1dGVzIHRoZSBuZXcgZGF0ZSB3aGVuIHRoZSB1c2VyIGhpdHMgdGhlIHByZXYgYnV0dG9uLCBnaXZlbiB0aGUgY3VycmVudCBkYXRlCgljb21wdXRlUHJldkRhdGU6IGZ1bmN0aW9uKGRhdGUpIHsKCQlyZXR1cm4gdGhpcy5tYXNzYWdlQ3VycmVudERhdGUoCgkJCWRhdGUuY2xvbmUoKS5zdGFydE9mKHRoaXMuaW50ZXJ2YWxVbml0KS5zdWJ0cmFjdCh0aGlzLmludGVydmFsRHVyYXRpb24pLCAtMQoJCSk7Cgl9LAoKCgkvLyBDb21wdXRlcyB0aGUgbmV3IGRhdGUgd2hlbiB0aGUgdXNlciBoaXRzIHRoZSBuZXh0IGJ1dHRvbiwgZ2l2ZW4gdGhlIGN1cnJlbnQgZGF0ZQoJY29tcHV0ZU5leHREYXRlOiBmdW5jdGlvbihkYXRlKSB7CgkJcmV0dXJuIHRoaXMubWFzc2FnZUN1cnJlbnREYXRlKAoJCQlkYXRlLmNsb25lKCkuc3RhcnRPZih0aGlzLmludGVydmFsVW5pdCkuYWRkKHRoaXMuaW50ZXJ2YWxEdXJhdGlvbikKCQkpOwoJfSwKCgoJLy8gR2l2ZW4gYW4gYXJiaXRyYXJpbHkgY2FsY3VsYXRlZCBjdXJyZW50IGRhdGUgb2YgdGhlIGNhbGVuZGFyLCByZXR1cm5zIGEgZGF0ZSB0aGF0IGlzIGVuc3VyZWQgdG8gYmUgY29tcGxldGVseQoJLy8gdmlzaWJsZS4gYGRpcmVjdGlvbmAgaXMgb3B0aW9uYWwgYW5kIGluZGljYXRlcyB3aGljaCBkaXJlY3Rpb24gdGhlIGN1cnJlbnQgZGF0ZSB3YXMgYmVpbmcKCS8vIGluY3JlbWVudGVkIG9yIGRlY3JlbWVudGVkICgxIG9yIC0xKS4KCW1hc3NhZ2VDdXJyZW50RGF0ZTogZnVuY3Rpb24oZGF0ZSwgZGlyZWN0aW9uKSB7CgkJaWYgKHRoaXMuaW50ZXJ2YWxEdXJhdGlvbi5hcygnZGF5cycpIDw9IDEpIHsgLy8gaWYgdGhlIHZpZXcgZGlzcGxheXMgYSBzaW5nbGUgZGF5IG9yIHNtYWxsZXIKCQkJaWYgKHRoaXMuaXNIaWRkZW5EYXkoZGF0ZSkpIHsKCQkJCWRhdGUgPSB0aGlzLnNraXBIaWRkZW5EYXlzKGRhdGUsIGRpcmVjdGlvbik7CgkJCQlkYXRlLnN0YXJ0T2YoJ2RheScpOwoJCQl9CgkJfQoKCQlyZXR1cm4gZGF0ZTsKCX0sCgoKCS8qIFRpdGxlIGFuZCBEYXRlIEZvcm1hdHRpbmcKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFNldHMgdGhlIHZpZXcncyB0aXRsZSBwcm9wZXJ0eSB0byB0aGUgbW9zdCB1cGRhdGVkIGNvbXB1dGVkIHZhbHVlCgl1cGRhdGVUaXRsZTogZnVuY3Rpb24oKSB7CgkJdGhpcy50aXRsZSA9IHRoaXMuY29tcHV0ZVRpdGxlKCk7Cgl9LAoKCgkvLyBDb21wdXRlcyB3aGF0IHRoZSB0aXRsZSBhdCB0aGUgdG9wIG9mIHRoZSBjYWxlbmRhciBzaG91bGQgYmUgZm9yIHRoaXMgdmlldwoJY29tcHV0ZVRpdGxlOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5mb3JtYXRSYW5nZSgKCQkJeyBzdGFydDogdGhpcy5pbnRlcnZhbFN0YXJ0LCBlbmQ6IHRoaXMuaW50ZXJ2YWxFbmQgfSwKCQkJdGhpcy5vcHQoJ3RpdGxlRm9ybWF0JykgfHwgdGhpcy5jb21wdXRlVGl0bGVGb3JtYXQoKSwKCQkJdGhpcy5vcHQoJ3RpdGxlUmFuZ2VTZXBhcmF0b3InKQoJCSk7Cgl9LAoKCgkvLyBHZW5lcmF0ZXMgdGhlIGZvcm1hdCBzdHJpbmcgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgdGl0bGUgZm9yIHRoZSBjdXJyZW50IGRhdGUgcmFuZ2UuCgkvLyBBdHRlbXB0cyB0byBjb21wdXRlIHRoZSBtb3N0IGFwcHJvcHJpYXRlIGZvcm1hdCBpZiBub3QgZXhwbGljaXRseSBzcGVjaWZpZWQgd2l0aCBgdGl0bGVGb3JtYXRgLgoJY29tcHV0ZVRpdGxlRm9ybWF0OiBmdW5jdGlvbigpIHsKCQlpZiAodGhpcy5pbnRlcnZhbFVuaXQgPT0gJ3llYXInKSB7CgkJCXJldHVybiAnWVlZWSc7CgkJfQoJCWVsc2UgaWYgKHRoaXMuaW50ZXJ2YWxVbml0ID09ICdtb250aCcpIHsKCQkJcmV0dXJuIHRoaXMub3B0KCdtb250aFllYXJGb3JtYXQnKTsgLy8gbGlrZSAiU2VwdGVtYmVyIDIwMTQiCgkJfQoJCWVsc2UgaWYgKHRoaXMuaW50ZXJ2YWxEdXJhdGlvbi5hcygnZGF5cycpID4gMSkgewoJCQlyZXR1cm4gJ2xsJzsgLy8gbXVsdGktZGF5IHJhbmdlLiBzaG9ydGVyLCBsaWtlICJTZXAgOSAtIDEwIDIwMTQiCgkJfQoJCWVsc2UgewoJCQlyZXR1cm4gJ0xMJzsgLy8gb25lIGRheS4gbG9uZ2VyLCBsaWtlICJTZXB0ZW1iZXIgOSAyMDE0IgoJCX0KCX0sCgoKCS8vIFV0aWxpdHkgZm9yIGZvcm1hdHRpbmcgYSByYW5nZS4gQWNjZXB0cyBhIHJhbmdlIG9iamVjdCwgZm9ybWF0dGluZyBzdHJpbmcsIGFuZCBvcHRpb25hbCBzZXBhcmF0b3IuCgkvLyBEaXNwbGF5cyBhbGwtZGF5IHJhbmdlcyBuYXR1cmFsbHksIHdpdGggYW4gaW5jbHVzaXZlIGVuZC4gVGFrZXMgdGhlIGN1cnJlbnQgaXNSVEwgaW50byBhY2NvdW50LgoJZm9ybWF0UmFuZ2U6IGZ1bmN0aW9uKHJhbmdlLCBmb3JtYXRTdHIsIHNlcGFyYXRvcikgewoJCXZhciBlbmQgPSByYW5nZS5lbmQ7CgoJCWlmICghZW5kLmhhc1RpbWUoKSkgeyAvLyBhbGwtZGF5PwoJCQllbmQgPSBlbmQuY2xvbmUoKS5zdWJ0cmFjdCgxKTsgLy8gY29udmVydCB0byBpbmNsdXNpdmUuIGxhc3QgbXMgb2YgcHJldmlvdXMgZGF5CgkJfQoKCQlyZXR1cm4gZm9ybWF0UmFuZ2UocmFuZ2Uuc3RhcnQsIGVuZCwgZm9ybWF0U3RyLCBzZXBhcmF0b3IsIHRoaXMub3B0KCdpc1JUTCcpKTsKCX0sCgoKCS8qIFJlbmRlcmluZwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gU2V0cyB0aGUgY29udGFpbmVyIGVsZW1lbnQgdGhhdCB0aGUgdmlldyBzaG91bGQgcmVuZGVyIGluc2lkZSBvZi4KCS8vIERvZXMgb3RoZXIgRE9NLXJlbGF0ZWQgaW5pdGlhbGl6YXRpb25zLgoJc2V0RWxlbWVudDogZnVuY3Rpb24oZWwpIHsKCQl0aGlzLmVsID0gZWw7CgkJdGhpcy5iaW5kR2xvYmFsSGFuZGxlcnMoKTsKCX0sCgoKCS8vIFJlbW92ZXMgdGhlIHZpZXcncyBjb250YWluZXIgZWxlbWVudCBmcm9tIHRoZSBET00sIGNsZWFyaW5nIGFueSBjb250ZW50IGJlZm9yZWhhbmQuCgkvLyBVbmRvZXMgYW55IG90aGVyIERPTS1yZWxhdGVkIGF0dGFjaG1lbnRzLgoJcmVtb3ZlRWxlbWVudDogZnVuY3Rpb24oKSB7CgkJdGhpcy5jbGVhcigpOyAvLyBjbGVhcnMgYWxsIGNvbnRlbnQKCgkJLy8gY2xlYW4gdXAgdGhlIHNrZWxldG9uCgkJaWYgKHRoaXMuaXNTa2VsZXRvblJlbmRlcmVkKSB7CgkJCXRoaXMudW5yZW5kZXJTa2VsZXRvbigpOwoJCQl0aGlzLmlzU2tlbGV0b25SZW5kZXJlZCA9IGZhbHNlOwoJCX0KCgkJdGhpcy51bmJpbmRHbG9iYWxIYW5kbGVycygpOwoKCQl0aGlzLmVsLnJlbW92ZSgpOwoKCQkvLyBOT1RFOiBkb24ndCBudWxsLW91dCB0aGlzLmVsIGluIGNhc2UgdGhlIFZpZXcgd2FzIGRlc3Ryb3llZCB3aXRoaW4gYW4gQVBJIGNhbGxiYWNrLgoJCS8vIFdlIGRvbid0IG51bGwtb3V0IHRoZSBWaWV3J3Mgb3RoZXIgalF1ZXJ5IGVsZW1lbnQgcmVmZXJlbmNlcyB1cG9uIGRlc3Ryb3ksCgkJLy8gIHNvIHdlIHNob3VsZG4ndCBraWxsIHRoaXMuZWwgZWl0aGVyLgoJfSwKCgoJLy8gRG9lcyBldmVyeXRoaW5nIG5lY2Vzc2FyeSB0byBkaXNwbGF5IHRoZSB2aWV3IGNlbnRlcmVkIGFyb3VuZCB0aGUgZ2l2ZW4gZGF0ZS4KCS8vIERvZXMgZXZlcnkgdHlwZSBvZiByZW5kZXJpbmcgRVhDRVBUIHJlbmRlcmluZyBldmVudHMuCgkvLyBJcyBhc3ljaHJvbm91cyBhbmQgcmV0dXJucyBhIHByb21pc2UuCglkaXNwbGF5OiBmdW5jdGlvbihkYXRlKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCQl2YXIgc2Nyb2xsU3RhdGUgPSBudWxsOwoKCQlpZiAodGhpcy5kaXNwbGF5aW5nKSB7CgkJCXNjcm9sbFN0YXRlID0gdGhpcy5xdWVyeVNjcm9sbCgpOwoJCX0KCgkJcmV0dXJuIHRoaXMuY2xlYXIoKS50aGVuKGZ1bmN0aW9uKCkgeyAvLyBjbGVhciB0aGUgY29udGVudCBmaXJzdCAoYXN5bmMpCgkJCXJldHVybiAoCgkJCQlfdGhpcy5kaXNwbGF5aW5nID0KCQkJCQkkLndoZW4oX3RoaXMuZGlzcGxheVZpZXcoZGF0ZSkpIC8vIGRpc3BsYXlWaWV3IG1pZ2h0IHJldHVybiBhIHByb21pc2UKCQkJCQkJLnRoZW4oZnVuY3Rpb24oKSB7CgkJCQkJCQlfdGhpcy5mb3JjZVNjcm9sbChfdGhpcy5jb21wdXRlSW5pdGlhbFNjcm9sbChzY3JvbGxTdGF0ZSkpOwoJCQkJCQkJX3RoaXMudHJpZ2dlclJlbmRlcigpOwoJCQkJCQl9KQoJCQkpOwoJCX0pOwoJfSwKCgoJLy8gRG9lcyBldmVyeXRoaW5nIG5lY2Vzc2FyeSB0byBjbGVhciB0aGUgY29udGVudCBvZiB0aGUgdmlldy4KCS8vIENsZWFycyBkYXRlcyBhbmQgZXZlbnRzLiBEb2VzIG5vdCBjbGVhciB0aGUgc2tlbGV0b24uCgkvLyBJcyBhc3ljaHJvbm91cyBhbmQgcmV0dXJucyBhIHByb21pc2UuCgljbGVhcjogZnVuY3Rpb24oKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCQl2YXIgZGlzcGxheWluZyA9IHRoaXMuZGlzcGxheWluZzsKCgkJaWYgKGRpc3BsYXlpbmcpIHsgLy8gcHJldmlvdXNseSBkaXNwbGF5ZWQsIG9yIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRpc3BsYXllZD8KCQkJcmV0dXJuIGRpc3BsYXlpbmcudGhlbihmdW5jdGlvbigpIHsgLy8gd2FpdCBmb3IgdGhlIGRpc3BsYXkgdG8gZmluaXNoCgkJCQlfdGhpcy5kaXNwbGF5aW5nID0gbnVsbDsKCQkJCV90aGlzLmNsZWFyRXZlbnRzKCk7CgkJCQlyZXR1cm4gX3RoaXMuY2xlYXJWaWV3KCk7IC8vIG1pZ2h0IHJldHVybiBhIHByb21pc2UuIGNoYWluIGl0CgkJCX0pOwoJCX0KCQllbHNlIHsKCQkJcmV0dXJuICQud2hlbigpOyAvLyBhbiBpbW1lZGlhdGVseS1yZXNvbHZlZCBwcm9taXNlCgkJfQoJfSwKCgoJLy8gRGlzcGxheXMgdGhlIHZpZXcncyBub24tZXZlbnQgY29udGVudCwgc3VjaCBhcyBkYXRlLXJlbGF0ZWQgY29udGVudCBvciBhbnl0aGluZyByZXF1aXJlZCBieSBldmVudHMuCgkvLyBSZW5kZXJzIHRoZSB2aWV3J3Mgbm9uLWNvbnRlbnQgc2tlbGV0b24gaWYgbmVjZXNzYXJ5LgoJLy8gQ2FuIGJlIGFzeW5jaHJvbm91cyBhbmQgcmV0dXJuIGEgcHJvbWlzZS4KCWRpc3BsYXlWaWV3OiBmdW5jdGlvbihkYXRlKSB7CgkJaWYgKCF0aGlzLmlzU2tlbGV0b25SZW5kZXJlZCkgewoJCQl0aGlzLnJlbmRlclNrZWxldG9uKCk7CgkJCXRoaXMuaXNTa2VsZXRvblJlbmRlcmVkID0gdHJ1ZTsKCQl9CgkJdGhpcy5zZXREYXRlKGRhdGUpOwoJCWlmICh0aGlzLnJlbmRlcikgewoJCQl0aGlzLnJlbmRlcigpOyAvLyBUT0RPOiBkZXByZWNhdGUKCQl9CgkJdGhpcy5yZW5kZXJEYXRlcygpOwoJCXRoaXMudXBkYXRlU2l6ZSgpOwoJCXRoaXMucmVuZGVyQnVzaW5lc3NIb3VycygpOyAvLyBtaWdodCBuZWVkIGNvb3JkaW5hdGVzLCBzbyBzaG91bGQgZ28gYWZ0ZXIgdXBkYXRlU2l6ZSgpCgl9LAoKCgkvLyBVbnJlbmRlcnMgdGhlIHZpZXcgY29udGVudCB0aGF0IHdhcyByZW5kZXJlZCBpbiBkaXNwbGF5Vmlldy4KCS8vIENhbiBiZSBhc3luY2hyb25vdXMgYW5kIHJldHVybiBhIHByb21pc2UuCgljbGVhclZpZXc6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5zZWxlY3QoKTsKCQl0aGlzLnRyaWdnZXJVbnJlbmRlcigpOwoJCXRoaXMudW5yZW5kZXJCdXNpbmVzc0hvdXJzKCk7CgkJdGhpcy51bnJlbmRlckRhdGVzKCk7CgkJaWYgKHRoaXMuZGVzdHJveSkgewoJCQl0aGlzLmRlc3Ryb3koKTsgLy8gVE9ETzogZGVwcmVjYXRlCgkJfQoJfSwKCgoJLy8gUmVuZGVycyB0aGUgYmFzaWMgc3RydWN0dXJlIG9mIHRoZSB2aWV3IGJlZm9yZSBhbnkgY29udGVudCBpcyByZW5kZXJlZAoJcmVuZGVyU2tlbGV0b246IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLy8gVW5yZW5kZXJzIHRoZSBiYXNpYyBzdHJ1Y3R1cmUgb2YgdGhlIHZpZXcKCXVucmVuZGVyU2tlbGV0b246IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLy8gUmVuZGVycyB0aGUgdmlldydzIGRhdGUtcmVsYXRlZCBjb250ZW50IChsaWtlIGNlbGxzIHRoYXQgcmVwcmVzZW50IGRheXMvdGltZXMpLgoJLy8gQXNzdW1lcyBzZXRSYW5nZSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCBhbmQgdGhlIHNrZWxldG9uIGhhcyBhbHJlYWR5IGJlZW4gcmVuZGVyZWQuCglyZW5kZXJEYXRlczogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50Cgl9LAoKCgkvLyBVbnJlbmRlcnMgdGhlIHZpZXcncyBkYXRlLXJlbGF0ZWQgY29udGVudAoJdW5yZW5kZXJEYXRlczogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUKCX0sCgoKCS8vIFJlbmRlcnMgYnVzaW5lc3MtaG91cnMgb250byB0aGUgdmlldy4gQXNzdW1lcyB1cGRhdGVTaXplIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkLgoJcmVuZGVyQnVzaW5lc3NIb3VyczogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50Cgl9LAoKCgkvLyBVbnJlbmRlcnMgcHJldmlvdXNseS1yZW5kZXJlZCBidXNpbmVzcy1ob3VycwoJdW5yZW5kZXJCdXNpbmVzc0hvdXJzOiBmdW5jdGlvbigpIHsKCQkvLyBzdWJjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQKCX0sCgoKCS8vIFNpZ25hbHMgdGhhdCB0aGUgdmlldydzIGNvbnRlbnQgaGFzIGJlZW4gcmVuZGVyZWQKCXRyaWdnZXJSZW5kZXI6IGZ1bmN0aW9uKCkgewoJCXRoaXMudHJpZ2dlcigndmlld1JlbmRlcicsIHRoaXMsIHRoaXMsIHRoaXMuZWwpOwoJfSwKCgoJLy8gU2lnbmFscyB0aGF0IHRoZSB2aWV3J3MgY29udGVudCBpcyBhYm91dCB0byBiZSB1bnJlbmRlcmVkCgl0cmlnZ2VyVW5yZW5kZXI6IGZ1bmN0aW9uKCkgewoJCXRoaXMudHJpZ2dlcigndmlld0Rlc3Ryb3knLCB0aGlzLCB0aGlzLCB0aGlzLmVsKTsKCX0sCgoKCS8vIEJpbmRzIERPTSBoYW5kbGVycyB0byBlbGVtZW50cyB0aGF0IHJlc2lkZSBvdXRzaWRlIHRoZSB2aWV3IGNvbnRhaW5lciwgc3VjaCBhcyB0aGUgZG9jdW1lbnQKCWJpbmRHbG9iYWxIYW5kbGVyczogZnVuY3Rpb24oKSB7CgkJJChkb2N1bWVudCkub24oJ21vdXNlZG93bicsIHRoaXMuZG9jdW1lbnRNb3VzZWRvd25Qcm94eSk7Cgl9LAoKCgkvLyBVbmJpbmRzIERPTSBoYW5kbGVycyBmcm9tIGVsZW1lbnRzIHRoYXQgcmVzaWRlIG91dHNpZGUgdGhlIHZpZXcgY29udGFpbmVyCgl1bmJpbmRHbG9iYWxIYW5kbGVyczogZnVuY3Rpb24oKSB7CgkJJChkb2N1bWVudCkub2ZmKCdtb3VzZWRvd24nLCB0aGlzLmRvY3VtZW50TW91c2Vkb3duUHJveHkpOwoJfSwKCgoJLy8gSW5pdGlhbGl6ZXMgaW50ZXJuYWwgdmFyaWFibGVzIHJlbGF0ZWQgdG8gdGhlbWluZwoJaW5pdFRoZW1pbmdQcm9wczogZnVuY3Rpb24oKSB7CgkJdmFyIHRtID0gdGhpcy5vcHQoJ3RoZW1lJykgPyAndWknIDogJ2ZjJzsKCgkJdGhpcy53aWRnZXRIZWFkZXJDbGFzcyA9IHRtICsgJy13aWRnZXQtaGVhZGVyJzsKCQl0aGlzLndpZGdldENvbnRlbnRDbGFzcyA9IHRtICsgJy13aWRnZXQtY29udGVudCc7CgkJdGhpcy5oaWdobGlnaHRTdGF0ZUNsYXNzID0gdG0gKyAnLXN0YXRlLWhpZ2hsaWdodCc7Cgl9LAoKCgkvKiBEaW1lbnNpb25zCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZWZyZXNoZXMgYW55dGhpbmcgZGVwZW5kYW50IHVwb24gc2l6aW5nIG9mIHRoZSBjb250YWluZXIgZWxlbWVudCBvZiB0aGUgZ3JpZAoJdXBkYXRlU2l6ZTogZnVuY3Rpb24oaXNSZXNpemUpIHsKCQl2YXIgc2Nyb2xsU3RhdGU7CgoJCWlmIChpc1Jlc2l6ZSkgewoJCQlzY3JvbGxTdGF0ZSA9IHRoaXMucXVlcnlTY3JvbGwoKTsKCQl9CgoJCXRoaXMudXBkYXRlSGVpZ2h0KGlzUmVzaXplKTsKCQl0aGlzLnVwZGF0ZVdpZHRoKGlzUmVzaXplKTsKCgkJaWYgKGlzUmVzaXplKSB7CgkJCXRoaXMuc2V0U2Nyb2xsKHNjcm9sbFN0YXRlKTsKCQl9Cgl9LAoKCgkvLyBSZWZyZXNoZXMgdGhlIGhvcml6b250YWwgZGltZW5zaW9ucyBvZiB0aGUgY2FsZW5kYXIKCXVwZGF0ZVdpZHRoOiBmdW5jdGlvbihpc1Jlc2l6ZSkgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLy8gUmVmcmVzaGVzIHRoZSB2ZXJ0aWNhbCBkaW1lbnNpb25zIG9mIHRoZSBjYWxlbmRhcgoJdXBkYXRlSGVpZ2h0OiBmdW5jdGlvbihpc1Jlc2l6ZSkgewoJCXZhciBjYWxlbmRhciA9IHRoaXMuY2FsZW5kYXI7IC8vIHdlIHBvbGwgdGhlIGNhbGVuZGFyIGZvciBoZWlnaHQgaW5mb3JtYXRpb24KCgkJdGhpcy5zZXRIZWlnaHQoCgkJCWNhbGVuZGFyLmdldFN1Z2dlc3RlZFZpZXdIZWlnaHQoKSwKCQkJY2FsZW5kYXIuaXNIZWlnaHRBdXRvKCkKCQkpOwoJfSwKCgoJLy8gVXBkYXRlcyB0aGUgdmVydGljYWwgZGltZW5zaW9ucyBvZiB0aGUgY2FsZW5kYXIgdG8gdGhlIHNwZWNpZmllZCBoZWlnaHQuCgkvLyBpZiBgaXNBdXRvYCBpcyBzZXQgdG8gdHJ1ZSwgaGVpZ2h0IGJlY29tZXMgbWVyZWx5IGEgc3VnZ2VzdGlvbiBhbmQgdGhlIHZpZXcgc2hvdWxkIHVzZSBpdHMgIm5hdHVyYWwiIGhlaWdodC4KCXNldEhlaWdodDogZnVuY3Rpb24oaGVpZ2h0LCBpc0F1dG8pIHsKCQkvLyBzdWJjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQKCX0sCgoKCS8qIFNjcm9sbGVyCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBHaXZlbiB0aGUgdG90YWwgaGVpZ2h0IG9mIHRoZSB2aWV3LCByZXR1cm4gdGhlIG51bWJlciBvZiBwaXhlbHMgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIHNjcm9sbGVyLgoJLy8gVXRpbGl0eSBmb3Igc3ViY2xhc3Nlcy4KCWNvbXB1dGVTY3JvbGxlckhlaWdodDogZnVuY3Rpb24odG90YWxIZWlnaHQpIHsKCQl2YXIgc2Nyb2xsZXJFbCA9IHRoaXMuc2Nyb2xsZXJFbDsKCQl2YXIgYm90aDsKCQl2YXIgb3RoZXJIZWlnaHQ7IC8vIGN1bXVsYXRpdmUgaGVpZ2h0IG9mIGV2ZXJ5dGhpbmcgdGhhdCBpcyBub3QgdGhlIHNjcm9sbGVyRWwgaW4gdGhlIHZpZXcgKGhlYWRlcitib3JkZXJzKQoKCQlib3RoID0gdGhpcy5lbC5hZGQoc2Nyb2xsZXJFbCk7CgoJCS8vIGZ1Y2tpbiBJRTgvOS8xMC8xMSBzb21ldGltZXMgcmV0dXJucyAwIGZvciBkaW1lbnNpb25zLiB0aGlzIHdlaXJkIGhhY2sgd2FzIHRoZSBvbmx5IHRoaW5nIHRoYXQgd29ya2VkCgkJYm90aC5jc3MoewoJCQlwb3NpdGlvbjogJ3JlbGF0aXZlJywgLy8gY2F1c2UgYSByZWZsb3csIHdoaWNoIHdpbGwgZm9yY2UgZnJlc2ggZGltZW5zaW9uIHJlY2FsY3VsYXRpb24KCQkJbGVmdDogLTEgLy8gZW5zdXJlIHJlZmxvdyBpbiBjYXNlIHRoZSBlbCB3YXMgYWxyZWFkeSByZWxhdGl2ZS4gbmVnYXRpdmUgaXMgbGVzcyBsaWtlbHkgdG8gY2F1c2UgbmV3IHNjcm9sbAoJCX0pOwoJCW90aGVySGVpZ2h0ID0gdGhpcy5lbC5vdXRlckhlaWdodCgpIC0gc2Nyb2xsZXJFbC5oZWlnaHQoKTsgLy8gZ3JhYiB0aGUgZGltZW5zaW9ucwoJCWJvdGguY3NzKHsgcG9zaXRpb246ICcnLCBsZWZ0OiAnJyB9KTsgLy8gdW5kbyBoYWNrCgoJCXJldHVybiB0b3RhbEhlaWdodCAtIG90aGVySGVpZ2h0OwoJfSwKCgoJLy8gQ29tcHV0ZXMgdGhlIGluaXRpYWwgcHJlLWNvbmZpZ3VyZWQgc2Nyb2xsIHN0YXRlIHByaW9yIHRvIGFsbG93aW5nIHRoZSB1c2VyIHRvIGNoYW5nZSBpdC4KCS8vIEdpdmVuIHRoZSBzY3JvbGwgc3RhdGUgZnJvbSB0aGUgcHJldmlvdXMgcmVuZGVyaW5nLiBJZiBmaXJzdCB0aW1lIHJlbmRlcmluZywgZ2l2ZW4gbnVsbC4KCWNvbXB1dGVJbml0aWFsU2Nyb2xsOiBmdW5jdGlvbihwcmV2aW91c1Njcm9sbFN0YXRlKSB7CgkJcmV0dXJuIDA7Cgl9LAoKCgkvLyBSZXRyaWV2ZXMgdGhlIHZpZXcncyBjdXJyZW50IG5hdHVyYWwgc2Nyb2xsIHN0YXRlLiBDYW4gcmV0dXJuIGFuIGFyYml0cmFyeSBmb3JtYXQuCglxdWVyeVNjcm9sbDogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMuc2Nyb2xsZXJFbCkgewoJCQlyZXR1cm4gdGhpcy5zY3JvbGxlckVsLnNjcm9sbFRvcCgpOyAvLyBvcGVyYXRlcyBvbiBzY3JvbGxlckVsIGJ5IGRlZmF1bHQKCQl9Cgl9LAoKCgkvLyBTZXRzIHRoZSB2aWV3J3Mgc2Nyb2xsIHN0YXRlLiBXaWxsIGFjY2VwdCB0aGUgc2FtZSBmb3JtYXQgY29tcHV0ZUluaXRpYWxTY3JvbGwgYW5kIHF1ZXJ5U2Nyb2xsIHByb2R1Y2UuCglzZXRTY3JvbGw6IGZ1bmN0aW9uKHNjcm9sbFN0YXRlKSB7CgkJaWYgKHRoaXMuc2Nyb2xsZXJFbCkgewoJCQlyZXR1cm4gdGhpcy5zY3JvbGxlckVsLnNjcm9sbFRvcChzY3JvbGxTdGF0ZSk7IC8vIG9wZXJhdGVzIG9uIHNjcm9sbGVyRWwgYnkgZGVmYXVsdAoJCX0KCX0sCgoKCS8vIFNldHMgdGhlIHNjcm9sbCBzdGF0ZSwgbWFraW5nIHN1cmUgdG8gb3ZlcmNvbWUgYW55IHByZWRlZmluZWQgc2Nyb2xsIHZhbHVlIHRoZSBicm93c2VyIGhhcyBpbiBtaW5kCglmb3JjZVNjcm9sbDogZnVuY3Rpb24oc2Nyb2xsU3RhdGUpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoKCQl0aGlzLnNldFNjcm9sbChzY3JvbGxTdGF0ZSk7CgkJc2V0VGltZW91dChmdW5jdGlvbigpIHsKCQkJX3RoaXMuc2V0U2Nyb2xsKHNjcm9sbFN0YXRlKTsKCQl9LCAwKTsKCX0sCgoKCS8qIEV2ZW50IEVsZW1lbnRzIC8gU2VnbWVudHMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIERvZXMgZXZlcnl0aGluZyBuZWNlc3NhcnkgdG8gZGlzcGxheSB0aGUgZ2l2ZW4gZXZlbnRzIG9udG8gdGhlIGN1cnJlbnQgdmlldwoJZGlzcGxheUV2ZW50czogZnVuY3Rpb24oZXZlbnRzKSB7CgkJdmFyIHNjcm9sbFN0YXRlID0gdGhpcy5xdWVyeVNjcm9sbCgpOwoKCQl0aGlzLmNsZWFyRXZlbnRzKCk7CgkJdGhpcy5yZW5kZXJFdmVudHMoZXZlbnRzKTsKCQl0aGlzLmlzRXZlbnRzUmVuZGVyZWQgPSB0cnVlOwoJCXRoaXMuc2V0U2Nyb2xsKHNjcm9sbFN0YXRlKTsKCQl0aGlzLnRyaWdnZXJFdmVudFJlbmRlcigpOwoJfSwKCgoJLy8gRG9lcyBldmVyeXRoaW5nIG5lY2Vzc2FyeSB0byBjbGVhciB0aGUgdmlldydzIGN1cnJlbnRseS1yZW5kZXJlZCBldmVudHMKCWNsZWFyRXZlbnRzOiBmdW5jdGlvbigpIHsKCQlpZiAodGhpcy5pc0V2ZW50c1JlbmRlcmVkKSB7CgkJCXRoaXMudHJpZ2dlckV2ZW50VW5yZW5kZXIoKTsKCQkJaWYgKHRoaXMuZGVzdHJveUV2ZW50cykgewoJCQkJdGhpcy5kZXN0cm95RXZlbnRzKCk7IC8vIFRPRE86IGRlcHJlY2F0ZQoJCQl9CgkJCXRoaXMudW5yZW5kZXJFdmVudHMoKTsKCQkJdGhpcy5pc0V2ZW50c1JlbmRlcmVkID0gZmFsc2U7CgkJfQoJfSwKCgoJLy8gUmVuZGVycyB0aGUgZXZlbnRzIG9udG8gdGhlIHZpZXcuCglyZW5kZXJFdmVudHM6IGZ1bmN0aW9uKGV2ZW50cykgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLy8gUmVtb3ZlcyBldmVudCBlbGVtZW50cyBmcm9tIHRoZSB2aWV3LgoJdW5yZW5kZXJFdmVudHM6IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLy8gU2lnbmFscyB0aGF0IGFsbCBldmVudHMgaGF2ZSBiZWVuIHJlbmRlcmVkCgl0cmlnZ2VyRXZlbnRSZW5kZXI6IGZ1bmN0aW9uKCkgewoJCXRoaXMucmVuZGVyZWRFdmVudFNlZ0VhY2goZnVuY3Rpb24oc2VnKSB7CgkJCXRoaXMudHJpZ2dlcignZXZlbnRBZnRlclJlbmRlcicsIHNlZy5ldmVudCwgc2VnLmV2ZW50LCBzZWcuZWwpOwoJCX0pOwoJCXRoaXMudHJpZ2dlcignZXZlbnRBZnRlckFsbFJlbmRlcicpOwoJfSwKCgoJLy8gU2lnbmFscyB0aGF0IGFsbCBldmVudCBlbGVtZW50cyBhcmUgYWJvdXQgdG8gYmUgcmVtb3ZlZAoJdHJpZ2dlckV2ZW50VW5yZW5kZXI6IGZ1bmN0aW9uKCkgewoJCXRoaXMucmVuZGVyZWRFdmVudFNlZ0VhY2goZnVuY3Rpb24oc2VnKSB7CgkJCXRoaXMudHJpZ2dlcignZXZlbnREZXN0cm95Jywgc2VnLmV2ZW50LCBzZWcuZXZlbnQsIHNlZy5lbCk7CgkJfSk7Cgl9LAoKCgkvLyBHaXZlbiBhbiBldmVudCBhbmQgdGhlIGRlZmF1bHQgZWxlbWVudCB1c2VkIGZvciByZW5kZXJpbmcsIHJldHVybnMgdGhlIGVsZW1lbnQgdGhhdCBzaG91bGQgYWN0dWFsbHkgYmUgdXNlZC4KCS8vIEJhc2ljYWxseSBydW5zIGV2ZW50cyBhbmQgZWxlbWVudHMgdGhyb3VnaCB0aGUgZXZlbnRSZW5kZXIgaG9vay4KCXJlc29sdmVFdmVudEVsOiBmdW5jdGlvbihldmVudCwgZWwpIHsKCQl2YXIgY3VzdG9tID0gdGhpcy50cmlnZ2VyKCdldmVudFJlbmRlcicsIGV2ZW50LCBldmVudCwgZWwpOwoKCQlpZiAoY3VzdG9tID09PSBmYWxzZSkgeyAvLyBtZWFucyBkb24ndCByZW5kZXIgYXQgYWxsCgkJCWVsID0gbnVsbDsKCQl9CgkJZWxzZSBpZiAoY3VzdG9tICYmIGN1c3RvbSAhPT0gdHJ1ZSkgewoJCQllbCA9ICQoY3VzdG9tKTsKCQl9CgoJCXJldHVybiBlbDsKCX0sCgoKCS8vIEhpZGVzIGFsbCByZW5kZXJlZCBldmVudCBzZWdtZW50cyBsaW5rZWQgdG8gdGhlIGdpdmVuIGV2ZW50CglzaG93RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KSB7CgkJdGhpcy5yZW5kZXJlZEV2ZW50U2VnRWFjaChmdW5jdGlvbihzZWcpIHsKCQkJc2VnLmVsLmNzcygndmlzaWJpbGl0eScsICcnKTsKCQl9LCBldmVudCk7Cgl9LAoKCgkvLyBTaG93cyBhbGwgcmVuZGVyZWQgZXZlbnQgc2VnbWVudHMgbGlua2VkIHRvIHRoZSBnaXZlbiBldmVudAoJaGlkZUV2ZW50OiBmdW5jdGlvbihldmVudCkgewoJCXRoaXMucmVuZGVyZWRFdmVudFNlZ0VhY2goZnVuY3Rpb24oc2VnKSB7CgkJCXNlZy5lbC5jc3MoJ3Zpc2liaWxpdHknLCAnaGlkZGVuJyk7CgkJfSwgZXZlbnQpOwoJfSwKCgoJLy8gSXRlcmF0ZXMgdGhyb3VnaCBldmVudCBzZWdtZW50cyB0aGF0IGhhdmUgYmVlbiByZW5kZXJlZCAoaGF2ZSBhbiBlbCkuIEdvZXMgdGhyb3VnaCBhbGwgYnkgZGVmYXVsdC4KCS8vIElmIHRoZSBvcHRpb25hbCBgZXZlbnRgIGFyZ3VtZW50IGlzIHNwZWNpZmllZCwgb25seSBpdGVyYXRlcyB0aHJvdWdoIHNlZ21lbnRzIGxpbmtlZCB0byB0aGF0IGV2ZW50LgoJLy8gVGhlIGB0aGlzYCB2YWx1ZSBvZiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gd2lsbCBiZSB0aGUgdmlldy4KCXJlbmRlcmVkRXZlbnRTZWdFYWNoOiBmdW5jdGlvbihmdW5jLCBldmVudCkgewoJCXZhciBzZWdzID0gdGhpcy5nZXRFdmVudFNlZ3MoKTsKCQl2YXIgaTsKCgkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJaWYgKCFldmVudCB8fCBzZWdzW2ldLmV2ZW50Ll9pZCA9PT0gZXZlbnQuX2lkKSB7CgkJCQlpZiAoc2Vnc1tpXS5lbCkgewoJCQkJCWZ1bmMuY2FsbCh0aGlzLCBzZWdzW2ldKTsKCQkJCX0KCQkJfQoJCX0KCX0sCgoKCS8vIFJldHJpZXZlcyBhbGwgdGhlIHJlbmRlcmVkIHNlZ21lbnQgb2JqZWN0cyBmb3IgdGhlIHZpZXcKCWdldEV2ZW50U2VnczogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudAoJCXJldHVybiBbXTsKCX0sCgoKCS8qIEV2ZW50IERyYWctbi1Ecm9wCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBDb21wdXRlcyBpZiB0aGUgZ2l2ZW4gZXZlbnQgaXMgYWxsb3dlZCB0byBiZSBkcmFnZ2VkIGJ5IHRoZSB1c2VyCglpc0V2ZW50RHJhZ2dhYmxlOiBmdW5jdGlvbihldmVudCkgewoJCXZhciBzb3VyY2UgPSBldmVudC5zb3VyY2UgfHwge307CgoJCXJldHVybiBmaXJzdERlZmluZWQoCgkJCWV2ZW50LnN0YXJ0RWRpdGFibGUsCgkJCXNvdXJjZS5zdGFydEVkaXRhYmxlLAoJCQl0aGlzLm9wdCgnZXZlbnRTdGFydEVkaXRhYmxlJyksCgkJCWV2ZW50LmVkaXRhYmxlLAoJCQlzb3VyY2UuZWRpdGFibGUsCgkJCXRoaXMub3B0KCdlZGl0YWJsZScpCgkJKTsKCX0sCgoKCS8vIE11c3QgYmUgY2FsbGVkIHdoZW4gYW4gZXZlbnQgaW4gdGhlIHZpZXcgaXMgZHJvcHBlZCBvbnRvIG5ldyBsb2NhdGlvbi4KCS8vIGBkcm9wTG9jYXRpb25gIGlzIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSBuZXcgc3RhcnQvZW5kL2FsbERheSB2YWx1ZXMgZm9yIHRoZSBldmVudC4KCXJlcG9ydEV2ZW50RHJvcDogZnVuY3Rpb24oZXZlbnQsIGRyb3BMb2NhdGlvbiwgbGFyZ2VVbml0LCBlbCwgZXYpIHsKCQl2YXIgY2FsZW5kYXIgPSB0aGlzLmNhbGVuZGFyOwoJCXZhciBtdXRhdGVSZXN1bHQgPSBjYWxlbmRhci5tdXRhdGVFdmVudChldmVudCwgZHJvcExvY2F0aW9uLCBsYXJnZVVuaXQpOwoJCXZhciB1bmRvRnVuYyA9IGZ1bmN0aW9uKCkgewoJCQltdXRhdGVSZXN1bHQudW5kbygpOwoJCQljYWxlbmRhci5yZXBvcnRFdmVudENoYW5nZSgpOwoJCX07CgoJCXRoaXMudHJpZ2dlckV2ZW50RHJvcChldmVudCwgbXV0YXRlUmVzdWx0LmRhdGVEZWx0YSwgdW5kb0Z1bmMsIGVsLCBldik7CgkJY2FsZW5kYXIucmVwb3J0RXZlbnRDaGFuZ2UoKTsgLy8gd2lsbCByZXJlbmRlciBldmVudHMKCX0sCgoKCS8vIFRyaWdnZXJzIGV2ZW50LWRyb3AgaGFuZGxlcnMgdGhhdCBoYXZlIHN1YnNjcmliZWQgdmlhIHRoZSBBUEkKCXRyaWdnZXJFdmVudERyb3A6IGZ1bmN0aW9uKGV2ZW50LCBkYXRlRGVsdGEsIHVuZG9GdW5jLCBlbCwgZXYpIHsKCQl0aGlzLnRyaWdnZXIoJ2V2ZW50RHJvcCcsIGVsWzBdLCBldmVudCwgZGF0ZURlbHRhLCB1bmRvRnVuYywgZXYsIHt9KTsgLy8ge30gPSBqcXVpIGR1bW15Cgl9LAoKCgkvKiBFeHRlcm5hbCBFbGVtZW50IERyYWctbi1Ecm9wCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBNdXN0IGJlIGNhbGxlZCB3aGVuIGFuIGV4dGVybmFsIGVsZW1lbnQsIHZpYSBqUXVlcnkgVUksIGhhcyBiZWVuIGRyb3BwZWQgb250byB0aGUgY2FsZW5kYXIuCgkvLyBgbWV0YWAgaXMgdGhlIHBhcnNlZCBkYXRhIHRoYXQgaGFzIGJlZW4gZW1iZWRkZWQgaW50byB0aGUgZHJhZ2dpbmcgZXZlbnQuCgkvLyBgZHJvcExvY2F0aW9uYCBpcyBhbiBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgbmV3IHN0YXJ0L2VuZC9hbGxEYXkgdmFsdWVzIGZvciB0aGUgZXZlbnQuCglyZXBvcnRFeHRlcm5hbERyb3A6IGZ1bmN0aW9uKG1ldGEsIGRyb3BMb2NhdGlvbiwgZWwsIGV2LCB1aSkgewoJCXZhciBldmVudFByb3BzID0gbWV0YS5ldmVudFByb3BzOwoJCXZhciBldmVudElucHV0OwoJCXZhciBldmVudDsKCgkJLy8gVHJ5IHRvIGJ1aWxkIGFuIGV2ZW50IG9iamVjdCBhbmQgcmVuZGVyIGl0LiBUT0RPOiBkZWNvdXBsZSB0aGUgdHdvCgkJaWYgKGV2ZW50UHJvcHMpIHsKCQkJZXZlbnRJbnB1dCA9ICQuZXh0ZW5kKHt9LCBldmVudFByb3BzLCBkcm9wTG9jYXRpb24pOwoJCQlldmVudCA9IHRoaXMuY2FsZW5kYXIucmVuZGVyRXZlbnQoZXZlbnRJbnB1dCwgbWV0YS5zdGljaylbMF07IC8vIHJlbmRlckV2ZW50IHJldHVybnMgYW4gYXJyYXkKCQl9CgoJCXRoaXMudHJpZ2dlckV4dGVybmFsRHJvcChldmVudCwgZHJvcExvY2F0aW9uLCBlbCwgZXYsIHVpKTsKCX0sCgoKCS8vIFRyaWdnZXJzIGV4dGVybmFsLWRyb3AgaGFuZGxlcnMgdGhhdCBoYXZlIHN1YnNjcmliZWQgdmlhIHRoZSBBUEkKCXRyaWdnZXJFeHRlcm5hbERyb3A6IGZ1bmN0aW9uKGV2ZW50LCBkcm9wTG9jYXRpb24sIGVsLCBldiwgdWkpIHsKCgkJLy8gdHJpZ2dlciAnZHJvcCcgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGVsZW1lbnQgcmVwcmVzZW50cyBhbiBldmVudAoJCXRoaXMudHJpZ2dlcignZHJvcCcsIGVsWzBdLCBkcm9wTG9jYXRpb24uc3RhcnQsIGV2LCB1aSk7CgoJCWlmIChldmVudCkgewoJCQl0aGlzLnRyaWdnZXIoJ2V2ZW50UmVjZWl2ZScsIG51bGwsIGV2ZW50KTsgLy8gc2lnbmFsIGFuIGV4dGVybmFsIGV2ZW50IGxhbmRlZAoJCX0KCX0sCgoKCS8qIERyYWctbi1Ecm9wIFJlbmRlcmluZyAoZm9yIGJvdGggZXZlbnRzIGFuZCBleHRlcm5hbCBlbGVtZW50cykKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFJlbmRlcnMgYSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhIGV2ZW50IG9yIGV4dGVybmFsLWVsZW1lbnQgZHJhZyBvdmVyIHRoZSBnaXZlbiBkcm9wIHpvbmUuCgkvLyBJZiBhbiBleHRlcm5hbC1lbGVtZW50LCBzZWcgd2lsbCBiZSBgbnVsbGAKCXJlbmRlckRyYWc6IGZ1bmN0aW9uKGRyb3BMb2NhdGlvbiwgc2VnKSB7CgkJLy8gc3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudAoJfSwKCgoJLy8gVW5yZW5kZXJzIGEgdmlzdWFsIGluZGljYXRpb24gb2YgYW4gZXZlbnQgb3IgZXh0ZXJuYWwtZWxlbWVudCBiZWluZyBkcmFnZ2VkLgoJdW5yZW5kZXJEcmFnOiBmdW5jdGlvbigpIHsKCQkvLyBzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50Cgl9LAoKCgkvKiBFdmVudCBSZXNpemluZwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQ29tcHV0ZXMgaWYgdGhlIGdpdmVuIGV2ZW50IGlzIGFsbG93ZWQgdG8gYmUgcmVzaXplZCBmcm9tIGl0cyBzdGFydGluZyBlZGdlCglpc0V2ZW50UmVzaXphYmxlRnJvbVN0YXJ0OiBmdW5jdGlvbihldmVudCkgewoJCXJldHVybiB0aGlzLm9wdCgnZXZlbnRSZXNpemFibGVGcm9tU3RhcnQnKSAmJiB0aGlzLmlzRXZlbnRSZXNpemFibGUoZXZlbnQpOwoJfSwKCgoJLy8gQ29tcHV0ZXMgaWYgdGhlIGdpdmVuIGV2ZW50IGlzIGFsbG93ZWQgdG8gYmUgcmVzaXplZCBmcm9tIGl0cyBlbmRpbmcgZWRnZQoJaXNFdmVudFJlc2l6YWJsZUZyb21FbmQ6IGZ1bmN0aW9uKGV2ZW50KSB7CgkJcmV0dXJuIHRoaXMuaXNFdmVudFJlc2l6YWJsZShldmVudCk7Cgl9LAoKCgkvLyBDb21wdXRlcyBpZiB0aGUgZ2l2ZW4gZXZlbnQgaXMgYWxsb3dlZCB0byBiZSByZXNpemVkIGJ5IHRoZSB1c2VyIGF0IGFsbAoJaXNFdmVudFJlc2l6YWJsZTogZnVuY3Rpb24oZXZlbnQpIHsKCQl2YXIgc291cmNlID0gZXZlbnQuc291cmNlIHx8IHt9OwoKCQlyZXR1cm4gZmlyc3REZWZpbmVkKAoJCQlldmVudC5kdXJhdGlvbkVkaXRhYmxlLAoJCQlzb3VyY2UuZHVyYXRpb25FZGl0YWJsZSwKCQkJdGhpcy5vcHQoJ2V2ZW50RHVyYXRpb25FZGl0YWJsZScpLAoJCQlldmVudC5lZGl0YWJsZSwKCQkJc291cmNlLmVkaXRhYmxlLAoJCQl0aGlzLm9wdCgnZWRpdGFibGUnKQoJCSk7Cgl9LAoKCgkvLyBNdXN0IGJlIGNhbGxlZCB3aGVuIGFuIGV2ZW50IGluIHRoZSB2aWV3IGhhcyBiZWVuIHJlc2l6ZWQgdG8gYSBuZXcgbGVuZ3RoCglyZXBvcnRFdmVudFJlc2l6ZTogZnVuY3Rpb24oZXZlbnQsIHJlc2l6ZUxvY2F0aW9uLCBsYXJnZVVuaXQsIGVsLCBldikgewoJCXZhciBjYWxlbmRhciA9IHRoaXMuY2FsZW5kYXI7CgkJdmFyIG11dGF0ZVJlc3VsdCA9IGNhbGVuZGFyLm11dGF0ZUV2ZW50KGV2ZW50LCByZXNpemVMb2NhdGlvbiwgbGFyZ2VVbml0KTsKCQl2YXIgdW5kb0Z1bmMgPSBmdW5jdGlvbigpIHsKCQkJbXV0YXRlUmVzdWx0LnVuZG8oKTsKCQkJY2FsZW5kYXIucmVwb3J0RXZlbnRDaGFuZ2UoKTsKCQl9OwoKCQl0aGlzLnRyaWdnZXJFdmVudFJlc2l6ZShldmVudCwgbXV0YXRlUmVzdWx0LmR1cmF0aW9uRGVsdGEsIHVuZG9GdW5jLCBlbCwgZXYpOwoJCWNhbGVuZGFyLnJlcG9ydEV2ZW50Q2hhbmdlKCk7IC8vIHdpbGwgcmVyZW5kZXIgZXZlbnRzCgl9LAoKCgkvLyBUcmlnZ2VycyBldmVudC1yZXNpemUgaGFuZGxlcnMgdGhhdCBoYXZlIHN1YnNjcmliZWQgdmlhIHRoZSBBUEkKCXRyaWdnZXJFdmVudFJlc2l6ZTogZnVuY3Rpb24oZXZlbnQsIGR1cmF0aW9uRGVsdGEsIHVuZG9GdW5jLCBlbCwgZXYpIHsKCQl0aGlzLnRyaWdnZXIoJ2V2ZW50UmVzaXplJywgZWxbMF0sIGV2ZW50LCBkdXJhdGlvbkRlbHRhLCB1bmRvRnVuYywgZXYsIHt9KTsgLy8ge30gPSBqcXVpIGR1bW15Cgl9LAoKCgkvKiBTZWxlY3Rpb24KCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFNlbGVjdHMgYSBkYXRlIHJhbmdlIG9uIHRoZSB2aWV3LiBgc3RhcnRgIGFuZCBgZW5kYCBhcmUgYm90aCBNb21lbnRzLgoJLy8gYGV2YCBpcyB0aGUgbmF0aXZlIG1vdXNlIGV2ZW50IHRoYXQgYmVnaW4gdGhlIGludGVyYWN0aW9uLgoJc2VsZWN0OiBmdW5jdGlvbihyYW5nZSwgZXYpIHsKCQl0aGlzLnVuc2VsZWN0KGV2KTsKCQl0aGlzLnJlbmRlclNlbGVjdGlvbihyYW5nZSk7CgkJdGhpcy5yZXBvcnRTZWxlY3Rpb24ocmFuZ2UsIGV2KTsKCX0sCgoKCS8vIFJlbmRlcnMgYSB2aXN1YWwgaW5kaWNhdGlvbiBvZiB0aGUgc2VsZWN0aW9uCglyZW5kZXJTZWxlY3Rpb246IGZ1bmN0aW9uKHJhbmdlKSB7CgkJLy8gc3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50Cgl9LAoKCgkvLyBDYWxsZWQgd2hlbiBhIG5ldyBzZWxlY3Rpb24gaXMgbWFkZS4gVXBkYXRlcyBpbnRlcm5hbCBzdGF0ZSBhbmQgdHJpZ2dlcnMgaGFuZGxlcnMuCglyZXBvcnRTZWxlY3Rpb246IGZ1bmN0aW9uKHJhbmdlLCBldikgewoJCXRoaXMuaXNTZWxlY3RlZCA9IHRydWU7CgkJdGhpcy50cmlnZ2VyU2VsZWN0KHJhbmdlLCBldik7Cgl9LAoKCgkvLyBUcmlnZ2VycyBoYW5kbGVycyB0byAnc2VsZWN0JwoJdHJpZ2dlclNlbGVjdDogZnVuY3Rpb24ocmFuZ2UsIGV2KSB7CgkJdGhpcy50cmlnZ2VyKCdzZWxlY3QnLCBudWxsLCByYW5nZS5zdGFydCwgcmFuZ2UuZW5kLCBldik7Cgl9LAoKCgkvLyBVbmRvZXMgYSBzZWxlY3Rpb24uIHVwZGF0ZXMgaW4gdGhlIGludGVybmFsIHN0YXRlIGFuZCB0cmlnZ2VycyBoYW5kbGVycy4KCS8vIGBldmAgaXMgdGhlIG5hdGl2ZSBtb3VzZSBldmVudCB0aGF0IGJlZ2FuIHRoZSBpbnRlcmFjdGlvbi4KCXVuc2VsZWN0OiBmdW5jdGlvbihldikgewoJCWlmICh0aGlzLmlzU2VsZWN0ZWQpIHsKCQkJdGhpcy5pc1NlbGVjdGVkID0gZmFsc2U7CgkJCWlmICh0aGlzLmRlc3Ryb3lTZWxlY3Rpb24pIHsKCQkJCXRoaXMuZGVzdHJveVNlbGVjdGlvbigpOyAvLyBUT0RPOiBkZXByZWNhdGUKCQkJfQoJCQl0aGlzLnVucmVuZGVyU2VsZWN0aW9uKCk7CgkJCXRoaXMudHJpZ2dlcigndW5zZWxlY3QnLCBudWxsLCBldik7CgkJfQoJfSwKCgoJLy8gVW5yZW5kZXJzIGEgdmlzdWFsIGluZGljYXRpb24gb2Ygc2VsZWN0aW9uCgl1bnJlbmRlclNlbGVjdGlvbjogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50Cgl9LAoKCgkvLyBIYW5kbGVyIGZvciB1bnNlbGVjdGluZyB3aGVuIHRoZSB1c2VyIGNsaWNrcyBzb21ldGhpbmcgYW5kIHRoZSAndW5zZWxlY3RBdXRvJyBzZXR0aW5nIGlzIG9uCglkb2N1bWVudE1vdXNlZG93bjogZnVuY3Rpb24oZXYpIHsKCQl2YXIgaWdub3JlOwoKCQkvLyBpcyB0aGVyZSBhIHNlbGVjdGlvbiwgYW5kIGhhcyB0aGUgdXNlciBtYWRlIGEgcHJvcGVyIGxlZnQgY2xpY2s/CgkJaWYgKHRoaXMuaXNTZWxlY3RlZCAmJiB0aGlzLm9wdCgndW5zZWxlY3RBdXRvJykgJiYgaXNQcmltYXJ5TW91c2VCdXR0b24oZXYpKSB7CgoJCQkvLyBvbmx5IHVuc2VsZWN0IGlmIHRoZSBjbGlja2VkIGVsZW1lbnQgaXMgbm90IGlkZW50aWNhbCB0byBvciBpbnNpZGUgb2YgYW4gJ3Vuc2VsZWN0Q2FuY2VsJyBlbGVtZW50CgkJCWlnbm9yZSA9IHRoaXMub3B0KCd1bnNlbGVjdENhbmNlbCcpOwoJCQlpZiAoIWlnbm9yZSB8fCAhJChldi50YXJnZXQpLmNsb3Nlc3QoaWdub3JlKS5sZW5ndGgpIHsKCQkJCXRoaXMudW5zZWxlY3QoZXYpOwoJCQl9CgkJfQoJfSwKCgoJLyogRGF5IENsaWNrCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBUcmlnZ2VycyBoYW5kbGVycyB0byAnZGF5Q2xpY2snCgl0cmlnZ2VyRGF5Q2xpY2s6IGZ1bmN0aW9uKGNlbGwsIGRheUVsLCBldikgewoJCXRoaXMudHJpZ2dlcignZGF5Q2xpY2snLCBkYXlFbCwgY2VsbC5zdGFydCwgZXYpOwoJfSwKCgoJLyogRGF0ZSBVdGlscwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gSW5pdGlhbGl6ZXMgaW50ZXJuYWwgdmFyaWFibGVzIHJlbGF0ZWQgdG8gY2FsY3VsYXRpbmcgaGlkZGVuIGRheXMtb2Ytd2VlawoJaW5pdEhpZGRlbkRheXM6IGZ1bmN0aW9uKCkgewoJCXZhciBoaWRkZW5EYXlzID0gdGhpcy5vcHQoJ2hpZGRlbkRheXMnKSB8fCBbXTsgLy8gYXJyYXkgb2YgZGF5LW9mLXdlZWsgaW5kaWNlcyB0aGF0IGFyZSBoaWRkZW4KCQl2YXIgaXNIaWRkZW5EYXlIYXNoID0gW107IC8vIGlzIHRoZSBkYXktb2Ytd2VlayBoaWRkZW4/IChoYXNoIHdpdGggZGF5LW9mLXdlZWstaW5kZXggLT4gYm9vbCkKCQl2YXIgZGF5Q250ID0gMDsKCQl2YXIgaTsKCgkJaWYgKHRoaXMub3B0KCd3ZWVrZW5kcycpID09PSBmYWxzZSkgewoJCQloaWRkZW5EYXlzLnB1c2goMCwgNik7IC8vIDA9c3VuZGF5LCA2PXNhdHVyZGF5CgkJfQoKCQlmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7CgkJCWlmICgKCQkJCSEoaXNIaWRkZW5EYXlIYXNoW2ldID0gJC5pbkFycmF5KGksIGhpZGRlbkRheXMpICE9PSAtMSkKCQkJKSB7CgkJCQlkYXlDbnQrKzsKCQkJfQoJCX0KCgkJaWYgKCFkYXlDbnQpIHsKCQkJdGhyb3cgJ2ludmFsaWQgaGlkZGVuRGF5cyc7IC8vIGFsbCBkYXlzIHdlcmUgaGlkZGVuPyBiYWQuCgkJfQoKCQl0aGlzLmlzSGlkZGVuRGF5SGFzaCA9IGlzSGlkZGVuRGF5SGFzaDsKCX0sCgoKCS8vIElzIHRoZSBjdXJyZW50IGRheSBoaWRkZW4/CgkvLyBgZGF5YCBpcyBhIGRheS1vZi13ZWVrIGluZGV4ICgwLTYpLCBvciBhIE1vbWVudAoJaXNIaWRkZW5EYXk6IGZ1bmN0aW9uKGRheSkgewoJCWlmIChtb21lbnQuaXNNb21lbnQoZGF5KSkgewoJCQlkYXkgPSBkYXkuZGF5KCk7CgkJfQoJCXJldHVybiB0aGlzLmlzSGlkZGVuRGF5SGFzaFtkYXldOwoJfSwKCgoJLy8gSW5jcmVtZW50aW5nIHRoZSBjdXJyZW50IGRheSB1bnRpbCBpdCBpcyBubyBsb25nZXIgYSBoaWRkZW4gZGF5LCByZXR1cm5pbmcgYSBjb3B5LgoJLy8gSWYgdGhlIGluaXRpYWwgdmFsdWUgb2YgYGRhdGVgIGlzIG5vdCBhIGhpZGRlbiBkYXksIGRvbid0IGRvIGFueXRoaW5nLgoJLy8gUGFzcyBgaXNFeGNsdXNpdmVgIGFzIGB0cnVlYCBpZiB5b3UgYXJlIGRlYWxpbmcgd2l0aCBhbiBlbmQgZGF0ZS4KCS8vIGBpbmNgIGRlZmF1bHRzIHRvIGAxYCAoaW5jcmVtZW50IG9uZSBkYXkgZm9yd2FyZCBlYWNoIHRpbWUpCglza2lwSGlkZGVuRGF5czogZnVuY3Rpb24oZGF0ZSwgaW5jLCBpc0V4Y2x1c2l2ZSkgewoJCXZhciBvdXQgPSBkYXRlLmNsb25lKCk7CgkJaW5jID0gaW5jIHx8IDE7CgkJd2hpbGUgKAoJCQl0aGlzLmlzSGlkZGVuRGF5SGFzaFsob3V0LmRheSgpICsgKGlzRXhjbHVzaXZlID8gaW5jIDogMCkgKyA3KSAlIDddCgkJKSB7CgkJCW91dC5hZGQoaW5jLCAnZGF5cycpOwoJCX0KCQlyZXR1cm4gb3V0OwoJfSwKCgoJLy8gUmV0dXJucyB0aGUgZGF0ZSByYW5nZSBvZiB0aGUgZnVsbCBkYXlzIHRoZSBnaXZlbiByYW5nZSB2aXN1YWxseSBhcHBlYXJzIHRvIG9jY3VweS4KCS8vIFJldHVybnMgYSBuZXcgcmFuZ2Ugb2JqZWN0LgoJY29tcHV0ZURheVJhbmdlOiBmdW5jdGlvbihyYW5nZSkgewoJCXZhciBzdGFydERheSA9IHJhbmdlLnN0YXJ0LmNsb25lKCkuc3RyaXBUaW1lKCk7IC8vIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRheSB0aGUgcmFuZ2Ugc3RhcnRzCgkJdmFyIGVuZCA9IHJhbmdlLmVuZDsKCQl2YXIgZW5kRGF5ID0gbnVsbDsKCQl2YXIgZW5kVGltZU1TOwoKCQlpZiAoZW5kKSB7CgkJCWVuZERheSA9IGVuZC5jbG9uZSgpLnN0cmlwVGltZSgpOyAvLyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkYXkgdGhlIHJhbmdlIGV4Y2x1c2l2ZWx5IGVuZHMKCQkJZW5kVGltZU1TID0gK2VuZC50aW1lKCk7IC8vICMgb2YgbWlsbGlzZWNvbmRzIGludG8gYGVuZERheWAKCgkJCS8vIElmIHRoZSBlbmQgdGltZSBpcyBhY3R1YWxseSBpbmNsdXNpdmVseSBwYXJ0IG9mIHRoZSBuZXh0IGRheSBhbmQgaXMgZXF1YWwgdG8gb3IKCQkJLy8gYmV5b25kIHRoZSBuZXh0IGRheSB0aHJlc2hvbGQsIGFkanVzdCB0aGUgZW5kIHRvIGJlIHRoZSBleGNsdXNpdmUgZW5kIG9mIGBlbmREYXlgLgoJCQkvLyBPdGhlcndpc2UsIGxlYXZpbmcgaXQgYXMgaW5jbHVzaXZlIHdpbGwgY2F1c2UgaXQgdG8gZXhjbHVkZSBgZW5kRGF5YC4KCQkJaWYgKGVuZFRpbWVNUyAmJiBlbmRUaW1lTVMgPj0gdGhpcy5uZXh0RGF5VGhyZXNob2xkKSB7CgkJCQllbmREYXkuYWRkKDEsICdkYXlzJyk7CgkJCX0KCQl9CgoJCS8vIElmIG5vIGVuZCB3YXMgc3BlY2lmaWVkLCBvciBpZiBpdCBpcyB3aXRoaW4gYHN0YXJ0RGF5YCBidXQgbm90IHBhc3QgbmV4dERheVRocmVzaG9sZCwKCQkvLyBhc3NpZ24gdGhlIGRlZmF1bHQgZHVyYXRpb24gb2Ygb25lIGRheS4KCQlpZiAoIWVuZCB8fCBlbmREYXkgPD0gc3RhcnREYXkpIHsKCQkJZW5kRGF5ID0gc3RhcnREYXkuY2xvbmUoKS5hZGQoMSwgJ2RheXMnKTsKCQl9CgoJCXJldHVybiB7IHN0YXJ0OiBzdGFydERheSwgZW5kOiBlbmREYXkgfTsKCX0sCgoKCS8vIERvZXMgdGhlIGdpdmVuIGV2ZW50IHZpc3VhbGx5IGFwcGVhciB0byBvY2N1cHkgbW9yZSB0aGFuIG9uZSBkYXk/Cglpc011bHRpRGF5RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KSB7CgkJdmFyIHJhbmdlID0gdGhpcy5jb21wdXRlRGF5UmFuZ2UoZXZlbnQpOyAvLyBldmVudCBpcyByYW5nZS1pc2gKCgkJcmV0dXJuIHJhbmdlLmVuZC5kaWZmKHJhbmdlLnN0YXJ0LCAnZGF5cycpID4gMTsKCX0KCn0pOwoKOzsKCnZhciBDYWxlbmRhciA9IGZjLkNhbGVuZGFyID0gQ2xhc3MuZXh0ZW5kKHsKCglkaXJEZWZhdWx0czogbnVsbCwgLy8gb3B0aW9uIGRlZmF1bHRzIHJlbGF0ZWQgdG8gTFRSIG9yIFJUTAoJbGFuZ0RlZmF1bHRzOiBudWxsLCAvLyBvcHRpb24gZGVmYXVsdHMgcmVsYXRlZCB0byBjdXJyZW50IGxvY2FsZQoJb3ZlcnJpZGVzOiBudWxsLCAvLyBvcHRpb24gb3ZlcnJpZGVzIGdpdmVuIHRvIHRoZSBmdWxsQ2FsZW5kYXIgY29uc3RydWN0b3IKCW9wdGlvbnM6IG51bGwsIC8vIGFsbCBkZWZhdWx0cyBjb21iaW5lZCB3aXRoIG92ZXJyaWRlcwoJdmlld1NwZWNDYWNoZTogbnVsbCwgLy8gY2FjaGUgb2YgdmlldyBkZWZpbml0aW9ucwoJdmlldzogbnVsbCwgLy8gY3VycmVudCBWaWV3IG9iamVjdAoJaGVhZGVyOiBudWxsLAoJbG9hZGluZ0xldmVsOiAwLCAvLyBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIGxvYWRpbmcgdGFza3MKCgoJLy8gYSBsb3Qgb2YgdGhpcyBjbGFzcycgT09QIGxvZ2ljIGlzIHNjb3BlZCB3aXRoaW4gdGhpcyBjb25zdHJ1Y3RvciBmdW5jdGlvbiwKCS8vIGJ1dCBpbiB0aGUgZnV0dXJlLCB3cml0ZSBpbmRpdmlkdWFsIG1ldGhvZHMgb24gdGhlIHByb3RvdHlwZS4KCWNvbnN0cnVjdG9yOiBDYWxlbmRhcl9jb25zdHJ1Y3RvciwKCgoJLy8gU3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdGhpcyBmb3IgaW5pdGlhbGl6YXRpb24gbG9naWMgYWZ0ZXIgdGhlIGNvbnN0cnVjdG9yIGhhcyBiZWVuIGNhbGxlZAoJaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7Cgl9LAoKCgkvLyBJbml0aWFsaXplcyBgdGhpcy5vcHRpb25zYCBhbmQgb3RoZXIgaW1wb3J0YW50IG9wdGlvbnMtcmVsYXRlZCBvYmplY3RzCglpbml0T3B0aW9uczogZnVuY3Rpb24ob3ZlcnJpZGVzKSB7CgkJdmFyIGxhbmcsIGxhbmdEZWZhdWx0czsKCQl2YXIgaXNSVEwsIGRpckRlZmF1bHRzOwoKCQkvLyBjb252ZXJ0cyBsZWdhY3kgb3B0aW9ucyBpbnRvIG5vbi1sZWdhY3kgb25lcy4KCQkvLyBpbiB0aGUgZnV0dXJlLCB3aGVuIHRoaXMgaXMgcmVtb3ZlZCwgZG9uJ3QgdXNlIGBvdmVycmlkZXNgIHJlZmVyZW5jZS4gbWFrZSBhIGNvcHkuCgkJb3ZlcnJpZGVzID0gbWFzc2FnZU92ZXJyaWRlcyhvdmVycmlkZXMpOwoKCQlsYW5nID0gb3ZlcnJpZGVzLmxhbmc7CgkJbGFuZ0RlZmF1bHRzID0gbGFuZ09wdGlvbkhhc2hbbGFuZ107CgkJaWYgKCFsYW5nRGVmYXVsdHMpIHsKCQkJbGFuZyA9IENhbGVuZGFyLmRlZmF1bHRzLmxhbmc7CgkJCWxhbmdEZWZhdWx0cyA9IGxhbmdPcHRpb25IYXNoW2xhbmddIHx8IHt9OwoJCX0KCgkJaXNSVEwgPSBmaXJzdERlZmluZWQoCgkJCW92ZXJyaWRlcy5pc1JUTCwKCQkJbGFuZ0RlZmF1bHRzLmlzUlRMLAoJCQlDYWxlbmRhci5kZWZhdWx0cy5pc1JUTAoJCSk7CgkJZGlyRGVmYXVsdHMgPSBpc1JUTCA/IENhbGVuZGFyLnJ0bERlZmF1bHRzIDoge307CgoJCXRoaXMuZGlyRGVmYXVsdHMgPSBkaXJEZWZhdWx0czsKCQl0aGlzLmxhbmdEZWZhdWx0cyA9IGxhbmdEZWZhdWx0czsKCQl0aGlzLm92ZXJyaWRlcyA9IG92ZXJyaWRlczsKCQl0aGlzLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoWyAvLyBtZXJnZSBkZWZhdWx0cyBhbmQgb3ZlcnJpZGVzLiBsb3dlc3QgdG8gaGlnaGVzdCBwcmVjZWRlbmNlCgkJCUNhbGVuZGFyLmRlZmF1bHRzLCAvLyBnbG9iYWwgZGVmYXVsdHMKCQkJZGlyRGVmYXVsdHMsCgkJCWxhbmdEZWZhdWx0cywKCQkJb3ZlcnJpZGVzCgkJXSk7CgkJcG9wdWxhdGVJbnN0YW5jZUNvbXB1dGFibGVPcHRpb25zKHRoaXMub3B0aW9ucyk7CgoJCXRoaXMudmlld1NwZWNDYWNoZSA9IHt9OyAvLyBzb21ld2hhdCB1bnJlbGF0ZWQKCX0sCgoKCS8vIEdldHMgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIGNyZWF0ZSBhIHZpZXcuIFdpbGwgdXNlIGEgY2FjaGUuCglnZXRWaWV3U3BlYzogZnVuY3Rpb24odmlld1R5cGUpIHsKCQl2YXIgY2FjaGUgPSB0aGlzLnZpZXdTcGVjQ2FjaGU7CgoJCXJldHVybiBjYWNoZVt2aWV3VHlwZV0gfHwgKGNhY2hlW3ZpZXdUeXBlXSA9IHRoaXMuYnVpbGRWaWV3U3BlYyh2aWV3VHlwZSkpOwoJfSwKCgoJLy8gR2l2ZW4gYSBkdXJhdGlvbiBzaW5ndWxhciB1bml0LCBsaWtlICJ3ZWVrIiBvciAiZGF5IiwgZmluZHMgYSBtYXRjaGluZyB2aWV3IHNwZWMuCgkvLyBQcmVmZXJlbmNlIGlzIGdpdmVuIHRvIHZpZXdzIHRoYXQgaGF2ZSBjb3JyZXNwb25kaW5nIGJ1dHRvbnMuCglnZXRVbml0Vmlld1NwZWM6IGZ1bmN0aW9uKHVuaXQpIHsKCQl2YXIgdmlld1R5cGVzOwoJCXZhciBpOwoJCXZhciBzcGVjOwoKCQlpZiAoJC5pbkFycmF5KHVuaXQsIGludGVydmFsVW5pdHMpICE9IC0xKSB7CgoJCQkvLyBwdXQgdmlld3MgdGhhdCBoYXZlIGJ1dHRvbnMgZmlyc3QuIHRoZXJlIHdpbGwgYmUgZHVwbGljYXRlcywgYnV0IG9oIHdlbGwKCQkJdmlld1R5cGVzID0gdGhpcy5oZWFkZXIuZ2V0Vmlld3NXaXRoQnV0dG9ucygpOwoJCQkkLmVhY2goZmMudmlld3MsIGZ1bmN0aW9uKHZpZXdUeXBlKSB7IC8vIGFsbCB2aWV3cwoJCQkJdmlld1R5cGVzLnB1c2godmlld1R5cGUpOwoJCQl9KTsKCgkJCWZvciAoaSA9IDA7IGkgPCB2aWV3VHlwZXMubGVuZ3RoOyBpKyspIHsKCQkJCXNwZWMgPSB0aGlzLmdldFZpZXdTcGVjKHZpZXdUeXBlc1tpXSk7CgkJCQlpZiAoc3BlYykgewoJCQkJCWlmIChzcGVjLnNpbmdsZVVuaXQgPT0gdW5pdCkgewoJCQkJCQlyZXR1cm4gc3BlYzsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9Cgl9LAoKCgkvLyBCdWlsZHMgYW4gb2JqZWN0IHdpdGggaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSBhIGdpdmVuIHZpZXcKCWJ1aWxkVmlld1NwZWM6IGZ1bmN0aW9uKHJlcXVlc3RlZFZpZXdUeXBlKSB7CgkJdmFyIHZpZXdPdmVycmlkZXMgPSB0aGlzLm92ZXJyaWRlcy52aWV3cyB8fCB7fTsKCQl2YXIgc3BlY0NoYWluID0gW107IC8vIGZvciB0aGUgdmlldy4gbG93ZXN0IHRvIGhpZ2hlc3QgcHJpb3JpdHkKCQl2YXIgZGVmYXVsdHNDaGFpbiA9IFtdOyAvLyBmb3IgdGhlIHZpZXcuIGxvd2VzdCB0byBoaWdoZXN0IHByaW9yaXR5CgkJdmFyIG92ZXJyaWRlc0NoYWluID0gW107IC8vIGZvciB0aGUgdmlldy4gbG93ZXN0IHRvIGhpZ2hlc3QgcHJpb3JpdHkKCQl2YXIgdmlld1R5cGUgPSByZXF1ZXN0ZWRWaWV3VHlwZTsKCQl2YXIgc3BlYzsgLy8gZm9yIHRoZSB2aWV3CgkJdmFyIG92ZXJyaWRlczsgLy8gZm9yIHRoZSB2aWV3CgkJdmFyIGR1cmF0aW9uOwoJCXZhciB1bml0OwoKCQkvLyBpdGVyYXRlIGZyb20gdGhlIHNwZWNpZmljIHZpZXcgZGVmaW5pdGlvbiB0byBhIG1vcmUgZ2VuZXJhbCBvbmUgdW50aWwgd2UgaGl0IGFuIGFjdHVhbCBWaWV3IGNsYXNzCgkJd2hpbGUgKHZpZXdUeXBlKSB7CgkJCXNwZWMgPSBmY1ZpZXdzW3ZpZXdUeXBlXTsKCQkJb3ZlcnJpZGVzID0gdmlld092ZXJyaWRlc1t2aWV3VHlwZV07CgkJCXZpZXdUeXBlID0gbnVsbDsgLy8gY2xlYXIuIG1pZ2h0IHJlcG9wdWxhdGUgZm9yIGFub3RoZXIgaXRlcmF0aW9uCgoJCQlpZiAodHlwZW9mIHNwZWMgPT09ICdmdW5jdGlvbicpIHsgLy8gVE9ETzogZGVwcmVjYXRlCgkJCQlzcGVjID0geyAnY2xhc3MnOiBzcGVjIH07CgkJCX0KCgkJCWlmIChzcGVjKSB7CgkJCQlzcGVjQ2hhaW4udW5zaGlmdChzcGVjKTsKCQkJCWRlZmF1bHRzQ2hhaW4udW5zaGlmdChzcGVjLmRlZmF1bHRzIHx8IHt9KTsKCQkJCWR1cmF0aW9uID0gZHVyYXRpb24gfHwgc3BlYy5kdXJhdGlvbjsKCQkJCXZpZXdUeXBlID0gdmlld1R5cGUgfHwgc3BlYy50eXBlOwoJCQl9CgoJCQlpZiAob3ZlcnJpZGVzKSB7CgkJCQlvdmVycmlkZXNDaGFpbi51bnNoaWZ0KG92ZXJyaWRlcyk7IC8vIHZpZXctc3BlY2lmaWMgb3B0aW9uIGhhc2hlcyBoYXZlIG9wdGlvbnMgYXQgemVyby1sZXZlbAoJCQkJZHVyYXRpb24gPSBkdXJhdGlvbiB8fCBvdmVycmlkZXMuZHVyYXRpb247CgkJCQl2aWV3VHlwZSA9IHZpZXdUeXBlIHx8IG92ZXJyaWRlcy50eXBlOwoJCQl9CgkJfQoKCQlzcGVjID0gbWVyZ2VQcm9wcyhzcGVjQ2hhaW4pOwoJCXNwZWMudHlwZSA9IHJlcXVlc3RlZFZpZXdUeXBlOwoJCWlmICghc3BlY1snY2xhc3MnXSkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlpZiAoZHVyYXRpb24pIHsKCQkJZHVyYXRpb24gPSBtb21lbnQuZHVyYXRpb24oZHVyYXRpb24pOwoJCQlpZiAoZHVyYXRpb24udmFsdWVPZigpKSB7IC8vIHZhbGlkPwoJCQkJc3BlYy5kdXJhdGlvbiA9IGR1cmF0aW9uOwoJCQkJdW5pdCA9IGNvbXB1dGVJbnRlcnZhbFVuaXQoZHVyYXRpb24pOwoKCQkJCS8vIHZpZXcgaXMgYSBzaW5nbGUtdW5pdCBkdXJhdGlvbiwgbGlrZSAid2VlayIgb3IgImRheSIKCQkJCS8vIGluY29ycG9yYXRlIG9wdGlvbnMgZm9yIHRoaXMuIGxvd2VzdCBwcmlvcml0eQoJCQkJaWYgKGR1cmF0aW9uLmFzKHVuaXQpID09PSAxKSB7CgkJCQkJc3BlYy5zaW5nbGVVbml0ID0gdW5pdDsKCQkJCQlvdmVycmlkZXNDaGFpbi51bnNoaWZ0KHZpZXdPdmVycmlkZXNbdW5pdF0gfHwge30pOwoJCQkJfQoJCQl9CgkJfQoKCQlzcGVjLmRlZmF1bHRzID0gbWVyZ2VPcHRpb25zKGRlZmF1bHRzQ2hhaW4pOwoJCXNwZWMub3ZlcnJpZGVzID0gbWVyZ2VPcHRpb25zKG92ZXJyaWRlc0NoYWluKTsKCgkJdGhpcy5idWlsZFZpZXdTcGVjT3B0aW9ucyhzcGVjKTsKCQl0aGlzLmJ1aWxkVmlld1NwZWNCdXR0b25UZXh0KHNwZWMsIHJlcXVlc3RlZFZpZXdUeXBlKTsKCgkJcmV0dXJuIHNwZWM7Cgl9LAoKCgkvLyBCdWlsZHMgYW5kIGFzc2lnbnMgYSB2aWV3IHNwZWMncyBvcHRpb25zIG9iamVjdCBmcm9tIGl0cyBhbHJlYWR5LWFzc2lnbmVkIGRlZmF1bHRzIGFuZCBvdmVycmlkZXMKCWJ1aWxkVmlld1NwZWNPcHRpb25zOiBmdW5jdGlvbihzcGVjKSB7CgkJc3BlYy5vcHRpb25zID0gbWVyZ2VPcHRpb25zKFsgLy8gbG93ZXN0IHRvIGhpZ2hlc3QgcHJpb3JpdHkKCQkJQ2FsZW5kYXIuZGVmYXVsdHMsIC8vIGdsb2JhbCBkZWZhdWx0cwoJCQlzcGVjLmRlZmF1bHRzLCAvLyB2aWV3J3MgZGVmYXVsdHMgKGZyb20gVmlld1N1YmNsYXNzLmRlZmF1bHRzKQoJCQl0aGlzLmRpckRlZmF1bHRzLAoJCQl0aGlzLmxhbmdEZWZhdWx0cywgLy8gbG9jYWxlIGFuZCBkaXIgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdmlldydzIGRlZmF1bHRzIQoJCQl0aGlzLm92ZXJyaWRlcywgLy8gY2FsZW5kYXIncyBvdmVycmlkZXMgKG9wdGlvbnMgZ2l2ZW4gdG8gY29uc3RydWN0b3IpCgkJCXNwZWMub3ZlcnJpZGVzIC8vIHZpZXcncyBvdmVycmlkZXMgKHZpZXctc3BlY2lmaWMgb3B0aW9ucykKCQldKTsKCQlwb3B1bGF0ZUluc3RhbmNlQ29tcHV0YWJsZU9wdGlvbnMoc3BlYy5vcHRpb25zKTsKCX0sCgoKCS8vIENvbXB1dGVzIGFuZCBhc3NpZ25zIGEgdmlldyBzcGVjJ3MgYnV0dG9uVGV4dC1yZWxhdGVkIG9wdGlvbnMKCWJ1aWxkVmlld1NwZWNCdXR0b25UZXh0OiBmdW5jdGlvbihzcGVjLCByZXF1ZXN0ZWRWaWV3VHlwZSkgewoKCQkvLyBnaXZlbiBhbiBvcHRpb25zIG9iamVjdCB3aXRoIGEgcG9zc2libGUgYGJ1dHRvblRleHRgIGhhc2gsIGxvb2t1cCB0aGUgYnV0dG9uVGV4dCBmb3IgdGhlCgkJLy8gcmVxdWVzdGVkIHZpZXcsIGZhbGxpbmcgYmFjayB0byBhIGdlbmVyaWMgdW5pdCBlbnRyeSBsaWtlICJ3ZWVrIiBvciAiZGF5IgoJCWZ1bmN0aW9uIHF1ZXJ5QnV0dG9uVGV4dChvcHRpb25zKSB7CgkJCXZhciBidXR0b25UZXh0ID0gb3B0aW9ucy5idXR0b25UZXh0IHx8IHt9OwoJCQlyZXR1cm4gYnV0dG9uVGV4dFtyZXF1ZXN0ZWRWaWV3VHlwZV0gfHwKCQkJCShzcGVjLnNpbmdsZVVuaXQgPyBidXR0b25UZXh0W3NwZWMuc2luZ2xlVW5pdF0gOiBudWxsKTsKCQl9CgoJCS8vIGhpZ2hlc3QgdG8gbG93ZXN0IHByaW9yaXR5CgkJc3BlYy5idXR0b25UZXh0T3ZlcnJpZGUgPQoJCQlxdWVyeUJ1dHRvblRleHQodGhpcy5vdmVycmlkZXMpIHx8IC8vIGNvbnN0cnVjdG9yLXNwZWNpZmllZCBidXR0b25UZXh0IGxvb2t1cCBoYXNoIHRha2VzIHByZWNlZGVuY2UKCQkJc3BlYy5vdmVycmlkZXMuYnV0dG9uVGV4dDsgLy8gYGJ1dHRvblRleHRgIGZvciB2aWV3LXNwZWNpZmljIG9wdGlvbnMgaXMgYSBzdHJpbmcKCgkJLy8gaGlnaGVzdCB0byBsb3dlc3QgcHJpb3JpdHkuIG1pcnJvcnMgYnVpbGRWaWV3U3BlY09wdGlvbnMKCQlzcGVjLmJ1dHRvblRleHREZWZhdWx0ID0KCQkJcXVlcnlCdXR0b25UZXh0KHRoaXMubGFuZ0RlZmF1bHRzKSB8fAoJCQlxdWVyeUJ1dHRvblRleHQodGhpcy5kaXJEZWZhdWx0cykgfHwKCQkJc3BlYy5kZWZhdWx0cy5idXR0b25UZXh0IHx8IC8vIGEgc2luZ2xlIHN0cmluZy4gZnJvbSBWaWV3U3ViY2xhc3MuZGVmYXVsdHMKCQkJcXVlcnlCdXR0b25UZXh0KENhbGVuZGFyLmRlZmF1bHRzKSB8fAoJCQkoc3BlYy5kdXJhdGlvbiA/IHRoaXMuaHVtYW5pemVEdXJhdGlvbihzcGVjLmR1cmF0aW9uKSA6IG51bGwpIHx8IC8vIGxpa2UgIjMgZGF5cyIKCQkJcmVxdWVzdGVkVmlld1R5cGU7IC8vIGZhbGwgYmFjayB0byBnaXZlbiB2aWV3IG5hbWUKCX0sCgoKCS8vIEdpdmVuIGEgdmlldyBuYW1lIGZvciBhIGN1c3RvbSB2aWV3IG9yIGEgc3RhbmRhcmQgdmlldywgY3JlYXRlcyBhIHJlYWR5LXRvLWdvIFZpZXcgb2JqZWN0CglpbnN0YW50aWF0ZVZpZXc6IGZ1bmN0aW9uKHZpZXdUeXBlKSB7CgkJdmFyIHNwZWMgPSB0aGlzLmdldFZpZXdTcGVjKHZpZXdUeXBlKTsKCgkJcmV0dXJuIG5ldyBzcGVjWydjbGFzcyddKHRoaXMsIHZpZXdUeXBlLCBzcGVjLm9wdGlvbnMsIHNwZWMuZHVyYXRpb24pOwoJfSwKCgoJLy8gUmV0dXJucyBhIGJvb2xlYW4gYWJvdXQgd2hldGhlciB0aGUgdmlldyBpcyBva2F5IHRvIGluc3RhbnRpYXRlIGF0IHNvbWUgcG9pbnQKCWlzVmFsaWRWaWV3VHlwZTogZnVuY3Rpb24odmlld1R5cGUpIHsKCQlyZXR1cm4gQm9vbGVhbih0aGlzLmdldFZpZXdTcGVjKHZpZXdUeXBlKSk7Cgl9LAoKCgkvLyBTaG91bGQgYmUgY2FsbGVkIHdoZW4gYW55IHR5cGUgb2YgYXN5bmMgZGF0YSBmZXRjaGluZyBiZWdpbnMKCXB1c2hMb2FkaW5nOiBmdW5jdGlvbigpIHsKCQlpZiAoISh0aGlzLmxvYWRpbmdMZXZlbCsrKSkgewoJCQl0aGlzLnRyaWdnZXIoJ2xvYWRpbmcnLCBudWxsLCB0cnVlLCB0aGlzLnZpZXcpOwoJCX0KCX0sCgoKCS8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbiBhbnkgdHlwZSBvZiBhc3luYyBkYXRhIGZldGNoaW5nIGNvbXBsZXRlcwoJcG9wTG9hZGluZzogZnVuY3Rpb24oKSB7CgkJaWYgKCEoLS10aGlzLmxvYWRpbmdMZXZlbCkpIHsKCQkJdGhpcy50cmlnZ2VyKCdsb2FkaW5nJywgbnVsbCwgZmFsc2UsIHRoaXMudmlldyk7CgkJfQoJfSwKCgoJLy8gR2l2ZW4gYXJndW1lbnRzIHRvIHRoZSBzZWxlY3QgbWV0aG9kIGluIHRoZSBBUEksIHJldHVybnMgYSByYW5nZQoJYnVpbGRTZWxlY3RSYW5nZTogZnVuY3Rpb24oc3RhcnQsIGVuZCkgewoKCQlzdGFydCA9IHRoaXMubW9tZW50KHN0YXJ0KTsKCQlpZiAoZW5kKSB7CgkJCWVuZCA9IHRoaXMubW9tZW50KGVuZCk7CgkJfQoJCWVsc2UgaWYgKHN0YXJ0Lmhhc1RpbWUoKSkgewoJCQllbmQgPSBzdGFydC5jbG9uZSgpLmFkZCh0aGlzLmRlZmF1bHRUaW1lZEV2ZW50RHVyYXRpb24pOwoJCX0KCQllbHNlIHsKCQkJZW5kID0gc3RhcnQuY2xvbmUoKS5hZGQodGhpcy5kZWZhdWx0QWxsRGF5RXZlbnREdXJhdGlvbik7CgkJfQoKCQlyZXR1cm4geyBzdGFydDogc3RhcnQsIGVuZDogZW5kIH07Cgl9Cgp9KTsKCgpmdW5jdGlvbiBDYWxlbmRhcl9jb25zdHJ1Y3RvcihlbGVtZW50LCBvdmVycmlkZXMpIHsKCXZhciB0ID0gdGhpczsKCgoJdC5pbml0T3B0aW9ucyhvdmVycmlkZXMgfHwge30pOwoJdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7CgoJCgkvLyBFeHBvcnRzCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXQucmVuZGVyID0gcmVuZGVyOwoJdC5kZXN0cm95ID0gZGVzdHJveTsKCXQucmVmZXRjaEV2ZW50cyA9IHJlZmV0Y2hFdmVudHM7Cgl0LnJlcG9ydEV2ZW50cyA9IHJlcG9ydEV2ZW50czsKCXQucmVwb3J0RXZlbnRDaGFuZ2UgPSByZXBvcnRFdmVudENoYW5nZTsKCXQucmVyZW5kZXJFdmVudHMgPSByZW5kZXJFdmVudHM7IC8vIGByZW5kZXJFdmVudHNgIHNlcnZlcyBhcyBhIHJlcmVuZGVyLiBhbiBBUEkgbWV0aG9kCgl0LmNoYW5nZVZpZXcgPSByZW5kZXJWaWV3OyAvLyBgcmVuZGVyVmlld2Agd2lsbCBzd2l0Y2ggdG8gYW5vdGhlciB2aWV3Cgl0LnNlbGVjdCA9IHNlbGVjdDsKCXQudW5zZWxlY3QgPSB1bnNlbGVjdDsKCXQucHJldiA9IHByZXY7Cgl0Lm5leHQgPSBuZXh0OwoJdC5wcmV2WWVhciA9IHByZXZZZWFyOwoJdC5uZXh0WWVhciA9IG5leHRZZWFyOwoJdC50b2RheSA9IHRvZGF5OwoJdC5nb3RvRGF0ZSA9IGdvdG9EYXRlOwoJdC5pbmNyZW1lbnREYXRlID0gaW5jcmVtZW50RGF0ZTsKCXQuem9vbVRvID0gem9vbVRvOwoJdC5nZXREYXRlID0gZ2V0RGF0ZTsKCXQuZ2V0Q2FsZW5kYXIgPSBnZXRDYWxlbmRhcjsKCXQuZ2V0VmlldyA9IGdldFZpZXc7Cgl0Lm9wdGlvbiA9IG9wdGlvbjsKCXQudHJpZ2dlciA9IHRyaWdnZXI7CgoKCgkvLyBMYW5ndWFnZS1kYXRhIEludGVybmFscwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCS8vIEFwcGx5IG92ZXJyaWRlcyB0byB0aGUgY3VycmVudCBsYW5ndWFnZSdzIGRhdGEKCgoJdmFyIGxvY2FsZURhdGEgPSBjcmVhdGVPYmplY3QoIC8vIG1ha2UgYSBjaGVhcCBjb3B5CgkJZ2V0TW9tZW50TG9jYWxlRGF0YShvcHRpb25zLmxhbmcpIC8vIHdpbGwgZmFsbCBiYWNrIHRvIGVuCgkpOwoKCWlmIChvcHRpb25zLm1vbnRoTmFtZXMpIHsKCQlsb2NhbGVEYXRhLl9tb250aHMgPSBvcHRpb25zLm1vbnRoTmFtZXM7Cgl9CglpZiAob3B0aW9ucy5tb250aE5hbWVzU2hvcnQpIHsKCQlsb2NhbGVEYXRhLl9tb250aHNTaG9ydCA9IG9wdGlvbnMubW9udGhOYW1lc1Nob3J0OwoJfQoJaWYgKG9wdGlvbnMuZGF5TmFtZXMpIHsKCQlsb2NhbGVEYXRhLl93ZWVrZGF5cyA9IG9wdGlvbnMuZGF5TmFtZXM7Cgl9CglpZiAob3B0aW9ucy5kYXlOYW1lc1Nob3J0KSB7CgkJbG9jYWxlRGF0YS5fd2Vla2RheXNTaG9ydCA9IG9wdGlvbnMuZGF5TmFtZXNTaG9ydDsKCX0KCWlmIChvcHRpb25zLmZpcnN0RGF5ICE9IG51bGwpIHsKCQl2YXIgX3dlZWsgPSBjcmVhdGVPYmplY3QobG9jYWxlRGF0YS5fd2Vlayk7IC8vIF93ZWVrOiB7IGRvdzogIyB9CgkJX3dlZWsuZG93ID0gb3B0aW9ucy5maXJzdERheTsKCQlsb2NhbGVEYXRhLl93ZWVrID0gX3dlZWs7Cgl9CgoJLy8gYXNzaWduIGEgbm9ybWFsaXplZCB2YWx1ZSwgdG8gYmUgdXNlZCBieSBvdXIgLndlZWsoKSBtb21lbnQgZXh0ZW5zaW9uCglsb2NhbGVEYXRhLl9mdWxsQ2FsZW5kYXJfd2Vla0NhbGMgPSAoZnVuY3Rpb24od2Vla0NhbGMpIHsKCQlpZiAodHlwZW9mIHdlZWtDYWxjID09PSAnZnVuY3Rpb24nKSB7CgkJCXJldHVybiB3ZWVrQ2FsYzsKCQl9CgkJZWxzZSBpZiAod2Vla0NhbGMgPT09ICdsb2NhbCcpIHsKCQkJcmV0dXJuIHdlZWtDYWxjOwoJCX0KCQllbHNlIGlmICh3ZWVrQ2FsYyA9PT0gJ2lzbycgfHwgd2Vla0NhbGMgPT09ICdJU08nKSB7CgkJCXJldHVybiAnSVNPJzsKCQl9Cgl9KShvcHRpb25zLndlZWtOdW1iZXJDYWxjdWxhdGlvbik7CgoKCgkvLyBDYWxlbmRhci1zcGVjaWZpYyBEYXRlIFV0aWxpdGllcwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJdC5kZWZhdWx0QWxsRGF5RXZlbnREdXJhdGlvbiA9IG1vbWVudC5kdXJhdGlvbihvcHRpb25zLmRlZmF1bHRBbGxEYXlFdmVudER1cmF0aW9uKTsKCXQuZGVmYXVsdFRpbWVkRXZlbnREdXJhdGlvbiA9IG1vbWVudC5kdXJhdGlvbihvcHRpb25zLmRlZmF1bHRUaW1lZEV2ZW50RHVyYXRpb24pOwoKCgkvLyBCdWlsZHMgYSBtb21lbnQgdXNpbmcgdGhlIHNldHRpbmdzIG9mIHRoZSBjdXJyZW50IGNhbGVuZGFyOiB0aW1lem9uZSBhbmQgbGFuZ3VhZ2UuCgkvLyBBY2NlcHRzIGFueXRoaW5nIHRoZSB2YW5pbGxhIG1vbWVudCgpIGNvbnN0cnVjdG9yIGFjY2VwdHMuCgl0Lm1vbWVudCA9IGZ1bmN0aW9uKCkgewoJCXZhciBtb207CgoJCWlmIChvcHRpb25zLnRpbWV6b25lID09PSAnbG9jYWwnKSB7CgkJCW1vbSA9IGZjLm1vbWVudC5hcHBseShudWxsLCBhcmd1bWVudHMpOwoKCQkJLy8gRm9yY2UgdGhlIG1vbWVudCB0byBiZSBsb2NhbCwgYmVjYXVzZSBmYy5tb21lbnQgZG9lc24ndCBndWFyYW50ZWUgaXQuCgkJCWlmIChtb20uaGFzVGltZSgpKSB7IC8vIGRvbid0IGdpdmUgYW1iaWd1b3VzbHktdGltZWQgbW9tZW50cyBhIGxvY2FsIHpvbmUKCQkJCW1vbS5sb2NhbCgpOwoJCQl9CgkJfQoJCWVsc2UgaWYgKG9wdGlvbnMudGltZXpvbmUgPT09ICdVVEMnKSB7CgkJCW1vbSA9IGZjLm1vbWVudC51dGMuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsgLy8gcHJvY2VzcyBhcyBVVEMKCQl9CgkJZWxzZSB7CgkJCW1vbSA9IGZjLm1vbWVudC5wYXJzZVpvbmUuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsgLy8gbGV0IHRoZSBpbnB1dCBkZWNpZGUgdGhlIHpvbmUKCQl9CgoJCWlmICgnX2xvY2FsZScgaW4gbW9tKSB7IC8vIG1vbWVudCAyLjggYW5kIGFib3ZlCgkJCW1vbS5fbG9jYWxlID0gbG9jYWxlRGF0YTsKCQl9CgkJZWxzZSB7IC8vIHByZS1tb21lbnQtMi44CgkJCW1vbS5fbGFuZyA9IGxvY2FsZURhdGE7CgkJfQoKCQlyZXR1cm4gbW9tOwoJfTsKCgoJLy8gUmV0dXJucyBhIGJvb2xlYW4gYWJvdXQgd2hldGhlciBvciBub3QgdGhlIGNhbGVuZGFyIGtub3dzIGhvdyB0byBjYWxjdWxhdGUKCS8vIHRoZSB0aW1lem9uZSBvZmZzZXQgb2YgYXJiaXRyYXJ5IGRhdGVzIGluIHRoZSBjdXJyZW50IHRpbWV6b25lLgoJdC5nZXRJc0FtYmlnVGltZXpvbmUgPSBmdW5jdGlvbigpIHsKCQlyZXR1cm4gb3B0aW9ucy50aW1lem9uZSAhPT0gJ2xvY2FsJyAmJiBvcHRpb25zLnRpbWV6b25lICE9PSAnVVRDJzsKCX07CgoKCS8vIFJldHVybnMgYSBjb3B5IG9mIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBjdXJyZW50IHRpbWV6b25lIG9mIGl0IGlzIGFtYmlndW91c2x5IHpvbmVkLgoJLy8gVGhpcyB3aWxsIGFsc28gZ2l2ZSB0aGUgZGF0ZSBhbiB1bmFtYmlndW91cyB0aW1lLgoJdC5yZXpvbmVEYXRlID0gZnVuY3Rpb24oZGF0ZSkgewoJCXJldHVybiB0Lm1vbWVudChkYXRlLnRvQXJyYXkoKSk7Cgl9OwoKCgkvLyBSZXR1cm5zIGEgbW9tZW50IGZvciB0aGUgY3VycmVudCBkYXRlLCBhcyBkZWZpbmVkIGJ5IHRoZSBjbGllbnQncyBjb21wdXRlciwKCS8vIG9yIG92ZXJyaWRkZW4gYnkgdGhlIGBub3dgIG9wdGlvbi4KCXQuZ2V0Tm93ID0gZnVuY3Rpb24oKSB7CgkJdmFyIG5vdyA9IG9wdGlvbnMubm93OwoJCWlmICh0eXBlb2Ygbm93ID09PSAnZnVuY3Rpb24nKSB7CgkJCW5vdyA9IG5vdygpOwoJCX0KCQlyZXR1cm4gdC5tb21lbnQobm93KTsKCX07CgoKCS8vIEdldCBhbiBldmVudCdzIG5vcm1hbGl6ZWQgZW5kIGRhdGUuIElmIG5vdCBwcmVzZW50LCBjYWxjdWxhdGUgaXQgZnJvbSB0aGUgZGVmYXVsdHMuCgl0LmdldEV2ZW50RW5kID0gZnVuY3Rpb24oZXZlbnQpIHsKCQlpZiAoZXZlbnQuZW5kKSB7CgkJCXJldHVybiBldmVudC5lbmQuY2xvbmUoKTsKCQl9CgkJZWxzZSB7CgkJCXJldHVybiB0LmdldERlZmF1bHRFdmVudEVuZChldmVudC5hbGxEYXksIGV2ZW50LnN0YXJ0KTsKCQl9Cgl9OwoKCgkvLyBHaXZlbiBhbiBldmVudCdzIGFsbERheSBzdGF0dXMgYW5kIHN0YXJ0IGRhdGUsIHJldHVybiBzd2hhdCBpdHMgZmFsbGJhY2sgZW5kIGRhdGUgc2hvdWxkIGJlLgoJdC5nZXREZWZhdWx0RXZlbnRFbmQgPSBmdW5jdGlvbihhbGxEYXksIHN0YXJ0KSB7IC8vIFRPRE86IHJlbmFtZSB0byBjb21wdXRlRGVmYXVsdEV2ZW50RW5kCgkJdmFyIGVuZCA9IHN0YXJ0LmNsb25lKCk7CgoJCWlmIChhbGxEYXkpIHsKCQkJZW5kLnN0cmlwVGltZSgpLmFkZCh0LmRlZmF1bHRBbGxEYXlFdmVudER1cmF0aW9uKTsKCQl9CgkJZWxzZSB7CgkJCWVuZC5hZGQodC5kZWZhdWx0VGltZWRFdmVudER1cmF0aW9uKTsKCQl9CgoJCWlmICh0LmdldElzQW1iaWdUaW1lem9uZSgpKSB7CgkJCWVuZC5zdHJpcFpvbmUoKTsgLy8gd2UgZG9uJ3Qga25vdyB3aGF0IHRoZSB0em8gc2hvdWxkIGJlCgkJfQoKCQlyZXR1cm4gZW5kOwoJfTsKCgoJLy8gUHJvZHVjZXMgYSBodW1hbi1yZWFkYWJsZSBzdHJpbmcgZm9yIHRoZSBnaXZlbiBkdXJhdGlvbi4KCS8vIFNpZGUtZWZmZWN0OiBjaGFuZ2VzIHRoZSBsb2NhbGUgb2YgdGhlIGdpdmVuIGR1cmF0aW9uLgoJdC5odW1hbml6ZUR1cmF0aW9uID0gZnVuY3Rpb24oZHVyYXRpb24pIHsKCQlyZXR1cm4gKGR1cmF0aW9uLmxvY2FsZSB8fCBkdXJhdGlvbi5sYW5nKS5jYWxsKGR1cmF0aW9uLCBvcHRpb25zLmxhbmcpIC8vIHdvcmtzIG1vbWVudC1wcmUtMi44CgkJCS5odW1hbml6ZSgpOwoJfTsKCgoJCgkvLyBJbXBvcnRzCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCglFdmVudE1hbmFnZXIuY2FsbCh0LCBvcHRpb25zKTsKCXZhciBpc0ZldGNoTmVlZGVkID0gdC5pc0ZldGNoTmVlZGVkOwoJdmFyIGZldGNoRXZlbnRzID0gdC5mZXRjaEV2ZW50czsKCgoKCS8vIExvY2FscwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJdmFyIF9lbGVtZW50ID0gZWxlbWVudFswXTsKCXZhciBoZWFkZXI7Cgl2YXIgaGVhZGVyRWxlbWVudDsKCXZhciBjb250ZW50OwoJdmFyIHRtOyAvLyBmb3IgbWFraW5nIHRoZW1lIGNsYXNzZXMKCXZhciBjdXJyZW50VmlldzsgLy8gTk9URToga2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0aGlzLnZpZXcKCXZhciB2aWV3c0J5VHlwZSA9IHt9OyAvLyBob2xkcyBhbGwgaW5zdGFudGlhdGVkIHZpZXcgaW5zdGFuY2VzLCBjdXJyZW50IG9yIG5vdAoJdmFyIHN1Z2dlc3RlZFZpZXdIZWlnaHQ7Cgl2YXIgd2luZG93UmVzaXplUHJveHk7IC8vIHdyYXBzIHRoZSB3aW5kb3dSZXNpemUgZnVuY3Rpb24KCXZhciBpZ25vcmVXaW5kb3dSZXNpemUgPSAwOwoJdmFyIGRhdGU7Cgl2YXIgZXZlbnRzID0gW107CgkKCQoJCgkvLyBNYWluIFJlbmRlcmluZwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJaWYgKG9wdGlvbnMuZGVmYXVsdERhdGUgIT0gbnVsbCkgewoJCWRhdGUgPSB0Lm1vbWVudChvcHRpb25zLmRlZmF1bHREYXRlKTsKCX0KCWVsc2UgewoJCWRhdGUgPSB0LmdldE5vdygpOwoJfQoJCgkKCWZ1bmN0aW9uIHJlbmRlcigpIHsKCQlpZiAoIWNvbnRlbnQpIHsKCQkJaW5pdGlhbFJlbmRlcigpOwoJCX0KCQllbHNlIGlmIChlbGVtZW50VmlzaWJsZSgpKSB7CgkJCS8vIG1haW5seSBmb3IgdGhlIHB1YmxpYyBBUEkKCQkJY2FsY1NpemUoKTsKCQkJcmVuZGVyVmlldygpOwoJCX0KCX0KCQoJCglmdW5jdGlvbiBpbml0aWFsUmVuZGVyKCkgewoJCXRtID0gb3B0aW9ucy50aGVtZSA/ICd1aScgOiAnZmMnOwoJCWVsZW1lbnQuYWRkQ2xhc3MoJ2ZjJyk7CgoJCWlmIChvcHRpb25zLmlzUlRMKSB7CgkJCWVsZW1lbnQuYWRkQ2xhc3MoJ2ZjLXJ0bCcpOwoJCX0KCQllbHNlIHsKCQkJZWxlbWVudC5hZGRDbGFzcygnZmMtbHRyJyk7CgkJfQoKCQlpZiAob3B0aW9ucy50aGVtZSkgewoJCQllbGVtZW50LmFkZENsYXNzKCd1aS13aWRnZXQnKTsKCQl9CgkJZWxzZSB7CgkJCWVsZW1lbnQuYWRkQ2xhc3MoJ2ZjLXVudGhlbWVkJyk7CgkJfQoKCQljb250ZW50ID0gJCgiPGRpdiBjbGFzcz0nZmMtdmlldy1jb250YWluZXInLz4iKS5wcmVwZW5kVG8oZWxlbWVudCk7CgoJCWhlYWRlciA9IHQuaGVhZGVyID0gbmV3IEhlYWRlcih0LCBvcHRpb25zKTsKCQloZWFkZXJFbGVtZW50ID0gaGVhZGVyLnJlbmRlcigpOwoJCWlmIChoZWFkZXJFbGVtZW50KSB7CgkJCWVsZW1lbnQucHJlcGVuZChoZWFkZXJFbGVtZW50KTsKCQl9CgoJCXJlbmRlclZpZXcob3B0aW9ucy5kZWZhdWx0Vmlldyk7CgoJCWlmIChvcHRpb25zLmhhbmRsZVdpbmRvd1Jlc2l6ZSkgewoJCQl3aW5kb3dSZXNpemVQcm94eSA9IGRlYm91bmNlKHdpbmRvd1Jlc2l6ZSwgb3B0aW9ucy53aW5kb3dSZXNpemVEZWxheSk7IC8vIHByZXZlbnRzIHJhcGlkIGNhbGxzCgkJCSQod2luZG93KS5yZXNpemUod2luZG93UmVzaXplUHJveHkpOwoJCX0KCX0KCQoJCglmdW5jdGlvbiBkZXN0cm95KCkgewoKCQlpZiAoY3VycmVudFZpZXcpIHsKCQkJY3VycmVudFZpZXcucmVtb3ZlRWxlbWVudCgpOwoKCQkJLy8gTk9URTogZG9uJ3QgbnVsbC1vdXQgY3VycmVudFZpZXcvdC52aWV3IGluIGNhc2UgQVBJIG1ldGhvZHMgYXJlIGNhbGxlZCBhZnRlciBkZXN0cm95LgoJCQkvLyBJdCBpcyBzdGlsbCB0aGUgImN1cnJlbnQiIHZpZXcsIGp1c3Qgbm90IHJlbmRlcmVkLgoJCX0KCgkJaGVhZGVyLnJlbW92ZUVsZW1lbnQoKTsKCQljb250ZW50LnJlbW92ZSgpOwoJCWVsZW1lbnQucmVtb3ZlQ2xhc3MoJ2ZjIGZjLWx0ciBmYy1ydGwgZmMtdW50aGVtZWQgdWktd2lkZ2V0Jyk7CgoJCWlmICh3aW5kb3dSZXNpemVQcm94eSkgewoJCQkkKHdpbmRvdykudW5iaW5kKCdyZXNpemUnLCB3aW5kb3dSZXNpemVQcm94eSk7CgkJfQoJfQoJCgkKCWZ1bmN0aW9uIGVsZW1lbnRWaXNpYmxlKCkgewoJCXJldHVybiBlbGVtZW50LmlzKCc6dmlzaWJsZScpOwoJfQoJCgkKCgkvLyBWaWV3IFJlbmRlcmluZwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJLy8gUmVuZGVycyBhIHZpZXcgYmVjYXVzZSBvZiBhIGRhdGUgY2hhbmdlLCB2aWV3LXR5cGUgY2hhbmdlLCBvciBmb3IgdGhlIGZpcnN0IHRpbWUuCgkvLyBJZiBub3QgZ2l2ZW4gYSB2aWV3VHlwZSwga2VlcCB0aGUgY3VycmVudCB2aWV3IGJ1dCByZW5kZXIgZGlmZmVyZW50IGRhdGVzLgoJZnVuY3Rpb24gcmVuZGVyVmlldyh2aWV3VHlwZSkgewoJCWlnbm9yZVdpbmRvd1Jlc2l6ZSsrOwoKCQkvLyBpZiB2aWV3VHlwZSBpcyBjaGFuZ2luZywgcmVtb3ZlIHRoZSBvbGQgdmlldydzIHJlbmRlcmluZwoJCWlmIChjdXJyZW50VmlldyAmJiB2aWV3VHlwZSAmJiBjdXJyZW50Vmlldy50eXBlICE9PSB2aWV3VHlwZSkgewoJCQloZWFkZXIuZGVhY3RpdmF0ZUJ1dHRvbihjdXJyZW50Vmlldy50eXBlKTsKCQkJZnJlZXplQ29udGVudEhlaWdodCgpOyAvLyBwcmV2ZW50IGEgc2Nyb2xsIGp1bXAgd2hlbiB2aWV3IGVsZW1lbnQgaXMgcmVtb3ZlZAoJCQljdXJyZW50Vmlldy5yZW1vdmVFbGVtZW50KCk7CgkJCWN1cnJlbnRWaWV3ID0gdC52aWV3ID0gbnVsbDsKCQl9CgoJCS8vIGlmIHZpZXdUeXBlIGNoYW5nZWQsIG9yIHRoZSB2aWV3IHdhcyBuZXZlciBjcmVhdGVkLCBjcmVhdGUgYSBmcmVzaCB2aWV3CgkJaWYgKCFjdXJyZW50VmlldyAmJiB2aWV3VHlwZSkgewoJCQljdXJyZW50VmlldyA9IHQudmlldyA9CgkJCQl2aWV3c0J5VHlwZVt2aWV3VHlwZV0gfHwKCQkJCSh2aWV3c0J5VHlwZVt2aWV3VHlwZV0gPSB0Lmluc3RhbnRpYXRlVmlldyh2aWV3VHlwZSkpOwoKCQkJY3VycmVudFZpZXcuc2V0RWxlbWVudCgKCQkJCSQoIjxkaXYgY2xhc3M9J2ZjLXZpZXcgZmMtIiArIHZpZXdUeXBlICsgIi12aWV3JyAvPiIpLmFwcGVuZFRvKGNvbnRlbnQpCgkJCSk7CgkJCWhlYWRlci5hY3RpdmF0ZUJ1dHRvbih2aWV3VHlwZSk7CgkJfQoKCQlpZiAoY3VycmVudFZpZXcpIHsKCgkJCS8vIGluIGNhc2UgdGhlIHZpZXcgc2hvdWxkIHJlbmRlciBhIHBlcmlvZCBvZiB0aW1lIHRoYXQgaXMgY29tcGxldGVseSBoaWRkZW4KCQkJZGF0ZSA9IGN1cnJlbnRWaWV3Lm1hc3NhZ2VDdXJyZW50RGF0ZShkYXRlKTsKCgkJCS8vIHJlbmRlciBvciByZXJlbmRlciB0aGUgdmlldwoJCQlpZiAoCgkJCQkhY3VycmVudFZpZXcuZGlzcGxheWluZyB8fAoJCQkJIWRhdGUuaXNXaXRoaW4oY3VycmVudFZpZXcuaW50ZXJ2YWxTdGFydCwgY3VycmVudFZpZXcuaW50ZXJ2YWxFbmQpIC8vIGltcGxpY2l0IGRhdGUgd2luZG93IGNoYW5nZQoJCQkpIHsKCQkJCWlmIChlbGVtZW50VmlzaWJsZSgpKSB7CgoJCQkJCWZyZWV6ZUNvbnRlbnRIZWlnaHQoKTsKCQkJCQljdXJyZW50Vmlldy5kaXNwbGF5KGRhdGUpOwoJCQkJCXVuZnJlZXplQ29udGVudEhlaWdodCgpOyAvLyBpbW1lZGlhdGVseSB1bmZyZWV6ZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgZGlzcGxheSBpcyBhc3luYwoKCQkJCQkvLyBuZWVkIHRvIGRvIHRoaXMgYWZ0ZXIgVmlldzo6cmVuZGVyLCBzbyBkYXRlcyBhcmUgY2FsY3VsYXRlZAoJCQkJCXVwZGF0ZUhlYWRlclRpdGxlKCk7CgkJCQkJdXBkYXRlVG9kYXlCdXR0b24oKTsKCgkJCQkJZ2V0QW5kUmVuZGVyRXZlbnRzKCk7CgkJCQl9CgkJCX0KCQl9CgoJCXVuZnJlZXplQ29udGVudEhlaWdodCgpOyAvLyB1bmRvIGFueSBsb25lIGZyZWV6ZUNvbnRlbnRIZWlnaHQgY2FsbHMKCQlpZ25vcmVXaW5kb3dSZXNpemUtLTsKCX0KCgkKCgkvLyBSZXNpemluZwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJdC5nZXRTdWdnZXN0ZWRWaWV3SGVpZ2h0ID0gZnVuY3Rpb24oKSB7CgkJaWYgKHN1Z2dlc3RlZFZpZXdIZWlnaHQgPT09IHVuZGVmaW5lZCkgewoJCQljYWxjU2l6ZSgpOwoJCX0KCQlyZXR1cm4gc3VnZ2VzdGVkVmlld0hlaWdodDsKCX07CgoKCXQuaXNIZWlnaHRBdXRvID0gZnVuY3Rpb24oKSB7CgkJcmV0dXJuIG9wdGlvbnMuY29udGVudEhlaWdodCA9PT0gJ2F1dG8nIHx8IG9wdGlvbnMuaGVpZ2h0ID09PSAnYXV0byc7Cgl9OwoJCgkKCWZ1bmN0aW9uIHVwZGF0ZVNpemUoc2hvdWxkUmVjYWxjKSB7CgkJaWYgKGVsZW1lbnRWaXNpYmxlKCkpIHsKCgkJCWlmIChzaG91bGRSZWNhbGMpIHsKCQkJCV9jYWxjU2l6ZSgpOwoJCQl9CgoJCQlpZ25vcmVXaW5kb3dSZXNpemUrKzsKCQkJY3VycmVudFZpZXcudXBkYXRlU2l6ZSh0cnVlKTsgLy8gaXNSZXNpemU9dHJ1ZS4gd2lsbCBwb2xsIGdldFN1Z2dlc3RlZFZpZXdIZWlnaHQoKSBhbmQgaXNIZWlnaHRBdXRvKCkKCQkJaWdub3JlV2luZG93UmVzaXplLS07CgoJCQlyZXR1cm4gdHJ1ZTsgLy8gc2lnbmFsIHN1Y2Nlc3MKCQl9Cgl9CgoKCWZ1bmN0aW9uIGNhbGNTaXplKCkgewoJCWlmIChlbGVtZW50VmlzaWJsZSgpKSB7CgkJCV9jYWxjU2l6ZSgpOwoJCX0KCX0KCQoJCglmdW5jdGlvbiBfY2FsY1NpemUoKSB7IC8vIGFzc3VtZXMgZWxlbWVudFZpc2libGUKCQlpZiAodHlwZW9mIG9wdGlvbnMuY29udGVudEhlaWdodCA9PT0gJ251bWJlcicpIHsgLy8gZXhpc3RzIGFuZCBub3QgJ2F1dG8nCgkJCXN1Z2dlc3RlZFZpZXdIZWlnaHQgPSBvcHRpb25zLmNvbnRlbnRIZWlnaHQ7CgkJfQoJCWVsc2UgaWYgKHR5cGVvZiBvcHRpb25zLmhlaWdodCA9PT0gJ251bWJlcicpIHsgLy8gZXhpc3RzIGFuZCBub3QgJ2F1dG8nCgkJCXN1Z2dlc3RlZFZpZXdIZWlnaHQgPSBvcHRpb25zLmhlaWdodCAtIChoZWFkZXJFbGVtZW50ID8gaGVhZGVyRWxlbWVudC5vdXRlckhlaWdodCh0cnVlKSA6IDApOwoJCX0KCQllbHNlIHsKCQkJc3VnZ2VzdGVkVmlld0hlaWdodCA9IE1hdGgucm91bmQoY29udGVudC53aWR0aCgpIC8gTWF0aC5tYXgob3B0aW9ucy5hc3BlY3RSYXRpbywgLjUpKTsKCQl9Cgl9CgkKCQoJZnVuY3Rpb24gd2luZG93UmVzaXplKGV2KSB7CgkJaWYgKAoJCQkhaWdub3JlV2luZG93UmVzaXplICYmCgkJCWV2LnRhcmdldCA9PT0gd2luZG93ICYmIC8vIHNvIHdlIGRvbid0IHByb2Nlc3MganF1aSAicmVzaXplIiBldmVudHMgdGhhdCBoYXZlIGJ1YmJsZWQgdXAKCQkJY3VycmVudFZpZXcuc3RhcnQgLy8gdmlldyBoYXMgYWxyZWFkeSBiZWVuIHJlbmRlcmVkCgkJKSB7CgkJCWlmICh1cGRhdGVTaXplKHRydWUpKSB7CgkJCQljdXJyZW50Vmlldy50cmlnZ2VyKCd3aW5kb3dSZXNpemUnLCBfZWxlbWVudCk7CgkJCX0KCQl9Cgl9CgkKCQoJCgkvKiBFdmVudCBGZXRjaGluZy9SZW5kZXJpbmcKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCS8vIFRPRE86IGdvaW5nIGZvcndhcmQsIG1vc3Qgb2YgdGhpcyBzdHVmZiBzaG91bGQgYmUgZGlyZWN0bHkgaGFuZGxlZCBieSB0aGUgdmlldwoKCglmdW5jdGlvbiByZWZldGNoRXZlbnRzKCkgeyAvLyBjYW4gYmUgY2FsbGVkIGFzIGFuIEFQSSBtZXRob2QKCQlkZXN0cm95RXZlbnRzKCk7IC8vIHNvIHRoYXQgZXZlbnRzIGFyZSBjbGVhcmVkIGJlZm9yZSB1c2VyIHN0YXJ0cyB3YWl0aW5nIGZvciBBSkFYCgkJZmV0Y2hBbmRSZW5kZXJFdmVudHMoKTsKCX0KCgoJZnVuY3Rpb24gcmVuZGVyRXZlbnRzKCkgeyAvLyBkZXN0cm95cyBvbGQgZXZlbnRzIGlmIHByZXZpb3VzbHkgcmVuZGVyZWQKCQlpZiAoZWxlbWVudFZpc2libGUoKSkgewoJCQlmcmVlemVDb250ZW50SGVpZ2h0KCk7CgkJCWN1cnJlbnRWaWV3LmRpc3BsYXlFdmVudHMoZXZlbnRzKTsKCQkJdW5mcmVlemVDb250ZW50SGVpZ2h0KCk7CgkJfQoJfQoKCglmdW5jdGlvbiBkZXN0cm95RXZlbnRzKCkgewoJCWZyZWV6ZUNvbnRlbnRIZWlnaHQoKTsKCQljdXJyZW50Vmlldy5jbGVhckV2ZW50cygpOwoJCXVuZnJlZXplQ29udGVudEhlaWdodCgpOwoJfQoJCgoJZnVuY3Rpb24gZ2V0QW5kUmVuZGVyRXZlbnRzKCkgewoJCWlmICghb3B0aW9ucy5sYXp5RmV0Y2hpbmcgfHwgaXNGZXRjaE5lZWRlZChjdXJyZW50Vmlldy5zdGFydCwgY3VycmVudFZpZXcuZW5kKSkgewoJCQlmZXRjaEFuZFJlbmRlckV2ZW50cygpOwoJCX0KCQllbHNlIHsKCQkJcmVuZGVyRXZlbnRzKCk7CgkJfQoJfQoKCglmdW5jdGlvbiBmZXRjaEFuZFJlbmRlckV2ZW50cygpIHsKCQlmZXRjaEV2ZW50cyhjdXJyZW50Vmlldy5zdGFydCwgY3VycmVudFZpZXcuZW5kKTsKCQkJLy8gLi4uIHdpbGwgY2FsbCByZXBvcnRFdmVudHMKCQkJLy8gLi4uIHdoaWNoIHdpbGwgY2FsbCByZW5kZXJFdmVudHMKCX0KCgkKCS8vIGNhbGxlZCB3aGVuIGV2ZW50IGRhdGEgYXJyaXZlcwoJZnVuY3Rpb24gcmVwb3J0RXZlbnRzKF9ldmVudHMpIHsKCQlldmVudHMgPSBfZXZlbnRzOwoJCXJlbmRlckV2ZW50cygpOwoJfQoKCgkvLyBjYWxsZWQgd2hlbiBhIHNpbmdsZSBldmVudCdzIGRhdGEgaGFzIGJlZW4gY2hhbmdlZAoJZnVuY3Rpb24gcmVwb3J0RXZlbnRDaGFuZ2UoKSB7CgkJcmVuZGVyRXZlbnRzKCk7Cgl9CgoKCgkvKiBIZWFkZXIgVXBkYXRpbmcKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJZnVuY3Rpb24gdXBkYXRlSGVhZGVyVGl0bGUoKSB7CgkJaGVhZGVyLnVwZGF0ZVRpdGxlKGN1cnJlbnRWaWV3LnRpdGxlKTsKCX0KCgoJZnVuY3Rpb24gdXBkYXRlVG9kYXlCdXR0b24oKSB7CgkJdmFyIG5vdyA9IHQuZ2V0Tm93KCk7CgkJaWYgKG5vdy5pc1dpdGhpbihjdXJyZW50Vmlldy5pbnRlcnZhbFN0YXJ0LCBjdXJyZW50Vmlldy5pbnRlcnZhbEVuZCkpIHsKCQkJaGVhZGVyLmRpc2FibGVCdXR0b24oJ3RvZGF5Jyk7CgkJfQoJCWVsc2UgewoJCQloZWFkZXIuZW5hYmxlQnV0dG9uKCd0b2RheScpOwoJCX0KCX0KCQoKCgkvKiBTZWxlY3Rpb24KCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCQoKCWZ1bmN0aW9uIHNlbGVjdChzdGFydCwgZW5kKSB7CgkJY3VycmVudFZpZXcuc2VsZWN0KAoJCQl0LmJ1aWxkU2VsZWN0UmFuZ2UuYXBwbHkodCwgYXJndW1lbnRzKQoJCSk7Cgl9CgkKCglmdW5jdGlvbiB1bnNlbGVjdCgpIHsgLy8gc2FmZSB0byBiZSBjYWxsZWQgYmVmb3JlIHJlbmRlclZpZXcKCQlpZiAoY3VycmVudFZpZXcpIHsKCQkJY3VycmVudFZpZXcudW5zZWxlY3QoKTsKCQl9Cgl9CgkKCQoJCgkvKiBEYXRlCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgkKCQoJZnVuY3Rpb24gcHJldigpIHsKCQlkYXRlID0gY3VycmVudFZpZXcuY29tcHV0ZVByZXZEYXRlKGRhdGUpOwoJCXJlbmRlclZpZXcoKTsKCX0KCQoJCglmdW5jdGlvbiBuZXh0KCkgewoJCWRhdGUgPSBjdXJyZW50Vmlldy5jb21wdXRlTmV4dERhdGUoZGF0ZSk7CgkJcmVuZGVyVmlldygpOwoJfQoJCgkKCWZ1bmN0aW9uIHByZXZZZWFyKCkgewoJCWRhdGUuYWRkKC0xLCAneWVhcnMnKTsKCQlyZW5kZXJWaWV3KCk7Cgl9CgkKCQoJZnVuY3Rpb24gbmV4dFllYXIoKSB7CgkJZGF0ZS5hZGQoMSwgJ3llYXJzJyk7CgkJcmVuZGVyVmlldygpOwoJfQoJCgkKCWZ1bmN0aW9uIHRvZGF5KCkgewoJCWRhdGUgPSB0LmdldE5vdygpOwoJCXJlbmRlclZpZXcoKTsKCX0KCQoJCglmdW5jdGlvbiBnb3RvRGF0ZShkYXRlSW5wdXQpIHsKCQlkYXRlID0gdC5tb21lbnQoZGF0ZUlucHV0KTsKCQlyZW5kZXJWaWV3KCk7Cgl9CgkKCQoJZnVuY3Rpb24gaW5jcmVtZW50RGF0ZShkZWx0YSkgewoJCWRhdGUuYWRkKG1vbWVudC5kdXJhdGlvbihkZWx0YSkpOwoJCXJlbmRlclZpZXcoKTsKCX0KCgoJLy8gRm9yY2VzIG5hdmlnYXRpb24gdG8gYSB2aWV3IGZvciB0aGUgZ2l2ZW4gZGF0ZS4KCS8vIGB2aWV3VHlwZWAgY2FuIGJlIGEgc3BlY2lmaWMgdmlldyBuYW1lIG9yIGEgZ2VuZXJpYyBvbmUgbGlrZSAid2VlayIgb3IgImRheSIuCglmdW5jdGlvbiB6b29tVG8obmV3RGF0ZSwgdmlld1R5cGUpIHsKCQl2YXIgc3BlYzsKCgkJdmlld1R5cGUgPSB2aWV3VHlwZSB8fCAnZGF5JzsgLy8gZGF5IGlzIGRlZmF1bHQgem9vbQoJCXNwZWMgPSB0LmdldFZpZXdTcGVjKHZpZXdUeXBlKSB8fCB0LmdldFVuaXRWaWV3U3BlYyh2aWV3VHlwZSk7CgoJCWRhdGUgPSBuZXdEYXRlOwoJCXJlbmRlclZpZXcoc3BlYyA/IHNwZWMudHlwZSA6IG51bGwpOwoJfQoJCgkKCWZ1bmN0aW9uIGdldERhdGUoKSB7CgkJcmV0dXJuIGRhdGUuY2xvbmUoKTsKCX0KCgoKCS8qIEhlaWdodCAiRnJlZXppbmciCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgkvLyBUT0RPOiBtb3ZlIHRoaXMgaW50byB0aGUgdmlldwoKCglmdW5jdGlvbiBmcmVlemVDb250ZW50SGVpZ2h0KCkgewoJCWNvbnRlbnQuY3NzKHsKCQkJd2lkdGg6ICcxMDAlJywKCQkJaGVpZ2h0OiBjb250ZW50LmhlaWdodCgpLAoJCQlvdmVyZmxvdzogJ2hpZGRlbicKCQl9KTsKCX0KCgoJZnVuY3Rpb24gdW5mcmVlemVDb250ZW50SGVpZ2h0KCkgewoJCWNvbnRlbnQuY3NzKHsKCQkJd2lkdGg6ICcnLAoJCQloZWlnaHQ6ICcnLAoJCQlvdmVyZmxvdzogJycKCQl9KTsKCX0KCQoJCgkKCS8qIE1pc2MKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCQoKCWZ1bmN0aW9uIGdldENhbGVuZGFyKCkgewoJCXJldHVybiB0OwoJfQoKCQoJZnVuY3Rpb24gZ2V0VmlldygpIHsKCQlyZXR1cm4gY3VycmVudFZpZXc7Cgl9CgkKCQoJZnVuY3Rpb24gb3B0aW9uKG5hbWUsIHZhbHVlKSB7CgkJaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHsKCQkJcmV0dXJuIG9wdGlvbnNbbmFtZV07CgkJfQoJCWlmIChuYW1lID09ICdoZWlnaHQnIHx8IG5hbWUgPT0gJ2NvbnRlbnRIZWlnaHQnIHx8IG5hbWUgPT0gJ2FzcGVjdFJhdGlvJykgewoJCQlvcHRpb25zW25hbWVdID0gdmFsdWU7CgkJCXVwZGF0ZVNpemUodHJ1ZSk7IC8vIHRydWUgPSBhbGxvdyByZWNhbGN1bGF0aW9uIG9mIGhlaWdodAoJCX0KCX0KCQoJCglmdW5jdGlvbiB0cmlnZ2VyKG5hbWUsIHRoaXNPYmopIHsKCQlpZiAob3B0aW9uc1tuYW1lXSkgewoJCQlyZXR1cm4gb3B0aW9uc1tuYW1lXS5hcHBseSgKCQkJCXRoaXNPYmogfHwgX2VsZW1lbnQsCgkJCQlBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpCgkJCSk7CgkJfQoJfQoKCXQuaW5pdGlhbGl6ZSgpOwp9Cgo7OwoKQ2FsZW5kYXIuZGVmYXVsdHMgPSB7CgoJdGl0bGVSYW5nZVNlcGFyYXRvcjogJyBcdTIwMTQgJywgLy8gZW1waGFzaXplZCBkYXNoCgltb250aFllYXJGb3JtYXQ6ICdNTU1NIFlZWVknLCAvLyByZXF1aXJlZCBmb3IgZW4uIG90aGVyIGxhbmd1YWdlcyByZWx5IG9uIGRhdGVwaWNrZXIgY29tcHV0YWJsZSBvcHRpb24KCglkZWZhdWx0VGltZWRFdmVudER1cmF0aW9uOiAnMDI6MDA6MDAnLAoJZGVmYXVsdEFsbERheUV2ZW50RHVyYXRpb246IHsgZGF5czogMSB9LAoJZm9yY2VFdmVudER1cmF0aW9uOiBmYWxzZSwKCW5leHREYXlUaHJlc2hvbGQ6ICcwOTowMDowMCcsIC8vIDlhbQoKCS8vIGRpc3BsYXkKCWRlZmF1bHRWaWV3OiAnbW9udGgnLAoJYXNwZWN0UmF0aW86IDEuMzUsCgloZWFkZXI6IHsKCQlsZWZ0OiAndGl0bGUnLAoJCWNlbnRlcjogJycsCgkJcmlnaHQ6ICd0b2RheSBwcmV2LG5leHQnCgl9LAoJd2Vla2VuZHM6IHRydWUsCgl3ZWVrTnVtYmVyczogZmFsc2UsCgoJd2Vla051bWJlclRpdGxlOiAnVycsCgl3ZWVrTnVtYmVyQ2FsY3VsYXRpb246ICdsb2NhbCcsCgkKCS8vZWRpdGFibGU6IGZhbHNlLAoKCXNjcm9sbFRpbWU6ICcwNjowMDowMCcsCgkKCS8vIGV2ZW50IGFqYXgKCWxhenlGZXRjaGluZzogdHJ1ZSwKCXN0YXJ0UGFyYW06ICdzdGFydCcsCgllbmRQYXJhbTogJ2VuZCcsCgl0aW1lem9uZVBhcmFtOiAndGltZXpvbmUnLAoKCXRpbWV6b25lOiBmYWxzZSwKCgkvL2FsbERheURlZmF1bHQ6IHVuZGVmaW5lZCwKCgkvLyBsb2NhbGUKCWlzUlRMOiBmYWxzZSwKCWJ1dHRvblRleHQ6IHsKCQlwcmV2OiAicHJldiIsCgkJbmV4dDogIm5leHQiLAoJCXByZXZZZWFyOiAicHJldiB5ZWFyIiwKCQluZXh0WWVhcjogIm5leHQgeWVhciIsCgkJeWVhcjogJ3llYXInLCAvLyBUT0RPOiBsb2NhbGUgZmlsZXMgbmVlZCB0byBzcGVjaWZ5IHRoaXMKCQl0b2RheTogJ3RvZGF5JywKCQltb250aDogJ21vbnRoJywKCQl3ZWVrOiAnd2VlaycsCgkJZGF5OiAnZGF5JwoJfSwKCglidXR0b25JY29uczogewoJCXByZXY6ICdsZWZ0LXNpbmdsZS1hcnJvdycsCgkJbmV4dDogJ3JpZ2h0LXNpbmdsZS1hcnJvdycsCgkJcHJldlllYXI6ICdsZWZ0LWRvdWJsZS1hcnJvdycsCgkJbmV4dFllYXI6ICdyaWdodC1kb3VibGUtYXJyb3cnCgl9LAoJCgkvLyBqcXVlcnktdWkgdGhlbWluZwoJdGhlbWU6IGZhbHNlLAoJdGhlbWVCdXR0b25JY29uczogewoJCXByZXY6ICdjaXJjbGUtdHJpYW5nbGUtdycsCgkJbmV4dDogJ2NpcmNsZS10cmlhbmdsZS1lJywKCQlwcmV2WWVhcjogJ3NlZWstcHJldicsCgkJbmV4dFllYXI6ICdzZWVrLW5leHQnCgl9LAoKCS8vZXZlbnRSZXNpemFibGVGcm9tU3RhcnQ6IGZhbHNlLAoJZHJhZ09wYWNpdHk6IC43NSwKCWRyYWdSZXZlcnREdXJhdGlvbjogNTAwLAoJZHJhZ1Njcm9sbDogdHJ1ZSwKCQoJLy9zZWxlY3RhYmxlOiBmYWxzZSwKCXVuc2VsZWN0QXV0bzogdHJ1ZSwKCQoJZHJvcEFjY2VwdDogJyonLAoKCWV2ZW50TGltaXQ6IGZhbHNlLAoJZXZlbnRMaW1pdFRleHQ6ICdtb3JlJywKCWV2ZW50TGltaXRDbGljazogJ3BvcG92ZXInLAoJZGF5UG9wb3ZlckZvcm1hdDogJ0xMJywKCQoJaGFuZGxlV2luZG93UmVzaXplOiB0cnVlLAoJd2luZG93UmVzaXplRGVsYXk6IDIwMCAvLyBtaWxsaXNlY29uZHMgYmVmb3JlIGFuIHVwZGF0ZVNpemUgaGFwcGVucwoJCn07CgoKQ2FsZW5kYXIuZW5nbGlzaERlZmF1bHRzID0geyAvLyB1c2VkIGJ5IGxhbmcuanMKCWRheVBvcG92ZXJGb3JtYXQ6ICdkZGRkLCBNTU1NIEQnCn07CgoKQ2FsZW5kYXIucnRsRGVmYXVsdHMgPSB7IC8vIHJpZ2h0LXRvLWxlZnQgZGVmYXVsdHMKCWhlYWRlcjogeyAvLyBUT0RPOiBzbWFydGVyIHNvbHV0aW9uIChmaXJzdC9jZW50ZXIvbGFzdCA/KQoJCWxlZnQ6ICduZXh0LHByZXYgdG9kYXknLAoJCWNlbnRlcjogJycsCgkJcmlnaHQ6ICd0aXRsZScKCX0sCglidXR0b25JY29uczogewoJCXByZXY6ICdyaWdodC1zaW5nbGUtYXJyb3cnLAoJCW5leHQ6ICdsZWZ0LXNpbmdsZS1hcnJvdycsCgkJcHJldlllYXI6ICdyaWdodC1kb3VibGUtYXJyb3cnLAoJCW5leHRZZWFyOiAnbGVmdC1kb3VibGUtYXJyb3cnCgl9LAoJdGhlbWVCdXR0b25JY29uczogewoJCXByZXY6ICdjaXJjbGUtdHJpYW5nbGUtZScsCgkJbmV4dDogJ2NpcmNsZS10cmlhbmdsZS13JywKCQluZXh0WWVhcjogJ3NlZWstcHJldicsCgkJcHJldlllYXI6ICdzZWVrLW5leHQnCgl9Cn07Cgo7OwoKdmFyIGxhbmdPcHRpb25IYXNoID0gZmMubGFuZ3MgPSB7fTsgLy8gaW5pdGlhbGl6ZSBhbmQgZXhwb3NlCgoKLy8gVE9ETzogZG9jdW1lbnQgdGhlIHN0cnVjdHVyZSBhbmQgb3JkZXJpbmcgb2YgYSBGdWxsQ2FsZW5kYXIgbGFuZyBmaWxlCi8vIFRPRE86IHJlbmFtZSBldmVyeXRoaW5nICJsYW5nIiB0byAibG9jYWxlIiwgbGlrZSB3aGF0IHRoZSBtb21lbnQgcHJvamVjdCBkaWQKCgovLyBJbml0aWFsaXplIGpRdWVyeSBVSSBkYXRlcGlja2VyIHRyYW5zbGF0aW9ucyB3aGlsZSB1c2luZyBzb21lIG9mIHRoZSB0cmFuc2xhdGlvbnMKLy8gV2lsbCBzZXQgdGhpcyBhcyB0aGUgZGVmYXVsdCBsYW5ndWFnZSBmb3IgZGF0ZXBpY2tlci4KZmMuZGF0ZXBpY2tlckxhbmcgPSBmdW5jdGlvbihsYW5nQ29kZSwgZHBMYW5nQ29kZSwgZHBPcHRpb25zKSB7CgoJLy8gZ2V0IHRoZSBGdWxsQ2FsZW5kYXIgaW50ZXJuYWwgb3B0aW9uIGhhc2ggZm9yIHRoaXMgbGFuZ3VhZ2UuIGNyZWF0ZSBpZiBuZWNlc3NhcnkKCXZhciBmY09wdGlvbnMgPSBsYW5nT3B0aW9uSGFzaFtsYW5nQ29kZV0gfHwgKGxhbmdPcHRpb25IYXNoW2xhbmdDb2RlXSA9IHt9KTsKCgkvLyB0cmFuc2ZlciBzb21lIHNpbXBsZSBvcHRpb25zIGZyb20gZGF0ZXBpY2tlciB0byBmYwoJZmNPcHRpb25zLmlzUlRMID0gZHBPcHRpb25zLmlzUlRMOwoJZmNPcHRpb25zLndlZWtOdW1iZXJUaXRsZSA9IGRwT3B0aW9ucy53ZWVrSGVhZGVyOwoKCS8vIGNvbXB1dGUgc29tZSBtb3JlIGNvbXBsZXggb3B0aW9ucyBmcm9tIGRhdGVwaWNrZXIKCSQuZWFjaChkcENvbXB1dGFibGVPcHRpb25zLCBmdW5jdGlvbihuYW1lLCBmdW5jKSB7CgkJZmNPcHRpb25zW25hbWVdID0gZnVuYyhkcE9wdGlvbnMpOwoJfSk7CgoJLy8gaXMgalF1ZXJ5IFVJIERhdGVwaWNrZXIgaXMgb24gdGhlIHBhZ2U/CglpZiAoJC5kYXRlcGlja2VyKSB7CgoJCS8vIFJlZ2lzdGVyIHRoZSBsYW5ndWFnZSBkYXRhLgoJCS8vIEZ1bGxDYWxlbmRhciBhbmQgTW9tZW50SlMgdXNlIGxhbmd1YWdlIGNvZGVzIGxpa2UgInB0LWJyIiBidXQgRGF0ZXBpY2tlcgoJCS8vIGRvZXMgaXQgbGlrZSAicHQtQlIiIG9yIGlmIGl0IGRvZXNuJ3QgaGF2ZSB0aGUgbGFuZ3VhZ2UsIG1heWJlIGp1c3QgInB0Ii4KCQkvLyBNYWtlIGFuIGFsaWFzIHNvIHRoZSBsYW5ndWFnZSBjYW4gYmUgcmVmZXJlbmNlZCBlaXRoZXIgd2F5LgoJCSQuZGF0ZXBpY2tlci5yZWdpb25hbFtkcExhbmdDb2RlXSA9CgkJCSQuZGF0ZXBpY2tlci5yZWdpb25hbFtsYW5nQ29kZV0gPSAvLyBhbGlhcwoJCQkJZHBPcHRpb25zOwoKCQkvLyBBbGlhcyAnZW4nIHRvIHRoZSBkZWZhdWx0IGxhbmd1YWdlIGRhdGEuIERvIHRoaXMgZXZlcnkgdGltZS4KCQkkLmRhdGVwaWNrZXIucmVnaW9uYWwuZW4gPSAkLmRhdGVwaWNrZXIucmVnaW9uYWxbJyddOwoKCQkvLyBTZXQgYXMgRGF0ZXBpY2tlcidzIGdsb2JhbCBkZWZhdWx0cy4KCQkkLmRhdGVwaWNrZXIuc2V0RGVmYXVsdHMoZHBPcHRpb25zKTsKCX0KfTsKCgovLyBTZXRzIEZ1bGxDYWxlbmRhci1zcGVjaWZpYyB0cmFuc2xhdGlvbnMuIFdpbGwgc2V0IHRoZSBsYW5ndWFnZSBhcyB0aGUgZ2xvYmFsIGRlZmF1bHQuCmZjLmxhbmcgPSBmdW5jdGlvbihsYW5nQ29kZSwgbmV3RmNPcHRpb25zKSB7Cgl2YXIgZmNPcHRpb25zOwoJdmFyIG1vbU9wdGlvbnM7CgoJLy8gZ2V0IHRoZSBGdWxsQ2FsZW5kYXIgaW50ZXJuYWwgb3B0aW9uIGhhc2ggZm9yIHRoaXMgbGFuZ3VhZ2UuIGNyZWF0ZSBpZiBuZWNlc3NhcnkKCWZjT3B0aW9ucyA9IGxhbmdPcHRpb25IYXNoW2xhbmdDb2RlXSB8fCAobGFuZ09wdGlvbkhhc2hbbGFuZ0NvZGVdID0ge30pOwoKCS8vIHByb3ZpZGVkIG5ldyBvcHRpb25zIGZvciB0aGlzIGxhbmd1YWdlPyBtZXJnZSB0aGVtIGluCglpZiAobmV3RmNPcHRpb25zKSB7CgkJZmNPcHRpb25zID0gbGFuZ09wdGlvbkhhc2hbbGFuZ0NvZGVdID0gbWVyZ2VPcHRpb25zKFsgZmNPcHRpb25zLCBuZXdGY09wdGlvbnMgXSk7Cgl9CgoJLy8gY29tcHV0ZSBsYW5ndWFnZSBvcHRpb25zIHRoYXQgd2VyZW4ndCBkZWZpbmVkLgoJLy8gYWx3YXlzIGRvIHRoaXMuIG5ld0ZjT3B0aW9ucyBjYW4gYmUgdW5kZWZpbmVkIHdoZW4gaW5pdGlhbGl6aW5nIGZyb20gaTE4biBmaWxlLAoJLy8gc28gbm8gd2F5IHRvIHRlbGwgaWYgdGhpcyBpcyBhbiBpbml0aWFsaXphdGlvbiBvciBhIGRlZmF1bHQtc2V0dGluZy4KCW1vbU9wdGlvbnMgPSBnZXRNb21lbnRMb2NhbGVEYXRhKGxhbmdDb2RlKTsgLy8gd2lsbCBmYWxsIGJhY2sgdG8gZW4KCSQuZWFjaChtb21Db21wdXRhYmxlT3B0aW9ucywgZnVuY3Rpb24obmFtZSwgZnVuYykgewoJCWlmIChmY09wdGlvbnNbbmFtZV0gPT0gbnVsbCkgewoJCQlmY09wdGlvbnNbbmFtZV0gPSBmdW5jKG1vbU9wdGlvbnMsIGZjT3B0aW9ucyk7CgkJfQoJfSk7CgoJLy8gc2V0IGl0IGFzIHRoZSBkZWZhdWx0IGxhbmd1YWdlIGZvciBGdWxsQ2FsZW5kYXIKCUNhbGVuZGFyLmRlZmF1bHRzLmxhbmcgPSBsYW5nQ29kZTsKfTsKCgovLyBOT1RFOiBjYW4ndCBndWFyYW50ZWUgYW55IG9mIHRoZXNlIGNvbXB1dGF0aW9ucyB3aWxsIHJ1biBiZWNhdXNlIG5vdCBldmVyeSBsYW5ndWFnZSBoYXMgZGF0ZXBpY2tlcgovLyBjb25maWdzLCBzbyBtYWtlIHN1cmUgdGhlcmUgYXJlIEVuZ2xpc2ggZmFsbGJhY2tzIGZvciB0aGVzZSBpbiB0aGUgZGVmYXVsdHMgZmlsZS4KdmFyIGRwQ29tcHV0YWJsZU9wdGlvbnMgPSB7CgoJYnV0dG9uVGV4dDogZnVuY3Rpb24oZHBPcHRpb25zKSB7CgkJcmV0dXJuIHsKCQkJLy8gdGhlIHRyYW5zbGF0aW9ucyBzb21ldGltZXMgd3JvbmdseSBjb250YWluIEhUTUwgZW50aXRpZXMKCQkJcHJldjogc3RyaXBIdG1sRW50aXRpZXMoZHBPcHRpb25zLnByZXZUZXh0KSwKCQkJbmV4dDogc3RyaXBIdG1sRW50aXRpZXMoZHBPcHRpb25zLm5leHRUZXh0KSwKCQkJdG9kYXk6IHN0cmlwSHRtbEVudGl0aWVzKGRwT3B0aW9ucy5jdXJyZW50VGV4dCkKCQl9OwoJfSwKCgkvLyBQcm9kdWNlcyBmb3JtYXQgc3RyaW5ncyBsaWtlICJNTU1NIFlZWVkiIC0+ICJTZXB0ZW1iZXIgMjAxNCIKCW1vbnRoWWVhckZvcm1hdDogZnVuY3Rpb24oZHBPcHRpb25zKSB7CgkJcmV0dXJuIGRwT3B0aW9ucy5zaG93TW9udGhBZnRlclllYXIgPwoJCQknWVlZWVsnICsgZHBPcHRpb25zLnllYXJTdWZmaXggKyAnXSBNTU1NJyA6CgkJCSdNTU1NIFlZWVlbJyArIGRwT3B0aW9ucy55ZWFyU3VmZml4ICsgJ10nOwoJfQoKfTsKCnZhciBtb21Db21wdXRhYmxlT3B0aW9ucyA9IHsKCgkvLyBQcm9kdWNlcyBmb3JtYXQgc3RyaW5ncyBsaWtlICJkZGQgTS9EIiAtPiAiRnJpIDkvMTUiCglkYXlPZk1vbnRoRm9ybWF0OiBmdW5jdGlvbihtb21PcHRpb25zLCBmY09wdGlvbnMpIHsKCQl2YXIgZm9ybWF0ID0gbW9tT3B0aW9ucy5sb25nRGF0ZUZvcm1hdCgnbCcpOyAvLyBmb3IgdGhlIGZvcm1hdCBsaWtlICJNL0QvWVlZWSIKCgkJLy8gc3RyaXAgdGhlIHllYXIgb2ZmIHRoZSBlZGdlLCBhcyB3ZWxsIGFzIG90aGVyIG1pc2Mgbm9uLXdoaXRlc3BhY2UgY2hhcnMKCQlmb3JtYXQgPSBmb3JtYXQucmVwbGFjZSgvXlkrW15cd1xzXSp8W15cd1xzXSpZKyQvZywgJycpOwoKCQlpZiAoZmNPcHRpb25zLmlzUlRMKSB7CgkJCWZvcm1hdCArPSAnIGRkZCc7IC8vIGZvciBSVEwsIGFkZCBkYXktb2Ytd2VlayB0byBlbmQKCQl9CgkJZWxzZSB7CgkJCWZvcm1hdCA9ICdkZGQgJyArIGZvcm1hdDsgLy8gZm9yIExUUiwgYWRkIGRheS1vZi13ZWVrIHRvIGJlZ2lubmluZwoJCX0KCQlyZXR1cm4gZm9ybWF0OwoJfSwKCgkvLyBQcm9kdWNlcyBmb3JtYXQgc3RyaW5ncyBsaWtlICJoOm1tYSIgLT4gIjY6MDBwbSIKCW1lZGl1bVRpbWVGb3JtYXQ6IGZ1bmN0aW9uKG1vbU9wdGlvbnMpIHsgLy8gY2FuJ3QgYmUgY2FsbGVkIGB0aW1lRm9ybWF0YCBiZWNhdXNlIGNvbGxpZGVzIHdpdGggb3B0aW9uCgkJcmV0dXJuIG1vbU9wdGlvbnMubG9uZ0RhdGVGb3JtYXQoJ0xUJykKCQkJLnJlcGxhY2UoL1xzKmEkL2ksICdhJyk7IC8vIGNvbnZlcnQgQU0vUE0vYW0vcG0gdG8gbG93ZXJjYXNlLiByZW1vdmUgYW55IHNwYWNlcyBiZWZvcmVoYW5kCgl9LAoKCS8vIFByb2R1Y2VzIGZvcm1hdCBzdHJpbmdzIGxpa2UgImgoOm1tKWEiIC0+ICI2cG0iIC8gIjY6MzBwbSIKCXNtYWxsVGltZUZvcm1hdDogZnVuY3Rpb24obW9tT3B0aW9ucykgewoJCXJldHVybiBtb21PcHRpb25zLmxvbmdEYXRlRm9ybWF0KCdMVCcpCgkJCS5yZXBsYWNlKCc6bW0nLCAnKDptbSknKQoJCQkucmVwbGFjZSgvKFxXbW0pJC8sICcoJDEpJykgLy8gbGlrZSBhYm92ZSwgYnV0IGZvciBmb3JlaWduIGxhbmdzCgkJCS5yZXBsYWNlKC9ccyphJC9pLCAnYScpOyAvLyBjb252ZXJ0IEFNL1BNL2FtL3BtIHRvIGxvd2VyY2FzZS4gcmVtb3ZlIGFueSBzcGFjZXMgYmVmb3JlaGFuZAoJfSwKCgkvLyBQcm9kdWNlcyBmb3JtYXQgc3RyaW5ncyBsaWtlICJoKDptbSl0IiAtPiAiNnAiIC8gIjY6MzBwIgoJZXh0cmFTbWFsbFRpbWVGb3JtYXQ6IGZ1bmN0aW9uKG1vbU9wdGlvbnMpIHsKCQlyZXR1cm4gbW9tT3B0aW9ucy5sb25nRGF0ZUZvcm1hdCgnTFQnKQoJCQkucmVwbGFjZSgnOm1tJywgJyg6bW0pJykKCQkJLnJlcGxhY2UoLyhcV21tKSQvLCAnKCQxKScpIC8vIGxpa2UgYWJvdmUsIGJ1dCBmb3IgZm9yZWlnbiBsYW5ncwoJCQkucmVwbGFjZSgvXHMqYSQvaSwgJ3QnKTsgLy8gY29udmVydCB0byBBTS9QTS9hbS9wbSB0byBsb3dlcmNhc2Ugb25lLWxldHRlci4gcmVtb3ZlIGFueSBzcGFjZXMgYmVmb3JlaGFuZAoJfSwKCgkvLyBQcm9kdWNlcyBmb3JtYXQgc3RyaW5ncyBsaWtlICJoYSIgLyAiSCIgLT4gIjZwbSIgLyAiMTgiCglob3VyRm9ybWF0OiBmdW5jdGlvbihtb21PcHRpb25zKSB7CgkJcmV0dXJuIG1vbU9wdGlvbnMubG9uZ0RhdGVGb3JtYXQoJ0xUJykKCQkJLnJlcGxhY2UoJzptbScsICcnKQoJCQkucmVwbGFjZSgvKFxXbW0pJC8sICcnKSAvLyBsaWtlIGFib3ZlLCBidXQgZm9yIGZvcmVpZ24gbGFuZ3MKCQkJLnJlcGxhY2UoL1xzKmEkL2ksICdhJyk7IC8vIGNvbnZlcnQgQU0vUE0vYW0vcG0gdG8gbG93ZXJjYXNlLiByZW1vdmUgYW55IHNwYWNlcyBiZWZvcmVoYW5kCgl9LAoKCS8vIFByb2R1Y2VzIGZvcm1hdCBzdHJpbmdzIGxpa2UgImg6bW0iIC0+ICI2OjMwIiAod2l0aCBubyBBTS9QTSkKCW5vTWVyaWRpZW1UaW1lRm9ybWF0OiBmdW5jdGlvbihtb21PcHRpb25zKSB7CgkJcmV0dXJuIG1vbU9wdGlvbnMubG9uZ0RhdGVGb3JtYXQoJ0xUJykKCQkJLnJlcGxhY2UoL1xzKmEkL2ksICcnKTsgLy8gcmVtb3ZlIHRyYWlsaW5nIEFNL1BNCgl9Cgp9OwoKCi8vIG9wdGlvbnMgdGhhdCBzaG91bGQgYmUgY29tcHV0ZWQgb2ZmIGxpdmUgY2FsZW5kYXIgb3B0aW9ucyAoY29uc2lkZXJzIG92ZXJyaWRlIG9wdGlvbnMpCnZhciBpbnN0YW5jZUNvbXB1dGFibGVPcHRpb25zID0geyAvLyBUT0RPOiBiZXN0IHBsYWNlIGZvciB0aGlzPyByZWxhdGVkIHRvIGxhbmc/CgoJLy8gUHJvZHVjZXMgZm9ybWF0IHN0cmluZ3MgZm9yIHJlc3VsdHMgbGlrZSAiTW8gMTYiCglzbWFsbERheURhdGVGb3JtYXQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKCQlyZXR1cm4gb3B0aW9ucy5pc1JUTCA/CgkJCSdEIGRkJyA6CgkJCSdkZCBEJzsKCX0sCgoJLy8gUHJvZHVjZXMgZm9ybWF0IHN0cmluZ3MgZm9yIHJlc3VsdHMgbGlrZSAiV2sgNSIKCXdlZWtGb3JtYXQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKCQlyZXR1cm4gb3B0aW9ucy5pc1JUTCA/CgkJCSd3WyAnICsgb3B0aW9ucy53ZWVrTnVtYmVyVGl0bGUgKyAnXScgOgoJCQknWycgKyBvcHRpb25zLndlZWtOdW1iZXJUaXRsZSArICcgXXcnOwoJfSwKCgkvLyBQcm9kdWNlcyBmb3JtYXQgc3RyaW5ncyBmb3IgcmVzdWx0cyBsaWtlICJXazUiCglzbWFsbFdlZWtGb3JtYXQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKCQlyZXR1cm4gb3B0aW9ucy5pc1JUTCA/CgkJCSd3WycgKyBvcHRpb25zLndlZWtOdW1iZXJUaXRsZSArICddJyA6CgkJCSdbJyArIG9wdGlvbnMud2Vla051bWJlclRpdGxlICsgJ113JzsKCX0KCn07CgpmdW5jdGlvbiBwb3B1bGF0ZUluc3RhbmNlQ29tcHV0YWJsZU9wdGlvbnMob3B0aW9ucykgewoJJC5lYWNoKGluc3RhbmNlQ29tcHV0YWJsZU9wdGlvbnMsIGZ1bmN0aW9uKG5hbWUsIGZ1bmMpIHsKCQlpZiAob3B0aW9uc1tuYW1lXSA9PSBudWxsKSB7CgkJCW9wdGlvbnNbbmFtZV0gPSBmdW5jKG9wdGlvbnMpOwoJCX0KCX0pOwp9CgoKLy8gUmV0dXJucyBtb21lbnQncyBpbnRlcm5hbCBsb2NhbGUgZGF0YS4gSWYgZG9lc24ndCBleGlzdCwgcmV0dXJucyBFbmdsaXNoLgovLyBXb3JrcyB3aXRoIG1vbWVudC1wcmUtMi44CmZ1bmN0aW9uIGdldE1vbWVudExvY2FsZURhdGEobGFuZ0NvZGUpIHsKCXZhciBmdW5jID0gbW9tZW50LmxvY2FsZURhdGEgfHwgbW9tZW50LmxhbmdEYXRhOwoJcmV0dXJuIGZ1bmMuY2FsbChtb21lbnQsIGxhbmdDb2RlKSB8fAoJCWZ1bmMuY2FsbChtb21lbnQsICdlbicpOyAvLyB0aGUgbmV3ZXIgbG9jYWxEYXRhIGNvdWxkIHJldHVybiBudWxsLCBzbyBmYWxsIGJhY2sgdG8gZW4KfQoKCi8vIEluaXRpYWxpemUgRW5nbGlzaCBieSBmb3JjaW5nIGNvbXB1dGF0aW9uIG9mIG1vbWVudC1kZXJpdmVkIG9wdGlvbnMuCi8vIEFsc28sIHNldHMgaXQgYXMgdGhlIGRlZmF1bHQuCmZjLmxhbmcoJ2VuJywgQ2FsZW5kYXIuZW5nbGlzaERlZmF1bHRzKTsKCjs7CgovKiBUb3AgdG9vbGJhciBhcmVhIHdpdGggYnV0dG9ucyBhbmQgdGl0bGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8vIFRPRE86IHJlbmFtZSBhbGwgaGVhZGVyLXJlbGF0ZWQgdGhpbmdzIHRvICJ0b29sYmFyIgoKZnVuY3Rpb24gSGVhZGVyKGNhbGVuZGFyLCBvcHRpb25zKSB7Cgl2YXIgdCA9IHRoaXM7CgkKCS8vIGV4cG9ydHMKCXQucmVuZGVyID0gcmVuZGVyOwoJdC5yZW1vdmVFbGVtZW50ID0gcmVtb3ZlRWxlbWVudDsKCXQudXBkYXRlVGl0bGUgPSB1cGRhdGVUaXRsZTsKCXQuYWN0aXZhdGVCdXR0b24gPSBhY3RpdmF0ZUJ1dHRvbjsKCXQuZGVhY3RpdmF0ZUJ1dHRvbiA9IGRlYWN0aXZhdGVCdXR0b247Cgl0LmRpc2FibGVCdXR0b24gPSBkaXNhYmxlQnV0dG9uOwoJdC5lbmFibGVCdXR0b24gPSBlbmFibGVCdXR0b247Cgl0LmdldFZpZXdzV2l0aEJ1dHRvbnMgPSBnZXRWaWV3c1dpdGhCdXR0b25zOwoJCgkvLyBsb2NhbHMKCXZhciBlbCA9ICQoKTsKCXZhciB2aWV3c1dpdGhCdXR0b25zID0gW107Cgl2YXIgdG07CgoKCWZ1bmN0aW9uIHJlbmRlcigpIHsKCQl2YXIgc2VjdGlvbnMgPSBvcHRpb25zLmhlYWRlcjsKCgkJdG0gPSBvcHRpb25zLnRoZW1lID8gJ3VpJyA6ICdmYyc7CgoJCWlmIChzZWN0aW9ucykgewoJCQllbCA9ICQoIjxkaXYgY2xhc3M9J2ZjLXRvb2xiYXInLz4iKQoJCQkJLmFwcGVuZChyZW5kZXJTZWN0aW9uKCdsZWZ0JykpCgkJCQkuYXBwZW5kKHJlbmRlclNlY3Rpb24oJ3JpZ2h0JykpCgkJCQkuYXBwZW5kKHJlbmRlclNlY3Rpb24oJ2NlbnRlcicpKQoJCQkJLmFwcGVuZCgnPGRpdiBjbGFzcz0iZmMtY2xlYXIiLz4nKTsKCgkJCXJldHVybiBlbDsKCQl9Cgl9CgkKCQoJZnVuY3Rpb24gcmVtb3ZlRWxlbWVudCgpIHsKCQllbC5yZW1vdmUoKTsKCQllbCA9ICQoKTsKCX0KCQoJCglmdW5jdGlvbiByZW5kZXJTZWN0aW9uKHBvc2l0aW9uKSB7CgkJdmFyIHNlY3Rpb25FbCA9ICQoJzxkaXYgY2xhc3M9ImZjLScgKyBwb3NpdGlvbiArICciLz4nKTsKCQl2YXIgYnV0dG9uU3RyID0gb3B0aW9ucy5oZWFkZXJbcG9zaXRpb25dOwoKCQlpZiAoYnV0dG9uU3RyKSB7CgkJCSQuZWFjaChidXR0b25TdHIuc3BsaXQoJyAnKSwgZnVuY3Rpb24oaSkgewoJCQkJdmFyIGdyb3VwQ2hpbGRyZW4gPSAkKCk7CgkJCQl2YXIgaXNPbmx5QnV0dG9ucyA9IHRydWU7CgkJCQl2YXIgZ3JvdXBFbDsKCgkJCQkkLmVhY2godGhpcy5zcGxpdCgnLCcpLCBmdW5jdGlvbihqLCBidXR0b25OYW1lKSB7CgkJCQkJdmFyIHZpZXdTcGVjOwoJCQkJCXZhciBidXR0b25DbGljazsKCQkJCQl2YXIgb3ZlcnJpZGVUZXh0OyAvLyB0ZXh0IGV4cGxpY2l0bHkgc2V0IGJ5IGNhbGVuZGFyJ3MgY29uc3RydWN0b3Igb3B0aW9ucy4gb3ZlcmNvbWVzIGljb25zCgkJCQkJdmFyIGRlZmF1bHRUZXh0OwoJCQkJCXZhciB0aGVtZUljb247CgkJCQkJdmFyIG5vcm1hbEljb247CgkJCQkJdmFyIGlubmVySHRtbDsKCQkJCQl2YXIgY2xhc3NlczsKCQkJCQl2YXIgYnV0dG9uOwoKCQkJCQlpZiAoYnV0dG9uTmFtZSA9PSAndGl0bGUnKSB7CgkJCQkJCWdyb3VwQ2hpbGRyZW4gPSBncm91cENoaWxkcmVuLmFkZCgkKCc8aDI+Jm5ic3A7PC9oMj4nKSk7IC8vIHdlIGFsd2F5cyB3YW50IGl0IHRvIHRha2UgdXAgaGVpZ2h0CgkJCQkJCWlzT25seUJ1dHRvbnMgPSBmYWxzZTsKCQkJCQl9CgkJCQkJZWxzZSB7CgkJCQkJCXZpZXdTcGVjID0gY2FsZW5kYXIuZ2V0Vmlld1NwZWMoYnV0dG9uTmFtZSk7CgoJCQkJCQlpZiAodmlld1NwZWMpIHsKCQkJCQkJCWJ1dHRvbkNsaWNrID0gZnVuY3Rpb24oKSB7CgkJCQkJCQkJY2FsZW5kYXIuY2hhbmdlVmlldyhidXR0b25OYW1lKTsKCQkJCQkJCX07CgkJCQkJCQl2aWV3c1dpdGhCdXR0b25zLnB1c2goYnV0dG9uTmFtZSk7CgkJCQkJCQlvdmVycmlkZVRleHQgPSB2aWV3U3BlYy5idXR0b25UZXh0T3ZlcnJpZGU7CgkJCQkJCQlkZWZhdWx0VGV4dCA9IHZpZXdTcGVjLmJ1dHRvblRleHREZWZhdWx0OwoJCQkJCQl9CgkJCQkJCWVsc2UgaWYgKGNhbGVuZGFyW2J1dHRvbk5hbWVdKSB7IC8vIGEgY2FsZW5kYXIgbWV0aG9kCgkJCQkJCQlidXR0b25DbGljayA9IGZ1bmN0aW9uKCkgewoJCQkJCQkJCWNhbGVuZGFyW2J1dHRvbk5hbWVdKCk7CgkJCQkJCQl9OwoJCQkJCQkJb3ZlcnJpZGVUZXh0ID0gKGNhbGVuZGFyLm92ZXJyaWRlcy5idXR0b25UZXh0IHx8IHt9KVtidXR0b25OYW1lXTsKCQkJCQkJCWRlZmF1bHRUZXh0ID0gb3B0aW9ucy5idXR0b25UZXh0W2J1dHRvbk5hbWVdOyAvLyBldmVyeXRoaW5nIGVsc2UgaXMgY29uc2lkZXJlZCBkZWZhdWx0CgkJCQkJCX0KCgkJCQkJCWlmIChidXR0b25DbGljaykgewoKCQkJCQkJCXRoZW1lSWNvbiA9IG9wdGlvbnMudGhlbWVCdXR0b25JY29uc1tidXR0b25OYW1lXTsKCQkJCQkJCW5vcm1hbEljb24gPSBvcHRpb25zLmJ1dHRvbkljb25zW2J1dHRvbk5hbWVdOwoKCQkJCQkJCWlmIChvdmVycmlkZVRleHQpIHsKCQkJCQkJCQlpbm5lckh0bWwgPSBodG1sRXNjYXBlKG92ZXJyaWRlVGV4dCk7CgkJCQkJCQl9CgkJCQkJCQllbHNlIGlmICh0aGVtZUljb24gJiYgb3B0aW9ucy50aGVtZSkgewoJCQkJCQkJCWlubmVySHRtbCA9ICI8c3BhbiBjbGFzcz0ndWktaWNvbiB1aS1pY29uLSIgKyB0aGVtZUljb24gKyAiJz48L3NwYW4+IjsKCQkJCQkJCX0KCQkJCQkJCWVsc2UgaWYgKG5vcm1hbEljb24gJiYgIW9wdGlvbnMudGhlbWUpIHsKCQkJCQkJCQlpbm5lckh0bWwgPSAiPHNwYW4gY2xhc3M9J2ZjLWljb24gZmMtaWNvbi0iICsgbm9ybWFsSWNvbiArICInPjwvc3Bhbj4iOwoJCQkJCQkJfQoJCQkJCQkJZWxzZSB7CgkJCQkJCQkJaW5uZXJIdG1sID0gaHRtbEVzY2FwZShkZWZhdWx0VGV4dCk7CgkJCQkJCQl9CgoJCQkJCQkJY2xhc3NlcyA9IFsKCQkJCQkJCQknZmMtJyArIGJ1dHRvbk5hbWUgKyAnLWJ1dHRvbicsCgkJCQkJCQkJdG0gKyAnLWJ1dHRvbicsCgkJCQkJCQkJdG0gKyAnLXN0YXRlLWRlZmF1bHQnCgkJCQkJCQldOwoKCQkJCQkJCWJ1dHRvbiA9ICQoIC8vIHR5cGU9ImJ1dHRvbiIgc28gdGhhdCBpdCBkb2Vzbid0IHN1Ym1pdCBhIGZvcm0KCQkJCQkJCQknPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSInICsgY2xhc3Nlcy5qb2luKCcgJykgKyAnIj4nICsKCQkJCQkJCQkJaW5uZXJIdG1sICsKCQkJCQkJCQknPC9idXR0b24+JwoJCQkJCQkJCSkKCQkJCQkJCQkuY2xpY2soZnVuY3Rpb24oKSB7CgkJCQkJCQkJCS8vIGRvbid0IHByb2Nlc3MgY2xpY2tzIGZvciBkaXNhYmxlZCBidXR0b25zCgkJCQkJCQkJCWlmICghYnV0dG9uLmhhc0NsYXNzKHRtICsgJy1zdGF0ZS1kaXNhYmxlZCcpKSB7CgoJCQkJCQkJCQkJYnV0dG9uQ2xpY2soKTsKCgkJCQkJCQkJCQkvLyBhZnRlciB0aGUgY2xpY2sgYWN0aW9uLCBpZiB0aGUgYnV0dG9uIGJlY29tZXMgdGhlICJhY3RpdmUiIHRhYiwgb3IgZGlzYWJsZWQsCgkJCQkJCQkJCQkvLyBpdCBzaG91bGQgbmV2ZXIgaGF2ZSBhIGhvdmVyIGNsYXNzLCBzbyByZW1vdmUgaXQgbm93LgoJCQkJCQkJCQkJaWYgKAoJCQkJCQkJCQkJCWJ1dHRvbi5oYXNDbGFzcyh0bSArICctc3RhdGUtYWN0aXZlJykgfHwKCQkJCQkJCQkJCQlidXR0b24uaGFzQ2xhc3ModG0gKyAnLXN0YXRlLWRpc2FibGVkJykKCQkJCQkJCQkJCSkgewoJCQkJCQkJCQkJCWJ1dHRvbi5yZW1vdmVDbGFzcyh0bSArICctc3RhdGUtaG92ZXInKTsKCQkJCQkJCQkJCX0KCQkJCQkJCQkJfQoJCQkJCQkJCX0pCgkJCQkJCQkJLm1vdXNlZG93bihmdW5jdGlvbigpIHsKCQkJCQkJCQkJLy8gdGhlICpkb3duKiBlZmZlY3QgKG1vdXNlIHByZXNzZWQgaW4pLgoJCQkJCQkJCQkvLyBvbmx5IG9uIGJ1dHRvbnMgdGhhdCBhcmUgbm90IHRoZSAiYWN0aXZlIiB0YWIsIG9yIGRpc2FibGVkCgkJCQkJCQkJCWJ1dHRvbgoJCQkJCQkJCQkJLm5vdCgnLicgKyB0bSArICctc3RhdGUtYWN0aXZlJykKCQkJCQkJCQkJCS5ub3QoJy4nICsgdG0gKyAnLXN0YXRlLWRpc2FibGVkJykKCQkJCQkJCQkJCS5hZGRDbGFzcyh0bSArICctc3RhdGUtZG93bicpOwoJCQkJCQkJCX0pCgkJCQkJCQkJLm1vdXNldXAoZnVuY3Rpb24oKSB7CgkJCQkJCQkJCS8vIHVuZG8gdGhlICpkb3duKiBlZmZlY3QKCQkJCQkJCQkJYnV0dG9uLnJlbW92ZUNsYXNzKHRtICsgJy1zdGF0ZS1kb3duJyk7CgkJCQkJCQkJfSkKCQkJCQkJCQkuaG92ZXIoCgkJCQkJCQkJCWZ1bmN0aW9uKCkgewoJCQkJCQkJCQkJLy8gdGhlICpob3ZlciogZWZmZWN0LgoJCQkJCQkJCQkJLy8gb25seSBvbiBidXR0b25zIHRoYXQgYXJlIG5vdCB0aGUgImFjdGl2ZSIgdGFiLCBvciBkaXNhYmxlZAoJCQkJCQkJCQkJYnV0dG9uCgkJCQkJCQkJCQkJLm5vdCgnLicgKyB0bSArICctc3RhdGUtYWN0aXZlJykKCQkJCQkJCQkJCQkubm90KCcuJyArIHRtICsgJy1zdGF0ZS1kaXNhYmxlZCcpCgkJCQkJCQkJCQkJLmFkZENsYXNzKHRtICsgJy1zdGF0ZS1ob3ZlcicpOwoJCQkJCQkJCQl9LAoJCQkJCQkJCQlmdW5jdGlvbigpIHsKCQkJCQkJCQkJCS8vIHVuZG8gdGhlICpob3ZlciogZWZmZWN0CgkJCQkJCQkJCQlidXR0b24KCQkJCQkJCQkJCQkucmVtb3ZlQ2xhc3ModG0gKyAnLXN0YXRlLWhvdmVyJykKCQkJCQkJCQkJCQkucmVtb3ZlQ2xhc3ModG0gKyAnLXN0YXRlLWRvd24nKTsgLy8gaWYgbW91c2VsZWF2ZSBoYXBwZW5zIGJlZm9yZSBtb3VzZXVwCgkJCQkJCQkJCX0KCQkJCQkJCQkpOwoKCQkJCQkJCWdyb3VwQ2hpbGRyZW4gPSBncm91cENoaWxkcmVuLmFkZChidXR0b24pOwoJCQkJCQl9CgkJCQkJfQoJCQkJfSk7CgoJCQkJaWYgKGlzT25seUJ1dHRvbnMpIHsKCQkJCQlncm91cENoaWxkcmVuCgkJCQkJCS5maXJzdCgpLmFkZENsYXNzKHRtICsgJy1jb3JuZXItbGVmdCcpLmVuZCgpCgkJCQkJCS5sYXN0KCkuYWRkQ2xhc3ModG0gKyAnLWNvcm5lci1yaWdodCcpLmVuZCgpOwoJCQkJfQoKCQkJCWlmIChncm91cENoaWxkcmVuLmxlbmd0aCA+IDEpIHsKCQkJCQlncm91cEVsID0gJCgnPGRpdi8+Jyk7CgkJCQkJaWYgKGlzT25seUJ1dHRvbnMpIHsKCQkJCQkJZ3JvdXBFbC5hZGRDbGFzcygnZmMtYnV0dG9uLWdyb3VwJyk7CgkJCQkJfQoJCQkJCWdyb3VwRWwuYXBwZW5kKGdyb3VwQ2hpbGRyZW4pOwoJCQkJCXNlY3Rpb25FbC5hcHBlbmQoZ3JvdXBFbCk7CgkJCQl9CgkJCQllbHNlIHsKCQkJCQlzZWN0aW9uRWwuYXBwZW5kKGdyb3VwQ2hpbGRyZW4pOyAvLyAxIG9yIDAgY2hpbGRyZW4KCQkJCX0KCQkJfSk7CgkJfQoKCQlyZXR1cm4gc2VjdGlvbkVsOwoJfQoJCgkKCWZ1bmN0aW9uIHVwZGF0ZVRpdGxlKHRleHQpIHsKCQllbC5maW5kKCdoMicpLnRleHQodGV4dCk7Cgl9CgkKCQoJZnVuY3Rpb24gYWN0aXZhdGVCdXR0b24oYnV0dG9uTmFtZSkgewoJCWVsLmZpbmQoJy5mYy0nICsgYnV0dG9uTmFtZSArICctYnV0dG9uJykKCQkJLmFkZENsYXNzKHRtICsgJy1zdGF0ZS1hY3RpdmUnKTsKCX0KCQoJCglmdW5jdGlvbiBkZWFjdGl2YXRlQnV0dG9uKGJ1dHRvbk5hbWUpIHsKCQllbC5maW5kKCcuZmMtJyArIGJ1dHRvbk5hbWUgKyAnLWJ1dHRvbicpCgkJCS5yZW1vdmVDbGFzcyh0bSArICctc3RhdGUtYWN0aXZlJyk7Cgl9CgkKCQoJZnVuY3Rpb24gZGlzYWJsZUJ1dHRvbihidXR0b25OYW1lKSB7CgkJZWwuZmluZCgnLmZjLScgKyBidXR0b25OYW1lICsgJy1idXR0b24nKQoJCQkuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKQoJCQkuYWRkQ2xhc3ModG0gKyAnLXN0YXRlLWRpc2FibGVkJyk7Cgl9CgkKCQoJZnVuY3Rpb24gZW5hYmxlQnV0dG9uKGJ1dHRvbk5hbWUpIHsKCQllbC5maW5kKCcuZmMtJyArIGJ1dHRvbk5hbWUgKyAnLWJ1dHRvbicpCgkJCS5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpCgkJCS5yZW1vdmVDbGFzcyh0bSArICctc3RhdGUtZGlzYWJsZWQnKTsKCX0KCgoJZnVuY3Rpb24gZ2V0Vmlld3NXaXRoQnV0dG9ucygpIHsKCQlyZXR1cm4gdmlld3NXaXRoQnV0dG9uczsKCX0KCn0KCjs7CgpmYy5zb3VyY2VOb3JtYWxpemVycyA9IFtdOwpmYy5zb3VyY2VGZXRjaGVycyA9IFtdOwoKdmFyIGFqYXhEZWZhdWx0cyA9IHsKCWRhdGFUeXBlOiAnanNvbicsCgljYWNoZTogZmFsc2UKfTsKCnZhciBldmVudEdVSUQgPSAxOwoKCmZ1bmN0aW9uIEV2ZW50TWFuYWdlcihvcHRpb25zKSB7IC8vIGFzc3VtZWQgdG8gYmUgYSBjYWxlbmRhcgoJdmFyIHQgPSB0aGlzOwoJCgkKCS8vIGV4cG9ydHMKCXQuaXNGZXRjaE5lZWRlZCA9IGlzRmV0Y2hOZWVkZWQ7Cgl0LmZldGNoRXZlbnRzID0gZmV0Y2hFdmVudHM7Cgl0LmFkZEV2ZW50U291cmNlID0gYWRkRXZlbnRTb3VyY2U7Cgl0LnJlbW92ZUV2ZW50U291cmNlID0gcmVtb3ZlRXZlbnRTb3VyY2U7Cgl0LnVwZGF0ZUV2ZW50ID0gdXBkYXRlRXZlbnQ7Cgl0LnJlbmRlckV2ZW50ID0gcmVuZGVyRXZlbnQ7Cgl0LnJlbW92ZUV2ZW50cyA9IHJlbW92ZUV2ZW50czsKCXQuY2xpZW50RXZlbnRzID0gY2xpZW50RXZlbnRzOwoJdC5tdXRhdGVFdmVudCA9IG11dGF0ZUV2ZW50OwoJdC5ub3JtYWxpemVFdmVudFJhbmdlID0gbm9ybWFsaXplRXZlbnRSYW5nZTsKCXQubm9ybWFsaXplRXZlbnRSYW5nZVRpbWVzID0gbm9ybWFsaXplRXZlbnRSYW5nZVRpbWVzOwoJdC5lbnN1cmVWaXNpYmxlRXZlbnRSYW5nZSA9IGVuc3VyZVZpc2libGVFdmVudFJhbmdlOwoJCgkKCS8vIGltcG9ydHMKCXZhciByZXBvcnRFdmVudHMgPSB0LnJlcG9ydEV2ZW50czsKCQoJCgkvLyBsb2NhbHMKCXZhciBzdGlja3lTb3VyY2UgPSB7IGV2ZW50czogW10gfTsKCXZhciBzb3VyY2VzID0gWyBzdGlja3lTb3VyY2UgXTsKCXZhciByYW5nZVN0YXJ0LCByYW5nZUVuZDsKCXZhciBjdXJyZW50RmV0Y2hJRCA9IDA7Cgl2YXIgcGVuZGluZ1NvdXJjZUNudCA9IDA7Cgl2YXIgY2FjaGUgPSBbXTsgLy8gaG9sZHMgZXZlbnRzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gZXhwYW5kZWQKCgoJJC5lYWNoKAoJCShvcHRpb25zLmV2ZW50cyA/IFsgb3B0aW9ucy5ldmVudHMgXSA6IFtdKS5jb25jYXQob3B0aW9ucy5ldmVudFNvdXJjZXMgfHwgW10pLAoJCWZ1bmN0aW9uKGksIHNvdXJjZUlucHV0KSB7CgkJCXZhciBzb3VyY2UgPSBidWlsZEV2ZW50U291cmNlKHNvdXJjZUlucHV0KTsKCQkJaWYgKHNvdXJjZSkgewoJCQkJc291cmNlcy5wdXNoKHNvdXJjZSk7CgkJCX0KCQl9CgkpOwoJCgkKCQoJLyogRmV0Y2hpbmcKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCQoJCglmdW5jdGlvbiBpc0ZldGNoTmVlZGVkKHN0YXJ0LCBlbmQpIHsKCQlyZXR1cm4gIXJhbmdlU3RhcnQgfHwgLy8gbm90aGluZyBoYXMgYmVlbiBmZXRjaGVkIHlldD8KCQkJLy8gb3IsIGEgcGFydCBvZiB0aGUgbmV3IHJhbmdlIGlzIG91dHNpZGUgb2YgdGhlIG9sZCByYW5nZT8gKGFmdGVyIG5vcm1hbGl6aW5nKQoJCQlzdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpIDwgcmFuZ2VTdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpIHx8CgkJCWVuZC5jbG9uZSgpLnN0cmlwWm9uZSgpID4gcmFuZ2VFbmQuY2xvbmUoKS5zdHJpcFpvbmUoKTsKCX0KCQoJCglmdW5jdGlvbiBmZXRjaEV2ZW50cyhzdGFydCwgZW5kKSB7CgkJcmFuZ2VTdGFydCA9IHN0YXJ0OwoJCXJhbmdlRW5kID0gZW5kOwoJCWNhY2hlID0gW107CgkJdmFyIGZldGNoSUQgPSArK2N1cnJlbnRGZXRjaElEOwoJCXZhciBsZW4gPSBzb3VyY2VzLmxlbmd0aDsKCQlwZW5kaW5nU291cmNlQ250ID0gbGVuOwoJCWZvciAodmFyIGk9MDsgaTxsZW47IGkrKykgewoJCQlmZXRjaEV2ZW50U291cmNlKHNvdXJjZXNbaV0sIGZldGNoSUQpOwoJCX0KCX0KCQoJCglmdW5jdGlvbiBmZXRjaEV2ZW50U291cmNlKHNvdXJjZSwgZmV0Y2hJRCkgewoJCV9mZXRjaEV2ZW50U291cmNlKHNvdXJjZSwgZnVuY3Rpb24oZXZlbnRJbnB1dHMpIHsKCQkJdmFyIGlzQXJyYXlTb3VyY2UgPSAkLmlzQXJyYXkoc291cmNlLmV2ZW50cyk7CgkJCXZhciBpLCBldmVudElucHV0OwoJCQl2YXIgYWJzdHJhY3RFdmVudDsKCgkJCWlmIChmZXRjaElEID09IGN1cnJlbnRGZXRjaElEKSB7CgoJCQkJaWYgKGV2ZW50SW5wdXRzKSB7CgkJCQkJZm9yIChpID0gMDsgaSA8IGV2ZW50SW5wdXRzLmxlbmd0aDsgaSsrKSB7CgkJCQkJCWV2ZW50SW5wdXQgPSBldmVudElucHV0c1tpXTsKCgkJCQkJCWlmIChpc0FycmF5U291cmNlKSB7IC8vIGFycmF5IHNvdXJjZXMgaGF2ZSBhbHJlYWR5IGJlZW4gY29udmVydCB0byBFdmVudCBPYmplY3RzCgkJCQkJCQlhYnN0cmFjdEV2ZW50ID0gZXZlbnRJbnB1dDsKCQkJCQkJfQoJCQkJCQllbHNlIHsKCQkJCQkJCWFic3RyYWN0RXZlbnQgPSBidWlsZEV2ZW50RnJvbUlucHV0KGV2ZW50SW5wdXQsIHNvdXJjZSk7CgkJCQkJCX0KCgkJCQkJCWlmIChhYnN0cmFjdEV2ZW50KSB7IC8vIG5vdCBmYWxzZSAoYW4gaW52YWxpZCBldmVudCkKCQkJCQkJCWNhY2hlLnB1c2guYXBwbHkoCgkJCQkJCQkJY2FjaGUsCgkJCQkJCQkJZXhwYW5kRXZlbnQoYWJzdHJhY3RFdmVudCkgLy8gYWRkIGluZGl2aWR1YWwgZXhwYW5kZWQgZXZlbnRzIHRvIHRoZSBjYWNoZQoJCQkJCQkJKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCgkJCQlwZW5kaW5nU291cmNlQ250LS07CgkJCQlpZiAoIXBlbmRpbmdTb3VyY2VDbnQpIHsKCQkJCQlyZXBvcnRFdmVudHMoY2FjaGUpOwoJCQkJfQoJCQl9CgkJfSk7Cgl9CgkKCQoJZnVuY3Rpb24gX2ZldGNoRXZlbnRTb3VyY2Uoc291cmNlLCBjYWxsYmFjaykgewoJCXZhciBpOwoJCXZhciBmZXRjaGVycyA9IGZjLnNvdXJjZUZldGNoZXJzOwoJCXZhciByZXM7CgoJCWZvciAoaT0wOyBpPGZldGNoZXJzLmxlbmd0aDsgaSsrKSB7CgkJCXJlcyA9IGZldGNoZXJzW2ldLmNhbGwoCgkJCQl0LCAvLyB0aGlzLCB0aGUgQ2FsZW5kYXIgb2JqZWN0CgkJCQlzb3VyY2UsCgkJCQlyYW5nZVN0YXJ0LmNsb25lKCksCgkJCQlyYW5nZUVuZC5jbG9uZSgpLAoJCQkJb3B0aW9ucy50aW1lem9uZSwKCQkJCWNhbGxiYWNrCgkJCSk7CgoJCQlpZiAocmVzID09PSB0cnVlKSB7CgkJCQkvLyB0aGUgZmV0Y2hlciBpcyBpbiBjaGFyZ2UuIG1hZGUgaXRzIG93biBhc3luYyByZXF1ZXN0CgkJCQlyZXR1cm47CgkJCX0KCQkJZWxzZSBpZiAodHlwZW9mIHJlcyA9PSAnb2JqZWN0JykgewoJCQkJLy8gdGhlIGZldGNoZXIgcmV0dXJuZWQgYSBuZXcgc291cmNlLiBwcm9jZXNzIGl0CgkJCQlfZmV0Y2hFdmVudFNvdXJjZShyZXMsIGNhbGxiYWNrKTsKCQkJCXJldHVybjsKCQkJfQoJCX0KCgkJdmFyIGV2ZW50cyA9IHNvdXJjZS5ldmVudHM7CgkJaWYgKGV2ZW50cykgewoJCQlpZiAoJC5pc0Z1bmN0aW9uKGV2ZW50cykpIHsKCQkJCXQucHVzaExvYWRpbmcoKTsKCQkJCWV2ZW50cy5jYWxsKAoJCQkJCXQsIC8vIHRoaXMsIHRoZSBDYWxlbmRhciBvYmplY3QKCQkJCQlyYW5nZVN0YXJ0LmNsb25lKCksCgkJCQkJcmFuZ2VFbmQuY2xvbmUoKSwKCQkJCQlvcHRpb25zLnRpbWV6b25lLAoJCQkJCWZ1bmN0aW9uKGV2ZW50cykgewoJCQkJCQljYWxsYmFjayhldmVudHMpOwoJCQkJCQl0LnBvcExvYWRpbmcoKTsKCQkJCQl9CgkJCQkpOwoJCQl9CgkJCWVsc2UgaWYgKCQuaXNBcnJheShldmVudHMpKSB7CgkJCQljYWxsYmFjayhldmVudHMpOwoJCQl9CgkJCWVsc2UgewoJCQkJY2FsbGJhY2soKTsKCQkJfQoJCX1lbHNlewoJCQl2YXIgdXJsID0gc291cmNlLnVybDsKCQkJaWYgKHVybCkgewoJCQkJdmFyIHN1Y2Nlc3MgPSBzb3VyY2Uuc3VjY2VzczsKCQkJCXZhciBlcnJvciA9IHNvdXJjZS5lcnJvcjsKCQkJCXZhciBjb21wbGV0ZSA9IHNvdXJjZS5jb21wbGV0ZTsKCgkJCQkvLyByZXRyaWV2ZSBhbnkgb3V0Ym91bmQgR0VUL1BPU1QgJC5hamF4IGRhdGEgZnJvbSB0aGUgb3B0aW9ucwoJCQkJdmFyIGN1c3RvbURhdGE7CgkJCQlpZiAoJC5pc0Z1bmN0aW9uKHNvdXJjZS5kYXRhKSkgewoJCQkJCS8vIHN1cHBsaWVkIGFzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEga2V5L3ZhbHVlIG9iamVjdAoJCQkJCWN1c3RvbURhdGEgPSBzb3VyY2UuZGF0YSgpOwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJLy8gc3VwcGxpZWQgYXMgYSBzdHJhaWdodCBrZXkvdmFsdWUgb2JqZWN0CgkJCQkJY3VzdG9tRGF0YSA9IHNvdXJjZS5kYXRhOwoJCQkJfQoKCQkJCS8vIHVzZSBhIGNvcHkgb2YgdGhlIGN1c3RvbSBkYXRhIHNvIHdlIGNhbiBtb2RpZnkgdGhlIHBhcmFtZXRlcnMKCQkJCS8vIGFuZCBub3QgYWZmZWN0IHRoZSBwYXNzZWQtaW4gb2JqZWN0LgoJCQkJdmFyIGRhdGEgPSAkLmV4dGVuZCh7fSwgY3VzdG9tRGF0YSB8fCB7fSk7CgoJCQkJdmFyIHN0YXJ0UGFyYW0gPSBmaXJzdERlZmluZWQoc291cmNlLnN0YXJ0UGFyYW0sIG9wdGlvbnMuc3RhcnRQYXJhbSk7CgkJCQl2YXIgZW5kUGFyYW0gPSBmaXJzdERlZmluZWQoc291cmNlLmVuZFBhcmFtLCBvcHRpb25zLmVuZFBhcmFtKTsKCQkJCXZhciB0aW1lem9uZVBhcmFtID0gZmlyc3REZWZpbmVkKHNvdXJjZS50aW1lem9uZVBhcmFtLCBvcHRpb25zLnRpbWV6b25lUGFyYW0pOwoKCQkJCWlmIChzdGFydFBhcmFtKSB7CgkJCQkJZGF0YVtzdGFydFBhcmFtXSA9IHJhbmdlU3RhcnQuZm9ybWF0KCk7CgkJCQl9CgkJCQlpZiAoZW5kUGFyYW0pIHsKCQkJCQlkYXRhW2VuZFBhcmFtXSA9IHJhbmdlRW5kLmZvcm1hdCgpOwoJCQkJfQoJCQkJaWYgKG9wdGlvbnMudGltZXpvbmUgJiYgb3B0aW9ucy50aW1lem9uZSAhPSAnbG9jYWwnKSB7CgkJCQkJZGF0YVt0aW1lem9uZVBhcmFtXSA9IG9wdGlvbnMudGltZXpvbmU7CgkJCQl9CgoJCQkJdC5wdXNoTG9hZGluZygpOwoJCQkJJC5hamF4KCQuZXh0ZW5kKHt9LCBhamF4RGVmYXVsdHMsIHNvdXJjZSwgewoJCQkJCWRhdGE6IGRhdGEsCgkJCQkJc3VjY2VzczogZnVuY3Rpb24oZXZlbnRzKSB7CgkJCQkJCWV2ZW50cyA9IGV2ZW50cyB8fCBbXTsKCQkJCQkJdmFyIHJlcyA9IGFwcGx5QWxsKHN1Y2Nlc3MsIHRoaXMsIGFyZ3VtZW50cyk7CgkJCQkJCWlmICgkLmlzQXJyYXkocmVzKSkgewoJCQkJCQkJZXZlbnRzID0gcmVzOwoJCQkJCQl9CgkJCQkJCWNhbGxiYWNrKGV2ZW50cyk7CgkJCQkJfSwKCQkJCQllcnJvcjogZnVuY3Rpb24oKSB7CgkJCQkJCWFwcGx5QWxsKGVycm9yLCB0aGlzLCBhcmd1bWVudHMpOwoJCQkJCQljYWxsYmFjaygpOwoJCQkJCX0sCgkJCQkJY29tcGxldGU6IGZ1bmN0aW9uKCkgewoJCQkJCQlhcHBseUFsbChjb21wbGV0ZSwgdGhpcywgYXJndW1lbnRzKTsKCQkJCQkJdC5wb3BMb2FkaW5nKCk7CgkJCQkJfQoJCQkJfSkpOwoJCQl9ZWxzZXsKCQkJCWNhbGxiYWNrKCk7CgkJCX0KCQl9Cgl9CgkKCQoJCgkvKiBTb3VyY2VzCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgkKCglmdW5jdGlvbiBhZGRFdmVudFNvdXJjZShzb3VyY2VJbnB1dCkgewoJCXZhciBzb3VyY2UgPSBidWlsZEV2ZW50U291cmNlKHNvdXJjZUlucHV0KTsKCQlpZiAoc291cmNlKSB7CgkJCXNvdXJjZXMucHVzaChzb3VyY2UpOwoJCQlwZW5kaW5nU291cmNlQ250Kys7CgkJCWZldGNoRXZlbnRTb3VyY2Uoc291cmNlLCBjdXJyZW50RmV0Y2hJRCk7IC8vIHdpbGwgZXZlbnR1YWxseSBjYWxsIHJlcG9ydEV2ZW50cwoJCX0KCX0KCgoJZnVuY3Rpb24gYnVpbGRFdmVudFNvdXJjZShzb3VyY2VJbnB1dCkgeyAvLyB3aWxsIHJldHVybiB1bmRlZmluZWQgaWYgaW52YWxpZCBzb3VyY2UKCQl2YXIgbm9ybWFsaXplcnMgPSBmYy5zb3VyY2VOb3JtYWxpemVyczsKCQl2YXIgc291cmNlOwoJCXZhciBpOwoKCQlpZiAoJC5pc0Z1bmN0aW9uKHNvdXJjZUlucHV0KSB8fCAkLmlzQXJyYXkoc291cmNlSW5wdXQpKSB7CgkJCXNvdXJjZSA9IHsgZXZlbnRzOiBzb3VyY2VJbnB1dCB9OwoJCX0KCQllbHNlIGlmICh0eXBlb2Ygc291cmNlSW5wdXQgPT09ICdzdHJpbmcnKSB7CgkJCXNvdXJjZSA9IHsgdXJsOiBzb3VyY2VJbnB1dCB9OwoJCX0KCQllbHNlIGlmICh0eXBlb2Ygc291cmNlSW5wdXQgPT09ICdvYmplY3QnKSB7CgkJCXNvdXJjZSA9ICQuZXh0ZW5kKHt9LCBzb3VyY2VJbnB1dCk7IC8vIHNoYWxsb3cgY29weQoJCX0KCgkJaWYgKHNvdXJjZSkgewoKCQkJLy8gVE9ETzogcmVwZWF0IGNvZGUsIHNhbWUgY29kZSBmb3IgZXZlbnQgY2xhc3NOYW1lcwoJCQlpZiAoc291cmNlLmNsYXNzTmFtZSkgewoJCQkJaWYgKHR5cGVvZiBzb3VyY2UuY2xhc3NOYW1lID09PSAnc3RyaW5nJykgewoJCQkJCXNvdXJjZS5jbGFzc05hbWUgPSBzb3VyY2UuY2xhc3NOYW1lLnNwbGl0KC9ccysvKTsKCQkJCX0KCQkJCS8vIG90aGVyd2lzZSwgYXNzdW1lZCB0byBiZSBhbiBhcnJheQoJCQl9CgkJCWVsc2UgewoJCQkJc291cmNlLmNsYXNzTmFtZSA9IFtdOwoJCQl9CgoJCQkvLyBmb3IgYXJyYXkgc291cmNlcywgd2UgY29udmVydCB0byBzdGFuZGFyZCBFdmVudCBPYmplY3RzIHVwIGZyb250CgkJCWlmICgkLmlzQXJyYXkoc291cmNlLmV2ZW50cykpIHsKCQkJCXNvdXJjZS5vcmlnQXJyYXkgPSBzb3VyY2UuZXZlbnRzOyAvLyBmb3IgcmVtb3ZlRXZlbnRTb3VyY2UKCQkJCXNvdXJjZS5ldmVudHMgPSAkLm1hcChzb3VyY2UuZXZlbnRzLCBmdW5jdGlvbihldmVudElucHV0KSB7CgkJCQkJcmV0dXJuIGJ1aWxkRXZlbnRGcm9tSW5wdXQoZXZlbnRJbnB1dCwgc291cmNlKTsKCQkJCX0pOwoJCQl9CgoJCQlmb3IgKGk9MDsgaTxub3JtYWxpemVycy5sZW5ndGg7IGkrKykgewoJCQkJbm9ybWFsaXplcnNbaV0uY2FsbCh0LCBzb3VyY2UpOwoJCQl9CgoJCQlyZXR1cm4gc291cmNlOwoJCX0KCX0KCgoJZnVuY3Rpb24gcmVtb3ZlRXZlbnRTb3VyY2Uoc291cmNlKSB7CgkJc291cmNlcyA9ICQuZ3JlcChzb3VyY2VzLCBmdW5jdGlvbihzcmMpIHsKCQkJcmV0dXJuICFpc1NvdXJjZXNFcXVhbChzcmMsIHNvdXJjZSk7CgkJfSk7CgkJLy8gcmVtb3ZlIGFsbCBjbGllbnQgZXZlbnRzIGZyb20gdGhhdCBzb3VyY2UKCQljYWNoZSA9ICQuZ3JlcChjYWNoZSwgZnVuY3Rpb24oZSkgewoJCQlyZXR1cm4gIWlzU291cmNlc0VxdWFsKGUuc291cmNlLCBzb3VyY2UpOwoJCX0pOwoJCXJlcG9ydEV2ZW50cyhjYWNoZSk7Cgl9CgoKCWZ1bmN0aW9uIGlzU291cmNlc0VxdWFsKHNvdXJjZTEsIHNvdXJjZTIpIHsKCQlyZXR1cm4gc291cmNlMSAmJiBzb3VyY2UyICYmIGdldFNvdXJjZVByaW1pdGl2ZShzb3VyY2UxKSA9PSBnZXRTb3VyY2VQcmltaXRpdmUoc291cmNlMik7Cgl9CgoKCWZ1bmN0aW9uIGdldFNvdXJjZVByaW1pdGl2ZShzb3VyY2UpIHsKCQlyZXR1cm4gKAoJCQkodHlwZW9mIHNvdXJjZSA9PT0gJ29iamVjdCcpID8gLy8gYSBub3JtYWxpemVkIGV2ZW50IHNvdXJjZT8KCQkJCShzb3VyY2Uub3JpZ0FycmF5IHx8IHNvdXJjZS5nb29nbGVDYWxlbmRhcklkIHx8IHNvdXJjZS51cmwgfHwgc291cmNlLmV2ZW50cykgOiAvLyBnZXQgdGhlIHByaW1pdGl2ZQoJCQkJbnVsbAoJCSkgfHwKCQlzb3VyY2U7IC8vIHRoZSBnaXZlbiBhcmd1bWVudCAqaXMqIHRoZSBwcmltaXRpdmUKCX0KCQoJCgkKCS8qIE1hbmlwdWxhdGlvbgoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBPbmx5IGV2ZXIgY2FsbGVkIGZyb20gdGhlIGV4dGVybmFsbHktZmFjaW5nIEFQSQoJZnVuY3Rpb24gdXBkYXRlRXZlbnQoZXZlbnQpIHsKCgkJLy8gbWFzc2FnZSBzdGFydC9lbmQgdmFsdWVzLCBldmVuIGlmIGRhdGUgc3RyaW5nIHZhbHVlcwoJCWV2ZW50LnN0YXJ0ID0gdC5tb21lbnQoZXZlbnQuc3RhcnQpOwoJCWlmIChldmVudC5lbmQpIHsKCQkJZXZlbnQuZW5kID0gdC5tb21lbnQoZXZlbnQuZW5kKTsKCQl9CgkJZWxzZSB7CgkJCWV2ZW50LmVuZCA9IG51bGw7CgkJfQoKCQltdXRhdGVFdmVudChldmVudCwgZ2V0TWlzY0V2ZW50UHJvcHMoZXZlbnQpKTsgLy8gd2lsbCBoYW5kbGUgc3RhcnQvZW5kL2FsbERheSBub3JtYWxpemF0aW9uCgkJcmVwb3J0RXZlbnRzKGNhY2hlKTsgLy8gcmVwb3J0cyBldmVudCBtb2RpZmljYXRpb25zIChzbyB3ZSBjYW4gcmVkcmF3KQoJfQoKCgkvLyBSZXR1cm5zIGEgaGFzaCBvZiBtaXNjIGV2ZW50IHByb3BlcnRpZXMgdGhhdCBzaG91bGQgYmUgY29waWVkIG92ZXIgdG8gcmVsYXRlZCBldmVudHMuCglmdW5jdGlvbiBnZXRNaXNjRXZlbnRQcm9wcyhldmVudCkgewoJCXZhciBwcm9wcyA9IHt9OwoKCQkkLmVhY2goZXZlbnQsIGZ1bmN0aW9uKG5hbWUsIHZhbCkgewoJCQlpZiAoaXNNaXNjRXZlbnRQcm9wTmFtZShuYW1lKSkgewoJCQkJaWYgKHZhbCAhPT0gdW5kZWZpbmVkICYmIGlzQXRvbWljKHZhbCkpIHsgLy8gYSBkZWZpbmVkIG5vbi1vYmplY3QKCQkJCQlwcm9wc1tuYW1lXSA9IHZhbDsKCQkJCX0KCQkJfQoJCX0pOwoKCQlyZXR1cm4gcHJvcHM7Cgl9CgoJLy8gbm9uLWRhdGUtcmVsYXRlZCwgbm9uLWlkLXJlbGF0ZWQsIG5vbi1zZWNyZXQKCWZ1bmN0aW9uIGlzTWlzY0V2ZW50UHJvcE5hbWUobmFtZSkgewoJCXJldHVybiAhL15ffF4oaWR8YWxsRGF5fHN0YXJ0fGVuZCkkLy50ZXN0KG5hbWUpOwoJfQoKCQoJLy8gcmV0dXJucyB0aGUgZXhwYW5kZWQgZXZlbnRzIHRoYXQgd2VyZSBjcmVhdGVkCglmdW5jdGlvbiByZW5kZXJFdmVudChldmVudElucHV0LCBzdGljaykgewoJCXZhciBhYnN0cmFjdEV2ZW50ID0gYnVpbGRFdmVudEZyb21JbnB1dChldmVudElucHV0KTsKCQl2YXIgZXZlbnRzOwoJCXZhciBpLCBldmVudDsKCgkJaWYgKGFic3RyYWN0RXZlbnQpIHsgLy8gbm90IGZhbHNlIChhIHZhbGlkIGlucHV0KQoJCQlldmVudHMgPSBleHBhbmRFdmVudChhYnN0cmFjdEV2ZW50KTsKCgkJCWZvciAoaSA9IDA7IGkgPCBldmVudHMubGVuZ3RoOyBpKyspIHsKCQkJCWV2ZW50ID0gZXZlbnRzW2ldOwoKCQkJCWlmICghZXZlbnQuc291cmNlKSB7CgkJCQkJaWYgKHN0aWNrKSB7CgkJCQkJCXN0aWNreVNvdXJjZS5ldmVudHMucHVzaChldmVudCk7CgkJCQkJCWV2ZW50LnNvdXJjZSA9IHN0aWNreVNvdXJjZTsKCQkJCQl9CgkJCQkJY2FjaGUucHVzaChldmVudCk7CgkJCQl9CgkJCX0KCgkJCXJlcG9ydEV2ZW50cyhjYWNoZSk7CgoJCQlyZXR1cm4gZXZlbnRzOwoJCX0KCgkJcmV0dXJuIFtdOwoJfQoJCgkKCWZ1bmN0aW9uIHJlbW92ZUV2ZW50cyhmaWx0ZXIpIHsKCQl2YXIgZXZlbnRJRDsKCQl2YXIgaTsKCgkJaWYgKGZpbHRlciA9PSBudWxsKSB7IC8vIG51bGwgb3IgdW5kZWZpbmVkLiByZW1vdmUgYWxsIGV2ZW50cwoJCQlmaWx0ZXIgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRydWU7IH07IC8vIHdpbGwgYWx3YXlzIG1hdGNoCgkJfQoJCWVsc2UgaWYgKCEkLmlzRnVuY3Rpb24oZmlsdGVyKSkgeyAvLyBhbiBldmVudCBJRAoJCQlldmVudElEID0gZmlsdGVyICsgJyc7CgkJCWZpbHRlciA9IGZ1bmN0aW9uKGV2ZW50KSB7CgkJCQlyZXR1cm4gZXZlbnQuX2lkID09IGV2ZW50SUQ7CgkJCX07CgkJfQoKCQkvLyBQdXJnZSBldmVudChzKSBmcm9tIG91ciBsb2NhbCBjYWNoZQoJCWNhY2hlID0gJC5ncmVwKGNhY2hlLCBmaWx0ZXIsIHRydWUpOyAvLyBpbnZlcnNlPXRydWUKCgkJLy8gUmVtb3ZlIGV2ZW50cyBmcm9tIGFycmF5IHNvdXJjZXMuCgkJLy8gVGhpcyB3b3JrcyBiZWNhdXNlIHRoZXkgaGF2ZSBiZWVuIGNvbnZlcnRlZCB0byBvZmZpY2lhbCBFdmVudCBPYmplY3RzIHVwIGZyb250LgoJCS8vIChhbmQgYXMgYSByZXN1bHQsIGV2ZW50Ll9pZCBoYXMgYmVlbiBjYWxjdWxhdGVkKS4KCQlmb3IgKGk9MDsgaTxzb3VyY2VzLmxlbmd0aDsgaSsrKSB7CgkJCWlmICgkLmlzQXJyYXkoc291cmNlc1tpXS5ldmVudHMpKSB7CgkJCQlzb3VyY2VzW2ldLmV2ZW50cyA9ICQuZ3JlcChzb3VyY2VzW2ldLmV2ZW50cywgZmlsdGVyLCB0cnVlKTsKCQkJfQoJCX0KCgkJcmVwb3J0RXZlbnRzKGNhY2hlKTsKCX0KCQoJCglmdW5jdGlvbiBjbGllbnRFdmVudHMoZmlsdGVyKSB7CgkJaWYgKCQuaXNGdW5jdGlvbihmaWx0ZXIpKSB7CgkJCXJldHVybiAkLmdyZXAoY2FjaGUsIGZpbHRlcik7CgkJfQoJCWVsc2UgaWYgKGZpbHRlciAhPSBudWxsKSB7IC8vIG5vdCBudWxsLCBub3QgdW5kZWZpbmVkLiBhbiBldmVudCBJRAoJCQlmaWx0ZXIgKz0gJyc7CgkJCXJldHVybiAkLmdyZXAoY2FjaGUsIGZ1bmN0aW9uKGUpIHsKCQkJCXJldHVybiBlLl9pZCA9PSBmaWx0ZXI7CgkJCX0pOwoJCX0KCQlyZXR1cm4gY2FjaGU7IC8vIGVsc2UsIHJldHVybiBhbGwKCX0KCQoJCgkKCS8qIEV2ZW50IE5vcm1hbGl6YXRpb24KCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gR2l2ZW4gYSByYXcgb2JqZWN0IHdpdGgga2V5L3ZhbHVlIHByb3BlcnRpZXMsIHJldHVybnMgYW4gImFic3RyYWN0IiBFdmVudCBvYmplY3QuCgkvLyBBbiAiYWJzdHJhY3QiIGV2ZW50IGlzIGFuIGV2ZW50IHRoYXQsIGlmIHJlY3VycmluZywgd2lsbCBub3QgaGF2ZSBiZWVuIGV4cGFuZGVkIHlldC4KCS8vIFdpbGwgcmV0dXJuIGBmYWxzZWAgd2hlbiBpbnB1dCBpcyBpbnZhbGlkLgoJLy8gYHNvdXJjZWAgaXMgb3B0aW9uYWwKCWZ1bmN0aW9uIGJ1aWxkRXZlbnRGcm9tSW5wdXQoaW5wdXQsIHNvdXJjZSkgewoJCXZhciBvdXQgPSB7fTsKCQl2YXIgc3RhcnQsIGVuZDsKCQl2YXIgYWxsRGF5OwoKCQlpZiAob3B0aW9ucy5ldmVudERhdGFUcmFuc2Zvcm0pIHsKCQkJaW5wdXQgPSBvcHRpb25zLmV2ZW50RGF0YVRyYW5zZm9ybShpbnB1dCk7CgkJfQoJCWlmIChzb3VyY2UgJiYgc291cmNlLmV2ZW50RGF0YVRyYW5zZm9ybSkgewoJCQlpbnB1dCA9IHNvdXJjZS5ldmVudERhdGFUcmFuc2Zvcm0oaW5wdXQpOwoJCX0KCgkJLy8gQ29weSBhbGwgcHJvcGVydGllcyBvdmVyIHRvIHRoZSByZXN1bHRpbmcgb2JqZWN0LgoJCS8vIFRoZSBzcGVjaWFsLWNhc2UgcHJvcGVydGllcyB3aWxsIGJlIGNvcGllZCBvdmVyIGFmdGVyd2FyZHMuCgkJJC5leHRlbmQob3V0LCBpbnB1dCk7CgoJCWlmIChzb3VyY2UpIHsKCQkJb3V0LnNvdXJjZSA9IHNvdXJjZTsKCQl9CgoJCW91dC5faWQgPSBpbnB1dC5faWQgfHwgKGlucHV0LmlkID09PSB1bmRlZmluZWQgPyAnX2ZjJyArIGV2ZW50R1VJRCsrIDogaW5wdXQuaWQgKyAnJyk7CgoJCWlmIChpbnB1dC5jbGFzc05hbWUpIHsKCQkJaWYgKHR5cGVvZiBpbnB1dC5jbGFzc05hbWUgPT0gJ3N0cmluZycpIHsKCQkJCW91dC5jbGFzc05hbWUgPSBpbnB1dC5jbGFzc05hbWUuc3BsaXQoL1xzKy8pOwoJCQl9CgkJCWVsc2UgeyAvLyBhc3N1bWVkIHRvIGJlIGFuIGFycmF5CgkJCQlvdXQuY2xhc3NOYW1lID0gaW5wdXQuY2xhc3NOYW1lOwoJCQl9CgkJfQoJCWVsc2UgewoJCQlvdXQuY2xhc3NOYW1lID0gW107CgkJfQoKCQlzdGFydCA9IGlucHV0LnN0YXJ0IHx8IGlucHV0LmRhdGU7IC8vICJkYXRlIiBpcyBhbiBhbGlhcyBmb3IgInN0YXJ0IgoJCWVuZCA9IGlucHV0LmVuZDsKCgkJLy8gcGFyc2UgYXMgYSB0aW1lIChEdXJhdGlvbikgaWYgYXBwbGljYWJsZQoJCWlmIChpc1RpbWVTdHJpbmcoc3RhcnQpKSB7CgkJCXN0YXJ0ID0gbW9tZW50LmR1cmF0aW9uKHN0YXJ0KTsKCQl9CgkJaWYgKGlzVGltZVN0cmluZyhlbmQpKSB7CgkJCWVuZCA9IG1vbWVudC5kdXJhdGlvbihlbmQpOwoJCX0KCgkJaWYgKGlucHV0LmRvdyB8fCBtb21lbnQuaXNEdXJhdGlvbihzdGFydCkgfHwgbW9tZW50LmlzRHVyYXRpb24oZW5kKSkgewoKCQkJLy8gdGhlIGV2ZW50IGlzICJhYnN0cmFjdCIgKHJlY3VycmluZykgc28gZG9uJ3QgY2FsY3VsYXRlIGV4YWN0IHN0YXJ0L2VuZCBkYXRlcyBqdXN0IHlldAoJCQlvdXQuc3RhcnQgPSBzdGFydCA/IG1vbWVudC5kdXJhdGlvbihzdGFydCkgOiBudWxsOyAvLyB3aWxsIGJlIGEgRHVyYXRpb24gb3IgbnVsbAoJCQlvdXQuZW5kID0gZW5kID8gbW9tZW50LmR1cmF0aW9uKGVuZCkgOiBudWxsOyAvLyB3aWxsIGJlIGEgRHVyYXRpb24gb3IgbnVsbAoJCQlvdXQuX3JlY3VycmluZyA9IHRydWU7IC8vIG91ciBpbnRlcm5hbCBtYXJrZXIKCQl9CgkJZWxzZSB7CgoJCQlpZiAoc3RhcnQpIHsKCQkJCXN0YXJ0ID0gdC5tb21lbnQoc3RhcnQpOwoJCQkJaWYgKCFzdGFydC5pc1ZhbGlkKCkpIHsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0KCgkJCWlmIChlbmQpIHsKCQkJCWVuZCA9IHQubW9tZW50KGVuZCk7CgkJCQlpZiAoIWVuZC5pc1ZhbGlkKCkpIHsKCQkJCQllbmQgPSBudWxsOyAvLyBsZXQgZGVmYXVsdHMgdGFrZSBvdmVyCgkJCQl9CgkJCX0KCgkJCWFsbERheSA9IGlucHV0LmFsbERheTsKCQkJaWYgKGFsbERheSA9PT0gdW5kZWZpbmVkKSB7IC8vIHN0aWxsIHVuZGVmaW5lZD8gZmFsbGJhY2sgdG8gZGVmYXVsdAoJCQkJYWxsRGF5ID0gZmlyc3REZWZpbmVkKAoJCQkJCXNvdXJjZSA/IHNvdXJjZS5hbGxEYXlEZWZhdWx0IDogdW5kZWZpbmVkLAoJCQkJCW9wdGlvbnMuYWxsRGF5RGVmYXVsdAoJCQkJKTsKCQkJCS8vIHN0aWxsIHVuZGVmaW5lZD8gbm9ybWFsaXplRXZlbnRSYW5nZSB3aWxsIGNhbGN1bGF0ZSBpdAoJCQl9CgoJCQlhc3NpZ25EYXRlc1RvRXZlbnQoc3RhcnQsIGVuZCwgYWxsRGF5LCBvdXQpOwoJCX0KCgkJcmV0dXJuIG91dDsKCX0KCgoJLy8gTm9ybWFsaXplcyBhbmQgYXNzaWducyB0aGUgZ2l2ZW4gZGF0ZXMgdG8gdGhlIGdpdmVuIHBhcnRpYWxseS1mb3JtZWQgZXZlbnQgb2JqZWN0LgoJLy8gTk9URTogbXV0YXRlcyB0aGUgZ2l2ZW4gc3RhcnQvZW5kIG1vbWVudHMuIGRvZXMgbm90IG1ha2UgYSBjb3B5LgoJZnVuY3Rpb24gYXNzaWduRGF0ZXNUb0V2ZW50KHN0YXJ0LCBlbmQsIGFsbERheSwgZXZlbnQpIHsKCQlldmVudC5zdGFydCA9IHN0YXJ0OwoJCWV2ZW50LmVuZCA9IGVuZDsKCQlldmVudC5hbGxEYXkgPSBhbGxEYXk7CgkJbm9ybWFsaXplRXZlbnRSYW5nZShldmVudCk7CgkJYmFja3VwRXZlbnREYXRlcyhldmVudCk7Cgl9CgoKCS8vIEVuc3VyZXMgcHJvcGVyIHZhbHVlcyBmb3IgYWxsRGF5L3N0YXJ0L2VuZC4gQWNjZXB0cyBhbiBFdmVudCBvYmplY3QsIG9yIGEgcGxhaW4gb2JqZWN0IHdpdGggZXZlbnQtaXNoIHByb3BlcnRpZXMuCgkvLyBOT1RFOiBXaWxsIG1vZGlmeSB0aGUgZ2l2ZW4gb2JqZWN0LgoJZnVuY3Rpb24gbm9ybWFsaXplRXZlbnRSYW5nZShwcm9wcykgewoKCQlub3JtYWxpemVFdmVudFJhbmdlVGltZXMocHJvcHMpOwoKCQlpZiAocHJvcHMuZW5kICYmICFwcm9wcy5lbmQuaXNBZnRlcihwcm9wcy5zdGFydCkpIHsKCQkJcHJvcHMuZW5kID0gbnVsbDsKCQl9CgoJCWlmICghcHJvcHMuZW5kKSB7CgkJCWlmIChvcHRpb25zLmZvcmNlRXZlbnREdXJhdGlvbikgewoJCQkJcHJvcHMuZW5kID0gdC5nZXREZWZhdWx0RXZlbnRFbmQocHJvcHMuYWxsRGF5LCBwcm9wcy5zdGFydCk7CgkJCX0KCQkJZWxzZSB7CgkJCQlwcm9wcy5lbmQgPSBudWxsOwoJCQl9CgkJfQoJfQoKCgkvLyBFbnN1cmVzIHRoZSBhbGxEYXkgcHJvcGVydHkgZXhpc3RzIGFuZCB0aGUgdGltZWxpbmVzcyBvZiB0aGUgc3RhcnQvZW5kIGRhdGVzIGFyZSBjb25zaXN0ZW50CglmdW5jdGlvbiBub3JtYWxpemVFdmVudFJhbmdlVGltZXMocmFuZ2UpIHsKCQlpZiAocmFuZ2UuYWxsRGF5ID09IG51bGwpIHsKCQkJcmFuZ2UuYWxsRGF5ID0gIShyYW5nZS5zdGFydC5oYXNUaW1lKCkgfHwgKHJhbmdlLmVuZCAmJiByYW5nZS5lbmQuaGFzVGltZSgpKSk7CgkJfQoKCQlpZiAocmFuZ2UuYWxsRGF5KSB7CgkJCXJhbmdlLnN0YXJ0LnN0cmlwVGltZSgpOwoJCQlpZiAocmFuZ2UuZW5kKSB7CgkJCQkvLyBUT0RPOiBjb25zaWRlciBuZXh0RGF5VGhyZXNob2xkIGhlcmU/IElmIHNvLCB3aWxsIHJlcXVpcmUgYSBsb3Qgb2YgdGVzdGluZyBhbmQgYWRqdXN0bWVudAoJCQkJcmFuZ2UuZW5kLnN0cmlwVGltZSgpOwoJCQl9CgkJfQoJCWVsc2UgewoJCQlpZiAoIXJhbmdlLnN0YXJ0Lmhhc1RpbWUoKSkgewoJCQkJcmFuZ2Uuc3RhcnQgPSB0LnJlem9uZURhdGUocmFuZ2Uuc3RhcnQpOyAvLyB3aWxsIGFzc2lnbiBhIDAwOjAwIHRpbWUKCQkJfQoJCQlpZiAocmFuZ2UuZW5kICYmICFyYW5nZS5lbmQuaGFzVGltZSgpKSB7CgkJCQlyYW5nZS5lbmQgPSB0LnJlem9uZURhdGUocmFuZ2UuZW5kKTsgLy8gd2lsbCBhc3NpZ24gYSAwMDowMCB0aW1lCgkJCX0KCQl9Cgl9CgoKCS8vIElmIGByYW5nZWAgaXMgYSBwcm9wZXIgcmFuZ2Ugd2l0aCBhIHN0YXJ0IGFuZCBlbmQsIHJldHVybnMgdGhlIG9yaWdpbmFsIG9iamVjdC4KCS8vIElmIG1pc3NpbmcgYW4gZW5kLCBjb21wdXRlcyBhIG5ldyByYW5nZSB3aXRoIGFuIGVuZCwgY29tcHV0aW5nIGl0IGFzIGlmIGl0IHdlcmUgYW4gZXZlbnQuCgkvLyBUT0RPOiBtYWtlIHRoaXMgYSBwYXJ0IG9mIHRoZSBldmVudCAtPiBldmVudFJhbmdlIHN5c3RlbQoJZnVuY3Rpb24gZW5zdXJlVmlzaWJsZUV2ZW50UmFuZ2UocmFuZ2UpIHsKCQl2YXIgYWxsRGF5OwoKCQlpZiAoIXJhbmdlLmVuZCkgewoKCQkJYWxsRGF5ID0gcmFuZ2UuYWxsRGF5OyAvLyByYW5nZSBtaWdodCBiZSBtb3JlIGV2ZW50LWlzaCB0aGFuIHdlIHRoaW5rCgkJCWlmIChhbGxEYXkgPT0gbnVsbCkgewoJCQkJYWxsRGF5ID0gIXJhbmdlLnN0YXJ0Lmhhc1RpbWUoKTsKCQkJfQoKCQkJcmFuZ2UgPSAkLmV4dGVuZCh7fSwgcmFuZ2UpOyAvLyBtYWtlIGEgY29weSwgY29weWluZyBvdmVyIG90aGVyIG1pc2MgcHJvcGVydGllcwoJCQlyYW5nZS5lbmQgPSB0LmdldERlZmF1bHRFdmVudEVuZChhbGxEYXksIHJhbmdlLnN0YXJ0KTsKCQl9CgkJcmV0dXJuIHJhbmdlOwoJfQoKCgkvLyBJZiB0aGUgZ2l2ZW4gZXZlbnQgaXMgYSByZWN1cnJpbmcgZXZlbnQsIGJyZWFrIGl0IGRvd24gaW50byBhbiBhcnJheSBvZiBpbmRpdmlkdWFsIGluc3RhbmNlcy4KCS8vIElmIG5vdCBhIHJlY3VycmluZyBldmVudCwgcmV0dXJuIGFuIGFycmF5IHdpdGggdGhlIHNpbmdsZSBvcmlnaW5hbCBldmVudC4KCS8vIElmIGdpdmVuIGEgZmFsc3kgaW5wdXQgKHByb2JhYmx5IGJlY2F1c2Ugb2YgYSBmYWlsZWQgYnVpbGRFdmVudEZyb21JbnB1dCBjYWxsKSwgcmV0dXJucyBhbiBlbXB0eSBhcnJheS4KCS8vIEhBQ0s6IGNhbiBvdmVycmlkZSB0aGUgcmVjdXJyaW5nIHdpbmRvdyBieSBwcm92aWRpbmcgY3VzdG9tIHJhbmdlU3RhcnQvcmFuZ2VFbmQgKGZvciBidXNpbmVzc0hvdXJzKS4KCWZ1bmN0aW9uIGV4cGFuZEV2ZW50KGFic3RyYWN0RXZlbnQsIF9yYW5nZVN0YXJ0LCBfcmFuZ2VFbmQpIHsKCQl2YXIgZXZlbnRzID0gW107CgkJdmFyIGRvd0hhc2g7CgkJdmFyIGRvdzsKCQl2YXIgaTsKCQl2YXIgZGF0ZTsKCQl2YXIgc3RhcnRUaW1lLCBlbmRUaW1lOwoJCXZhciBzdGFydCwgZW5kOwoJCXZhciBldmVudDsKCgkJX3JhbmdlU3RhcnQgPSBfcmFuZ2VTdGFydCB8fCByYW5nZVN0YXJ0OwoJCV9yYW5nZUVuZCA9IF9yYW5nZUVuZCB8fCByYW5nZUVuZDsKCgkJaWYgKGFic3RyYWN0RXZlbnQpIHsKCQkJaWYgKGFic3RyYWN0RXZlbnQuX3JlY3VycmluZykgewoKCQkJCS8vIG1ha2UgYSBib29sZWFuIGhhc2ggYXMgdG8gd2hldGhlciB0aGUgZXZlbnQgb2NjdXJzIG9uIGVhY2ggZGF5LW9mLXdlZWsKCQkJCWlmICgoZG93ID0gYWJzdHJhY3RFdmVudC5kb3cpKSB7CgkJCQkJZG93SGFzaCA9IHt9OwoJCQkJCWZvciAoaSA9IDA7IGkgPCBkb3cubGVuZ3RoOyBpKyspIHsKCQkJCQkJZG93SGFzaFtkb3dbaV1dID0gdHJ1ZTsKCQkJCQl9CgkJCQl9CgoJCQkJLy8gaXRlcmF0ZSB0aHJvdWdoIGV2ZXJ5IGRheSBpbiB0aGUgY3VycmVudCByYW5nZQoJCQkJZGF0ZSA9IF9yYW5nZVN0YXJ0LmNsb25lKCkuc3RyaXBUaW1lKCk7IC8vIGhvbGRzIHRoZSBkYXRlIG9mIHRoZSBjdXJyZW50IGRheQoJCQkJd2hpbGUgKGRhdGUuaXNCZWZvcmUoX3JhbmdlRW5kKSkgewoKCQkJCQlpZiAoIWRvd0hhc2ggfHwgZG93SGFzaFtkYXRlLmRheSgpXSkgeyAvLyBpZiBldmVyeWRheSwgb3IgdGhpcyBwYXJ0aWN1bGFyIGRheS1vZi13ZWVrCgoJCQkJCQlzdGFydFRpbWUgPSBhYnN0cmFjdEV2ZW50LnN0YXJ0OyAvLyB0aGUgc3RvcmVkIHN0YXJ0IGFuZCBlbmQgcHJvcGVydGllcyBhcmUgdGltZXMgKER1cmF0aW9ucykKCQkJCQkJZW5kVGltZSA9IGFic3RyYWN0RXZlbnQuZW5kOyAvLyAiCgkJCQkJCXN0YXJ0ID0gZGF0ZS5jbG9uZSgpOwoJCQkJCQllbmQgPSBudWxsOwoKCQkJCQkJaWYgKHN0YXJ0VGltZSkgewoJCQkJCQkJc3RhcnQgPSBzdGFydC50aW1lKHN0YXJ0VGltZSk7CgkJCQkJCX0KCQkJCQkJaWYgKGVuZFRpbWUpIHsKCQkJCQkJCWVuZCA9IGRhdGUuY2xvbmUoKS50aW1lKGVuZFRpbWUpOwoJCQkJCQl9CgoJCQkJCQlldmVudCA9ICQuZXh0ZW5kKHt9LCBhYnN0cmFjdEV2ZW50KTsgLy8gbWFrZSBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsCgkJCQkJCWFzc2lnbkRhdGVzVG9FdmVudCgKCQkJCQkJCXN0YXJ0LCBlbmQsCgkJCQkJCQkhc3RhcnRUaW1lICYmICFlbmRUaW1lLCAvLyBhbGxEYXk/CgkJCQkJCQlldmVudAoJCQkJCQkpOwoJCQkJCQlldmVudHMucHVzaChldmVudCk7CgkJCQkJfQoKCQkJCQlkYXRlLmFkZCgxLCAnZGF5cycpOwoJCQkJfQoJCQl9CgkJCWVsc2UgewoJCQkJZXZlbnRzLnB1c2goYWJzdHJhY3RFdmVudCk7IC8vIHJldHVybiB0aGUgb3JpZ2luYWwgZXZlbnQuIHdpbGwgYmUgYSBvbmUtaXRlbSBhcnJheQoJCQl9CgkJfQoKCQlyZXR1cm4gZXZlbnRzOwoJfQoKCgoJLyogRXZlbnQgTW9kaWZpY2F0aW9uIE1hdGgKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gTW9kaWZpZXMgYW4gZXZlbnQgYW5kIGFsbCByZWxhdGVkIGV2ZW50cyBieSBhcHBseWluZyB0aGUgZ2l2ZW4gcHJvcGVydGllcy4KCS8vIFNwZWNpYWwgZGF0ZS1kaWZmaW5nIGxvZ2ljIGlzIHVzZWQgZm9yIG1hbmlwdWxhdGlvbiBvZiBkYXRlcy4KCS8vIElmIGBwcm9wc2AgZG9lcyBub3QgY29udGFpbiBzdGFydC9lbmQgZGF0ZXMsIHRoZSB1cGRhdGVkIHZhbHVlcyBhcmUgYXNzdW1lZCB0byBiZSB0aGUgZXZlbnQncyBjdXJyZW50IHN0YXJ0L2VuZC4KCS8vIEFsbCBkYXRlIGNvbXBhcmlzb25zIGFyZSBkb25lIGFnYWluc3QgdGhlIGV2ZW50J3MgcHJpc3RpbmUgX3N0YXJ0IGFuZCBfZW5kIGRhdGVzLgoJLy8gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBkZWx0YSBpbmZvcm1hdGlvbiBhbmQgYSBmdW5jdGlvbiB0byB1bmRvIGFsbCBvcGVyYXRpb25zLgoJLy8gRm9yIG1ha2luZyBjb21wdXRhdGlvbnMgaW4gYSBncmFudWxhcml0eSBncmVhdGVyIHRoYW4gZGF5L3RpbWUsIHNwZWNpZnkgbGFyZ2VVbml0LgoJLy8gTk9URTogVGhlIGdpdmVuIGBuZXdQcm9wc2AgbWlnaHQgYmUgbXV0YXRlZCBmb3Igbm9ybWFsaXphdGlvbiBwdXJwb3Nlcy4KCWZ1bmN0aW9uIG11dGF0ZUV2ZW50KGV2ZW50LCBuZXdQcm9wcywgbGFyZ2VVbml0KSB7CgkJdmFyIG1pc2NQcm9wcyA9IHt9OwoJCXZhciBvbGRQcm9wczsKCQl2YXIgY2xlYXJFbmQ7CgkJdmFyIHN0YXJ0RGVsdGE7CgkJdmFyIGVuZERlbHRhOwoJCXZhciBkdXJhdGlvbkRlbHRhOwoJCXZhciB1bmRvRnVuYzsKCgkJLy8gZGlmZnMgdGhlIGRhdGVzIGluIHRoZSBhcHByb3ByaWF0ZSB3YXksIHJldHVybmluZyBhIGR1cmF0aW9uCgkJZnVuY3Rpb24gZGlmZkRhdGVzKGRhdGUxLCBkYXRlMCkgeyAvLyBkYXRlMSAtIGRhdGUwCgkJCWlmIChsYXJnZVVuaXQpIHsKCQkJCXJldHVybiBkaWZmQnlVbml0KGRhdGUxLCBkYXRlMCwgbGFyZ2VVbml0KTsKCQkJfQoJCQllbHNlIGlmIChuZXdQcm9wcy5hbGxEYXkpIHsKCQkJCXJldHVybiBkaWZmRGF5KGRhdGUxLCBkYXRlMCk7CgkJCX0KCQkJZWxzZSB7CgkJCQlyZXR1cm4gZGlmZkRheVRpbWUoZGF0ZTEsIGRhdGUwKTsKCQkJfQoJCX0KCgkJbmV3UHJvcHMgPSBuZXdQcm9wcyB8fCB7fTsKCgkJLy8gbm9ybWFsaXplIG5ldyBkYXRlLXJlbGF0ZWQgcHJvcGVydGllcwoJCWlmICghbmV3UHJvcHMuc3RhcnQpIHsKCQkJbmV3UHJvcHMuc3RhcnQgPSBldmVudC5zdGFydC5jbG9uZSgpOwoJCX0KCQlpZiAobmV3UHJvcHMuZW5kID09PSB1bmRlZmluZWQpIHsKCQkJbmV3UHJvcHMuZW5kID0gZXZlbnQuZW5kID8gZXZlbnQuZW5kLmNsb25lKCkgOiBudWxsOwoJCX0KCQlpZiAobmV3UHJvcHMuYWxsRGF5ID09IG51bGwpIHsgLy8gaXMgbnVsbCBvciB1bmRlZmluZWQ/CgkJCW5ld1Byb3BzLmFsbERheSA9IGV2ZW50LmFsbERheTsKCQl9CgkJbm9ybWFsaXplRXZlbnRSYW5nZShuZXdQcm9wcyk7CgoJCS8vIGNyZWF0ZSBub3JtYWxpemVkIHZlcnNpb25zIG9mIHRoZSBvcmlnaW5hbCBwcm9wcyB0byBjb21wYXJlIGFnYWluc3QKCQkvLyBuZWVkIGEgcmVhbCBlbmQgdmFsdWUsIGZvciBkaWZmaW5nCgkJb2xkUHJvcHMgPSB7CgkJCXN0YXJ0OiBldmVudC5fc3RhcnQuY2xvbmUoKSwKCQkJZW5kOiBldmVudC5fZW5kID8gZXZlbnQuX2VuZC5jbG9uZSgpIDogdC5nZXREZWZhdWx0RXZlbnRFbmQoZXZlbnQuX2FsbERheSwgZXZlbnQuX3N0YXJ0KSwKCQkJYWxsRGF5OiBuZXdQcm9wcy5hbGxEYXkgLy8gbm9ybWFsaXplIHRoZSBkYXRlcyBpbiB0aGUgc2FtZSByZWdhcmQgYXMgdGhlIG5ldyBwcm9wZXJ0aWVzCgkJfTsKCQlub3JtYWxpemVFdmVudFJhbmdlKG9sZFByb3BzKTsKCgkJLy8gbmVlZCB0byBjbGVhciB0aGUgZW5kIGRhdGUgaWYgZXhwbGljaXRseSBjaGFuZ2VkIHRvIG51bGwKCQljbGVhckVuZCA9IGV2ZW50Ll9lbmQgIT09IG51bGwgJiYgbmV3UHJvcHMuZW5kID09PSBudWxsOwoKCQkvLyBjb21wdXRlIHRoZSBkZWx0YSBmb3IgbW92aW5nIHRoZSBzdGFydCBkYXRlCgkJc3RhcnREZWx0YSA9IGRpZmZEYXRlcyhuZXdQcm9wcy5zdGFydCwgb2xkUHJvcHMuc3RhcnQpOwoKCQkvLyBjb21wdXRlIHRoZSBkZWx0YSBmb3IgbW92aW5nIHRoZSBlbmQgZGF0ZQoJCWlmIChuZXdQcm9wcy5lbmQpIHsKCQkJZW5kRGVsdGEgPSBkaWZmRGF0ZXMobmV3UHJvcHMuZW5kLCBvbGRQcm9wcy5lbmQpOwoJCQlkdXJhdGlvbkRlbHRhID0gZW5kRGVsdGEuc3VidHJhY3Qoc3RhcnREZWx0YSk7CgkJfQoJCWVsc2UgewoJCQlkdXJhdGlvbkRlbHRhID0gbnVsbDsKCQl9CgoJCS8vIGdhdGhlciBhbGwgbm9uLWRhdGUtcmVsYXRlZCBwcm9wZXJ0aWVzCgkJJC5lYWNoKG5ld1Byb3BzLCBmdW5jdGlvbihuYW1lLCB2YWwpIHsKCQkJaWYgKGlzTWlzY0V2ZW50UHJvcE5hbWUobmFtZSkpIHsKCQkJCWlmICh2YWwgIT09IHVuZGVmaW5lZCkgewoJCQkJCW1pc2NQcm9wc1tuYW1lXSA9IHZhbDsKCQkJCX0KCQkJfQoJCX0pOwoKCQkvLyBhcHBseSB0aGUgb3BlcmF0aW9ucyB0byB0aGUgZXZlbnQgYW5kIGFsbCByZWxhdGVkIGV2ZW50cwoJCXVuZG9GdW5jID0gbXV0YXRlRXZlbnRzKAoJCQljbGllbnRFdmVudHMoZXZlbnQuX2lkKSwgLy8gZ2V0IGV2ZW50cyB3aXRoIHRoaXMgSUQKCQkJY2xlYXJFbmQsCgkJCW5ld1Byb3BzLmFsbERheSwKCQkJc3RhcnREZWx0YSwKCQkJZHVyYXRpb25EZWx0YSwKCQkJbWlzY1Byb3BzCgkJKTsKCgkJcmV0dXJuIHsKCQkJZGF0ZURlbHRhOiBzdGFydERlbHRhLAoJCQlkdXJhdGlvbkRlbHRhOiBkdXJhdGlvbkRlbHRhLAoJCQl1bmRvOiB1bmRvRnVuYwoJCX07Cgl9CgoKCS8vIE1vZGlmaWVzIGFuIGFycmF5IG9mIGV2ZW50cyBpbiB0aGUgZm9sbG93aW5nIHdheXMgKG9wZXJhdGlvbnMgYXJlIGluIG9yZGVyKToKCS8vIC0gY2xlYXIgdGhlIGV2ZW50J3MgYGVuZGAKCS8vIC0gY29udmVydCB0aGUgZXZlbnQgdG8gYWxsRGF5CgkvLyAtIGFkZCBgZGF0ZURlbHRhYCB0byB0aGUgc3RhcnQgYW5kIGVuZAoJLy8gLSBhZGQgYGR1cmF0aW9uRGVsdGFgIHRvIHRoZSBldmVudCdzIGR1cmF0aW9uCgkvLyAtIGFzc2lnbiBgbWlzY1Byb3BzYCB0byB0aGUgZXZlbnQKCS8vCgkvLyBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgY2FsbGVkIHRvIHVuZG8gYWxsIHRoZSBvcGVyYXRpb25zLgoJLy8KCS8vIFRPRE86IGRvbid0IHVzZSBzbyBtYW55IGNsb3N1cmVzLiBwb3NzaWJsZSBtZW1vcnkgaXNzdWVzIHdoZW4gbG90cyBvZiBldmVudHMgd2l0aCBzYW1lIElELgoJLy8KCWZ1bmN0aW9uIG11dGF0ZUV2ZW50cyhldmVudHMsIGNsZWFyRW5kLCBhbGxEYXksIGRhdGVEZWx0YSwgZHVyYXRpb25EZWx0YSwgbWlzY1Byb3BzKSB7CgkJdmFyIGlzQW1iaWdUaW1lem9uZSA9IHQuZ2V0SXNBbWJpZ1RpbWV6b25lKCk7CgkJdmFyIHVuZG9GdW5jdGlvbnMgPSBbXTsKCgkJLy8gbm9ybWFsaXplIHplcm8tbGVuZ3RoIGRlbHRhcyB0byBiZSBudWxsCgkJaWYgKGRhdGVEZWx0YSAmJiAhZGF0ZURlbHRhLnZhbHVlT2YoKSkgeyBkYXRlRGVsdGEgPSBudWxsOyB9CgkJaWYgKGR1cmF0aW9uRGVsdGEgJiYgIWR1cmF0aW9uRGVsdGEudmFsdWVPZigpKSB7IGR1cmF0aW9uRGVsdGEgPSBudWxsOyB9CgoJCSQuZWFjaChldmVudHMsIGZ1bmN0aW9uKGksIGV2ZW50KSB7CgkJCXZhciBvbGRQcm9wczsKCQkJdmFyIG5ld1Byb3BzOwoKCQkJLy8gYnVpbGQgYW4gb2JqZWN0IGhvbGRpbmcgYWxsIHRoZSBvbGQgdmFsdWVzLCBib3RoIGRhdGUtcmVsYXRlZCBhbmQgbWlzYy4KCQkJLy8gZm9yIHRoZSB1bmRvIGZ1bmN0aW9uLgoJCQlvbGRQcm9wcyA9IHsKCQkJCXN0YXJ0OiBldmVudC5zdGFydC5jbG9uZSgpLAoJCQkJZW5kOiBldmVudC5lbmQgPyBldmVudC5lbmQuY2xvbmUoKSA6IG51bGwsCgkJCQlhbGxEYXk6IGV2ZW50LmFsbERheQoJCQl9OwoJCQkkLmVhY2gobWlzY1Byb3BzLCBmdW5jdGlvbihuYW1lKSB7CgkJCQlvbGRQcm9wc1tuYW1lXSA9IGV2ZW50W25hbWVdOwoJCQl9KTsKCgkJCS8vIG5ldyBkYXRlLXJlbGF0ZWQgcHJvcGVydGllcy4gd29yayBvZmYgdGhlIG9yaWdpbmFsIGRhdGUgc25hcHNob3QuCgkJCS8vIG9rIHRvIHVzZSByZWZlcmVuY2VzIGJlY2F1c2UgdGhleSB3aWxsIGJlIHRocm93biBhd2F5IHdoZW4gYmFja3VwRXZlbnREYXRlcyBpcyBjYWxsZWQuCgkJCW5ld1Byb3BzID0gewoJCQkJc3RhcnQ6IGV2ZW50Ll9zdGFydCwKCQkJCWVuZDogZXZlbnQuX2VuZCwKCQkJCWFsbERheTogYWxsRGF5IC8vIG5vcm1hbGl6ZSB0aGUgZGF0ZXMgaW4gdGhlIHNhbWUgcmVnYXJkIGFzIHRoZSBuZXcgcHJvcGVydGllcwoJCQl9OwoJCQlub3JtYWxpemVFdmVudFJhbmdlKG5ld1Byb3BzKTsgLy8gbWFzc2FnZXMgc3RhcnQvZW5kL2FsbERheQoKCQkJLy8gc3RyaXAgb3IgZW5zdXJlIHRoZSBlbmQgZGF0ZQoJCQlpZiAoY2xlYXJFbmQpIHsKCQkJCW5ld1Byb3BzLmVuZCA9IG51bGw7CgkJCX0KCQkJZWxzZSBpZiAoZHVyYXRpb25EZWx0YSAmJiAhbmV3UHJvcHMuZW5kKSB7IC8vIHRoZSBkdXJhdGlvbiB0cmFuc2xhdGlvbiByZXF1aXJlcyBhbiBlbmQgZGF0ZQoJCQkJbmV3UHJvcHMuZW5kID0gdC5nZXREZWZhdWx0RXZlbnRFbmQobmV3UHJvcHMuYWxsRGF5LCBuZXdQcm9wcy5zdGFydCk7CgkJCX0KCgkJCWlmIChkYXRlRGVsdGEpIHsKCQkJCW5ld1Byb3BzLnN0YXJ0LmFkZChkYXRlRGVsdGEpOwoJCQkJaWYgKG5ld1Byb3BzLmVuZCkgewoJCQkJCW5ld1Byb3BzLmVuZC5hZGQoZGF0ZURlbHRhKTsKCQkJCX0KCQkJfQoKCQkJaWYgKGR1cmF0aW9uRGVsdGEpIHsKCQkJCW5ld1Byb3BzLmVuZC5hZGQoZHVyYXRpb25EZWx0YSk7IC8vIGVuZCBhbHJlYWR5IGVuc3VyZWQgYWJvdmUKCQkJfQoKCQkJLy8gaWYgdGhlIGRhdGVzIGhhdmUgY2hhbmdlZCwgYW5kIHdlIGtub3cgaXQgaXMgaW1wb3NzaWJsZSB0byByZWNvbXB1dGUgdGhlCgkJCS8vIHRpbWV6b25lIG9mZnNldHMsIHN0cmlwIHRoZSB6b25lLgoJCQlpZiAoCgkJCQlpc0FtYmlnVGltZXpvbmUgJiYKCQkJCSFuZXdQcm9wcy5hbGxEYXkgJiYKCQkJCShkYXRlRGVsdGEgfHwgZHVyYXRpb25EZWx0YSkKCQkJKSB7CgkJCQluZXdQcm9wcy5zdGFydC5zdHJpcFpvbmUoKTsKCQkJCWlmIChuZXdQcm9wcy5lbmQpIHsKCQkJCQluZXdQcm9wcy5lbmQuc3RyaXBab25lKCk7CgkJCQl9CgkJCX0KCgkJCSQuZXh0ZW5kKGV2ZW50LCBtaXNjUHJvcHMsIG5ld1Byb3BzKTsgLy8gY29weSBvdmVyIG1pc2MgcHJvcHMsIHRoZW4gZGF0ZS1yZWxhdGVkIHByb3BzCgkJCWJhY2t1cEV2ZW50RGF0ZXMoZXZlbnQpOyAvLyByZWdlbmVyYXRlIGludGVybmFsIF9zdGFydC9fZW5kL19hbGxEYXkKCgkJCXVuZG9GdW5jdGlvbnMucHVzaChmdW5jdGlvbigpIHsKCQkJCSQuZXh0ZW5kKGV2ZW50LCBvbGRQcm9wcyk7CgkJCQliYWNrdXBFdmVudERhdGVzKGV2ZW50KTsgLy8gcmVnZW5lcmF0ZSBpbnRlcm5hbCBfc3RhcnQvX2VuZC9fYWxsRGF5CgkJCX0pOwoJCX0pOwoKCQlyZXR1cm4gZnVuY3Rpb24oKSB7CgkJCWZvciAodmFyIGkgPSAwOyBpIDwgdW5kb0Z1bmN0aW9ucy5sZW5ndGg7IGkrKykgewoJCQkJdW5kb0Z1bmN0aW9uc1tpXSgpOwoJCQl9CgkJfTsKCX0KCgoJLyogQnVzaW5lc3MgSG91cnMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgl0LmdldEJ1c2luZXNzSG91cnNFdmVudHMgPSBnZXRCdXNpbmVzc0hvdXJzRXZlbnRzOwoKCgkvLyBSZXR1cm5zIGFuIGFycmF5IG9mIGV2ZW50cyBhcyB0byB3aGVuIHRoZSBidXNpbmVzcyBob3VycyBvY2N1ciBpbiB0aGUgZ2l2ZW4gdmlldy4KCS8vIEFidXNlIG9mIG91ciBldmVudCBzeXN0ZW0gOigKCWZ1bmN0aW9uIGdldEJ1c2luZXNzSG91cnNFdmVudHMod2hvbGVEYXkpIHsKCQl2YXIgb3B0aW9uVmFsID0gb3B0aW9ucy5idXNpbmVzc0hvdXJzOwoJCXZhciBkZWZhdWx0VmFsID0gewoJCQljbGFzc05hbWU6ICdmYy1ub25idXNpbmVzcycsCgkJCXN0YXJ0OiAnMDk6MDAnLAoJCQllbmQ6ICcxNzowMCcsCgkJCWRvdzogWyAxLCAyLCAzLCA0LCA1IF0sIC8vIG1vbmRheSAtIGZyaWRheQoJCQlyZW5kZXJpbmc6ICdpbnZlcnNlLWJhY2tncm91bmQnCgkJfTsKCQl2YXIgdmlldyA9IHQuZ2V0VmlldygpOwoJCXZhciBldmVudElucHV0OwoKCQlpZiAob3B0aW9uVmFsKSB7IC8vIGB0cnVlYCAod2hpY2ggbWVhbnMgInVzZSB0aGUgZGVmYXVsdHMiKSBvciBhbiBvdmVycmlkZSBvYmplY3QKCQkJZXZlbnRJbnB1dCA9ICQuZXh0ZW5kKAoJCQkJe30sIC8vIGNvcHkgdG8gYSBuZXcgb2JqZWN0IGluIGVpdGhlciBjYXNlCgkJCQlkZWZhdWx0VmFsLAoJCQkJdHlwZW9mIG9wdGlvblZhbCA9PT0gJ29iamVjdCcgPyBvcHRpb25WYWwgOiB7fSAvLyBvdmVycmlkZSB0aGUgZGVmYXVsdHMKCQkJKTsKCQl9CgoJCWlmIChldmVudElucHV0KSB7CgoJCQkvLyBpZiBhIHdob2xlLWRheSBzZXJpZXMgaXMgcmVxdWVzdGVkLCBjbGVhciB0aGUgc3RhcnQvZW5kIHRpbWVzCgkJCWlmICh3aG9sZURheSkgewoJCQkJZXZlbnRJbnB1dC5zdGFydCA9IG51bGw7CgkJCQlldmVudElucHV0LmVuZCA9IG51bGw7CgkJCX0KCgkJCXJldHVybiBleHBhbmRFdmVudCgKCQkJCWJ1aWxkRXZlbnRGcm9tSW5wdXQoZXZlbnRJbnB1dCksCgkJCQl2aWV3LnN0YXJ0LAoJCQkJdmlldy5lbmQKCQkJKTsKCQl9CgoJCXJldHVybiBbXTsKCX0KCgoJLyogT3ZlcmxhcHBpbmcgLyBDb25zdHJhaW5pbmcKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgl0LmlzRXZlbnRSYW5nZUFsbG93ZWQgPSBpc0V2ZW50UmFuZ2VBbGxvd2VkOwoJdC5pc1NlbGVjdGlvblJhbmdlQWxsb3dlZCA9IGlzU2VsZWN0aW9uUmFuZ2VBbGxvd2VkOwoJdC5pc0V4dGVybmFsRHJvcFJhbmdlQWxsb3dlZCA9IGlzRXh0ZXJuYWxEcm9wUmFuZ2VBbGxvd2VkOwoKCglmdW5jdGlvbiBpc0V2ZW50UmFuZ2VBbGxvd2VkKHJhbmdlLCBldmVudCkgewoJCXZhciBzb3VyY2UgPSBldmVudC5zb3VyY2UgfHwge307CgkJdmFyIGNvbnN0cmFpbnQgPSBmaXJzdERlZmluZWQoCgkJCWV2ZW50LmNvbnN0cmFpbnQsCgkJCXNvdXJjZS5jb25zdHJhaW50LAoJCQlvcHRpb25zLmV2ZW50Q29uc3RyYWludAoJCSk7CgkJdmFyIG92ZXJsYXAgPSBmaXJzdERlZmluZWQoCgkJCWV2ZW50Lm92ZXJsYXAsCgkJCXNvdXJjZS5vdmVybGFwLAoJCQlvcHRpb25zLmV2ZW50T3ZlcmxhcAoJCSk7CgoJCXJhbmdlID0gZW5zdXJlVmlzaWJsZUV2ZW50UmFuZ2UocmFuZ2UpOyAvLyBlbnN1cmUgYSBwcm9wZXIgcmFuZ2Ugd2l0aCBhbiBlbmQgZm9yIGlzUmFuZ2VBbGxvd2VkCgoJCXJldHVybiBpc1JhbmdlQWxsb3dlZChyYW5nZSwgY29uc3RyYWludCwgb3ZlcmxhcCwgZXZlbnQpOwoJfQoKCglmdW5jdGlvbiBpc1NlbGVjdGlvblJhbmdlQWxsb3dlZChyYW5nZSkgewoJCXJldHVybiBpc1JhbmdlQWxsb3dlZChyYW5nZSwgb3B0aW9ucy5zZWxlY3RDb25zdHJhaW50LCBvcHRpb25zLnNlbGVjdE92ZXJsYXApOwoJfQoKCgkvLyB3aGVuIGBldmVudFByb3BzYCBpcyBkZWZpbmVkLCBjb25zaWRlciB0aGlzIGFuIGV2ZW50LgoJLy8gYGV2ZW50UHJvcHNgIGNhbiBjb250YWluIG1pc2Mgbm9uLWRhdGUtcmVsYXRlZCBpbmZvIGFib3V0IHRoZSBldmVudC4KCWZ1bmN0aW9uIGlzRXh0ZXJuYWxEcm9wUmFuZ2VBbGxvd2VkKHJhbmdlLCBldmVudFByb3BzKSB7CgkJdmFyIGV2ZW50SW5wdXQ7CgkJdmFyIGV2ZW50OwoKCQkvLyBub3RlOiB2ZXJ5IHNpbWlsYXIgbG9naWMgaXMgaW4gVmlldydzIHJlcG9ydEV4dGVybmFsRHJvcAoJCWlmIChldmVudFByb3BzKSB7CgkJCWV2ZW50SW5wdXQgPSAkLmV4dGVuZCh7fSwgZXZlbnRQcm9wcywgcmFuZ2UpOwoJCQlldmVudCA9IGV4cGFuZEV2ZW50KGJ1aWxkRXZlbnRGcm9tSW5wdXQoZXZlbnRJbnB1dCkpWzBdOwoJCX0KCgkJaWYgKGV2ZW50KSB7CgkJCXJldHVybiBpc0V2ZW50UmFuZ2VBbGxvd2VkKHJhbmdlLCBldmVudCk7CgkJfQoJCWVsc2UgeyAvLyB0cmVhdCBpdCBhcyBhIHNlbGVjdGlvbgoKCQkJcmFuZ2UgPSBlbnN1cmVWaXNpYmxlRXZlbnRSYW5nZShyYW5nZSk7IC8vIGVuc3VyZSBhIHByb3BlciByYW5nZSB3aXRoIGFuIGVuZCBmb3IgaXNTZWxlY3Rpb25SYW5nZUFsbG93ZWQKCgkJCXJldHVybiBpc1NlbGVjdGlvblJhbmdlQWxsb3dlZChyYW5nZSk7CgkJfQoJfQoKCgkvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHJhbmdlIChjYXVzZWQgYnkgYW4gZXZlbnQgZHJvcC9yZXNpemUgb3IgYSBzZWxlY3Rpb24pIGlzIGFsbG93ZWQgdG8gZXhpc3QKCS8vIGFjY29yZGluZyB0byB0aGUgY29uc3RyYWludC9vdmVybGFwIHNldHRpbmdzLgoJLy8gYGV2ZW50YCBpcyBub3QgcmVxdWlyZWQgaWYgY2hlY2tpbmcgYSBzZWxlY3Rpb24uCglmdW5jdGlvbiBpc1JhbmdlQWxsb3dlZChyYW5nZSwgY29uc3RyYWludCwgb3ZlcmxhcCwgZXZlbnQpIHsKCQl2YXIgY29uc3RyYWludEV2ZW50czsKCQl2YXIgYW55Q29udGFpbm1lbnQ7CgkJdmFyIHBlZXJFdmVudHM7CgkJdmFyIGksIHBlZXJFdmVudDsKCQl2YXIgcGVlck92ZXJsYXA7CgoJCS8vIG5vcm1hbGl6ZS4gZnlpLCB3ZSdyZSBub3JtYWxpemluZyBpbiB0b28gbWFueSBwbGFjZXMgOigKCQlyYW5nZSA9ICQuZXh0ZW5kKHt9LCByYW5nZSk7IC8vIGNvcHkgYWxsIHByb3BlcnRpZXMgaW4gY2FzZSB0aGVyZSBhcmUgbWlzYyBub24tZGF0ZSBwcm9wZXJ0aWVzCgkJcmFuZ2Uuc3RhcnQgPSByYW5nZS5zdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpOwoJCXJhbmdlLmVuZCA9IHJhbmdlLmVuZC5jbG9uZSgpLnN0cmlwWm9uZSgpOwoKCQkvLyB0aGUgcmFuZ2UgbXVzdCBiZSBmdWxseSBjb250YWluZWQgYnkgYXQgbGVhc3Qgb25lIG9mIHByb2R1Y2VkIGNvbnN0cmFpbnQgZXZlbnRzCgkJaWYgKGNvbnN0cmFpbnQgIT0gbnVsbCkgewoKCQkJLy8gbm90IHRyZWF0ZWQgYXMgYW4gZXZlbnQhIGludGVybWVkaWF0ZSBkYXRhIHN0cnVjdHVyZQoJCQkvLyBUT0RPOiB1c2UgcmFuZ2VzIGluIHRoZSBmdXR1cmUKCQkJY29uc3RyYWludEV2ZW50cyA9IGNvbnN0cmFpbnRUb0V2ZW50cyhjb25zdHJhaW50KTsKCgkJCWFueUNvbnRhaW5tZW50ID0gZmFsc2U7CgkJCWZvciAoaSA9IDA7IGkgPCBjb25zdHJhaW50RXZlbnRzLmxlbmd0aDsgaSsrKSB7CgkJCQlpZiAoZXZlbnRDb250YWluc1JhbmdlKGNvbnN0cmFpbnRFdmVudHNbaV0sIHJhbmdlKSkgewoJCQkJCWFueUNvbnRhaW5tZW50ID0gdHJ1ZTsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoKCQkJaWYgKCFhbnlDb250YWlubWVudCkgewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoKCQlwZWVyRXZlbnRzID0gdC5nZXRQZWVyRXZlbnRzKGV2ZW50LCByYW5nZSk7CgoJCWZvciAoaSA9IDA7IGkgPCBwZWVyRXZlbnRzLmxlbmd0aDsgaSsrKSAgewoJCQlwZWVyRXZlbnQgPSBwZWVyRXZlbnRzW2ldOwoKCQkJLy8gdGhlcmUgbmVlZHMgdG8gYmUgYW4gYWN0dWFsIGludGVyc2VjdGlvbiBiZWZvcmUgZGlzYWxsb3dpbmcgYW55dGhpbmcKCQkJaWYgKGV2ZW50SW50ZXJzZWN0c1JhbmdlKHBlZXJFdmVudCwgcmFuZ2UpKSB7CgoJCQkJLy8gZXZhbHVhdGUgb3ZlcmxhcCBmb3IgdGhlIGdpdmVuIHJhbmdlIGFuZCBzaG9ydC1jaXJjdWl0IGlmIG5lY2Vzc2FyeQoJCQkJaWYgKG92ZXJsYXAgPT09IGZhbHNlKSB7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQkJLy8gaWYgdGhlIGV2ZW50J3Mgb3ZlcmxhcCBpcyBhIHRlc3QgZnVuY3Rpb24sIHBhc3MgdGhlIHBlZXIgZXZlbnQgaW4gcXVlc3Rpb24gYXMgdGhlIGZpcnN0IHBhcmFtCgkJCQllbHNlIGlmICh0eXBlb2Ygb3ZlcmxhcCA9PT0gJ2Z1bmN0aW9uJyAmJiAhb3ZlcmxhcChwZWVyRXZlbnQsIGV2ZW50KSkgewoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0KCgkJCQkvLyBpZiB3ZSBhcmUgY29tcHV0aW5nIGlmIHRoZSBnaXZlbiByYW5nZSBpcyBhbGxvd2FibGUgZm9yIGFuIGV2ZW50LCBjb25zaWRlciB0aGUgb3RoZXIgZXZlbnQncwoJCQkJLy8gRXZlbnRPYmplY3Qtc3BlY2lmaWMgb3IgU291cmNlLXNwZWNpZmljIGBvdmVybGFwYCBwcm9wZXJ0eQoJCQkJaWYgKGV2ZW50KSB7CgkJCQkJcGVlck92ZXJsYXAgPSBmaXJzdERlZmluZWQoCgkJCQkJCXBlZXJFdmVudC5vdmVybGFwLAoJCQkJCQkocGVlckV2ZW50LnNvdXJjZSB8fCB7fSkub3ZlcmxhcAoJCQkJCQkvLyB3ZSBhbHJlYWR5IGNvbnNpZGVyZWQgdGhlIGdsb2JhbCBgZXZlbnRPdmVybGFwYAoJCQkJCSk7CgkJCQkJaWYgKHBlZXJPdmVybGFwID09PSBmYWxzZSkgewoJCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQkJfQoJCQkJCS8vIGlmIHRoZSBwZWVyIGV2ZW50J3Mgb3ZlcmxhcCBpcyBhIHRlc3QgZnVuY3Rpb24sIHBhc3MgdGhlIHN1YmplY3QgZXZlbnQgYXMgdGhlIGZpcnN0IHBhcmFtCgkJCQkJaWYgKHR5cGVvZiBwZWVyT3ZlcmxhcCA9PT0gJ2Z1bmN0aW9uJyAmJiAhcGVlck92ZXJsYXAoZXZlbnQsIHBlZXJFdmVudCkpIHsKCQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJcmV0dXJuIHRydWU7Cgl9CgoKCS8vIEdpdmVuIGFuIGV2ZW50IGlucHV0IGZyb20gdGhlIEFQSSwgcHJvZHVjZXMgYW4gYXJyYXkgb2YgZXZlbnQgb2JqZWN0cy4gUG9zc2libGUgZXZlbnQgaW5wdXRzOgoJLy8gJ2J1c2luZXNzSG91cnMnCgkvLyBBbiBldmVudCBJRCAobnVtYmVyIG9yIHN0cmluZykKCS8vIEFuIG9iamVjdCB3aXRoIHNwZWNpZmljIHN0YXJ0L2VuZCBkYXRlcyBvciBhIHJlY3VycmluZyBldmVudCAobGlrZSB3aGF0IGJ1c2luZXNzSG91cnMgYWNjZXB0cykKCWZ1bmN0aW9uIGNvbnN0cmFpbnRUb0V2ZW50cyhjb25zdHJhaW50SW5wdXQpIHsKCgkJaWYgKGNvbnN0cmFpbnRJbnB1dCA9PT0gJ2J1c2luZXNzSG91cnMnKSB7CgkJCXJldHVybiBnZXRCdXNpbmVzc0hvdXJzRXZlbnRzKCk7CgkJfQoKCQlpZiAodHlwZW9mIGNvbnN0cmFpbnRJbnB1dCA9PT0gJ29iamVjdCcpIHsKCQkJcmV0dXJuIGV4cGFuZEV2ZW50KGJ1aWxkRXZlbnRGcm9tSW5wdXQoY29uc3RyYWludElucHV0KSk7CgkJfQoKCQlyZXR1cm4gY2xpZW50RXZlbnRzKGNvbnN0cmFpbnRJbnB1dCk7IC8vIHByb2JhYmx5IGFuIElECgl9CgoKCS8vIERvZXMgdGhlIGV2ZW50J3MgZGF0ZSByYW5nZSBmdWxseSBjb250YWluIHRoZSBnaXZlbiByYW5nZT8KCS8vIHN0YXJ0L2VuZCBhbHJlYWR5IGFzc3VtZWQgdG8gaGF2ZSBzdHJpcHBlZCB6b25lcyA6KAoJZnVuY3Rpb24gZXZlbnRDb250YWluc1JhbmdlKGV2ZW50LCByYW5nZSkgewoJCXZhciBldmVudFN0YXJ0ID0gZXZlbnQuc3RhcnQuY2xvbmUoKS5zdHJpcFpvbmUoKTsKCQl2YXIgZXZlbnRFbmQgPSB0LmdldEV2ZW50RW5kKGV2ZW50KS5zdHJpcFpvbmUoKTsKCgkJcmV0dXJuIHJhbmdlLnN0YXJ0ID49IGV2ZW50U3RhcnQgJiYgcmFuZ2UuZW5kIDw9IGV2ZW50RW5kOwoJfQoKCgkvLyBEb2VzIHRoZSBldmVudCdzIGRhdGUgcmFuZ2UgaW50ZXJzZWN0IHdpdGggdGhlIGdpdmVuIHJhbmdlPwoJLy8gc3RhcnQvZW5kIGFscmVhZHkgYXNzdW1lZCB0byBoYXZlIHN0cmlwcGVkIHpvbmVzIDooCglmdW5jdGlvbiBldmVudEludGVyc2VjdHNSYW5nZShldmVudCwgcmFuZ2UpIHsKCQl2YXIgZXZlbnRTdGFydCA9IGV2ZW50LnN0YXJ0LmNsb25lKCkuc3RyaXBab25lKCk7CgkJdmFyIGV2ZW50RW5kID0gdC5nZXRFdmVudEVuZChldmVudCkuc3RyaXBab25lKCk7CgoJCXJldHVybiByYW5nZS5zdGFydCA8IGV2ZW50RW5kICYmIHJhbmdlLmVuZCA+IGV2ZW50U3RhcnQ7Cgl9CgoKCXQuZ2V0RXZlbnRDYWNoZSA9IGZ1bmN0aW9uKCkgewoJCXJldHVybiBjYWNoZTsKCX07Cgp9CgoKLy8gUmV0dXJucyBhIGxpc3Qgb2YgZXZlbnRzIHRoYXQgdGhlIGdpdmVuIGV2ZW50IHNob3VsZCBiZSBjb21wYXJlZCBhZ2FpbnN0IHdoZW4gYmVpbmcgY29uc2lkZXJlZCBmb3IgYSBtb3ZlIHRvCi8vIHRoZSBzcGVjaWZpZWQgcmFuZ2UuIEF0dGFjaGVkIHRvIHRoZSBDYWxlbmRhcidzIHByb3RvdHlwZSBiZWNhdXNlIEV2ZW50TWFuYWdlciBpcyBhIG1peGluIGZvciBhIENhbGVuZGFyLgpDYWxlbmRhci5wcm90b3R5cGUuZ2V0UGVlckV2ZW50cyA9IGZ1bmN0aW9uKGV2ZW50LCByYW5nZSkgewoJdmFyIGNhY2hlID0gdGhpcy5nZXRFdmVudENhY2hlKCk7Cgl2YXIgcGVlckV2ZW50cyA9IFtdOwoJdmFyIGksIG90aGVyRXZlbnQ7CgoJZm9yIChpID0gMDsgaSA8IGNhY2hlLmxlbmd0aDsgaSsrKSB7CgkJb3RoZXJFdmVudCA9IGNhY2hlW2ldOwoJCWlmICgKCQkJIWV2ZW50IHx8CgkJCWV2ZW50Ll9pZCAhPT0gb3RoZXJFdmVudC5faWQgLy8gZG9uJ3QgY29tcGFyZSB0aGUgZXZlbnQgdG8gaXRzZWxmIG9yIG90aGVyIHJlbGF0ZWQgW3JlcGVhdGluZ10gZXZlbnRzCgkJKSB7CgkJCXBlZXJFdmVudHMucHVzaChvdGhlckV2ZW50KTsKCQl9Cgl9CgoJcmV0dXJuIHBlZXJFdmVudHM7Cn07CgoKLy8gdXBkYXRlcyB0aGUgImJhY2t1cCIgcHJvcGVydGllcywgd2hpY2ggYXJlIHByZXNlcnZlZCBpbiBvcmRlciB0byBjb21wdXRlIGRpZmZzIGxhdGVyIG9uLgpmdW5jdGlvbiBiYWNrdXBFdmVudERhdGVzKGV2ZW50KSB7CglldmVudC5fYWxsRGF5ID0gZXZlbnQuYWxsRGF5OwoJZXZlbnQuX3N0YXJ0ID0gZXZlbnQuc3RhcnQuY2xvbmUoKTsKCWV2ZW50Ll9lbmQgPSBldmVudC5lbmQgPyBldmVudC5lbmQuY2xvbmUoKSA6IG51bGw7Cn0KCjs7CgovKiBBbiBhYnN0cmFjdCBjbGFzcyBmb3IgdGhlICJiYXNpYyIgdmlld3MsIGFzIHdlbGwgYXMgbW9udGggdmlldy4gUmVuZGVycyBvbmUgb3IgbW9yZSByb3dzIG9mIGRheSBjZWxscy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8vIEl0IGlzIGEgbWFuYWdlciBmb3IgYSBEYXlHcmlkIHN1YmNvbXBvbmVudCwgd2hpY2ggZG9lcyBtb3N0IG9mIHRoZSBoZWF2eSBsaWZ0aW5nLgovLyBJdCBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgd2lkdGgvaGVpZ2h0LgoKdmFyIEJhc2ljVmlldyA9IFZpZXcuZXh0ZW5kKHsKCglkYXlHcmlkOiBudWxsLCAvLyB0aGUgbWFpbiBzdWJjb21wb25lbnQgdGhhdCBkb2VzIG1vc3Qgb2YgdGhlIGhlYXZ5IGxpZnRpbmcKCglkYXlOdW1iZXJzVmlzaWJsZTogZmFsc2UsIC8vIGRpc3BsYXkgZGF5IG51bWJlcnMgb24gZWFjaCBkYXkgY2VsbD8KCXdlZWtOdW1iZXJzVmlzaWJsZTogZmFsc2UsIC8vIGRpc3BsYXkgd2VlayBudW1iZXJzIGFsb25nIHRoZSBzaWRlPwoKCXdlZWtOdW1iZXJXaWR0aDogbnVsbCwgLy8gd2lkdGggb2YgYWxsIHRoZSB3ZWVrLW51bWJlciBjZWxscyBydW5uaW5nIGRvd24gdGhlIHNpZGUKCgloZWFkUm93RWw6IG51bGwsIC8vIHRoZSBmYWtlIHJvdyBlbGVtZW50IG9mIHRoZSBkYXktb2Ytd2VlayBoZWFkZXIKCgoJaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7CgkJdGhpcy5kYXlHcmlkID0gbmV3IERheUdyaWQodGhpcyk7CgkJdGhpcy5jb29yZE1hcCA9IHRoaXMuZGF5R3JpZC5jb29yZE1hcDsgLy8gdGhlIHZpZXcncyBkYXRlLXRvLWNlbGwgbWFwcGluZyBpcyBpZGVudGljYWwgdG8gdGhlIHN1YmNvbXBvbmVudCdzCgl9LAoKCgkvLyBTZXRzIHRoZSBkaXNwbGF5IHJhbmdlIGFuZCBjb21wdXRlcyBhbGwgbmVjZXNzYXJ5IGRhdGVzCglzZXRSYW5nZTogZnVuY3Rpb24ocmFuZ2UpIHsKCQlWaWV3LnByb3RvdHlwZS5zZXRSYW5nZS5jYWxsKHRoaXMsIHJhbmdlKTsgLy8gY2FsbCB0aGUgc3VwZXItbWV0aG9kCgoJCXRoaXMuZGF5R3JpZC5icmVha09uV2Vla3MgPSAveWVhcnxtb250aHx3ZWVrLy50ZXN0KHRoaXMuaW50ZXJ2YWxVbml0KTsgLy8gZG8gYmVmb3JlIHNldFJhbmdlCgkJdGhpcy5kYXlHcmlkLnNldFJhbmdlKHJhbmdlKTsKCX0sCgoKCS8vIENvbXB1dGUgdGhlIHZhbHVlIHRvIGZlZWQgaW50byBzZXRSYW5nZS4gT3ZlcnJpZGVzIHN1cGVyY2xhc3MuCgljb21wdXRlUmFuZ2U6IGZ1bmN0aW9uKGRhdGUpIHsKCQl2YXIgcmFuZ2UgPSBWaWV3LnByb3RvdHlwZS5jb21wdXRlUmFuZ2UuY2FsbCh0aGlzLCBkYXRlKTsgLy8gZ2V0IHZhbHVlIGZyb20gdGhlIHN1cGVyLW1ldGhvZAoKCQkvLyB5ZWFyIGFuZCBtb250aCB2aWV3cyBzaG91bGQgYmUgYWxpZ25lZCB3aXRoIHdlZWtzLiB0aGlzIGlzIGFscmVhZHkgZG9uZSBmb3Igd2VlawoJCWlmICgveWVhcnxtb250aC8udGVzdChyYW5nZS5pbnRlcnZhbFVuaXQpKSB7CgkJCXJhbmdlLnN0YXJ0LnN0YXJ0T2YoJ3dlZWsnKTsKCQkJcmFuZ2Uuc3RhcnQgPSB0aGlzLnNraXBIaWRkZW5EYXlzKHJhbmdlLnN0YXJ0KTsKCgkJCS8vIG1ha2UgZW5kLW9mLXdlZWsgaWYgbm90IGFscmVhZHkKCQkJaWYgKHJhbmdlLmVuZC53ZWVrZGF5KCkpIHsKCQkJCXJhbmdlLmVuZC5hZGQoMSwgJ3dlZWsnKS5zdGFydE9mKCd3ZWVrJyk7CgkJCQlyYW5nZS5lbmQgPSB0aGlzLnNraXBIaWRkZW5EYXlzKHJhbmdlLmVuZCwgLTEsIHRydWUpOyAvLyBleGNsdXNpdmVseSBtb3ZlIGJhY2t3YXJkcwoJCQl9CgkJfQoKCQlyZXR1cm4gcmFuZ2U7Cgl9LAoKCgkvLyBSZW5kZXJzIHRoZSB2aWV3IGludG8gYHRoaXMuZWxgLCB3aGljaCBzaG91bGQgYWxyZWFkeSBiZSBhc3NpZ25lZAoJcmVuZGVyRGF0ZXM6IGZ1bmN0aW9uKCkgewoKCQl0aGlzLmRheU51bWJlcnNWaXNpYmxlID0gdGhpcy5kYXlHcmlkLnJvd0NudCA+IDE7IC8vIFRPRE86IG1ha2UgZ3JpZCByZXNwb25zaWJsZQoJCXRoaXMud2Vla051bWJlcnNWaXNpYmxlID0gdGhpcy5vcHQoJ3dlZWtOdW1iZXJzJyk7CgkJdGhpcy5kYXlHcmlkLm51bWJlcnNWaXNpYmxlID0gdGhpcy5kYXlOdW1iZXJzVmlzaWJsZSB8fCB0aGlzLndlZWtOdW1iZXJzVmlzaWJsZTsKCgkJdGhpcy5lbC5hZGRDbGFzcygnZmMtYmFzaWMtdmlldycpLmh0bWwodGhpcy5yZW5kZXJIdG1sKCkpOwoKCQl0aGlzLmhlYWRSb3dFbCA9IHRoaXMuZWwuZmluZCgndGhlYWQgLmZjLXJvdycpOwoKCQl0aGlzLnNjcm9sbGVyRWwgPSB0aGlzLmVsLmZpbmQoJy5mYy1kYXktZ3JpZC1jb250YWluZXInKTsKCQl0aGlzLmRheUdyaWQuY29vcmRNYXAuY29udGFpbmVyRWwgPSB0aGlzLnNjcm9sbGVyRWw7IC8vIGNvbnN0cmFpbiBjbGlja3MvZXRjIHRvIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBzY3JvbGxlcgoKCQl0aGlzLmRheUdyaWQuc2V0RWxlbWVudCh0aGlzLmVsLmZpbmQoJy5mYy1kYXktZ3JpZCcpKTsKCQl0aGlzLmRheUdyaWQucmVuZGVyRGF0ZXModGhpcy5oYXNSaWdpZFJvd3MoKSk7Cgl9LAoKCgkvLyBVbnJlbmRlcnMgdGhlIGNvbnRlbnQgb2YgdGhlIHZpZXcuIFNpbmNlIHdlIGhhdmVuJ3Qgc2VwYXJhdGVkIHNrZWxldG9uIHJlbmRlcmluZyBmcm9tIGRhdGUgcmVuZGVyaW5nLAoJLy8gYWx3YXlzIGNvbXBsZXRlbHkga2lsbCB0aGUgZGF5R3JpZCdzIHJlbmRlcmluZy4KCXVucmVuZGVyRGF0ZXM6IGZ1bmN0aW9uKCkgewoJCXRoaXMuZGF5R3JpZC51bnJlbmRlckRhdGVzKCk7CgkJdGhpcy5kYXlHcmlkLnJlbW92ZUVsZW1lbnQoKTsKCX0sCgoKCXJlbmRlckJ1c2luZXNzSG91cnM6IGZ1bmN0aW9uKCkgewoJCXRoaXMuZGF5R3JpZC5yZW5kZXJCdXNpbmVzc0hvdXJzKCk7Cgl9LAoKCgkvLyBCdWlsZHMgdGhlIEhUTUwgc2tlbGV0b24gZm9yIHRoZSB2aWV3LgoJLy8gVGhlIGRheS1ncmlkIGNvbXBvbmVudCB3aWxsIHJlbmRlciBpbnNpZGUgb2YgYSBjb250YWluZXIgZGVmaW5lZCBieSB0aGlzIEhUTUwuCglyZW5kZXJIdG1sOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gJycgKwoJCQknPHRhYmxlPicgKwoJCQkJJzx0aGVhZCBjbGFzcz0iZmMtaGVhZCI+JyArCgkJCQkJJzx0cj4nICsKCQkJCQkJJzx0ZCBjbGFzcz0iJyArIHRoaXMud2lkZ2V0SGVhZGVyQ2xhc3MgKyAnIj4nICsKCQkJCQkJCXRoaXMuZGF5R3JpZC5oZWFkSHRtbCgpICsgLy8gcmVuZGVyIHRoZSBkYXktb2Ytd2VlayBoZWFkZXJzCgkJCQkJCSc8L3RkPicgKwoJCQkJCSc8L3RyPicgKwoJCQkJJzwvdGhlYWQ+JyArCgkJCQknPHRib2R5IGNsYXNzPSJmYy1ib2R5Ij4nICsKCQkJCQknPHRyPicgKwoJCQkJCQknPHRkIGNsYXNzPSInICsgdGhpcy53aWRnZXRDb250ZW50Q2xhc3MgKyAnIj4nICsKCQkJCQkJCSc8ZGl2IGNsYXNzPSJmYy1kYXktZ3JpZC1jb250YWluZXIiPicgKwoJCQkJCQkJCSc8ZGl2IGNsYXNzPSJmYy1kYXktZ3JpZCIvPicgKwoJCQkJCQkJJzwvZGl2PicgKwoJCQkJCQknPC90ZD4nICsKCQkJCQknPC90cj4nICsKCQkJCSc8L3Rib2R5PicgKwoJCQknPC90YWJsZT4nOwoJfSwKCgoJLy8gR2VuZXJhdGVzIHRoZSBIVE1MIHRoYXQgd2lsbCBnbyBiZWZvcmUgdGhlIGRheS1vZiB3ZWVrIGhlYWRlciBjZWxscy4KCS8vIFF1ZXJpZWQgYnkgdGhlIERheUdyaWQgc3ViY29tcG9uZW50IHdoZW4gZ2VuZXJhdGluZyByb3dzLiBPcmRlcmluZyBkZXBlbmRzIG9uIGlzUlRMLgoJaGVhZEludHJvSHRtbDogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMud2Vla051bWJlcnNWaXNpYmxlKSB7CgkJCXJldHVybiAnJyArCgkJCQknPHRoIGNsYXNzPSJmYy13ZWVrLW51bWJlciAnICsgdGhpcy53aWRnZXRIZWFkZXJDbGFzcyArICciICcgKyB0aGlzLndlZWtOdW1iZXJTdHlsZUF0dHIoKSArICc+JyArCgkJCQkJJzxzcGFuPicgKyAvLyBuZWVkZWQgZm9yIG1hdGNoQ2VsbFdpZHRocwoJCQkJCQlodG1sRXNjYXBlKHRoaXMub3B0KCd3ZWVrTnVtYmVyVGl0bGUnKSkgKwoJCQkJCSc8L3NwYW4+JyArCgkJCQknPC90aD4nOwoJCX0KCX0sCgoKCS8vIEdlbmVyYXRlcyB0aGUgSFRNTCB0aGF0IHdpbGwgZ28gYmVmb3JlIGNvbnRlbnQtc2tlbGV0b24gY2VsbHMgdGhhdCBkaXNwbGF5IHRoZSBkYXkvd2VlayBudW1iZXJzLgoJLy8gUXVlcmllZCBieSB0aGUgRGF5R3JpZCBzdWJjb21wb25lbnQuIE9yZGVyaW5nIGRlcGVuZHMgb24gaXNSVEwuCgludW1iZXJJbnRyb0h0bWw6IGZ1bmN0aW9uKHJvdykgewoJCWlmICh0aGlzLndlZWtOdW1iZXJzVmlzaWJsZSkgewoJCQlyZXR1cm4gJycgKwoJCQkJJzx0ZCBjbGFzcz0iZmMtd2Vlay1udW1iZXIiICcgKyB0aGlzLndlZWtOdW1iZXJTdHlsZUF0dHIoKSArICc+JyArCgkJCQkJJzxzcGFuPicgKyAvLyBuZWVkZWQgZm9yIG1hdGNoQ2VsbFdpZHRocwoJCQkJCQl0aGlzLmRheUdyaWQuZ2V0Q2VsbChyb3csIDApLnN0YXJ0LmZvcm1hdCgndycpICsKCQkJCQknPC9zcGFuPicgKwoJCQkJJzwvdGQ+JzsKCQl9Cgl9LAoKCgkvLyBHZW5lcmF0ZXMgdGhlIEhUTUwgdGhhdCBnb2VzIGJlZm9yZSB0aGUgZGF5IGJnIGNlbGxzIGZvciBlYWNoIGRheS1yb3cuCgkvLyBRdWVyaWVkIGJ5IHRoZSBEYXlHcmlkIHN1YmNvbXBvbmVudC4gT3JkZXJpbmcgZGVwZW5kcyBvbiBpc1JUTC4KCWRheUludHJvSHRtbDogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMud2Vla051bWJlcnNWaXNpYmxlKSB7CgkJCXJldHVybiAnPHRkIGNsYXNzPSJmYy13ZWVrLW51bWJlciAnICsgdGhpcy53aWRnZXRDb250ZW50Q2xhc3MgKyAnIiAnICsKCQkJCXRoaXMud2Vla051bWJlclN0eWxlQXR0cigpICsgJz48L3RkPic7CgkJfQoJfSwKCgoJLy8gR2VuZXJhdGVzIHRoZSBIVE1MIHRoYXQgZ29lcyBiZWZvcmUgZXZlcnkgb3RoZXIgdHlwZSBvZiByb3cgZ2VuZXJhdGVkIGJ5IERheUdyaWQuIE9yZGVyaW5nIGRlcGVuZHMgb24gaXNSVEwuCgkvLyBBZmZlY3RzIGhlbHBlci1za2VsZXRvbiBhbmQgaGlnaGxpZ2h0LXNrZWxldG9uIHJvd3MuCglpbnRyb0h0bWw6IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLndlZWtOdW1iZXJzVmlzaWJsZSkgewoJCQlyZXR1cm4gJzx0ZCBjbGFzcz0iZmMtd2Vlay1udW1iZXIiICcgKyB0aGlzLndlZWtOdW1iZXJTdHlsZUF0dHIoKSArICc+PC90ZD4nOwoJCX0KCX0sCgoKCS8vIEdlbmVyYXRlcyB0aGUgSFRNTCBmb3IgdGhlIDx0ZD5zIG9mIHRoZSAibnVtYmVyIiByb3cgaW4gdGhlIERheUdyaWQncyBjb250ZW50IHNrZWxldG9uLgoJLy8gVGhlIG51bWJlciByb3cgd2lsbCBvbmx5IGV4aXN0IGlmIGVpdGhlciBkYXkgbnVtYmVycyBvciB3ZWVrIG51bWJlcnMgYXJlIHR1cm5lZCBvbi4KCW51bWJlckNlbGxIdG1sOiBmdW5jdGlvbihjZWxsKSB7CgkJdmFyIGRhdGUgPSBjZWxsLnN0YXJ0OwoJCXZhciBjbGFzc2VzOwoKCQlpZiAoIXRoaXMuZGF5TnVtYmVyc1Zpc2libGUpIHsgLy8gaWYgdGhlcmUgYXJlIHdlZWsgbnVtYmVycyBidXQgbm90IGRheSBudW1iZXJzCgkJCXJldHVybiAnPHRkLz4nOyAvLyAgd2lsbCBjcmVhdGUgYW4gZW1wdHkgc3BhY2UgYWJvdmUgZXZlbnRzIDooCgkJfQoKCQljbGFzc2VzID0gdGhpcy5kYXlHcmlkLmdldERheUNsYXNzZXMoZGF0ZSk7CgkJY2xhc3Nlcy51bnNoaWZ0KCdmYy1kYXktbnVtYmVyJyk7CgoJCXJldHVybiAnJyArCgkJCSc8dGQgY2xhc3M9IicgKyBjbGFzc2VzLmpvaW4oJyAnKSArICciIGRhdGEtZGF0ZT0iJyArIGRhdGUuZm9ybWF0KCkgKyAnIj4nICsKCQkJCWRhdGUuZGF0ZSgpICsKCQkJJzwvdGQ+JzsKCX0sCgoKCS8vIEdlbmVyYXRlcyBhbiBIVE1MIGF0dHJpYnV0ZSBzdHJpbmcgZm9yIHNldHRpbmcgdGhlIHdpZHRoIG9mIHRoZSB3ZWVrIG51bWJlciBjb2x1bW4sIGlmIGl0IGlzIGtub3duCgl3ZWVrTnVtYmVyU3R5bGVBdHRyOiBmdW5jdGlvbigpIHsKCQlpZiAodGhpcy53ZWVrTnVtYmVyV2lkdGggIT09IG51bGwpIHsKCQkJcmV0dXJuICdzdHlsZT0id2lkdGg6JyArIHRoaXMud2Vla051bWJlcldpZHRoICsgJ3B4Iic7CgkJfQoJCXJldHVybiAnJzsKCX0sCgoKCS8vIERldGVybWluZXMgd2hldGhlciBlYWNoIHJvdyBzaG91bGQgaGF2ZSBhIGNvbnN0YW50IGhlaWdodAoJaGFzUmlnaWRSb3dzOiBmdW5jdGlvbigpIHsKCQl2YXIgZXZlbnRMaW1pdCA9IHRoaXMub3B0KCdldmVudExpbWl0Jyk7CgkJcmV0dXJuIGV2ZW50TGltaXQgJiYgdHlwZW9mIGV2ZW50TGltaXQgIT09ICdudW1iZXInOwoJfSwKCgoJLyogRGltZW5zaW9ucwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVmcmVzaGVzIHRoZSBob3Jpem9udGFsIGRpbWVuc2lvbnMgb2YgdGhlIHZpZXcKCXVwZGF0ZVdpZHRoOiBmdW5jdGlvbigpIHsKCQlpZiAodGhpcy53ZWVrTnVtYmVyc1Zpc2libGUpIHsKCQkJLy8gTWFrZSBzdXJlIGFsbCB3ZWVrIG51bWJlciBjZWxscyBydW5uaW5nIGRvd24gdGhlIHNpZGUgaGF2ZSB0aGUgc2FtZSB3aWR0aC4KCQkJLy8gUmVjb3JkIHRoZSB3aWR0aCBmb3IgY2VsbHMgY3JlYXRlZCBsYXRlci4KCQkJdGhpcy53ZWVrTnVtYmVyV2lkdGggPSBtYXRjaENlbGxXaWR0aHMoCgkJCQl0aGlzLmVsLmZpbmQoJy5mYy13ZWVrLW51bWJlcicpCgkJCSk7CgkJfQoJfSwKCgoJLy8gQWRqdXN0cyB0aGUgdmVydGljYWwgZGltZW5zaW9ucyBvZiB0aGUgdmlldyB0byB0aGUgc3BlY2lmaWVkIHZhbHVlcwoJc2V0SGVpZ2h0OiBmdW5jdGlvbih0b3RhbEhlaWdodCwgaXNBdXRvKSB7CgkJdmFyIGV2ZW50TGltaXQgPSB0aGlzLm9wdCgnZXZlbnRMaW1pdCcpOwoJCXZhciBzY3JvbGxlckhlaWdodDsKCgkJLy8gcmVzZXQgYWxsIGhlaWdodHMgdG8gYmUgbmF0dXJhbAoJCXVuc2V0U2Nyb2xsZXIodGhpcy5zY3JvbGxlckVsKTsKCQl1bmNvbXBlbnNhdGVTY3JvbGwodGhpcy5oZWFkUm93RWwpOwoKCQl0aGlzLmRheUdyaWQucmVtb3ZlU2VnUG9wb3ZlcigpOyAvLyBraWxsIHRoZSAibW9yZSIgcG9wb3ZlciBpZiBkaXNwbGF5ZWQKCgkJLy8gaXMgdGhlIGV2ZW50IGxpbWl0IGEgY29uc3RhbnQgbGV2ZWwgbnVtYmVyPwoJCWlmIChldmVudExpbWl0ICYmIHR5cGVvZiBldmVudExpbWl0ID09PSAnbnVtYmVyJykgewoJCQl0aGlzLmRheUdyaWQubGltaXRSb3dzKGV2ZW50TGltaXQpOyAvLyBsaW1pdCB0aGUgbGV2ZWxzIGZpcnN0IHNvIHRoZSBoZWlnaHQgY2FuIHJlZGlzdHJpYnV0ZSBhZnRlcgoJCX0KCgkJc2Nyb2xsZXJIZWlnaHQgPSB0aGlzLmNvbXB1dGVTY3JvbGxlckhlaWdodCh0b3RhbEhlaWdodCk7CgkJdGhpcy5zZXRHcmlkSGVpZ2h0KHNjcm9sbGVySGVpZ2h0LCBpc0F1dG8pOwoKCQkvLyBpcyB0aGUgZXZlbnQgbGltaXQgZHluYW1pY2FsbHkgY2FsY3VsYXRlZD8KCQlpZiAoZXZlbnRMaW1pdCAmJiB0eXBlb2YgZXZlbnRMaW1pdCAhPT0gJ251bWJlcicpIHsKCQkJdGhpcy5kYXlHcmlkLmxpbWl0Um93cyhldmVudExpbWl0KTsgLy8gbGltaXQgdGhlIGxldmVscyBhZnRlciB0aGUgZ3JpZCdzIHJvdyBoZWlnaHRzIGhhdmUgYmVlbiBzZXQKCQl9CgoJCWlmICghaXNBdXRvICYmIHNldFBvdGVudGlhbFNjcm9sbGVyKHRoaXMuc2Nyb2xsZXJFbCwgc2Nyb2xsZXJIZWlnaHQpKSB7IC8vIHVzaW5nIHNjcm9sbGJhcnM/CgoJCQljb21wZW5zYXRlU2Nyb2xsKHRoaXMuaGVhZFJvd0VsLCBnZXRTY3JvbGxiYXJXaWR0aHModGhpcy5zY3JvbGxlckVsKSk7CgoJCQkvLyBkb2luZyB0aGUgc2Nyb2xsYmFyIGNvbXBlbnNhdGlvbiBtaWdodCBoYXZlIGNyZWF0ZWQgdGV4dCBvdmVyZmxvdyB3aGljaCBjcmVhdGVkIG1vcmUgaGVpZ2h0LiByZWRvCgkJCXNjcm9sbGVySGVpZ2h0ID0gdGhpcy5jb21wdXRlU2Nyb2xsZXJIZWlnaHQodG90YWxIZWlnaHQpOwoJCQl0aGlzLnNjcm9sbGVyRWwuaGVpZ2h0KHNjcm9sbGVySGVpZ2h0KTsKCQl9Cgl9LAoKCgkvLyBTZXRzIHRoZSBoZWlnaHQgb2YganVzdCB0aGUgRGF5R3JpZCBjb21wb25lbnQgaW4gdGhpcyB2aWV3CglzZXRHcmlkSGVpZ2h0OiBmdW5jdGlvbihoZWlnaHQsIGlzQXV0bykgewoJCWlmIChpc0F1dG8pIHsKCQkJdW5kaXN0cmlidXRlSGVpZ2h0KHRoaXMuZGF5R3JpZC5yb3dFbHMpOyAvLyBsZXQgdGhlIHJvd3MgYmUgdGhlaXIgbmF0dXJhbCBoZWlnaHQgd2l0aCBubyBleHBhbmRpbmcKCQl9CgkJZWxzZSB7CgkJCWRpc3RyaWJ1dGVIZWlnaHQodGhpcy5kYXlHcmlkLnJvd0VscywgaGVpZ2h0LCB0cnVlKTsgLy8gdHJ1ZSA9IGNvbXBlbnNhdGUgZm9yIGhlaWdodC1ob2dnaW5nIHJvd3MKCQl9Cgl9LAoKCgkvKiBFdmVudHMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFJlbmRlcnMgdGhlIGdpdmVuIGV2ZW50cyBvbnRvIHRoZSB2aWV3IGFuZCBwb3B1bGF0ZXMgdGhlIHNlZ21lbnRzIGFycmF5CglyZW5kZXJFdmVudHM6IGZ1bmN0aW9uKGV2ZW50cykgewoJCXRoaXMuZGF5R3JpZC5yZW5kZXJFdmVudHMoZXZlbnRzKTsKCgkJdGhpcy51cGRhdGVIZWlnaHQoKTsgLy8gbXVzdCBjb21wZW5zYXRlIGZvciBldmVudHMgdGhhdCBvdmVyZmxvdyB0aGUgcm93Cgl9LAoKCgkvLyBSZXRyaWV2ZXMgYWxsIHNlZ21lbnQgb2JqZWN0cyB0aGF0IGFyZSByZW5kZXJlZCBpbiB0aGUgdmlldwoJZ2V0RXZlbnRTZWdzOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5kYXlHcmlkLmdldEV2ZW50U2VncygpOwoJfSwKCgoJLy8gVW5yZW5kZXJzIGFsbCBldmVudCBlbGVtZW50cyBhbmQgY2xlYXJzIGludGVybmFsIHNlZ21lbnQgZGF0YQoJdW5yZW5kZXJFdmVudHM6IGZ1bmN0aW9uKCkgewoJCXRoaXMuZGF5R3JpZC51bnJlbmRlckV2ZW50cygpOwoKCQkvLyB3ZSBET04nVCBuZWVkIHRvIGNhbGwgdXBkYXRlSGVpZ2h0KCkgYmVjYXVzZToKCQkvLyBBKSBhIHJlbmRlckV2ZW50cygpIGNhbGwgYWx3YXlzIGhhcHBlbnMgYWZ0ZXIgdGhpcywgd2hpY2ggd2lsbCBldmVudHVhbGx5IGNhbGwgdXBkYXRlSGVpZ2h0KCkKCQkvLyBCKSBpbiBJRTgsIHRoaXMgY2F1c2VzIGEgZmxhc2ggd2hlbmV2ZXIgZXZlbnRzIGFyZSByZXJlbmRlcmVkCgl9LAoKCgkvKiBEcmFnZ2luZyAoZm9yIGJvdGggZXZlbnRzIGFuZCBleHRlcm5hbCBlbGVtZW50cykKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIEEgcmV0dXJuZWQgdmFsdWUgb2YgYHRydWVgIHNpZ25hbHMgdGhhdCBhIG1vY2sgImhlbHBlciIgZXZlbnQgaGFzIGJlZW4gcmVuZGVyZWQuCglyZW5kZXJEcmFnOiBmdW5jdGlvbihkcm9wTG9jYXRpb24sIHNlZykgewoJCXJldHVybiB0aGlzLmRheUdyaWQucmVuZGVyRHJhZyhkcm9wTG9jYXRpb24sIHNlZyk7Cgl9LAoKCgl1bnJlbmRlckRyYWc6IGZ1bmN0aW9uKCkgewoJCXRoaXMuZGF5R3JpZC51bnJlbmRlckRyYWcoKTsKCX0sCgoKCS8qIFNlbGVjdGlvbgoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVuZGVycyBhIHZpc3VhbCBpbmRpY2F0aW9uIG9mIGEgc2VsZWN0aW9uCglyZW5kZXJTZWxlY3Rpb246IGZ1bmN0aW9uKHJhbmdlKSB7CgkJdGhpcy5kYXlHcmlkLnJlbmRlclNlbGVjdGlvbihyYW5nZSk7Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYSB2aXN1YWwgaW5kaWNhdGlvbnMgb2YgYSBzZWxlY3Rpb24KCXVucmVuZGVyU2VsZWN0aW9uOiBmdW5jdGlvbigpIHsKCQl0aGlzLmRheUdyaWQudW5yZW5kZXJTZWxlY3Rpb24oKTsKCX0KCn0pOwoKOzsKCi8qIEEgbW9udGggdmlldyB3aXRoIGRheSBjZWxscyBydW5uaW5nIGluIHJvd3MgKG9uZS1wZXItd2VlaykgYW5kIGNvbHVtbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgTW9udGhWaWV3ID0gQmFzaWNWaWV3LmV4dGVuZCh7CgoJLy8gUHJvZHVjZXMgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCByYW5nZSB0byBkaXNwbGF5Cgljb21wdXRlUmFuZ2U6IGZ1bmN0aW9uKGRhdGUpIHsKCQl2YXIgcmFuZ2UgPSBCYXNpY1ZpZXcucHJvdG90eXBlLmNvbXB1dGVSYW5nZS5jYWxsKHRoaXMsIGRhdGUpOyAvLyBnZXQgdmFsdWUgZnJvbSBzdXBlci1tZXRob2QKCQl2YXIgcm93Q250OwoKCQkvLyBlbnN1cmUgNiB3ZWVrcwoJCWlmICh0aGlzLmlzRml4ZWRXZWVrcygpKSB7CgkJCXJvd0NudCA9IE1hdGguY2VpbChyYW5nZS5lbmQuZGlmZihyYW5nZS5zdGFydCwgJ3dlZWtzJywgdHJ1ZSkpOyAvLyBjb3VsZCBiZSBwYXJ0aWFsIHdlZWtzIGR1ZSB0byBoaWRkZW5EYXlzCgkJCXJhbmdlLmVuZC5hZGQoNiAtIHJvd0NudCwgJ3dlZWtzJyk7CgkJfQoKCQlyZXR1cm4gcmFuZ2U7Cgl9LAoKCgkvLyBPdmVycmlkZXMgdGhlIGRlZmF1bHQgQmFzaWNWaWV3IGJlaGF2aW9yIHRvIGhhdmUgc3BlY2lhbCBtdWx0aS13ZWVrIGF1dG8taGVpZ2h0IGxvZ2ljCglzZXRHcmlkSGVpZ2h0OiBmdW5jdGlvbihoZWlnaHQsIGlzQXV0bykgewoKCQlpc0F1dG8gPSBpc0F1dG8gfHwgdGhpcy5vcHQoJ3dlZWtNb2RlJykgPT09ICd2YXJpYWJsZSc7IC8vIExFR0FDWTogd2Vla01vZGUgaXMgZGVwcmVjYXRlZAoKCQkvLyBpZiBhdXRvLCBtYWtlIHRoZSBoZWlnaHQgb2YgZWFjaCByb3cgdGhlIGhlaWdodCB0aGF0IGl0IHdvdWxkIGJlIGlmIHRoZXJlIHdlcmUgNiB3ZWVrcwoJCWlmIChpc0F1dG8pIHsKCQkJaGVpZ2h0ICo9IHRoaXMucm93Q250IC8gNjsKCQl9CgoJCWRpc3RyaWJ1dGVIZWlnaHQodGhpcy5kYXlHcmlkLnJvd0VscywgaGVpZ2h0LCAhaXNBdXRvKTsgLy8gaWYgYXV0bywgZG9uJ3QgY29tcGVuc2F0ZSBmb3IgaGVpZ2h0LWhvZ2dpbmcgcm93cwoJfSwKCgoJaXNGaXhlZFdlZWtzOiBmdW5jdGlvbigpIHsKCQl2YXIgd2Vla01vZGUgPSB0aGlzLm9wdCgnd2Vla01vZGUnKTsgLy8gTEVHQUNZOiB3ZWVrTW9kZSBpcyBkZXByZWNhdGVkCgkJaWYgKHdlZWtNb2RlKSB7CgkJCXJldHVybiB3ZWVrTW9kZSA9PT0gJ2ZpeGVkJzsgLy8gaWYgYW55IG90aGVyIHR5cGUgb2Ygd2Vla01vZGUsIGFzc3VtZSBOT1QgZml4ZWQKCQl9CgoJCXJldHVybiB0aGlzLm9wdCgnZml4ZWRXZWVrQ291bnQnKTsKCX0KCn0pOwoKOzsKCmZjVmlld3MuYmFzaWMgPSB7CgknY2xhc3MnOiBCYXNpY1ZpZXcKfTsKCmZjVmlld3MuYmFzaWNEYXkgPSB7Cgl0eXBlOiAnYmFzaWMnLAoJZHVyYXRpb246IHsgZGF5czogMSB9Cn07CgpmY1ZpZXdzLmJhc2ljV2VlayA9IHsKCXR5cGU6ICdiYXNpYycsCglkdXJhdGlvbjogeyB3ZWVrczogMSB9Cn07CgpmY1ZpZXdzLm1vbnRoID0gewoJJ2NsYXNzJzogTW9udGhWaWV3LAoJZHVyYXRpb246IHsgbW9udGhzOiAxIH0sIC8vIGltcG9ydGFudCBmb3IgcHJldi9uZXh0CglkZWZhdWx0czogewoJCWZpeGVkV2Vla0NvdW50OiB0cnVlCgl9Cn07Cjs7CgovKiBBbiBhYnN0cmFjdCBjbGFzcyBmb3IgYWxsIGFnZW5kYS1yZWxhdGVkIHZpZXdzLiBEaXNwbGF5cyBvbmUgbW9yZSBjb2x1bW5zIHdpdGggdGltZSBzbG90cyBydW5uaW5nIHZlcnRpY2FsbHkuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovLyBJcyBhIG1hbmFnZXIgZm9yIHRoZSBUaW1lR3JpZCBzdWJjb21wb25lbnQgYW5kIHBvc3NpYmx5IHRoZSBEYXlHcmlkIHN1YmNvbXBvbmVudCAoaWYgYWxsRGF5U2xvdCBpcyBvbikuCi8vIFJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB3aWR0aC9oZWlnaHQuCgp2YXIgQWdlbmRhVmlldyA9IFZpZXcuZXh0ZW5kKHsKCgl0aW1lR3JpZDogbnVsbCwgLy8gdGhlIG1haW4gdGltZS1ncmlkIHN1YmNvbXBvbmVudCBvZiB0aGlzIHZpZXcKCWRheUdyaWQ6IG51bGwsIC8vIHRoZSAiYWxsLWRheSIgc3ViY29tcG9uZW50LiBpZiBhbGwtZGF5IGlzIHR1cm5lZCBvZmYsIHRoaXMgd2lsbCBiZSBudWxsCgoJYXhpc1dpZHRoOiBudWxsLCAvLyB0aGUgd2lkdGggb2YgdGhlIHRpbWUgYXhpcyBydW5uaW5nIGRvd24gdGhlIHNpZGUKCglub1Njcm9sbFJvd0VsczogbnVsbCwgLy8gc2V0IG9mIGZha2Ugcm93IGVsZW1lbnRzIHRoYXQgbXVzdCBjb21wZW5zYXRlIHdoZW4gc2Nyb2xsZXJFbCBoYXMgc2Nyb2xsYmFycwoKCS8vIHdoZW4gdGhlIHRpbWUtZ3JpZCBpc24ndCB0YWxsIGVub3VnaCB0byBvY2N1cHkgdGhlIGdpdmVuIGhlaWdodCwgd2UgcmVuZGVyIGFuIDxocj4gdW5kZXJuZWF0aAoJYm90dG9tUnVsZUVsOiBudWxsLAoJYm90dG9tUnVsZUhlaWdodDogbnVsbCwKCgoJaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7CgkJdGhpcy50aW1lR3JpZCA9IG5ldyBUaW1lR3JpZCh0aGlzKTsKCgkJaWYgKHRoaXMub3B0KCdhbGxEYXlTbG90JykpIHsgLy8gc2hvdWxkIHdlIGRpc3BsYXkgdGhlICJhbGwtZGF5IiBhcmVhPwoJCQl0aGlzLmRheUdyaWQgPSBuZXcgRGF5R3JpZCh0aGlzKTsgLy8gdGhlIGFsbC1kYXkgc3ViY29tcG9uZW50IG9mIHRoaXMgdmlldwoKCQkJLy8gdGhlIGNvb3JkaW5hdGUgZ3JpZCB3aWxsIGJlIGEgY29tYmluYXRpb24gb2YgYm90aCBzdWJjb21wb25lbnRzJyBncmlkcwoJCQl0aGlzLmNvb3JkTWFwID0gbmV3IENvbWJvQ29vcmRNYXAoWwoJCQkJdGhpcy5kYXlHcmlkLmNvb3JkTWFwLAoJCQkJdGhpcy50aW1lR3JpZC5jb29yZE1hcAoJCQldKTsKCQl9CgkJZWxzZSB7CgkJCXRoaXMuY29vcmRNYXAgPSB0aGlzLnRpbWVHcmlkLmNvb3JkTWFwOwoJCX0KCX0sCgoKCS8qIFJlbmRlcmluZwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gU2V0cyB0aGUgZGlzcGxheSByYW5nZSBhbmQgY29tcHV0ZXMgYWxsIG5lY2Vzc2FyeSBkYXRlcwoJc2V0UmFuZ2U6IGZ1bmN0aW9uKHJhbmdlKSB7CgkJVmlldy5wcm90b3R5cGUuc2V0UmFuZ2UuY2FsbCh0aGlzLCByYW5nZSk7IC8vIGNhbGwgdGhlIHN1cGVyLW1ldGhvZAoKCQl0aGlzLnRpbWVHcmlkLnNldFJhbmdlKHJhbmdlKTsKCQlpZiAodGhpcy5kYXlHcmlkKSB7CgkJCXRoaXMuZGF5R3JpZC5zZXRSYW5nZShyYW5nZSk7CgkJfQoJfSwKCgoJLy8gUmVuZGVycyB0aGUgdmlldyBpbnRvIGB0aGlzLmVsYCwgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBhc3NpZ25lZAoJcmVuZGVyRGF0ZXM6IGZ1bmN0aW9uKCkgewoKCQl0aGlzLmVsLmFkZENsYXNzKCdmYy1hZ2VuZGEtdmlldycpLmh0bWwodGhpcy5yZW5kZXJIdG1sKCkpOwoKCQkvLyB0aGUgZWxlbWVudCB0aGF0IHdyYXBzIHRoZSB0aW1lLWdyaWQgdGhhdCB3aWxsIHByb2JhYmx5IHNjcm9sbAoJCXRoaXMuc2Nyb2xsZXJFbCA9IHRoaXMuZWwuZmluZCgnLmZjLXRpbWUtZ3JpZC1jb250YWluZXInKTsKCQl0aGlzLnRpbWVHcmlkLmNvb3JkTWFwLmNvbnRhaW5lckVsID0gdGhpcy5zY3JvbGxlckVsOyAvLyBkb24ndCBhY2NlcHQgY2xpY2tzL2V0YyBvdXRzaWRlIG9mIHRoaXMKCgkJdGhpcy50aW1lR3JpZC5zZXRFbGVtZW50KHRoaXMuZWwuZmluZCgnLmZjLXRpbWUtZ3JpZCcpKTsKCQl0aGlzLnRpbWVHcmlkLnJlbmRlckRhdGVzKCk7CgoJCS8vIHRoZSA8aHI+IHRoYXQgc29tZXRpbWVzIGRpc3BsYXlzIHVuZGVyIHRoZSB0aW1lLWdyaWQKCQl0aGlzLmJvdHRvbVJ1bGVFbCA9ICQoJzxociBjbGFzcz0iZmMtZGl2aWRlciAnICsgdGhpcy53aWRnZXRIZWFkZXJDbGFzcyArICciLz4nKQoJCQkuYXBwZW5kVG8odGhpcy50aW1lR3JpZC5lbCk7IC8vIGluamVjdCBpdCBpbnRvIHRoZSB0aW1lLWdyaWQKCgkJaWYgKHRoaXMuZGF5R3JpZCkgewoJCQl0aGlzLmRheUdyaWQuc2V0RWxlbWVudCh0aGlzLmVsLmZpbmQoJy5mYy1kYXktZ3JpZCcpKTsKCQkJdGhpcy5kYXlHcmlkLnJlbmRlckRhdGVzKCk7CgoJCQkvLyBoYXZlIHRoZSBkYXktZ3JpZCBleHRlbmQgaXQncyBjb29yZGluYXRlIGFyZWEgb3ZlciB0aGUgPGhyPiBkaXZpZGluZyB0aGUgdHdvIGdyaWRzCgkJCXRoaXMuZGF5R3JpZC5ib3R0b21Db29yZFBhZGRpbmcgPSB0aGlzLmRheUdyaWQuZWwubmV4dCgnaHInKS5vdXRlckhlaWdodCgpOwoJCX0KCgkJdGhpcy5ub1Njcm9sbFJvd0VscyA9IHRoaXMuZWwuZmluZCgnLmZjLXJvdzpub3QoLmZjLXNjcm9sbGVyICopJyk7IC8vIGZha2Ugcm93cyBub3Qgd2l0aGluIHRoZSBzY3JvbGxlcgoJfSwKCgoJLy8gVW5yZW5kZXJzIHRoZSBjb250ZW50IG9mIHRoZSB2aWV3LiBTaW5jZSB3ZSBoYXZlbid0IHNlcGFyYXRlZCBza2VsZXRvbiByZW5kZXJpbmcgZnJvbSBkYXRlIHJlbmRlcmluZywKCS8vIGFsd2F5cyBjb21wbGV0ZWx5IGtpbGwgZWFjaCBncmlkJ3MgcmVuZGVyaW5nLgoJdW5yZW5kZXJEYXRlczogZnVuY3Rpb24oKSB7CgkJdGhpcy50aW1lR3JpZC51bnJlbmRlckRhdGVzKCk7CgkJdGhpcy50aW1lR3JpZC5yZW1vdmVFbGVtZW50KCk7CgoJCWlmICh0aGlzLmRheUdyaWQpIHsKCQkJdGhpcy5kYXlHcmlkLnVucmVuZGVyRGF0ZXMoKTsKCQkJdGhpcy5kYXlHcmlkLnJlbW92ZUVsZW1lbnQoKTsKCQl9Cgl9LAoKCglyZW5kZXJCdXNpbmVzc0hvdXJzOiBmdW5jdGlvbigpIHsKCQl0aGlzLnRpbWVHcmlkLnJlbmRlckJ1c2luZXNzSG91cnMoKTsKCgkJaWYgKHRoaXMuZGF5R3JpZCkgewoJCQl0aGlzLmRheUdyaWQucmVuZGVyQnVzaW5lc3NIb3VycygpOwoJCX0KCX0sCgoKCS8vIEJ1aWxkcyB0aGUgSFRNTCBza2VsZXRvbiBmb3IgdGhlIHZpZXcuCgkvLyBUaGUgZGF5LWdyaWQgYW5kIHRpbWUtZ3JpZCBjb21wb25lbnRzIHdpbGwgcmVuZGVyIGluc2lkZSBjb250YWluZXJzIGRlZmluZWQgYnkgdGhpcyBIVE1MLgoJcmVuZGVySHRtbDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuICcnICsKCQkJJzx0YWJsZT4nICsKCQkJCSc8dGhlYWQgY2xhc3M9ImZjLWhlYWQiPicgKwoJCQkJCSc8dHI+JyArCgkJCQkJCSc8dGQgY2xhc3M9IicgKyB0aGlzLndpZGdldEhlYWRlckNsYXNzICsgJyI+JyArCgkJCQkJCQl0aGlzLnRpbWVHcmlkLmhlYWRIdG1sKCkgKyAvLyByZW5kZXIgdGhlIGRheS1vZi13ZWVrIGhlYWRlcnMKCQkJCQkJJzwvdGQ+JyArCgkJCQkJJzwvdHI+JyArCgkJCQknPC90aGVhZD4nICsKCQkJCSc8dGJvZHkgY2xhc3M9ImZjLWJvZHkiPicgKwoJCQkJCSc8dHI+JyArCgkJCQkJCSc8dGQgY2xhc3M9IicgKyB0aGlzLndpZGdldENvbnRlbnRDbGFzcyArICciPicgKwoJCQkJCQkJKHRoaXMuZGF5R3JpZCA/CgkJCQkJCQkJJzxkaXYgY2xhc3M9ImZjLWRheS1ncmlkIi8+JyArCgkJCQkJCQkJJzxociBjbGFzcz0iZmMtZGl2aWRlciAnICsgdGhpcy53aWRnZXRIZWFkZXJDbGFzcyArICciLz4nIDoKCQkJCQkJCQknJwoJCQkJCQkJCSkgKwoJCQkJCQkJJzxkaXYgY2xhc3M9ImZjLXRpbWUtZ3JpZC1jb250YWluZXIiPicgKwoJCQkJCQkJCSc8ZGl2IGNsYXNzPSJmYy10aW1lLWdyaWQiLz4nICsKCQkJCQkJCSc8L2Rpdj4nICsKCQkJCQkJJzwvdGQ+JyArCgkJCQkJJzwvdHI+JyArCgkJCQknPC90Ym9keT4nICsKCQkJJzwvdGFibGU+JzsKCX0sCgoKCS8vIEdlbmVyYXRlcyB0aGUgSFRNTCB0aGF0IHdpbGwgZ28gYmVmb3JlIHRoZSBkYXktb2Ygd2VlayBoZWFkZXIgY2VsbHMuCgkvLyBRdWVyaWVkIGJ5IHRoZSBUaW1lR3JpZCBzdWJjb21wb25lbnQgd2hlbiBnZW5lcmF0aW5nIHJvd3MuIE9yZGVyaW5nIGRlcGVuZHMgb24gaXNSVEwuCgloZWFkSW50cm9IdG1sOiBmdW5jdGlvbigpIHsKCQl2YXIgZGF0ZTsKCQl2YXIgd2Vla1RleHQ7CgoJCWlmICh0aGlzLm9wdCgnd2Vla051bWJlcnMnKSkgewoJCQlkYXRlID0gdGhpcy50aW1lR3JpZC5nZXRDZWxsKDApLnN0YXJ0OwoJCQl3ZWVrVGV4dCA9IGRhdGUuZm9ybWF0KHRoaXMub3B0KCdzbWFsbFdlZWtGb3JtYXQnKSk7CgoJCQlyZXR1cm4gJycgKwoJCQkJJzx0aCBjbGFzcz0iZmMtYXhpcyBmYy13ZWVrLW51bWJlciAnICsgdGhpcy53aWRnZXRIZWFkZXJDbGFzcyArICciICcgKyB0aGlzLmF4aXNTdHlsZUF0dHIoKSArICc+JyArCgkJCQkJJzxzcGFuPicgKyAvLyBuZWVkZWQgZm9yIG1hdGNoQ2VsbFdpZHRocwoJCQkJCQlodG1sRXNjYXBlKHdlZWtUZXh0KSArCgkJCQkJJzwvc3Bhbj4nICsKCQkJCSc8L3RoPic7CgkJfQoJCWVsc2UgewoJCQlyZXR1cm4gJzx0aCBjbGFzcz0iZmMtYXhpcyAnICsgdGhpcy53aWRnZXRIZWFkZXJDbGFzcyArICciICcgKyB0aGlzLmF4aXNTdHlsZUF0dHIoKSArICc+PC90aD4nOwoJCX0KCX0sCgoKCS8vIEdlbmVyYXRlcyB0aGUgSFRNTCB0aGF0IGdvZXMgYmVmb3JlIHRoZSBhbGwtZGF5IGNlbGxzLgoJLy8gUXVlcmllZCBieSB0aGUgRGF5R3JpZCBzdWJjb21wb25lbnQgd2hlbiBnZW5lcmF0aW5nIHJvd3MuIE9yZGVyaW5nIGRlcGVuZHMgb24gaXNSVEwuCglkYXlJbnRyb0h0bWw6IGZ1bmN0aW9uKCkgewoJCXJldHVybiAnJyArCgkJCSc8dGQgY2xhc3M9ImZjLWF4aXMgJyArIHRoaXMud2lkZ2V0Q29udGVudENsYXNzICsgJyIgJyArIHRoaXMuYXhpc1N0eWxlQXR0cigpICsgJz4nICsKCQkJCSc8c3Bhbj4nICsgLy8gbmVlZGVkIGZvciBtYXRjaENlbGxXaWR0aHMKCQkJCQkodGhpcy5vcHQoJ2FsbERheUh0bWwnKSB8fCBodG1sRXNjYXBlKHRoaXMub3B0KCdhbGxEYXlUZXh0JykpKSArCgkJCQknPC9zcGFuPicgKwoJCQknPC90ZD4nOwoJfSwKCgoJLy8gR2VuZXJhdGVzIHRoZSBIVE1MIHRoYXQgZ29lcyBiZWZvcmUgdGhlIGJnIG9mIHRoZSBUaW1lR3JpZCBzbG90IGFyZWEuIExvbmcgdmVydGljYWwgY29sdW1uLgoJc2xvdEJnSW50cm9IdG1sOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gJzx0ZCBjbGFzcz0iZmMtYXhpcyAnICsgdGhpcy53aWRnZXRDb250ZW50Q2xhc3MgKyAnIiAnICsgdGhpcy5heGlzU3R5bGVBdHRyKCkgKyAnPjwvdGQ+JzsKCX0sCgoKCS8vIEdlbmVyYXRlcyB0aGUgSFRNTCB0aGF0IGdvZXMgYmVmb3JlIGFsbCBvdGhlciB0eXBlcyBvZiBjZWxscy4KCS8vIEFmZmVjdHMgY29udGVudC1za2VsZXRvbiwgaGVscGVyLXNrZWxldG9uLCBoaWdobGlnaHQtc2tlbGV0b24gZm9yIGJvdGggdGhlIHRpbWUtZ3JpZCBhbmQgZGF5LWdyaWQuCgkvLyBRdWVyaWVkIGJ5IHRoZSBUaW1lR3JpZCBhbmQgRGF5R3JpZCBzdWJjb21wb25lbnRzIHdoZW4gZ2VuZXJhdGluZyByb3dzLiBPcmRlcmluZyBkZXBlbmRzIG9uIGlzUlRMLgoJaW50cm9IdG1sOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gJzx0ZCBjbGFzcz0iZmMtYXhpcyIgJyArIHRoaXMuYXhpc1N0eWxlQXR0cigpICsgJz48L3RkPic7Cgl9LAoKCgkvLyBHZW5lcmF0ZXMgYW4gSFRNTCBhdHRyaWJ1dGUgc3RyaW5nIGZvciBzZXR0aW5nIHRoZSB3aWR0aCBvZiB0aGUgYXhpcywgaWYgaXQgaXMga25vd24KCWF4aXNTdHlsZUF0dHI6IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLmF4aXNXaWR0aCAhPT0gbnVsbCkgewoJCQkgcmV0dXJuICdzdHlsZT0id2lkdGg6JyArIHRoaXMuYXhpc1dpZHRoICsgJ3B4Iic7CgkJfQoJCXJldHVybiAnJzsKCX0sCgoKCS8qIERpbWVuc2lvbnMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCXVwZGF0ZVNpemU6IGZ1bmN0aW9uKGlzUmVzaXplKSB7CgkJdGhpcy50aW1lR3JpZC51cGRhdGVTaXplKGlzUmVzaXplKTsKCgkJVmlldy5wcm90b3R5cGUudXBkYXRlU2l6ZS5jYWxsKHRoaXMsIGlzUmVzaXplKTsgLy8gY2FsbCB0aGUgc3VwZXItbWV0aG9kCgl9LAoKCgkvLyBSZWZyZXNoZXMgdGhlIGhvcml6b250YWwgZGltZW5zaW9ucyBvZiB0aGUgdmlldwoJdXBkYXRlV2lkdGg6IGZ1bmN0aW9uKCkgewoJCS8vIG1ha2UgYWxsIGF4aXMgY2VsbHMgbGluZSB1cCwgYW5kIHJlY29yZCB0aGUgd2lkdGggc28gbmV3bHkgY3JlYXRlZCBheGlzIGNlbGxzIHdpbGwgaGF2ZSBpdAoJCXRoaXMuYXhpc1dpZHRoID0gbWF0Y2hDZWxsV2lkdGhzKHRoaXMuZWwuZmluZCgnLmZjLWF4aXMnKSk7Cgl9LAoKCgkvLyBBZGp1c3RzIHRoZSB2ZXJ0aWNhbCBkaW1lbnNpb25zIG9mIHRoZSB2aWV3IHRvIHRoZSBzcGVjaWZpZWQgdmFsdWVzCglzZXRIZWlnaHQ6IGZ1bmN0aW9uKHRvdGFsSGVpZ2h0LCBpc0F1dG8pIHsKCQl2YXIgZXZlbnRMaW1pdDsKCQl2YXIgc2Nyb2xsZXJIZWlnaHQ7CgoJCWlmICh0aGlzLmJvdHRvbVJ1bGVIZWlnaHQgPT09IG51bGwpIHsKCQkJLy8gY2FsY3VsYXRlIHRoZSBoZWlnaHQgb2YgdGhlIHJ1bGUgdGhlIHZlcnkgZmlyc3QgdGltZQoJCQl0aGlzLmJvdHRvbVJ1bGVIZWlnaHQgPSB0aGlzLmJvdHRvbVJ1bGVFbC5vdXRlckhlaWdodCgpOwoJCX0KCQl0aGlzLmJvdHRvbVJ1bGVFbC5oaWRlKCk7IC8vIC5zaG93KCkgd2lsbCBiZSBjYWxsZWQgbGF0ZXIgaWYgdGhpcyA8aHI+IGlzIG5lY2Vzc2FyeQoKCQkvLyByZXNldCBhbGwgZGltZW5zaW9ucyBiYWNrIHRvIHRoZSBvcmlnaW5hbCBzdGF0ZQoJCXRoaXMuc2Nyb2xsZXJFbC5jc3MoJ292ZXJmbG93JywgJycpOwoJCXVuc2V0U2Nyb2xsZXIodGhpcy5zY3JvbGxlckVsKTsKCQl1bmNvbXBlbnNhdGVTY3JvbGwodGhpcy5ub1Njcm9sbFJvd0Vscyk7CgoJCS8vIGxpbWl0IG51bWJlciBvZiBldmVudHMgaW4gdGhlIGFsbC1kYXkgYXJlYQoJCWlmICh0aGlzLmRheUdyaWQpIHsKCQkJdGhpcy5kYXlHcmlkLnJlbW92ZVNlZ1BvcG92ZXIoKTsgLy8ga2lsbCB0aGUgIm1vcmUiIHBvcG92ZXIgaWYgZGlzcGxheWVkCgoJCQlldmVudExpbWl0ID0gdGhpcy5vcHQoJ2V2ZW50TGltaXQnKTsKCQkJaWYgKGV2ZW50TGltaXQgJiYgdHlwZW9mIGV2ZW50TGltaXQgIT09ICdudW1iZXInKSB7CgkJCQlldmVudExpbWl0ID0gQUdFTkRBX0FMTF9EQVlfRVZFTlRfTElNSVQ7IC8vIG1ha2Ugc3VyZSAiYXV0byIgZ29lcyB0byBhIHJlYWwgbnVtYmVyCgkJCX0KCQkJaWYgKGV2ZW50TGltaXQpIHsKCQkJCXRoaXMuZGF5R3JpZC5saW1pdFJvd3MoZXZlbnRMaW1pdCk7CgkJCX0KCQl9CgoJCWlmICghaXNBdXRvKSB7IC8vIHNob3VsZCB3ZSBmb3JjZSBkaW1lbnNpb25zIG9mIHRoZSBzY3JvbGwgY29udGFpbmVyLCBvciBsZXQgdGhlIGNvbnRlbnRzIGJlIG5hdHVyYWwgaGVpZ2h0PwoKCQkJc2Nyb2xsZXJIZWlnaHQgPSB0aGlzLmNvbXB1dGVTY3JvbGxlckhlaWdodCh0b3RhbEhlaWdodCk7CgkJCWlmIChzZXRQb3RlbnRpYWxTY3JvbGxlcih0aGlzLnNjcm9sbGVyRWwsIHNjcm9sbGVySGVpZ2h0KSkgeyAvLyB1c2luZyBzY3JvbGxiYXJzPwoKCQkJCS8vIG1ha2UgdGhlIGFsbC1kYXkgYW5kIGhlYWRlciByb3dzIGxpbmVzIHVwCgkJCQljb21wZW5zYXRlU2Nyb2xsKHRoaXMubm9TY3JvbGxSb3dFbHMsIGdldFNjcm9sbGJhcldpZHRocyh0aGlzLnNjcm9sbGVyRWwpKTsKCgkJCQkvLyB0aGUgc2Nyb2xsYmFyIGNvbXBlbnNhdGlvbiBtaWdodCBoYXZlIGNoYW5nZWQgdGV4dCBmbG93LCB3aGljaCBtaWdodCBhZmZlY3QgaGVpZ2h0LCBzbyByZWNhbGN1bGF0ZQoJCQkJLy8gYW5kIHJlYXBwbHkgdGhlIGRlc2lyZWQgaGVpZ2h0IHRvIHRoZSBzY3JvbGxlci4KCQkJCXNjcm9sbGVySGVpZ2h0ID0gdGhpcy5jb21wdXRlU2Nyb2xsZXJIZWlnaHQodG90YWxIZWlnaHQpOwoJCQkJdGhpcy5zY3JvbGxlckVsLmhlaWdodChzY3JvbGxlckhlaWdodCk7CgkJCX0KCQkJZWxzZSB7IC8vIG5vIHNjcm9sbGJhcnMKCQkJCS8vIHN0aWxsLCBmb3JjZSBhIGhlaWdodCBhbmQgZGlzcGxheSB0aGUgYm90dG9tIHJ1bGUgKG1hcmtzIHRoZSBlbmQgb2YgZGF5KQoJCQkJdGhpcy5zY3JvbGxlckVsLmhlaWdodChzY3JvbGxlckhlaWdodCkuY3NzKCdvdmVyZmxvdycsICdoaWRkZW4nKTsgLy8gaW4gY2FzZSA8aHI+IGdvZXMgb3V0c2lkZQoJCQkJdGhpcy5ib3R0b21SdWxlRWwuc2hvdygpOwoJCQl9CgkJfQoJfSwKCgoJLy8gQ29tcHV0ZXMgdGhlIGluaXRpYWwgcHJlLWNvbmZpZ3VyZWQgc2Nyb2xsIHN0YXRlIHByaW9yIHRvIGFsbG93aW5nIHRoZSB1c2VyIHRvIGNoYW5nZSBpdAoJY29tcHV0ZUluaXRpYWxTY3JvbGw6IGZ1bmN0aW9uKCkgewoJCXZhciBzY3JvbGxUaW1lID0gbW9tZW50LmR1cmF0aW9uKHRoaXMub3B0KCdzY3JvbGxUaW1lJykpOwoJCXZhciB0b3AgPSB0aGlzLnRpbWVHcmlkLmNvbXB1dGVUaW1lVG9wKHNjcm9sbFRpbWUpOwoKCQkvLyB6b29tIGNhbiBnaXZlIHdlaXJkIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4gcmF0aGVyIHNjcm9sbCBhIGxpdHRsZSBiaXQgZnVydGhlcgoJCXRvcCA9IE1hdGguY2VpbCh0b3ApOwoKCQlpZiAodG9wKSB7CgkJCXRvcCsrOyAvLyB0byBvdmVyY29tZSB0b3AgYm9yZGVyIHRoYXQgc2xvdHMgYmV5b25kIHRoZSBmaXJzdCBoYXZlLiBsb29rcyBiZXR0ZXIKCQl9CgoJCXJldHVybiB0b3A7Cgl9LAoKCgkvKiBFdmVudHMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFJlbmRlcnMgZXZlbnRzIG9udG8gdGhlIHZpZXcgYW5kIHBvcHVsYXRlcyB0aGUgVmlldydzIHNlZ21lbnQgYXJyYXkKCXJlbmRlckV2ZW50czogZnVuY3Rpb24oZXZlbnRzKSB7CgkJdmFyIGRheUV2ZW50cyA9IFtdOwoJCXZhciB0aW1lZEV2ZW50cyA9IFtdOwoJCXZhciBkYXlTZWdzID0gW107CgkJdmFyIHRpbWVkU2VnczsKCQl2YXIgaTsKCgkJLy8gc2VwYXJhdGUgdGhlIGV2ZW50cyBpbnRvIGFsbC1kYXkgYW5kIHRpbWVkCgkJZm9yIChpID0gMDsgaSA8IGV2ZW50cy5sZW5ndGg7IGkrKykgewoJCQlpZiAoZXZlbnRzW2ldLmFsbERheSkgewoJCQkJZGF5RXZlbnRzLnB1c2goZXZlbnRzW2ldKTsKCQkJfQoJCQllbHNlIHsKCQkJCXRpbWVkRXZlbnRzLnB1c2goZXZlbnRzW2ldKTsKCQkJfQoJCX0KCgkJLy8gcmVuZGVyIHRoZSBldmVudHMgaW4gdGhlIHN1YmNvbXBvbmVudHMKCQl0aW1lZFNlZ3MgPSB0aGlzLnRpbWVHcmlkLnJlbmRlckV2ZW50cyh0aW1lZEV2ZW50cyk7CgkJaWYgKHRoaXMuZGF5R3JpZCkgewoJCQlkYXlTZWdzID0gdGhpcy5kYXlHcmlkLnJlbmRlckV2ZW50cyhkYXlFdmVudHMpOwoJCX0KCgkJLy8gdGhlIGFsbC1kYXkgYXJlYSBpcyBmbGV4aWJsZSBhbmQgbWlnaHQgaGF2ZSBhIGxvdCBvZiBldmVudHMsIHNvIHNoaWZ0IHRoZSBoZWlnaHQKCQl0aGlzLnVwZGF0ZUhlaWdodCgpOwoJfSwKCgoJLy8gUmV0cmlldmVzIGFsbCBzZWdtZW50IG9iamVjdHMgdGhhdCBhcmUgcmVuZGVyZWQgaW4gdGhlIHZpZXcKCWdldEV2ZW50U2VnczogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMudGltZUdyaWQuZ2V0RXZlbnRTZWdzKCkuY29uY2F0KAoJCQl0aGlzLmRheUdyaWQgPyB0aGlzLmRheUdyaWQuZ2V0RXZlbnRTZWdzKCkgOiBbXQoJCSk7Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYWxsIGV2ZW50IGVsZW1lbnRzIGFuZCBjbGVhcnMgaW50ZXJuYWwgc2VnbWVudCBkYXRhCgl1bnJlbmRlckV2ZW50czogZnVuY3Rpb24oKSB7CgoJCS8vIHVucmVuZGVyIHRoZSBldmVudHMgaW4gdGhlIHN1YmNvbXBvbmVudHMKCQl0aGlzLnRpbWVHcmlkLnVucmVuZGVyRXZlbnRzKCk7CgkJaWYgKHRoaXMuZGF5R3JpZCkgewoJCQl0aGlzLmRheUdyaWQudW5yZW5kZXJFdmVudHMoKTsKCQl9CgoJCS8vIHdlIERPTidUIG5lZWQgdG8gY2FsbCB1cGRhdGVIZWlnaHQoKSBiZWNhdXNlOgoJCS8vIEEpIGEgcmVuZGVyRXZlbnRzKCkgY2FsbCBhbHdheXMgaGFwcGVucyBhZnRlciB0aGlzLCB3aGljaCB3aWxsIGV2ZW50dWFsbHkgY2FsbCB1cGRhdGVIZWlnaHQoKQoJCS8vIEIpIGluIElFOCwgdGhpcyBjYXVzZXMgYSBmbGFzaCB3aGVuZXZlciBldmVudHMgYXJlIHJlcmVuZGVyZWQKCX0sCgoKCS8qIERyYWdnaW5nIChmb3IgZXZlbnRzIGFuZCBleHRlcm5hbCBlbGVtZW50cykKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIEEgcmV0dXJuZWQgdmFsdWUgb2YgYHRydWVgIHNpZ25hbHMgdGhhdCBhIG1vY2sgImhlbHBlciIgZXZlbnQgaGFzIGJlZW4gcmVuZGVyZWQuCglyZW5kZXJEcmFnOiBmdW5jdGlvbihkcm9wTG9jYXRpb24sIHNlZykgewoJCWlmIChkcm9wTG9jYXRpb24uc3RhcnQuaGFzVGltZSgpKSB7CgkJCXJldHVybiB0aGlzLnRpbWVHcmlkLnJlbmRlckRyYWcoZHJvcExvY2F0aW9uLCBzZWcpOwoJCX0KCQllbHNlIGlmICh0aGlzLmRheUdyaWQpIHsKCQkJcmV0dXJuIHRoaXMuZGF5R3JpZC5yZW5kZXJEcmFnKGRyb3BMb2NhdGlvbiwgc2VnKTsKCQl9Cgl9LAoKCgl1bnJlbmRlckRyYWc6IGZ1bmN0aW9uKCkgewoJCXRoaXMudGltZUdyaWQudW5yZW5kZXJEcmFnKCk7CgkJaWYgKHRoaXMuZGF5R3JpZCkgewoJCQl0aGlzLmRheUdyaWQudW5yZW5kZXJEcmFnKCk7CgkJfQoJfSwKCgoJLyogU2VsZWN0aW9uCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZW5kZXJzIGEgdmlzdWFsIGluZGljYXRpb24gb2YgYSBzZWxlY3Rpb24KCXJlbmRlclNlbGVjdGlvbjogZnVuY3Rpb24ocmFuZ2UpIHsKCQlpZiAocmFuZ2Uuc3RhcnQuaGFzVGltZSgpIHx8IHJhbmdlLmVuZC5oYXNUaW1lKCkpIHsKCQkJdGhpcy50aW1lR3JpZC5yZW5kZXJTZWxlY3Rpb24ocmFuZ2UpOwoJCX0KCQllbHNlIGlmICh0aGlzLmRheUdyaWQpIHsKCQkJdGhpcy5kYXlHcmlkLnJlbmRlclNlbGVjdGlvbihyYW5nZSk7CgkJfQoJfSwKCgoJLy8gVW5yZW5kZXJzIGEgdmlzdWFsIGluZGljYXRpb25zIG9mIGEgc2VsZWN0aW9uCgl1bnJlbmRlclNlbGVjdGlvbjogZnVuY3Rpb24oKSB7CgkJdGhpcy50aW1lR3JpZC51bnJlbmRlclNlbGVjdGlvbigpOwoJCWlmICh0aGlzLmRheUdyaWQpIHsKCQkJdGhpcy5kYXlHcmlkLnVucmVuZGVyU2VsZWN0aW9uKCk7CgkJfQoJfQoKfSk7Cgo7OwoKdmFyIEFHRU5EQV9BTExfREFZX0VWRU5UX0xJTUlUID0gNTsKCmZjVmlld3MuYWdlbmRhID0gewoJJ2NsYXNzJzogQWdlbmRhVmlldywKCWRlZmF1bHRzOiB7CgkJYWxsRGF5U2xvdDogdHJ1ZSwKCQlhbGxEYXlUZXh0OiAnYWxsLWRheScsCgkJc2xvdER1cmF0aW9uOiAnMDA6MzA6MDAnLAoJCW1pblRpbWU6ICcwMDowMDowMCcsCgkJbWF4VGltZTogJzI0OjAwOjAwJywKCQlzbG90RXZlbnRPdmVybGFwOiB0cnVlIC8vIGEgYmFkIG5hbWUuIGNvbmZ1c2VkIHdpdGggb3ZlcmxhcC9jb25zdHJhaW50IHN5c3RlbQoJfQp9OwoKZmNWaWV3cy5hZ2VuZGFEYXkgPSB7Cgl0eXBlOiAnYWdlbmRhJywKCWR1cmF0aW9uOiB7IGRheXM6IDEgfQp9OwoKZmNWaWV3cy5hZ2VuZGFXZWVrID0gewoJdHlwZTogJ2FnZW5kYScsCglkdXJhdGlvbjogeyB3ZWVrczogMSB9Cn07Cjs7CgpyZXR1cm4gZmM7IC8vIGV4cG9ydCBmb3IgTm9kZS9Db21tb25KUwp9KTs=]]></data>
	</file>
	<file>
	  <filename>/js/fullcalendar.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEZ1bGxDYWxlbmRhciB2Mi4zLjIKICogRG9jcyAmIExpY2Vuc2U6IGh0dHA6Ly9mdWxsY2FsZW5kYXIuaW8vCiAqIChjKSAyMDE1IEFkYW0gU2hhdwogKi8KIWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWEocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmEoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhKXtyZXR1cm4gSihhLExhKX1mdW5jdGlvbiBkKGIpe3ZhciBjLGQ9e3ZpZXdzOmIudmlld3N8fHt9fTtyZXR1cm4gYS5lYWNoKGIsZnVuY3Rpb24oYixlKXsidmlld3MiIT1iJiYoYS5pc1BsYWluT2JqZWN0KGUpJiYhLyh0aW1lfGR1cmF0aW9ufGludGVydmFsKSQvaS50ZXN0KGIpJiYtMT09YS5pbkFycmF5KGIsTGEpPyhjPW51bGwsYS5lYWNoKGUsZnVuY3Rpb24oYSxlKXsvXihtb250aHx3ZWVrfGRheXxkZWZhdWx0fGJhc2ljKFdlZWt8RGF5KT98YWdlbmRhKFdlZWt8RGF5KT8pJC8udGVzdChhKT8oZC52aWV3c1thXXx8KGQudmlld3NbYV09e30pLGQudmlld3NbYV1bYl09ZSk6KGN8fChjPXt9KSxjW2FdPWUpfSksYyYmKGRbYl09YykpOmRbYl09ZSl9KSxkfWZ1bmN0aW9uIGUoYSxiKXtiLmxlZnQmJmEuY3NzKHsiYm9yZGVyLWxlZnQtd2lkdGgiOjEsIm1hcmdpbi1sZWZ0IjpiLmxlZnQtMX0pLGIucmlnaHQmJmEuY3NzKHsiYm9yZGVyLXJpZ2h0LXdpZHRoIjoxLCJtYXJnaW4tcmlnaHQiOmIucmlnaHQtMX0pfWZ1bmN0aW9uIGYoYSl7YS5jc3MoeyJtYXJnaW4tbGVmdCI6IiIsIm1hcmdpbi1yaWdodCI6IiIsImJvcmRlci1sZWZ0LXdpZHRoIjoiIiwiYm9yZGVyLXJpZ2h0LXdpZHRoIjoiIn0pfWZ1bmN0aW9uIGcoKXthKCJib2R5IikuYWRkQ2xhc3MoImZjLW5vdC1hbGxvd2VkIil9ZnVuY3Rpb24gaCgpe2EoImJvZHkiKS5yZW1vdmVDbGFzcygiZmMtbm90LWFsbG93ZWQiKX1mdW5jdGlvbiBpKGIsYyxkKXt2YXIgZT1NYXRoLmZsb29yKGMvYi5sZW5ndGgpLGY9TWF0aC5mbG9vcihjLWUqKGIubGVuZ3RoLTEpKSxnPVtdLGg9W10saT1bXSxrPTA7aihiKSxiLmVhY2goZnVuY3Rpb24oYyxkKXt2YXIgaj1jPT09Yi5sZW5ndGgtMT9mOmUsbD1hKGQpLm91dGVySGVpZ2h0KCEwKTtqPmw/KGcucHVzaChkKSxoLnB1c2gobCksaS5wdXNoKGEoZCkuaGVpZ2h0KCkpKTprKz1sfSksZCYmKGMtPWssZT1NYXRoLmZsb29yKGMvZy5sZW5ndGgpLGY9TWF0aC5mbG9vcihjLWUqKGcubGVuZ3RoLTEpKSksYShnKS5lYWNoKGZ1bmN0aW9uKGIsYyl7dmFyIGQ9Yj09PWcubGVuZ3RoLTE/ZjplLGo9aFtiXSxrPWlbYl0sbD1kLShqLWspO2Q+aiYmYShjKS5oZWlnaHQobCl9KX1mdW5jdGlvbiBqKGEpe2EuaGVpZ2h0KCIiKX1mdW5jdGlvbiBrKGIpe3ZhciBjPTA7cmV0dXJuIGIuZmluZCgiPiAqIikuZWFjaChmdW5jdGlvbihiLGQpe3ZhciBlPWEoZCkub3V0ZXJXaWR0aCgpO2U+YyYmKGM9ZSl9KSxjKyssYi53aWR0aChjKSxjfWZ1bmN0aW9uIGwoYSxiKXtyZXR1cm4gYS5oZWlnaHQoYikuYWRkQ2xhc3MoImZjLXNjcm9sbGVyIiksYVswXS5zY3JvbGxIZWlnaHQtMT5hWzBdLmNsaWVudEhlaWdodD8hMDoobShhKSwhMSl9ZnVuY3Rpb24gbShhKXthLmhlaWdodCgiIikucmVtb3ZlQ2xhc3MoImZjLXNjcm9sbGVyIil9ZnVuY3Rpb24gbihiKXt2YXIgYz1iLmNzcygicG9zaXRpb24iKSxkPWIucGFyZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3ZhciBiPWEodGhpcyk7cmV0dXJuLyhhdXRvfHNjcm9sbCkvLnRlc3QoYi5jc3MoIm92ZXJmbG93IikrYi5jc3MoIm92ZXJmbG93LXkiKStiLmNzcygib3ZlcmZsb3cteCIpKX0pLmVxKDApO3JldHVybiJmaXhlZCIhPT1jJiZkLmxlbmd0aD9kOmEoYlswXS5vd25lckRvY3VtZW50fHxkb2N1bWVudCl9ZnVuY3Rpb24gbyhhKXt2YXIgYj1hLm9mZnNldCgpO3JldHVybntsZWZ0OmIubGVmdCxyaWdodDpiLmxlZnQrYS5vdXRlcldpZHRoKCksdG9wOmIudG9wLGJvdHRvbTpiLnRvcCthLm91dGVySGVpZ2h0KCl9fWZ1bmN0aW9uIHAoYSl7dmFyIGI9YS5vZmZzZXQoKSxjPXIoYSksZD1iLmxlZnQrdShhLCJib3JkZXItbGVmdC13aWR0aCIpK2MubGVmdCxlPWIudG9wK3UoYSwiYm9yZGVyLXRvcC13aWR0aCIpK2MudG9wO3JldHVybntsZWZ0OmQscmlnaHQ6ZCthWzBdLmNsaWVudFdpZHRoLHRvcDplLGJvdHRvbTplK2FbMF0uY2xpZW50SGVpZ2h0fX1mdW5jdGlvbiBxKGEpe3ZhciBiPWEub2Zmc2V0KCksYz1iLmxlZnQrdShhLCJib3JkZXItbGVmdC13aWR0aCIpK3UoYSwicGFkZGluZy1sZWZ0IiksZD1iLnRvcCt1KGEsImJvcmRlci10b3Atd2lkdGgiKSt1KGEsInBhZGRpbmctdG9wIik7cmV0dXJue2xlZnQ6YyxyaWdodDpjK2Eud2lkdGgoKSx0b3A6ZCxib3R0b206ZCthLmhlaWdodCgpfX1mdW5jdGlvbiByKGEpe3ZhciBiPWEuaW5uZXJXaWR0aCgpLWFbMF0uY2xpZW50V2lkdGgsYz17bGVmdDowLHJpZ2h0OjAsdG9wOjAsYm90dG9tOmEuaW5uZXJIZWlnaHQoKS1hWzBdLmNsaWVudEhlaWdodH07cmV0dXJuIHMoKSYmInJ0bCI9PWEuY3NzKCJkaXJlY3Rpb24iKT9jLmxlZnQ9YjpjLnJpZ2h0PWIsY31mdW5jdGlvbiBzKCl7cmV0dXJuIG51bGw9PT1NYSYmKE1hPXQoKSksTWF9ZnVuY3Rpb24gdCgpe3ZhciBiPWEoIjxkaXY+PGRpdi8+PC9kaXY+IikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDotMWUzLGxlZnQ6MCxib3JkZXI6MCxwYWRkaW5nOjAsb3ZlcmZsb3c6InNjcm9sbCIsZGlyZWN0aW9uOiJydGwifSkuYXBwZW5kVG8oImJvZHkiKSxjPWIuY2hpbGRyZW4oKSxkPWMub2Zmc2V0KCkubGVmdD5iLm9mZnNldCgpLmxlZnQ7cmV0dXJuIGIucmVtb3ZlKCksZH1mdW5jdGlvbiB1KGEsYil7cmV0dXJuIHBhcnNlRmxvYXQoYS5jc3MoYikpfHwwfWZ1bmN0aW9uIHYoYSl7cmV0dXJuIDE9PWEud2hpY2gmJiFhLmN0cmxLZXl9ZnVuY3Rpb24gdyhhLGIpe3ZhciBjPXtsZWZ0Ok1hdGgubWF4KGEubGVmdCxiLmxlZnQpLHJpZ2h0Ok1hdGgubWluKGEucmlnaHQsYi5yaWdodCksdG9wOk1hdGgubWF4KGEudG9wLGIudG9wKSxib3R0b206TWF0aC5taW4oYS5ib3R0b20sYi5ib3R0b20pfTtyZXR1cm4gYy5sZWZ0PGMucmlnaHQmJmMudG9wPGMuYm90dG9tP2M6ITF9ZnVuY3Rpb24geChhLGIpe3JldHVybntsZWZ0Ok1hdGgubWluKE1hdGgubWF4KGEubGVmdCxiLmxlZnQpLGIucmlnaHQpLHRvcDpNYXRoLm1pbihNYXRoLm1heChhLnRvcCxiLnRvcCksYi5ib3R0b20pfX1mdW5jdGlvbiB5KGEpe3JldHVybntsZWZ0OihhLmxlZnQrYS5yaWdodCkvMix0b3A6KGEudG9wK2EuYm90dG9tKS8yfX1mdW5jdGlvbiB6KGEsYil7cmV0dXJue2xlZnQ6YS5sZWZ0LWIubGVmdCx0b3A6YS50b3AtYi50b3B9fWZ1bmN0aW9uIEEoYSxiKXt2YXIgYyxkLGUsZixnPWEuc3RhcnQsaD1hLmVuZCxpPWIuc3RhcnQsaj1iLmVuZDtyZXR1cm4gaD5pJiZqPmc/KGc+PWk/KGM9Zy5jbG9uZSgpLGU9ITApOihjPWkuY2xvbmUoKSxlPSExKSxqPj1oPyhkPWguY2xvbmUoKSxmPSEwKTooZD1qLmNsb25lKCksZj0hMSkse3N0YXJ0OmMsZW5kOmQsaXNTdGFydDplLGlzRW5kOmZ9KTp2b2lkIDB9ZnVuY3Rpb24gQihhLGMpe3JldHVybiBiLmR1cmF0aW9uKHtkYXlzOmEuY2xvbmUoKS5zdHJpcFRpbWUoKS5kaWZmKGMuY2xvbmUoKS5zdHJpcFRpbWUoKSwiZGF5cyIpLG1zOmEudGltZSgpLWMudGltZSgpfSl9ZnVuY3Rpb24gQyhhLGMpe3JldHVybiBiLmR1cmF0aW9uKHtkYXlzOmEuY2xvbmUoKS5zdHJpcFRpbWUoKS5kaWZmKGMuY2xvbmUoKS5zdHJpcFRpbWUoKSwiZGF5cyIpfSl9ZnVuY3Rpb24gRChhLGMsZCl7cmV0dXJuIGIuZHVyYXRpb24oTWF0aC5yb3VuZChhLmRpZmYoYyxkLCEwKSksZCl9ZnVuY3Rpb24gRShhLGIpe3ZhciBjLGQsZTtmb3IoYz0wO2M8UmEubGVuZ3RoJiYoZD1SYVtjXSxlPUYoZCxhLGIpLCEoZT49MSYmVyhlKSkpO2MrKyk7cmV0dXJuIGR9ZnVuY3Rpb24gRihhLGMsZCl7cmV0dXJuIG51bGwhPWQ/ZC5kaWZmKGMsYSwhMCk6Yi5pc0R1cmF0aW9uKGMpP2MuYXMoYSk6Yy5lbmQuZGlmZihjLnN0YXJ0LGEsITApfWZ1bmN0aW9uIEcoYSl7cmV0dXJuIEJvb2xlYW4oYS5ob3VycygpfHxhLm1pbnV0ZXMoKXx8YS5zZWNvbmRzKCl8fGEubWlsbGlzZWNvbmRzKCkpfWZ1bmN0aW9uIEgoYSl7cmV0dXJuIltvYmplY3QgRGF0ZV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpfHxhIGluc3RhbmNlb2YgRGF0ZX1mdW5jdGlvbiBJKGEpe3JldHVybi9eXGQrXDpcZCsoPzpcOlxkK1wuPyg/OlxkezN9KT8pPyQvLnRlc3QoYSl9ZnVuY3Rpb24gSihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpPXt9O2lmKGIpZm9yKGM9MDtjPGIubGVuZ3RoO2MrKyl7Zm9yKGQ9YltjXSxlPVtdLGY9YS5sZW5ndGgtMTtmPj0wO2YtLSlpZihnPWFbZl1bZF0sIm9iamVjdCI9PXR5cGVvZiBnKWUudW5zaGlmdChnKTtlbHNlIGlmKHZvaWQgMCE9PWcpe2lbZF09ZzticmVha31lLmxlbmd0aCYmKGlbZF09SihlKSl9Zm9yKGM9YS5sZW5ndGgtMTtjPj0wO2MtLSl7aD1hW2NdO2ZvcihkIGluIGgpZCBpbiBpfHwoaVtkXT1oW2RdKX1yZXR1cm4gaX1mdW5jdGlvbiBLKGEpe3ZhciBiPWZ1bmN0aW9uKCl7fTtyZXR1cm4gYi5wcm90b3R5cGU9YSxuZXcgYn1mdW5jdGlvbiBMKGEsYil7Zm9yKHZhciBjIGluIGEpTihhLGMpJiYoYltjXT1hW2NdKX1mdW5jdGlvbiBNKGEsYil7dmFyIGMsZCxlPVsiY29uc3RydWN0b3IiLCJ0b1N0cmluZyIsInZhbHVlT2YiXTtmb3IoYz0wO2M8ZS5sZW5ndGg7YysrKWQ9ZVtjXSxhW2RdIT09T2JqZWN0LnByb3RvdHlwZVtkXSYmKGJbZF09YVtkXSl9ZnVuY3Rpb24gTihhLGIpe3JldHVybiBTYS5jYWxsKGEsYil9ZnVuY3Rpb24gTyhiKXtyZXR1cm4vdW5kZWZpbmVkfG51bGx8Ym9vbGVhbnxudW1iZXJ8c3RyaW5nLy50ZXN0KGEudHlwZShiKSl9ZnVuY3Rpb24gUChiLGMsZCl7aWYoYS5pc0Z1bmN0aW9uKGIpJiYoYj1bYl0pLGIpe3ZhciBlLGY7Zm9yKGU9MDtlPGIubGVuZ3RoO2UrKylmPWJbZV0uYXBwbHkoYyxkKXx8ZjtyZXR1cm4gZn19ZnVuY3Rpb24gUSgpe2Zvcih2YXIgYT0wO2E8YXJndW1lbnRzLmxlbmd0aDthKyspaWYodm9pZCAwIT09YXJndW1lbnRzW2FdKXJldHVybiBhcmd1bWVudHNbYV19ZnVuY3Rpb24gUihhKXtyZXR1cm4oYSsiIikucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLycvZywiJiMwMzk7IikucmVwbGFjZSgvIi9nLCImcXVvdDsiKS5yZXBsYWNlKC9cbi9nLCI8YnIgLz4iKX1mdW5jdGlvbiBTKGEpe3JldHVybiBhLnJlcGxhY2UoLyYuKj87L2csIiIpfWZ1bmN0aW9uIFQoYil7dmFyIGM9W107cmV0dXJuIGEuZWFjaChiLGZ1bmN0aW9uKGEsYil7bnVsbCE9YiYmYy5wdXNoKGErIjoiK2IpfSksYy5qb2luKCI7Iil9ZnVuY3Rpb24gVShhKXtyZXR1cm4gYS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSthLnNsaWNlKDEpfWZ1bmN0aW9uIFYoYSxiKXtyZXR1cm4gYS1ifWZ1bmN0aW9uIFcoYSl7cmV0dXJuIGElMT09PTB9ZnVuY3Rpb24gWChhLGIpe3ZhciBjPWFbYl07cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGMuYXBwbHkoYSxhcmd1bWVudHMpfX1mdW5jdGlvbiBZKGEsYil7dmFyIGMsZCxlLGYsZz1mdW5jdGlvbigpe3ZhciBoPStuZXcgRGF0ZS1mO2I+aCYmaD4wP2M9c2V0VGltZW91dChnLGItaCk6KGM9bnVsbCxhLmFwcGx5KGUsZCksY3x8KGU9ZD1udWxsKSl9O3JldHVybiBmdW5jdGlvbigpe2U9dGhpcyxkPWFyZ3VtZW50cyxmPStuZXcgRGF0ZSxjfHwoYz1zZXRUaW1lb3V0KGcsYikpfX1mdW5jdGlvbiBaKGMsZCxlKXt2YXIgZixnLGgsaSxqPWNbMF0saz0xPT1jLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiBqO3JldHVybiBiLmlzTW9tZW50KGopPyhpPWIuYXBwbHkobnVsbCxjKSxfKGosaSkpOkgoail8fHZvaWQgMD09PWo/aT1iLmFwcGx5KG51bGwsYyk6KGY9ITEsZz0hMSxrP1RhLnRlc3Qoaik/KGorPSItMDEiLGM9W2pdLGY9ITAsZz0hMCk6KGg9VWEuZXhlYyhqKSkmJihmPSFoWzVdLGc9ITApOmEuaXNBcnJheShqKSYmKGc9ITApLGk9ZHx8Zj9iLnV0Yy5hcHBseShiLGMpOmIuYXBwbHkobnVsbCxjKSxmPyhpLl9hbWJpZ1RpbWU9ITAsaS5fYW1iaWdab25lPSEwKTplJiYoZz9pLl9hbWJpZ1pvbmU9ITA6ayYmKGkudXRjT2Zmc2V0P2kudXRjT2Zmc2V0KGopOmkuem9uZShqKSkpKSxpLl9mdWxsQ2FsZW5kYXI9ITAsaX1mdW5jdGlvbiAkKGEsYyl7dmFyIGQsZSxmPSExLGc9ITEsaD1hLmxlbmd0aCxpPVtdO2ZvcihkPTA7aD5kO2QrKyllPWFbZF0sYi5pc01vbWVudChlKXx8KGU9SmEubW9tZW50LnBhcnNlWm9uZShlKSksZj1mfHxlLl9hbWJpZ1RpbWUsZz1nfHxlLl9hbWJpZ1pvbmUsaS5wdXNoKGUpO2ZvcihkPTA7aD5kO2QrKyllPWlbZF0sY3x8IWZ8fGUuX2FtYmlnVGltZT9nJiYhZS5fYW1iaWdab25lJiYoaVtkXT1lLmNsb25lKCkuc3RyaXBab25lKCkpOmlbZF09ZS5jbG9uZSgpLnN0cmlwVGltZSgpO3JldHVybiBpfWZ1bmN0aW9uIF8oYSxiKXthLl9hbWJpZ1RpbWU/Yi5fYW1iaWdUaW1lPSEwOmIuX2FtYmlnVGltZSYmKGIuX2FtYmlnVGltZT0hMSksYS5fYW1iaWdab25lP2IuX2FtYmlnWm9uZT0hMDpiLl9hbWJpZ1pvbmUmJihiLl9hbWJpZ1pvbmU9ITEpfWZ1bmN0aW9uIGFhKGEsYil7YS55ZWFyKGJbMF18fDApLm1vbnRoKGJbMV18fDApLmRhdGUoYlsyXXx8MCkuaG91cnMoYlszXXx8MCkubWludXRlcyhiWzRdfHwwKS5zZWNvbmRzKGJbNV18fDApLm1pbGxpc2Vjb25kcyhiWzZdfHwwKX1mdW5jdGlvbiBiYShhLGIpe3JldHVybiBXYS5mb3JtYXQuY2FsbChhLGIpfWZ1bmN0aW9uIGNhKGEsYil7cmV0dXJuIGRhKGEsaWEoYikpfWZ1bmN0aW9uIGRhKGEsYil7dmFyIGMsZD0iIjtmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKWQrPWVhKGEsYltjXSk7cmV0dXJuIGR9ZnVuY3Rpb24gZWEoYSxiKXt2YXIgYyxkO3JldHVybiJzdHJpbmciPT10eXBlb2YgYj9iOihjPWIudG9rZW4pP1hhW2NdP1hhW2NdKGEpOmJhKGEsYyk6Yi5tYXliZSYmKGQ9ZGEoYSxiLm1heWJlKSxkLm1hdGNoKC9bMS05XS8pKT9kOiIifWZ1bmN0aW9uIGZhKGEsYixjLGQsZSl7dmFyIGY7cmV0dXJuIGE9SmEubW9tZW50LnBhcnNlWm9uZShhKSxiPUphLm1vbWVudC5wYXJzZVpvbmUoYiksZj0oYS5sb2NhbGVEYXRhfHxhLmxhbmcpLmNhbGwoYSksYz1mLmxvbmdEYXRlRm9ybWF0KGMpfHxjLGQ9ZHx8IiAtICIsZ2EoYSxiLGlhKGMpLGQsZSl9ZnVuY3Rpb24gZ2EoYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqPSIiLGs9IiIsbD0iIixtPSIiLG49IiI7Zm9yKGc9MDtnPGMubGVuZ3RoJiYoZj1oYShhLGIsY1tnXSksZiE9PSExKTtnKyspais9Zjtmb3IoaD1jLmxlbmd0aC0xO2g+ZyYmKGY9aGEoYSxiLGNbaF0pLGYhPT0hMSk7aC0tKWs9ZitrO2ZvcihpPWc7aD49aTtpKyspbCs9ZWEoYSxjW2ldKSxtKz1lYShiLGNbaV0pO3JldHVybihsfHxtKSYmKG49ZT9tK2QrbDpsK2QrbSksaituK2t9ZnVuY3Rpb24gaGEoYSxiLGMpe3ZhciBkLGU7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBjP2M6KGQ9Yy50b2tlbikmJihlPVlhW2QuY2hhckF0KDApXSxlJiZhLmlzU2FtZShiLGUpKT9iYShhLGQpOiExfWZ1bmN0aW9uIGlhKGEpe3JldHVybiBhIGluIFphP1phW2FdOlphW2FdPWphKGEpfWZ1bmN0aW9uIGphKGEpe2Zvcih2YXIgYixjPVtdLGQ9L1xbKFteXF1dKilcXXxcKChbXlwpXSopXCl8KExUU3xMVHwoXHcpXDQqbz8pfChbXlx3XFtcKF0rKS9nO2I9ZC5leGVjKGEpOyliWzFdP2MucHVzaChiWzFdKTpiWzJdP2MucHVzaCh7bWF5YmU6amEoYlsyXSl9KTpiWzNdP2MucHVzaCh7dG9rZW46YlszXX0pOmJbNV0mJmMucHVzaChiWzVdKTtyZXR1cm4gY31mdW5jdGlvbiBrYSgpe31mdW5jdGlvbiBsYShhLGIpe3JldHVybiBhfHxiP2EmJmI/YS5ncmlkPT09Yi5ncmlkJiZhLnJvdz09PWIucm93JiZhLmNvbD09PWIuY29sOiExOiEwfWZ1bmN0aW9uIG1hKGEpe3ZhciBiPW9hKGEpO3JldHVybiJiYWNrZ3JvdW5kIj09PWJ8fCJpbnZlcnNlLWJhY2tncm91bmQiPT09Yn1mdW5jdGlvbiBuYShhKXtyZXR1cm4iaW52ZXJzZS1iYWNrZ3JvdW5kIj09PW9hKGEpfWZ1bmN0aW9uIG9hKGEpe3JldHVybiBRKChhLnNvdXJjZXx8e30pLnJlbmRlcmluZyxhLnJlbmRlcmluZyl9ZnVuY3Rpb24gcGEoYSl7dmFyIGIsYyxkPXt9O2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspYz1hW2JdLChkW2MuX2lkXXx8KGRbYy5faWRdPVtdKSkucHVzaChjKTtyZXR1cm4gZH1mdW5jdGlvbiBxYShhLGIpe3JldHVybiBhLmV2ZW50U3RhcnRNUy1iLmV2ZW50U3RhcnRNU31mdW5jdGlvbiByYShhLGIpe3JldHVybiBhLmV2ZW50U3RhcnRNUy1iLmV2ZW50U3RhcnRNU3x8Yi5ldmVudER1cmF0aW9uTVMtYS5ldmVudER1cmF0aW9uTVN8fGIuZXZlbnQuYWxsRGF5LWEuZXZlbnQuYWxsRGF5fHwoYS5ldmVudC50aXRsZXx8IiIpLmxvY2FsZUNvbXBhcmUoYi5ldmVudC50aXRsZSl9ZnVuY3Rpb24gc2EoYyl7dmFyIGQsZSxmLGcsaD1KYS5kYXRhQXR0clByZWZpeDtyZXR1cm4gaCYmKGgrPSItIiksZD1jLmRhdGEoaCsiZXZlbnQiKXx8bnVsbCxkJiYoZD0ib2JqZWN0Ij09dHlwZW9mIGQ/YS5leHRlbmQoe30sZCk6e30sZT1kLnN0YXJ0LG51bGw9PWUmJihlPWQudGltZSksZj1kLmR1cmF0aW9uLGc9ZC5zdGljayxkZWxldGUgZC5zdGFydCxkZWxldGUgZC50aW1lLGRlbGV0ZSBkLmR1cmF0aW9uLGRlbGV0ZSBkLnN0aWNrKSxudWxsPT1lJiYoZT1jLmRhdGEoaCsic3RhcnQiKSksbnVsbD09ZSYmKGU9Yy5kYXRhKGgrInRpbWUiKSksbnVsbD09ZiYmKGY9Yy5kYXRhKGgrImR1cmF0aW9uIikpLG51bGw9PWcmJihnPWMuZGF0YShoKyJzdGljayIpKSxlPW51bGwhPWU/Yi5kdXJhdGlvbihlKTpudWxsLGY9bnVsbCE9Zj9iLmR1cmF0aW9uKGYpOm51bGwsZz1Cb29sZWFuKGcpLHtldmVudFByb3BzOmQsc3RhcnRUaW1lOmUsZHVyYXRpb246ZixzdGljazpnfX1mdW5jdGlvbiB0YShhLGIpe3ZhciBjLGQ7Zm9yKGM9MDtjPGIubGVuZ3RoO2MrKylpZihkPWJbY10sZC5sZWZ0Q29sPD1hLnJpZ2h0Q29sJiZkLnJpZ2h0Q29sPj1hLmxlZnRDb2wpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gdWEoYSxiKXtyZXR1cm4gYS5sZWZ0Q29sLWIubGVmdENvbH1mdW5jdGlvbiB2YShhKXt2YXIgYixjLGQ7aWYoYS5zb3J0KHJhKSxiPXdhKGEpLHhhKGIpLGM9YlswXSl7Zm9yKGQ9MDtkPGMubGVuZ3RoO2QrKyl5YShjW2RdKTtmb3IoZD0wO2Q8Yy5sZW5ndGg7ZCsrKXphKGNbZF0sMCwwKX19ZnVuY3Rpb24gd2EoYSl7dmFyIGIsYyxkLGU9W107Zm9yKGI9MDtiPGEubGVuZ3RoO2IrKyl7Zm9yKGM9YVtiXSxkPTA7ZDxlLmxlbmd0aCYmQWEoYyxlW2RdKS5sZW5ndGg7ZCsrKTtjLmxldmVsPWQsKGVbZF18fChlW2RdPVtdKSkucHVzaChjKX1yZXR1cm4gZX1mdW5jdGlvbiB4YShhKXt2YXIgYixjLGQsZSxmO2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspZm9yKGM9YVtiXSxkPTA7ZDxjLmxlbmd0aDtkKyspZm9yKGU9Y1tkXSxlLmZvcndhcmRTZWdzPVtdLGY9YisxO2Y8YS5sZW5ndGg7ZisrKUFhKGUsYVtmXSxlLmZvcndhcmRTZWdzKX1mdW5jdGlvbiB5YShhKXt2YXIgYixjLGQ9YS5mb3J3YXJkU2VncyxlPTA7aWYodm9pZCAwPT09YS5mb3J3YXJkUHJlc3N1cmUpe2ZvcihiPTA7YjxkLmxlbmd0aDtiKyspYz1kW2JdLHlhKGMpLGU9TWF0aC5tYXgoZSwxK2MuZm9yd2FyZFByZXNzdXJlKTthLmZvcndhcmRQcmVzc3VyZT1lfX1mdW5jdGlvbiB6YShhLGIsYyl7dmFyIGQsZT1hLmZvcndhcmRTZWdzO2lmKHZvaWQgMD09PWEuZm9yd2FyZENvb3JkKWZvcihlLmxlbmd0aD8oZS5zb3J0KENhKSx6YShlWzBdLGIrMSxjKSxhLmZvcndhcmRDb29yZD1lWzBdLmJhY2t3YXJkQ29vcmQpOmEuZm9yd2FyZENvb3JkPTEsYS5iYWNrd2FyZENvb3JkPWEuZm9yd2FyZENvb3JkLShhLmZvcndhcmRDb29yZC1jKS8oYisxKSxkPTA7ZDxlLmxlbmd0aDtkKyspemEoZVtkXSwwLGEuZm9yd2FyZENvb3JkKX1mdW5jdGlvbiBBYShhLGIsYyl7Yz1jfHxbXTtmb3IodmFyIGQ9MDtkPGIubGVuZ3RoO2QrKylCYShhLGJbZF0pJiZjLnB1c2goYltkXSk7cmV0dXJuIGN9ZnVuY3Rpb24gQmEoYSxiKXtyZXR1cm4gYS5ib3R0b20+Yi50b3AmJmEudG9wPGIuYm90dG9tfWZ1bmN0aW9uIENhKGEsYil7cmV0dXJuIGIuZm9yd2FyZFByZXNzdXJlLWEuZm9yd2FyZFByZXNzdXJlfHwoYS5iYWNrd2FyZENvb3JkfHwwKS0oYi5iYWNrd2FyZENvb3JkfHwwKXx8cmEoYSxiKX1mdW5jdGlvbiBEYShjLGQpe2Z1bmN0aW9uIGUoKXtVP2goKSYmKGsoKSxpKCkpOmYoKX1mdW5jdGlvbiBmKCl7Vj1QLnRoZW1lPyJ1aSI6ImZjIixjLmFkZENsYXNzKCJmYyIpLFAuaXNSVEw/Yy5hZGRDbGFzcygiZmMtcnRsIik6Yy5hZGRDbGFzcygiZmMtbHRyIiksUC50aGVtZT9jLmFkZENsYXNzKCJ1aS13aWRnZXQiKTpjLmFkZENsYXNzKCJmYy11bnRoZW1lZCIpLFU9YSgiPGRpdiBjbGFzcz0nZmMtdmlldy1jb250YWluZXInLz4iKS5wcmVwZW5kVG8oYyksUz1PLmhlYWRlcj1uZXcgR2EoTyxQKSxUPVMucmVuZGVyKCksVCYmYy5wcmVwZW5kKFQpLGkoUC5kZWZhdWx0VmlldyksUC5oYW5kbGVXaW5kb3dSZXNpemUmJihaPVkobSxQLndpbmRvd1Jlc2l6ZURlbGF5KSxhKHdpbmRvdykucmVzaXplKFopKX1mdW5jdGlvbiBnKCl7VyYmVy5yZW1vdmVFbGVtZW50KCksUy5yZW1vdmVFbGVtZW50KCksVS5yZW1vdmUoKSxjLnJlbW92ZUNsYXNzKCJmYyBmYy1sdHIgZmMtcnRsIGZjLXVudGhlbWVkIHVpLXdpZGdldCIpLFomJmEod2luZG93KS51bmJpbmQoInJlc2l6ZSIsWil9ZnVuY3Rpb24gaCgpe3JldHVybiBjLmlzKCI6dmlzaWJsZSIpfWZ1bmN0aW9uIGkoYil7ZGErKyxXJiZiJiZXLnR5cGUhPT1iJiYoUy5kZWFjdGl2YXRlQnV0dG9uKFcudHlwZSksSCgpLFcucmVtb3ZlRWxlbWVudCgpLFc9Ty52aWV3PW51bGwpLCFXJiZiJiYoVz1PLnZpZXc9Y2FbYl18fChjYVtiXT1PLmluc3RhbnRpYXRlVmlldyhiKSksVy5zZXRFbGVtZW50KGEoIjxkaXYgY2xhc3M9J2ZjLXZpZXcgZmMtIitiKyItdmlldycgLz4iKS5hcHBlbmRUbyhVKSksUy5hY3RpdmF0ZUJ1dHRvbihiKSksVyYmKCQ9Vy5tYXNzYWdlQ3VycmVudERhdGUoJCksVy5kaXNwbGF5aW5nJiYkLmlzV2l0aGluKFcuaW50ZXJ2YWxTdGFydCxXLmludGVydmFsRW5kKXx8aCgpJiYoSCgpLFcuZGlzcGxheSgkKSxJKCksdSgpLHYoKSxxKCkpKSxJKCksZGEtLX1mdW5jdGlvbiBqKGEpe3JldHVybiBoKCk/KGEmJmwoKSxkYSsrLFcudXBkYXRlU2l6ZSghMCksZGEtLSwhMCk6dm9pZCAwfWZ1bmN0aW9uIGsoKXtoKCkmJmwoKX1mdW5jdGlvbiBsKCl7WD0ibnVtYmVyIj09dHlwZW9mIFAuY29udGVudEhlaWdodD9QLmNvbnRlbnRIZWlnaHQ6Im51bWJlciI9PXR5cGVvZiBQLmhlaWdodD9QLmhlaWdodC0oVD9ULm91dGVySGVpZ2h0KCEwKTowKTpNYXRoLnJvdW5kKFUud2lkdGgoKS9NYXRoLm1heChQLmFzcGVjdFJhdGlvLC41KSl9ZnVuY3Rpb24gbShhKXshZGEmJmEudGFyZ2V0PT09d2luZG93JiZXLnN0YXJ0JiZqKCEwKSYmVy50cmlnZ2VyKCJ3aW5kb3dSZXNpemUiLGJhKX1mdW5jdGlvbiBuKCl7cCgpLHIoKX1mdW5jdGlvbiBvKCl7aCgpJiYoSCgpLFcuZGlzcGxheUV2ZW50cyhlYSksSSgpKX1mdW5jdGlvbiBwKCl7SCgpLFcuY2xlYXJFdmVudHMoKSxJKCl9ZnVuY3Rpb24gcSgpeyFQLmxhenlGZXRjaGluZ3x8XyhXLnN0YXJ0LFcuZW5kKT9yKCk6bygpfWZ1bmN0aW9uIHIoKXthYShXLnN0YXJ0LFcuZW5kKX1mdW5jdGlvbiBzKGEpe2VhPWEsbygpfWZ1bmN0aW9uIHQoKXtvKCl9ZnVuY3Rpb24gdSgpe1MudXBkYXRlVGl0bGUoVy50aXRsZSl9ZnVuY3Rpb24gdigpe3ZhciBhPU8uZ2V0Tm93KCk7YS5pc1dpdGhpbihXLmludGVydmFsU3RhcnQsVy5pbnRlcnZhbEVuZCk/Uy5kaXNhYmxlQnV0dG9uKCJ0b2RheSIpOlMuZW5hYmxlQnV0dG9uKCJ0b2RheSIpfWZ1bmN0aW9uIHcoYSxiKXtXLnNlbGVjdChPLmJ1aWxkU2VsZWN0UmFuZ2UuYXBwbHkoTyxhcmd1bWVudHMpKX1mdW5jdGlvbiB4KCl7VyYmVy51bnNlbGVjdCgpfWZ1bmN0aW9uIHkoKXskPVcuY29tcHV0ZVByZXZEYXRlKCQpLGkoKX1mdW5jdGlvbiB6KCl7JD1XLmNvbXB1dGVOZXh0RGF0ZSgkKSxpKCl9ZnVuY3Rpb24gQSgpeyQuYWRkKC0xLCJ5ZWFycyIpLGkoKX1mdW5jdGlvbiBCKCl7JC5hZGQoMSwieWVhcnMiKSxpKCl9ZnVuY3Rpb24gQygpeyQ9Ty5nZXROb3coKSxpKCl9ZnVuY3Rpb24gRChhKXskPU8ubW9tZW50KGEpLGkoKX1mdW5jdGlvbiBFKGEpeyQuYWRkKGIuZHVyYXRpb24oYSkpLGkoKX1mdW5jdGlvbiBGKGEsYil7dmFyIGM7Yj1ifHwiZGF5IixjPU8uZ2V0Vmlld1NwZWMoYil8fE8uZ2V0VW5pdFZpZXdTcGVjKGIpLCQ9YSxpKGM/Yy50eXBlOm51bGwpfWZ1bmN0aW9uIEcoKXtyZXR1cm4gJC5jbG9uZSgpfWZ1bmN0aW9uIEgoKXtVLmNzcyh7d2lkdGg6IjEwMCUiLGhlaWdodDpVLmhlaWdodCgpLG92ZXJmbG93OiJoaWRkZW4ifSl9ZnVuY3Rpb24gSSgpe1UuY3NzKHt3aWR0aDoiIixoZWlnaHQ6IiIsb3ZlcmZsb3c6IiJ9KX1mdW5jdGlvbiBKKCl7cmV0dXJuIE99ZnVuY3Rpb24gTCgpe3JldHVybiBXfWZ1bmN0aW9uIE0oYSxiKXtyZXR1cm4gdm9pZCAwPT09Yj9QW2FdOnZvaWQoKCJoZWlnaHQiPT1hfHwiY29udGVudEhlaWdodCI9PWF8fCJhc3BlY3RSYXRpbyI9PWEpJiYoUFthXT1iLGooITApKSl9ZnVuY3Rpb24gTihhLGIpe3JldHVybiBQW2FdP1BbYV0uYXBwbHkoYnx8YmEsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTp2b2lkIDB9dmFyIE89dGhpcztPLmluaXRPcHRpb25zKGR8fHt9KTt2YXIgUD10aGlzLm9wdGlvbnM7Ty5yZW5kZXI9ZSxPLmRlc3Ryb3k9ZyxPLnJlZmV0Y2hFdmVudHM9bixPLnJlcG9ydEV2ZW50cz1zLE8ucmVwb3J0RXZlbnRDaGFuZ2U9dCxPLnJlcmVuZGVyRXZlbnRzPW8sTy5jaGFuZ2VWaWV3PWksTy5zZWxlY3Q9dyxPLnVuc2VsZWN0PXgsTy5wcmV2PXksTy5uZXh0PXosTy5wcmV2WWVhcj1BLE8ubmV4dFllYXI9QixPLnRvZGF5PUMsTy5nb3RvRGF0ZT1ELE8uaW5jcmVtZW50RGF0ZT1FLE8uem9vbVRvPUYsTy5nZXREYXRlPUcsTy5nZXRDYWxlbmRhcj1KLE8uZ2V0Vmlldz1MLE8ub3B0aW9uPU0sTy50cmlnZ2VyPU47dmFyIFE9SyhGYShQLmxhbmcpKTtpZihQLm1vbnRoTmFtZXMmJihRLl9tb250aHM9UC5tb250aE5hbWVzKSxQLm1vbnRoTmFtZXNTaG9ydCYmKFEuX21vbnRoc1Nob3J0PVAubW9udGhOYW1lc1Nob3J0KSxQLmRheU5hbWVzJiYoUS5fd2Vla2RheXM9UC5kYXlOYW1lcyksUC5kYXlOYW1lc1Nob3J0JiYoUS5fd2Vla2RheXNTaG9ydD1QLmRheU5hbWVzU2hvcnQpLG51bGwhPVAuZmlyc3REYXkpe3ZhciBSPUsoUS5fd2Vlayk7Ui5kb3c9UC5maXJzdERheSxRLl93ZWVrPVJ9US5fZnVsbENhbGVuZGFyX3dlZWtDYWxjPWZ1bmN0aW9uKGEpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBhP2E6ImxvY2FsIj09PWE/YToiaXNvIj09PWF8fCJJU08iPT09YT8iSVNPIjp2b2lkIDB9KFAud2Vla051bWJlckNhbGN1bGF0aW9uKSxPLmRlZmF1bHRBbGxEYXlFdmVudER1cmF0aW9uPWIuZHVyYXRpb24oUC5kZWZhdWx0QWxsRGF5RXZlbnREdXJhdGlvbiksTy5kZWZhdWx0VGltZWRFdmVudER1cmF0aW9uPWIuZHVyYXRpb24oUC5kZWZhdWx0VGltZWRFdmVudER1cmF0aW9uKSxPLm1vbWVudD1mdW5jdGlvbigpe3ZhciBhO3JldHVybiJsb2NhbCI9PT1QLnRpbWV6b25lPyhhPUphLm1vbWVudC5hcHBseShudWxsLGFyZ3VtZW50cyksYS5oYXNUaW1lKCkmJmEubG9jYWwoKSk6YT0iVVRDIj09PVAudGltZXpvbmU/SmEubW9tZW50LnV0Yy5hcHBseShudWxsLGFyZ3VtZW50cyk6SmEubW9tZW50LnBhcnNlWm9uZS5hcHBseShudWxsLGFyZ3VtZW50cyksIl9sb2NhbGUiaW4gYT9hLl9sb2NhbGU9UTphLl9sYW5nPVEsYX0sTy5nZXRJc0FtYmlnVGltZXpvbmU9ZnVuY3Rpb24oKXtyZXR1cm4ibG9jYWwiIT09UC50aW1lem9uZSYmIlVUQyIhPT1QLnRpbWV6b25lfSxPLnJlem9uZURhdGU9ZnVuY3Rpb24oYSl7cmV0dXJuIE8ubW9tZW50KGEudG9BcnJheSgpKX0sTy5nZXROb3c9ZnVuY3Rpb24oKXt2YXIgYT1QLm5vdztyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYSYmKGE9YSgpKSxPLm1vbWVudChhKX0sTy5nZXRFdmVudEVuZD1mdW5jdGlvbihhKXtyZXR1cm4gYS5lbmQ/YS5lbmQuY2xvbmUoKTpPLmdldERlZmF1bHRFdmVudEVuZChhLmFsbERheSxhLnN0YXJ0KX0sTy5nZXREZWZhdWx0RXZlbnRFbmQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmNsb25lKCk7cmV0dXJuIGE/Yy5zdHJpcFRpbWUoKS5hZGQoTy5kZWZhdWx0QWxsRGF5RXZlbnREdXJhdGlvbik6Yy5hZGQoTy5kZWZhdWx0VGltZWRFdmVudER1cmF0aW9uKSxPLmdldElzQW1iaWdUaW1lem9uZSgpJiZjLnN0cmlwWm9uZSgpLGN9LE8uaHVtYW5pemVEdXJhdGlvbj1mdW5jdGlvbihhKXtyZXR1cm4oYS5sb2NhbGV8fGEubGFuZykuY2FsbChhLFAubGFuZykuaHVtYW5pemUoKX0sSGEuY2FsbChPLFApO3ZhciBTLFQsVSxWLFcsWCxaLCQsXz1PLmlzRmV0Y2hOZWVkZWQsYWE9Ty5mZXRjaEV2ZW50cyxiYT1jWzBdLGNhPXt9LGRhPTAsZWE9W107JD1udWxsIT1QLmRlZmF1bHREYXRlP08ubW9tZW50KFAuZGVmYXVsdERhdGUpOk8uZ2V0Tm93KCksTy5nZXRTdWdnZXN0ZWRWaWV3SGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PVgmJmsoKSxYfSxPLmlzSGVpZ2h0QXV0bz1mdW5jdGlvbigpe3JldHVybiJhdXRvIj09PVAuY29udGVudEhlaWdodHx8ImF1dG8iPT09UC5oZWlnaHR9LE8uaW5pdGlhbGl6ZSgpfWZ1bmN0aW9uIEVhKGIpe2EuZWFjaChuYixmdW5jdGlvbihhLGMpe251bGw9PWJbYV0mJihiW2FdPWMoYikpfSl9ZnVuY3Rpb24gRmEoYSl7dmFyIGM9Yi5sb2NhbGVEYXRhfHxiLmxhbmdEYXRhO3JldHVybiBjLmNhbGwoYixhKXx8Yy5jYWxsKGIsImVuIil9ZnVuY3Rpb24gR2EoYixjKXtmdW5jdGlvbiBkKCl7dmFyIGI9Yy5oZWFkZXI7cmV0dXJuIG49Yy50aGVtZT8idWkiOiJmYyIsYj9vPWEoIjxkaXYgY2xhc3M9J2ZjLXRvb2xiYXInLz4iKS5hcHBlbmQoZigibGVmdCIpKS5hcHBlbmQoZigicmlnaHQiKSkuYXBwZW5kKGYoImNlbnRlciIpKS5hcHBlbmQoJzxkaXYgY2xhc3M9ImZjLWNsZWFyIi8+Jyk6dm9pZCAwfWZ1bmN0aW9uIGUoKXtvLnJlbW92ZSgpLG89YSgpfWZ1bmN0aW9uIGYoZCl7dmFyIGU9YSgnPGRpdiBjbGFzcz0iZmMtJytkKyciLz4nKSxmPWMuaGVhZGVyW2RdO3JldHVybiBmJiZhLmVhY2goZi5zcGxpdCgiICIpLGZ1bmN0aW9uKGQpe3ZhciBmLGc9YSgpLGg9ITA7YS5lYWNoKHRoaXMuc3BsaXQoIiwiKSxmdW5jdGlvbihkLGUpe3ZhciBmLGksaixrLGwsbSxvLHEscjsidGl0bGUiPT1lPyhnPWcuYWRkKGEoIjxoMj4mbmJzcDs8L2gyPiIpKSxoPSExKTooZj1iLmdldFZpZXdTcGVjKGUpLGY/KGk9ZnVuY3Rpb24oKXtiLmNoYW5nZVZpZXcoZSl9LHAucHVzaChlKSxqPWYuYnV0dG9uVGV4dE92ZXJyaWRlLGs9Zi5idXR0b25UZXh0RGVmYXVsdCk6YltlXSYmKGk9ZnVuY3Rpb24oKXtiW2VdKCl9LGo9KGIub3ZlcnJpZGVzLmJ1dHRvblRleHR8fHt9KVtlXSxrPWMuYnV0dG9uVGV4dFtlXSksaSYmKGw9Yy50aGVtZUJ1dHRvbkljb25zW2VdLG09Yy5idXR0b25JY29uc1tlXSxvPWo/UihqKTpsJiZjLnRoZW1lPyI8c3BhbiBjbGFzcz0ndWktaWNvbiB1aS1pY29uLSIrbCsiJz48L3NwYW4+IjptJiYhYy50aGVtZT8iPHNwYW4gY2xhc3M9J2ZjLWljb24gZmMtaWNvbi0iK20rIic+PC9zcGFuPiI6UihrKSxxPVsiZmMtIitlKyItYnV0dG9uIixuKyItYnV0dG9uIixuKyItc3RhdGUtZGVmYXVsdCJdLHI9YSgnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSInK3Euam9pbigiICIpKyciPicrbysiPC9idXR0b24+IikuY2xpY2soZnVuY3Rpb24oKXtyLmhhc0NsYXNzKG4rIi1zdGF0ZS1kaXNhYmxlZCIpfHwoaSgpLChyLmhhc0NsYXNzKG4rIi1zdGF0ZS1hY3RpdmUiKXx8ci5oYXNDbGFzcyhuKyItc3RhdGUtZGlzYWJsZWQiKSkmJnIucmVtb3ZlQ2xhc3MobisiLXN0YXRlLWhvdmVyIikpfSkubW91c2Vkb3duKGZ1bmN0aW9uKCl7ci5ub3QoIi4iK24rIi1zdGF0ZS1hY3RpdmUiKS5ub3QoIi4iK24rIi1zdGF0ZS1kaXNhYmxlZCIpLmFkZENsYXNzKG4rIi1zdGF0ZS1kb3duIil9KS5tb3VzZXVwKGZ1bmN0aW9uKCl7ci5yZW1vdmVDbGFzcyhuKyItc3RhdGUtZG93biIpfSkuaG92ZXIoZnVuY3Rpb24oKXtyLm5vdCgiLiIrbisiLXN0YXRlLWFjdGl2ZSIpLm5vdCgiLiIrbisiLXN0YXRlLWRpc2FibGVkIikuYWRkQ2xhc3MobisiLXN0YXRlLWhvdmVyIil9LGZ1bmN0aW9uKCl7ci5yZW1vdmVDbGFzcyhuKyItc3RhdGUtaG92ZXIiKS5yZW1vdmVDbGFzcyhuKyItc3RhdGUtZG93biIpfSksZz1nLmFkZChyKSkpfSksaCYmZy5maXJzdCgpLmFkZENsYXNzKG4rIi1jb3JuZXItbGVmdCIpLmVuZCgpLmxhc3QoKS5hZGRDbGFzcyhuKyItY29ybmVyLXJpZ2h0IikuZW5kKCksZy5sZW5ndGg+MT8oZj1hKCI8ZGl2Lz4iKSxoJiZmLmFkZENsYXNzKCJmYy1idXR0b24tZ3JvdXAiKSxmLmFwcGVuZChnKSxlLmFwcGVuZChmKSk6ZS5hcHBlbmQoZyl9KSxlfWZ1bmN0aW9uIGcoYSl7by5maW5kKCJoMiIpLnRleHQoYSl9ZnVuY3Rpb24gaChhKXtvLmZpbmQoIi5mYy0iK2ErIi1idXR0b24iKS5hZGRDbGFzcyhuKyItc3RhdGUtYWN0aXZlIil9ZnVuY3Rpb24gaShhKXtvLmZpbmQoIi5mYy0iK2ErIi1idXR0b24iKS5yZW1vdmVDbGFzcyhuKyItc3RhdGUtYWN0aXZlIil9ZnVuY3Rpb24gaihhKXtvLmZpbmQoIi5mYy0iK2ErIi1idXR0b24iKS5hdHRyKCJkaXNhYmxlZCIsImRpc2FibGVkIikuYWRkQ2xhc3MobisiLXN0YXRlLWRpc2FibGVkIil9ZnVuY3Rpb24gayhhKXtvLmZpbmQoIi5mYy0iK2ErIi1idXR0b24iKS5yZW1vdmVBdHRyKCJkaXNhYmxlZCIpLnJlbW92ZUNsYXNzKG4rIi1zdGF0ZS1kaXNhYmxlZCIpfWZ1bmN0aW9uIGwoKXtyZXR1cm4gcH12YXIgbT10aGlzO20ucmVuZGVyPWQsbS5yZW1vdmVFbGVtZW50PWUsbS51cGRhdGVUaXRsZT1nLG0uYWN0aXZhdGVCdXR0b249aCxtLmRlYWN0aXZhdGVCdXR0b249aSxtLmRpc2FibGVCdXR0b249aixtLmVuYWJsZUJ1dHRvbj1rLG0uZ2V0Vmlld3NXaXRoQnV0dG9ucz1sO3ZhciBuLG89YSgpLHA9W119ZnVuY3Rpb24gSGEoYyl7ZnVuY3Rpb24gZChhLGIpe3JldHVybiFOfHxhLmNsb25lKCkuc3RyaXBab25lKCk8Ti5jbG9uZSgpLnN0cmlwWm9uZSgpfHxiLmNsb25lKCkuc3RyaXBab25lKCk+Ui5jbG9uZSgpLnN0cmlwWm9uZSgpfWZ1bmN0aW9uIGUoYSxiKXtOPWEsUj1iLFg9W107dmFyIGM9KytWLGQ9VS5sZW5ndGg7Vz1kO2Zvcih2YXIgZT0wO2Q+ZTtlKyspZihVW2VdLGMpfWZ1bmN0aW9uIGYoYixjKXtnKGIsZnVuY3Rpb24oZCl7dmFyIGUsZixnLGg9YS5pc0FycmF5KGIuZXZlbnRzKTtpZihjPT1WKXtpZihkKWZvcihlPTA7ZTxkLmxlbmd0aDtlKyspZj1kW2VdLGc9aD9mOnMoZixiKSxnJiZYLnB1c2guYXBwbHkoWCx4KGcpKTtXLS0sV3x8UyhYKX19KX1mdW5jdGlvbiBnKGIsZCl7dmFyIGUsZixoPUphLnNvdXJjZUZldGNoZXJzO2ZvcihlPTA7ZTxoLmxlbmd0aDtlKyspe2lmKGY9aFtlXS5jYWxsKE0sYixOLmNsb25lKCksUi5jbG9uZSgpLGMudGltZXpvbmUsZCksZj09PSEwKXJldHVybjtpZigib2JqZWN0Ij09dHlwZW9mIGYpcmV0dXJuIHZvaWQgZyhmLGQpfXZhciBpPWIuZXZlbnRzO2lmKGkpYS5pc0Z1bmN0aW9uKGkpPyhNLnB1c2hMb2FkaW5nKCksaS5jYWxsKE0sTi5jbG9uZSgpLFIuY2xvbmUoKSxjLnRpbWV6b25lLGZ1bmN0aW9uKGEpe2QoYSksTS5wb3BMb2FkaW5nKCl9KSk6YS5pc0FycmF5KGkpP2QoaSk6ZCgpO2Vsc2V7dmFyIGo9Yi51cmw7aWYoail7dmFyIGssbD1iLnN1Y2Nlc3MsbT1iLmVycm9yLG49Yi5jb21wbGV0ZTtrPWEuaXNGdW5jdGlvbihiLmRhdGEpP2IuZGF0YSgpOmIuZGF0YTt2YXIgbz1hLmV4dGVuZCh7fSxrfHx7fSkscD1RKGIuc3RhcnRQYXJhbSxjLnN0YXJ0UGFyYW0pLHE9UShiLmVuZFBhcmFtLGMuZW5kUGFyYW0pLHI9UShiLnRpbWV6b25lUGFyYW0sYy50aW1lem9uZVBhcmFtKTtwJiYob1twXT1OLmZvcm1hdCgpKSxxJiYob1txXT1SLmZvcm1hdCgpKSxjLnRpbWV6b25lJiYibG9jYWwiIT1jLnRpbWV6b25lJiYob1tyXT1jLnRpbWV6b25lKSxNLnB1c2hMb2FkaW5nKCksYS5hamF4KGEuZXh0ZW5kKHt9LG9iLGIse2RhdGE6byxzdWNjZXNzOmZ1bmN0aW9uKGIpe2I9Ynx8W107dmFyIGM9UChsLHRoaXMsYXJndW1lbnRzKTthLmlzQXJyYXkoYykmJihiPWMpLGQoYil9LGVycm9yOmZ1bmN0aW9uKCl7UChtLHRoaXMsYXJndW1lbnRzKSxkKCl9LGNvbXBsZXRlOmZ1bmN0aW9uKCl7UChuLHRoaXMsYXJndW1lbnRzKSxNLnBvcExvYWRpbmcoKX19KSl9ZWxzZSBkKCl9fWZ1bmN0aW9uIGgoYSl7dmFyIGI9aShhKTtiJiYoVS5wdXNoKGIpLFcrKyxmKGIsVikpfWZ1bmN0aW9uIGkoYil7dmFyIGMsZCxlPUphLnNvdXJjZU5vcm1hbGl6ZXJzO2lmKGEuaXNGdW5jdGlvbihiKXx8YS5pc0FycmF5KGIpP2M9e2V2ZW50czpifToic3RyaW5nIj09dHlwZW9mIGI/Yz17dXJsOmJ9OiJvYmplY3QiPT10eXBlb2YgYiYmKGM9YS5leHRlbmQoe30sYikpLGMpe2ZvcihjLmNsYXNzTmFtZT8ic3RyaW5nIj09dHlwZW9mIGMuY2xhc3NOYW1lJiYoYy5jbGFzc05hbWU9Yy5jbGFzc05hbWUuc3BsaXQoL1xzKy8pKTpjLmNsYXNzTmFtZT1bXSxhLmlzQXJyYXkoYy5ldmVudHMpJiYoYy5vcmlnQXJyYXk9Yy5ldmVudHMsYy5ldmVudHM9YS5tYXAoYy5ldmVudHMsZnVuY3Rpb24oYSl7cmV0dXJuIHMoYSxjKX0pKSxkPTA7ZDxlLmxlbmd0aDtkKyspZVtkXS5jYWxsKE0sYyk7cmV0dXJuIGN9fWZ1bmN0aW9uIGooYil7VT1hLmdyZXAoVSxmdW5jdGlvbihhKXtyZXR1cm4hayhhLGIpfSksWD1hLmdyZXAoWCxmdW5jdGlvbihhKXtyZXR1cm4hayhhLnNvdXJjZSxiKX0pLFMoWCl9ZnVuY3Rpb24gayhhLGIpe3JldHVybiBhJiZiJiZsKGEpPT1sKGIpfWZ1bmN0aW9uIGwoYSl7cmV0dXJuKCJvYmplY3QiPT10eXBlb2YgYT9hLm9yaWdBcnJheXx8YS5nb29nbGVDYWxlbmRhcklkfHxhLnVybHx8YS5ldmVudHM6bnVsbCl8fGF9ZnVuY3Rpb24gbShhKXthLnN0YXJ0PU0ubW9tZW50KGEuc3RhcnQpLGEuZW5kP2EuZW5kPU0ubW9tZW50KGEuZW5kKTphLmVuZD1udWxsLHkoYSxuKGEpKSxTKFgpfWZ1bmN0aW9uIG4oYil7dmFyIGM9e307cmV0dXJuIGEuZWFjaChiLGZ1bmN0aW9uKGEsYil7byhhKSYmdm9pZCAwIT09YiYmTyhiKSYmKGNbYV09Yil9KSxjfWZ1bmN0aW9uIG8oYSl7cmV0dXJuIS9eX3xeKGlkfGFsbERheXxzdGFydHxlbmQpJC8udGVzdChhKX1mdW5jdGlvbiBwKGEsYil7dmFyIGMsZCxlLGY9cyhhKTtpZihmKXtmb3IoYz14KGYpLGQ9MDtkPGMubGVuZ3RoO2QrKyllPWNbZF0sZS5zb3VyY2V8fChiJiYoVC5ldmVudHMucHVzaChlKSxlLnNvdXJjZT1UKSxYLnB1c2goZSkpO3JldHVybiBTKFgpLGN9cmV0dXJuW119ZnVuY3Rpb24gcShiKXt2YXIgYyxkO2ZvcihudWxsPT1iP2I9ZnVuY3Rpb24oKXtyZXR1cm4hMH06YS5pc0Z1bmN0aW9uKGIpfHwoYz1iKyIiLGI9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX2lkPT1jfSksWD1hLmdyZXAoWCxiLCEwKSxkPTA7ZDxVLmxlbmd0aDtkKyspYS5pc0FycmF5KFVbZF0uZXZlbnRzKSYmKFVbZF0uZXZlbnRzPWEuZ3JlcChVW2RdLmV2ZW50cyxiLCEwKSk7UyhYKX1mdW5jdGlvbiByKGIpe3JldHVybiBhLmlzRnVuY3Rpb24oYik/YS5ncmVwKFgsYik6bnVsbCE9Yj8oYis9IiIsYS5ncmVwKFgsZnVuY3Rpb24oYSl7cmV0dXJuIGEuX2lkPT1ifSkpOlh9ZnVuY3Rpb24gcyhkLGUpe3ZhciBmLGcsaCxpPXt9O2lmKGMuZXZlbnREYXRhVHJhbnNmb3JtJiYoZD1jLmV2ZW50RGF0YVRyYW5zZm9ybShkKSksZSYmZS5ldmVudERhdGFUcmFuc2Zvcm0mJihkPWUuZXZlbnREYXRhVHJhbnNmb3JtKGQpKSxhLmV4dGVuZChpLGQpLGUmJihpLnNvdXJjZT1lKSxpLl9pZD1kLl9pZHx8KHZvaWQgMD09PWQuaWQ/Il9mYyIrcGIrKzpkLmlkKyIiKSxkLmNsYXNzTmFtZT8ic3RyaW5nIj09dHlwZW9mIGQuY2xhc3NOYW1lP2kuY2xhc3NOYW1lPWQuY2xhc3NOYW1lLnNwbGl0KC9ccysvKTppLmNsYXNzTmFtZT1kLmNsYXNzTmFtZTppLmNsYXNzTmFtZT1bXSxmPWQuc3RhcnR8fGQuZGF0ZSxnPWQuZW5kLEkoZikmJihmPWIuZHVyYXRpb24oZikpLEkoZykmJihnPWIuZHVyYXRpb24oZykpLGQuZG93fHxiLmlzRHVyYXRpb24oZil8fGIuaXNEdXJhdGlvbihnKSlpLnN0YXJ0PWY/Yi5kdXJhdGlvbihmKTpudWxsLGkuZW5kPWc/Yi5kdXJhdGlvbihnKTpudWxsLGkuX3JlY3VycmluZz0hMDtlbHNle2lmKGYmJihmPU0ubW9tZW50KGYpLCFmLmlzVmFsaWQoKSkpcmV0dXJuITE7ZyYmKGc9TS5tb21lbnQoZyksZy5pc1ZhbGlkKCl8fChnPW51bGwpKSxoPWQuYWxsRGF5LHZvaWQgMD09PWgmJihoPVEoZT9lLmFsbERheURlZmF1bHQ6dm9pZCAwLGMuYWxsRGF5RGVmYXVsdCkpLHQoZixnLGgsaSl9cmV0dXJuIGl9ZnVuY3Rpb24gdChhLGIsYyxkKXtkLnN0YXJ0PWEsZC5lbmQ9YixkLmFsbERheT1jLHUoZCksSWEoZCl9ZnVuY3Rpb24gdShhKXt2KGEpLGEuZW5kJiYhYS5lbmQuaXNBZnRlcihhLnN0YXJ0KSYmKGEuZW5kPW51bGwpLGEuZW5kfHwoYy5mb3JjZUV2ZW50RHVyYXRpb24/YS5lbmQ9TS5nZXREZWZhdWx0RXZlbnRFbmQoYS5hbGxEYXksYS5zdGFydCk6YS5lbmQ9bnVsbCl9ZnVuY3Rpb24gdihhKXtudWxsPT1hLmFsbERheSYmKGEuYWxsRGF5PSEoYS5zdGFydC5oYXNUaW1lKCl8fGEuZW5kJiZhLmVuZC5oYXNUaW1lKCkpKSxhLmFsbERheT8oYS5zdGFydC5zdHJpcFRpbWUoKSxhLmVuZCYmYS5lbmQuc3RyaXBUaW1lKCkpOihhLnN0YXJ0Lmhhc1RpbWUoKXx8KGEuc3RhcnQ9TS5yZXpvbmVEYXRlKGEuc3RhcnQpKSxhLmVuZCYmIWEuZW5kLmhhc1RpbWUoKSYmKGEuZW5kPU0ucmV6b25lRGF0ZShhLmVuZCkpKX1mdW5jdGlvbiB3KGIpe3ZhciBjO3JldHVybiBiLmVuZHx8KGM9Yi5hbGxEYXksbnVsbD09YyYmKGM9IWIuc3RhcnQuaGFzVGltZSgpKSxiPWEuZXh0ZW5kKHt9LGIpLGIuZW5kPU0uZ2V0RGVmYXVsdEV2ZW50RW5kKGMsYi5zdGFydCkpLGJ9ZnVuY3Rpb24geChiLGMsZCl7dmFyIGUsZixnLGgsaSxqLGssbCxtLG49W107aWYoYz1jfHxOLGQ9ZHx8UixiKWlmKGIuX3JlY3VycmluZyl7aWYoZj1iLmRvdylmb3IoZT17fSxnPTA7ZzxmLmxlbmd0aDtnKyspZVtmW2ddXT0hMDtmb3IoaD1jLmNsb25lKCkuc3RyaXBUaW1lKCk7aC5pc0JlZm9yZShkKTspKCFlfHxlW2guZGF5KCldKSYmKGk9Yi5zdGFydCxqPWIuZW5kLGs9aC5jbG9uZSgpLGw9bnVsbCxpJiYoaz1rLnRpbWUoaSkpLGomJihsPWguY2xvbmUoKS50aW1lKGopKSxtPWEuZXh0ZW5kKHt9LGIpLHQoayxsLCFpJiYhaixtKSxuLnB1c2gobSkpLGguYWRkKDEsImRheXMiKX1lbHNlIG4ucHVzaChiKTtyZXR1cm4gbn1mdW5jdGlvbiB5KGIsYyxkKXtmdW5jdGlvbiBlKGEsYil7cmV0dXJuIGQ/RChhLGIsZCk6Yy5hbGxEYXk/QyhhLGIpOkIoYSxiKX12YXIgZixnLGgsaSxqLGssbD17fTtyZXR1cm4gYz1jfHx7fSxjLnN0YXJ0fHwoYy5zdGFydD1iLnN0YXJ0LmNsb25lKCkpLHZvaWQgMD09PWMuZW5kJiYoYy5lbmQ9Yi5lbmQ/Yi5lbmQuY2xvbmUoKTpudWxsKSxudWxsPT1jLmFsbERheSYmKGMuYWxsRGF5PWIuYWxsRGF5KSx1KGMpLGY9e3N0YXJ0OmIuX3N0YXJ0LmNsb25lKCksZW5kOmIuX2VuZD9iLl9lbmQuY2xvbmUoKTpNLmdldERlZmF1bHRFdmVudEVuZChiLl9hbGxEYXksYi5fc3RhcnQpLGFsbERheTpjLmFsbERheX0sdShmKSxnPW51bGwhPT1iLl9lbmQmJm51bGw9PT1jLmVuZCxoPWUoYy5zdGFydCxmLnN0YXJ0KSxjLmVuZD8oaT1lKGMuZW5kLGYuZW5kKSxqPWkuc3VidHJhY3QoaCkpOmo9bnVsbCxhLmVhY2goYyxmdW5jdGlvbihhLGIpe28oYSkmJnZvaWQgMCE9PWImJihsW2FdPWIpfSksaz16KHIoYi5faWQpLGcsYy5hbGxEYXksaCxqLGwpLHtkYXRlRGVsdGE6aCxkdXJhdGlvbkRlbHRhOmosdW5kbzprfX1mdW5jdGlvbiB6KGIsYyxkLGUsZixnKXt2YXIgaD1NLmdldElzQW1iaWdUaW1lem9uZSgpLGk9W107cmV0dXJuIGUmJiFlLnZhbHVlT2YoKSYmKGU9bnVsbCksZiYmIWYudmFsdWVPZigpJiYoZj1udWxsKSxhLmVhY2goYixmdW5jdGlvbihiLGope3ZhciBrLGw7az17c3RhcnQ6ai5zdGFydC5jbG9uZSgpLGVuZDpqLmVuZD9qLmVuZC5jbG9uZSgpOm51bGwsYWxsRGF5OmouYWxsRGF5fSxhLmVhY2goZyxmdW5jdGlvbihhKXtrW2FdPWpbYV19KSxsPXtzdGFydDpqLl9zdGFydCxlbmQ6ai5fZW5kLGFsbERheTpkfSx1KGwpLGM/bC5lbmQ9bnVsbDpmJiYhbC5lbmQmJihsLmVuZD1NLmdldERlZmF1bHRFdmVudEVuZChsLmFsbERheSxsLnN0YXJ0KSksZSYmKGwuc3RhcnQuYWRkKGUpLGwuZW5kJiZsLmVuZC5hZGQoZSkpLGYmJmwuZW5kLmFkZChmKSxoJiYhbC5hbGxEYXkmJihlfHxmKSYmKGwuc3RhcnQuc3RyaXBab25lKCksbC5lbmQmJmwuZW5kLnN0cmlwWm9uZSgpKSxhLmV4dGVuZChqLGcsbCksSWEoaiksaS5wdXNoKGZ1bmN0aW9uKCl7YS5leHRlbmQoaixrKSxJYShqKX0pfSksZnVuY3Rpb24oKXtmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKylpW2FdKCl9fWZ1bmN0aW9uIEEoYil7dmFyIGQsZT1jLmJ1c2luZXNzSG91cnMsZj17Y2xhc3NOYW1lOiJmYy1ub25idXNpbmVzcyIsc3RhcnQ6IjA5OjAwIixlbmQ6IjE3OjAwIixkb3c6WzEsMiwzLDQsNV0scmVuZGVyaW5nOiJpbnZlcnNlLWJhY2tncm91bmQifSxnPU0uZ2V0VmlldygpO3JldHVybiBlJiYoZD1hLmV4dGVuZCh7fSxmLCJvYmplY3QiPT10eXBlb2YgZT9lOnt9KSksZD8oYiYmKGQuc3RhcnQ9bnVsbCxkLmVuZD1udWxsKSx4KHMoZCksZy5zdGFydCxnLmVuZCkpOltdfWZ1bmN0aW9uIEUoYSxiKXt2YXIgZD1iLnNvdXJjZXx8e30sZT1RKGIuY29uc3RyYWludCxkLmNvbnN0cmFpbnQsYy5ldmVudENvbnN0cmFpbnQpLGY9UShiLm92ZXJsYXAsZC5vdmVybGFwLGMuZXZlbnRPdmVybGFwKTtyZXR1cm4gYT13KGEpLEgoYSxlLGYsYil9ZnVuY3Rpb24gRihhKXtyZXR1cm4gSChhLGMuc2VsZWN0Q29uc3RyYWludCxjLnNlbGVjdE92ZXJsYXApfWZ1bmN0aW9uIEcoYixjKXt2YXIgZCxlO3JldHVybiBjJiYoZD1hLmV4dGVuZCh7fSxjLGIpLGU9eChzKGQpKVswXSksZT9FKGIsZSk6KGI9dyhiKSxGKGIpKX1mdW5jdGlvbiBIKGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosaztpZihiPWEuZXh0ZW5kKHt9LGIpLGIuc3RhcnQ9Yi5zdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpLGIuZW5kPWIuZW5kLmNsb25lKCkuc3RyaXBab25lKCksbnVsbCE9Yyl7Zm9yKGY9SihjKSxnPSExLGk9MDtpPGYubGVuZ3RoO2krKylpZihLKGZbaV0sYikpe2c9ITA7YnJlYWt9aWYoIWcpcmV0dXJuITF9Zm9yKGg9TS5nZXRQZWVyRXZlbnRzKGUsYiksaT0wO2k8aC5sZW5ndGg7aSsrKWlmKGo9aFtpXSxMKGosYikpe2lmKGQ9PT0hMSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZCYmIWQoaixlKSlyZXR1cm4hMTtpZihlKXtpZihrPVEoai5vdmVybGFwLChqLnNvdXJjZXx8e30pLm92ZXJsYXApLGs9PT0hMSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgayYmIWsoZSxqKSlyZXR1cm4hMX19cmV0dXJuITB9ZnVuY3Rpb24gSihhKXtyZXR1cm4iYnVzaW5lc3NIb3VycyI9PT1hP0EoKToib2JqZWN0Ij09dHlwZW9mIGE/eChzKGEpKTpyKGEpfWZ1bmN0aW9uIEsoYSxiKXt2YXIgYz1hLnN0YXJ0LmNsb25lKCkuc3RyaXBab25lKCksZD1NLmdldEV2ZW50RW5kKGEpLnN0cmlwWm9uZSgpO3JldHVybiBiLnN0YXJ0Pj1jJiZiLmVuZDw9ZH1mdW5jdGlvbiBMKGEsYil7dmFyIGM9YS5zdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpLGQ9TS5nZXRFdmVudEVuZChhKS5zdHJpcFpvbmUoKTtyZXR1cm4gYi5zdGFydDxkJiZiLmVuZD5jfXZhciBNPXRoaXM7TS5pc0ZldGNoTmVlZGVkPWQsTS5mZXRjaEV2ZW50cz1lLE0uYWRkRXZlbnRTb3VyY2U9aCxNLnJlbW92ZUV2ZW50U291cmNlPWosTS51cGRhdGVFdmVudD1tLE0ucmVuZGVyRXZlbnQ9cCxNLnJlbW92ZUV2ZW50cz1xLE0uY2xpZW50RXZlbnRzPXIsTS5tdXRhdGVFdmVudD15LE0ubm9ybWFsaXplRXZlbnRSYW5nZT11LE0ubm9ybWFsaXplRXZlbnRSYW5nZVRpbWVzPXYsTS5lbnN1cmVWaXNpYmxlRXZlbnRSYW5nZT13O3ZhciBOLFIsUz1NLnJlcG9ydEV2ZW50cyxUPXtldmVudHM6W119LFU9W1RdLFY9MCxXPTAsWD1bXTthLmVhY2goKGMuZXZlbnRzP1tjLmV2ZW50c106W10pLmNvbmNhdChjLmV2ZW50U291cmNlc3x8W10pLGZ1bmN0aW9uKGEsYil7dmFyIGM9aShiKTtjJiZVLnB1c2goYyl9KSxNLmdldEJ1c2luZXNzSG91cnNFdmVudHM9QSxNLmlzRXZlbnRSYW5nZUFsbG93ZWQ9RSxNLmlzU2VsZWN0aW9uUmFuZ2VBbGxvd2VkPUYsTS5pc0V4dGVybmFsRHJvcFJhbmdlQWxsb3dlZD1HLE0uZ2V0RXZlbnRDYWNoZT1mdW5jdGlvbigpe3JldHVybiBYfX1mdW5jdGlvbiBJYShhKXthLl9hbGxEYXk9YS5hbGxEYXksYS5fc3RhcnQ9YS5zdGFydC5jbG9uZSgpLGEuX2VuZD1hLmVuZD9hLmVuZC5jbG9uZSgpOm51bGx9dmFyIEphPWEuZnVsbENhbGVuZGFyPXt2ZXJzaW9uOiIyLjMuMiJ9LEthPUphLnZpZXdzPXt9O2EuZm4uZnVsbENhbGVuZGFyPWZ1bmN0aW9uKGIpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxkPXRoaXM7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlLGYpe3ZhciBnLGg9YShmKSxpPWguZGF0YSgiZnVsbENhbGVuZGFyIik7InN0cmluZyI9PXR5cGVvZiBiP2kmJmEuaXNGdW5jdGlvbihpW2JdKSYmKGc9aVtiXS5hcHBseShpLGMpLGV8fChkPWcpLCJkZXN0cm95Ij09PWImJmgucmVtb3ZlRGF0YSgiZnVsbENhbGVuZGFyIikpOml8fChpPW5ldyBqYihoLGIpLGguZGF0YSgiZnVsbENhbGVuZGFyIixpKSxpLnJlbmRlcigpKX0pLGR9O3ZhciBMYT1bImhlYWRlciIsImJ1dHRvblRleHQiLCJidXR0b25JY29ucyIsInRoZW1lQnV0dG9uSWNvbnMiXTtKYS5pbnRlcnNlY3Rpb25Ub1NlZz1BLEphLmFwcGx5QWxsPVAsSmEuZGVib3VuY2U9WSxKYS5pc0ludD1XLEphLmh0bWxFc2NhcGU9UixKYS5jc3NUb1N0cj1ULEphLnByb3h5PVgsSmEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyPVUsSmEuZ2V0Q2xpZW50UmVjdD1wLEphLmdldENvbnRlbnRSZWN0PXEsSmEuZ2V0U2Nyb2xsYmFyV2lkdGhzPXI7dmFyIE1hPW51bGw7SmEuY29tcHV0ZUludGVydmFsVW5pdD1FLEphLmR1cmF0aW9uSGFzVGltZT1HO3ZhciBOYSxPYSxQYSxRYT1bInN1biIsIm1vbiIsInR1ZSIsIndlZCIsInRodSIsImZyaSIsInNhdCJdLFJhPVsieWVhciIsIm1vbnRoIiwid2VlayIsImRheSIsImhvdXIiLCJtaW51dGUiLCJzZWNvbmQiLCJtaWxsaXNlY29uZCJdLFNhPXt9Lmhhc093blByb3BlcnR5LFRhPS9eXHMqXGR7NH0tXGRcZCQvLFVhPS9eXHMqXGR7NH0tKD86KFxkXGQtXGRcZCl8KFdcZFxkJCl8KFdcZFxkLVxkKXwoXGRcZFxkKSkoKFR8ICkoXGRcZCg6XGRcZCg6XGRcZChcLlxkKyk/KT8pPyk/KT8kLyxWYT1iLmZuLFdhPWEuZXh0ZW5kKHt9LFZhKTtKYS5tb21lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gWihhcmd1bWVudHMpfSxKYS5tb21lbnQudXRjPWZ1bmN0aW9uKCl7dmFyIGE9Wihhcmd1bWVudHMsITApO3JldHVybiBhLmhhc1RpbWUoKSYmYS51dGMoKSxhfSxKYS5tb21lbnQucGFyc2Vab25lPWZ1bmN0aW9uKCl7cmV0dXJuIFooYXJndW1lbnRzLCEwLCEwKX0sVmEuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgYT1XYS5jbG9uZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIF8odGhpcyxhKSx0aGlzLl9mdWxsQ2FsZW5kYXImJihhLl9mdWxsQ2FsZW5kYXI9ITApLGF9LFZhLndlZWs9VmEud2Vla3M9ZnVuY3Rpb24oYSl7dmFyIGI9KHRoaXMuX2xvY2FsZXx8dGhpcy5fbGFuZykuX2Z1bGxDYWxlbmRhcl93ZWVrQ2FsYztyZXR1cm4gbnVsbD09YSYmImZ1bmN0aW9uIj09dHlwZW9mIGI/Yih0aGlzKToiSVNPIj09PWI/V2EuaXNvV2Vlay5hcHBseSh0aGlzLGFyZ3VtZW50cyk6V2Eud2Vlay5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LFZhLnRpbWU9ZnVuY3Rpb24oYSl7aWYoIXRoaXMuX2Z1bGxDYWxlbmRhcilyZXR1cm4gV2EudGltZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYobnVsbD09YSlyZXR1cm4gYi5kdXJhdGlvbih7aG91cnM6dGhpcy5ob3VycygpLG1pbnV0ZXM6dGhpcy5taW51dGVzKCksc2Vjb25kczp0aGlzLnNlY29uZHMoKSxtaWxsaXNlY29uZHM6dGhpcy5taWxsaXNlY29uZHMoKX0pO3RoaXMuX2FtYmlnVGltZT0hMSxiLmlzRHVyYXRpb24oYSl8fGIuaXNNb21lbnQoYSl8fChhPWIuZHVyYXRpb24oYSkpO3ZhciBjPTA7cmV0dXJuIGIuaXNEdXJhdGlvbihhKSYmKGM9MjQqTWF0aC5mbG9vcihhLmFzRGF5cygpKSksdGhpcy5ob3VycyhjK2EuaG91cnMoKSkubWludXRlcyhhLm1pbnV0ZXMoKSkuc2Vjb25kcyhhLnNlY29uZHMoKSkubWlsbGlzZWNvbmRzKGEubWlsbGlzZWNvbmRzKCkpfSxWYS5zdHJpcFRpbWU9ZnVuY3Rpb24oKXt2YXIgYTtyZXR1cm4gdGhpcy5fYW1iaWdUaW1lfHwoYT10aGlzLnRvQXJyYXkoKSx0aGlzLnV0YygpLE9hKHRoaXMsYS5zbGljZSgwLDMpKSx0aGlzLl9hbWJpZ1RpbWU9ITAsdGhpcy5fYW1iaWdab25lPSEwKSx0aGlzfSxWYS5oYXNUaW1lPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX2FtYmlnVGltZX0sVmEuc3RyaXBab25lPWZ1bmN0aW9uKCl7dmFyIGEsYjtyZXR1cm4gdGhpcy5fYW1iaWdab25lfHwoYT10aGlzLnRvQXJyYXkoKSxiPXRoaXMuX2FtYmlnVGltZSx0aGlzLnV0YygpLE9hKHRoaXMsYSksdGhpcy5fYW1iaWdUaW1lPWJ8fCExLHRoaXMuX2FtYmlnWm9uZT0hMCksdGhpc30sVmEuaGFzWm9uZT1mdW5jdGlvbigpe3JldHVybiF0aGlzLl9hbWJpZ1pvbmV9LFZhLmxvY2FsPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50b0FycmF5KCksYj10aGlzLl9hbWJpZ1pvbmU7cmV0dXJuIFdhLmxvY2FsLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9hbWJpZ1RpbWU9ITEsdGhpcy5fYW1iaWdab25lPSExLGImJlBhKHRoaXMsYSksdGhpc30sVmEudXRjPWZ1bmN0aW9uKCl7cmV0dXJuIFdhLnV0Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fYW1iaWdUaW1lPSExLHRoaXMuX2FtYmlnWm9uZT0hMSx0aGlzfSxhLmVhY2goWyJ6b25lIiwidXRjT2Zmc2V0Il0sZnVuY3Rpb24oYSxiKXtXYVtiXSYmKFZhW2JdPWZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hJiYodGhpcy5fYW1iaWdUaW1lPSExLHRoaXMuX2FtYmlnWm9uZT0hMSksV2FbYl0uYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9KSxWYS5mb3JtYXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZnVsbENhbGVuZGFyJiZhcmd1bWVudHNbMF0/Y2EodGhpcyxhcmd1bWVudHNbMF0pOnRoaXMuX2FtYmlnVGltZT9iYSh0aGlzLCJZWVlZLU1NLUREIik6dGhpcy5fYW1iaWdab25lP2JhKHRoaXMsIllZWVktTU0tRERbVF1ISDptbTpzcyIpOldhLmZvcm1hdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LFZhLnRvSVNPU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FtYmlnVGltZT9iYSh0aGlzLCJZWVlZLU1NLUREIik6dGhpcy5fYW1iaWdab25lP2JhKHRoaXMsIllZWVktTU0tRERbVF1ISDptbTpzcyIpOldhLnRvSVNPU3RyaW5nLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sVmEuaXNXaXRoaW49ZnVuY3Rpb24oYSxiKXt2YXIgYz0kKFt0aGlzLGEsYl0pO3JldHVybiBjWzBdPj1jWzFdJiZjWzBdPGNbMl19LFZhLmlzU2FtZT1mdW5jdGlvbihhLGIpe3ZhciBjO3JldHVybiB0aGlzLl9mdWxsQ2FsZW5kYXI/Yj8oYz0kKFt0aGlzLGFdLCEwKSxXYS5pc1NhbWUuY2FsbChjWzBdLGNbMV0sYikpOihhPUphLm1vbWVudC5wYXJzZVpvbmUoYSksV2EuaXNTYW1lLmNhbGwodGhpcyxhKSYmQm9vbGVhbih0aGlzLl9hbWJpZ1RpbWUpPT09Qm9vbGVhbihhLl9hbWJpZ1RpbWUpJiZCb29sZWFuKHRoaXMuX2FtYmlnWm9uZSk9PT1Cb29sZWFuKGEuX2FtYmlnWm9uZSkpOldhLmlzU2FtZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGEuZWFjaChbImlzQmVmb3JlIiwiaXNBZnRlciJdLGZ1bmN0aW9uKGEsYil7VmFbYl09ZnVuY3Rpb24oYSxjKXt2YXIgZDtyZXR1cm4gdGhpcy5fZnVsbENhbGVuZGFyPyhkPSQoW3RoaXMsYV0pLFdhW2JdLmNhbGwoZFswXSxkWzFdLGMpKTpXYVtiXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSksTmE9Il9kImluIGIoKSYmInVwZGF0ZU9mZnNldCJpbiBiLE9hPU5hP2Z1bmN0aW9uKGEsYyl7YS5fZC5zZXRUaW1lKERhdGUuVVRDLmFwcGx5KERhdGUsYykpLGIudXBkYXRlT2Zmc2V0KGEsITEpfTphYSxQYT1OYT9mdW5jdGlvbihhLGMpe2EuX2Quc2V0VGltZSgrbmV3IERhdGUoY1swXXx8MCxjWzFdfHwwLGNbMl18fDAsY1szXXx8MCxjWzRdfHwwLGNbNV18fDAsY1s2XXx8MCkpLGIudXBkYXRlT2Zmc2V0KGEsITEpfTphYTt2YXIgWGE9e3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIGJhKGEsImEiKS5jaGFyQXQoMCl9LFQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGJhKGEsIkEiKS5jaGFyQXQoMCl9fTtKYS5mb3JtYXRSYW5nZT1mYTt2YXIgWWE9e1k6InllYXIiLE06Im1vbnRoIixEOiJkYXkiLGQ6ImRheSIsQToic2Vjb25kIixhOiJzZWNvbmQiLFQ6InNlY29uZCIsdDoic2Vjb25kIixIOiJzZWNvbmQiLGg6InNlY29uZCIsbToic2Vjb25kIixzOiJzZWNvbmQifSxaYT17fTtKYS5DbGFzcz1rYSxrYS5leHRlbmQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz10aGlzO3JldHVybiBhPWF8fHt9LE4oYSwiY29uc3RydWN0b3IiKSYmKGI9YS5jb25zdHJ1Y3RvciksImZ1bmN0aW9uIiE9dHlwZW9mIGImJihiPWEuY29uc3RydWN0b3I9ZnVuY3Rpb24oKXtjLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLGIucHJvdG90eXBlPUsoYy5wcm90b3R5cGUpLEwoYSxiLnByb3RvdHlwZSksTShhLGIucHJvdG90eXBlKSxMKGMsYiksYn0sa2EubWl4aW49ZnVuY3Rpb24oYSl7TChhLnByb3RvdHlwZXx8YSx0aGlzLnByb3RvdHlwZSl9O3ZhciAkYT1rYS5leHRlbmQoe2lzSGlkZGVuOiEwLG9wdGlvbnM6bnVsbCxlbDpudWxsLGRvY3VtZW50TW91c2Vkb3duUHJveHk6bnVsbCxtYXJnaW46MTAsY29uc3RydWN0b3I6ZnVuY3Rpb24oYSl7dGhpcy5vcHRpb25zPWF8fHt9fSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5pc0hpZGRlbiYmKHRoaXMuZWx8fHRoaXMucmVuZGVyKCksdGhpcy5lbC5zaG93KCksdGhpcy5wb3NpdGlvbigpLHRoaXMuaXNIaWRkZW49ITEsdGhpcy50cmlnZ2VyKCJzaG93IikpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy5pc0hpZGRlbnx8KHRoaXMuZWwuaGlkZSgpLHRoaXMuaXNIaWRkZW49ITAsdGhpcy50cmlnZ2VyKCJoaWRlIikpfSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGM9dGhpcy5vcHRpb25zO3RoaXMuZWw9YSgnPGRpdiBjbGFzcz0iZmMtcG9wb3ZlciIvPicpLmFkZENsYXNzKGMuY2xhc3NOYW1lfHwiIikuY3NzKHt0b3A6MCxsZWZ0OjB9KS5hcHBlbmQoYy5jb250ZW50KS5hcHBlbmRUbyhjLnBhcmVudEVsKSx0aGlzLmVsLm9uKCJjbGljayIsIi5mYy1jbG9zZSIsZnVuY3Rpb24oKXtiLmhpZGUoKX0pLGMuYXV0b0hpZGUmJmEoZG9jdW1lbnQpLm9uKCJtb3VzZWRvd24iLHRoaXMuZG9jdW1lbnRNb3VzZWRvd25Qcm94eT1YKHRoaXMsImRvY3VtZW50TW91c2Vkb3duIikpfSxkb2N1bWVudE1vdXNlZG93bjpmdW5jdGlvbihiKXt0aGlzLmVsJiYhYShiLnRhcmdldCkuY2xvc2VzdCh0aGlzLmVsKS5sZW5ndGgmJnRoaXMuaGlkZSgpfSxyZW1vdmVFbGVtZW50OmZ1bmN0aW9uKCl7dGhpcy5oaWRlKCksdGhpcy5lbCYmKHRoaXMuZWwucmVtb3ZlKCksdGhpcy5lbD1udWxsKSxhKGRvY3VtZW50KS5vZmYoIm1vdXNlZG93biIsdGhpcy5kb2N1bWVudE1vdXNlZG93blByb3h5KX0scG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgYixjLGQsZSxmLGc9dGhpcy5vcHRpb25zLGg9dGhpcy5lbC5vZmZzZXRQYXJlbnQoKS5vZmZzZXQoKSxpPXRoaXMuZWwub3V0ZXJXaWR0aCgpLGo9dGhpcy5lbC5vdXRlckhlaWdodCgpLGs9YSh3aW5kb3cpLGw9bih0aGlzLmVsKTtlPWcudG9wfHwwLGY9dm9pZCAwIT09Zy5sZWZ0P2cubGVmdDp2b2lkIDAhPT1nLnJpZ2h0P2cucmlnaHQtaTowLGwuaXMod2luZG93KXx8bC5pcyhkb2N1bWVudCk/KGw9ayxiPTAsYz0wKTooZD1sLm9mZnNldCgpLGI9ZC50b3AsYz1kLmxlZnQpLGIrPWsuc2Nyb2xsVG9wKCksYys9ay5zY3JvbGxMZWZ0KCksZy52aWV3cG9ydENvbnN0cmFpbiE9PSExJiYoZT1NYXRoLm1pbihlLGIrbC5vdXRlckhlaWdodCgpLWotdGhpcy5tYXJnaW4pLGU9TWF0aC5tYXgoZSxiK3RoaXMubWFyZ2luKSxmPU1hdGgubWluKGYsYytsLm91dGVyV2lkdGgoKS1pLXRoaXMubWFyZ2luKSxmPU1hdGgubWF4KGYsYyt0aGlzLm1hcmdpbikpLHRoaXMuZWwuY3NzKHt0b3A6ZS1oLnRvcCxsZWZ0OmYtaC5sZWZ0fSl9LHRyaWdnZXI6ZnVuY3Rpb24oYSl7dGhpcy5vcHRpb25zW2FdJiZ0aGlzLm9wdGlvbnNbYV0uYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpfX0pLF9hPWthLmV4dGVuZCh7Z3JpZDpudWxsLHJvd0Nvb3JkczpudWxsLGNvbENvb3JkczpudWxsLGNvbnRhaW5lckVsOm51bGwsYm91bmRzOm51bGwsY29uc3RydWN0b3I6ZnVuY3Rpb24oYSl7dGhpcy5ncmlkPWF9LGJ1aWxkOmZ1bmN0aW9uKCl7dGhpcy5ncmlkLmJ1aWxkKCksdGhpcy5yb3dDb29yZHM9dGhpcy5ncmlkLmNvbXB1dGVSb3dDb29yZHMoKSx0aGlzLmNvbENvb3Jkcz10aGlzLmdyaWQuY29tcHV0ZUNvbENvb3JkcygpLHRoaXMuY29tcHV0ZUJvdW5kcygpfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuZ3JpZC5jbGVhcigpLHRoaXMucm93Q29vcmRzPW51bGwsdGhpcy5jb2xDb29yZHM9bnVsbH0sZ2V0Q2VsbDpmdW5jdGlvbihiLGMpe3ZhciBkLGUsZixnPXRoaXMucm93Q29vcmRzLGg9Zy5sZW5ndGgsaT10aGlzLmNvbENvb3JkcyxqPWkubGVuZ3RoLGs9bnVsbCxsPW51bGw7aWYodGhpcy5pbkJvdW5kcyhiLGMpKXtmb3IoZD0wO2g+ZDtkKyspaWYoZT1nW2RdLGM+PWUudG9wJiZjPGUuYm90dG9tKXtrPWQ7YnJlYWt9Zm9yKGQ9MDtqPmQ7ZCsrKWlmKGU9aVtkXSxiPj1lLmxlZnQmJmI8ZS5yaWdodCl7bD1kO2JyZWFrfWlmKG51bGwhPT1rJiZudWxsIT09bClyZXR1cm4gZj10aGlzLmdyaWQuZ2V0Q2VsbChrLGwpLGYuZ3JpZD10aGlzLmdyaWQsYS5leHRlbmQoZixnW2tdLGlbbF0pLGZ9cmV0dXJuIG51bGx9LGNvbXB1dGVCb3VuZHM6ZnVuY3Rpb24oKXt0aGlzLmJvdW5kcz10aGlzLmNvbnRhaW5lckVsP3AodGhpcy5jb250YWluZXJFbCk6bnVsbH0saW5Cb3VuZHM6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmJvdW5kcztyZXR1cm4gYz9hPj1jLmxlZnQmJmE8Yy5yaWdodCYmYj49Yy50b3AmJmI8Yy5ib3R0b206ITB9fSksYWI9a2EuZXh0ZW5kKHtjb29yZE1hcHM6bnVsbCxjb25zdHJ1Y3RvcjpmdW5jdGlvbihhKXt0aGlzLmNvb3JkTWFwcz1hfSxidWlsZDpmdW5jdGlvbigpe3ZhciBhLGI9dGhpcy5jb29yZE1hcHM7Zm9yKGE9MDthPGIubGVuZ3RoO2ErKyliW2FdLmJ1aWxkKCl9LGdldENlbGw6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPXRoaXMuY29vcmRNYXBzLGU9bnVsbDtmb3IoYz0wO2M8ZC5sZW5ndGgmJiFlO2MrKyllPWRbY10uZ2V0Q2VsbChhLGIpO3JldHVybiBlfSxjbGVhcjpmdW5jdGlvbigpe3ZhciBhLGI9dGhpcy5jb29yZE1hcHM7Zm9yKGE9MDthPGIubGVuZ3RoO2ErKyliW2FdLmNsZWFyKCl9fSksYmI9SmEuRHJhZ0xpc3RlbmVyPWthLmV4dGVuZCh7b3B0aW9uczpudWxsLGlzTGlzdGVuaW5nOiExLGlzRHJhZ2dpbmc6ITEsb3JpZ2luWDpudWxsLG9yaWdpblk6bnVsbCxtb3VzZW1vdmVQcm94eTpudWxsLG1vdXNldXBQcm94eTpudWxsLHN1YmplY3RFbDpudWxsLHN1YmplY3RIcmVmOm51bGwsc2Nyb2xsRWw6bnVsbCxzY3JvbGxCb3VuZHM6bnVsbCxzY3JvbGxUb3BWZWw6bnVsbCwKc2Nyb2xsTGVmdFZlbDpudWxsLHNjcm9sbEludGVydmFsSWQ6bnVsbCxzY3JvbGxIYW5kbGVyUHJveHk6bnVsbCxzY3JvbGxTZW5zaXRpdml0eTozMCxzY3JvbGxTcGVlZDoyMDAsc2Nyb2xsSW50ZXJ2YWxNczo1MCxjb25zdHJ1Y3RvcjpmdW5jdGlvbihhKXthPWF8fHt9LHRoaXMub3B0aW9ucz1hLHRoaXMuc3ViamVjdEVsPWEuc3ViamVjdEVsfSxtb3VzZWRvd246ZnVuY3Rpb24oYSl7dihhKSYmKGEucHJldmVudERlZmF1bHQoKSx0aGlzLnN0YXJ0TGlzdGVuaW5nKGEpLHRoaXMub3B0aW9ucy5kaXN0YW5jZXx8dGhpcy5zdGFydERyYWcoYSkpfSxzdGFydExpc3RlbmluZzpmdW5jdGlvbihiKXt2YXIgYzt0aGlzLmlzTGlzdGVuaW5nfHwoYiYmdGhpcy5vcHRpb25zLnNjcm9sbCYmKGM9bihhKGIudGFyZ2V0KSksYy5pcyh3aW5kb3cpfHxjLmlzKGRvY3VtZW50KXx8KHRoaXMuc2Nyb2xsRWw9Yyx0aGlzLnNjcm9sbEhhbmRsZXJQcm94eT1ZKFgodGhpcywic2Nyb2xsSGFuZGxlciIpLDEwMCksdGhpcy5zY3JvbGxFbC5vbigic2Nyb2xsIix0aGlzLnNjcm9sbEhhbmRsZXJQcm94eSkpKSxhKGRvY3VtZW50KS5vbigibW91c2Vtb3ZlIix0aGlzLm1vdXNlbW92ZVByb3h5PVgodGhpcywibW91c2Vtb3ZlIikpLm9uKCJtb3VzZXVwIix0aGlzLm1vdXNldXBQcm94eT1YKHRoaXMsIm1vdXNldXAiKSkub24oInNlbGVjdHN0YXJ0Iix0aGlzLnByZXZlbnREZWZhdWx0KSxiPyh0aGlzLm9yaWdpblg9Yi5wYWdlWCx0aGlzLm9yaWdpblk9Yi5wYWdlWSk6KHRoaXMub3JpZ2luWD0wLHRoaXMub3JpZ2luWT0wKSx0aGlzLmlzTGlzdGVuaW5nPSEwLHRoaXMubGlzdGVuU3RhcnQoYikpfSxsaXN0ZW5TdGFydDpmdW5jdGlvbihhKXt0aGlzLnRyaWdnZXIoImxpc3RlblN0YXJ0IixhKX0sbW91c2Vtb3ZlOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1hLnBhZ2VYLXRoaXMub3JpZ2luWCxlPWEucGFnZVktdGhpcy5vcmlnaW5ZO3RoaXMuaXNEcmFnZ2luZ3x8KGI9dGhpcy5vcHRpb25zLmRpc3RhbmNlfHwxLGM9ZCpkK2UqZSxjPj1iKmImJnRoaXMuc3RhcnREcmFnKGEpKSx0aGlzLmlzRHJhZ2dpbmcmJnRoaXMuZHJhZyhkLGUsYSl9LHN0YXJ0RHJhZzpmdW5jdGlvbihhKXt0aGlzLmlzTGlzdGVuaW5nfHx0aGlzLnN0YXJ0TGlzdGVuaW5nKCksdGhpcy5pc0RyYWdnaW5nfHwodGhpcy5pc0RyYWdnaW5nPSEwLHRoaXMuZHJhZ1N0YXJ0KGEpKX0sZHJhZ1N0YXJ0OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuc3ViamVjdEVsO3RoaXMudHJpZ2dlcigiZHJhZ1N0YXJ0IixhKSwodGhpcy5zdWJqZWN0SHJlZj1iP2IuYXR0cigiaHJlZiIpOm51bGwpJiZiLnJlbW92ZUF0dHIoImhyZWYiKX0sZHJhZzpmdW5jdGlvbihhLGIsYyl7dGhpcy50cmlnZ2VyKCJkcmFnIixhLGIsYyksdGhpcy51cGRhdGVTY3JvbGwoYyl9LG1vdXNldXA6ZnVuY3Rpb24oYSl7dGhpcy5zdG9wTGlzdGVuaW5nKGEpfSxzdG9wRHJhZzpmdW5jdGlvbihhKXt0aGlzLmlzRHJhZ2dpbmcmJih0aGlzLnN0b3BTY3JvbGxpbmcoKSx0aGlzLmRyYWdTdG9wKGEpLHRoaXMuaXNEcmFnZ2luZz0hMSl9LGRyYWdTdG9wOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7dGhpcy50cmlnZ2VyKCJkcmFnU3RvcCIsYSksc2V0VGltZW91dChmdW5jdGlvbigpe2Iuc3ViamVjdEhyZWYmJmIuc3ViamVjdEVsLmF0dHIoImhyZWYiLGIuc3ViamVjdEhyZWYpfSwwKX0sc3RvcExpc3RlbmluZzpmdW5jdGlvbihiKXt0aGlzLnN0b3BEcmFnKGIpLHRoaXMuaXNMaXN0ZW5pbmcmJih0aGlzLnNjcm9sbEVsJiYodGhpcy5zY3JvbGxFbC5vZmYoInNjcm9sbCIsdGhpcy5zY3JvbGxIYW5kbGVyUHJveHkpLHRoaXMuc2Nyb2xsSGFuZGxlclByb3h5PW51bGwpLGEoZG9jdW1lbnQpLm9mZigibW91c2Vtb3ZlIix0aGlzLm1vdXNlbW92ZVByb3h5KS5vZmYoIm1vdXNldXAiLHRoaXMubW91c2V1cFByb3h5KS5vZmYoInNlbGVjdHN0YXJ0Iix0aGlzLnByZXZlbnREZWZhdWx0KSx0aGlzLm1vdXNlbW92ZVByb3h5PW51bGwsdGhpcy5tb3VzZXVwUHJveHk9bnVsbCx0aGlzLmlzTGlzdGVuaW5nPSExLHRoaXMubGlzdGVuU3RvcChiKSl9LGxpc3RlblN0b3A6ZnVuY3Rpb24oYSl7dGhpcy50cmlnZ2VyKCJsaXN0ZW5TdG9wIixhKX0sdHJpZ2dlcjpmdW5jdGlvbihhKXt0aGlzLm9wdGlvbnNbYV0mJnRoaXMub3B0aW9uc1thXS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9LHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKGEpe2EucHJldmVudERlZmF1bHQoKX0sY29tcHV0ZVNjcm9sbEJvdW5kczpmdW5jdGlvbigpe3ZhciBhPXRoaXMuc2Nyb2xsRWw7dGhpcy5zY3JvbGxCb3VuZHM9YT9vKGEpOm51bGx9LHVwZGF0ZVNjcm9sbDpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmPXRoaXMuc2Nyb2xsU2Vuc2l0aXZpdHksZz10aGlzLnNjcm9sbEJvdW5kcyxoPTAsaT0wO2cmJihiPShmLShhLnBhZ2VZLWcudG9wKSkvZixjPShmLShnLmJvdHRvbS1hLnBhZ2VZKSkvZixkPShmLShhLnBhZ2VYLWcubGVmdCkpL2YsZT0oZi0oZy5yaWdodC1hLnBhZ2VYKSkvZixiPj0wJiYxPj1iP2g9Yip0aGlzLnNjcm9sbFNwZWVkKi0xOmM+PTAmJjE+PWMmJihoPWMqdGhpcy5zY3JvbGxTcGVlZCksZD49MCYmMT49ZD9pPWQqdGhpcy5zY3JvbGxTcGVlZCotMTplPj0wJiYxPj1lJiYoaT1lKnRoaXMuc2Nyb2xsU3BlZWQpKSx0aGlzLnNldFNjcm9sbFZlbChoLGkpfSxzZXRTY3JvbGxWZWw6ZnVuY3Rpb24oYSxiKXt0aGlzLnNjcm9sbFRvcFZlbD1hLHRoaXMuc2Nyb2xsTGVmdFZlbD1iLHRoaXMuY29uc3RyYWluU2Nyb2xsVmVsKCksIXRoaXMuc2Nyb2xsVG9wVmVsJiYhdGhpcy5zY3JvbGxMZWZ0VmVsfHx0aGlzLnNjcm9sbEludGVydmFsSWR8fCh0aGlzLnNjcm9sbEludGVydmFsSWQ9c2V0SW50ZXJ2YWwoWCh0aGlzLCJzY3JvbGxJbnRlcnZhbEZ1bmMiKSx0aGlzLnNjcm9sbEludGVydmFsTXMpKX0sY29uc3RyYWluU2Nyb2xsVmVsOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5zY3JvbGxFbDt0aGlzLnNjcm9sbFRvcFZlbDwwP2Euc2Nyb2xsVG9wKCk8PTAmJih0aGlzLnNjcm9sbFRvcFZlbD0wKTp0aGlzLnNjcm9sbFRvcFZlbD4wJiZhLnNjcm9sbFRvcCgpK2FbMF0uY2xpZW50SGVpZ2h0Pj1hWzBdLnNjcm9sbEhlaWdodCYmKHRoaXMuc2Nyb2xsVG9wVmVsPTApLHRoaXMuc2Nyb2xsTGVmdFZlbDwwP2Euc2Nyb2xsTGVmdCgpPD0wJiYodGhpcy5zY3JvbGxMZWZ0VmVsPTApOnRoaXMuc2Nyb2xsTGVmdFZlbD4wJiZhLnNjcm9sbExlZnQoKSthWzBdLmNsaWVudFdpZHRoPj1hWzBdLnNjcm9sbFdpZHRoJiYodGhpcy5zY3JvbGxMZWZ0VmVsPTApfSxzY3JvbGxJbnRlcnZhbEZ1bmM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNjcm9sbEVsLGI9dGhpcy5zY3JvbGxJbnRlcnZhbE1zLzFlMzt0aGlzLnNjcm9sbFRvcFZlbCYmYS5zY3JvbGxUb3AoYS5zY3JvbGxUb3AoKSt0aGlzLnNjcm9sbFRvcFZlbCpiKSx0aGlzLnNjcm9sbExlZnRWZWwmJmEuc2Nyb2xsTGVmdChhLnNjcm9sbExlZnQoKSt0aGlzLnNjcm9sbExlZnRWZWwqYiksdGhpcy5jb25zdHJhaW5TY3JvbGxWZWwoKSx0aGlzLnNjcm9sbFRvcFZlbHx8dGhpcy5zY3JvbGxMZWZ0VmVsfHx0aGlzLnN0b3BTY3JvbGxpbmcoKX0sc3RvcFNjcm9sbGluZzpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsSW50ZXJ2YWxJZCYmKGNsZWFySW50ZXJ2YWwodGhpcy5zY3JvbGxJbnRlcnZhbElkKSx0aGlzLnNjcm9sbEludGVydmFsSWQ9bnVsbCx0aGlzLnNjcm9sbFN0b3AoKSl9LHNjcm9sbEhhbmRsZXI6ZnVuY3Rpb24oKXt0aGlzLnNjcm9sbEludGVydmFsSWR8fHRoaXMuc2Nyb2xsU3RvcCgpfSxzY3JvbGxTdG9wOmZ1bmN0aW9uKCl7fX0pLGNiPWJiLmV4dGVuZCh7Y29vcmRNYXA6bnVsbCxvcmlnQ2VsbDpudWxsLGNlbGw6bnVsbCxjb29yZEFkanVzdDpudWxsLGNvbnN0cnVjdG9yOmZ1bmN0aW9uKGEsYil7YmIucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxiKSx0aGlzLmNvb3JkTWFwPWF9LGxpc3RlblN0YXJ0OmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPXRoaXMuc3ViamVjdEVsO2JiLnByb3RvdHlwZS5saXN0ZW5TdGFydC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5jb21wdXRlQ29vcmRzKCksYT8oYz17bGVmdDphLnBhZ2VYLHRvcDphLnBhZ2VZfSxkPWMsZSYmKGI9byhlKSxkPXgoZCxiKSksdGhpcy5vcmlnQ2VsbD10aGlzLmdldENlbGwoZC5sZWZ0LGQudG9wKSxlJiZ0aGlzLm9wdGlvbnMuc3ViamVjdENlbnRlciYmKHRoaXMub3JpZ0NlbGwmJihiPXcodGhpcy5vcmlnQ2VsbCxiKXx8YiksZD15KGIpKSx0aGlzLmNvb3JkQWRqdXN0PXooZCxjKSk6KHRoaXMub3JpZ0NlbGw9bnVsbCx0aGlzLmNvb3JkQWRqdXN0PW51bGwpfSxjb21wdXRlQ29vcmRzOmZ1bmN0aW9uKCl7dGhpcy5jb29yZE1hcC5idWlsZCgpLHRoaXMuY29tcHV0ZVNjcm9sbEJvdW5kcygpfSxkcmFnU3RhcnQ6ZnVuY3Rpb24oYSl7dmFyIGI7YmIucHJvdG90eXBlLmRyYWdTdGFydC5hcHBseSh0aGlzLGFyZ3VtZW50cyksYj10aGlzLmdldENlbGwoYS5wYWdlWCxhLnBhZ2VZKSxiJiZ0aGlzLmNlbGxPdmVyKGIpfSxkcmFnOmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtiYi5wcm90b3R5cGUuZHJhZy5hcHBseSh0aGlzLGFyZ3VtZW50cyksZD10aGlzLmdldENlbGwoYy5wYWdlWCxjLnBhZ2VZKSxsYShkLHRoaXMuY2VsbCl8fCh0aGlzLmNlbGwmJnRoaXMuY2VsbE91dCgpLGQmJnRoaXMuY2VsbE92ZXIoZCkpfSxkcmFnU3RvcDpmdW5jdGlvbigpe3RoaXMuY2VsbERvbmUoKSxiYi5wcm90b3R5cGUuZHJhZ1N0b3AuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxjZWxsT3ZlcjpmdW5jdGlvbihhKXt0aGlzLmNlbGw9YSx0aGlzLnRyaWdnZXIoImNlbGxPdmVyIixhLGxhKGEsdGhpcy5vcmlnQ2VsbCksdGhpcy5vcmlnQ2VsbCl9LGNlbGxPdXQ6ZnVuY3Rpb24oKXt0aGlzLmNlbGwmJih0aGlzLnRyaWdnZXIoImNlbGxPdXQiLHRoaXMuY2VsbCksdGhpcy5jZWxsRG9uZSgpLHRoaXMuY2VsbD1udWxsKX0sY2VsbERvbmU6ZnVuY3Rpb24oKXt0aGlzLmNlbGwmJnRoaXMudHJpZ2dlcigiY2VsbERvbmUiLHRoaXMuY2VsbCl9LGxpc3RlblN0b3A6ZnVuY3Rpb24oKXtiYi5wcm90b3R5cGUubGlzdGVuU3RvcC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5vcmlnQ2VsbD10aGlzLmNlbGw9bnVsbCx0aGlzLmNvb3JkTWFwLmNsZWFyKCl9LHNjcm9sbFN0b3A6ZnVuY3Rpb24oKXtiYi5wcm90b3R5cGUuc2Nyb2xsU3RvcC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5jb21wdXRlQ29vcmRzKCl9LGdldENlbGw6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5jb29yZEFkanVzdCYmKGErPXRoaXMuY29vcmRBZGp1c3QubGVmdCxiKz10aGlzLmNvb3JkQWRqdXN0LnRvcCksdGhpcy5jb29yZE1hcC5nZXRDZWxsKGEsYil9fSksZGI9a2EuZXh0ZW5kKHtvcHRpb25zOm51bGwsc291cmNlRWw6bnVsbCxlbDpudWxsLHBhcmVudEVsOm51bGwsdG9wMDpudWxsLGxlZnQwOm51bGwsbW91c2VZMDpudWxsLG1vdXNlWDA6bnVsbCx0b3BEZWx0YTpudWxsLGxlZnREZWx0YTpudWxsLG1vdXNlbW92ZVByb3h5Om51bGwsaXNGb2xsb3dpbmc6ITEsaXNIaWRkZW46ITEsaXNBbmltYXRpbmc6ITEsY29uc3RydWN0b3I6ZnVuY3Rpb24oYixjKXt0aGlzLm9wdGlvbnM9Yz1jfHx7fSx0aGlzLnNvdXJjZUVsPWIsdGhpcy5wYXJlbnRFbD1jLnBhcmVudEVsP2EoYy5wYXJlbnRFbCk6Yi5wYXJlbnQoKX0sc3RhcnQ6ZnVuY3Rpb24oYil7dGhpcy5pc0ZvbGxvd2luZ3x8KHRoaXMuaXNGb2xsb3dpbmc9ITAsdGhpcy5tb3VzZVkwPWIucGFnZVksdGhpcy5tb3VzZVgwPWIucGFnZVgsdGhpcy50b3BEZWx0YT0wLHRoaXMubGVmdERlbHRhPTAsdGhpcy5pc0hpZGRlbnx8dGhpcy51cGRhdGVQb3NpdGlvbigpLGEoZG9jdW1lbnQpLm9uKCJtb3VzZW1vdmUiLHRoaXMubW91c2Vtb3ZlUHJveHk9WCh0aGlzLCJtb3VzZW1vdmUiKSkpfSxzdG9wOmZ1bmN0aW9uKGIsYyl7ZnVuY3Rpb24gZCgpe3RoaXMuaXNBbmltYXRpbmc9ITEsZS5yZW1vdmVFbGVtZW50KCksdGhpcy50b3AwPXRoaXMubGVmdDA9bnVsbCxjJiZjKCl9dmFyIGU9dGhpcyxmPXRoaXMub3B0aW9ucy5yZXZlcnREdXJhdGlvbjt0aGlzLmlzRm9sbG93aW5nJiYhdGhpcy5pc0FuaW1hdGluZyYmKHRoaXMuaXNGb2xsb3dpbmc9ITEsYShkb2N1bWVudCkub2ZmKCJtb3VzZW1vdmUiLHRoaXMubW91c2Vtb3ZlUHJveHkpLGImJmYmJiF0aGlzLmlzSGlkZGVuPyh0aGlzLmlzQW5pbWF0aW5nPSEwLHRoaXMuZWwuYW5pbWF0ZSh7dG9wOnRoaXMudG9wMCxsZWZ0OnRoaXMubGVmdDB9LHtkdXJhdGlvbjpmLGNvbXBsZXRlOmR9KSk6ZCgpKX0sZ2V0RWw6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmVsO3JldHVybiBhfHwodGhpcy5zb3VyY2VFbC53aWR0aCgpLGE9dGhpcy5lbD10aGlzLnNvdXJjZUVsLmNsb25lKCkuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6IiIsZGlzcGxheTp0aGlzLmlzSGlkZGVuPyJub25lIjoiIixtYXJnaW46MCxyaWdodDoiYXV0byIsYm90dG9tOiJhdXRvIix3aWR0aDp0aGlzLnNvdXJjZUVsLndpZHRoKCksaGVpZ2h0OnRoaXMuc291cmNlRWwuaGVpZ2h0KCksb3BhY2l0eTp0aGlzLm9wdGlvbnMub3BhY2l0eXx8IiIsekluZGV4OnRoaXMub3B0aW9ucy56SW5kZXh9KS5hcHBlbmRUbyh0aGlzLnBhcmVudEVsKSksYX0scmVtb3ZlRWxlbWVudDpmdW5jdGlvbigpe3RoaXMuZWwmJih0aGlzLmVsLnJlbW92ZSgpLHRoaXMuZWw9bnVsbCl9LHVwZGF0ZVBvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGEsYjt0aGlzLmdldEVsKCksbnVsbD09PXRoaXMudG9wMCYmKHRoaXMuc291cmNlRWwud2lkdGgoKSxhPXRoaXMuc291cmNlRWwub2Zmc2V0KCksYj10aGlzLmVsLm9mZnNldFBhcmVudCgpLm9mZnNldCgpLHRoaXMudG9wMD1hLnRvcC1iLnRvcCx0aGlzLmxlZnQwPWEubGVmdC1iLmxlZnQpLHRoaXMuZWwuY3NzKHt0b3A6dGhpcy50b3AwK3RoaXMudG9wRGVsdGEsbGVmdDp0aGlzLmxlZnQwK3RoaXMubGVmdERlbHRhfSl9LG1vdXNlbW92ZTpmdW5jdGlvbihhKXt0aGlzLnRvcERlbHRhPWEucGFnZVktdGhpcy5tb3VzZVkwLHRoaXMubGVmdERlbHRhPWEucGFnZVgtdGhpcy5tb3VzZVgwLHRoaXMuaXNIaWRkZW58fHRoaXMudXBkYXRlUG9zaXRpb24oKX0saGlkZTpmdW5jdGlvbigpe3RoaXMuaXNIaWRkZW58fCh0aGlzLmlzSGlkZGVuPSEwLHRoaXMuZWwmJnRoaXMuZWwuaGlkZSgpKX0sc2hvdzpmdW5jdGlvbigpe3RoaXMuaXNIaWRkZW4mJih0aGlzLmlzSGlkZGVuPSExLHRoaXMudXBkYXRlUG9zaXRpb24oKSx0aGlzLmdldEVsKCkuc2hvdygpKX19KSxlYj1rYS5leHRlbmQoe3ZpZXc6bnVsbCxpc1JUTDpudWxsLGNlbGxIdG1sOiI8dGQvPiIsY29uc3RydWN0b3I6ZnVuY3Rpb24oYSl7dGhpcy52aWV3PWEsdGhpcy5pc1JUTD1hLm9wdCgiaXNSVEwiKX0scm93SHRtbDpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZT10aGlzLmdldEh0bWxSZW5kZXJlcigiY2VsbCIsYSksZj0iIjtmb3IoYj1ifHwwLGM9MDtjPHRoaXMuY29sQ250O2MrKylkPXRoaXMuZ2V0Q2VsbChiLGMpLGYrPWUoZCk7cmV0dXJuIGY9dGhpcy5ib29rZW5kQ2VsbHMoZixhLGIpLCI8dHI+IitmKyI8L3RyPiJ9LGJvb2tlbmRDZWxsczpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5nZXRIdG1sUmVuZGVyZXIoImludHJvIixiKShjfHwwKSxlPXRoaXMuZ2V0SHRtbFJlbmRlcmVyKCJvdXRybyIsYikoY3x8MCksZj10aGlzLmlzUlRMP2U6ZCxnPXRoaXMuaXNSVEw/ZDplO3JldHVybiJzdHJpbmciPT10eXBlb2YgYT9mK2ErZzphLnByZXBlbmQoZikuYXBwZW5kKGcpfSxnZXRIdG1sUmVuZGVyZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZixnPXRoaXMudmlldztyZXR1cm4gYz1hKyJIdG1sIixiJiYoZD1iK1UoYSkrIkh0bWwiKSxkJiYoZj1nW2RdKT9lPWc6ZCYmKGY9dGhpc1tkXSk/ZT10aGlzOihmPWdbY10pP2U9ZzooZj10aGlzW2NdKSYmKGU9dGhpcyksImZ1bmN0aW9uIj09dHlwZW9mIGY/ZnVuY3Rpb24oKXtyZXR1cm4gZi5hcHBseShlLGFyZ3VtZW50cyl8fCIifTpmdW5jdGlvbigpe3JldHVybiBmfHwiIn19fSksZmI9SmEuR3JpZD1lYi5leHRlbmQoe3N0YXJ0Om51bGwsZW5kOm51bGwscm93Q250OjAsY29sQ250OjAsZWw6bnVsbCxjb29yZE1hcDpudWxsLGVsc0J5RmlsbDpudWxsLGV4dGVybmFsRHJhZ1N0YXJ0UHJveHk6bnVsbCxjb2xIZWFkRm9ybWF0Om51bGwsZXZlbnRUaW1lRm9ybWF0Om51bGwsZGlzcGxheUV2ZW50VGltZTpudWxsLGRpc3BsYXlFdmVudEVuZDpudWxsLGNlbGxEdXJhdGlvbjpudWxsLGxhcmdlVW5pdDpudWxsLGNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7ZWIuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuY29vcmRNYXA9bmV3IF9hKHRoaXMpLHRoaXMuZWxzQnlGaWxsPXt9LHRoaXMuZXh0ZXJuYWxEcmFnU3RhcnRQcm94eT1YKHRoaXMsImV4dGVybmFsRHJhZ1N0YXJ0Iil9LGNvbXB1dGVDb2xIZWFkRm9ybWF0OmZ1bmN0aW9uKCl7fSxjb21wdXRlRXZlbnRUaW1lRm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmlldy5vcHQoInNtYWxsVGltZUZvcm1hdCIpfSxjb21wdXRlRGlzcGxheUV2ZW50VGltZTpmdW5jdGlvbigpe3JldHVybiEwfSxjb21wdXRlRGlzcGxheUV2ZW50RW5kOmZ1bmN0aW9uKCl7cmV0dXJuITB9LHNldFJhbmdlOmZ1bmN0aW9uKGEpe3RoaXMuc3RhcnQ9YS5zdGFydC5jbG9uZSgpLHRoaXMuZW5kPWEuZW5kLmNsb25lKCksdGhpcy5yYW5nZVVwZGF0ZWQoKSx0aGlzLnByb2Nlc3NSYW5nZU9wdGlvbnMoKX0scmFuZ2VVcGRhdGVkOmZ1bmN0aW9uKCl7fSxwcm9jZXNzUmFuZ2VPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIGEsYixjPXRoaXMudmlldzt0aGlzLmNvbEhlYWRGb3JtYXQ9Yy5vcHQoImNvbHVtbkZvcm1hdCIpfHx0aGlzLmNvbXB1dGVDb2xIZWFkRm9ybWF0KCksdGhpcy5ldmVudFRpbWVGb3JtYXQ9Yy5vcHQoImV2ZW50VGltZUZvcm1hdCIpfHxjLm9wdCgidGltZUZvcm1hdCIpfHx0aGlzLmNvbXB1dGVFdmVudFRpbWVGb3JtYXQoKSxhPWMub3B0KCJkaXNwbGF5RXZlbnRUaW1lIiksbnVsbD09YSYmKGE9dGhpcy5jb21wdXRlRGlzcGxheUV2ZW50VGltZSgpKSxiPWMub3B0KCJkaXNwbGF5RXZlbnRFbmQiKSxudWxsPT1iJiYoYj10aGlzLmNvbXB1dGVEaXNwbGF5RXZlbnRFbmQoKSksdGhpcy5kaXNwbGF5RXZlbnRUaW1lPWEsdGhpcy5kaXNwbGF5RXZlbnRFbmQ9Yn0sYnVpbGQ6ZnVuY3Rpb24oKXt9LGNsZWFyOmZ1bmN0aW9uKCl7fSxyYW5nZVRvU2VnczpmdW5jdGlvbihhKXt9LGRpZmZEYXRlczpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmxhcmdlVW5pdD9EKGEsYix0aGlzLmxhcmdlVW5pdCk6QihhLGIpfSxnZXRDZWxsOmZ1bmN0aW9uKGIsYyl7dmFyIGQ7cmV0dXJuIG51bGw9PWMmJigibnVtYmVyIj09dHlwZW9mIGI/KGM9YiV0aGlzLmNvbENudCxiPU1hdGguZmxvb3IoYi90aGlzLmNvbENudCkpOihjPWIuY29sLGI9Yi5yb3cpKSxkPXtyb3c6Yixjb2w6Y30sYS5leHRlbmQoZCx0aGlzLmdldFJvd0RhdGEoYiksdGhpcy5nZXRDb2xEYXRhKGMpKSxhLmV4dGVuZChkLHRoaXMuY29tcHV0ZUNlbGxSYW5nZShkKSksZH0sY29tcHV0ZUNlbGxSYW5nZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmNvbXB1dGVDZWxsRGF0ZShhKTtyZXR1cm57c3RhcnQ6YixlbmQ6Yi5jbG9uZSgpLmFkZCh0aGlzLmNlbGxEdXJhdGlvbil9fSxjb21wdXRlQ2VsbERhdGU6ZnVuY3Rpb24oYSl7fSxnZXRSb3dEYXRhOmZ1bmN0aW9uKGEpe3JldHVybnt9fSxnZXRDb2xEYXRhOmZ1bmN0aW9uKGEpe3JldHVybnt9fSxnZXRSb3dFbDpmdW5jdGlvbihhKXt9LGdldENvbEVsOmZ1bmN0aW9uKGEpe30sZ2V0Q2VsbERheUVsOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmdldENvbEVsKGEuY29sKXx8dGhpcy5nZXRSb3dFbChhLnJvdyl9LGNvbXB1dGVSb3dDb29yZHM6ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZD1bXTtmb3IoYT0wO2E8dGhpcy5yb3dDbnQ7YSsrKWI9dGhpcy5nZXRSb3dFbChhKSxjPWIub2Zmc2V0KCkudG9wLGQucHVzaCh7dG9wOmMsYm90dG9tOmMrYi5vdXRlckhlaWdodCgpfSk7cmV0dXJuIGR9LGNvbXB1dGVDb2xDb29yZHM6ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZD1bXTtmb3IoYT0wO2E8dGhpcy5jb2xDbnQ7YSsrKWI9dGhpcy5nZXRDb2xFbChhKSxjPWIub2Zmc2V0KCkubGVmdCxkLnB1c2goe2xlZnQ6YyxyaWdodDpjK2Iub3V0ZXJXaWR0aCgpfSk7cmV0dXJuIGR9LHNldEVsZW1lbnQ6ZnVuY3Rpb24oYil7dmFyIGM9dGhpczt0aGlzLmVsPWIsYi5vbigibW91c2Vkb3duIixmdW5jdGlvbihiKXthKGIudGFyZ2V0KS5pcygiLmZjLWV2ZW50LWNvbnRhaW5lciAqLCAuZmMtbW9yZSIpfHxhKGIudGFyZ2V0KS5jbG9zZXN0KCIuZmMtcG9wb3ZlciIpLmxlbmd0aHx8Yy5kYXlNb3VzZWRvd24oYil9KSx0aGlzLmJpbmRTZWdIYW5kbGVycygpLHRoaXMuYmluZEdsb2JhbEhhbmRsZXJzKCl9LHJlbW92ZUVsZW1lbnQ6ZnVuY3Rpb24oKXt0aGlzLnVuYmluZEdsb2JhbEhhbmRsZXJzKCksdGhpcy5lbC5yZW1vdmUoKX0scmVuZGVyU2tlbGV0b246ZnVuY3Rpb24oKXt9LHJlbmRlckRhdGVzOmZ1bmN0aW9uKCl7fSx1bnJlbmRlckRhdGVzOmZ1bmN0aW9uKCl7fSxiaW5kR2xvYmFsSGFuZGxlcnM6ZnVuY3Rpb24oKXthKGRvY3VtZW50KS5vbigiZHJhZ3N0YXJ0IHNvcnRzdGFydCIsdGhpcy5leHRlcm5hbERyYWdTdGFydFByb3h5KX0sdW5iaW5kR2xvYmFsSGFuZGxlcnM6ZnVuY3Rpb24oKXthKGRvY3VtZW50KS5vZmYoImRyYWdzdGFydCBzb3J0c3RhcnQiLHRoaXMuZXh0ZXJuYWxEcmFnU3RhcnRQcm94eSl9LGRheU1vdXNlZG93bjpmdW5jdGlvbihhKXt2YXIgYixjLGQ9dGhpcyxlPXRoaXMudmlldyxmPWUub3B0KCJzZWxlY3RhYmxlIiksaT1uZXcgY2IodGhpcy5jb29yZE1hcCx7c2Nyb2xsOmUub3B0KCJkcmFnU2Nyb2xsIiksZHJhZ1N0YXJ0OmZ1bmN0aW9uKCl7ZS51bnNlbGVjdCgpfSxjZWxsT3ZlcjpmdW5jdGlvbihhLGUsaCl7aCYmKGI9ZT9hOm51bGwsZiYmKGM9ZC5jb21wdXRlU2VsZWN0aW9uKGgsYSksYz9kLnJlbmRlclNlbGVjdGlvbihjKTpnKCkpKX0sY2VsbE91dDpmdW5jdGlvbihhKXtiPW51bGwsYz1udWxsLGQudW5yZW5kZXJTZWxlY3Rpb24oKSxoKCl9LGxpc3RlblN0b3A6ZnVuY3Rpb24oYSl7YiYmZS50cmlnZ2VyRGF5Q2xpY2soYixkLmdldENlbGxEYXlFbChiKSxhKSxjJiZlLnJlcG9ydFNlbGVjdGlvbihjLGEpLGgoKX19KTtpLm1vdXNlZG93bihhKX0scmVuZGVyUmFuZ2VIZWxwZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmZhYnJpY2F0ZUhlbHBlckV2ZW50KGEsYik7dGhpcy5yZW5kZXJIZWxwZXIoYyxiKX0sZmFicmljYXRlSGVscGVyRXZlbnQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iP0soYi5ldmVudCk6e307cmV0dXJuIGMuc3RhcnQ9YS5zdGFydC5jbG9uZSgpLGMuZW5kPWEuZW5kP2EuZW5kLmNsb25lKCk6bnVsbCxjLmFsbERheT1udWxsLHRoaXMudmlldy5jYWxlbmRhci5ub3JtYWxpemVFdmVudFJhbmdlKGMpLGMuY2xhc3NOYW1lPShjLmNsYXNzTmFtZXx8W10pLmNvbmNhdCgiZmMtaGVscGVyIiksYnx8KGMuZWRpdGFibGU9ITEpLGN9LHJlbmRlckhlbHBlcjpmdW5jdGlvbihhLGIpe30sdW5yZW5kZXJIZWxwZXI6ZnVuY3Rpb24oKXt9LHJlbmRlclNlbGVjdGlvbjpmdW5jdGlvbihhKXt0aGlzLnJlbmRlckhpZ2hsaWdodCh0aGlzLnNlbGVjdGlvblJhbmdlVG9TZWdzKGEpKX0sdW5yZW5kZXJTZWxlY3Rpb246ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVySGlnaGxpZ2h0KCl9LGNvbXB1dGVTZWxlY3Rpb246ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVthLnN0YXJ0LGEuZW5kLGIuc3RhcnQsYi5lbmRdO3JldHVybiBkLnNvcnQoViksYz17c3RhcnQ6ZFswXS5jbG9uZSgpLGVuZDpkWzNdLmNsb25lKCl9LHRoaXMudmlldy5jYWxlbmRhci5pc1NlbGVjdGlvblJhbmdlQWxsb3dlZChjKT9jOm51bGx9LHNlbGVjdGlvblJhbmdlVG9TZWdzOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJhbmdlVG9TZWdzKGEpfSxyZW5kZXJIaWdobGlnaHQ6ZnVuY3Rpb24oYSl7dGhpcy5yZW5kZXJGaWxsKCJoaWdobGlnaHQiLGEpfSx1bnJlbmRlckhpZ2hsaWdodDpmdW5jdGlvbigpe3RoaXMudW5yZW5kZXJGaWxsKCJoaWdobGlnaHQiKX0saGlnaGxpZ2h0U2VnQ2xhc3NlczpmdW5jdGlvbigpe3JldHVyblsiZmMtaGlnaGxpZ2h0Il19LHJlbmRlckZpbGw6ZnVuY3Rpb24oYSxiKXt9LHVucmVuZGVyRmlsbDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmVsc0J5RmlsbFthXTtiJiYoYi5yZW1vdmUoKSxkZWxldGUgdGhpcy5lbHNCeUZpbGxbYV0pfSxyZW5kZXJGaWxsU2VnRWxzOmZ1bmN0aW9uKGIsYyl7dmFyIGQsZT10aGlzLGY9dGhpc1tiKyJTZWdFbCJdLGc9IiIsaD1bXTtpZihjLmxlbmd0aCl7Zm9yKGQ9MDtkPGMubGVuZ3RoO2QrKylnKz10aGlzLmZpbGxTZWdIdG1sKGIsY1tkXSk7YShnKS5lYWNoKGZ1bmN0aW9uKGIsZCl7dmFyIGc9Y1tiXSxpPWEoZCk7ZiYmKGk9Zi5jYWxsKGUsZyxpKSksaSYmKGk9YShpKSxpLmlzKGUuZmlsbFNlZ1RhZykmJihnLmVsPWksaC5wdXNoKGcpKSl9KX1yZXR1cm4gaH0sZmlsbFNlZ1RhZzoiZGl2IixmaWxsU2VnSHRtbDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXNbYSsiU2VnQ2xhc3NlcyJdLGQ9dGhpc1thKyJTZWdDc3MiXSxlPWM/Yy5jYWxsKHRoaXMsYik6W10sZj1UKGQ/ZC5jYWxsKHRoaXMsYik6e30pO3JldHVybiI8Iit0aGlzLmZpbGxTZWdUYWcrKGUubGVuZ3RoPycgY2xhc3M9IicrZS5qb2luKCIgIikrJyInOiIiKSsoZj8nIHN0eWxlPSInK2YrJyInOiIiKSsiIC8+In0saGVhZEh0bWw6ZnVuY3Rpb24oKXtyZXR1cm4nPGRpdiBjbGFzcz0iZmMtcm93ICcrdGhpcy52aWV3LndpZGdldEhlYWRlckNsYXNzKyciPjx0YWJsZT48dGhlYWQ+Jyt0aGlzLnJvd0h0bWwoImhlYWQiKSsiPC90aGVhZD48L3RhYmxlPjwvZGl2PiJ9LGhlYWRDZWxsSHRtbDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnZpZXcsYz1hLnN0YXJ0O3JldHVybic8dGggY2xhc3M9ImZjLWRheS1oZWFkZXIgJytiLndpZGdldEhlYWRlckNsYXNzKyIgZmMtIitRYVtjLmRheSgpXSsnIj4nK1IoYy5mb3JtYXQodGhpcy5jb2xIZWFkRm9ybWF0KSkrIjwvdGg+In0sYmdDZWxsSHRtbDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnZpZXcsYz1hLnN0YXJ0LGQ9dGhpcy5nZXREYXlDbGFzc2VzKGMpO3JldHVybiBkLnVuc2hpZnQoImZjLWRheSIsYi53aWRnZXRDb250ZW50Q2xhc3MpLCc8dGQgY2xhc3M9IicrZC5qb2luKCIgIikrJyIgZGF0YS1kYXRlPSInK2MuZm9ybWF0KCJZWVlZLU1NLUREIikrJyI+PC90ZD4nfSxnZXREYXlDbGFzc2VzOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMudmlldyxjPWIuY2FsZW5kYXIuZ2V0Tm93KCkuc3RyaXBUaW1lKCksZD1bImZjLSIrUWFbYS5kYXkoKV1dO3JldHVybiAxPT1iLmludGVydmFsRHVyYXRpb24uYXMoIm1vbnRocyIpJiZhLm1vbnRoKCkhPWIuaW50ZXJ2YWxTdGFydC5tb250aCgpJiZkLnB1c2goImZjLW90aGVyLW1vbnRoIiksYS5pc1NhbWUoYywiZGF5Iik/ZC5wdXNoKCJmYy10b2RheSIsYi5oaWdobGlnaHRTdGF0ZUNsYXNzKTpjPmE/ZC5wdXNoKCJmYy1wYXN0Iik6ZC5wdXNoKCJmYy1mdXR1cmUiKSxkfX0pO2ZiLm1peGluKHttb3VzZWRPdmVyU2VnOm51bGwsaXNEcmFnZ2luZ1NlZzohMSxpc1Jlc2l6aW5nU2VnOiExLGlzRHJhZ2dpbmdFeHRlcm5hbDohMSxzZWdzOm51bGwscmVuZGVyRXZlbnRzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD10aGlzLmV2ZW50c1RvU2VncyhhKSxlPVtdLGY9W107Zm9yKGI9MDtiPGQubGVuZ3RoO2IrKyljPWRbYl0sbWEoYy5ldmVudCk/ZS5wdXNoKGMpOmYucHVzaChjKTtlPXRoaXMucmVuZGVyQmdTZWdzKGUpfHxlLGY9dGhpcy5yZW5kZXJGZ1NlZ3MoZil8fGYsdGhpcy5zZWdzPWUuY29uY2F0KGYpfSx1bnJlbmRlckV2ZW50czpmdW5jdGlvbigpe3RoaXMudHJpZ2dlclNlZ01vdXNlb3V0KCksdGhpcy51bnJlbmRlckZnU2VncygpLHRoaXMudW5yZW5kZXJCZ1NlZ3MoKSx0aGlzLnNlZ3M9bnVsbH0sZ2V0RXZlbnRTZWdzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Vnc3x8W119LHJlbmRlckZnU2VnczpmdW5jdGlvbihhKXt9LHVucmVuZGVyRmdTZWdzOmZ1bmN0aW9uKCl7fSxyZW5kZXJGZ1NlZ0VsczpmdW5jdGlvbihiLGMpe3ZhciBkLGU9dGhpcy52aWV3LGY9IiIsZz1bXTtpZihiLmxlbmd0aCl7Zm9yKGQ9MDtkPGIubGVuZ3RoO2QrKylmKz10aGlzLmZnU2VnSHRtbChiW2RdLGMpO2EoZikuZWFjaChmdW5jdGlvbihjLGQpe3ZhciBmPWJbY10saD1lLnJlc29sdmVFdmVudEVsKGYuZXZlbnQsYShkKSk7aCYmKGguZGF0YSgiZmMtc2VnIixmKSxmLmVsPWgsZy5wdXNoKGYpKX0pfXJldHVybiBnfSxmZ1NlZ0h0bWw6ZnVuY3Rpb24oYSxiKXt9LHJlbmRlckJnU2VnczpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yZW5kZXJGaWxsKCJiZ0V2ZW50IixhKX0sdW5yZW5kZXJCZ1NlZ3M6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVyRmlsbCgiYmdFdmVudCIpfSxiZ0V2ZW50U2VnRWw6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy52aWV3LnJlc29sdmVFdmVudEVsKGEuZXZlbnQsYil9LGJnRXZlbnRTZWdDbGFzc2VzOmZ1bmN0aW9uKGEpe3ZhciBiPWEuZXZlbnQsYz1iLnNvdXJjZXx8e307cmV0dXJuWyJmYy1iZ2V2ZW50Il0uY29uY2F0KGIuY2xhc3NOYW1lLGMuY2xhc3NOYW1lfHxbXSl9LGJnRXZlbnRTZWdDc3M6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy52aWV3LGM9YS5ldmVudCxkPWMuc291cmNlfHx7fTtyZXR1cm57ImJhY2tncm91bmQtY29sb3IiOmMuYmFja2dyb3VuZENvbG9yfHxjLmNvbG9yfHxkLmJhY2tncm91bmRDb2xvcnx8ZC5jb2xvcnx8Yi5vcHQoImV2ZW50QmFja2dyb3VuZENvbG9yIil8fGIub3B0KCJldmVudENvbG9yIil9fSxidXNpbmVzc0hvdXJzU2VnQ2xhc3NlczpmdW5jdGlvbihhKXtyZXR1cm5bImZjLW5vbmJ1c2luZXNzIiwiZmMtYmdldmVudCJdfSxiaW5kU2VnSGFuZGxlcnM6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGM9dGhpcy52aWV3O2EuZWFjaCh7bW91c2VlbnRlcjpmdW5jdGlvbihhLGMpe2IudHJpZ2dlclNlZ01vdXNlb3ZlcihhLGMpfSxtb3VzZWxlYXZlOmZ1bmN0aW9uKGEsYyl7Yi50cmlnZ2VyU2VnTW91c2VvdXQoYSxjKX0sY2xpY2s6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYy50cmlnZ2VyKCJldmVudENsaWNrIix0aGlzLGEuZXZlbnQsYil9LG1vdXNlZG93bjpmdW5jdGlvbihkLGUpe2EoZS50YXJnZXQpLmlzKCIuZmMtcmVzaXplciIpJiZjLmlzRXZlbnRSZXNpemFibGUoZC5ldmVudCk/Yi5zZWdSZXNpemVNb3VzZWRvd24oZCxlLGEoZS50YXJnZXQpLmlzKCIuZmMtc3RhcnQtcmVzaXplciIpKTpjLmlzRXZlbnREcmFnZ2FibGUoZC5ldmVudCkmJmIuc2VnRHJhZ01vdXNlZG93bihkLGUpfX0sZnVuY3Rpb24oYyxkKXtiLmVsLm9uKGMsIi5mYy1ldmVudC1jb250YWluZXIgPiAqIixmdW5jdGlvbihjKXt2YXIgZT1hKHRoaXMpLmRhdGEoImZjLXNlZyIpO3JldHVybiFlfHxiLmlzRHJhZ2dpbmdTZWd8fGIuaXNSZXNpemluZ1NlZz92b2lkIDA6ZC5jYWxsKHRoaXMsZSxjKX0pfSl9LHRyaWdnZXJTZWdNb3VzZW92ZXI6ZnVuY3Rpb24oYSxiKXt0aGlzLm1vdXNlZE92ZXJTZWd8fCh0aGlzLm1vdXNlZE92ZXJTZWc9YSx0aGlzLnZpZXcudHJpZ2dlcigiZXZlbnRNb3VzZW92ZXIiLGEuZWxbMF0sYS5ldmVudCxiKSl9LHRyaWdnZXJTZWdNb3VzZW91dDpmdW5jdGlvbihhLGIpe2I9Ynx8e30sdGhpcy5tb3VzZWRPdmVyU2VnJiYoYT1hfHx0aGlzLm1vdXNlZE92ZXJTZWcsdGhpcy5tb3VzZWRPdmVyU2VnPW51bGwsdGhpcy52aWV3LnRyaWdnZXIoImV2ZW50TW91c2VvdXQiLGEuZWxbMF0sYS5ldmVudCxiKSl9LHNlZ0RyYWdNb3VzZWRvd246ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPXRoaXMsZT10aGlzLnZpZXcsZj1lLmNhbGVuZGFyLGk9YS5lbCxqPWEuZXZlbnQsaz1uZXcgZGIoYS5lbCx7cGFyZW50RWw6ZS5lbCxvcGFjaXR5OmUub3B0KCJkcmFnT3BhY2l0eSIpLHJldmVydER1cmF0aW9uOmUub3B0KCJkcmFnUmV2ZXJ0RHVyYXRpb24iKSx6SW5kZXg6Mn0pLGw9bmV3IGNiKGUuY29vcmRNYXAse2Rpc3RhbmNlOjUsc2Nyb2xsOmUub3B0KCJkcmFnU2Nyb2xsIiksc3ViamVjdEVsOmksc3ViamVjdENlbnRlcjohMCxsaXN0ZW5TdGFydDpmdW5jdGlvbihhKXtrLmhpZGUoKSxrLnN0YXJ0KGEpfSxkcmFnU3RhcnQ6ZnVuY3Rpb24oYil7ZC50cmlnZ2VyU2VnTW91c2VvdXQoYSxiKSxkLnNlZ0RyYWdTdGFydChhLGIpLGUuaGlkZUV2ZW50KGopfSxjZWxsT3ZlcjpmdW5jdGlvbihiLGgsaSl7YS5jZWxsJiYoaT1hLmNlbGwpLGM9ZC5jb21wdXRlRXZlbnREcm9wKGksYixqKSxjJiYhZi5pc0V2ZW50UmFuZ2VBbGxvd2VkKGMsaikmJihnKCksYz1udWxsKSxjJiZlLnJlbmRlckRyYWcoYyxhKT9rLmhpZGUoKTprLnNob3coKSxoJiYoYz1udWxsKX0sY2VsbE91dDpmdW5jdGlvbigpe2UudW5yZW5kZXJEcmFnKCksay5zaG93KCksYz1udWxsfSxjZWxsRG9uZTpmdW5jdGlvbigpe2goKX0sZHJhZ1N0b3A6ZnVuY3Rpb24oYil7ay5zdG9wKCFjLGZ1bmN0aW9uKCl7ZS51bnJlbmRlckRyYWcoKSxlLnNob3dFdmVudChqKSxkLnNlZ0RyYWdTdG9wKGEsYiksYyYmZS5yZXBvcnRFdmVudERyb3AoaixjLHRoaXMubGFyZ2VVbml0LGksYil9KX0sbGlzdGVuU3RvcDpmdW5jdGlvbigpe2suc3RvcCgpfX0pO2wubW91c2Vkb3duKGIpfSxzZWdEcmFnU3RhcnQ6ZnVuY3Rpb24oYSxiKXt0aGlzLmlzRHJhZ2dpbmdTZWc9ITAsdGhpcy52aWV3LnRyaWdnZXIoImV2ZW50RHJhZ1N0YXJ0IixhLmVsWzBdLGEuZXZlbnQsYix7fSl9LHNlZ0RyYWdTdG9wOmZ1bmN0aW9uKGEsYil7dGhpcy5pc0RyYWdnaW5nU2VnPSExLHRoaXMudmlldy50cmlnZ2VyKCJldmVudERyYWdTdG9wIixhLmVsWzBdLGEuZXZlbnQsYix7fSl9LGNvbXB1dGVFdmVudERyb3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj10aGlzLnZpZXcuY2FsZW5kYXIsZz1hLnN0YXJ0LGg9Yi5zdGFydDtyZXR1cm4gZy5oYXNUaW1lKCk9PT1oLmhhc1RpbWUoKT8oZD10aGlzLmRpZmZEYXRlcyhoLGcpLGMuYWxsRGF5JiZHKGQpPyhlPXtzdGFydDpjLnN0YXJ0LmNsb25lKCksZW5kOmYuZ2V0RXZlbnRFbmQoYyksYWxsRGF5OiExfSxmLm5vcm1hbGl6ZUV2ZW50UmFuZ2VUaW1lcyhlKSk6ZT17c3RhcnQ6Yy5zdGFydC5jbG9uZSgpLGVuZDpjLmVuZD9jLmVuZC5jbG9uZSgpOm51bGwsYWxsRGF5OmMuYWxsRGF5fSxlLnN0YXJ0LmFkZChkKSxlLmVuZCYmZS5lbmQuYWRkKGQpKTplPXtzdGFydDpoLmNsb25lKCksZW5kOm51bGwsYWxsRGF5OiFoLmhhc1RpbWUoKX0sZX0sYXBwbHlEcmFnT3BhY2l0eTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnZpZXcub3B0KCJkcmFnT3BhY2l0eSIpO251bGwhPWImJmEuZWFjaChmdW5jdGlvbihhLGMpe2Muc3R5bGUub3BhY2l0eT1ifSl9LGV4dGVybmFsRHJhZ1N0YXJ0OmZ1bmN0aW9uKGIsYyl7dmFyIGQsZSxmPXRoaXMudmlldztmLm9wdCgiZHJvcHBhYmxlIikmJihkPWEoKGM/Yy5pdGVtOm51bGwpfHxiLnRhcmdldCksZT1mLm9wdCgiZHJvcEFjY2VwdCIpLChhLmlzRnVuY3Rpb24oZSk/ZS5jYWxsKGRbMF0sZCk6ZC5pcyhlKSkmJih0aGlzLmlzRHJhZ2dpbmdFeHRlcm5hbHx8dGhpcy5saXN0ZW5Ub0V4dGVybmFsRHJhZyhkLGIsYykpKX0sbGlzdGVuVG9FeHRlcm5hbERyYWc6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj10aGlzLGk9c2EoYSk7ZD1uZXcgY2IodGhpcy5jb29yZE1hcCx7bGlzdGVuU3RhcnQ6ZnVuY3Rpb24oKXtmLmlzRHJhZ2dpbmdFeHRlcm5hbD0hMH0sY2VsbE92ZXI6ZnVuY3Rpb24oYSl7ZT1mLmNvbXB1dGVFeHRlcm5hbERyb3AoYSxpKSxlP2YucmVuZGVyRHJhZyhlKTpnKCl9LGNlbGxPdXQ6ZnVuY3Rpb24oKXtlPW51bGwsZi51bnJlbmRlckRyYWcoKSxoKCl9LGRyYWdTdG9wOmZ1bmN0aW9uKCl7Zi51bnJlbmRlckRyYWcoKSxoKCksZSYmZi52aWV3LnJlcG9ydEV4dGVybmFsRHJvcChpLGUsYSxiLGMpfSxsaXN0ZW5TdG9wOmZ1bmN0aW9uKCl7Zi5pc0RyYWdnaW5nRXh0ZXJuYWw9ITF9fSksZC5zdGFydERyYWcoYil9LGNvbXB1dGVFeHRlcm5hbERyb3A6ZnVuY3Rpb24oYSxiKXt2YXIgYz17c3RhcnQ6YS5zdGFydC5jbG9uZSgpLGVuZDpudWxsfTtyZXR1cm4gYi5zdGFydFRpbWUmJiFjLnN0YXJ0Lmhhc1RpbWUoKSYmYy5zdGFydC50aW1lKGIuc3RhcnRUaW1lKSxiLmR1cmF0aW9uJiYoYy5lbmQ9Yy5zdGFydC5jbG9uZSgpLmFkZChiLmR1cmF0aW9uKSksdGhpcy52aWV3LmNhbGVuZGFyLmlzRXh0ZXJuYWxEcm9wUmFuZ2VBbGxvd2VkKGMsYi5ldmVudFByb3BzKT9jOm51bGx9LHJlbmRlckRyYWc6ZnVuY3Rpb24oYSxiKXt9LHVucmVuZGVyRHJhZzpmdW5jdGlvbigpe30sc2VnUmVzaXplTW91c2Vkb3duOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9dGhpcyxpPXRoaXMudmlldyxqPWkuY2FsZW5kYXIsaz1hLmVsLGw9YS5ldmVudCxtPWouZ2V0RXZlbnRFbmQobCk7ZD1uZXcgY2IodGhpcy5jb29yZE1hcCx7ZGlzdGFuY2U6NSxzY3JvbGw6aS5vcHQoImRyYWdTY3JvbGwiKSxzdWJqZWN0RWw6ayxkcmFnU3RhcnQ6ZnVuY3Rpb24oYil7Zi50cmlnZ2VyU2VnTW91c2VvdXQoYSxiKSxmLnNlZ1Jlc2l6ZVN0YXJ0KGEsYil9LGNlbGxPdmVyOmZ1bmN0aW9uKGIsZCxoKXtlPWM/Zi5jb21wdXRlRXZlbnRTdGFydFJlc2l6ZShoLGIsbCk6Zi5jb21wdXRlRXZlbnRFbmRSZXNpemUoaCxiLGwpLGUmJihqLmlzRXZlbnRSYW5nZUFsbG93ZWQoZSxsKT9lLnN0YXJ0LmlzU2FtZShsLnN0YXJ0KSYmZS5lbmQuaXNTYW1lKG0pJiYoZT1udWxsKTooZygpLGU9bnVsbCkpLGUmJihpLmhpZGVFdmVudChsKSxmLnJlbmRlckV2ZW50UmVzaXplKGUsYSkpfSxjZWxsT3V0OmZ1bmN0aW9uKCl7ZT1udWxsfSxjZWxsRG9uZTpmdW5jdGlvbigpe2YudW5yZW5kZXJFdmVudFJlc2l6ZSgpLGkuc2hvd0V2ZW50KGwpLGgoKX0sZHJhZ1N0b3A6ZnVuY3Rpb24oYil7Zi5zZWdSZXNpemVTdG9wKGEsYiksZSYmaS5yZXBvcnRFdmVudFJlc2l6ZShsLGUsdGhpcy5sYXJnZVVuaXQsayxiKX19KSxkLm1vdXNlZG93bihiKX0sc2VnUmVzaXplU3RhcnQ6ZnVuY3Rpb24oYSxiKXt0aGlzLmlzUmVzaXppbmdTZWc9ITAsdGhpcy52aWV3LnRyaWdnZXIoImV2ZW50UmVzaXplU3RhcnQiLGEuZWxbMF0sYS5ldmVudCxiLHt9KX0sc2VnUmVzaXplU3RvcDpmdW5jdGlvbihhLGIpe3RoaXMuaXNSZXNpemluZ1NlZz0hMSx0aGlzLnZpZXcudHJpZ2dlcigiZXZlbnRSZXNpemVTdG9wIixhLmVsWzBdLGEuZXZlbnQsYix7fSl9LGNvbXB1dGVFdmVudFN0YXJ0UmVzaXplOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5jb21wdXRlRXZlbnRSZXNpemUoInN0YXJ0IixhLGIsYyl9LGNvbXB1dGVFdmVudEVuZFJlc2l6ZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuY29tcHV0ZUV2ZW50UmVzaXplKCJlbmQiLGEsYixjKX0sY29tcHV0ZUV2ZW50UmVzaXplOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZz10aGlzLnZpZXcuY2FsZW5kYXIsaD10aGlzLmRpZmZEYXRlcyhjW2FdLGJbYV0pO3JldHVybiBlPXtzdGFydDpkLnN0YXJ0LmNsb25lKCksZW5kOmcuZ2V0RXZlbnRFbmQoZCksYWxsRGF5OmQuYWxsRGF5fSxlLmFsbERheSYmRyhoKSYmKGUuYWxsRGF5PSExLGcubm9ybWFsaXplRXZlbnRSYW5nZVRpbWVzKGUpKSxlW2FdLmFkZChoKSxlLnN0YXJ0LmlzQmVmb3JlKGUuZW5kKXx8KGY9ZC5hbGxEYXk/Zy5kZWZhdWx0QWxsRGF5RXZlbnREdXJhdGlvbjpnLmRlZmF1bHRUaW1lZEV2ZW50RHVyYXRpb24sdGhpcy5jZWxsRHVyYXRpb24mJnRoaXMuY2VsbER1cmF0aW9uPGYmJihmPXRoaXMuY2VsbER1cmF0aW9uKSwic3RhcnQiPT1hP2Uuc3RhcnQ9ZS5lbmQuY2xvbmUoKS5zdWJ0cmFjdChmKTplLmVuZD1lLnN0YXJ0LmNsb25lKCkuYWRkKGYpKSxlfSxyZW5kZXJFdmVudFJlc2l6ZTpmdW5jdGlvbihhLGIpe30sdW5yZW5kZXJFdmVudFJlc2l6ZTpmdW5jdGlvbigpe30sZ2V0RXZlbnRUaW1lVGV4dDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG51bGw9PWImJihiPXRoaXMuZXZlbnRUaW1lRm9ybWF0KSxudWxsPT1jJiYoYz10aGlzLmRpc3BsYXlFdmVudEVuZCksdGhpcy5kaXNwbGF5RXZlbnRUaW1lJiZhLnN0YXJ0Lmhhc1RpbWUoKT9jJiZhLmVuZD90aGlzLnZpZXcuZm9ybWF0UmFuZ2UoYSxiKTphLnN0YXJ0LmZvcm1hdChiKToiIn0sZ2V0U2VnQ2xhc3NlczpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5ldmVudCxlPVsiZmMtZXZlbnQiLGEuaXNTdGFydD8iZmMtc3RhcnQiOiJmYy1ub3Qtc3RhcnQiLGEuaXNFbmQ/ImZjLWVuZCI6ImZjLW5vdC1lbmQiXS5jb25jYXQoZC5jbGFzc05hbWUsZC5zb3VyY2U/ZC5zb3VyY2UuY2xhc3NOYW1lOltdKTtyZXR1cm4gYiYmZS5wdXNoKCJmYy1kcmFnZ2FibGUiKSxjJiZlLnB1c2goImZjLXJlc2l6YWJsZSIpLGV9LGdldEV2ZW50U2tpbkNzczpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnZpZXcsYz1hLnNvdXJjZXx8e30sZD1hLmNvbG9yLGU9Yy5jb2xvcixmPWIub3B0KCJldmVudENvbG9yIik7cmV0dXJueyJiYWNrZ3JvdW5kLWNvbG9yIjphLmJhY2tncm91bmRDb2xvcnx8ZHx8Yy5iYWNrZ3JvdW5kQ29sb3J8fGV8fGIub3B0KCJldmVudEJhY2tncm91bmRDb2xvciIpfHxmLCJib3JkZXItY29sb3IiOmEuYm9yZGVyQ29sb3J8fGR8fGMuYm9yZGVyQ29sb3J8fGV8fGIub3B0KCJldmVudEJvcmRlckNvbG9yIil8fGYsY29sb3I6YS50ZXh0Q29sb3J8fGMudGV4dENvbG9yfHxiLm9wdCgiZXZlbnRUZXh0Q29sb3IiKX19LGV2ZW50c1RvU2VnczpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9dGhpcy5ldmVudHNUb1JhbmdlcyhhKSxlPVtdO2ZvcihjPTA7YzxkLmxlbmd0aDtjKyspZS5wdXNoLmFwcGx5KGUsdGhpcy5ldmVudFJhbmdlVG9TZWdzKGRbY10sYikpO3JldHVybiBlfSxldmVudHNUb1JhbmdlczpmdW5jdGlvbihiKXt2YXIgYz10aGlzLGQ9cGEoYiksZT1bXTtyZXR1cm4gYS5lYWNoKGQsZnVuY3Rpb24oYSxiKXtiLmxlbmd0aCYmZS5wdXNoLmFwcGx5KGUsbmEoYlswXSk/Yy5ldmVudHNUb0ludmVyc2VSYW5nZXMoYik6Yy5ldmVudHNUb05vcm1hbFJhbmdlcyhiKSl9KSxlfSxldmVudHNUb05vcm1hbFJhbmdlczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmPXRoaXMudmlldy5jYWxlbmRhcixnPVtdO2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspYz1hW2JdLGQ9Yy5zdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpLGU9Zi5nZXRFdmVudEVuZChjKS5zdHJpcFpvbmUoKSxnLnB1c2goe2V2ZW50OmMsc3RhcnQ6ZCxlbmQ6ZSxldmVudFN0YXJ0TVM6K2QsZXZlbnREdXJhdGlvbk1TOmUtZH0pO3JldHVybiBnfSxldmVudHNUb0ludmVyc2VSYW5nZXM6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkPXRoaXMudmlldyxlPWQuc3RhcnQuY2xvbmUoKS5zdHJpcFpvbmUoKSxmPWQuZW5kLmNsb25lKCkuc3RyaXBab25lKCksZz10aGlzLmV2ZW50c1RvTm9ybWFsUmFuZ2VzKGEpLGg9W10saT1hWzBdLGo9ZTtmb3IoZy5zb3J0KHFhKSxiPTA7YjxnLmxlbmd0aDtiKyspYz1nW2JdLGMuc3RhcnQ+aiYmaC5wdXNoKHtldmVudDppLHN0YXJ0OmosZW5kOmMuc3RhcnR9KSxqPWMuZW5kO3JldHVybiBmPmomJmgucHVzaCh7ZXZlbnQ6aSxzdGFydDpqLGVuZDpmfSksaH0sZXZlbnRSYW5nZVRvU2VnczpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZTtmb3IoYT10aGlzLnZpZXcuY2FsZW5kYXIuZW5zdXJlVmlzaWJsZUV2ZW50UmFuZ2UoYSksYz1iP2IoYSk6dGhpcy5yYW5nZVRvU2VncyhhKSxkPTA7ZDxjLmxlbmd0aDtkKyspZT1jW2RdLGUuZXZlbnQ9YS5ldmVudCxlLmV2ZW50U3RhcnRNUz1hLmV2ZW50U3RhcnRNUyxlLmV2ZW50RHVyYXRpb25NUz1hLmV2ZW50RHVyYXRpb25NUztyZXR1cm4gY319KSxKYS5jb21wYXJlU2Vncz1yYSxKYS5kYXRhQXR0clByZWZpeD0iIjt2YXIgZ2I9ZmIuZXh0ZW5kKHtudW1iZXJzVmlzaWJsZTohMSxib3R0b21Db29yZFBhZGRpbmc6MCxicmVha09uV2Vla3M6bnVsbCxjZWxsRGF0ZXM6bnVsbCxkYXlUb0NlbGxPZmZzZXRzOm51bGwscm93RWxzOm51bGwsZGF5RWxzOm51bGwsaGVscGVyRWxzOm51bGwsY29uc3RydWN0b3I6ZnVuY3Rpb24oKXtmYi5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5jZWxsRHVyYXRpb249Yi5kdXJhdGlvbigxLCJkYXkiKX0scmVuZGVyRGF0ZXM6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9dGhpcy52aWV3LGY9dGhpcy5yb3dDbnQsZz10aGlzLmNvbENudCxoPWYqZyxpPSIiO2ZvcihiPTA7Zj5iO2IrKylpKz10aGlzLmRheVJvd0h0bWwoYixhKTtmb3IodGhpcy5lbC5odG1sKGkpLHRoaXMucm93RWxzPXRoaXMuZWwuZmluZCgiLmZjLXJvdyIpLHRoaXMuZGF5RWxzPXRoaXMuZWwuZmluZCgiLmZjLWRheSIpLGM9MDtoPmM7YysrKWQ9dGhpcy5nZXRDZWxsKGMpLGUudHJpZ2dlcigiZGF5UmVuZGVyIixudWxsLGQuc3RhcnQsdGhpcy5kYXlFbHMuZXEoYykpfSx1bnJlbmRlckRhdGVzOmZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVTZWdQb3BvdmVyKCl9LHJlbmRlckJ1c2luZXNzSG91cnM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnZpZXcuY2FsZW5kYXIuZ2V0QnVzaW5lc3NIb3Vyc0V2ZW50cyghMCksYj10aGlzLmV2ZW50c1RvU2VncyhhKTt0aGlzLnJlbmRlckZpbGwoImJ1c2luZXNzSG91cnMiLGIsImJnZXZlbnQiKX0sZGF5Um93SHRtbDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMudmlldyxkPVsiZmMtcm93IiwiZmMtd2VlayIsYy53aWRnZXRDb250ZW50Q2xhc3NdO3JldHVybiBiJiZkLnB1c2goImZjLXJpZ2lkIiksJzxkaXYgY2xhc3M9IicrZC5qb2luKCIgIikrJyI+PGRpdiBjbGFzcz0iZmMtYmciPjx0YWJsZT4nK3RoaXMucm93SHRtbCgiZGF5IixhKSsnPC90YWJsZT48L2Rpdj48ZGl2IGNsYXNzPSJmYy1jb250ZW50LXNrZWxldG9uIj48dGFibGU+JysodGhpcy5udW1iZXJzVmlzaWJsZT8iPHRoZWFkPiIrdGhpcy5yb3dIdG1sKCJudW1iZXIiLGEpKyI8L3RoZWFkPiI6IiIpKyI8L3RhYmxlPjwvZGl2PjwvZGl2PiJ9LGRheUNlbGxIdG1sOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmJnQ2VsbEh0bWwoYSl9LGNvbXB1dGVDb2xIZWFkRm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucm93Q250PjE/ImRkZCI6dGhpcy5jb2xDbnQ+MT90aGlzLnZpZXcub3B0KCJkYXlPZk1vbnRoRm9ybWF0Iik6ImRkZGQifSxjb21wdXRlRXZlbnRUaW1lRm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmlldy5vcHQoImV4dHJhU21hbGxUaW1lRm9ybWF0Iil9LGNvbXB1dGVEaXNwbGF5RXZlbnRFbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gMT09dGhpcy5jb2xDbnR9LHJhbmdlVXBkYXRlZDpmdW5jdGlvbigpe3ZhciBhLGIsYyxkO2lmKHRoaXMudXBkYXRlQ2VsbERhdGVzKCksYT10aGlzLmNlbGxEYXRlcyx0aGlzLmJyZWFrT25XZWVrcyl7Zm9yKGI9YVswXS5kYXkoKSxkPTE7ZDxhLmxlbmd0aCYmYVtkXS5kYXkoKSE9YjtkKyspO2M9TWF0aC5jZWlsKGEubGVuZ3RoL2QpfWVsc2UgYz0xLGQ9YS5sZW5ndGg7dGhpcy5yb3dDbnQ9Yyx0aGlzLmNvbENudD1kfSx1cGRhdGVDZWxsRGF0ZXM6ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy52aWV3LGI9dGhpcy5zdGFydC5jbG9uZSgpLGM9W10sZD0tMSxlPVtdO2IuaXNCZWZvcmUodGhpcy5lbmQpOylhLmlzSGlkZGVuRGF5KGIpP2UucHVzaChkKy41KTooZCsrLGUucHVzaChkKSxjLnB1c2goYi5jbG9uZSgpKSksYi5hZGQoMSwiZGF5cyIpO3RoaXMuY2VsbERhdGVzPWMsdGhpcy5kYXlUb0NlbGxPZmZzZXRzPWV9LGNvbXB1dGVDZWxsRGF0ZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmNvbENudCxjPWEucm93KmIrKHRoaXMuaXNSVEw/Yi1hLmNvbC0xOmEuY29sKTtyZXR1cm4gdGhpcy5jZWxsRGF0ZXNbY10uY2xvbmUoKX0sZ2V0Um93RWw6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucm93RWxzLmVxKGEpfSxnZXRDb2xFbDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5kYXlFbHMuZXEoYSl9LGdldENlbGxEYXlFbDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5kYXlFbHMuZXEoYS5yb3cqdGhpcy5jb2xDbnQrYS5jb2wpfSxjb21wdXRlUm93Q29vcmRzOmZ1bmN0aW9uKCl7dmFyIGE9ZmIucHJvdG90eXBlLmNvbXB1dGVSb3dDb29yZHMuY2FsbCh0aGlzKTtyZXR1cm4gYVthLmxlbmd0aC0xXS5ib3R0b20rPXRoaXMuYm90dG9tQ29vcmRQYWRkaW5nLGF9LHJhbmdlVG9TZWdzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGw9dGhpcy5pc1JUTCxtPXRoaXMucm93Q250LG49dGhpcy5jb2xDbnQsbz1bXTtmb3IoYT10aGlzLnZpZXcuY29tcHV0ZURheVJhbmdlKGEpLGI9dGhpcy5kYXRlVG9DZWxsT2Zmc2V0KGEuc3RhcnQpLGM9dGhpcy5kYXRlVG9DZWxsT2Zmc2V0KGEuZW5kLnN1YnRyYWN0KDEsImRheXMiKSksZD0wO20+ZDtkKyspZT1kKm4sZj1lK24tMSxpPU1hdGgubWF4KGUsYiksaj1NYXRoLm1pbihmLGMpLGk9TWF0aC5jZWlsKGkpLGo9TWF0aC5mbG9vcihqKSxqPj1pJiYoZz1pPT09YixoPWo9PT1jLGktPWUsai09ZSxrPXtyb3c6ZCxpc1N0YXJ0OmcsaXNFbmQ6aH0sbD8oay5sZWZ0Q29sPW4tai0xLGsucmlnaHRDb2w9bi1pLTEpOihrLmxlZnRDb2w9aSxrLnJpZ2h0Q29sPWopLG8ucHVzaChrKSk7cmV0dXJuIG99LGRhdGVUb0NlbGxPZmZzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5kYXlUb0NlbGxPZmZzZXRzLGM9YS5kaWZmKHRoaXMuc3RhcnQsImRheXMiKTtyZXR1cm4gMD5jP2JbMF0tMTpjPj1iLmxlbmd0aD9iW2IubGVuZ3RoLTFdKzE6YltjXX0scmVuZGVyRHJhZzpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnJlbmRlckhpZ2hsaWdodCh0aGlzLmV2ZW50UmFuZ2VUb1NlZ3MoYSkpLGImJiFiLmVsLmNsb3Nlc3QodGhpcy5lbCkubGVuZ3RoPyh0aGlzLnJlbmRlclJhbmdlSGVscGVyKGEsYiksdGhpcy5hcHBseURyYWdPcGFjaXR5KHRoaXMuaGVscGVyRWxzKSwhMCk6dm9pZCAwfSx1bnJlbmRlckRyYWc6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVySGlnaGxpZ2h0KCksdGhpcy51bnJlbmRlckhlbHBlcigpfSxyZW5kZXJFdmVudFJlc2l6ZTpmdW5jdGlvbihhLGIpe3RoaXMucmVuZGVySGlnaGxpZ2h0KHRoaXMuZXZlbnRSYW5nZVRvU2VncyhhKSksdGhpcy5yZW5kZXJSYW5nZUhlbHBlcihhLGIpfSx1bnJlbmRlckV2ZW50UmVzaXplOmZ1bmN0aW9uKCl7dGhpcy51bnJlbmRlckhpZ2hsaWdodCgpLHRoaXMudW5yZW5kZXJIZWxwZXIoKX0scmVuZGVySGVscGVyOmZ1bmN0aW9uKGIsYyl7dmFyIGQsZT1bXSxmPXRoaXMuZXZlbnRzVG9TZWdzKFtiXSk7Zj10aGlzLnJlbmRlckZnU2VnRWxzKGYpLGQ9dGhpcy5yZW5kZXJTZWdSb3dzKGYpLHRoaXMucm93RWxzLmVhY2goZnVuY3Rpb24oYixmKXt2YXIgZyxoPWEoZiksaT1hKCc8ZGl2IGNsYXNzPSJmYy1oZWxwZXItc2tlbGV0b24iPjx0YWJsZS8+PC9kaXY+Jyk7Zz1jJiZjLnJvdz09PWI/Yy5lbC5wb3NpdGlvbigpLnRvcDpoLmZpbmQoIi5mYy1jb250ZW50LXNrZWxldG9uIHRib2R5IikucG9zaXRpb24oKS50b3AsaS5jc3MoInRvcCIsZykuZmluZCgidGFibGUiKS5hcHBlbmQoZFtiXS50Ym9keUVsKSxoLmFwcGVuZChpKSxlLnB1c2goaVswXSl9KSx0aGlzLmhlbHBlckVscz1hKGUpfSx1bnJlbmRlckhlbHBlcjpmdW5jdGlvbigpe3RoaXMuaGVscGVyRWxzJiYodGhpcy5oZWxwZXJFbHMucmVtb3ZlKCksdGhpcy5oZWxwZXJFbHM9bnVsbCl9LGZpbGxTZWdUYWc6InRkIixyZW5kZXJGaWxsOmZ1bmN0aW9uKGIsYyxkKXt2YXIgZSxmLGcsaD1bXTtmb3IoYz10aGlzLnJlbmRlckZpbGxTZWdFbHMoYixjKSxlPTA7ZTxjLmxlbmd0aDtlKyspZj1jW2VdLGc9dGhpcy5yZW5kZXJGaWxsUm93KGIsZixkKSx0aGlzLnJvd0Vscy5lcShmLnJvdykuYXBwZW5kKGcpLGgucHVzaChnWzBdKTtyZXR1cm4gdGhpcy5lbHNCeUZpbGxbYl09YShoKSxjfSxyZW5kZXJGaWxsUm93OmZ1bmN0aW9uKGIsYyxkKXt2YXIgZSxmLGc9dGhpcy5jb2xDbnQsaD1jLmxlZnRDb2wsaT1jLnJpZ2h0Q29sKzE7cmV0dXJuIGQ9ZHx8Yi50b0xvd2VyQ2FzZSgpLGU9YSgnPGRpdiBjbGFzcz0iZmMtJytkKyctc2tlbGV0b24iPjx0YWJsZT48dHIvPjwvdGFibGU+PC9kaXY+JyksZj1lLmZpbmQoInRyIiksaD4wJiZmLmFwcGVuZCgnPHRkIGNvbHNwYW49IicraCsnIi8+JyksZi5hcHBlbmQoYy5lbC5hdHRyKCJjb2xzcGFuIixpLWgpKSxnPmkmJmYuYXBwZW5kKCc8dGQgY29sc3Bhbj0iJysoZy1pKSsnIi8+JyksdGhpcy5ib29rZW5kQ2VsbHMoZixiKSxlfX0pO2diLm1peGluKHtyb3dTdHJ1Y3RzOm51bGwsdW5yZW5kZXJFdmVudHM6ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZVNlZ1BvcG92ZXIoKSxmYi5wcm90b3R5cGUudW5yZW5kZXJFdmVudHMuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxnZXRFdmVudFNlZ3M6ZnVuY3Rpb24oKXtyZXR1cm4gZmIucHJvdG90eXBlLmdldEV2ZW50U2Vncy5jYWxsKHRoaXMpLmNvbmNhdCh0aGlzLnBvcG92ZXJTZWdzfHxbXSl9LHJlbmRlckJnU2VnczpmdW5jdGlvbihiKXt2YXIgYz1hLmdyZXAoYixmdW5jdGlvbihhKXtyZXR1cm4gYS5ldmVudC5hbGxEYXl9KTtyZXR1cm4gZmIucHJvdG90eXBlLnJlbmRlckJnU2Vncy5jYWxsKHRoaXMsYyl9LHJlbmRlckZnU2VnczpmdW5jdGlvbihiKXt2YXIgYztyZXR1cm4gYj10aGlzLnJlbmRlckZnU2VnRWxzKGIpLGM9dGhpcy5yb3dTdHJ1Y3RzPXRoaXMucmVuZGVyU2VnUm93cyhiKSx0aGlzLnJvd0Vscy5lYWNoKGZ1bmN0aW9uKGIsZCl7YShkKS5maW5kKCIuZmMtY29udGVudC1za2VsZXRvbiA+IHRhYmxlIikuYXBwZW5kKGNbYl0udGJvZHlFbCl9KSxifSx1bnJlbmRlckZnU2VnczpmdW5jdGlvbigpe2Zvcih2YXIgYSxiPXRoaXMucm93U3RydWN0c3x8W107YT1iLnBvcCgpOylhLnRib2R5RWwucmVtb3ZlKCk7dGhpcy5yb3dTdHJ1Y3RzPW51bGx9LHJlbmRlclNlZ1Jvd3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkPVtdO2ZvcihiPXRoaXMuZ3JvdXBTZWdSb3dzKGEpLGM9MDtjPGIubGVuZ3RoO2MrKylkLnB1c2godGhpcy5yZW5kZXJTZWdSb3coYyxiW2NdKSk7cmV0dXJuIGR9LGZnU2VnSHRtbDpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZT10aGlzLnZpZXcsZj1hLmV2ZW50LGc9ZS5pc0V2ZW50RHJhZ2dhYmxlKGYpLGg9IWImJmYuYWxsRGF5JiZhLmlzU3RhcnQmJmUuaXNFdmVudFJlc2l6YWJsZUZyb21TdGFydChmKSxpPSFiJiZmLmFsbERheSYmYS5pc0VuZCYmZS5pc0V2ZW50UmVzaXphYmxlRnJvbUVuZChmKSxqPXRoaXMuZ2V0U2VnQ2xhc3NlcyhhLGcsaHx8aSksaz1UKHRoaXMuZ2V0RXZlbnRTa2luQ3NzKGYpKSxsPSIiO3JldHVybiBqLnVuc2hpZnQoImZjLWRheS1ncmlkLWV2ZW50IiwiZmMtaC1ldmVudCIpLGEuaXNTdGFydCYmKGM9dGhpcy5nZXRFdmVudFRpbWVUZXh0KGYpLGMmJihsPSc8c3BhbiBjbGFzcz0iZmMtdGltZSI+JytSKGMpKyI8L3NwYW4+IikpLGQ9JzxzcGFuIGNsYXNzPSJmYy10aXRsZSI+JysoUihmLnRpdGxlfHwiIil8fCImbmJzcDsiKSsiPC9zcGFuPiIsJzxhIGNsYXNzPSInK2ouam9pbigiICIpKyciJysoZi51cmw/JyBocmVmPSInK1IoZi51cmwpKyciJzoiIikrKGs/JyBzdHlsZT0iJytrKyciJzoiIikrJz48ZGl2IGNsYXNzPSJmYy1jb250ZW50Ij4nKyh0aGlzLmlzUlRMP2QrIiAiK2w6bCsiICIrZCkrIjwvZGl2PiIrKGg/JzxkaXYgY2xhc3M9ImZjLXJlc2l6ZXIgZmMtc3RhcnQtcmVzaXplciIgLz4nOiIiKSsoaT8nPGRpdiBjbGFzcz0iZmMtcmVzaXplciBmYy1lbmQtcmVzaXplciIgLz4nOiIiKSsiPC9hPiJ9LHJlbmRlclNlZ1JvdzpmdW5jdGlvbihiLGMpe2Z1bmN0aW9uIGQoYil7Zm9yKDtiPmc7KWs9KHJbZS0xXXx8W10pW2ddLGs/ay5hdHRyKCJyb3dzcGFuIixwYXJzZUludChrLmF0dHIoInJvd3NwYW4iKXx8MSwxMCkrMSk6KGs9YSgiPHRkLz4iKSxoLmFwcGVuZChrKSkscVtlXVtnXT1rLHJbZV1bZ109ayxnKyt9dmFyIGUsZixnLGgsaSxqLGssbD10aGlzLmNvbENudCxtPXRoaXMuYnVpbGRTZWdMZXZlbHMoYyksbj1NYXRoLm1heCgxLG0ubGVuZ3RoKSxvPWEoIjx0Ym9keS8+IikscD1bXSxxPVtdLHI9W107Zm9yKGU9MDtuPmU7ZSsrKXtpZihmPW1bZV0sZz0wLGg9YSgiPHRyLz4iKSxwLnB1c2goW10pLHEucHVzaChbXSksci5wdXNoKFtdKSxmKWZvcihpPTA7aTxmLmxlbmd0aDtpKyspe2ZvcihqPWZbaV0sZChqLmxlZnRDb2wpLGs9YSgnPHRkIGNsYXNzPSJmYy1ldmVudC1jb250YWluZXIiLz4nKS5hcHBlbmQoai5lbCksai5sZWZ0Q29sIT1qLnJpZ2h0Q29sP2suYXR0cigiY29sc3BhbiIsai5yaWdodENvbC1qLmxlZnRDb2wrMSk6cltlXVtnXT1rO2c8PWoucmlnaHRDb2w7KXFbZV1bZ109ayxwW2VdW2ddPWosZysrO2guYXBwZW5kKGspfWQobCksdGhpcy5ib29rZW5kQ2VsbHMoaCwiZXZlbnRTa2VsZXRvbiIpLG8uYXBwZW5kKGgpfXJldHVybntyb3c6Yix0Ym9keUVsOm8sY2VsbE1hdHJpeDpxLHNlZ01hdHJpeDpwLHNlZ0xldmVsczptLHNlZ3M6Y319LGJ1aWxkU2VnTGV2ZWxzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPVtdO2ZvcihhLnNvcnQocmEpLGI9MDtiPGEubGVuZ3RoO2IrKyl7Zm9yKGM9YVtiXSxkPTA7ZDxlLmxlbmd0aCYmdGEoYyxlW2RdKTtkKyspO2MubGV2ZWw9ZCwoZVtkXXx8KGVbZF09W10pKS5wdXNoKGMpfWZvcihkPTA7ZDxlLmxlbmd0aDtkKyspZVtkXS5zb3J0KHVhKTtyZXR1cm4gZX0sZ3JvdXBTZWdSb3dzOmZ1bmN0aW9uKGEpe3ZhciBiLGM9W107Zm9yKGI9MDtiPHRoaXMucm93Q250O2IrKyljLnB1c2goW10pO2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspY1thW2JdLnJvd10ucHVzaChhW2JdKTtyZXR1cm4gY319KSxnYi5taXhpbih7c2VnUG9wb3ZlcjpudWxsLHBvcG92ZXJTZWdzOm51bGwscmVtb3ZlU2VnUG9wb3ZlcjpmdW5jdGlvbigpe3RoaXMuc2VnUG9wb3ZlciYmdGhpcy5zZWdQb3BvdmVyLmhpZGUoKX0sbGltaXRSb3dzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD10aGlzLnJvd1N0cnVjdHN8fFtdO2ZvcihiPTA7YjxkLmxlbmd0aDtiKyspdGhpcy51bmxpbWl0Um93KGIpLGM9YT8ibnVtYmVyIj09dHlwZW9mIGE/YTp0aGlzLmNvbXB1dGVSb3dMZXZlbExpbWl0KGIpOiExLGMhPT0hMSYmdGhpcy5saW1pdFJvdyhiLGMpfSxjb21wdXRlUm93TGV2ZWxMaW1pdDpmdW5jdGlvbihiKXtmdW5jdGlvbiBjKGIsYyl7Zj1NYXRoLm1heChmLGEoYykub3V0ZXJIZWlnaHQoKSl9dmFyIGQsZSxmLGc9dGhpcy5yb3dFbHMuZXEoYiksaD1nLmhlaWdodCgpLGk9dGhpcy5yb3dTdHJ1Y3RzW2JdLnRib2R5RWwuY2hpbGRyZW4oKTtmb3IoZD0wO2Q8aS5sZW5ndGg7ZCsrKWlmKGU9aS5lcShkKS5yZW1vdmVDbGFzcygiZmMtbGltaXRlZCIpLGY9MCxlLmZpbmQoIj4gdGQgPiA6Zmlyc3QtY2hpbGQiKS5lYWNoKGMpLGUucG9zaXRpb24oKS50b3ArZj5oKXJldHVybiBkO3JldHVybiExfSxsaW1pdFJvdzpmdW5jdGlvbihiLGMpe2Z1bmN0aW9uIGQoZCl7Zm9yKDtkPng7KWU9dS5nZXRDZWxsKGIseCksaz11LmdldENlbGxTZWdzKGUsYyksay5sZW5ndGgmJihuPWdbYy0xXVt4XSx0PXUucmVuZGVyTW9yZUxpbmsoZSxrKSxzPWEoIjxkaXYvPiIpLmFwcGVuZCh0KSxuLmFwcGVuZChzKSx3LnB1c2goc1swXSkpLHgrK312YXIgZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1PXRoaXMsdj10aGlzLnJvd1N0cnVjdHNbYl0sdz1bXSx4PTA7aWYoYyYmYzx2LnNlZ0xldmVscy5sZW5ndGgpe2ZvcihmPXYuc2VnTGV2ZWxzW2MtMV0sZz12LmNlbGxNYXRyaXgsaD12LnRib2R5RWwuY2hpbGRyZW4oKS5zbGljZShjKS5hZGRDbGFzcygiZmMtbGltaXRlZCIpLmdldCgpLGk9MDtpPGYubGVuZ3RoO2krKyl7Zm9yKGo9ZltpXSxkKGoubGVmdENvbCksbT1bXSxsPTA7eDw9ai5yaWdodENvbDspZT10aGlzLmdldENlbGwoYix4KSxrPXRoaXMuZ2V0Q2VsbFNlZ3MoZSxjKSxtLnB1c2goayksbCs9ay5sZW5ndGgseCsrO2lmKGwpe2ZvcihuPWdbYy0xXVtqLmxlZnRDb2xdLG89bi5hdHRyKCJyb3dzcGFuIil8fDEscD1bXSxxPTA7cTxtLmxlbmd0aDtxKyspcj1hKCc8dGQgY2xhc3M9ImZjLW1vcmUtY2VsbCIvPicpLmF0dHIoInJvd3NwYW4iLG8pLGs9bVtxXSxlPXRoaXMuZ2V0Q2VsbChiLGoubGVmdENvbCtxKSx0PXRoaXMucmVuZGVyTW9yZUxpbmsoZSxbal0uY29uY2F0KGspKSxzPWEoIjxkaXYvPiIpLmFwcGVuZCh0KSxyLmFwcGVuZChzKSxwLnB1c2goclswXSksdy5wdXNoKHJbMF0pO24uYWRkQ2xhc3MoImZjLWxpbWl0ZWQiKS5hZnRlcihhKHApKSxoLnB1c2goblswXSl9fWQodGhpcy5jb2xDbnQpLHYubW9yZUVscz1hKHcpLHYubGltaXRlZEVscz1hKGgpfX0sdW5saW1pdFJvdzpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnJvd1N0cnVjdHNbYV07Yi5tb3JlRWxzJiYoYi5tb3JlRWxzLnJlbW92ZSgpLGIubW9yZUVscz1udWxsKSxiLmxpbWl0ZWRFbHMmJihiLmxpbWl0ZWRFbHMucmVtb3ZlQ2xhc3MoImZjLWxpbWl0ZWQiKSxiLmxpbWl0ZWRFbHM9bnVsbCl9LHJlbmRlck1vcmVMaW5rOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcyxlPXRoaXMudmlldztyZXR1cm4gYSgnPGEgY2xhc3M9ImZjLW1vcmUiLz4nKS50ZXh0KHRoaXMuZ2V0TW9yZUxpbmtUZXh0KGMubGVuZ3RoKSkub24oImNsaWNrIixmdW5jdGlvbihmKXt2YXIgZz1lLm9wdCgiZXZlbnRMaW1pdENsaWNrIiksaD1iLnN0YXJ0LGk9YSh0aGlzKSxqPWQuZ2V0Q2VsbERheUVsKGIpLGs9ZC5nZXRDZWxsU2VncyhiKSxsPWQucmVzbGljZURheVNlZ3MoayxoKSxtPWQucmVzbGljZURheVNlZ3MoYyxoKTsiZnVuY3Rpb24iPT10eXBlb2YgZyYmKGc9ZS50cmlnZ2VyKCJldmVudExpbWl0Q2xpY2siLG51bGwse2RhdGU6aCxkYXlFbDpqLG1vcmVFbDppLHNlZ3M6bCxoaWRkZW5TZWdzOm19LGYpKSwicG9wb3ZlciI9PT1nP2Quc2hvd1NlZ1BvcG92ZXIoYixpLGwpOiJzdHJpbmciPT10eXBlb2YgZyYmZS5jYWxlbmRhci56b29tVG8oaCxnKX0pfSxzaG93U2VnUG9wb3ZlcjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPXRoaXMsZz10aGlzLnZpZXcsaD1iLnBhcmVudCgpO2Q9MT09dGhpcy5yb3dDbnQ/Zy5lbDp0aGlzLnJvd0Vscy5lcShhLnJvdyksZT17Y2xhc3NOYW1lOiJmYy1tb3JlLXBvcG92ZXIiLGNvbnRlbnQ6dGhpcy5yZW5kZXJTZWdQb3BvdmVyQ29udGVudChhLGMpLHBhcmVudEVsOnRoaXMuZWwsdG9wOmQub2Zmc2V0KCkudG9wLGF1dG9IaWRlOiEwLHZpZXdwb3J0Q29uc3RyYWluOmcub3B0KCJwb3BvdmVyVmlld3BvcnRDb25zdHJhaW4iKSxoaWRlOmZ1bmN0aW9uKCl7Zi5zZWdQb3BvdmVyLnJlbW92ZUVsZW1lbnQoKSxmLnNlZ1BvcG92ZXI9bnVsbCxmLnBvcG92ZXJTZWdzPW51bGx9fSx0aGlzLmlzUlRMP2UucmlnaHQ9aC5vZmZzZXQoKS5sZWZ0K2gub3V0ZXJXaWR0aCgpKzE6ZS5sZWZ0PWgub2Zmc2V0KCkubGVmdC0xLHRoaXMuc2VnUG9wb3Zlcj1uZXcgJGEoZSksdGhpcy5zZWdQb3BvdmVyLnNob3coKX0scmVuZGVyU2VnUG9wb3ZlckNvbnRlbnQ6ZnVuY3Rpb24oYixjKXt2YXIgZCxlPXRoaXMudmlldyxmPWUub3B0KCJ0aGVtZSIpLGc9Yi5zdGFydC5mb3JtYXQoZS5vcHQoImRheVBvcG92ZXJGb3JtYXQiKSksaD1hKCc8ZGl2IGNsYXNzPSJmYy1oZWFkZXIgJytlLndpZGdldEhlYWRlckNsYXNzKyciPjxzcGFuIGNsYXNzPSJmYy1jbG9zZSAnKyhmPyJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayI6ImZjLWljb24gZmMtaWNvbi14IikrJyI+PC9zcGFuPjxzcGFuIGNsYXNzPSJmYy10aXRsZSI+JytSKGcpKyc8L3NwYW4+PGRpdiBjbGFzcz0iZmMtY2xlYXIiLz48L2Rpdj48ZGl2IGNsYXNzPSJmYy1ib2R5ICcrZS53aWRnZXRDb250ZW50Q2xhc3MrJyI+PGRpdiBjbGFzcz0iZmMtZXZlbnQtY29udGFpbmVyIj48L2Rpdj48L2Rpdj4nKSxpPWguZmluZCgiLmZjLWV2ZW50LWNvbnRhaW5lciIpO2ZvcihjPXRoaXMucmVuZGVyRmdTZWdFbHMoYywhMCksdGhpcy5wb3BvdmVyU2Vncz1jLGQ9MDtkPGMubGVuZ3RoO2QrKyljW2RdLmNlbGw9YiwKaS5hcHBlbmQoY1tkXS5lbCk7cmV0dXJuIGh9LHJlc2xpY2VEYXlTZWdzOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9YS5tYXAoYixmdW5jdGlvbihhKXtyZXR1cm4gYS5ldmVudH0pLGU9Yy5jbG9uZSgpLnN0cmlwVGltZSgpLGY9ZS5jbG9uZSgpLmFkZCgxLCJkYXlzIiksZz17c3RhcnQ6ZSxlbmQ6Zn07cmV0dXJuIGI9dGhpcy5ldmVudHNUb1NlZ3MoZCxmdW5jdGlvbihhKXt2YXIgYj1BKGEsZyk7cmV0dXJuIGI/W2JdOltdfSksYi5zb3J0KHJhKSxifSxnZXRNb3JlTGlua1RleHQ6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy52aWV3Lm9wdCgiZXZlbnRMaW1pdFRleHQiKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYj9iKGEpOiIrIithKyIgIitifSxnZXRDZWxsU2VnczpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYyxkPXRoaXMucm93U3RydWN0c1thLnJvd10uc2VnTWF0cml4LGU9Ynx8MCxmPVtdO2U8ZC5sZW5ndGg7KWM9ZFtlXVthLmNvbF0sYyYmZi5wdXNoKGMpLGUrKztyZXR1cm4gZn19KTt2YXIgaGI9ZmIuZXh0ZW5kKHtzbG90RHVyYXRpb246bnVsbCxzbmFwRHVyYXRpb246bnVsbCxtaW5UaW1lOm51bGwsbWF4VGltZTpudWxsLGNvbERhdGVzOm51bGwsYXhpc0Zvcm1hdDpudWxsLGRheUVsczpudWxsLHNsYXRFbHM6bnVsbCxzbGF0VG9wczpudWxsLGhlbHBlckVsOm51bGwsYnVzaW5lc3NIb3VyU2VnczpudWxsLGNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7ZmIuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMucHJvY2Vzc09wdGlvbnMoKX0scmVuZGVyRGF0ZXM6ZnVuY3Rpb24oKXt0aGlzLmVsLmh0bWwodGhpcy5yZW5kZXJIdG1sKCkpLHRoaXMuZGF5RWxzPXRoaXMuZWwuZmluZCgiLmZjLWRheSIpLHRoaXMuc2xhdEVscz10aGlzLmVsLmZpbmQoIi5mYy1zbGF0cyB0ciIpfSxyZW5kZXJCdXNpbmVzc0hvdXJzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy52aWV3LmNhbGVuZGFyLmdldEJ1c2luZXNzSG91cnNFdmVudHMoKTt0aGlzLmJ1c2luZXNzSG91clNlZ3M9dGhpcy5yZW5kZXJGaWxsKCJidXNpbmVzc0hvdXJzIix0aGlzLmV2ZW50c1RvU2VncyhhKSwiYmdldmVudCIpfSxyZW5kZXJIdG1sOmZ1bmN0aW9uKCl7cmV0dXJuJzxkaXYgY2xhc3M9ImZjLWJnIj48dGFibGU+Jyt0aGlzLnJvd0h0bWwoInNsb3RCZyIpKyc8L3RhYmxlPjwvZGl2PjxkaXYgY2xhc3M9ImZjLXNsYXRzIj48dGFibGU+Jyt0aGlzLnNsYXRSb3dIdG1sKCkrIjwvdGFibGU+PC9kaXY+In0sc2xvdEJnQ2VsbEh0bWw6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYmdDZWxsSHRtbChhKX0sc2xhdFJvd0h0bWw6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYyxkLGU9dGhpcy52aWV3LGY9dGhpcy5pc1JUTCxnPSIiLGg9dGhpcy5zbG90RHVyYXRpb24uYXNNaW51dGVzKCklMTU9PT0wLGk9Yi5kdXJhdGlvbigrdGhpcy5taW5UaW1lKTtpPHRoaXMubWF4VGltZTspYT10aGlzLnN0YXJ0LmNsb25lKCkudGltZShpKSxjPWEubWludXRlcygpLGQ9Jzx0ZCBjbGFzcz0iZmMtYXhpcyBmYy10aW1lICcrZS53aWRnZXRDb250ZW50Q2xhc3MrJyIgJytlLmF4aXNTdHlsZUF0dHIoKSsiPiIrKGgmJmM/IiI6IjxzcGFuPiIrUihhLmZvcm1hdCh0aGlzLmF4aXNGb3JtYXQpKSsiPC9zcGFuPiIpKyI8L3RkPiIsZys9Ijx0ciAiKyhjPydjbGFzcz0iZmMtbWlub3IiJzoiIikrIj4iKyhmPyIiOmQpKyc8dGQgY2xhc3M9IicrZS53aWRnZXRDb250ZW50Q2xhc3MrJyIvPicrKGY/ZDoiIikrIjwvdHI+IixpLmFkZCh0aGlzLnNsb3REdXJhdGlvbik7cmV0dXJuIGd9LHByb2Nlc3NPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy52aWV3LGM9YS5vcHQoInNsb3REdXJhdGlvbiIpLGQ9YS5vcHQoInNuYXBEdXJhdGlvbiIpO2M9Yi5kdXJhdGlvbihjKSxkPWQ/Yi5kdXJhdGlvbihkKTpjLHRoaXMuc2xvdER1cmF0aW9uPWMsdGhpcy5zbmFwRHVyYXRpb249ZCx0aGlzLmNlbGxEdXJhdGlvbj1kLHRoaXMubWluVGltZT1iLmR1cmF0aW9uKGEub3B0KCJtaW5UaW1lIikpLHRoaXMubWF4VGltZT1iLmR1cmF0aW9uKGEub3B0KCJtYXhUaW1lIikpLHRoaXMuYXhpc0Zvcm1hdD1hLm9wdCgiYXhpc0Zvcm1hdCIpfHxhLm9wdCgic21hbGxUaW1lRm9ybWF0Iil9LGNvbXB1dGVDb2xIZWFkRm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29sQ250PjE/dGhpcy52aWV3Lm9wdCgiZGF5T2ZNb250aEZvcm1hdCIpOiJkZGRkIn0sY29tcHV0ZUV2ZW50VGltZUZvcm1hdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZpZXcub3B0KCJub01lcmlkaWVtVGltZUZvcm1hdCIpfSxjb21wdXRlRGlzcGxheUV2ZW50RW5kOmZ1bmN0aW9uKCl7cmV0dXJuITB9LHJhbmdlVXBkYXRlZDpmdW5jdGlvbigpe3ZhciBhLGI9dGhpcy52aWV3LGM9W107Zm9yKGE9dGhpcy5zdGFydC5jbG9uZSgpO2EuaXNCZWZvcmUodGhpcy5lbmQpOyljLnB1c2goYS5jbG9uZSgpKSxhLmFkZCgxLCJkYXkiKSxhPWIuc2tpcEhpZGRlbkRheXMoYSk7dGhpcy5pc1JUTCYmYy5yZXZlcnNlKCksdGhpcy5jb2xEYXRlcz1jLHRoaXMuY29sQ250PWMubGVuZ3RoLHRoaXMucm93Q250PU1hdGguY2VpbCgodGhpcy5tYXhUaW1lLXRoaXMubWluVGltZSkvdGhpcy5zbmFwRHVyYXRpb24pfSxjb21wdXRlQ2VsbERhdGU6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5jb2xEYXRlc1thLmNvbF0sYz10aGlzLmNvbXB1dGVTbmFwVGltZShhLnJvdyk7cmV0dXJuIGI9dGhpcy52aWV3LmNhbGVuZGFyLnJlem9uZURhdGUoYiksYi50aW1lKGMpLGJ9LGdldENvbEVsOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmRheUVscy5lcShhKX0sY29tcHV0ZVNuYXBUaW1lOmZ1bmN0aW9uKGEpe3JldHVybiBiLmR1cmF0aW9uKHRoaXMubWluVGltZSt0aGlzLnNuYXBEdXJhdGlvbiphKX0scmFuZ2VUb1NlZ3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZj10aGlzLmNvbENudCxnPVtdO2ZvcihhPXtzdGFydDphLnN0YXJ0LmNsb25lKCkuc3RyaXBab25lKCksZW5kOmEuZW5kLmNsb25lKCkuc3RyaXBab25lKCl9LGM9MDtmPmM7YysrKWQ9dGhpcy5jb2xEYXRlc1tjXSxlPXtzdGFydDpkLmNsb25lKCkudGltZSh0aGlzLm1pblRpbWUpLGVuZDpkLmNsb25lKCkudGltZSh0aGlzLm1heFRpbWUpfSxiPUEoYSxlKSxiJiYoYi5jb2w9YyxnLnB1c2goYikpO3JldHVybiBnfSx1cGRhdGVTaXplOmZ1bmN0aW9uKGEpe3RoaXMuY29tcHV0ZVNsYXRUb3BzKCksYSYmdGhpcy51cGRhdGVTZWdWZXJ0aWNhbHMoKX0sY29tcHV0ZVJvd0Nvb3JkczpmdW5jdGlvbigpe3ZhciBhLGIsYz10aGlzLmVsLm9mZnNldCgpLnRvcCxkPVtdO2ZvcihhPTA7YTx0aGlzLnJvd0NudDthKyspYj17dG9wOmMrdGhpcy5jb21wdXRlVGltZVRvcCh0aGlzLmNvbXB1dGVTbmFwVGltZShhKSl9LGE+MCYmKGRbYS0xXS5ib3R0b209Yi50b3ApLGQucHVzaChiKTtyZXR1cm4gYi5ib3R0b209Yi50b3ArdGhpcy5jb21wdXRlVGltZVRvcCh0aGlzLmNvbXB1dGVTbmFwVGltZShhKSksZH0sY29tcHV0ZURhdGVUb3A6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gdGhpcy5jb21wdXRlVGltZVRvcChiLmR1cmF0aW9uKGEuY2xvbmUoKS5zdHJpcFpvbmUoKS1jLmNsb25lKCkuc3RyaXBUaW1lKCkpKX0sY29tcHV0ZVRpbWVUb3A6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZj0oYS10aGlzLm1pblRpbWUpL3RoaXMuc2xvdER1cmF0aW9uO3JldHVybiBmPU1hdGgubWF4KDAsZiksZj1NYXRoLm1pbih0aGlzLnNsYXRFbHMubGVuZ3RoLGYpLGI9TWF0aC5mbG9vcihmKSxjPWYtYixkPXRoaXMuc2xhdFRvcHNbYl0sYz8oZT10aGlzLnNsYXRUb3BzW2IrMV0sZCsoZS1kKSpjKTpkfSxjb21wdXRlU2xhdFRvcHM6ZnVuY3Rpb24oKXt2YXIgYixjPVtdO3RoaXMuc2xhdEVscy5lYWNoKGZ1bmN0aW9uKGQsZSl7Yj1hKGUpLnBvc2l0aW9uKCkudG9wLGMucHVzaChiKX0pLGMucHVzaChiK3RoaXMuc2xhdEVscy5sYXN0KCkub3V0ZXJIZWlnaHQoKSksdGhpcy5zbGF0VG9wcz1jfSxyZW5kZXJEcmFnOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/KHRoaXMucmVuZGVyUmFuZ2VIZWxwZXIoYSxiKSx0aGlzLmFwcGx5RHJhZ09wYWNpdHkodGhpcy5oZWxwZXJFbCksITApOnZvaWQgdGhpcy5yZW5kZXJIaWdobGlnaHQodGhpcy5ldmVudFJhbmdlVG9TZWdzKGEpKX0sdW5yZW5kZXJEcmFnOmZ1bmN0aW9uKCl7dGhpcy51bnJlbmRlckhlbHBlcigpLHRoaXMudW5yZW5kZXJIaWdobGlnaHQoKX0scmVuZGVyRXZlbnRSZXNpemU6ZnVuY3Rpb24oYSxiKXt0aGlzLnJlbmRlclJhbmdlSGVscGVyKGEsYil9LHVucmVuZGVyRXZlbnRSZXNpemU6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVySGVscGVyKCl9LHJlbmRlckhlbHBlcjpmdW5jdGlvbihiLGMpe3ZhciBkLGUsZixnLGg9dGhpcy5ldmVudHNUb1NlZ3MoW2JdKTtmb3IoaD10aGlzLnJlbmRlckZnU2VnRWxzKGgpLGQ9dGhpcy5yZW5kZXJTZWdUYWJsZShoKSxlPTA7ZTxoLmxlbmd0aDtlKyspZj1oW2VdLGMmJmMuY29sPT09Zi5jb2wmJihnPWMuZWwsZi5lbC5jc3Moe2xlZnQ6Zy5jc3MoImxlZnQiKSxyaWdodDpnLmNzcygicmlnaHQiKSwibWFyZ2luLWxlZnQiOmcuY3NzKCJtYXJnaW4tbGVmdCIpLCJtYXJnaW4tcmlnaHQiOmcuY3NzKCJtYXJnaW4tcmlnaHQiKX0pKTt0aGlzLmhlbHBlckVsPWEoJzxkaXYgY2xhc3M9ImZjLWhlbHBlci1za2VsZXRvbiIvPicpLmFwcGVuZChkKS5hcHBlbmRUbyh0aGlzLmVsKX0sdW5yZW5kZXJIZWxwZXI6ZnVuY3Rpb24oKXt0aGlzLmhlbHBlckVsJiYodGhpcy5oZWxwZXJFbC5yZW1vdmUoKSx0aGlzLmhlbHBlckVsPW51bGwpfSxyZW5kZXJTZWxlY3Rpb246ZnVuY3Rpb24oYSl7dGhpcy52aWV3Lm9wdCgic2VsZWN0SGVscGVyIik/dGhpcy5yZW5kZXJSYW5nZUhlbHBlcihhKTp0aGlzLnJlbmRlckhpZ2hsaWdodCh0aGlzLnNlbGVjdGlvblJhbmdlVG9TZWdzKGEpKX0sdW5yZW5kZXJTZWxlY3Rpb246ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVySGVscGVyKCksdGhpcy51bnJlbmRlckhpZ2hsaWdodCgpfSxyZW5kZXJGaWxsOmZ1bmN0aW9uKGIsYyxkKXt2YXIgZSxmLGcsaCxpLGosayxsLG0sbjtpZihjLmxlbmd0aCl7Zm9yKGM9dGhpcy5yZW5kZXJGaWxsU2VnRWxzKGIsYyksZT10aGlzLmdyb3VwU2VnQ29scyhjKSxkPWR8fGIudG9Mb3dlckNhc2UoKSxmPWEoJzxkaXYgY2xhc3M9ImZjLScrZCsnLXNrZWxldG9uIj48dGFibGU+PHRyLz48L3RhYmxlPjwvZGl2PicpLGc9Zi5maW5kKCJ0ciIpLGg9MDtoPGUubGVuZ3RoO2grKylpZihpPWVbaF0saj1hKCI8dGQvPiIpLmFwcGVuZFRvKGcpLGkubGVuZ3RoKWZvcihrPWEoJzxkaXYgY2xhc3M9ImZjLScrZCsnLWNvbnRhaW5lciIvPicpLmFwcGVuZFRvKGopLGw9dGhpcy5jb2xEYXRlc1toXSxtPTA7bTxpLmxlbmd0aDttKyspbj1pW21dLGsuYXBwZW5kKG4uZWwuY3NzKHt0b3A6dGhpcy5jb21wdXRlRGF0ZVRvcChuLnN0YXJ0LGwpLGJvdHRvbTotdGhpcy5jb21wdXRlRGF0ZVRvcChuLmVuZCxsKX0pKTt0aGlzLmJvb2tlbmRDZWxscyhnLGIpLHRoaXMuZWwuYXBwZW5kKGYpLHRoaXMuZWxzQnlGaWxsW2JdPWZ9cmV0dXJuIGN9fSk7aGIubWl4aW4oe2V2ZW50U2tlbGV0b25FbDpudWxsLHJlbmRlckZnU2VnczpmdW5jdGlvbihiKXtyZXR1cm4gYj10aGlzLnJlbmRlckZnU2VnRWxzKGIpLHRoaXMuZWwuYXBwZW5kKHRoaXMuZXZlbnRTa2VsZXRvbkVsPWEoJzxkaXYgY2xhc3M9ImZjLWNvbnRlbnQtc2tlbGV0b24iLz4nKS5hcHBlbmQodGhpcy5yZW5kZXJTZWdUYWJsZShiKSkpLGJ9LHVucmVuZGVyRmdTZWdzOmZ1bmN0aW9uKGEpe3RoaXMuZXZlbnRTa2VsZXRvbkVsJiYodGhpcy5ldmVudFNrZWxldG9uRWwucmVtb3ZlKCksdGhpcy5ldmVudFNrZWxldG9uRWw9bnVsbCl9LHJlbmRlclNlZ1RhYmxlOmZ1bmN0aW9uKGIpe3ZhciBjLGQsZSxmLGcsaCxpPWEoIjx0YWJsZT48dHIvPjwvdGFibGU+Iiksaj1pLmZpbmQoInRyIik7Zm9yKGM9dGhpcy5ncm91cFNlZ0NvbHMoYiksdGhpcy5jb21wdXRlU2VnVmVydGljYWxzKGIpLGY9MDtmPGMubGVuZ3RoO2YrKyl7Zm9yKGc9Y1tmXSx2YShnKSxoPWEoJzxkaXYgY2xhc3M9ImZjLWV2ZW50LWNvbnRhaW5lciIvPicpLGQ9MDtkPGcubGVuZ3RoO2QrKyllPWdbZF0sZS5lbC5jc3ModGhpcy5nZW5lcmF0ZVNlZ1Bvc2l0aW9uQ3NzKGUpKSxlLmJvdHRvbS1lLnRvcDwzMCYmZS5lbC5hZGRDbGFzcygiZmMtc2hvcnQiKSxoLmFwcGVuZChlLmVsKTtqLmFwcGVuZChhKCI8dGQvPiIpLmFwcGVuZChoKSl9cmV0dXJuIHRoaXMuYm9va2VuZENlbGxzKGosImV2ZW50U2tlbGV0b24iKSxpfSx1cGRhdGVTZWdWZXJ0aWNhbHM6ZnVuY3Rpb24oKXt2YXIgYSxiPSh0aGlzLnNlZ3N8fFtdKS5jb25jYXQodGhpcy5idXNpbmVzc0hvdXJTZWdzfHxbXSk7Zm9yKHRoaXMuY29tcHV0ZVNlZ1ZlcnRpY2FscyhiKSxhPTA7YTxiLmxlbmd0aDthKyspYlthXS5lbC5jc3ModGhpcy5nZW5lcmF0ZVNlZ1ZlcnRpY2FsQ3NzKGJbYV0pKX0sY29tcHV0ZVNlZ1ZlcnRpY2FsczpmdW5jdGlvbihhKXt2YXIgYixjO2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspYz1hW2JdLGMudG9wPXRoaXMuY29tcHV0ZURhdGVUb3AoYy5zdGFydCxjLnN0YXJ0KSxjLmJvdHRvbT10aGlzLmNvbXB1dGVEYXRlVG9wKGMuZW5kLGMuc3RhcnQpfSxmZ1NlZ0h0bWw6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZj10aGlzLnZpZXcsZz1hLmV2ZW50LGg9Zi5pc0V2ZW50RHJhZ2dhYmxlKGcpLGk9IWImJmEuaXNTdGFydCYmZi5pc0V2ZW50UmVzaXphYmxlRnJvbVN0YXJ0KGcpLGo9IWImJmEuaXNFbmQmJmYuaXNFdmVudFJlc2l6YWJsZUZyb21FbmQoZyksaz10aGlzLmdldFNlZ0NsYXNzZXMoYSxoLGl8fGopLGw9VCh0aGlzLmdldEV2ZW50U2tpbkNzcyhnKSk7cmV0dXJuIGsudW5zaGlmdCgiZmMtdGltZS1ncmlkLWV2ZW50IiwiZmMtdi1ldmVudCIpLGYuaXNNdWx0aURheUV2ZW50KGcpPyhhLmlzU3RhcnR8fGEuaXNFbmQpJiYoYz10aGlzLmdldEV2ZW50VGltZVRleHQoYSksZD10aGlzLmdldEV2ZW50VGltZVRleHQoYSwiTFQiKSxlPXRoaXMuZ2V0RXZlbnRUaW1lVGV4dChhLG51bGwsITEpKTooYz10aGlzLmdldEV2ZW50VGltZVRleHQoZyksZD10aGlzLmdldEV2ZW50VGltZVRleHQoZywiTFQiKSxlPXRoaXMuZ2V0RXZlbnRUaW1lVGV4dChnLG51bGwsITEpKSwnPGEgY2xhc3M9Iicray5qb2luKCIgIikrJyInKyhnLnVybD8nIGhyZWY9IicrUihnLnVybCkrJyInOiIiKSsobD8nIHN0eWxlPSInK2wrJyInOiIiKSsnPjxkaXYgY2xhc3M9ImZjLWNvbnRlbnQiPicrKGM/JzxkaXYgY2xhc3M9ImZjLXRpbWUiIGRhdGEtc3RhcnQ9IicrUihlKSsnIiBkYXRhLWZ1bGw9IicrUihkKSsnIj48c3Bhbj4nK1IoYykrIjwvc3Bhbj48L2Rpdj4iOiIiKSsoZy50aXRsZT8nPGRpdiBjbGFzcz0iZmMtdGl0bGUiPicrUihnLnRpdGxlKSsiPC9kaXY+IjoiIikrJzwvZGl2PjxkaXYgY2xhc3M9ImZjLWJnIi8+Jysoaj8nPGRpdiBjbGFzcz0iZmMtcmVzaXplciBmYy1lbmQtcmVzaXplciIgLz4nOiIiKSsiPC9hPiJ9LGdlbmVyYXRlU2VnUG9zaXRpb25Dc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkPXRoaXMudmlldy5vcHQoInNsb3RFdmVudE92ZXJsYXAiKSxlPWEuYmFja3dhcmRDb29yZCxmPWEuZm9yd2FyZENvb3JkLGc9dGhpcy5nZW5lcmF0ZVNlZ1ZlcnRpY2FsQ3NzKGEpO3JldHVybiBkJiYoZj1NYXRoLm1pbigxLGUrMiooZi1lKSkpLHRoaXMuaXNSVEw/KGI9MS1mLGM9ZSk6KGI9ZSxjPTEtZiksZy56SW5kZXg9YS5sZXZlbCsxLGcubGVmdD0xMDAqYisiJSIsZy5yaWdodD0xMDAqYysiJSIsZCYmYS5mb3J3YXJkUHJlc3N1cmUmJihnW3RoaXMuaXNSVEw/Im1hcmdpbkxlZnQiOiJtYXJnaW5SaWdodCJdPTIwKSxnfSxnZW5lcmF0ZVNlZ1ZlcnRpY2FsQ3NzOmZ1bmN0aW9uKGEpe3JldHVybnt0b3A6YS50b3AsYm90dG9tOi1hLmJvdHRvbX19LGdyb3VwU2VnQ29sczpmdW5jdGlvbihhKXt2YXIgYixjPVtdO2ZvcihiPTA7Yjx0aGlzLmNvbENudDtiKyspYy5wdXNoKFtdKTtmb3IoYj0wO2I8YS5sZW5ndGg7YisrKWNbYVtiXS5jb2xdLnB1c2goYVtiXSk7cmV0dXJuIGN9fSk7dmFyIGliPUphLlZpZXc9a2EuZXh0ZW5kKHt0eXBlOm51bGwsbmFtZTpudWxsLHRpdGxlOm51bGwsY2FsZW5kYXI6bnVsbCxvcHRpb25zOm51bGwsY29vcmRNYXA6bnVsbCxlbDpudWxsLGRpc3BsYXlpbmc6bnVsbCxpc1NrZWxldG9uUmVuZGVyZWQ6ITEsaXNFdmVudHNSZW5kZXJlZDohMSxzdGFydDpudWxsLGVuZDpudWxsLGludGVydmFsU3RhcnQ6bnVsbCxpbnRlcnZhbEVuZDpudWxsLGludGVydmFsRHVyYXRpb246bnVsbCxpbnRlcnZhbFVuaXQ6bnVsbCxpc1JUTDohMSxpc1NlbGVjdGVkOiExLHNjcm9sbGVyRWw6bnVsbCxzY3JvbGxUb3A6bnVsbCx3aWRnZXRIZWFkZXJDbGFzczpudWxsLHdpZGdldENvbnRlbnRDbGFzczpudWxsLGhpZ2hsaWdodFN0YXRlQ2xhc3M6bnVsbCxuZXh0RGF5VGhyZXNob2xkOm51bGwsaXNIaWRkZW5EYXlIYXNoOm51bGwsZG9jdW1lbnRNb3VzZWRvd25Qcm94eTpudWxsLGNvbnN0cnVjdG9yOmZ1bmN0aW9uKGEsYyxkLGUpe3RoaXMuY2FsZW5kYXI9YSx0aGlzLnR5cGU9dGhpcy5uYW1lPWMsdGhpcy5vcHRpb25zPWQsdGhpcy5pbnRlcnZhbER1cmF0aW9uPWV8fGIuZHVyYXRpb24oMSwiZGF5IiksdGhpcy5uZXh0RGF5VGhyZXNob2xkPWIuZHVyYXRpb24odGhpcy5vcHQoIm5leHREYXlUaHJlc2hvbGQiKSksdGhpcy5pbml0VGhlbWluZ1Byb3BzKCksdGhpcy5pbml0SGlkZGVuRGF5cygpLHRoaXMuaXNSVEw9dGhpcy5vcHQoImlzUlRMIiksdGhpcy5kb2N1bWVudE1vdXNlZG93blByb3h5PVgodGhpcywiZG9jdW1lbnRNb3VzZWRvd24iKSx0aGlzLmluaXRpYWxpemUoKX0saW5pdGlhbGl6ZTpmdW5jdGlvbigpe30sb3B0OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm9wdGlvbnNbYV19LHRyaWdnZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNhbGVuZGFyO3JldHVybiBjLnRyaWdnZXIuYXBwbHkoYyxbYSxifHx0aGlzXS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpLFt0aGlzXSkpfSxzZXREYXRlOmZ1bmN0aW9uKGEpe3RoaXMuc2V0UmFuZ2UodGhpcy5jb21wdXRlUmFuZ2UoYSkpfSxzZXRSYW5nZTpmdW5jdGlvbihiKXthLmV4dGVuZCh0aGlzLGIpLHRoaXMudXBkYXRlVGl0bGUoKX0sY29tcHV0ZVJhbmdlOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1FKHRoaXMuaW50ZXJ2YWxEdXJhdGlvbiksZT1hLmNsb25lKCkuc3RhcnRPZihkKSxmPWUuY2xvbmUoKS5hZGQodGhpcy5pbnRlcnZhbER1cmF0aW9uKTtyZXR1cm4veWVhcnxtb250aHx3ZWVrfGRheS8udGVzdChkKT8oZS5zdHJpcFRpbWUoKSxmLnN0cmlwVGltZSgpKTooZS5oYXNUaW1lKCl8fChlPXRoaXMuY2FsZW5kYXIucmV6b25lRGF0ZShlKSksZi5oYXNUaW1lKCl8fChmPXRoaXMuY2FsZW5kYXIucmV6b25lRGF0ZShmKSkpLGI9ZS5jbG9uZSgpLGI9dGhpcy5za2lwSGlkZGVuRGF5cyhiKSxjPWYuY2xvbmUoKSxjPXRoaXMuc2tpcEhpZGRlbkRheXMoYywtMSwhMCkse2ludGVydmFsVW5pdDpkLGludGVydmFsU3RhcnQ6ZSxpbnRlcnZhbEVuZDpmLHN0YXJ0OmIsZW5kOmN9fSxjb21wdXRlUHJldkRhdGU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubWFzc2FnZUN1cnJlbnREYXRlKGEuY2xvbmUoKS5zdGFydE9mKHRoaXMuaW50ZXJ2YWxVbml0KS5zdWJ0cmFjdCh0aGlzLmludGVydmFsRHVyYXRpb24pLC0xKX0sY29tcHV0ZU5leHREYXRlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm1hc3NhZ2VDdXJyZW50RGF0ZShhLmNsb25lKCkuc3RhcnRPZih0aGlzLmludGVydmFsVW5pdCkuYWRkKHRoaXMuaW50ZXJ2YWxEdXJhdGlvbikpfSxtYXNzYWdlQ3VycmVudERhdGU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5pbnRlcnZhbER1cmF0aW9uLmFzKCJkYXlzIik8PTEmJnRoaXMuaXNIaWRkZW5EYXkoYSkmJihhPXRoaXMuc2tpcEhpZGRlbkRheXMoYSxiKSxhLnN0YXJ0T2YoImRheSIpKSxhfSx1cGRhdGVUaXRsZTpmdW5jdGlvbigpe3RoaXMudGl0bGU9dGhpcy5jb21wdXRlVGl0bGUoKX0sY29tcHV0ZVRpdGxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZm9ybWF0UmFuZ2Uoe3N0YXJ0OnRoaXMuaW50ZXJ2YWxTdGFydCxlbmQ6dGhpcy5pbnRlcnZhbEVuZH0sdGhpcy5vcHQoInRpdGxlRm9ybWF0Iil8fHRoaXMuY29tcHV0ZVRpdGxlRm9ybWF0KCksdGhpcy5vcHQoInRpdGxlUmFuZ2VTZXBhcmF0b3IiKSl9LGNvbXB1dGVUaXRsZUZvcm1hdDpmdW5jdGlvbigpe3JldHVybiJ5ZWFyIj09dGhpcy5pbnRlcnZhbFVuaXQ/IllZWVkiOiJtb250aCI9PXRoaXMuaW50ZXJ2YWxVbml0P3RoaXMub3B0KCJtb250aFllYXJGb3JtYXQiKTp0aGlzLmludGVydmFsRHVyYXRpb24uYXMoImRheXMiKT4xPyJsbCI6IkxMIn0sZm9ybWF0UmFuZ2U6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZW5kO3JldHVybiBkLmhhc1RpbWUoKXx8KGQ9ZC5jbG9uZSgpLnN1YnRyYWN0KDEpKSxmYShhLnN0YXJ0LGQsYixjLHRoaXMub3B0KCJpc1JUTCIpKX0sc2V0RWxlbWVudDpmdW5jdGlvbihhKXt0aGlzLmVsPWEsdGhpcy5iaW5kR2xvYmFsSGFuZGxlcnMoKX0scmVtb3ZlRWxlbWVudDpmdW5jdGlvbigpe3RoaXMuY2xlYXIoKSx0aGlzLmlzU2tlbGV0b25SZW5kZXJlZCYmKHRoaXMudW5yZW5kZXJTa2VsZXRvbigpLHRoaXMuaXNTa2VsZXRvblJlbmRlcmVkPSExKSx0aGlzLnVuYmluZEdsb2JhbEhhbmRsZXJzKCksdGhpcy5lbC5yZW1vdmUoKX0sZGlzcGxheTpmdW5jdGlvbihiKXt2YXIgYz10aGlzLGQ9bnVsbDtyZXR1cm4gdGhpcy5kaXNwbGF5aW5nJiYoZD10aGlzLnF1ZXJ5U2Nyb2xsKCkpLHRoaXMuY2xlYXIoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGMuZGlzcGxheWluZz1hLndoZW4oYy5kaXNwbGF5VmlldyhiKSkudGhlbihmdW5jdGlvbigpe2MuZm9yY2VTY3JvbGwoYy5jb21wdXRlSW5pdGlhbFNjcm9sbChkKSksYy50cmlnZ2VyUmVuZGVyKCl9KX0pfSxjbGVhcjpmdW5jdGlvbigpe3ZhciBiPXRoaXMsYz10aGlzLmRpc3BsYXlpbmc7cmV0dXJuIGM/Yy50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGIuZGlzcGxheWluZz1udWxsLGIuY2xlYXJFdmVudHMoKSxiLmNsZWFyVmlldygpfSk6YS53aGVuKCl9LGRpc3BsYXlWaWV3OmZ1bmN0aW9uKGEpe3RoaXMuaXNTa2VsZXRvblJlbmRlcmVkfHwodGhpcy5yZW5kZXJTa2VsZXRvbigpLHRoaXMuaXNTa2VsZXRvblJlbmRlcmVkPSEwKSx0aGlzLnNldERhdGUoYSksdGhpcy5yZW5kZXImJnRoaXMucmVuZGVyKCksdGhpcy5yZW5kZXJEYXRlcygpLHRoaXMudXBkYXRlU2l6ZSgpLHRoaXMucmVuZGVyQnVzaW5lc3NIb3VycygpfSxjbGVhclZpZXc6ZnVuY3Rpb24oKXt0aGlzLnVuc2VsZWN0KCksdGhpcy50cmlnZ2VyVW5yZW5kZXIoKSx0aGlzLnVucmVuZGVyQnVzaW5lc3NIb3VycygpLHRoaXMudW5yZW5kZXJEYXRlcygpLHRoaXMuZGVzdHJveSYmdGhpcy5kZXN0cm95KCl9LHJlbmRlclNrZWxldG9uOmZ1bmN0aW9uKCl7fSx1bnJlbmRlclNrZWxldG9uOmZ1bmN0aW9uKCl7fSxyZW5kZXJEYXRlczpmdW5jdGlvbigpe30sdW5yZW5kZXJEYXRlczpmdW5jdGlvbigpe30scmVuZGVyQnVzaW5lc3NIb3VyczpmdW5jdGlvbigpe30sdW5yZW5kZXJCdXNpbmVzc0hvdXJzOmZ1bmN0aW9uKCl7fSx0cmlnZ2VyUmVuZGVyOmZ1bmN0aW9uKCl7dGhpcy50cmlnZ2VyKCJ2aWV3UmVuZGVyIix0aGlzLHRoaXMsdGhpcy5lbCl9LHRyaWdnZXJVbnJlbmRlcjpmdW5jdGlvbigpe3RoaXMudHJpZ2dlcigidmlld0Rlc3Ryb3kiLHRoaXMsdGhpcyx0aGlzLmVsKX0sYmluZEdsb2JhbEhhbmRsZXJzOmZ1bmN0aW9uKCl7YShkb2N1bWVudCkub24oIm1vdXNlZG93biIsdGhpcy5kb2N1bWVudE1vdXNlZG93blByb3h5KX0sdW5iaW5kR2xvYmFsSGFuZGxlcnM6ZnVuY3Rpb24oKXthKGRvY3VtZW50KS5vZmYoIm1vdXNlZG93biIsdGhpcy5kb2N1bWVudE1vdXNlZG93blByb3h5KX0saW5pdFRoZW1pbmdQcm9wczpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0KCJ0aGVtZSIpPyJ1aSI6ImZjIjt0aGlzLndpZGdldEhlYWRlckNsYXNzPWErIi13aWRnZXQtaGVhZGVyIix0aGlzLndpZGdldENvbnRlbnRDbGFzcz1hKyItd2lkZ2V0LWNvbnRlbnQiLHRoaXMuaGlnaGxpZ2h0U3RhdGVDbGFzcz1hKyItc3RhdGUtaGlnaGxpZ2h0In0sdXBkYXRlU2l6ZTpmdW5jdGlvbihhKXt2YXIgYjthJiYoYj10aGlzLnF1ZXJ5U2Nyb2xsKCkpLHRoaXMudXBkYXRlSGVpZ2h0KGEpLHRoaXMudXBkYXRlV2lkdGgoYSksYSYmdGhpcy5zZXRTY3JvbGwoYil9LHVwZGF0ZVdpZHRoOmZ1bmN0aW9uKGEpe30sdXBkYXRlSGVpZ2h0OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY2FsZW5kYXI7dGhpcy5zZXRIZWlnaHQoYi5nZXRTdWdnZXN0ZWRWaWV3SGVpZ2h0KCksYi5pc0hlaWdodEF1dG8oKSl9LHNldEhlaWdodDpmdW5jdGlvbihhLGIpe30sY29tcHV0ZVNjcm9sbGVySGVpZ2h0OmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD10aGlzLnNjcm9sbGVyRWw7cmV0dXJuIGI9dGhpcy5lbC5hZGQoZCksYi5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSIsbGVmdDotMX0pLGM9dGhpcy5lbC5vdXRlckhlaWdodCgpLWQuaGVpZ2h0KCksYi5jc3Moe3Bvc2l0aW9uOiIiLGxlZnQ6IiJ9KSxhLWN9LGNvbXB1dGVJbml0aWFsU2Nyb2xsOmZ1bmN0aW9uKGEpe3JldHVybiAwfSxxdWVyeVNjcm9sbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNjcm9sbGVyRWw/dGhpcy5zY3JvbGxlckVsLnNjcm9sbFRvcCgpOnZvaWQgMH0sc2V0U2Nyb2xsOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnNjcm9sbGVyRWw/dGhpcy5zY3JvbGxlckVsLnNjcm9sbFRvcChhKTp2b2lkIDB9LGZvcmNlU2Nyb2xsOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7dGhpcy5zZXRTY3JvbGwoYSksc2V0VGltZW91dChmdW5jdGlvbigpe2Iuc2V0U2Nyb2xsKGEpfSwwKX0sZGlzcGxheUV2ZW50czpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnF1ZXJ5U2Nyb2xsKCk7dGhpcy5jbGVhckV2ZW50cygpLHRoaXMucmVuZGVyRXZlbnRzKGEpLHRoaXMuaXNFdmVudHNSZW5kZXJlZD0hMCx0aGlzLnNldFNjcm9sbChiKSx0aGlzLnRyaWdnZXJFdmVudFJlbmRlcigpfSxjbGVhckV2ZW50czpmdW5jdGlvbigpe3RoaXMuaXNFdmVudHNSZW5kZXJlZCYmKHRoaXMudHJpZ2dlckV2ZW50VW5yZW5kZXIoKSx0aGlzLmRlc3Ryb3lFdmVudHMmJnRoaXMuZGVzdHJveUV2ZW50cygpLHRoaXMudW5yZW5kZXJFdmVudHMoKSx0aGlzLmlzRXZlbnRzUmVuZGVyZWQ9ITEpfSxyZW5kZXJFdmVudHM6ZnVuY3Rpb24oYSl7fSx1bnJlbmRlckV2ZW50czpmdW5jdGlvbigpe30sdHJpZ2dlckV2ZW50UmVuZGVyOmZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJlZEV2ZW50U2VnRWFjaChmdW5jdGlvbihhKXt0aGlzLnRyaWdnZXIoImV2ZW50QWZ0ZXJSZW5kZXIiLGEuZXZlbnQsYS5ldmVudCxhLmVsKX0pLHRoaXMudHJpZ2dlcigiZXZlbnRBZnRlckFsbFJlbmRlciIpfSx0cmlnZ2VyRXZlbnRVbnJlbmRlcjpmdW5jdGlvbigpe3RoaXMucmVuZGVyZWRFdmVudFNlZ0VhY2goZnVuY3Rpb24oYSl7dGhpcy50cmlnZ2VyKCJldmVudERlc3Ryb3kiLGEuZXZlbnQsYS5ldmVudCxhLmVsKX0pfSxyZXNvbHZlRXZlbnRFbDpmdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMudHJpZ2dlcigiZXZlbnRSZW5kZXIiLGIsYixjKTtyZXR1cm4gZD09PSExP2M9bnVsbDpkJiZkIT09ITAmJihjPWEoZCkpLGN9LHNob3dFdmVudDpmdW5jdGlvbihhKXt0aGlzLnJlbmRlcmVkRXZlbnRTZWdFYWNoKGZ1bmN0aW9uKGEpe2EuZWwuY3NzKCJ2aXNpYmlsaXR5IiwiIil9LGEpfSxoaWRlRXZlbnQ6ZnVuY3Rpb24oYSl7dGhpcy5yZW5kZXJlZEV2ZW50U2VnRWFjaChmdW5jdGlvbihhKXthLmVsLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpfSxhKX0scmVuZGVyZWRFdmVudFNlZ0VhY2g6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPXRoaXMuZ2V0RXZlbnRTZWdzKCk7Zm9yKGM9MDtjPGQubGVuZ3RoO2MrKyliJiZkW2NdLmV2ZW50Ll9pZCE9PWIuX2lkfHxkW2NdLmVsJiZhLmNhbGwodGhpcyxkW2NdKX0sZ2V0RXZlbnRTZWdzOmZ1bmN0aW9uKCl7cmV0dXJuW119LGlzRXZlbnREcmFnZ2FibGU6ZnVuY3Rpb24oYSl7dmFyIGI9YS5zb3VyY2V8fHt9O3JldHVybiBRKGEuc3RhcnRFZGl0YWJsZSxiLnN0YXJ0RWRpdGFibGUsdGhpcy5vcHQoImV2ZW50U3RhcnRFZGl0YWJsZSIpLGEuZWRpdGFibGUsYi5lZGl0YWJsZSx0aGlzLm9wdCgiZWRpdGFibGUiKSl9LHJlcG9ydEV2ZW50RHJvcDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPXRoaXMuY2FsZW5kYXIsZz1mLm11dGF0ZUV2ZW50KGEsYixjKSxoPWZ1bmN0aW9uKCl7Zy51bmRvKCksZi5yZXBvcnRFdmVudENoYW5nZSgpfTt0aGlzLnRyaWdnZXJFdmVudERyb3AoYSxnLmRhdGVEZWx0YSxoLGQsZSksZi5yZXBvcnRFdmVudENoYW5nZSgpfSx0cmlnZ2VyRXZlbnREcm9wOmZ1bmN0aW9uKGEsYixjLGQsZSl7dGhpcy50cmlnZ2VyKCJldmVudERyb3AiLGRbMF0sYSxiLGMsZSx7fSl9LHJlcG9ydEV4dGVybmFsRHJvcDpmdW5jdGlvbihiLGMsZCxlLGYpe3ZhciBnLGgsaT1iLmV2ZW50UHJvcHM7aSYmKGc9YS5leHRlbmQoe30saSxjKSxoPXRoaXMuY2FsZW5kYXIucmVuZGVyRXZlbnQoZyxiLnN0aWNrKVswXSksdGhpcy50cmlnZ2VyRXh0ZXJuYWxEcm9wKGgsYyxkLGUsZil9LHRyaWdnZXJFeHRlcm5hbERyb3A6ZnVuY3Rpb24oYSxiLGMsZCxlKXt0aGlzLnRyaWdnZXIoImRyb3AiLGNbMF0sYi5zdGFydCxkLGUpLGEmJnRoaXMudHJpZ2dlcigiZXZlbnRSZWNlaXZlIixudWxsLGEpfSxyZW5kZXJEcmFnOmZ1bmN0aW9uKGEsYil7fSx1bnJlbmRlckRyYWc6ZnVuY3Rpb24oKXt9LGlzRXZlbnRSZXNpemFibGVGcm9tU3RhcnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMub3B0KCJldmVudFJlc2l6YWJsZUZyb21TdGFydCIpJiZ0aGlzLmlzRXZlbnRSZXNpemFibGUoYSl9LGlzRXZlbnRSZXNpemFibGVGcm9tRW5kOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmlzRXZlbnRSZXNpemFibGUoYSl9LGlzRXZlbnRSZXNpemFibGU6ZnVuY3Rpb24oYSl7dmFyIGI9YS5zb3VyY2V8fHt9O3JldHVybiBRKGEuZHVyYXRpb25FZGl0YWJsZSxiLmR1cmF0aW9uRWRpdGFibGUsdGhpcy5vcHQoImV2ZW50RHVyYXRpb25FZGl0YWJsZSIpLGEuZWRpdGFibGUsYi5lZGl0YWJsZSx0aGlzLm9wdCgiZWRpdGFibGUiKSl9LHJlcG9ydEV2ZW50UmVzaXplOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9dGhpcy5jYWxlbmRhcixnPWYubXV0YXRlRXZlbnQoYSxiLGMpLGg9ZnVuY3Rpb24oKXtnLnVuZG8oKSxmLnJlcG9ydEV2ZW50Q2hhbmdlKCl9O3RoaXMudHJpZ2dlckV2ZW50UmVzaXplKGEsZy5kdXJhdGlvbkRlbHRhLGgsZCxlKSxmLnJlcG9ydEV2ZW50Q2hhbmdlKCl9LHRyaWdnZXJFdmVudFJlc2l6ZTpmdW5jdGlvbihhLGIsYyxkLGUpe3RoaXMudHJpZ2dlcigiZXZlbnRSZXNpemUiLGRbMF0sYSxiLGMsZSx7fSl9LHNlbGVjdDpmdW5jdGlvbihhLGIpe3RoaXMudW5zZWxlY3QoYiksdGhpcy5yZW5kZXJTZWxlY3Rpb24oYSksdGhpcy5yZXBvcnRTZWxlY3Rpb24oYSxiKX0scmVuZGVyU2VsZWN0aW9uOmZ1bmN0aW9uKGEpe30scmVwb3J0U2VsZWN0aW9uOmZ1bmN0aW9uKGEsYil7dGhpcy5pc1NlbGVjdGVkPSEwLHRoaXMudHJpZ2dlclNlbGVjdChhLGIpfSx0cmlnZ2VyU2VsZWN0OmZ1bmN0aW9uKGEsYil7dGhpcy50cmlnZ2VyKCJzZWxlY3QiLG51bGwsYS5zdGFydCxhLmVuZCxiKX0sdW5zZWxlY3Q6ZnVuY3Rpb24oYSl7dGhpcy5pc1NlbGVjdGVkJiYodGhpcy5pc1NlbGVjdGVkPSExLHRoaXMuZGVzdHJveVNlbGVjdGlvbiYmdGhpcy5kZXN0cm95U2VsZWN0aW9uKCksdGhpcy51bnJlbmRlclNlbGVjdGlvbigpLHRoaXMudHJpZ2dlcigidW5zZWxlY3QiLG51bGwsYSkpfSx1bnJlbmRlclNlbGVjdGlvbjpmdW5jdGlvbigpe30sZG9jdW1lbnRNb3VzZWRvd246ZnVuY3Rpb24oYil7dmFyIGM7dGhpcy5pc1NlbGVjdGVkJiZ0aGlzLm9wdCgidW5zZWxlY3RBdXRvIikmJnYoYikmJihjPXRoaXMub3B0KCJ1bnNlbGVjdENhbmNlbCIpLGMmJmEoYi50YXJnZXQpLmNsb3Nlc3QoYykubGVuZ3RofHx0aGlzLnVuc2VsZWN0KGIpKX0sdHJpZ2dlckRheUNsaWNrOmZ1bmN0aW9uKGEsYixjKXt0aGlzLnRyaWdnZXIoImRheUNsaWNrIixiLGEuc3RhcnQsYyl9LGluaXRIaWRkZW5EYXlzOmZ1bmN0aW9uKCl7dmFyIGIsYz10aGlzLm9wdCgiaGlkZGVuRGF5cyIpfHxbXSxkPVtdLGU9MDtmb3IodGhpcy5vcHQoIndlZWtlbmRzIik9PT0hMSYmYy5wdXNoKDAsNiksYj0wOzc+YjtiKyspKGRbYl09LTEhPT1hLmluQXJyYXkoYixjKSl8fGUrKztpZighZSl0aHJvdyJpbnZhbGlkIGhpZGRlbkRheXMiO3RoaXMuaXNIaWRkZW5EYXlIYXNoPWR9LGlzSGlkZGVuRGF5OmZ1bmN0aW9uKGEpe3JldHVybiBiLmlzTW9tZW50KGEpJiYoYT1hLmRheSgpKSx0aGlzLmlzSGlkZGVuRGF5SGFzaFthXX0sc2tpcEhpZGRlbkRheXM6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuY2xvbmUoKTtmb3IoYj1ifHwxO3RoaXMuaXNIaWRkZW5EYXlIYXNoWyhkLmRheSgpKyhjP2I6MCkrNyklN107KWQuYWRkKGIsImRheXMiKTtyZXR1cm4gZH0sY29tcHV0ZURheVJhbmdlOmZ1bmN0aW9uKGEpe3ZhciBiLGM9YS5zdGFydC5jbG9uZSgpLnN0cmlwVGltZSgpLGQ9YS5lbmQsZT1udWxsO3JldHVybiBkJiYoZT1kLmNsb25lKCkuc3RyaXBUaW1lKCksYj0rZC50aW1lKCksYiYmYj49dGhpcy5uZXh0RGF5VGhyZXNob2xkJiZlLmFkZCgxLCJkYXlzIikpLCghZHx8Yz49ZSkmJihlPWMuY2xvbmUoKS5hZGQoMSwiZGF5cyIpKSx7c3RhcnQ6YyxlbmQ6ZX19LGlzTXVsdGlEYXlFdmVudDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmNvbXB1dGVEYXlSYW5nZShhKTtyZXR1cm4gYi5lbmQuZGlmZihiLnN0YXJ0LCJkYXlzIik+MX19KSxqYj1KYS5DYWxlbmRhcj1rYS5leHRlbmQoe2RpckRlZmF1bHRzOm51bGwsbGFuZ0RlZmF1bHRzOm51bGwsb3ZlcnJpZGVzOm51bGwsb3B0aW9uczpudWxsLHZpZXdTcGVjQ2FjaGU6bnVsbCx2aWV3Om51bGwsaGVhZGVyOm51bGwsbG9hZGluZ0xldmVsOjAsY29uc3RydWN0b3I6RGEsaW5pdGlhbGl6ZTpmdW5jdGlvbigpe30saW5pdE9wdGlvbnM6ZnVuY3Rpb24oYSl7dmFyIGIsZSxmLGc7YT1kKGEpLGI9YS5sYW5nLGU9a2JbYl0sZXx8KGI9amIuZGVmYXVsdHMubGFuZyxlPWtiW2JdfHx7fSksZj1RKGEuaXNSVEwsZS5pc1JUTCxqYi5kZWZhdWx0cy5pc1JUTCksZz1mP2piLnJ0bERlZmF1bHRzOnt9LHRoaXMuZGlyRGVmYXVsdHM9Zyx0aGlzLmxhbmdEZWZhdWx0cz1lLHRoaXMub3ZlcnJpZGVzPWEsdGhpcy5vcHRpb25zPWMoW2piLmRlZmF1bHRzLGcsZSxhXSksRWEodGhpcy5vcHRpb25zKSx0aGlzLnZpZXdTcGVjQ2FjaGU9e319LGdldFZpZXdTcGVjOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMudmlld1NwZWNDYWNoZTtyZXR1cm4gYlthXXx8KGJbYV09dGhpcy5idWlsZFZpZXdTcGVjKGEpKX0sZ2V0VW5pdFZpZXdTcGVjOmZ1bmN0aW9uKGIpe3ZhciBjLGQsZTtpZigtMSE9YS5pbkFycmF5KGIsUmEpKWZvcihjPXRoaXMuaGVhZGVyLmdldFZpZXdzV2l0aEJ1dHRvbnMoKSxhLmVhY2goSmEudmlld3MsZnVuY3Rpb24oYSl7Yy5wdXNoKGEpfSksZD0wO2Q8Yy5sZW5ndGg7ZCsrKWlmKGU9dGhpcy5nZXRWaWV3U3BlYyhjW2RdKSxlJiZlLnNpbmdsZVVuaXQ9PWIpcmV0dXJuIGV9LGJ1aWxkVmlld1NwZWM6ZnVuY3Rpb24oYSl7Zm9yKHZhciBkLGUsZixnLGg9dGhpcy5vdmVycmlkZXMudmlld3N8fHt9LGk9W10saj1bXSxrPVtdLGw9YTtsOylkPUthW2xdLGU9aFtsXSxsPW51bGwsImZ1bmN0aW9uIj09dHlwZW9mIGQmJihkPXsiY2xhc3MiOmR9KSxkJiYoaS51bnNoaWZ0KGQpLGoudW5zaGlmdChkLmRlZmF1bHRzfHx7fSksZj1mfHxkLmR1cmF0aW9uLGw9bHx8ZC50eXBlKSxlJiYoay51bnNoaWZ0KGUpLGY9Znx8ZS5kdXJhdGlvbixsPWx8fGUudHlwZSk7cmV0dXJuIGQ9SihpKSxkLnR5cGU9YSxkWyJjbGFzcyJdPyhmJiYoZj1iLmR1cmF0aW9uKGYpLGYudmFsdWVPZigpJiYoZC5kdXJhdGlvbj1mLGc9RShmKSwxPT09Zi5hcyhnKSYmKGQuc2luZ2xlVW5pdD1nLGsudW5zaGlmdChoW2ddfHx7fSkpKSksZC5kZWZhdWx0cz1jKGopLGQub3ZlcnJpZGVzPWMoayksdGhpcy5idWlsZFZpZXdTcGVjT3B0aW9ucyhkKSx0aGlzLmJ1aWxkVmlld1NwZWNCdXR0b25UZXh0KGQsYSksZCk6ITF9LGJ1aWxkVmlld1NwZWNPcHRpb25zOmZ1bmN0aW9uKGEpe2Eub3B0aW9ucz1jKFtqYi5kZWZhdWx0cyxhLmRlZmF1bHRzLHRoaXMuZGlyRGVmYXVsdHMsdGhpcy5sYW5nRGVmYXVsdHMsdGhpcy5vdmVycmlkZXMsYS5vdmVycmlkZXNdKSxFYShhLm9wdGlvbnMpfSxidWlsZFZpZXdTcGVjQnV0dG9uVGV4dDpmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYyl7dmFyIGQ9Yy5idXR0b25UZXh0fHx7fTtyZXR1cm4gZFtiXXx8KGEuc2luZ2xlVW5pdD9kW2Euc2luZ2xlVW5pdF06bnVsbCl9YS5idXR0b25UZXh0T3ZlcnJpZGU9Yyh0aGlzLm92ZXJyaWRlcyl8fGEub3ZlcnJpZGVzLmJ1dHRvblRleHQsYS5idXR0b25UZXh0RGVmYXVsdD1jKHRoaXMubGFuZ0RlZmF1bHRzKXx8Yyh0aGlzLmRpckRlZmF1bHRzKXx8YS5kZWZhdWx0cy5idXR0b25UZXh0fHxjKGpiLmRlZmF1bHRzKXx8KGEuZHVyYXRpb24/dGhpcy5odW1hbml6ZUR1cmF0aW9uKGEuZHVyYXRpb24pOm51bGwpfHxifSxpbnN0YW50aWF0ZVZpZXc6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5nZXRWaWV3U3BlYyhhKTtyZXR1cm4gbmV3IGJbImNsYXNzIl0odGhpcyxhLGIub3B0aW9ucyxiLmR1cmF0aW9uKX0saXNWYWxpZFZpZXdUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiBCb29sZWFuKHRoaXMuZ2V0Vmlld1NwZWMoYSkpfSxwdXNoTG9hZGluZzpmdW5jdGlvbigpe3RoaXMubG9hZGluZ0xldmVsKyt8fHRoaXMudHJpZ2dlcigibG9hZGluZyIsbnVsbCwhMCx0aGlzLnZpZXcpfSxwb3BMb2FkaW5nOmZ1bmN0aW9uKCl7LS10aGlzLmxvYWRpbmdMZXZlbHx8dGhpcy50cmlnZ2VyKCJsb2FkaW5nIixudWxsLCExLHRoaXMudmlldyl9LGJ1aWxkU2VsZWN0UmFuZ2U6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT10aGlzLm1vbWVudChhKSxiPWI/dGhpcy5tb21lbnQoYik6YS5oYXNUaW1lKCk/YS5jbG9uZSgpLmFkZCh0aGlzLmRlZmF1bHRUaW1lZEV2ZW50RHVyYXRpb24pOmEuY2xvbmUoKS5hZGQodGhpcy5kZWZhdWx0QWxsRGF5RXZlbnREdXJhdGlvbikse3N0YXJ0OmEsZW5kOmJ9fX0pO2piLmRlZmF1bHRzPXt0aXRsZVJhbmdlU2VwYXJhdG9yOiIg4oCUICIsbW9udGhZZWFyRm9ybWF0OiJNTU1NIFlZWVkiLGRlZmF1bHRUaW1lZEV2ZW50RHVyYXRpb246IjAyOjAwOjAwIixkZWZhdWx0QWxsRGF5RXZlbnREdXJhdGlvbjp7ZGF5czoxfSxmb3JjZUV2ZW50RHVyYXRpb246ITEsbmV4dERheVRocmVzaG9sZDoiMDk6MDA6MDAiLGRlZmF1bHRWaWV3OiJtb250aCIsYXNwZWN0UmF0aW86MS4zNSxoZWFkZXI6e2xlZnQ6InRpdGxlIixjZW50ZXI6IiIscmlnaHQ6InRvZGF5IHByZXYsbmV4dCJ9LHdlZWtlbmRzOiEwLHdlZWtOdW1iZXJzOiExLHdlZWtOdW1iZXJUaXRsZToiVyIsd2Vla051bWJlckNhbGN1bGF0aW9uOiJsb2NhbCIsc2Nyb2xsVGltZToiMDY6MDA6MDAiLGxhenlGZXRjaGluZzohMCxzdGFydFBhcmFtOiJzdGFydCIsZW5kUGFyYW06ImVuZCIsdGltZXpvbmVQYXJhbToidGltZXpvbmUiLHRpbWV6b25lOiExLGlzUlRMOiExLGJ1dHRvblRleHQ6e3ByZXY6InByZXYiLG5leHQ6Im5leHQiLHByZXZZZWFyOiJwcmV2IHllYXIiLG5leHRZZWFyOiJuZXh0IHllYXIiLHllYXI6InllYXIiLHRvZGF5OiJ0b2RheSIsbW9udGg6Im1vbnRoIix3ZWVrOiJ3ZWVrIixkYXk6ImRheSJ9LGJ1dHRvbkljb25zOntwcmV2OiJsZWZ0LXNpbmdsZS1hcnJvdyIsbmV4dDoicmlnaHQtc2luZ2xlLWFycm93IixwcmV2WWVhcjoibGVmdC1kb3VibGUtYXJyb3ciLG5leHRZZWFyOiJyaWdodC1kb3VibGUtYXJyb3cifSx0aGVtZTohMSx0aGVtZUJ1dHRvbkljb25zOntwcmV2OiJjaXJjbGUtdHJpYW5nbGUtdyIsbmV4dDoiY2lyY2xlLXRyaWFuZ2xlLWUiLHByZXZZZWFyOiJzZWVrLXByZXYiLG5leHRZZWFyOiJzZWVrLW5leHQifSxkcmFnT3BhY2l0eTouNzUsZHJhZ1JldmVydER1cmF0aW9uOjUwMCxkcmFnU2Nyb2xsOiEwLHVuc2VsZWN0QXV0bzohMCxkcm9wQWNjZXB0OiIqIixldmVudExpbWl0OiExLGV2ZW50TGltaXRUZXh0OiJtb3JlIixldmVudExpbWl0Q2xpY2s6InBvcG92ZXIiLGRheVBvcG92ZXJGb3JtYXQ6IkxMIixoYW5kbGVXaW5kb3dSZXNpemU6ITAsd2luZG93UmVzaXplRGVsYXk6MjAwfSxqYi5lbmdsaXNoRGVmYXVsdHM9e2RheVBvcG92ZXJGb3JtYXQ6ImRkZGQsIE1NTU0gRCJ9LGpiLnJ0bERlZmF1bHRzPXtoZWFkZXI6e2xlZnQ6Im5leHQscHJldiB0b2RheSIsY2VudGVyOiIiLHJpZ2h0OiJ0aXRsZSJ9LGJ1dHRvbkljb25zOntwcmV2OiJyaWdodC1zaW5nbGUtYXJyb3ciLG5leHQ6ImxlZnQtc2luZ2xlLWFycm93IixwcmV2WWVhcjoicmlnaHQtZG91YmxlLWFycm93IixuZXh0WWVhcjoibGVmdC1kb3VibGUtYXJyb3cifSx0aGVtZUJ1dHRvbkljb25zOntwcmV2OiJjaXJjbGUtdHJpYW5nbGUtZSIsbmV4dDoiY2lyY2xlLXRyaWFuZ2xlLXciLG5leHRZZWFyOiJzZWVrLXByZXYiLHByZXZZZWFyOiJzZWVrLW5leHQifX07dmFyIGtiPUphLmxhbmdzPXt9O0phLmRhdGVwaWNrZXJMYW5nPWZ1bmN0aW9uKGIsYyxkKXt2YXIgZT1rYltiXXx8KGtiW2JdPXt9KTtlLmlzUlRMPWQuaXNSVEwsZS53ZWVrTnVtYmVyVGl0bGU9ZC53ZWVrSGVhZGVyLGEuZWFjaChsYixmdW5jdGlvbihhLGIpe2VbYV09YihkKX0pLGEuZGF0ZXBpY2tlciYmKGEuZGF0ZXBpY2tlci5yZWdpb25hbFtjXT1hLmRhdGVwaWNrZXIucmVnaW9uYWxbYl09ZCxhLmRhdGVwaWNrZXIucmVnaW9uYWwuZW49YS5kYXRlcGlja2VyLnJlZ2lvbmFsWyIiXSxhLmRhdGVwaWNrZXIuc2V0RGVmYXVsdHMoZCkpfSxKYS5sYW5nPWZ1bmN0aW9uKGIsZCl7dmFyIGUsZjtlPWtiW2JdfHwoa2JbYl09e30pLGQmJihlPWtiW2JdPWMoW2UsZF0pKSxmPUZhKGIpLGEuZWFjaChtYixmdW5jdGlvbihhLGIpe251bGw9PWVbYV0mJihlW2FdPWIoZixlKSl9KSxqYi5kZWZhdWx0cy5sYW5nPWJ9O3ZhciBsYj17YnV0dG9uVGV4dDpmdW5jdGlvbihhKXtyZXR1cm57cHJldjpTKGEucHJldlRleHQpLG5leHQ6UyhhLm5leHRUZXh0KSx0b2RheTpTKGEuY3VycmVudFRleHQpfX0sbW9udGhZZWFyRm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnNob3dNb250aEFmdGVyWWVhcj8iWVlZWVsiK2EueWVhclN1ZmZpeCsiXSBNTU1NIjoiTU1NTSBZWVlZWyIrYS55ZWFyU3VmZml4KyJdIn19LG1iPXtkYXlPZk1vbnRoRm9ybWF0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5sb25nRGF0ZUZvcm1hdCgibCIpO3JldHVybiBjPWMucmVwbGFjZSgvXlkrW15cd1xzXSp8W15cd1xzXSpZKyQvZywiIiksYi5pc1JUTD9jKz0iIGRkZCI6Yz0iZGRkICIrYyxjfSxtZWRpdW1UaW1lRm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmxvbmdEYXRlRm9ybWF0KCJMVCIpLnJlcGxhY2UoL1xzKmEkL2ksImEiKX0sc21hbGxUaW1lRm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmxvbmdEYXRlRm9ybWF0KCJMVCIpLnJlcGxhY2UoIjptbSIsIig6bW0pIikucmVwbGFjZSgvKFxXbW0pJC8sIigkMSkiKS5yZXBsYWNlKC9ccyphJC9pLCJhIil9LGV4dHJhU21hbGxUaW1lRm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmxvbmdEYXRlRm9ybWF0KCJMVCIpLnJlcGxhY2UoIjptbSIsIig6bW0pIikucmVwbGFjZSgvKFxXbW0pJC8sIigkMSkiKS5yZXBsYWNlKC9ccyphJC9pLCJ0Iil9LGhvdXJGb3JtYXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubG9uZ0RhdGVGb3JtYXQoIkxUIikucmVwbGFjZSgiOm1tIiwiIikucmVwbGFjZSgvKFxXbW0pJC8sIiIpLnJlcGxhY2UoL1xzKmEkL2ksImEiKX0sbm9NZXJpZGllbVRpbWVGb3JtYXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubG9uZ0RhdGVGb3JtYXQoIkxUIikucmVwbGFjZSgvXHMqYSQvaSwiIil9fSxuYj17c21hbGxEYXlEYXRlRm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmlzUlRMPyJEIGRkIjoiZGQgRCJ9LHdlZWtGb3JtYXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaXNSVEw/IndbICIrYS53ZWVrTnVtYmVyVGl0bGUrIl0iOiJbIithLndlZWtOdW1iZXJUaXRsZSsiIF13In0sc21hbGxXZWVrRm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmlzUlRMPyJ3WyIrYS53ZWVrTnVtYmVyVGl0bGUrIl0iOiJbIithLndlZWtOdW1iZXJUaXRsZSsiXXcifX07SmEubGFuZygiZW4iLGpiLmVuZ2xpc2hEZWZhdWx0cyksSmEuc291cmNlTm9ybWFsaXplcnM9W10sSmEuc291cmNlRmV0Y2hlcnM9W107dmFyIG9iPXtkYXRhVHlwZToianNvbiIsY2FjaGU6ITF9LHBiPTE7amIucHJvdG90eXBlLmdldFBlZXJFdmVudHM9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9dGhpcy5nZXRFdmVudENhY2hlKCksZj1bXTtmb3IoYz0wO2M8ZS5sZW5ndGg7YysrKWQ9ZVtjXSxhJiZhLl9pZD09PWQuX2lkfHxmLnB1c2goZCk7cmV0dXJuIGZ9O3ZhciBxYj1pYi5leHRlbmQoe2RheUdyaWQ6bnVsbCxkYXlOdW1iZXJzVmlzaWJsZTohMSx3ZWVrTnVtYmVyc1Zpc2libGU6ITEsd2Vla051bWJlcldpZHRoOm51bGwsaGVhZFJvd0VsOm51bGwsaW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMuZGF5R3JpZD1uZXcgZ2IodGhpcyksdGhpcy5jb29yZE1hcD10aGlzLmRheUdyaWQuY29vcmRNYXB9LHNldFJhbmdlOmZ1bmN0aW9uKGEpe2liLnByb3RvdHlwZS5zZXRSYW5nZS5jYWxsKHRoaXMsYSksdGhpcy5kYXlHcmlkLmJyZWFrT25XZWVrcz0veWVhcnxtb250aHx3ZWVrLy50ZXN0KHRoaXMuaW50ZXJ2YWxVbml0KSx0aGlzLmRheUdyaWQuc2V0UmFuZ2UoYSl9LGNvbXB1dGVSYW5nZTpmdW5jdGlvbihhKXt2YXIgYj1pYi5wcm90b3R5cGUuY29tcHV0ZVJhbmdlLmNhbGwodGhpcyxhKTtyZXR1cm4veWVhcnxtb250aC8udGVzdChiLmludGVydmFsVW5pdCkmJihiLnN0YXJ0LnN0YXJ0T2YoIndlZWsiKSxiLnN0YXJ0PXRoaXMuc2tpcEhpZGRlbkRheXMoYi5zdGFydCksYi5lbmQud2Vla2RheSgpJiYoYi5lbmQuYWRkKDEsIndlZWsiKS5zdGFydE9mKCJ3ZWVrIiksYi5lbmQ9dGhpcy5za2lwSGlkZGVuRGF5cyhiLmVuZCwtMSwhMCkpKSxifSxyZW5kZXJEYXRlczpmdW5jdGlvbigpe3RoaXMuZGF5TnVtYmVyc1Zpc2libGU9dGhpcy5kYXlHcmlkLnJvd0NudD4xLHRoaXMud2Vla051bWJlcnNWaXNpYmxlPXRoaXMub3B0KCJ3ZWVrTnVtYmVycyIpLHRoaXMuZGF5R3JpZC5udW1iZXJzVmlzaWJsZT10aGlzLmRheU51bWJlcnNWaXNpYmxlfHx0aGlzLndlZWtOdW1iZXJzVmlzaWJsZSx0aGlzLmVsLmFkZENsYXNzKCJmYy1iYXNpYy12aWV3IikuaHRtbCh0aGlzLnJlbmRlckh0bWwoKSksdGhpcy5oZWFkUm93RWw9dGhpcy5lbC5maW5kKCJ0aGVhZCAuZmMtcm93IiksdGhpcy5zY3JvbGxlckVsPXRoaXMuZWwuZmluZCgiLmZjLWRheS1ncmlkLWNvbnRhaW5lciIpLHRoaXMuZGF5R3JpZC5jb29yZE1hcC5jb250YWluZXJFbD10aGlzLnNjcm9sbGVyRWwsdGhpcy5kYXlHcmlkLnNldEVsZW1lbnQodGhpcy5lbC5maW5kKCIuZmMtZGF5LWdyaWQiKSksdGhpcy5kYXlHcmlkLnJlbmRlckRhdGVzKHRoaXMuaGFzUmlnaWRSb3dzKCkpfSx1bnJlbmRlckRhdGVzOmZ1bmN0aW9uKCl7dGhpcy5kYXlHcmlkLnVucmVuZGVyRGF0ZXMoKSx0aGlzLmRheUdyaWQucmVtb3ZlRWxlbWVudCgpfSxyZW5kZXJCdXNpbmVzc0hvdXJzOmZ1bmN0aW9uKCl7dGhpcy5kYXlHcmlkLnJlbmRlckJ1c2luZXNzSG91cnMoKX0scmVuZGVySHRtbDpmdW5jdGlvbigpe3JldHVybic8dGFibGU+PHRoZWFkIGNsYXNzPSJmYy1oZWFkIj48dHI+PHRkIGNsYXNzPSInK3RoaXMud2lkZ2V0SGVhZGVyQ2xhc3MrJyI+Jyt0aGlzLmRheUdyaWQuaGVhZEh0bWwoKSsnPC90ZD48L3RyPjwvdGhlYWQ+PHRib2R5IGNsYXNzPSJmYy1ib2R5Ij48dHI+PHRkIGNsYXNzPSInK3RoaXMud2lkZ2V0Q29udGVudENsYXNzKyciPjxkaXYgY2xhc3M9ImZjLWRheS1ncmlkLWNvbnRhaW5lciI+PGRpdiBjbGFzcz0iZmMtZGF5LWdyaWQiLz48L2Rpdj48L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPid9LGhlYWRJbnRyb0h0bWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53ZWVrTnVtYmVyc1Zpc2libGU/Jzx0aCBjbGFzcz0iZmMtd2Vlay1udW1iZXIgJyt0aGlzLndpZGdldEhlYWRlckNsYXNzKyciICcrdGhpcy53ZWVrTnVtYmVyU3R5bGVBdHRyKCkrIj48c3Bhbj4iK1IodGhpcy5vcHQoIndlZWtOdW1iZXJUaXRsZSIpKSsiPC9zcGFuPjwvdGg+Ijp2b2lkIDB9LG51bWJlckludHJvSHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy53ZWVrTnVtYmVyc1Zpc2libGU/Jzx0ZCBjbGFzcz0iZmMtd2Vlay1udW1iZXIiICcrdGhpcy53ZWVrTnVtYmVyU3R5bGVBdHRyKCkrIj48c3Bhbj4iK3RoaXMuZGF5R3JpZC5nZXRDZWxsKGEsMCkuc3RhcnQuZm9ybWF0KCJ3IikrIjwvc3Bhbj48L3RkPiI6dm9pZCAwfSxkYXlJbnRyb0h0bWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53ZWVrTnVtYmVyc1Zpc2libGU/Jzx0ZCBjbGFzcz0iZmMtd2Vlay1udW1iZXIgJyt0aGlzLndpZGdldENvbnRlbnRDbGFzcysnIiAnK3RoaXMud2Vla051bWJlclN0eWxlQXR0cigpKyI+PC90ZD4iOnZvaWQgMH0saW50cm9IdG1sOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2Vla051bWJlcnNWaXNpYmxlPyc8dGQgY2xhc3M9ImZjLXdlZWstbnVtYmVyIiAnK3RoaXMud2Vla051bWJlclN0eWxlQXR0cigpKyI+PC90ZD4iOnZvaWQgMH0sbnVtYmVyQ2VsbEh0bWw6ZnVuY3Rpb24oYSl7dmFyIGIsYz1hLnN0YXJ0O3JldHVybiB0aGlzLmRheU51bWJlcnNWaXNpYmxlPyhiPXRoaXMuZGF5R3JpZC5nZXREYXlDbGFzc2VzKGMpLGIudW5zaGlmdCgiZmMtZGF5LW51bWJlciIpLCc8dGQgY2xhc3M9IicrYi5qb2luKCIgIikrJyIgZGF0YS1kYXRlPSInK2MuZm9ybWF0KCkrJyI+JytjLmRhdGUoKSsiPC90ZD4iKToiPHRkLz4ifSx3ZWVrTnVtYmVyU3R5bGVBdHRyOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT10aGlzLndlZWtOdW1iZXJXaWR0aD8nc3R5bGU9IndpZHRoOicrdGhpcy53ZWVrTnVtYmVyV2lkdGgrJ3B4Iic6IiJ9LGhhc1JpZ2lkUm93czpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0KCJldmVudExpbWl0Iik7cmV0dXJuIGEmJiJudW1iZXIiIT10eXBlb2YgYX0sdXBkYXRlV2lkdGg6ZnVuY3Rpb24oKXt0aGlzLndlZWtOdW1iZXJzVmlzaWJsZSYmKHRoaXMud2Vla051bWJlcldpZHRoPWsodGhpcy5lbC5maW5kKCIuZmMtd2Vlay1udW1iZXIiKSkpfSxzZXRIZWlnaHQ6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPXRoaXMub3B0KCJldmVudExpbWl0Iik7bSh0aGlzLnNjcm9sbGVyRWwpLGYodGhpcy5oZWFkUm93RWwpLHRoaXMuZGF5R3JpZC5yZW1vdmVTZWdQb3BvdmVyKCksZCYmIm51bWJlciI9PXR5cGVvZiBkJiZ0aGlzLmRheUdyaWQubGltaXRSb3dzKGQpLGM9dGhpcy5jb21wdXRlU2Nyb2xsZXJIZWlnaHQoYSksdGhpcy5zZXRHcmlkSGVpZ2h0KGMsYiksZCYmIm51bWJlciIhPXR5cGVvZiBkJiZ0aGlzLmRheUdyaWQubGltaXRSb3dzKGQpLCFiJiZsKHRoaXMuc2Nyb2xsZXJFbCxjKSYmKGUodGhpcy5oZWFkUm93RWwscih0aGlzLnNjcm9sbGVyRWwpKSxjPXRoaXMuY29tcHV0ZVNjcm9sbGVySGVpZ2h0KGEpLHRoaXMuc2Nyb2xsZXJFbC5oZWlnaHQoYykpfSxzZXRHcmlkSGVpZ2h0OmZ1bmN0aW9uKGEsYil7Yj9qKHRoaXMuZGF5R3JpZC5yb3dFbHMpOmkodGhpcy5kYXlHcmlkLnJvd0VscyxhLCEwKX0scmVuZGVyRXZlbnRzOmZ1bmN0aW9uKGEpe3RoaXMuZGF5R3JpZC5yZW5kZXJFdmVudHMoYSksdGhpcy51cGRhdGVIZWlnaHQoKX0sZ2V0RXZlbnRTZWdzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF5R3JpZC5nZXRFdmVudFNlZ3MoKX0sdW5yZW5kZXJFdmVudHM6ZnVuY3Rpb24oKXt0aGlzLmRheUdyaWQudW5yZW5kZXJFdmVudHMoKX0scmVuZGVyRHJhZzpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmRheUdyaWQucmVuZGVyRHJhZyhhLGIpfSx1bnJlbmRlckRyYWc6ZnVuY3Rpb24oKXt0aGlzLmRheUdyaWQudW5yZW5kZXJEcmFnKCl9LHJlbmRlclNlbGVjdGlvbjpmdW5jdGlvbihhKXt0aGlzLmRheUdyaWQucmVuZGVyU2VsZWN0aW9uKGEpfSx1bnJlbmRlclNlbGVjdGlvbjpmdW5jdGlvbigpe3RoaXMuZGF5R3JpZC51bnJlbmRlclNlbGVjdGlvbigpfX0pLHJiPXFiLmV4dGVuZCh7Y29tcHV0ZVJhbmdlOmZ1bmN0aW9uKGEpe3ZhciBiLGM9cWIucHJvdG90eXBlLmNvbXB1dGVSYW5nZS5jYWxsKHRoaXMsYSk7cmV0dXJuIHRoaXMuaXNGaXhlZFdlZWtzKCkmJihiPU1hdGguY2VpbChjLmVuZC5kaWZmKGMuc3RhcnQsIndlZWtzIiwhMCkpLGMuZW5kLmFkZCg2LWIsIndlZWtzIikpLGN9LHNldEdyaWRIZWlnaHQ6ZnVuY3Rpb24oYSxiKXtiPWJ8fCJ2YXJpYWJsZSI9PT10aGlzLm9wdCgid2Vla01vZGUiKSxiJiYoYSo9dGhpcy5yb3dDbnQvNiksaSh0aGlzLmRheUdyaWQucm93RWxzLGEsIWIpfSxpc0ZpeGVkV2Vla3M6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdCgid2Vla01vZGUiKTtyZXR1cm4gYT8iZml4ZWQiPT09YTp0aGlzLm9wdCgiZml4ZWRXZWVrQ291bnQiKX19KTtLYS5iYXNpYz17ImNsYXNzIjpxYn0sS2EuYmFzaWNEYXk9e3R5cGU6ImJhc2ljIixkdXJhdGlvbjp7ZGF5czoxfX0sS2EuYmFzaWNXZWVrPXt0eXBlOiJiYXNpYyIsZHVyYXRpb246e3dlZWtzOjF9fSxLYS5tb250aD17ImNsYXNzIjpyYixkdXJhdGlvbjp7bW9udGhzOjF9LGRlZmF1bHRzOntmaXhlZFdlZWtDb3VudDohMH19O3ZhciBzYj1pYi5leHRlbmQoe3RpbWVHcmlkOm51bGwsZGF5R3JpZDpudWxsLGF4aXNXaWR0aDpudWxsLG5vU2Nyb2xsUm93RWxzOm51bGwsYm90dG9tUnVsZUVsOm51bGwsYm90dG9tUnVsZUhlaWdodDpudWxsLGluaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLnRpbWVHcmlkPW5ldyBoYih0aGlzKSx0aGlzLm9wdCgiYWxsRGF5U2xvdCIpPyh0aGlzLmRheUdyaWQ9bmV3IGdiKHRoaXMpLHRoaXMuY29vcmRNYXA9bmV3IGFiKFt0aGlzLmRheUdyaWQuY29vcmRNYXAsdGhpcy50aW1lR3JpZC5jb29yZE1hcF0pKTp0aGlzLmNvb3JkTWFwPXRoaXMudGltZUdyaWQuY29vcmRNYXB9LHNldFJhbmdlOmZ1bmN0aW9uKGEpe2liLnByb3RvdHlwZS5zZXRSYW5nZS5jYWxsKHRoaXMsYSksdGhpcy50aW1lR3JpZC5zZXRSYW5nZShhKSx0aGlzLmRheUdyaWQmJnRoaXMuZGF5R3JpZC5zZXRSYW5nZShhKX0scmVuZGVyRGF0ZXM6ZnVuY3Rpb24oKXt0aGlzLmVsLmFkZENsYXNzKCJmYy1hZ2VuZGEtdmlldyIpLmh0bWwodGhpcy5yZW5kZXJIdG1sKCkpLHRoaXMuc2Nyb2xsZXJFbD10aGlzLmVsLmZpbmQoIi5mYy10aW1lLWdyaWQtY29udGFpbmVyIiksdGhpcy50aW1lR3JpZC5jb29yZE1hcC5jb250YWluZXJFbD10aGlzLnNjcm9sbGVyRWwsdGhpcy50aW1lR3JpZC5zZXRFbGVtZW50KHRoaXMuZWwuZmluZCgiLmZjLXRpbWUtZ3JpZCIpKSx0aGlzLnRpbWVHcmlkLnJlbmRlckRhdGVzKCksdGhpcy5ib3R0b21SdWxlRWw9YSgnPGhyIGNsYXNzPSJmYy1kaXZpZGVyICcrdGhpcy53aWRnZXRIZWFkZXJDbGFzcysnIi8+JykuYXBwZW5kVG8odGhpcy50aW1lR3JpZC5lbCksdGhpcy5kYXlHcmlkJiYodGhpcy5kYXlHcmlkLnNldEVsZW1lbnQodGhpcy5lbC5maW5kKCIuZmMtZGF5LWdyaWQiKSksdGhpcy5kYXlHcmlkLnJlbmRlckRhdGVzKCksdGhpcy5kYXlHcmlkLmJvdHRvbUNvb3JkUGFkZGluZz10aGlzLmRheUdyaWQuZWwubmV4dCgiaHIiKS5vdXRlckhlaWdodCgpKSx0aGlzLm5vU2Nyb2xsUm93RWxzPXRoaXMuZWwuZmluZCgiLmZjLXJvdzpub3QoLmZjLXNjcm9sbGVyICopIil9LHVucmVuZGVyRGF0ZXM6ZnVuY3Rpb24oKXt0aGlzLnRpbWVHcmlkLnVucmVuZGVyRGF0ZXMoKSx0aGlzLnRpbWVHcmlkLnJlbW92ZUVsZW1lbnQoKSx0aGlzLmRheUdyaWQmJih0aGlzLmRheUdyaWQudW5yZW5kZXJEYXRlcygpLHRoaXMuZGF5R3JpZC5yZW1vdmVFbGVtZW50KCkpfSxyZW5kZXJCdXNpbmVzc0hvdXJzOmZ1bmN0aW9uKCl7dGhpcy50aW1lR3JpZC5yZW5kZXJCdXNpbmVzc0hvdXJzKCksdGhpcy5kYXlHcmlkJiZ0aGlzLmRheUdyaWQucmVuZGVyQnVzaW5lc3NIb3VycygpfSxyZW5kZXJIdG1sOmZ1bmN0aW9uKCl7cmV0dXJuJzx0YWJsZT48dGhlYWQgY2xhc3M9ImZjLWhlYWQiPjx0cj48dGQgY2xhc3M9IicrdGhpcy53aWRnZXRIZWFkZXJDbGFzcysnIj4nK3RoaXMudGltZUdyaWQuaGVhZEh0bWwoKSsnPC90ZD48L3RyPjwvdGhlYWQ+PHRib2R5IGNsYXNzPSJmYy1ib2R5Ij48dHI+PHRkIGNsYXNzPSInK3RoaXMud2lkZ2V0Q29udGVudENsYXNzKyciPicrKHRoaXMuZGF5R3JpZD8nPGRpdiBjbGFzcz0iZmMtZGF5LWdyaWQiLz48aHIgY2xhc3M9ImZjLWRpdmlkZXIgJyt0aGlzLndpZGdldEhlYWRlckNsYXNzKyciLz4nOiIiKSsnPGRpdiBjbGFzcz0iZmMtdGltZS1ncmlkLWNvbnRhaW5lciI+PGRpdiBjbGFzcz0iZmMtdGltZS1ncmlkIi8+PC9kaXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT4nfSxoZWFkSW50cm9IdG1sOmZ1bmN0aW9uKCl7dmFyIGEsYjtyZXR1cm4gdGhpcy5vcHQoIndlZWtOdW1iZXJzIik/KGE9dGhpcy50aW1lR3JpZC5nZXRDZWxsKDApLnN0YXJ0LGI9YS5mb3JtYXQodGhpcy5vcHQoInNtYWxsV2Vla0Zvcm1hdCIpKSwnPHRoIGNsYXNzPSJmYy1heGlzIGZjLXdlZWstbnVtYmVyICcrdGhpcy53aWRnZXRIZWFkZXJDbGFzcysnIiAnK3RoaXMuYXhpc1N0eWxlQXR0cigpKyI+PHNwYW4+IitSKGIpKyI8L3NwYW4+PC90aD4iKTonPHRoIGNsYXNzPSJmYy1heGlzICcrdGhpcy53aWRnZXRIZWFkZXJDbGFzcysnIiAnK3RoaXMuYXhpc1N0eWxlQXR0cigpKyI+PC90aD4ifSxkYXlJbnRyb0h0bWw6ZnVuY3Rpb24oKXtyZXR1cm4nPHRkIGNsYXNzPSJmYy1heGlzICcrdGhpcy53aWRnZXRDb250ZW50Q2xhc3MrJyIgJyt0aGlzLmF4aXNTdHlsZUF0dHIoKSsiPjxzcGFuPiIrKHRoaXMub3B0KCJhbGxEYXlIdG1sIil8fFIodGhpcy5vcHQoImFsbERheVRleHQiKSkpKyI8L3NwYW4+PC90ZD4ifSxzbG90QmdJbnRyb0h0bWw6ZnVuY3Rpb24oKXtyZXR1cm4nPHRkIGNsYXNzPSJmYy1heGlzICcrdGhpcy53aWRnZXRDb250ZW50Q2xhc3MrJyIgJyt0aGlzLmF4aXNTdHlsZUF0dHIoKSsiPjwvdGQ+In0saW50cm9IdG1sOmZ1bmN0aW9uKCl7cmV0dXJuJzx0ZCBjbGFzcz0iZmMtYXhpcyIgJyt0aGlzLmF4aXNTdHlsZUF0dHIoKSsiPjwvdGQ+In0sYXhpc1N0eWxlQXR0cjpmdW5jdGlvbigpe3JldHVybiBudWxsIT09dGhpcy5heGlzV2lkdGg/J3N0eWxlPSJ3aWR0aDonK3RoaXMuYXhpc1dpZHRoKydweCInOiIifSx1cGRhdGVTaXplOmZ1bmN0aW9uKGEpe3RoaXMudGltZUdyaWQudXBkYXRlU2l6ZShhKSxpYi5wcm90b3R5cGUudXBkYXRlU2l6ZS5jYWxsKHRoaXMsYSl9LHVwZGF0ZVdpZHRoOmZ1bmN0aW9uKCl7dGhpcy5heGlzV2lkdGg9ayh0aGlzLmVsLmZpbmQoIi5mYy1heGlzIikpfSxzZXRIZWlnaHQ6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkO251bGw9PT10aGlzLmJvdHRvbVJ1bGVIZWlnaHQmJih0aGlzLmJvdHRvbVJ1bGVIZWlnaHQ9dGhpcy5ib3R0b21SdWxlRWwub3V0ZXJIZWlnaHQoKSksdGhpcy5ib3R0b21SdWxlRWwuaGlkZSgpLHRoaXMuc2Nyb2xsZXJFbC5jc3MoIm92ZXJmbG93IiwiIiksbSh0aGlzLnNjcm9sbGVyRWwpLGYodGhpcy5ub1Njcm9sbFJvd0VscyksdGhpcy5kYXlHcmlkJiYodGhpcy5kYXlHcmlkLnJlbW92ZVNlZ1BvcG92ZXIoKSxjPXRoaXMub3B0KCJldmVudExpbWl0IiksYyYmIm51bWJlciIhPXR5cGVvZiBjJiYoYz10YiksYyYmdGhpcy5kYXlHcmlkLmxpbWl0Um93cyhjKSksYnx8KGQ9dGhpcy5jb21wdXRlU2Nyb2xsZXJIZWlnaHQoYSksbCh0aGlzLnNjcm9sbGVyRWwsZCk/KGUodGhpcy5ub1Njcm9sbFJvd0VscyxyKHRoaXMuc2Nyb2xsZXJFbCkpLGQ9dGhpcy5jb21wdXRlU2Nyb2xsZXJIZWlnaHQoYSksdGhpcy5zY3JvbGxlckVsLmhlaWdodChkKSk6KHRoaXMuc2Nyb2xsZXJFbC5oZWlnaHQoZCkuY3NzKCJvdmVyZmxvdyIsImhpZGRlbiIpLHRoaXMuYm90dG9tUnVsZUVsLnNob3coKSkpfSxjb21wdXRlSW5pdGlhbFNjcm9sbDpmdW5jdGlvbigpe3ZhciBhPWIuZHVyYXRpb24odGhpcy5vcHQoInNjcm9sbFRpbWUiKSksYz10aGlzLnRpbWVHcmlkLmNvbXB1dGVUaW1lVG9wKGEpO3JldHVybiBjPU1hdGguY2VpbChjKSxjJiZjKyssY30scmVuZGVyRXZlbnRzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1bXSxlPVtdLGY9W107Zm9yKGM9MDtjPGEubGVuZ3RoO2MrKylhW2NdLmFsbERheT9kLnB1c2goYVtjXSk6ZS5wdXNoKGFbY10pO2I9dGhpcy50aW1lR3JpZC5yZW5kZXJFdmVudHMoZSksdGhpcy5kYXlHcmlkJiYoZj10aGlzLmRheUdyaWQucmVuZGVyRXZlbnRzKGQpKSx0aGlzLnVwZGF0ZUhlaWdodCgpfSxnZXRFdmVudFNlZ3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aW1lR3JpZC5nZXRFdmVudFNlZ3MoKS5jb25jYXQodGhpcy5kYXlHcmlkP3RoaXMuZGF5R3JpZC5nZXRFdmVudFNlZ3MoKTpbXSl9LHVucmVuZGVyRXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy50aW1lR3JpZC51bnJlbmRlckV2ZW50cygpLHRoaXMuZGF5R3JpZCYmdGhpcy5kYXlHcmlkLnVucmVuZGVyRXZlbnRzKCl9LHJlbmRlckRyYWc6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5zdGFydC5oYXNUaW1lKCk/dGhpcy50aW1lR3JpZC5yZW5kZXJEcmFnKGEsYik6dGhpcy5kYXlHcmlkP3RoaXMuZGF5R3JpZC5yZW5kZXJEcmFnKGEsYik6dm9pZCAwfSx1bnJlbmRlckRyYWc6ZnVuY3Rpb24oKXt0aGlzLnRpbWVHcmlkLnVucmVuZGVyRHJhZygpLHRoaXMuZGF5R3JpZCYmdGhpcy5kYXlHcmlkLnVucmVuZGVyRHJhZygpfSxyZW5kZXJTZWxlY3Rpb246ZnVuY3Rpb24oYSl7YS5zdGFydC5oYXNUaW1lKCl8fGEuZW5kLmhhc1RpbWUoKT90aGlzLnRpbWVHcmlkLnJlbmRlclNlbGVjdGlvbihhKTp0aGlzLmRheUdyaWQmJnRoaXMuZGF5R3JpZC5yZW5kZXJTZWxlY3Rpb24oYSl9LHVucmVuZGVyU2VsZWN0aW9uOmZ1bmN0aW9uKCl7dGhpcy50aW1lR3JpZC51bnJlbmRlclNlbGVjdGlvbigpLHRoaXMuZGF5R3JpZCYmdGhpcy5kYXlHcmlkLnVucmVuZGVyU2VsZWN0aW9uKCl9fSksdGI9NTtyZXR1cm4gS2EuYWdlbmRhPXsiY2xhc3MiOnNiLGRlZmF1bHRzOnthbGxEYXlTbG90OiEwLGFsbERheVRleHQ6ImFsbC1kYXkiLHNsb3REdXJhdGlvbjoiMDA6MzA6MDAiLG1pblRpbWU6IjAwOjAwOjAwIixtYXhUaW1lOiIyNDowMDowMCIsc2xvdEV2ZW50T3ZlcmxhcDohMH19LEthLmFnZW5kYURheT17dHlwZToiYWdlbmRhIixkdXJhdGlvbjp7ZGF5czoxfX0sS2EuYWdlbmRhV2Vlaz17dHlwZToiYWdlbmRhIixkdXJhdGlvbjp7d2Vla3M6MX19LEphfSk7]]></data>
	</file>
	<file>
	  <filename>/js/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/js/jquery-ui.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIGpRdWVyeSBVSSAtIHYxLjEyLjAtcmMuMiAtIDIwMTYtMDQtMjEKKiBodHRwOi8vanF1ZXJ5dWkuY29tCiogSW5jbHVkZXM6IHdpZGdldC5qcywgcG9zaXRpb24uanMsIGRhdGEuanMsIGRpc2FibGUtc2VsZWN0aW9uLmpzLCBlZmZlY3QuanMsIGVmZmVjdHMvZWZmZWN0LWJsaW5kLmpzLCBlZmZlY3RzL2VmZmVjdC1ib3VuY2UuanMsIGVmZmVjdHMvZWZmZWN0LWNsaXAuanMsIGVmZmVjdHMvZWZmZWN0LWRyb3AuanMsIGVmZmVjdHMvZWZmZWN0LWV4cGxvZGUuanMsIGVmZmVjdHMvZWZmZWN0LWZhZGUuanMsIGVmZmVjdHMvZWZmZWN0LWZvbGQuanMsIGVmZmVjdHMvZWZmZWN0LWhpZ2hsaWdodC5qcywgZWZmZWN0cy9lZmZlY3QtcHVmZi5qcywgZWZmZWN0cy9lZmZlY3QtcHVsc2F0ZS5qcywgZWZmZWN0cy9lZmZlY3Qtc2NhbGUuanMsIGVmZmVjdHMvZWZmZWN0LXNoYWtlLmpzLCBlZmZlY3RzL2VmZmVjdC1zaXplLmpzLCBlZmZlY3RzL2VmZmVjdC1zbGlkZS5qcywgZWZmZWN0cy9lZmZlY3QtdHJhbnNmZXIuanMsIGZvY3VzYWJsZS5qcywgZm9ybS1yZXNldC1taXhpbi5qcywganF1ZXJ5LTEtNy5qcywga2V5Y29kZS5qcywgbGFiZWxzLmpzLCBzY3JvbGwtcGFyZW50LmpzLCB0YWJiYWJsZS5qcywgdW5pcXVlLWlkLmpzLCB3aWRnZXRzL2FjY29yZGlvbi5qcywgd2lkZ2V0cy9hdXRvY29tcGxldGUuanMsIHdpZGdldHMvYnV0dG9uLmpzLCB3aWRnZXRzL2NoZWNrYm94cmFkaW8uanMsIHdpZGdldHMvY29udHJvbGdyb3VwLmpzLCB3aWRnZXRzL2RhdGVwaWNrZXIuanMsIHdpZGdldHMvZGlhbG9nLmpzLCB3aWRnZXRzL2RyYWdnYWJsZS5qcywgd2lkZ2V0cy9kcm9wcGFibGUuanMsIHdpZGdldHMvbWVudS5qcywgd2lkZ2V0cy9tb3VzZS5qcywgd2lkZ2V0cy9wcm9ncmVzc2Jhci5qcywgd2lkZ2V0cy9yZXNpemFibGUuanMsIHdpZGdldHMvc2VsZWN0YWJsZS5qcywgd2lkZ2V0cy9zZWxlY3RtZW51LmpzLCB3aWRnZXRzL3NsaWRlci5qcywgd2lkZ2V0cy9zb3J0YWJsZS5qcywgd2lkZ2V0cy9zcGlubmVyLmpzLCB3aWRnZXRzL3RhYnMuanMsIHdpZGdldHMvdG9vbHRpcC5qcwoqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzOyBMaWNlbnNlZCBNSVQgKi8KCihmdW5jdGlvbih0KXsiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImpxdWVyeSJdLHQpOnQoalF1ZXJ5KX0pKGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCl7Zm9yKHZhciBlPXQuY3NzKCJ2aXNpYmlsaXR5Iik7ImluaGVyaXQiPT09ZTspdD10LnBhcmVudCgpLGU9dC5jc3MoInZpc2liaWxpdHkiKTtyZXR1cm4iaGlkZGVuIiE9PWV9ZnVuY3Rpb24gaSh0KXtmb3IodmFyIGUsaTt0Lmxlbmd0aCYmdFswXSE9PWRvY3VtZW50Oyl7aWYoZT10LmNzcygicG9zaXRpb24iKSwoImFic29sdXRlIj09PWV8fCJyZWxhdGl2ZSI9PT1lfHwiZml4ZWQiPT09ZSkmJihpPXBhcnNlSW50KHQuY3NzKCJ6SW5kZXgiKSwxMCksIWlzTmFOKGkpJiYwIT09aSkpcmV0dXJuIGk7dD10LnBhcmVudCgpfXJldHVybiAwfWZ1bmN0aW9uIHMoKXt0aGlzLl9jdXJJbnN0PW51bGwsdGhpcy5fa2V5RXZlbnQ9ITEsdGhpcy5fZGlzYWJsZWRJbnB1dHM9W10sdGhpcy5fZGF0ZXBpY2tlclNob3dpbmc9ITEsdGhpcy5faW5EaWFsb2c9ITEsdGhpcy5fbWFpbkRpdklkPSJ1aS1kYXRlcGlja2VyLWRpdiIsdGhpcy5faW5saW5lQ2xhc3M9InVpLWRhdGVwaWNrZXItaW5saW5lIix0aGlzLl9hcHBlbmRDbGFzcz0idWktZGF0ZXBpY2tlci1hcHBlbmQiLHRoaXMuX3RyaWdnZXJDbGFzcz0idWktZGF0ZXBpY2tlci10cmlnZ2VyIix0aGlzLl9kaWFsb2dDbGFzcz0idWktZGF0ZXBpY2tlci1kaWFsb2ciLHRoaXMuX2Rpc2FibGVDbGFzcz0idWktZGF0ZXBpY2tlci1kaXNhYmxlZCIsdGhpcy5fdW5zZWxlY3RhYmxlQ2xhc3M9InVpLWRhdGVwaWNrZXItdW5zZWxlY3RhYmxlIix0aGlzLl9jdXJyZW50Q2xhc3M9InVpLWRhdGVwaWNrZXItY3VycmVudC1kYXkiLHRoaXMuX2RheU92ZXJDbGFzcz0idWktZGF0ZXBpY2tlci1kYXlzLWNlbGwtb3ZlciIsdGhpcy5yZWdpb25hbD1bXSx0aGlzLnJlZ2lvbmFsWyIiXT17Y2xvc2VUZXh0OiJEb25lIixwcmV2VGV4dDoiUHJldiIsbmV4dFRleHQ6Ik5leHQiLGN1cnJlbnRUZXh0OiJUb2RheSIsbW9udGhOYW1lczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLGRheU5hbWVzU2hvcnQ6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxkYXlOYW1lc01pbjpbIlN1IiwiTW8iLCJUdSIsIldlIiwiVGgiLCJGciIsIlNhIl0sd2Vla0hlYWRlcjoiV2siLGRhdGVGb3JtYXQ6Im1tL2RkL3l5IixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSx0aGlzLl9kZWZhdWx0cz17c2hvd09uOiJmb2N1cyIsc2hvd0FuaW06ImZhZGVJbiIsc2hvd09wdGlvbnM6e30sZGVmYXVsdERhdGU6bnVsbCxhcHBlbmRUZXh0OiIiLGJ1dHRvblRleHQ6Ii4uLiIsYnV0dG9uSW1hZ2U6IiIsYnV0dG9uSW1hZ2VPbmx5OiExLGhpZGVJZk5vUHJldk5leHQ6ITEsbmF2aWdhdGlvbkFzRGF0ZUZvcm1hdDohMSxnb3RvQ3VycmVudDohMSxjaGFuZ2VNb250aDohMSxjaGFuZ2VZZWFyOiExLHllYXJSYW5nZToiYy0xMDpjKzEwIixzaG93T3RoZXJNb250aHM6ITEsc2VsZWN0T3RoZXJNb250aHM6ITEsc2hvd1dlZWs6ITEsY2FsY3VsYXRlV2Vlazp0aGlzLmlzbzg2MDFXZWVrLHNob3J0WWVhckN1dG9mZjoiKzEwIixtaW5EYXRlOm51bGwsbWF4RGF0ZTpudWxsLGR1cmF0aW9uOiJmYXN0IixiZWZvcmVTaG93RGF5Om51bGwsYmVmb3JlU2hvdzpudWxsLG9uU2VsZWN0Om51bGwsb25DaGFuZ2VNb250aFllYXI6bnVsbCxvbkNsb3NlOm51bGwsbnVtYmVyT2ZNb250aHM6MSxzaG93Q3VycmVudEF0UG9zOjAsc3RlcE1vbnRoczoxLHN0ZXBCaWdNb250aHM6MTIsYWx0RmllbGQ6IiIsYWx0Rm9ybWF0OiIiLGNvbnN0cmFpbklucHV0OiEwLHNob3dCdXR0b25QYW5lbDohMSxhdXRvU2l6ZTohMSxkaXNhYmxlZDohMX0sdC5leHRlbmQodGhpcy5fZGVmYXVsdHMsdGhpcy5yZWdpb25hbFsiIl0pLHRoaXMucmVnaW9uYWwuZW49dC5leHRlbmQoITAse30sdGhpcy5yZWdpb25hbFsiIl0pLHRoaXMucmVnaW9uYWxbImVuLVVTIl09dC5leHRlbmQoITAse30sdGhpcy5yZWdpb25hbC5lbiksdGhpcy5kcERpdj1uKHQoIjxkaXYgaWQ9JyIrdGhpcy5fbWFpbkRpdklkKyInIGNsYXNzPSd1aS1kYXRlcGlja2VyIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLWFsbCc+PC9kaXY+IikpfWZ1bmN0aW9uIG4oZSl7dmFyIGk9ImJ1dHRvbiwgLnVpLWRhdGVwaWNrZXItcHJldiwgLnVpLWRhdGVwaWNrZXItbmV4dCwgLnVpLWRhdGVwaWNrZXItY2FsZW5kYXIgdGQgYSI7cmV0dXJuIGUub24oIm1vdXNlb3V0IixpLGZ1bmN0aW9uKCl7dCh0aGlzKS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKSwtMSE9PXRoaXMuY2xhc3NOYW1lLmluZGV4T2YoInVpLWRhdGVwaWNrZXItcHJldiIpJiZ0KHRoaXMpLnJlbW92ZUNsYXNzKCJ1aS1kYXRlcGlja2VyLXByZXYtaG92ZXIiKSwtMSE9PXRoaXMuY2xhc3NOYW1lLmluZGV4T2YoInVpLWRhdGVwaWNrZXItbmV4dCIpJiZ0KHRoaXMpLnJlbW92ZUNsYXNzKCJ1aS1kYXRlcGlja2VyLW5leHQtaG92ZXIiKX0pLm9uKCJtb3VzZW92ZXIiLGksbyl9ZnVuY3Rpb24gbygpe3QuZGF0ZXBpY2tlci5faXNEaXNhYmxlZERhdGVwaWNrZXIoZy5pbmxpbmU/Zy5kcERpdi5wYXJlbnQoKVswXTpnLmlucHV0WzBdKXx8KHQodGhpcykucGFyZW50cygiLnVpLWRhdGVwaWNrZXItY2FsZW5kYXIiKS5maW5kKCJhIikucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWhvdmVyIiksdCh0aGlzKS5hZGRDbGFzcygidWktc3RhdGUtaG92ZXIiKSwtMSE9PXRoaXMuY2xhc3NOYW1lLmluZGV4T2YoInVpLWRhdGVwaWNrZXItcHJldiIpJiZ0KHRoaXMpLmFkZENsYXNzKCJ1aS1kYXRlcGlja2VyLXByZXYtaG92ZXIiKSwtMSE9PXRoaXMuY2xhc3NOYW1lLmluZGV4T2YoInVpLWRhdGVwaWNrZXItbmV4dCIpJiZ0KHRoaXMpLmFkZENsYXNzKCJ1aS1kYXRlcGlja2VyLW5leHQtaG92ZXIiKSl9ZnVuY3Rpb24gYShlLGkpe3QuZXh0ZW5kKGUsaSk7Zm9yKHZhciBzIGluIGkpbnVsbD09aVtzXSYmKGVbc109aVtzXSk7cmV0dXJuIGV9ZnVuY3Rpb24gcih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLmVsZW1lbnQudmFsKCk7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fcmVmcmVzaCgpLGUhPT10aGlzLmVsZW1lbnQudmFsKCkmJnRoaXMuX3RyaWdnZXIoImNoYW5nZSIpfX10LnVpPXQudWl8fHt9LHQudWkudmVyc2lvbj0iMS4xMi4wLXJjLjIiO3ZhciBoPTAsbD1BcnJheS5wcm90b3R5cGUuc2xpY2U7dC5jbGVhbkRhdGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGkpe3ZhciBzLG4sbztmb3Iobz0wO251bGwhPShuPWlbb10pO28rKyl0cnl7cz10Ll9kYXRhKG4sImV2ZW50cyIpLHMmJnMucmVtb3ZlJiZ0KG4pLnRyaWdnZXJIYW5kbGVyKCJyZW1vdmUiKX1jYXRjaChhKXt9ZShpKX19KHQuY2xlYW5EYXRhKSx0LndpZGdldD1mdW5jdGlvbihlLGkscyl7dmFyIG4sbyxhLHI9e30saD1lLnNwbGl0KCIuIilbMF07ZT1lLnNwbGl0KCIuIilbMV07dmFyIGw9aCsiLSIrZTtyZXR1cm4gc3x8KHM9aSxpPXQuV2lkZ2V0KSx0LmlzQXJyYXkocykmJihzPXQuZXh0ZW5kLmFwcGx5KG51bGwsW3t9XS5jb25jYXQocykpKSx0LmV4cHJbIjoiXVtsLnRvTG93ZXJDYXNlKCldPWZ1bmN0aW9uKGUpe3JldHVybiEhdC5kYXRhKGUsbCl9LHRbaF09dFtoXXx8e30sbj10W2hdW2VdLG89dFtoXVtlXT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9jcmVhdGVXaWRnZXQ/KGFyZ3VtZW50cy5sZW5ndGgmJnRoaXMuX2NyZWF0ZVdpZGdldCh0LGUpLHZvaWQgMCk6bmV3IG8odCxlKX0sdC5leHRlbmQobyxuLHt2ZXJzaW9uOnMudmVyc2lvbixfcHJvdG86dC5leHRlbmQoe30scyksX2NoaWxkQ29uc3RydWN0b3JzOltdfSksYT1uZXcgaSxhLm9wdGlvbnM9dC53aWRnZXQuZXh0ZW5kKHt9LGEub3B0aW9ucyksdC5lYWNoKHMsZnVuY3Rpb24oZSxzKXtyZXR1cm4gdC5pc0Z1bmN0aW9uKHMpPyhyW2VdPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3JldHVybiBpLnByb3RvdHlwZVtlXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbih0KXtyZXR1cm4gaS5wcm90b3R5cGVbZV0uYXBwbHkodGhpcyx0KX1yZXR1cm4gZnVuY3Rpb24oKXt2YXIgZSxpPXRoaXMuX3N1cGVyLG89dGhpcy5fc3VwZXJBcHBseTtyZXR1cm4gdGhpcy5fc3VwZXI9dCx0aGlzLl9zdXBlckFwcGx5PW4sZT1zLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9zdXBlcj1pLHRoaXMuX3N1cGVyQXBwbHk9byxlfX0oKSx2b2lkIDApOihyW2VdPXMsdm9pZCAwKX0pLG8ucHJvdG90eXBlPXQud2lkZ2V0LmV4dGVuZChhLHt3aWRnZXRFdmVudFByZWZpeDpuP2Eud2lkZ2V0RXZlbnRQcmVmaXh8fGU6ZX0scix7Y29uc3RydWN0b3I6byxuYW1lc3BhY2U6aCx3aWRnZXROYW1lOmUsd2lkZ2V0RnVsbE5hbWU6bH0pLG4/KHQuZWFjaChuLl9jaGlsZENvbnN0cnVjdG9ycyxmdW5jdGlvbihlLGkpe3ZhciBzPWkucHJvdG90eXBlO3Qud2lkZ2V0KHMubmFtZXNwYWNlKyIuIitzLndpZGdldE5hbWUsbyxpLl9wcm90byl9KSxkZWxldGUgbi5fY2hpbGRDb25zdHJ1Y3RvcnMpOmkuX2NoaWxkQ29uc3RydWN0b3JzLnB1c2gobyksdC53aWRnZXQuYnJpZGdlKGUsbyksb30sdC53aWRnZXQuZXh0ZW5kPWZ1bmN0aW9uKGUpe2Zvcih2YXIgaSxzLG49bC5jYWxsKGFyZ3VtZW50cywxKSxvPTAsYT1uLmxlbmd0aDthPm87bysrKWZvcihpIGluIG5bb10pcz1uW29dW2ldLG5bb10uaGFzT3duUHJvcGVydHkoaSkmJnZvaWQgMCE9PXMmJihlW2ldPXQuaXNQbGFpbk9iamVjdChzKT90LmlzUGxhaW5PYmplY3QoZVtpXSk/dC53aWRnZXQuZXh0ZW5kKHt9LGVbaV0scyk6dC53aWRnZXQuZXh0ZW5kKHt9LHMpOnMpO3JldHVybiBlfSx0LndpZGdldC5icmlkZ2U9ZnVuY3Rpb24oZSxpKXt2YXIgcz1pLnByb3RvdHlwZS53aWRnZXRGdWxsTmFtZXx8ZTt0LmZuW2VdPWZ1bmN0aW9uKG4pe3ZhciBvPSJzdHJpbmciPT10eXBlb2YgbixhPWwuY2FsbChhcmd1bWVudHMsMSkscj10aGlzO3JldHVybiBvP3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBpLG89dC5kYXRhKHRoaXMscyk7cmV0dXJuImluc3RhbmNlIj09PW4/KHI9bywhMSk6bz90LmlzRnVuY3Rpb24ob1tuXSkmJiJfIiE9PW4uY2hhckF0KDApPyhpPW9bbl0uYXBwbHkobyxhKSxpIT09byYmdm9pZCAwIT09aT8ocj1pJiZpLmpxdWVyeT9yLnB1c2hTdGFjayhpLmdldCgpKTppLCExKTp2b2lkIDApOnQuZXJyb3IoIm5vIHN1Y2ggbWV0aG9kICciK24rIicgZm9yICIrZSsiIHdpZGdldCBpbnN0YW5jZSIpOnQuZXJyb3IoImNhbm5vdCBjYWxsIG1ldGhvZHMgb24gIitlKyIgcHJpb3IgdG8gaW5pdGlhbGl6YXRpb247ICIrImF0dGVtcHRlZCB0byBjYWxsIG1ldGhvZCAnIituKyInIil9KTooYS5sZW5ndGgmJihuPXQud2lkZ2V0LmV4dGVuZC5hcHBseShudWxsLFtuXS5jb25jYXQoYSkpKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT10LmRhdGEodGhpcyxzKTtlPyhlLm9wdGlvbihufHx7fSksZS5faW5pdCYmZS5faW5pdCgpKTp0LmRhdGEodGhpcyxzLG5ldyBpKG4sdGhpcykpfSkpLHJ9fSx0LldpZGdldD1mdW5jdGlvbigpe30sdC5XaWRnZXQuX2NoaWxkQ29uc3RydWN0b3JzPVtdLHQuV2lkZ2V0LnByb3RvdHlwZT17d2lkZ2V0TmFtZToid2lkZ2V0Iix3aWRnZXRFdmVudFByZWZpeDoiIixkZWZhdWx0RWxlbWVudDoiPGRpdj4iLG9wdGlvbnM6e2NsYXNzZXM6e30sZGlzYWJsZWQ6ITEsY3JlYXRlOm51bGx9LF9jcmVhdGVXaWRnZXQ6ZnVuY3Rpb24oZSxpKXtpPXQoaXx8dGhpcy5kZWZhdWx0RWxlbWVudHx8dGhpcylbMF0sdGhpcy5lbGVtZW50PXQoaSksdGhpcy51dWlkPWgrKyx0aGlzLmV2ZW50TmFtZXNwYWNlPSIuIit0aGlzLndpZGdldE5hbWUrdGhpcy51dWlkLHRoaXMuYmluZGluZ3M9dCgpLHRoaXMuaG92ZXJhYmxlPXQoKSx0aGlzLmZvY3VzYWJsZT10KCksdGhpcy5jbGFzc2VzRWxlbWVudExvb2t1cD17fSxpIT09dGhpcyYmKHQuZGF0YShpLHRoaXMud2lkZ2V0RnVsbE5hbWUsdGhpcyksdGhpcy5fb24oITAsdGhpcy5lbGVtZW50LHtyZW1vdmU6ZnVuY3Rpb24odCl7dC50YXJnZXQ9PT1pJiZ0aGlzLmRlc3Ryb3koKX19KSx0aGlzLmRvY3VtZW50PXQoaS5zdHlsZT9pLm93bmVyRG9jdW1lbnQ6aS5kb2N1bWVudHx8aSksdGhpcy53aW5kb3c9dCh0aGlzLmRvY3VtZW50WzBdLmRlZmF1bHRWaWV3fHx0aGlzLmRvY3VtZW50WzBdLnBhcmVudFdpbmRvdykpLHRoaXMub3B0aW9ucz10LndpZGdldC5leHRlbmQoe30sdGhpcy5vcHRpb25zLHRoaXMuX2dldENyZWF0ZU9wdGlvbnMoKSxlKSx0aGlzLl9jcmVhdGUoKSx0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMuX3NldE9wdGlvbkRpc2FibGVkKHRoaXMub3B0aW9ucy5kaXNhYmxlZCksdGhpcy5fdHJpZ2dlcigiY3JlYXRlIixudWxsLHRoaXMuX2dldENyZWF0ZUV2ZW50RGF0YSgpKSx0aGlzLl9pbml0KCl9LF9nZXRDcmVhdGVPcHRpb25zOmZ1bmN0aW9uKCl7cmV0dXJue319LF9nZXRDcmVhdGVFdmVudERhdGE6dC5ub29wLF9jcmVhdGU6dC5ub29wLF9pbml0OnQubm9vcCxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLl9kZXN0cm95KCksdC5lYWNoKHRoaXMuY2xhc3Nlc0VsZW1lbnRMb29rdXAsZnVuY3Rpb24odCxpKXtlLl9yZW1vdmVDbGFzcyhpLHQpfSksdGhpcy5lbGVtZW50Lm9mZih0aGlzLmV2ZW50TmFtZXNwYWNlKS5yZW1vdmVEYXRhKHRoaXMud2lkZ2V0RnVsbE5hbWUpLHRoaXMud2lkZ2V0KCkub2ZmKHRoaXMuZXZlbnROYW1lc3BhY2UpLnJlbW92ZUF0dHIoImFyaWEtZGlzYWJsZWQiKSx0aGlzLmJpbmRpbmdzLm9mZih0aGlzLmV2ZW50TmFtZXNwYWNlKX0sX2Rlc3Ryb3k6dC5ub29wLHdpZGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnR9LG9wdGlvbjpmdW5jdGlvbihlLGkpe3ZhciBzLG4sbyxhPWU7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHQud2lkZ2V0LmV4dGVuZCh7fSx0aGlzLm9wdGlvbnMpO2lmKCJzdHJpbmciPT10eXBlb2YgZSlpZihhPXt9LHM9ZS5zcGxpdCgiLiIpLGU9cy5zaGlmdCgpLHMubGVuZ3RoKXtmb3Iobj1hW2VdPXQud2lkZ2V0LmV4dGVuZCh7fSx0aGlzLm9wdGlvbnNbZV0pLG89MDtzLmxlbmd0aC0xPm87bysrKW5bc1tvXV09bltzW29dXXx8e30sbj1uW3Nbb11dO2lmKGU9cy5wb3AoKSwxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09bltlXT9udWxsOm5bZV07bltlXT1pfWVsc2V7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09PXRoaXMub3B0aW9uc1tlXT9udWxsOnRoaXMub3B0aW9uc1tlXTthW2VdPWl9cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoYSksdGhpc30sX3NldE9wdGlvbnM6ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGUgaW4gdCl0aGlzLl9zZXRPcHRpb24oZSx0W2VdKTtyZXR1cm4gdGhpc30sX3NldE9wdGlvbjpmdW5jdGlvbih0LGUpe3JldHVybiJjbGFzc2VzIj09PXQmJnRoaXMuX3NldE9wdGlvbkNsYXNzZXMoZSksdGhpcy5vcHRpb25zW3RdPWUsImRpc2FibGVkIj09PXQmJnRoaXMuX3NldE9wdGlvbkRpc2FibGVkKGUpLHRoaXN9LF9zZXRPcHRpb25DbGFzc2VzOmZ1bmN0aW9uKGUpe3ZhciBpLHMsbjtmb3IoaSBpbiBlKW49dGhpcy5jbGFzc2VzRWxlbWVudExvb2t1cFtpXSxlW2ldIT09dGhpcy5vcHRpb25zLmNsYXNzZXNbaV0mJm4mJm4ubGVuZ3RoJiYocz10KG4uZ2V0KCkpLHRoaXMuX3JlbW92ZUNsYXNzKG4saSkscy5hZGRDbGFzcyh0aGlzLl9jbGFzc2VzKHtlbGVtZW50OnMsa2V5czppLGNsYXNzZXM6ZSxhZGQ6ITB9KSkpfSxfc2V0T3B0aW9uRGlzYWJsZWQ6ZnVuY3Rpb24odCl7dGhpcy5fdG9nZ2xlQ2xhc3ModGhpcy53aWRnZXQoKSx0aGlzLndpZGdldEZ1bGxOYW1lKyItZGlzYWJsZWQiLG51bGwsISF0KSx0JiYodGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5ob3ZlcmFibGUsbnVsbCwidWktc3RhdGUtaG92ZXIiKSx0aGlzLl9yZW1vdmVDbGFzcyh0aGlzLmZvY3VzYWJsZSxudWxsLCJ1aS1zdGF0ZS1mb2N1cyIpKX0sZW5hYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoe2Rpc2FibGVkOiExfSl9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyh7ZGlzYWJsZWQ6ITB9KX0sX2NsYXNzZXM6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gaShpLG8pe3ZhciBhLHI7Zm9yKHI9MDtpLmxlbmd0aD5yO3IrKylhPW4uY2xhc3Nlc0VsZW1lbnRMb29rdXBbaVtyXV18fHQoKSxhPWUuYWRkP3QodC51bmlxdWUoYS5nZXQoKS5jb25jYXQoZS5lbGVtZW50LmdldCgpKSkpOnQoYS5ub3QoZS5lbGVtZW50KS5nZXQoKSksbi5jbGFzc2VzRWxlbWVudExvb2t1cFtpW3JdXT1hLHMucHVzaChpW3JdKSxvJiZlLmNsYXNzZXNbaVtyXV0mJnMucHVzaChlLmNsYXNzZXNbaVtyXV0pfXZhciBzPVtdLG49dGhpcztyZXR1cm4gZT10LmV4dGVuZCh7ZWxlbWVudDp0aGlzLmVsZW1lbnQsY2xhc3Nlczp0aGlzLm9wdGlvbnMuY2xhc3Nlc3x8e319LGUpLGUua2V5cyYmaShlLmtleXMubWF0Y2goL1xTKy9nKXx8W10sITApLGUuZXh0cmEmJmkoZS5leHRyYS5tYXRjaCgvXFMrL2cpfHxbXSkscy5qb2luKCIgIil9LF9yZW1vdmVDbGFzczpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMuX3RvZ2dsZUNsYXNzKHQsZSxpLCExKX0sX2FkZENsYXNzOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5fdG9nZ2xlQ2xhc3ModCxlLGksITApfSxfdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24odCxlLGkscyl7cz0iYm9vbGVhbiI9PXR5cGVvZiBzP3M6aTt2YXIgbj0ic3RyaW5nIj09dHlwZW9mIHR8fG51bGw9PT10LG89e2V4dHJhOm4/ZTppLGtleXM6bj90OmUsZWxlbWVudDpuP3RoaXMuZWxlbWVudDp0LGFkZDpzfTtyZXR1cm4gby5lbGVtZW50LnRvZ2dsZUNsYXNzKHRoaXMuX2NsYXNzZXMobykscyksdGhpc30sX29uOmZ1bmN0aW9uKGUsaSxzKXt2YXIgbixvPXRoaXM7ImJvb2xlYW4iIT10eXBlb2YgZSYmKHM9aSxpPWUsZT0hMSkscz8oaT1uPXQoaSksdGhpcy5iaW5kaW5ncz10aGlzLmJpbmRpbmdzLmFkZChpKSk6KHM9aSxpPXRoaXMuZWxlbWVudCxuPXRoaXMud2lkZ2V0KCkpLHQuZWFjaChzLGZ1bmN0aW9uKHMsYSl7ZnVuY3Rpb24gcigpe3JldHVybiBlfHxvLm9wdGlvbnMuZGlzYWJsZWQhPT0hMCYmIXQodGhpcykuaGFzQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIik/KCJzdHJpbmciPT10eXBlb2YgYT9vW2FdOmEpLmFwcGx5KG8sYXJndW1lbnRzKTp2b2lkIDB9InN0cmluZyIhPXR5cGVvZiBhJiYoci5ndWlkPWEuZ3VpZD1hLmd1aWR8fHIuZ3VpZHx8dC5ndWlkKyspO3ZhciBoPXMubWF0Y2goL14oW1x3Oi1dKilccyooLiopJC8pLGw9aFsxXStvLmV2ZW50TmFtZXNwYWNlLGM9aFsyXTtjP24ub24obCxjLHIpOmkub24obCxyKX0pfSxfb2ZmOmZ1bmN0aW9uKGUsaSl7aT0oaXx8IiIpLnNwbGl0KCIgIikuam9pbih0aGlzLmV2ZW50TmFtZXNwYWNlKyIgIikrdGhpcy5ldmVudE5hbWVzcGFjZSxlLm9mZihpKS5vZmYoaSksdGhpcy5iaW5kaW5ncz10KHRoaXMuYmluZGluZ3Mubm90KGUpLmdldCgpKSx0aGlzLmZvY3VzYWJsZT10KHRoaXMuZm9jdXNhYmxlLm5vdChlKS5nZXQoKSksdGhpcy5ob3ZlcmFibGU9dCh0aGlzLmhvdmVyYWJsZS5ub3QoZSkuZ2V0KCkpfSxfZGVsYXk6ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBpKCl7cmV0dXJuKCJzdHJpbmciPT10eXBlb2YgdD9zW3RdOnQpLmFwcGx5KHMsYXJndW1lbnRzKX12YXIgcz10aGlzO3JldHVybiBzZXRUaW1lb3V0KGksZXx8MCl9LF9ob3ZlcmFibGU6ZnVuY3Rpb24oZSl7dGhpcy5ob3ZlcmFibGU9dGhpcy5ob3ZlcmFibGUuYWRkKGUpLHRoaXMuX29uKGUse21vdXNlZW50ZXI6ZnVuY3Rpb24oZSl7dGhpcy5fYWRkQ2xhc3ModChlLmN1cnJlbnRUYXJnZXQpLG51bGwsInVpLXN0YXRlLWhvdmVyIil9LG1vdXNlbGVhdmU6ZnVuY3Rpb24oZSl7dGhpcy5fcmVtb3ZlQ2xhc3ModChlLmN1cnJlbnRUYXJnZXQpLG51bGwsInVpLXN0YXRlLWhvdmVyIil9fSl9LF9mb2N1c2FibGU6ZnVuY3Rpb24oZSl7dGhpcy5mb2N1c2FibGU9dGhpcy5mb2N1c2FibGUuYWRkKGUpLHRoaXMuX29uKGUse2ZvY3VzaW46ZnVuY3Rpb24oZSl7dGhpcy5fYWRkQ2xhc3ModChlLmN1cnJlbnRUYXJnZXQpLG51bGwsInVpLXN0YXRlLWZvY3VzIil9LGZvY3Vzb3V0OmZ1bmN0aW9uKGUpe3RoaXMuX3JlbW92ZUNsYXNzKHQoZS5jdXJyZW50VGFyZ2V0KSxudWxsLCJ1aS1zdGF0ZS1mb2N1cyIpfX0pfSxfdHJpZ2dlcjpmdW5jdGlvbihlLGkscyl7dmFyIG4sbyxhPXRoaXMub3B0aW9uc1tlXTtpZihzPXN8fHt9LGk9dC5FdmVudChpKSxpLnR5cGU9KGU9PT10aGlzLndpZGdldEV2ZW50UHJlZml4P2U6dGhpcy53aWRnZXRFdmVudFByZWZpeCtlKS50b0xvd2VyQ2FzZSgpLGkudGFyZ2V0PXRoaXMuZWxlbWVudFswXSxvPWkub3JpZ2luYWxFdmVudClmb3IobiBpbiBvKW4gaW4gaXx8KGlbbl09b1tuXSk7cmV0dXJuIHRoaXMuZWxlbWVudC50cmlnZ2VyKGkscyksISh0LmlzRnVuY3Rpb24oYSkmJmEuYXBwbHkodGhpcy5lbGVtZW50WzBdLFtpXS5jb25jYXQocykpPT09ITF8fGkuaXNEZWZhdWx0UHJldmVudGVkKCkpfX0sdC5lYWNoKHtzaG93OiJmYWRlSW4iLGhpZGU6ImZhZGVPdXQifSxmdW5jdGlvbihlLGkpe3QuV2lkZ2V0LnByb3RvdHlwZVsiXyIrZV09ZnVuY3Rpb24ocyxuLG8peyJzdHJpbmciPT10eXBlb2YgbiYmKG49e2VmZmVjdDpufSk7dmFyIGEscj1uP249PT0hMHx8Im51bWJlciI9PXR5cGVvZiBuP2k6bi5lZmZlY3R8fGk6ZTtuPW58fHt9LCJudW1iZXIiPT10eXBlb2YgbiYmKG49e2R1cmF0aW9uOm59KSxhPSF0LmlzRW1wdHlPYmplY3Qobiksbi5jb21wbGV0ZT1vLG4uZGVsYXkmJnMuZGVsYXkobi5kZWxheSksYSYmdC5lZmZlY3RzJiZ0LmVmZmVjdHMuZWZmZWN0W3JdP3NbZV0obik6ciE9PWUmJnNbcl0/c1tyXShuLmR1cmF0aW9uLG4uZWFzaW5nLG8pOnMucXVldWUoZnVuY3Rpb24oaSl7dCh0aGlzKVtlXSgpLG8mJm8uY2FsbChzWzBdKSxpKCl9KX19KSx0LndpZGdldCxmdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxlLGkpe3JldHVybltwYXJzZUZsb2F0KHRbMF0pKihwLnRlc3QodFswXSk/ZS8xMDA6MSkscGFyc2VGbG9hdCh0WzFdKSoocC50ZXN0KHRbMV0pP2kvMTAwOjEpXX1mdW5jdGlvbiBpKGUsaSl7cmV0dXJuIHBhcnNlSW50KHQuY3NzKGUsaSksMTApfHwwfWZ1bmN0aW9uIHMoZSl7dmFyIGk9ZVswXTtyZXR1cm4gOT09PWkubm9kZVR5cGU/e3dpZHRoOmUud2lkdGgoKSxoZWlnaHQ6ZS5oZWlnaHQoKSxvZmZzZXQ6e3RvcDowLGxlZnQ6MH19OnQuaXNXaW5kb3coaSk/e3dpZHRoOmUud2lkdGgoKSxoZWlnaHQ6ZS5oZWlnaHQoKSxvZmZzZXQ6e3RvcDplLnNjcm9sbFRvcCgpLGxlZnQ6ZS5zY3JvbGxMZWZ0KCl9fTppLnByZXZlbnREZWZhdWx0P3t3aWR0aDowLGhlaWdodDowLG9mZnNldDp7dG9wOmkucGFnZVksbGVmdDppLnBhZ2VYfX06e3dpZHRoOmUub3V0ZXJXaWR0aCgpLGhlaWdodDplLm91dGVySGVpZ2h0KCksb2Zmc2V0OmUub2Zmc2V0KCl9fXZhciBuLG8sYT1NYXRoLm1heCxyPU1hdGguYWJzLGg9TWF0aC5yb3VuZCxsPS9sZWZ0fGNlbnRlcnxyaWdodC8sYz0vdG9wfGNlbnRlcnxib3R0b20vLHU9L1tcK1wtXVxkKyhcLltcZF0rKT8lPy8sZD0vXlx3Ky8scD0vJSQvLGY9dC5mbi5wb3NpdGlvbjtvPWZ1bmN0aW9uKCl7dmFyIGU9dCgiPGRpdj4iKS5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKS5hcHBlbmRUbygiYm9keSIpLm9mZnNldCh7dG9wOjEuNSxsZWZ0OjEuNX0pLGk9MS41PT09ZS5vZmZzZXQoKS50b3A7cmV0dXJuIGUucmVtb3ZlKCksbz1mdW5jdGlvbigpe3JldHVybiBpfSxpfSx0LnBvc2l0aW9uPXtzY3JvbGxiYXJXaWR0aDpmdW5jdGlvbigpe2lmKHZvaWQgMCE9PW4pcmV0dXJuIG47dmFyIGUsaSxzPXQoIjxkaXYgc3R5bGU9J2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6NTBweDtoZWlnaHQ6NTBweDtvdmVyZmxvdzpoaWRkZW47Jz48ZGl2IHN0eWxlPSdoZWlnaHQ6MTAwcHg7d2lkdGg6YXV0bzsnPjwvZGl2PjwvZGl2PiIpLG89cy5jaGlsZHJlbigpWzBdO3JldHVybiB0KCJib2R5IikuYXBwZW5kKHMpLGU9by5vZmZzZXRXaWR0aCxzLmNzcygib3ZlcmZsb3ciLCJzY3JvbGwiKSxpPW8ub2Zmc2V0V2lkdGgsZT09PWkmJihpPXNbMF0uY2xpZW50V2lkdGgpLHMucmVtb3ZlKCksbj1lLWl9LGdldFNjcm9sbEluZm86ZnVuY3Rpb24oZSl7dmFyIGk9ZS5pc1dpbmRvd3x8ZS5pc0RvY3VtZW50PyIiOmUuZWxlbWVudC5jc3MoIm92ZXJmbG93LXgiKSxzPWUuaXNXaW5kb3d8fGUuaXNEb2N1bWVudD8iIjplLmVsZW1lbnQuY3NzKCJvdmVyZmxvdy15Iiksbj0ic2Nyb2xsIj09PWl8fCJhdXRvIj09PWkmJmUud2lkdGg8ZS5lbGVtZW50WzBdLnNjcm9sbFdpZHRoLG89InNjcm9sbCI9PT1zfHwiYXV0byI9PT1zJiZlLmhlaWdodDxlLmVsZW1lbnRbMF0uc2Nyb2xsSGVpZ2h0O3JldHVybnt3aWR0aDpvP3QucG9zaXRpb24uc2Nyb2xsYmFyV2lkdGgoKTowLGhlaWdodDpuP3QucG9zaXRpb24uc2Nyb2xsYmFyV2lkdGgoKTowfX0sZ2V0V2l0aGluSW5mbzpmdW5jdGlvbihlKXt2YXIgaT10KGV8fHdpbmRvdykscz10LmlzV2luZG93KGlbMF0pLG49ISFpWzBdJiY5PT09aVswXS5ub2RlVHlwZSxvPSFzJiYhbjtyZXR1cm57ZWxlbWVudDppLGlzV2luZG93OnMsaXNEb2N1bWVudDpuLG9mZnNldDpvP3QoZSkub2Zmc2V0KCk6e2xlZnQ6MCx0b3A6MH0sc2Nyb2xsTGVmdDppLnNjcm9sbExlZnQoKSxzY3JvbGxUb3A6aS5zY3JvbGxUb3AoKSx3aWR0aDppLm91dGVyV2lkdGgoKSxoZWlnaHQ6aS5vdXRlckhlaWdodCgpfX19LHQuZm4ucG9zaXRpb249ZnVuY3Rpb24obil7aWYoIW58fCFuLm9mKXJldHVybiBmLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtuPXQuZXh0ZW5kKHt9LG4pO3ZhciBwLGcsbSxfLHYsYix5PXQobi5vZiksdz10LnBvc2l0aW9uLmdldFdpdGhpbkluZm8obi53aXRoaW4pLGs9dC5wb3NpdGlvbi5nZXRTY3JvbGxJbmZvKHcpLHg9KG4uY29sbGlzaW9ufHwiZmxpcCIpLnNwbGl0KCIgIiksQz17fTtyZXR1cm4gYj1zKHkpLHlbMF0ucHJldmVudERlZmF1bHQmJihuLmF0PSJsZWZ0IHRvcCIpLGc9Yi53aWR0aCxtPWIuaGVpZ2h0LF89Yi5vZmZzZXQsdj10LmV4dGVuZCh7fSxfKSx0LmVhY2goWyJteSIsImF0Il0sZnVuY3Rpb24oKXt2YXIgdCxlLGk9KG5bdGhpc118fCIiKS5zcGxpdCgiICIpOzE9PT1pLmxlbmd0aCYmKGk9bC50ZXN0KGlbMF0pP2kuY29uY2F0KFsiY2VudGVyIl0pOmMudGVzdChpWzBdKT9bImNlbnRlciJdLmNvbmNhdChpKTpbImNlbnRlciIsImNlbnRlciJdKSxpWzBdPWwudGVzdChpWzBdKT9pWzBdOiJjZW50ZXIiLGlbMV09Yy50ZXN0KGlbMV0pP2lbMV06ImNlbnRlciIsdD11LmV4ZWMoaVswXSksZT11LmV4ZWMoaVsxXSksQ1t0aGlzXT1bdD90WzBdOjAsZT9lWzBdOjBdLG5bdGhpc109W2QuZXhlYyhpWzBdKVswXSxkLmV4ZWMoaVsxXSlbMF1dfSksMT09PXgubGVuZ3RoJiYoeFsxXT14WzBdKSwicmlnaHQiPT09bi5hdFswXT92LmxlZnQrPWc6ImNlbnRlciI9PT1uLmF0WzBdJiYodi5sZWZ0Kz1nLzIpLCJib3R0b20iPT09bi5hdFsxXT92LnRvcCs9bToiY2VudGVyIj09PW4uYXRbMV0mJih2LnRvcCs9bS8yKSxwPWUoQy5hdCxnLG0pLHYubGVmdCs9cFswXSx2LnRvcCs9cFsxXSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgcyxsLGM9dCh0aGlzKSx1PWMub3V0ZXJXaWR0aCgpLGQ9Yy5vdXRlckhlaWdodCgpLGY9aSh0aGlzLCJtYXJnaW5MZWZ0IiksYj1pKHRoaXMsIm1hcmdpblRvcCIpLEQ9dStmK2kodGhpcywibWFyZ2luUmlnaHQiKStrLndpZHRoLEk9ZCtiK2kodGhpcywibWFyZ2luQm90dG9tIikray5oZWlnaHQsVD10LmV4dGVuZCh7fSx2KSxQPWUoQy5teSxjLm91dGVyV2lkdGgoKSxjLm91dGVySGVpZ2h0KCkpOyJyaWdodCI9PT1uLm15WzBdP1QubGVmdC09dToiY2VudGVyIj09PW4ubXlbMF0mJihULmxlZnQtPXUvMiksImJvdHRvbSI9PT1uLm15WzFdP1QudG9wLT1kOiJjZW50ZXIiPT09bi5teVsxXSYmKFQudG9wLT1kLzIpLFQubGVmdCs9UFswXSxULnRvcCs9UFsxXSxvKCl8fChULmxlZnQ9aChULmxlZnQpLFQudG9wPWgoVC50b3ApKSxzPXttYXJnaW5MZWZ0OmYsbWFyZ2luVG9wOmJ9LHQuZWFjaChbImxlZnQiLCJ0b3AiXSxmdW5jdGlvbihlLGkpe3QudWkucG9zaXRpb25beFtlXV0mJnQudWkucG9zaXRpb25beFtlXV1baV0oVCx7dGFyZ2V0V2lkdGg6Zyx0YXJnZXRIZWlnaHQ6bSxlbGVtV2lkdGg6dSxlbGVtSGVpZ2h0OmQsY29sbGlzaW9uUG9zaXRpb246cyxjb2xsaXNpb25XaWR0aDpELGNvbGxpc2lvbkhlaWdodDpJLG9mZnNldDpbcFswXStQWzBdLHBbMV0rUFsxXV0sbXk6bi5teSxhdDpuLmF0LHdpdGhpbjp3LGVsZW06Y30pfSksbi51c2luZyYmKGw9ZnVuY3Rpb24odCl7dmFyIGU9Xy5sZWZ0LVQubGVmdCxpPWUrZy11LHM9Xy50b3AtVC50b3Asbz1zK20tZCxoPXt0YXJnZXQ6e2VsZW1lbnQ6eSxsZWZ0Ol8ubGVmdCx0b3A6Xy50b3Asd2lkdGg6ZyxoZWlnaHQ6bX0sZWxlbWVudDp7ZWxlbWVudDpjLGxlZnQ6VC5sZWZ0LHRvcDpULnRvcCx3aWR0aDp1LGhlaWdodDpkfSxob3Jpem9udGFsOjA+aT8ibGVmdCI6ZT4wPyJyaWdodCI6ImNlbnRlciIsdmVydGljYWw6MD5vPyJ0b3AiOnM+MD8iYm90dG9tIjoibWlkZGxlIn07dT5nJiZnPnIoZStpKSYmKGguaG9yaXpvbnRhbD0iY2VudGVyIiksZD5tJiZtPnIocytvKSYmKGgudmVydGljYWw9Im1pZGRsZSIpLGguaW1wb3J0YW50PWEocihlKSxyKGkpKT5hKHIocykscihvKSk/Imhvcml6b250YWwiOiJ2ZXJ0aWNhbCIsbi51c2luZy5jYWxsKHRoaXMsdCxoKX0pLGMub2Zmc2V0KHQuZXh0ZW5kKFQse3VzaW5nOmx9KSl9KX0sdC51aS5wb3NpdGlvbj17Zml0OntsZWZ0OmZ1bmN0aW9uKHQsZSl7dmFyIGkscz1lLndpdGhpbixuPXMuaXNXaW5kb3c/cy5zY3JvbGxMZWZ0OnMub2Zmc2V0LmxlZnQsbz1zLndpZHRoLHI9dC5sZWZ0LWUuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luTGVmdCxoPW4tcixsPXIrZS5jb2xsaXNpb25XaWR0aC1vLW47ZS5jb2xsaXNpb25XaWR0aD5vP2g+MCYmMD49bD8oaT10LmxlZnQraCtlLmNvbGxpc2lvbldpZHRoLW8tbix0LmxlZnQrPWgtaSk6dC5sZWZ0PWw+MCYmMD49aD9uOmg+bD9uK28tZS5jb2xsaXNpb25XaWR0aDpuOmg+MD90LmxlZnQrPWg6bD4wP3QubGVmdC09bDp0LmxlZnQ9YSh0LmxlZnQtcix0LmxlZnQpfSx0b3A6ZnVuY3Rpb24odCxlKXt2YXIgaSxzPWUud2l0aGluLG49cy5pc1dpbmRvdz9zLnNjcm9sbFRvcDpzLm9mZnNldC50b3Asbz1lLndpdGhpbi5oZWlnaHQscj10LnRvcC1lLmNvbGxpc2lvblBvc2l0aW9uLm1hcmdpblRvcCxoPW4tcixsPXIrZS5jb2xsaXNpb25IZWlnaHQtby1uO2UuY29sbGlzaW9uSGVpZ2h0Pm8/aD4wJiYwPj1sPyhpPXQudG9wK2grZS5jb2xsaXNpb25IZWlnaHQtby1uLHQudG9wKz1oLWkpOnQudG9wPWw+MCYmMD49aD9uOmg+bD9uK28tZS5jb2xsaXNpb25IZWlnaHQ6bjpoPjA/dC50b3ArPWg6bD4wP3QudG9wLT1sOnQudG9wPWEodC50b3Atcix0LnRvcCl9fSxmbGlwOntsZWZ0OmZ1bmN0aW9uKHQsZSl7dmFyIGkscyxuPWUud2l0aGluLG89bi5vZmZzZXQubGVmdCtuLnNjcm9sbExlZnQsYT1uLndpZHRoLGg9bi5pc1dpbmRvdz9uLnNjcm9sbExlZnQ6bi5vZmZzZXQubGVmdCxsPXQubGVmdC1lLmNvbGxpc2lvblBvc2l0aW9uLm1hcmdpbkxlZnQsYz1sLWgsdT1sK2UuY29sbGlzaW9uV2lkdGgtYS1oLGQ9ImxlZnQiPT09ZS5teVswXT8tZS5lbGVtV2lkdGg6InJpZ2h0Ij09PWUubXlbMF0/ZS5lbGVtV2lkdGg6MCxwPSJsZWZ0Ij09PWUuYXRbMF0/ZS50YXJnZXRXaWR0aDoicmlnaHQiPT09ZS5hdFswXT8tZS50YXJnZXRXaWR0aDowLGY9LTIqZS5vZmZzZXRbMF07MD5jPyhpPXQubGVmdCtkK3ArZitlLmNvbGxpc2lvbldpZHRoLWEtbywoMD5pfHxyKGMpPmkpJiYodC5sZWZ0Kz1kK3ArZikpOnU+MCYmKHM9dC5sZWZ0LWUuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luTGVmdCtkK3ArZi1oLChzPjB8fHU+cihzKSkmJih0LmxlZnQrPWQrcCtmKSl9LHRvcDpmdW5jdGlvbih0LGUpe3ZhciBpLHMsbj1lLndpdGhpbixvPW4ub2Zmc2V0LnRvcCtuLnNjcm9sbFRvcCxhPW4uaGVpZ2h0LGg9bi5pc1dpbmRvdz9uLnNjcm9sbFRvcDpuLm9mZnNldC50b3AsbD10LnRvcC1lLmNvbGxpc2lvblBvc2l0aW9uLm1hcmdpblRvcCxjPWwtaCx1PWwrZS5jb2xsaXNpb25IZWlnaHQtYS1oLGQ9InRvcCI9PT1lLm15WzFdLHA9ZD8tZS5lbGVtSGVpZ2h0OiJib3R0b20iPT09ZS5teVsxXT9lLmVsZW1IZWlnaHQ6MCxmPSJ0b3AiPT09ZS5hdFsxXT9lLnRhcmdldEhlaWdodDoiYm90dG9tIj09PWUuYXRbMV0/LWUudGFyZ2V0SGVpZ2h0OjAsZz0tMiplLm9mZnNldFsxXTswPmM/KHM9dC50b3ArcCtmK2crZS5jb2xsaXNpb25IZWlnaHQtYS1vLCgwPnN8fHIoYyk+cykmJih0LnRvcCs9cCtmK2cpKTp1PjAmJihpPXQudG9wLWUuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luVG9wK3ArZitnLWgsKGk+MHx8dT5yKGkpKSYmKHQudG9wKz1wK2YrZykpfX0sZmxpcGZpdDp7bGVmdDpmdW5jdGlvbigpe3QudWkucG9zaXRpb24uZmxpcC5sZWZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0LnVpLnBvc2l0aW9uLmZpdC5sZWZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdG9wOmZ1bmN0aW9uKCl7dC51aS5wb3NpdGlvbi5mbGlwLnRvcC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdC51aS5wb3NpdGlvbi5maXQudG9wLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fX0oKSx0LnVpLnBvc2l0aW9uLHQuZXh0ZW5kKHQuZXhwclsiOiJdLHtkYXRhOnQuZXhwci5jcmVhdGVQc2V1ZG8/dC5leHByLmNyZWF0ZVBzZXVkbyhmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuISF0LmRhdGEoaSxlKX19KTpmdW5jdGlvbihlLGkscyl7cmV0dXJuISF0LmRhdGEoZSxzWzNdKX19KSx0LmZuLmV4dGVuZCh7ZGlzYWJsZVNlbGVjdGlvbjpmdW5jdGlvbigpe3ZhciB0PSJvbnNlbGVjdHN0YXJ0ImluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpPyJzZWxlY3RzdGFydCI6Im1vdXNlZG93biI7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub24odCsiLnVpLWRpc2FibGVTZWxlY3Rpb24iLGZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKX0pfX0oKSxlbmFibGVTZWxlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vZmYoIi51aS1kaXNhYmxlU2VsZWN0aW9uIil9fSk7dmFyIGM9InVpLWVmZmVjdHMtIix1PSJ1aS1lZmZlY3RzLXN0eWxlIixkPSJ1aS1lZmZlY3RzLWFuaW1hdGVkIixwPXQ7dC5lZmZlY3RzPXtlZmZlY3Q6e319LGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gaSh0LGUsaSl7dmFyIHM9dVtlLnR5cGVdfHx7fTtyZXR1cm4gbnVsbD09dD9pfHwhZS5kZWY/bnVsbDplLmRlZjoodD1zLmZsb29yP35+dDpwYXJzZUZsb2F0KHQpLGlzTmFOKHQpP2UuZGVmOnMubW9kPyh0K3MubW9kKSVzLm1vZDowPnQ/MDp0PnMubWF4P3MubWF4OnQpfWZ1bmN0aW9uIHMoaSl7dmFyIHM9bCgpLG49cy5fcmdiYT1bXTtyZXR1cm4gaT1pLnRvTG93ZXJDYXNlKCksZihoLGZ1bmN0aW9uKHQsbyl7dmFyIGEscj1vLnJlLmV4ZWMoaSksaD1yJiZvLnBhcnNlKHIpLGw9by5zcGFjZXx8InJnYmEiO3JldHVybiBoPyhhPXNbbF0oaCksc1tjW2xdLmNhY2hlXT1hW2NbbF0uY2FjaGVdLG49cy5fcmdiYT1hLl9yZ2JhLCExKTplfSksbi5sZW5ndGg/KCIwLDAsMCwwIj09PW4uam9pbigpJiZ0LmV4dGVuZChuLG8udHJhbnNwYXJlbnQpLHMpOm9baV19ZnVuY3Rpb24gbih0LGUsaSl7cmV0dXJuIGk9KGkrMSklMSwxPjYqaT90KzYqKGUtdCkqaToxPjIqaT9lOjI+MyppP3QrNiooZS10KSooMi8zLWkpOnR9dmFyIG8sYT0iYmFja2dyb3VuZENvbG9yIGJvcmRlckJvdHRvbUNvbG9yIGJvcmRlckxlZnRDb2xvciBib3JkZXJSaWdodENvbG9yIGJvcmRlclRvcENvbG9yIGNvbG9yIGNvbHVtblJ1bGVDb2xvciBvdXRsaW5lQ29sb3IgdGV4dERlY29yYXRpb25Db2xvciB0ZXh0RW1waGFzaXNDb2xvciIscj0vXihbXC0rXSk9XHMqKFxkK1wuP1xkKikvLGg9W3tyZTovcmdiYT9cKFxzKihcZHsxLDN9KVxzKixccyooXGR7MSwzfSlccyosXHMqKFxkezEsM30pXHMqKD86LFxzKihcZD8oPzpcLlxkKyk/KVxzKik/XCkvLHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVyblt0WzFdLHRbMl0sdFszXSx0WzRdXX19LHtyZTovcmdiYT9cKFxzKihcZCsoPzpcLlxkKyk/KVwlXHMqLFxzKihcZCsoPzpcLlxkKyk/KVwlXHMqLFxzKihcZCsoPzpcLlxkKyk/KVwlXHMqKD86LFxzKihcZD8oPzpcLlxkKyk/KVxzKik/XCkvLHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVyblsyLjU1KnRbMV0sMi41NSp0WzJdLDIuNTUqdFszXSx0WzRdXX19LHtyZTovIyhbYS1mMC05XXsyfSkoW2EtZjAtOV17Mn0pKFthLWYwLTldezJ9KS8scGFyc2U6ZnVuY3Rpb24odCl7cmV0dXJuW3BhcnNlSW50KHRbMV0sMTYpLHBhcnNlSW50KHRbMl0sMTYpLHBhcnNlSW50KHRbM10sMTYpXX19LHtyZTovIyhbYS1mMC05XSkoW2EtZjAtOV0pKFthLWYwLTldKS8scGFyc2U6ZnVuY3Rpb24odCl7cmV0dXJuW3BhcnNlSW50KHRbMV0rdFsxXSwxNikscGFyc2VJbnQodFsyXSt0WzJdLDE2KSxwYXJzZUludCh0WzNdK3RbM10sMTYpXX19LHtyZTovaHNsYT9cKFxzKihcZCsoPzpcLlxkKyk/KVxzKixccyooXGQrKD86XC5cZCspPylcJVxzKixccyooXGQrKD86XC5cZCspPylcJVxzKig/OixccyooXGQ/KD86XC5cZCspPylccyopP1wpLyxzcGFjZToiaHNsYSIscGFyc2U6ZnVuY3Rpb24odCl7cmV0dXJuW3RbMV0sdFsyXS8xMDAsdFszXS8xMDAsdFs0XV19fV0sbD10LkNvbG9yPWZ1bmN0aW9uKGUsaSxzLG4pe3JldHVybiBuZXcgdC5Db2xvci5mbi5wYXJzZShlLGkscyxuKX0sYz17cmdiYTp7cHJvcHM6e3JlZDp7aWR4OjAsdHlwZToiYnl0ZSJ9LGdyZWVuOntpZHg6MSx0eXBlOiJieXRlIn0sYmx1ZTp7aWR4OjIsdHlwZToiYnl0ZSJ9fX0saHNsYTp7cHJvcHM6e2h1ZTp7aWR4OjAsdHlwZToiZGVncmVlcyJ9LHNhdHVyYXRpb246e2lkeDoxLHR5cGU6InBlcmNlbnQifSxsaWdodG5lc3M6e2lkeDoyLHR5cGU6InBlcmNlbnQifX19fSx1PXsiYnl0ZSI6e2Zsb29yOiEwLG1heDoyNTV9LHBlcmNlbnQ6e21heDoxfSxkZWdyZWVzOnttb2Q6MzYwLGZsb29yOiEwfX0sZD1sLnN1cHBvcnQ9e30scD10KCI8cD4iKVswXSxmPXQuZWFjaDtwLnN0eWxlLmNzc1RleHQ9ImJhY2tncm91bmQtY29sb3I6cmdiYSgxLDEsMSwuNSkiLGQucmdiYT1wLnN0eWxlLmJhY2tncm91bmRDb2xvci5pbmRleE9mKCJyZ2JhIik+LTEsZihjLGZ1bmN0aW9uKHQsZSl7ZS5jYWNoZT0iXyIrdCxlLnByb3BzLmFscGhhPXtpZHg6Myx0eXBlOiJwZXJjZW50IixkZWY6MX19KSxsLmZuPXQuZXh0ZW5kKGwucHJvdG90eXBlLHtwYXJzZTpmdW5jdGlvbihuLGEscixoKXtpZihuPT09ZSlyZXR1cm4gdGhpcy5fcmdiYT1bbnVsbCxudWxsLG51bGwsbnVsbF0sdGhpczsobi5qcXVlcnl8fG4ubm9kZVR5cGUpJiYobj10KG4pLmNzcyhhKSxhPWUpO3ZhciB1PXRoaXMsZD10LnR5cGUobikscD10aGlzLl9yZ2JhPVtdO3JldHVybiBhIT09ZSYmKG49W24sYSxyLGhdLGQ9ImFycmF5IiksInN0cmluZyI9PT1kP3RoaXMucGFyc2UocyhuKXx8by5fZGVmYXVsdCk6ImFycmF5Ij09PWQ/KGYoYy5yZ2JhLnByb3BzLGZ1bmN0aW9uKHQsZSl7cFtlLmlkeF09aShuW2UuaWR4XSxlKX0pLHRoaXMpOiJvYmplY3QiPT09ZD8obiBpbnN0YW5jZW9mIGw/ZihjLGZ1bmN0aW9uKHQsZSl7bltlLmNhY2hlXSYmKHVbZS5jYWNoZV09bltlLmNhY2hlXS5zbGljZSgpKX0pOmYoYyxmdW5jdGlvbihlLHMpe3ZhciBvPXMuY2FjaGU7ZihzLnByb3BzLGZ1bmN0aW9uKHQsZSl7aWYoIXVbb10mJnMudG8pe2lmKCJhbHBoYSI9PT10fHxudWxsPT1uW3RdKXJldHVybjt1W29dPXMudG8odS5fcmdiYSl9dVtvXVtlLmlkeF09aShuW3RdLGUsITApfSksdVtvXSYmMD50LmluQXJyYXkobnVsbCx1W29dLnNsaWNlKDAsMykpJiYodVtvXVszXT0xLHMuZnJvbSYmKHUuX3JnYmE9cy5mcm9tKHVbb10pKSl9KSx0aGlzKTplfSxpczpmdW5jdGlvbih0KXt2YXIgaT1sKHQpLHM9ITAsbj10aGlzO3JldHVybiBmKGMsZnVuY3Rpb24odCxvKXt2YXIgYSxyPWlbby5jYWNoZV07cmV0dXJuIHImJihhPW5bby5jYWNoZV18fG8udG8mJm8udG8obi5fcmdiYSl8fFtdLGYoby5wcm9wcyxmdW5jdGlvbih0LGkpe3JldHVybiBudWxsIT1yW2kuaWR4XT9zPXJbaS5pZHhdPT09YVtpLmlkeF06ZX0pKSxzfSksc30sX3NwYWNlOmZ1bmN0aW9uKCl7dmFyIHQ9W10sZT10aGlzO3JldHVybiBmKGMsZnVuY3Rpb24oaSxzKXtlW3MuY2FjaGVdJiZ0LnB1c2goaSl9KSx0LnBvcCgpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uKHQsZSl7dmFyIHM9bCh0KSxuPXMuX3NwYWNlKCksbz1jW25dLGE9MD09PXRoaXMuYWxwaGEoKT9sKCJ0cmFuc3BhcmVudCIpOnRoaXMscj1hW28uY2FjaGVdfHxvLnRvKGEuX3JnYmEpLGg9ci5zbGljZSgpO3JldHVybiBzPXNbby5jYWNoZV0sZihvLnByb3BzLGZ1bmN0aW9uKHQsbil7dmFyIG89bi5pZHgsYT1yW29dLGw9c1tvXSxjPXVbbi50eXBlXXx8e307bnVsbCE9PWwmJihudWxsPT09YT9oW29dPWw6KGMubW9kJiYobC1hPmMubW9kLzI/YSs9Yy5tb2Q6YS1sPmMubW9kLzImJihhLT1jLm1vZCkpLGhbb109aSgobC1hKSplK2EsbikpKX0pLHRoaXNbbl0oaCl9LGJsZW5kOmZ1bmN0aW9uKGUpe2lmKDE9PT10aGlzLl9yZ2JhWzNdKXJldHVybiB0aGlzO3ZhciBpPXRoaXMuX3JnYmEuc2xpY2UoKSxzPWkucG9wKCksbj1sKGUpLl9yZ2JhO3JldHVybiBsKHQubWFwKGksZnVuY3Rpb24odCxlKXtyZXR1cm4oMS1zKSpuW2VdK3MqdH0pKX0sdG9SZ2JhU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGU9InJnYmEoIixpPXQubWFwKHRoaXMuX3JnYmEsZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD9lPjI/MTowOnR9KTtyZXR1cm4gMT09PWlbM10mJihpLnBvcCgpLGU9InJnYigiKSxlK2kuam9pbigpKyIpIn0sdG9Ic2xhU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGU9ImhzbGEoIixpPXQubWFwKHRoaXMuaHNsYSgpLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQmJih0PWU+Mj8xOjApLGUmJjM+ZSYmKHQ9TWF0aC5yb3VuZCgxMDAqdCkrIiUiKSx0fSk7cmV0dXJuIDE9PT1pWzNdJiYoaS5wb3AoKSxlPSJoc2woIiksZStpLmpvaW4oKSsiKSJ9LHRvSGV4U3RyaW5nOmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXMuX3JnYmEuc2xpY2UoKSxzPWkucG9wKCk7cmV0dXJuIGUmJmkucHVzaCh+figyNTUqcykpLCIjIit0Lm1hcChpLGZ1bmN0aW9uKHQpe3JldHVybiB0PSh0fHwwKS50b1N0cmluZygxNiksMT09PXQubGVuZ3RoPyIwIit0OnR9KS5qb2luKCIiKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuX3JnYmFbM10/InRyYW5zcGFyZW50Ijp0aGlzLnRvUmdiYVN0cmluZygpfX0pLGwuZm4ucGFyc2UucHJvdG90eXBlPWwuZm4sYy5oc2xhLnRvPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXRbMF18fG51bGw9PXRbMV18fG51bGw9PXRbMl0pcmV0dXJuW251bGwsbnVsbCxudWxsLHRbM11dO3ZhciBlLGkscz10WzBdLzI1NSxuPXRbMV0vMjU1LG89dFsyXS8yNTUsYT10WzNdLHI9TWF0aC5tYXgocyxuLG8pLGg9TWF0aC5taW4ocyxuLG8pLGw9ci1oLGM9citoLHU9LjUqYztyZXR1cm4gZT1oPT09cj8wOnM9PT1yPzYwKihuLW8pL2wrMzYwOm49PT1yPzYwKihvLXMpL2wrMTIwOjYwKihzLW4pL2wrMjQwLGk9MD09PWw/MDouNT49dT9sL2M6bC8oMi1jKSxbTWF0aC5yb3VuZChlKSUzNjAsaSx1LG51bGw9PWE/MTphXX0sYy5oc2xhLmZyb209ZnVuY3Rpb24odCl7aWYobnVsbD09dFswXXx8bnVsbD09dFsxXXx8bnVsbD09dFsyXSlyZXR1cm5bbnVsbCxudWxsLG51bGwsdFszXV07dmFyIGU9dFswXS8zNjAsaT10WzFdLHM9dFsyXSxvPXRbM10sYT0uNT49cz9zKigxK2kpOnMraS1zKmkscj0yKnMtYTtyZXR1cm5bTWF0aC5yb3VuZCgyNTUqbihyLGEsZSsxLzMpKSxNYXRoLnJvdW5kKDI1NSpuKHIsYSxlKSksTWF0aC5yb3VuZCgyNTUqbihyLGEsZS0xLzMpKSxvXX0sZihjLGZ1bmN0aW9uKHMsbil7dmFyIG89bi5wcm9wcyxhPW4uY2FjaGUsaD1uLnRvLGM9bi5mcm9tO2wuZm5bc109ZnVuY3Rpb24ocyl7aWYoaCYmIXRoaXNbYV0mJih0aGlzW2FdPWgodGhpcy5fcmdiYSkpLHM9PT1lKXJldHVybiB0aGlzW2FdLnNsaWNlKCk7dmFyIG4scj10LnR5cGUocyksdT0iYXJyYXkiPT09cnx8Im9iamVjdCI9PT1yP3M6YXJndW1lbnRzLGQ9dGhpc1thXS5zbGljZSgpO3JldHVybiBmKG8sZnVuY3Rpb24odCxlKXt2YXIgcz11WyJvYmplY3QiPT09cj90OmUuaWR4XTtudWxsPT1zJiYocz1kW2UuaWR4XSksZFtlLmlkeF09aShzLGUpfSksYz8obj1sKGMoZCkpLG5bYV09ZCxuKTpsKGQpfSxmKG8sZnVuY3Rpb24oZSxpKXtsLmZuW2VdfHwobC5mbltlXT1mdW5jdGlvbihuKXt2YXIgbyxhPXQudHlwZShuKSxoPSJhbHBoYSI9PT1lP3RoaXMuX2hzbGE/ImhzbGEiOiJyZ2JhIjpzLGw9dGhpc1toXSgpLGM9bFtpLmlkeF07cmV0dXJuInVuZGVmaW5lZCI9PT1hP2M6KCJmdW5jdGlvbiI9PT1hJiYobj1uLmNhbGwodGhpcyxjKSxhPXQudHlwZShuKSksbnVsbD09biYmaS5lbXB0eT90aGlzOigic3RyaW5nIj09PWEmJihvPXIuZXhlYyhuKSxvJiYobj1jK3BhcnNlRmxvYXQob1syXSkqKCIrIj09PW9bMV0/MTotMSkpKSxsW2kuaWR4XT1uLHRoaXNbaF0obCkpKX0pfSl9KSxsLmhvb2s9ZnVuY3Rpb24oZSl7dmFyIGk9ZS5zcGxpdCgiICIpO2YoaSxmdW5jdGlvbihlLGkpe3QuY3NzSG9va3NbaV09e3NldDpmdW5jdGlvbihlLG4pe3ZhciBvLGEscj0iIjtpZigidHJhbnNwYXJlbnQiIT09biYmKCJzdHJpbmciIT09dC50eXBlKG4pfHwobz1zKG4pKSkpe2lmKG49bChvfHxuKSwhZC5yZ2JhJiYxIT09bi5fcmdiYVszXSl7Zm9yKGE9ImJhY2tncm91bmRDb2xvciI9PT1pP2UucGFyZW50Tm9kZTplOygiIj09PXJ8fCJ0cmFuc3BhcmVudCI9PT1yKSYmYSYmYS5zdHlsZTspdHJ5e3I9dC5jc3MoYSwiYmFja2dyb3VuZENvbG9yIiksYT1hLnBhcmVudE5vZGV9Y2F0Y2goaCl7fW49bi5ibGVuZChyJiYidHJhbnNwYXJlbnQiIT09cj9yOiJfZGVmYXVsdCIpfW49bi50b1JnYmFTdHJpbmcoKX10cnl7ZS5zdHlsZVtpXT1ufWNhdGNoKGgpe319fSx0LmZ4LnN0ZXBbaV09ZnVuY3Rpb24oZSl7ZS5jb2xvckluaXR8fChlLnN0YXJ0PWwoZS5lbGVtLGkpLGUuZW5kPWwoZS5lbmQpLGUuY29sb3JJbml0PSEwKSx0LmNzc0hvb2tzW2ldLnNldChlLmVsZW0sZS5zdGFydC50cmFuc2l0aW9uKGUuZW5kLGUucG9zKSl9fSl9LGwuaG9vayhhKSx0LmNzc0hvb2tzLmJvcmRlckNvbG9yPXtleHBhbmQ6ZnVuY3Rpb24odCl7dmFyIGU9e307cmV0dXJuIGYoWyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxmdW5jdGlvbihpLHMpe2VbImJvcmRlciIrcysiQ29sb3IiXT10fSksZX19LG89dC5Db2xvci5uYW1lcz17YXF1YToiIzAwZmZmZiIsYmxhY2s6IiMwMDAwMDAiLGJsdWU6IiMwMDAwZmYiLGZ1Y2hzaWE6IiNmZjAwZmYiLGdyYXk6IiM4MDgwODAiLGdyZWVuOiIjMDA4MDAwIixsaW1lOiIjMDBmZjAwIixtYXJvb246IiM4MDAwMDAiLG5hdnk6IiMwMDAwODAiLG9saXZlOiIjODA4MDAwIixwdXJwbGU6IiM4MDAwODAiLHJlZDoiI2ZmMDAwMCIsc2lsdmVyOiIjYzBjMGMwIix0ZWFsOiIjMDA4MDgwIix3aGl0ZToiI2ZmZmZmZiIseWVsbG93OiIjZmZmZjAwIix0cmFuc3BhcmVudDpbbnVsbCxudWxsLG51bGwsMF0sX2RlZmF1bHQ6IiNmZmZmZmYifX0ocCksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciBpLHMsbj1lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc/ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZSxudWxsKTplLmN1cnJlbnRTdHlsZSxvPXt9O2lmKG4mJm4ubGVuZ3RoJiZuWzBdJiZuW25bMF1dKWZvcihzPW4ubGVuZ3RoO3MtLTspaT1uW3NdLCJzdHJpbmciPT10eXBlb2YgbltpXSYmKG9bdC5jYW1lbENhc2UoaSldPW5baV0pO2Vsc2UgZm9yKGkgaW4gbikic3RyaW5nIj09dHlwZW9mIG5baV0mJihvW2ldPW5baV0pO3JldHVybiBvfWZ1bmN0aW9uIGkoZSxpKXt2YXIgcyxvLGE9e307Zm9yKHMgaW4gaSlvPWlbc10sZVtzXSE9PW8mJihuW3NdfHwodC5meC5zdGVwW3NdfHwhaXNOYU4ocGFyc2VGbG9hdChvKSkpJiYoYVtzXT1vKSk7cmV0dXJuIGF9dmFyIHM9WyJhZGQiLCJyZW1vdmUiLCJ0b2dnbGUiXSxuPXtib3JkZXI6MSxib3JkZXJCb3R0b206MSxib3JkZXJDb2xvcjoxLGJvcmRlckxlZnQ6MSxib3JkZXJSaWdodDoxLGJvcmRlclRvcDoxLGJvcmRlcldpZHRoOjEsbWFyZ2luOjEscGFkZGluZzoxfTt0LmVhY2goWyJib3JkZXJMZWZ0U3R5bGUiLCJib3JkZXJSaWdodFN0eWxlIiwiYm9yZGVyQm90dG9tU3R5bGUiLCJib3JkZXJUb3BTdHlsZSJdLGZ1bmN0aW9uKGUsaSl7dC5meC5zdGVwW2ldPWZ1bmN0aW9uKHQpeygibm9uZSIhPT10LmVuZCYmIXQuc2V0QXR0cnx8MT09PXQucG9zJiYhdC5zZXRBdHRyKSYmKHAuc3R5bGUodC5lbGVtLGksdC5lbmQpLHQuc2V0QXR0cj0hMCl9fSksdC5mbi5hZGRCYWNrfHwodC5mbi5hZGRCYWNrPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmFkZChudWxsPT10P3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKHQpKX0pLHQuZWZmZWN0cy5hbmltYXRlQ2xhc3M9ZnVuY3Rpb24obixvLGEscil7dmFyIGg9dC5zcGVlZChvLGEscik7cmV0dXJuIHRoaXMucXVldWUoZnVuY3Rpb24oKXt2YXIgbyxhPXQodGhpcykscj1hLmF0dHIoImNsYXNzIil8fCIiLGw9aC5jaGlsZHJlbj9hLmZpbmQoIioiKS5hZGRCYWNrKCk6YTtsPWwubWFwKGZ1bmN0aW9uKCl7dmFyIGk9dCh0aGlzKTtyZXR1cm57ZWw6aSxzdGFydDplKHRoaXMpfX0pLG89ZnVuY3Rpb24oKXt0LmVhY2gocyxmdW5jdGlvbih0LGUpe25bZV0mJmFbZSsiQ2xhc3MiXShuW2VdKX0pfSxvKCksbD1sLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLmVuZD1lKHRoaXMuZWxbMF0pLHRoaXMuZGlmZj1pKHRoaXMuc3RhcnQsdGhpcy5lbmQpLHRoaXN9KSxhLmF0dHIoImNsYXNzIixyKSxsPWwubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxpPXQuRGVmZXJyZWQoKSxzPXQuZXh0ZW5kKHt9LGgse3F1ZXVlOiExLGNvbXBsZXRlOmZ1bmN0aW9uKCl7aS5yZXNvbHZlKGUpfX0pO3JldHVybiB0aGlzLmVsLmFuaW1hdGUodGhpcy5kaWZmLHMpLGkucHJvbWlzZSgpfSksdC53aGVuLmFwcGx5KHQsbC5nZXQoKSkuZG9uZShmdW5jdGlvbigpe28oKSx0LmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5lbDt0LmVhY2godGhpcy5kaWZmLGZ1bmN0aW9uKHQpe2UuY3NzKHQsIiIpfSl9KSxoLmNvbXBsZXRlLmNhbGwoYVswXSl9KX0pfSx0LmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGkscyxuLG8pe3JldHVybiBzP3QuZWZmZWN0cy5hbmltYXRlQ2xhc3MuY2FsbCh0aGlzLHthZGQ6aX0scyxuLG8pOmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0odC5mbi5hZGRDbGFzcykscmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGkscyxuLG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dC5lZmZlY3RzLmFuaW1hdGVDbGFzcy5jYWxsKHRoaXMse3JlbW92ZTppfSxzLG4sbyk6ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSh0LmZuLnJlbW92ZUNsYXNzKSx0b2dnbGVDbGFzczpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oaSxzLG4sbyxhKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBzfHx2b2lkIDA9PT1zP24/dC5lZmZlY3RzLmFuaW1hdGVDbGFzcy5jYWxsKHRoaXMscz97YWRkOml9OntyZW1vdmU6aX0sbixvLGEpOmUuYXBwbHkodGhpcyxhcmd1bWVudHMpOnQuZWZmZWN0cy5hbmltYXRlQ2xhc3MuY2FsbCh0aGlzLHt0b2dnbGU6aX0scyxuLG8pfX0odC5mbi50b2dnbGVDbGFzcyksc3dpdGNoQ2xhc3M6ZnVuY3Rpb24oZSxpLHMsbixvKXtyZXR1cm4gdC5lZmZlY3RzLmFuaW1hdGVDbGFzcy5jYWxsKHRoaXMse2FkZDppLHJlbW92ZTplfSxzLG4sbyl9fSl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsaSxzLG4pe3JldHVybiB0LmlzUGxhaW5PYmplY3QoZSkmJihpPWUsZT1lLmVmZmVjdCksZT17ZWZmZWN0OmV9LG51bGw9PWkmJihpPXt9KSx0LmlzRnVuY3Rpb24oaSkmJihuPWkscz1udWxsLGk9e30pLCgibnVtYmVyIj09dHlwZW9mIGl8fHQuZnguc3BlZWRzW2ldKSYmKG49cyxzPWksaT17fSksdC5pc0Z1bmN0aW9uKHMpJiYobj1zLHM9bnVsbCksaSYmdC5leHRlbmQoZSxpKSxzPXN8fGkuZHVyYXRpb24sZS5kdXJhdGlvbj10LmZ4Lm9mZj8wOiJudW1iZXIiPT10eXBlb2Ygcz9zOnMgaW4gdC5meC5zcGVlZHM/dC5meC5zcGVlZHNbc106dC5meC5zcGVlZHMuX2RlZmF1bHQsZS5jb21wbGV0ZT1ufHxpLmNvbXBsZXRlLGV9ZnVuY3Rpb24gaShlKXtyZXR1cm4hZXx8Im51bWJlciI9PXR5cGVvZiBlfHx0LmZ4LnNwZWVkc1tlXT8hMDoic3RyaW5nIiE9dHlwZW9mIGV8fHQuZWZmZWN0cy5lZmZlY3RbZV0/dC5pc0Z1bmN0aW9uKGUpPyEwOiJvYmplY3QiIT10eXBlb2YgZXx8ZS5lZmZlY3Q/ITE6ITA6ITB9ZnVuY3Rpb24gcyh0LGUpe3ZhciBpPWUub3V0ZXJXaWR0aCgpLHM9ZS5vdXRlckhlaWdodCgpLG49L15yZWN0XCgoLT9cZCpcLj9cZCpweHwtP1xkKyV8YXV0byksP1xzKigtP1xkKlwuP1xkKnB4fC0/XGQrJXxhdXRvKSw/XHMqKC0/XGQqXC4/XGQqcHh8LT9cZCslfGF1dG8pLD9ccyooLT9cZCpcLj9cZCpweHwtP1xkKyV8YXV0bylcKSQvLG89bi5leGVjKHQpfHxbIiIsMCxpLHMsMF07cmV0dXJue3RvcDpwYXJzZUZsb2F0KG9bMV0pfHwwLHJpZ2h0OiJhdXRvIj09PW9bMl0/aTpwYXJzZUZsb2F0KG9bMl0pLGJvdHRvbToiYXV0byI9PT1vWzNdP3M6cGFyc2VGbG9hdChvWzNdKSxsZWZ0OnBhcnNlRmxvYXQob1s0XSl8fDB9fXQuZXhwciYmdC5leHByLmZpbHRlcnMmJnQuZXhwci5maWx0ZXJzLmFuaW1hdGVkJiYodC5leHByLmZpbHRlcnMuYW5pbWF0ZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiEhdChpKS5kYXRhKGQpfHxlKGkpfX0odC5leHByLmZpbHRlcnMuYW5pbWF0ZWQpKSx0LnVpQmFja0NvbXBhdCE9PSExJiZ0LmV4dGVuZCh0LmVmZmVjdHMse3NhdmU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9MCxzPWUubGVuZ3RoO3M+aTtpKyspbnVsbCE9PWVbaV0mJnQuZGF0YShjK2VbaV0sdFswXS5zdHlsZVtlW2ldXSl9LHJlc3RvcmU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGkscz0wLG49ZS5sZW5ndGg7bj5zO3MrKyludWxsIT09ZVtzXSYmKGk9dC5kYXRhKGMrZVtzXSksdC5jc3MoZVtzXSxpKSl9LHNldE1vZGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4idG9nZ2xlIj09PWUmJihlPXQuaXMoIjpoaWRkZW4iKT8ic2hvdyI6ImhpZGUiKSxlfSxjcmVhdGVXcmFwcGVyOmZ1bmN0aW9uKGUpe2lmKGUucGFyZW50KCkuaXMoIi51aS1lZmZlY3RzLXdyYXBwZXIiKSlyZXR1cm4gZS5wYXJlbnQoKTt2YXIgaT17d2lkdGg6ZS5vdXRlcldpZHRoKCEwKSxoZWlnaHQ6ZS5vdXRlckhlaWdodCghMCksImZsb2F0IjplLmNzcygiZmxvYXQiKX0scz10KCI8ZGl2PjwvZGl2PiIpLmFkZENsYXNzKCJ1aS1lZmZlY3RzLXdyYXBwZXIiKS5jc3Moe2ZvbnRTaXplOiIxMDAlIixiYWNrZ3JvdW5kOiJ0cmFuc3BhcmVudCIsYm9yZGVyOiJub25lIixtYXJnaW46MCxwYWRkaW5nOjB9KSxuPXt3aWR0aDplLndpZHRoKCksaGVpZ2h0OmUuaGVpZ2h0KCl9LG89ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDt0cnl7by5pZH1jYXRjaChhKXtvPWRvY3VtZW50LmJvZHl9cmV0dXJuIGUud3JhcChzKSwoZVswXT09PW98fHQuY29udGFpbnMoZVswXSxvKSkmJnQobykudHJpZ2dlcigiZm9jdXMiKSxzPWUucGFyZW50KCksInN0YXRpYyI9PT1lLmNzcygicG9zaXRpb24iKT8ocy5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSJ9KSxlLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIn0pKToodC5leHRlbmQoaSx7cG9zaXRpb246ZS5jc3MoInBvc2l0aW9uIiksekluZGV4OmUuY3NzKCJ6LWluZGV4Iil9KSx0LmVhY2goWyJ0b3AiLCJsZWZ0IiwiYm90dG9tIiwicmlnaHQiXSxmdW5jdGlvbih0LHMpe2lbc109ZS5jc3MocyksaXNOYU4ocGFyc2VJbnQoaVtzXSwxMCkpJiYoaVtzXT0iYXV0byIpfSksZS5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSIsdG9wOjAsbGVmdDowLHJpZ2h0OiJhdXRvIixib3R0b206ImF1dG8ifSkpLGUuY3NzKG4pLHMuY3NzKGkpLnNob3coKX0scmVtb3ZlV3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgaT1kb2N1bWVudC5hY3RpdmVFbGVtZW50O3JldHVybiBlLnBhcmVudCgpLmlzKCIudWktZWZmZWN0cy13cmFwcGVyIikmJihlLnBhcmVudCgpLnJlcGxhY2VXaXRoKGUpLChlWzBdPT09aXx8dC5jb250YWlucyhlWzBdLGkpKSYmdChpKS50cmlnZ2VyKCJmb2N1cyIpKSxlfX0pLHQuZXh0ZW5kKHQuZWZmZWN0cyx7dmVyc2lvbjoiMS4xMi4wLXJjLjIiLGRlZmluZTpmdW5jdGlvbihlLGkscyl7cmV0dXJuIHN8fChzPWksaT0iZWZmZWN0IiksdC5lZmZlY3RzLmVmZmVjdFtlXT1zLHQuZWZmZWN0cy5lZmZlY3RbZV0ubW9kZT1pLHN9LHNjYWxlZERpbWVuc2lvbnM6ZnVuY3Rpb24odCxlLGkpe2lmKDA9PT1lKXJldHVybntoZWlnaHQ6MCx3aWR0aDowLG91dGVySGVpZ2h0OjAsb3V0ZXJXaWR0aDowfTt2YXIgcz0iaG9yaXpvbnRhbCIhPT1pPyhlfHwxMDApLzEwMDoxLG49InZlcnRpY2FsIiE9PWk/KGV8fDEwMCkvMTAwOjE7cmV0dXJue2hlaWdodDp0LmhlaWdodCgpKm4sd2lkdGg6dC53aWR0aCgpKnMsb3V0ZXJIZWlnaHQ6dC5vdXRlckhlaWdodCgpKm4sb3V0ZXJXaWR0aDp0Lm91dGVyV2lkdGgoKSpzfX0sY2xpcFRvQm94OmZ1bmN0aW9uKHQpe3JldHVybnt3aWR0aDp0LmNsaXAucmlnaHQtdC5jbGlwLmxlZnQsaGVpZ2h0OnQuY2xpcC5ib3R0b20tdC5jbGlwLnRvcCxsZWZ0OnQuY2xpcC5sZWZ0LHRvcDp0LmNsaXAudG9wfX0sdW5zaGlmdDpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dC5xdWV1ZSgpO2U+MSYmcy5zcGxpY2UuYXBwbHkocyxbMSwwXS5jb25jYXQocy5zcGxpY2UoZSxpKSkpLHQuZGVxdWV1ZSgpfSxzYXZlU3R5bGU6ZnVuY3Rpb24odCl7dC5kYXRhKHUsdFswXS5zdHlsZS5jc3NUZXh0KX0scmVzdG9yZVN0eWxlOmZ1bmN0aW9uKHQpe3RbMF0uc3R5bGUuY3NzVGV4dD10LmRhdGEodSl8fCIiLHQucmVtb3ZlRGF0YSh1KX0sbW9kZTpmdW5jdGlvbih0LGUpe3ZhciBpPXQuaXMoIjpoaWRkZW4iKTtyZXR1cm4idG9nZ2xlIj09PWUmJihlPWk/InNob3ciOiJoaWRlIiksKGk/ImhpZGUiPT09ZToic2hvdyI9PT1lKSYmKGU9Im5vbmUiKSxlfSxnZXRCYXNlbGluZTpmdW5jdGlvbih0LGUpe3ZhciBpLHM7c3dpdGNoKHRbMF0pe2Nhc2UidG9wIjppPTA7YnJlYWs7Y2FzZSJtaWRkbGUiOmk9LjU7YnJlYWs7Y2FzZSJib3R0b20iOmk9MTticmVhaztkZWZhdWx0Omk9dFswXS9lLmhlaWdodH1zd2l0Y2godFsxXSl7Y2FzZSJsZWZ0IjpzPTA7YnJlYWs7Y2FzZSJjZW50ZXIiOnM9LjU7YnJlYWs7Y2FzZSJyaWdodCI6cz0xO2JyZWFrO2RlZmF1bHQ6cz10WzFdL2Uud2lkdGh9cmV0dXJue3g6cyx5Oml9fSxjcmVhdGVQbGFjZWhvbGRlcjpmdW5jdGlvbihlKXt2YXIgaSxzPWUuY3NzKCJwb3NpdGlvbiIpLG49ZS5wb3NpdGlvbigpO3JldHVybiBlLmNzcyh7bWFyZ2luVG9wOmUuY3NzKCJtYXJnaW5Ub3AiKSxtYXJnaW5Cb3R0b206ZS5jc3MoIm1hcmdpbkJvdHRvbSIpLG1hcmdpbkxlZnQ6ZS5jc3MoIm1hcmdpbkxlZnQiKSxtYXJnaW5SaWdodDplLmNzcygibWFyZ2luUmlnaHQiKX0pLm91dGVyV2lkdGgoZS5vdXRlcldpZHRoKCkpLm91dGVySGVpZ2h0KGUub3V0ZXJIZWlnaHQoKSksL14oc3RhdGljfHJlbGF0aXZlKS8udGVzdChzKSYmKHM9ImFic29sdXRlIixpPXQoIjwiK2VbMF0ubm9kZU5hbWUrIj4iKS5pbnNlcnRBZnRlcihlKS5jc3Moe2Rpc3BsYXk6L14oaW5saW5lfHJ1YnkpLy50ZXN0KGUuY3NzKCJkaXNwbGF5IikpPyJpbmxpbmUtYmxvY2siOiJibG9jayIsdmlzaWJpbGl0eToiaGlkZGVuIixtYXJnaW5Ub3A6ZS5jc3MoIm1hcmdpblRvcCIpLG1hcmdpbkJvdHRvbTplLmNzcygibWFyZ2luQm90dG9tIiksbWFyZ2luTGVmdDplLmNzcygibWFyZ2luTGVmdCIpLG1hcmdpblJpZ2h0OmUuY3NzKCJtYXJnaW5SaWdodCIpLCJmbG9hdCI6ZS5jc3MoImZsb2F0Iil9KS5vdXRlcldpZHRoKGUub3V0ZXJXaWR0aCgpKS5vdXRlckhlaWdodChlLm91dGVySGVpZ2h0KCkpLmFkZENsYXNzKCJ1aS1lZmZlY3RzLXBsYWNlaG9sZGVyIiksZS5kYXRhKGMrInBsYWNlaG9sZGVyIixpKSksZS5jc3Moe3Bvc2l0aW9uOnMsbGVmdDpuLmxlZnQsdG9wOm4udG9wfSksaX0scmVtb3ZlUGxhY2Vob2xkZXI6ZnVuY3Rpb24odCl7dmFyIGU9YysicGxhY2Vob2xkZXIiLGk9dC5kYXRhKGUpO2kmJihpLnJlbW92ZSgpLHQucmVtb3ZlRGF0YShlKSl9LGNsZWFuVXA6ZnVuY3Rpb24oZSl7dC5lZmZlY3RzLnJlc3RvcmVTdHlsZShlKSx0LmVmZmVjdHMucmVtb3ZlUGxhY2Vob2xkZXIoZSl9LHNldFRyYW5zaXRpb246ZnVuY3Rpb24oZSxpLHMsbil7cmV0dXJuIG49bnx8e30sdC5lYWNoKGksZnVuY3Rpb24odCxpKXt2YXIgbz1lLmNzc1VuaXQoaSk7b1swXT4wJiYobltpXT1vWzBdKnMrb1sxXSl9KSxufX0pLHQuZm4uZXh0ZW5kKHtlZmZlY3Q6ZnVuY3Rpb24oKXtmdW5jdGlvbiBpKGUpe2Z1bmN0aW9uIGkoKXtyLnJlbW92ZURhdGEoZCksdC5lZmZlY3RzLmNsZWFuVXAociksImhpZGUiPT09cy5tb2RlJiZyLmhpZGUoKSxhKCl9ZnVuY3Rpb24gYSgpe3QuaXNGdW5jdGlvbihoKSYmaC5jYWxsKHJbMF0pLHQuaXNGdW5jdGlvbihlKSYmZSgpfXZhciByPXQodGhpcyk7cy5tb2RlPWMuc2hpZnQoKSx0LnVpQmFja0NvbXBhdD09PSExfHxvPyJub25lIj09PXMubW9kZT8ocltsXSgpLGEoKSk6bi5jYWxsKHJbMF0scyxpKTooci5pcygiOmhpZGRlbiIpPyJoaWRlIj09PWw6InNob3ciPT09bCk/KHJbbF0oKSxhKCkpOm4uY2FsbChyWzBdLHMsYSl9dmFyIHM9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbj10LmVmZmVjdHMuZWZmZWN0W3MuZWZmZWN0XSxvPW4ubW9kZSxhPXMucXVldWUscj1hfHwiZngiLGg9cy5jb21wbGV0ZSxsPXMubW9kZSxjPVtdLHU9ZnVuY3Rpb24oZSl7dmFyIGk9dCh0aGlzKSxzPXQuZWZmZWN0cy5tb2RlKGksbCl8fG87aS5kYXRhKGQsITApLGMucHVzaChzKSxvJiYoInNob3ciPT09c3x8cz09PW8mJiJoaWRlIj09PXMpJiZpLnNob3coKSxvJiYibm9uZSI9PT1zfHx0LmVmZmVjdHMuc2F2ZVN0eWxlKGkpLHQuaXNGdW5jdGlvbihlKSYmZSgpfTtyZXR1cm4gdC5meC5vZmZ8fCFuP2w/dGhpc1tsXShzLmR1cmF0aW9uLGgpOnRoaXMuZWFjaChmdW5jdGlvbigpe2gmJmguY2FsbCh0aGlzKX0pOmE9PT0hMT90aGlzLmVhY2godSkuZWFjaChpKTp0aGlzLnF1ZXVlKHIsdSkucXVldWUocixpKX0sc2hvdzpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24ocyl7aWYoaShzKSlyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG4ubW9kZT0ic2hvdyIsdGhpcy5lZmZlY3QuY2FsbCh0aGlzLG4pfX0odC5mbi5zaG93KSxoaWRlOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihzKXtpZihpKHMpKXJldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTsKdmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG4ubW9kZT0iaGlkZSIsdGhpcy5lZmZlY3QuY2FsbCh0aGlzLG4pfX0odC5mbi5oaWRlKSx0b2dnbGU6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHMpe2lmKGkocyl8fCJib29sZWFuIj09dHlwZW9mIHMpcmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBuLm1vZGU9InRvZ2dsZSIsdGhpcy5lZmZlY3QuY2FsbCh0aGlzLG4pfX0odC5mbi50b2dnbGUpLGNzc1VuaXQ6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcy5jc3MoZSkscz1bXTtyZXR1cm4gdC5lYWNoKFsiZW0iLCJweCIsIiUiLCJwdCJdLGZ1bmN0aW9uKHQsZSl7aS5pbmRleE9mKGUpPjAmJihzPVtwYXJzZUZsb2F0KGkpLGVdKX0pLHN9LGNzc0NsaXA6ZnVuY3Rpb24odCl7cmV0dXJuIHQ/dGhpcy5jc3MoImNsaXAiLCJyZWN0KCIrdC50b3ArInB4ICIrdC5yaWdodCsicHggIit0LmJvdHRvbSsicHggIit0LmxlZnQrInB4KSIpOnModGhpcy5jc3MoImNsaXAiKSx0aGlzKX0sdHJhbnNmZXI6ZnVuY3Rpb24oZSxpKXt2YXIgcz10KHRoaXMpLG49dChlLnRvKSxvPSJmaXhlZCI9PT1uLmNzcygicG9zaXRpb24iKSxhPXQoImJvZHkiKSxyPW8/YS5zY3JvbGxUb3AoKTowLGg9bz9hLnNjcm9sbExlZnQoKTowLGw9bi5vZmZzZXQoKSxjPXt0b3A6bC50b3AtcixsZWZ0OmwubGVmdC1oLGhlaWdodDpuLmlubmVySGVpZ2h0KCksd2lkdGg6bi5pbm5lcldpZHRoKCl9LHU9cy5vZmZzZXQoKSxkPXQoIjxkaXYgY2xhc3M9J3VpLWVmZmVjdHMtdHJhbnNmZXInPjwvZGl2PiIpLmFwcGVuZFRvKCJib2R5IikuYWRkQ2xhc3MoZS5jbGFzc05hbWUpLmNzcyh7dG9wOnUudG9wLXIsbGVmdDp1LmxlZnQtaCxoZWlnaHQ6cy5pbm5lckhlaWdodCgpLHdpZHRoOnMuaW5uZXJXaWR0aCgpLHBvc2l0aW9uOm8/ImZpeGVkIjoiYWJzb2x1dGUifSkuYW5pbWF0ZShjLGUuZHVyYXRpb24sZS5lYXNpbmcsZnVuY3Rpb24oKXtkLnJlbW92ZSgpLHQuaXNGdW5jdGlvbihpKSYmaSgpfSl9fSksdC5meC5zdGVwLmNsaXA9ZnVuY3Rpb24oZSl7ZS5jbGlwSW5pdHx8KGUuc3RhcnQ9dChlLmVsZW0pLmNzc0NsaXAoKSwic3RyaW5nIj09dHlwZW9mIGUuZW5kJiYoZS5lbmQ9cyhlLmVuZCxlLmVsZW0pKSxlLmNsaXBJbml0PSEwKSx0KGUuZWxlbSkuY3NzQ2xpcCh7dG9wOmUucG9zKihlLmVuZC50b3AtZS5zdGFydC50b3ApK2Uuc3RhcnQudG9wLHJpZ2h0OmUucG9zKihlLmVuZC5yaWdodC1lLnN0YXJ0LnJpZ2h0KStlLnN0YXJ0LnJpZ2h0LGJvdHRvbTplLnBvcyooZS5lbmQuYm90dG9tLWUuc3RhcnQuYm90dG9tKStlLnN0YXJ0LmJvdHRvbSxsZWZ0OmUucG9zKihlLmVuZC5sZWZ0LWUuc3RhcnQubGVmdCkrZS5zdGFydC5sZWZ0fSl9fSgpLGZ1bmN0aW9uKCl7dmFyIGU9e307dC5lYWNoKFsiUXVhZCIsIkN1YmljIiwiUXVhcnQiLCJRdWludCIsIkV4cG8iXSxmdW5jdGlvbih0LGkpe2VbaV09ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucG93KGUsdCsyKX19KSx0LmV4dGVuZChlLHtTaW5lOmZ1bmN0aW9uKHQpe3JldHVybiAxLU1hdGguY29zKHQqTWF0aC5QSS8yKX0sQ2lyYzpmdW5jdGlvbih0KXtyZXR1cm4gMS1NYXRoLnNxcnQoMS10KnQpfSxFbGFzdGljOmZ1bmN0aW9uKHQpe3JldHVybiAwPT09dHx8MT09PXQ/dDotTWF0aC5wb3coMiw4Kih0LTEpKSpNYXRoLnNpbigoODAqKHQtMSktNy41KSpNYXRoLlBJLzE1KX0sQmFjazpmdW5jdGlvbih0KXtyZXR1cm4gdCp0KigzKnQtMil9LEJvdW5jZTpmdW5jdGlvbih0KXtmb3IodmFyIGUsaT00OygoZT1NYXRoLnBvdygyLC0taSkpLTEpLzExPnQ7KTtyZXR1cm4gMS9NYXRoLnBvdyg0LDMtaSktNy41NjI1Kk1hdGgucG93KCgzKmUtMikvMjItdCwyKX19KSx0LmVhY2goZSxmdW5jdGlvbihlLGkpe3QuZWFzaW5nWyJlYXNlSW4iK2VdPWksdC5lYXNpbmdbImVhc2VPdXQiK2VdPWZ1bmN0aW9uKHQpe3JldHVybiAxLWkoMS10KX0sdC5lYXNpbmdbImVhc2VJbk91dCIrZV09ZnVuY3Rpb24odCl7cmV0dXJuLjU+dD9pKDIqdCkvMjoxLWkoLTIqdCsyKS8yfX0pfSgpO3ZhciBmPXQuZWZmZWN0czt0LmVmZmVjdHMuZGVmaW5lKCJibGluZCIsImhpZGUiLGZ1bmN0aW9uKGUsaSl7dmFyIHM9e3VwOlsiYm90dG9tIiwidG9wIl0sdmVydGljYWw6WyJib3R0b20iLCJ0b3AiXSxkb3duOlsidG9wIiwiYm90dG9tIl0sbGVmdDpbInJpZ2h0IiwibGVmdCJdLGhvcml6b250YWw6WyJyaWdodCIsImxlZnQiXSxyaWdodDpbImxlZnQiLCJyaWdodCJdfSxuPXQodGhpcyksbz1lLmRpcmVjdGlvbnx8InVwIixhPW4uY3NzQ2xpcCgpLHI9e2NsaXA6dC5leHRlbmQoe30sYSl9LGg9dC5lZmZlY3RzLmNyZWF0ZVBsYWNlaG9sZGVyKG4pO3IuY2xpcFtzW29dWzBdXT1yLmNsaXBbc1tvXVsxXV0sInNob3ciPT09ZS5tb2RlJiYobi5jc3NDbGlwKHIuY2xpcCksaCYmaC5jc3ModC5lZmZlY3RzLmNsaXBUb0JveChyKSksci5jbGlwPWEpLGgmJmguYW5pbWF0ZSh0LmVmZmVjdHMuY2xpcFRvQm94KHIpLGUuZHVyYXRpb24sZS5lYXNpbmcpLG4uYW5pbWF0ZShyLHtxdWV1ZTohMSxkdXJhdGlvbjplLmR1cmF0aW9uLGVhc2luZzplLmVhc2luZyxjb21wbGV0ZTppfSl9KSx0LmVmZmVjdHMuZGVmaW5lKCJib3VuY2UiLGZ1bmN0aW9uKGUsaSl7dmFyIHMsbixvLGE9dCh0aGlzKSxyPWUubW9kZSxoPSJoaWRlIj09PXIsbD0ic2hvdyI9PT1yLGM9ZS5kaXJlY3Rpb258fCJ1cCIsdT1lLmRpc3RhbmNlLGQ9ZS50aW1lc3x8NSxwPTIqZCsobHx8aD8xOjApLGY9ZS5kdXJhdGlvbi9wLGc9ZS5lYXNpbmcsbT0idXAiPT09Y3x8ImRvd24iPT09Yz8idG9wIjoibGVmdCIsXz0idXAiPT09Y3x8ImxlZnQiPT09Yyx2PTAsYj1hLnF1ZXVlKCkubGVuZ3RoO2Zvcih0LmVmZmVjdHMuY3JlYXRlUGxhY2Vob2xkZXIoYSksbz1hLmNzcyhtKSx1fHwodT1hWyJ0b3AiPT09bT8ib3V0ZXJIZWlnaHQiOiJvdXRlcldpZHRoIl0oKS8zKSxsJiYobj17b3BhY2l0eToxfSxuW21dPW8sYS5jc3MoIm9wYWNpdHkiLDApLmNzcyhtLF8/MiotdToyKnUpLmFuaW1hdGUobixmLGcpKSxoJiYodS89TWF0aC5wb3coMixkLTEpKSxuPXt9LG5bbV09bztkPnY7disrKXM9e30sc1ttXT0oXz8iLT0iOiIrPSIpK3UsYS5hbmltYXRlKHMsZixnKS5hbmltYXRlKG4sZixnKSx1PWg/Mip1OnUvMjtoJiYocz17b3BhY2l0eTowfSxzW21dPShfPyItPSI6Iis9IikrdSxhLmFuaW1hdGUocyxmLGcpKSxhLnF1ZXVlKGkpLHQuZWZmZWN0cy51bnNoaWZ0KGEsYixwKzEpfSksdC5lZmZlY3RzLmRlZmluZSgiY2xpcCIsImhpZGUiLGZ1bmN0aW9uKGUsaSl7dmFyIHMsbj17fSxvPXQodGhpcyksYT1lLmRpcmVjdGlvbnx8InZlcnRpY2FsIixyPSJib3RoIj09PWEsaD1yfHwiaG9yaXpvbnRhbCI9PT1hLGw9cnx8InZlcnRpY2FsIj09PWE7cz1vLmNzc0NsaXAoKSxuLmNsaXA9e3RvcDpsPyhzLmJvdHRvbS1zLnRvcCkvMjpzLnRvcCxyaWdodDpoPyhzLnJpZ2h0LXMubGVmdCkvMjpzLnJpZ2h0LGJvdHRvbTpsPyhzLmJvdHRvbS1zLnRvcCkvMjpzLmJvdHRvbSxsZWZ0Omg/KHMucmlnaHQtcy5sZWZ0KS8yOnMubGVmdH0sdC5lZmZlY3RzLmNyZWF0ZVBsYWNlaG9sZGVyKG8pLCJzaG93Ij09PWUubW9kZSYmKG8uY3NzQ2xpcChuLmNsaXApLG4uY2xpcD1zKSxvLmFuaW1hdGUobix7cXVldWU6ITEsZHVyYXRpb246ZS5kdXJhdGlvbixlYXNpbmc6ZS5lYXNpbmcsY29tcGxldGU6aX0pfSksdC5lZmZlY3RzLmRlZmluZSgiZHJvcCIsImhpZGUiLGZ1bmN0aW9uKGUsaSl7dmFyIHMsbj10KHRoaXMpLG89ZS5tb2RlLGE9InNob3ciPT09byxyPWUuZGlyZWN0aW9ufHwibGVmdCIsaD0idXAiPT09cnx8ImRvd24iPT09cj8idG9wIjoibGVmdCIsbD0idXAiPT09cnx8ImxlZnQiPT09cj8iLT0iOiIrPSIsYz0iKz0iPT09bD8iLT0iOiIrPSIsdT17b3BhY2l0eTowfTt0LmVmZmVjdHMuY3JlYXRlUGxhY2Vob2xkZXIobikscz1lLmRpc3RhbmNlfHxuWyJ0b3AiPT09aD8ib3V0ZXJIZWlnaHQiOiJvdXRlcldpZHRoIl0oITApLzIsdVtoXT1sK3MsYSYmKG4uY3NzKHUpLHVbaF09YytzLHUub3BhY2l0eT0xKSxuLmFuaW1hdGUodSx7cXVldWU6ITEsZHVyYXRpb246ZS5kdXJhdGlvbixlYXNpbmc6ZS5lYXNpbmcsY29tcGxldGU6aX0pfSksdC5lZmZlY3RzLmRlZmluZSgiZXhwbG9kZSIsImhpZGUiLGZ1bmN0aW9uKGUsaSl7ZnVuY3Rpb24gcygpe2IucHVzaCh0aGlzKSxiLmxlbmd0aD09PXUqZCYmbigpfWZ1bmN0aW9uIG4oKXtwLmNzcyh7dmlzaWJpbGl0eToidmlzaWJsZSJ9KSx0KGIpLnJlbW92ZSgpLGkoKX12YXIgbyxhLHIsaCxsLGMsdT1lLnBpZWNlcz9NYXRoLnJvdW5kKE1hdGguc3FydChlLnBpZWNlcykpOjMsZD11LHA9dCh0aGlzKSxmPWUubW9kZSxnPSJzaG93Ij09PWYsbT1wLnNob3coKS5jc3MoInZpc2liaWxpdHkiLCJoaWRkZW4iKS5vZmZzZXQoKSxfPU1hdGguY2VpbChwLm91dGVyV2lkdGgoKS9kKSx2PU1hdGguY2VpbChwLm91dGVySGVpZ2h0KCkvdSksYj1bXTtmb3Iobz0wO3U+bztvKyspZm9yKGg9bS50b3Arbyp2LGM9by0odS0xKS8yLGE9MDtkPmE7YSsrKXI9bS5sZWZ0K2EqXyxsPWEtKGQtMSkvMixwLmNsb25lKCkuYXBwZW5kVG8oImJvZHkiKS53cmFwKCI8ZGl2PjwvZGl2PiIpLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJ2aXNpYmxlIixsZWZ0Oi1hKl8sdG9wOi1vKnZ9KS5wYXJlbnQoKS5hZGRDbGFzcygidWktZWZmZWN0cy1leHBsb2RlIikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLG92ZXJmbG93OiJoaWRkZW4iLHdpZHRoOl8saGVpZ2h0OnYsbGVmdDpyKyhnP2wqXzowKSx0b3A6aCsoZz9jKnY6MCksb3BhY2l0eTpnPzA6MX0pLmFuaW1hdGUoe2xlZnQ6cisoZz8wOmwqXyksdG9wOmgrKGc/MDpjKnYpLG9wYWNpdHk6Zz8xOjB9LGUuZHVyYXRpb258fDUwMCxlLmVhc2luZyxzKX0pLHQuZWZmZWN0cy5kZWZpbmUoImZhZGUiLCJ0b2dnbGUiLGZ1bmN0aW9uKGUsaSl7dmFyIHM9InNob3ciPT09ZS5tb2RlO3QodGhpcykuY3NzKCJvcGFjaXR5IixzPzA6MSkuYW5pbWF0ZSh7b3BhY2l0eTpzPzE6MH0se3F1ZXVlOiExLGR1cmF0aW9uOmUuZHVyYXRpb24sZWFzaW5nOmUuZWFzaW5nLGNvbXBsZXRlOml9KX0pLHQuZWZmZWN0cy5kZWZpbmUoImZvbGQiLCJoaWRlIixmdW5jdGlvbihlLGkpe3ZhciBzPXQodGhpcyksbj1lLm1vZGUsbz0ic2hvdyI9PT1uLGE9ImhpZGUiPT09bixyPWUuc2l6ZXx8MTUsaD0vKFswLTldKyklLy5leGVjKHIpLGw9ISFlLmhvcml6Rmlyc3QsYz1sP1sicmlnaHQiLCJib3R0b20iXTpbImJvdHRvbSIsInJpZ2h0Il0sdT1lLmR1cmF0aW9uLzIsZD10LmVmZmVjdHMuY3JlYXRlUGxhY2Vob2xkZXIocykscD1zLmNzc0NsaXAoKSxmPXtjbGlwOnQuZXh0ZW5kKHt9LHApfSxnPXtjbGlwOnQuZXh0ZW5kKHt9LHApfSxtPVtwW2NbMF1dLHBbY1sxXV1dLF89cy5xdWV1ZSgpLmxlbmd0aDtoJiYocj1wYXJzZUludChoWzFdLDEwKS8xMDAqbVthPzA6MV0pLGYuY2xpcFtjWzBdXT1yLGcuY2xpcFtjWzBdXT1yLGcuY2xpcFtjWzFdXT0wLG8mJihzLmNzc0NsaXAoZy5jbGlwKSxkJiZkLmNzcyh0LmVmZmVjdHMuY2xpcFRvQm94KGcpKSxnLmNsaXA9cCkscy5xdWV1ZShmdW5jdGlvbihpKXtkJiZkLmFuaW1hdGUodC5lZmZlY3RzLmNsaXBUb0JveChmKSx1LGUuZWFzaW5nKS5hbmltYXRlKHQuZWZmZWN0cy5jbGlwVG9Cb3goZyksdSxlLmVhc2luZyksaSgpfSkuYW5pbWF0ZShmLHUsZS5lYXNpbmcpLmFuaW1hdGUoZyx1LGUuZWFzaW5nKS5xdWV1ZShpKSx0LmVmZmVjdHMudW5zaGlmdChzLF8sNCl9KSx0LmVmZmVjdHMuZGVmaW5lKCJoaWdobGlnaHQiLCJzaG93IixmdW5jdGlvbihlLGkpe3ZhciBzPXQodGhpcyksbj17YmFja2dyb3VuZENvbG9yOnMuY3NzKCJiYWNrZ3JvdW5kQ29sb3IiKX07ImhpZGUiPT09ZS5tb2RlJiYobi5vcGFjaXR5PTApLHQuZWZmZWN0cy5zYXZlU3R5bGUocykscy5jc3Moe2JhY2tncm91bmRJbWFnZToibm9uZSIsYmFja2dyb3VuZENvbG9yOmUuY29sb3J8fCIjZmZmZjk5In0pLmFuaW1hdGUobix7cXVldWU6ITEsZHVyYXRpb246ZS5kdXJhdGlvbixlYXNpbmc6ZS5lYXNpbmcsY29tcGxldGU6aX0pfSksdC5lZmZlY3RzLmRlZmluZSgic2l6ZSIsZnVuY3Rpb24oZSxpKXt2YXIgcyxuLG8sYT10KHRoaXMpLHI9WyJmb250U2l6ZSJdLGg9WyJib3JkZXJUb3BXaWR0aCIsImJvcmRlckJvdHRvbVdpZHRoIiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iXSxsPVsiYm9yZGVyTGVmdFdpZHRoIiwiYm9yZGVyUmlnaHRXaWR0aCIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0Il0sYz1lLm1vZGUsdT0iZWZmZWN0IiE9PWMsZD1lLnNjYWxlfHwiYm90aCIscD1lLm9yaWdpbnx8WyJtaWRkbGUiLCJjZW50ZXIiXSxmPWEuY3NzKCJwb3NpdGlvbiIpLGc9YS5wb3NpdGlvbigpLG09dC5lZmZlY3RzLnNjYWxlZERpbWVuc2lvbnMoYSksXz1lLmZyb218fG0sdj1lLnRvfHx0LmVmZmVjdHMuc2NhbGVkRGltZW5zaW9ucyhhLDApO3QuZWZmZWN0cy5jcmVhdGVQbGFjZWhvbGRlcihhKSwic2hvdyI9PT1jJiYobz1fLF89dix2PW8pLG49e2Zyb206e3k6Xy5oZWlnaHQvbS5oZWlnaHQseDpfLndpZHRoL20ud2lkdGh9LHRvOnt5OnYuaGVpZ2h0L20uaGVpZ2h0LHg6di53aWR0aC9tLndpZHRofX0sKCJib3giPT09ZHx8ImJvdGgiPT09ZCkmJihuLmZyb20ueSE9PW4udG8ueSYmKF89dC5lZmZlY3RzLnNldFRyYW5zaXRpb24oYSxoLG4uZnJvbS55LF8pLHY9dC5lZmZlY3RzLnNldFRyYW5zaXRpb24oYSxoLG4udG8ueSx2KSksbi5mcm9tLnghPT1uLnRvLngmJihfPXQuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGEsbCxuLmZyb20ueCxfKSx2PXQuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGEsbCxuLnRvLngsdikpKSwoImNvbnRlbnQiPT09ZHx8ImJvdGgiPT09ZCkmJm4uZnJvbS55IT09bi50by55JiYoXz10LmVmZmVjdHMuc2V0VHJhbnNpdGlvbihhLHIsbi5mcm9tLnksXyksdj10LmVmZmVjdHMuc2V0VHJhbnNpdGlvbihhLHIsbi50by55LHYpKSxwJiYocz10LmVmZmVjdHMuZ2V0QmFzZWxpbmUocCxtKSxfLnRvcD0obS5vdXRlckhlaWdodC1fLm91dGVySGVpZ2h0KSpzLnkrZy50b3AsXy5sZWZ0PShtLm91dGVyV2lkdGgtXy5vdXRlcldpZHRoKSpzLngrZy5sZWZ0LHYudG9wPShtLm91dGVySGVpZ2h0LXYub3V0ZXJIZWlnaHQpKnMueStnLnRvcCx2LmxlZnQ9KG0ub3V0ZXJXaWR0aC12Lm91dGVyV2lkdGgpKnMueCtnLmxlZnQpLGEuY3NzKF8pLCgiY29udGVudCI9PT1kfHwiYm90aCI9PT1kKSYmKGg9aC5jb25jYXQoWyJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iXSkuY29uY2F0KHIpLGw9bC5jb25jYXQoWyJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiXSksYS5maW5kKCIqW3dpZHRoXSIpLmVhY2goZnVuY3Rpb24oKXt2YXIgaT10KHRoaXMpLHM9dC5lZmZlY3RzLnNjYWxlZERpbWVuc2lvbnMoaSksbz17aGVpZ2h0OnMuaGVpZ2h0Km4uZnJvbS55LHdpZHRoOnMud2lkdGgqbi5mcm9tLngsb3V0ZXJIZWlnaHQ6cy5vdXRlckhlaWdodCpuLmZyb20ueSxvdXRlcldpZHRoOnMub3V0ZXJXaWR0aCpuLmZyb20ueH0sYT17aGVpZ2h0OnMuaGVpZ2h0Km4udG8ueSx3aWR0aDpzLndpZHRoKm4udG8ueCxvdXRlckhlaWdodDpzLmhlaWdodCpuLnRvLnksb3V0ZXJXaWR0aDpzLndpZHRoKm4udG8ueH07bi5mcm9tLnkhPT1uLnRvLnkmJihvPXQuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGksaCxuLmZyb20ueSxvKSxhPXQuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGksaCxuLnRvLnksYSkpLG4uZnJvbS54IT09bi50by54JiYobz10LmVmZmVjdHMuc2V0VHJhbnNpdGlvbihpLGwsbi5mcm9tLngsbyksYT10LmVmZmVjdHMuc2V0VHJhbnNpdGlvbihpLGwsbi50by54LGEpKSx1JiZ0LmVmZmVjdHMuc2F2ZVN0eWxlKGkpLGkuY3NzKG8pLGkuYW5pbWF0ZShhLGUuZHVyYXRpb24sZS5lYXNpbmcsZnVuY3Rpb24oKXt1JiZ0LmVmZmVjdHMucmVzdG9yZVN0eWxlKGkpfSl9KSksYS5hbmltYXRlKHYse3F1ZXVlOiExLGR1cmF0aW9uOmUuZHVyYXRpb24sZWFzaW5nOmUuZWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7dmFyIGU9YS5vZmZzZXQoKTswPT09di5vcGFjaXR5JiZhLmNzcygib3BhY2l0eSIsXy5vcGFjaXR5KSx1fHwoYS5jc3MoInBvc2l0aW9uIiwic3RhdGljIj09PWY/InJlbGF0aXZlIjpmKS5vZmZzZXQoZSksdC5lZmZlY3RzLnNhdmVTdHlsZShhKSksaSgpfX0pfSksdC5lZmZlY3RzLmRlZmluZSgic2NhbGUiLGZ1bmN0aW9uKGUsaSl7dmFyIHM9dCh0aGlzKSxuPWUubW9kZSxvPXBhcnNlSW50KGUucGVyY2VudCwxMCl8fCgwPT09cGFyc2VJbnQoZS5wZXJjZW50LDEwKT8wOiJlZmZlY3QiIT09bj8wOjEwMCksYT10LmV4dGVuZCghMCx7ZnJvbTp0LmVmZmVjdHMuc2NhbGVkRGltZW5zaW9ucyhzKSx0bzp0LmVmZmVjdHMuc2NhbGVkRGltZW5zaW9ucyhzLG8sZS5kaXJlY3Rpb258fCJib3RoIiksb3JpZ2luOmUub3JpZ2lufHxbIm1pZGRsZSIsImNlbnRlciJdfSxlKTtlLmZhZGUmJihhLmZyb20ub3BhY2l0eT0xLGEudG8ub3BhY2l0eT0wKSx0LmVmZmVjdHMuZWZmZWN0LnNpemUuY2FsbCh0aGlzLGEsaSl9KSx0LmVmZmVjdHMuZGVmaW5lKCJwdWZmIiwiaGlkZSIsZnVuY3Rpb24oZSxpKXt2YXIgcz10LmV4dGVuZCghMCx7fSxlLHtmYWRlOiEwLHBlcmNlbnQ6cGFyc2VJbnQoZS5wZXJjZW50LDEwKXx8MTUwfSk7dC5lZmZlY3RzLmVmZmVjdC5zY2FsZS5jYWxsKHRoaXMscyxpKX0pLHQuZWZmZWN0cy5kZWZpbmUoInB1bHNhdGUiLCJzaG93IixmdW5jdGlvbihlLGkpe3ZhciBzPXQodGhpcyksbj1lLm1vZGUsbz0ic2hvdyI9PT1uLGE9ImhpZGUiPT09bixyPW98fGEsaD0yKihlLnRpbWVzfHw1KSsocj8xOjApLGw9ZS5kdXJhdGlvbi9oLGM9MCx1PTEsZD1zLnF1ZXVlKCkubGVuZ3RoO2Zvcigob3x8IXMuaXMoIjp2aXNpYmxlIikpJiYocy5jc3MoIm9wYWNpdHkiLDApLnNob3coKSxjPTEpO2g+dTt1Kyspcy5hbmltYXRlKHtvcGFjaXR5OmN9LGwsZS5lYXNpbmcpLGM9MS1jO3MuYW5pbWF0ZSh7b3BhY2l0eTpjfSxsLGUuZWFzaW5nKSxzLnF1ZXVlKGkpLHQuZWZmZWN0cy51bnNoaWZ0KHMsZCxoKzEpfSksdC5lZmZlY3RzLmRlZmluZSgic2hha2UiLGZ1bmN0aW9uKGUsaSl7dmFyIHM9MSxuPXQodGhpcyksbz1lLmRpcmVjdGlvbnx8ImxlZnQiLGE9ZS5kaXN0YW5jZXx8MjAscj1lLnRpbWVzfHwzLGg9MipyKzEsbD1NYXRoLnJvdW5kKGUuZHVyYXRpb24vaCksYz0idXAiPT09b3x8ImRvd24iPT09bz8idG9wIjoibGVmdCIsdT0idXAiPT09b3x8ImxlZnQiPT09byxkPXt9LHA9e30sZj17fSxnPW4ucXVldWUoKS5sZW5ndGg7Zm9yKHQuZWZmZWN0cy5jcmVhdGVQbGFjZWhvbGRlcihuKSxkW2NdPSh1PyItPSI6Iis9IikrYSxwW2NdPSh1PyIrPSI6Ii09IikrMiphLGZbY109KHU/Ii09IjoiKz0iKSsyKmEsbi5hbmltYXRlKGQsbCxlLmVhc2luZyk7cj5zO3MrKyluLmFuaW1hdGUocCxsLGUuZWFzaW5nKS5hbmltYXRlKGYsbCxlLmVhc2luZyk7bi5hbmltYXRlKHAsbCxlLmVhc2luZykuYW5pbWF0ZShkLGwvMixlLmVhc2luZykucXVldWUoaSksdC5lZmZlY3RzLnVuc2hpZnQobixnLGgrMSl9KSx0LmVmZmVjdHMuZGVmaW5lKCJzbGlkZSIsInNob3ciLGZ1bmN0aW9uKGUsaSl7dmFyIHMsbixvPXQodGhpcyksYT17dXA6WyJib3R0b20iLCJ0b3AiXSxkb3duOlsidG9wIiwiYm90dG9tIl0sbGVmdDpbInJpZ2h0IiwibGVmdCJdLHJpZ2h0OlsibGVmdCIsInJpZ2h0Il19LHI9ZS5tb2RlLGg9ZS5kaXJlY3Rpb258fCJsZWZ0IixsPSJ1cCI9PT1ofHwiZG93biI9PT1oPyJ0b3AiOiJsZWZ0IixjPSJ1cCI9PT1ofHwibGVmdCI9PT1oLHU9ZS5kaXN0YW5jZXx8b1sidG9wIj09PWw/Im91dGVySGVpZ2h0Ijoib3V0ZXJXaWR0aCJdKCEwKSxkPXt9O3QuZWZmZWN0cy5jcmVhdGVQbGFjZWhvbGRlcihvKSxzPW8uY3NzQ2xpcCgpLG49by5wb3NpdGlvbigpW2xdLGRbbF09KGM/LTE6MSkqdStuLGQuY2xpcD1vLmNzc0NsaXAoKSxkLmNsaXBbYVtoXVsxXV09ZC5jbGlwW2FbaF1bMF1dLCJzaG93Ij09PXImJihvLmNzc0NsaXAoZC5jbGlwKSxvLmNzcyhsLGRbbF0pLGQuY2xpcD1zLGRbbF09biksby5hbmltYXRlKGQse3F1ZXVlOiExLGR1cmF0aW9uOmUuZHVyYXRpb24sZWFzaW5nOmUuZWFzaW5nLGNvbXBsZXRlOml9KX0pO3ZhciBmO3QudWlCYWNrQ29tcGF0IT09ITEmJihmPXQuZWZmZWN0cy5kZWZpbmUoInRyYW5zZmVyIixmdW5jdGlvbihlLGkpe3QodGhpcykudHJhbnNmZXIoZSxpKX0pKSx0LnVpLmZvY3VzYWJsZT1mdW5jdGlvbihpLHMpe3ZhciBuLG8sYSxyPWkubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iYXJlYSI9PT1yPyhuPWkucGFyZW50Tm9kZSxvPW4ubmFtZSxpLmhyZWYmJm8mJiJtYXAiPT09bi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPyhhPXQoImltZ1t1c2VtYXA9JyMiK28rIiddIiksYS5sZW5ndGg+MCYmYS5pcygiOnZpc2libGUiKSk6ITEpOigvXihpbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9ufG9iamVjdCkkLy50ZXN0KHIpPyFpLmRpc2FibGVkOiJhIj09PXI/aS5ocmVmfHxzOnMpJiZ0KGkpLmlzKCI6dmlzaWJsZSIpJiZlKHQoaSkpfSx0LmV4dGVuZCh0LmV4cHJbIjoiXSx7Zm9jdXNhYmxlOmZ1bmN0aW9uKGUpe3JldHVybiB0LnVpLmZvY3VzYWJsZShlLG51bGwhPXQuYXR0cihlLCJ0YWJpbmRleCIpKX19KSx0LnVpLmZvY3VzYWJsZSx0LmZuLmZvcm09ZnVuY3Rpb24oKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHRoaXNbMF0uZm9ybT90aGlzLmNsb3Nlc3QoImZvcm0iKTp0KHRoaXNbMF0uZm9ybSl9LHQudWkuZm9ybVJlc2V0TWl4aW49e19mb3JtUmVzZXRIYW5kbGVyOmZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGk9ZS5kYXRhKCJ1aS1mb3JtLXJlc2V0LWluc3RhbmNlcyIpO3QuZWFjaChpLGZ1bmN0aW9uKCl7dGhpcy5yZWZyZXNoKCl9KX0pfSxfYmluZEZvcm1SZXNldEhhbmRsZXI6ZnVuY3Rpb24oKXtpZih0aGlzLmZvcm09dGhpcy5lbGVtZW50LmZvcm0oKSx0aGlzLmZvcm0ubGVuZ3RoKXt2YXIgdD10aGlzLmZvcm0uZGF0YSgidWktZm9ybS1yZXNldC1pbnN0YW5jZXMiKXx8W107dC5sZW5ndGh8fHRoaXMuZm9ybS5vbigicmVzZXQudWktZm9ybS1yZXNldCIsdGhpcy5fZm9ybVJlc2V0SGFuZGxlciksdC5wdXNoKHRoaXMpLHRoaXMuZm9ybS5kYXRhKCJ1aS1mb3JtLXJlc2V0LWluc3RhbmNlcyIsdCl9fSxfdW5iaW5kRm9ybVJlc2V0SGFuZGxlcjpmdW5jdGlvbigpe2lmKHRoaXMuZm9ybS5sZW5ndGgpe3ZhciBlPXRoaXMuZm9ybS5kYXRhKCJ1aS1mb3JtLXJlc2V0LWluc3RhbmNlcyIpO2Uuc3BsaWNlKHQuaW5BcnJheSh0aGlzLGUpLDEpLGUubGVuZ3RoP3RoaXMuZm9ybS5kYXRhKCJ1aS1mb3JtLXJlc2V0LWluc3RhbmNlcyIsZSk6dGhpcy5mb3JtLnJlbW92ZURhdGEoInVpLWZvcm0tcmVzZXQtaW5zdGFuY2VzIikub2ZmKCJyZXNldC51aS1mb3JtLXJlc2V0Iil9fX0sIjEuNyI9PT10LmZuLmpxdWVyeS5zdWJzdHJpbmcoMCwzKSYmKHQuZWFjaChbIldpZHRoIiwiSGVpZ2h0Il0sZnVuY3Rpb24oZSxpKXtmdW5jdGlvbiBzKGUsaSxzLG8pe3JldHVybiB0LmVhY2gobixmdW5jdGlvbigpe2ktPXBhcnNlRmxvYXQodC5jc3MoZSwicGFkZGluZyIrdGhpcykpfHwwLHMmJihpLT1wYXJzZUZsb2F0KHQuY3NzKGUsImJvcmRlciIrdGhpcysiV2lkdGgiKSl8fDApLG8mJihpLT1wYXJzZUZsb2F0KHQuY3NzKGUsIm1hcmdpbiIrdGhpcykpfHwwKX0pLGl9dmFyIG49IldpZHRoIj09PWk/WyJMZWZ0IiwiUmlnaHQiXTpbIlRvcCIsIkJvdHRvbSJdLG89aS50b0xvd2VyQ2FzZSgpLGE9e2lubmVyV2lkdGg6dC5mbi5pbm5lcldpZHRoLGlubmVySGVpZ2h0OnQuZm4uaW5uZXJIZWlnaHQsb3V0ZXJXaWR0aDp0LmZuLm91dGVyV2lkdGgsb3V0ZXJIZWlnaHQ6dC5mbi5vdXRlckhlaWdodH07dC5mblsiaW5uZXIiK2ldPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lP2FbImlubmVyIitpXS5jYWxsKHRoaXMpOnRoaXMuZWFjaChmdW5jdGlvbigpe3QodGhpcykuY3NzKG8scyh0aGlzLGUpKyJweCIpfSl9LHQuZm5bIm91dGVyIitpXT1mdW5jdGlvbihlLG4pe3JldHVybiJudW1iZXIiIT10eXBlb2YgZT9hWyJvdXRlciIraV0uY2FsbCh0aGlzLGUpOnRoaXMuZWFjaChmdW5jdGlvbigpe3QodGhpcykuY3NzKG8scyh0aGlzLGUsITAsbikrInB4Iil9KX19KSx0LmZuLmFkZEJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PXQ/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIodCkpfSksdC51aS5rZXlDb2RlPXtCQUNLU1BBQ0U6OCxDT01NQToxODgsREVMRVRFOjQ2LERPV046NDAsRU5EOjM1LEVOVEVSOjEzLEVTQ0FQRToyNyxIT01FOjM2LExFRlQ6MzcsUEFHRV9ET1dOOjM0LFBBR0VfVVA6MzMsUEVSSU9EOjE5MCxSSUdIVDozOSxTUEFDRTozMixUQUI6OSxVUDozOH0sdC51aS5lc2NhcGVTZWxlY3Rvcj1mdW5jdGlvbigpe3ZhciB0PS8oWyEiIyQlJicoKSorLC4vOjs8PT4/QFtcXV5ge3x9fl0pL2c7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UodCwiXFwkMSIpfX0oKSx0LmZuLmxhYmVscz1mdW5jdGlvbigpe3ZhciBlLGkscyxuLG87cmV0dXJuIHRoaXNbMF0ubGFiZWxzJiZ0aGlzWzBdLmxhYmVscy5sZW5ndGg/dGhpcy5wdXNoU3RhY2sodGhpc1swXS5sYWJlbHMpOihuPXRoaXMuZXEoMCkucGFyZW50cygibGFiZWwiKSxzPXRoaXMuYXR0cigiaWQiKSxzJiYoZT10aGlzLmVxKDApLnBhcmVudHMoKS5sYXN0KCksbz1lLmFkZChlLmxlbmd0aD9lLnNpYmxpbmdzKCk6dGhpcy5zaWJsaW5ncygpKSxpPSJsYWJlbFtmb3I9JyIrdC51aS5lc2NhcGVTZWxlY3RvcihzKSsiJ10iLG49bi5hZGQoby5maW5kKGkpLmFkZEJhY2soaSkpKSx0aGlzLnB1c2hTdGFjayhuKSl9LHQuZm4uc2Nyb2xsUGFyZW50PWZ1bmN0aW9uKGUpe3ZhciBpPXRoaXMuY3NzKCJwb3NpdGlvbiIpLHM9ImFic29sdXRlIj09PWksbj1lPy8oYXV0b3xzY3JvbGx8aGlkZGVuKS86LyhhdXRvfHNjcm9sbCkvLG89dGhpcy5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTtyZXR1cm4gcyYmInN0YXRpYyI9PT1lLmNzcygicG9zaXRpb24iKT8hMTpuLnRlc3QoZS5jc3MoIm92ZXJmbG93IikrZS5jc3MoIm92ZXJmbG93LXkiKStlLmNzcygib3ZlcmZsb3cteCIpKX0pLmVxKDApO3JldHVybiJmaXhlZCIhPT1pJiZvLmxlbmd0aD9vOnQodGhpc1swXS5vd25lckRvY3VtZW50fHxkb2N1bWVudCl9LHQuZXh0ZW5kKHQuZXhwclsiOiJdLHt0YWJiYWJsZTpmdW5jdGlvbihlKXt2YXIgaT10LmF0dHIoZSwidGFiaW5kZXgiKSxzPW51bGwhPWk7cmV0dXJuKCFzfHxpPj0wKSYmdC51aS5mb2N1c2FibGUoZSxzKX19KSx0LmZuLmV4dGVuZCh7dW5pcXVlSWQ6ZnVuY3Rpb24oKXt2YXIgdD0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0aGlzLmlkfHwodGhpcy5pZD0idWktaWQtIisgKyt0KX0pfX0oKSxyZW1vdmVVbmlxdWVJZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXsvXnVpLWlkLVxkKyQvLnRlc3QodGhpcy5pZCkmJnQodGhpcykucmVtb3ZlQXR0cigiaWQiKX0pfX0pLHQud2lkZ2V0KCJ1aS5hY2NvcmRpb24iLHt2ZXJzaW9uOiIxLjEyLjAtcmMuMiIsb3B0aW9uczp7YWN0aXZlOjAsYW5pbWF0ZTp7fSxjbGFzc2VzOnsidWktYWNjb3JkaW9uLWhlYWRlciI6InVpLWNvcm5lci10b3AiLCJ1aS1hY2NvcmRpb24taGVhZGVyLWNvbGxhcHNlZCI6InVpLWNvcm5lci1hbGwiLCJ1aS1hY2NvcmRpb24tY29udGVudCI6InVpLWNvcm5lci1ib3R0b20ifSxjb2xsYXBzaWJsZTohMSxldmVudDoiY2xpY2siLGhlYWRlcjoiPiBsaSA+IDpmaXJzdC1jaGlsZCwgPiA6bm90KGxpKTpldmVuIixoZWlnaHRTdHlsZToiYXV0byIsaWNvbnM6e2FjdGl2ZUhlYWRlcjoidWktaWNvbi10cmlhbmdsZS0xLXMiLGhlYWRlcjoidWktaWNvbi10cmlhbmdsZS0xLWUifSxhY3RpdmF0ZTpudWxsLGJlZm9yZUFjdGl2YXRlOm51bGx9LGhpZGVQcm9wczp7Ym9yZGVyVG9wV2lkdGg6ImhpZGUiLGJvcmRlckJvdHRvbVdpZHRoOiJoaWRlIixwYWRkaW5nVG9wOiJoaWRlIixwYWRkaW5nQm90dG9tOiJoaWRlIixoZWlnaHQ6ImhpZGUifSxzaG93UHJvcHM6e2JvcmRlclRvcFdpZHRoOiJzaG93Iixib3JkZXJCb3R0b21XaWR0aDoic2hvdyIscGFkZGluZ1RvcDoic2hvdyIscGFkZGluZ0JvdHRvbToic2hvdyIsaGVpZ2h0OiJzaG93In0sX2NyZWF0ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9uczt0aGlzLnByZXZTaG93PXRoaXMucHJldkhpZGU9dCgpLHRoaXMuX2FkZENsYXNzKCJ1aS1hY2NvcmRpb24iLCJ1aS13aWRnZXQgdWktaGVscGVyLXJlc2V0IiksdGhpcy5lbGVtZW50LmF0dHIoInJvbGUiLCJ0YWJsaXN0IiksZS5jb2xsYXBzaWJsZXx8ZS5hY3RpdmUhPT0hMSYmbnVsbCE9ZS5hY3RpdmV8fChlLmFjdGl2ZT0wKSx0aGlzLl9wcm9jZXNzUGFuZWxzKCksMD5lLmFjdGl2ZSYmKGUuYWN0aXZlKz10aGlzLmhlYWRlcnMubGVuZ3RoKSx0aGlzLl9yZWZyZXNoKCl9LF9nZXRDcmVhdGVFdmVudERhdGE6ZnVuY3Rpb24oKXtyZXR1cm57aGVhZGVyOnRoaXMuYWN0aXZlLHBhbmVsOnRoaXMuYWN0aXZlLmxlbmd0aD90aGlzLmFjdGl2ZS5uZXh0KCk6dCgpfX0sX2NyZWF0ZUljb25zOmZ1bmN0aW9uKCl7dmFyIGUsaSxzPXRoaXMub3B0aW9ucy5pY29ucztzJiYoZT10KCI8c3Bhbj4iKSx0aGlzLl9hZGRDbGFzcyhlLCJ1aS1hY2NvcmRpb24taGVhZGVyLWljb24iLCJ1aS1pY29uICIrcy5oZWFkZXIpLGUucHJlcGVuZFRvKHRoaXMuaGVhZGVycyksaT10aGlzLmFjdGl2ZS5jaGlsZHJlbigiLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiIpLHRoaXMuX3JlbW92ZUNsYXNzKGkscy5oZWFkZXIpLl9hZGRDbGFzcyhpLG51bGwscy5hY3RpdmVIZWFkZXIpLl9hZGRDbGFzcyh0aGlzLmhlYWRlcnMsInVpLWFjY29yZGlvbi1pY29ucyIpKX0sX2Rlc3Ryb3lJY29uczpmdW5jdGlvbigpe3RoaXMuX3JlbW92ZUNsYXNzKHRoaXMuaGVhZGVycywidWktYWNjb3JkaW9uLWljb25zIiksdGhpcy5oZWFkZXJzLmNoaWxkcmVuKCIudWktYWNjb3JkaW9uLWhlYWRlci1pY29uIikucmVtb3ZlKCl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dmFyIHQ7dGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoInJvbGUiKSx0aGlzLmhlYWRlcnMucmVtb3ZlQXR0cigicm9sZSBhcmlhLWV4cGFuZGVkIGFyaWEtc2VsZWN0ZWQgYXJpYS1jb250cm9scyB0YWJJbmRleCIpLnJlbW92ZVVuaXF1ZUlkKCksdGhpcy5fZGVzdHJveUljb25zKCksdD10aGlzLmhlYWRlcnMubmV4dCgpLmNzcygiZGlzcGxheSIsIiIpLnJlbW92ZUF0dHIoInJvbGUgYXJpYS1oaWRkZW4gYXJpYS1sYWJlbGxlZGJ5IikucmVtb3ZlVW5pcXVlSWQoKSwiY29udGVudCIhPT10aGlzLm9wdGlvbnMuaGVpZ2h0U3R5bGUmJnQuY3NzKCJoZWlnaHQiLCIiKX0sX3NldE9wdGlvbjpmdW5jdGlvbih0LGUpe3JldHVybiJhY3RpdmUiPT09dD8odGhpcy5fYWN0aXZhdGUoZSksdm9pZCAwKTooImV2ZW50Ij09PXQmJih0aGlzLm9wdGlvbnMuZXZlbnQmJnRoaXMuX29mZih0aGlzLmhlYWRlcnMsdGhpcy5vcHRpb25zLmV2ZW50KSx0aGlzLl9zZXR1cEV2ZW50cyhlKSksdGhpcy5fc3VwZXIodCxlKSwiY29sbGFwc2libGUiIT09dHx8ZXx8dGhpcy5vcHRpb25zLmFjdGl2ZSE9PSExfHx0aGlzLl9hY3RpdmF0ZSgwKSwiaWNvbnMiPT09dCYmKHRoaXMuX2Rlc3Ryb3lJY29ucygpLGUmJnRoaXMuX2NyZWF0ZUljb25zKCkpLHZvaWQgMCl9LF9zZXRPcHRpb25EaXNhYmxlZDpmdW5jdGlvbih0KXt0aGlzLl9zdXBlcih0KSx0aGlzLmVsZW1lbnQuYXR0cigiYXJpYS1kaXNhYmxlZCIsdCksdGhpcy5fdG9nZ2xlQ2xhc3MobnVsbCwidWktc3RhdGUtZGlzYWJsZWQiLCEhdCksdGhpcy5fdG9nZ2xlQ2xhc3ModGhpcy5oZWFkZXJzLmFkZCh0aGlzLmhlYWRlcnMubmV4dCgpKSxudWxsLCJ1aS1zdGF0ZS1kaXNhYmxlZCIsISF0KX0sX2tleWRvd246ZnVuY3Rpb24oZSl7aWYoIWUuYWx0S2V5JiYhZS5jdHJsS2V5KXt2YXIgaT10LnVpLmtleUNvZGUscz10aGlzLmhlYWRlcnMubGVuZ3RoLG49dGhpcy5oZWFkZXJzLmluZGV4KGUudGFyZ2V0KSxvPSExO3N3aXRjaChlLmtleUNvZGUpe2Nhc2UgaS5SSUdIVDpjYXNlIGkuRE9XTjpvPXRoaXMuaGVhZGVyc1sobisxKSVzXTticmVhaztjYXNlIGkuTEVGVDpjYXNlIGkuVVA6bz10aGlzLmhlYWRlcnNbKG4tMStzKSVzXTticmVhaztjYXNlIGkuU1BBQ0U6Y2FzZSBpLkVOVEVSOnRoaXMuX2V2ZW50SGFuZGxlcihlKTticmVhaztjYXNlIGkuSE9NRTpvPXRoaXMuaGVhZGVyc1swXTticmVhaztjYXNlIGkuRU5EOm89dGhpcy5oZWFkZXJzW3MtMV19byYmKHQoZS50YXJnZXQpLmF0dHIoInRhYkluZGV4IiwtMSksdChvKS5hdHRyKCJ0YWJJbmRleCIsMCksdChvKS50cmlnZ2VyKCJmb2N1cyIpLGUucHJldmVudERlZmF1bHQoKSl9fSxfcGFuZWxLZXlEb3duOmZ1bmN0aW9uKGUpe2Uua2V5Q29kZT09PXQudWkua2V5Q29kZS5VUCYmZS5jdHJsS2V5JiZ0KGUuY3VycmVudFRhcmdldCkucHJldigpLnRyaWdnZXIoImZvY3VzIil9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnM7dGhpcy5fcHJvY2Vzc1BhbmVscygpLGUuYWN0aXZlPT09ITEmJmUuY29sbGFwc2libGU9PT0hMHx8IXRoaXMuaGVhZGVycy5sZW5ndGg/KGUuYWN0aXZlPSExLHRoaXMuYWN0aXZlPXQoKSk6ZS5hY3RpdmU9PT0hMT90aGlzLl9hY3RpdmF0ZSgwKTp0aGlzLmFjdGl2ZS5sZW5ndGgmJiF0LmNvbnRhaW5zKHRoaXMuZWxlbWVudFswXSx0aGlzLmFjdGl2ZVswXSk/dGhpcy5oZWFkZXJzLmxlbmd0aD09PXRoaXMuaGVhZGVycy5maW5kKCIudWktc3RhdGUtZGlzYWJsZWQiKS5sZW5ndGg/KGUuYWN0aXZlPSExLHRoaXMuYWN0aXZlPXQoKSk6dGhpcy5fYWN0aXZhdGUoTWF0aC5tYXgoMCxlLmFjdGl2ZS0xKSk6ZS5hY3RpdmU9dGhpcy5oZWFkZXJzLmluZGV4KHRoaXMuYWN0aXZlKSx0aGlzLl9kZXN0cm95SWNvbnMoKSx0aGlzLl9yZWZyZXNoKCl9LF9wcm9jZXNzUGFuZWxzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5oZWFkZXJzLGU9dGhpcy5wYW5lbHM7dGhpcy5oZWFkZXJzPXRoaXMuZWxlbWVudC5maW5kKHRoaXMub3B0aW9ucy5oZWFkZXIpLHRoaXMuX2FkZENsYXNzKHRoaXMuaGVhZGVycywidWktYWNjb3JkaW9uLWhlYWRlciB1aS1hY2NvcmRpb24taGVhZGVyLWNvbGxhcHNlZCIsInVpLXN0YXRlLWRlZmF1bHQiKSx0aGlzLnBhbmVscz10aGlzLmhlYWRlcnMubmV4dCgpLmZpbHRlcigiOm5vdCgudWktYWNjb3JkaW9uLWNvbnRlbnQtYWN0aXZlKSIpLmhpZGUoKSx0aGlzLl9hZGRDbGFzcyh0aGlzLnBhbmVscywidWktYWNjb3JkaW9uLWNvbnRlbnQiLCJ1aS1oZWxwZXItcmVzZXQgdWktd2lkZ2V0LWNvbnRlbnQiKSxlJiYodGhpcy5fb2ZmKHQubm90KHRoaXMuaGVhZGVycykpLHRoaXMuX29mZihlLm5vdCh0aGlzLnBhbmVscykpKX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgZSxpPXRoaXMub3B0aW9ucyxzPWkuaGVpZ2h0U3R5bGUsbj10aGlzLmVsZW1lbnQucGFyZW50KCk7dGhpcy5hY3RpdmU9dGhpcy5fZmluZEFjdGl2ZShpLmFjdGl2ZSksdGhpcy5fYWRkQ2xhc3ModGhpcy5hY3RpdmUsInVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlIiwidWktc3RhdGUtYWN0aXZlIikuX3JlbW92ZUNsYXNzKHRoaXMuYWN0aXZlLCJ1aS1hY2NvcmRpb24taGVhZGVyLWNvbGxhcHNlZCIpLHRoaXMuX2FkZENsYXNzKHRoaXMuYWN0aXZlLm5leHQoKSwidWktYWNjb3JkaW9uLWNvbnRlbnQtYWN0aXZlIiksdGhpcy5hY3RpdmUubmV4dCgpLnNob3coKSx0aGlzLmhlYWRlcnMuYXR0cigicm9sZSIsInRhYiIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpLGk9ZS51bmlxdWVJZCgpLmF0dHIoImlkIikscz1lLm5leHQoKSxuPXMudW5pcXVlSWQoKS5hdHRyKCJpZCIpO2UuYXR0cigiYXJpYS1jb250cm9scyIsbikscy5hdHRyKCJhcmlhLWxhYmVsbGVkYnkiLGkpfSkubmV4dCgpLmF0dHIoInJvbGUiLCJ0YWJwYW5lbCIpLHRoaXMuaGVhZGVycy5ub3QodGhpcy5hY3RpdmUpLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoiZmFsc2UiLCJhcmlhLWV4cGFuZGVkIjoiZmFsc2UiLHRhYkluZGV4Oi0xfSkubmV4dCgpLmF0dHIoeyJhcmlhLWhpZGRlbiI6InRydWUifSkuaGlkZSgpLHRoaXMuYWN0aXZlLmxlbmd0aD90aGlzLmFjdGl2ZS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLCJhcmlhLWV4cGFuZGVkIjoidHJ1ZSIsdGFiSW5kZXg6MH0pLm5leHQoKS5hdHRyKHsiYXJpYS1oaWRkZW4iOiJmYWxzZSJ9KTp0aGlzLmhlYWRlcnMuZXEoMCkuYXR0cigidGFiSW5kZXgiLDApLHRoaXMuX2NyZWF0ZUljb25zKCksdGhpcy5fc2V0dXBFdmVudHMoaS5ldmVudCksImZpbGwiPT09cz8oZT1uLmhlaWdodCgpLHRoaXMuZWxlbWVudC5zaWJsaW5ncygiOnZpc2libGUiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9dCh0aGlzKSxzPWkuY3NzKCJwb3NpdGlvbiIpOyJhYnNvbHV0ZSIhPT1zJiYiZml4ZWQiIT09cyYmKGUtPWkub3V0ZXJIZWlnaHQoITApKX0pLHRoaXMuaGVhZGVycy5lYWNoKGZ1bmN0aW9uKCl7ZS09dCh0aGlzKS5vdXRlckhlaWdodCghMCl9KSx0aGlzLmhlYWRlcnMubmV4dCgpLmVhY2goZnVuY3Rpb24oKXt0KHRoaXMpLmhlaWdodChNYXRoLm1heCgwLGUtdCh0aGlzKS5pbm5lckhlaWdodCgpK3QodGhpcykuaGVpZ2h0KCkpKX0pLmNzcygib3ZlcmZsb3ciLCJhdXRvIikpOiJhdXRvIj09PXMmJihlPTAsdGhpcy5oZWFkZXJzLm5leHQoKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9dCh0aGlzKS5pcygiOnZpc2libGUiKTtpfHx0KHRoaXMpLnNob3coKSxlPU1hdGgubWF4KGUsdCh0aGlzKS5jc3MoImhlaWdodCIsIiIpLmhlaWdodCgpKSxpfHx0KHRoaXMpLmhpZGUoKX0pLmhlaWdodChlKSl9LF9hY3RpdmF0ZTpmdW5jdGlvbihlKXt2YXIgaT10aGlzLl9maW5kQWN0aXZlKGUpWzBdO2khPT10aGlzLmFjdGl2ZVswXSYmKGk9aXx8dGhpcy5hY3RpdmVbMF0sdGhpcy5fZXZlbnRIYW5kbGVyKHt0YXJnZXQ6aSxjdXJyZW50VGFyZ2V0OmkscHJldmVudERlZmF1bHQ6dC5ub29wfSkpfSxfZmluZEFjdGl2ZTpmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/dGhpcy5oZWFkZXJzLmVxKGUpOnQoKX0sX3NldHVwRXZlbnRzOmZ1bmN0aW9uKGUpe3ZhciBpPXtrZXlkb3duOiJfa2V5ZG93biJ9O2UmJnQuZWFjaChlLnNwbGl0KCIgIiksZnVuY3Rpb24odCxlKXtpW2VdPSJfZXZlbnRIYW5kbGVyIn0pLHRoaXMuX29mZih0aGlzLmhlYWRlcnMuYWRkKHRoaXMuaGVhZGVycy5uZXh0KCkpKSx0aGlzLl9vbih0aGlzLmhlYWRlcnMsaSksdGhpcy5fb24odGhpcy5oZWFkZXJzLm5leHQoKSx7a2V5ZG93bjoiX3BhbmVsS2V5RG93biJ9KSx0aGlzLl9ob3ZlcmFibGUodGhpcy5oZWFkZXJzKSx0aGlzLl9mb2N1c2FibGUodGhpcy5oZWFkZXJzKX0sX2V2ZW50SGFuZGxlcjpmdW5jdGlvbihlKXt2YXIgaSxzLG49dGhpcy5vcHRpb25zLG89dGhpcy5hY3RpdmUsYT10KGUuY3VycmVudFRhcmdldCkscj1hWzBdPT09b1swXSxoPXImJm4uY29sbGFwc2libGUsbD1oP3QoKTphLm5leHQoKSxjPW8ubmV4dCgpLHU9e29sZEhlYWRlcjpvLG9sZFBhbmVsOmMsbmV3SGVhZGVyOmg/dCgpOmEsbmV3UGFuZWw6bH07ZS5wcmV2ZW50RGVmYXVsdCgpLHImJiFuLmNvbGxhcHNpYmxlfHx0aGlzLl90cmlnZ2VyKCJiZWZvcmVBY3RpdmF0ZSIsZSx1KT09PSExfHwobi5hY3RpdmU9aD8hMTp0aGlzLmhlYWRlcnMuaW5kZXgoYSksdGhpcy5hY3RpdmU9cj90KCk6YSx0aGlzLl90b2dnbGUodSksdGhpcy5fcmVtb3ZlQ2xhc3MobywidWktYWNjb3JkaW9uLWhlYWRlci1hY3RpdmUiLCJ1aS1zdGF0ZS1hY3RpdmUiKSxuLmljb25zJiYoaT1vLmNoaWxkcmVuKCIudWktYWNjb3JkaW9uLWhlYWRlci1pY29uIiksdGhpcy5fcmVtb3ZlQ2xhc3MoaSxudWxsLG4uaWNvbnMuYWN0aXZlSGVhZGVyKS5fYWRkQ2xhc3MoaSxudWxsLG4uaWNvbnMuaGVhZGVyKSkscnx8KHRoaXMuX3JlbW92ZUNsYXNzKGEsInVpLWFjY29yZGlvbi1oZWFkZXItY29sbGFwc2VkIikuX2FkZENsYXNzKGEsInVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlIiwidWktc3RhdGUtYWN0aXZlIiksbi5pY29ucyYmKHM9YS5jaGlsZHJlbigiLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiIpLHRoaXMuX3JlbW92ZUNsYXNzKHMsbnVsbCxuLmljb25zLmhlYWRlcikuX2FkZENsYXNzKHMsbnVsbCxuLmljb25zLmFjdGl2ZUhlYWRlcikpLHRoaXMuX2FkZENsYXNzKGEubmV4dCgpLCJ1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUiKSkpfSxfdG9nZ2xlOmZ1bmN0aW9uKGUpe3ZhciBpPWUubmV3UGFuZWwscz10aGlzLnByZXZTaG93Lmxlbmd0aD90aGlzLnByZXZTaG93OmUub2xkUGFuZWw7dGhpcy5wcmV2U2hvdy5hZGQodGhpcy5wcmV2SGlkZSkuc3RvcCghMCwhMCksdGhpcy5wcmV2U2hvdz1pLHRoaXMucHJldkhpZGU9cyx0aGlzLm9wdGlvbnMuYW5pbWF0ZT90aGlzLl9hbmltYXRlKGkscyxlKToocy5oaWRlKCksaS5zaG93KCksdGhpcy5fdG9nZ2xlQ29tcGxldGUoZSkpLHMuYXR0cih7ImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KSxzLnByZXYoKS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6ImZhbHNlIiwiYXJpYS1leHBhbmRlZCI6ImZhbHNlIn0pLGkubGVuZ3RoJiZzLmxlbmd0aD9zLnByZXYoKS5hdHRyKHt0YWJJbmRleDotMSwiYXJpYS1leHBhbmRlZCI6ImZhbHNlIn0pOmkubGVuZ3RoJiZ0aGlzLmhlYWRlcnMuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIDA9PT1wYXJzZUludCh0KHRoaXMpLmF0dHIoInRhYkluZGV4IiksMTApfSkuYXR0cigidGFiSW5kZXgiLC0xKSxpLmF0dHIoImFyaWEtaGlkZGVuIiwiZmFsc2UiKS5wcmV2KCkuYXR0cih7ImFyaWEtc2VsZWN0ZWQiOiJ0cnVlIiwiYXJpYS1leHBhbmRlZCI6InRydWUiLHRhYkluZGV4OjB9KX0sX2FuaW1hdGU6ZnVuY3Rpb24odCxlLGkpe3ZhciBzLG4sbyxhPXRoaXMscj0wLGg9dC5jc3MoImJveC1zaXppbmciKSxsPXQubGVuZ3RoJiYoIWUubGVuZ3RofHx0LmluZGV4KCk8ZS5pbmRleCgpKSxjPXRoaXMub3B0aW9ucy5hbmltYXRlfHx7fSx1PWwmJmMuZG93bnx8YyxkPWZ1bmN0aW9uKCl7YS5fdG9nZ2xlQ29tcGxldGUoaSl9O3JldHVybiJudW1iZXIiPT10eXBlb2YgdSYmKG89dSksInN0cmluZyI9PXR5cGVvZiB1JiYobj11KSxuPW58fHUuZWFzaW5nfHxjLmVhc2luZyxvPW98fHUuZHVyYXRpb258fGMuZHVyYXRpb24sZS5sZW5ndGg/dC5sZW5ndGg/KHM9dC5zaG93KCkub3V0ZXJIZWlnaHQoKSxlLmFuaW1hdGUodGhpcy5oaWRlUHJvcHMse2R1cmF0aW9uOm8sZWFzaW5nOm4sc3RlcDpmdW5jdGlvbih0LGUpe2Uubm93PU1hdGgucm91bmQodCl9fSksdC5oaWRlKCkuYW5pbWF0ZSh0aGlzLnNob3dQcm9wcyx7ZHVyYXRpb246byxlYXNpbmc6bixjb21wbGV0ZTpkLHN0ZXA6ZnVuY3Rpb24odCxpKXtpLm5vdz1NYXRoLnJvdW5kKHQpLCJoZWlnaHQiIT09aS5wcm9wPyJjb250ZW50LWJveCI9PT1oJiYocis9aS5ub3cpOiJjb250ZW50IiE9PWEub3B0aW9ucy5oZWlnaHRTdHlsZSYmKGkubm93PU1hdGgucm91bmQocy1lLm91dGVySGVpZ2h0KCktcikscj0wKX19KSx2b2lkIDApOmUuYW5pbWF0ZSh0aGlzLmhpZGVQcm9wcyxvLG4sZCk6dC5hbmltYXRlKHRoaXMuc2hvd1Byb3BzLG8sbixkKX0sX3RvZ2dsZUNvbXBsZXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXQub2xkUGFuZWwsaT1lLnByZXYoKTt0aGlzLl9yZW1vdmVDbGFzcyhlLCJ1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUiKSx0aGlzLl9yZW1vdmVDbGFzcyhpLCJ1aS1hY2NvcmRpb24taGVhZGVyLWFjdGl2ZSIpLl9hZGRDbGFzcyhpLCJ1aS1hY2NvcmRpb24taGVhZGVyLWNvbGxhcHNlZCIpLGUubGVuZ3RoJiYoZS5wYXJlbnQoKVswXS5jbGFzc05hbWU9ZS5wYXJlbnQoKVswXS5jbGFzc05hbWUpLHRoaXMuX3RyaWdnZXIoImFjdGl2YXRlIixudWxsLHQpfX0pLHQudWkuc2FmZUFjdGl2ZUVsZW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU7dHJ5e2U9dC5hY3RpdmVFbGVtZW50fWNhdGNoKGkpe2U9dC5ib2R5fXJldHVybiBlfHwoZT10LmJvZHkpLGUubm9kZU5hbWV8fChlPXQuYm9keSksZX0sdC53aWRnZXQoInVpLm1lbnUiLHt2ZXJzaW9uOiIxLjEyLjAtcmMuMiIsZGVmYXVsdEVsZW1lbnQ6Ijx1bD4iLGRlbGF5OjMwMCxvcHRpb25zOntpY29uczp7c3VibWVudToidWktaWNvbi1jYXJldC0xLWUifSxpdGVtczoiPiAqIixtZW51czoidWwiLHBvc2l0aW9uOntteToibGVmdCB0b3AiLGF0OiJyaWdodCB0b3AifSxyb2xlOiJtZW51IixibHVyOm51bGwsZm9jdXM6bnVsbCxzZWxlY3Q6bnVsbH0sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuYWN0aXZlTWVudT10aGlzLmVsZW1lbnQsdGhpcy5tb3VzZUhhbmRsZWQ9ITEsdGhpcy5lbGVtZW50LnVuaXF1ZUlkKCkuYXR0cih7cm9sZTp0aGlzLm9wdGlvbnMucm9sZSx0YWJJbmRleDowfSksdGhpcy5fYWRkQ2xhc3MoInVpLW1lbnUiLCJ1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQiKSx0aGlzLl9vbih7Im1vdXNlZG93biAudWktbWVudS1pdGVtIjpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCl9LCJjbGljayAudWktbWVudS1pdGVtIjpmdW5jdGlvbihlKXt2YXIgaT10KGUudGFyZ2V0KSxzPXQodC51aS5zYWZlQWN0aXZlRWxlbWVudCh0aGlzLmRvY3VtZW50WzBdKSk7IXRoaXMubW91c2VIYW5kbGVkJiZpLm5vdCgiLnVpLXN0YXRlLWRpc2FibGVkIikubGVuZ3RoJiYodGhpcy5zZWxlY3QoZSksZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpfHwodGhpcy5tb3VzZUhhbmRsZWQ9ITApLGkuaGFzKCIudWktbWVudSIpLmxlbmd0aD90aGlzLmV4cGFuZChlKTohdGhpcy5lbGVtZW50LmlzKCI6Zm9jdXMiKSYmcy5jbG9zZXN0KCIudWktbWVudSIpLmxlbmd0aCYmKHRoaXMuZWxlbWVudC50cmlnZ2VyKCJmb2N1cyIsWyEwXSksdGhpcy5hY3RpdmUmJjE9PT10aGlzLmFjdGl2ZS5wYXJlbnRzKCIudWktbWVudSIpLmxlbmd0aCYmY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpKSl9LCJtb3VzZWVudGVyIC51aS1tZW51LWl0ZW0iOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLnByZXZpb3VzRmlsdGVyKXt2YXIgaT10KGUudGFyZ2V0KS5jbG9zZXN0KCIudWktbWVudS1pdGVtIikscz10KGUuY3VycmVudFRhcmdldCk7aVswXT09PXNbMF0mJih0aGlzLl9yZW1vdmVDbGFzcyhzLnNpYmxpbmdzKCkuY2hpbGRyZW4oIi51aS1zdGF0ZS1hY3RpdmUiKSxudWxsLCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLmZvY3VzKGUscykpfX0sbW91c2VsZWF2ZToiY29sbGFwc2VBbGwiLCJtb3VzZWxlYXZlIC51aS1tZW51IjoiY29sbGFwc2VBbGwiLGZvY3VzOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5hY3RpdmV8fHRoaXMuZWxlbWVudC5maW5kKHRoaXMub3B0aW9ucy5pdGVtcykuZXEoMCk7ZXx8dGhpcy5mb2N1cyh0LGkpfSxibHVyOmZ1bmN0aW9uKGUpe3RoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dmFyIGk9IXQuY29udGFpbnModGhpcy5lbGVtZW50WzBdLHQudWkuc2FmZUFjdGl2ZUVsZW1lbnQodGhpcy5kb2N1bWVudFswXSkpO2kmJnRoaXMuY29sbGFwc2VBbGwoZSl9KX0sa2V5ZG93bjoiX2tleWRvd24ifSksdGhpcy5yZWZyZXNoKCksdGhpcy5fb24odGhpcy5kb2N1bWVudCx7Y2xpY2s6ZnVuY3Rpb24odCl7dGhpcy5fY2xvc2VPbkRvY3VtZW50Q2xpY2sodCkmJnRoaXMuY29sbGFwc2VBbGwodCksdGhpcy5tb3VzZUhhbmRsZWQ9ITF9fSl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5lbGVtZW50LmZpbmQoIi51aS1tZW51LWl0ZW0iKS5yZW1vdmVBdHRyKCJyb2xlIGFyaWEtZGlzYWJsZWQiKSxpPWUuY2hpbGRyZW4oIi51aS1tZW51LWl0ZW0td3JhcHBlciIpLnJlbW92ZVVuaXF1ZUlkKCkucmVtb3ZlQXR0cigidGFiSW5kZXggcm9sZSBhcmlhLWhhc3BvcHVwIik7dGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIpLmZpbmQoIi51aS1tZW51IikuYWRkQmFjaygpLnJlbW92ZUF0dHIoInJvbGUgYXJpYS1sYWJlbGxlZGJ5IGFyaWEtZXhwYW5kZWQgYXJpYS1oaWRkZW4gYXJpYS1kaXNhYmxlZCB0YWJJbmRleCIpLnJlbW92ZVVuaXF1ZUlkKCkuc2hvdygpLGkuY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTtlLmRhdGEoInVpLW1lbnUtc3VibWVudS1jYXJldCIpJiZlLnJlbW92ZSgpfSl9LF9rZXlkb3duOmZ1bmN0aW9uKGUpe3ZhciBpLHMsbixvLGE9ITA7c3dpdGNoKGUua2V5Q29kZSl7Y2FzZSB0LnVpLmtleUNvZGUuUEFHRV9VUDp0aGlzLnByZXZpb3VzUGFnZShlKTticmVhaztjYXNlIHQudWkua2V5Q29kZS5QQUdFX0RPV046dGhpcy5uZXh0UGFnZShlKTticmVhaztjYXNlIHQudWkua2V5Q29kZS5IT01FOnRoaXMuX21vdmUoImZpcnN0IiwiZmlyc3QiLGUpO2JyZWFrO2Nhc2UgdC51aS5rZXlDb2RlLkVORDp0aGlzLl9tb3ZlKCJsYXN0IiwibGFzdCIsZSk7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuVVA6dGhpcy5wcmV2aW91cyhlKTticmVhaztjYXNlIHQudWkua2V5Q29kZS5ET1dOOnRoaXMubmV4dChlKTticmVhaztjYXNlIHQudWkua2V5Q29kZS5MRUZUOnRoaXMuY29sbGFwc2UoZSk7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuUklHSFQ6dGhpcy5hY3RpdmUmJiF0aGlzLmFjdGl2ZS5pcygiLnVpLXN0YXRlLWRpc2FibGVkIikmJnRoaXMuZXhwYW5kKGUpO2JyZWFrO2Nhc2UgdC51aS5rZXlDb2RlLkVOVEVSOmNhc2UgdC51aS5rZXlDb2RlLlNQQUNFOnRoaXMuX2FjdGl2YXRlKGUpO2JyZWFrO2Nhc2UgdC51aS5rZXlDb2RlLkVTQ0FQRTp0aGlzLmNvbGxhcHNlKGUpO2JyZWFrO2RlZmF1bHQ6YT0hMSxzPXRoaXMucHJldmlvdXNGaWx0ZXJ8fCIiLG49U3RyaW5nLmZyb21DaGFyQ29kZShlLmtleUNvZGUpLG89ITEsY2xlYXJUaW1lb3V0KHRoaXMuZmlsdGVyVGltZXIpLG49PT1zP289ITA6bj1zK24saT10aGlzLl9maWx0ZXJNZW51SXRlbXMobiksaT1vJiYtMSE9PWkuaW5kZXgodGhpcy5hY3RpdmUubmV4dCgpKT90aGlzLmFjdGl2ZS5uZXh0QWxsKCIudWktbWVudS1pdGVtIik6aSxpLmxlbmd0aHx8KG49U3RyaW5nLmZyb21DaGFyQ29kZShlLmtleUNvZGUpLGk9dGhpcy5fZmlsdGVyTWVudUl0ZW1zKG4pKSxpLmxlbmd0aD8odGhpcy5mb2N1cyhlLGkpLHRoaXMucHJldmlvdXNGaWx0ZXI9bix0aGlzLmZpbHRlclRpbWVyPXRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXMucHJldmlvdXNGaWx0ZXJ9LDFlMykpOmRlbGV0ZSB0aGlzLnByZXZpb3VzRmlsdGVyfWEmJmUucHJldmVudERlZmF1bHQoKX0sX2FjdGl2YXRlOmZ1bmN0aW9uKHQpe3RoaXMuYWN0aXZlJiYhdGhpcy5hY3RpdmUuaXMoIi51aS1zdGF0ZS1kaXNhYmxlZCIpJiYodGhpcy5hY3RpdmUuY2hpbGRyZW4oIlthcmlhLWhhc3BvcHVwPSd0cnVlJ10iKS5sZW5ndGg/dGhpcy5leHBhbmQodCk6dGhpcy5zZWxlY3QodCkpfSxyZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIGUsaSxzLG4sbyxhPXRoaXMscj10aGlzLm9wdGlvbnMuaWNvbnMuc3VibWVudSxoPXRoaXMuZWxlbWVudC5maW5kKHRoaXMub3B0aW9ucy5tZW51cyk7dGhpcy5fdG9nZ2xlQ2xhc3MoInVpLW1lbnUtaWNvbnMiLG51bGwsISF0aGlzLmVsZW1lbnQuZmluZCgiLnVpLWljb24iKS5sZW5ndGgpLHM9aC5maWx0ZXIoIjpub3QoLnVpLW1lbnUpIikuaGlkZSgpLmF0dHIoe3JvbGU6dGhpcy5vcHRpb25zLnJvbGUsImFyaWEtaGlkZGVuIjoidHJ1ZSIsImFyaWEtZXhwYW5kZWQiOiJmYWxzZSJ9KS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKSxpPWUucHJldigpLHM9dCgiPHNwYW4+IikuZGF0YSgidWktbWVudS1zdWJtZW51LWNhcmV0IiwhMCk7YS5fYWRkQ2xhc3MocywidWktbWVudS1pY29uIiwidWktaWNvbiAiK3IpLGkuYXR0cigiYXJpYS1oYXNwb3B1cCIsInRydWUiKS5wcmVwZW5kKHMpLGUuYXR0cigiYXJpYS1sYWJlbGxlZGJ5IixpLmF0dHIoImlkIikpfSksdGhpcy5fYWRkQ2xhc3MocywidWktbWVudSIsInVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1mcm9udCIpLGU9aC5hZGQodGhpcy5lbGVtZW50KSxpPWUuZmluZCh0aGlzLm9wdGlvbnMuaXRlbXMpLGkubm90KCIudWktbWVudS1pdGVtIikuZWFjaChmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7YS5faXNEaXZpZGVyKGUpJiZhLl9hZGRDbGFzcyhlLCJ1aS1tZW51LWRpdmlkZXIiLCJ1aS13aWRnZXQtY29udGVudCIpfSksbj1pLm5vdCgiLnVpLW1lbnUtaXRlbSwgLnVpLW1lbnUtZGl2aWRlciIpLG89bi5jaGlsZHJlbigpLm5vdCgiLnVpLW1lbnUiKS51bmlxdWVJZCgpLmF0dHIoe3RhYkluZGV4Oi0xLHJvbGU6dGhpcy5faXRlbVJvbGUoKX0pLHRoaXMuX2FkZENsYXNzKG4sInVpLW1lbnUtaXRlbSIpLl9hZGRDbGFzcyhvLCJ1aS1tZW51LWl0ZW0td3JhcHBlciIpLGkuZmlsdGVyKCIudWktc3RhdGUtZGlzYWJsZWQiKS5hdHRyKCJhcmlhLWRpc2FibGVkIiwidHJ1ZSIpLHRoaXMuYWN0aXZlJiYhdC5jb250YWlucyh0aGlzLmVsZW1lbnRbMF0sdGhpcy5hY3RpdmVbMF0pJiZ0aGlzLmJsdXIoKX0sX2l0ZW1Sb2xlOmZ1bmN0aW9uKCl7cmV0dXJue21lbnU6Im1lbnVpdGVtIixsaXN0Ym94OiJvcHRpb24ifVt0aGlzLm9wdGlvbnMucm9sZV19LF9zZXRPcHRpb246ZnVuY3Rpb24odCxlKXtpZigiaWNvbnMiPT09dCl7dmFyIGk9dGhpcy5lbGVtZW50LmZpbmQoIi51aS1tZW51LWljb24iKTt0aGlzLl9yZW1vdmVDbGFzcyhpLG51bGwsdGhpcy5vcHRpb25zLmljb25zLnN1Ym1lbnUpLl9hZGRDbGFzcyhpLG51bGwsZS5zdWJtZW51KX10aGlzLl9zdXBlcih0LGUpfSxfc2V0T3B0aW9uRGlzYWJsZWQ6ZnVuY3Rpb24odCl7dGhpcy5fc3VwZXIodCksdGhpcy5lbGVtZW50LmF0dHIoImFyaWEtZGlzYWJsZWQiLHQrIiIpLHRoaXMuX3RvZ2dsZUNsYXNzKG51bGwsInVpLXN0YXRlLWRpc2FibGVkIiwhIXQpfSxmb2N1czpmdW5jdGlvbih0LGUpe3ZhciBpLHMsbjt0aGlzLmJsdXIodCx0JiYiZm9jdXMiPT09dC50eXBlKSx0aGlzLl9zY3JvbGxJbnRvVmlldyhlKSx0aGlzLmFjdGl2ZT1lLmZpcnN0KCkscz10aGlzLmFjdGl2ZS5jaGlsZHJlbigiLnVpLW1lbnUtaXRlbS13cmFwcGVyIiksdGhpcy5fYWRkQ2xhc3MocyxudWxsLCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLm9wdGlvbnMucm9sZSYmdGhpcy5lbGVtZW50LmF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIscy5hdHRyKCJpZCIpKSxuPXRoaXMuYWN0aXZlLnBhcmVudCgpLmNsb3Nlc3QoIi51aS1tZW51LWl0ZW0iKS5jaGlsZHJlbigiLnVpLW1lbnUtaXRlbS13cmFwcGVyIiksdGhpcy5fYWRkQ2xhc3MobixudWxsLCJ1aS1zdGF0ZS1hY3RpdmUiKSx0JiYia2V5ZG93biI9PT10LnR5cGU/dGhpcy5fY2xvc2UoKTp0aGlzLnRpbWVyPXRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dGhpcy5fY2xvc2UoKX0sdGhpcy5kZWxheSksaT1lLmNoaWxkcmVuKCIudWktbWVudSIpLGkubGVuZ3RoJiZ0JiYvXm1vdXNlLy50ZXN0KHQudHlwZSkmJnRoaXMuX3N0YXJ0T3BlbmluZyhpKSx0aGlzLmFjdGl2ZU1lbnU9ZS5wYXJlbnQoKSx0aGlzLl90cmlnZ2VyKCJmb2N1cyIsdCx7aXRlbTplfSl9LF9zY3JvbGxJbnRvVmlldzpmdW5jdGlvbihlKXt2YXIgaSxzLG4sbyxhLHI7dGhpcy5faGFzU2Nyb2xsKCkmJihpPXBhcnNlRmxvYXQodC5jc3ModGhpcy5hY3RpdmVNZW51WzBdLCJib3JkZXJUb3BXaWR0aCIpKXx8MCxzPXBhcnNlRmxvYXQodC5jc3ModGhpcy5hY3RpdmVNZW51WzBdLCJwYWRkaW5nVG9wIikpfHwwLG49ZS5vZmZzZXQoKS50b3AtdGhpcy5hY3RpdmVNZW51Lm9mZnNldCgpLnRvcC1pLXMsbz10aGlzLmFjdGl2ZU1lbnUuc2Nyb2xsVG9wKCksYT10aGlzLmFjdGl2ZU1lbnUuaGVpZ2h0KCkscj1lLm91dGVySGVpZ2h0KCksMD5uP3RoaXMuYWN0aXZlTWVudS5zY3JvbGxUb3AobytuKTpuK3I+YSYmdGhpcy5hY3RpdmVNZW51LnNjcm9sbFRvcChvK24tYStyKSl9LGJsdXI6ZnVuY3Rpb24odCxlKXtlfHxjbGVhclRpbWVvdXQodGhpcy50aW1lciksdGhpcy5hY3RpdmUmJih0aGlzLl9yZW1vdmVDbGFzcyh0aGlzLmFjdGl2ZS5jaGlsZHJlbigiLnVpLW1lbnUtaXRlbS13cmFwcGVyIiksbnVsbCwidWktc3RhdGUtYWN0aXZlIiksdGhpcy5fdHJpZ2dlcigiYmx1ciIsdCx7aXRlbTp0aGlzLmFjdGl2ZX0pLHRoaXMuYWN0aXZlPW51bGwpfSxfc3RhcnRPcGVuaW5nOmZ1bmN0aW9uKHQpe2NsZWFyVGltZW91dCh0aGlzLnRpbWVyKSwidHJ1ZSI9PT10LmF0dHIoImFyaWEtaGlkZGVuIikmJih0aGlzLnRpbWVyPXRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dGhpcy5fY2xvc2UoKSx0aGlzLl9vcGVuKHQpfSx0aGlzLmRlbGF5KSl9LF9vcGVuOmZ1bmN0aW9uKGUpe3ZhciBpPXQuZXh0ZW5kKHtvZjp0aGlzLmFjdGl2ZX0sdGhpcy5vcHRpb25zLnBvc2l0aW9uKTtjbGVhclRpbWVvdXQodGhpcy50aW1lciksdGhpcy5lbGVtZW50LmZpbmQoIi51aS1tZW51Iikubm90KGUucGFyZW50cygiLnVpLW1lbnUiKSkuaGlkZSgpLmF0dHIoImFyaWEtaGlkZGVuIiwidHJ1ZSIpLGUuc2hvdygpLnJlbW92ZUF0dHIoImFyaWEtaGlkZGVuIikuYXR0cigiYXJpYS1leHBhbmRlZCIsInRydWUiKS5wb3NpdGlvbihpKX0sY29sbGFwc2VBbGw6ZnVuY3Rpb24oZSxpKXtjbGVhclRpbWVvdXQodGhpcy50aW1lciksdGhpcy50aW1lcj10aGlzLl9kZWxheShmdW5jdGlvbigpe3ZhciBzPWk/dGhpcy5lbGVtZW50OnQoZSYmZS50YXJnZXQpLmNsb3Nlc3QodGhpcy5lbGVtZW50LmZpbmQoIi51aS1tZW51IikpO3MubGVuZ3RofHwocz10aGlzLmVsZW1lbnQpLHRoaXMuX2Nsb3NlKHMpLHRoaXMuYmx1cihlKSx0aGlzLl9yZW1vdmVDbGFzcyhzLmZpbmQoIi51aS1zdGF0ZS1hY3RpdmUiKSxudWxsLCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLmFjdGl2ZU1lbnU9c30sdGhpcy5kZWxheSl9LF9jbG9zZTpmdW5jdGlvbih0KXt0fHwodD10aGlzLmFjdGl2ZT90aGlzLmFjdGl2ZS5wYXJlbnQoKTp0aGlzLmVsZW1lbnQpLHQuZmluZCgiLnVpLW1lbnUiKS5oaWRlKCkuYXR0cigiYXJpYS1oaWRkZW4iLCJ0cnVlIikuYXR0cigiYXJpYS1leHBhbmRlZCIsImZhbHNlIil9LF9jbG9zZU9uRG9jdW1lbnRDbGljazpmdW5jdGlvbihlKXtyZXR1cm4hdChlLnRhcmdldCkuY2xvc2VzdCgiLnVpLW1lbnUiKS5sZW5ndGh9LF9pc0RpdmlkZXI6ZnVuY3Rpb24odCl7cmV0dXJuIS9bXlwtXHUyMDE0XHUyMDEzXHNdLy50ZXN0KHQudGV4dCgpKX0sY29sbGFwc2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5hY3RpdmUmJnRoaXMuYWN0aXZlLnBhcmVudCgpLmNsb3Nlc3QoIi51aS1tZW51LWl0ZW0iLHRoaXMuZWxlbWVudCk7ZSYmZS5sZW5ndGgmJih0aGlzLl9jbG9zZSgpLHRoaXMuZm9jdXModCxlKSl9LGV4cGFuZDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmFjdGl2ZSYmdGhpcy5hY3RpdmUuY2hpbGRyZW4oIi51aS1tZW51ICIpLmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKS5maXJzdCgpO2UmJmUubGVuZ3RoJiYodGhpcy5fb3BlbihlLnBhcmVudCgpKSx0aGlzLl9kZWxheShmdW5jdGlvbigpe3RoaXMuZm9jdXModCxlKX0pKX0sbmV4dDpmdW5jdGlvbih0KXt0aGlzLl9tb3ZlKCJuZXh0IiwiZmlyc3QiLHQpfSxwcmV2aW91czpmdW5jdGlvbih0KXt0aGlzLl9tb3ZlKCJwcmV2IiwibGFzdCIsdCl9LGlzRmlyc3RJdGVtOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWN0aXZlJiYhdGhpcy5hY3RpdmUucHJldkFsbCgiLnVpLW1lbnUtaXRlbSIpLmxlbmd0aH0saXNMYXN0SXRlbTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFjdGl2ZSYmIXRoaXMuYWN0aXZlLm5leHRBbGwoIi51aS1tZW51LWl0ZW0iKS5sZW5ndGh9LF9tb3ZlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgczt0aGlzLmFjdGl2ZSYmKHM9ImZpcnN0Ij09PXR8fCJsYXN0Ij09PXQ/dGhpcy5hY3RpdmVbImZpcnN0Ij09PXQ/InByZXZBbGwiOiJuZXh0QWxsIl0oIi51aS1tZW51LWl0ZW0iKS5lcSgtMSk6dGhpcy5hY3RpdmVbdCsiQWxsIl0oIi51aS1tZW51LWl0ZW0iKS5lcSgwKSkscyYmcy5sZW5ndGgmJnRoaXMuYWN0aXZlfHwocz10aGlzLmFjdGl2ZU1lbnUuZmluZCh0aGlzLm9wdGlvbnMuaXRlbXMpW2VdKCkpLHRoaXMuZm9jdXMoaSxzKX0sbmV4dFBhZ2U6ZnVuY3Rpb24oZSl7dmFyIGkscyxuO3JldHVybiB0aGlzLmFjdGl2ZT8odGhpcy5pc0xhc3RJdGVtKCl8fCh0aGlzLl9oYXNTY3JvbGwoKT8ocz10aGlzLmFjdGl2ZS5vZmZzZXQoKS50b3Asbj10aGlzLmVsZW1lbnQuaGVpZ2h0KCksdGhpcy5hY3RpdmUubmV4dEFsbCgiLnVpLW1lbnUtaXRlbSIpLmVhY2goZnVuY3Rpb24oKXtyZXR1cm4gaT10KHRoaXMpLDA+aS5vZmZzZXQoKS50b3Atcy1ufSksdGhpcy5mb2N1cyhlLGkpKTp0aGlzLmZvY3VzKGUsdGhpcy5hY3RpdmVNZW51LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKVt0aGlzLmFjdGl2ZT8ibGFzdCI6ImZpcnN0Il0oKSkpLHZvaWQgMCk6KHRoaXMubmV4dChlKSx2b2lkIDApfSxwcmV2aW91c1BhZ2U6ZnVuY3Rpb24oZSl7dmFyIGkscyxuO3JldHVybiB0aGlzLmFjdGl2ZT8odGhpcy5pc0ZpcnN0SXRlbSgpfHwodGhpcy5faGFzU2Nyb2xsKCk/KHM9dGhpcy5hY3RpdmUub2Zmc2V0KCkudG9wLG49dGhpcy5lbGVtZW50LmhlaWdodCgpLHRoaXMuYWN0aXZlLnByZXZBbGwoIi51aS1tZW51LWl0ZW0iKS5lYWNoKGZ1bmN0aW9uKCl7cmV0dXJuIGk9dCh0aGlzKSxpLm9mZnNldCgpLnRvcC1zK24+MH0pLHRoaXMuZm9jdXMoZSxpKSk6dGhpcy5mb2N1cyhlLHRoaXMuYWN0aXZlTWVudS5maW5kKHRoaXMub3B0aW9ucy5pdGVtcykuZmlyc3QoKSkpLHZvaWQgMCk6KHRoaXMubmV4dChlKSx2b2lkIDApfSxfaGFzU2Nyb2xsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudC5vdXRlckhlaWdodCgpPHRoaXMuZWxlbWVudC5wcm9wKCJzY3JvbGxIZWlnaHQiKX0sc2VsZWN0OmZ1bmN0aW9uKGUpe3RoaXMuYWN0aXZlPXRoaXMuYWN0aXZlfHx0KGUudGFyZ2V0KS5jbG9zZXN0KCIudWktbWVudS1pdGVtIik7dmFyIGk9e2l0ZW06dGhpcy5hY3RpdmV9O3RoaXMuYWN0aXZlLmhhcygiLnVpLW1lbnUiKS5sZW5ndGh8fHRoaXMuY29sbGFwc2VBbGwoZSwhMCksdGhpcy5fdHJpZ2dlcigic2VsZWN0IixlLGkpfSxfZmlsdGVyTWVudUl0ZW1zOmZ1bmN0aW9uKGUpe3ZhciBpPWUucmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywiXFwkJiIpLHM9UmVnRXhwKCJeIitpLCJpIik7cmV0dXJuIHRoaXMuYWN0aXZlTWVudS5maW5kKHRoaXMub3B0aW9ucy5pdGVtcykuZmlsdGVyKCIudWktbWVudS1pdGVtIikuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHMudGVzdCh0LnRyaW0odCh0aGlzKS5jaGlsZHJlbigiLnVpLW1lbnUtaXRlbS13cmFwcGVyIikudGV4dCgpKSl9KX19KSx0LndpZGdldCgidWkuYXV0b2NvbXBsZXRlIix7dmVyc2lvbjoiMS4xMi4wLXJjLjIiLGRlZmF1bHRFbGVtZW50OiI8aW5wdXQ+IixvcHRpb25zOnthcHBlbmRUbzpudWxsLGF1dG9Gb2N1czohMSxkZWxheTozMDAsbWluTGVuZ3RoOjEscG9zaXRpb246e215OiJsZWZ0IHRvcCIsYXQ6ImxlZnQgYm90dG9tIixjb2xsaXNpb246Im5vbmUifSxzb3VyY2U6bnVsbCxjaGFuZ2U6bnVsbCxjbG9zZTpudWxsLGZvY3VzOm51bGwsb3BlbjpudWxsLHJlc3BvbnNlOm51bGwsc2VhcmNoOm51bGwsc2VsZWN0Om51bGx9LHJlcXVlc3RJbmRleDowLHBlbmRpbmc6MCxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIGUsaSxzLG49dGhpcy5lbGVtZW50WzBdLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksbz0idGV4dGFyZWEiPT09bixhPSJpbnB1dCI9PT1uO3RoaXMuaXNNdWx0aUxpbmU9b3x8IWEmJnRoaXMuX2lzQ29udGVudEVkaXRhYmxlKHRoaXMuZWxlbWVudCksdGhpcy52YWx1ZU1ldGhvZD10aGlzLmVsZW1lbnRbb3x8YT8idmFsIjoidGV4dCJdLHRoaXMuaXNOZXdNZW51PSEwLHRoaXMuX2FkZENsYXNzKCJ1aS1hdXRvY29tcGxldGUtaW5wdXQiKSx0aGlzLmVsZW1lbnQuYXR0cigiYXV0b2NvbXBsZXRlIiwib2ZmIiksdGhpcy5fb24odGhpcy5lbGVtZW50LHtrZXlkb3duOmZ1bmN0aW9uKG4pe2lmKHRoaXMuZWxlbWVudC5wcm9wKCJyZWFkT25seSIpKXJldHVybiBlPSEwLHM9ITAsaT0hMCx2b2lkIDA7CmU9ITEscz0hMSxpPSExO3ZhciBvPXQudWkua2V5Q29kZTtzd2l0Y2gobi5rZXlDb2RlKXtjYXNlIG8uUEFHRV9VUDplPSEwLHRoaXMuX21vdmUoInByZXZpb3VzUGFnZSIsbik7YnJlYWs7Y2FzZSBvLlBBR0VfRE9XTjplPSEwLHRoaXMuX21vdmUoIm5leHRQYWdlIixuKTticmVhaztjYXNlIG8uVVA6ZT0hMCx0aGlzLl9rZXlFdmVudCgicHJldmlvdXMiLG4pO2JyZWFrO2Nhc2Ugby5ET1dOOmU9ITAsdGhpcy5fa2V5RXZlbnQoIm5leHQiLG4pO2JyZWFrO2Nhc2Ugby5FTlRFUjp0aGlzLm1lbnUuYWN0aXZlJiYoZT0hMCxuLnByZXZlbnREZWZhdWx0KCksdGhpcy5tZW51LnNlbGVjdChuKSk7YnJlYWs7Y2FzZSBvLlRBQjp0aGlzLm1lbnUuYWN0aXZlJiZ0aGlzLm1lbnUuc2VsZWN0KG4pO2JyZWFrO2Nhc2Ugby5FU0NBUEU6dGhpcy5tZW51LmVsZW1lbnQuaXMoIjp2aXNpYmxlIikmJih0aGlzLmlzTXVsdGlMaW5lfHx0aGlzLl92YWx1ZSh0aGlzLnRlcm0pLHRoaXMuY2xvc2Uobiksbi5wcmV2ZW50RGVmYXVsdCgpKTticmVhaztkZWZhdWx0Omk9ITAsdGhpcy5fc2VhcmNoVGltZW91dChuKX19LGtleXByZXNzOmZ1bmN0aW9uKHMpe2lmKGUpcmV0dXJuIGU9ITEsKCF0aGlzLmlzTXVsdGlMaW5lfHx0aGlzLm1lbnUuZWxlbWVudC5pcygiOnZpc2libGUiKSkmJnMucHJldmVudERlZmF1bHQoKSx2b2lkIDA7aWYoIWkpe3ZhciBuPXQudWkua2V5Q29kZTtzd2l0Y2gocy5rZXlDb2RlKXtjYXNlIG4uUEFHRV9VUDp0aGlzLl9tb3ZlKCJwcmV2aW91c1BhZ2UiLHMpO2JyZWFrO2Nhc2Ugbi5QQUdFX0RPV046dGhpcy5fbW92ZSgibmV4dFBhZ2UiLHMpO2JyZWFrO2Nhc2Ugbi5VUDp0aGlzLl9rZXlFdmVudCgicHJldmlvdXMiLHMpO2JyZWFrO2Nhc2Ugbi5ET1dOOnRoaXMuX2tleUV2ZW50KCJuZXh0IixzKX19fSxpbnB1dDpmdW5jdGlvbih0KXtyZXR1cm4gcz8ocz0hMSx0LnByZXZlbnREZWZhdWx0KCksdm9pZCAwKToodGhpcy5fc2VhcmNoVGltZW91dCh0KSx2b2lkIDApfSxmb2N1czpmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWRJdGVtPW51bGwsdGhpcy5wcmV2aW91cz10aGlzLl92YWx1ZSgpfSxibHVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNhbmNlbEJsdXI/KGRlbGV0ZSB0aGlzLmNhbmNlbEJsdXIsdm9pZCAwKTooY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoaW5nKSx0aGlzLmNsb3NlKHQpLHRoaXMuX2NoYW5nZSh0KSx2b2lkIDApfX0pLHRoaXMuX2luaXRTb3VyY2UoKSx0aGlzLm1lbnU9dCgiPHVsPiIpLmFwcGVuZFRvKHRoaXMuX2FwcGVuZFRvKCkpLm1lbnUoe3JvbGU6bnVsbH0pLmhpZGUoKS5tZW51KCJpbnN0YW5jZSIpLHRoaXMuX2FkZENsYXNzKHRoaXMubWVudS5lbGVtZW50LCJ1aS1hdXRvY29tcGxldGUiLCJ1aS1mcm9udCIpLHRoaXMuX29uKHRoaXMubWVudS5lbGVtZW50LHttb3VzZWRvd246ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuY2FuY2VsQmx1cj0hMCx0aGlzLl9kZWxheShmdW5jdGlvbigpe2RlbGV0ZSB0aGlzLmNhbmNlbEJsdXIsdGhpcy5lbGVtZW50WzBdIT09dC51aS5zYWZlQWN0aXZlRWxlbWVudCh0aGlzLmRvY3VtZW50WzBdKSYmdGhpcy5lbGVtZW50LnRyaWdnZXIoImZvY3VzIil9KX0sbWVudWZvY3VzOmZ1bmN0aW9uKGUsaSl7dmFyIHMsbjtyZXR1cm4gdGhpcy5pc05ld01lbnUmJih0aGlzLmlzTmV3TWVudT0hMSxlLm9yaWdpbmFsRXZlbnQmJi9ebW91c2UvLnRlc3QoZS5vcmlnaW5hbEV2ZW50LnR5cGUpKT8odGhpcy5tZW51LmJsdXIoKSx0aGlzLmRvY3VtZW50Lm9uZSgibW91c2Vtb3ZlIixmdW5jdGlvbigpe3QoZS50YXJnZXQpLnRyaWdnZXIoZS5vcmlnaW5hbEV2ZW50KX0pLHZvaWQgMCk6KG49aS5pdGVtLmRhdGEoInVpLWF1dG9jb21wbGV0ZS1pdGVtIiksITEhPT10aGlzLl90cmlnZ2VyKCJmb2N1cyIsZSx7aXRlbTpufSkmJmUub3JpZ2luYWxFdmVudCYmL15rZXkvLnRlc3QoZS5vcmlnaW5hbEV2ZW50LnR5cGUpJiZ0aGlzLl92YWx1ZShuLnZhbHVlKSxzPWkuaXRlbS5hdHRyKCJhcmlhLWxhYmVsIil8fG4udmFsdWUscyYmdC50cmltKHMpLmxlbmd0aCYmKHRoaXMubGl2ZVJlZ2lvbi5jaGlsZHJlbigpLmhpZGUoKSx0KCI8ZGl2PiIpLnRleHQocykuYXBwZW5kVG8odGhpcy5saXZlUmVnaW9uKSksdm9pZCAwKX0sbWVudXNlbGVjdDpmdW5jdGlvbihlLGkpe3ZhciBzPWkuaXRlbS5kYXRhKCJ1aS1hdXRvY29tcGxldGUtaXRlbSIpLG49dGhpcy5wcmV2aW91czt0aGlzLmVsZW1lbnRbMF0hPT10LnVpLnNhZmVBY3RpdmVFbGVtZW50KHRoaXMuZG9jdW1lbnRbMF0pJiYodGhpcy5lbGVtZW50LnRyaWdnZXIoImZvY3VzIiksdGhpcy5wcmV2aW91cz1uLHRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dGhpcy5wcmV2aW91cz1uLHRoaXMuc2VsZWN0ZWRJdGVtPXN9KSksITEhPT10aGlzLl90cmlnZ2VyKCJzZWxlY3QiLGUse2l0ZW06c30pJiZ0aGlzLl92YWx1ZShzLnZhbHVlKSx0aGlzLnRlcm09dGhpcy5fdmFsdWUoKSx0aGlzLmNsb3NlKGUpLHRoaXMuc2VsZWN0ZWRJdGVtPXN9fSksdGhpcy5saXZlUmVnaW9uPXQoIjxkaXY+Iix7cm9sZToic3RhdHVzIiwiYXJpYS1saXZlIjoiYXNzZXJ0aXZlIiwiYXJpYS1yZWxldmFudCI6ImFkZGl0aW9ucyJ9KS5hcHBlbmRUbyh0aGlzLmRvY3VtZW50WzBdLmJvZHkpLHRoaXMuX2FkZENsYXNzKHRoaXMubGl2ZVJlZ2lvbixudWxsLCJ1aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGUiKSx0aGlzLl9vbih0aGlzLndpbmRvdyx7YmVmb3JldW5sb2FkOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoImF1dG9jb21wbGV0ZSIpfX0pfSxfZGVzdHJveTpmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aGlzLnNlYXJjaGluZyksdGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoImF1dG9jb21wbGV0ZSIpLHRoaXMubWVudS5lbGVtZW50LnJlbW92ZSgpLHRoaXMubGl2ZVJlZ2lvbi5yZW1vdmUoKX0sX3NldE9wdGlvbjpmdW5jdGlvbih0LGUpe3RoaXMuX3N1cGVyKHQsZSksInNvdXJjZSI9PT10JiZ0aGlzLl9pbml0U291cmNlKCksImFwcGVuZFRvIj09PXQmJnRoaXMubWVudS5lbGVtZW50LmFwcGVuZFRvKHRoaXMuX2FwcGVuZFRvKCkpLCJkaXNhYmxlZCI9PT10JiZlJiZ0aGlzLnhociYmdGhpcy54aHIuYWJvcnQoKX0sX2lzRXZlbnRUYXJnZXRJbldpZGdldDpmdW5jdGlvbihlKXt2YXIgaT10aGlzLm1lbnUuZWxlbWVudFswXTtyZXR1cm4gZS50YXJnZXQ9PT10aGlzLmVsZW1lbnRbMF18fGUudGFyZ2V0PT09aXx8dC5jb250YWlucyhpLGUudGFyZ2V0KX0sX2Nsb3NlT25DbGlja091dHNpZGU6ZnVuY3Rpb24odCl7dGhpcy5faXNFdmVudFRhcmdldEluV2lkZ2V0KHQpfHx0aGlzLmNsb3NlKCl9LF9hcHBlbmRUbzpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucy5hcHBlbmRUbztyZXR1cm4gZSYmKGU9ZS5qcXVlcnl8fGUubm9kZVR5cGU/dChlKTp0aGlzLmRvY3VtZW50LmZpbmQoZSkuZXEoMCkpLGUmJmVbMF18fChlPXRoaXMuZWxlbWVudC5jbG9zZXN0KCIudWktZnJvbnQsIGRpYWxvZyIpKSxlLmxlbmd0aHx8KGU9dGhpcy5kb2N1bWVudFswXS5ib2R5KSxlfSxfaW5pdFNvdXJjZTpmdW5jdGlvbigpe3ZhciBlLGkscz10aGlzO3QuaXNBcnJheSh0aGlzLm9wdGlvbnMuc291cmNlKT8oZT10aGlzLm9wdGlvbnMuc291cmNlLHRoaXMuc291cmNlPWZ1bmN0aW9uKGkscyl7cyh0LnVpLmF1dG9jb21wbGV0ZS5maWx0ZXIoZSxpLnRlcm0pKX0pOiJzdHJpbmciPT10eXBlb2YgdGhpcy5vcHRpb25zLnNvdXJjZT8oaT10aGlzLm9wdGlvbnMuc291cmNlLHRoaXMuc291cmNlPWZ1bmN0aW9uKGUsbil7cy54aHImJnMueGhyLmFib3J0KCkscy54aHI9dC5hamF4KHt1cmw6aSxkYXRhOmUsZGF0YVR5cGU6Impzb24iLHN1Y2Nlc3M6ZnVuY3Rpb24odCl7bih0KX0sZXJyb3I6ZnVuY3Rpb24oKXtuKFtdKX19KX0pOnRoaXMuc291cmNlPXRoaXMub3B0aW9ucy5zb3VyY2V9LF9zZWFyY2hUaW1lb3V0OmZ1bmN0aW9uKHQpe2NsZWFyVGltZW91dCh0aGlzLnNlYXJjaGluZyksdGhpcy5zZWFyY2hpbmc9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt2YXIgZT10aGlzLnRlcm09PT10aGlzLl92YWx1ZSgpLGk9dGhpcy5tZW51LmVsZW1lbnQuaXMoIjp2aXNpYmxlIikscz10LmFsdEtleXx8dC5jdHJsS2V5fHx0Lm1ldGFLZXl8fHQuc2hpZnRLZXk7KCFlfHxlJiYhaSYmIXMpJiYodGhpcy5zZWxlY3RlZEl0ZW09bnVsbCx0aGlzLnNlYXJjaChudWxsLHQpKX0sdGhpcy5vcHRpb25zLmRlbGF5KX0sc2VhcmNoOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9bnVsbCE9dD90OnRoaXMuX3ZhbHVlKCksdGhpcy50ZXJtPXRoaXMuX3ZhbHVlKCksdC5sZW5ndGg8dGhpcy5vcHRpb25zLm1pbkxlbmd0aD90aGlzLmNsb3NlKGUpOnRoaXMuX3RyaWdnZXIoInNlYXJjaCIsZSkhPT0hMT90aGlzLl9zZWFyY2godCk6dm9pZCAwfSxfc2VhcmNoOmZ1bmN0aW9uKHQpe3RoaXMucGVuZGluZysrLHRoaXMuX2FkZENsYXNzKCJ1aS1hdXRvY29tcGxldGUtbG9hZGluZyIpLHRoaXMuY2FuY2VsU2VhcmNoPSExLHRoaXMuc291cmNlKHt0ZXJtOnR9LHRoaXMuX3Jlc3BvbnNlKCkpfSxfcmVzcG9uc2U6ZnVuY3Rpb24oKXt2YXIgZT0rK3RoaXMucmVxdWVzdEluZGV4O3JldHVybiB0LnByb3h5KGZ1bmN0aW9uKHQpe2U9PT10aGlzLnJlcXVlc3RJbmRleCYmdGhpcy5fX3Jlc3BvbnNlKHQpLHRoaXMucGVuZGluZy0tLHRoaXMucGVuZGluZ3x8dGhpcy5fcmVtb3ZlQ2xhc3MoInVpLWF1dG9jb21wbGV0ZS1sb2FkaW5nIil9LHRoaXMpfSxfX3Jlc3BvbnNlOmZ1bmN0aW9uKHQpe3QmJih0PXRoaXMuX25vcm1hbGl6ZSh0KSksdGhpcy5fdHJpZ2dlcigicmVzcG9uc2UiLG51bGwse2NvbnRlbnQ6dH0pLCF0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnQmJnQubGVuZ3RoJiYhdGhpcy5jYW5jZWxTZWFyY2g/KHRoaXMuX3N1Z2dlc3QodCksdGhpcy5fdHJpZ2dlcigib3BlbiIpKTp0aGlzLl9jbG9zZSgpfSxjbG9zZTpmdW5jdGlvbih0KXt0aGlzLmNhbmNlbFNlYXJjaD0hMCx0aGlzLl9jbG9zZSh0KX0sX2Nsb3NlOmZ1bmN0aW9uKHQpe3RoaXMuX29mZih0aGlzLmRvY3VtZW50LCJtb3VzZWRvd24iKSx0aGlzLm1lbnUuZWxlbWVudC5pcygiOnZpc2libGUiKSYmKHRoaXMubWVudS5lbGVtZW50LmhpZGUoKSx0aGlzLm1lbnUuYmx1cigpLHRoaXMuaXNOZXdNZW51PSEwLHRoaXMuX3RyaWdnZXIoImNsb3NlIix0KSl9LF9jaGFuZ2U6ZnVuY3Rpb24odCl7dGhpcy5wcmV2aW91cyE9PXRoaXMuX3ZhbHVlKCkmJnRoaXMuX3RyaWdnZXIoImNoYW5nZSIsdCx7aXRlbTp0aGlzLnNlbGVjdGVkSXRlbX0pfSxfbm9ybWFsaXplOmZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aCYmZVswXS5sYWJlbCYmZVswXS52YWx1ZT9lOnQubWFwKGUsZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP3tsYWJlbDplLHZhbHVlOmV9OnQuZXh0ZW5kKHt9LGUse2xhYmVsOmUubGFiZWx8fGUudmFsdWUsdmFsdWU6ZS52YWx1ZXx8ZS5sYWJlbH0pfSl9LF9zdWdnZXN0OmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXMubWVudS5lbGVtZW50LmVtcHR5KCk7dGhpcy5fcmVuZGVyTWVudShpLGUpLHRoaXMuaXNOZXdNZW51PSEwLHRoaXMubWVudS5yZWZyZXNoKCksaS5zaG93KCksdGhpcy5fcmVzaXplTWVudSgpLGkucG9zaXRpb24odC5leHRlbmQoe29mOnRoaXMuZWxlbWVudH0sdGhpcy5vcHRpb25zLnBvc2l0aW9uKSksdGhpcy5vcHRpb25zLmF1dG9Gb2N1cyYmdGhpcy5tZW51Lm5leHQoKSx0aGlzLl9vbih0aGlzLmRvY3VtZW50LHttb3VzZWRvd246Il9jbG9zZU9uQ2xpY2tPdXRzaWRlIn0pfSxfcmVzaXplTWVudTpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWVudS5lbGVtZW50O3Qub3V0ZXJXaWR0aChNYXRoLm1heCh0LndpZHRoKCIiKS5vdXRlcldpZHRoKCkrMSx0aGlzLmVsZW1lbnQub3V0ZXJXaWR0aCgpKSl9LF9yZW5kZXJNZW51OmZ1bmN0aW9uKGUsaSl7dmFyIHM9dGhpczt0LmVhY2goaSxmdW5jdGlvbih0LGkpe3MuX3JlbmRlckl0ZW1EYXRhKGUsaSl9KX0sX3JlbmRlckl0ZW1EYXRhOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3JlbmRlckl0ZW0odCxlKS5kYXRhKCJ1aS1hdXRvY29tcGxldGUtaXRlbSIsZSl9LF9yZW5kZXJJdGVtOmZ1bmN0aW9uKGUsaSl7cmV0dXJuIHQoIjxsaT4iKS5hcHBlbmQodCgiPGRpdj4iKS50ZXh0KGkubGFiZWwpKS5hcHBlbmRUbyhlKX0sX21vdmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5tZW51LmVsZW1lbnQuaXMoIjp2aXNpYmxlIik/dGhpcy5tZW51LmlzRmlyc3RJdGVtKCkmJi9ecHJldmlvdXMvLnRlc3QodCl8fHRoaXMubWVudS5pc0xhc3RJdGVtKCkmJi9ebmV4dC8udGVzdCh0KT8odGhpcy5pc011bHRpTGluZXx8dGhpcy5fdmFsdWUodGhpcy50ZXJtKSx0aGlzLm1lbnUuYmx1cigpLHZvaWQgMCk6KHRoaXMubWVudVt0XShlKSx2b2lkIDApOih0aGlzLnNlYXJjaChudWxsLGUpLHZvaWQgMCl9LHdpZGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lbnUuZWxlbWVudH0sX3ZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWVNZXRob2QuYXBwbHkodGhpcy5lbGVtZW50LGFyZ3VtZW50cyl9LF9rZXlFdmVudDpmdW5jdGlvbih0LGUpeyghdGhpcy5pc011bHRpTGluZXx8dGhpcy5tZW51LmVsZW1lbnQuaXMoIjp2aXNpYmxlIikpJiYodGhpcy5fbW92ZSh0LGUpLGUucHJldmVudERlZmF1bHQoKSl9LF9pc0NvbnRlbnRFZGl0YWJsZTpmdW5jdGlvbih0KXtpZighdC5sZW5ndGgpcmV0dXJuITE7dmFyIGU9dC5wcm9wKCJjb250ZW50RWRpdGFibGUiKTtyZXR1cm4iaW5oZXJpdCI9PT1lP3RoaXMuX2lzQ29udGVudEVkaXRhYmxlKHQucGFyZW50KCkpOiJ0cnVlIj09PWV9fSksdC5leHRlbmQodC51aS5hdXRvY29tcGxldGUse2VzY2FwZVJlZ2V4OmZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoL1tcLVxbXF17fSgpKis/LixcXFxeJHwjXHNdL2csIlxcJCYiKX0sZmlsdGVyOmZ1bmN0aW9uKGUsaSl7dmFyIHM9UmVnRXhwKHQudWkuYXV0b2NvbXBsZXRlLmVzY2FwZVJlZ2V4KGkpLCJpIik7cmV0dXJuIHQuZ3JlcChlLGZ1bmN0aW9uKHQpe3JldHVybiBzLnRlc3QodC5sYWJlbHx8dC52YWx1ZXx8dCl9KX19KSx0LndpZGdldCgidWkuYXV0b2NvbXBsZXRlIix0LnVpLmF1dG9jb21wbGV0ZSx7b3B0aW9uczp7bWVzc2FnZXM6e25vUmVzdWx0czoiTm8gc2VhcmNoIHJlc3VsdHMuIixyZXN1bHRzOmZ1bmN0aW9uKHQpe3JldHVybiB0Kyh0PjE/IiByZXN1bHRzIGFyZSI6IiByZXN1bHQgaXMiKSsiIGF2YWlsYWJsZSwgdXNlIHVwIGFuZCBkb3duIGFycm93IGtleXMgdG8gbmF2aWdhdGUuIn19fSxfX3Jlc3BvbnNlOmZ1bmN0aW9uKGUpe3ZhciBpO3RoaXMuX3N1cGVyQXBwbHkoYXJndW1lbnRzKSx0aGlzLm9wdGlvbnMuZGlzYWJsZWR8fHRoaXMuY2FuY2VsU2VhcmNofHwoaT1lJiZlLmxlbmd0aD90aGlzLm9wdGlvbnMubWVzc2FnZXMucmVzdWx0cyhlLmxlbmd0aCk6dGhpcy5vcHRpb25zLm1lc3NhZ2VzLm5vUmVzdWx0cyx0aGlzLmxpdmVSZWdpb24uY2hpbGRyZW4oKS5oaWRlKCksdCgiPGRpdj4iKS50ZXh0KGkpLmFwcGVuZFRvKHRoaXMubGl2ZVJlZ2lvbikpfX0pLHQudWkuYXV0b2NvbXBsZXRlLHQud2lkZ2V0KCJ1aS5jb250cm9sZ3JvdXAiLHt2ZXJzaW9uOiIxLjEyLjAtcmMuMiIsZGVmYXVsdEVsZW1lbnQ6IjxkaXY+IixvcHRpb25zOntkaXJlY3Rpb246Imhvcml6b250YWwiLGRpc2FibGVkOm51bGwsb25seVZpc2libGU6ITAsaXRlbXM6e2J1dHRvbjoiaW5wdXRbdHlwZT1idXR0b25dLCBpbnB1dFt0eXBlPXN1Ym1pdF0sIGlucHV0W3R5cGU9cmVzZXRdLCBidXR0b24sIGEiLGNvbnRyb2xncm91cExhYmVsOiIudWktY29udHJvbGdyb3VwLWxhYmVsIixjaGVja2JveHJhZGlvOiJpbnB1dFt0eXBlPSdjaGVja2JveCddLCBpbnB1dFt0eXBlPSdyYWRpbyddIixzZWxlY3RtZW51OiJzZWxlY3QiLHNwaW5uZXI6Ii51aS1zcGlubmVyLWlucHV0In19LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLl9lbmhhbmNlKCl9LF9lbmhhbmNlOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LmF0dHIoInJvbGUiLCJ0b29sYmFyIiksdGhpcy5yZWZyZXNoKCl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fY2FsbENoaWxkTWV0aG9kKCJkZXN0cm95IiksdGhpcy5jaGlsZFdpZGdldHMucmVtb3ZlRGF0YSgidWktY29udHJvbGdyb3VwLWRhdGEiKSx0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cigicm9sZSIpLHRoaXMub3B0aW9ucy5pdGVtcy5jb250cm9sZ3JvdXBMYWJlbCYmdGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zLmNvbnRyb2xncm91cExhYmVsKS5maW5kKCIudWktY29udHJvbGdyb3VwLWxhYmVsLWNvbnRlbnRzIikuY29udGVudHMoKS51bndyYXAoKX0sX2luaXRXaWRnZXRzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxpPVtdO3QuZWFjaCh0aGlzLm9wdGlvbnMuaXRlbXMsZnVuY3Rpb24ocyxuKXt2YXIgbyxhPXt9O3JldHVybiBuPyJjb250cm9sZ3JvdXBMYWJlbCI9PT1zPyhvPWUuZWxlbWVudC5maW5kKG4pLG8uZWFjaChmdW5jdGlvbigpe3QodGhpcykuY29udGVudHMoKS53cmFwQWxsKCI8c3BhbiBjbGFzcz0ndWktY29udHJvbGdyb3VwLWxhYmVsLWNvbnRlbnRzJz48L3NwYW4+Iil9KSxlLl9hZGRDbGFzcyhvLG51bGwsInVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1zdGF0ZS1kZWZhdWx0IiksaT1pLmNvbmNhdChvLmdldCgpKSx2b2lkIDApOih0LmZuW3NdJiYoZVsiXyIrcysiT3B0aW9ucyJdJiYoYT1lWyJfIitzKyJPcHRpb25zIl0oIm1pZGRsZSIpKSxlLmVsZW1lbnQuZmluZChuKVtzXShhKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKSxuPWVbc10oIndpZGdldCIpO3QuZGF0YShuWzBdLCJ1aS1jb250cm9sZ3JvdXAtZGF0YSIsZVtzXSgiaW5zdGFuY2UiKSksaS5wdXNoKG5bMF0pfSkpLHZvaWQgMCk6dm9pZCAwfSksdGhpcy5jaGlsZFdpZGdldHM9dCh0LnVuaXF1ZShpKSksdGhpcy5fYWRkQ2xhc3ModGhpcy5jaGlsZFdpZGdldHMsInVpLWNvbnRyb2xncm91cC1pdGVtIil9LF9jYWxsQ2hpbGRNZXRob2Q6ZnVuY3Rpb24oZSl7dGhpcy5jaGlsZFdpZGdldHMuZWFjaChmdW5jdGlvbigpe3ZhciBpPXQodGhpcykscz1pLmRhdGEoInVpLWNvbnRyb2xncm91cC1kYXRhIik7cyYmc1tlXSYmc1tlXSgpfSl9LF91cGRhdGVDb3JuZXJDbGFzczpmdW5jdGlvbih0LGUpe3ZhciBpPSJ1aS1jb3JuZXItdG9wIHVpLWNvcm5lci1ib3R0b20gdWktY29ybmVyLWxlZnQgdWktY29ybmVyLXJpZ2h0IixzPXRoaXMuX2J1aWxkU2ltcGxlT3B0aW9ucyhlLCJsYWJlbCIpLmNsYXNzZXMubGFiZWw7dGhpcy5fcmVtb3ZlQ2xhc3ModCxudWxsLGkpLHRoaXMuX2FkZENsYXNzKHQsbnVsbCxzKX0sX2J1aWxkU2ltcGxlT3B0aW9uczpmdW5jdGlvbih0LGUpe3ZhciBpPSJ2ZXJ0aWNhbCI9PT10aGlzLm9wdGlvbnMuZGlyZWN0aW9uLHM9e2NsYXNzZXM6e319O3JldHVybiBzLmNsYXNzZXNbZV09e21pZGRsZTpudWxsLGZpcnN0OiJ1aS1jb3JuZXItIisoaT8idG9wIjoibGVmdCIpLGxhc3Q6InVpLWNvcm5lci0iKyhpPyJib3R0b20iOiJyaWdodCIpfVt0XSxzfSxfc3Bpbm5lck9wdGlvbnM6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fYnVpbGRTaW1wbGVPcHRpb25zKHQsInVpLXNwaW5uZXIiKTtyZXR1cm4gZS5jbGFzc2VzWyJ1aS1zcGlubmVyLXVwIl09IiIsZS5jbGFzc2VzWyJ1aS1zcGlubmVyLWRvd24iXT0iIixlfSxfYnV0dG9uT3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYnVpbGRTaW1wbGVPcHRpb25zKHQsInVpLWJ1dHRvbiIpfSxfY2hlY2tib3hyYWRpb09wdGlvbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2J1aWxkU2ltcGxlT3B0aW9ucyh0LCJ1aS1jaGVja2JveHJhZGlvLWxhYmVsIil9LF9zZWxlY3RtZW51T3B0aW9uczpmdW5jdGlvbih0KXt2YXIgZT0idmVydGljYWwiPT09dGhpcy5vcHRpb25zLmRpcmVjdGlvbjtyZXR1cm57d2lkdGg6ZT8iYXV0byI6ITEsY2xhc3Nlczp7bWlkZGxlOnsidWktc2VsZWN0bWVudS1idXR0b24tb3BlbiI6bnVsbCwidWktc2VsZWN0bWVudS1idXR0b24tY2xvc2VkIjpudWxsfSxmaXJzdDp7InVpLXNlbGVjdG1lbnUtYnV0dG9uLW9wZW4iOiJ1aS1jb3JuZXItIisoZT8idG9wIjoidGwiKSwidWktc2VsZWN0bWVudS1idXR0b24tY2xvc2VkIjoidWktY29ybmVyLSIrKGU/InRvcCI6ImxlZnQiKX0sbGFzdDp7InVpLXNlbGVjdG1lbnUtYnV0dG9uLW9wZW4iOmU/bnVsbDoidWktY29ybmVyLXRyIiwidWktc2VsZWN0bWVudS1idXR0b24tY2xvc2VkIjoidWktY29ybmVyLSIrKGU/ImJvdHRvbSI6InJpZ2h0Iil9fVt0XX19LF9zZXRPcHRpb246ZnVuY3Rpb24odCxlKXtyZXR1cm4iZGlyZWN0aW9uIj09PXQmJnRoaXMuX3JlbW92ZUNsYXNzKCJ1aS1jb250cm9sZ3JvdXAtIit0aGlzLm9wdGlvbnMuZGlyZWN0aW9uKSx0aGlzLl9zdXBlcih0LGUpLCJkaXNhYmxlZCI9PT10Pyh0aGlzLl9jYWxsQ2hpbGRNZXRob2QoZT8iZGlzYWJsZSI6ImVuYWJsZSIpLHZvaWQgMCk6KHRoaXMucmVmcmVzaCgpLHZvaWQgMCl9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgZSxpPXRoaXM7dGhpcy5fYWRkQ2xhc3MoInVpLWNvbnRyb2xncm91cCB1aS1jb250cm9sZ3JvdXAtIit0aGlzLm9wdGlvbnMuZGlyZWN0aW9uKSwiaG9yaXpvbnRhbCI9PT10aGlzLm9wdGlvbnMuZGlyZWN0aW9uJiZ0aGlzLl9hZGRDbGFzcyhudWxsLCJ1aS1oZWxwZXItY2xlYXJmaXgiKSx0aGlzLl9pbml0V2lkZ2V0cygpLGU9dGhpcy5jaGlsZFdpZGdldHMsdGhpcy5vcHRpb25zLm9ubHlWaXNpYmxlJiYoZT1lLmZpbHRlcigiOnZpc2libGUiKSksZS5sZW5ndGgmJih0LmVhY2goWyJmaXJzdCIsImxhc3QiXSxmdW5jdGlvbih0LHMpe3ZhciBuPWVbc10oKS5kYXRhKCJ1aS1jb250cm9sZ3JvdXAtZGF0YSIpO24mJmlbIl8iK24ud2lkZ2V0TmFtZSsiT3B0aW9ucyJdP24uZWxlbWVudFtuLndpZGdldE5hbWVdKGlbIl8iK24ud2lkZ2V0TmFtZSsiT3B0aW9ucyJdKHMpKTppLl91cGRhdGVDb3JuZXJDbGFzcyhlW3NdKCkscyl9KSx0aGlzLl9jYWxsQ2hpbGRNZXRob2QoInJlZnJlc2giKSl9fSksdC53aWRnZXQoInVpLmNoZWNrYm94cmFkaW8iLFt0LnVpLmZvcm1SZXNldE1peGluLHt2ZXJzaW9uOiIxLjEyLjAtcmMuMiIsb3B0aW9uczp7ZGlzYWJsZWQ6bnVsbCxsYWJlbDpudWxsLGljb246ITAsY2xhc3Nlczp7InVpLWNoZWNrYm94cmFkaW8tbGFiZWwiOiJ1aS1jb3JuZXItYWxsIiwidWktY2hlY2tib3hyYWRpby1pY29uIjoidWktY29ybmVyLWFsbCJ9fSxfZ2V0Q3JlYXRlT3B0aW9uczpmdW5jdGlvbigpe3ZhciBlLGkscz10aGlzLG49dGhpcy5fc3VwZXIoKXx8e307cmV0dXJuIHRoaXMuX3JlYWRUeXBlKCksaT10aGlzLmVsZW1lbnQubGFiZWxzKCksdGhpcy5sYWJlbD10KGlbaS5sZW5ndGgtMV0pLHRoaXMubGFiZWwubGVuZ3RofHx0LmVycm9yKCJObyBsYWJlbCBmb3VuZCBmb3IgY2hlY2tib3hyYWRpbyB3aWRnZXQiKSx0aGlzLm9yaWdpbmFsTGFiZWw9IiIsdGhpcy5sYWJlbC5jb250ZW50cygpLm5vdCh0aGlzLmVsZW1lbnQpLmVhY2goZnVuY3Rpb24oKXtzLm9yaWdpbmFsTGFiZWwrPTM9PT10aGlzLm5vZGVUeXBlP3QodGhpcykudGV4dCgpOnRoaXMub3V0ZXJIVE1MfSksdGhpcy5vcmlnaW5hbExhYmVsJiYobi5sYWJlbD10aGlzLm9yaWdpbmFsTGFiZWwpLGU9dGhpcy5lbGVtZW50WzBdLmRpc2FibGVkLG51bGwhPWUmJihuLmRpc2FibGVkPWUpLG59LF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsZW1lbnRbMF0uY2hlY2tlZDt0aGlzLl9iaW5kRm9ybVJlc2V0SGFuZGxlcigpLG51bGw9PXRoaXMub3B0aW9ucy5kaXNhYmxlZCYmKHRoaXMub3B0aW9ucy5kaXNhYmxlZD10aGlzLmVsZW1lbnRbMF0uZGlzYWJsZWQpLHRoaXMuX3NldE9wdGlvbigiZGlzYWJsZWQiLHRoaXMub3B0aW9ucy5kaXNhYmxlZCksdGhpcy5fYWRkQ2xhc3MoInVpLWNoZWNrYm94cmFkaW8iLCJ1aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGUiKSx0aGlzLl9hZGRDbGFzcyh0aGlzLmxhYmVsLCJ1aS1jaGVja2JveHJhZGlvLWxhYmVsIiwidWktYnV0dG9uIHVpLXdpZGdldCIpLCJyYWRpbyI9PT10aGlzLnR5cGUmJnRoaXMuX2FkZENsYXNzKHRoaXMubGFiZWwsInVpLWNoZWNrYm94cmFkaW8tcmFkaW8tbGFiZWwiKSx0aGlzLm9wdGlvbnMubGFiZWwmJnRoaXMub3B0aW9ucy5sYWJlbCE9PXRoaXMub3JpZ2luYWxMYWJlbD90aGlzLl91cGRhdGVMYWJlbCgpOnRoaXMub3JpZ2luYWxMYWJlbCYmKHRoaXMub3B0aW9ucy5sYWJlbD10aGlzLm9yaWdpbmFsTGFiZWwpLHRoaXMuX2VuaGFuY2UoKSx0JiYodGhpcy5fYWRkQ2xhc3ModGhpcy5sYWJlbCwidWktY2hlY2tib3hyYWRpby1jaGVja2VkIiwidWktc3RhdGUtYWN0aXZlIiksdGhpcy5pY29uJiZ0aGlzLl9hZGRDbGFzcyh0aGlzLmljb24sbnVsbCwidWktc3RhdGUtaG92ZXIiKSksdGhpcy5fb24oe2NoYW5nZToiX3RvZ2dsZUNsYXNzZXMiLGZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5fYWRkQ2xhc3ModGhpcy5sYWJlbCxudWxsLCJ1aS1zdGF0ZS1mb2N1cyB1aS12aXN1YWwtZm9jdXMiKX0sYmx1cjpmdW5jdGlvbigpe3RoaXMuX3JlbW92ZUNsYXNzKHRoaXMubGFiZWwsbnVsbCwidWktc3RhdGUtZm9jdXMgdWktdmlzdWFsLWZvY3VzIil9fSl9LF9yZWFkVHlwZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZWxlbWVudFswXS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3RoaXMudHlwZT10aGlzLmVsZW1lbnRbMF0udHlwZSwiaW5wdXQiPT09ZSYmL3JhZGlvfGNoZWNrYm94Ly50ZXN0KHRoaXMudHlwZSl8fHQuZXJyb3IoIkNhbid0IGNyZWF0ZSBjaGVja2JveHJhZGlvIG9uIGVsZW1lbnQubm9kZU5hbWU9IitlKyIgYW5kIGVsZW1lbnQudHlwZT0iK3RoaXMudHlwZSl9LF9lbmhhbmNlOmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlSWNvbih0aGlzLmVsZW1lbnRbMF0uY2hlY2tlZCl9LHdpZGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxhYmVsfSxfZ2V0UmFkaW9Hcm91cDpmdW5jdGlvbigpe3ZhciBlLGk9dGhpcy5lbGVtZW50WzBdLm5hbWUscz0iaW5wdXRbbmFtZT0nIit0LnVpLmVzY2FwZVNlbGVjdG9yKGkpKyInXSI7cmV0dXJuIGk/KGU9dGhpcy5mb3JtLmxlbmd0aD90KHRoaXMuZm9ybVswXS5lbGVtZW50cykuZmlsdGVyKHMpOnQocykuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10KHRoaXMpLmZvcm0oKS5sZW5ndGh9KSxlLm5vdCh0aGlzLmVsZW1lbnQpKTp0KFtdKX0sX3RvZ2dsZUNsYXNzZXM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmVsZW1lbnRbMF0uY2hlY2tlZDt0aGlzLl90b2dnbGVDbGFzcyh0aGlzLmxhYmVsLCJ1aS1jaGVja2JveHJhZGlvLWNoZWNrZWQiLCJ1aS1zdGF0ZS1hY3RpdmUiLGUpLHRoaXMub3B0aW9ucy5pY29uJiYiY2hlY2tib3giPT09dGhpcy50eXBlJiZ0aGlzLl90b2dnbGVDbGFzcyh0aGlzLmljb24sbnVsbCwidWktaWNvbi1jaGVjayB1aS1zdGF0ZS1oaWdobGlnaHQiLGUpLl90b2dnbGVDbGFzcyh0aGlzLmljb24sbnVsbCwidWktaWNvbi1ibGFuayIsIWUpLCJyYWRpbyI9PT10aGlzLnR5cGUmJnRoaXMuX2dldFJhZGlvR3JvdXAoKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKS5jaGVja2JveHJhZGlvKCJpbnN0YW5jZSIpO2UmJmUuX3JlbW92ZUNsYXNzKGUubGFiZWwsInVpLWNoZWNrYm94cmFkaW8tY2hlY2tlZCIsInVpLXN0YXRlLWFjdGl2ZSIpfSl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fdW5iaW5kRm9ybVJlc2V0SGFuZGxlcigpLHRoaXMuaWNvbiYmKHRoaXMuaWNvbi5yZW1vdmUoKSx0aGlzLmljb25TcGFjZS5yZW1vdmUoKSl9LF9zZXRPcHRpb246ZnVuY3Rpb24odCxlKXtyZXR1cm4ibGFiZWwiIT09dHx8ZT8odGhpcy5fc3VwZXIodCxlKSwiZGlzYWJsZWQiPT09dD8odGhpcy5fdG9nZ2xlQ2xhc3ModGhpcy5sYWJlbCxudWxsLCJ1aS1zdGF0ZS1kaXNhYmxlZCIsZSksdGhpcy5lbGVtZW50WzBdLmRpc2FibGVkPWUsdm9pZCAwKToodGhpcy5yZWZyZXNoKCksdm9pZCAwKSk6dm9pZCAwfSxfdXBkYXRlSWNvbjpmdW5jdGlvbihlKXt2YXIgaT0idWktaWNvbiB1aS1pY29uLWJhY2tncm91bmQgIjt0aGlzLm9wdGlvbnMuaWNvbj8odGhpcy5pY29ufHwodGhpcy5pY29uPXQoIjxzcGFuPiIpLHRoaXMuaWNvblNwYWNlPXQoIjxzcGFuPiA8L3NwYW4+IiksdGhpcy5fYWRkQ2xhc3ModGhpcy5pY29uU3BhY2UsInVpLWNoZWNrYm94cmFkaW8taWNvbi1zcGFjZSIpKSwiY2hlY2tib3giPT09dGhpcy50eXBlPyhpKz1lPyJ1aS1pY29uLWNoZWNrIHVpLXN0YXRlLWhpZ2hsaWdodCI6InVpLWljb24tYmxhbmsiLHRoaXMuX3JlbW92ZUNsYXNzKHRoaXMuaWNvbixudWxsLGU/InVpLWljb24tYmxhbmsiOiJ1aS1pY29uLWNoZWNrIikpOmkrPSJ1aS1pY29uLWJsYW5rIix0aGlzLl9hZGRDbGFzcyh0aGlzLmljb24sInVpLWNoZWNrYm94cmFkaW8taWNvbiIsaSksZXx8dGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5pY29uLG51bGwsInVpLWljb24tY2hlY2sgdWktc3RhdGUtaGlnaGxpZ2h0IiksdGhpcy5pY29uLnByZXBlbmRUbyh0aGlzLmxhYmVsKS5hZnRlcih0aGlzLmljb25TcGFjZSkpOnZvaWQgMCE9PXRoaXMuaWNvbiYmKHRoaXMuaWNvbi5yZW1vdmUoKSx0aGlzLmljb25TcGFjZS5yZW1vdmUoKSxkZWxldGUgdGhpcy5pY29uKX0sX3VwZGF0ZUxhYmVsOmZ1bmN0aW9uKCl7dGhpcy5sYWJlbC5jb250ZW50cygpLm5vdCh0aGlzLmVsZW1lbnQuYWRkKHRoaXMuaWNvbikuYWRkKHRoaXMuaWNvblNwYWNlKSkucmVtb3ZlKCksdGhpcy5sYWJlbC5hcHBlbmQodGhpcy5vcHRpb25zLmxhYmVsKX0scmVmcmVzaDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZWxlbWVudFswXS5jaGVja2VkLGU9dGhpcy5lbGVtZW50WzBdLmRpc2FibGVkO3RoaXMuX3VwZGF0ZUljb24odCksdGhpcy5fdG9nZ2xlQ2xhc3ModGhpcy5sYWJlbCwidWktY2hlY2tib3hyYWRpby1jaGVja2VkIiwidWktc3RhdGUtYWN0aXZlIix0KSxudWxsIT09dGhpcy5vcHRpb25zLmxhYmVsJiZ0aGlzLl91cGRhdGVMYWJlbCgpLGUhPT10aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMuX3NldE9wdGlvbnMoe2Rpc2FibGVkOmV9KX19XSksdC51aS5jaGVja2JveHJhZGlvLHQud2lkZ2V0KCJ1aS5idXR0b24iLHt2ZXJzaW9uOiIxLjEyLjAtcmMuMiIsZGVmYXVsdEVsZW1lbnQ6IjxidXR0b24+IixvcHRpb25zOntjbGFzc2VzOnsidWktYnV0dG9uIjoidWktY29ybmVyLWFsbCJ9LGRpc2FibGVkOm51bGwsaWNvbjpudWxsLGljb25Qb3NpdGlvbjoiYmVnaW5uaW5nIixsYWJlbDpudWxsLHNob3dMYWJlbDohMH0sX2dldENyZWF0ZU9wdGlvbnM6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuX3N1cGVyKCl8fHt9O3JldHVybiB0aGlzLmlzSW5wdXQ9dGhpcy5lbGVtZW50LmlzKCJpbnB1dCIpLHQ9dGhpcy5lbGVtZW50WzBdLmRpc2FibGVkLG51bGwhPXQmJihlLmRpc2FibGVkPXQpLHRoaXMub3JpZ2luYWxMYWJlbD10aGlzLmlzSW5wdXQ/dGhpcy5lbGVtZW50LnZhbCgpOnRoaXMuZWxlbWVudC5odG1sKCksdGhpcy5vcmlnaW5hbExhYmVsJiYoZS5sYWJlbD10aGlzLm9yaWdpbmFsTGFiZWwpLGV9LF9jcmVhdGU6ZnVuY3Rpb24oKXshdGhpcy5vcHRpb24uc2hvd0xhYmVsJiF0aGlzLm9wdGlvbnMuaWNvbiYmKHRoaXMub3B0aW9ucy5zaG93TGFiZWw9ITApLG51bGw9PXRoaXMub3B0aW9ucy5kaXNhYmxlZCYmKHRoaXMub3B0aW9ucy5kaXNhYmxlZD10aGlzLmVsZW1lbnRbMF0uZGlzYWJsZWR8fCExKSx0aGlzLmhhc1RpdGxlPSEhdGhpcy5lbGVtZW50LmF0dHIoInRpdGxlIiksdGhpcy5vcHRpb25zLmxhYmVsJiZ0aGlzLm9wdGlvbnMubGFiZWwhPT10aGlzLm9yaWdpbmFsTGFiZWwmJih0aGlzLmlzSW5wdXQ/dGhpcy5lbGVtZW50LnZhbCh0aGlzLm9wdGlvbnMubGFiZWwpOnRoaXMuZWxlbWVudC5odG1sKHRoaXMub3B0aW9ucy5sYWJlbCkpLHRoaXMuX2FkZENsYXNzKCJ1aS1idXR0b24iLCJ1aS13aWRnZXQiKSx0aGlzLl9zZXRPcHRpb24oImRpc2FibGVkIix0aGlzLm9wdGlvbnMuZGlzYWJsZWQpLHRoaXMuX2VuaGFuY2UoKSx0aGlzLmVsZW1lbnQuaXMoImEiKSYmdGhpcy5fb24oe2tleXVwOmZ1bmN0aW9uKGUpe2Uua2V5Q29kZT09PXQudWkua2V5Q29kZS5TUEFDRSYmKGUucHJldmVudERlZmF1bHQoKSx0aGlzLmVsZW1lbnRbMF0uY2xpY2s/dGhpcy5lbGVtZW50WzBdLmNsaWNrKCk6dGhpcy5lbGVtZW50LnRyaWdnZXIoImNsaWNrIikpfX0pfSxfZW5oYW5jZTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5pcygiYnV0dG9uIil8fHRoaXMuZWxlbWVudC5hdHRyKCJyb2xlIiwiYnV0dG9uIiksdGhpcy5vcHRpb25zLmljb24mJih0aGlzLl91cGRhdGVJY29uKCJpY29uIix0aGlzLm9wdGlvbnMuaWNvbiksdGhpcy5fdXBkYXRlVG9vbHRpcCgpKX0sX3VwZGF0ZVRvb2x0aXA6ZnVuY3Rpb24oKXt0aGlzLnRpdGxlPXRoaXMuZWxlbWVudC5hdHRyKCJ0aXRsZSIpLHRoaXMub3B0aW9ucy5zaG93TGFiZWx8fHRoaXMudGl0bGV8fHRoaXMuZWxlbWVudC5hdHRyKCJ0aXRsZSIsdGhpcy5vcHRpb25zLmxhYmVsKX0sX3VwZGF0ZUljb246ZnVuY3Rpb24oZSxpKXt2YXIgcz0iaWNvblBvc2l0aW9uIiE9PWUsbj1zP3RoaXMub3B0aW9ucy5pY29uUG9zaXRpb246aSxvPSJ0b3AiPT09bnx8ImJvdHRvbSI9PT1uO3RoaXMuaWNvbj9zJiZ0aGlzLl9yZW1vdmVDbGFzcyh0aGlzLmljb24sbnVsbCx0aGlzLm9wdGlvbnMuaWNvbik6KHRoaXMuaWNvbj10KCI8c3Bhbj4iKSx0aGlzLl9hZGRDbGFzcyh0aGlzLmljb24sInVpLWJ1dHRvbi1pY29uIiwidWktaWNvbiIpLHRoaXMub3B0aW9ucy5zaG93TGFiZWx8fHRoaXMuX2FkZENsYXNzKCJ1aS1idXR0b24taWNvbi1vbmx5IikpLHMmJnRoaXMuX2FkZENsYXNzKHRoaXMuaWNvbixudWxsLGkpLHRoaXMuX2F0dGFjaEljb24obiksbz8odGhpcy5fYWRkQ2xhc3ModGhpcy5pY29uLG51bGwsInVpLXdpZGdldC1pY29uLWJsb2NrIiksdGhpcy5pY29uU3BhY2UmJnRoaXMuaWNvblNwYWNlLnJlbW92ZSgpKToodGhpcy5pY29uU3BhY2V8fCh0aGlzLmljb25TcGFjZT10KCI8c3Bhbj4gPC9zcGFuPiIpLHRoaXMuX2FkZENsYXNzKHRoaXMuaWNvblNwYWNlLCJ1aS1idXR0b24taWNvbi1zcGFjZSIpKSx0aGlzLl9yZW1vdmVDbGFzcyh0aGlzLmljb24sbnVsbCwidWktd2lnZXQtaWNvbi1ibG9jayIpLHRoaXMuX2F0dGFjaEljb25TcGFjZShuKSl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoInJvbGUiKSx0aGlzLmljb24mJnRoaXMuaWNvbi5yZW1vdmUoKSx0aGlzLmljb25TcGFjZSYmdGhpcy5pY29uU3BhY2UucmVtb3ZlKCksdGhpcy5oYXNUaXRsZXx8dGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoInRpdGxlIil9LF9hdHRhY2hJY29uU3BhY2U6ZnVuY3Rpb24odCl7dGhpcy5pY29uWy9eKD86ZW5kfGJvdHRvbSkvLnRlc3QodCk/ImJlZm9yZSI6ImFmdGVyIl0odGhpcy5pY29uU3BhY2UpfSxfYXR0YWNoSWNvbjpmdW5jdGlvbih0KXt0aGlzLmVsZW1lbnRbL14oPzplbmR8Ym90dG9tKS8udGVzdCh0KT8iYXBwZW5kIjoicHJlcGVuZCJdKHRoaXMuaWNvbil9LF9zZXRPcHRpb25zOmZ1bmN0aW9uKHQpe3ZhciBlPXZvaWQgMD09PXQuc2hvd0xhYmVsP3RoaXMub3B0aW9ucy5zaG93TGFiZWw6dC5zaG93TGFiZWwsaT12b2lkIDA9PT10Lmljb24/dGhpcy5vcHRpb25zLmljb246dC5pY29uO2V8fGl8fCh0LnNob3dMYWJlbD0hMCksdGhpcy5fc3VwZXIodCl9LF9zZXRPcHRpb246ZnVuY3Rpb24odCxlKXsiaWNvbiI9PT10JiYoZT90aGlzLl91cGRhdGVJY29uKHQsZSk6dGhpcy5pY29uJiYodGhpcy5pY29uLnJlbW92ZSgpLHRoaXMuaWNvblNwYWNlJiZ0aGlzLmljb25TcGFjZS5yZW1vdmUoKSkpLCJpY29uUG9zaXRpb24iPT09dCYmdGhpcy5fdXBkYXRlSWNvbih0LGUpLCJzaG93TGFiZWwiPT09dCYmKHRoaXMuX3RvZ2dsZUNsYXNzKCJ1aS1idXR0b24taWNvbi1vbmx5IixudWxsLCFlKSx0aGlzLl91cGRhdGVUb29sdGlwKCkpLCJsYWJlbCI9PT10JiYodGhpcy5pc0lucHV0P3RoaXMuZWxlbWVudC52YWwoZSk6KHRoaXMuZWxlbWVudC5odG1sKGUpLHRoaXMuaWNvbiYmKHRoaXMuX2F0dGFjaEljb24odGhpcy5vcHRpb25zLmljb25Qb3NpdGlvbiksdGhpcy5fYXR0YWNoSWNvblNwYWNlKHRoaXMub3B0aW9ucy5pY29uUG9zaXRpb24pKSkpLHRoaXMuX3N1cGVyKHQsZSksImRpc2FibGVkIj09PXQmJih0aGlzLl90b2dnbGVDbGFzcyhudWxsLCJ1aS1zdGF0ZS1kaXNhYmxlZCIsZSksdGhpcy5lbGVtZW50WzBdLmRpc2FibGVkPWUsZSYmdGhpcy5lbGVtZW50LmJsdXIoKSl9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsZW1lbnQuaXMoImlucHV0LCBidXR0b24iKT90aGlzLmVsZW1lbnRbMF0uZGlzYWJsZWQ6dGhpcy5lbGVtZW50Lmhhc0NsYXNzKCJ1aS1idXR0b24tZGlzYWJsZWQiKTt0IT09dGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLl9zZXRPcHRpb25zKHtkaXNhYmxlZDp0fSksdGhpcy5fdXBkYXRlVG9vbHRpcCgpfX0pLHQudWlCYWNrQ29tcGF0IT09ITEmJih0LndpZGdldCgidWkuYnV0dG9uIix0LnVpLmJ1dHRvbix7b3B0aW9uczp7dGV4dDohMCxpY29uczp7cHJpbWFyeTpudWxsLHNlY29uZGFyeTpudWxsfX0sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5zaG93TGFiZWwmJiF0aGlzLm9wdGlvbnMudGV4dCYmKHRoaXMub3B0aW9ucy5zaG93TGFiZWw9dGhpcy5vcHRpb25zLnRleHQpLCF0aGlzLm9wdGlvbnMuc2hvd0xhYmVsJiZ0aGlzLm9wdGlvbnMudGV4dCYmKHRoaXMub3B0aW9ucy50ZXh0PXRoaXMub3B0aW9ucy5zaG93TGFiZWwpLHRoaXMub3B0aW9ucy5pY29ufHwhdGhpcy5vcHRpb25zLmljb25zLnByaW1hcnkmJiF0aGlzLm9wdGlvbnMuaWNvbnMuc2Vjb25kYXJ5P3RoaXMub3B0aW9ucy5pY29uJiYodGhpcy5vcHRpb25zLmljb25zLnByaW1hcnk9dGhpcy5vcHRpb25zLmljb24pOnRoaXMub3B0aW9ucy5pY29ucy5wcmltYXJ5P3RoaXMub3B0aW9ucy5pY29uPXRoaXMub3B0aW9ucy5pY29ucy5wcmltYXJ5Oih0aGlzLm9wdGlvbnMuaWNvbj10aGlzLm9wdGlvbnMuaWNvbnMuc2Vjb25kYXJ5LHRoaXMub3B0aW9ucy5pY29uUG9zaXRpb249ImVuZCIpLHRoaXMuX3N1cGVyKCl9LF9zZXRPcHRpb246ZnVuY3Rpb24odCxlKXtyZXR1cm4idGV4dCI9PT10Pyh0aGlzLl9zdXBlcigic2hvd0xhYmVsIixlKSx2b2lkIDApOigic2hvd0xhYmVsIj09PXQmJih0aGlzLm9wdGlvbnMudGV4dD1lKSwiaWNvbiI9PT10JiYodGhpcy5vcHRpb25zLmljb25zLnByaW1hcnk9ZSksImljb25zIj09PXQmJihlLnByaW1hcnk/KHRoaXMuX3N1cGVyKCJpY29uIixlLnByaW1hcnkpLHRoaXMuX3N1cGVyKCJpY29uUG9zaXRpb24iLCJiZWdpbm5pbmciKSk6ZS5zZWNvbmRhcnkmJih0aGlzLl9zdXBlcigiaWNvbiIsZS5zZWNvbmRhcnkpLHRoaXMuX3N1cGVyKCJpY29uUG9zaXRpb24iLCJlbmQiKSkpLHRoaXMuX3N1cGVyQXBwbHkoYXJndW1lbnRzKSx2b2lkIDApfX0pLHQuZm4uYnV0dG9uPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiF0aGlzLmxlbmd0aHx8dGhpcy5sZW5ndGgmJiJJTlBVVCIhPT10aGlzWzBdLnRhZ05hbWV8fHRoaXMubGVuZ3RoJiYiSU5QVVQiPT09dGhpc1swXS50YWdOYW1lJiYiY2hlY2tib3giIT09dGhpcy5hdHRyKCJ0eXBlIikmJiJyYWRpbyIhPT10aGlzLmF0dHIoInR5cGUiKT9lLmFwcGx5KHRoaXMsYXJndW1lbnRzKToodC51aS5jaGVja2JveHJhZGlvfHx0LmVycm9yKCJDaGVja2JveHJhZGlvIHdpZGdldCBtaXNzaW5nIiksMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5jaGVja2JveHJhZGlvKHtpY29uOiExfSk6dGhpcy5jaGVja2JveHJhZGlvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fSh0LmZuLmJ1dHRvbiksdC5mbi5idXR0b25zZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdC51aS5jb250cm9sZ3JvdXB8fHQuZXJyb3IoIkNvbnRyb2xncm91cCB3aWRnZXQgbWlzc2luZyIpLCJvcHRpb24iPT09YXJndW1lbnRzWzBdJiYiaXRlbXMiPT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMl0/dGhpcy5jb250cm9sZ3JvdXAuYXBwbHkodGhpcyxbYXJndW1lbnRzWzBdLCJpdGVtcy5idXR0b24iLGFyZ3VtZW50c1syXV0pOiJvcHRpb24iPT09YXJndW1lbnRzWzBdJiYiaXRlbXMiPT09YXJndW1lbnRzWzFdP3RoaXMuY29udHJvbGdyb3VwLmFwcGx5KHRoaXMsW2FyZ3VtZW50c1swXSwiaXRlbXMuYnV0dG9uIl0pOigib2JqZWN0Ij09dHlwZW9mIGFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLml0ZW1zJiYoYXJndW1lbnRzWzBdLml0ZW1zPXtidXR0b246YXJndW1lbnRzWzBdLml0ZW1zfSksdGhpcy5jb250cm9sZ3JvdXAuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pLHQudWkuYnV0dG9uLHQuZXh0ZW5kKHQudWkse2RhdGVwaWNrZXI6e3ZlcnNpb246IjEuMTIuMC1yYy4yIn19KTt2YXIgZzt0LmV4dGVuZChzLnByb3RvdHlwZSx7bWFya2VyQ2xhc3NOYW1lOiJoYXNEYXRlcGlja2VyIixtYXhSb3dzOjQsX3dpZGdldERhdGVwaWNrZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kcERpdn0sc2V0RGVmYXVsdHM6ZnVuY3Rpb24odCl7cmV0dXJuIGEodGhpcy5fZGVmYXVsdHMsdHx8e30pLHRoaXN9LF9hdHRhY2hEYXRlcGlja2VyOmZ1bmN0aW9uKGUsaSl7dmFyIHMsbixvO3M9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLG49ImRpdiI9PT1zfHwic3BhbiI9PT1zLGUuaWR8fCh0aGlzLnV1aWQrPTEsZS5pZD0iZHAiK3RoaXMudXVpZCksbz10aGlzLl9uZXdJbnN0KHQoZSksbiksby5zZXR0aW5ncz10LmV4dGVuZCh7fSxpfHx7fSksImlucHV0Ij09PXM/dGhpcy5fY29ubmVjdERhdGVwaWNrZXIoZSxvKTpuJiZ0aGlzLl9pbmxpbmVEYXRlcGlja2VyKGUsbyl9LF9uZXdJbnN0OmZ1bmN0aW9uKGUsaSl7dmFyIHM9ZVswXS5pZC5yZXBsYWNlKC8oW15BLVphLXowLTlfXC1dKS9nLCJcXFxcJDEiKTtyZXR1cm57aWQ6cyxpbnB1dDplLHNlbGVjdGVkRGF5OjAsc2VsZWN0ZWRNb250aDowLHNlbGVjdGVkWWVhcjowLGRyYXdNb250aDowLGRyYXdZZWFyOjAsaW5saW5lOmksZHBEaXY6aT9uKHQoIjxkaXYgY2xhc3M9JyIrdGhpcy5faW5saW5lQ2xhc3MrIiB1aS1kYXRlcGlja2VyIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1oZWxwZXItY2xlYXJmaXggdWktY29ybmVyLWFsbCc+PC9kaXY+IikpOnRoaXMuZHBEaXZ9fSxfY29ubmVjdERhdGVwaWNrZXI6ZnVuY3Rpb24oZSxpKXt2YXIgcz10KGUpO2kuYXBwZW5kPXQoW10pLGkudHJpZ2dlcj10KFtdKSxzLmhhc0NsYXNzKHRoaXMubWFya2VyQ2xhc3NOYW1lKXx8KHRoaXMuX2F0dGFjaG1lbnRzKHMsaSkscy5hZGRDbGFzcyh0aGlzLm1hcmtlckNsYXNzTmFtZSkub24oImtleWRvd24iLHRoaXMuX2RvS2V5RG93bikub24oImtleXByZXNzIix0aGlzLl9kb0tleVByZXNzKS5vbigia2V5dXAiLHRoaXMuX2RvS2V5VXApLHRoaXMuX2F1dG9TaXplKGkpLHQuZGF0YShlLCJkYXRlcGlja2VyIixpKSxpLnNldHRpbmdzLmRpc2FibGVkJiZ0aGlzLl9kaXNhYmxlRGF0ZXBpY2tlcihlKSl9LF9hdHRhY2htZW50czpmdW5jdGlvbihlLGkpe3ZhciBzLG4sbyxhPXRoaXMuX2dldChpLCJhcHBlbmRUZXh0Iikscj10aGlzLl9nZXQoaSwiaXNSVEwiKTtpLmFwcGVuZCYmaS5hcHBlbmQucmVtb3ZlKCksYSYmKGkuYXBwZW5kPXQoIjxzcGFuIGNsYXNzPSciK3RoaXMuX2FwcGVuZENsYXNzKyInPiIrYSsiPC9zcGFuPiIpLGVbcj8iYmVmb3JlIjoiYWZ0ZXIiXShpLmFwcGVuZCkpLGUub2ZmKCJmb2N1cyIsdGhpcy5fc2hvd0RhdGVwaWNrZXIpLGkudHJpZ2dlciYmaS50cmlnZ2VyLnJlbW92ZSgpLHM9dGhpcy5fZ2V0KGksInNob3dPbiIpLCgiZm9jdXMiPT09c3x8ImJvdGgiPT09cykmJmUub24oImZvY3VzIix0aGlzLl9zaG93RGF0ZXBpY2tlciksKCJidXR0b24iPT09c3x8ImJvdGgiPT09cykmJihuPXRoaXMuX2dldChpLCJidXR0b25UZXh0Iiksbz10aGlzLl9nZXQoaSwiYnV0dG9uSW1hZ2UiKSxpLnRyaWdnZXI9dCh0aGlzLl9nZXQoaSwiYnV0dG9uSW1hZ2VPbmx5Iik/dCgiPGltZy8+IikuYWRkQ2xhc3ModGhpcy5fdHJpZ2dlckNsYXNzKS5hdHRyKHtzcmM6byxhbHQ6bix0aXRsZTpufSk6dCgiPGJ1dHRvbiB0eXBlPSdidXR0b24nPjwvYnV0dG9uPiIpLmFkZENsYXNzKHRoaXMuX3RyaWdnZXJDbGFzcykuaHRtbChvP3QoIjxpbWcvPiIpLmF0dHIoe3NyYzpvLGFsdDpuLHRpdGxlOm59KTpuKSksZVtyPyJiZWZvcmUiOiJhZnRlciJdKGkudHJpZ2dlciksaS50cmlnZ2VyLm9uKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gdC5kYXRlcGlja2VyLl9kYXRlcGlja2VyU2hvd2luZyYmdC5kYXRlcGlja2VyLl9sYXN0SW5wdXQ9PT1lWzBdP3QuZGF0ZXBpY2tlci5faGlkZURhdGVwaWNrZXIoKTp0LmRhdGVwaWNrZXIuX2RhdGVwaWNrZXJTaG93aW5nJiZ0LmRhdGVwaWNrZXIuX2xhc3RJbnB1dCE9PWVbMF0/KHQuZGF0ZXBpY2tlci5faGlkZURhdGVwaWNrZXIoKSx0LmRhdGVwaWNrZXIuX3Nob3dEYXRlcGlja2VyKGVbMF0pKTp0LmRhdGVwaWNrZXIuX3Nob3dEYXRlcGlja2VyKGVbMF0pLCExfSkpfSxfYXV0b1NpemU6ZnVuY3Rpb24odCl7aWYodGhpcy5fZ2V0KHQsImF1dG9TaXplIikmJiF0LmlubGluZSl7dmFyIGUsaSxzLG4sbz1uZXcgRGF0ZSgyMDA5LDExLDIwKSxhPXRoaXMuX2dldCh0LCJkYXRlRm9ybWF0Iik7YS5tYXRjaCgvW0RNXS8pJiYoZT1mdW5jdGlvbih0KXtmb3IoaT0wLHM9MCxuPTA7dC5sZW5ndGg+bjtuKyspdFtuXS5sZW5ndGg+aSYmKGk9dFtuXS5sZW5ndGgscz1uKTtyZXR1cm4gc30sby5zZXRNb250aChlKHRoaXMuX2dldCh0LGEubWF0Y2goL01NLyk/Im1vbnRoTmFtZXMiOiJtb250aE5hbWVzU2hvcnQiKSkpLG8uc2V0RGF0ZShlKHRoaXMuX2dldCh0LGEubWF0Y2goL0RELyk/ImRheU5hbWVzIjoiZGF5TmFtZXNTaG9ydCIpKSsyMC1vLmdldERheSgpKSksdC5pbnB1dC5hdHRyKCJzaXplIix0aGlzLl9mb3JtYXREYXRlKHQsbykubGVuZ3RoKX19LF9pbmxpbmVEYXRlcGlja2VyOmZ1bmN0aW9uKGUsaSl7dmFyIHM9dChlKTtzLmhhc0NsYXNzKHRoaXMubWFya2VyQ2xhc3NOYW1lKXx8KHMuYWRkQ2xhc3ModGhpcy5tYXJrZXJDbGFzc05hbWUpLmFwcGVuZChpLmRwRGl2KSx0LmRhdGEoZSwiZGF0ZXBpY2tlciIsaSksdGhpcy5fc2V0RGF0ZShpLHRoaXMuX2dldERlZmF1bHREYXRlKGkpLCEwKSx0aGlzLl91cGRhdGVEYXRlcGlja2VyKGkpLHRoaXMuX3VwZGF0ZUFsdGVybmF0ZShpKSxpLnNldHRpbmdzLmRpc2FibGVkJiZ0aGlzLl9kaXNhYmxlRGF0ZXBpY2tlcihlKSxpLmRwRGl2LmNzcygiZGlzcGxheSIsImJsb2NrIikpfSxfZGlhbG9nRGF0ZXBpY2tlcjpmdW5jdGlvbihlLGkscyxuLG8pe3ZhciByLGgsbCxjLHUsZD10aGlzLl9kaWFsb2dJbnN0O3JldHVybiBkfHwodGhpcy51dWlkKz0xLHI9ImRwIit0aGlzLnV1aWQsdGhpcy5fZGlhbG9nSW5wdXQ9dCgiPGlucHV0IHR5cGU9J3RleHQnIGlkPSciK3IrIicgc3R5bGU9J3Bvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAtMTAwcHg7IHdpZHRoOiAwcHg7Jy8+IiksdGhpcy5fZGlhbG9nSW5wdXQub24oImtleWRvd24iLHRoaXMuX2RvS2V5RG93biksdCgiYm9keSIpLmFwcGVuZCh0aGlzLl9kaWFsb2dJbnB1dCksZD10aGlzLl9kaWFsb2dJbnN0PXRoaXMuX25ld0luc3QodGhpcy5fZGlhbG9nSW5wdXQsITEpLGQuc2V0dGluZ3M9e30sdC5kYXRhKHRoaXMuX2RpYWxvZ0lucHV0WzBdLCJkYXRlcGlja2VyIixkKSksYShkLnNldHRpbmdzLG58fHt9KSxpPWkmJmkuY29uc3RydWN0b3I9PT1EYXRlP3RoaXMuX2Zvcm1hdERhdGUoZCxpKTppLHRoaXMuX2RpYWxvZ0lucHV0LnZhbChpKSx0aGlzLl9wb3M9bz9vLmxlbmd0aD9vOltvLnBhZ2VYLG8ucGFnZVldOm51bGwsdGhpcy5fcG9zfHwoaD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgsbD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LGM9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnR8fGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCx1PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B8fGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wLHRoaXMuX3Bvcz1baC8yLTEwMCtjLGwvMi0xNTArdV0pLHRoaXMuX2RpYWxvZ0lucHV0LmNzcygibGVmdCIsdGhpcy5fcG9zWzBdKzIwKyJweCIpLmNzcygidG9wIix0aGlzLl9wb3NbMV0rInB4IiksZC5zZXR0aW5ncy5vblNlbGVjdD1zLHRoaXMuX2luRGlhbG9nPSEwLHRoaXMuZHBEaXYuYWRkQ2xhc3ModGhpcy5fZGlhbG9nQ2xhc3MpLHRoaXMuX3Nob3dEYXRlcGlja2VyKHRoaXMuX2RpYWxvZ0lucHV0WzBdKSx0LmJsb2NrVUkmJnQuYmxvY2tVSSh0aGlzLmRwRGl2KSx0LmRhdGEodGhpcy5fZGlhbG9nSW5wdXRbMF0sImRhdGVwaWNrZXIiLGQpLHRoaXN9LF9kZXN0cm95RGF0ZXBpY2tlcjpmdW5jdGlvbihlKXt2YXIgaSxzPXQoZSksbj10LmRhdGEoZSwiZGF0ZXBpY2tlciIpO3MuaGFzQ2xhc3ModGhpcy5tYXJrZXJDbGFzc05hbWUpJiYoaT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksdC5yZW1vdmVEYXRhKGUsImRhdGVwaWNrZXIiKSwiaW5wdXQiPT09aT8obi5hcHBlbmQucmVtb3ZlKCksbi50cmlnZ2VyLnJlbW92ZSgpLHMucmVtb3ZlQ2xhc3ModGhpcy5tYXJrZXJDbGFzc05hbWUpLm9mZigiZm9jdXMiLHRoaXMuX3Nob3dEYXRlcGlja2VyKS5vZmYoImtleWRvd24iLHRoaXMuX2RvS2V5RG93bikub2ZmKCJrZXlwcmVzcyIsdGhpcy5fZG9LZXlQcmVzcykub2ZmKCJrZXl1cCIsdGhpcy5fZG9LZXlVcCkpOigiZGl2Ij09PWl8fCJzcGFuIj09PWkpJiZzLnJlbW92ZUNsYXNzKHRoaXMubWFya2VyQ2xhc3NOYW1lKS5lbXB0eSgpLGc9PT1uJiYoZz1udWxsKSl9LF9lbmFibGVEYXRlcGlja2VyOmZ1bmN0aW9uKGUpe3ZhciBpLHMsbj10KGUpLG89dC5kYXRhKGUsImRhdGVwaWNrZXIiKTtuLmhhc0NsYXNzKHRoaXMubWFya2VyQ2xhc3NOYW1lKSYmKGk9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLCJpbnB1dCI9PT1pPyhlLmRpc2FibGVkPSExLG8udHJpZ2dlci5maWx0ZXIoImJ1dHRvbiIpLmVhY2goZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVkPSExfSkuZW5kKCkuZmlsdGVyKCJpbWciKS5jc3Moe29wYWNpdHk6IjEuMCIsY3Vyc29yOiIifSkpOigiZGl2Ij09PWl8fCJzcGFuIj09PWkpJiYocz1uLmNoaWxkcmVuKCIuIit0aGlzLl9pbmxpbmVDbGFzcykscy5jaGlsZHJlbigpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpLHMuZmluZCgic2VsZWN0LnVpLWRhdGVwaWNrZXItbW9udGgsIHNlbGVjdC51aS1kYXRlcGlja2VyLXllYXIiKS5wcm9wKCJkaXNhYmxlZCIsITEpKSx0aGlzLl9kaXNhYmxlZElucHV0cz10Lm1hcCh0aGlzLl9kaXNhYmxlZElucHV0cyxmdW5jdGlvbih0KXtyZXR1cm4gdD09PWU/bnVsbDp0fSkpfSxfZGlzYWJsZURhdGVwaWNrZXI6ZnVuY3Rpb24oZSl7dmFyIGkscyxuPXQoZSksbz10LmRhdGEoZSwiZGF0ZXBpY2tlciIpO24uaGFzQ2xhc3ModGhpcy5tYXJrZXJDbGFzc05hbWUpJiYoaT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksImlucHV0Ij09PWk/KGUuZGlzYWJsZWQ9ITAsby50cmlnZ2VyLmZpbHRlcigiYnV0dG9uIikuZWFjaChmdW5jdGlvbigpe3RoaXMuZGlzYWJsZWQ9ITB9KS5lbmQoKS5maWx0ZXIoImltZyIpLmNzcyh7b3BhY2l0eToiMC41IixjdXJzb3I6ImRlZmF1bHQifSkpOigiZGl2Ij09PWl8fCJzcGFuIj09PWkpJiYocz1uLmNoaWxkcmVuKCIuIit0aGlzLl9pbmxpbmVDbGFzcykscy5jaGlsZHJlbigpLmFkZENsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpLHMuZmluZCgic2VsZWN0LnVpLWRhdGVwaWNrZXItbW9udGgsIHNlbGVjdC51aS1kYXRlcGlja2VyLXllYXIiKS5wcm9wKCJkaXNhYmxlZCIsITApKSx0aGlzLl9kaXNhYmxlZElucHV0cz10Lm1hcCh0aGlzLl9kaXNhYmxlZElucHV0cyxmdW5jdGlvbih0KXtyZXR1cm4gdD09PWU/bnVsbDp0fSksdGhpcy5fZGlzYWJsZWRJbnB1dHNbdGhpcy5fZGlzYWJsZWRJbnB1dHMubGVuZ3RoXT1lKX0sX2lzRGlzYWJsZWREYXRlcGlja2VyOmZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiExO2Zvcih2YXIgZT0wO3RoaXMuX2Rpc2FibGVkSW5wdXRzLmxlbmd0aD5lO2UrKylpZih0aGlzLl9kaXNhYmxlZElucHV0c1tlXT09PXQpcmV0dXJuITA7cmV0dXJuITF9LF9nZXRJbnN0OmZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gdC5kYXRhKGUsImRhdGVwaWNrZXIiKX1jYXRjaChpKXt0aHJvdyJNaXNzaW5nIGluc3RhbmNlIGRhdGEgZm9yIHRoaXMgZGF0ZXBpY2tlciJ9fSxfb3B0aW9uRGF0ZXBpY2tlcjpmdW5jdGlvbihlLGkscyl7dmFyIG4sbyxyLGgsbD10aGlzLl9nZXRJbnN0KGUpO3JldHVybiAyPT09YXJndW1lbnRzLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiBpPyJkZWZhdWx0cyI9PT1pP3QuZXh0ZW5kKHt9LHQuZGF0ZXBpY2tlci5fZGVmYXVsdHMpOmw/ImFsbCI9PT1pP3QuZXh0ZW5kKHt9LGwuc2V0dGluZ3MpOnRoaXMuX2dldChsLGkpOm51bGw6KG49aXx8e30sInN0cmluZyI9PXR5cGVvZiBpJiYobj17fSxuW2ldPXMpLGwmJih0aGlzLl9jdXJJbnN0PT09bCYmdGhpcy5faGlkZURhdGVwaWNrZXIoKSxvPXRoaXMuX2dldERhdGVEYXRlcGlja2VyKGUsITApLHI9dGhpcy5fZ2V0TWluTWF4RGF0ZShsLCJtaW4iKSxoPXRoaXMuX2dldE1pbk1heERhdGUobCwibWF4IiksYShsLnNldHRpbmdzLG4pLG51bGwhPT1yJiZ2b2lkIDAhPT1uLmRhdGVGb3JtYXQmJnZvaWQgMD09PW4ubWluRGF0ZSYmKGwuc2V0dGluZ3MubWluRGF0ZT10aGlzLl9mb3JtYXREYXRlKGwscikpLG51bGwhPT1oJiZ2b2lkIDAhPT1uLmRhdGVGb3JtYXQmJnZvaWQgMD09PW4ubWF4RGF0ZSYmKGwuc2V0dGluZ3MubWF4RGF0ZT10aGlzLl9mb3JtYXREYXRlKGwsaCkpLCJkaXNhYmxlZCJpbiBuJiYobi5kaXNhYmxlZD90aGlzLl9kaXNhYmxlRGF0ZXBpY2tlcihlKTp0aGlzLl9lbmFibGVEYXRlcGlja2VyKGUpKSx0aGlzLl9hdHRhY2htZW50cyh0KGUpLGwpLHRoaXMuX2F1dG9TaXplKGwpLHRoaXMuX3NldERhdGUobCxvKSx0aGlzLl91cGRhdGVBbHRlcm5hdGUobCksdGhpcy5fdXBkYXRlRGF0ZXBpY2tlcihsKSksdm9pZCAwKX0sX2NoYW5nZURhdGVwaWNrZXI6ZnVuY3Rpb24odCxlLGkpe3RoaXMuX29wdGlvbkRhdGVwaWNrZXIodCxlLGkpfSxfcmVmcmVzaERhdGVwaWNrZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZ2V0SW5zdCh0KTtlJiZ0aGlzLl91cGRhdGVEYXRlcGlja2VyKGUpfSxfc2V0RGF0ZURhdGVwaWNrZXI6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9nZXRJbnN0KHQpO2kmJih0aGlzLl9zZXREYXRlKGksZSksdGhpcy5fdXBkYXRlRGF0ZXBpY2tlcihpKSx0aGlzLl91cGRhdGVBbHRlcm5hdGUoaSkpfSxfZ2V0RGF0ZURhdGVwaWNrZXI6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9nZXRJbnN0KHQpO3JldHVybiBpJiYhaS5pbmxpbmUmJnRoaXMuX3NldERhdGVGcm9tRmllbGQoaSxlKSxpP3RoaXMuX2dldERhdGUoaSk6bnVsbH0sX2RvS2V5RG93bjpmdW5jdGlvbihlKXt2YXIgaSxzLG4sbz10LmRhdGVwaWNrZXIuX2dldEluc3QoZS50YXJnZXQpLGE9ITAscj1vLmRwRGl2LmlzKCIudWktZGF0ZXBpY2tlci1ydGwiKTtpZihvLl9rZXlFdmVudD0hMCx0LmRhdGVwaWNrZXIuX2RhdGVwaWNrZXJTaG93aW5nKXN3aXRjaChlLmtleUNvZGUpe2Nhc2UgOTp0LmRhdGVwaWNrZXIuX2hpZGVEYXRlcGlja2VyKCksYT0hMTticmVhaztjYXNlIDEzOnJldHVybiBuPXQoInRkLiIrdC5kYXRlcGlja2VyLl9kYXlPdmVyQ2xhc3MrIjpub3QoLiIrdC5kYXRlcGlja2VyLl9jdXJyZW50Q2xhc3MrIikiLG8uZHBEaXYpLG5bMF0mJnQuZGF0ZXBpY2tlci5fc2VsZWN0RGF5KGUudGFyZ2V0LG8uc2VsZWN0ZWRNb250aCxvLnNlbGVjdGVkWWVhcixuWzBdKSxpPXQuZGF0ZXBpY2tlci5fZ2V0KG8sIm9uU2VsZWN0IiksaT8ocz10LmRhdGVwaWNrZXIuX2Zvcm1hdERhdGUobyksaS5hcHBseShvLmlucHV0P28uaW5wdXRbMF06bnVsbCxbcyxvXSkpOnQuZGF0ZXBpY2tlci5faGlkZURhdGVwaWNrZXIoKSwhMTtjYXNlIDI3OnQuZGF0ZXBpY2tlci5faGlkZURhdGVwaWNrZXIoKTticmVhaztjYXNlIDMzOnQuZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZShlLnRhcmdldCxlLmN0cmxLZXk/LXQuZGF0ZXBpY2tlci5fZ2V0KG8sInN0ZXBCaWdNb250aHMiKTotdC5kYXRlcGlja2VyLl9nZXQobywic3RlcE1vbnRocyIpLCJNIik7YnJlYWs7Y2FzZSAzNDp0LmRhdGVwaWNrZXIuX2FkanVzdERhdGUoZS50YXJnZXQsZS5jdHJsS2V5Pyt0LmRhdGVwaWNrZXIuX2dldChvLCJzdGVwQmlnTW9udGhzIik6K3QuZGF0ZXBpY2tlci5fZ2V0KG8sInN0ZXBNb250aHMiKSwiTSIpO2JyZWFrO2Nhc2UgMzU6KGUuY3RybEtleXx8ZS5tZXRhS2V5KSYmdC5kYXRlcGlja2VyLl9jbGVhckRhdGUoZS50YXJnZXQpLGE9ZS5jdHJsS2V5fHxlLm1ldGFLZXk7YnJlYWs7Y2FzZSAzNjooZS5jdHJsS2V5fHxlLm1ldGFLZXkpJiZ0LmRhdGVwaWNrZXIuX2dvdG9Ub2RheShlLnRhcmdldCksYT1lLmN0cmxLZXl8fGUubWV0YUtleTticmVhaztjYXNlIDM3OihlLmN0cmxLZXl8fGUubWV0YUtleSkmJnQuZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZShlLnRhcmdldCxyPzE6LTEsIkQiKSxhPWUuY3RybEtleXx8ZS5tZXRhS2V5LGUub3JpZ2luYWxFdmVudC5hbHRLZXkmJnQuZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZShlLnRhcmdldCxlLmN0cmxLZXk/LXQuZGF0ZXBpY2tlci5fZ2V0KG8sInN0ZXBCaWdNb250aHMiKTotdC5kYXRlcGlja2VyLl9nZXQobywic3RlcE1vbnRocyIpLCJNIik7YnJlYWs7Y2FzZSAzODooZS5jdHJsS2V5fHxlLm1ldGFLZXkpJiZ0LmRhdGVwaWNrZXIuX2FkanVzdERhdGUoZS50YXJnZXQsLTcsIkQiKSxhPWUuY3RybEtleXx8ZS5tZXRhS2V5O2JyZWFrO2Nhc2UgMzk6KGUuY3RybEtleXx8ZS5tZXRhS2V5KSYmdC5kYXRlcGlja2VyLl9hZGp1c3REYXRlKGUudGFyZ2V0LHI/LTE6MSwiRCIpLGE9ZS5jdHJsS2V5fHxlLm1ldGFLZXksZS5vcmlnaW5hbEV2ZW50LmFsdEtleSYmdC5kYXRlcGlja2VyLl9hZGp1c3REYXRlKGUudGFyZ2V0LGUuY3RybEtleT8rdC5kYXRlcGlja2VyLl9nZXQobywic3RlcEJpZ01vbnRocyIpOit0LmRhdGVwaWNrZXIuX2dldChvLCJzdGVwTW9udGhzIiksIk0iKTticmVhaztjYXNlIDQwOihlLmN0cmxLZXl8fGUubWV0YUtleSkmJnQuZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZShlLnRhcmdldCw3LCJEIiksYT1lLmN0cmxLZXl8fGUubWV0YUtleTticmVhaztkZWZhdWx0OmE9ITF9ZWxzZSAzNj09PWUua2V5Q29kZSYmZS5jdHJsS2V5P3QuZGF0ZXBpY2tlci5fc2hvd0RhdGVwaWNrZXIodGhpcyk6YT0hMTthJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCkpfSxfZG9LZXlQcmVzczpmdW5jdGlvbihlKXt2YXIgaSxzLG49dC5kYXRlcGlja2VyLl9nZXRJbnN0KGUudGFyZ2V0KTtyZXR1cm4gdC5kYXRlcGlja2VyLl9nZXQobiwiY29uc3RyYWluSW5wdXQiKT8oaT10LmRhdGVwaWNrZXIuX3Bvc3NpYmxlQ2hhcnModC5kYXRlcGlja2VyLl9nZXQobiwiZGF0ZUZvcm1hdCIpKSxzPVN0cmluZy5mcm9tQ2hhckNvZGUobnVsbD09ZS5jaGFyQ29kZT9lLmtleUNvZGU6ZS5jaGFyQ29kZSksZS5jdHJsS2V5fHxlLm1ldGFLZXl8fCIgIj5zfHwhaXx8aS5pbmRleE9mKHMpPi0xKTp2b2lkIDB9LF9kb0tleVVwOmZ1bmN0aW9uKGUpe3ZhciBpLHM9dC5kYXRlcGlja2VyLl9nZXRJbnN0KGUudGFyZ2V0KTtpZihzLmlucHV0LnZhbCgpIT09cy5sYXN0VmFsKXRyeXtpPXQuZGF0ZXBpY2tlci5wYXJzZURhdGUodC5kYXRlcGlja2VyLl9nZXQocywiZGF0ZUZvcm1hdCIpLHMuaW5wdXQ/cy5pbnB1dC52YWwoKTpudWxsLHQuZGF0ZXBpY2tlci5fZ2V0Rm9ybWF0Q29uZmlnKHMpKSxpJiYodC5kYXRlcGlja2VyLl9zZXREYXRlRnJvbUZpZWxkKHMpLHQuZGF0ZXBpY2tlci5fdXBkYXRlQWx0ZXJuYXRlKHMpLHQuZGF0ZXBpY2tlci5fdXBkYXRlRGF0ZXBpY2tlcihzKSl9Y2F0Y2gobil7fXJldHVybiEwfSxfc2hvd0RhdGVwaWNrZXI6ZnVuY3Rpb24oZSl7aWYoZT1lLnRhcmdldHx8ZSwiaW5wdXQiIT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYoZT10KCJpbnB1dCIsZS5wYXJlbnROb2RlKVswXSksIXQuZGF0ZXBpY2tlci5faXNEaXNhYmxlZERhdGVwaWNrZXIoZSkmJnQuZGF0ZXBpY2tlci5fbGFzdElucHV0IT09ZSl7dmFyIHMsbixvLHIsaCxsLGM7cz10LmRhdGVwaWNrZXIuX2dldEluc3QoZSksdC5kYXRlcGlja2VyLl9jdXJJbnN0JiZ0LmRhdGVwaWNrZXIuX2N1ckluc3QhPT1zJiYodC5kYXRlcGlja2VyLl9jdXJJbnN0LmRwRGl2LnN0b3AoITAsITApLHMmJnQuZGF0ZXBpY2tlci5fZGF0ZXBpY2tlclNob3dpbmcmJnQuZGF0ZXBpY2tlci5faGlkZURhdGVwaWNrZXIodC5kYXRlcGlja2VyLl9jdXJJbnN0LmlucHV0WzBdKSksbj10LmRhdGVwaWNrZXIuX2dldChzLCJiZWZvcmVTaG93Iiksbz1uP24uYXBwbHkoZSxbZSxzXSk6e30sbyE9PSExJiYoYShzLnNldHRpbmdzLG8pLHMubGFzdFZhbD1udWxsLHQuZGF0ZXBpY2tlci5fbGFzdElucHV0PWUsdC5kYXRlcGlja2VyLl9zZXREYXRlRnJvbUZpZWxkKHMpLHQuZGF0ZXBpY2tlci5faW5EaWFsb2cmJihlLnZhbHVlPSIiKSx0LmRhdGVwaWNrZXIuX3Bvc3x8KHQuZGF0ZXBpY2tlci5fcG9zPXQuZGF0ZXBpY2tlci5fZmluZFBvcyhlKSx0LmRhdGVwaWNrZXIuX3Bvc1sxXSs9ZS5vZmZzZXRIZWlnaHQpLHI9ITEsdChlKS5wYXJlbnRzKCkuZWFjaChmdW5jdGlvbigpe3JldHVybiByfD0iZml4ZWQiPT09dCh0aGlzKS5jc3MoInBvc2l0aW9uIiksIXJ9KSxoPXtsZWZ0OnQuZGF0ZXBpY2tlci5fcG9zWzBdLHRvcDp0LmRhdGVwaWNrZXIuX3Bvc1sxXX0sdC5kYXRlcGlja2VyLl9wb3M9bnVsbCxzLmRwRGl2LmVtcHR5KCkscy5kcERpdi5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsZGlzcGxheToiYmxvY2siLHRvcDoiLTEwMDBweCJ9KSx0LmRhdGVwaWNrZXIuX3VwZGF0ZURhdGVwaWNrZXIocyksaD10LmRhdGVwaWNrZXIuX2NoZWNrT2Zmc2V0KHMsaCxyKSxzLmRwRGl2LmNzcyh7cG9zaXRpb246dC5kYXRlcGlja2VyLl9pbkRpYWxvZyYmdC5ibG9ja1VJPyJzdGF0aWMiOnI/ImZpeGVkIjoiYWJzb2x1dGUiLGRpc3BsYXk6Im5vbmUiLGxlZnQ6aC5sZWZ0KyJweCIsdG9wOmgudG9wKyJweCJ9KSxzLmlubGluZXx8KGw9dC5kYXRlcGlja2VyLl9nZXQocywic2hvd0FuaW0iKSxjPXQuZGF0ZXBpY2tlci5fZ2V0KHMsImR1cmF0aW9uIikscy5kcERpdi5jc3MoInotaW5kZXgiLGkodChlKSkrMSksdC5kYXRlcGlja2VyLl9kYXRlcGlja2VyU2hvd2luZz0hMCx0LmVmZmVjdHMmJnQuZWZmZWN0cy5lZmZlY3RbbF0/cy5kcERpdi5zaG93KGwsdC5kYXRlcGlja2VyLl9nZXQocywic2hvd09wdGlvbnMiKSxjKTpzLmRwRGl2W2x8fCJzaG93Il0obD9jOm51bGwpLHQuZGF0ZXBpY2tlci5fc2hvdWxkRm9jdXNJbnB1dChzKSYmcy5pbnB1dC50cmlnZ2VyKCJmb2N1cyIpLHQuZGF0ZXBpY2tlci5fY3VySW5zdD1zKSl9fSxfdXBkYXRlRGF0ZXBpY2tlcjpmdW5jdGlvbihlKXt0aGlzLm1heFJvd3M9NCxnPWUsZS5kcERpdi5lbXB0eSgpLmFwcGVuZCh0aGlzLl9nZW5lcmF0ZUhUTUwoZSkpLHRoaXMuX2F0dGFjaEhhbmRsZXJzKGUpO3ZhciBpLHM9dGhpcy5fZ2V0TnVtYmVyT2ZNb250aHMoZSksbj1zWzFdLGE9MTcscj1lLmRwRGl2LmZpbmQoIi4iK3RoaXMuX2RheU92ZXJDbGFzcysiIGEiKTtyLmxlbmd0aD4wJiZvLmFwcGx5KHIuZ2V0KDApKSxlLmRwRGl2LnJlbW92ZUNsYXNzKCJ1aS1kYXRlcGlja2VyLW11bHRpLTIgdWktZGF0ZXBpY2tlci1tdWx0aS0zIHVpLWRhdGVwaWNrZXItbXVsdGktNCIpLndpZHRoKCIiKSxuPjEmJmUuZHBEaXYuYWRkQ2xhc3MoInVpLWRhdGVwaWNrZXItbXVsdGktIituKS5jc3MoIndpZHRoIixhKm4rImVtIiksZS5kcERpdlsoMSE9PXNbMF18fDEhPT1zWzFdPyJhZGQiOiJyZW1vdmUiKSsiQ2xhc3MiXSgidWktZGF0ZXBpY2tlci1tdWx0aSIpLGUuZHBEaXZbKHRoaXMuX2dldChlLCJpc1JUTCIpPyJhZGQiOiJyZW1vdmUiKSsiQ2xhc3MiXSgidWktZGF0ZXBpY2tlci1ydGwiKSxlPT09dC5kYXRlcGlja2VyLl9jdXJJbnN0JiZ0LmRhdGVwaWNrZXIuX2RhdGVwaWNrZXJTaG93aW5nJiZ0LmRhdGVwaWNrZXIuX3Nob3VsZEZvY3VzSW5wdXQoZSkmJmUuaW5wdXQudHJpZ2dlcigiZm9jdXMiKSxlLnllYXJzaHRtbCYmKGk9ZS55ZWFyc2h0bWwsc2V0VGltZW91dChmdW5jdGlvbigpe2k9PT1lLnllYXJzaHRtbCYmZS55ZWFyc2h0bWwmJmUuZHBEaXYuZmluZCgic2VsZWN0LnVpLWRhdGVwaWNrZXIteWVhcjpmaXJzdCIpLnJlcGxhY2VXaXRoKGUueWVhcnNodG1sKSxpPWUueWVhcnNodG1sPW51bGwKfSwwKSl9LF9zaG91bGRGb2N1c0lucHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0LmlucHV0JiZ0LmlucHV0LmlzKCI6dmlzaWJsZSIpJiYhdC5pbnB1dC5pcygiOmRpc2FibGVkIikmJiF0LmlucHV0LmlzKCI6Zm9jdXMiKX0sX2NoZWNrT2Zmc2V0OmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj1lLmRwRGl2Lm91dGVyV2lkdGgoKSxvPWUuZHBEaXYub3V0ZXJIZWlnaHQoKSxhPWUuaW5wdXQ/ZS5pbnB1dC5vdXRlcldpZHRoKCk6MCxyPWUuaW5wdXQ/ZS5pbnB1dC5vdXRlckhlaWdodCgpOjAsaD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgrKHM/MDp0KGRvY3VtZW50KS5zY3JvbGxMZWZ0KCkpLGw9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCsocz8wOnQoZG9jdW1lbnQpLnNjcm9sbFRvcCgpKTtyZXR1cm4gaS5sZWZ0LT10aGlzLl9nZXQoZSwiaXNSVEwiKT9uLWE6MCxpLmxlZnQtPXMmJmkubGVmdD09PWUuaW5wdXQub2Zmc2V0KCkubGVmdD90KGRvY3VtZW50KS5zY3JvbGxMZWZ0KCk6MCxpLnRvcC09cyYmaS50b3A9PT1lLmlucHV0Lm9mZnNldCgpLnRvcCtyP3QoZG9jdW1lbnQpLnNjcm9sbFRvcCgpOjAsaS5sZWZ0LT1NYXRoLm1pbihpLmxlZnQsaS5sZWZ0K24+aCYmaD5uP01hdGguYWJzKGkubGVmdCtuLWgpOjApLGkudG9wLT1NYXRoLm1pbihpLnRvcCxpLnRvcCtvPmwmJmw+bz9NYXRoLmFicyhvK3IpOjApLGl9LF9maW5kUG9zOmZ1bmN0aW9uKGUpe2Zvcih2YXIgaSxzPXRoaXMuX2dldEluc3QoZSksbj10aGlzLl9nZXQocywiaXNSVEwiKTtlJiYoImhpZGRlbiI9PT1lLnR5cGV8fDEhPT1lLm5vZGVUeXBlfHx0LmV4cHIuZmlsdGVycy5oaWRkZW4oZSkpOyllPWVbbj8icHJldmlvdXNTaWJsaW5nIjoibmV4dFNpYmxpbmciXTtyZXR1cm4gaT10KGUpLm9mZnNldCgpLFtpLmxlZnQsaS50b3BdfSxfaGlkZURhdGVwaWNrZXI6ZnVuY3Rpb24oZSl7dmFyIGkscyxuLG8sYT10aGlzLl9jdXJJbnN0OyFhfHxlJiZhIT09dC5kYXRhKGUsImRhdGVwaWNrZXIiKXx8dGhpcy5fZGF0ZXBpY2tlclNob3dpbmcmJihpPXRoaXMuX2dldChhLCJzaG93QW5pbSIpLHM9dGhpcy5fZ2V0KGEsImR1cmF0aW9uIiksbj1mdW5jdGlvbigpe3QuZGF0ZXBpY2tlci5fdGlkeURpYWxvZyhhKX0sdC5lZmZlY3RzJiYodC5lZmZlY3RzLmVmZmVjdFtpXXx8dC5lZmZlY3RzW2ldKT9hLmRwRGl2LmhpZGUoaSx0LmRhdGVwaWNrZXIuX2dldChhLCJzaG93T3B0aW9ucyIpLHMsbik6YS5kcERpdlsic2xpZGVEb3duIj09PWk/InNsaWRlVXAiOiJmYWRlSW4iPT09aT8iZmFkZU91dCI6ImhpZGUiXShpP3M6bnVsbCxuKSxpfHxuKCksdGhpcy5fZGF0ZXBpY2tlclNob3dpbmc9ITEsbz10aGlzLl9nZXQoYSwib25DbG9zZSIpLG8mJm8uYXBwbHkoYS5pbnB1dD9hLmlucHV0WzBdOm51bGwsW2EuaW5wdXQ/YS5pbnB1dC52YWwoKToiIixhXSksdGhpcy5fbGFzdElucHV0PW51bGwsdGhpcy5faW5EaWFsb2cmJih0aGlzLl9kaWFsb2dJbnB1dC5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDoiMCIsdG9wOiItMTAwcHgifSksdC5ibG9ja1VJJiYodC51bmJsb2NrVUkoKSx0KCJib2R5IikuYXBwZW5kKHRoaXMuZHBEaXYpKSksdGhpcy5faW5EaWFsb2c9ITEpfSxfdGlkeURpYWxvZzpmdW5jdGlvbih0KXt0LmRwRGl2LnJlbW92ZUNsYXNzKHRoaXMuX2RpYWxvZ0NsYXNzKS5vZmYoIi51aS1kYXRlcGlja2VyLWNhbGVuZGFyIil9LF9jaGVja0V4dGVybmFsQ2xpY2s6ZnVuY3Rpb24oZSl7aWYodC5kYXRlcGlja2VyLl9jdXJJbnN0KXt2YXIgaT10KGUudGFyZ2V0KSxzPXQuZGF0ZXBpY2tlci5fZ2V0SW5zdChpWzBdKTsoaVswXS5pZCE9PXQuZGF0ZXBpY2tlci5fbWFpbkRpdklkJiYwPT09aS5wYXJlbnRzKCIjIit0LmRhdGVwaWNrZXIuX21haW5EaXZJZCkubGVuZ3RoJiYhaS5oYXNDbGFzcyh0LmRhdGVwaWNrZXIubWFya2VyQ2xhc3NOYW1lKSYmIWkuY2xvc2VzdCgiLiIrdC5kYXRlcGlja2VyLl90cmlnZ2VyQ2xhc3MpLmxlbmd0aCYmdC5kYXRlcGlja2VyLl9kYXRlcGlja2VyU2hvd2luZyYmKCF0LmRhdGVwaWNrZXIuX2luRGlhbG9nfHwhdC5ibG9ja1VJKXx8aS5oYXNDbGFzcyh0LmRhdGVwaWNrZXIubWFya2VyQ2xhc3NOYW1lKSYmdC5kYXRlcGlja2VyLl9jdXJJbnN0IT09cykmJnQuZGF0ZXBpY2tlci5faGlkZURhdGVwaWNrZXIoKX19LF9hZGp1c3REYXRlOmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj10KGUpLG89dGhpcy5fZ2V0SW5zdChuWzBdKTt0aGlzLl9pc0Rpc2FibGVkRGF0ZXBpY2tlcihuWzBdKXx8KHRoaXMuX2FkanVzdEluc3REYXRlKG8saSsoIk0iPT09cz90aGlzLl9nZXQobywic2hvd0N1cnJlbnRBdFBvcyIpOjApLHMpLHRoaXMuX3VwZGF0ZURhdGVwaWNrZXIobykpfSxfZ290b1RvZGF5OmZ1bmN0aW9uKGUpe3ZhciBpLHM9dChlKSxuPXRoaXMuX2dldEluc3Qoc1swXSk7dGhpcy5fZ2V0KG4sImdvdG9DdXJyZW50IikmJm4uY3VycmVudERheT8obi5zZWxlY3RlZERheT1uLmN1cnJlbnREYXksbi5kcmF3TW9udGg9bi5zZWxlY3RlZE1vbnRoPW4uY3VycmVudE1vbnRoLG4uZHJhd1llYXI9bi5zZWxlY3RlZFllYXI9bi5jdXJyZW50WWVhcik6KGk9bmV3IERhdGUsbi5zZWxlY3RlZERheT1pLmdldERhdGUoKSxuLmRyYXdNb250aD1uLnNlbGVjdGVkTW9udGg9aS5nZXRNb250aCgpLG4uZHJhd1llYXI9bi5zZWxlY3RlZFllYXI9aS5nZXRGdWxsWWVhcigpKSx0aGlzLl9ub3RpZnlDaGFuZ2UobiksdGhpcy5fYWRqdXN0RGF0ZShzKX0sX3NlbGVjdE1vbnRoWWVhcjpmdW5jdGlvbihlLGkscyl7dmFyIG49dChlKSxvPXRoaXMuX2dldEluc3QoblswXSk7b1sic2VsZWN0ZWQiKygiTSI9PT1zPyJNb250aCI6IlllYXIiKV09b1siZHJhdyIrKCJNIj09PXM/Ik1vbnRoIjoiWWVhciIpXT1wYXJzZUludChpLm9wdGlvbnNbaS5zZWxlY3RlZEluZGV4XS52YWx1ZSwxMCksdGhpcy5fbm90aWZ5Q2hhbmdlKG8pLHRoaXMuX2FkanVzdERhdGUobil9LF9zZWxlY3REYXk6ZnVuY3Rpb24oZSxpLHMsbil7dmFyIG8sYT10KGUpO3QobikuaGFzQ2xhc3ModGhpcy5fdW5zZWxlY3RhYmxlQ2xhc3MpfHx0aGlzLl9pc0Rpc2FibGVkRGF0ZXBpY2tlcihhWzBdKXx8KG89dGhpcy5fZ2V0SW5zdChhWzBdKSxvLnNlbGVjdGVkRGF5PW8uY3VycmVudERheT10KCJhIixuKS5odG1sKCksby5zZWxlY3RlZE1vbnRoPW8uY3VycmVudE1vbnRoPWksby5zZWxlY3RlZFllYXI9by5jdXJyZW50WWVhcj1zLHRoaXMuX3NlbGVjdERhdGUoZSx0aGlzLl9mb3JtYXREYXRlKG8sby5jdXJyZW50RGF5LG8uY3VycmVudE1vbnRoLG8uY3VycmVudFllYXIpKSl9LF9jbGVhckRhdGU6ZnVuY3Rpb24oZSl7dmFyIGk9dChlKTt0aGlzLl9zZWxlY3REYXRlKGksIiIpfSxfc2VsZWN0RGF0ZTpmdW5jdGlvbihlLGkpe3ZhciBzLG49dChlKSxvPXRoaXMuX2dldEluc3QoblswXSk7aT1udWxsIT1pP2k6dGhpcy5fZm9ybWF0RGF0ZShvKSxvLmlucHV0JiZvLmlucHV0LnZhbChpKSx0aGlzLl91cGRhdGVBbHRlcm5hdGUobykscz10aGlzLl9nZXQobywib25TZWxlY3QiKSxzP3MuYXBwbHkoby5pbnB1dD9vLmlucHV0WzBdOm51bGwsW2ksb10pOm8uaW5wdXQmJm8uaW5wdXQudHJpZ2dlcigiY2hhbmdlIiksby5pbmxpbmU/dGhpcy5fdXBkYXRlRGF0ZXBpY2tlcihvKToodGhpcy5faGlkZURhdGVwaWNrZXIoKSx0aGlzLl9sYXN0SW5wdXQ9by5pbnB1dFswXSwib2JqZWN0IiE9dHlwZW9mIG8uaW5wdXRbMF0mJm8uaW5wdXQudHJpZ2dlcigiZm9jdXMiKSx0aGlzLl9sYXN0SW5wdXQ9bnVsbCl9LF91cGRhdGVBbHRlcm5hdGU6ZnVuY3Rpb24oZSl7dmFyIGkscyxuLG89dGhpcy5fZ2V0KGUsImFsdEZpZWxkIik7byYmKGk9dGhpcy5fZ2V0KGUsImFsdEZvcm1hdCIpfHx0aGlzLl9nZXQoZSwiZGF0ZUZvcm1hdCIpLHM9dGhpcy5fZ2V0RGF0ZShlKSxuPXRoaXMuZm9ybWF0RGF0ZShpLHMsdGhpcy5fZ2V0Rm9ybWF0Q29uZmlnKGUpKSx0KG8pLnZhbChuKSl9LG5vV2Vla2VuZHM6ZnVuY3Rpb24odCl7dmFyIGU9dC5nZXREYXkoKTtyZXR1cm5bZT4wJiY2PmUsIiJdfSxpc284NjAxV2VlazpmdW5jdGlvbih0KXt2YXIgZSxpPW5ldyBEYXRlKHQuZ2V0VGltZSgpKTtyZXR1cm4gaS5zZXREYXRlKGkuZ2V0RGF0ZSgpKzQtKGkuZ2V0RGF5KCl8fDcpKSxlPWkuZ2V0VGltZSgpLGkuc2V0TW9udGgoMCksaS5zZXREYXRlKDEpLE1hdGguZmxvb3IoTWF0aC5yb3VuZCgoZS1pKS84NjRlNSkvNykrMX0scGFyc2VEYXRlOmZ1bmN0aW9uKGUsaSxzKXtpZihudWxsPT1lfHxudWxsPT1pKXRocm93IkludmFsaWQgYXJndW1lbnRzIjtpZihpPSJvYmplY3QiPT10eXBlb2YgaT8iIitpOmkrIiIsIiI9PT1pKXJldHVybiBudWxsO3ZhciBuLG8sYSxyLGg9MCxsPShzP3Muc2hvcnRZZWFyQ3V0b2ZmOm51bGwpfHx0aGlzLl9kZWZhdWx0cy5zaG9ydFllYXJDdXRvZmYsYz0ic3RyaW5nIiE9dHlwZW9mIGw/bDoobmV3IERhdGUpLmdldEZ1bGxZZWFyKCklMTAwK3BhcnNlSW50KGwsMTApLHU9KHM/cy5kYXlOYW1lc1Nob3J0Om51bGwpfHx0aGlzLl9kZWZhdWx0cy5kYXlOYW1lc1Nob3J0LGQ9KHM/cy5kYXlOYW1lczpudWxsKXx8dGhpcy5fZGVmYXVsdHMuZGF5TmFtZXMscD0ocz9zLm1vbnRoTmFtZXNTaG9ydDpudWxsKXx8dGhpcy5fZGVmYXVsdHMubW9udGhOYW1lc1Nob3J0LGY9KHM/cy5tb250aE5hbWVzOm51bGwpfHx0aGlzLl9kZWZhdWx0cy5tb250aE5hbWVzLGc9LTEsbT0tMSxfPS0xLHY9LTEsYj0hMSx5PWZ1bmN0aW9uKHQpe3ZhciBpPWUubGVuZ3RoPm4rMSYmZS5jaGFyQXQobisxKT09PXQ7cmV0dXJuIGkmJm4rKyxpfSx3PWZ1bmN0aW9uKHQpe3ZhciBlPXkodCkscz0iQCI9PT10PzE0OiIhIj09PXQ/MjA6InkiPT09dCYmZT80OiJvIj09PXQ/MzoyLG49InkiPT09dD9zOjEsbz1SZWdFeHAoIl5cXGR7IituKyIsIitzKyJ9IiksYT1pLnN1YnN0cmluZyhoKS5tYXRjaChvKTtpZighYSl0aHJvdyJNaXNzaW5nIG51bWJlciBhdCBwb3NpdGlvbiAiK2g7cmV0dXJuIGgrPWFbMF0ubGVuZ3RoLHBhcnNlSW50KGFbMF0sMTApfSxrPWZ1bmN0aW9uKGUscyxuKXt2YXIgbz0tMSxhPXQubWFwKHkoZSk/bjpzLGZ1bmN0aW9uKHQsZSl7cmV0dXJuW1tlLHRdXX0pLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4tKHRbMV0ubGVuZ3RoLWVbMV0ubGVuZ3RoKX0pO2lmKHQuZWFjaChhLGZ1bmN0aW9uKHQsZSl7dmFyIHM9ZVsxXTtyZXR1cm4gaS5zdWJzdHIoaCxzLmxlbmd0aCkudG9Mb3dlckNhc2UoKT09PXMudG9Mb3dlckNhc2UoKT8obz1lWzBdLGgrPXMubGVuZ3RoLCExKTp2b2lkIDB9KSwtMSE9PW8pcmV0dXJuIG8rMTt0aHJvdyJVbmtub3duIG5hbWUgYXQgcG9zaXRpb24gIitofSx4PWZ1bmN0aW9uKCl7aWYoaS5jaGFyQXQoaCkhPT1lLmNoYXJBdChuKSl0aHJvdyJVbmV4cGVjdGVkIGxpdGVyYWwgYXQgcG9zaXRpb24gIitoO2grK307Zm9yKG49MDtlLmxlbmd0aD5uO24rKylpZihiKSInIiE9PWUuY2hhckF0KG4pfHx5KCInIik/eCgpOmI9ITE7ZWxzZSBzd2l0Y2goZS5jaGFyQXQobikpe2Nhc2UiZCI6Xz13KCJkIik7YnJlYWs7Y2FzZSJEIjprKCJEIix1LGQpO2JyZWFrO2Nhc2UibyI6dj13KCJvIik7YnJlYWs7Y2FzZSJtIjptPXcoIm0iKTticmVhaztjYXNlIk0iOm09aygiTSIscCxmKTticmVhaztjYXNlInkiOmc9dygieSIpO2JyZWFrO2Nhc2UiQCI6cj1uZXcgRGF0ZSh3KCJAIikpLGc9ci5nZXRGdWxsWWVhcigpLG09ci5nZXRNb250aCgpKzEsXz1yLmdldERhdGUoKTticmVhaztjYXNlIiEiOnI9bmV3IERhdGUoKHcoIiEiKS10aGlzLl90aWNrc1RvMTk3MCkvMWU0KSxnPXIuZ2V0RnVsbFllYXIoKSxtPXIuZ2V0TW9udGgoKSsxLF89ci5nZXREYXRlKCk7YnJlYWs7Y2FzZSInIjp5KCInIik/eCgpOmI9ITA7YnJlYWs7ZGVmYXVsdDp4KCl9aWYoaS5sZW5ndGg+aCYmKGE9aS5zdWJzdHIoaCksIS9eXHMrLy50ZXN0KGEpKSl0aHJvdyJFeHRyYS91bnBhcnNlZCBjaGFyYWN0ZXJzIGZvdW5kIGluIGRhdGU6ICIrYTtpZigtMT09PWc/Zz0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCk6MTAwPmcmJihnKz0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCktKG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpJTEwMCsoYz49Zz8wOi0xMDApKSx2Pi0xKWZvcihtPTEsXz12Ozspe2lmKG89dGhpcy5fZ2V0RGF5c0luTW9udGgoZyxtLTEpLG8+PV8pYnJlYWs7bSsrLF8tPW99aWYocj10aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZShnLG0tMSxfKSksci5nZXRGdWxsWWVhcigpIT09Z3x8ci5nZXRNb250aCgpKzEhPT1tfHxyLmdldERhdGUoKSE9PV8pdGhyb3ciSW52YWxpZCBkYXRlIjtyZXR1cm4gcn0sQVRPTToieXktbW0tZGQiLENPT0tJRToiRCwgZGQgTSB5eSIsSVNPXzg2MDE6Inl5LW1tLWRkIixSRkNfODIyOiJELCBkIE0geSIsUkZDXzg1MDoiREQsIGRkLU0teSIsUkZDXzEwMzY6IkQsIGQgTSB5IixSRkNfMTEyMzoiRCwgZCBNIHl5IixSRkNfMjgyMjoiRCwgZCBNIHl5IixSU1M6IkQsIGQgTSB5IixUSUNLUzoiISIsVElNRVNUQU1QOiJAIixXM0M6Inl5LW1tLWRkIixfdGlja3NUbzE5NzA6MWU3KjYwKjYwKjI0Kig3MTg2ODUrTWF0aC5mbG9vcig0OTIuNSktTWF0aC5mbG9vcigxOS43KStNYXRoLmZsb29yKDQuOTI1KSksZm9ybWF0RGF0ZTpmdW5jdGlvbih0LGUsaSl7aWYoIWUpcmV0dXJuIiI7dmFyIHMsbj0oaT9pLmRheU5hbWVzU2hvcnQ6bnVsbCl8fHRoaXMuX2RlZmF1bHRzLmRheU5hbWVzU2hvcnQsbz0oaT9pLmRheU5hbWVzOm51bGwpfHx0aGlzLl9kZWZhdWx0cy5kYXlOYW1lcyxhPShpP2kubW9udGhOYW1lc1Nob3J0Om51bGwpfHx0aGlzLl9kZWZhdWx0cy5tb250aE5hbWVzU2hvcnQscj0oaT9pLm1vbnRoTmFtZXM6bnVsbCl8fHRoaXMuX2RlZmF1bHRzLm1vbnRoTmFtZXMsaD1mdW5jdGlvbihlKXt2YXIgaT10Lmxlbmd0aD5zKzEmJnQuY2hhckF0KHMrMSk9PT1lO3JldHVybiBpJiZzKyssaX0sbD1mdW5jdGlvbih0LGUsaSl7dmFyIHM9IiIrZTtpZihoKHQpKWZvcig7aT5zLmxlbmd0aDspcz0iMCIrcztyZXR1cm4gc30sYz1mdW5jdGlvbih0LGUsaSxzKXtyZXR1cm4gaCh0KT9zW2VdOmlbZV19LHU9IiIsZD0hMTtpZihlKWZvcihzPTA7dC5sZW5ndGg+cztzKyspaWYoZCkiJyIhPT10LmNoYXJBdChzKXx8aCgiJyIpP3UrPXQuY2hhckF0KHMpOmQ9ITE7ZWxzZSBzd2l0Y2godC5jaGFyQXQocykpe2Nhc2UiZCI6dSs9bCgiZCIsZS5nZXREYXRlKCksMik7YnJlYWs7Y2FzZSJEIjp1Kz1jKCJEIixlLmdldERheSgpLG4sbyk7YnJlYWs7Y2FzZSJvIjp1Kz1sKCJvIixNYXRoLnJvdW5kKChuZXcgRGF0ZShlLmdldEZ1bGxZZWFyKCksZS5nZXRNb250aCgpLGUuZ2V0RGF0ZSgpKS5nZXRUaW1lKCktbmV3IERhdGUoZS5nZXRGdWxsWWVhcigpLDAsMCkuZ2V0VGltZSgpKS84NjRlNSksMyk7YnJlYWs7Y2FzZSJtIjp1Kz1sKCJtIixlLmdldE1vbnRoKCkrMSwyKTticmVhaztjYXNlIk0iOnUrPWMoIk0iLGUuZ2V0TW9udGgoKSxhLHIpO2JyZWFrO2Nhc2UieSI6dSs9aCgieSIpP2UuZ2V0RnVsbFllYXIoKTooMTA+ZS5nZXRGdWxsWWVhcigpJTEwMD8iMCI6IiIpK2UuZ2V0RnVsbFllYXIoKSUxMDA7YnJlYWs7Y2FzZSJAIjp1Kz1lLmdldFRpbWUoKTticmVhaztjYXNlIiEiOnUrPTFlNCplLmdldFRpbWUoKSt0aGlzLl90aWNrc1RvMTk3MDticmVhaztjYXNlIiciOmgoIiciKT91Kz0iJyI6ZD0hMDticmVhaztkZWZhdWx0OnUrPXQuY2hhckF0KHMpfXJldHVybiB1fSxfcG9zc2libGVDaGFyczpmdW5jdGlvbih0KXt2YXIgZSxpPSIiLHM9ITEsbj1mdW5jdGlvbihpKXt2YXIgcz10Lmxlbmd0aD5lKzEmJnQuY2hhckF0KGUrMSk9PT1pO3JldHVybiBzJiZlKyssc307Zm9yKGU9MDt0Lmxlbmd0aD5lO2UrKylpZihzKSInIiE9PXQuY2hhckF0KGUpfHxuKCInIik/aSs9dC5jaGFyQXQoZSk6cz0hMTtlbHNlIHN3aXRjaCh0LmNoYXJBdChlKSl7Y2FzZSJkIjpjYXNlIm0iOmNhc2UieSI6Y2FzZSJAIjppKz0iMDEyMzQ1Njc4OSI7YnJlYWs7Y2FzZSJEIjpjYXNlIk0iOnJldHVybiBudWxsO2Nhc2UiJyI6bigiJyIpP2krPSInIjpzPSEwO2JyZWFrO2RlZmF1bHQ6aSs9dC5jaGFyQXQoZSl9cmV0dXJuIGl9LF9nZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwIT09dC5zZXR0aW5nc1tlXT90LnNldHRpbmdzW2VdOnRoaXMuX2RlZmF1bHRzW2VdfSxfc2V0RGF0ZUZyb21GaWVsZDpmdW5jdGlvbih0LGUpe2lmKHQuaW5wdXQudmFsKCkhPT10Lmxhc3RWYWwpe3ZhciBpPXRoaXMuX2dldCh0LCJkYXRlRm9ybWF0Iikscz10Lmxhc3RWYWw9dC5pbnB1dD90LmlucHV0LnZhbCgpOm51bGwsbj10aGlzLl9nZXREZWZhdWx0RGF0ZSh0KSxvPW4sYT10aGlzLl9nZXRGb3JtYXRDb25maWcodCk7dHJ5e289dGhpcy5wYXJzZURhdGUoaSxzLGEpfHxufWNhdGNoKHIpe3M9ZT8iIjpzfXQuc2VsZWN0ZWREYXk9by5nZXREYXRlKCksdC5kcmF3TW9udGg9dC5zZWxlY3RlZE1vbnRoPW8uZ2V0TW9udGgoKSx0LmRyYXdZZWFyPXQuc2VsZWN0ZWRZZWFyPW8uZ2V0RnVsbFllYXIoKSx0LmN1cnJlbnREYXk9cz9vLmdldERhdGUoKTowLHQuY3VycmVudE1vbnRoPXM/by5nZXRNb250aCgpOjAsdC5jdXJyZW50WWVhcj1zP28uZ2V0RnVsbFllYXIoKTowLHRoaXMuX2FkanVzdEluc3REYXRlKHQpfX0sX2dldERlZmF1bHREYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZXN0cmljdE1pbk1heCh0LHRoaXMuX2RldGVybWluZURhdGUodCx0aGlzLl9nZXQodCwiZGVmYXVsdERhdGUiKSxuZXcgRGF0ZSkpfSxfZGV0ZXJtaW5lRGF0ZTpmdW5jdGlvbihlLGkscyl7dmFyIG49ZnVuY3Rpb24odCl7dmFyIGU9bmV3IERhdGU7cmV0dXJuIGUuc2V0RGF0ZShlLmdldERhdGUoKSt0KSxlfSxvPWZ1bmN0aW9uKGkpe3RyeXtyZXR1cm4gdC5kYXRlcGlja2VyLnBhcnNlRGF0ZSh0LmRhdGVwaWNrZXIuX2dldChlLCJkYXRlRm9ybWF0IiksaSx0LmRhdGVwaWNrZXIuX2dldEZvcm1hdENvbmZpZyhlKSl9Y2F0Y2gocyl7fWZvcih2YXIgbj0oaS50b0xvd2VyQ2FzZSgpLm1hdGNoKC9eYy8pP3QuZGF0ZXBpY2tlci5fZ2V0RGF0ZShlKTpudWxsKXx8bmV3IERhdGUsbz1uLmdldEZ1bGxZZWFyKCksYT1uLmdldE1vbnRoKCkscj1uLmdldERhdGUoKSxoPS8oWytcLV0/WzAtOV0rKVxzKihkfER8d3xXfG18TXx5fFkpPy9nLGw9aC5leGVjKGkpO2w7KXtzd2l0Y2gobFsyXXx8ImQiKXtjYXNlImQiOmNhc2UiRCI6cis9cGFyc2VJbnQobFsxXSwxMCk7YnJlYWs7Y2FzZSJ3IjpjYXNlIlciOnIrPTcqcGFyc2VJbnQobFsxXSwxMCk7YnJlYWs7Y2FzZSJtIjpjYXNlIk0iOmErPXBhcnNlSW50KGxbMV0sMTApLHI9TWF0aC5taW4ocix0LmRhdGVwaWNrZXIuX2dldERheXNJbk1vbnRoKG8sYSkpO2JyZWFrO2Nhc2UieSI6Y2FzZSJZIjpvKz1wYXJzZUludChsWzFdLDEwKSxyPU1hdGgubWluKHIsdC5kYXRlcGlja2VyLl9nZXREYXlzSW5Nb250aChvLGEpKX1sPWguZXhlYyhpKX1yZXR1cm4gbmV3IERhdGUobyxhLHIpfSxhPW51bGw9PWl8fCIiPT09aT9zOiJzdHJpbmciPT10eXBlb2YgaT9vKGkpOiJudW1iZXIiPT10eXBlb2YgaT9pc05hTihpKT9zOm4oaSk6bmV3IERhdGUoaS5nZXRUaW1lKCkpO3JldHVybiBhPWEmJiJJbnZhbGlkIERhdGUiPT0iIithP3M6YSxhJiYoYS5zZXRIb3VycygwKSxhLnNldE1pbnV0ZXMoMCksYS5zZXRTZWNvbmRzKDApLGEuc2V0TWlsbGlzZWNvbmRzKDApKSx0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChhKX0sX2RheWxpZ2h0U2F2aW5nQWRqdXN0OmZ1bmN0aW9uKHQpe3JldHVybiB0Pyh0LnNldEhvdXJzKHQuZ2V0SG91cnMoKT4xMj90LmdldEhvdXJzKCkrMjowKSx0KTpudWxsfSxfc2V0RGF0ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9IWUsbj10LnNlbGVjdGVkTW9udGgsbz10LnNlbGVjdGVkWWVhcixhPXRoaXMuX3Jlc3RyaWN0TWluTWF4KHQsdGhpcy5fZGV0ZXJtaW5lRGF0ZSh0LGUsbmV3IERhdGUpKTt0LnNlbGVjdGVkRGF5PXQuY3VycmVudERheT1hLmdldERhdGUoKSx0LmRyYXdNb250aD10LnNlbGVjdGVkTW9udGg9dC5jdXJyZW50TW9udGg9YS5nZXRNb250aCgpLHQuZHJhd1llYXI9dC5zZWxlY3RlZFllYXI9dC5jdXJyZW50WWVhcj1hLmdldEZ1bGxZZWFyKCksbj09PXQuc2VsZWN0ZWRNb250aCYmbz09PXQuc2VsZWN0ZWRZZWFyfHxpfHx0aGlzLl9ub3RpZnlDaGFuZ2UodCksdGhpcy5fYWRqdXN0SW5zdERhdGUodCksdC5pbnB1dCYmdC5pbnB1dC52YWwocz8iIjp0aGlzLl9mb3JtYXREYXRlKHQpKX0sX2dldERhdGU6ZnVuY3Rpb24odCl7dmFyIGU9IXQuY3VycmVudFllYXJ8fHQuaW5wdXQmJiIiPT09dC5pbnB1dC52YWwoKT9udWxsOnRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKHQuY3VycmVudFllYXIsdC5jdXJyZW50TW9udGgsdC5jdXJyZW50RGF5KSk7cmV0dXJuIGV9LF9hdHRhY2hIYW5kbGVyczpmdW5jdGlvbihlKXt2YXIgaT10aGlzLl9nZXQoZSwic3RlcE1vbnRocyIpLHM9IiMiK2UuaWQucmVwbGFjZSgvXFxcXC9nLCJcXCIpO2UuZHBEaXYuZmluZCgiW2RhdGEtaGFuZGxlcl0iKS5tYXAoZnVuY3Rpb24oKXt2YXIgZT17cHJldjpmdW5jdGlvbigpe3QuZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZShzLC1pLCJNIil9LG5leHQ6ZnVuY3Rpb24oKXt0LmRhdGVwaWNrZXIuX2FkanVzdERhdGUocywraSwiTSIpfSxoaWRlOmZ1bmN0aW9uKCl7dC5kYXRlcGlja2VyLl9oaWRlRGF0ZXBpY2tlcigpfSx0b2RheTpmdW5jdGlvbigpe3QuZGF0ZXBpY2tlci5fZ290b1RvZGF5KHMpfSxzZWxlY3REYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdC5kYXRlcGlja2VyLl9zZWxlY3REYXkocywrdGhpcy5nZXRBdHRyaWJ1dGUoImRhdGEtbW9udGgiKSwrdGhpcy5nZXRBdHRyaWJ1dGUoImRhdGEteWVhciIpLHRoaXMpLCExfSxzZWxlY3RNb250aDpmdW5jdGlvbigpe3JldHVybiB0LmRhdGVwaWNrZXIuX3NlbGVjdE1vbnRoWWVhcihzLHRoaXMsIk0iKSwhMX0sc2VsZWN0WWVhcjpmdW5jdGlvbigpe3JldHVybiB0LmRhdGVwaWNrZXIuX3NlbGVjdE1vbnRoWWVhcihzLHRoaXMsIlkiKSwhMX19O3QodGhpcykub24odGhpcy5nZXRBdHRyaWJ1dGUoImRhdGEtZXZlbnQiKSxlW3RoaXMuZ2V0QXR0cmlidXRlKCJkYXRhLWhhbmRsZXIiKV0pfSl9LF9nZW5lcmF0ZUhUTUw6ZnVuY3Rpb24odCl7dmFyIGUsaSxzLG4sbyxhLHIsaCxsLGMsdSxkLHAsZixnLG0sXyx2LGIseSx3LGsseCxDLEQsSSxULFAsTSxTLEgseixPLEEsTixXLEUsRixSLEw9bmV3IERhdGUsQj10aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZShMLmdldEZ1bGxZZWFyKCksTC5nZXRNb250aCgpLEwuZ2V0RGF0ZSgpKSksWT10aGlzLl9nZXQodCwiaXNSVEwiKSxqPXRoaXMuX2dldCh0LCJzaG93QnV0dG9uUGFuZWwiKSxxPXRoaXMuX2dldCh0LCJoaWRlSWZOb1ByZXZOZXh0IiksSz10aGlzLl9nZXQodCwibmF2aWdhdGlvbkFzRGF0ZUZvcm1hdCIpLFU9dGhpcy5fZ2V0TnVtYmVyT2ZNb250aHModCksVj10aGlzLl9nZXQodCwic2hvd0N1cnJlbnRBdFBvcyIpLFg9dGhpcy5fZ2V0KHQsInN0ZXBNb250aHMiKSwkPTEhPT1VWzBdfHwxIT09VVsxXSxHPXRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KHQuY3VycmVudERheT9uZXcgRGF0ZSh0LmN1cnJlbnRZZWFyLHQuY3VycmVudE1vbnRoLHQuY3VycmVudERheSk6bmV3IERhdGUoOTk5OSw5LDkpKSxRPXRoaXMuX2dldE1pbk1heERhdGUodCwibWluIiksSj10aGlzLl9nZXRNaW5NYXhEYXRlKHQsIm1heCIpLFo9dC5kcmF3TW9udGgtVix0ZT10LmRyYXdZZWFyO2lmKDA+WiYmKForPTEyLHRlLS0pLEopZm9yKGU9dGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QobmV3IERhdGUoSi5nZXRGdWxsWWVhcigpLEouZ2V0TW9udGgoKS1VWzBdKlVbMV0rMSxKLmdldERhdGUoKSkpLGU9USYmUT5lP1E6ZTt0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZSh0ZSxaLDEpKT5lOylaLS0sMD5aJiYoWj0xMSx0ZS0tKTtmb3IodC5kcmF3TW9udGg9Wix0LmRyYXdZZWFyPXRlLGk9dGhpcy5fZ2V0KHQsInByZXZUZXh0IiksaT1LP3RoaXMuZm9ybWF0RGF0ZShpLHRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKHRlLFotWCwxKSksdGhpcy5fZ2V0Rm9ybWF0Q29uZmlnKHQpKTppLHM9dGhpcy5fY2FuQWRqdXN0TW9udGgodCwtMSx0ZSxaKT8iPGEgY2xhc3M9J3VpLWRhdGVwaWNrZXItcHJldiB1aS1jb3JuZXItYWxsJyBkYXRhLWhhbmRsZXI9J3ByZXYnIGRhdGEtZXZlbnQ9J2NsaWNrJyB0aXRsZT0nIitpKyInPjxzcGFuIGNsYXNzPSd1aS1pY29uIHVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLSIrKFk/ImUiOiJ3IikrIic+IitpKyI8L3NwYW4+PC9hPiI6cT8iIjoiPGEgY2xhc3M9J3VpLWRhdGVwaWNrZXItcHJldiB1aS1jb3JuZXItYWxsIHVpLXN0YXRlLWRpc2FibGVkJyB0aXRsZT0nIitpKyInPjxzcGFuIGNsYXNzPSd1aS1pY29uIHVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLSIrKFk/ImUiOiJ3IikrIic+IitpKyI8L3NwYW4+PC9hPiIsbj10aGlzLl9nZXQodCwibmV4dFRleHQiKSxuPUs/dGhpcy5mb3JtYXREYXRlKG4sdGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QobmV3IERhdGUodGUsWitYLDEpKSx0aGlzLl9nZXRGb3JtYXRDb25maWcodCkpOm4sbz10aGlzLl9jYW5BZGp1c3RNb250aCh0LDEsdGUsWik/IjxhIGNsYXNzPSd1aS1kYXRlcGlja2VyLW5leHQgdWktY29ybmVyLWFsbCcgZGF0YS1oYW5kbGVyPSduZXh0JyBkYXRhLWV2ZW50PSdjbGljaycgdGl0bGU9JyIrbisiJz48c3BhbiBjbGFzcz0ndWktaWNvbiB1aS1pY29uLWNpcmNsZS10cmlhbmdsZS0iKyhZPyJ3IjoiZSIpKyInPiIrbisiPC9zcGFuPjwvYT4iOnE/IiI6IjxhIGNsYXNzPSd1aS1kYXRlcGlja2VyLW5leHQgdWktY29ybmVyLWFsbCB1aS1zdGF0ZS1kaXNhYmxlZCcgdGl0bGU9JyIrbisiJz48c3BhbiBjbGFzcz0ndWktaWNvbiB1aS1pY29uLWNpcmNsZS10cmlhbmdsZS0iKyhZPyJ3IjoiZSIpKyInPiIrbisiPC9zcGFuPjwvYT4iLGE9dGhpcy5fZ2V0KHQsImN1cnJlbnRUZXh0Iikscj10aGlzLl9nZXQodCwiZ290b0N1cnJlbnQiKSYmdC5jdXJyZW50RGF5P0c6QixhPUs/dGhpcy5mb3JtYXREYXRlKGEscix0aGlzLl9nZXRGb3JtYXRDb25maWcodCkpOmEsaD10LmlubGluZT8iIjoiPGJ1dHRvbiB0eXBlPSdidXR0b24nIGNsYXNzPSd1aS1kYXRlcGlja2VyLWNsb3NlIHVpLXN0YXRlLWRlZmF1bHQgdWktcHJpb3JpdHktcHJpbWFyeSB1aS1jb3JuZXItYWxsJyBkYXRhLWhhbmRsZXI9J2hpZGUnIGRhdGEtZXZlbnQ9J2NsaWNrJz4iK3RoaXMuX2dldCh0LCJjbG9zZVRleHQiKSsiPC9idXR0b24+IixsPWo/IjxkaXYgY2xhc3M9J3VpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSB1aS13aWRnZXQtY29udGVudCc+IisoWT9oOiIiKSsodGhpcy5faXNJblJhbmdlKHQscik/IjxidXR0b24gdHlwZT0nYnV0dG9uJyBjbGFzcz0ndWktZGF0ZXBpY2tlci1jdXJyZW50IHVpLXN0YXRlLWRlZmF1bHQgdWktcHJpb3JpdHktc2Vjb25kYXJ5IHVpLWNvcm5lci1hbGwnIGRhdGEtaGFuZGxlcj0ndG9kYXknIGRhdGEtZXZlbnQ9J2NsaWNrJz4iK2ErIjwvYnV0dG9uPiI6IiIpKyhZPyIiOmgpKyI8L2Rpdj4iOiIiLGM9cGFyc2VJbnQodGhpcy5fZ2V0KHQsImZpcnN0RGF5IiksMTApLGM9aXNOYU4oYyk/MDpjLHU9dGhpcy5fZ2V0KHQsInNob3dXZWVrIiksZD10aGlzLl9nZXQodCwiZGF5TmFtZXMiKSxwPXRoaXMuX2dldCh0LCJkYXlOYW1lc01pbiIpLGY9dGhpcy5fZ2V0KHQsIm1vbnRoTmFtZXMiKSxnPXRoaXMuX2dldCh0LCJtb250aE5hbWVzU2hvcnQiKSxtPXRoaXMuX2dldCh0LCJiZWZvcmVTaG93RGF5IiksXz10aGlzLl9nZXQodCwic2hvd090aGVyTW9udGhzIiksdj10aGlzLl9nZXQodCwic2VsZWN0T3RoZXJNb250aHMiKSxiPXRoaXMuX2dldERlZmF1bHREYXRlKHQpLHk9IiIsaz0wO1VbMF0+aztrKyspe2Zvcih4PSIiLHRoaXMubWF4Um93cz00LEM9MDtVWzFdPkM7QysrKXtpZihEPXRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKHRlLFosdC5zZWxlY3RlZERheSkpLEk9IiB1aS1jb3JuZXItYWxsIixUPSIiLCQpe2lmKFQrPSI8ZGl2IGNsYXNzPSd1aS1kYXRlcGlja2VyLWdyb3VwIixVWzFdPjEpc3dpdGNoKEMpe2Nhc2UgMDpUKz0iIHVpLWRhdGVwaWNrZXItZ3JvdXAtZmlyc3QiLEk9IiB1aS1jb3JuZXItIisoWT8icmlnaHQiOiJsZWZ0Iik7YnJlYWs7Y2FzZSBVWzFdLTE6VCs9IiB1aS1kYXRlcGlja2VyLWdyb3VwLWxhc3QiLEk9IiB1aS1jb3JuZXItIisoWT8ibGVmdCI6InJpZ2h0Iik7YnJlYWs7ZGVmYXVsdDpUKz0iIHVpLWRhdGVwaWNrZXItZ3JvdXAtbWlkZGxlIixJPSIifVQrPSInPiJ9Zm9yKFQrPSI8ZGl2IGNsYXNzPSd1aS1kYXRlcGlja2VyLWhlYWRlciB1aS13aWRnZXQtaGVhZGVyIHVpLWhlbHBlci1jbGVhcmZpeCIrSSsiJz4iKygvYWxsfGxlZnQvLnRlc3QoSSkmJjA9PT1rP1k/bzpzOiIiKSsoL2FsbHxyaWdodC8udGVzdChJKSYmMD09PWs/WT9zOm86IiIpK3RoaXMuX2dlbmVyYXRlTW9udGhZZWFySGVhZGVyKHQsWix0ZSxRLEosaz4wfHxDPjAsZixnKSsiPC9kaXY+PHRhYmxlIGNsYXNzPSd1aS1kYXRlcGlja2VyLWNhbGVuZGFyJz48dGhlYWQ+IisiPHRyPiIsUD11PyI8dGggY2xhc3M9J3VpLWRhdGVwaWNrZXItd2Vlay1jb2wnPiIrdGhpcy5fZ2V0KHQsIndlZWtIZWFkZXIiKSsiPC90aD4iOiIiLHc9MDs3Pnc7dysrKU09KHcrYyklNyxQKz0iPHRoIHNjb3BlPSdjb2wnIisoKHcrYys2KSU3Pj01PyIgY2xhc3M9J3VpLWRhdGVwaWNrZXItd2Vlay1lbmQnIjoiIikrIj4iKyI8c3BhbiB0aXRsZT0nIitkW01dKyInPiIrcFtNXSsiPC9zcGFuPjwvdGg+Ijtmb3IoVCs9UCsiPC90cj48L3RoZWFkPjx0Ym9keT4iLFM9dGhpcy5fZ2V0RGF5c0luTW9udGgodGUsWiksdGU9PT10LnNlbGVjdGVkWWVhciYmWj09PXQuc2VsZWN0ZWRNb250aCYmKHQuc2VsZWN0ZWREYXk9TWF0aC5taW4odC5zZWxlY3RlZERheSxTKSksSD0odGhpcy5fZ2V0Rmlyc3REYXlPZk1vbnRoKHRlLFopLWMrNyklNyx6PU1hdGguY2VpbCgoSCtTKS83KSxPPSQ/dGhpcy5tYXhSb3dzPno/dGhpcy5tYXhSb3dzOno6eix0aGlzLm1heFJvd3M9TyxBPXRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKHRlLFosMS1IKSksTj0wO08+TjtOKyspe2ZvcihUKz0iPHRyPiIsVz11PyI8dGQgY2xhc3M9J3VpLWRhdGVwaWNrZXItd2Vlay1jb2wnPiIrdGhpcy5fZ2V0KHQsImNhbGN1bGF0ZVdlZWsiKShBKSsiPC90ZD4iOiIiLHc9MDs3Pnc7dysrKUU9bT9tLmFwcGx5KHQuaW5wdXQ/dC5pbnB1dFswXTpudWxsLFtBXSk6WyEwLCIiXSxGPUEuZ2V0TW9udGgoKSE9PVosUj1GJiYhdnx8IUVbMF18fFEmJlE+QXx8SiYmQT5KLFcrPSI8dGQgY2xhc3M9JyIrKCh3K2MrNiklNz49NT8iIHVpLWRhdGVwaWNrZXItd2Vlay1lbmQiOiIiKSsoRj8iIHVpLWRhdGVwaWNrZXItb3RoZXItbW9udGgiOiIiKSsoQS5nZXRUaW1lKCk9PT1ELmdldFRpbWUoKSYmWj09PXQuc2VsZWN0ZWRNb250aCYmdC5fa2V5RXZlbnR8fGIuZ2V0VGltZSgpPT09QS5nZXRUaW1lKCkmJmIuZ2V0VGltZSgpPT09RC5nZXRUaW1lKCk/IiAiK3RoaXMuX2RheU92ZXJDbGFzczoiIikrKFI/IiAiK3RoaXMuX3Vuc2VsZWN0YWJsZUNsYXNzKyIgdWktc3RhdGUtZGlzYWJsZWQiOiIiKSsoRiYmIV8/IiI6IiAiK0VbMV0rKEEuZ2V0VGltZSgpPT09Ry5nZXRUaW1lKCk/IiAiK3RoaXMuX2N1cnJlbnRDbGFzczoiIikrKEEuZ2V0VGltZSgpPT09Qi5nZXRUaW1lKCk/IiB1aS1kYXRlcGlja2VyLXRvZGF5IjoiIikpKyInIisoRiYmIV98fCFFWzJdPyIiOiIgdGl0bGU9JyIrRVsyXS5yZXBsYWNlKC8nL2csIiYjMzk7IikrIiciKSsoUj8iIjoiIGRhdGEtaGFuZGxlcj0nc2VsZWN0RGF5JyBkYXRhLWV2ZW50PSdjbGljaycgZGF0YS1tb250aD0nIitBLmdldE1vbnRoKCkrIicgZGF0YS15ZWFyPSciK0EuZ2V0RnVsbFllYXIoKSsiJyIpKyI+IisoRiYmIV8/IiYjeGEwOyI6Uj8iPHNwYW4gY2xhc3M9J3VpLXN0YXRlLWRlZmF1bHQnPiIrQS5nZXREYXRlKCkrIjwvc3Bhbj4iOiI8YSBjbGFzcz0ndWktc3RhdGUtZGVmYXVsdCIrKEEuZ2V0VGltZSgpPT09Qi5nZXRUaW1lKCk/IiB1aS1zdGF0ZS1oaWdobGlnaHQiOiIiKSsoQS5nZXRUaW1lKCk9PT1HLmdldFRpbWUoKT8iIHVpLXN0YXRlLWFjdGl2ZSI6IiIpKyhGPyIgdWktcHJpb3JpdHktc2Vjb25kYXJ5IjoiIikrIicgaHJlZj0nIyc+IitBLmdldERhdGUoKSsiPC9hPiIpKyI8L3RkPiIsQS5zZXREYXRlKEEuZ2V0RGF0ZSgpKzEpLEE9dGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QoQSk7VCs9VysiPC90cj4ifVorKyxaPjExJiYoWj0wLHRlKyspLFQrPSI8L3Rib2R5PjwvdGFibGU+IisoJD8iPC9kaXY+IisoVVswXT4wJiZDPT09VVsxXS0xPyI8ZGl2IGNsYXNzPSd1aS1kYXRlcGlja2VyLXJvdy1icmVhayc+PC9kaXY+IjoiIik6IiIpLHgrPVR9eSs9eH1yZXR1cm4geSs9bCx0Ll9rZXlFdmVudD0hMSx5fSxfZ2VuZXJhdGVNb250aFllYXJIZWFkZXI6ZnVuY3Rpb24odCxlLGkscyxuLG8sYSxyKXt2YXIgaCxsLGMsdSxkLHAsZixnLG09dGhpcy5fZ2V0KHQsImNoYW5nZU1vbnRoIiksXz10aGlzLl9nZXQodCwiY2hhbmdlWWVhciIpLHY9dGhpcy5fZ2V0KHQsInNob3dNb250aEFmdGVyWWVhciIpLGI9IjxkaXYgY2xhc3M9J3VpLWRhdGVwaWNrZXItdGl0bGUnPiIseT0iIjtpZihvfHwhbSl5Kz0iPHNwYW4gY2xhc3M9J3VpLWRhdGVwaWNrZXItbW9udGgnPiIrYVtlXSsiPC9zcGFuPiI7ZWxzZXtmb3IoaD1zJiZzLmdldEZ1bGxZZWFyKCk9PT1pLGw9biYmbi5nZXRGdWxsWWVhcigpPT09aSx5Kz0iPHNlbGVjdCBjbGFzcz0ndWktZGF0ZXBpY2tlci1tb250aCcgZGF0YS1oYW5kbGVyPSdzZWxlY3RNb250aCcgZGF0YS1ldmVudD0nY2hhbmdlJz4iLGM9MDsxMj5jO2MrKykoIWh8fGM+PXMuZ2V0TW9udGgoKSkmJighbHx8bi5nZXRNb250aCgpPj1jKSYmKHkrPSI8b3B0aW9uIHZhbHVlPSciK2MrIiciKyhjPT09ZT8iIHNlbGVjdGVkPSdzZWxlY3RlZCciOiIiKSsiPiIrcltjXSsiPC9vcHRpb24+Iik7eSs9Ijwvc2VsZWN0PiJ9aWYodnx8KGIrPXkrKCFvJiZtJiZfPyIiOiImI3hhMDsiKSksIXQueWVhcnNodG1sKWlmKHQueWVhcnNodG1sPSIiLG98fCFfKWIrPSI8c3BhbiBjbGFzcz0ndWktZGF0ZXBpY2tlci15ZWFyJz4iK2krIjwvc3Bhbj4iO2Vsc2V7Zm9yKHU9dGhpcy5fZ2V0KHQsInllYXJSYW5nZSIpLnNwbGl0KCI6IiksZD0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCkscD1mdW5jdGlvbih0KXt2YXIgZT10Lm1hdGNoKC9jWytcLV0uKi8pP2krcGFyc2VJbnQodC5zdWJzdHJpbmcoMSksMTApOnQubWF0Y2goL1srXC1dLiovKT9kK3BhcnNlSW50KHQsMTApOnBhcnNlSW50KHQsMTApO3JldHVybiBpc05hTihlKT9kOmV9LGY9cCh1WzBdKSxnPU1hdGgubWF4KGYscCh1WzFdfHwiIikpLGY9cz9NYXRoLm1heChmLHMuZ2V0RnVsbFllYXIoKSk6ZixnPW4/TWF0aC5taW4oZyxuLmdldEZ1bGxZZWFyKCkpOmcsdC55ZWFyc2h0bWwrPSI8c2VsZWN0IGNsYXNzPSd1aS1kYXRlcGlja2VyLXllYXInIGRhdGEtaGFuZGxlcj0nc2VsZWN0WWVhcicgZGF0YS1ldmVudD0nY2hhbmdlJz4iO2c+PWY7ZisrKXQueWVhcnNodG1sKz0iPG9wdGlvbiB2YWx1ZT0nIitmKyInIisoZj09PWk/IiBzZWxlY3RlZD0nc2VsZWN0ZWQnIjoiIikrIj4iK2YrIjwvb3B0aW9uPiI7dC55ZWFyc2h0bWwrPSI8L3NlbGVjdD4iLGIrPXQueWVhcnNodG1sLHQueWVhcnNodG1sPW51bGx9cmV0dXJuIGIrPXRoaXMuX2dldCh0LCJ5ZWFyU3VmZml4IiksdiYmKGIrPSghbyYmbSYmXz8iIjoiJiN4YTA7IikreSksYis9IjwvZGl2PiJ9LF9hZGp1c3RJbnN0RGF0ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dC5zZWxlY3RlZFllYXIrKCJZIj09PWk/ZTowKSxuPXQuc2VsZWN0ZWRNb250aCsoIk0iPT09aT9lOjApLG89TWF0aC5taW4odC5zZWxlY3RlZERheSx0aGlzLl9nZXREYXlzSW5Nb250aChzLG4pKSsoIkQiPT09aT9lOjApLGE9dGhpcy5fcmVzdHJpY3RNaW5NYXgodCx0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZShzLG4sbykpKTt0LnNlbGVjdGVkRGF5PWEuZ2V0RGF0ZSgpLHQuZHJhd01vbnRoPXQuc2VsZWN0ZWRNb250aD1hLmdldE1vbnRoKCksdC5kcmF3WWVhcj10LnNlbGVjdGVkWWVhcj1hLmdldEZ1bGxZZWFyKCksKCJNIj09PWl8fCJZIj09PWkpJiZ0aGlzLl9ub3RpZnlDaGFuZ2UodCl9LF9yZXN0cmljdE1pbk1heDpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX2dldE1pbk1heERhdGUodCwibWluIikscz10aGlzLl9nZXRNaW5NYXhEYXRlKHQsIm1heCIpLG49aSYmaT5lP2k6ZTtyZXR1cm4gcyYmbj5zP3M6bn0sX25vdGlmeUNoYW5nZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9nZXQodCwib25DaGFuZ2VNb250aFllYXIiKTtlJiZlLmFwcGx5KHQuaW5wdXQ/dC5pbnB1dFswXTpudWxsLFt0LnNlbGVjdGVkWWVhcix0LnNlbGVjdGVkTW9udGgrMSx0XSl9LF9nZXROdW1iZXJPZk1vbnRoczpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9nZXQodCwibnVtYmVyT2ZNb250aHMiKTtyZXR1cm4gbnVsbD09ZT9bMSwxXToibnVtYmVyIj09dHlwZW9mIGU/WzEsZV06ZX0sX2dldE1pbk1heERhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fZGV0ZXJtaW5lRGF0ZSh0LHRoaXMuX2dldCh0LGUrIkRhdGUiKSxudWxsKX0sX2dldERheXNJbk1vbnRoOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIDMyLXRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKHQsZSwzMikpLmdldERhdGUoKX0sX2dldEZpcnN0RGF5T2ZNb250aDpmdW5jdGlvbih0LGUpe3JldHVybiBuZXcgRGF0ZSh0LGUsMSkuZ2V0RGF5KCl9LF9jYW5BZGp1c3RNb250aDpmdW5jdGlvbih0LGUsaSxzKXt2YXIgbj10aGlzLl9nZXROdW1iZXJPZk1vbnRocyh0KSxvPXRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKGkscysoMD5lP2U6blswXSpuWzFdKSwxKSk7cmV0dXJuIDA+ZSYmby5zZXREYXRlKHRoaXMuX2dldERheXNJbk1vbnRoKG8uZ2V0RnVsbFllYXIoKSxvLmdldE1vbnRoKCkpKSx0aGlzLl9pc0luUmFuZ2UodCxvKX0sX2lzSW5SYW5nZTpmdW5jdGlvbih0LGUpe3ZhciBpLHMsbj10aGlzLl9nZXRNaW5NYXhEYXRlKHQsIm1pbiIpLG89dGhpcy5fZ2V0TWluTWF4RGF0ZSh0LCJtYXgiKSxhPW51bGwscj1udWxsLGg9dGhpcy5fZ2V0KHQsInllYXJSYW5nZSIpO3JldHVybiBoJiYoaT1oLnNwbGl0KCI6Iikscz0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCksYT1wYXJzZUludChpWzBdLDEwKSxyPXBhcnNlSW50KGlbMV0sMTApLGlbMF0ubWF0Y2goL1srXC1dLiovKSYmKGErPXMpLGlbMV0ubWF0Y2goL1srXC1dLiovKSYmKHIrPXMpKSwoIW58fGUuZ2V0VGltZSgpPj1uLmdldFRpbWUoKSkmJighb3x8ZS5nZXRUaW1lKCk8PW8uZ2V0VGltZSgpKSYmKCFhfHxlLmdldEZ1bGxZZWFyKCk+PWEpJiYoIXJ8fHI+PWUuZ2V0RnVsbFllYXIoKSl9LF9nZXRGb3JtYXRDb25maWc6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZ2V0KHQsInNob3J0WWVhckN1dG9mZiIpO3JldHVybiBlPSJzdHJpbmciIT10eXBlb2YgZT9lOihuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKSUxMDArcGFyc2VJbnQoZSwxMCkse3Nob3J0WWVhckN1dG9mZjplLGRheU5hbWVzU2hvcnQ6dGhpcy5fZ2V0KHQsImRheU5hbWVzU2hvcnQiKSxkYXlOYW1lczp0aGlzLl9nZXQodCwiZGF5TmFtZXMiKSxtb250aE5hbWVzU2hvcnQ6dGhpcy5fZ2V0KHQsIm1vbnRoTmFtZXNTaG9ydCIpLG1vbnRoTmFtZXM6dGhpcy5fZ2V0KHQsIm1vbnRoTmFtZXMiKX19LF9mb3JtYXREYXRlOmZ1bmN0aW9uKHQsZSxpLHMpe2V8fCh0LmN1cnJlbnREYXk9dC5zZWxlY3RlZERheSx0LmN1cnJlbnRNb250aD10LnNlbGVjdGVkTW9udGgsdC5jdXJyZW50WWVhcj10LnNlbGVjdGVkWWVhcik7dmFyIG49ZT8ib2JqZWN0Ij09dHlwZW9mIGU/ZTp0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZShzLGksZSkpOnRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKHQuY3VycmVudFllYXIsdC5jdXJyZW50TW9udGgsdC5jdXJyZW50RGF5KSk7cmV0dXJuIHRoaXMuZm9ybWF0RGF0ZSh0aGlzLl9nZXQodCwiZGF0ZUZvcm1hdCIpLG4sdGhpcy5fZ2V0Rm9ybWF0Q29uZmlnKHQpKX19KSx0LmZuLmRhdGVwaWNrZXI9ZnVuY3Rpb24oZSl7aWYoIXRoaXMubGVuZ3RoKXJldHVybiB0aGlzO3QuZGF0ZXBpY2tlci5pbml0aWFsaXplZHx8KHQoZG9jdW1lbnQpLm9uKCJtb3VzZWRvd24iLHQuZGF0ZXBpY2tlci5fY2hlY2tFeHRlcm5hbENsaWNrKSx0LmRhdGVwaWNrZXIuaW5pdGlhbGl6ZWQ9ITApLDA9PT10KCIjIit0LmRhdGVwaWNrZXIuX21haW5EaXZJZCkubGVuZ3RoJiZ0KCJib2R5IikuYXBwZW5kKHQuZGF0ZXBpY2tlci5kcERpdik7dmFyIGk9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiJzdHJpbmciIT10eXBlb2YgZXx8ImlzRGlzYWJsZWQiIT09ZSYmImdldERhdGUiIT09ZSYmIndpZGdldCIhPT1lPyJvcHRpb24iPT09ZSYmMj09PWFyZ3VtZW50cy5sZW5ndGgmJiJzdHJpbmciPT10eXBlb2YgYXJndW1lbnRzWzFdP3QuZGF0ZXBpY2tlclsiXyIrZSsiRGF0ZXBpY2tlciJdLmFwcGx5KHQuZGF0ZXBpY2tlcixbdGhpc1swXV0uY29uY2F0KGkpKTp0aGlzLmVhY2goZnVuY3Rpb24oKXsic3RyaW5nIj09dHlwZW9mIGU/dC5kYXRlcGlja2VyWyJfIitlKyJEYXRlcGlja2VyIl0uYXBwbHkodC5kYXRlcGlja2VyLFt0aGlzXS5jb25jYXQoaSkpOnQuZGF0ZXBpY2tlci5fYXR0YWNoRGF0ZXBpY2tlcih0aGlzLGUpfSk6dC5kYXRlcGlja2VyWyJfIitlKyJEYXRlcGlja2VyIl0uYXBwbHkodC5kYXRlcGlja2VyLFt0aGlzWzBdXS5jb25jYXQoaSkpfSx0LmRhdGVwaWNrZXI9bmV3IHMsdC5kYXRlcGlja2VyLmluaXRpYWxpemVkPSExLHQuZGF0ZXBpY2tlci51dWlkPShuZXcgRGF0ZSkuZ2V0VGltZSgpLHQuZGF0ZXBpY2tlci52ZXJzaW9uPSIxLjEyLjAtcmMuMiIsdC5kYXRlcGlja2VyLHQudWkuaWU9ISEvbXNpZSBbXHcuXSsvLmV4ZWMobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTt2YXIgbT0hMTt0KGRvY3VtZW50KS5vbigibW91c2V1cCIsZnVuY3Rpb24oKXttPSExfSksdC53aWRnZXQoInVpLm1vdXNlIix7dmVyc2lvbjoiMS4xMi4wLXJjLjIiLG9wdGlvbnM6e2NhbmNlbDoiaW5wdXQsIHRleHRhcmVhLCBidXR0b24sIHNlbGVjdCwgb3B0aW9uIixkaXN0YW5jZToxLGRlbGF5OjB9LF9tb3VzZUluaXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuZWxlbWVudC5vbigibW91c2Vkb3duLiIrdGhpcy53aWRnZXROYW1lLGZ1bmN0aW9uKHQpe3JldHVybiBlLl9tb3VzZURvd24odCl9KS5vbigiY2xpY2suIit0aGlzLndpZGdldE5hbWUsZnVuY3Rpb24oaSl7cmV0dXJuITA9PT10LmRhdGEoaS50YXJnZXQsZS53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiKT8odC5yZW1vdmVEYXRhKGkudGFyZ2V0LGUud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IiksaS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSwhMSk6dm9pZCAwfSksdGhpcy5zdGFydGVkPSExfSxfbW91c2VEZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50Lm9mZigiLiIrdGhpcy53aWRnZXROYW1lKSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSYmdGhpcy5kb2N1bWVudC5vZmYoIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkub2ZmKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSl9LF9tb3VzZURvd246ZnVuY3Rpb24oZSl7aWYoIW0pe3RoaXMuX21vdXNlTW92ZWQ9ITEsdGhpcy5fbW91c2VTdGFydGVkJiZ0aGlzLl9tb3VzZVVwKGUpLHRoaXMuX21vdXNlRG93bkV2ZW50PWU7dmFyIGk9dGhpcyxzPTE9PT1lLndoaWNoLG49InN0cmluZyI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuY2FuY2VsJiZlLnRhcmdldC5ub2RlTmFtZT90KGUudGFyZ2V0KS5jbG9zZXN0KHRoaXMub3B0aW9ucy5jYW5jZWwpLmxlbmd0aDohMTtyZXR1cm4gcyYmIW4mJnRoaXMuX21vdXNlQ2FwdHVyZShlKT8odGhpcy5tb3VzZURlbGF5TWV0PSF0aGlzLm9wdGlvbnMuZGVsYXksdGhpcy5tb3VzZURlbGF5TWV0fHwodGhpcy5fbW91c2VEZWxheVRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLm1vdXNlRGVsYXlNZXQ9ITB9LHRoaXMub3B0aW9ucy5kZWxheSkpLHRoaXMuX21vdXNlRGlzdGFuY2VNZXQoZSkmJnRoaXMuX21vdXNlRGVsYXlNZXQoZSkmJih0aGlzLl9tb3VzZVN0YXJ0ZWQ9dGhpcy5fbW91c2VTdGFydChlKSE9PSExLCF0aGlzLl9tb3VzZVN0YXJ0ZWQpPyhlLnByZXZlbnREZWZhdWx0KCksITApOighMD09PXQuZGF0YShlLnRhcmdldCx0aGlzLndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIpJiZ0LnJlbW92ZURhdGEoZS50YXJnZXQsdGhpcy53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiKSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbW91c2VNb3ZlKHQpfSx0aGlzLl9tb3VzZVVwRGVsZWdhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGkuX21vdXNlVXAodCl9LHRoaXMuZG9jdW1lbnQub24oIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkub24oIm1vdXNldXAuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VVcERlbGVnYXRlKSxlLnByZXZlbnREZWZhdWx0KCksbT0hMCwhMCkpOiEwfX0sX21vdXNlTW92ZTpmdW5jdGlvbihlKXtpZih0aGlzLl9tb3VzZU1vdmVkKXtpZih0LnVpLmllJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8OT5kb2N1bWVudC5kb2N1bWVudE1vZGUpJiYhZS5idXR0b24pcmV0dXJuIHRoaXMuX21vdXNlVXAoZSk7aWYoIWUud2hpY2gpaWYoZS5vcmlnaW5hbEV2ZW50LmFsdEtleXx8ZS5vcmlnaW5hbEV2ZW50LmN0cmxLZXl8fGUub3JpZ2luYWxFdmVudC5tZXRhS2V5fHxlLm9yaWdpbmFsRXZlbnQuc2hpZnRLZXkpdGhpcy5pZ25vcmVNaXNzaW5nV2hpY2g9ITA7ZWxzZSBpZighdGhpcy5pZ25vcmVNaXNzaW5nV2hpY2gpcmV0dXJuIHRoaXMuX21vdXNlVXAoZSl9cmV0dXJuKGUud2hpY2h8fGUuYnV0dG9uKSYmKHRoaXMuX21vdXNlTW92ZWQ9ITApLHRoaXMuX21vdXNlU3RhcnRlZD8odGhpcy5fbW91c2VEcmFnKGUpLGUucHJldmVudERlZmF1bHQoKSk6KHRoaXMuX21vdXNlRGlzdGFuY2VNZXQoZSkmJnRoaXMuX21vdXNlRGVsYXlNZXQoZSkmJih0aGlzLl9tb3VzZVN0YXJ0ZWQ9dGhpcy5fbW91c2VTdGFydCh0aGlzLl9tb3VzZURvd25FdmVudCxlKSE9PSExLHRoaXMuX21vdXNlU3RhcnRlZD90aGlzLl9tb3VzZURyYWcoZSk6dGhpcy5fbW91c2VVcChlKSksIXRoaXMuX21vdXNlU3RhcnRlZCl9LF9tb3VzZVVwOmZ1bmN0aW9uKGUpe3RoaXMuZG9jdW1lbnQub2ZmKCJtb3VzZW1vdmUuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUpLm9mZigibW91c2V1cC4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZVVwRGVsZWdhdGUpLHRoaXMuX21vdXNlU3RhcnRlZCYmKHRoaXMuX21vdXNlU3RhcnRlZD0hMSxlLnRhcmdldD09PXRoaXMuX21vdXNlRG93bkV2ZW50LnRhcmdldCYmdC5kYXRhKGUudGFyZ2V0LHRoaXMud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IiwhMCksdGhpcy5fbW91c2VTdG9wKGUpKSx0aGlzLl9tb3VzZURlbGF5VGltZXImJihjbGVhclRpbWVvdXQodGhpcy5fbW91c2VEZWxheVRpbWVyKSxkZWxldGUgdGhpcy5fbW91c2VEZWxheVRpbWVyKSx0aGlzLmlnbm9yZU1pc3NpbmdXaGljaD0hMSxtPSExLGUucHJldmVudERlZmF1bHQoKX0sX21vdXNlRGlzdGFuY2VNZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VYLXQucGFnZVgpLE1hdGguYWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VZLXQucGFnZVkpKT49dGhpcy5vcHRpb25zLmRpc3RhbmNlfSxfbW91c2VEZWxheU1ldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1vdXNlRGVsYXlNZXR9LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKCl7fSxfbW91c2VEcmFnOmZ1bmN0aW9uKCl7fSxfbW91c2VTdG9wOmZ1bmN0aW9uKCl7fSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKCl7cmV0dXJuITB9fSksdC51aS5wbHVnaW49e2FkZDpmdW5jdGlvbihlLGkscyl7dmFyIG4sbz10LnVpW2VdLnByb3RvdHlwZTtmb3IobiBpbiBzKW8ucGx1Z2luc1tuXT1vLnBsdWdpbnNbbl18fFtdLG8ucGx1Z2luc1tuXS5wdXNoKFtpLHNbbl1dKX0sY2FsbDpmdW5jdGlvbih0LGUsaSxzKXt2YXIgbixvPXQucGx1Z2luc1tlXTtpZihvJiYoc3x8dC5lbGVtZW50WzBdLnBhcmVudE5vZGUmJjExIT09dC5lbGVtZW50WzBdLnBhcmVudE5vZGUubm9kZVR5cGUpKWZvcihuPTA7by5sZW5ndGg+bjtuKyspdC5vcHRpb25zW29bbl1bMF1dJiZvW25dWzFdLmFwcGx5KHQuZWxlbWVudCxpKX19LHQudWkuc2FmZUJsdXI9ZnVuY3Rpb24oZSl7ZSYmImJvZHkiIT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiZ0KGUpLnRyaWdnZXIoImJsdXIiKX0sdC53aWRnZXQoInVpLmRyYWdnYWJsZSIsdC51aS5tb3VzZSx7dmVyc2lvbjoiMS4xMi4wLXJjLjIiLHdpZGdldEV2ZW50UHJlZml4OiJkcmFnIixvcHRpb25zOnthZGRDbGFzc2VzOiEwLGFwcGVuZFRvOiJwYXJlbnQiLGF4aXM6ITEsY29ubmVjdFRvU29ydGFibGU6ITEsY29udGFpbm1lbnQ6ITEsY3Vyc29yOiJhdXRvIixjdXJzb3JBdDohMSxncmlkOiExLGhhbmRsZTohMSxoZWxwZXI6Im9yaWdpbmFsIixpZnJhbWVGaXg6ITEsb3BhY2l0eTohMSxyZWZyZXNoUG9zaXRpb25zOiExLHJldmVydDohMSxyZXZlcnREdXJhdGlvbjo1MDAsc2NvcGU6ImRlZmF1bHQiLHNjcm9sbDohMCxzY3JvbGxTZW5zaXRpdml0eToyMCxzY3JvbGxTcGVlZDoyMCxzbmFwOiExLHNuYXBNb2RlOiJib3RoIixzbmFwVG9sZXJhbmNlOjIwLHN0YWNrOiExLHpJbmRleDohMSxkcmFnOm51bGwsc3RhcnQ6bnVsbCxzdG9wOm51bGx9LF9jcmVhdGU6ZnVuY3Rpb24oKXsib3JpZ2luYWwiPT09dGhpcy5vcHRpb25zLmhlbHBlciYmdGhpcy5fc2V0UG9zaXRpb25SZWxhdGl2ZSgpLHRoaXMub3B0aW9ucy5hZGRDbGFzc2VzJiZ0aGlzLl9hZGRDbGFzcygidWktZHJhZ2dhYmxlIiksdGhpcy5fc2V0SGFuZGxlQ2xhc3NOYW1lKCksdGhpcy5fbW91c2VJbml0KCl9LF9zZXRPcHRpb246ZnVuY3Rpb24odCxlKXt0aGlzLl9zdXBlcih0LGUpLCJoYW5kbGUiPT09dCYmKHRoaXMuX3JlbW92ZUhhbmRsZUNsYXNzTmFtZSgpLHRoaXMuX3NldEhhbmRsZUNsYXNzTmFtZSgpKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5oZWxwZXJ8fHRoaXMuZWxlbWVudCkuaXMoIi51aS1kcmFnZ2FibGUtZHJhZ2dpbmciKT8odGhpcy5kZXN0cm95T25DbGVhcj0hMCx2b2lkIDApOih0aGlzLl9yZW1vdmVIYW5kbGVDbGFzc05hbWUoKSx0aGlzLl9tb3VzZURlc3Ryb3koKSx2b2lkIDApfSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXMub3B0aW9ucztyZXR1cm4gdGhpcy5fYmx1ckFjdGl2ZUVsZW1lbnQoZSksdGhpcy5oZWxwZXJ8fGkuZGlzYWJsZWR8fHQoZS50YXJnZXQpLmNsb3Nlc3QoIi51aS1yZXNpemFibGUtaGFuZGxlIikubGVuZ3RoPjA/ITE6KHRoaXMuaGFuZGxlPXRoaXMuX2dldEhhbmRsZShlKSx0aGlzLmhhbmRsZT8odGhpcy5fYmxvY2tGcmFtZXMoaS5pZnJhbWVGaXg9PT0hMD8iaWZyYW1lIjppLmlmcmFtZUZpeCksITApOiExKX0sX2Jsb2NrRnJhbWVzOmZ1bmN0aW9uKGUpe3RoaXMuaWZyYW1lQmxvY2tzPXRoaXMuZG9jdW1lbnQuZmluZChlKS5tYXAoZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpO3JldHVybiB0KCI8ZGl2PiIpLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIpLmFwcGVuZFRvKGUucGFyZW50KCkpLm91dGVyV2lkdGgoZS5vdXRlcldpZHRoKCkpLm91dGVySGVpZ2h0KGUub3V0ZXJIZWlnaHQoKSkub2Zmc2V0KGUub2Zmc2V0KCkpWzBdfSl9LF91bmJsb2NrRnJhbWVzOmZ1bmN0aW9uKCl7dGhpcy5pZnJhbWVCbG9ja3MmJih0aGlzLmlmcmFtZUJsb2Nrcy5yZW1vdmUoKSxkZWxldGUgdGhpcy5pZnJhbWVCbG9ja3MpfSxfYmx1ckFjdGl2ZUVsZW1lbnQ6ZnVuY3Rpb24oZSl7dmFyIGk9dC51aS5zYWZlQWN0aXZlRWxlbWVudCh0aGlzLmRvY3VtZW50WzBdKSxzPXQoZS50YXJnZXQpO3RoaXMuX2dldEhhbmRsZShlKSYmcy5jbG9zZXN0KGkpLmxlbmd0aHx8dC51aS5zYWZlQmx1cihpKX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcy5vcHRpb25zO3JldHVybiB0aGlzLmhlbHBlcj10aGlzLl9jcmVhdGVIZWxwZXIoZSksdGhpcy5fYWRkQ2xhc3ModGhpcy5oZWxwZXIsInVpLWRyYWdnYWJsZS1kcmFnZ2luZyIpLHRoaXMuX2NhY2hlSGVscGVyUHJvcG9ydGlvbnMoKSx0LnVpLmRkbWFuYWdlciYmKHQudWkuZGRtYW5hZ2VyLmN1cnJlbnQ9dGhpcyksdGhpcy5fY2FjaGVNYXJnaW5zKCksdGhpcy5jc3NQb3NpdGlvbj10aGlzLmhlbHBlci5jc3MoInBvc2l0aW9uIiksdGhpcy5zY3JvbGxQYXJlbnQ9dGhpcy5oZWxwZXIuc2Nyb2xsUGFyZW50KCEwKSx0aGlzLm9mZnNldFBhcmVudD10aGlzLmhlbHBlci5vZmZzZXRQYXJlbnQoKSx0aGlzLmhhc0ZpeGVkQW5jZXN0b3I9dGhpcy5oZWxwZXIucGFyZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiJmaXhlZCI9PT10KHRoaXMpLmNzcygicG9zaXRpb24iKX0pLmxlbmd0aD4wLHRoaXMucG9zaXRpb25BYnM9dGhpcy5lbGVtZW50Lm9mZnNldCgpLHRoaXMuX3JlZnJlc2hPZmZzZXRzKGUpLHRoaXMub3JpZ2luYWxQb3NpdGlvbj10aGlzLnBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24oZSwhMSksdGhpcy5vcmlnaW5hbFBhZ2VYPWUucGFnZVgsdGhpcy5vcmlnaW5hbFBhZ2VZPWUucGFnZVksaS5jdXJzb3JBdCYmdGhpcy5fYWRqdXN0T2Zmc2V0RnJvbUhlbHBlcihpLmN1cnNvckF0KSx0aGlzLl9zZXRDb250YWlubWVudCgpLHRoaXMuX3RyaWdnZXIoInN0YXJ0IixlKT09PSExPyh0aGlzLl9jbGVhcigpLCExKToodGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpLHQudWkuZGRtYW5hZ2VyJiYhaS5kcm9wQmVoYXZpb3VyJiZ0LnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0aGlzLGUpLHRoaXMuX21vdXNlRHJhZyhlLCEwKSx0LnVpLmRkbWFuYWdlciYmdC51aS5kZG1hbmFnZXIuZHJhZ1N0YXJ0KHRoaXMsZSksITApfSxfcmVmcmVzaE9mZnNldHM6ZnVuY3Rpb24odCl7dGhpcy5vZmZzZXQ9e3RvcDp0aGlzLnBvc2l0aW9uQWJzLnRvcC10aGlzLm1hcmdpbnMudG9wLGxlZnQ6dGhpcy5wb3NpdGlvbkFicy5sZWZ0LXRoaXMubWFyZ2lucy5sZWZ0LHNjcm9sbDohMSxwYXJlbnQ6dGhpcy5fZ2V0UGFyZW50T2Zmc2V0KCkscmVsYXRpdmU6dGhpcy5fZ2V0UmVsYXRpdmVPZmZzZXQoKX0sdGhpcy5vZmZzZXQuY2xpY2s9e2xlZnQ6dC5wYWdlWC10aGlzLm9mZnNldC5sZWZ0LHRvcDp0LnBhZ2VZLXRoaXMub2Zmc2V0LnRvcH19LF9tb3VzZURyYWc6ZnVuY3Rpb24oZSxpKXtpZih0aGlzLmhhc0ZpeGVkQW5jZXN0b3ImJih0aGlzLm9mZnNldC5wYXJlbnQ9dGhpcy5fZ2V0UGFyZW50T2Zmc2V0KCkpLHRoaXMucG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbihlLCEwKSx0aGlzLnBvc2l0aW9uQWJzPXRoaXMuX2NvbnZlcnRQb3NpdGlvblRvKCJhYnNvbHV0ZSIpLCFpKXt2YXIgcz10aGlzLl91aUhhc2goKTtpZih0aGlzLl90cmlnZ2VyKCJkcmFnIixlLHMpPT09ITEpcmV0dXJuIHRoaXMuX21vdXNlVXAobmV3IHQuRXZlbnQoIm1vdXNldXAiLGUpKSwhMTt0aGlzLnBvc2l0aW9uPXMucG9zaXRpb259cmV0dXJuIHRoaXMuaGVscGVyWzBdLnN0eWxlLmxlZnQ9dGhpcy5wb3NpdGlvbi5sZWZ0KyJweCIsdGhpcy5oZWxwZXJbMF0uc3R5bGUudG9wPXRoaXMucG9zaXRpb24udG9wKyJweCIsdC51aS5kZG1hbmFnZXImJnQudWkuZGRtYW5hZ2VyLmRyYWcodGhpcyxlKSwhMX0sX21vdXNlU3RvcDpmdW5jdGlvbihlKXt2YXIgaT10aGlzLHM9ITE7cmV0dXJuIHQudWkuZGRtYW5hZ2VyJiYhdGhpcy5vcHRpb25zLmRyb3BCZWhhdmlvdXImJihzPXQudWkuZGRtYW5hZ2VyLmRyb3AodGhpcyxlKSksdGhpcy5kcm9wcGVkJiYocz10aGlzLmRyb3BwZWQsdGhpcy5kcm9wcGVkPSExKSwiaW52YWxpZCI9PT10aGlzLm9wdGlvbnMucmV2ZXJ0JiYhc3x8InZhbGlkIj09PXRoaXMub3B0aW9ucy5yZXZlcnQmJnN8fHRoaXMub3B0aW9ucy5yZXZlcnQ9PT0hMHx8dC5pc0Z1bmN0aW9uKHRoaXMub3B0aW9ucy5yZXZlcnQpJiZ0aGlzLm9wdGlvbnMucmV2ZXJ0LmNhbGwodGhpcy5lbGVtZW50LHMpP3QodGhpcy5oZWxwZXIpLmFuaW1hdGUodGhpcy5vcmlnaW5hbFBvc2l0aW9uLHBhcnNlSW50KHRoaXMub3B0aW9ucy5yZXZlcnREdXJhdGlvbiwxMCksZnVuY3Rpb24oKXtpLl90cmlnZ2VyKCJzdG9wIixlKSE9PSExJiZpLl9jbGVhcigpfSk6dGhpcy5fdHJpZ2dlcigic3RvcCIsZSkhPT0hMSYmdGhpcy5fY2xlYXIoKSwhMX0sX21vdXNlVXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3VuYmxvY2tGcmFtZXMoKSx0LnVpLmRkbWFuYWdlciYmdC51aS5kZG1hbmFnZXIuZHJhZ1N0b3AodGhpcyxlKSx0aGlzLmhhbmRsZUVsZW1lbnQuaXMoZS50YXJnZXQpJiZ0aGlzLmVsZW1lbnQudHJpZ2dlcigiZm9jdXMiKSx0LnVpLm1vdXNlLnByb3RvdHlwZS5fbW91c2VVcC5jYWxsKHRoaXMsZSl9LGNhbmNlbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhlbHBlci5pcygiLnVpLWRyYWdnYWJsZS1kcmFnZ2luZyIpP3RoaXMuX21vdXNlVXAobmV3IHQuRXZlbnQoIm1vdXNldXAiLHt0YXJnZXQ6dGhpcy5lbGVtZW50WzBdfSkpOnRoaXMuX2NsZWFyKCksdGhpc30sX2dldEhhbmRsZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vcHRpb25zLmhhbmRsZT8hIXQoZS50YXJnZXQpLmNsb3Nlc3QodGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLmhhbmRsZSkpLmxlbmd0aDohMH0sX3NldEhhbmRsZUNsYXNzTmFtZTpmdW5jdGlvbigpe3RoaXMuaGFuZGxlRWxlbWVudD10aGlzLm9wdGlvbnMuaGFuZGxlP3RoaXMuZWxlbWVudC5maW5kKHRoaXMub3B0aW9ucy5oYW5kbGUpOnRoaXMuZWxlbWVudCx0aGlzLl9hZGRDbGFzcyh0aGlzLmhhbmRsZUVsZW1lbnQsInVpLWRyYWdnYWJsZS1oYW5kbGUiKX0sX3JlbW92ZUhhbmRsZUNsYXNzTmFtZTpmdW5jdGlvbigpe3RoaXMuX3JlbW92ZUNsYXNzKHRoaXMuaGFuZGxlRWxlbWVudCwidWktZHJhZ2dhYmxlLWhhbmRsZSIpfSxfY3JlYXRlSGVscGVyOmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXMub3B0aW9ucyxzPXQuaXNGdW5jdGlvbihpLmhlbHBlciksbj1zP3QoaS5oZWxwZXIuYXBwbHkodGhpcy5lbGVtZW50WzBdLFtlXSkpOiJjbG9uZSI9PT1pLmhlbHBlcj90aGlzLmVsZW1lbnQuY2xvbmUoKS5yZW1vdmVBdHRyKCJpZCIpOnRoaXMuZWxlbWVudDtyZXR1cm4gbi5wYXJlbnRzKCJib2R5IikubGVuZ3RofHxuLmFwcGVuZFRvKCJwYXJlbnQiPT09aS5hcHBlbmRUbz90aGlzLmVsZW1lbnRbMF0ucGFyZW50Tm9kZTppLmFwcGVuZFRvKSxzJiZuWzBdPT09dGhpcy5lbGVtZW50WzBdJiZ0aGlzLl9zZXRQb3NpdGlvblJlbGF0aXZlKCksblswXT09PXRoaXMuZWxlbWVudFswXXx8LyhmaXhlZHxhYnNvbHV0ZSkvLnRlc3Qobi5jc3MoInBvc2l0aW9uIikpfHxuLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIpLG59LF9zZXRQb3NpdGlvblJlbGF0aXZlOmZ1bmN0aW9uKCl7L14oPzpyfGF8ZikvLnRlc3QodGhpcy5lbGVtZW50LmNzcygicG9zaXRpb24iKSl8fCh0aGlzLmVsZW1lbnRbMF0uc3R5bGUucG9zaXRpb249InJlbGF0aXZlIil9LF9hZGp1c3RPZmZzZXRGcm9tSGVscGVyOmZ1bmN0aW9uKGUpeyJzdHJpbmciPT10eXBlb2YgZSYmKGU9ZS5zcGxpdCgiICIpKSx0LmlzQXJyYXkoZSkmJihlPXtsZWZ0OitlWzBdLHRvcDorZVsxXXx8MH0pLCJsZWZ0ImluIGUmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PWUubGVmdCt0aGlzLm1hcmdpbnMubGVmdCksInJpZ2h0ImluIGUmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtZS5yaWdodCt0aGlzLm1hcmdpbnMubGVmdCksInRvcCJpbiBlJiYodGhpcy5vZmZzZXQuY2xpY2sudG9wPWUudG9wK3RoaXMubWFyZ2lucy50b3ApLCJib3R0b20iaW4gZSYmKHRoaXMub2Zmc2V0LmNsaWNrLnRvcD10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC1lLmJvdHRvbSt0aGlzLm1hcmdpbnMudG9wKX0sX2lzUm9vdE5vZGU6ZnVuY3Rpb24odCl7cmV0dXJuLyhodG1sfGJvZHkpL2kudGVzdCh0LnRhZ05hbWUpfHx0PT09dGhpcy5kb2N1bWVudFswXX0sX2dldFBhcmVudE9mZnNldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub2Zmc2V0UGFyZW50Lm9mZnNldCgpLGk9dGhpcy5kb2N1bWVudFswXTtyZXR1cm4iYWJzb2x1dGUiPT09dGhpcy5jc3NQb3NpdGlvbiYmdGhpcy5zY3JvbGxQYXJlbnRbMF0hPT1pJiZ0LmNvbnRhaW5zKHRoaXMuc2Nyb2xsUGFyZW50WzBdLHRoaXMub2Zmc2V0UGFyZW50WzBdKSYmKGUubGVmdCs9dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpLGUudG9wKz10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSksdGhpcy5faXNSb290Tm9kZSh0aGlzLm9mZnNldFBhcmVudFswXSkmJihlPXt0b3A6MCxsZWZ0OjB9KSx7dG9wOmUudG9wKyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSxsZWZ0OmUubGVmdCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApfX0sX2dldFJlbGF0aXZlT2Zmc2V0OmZ1bmN0aW9uKCl7aWYoInJlbGF0aXZlIiE9PXRoaXMuY3NzUG9zaXRpb24pcmV0dXJue3RvcDowLGxlZnQ6MH07dmFyIHQ9dGhpcy5lbGVtZW50LnBvc2l0aW9uKCksZT10aGlzLl9pc1Jvb3ROb2RlKHRoaXMuc2Nyb2xsUGFyZW50WzBdKTtyZXR1cm57dG9wOnQudG9wLShwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoInRvcCIpLDEwKXx8MCkrKGU/MDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSksbGVmdDp0LmxlZnQtKHBhcnNlSW50KHRoaXMuaGVscGVyLmNzcygibGVmdCIpLDEwKXx8MCkrKGU/MDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCkpfX0sX2NhY2hlTWFyZ2luczpmdW5jdGlvbigpe3RoaXMubWFyZ2lucz17bGVmdDpwYXJzZUludCh0aGlzLmVsZW1lbnQuY3NzKCJtYXJnaW5MZWZ0IiksMTApfHwwLHRvcDpwYXJzZUludCh0aGlzLmVsZW1lbnQuY3NzKCJtYXJnaW5Ub3AiKSwxMCl8fDAscmlnaHQ6cGFyc2VJbnQodGhpcy5lbGVtZW50LmNzcygibWFyZ2luUmlnaHQiKSwxMCl8fDAsYm90dG9tOnBhcnNlSW50KHRoaXMuZWxlbWVudC5jc3MoIm1hcmdpbkJvdHRvbSIpLDEwKXx8MH19LF9jYWNoZUhlbHBlclByb3BvcnRpb25zOmZ1bmN0aW9uKCl7dGhpcy5oZWxwZXJQcm9wb3J0aW9ucz17d2lkdGg6dGhpcy5oZWxwZXIub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlzLmhlbHBlci5vdXRlckhlaWdodCgpfX0sX3NldENvbnRhaW5tZW50OmZ1bmN0aW9uKCl7dmFyIGUsaSxzLG49dGhpcy5vcHRpb25zLG89dGhpcy5kb2N1bWVudFswXTtyZXR1cm4gdGhpcy5yZWxhdGl2ZUNvbnRhaW5lcj1udWxsLG4uY29udGFpbm1lbnQ/IndpbmRvdyI9PT1uLmNvbnRhaW5tZW50Pyh0aGlzLmNvbnRhaW5tZW50PVt0KHdpbmRvdykuc2Nyb2xsTGVmdCgpLXRoaXMub2Zmc2V0LnJlbGF0aXZlLmxlZnQtdGhpcy5vZmZzZXQucGFyZW50LmxlZnQsdCh3aW5kb3cpLnNjcm9sbFRvcCgpLXRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wLHQod2luZG93KS5zY3JvbGxMZWZ0KCkrdCh3aW5kb3cpLndpZHRoKCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdCx0KHdpbmRvdykuc2Nyb2xsVG9wKCkrKHQod2luZG93KS5oZWlnaHQoKXx8by5ib2R5LnBhcmVudE5vZGUuc2Nyb2xsSGVpZ2h0KS10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10aGlzLm1hcmdpbnMudG9wXSx2b2lkIDApOiJkb2N1bWVudCI9PT1uLmNvbnRhaW5tZW50Pyh0aGlzLmNvbnRhaW5tZW50PVswLDAsdChvKS53aWR0aCgpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsKHQobykuaGVpZ2h0KCl8fG8uYm9keS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF0sdm9pZCAwKTpuLmNvbnRhaW5tZW50LmNvbnN0cnVjdG9yPT09QXJyYXk/KHRoaXMuY29udGFpbm1lbnQ9bi5jb250YWlubWVudCx2b2lkIDApOigicGFyZW50Ij09PW4uY29udGFpbm1lbnQmJihuLmNvbnRhaW5tZW50PXRoaXMuaGVscGVyWzBdLnBhcmVudE5vZGUpLGk9dChuLmNvbnRhaW5tZW50KSxzPWlbMF0scyYmKGU9LyhzY3JvbGx8YXV0bykvLnRlc3QoaS5jc3MoIm92ZXJmbG93IikpLHRoaXMuY29udGFpbm1lbnQ9WyhwYXJzZUludChpLmNzcygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKSsocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdMZWZ0IiksMTApfHwwKSwocGFyc2VJbnQoaS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSsocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdUb3AiKSwxMCl8fDApLChlP01hdGgubWF4KHMuc2Nyb2xsV2lkdGgscy5vZmZzZXRXaWR0aCk6cy5vZmZzZXRXaWR0aCktKHBhcnNlSW50KGkuY3NzKCJib3JkZXJSaWdodFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdSaWdodCIpLDEwKXx8MCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdC10aGlzLm1hcmdpbnMucmlnaHQsKGU/TWF0aC5tYXgocy5zY3JvbGxIZWlnaHQscy5vZmZzZXRIZWlnaHQpOnMub2Zmc2V0SGVpZ2h0KS0ocGFyc2VJbnQoaS5jc3MoImJvcmRlckJvdHRvbVdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdCb3R0b20iKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3AtdGhpcy5tYXJnaW5zLmJvdHRvbV0sdGhpcy5yZWxhdGl2ZUNvbnRhaW5lcj1pKSx2b2lkIDApOih0aGlzLmNvbnRhaW5tZW50PW51bGwsdm9pZCAwKQp9LF9jb252ZXJ0UG9zaXRpb25UbzpmdW5jdGlvbih0LGUpe2V8fChlPXRoaXMucG9zaXRpb24pO3ZhciBpPSJhYnNvbHV0ZSI9PT10PzE6LTEscz10aGlzLl9pc1Jvb3ROb2RlKHRoaXMuc2Nyb2xsUGFyZW50WzBdKTtyZXR1cm57dG9wOmUudG9wK3RoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcCppK3RoaXMub2Zmc2V0LnBhcmVudC50b3AqaS0oImZpeGVkIj09PXRoaXMuY3NzUG9zaXRpb24/LXRoaXMub2Zmc2V0LnNjcm9sbC50b3A6cz8wOnRoaXMub2Zmc2V0LnNjcm9sbC50b3ApKmksbGVmdDplLmxlZnQrdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdCppK3RoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KmktKCJmaXhlZCI9PT10aGlzLmNzc1Bvc2l0aW9uPy10aGlzLm9mZnNldC5zY3JvbGwubGVmdDpzPzA6dGhpcy5vZmZzZXQuc2Nyb2xsLmxlZnQpKml9fSxfZ2VuZXJhdGVQb3NpdGlvbjpmdW5jdGlvbih0LGUpe3ZhciBpLHMsbixvLGE9dGhpcy5vcHRpb25zLHI9dGhpcy5faXNSb290Tm9kZSh0aGlzLnNjcm9sbFBhcmVudFswXSksaD10LnBhZ2VYLGw9dC5wYWdlWTtyZXR1cm4gciYmdGhpcy5vZmZzZXQuc2Nyb2xsfHwodGhpcy5vZmZzZXQuc2Nyb2xsPXt0b3A6dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCksbGVmdDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCl9KSxlJiYodGhpcy5jb250YWlubWVudCYmKHRoaXMucmVsYXRpdmVDb250YWluZXI/KHM9dGhpcy5yZWxhdGl2ZUNvbnRhaW5lci5vZmZzZXQoKSxpPVt0aGlzLmNvbnRhaW5tZW50WzBdK3MubGVmdCx0aGlzLmNvbnRhaW5tZW50WzFdK3MudG9wLHRoaXMuY29udGFpbm1lbnRbMl0rcy5sZWZ0LHRoaXMuY29udGFpbm1lbnRbM10rcy50b3BdKTppPXRoaXMuY29udGFpbm1lbnQsdC5wYWdlWC10aGlzLm9mZnNldC5jbGljay5sZWZ0PGlbMF0mJihoPWlbMF0rdGhpcy5vZmZzZXQuY2xpY2subGVmdCksdC5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A8aVsxXSYmKGw9aVsxXSt0aGlzLm9mZnNldC5jbGljay50b3ApLHQucGFnZVgtdGhpcy5vZmZzZXQuY2xpY2subGVmdD5pWzJdJiYoaD1pWzJdK3RoaXMub2Zmc2V0LmNsaWNrLmxlZnQpLHQucGFnZVktdGhpcy5vZmZzZXQuY2xpY2sudG9wPmlbM10mJihsPWlbM10rdGhpcy5vZmZzZXQuY2xpY2sudG9wKSksYS5ncmlkJiYobj1hLmdyaWRbMV0/dGhpcy5vcmlnaW5hbFBhZ2VZK01hdGgucm91bmQoKGwtdGhpcy5vcmlnaW5hbFBhZ2VZKS9hLmdyaWRbMV0pKmEuZ3JpZFsxXTp0aGlzLm9yaWdpbmFsUGFnZVksbD1pP24tdGhpcy5vZmZzZXQuY2xpY2sudG9wPj1pWzFdfHxuLXRoaXMub2Zmc2V0LmNsaWNrLnRvcD5pWzNdP246bi10aGlzLm9mZnNldC5jbGljay50b3A+PWlbMV0/bi1hLmdyaWRbMV06bithLmdyaWRbMV06bixvPWEuZ3JpZFswXT90aGlzLm9yaWdpbmFsUGFnZVgrTWF0aC5yb3VuZCgoaC10aGlzLm9yaWdpbmFsUGFnZVgpL2EuZ3JpZFswXSkqYS5ncmlkWzBdOnRoaXMub3JpZ2luYWxQYWdlWCxoPWk/by10aGlzLm9mZnNldC5jbGljay5sZWZ0Pj1pWzBdfHxvLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+aVsyXT9vOm8tdGhpcy5vZmZzZXQuY2xpY2subGVmdD49aVswXT9vLWEuZ3JpZFswXTpvK2EuZ3JpZFswXTpvKSwieSI9PT1hLmF4aXMmJihoPXRoaXMub3JpZ2luYWxQYWdlWCksIngiPT09YS5heGlzJiYobD10aGlzLm9yaWdpbmFsUGFnZVkpKSx7dG9wOmwtdGhpcy5vZmZzZXQuY2xpY2sudG9wLXRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wKygiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5vZmZzZXQuc2Nyb2xsLnRvcDpyPzA6dGhpcy5vZmZzZXQuc2Nyb2xsLnRvcCksbGVmdDpoLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQtdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdC10aGlzLm9mZnNldC5wYXJlbnQubGVmdCsoImZpeGVkIj09PXRoaXMuY3NzUG9zaXRpb24/LXRoaXMub2Zmc2V0LnNjcm9sbC5sZWZ0OnI/MDp0aGlzLm9mZnNldC5zY3JvbGwubGVmdCl9fSxfY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLl9yZW1vdmVDbGFzcyh0aGlzLmhlbHBlciwidWktZHJhZ2dhYmxlLWRyYWdnaW5nIiksdGhpcy5oZWxwZXJbMF09PT10aGlzLmVsZW1lbnRbMF18fHRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbHx8dGhpcy5oZWxwZXIucmVtb3ZlKCksdGhpcy5oZWxwZXI9bnVsbCx0aGlzLmNhbmNlbEhlbHBlclJlbW92YWw9ITEsdGhpcy5kZXN0cm95T25DbGVhciYmdGhpcy5kZXN0cm95KCl9LF90cmlnZ2VyOmZ1bmN0aW9uKGUsaSxzKXtyZXR1cm4gcz1zfHx0aGlzLl91aUhhc2goKSx0LnVpLnBsdWdpbi5jYWxsKHRoaXMsZSxbaSxzLHRoaXNdLCEwKSwvXihkcmFnfHN0YXJ0fHN0b3ApLy50ZXN0KGUpJiYodGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKSxzLm9mZnNldD10aGlzLnBvc2l0aW9uQWJzKSx0LldpZGdldC5wcm90b3R5cGUuX3RyaWdnZXIuY2FsbCh0aGlzLGUsaSxzKX0scGx1Z2luczp7fSxfdWlIYXNoOmZ1bmN0aW9uKCl7cmV0dXJue2hlbHBlcjp0aGlzLmhlbHBlcixwb3NpdGlvbjp0aGlzLnBvc2l0aW9uLG9yaWdpbmFsUG9zaXRpb246dGhpcy5vcmlnaW5hbFBvc2l0aW9uLG9mZnNldDp0aGlzLnBvc2l0aW9uQWJzfX19KSx0LnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsImNvbm5lY3RUb1NvcnRhYmxlIix7c3RhcnQ6ZnVuY3Rpb24oZSxpLHMpe3ZhciBuPXQuZXh0ZW5kKHt9LGkse2l0ZW06cy5lbGVtZW50fSk7cy5zb3J0YWJsZXM9W10sdChzLm9wdGlvbnMuY29ubmVjdFRvU29ydGFibGUpLmVhY2goZnVuY3Rpb24oKXt2YXIgaT10KHRoaXMpLnNvcnRhYmxlKCJpbnN0YW5jZSIpO2kmJiFpLm9wdGlvbnMuZGlzYWJsZWQmJihzLnNvcnRhYmxlcy5wdXNoKGkpLGkucmVmcmVzaFBvc2l0aW9ucygpLGkuX3RyaWdnZXIoImFjdGl2YXRlIixlLG4pKX0pfSxzdG9wOmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj10LmV4dGVuZCh7fSxpLHtpdGVtOnMuZWxlbWVudH0pO3MuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMSx0LmVhY2gocy5zb3J0YWJsZXMsZnVuY3Rpb24oKXt2YXIgdD10aGlzO3QuaXNPdmVyPyh0LmlzT3Zlcj0wLHMuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMCx0LmNhbmNlbEhlbHBlclJlbW92YWw9ITEsdC5fc3RvcmVkQ1NTPXtwb3NpdGlvbjp0LnBsYWNlaG9sZGVyLmNzcygicG9zaXRpb24iKSx0b3A6dC5wbGFjZWhvbGRlci5jc3MoInRvcCIpLGxlZnQ6dC5wbGFjZWhvbGRlci5jc3MoImxlZnQiKX0sdC5fbW91c2VTdG9wKGUpLHQub3B0aW9ucy5oZWxwZXI9dC5vcHRpb25zLl9oZWxwZXIpOih0LmNhbmNlbEhlbHBlclJlbW92YWw9ITAsdC5fdHJpZ2dlcigiZGVhY3RpdmF0ZSIsZSxuKSl9KX0sZHJhZzpmdW5jdGlvbihlLGkscyl7dC5lYWNoKHMuc29ydGFibGVzLGZ1bmN0aW9uKCl7dmFyIG49ITEsbz10aGlzO28ucG9zaXRpb25BYnM9cy5wb3NpdGlvbkFicyxvLmhlbHBlclByb3BvcnRpb25zPXMuaGVscGVyUHJvcG9ydGlvbnMsby5vZmZzZXQuY2xpY2s9cy5vZmZzZXQuY2xpY2ssby5faW50ZXJzZWN0c1dpdGgoby5jb250YWluZXJDYWNoZSkmJihuPSEwLHQuZWFjaChzLnNvcnRhYmxlcyxmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9uQWJzPXMucG9zaXRpb25BYnMsdGhpcy5oZWxwZXJQcm9wb3J0aW9ucz1zLmhlbHBlclByb3BvcnRpb25zLHRoaXMub2Zmc2V0LmNsaWNrPXMub2Zmc2V0LmNsaWNrLHRoaXMhPT1vJiZ0aGlzLl9pbnRlcnNlY3RzV2l0aCh0aGlzLmNvbnRhaW5lckNhY2hlKSYmdC5jb250YWlucyhvLmVsZW1lbnRbMF0sdGhpcy5lbGVtZW50WzBdKSYmKG49ITEpLG59KSksbj8oby5pc092ZXJ8fChvLmlzT3Zlcj0xLHMuX3BhcmVudD1pLmhlbHBlci5wYXJlbnQoKSxvLmN1cnJlbnRJdGVtPWkuaGVscGVyLmFwcGVuZFRvKG8uZWxlbWVudCkuZGF0YSgidWktc29ydGFibGUtaXRlbSIsITApLG8ub3B0aW9ucy5faGVscGVyPW8ub3B0aW9ucy5oZWxwZXIsby5vcHRpb25zLmhlbHBlcj1mdW5jdGlvbigpe3JldHVybiBpLmhlbHBlclswXX0sZS50YXJnZXQ9by5jdXJyZW50SXRlbVswXSxvLl9tb3VzZUNhcHR1cmUoZSwhMCksby5fbW91c2VTdGFydChlLCEwLCEwKSxvLm9mZnNldC5jbGljay50b3A9cy5vZmZzZXQuY2xpY2sudG9wLG8ub2Zmc2V0LmNsaWNrLmxlZnQ9cy5vZmZzZXQuY2xpY2subGVmdCxvLm9mZnNldC5wYXJlbnQubGVmdC09cy5vZmZzZXQucGFyZW50LmxlZnQtby5vZmZzZXQucGFyZW50LmxlZnQsby5vZmZzZXQucGFyZW50LnRvcC09cy5vZmZzZXQucGFyZW50LnRvcC1vLm9mZnNldC5wYXJlbnQudG9wLHMuX3RyaWdnZXIoInRvU29ydGFibGUiLGUpLHMuZHJvcHBlZD1vLmVsZW1lbnQsdC5lYWNoKHMuc29ydGFibGVzLGZ1bmN0aW9uKCl7dGhpcy5yZWZyZXNoUG9zaXRpb25zKCl9KSxzLmN1cnJlbnRJdGVtPXMuZWxlbWVudCxvLmZyb21PdXRzaWRlPXMpLG8uY3VycmVudEl0ZW0mJihvLl9tb3VzZURyYWcoZSksaS5wb3NpdGlvbj1vLnBvc2l0aW9uKSk6by5pc092ZXImJihvLmlzT3Zlcj0wLG8uY2FuY2VsSGVscGVyUmVtb3ZhbD0hMCxvLm9wdGlvbnMuX3JldmVydD1vLm9wdGlvbnMucmV2ZXJ0LG8ub3B0aW9ucy5yZXZlcnQ9ITEsby5fdHJpZ2dlcigib3V0IixlLG8uX3VpSGFzaChvKSksby5fbW91c2VTdG9wKGUsITApLG8ub3B0aW9ucy5yZXZlcnQ9by5vcHRpb25zLl9yZXZlcnQsby5vcHRpb25zLmhlbHBlcj1vLm9wdGlvbnMuX2hlbHBlcixvLnBsYWNlaG9sZGVyJiZvLnBsYWNlaG9sZGVyLnJlbW92ZSgpLGkuaGVscGVyLmFwcGVuZFRvKHMuX3BhcmVudCkscy5fcmVmcmVzaE9mZnNldHMoZSksaS5wb3NpdGlvbj1zLl9nZW5lcmF0ZVBvc2l0aW9uKGUsITApLHMuX3RyaWdnZXIoImZyb21Tb3J0YWJsZSIsZSkscy5kcm9wcGVkPSExLHQuZWFjaChzLnNvcnRhYmxlcyxmdW5jdGlvbigpe3RoaXMucmVmcmVzaFBvc2l0aW9ucygpfSkpfSl9fSksdC51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJjdXJzb3IiLHtzdGFydDpmdW5jdGlvbihlLGkscyl7dmFyIG49dCgiYm9keSIpLG89cy5vcHRpb25zO24uY3NzKCJjdXJzb3IiKSYmKG8uX2N1cnNvcj1uLmNzcygiY3Vyc29yIikpLG4uY3NzKCJjdXJzb3IiLG8uY3Vyc29yKX0sc3RvcDpmdW5jdGlvbihlLGkscyl7dmFyIG49cy5vcHRpb25zO24uX2N1cnNvciYmdCgiYm9keSIpLmNzcygiY3Vyc29yIixuLl9jdXJzb3IpfX0pLHQudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwib3BhY2l0eSIse3N0YXJ0OmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj10KGkuaGVscGVyKSxvPXMub3B0aW9ucztuLmNzcygib3BhY2l0eSIpJiYoby5fb3BhY2l0eT1uLmNzcygib3BhY2l0eSIpKSxuLmNzcygib3BhY2l0eSIsby5vcGFjaXR5KX0sc3RvcDpmdW5jdGlvbihlLGkscyl7dmFyIG49cy5vcHRpb25zO24uX29wYWNpdHkmJnQoaS5oZWxwZXIpLmNzcygib3BhY2l0eSIsbi5fb3BhY2l0eSl9fSksdC51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJzY3JvbGwiLHtzdGFydDpmdW5jdGlvbih0LGUsaSl7aS5zY3JvbGxQYXJlbnROb3RIaWRkZW58fChpLnNjcm9sbFBhcmVudE5vdEhpZGRlbj1pLmhlbHBlci5zY3JvbGxQYXJlbnQoITEpKSxpLnNjcm9sbFBhcmVudE5vdEhpZGRlblswXSE9PWkuZG9jdW1lbnRbMF0mJiJIVE1MIiE9PWkuc2Nyb2xsUGFyZW50Tm90SGlkZGVuWzBdLnRhZ05hbWUmJihpLm92ZXJmbG93T2Zmc2V0PWkuc2Nyb2xsUGFyZW50Tm90SGlkZGVuLm9mZnNldCgpKX0sZHJhZzpmdW5jdGlvbihlLGkscyl7dmFyIG49cy5vcHRpb25zLG89ITEsYT1zLnNjcm9sbFBhcmVudE5vdEhpZGRlblswXSxyPXMuZG9jdW1lbnRbMF07YSE9PXImJiJIVE1MIiE9PWEudGFnTmFtZT8obi5heGlzJiYieCI9PT1uLmF4aXN8fChzLm92ZXJmbG93T2Zmc2V0LnRvcCthLm9mZnNldEhlaWdodC1lLnBhZ2VZPG4uc2Nyb2xsU2Vuc2l0aXZpdHk/YS5zY3JvbGxUb3A9bz1hLnNjcm9sbFRvcCtuLnNjcm9sbFNwZWVkOmUucGFnZVktcy5vdmVyZmxvd09mZnNldC50b3A8bi5zY3JvbGxTZW5zaXRpdml0eSYmKGEuc2Nyb2xsVG9wPW89YS5zY3JvbGxUb3Atbi5zY3JvbGxTcGVlZCkpLG4uYXhpcyYmInkiPT09bi5heGlzfHwocy5vdmVyZmxvd09mZnNldC5sZWZ0K2Eub2Zmc2V0V2lkdGgtZS5wYWdlWDxuLnNjcm9sbFNlbnNpdGl2aXR5P2Euc2Nyb2xsTGVmdD1vPWEuc2Nyb2xsTGVmdCtuLnNjcm9sbFNwZWVkOmUucGFnZVgtcy5vdmVyZmxvd09mZnNldC5sZWZ0PG4uc2Nyb2xsU2Vuc2l0aXZpdHkmJihhLnNjcm9sbExlZnQ9bz1hLnNjcm9sbExlZnQtbi5zY3JvbGxTcGVlZCkpKToobi5heGlzJiYieCI9PT1uLmF4aXN8fChlLnBhZ2VZLXQocikuc2Nyb2xsVG9wKCk8bi5zY3JvbGxTZW5zaXRpdml0eT9vPXQocikuc2Nyb2xsVG9wKHQocikuc2Nyb2xsVG9wKCktbi5zY3JvbGxTcGVlZCk6dCh3aW5kb3cpLmhlaWdodCgpLShlLnBhZ2VZLXQocikuc2Nyb2xsVG9wKCkpPG4uc2Nyb2xsU2Vuc2l0aXZpdHkmJihvPXQocikuc2Nyb2xsVG9wKHQocikuc2Nyb2xsVG9wKCkrbi5zY3JvbGxTcGVlZCkpKSxuLmF4aXMmJiJ5Ij09PW4uYXhpc3x8KGUucGFnZVgtdChyKS5zY3JvbGxMZWZ0KCk8bi5zY3JvbGxTZW5zaXRpdml0eT9vPXQocikuc2Nyb2xsTGVmdCh0KHIpLnNjcm9sbExlZnQoKS1uLnNjcm9sbFNwZWVkKTp0KHdpbmRvdykud2lkdGgoKS0oZS5wYWdlWC10KHIpLnNjcm9sbExlZnQoKSk8bi5zY3JvbGxTZW5zaXRpdml0eSYmKG89dChyKS5zY3JvbGxMZWZ0KHQocikuc2Nyb2xsTGVmdCgpK24uc2Nyb2xsU3BlZWQpKSkpLG8hPT0hMSYmdC51aS5kZG1hbmFnZXImJiFuLmRyb3BCZWhhdmlvdXImJnQudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHMsZSl9fSksdC51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJzbmFwIix7c3RhcnQ6ZnVuY3Rpb24oZSxpLHMpe3ZhciBuPXMub3B0aW9ucztzLnNuYXBFbGVtZW50cz1bXSx0KG4uc25hcC5jb25zdHJ1Y3RvciE9PVN0cmluZz9uLnNuYXAuaXRlbXN8fCI6ZGF0YSh1aS1kcmFnZ2FibGUpIjpuLnNuYXApLmVhY2goZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpLGk9ZS5vZmZzZXQoKTt0aGlzIT09cy5lbGVtZW50WzBdJiZzLnNuYXBFbGVtZW50cy5wdXNoKHtpdGVtOnRoaXMsd2lkdGg6ZS5vdXRlcldpZHRoKCksaGVpZ2h0OmUub3V0ZXJIZWlnaHQoKSx0b3A6aS50b3AsbGVmdDppLmxlZnR9KX0pfSxkcmFnOmZ1bmN0aW9uKGUsaSxzKXt2YXIgbixvLGEscixoLGwsYyx1LGQscCxmPXMub3B0aW9ucyxnPWYuc25hcFRvbGVyYW5jZSxtPWkub2Zmc2V0LmxlZnQsXz1tK3MuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgsdj1pLm9mZnNldC50b3AsYj12K3MuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0O2ZvcihkPXMuc25hcEVsZW1lbnRzLmxlbmd0aC0xO2Q+PTA7ZC0tKWg9cy5zbmFwRWxlbWVudHNbZF0ubGVmdC1zLm1hcmdpbnMubGVmdCxsPWgrcy5zbmFwRWxlbWVudHNbZF0ud2lkdGgsYz1zLnNuYXBFbGVtZW50c1tkXS50b3Atcy5tYXJnaW5zLnRvcCx1PWMrcy5zbmFwRWxlbWVudHNbZF0uaGVpZ2h0LGgtZz5ffHxtPmwrZ3x8Yy1nPmJ8fHY+dStnfHwhdC5jb250YWlucyhzLnNuYXBFbGVtZW50c1tkXS5pdGVtLm93bmVyRG9jdW1lbnQscy5zbmFwRWxlbWVudHNbZF0uaXRlbSk/KHMuc25hcEVsZW1lbnRzW2RdLnNuYXBwaW5nJiZzLm9wdGlvbnMuc25hcC5yZWxlYXNlJiZzLm9wdGlvbnMuc25hcC5yZWxlYXNlLmNhbGwocy5lbGVtZW50LGUsdC5leHRlbmQocy5fdWlIYXNoKCkse3NuYXBJdGVtOnMuc25hcEVsZW1lbnRzW2RdLml0ZW19KSkscy5zbmFwRWxlbWVudHNbZF0uc25hcHBpbmc9ITEpOigiaW5uZXIiIT09Zi5zbmFwTW9kZSYmKG49Zz49TWF0aC5hYnMoYy1iKSxvPWc+PU1hdGguYWJzKHUtdiksYT1nPj1NYXRoLmFicyhoLV8pLHI9Zz49TWF0aC5hYnMobC1tKSxuJiYoaS5wb3NpdGlvbi50b3A9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOmMtcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQsbGVmdDowfSkudG9wKSxvJiYoaS5wb3NpdGlvbi50b3A9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOnUsbGVmdDowfSkudG9wKSxhJiYoaS5wb3NpdGlvbi5sZWZ0PXMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDowLGxlZnQ6aC1zLmhlbHBlclByb3BvcnRpb25zLndpZHRofSkubGVmdCksciYmKGkucG9zaXRpb24ubGVmdD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0Omx9KS5sZWZ0KSkscD1ufHxvfHxhfHxyLCJvdXRlciIhPT1mLnNuYXBNb2RlJiYobj1nPj1NYXRoLmFicyhjLXYpLG89Zz49TWF0aC5hYnModS1iKSxhPWc+PU1hdGguYWJzKGgtbSkscj1nPj1NYXRoLmFicyhsLV8pLG4mJihpLnBvc2l0aW9uLnRvcD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6YyxsZWZ0OjB9KS50b3ApLG8mJihpLnBvc2l0aW9uLnRvcD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6dS1zLmhlbHBlclByb3BvcnRpb25zLmhlaWdodCxsZWZ0OjB9KS50b3ApLGEmJihpLnBvc2l0aW9uLmxlZnQ9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOjAsbGVmdDpofSkubGVmdCksciYmKGkucG9zaXRpb24ubGVmdD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0Omwtcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aH0pLmxlZnQpKSwhcy5zbmFwRWxlbWVudHNbZF0uc25hcHBpbmcmJihufHxvfHxhfHxyfHxwKSYmcy5vcHRpb25zLnNuYXAuc25hcCYmcy5vcHRpb25zLnNuYXAuc25hcC5jYWxsKHMuZWxlbWVudCxlLHQuZXh0ZW5kKHMuX3VpSGFzaCgpLHtzbmFwSXRlbTpzLnNuYXBFbGVtZW50c1tkXS5pdGVtfSkpLHMuc25hcEVsZW1lbnRzW2RdLnNuYXBwaW5nPW58fG98fGF8fHJ8fHApfX0pLHQudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwic3RhY2siLHtzdGFydDpmdW5jdGlvbihlLGkscyl7dmFyIG4sbz1zLm9wdGlvbnMsYT10Lm1ha2VBcnJheSh0KG8uc3RhY2spKS5zb3J0KGZ1bmN0aW9uKGUsaSl7cmV0dXJuKHBhcnNlSW50KHQoZSkuY3NzKCJ6SW5kZXgiKSwxMCl8fDApLShwYXJzZUludCh0KGkpLmNzcygiekluZGV4IiksMTApfHwwKX0pO2EubGVuZ3RoJiYobj1wYXJzZUludCh0KGFbMF0pLmNzcygiekluZGV4IiksMTApfHwwLHQoYSkuZWFjaChmdW5jdGlvbihlKXt0KHRoaXMpLmNzcygiekluZGV4IixuK2UpfSksdGhpcy5jc3MoInpJbmRleCIsbithLmxlbmd0aCkpfX0pLHQudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwiekluZGV4Iix7c3RhcnQ6ZnVuY3Rpb24oZSxpLHMpe3ZhciBuPXQoaS5oZWxwZXIpLG89cy5vcHRpb25zO24uY3NzKCJ6SW5kZXgiKSYmKG8uX3pJbmRleD1uLmNzcygiekluZGV4IikpLG4uY3NzKCJ6SW5kZXgiLG8uekluZGV4KX0sc3RvcDpmdW5jdGlvbihlLGkscyl7dmFyIG49cy5vcHRpb25zO24uX3pJbmRleCYmdChpLmhlbHBlcikuY3NzKCJ6SW5kZXgiLG4uX3pJbmRleCl9fSksdC51aS5kcmFnZ2FibGUsdC53aWRnZXQoInVpLnJlc2l6YWJsZSIsdC51aS5tb3VzZSx7dmVyc2lvbjoiMS4xMi4wLXJjLjIiLHdpZGdldEV2ZW50UHJlZml4OiJyZXNpemUiLG9wdGlvbnM6e2Fsc29SZXNpemU6ITEsYW5pbWF0ZTohMSxhbmltYXRlRHVyYXRpb246InNsb3ciLGFuaW1hdGVFYXNpbmc6InN3aW5nIixhc3BlY3RSYXRpbzohMSxhdXRvSGlkZTohMSxjbGFzc2VzOnsidWktcmVzaXphYmxlLXNlIjoidWktaWNvbiB1aS1pY29uLWdyaXBzbWFsbC1kaWFnb25hbC1zZSJ9LGNvbnRhaW5tZW50OiExLGdob3N0OiExLGdyaWQ6ITEsaGFuZGxlczoiZSxzLHNlIixoZWxwZXI6ITEsbWF4SGVpZ2h0Om51bGwsbWF4V2lkdGg6bnVsbCxtaW5IZWlnaHQ6MTAsbWluV2lkdGg6MTAsekluZGV4OjkwLHJlc2l6ZTpudWxsLHN0YXJ0Om51bGwsc3RvcDpudWxsfSxfbnVtOmZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUZsb2F0KHQpfHwwfSxfaXNOdW1iZXI6ZnVuY3Rpb24odCl7cmV0dXJuIWlzTmFOKHBhcnNlRmxvYXQodCkpfSxfaGFzU2Nyb2xsOmZ1bmN0aW9uKGUsaSl7aWYoImhpZGRlbiI9PT10KGUpLmNzcygib3ZlcmZsb3ciKSlyZXR1cm4hMTt2YXIgcz1pJiYibGVmdCI9PT1pPyJzY3JvbGxMZWZ0Ijoic2Nyb2xsVG9wIixuPSExO3JldHVybiBlW3NdPjA/ITA6KGVbc109MSxuPWVbc10+MCxlW3NdPTAsbil9LF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgZSxpPXRoaXMub3B0aW9ucyxzPXRoaXM7dGhpcy5fYWRkQ2xhc3MoInVpLXJlc2l6YWJsZSIpLHQuZXh0ZW5kKHRoaXMse19hc3BlY3RSYXRpbzohIWkuYXNwZWN0UmF0aW8sYXNwZWN0UmF0aW86aS5hc3BlY3RSYXRpbyxvcmlnaW5hbEVsZW1lbnQ6dGhpcy5lbGVtZW50LF9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzOltdLF9oZWxwZXI6aS5oZWxwZXJ8fGkuZ2hvc3R8fGkuYW5pbWF0ZT9pLmhlbHBlcnx8InVpLXJlc2l6YWJsZS1oZWxwZXIiOm51bGx9KSx0aGlzLmVsZW1lbnRbMF0ubm9kZU5hbWUubWF0Y2goL14oY2FudmFzfHRleHRhcmVhfGlucHV0fHNlbGVjdHxidXR0b258aW1nKSQvaSkmJih0aGlzLmVsZW1lbnQud3JhcCh0KCI8ZGl2IGNsYXNzPSd1aS13cmFwcGVyJyBzdHlsZT0nb3ZlcmZsb3c6IGhpZGRlbjsnPjwvZGl2PiIpLmNzcyh7cG9zaXRpb246dGhpcy5lbGVtZW50LmNzcygicG9zaXRpb24iKSx3aWR0aDp0aGlzLmVsZW1lbnQub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlzLmVsZW1lbnQub3V0ZXJIZWlnaHQoKSx0b3A6dGhpcy5lbGVtZW50LmNzcygidG9wIiksbGVmdDp0aGlzLmVsZW1lbnQuY3NzKCJsZWZ0Iil9KSksdGhpcy5lbGVtZW50PXRoaXMuZWxlbWVudC5wYXJlbnQoKS5kYXRhKCJ1aS1yZXNpemFibGUiLHRoaXMuZWxlbWVudC5yZXNpemFibGUoImluc3RhbmNlIikpLHRoaXMuZWxlbWVudElzV3JhcHBlcj0hMCxlPXttYXJnaW5Ub3A6dGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJtYXJnaW5Ub3AiKSxtYXJnaW5SaWdodDp0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoIm1hcmdpblJpZ2h0IiksbWFyZ2luQm90dG9tOnRoaXMub3JpZ2luYWxFbGVtZW50LmNzcygibWFyZ2luQm90dG9tIiksbWFyZ2luTGVmdDp0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoIm1hcmdpbkxlZnQiKX0sdGhpcy5lbGVtZW50LmNzcyhlKSx0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoIm1hcmdpbiIsMCksdGhpcy5vcmlnaW5hbFJlc2l6ZVN0eWxlPXRoaXMub3JpZ2luYWxFbGVtZW50LmNzcygicmVzaXplIiksdGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJyZXNpemUiLCJub25lIiksdGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemVFbGVtZW50cy5wdXNoKHRoaXMub3JpZ2luYWxFbGVtZW50LmNzcyh7cG9zaXRpb246InN0YXRpYyIsem9vbToxLGRpc3BsYXk6ImJsb2NrIn0pKSx0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoZSksdGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemUoKSksdGhpcy5fc2V0dXBIYW5kbGVzKCksaS5hdXRvSGlkZSYmdCh0aGlzLmVsZW1lbnQpLm9uKCJtb3VzZWVudGVyIixmdW5jdGlvbigpe2kuZGlzYWJsZWR8fChzLl9yZW1vdmVDbGFzcygidWktcmVzaXphYmxlLWF1dG9oaWRlIikscy5faGFuZGxlcy5zaG93KCkpfSkub24oIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKCl7aS5kaXNhYmxlZHx8cy5yZXNpemluZ3x8KHMuX2FkZENsYXNzKCJ1aS1yZXNpemFibGUtYXV0b2hpZGUiKSxzLl9oYW5kbGVzLmhpZGUoKSl9KSx0aGlzLl9tb3VzZUluaXQoKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9tb3VzZURlc3Ryb3koKTt2YXIgZSxpPWZ1bmN0aW9uKGUpe3QoZSkucmVtb3ZlRGF0YSgicmVzaXphYmxlIikucmVtb3ZlRGF0YSgidWktcmVzaXphYmxlIikub2ZmKCIucmVzaXphYmxlIikuZmluZCgiLnVpLXJlc2l6YWJsZS1oYW5kbGUiKS5yZW1vdmUoKX07cmV0dXJuIHRoaXMuZWxlbWVudElzV3JhcHBlciYmKGkodGhpcy5lbGVtZW50KSxlPXRoaXMuZWxlbWVudCx0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3Moe3Bvc2l0aW9uOmUuY3NzKCJwb3NpdGlvbiIpLHdpZHRoOmUub3V0ZXJXaWR0aCgpLGhlaWdodDplLm91dGVySGVpZ2h0KCksdG9wOmUuY3NzKCJ0b3AiKSxsZWZ0OmUuY3NzKCJsZWZ0Iil9KS5pbnNlcnRBZnRlcihlKSxlLnJlbW92ZSgpKSx0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoInJlc2l6ZSIsdGhpcy5vcmlnaW5hbFJlc2l6ZVN0eWxlKSxpKHRoaXMub3JpZ2luYWxFbGVtZW50KSx0aGlzfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHRoaXMuX3N1cGVyKHQsZSksdCl7Y2FzZSJoYW5kbGVzIjp0aGlzLl9yZW1vdmVIYW5kbGVzKCksdGhpcy5fc2V0dXBIYW5kbGVzKCk7YnJlYWs7ZGVmYXVsdDp9fSxfc2V0dXBIYW5kbGVzOmZ1bmN0aW9uKCl7dmFyIGUsaSxzLG4sbyxhPXRoaXMub3B0aW9ucyxyPXRoaXM7aWYodGhpcy5oYW5kbGVzPWEuaGFuZGxlc3x8KHQoIi51aS1yZXNpemFibGUtaGFuZGxlIix0aGlzLmVsZW1lbnQpLmxlbmd0aD97bjoiLnVpLXJlc2l6YWJsZS1uIixlOiIudWktcmVzaXphYmxlLWUiLHM6Ii51aS1yZXNpemFibGUtcyIsdzoiLnVpLXJlc2l6YWJsZS13IixzZToiLnVpLXJlc2l6YWJsZS1zZSIsc3c6Ii51aS1yZXNpemFibGUtc3ciLG5lOiIudWktcmVzaXphYmxlLW5lIixudzoiLnVpLXJlc2l6YWJsZS1udyJ9OiJlLHMsc2UiKSx0aGlzLl9oYW5kbGVzPXQoKSx0aGlzLmhhbmRsZXMuY29uc3RydWN0b3I9PT1TdHJpbmcpZm9yKCJhbGwiPT09dGhpcy5oYW5kbGVzJiYodGhpcy5oYW5kbGVzPSJuLGUscyx3LHNlLHN3LG5lLG53Iikscz10aGlzLmhhbmRsZXMuc3BsaXQoIiwiKSx0aGlzLmhhbmRsZXM9e30saT0wO3MubGVuZ3RoPmk7aSsrKWU9dC50cmltKHNbaV0pLG49InVpLXJlc2l6YWJsZS0iK2Usbz10KCI8ZGl2PiIpLHRoaXMuX2FkZENsYXNzKG8sInVpLXJlc2l6YWJsZS1oYW5kbGUgIituKSxvLmNzcyh7ekluZGV4OmEuekluZGV4fSksdGhpcy5oYW5kbGVzW2VdPSIudWktcmVzaXphYmxlLSIrZSx0aGlzLmVsZW1lbnQuYXBwZW5kKG8pO3RoaXMuX3JlbmRlckF4aXM9ZnVuY3Rpb24oZSl7dmFyIGkscyxuLG87ZT1lfHx0aGlzLmVsZW1lbnQ7Zm9yKGkgaW4gdGhpcy5oYW5kbGVzKXRoaXMuaGFuZGxlc1tpXS5jb25zdHJ1Y3Rvcj09PVN0cmluZz90aGlzLmhhbmRsZXNbaV09dGhpcy5lbGVtZW50LmNoaWxkcmVuKHRoaXMuaGFuZGxlc1tpXSkuZmlyc3QoKS5zaG93KCk6KHRoaXMuaGFuZGxlc1tpXS5qcXVlcnl8fHRoaXMuaGFuZGxlc1tpXS5ub2RlVHlwZSkmJih0aGlzLmhhbmRsZXNbaV09dCh0aGlzLmhhbmRsZXNbaV0pLHRoaXMuX29uKHRoaXMuaGFuZGxlc1tpXSx7bW91c2Vkb3duOnIuX21vdXNlRG93bn0pKSx0aGlzLmVsZW1lbnRJc1dyYXBwZXImJnRoaXMub3JpZ2luYWxFbGVtZW50WzBdLm5vZGVOYW1lLm1hdGNoKC9eKHRleHRhcmVhfGlucHV0fHNlbGVjdHxidXR0b24pJC9pKSYmKHM9dCh0aGlzLmhhbmRsZXNbaV0sdGhpcy5lbGVtZW50KSxvPS9zd3xuZXxud3xzZXxufHMvLnRlc3QoaSk/cy5vdXRlckhlaWdodCgpOnMub3V0ZXJXaWR0aCgpLG49WyJwYWRkaW5nIiwvbmV8bnd8bi8udGVzdChpKT8iVG9wIjovc2V8c3d8cy8udGVzdChpKT8iQm90dG9tIjovXmUkLy50ZXN0KGkpPyJSaWdodCI6IkxlZnQiXS5qb2luKCIiKSxlLmNzcyhuLG8pLHRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplKCkpLHRoaXMuX2hhbmRsZXM9dGhpcy5faGFuZGxlcy5hZGQodGhpcy5oYW5kbGVzW2ldKX0sdGhpcy5fcmVuZGVyQXhpcyh0aGlzLmVsZW1lbnQpLHRoaXMuX2hhbmRsZXM9dGhpcy5faGFuZGxlcy5hZGQodGhpcy5lbGVtZW50LmZpbmQoIi51aS1yZXNpemFibGUtaGFuZGxlIikpLHRoaXMuX2hhbmRsZXMuZGlzYWJsZVNlbGVjdGlvbigpLHRoaXMuX2hhbmRsZXMub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oKXtyLnJlc2l6aW5nfHwodGhpcy5jbGFzc05hbWUmJihvPXRoaXMuY2xhc3NOYW1lLm1hdGNoKC91aS1yZXNpemFibGUtKHNlfHN3fG5lfG53fG58ZXxzfHcpL2kpKSxyLmF4aXM9byYmb1sxXT9vWzFdOiJzZSIpfSksYS5hdXRvSGlkZSYmKHRoaXMuX2hhbmRsZXMuaGlkZSgpLHRoaXMuX2FkZENsYXNzKCJ1aS1yZXNpemFibGUtYXV0b2hpZGUiKSl9LF9yZW1vdmVIYW5kbGVzOmZ1bmN0aW9uKCl7dGhpcy5faGFuZGxlcy5yZW1vdmUoKX0sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbihlKXt2YXIgaSxzLG49ITE7Zm9yKGkgaW4gdGhpcy5oYW5kbGVzKXM9dCh0aGlzLmhhbmRsZXNbaV0pWzBdLChzPT09ZS50YXJnZXR8fHQuY29udGFpbnMocyxlLnRhcmdldCkpJiYobj0hMCk7cmV0dXJuIXRoaXMub3B0aW9ucy5kaXNhYmxlZCYmbn0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oZSl7dmFyIGkscyxuLG89dGhpcy5vcHRpb25zLGE9dGhpcy5lbGVtZW50O3JldHVybiB0aGlzLnJlc2l6aW5nPSEwLHRoaXMuX3JlbmRlclByb3h5KCksaT10aGlzLl9udW0odGhpcy5oZWxwZXIuY3NzKCJsZWZ0IikpLHM9dGhpcy5fbnVtKHRoaXMuaGVscGVyLmNzcygidG9wIikpLG8uY29udGFpbm1lbnQmJihpKz10KG8uY29udGFpbm1lbnQpLnNjcm9sbExlZnQoKXx8MCxzKz10KG8uY29udGFpbm1lbnQpLnNjcm9sbFRvcCgpfHwwKSx0aGlzLm9mZnNldD10aGlzLmhlbHBlci5vZmZzZXQoKSx0aGlzLnBvc2l0aW9uPXtsZWZ0OmksdG9wOnN9LHRoaXMuc2l6ZT10aGlzLl9oZWxwZXI/e3dpZHRoOnRoaXMuaGVscGVyLndpZHRoKCksaGVpZ2h0OnRoaXMuaGVscGVyLmhlaWdodCgpfTp7d2lkdGg6YS53aWR0aCgpLGhlaWdodDphLmhlaWdodCgpfSx0aGlzLm9yaWdpbmFsU2l6ZT10aGlzLl9oZWxwZXI/e3dpZHRoOmEub3V0ZXJXaWR0aCgpLGhlaWdodDphLm91dGVySGVpZ2h0KCl9Ont3aWR0aDphLndpZHRoKCksaGVpZ2h0OmEuaGVpZ2h0KCl9LHRoaXMuc2l6ZURpZmY9e3dpZHRoOmEub3V0ZXJXaWR0aCgpLWEud2lkdGgoKSxoZWlnaHQ6YS5vdXRlckhlaWdodCgpLWEuaGVpZ2h0KCl9LHRoaXMub3JpZ2luYWxQb3NpdGlvbj17bGVmdDppLHRvcDpzfSx0aGlzLm9yaWdpbmFsTW91c2VQb3NpdGlvbj17bGVmdDplLnBhZ2VYLHRvcDplLnBhZ2VZfSx0aGlzLmFzcGVjdFJhdGlvPSJudW1iZXIiPT10eXBlb2Ygby5hc3BlY3RSYXRpbz9vLmFzcGVjdFJhdGlvOnRoaXMub3JpZ2luYWxTaXplLndpZHRoL3RoaXMub3JpZ2luYWxTaXplLmhlaWdodHx8MSxuPXQoIi51aS1yZXNpemFibGUtIit0aGlzLmF4aXMpLmNzcygiY3Vyc29yIiksdCgiYm9keSIpLmNzcygiY3Vyc29yIiwiYXV0byI9PT1uP3RoaXMuYXhpcysiLXJlc2l6ZSI6biksdGhpcy5fYWRkQ2xhc3MoInVpLXJlc2l6YWJsZS1yZXNpemluZyIpLHRoaXMuX3Byb3BhZ2F0ZSgic3RhcnQiLGUpLCEwfSxfbW91c2VEcmFnOmZ1bmN0aW9uKGUpe3ZhciBpLHMsbj10aGlzLm9yaWdpbmFsTW91c2VQb3NpdGlvbixvPXRoaXMuYXhpcyxhPWUucGFnZVgtbi5sZWZ0fHwwLHI9ZS5wYWdlWS1uLnRvcHx8MCxoPXRoaXMuX2NoYW5nZVtvXTtyZXR1cm4gdGhpcy5fdXBkYXRlUHJldlByb3BlcnRpZXMoKSxoPyhpPWguYXBwbHkodGhpcyxbZSxhLHJdKSx0aGlzLl91cGRhdGVWaXJ0dWFsQm91bmRhcmllcyhlLnNoaWZ0S2V5KSwodGhpcy5fYXNwZWN0UmF0aW98fGUuc2hpZnRLZXkpJiYoaT10aGlzLl91cGRhdGVSYXRpbyhpLGUpKSxpPXRoaXMuX3Jlc3BlY3RTaXplKGksZSksdGhpcy5fdXBkYXRlQ2FjaGUoaSksdGhpcy5fcHJvcGFnYXRlKCJyZXNpemUiLGUpLHM9dGhpcy5fYXBwbHlDaGFuZ2VzKCksIXRoaXMuX2hlbHBlciYmdGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemVFbGVtZW50cy5sZW5ndGgmJnRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplKCksdC5pc0VtcHR5T2JqZWN0KHMpfHwodGhpcy5fdXBkYXRlUHJldlByb3BlcnRpZXMoKSx0aGlzLl90cmlnZ2VyKCJyZXNpemUiLGUsdGhpcy51aSgpKSx0aGlzLl9hcHBseUNoYW5nZXMoKSksITEpOiExfSxfbW91c2VTdG9wOmZ1bmN0aW9uKGUpe3RoaXMucmVzaXppbmc9ITE7dmFyIGkscyxuLG8sYSxyLGgsbD10aGlzLm9wdGlvbnMsYz10aGlzO3JldHVybiB0aGlzLl9oZWxwZXImJihpPXRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHMscz1pLmxlbmd0aCYmL3RleHRhcmVhL2kudGVzdChpWzBdLm5vZGVOYW1lKSxuPXMmJnRoaXMuX2hhc1Njcm9sbChpWzBdLCJsZWZ0Iik/MDpjLnNpemVEaWZmLmhlaWdodCxvPXM/MDpjLnNpemVEaWZmLndpZHRoLGE9e3dpZHRoOmMuaGVscGVyLndpZHRoKCktbyxoZWlnaHQ6Yy5oZWxwZXIuaGVpZ2h0KCktbn0scj1wYXJzZUZsb2F0KGMuZWxlbWVudC5jc3MoImxlZnQiKSkrKGMucG9zaXRpb24ubGVmdC1jLm9yaWdpbmFsUG9zaXRpb24ubGVmdCl8fG51bGwsaD1wYXJzZUZsb2F0KGMuZWxlbWVudC5jc3MoInRvcCIpKSsoYy5wb3NpdGlvbi50b3AtYy5vcmlnaW5hbFBvc2l0aW9uLnRvcCl8fG51bGwsbC5hbmltYXRlfHx0aGlzLmVsZW1lbnQuY3NzKHQuZXh0ZW5kKGEse3RvcDpoLGxlZnQ6cn0pKSxjLmhlbHBlci5oZWlnaHQoYy5zaXplLmhlaWdodCksYy5oZWxwZXIud2lkdGgoYy5zaXplLndpZHRoKSx0aGlzLl9oZWxwZXImJiFsLmFuaW1hdGUmJnRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplKCkpLHQoImJvZHkiKS5jc3MoImN1cnNvciIsImF1dG8iKSx0aGlzLl9yZW1vdmVDbGFzcygidWktcmVzaXphYmxlLXJlc2l6aW5nIiksdGhpcy5fcHJvcGFnYXRlKCJzdG9wIixlKSx0aGlzLl9oZWxwZXImJnRoaXMuaGVscGVyLnJlbW92ZSgpLCExfSxfdXBkYXRlUHJldlByb3BlcnRpZXM6ZnVuY3Rpb24oKXt0aGlzLnByZXZQb3NpdGlvbj17dG9wOnRoaXMucG9zaXRpb24udG9wLGxlZnQ6dGhpcy5wb3NpdGlvbi5sZWZ0fSx0aGlzLnByZXZTaXplPXt3aWR0aDp0aGlzLnNpemUud2lkdGgsaGVpZ2h0OnRoaXMuc2l6ZS5oZWlnaHR9fSxfYXBwbHlDaGFuZ2VzOmZ1bmN0aW9uKCl7dmFyIHQ9e307cmV0dXJuIHRoaXMucG9zaXRpb24udG9wIT09dGhpcy5wcmV2UG9zaXRpb24udG9wJiYodC50b3A9dGhpcy5wb3NpdGlvbi50b3ArInB4IiksdGhpcy5wb3NpdGlvbi5sZWZ0IT09dGhpcy5wcmV2UG9zaXRpb24ubGVmdCYmKHQubGVmdD10aGlzLnBvc2l0aW9uLmxlZnQrInB4IiksdGhpcy5zaXplLndpZHRoIT09dGhpcy5wcmV2U2l6ZS53aWR0aCYmKHQud2lkdGg9dGhpcy5zaXplLndpZHRoKyJweCIpLHRoaXMuc2l6ZS5oZWlnaHQhPT10aGlzLnByZXZTaXplLmhlaWdodCYmKHQuaGVpZ2h0PXRoaXMuc2l6ZS5oZWlnaHQrInB4IiksdGhpcy5oZWxwZXIuY3NzKHQpLHR9LF91cGRhdGVWaXJ0dWFsQm91bmRhcmllczpmdW5jdGlvbih0KXt2YXIgZSxpLHMsbixvLGE9dGhpcy5vcHRpb25zO289e21pbldpZHRoOnRoaXMuX2lzTnVtYmVyKGEubWluV2lkdGgpP2EubWluV2lkdGg6MCxtYXhXaWR0aDp0aGlzLl9pc051bWJlcihhLm1heFdpZHRoKT9hLm1heFdpZHRoOjEvMCxtaW5IZWlnaHQ6dGhpcy5faXNOdW1iZXIoYS5taW5IZWlnaHQpP2EubWluSGVpZ2h0OjAsbWF4SGVpZ2h0OnRoaXMuX2lzTnVtYmVyKGEubWF4SGVpZ2h0KT9hLm1heEhlaWdodDoxLzB9LCh0aGlzLl9hc3BlY3RSYXRpb3x8dCkmJihlPW8ubWluSGVpZ2h0KnRoaXMuYXNwZWN0UmF0aW8scz1vLm1pbldpZHRoL3RoaXMuYXNwZWN0UmF0aW8saT1vLm1heEhlaWdodCp0aGlzLmFzcGVjdFJhdGlvLG49by5tYXhXaWR0aC90aGlzLmFzcGVjdFJhdGlvLGU+by5taW5XaWR0aCYmKG8ubWluV2lkdGg9ZSkscz5vLm1pbkhlaWdodCYmKG8ubWluSGVpZ2h0PXMpLG8ubWF4V2lkdGg+aSYmKG8ubWF4V2lkdGg9aSksby5tYXhIZWlnaHQ+biYmKG8ubWF4SGVpZ2h0PW4pKSx0aGlzLl92Qm91bmRhcmllcz1vfSxfdXBkYXRlQ2FjaGU6ZnVuY3Rpb24odCl7dGhpcy5vZmZzZXQ9dGhpcy5oZWxwZXIub2Zmc2V0KCksdGhpcy5faXNOdW1iZXIodC5sZWZ0KSYmKHRoaXMucG9zaXRpb24ubGVmdD10LmxlZnQpLHRoaXMuX2lzTnVtYmVyKHQudG9wKSYmKHRoaXMucG9zaXRpb24udG9wPXQudG9wKSx0aGlzLl9pc051bWJlcih0LmhlaWdodCkmJih0aGlzLnNpemUuaGVpZ2h0PXQuaGVpZ2h0KSx0aGlzLl9pc051bWJlcih0LndpZHRoKSYmKHRoaXMuc2l6ZS53aWR0aD10LndpZHRoKX0sX3VwZGF0ZVJhdGlvOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucG9zaXRpb24saT10aGlzLnNpemUscz10aGlzLmF4aXM7cmV0dXJuIHRoaXMuX2lzTnVtYmVyKHQuaGVpZ2h0KT90LndpZHRoPXQuaGVpZ2h0KnRoaXMuYXNwZWN0UmF0aW86dGhpcy5faXNOdW1iZXIodC53aWR0aCkmJih0LmhlaWdodD10LndpZHRoL3RoaXMuYXNwZWN0UmF0aW8pLCJzdyI9PT1zJiYodC5sZWZ0PWUubGVmdCsoaS53aWR0aC10LndpZHRoKSx0LnRvcD1udWxsKSwibnciPT09cyYmKHQudG9wPWUudG9wKyhpLmhlaWdodC10LmhlaWdodCksdC5sZWZ0PWUubGVmdCsoaS53aWR0aC10LndpZHRoKSksdH0sX3Jlc3BlY3RTaXplOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3ZCb3VuZGFyaWVzLGk9dGhpcy5heGlzLHM9dGhpcy5faXNOdW1iZXIodC53aWR0aCkmJmUubWF4V2lkdGgmJmUubWF4V2lkdGg8dC53aWR0aCxuPXRoaXMuX2lzTnVtYmVyKHQuaGVpZ2h0KSYmZS5tYXhIZWlnaHQmJmUubWF4SGVpZ2h0PHQuaGVpZ2h0LG89dGhpcy5faXNOdW1iZXIodC53aWR0aCkmJmUubWluV2lkdGgmJmUubWluV2lkdGg+dC53aWR0aCxhPXRoaXMuX2lzTnVtYmVyKHQuaGVpZ2h0KSYmZS5taW5IZWlnaHQmJmUubWluSGVpZ2h0PnQuaGVpZ2h0LHI9dGhpcy5vcmlnaW5hbFBvc2l0aW9uLmxlZnQrdGhpcy5vcmlnaW5hbFNpemUud2lkdGgsaD10aGlzLm9yaWdpbmFsUG9zaXRpb24udG9wK3RoaXMub3JpZ2luYWxTaXplLmhlaWdodCxsPS9zd3xud3x3Ly50ZXN0KGkpLGM9L253fG5lfG4vLnRlc3QoaSk7cmV0dXJuIG8mJih0LndpZHRoPWUubWluV2lkdGgpLGEmJih0LmhlaWdodD1lLm1pbkhlaWdodCkscyYmKHQud2lkdGg9ZS5tYXhXaWR0aCksbiYmKHQuaGVpZ2h0PWUubWF4SGVpZ2h0KSxvJiZsJiYodC5sZWZ0PXItZS5taW5XaWR0aCkscyYmbCYmKHQubGVmdD1yLWUubWF4V2lkdGgpLGEmJmMmJih0LnRvcD1oLWUubWluSGVpZ2h0KSxuJiZjJiYodC50b3A9aC1lLm1heEhlaWdodCksdC53aWR0aHx8dC5oZWlnaHR8fHQubGVmdHx8IXQudG9wP3Qud2lkdGh8fHQuaGVpZ2h0fHx0LnRvcHx8IXQubGVmdHx8KHQubGVmdD1udWxsKTp0LnRvcD1udWxsLHR9LF9nZXRQYWRkaW5nUGx1c0JvcmRlckRpbWVuc2lvbnM6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsaT1bXSxzPVt0LmNzcygiYm9yZGVyVG9wV2lkdGgiKSx0LmNzcygiYm9yZGVyUmlnaHRXaWR0aCIpLHQuY3NzKCJib3JkZXJCb3R0b21XaWR0aCIpLHQuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKV0sbj1bdC5jc3MoInBhZGRpbmdUb3AiKSx0LmNzcygicGFkZGluZ1JpZ2h0IiksdC5jc3MoInBhZGRpbmdCb3R0b20iKSx0LmNzcygicGFkZGluZ0xlZnQiKV07ND5lO2UrKylpW2VdPXBhcnNlRmxvYXQoc1tlXSl8fDAsaVtlXSs9cGFyc2VGbG9hdChuW2VdKXx8MDtyZXR1cm57aGVpZ2h0OmlbMF0raVsyXSx3aWR0aDppWzFdK2lbM119fSxfcHJvcG9ydGlvbmFsbHlSZXNpemU6ZnVuY3Rpb24oKXtpZih0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLmxlbmd0aClmb3IodmFyIHQsZT0wLGk9dGhpcy5oZWxwZXJ8fHRoaXMuZWxlbWVudDt0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLmxlbmd0aD5lO2UrKyl0PXRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHNbZV0sdGhpcy5vdXRlckRpbWVuc2lvbnN8fCh0aGlzLm91dGVyRGltZW5zaW9ucz10aGlzLl9nZXRQYWRkaW5nUGx1c0JvcmRlckRpbWVuc2lvbnModCkpLHQuY3NzKHtoZWlnaHQ6aS5oZWlnaHQoKS10aGlzLm91dGVyRGltZW5zaW9ucy5oZWlnaHR8fDAsd2lkdGg6aS53aWR0aCgpLXRoaXMub3V0ZXJEaW1lbnNpb25zLndpZHRofHwwfSl9LF9yZW5kZXJQcm94eTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZWxlbWVudCxpPXRoaXMub3B0aW9uczt0aGlzLmVsZW1lbnRPZmZzZXQ9ZS5vZmZzZXQoKSx0aGlzLl9oZWxwZXI/KHRoaXMuaGVscGVyPXRoaXMuaGVscGVyfHx0KCI8ZGl2IHN0eWxlPSdvdmVyZmxvdzpoaWRkZW47Jz48L2Rpdj4iKSx0aGlzLl9hZGRDbGFzcyh0aGlzLmhlbHBlcix0aGlzLl9oZWxwZXIpLHRoaXMuaGVscGVyLmNzcyh7d2lkdGg6dGhpcy5lbGVtZW50Lm91dGVyV2lkdGgoKSxoZWlnaHQ6dGhpcy5lbGVtZW50Lm91dGVySGVpZ2h0KCkscG9zaXRpb246ImFic29sdXRlIixsZWZ0OnRoaXMuZWxlbWVudE9mZnNldC5sZWZ0KyJweCIsdG9wOnRoaXMuZWxlbWVudE9mZnNldC50b3ArInB4Iix6SW5kZXg6KytpLnpJbmRleH0pLHRoaXMuaGVscGVyLmFwcGVuZFRvKCJib2R5IikuZGlzYWJsZVNlbGVjdGlvbigpKTp0aGlzLmhlbHBlcj10aGlzLmVsZW1lbnR9LF9jaGFuZ2U6e2U6ZnVuY3Rpb24odCxlKXtyZXR1cm57d2lkdGg6dGhpcy5vcmlnaW5hbFNpemUud2lkdGgrZX19LHc6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLm9yaWdpbmFsU2l6ZSxzPXRoaXMub3JpZ2luYWxQb3NpdGlvbjtyZXR1cm57bGVmdDpzLmxlZnQrZSx3aWR0aDppLndpZHRoLWV9fSxuOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10aGlzLm9yaWdpbmFsU2l6ZSxuPXRoaXMub3JpZ2luYWxQb3NpdGlvbjtyZXR1cm57dG9wOm4udG9wK2ksaGVpZ2h0OnMuaGVpZ2h0LWl9fSxzOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm57aGVpZ2h0OnRoaXMub3JpZ2luYWxTaXplLmhlaWdodCtpfX0sc2U6ZnVuY3Rpb24oZSxpLHMpe3JldHVybiB0LmV4dGVuZCh0aGlzLl9jaGFuZ2Uucy5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fY2hhbmdlLmUuYXBwbHkodGhpcyxbZSxpLHNdKSl9LHN3OmZ1bmN0aW9uKGUsaSxzKXtyZXR1cm4gdC5leHRlbmQodGhpcy5fY2hhbmdlLnMuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2NoYW5nZS53LmFwcGx5KHRoaXMsW2UsaSxzXSkpfSxuZTpmdW5jdGlvbihlLGkscyl7cmV0dXJuIHQuZXh0ZW5kKHRoaXMuX2NoYW5nZS5uLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9jaGFuZ2UuZS5hcHBseSh0aGlzLFtlLGksc10pKX0sbnc6ZnVuY3Rpb24oZSxpLHMpe3JldHVybiB0LmV4dGVuZCh0aGlzLl9jaGFuZ2Uubi5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fY2hhbmdlLncuYXBwbHkodGhpcyxbZSxpLHNdKSl9fSxfcHJvcGFnYXRlOmZ1bmN0aW9uKGUsaSl7dC51aS5wbHVnaW4uY2FsbCh0aGlzLGUsW2ksdGhpcy51aSgpXSksInJlc2l6ZSIhPT1lJiZ0aGlzLl90cmlnZ2VyKGUsaSx0aGlzLnVpKCkpfSxwbHVnaW5zOnt9LHVpOmZ1bmN0aW9uKCl7cmV0dXJue29yaWdpbmFsRWxlbWVudDp0aGlzLm9yaWdpbmFsRWxlbWVudCxlbGVtZW50OnRoaXMuZWxlbWVudCxoZWxwZXI6dGhpcy5oZWxwZXIscG9zaXRpb246dGhpcy5wb3NpdGlvbixzaXplOnRoaXMuc2l6ZSxvcmlnaW5hbFNpemU6dGhpcy5vcmlnaW5hbFNpemUsb3JpZ2luYWxQb3NpdGlvbjp0aGlzLm9yaWdpbmFsUG9zaXRpb259fX0pLHQudWkucGx1Z2luLmFkZCgicmVzaXphYmxlIiwiYW5pbWF0ZSIse3N0b3A6ZnVuY3Rpb24oZSl7dmFyIGk9dCh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIikscz1pLm9wdGlvbnMsbj1pLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLG89bi5sZW5ndGgmJi90ZXh0YXJlYS9pLnRlc3QoblswXS5ub2RlTmFtZSksYT1vJiZpLl9oYXNTY3JvbGwoblswXSwibGVmdCIpPzA6aS5zaXplRGlmZi5oZWlnaHQscj1vPzA6aS5zaXplRGlmZi53aWR0aCxoPXt3aWR0aDppLnNpemUud2lkdGgtcixoZWlnaHQ6aS5zaXplLmhlaWdodC1hfSxsPXBhcnNlRmxvYXQoaS5lbGVtZW50LmNzcygibGVmdCIpKSsoaS5wb3NpdGlvbi5sZWZ0LWkub3JpZ2luYWxQb3NpdGlvbi5sZWZ0KXx8bnVsbCxjPXBhcnNlRmxvYXQoaS5lbGVtZW50LmNzcygidG9wIikpKyhpLnBvc2l0aW9uLnRvcC1pLm9yaWdpbmFsUG9zaXRpb24udG9wKXx8bnVsbDtpLmVsZW1lbnQuYW5pbWF0ZSh0LmV4dGVuZChoLGMmJmw/e3RvcDpjLGxlZnQ6bH06e30pLHtkdXJhdGlvbjpzLmFuaW1hdGVEdXJhdGlvbixlYXNpbmc6cy5hbmltYXRlRWFzaW5nLHN0ZXA6ZnVuY3Rpb24oKXt2YXIgcz17d2lkdGg6cGFyc2VGbG9hdChpLmVsZW1lbnQuY3NzKCJ3aWR0aCIpKSxoZWlnaHQ6cGFyc2VGbG9hdChpLmVsZW1lbnQuY3NzKCJoZWlnaHQiKSksdG9wOnBhcnNlRmxvYXQoaS5lbGVtZW50LmNzcygidG9wIikpLGxlZnQ6cGFyc2VGbG9hdChpLmVsZW1lbnQuY3NzKCJsZWZ0IikpfTtuJiZuLmxlbmd0aCYmdChuWzBdKS5jc3Moe3dpZHRoOnMud2lkdGgsaGVpZ2h0OnMuaGVpZ2h0fSksaS5fdXBkYXRlQ2FjaGUocyksaS5fcHJvcGFnYXRlKCJyZXNpemUiLGUpfX0pfX0pLHQudWkucGx1Z2luLmFkZCgicmVzaXphYmxlIiwiY29udGFpbm1lbnQiLHtzdGFydDpmdW5jdGlvbigpe3ZhciBlLGkscyxuLG8sYSxyLGg9dCh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIiksbD1oLm9wdGlvbnMsYz1oLmVsZW1lbnQsdT1sLmNvbnRhaW5tZW50LGQ9dSBpbnN0YW5jZW9mIHQ/dS5nZXQoMCk6L3BhcmVudC8udGVzdCh1KT9jLnBhcmVudCgpLmdldCgwKTp1O2QmJihoLmNvbnRhaW5lckVsZW1lbnQ9dChkKSwvZG9jdW1lbnQvLnRlc3QodSl8fHU9PT1kb2N1bWVudD8oaC5jb250YWluZXJPZmZzZXQ9e2xlZnQ6MCx0b3A6MH0saC5jb250YWluZXJQb3NpdGlvbj17bGVmdDowLHRvcDowfSxoLnBhcmVudERhdGE9e2VsZW1lbnQ6dChkb2N1bWVudCksbGVmdDowLHRvcDowLHdpZHRoOnQoZG9jdW1lbnQpLndpZHRoKCksaGVpZ2h0OnQoZG9jdW1lbnQpLmhlaWdodCgpfHxkb2N1bWVudC5ib2R5LnBhcmVudE5vZGUuc2Nyb2xsSGVpZ2h0fSk6KGU9dChkKSxpPVtdLHQoWyJUb3AiLCJSaWdodCIsIkxlZnQiLCJCb3R0b20iXSkuZWFjaChmdW5jdGlvbih0LHMpe2lbdF09aC5fbnVtKGUuY3NzKCJwYWRkaW5nIitzKSl9KSxoLmNvbnRhaW5lck9mZnNldD1lLm9mZnNldCgpLGguY29udGFpbmVyUG9zaXRpb249ZS5wb3NpdGlvbigpLGguY29udGFpbmVyU2l6ZT17aGVpZ2h0OmUuaW5uZXJIZWlnaHQoKS1pWzNdLHdpZHRoOmUuaW5uZXJXaWR0aCgpLWlbMV19LHM9aC5jb250YWluZXJPZmZzZXQsbj1oLmNvbnRhaW5lclNpemUuaGVpZ2h0LG89aC5jb250YWluZXJTaXplLndpZHRoLGE9aC5faGFzU2Nyb2xsKGQsImxlZnQiKT9kLnNjcm9sbFdpZHRoOm8scj1oLl9oYXNTY3JvbGwoZCk/ZC5zY3JvbGxIZWlnaHQ6bixoLnBhcmVudERhdGE9e2VsZW1lbnQ6ZCxsZWZ0OnMubGVmdCx0b3A6cy50b3Asd2lkdGg6YSxoZWlnaHQ6cn0pKX0scmVzaXplOmZ1bmN0aW9uKGUpe3ZhciBpLHMsbixvLGE9dCh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIikscj1hLm9wdGlvbnMsaD1hLmNvbnRhaW5lck9mZnNldCxsPWEucG9zaXRpb24sYz1hLl9hc3BlY3RSYXRpb3x8ZS5zaGlmdEtleSx1PXt0b3A6MCxsZWZ0OjB9LGQ9YS5jb250YWluZXJFbGVtZW50LHA9ITA7ZFswXSE9PWRvY3VtZW50JiYvc3RhdGljLy50ZXN0KGQuY3NzKCJwb3NpdGlvbiIpKSYmKHU9aCksbC5sZWZ0PChhLl9oZWxwZXI/aC5sZWZ0OjApJiYoYS5zaXplLndpZHRoPWEuc2l6ZS53aWR0aCsoYS5faGVscGVyP2EucG9zaXRpb24ubGVmdC1oLmxlZnQ6YS5wb3NpdGlvbi5sZWZ0LXUubGVmdCksYyYmKGEuc2l6ZS5oZWlnaHQ9YS5zaXplLndpZHRoL2EuYXNwZWN0UmF0aW8scD0hMSksYS5wb3NpdGlvbi5sZWZ0PXIuaGVscGVyP2gubGVmdDowKSxsLnRvcDwoYS5faGVscGVyP2gudG9wOjApJiYoYS5zaXplLmhlaWdodD1hLnNpemUuaGVpZ2h0KyhhLl9oZWxwZXI/YS5wb3NpdGlvbi50b3AtaC50b3A6YS5wb3NpdGlvbi50b3ApLGMmJihhLnNpemUud2lkdGg9YS5zaXplLmhlaWdodCphLmFzcGVjdFJhdGlvLHA9ITEpLGEucG9zaXRpb24udG9wPWEuX2hlbHBlcj9oLnRvcDowKSxuPWEuY29udGFpbmVyRWxlbWVudC5nZXQoMCk9PT1hLmVsZW1lbnQucGFyZW50KCkuZ2V0KDApLG89L3JlbGF0aXZlfGFic29sdXRlLy50ZXN0KGEuY29udGFpbmVyRWxlbWVudC5jc3MoInBvc2l0aW9uIikpLG4mJm8/KGEub2Zmc2V0LmxlZnQ9YS5wYXJlbnREYXRhLmxlZnQrYS5wb3NpdGlvbi5sZWZ0LGEub2Zmc2V0LnRvcD1hLnBhcmVudERhdGEudG9wK2EucG9zaXRpb24udG9wKTooYS5vZmZzZXQubGVmdD1hLmVsZW1lbnQub2Zmc2V0KCkubGVmdCxhLm9mZnNldC50b3A9YS5lbGVtZW50Lm9mZnNldCgpLnRvcCksaT1NYXRoLmFicyhhLnNpemVEaWZmLndpZHRoKyhhLl9oZWxwZXI/YS5vZmZzZXQubGVmdC11LmxlZnQ6YS5vZmZzZXQubGVmdC1oLmxlZnQpKSxzPU1hdGguYWJzKGEuc2l6ZURpZmYuaGVpZ2h0KyhhLl9oZWxwZXI/YS5vZmZzZXQudG9wLXUudG9wOmEub2Zmc2V0LnRvcC1oLnRvcCkpLGkrYS5zaXplLndpZHRoPj1hLnBhcmVudERhdGEud2lkdGgmJihhLnNpemUud2lkdGg9YS5wYXJlbnREYXRhLndpZHRoLWksYyYmKGEuc2l6ZS5oZWlnaHQ9YS5zaXplLndpZHRoL2EuYXNwZWN0UmF0aW8scD0hMSkpLHMrYS5zaXplLmhlaWdodD49YS5wYXJlbnREYXRhLmhlaWdodCYmKGEuc2l6ZS5oZWlnaHQ9YS5wYXJlbnREYXRhLmhlaWdodC1zLGMmJihhLnNpemUud2lkdGg9YS5zaXplLmhlaWdodCphLmFzcGVjdFJhdGlvLHA9ITEpKSxwfHwoYS5wb3NpdGlvbi5sZWZ0PWEucHJldlBvc2l0aW9uLmxlZnQsYS5wb3NpdGlvbi50b3A9YS5wcmV2UG9zaXRpb24udG9wLGEuc2l6ZS53aWR0aD1hLnByZXZTaXplLndpZHRoLGEuc2l6ZS5oZWlnaHQ9YS5wcmV2U2l6ZS5oZWlnaHQpfSxzdG9wOmZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIiksaT1lLm9wdGlvbnMscz1lLmNvbnRhaW5lck9mZnNldCxuPWUuY29udGFpbmVyUG9zaXRpb24sbz1lLmNvbnRhaW5lckVsZW1lbnQsYT10KGUuaGVscGVyKSxyPWEub2Zmc2V0KCksaD1hLm91dGVyV2lkdGgoKS1lLnNpemVEaWZmLndpZHRoLGw9YS5vdXRlckhlaWdodCgpLWUuc2l6ZURpZmYuaGVpZ2h0O2UuX2hlbHBlciYmIWkuYW5pbWF0ZSYmL3JlbGF0aXZlLy50ZXN0KG8uY3NzKCJwb3NpdGlvbiIpKSYmdCh0aGlzKS5jc3Moe2xlZnQ6ci5sZWZ0LW4ubGVmdC1zLmxlZnQsd2lkdGg6aCxoZWlnaHQ6bH0pLGUuX2hlbHBlciYmIWkuYW5pbWF0ZSYmL3N0YXRpYy8udGVzdChvLmNzcygicG9zaXRpb24iKSkmJnQodGhpcykuY3NzKHtsZWZ0OnIubGVmdC1uLmxlZnQtcy5sZWZ0LHdpZHRoOmgsaGVpZ2h0Omx9KX19KSx0LnVpLnBsdWdpbi5hZGQoInJlc2l6YWJsZSIsImFsc29SZXNpemUiLHtzdGFydDpmdW5jdGlvbigpe3ZhciBlPXQodGhpcykucmVzaXphYmxlKCJpbnN0YW5jZSIpLGk9ZS5vcHRpb25zO3QoaS5hbHNvUmVzaXplKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTtlLmRhdGEoInVpLXJlc2l6YWJsZS1hbHNvcmVzaXplIix7d2lkdGg6cGFyc2VGbG9hdChlLndpZHRoKCkpLGhlaWdodDpwYXJzZUZsb2F0KGUuaGVpZ2h0KCkpLGxlZnQ6cGFyc2VGbG9hdChlLmNzcygibGVmdCIpKSx0b3A6cGFyc2VGbG9hdChlLmNzcygidG9wIikpfSl9KX0scmVzaXplOmZ1bmN0aW9uKGUsaSl7dmFyIHM9dCh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIiksbj1zLm9wdGlvbnMsbz1zLm9yaWdpbmFsU2l6ZSxhPXMub3JpZ2luYWxQb3NpdGlvbixyPXtoZWlnaHQ6cy5zaXplLmhlaWdodC1vLmhlaWdodHx8MCx3aWR0aDpzLnNpemUud2lkdGgtby53aWR0aHx8MCx0b3A6cy5wb3NpdGlvbi50b3AtYS50b3B8fDAsbGVmdDpzLnBvc2l0aW9uLmxlZnQtYS5sZWZ0fHwwfTt0KG4uYWxzb1Jlc2l6ZSkuZWFjaChmdW5jdGlvbigpe3ZhciBlPXQodGhpcykscz10KHRoaXMpLmRhdGEoInVpLXJlc2l6YWJsZS1hbHNvcmVzaXplIiksbj17fSxvPWUucGFyZW50cyhpLm9yaWdpbmFsRWxlbWVudFswXSkubGVuZ3RoP1sid2lkdGgiLCJoZWlnaHQiXTpbIndpZHRoIiwiaGVpZ2h0IiwidG9wIiwibGVmdCJdO3QuZWFjaChvLGZ1bmN0aW9uKHQsZSl7dmFyIGk9KHNbZV18fDApKyhyW2VdfHwwKTtpJiZpPj0wJiYobltlXT1pfHxudWxsKX0pLGUuY3NzKG4pfSl9LHN0b3A6ZnVuY3Rpb24oKXt0KHRoaXMpLnJlbW92ZURhdGEoInVpLXJlc2l6YWJsZS1hbHNvcmVzaXplIil9fSksdC51aS5wbHVnaW4uYWRkKCJyZXNpemFibGUiLCJnaG9zdCIse3N0YXJ0OmZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIiksaT1lLnNpemU7ZS5naG9zdD1lLm9yaWdpbmFsRWxlbWVudC5jbG9uZSgpLGUuZ2hvc3QuY3NzKHtvcGFjaXR5Oi4yNSxkaXNwbGF5OiJibG9jayIscG9zaXRpb246InJlbGF0aXZlIixoZWlnaHQ6aS5oZWlnaHQsd2lkdGg6aS53aWR0aCxtYXJnaW46MCxsZWZ0OjAsdG9wOjB9KSxlLl9hZGRDbGFzcyhlLmdob3N0LCJ1aS1yZXNpemFibGUtZ2hvc3QiKSx0LnVpQmFja0NvbXBhdCE9PSExJiYic3RyaW5nIj09dHlwZW9mIGUub3B0aW9ucy5naG9zdCYmZS5naG9zdC5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuZ2hvc3QpLGUuZ2hvc3QuYXBwZW5kVG8oZS5oZWxwZXIpfSxyZXNpemU6ZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpLnJlc2l6YWJsZSgiaW5zdGFuY2UiKTtlLmdob3N0JiZlLmdob3N0LmNzcyh7cG9zaXRpb246InJlbGF0aXZlIixoZWlnaHQ6ZS5zaXplLmhlaWdodCx3aWR0aDplLnNpemUud2lkdGh9KX0sc3RvcDpmdW5jdGlvbigpe3ZhciBlPXQodGhpcykucmVzaXphYmxlKCJpbnN0YW5jZSIpO2UuZ2hvc3QmJmUuaGVscGVyJiZlLmhlbHBlci5nZXQoMCkucmVtb3ZlQ2hpbGQoZS5naG9zdC5nZXQoMCkpfX0pLHQudWkucGx1Z2luLmFkZCgicmVzaXphYmxlIiwiZ3JpZCIse3Jlc2l6ZTpmdW5jdGlvbigpe3ZhciBlLGk9dCh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIikscz1pLm9wdGlvbnMsbj1pLnNpemUsbz1pLm9yaWdpbmFsU2l6ZSxhPWkub3JpZ2luYWxQb3NpdGlvbixyPWkuYXhpcyxoPSJudW1iZXIiPT10eXBlb2Ygcy5ncmlkP1tzLmdyaWQscy5ncmlkXTpzLmdyaWQsbD1oWzBdfHwxLGM9aFsxXXx8MSx1PU1hdGgucm91bmQoKG4ud2lkdGgtby53aWR0aCkvbCkqbCxkPU1hdGgucm91bmQoKG4uaGVpZ2h0LW8uaGVpZ2h0KS9jKSpjLHA9by53aWR0aCt1LGY9by5oZWlnaHQrZCxnPXMubWF4V2lkdGgmJnA+cy5tYXhXaWR0aCxtPXMubWF4SGVpZ2h0JiZmPnMubWF4SGVpZ2h0LF89cy5taW5XaWR0aCYmcy5taW5XaWR0aD5wLHY9cy5taW5IZWlnaHQmJnMubWluSGVpZ2h0PmY7cy5ncmlkPWgsXyYmKHArPWwpLHYmJihmKz1jKSxnJiYocC09bCksbSYmKGYtPWMpLC9eKHNlfHN8ZSkkLy50ZXN0KHIpPyhpLnNpemUud2lkdGg9cCxpLnNpemUuaGVpZ2h0PWYpOi9eKG5lKSQvLnRlc3Qocik/KGkuc2l6ZS53aWR0aD1wLGkuc2l6ZS5oZWlnaHQ9ZixpLnBvc2l0aW9uLnRvcD1hLnRvcC1kKTovXihzdykkLy50ZXN0KHIpPyhpLnNpemUud2lkdGg9cCxpLnNpemUuaGVpZ2h0PWYsaS5wb3NpdGlvbi5sZWZ0PWEubGVmdC11KTooKDA+PWYtY3x8MD49cC1sKSYmKGU9aS5fZ2V0UGFkZGluZ1BsdXNCb3JkZXJEaW1lbnNpb25zKHRoaXMpKSxmLWM+MD8oaS5zaXplLmhlaWdodD1mLGkucG9zaXRpb24udG9wPWEudG9wLWQpOihmPWMtZS5oZWlnaHQsaS5zaXplLmhlaWdodD1mLGkucG9zaXRpb24udG9wPWEudG9wK28uaGVpZ2h0LWYpLHAtbD4wPyhpLnNpemUud2lkdGg9cCxpLnBvc2l0aW9uLmxlZnQ9YS5sZWZ0LXUpOihwPWwtZS53aWR0aCxpLnNpemUud2lkdGg9cCxpLnBvc2l0aW9uLmxlZnQ9YS5sZWZ0K28ud2lkdGgtcCkpfX0pLHQudWkucmVzaXphYmxlLHQud2lkZ2V0KCJ1aS5kaWFsb2ciLHt2ZXJzaW9uOiIxLjEyLjAtcmMuMiIsb3B0aW9uczp7YXBwZW5kVG86ImJvZHkiLGF1dG9PcGVuOiEwLGJ1dHRvbnM6W10sY2xhc3Nlczp7InVpLWRpYWxvZyI6InVpLWNvcm5lci1hbGwiLCJ1aS1kaWFsb2ctdGl0bGViYXIiOiJ1aS1jb3JuZXItYWxsIn0sY2xvc2VPbkVzY2FwZTohMCxjbG9zZVRleHQ6IkNsb3NlIixkcmFnZ2FibGU6ITAsaGlkZTpudWxsLGhlaWdodDoiYXV0byIsbWF4SGVpZ2h0Om51bGwsbWF4V2lkdGg6bnVsbCxtaW5IZWlnaHQ6MTUwLG1pbldpZHRoOjE1MCxtb2RhbDohMSxwb3NpdGlvbjp7bXk6ImNlbnRlciIsYXQ6ImNlbnRlciIsb2Y6d2luZG93LGNvbGxpc2lvbjoiZml0Iix1c2luZzpmdW5jdGlvbihlKXt2YXIgaT10KHRoaXMpLmNzcyhlKS5vZmZzZXQoKS50b3A7MD5pJiZ0KHRoaXMpLmNzcygidG9wIixlLnRvcC1pKX19LHJlc2l6YWJsZTohMCxzaG93Om51bGwsdGl0bGU6bnVsbCx3aWR0aDozMDAsYmVmb3JlQ2xvc2U6bnVsbCxjbG9zZTpudWxsLGRyYWc6bnVsbCxkcmFnU3RhcnQ6bnVsbCxkcmFnU3RvcDpudWxsLGZvY3VzOm51bGwsb3BlbjpudWxsLHJlc2l6ZTpudWxsLHJlc2l6ZVN0YXJ0Om51bGwscmVzaXplU3RvcDpudWxsfSxzaXplUmVsYXRlZE9wdGlvbnM6e2J1dHRvbnM6ITAsaGVpZ2h0OiEwLG1heEhlaWdodDohMCxtYXhXaWR0aDohMCxtaW5IZWlnaHQ6ITAsbWluV2lkdGg6ITAsd2lkdGg6ITB9LHJlc2l6YWJsZVJlbGF0ZWRPcHRpb25zOnttYXhIZWlnaHQ6ITAsbWF4V2lkdGg6ITAsbWluSGVpZ2h0OiEwLG1pbldpZHRoOiEwfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5vcmlnaW5hbENzcz17ZGlzcGxheTp0aGlzLmVsZW1lbnRbMF0uc3R5bGUuZGlzcGxheSx3aWR0aDp0aGlzLmVsZW1lbnRbMF0uc3R5bGUud2lkdGgsbWluSGVpZ2h0OnRoaXMuZWxlbWVudFswXS5zdHlsZS5taW5IZWlnaHQsbWF4SGVpZ2h0OnRoaXMuZWxlbWVudFswXS5zdHlsZS5tYXhIZWlnaHQsaGVpZ2h0OnRoaXMuZWxlbWVudFswXS5zdHlsZS5oZWlnaHR9LHRoaXMub3JpZ2luYWxQb3NpdGlvbj17cGFyZW50OnRoaXMuZWxlbWVudC5wYXJlbnQoKSxpbmRleDp0aGlzLmVsZW1lbnQucGFyZW50KCkuY2hpbGRyZW4oKS5pbmRleCh0aGlzLmVsZW1lbnQpfSx0aGlzLm9yaWdpbmFsVGl0bGU9dGhpcy5lbGVtZW50LmF0dHIoInRpdGxlIiksbnVsbD09dGhpcy5vcHRpb25zLnRpdGxlJiZudWxsIT10aGlzLm9yaWdpbmFsVGl0bGUmJih0aGlzLm9wdGlvbnMudGl0bGU9dGhpcy5vcmlnaW5hbFRpdGxlKSx0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJih0aGlzLm9wdGlvbnMuZGlzYWJsZWQ9ITEpLHRoaXMuX2NyZWF0ZVdyYXBwZXIoKSx0aGlzLmVsZW1lbnQuc2hvdygpLnJlbW92ZUF0dHIoInRpdGxlIikuYXBwZW5kVG8odGhpcy51aURpYWxvZyksdGhpcy5fYWRkQ2xhc3MoInVpLWRpYWxvZy1jb250ZW50IiwidWktd2lkZ2V0LWNvbnRlbnQiKSx0aGlzLl9jcmVhdGVUaXRsZWJhcigpLHRoaXMuX2NyZWF0ZUJ1dHRvblBhbmUoKSx0aGlzLm9wdGlvbnMuZHJhZ2dhYmxlJiZ0LmZuLmRyYWdnYWJsZSYmdGhpcy5fbWFrZURyYWdnYWJsZSgpLHRoaXMub3B0aW9ucy5yZXNpemFibGUmJnQuZm4ucmVzaXphYmxlJiZ0aGlzLl9tYWtlUmVzaXphYmxlKCksdGhpcy5faXNPcGVuPSExLHRoaXMuX3RyYWNrRm9jdXMoKX0sX2luaXQ6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuYXV0b09wZW4mJnRoaXMub3BlbigpfSxfYXBwZW5kVG86ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnMuYXBwZW5kVG87cmV0dXJuIGUmJihlLmpxdWVyeXx8ZS5ub2RlVHlwZSk/dChlKTp0aGlzLmRvY3VtZW50LmZpbmQoZXx8ImJvZHkiKS5lcSgwKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMub3JpZ2luYWxQb3NpdGlvbjt0aGlzLl91bnRyYWNrSW5zdGFuY2UoKSx0aGlzLl9kZXN0cm95T3ZlcmxheSgpLHRoaXMuZWxlbWVudC5yZW1vdmVVbmlxdWVJZCgpLmNzcyh0aGlzLm9yaWdpbmFsQ3NzKS5kZXRhY2goKSx0aGlzLnVpRGlhbG9nLnJlbW92ZSgpLHRoaXMub3JpZ2luYWxUaXRsZSYmdGhpcy5lbGVtZW50LmF0dHIoInRpdGxlIix0aGlzLm9yaWdpbmFsVGl0bGUpLHQ9ZS5wYXJlbnQuY2hpbGRyZW4oKS5lcShlLmluZGV4KSx0Lmxlbmd0aCYmdFswXSE9PXRoaXMuZWxlbWVudFswXT90LmJlZm9yZSh0aGlzLmVsZW1lbnQpOmUucGFyZW50LmFwcGVuZCh0aGlzLmVsZW1lbnQpfSx3aWRnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51aURpYWxvZ30sZGlzYWJsZTp0Lm5vb3AsZW5hYmxlOnQubm9vcCxjbG9zZTpmdW5jdGlvbihlKXt2YXIgaT10aGlzO3RoaXMuX2lzT3BlbiYmdGhpcy5fdHJpZ2dlcigiYmVmb3JlQ2xvc2UiLGUpIT09ITEmJih0aGlzLl9pc09wZW49ITEsdGhpcy5fZm9jdXNlZEVsZW1lbnQ9bnVsbCx0aGlzLl9kZXN0cm95T3ZlcmxheSgpLHRoaXMuX3VudHJhY2tJbnN0YW5jZSgpLHRoaXMub3BlbmVyLmZpbHRlcigiOmZvY3VzYWJsZSIpLnRyaWdnZXIoImZvY3VzIikubGVuZ3RofHx0LnVpLnNhZmVCbHVyKHQudWkuc2FmZUFjdGl2ZUVsZW1lbnQodGhpcy5kb2N1bWVudFswXSkpLHRoaXMuX2hpZGUodGhpcy51aURpYWxvZyx0aGlzLm9wdGlvbnMuaGlkZSxmdW5jdGlvbigpe2kuX3RyaWdnZXIoImNsb3NlIixlKX0pKX0saXNPcGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzT3Blbn0sbW92ZVRvVG9wOmZ1bmN0aW9uKCl7dGhpcy5fbW92ZVRvVG9wKCl9LF9tb3ZlVG9Ub3A6ZnVuY3Rpb24oZSxpKXt2YXIgcz0hMSxuPXRoaXMudWlEaWFsb2cuc2libGluZ3MoIi51aS1mcm9udDp2aXNpYmxlIikubWFwKGZ1bmN0aW9uKCl7cmV0dXJuK3QodGhpcykuY3NzKCJ6LWluZGV4Iil9KS5nZXQoKSxvPU1hdGgubWF4LmFwcGx5KG51bGwsbik7cmV0dXJuIG8+PSt0aGlzLnVpRGlhbG9nLmNzcygiei1pbmRleCIpJiYodGhpcy51aURpYWxvZy5jc3MoInotaW5kZXgiLG8rMSkscz0hMCkscyYmIWkmJnRoaXMuX3RyaWdnZXIoImZvY3VzIixlKSxzfSxvcGVuOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5faXNPcGVuPyh0aGlzLl9tb3ZlVG9Ub3AoKSYmdGhpcy5fZm9jdXNUYWJiYWJsZSgpLHZvaWQgMCk6KHRoaXMuX2lzT3Blbj0hMCx0aGlzLm9wZW5lcj10KHQudWkuc2FmZUFjdGl2ZUVsZW1lbnQodGhpcy5kb2N1bWVudFswXSkpLHRoaXMuX3NpemUoKSx0aGlzLl9wb3NpdGlvbigpLHRoaXMuX2NyZWF0ZU92ZXJsYXkoKSx0aGlzLl9tb3ZlVG9Ub3AobnVsbCwhMCksdGhpcy5vdmVybGF5JiZ0aGlzLm92ZXJsYXkuY3NzKCJ6LWluZGV4Iix0aGlzLnVpRGlhbG9nLmNzcygiei1pbmRleCIpLTEpLHRoaXMuX3Nob3codGhpcy51aURpYWxvZyx0aGlzLm9wdGlvbnMuc2hvdyxmdW5jdGlvbigpe2UuX2ZvY3VzVGFiYmFibGUoKSxlLl90cmlnZ2VyKCJmb2N1cyIpfSksdGhpcy5fbWFrZUZvY3VzVGFyZ2V0KCksdGhpcy5fdHJpZ2dlcigib3BlbiIpLHZvaWQgMCl9LF9mb2N1c1RhYmJhYmxlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZm9jdXNlZEVsZW1lbnQ7dHx8KHQ9dGhpcy5lbGVtZW50LmZpbmQoIlthdXRvZm9jdXNdIikpLHQubGVuZ3RofHwodD10aGlzLmVsZW1lbnQuZmluZCgiOnRhYmJhYmxlIikpLHQubGVuZ3RofHwodD10aGlzLnVpRGlhbG9nQnV0dG9uUGFuZS5maW5kKCI6dGFiYmFibGUiKSksdC5sZW5ndGh8fCh0PXRoaXMudWlEaWFsb2dUaXRsZWJhckNsb3NlLmZpbHRlcigiOnRhYmJhYmxlIikpLHQubGVuZ3RofHwodD10aGlzLnVpRGlhbG9nKSx0LmVxKDApLnRyaWdnZXIoImZvY3VzIil9LF9rZWVwRm9jdXM6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gaSgpe3ZhciBlPXQudWkuc2FmZUFjdGl2ZUVsZW1lbnQodGhpcy5kb2N1bWVudFswXSksaT10aGlzLnVpRGlhbG9nWzBdPT09ZXx8dC5jb250YWlucyh0aGlzLnVpRGlhbG9nWzBdLGUpO2l8fHRoaXMuX2ZvY3VzVGFiYmFibGUoKX1lLnByZXZlbnREZWZhdWx0KCksaS5jYWxsKHRoaXMpLHRoaXMuX2RlbGF5KGkpfSxfY3JlYXRlV3JhcHBlcjpmdW5jdGlvbigpe3RoaXMudWlEaWFsb2c9dCgiPGRpdj4iKS5oaWRlKCkuYXR0cih7dGFiSW5kZXg6LTEscm9sZToiZGlhbG9nIn0pLmFwcGVuZFRvKHRoaXMuX2FwcGVuZFRvKCkpLHRoaXMuX2FkZENsYXNzKHRoaXMudWlEaWFsb2csInVpLWRpYWxvZyIsInVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1mcm9udCIpLHRoaXMuX29uKHRoaXMudWlEaWFsb2cse2tleWRvd246ZnVuY3Rpb24oZSl7aWYodGhpcy5vcHRpb25zLmNsb3NlT25Fc2NhcGUmJiFlLmlzRGVmYXVsdFByZXZlbnRlZCgpJiZlLmtleUNvZGUmJmUua2V5Q29kZT09PXQudWkua2V5Q29kZS5FU0NBUEUpcmV0dXJuIGUucHJldmVudERlZmF1bHQoKSx0aGlzLmNsb3NlKGUpLHZvaWQgMDsKaWYoZS5rZXlDb2RlPT09dC51aS5rZXlDb2RlLlRBQiYmIWUuaXNEZWZhdWx0UHJldmVudGVkKCkpe3ZhciBpPXRoaXMudWlEaWFsb2cuZmluZCgiOnRhYmJhYmxlIikscz1pLmZpbHRlcigiOmZpcnN0Iiksbj1pLmZpbHRlcigiOmxhc3QiKTtlLnRhcmdldCE9PW5bMF0mJmUudGFyZ2V0IT09dGhpcy51aURpYWxvZ1swXXx8ZS5zaGlmdEtleT9lLnRhcmdldCE9PXNbMF0mJmUudGFyZ2V0IT09dGhpcy51aURpYWxvZ1swXXx8IWUuc2hpZnRLZXl8fCh0aGlzLl9kZWxheShmdW5jdGlvbigpe24udHJpZ2dlcigiZm9jdXMiKX0pLGUucHJldmVudERlZmF1bHQoKSk6KHRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7cy50cmlnZ2VyKCJmb2N1cyIpfSksZS5wcmV2ZW50RGVmYXVsdCgpKX19LG1vdXNlZG93bjpmdW5jdGlvbih0KXt0aGlzLl9tb3ZlVG9Ub3AodCkmJnRoaXMuX2ZvY3VzVGFiYmFibGUoKX19KSx0aGlzLmVsZW1lbnQuZmluZCgiW2FyaWEtZGVzY3JpYmVkYnldIikubGVuZ3RofHx0aGlzLnVpRGlhbG9nLmF0dHIoeyJhcmlhLWRlc2NyaWJlZGJ5Ijp0aGlzLmVsZW1lbnQudW5pcXVlSWQoKS5hdHRyKCJpZCIpfSl9LF9jcmVhdGVUaXRsZWJhcjpmdW5jdGlvbigpe3ZhciBlO3RoaXMudWlEaWFsb2dUaXRsZWJhcj10KCI8ZGl2PiIpLHRoaXMuX2FkZENsYXNzKHRoaXMudWlEaWFsb2dUaXRsZWJhciwidWktZGlhbG9nLXRpdGxlYmFyIiwidWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXgiKSx0aGlzLl9vbih0aGlzLnVpRGlhbG9nVGl0bGViYXIse21vdXNlZG93bjpmdW5jdGlvbihlKXt0KGUudGFyZ2V0KS5jbG9zZXN0KCIudWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIil8fHRoaXMudWlEaWFsb2cudHJpZ2dlcigiZm9jdXMiKX19KSx0aGlzLnVpRGlhbG9nVGl0bGViYXJDbG9zZT10KCI8YnV0dG9uIHR5cGU9J2J1dHRvbic+PC9idXR0b24+IikuYnV0dG9uKHtsYWJlbDp0KCI8YT4iKS50ZXh0KHRoaXMub3B0aW9ucy5jbG9zZVRleHQpLmh0bWwoKSxpY29uOiJ1aS1pY29uLWNsb3NldGhpY2siLHNob3dMYWJlbDohMX0pLmFwcGVuZFRvKHRoaXMudWlEaWFsb2dUaXRsZWJhciksdGhpcy5fYWRkQ2xhc3ModGhpcy51aURpYWxvZ1RpdGxlYmFyQ2xvc2UsInVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSIpLHRoaXMuX29uKHRoaXMudWlEaWFsb2dUaXRsZWJhckNsb3NlLHtjbGljazpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdGhpcy5jbG9zZSh0KX19KSxlPXQoIjxzcGFuPiIpLnVuaXF1ZUlkKCkucHJlcGVuZFRvKHRoaXMudWlEaWFsb2dUaXRsZWJhciksdGhpcy5fYWRkQ2xhc3MoZSwidWktZGlhbG9nLXRpdGxlIiksdGhpcy5fdGl0bGUoZSksdGhpcy51aURpYWxvZ1RpdGxlYmFyLnByZXBlbmRUbyh0aGlzLnVpRGlhbG9nKSx0aGlzLnVpRGlhbG9nLmF0dHIoeyJhcmlhLWxhYmVsbGVkYnkiOmUuYXR0cigiaWQiKX0pfSxfdGl0bGU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zLnRpdGxlP3QudGV4dCh0aGlzLm9wdGlvbnMudGl0bGUpOnQuaHRtbCgiJiMxNjA7Iil9LF9jcmVhdGVCdXR0b25QYW5lOmZ1bmN0aW9uKCl7dGhpcy51aURpYWxvZ0J1dHRvblBhbmU9dCgiPGRpdj4iKSx0aGlzLl9hZGRDbGFzcyh0aGlzLnVpRGlhbG9nQnV0dG9uUGFuZSwidWktZGlhbG9nLWJ1dHRvbnBhbmUiLCJ1aS13aWRnZXQtY29udGVudCB1aS1oZWxwZXItY2xlYXJmaXgiKSx0aGlzLnVpQnV0dG9uU2V0PXQoIjxkaXY+IikuYXBwZW5kVG8odGhpcy51aURpYWxvZ0J1dHRvblBhbmUpLHRoaXMuX2FkZENsYXNzKHRoaXMudWlCdXR0b25TZXQsInVpLWRpYWxvZy1idXR0b25zZXQiKSx0aGlzLl9jcmVhdGVCdXR0b25zKCl9LF9jcmVhdGVCdXR0b25zOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxpPXRoaXMub3B0aW9ucy5idXR0b25zO3JldHVybiB0aGlzLnVpRGlhbG9nQnV0dG9uUGFuZS5yZW1vdmUoKSx0aGlzLnVpQnV0dG9uU2V0LmVtcHR5KCksdC5pc0VtcHR5T2JqZWN0KGkpfHx0LmlzQXJyYXkoaSkmJiFpLmxlbmd0aD8odGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy51aURpYWxvZywidWktZGlhbG9nLWJ1dHRvbnMiKSx2b2lkIDApOih0LmVhY2goaSxmdW5jdGlvbihpLHMpe3ZhciBuLG87cz10LmlzRnVuY3Rpb24ocyk/e2NsaWNrOnMsdGV4dDppfTpzLHM9dC5leHRlbmQoe3R5cGU6ImJ1dHRvbiJ9LHMpLG49cy5jbGljayxvPXtpY29uOnMuaWNvbixpY29uUG9zaXRpb246cy5pY29uUG9zaXRpb24sc2hvd0xhYmVsOnMuc2hvd0xhYmVsfSxkZWxldGUgcy5jbGljayxkZWxldGUgcy5pY29uLGRlbGV0ZSBzLmljb25Qb3NpdGlvbixkZWxldGUgcy5zaG93TGFiZWwsdCgiPGJ1dHRvbj48L2J1dHRvbj4iLHMpLmJ1dHRvbihvKS5hcHBlbmRUbyhlLnVpQnV0dG9uU2V0KS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7bi5hcHBseShlLmVsZW1lbnRbMF0sYXJndW1lbnRzKX0pfSksdGhpcy5fYWRkQ2xhc3ModGhpcy51aURpYWxvZywidWktZGlhbG9nLWJ1dHRvbnMiKSx0aGlzLnVpRGlhbG9nQnV0dG9uUGFuZS5hcHBlbmRUbyh0aGlzLnVpRGlhbG9nKSx2b2lkIDApfSxfbWFrZURyYWdnYWJsZTpmdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7cmV0dXJue3Bvc2l0aW9uOnQucG9zaXRpb24sb2Zmc2V0OnQub2Zmc2V0fX12YXIgaT10aGlzLHM9dGhpcy5vcHRpb25zO3RoaXMudWlEaWFsb2cuZHJhZ2dhYmxlKHtjYW5jZWw6Ii51aS1kaWFsb2ctY29udGVudCwgLnVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSIsaGFuZGxlOiIudWktZGlhbG9nLXRpdGxlYmFyIixjb250YWlubWVudDoiZG9jdW1lbnQiLHN0YXJ0OmZ1bmN0aW9uKHMsbil7aS5fYWRkQ2xhc3ModCh0aGlzKSwidWktZGlhbG9nLWRyYWdnaW5nIiksaS5fYmxvY2tGcmFtZXMoKSxpLl90cmlnZ2VyKCJkcmFnU3RhcnQiLHMsZShuKSl9LGRyYWc6ZnVuY3Rpb24odCxzKXtpLl90cmlnZ2VyKCJkcmFnIix0LGUocykpfSxzdG9wOmZ1bmN0aW9uKG4sbyl7dmFyIGE9by5vZmZzZXQubGVmdC1pLmRvY3VtZW50LnNjcm9sbExlZnQoKSxyPW8ub2Zmc2V0LnRvcC1pLmRvY3VtZW50LnNjcm9sbFRvcCgpO3MucG9zaXRpb249e215OiJsZWZ0IHRvcCIsYXQ6ImxlZnQiKyhhPj0wPyIrIjoiIikrYSsiICIrInRvcCIrKHI+PTA/IisiOiIiKStyLG9mOmkud2luZG93fSxpLl9yZW1vdmVDbGFzcyh0KHRoaXMpLCJ1aS1kaWFsb2ctZHJhZ2dpbmciKSxpLl91bmJsb2NrRnJhbWVzKCksaS5fdHJpZ2dlcigiZHJhZ1N0b3AiLG4sZShvKSl9fSl9LF9tYWtlUmVzaXphYmxlOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtyZXR1cm57b3JpZ2luYWxQb3NpdGlvbjp0Lm9yaWdpbmFsUG9zaXRpb24sb3JpZ2luYWxTaXplOnQub3JpZ2luYWxTaXplLHBvc2l0aW9uOnQucG9zaXRpb24sc2l6ZTp0LnNpemV9fXZhciBpPXRoaXMscz10aGlzLm9wdGlvbnMsbj1zLnJlc2l6YWJsZSxvPXRoaXMudWlEaWFsb2cuY3NzKCJwb3NpdGlvbiIpLGE9InN0cmluZyI9PXR5cGVvZiBuP246Im4sZSxzLHcsc2Usc3csbmUsbnciO3RoaXMudWlEaWFsb2cucmVzaXphYmxlKHtjYW5jZWw6Ii51aS1kaWFsb2ctY29udGVudCIsY29udGFpbm1lbnQ6ImRvY3VtZW50IixhbHNvUmVzaXplOnRoaXMuZWxlbWVudCxtYXhXaWR0aDpzLm1heFdpZHRoLG1heEhlaWdodDpzLm1heEhlaWdodCxtaW5XaWR0aDpzLm1pbldpZHRoLG1pbkhlaWdodDp0aGlzLl9taW5IZWlnaHQoKSxoYW5kbGVzOmEsc3RhcnQ6ZnVuY3Rpb24ocyxuKXtpLl9hZGRDbGFzcyh0KHRoaXMpLCJ1aS1kaWFsb2ctcmVzaXppbmciKSxpLl9ibG9ja0ZyYW1lcygpLGkuX3RyaWdnZXIoInJlc2l6ZVN0YXJ0IixzLGUobikpfSxyZXNpemU6ZnVuY3Rpb24odCxzKXtpLl90cmlnZ2VyKCJyZXNpemUiLHQsZShzKSl9LHN0b3A6ZnVuY3Rpb24obixvKXt2YXIgYT1pLnVpRGlhbG9nLm9mZnNldCgpLHI9YS5sZWZ0LWkuZG9jdW1lbnQuc2Nyb2xsTGVmdCgpLGg9YS50b3AtaS5kb2N1bWVudC5zY3JvbGxUb3AoKTtzLmhlaWdodD1pLnVpRGlhbG9nLmhlaWdodCgpLHMud2lkdGg9aS51aURpYWxvZy53aWR0aCgpLHMucG9zaXRpb249e215OiJsZWZ0IHRvcCIsYXQ6ImxlZnQiKyhyPj0wPyIrIjoiIikrcisiICIrInRvcCIrKGg+PTA/IisiOiIiKStoLG9mOmkud2luZG93fSxpLl9yZW1vdmVDbGFzcyh0KHRoaXMpLCJ1aS1kaWFsb2ctcmVzaXppbmciKSxpLl91bmJsb2NrRnJhbWVzKCksaS5fdHJpZ2dlcigicmVzaXplU3RvcCIsbixlKG8pKX19KS5jc3MoInBvc2l0aW9uIixvKX0sX3RyYWNrRm9jdXM6ZnVuY3Rpb24oKXt0aGlzLl9vbih0aGlzLndpZGdldCgpLHtmb2N1c2luOmZ1bmN0aW9uKGUpe3RoaXMuX21ha2VGb2N1c1RhcmdldCgpLHRoaXMuX2ZvY3VzZWRFbGVtZW50PXQoZS50YXJnZXQpfX0pfSxfbWFrZUZvY3VzVGFyZ2V0OmZ1bmN0aW9uKCl7dGhpcy5fdW50cmFja0luc3RhbmNlKCksdGhpcy5fdHJhY2tpbmdJbnN0YW5jZXMoKS51bnNoaWZ0KHRoaXMpfSxfdW50cmFja0luc3RhbmNlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fdHJhY2tpbmdJbnN0YW5jZXMoKSxpPXQuaW5BcnJheSh0aGlzLGUpOy0xIT09aSYmZS5zcGxpY2UoaSwxKX0sX3RyYWNraW5nSW5zdGFuY2VzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kb2N1bWVudC5kYXRhKCJ1aS1kaWFsb2ctaW5zdGFuY2VzIik7cmV0dXJuIHR8fCh0PVtdLHRoaXMuZG9jdW1lbnQuZGF0YSgidWktZGlhbG9nLWluc3RhbmNlcyIsdCkpLHR9LF9taW5IZWlnaHQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnM7cmV0dXJuImF1dG8iPT09dC5oZWlnaHQ/dC5taW5IZWlnaHQ6TWF0aC5taW4odC5taW5IZWlnaHQsdC5oZWlnaHQpfSxfcG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnVpRGlhbG9nLmlzKCI6dmlzaWJsZSIpO3R8fHRoaXMudWlEaWFsb2cuc2hvdygpLHRoaXMudWlEaWFsb2cucG9zaXRpb24odGhpcy5vcHRpb25zLnBvc2l0aW9uKSx0fHx0aGlzLnVpRGlhbG9nLmhpZGUoKX0sX3NldE9wdGlvbnM6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcyxzPSExLG49e307dC5lYWNoKGUsZnVuY3Rpb24odCxlKXtpLl9zZXRPcHRpb24odCxlKSx0IGluIGkuc2l6ZVJlbGF0ZWRPcHRpb25zJiYocz0hMCksdCBpbiBpLnJlc2l6YWJsZVJlbGF0ZWRPcHRpb25zJiYoblt0XT1lKX0pLHMmJih0aGlzLl9zaXplKCksdGhpcy5fcG9zaXRpb24oKSksdGhpcy51aURpYWxvZy5pcygiOmRhdGEodWktcmVzaXphYmxlKSIpJiZ0aGlzLnVpRGlhbG9nLnJlc2l6YWJsZSgib3B0aW9uIixuKX0sX3NldE9wdGlvbjpmdW5jdGlvbihlLGkpe3ZhciBzLG4sbz10aGlzLnVpRGlhbG9nOyJkaXNhYmxlZCIhPT1lJiYodGhpcy5fc3VwZXIoZSxpKSwiYXBwZW5kVG8iPT09ZSYmdGhpcy51aURpYWxvZy5hcHBlbmRUbyh0aGlzLl9hcHBlbmRUbygpKSwiYnV0dG9ucyI9PT1lJiZ0aGlzLl9jcmVhdGVCdXR0b25zKCksImNsb3NlVGV4dCI9PT1lJiZ0aGlzLnVpRGlhbG9nVGl0bGViYXJDbG9zZS5idXR0b24oe2xhYmVsOnQoIjxhPiIpLnRleHQoIiIrdGhpcy5vcHRpb25zLmNsb3NlVGV4dCkuaHRtbCgpfSksImRyYWdnYWJsZSI9PT1lJiYocz1vLmlzKCI6ZGF0YSh1aS1kcmFnZ2FibGUpIikscyYmIWkmJm8uZHJhZ2dhYmxlKCJkZXN0cm95IiksIXMmJmkmJnRoaXMuX21ha2VEcmFnZ2FibGUoKSksInBvc2l0aW9uIj09PWUmJnRoaXMuX3Bvc2l0aW9uKCksInJlc2l6YWJsZSI9PT1lJiYobj1vLmlzKCI6ZGF0YSh1aS1yZXNpemFibGUpIiksbiYmIWkmJm8ucmVzaXphYmxlKCJkZXN0cm95IiksbiYmInN0cmluZyI9PXR5cGVvZiBpJiZvLnJlc2l6YWJsZSgib3B0aW9uIiwiaGFuZGxlcyIsaSksbnx8aT09PSExfHx0aGlzLl9tYWtlUmVzaXphYmxlKCkpLCJ0aXRsZSI9PT1lJiZ0aGlzLl90aXRsZSh0aGlzLnVpRGlhbG9nVGl0bGViYXIuZmluZCgiLnVpLWRpYWxvZy10aXRsZSIpKSl9LF9zaXplOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLHM9dGhpcy5vcHRpb25zO3RoaXMuZWxlbWVudC5zaG93KCkuY3NzKHt3aWR0aDoiYXV0byIsbWluSGVpZ2h0OjAsbWF4SGVpZ2h0OiJub25lIixoZWlnaHQ6MH0pLHMubWluV2lkdGg+cy53aWR0aCYmKHMud2lkdGg9cy5taW5XaWR0aCksdD10aGlzLnVpRGlhbG9nLmNzcyh7aGVpZ2h0OiJhdXRvIix3aWR0aDpzLndpZHRofSkub3V0ZXJIZWlnaHQoKSxlPU1hdGgubWF4KDAscy5taW5IZWlnaHQtdCksaT0ibnVtYmVyIj09dHlwZW9mIHMubWF4SGVpZ2h0P01hdGgubWF4KDAscy5tYXhIZWlnaHQtdCk6Im5vbmUiLCJhdXRvIj09PXMuaGVpZ2h0P3RoaXMuZWxlbWVudC5jc3Moe21pbkhlaWdodDplLG1heEhlaWdodDppLGhlaWdodDoiYXV0byJ9KTp0aGlzLmVsZW1lbnQuaGVpZ2h0KE1hdGgubWF4KDAscy5oZWlnaHQtdCkpLHRoaXMudWlEaWFsb2cuaXMoIjpkYXRhKHVpLXJlc2l6YWJsZSkiKSYmdGhpcy51aURpYWxvZy5yZXNpemFibGUoIm9wdGlvbiIsIm1pbkhlaWdodCIsdGhpcy5fbWluSGVpZ2h0KCkpfSxfYmxvY2tGcmFtZXM6ZnVuY3Rpb24oKXt0aGlzLmlmcmFtZUJsb2Nrcz10aGlzLmRvY3VtZW50LmZpbmQoImlmcmFtZSIpLm1hcChmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7cmV0dXJuIHQoIjxkaXY+IikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHdpZHRoOmUub3V0ZXJXaWR0aCgpLGhlaWdodDplLm91dGVySGVpZ2h0KCl9KS5hcHBlbmRUbyhlLnBhcmVudCgpKS5vZmZzZXQoZS5vZmZzZXQoKSlbMF19KX0sX3VuYmxvY2tGcmFtZXM6ZnVuY3Rpb24oKXt0aGlzLmlmcmFtZUJsb2NrcyYmKHRoaXMuaWZyYW1lQmxvY2tzLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLmlmcmFtZUJsb2Nrcyl9LF9hbGxvd0ludGVyYWN0aW9uOmZ1bmN0aW9uKGUpe3JldHVybiB0KGUudGFyZ2V0KS5jbG9zZXN0KCIudWktZGlhbG9nIikubGVuZ3RoPyEwOiEhdChlLnRhcmdldCkuY2xvc2VzdCgiLnVpLWRhdGVwaWNrZXIiKS5sZW5ndGh9LF9jcmVhdGVPdmVybGF5OmZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zLm1vZGFsKXt2YXIgZT0hMDt0aGlzLl9kZWxheShmdW5jdGlvbigpe2U9ITF9KSx0aGlzLmRvY3VtZW50LmRhdGEoInVpLWRpYWxvZy1vdmVybGF5cyIpfHx0aGlzLl9vbih0aGlzLmRvY3VtZW50LHtmb2N1c2luOmZ1bmN0aW9uKHQpe2V8fHRoaXMuX2FsbG93SW50ZXJhY3Rpb24odCl8fCh0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fdHJhY2tpbmdJbnN0YW5jZXMoKVswXS5fZm9jdXNUYWJiYWJsZSgpKX19KSx0aGlzLm92ZXJsYXk9dCgiPGRpdj4iKS5hcHBlbmRUbyh0aGlzLl9hcHBlbmRUbygpKSx0aGlzLl9hZGRDbGFzcyh0aGlzLm92ZXJsYXksbnVsbCwidWktd2lkZ2V0LW92ZXJsYXkgdWktZnJvbnQiKSx0aGlzLl9vbih0aGlzLm92ZXJsYXkse21vdXNlZG93bjoiX2tlZXBGb2N1cyJ9KSx0aGlzLmRvY3VtZW50LmRhdGEoInVpLWRpYWxvZy1vdmVybGF5cyIsKHRoaXMuZG9jdW1lbnQuZGF0YSgidWktZGlhbG9nLW92ZXJsYXlzIil8fDApKzEpfX0sX2Rlc3Ryb3lPdmVybGF5OmZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zLm1vZGFsJiZ0aGlzLm92ZXJsYXkpe3ZhciB0PXRoaXMuZG9jdW1lbnQuZGF0YSgidWktZGlhbG9nLW92ZXJsYXlzIiktMTt0P3RoaXMuZG9jdW1lbnQuZGF0YSgidWktZGlhbG9nLW92ZXJsYXlzIix0KToodGhpcy5fb2ZmKHRoaXMuZG9jdW1lbnQsImZvY3VzaW4iKSx0aGlzLmRvY3VtZW50LnJlbW92ZURhdGEoInVpLWRpYWxvZy1vdmVybGF5cyIpKSx0aGlzLm92ZXJsYXkucmVtb3ZlKCksdGhpcy5vdmVybGF5PW51bGx9fX0pLHQudWlCYWNrQ29tcGF0IT09ITEmJnQud2lkZ2V0KCJ1aS5kaWFsb2ciLHQudWkuZGlhbG9nLHtvcHRpb25zOntkaWFsb2dDbGFzczoiIn0sX2NyZWF0ZVdyYXBwZXI6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlcigpLHRoaXMudWlEaWFsb2cuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmRpYWxvZ0NsYXNzKX0sX3NldE9wdGlvbjpmdW5jdGlvbih0LGUpeyJkaWFsb2dDbGFzcyI9PT10JiZ0aGlzLnVpRGlhbG9nLnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5kaWFsb2dDbGFzcykuYWRkQ2xhc3MoZSksdGhpcy5fc3VwZXJBcHBseShhcmd1bWVudHMpfX0pLHQudWkuZGlhbG9nLHQud2lkZ2V0KCJ1aS5kcm9wcGFibGUiLHt2ZXJzaW9uOiIxLjEyLjAtcmMuMiIsd2lkZ2V0RXZlbnRQcmVmaXg6ImRyb3AiLG9wdGlvbnM6e2FjY2VwdDoiKiIsYWRkQ2xhc3NlczohMCxncmVlZHk6ITEsc2NvcGU6ImRlZmF1bHQiLHRvbGVyYW5jZToiaW50ZXJzZWN0IixhY3RpdmF0ZTpudWxsLGRlYWN0aXZhdGU6bnVsbCxkcm9wOm51bGwsb3V0Om51bGwsb3ZlcjpudWxsfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIGUsaT10aGlzLm9wdGlvbnMscz1pLmFjY2VwdDt0aGlzLmlzb3Zlcj0hMSx0aGlzLmlzb3V0PSEwLHRoaXMuYWNjZXB0PXQuaXNGdW5jdGlvbihzKT9zOmZ1bmN0aW9uKHQpe3JldHVybiB0LmlzKHMpfSx0aGlzLnByb3BvcnRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9YXJndW1lbnRzWzBdLHZvaWQgMCk6ZT9lOmU9e3dpZHRoOnRoaXMuZWxlbWVudFswXS5vZmZzZXRXaWR0aCxoZWlnaHQ6dGhpcy5lbGVtZW50WzBdLm9mZnNldEhlaWdodH19LHRoaXMuX2FkZFRvTWFuYWdlcihpLnNjb3BlKSxpLmFkZENsYXNzZXMmJnRoaXMuX2FkZENsYXNzKCJ1aS1kcm9wcGFibGUiKX0sX2FkZFRvTWFuYWdlcjpmdW5jdGlvbihlKXt0LnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW2VdPXQudWkuZGRtYW5hZ2VyLmRyb3BwYWJsZXNbZV18fFtdLHQudWkuZGRtYW5hZ2VyLmRyb3BwYWJsZXNbZV0ucHVzaCh0aGlzKX0sX3NwbGljZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MDt0Lmxlbmd0aD5lO2UrKyl0W2VdPT09dGhpcyYmdC5zcGxpY2UoZSwxKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgZT10LnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW3RoaXMub3B0aW9ucy5zY29wZV07dGhpcy5fc3BsaWNlKGUpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsaSl7aWYoImFjY2VwdCI9PT1lKXRoaXMuYWNjZXB0PXQuaXNGdW5jdGlvbihpKT9pOmZ1bmN0aW9uKHQpe3JldHVybiB0LmlzKGkpfTtlbHNlIGlmKCJzY29wZSI9PT1lKXt2YXIgcz10LnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW3RoaXMub3B0aW9ucy5zY29wZV07dGhpcy5fc3BsaWNlKHMpLHRoaXMuX2FkZFRvTWFuYWdlcihpKX10aGlzLl9zdXBlcihlLGkpfSxfYWN0aXZhdGU6ZnVuY3Rpb24oZSl7dmFyIGk9dC51aS5kZG1hbmFnZXIuY3VycmVudDt0aGlzLl9hZGRBY3RpdmVDbGFzcygpLGkmJnRoaXMuX3RyaWdnZXIoImFjdGl2YXRlIixlLHRoaXMudWkoaSkpfSxfZGVhY3RpdmF0ZTpmdW5jdGlvbihlKXt2YXIgaT10LnVpLmRkbWFuYWdlci5jdXJyZW50O3RoaXMuX3JlbW92ZUFjdGl2ZUNsYXNzKCksaSYmdGhpcy5fdHJpZ2dlcigiZGVhY3RpdmF0ZSIsZSx0aGlzLnVpKGkpKX0sX292ZXI6ZnVuY3Rpb24oZSl7dmFyIGk9dC51aS5kZG1hbmFnZXIuY3VycmVudDtpJiYoaS5jdXJyZW50SXRlbXx8aS5lbGVtZW50KVswXSE9PXRoaXMuZWxlbWVudFswXSYmdGhpcy5hY2NlcHQuY2FsbCh0aGlzLmVsZW1lbnRbMF0saS5jdXJyZW50SXRlbXx8aS5lbGVtZW50KSYmKHRoaXMuX2FkZEhvdmVyQ2xhc3MoKSx0aGlzLl90cmlnZ2VyKCJvdmVyIixlLHRoaXMudWkoaSkpKX0sX291dDpmdW5jdGlvbihlKXt2YXIgaT10LnVpLmRkbWFuYWdlci5jdXJyZW50O2kmJihpLmN1cnJlbnRJdGVtfHxpLmVsZW1lbnQpWzBdIT09dGhpcy5lbGVtZW50WzBdJiZ0aGlzLmFjY2VwdC5jYWxsKHRoaXMuZWxlbWVudFswXSxpLmN1cnJlbnRJdGVtfHxpLmVsZW1lbnQpJiYodGhpcy5fcmVtb3ZlSG92ZXJDbGFzcygpLHRoaXMuX3RyaWdnZXIoIm91dCIsZSx0aGlzLnVpKGkpKSl9LF9kcm9wOmZ1bmN0aW9uKGUsaSl7dmFyIHM9aXx8dC51aS5kZG1hbmFnZXIuY3VycmVudCxuPSExO3JldHVybiBzJiYocy5jdXJyZW50SXRlbXx8cy5lbGVtZW50KVswXSE9PXRoaXMuZWxlbWVudFswXT8odGhpcy5lbGVtZW50LmZpbmQoIjpkYXRhKHVpLWRyb3BwYWJsZSkiKS5ub3QoIi51aS1kcmFnZ2FibGUtZHJhZ2dpbmciKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9dCh0aGlzKS5kcm9wcGFibGUoImluc3RhbmNlIik7cmV0dXJuIGkub3B0aW9ucy5ncmVlZHkmJiFpLm9wdGlvbnMuZGlzYWJsZWQmJmkub3B0aW9ucy5zY29wZT09PXMub3B0aW9ucy5zY29wZSYmaS5hY2NlcHQuY2FsbChpLmVsZW1lbnRbMF0scy5jdXJyZW50SXRlbXx8cy5lbGVtZW50KSYmXyhzLHQuZXh0ZW5kKGkse29mZnNldDppLmVsZW1lbnQub2Zmc2V0KCl9KSxpLm9wdGlvbnMudG9sZXJhbmNlLGUpPyhuPSEwLCExKTp2b2lkIDB9KSxuPyExOnRoaXMuYWNjZXB0LmNhbGwodGhpcy5lbGVtZW50WzBdLHMuY3VycmVudEl0ZW18fHMuZWxlbWVudCk/KHRoaXMuX3JlbW92ZUFjdGl2ZUNsYXNzKCksdGhpcy5fcmVtb3ZlSG92ZXJDbGFzcygpLHRoaXMuX3RyaWdnZXIoImRyb3AiLGUsdGhpcy51aShzKSksdGhpcy5lbGVtZW50KTohMSk6ITF9LHVpOmZ1bmN0aW9uKHQpe3JldHVybntkcmFnZ2FibGU6dC5jdXJyZW50SXRlbXx8dC5lbGVtZW50LGhlbHBlcjp0LmhlbHBlcixwb3NpdGlvbjp0LnBvc2l0aW9uLG9mZnNldDp0LnBvc2l0aW9uQWJzfX0sX2FkZEhvdmVyQ2xhc3M6ZnVuY3Rpb24oKXt0aGlzLl9hZGRDbGFzcygidWktZHJvcHBhYmxlLWhvdmVyIil9LF9yZW1vdmVIb3ZlckNsYXNzOmZ1bmN0aW9uKCl7dGhpcy5fcmVtb3ZlQ2xhc3MoInVpLWRyb3BwYWJsZS1ob3ZlciIpfSxfYWRkQWN0aXZlQ2xhc3M6ZnVuY3Rpb24oKXt0aGlzLl9hZGRDbGFzcygidWktZHJvcHBhYmxlLWFjdGl2ZSIpfSxfcmVtb3ZlQWN0aXZlQ2xhc3M6ZnVuY3Rpb24oKXt0aGlzLl9yZW1vdmVDbGFzcygidWktZHJvcHBhYmxlLWFjdGl2ZSIpfX0pO3ZhciBfPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsaSl7cmV0dXJuIHQ+PWUmJmUraT50fXJldHVybiBmdW5jdGlvbihlLGkscyxuKXtpZighaS5vZmZzZXQpcmV0dXJuITE7dmFyIG89KGUucG9zaXRpb25BYnN8fGUucG9zaXRpb24uYWJzb2x1dGUpLmxlZnQrZS5tYXJnaW5zLmxlZnQsYT0oZS5wb3NpdGlvbkFic3x8ZS5wb3NpdGlvbi5hYnNvbHV0ZSkudG9wK2UubWFyZ2lucy50b3Ascj1vK2UuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgsaD1hK2UuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LGw9aS5vZmZzZXQubGVmdCxjPWkub2Zmc2V0LnRvcCx1PWwraS5wcm9wb3J0aW9ucygpLndpZHRoLGQ9YytpLnByb3BvcnRpb25zKCkuaGVpZ2h0O3N3aXRjaChzKXtjYXNlImZpdCI6cmV0dXJuIG8+PWwmJnU+PXImJmE+PWMmJmQ+PWg7Y2FzZSJpbnRlcnNlY3QiOnJldHVybiBvK2UuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMj5sJiZ1PnItZS5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC8yJiZhK2UuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LzI+YyYmZD5oLWUuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LzI7Y2FzZSJwb2ludGVyIjpyZXR1cm4gdChuLnBhZ2VZLGMsaS5wcm9wb3J0aW9ucygpLmhlaWdodCkmJnQobi5wYWdlWCxsLGkucHJvcG9ydGlvbnMoKS53aWR0aCk7Y2FzZSJ0b3VjaCI6cmV0dXJuKGE+PWMmJmQ+PWF8fGg+PWMmJmQ+PWh8fGM+YSYmaD5kKSYmKG8+PWwmJnU+PW98fHI+PWwmJnU+PXJ8fGw+byYmcj51KTtkZWZhdWx0OnJldHVybiExfX19KCk7dC51aS5kZG1hbmFnZXI9e2N1cnJlbnQ6bnVsbCxkcm9wcGFibGVzOnsiZGVmYXVsdCI6W119LHByZXBhcmVPZmZzZXRzOmZ1bmN0aW9uKGUsaSl7dmFyIHMsbixvPXQudWkuZGRtYW5hZ2VyLmRyb3BwYWJsZXNbZS5vcHRpb25zLnNjb3BlXXx8W10sYT1pP2kudHlwZTpudWxsLHI9KGUuY3VycmVudEl0ZW18fGUuZWxlbWVudCkuZmluZCgiOmRhdGEodWktZHJvcHBhYmxlKSIpLmFkZEJhY2soKTt0OmZvcihzPTA7by5sZW5ndGg+cztzKyspaWYoIShvW3NdLm9wdGlvbnMuZGlzYWJsZWR8fGUmJiFvW3NdLmFjY2VwdC5jYWxsKG9bc10uZWxlbWVudFswXSxlLmN1cnJlbnRJdGVtfHxlLmVsZW1lbnQpKSl7Zm9yKG49MDtyLmxlbmd0aD5uO24rKylpZihyW25dPT09b1tzXS5lbGVtZW50WzBdKXtvW3NdLnByb3BvcnRpb25zKCkuaGVpZ2h0PTA7Y29udGludWUgdH1vW3NdLnZpc2libGU9Im5vbmUiIT09b1tzXS5lbGVtZW50LmNzcygiZGlzcGxheSIpLG9bc10udmlzaWJsZSYmKCJtb3VzZWRvd24iPT09YSYmb1tzXS5fYWN0aXZhdGUuY2FsbChvW3NdLGkpLG9bc10ub2Zmc2V0PW9bc10uZWxlbWVudC5vZmZzZXQoKSxvW3NdLnByb3BvcnRpb25zKHt3aWR0aDpvW3NdLmVsZW1lbnRbMF0ub2Zmc2V0V2lkdGgsaGVpZ2h0Om9bc10uZWxlbWVudFswXS5vZmZzZXRIZWlnaHR9KSl9fSxkcm9wOmZ1bmN0aW9uKGUsaSl7dmFyIHM9ITE7cmV0dXJuIHQuZWFjaCgodC51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1tlLm9wdGlvbnMuc2NvcGVdfHxbXSkuc2xpY2UoKSxmdW5jdGlvbigpe3RoaXMub3B0aW9ucyYmKCF0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMudmlzaWJsZSYmXyhlLHRoaXMsdGhpcy5vcHRpb25zLnRvbGVyYW5jZSxpKSYmKHM9dGhpcy5fZHJvcC5jYWxsKHRoaXMsaSl8fHMpLCF0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMudmlzaWJsZSYmdGhpcy5hY2NlcHQuY2FsbCh0aGlzLmVsZW1lbnRbMF0sZS5jdXJyZW50SXRlbXx8ZS5lbGVtZW50KSYmKHRoaXMuaXNvdXQ9ITAsdGhpcy5pc292ZXI9ITEsdGhpcy5fZGVhY3RpdmF0ZS5jYWxsKHRoaXMsaSkpKX0pLHN9LGRyYWdTdGFydDpmdW5jdGlvbihlLGkpe2UuZWxlbWVudC5wYXJlbnRzVW50aWwoImJvZHkiKS5vbigic2Nyb2xsLmRyb3BwYWJsZSIsZnVuY3Rpb24oKXtlLm9wdGlvbnMucmVmcmVzaFBvc2l0aW9uc3x8dC51aS5kZG1hbmFnZXIucHJlcGFyZU9mZnNldHMoZSxpKX0pfSxkcmFnOmZ1bmN0aW9uKGUsaSl7ZS5vcHRpb25zLnJlZnJlc2hQb3NpdGlvbnMmJnQudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKGUsaSksdC5lYWNoKHQudWkuZGRtYW5hZ2VyLmRyb3BwYWJsZXNbZS5vcHRpb25zLnNjb3BlXXx8W10sZnVuY3Rpb24oKXtpZighdGhpcy5vcHRpb25zLmRpc2FibGVkJiYhdGhpcy5ncmVlZHlDaGlsZCYmdGhpcy52aXNpYmxlKXt2YXIgcyxuLG8sYT1fKGUsdGhpcyx0aGlzLm9wdGlvbnMudG9sZXJhbmNlLGkpLHI9IWEmJnRoaXMuaXNvdmVyPyJpc291dCI6YSYmIXRoaXMuaXNvdmVyPyJpc292ZXIiOm51bGw7ciYmKHRoaXMub3B0aW9ucy5ncmVlZHkmJihuPXRoaXMub3B0aW9ucy5zY29wZSxvPXRoaXMuZWxlbWVudC5wYXJlbnRzKCI6ZGF0YSh1aS1kcm9wcGFibGUpIikuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcykuZHJvcHBhYmxlKCJpbnN0YW5jZSIpLm9wdGlvbnMuc2NvcGU9PT1ufSksby5sZW5ndGgmJihzPXQob1swXSkuZHJvcHBhYmxlKCJpbnN0YW5jZSIpLHMuZ3JlZWR5Q2hpbGQ9Imlzb3ZlciI9PT1yKSkscyYmImlzb3ZlciI9PT1yJiYocy5pc292ZXI9ITEscy5pc291dD0hMCxzLl9vdXQuY2FsbChzLGkpKSx0aGlzW3JdPSEwLHRoaXNbImlzb3V0Ij09PXI/Imlzb3ZlciI6Imlzb3V0Il09ITEsdGhpc1siaXNvdmVyIj09PXI/Il9vdmVyIjoiX291dCJdLmNhbGwodGhpcyxpKSxzJiYiaXNvdXQiPT09ciYmKHMuaXNvdXQ9ITEscy5pc292ZXI9ITAscy5fb3Zlci5jYWxsKHMsaSkpKX19KX0sZHJhZ1N0b3A6ZnVuY3Rpb24oZSxpKXtlLmVsZW1lbnQucGFyZW50c1VudGlsKCJib2R5Iikub2ZmKCJzY3JvbGwuZHJvcHBhYmxlIiksZS5vcHRpb25zLnJlZnJlc2hQb3NpdGlvbnN8fHQudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKGUsaSl9fSx0LnVpQmFja0NvbXBhdCE9PSExJiZ0LndpZGdldCgidWkuZHJvcHBhYmxlIix0LnVpLmRyb3BwYWJsZSx7b3B0aW9uczp7aG92ZXJDbGFzczohMSxhY3RpdmVDbGFzczohMX0sX2FkZEFjdGl2ZUNsYXNzOmZ1bmN0aW9uKCl7dGhpcy5fc3VwZXIoKSx0aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3MmJnRoaXMuZWxlbWVudC5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3MpfSxfcmVtb3ZlQWN0aXZlQ2xhc3M6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlcigpLHRoaXMub3B0aW9ucy5hY3RpdmVDbGFzcyYmdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5hY3RpdmVDbGFzcyl9LF9hZGRIb3ZlckNsYXNzOmZ1bmN0aW9uKCl7dGhpcy5fc3VwZXIoKSx0aGlzLm9wdGlvbnMuaG92ZXJDbGFzcyYmdGhpcy5lbGVtZW50LmFkZENsYXNzKHRoaXMub3B0aW9ucy5ob3ZlckNsYXNzKX0sX3JlbW92ZUhvdmVyQ2xhc3M6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlcigpLHRoaXMub3B0aW9ucy5ob3ZlckNsYXNzJiZ0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmhvdmVyQ2xhc3MpfX0pLHQudWkuZHJvcHBhYmxlLHQud2lkZ2V0KCJ1aS5wcm9ncmVzc2JhciIse3ZlcnNpb246IjEuMTIuMC1yYy4yIixvcHRpb25zOntjbGFzc2VzOnsidWktcHJvZ3Jlc3NiYXIiOiJ1aS1jb3JuZXItYWxsIiwidWktcHJvZ3Jlc3NiYXItdmFsdWUiOiJ1aS1jb3JuZXItbGVmdCIsInVpLXByb2dyZXNzYmFyLWNvbXBsZXRlIjoidWktY29ybmVyLXJpZ2h0In0sbWF4OjEwMCx2YWx1ZTowLGNoYW5nZTpudWxsLGNvbXBsZXRlOm51bGx9LG1pbjowLF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLm9sZFZhbHVlPXRoaXMub3B0aW9ucy52YWx1ZT10aGlzLl9jb25zdHJhaW5lZFZhbHVlKCksdGhpcy5lbGVtZW50LmF0dHIoe3JvbGU6InByb2dyZXNzYmFyIiwiYXJpYS12YWx1ZW1pbiI6dGhpcy5taW59KSx0aGlzLl9hZGRDbGFzcygidWktcHJvZ3Jlc3NiYXIiLCJ1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQiKSx0aGlzLnZhbHVlRGl2PXQoIjxkaXY+IikuYXBwZW5kVG8odGhpcy5lbGVtZW50KSx0aGlzLl9hZGRDbGFzcyh0aGlzLnZhbHVlRGl2LCJ1aS1wcm9ncmVzc2Jhci12YWx1ZSIsInVpLXdpZGdldC1oZWFkZXIiKSx0aGlzLl9yZWZyZXNoVmFsdWUoKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cigicm9sZSBhcmlhLXZhbHVlbWluIGFyaWEtdmFsdWVtYXggYXJpYS12YWx1ZW5vdyIpLHRoaXMudmFsdWVEaXYucmVtb3ZlKCl9LHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10P3RoaXMub3B0aW9ucy52YWx1ZToodGhpcy5vcHRpb25zLnZhbHVlPXRoaXMuX2NvbnN0cmFpbmVkVmFsdWUodCksdGhpcy5fcmVmcmVzaFZhbHVlKCksdm9pZCAwKX0sX2NvbnN0cmFpbmVkVmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PXRoaXMub3B0aW9ucy52YWx1ZSksdGhpcy5pbmRldGVybWluYXRlPXQ9PT0hMSwibnVtYmVyIiE9dHlwZW9mIHQmJih0PTApLHRoaXMuaW5kZXRlcm1pbmF0ZT8hMTpNYXRoLm1pbih0aGlzLm9wdGlvbnMubWF4LE1hdGgubWF4KHRoaXMubWluLHQpKX0sX3NldE9wdGlvbnM6ZnVuY3Rpb24odCl7dmFyIGU9dC52YWx1ZTtkZWxldGUgdC52YWx1ZSx0aGlzLl9zdXBlcih0KSx0aGlzLm9wdGlvbnMudmFsdWU9dGhpcy5fY29uc3RyYWluZWRWYWx1ZShlKSx0aGlzLl9yZWZyZXNoVmFsdWUoKX0sX3NldE9wdGlvbjpmdW5jdGlvbih0LGUpeyJtYXgiPT09dCYmKGU9TWF0aC5tYXgodGhpcy5taW4sZSkpLHRoaXMuX3N1cGVyKHQsZSl9LF9zZXRPcHRpb25EaXNhYmxlZDpmdW5jdGlvbih0KXt0aGlzLl9zdXBlcih0KSx0aGlzLmVsZW1lbnQuYXR0cigiYXJpYS1kaXNhYmxlZCIsdCksdGhpcy5fdG9nZ2xlQ2xhc3MobnVsbCwidWktc3RhdGUtZGlzYWJsZWQiLCEhdCl9LF9wZXJjZW50YWdlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5kZXRlcm1pbmF0ZT8xMDA6MTAwKih0aGlzLm9wdGlvbnMudmFsdWUtdGhpcy5taW4pLyh0aGlzLm9wdGlvbnMubWF4LXRoaXMubWluKX0sX3JlZnJlc2hWYWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucy52YWx1ZSxpPXRoaXMuX3BlcmNlbnRhZ2UoKTt0aGlzLnZhbHVlRGl2LnRvZ2dsZSh0aGlzLmluZGV0ZXJtaW5hdGV8fGU+dGhpcy5taW4pLndpZHRoKGkudG9GaXhlZCgwKSsiJSIpLHRoaXMuX3RvZ2dsZUNsYXNzKHRoaXMudmFsdWVEaXYsInVpLXByb2dyZXNzYmFyLWNvbXBsZXRlIixudWxsLGU9PT10aGlzLm9wdGlvbnMubWF4KS5fdG9nZ2xlQ2xhc3MoInVpLXByb2dyZXNzYmFyLWluZGV0ZXJtaW5hdGUiLG51bGwsdGhpcy5pbmRldGVybWluYXRlKSx0aGlzLmluZGV0ZXJtaW5hdGU/KHRoaXMuZWxlbWVudC5yZW1vdmVBdHRyKCJhcmlhLXZhbHVlbm93IiksdGhpcy5vdmVybGF5RGl2fHwodGhpcy5vdmVybGF5RGl2PXQoIjxkaXY+IikuYXBwZW5kVG8odGhpcy52YWx1ZURpdiksdGhpcy5fYWRkQ2xhc3ModGhpcy5vdmVybGF5RGl2LCJ1aS1wcm9ncmVzc2Jhci1vdmVybGF5IikpKToodGhpcy5lbGVtZW50LmF0dHIoeyJhcmlhLXZhbHVlbWF4Ijp0aGlzLm9wdGlvbnMubWF4LCJhcmlhLXZhbHVlbm93IjplfSksdGhpcy5vdmVybGF5RGl2JiYodGhpcy5vdmVybGF5RGl2LnJlbW92ZSgpLHRoaXMub3ZlcmxheURpdj1udWxsKSksdGhpcy5vbGRWYWx1ZSE9PWUmJih0aGlzLm9sZFZhbHVlPWUsdGhpcy5fdHJpZ2dlcigiY2hhbmdlIikpLGU9PT10aGlzLm9wdGlvbnMubWF4JiZ0aGlzLl90cmlnZ2VyKCJjb21wbGV0ZSIpfX0pLHQud2lkZ2V0KCJ1aS5zZWxlY3RhYmxlIix0LnVpLm1vdXNlLHt2ZXJzaW9uOiIxLjEyLjAtcmMuMiIsb3B0aW9uczp7YXBwZW5kVG86ImJvZHkiLGF1dG9SZWZyZXNoOiEwLGRpc3RhbmNlOjAsZmlsdGVyOiIqIix0b2xlcmFuY2U6InRvdWNoIixzZWxlY3RlZDpudWxsLHNlbGVjdGluZzpudWxsLHN0YXJ0Om51bGwsc3RvcDpudWxsLHVuc2VsZWN0ZWQ6bnVsbCx1bnNlbGVjdGluZzpudWxsfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLl9hZGRDbGFzcygidWktc2VsZWN0YWJsZSIpLHRoaXMuZHJhZ2dlZD0hMSx0aGlzLnJlZnJlc2g9ZnVuY3Rpb24oKXtlLmVsZW1lbnRQb3M9dChlLmVsZW1lbnRbMF0pLm9mZnNldCgpLGUuc2VsZWN0ZWVzPXQoZS5vcHRpb25zLmZpbHRlcixlLmVsZW1lbnRbMF0pLGUuX2FkZENsYXNzKGUuc2VsZWN0ZWVzLCJ1aS1zZWxlY3RlZSIpLGUuc2VsZWN0ZWVzLmVhY2goZnVuY3Rpb24oKXt2YXIgaT10KHRoaXMpLHM9aS5vZmZzZXQoKSxuPXtsZWZ0OnMubGVmdC1lLmVsZW1lbnRQb3MubGVmdCx0b3A6cy50b3AtZS5lbGVtZW50UG9zLnRvcH07dC5kYXRhKHRoaXMsInNlbGVjdGFibGUtaXRlbSIse2VsZW1lbnQ6dGhpcywkZWxlbWVudDppLGxlZnQ6bi5sZWZ0LHRvcDpuLnRvcCxyaWdodDpuLmxlZnQraS5vdXRlcldpZHRoKCksYm90dG9tOm4udG9wK2kub3V0ZXJIZWlnaHQoKSxzdGFydHNlbGVjdGVkOiExLHNlbGVjdGVkOmkuaGFzQ2xhc3MoInVpLXNlbGVjdGVkIiksc2VsZWN0aW5nOmkuaGFzQ2xhc3MoInVpLXNlbGVjdGluZyIpLHVuc2VsZWN0aW5nOmkuaGFzQ2xhc3MoInVpLXVuc2VsZWN0aW5nIil9KX0pfSx0aGlzLnJlZnJlc2goKSx0aGlzLl9tb3VzZUluaXQoKSx0aGlzLmhlbHBlcj10KCI8ZGl2PiIpLHRoaXMuX2FkZENsYXNzKHRoaXMuaGVscGVyLCJ1aS1zZWxlY3RhYmxlLWhlbHBlciIpfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWVzLnJlbW92ZURhdGEoInNlbGVjdGFibGUtaXRlbSIpLHRoaXMuX21vdXNlRGVzdHJveSgpfSxfbW91c2VTdGFydDpmdW5jdGlvbihlKXt2YXIgaT10aGlzLHM9dGhpcy5vcHRpb25zO3RoaXMub3Bvcz1bZS5wYWdlWCxlLnBhZ2VZXSx0aGlzLmVsZW1lbnRQb3M9dCh0aGlzLmVsZW1lbnRbMF0pLm9mZnNldCgpLHRoaXMub3B0aW9ucy5kaXNhYmxlZHx8KHRoaXMuc2VsZWN0ZWVzPXQocy5maWx0ZXIsdGhpcy5lbGVtZW50WzBdKSx0aGlzLl90cmlnZ2VyKCJzdGFydCIsZSksdChzLmFwcGVuZFRvKS5hcHBlbmQodGhpcy5oZWxwZXIpLHRoaXMuaGVscGVyLmNzcyh7bGVmdDplLnBhZ2VYLHRvcDplLnBhZ2VZLHdpZHRoOjAsaGVpZ2h0OjB9KSxzLmF1dG9SZWZyZXNoJiZ0aGlzLnJlZnJlc2goKSx0aGlzLnNlbGVjdGVlcy5maWx0ZXIoIi51aS1zZWxlY3RlZCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgcz10LmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7cy5zdGFydHNlbGVjdGVkPSEwLGUubWV0YUtleXx8ZS5jdHJsS2V5fHwoaS5fcmVtb3ZlQ2xhc3Mocy4kZWxlbWVudCwidWktc2VsZWN0ZWQiKSxzLnNlbGVjdGVkPSExLGkuX2FkZENsYXNzKHMuJGVsZW1lbnQsInVpLXVuc2VsZWN0aW5nIikscy51bnNlbGVjdGluZz0hMCxpLl90cmlnZ2VyKCJ1bnNlbGVjdGluZyIsZSx7dW5zZWxlY3Rpbmc6cy5lbGVtZW50fSkpfSksdChlLnRhcmdldCkucGFyZW50cygpLmFkZEJhY2soKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHMsbj10LmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7cmV0dXJuIG4/KHM9IWUubWV0YUtleSYmIWUuY3RybEtleXx8IW4uJGVsZW1lbnQuaGFzQ2xhc3MoInVpLXNlbGVjdGVkIiksaS5fcmVtb3ZlQ2xhc3Mobi4kZWxlbWVudCxzPyJ1aS11bnNlbGVjdGluZyI6InVpLXNlbGVjdGVkIikuX2FkZENsYXNzKG4uJGVsZW1lbnQscz8idWktc2VsZWN0aW5nIjoidWktdW5zZWxlY3RpbmciKSxuLnVuc2VsZWN0aW5nPSFzLG4uc2VsZWN0aW5nPXMsbi5zZWxlY3RlZD1zLHM/aS5fdHJpZ2dlcigic2VsZWN0aW5nIixlLHtzZWxlY3Rpbmc6bi5lbGVtZW50fSk6aS5fdHJpZ2dlcigidW5zZWxlY3RpbmciLGUse3Vuc2VsZWN0aW5nOm4uZWxlbWVudH0pLCExKTp2b2lkIDB9KSl9LF9tb3VzZURyYWc6ZnVuY3Rpb24oZSl7aWYodGhpcy5kcmFnZ2VkPSEwLCF0aGlzLm9wdGlvbnMuZGlzYWJsZWQpe3ZhciBpLHM9dGhpcyxuPXRoaXMub3B0aW9ucyxvPXRoaXMub3Bvc1swXSxhPXRoaXMub3Bvc1sxXSxyPWUucGFnZVgsaD1lLnBhZ2VZO3JldHVybiBvPnImJihpPXIscj1vLG89aSksYT5oJiYoaT1oLGg9YSxhPWkpLHRoaXMuaGVscGVyLmNzcyh7bGVmdDpvLHRvcDphLHdpZHRoOnItbyxoZWlnaHQ6aC1hfSksdGhpcy5zZWxlY3RlZXMuZWFjaChmdW5jdGlvbigpe3ZhciBpPXQuZGF0YSh0aGlzLCJzZWxlY3RhYmxlLWl0ZW0iKSxsPSExLGM9e307aSYmaS5lbGVtZW50IT09cy5lbGVtZW50WzBdJiYoYy5sZWZ0PWkubGVmdCtzLmVsZW1lbnRQb3MubGVmdCxjLnJpZ2h0PWkucmlnaHQrcy5lbGVtZW50UG9zLmxlZnQsYy50b3A9aS50b3Arcy5lbGVtZW50UG9zLnRvcCxjLmJvdHRvbT1pLmJvdHRvbStzLmVsZW1lbnRQb3MudG9wLCJ0b3VjaCI9PT1uLnRvbGVyYW5jZT9sPSEoYy5sZWZ0PnJ8fG8+Yy5yaWdodHx8Yy50b3A+aHx8YT5jLmJvdHRvbSk6ImZpdCI9PT1uLnRvbGVyYW5jZSYmKGw9Yy5sZWZ0Pm8mJnI+Yy5yaWdodCYmYy50b3A+YSYmaD5jLmJvdHRvbSksbD8oaS5zZWxlY3RlZCYmKHMuX3JlbW92ZUNsYXNzKGkuJGVsZW1lbnQsInVpLXNlbGVjdGVkIiksaS5zZWxlY3RlZD0hMSksaS51bnNlbGVjdGluZyYmKHMuX3JlbW92ZUNsYXNzKGkuJGVsZW1lbnQsInVpLXVuc2VsZWN0aW5nIiksaS51bnNlbGVjdGluZz0hMSksaS5zZWxlY3Rpbmd8fChzLl9hZGRDbGFzcyhpLiRlbGVtZW50LCJ1aS1zZWxlY3RpbmciKSxpLnNlbGVjdGluZz0hMCxzLl90cmlnZ2VyKCJzZWxlY3RpbmciLGUse3NlbGVjdGluZzppLmVsZW1lbnR9KSkpOihpLnNlbGVjdGluZyYmKChlLm1ldGFLZXl8fGUuY3RybEtleSkmJmkuc3RhcnRzZWxlY3RlZD8ocy5fcmVtb3ZlQ2xhc3MoaS4kZWxlbWVudCwidWktc2VsZWN0aW5nIiksaS5zZWxlY3Rpbmc9ITEscy5fYWRkQ2xhc3MoaS4kZWxlbWVudCwidWktc2VsZWN0ZWQiKSxpLnNlbGVjdGVkPSEwKToocy5fcmVtb3ZlQ2xhc3MoaS4kZWxlbWVudCwidWktc2VsZWN0aW5nIiksaS5zZWxlY3Rpbmc9ITEsaS5zdGFydHNlbGVjdGVkJiYocy5fYWRkQ2xhc3MoaS4kZWxlbWVudCwidWktdW5zZWxlY3RpbmciKSxpLnVuc2VsZWN0aW5nPSEwKSxzLl90cmlnZ2VyKCJ1bnNlbGVjdGluZyIsZSx7dW5zZWxlY3Rpbmc6aS5lbGVtZW50fSkpKSxpLnNlbGVjdGVkJiYoZS5tZXRhS2V5fHxlLmN0cmxLZXl8fGkuc3RhcnRzZWxlY3RlZHx8KHMuX3JlbW92ZUNsYXNzKGkuJGVsZW1lbnQsInVpLXNlbGVjdGVkIiksaS5zZWxlY3RlZD0hMSxzLl9hZGRDbGFzcyhpLiRlbGVtZW50LCJ1aS11bnNlbGVjdGluZyIpLGkudW5zZWxlY3Rpbmc9ITAscy5fdHJpZ2dlcigidW5zZWxlY3RpbmciLGUse3Vuc2VsZWN0aW5nOmkuZWxlbWVudH0pKSkpKX0pLCExfX0sX21vdXNlU3RvcDpmdW5jdGlvbihlKXt2YXIgaT10aGlzO3JldHVybiB0aGlzLmRyYWdnZWQ9ITEsdCgiLnVpLXVuc2VsZWN0aW5nIix0aGlzLmVsZW1lbnRbMF0pLmVhY2goZnVuY3Rpb24oKXt2YXIgcz10LmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7aS5fcmVtb3ZlQ2xhc3Mocy4kZWxlbWVudCwidWktdW5zZWxlY3RpbmciKSxzLnVuc2VsZWN0aW5nPSExLHMuc3RhcnRzZWxlY3RlZD0hMSxpLl90cmlnZ2VyKCJ1bnNlbGVjdGVkIixlLHt1bnNlbGVjdGVkOnMuZWxlbWVudH0pfSksdCgiLnVpLXNlbGVjdGluZyIsdGhpcy5lbGVtZW50WzBdKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHM9dC5kYXRhKHRoaXMsInNlbGVjdGFibGUtaXRlbSIpO2kuX3JlbW92ZUNsYXNzKHMuJGVsZW1lbnQsInVpLXNlbGVjdGluZyIpLl9hZGRDbGFzcyhzLiRlbGVtZW50LCJ1aS1zZWxlY3RlZCIpLHMuc2VsZWN0aW5nPSExLHMuc2VsZWN0ZWQ9ITAscy5zdGFydHNlbGVjdGVkPSEwLGkuX3RyaWdnZXIoInNlbGVjdGVkIixlLHtzZWxlY3RlZDpzLmVsZW1lbnR9KX0pLHRoaXMuX3RyaWdnZXIoInN0b3AiLGUpLHRoaXMuaGVscGVyLnJlbW92ZSgpLCExfX0pLHQud2lkZ2V0KCJ1aS5zZWxlY3RtZW51IixbdC51aS5mb3JtUmVzZXRNaXhpbix7dmVyc2lvbjoiMS4xMi4wLXJjLjIiLGRlZmF1bHRFbGVtZW50OiI8c2VsZWN0PiIsb3B0aW9uczp7YXBwZW5kVG86bnVsbCxjbGFzc2VzOnsidWktc2VsZWN0bWVudS1idXR0b24tb3BlbiI6InVpLWNvcm5lci10b3AiLCJ1aS1zZWxlY3RtZW51LWJ1dHRvbi1jbG9zZWQiOiJ1aS1jb3JuZXItYWxsIn0sZGlzYWJsZWQ6bnVsbCxpY29uczp7YnV0dG9uOiJ1aS1pY29uLXRyaWFuZ2xlLTEtcyJ9LHBvc2l0aW9uOntteToibGVmdCB0b3AiLGF0OiJsZWZ0IGJvdHRvbSIsY29sbGlzaW9uOiJub25lIn0sd2lkdGg6ITEsY2hhbmdlOm51bGwsY2xvc2U6bnVsbCxmb2N1czpudWxsLG9wZW46bnVsbCxzZWxlY3Q6bnVsbH0sX2NyZWF0ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZWxlbWVudC51bmlxdWVJZCgpLmF0dHIoImlkIik7dGhpcy5pZHM9e2VsZW1lbnQ6ZSxidXR0b246ZSsiLWJ1dHRvbiIsbWVudTplKyItbWVudSJ9LHRoaXMuX2RyYXdCdXR0b24oKSx0aGlzLl9kcmF3TWVudSgpLHRoaXMuX2JpbmRGb3JtUmVzZXRIYW5kbGVyKCksdGhpcy5fcmVuZGVyZWQ9ITEsdGhpcy5tZW51SXRlbXM9dCgpfSxfZHJhd0J1dHRvbjpmdW5jdGlvbigpe3ZhciBlLGk9dGhpcyxzPXRoaXMuX3BhcnNlT3B0aW9uKHRoaXMuZWxlbWVudC5maW5kKCJvcHRpb246c2VsZWN0ZWQiKSx0aGlzLmVsZW1lbnRbMF0uc2VsZWN0ZWRJbmRleCk7dGhpcy5sYWJlbHM9dGhpcy5lbGVtZW50LmxhYmVscygpLmF0dHIoImZvciIsdGhpcy5pZHMuYnV0dG9uKSx0aGlzLl9vbih0aGlzLmxhYmVscyx7Y2xpY2s6ZnVuY3Rpb24odCl7dGhpcy5idXR0b24uZm9jdXMoKSx0LnByZXZlbnREZWZhdWx0KCl9fSksdGhpcy5lbGVtZW50LmhpZGUoKSx0aGlzLmJ1dHRvbj10KCI8c3Bhbj4iLHt0YWJpbmRleDp0aGlzLm9wdGlvbnMuZGlzYWJsZWQ/LTE6MCxpZDp0aGlzLmlkcy5idXR0b24scm9sZToiY29tYm9ib3giLCJhcmlhLWV4cGFuZGVkIjoiZmFsc2UiLCJhcmlhLWF1dG9jb21wbGV0ZSI6Imxpc3QiLCJhcmlhLW93bnMiOnRoaXMuaWRzLm1lbnUsImFyaWEtaGFzcG9wdXAiOiJ0cnVlIix0aXRsZTp0aGlzLmVsZW1lbnQuYXR0cigidGl0bGUiKX0pLmluc2VydEFmdGVyKHRoaXMuZWxlbWVudCksdGhpcy5fYWRkQ2xhc3ModGhpcy5idXR0b24sInVpLXNlbGVjdG1lbnUtYnV0dG9uIHVpLXNlbGVjdG1lbnUtYnV0dG9uLWNsb3NlZCIsInVpLWJ1dHRvbiB1aS13aWRnZXQiKSxlPXQoIjxzcGFuPiIpLmFwcGVuZFRvKHRoaXMuYnV0dG9uKSx0aGlzLl9hZGRDbGFzcyhlLCJ1aS1zZWxlY3RtZW51LWljb24iLCJ1aS1pY29uICIrdGhpcy5vcHRpb25zLmljb25zLmJ1dHRvbiksdGhpcy5idXR0b25JdGVtPXRoaXMuX3JlbmRlckJ1dHRvbkl0ZW0ocykuYXBwZW5kVG8odGhpcy5idXR0b24pLHRoaXMub3B0aW9ucy53aWR0aCE9PSExJiZ0aGlzLl9yZXNpemVCdXR0b24oKSx0aGlzLl9vbih0aGlzLmJ1dHRvbix0aGlzLl9idXR0b25FdmVudHMpLHRoaXMuYnV0dG9uLm9uZSgiZm9jdXNpbiIsZnVuY3Rpb24oKXtpLl9yZW5kZXJlZHx8aS5fcmVmcmVzaE1lbnUoKX0pfSxfZHJhd01lbnU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMubWVudT10KCI8dWw+Iix7ImFyaWEtaGlkZGVuIjoidHJ1ZSIsImFyaWEtbGFiZWxsZWRieSI6dGhpcy5pZHMuYnV0dG9uLGlkOnRoaXMuaWRzLm1lbnV9KSx0aGlzLm1lbnVXcmFwPXQoIjxkaXY+IikuYXBwZW5kKHRoaXMubWVudSksdGhpcy5fYWRkQ2xhc3ModGhpcy5tZW51V3JhcCwidWktc2VsZWN0bWVudS1tZW51IiwidWktZnJvbnQiKSx0aGlzLm1lbnVXcmFwLmFwcGVuZFRvKHRoaXMuX2FwcGVuZFRvKCkpLHRoaXMubWVudUluc3RhbmNlPXRoaXMubWVudS5tZW51KHtjbGFzc2VzOnsidWktbWVudSI6InVpLWNvcm5lci1ib3R0b20ifSxyb2xlOiJsaXN0Ym94IixzZWxlY3Q6ZnVuY3Rpb24odCxpKXt0LnByZXZlbnREZWZhdWx0KCksZS5fc2V0U2VsZWN0aW9uKCksZS5fc2VsZWN0KGkuaXRlbS5kYXRhKCJ1aS1zZWxlY3RtZW51LWl0ZW0iKSx0KX0sZm9jdXM6ZnVuY3Rpb24odCxpKXt2YXIgcz1pLml0ZW0uZGF0YSgidWktc2VsZWN0bWVudS1pdGVtIik7bnVsbCE9ZS5mb2N1c0luZGV4JiZzLmluZGV4IT09ZS5mb2N1c0luZGV4JiYoZS5fdHJpZ2dlcigiZm9jdXMiLHQse2l0ZW06c30pLGUuaXNPcGVufHxlLl9zZWxlY3Qocyx0KSksZS5mb2N1c0luZGV4PXMuaW5kZXgsZS5idXR0b24uYXR0cigiYXJpYS1hY3RpdmVkZXNjZW5kYW50IixlLm1lbnVJdGVtcy5lcShzLmluZGV4KS5hdHRyKCJpZCIpKX19KS5tZW51KCJpbnN0YW5jZSIpLHRoaXMubWVudUluc3RhbmNlLl9vZmYodGhpcy5tZW51LCJtb3VzZWxlYXZlIiksdGhpcy5tZW51SW5zdGFuY2UuX2Nsb3NlT25Eb2N1bWVudENsaWNrPWZ1bmN0aW9uKCl7cmV0dXJuITF9LHRoaXMubWVudUluc3RhbmNlLl9pc0RpdmlkZXI9ZnVuY3Rpb24oKXtyZXR1cm4hMX19LHJlZnJlc2g6ZnVuY3Rpb24oKXt0aGlzLl9yZWZyZXNoTWVudSgpLHRoaXMuYnV0dG9uSXRlbS5yZXBsYWNlV2l0aCh0aGlzLmJ1dHRvbkl0ZW09dGhpcy5fcmVuZGVyQnV0dG9uSXRlbSh0aGlzLl9nZXRTZWxlY3RlZEl0ZW0oKS5kYXRhKCJ1aS1zZWxlY3RtZW51LWl0ZW0iKXx8e30pKSxudWxsPT09dGhpcy5vcHRpb25zLndpZHRoJiZ0aGlzLl9yZXNpemVCdXR0b24oKX0sX3JlZnJlc2hNZW51OmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLmVsZW1lbnQuZmluZCgib3B0aW9uIik7dGhpcy5tZW51LmVtcHR5KCksdGhpcy5fcGFyc2VPcHRpb25zKGUpLHRoaXMuX3JlbmRlck1lbnUodGhpcy5tZW51LHRoaXMuaXRlbXMpLHRoaXMubWVudUluc3RhbmNlLnJlZnJlc2goKSx0aGlzLm1lbnVJdGVtcz10aGlzLm1lbnUuZmluZCgibGkiKS5ub3QoIi51aS1zZWxlY3RtZW51LW9wdGdyb3VwIikuZmluZCgiLnVpLW1lbnUtaXRlbS13cmFwcGVyIiksdGhpcy5fcmVuZGVyZWQ9ITAsZS5sZW5ndGgmJih0PXRoaXMuX2dldFNlbGVjdGVkSXRlbSgpLHRoaXMubWVudUluc3RhbmNlLmZvY3VzKG51bGwsdCksdGhpcy5fc2V0QXJpYSh0LmRhdGEoInVpLXNlbGVjdG1lbnUtaXRlbSIpKSx0aGlzLl9zZXRPcHRpb24oImRpc2FibGVkIix0aGlzLmVsZW1lbnQucHJvcCgiZGlzYWJsZWQiKSkpfSxvcGVuOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucy5kaXNhYmxlZHx8KHRoaXMuX3JlbmRlcmVkPyh0aGlzLl9yZW1vdmVDbGFzcyh0aGlzLm1lbnUuZmluZCgiLnVpLXN0YXRlLWFjdGl2ZSIpLG51bGwsInVpLXN0YXRlLWFjdGl2ZSIpLHRoaXMubWVudUluc3RhbmNlLmZvY3VzKG51bGwsdGhpcy5fZ2V0U2VsZWN0ZWRJdGVtKCkpKTp0aGlzLl9yZWZyZXNoTWVudSgpLHRoaXMubWVudUl0ZW1zLmxlbmd0aCYmKHRoaXMuaXNPcGVuPSEwLHRoaXMuX3RvZ2dsZUF0dHIoKSx0aGlzLl9yZXNpemVNZW51KCksdGhpcy5fcG9zaXRpb24oKSx0aGlzLl9vbih0aGlzLmRvY3VtZW50LHRoaXMuX2RvY3VtZW50Q2xpY2spLHRoaXMuX3RyaWdnZXIoIm9wZW4iLHQpKSl9LF9wb3NpdGlvbjpmdW5jdGlvbigpe3RoaXMubWVudVdyYXAucG9zaXRpb24odC5leHRlbmQoe29mOnRoaXMuYnV0dG9ufSx0aGlzLm9wdGlvbnMucG9zaXRpb24pKX0sY2xvc2U6ZnVuY3Rpb24odCl7dGhpcy5pc09wZW4mJih0aGlzLmlzT3Blbj0hMSx0aGlzLl90b2dnbGVBdHRyKCksdGhpcy5yYW5nZT1udWxsLHRoaXMuX29mZih0aGlzLmRvY3VtZW50KSx0aGlzLl90cmlnZ2VyKCJjbG9zZSIsdCkpfSx3aWRnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5idXR0b259LG1lbnVXaWRnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZW51fSxfcmVuZGVyQnV0dG9uSXRlbTpmdW5jdGlvbihlKXt2YXIgaT10KCI8c3Bhbj4iKTtyZXR1cm4gdGhpcy5fc2V0VGV4dChpLGUubGFiZWwpLHRoaXMuX2FkZENsYXNzKGksInVpLXNlbGVjdG1lbnUtdGV4dCIpLGl9LF9yZW5kZXJNZW51OmZ1bmN0aW9uKGUsaSl7dmFyIHM9dGhpcyxuPSIiO3QuZWFjaChpLGZ1bmN0aW9uKGksbyl7dmFyIGE7by5vcHRncm91cCE9PW4mJihhPXQoIjxsaT4iLHt0ZXh0Om8ub3B0Z3JvdXB9KSxzLl9hZGRDbGFzcyhhLCJ1aS1zZWxlY3RtZW51LW9wdGdyb3VwIiwidWktbWVudS1kaXZpZGVyIisoby5lbGVtZW50LnBhcmVudCgib3B0Z3JvdXAiKS5wcm9wKCJkaXNhYmxlZCIpPyIgdWktc3RhdGUtZGlzYWJsZWQiOiIiKSksYS5hcHBlbmRUbyhlKSxuPW8ub3B0Z3JvdXApLHMuX3JlbmRlckl0ZW1EYXRhKGUsbyl9KX0sX3JlbmRlckl0ZW1EYXRhOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3JlbmRlckl0ZW0odCxlKS5kYXRhKCJ1aS1zZWxlY3RtZW51LWl0ZW0iLGUpfSxfcmVuZGVySXRlbTpmdW5jdGlvbihlLGkpe3ZhciBzPXQoIjxsaT4iKSxuPXQoIjxkaXY+Iix7dGl0bGU6aS5lbGVtZW50LmF0dHIoInRpdGxlIil9KTtyZXR1cm4gaS5kaXNhYmxlZCYmdGhpcy5fYWRkQ2xhc3MocyxudWxsLCJ1aS1zdGF0ZS1kaXNhYmxlZCIpLHRoaXMuX3NldFRleHQobixpLmxhYmVsKSxzLmFwcGVuZChuKS5hcHBlbmRUbyhlKX0sX3NldFRleHQ6ZnVuY3Rpb24odCxlKXtlP3QudGV4dChlKTp0Lmh0bWwoIiYjMTYwOyIpfSxfbW92ZTpmdW5jdGlvbih0LGUpe3ZhciBpLHMsbj0iLnVpLW1lbnUtaXRlbSI7dGhpcy5pc09wZW4/aT10aGlzLm1lbnVJdGVtcy5lcSh0aGlzLmZvY3VzSW5kZXgpLnBhcmVudCgibGkiKTooaT10aGlzLm1lbnVJdGVtcy5lcSh0aGlzLmVsZW1lbnRbMF0uc2VsZWN0ZWRJbmRleCkucGFyZW50KCJsaSIpLG4rPSI6bm90KC51aS1zdGF0ZS1kaXNhYmxlZCkiKSxzPSJmaXJzdCI9PT10fHwibGFzdCI9PT10P2lbImZpcnN0Ij09PXQ/InByZXZBbGwiOiJuZXh0QWxsIl0obikuZXEoLTEpOmlbdCsiQWxsIl0obikuZXEoMCkscy5sZW5ndGgmJnRoaXMubWVudUluc3RhbmNlLmZvY3VzKGUscyl9LF9nZXRTZWxlY3RlZEl0ZW06ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZW51SXRlbXMuZXEodGhpcy5lbGVtZW50WzBdLnNlbGVjdGVkSW5kZXgpLnBhcmVudCgibGkiKX0sX3RvZ2dsZTpmdW5jdGlvbih0KXt0aGlzW3RoaXMuaXNPcGVuPyJjbG9zZSI6Im9wZW4iXSh0KX0sX3NldFNlbGVjdGlvbjpmdW5jdGlvbigpe3ZhciB0O3RoaXMucmFuZ2UmJih3aW5kb3cuZ2V0U2VsZWN0aW9uPyh0PXdpbmRvdy5nZXRTZWxlY3Rpb24oKSx0LnJlbW92ZUFsbFJhbmdlcygpLHQuYWRkUmFuZ2UodGhpcy5yYW5nZSkpOnRoaXMucmFuZ2Uuc2VsZWN0KCksdGhpcy5idXR0b24uZm9jdXMoKSl9LF9kb2N1bWVudENsaWNrOnttb3VzZWRvd246ZnVuY3Rpb24oZSl7dGhpcy5pc09wZW4mJih0KGUudGFyZ2V0KS5jbG9zZXN0KCIudWktc2VsZWN0bWVudS1tZW51LCAjIit0LnVpLmVzY2FwZVNlbGVjdG9yKHRoaXMuaWRzLmJ1dHRvbikpLmxlbmd0aHx8dGhpcy5jbG9zZShlKSl9fSxfYnV0dG9uRXZlbnRzOnttb3VzZWRvd246ZnVuY3Rpb24oKXt2YXIgdDt3aW5kb3cuZ2V0U2VsZWN0aW9uPyh0PXdpbmRvdy5nZXRTZWxlY3Rpb24oKSx0LnJhbmdlQ291bnQmJih0aGlzLnJhbmdlPXQuZ2V0UmFuZ2VBdCgwKSkpOnRoaXMucmFuZ2U9ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCl9LGNsaWNrOmZ1bmN0aW9uKHQpe3RoaXMuX3NldFNlbGVjdGlvbigpLHRoaXMuX3RvZ2dsZSh0KX0sa2V5ZG93bjpmdW5jdGlvbihlKXt2YXIgaT0hMDtzd2l0Y2goZS5rZXlDb2RlKXtjYXNlIHQudWkua2V5Q29kZS5UQUI6Y2FzZSB0LnVpLmtleUNvZGUuRVNDQVBFOnRoaXMuY2xvc2UoZSksaT0hMTticmVhaztjYXNlIHQudWkua2V5Q29kZS5FTlRFUjp0aGlzLmlzT3BlbiYmdGhpcy5fc2VsZWN0Rm9jdXNlZEl0ZW0oZSk7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuVVA6ZS5hbHRLZXk/dGhpcy5fdG9nZ2xlKGUpOnRoaXMuX21vdmUoInByZXYiLGUpO2JyZWFrO2Nhc2UgdC51aS5rZXlDb2RlLkRPV046ZS5hbHRLZXk/dGhpcy5fdG9nZ2xlKGUpOnRoaXMuX21vdmUoIm5leHQiLGUpO2JyZWFrO2Nhc2UgdC51aS5rZXlDb2RlLlNQQUNFOnRoaXMuaXNPcGVuP3RoaXMuX3NlbGVjdEZvY3VzZWRJdGVtKGUpOnRoaXMuX3RvZ2dsZShlKTticmVhaztjYXNlIHQudWkua2V5Q29kZS5MRUZUOnRoaXMuX21vdmUoInByZXYiLGUpO2JyZWFrO2Nhc2UgdC51aS5rZXlDb2RlLlJJR0hUOnRoaXMuX21vdmUoIm5leHQiLGUpO2JyZWFrO2Nhc2UgdC51aS5rZXlDb2RlLkhPTUU6Y2FzZSB0LnVpLmtleUNvZGUuUEFHRV9VUDp0aGlzLl9tb3ZlKCJmaXJzdCIsZSk7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuRU5EOmNhc2UgdC51aS5rZXlDb2RlLlBBR0VfRE9XTjp0aGlzLl9tb3ZlKCJsYXN0IixlKTticmVhaztkZWZhdWx0OnRoaXMubWVudS50cmlnZ2VyKGUpLGk9ITF9aSYmZS5wcmV2ZW50RGVmYXVsdCgpfX0sX3NlbGVjdEZvY3VzZWRJdGVtOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubWVudUl0ZW1zLmVxKHRoaXMuZm9jdXNJbmRleCkucGFyZW50KCJsaSIpO2UuaGFzQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIil8fHRoaXMuX3NlbGVjdChlLmRhdGEoInVpLXNlbGVjdG1lbnUtaXRlbSIpLHQpfSxfc2VsZWN0OmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5lbGVtZW50WzBdLnNlbGVjdGVkSW5kZXg7dGhpcy5lbGVtZW50WzBdLnNlbGVjdGVkSW5kZXg9dC5pbmRleCx0aGlzLmJ1dHRvbkl0ZW0ucmVwbGFjZVdpdGgodGhpcy5idXR0b25JdGVtPXRoaXMuX3JlbmRlckJ1dHRvbkl0ZW0odCkpLHRoaXMuX3NldEFyaWEodCksdGhpcy5fdHJpZ2dlcigic2VsZWN0IixlLHtpdGVtOnR9KSx0LmluZGV4IT09aSYmdGhpcy5fdHJpZ2dlcigiY2hhbmdlIixlLHtpdGVtOnR9KSx0aGlzLmNsb3NlKGUpfSxfc2V0QXJpYTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLm1lbnVJdGVtcy5lcSh0LmluZGV4KS5hdHRyKCJpZCIpO3RoaXMuYnV0dG9uLmF0dHIoeyJhcmlhLWxhYmVsbGVkYnkiOmUsImFyaWEtYWN0aXZlZGVzY2VuZGFudCI6ZX0pLHRoaXMubWVudS5hdHRyKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiLGUpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKHQsZSl7aWYoImljb25zIj09PXQpe3ZhciBpPXRoaXMuYnV0dG9uLmZpbmQoInNwYW4udWktaWNvbiIpO3RoaXMuX3JlbW92ZUNsYXNzKGksbnVsbCx0aGlzLm9wdGlvbnMuaWNvbnMuYnV0dG9uKS5fYWRkQ2xhc3MoaSxudWxsLGUuYnV0dG9uKX10aGlzLl9zdXBlcih0LGUpLCJhcHBlbmRUbyI9PT10JiZ0aGlzLm1lbnVXcmFwLmFwcGVuZFRvKHRoaXMuX2FwcGVuZFRvKCkpLCJ3aWR0aCI9PT10JiZ0aGlzLl9yZXNpemVCdXR0b24oKX0sX3NldE9wdGlvbkRpc2FibGVkOmZ1bmN0aW9uKHQpe3RoaXMuX3N1cGVyKHQpLHRoaXMubWVudUluc3RhbmNlLm9wdGlvbigiZGlzYWJsZWQiLHQpLHRoaXMuYnV0dG9uLmF0dHIoImFyaWEtZGlzYWJsZWQiLHQpLHRoaXMuX3RvZ2dsZUNsYXNzKHRoaXMuYnV0dG9uLG51bGwsInVpLXN0YXRlLWRpc2FibGVkIix0KSx0aGlzLmVsZW1lbnQucHJvcCgiZGlzYWJsZWQiLHQpLHQ/KHRoaXMuYnV0dG9uLmF0dHIoInRhYmluZGV4IiwtMSksdGhpcy5jbG9zZSgpKTp0aGlzLmJ1dHRvbi5hdHRyKCJ0YWJpbmRleCIsMCl9LF9hcHBlbmRUbzpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucy5hcHBlbmRUbztyZXR1cm4gZSYmKGU9ZS5qcXVlcnl8fGUubm9kZVR5cGU/dChlKTp0aGlzLmRvY3VtZW50LmZpbmQoZSkuZXEoMCkpLGUmJmVbMF18fChlPXRoaXMuZWxlbWVudC5jbG9zZXN0KCIudWktZnJvbnQsIGRpYWxvZyIpKSxlLmxlbmd0aHx8KGU9dGhpcy5kb2N1bWVudFswXS5ib2R5KSxlfSxfdG9nZ2xlQXR0cjpmdW5jdGlvbigpe3RoaXMuYnV0dG9uLmF0dHIoImFyaWEtZXhwYW5kZWQiLHRoaXMuaXNPcGVuKSx0aGlzLl9yZW1vdmVDbGFzcyh0aGlzLmJ1dHRvbiwidWktc2VsZWN0bWVudS1idXR0b24tIisodGhpcy5pc09wZW4/ImNsb3NlZCI6Im9wZW4iKSkuX2FkZENsYXNzKHRoaXMuYnV0dG9uLCJ1aS1zZWxlY3RtZW51LWJ1dHRvbi0iKyh0aGlzLmlzT3Blbj8ib3BlbiI6ImNsb3NlZCIpKS5fdG9nZ2xlQ2xhc3ModGhpcy5tZW51V3JhcCwidWktc2VsZWN0bWVudS1vcGVuIixudWxsLHRoaXMuaXNPcGVuKSx0aGlzLm1lbnUuYXR0cigiYXJpYS1oaWRkZW4iLCF0aGlzLmlzT3Blbil9LF9yZXNpemVCdXR0b246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMud2lkdGg7cmV0dXJuIHQ9PT0hMT8odGhpcy5idXR0b24uY3NzKCJ3aWR0aCIsIiIpLHZvaWQgMCk6KG51bGw9PT10JiYodD10aGlzLmVsZW1lbnQuc2hvdygpLm91dGVyV2lkdGgoKSx0aGlzLmVsZW1lbnQuaGlkZSgpKSx0aGlzLmJ1dHRvbi5vdXRlcldpZHRoKHQpLHZvaWQgMCl9LF9yZXNpemVNZW51OmZ1bmN0aW9uKCl7dGhpcy5tZW51Lm91dGVyV2lkdGgoTWF0aC5tYXgodGhpcy5idXR0b24ub3V0ZXJXaWR0aCgpLHRoaXMubWVudS53aWR0aCgiIikub3V0ZXJXaWR0aCgpKzEpKX0sX2dldENyZWF0ZU9wdGlvbnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9zdXBlcigpO3JldHVybiB0LmRpc2FibGVkPXRoaXMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIpLHR9LF9wYXJzZU9wdGlvbnM6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcyxzPVtdO2UuZWFjaChmdW5jdGlvbihlLG4pe3MucHVzaChpLl9wYXJzZU9wdGlvbih0KG4pLGUpKX0pLHRoaXMuaXRlbXM9c30sX3BhcnNlT3B0aW9uOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dC5wYXJlbnQoIm9wdGdyb3VwIik7cmV0dXJue2VsZW1lbnQ6dCxpbmRleDplLHZhbHVlOnQudmFsKCksbGFiZWw6dC50ZXh0KCksb3B0Z3JvdXA6aS5hdHRyKCJsYWJlbCIpfHwiIixkaXNhYmxlZDppLnByb3AoImRpc2FibGVkIil8fHQucHJvcCgiZGlzYWJsZWQiKX19LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fdW5iaW5kRm9ybVJlc2V0SGFuZGxlcigpLHRoaXMubWVudVdyYXAucmVtb3ZlKCksdGhpcy5idXR0b24ucmVtb3ZlKCksdGhpcy5lbGVtZW50LnNob3coKSx0aGlzLmVsZW1lbnQucmVtb3ZlVW5pcXVlSWQoKSx0aGlzLmxhYmVscy5hdHRyKCJmb3IiLHRoaXMuaWRzLmVsZW1lbnQpfX1dKSx0LndpZGdldCgidWkuc2xpZGVyIix0LnVpLm1vdXNlLHt2ZXJzaW9uOiIxLjEyLjAtcmMuMiIsd2lkZ2V0RXZlbnRQcmVmaXg6InNsaWRlIixvcHRpb25zOnthbmltYXRlOiExLGNsYXNzZXM6eyJ1aS1zbGlkZXIiOiJ1aS1jb3JuZXItYWxsIiwidWktc2xpZGVyLWhhbmRsZSI6InVpLWNvcm5lci1hbGwiLCJ1aS1zbGlkZXItcmFuZ2UiOiJ1aS1jb3JuZXItYWxsIHVpLXdpZGdldC1oZWFkZXIifSxkaXN0YW5jZTowLG1heDoxMDAsbWluOjAsb3JpZW50YXRpb246Imhvcml6b250YWwiLHJhbmdlOiExLHN0ZXA6MSx2YWx1ZTowLHZhbHVlczpudWxsLGNoYW5nZTpudWxsLHNsaWRlOm51bGwsc3RhcnQ6bnVsbCxzdG9wOm51bGx9LG51bVBhZ2VzOjUsX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuX2tleVNsaWRpbmc9ITEsdGhpcy5fbW91c2VTbGlkaW5nPSExLHRoaXMuX2FuaW1hdGVPZmY9ITAsdGhpcy5faGFuZGxlSW5kZXg9bnVsbCx0aGlzLl9kZXRlY3RPcmllbnRhdGlvbigpLHRoaXMuX21vdXNlSW5pdCgpLHRoaXMuX2NhbGN1bGF0ZU5ld01heCgpLHRoaXMuX2FkZENsYXNzKCJ1aS1zbGlkZXIgdWktc2xpZGVyLSIrdGhpcy5vcmllbnRhdGlvbiwidWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IiksdGhpcy5fcmVmcmVzaCgpLHRoaXMuX2FuaW1hdGVPZmY9ITF9LF9yZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5fY3JlYXRlUmFuZ2UoKSx0aGlzLl9jcmVhdGVIYW5kbGVzKCksdGhpcy5fc2V0dXBFdmVudHMoKSx0aGlzLl9yZWZyZXNoVmFsdWUoKX0sX2NyZWF0ZUhhbmRsZXM6ZnVuY3Rpb24oKXt2YXIgZSxpLHM9dGhpcy5vcHRpb25zLG49dGhpcy5lbGVtZW50LmZpbmQoIi51aS1zbGlkZXItaGFuZGxlIiksbz0iPHNwYW4gdGFiaW5kZXg9JzAnPjwvc3Bhbj4iLGE9W107Zm9yKGk9cy52YWx1ZXMmJnMudmFsdWVzLmxlbmd0aHx8MSxuLmxlbmd0aD5pJiYobi5zbGljZShpKS5yZW1vdmUoKSxuPW4uc2xpY2UoMCxpKSksZT1uLmxlbmd0aDtpPmU7ZSsrKWEucHVzaChvKTt0aGlzLmhhbmRsZXM9bi5hZGQodChhLmpvaW4oIiIpKS5hcHBlbmRUbyh0aGlzLmVsZW1lbnQpKSx0aGlzLl9hZGRDbGFzcyh0aGlzLmhhbmRsZXMsInVpLXNsaWRlci1oYW5kbGUiLCJ1aS1zdGF0ZS1kZWZhdWx0IiksdGhpcy5oYW5kbGU9dGhpcy5oYW5kbGVzLmVxKDApLHRoaXMuaGFuZGxlcy5lYWNoKGZ1bmN0aW9uKGUpe3QodGhpcykuZGF0YSgidWktc2xpZGVyLWhhbmRsZS1pbmRleCIsZSl9KX0sX2NyZWF0ZVJhbmdlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zO2UucmFuZ2U/KGUucmFuZ2U9PT0hMCYmKGUudmFsdWVzP2UudmFsdWVzLmxlbmd0aCYmMiE9PWUudmFsdWVzLmxlbmd0aD9lLnZhbHVlcz1bZS52YWx1ZXNbMF0sZS52YWx1ZXNbMF1dOnQuaXNBcnJheShlLnZhbHVlcykmJihlLnZhbHVlcz1lLnZhbHVlcy5zbGljZSgwKSk6ZS52YWx1ZXM9W3RoaXMuX3ZhbHVlTWluKCksdGhpcy5fdmFsdWVNaW4oKV0pLHRoaXMucmFuZ2UmJnRoaXMucmFuZ2UubGVuZ3RoPyh0aGlzLl9yZW1vdmVDbGFzcyh0aGlzLnJhbmdlLCJ1aS1zbGlkZXItcmFuZ2UtbWluIHVpLXNsaWRlci1yYW5nZS1tYXgiKSx0aGlzLnJhbmdlLmNzcyh7bGVmdDoiIixib3R0b206IiJ9KSk6KHRoaXMucmFuZ2U9dCgiPGRpdj4iKS5hcHBlbmRUbyh0aGlzLmVsZW1lbnQpLHRoaXMuX2FkZENsYXNzKHRoaXMucmFuZ2UsInVpLXNsaWRlci1yYW5nZSIpKSwoIm1pbiI9PT1lLnJhbmdlfHwibWF4Ij09PWUucmFuZ2UpJiZ0aGlzLl9hZGRDbGFzcyh0aGlzLnJhbmdlLCJ1aS1zbGlkZXItcmFuZ2UtIitlLnJhbmdlKSk6KHRoaXMucmFuZ2UmJnRoaXMucmFuZ2UucmVtb3ZlKCksdGhpcy5yYW5nZT1udWxsKX0sX3NldHVwRXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy5fb2ZmKHRoaXMuaGFuZGxlcyksdGhpcy5fb24odGhpcy5oYW5kbGVzLHRoaXMuX2hhbmRsZUV2ZW50cyksdGhpcy5faG92ZXJhYmxlKHRoaXMuaGFuZGxlcyksdGhpcy5fZm9jdXNhYmxlKHRoaXMuaGFuZGxlcyl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5oYW5kbGVzLnJlbW92ZSgpLHRoaXMucmFuZ2UmJnRoaXMucmFuZ2UucmVtb3ZlKCksdGhpcy5fbW91c2VEZXN0cm95KCl9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24oZSl7dmFyIGkscyxuLG8sYSxyLGgsbCxjPXRoaXMsdT10aGlzLm9wdGlvbnM7cmV0dXJuIHUuZGlzYWJsZWQ/ITE6KHRoaXMuZWxlbWVudFNpemU9e3dpZHRoOnRoaXMuZWxlbWVudC5vdXRlcldpZHRoKCksaGVpZ2h0OnRoaXMuZWxlbWVudC5vdXRlckhlaWdodCgpfSx0aGlzLmVsZW1lbnRPZmZzZXQ9dGhpcy5lbGVtZW50Lm9mZnNldCgpLGk9e3g6ZS5wYWdlWCx5OmUucGFnZVl9LHM9dGhpcy5fbm9ybVZhbHVlRnJvbU1vdXNlKGkpLG49dGhpcy5fdmFsdWVNYXgoKS10aGlzLl92YWx1ZU1pbigpKzEsdGhpcy5oYW5kbGVzLmVhY2goZnVuY3Rpb24oZSl7dmFyIGk9TWF0aC5hYnMocy1jLnZhbHVlcyhlKSk7CihuPml8fG49PT1pJiYoZT09PWMuX2xhc3RDaGFuZ2VkVmFsdWV8fGMudmFsdWVzKGUpPT09dS5taW4pKSYmKG49aSxvPXQodGhpcyksYT1lKX0pLHI9dGhpcy5fc3RhcnQoZSxhKSxyPT09ITE/ITE6KHRoaXMuX21vdXNlU2xpZGluZz0hMCx0aGlzLl9oYW5kbGVJbmRleD1hLHRoaXMuX2FkZENsYXNzKG8sbnVsbCwidWktc3RhdGUtYWN0aXZlIiksby50cmlnZ2VyKCJmb2N1cyIpLGg9by5vZmZzZXQoKSxsPSF0KGUudGFyZ2V0KS5wYXJlbnRzKCkuYWRkQmFjaygpLmlzKCIudWktc2xpZGVyLWhhbmRsZSIpLHRoaXMuX2NsaWNrT2Zmc2V0PWw/e2xlZnQ6MCx0b3A6MH06e2xlZnQ6ZS5wYWdlWC1oLmxlZnQtby53aWR0aCgpLzIsdG9wOmUucGFnZVktaC50b3Atby5oZWlnaHQoKS8yLShwYXJzZUludChvLmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8fDApLShwYXJzZUludChvLmNzcygiYm9yZGVyQm90dG9tV2lkdGgiKSwxMCl8fDApKyhwYXJzZUludChvLmNzcygibWFyZ2luVG9wIiksMTApfHwwKX0sdGhpcy5oYW5kbGVzLmhhc0NsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpfHx0aGlzLl9zbGlkZShlLGEscyksdGhpcy5fYW5pbWF0ZU9mZj0hMCwhMCkpfSxfbW91c2VTdGFydDpmdW5jdGlvbigpe3JldHVybiEwfSxfbW91c2VEcmFnOmZ1bmN0aW9uKHQpe3ZhciBlPXt4OnQucGFnZVgseTp0LnBhZ2VZfSxpPXRoaXMuX25vcm1WYWx1ZUZyb21Nb3VzZShlKTtyZXR1cm4gdGhpcy5fc2xpZGUodCx0aGlzLl9oYW5kbGVJbmRleCxpKSwhMX0sX21vdXNlU3RvcDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5oYW5kbGVzLG51bGwsInVpLXN0YXRlLWFjdGl2ZSIpLHRoaXMuX21vdXNlU2xpZGluZz0hMSx0aGlzLl9zdG9wKHQsdGhpcy5faGFuZGxlSW5kZXgpLHRoaXMuX2NoYW5nZSh0LHRoaXMuX2hhbmRsZUluZGV4KSx0aGlzLl9oYW5kbGVJbmRleD1udWxsLHRoaXMuX2NsaWNrT2Zmc2V0PW51bGwsdGhpcy5fYW5pbWF0ZU9mZj0hMSwhMX0sX2RldGVjdE9yaWVudGF0aW9uOmZ1bmN0aW9uKCl7dGhpcy5vcmllbnRhdGlvbj0idmVydGljYWwiPT09dGhpcy5vcHRpb25zLm9yaWVudGF0aW9uPyJ2ZXJ0aWNhbCI6Imhvcml6b250YWwifSxfbm9ybVZhbHVlRnJvbU1vdXNlOmZ1bmN0aW9uKHQpe3ZhciBlLGkscyxuLG87cmV0dXJuImhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbj8oZT10aGlzLmVsZW1lbnRTaXplLndpZHRoLGk9dC54LXRoaXMuZWxlbWVudE9mZnNldC5sZWZ0LSh0aGlzLl9jbGlja09mZnNldD90aGlzLl9jbGlja09mZnNldC5sZWZ0OjApKTooZT10aGlzLmVsZW1lbnRTaXplLmhlaWdodCxpPXQueS10aGlzLmVsZW1lbnRPZmZzZXQudG9wLSh0aGlzLl9jbGlja09mZnNldD90aGlzLl9jbGlja09mZnNldC50b3A6MCkpLHM9aS9lLHM+MSYmKHM9MSksMD5zJiYocz0wKSwidmVydGljYWwiPT09dGhpcy5vcmllbnRhdGlvbiYmKHM9MS1zKSxuPXRoaXMuX3ZhbHVlTWF4KCktdGhpcy5fdmFsdWVNaW4oKSxvPXRoaXMuX3ZhbHVlTWluKCkrcypuLHRoaXMuX3RyaW1BbGlnblZhbHVlKG8pfSxfdWlIYXNoOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz17aGFuZGxlOnRoaXMuaGFuZGxlc1t0XSxoYW5kbGVJbmRleDp0LHZhbHVlOnZvaWQgMCE9PWU/ZTp0aGlzLnZhbHVlKCl9O3JldHVybiB0aGlzLl9oYXNNdWx0aXBsZVZhbHVlcygpJiYocy52YWx1ZT12b2lkIDAhPT1lP2U6dGhpcy52YWx1ZXModCkscy52YWx1ZXM9aXx8dGhpcy52YWx1ZXMoKSksc30sX2hhc011bHRpcGxlVmFsdWVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RofSxfc3RhcnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fdHJpZ2dlcigic3RhcnQiLHQsdGhpcy5fdWlIYXNoKGUpKX0sX3NsaWRlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcyxuLG89dGhpcy52YWx1ZSgpLGE9dGhpcy52YWx1ZXMoKTt0aGlzLl9oYXNNdWx0aXBsZVZhbHVlcygpJiYobj10aGlzLnZhbHVlcyhlPzA6MSksbz10aGlzLnZhbHVlcyhlKSwyPT09dGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGgmJnRoaXMub3B0aW9ucy5yYW5nZT09PSEwJiYoaT0wPT09ZT9NYXRoLm1pbihuLGkpOk1hdGgubWF4KG4saSkpLGFbZV09aSksaSE9PW8mJihzPXRoaXMuX3RyaWdnZXIoInNsaWRlIix0LHRoaXMuX3VpSGFzaChlLGksYSkpLHMhPT0hMSYmKHRoaXMuX2hhc011bHRpcGxlVmFsdWVzKCk/dGhpcy52YWx1ZXMoZSxpKTp0aGlzLnZhbHVlKGkpKSl9LF9zdG9wOmZ1bmN0aW9uKHQsZSl7dGhpcy5fdHJpZ2dlcigic3RvcCIsdCx0aGlzLl91aUhhc2goZSkpfSxfY2hhbmdlOmZ1bmN0aW9uKHQsZSl7dGhpcy5fa2V5U2xpZGluZ3x8dGhpcy5fbW91c2VTbGlkaW5nfHwodGhpcy5fbGFzdENoYW5nZWRWYWx1ZT1lLHRoaXMuX3RyaWdnZXIoImNoYW5nZSIsdCx0aGlzLl91aUhhc2goZSkpKX0sdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMub3B0aW9ucy52YWx1ZT10aGlzLl90cmltQWxpZ25WYWx1ZSh0KSx0aGlzLl9yZWZyZXNoVmFsdWUoKSx0aGlzLl9jaGFuZ2UobnVsbCwwKSx2b2lkIDApOnRoaXMuX3ZhbHVlKCl9LHZhbHVlczpmdW5jdGlvbihlLGkpe3ZhciBzLG4sbztpZihhcmd1bWVudHMubGVuZ3RoPjEpcmV0dXJuIHRoaXMub3B0aW9ucy52YWx1ZXNbZV09dGhpcy5fdHJpbUFsaWduVmFsdWUoaSksdGhpcy5fcmVmcmVzaFZhbHVlKCksdGhpcy5fY2hhbmdlKG51bGwsZSksdm9pZCAwO2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLl92YWx1ZXMoKTtpZighdC5pc0FycmF5KGFyZ3VtZW50c1swXSkpcmV0dXJuIHRoaXMuX2hhc011bHRpcGxlVmFsdWVzKCk/dGhpcy5fdmFsdWVzKGUpOnRoaXMudmFsdWUoKTtmb3Iocz10aGlzLm9wdGlvbnMudmFsdWVzLG49YXJndW1lbnRzWzBdLG89MDtzLmxlbmd0aD5vO28rPTEpc1tvXT10aGlzLl90cmltQWxpZ25WYWx1ZShuW29dKSx0aGlzLl9jaGFuZ2UobnVsbCxvKTt0aGlzLl9yZWZyZXNoVmFsdWUoKX0sX3NldE9wdGlvbjpmdW5jdGlvbihlLGkpe3ZhciBzLG49MDtzd2l0Y2goInJhbmdlIj09PWUmJnRoaXMub3B0aW9ucy5yYW5nZT09PSEwJiYoIm1pbiI9PT1pPyh0aGlzLm9wdGlvbnMudmFsdWU9dGhpcy5fdmFsdWVzKDApLHRoaXMub3B0aW9ucy52YWx1ZXM9bnVsbCk6Im1heCI9PT1pJiYodGhpcy5vcHRpb25zLnZhbHVlPXRoaXMuX3ZhbHVlcyh0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aC0xKSx0aGlzLm9wdGlvbnMudmFsdWVzPW51bGwpKSx0LmlzQXJyYXkodGhpcy5vcHRpb25zLnZhbHVlcykmJihuPXRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoKSx0aGlzLl9zdXBlcihlLGkpLGUpe2Nhc2Uib3JpZW50YXRpb24iOnRoaXMuX2RldGVjdE9yaWVudGF0aW9uKCksdGhpcy5fcmVtb3ZlQ2xhc3MoInVpLXNsaWRlci1ob3Jpem9udGFsIHVpLXNsaWRlci12ZXJ0aWNhbCIpLl9hZGRDbGFzcygidWktc2xpZGVyLSIrdGhpcy5vcmllbnRhdGlvbiksdGhpcy5fcmVmcmVzaFZhbHVlKCksdGhpcy5vcHRpb25zLnJhbmdlJiZ0aGlzLl9yZWZyZXNoUmFuZ2UoaSksdGhpcy5oYW5kbGVzLmNzcygiaG9yaXpvbnRhbCI9PT1pPyJib3R0b20iOiJsZWZ0IiwiIik7YnJlYWs7Y2FzZSJ2YWx1ZSI6dGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9yZWZyZXNoVmFsdWUoKSx0aGlzLl9jaGFuZ2UobnVsbCwwKSx0aGlzLl9hbmltYXRlT2ZmPSExO2JyZWFrO2Nhc2UidmFsdWVzIjpmb3IodGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9yZWZyZXNoVmFsdWUoKSxzPW4tMTtzPj0wO3MtLSl0aGlzLl9jaGFuZ2UobnVsbCxzKTt0aGlzLl9hbmltYXRlT2ZmPSExO2JyZWFrO2Nhc2Uic3RlcCI6Y2FzZSJtaW4iOmNhc2UibWF4Ijp0aGlzLl9hbmltYXRlT2ZmPSEwLHRoaXMuX2NhbGN1bGF0ZU5ld01heCgpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpLHRoaXMuX2FuaW1hdGVPZmY9ITE7YnJlYWs7Y2FzZSJyYW5nZSI6dGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9yZWZyZXNoKCksdGhpcy5fYW5pbWF0ZU9mZj0hMX19LF9zZXRPcHRpb25EaXNhYmxlZDpmdW5jdGlvbih0KXt0aGlzLl9zdXBlcih0KSx0aGlzLl90b2dnbGVDbGFzcyhudWxsLCJ1aS1zdGF0ZS1kaXNhYmxlZCIsISF0KX0sX3ZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLnZhbHVlO3JldHVybiB0PXRoaXMuX3RyaW1BbGlnblZhbHVlKHQpfSxfdmFsdWVzOmZ1bmN0aW9uKHQpe3ZhciBlLGkscztpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiBlPXRoaXMub3B0aW9ucy52YWx1ZXNbdF0sZT10aGlzLl90cmltQWxpZ25WYWx1ZShlKTtpZih0aGlzLl9oYXNNdWx0aXBsZVZhbHVlcygpKXtmb3IoaT10aGlzLm9wdGlvbnMudmFsdWVzLnNsaWNlKCkscz0wO2kubGVuZ3RoPnM7cys9MSlpW3NdPXRoaXMuX3RyaW1BbGlnblZhbHVlKGlbc10pO3JldHVybiBpfXJldHVybltdfSxfdHJpbUFsaWduVmFsdWU6ZnVuY3Rpb24odCl7aWYodGhpcy5fdmFsdWVNaW4oKT49dClyZXR1cm4gdGhpcy5fdmFsdWVNaW4oKTtpZih0Pj10aGlzLl92YWx1ZU1heCgpKXJldHVybiB0aGlzLl92YWx1ZU1heCgpO3ZhciBlPXRoaXMub3B0aW9ucy5zdGVwPjA/dGhpcy5vcHRpb25zLnN0ZXA6MSxpPSh0LXRoaXMuX3ZhbHVlTWluKCkpJWUscz10LWk7cmV0dXJuIDIqTWF0aC5hYnMoaSk+PWUmJihzKz1pPjA/ZTotZSkscGFyc2VGbG9hdChzLnRvRml4ZWQoNSkpfSxfY2FsY3VsYXRlTmV3TWF4OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLm1heCxlPXRoaXMuX3ZhbHVlTWluKCksaT10aGlzLm9wdGlvbnMuc3RlcCxzPU1hdGgucm91bmQoKHQtZSkvaSkqaTt0PXMrZSx0PnRoaXMub3B0aW9ucy5tYXgmJih0LT1pKSx0aGlzLm1heD1wYXJzZUZsb2F0KHQudG9GaXhlZCh0aGlzLl9wcmVjaXNpb24oKSkpfSxfcHJlY2lzaW9uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcHJlY2lzaW9uT2YodGhpcy5vcHRpb25zLnN0ZXApO3JldHVybiBudWxsIT09dGhpcy5vcHRpb25zLm1pbiYmKHQ9TWF0aC5tYXgodCx0aGlzLl9wcmVjaXNpb25PZih0aGlzLm9wdGlvbnMubWluKSkpLHR9LF9wcmVjaXNpb25PZjpmdW5jdGlvbih0KXt2YXIgZT0iIit0LGk9ZS5pbmRleE9mKCIuIik7cmV0dXJuLTE9PT1pPzA6ZS5sZW5ndGgtaS0xfSxfdmFsdWVNaW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLm1pbn0sX3ZhbHVlTWF4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF4fSxfcmVmcmVzaFJhbmdlOmZ1bmN0aW9uKHQpeyJ2ZXJ0aWNhbCI9PT10JiZ0aGlzLnJhbmdlLmNzcyh7d2lkdGg6IiIsbGVmdDoiIn0pLCJob3Jpem9udGFsIj09PXQmJnRoaXMucmFuZ2UuY3NzKHtoZWlnaHQ6IiIsYm90dG9tOiIifSl9LF9yZWZyZXNoVmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSxpLHMsbixvLGE9dGhpcy5vcHRpb25zLnJhbmdlLHI9dGhpcy5vcHRpb25zLGg9dGhpcyxsPXRoaXMuX2FuaW1hdGVPZmY/ITE6ci5hbmltYXRlLGM9e307dGhpcy5faGFzTXVsdGlwbGVWYWx1ZXMoKT90aGlzLmhhbmRsZXMuZWFjaChmdW5jdGlvbihzKXtpPTEwMCooKGgudmFsdWVzKHMpLWguX3ZhbHVlTWluKCkpLyhoLl92YWx1ZU1heCgpLWguX3ZhbHVlTWluKCkpKSxjWyJob3Jpem9udGFsIj09PWgub3JpZW50YXRpb24/ImxlZnQiOiJib3R0b20iXT1pKyIlIix0KHRoaXMpLnN0b3AoMSwxKVtsPyJhbmltYXRlIjoiY3NzIl0oYyxyLmFuaW1hdGUpLGgub3B0aW9ucy5yYW5nZT09PSEwJiYoImhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbj8oMD09PXMmJmgucmFuZ2Uuc3RvcCgxLDEpW2w/ImFuaW1hdGUiOiJjc3MiXSh7bGVmdDppKyIlIn0sci5hbmltYXRlKSwxPT09cyYmaC5yYW5nZVtsPyJhbmltYXRlIjoiY3NzIl0oe3dpZHRoOmktZSsiJSJ9LHtxdWV1ZTohMSxkdXJhdGlvbjpyLmFuaW1hdGV9KSk6KDA9PT1zJiZoLnJhbmdlLnN0b3AoMSwxKVtsPyJhbmltYXRlIjoiY3NzIl0oe2JvdHRvbTppKyIlIn0sci5hbmltYXRlKSwxPT09cyYmaC5yYW5nZVtsPyJhbmltYXRlIjoiY3NzIl0oe2hlaWdodDppLWUrIiUifSx7cXVldWU6ITEsZHVyYXRpb246ci5hbmltYXRlfSkpKSxlPWl9KToocz10aGlzLnZhbHVlKCksbj10aGlzLl92YWx1ZU1pbigpLG89dGhpcy5fdmFsdWVNYXgoKSxpPW8hPT1uPzEwMCooKHMtbikvKG8tbikpOjAsY1siaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uPyJsZWZ0IjoiYm90dG9tIl09aSsiJSIsdGhpcy5oYW5kbGUuc3RvcCgxLDEpW2w/ImFuaW1hdGUiOiJjc3MiXShjLHIuYW5pbWF0ZSksIm1pbiI9PT1hJiYiaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uJiZ0aGlzLnJhbmdlLnN0b3AoMSwxKVtsPyJhbmltYXRlIjoiY3NzIl0oe3dpZHRoOmkrIiUifSxyLmFuaW1hdGUpLCJtYXgiPT09YSYmImhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbiYmdGhpcy5yYW5nZS5zdG9wKDEsMSlbbD8iYW5pbWF0ZSI6ImNzcyJdKHt3aWR0aDoxMDAtaSsiJSJ9LHIuYW5pbWF0ZSksIm1pbiI9PT1hJiYidmVydGljYWwiPT09dGhpcy5vcmllbnRhdGlvbiYmdGhpcy5yYW5nZS5zdG9wKDEsMSlbbD8iYW5pbWF0ZSI6ImNzcyJdKHtoZWlnaHQ6aSsiJSJ9LHIuYW5pbWF0ZSksIm1heCI9PT1hJiYidmVydGljYWwiPT09dGhpcy5vcmllbnRhdGlvbiYmdGhpcy5yYW5nZS5zdG9wKDEsMSlbbD8iYW5pbWF0ZSI6ImNzcyJdKHtoZWlnaHQ6MTAwLWkrIiUifSxyLmFuaW1hdGUpKX0sX2hhbmRsZUV2ZW50czp7a2V5ZG93bjpmdW5jdGlvbihlKXt2YXIgaSxzLG4sbyxhPXQoZS50YXJnZXQpLmRhdGEoInVpLXNsaWRlci1oYW5kbGUtaW5kZXgiKTtzd2l0Y2goZS5rZXlDb2RlKXtjYXNlIHQudWkua2V5Q29kZS5IT01FOmNhc2UgdC51aS5rZXlDb2RlLkVORDpjYXNlIHQudWkua2V5Q29kZS5QQUdFX1VQOmNhc2UgdC51aS5rZXlDb2RlLlBBR0VfRE9XTjpjYXNlIHQudWkua2V5Q29kZS5VUDpjYXNlIHQudWkua2V5Q29kZS5SSUdIVDpjYXNlIHQudWkua2V5Q29kZS5ET1dOOmNhc2UgdC51aS5rZXlDb2RlLkxFRlQ6aWYoZS5wcmV2ZW50RGVmYXVsdCgpLCF0aGlzLl9rZXlTbGlkaW5nJiYodGhpcy5fa2V5U2xpZGluZz0hMCx0aGlzLl9hZGRDbGFzcyh0KGUudGFyZ2V0KSxudWxsLCJ1aS1zdGF0ZS1hY3RpdmUiKSxpPXRoaXMuX3N0YXJ0KGUsYSksaT09PSExKSlyZXR1cm59c3dpdGNoKG89dGhpcy5vcHRpb25zLnN0ZXAscz1uPXRoaXMuX2hhc011bHRpcGxlVmFsdWVzKCk/dGhpcy52YWx1ZXMoYSk6dGhpcy52YWx1ZSgpLGUua2V5Q29kZSl7Y2FzZSB0LnVpLmtleUNvZGUuSE9NRTpuPXRoaXMuX3ZhbHVlTWluKCk7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuRU5EOm49dGhpcy5fdmFsdWVNYXgoKTticmVhaztjYXNlIHQudWkua2V5Q29kZS5QQUdFX1VQOm49dGhpcy5fdHJpbUFsaWduVmFsdWUocysodGhpcy5fdmFsdWVNYXgoKS10aGlzLl92YWx1ZU1pbigpKS90aGlzLm51bVBhZ2VzKTticmVhaztjYXNlIHQudWkua2V5Q29kZS5QQUdFX0RPV046bj10aGlzLl90cmltQWxpZ25WYWx1ZShzLSh0aGlzLl92YWx1ZU1heCgpLXRoaXMuX3ZhbHVlTWluKCkpL3RoaXMubnVtUGFnZXMpO2JyZWFrO2Nhc2UgdC51aS5rZXlDb2RlLlVQOmNhc2UgdC51aS5rZXlDb2RlLlJJR0hUOmlmKHM9PT10aGlzLl92YWx1ZU1heCgpKXJldHVybjtuPXRoaXMuX3RyaW1BbGlnblZhbHVlKHMrbyk7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuRE9XTjpjYXNlIHQudWkua2V5Q29kZS5MRUZUOmlmKHM9PT10aGlzLl92YWx1ZU1pbigpKXJldHVybjtuPXRoaXMuX3RyaW1BbGlnblZhbHVlKHMtbyl9dGhpcy5fc2xpZGUoZSxhLG4pfSxrZXl1cDpmdW5jdGlvbihlKXt2YXIgaT10KGUudGFyZ2V0KS5kYXRhKCJ1aS1zbGlkZXItaGFuZGxlLWluZGV4Iik7dGhpcy5fa2V5U2xpZGluZyYmKHRoaXMuX2tleVNsaWRpbmc9ITEsdGhpcy5fc3RvcChlLGkpLHRoaXMuX2NoYW5nZShlLGkpLHRoaXMuX3JlbW92ZUNsYXNzKHQoZS50YXJnZXQpLG51bGwsInVpLXN0YXRlLWFjdGl2ZSIpKX19fSksdC53aWRnZXQoInVpLnNvcnRhYmxlIix0LnVpLm1vdXNlLHt2ZXJzaW9uOiIxLjEyLjAtcmMuMiIsd2lkZ2V0RXZlbnRQcmVmaXg6InNvcnQiLHJlYWR5OiExLG9wdGlvbnM6e2FwcGVuZFRvOiJwYXJlbnQiLGF4aXM6ITEsY29ubmVjdFdpdGg6ITEsY29udGFpbm1lbnQ6ITEsY3Vyc29yOiJhdXRvIixjdXJzb3JBdDohMSxkcm9wT25FbXB0eTohMCxmb3JjZVBsYWNlaG9sZGVyU2l6ZTohMSxmb3JjZUhlbHBlclNpemU6ITEsZ3JpZDohMSxoYW5kbGU6ITEsaGVscGVyOiJvcmlnaW5hbCIsaXRlbXM6Ij4gKiIsb3BhY2l0eTohMSxwbGFjZWhvbGRlcjohMSxyZXZlcnQ6ITEsc2Nyb2xsOiEwLHNjcm9sbFNlbnNpdGl2aXR5OjIwLHNjcm9sbFNwZWVkOjIwLHNjb3BlOiJkZWZhdWx0Iix0b2xlcmFuY2U6ImludGVyc2VjdCIsekluZGV4OjFlMyxhY3RpdmF0ZTpudWxsLGJlZm9yZVN0b3A6bnVsbCxjaGFuZ2U6bnVsbCxkZWFjdGl2YXRlOm51bGwsb3V0Om51bGwsb3ZlcjpudWxsLHJlY2VpdmU6bnVsbCxyZW1vdmU6bnVsbCxzb3J0Om51bGwsc3RhcnQ6bnVsbCxzdG9wOm51bGwsdXBkYXRlOm51bGx9LF9pc092ZXJBeGlzOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdD49ZSYmZStpPnR9LF9pc0Zsb2F0aW5nOmZ1bmN0aW9uKHQpe3JldHVybi9sZWZ0fHJpZ2h0Ly50ZXN0KHQuY3NzKCJmbG9hdCIpKXx8L2lubGluZXx0YWJsZS1jZWxsLy50ZXN0KHQuY3NzKCJkaXNwbGF5IikpfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb250YWluZXJDYWNoZT17fSx0aGlzLl9hZGRDbGFzcygidWktc29ydGFibGUiKSx0aGlzLnJlZnJlc2goKSx0aGlzLm9mZnNldD10aGlzLmVsZW1lbnQub2Zmc2V0KCksdGhpcy5fbW91c2VJbml0KCksdGhpcy5fc2V0SGFuZGxlQ2xhc3NOYW1lKCksdGhpcy5yZWFkeT0hMH0sX3NldE9wdGlvbjpmdW5jdGlvbih0LGUpe3RoaXMuX3N1cGVyKHQsZSksImhhbmRsZSI9PT10JiZ0aGlzLl9zZXRIYW5kbGVDbGFzc05hbWUoKX0sX3NldEhhbmRsZUNsYXNzTmFtZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5lbGVtZW50LmZpbmQoIi51aS1zb3J0YWJsZS1oYW5kbGUiKSwidWktc29ydGFibGUtaGFuZGxlIiksdC5lYWNoKHRoaXMuaXRlbXMsZnVuY3Rpb24oKXtlLl9hZGRDbGFzcyh0aGlzLmluc3RhbmNlLm9wdGlvbnMuaGFuZGxlP3RoaXMuaXRlbS5maW5kKHRoaXMuaW5zdGFuY2Uub3B0aW9ucy5oYW5kbGUpOnRoaXMuaXRlbSwidWktc29ydGFibGUtaGFuZGxlIil9KX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9tb3VzZURlc3Ryb3koKTtmb3IodmFyIHQ9dGhpcy5pdGVtcy5sZW5ndGgtMTt0Pj0wO3QtLSl0aGlzLml0ZW1zW3RdLml0ZW0ucmVtb3ZlRGF0YSh0aGlzLndpZGdldE5hbWUrIi1pdGVtIik7cmV0dXJuIHRoaXN9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24oZSxpKXt2YXIgcz1udWxsLG49ITEsbz10aGlzO3JldHVybiB0aGlzLnJldmVydGluZz8hMTp0aGlzLm9wdGlvbnMuZGlzYWJsZWR8fCJzdGF0aWMiPT09dGhpcy5vcHRpb25zLnR5cGU/ITE6KHRoaXMuX3JlZnJlc2hJdGVtcyhlKSx0KGUudGFyZ2V0KS5wYXJlbnRzKCkuZWFjaChmdW5jdGlvbigpe3JldHVybiB0LmRhdGEodGhpcyxvLndpZGdldE5hbWUrIi1pdGVtIik9PT1vPyhzPXQodGhpcyksITEpOnZvaWQgMH0pLHQuZGF0YShlLnRhcmdldCxvLndpZGdldE5hbWUrIi1pdGVtIik9PT1vJiYocz10KGUudGFyZ2V0KSkscz8hdGhpcy5vcHRpb25zLmhhbmRsZXx8aXx8KHQodGhpcy5vcHRpb25zLmhhbmRsZSxzKS5maW5kKCIqIikuYWRkQmFjaygpLmVhY2goZnVuY3Rpb24oKXt0aGlzPT09ZS50YXJnZXQmJihuPSEwKX0pLG4pPyh0aGlzLmN1cnJlbnRJdGVtPXMsdGhpcy5fcmVtb3ZlQ3VycmVudHNGcm9tSXRlbXMoKSwhMCk6ITE6ITEpfSxfbW91c2VTdGFydDpmdW5jdGlvbihlLGkscyl7dmFyIG4sbyxhPXRoaXMub3B0aW9ucztpZih0aGlzLmN1cnJlbnRDb250YWluZXI9dGhpcyx0aGlzLnJlZnJlc2hQb3NpdGlvbnMoKSx0aGlzLmhlbHBlcj10aGlzLl9jcmVhdGVIZWxwZXIoZSksdGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpLHRoaXMuX2NhY2hlTWFyZ2lucygpLHRoaXMuc2Nyb2xsUGFyZW50PXRoaXMuaGVscGVyLnNjcm9sbFBhcmVudCgpLHRoaXMub2Zmc2V0PXRoaXMuY3VycmVudEl0ZW0ub2Zmc2V0KCksdGhpcy5vZmZzZXQ9e3RvcDp0aGlzLm9mZnNldC50b3AtdGhpcy5tYXJnaW5zLnRvcCxsZWZ0OnRoaXMub2Zmc2V0LmxlZnQtdGhpcy5tYXJnaW5zLmxlZnR9LHQuZXh0ZW5kKHRoaXMub2Zmc2V0LHtjbGljazp7bGVmdDplLnBhZ2VYLXRoaXMub2Zmc2V0LmxlZnQsdG9wOmUucGFnZVktdGhpcy5vZmZzZXQudG9wfSxwYXJlbnQ6dGhpcy5fZ2V0UGFyZW50T2Zmc2V0KCkscmVsYXRpdmU6dGhpcy5fZ2V0UmVsYXRpdmVPZmZzZXQoKX0pLHRoaXMuaGVscGVyLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIpLHRoaXMuY3NzUG9zaXRpb249dGhpcy5oZWxwZXIuY3NzKCJwb3NpdGlvbiIpLHRoaXMub3JpZ2luYWxQb3NpdGlvbj10aGlzLl9nZW5lcmF0ZVBvc2l0aW9uKGUpLHRoaXMub3JpZ2luYWxQYWdlWD1lLnBhZ2VYLHRoaXMub3JpZ2luYWxQYWdlWT1lLnBhZ2VZLGEuY3Vyc29yQXQmJnRoaXMuX2FkanVzdE9mZnNldEZyb21IZWxwZXIoYS5jdXJzb3JBdCksdGhpcy5kb21Qb3NpdGlvbj17cHJldjp0aGlzLmN1cnJlbnRJdGVtLnByZXYoKVswXSxwYXJlbnQ6dGhpcy5jdXJyZW50SXRlbS5wYXJlbnQoKVswXX0sdGhpcy5oZWxwZXJbMF0hPT10aGlzLmN1cnJlbnRJdGVtWzBdJiZ0aGlzLmN1cnJlbnRJdGVtLmhpZGUoKSx0aGlzLl9jcmVhdGVQbGFjZWhvbGRlcigpLGEuY29udGFpbm1lbnQmJnRoaXMuX3NldENvbnRhaW5tZW50KCksYS5jdXJzb3ImJiJhdXRvIiE9PWEuY3Vyc29yJiYobz10aGlzLmRvY3VtZW50LmZpbmQoImJvZHkiKSx0aGlzLnN0b3JlZEN1cnNvcj1vLmNzcygiY3Vyc29yIiksby5jc3MoImN1cnNvciIsYS5jdXJzb3IpLHRoaXMuc3RvcmVkU3R5bGVzaGVldD10KCI8c3R5bGU+KnsgY3Vyc29yOiAiK2EuY3Vyc29yKyIgIWltcG9ydGFudDsgfTwvc3R5bGU+IikuYXBwZW5kVG8obykpLGEub3BhY2l0eSYmKHRoaXMuaGVscGVyLmNzcygib3BhY2l0eSIpJiYodGhpcy5fc3RvcmVkT3BhY2l0eT10aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiKSksdGhpcy5oZWxwZXIuY3NzKCJvcGFjaXR5IixhLm9wYWNpdHkpKSxhLnpJbmRleCYmKHRoaXMuaGVscGVyLmNzcygiekluZGV4IikmJih0aGlzLl9zdG9yZWRaSW5kZXg9dGhpcy5oZWxwZXIuY3NzKCJ6SW5kZXgiKSksdGhpcy5oZWxwZXIuY3NzKCJ6SW5kZXgiLGEuekluZGV4KSksdGhpcy5zY3JvbGxQYXJlbnRbMF0hPT10aGlzLmRvY3VtZW50WzBdJiYiSFRNTCIhPT10aGlzLnNjcm9sbFBhcmVudFswXS50YWdOYW1lJiYodGhpcy5vdmVyZmxvd09mZnNldD10aGlzLnNjcm9sbFBhcmVudC5vZmZzZXQoKSksdGhpcy5fdHJpZ2dlcigic3RhcnQiLGUsdGhpcy5fdWlIYXNoKCkpLHRoaXMuX3ByZXNlcnZlSGVscGVyUHJvcG9ydGlvbnN8fHRoaXMuX2NhY2hlSGVscGVyUHJvcG9ydGlvbnMoKSwhcylmb3Iobj10aGlzLmNvbnRhaW5lcnMubGVuZ3RoLTE7bj49MDtuLS0pdGhpcy5jb250YWluZXJzW25dLl90cmlnZ2VyKCJhY3RpdmF0ZSIsZSx0aGlzLl91aUhhc2godGhpcykpO3JldHVybiB0LnVpLmRkbWFuYWdlciYmKHQudWkuZGRtYW5hZ2VyLmN1cnJlbnQ9dGhpcyksdC51aS5kZG1hbmFnZXImJiFhLmRyb3BCZWhhdmlvdXImJnQudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHRoaXMsZSksdGhpcy5kcmFnZ2luZz0hMCx0aGlzLl9hZGRDbGFzcyh0aGlzLmhlbHBlciwidWktc29ydGFibGUtaGVscGVyIiksdGhpcy5fbW91c2VEcmFnKGUpLCEwfSxfbW91c2VEcmFnOmZ1bmN0aW9uKGUpe3ZhciBpLHMsbixvLGE9dGhpcy5vcHRpb25zLHI9ITE7Zm9yKHRoaXMucG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbihlKSx0aGlzLnBvc2l0aW9uQWJzPXRoaXMuX2NvbnZlcnRQb3NpdGlvblRvKCJhYnNvbHV0ZSIpLHRoaXMubGFzdFBvc2l0aW9uQWJzfHwodGhpcy5sYXN0UG9zaXRpb25BYnM9dGhpcy5wb3NpdGlvbkFicyksdGhpcy5vcHRpb25zLnNjcm9sbCYmKHRoaXMuc2Nyb2xsUGFyZW50WzBdIT09dGhpcy5kb2N1bWVudFswXSYmIkhUTUwiIT09dGhpcy5zY3JvbGxQYXJlbnRbMF0udGFnTmFtZT8odGhpcy5vdmVyZmxvd09mZnNldC50b3ArdGhpcy5zY3JvbGxQYXJlbnRbMF0ub2Zmc2V0SGVpZ2h0LWUucGFnZVk8YS5zY3JvbGxTZW5zaXRpdml0eT90aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxUb3A9cj10aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxUb3ArYS5zY3JvbGxTcGVlZDplLnBhZ2VZLXRoaXMub3ZlcmZsb3dPZmZzZXQudG9wPGEuc2Nyb2xsU2Vuc2l0aXZpdHkmJih0aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxUb3A9cj10aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxUb3AtYS5zY3JvbGxTcGVlZCksdGhpcy5vdmVyZmxvd09mZnNldC5sZWZ0K3RoaXMuc2Nyb2xsUGFyZW50WzBdLm9mZnNldFdpZHRoLWUucGFnZVg8YS5zY3JvbGxTZW5zaXRpdml0eT90aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxMZWZ0PXI9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdCthLnNjcm9sbFNwZWVkOmUucGFnZVgtdGhpcy5vdmVyZmxvd09mZnNldC5sZWZ0PGEuc2Nyb2xsU2Vuc2l0aXZpdHkmJih0aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxMZWZ0PXI9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdC1hLnNjcm9sbFNwZWVkKSk6KGUucGFnZVktdGhpcy5kb2N1bWVudC5zY3JvbGxUb3AoKTxhLnNjcm9sbFNlbnNpdGl2aXR5P3I9dGhpcy5kb2N1bWVudC5zY3JvbGxUb3AodGhpcy5kb2N1bWVudC5zY3JvbGxUb3AoKS1hLnNjcm9sbFNwZWVkKTp0aGlzLndpbmRvdy5oZWlnaHQoKS0oZS5wYWdlWS10aGlzLmRvY3VtZW50LnNjcm9sbFRvcCgpKTxhLnNjcm9sbFNlbnNpdGl2aXR5JiYocj10aGlzLmRvY3VtZW50LnNjcm9sbFRvcCh0aGlzLmRvY3VtZW50LnNjcm9sbFRvcCgpK2Euc2Nyb2xsU3BlZWQpKSxlLnBhZ2VYLXRoaXMuZG9jdW1lbnQuc2Nyb2xsTGVmdCgpPGEuc2Nyb2xsU2Vuc2l0aXZpdHk/cj10aGlzLmRvY3VtZW50LnNjcm9sbExlZnQodGhpcy5kb2N1bWVudC5zY3JvbGxMZWZ0KCktYS5zY3JvbGxTcGVlZCk6dGhpcy53aW5kb3cud2lkdGgoKS0oZS5wYWdlWC10aGlzLmRvY3VtZW50LnNjcm9sbExlZnQoKSk8YS5zY3JvbGxTZW5zaXRpdml0eSYmKHI9dGhpcy5kb2N1bWVudC5zY3JvbGxMZWZ0KHRoaXMuZG9jdW1lbnQuc2Nyb2xsTGVmdCgpK2Euc2Nyb2xsU3BlZWQpKSksciE9PSExJiZ0LnVpLmRkbWFuYWdlciYmIWEuZHJvcEJlaGF2aW91ciYmdC51aS5kZG1hbmFnZXIucHJlcGFyZU9mZnNldHModGhpcyxlKSksdGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKSx0aGlzLm9wdGlvbnMuYXhpcyYmInkiPT09dGhpcy5vcHRpb25zLmF4aXN8fCh0aGlzLmhlbHBlclswXS5zdHlsZS5sZWZ0PXRoaXMucG9zaXRpb24ubGVmdCsicHgiKSx0aGlzLm9wdGlvbnMuYXhpcyYmIngiPT09dGhpcy5vcHRpb25zLmF4aXN8fCh0aGlzLmhlbHBlclswXS5zdHlsZS50b3A9dGhpcy5wb3NpdGlvbi50b3ArInB4IiksaT10aGlzLml0ZW1zLmxlbmd0aC0xO2k+PTA7aS0tKWlmKHM9dGhpcy5pdGVtc1tpXSxuPXMuaXRlbVswXSxvPXRoaXMuX2ludGVyc2VjdHNXaXRoUG9pbnRlcihzKSxvJiZzLmluc3RhbmNlPT09dGhpcy5jdXJyZW50Q29udGFpbmVyJiZuIT09dGhpcy5jdXJyZW50SXRlbVswXSYmdGhpcy5wbGFjZWhvbGRlclsxPT09bz8ibmV4dCI6InByZXYiXSgpWzBdIT09biYmIXQuY29udGFpbnModGhpcy5wbGFjZWhvbGRlclswXSxuKSYmKCJzZW1pLWR5bmFtaWMiPT09dGhpcy5vcHRpb25zLnR5cGU/IXQuY29udGFpbnModGhpcy5lbGVtZW50WzBdLG4pOiEwKSl7aWYodGhpcy5kaXJlY3Rpb249MT09PW8/ImRvd24iOiJ1cCIsInBvaW50ZXIiIT09dGhpcy5vcHRpb25zLnRvbGVyYW5jZSYmIXRoaXMuX2ludGVyc2VjdHNXaXRoU2lkZXMocykpYnJlYWs7dGhpcy5fcmVhcnJhbmdlKGUscyksdGhpcy5fdHJpZ2dlcigiY2hhbmdlIixlLHRoaXMuX3VpSGFzaCgpKTticmVha31yZXR1cm4gdGhpcy5fY29udGFjdENvbnRhaW5lcnMoZSksdC51aS5kZG1hbmFnZXImJnQudWkuZGRtYW5hZ2VyLmRyYWcodGhpcyxlKSx0aGlzLl90cmlnZ2VyKCJzb3J0IixlLHRoaXMuX3VpSGFzaCgpKSx0aGlzLmxhc3RQb3NpdGlvbkFicz10aGlzLnBvc2l0aW9uQWJzLCExfSxfbW91c2VTdG9wOmZ1bmN0aW9uKGUsaSl7aWYoZSl7aWYodC51aS5kZG1hbmFnZXImJiF0aGlzLm9wdGlvbnMuZHJvcEJlaGF2aW91ciYmdC51aS5kZG1hbmFnZXIuZHJvcCh0aGlzLGUpLHRoaXMub3B0aW9ucy5yZXZlcnQpe3ZhciBzPXRoaXMsbj10aGlzLnBsYWNlaG9sZGVyLm9mZnNldCgpLG89dGhpcy5vcHRpb25zLmF4aXMsYT17fTtvJiYieCIhPT1vfHwoYS5sZWZ0PW4ubGVmdC10aGlzLm9mZnNldC5wYXJlbnQubGVmdC10aGlzLm1hcmdpbnMubGVmdCsodGhpcy5vZmZzZXRQYXJlbnRbMF09PT10aGlzLmRvY3VtZW50WzBdLmJvZHk/MDp0aGlzLm9mZnNldFBhcmVudFswXS5zY3JvbGxMZWZ0KSksbyYmInkiIT09b3x8KGEudG9wPW4udG9wLXRoaXMub2Zmc2V0LnBhcmVudC50b3AtdGhpcy5tYXJnaW5zLnRvcCsodGhpcy5vZmZzZXRQYXJlbnRbMF09PT10aGlzLmRvY3VtZW50WzBdLmJvZHk/MDp0aGlzLm9mZnNldFBhcmVudFswXS5zY3JvbGxUb3ApKSx0aGlzLnJldmVydGluZz0hMCx0KHRoaXMuaGVscGVyKS5hbmltYXRlKGEscGFyc2VJbnQodGhpcy5vcHRpb25zLnJldmVydCwxMCl8fDUwMCxmdW5jdGlvbigpe3MuX2NsZWFyKGUpfSl9ZWxzZSB0aGlzLl9jbGVhcihlLGkpO3JldHVybiExfX0sY2FuY2VsOmZ1bmN0aW9uKCl7aWYodGhpcy5kcmFnZ2luZyl7dGhpcy5fbW91c2VVcCh7dGFyZ2V0Om51bGx9KSwib3JpZ2luYWwiPT09dGhpcy5vcHRpb25zLmhlbHBlcj8odGhpcy5jdXJyZW50SXRlbS5jc3ModGhpcy5fc3RvcmVkQ1NTKSx0aGlzLl9yZW1vdmVDbGFzcyh0aGlzLmN1cnJlbnRJdGVtLCJ1aS1zb3J0YWJsZS1oZWxwZXIiKSk6dGhpcy5jdXJyZW50SXRlbS5zaG93KCk7Zm9yKHZhciBlPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtlPj0wO2UtLSl0aGlzLmNvbnRhaW5lcnNbZV0uX3RyaWdnZXIoImRlYWN0aXZhdGUiLG51bGwsdGhpcy5fdWlIYXNoKHRoaXMpKSx0aGlzLmNvbnRhaW5lcnNbZV0uY29udGFpbmVyQ2FjaGUub3ZlciYmKHRoaXMuY29udGFpbmVyc1tlXS5fdHJpZ2dlcigib3V0IixudWxsLHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250YWluZXJzW2VdLmNvbnRhaW5lckNhY2hlLm92ZXI9MCl9cmV0dXJuIHRoaXMucGxhY2Vob2xkZXImJih0aGlzLnBsYWNlaG9sZGVyWzBdLnBhcmVudE5vZGUmJnRoaXMucGxhY2Vob2xkZXJbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKSwib3JpZ2luYWwiIT09dGhpcy5vcHRpb25zLmhlbHBlciYmdGhpcy5oZWxwZXImJnRoaXMuaGVscGVyWzBdLnBhcmVudE5vZGUmJnRoaXMuaGVscGVyLnJlbW92ZSgpLHQuZXh0ZW5kKHRoaXMse2hlbHBlcjpudWxsLGRyYWdnaW5nOiExLHJldmVydGluZzohMSxfbm9GaW5hbFNvcnQ6bnVsbH0pLHRoaXMuZG9tUG9zaXRpb24ucHJldj90KHRoaXMuZG9tUG9zaXRpb24ucHJldikuYWZ0ZXIodGhpcy5jdXJyZW50SXRlbSk6dCh0aGlzLmRvbVBvc2l0aW9uLnBhcmVudCkucHJlcGVuZCh0aGlzLmN1cnJlbnRJdGVtKSksdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXMuX2dldEl0ZW1zQXNqUXVlcnkoZSYmZS5jb25uZWN0ZWQpLHM9W107cmV0dXJuIGU9ZXx8e30sdChpKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9KHQoZS5pdGVtfHx0aGlzKS5hdHRyKGUuYXR0cmlidXRlfHwiaWQiKXx8IiIpLm1hdGNoKGUuZXhwcmVzc2lvbnx8LyguKylbXC09X10oLispLyk7aSYmcy5wdXNoKChlLmtleXx8aVsxXSsiW10iKSsiPSIrKGUua2V5JiZlLmV4cHJlc3Npb24/aVsxXTppWzJdKSl9KSwhcy5sZW5ndGgmJmUua2V5JiZzLnB1c2goZS5rZXkrIj0iKSxzLmpvaW4oIiYiKX0sdG9BcnJheTpmdW5jdGlvbihlKXt2YXIgaT10aGlzLl9nZXRJdGVtc0FzalF1ZXJ5KGUmJmUuY29ubmVjdGVkKSxzPVtdO3JldHVybiBlPWV8fHt9LGkuZWFjaChmdW5jdGlvbigpe3MucHVzaCh0KGUuaXRlbXx8dGhpcykuYXR0cihlLmF0dHJpYnV0ZXx8ImlkIil8fCIiKX0pLHN9LF9pbnRlcnNlY3RzV2l0aDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnBvc2l0aW9uQWJzLmxlZnQsaT1lK3RoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgscz10aGlzLnBvc2l0aW9uQWJzLnRvcCxuPXMrdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQsbz10LmxlZnQsYT1vK3Qud2lkdGgscj10LnRvcCxoPXIrdC5oZWlnaHQsbD10aGlzLm9mZnNldC5jbGljay50b3AsYz10aGlzLm9mZnNldC5jbGljay5sZWZ0LHU9IngiPT09dGhpcy5vcHRpb25zLmF4aXN8fHMrbD5yJiZoPnMrbCxkPSJ5Ij09PXRoaXMub3B0aW9ucy5heGlzfHxlK2M+byYmYT5lK2MscD11JiZkO3JldHVybiJwb2ludGVyIj09PXRoaXMub3B0aW9ucy50b2xlcmFuY2V8fHRoaXMub3B0aW9ucy5mb3JjZVBvaW50ZXJGb3JDb250YWluZXJzfHwicG9pbnRlciIhPT10aGlzLm9wdGlvbnMudG9sZXJhbmNlJiZ0aGlzLmhlbHBlclByb3BvcnRpb25zW3RoaXMuZmxvYXRpbmc/IndpZHRoIjoiaGVpZ2h0Il0+dFt0aGlzLmZsb2F0aW5nPyJ3aWR0aCI6ImhlaWdodCJdP3A6ZSt0aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLzI+byYmYT5pLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMiYmcyt0aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8yPnImJmg+bi10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8yfSxfaW50ZXJzZWN0c1dpdGhQb2ludGVyOmZ1bmN0aW9uKHQpe3ZhciBlLGkscz0ieCI9PT10aGlzLm9wdGlvbnMuYXhpc3x8dGhpcy5faXNPdmVyQXhpcyh0aGlzLnBvc2l0aW9uQWJzLnRvcCt0aGlzLm9mZnNldC5jbGljay50b3AsdC50b3AsdC5oZWlnaHQpLG49InkiPT09dGhpcy5vcHRpb25zLmF4aXN8fHRoaXMuX2lzT3ZlckF4aXModGhpcy5wb3NpdGlvbkFicy5sZWZ0K3RoaXMub2Zmc2V0LmNsaWNrLmxlZnQsdC5sZWZ0LHQud2lkdGgpLG89cyYmbjtyZXR1cm4gbz8oZT10aGlzLl9nZXREcmFnVmVydGljYWxEaXJlY3Rpb24oKSxpPXRoaXMuX2dldERyYWdIb3Jpem9udGFsRGlyZWN0aW9uKCksdGhpcy5mbG9hdGluZz8icmlnaHQiPT09aXx8ImRvd24iPT09ZT8yOjE6ZSYmKCJkb3duIj09PWU/MjoxKSk6ITF9LF9pbnRlcnNlY3RzV2l0aFNpZGVzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2lzT3ZlckF4aXModGhpcy5wb3NpdGlvbkFicy50b3ArdGhpcy5vZmZzZXQuY2xpY2sudG9wLHQudG9wK3QuaGVpZ2h0LzIsdC5oZWlnaHQpLGk9dGhpcy5faXNPdmVyQXhpcyh0aGlzLnBvc2l0aW9uQWJzLmxlZnQrdGhpcy5vZmZzZXQuY2xpY2subGVmdCx0LmxlZnQrdC53aWR0aC8yLHQud2lkdGgpLHM9dGhpcy5fZ2V0RHJhZ1ZlcnRpY2FsRGlyZWN0aW9uKCksbj10aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbigpO3JldHVybiB0aGlzLmZsb2F0aW5nJiZuPyJyaWdodCI9PT1uJiZpfHwibGVmdCI9PT1uJiYhaTpzJiYoImRvd24iPT09cyYmZXx8InVwIj09PXMmJiFlKX0sX2dldERyYWdWZXJ0aWNhbERpcmVjdGlvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMucG9zaXRpb25BYnMudG9wLXRoaXMubGFzdFBvc2l0aW9uQWJzLnRvcDtyZXR1cm4gMCE9PXQmJih0PjA/ImRvd24iOiJ1cCIpfSxfZ2V0RHJhZ0hvcml6b250YWxEaXJlY3Rpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBvc2l0aW9uQWJzLmxlZnQtdGhpcy5sYXN0UG9zaXRpb25BYnMubGVmdDtyZXR1cm4gMCE9PXQmJih0PjA/InJpZ2h0IjoibGVmdCIpfSxyZWZyZXNoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZWZyZXNoSXRlbXModCksdGhpcy5fc2V0SGFuZGxlQ2xhc3NOYW1lKCksdGhpcy5yZWZyZXNoUG9zaXRpb25zKCksdGhpc30sX2Nvbm5lY3RXaXRoOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zO3JldHVybiB0LmNvbm5lY3RXaXRoLmNvbnN0cnVjdG9yPT09U3RyaW5nP1t0LmNvbm5lY3RXaXRoXTp0LmNvbm5lY3RXaXRofSxfZ2V0SXRlbXNBc2pRdWVyeTpmdW5jdGlvbihlKXtmdW5jdGlvbiBpKCl7ci5wdXNoKHRoaXMpfXZhciBzLG4sbyxhLHI9W10saD1bXSxsPXRoaXMuX2Nvbm5lY3RXaXRoKCk7aWYobCYmZSlmb3Iocz1sLmxlbmd0aC0xO3M+PTA7cy0tKWZvcihvPXQobFtzXSx0aGlzLmRvY3VtZW50WzBdKSxuPW8ubGVuZ3RoLTE7bj49MDtuLS0pYT10LmRhdGEob1tuXSx0aGlzLndpZGdldEZ1bGxOYW1lKSxhJiZhIT09dGhpcyYmIWEub3B0aW9ucy5kaXNhYmxlZCYmaC5wdXNoKFt0LmlzRnVuY3Rpb24oYS5vcHRpb25zLml0ZW1zKT9hLm9wdGlvbnMuaXRlbXMuY2FsbChhLmVsZW1lbnQpOnQoYS5vcHRpb25zLml0ZW1zLGEuZWxlbWVudCkubm90KCIudWktc29ydGFibGUtaGVscGVyIikubm90KCIudWktc29ydGFibGUtcGxhY2Vob2xkZXIiKSxhXSk7Zm9yKGgucHVzaChbdC5pc0Z1bmN0aW9uKHRoaXMub3B0aW9ucy5pdGVtcyk/dGhpcy5vcHRpb25zLml0ZW1zLmNhbGwodGhpcy5lbGVtZW50LG51bGwse29wdGlvbnM6dGhpcy5vcHRpb25zLGl0ZW06dGhpcy5jdXJyZW50SXRlbX0pOnQodGhpcy5vcHRpb25zLml0ZW1zLHRoaXMuZWxlbWVudCkubm90KCIudWktc29ydGFibGUtaGVscGVyIikubm90KCIudWktc29ydGFibGUtcGxhY2Vob2xkZXIiKSx0aGlzXSkscz1oLmxlbmd0aC0xO3M+PTA7cy0tKWhbc11bMF0uZWFjaChpKTtyZXR1cm4gdChyKX0sX3JlbW92ZUN1cnJlbnRzRnJvbUl0ZW1zOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jdXJyZW50SXRlbS5maW5kKCI6ZGF0YSgiK3RoaXMud2lkZ2V0TmFtZSsiLWl0ZW0pIik7dGhpcy5pdGVtcz10LmdyZXAodGhpcy5pdGVtcyxmdW5jdGlvbih0KXtmb3IodmFyIGk9MDtlLmxlbmd0aD5pO2krKylpZihlW2ldPT09dC5pdGVtWzBdKXJldHVybiExO3JldHVybiEwfSl9LF9yZWZyZXNoSXRlbXM6ZnVuY3Rpb24oZSl7dGhpcy5pdGVtcz1bXSx0aGlzLmNvbnRhaW5lcnM9W3RoaXNdO3ZhciBpLHMsbixvLGEscixoLGwsYz10aGlzLml0ZW1zLHU9W1t0LmlzRnVuY3Rpb24odGhpcy5vcHRpb25zLml0ZW1zKT90aGlzLm9wdGlvbnMuaXRlbXMuY2FsbCh0aGlzLmVsZW1lbnRbMF0sZSx7aXRlbTp0aGlzLmN1cnJlbnRJdGVtfSk6dCh0aGlzLm9wdGlvbnMuaXRlbXMsdGhpcy5lbGVtZW50KSx0aGlzXV0sZD10aGlzLl9jb25uZWN0V2l0aCgpO2lmKGQmJnRoaXMucmVhZHkpZm9yKGk9ZC5sZW5ndGgtMTtpPj0wO2ktLSlmb3Iobj10KGRbaV0sdGhpcy5kb2N1bWVudFswXSkscz1uLmxlbmd0aC0xO3M+PTA7cy0tKW89dC5kYXRhKG5bc10sdGhpcy53aWRnZXRGdWxsTmFtZSksbyYmbyE9PXRoaXMmJiFvLm9wdGlvbnMuZGlzYWJsZWQmJih1LnB1c2goW3QuaXNGdW5jdGlvbihvLm9wdGlvbnMuaXRlbXMpP28ub3B0aW9ucy5pdGVtcy5jYWxsKG8uZWxlbWVudFswXSxlLHtpdGVtOnRoaXMuY3VycmVudEl0ZW19KTp0KG8ub3B0aW9ucy5pdGVtcyxvLmVsZW1lbnQpLG9dKSx0aGlzLmNvbnRhaW5lcnMucHVzaChvKSk7Zm9yKGk9dS5sZW5ndGgtMTtpPj0wO2ktLSlmb3IoYT11W2ldWzFdLHI9dVtpXVswXSxzPTAsbD1yLmxlbmd0aDtsPnM7cysrKWg9dChyW3NdKSxoLmRhdGEodGhpcy53aWRnZXROYW1lKyItaXRlbSIsYSksYy5wdXNoKHtpdGVtOmgsaW5zdGFuY2U6YSx3aWR0aDowLGhlaWdodDowLGxlZnQ6MCx0b3A6MH0pfSxyZWZyZXNoUG9zaXRpb25zOmZ1bmN0aW9uKGUpe3RoaXMuZmxvYXRpbmc9dGhpcy5pdGVtcy5sZW5ndGg/IngiPT09dGhpcy5vcHRpb25zLmF4aXN8fHRoaXMuX2lzRmxvYXRpbmcodGhpcy5pdGVtc1swXS5pdGVtKTohMSx0aGlzLm9mZnNldFBhcmVudCYmdGhpcy5oZWxwZXImJih0aGlzLm9mZnNldC5wYXJlbnQ9dGhpcy5fZ2V0UGFyZW50T2Zmc2V0KCkpO3ZhciBpLHMsbixvO2ZvcihpPXRoaXMuaXRlbXMubGVuZ3RoLTE7aT49MDtpLS0pcz10aGlzLml0ZW1zW2ldLHMuaW5zdGFuY2UhPT10aGlzLmN1cnJlbnRDb250YWluZXImJnRoaXMuY3VycmVudENvbnRhaW5lciYmcy5pdGVtWzBdIT09dGhpcy5jdXJyZW50SXRlbVswXXx8KG49dGhpcy5vcHRpb25zLnRvbGVyYW5jZUVsZW1lbnQ/dCh0aGlzLm9wdGlvbnMudG9sZXJhbmNlRWxlbWVudCxzLml0ZW0pOnMuaXRlbSxlfHwocy53aWR0aD1uLm91dGVyV2lkdGgoKSxzLmhlaWdodD1uLm91dGVySGVpZ2h0KCkpLG89bi5vZmZzZXQoKSxzLmxlZnQ9by5sZWZ0LHMudG9wPW8udG9wKTtpZih0aGlzLm9wdGlvbnMuY3VzdG9tJiZ0aGlzLm9wdGlvbnMuY3VzdG9tLnJlZnJlc2hDb250YWluZXJzKXRoaXMub3B0aW9ucy5jdXN0b20ucmVmcmVzaENvbnRhaW5lcnMuY2FsbCh0aGlzKTtlbHNlIGZvcihpPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtpPj0wO2ktLSlvPXRoaXMuY29udGFpbmVyc1tpXS5lbGVtZW50Lm9mZnNldCgpLHRoaXMuY29udGFpbmVyc1tpXS5jb250YWluZXJDYWNoZS5sZWZ0PW8ubGVmdCx0aGlzLmNvbnRhaW5lcnNbaV0uY29udGFpbmVyQ2FjaGUudG9wPW8udG9wLHRoaXMuY29udGFpbmVyc1tpXS5jb250YWluZXJDYWNoZS53aWR0aD10aGlzLmNvbnRhaW5lcnNbaV0uZWxlbWVudC5vdXRlcldpZHRoKCksdGhpcy5jb250YWluZXJzW2ldLmNvbnRhaW5lckNhY2hlLmhlaWdodD10aGlzLmNvbnRhaW5lcnNbaV0uZWxlbWVudC5vdXRlckhlaWdodCgpO3JldHVybiB0aGlzfSxfY3JlYXRlUGxhY2Vob2xkZXI6ZnVuY3Rpb24oZSl7ZT1lfHx0aGlzO3ZhciBpLHM9ZS5vcHRpb25zO3MucGxhY2Vob2xkZXImJnMucGxhY2Vob2xkZXIuY29uc3RydWN0b3IhPT1TdHJpbmd8fChpPXMucGxhY2Vob2xkZXIscy5wbGFjZWhvbGRlcj17ZWxlbWVudDpmdW5jdGlvbigpe3ZhciBzPWUuY3VycmVudEl0ZW1bMF0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxuPXQoIjwiK3MrIj4iLGUuZG9jdW1lbnRbMF0pO3JldHVybiBlLl9hZGRDbGFzcyhuLCJ1aS1zb3J0YWJsZS1wbGFjZWhvbGRlciIsaXx8ZS5jdXJyZW50SXRlbVswXS5jbGFzc05hbWUpLl9yZW1vdmVDbGFzcyhuLCJ1aS1zb3J0YWJsZS1oZWxwZXIiKSwidGJvZHkiPT09cz9lLl9jcmVhdGVUclBsYWNlaG9sZGVyKGUuY3VycmVudEl0ZW0uZmluZCgidHIiKS5lcSgwKSx0KCI8dHI+IixlLmRvY3VtZW50WzBdKS5hcHBlbmRUbyhuKSk6InRyIj09PXM/ZS5fY3JlYXRlVHJQbGFjZWhvbGRlcihlLmN1cnJlbnRJdGVtLG4pOiJpbWciPT09cyYmbi5hdHRyKCJzcmMiLGUuY3VycmVudEl0ZW0uYXR0cigic3JjIikpLGl8fG4uY3NzKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIiksbn0sdXBkYXRlOmZ1bmN0aW9uKHQsbil7KCFpfHxzLmZvcmNlUGxhY2Vob2xkZXJTaXplKSYmKG4uaGVpZ2h0KCl8fG4uaGVpZ2h0KGUuY3VycmVudEl0ZW0uaW5uZXJIZWlnaHQoKS1wYXJzZUludChlLmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ1RvcCIpfHwwLDEwKS1wYXJzZUludChlLmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ0JvdHRvbSIpfHwwLDEwKSksbi53aWR0aCgpfHxuLndpZHRoKGUuY3VycmVudEl0ZW0uaW5uZXJXaWR0aCgpLXBhcnNlSW50KGUuY3VycmVudEl0ZW0uY3NzKCJwYWRkaW5nTGVmdCIpfHwwLDEwKS1wYXJzZUludChlLmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ1JpZ2h0Iil8fDAsMTApKSl9fSksZS5wbGFjZWhvbGRlcj10KHMucGxhY2Vob2xkZXIuZWxlbWVudC5jYWxsKGUuZWxlbWVudCxlLmN1cnJlbnRJdGVtKSksZS5jdXJyZW50SXRlbS5hZnRlcihlLnBsYWNlaG9sZGVyKSxzLnBsYWNlaG9sZGVyLnVwZGF0ZShlLGUucGxhY2Vob2xkZXIpfSxfY3JlYXRlVHJQbGFjZWhvbGRlcjpmdW5jdGlvbihlLGkpe3ZhciBzPXRoaXM7ZS5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24oKXt0KCI8dGQ+JiMxNjA7PC90ZD4iLHMuZG9jdW1lbnRbMF0pLmF0dHIoImNvbHNwYW4iLHQodGhpcykuYXR0cigiY29sc3BhbiIpfHwxKS5hcHBlbmRUbyhpKX0pfSxfY29udGFjdENvbnRhaW5lcnM6ZnVuY3Rpb24oZSl7dmFyIGkscyxuLG8sYSxyLGgsbCxjLHUsZD1udWxsLHA9bnVsbDtmb3IoaT10aGlzLmNvbnRhaW5lcnMubGVuZ3RoLTE7aT49MDtpLS0paWYoIXQuY29udGFpbnModGhpcy5jdXJyZW50SXRlbVswXSx0aGlzLmNvbnRhaW5lcnNbaV0uZWxlbWVudFswXSkpaWYodGhpcy5faW50ZXJzZWN0c1dpdGgodGhpcy5jb250YWluZXJzW2ldLmNvbnRhaW5lckNhY2hlKSl7aWYoZCYmdC5jb250YWlucyh0aGlzLmNvbnRhaW5lcnNbaV0uZWxlbWVudFswXSxkLmVsZW1lbnRbMF0pKWNvbnRpbnVlO2Q9dGhpcy5jb250YWluZXJzW2ldLHA9aX1lbHNlIHRoaXMuY29udGFpbmVyc1tpXS5jb250YWluZXJDYWNoZS5vdmVyJiYodGhpcy5jb250YWluZXJzW2ldLl90cmlnZ2VyKCJvdXQiLGUsdGhpcy5fdWlIYXNoKHRoaXMpKSx0aGlzLmNvbnRhaW5lcnNbaV0uY29udGFpbmVyQ2FjaGUub3Zlcj0wKTtpZihkKWlmKDE9PT10aGlzLmNvbnRhaW5lcnMubGVuZ3RoKXRoaXMuY29udGFpbmVyc1twXS5jb250YWluZXJDYWNoZS5vdmVyfHwodGhpcy5jb250YWluZXJzW3BdLl90cmlnZ2VyKCJvdmVyIixlLHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250YWluZXJzW3BdLmNvbnRhaW5lckNhY2hlLm92ZXI9MSk7ZWxzZXtmb3Iobj0xZTQsbz1udWxsLGM9ZC5mbG9hdGluZ3x8dGhpcy5faXNGbG9hdGluZyh0aGlzLmN1cnJlbnRJdGVtKSxhPWM/ImxlZnQiOiJ0b3AiLHI9Yz8id2lkdGgiOiJoZWlnaHQiLHU9Yz8icGFnZVgiOiJwYWdlWSIscz10aGlzLml0ZW1zLmxlbmd0aC0xO3M+PTA7cy0tKXQuY29udGFpbnModGhpcy5jb250YWluZXJzW3BdLmVsZW1lbnRbMF0sdGhpcy5pdGVtc1tzXS5pdGVtWzBdKSYmdGhpcy5pdGVtc1tzXS5pdGVtWzBdIT09dGhpcy5jdXJyZW50SXRlbVswXSYmKGg9dGhpcy5pdGVtc1tzXS5pdGVtLm9mZnNldCgpW2FdLGw9ITEsZVt1XS1oPnRoaXMuaXRlbXNbc11bcl0vMiYmKGw9ITApLG4+TWF0aC5hYnMoZVt1XS1oKSYmKG49TWF0aC5hYnMoZVt1XS1oKSxvPXRoaXMuaXRlbXNbc10sdGhpcy5kaXJlY3Rpb249bD8idXAiOiJkb3duIikpO2lmKCFvJiYhdGhpcy5vcHRpb25zLmRyb3BPbkVtcHR5KXJldHVybjtpZih0aGlzLmN1cnJlbnRDb250YWluZXI9PT10aGlzLmNvbnRhaW5lcnNbcF0pcmV0dXJuIHRoaXMuY3VycmVudENvbnRhaW5lci5jb250YWluZXJDYWNoZS5vdmVyfHwodGhpcy5jb250YWluZXJzW3BdLl90cmlnZ2VyKCJvdmVyIixlLHRoaXMuX3VpSGFzaCgpKSx0aGlzLmN1cnJlbnRDb250YWluZXIuY29udGFpbmVyQ2FjaGUub3Zlcj0xKSx2b2lkIDA7bz90aGlzLl9yZWFycmFuZ2UoZSxvLG51bGwsITApOnRoaXMuX3JlYXJyYW5nZShlLG51bGwsdGhpcy5jb250YWluZXJzW3BdLmVsZW1lbnQsITApLHRoaXMuX3RyaWdnZXIoImNoYW5nZSIsZSx0aGlzLl91aUhhc2goKSksdGhpcy5jb250YWluZXJzW3BdLl90cmlnZ2VyKCJjaGFuZ2UiLGUsdGhpcy5fdWlIYXNoKHRoaXMpKSx0aGlzLmN1cnJlbnRDb250YWluZXI9dGhpcy5jb250YWluZXJzW3BdLHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlci51cGRhdGUodGhpcy5jdXJyZW50Q29udGFpbmVyLHRoaXMucGxhY2Vob2xkZXIpLHRoaXMuY29udGFpbmVyc1twXS5fdHJpZ2dlcigib3ZlciIsZSx0aGlzLl91aUhhc2godGhpcykpLHRoaXMuY29udGFpbmVyc1twXS5jb250YWluZXJDYWNoZS5vdmVyPTF9fSxfY3JlYXRlSGVscGVyOmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXMub3B0aW9ucyxzPXQuaXNGdW5jdGlvbihpLmhlbHBlcik/dChpLmhlbHBlci5hcHBseSh0aGlzLmVsZW1lbnRbMF0sW2UsdGhpcy5jdXJyZW50SXRlbV0pKToiY2xvbmUiPT09aS5oZWxwZXI/dGhpcy5jdXJyZW50SXRlbS5jbG9uZSgpOnRoaXMuY3VycmVudEl0ZW07cmV0dXJuIHMucGFyZW50cygiYm9keSIpLmxlbmd0aHx8dCgicGFyZW50IiE9PWkuYXBwZW5kVG8/aS5hcHBlbmRUbzp0aGlzLmN1cnJlbnRJdGVtWzBdLnBhcmVudE5vZGUpWzBdLmFwcGVuZENoaWxkKHNbMF0pLHNbMF09PT10aGlzLmN1cnJlbnRJdGVtWzBdJiYodGhpcy5fc3RvcmVkQ1NTPXt3aWR0aDp0aGlzLmN1cnJlbnRJdGVtWzBdLnN0eWxlLndpZHRoLGhlaWdodDp0aGlzLmN1cnJlbnRJdGVtWzBdLnN0eWxlLmhlaWdodCxwb3NpdGlvbjp0aGlzLmN1cnJlbnRJdGVtLmNzcygicG9zaXRpb24iKSx0b3A6dGhpcy5jdXJyZW50SXRlbS5jc3MoInRvcCIpLGxlZnQ6dGhpcy5jdXJyZW50SXRlbS5jc3MoImxlZnQiKX0pLCghc1swXS5zdHlsZS53aWR0aHx8aS5mb3JjZUhlbHBlclNpemUpJiZzLndpZHRoKHRoaXMuY3VycmVudEl0ZW0ud2lkdGgoKSksKCFzWzBdLnN0eWxlLmhlaWdodHx8aS5mb3JjZUhlbHBlclNpemUpJiZzLmhlaWdodCh0aGlzLmN1cnJlbnRJdGVtLmhlaWdodCgpKSxzfSxfYWRqdXN0T2Zmc2V0RnJvbUhlbHBlcjpmdW5jdGlvbihlKXsic3RyaW5nIj09dHlwZW9mIGUmJihlPWUuc3BsaXQoIiAiKSksdC5pc0FycmF5KGUpJiYoZT17bGVmdDorZVswXSx0b3A6K2VbMV18fDB9KSwibGVmdCJpbiBlJiYodGhpcy5vZmZzZXQuY2xpY2subGVmdD1lLmxlZnQrdGhpcy5tYXJnaW5zLmxlZnQpLCJyaWdodCJpbiBlJiYodGhpcy5vZmZzZXQuY2xpY2subGVmdD10aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLWUucmlnaHQrdGhpcy5tYXJnaW5zLmxlZnQpLCJ0b3AiaW4gZSYmKHRoaXMub2Zmc2V0LmNsaWNrLnRvcD1lLnRvcCt0aGlzLm1hcmdpbnMudG9wKSwiYm90dG9tImluIGUmJih0aGlzLm9mZnNldC5jbGljay50b3A9dGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtZS5ib3R0b20rdGhpcy5tYXJnaW5zLnRvcCl9LF9nZXRQYXJlbnRPZmZzZXQ6ZnVuY3Rpb24oKXt0aGlzLm9mZnNldFBhcmVudD10aGlzLmhlbHBlci5vZmZzZXRQYXJlbnQoKTt2YXIgZT10aGlzLm9mZnNldFBhcmVudC5vZmZzZXQoKTtyZXR1cm4iYWJzb2x1dGUiPT09dGhpcy5jc3NQb3NpdGlvbiYmdGhpcy5zY3JvbGxQYXJlbnRbMF0hPT10aGlzLmRvY3VtZW50WzBdJiZ0LmNvbnRhaW5zKHRoaXMuc2Nyb2xsUGFyZW50WzBdLHRoaXMub2Zmc2V0UGFyZW50WzBdKSYmKGUubGVmdCs9dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpLGUudG9wKz10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSksKHRoaXMub2Zmc2V0UGFyZW50WzBdPT09dGhpcy5kb2N1bWVudFswXS5ib2R5fHx0aGlzLm9mZnNldFBhcmVudFswXS50YWdOYW1lJiYiaHRtbCI9PT10aGlzLm9mZnNldFBhcmVudFswXS50YWdOYW1lLnRvTG93ZXJDYXNlKCkmJnQudWkuaWUpJiYoZT17dG9wOjAsbGVmdDowfSkse3RvcDplLnRvcCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJUb3BXaWR0aCIpLDEwKXx8MCksbGVmdDplLmxlZnQrKHBhcnNlSW50KHRoaXMub2Zmc2V0UGFyZW50LmNzcygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKX19LF9nZXRSZWxhdGl2ZU9mZnNldDpmdW5jdGlvbigpe2lmKCJyZWxhdGl2ZSI9PT10aGlzLmNzc1Bvc2l0aW9uKXt2YXIgdD10aGlzLmN1cnJlbnRJdGVtLnBvc2l0aW9uKCk7cmV0dXJue3RvcDp0LnRvcC0ocGFyc2VJbnQodGhpcy5oZWxwZXIuY3NzKCJ0b3AiKSwxMCl8fDApK3RoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpLGxlZnQ6dC5sZWZ0LShwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoImxlZnQiKSwxMCl8fDApK3RoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKX19cmV0dXJue3RvcDowLGxlZnQ6MH19LF9jYWNoZU1hcmdpbnM6ZnVuY3Rpb24oKXt0aGlzLm1hcmdpbnM9e2xlZnQ6cGFyc2VJbnQodGhpcy5jdXJyZW50SXRlbS5jc3MoIm1hcmdpbkxlZnQiKSwxMCl8fDAsdG9wOnBhcnNlSW50KHRoaXMuY3VycmVudEl0ZW0uY3NzKCJtYXJnaW5Ub3AiKSwxMCl8fDB9fSxfY2FjaGVIZWxwZXJQcm9wb3J0aW9uczpmdW5jdGlvbigpe3RoaXMuaGVscGVyUHJvcG9ydGlvbnM9e3dpZHRoOnRoaXMuaGVscGVyLm91dGVyV2lkdGgoKSxoZWlnaHQ6dGhpcy5oZWxwZXIub3V0ZXJIZWlnaHQoKX19LF9zZXRDb250YWlubWVudDpmdW5jdGlvbigpe3ZhciBlLGkscyxuPXRoaXMub3B0aW9uczsicGFyZW50Ij09PW4uY29udGFpbm1lbnQmJihuLmNvbnRhaW5tZW50PXRoaXMuaGVscGVyWzBdLnBhcmVudE5vZGUpLCgiZG9jdW1lbnQiPT09bi5jb250YWlubWVudHx8IndpbmRvdyI9PT1uLmNvbnRhaW5tZW50KSYmKHRoaXMuY29udGFpbm1lbnQ9WzAtdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdC10aGlzLm9mZnNldC5wYXJlbnQubGVmdCwwLXRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wLCJkb2N1bWVudCI9PT1uLmNvbnRhaW5tZW50P3RoaXMuZG9jdW1lbnQud2lkdGgoKTp0aGlzLndpbmRvdy53aWR0aCgpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsKCJkb2N1bWVudCI9PT1uLmNvbnRhaW5tZW50P3RoaXMuZG9jdW1lbnQuaGVpZ2h0KCl8fGRvY3VtZW50LmJvZHkucGFyZW50Tm9kZS5zY3JvbGxIZWlnaHQ6dGhpcy53aW5kb3cuaGVpZ2h0KCl8fHRoaXMuZG9jdW1lbnRbMF0uYm9keS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF0pLC9eKGRvY3VtZW50fHdpbmRvd3xwYXJlbnQpJC8udGVzdChuLmNvbnRhaW5tZW50KXx8KGU9dChuLmNvbnRhaW5tZW50KVswXSxpPXQobi5jb250YWlubWVudCkub2Zmc2V0KCkscz0iaGlkZGVuIiE9PXQoZSkuY3NzKCJvdmVyZmxvdyIpLHRoaXMuY29udGFpbm1lbnQ9W2kubGVmdCsocGFyc2VJbnQodChlKS5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KHQoZSkuY3NzKCJwYWRkaW5nTGVmdCIpLDEwKXx8MCktdGhpcy5tYXJnaW5zLmxlZnQsaS50b3ArKHBhcnNlSW50KHQoZSkuY3NzKCJib3JkZXJUb3BXaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KHQoZSkuY3NzKCJwYWRkaW5nVG9wIiksMTApfHwwKS10aGlzLm1hcmdpbnMudG9wLGkubGVmdCsocz9NYXRoLm1heChlLnNjcm9sbFdpZHRoLGUub2Zmc2V0V2lkdGgpOmUub2Zmc2V0V2lkdGgpLShwYXJzZUludCh0KGUpLmNzcygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQodChlKS5jc3MoInBhZGRpbmdSaWdodCIpLDEwKXx8MCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdCxpLnRvcCsocz9NYXRoLm1heChlLnNjcm9sbEhlaWdodCxlLm9mZnNldEhlaWdodCk6ZS5vZmZzZXRIZWlnaHQpLShwYXJzZUludCh0KGUpLmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8fDApLShwYXJzZUludCh0KGUpLmNzcygicGFkZGluZ0JvdHRvbSIpLDEwKXx8MCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF0pfSxfY29udmVydFBvc2l0aW9uVG86ZnVuY3Rpb24oZSxpKXtpfHwoaT10aGlzLnBvc2l0aW9uKTt2YXIgcz0iYWJzb2x1dGUiPT09ZT8xOi0xLG49ImFic29sdXRlIiE9PXRoaXMuY3NzUG9zaXRpb258fHRoaXMuc2Nyb2xsUGFyZW50WzBdIT09dGhpcy5kb2N1bWVudFswXSYmdC5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBhcmVudFswXSk/dGhpcy5zY3JvbGxQYXJlbnQ6dGhpcy5vZmZzZXRQYXJlbnQsbz0vKGh0bWx8Ym9keSkvaS50ZXN0KG5bMF0udGFnTmFtZSk7cmV0dXJue3RvcDppLnRvcCt0aGlzLm9mZnNldC5yZWxhdGl2ZS50b3Aqcyt0aGlzLm9mZnNldC5wYXJlbnQudG9wKnMtKCJmaXhlZCI9PT10aGlzLmNzc1Bvc2l0aW9uPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKTpvPzA6bi5zY3JvbGxUb3AoKSkqcyxsZWZ0OmkubGVmdCt0aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0KnMrdGhpcy5vZmZzZXQucGFyZW50LmxlZnQqcy0oImZpeGVkIj09PXRoaXMuY3NzUG9zaXRpb24/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKTpvPzA6bi5zY3JvbGxMZWZ0KCkpKnN9fSxfZ2VuZXJhdGVQb3NpdGlvbjpmdW5jdGlvbihlKXt2YXIgaSxzLG49dGhpcy5vcHRpb25zLG89ZS5wYWdlWCxhPWUucGFnZVkscj0iYWJzb2x1dGUiIT09dGhpcy5jc3NQb3NpdGlvbnx8dGhpcy5zY3JvbGxQYXJlbnRbMF0hPT10aGlzLmRvY3VtZW50WzBdJiZ0LmNvbnRhaW5zKHRoaXMuc2Nyb2xsUGFyZW50WzBdLHRoaXMub2Zmc2V0UGFyZW50WzBdKT90aGlzLnNjcm9sbFBhcmVudDp0aGlzLm9mZnNldFBhcmVudCxoPS8oaHRtbHxib2R5KS9pLnRlc3QoclswXS50YWdOYW1lKTtyZXR1cm4icmVsYXRpdmUiIT09dGhpcy5jc3NQb3NpdGlvbnx8dGhpcy5zY3JvbGxQYXJlbnRbMF0hPT10aGlzLmRvY3VtZW50WzBdJiZ0aGlzLnNjcm9sbFBhcmVudFswXSE9PXRoaXMub2Zmc2V0UGFyZW50WzBdfHwodGhpcy5vZmZzZXQucmVsYXRpdmU9dGhpcy5fZ2V0UmVsYXRpdmVPZmZzZXQoKSksdGhpcy5vcmlnaW5hbFBvc2l0aW9uJiYodGhpcy5jb250YWlubWVudCYmKGUucGFnZVgtdGhpcy5vZmZzZXQuY2xpY2subGVmdDx0aGlzLmNvbnRhaW5tZW50WzBdJiYobz10aGlzLmNvbnRhaW5tZW50WzBdK3RoaXMub2Zmc2V0LmNsaWNrLmxlZnQpLGUucGFnZVktdGhpcy5vZmZzZXQuY2xpY2sudG9wPHRoaXMuY29udGFpbm1lbnRbMV0mJihhPXRoaXMuY29udGFpbm1lbnRbMV0rdGhpcy5vZmZzZXQuY2xpY2sudG9wKSxlLnBhZ2VYLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+dGhpcy5jb250YWlubWVudFsyXSYmKG89dGhpcy5jb250YWlubWVudFsyXSt0aGlzLm9mZnNldC5jbGljay5sZWZ0KSxlLnBhZ2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcD50aGlzLmNvbnRhaW5tZW50WzNdJiYoYT10aGlzLmNvbnRhaW5tZW50WzNdK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCkpLG4uZ3JpZCYmKGk9dGhpcy5vcmlnaW5hbFBhZ2VZK01hdGgucm91bmQoKGEtdGhpcy5vcmlnaW5hbFBhZ2VZKS9uLmdyaWRbMV0pKm4uZ3JpZFsxXSxhPXRoaXMuY29udGFpbm1lbnQ/aS10aGlzLm9mZnNldC5jbGljay50b3A+PXRoaXMuY29udGFpbm1lbnRbMV0mJmktdGhpcy5vZmZzZXQuY2xpY2sudG9wPD10aGlzLmNvbnRhaW5tZW50WzNdP2k6aS10aGlzLm9mZnNldC5jbGljay50b3A+PXRoaXMuY29udGFpbm1lbnRbMV0/aS1uLmdyaWRbMV06aStuLmdyaWRbMV06aSxzPXRoaXMub3JpZ2luYWxQYWdlWCtNYXRoLnJvdW5kKChvLXRoaXMub3JpZ2luYWxQYWdlWCkvbi5ncmlkWzBdKSpuLmdyaWRbMF0sbz10aGlzLmNvbnRhaW5tZW50P3MtdGhpcy5vZmZzZXQuY2xpY2subGVmdD49dGhpcy5jb250YWlubWVudFswXSYmcy10aGlzLm9mZnNldC5jbGljay5sZWZ0PD10aGlzLmNvbnRhaW5tZW50WzJdP3M6cy10aGlzLm9mZnNldC5jbGljay5sZWZ0Pj10aGlzLmNvbnRhaW5tZW50WzBdP3Mtbi5ncmlkWzBdOnMrbi5ncmlkWzBdOnMpKSx7dG9wOmEtdGhpcy5vZmZzZXQuY2xpY2sudG9wLXRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wKygiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCk6aD8wOnIuc2Nyb2xsVG9wKCkpLGxlZnQ6by10aGlzLm9mZnNldC5jbGljay5sZWZ0LXRoaXMub2Zmc2V0LnJlbGF0aXZlLmxlZnQtdGhpcy5vZmZzZXQucGFyZW50LmxlZnQrKCJmaXhlZCI9PT10aGlzLmNzc1Bvc2l0aW9uPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCk6aD8wOnIuc2Nyb2xsTGVmdCgpKX19LF9yZWFycmFuZ2U6ZnVuY3Rpb24odCxlLGkscyl7aT9pWzBdLmFwcGVuZENoaWxkKHRoaXMucGxhY2Vob2xkZXJbMF0pOmUuaXRlbVswXS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLnBsYWNlaG9sZGVyWzBdLCJkb3duIj09PXRoaXMuZGlyZWN0aW9uP2UuaXRlbVswXTplLml0ZW1bMF0ubmV4dFNpYmxpbmcpLHRoaXMuY291bnRlcj10aGlzLmNvdW50ZXI/Kyt0aGlzLmNvdW50ZXI6MTt2YXIgbj10aGlzLmNvdW50ZXI7dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXtuPT09dGhpcy5jb3VudGVyJiZ0aGlzLnJlZnJlc2hQb3NpdGlvbnMoIXMpfSl9LF9jbGVhcjpmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIGkodCxlLGkpe3JldHVybiBmdW5jdGlvbihzKXtpLl90cmlnZ2VyKHQscyxlLl91aUhhc2goZSkpfX10aGlzLnJldmVydGluZz0hMTt2YXIgcyxuPVtdO2lmKCF0aGlzLl9ub0ZpbmFsU29ydCYmdGhpcy5jdXJyZW50SXRlbS5wYXJlbnQoKS5sZW5ndGgmJnRoaXMucGxhY2Vob2xkZXIuYmVmb3JlKHRoaXMuY3VycmVudEl0ZW0pLHRoaXMuX25vRmluYWxTb3J0PW51bGwsdGhpcy5oZWxwZXJbMF09PT10aGlzLmN1cnJlbnRJdGVtWzBdKXtmb3IocyBpbiB0aGlzLl9zdG9yZWRDU1MpKCJhdXRvIj09PXRoaXMuX3N0b3JlZENTU1tzXXx8InN0YXRpYyI9PT10aGlzLl9zdG9yZWRDU1Nbc10pJiYodGhpcy5fc3RvcmVkQ1NTW3NdPSIiKTt0aGlzLmN1cnJlbnRJdGVtLmNzcyh0aGlzLl9zdG9yZWRDU1MpLHRoaXMuX3JlbW92ZUNsYXNzKHRoaXMuY3VycmVudEl0ZW0sInVpLXNvcnRhYmxlLWhlbHBlciIpfWVsc2UgdGhpcy5jdXJyZW50SXRlbS5zaG93KCk7Zm9yKHRoaXMuZnJvbU91dHNpZGUmJiFlJiZuLnB1c2goZnVuY3Rpb24odCl7dGhpcy5fdHJpZ2dlcigicmVjZWl2ZSIsdCx0aGlzLl91aUhhc2godGhpcy5mcm9tT3V0c2lkZSkpfSksIXRoaXMuZnJvbU91dHNpZGUmJnRoaXMuZG9tUG9zaXRpb24ucHJldj09PXRoaXMuY3VycmVudEl0ZW0ucHJldigpLm5vdCgiLnVpLXNvcnRhYmxlLWhlbHBlciIpWzBdJiZ0aGlzLmRvbVBvc2l0aW9uLnBhcmVudD09PXRoaXMuY3VycmVudEl0ZW0ucGFyZW50KClbMF18fGV8fG4ucHVzaChmdW5jdGlvbih0KXt0aGlzLl90cmlnZ2VyKCJ1cGRhdGUiLHQsdGhpcy5fdWlIYXNoKCkpfSksdGhpcyE9PXRoaXMuY3VycmVudENvbnRhaW5lciYmKGV8fChuLnB1c2goZnVuY3Rpb24odCl7dGhpcy5fdHJpZ2dlcigicmVtb3ZlIix0LHRoaXMuX3VpSGFzaCgpKX0pLG4ucHVzaChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dC5fdHJpZ2dlcigicmVjZWl2ZSIsZSx0aGlzLl91aUhhc2godGhpcykpfX0uY2FsbCh0aGlzLHRoaXMuY3VycmVudENvbnRhaW5lcikpLG4ucHVzaChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dC5fdHJpZ2dlcigidXBkYXRlIixlLHRoaXMuX3VpSGFzaCh0aGlzKSl9fS5jYWxsKHRoaXMsdGhpcy5jdXJyZW50Q29udGFpbmVyKSkpKSxzPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtzPj0wO3MtLSllfHxuLnB1c2goaSgiZGVhY3RpdmF0ZSIsdGhpcyx0aGlzLmNvbnRhaW5lcnNbc10pKSx0aGlzLmNvbnRhaW5lcnNbc10uY29udGFpbmVyQ2FjaGUub3ZlciYmKG4ucHVzaChpKCJvdXQiLHRoaXMsdGhpcy5jb250YWluZXJzW3NdKSksdGhpcy5jb250YWluZXJzW3NdLmNvbnRhaW5lckNhY2hlLm92ZXI9MCk7aWYodGhpcy5zdG9yZWRDdXJzb3ImJih0aGlzLmRvY3VtZW50LmZpbmQoImJvZHkiKS5jc3MoImN1cnNvciIsdGhpcy5zdG9yZWRDdXJzb3IpLHRoaXMuc3RvcmVkU3R5bGVzaGVldC5yZW1vdmUoKSksdGhpcy5fc3RvcmVkT3BhY2l0eSYmdGhpcy5oZWxwZXIuY3NzKCJvcGFjaXR5Iix0aGlzLl9zdG9yZWRPcGFjaXR5KSx0aGlzLl9zdG9yZWRaSW5kZXgmJnRoaXMuaGVscGVyLmNzcygiekluZGV4IiwiYXV0byI9PT10aGlzLl9zdG9yZWRaSW5kZXg/IiI6dGhpcy5fc3RvcmVkWkluZGV4KSx0aGlzLmRyYWdnaW5nPSExLGV8fHRoaXMuX3RyaWdnZXIoImJlZm9yZVN0b3AiLHQsdGhpcy5fdWlIYXNoKCkpLHRoaXMucGxhY2Vob2xkZXJbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKSx0aGlzLmNhbmNlbEhlbHBlclJlbW92YWx8fCh0aGlzLmhlbHBlclswXSE9PXRoaXMuY3VycmVudEl0ZW1bMF0mJnRoaXMuaGVscGVyLnJlbW92ZSgpLHRoaXMuaGVscGVyPW51bGwpLCFlKXtmb3Iocz0wO24ubGVuZ3RoPnM7cysrKW5bc10uY2FsbCh0aGlzLHQpOwp0aGlzLl90cmlnZ2VyKCJzdG9wIix0LHRoaXMuX3VpSGFzaCgpKX1yZXR1cm4gdGhpcy5mcm9tT3V0c2lkZT0hMSwhdGhpcy5jYW5jZWxIZWxwZXJSZW1vdmFsfSxfdHJpZ2dlcjpmdW5jdGlvbigpe3QuV2lkZ2V0LnByb3RvdHlwZS5fdHJpZ2dlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk9PT0hMSYmdGhpcy5jYW5jZWwoKX0sX3VpSGFzaDpmdW5jdGlvbihlKXt2YXIgaT1lfHx0aGlzO3JldHVybntoZWxwZXI6aS5oZWxwZXIscGxhY2Vob2xkZXI6aS5wbGFjZWhvbGRlcnx8dChbXSkscG9zaXRpb246aS5wb3NpdGlvbixvcmlnaW5hbFBvc2l0aW9uOmkub3JpZ2luYWxQb3NpdGlvbixvZmZzZXQ6aS5wb3NpdGlvbkFicyxpdGVtOmkuY3VycmVudEl0ZW0sc2VuZGVyOmU/ZS5lbGVtZW50Om51bGx9fX0pLHQud2lkZ2V0KCJ1aS5zcGlubmVyIix7dmVyc2lvbjoiMS4xMi4wLXJjLjIiLGRlZmF1bHRFbGVtZW50OiI8aW5wdXQ+Iix3aWRnZXRFdmVudFByZWZpeDoic3BpbiIsb3B0aW9uczp7Y2xhc3Nlczp7InVpLXNwaW5uZXIiOiJ1aS1jb3JuZXItYWxsIiwidWktc3Bpbm5lci1kb3duIjoidWktY29ybmVyLWJyIiwidWktc3Bpbm5lci11cCI6InVpLWNvcm5lci10ciJ9LGN1bHR1cmU6bnVsbCxpY29uczp7ZG93bjoidWktaWNvbi10cmlhbmdsZS0xLXMiLHVwOiJ1aS1pY29uLXRyaWFuZ2xlLTEtbiJ9LGluY3JlbWVudGFsOiEwLG1heDpudWxsLG1pbjpudWxsLG51bWJlckZvcm1hdDpudWxsLHBhZ2U6MTAsc3RlcDoxLGNoYW5nZTpudWxsLHNwaW46bnVsbCxzdGFydDpudWxsLHN0b3A6bnVsbH0sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuX3NldE9wdGlvbigibWF4Iix0aGlzLm9wdGlvbnMubWF4KSx0aGlzLl9zZXRPcHRpb24oIm1pbiIsdGhpcy5vcHRpb25zLm1pbiksdGhpcy5fc2V0T3B0aW9uKCJzdGVwIix0aGlzLm9wdGlvbnMuc3RlcCksIiIhPT10aGlzLnZhbHVlKCkmJnRoaXMuX3ZhbHVlKHRoaXMuZWxlbWVudC52YWwoKSwhMCksdGhpcy5fZHJhdygpLHRoaXMuX29uKHRoaXMuX2V2ZW50cyksdGhpcy5fcmVmcmVzaCgpLHRoaXMuX29uKHRoaXMud2luZG93LHtiZWZvcmV1bmxvYWQ6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cigiYXV0b2NvbXBsZXRlIil9fSl9LF9nZXRDcmVhdGVPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fc3VwZXIoKSxpPXRoaXMuZWxlbWVudDtyZXR1cm4gdC5lYWNoKFsibWluIiwibWF4Iiwic3RlcCJdLGZ1bmN0aW9uKHQscyl7dmFyIG49aS5hdHRyKHMpO251bGwhPW4mJm4ubGVuZ3RoJiYoZVtzXT1uKX0pLGV9LF9ldmVudHM6e2tleWRvd246ZnVuY3Rpb24odCl7dGhpcy5fc3RhcnQodCkmJnRoaXMuX2tleWRvd24odCkmJnQucHJldmVudERlZmF1bHQoKX0sa2V5dXA6Il9zdG9wIixmb2N1czpmdW5jdGlvbigpe3RoaXMucHJldmlvdXM9dGhpcy5lbGVtZW50LnZhbCgpfSxibHVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNhbmNlbEJsdXI/KGRlbGV0ZSB0aGlzLmNhbmNlbEJsdXIsdm9pZCAwKToodGhpcy5fc3RvcCgpLHRoaXMuX3JlZnJlc2goKSx0aGlzLnByZXZpb3VzIT09dGhpcy5lbGVtZW50LnZhbCgpJiZ0aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLHQpLHZvaWQgMCl9LG1vdXNld2hlZWw6ZnVuY3Rpb24odCxlKXtpZihlKXtpZighdGhpcy5zcGlubmluZyYmIXRoaXMuX3N0YXJ0KHQpKXJldHVybiExO3RoaXMuX3NwaW4oKGU+MD8xOi0xKSp0aGlzLm9wdGlvbnMuc3RlcCx0KSxjbGVhclRpbWVvdXQodGhpcy5tb3VzZXdoZWVsVGltZXIpLHRoaXMubW91c2V3aGVlbFRpbWVyPXRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dGhpcy5zcGlubmluZyYmdGhpcy5fc3RvcCh0KX0sMTAwKSx0LnByZXZlbnREZWZhdWx0KCl9fSwibW91c2Vkb3duIC51aS1zcGlubmVyLWJ1dHRvbiI6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gaSgpe3ZhciBlPXRoaXMuZWxlbWVudFswXT09PXQudWkuc2FmZUFjdGl2ZUVsZW1lbnQodGhpcy5kb2N1bWVudFswXSk7ZXx8KHRoaXMuZWxlbWVudC50cmlnZ2VyKCJmb2N1cyIpLHRoaXMucHJldmlvdXM9cyx0aGlzLl9kZWxheShmdW5jdGlvbigpe3RoaXMucHJldmlvdXM9c30pKX12YXIgcztzPXRoaXMuZWxlbWVudFswXT09PXQudWkuc2FmZUFjdGl2ZUVsZW1lbnQodGhpcy5kb2N1bWVudFswXSk/dGhpcy5wcmV2aW91czp0aGlzLmVsZW1lbnQudmFsKCksZS5wcmV2ZW50RGVmYXVsdCgpLGkuY2FsbCh0aGlzKSx0aGlzLmNhbmNlbEJsdXI9ITAsdGhpcy5fZGVsYXkoZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5jYW5jZWxCbHVyLGkuY2FsbCh0aGlzKX0pLHRoaXMuX3N0YXJ0KGUpIT09ITEmJnRoaXMuX3JlcGVhdChudWxsLHQoZS5jdXJyZW50VGFyZ2V0KS5oYXNDbGFzcygidWktc3Bpbm5lci11cCIpPzE6LTEsZSl9LCJtb3VzZXVwIC51aS1zcGlubmVyLWJ1dHRvbiI6Il9zdG9wIiwibW91c2VlbnRlciAudWktc3Bpbm5lci1idXR0b24iOmZ1bmN0aW9uKGUpe3JldHVybiB0KGUuY3VycmVudFRhcmdldCkuaGFzQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpP3RoaXMuX3N0YXJ0KGUpPT09ITE/ITE6KHRoaXMuX3JlcGVhdChudWxsLHQoZS5jdXJyZW50VGFyZ2V0KS5oYXNDbGFzcygidWktc3Bpbm5lci11cCIpPzE6LTEsZSksdm9pZCAwKTp2b2lkIDB9LCJtb3VzZWxlYXZlIC51aS1zcGlubmVyLWJ1dHRvbiI6Il9zdG9wIn0sX2VuaGFuY2U6ZnVuY3Rpb24oKXt0aGlzLnVpU3Bpbm5lcj10aGlzLmVsZW1lbnQuYXR0cigiYXV0b2NvbXBsZXRlIiwib2ZmIikud3JhcCgiPHNwYW4+IikucGFyZW50KCkuYXBwZW5kKCI8YT48L2E+PGE+PC9hPiIpfSxfZHJhdzpmdW5jdGlvbigpe3RoaXMuX2VuaGFuY2UoKSx0aGlzLl9hZGRDbGFzcyh0aGlzLnVpU3Bpbm5lciwidWktc3Bpbm5lciIsInVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCIpLHRoaXMuX2FkZENsYXNzKCJ1aS1zcGlubmVyLWlucHV0IiksdGhpcy5lbGVtZW50LmF0dHIoInJvbGUiLCJzcGluYnV0dG9uIiksdGhpcy5idXR0b25zPXRoaXMudWlTcGlubmVyLmNoaWxkcmVuKCJhIikuYXR0cigidGFiSW5kZXgiLC0xKS5hdHRyKCJhcmlhLWhpZGRlbiIsITApLmJ1dHRvbih7Y2xhc3Nlczp7InVpLWJ1dHRvbiI6IiJ9fSksdGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5idXR0b25zLCJ1aS1jb3JuZXItYWxsIiksdGhpcy5fYWRkQ2xhc3ModGhpcy5idXR0b25zLmZpcnN0KCksInVpLXNwaW5uZXItYnV0dG9uIHVpLXNwaW5uZXItdXAiKSx0aGlzLl9hZGRDbGFzcyh0aGlzLmJ1dHRvbnMubGFzdCgpLCJ1aS1zcGlubmVyLWJ1dHRvbiB1aS1zcGlubmVyLWRvd24iKSx0aGlzLmJ1dHRvbnMuZmlyc3QoKS5idXR0b24oe2ljb246dGhpcy5vcHRpb25zLmljb25zLnVwLHNob3dMYWJlbDohMX0pLHRoaXMuYnV0dG9ucy5sYXN0KCkuYnV0dG9uKHtpY29uOnRoaXMub3B0aW9ucy5pY29ucy5kb3duLHNob3dMYWJlbDohMX0pLHRoaXMuYnV0dG9ucy5oZWlnaHQoKT5NYXRoLmNlaWwoLjUqdGhpcy51aVNwaW5uZXIuaGVpZ2h0KCkpJiZ0aGlzLnVpU3Bpbm5lci5oZWlnaHQoKT4wJiZ0aGlzLnVpU3Bpbm5lci5oZWlnaHQodGhpcy51aVNwaW5uZXIuaGVpZ2h0KCkpfSxfa2V5ZG93bjpmdW5jdGlvbihlKXt2YXIgaT10aGlzLm9wdGlvbnMscz10LnVpLmtleUNvZGU7c3dpdGNoKGUua2V5Q29kZSl7Y2FzZSBzLlVQOnJldHVybiB0aGlzLl9yZXBlYXQobnVsbCwxLGUpLCEwO2Nhc2Ugcy5ET1dOOnJldHVybiB0aGlzLl9yZXBlYXQobnVsbCwtMSxlKSwhMDtjYXNlIHMuUEFHRV9VUDpyZXR1cm4gdGhpcy5fcmVwZWF0KG51bGwsaS5wYWdlLGUpLCEwO2Nhc2Ugcy5QQUdFX0RPV046cmV0dXJuIHRoaXMuX3JlcGVhdChudWxsLC1pLnBhZ2UsZSksITB9cmV0dXJuITF9LF9zdGFydDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zcGlubmluZ3x8dGhpcy5fdHJpZ2dlcigic3RhcnQiLHQpIT09ITE/KHRoaXMuY291bnRlcnx8KHRoaXMuY291bnRlcj0xKSx0aGlzLnNwaW5uaW5nPSEwLCEwKTohMX0sX3JlcGVhdDpmdW5jdGlvbih0LGUsaSl7dD10fHw1MDAsY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpLHRoaXMudGltZXI9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLl9yZXBlYXQoNDAsZSxpKX0sdCksdGhpcy5fc3BpbihlKnRoaXMub3B0aW9ucy5zdGVwLGkpfSxfc3BpbjpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudmFsdWUoKXx8MDt0aGlzLmNvdW50ZXJ8fCh0aGlzLmNvdW50ZXI9MSksaT10aGlzLl9hZGp1c3RWYWx1ZShpK3QqdGhpcy5faW5jcmVtZW50KHRoaXMuY291bnRlcikpLHRoaXMuc3Bpbm5pbmcmJnRoaXMuX3RyaWdnZXIoInNwaW4iLGUse3ZhbHVlOml9KT09PSExfHwodGhpcy5fdmFsdWUoaSksdGhpcy5jb3VudGVyKyspfSxfaW5jcmVtZW50OmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXMub3B0aW9ucy5pbmNyZW1lbnRhbDtyZXR1cm4gaT90LmlzRnVuY3Rpb24oaSk/aShlKTpNYXRoLmZsb29yKGUqZSplLzVlNC1lKmUvNTAwKzE3KmUvMjAwKzEpOjF9LF9wcmVjaXNpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9wcmVjaXNpb25PZih0aGlzLm9wdGlvbnMuc3RlcCk7cmV0dXJuIG51bGwhPT10aGlzLm9wdGlvbnMubWluJiYodD1NYXRoLm1heCh0LHRoaXMuX3ByZWNpc2lvbk9mKHRoaXMub3B0aW9ucy5taW4pKSksdH0sX3ByZWNpc2lvbk9mOmZ1bmN0aW9uKHQpe3ZhciBlPSIiK3QsaT1lLmluZGV4T2YoIi4iKTtyZXR1cm4tMT09PWk/MDplLmxlbmd0aC1pLTF9LF9hZGp1c3RWYWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpLHM9dGhpcy5vcHRpb25zO3JldHVybiBlPW51bGwhPT1zLm1pbj9zLm1pbjowLGk9dC1lLGk9TWF0aC5yb3VuZChpL3Muc3RlcCkqcy5zdGVwLHQ9ZStpLHQ9cGFyc2VGbG9hdCh0LnRvRml4ZWQodGhpcy5fcHJlY2lzaW9uKCkpKSxudWxsIT09cy5tYXgmJnQ+cy5tYXg/cy5tYXg6bnVsbCE9PXMubWluJiZzLm1pbj50P3MubWluOnR9LF9zdG9wOmZ1bmN0aW9uKHQpe3RoaXMuc3Bpbm5pbmcmJihjbGVhclRpbWVvdXQodGhpcy50aW1lciksY2xlYXJUaW1lb3V0KHRoaXMubW91c2V3aGVlbFRpbWVyKSx0aGlzLmNvdW50ZXI9MCx0aGlzLnNwaW5uaW5nPSExLHRoaXMuX3RyaWdnZXIoInN0b3AiLHQpKX0sX3NldE9wdGlvbjpmdW5jdGlvbih0LGUpe3ZhciBpLHMsbjtyZXR1cm4iY3VsdHVyZSI9PT10fHwibnVtYmVyRm9ybWF0Ij09PXQ/KGk9dGhpcy5fcGFyc2UodGhpcy5lbGVtZW50LnZhbCgpKSx0aGlzLm9wdGlvbnNbdF09ZSx0aGlzLmVsZW1lbnQudmFsKHRoaXMuX2Zvcm1hdChpKSksdm9pZCAwKTooKCJtYXgiPT09dHx8Im1pbiI9PT10fHwic3RlcCI9PT10KSYmInN0cmluZyI9PXR5cGVvZiBlJiYoZT10aGlzLl9wYXJzZShlKSksImljb25zIj09PXQmJihzPXRoaXMuYnV0dG9ucy5maXJzdCgpLmZpbmQoIi51aS1pY29uIiksdGhpcy5fcmVtb3ZlQ2xhc3MocyxudWxsLHRoaXMub3B0aW9ucy5pY29ucy51cCksdGhpcy5fYWRkQ2xhc3MocyxudWxsLGUudXApLG49dGhpcy5idXR0b25zLmxhc3QoKS5maW5kKCIudWktaWNvbiIpLHRoaXMuX3JlbW92ZUNsYXNzKG4sbnVsbCx0aGlzLm9wdGlvbnMuaWNvbnMuZG93biksdGhpcy5fYWRkQ2xhc3MobixudWxsLGUuZG93bikpLHRoaXMuX3N1cGVyKHQsZSksdm9pZCAwKX0sX3NldE9wdGlvbkRpc2FibGVkOmZ1bmN0aW9uKHQpe3RoaXMuX3N1cGVyKHQpLHRoaXMuX3RvZ2dsZUNsYXNzKHRoaXMudWlTcGlubmVyLG51bGwsInVpLXN0YXRlLWRpc2FibGVkIiwhIXQpLHRoaXMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIsISF0KSx0aGlzLmJ1dHRvbnMuYnV0dG9uKHQ/ImRpc2FibGUiOiJlbmFibGUiKX0sX3NldE9wdGlvbnM6cihmdW5jdGlvbih0KXt0aGlzLl9zdXBlcih0KX0pLF9wYXJzZTpmdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJiIiIT09dCYmKHQ9d2luZG93Lkdsb2JhbGl6ZSYmdGhpcy5vcHRpb25zLm51bWJlckZvcm1hdD9HbG9iYWxpemUucGFyc2VGbG9hdCh0LDEwLHRoaXMub3B0aW9ucy5jdWx0dXJlKTordCksIiI9PT10fHxpc05hTih0KT9udWxsOnR9LF9mb3JtYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIiI9PT10PyIiOndpbmRvdy5HbG9iYWxpemUmJnRoaXMub3B0aW9ucy5udW1iZXJGb3JtYXQ/R2xvYmFsaXplLmZvcm1hdCh0LHRoaXMub3B0aW9ucy5udW1iZXJGb3JtYXQsdGhpcy5vcHRpb25zLmN1bHR1cmUpOnR9LF9yZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LmF0dHIoeyJhcmlhLXZhbHVlbWluIjp0aGlzLm9wdGlvbnMubWluLCJhcmlhLXZhbHVlbWF4Ijp0aGlzLm9wdGlvbnMubWF4LCJhcmlhLXZhbHVlbm93Ijp0aGlzLl9wYXJzZSh0aGlzLmVsZW1lbnQudmFsKCkpfSl9LGlzVmFsaWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnZhbHVlKCk7cmV0dXJuIG51bGw9PT10PyExOnQ9PT10aGlzLl9hZGp1c3RWYWx1ZSh0KX0sX3ZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk7IiIhPT10JiYoaT10aGlzLl9wYXJzZSh0KSxudWxsIT09aSYmKGV8fChpPXRoaXMuX2FkanVzdFZhbHVlKGkpKSx0PXRoaXMuX2Zvcm1hdChpKSkpLHRoaXMuZWxlbWVudC52YWwodCksdGhpcy5fcmVmcmVzaCgpfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIsITEpLnJlbW92ZUF0dHIoImF1dG9jb21wbGV0ZSByb2xlIGFyaWEtdmFsdWVtaW4gYXJpYS12YWx1ZW1heCBhcmlhLXZhbHVlbm93IiksdGhpcy51aVNwaW5uZXIucmVwbGFjZVdpdGgodGhpcy5lbGVtZW50KX0sc3RlcFVwOnIoZnVuY3Rpb24odCl7dGhpcy5fc3RlcFVwKHQpfSksX3N0ZXBVcDpmdW5jdGlvbih0KXt0aGlzLl9zdGFydCgpJiYodGhpcy5fc3BpbigodHx8MSkqdGhpcy5vcHRpb25zLnN0ZXApLHRoaXMuX3N0b3AoKSl9LHN0ZXBEb3duOnIoZnVuY3Rpb24odCl7dGhpcy5fc3RlcERvd24odCl9KSxfc3RlcERvd246ZnVuY3Rpb24odCl7dGhpcy5fc3RhcnQoKSYmKHRoaXMuX3NwaW4oKHR8fDEpKi10aGlzLm9wdGlvbnMuc3RlcCksdGhpcy5fc3RvcCgpKX0scGFnZVVwOnIoZnVuY3Rpb24odCl7dGhpcy5fc3RlcFVwKCh0fHwxKSp0aGlzLm9wdGlvbnMucGFnZSl9KSxwYWdlRG93bjpyKGZ1bmN0aW9uKHQpe3RoaXMuX3N0ZXBEb3duKCh0fHwxKSp0aGlzLm9wdGlvbnMucGFnZSl9KSx2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocih0aGlzLl92YWx1ZSkuY2FsbCh0aGlzLHQpLHZvaWQgMCk6dGhpcy5fcGFyc2UodGhpcy5lbGVtZW50LnZhbCgpKX0sd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudWlTcGlubmVyfX0pLHQudWlCYWNrQ29tcGF0IT09ITEmJnQud2lkZ2V0KCJ1aS5zcGlubmVyIix0LnVpLnNwaW5uZXIse19lbmhhbmNlOmZ1bmN0aW9uKCl7dGhpcy51aVNwaW5uZXI9dGhpcy5lbGVtZW50LmF0dHIoImF1dG9jb21wbGV0ZSIsIm9mZiIpLndyYXAodGhpcy5fdWlTcGlubmVySHRtbCgpKS5wYXJlbnQoKS5hcHBlbmQodGhpcy5fYnV0dG9uSHRtbCgpKX0sX3VpU3Bpbm5lckh0bWw6ZnVuY3Rpb24oKXtyZXR1cm4iPHNwYW4+In0sX2J1dHRvbkh0bWw6ZnVuY3Rpb24oKXtyZXR1cm4iPGE+PC9hPjxhPjwvYT4ifX0pLHQudWkuc3Bpbm5lcix0LndpZGdldCgidWkudGFicyIse3ZlcnNpb246IjEuMTIuMC1yYy4yIixkZWxheTozMDAsb3B0aW9uczp7YWN0aXZlOm51bGwsY2xhc3Nlczp7InVpLXRhYnMiOiJ1aS1jb3JuZXItYWxsIiwidWktdGFicy1uYXYiOiJ1aS1jb3JuZXItYWxsIiwidWktdGFiIjoidWktY29ybmVyLXRvcCIsInVpLXRhYnMtcGFuZWwiOiJ1aS1jb3JuZXItYm90dG9tIn0sY29sbGFwc2libGU6ITEsZXZlbnQ6ImNsaWNrIixoZWlnaHRTdHlsZToiY29udGVudCIsaGlkZTpudWxsLHNob3c6bnVsbCxhY3RpdmF0ZTpudWxsLGJlZm9yZUFjdGl2YXRlOm51bGwsYmVmb3JlTG9hZDpudWxsLGxvYWQ6bnVsbH0sX2lzTG9jYWw6ZnVuY3Rpb24oKXt2YXIgdD0vIy4qJC87cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBpLHM7aT1lLmhyZWYucmVwbGFjZSh0LCIiKSxzPWxvY2F0aW9uLmhyZWYucmVwbGFjZSh0LCIiKTt0cnl7aT1kZWNvZGVVUklDb21wb25lbnQoaSl9Y2F0Y2gobil7fXRyeXtzPWRlY29kZVVSSUNvbXBvbmVudChzKX1jYXRjaChuKXt9cmV0dXJuIGUuaGFzaC5sZW5ndGg+MSYmaT09PXN9fSgpLF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLGk9dGhpcy5vcHRpb25zO3RoaXMucnVubmluZz0hMSx0aGlzLl9hZGRDbGFzcygidWktdGFicyIsInVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCIpLHRoaXMuX3RvZ2dsZUNsYXNzKCJ1aS10YWJzLWNvbGxhcHNpYmxlIixudWxsLGkuY29sbGFwc2libGUpLHRoaXMuX3Byb2Nlc3NUYWJzKCksaS5hY3RpdmU9dGhpcy5faW5pdGlhbEFjdGl2ZSgpLHQuaXNBcnJheShpLmRpc2FibGVkKSYmKGkuZGlzYWJsZWQ9dC51bmlxdWUoaS5kaXNhYmxlZC5jb25jYXQodC5tYXAodGhpcy50YWJzLmZpbHRlcigiLnVpLXN0YXRlLWRpc2FibGVkIiksZnVuY3Rpb24odCl7cmV0dXJuIGUudGFicy5pbmRleCh0KX0pKSkuc29ydCgpKSx0aGlzLmFjdGl2ZT10aGlzLm9wdGlvbnMuYWN0aXZlIT09ITEmJnRoaXMuYW5jaG9ycy5sZW5ndGg/dGhpcy5fZmluZEFjdGl2ZShpLmFjdGl2ZSk6dCgpLHRoaXMuX3JlZnJlc2goKSx0aGlzLmFjdGl2ZS5sZW5ndGgmJnRoaXMubG9hZChpLmFjdGl2ZSl9LF9pbml0aWFsQWN0aXZlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLmFjdGl2ZSxpPXRoaXMub3B0aW9ucy5jb2xsYXBzaWJsZSxzPWxvY2F0aW9uLmhhc2guc3Vic3RyaW5nKDEpO3JldHVybiBudWxsPT09ZSYmKHMmJnRoaXMudGFicy5lYWNoKGZ1bmN0aW9uKGksbil7cmV0dXJuIHQobikuYXR0cigiYXJpYS1jb250cm9scyIpPT09cz8oZT1pLCExKTp2b2lkIDB9KSxudWxsPT09ZSYmKGU9dGhpcy50YWJzLmluZGV4KHRoaXMudGFicy5maWx0ZXIoIi51aS10YWJzLWFjdGl2ZSIpKSksKG51bGw9PT1lfHwtMT09PWUpJiYoZT10aGlzLnRhYnMubGVuZ3RoPzA6ITEpKSxlIT09ITEmJihlPXRoaXMudGFicy5pbmRleCh0aGlzLnRhYnMuZXEoZSkpLC0xPT09ZSYmKGU9aT8hMTowKSksIWkmJmU9PT0hMSYmdGhpcy5hbmNob3JzLmxlbmd0aCYmKGU9MCksZX0sX2dldENyZWF0ZUV2ZW50RGF0YTpmdW5jdGlvbigpe3JldHVybnt0YWI6dGhpcy5hY3RpdmUscGFuZWw6dGhpcy5hY3RpdmUubGVuZ3RoP3RoaXMuX2dldFBhbmVsRm9yVGFiKHRoaXMuYWN0aXZlKTp0KCl9fSxfdGFiS2V5ZG93bjpmdW5jdGlvbihlKXt2YXIgaT10KHQudWkuc2FmZUFjdGl2ZUVsZW1lbnQodGhpcy5kb2N1bWVudFswXSkpLmNsb3Nlc3QoImxpIikscz10aGlzLnRhYnMuaW5kZXgoaSksbj0hMDtpZighdGhpcy5faGFuZGxlUGFnZU5hdihlKSl7c3dpdGNoKGUua2V5Q29kZSl7Y2FzZSB0LnVpLmtleUNvZGUuUklHSFQ6Y2FzZSB0LnVpLmtleUNvZGUuRE9XTjpzKys7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuVVA6Y2FzZSB0LnVpLmtleUNvZGUuTEVGVDpuPSExLHMtLTticmVhaztjYXNlIHQudWkua2V5Q29kZS5FTkQ6cz10aGlzLmFuY2hvcnMubGVuZ3RoLTE7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuSE9NRTpzPTA7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuU1BBQ0U6cmV0dXJuIGUucHJldmVudERlZmF1bHQoKSxjbGVhclRpbWVvdXQodGhpcy5hY3RpdmF0aW5nKSx0aGlzLl9hY3RpdmF0ZShzKSx2b2lkIDA7Y2FzZSB0LnVpLmtleUNvZGUuRU5URVI6cmV0dXJuIGUucHJldmVudERlZmF1bHQoKSxjbGVhclRpbWVvdXQodGhpcy5hY3RpdmF0aW5nKSx0aGlzLl9hY3RpdmF0ZShzPT09dGhpcy5vcHRpb25zLmFjdGl2ZT8hMTpzKSx2b2lkIDA7ZGVmYXVsdDpyZXR1cm59ZS5wcmV2ZW50RGVmYXVsdCgpLGNsZWFyVGltZW91dCh0aGlzLmFjdGl2YXRpbmcpLHM9dGhpcy5fZm9jdXNOZXh0VGFiKHMsbiksZS5jdHJsS2V5fHxlLm1ldGFLZXl8fChpLmF0dHIoImFyaWEtc2VsZWN0ZWQiLCJmYWxzZSIpLHRoaXMudGFicy5lcShzKS5hdHRyKCJhcmlhLXNlbGVjdGVkIiwidHJ1ZSIpLHRoaXMuYWN0aXZhdGluZz10aGlzLl9kZWxheShmdW5jdGlvbigpe3RoaXMub3B0aW9uKCJhY3RpdmUiLHMpfSx0aGlzLmRlbGF5KSl9fSxfcGFuZWxLZXlkb3duOmZ1bmN0aW9uKGUpe3RoaXMuX2hhbmRsZVBhZ2VOYXYoZSl8fGUuY3RybEtleSYmZS5rZXlDb2RlPT09dC51aS5rZXlDb2RlLlVQJiYoZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuYWN0aXZlLnRyaWdnZXIoImZvY3VzIikpfSxfaGFuZGxlUGFnZU5hdjpmdW5jdGlvbihlKXtyZXR1cm4gZS5hbHRLZXkmJmUua2V5Q29kZT09PXQudWkua2V5Q29kZS5QQUdFX1VQPyh0aGlzLl9hY3RpdmF0ZSh0aGlzLl9mb2N1c05leHRUYWIodGhpcy5vcHRpb25zLmFjdGl2ZS0xLCExKSksITApOmUuYWx0S2V5JiZlLmtleUNvZGU9PT10LnVpLmtleUNvZGUuUEFHRV9ET1dOPyh0aGlzLl9hY3RpdmF0ZSh0aGlzLl9mb2N1c05leHRUYWIodGhpcy5vcHRpb25zLmFjdGl2ZSsxLCEwKSksITApOnZvaWQgMH0sX2ZpbmROZXh0VGFiOmZ1bmN0aW9uKGUsaSl7ZnVuY3Rpb24gcygpe3JldHVybiBlPm4mJihlPTApLDA+ZSYmKGU9biksZX1mb3IodmFyIG49dGhpcy50YWJzLmxlbmd0aC0xOy0xIT09dC5pbkFycmF5KHMoKSx0aGlzLm9wdGlvbnMuZGlzYWJsZWQpOyllPWk/ZSsxOmUtMTtyZXR1cm4gZX0sX2ZvY3VzTmV4dFRhYjpmdW5jdGlvbih0LGUpe3JldHVybiB0PXRoaXMuX2ZpbmROZXh0VGFiKHQsZSksdGhpcy50YWJzLmVxKHQpLnRyaWdnZXIoImZvY3VzIiksdH0sX3NldE9wdGlvbjpmdW5jdGlvbih0LGUpe3JldHVybiJhY3RpdmUiPT09dD8odGhpcy5fYWN0aXZhdGUoZSksdm9pZCAwKToodGhpcy5fc3VwZXIodCxlKSwiY29sbGFwc2libGUiPT09dCYmKHRoaXMuX3RvZ2dsZUNsYXNzKCJ1aS10YWJzLWNvbGxhcHNpYmxlIixudWxsLGUpLGV8fHRoaXMub3B0aW9ucy5hY3RpdmUhPT0hMXx8dGhpcy5fYWN0aXZhdGUoMCkpLCJldmVudCI9PT10JiZ0aGlzLl9zZXR1cEV2ZW50cyhlKSwiaGVpZ2h0U3R5bGUiPT09dCYmdGhpcy5fc2V0dXBIZWlnaHRTdHlsZShlKSx2b2lkIDApfSxfc2FuaXRpemVTZWxlY3RvcjpmdW5jdGlvbih0KXtyZXR1cm4gdD90LnJlcGxhY2UoL1shIiQlJicoKSorLC5cLzo7PD0+P0BcW1xdXF5ge3x9fl0vZywiXFwkJiIpOiIifSxyZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLGk9dGhpcy50YWJsaXN0LmNoaWxkcmVuKCI6aGFzKGFbaHJlZl0pIik7ZS5kaXNhYmxlZD10Lm1hcChpLmZpbHRlcigiLnVpLXN0YXRlLWRpc2FibGVkIiksZnVuY3Rpb24odCl7cmV0dXJuIGkuaW5kZXgodCl9KSx0aGlzLl9wcm9jZXNzVGFicygpLGUuYWN0aXZlIT09ITEmJnRoaXMuYW5jaG9ycy5sZW5ndGg/dGhpcy5hY3RpdmUubGVuZ3RoJiYhdC5jb250YWlucyh0aGlzLnRhYmxpc3RbMF0sdGhpcy5hY3RpdmVbMF0pP3RoaXMudGFicy5sZW5ndGg9PT1lLmRpc2FibGVkLmxlbmd0aD8oZS5hY3RpdmU9ITEsdGhpcy5hY3RpdmU9dCgpKTp0aGlzLl9hY3RpdmF0ZSh0aGlzLl9maW5kTmV4dFRhYihNYXRoLm1heCgwLGUuYWN0aXZlLTEpLCExKSk6ZS5hY3RpdmU9dGhpcy50YWJzLmluZGV4KHRoaXMuYWN0aXZlKTooZS5hY3RpdmU9ITEsdGhpcy5hY3RpdmU9dCgpKSx0aGlzLl9yZWZyZXNoKCl9LF9yZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5fc2V0T3B0aW9uRGlzYWJsZWQodGhpcy5vcHRpb25zLmRpc2FibGVkKSx0aGlzLl9zZXR1cEV2ZW50cyh0aGlzLm9wdGlvbnMuZXZlbnQpLHRoaXMuX3NldHVwSGVpZ2h0U3R5bGUodGhpcy5vcHRpb25zLmhlaWdodFN0eWxlKSx0aGlzLnRhYnMubm90KHRoaXMuYWN0aXZlKS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6ImZhbHNlIiwiYXJpYS1leHBhbmRlZCI6ImZhbHNlIix0YWJJbmRleDotMX0pLHRoaXMucGFuZWxzLm5vdCh0aGlzLl9nZXRQYW5lbEZvclRhYih0aGlzLmFjdGl2ZSkpLmhpZGUoKS5hdHRyKHsiYXJpYS1oaWRkZW4iOiJ0cnVlIn0pLHRoaXMuYWN0aXZlLmxlbmd0aD8odGhpcy5hY3RpdmUuYXR0cih7ImFyaWEtc2VsZWN0ZWQiOiJ0cnVlIiwiYXJpYS1leHBhbmRlZCI6InRydWUiLHRhYkluZGV4OjB9KSx0aGlzLl9hZGRDbGFzcyh0aGlzLmFjdGl2ZSwidWktdGFicy1hY3RpdmUiLCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLl9nZXRQYW5lbEZvclRhYih0aGlzLmFjdGl2ZSkuc2hvdygpLmF0dHIoeyJhcmlhLWhpZGRlbiI6ImZhbHNlIn0pKTp0aGlzLnRhYnMuZXEoMCkuYXR0cigidGFiSW5kZXgiLDApfSxfcHJvY2Vzc1RhYnM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLGk9dGhpcy50YWJzLHM9dGhpcy5hbmNob3JzLG49dGhpcy5wYW5lbHM7dGhpcy50YWJsaXN0PXRoaXMuX2dldExpc3QoKS5hdHRyKCJyb2xlIiwidGFibGlzdCIpLHRoaXMuX2FkZENsYXNzKHRoaXMudGFibGlzdCwidWktdGFicy1uYXYiLCJ1aS1oZWxwZXItcmVzZXQgdWktaGVscGVyLWNsZWFyZml4IHVpLXdpZGdldC1oZWFkZXIiKSx0aGlzLnRhYmxpc3Qub24oIm1vdXNlZG93biIrdGhpcy5ldmVudE5hbWVzcGFjZSwiPiBsaSIsZnVuY3Rpb24oZSl7dCh0aGlzKS5pcygiLnVpLXN0YXRlLWRpc2FibGVkIikmJmUucHJldmVudERlZmF1bHQoKX0pLm9uKCJmb2N1cyIrdGhpcy5ldmVudE5hbWVzcGFjZSwiLnVpLXRhYnMtYW5jaG9yIixmdW5jdGlvbigpe3QodGhpcykuY2xvc2VzdCgibGkiKS5pcygiLnVpLXN0YXRlLWRpc2FibGVkIikmJnRoaXMuYmx1cigpfSksdGhpcy50YWJzPXRoaXMudGFibGlzdC5maW5kKCI+IGxpOmhhcyhhW2hyZWZdKSIpLmF0dHIoe3JvbGU6InRhYiIsdGFiSW5kZXg6LTF9KSx0aGlzLl9hZGRDbGFzcyh0aGlzLnRhYnMsInVpLXRhYnMtdGFiIiwidWktc3RhdGUtZGVmYXVsdCIpLHRoaXMuYW5jaG9ycz10aGlzLnRhYnMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHQoImEiLHRoaXMpWzBdfSkuYXR0cih7cm9sZToicHJlc2VudGF0aW9uIix0YWJJbmRleDotMX0pLHRoaXMuX2FkZENsYXNzKHRoaXMuYW5jaG9ycywidWktdGFicy1hbmNob3IiKSx0aGlzLnBhbmVscz10KCksdGhpcy5hbmNob3JzLmVhY2goZnVuY3Rpb24oaSxzKXt2YXIgbixvLGEscj10KHMpLnVuaXF1ZUlkKCkuYXR0cigiaWQiKSxoPXQocykuY2xvc2VzdCgibGkiKSxsPWguYXR0cigiYXJpYS1jb250cm9scyIpO2UuX2lzTG9jYWwocyk/KG49cy5oYXNoLGE9bi5zdWJzdHJpbmcoMSksbz1lLmVsZW1lbnQuZmluZChlLl9zYW5pdGl6ZVNlbGVjdG9yKG4pKSk6KGE9aC5hdHRyKCJhcmlhLWNvbnRyb2xzIil8fHQoe30pLnVuaXF1ZUlkKClbMF0uaWQsbj0iIyIrYSxvPWUuZWxlbWVudC5maW5kKG4pLG8ubGVuZ3RofHwobz1lLl9jcmVhdGVQYW5lbChhKSxvLmluc2VydEFmdGVyKGUucGFuZWxzW2ktMV18fGUudGFibGlzdCkpLG8uYXR0cigiYXJpYS1saXZlIiwicG9saXRlIikpLG8ubGVuZ3RoJiYoZS5wYW5lbHM9ZS5wYW5lbHMuYWRkKG8pKSxsJiZoLmRhdGEoInVpLXRhYnMtYXJpYS1jb250cm9scyIsbCksaC5hdHRyKHsiYXJpYS1jb250cm9scyI6YSwiYXJpYS1sYWJlbGxlZGJ5IjpyfSksby5hdHRyKCJhcmlhLWxhYmVsbGVkYnkiLHIpfSksdGhpcy5wYW5lbHMuYXR0cigicm9sZSIsInRhYnBhbmVsIiksdGhpcy5fYWRkQ2xhc3ModGhpcy5wYW5lbHMsInVpLXRhYnMtcGFuZWwiLCJ1aS13aWRnZXQtY29udGVudCIpLGkmJih0aGlzLl9vZmYoaS5ub3QodGhpcy50YWJzKSksdGhpcy5fb2ZmKHMubm90KHRoaXMuYW5jaG9ycykpLHRoaXMuX29mZihuLm5vdCh0aGlzLnBhbmVscykpKX0sX2dldExpc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YWJsaXN0fHx0aGlzLmVsZW1lbnQuZmluZCgib2wsIHVsIikuZXEoMCl9LF9jcmVhdGVQYW5lbDpmdW5jdGlvbihlKXtyZXR1cm4gdCgiPGRpdj4iKS5hdHRyKCJpZCIsZSkuZGF0YSgidWktdGFicy1kZXN0cm95IiwhMCl9LF9zZXRPcHRpb25EaXNhYmxlZDpmdW5jdGlvbihlKXt2YXIgaSxzLG47Zm9yKHQuaXNBcnJheShlKSYmKGUubGVuZ3RoP2UubGVuZ3RoPT09dGhpcy5hbmNob3JzLmxlbmd0aCYmKGU9ITApOmU9ITEpLG49MDtzPXRoaXMudGFic1tuXTtuKyspaT10KHMpLGU9PT0hMHx8LTEhPT10LmluQXJyYXkobixlKT8oaS5hdHRyKCJhcmlhLWRpc2FibGVkIiwidHJ1ZSIpLHRoaXMuX2FkZENsYXNzKGksbnVsbCwidWktc3RhdGUtZGlzYWJsZWQiKSk6KGkucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxlZCIpLHRoaXMuX3JlbW92ZUNsYXNzKGksbnVsbCwidWktc3RhdGUtZGlzYWJsZWQiKSk7dGhpcy5vcHRpb25zLmRpc2FibGVkPWUsdGhpcy5fdG9nZ2xlQ2xhc3ModGhpcy53aWRnZXQoKSx0aGlzLndpZGdldEZ1bGxOYW1lKyItZGlzYWJsZWQiLG51bGwsZT09PSEwKX0sX3NldHVwRXZlbnRzOmZ1bmN0aW9uKGUpe3ZhciBpPXt9O2UmJnQuZWFjaChlLnNwbGl0KCIgIiksZnVuY3Rpb24odCxlKXtpW2VdPSJfZXZlbnRIYW5kbGVyIn0pLHRoaXMuX29mZih0aGlzLmFuY2hvcnMuYWRkKHRoaXMudGFicykuYWRkKHRoaXMucGFuZWxzKSksdGhpcy5fb24oITAsdGhpcy5hbmNob3JzLHtjbGljazpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCl9fSksdGhpcy5fb24odGhpcy5hbmNob3JzLGkpLHRoaXMuX29uKHRoaXMudGFicyx7a2V5ZG93bjoiX3RhYktleWRvd24ifSksdGhpcy5fb24odGhpcy5wYW5lbHMse2tleWRvd246Il9wYW5lbEtleWRvd24ifSksdGhpcy5fZm9jdXNhYmxlKHRoaXMudGFicyksdGhpcy5faG92ZXJhYmxlKHRoaXMudGFicyl9LF9zZXR1cEhlaWdodFN0eWxlOmZ1bmN0aW9uKGUpe3ZhciBpLHM9dGhpcy5lbGVtZW50LnBhcmVudCgpOyJmaWxsIj09PWU/KGk9cy5oZWlnaHQoKSxpLT10aGlzLmVsZW1lbnQub3V0ZXJIZWlnaHQoKS10aGlzLmVsZW1lbnQuaGVpZ2h0KCksdGhpcy5lbGVtZW50LnNpYmxpbmdzKCI6dmlzaWJsZSIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpLHM9ZS5jc3MoInBvc2l0aW9uIik7ImFic29sdXRlIiE9PXMmJiJmaXhlZCIhPT1zJiYoaS09ZS5vdXRlckhlaWdodCghMCkpfSksdGhpcy5lbGVtZW50LmNoaWxkcmVuKCkubm90KHRoaXMucGFuZWxzKS5lYWNoKGZ1bmN0aW9uKCl7aS09dCh0aGlzKS5vdXRlckhlaWdodCghMCl9KSx0aGlzLnBhbmVscy5lYWNoKGZ1bmN0aW9uKCl7dCh0aGlzKS5oZWlnaHQoTWF0aC5tYXgoMCxpLXQodGhpcykuaW5uZXJIZWlnaHQoKSt0KHRoaXMpLmhlaWdodCgpKSl9KS5jc3MoIm92ZXJmbG93IiwiYXV0byIpKToiYXV0byI9PT1lJiYoaT0wLHRoaXMucGFuZWxzLmVhY2goZnVuY3Rpb24oKXtpPU1hdGgubWF4KGksdCh0aGlzKS5oZWlnaHQoIiIpLmhlaWdodCgpKX0pLmhlaWdodChpKSl9LF9ldmVudEhhbmRsZXI6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcy5vcHRpb25zLHM9dGhpcy5hY3RpdmUsbj10KGUuY3VycmVudFRhcmdldCksbz1uLmNsb3Nlc3QoImxpIiksYT1vWzBdPT09c1swXSxyPWEmJmkuY29sbGFwc2libGUsaD1yP3QoKTp0aGlzLl9nZXRQYW5lbEZvclRhYihvKSxsPXMubGVuZ3RoP3RoaXMuX2dldFBhbmVsRm9yVGFiKHMpOnQoKSxjPXtvbGRUYWI6cyxvbGRQYW5lbDpsLG5ld1RhYjpyP3QoKTpvLG5ld1BhbmVsOmh9O2UucHJldmVudERlZmF1bHQoKSxvLmhhc0NsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpfHxvLmhhc0NsYXNzKCJ1aS10YWJzLWxvYWRpbmciKXx8dGhpcy5ydW5uaW5nfHxhJiYhaS5jb2xsYXBzaWJsZXx8dGhpcy5fdHJpZ2dlcigiYmVmb3JlQWN0aXZhdGUiLGUsYyk9PT0hMXx8KGkuYWN0aXZlPXI/ITE6dGhpcy50YWJzLmluZGV4KG8pLHRoaXMuYWN0aXZlPWE/dCgpOm8sdGhpcy54aHImJnRoaXMueGhyLmFib3J0KCksbC5sZW5ndGh8fGgubGVuZ3RofHx0LmVycm9yKCJqUXVlcnkgVUkgVGFiczogTWlzbWF0Y2hpbmcgZnJhZ21lbnQgaWRlbnRpZmllci4iKSxoLmxlbmd0aCYmdGhpcy5sb2FkKHRoaXMudGFicy5pbmRleChvKSxlKSx0aGlzLl90b2dnbGUoZSxjKSl9LF90b2dnbGU6ZnVuY3Rpb24oZSxpKXtmdW5jdGlvbiBzKCl7by5ydW5uaW5nPSExLG8uX3RyaWdnZXIoImFjdGl2YXRlIixlLGkpfWZ1bmN0aW9uIG4oKXtvLl9hZGRDbGFzcyhpLm5ld1RhYi5jbG9zZXN0KCJsaSIpLCJ1aS10YWJzLWFjdGl2ZSIsInVpLXN0YXRlLWFjdGl2ZSIpLGEubGVuZ3RoJiZvLm9wdGlvbnMuc2hvdz9vLl9zaG93KGEsby5vcHRpb25zLnNob3cscyk6KGEuc2hvdygpLHMoKSl9dmFyIG89dGhpcyxhPWkubmV3UGFuZWwscj1pLm9sZFBhbmVsO3RoaXMucnVubmluZz0hMCxyLmxlbmd0aCYmdGhpcy5vcHRpb25zLmhpZGU/dGhpcy5faGlkZShyLHRoaXMub3B0aW9ucy5oaWRlLGZ1bmN0aW9uKCl7by5fcmVtb3ZlQ2xhc3MoaS5vbGRUYWIuY2xvc2VzdCgibGkiKSwidWktdGFicy1hY3RpdmUiLCJ1aS1zdGF0ZS1hY3RpdmUiKSxuKCl9KToodGhpcy5fcmVtb3ZlQ2xhc3MoaS5vbGRUYWIuY2xvc2VzdCgibGkiKSwidWktdGFicy1hY3RpdmUiLCJ1aS1zdGF0ZS1hY3RpdmUiKSxyLmhpZGUoKSxuKCkpLHIuYXR0cigiYXJpYS1oaWRkZW4iLCJ0cnVlIiksaS5vbGRUYWIuYXR0cih7ImFyaWEtc2VsZWN0ZWQiOiJmYWxzZSIsImFyaWEtZXhwYW5kZWQiOiJmYWxzZSJ9KSxhLmxlbmd0aCYmci5sZW5ndGg/aS5vbGRUYWIuYXR0cigidGFiSW5kZXgiLC0xKTphLmxlbmd0aCYmdGhpcy50YWJzLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiAwPT09dCh0aGlzKS5hdHRyKCJ0YWJJbmRleCIpfSkuYXR0cigidGFiSW5kZXgiLC0xKSxhLmF0dHIoImFyaWEtaGlkZGVuIiwiZmFsc2UiKSxpLm5ld1RhYi5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLCJhcmlhLWV4cGFuZGVkIjoidHJ1ZSIsdGFiSW5kZXg6MH0pfSxfYWN0aXZhdGU6ZnVuY3Rpb24oZSl7dmFyIGkscz10aGlzLl9maW5kQWN0aXZlKGUpO3NbMF0hPT10aGlzLmFjdGl2ZVswXSYmKHMubGVuZ3RofHwocz10aGlzLmFjdGl2ZSksaT1zLmZpbmQoIi51aS10YWJzLWFuY2hvciIpWzBdLHRoaXMuX2V2ZW50SGFuZGxlcih7dGFyZ2V0OmksY3VycmVudFRhcmdldDppLHByZXZlbnREZWZhdWx0OnQubm9vcH0pKX0sX2ZpbmRBY3RpdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT0hMT90KCk6dGhpcy50YWJzLmVxKGUpfSxfZ2V0SW5kZXg6ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiYoZT10aGlzLmFuY2hvcnMuaW5kZXgodGhpcy5hbmNob3JzLmZpbHRlcigiW2hyZWYkPSciK3QudWkuZXNjYXBlU2VsZWN0b3IoZSkrIiddIikpKSxlfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMueGhyJiZ0aGlzLnhoci5hYm9ydCgpLHRoaXMudGFibGlzdC5yZW1vdmVBdHRyKCJyb2xlIikub2ZmKHRoaXMuZXZlbnROYW1lc3BhY2UpLHRoaXMuYW5jaG9ycy5yZW1vdmVBdHRyKCJyb2xlIHRhYkluZGV4IikucmVtb3ZlVW5pcXVlSWQoKSx0aGlzLnRhYnMuYWRkKHRoaXMucGFuZWxzKS5lYWNoKGZ1bmN0aW9uKCl7dC5kYXRhKHRoaXMsInVpLXRhYnMtZGVzdHJveSIpP3QodGhpcykucmVtb3ZlKCk6dCh0aGlzKS5yZW1vdmVBdHRyKCJyb2xlIHRhYkluZGV4IGFyaWEtbGl2ZSBhcmlhLWJ1c3kgYXJpYS1zZWxlY3RlZCBhcmlhLWxhYmVsbGVkYnkgYXJpYS1oaWRkZW4gYXJpYS1leHBhbmRlZCIpfSksdGhpcy50YWJzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpLGk9ZS5kYXRhKCJ1aS10YWJzLWFyaWEtY29udHJvbHMiKTtpP2UuYXR0cigiYXJpYS1jb250cm9scyIsaSkucmVtb3ZlRGF0YSgidWktdGFicy1hcmlhLWNvbnRyb2xzIik6ZS5yZW1vdmVBdHRyKCJhcmlhLWNvbnRyb2xzIil9KSx0aGlzLnBhbmVscy5zaG93KCksImNvbnRlbnQiIT09dGhpcy5vcHRpb25zLmhlaWdodFN0eWxlJiZ0aGlzLnBhbmVscy5jc3MoImhlaWdodCIsIiIpfSxlbmFibGU6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcy5vcHRpb25zLmRpc2FibGVkO2khPT0hMSYmKHZvaWQgMD09PWU/aT0hMTooZT10aGlzLl9nZXRJbmRleChlKSxpPXQuaXNBcnJheShpKT90Lm1hcChpLGZ1bmN0aW9uKHQpe3JldHVybiB0IT09ZT90Om51bGx9KTp0Lm1hcCh0aGlzLnRhYnMsZnVuY3Rpb24odCxpKXtyZXR1cm4gaSE9PWU/aTpudWxsfSkpLHRoaXMuX3NldE9wdGlvbkRpc2FibGVkKGkpKX0sZGlzYWJsZTpmdW5jdGlvbihlKXt2YXIgaT10aGlzLm9wdGlvbnMuZGlzYWJsZWQ7aWYoaSE9PSEwKXtpZih2b2lkIDA9PT1lKWk9ITA7ZWxzZXtpZihlPXRoaXMuX2dldEluZGV4KGUpLC0xIT09dC5pbkFycmF5KGUsaSkpcmV0dXJuO2k9dC5pc0FycmF5KGkpP3QubWVyZ2UoW2VdLGkpLnNvcnQoKTpbZV19dGhpcy5fc2V0T3B0aW9uRGlzYWJsZWQoaSl9fSxsb2FkOmZ1bmN0aW9uKGUsaSl7ZT10aGlzLl9nZXRJbmRleChlKTt2YXIgcz10aGlzLG49dGhpcy50YWJzLmVxKGUpLG89bi5maW5kKCIudWktdGFicy1hbmNob3IiKSxhPXRoaXMuX2dldFBhbmVsRm9yVGFiKG4pLHI9e3RhYjpuLHBhbmVsOmF9LGg9ZnVuY3Rpb24odCxlKXsiYWJvcnQiPT09ZSYmcy5wYW5lbHMuc3RvcCghMSwhMCkscy5fcmVtb3ZlQ2xhc3MobiwidWktdGFicy1sb2FkaW5nIiksYS5yZW1vdmVBdHRyKCJhcmlhLWJ1c3kiKSx0PT09cy54aHImJmRlbGV0ZSBzLnhocn07dGhpcy5faXNMb2NhbChvWzBdKXx8KHRoaXMueGhyPXQuYWpheCh0aGlzLl9hamF4U2V0dGluZ3MobyxpLHIpKSx0aGlzLnhociYmImNhbmNlbGVkIiE9PXRoaXMueGhyLnN0YXR1c1RleHQmJih0aGlzLl9hZGRDbGFzcyhuLCJ1aS10YWJzLWxvYWRpbmciKSxhLmF0dHIoImFyaWEtYnVzeSIsInRydWUiKSx0aGlzLnhoci5kb25lKGZ1bmN0aW9uKHQsZSxuKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5odG1sKHQpLHMuX3RyaWdnZXIoImxvYWQiLGksciksaChuLGUpfSwxKX0pLmZhaWwoZnVuY3Rpb24odCxlKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aCh0LGUpfSwxKX0pKSl9LF9hamF4U2V0dGluZ3M6ZnVuY3Rpb24oZSxpLHMpe3ZhciBuPXRoaXM7cmV0dXJue3VybDplLmF0dHIoImhyZWYiKSxiZWZvcmVTZW5kOmZ1bmN0aW9uKGUsbyl7cmV0dXJuIG4uX3RyaWdnZXIoImJlZm9yZUxvYWQiLGksdC5leHRlbmQoe2pxWEhSOmUsYWpheFNldHRpbmdzOm99LHMpKX19fSxfZ2V0UGFuZWxGb3JUYWI6ZnVuY3Rpb24oZSl7dmFyIGk9dChlKS5hdHRyKCJhcmlhLWNvbnRyb2xzIik7cmV0dXJuIHRoaXMuZWxlbWVudC5maW5kKHRoaXMuX3Nhbml0aXplU2VsZWN0b3IoIiMiK2kpKX19KSx0LnVpQmFja0NvbXBhdCE9PSExJiZ0LndpZGdldCgidWkudGFicyIsdC51aS50YWJzLHtfcHJvY2Vzc1RhYnM6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlckFwcGx5KGFyZ3VtZW50cyksdGhpcy5fYWRkQ2xhc3ModGhpcy50YWJzLCJ1aS10YWIiKX19KSx0LnVpLnRhYnMsdC53aWRnZXQoInVpLnRvb2x0aXAiLHt2ZXJzaW9uOiIxLjEyLjAtcmMuMiIsb3B0aW9uczp7Y2xhc3Nlczp7InVpLXRvb2x0aXAiOiJ1aS1jb3JuZXItYWxsIHVpLXdpZGdldC1zaGFkb3cifSxjb250ZW50OmZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKS5hdHRyKCJ0aXRsZSIpfHwiIjtyZXR1cm4gdCgiPGE+IikudGV4dChlKS5odG1sKCl9LGhpZGU6ITAsaXRlbXM6Ilt0aXRsZV06bm90KFtkaXNhYmxlZF0pIixwb3NpdGlvbjp7bXk6ImxlZnQgdG9wKzE1IixhdDoibGVmdCBib3R0b20iLGNvbGxpc2lvbjoiZmxpcGZpdCBmbGlwIn0sc2hvdzohMCx0cmFjazohMSxjbG9zZTpudWxsLG9wZW46bnVsbH0sX2FkZERlc2NyaWJlZEJ5OmZ1bmN0aW9uKGUsaSl7dmFyIHM9KGUuYXR0cigiYXJpYS1kZXNjcmliZWRieSIpfHwiIikuc3BsaXQoL1xzKy8pO3MucHVzaChpKSxlLmRhdGEoInVpLXRvb2x0aXAtaWQiLGkpLmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiLHQudHJpbShzLmpvaW4oIiAiKSkpfSxfcmVtb3ZlRGVzY3JpYmVkQnk6ZnVuY3Rpb24oZSl7dmFyIGk9ZS5kYXRhKCJ1aS10b29sdGlwLWlkIikscz0oZS5hdHRyKCJhcmlhLWRlc2NyaWJlZGJ5Iil8fCIiKS5zcGxpdCgvXHMrLyksbj10LmluQXJyYXkoaSxzKTstMSE9PW4mJnMuc3BsaWNlKG4sMSksZS5yZW1vdmVEYXRhKCJ1aS10b29sdGlwLWlkIikscz10LnRyaW0ocy5qb2luKCIgIikpLHM/ZS5hdHRyKCJhcmlhLWRlc2NyaWJlZGJ5IixzKTplLnJlbW92ZUF0dHIoImFyaWEtZGVzY3JpYmVkYnkiKX0sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuX29uKHttb3VzZW92ZXI6Im9wZW4iLGZvY3VzaW46Im9wZW4ifSksdGhpcy50b29sdGlwcz17fSx0aGlzLnBhcmVudHM9e30sdGhpcy5saXZlUmVnaW9uPXQoIjxkaXY+IikuYXR0cih7cm9sZToibG9nIiwiYXJpYS1saXZlIjoiYXNzZXJ0aXZlIiwiYXJpYS1yZWxldmFudCI6ImFkZGl0aW9ucyJ9KS5hcHBlbmRUbyh0aGlzLmRvY3VtZW50WzBdLmJvZHkpLHRoaXMuX2FkZENsYXNzKHRoaXMubGl2ZVJlZ2lvbixudWxsLCJ1aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGUiKSx0aGlzLmRpc2FibGVkVGl0bGVzPXQoW10pfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsaSl7dmFyIHM9dGhpczt0aGlzLl9zdXBlcihlLGkpLCJjb250ZW50Ij09PWUmJnQuZWFjaCh0aGlzLnRvb2x0aXBzLGZ1bmN0aW9uKHQsZSl7cy5fdXBkYXRlQ29udGVudChlLmVsZW1lbnQpfSl9LF9zZXRPcHRpb25EaXNhYmxlZDpmdW5jdGlvbih0KXt0aGlzW3Q/Il9kaXNhYmxlIjoiX2VuYWJsZSJdKCl9LF9kaXNhYmxlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0LmVhY2godGhpcy50b29sdGlwcyxmdW5jdGlvbihpLHMpe3ZhciBuPXQuRXZlbnQoImJsdXIiKTtuLnRhcmdldD1uLmN1cnJlbnRUYXJnZXQ9cy5lbGVtZW50WzBdLGUuY2xvc2UobiwhMCl9KSx0aGlzLmRpc2FibGVkVGl0bGVzPXRoaXMuZGlzYWJsZWRUaXRsZXMuYWRkKHRoaXMuZWxlbWVudC5maW5kKHRoaXMub3B0aW9ucy5pdGVtcykuYWRkQmFjaygpLmZpbHRlcihmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7cmV0dXJuIGUuaXMoIlt0aXRsZV0iKT9lLmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiLGUuYXR0cigidGl0bGUiKSkucmVtb3ZlQXR0cigidGl0bGUiKTp2b2lkIDB9KSl9LF9lbmFibGU6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVkVGl0bGVzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpO2UuZGF0YSgidWktdG9vbHRpcC10aXRsZSIpJiZlLmF0dHIoInRpdGxlIixlLmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiKSl9KSx0aGlzLmRpc2FibGVkVGl0bGVzPXQoW10pfSxvcGVuOmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXMscz10KGU/ZS50YXJnZXQ6dGhpcy5lbGVtZW50KS5jbG9zZXN0KHRoaXMub3B0aW9ucy5pdGVtcyk7cy5sZW5ndGgmJiFzLmRhdGEoInVpLXRvb2x0aXAtaWQiKSYmKHMuYXR0cigidGl0bGUiKSYmcy5kYXRhKCJ1aS10b29sdGlwLXRpdGxlIixzLmF0dHIoInRpdGxlIikpLHMuZGF0YSgidWktdG9vbHRpcC1vcGVuIiwhMCksZSYmIm1vdXNlb3ZlciI9PT1lLnR5cGUmJnMucGFyZW50cygpLmVhY2goZnVuY3Rpb24oKXt2YXIgZSxzPXQodGhpcyk7cy5kYXRhKCJ1aS10b29sdGlwLW9wZW4iKSYmKGU9dC5FdmVudCgiYmx1ciIpLGUudGFyZ2V0PWUuY3VycmVudFRhcmdldD10aGlzLGkuY2xvc2UoZSwhMCkpLHMuYXR0cigidGl0bGUiKSYmKHMudW5pcXVlSWQoKSxpLnBhcmVudHNbdGhpcy5pZF09e2VsZW1lbnQ6dGhpcyx0aXRsZTpzLmF0dHIoInRpdGxlIil9LHMuYXR0cigidGl0bGUiLCIiKSl9KSx0aGlzLl9yZWdpc3RlckNsb3NlSGFuZGxlcnMoZSxzKSx0aGlzLl91cGRhdGVDb250ZW50KHMsZSkpfSxfdXBkYXRlQ29udGVudDpmdW5jdGlvbih0LGUpe3ZhciBpLHM9dGhpcy5vcHRpb25zLmNvbnRlbnQsbj10aGlzLG89ZT9lLnR5cGU6bnVsbDtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHN8fHMubm9kZVR5cGV8fHMuanF1ZXJ5P3RoaXMuX29wZW4oZSx0LHMpOihpPXMuY2FsbCh0WzBdLGZ1bmN0aW9uKGkpe24uX2RlbGF5KGZ1bmN0aW9uKCl7dC5kYXRhKCJ1aS10b29sdGlwLW9wZW4iKSYmKGUmJihlLnR5cGU9byksdGhpcy5fb3BlbihlLHQsaSkpfSl9KSxpJiZ0aGlzLl9vcGVuKGUsdCxpKSx2b2lkIDApfSxfb3BlbjpmdW5jdGlvbihlLGkscyl7ZnVuY3Rpb24gbih0KXtsLm9mPXQsYS5pcygiOmhpZGRlbiIpfHxhLnBvc2l0aW9uKGwpfXZhciBvLGEscixoLGw9dC5leHRlbmQoe30sdGhpcy5vcHRpb25zLnBvc2l0aW9uKTtpZihzKXtpZihvPXRoaXMuX2ZpbmQoaSkpcmV0dXJuIG8udG9vbHRpcC5maW5kKCIudWktdG9vbHRpcC1jb250ZW50IikuaHRtbChzKSx2b2lkIDA7aS5pcygiW3RpdGxlXSIpJiYoZSYmIm1vdXNlb3ZlciI9PT1lLnR5cGU/aS5hdHRyKCJ0aXRsZSIsIiIpOmkucmVtb3ZlQXR0cigidGl0bGUiKSksbz10aGlzLl90b29sdGlwKGkpLGE9by50b29sdGlwLHRoaXMuX2FkZERlc2NyaWJlZEJ5KGksYS5hdHRyKCJpZCIpKSxhLmZpbmQoIi51aS10b29sdGlwLWNvbnRlbnQiKS5odG1sKHMpLHRoaXMubGl2ZVJlZ2lvbi5jaGlsZHJlbigpLmhpZGUoKSxoPXQoIjxkaXY+IikuaHRtbChhLmZpbmQoIi51aS10b29sdGlwLWNvbnRlbnQiKS5odG1sKCkpLGgucmVtb3ZlQXR0cigibmFtZSIpLmZpbmQoIltuYW1lXSIpLnJlbW92ZUF0dHIoIm5hbWUiKSxoLnJlbW92ZUF0dHIoImlkIikuZmluZCgiW2lkXSIpLnJlbW92ZUF0dHIoImlkIiksaC5hcHBlbmRUbyh0aGlzLmxpdmVSZWdpb24pLHRoaXMub3B0aW9ucy50cmFjayYmZSYmL15tb3VzZS8udGVzdChlLnR5cGUpPyh0aGlzLl9vbih0aGlzLmRvY3VtZW50LHttb3VzZW1vdmU6bn0pLG4oZSkpOmEucG9zaXRpb24odC5leHRlbmQoe29mOml9LHRoaXMub3B0aW9ucy5wb3NpdGlvbikpLGEuaGlkZSgpLHRoaXMuX3Nob3coYSx0aGlzLm9wdGlvbnMuc2hvdyksdGhpcy5vcHRpb25zLnRyYWNrJiZ0aGlzLm9wdGlvbnMuc2hvdyYmdGhpcy5vcHRpb25zLnNob3cuZGVsYXkmJihyPXRoaXMuZGVsYXllZFNob3c9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXthLmlzKCI6dmlzaWJsZSIpJiYobihsLm9mKSxjbGVhckludGVydmFsKHIpKX0sdC5meC5pbnRlcnZhbCkpLHRoaXMuX3RyaWdnZXIoIm9wZW4iLGUse3Rvb2x0aXA6YX0pfX0sX3JlZ2lzdGVyQ2xvc2VIYW5kbGVyczpmdW5jdGlvbihlLGkpe3ZhciBzPXtrZXl1cDpmdW5jdGlvbihlKXtpZihlLmtleUNvZGU9PT10LnVpLmtleUNvZGUuRVNDQVBFKXt2YXIgcz10LkV2ZW50KGUpO3MuY3VycmVudFRhcmdldD1pWzBdLHRoaXMuY2xvc2UocywhMCl9fX07aVswXSE9PXRoaXMuZWxlbWVudFswXSYmKHMucmVtb3ZlPWZ1bmN0aW9uKCl7dGhpcy5fcmVtb3ZlVG9vbHRpcCh0aGlzLl9maW5kKGkpLnRvb2x0aXApfSksZSYmIm1vdXNlb3ZlciIhPT1lLnR5cGV8fChzLm1vdXNlbGVhdmU9ImNsb3NlIiksZSYmImZvY3VzaW4iIT09ZS50eXBlfHwocy5mb2N1c291dD0iY2xvc2UiKSx0aGlzLl9vbighMCxpLHMpfSxjbG9zZTpmdW5jdGlvbihlKXt2YXIgaSxzPXRoaXMsbj10KGU/ZS5jdXJyZW50VGFyZ2V0OnRoaXMuZWxlbWVudCksbz10aGlzLl9maW5kKG4pO3JldHVybiBvPyhpPW8udG9vbHRpcCxvLmNsb3Npbmd8fChjbGVhckludGVydmFsKHRoaXMuZGVsYXllZFNob3cpLG4uZGF0YSgidWktdG9vbHRpcC10aXRsZSIpJiYhbi5hdHRyKCJ0aXRsZSIpJiZuLmF0dHIoInRpdGxlIixuLmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiKSksdGhpcy5fcmVtb3ZlRGVzY3JpYmVkQnkobiksby5oaWRpbmc9ITAsaS5zdG9wKCEwKSx0aGlzLl9oaWRlKGksdGhpcy5vcHRpb25zLmhpZGUsZnVuY3Rpb24oKXtzLl9yZW1vdmVUb29sdGlwKHQodGhpcykpfSksbi5yZW1vdmVEYXRhKCJ1aS10b29sdGlwLW9wZW4iKSx0aGlzLl9vZmYobiwibW91c2VsZWF2ZSBmb2N1c291dCBrZXl1cCIpLG5bMF0hPT10aGlzLmVsZW1lbnRbMF0mJnRoaXMuX29mZihuLCJyZW1vdmUiKSx0aGlzLl9vZmYodGhpcy5kb2N1bWVudCwibW91c2Vtb3ZlIiksZSYmIm1vdXNlbGVhdmUiPT09ZS50eXBlJiZ0LmVhY2godGhpcy5wYXJlbnRzLGZ1bmN0aW9uKGUsaSl7dChpLmVsZW1lbnQpLmF0dHIoInRpdGxlIixpLnRpdGxlKSxkZWxldGUgcy5wYXJlbnRzW2VdfSksby5jbG9zaW5nPSEwLHRoaXMuX3RyaWdnZXIoImNsb3NlIixlLHt0b29sdGlwOml9KSxvLmhpZGluZ3x8KG8uY2xvc2luZz0hMSkpLHZvaWQgMCk6KG4ucmVtb3ZlRGF0YSgidWktdG9vbHRpcC1vcGVuIiksdm9pZCAwKX0sX3Rvb2x0aXA6ZnVuY3Rpb24oZSl7dmFyIGk9dCgiPGRpdj4iKS5hdHRyKCJyb2xlIiwidG9vbHRpcCIpLHM9dCgiPGRpdj4iKS5hcHBlbmRUbyhpKSxuPWkudW5pcXVlSWQoKS5hdHRyKCJpZCIpO3JldHVybiB0aGlzLl9hZGRDbGFzcyhzLCJ1aS10b29sdGlwLWNvbnRlbnQiKSx0aGlzLl9hZGRDbGFzcyhpLCJ1aS10b29sdGlwIiwidWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IiksaS5hcHBlbmRUbyh0aGlzLl9hcHBlbmRUbyhlKSksdGhpcy50b29sdGlwc1tuXT17ZWxlbWVudDplLHRvb2x0aXA6aX19LF9maW5kOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZGF0YSgidWktdG9vbHRpcC1pZCIpO3JldHVybiBlP3RoaXMudG9vbHRpcHNbZV06bnVsbH0sX3JlbW92ZVRvb2x0aXA6ZnVuY3Rpb24odCl7dC5yZW1vdmUoKSxkZWxldGUgdGhpcy50b29sdGlwc1t0LmF0dHIoImlkIildfSxfYXBwZW5kVG86ZnVuY3Rpb24odCl7dmFyIGU9dC5jbG9zZXN0KCIudWktZnJvbnQsIGRpYWxvZyIpO3JldHVybiBlLmxlbmd0aHx8KGU9dGhpcy5kb2N1bWVudFswXS5ib2R5KSxlfSxfZGVzdHJveTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5lYWNoKHRoaXMudG9vbHRpcHMsZnVuY3Rpb24oaSxzKXt2YXIgbj10LkV2ZW50KCJibHVyIiksbz1zLmVsZW1lbnQ7bi50YXJnZXQ9bi5jdXJyZW50VGFyZ2V0PW9bMF0sZS5jbG9zZShuLCEwKSx0KCIjIitpKS5yZW1vdmUoKSxvLmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiKSYmKG8uYXR0cigidGl0bGUiKXx8by5hdHRyKCJ0aXRsZSIsby5kYXRhKCJ1aS10b29sdGlwLXRpdGxlIikpLG8ucmVtb3ZlRGF0YSgidWktdG9vbHRpcC10aXRsZSIpKX0pLHRoaXMubGl2ZVJlZ2lvbi5yZW1vdmUoKX19KSx0LnVpQmFja0NvbXBhdCE9PSExJiZ0LndpZGdldCgidWkudG9vbHRpcCIsdC51aS50b29sdGlwLHtvcHRpb25zOnt0b29sdGlwQ2xhc3M6bnVsbH0sX3Rvb2x0aXA6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9zdXBlckFwcGx5KGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMub3B0aW9ucy50b29sdGlwQ2xhc3MmJnQudG9vbHRpcC5hZGRDbGFzcyh0aGlzLm9wdGlvbnMudG9vbHRpcENsYXNzKSx0fX0pLHQudWkudG9vbHRpcH0pOw==]]></data>
	</file>
	<file>
	  <filename>/js/jquery.tablesorter.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CihmdW5jdGlvbigkKXskLmV4dGVuZCh7dGFibGVzb3J0ZXI6bmV3CmZ1bmN0aW9uKCl7dmFyIHBhcnNlcnM9W10sd2lkZ2V0cz1bXTt0aGlzLmRlZmF1bHRzPXtjc3NIZWFkZXI6ImhlYWRlciIsY3NzQXNjOiJoZWFkZXJTb3J0VXAiLGNzc0Rlc2M6ImhlYWRlclNvcnREb3duIixjc3NDaGlsZFJvdzoiZXhwYW5kLWNoaWxkIixzb3J0SW5pdGlhbE9yZGVyOiJhc2MiLHNvcnRNdWx0aVNvcnRLZXk6InNoaWZ0S2V5Iixzb3J0Rm9yY2U6bnVsbCxzb3J0QXBwZW5kOm51bGwsc29ydExvY2FsZUNvbXBhcmU6dHJ1ZSx0ZXh0RXh0cmFjdGlvbjoic2ltcGxlIixwYXJzZXJzOnt9LHdpZGdldHM6W10sd2lkZ2V0WmVicmE6e2NzczpbImV2ZW4iLCJvZGQiXX0saGVhZGVyczp7fSx3aWR0aEZpeGVkOmZhbHNlLGNhbmNlbFNlbGVjdGlvbjp0cnVlLHNvcnRMaXN0OltdLGhlYWRlckxpc3Q6W10sZGF0ZUZvcm1hdDoidXMiLGRlY2ltYWw6Jy9cLnxcLC9nJyxvblJlbmRlckhlYWRlcjpudWxsLHNlbGVjdG9ySGVhZGVyczondGhlYWQgdGgnLGRlYnVnOmZhbHNlfTtmdW5jdGlvbiBiZW5jaG1hcmsocyxkKXtsb2cocysiLCIrKG5ldyBEYXRlKCkuZ2V0VGltZSgpLWQuZ2V0VGltZSgpKSsibXMiKTt9dGhpcy5iZW5jaG1hcms9YmVuY2htYXJrO2Z1bmN0aW9uIGxvZyhzKXtpZih0eXBlb2YgY29uc29sZSE9InVuZGVmaW5lZCImJnR5cGVvZiBjb25zb2xlLmRlYnVnIT0idW5kZWZpbmVkIil7Y29uc29sZS5sb2cocyk7fWVsc2V7YWxlcnQocyk7fX1mdW5jdGlvbiBidWlsZFBhcnNlckNhY2hlKHRhYmxlLCRoZWFkZXJzKXtpZih0YWJsZS5jb25maWcuZGVidWcpe3ZhciBwYXJzZXJzRGVidWc9IiI7fWlmKHRhYmxlLnRCb2RpZXMubGVuZ3RoPT0wKXJldHVybjt2YXIgcm93cz10YWJsZS50Qm9kaWVzWzBdLnJvd3M7aWYocm93c1swXSl7dmFyIGxpc3Q9W10sY2VsbHM9cm93c1swXS5jZWxscyxsPWNlbGxzLmxlbmd0aDtmb3IodmFyIGk9MDtpPGw7aSsrKXt2YXIgcD1mYWxzZTtpZigkLm1ldGFkYXRhJiYoJCgkaGVhZGVyc1tpXSkubWV0YWRhdGEoKSYmJCgkaGVhZGVyc1tpXSkubWV0YWRhdGEoKS5zb3J0ZXIpKXtwPWdldFBhcnNlckJ5SWQoJCgkaGVhZGVyc1tpXSkubWV0YWRhdGEoKS5zb3J0ZXIpO31lbHNlIGlmKCh0YWJsZS5jb25maWcuaGVhZGVyc1tpXSYmdGFibGUuY29uZmlnLmhlYWRlcnNbaV0uc29ydGVyKSl7cD1nZXRQYXJzZXJCeUlkKHRhYmxlLmNvbmZpZy5oZWFkZXJzW2ldLnNvcnRlcik7fWlmKCFwKXtwPWRldGVjdFBhcnNlckZvckNvbHVtbih0YWJsZSxyb3dzLC0xLGkpO31pZih0YWJsZS5jb25maWcuZGVidWcpe3BhcnNlcnNEZWJ1Zys9ImNvbHVtbjoiK2krIiBwYXJzZXI6IitwLmlkKyJcbiI7fWxpc3QucHVzaChwKTt9fWlmKHRhYmxlLmNvbmZpZy5kZWJ1Zyl7bG9nKHBhcnNlcnNEZWJ1Zyk7fXJldHVybiBsaXN0O307ZnVuY3Rpb24gZGV0ZWN0UGFyc2VyRm9yQ29sdW1uKHRhYmxlLHJvd3Mscm93SW5kZXgsY2VsbEluZGV4KXt2YXIgbD1wYXJzZXJzLmxlbmd0aCxub2RlPWZhbHNlLG5vZGVWYWx1ZT1mYWxzZSxrZWVwTG9va2luZz10cnVlO3doaWxlKG5vZGVWYWx1ZT09JycmJmtlZXBMb29raW5nKXtyb3dJbmRleCsrO2lmKHJvd3Nbcm93SW5kZXhdKXtub2RlPWdldE5vZGVGcm9tUm93QW5kQ2VsbEluZGV4KHJvd3Mscm93SW5kZXgsY2VsbEluZGV4KTtub2RlVmFsdWU9dHJpbUFuZEdldE5vZGVUZXh0KHRhYmxlLmNvbmZpZyxub2RlKTtpZih0YWJsZS5jb25maWcuZGVidWcpe2xvZygnQ2hlY2tpbmcgaWYgdmFsdWUgd2FzIGVtcHR5IG9uIHJvdzonK3Jvd0luZGV4KTt9fWVsc2V7a2VlcExvb2tpbmc9ZmFsc2U7fX1mb3IodmFyIGk9MTtpPGw7aSsrKXtpZihwYXJzZXJzW2ldLmlzKG5vZGVWYWx1ZSx0YWJsZSxub2RlKSl7cmV0dXJuIHBhcnNlcnNbaV07fX1yZXR1cm4gcGFyc2Vyc1swXTt9ZnVuY3Rpb24gZ2V0Tm9kZUZyb21Sb3dBbmRDZWxsSW5kZXgocm93cyxyb3dJbmRleCxjZWxsSW5kZXgpe3JldHVybiByb3dzW3Jvd0luZGV4XS5jZWxsc1tjZWxsSW5kZXhdO31mdW5jdGlvbiB0cmltQW5kR2V0Tm9kZVRleHQoY29uZmlnLG5vZGUpe3JldHVybiAkLnRyaW0oZ2V0RWxlbWVudFRleHQoY29uZmlnLG5vZGUpKTt9ZnVuY3Rpb24gZ2V0UGFyc2VyQnlJZChuYW1lKXt2YXIgbD1wYXJzZXJzLmxlbmd0aDtmb3IodmFyIGk9MDtpPGw7aSsrKXtpZihwYXJzZXJzW2ldLmlkLnRvTG93ZXJDYXNlKCk9PW5hbWUudG9Mb3dlckNhc2UoKSl7cmV0dXJuIHBhcnNlcnNbaV07fX1yZXR1cm4gZmFsc2U7fWZ1bmN0aW9uIGJ1aWxkQ2FjaGUodGFibGUpe2lmKHRhYmxlLmNvbmZpZy5kZWJ1Zyl7dmFyIGNhY2hlVGltZT1uZXcgRGF0ZSgpO312YXIgdG90YWxSb3dzPSh0YWJsZS50Qm9kaWVzWzBdJiZ0YWJsZS50Qm9kaWVzWzBdLnJvd3MubGVuZ3RoKXx8MCx0b3RhbENlbGxzPSh0YWJsZS50Qm9kaWVzWzBdLnJvd3NbMF0mJnRhYmxlLnRCb2RpZXNbMF0ucm93c1swXS5jZWxscy5sZW5ndGgpfHwwLHBhcnNlcnM9dGFibGUuY29uZmlnLnBhcnNlcnMsY2FjaGU9e3JvdzpbXSxub3JtYWxpemVkOltdfTtmb3IodmFyIGk9MDtpPHRvdGFsUm93czsrK2kpe3ZhciBjPSQodGFibGUudEJvZGllc1swXS5yb3dzW2ldKSxjb2xzPVtdO2lmKGMuaGFzQ2xhc3ModGFibGUuY29uZmlnLmNzc0NoaWxkUm93KSl7Y2FjaGUucm93W2NhY2hlLnJvdy5sZW5ndGgtMV09Y2FjaGUucm93W2NhY2hlLnJvdy5sZW5ndGgtMV0uYWRkKGMpO2NvbnRpbnVlO31jYWNoZS5yb3cucHVzaChjKTtmb3IodmFyIGo9MDtqPHRvdGFsQ2VsbHM7KytqKXtjb2xzLnB1c2gocGFyc2Vyc1tqXS5mb3JtYXQoZ2V0RWxlbWVudFRleHQodGFibGUuY29uZmlnLGNbMF0uY2VsbHNbal0pLHRhYmxlLGNbMF0uY2VsbHNbal0pKTt9Y29scy5wdXNoKGNhY2hlLm5vcm1hbGl6ZWQubGVuZ3RoKTtjYWNoZS5ub3JtYWxpemVkLnB1c2goY29scyk7Y29scz1udWxsO307aWYodGFibGUuY29uZmlnLmRlYnVnKXtiZW5jaG1hcmsoIkJ1aWxkaW5nIGNhY2hlIGZvciAiK3RvdGFsUm93cysiIHJvd3M6IixjYWNoZVRpbWUpO31yZXR1cm4gY2FjaGU7fTtmdW5jdGlvbiBnZXRFbGVtZW50VGV4dChjb25maWcsbm9kZSl7dmFyIHRleHQ9IiI7aWYoIW5vZGUpcmV0dXJuIiI7aWYoIWNvbmZpZy5zdXBwb3J0c1RleHRDb250ZW50KWNvbmZpZy5zdXBwb3J0c1RleHRDb250ZW50PW5vZGUudGV4dENvbnRlbnR8fGZhbHNlO2lmKGNvbmZpZy50ZXh0RXh0cmFjdGlvbj09InNpbXBsZSIpe2lmKGNvbmZpZy5zdXBwb3J0c1RleHRDb250ZW50KXt0ZXh0PW5vZGUudGV4dENvbnRlbnQ7fWVsc2V7aWYobm9kZS5jaGlsZE5vZGVzWzBdJiZub2RlLmNoaWxkTm9kZXNbMF0uaGFzQ2hpbGROb2RlcygpKXt0ZXh0PW5vZGUuY2hpbGROb2Rlc1swXS5pbm5lckhUTUw7fWVsc2V7dGV4dD1ub2RlLmlubmVySFRNTDt9fX1lbHNle2lmKHR5cGVvZihjb25maWcudGV4dEV4dHJhY3Rpb24pPT0iZnVuY3Rpb24iKXt0ZXh0PWNvbmZpZy50ZXh0RXh0cmFjdGlvbihub2RlKTt9ZWxzZXt0ZXh0PSQobm9kZSkudGV4dCgpO319cmV0dXJuIHRleHQ7fWZ1bmN0aW9uIGFwcGVuZFRvVGFibGUodGFibGUsY2FjaGUpe2lmKHRhYmxlLmNvbmZpZy5kZWJ1Zyl7dmFyIGFwcGVuZFRpbWU9bmV3IERhdGUoKX12YXIgYz1jYWNoZSxyPWMucm93LG49Yy5ub3JtYWxpemVkLHRvdGFsUm93cz1uLmxlbmd0aCxjaGVja0NlbGw9KG5bMF0ubGVuZ3RoLTEpLHRhYmxlQm9keT0kKHRhYmxlLnRCb2RpZXNbMF0pLHJvd3M9W107Zm9yKHZhciBpPTA7aTx0b3RhbFJvd3M7aSsrKXt2YXIgcG9zPW5baV1bY2hlY2tDZWxsXTtyb3dzLnB1c2gocltwb3NdKTtpZighdGFibGUuY29uZmlnLmFwcGVuZGVyKXt2YXIgbD1yW3Bvc10ubGVuZ3RoO2Zvcih2YXIgaj0wO2o8bDtqKyspe3RhYmxlQm9keVswXS5hcHBlbmRDaGlsZChyW3Bvc11bal0pO319fWlmKHRhYmxlLmNvbmZpZy5hcHBlbmRlcil7dGFibGUuY29uZmlnLmFwcGVuZGVyKHRhYmxlLHJvd3MpO31yb3dzPW51bGw7aWYodGFibGUuY29uZmlnLmRlYnVnKXtiZW5jaG1hcmsoIlJlYnVpbHQgdGFibGU6IixhcHBlbmRUaW1lKTt9YXBwbHlXaWRnZXQodGFibGUpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXskKHRhYmxlKS50cmlnZ2VyKCJzb3J0RW5kIik7fSwwKTt9O2Z1bmN0aW9uIGJ1aWxkSGVhZGVycyh0YWJsZSl7aWYodGFibGUuY29uZmlnLmRlYnVnKXt2YXIgdGltZT1uZXcgRGF0ZSgpO312YXIgbWV0YT0oJC5tZXRhZGF0YSk/dHJ1ZTpmYWxzZTt2YXIgaGVhZGVyX2luZGV4PWNvbXB1dGVUYWJsZUhlYWRlckNlbGxJbmRleGVzKHRhYmxlKTskdGFibGVIZWFkZXJzPSQodGFibGUuY29uZmlnLnNlbGVjdG9ySGVhZGVycyx0YWJsZSkuZWFjaChmdW5jdGlvbihpbmRleCl7dGhpcy5jb2x1bW49aGVhZGVyX2luZGV4W3RoaXMucGFyZW50Tm9kZS5yb3dJbmRleCsiLSIrdGhpcy5jZWxsSW5kZXhdO3RoaXMub3JkZXI9Zm9ybWF0U29ydGluZ09yZGVyKHRhYmxlLmNvbmZpZy5zb3J0SW5pdGlhbE9yZGVyKTt0aGlzLmNvdW50PXRoaXMub3JkZXI7aWYoY2hlY2tIZWFkZXJNZXRhZGF0YSh0aGlzKXx8Y2hlY2tIZWFkZXJPcHRpb25zKHRhYmxlLGluZGV4KSl0aGlzLnNvcnREaXNhYmxlZD10cnVlO2lmKGNoZWNrSGVhZGVyT3B0aW9uc1NvcnRpbmdMb2NrZWQodGFibGUsaW5kZXgpKXRoaXMub3JkZXI9dGhpcy5sb2NrZWRPcmRlcj1jaGVja0hlYWRlck9wdGlvbnNTb3J0aW5nTG9ja2VkKHRhYmxlLGluZGV4KTtpZighdGhpcy5zb3J0RGlzYWJsZWQpe3ZhciAkdGg9JCh0aGlzKS5hZGRDbGFzcyh0YWJsZS5jb25maWcuY3NzSGVhZGVyKTtpZih0YWJsZS5jb25maWcub25SZW5kZXJIZWFkZXIpdGFibGUuY29uZmlnLm9uUmVuZGVySGVhZGVyLmFwcGx5KCR0aCk7fXRhYmxlLmNvbmZpZy5oZWFkZXJMaXN0W2luZGV4XT10aGlzO30pO2lmKHRhYmxlLmNvbmZpZy5kZWJ1Zyl7YmVuY2htYXJrKCJCdWlsdCBoZWFkZXJzOiIsdGltZSk7bG9nKCR0YWJsZUhlYWRlcnMpO31yZXR1cm4gJHRhYmxlSGVhZGVyczt9O2Z1bmN0aW9uIGNvbXB1dGVUYWJsZUhlYWRlckNlbGxJbmRleGVzKHQpe3ZhciBtYXRyaXg9W107dmFyIGxvb2t1cD17fTt2YXIgdGhlYWQ9dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnVEhFQUQnKVswXTt2YXIgdHJzPXRoZWFkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdUUicpO2Zvcih2YXIgaT0wO2k8dHJzLmxlbmd0aDtpKyspe3ZhciBjZWxscz10cnNbaV0uY2VsbHM7Zm9yKHZhciBqPTA7ajxjZWxscy5sZW5ndGg7aisrKXt2YXIgYz1jZWxsc1tqXTt2YXIgcm93SW5kZXg9Yy5wYXJlbnROb2RlLnJvd0luZGV4O3ZhciBjZWxsSWQ9cm93SW5kZXgrIi0iK2MuY2VsbEluZGV4O3ZhciByb3dTcGFuPWMucm93U3Bhbnx8MTt2YXIgY29sU3Bhbj1jLmNvbFNwYW58fDEKdmFyIGZpcnN0QXZhaWxDb2w7aWYodHlwZW9mKG1hdHJpeFtyb3dJbmRleF0pPT0idW5kZWZpbmVkIil7bWF0cml4W3Jvd0luZGV4XT1bXTt9Zm9yKHZhciBrPTA7azxtYXRyaXhbcm93SW5kZXhdLmxlbmd0aCsxO2srKyl7aWYodHlwZW9mKG1hdHJpeFtyb3dJbmRleF1ba10pPT0idW5kZWZpbmVkIil7Zmlyc3RBdmFpbENvbD1rO2JyZWFrO319bG9va3VwW2NlbGxJZF09Zmlyc3RBdmFpbENvbDtmb3IodmFyIGs9cm93SW5kZXg7azxyb3dJbmRleCtyb3dTcGFuO2srKyl7aWYodHlwZW9mKG1hdHJpeFtrXSk9PSJ1bmRlZmluZWQiKXttYXRyaXhba109W107fXZhciBtYXRyaXhyb3c9bWF0cml4W2tdO2Zvcih2YXIgbD1maXJzdEF2YWlsQ29sO2w8Zmlyc3RBdmFpbENvbCtjb2xTcGFuO2wrKyl7bWF0cml4cm93W2xdPSJ4Ijt9fX19cmV0dXJuIGxvb2t1cDt9ZnVuY3Rpb24gY2hlY2tDZWxsQ29sU3Bhbih0YWJsZSxyb3dzLHJvdyl7dmFyIGFycj1bXSxyPXRhYmxlLnRIZWFkLnJvd3MsYz1yW3Jvd10uY2VsbHM7Zm9yKHZhciBpPTA7aTxjLmxlbmd0aDtpKyspe3ZhciBjZWxsPWNbaV07aWYoY2VsbC5jb2xTcGFuPjEpe2Fycj1hcnIuY29uY2F0KGNoZWNrQ2VsbENvbFNwYW4odGFibGUsaGVhZGVyQXJyLHJvdysrKSk7fWVsc2V7aWYodGFibGUudEhlYWQubGVuZ3RoPT0xfHwoY2VsbC5yb3dTcGFuPjF8fCFyW3JvdysxXSkpe2Fyci5wdXNoKGNlbGwpO319fXJldHVybiBhcnI7fTtmdW5jdGlvbiBjaGVja0hlYWRlck1ldGFkYXRhKGNlbGwpe2lmKCgkLm1ldGFkYXRhKSYmKCQoY2VsbCkubWV0YWRhdGEoKS5zb3J0ZXI9PT1mYWxzZSkpe3JldHVybiB0cnVlO307cmV0dXJuIGZhbHNlO31mdW5jdGlvbiBjaGVja0hlYWRlck9wdGlvbnModGFibGUsaSl7aWYoKHRhYmxlLmNvbmZpZy5oZWFkZXJzW2ldKSYmKHRhYmxlLmNvbmZpZy5oZWFkZXJzW2ldLnNvcnRlcj09PWZhbHNlKSl7cmV0dXJuIHRydWU7fTtyZXR1cm4gZmFsc2U7fWZ1bmN0aW9uIGNoZWNrSGVhZGVyT3B0aW9uc1NvcnRpbmdMb2NrZWQodGFibGUsaSl7aWYoKHRhYmxlLmNvbmZpZy5oZWFkZXJzW2ldKSYmKHRhYmxlLmNvbmZpZy5oZWFkZXJzW2ldLmxvY2tlZE9yZGVyKSlyZXR1cm4gdGFibGUuY29uZmlnLmhlYWRlcnNbaV0ubG9ja2VkT3JkZXI7cmV0dXJuIGZhbHNlO31mdW5jdGlvbiBhcHBseVdpZGdldCh0YWJsZSl7dmFyIGM9dGFibGUuY29uZmlnLndpZGdldHM7dmFyIGw9Yy5sZW5ndGg7Zm9yKHZhciBpPTA7aTxsO2krKyl7Z2V0V2lkZ2V0QnlJZChjW2ldKS5mb3JtYXQodGFibGUpO319ZnVuY3Rpb24gZ2V0V2lkZ2V0QnlJZChuYW1lKXt2YXIgbD13aWRnZXRzLmxlbmd0aDtmb3IodmFyIGk9MDtpPGw7aSsrKXtpZih3aWRnZXRzW2ldLmlkLnRvTG93ZXJDYXNlKCk9PW5hbWUudG9Mb3dlckNhc2UoKSl7cmV0dXJuIHdpZGdldHNbaV07fX19O2Z1bmN0aW9uIGZvcm1hdFNvcnRpbmdPcmRlcih2KXtpZih0eXBlb2YodikhPSJOdW1iZXIiKXtyZXR1cm4odi50b0xvd2VyQ2FzZSgpPT0iZGVzYyIpPzE6MDt9ZWxzZXtyZXR1cm4odj09MSk/MTowO319ZnVuY3Rpb24gaXNWYWx1ZUluQXJyYXkodixhKXt2YXIgbD1hLmxlbmd0aDtmb3IodmFyIGk9MDtpPGw7aSsrKXtpZihhW2ldWzBdPT12KXtyZXR1cm4gdHJ1ZTt9fXJldHVybiBmYWxzZTt9ZnVuY3Rpb24gc2V0SGVhZGVyc0Nzcyh0YWJsZSwkaGVhZGVycyxsaXN0LGNzcyl7JGhlYWRlcnMucmVtb3ZlQ2xhc3MoY3NzWzBdKS5yZW1vdmVDbGFzcyhjc3NbMV0pO3ZhciBoPVtdOyRoZWFkZXJzLmVhY2goZnVuY3Rpb24ob2Zmc2V0KXtpZighdGhpcy5zb3J0RGlzYWJsZWQpe2hbdGhpcy5jb2x1bW5dPSQodGhpcyk7fX0pO3ZhciBsPWxpc3QubGVuZ3RoO2Zvcih2YXIgaT0wO2k8bDtpKyspe2hbbGlzdFtpXVswXV0uYWRkQ2xhc3MoY3NzW2xpc3RbaV1bMV1dKTt9fWZ1bmN0aW9uIGZpeENvbHVtbldpZHRoKHRhYmxlLCRoZWFkZXJzKXt2YXIgYz10YWJsZS5jb25maWc7aWYoYy53aWR0aEZpeGVkKXt2YXIgY29sZ3JvdXA9JCgnPGNvbGdyb3VwPicpOyQoInRyOmZpcnN0IHRkIix0YWJsZS50Qm9kaWVzWzBdKS5lYWNoKGZ1bmN0aW9uKCl7Y29sZ3JvdXAuYXBwZW5kKCQoJzxjb2w+JykuY3NzKCd3aWR0aCcsJCh0aGlzKS53aWR0aCgpKSk7fSk7JCh0YWJsZSkucHJlcGVuZChjb2xncm91cCk7fTt9ZnVuY3Rpb24gdXBkYXRlSGVhZGVyU29ydENvdW50KHRhYmxlLHNvcnRMaXN0KXt2YXIgYz10YWJsZS5jb25maWcsbD1zb3J0TGlzdC5sZW5ndGg7Zm9yKHZhciBpPTA7aTxsO2krKyl7dmFyIHM9c29ydExpc3RbaV0sbz1jLmhlYWRlckxpc3Rbc1swXV07by5jb3VudD1zWzFdO28uY291bnQrKzt9fWZ1bmN0aW9uIG11bHRpc29ydCh0YWJsZSxzb3J0TGlzdCxjYWNoZSl7aWYodGFibGUuY29uZmlnLmRlYnVnKXt2YXIgc29ydFRpbWU9bmV3IERhdGUoKTt9dmFyIGR5bmFtaWNFeHA9InZhciBzb3J0V3JhcHBlciA9IGZ1bmN0aW9uKGEsYikgeyIsbD1zb3J0TGlzdC5sZW5ndGg7Zm9yKHZhciBpPTA7aTxsO2krKyl7dmFyIGM9c29ydExpc3RbaV1bMF07dmFyIG9yZGVyPXNvcnRMaXN0W2ldWzFdO3ZhciBzPSh0YWJsZS5jb25maWcucGFyc2Vyc1tjXS50eXBlPT0idGV4dCIpPygob3JkZXI9PTApP21ha2VTb3J0RnVuY3Rpb24oInRleHQiLCJhc2MiLGMpOm1ha2VTb3J0RnVuY3Rpb24oInRleHQiLCJkZXNjIixjKSk6KChvcmRlcj09MCk/bWFrZVNvcnRGdW5jdGlvbigibnVtZXJpYyIsImFzYyIsYyk6bWFrZVNvcnRGdW5jdGlvbigibnVtZXJpYyIsImRlc2MiLGMpKTt2YXIgZT0iZSIraTtkeW5hbWljRXhwKz0idmFyICIrZSsiID0gIitzO2R5bmFtaWNFeHArPSJpZigiK2UrIikgeyByZXR1cm4gIitlKyI7IH0gIjtkeW5hbWljRXhwKz0iZWxzZSB7ICI7fXZhciBvcmdPcmRlckNvbD1jYWNoZS5ub3JtYWxpemVkWzBdLmxlbmd0aC0xO2R5bmFtaWNFeHArPSJyZXR1cm4gYVsiK29yZ09yZGVyQ29sKyJdLWJbIitvcmdPcmRlckNvbCsiXTsiO2Zvcih2YXIgaT0wO2k8bDtpKyspe2R5bmFtaWNFeHArPSJ9OyAiO31keW5hbWljRXhwKz0icmV0dXJuIDA7ICI7ZHluYW1pY0V4cCs9In07ICI7aWYodGFibGUuY29uZmlnLmRlYnVnKXtiZW5jaG1hcmsoIkV2YWxpbmcgZXhwcmVzc2lvbjoiK2R5bmFtaWNFeHAsbmV3IERhdGUoKSk7fWV2YWwoZHluYW1pY0V4cCk7Y2FjaGUubm9ybWFsaXplZC5zb3J0KHNvcnRXcmFwcGVyKTtpZih0YWJsZS5jb25maWcuZGVidWcpe2JlbmNobWFyaygiU29ydGluZyBvbiAiK3NvcnRMaXN0LnRvU3RyaW5nKCkrIiBhbmQgZGlyICIrb3JkZXIrIiB0aW1lOiIsc29ydFRpbWUpO31yZXR1cm4gY2FjaGU7fTtmdW5jdGlvbiBtYWtlU29ydEZ1bmN0aW9uKHR5cGUsZGlyZWN0aW9uLGluZGV4KXt2YXIgYT0iYVsiK2luZGV4KyJdIixiPSJiWyIraW5kZXgrIl0iO2lmKHR5cGU9PSd0ZXh0JyYmZGlyZWN0aW9uPT0nYXNjJyl7cmV0dXJuIigiK2ErIiA9PSAiK2IrIiA/IDAgOiAoIithKyIgPT09IG51bGwgPyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgOiAoIitiKyIgPT09IG51bGwgPyBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgOiAoIithKyIgPCAiK2IrIikgPyAtMSA6IDEgKSkpOyI7fWVsc2UgaWYodHlwZT09J3RleHQnJiZkaXJlY3Rpb249PSdkZXNjJyl7cmV0dXJuIigiK2ErIiA9PSAiK2IrIiA/IDAgOiAoIithKyIgPT09IG51bGwgPyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgOiAoIitiKyIgPT09IG51bGwgPyBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgOiAoIitiKyIgPCAiK2ErIikgPyAtMSA6IDEgKSkpOyI7fWVsc2UgaWYodHlwZT09J251bWVyaWMnJiZkaXJlY3Rpb249PSdhc2MnKXtyZXR1cm4iKCIrYSsiID09PSBudWxsICYmICIrYisiID09PSBudWxsKSA/IDAgOigiK2ErIiA9PT0gbnVsbCA/IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSA6ICgiK2IrIiA9PT0gbnVsbCA/IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSA6ICIrYSsiIC0gIitiKyIpKTsiO31lbHNlIGlmKHR5cGU9PSdudW1lcmljJyYmZGlyZWN0aW9uPT0nZGVzYycpe3JldHVybiIoIithKyIgPT09IG51bGwgJiYgIitiKyIgPT09IG51bGwpID8gMCA6KCIrYSsiID09PSBudWxsID8gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIDogKCIrYisiID09PSBudWxsID8gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZIDogIitiKyIgLSAiK2ErIikpOyI7fX07ZnVuY3Rpb24gbWFrZVNvcnRUZXh0KGkpe3JldHVybiIoKGFbIitpKyJdIDwgYlsiK2krIl0pID8gLTEgOiAoKGFbIitpKyJdID4gYlsiK2krIl0pID8gMSA6IDApKTsiO307ZnVuY3Rpb24gbWFrZVNvcnRUZXh0RGVzYyhpKXtyZXR1cm4iKChiWyIraSsiXSA8IGFbIitpKyJdKSA/IC0xIDogKChiWyIraSsiXSA+IGFbIitpKyJdKSA/IDEgOiAwKSk7Ijt9O2Z1bmN0aW9uIG1ha2VTb3J0TnVtZXJpYyhpKXtyZXR1cm4iYVsiK2krIl0tYlsiK2krIl07Ijt9O2Z1bmN0aW9uIG1ha2VTb3J0TnVtZXJpY0Rlc2MoaSl7cmV0dXJuImJbIitpKyJdLWFbIitpKyJdOyI7fTtmdW5jdGlvbiBzb3J0VGV4dChhLGIpe2lmKHRhYmxlLmNvbmZpZy5zb3J0TG9jYWxlQ29tcGFyZSlyZXR1cm4gYS5sb2NhbGVDb21wYXJlKGIpO3JldHVybigoYTxiKT8tMTooKGE+Yik/MTowKSk7fTtmdW5jdGlvbiBzb3J0VGV4dERlc2MoYSxiKXtpZih0YWJsZS5jb25maWcuc29ydExvY2FsZUNvbXBhcmUpcmV0dXJuIGIubG9jYWxlQ29tcGFyZShhKTtyZXR1cm4oKGI8YSk/LTE6KChiPmEpPzE6MCkpO307ZnVuY3Rpb24gc29ydE51bWVyaWMoYSxiKXtyZXR1cm4gYS1iO307ZnVuY3Rpb24gc29ydE51bWVyaWNEZXNjKGEsYil7cmV0dXJuIGItYTt9O2Z1bmN0aW9uIGdldENhY2hlZFNvcnRUeXBlKHBhcnNlcnMsaSl7cmV0dXJuIHBhcnNlcnNbaV0udHlwZTt9O3RoaXMuY29uc3RydWN0PWZ1bmN0aW9uKHNldHRpbmdzKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoIXRoaXMudEhlYWR8fCF0aGlzLnRCb2RpZXMpcmV0dXJuO3ZhciAkdGhpcywkZG9jdW1lbnQsJGhlYWRlcnMsY2FjaGUsY29uZmlnLHNoaWZ0RG93bj0wLHNvcnRPcmRlcjt0aGlzLmNvbmZpZz17fTtjb25maWc9JC5leHRlbmQodGhpcy5jb25maWcsJC50YWJsZXNvcnRlci5kZWZhdWx0cyxzZXR0aW5ncyk7JHRoaXM9JCh0aGlzKTskLmRhdGEodGhpcywidGFibGVzb3J0ZXIiLGNvbmZpZyk7JGhlYWRlcnM9YnVpbGRIZWFkZXJzKHRoaXMpO3RoaXMuY29uZmlnLnBhcnNlcnM9YnVpbGRQYXJzZXJDYWNoZSh0aGlzLCRoZWFkZXJzKTtjYWNoZT1idWlsZENhY2hlKHRoaXMpO3ZhciBzb3J0Q1NTPVtjb25maWcuY3NzRGVzYyxjb25maWcuY3NzQXNjXTtmaXhDb2x1bW5XaWR0aCh0aGlzKTskaGVhZGVycy5jbGljayhmdW5jdGlvbihlKXt2YXIgdG90YWxSb3dzPSgkdGhpc1swXS50Qm9kaWVzWzBdJiYkdGhpc1swXS50Qm9kaWVzWzBdLnJvd3MubGVuZ3RoKXx8MDtpZighdGhpcy5zb3J0RGlzYWJsZWQmJnRvdGFsUm93cz4wKXskdGhpcy50cmlnZ2VyKCJzb3J0U3RhcnQiKTt2YXIgJGNlbGw9JCh0aGlzKTt2YXIgaT10aGlzLmNvbHVtbjt0aGlzLm9yZGVyPXRoaXMuY291bnQrKyUyO2lmKHRoaXMubG9ja2VkT3JkZXIpdGhpcy5vcmRlcj10aGlzLmxvY2tlZE9yZGVyO2lmKCFlW2NvbmZpZy5zb3J0TXVsdGlTb3J0S2V5XSl7Y29uZmlnLnNvcnRMaXN0PVtdO2lmKGNvbmZpZy5zb3J0Rm9yY2UhPW51bGwpe3ZhciBhPWNvbmZpZy5zb3J0Rm9yY2U7Zm9yKHZhciBqPTA7ajxhLmxlbmd0aDtqKyspe2lmKGFbal1bMF0hPWkpe2NvbmZpZy5zb3J0TGlzdC5wdXNoKGFbal0pO319fWNvbmZpZy5zb3J0TGlzdC5wdXNoKFtpLHRoaXMub3JkZXJdKTt9ZWxzZXtpZihpc1ZhbHVlSW5BcnJheShpLGNvbmZpZy5zb3J0TGlzdCkpe2Zvcih2YXIgaj0wO2o8Y29uZmlnLnNvcnRMaXN0Lmxlbmd0aDtqKyspe3ZhciBzPWNvbmZpZy5zb3J0TGlzdFtqXSxvPWNvbmZpZy5oZWFkZXJMaXN0W3NbMF1dO2lmKHNbMF09PWkpe28uY291bnQ9c1sxXTtvLmNvdW50Kys7c1sxXT1vLmNvdW50JTI7fX19ZWxzZXtjb25maWcuc29ydExpc3QucHVzaChbaSx0aGlzLm9yZGVyXSk7fX07c2V0VGltZW91dChmdW5jdGlvbigpe3NldEhlYWRlcnNDc3MoJHRoaXNbMF0sJGhlYWRlcnMsY29uZmlnLnNvcnRMaXN0LHNvcnRDU1MpO2FwcGVuZFRvVGFibGUoJHRoaXNbMF0sbXVsdGlzb3J0KCR0aGlzWzBdLGNvbmZpZy5zb3J0TGlzdCxjYWNoZSkpO30sMSk7cmV0dXJuIGZhbHNlO319KS5tb3VzZWRvd24oZnVuY3Rpb24oKXtpZihjb25maWcuY2FuY2VsU2VsZWN0aW9uKXt0aGlzLm9uc2VsZWN0c3RhcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gZmFsc2V9O3JldHVybiBmYWxzZTt9fSk7JHRoaXMuYmluZCgidXBkYXRlIixmdW5jdGlvbigpe3ZhciBtZT10aGlzO3NldFRpbWVvdXQoZnVuY3Rpb24oKXttZS5jb25maWcucGFyc2Vycz1idWlsZFBhcnNlckNhY2hlKG1lLCRoZWFkZXJzKTtjYWNoZT1idWlsZENhY2hlKG1lKTt9LDEpO30pLmJpbmQoInVwZGF0ZUNlbGwiLGZ1bmN0aW9uKGUsY2VsbCl7dmFyIGNvbmZpZz10aGlzLmNvbmZpZzt2YXIgcG9zPVsoY2VsbC5wYXJlbnROb2RlLnJvd0luZGV4LTEpLGNlbGwuY2VsbEluZGV4XTtjYWNoZS5ub3JtYWxpemVkW3Bvc1swXV1bcG9zWzFdXT1jb25maWcucGFyc2Vyc1twb3NbMV1dLmZvcm1hdChnZXRFbGVtZW50VGV4dChjb25maWcsY2VsbCksY2VsbCk7fSkuYmluZCgic29ydG9uIixmdW5jdGlvbihlLGxpc3QpeyQodGhpcykudHJpZ2dlcigic29ydFN0YXJ0Iik7Y29uZmlnLnNvcnRMaXN0PWxpc3Q7dmFyIHNvcnRMaXN0PWNvbmZpZy5zb3J0TGlzdDt1cGRhdGVIZWFkZXJTb3J0Q291bnQodGhpcyxzb3J0TGlzdCk7c2V0SGVhZGVyc0Nzcyh0aGlzLCRoZWFkZXJzLHNvcnRMaXN0LHNvcnRDU1MpO2FwcGVuZFRvVGFibGUodGhpcyxtdWx0aXNvcnQodGhpcyxzb3J0TGlzdCxjYWNoZSkpO30pLmJpbmQoImFwcGVuZENhY2hlIixmdW5jdGlvbigpe2FwcGVuZFRvVGFibGUodGhpcyxjYWNoZSk7fSkuYmluZCgiYXBwbHlXaWRnZXRJZCIsZnVuY3Rpb24oZSxpZCl7Z2V0V2lkZ2V0QnlJZChpZCkuZm9ybWF0KHRoaXMpO30pLmJpbmQoImFwcGx5V2lkZ2V0cyIsZnVuY3Rpb24oKXthcHBseVdpZGdldCh0aGlzKTt9KTtpZigkLm1ldGFkYXRhJiYoJCh0aGlzKS5tZXRhZGF0YSgpJiYkKHRoaXMpLm1ldGFkYXRhKCkuc29ydGxpc3QpKXtjb25maWcuc29ydExpc3Q9JCh0aGlzKS5tZXRhZGF0YSgpLnNvcnRsaXN0O31pZihjb25maWcuc29ydExpc3QubGVuZ3RoPjApeyR0aGlzLnRyaWdnZXIoInNvcnRvbiIsW2NvbmZpZy5zb3J0TGlzdF0pO31hcHBseVdpZGdldCh0aGlzKTt9KTt9O3RoaXMuYWRkUGFyc2VyPWZ1bmN0aW9uKHBhcnNlcil7dmFyIGw9cGFyc2Vycy5sZW5ndGgsYT10cnVlO2Zvcih2YXIgaT0wO2k8bDtpKyspe2lmKHBhcnNlcnNbaV0uaWQudG9Mb3dlckNhc2UoKT09cGFyc2VyLmlkLnRvTG93ZXJDYXNlKCkpe2E9ZmFsc2U7fX1pZihhKXtwYXJzZXJzLnB1c2gocGFyc2VyKTt9O307dGhpcy5hZGRXaWRnZXQ9ZnVuY3Rpb24od2lkZ2V0KXt3aWRnZXRzLnB1c2god2lkZ2V0KTt9O3RoaXMuZm9ybWF0RmxvYXQ9ZnVuY3Rpb24ocyl7dmFyIGk9cGFyc2VGbG9hdChzKTtyZXR1cm4oaXNOYU4oaSkpPzA6aTt9O3RoaXMuZm9ybWF0SW50PWZ1bmN0aW9uKHMpe3ZhciBpPXBhcnNlSW50KHMpO3JldHVybihpc05hTihpKSk/MDppO307dGhpcy5pc0RpZ2l0PWZ1bmN0aW9uKHMsY29uZmlnKXtyZXR1cm4vXlstK10/XGQqJC8udGVzdCgkLnRyaW0ocy5yZXBsYWNlKC9bLC4nXS9nLCcnKSkpO307dGhpcy5jbGVhclRhYmxlQm9keT1mdW5jdGlvbih0YWJsZSl7aWYoJC5icm93c2VyLm1zaWUpe2Z1bmN0aW9uIGVtcHR5KCl7d2hpbGUodGhpcy5maXJzdENoaWxkKXRoaXMucmVtb3ZlQ2hpbGQodGhpcy5maXJzdENoaWxkKTt9ZW1wdHkuYXBwbHkodGFibGUudEJvZGllc1swXSk7fWVsc2V7dGFibGUudEJvZGllc1swXS5pbm5lckhUTUw9IiI7fX07fX0pOyQuZm4uZXh0ZW5kKHt0YWJsZXNvcnRlcjokLnRhYmxlc29ydGVyLmNvbnN0cnVjdH0pO3ZhciB0cz0kLnRhYmxlc29ydGVyO3RzLmFkZFBhcnNlcih7aWQ6InRleHQiLGlzOmZ1bmN0aW9uKHMpe3JldHVybiB0cnVlO30sZm9ybWF0OmZ1bmN0aW9uKHMpe3JldHVybiAkLnRyaW0ocy50b0xvY2FsZUxvd2VyQ2FzZSgpKTt9LHR5cGU6InRleHQifSk7dHMuYWRkUGFyc2VyKHtpZDoiZGlnaXQiLGlzOmZ1bmN0aW9uKHMsdGFibGUpe3ZhciBjPXRhYmxlLmNvbmZpZztyZXR1cm4gJC50YWJsZXNvcnRlci5pc0RpZ2l0KHMsYyk7fSxmb3JtYXQ6ZnVuY3Rpb24ocyl7cmV0dXJuICQudGFibGVzb3J0ZXIuZm9ybWF0RmxvYXQocyk7fSx0eXBlOiJudW1lcmljIn0pO3RzLmFkZFBhcnNlcih7aWQ6ImN1cnJlbmN5IixpczpmdW5jdGlvbihzKXtyZXR1cm4vXlvCoyTigqw/Ll0vLnRlc3Qocyk7fSxmb3JtYXQ6ZnVuY3Rpb24ocyl7cmV0dXJuICQudGFibGVzb3J0ZXIuZm9ybWF0RmxvYXQocy5yZXBsYWNlKG5ldyBSZWdFeHAoL1vCoyTigqxdL2cpLCIiKSk7fSx0eXBlOiJudW1lcmljIn0pO3RzLmFkZFBhcnNlcih7aWQ6ImlwQWRkcmVzcyIsaXM6ZnVuY3Rpb24ocyl7cmV0dXJuL15cZHsyLDN9W1wuXVxkezIsM31bXC5dXGR7MiwzfVtcLl1cZHsyLDN9JC8udGVzdChzKTt9LGZvcm1hdDpmdW5jdGlvbihzKXt2YXIgYT1zLnNwbGl0KCIuIikscj0iIixsPWEubGVuZ3RoO2Zvcih2YXIgaT0wO2k8bDtpKyspe3ZhciBpdGVtPWFbaV07aWYoaXRlbS5sZW5ndGg9PTIpe3IrPSIwIitpdGVtO31lbHNle3IrPWl0ZW07fX1yZXR1cm4gJC50YWJsZXNvcnRlci5mb3JtYXRGbG9hdChyKTt9LHR5cGU6Im51bWVyaWMifSk7dHMuYWRkUGFyc2VyKHtpZDoidXJsIixpczpmdW5jdGlvbihzKXtyZXR1cm4vXihodHRwcz98ZnRwfGZpbGUpOlwvXC8kLy50ZXN0KHMpO30sZm9ybWF0OmZ1bmN0aW9uKHMpe3JldHVybiBqUXVlcnkudHJpbShzLnJlcGxhY2UobmV3IFJlZ0V4cCgvKGh0dHBzP3xmdHB8ZmlsZSk6XC9cLy8pLCcnKSk7fSx0eXBlOiJ0ZXh0In0pO3RzLmFkZFBhcnNlcih7aWQ6Imlzb0RhdGUiLGlzOmZ1bmN0aW9uKHMpe3JldHVybi9eXGR7NH1bXC8tXVxkezEsMn1bXC8tXVxkezEsMn0kLy50ZXN0KHMpO30sZm9ybWF0OmZ1bmN0aW9uKHMpe3JldHVybiAkLnRhYmxlc29ydGVyLmZvcm1hdEZsb2F0KChzIT0iIik/bmV3IERhdGUocy5yZXBsYWNlKG5ldyBSZWdFeHAoLy0vZyksIi8iKSkuZ2V0VGltZSgpOiIwIik7fSx0eXBlOiJudW1lcmljIn0pO3RzLmFkZFBhcnNlcih7aWQ6InBlcmNlbnQiLGlzOmZ1bmN0aW9uKHMpe3JldHVybi9cJSQvLnRlc3QoJC50cmltKHMpKTt9LGZvcm1hdDpmdW5jdGlvbihzKXtyZXR1cm4gJC50YWJsZXNvcnRlci5mb3JtYXRGbG9hdChzLnJlcGxhY2UobmV3IFJlZ0V4cCgvJS9nKSwiIikpO30sdHlwZToibnVtZXJpYyJ9KTt0cy5hZGRQYXJzZXIoe2lkOiJ1c0xvbmdEYXRlIixpczpmdW5jdGlvbihzKXtyZXR1cm4gcy5tYXRjaChuZXcgUmVnRXhwKC9eW0EtWmEtel17MywxMH1cLj8gWzAtOV17MSwyfSwgKFswLTldezR9fCc/WzAtOV17Mn0pICgoWzAtMl0/WzAtOV06WzAtNV1bMC05XSl8KFswLTFdP1swLTldOlswLTVdWzAtOV1ccyhBTXxQTSkpKSQvKSk7fSxmb3JtYXQ6ZnVuY3Rpb24ocyl7cmV0dXJuICQudGFibGVzb3J0ZXIuZm9ybWF0RmxvYXQobmV3IERhdGUocykuZ2V0VGltZSgpKTt9LHR5cGU6Im51bWVyaWMifSk7dHMuYWRkUGFyc2VyKHtpZDoic2hvcnREYXRlIixpczpmdW5jdGlvbihzKXtyZXR1cm4vXGR7MSwyfVtcL1wtXVxkezEsMn1bXC9cLV1cZHsyLDR9Ly50ZXN0KHMpO30sZm9ybWF0OmZ1bmN0aW9uKHMsdGFibGUpe3ZhciBjPXRhYmxlLmNvbmZpZztzPXMucmVwbGFjZSgvXC0vZywiLyIpO2lmKGMuZGF0ZUZvcm1hdD09InVzIil7cz1zLnJlcGxhY2UoLyhcZHsxLDJ9KVtcL1wtXShcZHsxLDJ9KVtcL1wtXShcZHs0fSkvLCIkMy8kMS8kMiIpO31lbHNlIGlmKGMuZGF0ZUZvcm1hdD09InVrIil7cz1zLnJlcGxhY2UoLyhcZHsxLDJ9KVtcL1wtXShcZHsxLDJ9KVtcL1wtXShcZHs0fSkvLCIkMy8kMi8kMSIpO31lbHNlIGlmKGMuZGF0ZUZvcm1hdD09ImRkL21tL3l5Inx8Yy5kYXRlRm9ybWF0PT0iZGQtbW0teXkiKXtzPXMucmVwbGFjZSgvKFxkezEsMn0pW1wvXC1dKFxkezEsMn0pW1wvXC1dKFxkezJ9KS8sIiQxLyQyLyQzIik7fXJldHVybiAkLnRhYmxlc29ydGVyLmZvcm1hdEZsb2F0KG5ldyBEYXRlKHMpLmdldFRpbWUoKSk7fSx0eXBlOiJudW1lcmljIn0pO3RzLmFkZFBhcnNlcih7aWQ6InRpbWUiLGlzOmZ1bmN0aW9uKHMpe3JldHVybi9eKChbMC0yXT9bMC05XTpbMC01XVswLTldKXwoWzAtMV0/WzAtOV06WzAtNV1bMC05XVxzKGFtfHBtKSkpJC8udGVzdChzKTt9LGZvcm1hdDpmdW5jdGlvbihzKXtyZXR1cm4gJC50YWJsZXNvcnRlci5mb3JtYXRGbG9hdChuZXcgRGF0ZSgiMjAwMC8wMS8wMSAiK3MpLmdldFRpbWUoKSk7fSx0eXBlOiJudW1lcmljIn0pO3RzLmFkZFBhcnNlcih7aWQ6Im1ldGFkYXRhIixpczpmdW5jdGlvbihzKXtyZXR1cm4gZmFsc2U7fSxmb3JtYXQ6ZnVuY3Rpb24ocyx0YWJsZSxjZWxsKXt2YXIgYz10YWJsZS5jb25maWcscD0oIWMucGFyc2VyTWV0YWRhdGFOYW1lKT8nc29ydFZhbHVlJzpjLnBhcnNlck1ldGFkYXRhTmFtZTtyZXR1cm4gJChjZWxsKS5tZXRhZGF0YSgpW3BdO30sdHlwZToibnVtZXJpYyJ9KTt0cy5hZGRXaWRnZXQoe2lkOiJ6ZWJyYSIsZm9ybWF0OmZ1bmN0aW9uKHRhYmxlKXtpZih0YWJsZS5jb25maWcuZGVidWcpe3ZhciB0aW1lPW5ldyBEYXRlKCk7fXZhciAkdHIscm93PS0xLG9kZDskKCJ0cjp2aXNpYmxlIix0YWJsZS50Qm9kaWVzWzBdKS5lYWNoKGZ1bmN0aW9uKGkpeyR0cj0kKHRoaXMpO2lmKCEkdHIuaGFzQ2xhc3ModGFibGUuY29uZmlnLmNzc0NoaWxkUm93KSlyb3crKztvZGQ9KHJvdyUyPT0wKTskdHIucmVtb3ZlQ2xhc3ModGFibGUuY29uZmlnLndpZGdldFplYnJhLmNzc1tvZGQ/MDoxXSkuYWRkQ2xhc3ModGFibGUuY29uZmlnLndpZGdldFplYnJhLmNzc1tvZGQ/MTowXSl9KTtpZih0YWJsZS5jb25maWcuZGVidWcpeyQudGFibGVzb3J0ZXIuYmVuY2htYXJrKCJBcHBseWluZyBaZWJyYSB3aWRnZXQiLHRpbWUpO319fSk7fSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/js/moment.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8hIG1vbWVudC5qcwovLyEgdmVyc2lvbiA6IDIuOS4wCi8vISBhdXRob3JzIDogVGltIFdvb2QsIElza3JlbiBDaGVybmV2LCBNb21lbnQuanMgY29udHJpYnV0b3JzCi8vISBsaWNlbnNlIDogTUlUCi8vISBtb21lbnRqcy5jb20KLy8hIGFycmFuZ8OpIHBhciBDbGF1ZGUgU0lPSEFOCihmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGEsYixjKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAyOnJldHVybiBudWxsIT1hP2E6YjtjYXNlIDM6cmV0dXJuIG51bGwhPWE/YTpudWxsIT1iP2I6YztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW1wbGVtZW50IG1lIil9fWZ1bmN0aW9uIGMoYSxiKXtyZXR1cm4gQmIuY2FsbChhLGIpfWZ1bmN0aW9uIGQoKXtyZXR1cm57ZW1wdHk6ITEsdW51c2VkVG9rZW5zOltdLHVudXNlZElucHV0OltdLG92ZXJmbG93Oi0yLGNoYXJzTGVmdE92ZXI6MCxudWxsSW5wdXQ6ITEsaW52YWxpZE1vbnRoOm51bGwsaW52YWxpZEZvcm1hdDohMSx1c2VySW52YWxpZGF0ZWQ6ITEsaXNvOiExfX1mdW5jdGlvbiBlKGEpe3ZiLnN1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5ncz09PSExJiYidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKCJEZXByZWNhdGlvbiB3YXJuaW5nOiAiK2EpfWZ1bmN0aW9uIGYoYSxiKXt2YXIgYz0hMDtyZXR1cm4gbyhmdW5jdGlvbigpe3JldHVybiBjJiYoZShhKSxjPSExKSxiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sYil9ZnVuY3Rpb24gZyhhLGIpe3NjW2FdfHwoZShiKSxzY1thXT0hMCl9ZnVuY3Rpb24gaChhLGIpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gcihhLmNhbGwodGhpcyxjKSxiKX19ZnVuY3Rpb24gaShhLGIpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkub3JkaW5hbChhLmNhbGwodGhpcyxjKSxiKX19ZnVuY3Rpb24gaihhLGIpe3ZhciBjLGQsZT0xMiooYi55ZWFyKCktYS55ZWFyKCkpKyhiLm1vbnRoKCktYS5tb250aCgpKSxmPWEuY2xvbmUoKS5hZGQoZSwibW9udGhzIik7cmV0dXJuIDA+Yi1mPyhjPWEuY2xvbmUoKS5hZGQoZS0xLCJtb250aHMiKSxkPShiLWYpLyhmLWMpKTooYz1hLmNsb25lKCkuYWRkKGUrMSwibW9udGhzIiksZD0oYi1mKS8oYy1mKSksLShlK2QpfWZ1bmN0aW9uIGsoYSxiLGMpe3ZhciBkO3JldHVybiBudWxsPT1jP2I6bnVsbCE9YS5tZXJpZGllbUhvdXI/YS5tZXJpZGllbUhvdXIoYixjKTpudWxsIT1hLmlzUE0/KGQ9YS5pc1BNKGMpLGQmJjEyPmImJihiKz0xMiksZHx8MTIhPT1ifHwoYj0wKSxiKTpifWZ1bmN0aW9uIGwoKXt9ZnVuY3Rpb24gbShhLGIpe2IhPT0hMSYmSChhKSxwKHRoaXMsYSksdGhpcy5fZD1uZXcgRGF0ZSgrYS5fZCksdWM9PT0hMSYmKHVjPSEwLHZiLnVwZGF0ZU9mZnNldCh0aGlzKSx1Yz0hMSl9ZnVuY3Rpb24gbihhKXt2YXIgYj1BKGEpLGM9Yi55ZWFyfHwwLGQ9Yi5xdWFydGVyfHwwLGU9Yi5tb250aHx8MCxmPWIud2Vla3x8MCxnPWIuZGF5fHwwLGg9Yi5ob3VyfHwwLGk9Yi5taW51dGV8fDAsaj1iLnNlY29uZHx8MCxrPWIubWlsbGlzZWNvbmR8fDA7dGhpcy5fbWlsbGlzZWNvbmRzPStrKzFlMypqKzZlNCppKzM2ZTUqaCx0aGlzLl9kYXlzPStnKzcqZix0aGlzLl9tb250aHM9K2UrMypkKzEyKmMsdGhpcy5fZGF0YT17fSx0aGlzLl9sb2NhbGU9dmIubG9jYWxlRGF0YSgpLHRoaXMuX2J1YmJsZSgpfWZ1bmN0aW9uIG8oYSxiKXtmb3IodmFyIGQgaW4gYiljKGIsZCkmJihhW2RdPWJbZF0pO3JldHVybiBjKGIsInRvU3RyaW5nIikmJihhLnRvU3RyaW5nPWIudG9TdHJpbmcpLGMoYiwidmFsdWVPZiIpJiYoYS52YWx1ZU9mPWIudmFsdWVPZiksYX1mdW5jdGlvbiBwKGEsYil7dmFyIGMsZCxlO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgYi5faXNBTW9tZW50T2JqZWN0JiYoYS5faXNBTW9tZW50T2JqZWN0PWIuX2lzQU1vbWVudE9iamVjdCksInVuZGVmaW5lZCIhPXR5cGVvZiBiLl9pJiYoYS5faT1iLl9pKSwidW5kZWZpbmVkIiE9dHlwZW9mIGIuX2YmJihhLl9mPWIuX2YpLCJ1bmRlZmluZWQiIT10eXBlb2YgYi5fbCYmKGEuX2w9Yi5fbCksInVuZGVmaW5lZCIhPXR5cGVvZiBiLl9zdHJpY3QmJihhLl9zdHJpY3Q9Yi5fc3RyaWN0KSwidW5kZWZpbmVkIiE9dHlwZW9mIGIuX3R6bSYmKGEuX3R6bT1iLl90em0pLCJ1bmRlZmluZWQiIT10eXBlb2YgYi5faXNVVEMmJihhLl9pc1VUQz1iLl9pc1VUQyksInVuZGVmaW5lZCIhPXR5cGVvZiBiLl9vZmZzZXQmJihhLl9vZmZzZXQ9Yi5fb2Zmc2V0KSwidW5kZWZpbmVkIiE9dHlwZW9mIGIuX3BmJiYoYS5fcGY9Yi5fcGYpLCJ1bmRlZmluZWQiIT10eXBlb2YgYi5fbG9jYWxlJiYoYS5fbG9jYWxlPWIuX2xvY2FsZSksS2IubGVuZ3RoPjApZm9yKGMgaW4gS2IpZD1LYltjXSxlPWJbZF0sInVuZGVmaW5lZCIhPXR5cGVvZiBlJiYoYVtkXT1lKTtyZXR1cm4gYX1mdW5jdGlvbiBxKGEpe3JldHVybiAwPmE/TWF0aC5jZWlsKGEpOk1hdGguZmxvb3IoYSl9ZnVuY3Rpb24gcihhLGIsYyl7Zm9yKHZhciBkPSIiK01hdGguYWJzKGEpLGU9YT49MDtkLmxlbmd0aDxiOylkPSIwIitkO3JldHVybihlP2M/IisiOiIiOiItIikrZH1mdW5jdGlvbiBzKGEsYil7dmFyIGM9e21pbGxpc2Vjb25kczowLG1vbnRoczowfTtyZXR1cm4gYy5tb250aHM9Yi5tb250aCgpLWEubW9udGgoKSsxMiooYi55ZWFyKCktYS55ZWFyKCkpLGEuY2xvbmUoKS5hZGQoYy5tb250aHMsIk0iKS5pc0FmdGVyKGIpJiYtLWMubW9udGhzLGMubWlsbGlzZWNvbmRzPStiLSthLmNsb25lKCkuYWRkKGMubW9udGhzLCJNIiksY31mdW5jdGlvbiB0KGEsYil7dmFyIGM7cmV0dXJuIGI9TShiLGEpLGEuaXNCZWZvcmUoYik/Yz1zKGEsYik6KGM9cyhiLGEpLGMubWlsbGlzZWNvbmRzPS1jLm1pbGxpc2Vjb25kcyxjLm1vbnRocz0tYy5tb250aHMpLGN9ZnVuY3Rpb24gdShhLGIpe3JldHVybiBmdW5jdGlvbihjLGQpe3ZhciBlLGY7cmV0dXJuIG51bGw9PT1kfHxpc05hTigrZCl8fChnKGIsIm1vbWVudCgpLiIrYisiKHBlcmlvZCwgbnVtYmVyKSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIG1vbWVudCgpLiIrYisiKG51bWJlciwgcGVyaW9kKS4iKSxmPWMsYz1kLGQ9ZiksYz0ic3RyaW5nIj09dHlwZW9mIGM/K2M6YyxlPXZiLmR1cmF0aW9uKGMsZCksdih0aGlzLGUsYSksdGhpc319ZnVuY3Rpb24gdihhLGIsYyxkKXt2YXIgZT1iLl9taWxsaXNlY29uZHMsZj1iLl9kYXlzLGc9Yi5fbW9udGhzO2Q9bnVsbD09ZD8hMDpkLGUmJmEuX2Quc2V0VGltZSgrYS5fZCtlKmMpLGYmJnBiKGEsIkRhdGUiLG9iKGEsIkRhdGUiKStmKmMpLGcmJm5iKGEsb2IoYSwiTW9udGgiKStnKmMpLGQmJnZiLnVwZGF0ZU9mZnNldChhLGZ8fGcpfWZ1bmN0aW9uIHcoYSl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhKX1mdW5jdGlvbiB4KGEpe3JldHVybiJbb2JqZWN0IERhdGVdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhKXx8YSBpbnN0YW5jZW9mIERhdGV9ZnVuY3Rpb24geShhLGIsYyl7dmFyIGQsZT1NYXRoLm1pbihhLmxlbmd0aCxiLmxlbmd0aCksZj1NYXRoLmFicyhhLmxlbmd0aC1iLmxlbmd0aCksZz0wO2ZvcihkPTA7ZT5kO2QrKykoYyYmYVtkXSE9PWJbZF18fCFjJiZDKGFbZF0pIT09QyhiW2RdKSkmJmcrKztyZXR1cm4gZytmfWZ1bmN0aW9uIHooYSl7aWYoYSl7dmFyIGI9YS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLyguKXMkLywiJDEiKTthPWxjW2FdfHxtY1tiXXx8Yn1yZXR1cm4gYX1mdW5jdGlvbiBBKGEpe3ZhciBiLGQsZT17fTtmb3IoZCBpbiBhKWMoYSxkKSYmKGI9eihkKSxiJiYoZVtiXT1hW2RdKSk7cmV0dXJuIGV9ZnVuY3Rpb24gQihiKXt2YXIgYyxkO2lmKDA9PT1iLmluZGV4T2YoIndlZWsiKSljPTcsZD0iZGF5IjtlbHNle2lmKDAhPT1iLmluZGV4T2YoIm1vbnRoIikpcmV0dXJuO2M9MTIsZD0ibW9udGgifXZiW2JdPWZ1bmN0aW9uKGUsZil7dmFyIGcsaCxpPXZiLl9sb2NhbGVbYl0saj1bXTtpZigibnVtYmVyIj09dHlwZW9mIGUmJihmPWUsZT1hKSxoPWZ1bmN0aW9uKGEpe3ZhciBiPXZiKCkudXRjKCkuc2V0KGQsYSk7cmV0dXJuIGkuY2FsbCh2Yi5fbG9jYWxlLGIsZXx8IiIpfSxudWxsIT1mKXJldHVybiBoKGYpO2ZvcihnPTA7Yz5nO2crKylqLnB1c2goaChnKSk7cmV0dXJuIGp9fWZ1bmN0aW9uIEMoYSl7dmFyIGI9K2EsYz0wO3JldHVybiAwIT09YiYmaXNGaW5pdGUoYikmJihjPWI+PTA/TWF0aC5mbG9vcihiKTpNYXRoLmNlaWwoYikpLGN9ZnVuY3Rpb24gRChhLGIpe3JldHVybiBuZXcgRGF0ZShEYXRlLlVUQyhhLGIrMSwwKSkuZ2V0VVRDRGF0ZSgpfWZ1bmN0aW9uIEUoYSxiLGMpe3JldHVybiBqYih2YihbYSwxMSwzMStiLWNdKSxiLGMpLndlZWt9ZnVuY3Rpb24gRihhKXtyZXR1cm4gRyhhKT8zNjY6MzY1fWZ1bmN0aW9uIEcoYSl7cmV0dXJuIGElND09PTAmJmElMTAwIT09MHx8YSU0MDA9PT0wfWZ1bmN0aW9uIEgoYSl7dmFyIGI7YS5fYSYmLTI9PT1hLl9wZi5vdmVyZmxvdyYmKGI9YS5fYVtEYl08MHx8YS5fYVtEYl0+MTE/RGI6YS5fYVtFYl08MXx8YS5fYVtFYl0+RChhLl9hW0NiXSxhLl9hW0RiXSk/RWI6YS5fYVtGYl08MHx8YS5fYVtGYl0+MjR8fDI0PT09YS5fYVtGYl0mJigwIT09YS5fYVtHYl18fDAhPT1hLl9hW0hiXXx8MCE9PWEuX2FbSWJdKT9GYjphLl9hW0diXTwwfHxhLl9hW0diXT41OT9HYjphLl9hW0hiXTwwfHxhLl9hW0hiXT41OT9IYjphLl9hW0liXTwwfHxhLl9hW0liXT45OTk/SWI6LTEsYS5fcGYuX292ZXJmbG93RGF5T2ZZZWFyJiYoQ2I+Ynx8Yj5FYikmJihiPUViKSxhLl9wZi5vdmVyZmxvdz1iKX1mdW5jdGlvbiBJKGIpe3JldHVybiBudWxsPT1iLl9pc1ZhbGlkJiYoYi5faXNWYWxpZD0haXNOYU4oYi5fZC5nZXRUaW1lKCkpJiZiLl9wZi5vdmVyZmxvdzwwJiYhYi5fcGYuZW1wdHkmJiFiLl9wZi5pbnZhbGlkTW9udGgmJiFiLl9wZi5udWxsSW5wdXQmJiFiLl9wZi5pbnZhbGlkRm9ybWF0JiYhYi5fcGYudXNlckludmFsaWRhdGVkLGIuX3N0cmljdCYmKGIuX2lzVmFsaWQ9Yi5faXNWYWxpZCYmMD09PWIuX3BmLmNoYXJzTGVmdE92ZXImJjA9PT1iLl9wZi51bnVzZWRUb2tlbnMubGVuZ3RoJiZiLl9wZi5iaWdIb3VyPT09YSkpLGIuX2lzVmFsaWR9ZnVuY3Rpb24gSihhKXtyZXR1cm4gYT9hLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgiXyIsIi0iKTphfWZ1bmN0aW9uIEsoYSl7Zm9yKHZhciBiLGMsZCxlLGY9MDtmPGEubGVuZ3RoOyl7Zm9yKGU9SihhW2ZdKS5zcGxpdCgiLSIpLGI9ZS5sZW5ndGgsYz1KKGFbZisxXSksYz1jP2Muc3BsaXQoIi0iKTpudWxsO2I+MDspe2lmKGQ9TChlLnNsaWNlKDAsYikuam9pbigiLSIpKSlyZXR1cm4gZDtpZihjJiZjLmxlbmd0aD49YiYmeShlLGMsITApPj1iLTEpYnJlYWs7Yi0tfWYrK31yZXR1cm4gbnVsbH1mdW5jdGlvbiBMKGEpe3ZhciBiPW51bGw7aWYoIUpiW2FdJiZMYil0cnl7Yj12Yi5sb2NhbGUoKSxyZXF1aXJlKCIuL2xvY2FsZS8iK2EpLHZiLmxvY2FsZShiKX1jYXRjaChjKXt9cmV0dXJuIEpiW2FdfWZ1bmN0aW9uIE0oYSxiKXt2YXIgYyxkO3JldHVybiBiLl9pc1VUQz8oYz1iLmNsb25lKCksZD0odmIuaXNNb21lbnQoYSl8fHgoYSk/K2E6K3ZiKGEpKS0rYyxjLl9kLnNldFRpbWUoK2MuX2QrZCksdmIudXBkYXRlT2Zmc2V0KGMsITEpLGMpOnZiKGEpLmxvY2FsKCl9ZnVuY3Rpb24gTihhKXtyZXR1cm4gYS5tYXRjaCgvXFtbXHNcU10vKT9hLnJlcGxhY2UoL15cW3xcXSQvZywiIik6YS5yZXBsYWNlKC9cXC9nLCIiKX1mdW5jdGlvbiBPKGEpe3ZhciBiLGMsZD1hLm1hdGNoKFBiKTtmb3IoYj0wLGM9ZC5sZW5ndGg7Yz5iO2IrKylkW2JdPXJjW2RbYl1dP3JjW2RbYl1dOk4oZFtiXSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBmPSIiO2ZvcihiPTA7Yz5iO2IrKylmKz1kW2JdaW5zdGFuY2VvZiBGdW5jdGlvbj9kW2JdLmNhbGwoZSxhKTpkW2JdO3JldHVybiBmfX1mdW5jdGlvbiBQKGEsYil7cmV0dXJuIGEuaXNWYWxpZCgpPyhiPVEoYixhLmxvY2FsZURhdGEoKSksbmNbYl18fChuY1tiXT1PKGIpKSxuY1tiXShhKSk6YS5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKX1mdW5jdGlvbiBRKGEsYil7ZnVuY3Rpb24gYyhhKXtyZXR1cm4gYi5sb25nRGF0ZUZvcm1hdChhKXx8YX12YXIgZD01O2ZvcihRYi5sYXN0SW5kZXg9MDtkPj0wJiZRYi50ZXN0KGEpOylhPWEucmVwbGFjZShRYixjKSxRYi5sYXN0SW5kZXg9MCxkLT0xO3JldHVybiBhfWZ1bmN0aW9uIFIoYSxiKXt2YXIgYyxkPWIuX3N0cmljdDtzd2l0Y2goYSl7Y2FzZSJRIjpyZXR1cm4gX2I7Y2FzZSJEREREIjpyZXR1cm4gYmM7Y2FzZSJZWVlZIjpjYXNlIkdHR0ciOmNhc2UiZ2dnZyI6cmV0dXJuIGQ/Y2M6VGI7Y2FzZSJZIjpjYXNlIkciOmNhc2UiZyI6cmV0dXJuIGVjO2Nhc2UiWVlZWVlZIjpjYXNlIllZWVlZIjpjYXNlIkdHR0dHIjpjYXNlImdnZ2dnIjpyZXR1cm4gZD9kYzpVYjtjYXNlIlMiOmlmKGQpcmV0dXJuIF9iO2Nhc2UiU1MiOmlmKGQpcmV0dXJuIGFjO2Nhc2UiU1NTIjppZihkKXJldHVybiBiYztjYXNlIkRERCI6cmV0dXJuIFNiO2Nhc2UiTU1NIjpjYXNlIk1NTU0iOmNhc2UiZGQiOmNhc2UiZGRkIjpjYXNlImRkZGQiOnJldHVybiBXYjtjYXNlImEiOmNhc2UiQSI6cmV0dXJuIGIuX2xvY2FsZS5fbWVyaWRpZW1QYXJzZTtjYXNlIngiOnJldHVybiBaYjtjYXNlIlgiOnJldHVybiAkYjtjYXNlIloiOmNhc2UiWloiOnJldHVybiBYYjtjYXNlIlQiOnJldHVybiBZYjtjYXNlIlNTU1MiOnJldHVybiBWYjtjYXNlIk1NIjpjYXNlIkREIjpjYXNlIllZIjpjYXNlIkdHIjpjYXNlImdnIjpjYXNlIkhIIjpjYXNlImhoIjpjYXNlIm1tIjpjYXNlInNzIjpjYXNlInd3IjpjYXNlIldXIjpyZXR1cm4gZD9hYzpSYjtjYXNlIk0iOmNhc2UiRCI6Y2FzZSJkIjpjYXNlIkgiOmNhc2UiaCI6Y2FzZSJtIjpjYXNlInMiOmNhc2UidyI6Y2FzZSJXIjpjYXNlImUiOmNhc2UiRSI6cmV0dXJuIFJiO2Nhc2UiRG8iOnJldHVybiBkP2IuX2xvY2FsZS5fb3JkaW5hbFBhcnNlOmIuX2xvY2FsZS5fb3JkaW5hbFBhcnNlTGVuaWVudDtkZWZhdWx0OnJldHVybiBjPW5ldyBSZWdFeHAoJChaKGEucmVwbGFjZSgiXFwiLCIiKSksImkiKSl9fWZ1bmN0aW9uIFMoYSl7YT1hfHwiIjt2YXIgYj1hLm1hdGNoKFhiKXx8W10sYz1iW2IubGVuZ3RoLTFdfHxbXSxkPShjKyIiKS5tYXRjaChqYyl8fFsiLSIsMCwwXSxlPSsoNjAqZFsxXSkrQyhkWzJdKTtyZXR1cm4iKyI9PT1kWzBdP2U6LWV9ZnVuY3Rpb24gVChhLGIsYyl7dmFyIGQsZT1jLl9hO3N3aXRjaChhKXtjYXNlIlEiOm51bGwhPWImJihlW0RiXT0zKihDKGIpLTEpKTticmVhaztjYXNlIk0iOmNhc2UiTU0iOm51bGwhPWImJihlW0RiXT1DKGIpLTEpO2JyZWFrO2Nhc2UiTU1NIjpjYXNlIk1NTU0iOmQ9Yy5fbG9jYWxlLm1vbnRoc1BhcnNlKGIsYSxjLl9zdHJpY3QpLG51bGwhPWQ/ZVtEYl09ZDpjLl9wZi5pbnZhbGlkTW9udGg9YjticmVhaztjYXNlIkQiOmNhc2UiREQiOm51bGwhPWImJihlW0ViXT1DKGIpKTticmVhaztjYXNlIkRvIjpudWxsIT1iJiYoZVtFYl09QyhwYXJzZUludChiLm1hdGNoKC9cZHsxLDJ9LylbMF0sMTApKSk7YnJlYWs7Y2FzZSJEREQiOmNhc2UiRERERCI6bnVsbCE9YiYmKGMuX2RheU9mWWVhcj1DKGIpKTticmVhaztjYXNlIllZIjplW0NiXT12Yi5wYXJzZVR3b0RpZ2l0WWVhcihiKTticmVhaztjYXNlIllZWVkiOmNhc2UiWVlZWVkiOmNhc2UiWVlZWVlZIjplW0NiXT1DKGIpO2JyZWFrO2Nhc2UiYSI6Y2FzZSJBIjpjLl9tZXJpZGllbT1iO2JyZWFrO2Nhc2UiaCI6Y2FzZSJoaCI6Yy5fcGYuYmlnSG91cj0hMDtjYXNlIkgiOmNhc2UiSEgiOmVbRmJdPUMoYik7YnJlYWs7Y2FzZSJtIjpjYXNlIm1tIjplW0diXT1DKGIpO2JyZWFrO2Nhc2UicyI6Y2FzZSJzcyI6ZVtIYl09QyhiKTticmVhaztjYXNlIlMiOmNhc2UiU1MiOmNhc2UiU1NTIjpjYXNlIlNTU1MiOmVbSWJdPUMoMWUzKigiMC4iK2IpKTticmVhaztjYXNlIngiOmMuX2Q9bmV3IERhdGUoQyhiKSk7YnJlYWs7Y2FzZSJYIjpjLl9kPW5ldyBEYXRlKDFlMypwYXJzZUZsb2F0KGIpKTticmVhaztjYXNlIloiOmNhc2UiWloiOmMuX3VzZVVUQz0hMCxjLl90em09UyhiKTticmVhaztjYXNlImRkIjpjYXNlImRkZCI6Y2FzZSJkZGRkIjpkPWMuX2xvY2FsZS53ZWVrZGF5c1BhcnNlKGIpLG51bGwhPWQ/KGMuX3c9Yy5fd3x8e30sYy5fdy5kPWQpOmMuX3BmLmludmFsaWRXZWVrZGF5PWI7YnJlYWs7Y2FzZSJ3IjpjYXNlInd3IjpjYXNlIlciOmNhc2UiV1ciOmNhc2UiZCI6Y2FzZSJlIjpjYXNlIkUiOmE9YS5zdWJzdHIoMCwxKTtjYXNlImdnZ2ciOmNhc2UiR0dHRyI6Y2FzZSJHR0dHRyI6YT1hLnN1YnN0cigwLDIpLGImJihjLl93PWMuX3d8fHt9LGMuX3dbYV09QyhiKSk7YnJlYWs7Y2FzZSJnZyI6Y2FzZSJHRyI6Yy5fdz1jLl93fHx7fSxjLl93W2FdPXZiLnBhcnNlVHdvRGlnaXRZZWFyKGIpfX1mdW5jdGlvbiBVKGEpe3ZhciBjLGQsZSxmLGcsaCxpO2M9YS5fdyxudWxsIT1jLkdHfHxudWxsIT1jLld8fG51bGwhPWMuRT8oZz0xLGg9NCxkPWIoYy5HRyxhLl9hW0NiXSxqYih2YigpLDEsNCkueWVhciksZT1iKGMuVywxKSxmPWIoYy5FLDEpKTooZz1hLl9sb2NhbGUuX3dlZWsuZG93LGg9YS5fbG9jYWxlLl93ZWVrLmRveSxkPWIoYy5nZyxhLl9hW0NiXSxqYih2YigpLGcsaCkueWVhciksZT1iKGMudywxKSxudWxsIT1jLmQ/KGY9Yy5kLGc+ZiYmKytlKTpmPW51bGwhPWMuZT9jLmUrZzpnKSxpPWtiKGQsZSxmLGgsZyksYS5fYVtDYl09aS55ZWFyLGEuX2RheU9mWWVhcj1pLmRheU9mWWVhcn1mdW5jdGlvbiBWKGEpe3ZhciBjLGQsZSxmLGc9W107aWYoIWEuX2Qpe2ZvcihlPVgoYSksYS5fdyYmbnVsbD09YS5fYVtFYl0mJm51bGw9PWEuX2FbRGJdJiZVKGEpLGEuX2RheU9mWWVhciYmKGY9YihhLl9hW0NiXSxlW0NiXSksYS5fZGF5T2ZZZWFyPkYoZikmJihhLl9wZi5fb3ZlcmZsb3dEYXlPZlllYXI9ITApLGQ9ZmIoZiwwLGEuX2RheU9mWWVhciksYS5fYVtEYl09ZC5nZXRVVENNb250aCgpLGEuX2FbRWJdPWQuZ2V0VVRDRGF0ZSgpKSxjPTA7Mz5jJiZudWxsPT1hLl9hW2NdOysrYylhLl9hW2NdPWdbY109ZVtjXTtmb3IoOzc+YztjKyspYS5fYVtjXT1nW2NdPW51bGw9PWEuX2FbY10/Mj09PWM/MTowOmEuX2FbY107MjQ9PT1hLl9hW0ZiXSYmMD09PWEuX2FbR2JdJiYwPT09YS5fYVtIYl0mJjA9PT1hLl9hW0liXSYmKGEuX25leHREYXk9ITAsYS5fYVtGYl09MCksYS5fZD0oYS5fdXNlVVRDP2ZiOmViKS5hcHBseShudWxsLGcpLG51bGwhPWEuX3R6bSYmYS5fZC5zZXRVVENNaW51dGVzKGEuX2QuZ2V0VVRDTWludXRlcygpLWEuX3R6bSksYS5fbmV4dERheSYmKGEuX2FbRmJdPTI0KX19ZnVuY3Rpb24gVyhhKXt2YXIgYjthLl9kfHwoYj1BKGEuX2kpLGEuX2E9W2IueWVhcixiLm1vbnRoLGIuZGF5fHxiLmRhdGUsYi5ob3VyLGIubWludXRlLGIuc2Vjb25kLGIubWlsbGlzZWNvbmRdLFYoYSkpfWZ1bmN0aW9uIFgoYSl7dmFyIGI9bmV3IERhdGU7cmV0dXJuIGEuX3VzZVVUQz9bYi5nZXRVVENGdWxsWWVhcigpLGIuZ2V0VVRDTW9udGgoKSxiLmdldFVUQ0RhdGUoKV06W2IuZ2V0RnVsbFllYXIoKSxiLmdldE1vbnRoKCksYi5nZXREYXRlKCldfWZ1bmN0aW9uIFkoYil7aWYoYi5fZj09PXZiLklTT184NjAxKXJldHVybiB2b2lkIGFiKGIpO2IuX2E9W10sYi5fcGYuZW1wdHk9ITA7dmFyIGMsZCxlLGYsZyxoPSIiK2IuX2ksaT1oLmxlbmd0aCxqPTA7Zm9yKGU9UShiLl9mLGIuX2xvY2FsZSkubWF0Y2goUGIpfHxbXSxjPTA7YzxlLmxlbmd0aDtjKyspZj1lW2NdLGQ9KGgubWF0Y2goUihmLGIpKXx8W10pWzBdLGQmJihnPWguc3Vic3RyKDAsaC5pbmRleE9mKGQpKSxnLmxlbmd0aD4wJiZiLl9wZi51bnVzZWRJbnB1dC5wdXNoKGcpLGg9aC5zbGljZShoLmluZGV4T2YoZCkrZC5sZW5ndGgpLGorPWQubGVuZ3RoKSxyY1tmXT8oZD9iLl9wZi5lbXB0eT0hMTpiLl9wZi51bnVzZWRUb2tlbnMucHVzaChmKSxUKGYsZCxiKSk6Yi5fc3RyaWN0JiYhZCYmYi5fcGYudW51c2VkVG9rZW5zLnB1c2goZik7Yi5fcGYuY2hhcnNMZWZ0T3Zlcj1pLWosaC5sZW5ndGg+MCYmYi5fcGYudW51c2VkSW5wdXQucHVzaChoKSxiLl9wZi5iaWdIb3VyPT09ITAmJmIuX2FbRmJdPD0xMiYmKGIuX3BmLmJpZ0hvdXI9YSksYi5fYVtGYl09ayhiLl9sb2NhbGUsYi5fYVtGYl0sYi5fbWVyaWRpZW0pLFYoYiksSChiKX1mdW5jdGlvbiBaKGEpe3JldHVybiBhLnJlcGxhY2UoL1xcKFxbKXxcXChcXSl8XFsoW15cXVxbXSopXF18XFwoLikvZyxmdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybiBifHxjfHxkfHxlfSl9ZnVuY3Rpb24gJChhKXtyZXR1cm4gYS5yZXBsYWNlKC9bLVwvXFxeJCorPy4oKXxbXF17fV0vZywiXFwkJiIpfWZ1bmN0aW9uIF8oYSl7dmFyIGIsYyxlLGYsZztpZigwPT09YS5fZi5sZW5ndGgpcmV0dXJuIGEuX3BmLmludmFsaWRGb3JtYXQ9ITAsdm9pZChhLl9kPW5ldyBEYXRlKDAvMCkpO2ZvcihmPTA7ZjxhLl9mLmxlbmd0aDtmKyspZz0wLGI9cCh7fSxhKSxudWxsIT1hLl91c2VVVEMmJihiLl91c2VVVEM9YS5fdXNlVVRDKSxiLl9wZj1kKCksYi5fZj1hLl9mW2ZdLFkoYiksSShiKSYmKGcrPWIuX3BmLmNoYXJzTGVmdE92ZXIsZys9MTAqYi5fcGYudW51c2VkVG9rZW5zLmxlbmd0aCxiLl9wZi5zY29yZT1nLChudWxsPT1lfHxlPmcpJiYoZT1nLGM9YikpO28oYSxjfHxiKX1mdW5jdGlvbiBhYihhKXt2YXIgYixjLGQ9YS5faSxlPWZjLmV4ZWMoZCk7aWYoZSl7Zm9yKGEuX3BmLmlzbz0hMCxiPTAsYz1oYy5sZW5ndGg7Yz5iO2IrKylpZihoY1tiXVsxXS5leGVjKGQpKXthLl9mPWhjW2JdWzBdKyhlWzZdfHwiICIpO2JyZWFrfWZvcihiPTAsYz1pYy5sZW5ndGg7Yz5iO2IrKylpZihpY1tiXVsxXS5leGVjKGQpKXthLl9mKz1pY1tiXVswXTticmVha31kLm1hdGNoKFhiKSYmKGEuX2YrPSJaIiksWShhKX1lbHNlIGEuX2lzVmFsaWQ9ITF9ZnVuY3Rpb24gYmIoYSl7YWIoYSksYS5faXNWYWxpZD09PSExJiYoZGVsZXRlIGEuX2lzVmFsaWQsdmIuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2soYSkpfWZ1bmN0aW9uIGNiKGEsYil7dmFyIGMsZD1bXTtmb3IoYz0wO2M8YS5sZW5ndGg7KytjKWQucHVzaChiKGFbY10sYykpO3JldHVybiBkfWZ1bmN0aW9uIGRiKGIpe3ZhciBjLGQ9Yi5faTtkPT09YT9iLl9kPW5ldyBEYXRlOngoZCk/Yi5fZD1uZXcgRGF0ZSgrZCk6bnVsbCE9PShjPU1iLmV4ZWMoZCkpP2IuX2Q9bmV3IERhdGUoK2NbMV0pOiJzdHJpbmciPT10eXBlb2YgZD9iYihiKTp3KGQpPyhiLl9hPWNiKGQuc2xpY2UoMCksZnVuY3Rpb24oYSl7cmV0dXJuIHBhcnNlSW50KGEsMTApfSksVihiKSk6Im9iamVjdCI9PXR5cGVvZiBkP1coYik6Im51bWJlciI9PXR5cGVvZiBkP2IuX2Q9bmV3IERhdGUoZCk6dmIuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2soYil9ZnVuY3Rpb24gZWIoYSxiLGMsZCxlLGYsZyl7dmFyIGg9bmV3IERhdGUoYSxiLGMsZCxlLGYsZyk7cmV0dXJuIDE5NzA+YSYmaC5zZXRGdWxsWWVhcihhKSxofWZ1bmN0aW9uIGZiKGEpe3ZhciBiPW5ldyBEYXRlKERhdGUuVVRDLmFwcGx5KG51bGwsYXJndW1lbnRzKSk7cmV0dXJuIDE5NzA+YSYmYi5zZXRVVENGdWxsWWVhcihhKSxifWZ1bmN0aW9uIGdiKGEsYil7aWYoInN0cmluZyI9PXR5cGVvZiBhKWlmKGlzTmFOKGEpKXtpZihhPWIud2Vla2RheXNQYXJzZShhKSwibnVtYmVyIiE9dHlwZW9mIGEpcmV0dXJuIG51bGx9ZWxzZSBhPXBhcnNlSW50KGEsMTApO3JldHVybiBhfWZ1bmN0aW9uIGhiKGEsYixjLGQsZSl7cmV0dXJuIGUucmVsYXRpdmVUaW1lKGJ8fDEsISFjLGEsZCl9ZnVuY3Rpb24gaWIoYSxiLGMpe3ZhciBkPXZiLmR1cmF0aW9uKGEpLmFicygpLGU9QWIoZC5hcygicyIpKSxmPUFiKGQuYXMoIm0iKSksZz1BYihkLmFzKCJoIikpLGg9QWIoZC5hcygiZCIpKSxpPUFiKGQuYXMoIk0iKSksaj1BYihkLmFzKCJ5IikpLGs9ZTxvYy5zJiZbInMiLGVdfHwxPT09ZiYmWyJtIl18fGY8b2MubSYmWyJtbSIsZl18fDE9PT1nJiZbImgiXXx8ZzxvYy5oJiZbImhoIixnXXx8MT09PWgmJlsiZCJdfHxoPG9jLmQmJlsiZGQiLGhdfHwxPT09aSYmWyJNIl18fGk8b2MuTSYmWyJNTSIsaV18fDE9PT1qJiZbInkiXXx8WyJ5eSIsal07cmV0dXJuIGtbMl09YixrWzNdPSthPjAsa1s0XT1jLGhiLmFwcGx5KHt9LGspfWZ1bmN0aW9uIGpiKGEsYixjKXt2YXIgZCxlPWMtYixmPWMtYS5kYXkoKTtyZXR1cm4gZj5lJiYoZi09NyksZS03PmYmJihmKz03KSxkPXZiKGEpLmFkZChmLCJkIikse3dlZWs6TWF0aC5jZWlsKGQuZGF5T2ZZZWFyKCkvNykseWVhcjpkLnllYXIoKX19ZnVuY3Rpb24ga2IoYSxiLGMsZCxlKXt2YXIgZixnLGg9ZmIoYSwwLDEpLmdldFVUQ0RheSgpO3JldHVybiBoPTA9PT1oPzc6aCxjPW51bGwhPWM/YzplLGY9ZS1oKyhoPmQ/NzowKS0oZT5oPzc6MCksZz03KihiLTEpKyhjLWUpK2YrMSx7eWVhcjpnPjA/YTphLTEsZGF5T2ZZZWFyOmc+MD9nOkYoYS0xKStnfX1mdW5jdGlvbiBsYihiKXt2YXIgYyxkPWIuX2ksZT1iLl9mO3JldHVybiBiLl9sb2NhbGU9Yi5fbG9jYWxlfHx2Yi5sb2NhbGVEYXRhKGIuX2wpLG51bGw9PT1kfHxlPT09YSYmIiI9PT1kP3ZiLmludmFsaWQoe251bGxJbnB1dDohMH0pOigic3RyaW5nIj09dHlwZW9mIGQmJihiLl9pPWQ9Yi5fbG9jYWxlLnByZXBhcnNlKGQpKSx2Yi5pc01vbWVudChkKT9uZXcgbShkLCEwKTooZT93KGUpP18oYik6WShiKTpkYihiKSxjPW5ldyBtKGIpLGMuX25leHREYXkmJihjLmFkZCgxLCJkIiksYy5fbmV4dERheT1hKSxjKSl9ZnVuY3Rpb24gbWIoYSxiKXt2YXIgYyxkO2lmKDE9PT1iLmxlbmd0aCYmdyhiWzBdKSYmKGI9YlswXSksIWIubGVuZ3RoKXJldHVybiB2YigpO2ZvcihjPWJbMF0sZD0xO2Q8Yi5sZW5ndGg7KytkKWJbZF1bYV0oYykmJihjPWJbZF0pO3JldHVybiBjfWZ1bmN0aW9uIG5iKGEsYil7dmFyIGM7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBiJiYoYj1hLmxvY2FsZURhdGEoKS5tb250aHNQYXJzZShiKSwibnVtYmVyIiE9dHlwZW9mIGIpP2E6KGM9TWF0aC5taW4oYS5kYXRlKCksRChhLnllYXIoKSxiKSksYS5fZFsic2V0IisoYS5faXNVVEM/IlVUQyI6IiIpKyJNb250aCJdKGIsYyksYSl9ZnVuY3Rpb24gb2IoYSxiKXtyZXR1cm4gYS5fZFsiZ2V0IisoYS5faXNVVEM/IlVUQyI6IiIpK2JdKCl9ZnVuY3Rpb24gcGIoYSxiLGMpe3JldHVybiJNb250aCI9PT1iP25iKGEsYyk6YS5fZFsic2V0IisoYS5faXNVVEM/IlVUQyI6IiIpK2JdKGMpfWZ1bmN0aW9uIHFiKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBudWxsIT1jPyhwYih0aGlzLGEsYyksdmIudXBkYXRlT2Zmc2V0KHRoaXMsYiksdGhpcyk6b2IodGhpcyxhKX19ZnVuY3Rpb24gcmIoYSl7cmV0dXJuIDQwMCphLzE0NjA5N31mdW5jdGlvbiBzYihhKXtyZXR1cm4gMTQ2MDk3KmEvNDAwfWZ1bmN0aW9uIHRiKGEpe3ZiLmR1cmF0aW9uLmZuW2FdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGFbYV19fWZ1bmN0aW9uIHViKGEpeyJ1bmRlZmluZWQiPT10eXBlb2YgZW5kZXImJih3Yj16Yi5tb21lbnQsemIubW9tZW50PWE/ZigiQWNjZXNzaW5nIE1vbWVudCB0aHJvdWdoIHRoZSBnbG9iYWwgc2NvcGUgaXMgZGVwcmVjYXRlZCwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhbiB1cGNvbWluZyByZWxlYXNlLiIsdmIpOnZiKX1mb3IodmFyIHZiLHdiLHhiLHliPSIyLjkuMCIsemI9InVuZGVmaW5lZCI9PXR5cGVvZiBnbG9iYWx8fCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3chPT1nbG9iYWwud2luZG93P3RoaXM6Z2xvYmFsLEFiPU1hdGgucm91bmQsQmI9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxDYj0wLERiPTEsRWI9MixGYj0zLEdiPTQsSGI9NSxJYj02LEpiPXt9LEtiPVtdLExiPSJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlJiZtb2R1bGUmJm1vZHVsZS5leHBvcnRzLE1iPS9eXC8/RGF0ZVwoKFwtP1xkKykvaSxOYj0vKFwtKT8oPzooXGQqKVwuKT8oXGQrKVw6KFxkKykoPzpcOihcZCspXC4/KFxkezN9KT8pPy8sT2I9L14oLSk/UCg/Oig/OihbMC05LC5dKilZKT8oPzooWzAtOSwuXSopTSk/KD86KFswLTksLl0qKUQpPyg/OlQoPzooWzAtOSwuXSopSCk/KD86KFswLTksLl0qKU0pPyg/OihbMC05LC5dKilTKT8pP3woWzAtOSwuXSopVykkLyxQYj0vKFxbW15cW10qXF0pfChcXCk/KE1vfE1NP00/TT98RG98REREb3xERD9EP0Q/fGRkZD9kP3xkbz98d1tvfHddP3xXW298V10/fFF8WVlZWVlZfFlZWVlZfFlZWVl8WVl8Z2coZ2dnPyk/fEdHKEdHRz8pP3xlfEV8YXxBfGhoP3xISD98bW0/fHNzP3xTezEsNH18eHxYfHp6P3xaWj98LikvZyxRYj0vKFxbW15cW10qXF0pfChcXCk/KExUU3xMVHxMTD9MP0w/fGx7MSw0fSkvZyxSYj0vXGRcZD8vLFNiPS9cZHsxLDN9LyxUYj0vXGR7MSw0fS8sVWI9L1srXC1dP1xkezEsNn0vLFZiPS9cZCsvLFdiPS9bMC05XSpbJ2Etelx1MDBBMC1cdTA1RkZcdTA3MDAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdK3xbXHUwNjAwLVx1MDZGRlwvXSsoXHMqP1tcdTA2MDAtXHUwNkZGXSspezEsMn0vaSxYYj0vWnxbXCtcLV1cZFxkOj9cZFxkL2dpLFliPS9UL2ksWmI9L1tcK1wtXT9cZCsvLCRiPS9bXCtcLV0/XGQrKFwuXGR7MSwzfSk/LyxfYj0vXGQvLGFjPS9cZFxkLyxiYz0vXGR7M30vLGNjPS9cZHs0fS8sZGM9L1srLV0/XGR7Nn0vLGVjPS9bKy1dP1xkKy8sZmM9L15ccyooPzpbKy1dXGR7Nn18XGR7NH0pLSg/OihcZFxkLVxkXGQpfChXXGRcZCQpfChXXGRcZC1cZCl8KFxkXGRcZCkpKChUfCApKFxkXGQoOlxkXGQoOlxkXGQoXC5cZCspPyk/KT8pPyhbXCtcLV1cZFxkKD86Oj9cZFxkKT98XHMqWik/KT8kLyxnYz0iWVlZWS1NTS1ERFRISDptbTpzc1oiLGhjPVtbIllZWVlZWS1NTS1ERCIsL1srLV1cZHs2fS1cZHsyfS1cZHsyfS9dLFsiWVlZWS1NTS1ERCIsL1xkezR9LVxkezJ9LVxkezJ9L10sWyJHR0dHLVtXXVdXLUUiLC9cZHs0fS1XXGR7Mn0tXGQvXSxbIkdHR0ctW1ddV1ciLC9cZHs0fS1XXGR7Mn0vXSxbIllZWVktREREIiwvXGR7NH0tXGR7M30vXV0saWM9W1siSEg6bW06c3MuU1NTUyIsLyhUfCApXGRcZDpcZFxkOlxkXGRcLlxkKy9dLFsiSEg6bW06c3MiLC8oVHwgKVxkXGQ6XGRcZDpcZFxkL10sWyJISDptbSIsLyhUfCApXGRcZDpcZFxkL10sWyJISCIsLyhUfCApXGRcZC9dXSxqYz0vKFtcK1wtXXxcZFxkKS9naSxrYz0oIkRhdGV8SG91cnN8TWludXRlc3xTZWNvbmRzfE1pbGxpc2Vjb25kcyIuc3BsaXQoInwiKSx7TWlsbGlzZWNvbmRzOjEsU2Vjb25kczoxZTMsTWludXRlczo2ZTQsSG91cnM6MzZlNSxEYXlzOjg2NGU1LE1vbnRoczoyNTkyZTYsWWVhcnM6MzE1MzZlNn0pLGxjPXttczoibWlsbGlzZWNvbmQiLHM6InNlY29uZCIsbToibWludXRlIixoOiJob3VyIixkOiJkYXkiLEQ6ImRhdGUiLHc6IndlZWsiLFc6Imlzb1dlZWsiLE06Im1vbnRoIixROiJxdWFydGVyIix5OiJ5ZWFyIixEREQ6ImRheU9mWWVhciIsZToid2Vla2RheSIsRToiaXNvV2Vla2RheSIsZ2c6IndlZWtZZWFyIixHRzoiaXNvV2Vla1llYXIifSxtYz17ZGF5b2Z5ZWFyOiJkYXlPZlllYXIiLGlzb3dlZWtkYXk6Imlzb1dlZWtkYXkiLGlzb3dlZWs6Imlzb1dlZWsiLHdlZWt5ZWFyOiJ3ZWVrWWVhciIsaXNvd2Vla3llYXI6Imlzb1dlZWtZZWFyIn0sbmM9e30sb2M9e3M6NDUsbTo0NSxoOjIyLGQ6MjYsTToxMX0scGM9IkRERCB3IFcgTSBEIGQiLnNwbGl0KCIgIikscWM9Ik0gRCBIIGggbSBzIHcgVyIuc3BsaXQoIiAiKSxyYz17TTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1vbnRoKCkrMX0sTU1NOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHNTaG9ydCh0aGlzLGEpfSxNTU1NOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHModGhpcyxhKX0sRDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGUoKX0sREREOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF5T2ZZZWFyKCl9LGQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXkoKX0sZGQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzTWluKHRoaXMsYSl9LGRkZDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNTaG9ydCh0aGlzLGEpfSxkZGRkOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5cyh0aGlzLGEpfSx3OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2VlaygpfSxXOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNvV2VlaygpfSxZWTpmdW5jdGlvbigpe3JldHVybiByKHRoaXMueWVhcigpJTEwMCwyKX0sWVlZWTpmdW5jdGlvbigpe3JldHVybiByKHRoaXMueWVhcigpLDQpfSxZWVlZWTpmdW5jdGlvbigpe3JldHVybiByKHRoaXMueWVhcigpLDUpfSxZWVlZWVk6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnllYXIoKSxiPWE+PTA/IisiOiItIjtyZXR1cm4gYityKE1hdGguYWJzKGEpLDYpfSxnZzpmdW5jdGlvbigpe3JldHVybiByKHRoaXMud2Vla1llYXIoKSUxMDAsMil9LGdnZ2c6ZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLndlZWtZZWFyKCksNCl9LGdnZ2dnOmZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcy53ZWVrWWVhcigpLDUpfSxHRzpmdW5jdGlvbigpe3JldHVybiByKHRoaXMuaXNvV2Vla1llYXIoKSUxMDAsMil9LEdHR0c6ZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLmlzb1dlZWtZZWFyKCksNCl9LEdHR0dHOmZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcy5pc29XZWVrWWVhcigpLDUpfSxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2Vla2RheSgpfSxFOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNvV2Vla2RheSgpfSxhOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1lcmlkaWVtKHRoaXMuaG91cnMoKSx0aGlzLm1pbnV0ZXMoKSwhMCl9LEE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubWVyaWRpZW0odGhpcy5ob3VycygpLHRoaXMubWludXRlcygpLCExKX0sSDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhvdXJzKCl9LGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ob3VycygpJTEyfHwxMn0sbTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1pbnV0ZXMoKX0sczpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNlY29uZHMoKX0sUzpmdW5jdGlvbigpe3JldHVybiBDKHRoaXMubWlsbGlzZWNvbmRzKCkvMTAwKX0sU1M6ZnVuY3Rpb24oKXtyZXR1cm4gcihDKHRoaXMubWlsbGlzZWNvbmRzKCkvMTApLDIpfSxTU1M6ZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLm1pbGxpc2Vjb25kcygpLDMpfSxTU1NTOmZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcy5taWxsaXNlY29uZHMoKSwzKX0sWjpmdW5jdGlvbigpe3ZhciBhPXRoaXMudXRjT2Zmc2V0KCksYj0iKyI7cmV0dXJuIDA+YSYmKGE9LWEsYj0iLSIpLGIrcihDKGEvNjApLDIpKyI6IityKEMoYSklNjAsMil9LFpaOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy51dGNPZmZzZXQoKSxiPSIrIjtyZXR1cm4gMD5hJiYoYT0tYSxiPSItIiksYityKEMoYS82MCksMikrcihDKGEpJTYwLDIpfSx6OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuem9uZUFiYnIoKX0seno6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy56b25lTmFtZSgpfSx4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWVPZigpfSxYOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5peCgpfSxROmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVhcnRlcigpfX0sc2M9e30sdGM9WyJtb250aHMiLCJtb250aHNTaG9ydCIsIndlZWtkYXlzIiwid2Vla2RheXNTaG9ydCIsIndlZWtkYXlzTWluIl0sdWM9ITE7cGMubGVuZ3RoOyl4Yj1wYy5wb3AoKSxyY1t4YisibyJdPWkocmNbeGJdLHhiKTtmb3IoO3FjLmxlbmd0aDspeGI9cWMucG9wKCkscmNbeGIreGJdPWgocmNbeGJdLDIpO3JjLkREREQ9aChyYy5EREQsMyksbyhsLnByb3RvdHlwZSx7c2V0OmZ1bmN0aW9uKGEpe3ZhciBiLGM7Zm9yKGMgaW4gYSliPWFbY10sImZ1bmN0aW9uIj09dHlwZW9mIGI/dGhpc1tjXT1iOnRoaXNbIl8iK2NdPWI7dGhpcy5fb3JkaW5hbFBhcnNlTGVuaWVudD1uZXcgUmVnRXhwKHRoaXMuX29yZGluYWxQYXJzZS5zb3VyY2UrInwiKy9cZHsxLDJ9Ly5zb3VyY2UpfSxfbW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoczpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fbW9udGhzW2EubW9udGgoKV19LF9tb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuX21vbnRoc1Nob3J0W2EubW9udGgoKV19LG1vbnRoc1BhcnNlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY7Zm9yKHRoaXMuX21vbnRoc1BhcnNlfHwodGhpcy5fbW9udGhzUGFyc2U9W10sdGhpcy5fbG9uZ01vbnRoc1BhcnNlPVtdLHRoaXMuX3Nob3J0TW9udGhzUGFyc2U9W10pLGQ9MDsxMj5kO2QrKyl7aWYoZT12Yi51dGMoWzJlMyxkXSksYyYmIXRoaXMuX2xvbmdNb250aHNQYXJzZVtkXSYmKHRoaXMuX2xvbmdNb250aHNQYXJzZVtkXT1uZXcgUmVnRXhwKCJeIit0aGlzLm1vbnRocyhlLCIiKS5yZXBsYWNlKCIuIiwiIikrIiQiLCJpIiksdGhpcy5fc2hvcnRNb250aHNQYXJzZVtkXT1uZXcgUmVnRXhwKCJeIit0aGlzLm1vbnRoc1Nob3J0KGUsIiIpLnJlcGxhY2UoIi4iLCIiKSsiJCIsImkiKSksY3x8dGhpcy5fbW9udGhzUGFyc2VbZF18fChmPSJeIit0aGlzLm1vbnRocyhlLCIiKSsifF4iK3RoaXMubW9udGhzU2hvcnQoZSwiIiksdGhpcy5fbW9udGhzUGFyc2VbZF09bmV3IFJlZ0V4cChmLnJlcGxhY2UoIi4iLCIiKSwiaSIpKSxjJiYiTU1NTSI9PT1iJiZ0aGlzLl9sb25nTW9udGhzUGFyc2VbZF0udGVzdChhKSlyZXR1cm4gZDtpZihjJiYiTU1NIj09PWImJnRoaXMuX3Nob3J0TW9udGhzUGFyc2VbZF0udGVzdChhKSlyZXR1cm4gZDtpZighYyYmdGhpcy5fbW9udGhzUGFyc2VbZF0udGVzdChhKSlyZXR1cm4gZH19LF93ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXM6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuX3dlZWtkYXlzW2EuZGF5KCldfSxfd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRbYS5kYXkoKV19LF93ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluW2EuZGF5KCldfSx3ZWVrZGF5c1BhcnNlOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZDtmb3IodGhpcy5fd2Vla2RheXNQYXJzZXx8KHRoaXMuX3dlZWtkYXlzUGFyc2U9W10pLGI9MDs3PmI7YisrKWlmKHRoaXMuX3dlZWtkYXlzUGFyc2VbYl18fChjPXZiKFsyZTMsMV0pLmRheShiKSxkPSJeIit0aGlzLndlZWtkYXlzKGMsIiIpKyJ8XiIrdGhpcy53ZWVrZGF5c1Nob3J0KGMsIiIpKyJ8XiIrdGhpcy53ZWVrZGF5c01pbihjLCIiKSx0aGlzLl93ZWVrZGF5c1BhcnNlW2JdPW5ldyBSZWdFeHAoZC5yZXBsYWNlKCIuIiwiIiksImkiKSksdGhpcy5fd2Vla2RheXNQYXJzZVtiXS50ZXN0KGEpKXJldHVybiBifSxfbG9uZ0RhdGVGb3JtYXQ6e0xUUzoiaDptbTpzcyBBIixMVDoiaDptbSBBIixMOiJNTS9ERC9ZWVlZIixMTDoiTU1NTSBELCBZWVlZIixMTEw6Ik1NTU0gRCwgWVlZWSBMVCIsTExMTDoiZGRkZCwgTU1NTSBELCBZWVlZIExUIn0sbG9uZ0RhdGVGb3JtYXQ6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5fbG9uZ0RhdGVGb3JtYXRbYV07cmV0dXJuIWImJnRoaXMuX2xvbmdEYXRlRm9ybWF0W2EudG9VcHBlckNhc2UoKV0mJihiPXRoaXMuX2xvbmdEYXRlRm9ybWF0W2EudG9VcHBlckNhc2UoKV0ucmVwbGFjZSgvTU1NTXxNTXxERHxkZGRkL2csZnVuY3Rpb24oYSl7cmV0dXJuIGEuc2xpY2UoMSl9KSx0aGlzLl9sb25nRGF0ZUZvcm1hdFthXT1iKSxifSxpc1BNOmZ1bmN0aW9uKGEpe3JldHVybiJwIj09PShhKyIiKS50b0xvd2VyQ2FzZSgpLmNoYXJBdCgwKX0sX21lcmlkaWVtUGFyc2U6L1thcF1cLj9tP1wuPy9pLG1lcmlkaWVtOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYT4xMT9jPyJwbSI6IlBNIjpjPyJhbSI6IkFNIn0sX2NhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0sY2FsZW5kYXI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuX2NhbGVuZGFyW2FdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBkP2QuYXBwbHkoYixbY10pOmR9LF9yZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToiYSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQgeWVhcnMifSxyZWxhdGl2ZVRpbWU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9dGhpcy5fcmVsYXRpdmVUaW1lW2NdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlP2UoYSxiLGMsZCk6ZS5yZXBsYWNlKC8lZC9pLGEpfSxwYXN0RnV0dXJlOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5fcmVsYXRpdmVUaW1lW2E+MD8iZnV0dXJlIjoicGFzdCJdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBjP2MoYik6Yy5yZXBsYWNlKC8lcy9pLGIpfSxvcmRpbmFsOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9vcmRpbmFsLnJlcGxhY2UoIiVkIixhKX0sX29yZGluYWw6IiVkIixfb3JkaW5hbFBhcnNlOi9cZHsxLDJ9LyxwcmVwYXJzZTpmdW5jdGlvbihhKXtyZXR1cm4gYX0scG9zdGZvcm1hdDpmdW5jdGlvbihhKXtyZXR1cm4gYX0sd2VlazpmdW5jdGlvbihhKXtyZXR1cm4gamIoYSx0aGlzLl93ZWVrLmRvdyx0aGlzLl93ZWVrLmRveSkud2Vla30sX3dlZWs6e2RvdzowLGRveTo2fSxmaXJzdERheU9mV2VlazpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93ZWVrLmRvd30sZmlyc3REYXlPZlllYXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd2Vlay5kb3l9LF9pbnZhbGlkRGF0ZToiSW52YWxpZCBkYXRlIixpbnZhbGlkRGF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pbnZhbGlkRGF0ZX19KSx2Yj1mdW5jdGlvbihiLGMsZSxmKXt2YXIgZztyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBlJiYoZj1lLGU9YSksZz17fSxnLl9pc0FNb21lbnRPYmplY3Q9ITAsZy5faT1iLGcuX2Y9YyxnLl9sPWUsZy5fc3RyaWN0PWYsZy5faXNVVEM9ITEsZy5fcGY9ZCgpLGxiKGcpfSx2Yi5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3M9ITEsdmIuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2s9ZigibW9tZW50IGNvbnN0cnVjdGlvbiBmYWxscyBiYWNrIHRvIGpzIERhdGUuIFRoaXMgaXMgZGlzY291cmFnZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB1cGNvbWluZyBtYWpvciByZWxlYXNlLiBQbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzE0MDcgZm9yIG1vcmUgaW5mby4iLGZ1bmN0aW9uKGEpe2EuX2Q9bmV3IERhdGUoYS5faSsoYS5fdXNlVVRDPyIgVVRDIjoiIikpfSksdmIubWluPWZ1bmN0aW9uKCl7dmFyIGE9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIG1iKCJpc0JlZm9yZSIsYSl9LHZiLm1heD1mdW5jdGlvbigpe3ZhciBhPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiBtYigiaXNBZnRlciIsYSl9LHZiLnV0Yz1mdW5jdGlvbihiLGMsZSxmKXt2YXIgZztyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBlJiYoZj1lLGU9YSksZz17fSxnLl9pc0FNb21lbnRPYmplY3Q9ITAsZy5fdXNlVVRDPSEwLGcuX2lzVVRDPSEwLGcuX2w9ZSxnLl9pPWIsZy5fZj1jLGcuX3N0cmljdD1mLGcuX3BmPWQoKSxsYihnKS51dGMoKX0sdmIudW5peD1mdW5jdGlvbihhKXtyZXR1cm4gdmIoMWUzKmEpfSx2Yi5kdXJhdGlvbj1mdW5jdGlvbihhLGIpe3ZhciBkLGUsZixnLGg9YSxpPW51bGw7cmV0dXJuIHZiLmlzRHVyYXRpb24oYSk/aD17bXM6YS5fbWlsbGlzZWNvbmRzLGQ6YS5fZGF5cyxNOmEuX21vbnRoc306Im51bWJlciI9PXR5cGVvZiBhPyhoPXt9LGI/aFtiXT1hOmgubWlsbGlzZWNvbmRzPWEpOihpPU5iLmV4ZWMoYSkpPyhkPSItIj09PWlbMV0/LTE6MSxoPXt5OjAsZDpDKGlbRWJdKSpkLGg6QyhpW0ZiXSkqZCxtOkMoaVtHYl0pKmQsczpDKGlbSGJdKSpkLG1zOkMoaVtJYl0pKmR9KTooaT1PYi5leGVjKGEpKT8oZD0iLSI9PT1pWzFdPy0xOjEsZj1mdW5jdGlvbihhKXt2YXIgYj1hJiZwYXJzZUZsb2F0KGEucmVwbGFjZSgiLCIsIi4iKSk7cmV0dXJuKGlzTmFOKGIpPzA6YikqZH0saD17eTpmKGlbMl0pLE06ZihpWzNdKSxkOmYoaVs0XSksaDpmKGlbNV0pLG06ZihpWzZdKSxzOmYoaVs3XSksdzpmKGlbOF0pfSk6bnVsbD09aD9oPXt9OiJvYmplY3QiPT10eXBlb2YgaCYmKCJmcm9tImluIGh8fCJ0byJpbiBoKSYmKGc9dCh2YihoLmZyb20pLHZiKGgudG8pKSxoPXt9LGgubXM9Zy5taWxsaXNlY29uZHMsaC5NPWcubW9udGhzKSxlPW5ldyBuKGgpLHZiLmlzRHVyYXRpb24oYSkmJmMoYSwiX2xvY2FsZSIpJiYoZS5fbG9jYWxlPWEuX2xvY2FsZSksZX0sdmIudmVyc2lvbj15Yix2Yi5kZWZhdWx0Rm9ybWF0PWdjLHZiLklTT184NjAxPWZ1bmN0aW9uKCl7fSx2Yi5tb21lbnRQcm9wZXJ0aWVzPUtiLHZiLnVwZGF0ZU9mZnNldD1mdW5jdGlvbigpe30sdmIucmVsYXRpdmVUaW1lVGhyZXNob2xkPWZ1bmN0aW9uKGIsYyl7cmV0dXJuIG9jW2JdPT09YT8hMTpjPT09YT9vY1tiXToob2NbYl09YywhMCl9LHZiLmxhbmc9ZigibW9tZW50LmxhbmcgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGUgaW5zdGVhZC4iLGZ1bmN0aW9uKGEsYil7cmV0dXJuIHZiLmxvY2FsZShhLGIpfSksdmIubG9jYWxlPWZ1bmN0aW9uKGEsYil7dmFyIGM7cmV0dXJuIGEmJihjPSJ1bmRlZmluZWQiIT10eXBlb2YgYj92Yi5kZWZpbmVMb2NhbGUoYSxiKTp2Yi5sb2NhbGVEYXRhKGEpLGMmJih2Yi5kdXJhdGlvbi5fbG9jYWxlPXZiLl9sb2NhbGU9YykpLHZiLl9sb2NhbGUuX2FiYnJ9LHZiLmRlZmluZUxvY2FsZT1mdW5jdGlvbihhLGIpe3JldHVybiBudWxsIT09Yj8oYi5hYmJyPWEsSmJbYV18fChKYlthXT1uZXcgbCksSmJbYV0uc2V0KGIpLHZiLmxvY2FsZShhKSxKYlthXSk6KGRlbGV0ZSBKYlthXSxudWxsKX0sdmIubGFuZ0RhdGE9ZigibW9tZW50LmxhbmdEYXRhIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb21lbnQubG9jYWxlRGF0YSBpbnN0ZWFkLiIsZnVuY3Rpb24oYSl7cmV0dXJuIHZiLmxvY2FsZURhdGEoYSl9KSx2Yi5sb2NhbGVEYXRhPWZ1bmN0aW9uKGEpe3ZhciBiO2lmKGEmJmEuX2xvY2FsZSYmYS5fbG9jYWxlLl9hYmJyJiYoYT1hLl9sb2NhbGUuX2FiYnIpLCFhKXJldHVybiB2Yi5fbG9jYWxlO2lmKCF3KGEpKXtpZihiPUwoYSkpcmV0dXJuIGI7YT1bYV19cmV0dXJuIEsoYSl9LHZiLmlzTW9tZW50PWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgbXx8bnVsbCE9YSYmYyhhLCJfaXNBTW9tZW50T2JqZWN0Iil9LHZiLmlzRHVyYXRpb249ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBufTtmb3IoeGI9dGMubGVuZ3RoLTE7eGI+PTA7LS14YilCKHRjW3hiXSk7dmIubm9ybWFsaXplVW5pdHM9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSl9LHZiLmludmFsaWQ9ZnVuY3Rpb24oYSl7dmFyIGI9dmIudXRjKDAvMCk7cmV0dXJuIG51bGwhPWE/byhiLl9wZixhKTpiLl9wZi51c2VySW52YWxpZGF0ZWQ9ITAsYn0sdmIucGFyc2Vab25lPWZ1bmN0aW9uKCl7cmV0dXJuIHZiLmFwcGx5KG51bGwsYXJndW1lbnRzKS5wYXJzZVpvbmUoKX0sdmIucGFyc2VUd29EaWdpdFllYXI9ZnVuY3Rpb24oYSl7cmV0dXJuIEMoYSkrKEMoYSk+Njg/MTkwMDoyZTMpfSx2Yi5pc0RhdGU9eCxvKHZiLmZuPW0ucHJvdG90eXBlLHtjbG9uZTpmdW5jdGlvbigpe3JldHVybiB2Yih0aGlzKX0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybit0aGlzLl9kLTZlNCoodGhpcy5fb2Zmc2V0fHwwKX0sdW5peDpmdW5jdGlvbigpe3JldHVybiBNYXRoLmZsb29yKCt0aGlzLzFlMyl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5sb2NhbGUoImVuIikuZm9ybWF0KCJkZGQgTU1NIEREIFlZWVkgSEg6bW06c3MgW0dNVF1aWiIpfSx0b0RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb2Zmc2V0P25ldyBEYXRlKCt0aGlzKTp0aGlzLl9kfSx0b0lTT1N0cmluZzpmdW5jdGlvbigpe3ZhciBhPXZiKHRoaXMpLnV0YygpO3JldHVybiAwPGEueWVhcigpJiZhLnllYXIoKTw9OTk5OT8iZnVuY3Rpb24iPT10eXBlb2YgRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc/dGhpcy50b0RhdGUoKS50b0lTT1N0cmluZygpOlAoYSwiWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXSIpOlAoYSwiWVlZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdIil9LHRvQXJyYXk6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3JldHVyblthLnllYXIoKSxhLm1vbnRoKCksYS5kYXRlKCksYS5ob3VycygpLGEubWludXRlcygpLGEuc2Vjb25kcygpLGEubWlsbGlzZWNvbmRzKCldfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcyl9LGlzRFNUU2hpZnRlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hP3RoaXMuaXNWYWxpZCgpJiZ5KHRoaXMuX2EsKHRoaXMuX2lzVVRDP3ZiLnV0Yyh0aGlzLl9hKTp2Yih0aGlzLl9hKSkudG9BcnJheSgpKT4wOiExfSxwYXJzaW5nRmxhZ3M6ZnVuY3Rpb24oKXtyZXR1cm4gbyh7fSx0aGlzLl9wZil9LGludmFsaWRBdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wZi5vdmVyZmxvd30sdXRjOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnV0Y09mZnNldCgwLGEpfSxsb2NhbDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5faXNVVEMmJih0aGlzLnV0Y09mZnNldCgwLGEpLHRoaXMuX2lzVVRDPSExLGEmJnRoaXMuc3VidHJhY3QodGhpcy5fZGF0ZVV0Y09mZnNldCgpLCJtIikpLHRoaXN9LGZvcm1hdDpmdW5jdGlvbihhKXt2YXIgYj1QKHRoaXMsYXx8dmIuZGVmYXVsdEZvcm1hdCk7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLnBvc3Rmb3JtYXQoYil9LGFkZDp1KDEsImFkZCIpLHN1YnRyYWN0OnUoLTEsInN1YnRyYWN0IiksZGlmZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPU0oYSx0aGlzKSxnPTZlNCooZi51dGNPZmZzZXQoKS10aGlzLnV0Y09mZnNldCgpKTtyZXR1cm4gYj16KGIpLCJ5ZWFyIj09PWJ8fCJtb250aCI9PT1ifHwicXVhcnRlciI9PT1iPyhlPWoodGhpcyxmKSwicXVhcnRlciI9PT1iP2UvPTM6InllYXIiPT09YiYmKGUvPTEyKSk6KGQ9dGhpcy1mLGU9InNlY29uZCI9PT1iP2QvMWUzOiJtaW51dGUiPT09Yj9kLzZlNDoiaG91ciI9PT1iP2QvMzZlNToiZGF5Ij09PWI/KGQtZykvODY0ZTU6IndlZWsiPT09Yj8oZC1nKS82MDQ4ZTU6ZCksYz9lOnEoZSl9LGZyb206ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdmIuZHVyYXRpb24oe3RvOnRoaXMsZnJvbTphfSkubG9jYWxlKHRoaXMubG9jYWxlKCkpLmh1bWFuaXplKCFiKX0sZnJvbU5vdzpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5mcm9tKHZiKCksYSl9LGNhbGVuZGFyOmZ1bmN0aW9uKGEpe3ZhciBiPWF8fHZiKCksYz1NKGIsdGhpcykuc3RhcnRPZigiZGF5IiksZD10aGlzLmRpZmYoYywiZGF5cyIsITApLGU9LTY+ZD8ic2FtZUVsc2UiOi0xPmQ/Imxhc3RXZWVrIjowPmQ/Imxhc3REYXkiOjE+ZD8ic2FtZURheSI6Mj5kPyJuZXh0RGF5Ijo3PmQ/Im5leHRXZWVrIjoic2FtZUVsc2UiO3JldHVybiB0aGlzLmZvcm1hdCh0aGlzLmxvY2FsZURhdGEoKS5jYWxlbmRhcihlLHRoaXMsdmIoYikpKX0saXNMZWFwWWVhcjpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMueWVhcigpKX0saXNEU1Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51dGNPZmZzZXQoKT50aGlzLmNsb25lKCkubW9udGgoMCkudXRjT2Zmc2V0KCl8fHRoaXMudXRjT2Zmc2V0KCk+dGhpcy5jbG9uZSgpLm1vbnRoKDUpLnV0Y09mZnNldCgpfSxkYXk6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5faXNVVEM/dGhpcy5fZC5nZXRVVENEYXkoKTp0aGlzLl9kLmdldERheSgpO3JldHVybiBudWxsIT1hPyhhPWdiKGEsdGhpcy5sb2NhbGVEYXRhKCkpLHRoaXMuYWRkKGEtYiwiZCIpKTpifSxtb250aDpxYigiTW9udGgiLCEwKSxzdGFydE9mOmZ1bmN0aW9uKGEpe3N3aXRjaChhPXooYSkpe2Nhc2UieWVhciI6dGhpcy5tb250aCgwKTtjYXNlInF1YXJ0ZXIiOmNhc2UibW9udGgiOnRoaXMuZGF0ZSgxKTtjYXNlIndlZWsiOmNhc2UiaXNvV2VlayI6Y2FzZSJkYXkiOnRoaXMuaG91cnMoMCk7Y2FzZSJob3VyIjp0aGlzLm1pbnV0ZXMoMCk7Y2FzZSJtaW51dGUiOnRoaXMuc2Vjb25kcygwKTtjYXNlInNlY29uZCI6dGhpcy5taWxsaXNlY29uZHMoMCl9cmV0dXJuIndlZWsiPT09YT90aGlzLndlZWtkYXkoMCk6Imlzb1dlZWsiPT09YSYmdGhpcy5pc29XZWVrZGF5KDEpLCJxdWFydGVyIj09PWEmJnRoaXMubW9udGgoMypNYXRoLmZsb29yKHRoaXMubW9udGgoKS8zKSksdGhpc30sZW5kT2Y6ZnVuY3Rpb24oYil7cmV0dXJuIGI9eihiKSxiPT09YXx8Im1pbGxpc2Vjb25kIj09PWI/dGhpczp0aGlzLnN0YXJ0T2YoYikuYWRkKDEsImlzb1dlZWsiPT09Yj8id2VlayI6Yikuc3VidHJhY3QoMSwibXMiKX0saXNBZnRlcjpmdW5jdGlvbihhLGIpe3ZhciBjO3JldHVybiBiPXooInVuZGVmaW5lZCIhPXR5cGVvZiBiP2I6Im1pbGxpc2Vjb25kIiksIm1pbGxpc2Vjb25kIj09PWI/KGE9dmIuaXNNb21lbnQoYSk/YTp2YihhKSwrdGhpcz4rYSk6KGM9dmIuaXNNb21lbnQoYSk/K2E6K3ZiKGEpLGM8K3RoaXMuY2xvbmUoKS5zdGFydE9mKGIpKX0saXNCZWZvcmU6ZnVuY3Rpb24oYSxiKXt2YXIgYztyZXR1cm4gYj16KCJ1bmRlZmluZWQiIT10eXBlb2YgYj9iOiJtaWxsaXNlY29uZCIpLCJtaWxsaXNlY29uZCI9PT1iPyhhPXZiLmlzTW9tZW50KGEpP2E6dmIoYSksK2E+K3RoaXMpOihjPXZiLmlzTW9tZW50KGEpPythOit2YihhKSwrdGhpcy5jbG9uZSgpLmVuZE9mKGIpPGMpfSxpc0JldHdlZW46ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLmlzQWZ0ZXIoYSxjKSYmdGhpcy5pc0JlZm9yZShiLGMpfSxpc1NhbWU6ZnVuY3Rpb24oYSxiKXt2YXIgYztyZXR1cm4gYj16KGJ8fCJtaWxsaXNlY29uZCIpLCJtaWxsaXNlY29uZCI9PT1iPyhhPXZiLmlzTW9tZW50KGEpP2E6dmIoYSksK3RoaXM9PT0rYSk6KGM9K3ZiKGEpLCt0aGlzLmNsb25lKCkuc3RhcnRPZihiKTw9YyYmYzw9K3RoaXMuY2xvbmUoKS5lbmRPZihiKSl9LG1pbjpmKCJtb21lbnQoKS5taW4gaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5taW4gaW5zdGVhZC4gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzE1NDgiLGZ1bmN0aW9uKGEpe3JldHVybiBhPXZiLmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzPmE/dGhpczphfSksbWF4OmYoIm1vbWVudCgpLm1heCBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1heCBpbnN0ZWFkLiBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMTU0OCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE9dmIuYXBwbHkobnVsbCxhcmd1bWVudHMpLGE+dGhpcz90aGlzOmF9KSx6b25lOmYoIm1vbWVudCgpLnpvbmUgaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudCgpLnV0Y09mZnNldCBpbnN0ZWFkLiBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMTc3OSIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbCE9YT8oInN0cmluZyIhPXR5cGVvZiBhJiYoYT0tYSksdGhpcy51dGNPZmZzZXQoYSxiKSx0aGlzKTotdGhpcy51dGNPZmZzZXQoKX0pLHV0Y09mZnNldDpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9dGhpcy5fb2Zmc2V0fHwwO3JldHVybiBudWxsIT1hPygic3RyaW5nIj09dHlwZW9mIGEmJihhPVMoYSkpLE1hdGguYWJzKGEpPDE2JiYoYT02MCphKSwhdGhpcy5faXNVVEMmJmImJihjPXRoaXMuX2RhdGVVdGNPZmZzZXQoKSksdGhpcy5fb2Zmc2V0PWEsdGhpcy5faXNVVEM9ITAsbnVsbCE9YyYmdGhpcy5hZGQoYywibSIpLGQhPT1hJiYoIWJ8fHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3M/dih0aGlzLHZiLmR1cmF0aW9uKGEtZCwibSIpLDEsITEpOnRoaXMuX2NoYW5nZUluUHJvZ3Jlc3N8fCh0aGlzLl9jaGFuZ2VJblByb2dyZXNzPSEwLHZiLnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzLl9jaGFuZ2VJblByb2dyZXNzPW51bGwpKSx0aGlzKTp0aGlzLl9pc1VUQz9kOnRoaXMuX2RhdGVVdGNPZmZzZXQoKX0saXNMb2NhbDpmdW5jdGlvbigpe3JldHVybiF0aGlzLl9pc1VUQ30saXNVdGNPZmZzZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNVVEN9LGlzVXRjOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzVVRDJiYwPT09dGhpcy5fb2Zmc2V0fSx6b25lQWJicjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1VUQz8iVVRDIjoiIn0sem9uZU5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNVVEM/IkNvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lIjoiIn0scGFyc2Vab25lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3R6bT90aGlzLnV0Y09mZnNldCh0aGlzLl90em0pOiJzdHJpbmciPT10eXBlb2YgdGhpcy5faSYmdGhpcy51dGNPZmZzZXQoUyh0aGlzLl9pKSksdGhpc30saGFzQWxpZ25lZEhvdXJPZmZzZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9YT92YihhKS51dGNPZmZzZXQoKTowLCh0aGlzLnV0Y09mZnNldCgpLWEpJTYwPT09MH0sZGF5c0luTW9udGg6ZnVuY3Rpb24oKXtyZXR1cm4gRCh0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCkpfSxkYXlPZlllYXI6ZnVuY3Rpb24oYSl7dmFyIGI9QWIoKHZiKHRoaXMpLnN0YXJ0T2YoImRheSIpLXZiKHRoaXMpLnN0YXJ0T2YoInllYXIiKSkvODY0ZTUpKzE7cmV0dXJuIG51bGw9PWE/Yjp0aGlzLmFkZChhLWIsImQiKX0scXVhcnRlcjpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9NYXRoLmNlaWwoKHRoaXMubW9udGgoKSsxKS8zKTp0aGlzLm1vbnRoKDMqKGEtMSkrdGhpcy5tb250aCgpJTMpfSx3ZWVrWWVhcjpmdW5jdGlvbihhKXt2YXIgYj1qYih0aGlzLHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdyx0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3kpLnllYXI7cmV0dXJuIG51bGw9PWE/Yjp0aGlzLmFkZChhLWIsInkiKX0saXNvV2Vla1llYXI6ZnVuY3Rpb24oYSl7dmFyIGI9amIodGhpcywxLDQpLnllYXI7cmV0dXJuIG51bGw9PWE/Yjp0aGlzLmFkZChhLWIsInkiKX0sd2VlazpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmxvY2FsZURhdGEoKS53ZWVrKHRoaXMpO3JldHVybiBudWxsPT1hP2I6dGhpcy5hZGQoNyooYS1iKSwiZCIpfSxpc29XZWVrOmZ1bmN0aW9uKGEpe3ZhciBiPWpiKHRoaXMsMSw0KS53ZWVrO3JldHVybiBudWxsPT1hP2I6dGhpcy5hZGQoNyooYS1iKSwiZCIpfSx3ZWVrZGF5OmZ1bmN0aW9uKGEpe3ZhciBiPSh0aGlzLmRheSgpKzctdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG93KSU3O3JldHVybiBudWxsPT1hP2I6dGhpcy5hZGQoYS1iLCJkIil9LGlzb1dlZWtkYXk6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/dGhpcy5kYXkoKXx8Nzp0aGlzLmRheSh0aGlzLmRheSgpJTc/YTphLTcpfSxpc29XZWVrc0luWWVhcjpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMueWVhcigpLDEsNCl9LHdlZWtzSW5ZZWFyOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5sb2NhbGVEYXRhKCkuX3dlZWs7cmV0dXJuIEUodGhpcy55ZWFyKCksYS5kb3csYS5kb3kpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9eihhKSx0aGlzW2FdKCl9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjO2lmKCJvYmplY3QiPT10eXBlb2YgYSlmb3IoYyBpbiBhKXRoaXMuc2V0KGMsYVtjXSk7ZWxzZSBhPXooYSksImZ1bmN0aW9uIj09dHlwZW9mIHRoaXNbYV0mJnRoaXNbYV0oYik7cmV0dXJuIHRoaXN9LGxvY2FsZTpmdW5jdGlvbihiKXt2YXIgYztyZXR1cm4gYj09PWE/dGhpcy5fbG9jYWxlLl9hYmJyOihjPXZiLmxvY2FsZURhdGEoYiksbnVsbCE9YyYmKHRoaXMuX2xvY2FsZT1jKSx0aGlzKX0sbGFuZzpmKCJtb21lbnQoKS5sYW5nKCkgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIG1vbWVudCgpLmxvY2FsZURhdGEoKSB0byBnZXQgdGhlIGxhbmd1YWdlIGNvbmZpZ3VyYXRpb24uIFVzZSBtb21lbnQoKS5sb2NhbGUoKSB0byBjaGFuZ2UgbGFuZ3VhZ2VzLiIsZnVuY3Rpb24oYil7cmV0dXJuIGI9PT1hP3RoaXMubG9jYWxlRGF0YSgpOnRoaXMubG9jYWxlKGIpfSksbG9jYWxlRGF0YTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sb2NhbGV9LF9kYXRlVXRjT2Zmc2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDE1Ki1NYXRoLnJvdW5kKHRoaXMuX2QuZ2V0VGltZXpvbmVPZmZzZXQoKS8xNSl9fSksdmIuZm4ubWlsbGlzZWNvbmQ9dmIuZm4ubWlsbGlzZWNvbmRzPXFiKCJNaWxsaXNlY29uZHMiLCExKSx2Yi5mbi5zZWNvbmQ9dmIuZm4uc2Vjb25kcz1xYigiU2Vjb25kcyIsITEpLHZiLmZuLm1pbnV0ZT12Yi5mbi5taW51dGVzPXFiKCJNaW51dGVzIiwhMSksdmIuZm4uaG91cj12Yi5mbi5ob3Vycz1xYigiSG91cnMiLCEwKSx2Yi5mbi5kYXRlPXFiKCJEYXRlIiwhMCksdmIuZm4uZGF0ZXM9ZigiZGF0ZXMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIGRhdGUgaW5zdGVhZC4iLHFiKCJEYXRlIiwhMCkpLHZiLmZuLnllYXI9cWIoIkZ1bGxZZWFyIiwhMCksdmIuZm4ueWVhcnM9ZigieWVhcnMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIHllYXIgaW5zdGVhZC4iLHFiKCJGdWxsWWVhciIsITApKSx2Yi5mbi5kYXlzPXZiLmZuLmRheSx2Yi5mbi5tb250aHM9dmIuZm4ubW9udGgsdmIuZm4ud2Vla3M9dmIuZm4ud2Vlayx2Yi5mbi5pc29XZWVrcz12Yi5mbi5pc29XZWVrLHZiLmZuLnF1YXJ0ZXJzPXZiLmZuLnF1YXJ0ZXIsdmIuZm4udG9KU09OPXZiLmZuLnRvSVNPU3RyaW5nLHZiLmZuLmlzVVRDPXZiLmZuLmlzVXRjLG8odmIuZHVyYXRpb24uZm49bi5wcm90b3R5cGUse19idWJibGU6ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZD10aGlzLl9taWxsaXNlY29uZHMsZT10aGlzLl9kYXlzLGY9dGhpcy5fbW9udGhzLGc9dGhpcy5fZGF0YSxoPTA7Zy5taWxsaXNlY29uZHM9ZCUxZTMsYT1xKGQvMWUzKSxnLnNlY29uZHM9YSU2MCxiPXEoYS82MCksZy5taW51dGVzPWIlNjAsYz1xKGIvNjApLGcuaG91cnM9YyUyNCxlKz1xKGMvMjQpLGg9cShyYihlKSksZS09cShzYihoKSksZis9cShlLzMwKSxlJT0zMCxoKz1xKGYvMTIpLGYlPTEyLGcuZGF5cz1lLGcubW9udGhzPWYsZy55ZWFycz1ofSxhYnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWlsbGlzZWNvbmRzPU1hdGguYWJzKHRoaXMuX21pbGxpc2Vjb25kcyksdGhpcy5fZGF5cz1NYXRoLmFicyh0aGlzLl9kYXlzKSx0aGlzLl9tb250aHM9TWF0aC5hYnModGhpcy5fbW9udGhzKSx0aGlzLl9kYXRhLm1pbGxpc2Vjb25kcz1NYXRoLmFicyh0aGlzLl9kYXRhLm1pbGxpc2Vjb25kcyksdGhpcy5fZGF0YS5zZWNvbmRzPU1hdGguYWJzKHRoaXMuX2RhdGEuc2Vjb25kcyksdGhpcy5fZGF0YS5taW51dGVzPU1hdGguYWJzKHRoaXMuX2RhdGEubWludXRlcyksdGhpcy5fZGF0YS5ob3Vycz1NYXRoLmFicyh0aGlzLl9kYXRhLmhvdXJzKSx0aGlzLl9kYXRhLm1vbnRocz1NYXRoLmFicyh0aGlzLl9kYXRhLm1vbnRocyksdGhpcy5fZGF0YS55ZWFycz1NYXRoLmFicyh0aGlzLl9kYXRhLnllYXJzKSx0aGlzfSx3ZWVrczpmdW5jdGlvbigpe3JldHVybiBxKHRoaXMuZGF5cygpLzcpfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21pbGxpc2Vjb25kcys4NjRlNSp0aGlzLl9kYXlzK3RoaXMuX21vbnRocyUxMioyNTkyZTYrMzE1MzZlNipDKHRoaXMuX21vbnRocy8xMikKfSxodW1hbml6ZTpmdW5jdGlvbihhKXt2YXIgYj1pYih0aGlzLCFhLHRoaXMubG9jYWxlRGF0YSgpKTtyZXR1cm4gYSYmKGI9dGhpcy5sb2NhbGVEYXRhKCkucGFzdEZ1dHVyZSgrdGhpcyxiKSksdGhpcy5sb2NhbGVEYXRhKCkucG9zdGZvcm1hdChiKX0sYWRkOmZ1bmN0aW9uKGEsYil7dmFyIGM9dmIuZHVyYXRpb24oYSxiKTtyZXR1cm4gdGhpcy5fbWlsbGlzZWNvbmRzKz1jLl9taWxsaXNlY29uZHMsdGhpcy5fZGF5cys9Yy5fZGF5cyx0aGlzLl9tb250aHMrPWMuX21vbnRocyx0aGlzLl9idWJibGUoKSx0aGlzfSxzdWJ0cmFjdDpmdW5jdGlvbihhLGIpe3ZhciBjPXZiLmR1cmF0aW9uKGEsYik7cmV0dXJuIHRoaXMuX21pbGxpc2Vjb25kcy09Yy5fbWlsbGlzZWNvbmRzLHRoaXMuX2RheXMtPWMuX2RheXMsdGhpcy5fbW9udGhzLT1jLl9tb250aHMsdGhpcy5fYnViYmxlKCksdGhpc30sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhPXooYSksdGhpc1thLnRvTG93ZXJDYXNlKCkrInMiXSgpfSxhczpmdW5jdGlvbihhKXt2YXIgYixjO2lmKGE9eihhKSwibW9udGgiPT09YXx8InllYXIiPT09YSlyZXR1cm4gYj10aGlzLl9kYXlzK3RoaXMuX21pbGxpc2Vjb25kcy84NjRlNSxjPXRoaXMuX21vbnRocysxMipyYihiKSwibW9udGgiPT09YT9jOmMvMTI7c3dpdGNoKGI9dGhpcy5fZGF5cytNYXRoLnJvdW5kKHNiKHRoaXMuX21vbnRocy8xMikpLGEpe2Nhc2Uid2VlayI6cmV0dXJuIGIvNyt0aGlzLl9taWxsaXNlY29uZHMvNjA0OGU1O2Nhc2UiZGF5IjpyZXR1cm4gYit0aGlzLl9taWxsaXNlY29uZHMvODY0ZTU7Y2FzZSJob3VyIjpyZXR1cm4gMjQqYit0aGlzLl9taWxsaXNlY29uZHMvMzZlNTtjYXNlIm1pbnV0ZSI6cmV0dXJuIDI0KmIqNjArdGhpcy5fbWlsbGlzZWNvbmRzLzZlNDtjYXNlInNlY29uZCI6cmV0dXJuIDI0KmIqNjAqNjArdGhpcy5fbWlsbGlzZWNvbmRzLzFlMztjYXNlIm1pbGxpc2Vjb25kIjpyZXR1cm4gTWF0aC5mbG9vcigyNCpiKjYwKjYwKjFlMykrdGhpcy5fbWlsbGlzZWNvbmRzO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHVuaXQgIithKX19LGxhbmc6dmIuZm4ubGFuZyxsb2NhbGU6dmIuZm4ubG9jYWxlLHRvSXNvU3RyaW5nOmYoInRvSXNvU3RyaW5nKCkgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB0b0lTT1N0cmluZygpIGluc3RlYWQgKG5vdGljZSB0aGUgY2FwaXRhbHMpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvSVNPU3RyaW5nKCl9KSx0b0lTT1N0cmluZzpmdW5jdGlvbigpe3ZhciBhPU1hdGguYWJzKHRoaXMueWVhcnMoKSksYj1NYXRoLmFicyh0aGlzLm1vbnRocygpKSxjPU1hdGguYWJzKHRoaXMuZGF5cygpKSxkPU1hdGguYWJzKHRoaXMuaG91cnMoKSksZT1NYXRoLmFicyh0aGlzLm1pbnV0ZXMoKSksZj1NYXRoLmFicyh0aGlzLnNlY29uZHMoKSt0aGlzLm1pbGxpc2Vjb25kcygpLzFlMyk7cmV0dXJuIHRoaXMuYXNTZWNvbmRzKCk/KHRoaXMuYXNTZWNvbmRzKCk8MD8iLSI6IiIpKyJQIisoYT9hKyJZIjoiIikrKGI/YisiTSI6IiIpKyhjP2MrIkQiOiIiKSsoZHx8ZXx8Zj8iVCI6IiIpKyhkP2QrIkgiOiIiKSsoZT9lKyJNIjoiIikrKGY/ZisiUyI6IiIpOiJQMEQifSxsb2NhbGVEYXRhOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvY2FsZX0sdG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9JU09TdHJpbmcoKX19KSx2Yi5kdXJhdGlvbi5mbi50b1N0cmluZz12Yi5kdXJhdGlvbi5mbi50b0lTT1N0cmluZztmb3IoeGIgaW4ga2MpYyhrYyx4YikmJnRiKHhiLnRvTG93ZXJDYXNlKCkpO3ZiLmR1cmF0aW9uLmZuLmFzTWlsbGlzZWNvbmRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXMoIm1zIil9LHZiLmR1cmF0aW9uLmZuLmFzU2Vjb25kcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmFzKCJzIil9LHZiLmR1cmF0aW9uLmZuLmFzTWludXRlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmFzKCJtIil9LHZiLmR1cmF0aW9uLmZuLmFzSG91cnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcygiaCIpfSx2Yi5kdXJhdGlvbi5mbi5hc0RheXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcygiZCIpfSx2Yi5kdXJhdGlvbi5mbi5hc1dlZWtzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXMoIndlZWtzIil9LHZiLmR1cmF0aW9uLmZuLmFzTW9udGhzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXMoIk0iKX0sdmIuZHVyYXRpb24uZm4uYXNZZWFycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmFzKCJ5Iil9LHZiLmxvY2FsZSgiZW4iLHtvcmRpbmFsUGFyc2U6L1xkezEsMn0odGh8c3R8bmR8cmQpLyxvcmRpbmFsOmZ1bmN0aW9uKGEpe3ZhciBiPWElMTAsYz0xPT09QyhhJTEwMC8xMCk/InRoIjoxPT09Yj8ic3QiOjI9PT1iPyJuZCI6Mz09PWI/InJkIjoidGgiO3JldHVybiBhK2N9fSksTGI/bW9kdWxlLmV4cG9ydHM9dmI6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD8oZGVmaW5lKGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYy5jb25maWcmJmMuY29uZmlnKCkmJmMuY29uZmlnKCkubm9HbG9iYWw9PT0hMCYmKHpiLm1vbWVudD13YiksdmJ9KSx1YighMCkpOnViKCl9KS5jYWxsKHRoaXMpOw==]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAGUAeAB0ZHNjbGJvb2wBAAAAAAAAAAACAAAAAAAAAAEAAAABAAAQAGNsYm9vbAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAAAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAYAAAAAAAAAABAAAAgAAAAAEAAAEAAAAAAQAAAgAAAAABAAAEAAAAAAIAAAgAAAAYAAAAAAAAAAABAAAgAAAAAAEAAEAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RhYmxlIFRlbm5pcyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1Bvc3QgSW5zdGFsbCBNZXNzYWdlLCBlLmcuLCBCZSBzdXJlIHRvIHNldCAiVXNlIFNrZWxldG9ucyIgcGVybWlzc2lvbnMgdG8gdXNlIHRoaXMgbW9kdWxlISc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnUG9zdCBVbmluc3RhbGwgTWVzc2FnZSwgZS5nLiwgIkN1cnNlcyEgRm9pbGVkIEFnYWluISInOwokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ1JlYWxseT8gWW91XCdyZSBzdXJlIHlvdSB3YW50IHRvIHVuaW5zdGFsbCB0aGlzIGZpbmUgbW9kdWxlPyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBVbmluc3RhbGxlZC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHZlcnNpb24gJXMgaW5zdGFsbGVkLic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdNb2R1bGUgcHJlZmVyZW5jZXMgdXBkYXRlZC4nOwokbGFuZ1snc3VibWl0J10gPSAnRW52b3llcic7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc3MgRGVuaWVkLiBQbGVhc2UgY2hlY2sgeW91ciBwZXJtaXNzaW9ucy4nOwokbGFuZ1snZXJyb3InXSA9ICdFcnJvciEnOwokbGFuZ1sncmVzdWx0c2ZvdW5kdGV4dCddID0gJ3JlY29yZHMgZm91bmQnOwokbGFuZ1snbGlua192aWV3J10gPSAnVmlldyBSZWNvcmQnOwokbGFuZ1snZWRpdCddID0gJ0VkaXQgUmVjb3JkJzsKJGxhbmdbJ3RpdGxlX251bV9yZWNvcmRzJ10gPSAnJXMgcmVjb3JkcyBmb3VuZC4nOwokbGFuZ1snYWRkX3JlY29yZCddID0gJ0FkZCBhIFJlY29yZCc7CiRsYW5nWydzYXZlZF9yZWNvcmQnXSA9ICdBZGQgYSBSZWNvcmQnOwokbGFuZ1snYWRkZWRfcmVjb3JkJ10gPSAnQWRkZWQgcmVjb3JkLic7CiRsYW5nWyd1cGRhdGVkX3JlY29yZCddID0gJ1JlY29yZCB1cGRhdGVkLic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsZSB1cGdyYWRlZCB0byB2ZXJzaW9uICVzLic7CiRsYW5nWyd0aXRsZV9hbGxvd19hZGQnXSA9ICdVc2VycyBtYXkgYWRkIHJlY29yZHM/JzsKJGxhbmdbJ3RpdGxlX2FsbG93X2FkZF9oZWxwJ10gPSAnQ2xpY2sgaGVyZSB0byBhbGxvdyB1c2VycyB0byBhZGQgcmVjb3Jkcy4nOwokbGFuZ1sndGl0bGVfbW9kX3ByZWZzJ10gPSAnTW9kdWxlIFByZWZlcmVuY2VzJzsKJGxhbmdbJ3RpdGxlX2dlbmVyYWwnXSA9ICdHZW5lcmFsIEluZm8nOwokbGFuZ1sndGl0bGVfZGVzY3JpcHRpb24nXSA9ICdEZXNjcmlwdGlvbic7CiRsYW5nWyd0aXRsZV9leHBsYW5hdGlvbiddID0gJ0xvbmcgRGVzY3JpcHRpb24nOwokbGFuZ1sndGl0bGVfbW9kX2FkbWluJ10gPSAnTW9kdWxlIEFkbWluIFBhbmVsJzsKJGxhbmdbJ2Rhc2hfcmVjb3JkX2NvdW50J10gPSAnVGhpcyBtb2R1bGUgaGFuZGxlcyAlcyByZWNvcmRzJzsKJGxhbmdbJ2FsZXJ0X25vX3JlY29yZHMnXSA9ICdUaGVyZSBoYXZlIG5vdCBiZWVuIGFueSByZWNvcmRzIGFkZGVkIGluIHRoZSBTa2VsZXRvbiBtb2R1bGUhJzsKJGxhbmdbJ2hlbHBfc2tlbGV0b25faWQnXSA9ICdJbnRlcm5hbGx5IGlkZW50aWZpZXIgZm9yIHNlbGVjdGluZyByZWNvcmRzJzsKJGxhbmdbJ2hlbHBfY29kZV9jb21wZXQnXSA9ICdDZSBjb2RlIHNlIHRyb3V2ZSBkYW5zIGxlcyByw6lzdWx0YXRzIEZGVFQnOwokbGFuZ1snaGVscF9kZXNjcmlwdGlvbiddID0gJ0ludGVybmFsIHBhcmFtZXRlciB1c2VkIHRvIHBhc3MgZGVzY3JpcHRpb24gaW5mbyB3aGVuIGNyZWF0aW5nIG9yIGVkaXRpbmcgYSByZWNvcmQnOwokbGFuZ1snaGVscF9leHBsYW5hdGlvbiddID0gJ0ludGVybmFsIHBhcmFtZXRlciB1c2VkIHRvIHBhc3MgZXhwbGFuYXRpb24gaW5mbyB3aGVuIGNyZWF0aW5nIG9yIGVkaXRpbmcgYSByZWNvcmQnOwokbGFuZ1snaGVscF9tb2R1bGVfbWVzc2FnZSddID0gJ0ludGVybmFsbHkgdXNlZCBwYXJhbWV0ZXIgZm9yIHBhc3NpbmcgbWVzc2FnZXMgdG8gdXNlcic7CiRsYW5nWydldmVudF9pbmZvX09uU2tlbGV0b25QcmVmZXJlbmNlQ2hhbmdlJ10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gIHRoZSBwcmVmZXJlbmNlcyB0byB0aGUgU2tlbGV0b24gTW9kdWxlIGdldCBjaGFuZ2VkJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25Ta2VsZXRvblByZWZlcmVuY2VDaGFuZ2UnXSA9ICc8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiB0aGUgcHJlZmVyZW5jZXMgdG8gdGhlIFNrZWxldG9uIE1vZHVsZSBnZXQgY2hhbmdlZDwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT48ZW0+YWxsb3dfYWRkPC9lbT4gLSBUaGUgbmV3IHNldHRpbmcgb2YgdGhlICJBbGxvdyBBZGQiIHByZWZlcmVuY2U7IGJvb2xlYW48L2xpPgo8L3VsPiAKJzsKCiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0NlIG1vZHVsZSBjYWxjdWxlIHZvcyBwb2ludHMgRkZUVC4nOwokbGFuZ1snd2VsY29tZV90ZXh0J10gPSAnPHA+QmllbnZlbnVlIGRhbnMgbGUgbW9kdWxlIFBpbmc8L3A+JzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4KPGxpPlZlcnNpb24gMC4xYmV0YTMsIE5vdiAyMDE0IFNjIEFtw6lsaW9yYXRpb25zIGR1IGZyb250LW9mZmljZSBldCBkw6lib2d1YWdlIGR1IGJhY2s8L2xpPgo8dWw+CiAgIDxsaT5NaXNlIG5lIHBsYWNlIGR1IGZyb250LW9mZmljZS48L2xpPgogICA8bGk+QW3DqWxpb3JhdGlvbnMgZHUgYmFjay1vZmZpY2UgZXQgY29ycmVjdGlvbnMgZGUgYnVncy48L2xpPgo8L3VsPic7CiRsYW5nWydoZWxwJ10gPSAnPGgzPlF1ZSBmYWl0IGNlIG1vZHVsZSA/PC9oMz4KPHA+Q2UgbW9kdWxlIHLDqWN1cMOocmUgbGVzIHLDqXN1bHRhdHMgZGUgdm90cmUgY2x1YiBldCByw6lhbGlzZSBkZXMgdHJhaXRlbWVudHMgYWZpbiBkZSBsZXMgZGlzcG9zZXIgc3VyIHZvdHJlIHNpdGUgaW50ZXJuZXQuPC9wPgo8aDM+Q29tbWVudCBsXCd1dGlsaXNlciA/PC9oMz4KPHA+TGUgdGFnIHBhciBkw6lmYXV0IGVzdCBjZWx1aS1jaSB7Y21zX21vZHVsZSBtb2R1bGU9XCdQaW5nXCd9PC9wPgo8aDM+U3VwcG9ydDwvaDM+Cjx1bD4KPGxpPlBvdXIgb2J0ZW5pciBsYSBkZXJuacOocmUgdmVyc2lvbiBvZmZpY2llbGxlLCBGQVFzLCBvdSBwb3VyIHNpZ25hbGVyIHVuIGJ1ZywgZmFpcmUgdW5lIGRlbWFuZGUgZFwnYW3DqWxpb3JhdGlvbnMsIG1lcmNpIGRlIGNvbnN1bHRlciBsYSBmb3JnZSBkdSBtb2R1bGUgw6AgY2V0dGUgYWRyZXNzZSA6IAo8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3BpbmcvIj5QaW5nPC9hPi48L2xpPgo8L3VsPgo8cD5DZSBtb2R1bGUgZXN0IGZvdXJuaSBzb3VzIGxpY2VuY2UgR1BMIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi5Qb3VyIHV0aWxpc2VyIGxlIGxvZ2ljaWVsLCB2b3VzIGRldmV6IGVuICBhY2NlcHRlciBsZXMgdGVybWVzPC9wPgoKPGgzPkNvcHlyaWdodCBldCBMaWNlbmNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDE0LCBDbGF1ZGUgU2lvaGFuIDxhIGhyZWY9Im1haWx0bzpjbGF1ZGVAYWdpLXdlYmNvbnNlaWwuZnIiPmNsYXVkZUBhZ2ktd2ViY29uc2VpbC5mcjwvYT4uIFRvdXMgZHJvaXRzIHLDqXNlcnbDqXMuPC9wPgonOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/fr_FR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2FjdGl2ZSddID0gJ0FjdGlmJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjYyZlYWN1dGU7cyBJbnRlcmRpdC4gViZlYWN1dGU7cmlmaWVyIHZvcyBwZXJtaXNzaW9ucy4nOwokbGFuZ1snYWRkX3VzZXInXSA9ICdBam91dGVyIHVuIGpvdWV1cihldXNlKSc7CiRsYW5nWydhZGQtbWFudWFsbHknXSA9ICdBam91dGVyIG1hbnVlbGxlbWVudCc7CiRsYW5nWydhZGQnXSA9ICJBam91dGVyIjsKJGxhbmdbJ2FkcmVzc2UnXSA9ICdBZHJlc3NlJzsKJGxhbmdbJ2FscmVhZHlfZG93bmxvYWRlZCddID0gJ0TDqWrDoCB0w6lsw6ljaGFyZ8OpJzsKJGxhbmdbJ2FsbHNlYXNvbnMnXSA9ICdUb3V0ZXMgbGVzIHNhaXNvbnMnOwokbGFuZ1snYWxsc3RhdHVzJ10gPSAiVG91cyBsZXMgc3RhdHV0cyI7CiRsYW5nWydhbGxkYXRlcyddID0gIlRvdXRlcyBsZXMgZGF0ZXMiOwokbGFuZ1snYWxsZXF1aXBlcyddID0gJ1RvdXRlcyBsZXMgZXF1aXBlcyc7CiRsYW5nWydhbGx0b3VycyddID0gJ1RvdXMnOwokbGFuZ1snYWxscG91bGVzJ10gPSAnVG91dGVzIGxlcyBwb3VsZXMnOwokbGFuZ1snYWxsbW9udGhzJ10gPSAnVG91cyBsZXMgbW9pcyc7CiRsYW5nWydhbGxjb21wZXQnXSA9ICdUb3V0ZXMgbGVzIGNvbXDDqXRpdGlvbnMnOwokbGFuZ1snYWRkX2NvbXBldCddID0gJ0Fqb3V0ZXIgdW5lIG5vdXZlbGxlIGNvbXDDqXRpdGlvbic7CiRsYW5nWydhZGRfdHlwZV9jb21wZXQnXSA9ICdBam91dGVyIHVuZSBub3V2ZWxsZSBjb21ww6l0aXRpb24nOwokbGFuZ1snYWRkbWFudWFsbHknXSA9ICJham91dGVyIG1hbnVlbGxlbWVudCI7CiRsYW5nWydhbGxwbGF5ZXJzJ10gPSAnVG91cyBsZXMgam91ZXVycyc7CiRsYW5nWydhZGRfY29udGFjdCddID0gJ0Fqb3V0ZXIgdW4gY29udGFjdCc7CiRsYW5nWydhZGRuZXdzaGVldCddID0gJ0Fqb3V0ZXIgdW5lIHJlbmNvbnRyZSc7CiRsYW5nWydhZHZlcnNhaXJlJ10gPSAnQWR2ZXJzYWlyZSc7CiRsYW5nWydhZHZlcnNhaXJlcyddID0gJ0FkdmVyc2FpcmVzJzsKJGxhbmdbJ2FyZXlvdXN1cmVfZGVsZXRlbXVsdGlwbGUnXSA9ICdFdGVzIHZvdXMgY2VydGFpbiBkZSBzdXBwcmltZXIgdG91dGUgbGEgc8OpbGVjdGlvbiA/JzsKJGxhbmdbJ2FyZXlvdXN1cmVfYWN0aW9ubXVsdGlwbGUnXSA9ICdFdGVzIHZvdXMgY2VydGFpbiBkZSBmYWlyZSBjZXR0ZSBhY3Rpb24gcG91ciB0b3V0ZSBsYSBzw6lsZWN0aW9uID8nOwokbGFuZ1snYXBwbHlfdG9fc2VsZWN0aW9uJ10gPSAnQXBwbGlxdWVyIMOgIGxhIHPDqWxlY3Rpb24gPyc7CiRsYW5nWydhZGRfcmVjb3JkJ10gPSAnQWpvdXRlciB1biBlbnJlZ2lzdHJlbWVudCc7CiRsYW5nWydhZGRlZF9yZWNvcmQnXSA9ICdFbnJlZ2lzdHJlbWVudCBham91dCZlYWN1dGU7JzsKJGxhbmdbJ2FsZXJ0X25vX3JlY29yZHMnXSA9ICdJbCBuJiMwMzk7eSBhIHBhcyBldSBkJiMwMzk7ZW5yZWdpc3RyZW1lbnRzIGFqb3V0JmVhY3V0ZTtzIGRhbnMgbGUgbW9kdWxlISc7CiRsYW5nWydiYWNrJ10gPSAnUmV0b3VyJzsKJGxhbmdbJ2NyZWF0ZV9jb250YWN0J10gPSAnQWpvdXRlciB1biBjb250YWN0JzsKJGxhbmdbJ2NyZWF0ZV9uZXdfdXNlciddID0gJ0Nyw6llciB1biBub3V2ZWwgdXRpbGlzYXRldXInOwokbGFuZ1snY3JlYXRlX25ld19saXN0J10gPSAnQ3ImZWFjdXRlO2VyIHVuZSBub3V2ZWxsZSBsaXN0ZSc7CiRsYW5nWydjb21tdW5lJ10gPSAnY29tbXVuZSc7CiRsYW5nWydjYW5jZWwnXSA9ICdBbm51bGVyJzsKJGxhbmdbJ2NvbmZpcm1fZW1haWwnXSA9ICdDb25maXJtZXogdm90cmUgZW1haWwnOwokbGFuZ1snZGFzaF9yZWNvcmRfY291bnQnXSA9ICdDZSBtb2R1bGUgZyZlZ3JhdmU7cmUgJXMgZW5yZWdpc3RyZW1lbnRzJzsKJGxhbmdbJ2RvX25vdF9kaXNwbGF5J10gPSAnTmUgcGx1cyBhZmZpY2hlciBzdXIgbGUgc2l0ZSc7CiRsYW5nWydkaXNwbGF5X29uX2Zyb250ZW5kJ10gPSAnQWZmaWNoZXIgc3VyIGxlIHNpdGUnOwokbGFuZ1snZGVsZXRlJ10gPSAnU3VwcHJpbWVyJzsKJGxhbmdbJ2RlbGV0ZV9hbGxfZGl2J10gPSAnQ2VjaSBzdXBwcmltZXJhIGxhIGRpdmlzaW9uLCBsZXMgdG91cnMsIHBhcnRpZXMgZXQgY2xhc3NlbWVudHMgbGnDqXMnOwokbGFuZ1snZGVsZXRlX3NlbGVjdGVkJ10gPSAnU3VwcHJpbWVyIGxhIHPDqWxlY3Rpb24nOwokbGFuZ1snZGVsZXRlX3Jlc3VsdF9jb25maXJtJ10gPSAnVm91bGV6LXZvdXMgdnJhaW1lbnQgc3VwcHJpbWVyIGNlIHLDqXN1bHRhdCA/IFRvdXMgbGVzIHLDqXN1bHRhdHMgaW5kaXZpZHVlbHMgbGnDqXMgc2Vyb250IMOpZ2FsZW1lbnQgc3VwcHJpbcOpcyc7CiRsYW5nWydkZWxldGVfY29uZmlybSddID0gJ1ZvdWxleiB2b3VzIHN1cHByaW1lciBjZXQgZW5yZWdpc3RyZW1lbnQgPyc7CiRsYW5nWydkZWxldGVfdXNlcl9jb25maXJtJ10gPSAnVm91bGV6LXZvdXMgdnJhaW1lbnQgc3VwcHJpbWVyIGNldCB1dGlsaXNhdGV1ciA/JzsKJGxhbmdbJ2Rvd25sb2FkX3BvdWxlX3Jlc3VsdHMnXSA9ICdUw6lsw6ljaGFyZ2VyIGxlcyByw6lzdWx0YXRzIGRlIGxhIHBvdWxlJzsKJGxhbmdbJ2Rvd25sb2FkX2FsbF9wb3VsZV9yZXN1bHRzJ10gPSAnVMOpbMOpY2hhcmdlciBsZXMgcsOpc3VsdGF0cyBkZSB0b3V0ZXMgbGVzIHBvdWxlcyc7CiRsYW5nWydkdXBsaWNhdGUnXSA9ICdEdXBsaXF1ZXInOwokbGFuZ1snZWRpdCddID0gJ0VkaXRlciBsJiMwMzk7ZW5yZWdpc3RyZW1lbnQnOwokbGFuZ1snZW5hYmxlJ10gPSAnYWN0aXZlcic7CiRsYW5nWydlbWFpbCddID0gJ2VtYWlsJzsKJGxhbmdbJ2VxdWlwZSddID0gJ0VxdWlwZSc7CiRsYW5nWydlcnJvciddID0gJ0VycmV1ciAhJzsKJGxhbmdbJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcyddID0gJ1BhcmFtZXRyZXMgbWFucXVhbnRzJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRudW1iZXInXSA9ICdFcnJldXIgOiBwYXMgZGUgbnVtJmVhY3V0ZTtybyBmb3VybmkgISc7CiRsYW5nWydlcnJvcl9udW1iZXJleGlzdHMnXSA9ICdDZSBudW0mZWFjdXRlO3JvIGV4aXN0ZSBkJmVhY3V0ZTtqJmFncmF2ZTsnOwokbGFuZ1snZmlsdHJlcyddID0gJ0FwcGxpcXVlciBsZSBmaWx0cmUnOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnVGVubmlzIGRlIHRhYmxlJzsKJGxhbmdbJ2lkJ10gPSAnSWQnOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIGluc3RhbGwmZWFjdXRlOyBlbiB2ZXJzaW9uICVzLic7CiRsYW5nWydqb3VldXInXSA9ICdKb3VldXInOwokbGFuZ1snbG9uZ19pbXBvcnQnXSA9ICJDZXR0ZSBvcMOpcmF0aW9uIHBldXQgZHVyZXIgcGx1c2lldXJzIG1pbnV0ZXMgISI7CiRsYW5nWydsaW5rX3ZpZXcnXSA9ICdWb2lyIGwmIzAzOTtlbnJlZ2lzdHJlbWVudCc7CiRsYW5nWydsaXN0cyddID0gJ0xpc3Rlcyc7CiRsYW5nWydsaXN0c2ZvdW5kdGV4dCddID0gJ2xpc3RlKHMpIHRyb3V2JmVhY3V0ZTtlKHMpJzsKJGxhbmdbJ21lc3NhZ2VzJ10gPSAnbWVzc2FnZXMnOwokbGFuZ1snbWlzc2luZ19zaXRfbWVucyddID0gJ1NpdHVhdGlvbiBtZW5zdWVsbGUgbWFucXVhbnRlJzsKJGxhbmdbJ21pc3NpbmdfcGFyYW1ldGVycyddID0gJ1BhcmFtw6h0cmUocykgbWFucXVhbnQocyknOwokbGFuZ1snbmFtZSddID0gJ05vbSc7CiRsYW5nWyduZWVkcGVybWlzc2lvbiddID0gJ1ZvdXMgblwnYXZleiBwYXMgbGEgcGVybWlzc2lvbiBkXCdhY2PDqWRlcic7CiRsYW5nWydubyddID0gJ05vbic7CiRsYW5nWydub19mYW1pbHlfbmFtZSddID0gJ1ZvdXMgZGV2ZXogc2Fpc2lyIHZvdHJlIG5vbSBkZSBmYW1pbGxlJzsKJGxhbmdbJ25vX2FkcmVzc2UnXSA9ICdWb3VzIGRldmV6IHNhaXNpciB2b3RyZSBhZHJlc3NlJzsKJGxhbmdbJ25vdF9hbHJlYWR5X2Rvd25sb2FkZWQnXSA9ICdBIHTDqWzDqWNoYXJnZXIgISc7CiRsYW5nWydvcHRpb25zJ10gPSAnT3B0aW9ucyc7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdQciZlYWN1dGU7ZmVyZW5jZXMgZHUgbW9kdWxlIG1pc2UgJmFncmF2ZTsgam91ci4nOwokbGFuZ1sncG9pbnRzJ10gPSAnUG9pbnRzJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnQ29uc2VpbCA6IHNveWV6IHN1ciBkJiMwMzk7YXR0cmlidWVyIGxlcyBwZXJtaXNzaW9ucyAmcXVvdFBpbmcmcXVvdDsgcG91ciB1dGlsaXNlciBjZSBtb2R1bGUgISc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnRGlhbnRyZSAhIG1vZHVsZSBkw6lzaW5zdGFsbMOpJzsKJGxhbmdbJ3Byb21wdF9hZHZlcnNhaXJlcyddID0gJ0FkdmVyc2FpcmVzJzsKJGxhbmdbJ3Byb21wdF9lcXVpcGUnXSA9ICdFcXVpcGUnOwokbGFuZ1sncHJvbXB0X2pvdWV1ciddID0gJ05vbSBkdSBqb3VldXInOwokbGFuZ1sncHJvbXB0X3R5cGVDb21wZXRpdGlvbiddID0gJ1R5cGUgZGUgY29tcMOpdGl0aW9uJzsKJGxhbmdbJ3Byb21wdF9jb21wZXRpdGlvbkZyaWVuZGx5TmFtZSddID0gJ05vbSBkZSBsYSBjb21ww6l0aXRpb24nOwokbGFuZ1sncHJvbXB0X2RhdGVDb21wZXQnXSA9ICdEYXRlIGRlIGxhIGNvbXDDqXRpdGlvbic7CiRsYW5nWydwcm9tcHRfbm9tYnJlUmVuY29udHJlcyddID0gJ05iIGRlIHBhcnRpZXMgZGlzcHV0w6llcyc7CiRsYW5nWydyZWFsbHlfdW5pbnN0YWxsJ10gPSAnXDMxMnRlcy12b3VzIHNcMzczciBkZSB2b3Vsb2lyIGRcMzUxc2luc3RhbGxlciBjZSBzdXBlciBtb2R1bGUgPyc7CiRsYW5nWydyZXN1bHRzZm91bmQnXSA9ICdyw6lzdWx0YXQocyknOwokbGFuZ1sncmVzdWx0c2ZvdW5kdGV4dCddID0gJ3ImZWFjdXRlO3N1bHRhdChzKSB0cm91diZlYWN1dGU7KHMpJzsKJGxhbmdbJ3Jlc3VsdGZvdW5kdGV4dCddID0gJ3ImZWFjdXRlO3N1bHRhdChzKSB0cm91diZlYWN1dGU7KHMpJzsKJGxhbmdbJ3JldHJpZXZlYWxscGFydGllc3NwaWQnXSA9ICdSw6ljdXDDqXJlciB0b3V0ZXMgbGVzIHBhcnRpZXMgU3BpZCc7CiRsYW5nWydyZXRyaWV2ZV9wYXJ0aWVzJ10gPSAnUGFydGllcyBGRlRUJzsKJGxhbmdbJ3JldHJpZXZlX3BhcnRpZXNfc3BpZCddID0gJ1BhcnRpZXMgU1BJRCc7CiRsYW5nWydyZXRyaWV2ZV9zaXRfbWVucyddID0gJ1NpdCBtZW5zdWVsbGUnOwokbGFuZ1sncmV0cmlldmVfdXNlcnMnXSA9ICJSw6ljdXDDqXJlciBsZXMgam91ZXVycyI7CiRsYW5nWydyZXRyaWV2ZV91c2Vyc19jb25maXJtJ10gPSAnQ29uZmlybWV6IHZvdHJlIGRlbWFuZGUgISc7CiRsYW5nWydzYXZlZF9yZWNvcmQnXSA9ICdFbnJlZ2lzdHJlbWVudHMgT2snOwokbGFuZ1snc2NvcmVfZXF1aXBlJ10gPSAnU2NvcmUgRXF1aXBlJzsKJGxhbmdbJ3Njb3JlX2FkdiddID0gJ1Njb3JlIEFkdmVyc2FpcmVzJzsKJGxhbmdbJ3NoZWV0c2ZvdW5kdGV4dCddID0gJ3JlbmNvbnRyZShzKSB0cm91diZlYWN1dGU7ZShzKSc7CiRsYW5nWydzdWJtaXQnXSA9ICdTYXV2ZWdhcmRlcic7CiRsYW5nWydzdWJtaXRhc25ldyddID0gJ0Fqb3V0ZXIgY29tbWUgbm91dmVhdSc7CiRsYW5nWyd0aXRsZV9hbGxvd19hZGQnXSA9ICdMZXMgdXRpbGlzYXRldXJzIHBldXZlbnQgYWpvdXRlciBkZXMgZW5yZWdpc3RyZW1lbnRzID8nOwokbGFuZ1sndGl0bGVfYWxsb3dfYWRkX2hlbHAnXSA9ICdDbGlxdWV6IGljaSBwb3VyIHBlcm1ldHRyZSBhdXggdXRpbGlzYXRldXJzIGQmIzAzOTtham91dGVyIGRlcyBlbnJlZ2lzdHJlbWVudHMuJzsKJGxhbmdbJ3RpdGxlX2NsdWJfbnVtYmVyJ10gPSAiTnVtw6lybyBkZSB2b3RyZSBjbHViIjsKJGxhbmdbJ3RpdGxlX21vZF9wcmVmcyddID0gJ1ByJmVhY3V0ZTtmZXJlbmNlcyBkdSBtb2R1bGUnOwokbGFuZ1sndGl0bGVfZ2VuZXJhbCddID0gJ0luZm9ybWF0aW9uIGcmZWFjdXRlO24mZWFjdXRlO3JhbGVzJzsKJGxhbmdbJ3RpdGxlX2Rlc2NyaXB0aW9uJ10gPSAnRGVzY3JpcHRpb24gJzsKJGxhbmdbJ3RpdGxlX2V4cGxhbmF0aW9uJ10gPSAnTG9uZ3VlIERlc2NyaXB0aW9uJzsKJGxhbmdbJ3RpdGxlX21vZF9hZG1pbiddID0gJ1Bhbm5lYXUgZCYjMDM5O2FkbWluaXN0cmF0aW9uIGR1IG1vZHVsZSc7CiRsYW5nWyd0aXRsZV9udW1fcmVjb3JkcyddID0gJyVzIGVucmVnaXN0cmVtZW50cyB0cm91diZlYWN1dGU7cy4nOwokbGFuZ1sndG91ciddID0gJ1RvdXInOwokbGFuZ1sndW5hYmxlJ10gPSAnRMOpc2FjdGl2ZXInOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdMZSBtb2R1bGUgYSAmZWFjdXRlO3QmZWFjdXRlOyBkJmVhY3V0ZTtzaW5zdGFsbCZlYWN1dGU7IGF2ZWMgc3VjYyZlZ3JhdmU7cy4nOwokbGFuZ1sndXBkYXRlZF9yZWNvcmQnXSA9ICdFbnJlZ2lzdHJlbWVudCBtaXMgJmFncmF2ZTsgam91ci4nOwokbGFuZ1sndXBncmFkZWQnXSA9ICdsZSBtb2R1bGUgYSAmZWFjdXRlO3QmZWFjdXRlOyBtaXMgJmFncmF2ZTsgam91ciAmYWdyYXZlOyBsYSAlcy4nOwokbGFuZ1sndXBsb2FkX3Jlc3VsdCddID0gJ1TDqWzDqWNoYXJnZXIgbGUgcsOpc3VsdGF0JzsKJGxhbmdbJ3VzZXJzJ10gPSAndXRpbGlzYXRldXJzJzsKJGxhbmdbJ3VzZXJzZm91bmR0ZXh0J10gPSAndXRpbGlzYXRldXIocykgdHJvdXYmZWFjdXRlOyhzKSc7CiRsYW5nWyd1c2VyX2RlbGV0ZWQnXSA9ICdVdGlsaXNhdGV1ciBzdXBwcmltw6knOwokbGFuZ1sndXNlcl91cGRhdGVkJ10gPSAnVXRpbGlzYXRldXIgbW9kaWZpJmVhY3V0ZTsnOwokbGFuZ1sndmljX2RlZiddID0gJ1ZpY3RvaXJlIG91IGTDqWZhaXRlJzsKJGxhbmdbJ3ZpZXdfY29udGFjdHMnXSA9ICdWb2lyIGxlcyBjb250YWN0cyc7CiRsYW5nWyd2aWV3X3Jlc3VsdHMnXSA9ICdWb2lyIGxlcyByw6lzdWxhdHMnOwokbGFuZ1sneWVzJ10gPSAnT3VpJzsKJGxhbmdbJ2hlbHBfdG91ciddID0gJ1V0aWxleiBsZSBOwrAgZGUgam91cm7DqWUgcG91ciBvYnRlbmlyIHNlcyByw6lzdWx0YXRzIHVuaXF1ZW1lbnQnOwokbGFuZ1snaGVscF9saWJlbGxlX2VxdWlwZSddID0gJ0V4IDogUlAgRk9VRVNOQU5UIDEnOwokbGFuZ1snaGVscF9saWJkaXZpc2lvbiddID0gJ0V4IDpOYXRpb25hbGUgMSBNZXNzaWV1cnMgUG91bGUgQyc7CiRsYW5nWydoZWxwX2ZyaWVuZGx5bmFtZSddID0gJ0NlIG5vbSBzZXJ2aXJhIMOgIGluZGVudGlmaWVyIHBsdXMgZmFjaWxlbWVudCB2b3Mgw6lxdWlwZXMgZXggOiBOYXRpb25hbGUgMSBNZXNzaWV1cnMgUG91bGUgQyBkZXZpZW50IE4xIG91IE4xKEMpJzsKJGxhbmdbJ2hlbHBfaWRkaXYnXSA9ICdDb25zdWx0ZXogbFwnYWlkZSBzdXIgbGUgbW9kdWxlJzsKJGxhbmdbJ2hlbHBfaWRwb3VsZSddID0gJ0NvbnN1bHRleiBsXCdhaWRlIHN1ciBsZSBtb2R1bGUnOwovLyRsYW5nWycnXSA9ICcnOwovLyRsYW5nWycnXSA9ICcnOwovLyRsYW5nWycnXSA9ICcnOwokbGFuZ1snaGVscF90eXBlX2NvbXBldCddID0gJ0ZpbHRyZXogbGVzIHLDqXN1bHRhdHMgZW4gcHLDqWNpc2FudCBsZSB0eXBlIGRlIGNvbXDDqXRpdGlvbic7CiRsYW5nWydoZWxwX2RhdGVfZGVidXQnXSA9ICdVdGlsaXNleiBsYSBkYXRlIGRlIGTDqWJ1dCBkZSBjb21ww6l0aXRpb24gYXUgZm9ybWF0IChhYWFhLW1tLWpqKSc7CiRsYW5nWydoZWxwX2RhdGVfZmluJ10gPSAnVXRpbGlzZXogbGEgZGF0ZSBkZSBmaW4gYXZlYyBsYSBkYXRlIGRlIGTDqWJ1dCBhdSBtw6ptZSBmb3JtYXQnOwokbGFuZ1snaGVscF9saW1pdCddID0gJ1BvdXIgbGltaXRlciBsZSBuYiDDoCB4IHLDqXN1bHRhdHMnOwokbGFuZ1snaGVscF9jb2RlX2NvbXBldCddID0gJ0NlIGNvZGUgc2UgdHJvdXZlIGRhbnMgbGVzIHLDqXN1bHRhdHMgRkZUVCc7CiRsYW5nWydoZWxwX2NvZWZmaWNpZW50J10gPSAnVXRpbGlzZXogbGUgcG9pbnQgKC4pIGV0IG5vbiBsYSB2aXJndWxlIGV4IDEuMjUgZXQgbm9uIHBhcyAxLDI1JzsKJGxhbmdbJ2hlbHBfZGVzY3JpcHRpb24nXSA9ICdQYXJhbSZlZ3JhdmU7dHJlcyBpbnRlcm5lcyB1dGlsaXMmZWFjdXRlO3MgbG9ycyBkZSBsYSBjciZlYWN1dGU7YXRpb24gZCYjMDM5O3VuIG5vdXZlbCBlbnJlZ2lzdHJlbWVudCc7CiRsYW5nWydoZWxwX2V4cGxhbmF0aW9uJ10gPSAnUGFyYW0mZWdyYXZlO3RyZSBpbnRlcm5lIHV0aWxpcyZlYWN1dGU7IHBvdXIgcGFzc2VyIGRlcyBpbmZvcm1hdGlvbnMgZXhwbGljYXRpdmVzIGxvcnNxdWUgbCYjMDM5O29uIGNyJmVhY3V0ZTsmZWFjdXRlOyBvdSBsJiMwMzk7b24gbWV0ICZhZ3JhdmU7IGpvdXIgdW4gZW5yZWdpc3RyZW1lbnQnOwokbGFuZ1snaGVscF9tb2R1bGVfbWVzc2FnZSddID0gJ1BhcmFtJmVncmF2ZTt0cmUgaW50ZXJuZSB1dGlsaXMmZWFjdXRlOyBwb3VyIGxhIHRyYW5zbWlzc2lvbiBkZXMgbWVzc2FnZXMgJmFncmF2ZTsgbCYjMDM5O3V0aWxpc2F0ZXVyJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25Ta2VsZXRvblByZWZlcmVuY2VDaGFuZ2UnXSA9ICdVbiAmZWFjdXRlO3YmZWFjdXRlO25lbWVudCBnJmVhY3V0ZTtuJmVhY3V0ZTtyJmVhY3V0ZTsgbG9yc3F1ZSBsZXMgcHImZWFjdXRlO2YmZWFjdXRlO3JlbmNlcyBkdSBtb2R1bGUgIHNvbnQgY2hhbmcmZWFjdXRlO2VzJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25Ta2VsZXRvblByZWZlcmVuY2VDaGFuZ2UnXSA9ICc8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiB0aGUgcHJlZmVyZW5jZXMgdG8gdGhlIFNrZWxldG9uIE1vZHVsZSBnZXQgY2hhbmdlZDwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT48ZW0+YWxsb3dfYWRkPC9lbT4gLSBUaGUgbmV3IHNldHRpbmcgb2YgdGhlICZxdW90O0FsbG93IEFkZCZxdW90OyBwcmVmZXJlbmNlOyBib29sZWFuPC9saT4KPC91bD4gCic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0VudHJleiB0b3VzIHZvcyByw6lzdWx0YXRzIGRlIHBpbmcgcG91ciBhbmFseXNlIHJhcGlkZS4nOwokbGFuZ1snd2VsY29tZV90ZXh0J10gPSAnPHA+QmllbnZlbnVlIGRhbnMgbGUgbW9kdWxlIGRlIGdlc3Rpb24gZGVzIHLDqXN1bHRhdHMgZGUgdm90cmUgY2x1YiBkZSBwaW5nPC9wPic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+CjxsaT5CZXRhIDMKPHVsPgo8bGk+QWpvdXRzIGRlIGxhIHByZW1pw6hyZSB2ZXJzaW9uIGR1IGZyb250LW9mZmljZTwvbGk+CjxsaT5Bam91dHMgZGUgcGFyYW3DqHRyZXMgcG91ciByZXF1ZXRlciBwbHVzIGZhY2lsZW1lbnQgc3VyIGxlIGZyb250LW9mZmljZTwvbGk+CjxsaT5Qb3NzaWJpbGl0w6kgZFwnYWpvdXRlciBtYW51ZWxsZW1lbnQgZGVzIHNpdHVhdGlvbnMgbWVuc3VlbGxlcyBhbnTDqXJpZXVyZXM8L2xpPgo8bGk+UsOpY3Vww6lyYXRpb24gZHUgc3BpZCBkZXB1aXMgbGVzIHLDqXN1bHRhdHMgZGVzIMOpcXVpcGVzPC9saT4KPGxpPkNyw6lhdGlvbiBkXCd1bmUgc2l0dWF0aW9uIG1lbnN1ZWxsZSAicHJvdmlzb2lyZSIgcmVjYWxjdWzDqWUgw6AgY2hhcXVlIG5vdXZlYXUgcsOpc3VsdGF0PC9saT4KPGxpPlBvc3NpYmlsaXTDqSBkZSB2w6lyaWZpZXIgbGUgc3BpZCBhdmVjIGxlcyBwYXJ0aWVzIEZGVFQgcXVhbmQgZGlzcG9uaWJsZXM8L2xpPgo8bGk+QWpvdXQsIHN1cHByZXNzaW9uLCBtb2RpZmljYXRpb25zIGRlIHR5cGUgZGUgY29tcMOpdGl0aW9uczwvbGk+CjxsaT5Sw6ljdXDDqXJhdGlvbiAiZW4gbWFzc2UiIGR1IHNwaWQsIGRlcyBwYXJ0aWVzIEZGVFQgZXQgZGVzIHNpdHVhdGlvbnMgbWVuc3VlbGxlczwvbGk+CjxsaT5Sw6ljdXDDqXJhdGlvbiBkZSB0b3VzIGxlcyBtYXRjaHMgcG91ciByZW1wbGlyIGxlIGNhbGVuZHJpZXI8L2xpPgo8bGk+Q29ycmVjdGlvbnMgZGUgYm9ndWVzIGV0IGFtw6lsaW9yYXRpb25zIGRpdmVyc2VzPC9saT4KPC91bD4KPGxpPlZlcnNpb24gMC4yPC9saT4KPHVsPjxsaT5JbXBsw6ltZW50YXRpb24gZGVzIHTDomNoZXMgcHNldWRvLWNyb24gKHNjcmlwdHMgc2VtaS1hdXRvbWF0aXF1ZXMpPC9saT4KPC91bD4KPGxpPlZlcnNpb24gMC4xYmV0YTIKPHVsPjxsaT5NaXNlIMOgIGpvdXIgZXNzZW50aWVsbGVtZW50IGNvcnJlY3RpdmU8L2xpPgo8L3VsPjwvbGk+CjxsaT5WZXJzaW9uIDAuMWJldGExIEFnaQo8dWw+CjxsaT5QcmVtacOocmUgcmVsZWFzZSBkdSBtb2R1bGUuPC9saT4KPC91bD4nOwokbGFuZ1snaGVscCddID0gJzxoMz5RdWUgZmFpdCBjZSBtb2R1bGUgPzwvaDM+CjxwPkNlIG1vZHVsZSB2b3VzIHBlcm1ldCBkZSByw6ljdXDDqXJlciBsZXMgcsOpc3VsdGF0cyBkZSB0b3V0ZXMgbGVzIGNvbXDDqXRpdGlvbnMgZGUgdm90cmUgY2x1YiBldCBkZSB2b3Mgam91ZXVycyBldCBwcm9jw6hkZSDDoCBkZXMgY2FsY3VscyBkZXMgcGVyZm9ybWFuY2VzIChWb2lyIGZldWlsbGUgZGUgcm91dGUgcGx1cyBiYXMpLjwvcD4KPGgzPkNvbW1lbnQgbFwndXRpbGlzZXIgPzwvaDM+CjxoMj5QcmVtacOocmUgdXRpbGlzYXRpb248L2gyPgo8b2w+PGxpPkRhbnMgbFwnb25nbGV0ICJDb21wdGUiLCByZW5zZWlnbmV6IGxlcyBpZGVudGlmaWFudHMgZm91cm5pcyBwYXIgbGEgRkZUVC4odm9pciBpY2kgPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly93d3cuZmZ0dC5jb20vbWVkaWFzL2NvbnRlbnVzL0ZGVFRfU3BlY2lmaWNhdGlvbnNfdGVjaG5pcXVlc19kZV9BUElfU21hcnRwaW5nXzIuMC5wZGYiPnBhZ2UgNTwvYT4pPC9saT48bGk+UmVuc2VpZ25leiBsXCdvbmdsZXQgIkNvbmZpZ3VyYXRpb24iIGF2ZWMgbGUgTsKwIGRlIHZvdHJlIGNsdWIsIGxhIHNhaXNvbiwgbGEgcGhhc2UgZW4gY291cnMgYWluc2kgcXVlIGxlIG5vbSBnw6luw6lyaXF1ZSBkZSB2b3Mgw6lxdWlwZXMgKGxlIHBsdXMgc291dmVudCBsZSBub20gZGUgdm90cmUgdmlsbGUpPC9saT4KPGxpPkRhbnMgbFwnb25nbGV0ICJDb21ww6l0aXRpb25zIiwgcsOpY3Vww6lyZXogbGVzIGNvbXDDqXRpdGlvbnMgZGUgem9uZSwgbGlndWUgZXQgY29taXTDqSAobGVzIG5hdGlvbmFsZXMgc29udCBpbnN0YWxsw6llcyBwYXIgZMOpZmF1dCk8L2xpPjxsaT5EYW5zIGxcJ29uZ2xldCAiRXF1aXBlcyIgLCBjbGlxdWV6IHN1ciBsZXMgbGllbnMgIlLDqWN1cMOpcmF0aW9uIGRlcyDDqXF1aXBlcyIuPGJyIC8+ClVuIGxpZW4gcG91ciBsZXMgw6lxdWlwZXMgZHUgY2hhbXBpb25uYXQgZGUgRnJhbmNlIHBhciDDqXF1aXBlcyBtYXNjdWxpbiwgdW4gYXV0cmUgcG91ciBsZXMgZsOpbWluaW5lcyBldCBsZSBkZXJuaWVyIHBvdXIgdG91dGVzIGxlcyBhdXRyZXMgw6lxdWlwZXMsIGluZGlxdWV6IGxlIHR5cGUgZGUgY29tcMOpdGl0aW9ucyBhdXhxdWVsbGVzIGVsbGVzIHBhcnRpY2lwZW50LjwvbGk+CjxsaT5EYW5zIGxcJ29uZ2xldCAiSm91ZXVycyIsIHLDqWN1cMOpcmV6IGxlcyBqb3VldXJzIGdyw6JjZSBhdSBsaWVuIGR1IG3Dqm1lIG5vbS48L2xpPgo8bGk+RGFucyBsXCdvbmdsZXQgIlNpdHVhdGlvbiBtZW5zdWVsbGUiIHLDqWN1cMOpcmV6IGxhIHNpdHVhdGlvbiBtZW5zdWVsbGUgZHUgbW9pcyBlbiBjb3VycyAodm9pciBkw6l0YWlscyBjaS1kZXNzb3VzKS48L2xpPjwvb2w+CjxoMz5TcGlkPC9oMz4KPHA+UsOpY3Vww6lyZXogbGVzIHLDqXN1bHRhdHMgZHUgc3BpZCBkZSBkaWZmw6lyZW50ZXMgbWFuacOocmVzLiBMYSByw6ljdXDDqXJhdGlvbiBkZSB0b3VzIGxlcyByw6lzdWx0YXRzIGVuIHVuZSBzZXVsZSBmb2lzIHBldXQgc1wnYXbDqXJlciB0csOocyBsb25ndWUgKHBsdXNpZXVycyBtaW51dGVzKS48YnIgLz4KQ29uc2VpbCA6IE5lIHTDqWzDqWNoYXJnZXogcGFzIGxlcyByw6lzdWx0YXRzIGRcJ3VuIGpvdWV1ciBzaSBzYSBzaXR1YXRpb24gbWVuc3VlbGxlIGR1IG1vaXMgY29uY2VybsOpIG5cJ2VzdCBwYXMgcmVuc2VpZ27DqWUuPC9wPgo8aDM+U2l0dWF0aW9uIG1lbnN1ZWxsZTwvaDM+CjxwPkxvcnMgZHUgcHJlbWllciBpbXBvcnQgZGVzIGpvdWV1cnMsIGxhIHNpdHVhdGlvbiBtZW5zdWVsbGUgcGFyIGTDqWZhdXQgZXN0IEphbnZpZXIgMjAwMC4gTG9yc3F1ZSBsXCdhY2PDqHMgZXN0IGxpYnJlLCB2b3VzIHBvdXZleiByw6ljdXDDqXJlciBsYSBzaXR1YXRpb24gbWVuc3VlbGxlIGVuIGNvdXJzIGRlIHRvdXMgbGVzIGpvdWV1cnMgZGUgdm90cmUgY2x1YjwvcD4KPGgyPkltcGzDqW1lbnRhdGlvbiBzdXIgbGVzIHBhZ2VzIGRlIHZvdHJlIHNpdGU8L2gyPgo8cD5VdGlsaXNleiBsYSBiYWxpc2Ugc3VpdmFudGUgOiB7UGluZ30uIENlY2kgYWZmaWNoZXJhIHBhciBkw6lmYXV0IGxlcyByw6lzdWx0YXRzIGRlcyDDqXF1aXBlcy48L3A+CjxoND5QYXJhbcOodHJlcyBkaXNwb25pYmxlcyA6IDwvaDQ+Cjx1bD4KPGxpPmFjdGlvbiAtIEluZGlxdWUgbFwnYWN0aW9uIGEgYWZmaWNoZXIKPHVsPgo8bGk+cGFyLWVxdWlwZXMgLSBJbmRpcXVlIHRvdXRlcyBsZXMgY29tcMOpdGl0aW9ucyBwYXIgw6lxdWlwZXMgZXggOntQaW5nIGFjdGlvbj1cJ3Bhci1lcXVpcGVzXCd9PC9saT4KPGxpPmluZGl2aWR1ZWxsZXMgLSBsZXMgY29tcMOpdGl0aW9ucyBpbmRpdmlkdWVsbGVzPC9saT4KPGxpPnNpdF9tZW5zIC0gcG91ciBsYSBzaXR1YXRpb24gbWVuc3VlbGxlIG9mZmljaWVsbGU8L2xpPgo8bGk+c2l0X21lbnNfcHJvdmlzb2lyZSAtIHBvdXIgdW5lIHNpdHVhdGlvbiBtZW5zdWVsbGUgcsOpw6l2YWx1w6llIGFwcsOocyBjaGFxdWUgY29tcMOpdGl0aW9uIHLDqWN1cMOpcsOpZS48L2xpPgo8L3VsPgo8L2xpPgo8bGk+ImlkZXByZXV2ZSIgLSBsZSB0eXBlIGRlIGNvbXDDqXRpdGlvbiDDoCBhZmZpY2hlciBleCA6IHtQaW5nIGFjdGlvbj1cJ3Bhci1lcXVpcGVzXCcgaWRlcHJldXZlPVwnMTA3MlwnfSAoZGlzcG9uaWJsZXMgZHMgbFwnb25nbGV0ICJDb21ww6l0aXRpb25zIik8L2xpPgo8L3VsPgo8aDM+Q1NTIGV0IEphdmFzY3JpcHQ8L2gzPgo8cD5VbmUgY3NzIGVzdCBkaXNwb25pYmxlIGRhbnMgbGUgcsOpcGVydG9pcmUgZHUgbcOqbWUgbm9tIGRhbnMgbGUgbW9kdWxlLiBFbGxlIGFtw6lsaW9yZSBsZSByZW5kdSB2aXN1ZWwuIFBvdXIgbFwndXRpbGlzZXIsIHZvdXMgZGV2ZXogbFwnaW5jbHVyZSBkYW5zIGxlIGRlc2lnbiBxdWUgdm91cyB1dGlsaXNleiBwYXIgYWlsbGV1cnMuPGJyIC8+UG91ciBsZSBqYXZhc2NyaXB0LCBpZGVtIHVuIHLDqXBlcnRvaXJlIGTDqWRpw6kgZXQgdW4gc2NyaXB0IHF1aSBwZXJtZXQgZGUgbW9kaWZpZXIgbFwnb3JkcmUgZGVzIHRhYmxlYXV4IGVuIGNsaXF1YW50IHN1ciBsZXMgZW50w6p0ZXMgZGUgY29sb25uZXMuIFBvdXIgY2UgZmFpcmUsIGVuIGJhcyBkdSBnYWJhcml0IHV0aWxpc8OpIChleCA6IHNpbXBsZXgpLCB2b3VzIGF2ZXogY2VjaSBwYXIgZMOpZmF1dCA6IDxiciAvPiB7Y21zX2pxdWVyeSBleGNsdWRlPVwndWksbmVzdGVkU29ydGFibGUsanNvbixtaWdyYXRlXCcgYXBwZW5kPVwndXBsb2Fkcy9zaW1wbGV4L2pzL2pxdWVyeS5zZXF1ZW5jZS1taW4uanMsdXBsb2Fkcy9zaW1wbGV4L2pzL2Z1bmN0aW9ucy5taW4uanNcJ308YnIgLz4KQXUgZmluYWwsIHZvdXMgZGV2cmV6IGF2b2lyIGNlY2kgOiA8YnIgLz57Y21zX2pxdWVyeSBleGNsdWRlPVwndWksbmVzdGVkU29ydGFibGUsanNvbixtaWdyYXRlXCcgYXBwZW5kPVwndXBsb2Fkcy9zaW1wbGV4L2pzL2pxdWVyeS5zZXF1ZW5jZS1taW4uanMsdXBsb2Fkcy9zaW1wbGV4L2pzL2Z1bmN0aW9ucy5taW4uanMsbW9kdWxlcy9waW5nL2pzL2pxdWVyeS50YWJsZXNvcnRlci5taW4uanNcJ30gPC9wPgo8aDM+RmV1aWxsZSBkZSByb3V0ZTwvaDM+Cjx1bD4KPGxpPlVuIGZyb250LW9mZmljZSBhdmVjIGRlcyBncmFwaGlxdWVzIGR5bmFtaXF1ZXMuPC9saT4KPGxpPkRlcyB0ZW1wbGF0ZXMgcG91ciB2b3VzIGFpZGVyIMOgIGLDonRpciB2b3MgcHJvcHJlcyBnYWJhcml0cyBkZXB1aXMgY2UgbW9kdWxlPC9saT4KPC91bD4KPGgzPlNjcmlwdHMgYXV0b21hdGlxdWVzIChwc2V1ZG8tY3Jvbik8L2gzPgo8cD5MZXMgdMOiY2hlcyBwc2V1ZG8tY3JvbiBzXCfDqXjDqWN1dGVudCBhdXRvbWF0aXF1ZW1lbnQgZW4gZm9uY3Rpb24gZGVzIHZpc2l0ZXMgc3VyIHZvdHJlIHNpdGUoaW50ZXJuYXV0ZXMgZXQgYWRtaW5zIGR1IHNpdGUpPGJyIC8+CkRhbnMgbGEgdmVyc2lvbiAwLjIsIGxlcyBzY3JpcHRzIGF1dG9tYXRpcXVlcyBjb25jZXJuZW50IGxlcyByw6lzdWx0YXRzIGR1IFNwaWQgZXQgZGUgbGEgRkZUVC4gSWxzIHNcJ8OpeMOpY3V0ZW50IHRvdXMgbGVzIGpvdXJzIChzaSB2aXNpdGVzIGR1IHNpdGUpLiBJbHMgcsOpY3Vww6hyZW50IGxlcyByw6lzdWx0YXRzIGRlIHggam91ZXVycyBkb250IGxhIG1pc2Ugw6Agam91ciBkYXRlIGRlIHggam91cnMuIElsIGVzdCBkb25jIHBvc3NpYmxlIGRlIGNvbmZpZ3VyZXIgY2VzIHguPC9wPjxwPkF0dGVudGlvbiwgZGVzIHRlbXBzIGRlIGxhdGVuY2UgcGV1dmVudCDDqnRyZSBvYnNlcnbDqXMgZMO7cyDDoCBsXCfDqXjDqWN1dGlvbiBkZXMgc2NyaXB0cy48L3A+CjxoMz5TdXBwb3J0PC9oMz4KPHVsPgo8bGk+UG91ciBvYnRlbmlyIGxhIGRlcm5pw6hyZSB2ZXJzaW9uIGVuIGNvdXJzIChhdmFudCByZWxlYXNlIG9mZmljaWVsbGUpCjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaW9oYW4vcGluZyI+VmVyc2lvbiBnaXRodWI8L2E+LjwvbGk+CjxsaT5MXCdhdXRldXIgcGV1dCBhdXNzaSDDqnRyZSBjb250YWN0w6kgdmlhIHNreXBlIHNvdXMgbGUgcHNldWRvIGFnaXdlYmNvbnNlaWwuPC9saT4KPGxpPkVuZmluLCB2b3VzIHBvdXZleiBhdXNzaSBtXCdlbnZveWVyIHVuIG1haWwuPC9saT4gIAo8L3VsPgo8cD5FbiB0YW50IHF1ZSBsaWNlbmNlIEdQTCwgY2UgbW9kdWxlIGVzdCBsaXZyw6kgdGVsIHF1ZWwuIE1lcmNpIGRlIGxpcmUgbGUgdGV4dGUgY29tcGxldCBkZSBsYSBsaWNlbnNlIHBvdXIgdW5lIGluZm9ybWF0aW9uIGNvbXBsw6p0ZS48L3A+CjxoMz5SZW1lcmNpZW1lbnRzPC9oMz4KPHA+TWVyY2kgw6AgbWEgZmVtbWUgZXQgw6AgbWVzIGVuZmFudHMgcG91ciBsZXVyIHNvdXRpZW4gdG91am91cnMgaW5kw6lmZWN0aWJsZS48L3A+CjxwPlVuIHJlbWVyY2llbWVudCB0b3V0IHBhcnRpY3VsaWVyIMOgIG1vbiBhbWkgRXJpYyBQb25jaGFudChlcmljZnJlZWxhbmNlKSBwb3VyIHNvbiBzb3V0aWVuLCBzYSBiaWVudmVpbGxhbmNlLCBzYSBwYXRpZW5jZSwgc2VzIGNvbnNlaWxzIHRvdWpvdXJzIGF2aXPDqXMgZXQgc29uIGV4cGVydGlzZSBwb3VyIG1cJ2FpZGVyIMOgIGNoYXF1ZSBmb2lzIMOgIG1lIHNvcnRpciBkZSBsXCdvcm5pw6hyZS4uPC9wPgo8aDM+Q29weXJpZ2h0IGV0IExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmFtcDtjb3B5OyAyMDE0LCBDbGF1ZGUgU2lvaGFuIDxhIGhyZWY9Im1haWx0bzpjbGF1ZGVAYWdpLXdlYmNvbnNlaWwuZnIiPmNsYXVkZUBhZ2ktd2ViY29uc2VpbC5mcjwvYT4uIFRvdXMgZHJvaXRzIHLDqXNlcnbDqXMuPC9wPgo8cD5DZSBtb2R1bGUgZXN0IHNvdXMgbGljZW5jZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFZvdXMgZGV2ZXogYWNjZXB0ZXIgbGEgbGljZW5jZSBhdmFudCBkXCd1dGlsaXNlciBjZSBtb2R1bGUuPC9wPgo8cD5DZSBtb2R1bGUgYSDDqXTDqSBkaXN0cmlidcOpIGRhbnMgbFwnZXNwb2lyIGRcJ8OqdHJlIHV0aWxlLCBtYWlzIHNhbnMKQVVDVU5FIEdBUkFOVElFLiBJbCB2b3VzIGFwcGFydGllbnQgZGUgbGUgdGVzdGVyIGF2YW50IHRvdXRlIG1pc2UgZW4KcHJvZHVjdGlvbiwgcXVlIGNlIHNvaXQgZGFucyBsZSBjYWRyZSBkXCd1bmUgbm91dmVsbGUgaW5zdGFsbGF0aW9uIG91CmRcJ3VuZSBtaXNlIMOgIGpvdXIgZHUgbW9kdWxlLiBMXCdhdXRldXIgZHUgbW9kdWxlIG5lIHBvdXJyYWl0IMOqdHJlIHRlbnUKcG91ciByZXNwb25zYWJsZSBkZSB0b3V0IGR5c2ZvbmN0aW9ubmVtZW50IGR1IHNpdGUgcHJvdmVuYW50IGRlIGNlCm1vZHVsZS4gUG91ciBwbHVzIGRcJ2luZm9ybWF0aW9ucywgPGEKaHJlZj1cImh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTFwiIHRhcmdldD1cIl9ibGFua1wiPmNvbnN1bHRlegpsYSBsaWNlbmNlIEdOVSBHUEw8L2E+LjwvcD4KJzsKCj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAAAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAYAAAAAAAAAABAAAAgAAAAAEAAAEAAAAAAQAAAgAAAAABAAAEAAAAAAIAAAgAAAAYAAAAAAAAAAABAAAgAAAAAAEAAEAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/lib/class.PingRecupFfttTask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKY2xhc3MgUGluZ1JlY3VwRmZ0dFRhc2sgaW1wbGVtZW50cyBDbXNSZWd1bGFyVGFzawp7CgogICBwdWJsaWMgZnVuY3Rpb24gZ2V0X25hbWUoKQogICB7CiAgICAgIHJldHVybiBnZXRfY2xhc3MoKTsKICAgfQoKICAgcHVibGljIGZ1bmN0aW9uIGdldF9kZXNjcmlwdGlvbigpCiAgIHsKICAgICAgcmV0dXJuICdSw6ljdXDDqXJhdGlvbiBkZXMgcGFydGllcyBGRlRULic7CiAgIH0KCiAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0KCR0aW1lID0gJycpCiAgIHsKCiAgICAgIC8vIEluc3RhbnRpYXRpb24gZHUgbW9kdWxlCiAgICAgICRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7CgogICAgICAvLyBSw6ljdXDDqXJhdGlvbiBkZSBsYSBkZXJuacOocmUgZGF0ZSBkJ2V4w6ljdXRpb24gZGUgbGEgdMOiY2hlCiAgICAgIGlmICghJHRpbWUpCiAgICAgIHsKICAgICAgICAgJHRpbWUgPSB0aW1lKCk7CiAgICAgIH0KCiAgICAgICRsYXN0X2V4ZWN1dGUgPSAkcGluZy0+R2V0UHJlZmVyZW5jZSgnTGFzdFJlY3VwRmZ0dCcpOwogICAgICAKICAgICAgLy8gRMOpZmluaXRpb24gZGUgbGEgcMOpcmlvZGljaXTDqSBkZSBsYSB0w6JjaGUgKDI0aCBpY2kpCiAgICAgIGlmICggKCR0aW1lIC0gMzAqNjAgKSA+PSAkbGFzdF9leGVjdXRlICkvL3RvdXRlcyBsZXMgZGl4IG1pbnV0ZXMKICAgICAgewogICAgICAgICByZXR1cm4gVFJVRTsKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAKICAgfQoKICAgcHVibGljIGZ1bmN0aW9uIGV4ZWN1dGUoJHRpbWUgPSAnJykKICAgewoKICAgICAgCWlmICghJHRpbWUpCiAgICAgIAl7CiAgICAgICAgIAkkdGltZSA9IHRpbWUoKTsKICAgICAgCX0KCiAgICAgIAkkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwogICAgICAKICAgICAgCS8vIENlIHF1J2lsIHkgYSDDoCBleMOpY3V0ZXIgaWNpCgkvL2VjaG8gImNvdWNvdSI7CgkvL29uIHLDqWN1cMOocmUgbGEgc2Fpc29uIGVuIGNvdXJzCgkkZGIgPSAkcGluZy0+R2V0RGIoKTsKCSRzYWlzb24gPSAkcGluZy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CgkkcXVlcnkgPSAiU0VMRUNUIGoubGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIEFTIHJwLCIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogV0hFUkUgai5saWNlbmNlID0gcnAubGljZW5jZSBBTkQgai5hY3RpZj0nMScgQU5EIHJwLm1hal9mZnR0IDwgTk9XKCktSU5URVJWQUwgMyBEQVkgQU5EIHJwLnNhaXNvbiA9ID8gT1JERVIgQlkgcnAubWFqX2ZmdHQgREVTQyBMSU1JVCAyNSAiOwogICAgICAJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHNhaXNvbikpOwoJLy9vbiBhIGRvbmMgbGVzIG4gbGljZW5jZXMgcG91ciBmYWlyZSBsYSBkZXV4acOobWUgcmVxdWV0ZQoJLy9vbiBjb21tZW5jZSDDoCBib3VjbGVyCglpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApICAvL2xhIHJlcXVldGUgZXN0IG9rIGV0IGlsIHkgYSBkZXMgcsOpc3VsdGF0cwoJewoJCS8vb24gaW5zdGFuY2llIGxhIGNsYXNzZSBTZXJ2aWNlCgkJCgkJCgkJJHNlcnZpY2UgPSBuZXcgcmV0cmlldmVfb3BzKCk7CgoJCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkkbGljZW5jZSA9ICRyb3dbJ2xpY2VuY2UnXTsKCQkJJHJldHJpZXZlID0gJHNlcnZpY2UtPnJldHJpZXZlX3BhcnRpZXNfZmZ0dCgkbGljZW5jZSk7CgkJCXNsZWVwKDEpOwoJCX0KCQkKCX0KCXJldHVybiB0cnVlOyAvLyBPdSBmYWxzZSBzaSDDp2EgcGxhbnRlCgkKCQoJCgogICAgICAKCiAgIH0KCiAgIHB1YmxpYyBmdW5jdGlvbiBvbl9zdWNjZXNzKCR0aW1lID0gJycpCiAgIHsKCiAgICAgIGlmICghJHRpbWUpCiAgICAgIHsKICAgICAgICAgJHRpbWUgPSB0aW1lKCk7CiAgICAgIH0KICAgICAgCiAgICAgICRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7CiAgICAgICRwaW5nLT5TZXRQcmVmZXJlbmNlKCdMYXN0UmVjdXBGZnR0JywgJHRpbWUpOwogICAgICAkcGluZy0+QXVkaXQoJycsJ1BpbmcnLCdSw6ljdXAgRkZUVCBPaycpOwogICAgICAKICAgfQoKICAgcHVibGljIGZ1bmN0aW9uIG9uX2ZhaWx1cmUoJHRpbWUgPSAnJykKICAgewogICAgICAkcGluZy0+QXVkaXQoJycsJ1BpbmcnLCdQYXMgZGUgcsOpY3VwIEZGVFQnKTsKICAgfQoKfQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.PingRecupRencontresTask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKY2xhc3MgUGluZ1JlY3VwUmVuY29udHJlc1Rhc2sgaW1wbGVtZW50cyBDbXNSZWd1bGFyVGFzawp7CgogICBwdWJsaWMgZnVuY3Rpb24gZ2V0X25hbWUoKQogICB7CiAgICAgIHJldHVybiBnZXRfY2xhc3MoKTsKICAgfQoKICAgcHVibGljIGZ1bmN0aW9uIGdldF9kZXNjcmlwdGlvbigpCiAgIHsKICAgICAgcmV0dXJuICdSw6ljdXDDqXJhdGlvbiBkZXMgcmVuY29udHJlcyBkZSBjaGFtcGlvbm5hdC4nOwogICB9CgogICBwdWJsaWMgZnVuY3Rpb24gdGVzdCgkdGltZSA9ICcnKQogICB7CgogICAgICAvLyBJbnN0YW50aWF0aW9uIGR1IG1vZHVsZQogICAgICAkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwoKICAgICAgLy8gUsOpY3Vww6lyYXRpb24gZGUgbGEgZGVybmnDqHJlIGRhdGUgZCdleMOpY3V0aW9uIGRlIGxhIHTDomNoZQogICAgICBpZiAoISR0aW1lKQogICAgICB7CiAgICAgICAgICR0aW1lID0gdGltZSgpOwogICAgICB9CgogICAgICAkbGFzdF9leGVjdXRlID0gJHBpbmctPkdldFByZWZlcmVuY2UoJ0xhc3RSZWN1cFJlbmNvbnRyZXMnKTsKICAgICAgCiAgICAgIC8vIETDqWZpbml0aW9uIGRlIGxhIHDDqXJpb2RpY2l0w6kgZGUgbGEgdMOiY2hlICgyNGggaWNpKQogICAgICBpZiAoICgkdGltZSAtIDMwKjYwICkgPj0gJGxhc3RfZXhlY3V0ZSApLy90b3V0ZXMgbGVzIDI0IGhldXJlcyAgISEKCiAgICAgIHsKICAgICAgICAgcmV0dXJuIFRSVUU7CiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiBGQUxTRTsKICAgICAgCiAgIH0KCiAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKCR0aW1lID0gJycpCiAgIHsKCiAgICAgIGlmICghJHRpbWUpCiAgICAgIHsKICAgICAgICAgJHRpbWUgPSB0aW1lKCk7CiAgICAgIH0KCiAgICAgICRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7CiAgICAgIAogICAgICAvLyBDZSBxdSdpbCB5IGEgw6AgZXjDqWN1dGVyIGljaQoJJGRiID0gJHBpbmctPkdldERiKCk7Cgkkc2Fpc29uID0gJHBpbmctPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwoJJHBoYXNlID0gJHBpbmctPkdldFByZWZlcmVuY2UoJ3BoYXNlX2VuX2NvdXJzJyk7CgkkYXVqb3VyZGh1aSA9IGRhdGUoJ1ktbS1kJyk7Cgkkbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CgkkcXVlcnkgPSAiU0VMRUNUIERJU1RJTkNUIGlkZGl2LCBpZHBvdWxlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzYCBXSEVSRSBgZGF0ZV9ldmVudGAgPCA/IEFORCAoc2NvcmVhID0gMCBBTkQgc2NvcmViID0gMCkgQU5EIHNhaXNvbiA9ID8gQU5EIHBoYXNlID0gPyI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkYXVqb3VyZGh1aSwkc2Fpc29uKSk7CglpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKCXsKCgkJd2hpbGUgKCRkYnJlc3VsdDEgJiYgJHJvdyA9ICRkYnJlc3VsdDEtPkZldGNoUm93KCkpCiAgICAgIAkJewoJCQkKCQkJJGlkZGl2ID0gJHJvd1snaWRkaXYnXTsKCQkJJGlkcG91bGUgPSAkcm93WydpZHBvdWxlJ107CgkJCSRzZXJ2aWNlID0gbmV3IFNlcnZpY2VuKCk7CgkJCSRwYWdlID0gInhtbF9yZXN1bHRfZXF1IjsKCQkJJHZhciA9ICJhdXRvPTEmRDE9Ii4kaWRkaXYuIiZjeF9wb3VsZT0iLiRpZHBvdWxlOwoJCQkkbGllbiA9ICRzZXJ2aWNlLT5HZXRMaW5rKCRwYWdlLCAkdmFyKTsKCQkJLy9lY2hvICRsaWVuOwoJCQkkeG1sID0gc2ltcGxleG1sX2xvYWRfc3RyaW5nKCRsaWVuLCAnU2ltcGxlWE1MRWxlbWVudCcsIExJQlhNTF9OT0NEQVRBKTsKCQkJCgkJCWlmKCR4bWwgPT09IEZBTFNFKQoJCQl7CgkJCQkvL0xlIGxpZW4gbmUgcmV0b3VybmUgcmllbiBsZSBzZXJ2aWNlIGVzdCBjb3Vww6kKCQkJCS8vbGUgdGFibGVhdSBlc3QgdmlkZSwgaWwgZmF1dCBlbnZveWVyIHVuIG1lc3NhZ2UgcG91ciBsZSBzaWduYWxlcgoJCQkJJGRlc2lnbmF0aW9uLj0gImxlIHNlcnZpY2UgZXN0IGNvdXDDqSI7CgkJCQkkcmVzdWx0ID0gMDsKCQkJCS8vJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJCQkJLy8kdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdwb3VsZXMnKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRhcnJheSA9IGpzb25fZGVjb2RlKGpzb25fZW5jb2RlKChhcnJheSkkeG1sKSxUUlVFKTsKCQkJCSRsaWduZXMgPSBjb3VudCgkYXJyYXlbJ3RvdXInXSk7CgkJCQkvL2VjaG8gIk9rIG9uIGNvbnRpbnVlIjsKCQkJfQoKCQkJLy9pbCBmYXV0IHRlc3RlciBzaSBsZSB0YWJsZWF1IGVzdCB2aWRlIG91IG5vbgoJCQlpZighaXNfYXJyYXkoJGFycmF5KSB8fCAkbGlnbmVzID09MCkKCQkJewoJCQkJLy9lY2hvICJDYSBuZSBtYXJjaGUgcGFzICEiOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJLy90dCB2YSBiaWVuIG9uIGNvbnRpbnVlCgkJCQoJCQkJLy92YXJfZHVtcCgkeG1sKTsJCgkJCQkvL2VjaG8gIk9rIG9uIGNvbnRpbnVlIGVuY29yZSI7CgkJCQkkaT0wOwoJCQkJZm9yZWFjaCgkeG1sIGFzICRjbGUgPT4kdGFiKQoJCQkJewoKCgkJCQkJJGxpYmVsbGUgPSAoaXNzZXQoJHRhYi0+bGliZWxsZSk/IiR0YWItPmxpYmVsbGUiOiIiKTsKCQkJCQkkZXF1YSA9IChpc3NldCgkdGFiLT5lcXVhKT8iJHRhYi0+ZXF1YSI6IiIpOwoJCQkJCSRlcXViID0gKGlzc2V0KCR0YWItPmVxdWIpPyIkdGFiLT5lcXViIjoiIik7CgoJCQkJCS8vb24gZmFpdCBxdWVscXVlIHRyYW5zZm9ybWF0aW9ucyBkZXMgaW5mb3MgcmVjdWVpbGxpZXMKCQkJCQlwcmVnX21hdGNoX2FsbCgnI1swLTldKyMnLCRsaWJlbGxlLCRleHRyYWN0KTsKCQkJCQkkdG91ciA9ICRleHRyYWN0WzBdWzBdOwoKCQkJCQkkZXh0cmFjdGlvbiA9IHN1YnN0cigkbGliZWxsZSwtOCk7CgkJCQkJJGRhdGVfZXh0cmFjdCA9IGV4cGxvZGUoJy8nLCAkZXh0cmFjdGlvbik7CgkJCQkJJGFubmVlX2RhdGUgPSAkZGF0ZV9leHRyYWN0WzJdICsgMjAwMDsKCQkJCQkkZGF0ZV9ldmVudCA9ICRhbm5lZV9kYXRlLiItIi4kZGF0ZV9leHRyYWN0WzFdLiItIi4kZGF0ZV9leHRyYWN0WzBdOwoJCQkJCSR1cGxvYWRlZCA9IDA7CgoJCQkJCSRjbHViYSA9IHN0cnBvcygkZXF1YSwkbm9tX2VxdWlwZXMpOwoJCQkJCSRjbHViYiA9IHN0cnBvcygkZXF1Yiwkbm9tX2VxdWlwZXMpOwoJCQkJCgkJCQkJCWlmICgkY2x1YmEgIT09IGZhbHNlIHx8ICRjbHViYiAhPT0gZmFsc2UpCgkJCQkJCXsKCQkJCQkJCSRjbHViID0gMTsKCQkJCQkJCSRhZmZpY2hhZ2UgPSAxOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGNsdWIgPSAwOwoJCQkJCQl9CgkJCQkJCgkJCQkJJHNjb3JlYSA9IChpc3NldCgkdGFiLT5zY29yZWEpPyIkdGFiLT5zY29yZWEiOiIiKTsKCQkJCQkkc2NvcmViID0gKGlzc2V0KCR0YWItPnNjb3JlYik/IiR0YWItPnNjb3JlYiI6IiIpOwoJCQkJCSRsaWVuID0gKGlzc2V0KCR0YWItPmxpZW4pPyIkdGFiLT5saWVuIjoiIik7CQoJCQkJCS8vCgkJCQkKCQkJCQkkcXVlcnkzID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyAoaWQsc2Fpc29uLGlkcG91bGUsIGlkZGl2LCBjbHViLCB0b3VyLCBkYXRlX2V2ZW50LCB1cGxvYWRlZCwgbGliZWxsZSwgZXF1YSwgZXF1Yiwgc2NvcmVhLCBzY29yZWIsIGxpZW4pIFZBTFVFUyAoJycsID8gLD8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIjsKCQkJCQkvLwllY2hvICRxdWVyeTsKCQkJCQkkaSsrOwoJCQkJCSR1cGxvYWRlZCA9IDA7CgkJCQkJJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MyxhcnJheSgkc2Fpc29uLCRpZHBvdWxlLCAkaWRkaXYsICRjbHViLCAkdG91ciwgJGRhdGVfZXZlbnQsICR1cGxvYWRlZCwgJGxpYmVsbGUsICRlcXVhLCAkZXF1YiwgJHNjb3JlYSwgJHNjb3JlYiwgJGxpZW4pKTsKCgkJCQkJaWYoISRkYnJlc3VsdGF0KQoJCQkJCXsKCQkJCQkJJGRlc2lnbmF0aW9uIC49ICRkYi0+RXJyb3JNc2coKTsgCgkJCQkJfQoJCQkJCQkKCQkJCQkJCQoJCQkJCQkKCQkJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCgkJCQkJfS8vZmluIGR1IGZvcmVhY2gKCQkJCQoJCQkJfS8vZmluIGR1IGlmICFpc19hcnJheSB2w6lyaWZpY2F0aW9uIGR1IHRhYmxlYXUKCQkJJGNvbXB0YWdlID0gJGk7CgkJCSRzdGF0dXMgPSAnQ3Jvbic7CgkJCSRkZXNpZ25hdGlvbiA9ICJNaXNlIMOgIGpvdXIgZGUgIi4kY29tcHRhZ2UuIiByZW5jb250cmVzIGRlIGxhIHBvdWxlICIuJGlkcG91bGU7CgkJCSRxdWVyeTQgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwIChpZCwgZGF0ZWNyZWF0ZWQsIHN0YXR1cywgZGVzaWduYXRpb24sIGFjdGlvbikgVkFMVUVTICgnJywgPywgPywgPywgPykiOwoJCQkkYWN0aW9uID0gInJldHJpZXZlX3BvdWxlc19yZW5jb250cmVzIjsKCQkJJGRicmVzdWx0NCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnk0LCBhcnJheSgkbm93LCRzdGF0dXMsICRkZXNpZ25hdGlvbiwkYWN0aW9uKSk7CgkJCQoJCQkJaWYoISRkYnJlc3VsdDQpCgkJCQl7CgkJCQkJJGRlc2lnbmF0aW9uLj0gJGRiLT5FcnJvck1zZygpOyAKCQkJCX0KCQkJCgkJfS8vZmluIGR1IHdoaWxlCgoJfQoJCi8vZWNobyAiY291Y291IjsKICAgICAgCiAgICAgIHJldHVybiB0cnVlOyAvLyBPdSBmYWxzZSBzaSDDp2EgcGxhbnRlCgogICB9CgogICBwdWJsaWMgZnVuY3Rpb24gb25fc3VjY2VzcygkdGltZSA9ICcnKQogICB7CgogICAgICBpZiAoISR0aW1lKQogICAgICB7CiAgICAgICAgICR0aW1lID0gdGltZSgpOwogICAgICB9CiAgICAgIAogICAgICAkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwogICAgICAkcGluZy0+U2V0UHJlZmVyZW5jZSgnTGFzdFJlY3VwUmVuY29udHJlcycsICR0aW1lKTsKICAgICAgJHBpbmctPkF1ZGl0KCcnLCdQaW5nJywnUsOpY3VwIFJlbmNvbnRyZXMgT2snKTsKICAgICAgLy8kcG9uZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZQogICAgICAKICAgfQoKICAgcHVibGljIGZ1bmN0aW9uIG9uX2ZhaWx1cmUoJHRpbWUgPSAnJykKICAgewogICAgICAkcGluZy0+QXVkaXQoJycsJ1BpbmcnLCdQYXMgZGUgcsOpY3VwIFNQSUQnKTsKICAgfQoKfQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.PingRecupResultsTask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKY2xhc3MgUGluZ1JlY3VwUmVzdWx0c1Rhc2sgaW1wbGVtZW50cyBDbXNSZWd1bGFyVGFzawp7CgogICBwdWJsaWMgZnVuY3Rpb24gZ2V0X25hbWUoKQogICB7CiAgICAgIHJldHVybiBnZXRfY2xhc3MoKTsKICAgfQoKICAgcHVibGljIGZ1bmN0aW9uIGdldF9kZXNjcmlwdGlvbigpCiAgIHsKICAgICAgcmV0dXJuICdSw6ljdXDDqXJhdGlvbiBkZXMgcsOpc3VsdGF0cyBkZXMgY29tcGV0cy4nOwogICB9CgogICBwdWJsaWMgZnVuY3Rpb24gdGVzdCgkdGltZSA9ICcnKQogICB7CgogICAgICAvLyBJbnN0YW50aWF0aW9uIGR1IG1vZHVsZQogICAgICAkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwoKICAgICAgLy8gUsOpY3Vww6lyYXRpb24gZGUgbGEgZGVybmnDqHJlIGRhdGUgZCdleMOpY3V0aW9uIGRlIGxhIHTDomNoZQogICAgICBpZiAoISR0aW1lKQogICAgICB7CiAgICAgICAgICR0aW1lID0gdGltZSgpOwogICAgICB9CgogICAgICAkbGFzdF9leGVjdXRlID0gJHBpbmctPkdldFByZWZlcmVuY2UoJ0xhc3RSZWN1cFJlc3VsdHMnKTsKICAgICAgCiAgICAgIC8vIETDqWZpbml0aW9uIGRlIGxhIHDDqXJpb2RpY2l0w6kgZGUgbGEgdMOiY2hlICgyNGggaWNpKQogICAgICBpZiAoICgkdGltZSAtIDMwKjYwICkgPj0gJGxhc3RfZXhlY3V0ZSApLy90b3V0ZXMgbGVzIDI0IGhldXJlcyAgISEKCiAgICAgIHsKICAgICAgICAgcmV0dXJuIFRSVUU7CiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiBGQUxTRTsKICAgICAgCiAgIH0KCiAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKCR0aW1lID0gJycpCiAgIHsKCiAgICAgIGlmICghJHRpbWUpCiAgICAgIHsKICAgICAgICAgJHRpbWUgPSB0aW1lKCk7CiAgICAgIH0KCiAgICAgICRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7CiAgICAgIAogICAgICAvLyBDZSBxdSdpbCB5IGEgw6AgZXjDqWN1dGVyIGljaQoJJGRiID0gJHBpbmctPkdldERiKCk7Cgkkc2Fpc29uX2NvdXJhbnRlID0gJHBpbmctPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwoJJG5vdyA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpLCAiJyIpOwoJJHF1ZXJ5ID0gIlNFTEVDVCBpZGVwcmV1dmUsIHRvdXIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X3RvdXJzIEFTIHJwLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBBUyBqICBXSEVSRSBqLmxpY2VuY2UgPSBycC5saWNlbmNlIEFORCBqLmFjdGlmID0gJzEnICI7CgkkaW50ZXJ2YWwgPSAkcGluZy0+R2V0UHJlZmVyZW5jZSgnc3BpZF9pbnRlcnZhbCcpOwoJJHF1ZXJ5Lj0iIEFORCBtYWpfc3BpZCA8IE5PVygpLUlOVEVSVkFMICIuJGludGVydmFsLiIgREFZIEFORCBzYWlzb24gPSA/IE9SREVSIEJZIG1hal9zcGlkIERFU0MgIjsKCSRsaW1pdCA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdzcGlkX25vbWJyZXMnKTsKCSRxdWVyeS49ICJMSU1JVCAiLiRsaW1pdDsKCS8vJHF1ZXJ5ID0gIlNFTEVDVCBDT05DQVRfV1MoJyAnLG5vbSxwcmVub20pIGFzIHBsYXllciwgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIGFjdGlmPScxJyBMSU1JVCAyIjsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHNhaXNvbl9jb3VyYW50ZSkpOwoJaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCgl7CgoJCS8vb24gaW5zdGFuY2llIGxhIGNsYXNzZSBldCBvbiB2YSBjb21tZW5jZXIgw6AgYm91Y2xlcgoJCSRzZXJ2aWNlID0gbmV3IHJldHJpZXZlX29wcygpOwoKCQl3aGlsZSAoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJJGxpY2VuY2UgPSAkcm93WydsaWNlbmNlJ107CQkKCQkJLy8kcGxheWVyID0gJHJvd1sncGxheWVyJ107CgoKCQkJJHJldHJpZXZlX29wcyA9ICRzZXJ2aWNlLT5yZXRyaWV2ZV9wYXJ0aWVzX3NwaWQoJGxpY2VuY2UpOwoKCgkJfS8vZmluIGR1IHdoaWxlCgoJfQoJCi8vZWNobyAiY291Y291IjsKICAgICAgCiAgICAgIHJldHVybiB0cnVlOyAvLyBPdSBmYWxzZSBzaSDDp2EgcGxhbnRlCgogICB9CgogICBwdWJsaWMgZnVuY3Rpb24gb25fc3VjY2VzcygkdGltZSA9ICcnKQogICB7CgogICAgICBpZiAoISR0aW1lKQogICAgICB7CiAgICAgICAgICR0aW1lID0gdGltZSgpOwogICAgICB9CiAgICAgIAogICAgICAkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwogICAgICAkcGluZy0+U2V0UHJlZmVyZW5jZSgnTGFzdFJlY3VwU3BpZCcsICR0aW1lKTsKICAgICAgJHBpbmctPkF1ZGl0KCcnLCdQaW5nJywnUsOpY3VwIFNwaWQgT2snKTsKICAgICAgLy8kcG9uZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZQogICAgICAKICAgfQoKICAgcHVibGljIGZ1bmN0aW9uIG9uX2ZhaWx1cmUoJHRpbWUgPSAnJykKICAgewogICAgICAkcGluZy0+QXVkaXQoJycsJ1BpbmcnLCdQYXMgZGUgcsOpY3VwIFNQSUQnKTsKICAgfQoKfQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.PingRecupSpidTask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKY2xhc3MgUGluZ1JlY3VwU3BpZFRhc2sgaW1wbGVtZW50cyBDbXNSZWd1bGFyVGFzawp7CgogICBwdWJsaWMgZnVuY3Rpb24gZ2V0X25hbWUoKQogICB7CiAgICAgIHJldHVybiBnZXRfY2xhc3MoKTsKICAgfQoKICAgcHVibGljIGZ1bmN0aW9uIGdldF9kZXNjcmlwdGlvbigpCiAgIHsKICAgICAgcmV0dXJuICdEZXNjcmlwdGlvbiBkZSBsYSB0w6JjaGUuJzsKICAgfQoKICAgcHVibGljIGZ1bmN0aW9uIHRlc3QoJHRpbWUgPSAnJykKICAgewoKICAgICAgLy8gSW5zdGFudGlhdGlvbiBkdSBtb2R1bGUKICAgICAgJHBpbmcgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ1BpbmcnKTsKCiAgICAgIC8vIFLDqWN1cMOpcmF0aW9uIGRlIGxhIGRlcm5pw6hyZSBkYXRlIGQnZXjDqWN1dGlvbiBkZSBsYSB0w6JjaGUKICAgICAgaWYgKCEkdGltZSkKICAgICAgewogICAgICAgICAkdGltZSA9IHRpbWUoKTsKICAgICAgfQoKICAgICAgJGxhc3RfZXhlY3V0ZSA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdMYXN0UmVjdXBTcGlkJyk7CiAgICAgIAogICAgICAvLyBEw6lmaW5pdGlvbiBkZSBsYSBww6lyaW9kaWNpdMOpIGRlIGxhIHTDomNoZSAoMjRoIGljaSkKICAgICAgaWYgKCAoJHRpbWUgLSAzMCo2MCApID49ICRsYXN0X2V4ZWN1dGUgKS8vdG91dGVzIGxlcyAyNCBoZXVyZXMgICEhCgogICAgICB7CiAgICAgICAgIHJldHVybiBUUlVFOwogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gRkFMU0U7CiAgICAgIAogICB9CgogICBwdWJsaWMgZnVuY3Rpb24gZXhlY3V0ZSgkdGltZSA9ICcnKQogICB7CgogICAgICBpZiAoISR0aW1lKQogICAgICB7CiAgICAgICAgICR0aW1lID0gdGltZSgpOwogICAgICB9CgogICAgICAkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwogICAgICAvL29uIHbDqXJpZmllIHF1J29uIHBldXQgcsOpY3Vww6lyZXIgbGVzIHLDqXN1bHRhdHMKICAgICAgCWlmKGRhdGUoJ2onKSA+PSAkcGluZy0+R2V0UHJlZmVyZW5jZSgnam91cl9zaXRfbWVucycpKQoJewoJCS8vIENlIHF1J2lsIHkgYSDDoCBleMOpY3V0ZXIgaWNpCgkJCSRkYiA9ICRwaW5nLT5HZXREYigpOwoJCQkkc2Fpc29uX2NvdXJhbnRlID0gJHBpbmctPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwoJCQkkbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CgkJCSRxdWVyeSA9ICJTRUxFQ1Qgai5saWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgQVMgcnAsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogIFdIRVJFIGoubGljZW5jZSA9IHJwLmxpY2VuY2UgQU5EIGouYWN0aWYgPSAnMScgQU5EIHNhaXNvbiA9ID8gIjsKCQkJJGludGVydmFsID0gJHBpbmctPkdldFByZWZlcmVuY2UoJ3NwaWRfaW50ZXJ2YWwnKTsKCQkJJHF1ZXJ5Lj0iIEFORCBtYWpfc3BpZCA8IE5PVygpLUlOVEVSVkFMICIuJGludGVydmFsLiIgREFZICI7CgkJCSRxdWVyeS49IiBPUiBtYWpfc3BpZCA9ICcwMDAtMDAtMDAnICI7CgkJCSRxdWVyeS49IiBPUkRFUiBCWSBtYWpfc3BpZCBERVNDICI7CgkJCSRsaW1pdCA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdzcGlkX25vbWJyZXMnKTsKCQkJJHF1ZXJ5Lj0gIkxJTUlUICIuJGxpbWl0OwoJCQkvLyRxdWVyeSA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJyxub20scHJlbm9tKSBhcyBwbGF5ZXIsIGxpY2VuY2UgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSBhY3RpZj0nMScgTElNSVQgMiI7CgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHNhaXNvbl9jb3VyYW50ZSkpOwoJCQlpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKCQkJewoKCQkJCS8vb24gaW5zdGFuY2llIGxhIGNsYXNzZSBldCBvbiB2YSBjb21tZW5jZXIgw6AgYm91Y2xlcgoJCQkJJHNlcnZpY2UgPSBuZXcgcmV0cmlldmVfb3BzKCk7CgoJCQkJd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQkJCXsKCQkJCQkkbGljZW5jZSA9ICRyb3dbJ2xpY2VuY2UnXTsJCQoJCQkJCS8vJHBsYXllciA9ICRyb3dbJ3BsYXllciddOwoKCgkJCQkJJHJldHJpZXZlX29wcyA9ICRzZXJ2aWNlLT5yZXRyaWV2ZV9wYXJ0aWVzX3NwaWQyKCRsaWNlbmNlKTsKCQkJCQlzbGVlcCgxKTsKCgkJCQl9Ly9maW4gZHUgd2hpbGUKCgkJCX0KCX0KICAgICAgCgkKLy9lY2hvICJjb3Vjb3UiOwogICAgICAKICAgICAgcmV0dXJuIHRydWU7IC8vIE91IGZhbHNlIHNpIMOnYSBwbGFudGUKCiAgIH0KCiAgIHB1YmxpYyBmdW5jdGlvbiBvbl9zdWNjZXNzKCR0aW1lID0gJycpCiAgIHsKCiAgICAgIGlmICghJHRpbWUpCiAgICAgIHsKICAgICAgICAgJHRpbWUgPSB0aW1lKCk7CiAgICAgIH0KICAgICAgCiAgICAgICRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7CiAgICAgICRwaW5nLT5TZXRQcmVmZXJlbmNlKCdMYXN0UmVjdXBTcGlkJywgJHRpbWUpOwogICAgICAkcGluZy0+QXVkaXQoJycsJ1BpbmcnLCdSw6ljdXAgU3BpZCBPaycpOwogICAgICAvLyRwb25nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlCiAgICAgIAogICB9CgogICBwdWJsaWMgZnVuY3Rpb24gb25fZmFpbHVyZSgkdGltZSA9ICcnKQogICB7CiAgICAgICRwaW5nLT5BdWRpdCgnJywnUGluZycsJ1BhcyBkZSByw6ljdXAgU1BJRCcpOwogICB9Cgp9Cj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.PingRecupToursTask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKY2xhc3MgUGluZ1JlY3VwU3BpZFRhc2sgaW1wbGVtZW50cyBDbXNSZWd1bGFyVGFzawp7CgogICBwdWJsaWMgZnVuY3Rpb24gZ2V0X25hbWUoKQogICB7CiAgICAgIHJldHVybiBnZXRfY2xhc3MoKTsKICAgfQoKICAgcHVibGljIGZ1bmN0aW9uIGdldF9kZXNjcmlwdGlvbigpCiAgIHsKICAgICAgcmV0dXJuICdSw6ljdXDDqXJhdGlvbiBkZXMgdG91cnMgb3UgcG91bGVzLic7CiAgIH0KCiAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0KCR0aW1lID0gJycpCiAgIHsKCiAgICAgIC8vIEluc3RhbnRpYXRpb24gZHUgbW9kdWxlCiAgICAgICRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7CgogICAgICAvLyBSw6ljdXDDqXJhdGlvbiBkZSBsYSBkZXJuacOocmUgZGF0ZSBkJ2V4w6ljdXRpb24gZGUgbGEgdMOiY2hlCiAgICAgIGlmICghJHRpbWUpCiAgICAgIHsKICAgICAgICAgJHRpbWUgPSB0aW1lKCk7CiAgICAgIH0KCiAgICAgICRsYXN0X2V4ZWN1dGUgPSAkcGluZy0+R2V0UHJlZmVyZW5jZSgnTGFzdFJlY3VwU3BpZCcpOwogICAgICAKICAgICAgLy8gRMOpZmluaXRpb24gZGUgbGEgcMOpcmlvZGljaXTDqSBkZSBsYSB0w6JjaGUgKDI0aCBpY2kpCiAgICAgIGlmICggKCR0aW1lIC0gMzAqNjAgKSA+PSAkbGFzdF9leGVjdXRlICkvL3RvdXRlcyBsZXMgMjQgaGV1cmVzICAhIQoKICAgICAgewogICAgICAgICByZXR1cm4gVFJVRTsKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAKICAgfQoKICAgcHVibGljIGZ1bmN0aW9uIGV4ZWN1dGUoJHRpbWUgPSAnJykKICAgewoKICAgICAgaWYgKCEkdGltZSkKICAgICAgewogICAgICAgICAkdGltZSA9IHRpbWUoKTsKICAgICAgfQoKICAgICAgJHBpbmcgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ1BpbmcnKTsKICAgICAgCiAgICAgIC8vIENlIHF1J2lsIHkgYSDDoCBleMOpY3V0ZXIgaWNpCgkkZGIgPSAkcGluZy0+R2V0RGIoKTsKCSRzYWlzb25fY291cmFudGUgPSAkcGluZy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7Cgkkbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CgkkcXVlcnkgPSAiU0VMRUNUIGoubGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIEFTIHJwLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBBUyBqICBXSEVSRSBqLmxpY2VuY2UgPSBycC5saWNlbmNlIEFORCBqLmFjdGlmID0gJzEnICI7CgkkaW50ZXJ2YWwgPSAkcGluZy0+R2V0UHJlZmVyZW5jZSgnc3BpZF9pbnRlcnZhbCcpOwoJJHF1ZXJ5Lj0iIEFORCBtYWpfc3BpZCA8IE5PVygpLUlOVEVSVkFMICIuJGludGVydmFsLiIgREFZIEFORCBzYWlzb24gPSA/IE9SREVSIEJZIG1hal9zcGlkIERFU0MgIjsKCSRsaW1pdCA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdzcGlkX25vbWJyZXMnKTsKCSRxdWVyeS49ICJMSU1JVCAiLiRsaW1pdDsKCS8vJHF1ZXJ5ID0gIlNFTEVDVCBDT05DQVRfV1MoJyAnLG5vbSxwcmVub20pIGFzIHBsYXllciwgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIGFjdGlmPScxJyBMSU1JVCAyIjsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHNhaXNvbl9jb3VyYW50ZSkpOwoJaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCgl7CgoJCS8vb24gaW5zdGFuY2llIGxhIGNsYXNzZSBldCBvbiB2YSBjb21tZW5jZXIgw6AgYm91Y2xlcgoJCSRzZXJ2aWNlID0gbmV3IHJldHJpZXZlX29wcygpOwoKCQl3aGlsZSAoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJJGxpY2VuY2UgPSAkcm93WydsaWNlbmNlJ107CQkKCQkJLy8kcGxheWVyID0gJHJvd1sncGxheWVyJ107CgoKCQkJJHJldHJpZXZlX29wcyA9ICRzZXJ2aWNlLT5yZXRyaWV2ZV9wYXJ0aWVzX3NwaWQoJGxpY2VuY2UpOwoKCgkJfS8vZmluIGR1IHdoaWxlCgoJfQoJCi8vZWNobyAiY291Y291IjsKICAgICAgCiAgICAgIHJldHVybiB0cnVlOyAvLyBPdSBmYWxzZSBzaSDDp2EgcGxhbnRlCgogICB9CgogICBwdWJsaWMgZnVuY3Rpb24gb25fc3VjY2VzcygkdGltZSA9ICcnKQogICB7CgogICAgICBpZiAoISR0aW1lKQogICAgICB7CiAgICAgICAgICR0aW1lID0gdGltZSgpOwogICAgICB9CiAgICAgIAogICAgICAkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwogICAgICAkcGluZy0+U2V0UHJlZmVyZW5jZSgnTGFzdFJlY3VwU3BpZCcsICR0aW1lKTsKICAgICAgJHBpbmctPkF1ZGl0KCcnLCdQaW5nJywnUsOpY3VwIFNwaWQgT2snKTsKICAgICAgLy8kcG9uZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZQogICAgICAKICAgfQoKICAgcHVibGljIGZ1bmN0aW9uIG9uX2ZhaWx1cmUoJHRpbWUgPSAnJykKICAgewogICAgICAkcGluZy0+QXVkaXQoJycsJ1BpbmcnLCdQYXMgZGUgcsOpY3VwIFNQSUQnKTsKICAgfQoKfQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.ping_admin_ops.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKI2l0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiN0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiNidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KI1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiNhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQojCiMkSWQ6IE5ld3MubW9kdWxlLnBocCAyMTE0IDIwMDUtMTEtMDQgMjE6NTE6MTNaIHdpc2h5ICQKCmNsYXNzIHBpbmdfYWRtaW5fb3BzCnsKICAgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7fQoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVjcmlyZWpvdXJuYWwoJG5vdywkc3RhdHVzLCAkZGVzaWduYXRpb24sJGFjdGlvbikKICB7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwoJCiAgICAvL05vdyByZW1vdmUgdGhlIGFydGljbGUKICAgICRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXAgKGlkLCBkYXRlY3JlYXRlZCwgc3RhdHVzLGRlc2lnbmF0aW9uLCBhY3Rpb24pIFZBTFVFUyAoJycsID8sID8sID8sID8pIjsKICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRub3csICRzdGF0dXMsICRkZXNpZ25hdGlvbiwkYWN0aW9uKSk7CiAgICAKICAgIAogIH0KZnVuY3Rpb24gcmFuZG9tKCRjYXIpIHsKJHN0cmluZyA9ICIiOwokY2hhaW5lID0gImFiY2RlZmdoaWprbG1ucHFyc3R1dnd4eSI7CnNyYW5kKChkb3VibGUpbWljcm90aW1lKCkqMTAwMDAwMCk7CmZvcigkaT0wOyAkaTwkY2FyOyAkaSsrKSB7CiRzdHJpbmcgLj0gJGNoYWluZVtyYW5kKCklc3RybGVuKCRjaGFpbmUpXTsKfQpyZXR1cm4gJHN0cmluZzsKfQpmdW5jdGlvbiByYW5kb21fc2VyaWUoJGNhcikgewokc3RyaW5nID0gIiI7CiRjaGFpbmUgPSAiQUJDREVGR0hJSktMTU9QUVJTVFVWV1hZWjAxMjM0NTY3ODkiOwpzcmFuZCgoZG91YmxlKW1pY3JvdGltZSgpKjEwMDAwMDApOwpmb3IoJGk9MDsgJGk8JGNhcjsgJGkrKykgewokc3RyaW5nIC49ICRjaGFpbmVbcmFuZCgpJXN0cmxlbigkY2hhaW5lKV07Cn0KcmV0dXJuICRzdHJpbmc7Cn0KcHVibGljIGZ1bmN0aW9uIENhbGN1bFBvaW50c0luZGl2cygkZWNhcnQsJHZpY3RvaXJlKSB7CgoKCQlpZigkZWNhcnQgPT0xKQoJewoJCWlmKCAkdmljdG9pcmUgPT0gMSkKCQl7CgoJCQkkcmVzdWx0ID0gNjsJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCgkJfQoJCWVsc2UKCQl7CgoJCQkkcmVzdWx0ID0gLTU7CgoKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTIpCgl7CgkJaWYoICR2aWN0b2lyZSA9PTEpCgkJewoKCQkJJHJlc3VsdCA9IDUuNTsKCgoJCQlyZXR1cm4gJHJlc3VsdDsKCgkJfQoJCWVsc2UKCQl7CgoJCQkkcmVzdWx0ID0gLTY7CgoKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTMpCgl7CgkJaWYoJHZpY3RvaXJlID09MSkKCQl7CgoJCQkkcmVzdWx0ID0gNTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgoJCQkkcmVzdWx0ID0gLTc7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT00KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCgkJCSRyZXN1bHQgPSA0OwoKCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoKCQkJJHJlc3VsdCA9IC04OwoKCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT01KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCgkJCSRyZXN1bHQgPSAzOwoKCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoKCQkJJHJlc3VsdCA9IC0xMDsKCgoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09NikKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgoJCQkkcmVzdWx0ID0gMjsKCgoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCgkJCSRyZXN1bHQgPSAtMTIuNTsKCgoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09NykKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgoJCQkkcmVzdWx0ID0gMTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgoJCQkkcmVzdWx0ID0gLTE2OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09OCkKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgoJCQkkcmVzdWx0ID0gMC41OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCgkJCSRyZXN1bHQgPSAtMjA7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT05KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCgkJCSRyZXN1bHQgPSAwOwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCgkJCSRyZXN1bHQgPSAtMjk7CQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS0xKQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCgkJCSRyZXN1bHQgPSA2OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCgkJCSRyZXN1bHQgPSAtNTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydD09LTIpCgl7CgkJaWYoICR2aWN0b2lyZSA9PTEpCgkJewoKCQkJJHJlc3VsdCA9IDc7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoKCQl9CgkJZWxzZQoJCXsKCgkJCSRyZXN1bHQgPSAtNC41OwkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tMykKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgoJCQkkcmVzdWx0ID0gODsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgoJCQkkcmVzdWx0ID0gLTQ7CgoKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS00KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCgkJCSRyZXN1bHQgPSAxMDsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgoJCQkkcmVzdWx0ID0gLTM7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tNSkKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgoJCQkkcmVzdWx0ID0gMTM7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoKCQkJJHJlc3VsdCA9IC0yOwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09LTYpCgl7CgkJaWYoICR2aWN0b2lyZSA9PTEpCgkJewoKCQkJJHJlc3VsdCA9IDE3OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCgkJCSRyZXN1bHQgPSAtMTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS03KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCgkJCSRyZXN1bHQgPSAyMjsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgoJCQkkcmVzdWx0ID0gLTAuNTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS04KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCgkJCSRyZXN1bHQgPSAyODsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgoJCQkkcmVzdWx0ID0gMDsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS05KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCgkJCSRyZXN1bHQgPSA0MDsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgoJCQkkcmVzdWx0ID0gMDsKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoKfQoKcHVibGljIHN0YXRpYyBmdW5jdGlvbiB1bmFibGVfcGxheWVyKCRsaWNlbmNlKQogIHsKICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CgogICAgLy9Ob3cgcmVtb3ZlIHRoZSBlbnRyeQogICAgJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBTRVQgYWN0aWYgPScwJyAgV0hFUkUgbGljZW5jZSA9ID8iOwogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UpKTsKCgogIH0KCnB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc3VwcF9zcGlkKCRyZWNvcmRfaWQpCiAgewogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCSRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7Cgkkc2Fpc29uID0gJHBpbmctPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwogICAgCS8vb24gZmFpdCBsYSBtYWogZGFucyBsYSB0YWJsZSByZWN1cF9wYXJ0aWVzLCBkb25jIG9uIHLDqWN1cMOocmUgbGUgTsKwIGRlIGxpY2VuY2UKCSRxdWVyeTIgPSAiU0VMRUNUIGxpY2VuY2UgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIFdIRVJFIGlkID0gPyI7CgkkZGJyZXN1bHQyID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsYXJyYXkoJHJlY29yZF9pZCkpOwoJJHJvdzIgPSAkZGJyZXN1bHQyLT5GZXRjaFJvdygpOwoJJGxpY2VuY2UyID0gJHJvdzJbJ2xpY2VuY2UnXTsKICAgIAkvL05vdyByZW1vdmUgdGhlIGVudHJ5CiAgICAJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgV0hFUkUgaWQgPSA/IjsKICAgIAkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJlY29yZF9pZCkpOwoJCS8vc2kgbGEgcmVxdWV0ZSBmb25jdGlvbm5lIG9uIG1ldCBsYSB0YWJsZSByZWN1cF9wYXJ0aWVzIMOgIGpvdXIKCQlpZigkcmVzdWx0KQoJCXsKCQkJJHF1ZXJ5MyA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgU0VUIHNwaWQgPSBzcGlkLTEgV0hFUkUgbGljZW5jZSA9ID8gQU5EIHNhaXNvbiA9ID8iOwoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5MywgYXJyYXkoJGxpY2VuY2UyLCAkc2Fpc29uKSk7CgkJfQogICAgCgoKCiAgfQoKCnB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29tcHRlX3NwaWQoJGxpY2VuY2UpCnsKCWdsb2JhbCAkZ0NtczsKCSRkYiA9IGNtc21zKCktPkdldERiKCk7CgkkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwoJJHNhaXNvbiA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKCSRxdWVyeSA9ICJTRUxFQ1QgY291bnQoKikgQVMgc3BpZCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgV0hFUkUgbGljZW5jZSA9ID8gQU5EIHNhaXNvbiA9ID8iOwoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UsJHNhaXNvbikpOwoJJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCSRzcGlkID0gJHJvd1snc3BpZCddOwoJcmV0dXJuICRzcGlkOwoKfQpwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvbXB0ZV9zcGlkX2Vycm9ycygkbGljZW5jZSkKewoJZ2xvYmFsICRnQ21zOwoJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCSRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7Cgkkc2Fpc29uID0gJHBpbmctPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwoJJHF1ZXJ5ID0gIlNFTEVDVCBjb3VudCgqKSBBUyBzcGlkX2Vycm9ycyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgV0hFUkUgbGljZW5jZSA9ID8gQU5EIHNhaXNvbiA9ID8gQU5EIHN0YXR1dCA9IDAiOwoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UsJHNhaXNvbikpOwoJaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKT4wKQoJewoJCSRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkJJHNwaWRfZXJyb3JzID0gJHJvd1snc3BpZF9lcnJvcnMnXTsKCQlyZXR1cm4gJHNwaWRfZXJyb3JzOwoJfQoJCgp9CiMjCnB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29tcHRlX2ZmdHQoJGxpY2VuY2UpCnsKCWdsb2JhbCAkZ0NtczsKCSRkYiA9IGNtc21zKCktPkdldERiKCk7CgkkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwoJJHNhaXNvbiA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKCSRxdWVyeSA9ICJTRUxFQ1QgY291bnQoKikgQVMgZmZ0dCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIFdIRVJFIGxpY2VuY2UgPSA/IEFORCBzYWlzb24gPSA/IjsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlLCRzYWlzb24pKTsKCSRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkkZmZ0dCA9ICRyb3dbJ2ZmdHQnXTsKCXJldHVybiAkZmZ0dDsKCn0KIyMKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWFqX3JlY3VwX3BhcnRpZXMoJGxpY2VuY2UsJHRhYmxlKQoJewoJCWdsb2JhbCAkZ0NtczsKCQkkZGIgPSBjbXNtcygpLT5HZXREYigpOwoJCSRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7CgkJJHNhaXNvbiA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIFNFVCBtYWpfc3BpZCA9ID8gV0hFUkUgbGljZW5jZT0gPyBBTkQgc2Fpc29uID0gPyI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UsJHNhaXNvbikpOwoJCSRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkJJGZmdHQgPSAkcm93WydmZnR0J107CgkJcmV0dXJuICRmZnR0OwoKCX0KIyMKcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZWFyY2hfcGxheWVyX2xpY2VuY2UoJG5hbWUpCnsKCQovL2VuZCBvZiBmdW5jdGlvbgp9CgpwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9uYW1lKCRub20pCnsKCQoJJGV4cGxvc2lvbiA9IGV4cGxvZGUoJyAnLCRub20pOwoJJGNvbXB0ZXVyID0gY291bnQoJGV4cGxvc2lvbik7CgkkbmFtZSA9IGFycmF5KCk7CgkkcHJlbm9tID0gYXJyYXkoKTsKCS8vb24gZmFpdCBxcXMgdHJhaXRlbWVudHMgcG91ciBsZXMgY2FyYWN0w6hyZXMgYWNjZW50dcOpcwoJCgkKCSRpID0wOwoJZm9yZWFjaCAoJGV4cGxvc2lvbiBhcyAkdGVzdGNhc2UpIHsKCSRpKys7CgkvL29uIG5ldHRvaWUgbGVzIGNhcmFjdMOocmVzIHF1aSBwb3NlbnQgcHJvYmzDqG1lCgkkdGVzdGNhc2UgPSBzdHJ0cigkdGVzdGNhc2UsIGFycmF5KAoJICAgICAgICAnxaAnPT4nUycsICfFoSc9PidzJywgJ8SQJz0+J0RqJywgJ8SRJz0+J2RqJywgJ8W9Jz0+J1onLCAnxb4nPT4neicsICfEjCc9PidDJywgJ8SNJz0+J2MnLCAnxIYnPT4nQycsICfEhyc9PidjJywKCSAgICAgICAgJ8OAJz0+J0EnLCAnw4EnPT4nQScsICfDgic9PidBJywgJ8ODJz0+J0EnLCAnw4QnPT4nQScsICfDhSc9PidBJywgJ8OGJz0+J0EnLCAnw4cnPT4nQycsICfDiCc9PidFJywgJ8OJJz0+J0UnLAoJICAgICAgICAnw4onPT4nRScsICfDiyc9PidFJywgJ8OMJz0+J0knLCAnw40nPT4nSScsICfDjic9PidJJywgJ8OPJz0+J0knLCAnw5EnPT4nTicsICfDkic9PidPJywgJ8OTJz0+J08nLCAnw5QnPT4nTycsCgkgICAgICAgICfDlSc9PidPJywgJ8OWJz0+J08nLCAnw5gnPT4nTycsICfDmSc9PidVJywgJ8OaJz0+J1UnLCAnw5snPT4nVScsICfDnCc9PidVJywgJ8OdJz0+J1knLCAnw54nPT4nQicsICfDnyc9PidTcycsCgkgICAgICAgICfDoCc9PidhJywgJ8OhJz0+J2EnLCAnw6InPT4nYScsICfDoyc9PidhJywgJ8OkJz0+J2EnLCAnw6UnPT4nYScsICfDpic9PidhJywgJ8OnJz0+J2MnLCAnw6gnPT4nZScsICfDqSc9PidlJywKCSAgICAgICAgJ8OqJz0+J2UnLCAnw6snPT4nZScsICfDrCc9PidpJywgJ8OtJz0+J2knLCAnw64nPT4naScsICfDryc9PidpJywgJ8OwJz0+J28nLCAnw7EnPT4nbicsICfDsic9PidvJywgJ8OzJz0+J28nLAoJICAgICAgICAnw7QnPT4nbycsICfDtSc9PidvJywgJ8O2Jz0+J28nLCAnw7gnPT4nbycsICfDuSc9Pid1JywgJ8O6Jz0+J3UnLCAnw7snPT4ndScsICfDvSc9Pid5JywgJ8O9Jz0+J3knLCAnw74nPT4nYicsCgkgICAgICAgICfDvyc9Pid5JywgJ8WUJz0+J1InLCAnxZUnPT4ncicsCgkgICAgKSk7CQoJICBpZiAoY3R5cGVfdXBwZXIoc3RyX3JlcGxhY2UoIiciLCIiLCR0ZXN0Y2FzZSkpIHx8ICR0ZXN0Y2FzZSA9PSItIiB8fCAkdGVzdGNhc2UgPT0iJyIpIHsKCSAgICAkbmFtZVskaV0gPSAkdGVzdGNhc2U7CgkJLy9lY2hvICJMYSBjaGHDrm5lIi4kaS4iICR0ZXN0Y2FzZSBuZSBjb250aWVudCBxdWUgZGVzIG1hanVzY3VsZXMuXG4iOwoJICB9IGVsc2UgewoJICAgLy8gZWNobyAiTGEgY2hhw65uZSIuJGkuIiAkdGVzdGNhc2UgbmUgY29udGllbnQgcGFzIHF1ZSBkZXMgbWFqdXNjdWxlcy5cbiI7CgkJJHByZW5vbVskaV0gPSAkdGVzdGNhc2U7CgkgIH0KCX0KCQoJJG5vbV9maW5hbCA9IGltcGxvZGUoJyAnLCRuYW1lKTsKCS8qCgkkbm9tX2ZpbmFsID0gc3RydHIoJG5vbV9maW5hbCwgYXJyYXkoCgkgICAgICAgICfFoCc9PidTJywgJ8WhJz0+J3MnLCAnxJAnPT4nRGonLCAnxJEnPT4nZGonLCAnxb0nPT4nWicsICfFvic9Pid6JywgJ8SMJz0+J0MnLCAnxI0nPT4nYycsICfEhic9PidDJywgJ8SHJz0+J2MnLAoJICAgICAgICAnw4AnPT4nQScsICfDgSc9PidBJywgJ8OCJz0+J0EnLCAnw4MnPT4nQScsICfDhCc9PidBJywgJ8OFJz0+J0EnLCAnw4YnPT4nQScsICfDhyc9PidDJywgJ8OIJz0+J0UnLCAnw4knPT4nRScsCgkgICAgICAgICfDiic9PidFJywgJ8OLJz0+J0UnLCAnw4wnPT4nSScsICfDjSc9PidJJywgJ8OOJz0+J0knLCAnw48nPT4nSScsICfDkSc9PidOJywgJ8OSJz0+J08nLCAnw5MnPT4nTycsICfDlCc9PidPJywKCSAgICAgICAgJ8OVJz0+J08nLCAnw5YnPT4nTycsICfDmCc9PidPJywgJ8OZJz0+J1UnLCAnw5onPT4nVScsICfDmyc9PidVJywgJ8OcJz0+J1UnLCAnw50nPT4nWScsICfDnic9PidCJywgJ8OfJz0+J1NzJywKCSAgICAgICAgJ8OgJz0+J2EnLCAnw6EnPT4nYScsICfDoic9PidhJywgJ8OjJz0+J2EnLCAnw6QnPT4nYScsICfDpSc9PidhJywgJ8OmJz0+J2EnLCAnw6cnPT4nYycsICfDqCc9PidlJywgJ8OpJz0+J2UnLAoJICAgICAgICAnw6onPT4nZScsICfDqyc9PidlJywgJ8OsJz0+J2knLCAnw60nPT4naScsICfDric9PidpJywgJ8OvJz0+J2knLCAnw7AnPT4nbycsICfDsSc9PiduJywgJ8OyJz0+J28nLCAnw7MnPT4nbycsCgkgICAgICAgICfDtCc9PidvJywgJ8O1Jz0+J28nLCAnw7YnPT4nbycsICfDuCc9PidvJywgJ8O5Jz0+J3UnLCAnw7onPT4ndScsICfDuyc9Pid1JywgJ8O9Jz0+J3knLCAnw70nPT4neScsICfDvic9PidiJywKCSAgICAgICAgJ8O/Jz0+J3knLCAnxZQnPT4nUicsICfFlSc9PidyJywKCSAgICApKTsKCSovCgkkcHJlbm9tX2ZpbmFsID0gaW1wbG9kZSgnICcsJHByZW5vbSk7CgkvKgoJJHByZW5vbV9maW5hbCA9IHN0cnRyKCRwcmVub21fZmluYWwsIGFycmF5KAoJICAgICAgICAnxaAnPT4nUycsICfFoSc9PidzJywgJ8SQJz0+J0RqJywgJ8SRJz0+J2RqJywgJ8W9Jz0+J1onLCAnxb4nPT4neicsICfEjCc9PidDJywgJ8SNJz0+J2MnLCAnxIYnPT4nQycsICfEhyc9PidjJywKCSAgICAgICAgJ8OAJz0+J0EnLCAnw4EnPT4nQScsICfDgic9PidBJywgJ8ODJz0+J0EnLCAnw4QnPT4nQScsICfDhSc9PidBJywgJ8OGJz0+J0EnLCAnw4cnPT4nQycsICfDiCc9PidFJywgJ8OJJz0+J0UnLAoJICAgICAgICAnw4onPT4nRScsICfDiyc9PidFJywgJ8OMJz0+J0knLCAnw40nPT4nSScsICfDjic9PidJJywgJ8OPJz0+J0knLCAnw5EnPT4nTicsICfDkic9PidPJywgJ8OTJz0+J08nLCAnw5QnPT4nTycsCgkgICAgICAgICfDlSc9PidPJywgJ8OWJz0+J08nLCAnw5gnPT4nTycsICfDmSc9PidVJywgJ8OaJz0+J1UnLCAnw5snPT4nVScsICfDnCc9PidVJywgJ8OdJz0+J1knLCAnw54nPT4nQicsICfDnyc9PidTcycsCgkgICAgICAgICfDoCc9PidhJywgJ8OhJz0+J2EnLCAnw6InPT4nYScsICfDoyc9PidhJywgJ8OkJz0+J2EnLCAnw6UnPT4nYScsICfDpic9PidhJywgJ8OnJz0+J2MnLCAnw6gnPT4nZScsICfDqSc9PidlJywKCSAgICAgICAgJ8OqJz0+J2UnLCAnw6snPT4nZScsICfDrCc9PidpJywgJ8OtJz0+J2knLCAnw64nPT4naScsICfDryc9PidpJywgJ8OwJz0+J28nLCAnw7EnPT4nbicsICfDsic9PidvJywgJ8OzJz0+J28nLAoJICAgICAgICAnw7QnPT4nbycsICfDtSc9PidvJywgJ8O2Jz0+J28nLCAnw7gnPT4nbycsICfDuSc9Pid1JywgJ8O6Jz0+J3UnLCAnw7snPT4ndScsICfDvSc9Pid5JywgJ8O9Jz0+J3knLCAnw74nPT4nYicsCgkgICAgICAgICfDvyc9Pid5JywgJ8WUJz0+J1InLCAnxZUnPT4ncicsCgkgICAgKSk7CgkqLwoJJHJlc3VsdFswXSA9ICRub21fZmluYWw7CgkkcmVzdWx0WzFdID0gJHByZW5vbV9maW5hbDsKCXJldHVybiAkcmVzdWx0OwkKLy9lbmQgb2YgZnVuY3Rpb24KfQovLyBjZXR0ZSBmb25jdGlvbiByZWNoZXJjaGUgbGVzIHBvaW50cyBkZSBsYSBzaXR1YXRpb24gbWVuc3VlbGxlIGQndW4gam91ZXVyIGR1IGNsdWIgZHMgbGEgYmRkCnB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3NpdF9tZW5zKCRsaWNlbmNlLCAkbW9pc19ldmVudCwgJHNhaXNvbikKewoJZ2xvYmFsICRnQ21zOwoJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCSRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7Cgkkc2Fpc29uID0gJHBpbmctPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwoJJHF1ZXJ5ID0gIlNFTEVDVCBwb2ludHMgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2l0X21lbnMgV0hFUkUgbGljZW5jZSA9ID8gQU5EIG1vaXMgPSA/IEFORCBzYWlzb24gPSA/IjsKCSRkYi0+ZGVidWc9dHJ1ZTsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlLCRtb2lzX2V2ZW50LCRzYWlzb24pKTsKCS8vc2kgbGEgc2l0dWF0aW9uIG1lbnN1ZWxsZSBkdSBqb3VldXIgZHUgY2x1YiBuJ2V4aXN0ZSBwYXMgPwoJLy9hbG9ycyBvbiBuJ2VucmVnaXN0cmUgcGFzIGxlIHLDqXN1bHRhdCBldCBvbiBsZSBzaWduYWxlCgkJaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkKCQl7CgkJCS8vJGRlc2lnbmF0aW9uLj0iRWNhcnQgbm9uIGNhbGN1bMOpIjsKCQkJLy9zaSBvbiBlc3QgZGFucyBsZSBtb2lzIGFjdHVlbCBldCBsJyBhY2PDqHMgZXN0IGxpYnJlLCBhbG9ycyBvbiB2YSBjaGVyY2hlcgoJCQkkbW9pc19jb3VyYW50ID0gZGF0ZSgnbicpOwoJCQkkam91cl9jb3VyYW50ID0gZGF0ZSgnaicpOwoJCQlpZigkbW9pc19jb3VyYW50ID09ICRtb2lzX2V2ZW50ICYmICRqb3VyX2NvdXJhbnQgPj0gJHBpbmctPkdldFByZWZlcmVuY2UoJ2pvdXJfc2l0X21lbnMnKSkKCQkJewoJCQkJJHJldHJpZXZlID0gbmV3IHJldHJpZXZlX29wcygpOwoJCQkJJHJldG91cl9zaXRfbWVucyA9ICRyZXRyaWV2ZS0+cmV0cmlldmVfc2l0X21lbnMoJGxpY2VuY2UpOwoJCQl9CgkJCQoJCQkkcmV0b3VyX3NpdF9tZW5zID0gMDsKCQkJCgkJCQoJCX0KCQllbHNlCgkJewoJCQkkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJCQkkcmV0b3VyX3NpdF9tZW5zID0gJHJvd1sncG9pbnRzJ107CgkJfQoJcmV0dXJuICRyZXRvdXJfc2l0X21lbnM7Ci8vZW5kIG9mIGZ1bmN0aW9uCn0KcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzaXRfbWVucygkbGljZW5jZSkKewoJZ2xvYmFsICRnQ21zOwoJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCSRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7CgkkYW5uZWVfY291cmFudGUgPSBkYXRlKCdZJyk7Cgkkc2Fpc29uID0gJHBpbmctPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwoJJHF1ZXJ5ID0gIlNFTEVDVCBDT05DQVRfV1MoJy8nLG1vaXMsIGFubmVlKSBBUyBzaXRfbWVucyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyBXSEVSRSBsaWNlbmNlID0gPyBBTkQgYW5uZWUgPSA/IE9SREVSIEJZIG1vaXMgREVTQyBsaW1pdCAxIjsvL1NFTEVDVCBDT05DQVRfV1MoJy8nLG1vaXMsIGFubmVlKSBBUyBzaXRfbWVucywgREFURURJRkYoTk9XKCksZGF0ZW1haikgIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIFdIRVJFIGxpY2VuY2UgPSA/IEFORCBEQVRFRElGRihOT1coKSxkYXRlbWFqKSBJUyBOT1QgTlVMTCBPUkRFUiBCWSBEQVRFRElGRihOT1coKSxkYXRlbWFqKSBBU0MgTElNSVQgMSI7CgkvLyRkYi0+ZGVidWc9dHJ1ZTsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlLCRhbm5lZV9jb3VyYW50ZSkpOwoJLy9zaSBsYSBzaXR1YXRpb24gbWVuc3VlbGxlIGR1IGpvdWV1ciBkdSBjbHViIG4nZXhpc3RlIHBhcyA/CgkvL2Fsb3JzIG9uIG4nZW5yZWdpc3RyZSBwYXMgbGUgcsOpc3VsdGF0IGV0IG9uIGxlIHNpZ25hbGUKCQlpZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKQoJCXsKCQkJLy8kZGVzaWduYXRpb24uPSJFY2FydCBub24gY2FsY3Vsw6kiOwoJCQkkcmV0b3VyX3NpdF9tZW5zID0gMDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCQkJJHJldG91cl9zaXRfbWVucyA9ICRyb3dbJ3NpdF9tZW5zJ107CgkJfQoJcmV0dXJuICRyZXRvdXJfc2l0X21lbnM7Ci8vZW5kIG9mIGZ1bmN0aW9uCn0KLyoKcHVibGljIHN0YXRpYyBmdW5jdGlvbiBhcnJheV9jb2RlX2NvbXBldCgkaWRlcHJldXZlLCRkYXRlX2RlYnV0LCRkYXRlX2ZpbikKewoJZ2xvYmFsICRnQ21zOwoJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCSRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7CgkKCQkkcXVlcnk0ID0gIlNFTEVDVCBsaWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpY2lwZSBXSEVSRSBpZGVwcmV1dmUgPSA/IEFORCBkYXRlX2RlYnV0IEJFVFdFRU4gID8gQU5EID8iOwoJCSRkYnJlc3VsdGF0NCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnk0LGFycmF5KCRpZGVwcmV1dmUsICRkYXRlX2RlYnV0LCRkYXRlX2ZpbikpOwoJCgkKCSRyb3c0ID0gJGRicmVzdWx0YXQ0LT5HZXRSb3dzKCk7CgkkbGlnbmVzID0gJGRicmVzdWx0YXQ0LT5SZWNvcmRDb3VudCgpOwoJaWYoJGxpZ25lcyA+MCkKCXsKCQkKCQoJCS8vZWNobyAkbGlnbmVzLiI8YnIgLz4iOwoJCS8vZWNobyAkcm93NFsxXVtsaWNlbmNlXTsKCQkkbGljID0gYXJyYXkoKTsKCQkkaT0wOwoKCQlmb3IoJGk9MDskaTw9JGxpZ25lczskaSsrKQoJCXsKCQkJJHRhYlskaV0gPSAkcm93NFskaV1bJ2xpY2VuY2UnXTsKCQkKCQkJYXJyYXlfcHVzaCgkbGljLCR0YWJbJGldKTsKCQkJLy8kbGljZW4gPSBhcnJheSgpOwoJCQkvLyRsaWNlbiA9IHN1YnN0cihpbXBsb2RlKCIsICIsICRsaWMpLCAwLCAtMyk7CgkJCS8vJGxpY2VuID0gaW1wbG9kZSgiLCAiLCAkbGljKTsKCQl9CgkJcmV0dXJuICRsaWM7Cgl9Ci8vZW5kIG9mIGZ1bmN0aW9uCgp9CiovCnB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVsZXRlX3RlYW1yZXN1bHQoJHJlY29yZF9pZCkKICB7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwoKICAgIC8vTm93IHJlbW92ZSB0aGUgZW50cnkKICAgIAkkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzIFdIRVJFIGlkID0gPyI7CgkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmVjb3JkX2lkKSk7CgoKICB9CgpwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRpc3BsYXlfb25fZnJvbnRlbmQoJGlkKQogIHsKICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CgogICAgLy9Ob3cgcmVtb3ZlIHRoZSBlbnRyeQogICAgCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzIFNFVCBhZmZpY2hlID0gJzEnIFdIRVJFIGlkID0gPyI7CgkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaWQpKTsKCgogIH0KCnB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZG9fbm90X2Rpc3BsYXkoJHJlY29yZF9pZCkKICB7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwoKICAgIC8vTm93IHJlbW92ZSB0aGUgZW50cnkKICAgIAkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBTRVQgYWZmaWNoZSA9ICcwJyBXSEVSRSBpZCA9ID8iOwoJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJlY29yZF9pZCkpOwoKCiAgfQoKcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDYWxjdWxFY2FydCgkZWNhcnQpCnsKCWlmKCRlY2FydCA+PTAgJiYgJGVjYXJ0IDwgMjUpIHsgJGVjYXJ0ID0gMTsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTI1ICYmICRlY2FydCA8IDUwKXsgJGVjYXJ0ID0gMjsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTUwICYmICRlY2FydCA8IDEwMCl7ICRlY2FydCA9IDM7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPj0xMDAgJiYgJGVjYXJ0IDwgMTUwKXsgJGVjYXJ0ID0gNDsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTE1MCAmJiAkZWNhcnQgPCAyMDApeyAkZWNhcnQgPSA1OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0ID49MjAwICYmICRlY2FydCA8IDMwMCl7ICRlY2FydCA9IDY7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPj0zMDAgJiYgJGVjYXJ0IDwgNDAwKXsgJGVjYXJ0ID0gNzsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTQwMCAmJiAkZWNhcnQgPCA1MDApeyAkZWNhcnQgPSA4OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0ID49NTAwKXsgJGVjYXJ0ID0gOTsgcmV0dXJuICRlY2FydDsgfQoKCWVsc2VpZigkZWNhcnQgPiAtMjUgJiYgJGVjYXJ0IDwgMCl7JGVjYXJ0ID0gLTE7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPD0gLTI1ICYmICRlY2FydCA+IC01MCl7JGVjYXJ0ID0gLTI7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPD0gLTUwICYmICRlY2FydCA+IC0xMDApeyRlY2FydCA9IC0zOyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0IDw9IC0xMDAgJiYgJGVjYXJ0ID4gLTE1MCl7JGVjYXJ0ID0gLTQ7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPD0gLTE1MCAmJiAkZWNhcnQgPiAtMjAwKXskZWNhcnQgPSAtNTsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA8PSAtMjAwICYmICRlY2FydCA+IC0zMDApeyRlY2FydCA9IC02OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0IDw9IC0zMDAgJiYgJGVjYXJ0ID4gLTQwMCl7JGVjYXJ0ID0gLTc7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPD0gLTQwMCAmJiAkZWNhcnQgPiAtNTAwKXskZWNhcnQgPSAtODsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA8PSAtNTAwKXskZWNhcnQgPSAtOTsgcmV0dXJuICRlY2FydDsgfQp9CmZ1bmN0aW9uIHRhZygkaWQsJGlkZXByZXV2ZSwkaW5kaXZzLCRkYXRlX2RlYnV0ID0nJywkZGF0ZV9maW49JycpCnsKCQoJCQkkZGIgID0gY21zbXMoKS0+R2V0RGIoKTsKCQkJJHRhZyA9ICJ7UGluZyBhY3Rpb249JyI7CgkJCQoJCQlpZigkaW5kaXZzID09JzEnKQoJCQl7CgkJCQkkdGFnLj0iaW5kaXZpZHVlbGxlcyciOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHRhZy49InBhci1lcXVpcGVzJyI7CgkJCX0KCQkJJHRhZy49IiBpZGVwcmV1dmU9JyRpZGVwcmV1dmUnIjsKCQkJCgkJCQlpZihpc3NldCgkZGF0ZV9kZWJ1dCkgJiYgJGRhdGVfZGVidXQgIT0nJykKCQkJCXsKCQkJCQkkdGFnLj0gIiBkYXRlX2RlYnV0PSckZGF0ZV9kZWJ1dCciOwoJCQkJfQoJCQkJaWYoaXNzZXQoJGRhdGVfZmluKSAmJiAkZGF0ZV9maW4gIT0nJykKCQkJCXsKCQkJCQkkdGFnLj0gIiBkYXRlX2Zpbj0nJGRhdGVfZmluJyI7CgkJCQl9CgkJCSR0YWcuPSJ9IjsKCQkJCgkJCSRzcWxhcnJheSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIFNFVCB0YWcgPSA/IFdIRVJFIGlkID0gPyI7CgkJCSRkYi0+RXhlY3V0ZSgkc3FsYXJyYXksIGFycmF5KCR0YWcsJGlkKSk7CgkJCS8vdW5zZXQoJHRhZyk7CgkJCXJldHVybiAkdGFnOwoJCQoKCQkKCQp9CmZ1bmN0aW9uIGNyZWF0ZV90YWcoJGlkZXByZXV2ZSwkaW5kaXZzLCRkYXRlX2RlYnV0LCRkYXRlX2ZpbikKewoJCgkJCSRkYiAgPSBjbXNtcygpLT5HZXREYigpOwoJCQkkdGFnID0gIntQaW5nIGFjdGlvbj0nIjsKCQkJCgkJCWlmKCRpbmRpdnMgPT0nMScpCgkJCXsKCQkJCSR0YWcuPSJpbmRpdmlkdWVsbGVzJyI7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkdGFnLj0icGFyLWVxdWlwZXMnIjsKCQkJfQoJCQkkdGFnLj0iIGlkZXByZXV2ZT0nJGlkZXByZXV2ZSciOwoJCQkKCQkJCWlmKGlzc2V0KCRkYXRlX2RlYnV0KSAmJiAkZGF0ZV9kZWJ1dCAhPScnKQoJCQkJewoJCQkJCSR0YWcuPSAiIGRhdGVfZGVidXQ9JyRkYXRlX2RlYnV0JyI7CgkJCQl9CgkJCQlpZihpc3NldCgkZGF0ZV9maW4pICYmICRkYXRlX2ZpbiAhPScnKQoJCQkJewoJCQkJCSR0YWcuPSAiIGRhdGVfZmluPSckZGF0ZV9maW4nIjsKCQkJCX0KCQkJJHRhZy49In0iOwoJCQkKCQkJcmV0dXJuICR0YWc7CgkJCgoJCQoJCn0KCmZ1bmN0aW9uIHRhZ19lcXVpcGUoJHJlY29yZF9pZCkKewoJCgkJCSRkYiAgPSBjbXNtcygpLT5HZXREYigpOwoJCQkkdGFnID0gIntQaW5nIGFjdGlvbj0nZXF1aXBlJyI7CQkJCgkJCSR0YWcuPSIgcmVjb3JkX2lkPSckcmVjb3JkX2lkJyI7CQkJCQoJCQkkdGFnLj0ifSI7CgkJCQoJCQlyZXR1cm4gJHRhZzsJCQoJCn0KCnB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29lZmYgKCR0eXBlQ29tcGV0aXRpb24pCnsKCSRkYiAgPSBjbXNtcygpLT5HZXREYigpOwoJJHF1ZXJ5ID0iU0VMRUNUIGNvZWZmaWNpZW50IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIFdIRVJFIG5hbWUgPSA/IjsKCQkkZGJyZXRvdXIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdHlwZUNvbXBldGl0aW9uKSk7CgoJCQlpZiAoJGRicmV0b3VyICYmICRkYnJldG91ci0+UmVjb3JkQ291bnQoKSA+IDApCgkJICAJewoJCSAgICAJCXdoaWxlICgkcm93PSAkZGJyZXRvdXItPkZldGNoUm93KCkpCgkJICAgICAgCQl7CgkJCQkJJGNvZWZmID0gJHJvd1snY29lZmZpY2llbnQnXTsKCQkJCQkvL3JldHVybiAkY29lZmY7CgkJCQl9CgkKCQkJfQoJCQkKCQoJcmV0dXJuICRjb2VmZjsJCQoJCn0KCnB1YmxpYyBmdW5jdGlvbiBjb2VmZl9vcHMoJHJlY29yZF9pZCwgJGNvZWZmKQogIHsKCS8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwoJCglnbG9iYWwgJGdDbXM7CiAgICAJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgIAkvLyRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7CgkvL3JlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmNhbGN1bHMucGhwJyk7CgkvL2VjaG8gJHJlY29yZF9pZDsKCS8vZWNobyAkY29lZmY7CiAgICAJLy9PbiByw6ljdXDDqHJlIGxlcyBpbmZvcyBkZSBsJ2VucmVnaXN0cmVtZW50CiAgICAJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBXSEVSRSBpZCA9ID8iOwoJLy9lY2hvICRxdWVyeTsKICAgIAkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmVjb3JkX2lkKSk7CgoJCQoJCgkJd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJCgkJCSR2aWN0b2lyZSA9ICRyb3dbJ3ZpY3RvaXJlJ107CgkJCSRlY2FydCA9ICRyb3dbJ3R5cGVfZWNhcnQnXTsKCQkJZWNobyAkdmljdG9pcmU7CgkJCWVjaG8gJGVjYXJ0OwoJCQkkcG9pbnRzMSA9IHBpbmdfYWRtaW5fb3BzOjpDYWxjdWxQb2ludHNJbmRpdnMoJGVjYXJ0LCR2aWN0b2lyZSk7CgkJCS8vJGNvZWZmID0gJzEuMDAnOwoJCQkkcG9pbnRyZXMgPSAkcG9pbnRzMSokY29lZmY7CgkJCWVjaG8gJGNvZWZmOwoJCQllY2hvICRwb2ludHJlczsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgIAkJCSRxdWVyeTMgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgU0VUIGNvZWZmID0gPywgcG9pbnRyZXMgPSA/IFdIRVJFIGlkID0gPyI7CiAgICAJCQkkZGJyZXN1bHQyID0gJGRiLT5FeGVjdXRlKCRxdWVyeTMsIGFycmF5KCRjb2VmZiwgJHBvaW50cmVzLCAkcmVjb3JkX2lkKSk7CgkgICAgICAgIAoJCQkJaWYoISRkYnJlc3VsdDIpCgkJCQl7CgkJCQkJJGRlc2lnbmF0aW9uID0gJGRiLT5FcnJvck1zZygpOwoJCQkJCSRzdGF0dXMgPSAnRWNoZWMnOwoJCQkJCSRhY3Rpb24gPSAnbWFzc19kZWxldGUgdXBkYXRlIHJlY3VwJzsKCQkJCQkkcXVlcnk0ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cCAoaWQsIHN0YXR1cywgZGVzaWduYXRpb24sIGFjdGlvbikgVkFMVUVTICgnJywgPywgPywgPykiOwoJCQkJCSRkYnJlc3VsdDMgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5NCwgYXJyYXkoJHN0YXR1cywgJGRlc2lnbmF0aW9uLCAkYWN0aW9uKSk7CgkJCQl9CiAgICAgICAgICAgICAgICAKCQl9Ly9maW4gZHUgd2hpbGUKICAJCgoKICB9Ly9maW4gZGUgbGEgZm9uY3Rpb24KCgpwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVyYXNlX3NwaWQgKCAkaWQsICRjb2VmZl9mZnR0LCAkbnVtam91cm5fZmZ0dCwgJHBvaW50c19mZnR0KQp7CgkkZGIgPSBjbXNtcygpLT5HZXREYigpOwoJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIFNFVCBudW1qb3VybiA9ID8sIGNvZWZmID0gPywgcG9pbnRyZXMgPSA/IFdIRVJFIGlkID0gPyI7CgkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbnVtam91cm5fZmZ0dCwgJGNvZWZmX2ZmdHQsJHBvaW50cmVzX2ZmdHQpKTsKfQoKcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWxldGVfam91cm5hbCgkam91cm5hbGlkKQogIHsKICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CgogICAgLy9Ob3cgcmVtb3ZlIHRoZSBlbnRyeQogICAgJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cCBXSEVSRSBpZCA9ID8iOwogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGpvdXJuYWxpZCkpOwoKICAgIAogIH0KCgp9IC8vIGVuZCBvZiBjbGFzcwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.retrieve_ops.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKCgpjbGFzcyByZXRyaWV2ZV9vcHMKewogIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkge30KCgojIwojIwpwdWJsaWMgZnVuY3Rpb24gcmV0cmlldmVfcGFydGllc19zcGlkMiggJGxpY2VuY2UgKQogIHsKCWdsb2JhbCAkZ0NtczsKCSRkYiA9IGNtc21zKCktPkdldERiKCk7CgkvL2VjaG8gImNvb2wgISI7CgkkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwoJLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5jYWxjdWxzLnBocCcpOwoJLy9lY2hvICJnbG9wMiI7CgkkZGVzaWduYXRpb24gPSAiIjsKCSRzYWlzb25fY291cmFudGUgPSAkcGluZy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7Cgkkbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CgkkYXVqb3VyZGh1aSA9IGRhdGUoJ1ktbS1kJyk7CgkvLyRlcnJvciA9IDA7Ly9sZSBjb21wdGV1ciBkJ2VycmV1cnMKCSRxdWVyeSA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJywgbm9tLCBwcmVub20pIEFTIHBsYXllcixjYXQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSBsaWNlbmNlID0gPyI7CgkkZGJyZXRvdXIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSkpOwoJaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQoJewoJICAgIHdoaWxlICgkcm93PSAkZGJyZXRvdXItPkZldGNoUm93KCkpCgkJewoJCSRwbGF5ZXIgPSAkcm93WydwbGF5ZXInXTsKCQkkY2F0ID0gJHJvd1snY2F0J107CgkJLy9vbiB2ZXV0IHNhdm9pciBzaSBsZSBqb3VldXIgZXN0IHNlbmlvciBvdSBwYXMKCQkvL2NhciBwb3VyIGxlcyBpbmRpdnMsIGxlIGNvZWZmIGVzdCBkaWZmw6lyZW50CgkJaWYoc3Vic3RyKCRjYXQsMCwxKSA9PSdTJyB8fCBzdWJzdHIoJGNhdCwwLDEpID09J1YnKQoJCXsKCQkJJHNlbmlvciA9IDE7CgkJfQoJCWVsc2UKCQl7CgkJCSRzZW5pb3IgPSAwOwoJCX0KCQkvL2VjaG8gInNlbmlvciA/Ii4kc2VuaW9yOwoJCSRzZXJ2aWNlID0gbmV3IFNlcnZpY2VuKCk7CgkJJHBhZ2UgPSAieG1sX3BhcnRpZSI7CgkJJHZhciA9ICJudW1saWM9Ii4kbGljZW5jZTsKCQkkbGllbiA9ICRzZXJ2aWNlLT5HZXRMaW5rKCRwYWdlLCAkdmFyKTsKCQkvL2VjaG8gIjxhIGhyZWY9Ii4kbGllbi4iPiIuJGxpZW4uIjwvYT4iOwoJCSR4bWwgICA9IHNpbXBsZXhtbF9sb2FkX3N0cmluZygkbGllbiwgJ1NpbXBsZVhNTEVsZW1lbnQnLCBMSUJYTUxfTk9DREFUQSk7CgkJLy92YXJfZHVtcCgkeG1sKTsKCQkkYXJyYXlfcG9pbnRzID0gYXJyYXkoKTsKCQkKCQlpZigkeG1sID09PSBGQUxTRSkKCQl7CgkJCS8vZWNobyAibGUgdGFibGVhdSByZW52b2l0IHVuZSBlcnJldXIiOwoJCQkkYXJyYXkgPSAwOwoJCQkkbGlnbmVzID0gMDsKCQl9CgkJZWxzZQoJCXsKCQkJJGFycmF5ID0ganNvbl9kZWNvZGUoanNvbl9lbmNvZGUoKGFycmF5KSR4bWwpLCBUUlVFKTsKCQkJJGxpZ25lcyA9IGNvdW50KCRhcnJheVsncmVzdWx0YXQnXSk7CgkJCS8vZWNobyAibGUgbmIgZGUgbGlnbmVzIGVzdCAgOiIuJGxpZ25lczsKCQl9CgoJCS8vb24gY29tcHRlIGxlIG5iIGRlIHLDqXN1bHRhdHMgZHUgc3BpZCBwcsOpc2VudCBkcyBsYSBiZGQgcG91ciBsZSBqb3VldXIKCQkkc3BpZCA9IHBpbmdfYWRtaW5fb3BzOjpjb21wdGVfc3BpZCgkbGljZW5jZSk7CgkJJHNwaWRfZXJyb3JzID0gcGluZ19hZG1pbl9vcHM6OmNvbXB0ZV9zcGlkX2Vycm9ycygkbGljZW5jZSk7CgkJLy9lY2hvICRzcGlkLiIgbGlnbmVzIGRhbnMgbGUgc3BpZCI7CgkJCgkJCS8qaWYoIWlzX2FycmF5KCRhcnJheSkpCgkJCXsKCgkJCQkkbWVzc2FnZSA9ICJTZXJ2aWNlIGNvdXDDqSBwb3VyICIuJHBsYXllcjsgCgkJCQkkc3RhdHVzID0gJ0VjaGVjJzsKCQkJCSRkZXNpZ25hdGlvbiA9ICRtZXNzYWdlOwoJCQkJJGFjdGlvbiA9ICJtYXNzX2FjdGlvbiI7CgkJCQlwaW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsICRkZXNpZ25hdGlvbiwkYWN0aW9uKTsKCQkJCQoJCQl9CgkJCSovCgkJCWlmKCRsaWduZXMgPD0gJHNwaWQpCgkJCXsKCQkJCSRtZXNzYWdlID0gIlLDqXN1bHRhdHMgU1BJRCDDoCBqb3VyIHBvdXIgIi4kcGxheWVyLiIgOiAiLiRzcGlkLiIgZW4gYmFzZSBkZSBkb25uw6llcyAiLiRsaWduZXMuIiBlbiBsaWduZS4iOyAKCQkJCSRzdGF0dXMgPSAnRWNoZWMnOwoJCQkJJGRlc2lnbmF0aW9uLj0gJG1lc3NhZ2U7CgkJCQkkYWN0aW9uID0gIm1hc3NfYWN0aW9uIjsKCQkJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywgJGRlc2lnbmF0aW9uLCRhY3Rpb24pOwoJCQkJLyoKCQkJCWlmKCRsaWduZXMgPT0gJHNwaWQpCgkJCQl7CgkJCQkqLwoJCQkJCSRxdWVyeTQgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIFNFVCBtYWpfc3BpZCA9ID8gV0hFUkUgbGljZW5jZSA9ID8gQU5EIHNhaXNvbiA9ID8iOwoJCQkJCSRkYnJlc3VsdDQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5NCxhcnJheSgkYXVqb3VyZGh1aSwkbGljZW5jZSwkc2Fpc29uX2NvdXJhbnRlKSk7CgkJCQkvKgoJCQkJfQoJCQkJKi8KCQkJCQoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJGkgPSAwOwoJCQkJJGNvbXB0ZXVyID0gMDsvLyBjZSBjb21wdGV1ciBjb21wdGUgbGUgbmIgdG90YWwgZCdpdMOpcmF0aW9uIGRhbnMgbGEgYm91Y2xlCgkJCQkkYSA9IDA7Ly9jZSBjb21wdGV1ciBzZXJ0IGF1IHBhcnRpZXMgbm9uIHLDqWN1cMOpcsOpZXMgcGFyIHNpdCBtZW5zIHZpZGUKCQkJCS8vb24gdmEgY29tcHRlciBsZXMgZXJyZXVycwoJCQkJLy9vbiBpbml0aWFsaXNlIHVuIHRhYmxlYXUgcG91ciDDqXZpdGVyIGRlIGZhaXJlIGRlcyByZXF1ZXRlcyByZWRvbmRhbnRlcwoJCQkJJGFycmF5X2NsYXNzZW1lbnQgPSBhcnJheSgpOwoJCQkJLy9vbiB2YSBmYWlyZSB1bmUgbm91dmVsbGUgY29uZGl0aW9ubmVsbGUgcG91ciBkw6l0ZXJtaW5lciBzaSBvbiByw6ljdXDDqHJlIGxlcyByw6lzdWx0YXRzIGR1IG1vaXMgZW4gY291cnMgc2V1bGVtZW50IG91IG5vbgoJCQkJJHF1ZXJ5MSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIFdIRVJFIHNhaXNvbiA9ID8gQU5EIGxpY2VuY2UgPSA/IjsKCQkJCSRkYnJlc3VsdDEgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MSwgYXJyYXkoJHNhaXNvbl9jb3VyYW50ZSwgJGxpY2VuY2UpKTsKCQkJLy8JZm9yZWFjaCgkYXJyYXkgYXMgJGNsZSA9PiR0YWIpCgkJCQlmb3JlYWNoKCR4bWwgYXMgJGNsZT0+ICR0YWIpCgkJCQl7CgkJCQkJLy92YXJfZHVtcCgkYXJyYXkpOwoJCQkJCQoJCQkJCSRjb21wdGV1cisrOwoJCQkJCSRlcnJvciA9IDA7Ly9vbiBpbnN0YW5jaWUgdW4gY29tcHRldXIgZCdlcnJldXJzCgkJCQkJCgkJCQkJLy9vbiBzeW50aMOpdGlzZSB0b3VzIGxlcyDDqWzDqW1lbnRzIMOgIHLDqWN1cMOpcmVyCgkJCQkJLy9vbiBmZXJhIHVuIMOpdmVudHVlbCB0cmFpdGVtZW50IGVuc3VpdGUKCQkJCQkkZGF0ZWV2ZW50ID0gKGlzc2V0KCR0YWItPmRhdGUpPyIkdGFiLT5kYXRlIjoiIik7Ly8kdGFiWydkYXRlJ107CgkJCQkJJG5vbSA9IChpc3NldCgkdGFiLT5ub20pPyIkdGFiLT5ub20iOiIiKTsvLyR0YWJbJ25vbSddOwoJCQkJCSRjbGFzc2VtZW50ID0gKGlzc2V0KCR0YWItPmNsYXNzZW1lbnQpPyIkdGFiLT5jbGFzc2VtZW50IjoiIik7CgkJCQkJJGVwcmV1dmUgPSAoaXNzZXQoJHRhYi0+ZXByZXV2ZSk/IiR0YWItPmVwcmV1dmUiOiIiKTsKCQkJCQkkdmljdG9pcmUgPSAoaXNzZXQoJHRhYi0+dmljdG9pcmUpPyIkdGFiLT52aWN0b2lyZSI6IiIpOwoJCQkJCSRmb3JmYWl0ID0gKGlzc2V0KCR0YWItPmZvcmZhaXQpPyIkdGFiLT5mb3JmYWl0IjoiIik7CgkJCQkJJGVwcmV1dmUgPSAoaXNzZXQoJHRhYi0+ZXByZXV2ZSk/IiR0YWItPmVwcmV1dmUiOiIiKTsvLyR0YWJbJ2VwcmV1dmUnXTsKCQkJCQkkdmljdG9pcmUgPSAoaXNzZXQoJHRhYi0+dmljdG9pcmUpPyIkdGFiLT52aWN0b2lyZSI6IiIpOwoJCQkJCSRmb3JmYWl0ID0gKGlzc2V0KCR0YWItPmZvcmZhaXQpPyIkdGFiLT5mb3JmYWl0IjoiIik7CgkJCQkJCgkJCQkJJHJldG91cl9zaXRfbWVucyA9IDA7CgkJCQkJLy9vbiBwZXV0IGTDqXNvcm1haXMgZmFpcmUgbGVzIHRyYWl0ZW1lbnRzCgkJCQkJLy9vbiB2YSBkJ2Fib3JkIGZhaXJlIGRpZmbDqXJlbnRzIHRyYWl0ZW1lbnRzIGV0IHNpIHBhcyBwb3NzaWJsZQoJCQkJCS8vb24gaW5jcsOpbWVudGVyYSBsZSBjb21wdGV1ciBkJ2VycmV1cnMgJGVycm9yOwoJCQkJCQoJCQkJCS8vZWNobyAibGUgZGF0ZWV2ZW50IGVzdCA6ICIuJGRhdGVldmVudDsKCQkJCQkkY2hndCA9IGV4cGxvZGUoIi8iLCRkYXRlZXZlbnQpOwoJCQkJCSRkYXRlX2V2ZW50ID0gJGNoZ3RbMl0uIi0iLiRjaGd0WzFdLiItIi4kY2hndFswXTsKCQkJCQkkYW5uZWUgPSAnMjAnLiRjaGd0WzJdOwoJCQkJCSRkYXRlX215c3FsID0gJGFubmVlLictJy4kY2hndFsxXS4nLScuJGNoZ3RbMF07CgkJCQkJCQoJCQkJCQkvL2NpLWRlc3NvdXMgLCBvbiByZWdhcmRlIGxlIGZvcm1hdCBkdSBtb2lzIHLDqWN1cMOpcsOpCgkJCQkJCS8vbGVzIG1vaXMgcsOpY3Vww6lyw6lzIGNvbXBvcnRlbnQgZGVzIHrDqXJvcyBpbml0aWF1eCBleCAwMSBwb3VyIGphbnZpZXIKCQkJCQkJaWYgKHN1YnN0cigkY2hndFsxXSwgMCwxKT09MCkKCQkJCQkJewoJCQkJCQkJJG1vaXNfZXZlbnQgPSBzdWJzdHIoJGNoZ3RbMV0sIDEsMSk7CgkJCQkJCQkvL2VjaG8gImxhIGRhdGUgZXN0Ii4kZGF0ZV9ldmVudDsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSRtb2lzX2V2ZW50ID0gJGNoZ3RbMV07CgkJCQkJCX0KCQkJCQkJLy9lY2hvICJsZSBtb2lzIGVzdCA6ICIuJG1vaXNfZXZlbnQ7CgkJCQkJLy9vbiB2YSB2w6lyaWZpZXIgc2kgb24gYSBsYSBzaXR1YXRpb24gbWVuc3VlbGxlIGR1IGpvdWV1ciBkdSBjbHViIMOgIGpvdXIgcG91ciBsZSBtb2lzIGVuIHF1ZXN0aW9uCgkJCQkJLy9vbiBsYSBtZXQgZGFucyB1biB0YWJsZWF1IHBvdXIgw6l2aXRlciB1bmUgbm91dmVsbGUgcmVxdWV0ZSBpZGVudGlxdWUKCQkJCQkvL2lmKGluX2FycmF5KCkpCgkJCQkJLy9vbiBpbnRlcnJvZ2UgbGUgdGFibGVhdSBhcnJheV9jbGFzc2VtZW50IGF2YW50IGRlIGZhaXJlIGxhIHJlcXVldGUKCQkJCQoJCQkJCSRyZXRvdXJfc2l0X21lbnMgPSBwaW5nX2FkbWluX29wczo6Z2V0X3NpdF9tZW5zKCRsaWNlbmNlLCRtb2lzX2V2ZW50LCRzYWlzb25fY291cmFudGUpOwoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCWlmKCRyZXRvdXJfc2l0X21lbnM9PTApCgkJCQkJewoJCQkJCQkkZGVzaWduYXRpb24uPSJTaXR1YXRpb24gZHUgbW9pcyAiLiRtb2lzX2V2ZW50LiIgbWFucXVhbnRlIHBvdXIgIi4kcGxheWVyOwoJCQkJCQkkYSsrOwoJCQkJCQkkZXJyb3IrKzsKCQkJCQkJCgkJCQkJfQoJCQkJCQkKCQkJCQkJCgkJCQkJCS8vZWNobyAibGUgbm9tIGVzdCA6ICIuJG5vbTsKCQkJCQkJLy9vbiBhZGFwdGUgc29uIG5vbSBkJ2Fib3JkCgkJCQkJCSRub21fZ2xvYmFsID0gcGluZ19hZG1pbl9vcHM6OmdldF9uYW1lKCRub20pOy8vdW5lIGZvbmN0aW9uIHF1aSBwZXJtZXQgZCdleHRyYWlyZSBsZSBub20gZXQgbGUgcHLDqW5vbQoJCQkJCQkkbm9tX3JlZWwxID0gJG5vbV9nbG9iYWxbMF07CgkJCQkJCSRub21fcmVlbCA9IGFkZHNsYXNoZXMoJG5vbV9nbG9iYWxbMF0pOy8vbGUgbm9tCQkJCQkKCQkJCQkJJHByZW5vbV9yZWVsID0gJG5vbV9nbG9iYWxbMV07Ly9sZSBwcsOpbm9tCgkJCQkJCSRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKCQkJCQkKCQkJCQkvL2NsYXNzZW1lbnQgZm91cm5pIHBhciBsZSBzcGlkCgkJCQkJCSRjbGEgPSBzdWJzdHIoJGNsYXNzZW1lbnQsIDAsMSk7CgkJCQkJCQkvL0F2ZWMgbGUgbm9tIG9uIHZhIGFsbGVyIGNoZXJjaGVyIGxhIHNpdHVhdGlvbiBtZW5zdWVsbGUgZGUgbCdhZHZlcnNhaXJlCgkJCQkJCQkvL29uIHBvdXJyYSBsYSBzdG9ja2VyIHBvdXIgcXUnZWxsZSByZS1zZXJ2ZSBldCBsJ3V0aWxpc2VyIHBvdXIgYWZmaW5lciBsZSBjYWxjdWwgZGVzIHBvaW50cwoJCQkJCQkJLy9kJ2Fib3JkIG9uIHZhIGNoZXJjaGVyIGRzIGxhIGJkZCBzaSBsJ2FkdmVyc2FpcmUgeSBlc3QgZMOpasOgIHBvdXIgbGUgbW9pcyBldCBsYSBzYWlzb24gZW4gcXVlc3Rpb24KCQkJCQkJCSRxdWVyeTQgPSAiU0VMRUNUIHBvaW50cyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19hZHZlcnNhaXJlcyBXSEVSRSBub20gPSA/IEFORCBwcmVub20gPSA/IEFORCBtb2lzID0gPyBBTkQgYW5uZWUgPSA/IjsKCQkJCQkJCS8vZWNobyAkcXVlcnk0Lic8YnIgLz4nOwoJCQkJCQkJJGRicmVzdWx0NCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnk0LCBhcnJheSgkbm9tX3JlZWwxLCAkcHJlbm9tX3JlZWwsJG1vaXNfZXZlbnQsJGFubmVlX2NvdXJhbnRlKSk7CgoJCQkJCQkJCWlmKCRkYnJlc3VsdDQgJiYgJGRicmVzdWx0NC0+UmVjb3JkQ291bnQoKT4wICYmICRkYnJlc3VsdDQtPlJlY29yZENvdW50KCkgPDIpLy9vayBvbiBhIHVuIGVucmVnaXN0cmVtZW50IHF1aSBjb3JyZXNwb25kCgkJCQkJCQkJewoJCQkJCQkJCQkkcm93NCA9ICRkYnJlc3VsdDQtPkZldGNoUm93KCk7CgkJCQkJCQkJCSRuZXdjbGFzcyA9ICRyb3c0Wydwb2ludHMnXTsKCQkJCQkJCQl9CgkJCQkJCQkJLy9kZXV4acOobWUgY2FzIDogCgkJCQkJCQkJLy9vbiBuJ2EgcGFzIGQnZW5yZWdpc3RyZW1lbnQgZXQgb24gZXN0IGRhbnMgbGUgbW9pcyBjb3VyYW50IGV0IGwnYW5uw6llIGNvdXJhbnRlIDogb24gdmEgY2hlcmNoZXIgbGVzIHBvaW50cyBhdmVjIGxhIGNsYXNzZSBwb3VyIGVuc3VpdGUgbCdpbnPDqXJlciBkcyBsYSBiZGQKCQkJCQkJCQllbHNlaWYoJGRicmVzdWx0NC0+UmVjb3JkQ291bnQoKT09MCAmJiAkbW9pc19ldmVudCA9PSBkYXRlKCduJykgJiYgJGFubmVlID09IGRhdGUoJ1knKSkKCQkJCQkJCQl7CgkJCQkJCQkJCS8vb24gdmEgY2hlcmNoZXIgbGEgc2l0IG1lbnMgZHUgcG9uZ2lzdGUKCQkJCQkJCQkKCgkJCQkJCQkJCSRzZXJ2aWNlID0gbmV3IFNlcnZpY2UoKTsKCQkJCQkJCQkJJHJlc3VsdGF0ID0gJHNlcnZpY2UtPmdldEpvdWV1cnNCeU5hbWUoIiRub21fcmVlbCIsICRwcmVub20gPSIkcHJlbm9tX3JlZWwiKTsKCQkJCQkJCQkJLy92YXJfZHVtcCgkcmVzdWx0YXQpOwoJCQkJCQkJCQlpZihpc19hcnJheSgkcmVzdWx0YXQpICYmIGNvdW50KCRyZXN1bHRhdCk+MCAmJiBjb3VudCgkcmVzdWx0YXQpPDIpCgkJCQkJCQkJCXsvL29uIGEgYmllbiB1biB0YWJsZWF1IGF2ZWMgYXUgbW9pbnMgdW4gw6lsw6ltZW50IDogYydlc3Qgb2sgIQoKCQkJCQkJCQkJCS8vb24gYSB1biByw6lzdWx0YXQgPwoJCQkJCQkJCQkJLy9lY2hvICJHbG9wIjsKCQkJCQkJCQkJCS8vJGNvbXB0ZXVyKys7CgkJCQkJCQkJCQkkbGljZW4gPSAkcmVzdWx0YXRbMF1bJ2xpY2VuY2UnXTsvL29uIGEgYmllbiB1biBudW3DqXJvIGRlIGxpY2VuY2UsIG9uIHBldXQgZG9uYyByw6ljdXDDqXJlciBsYSBzaXR1YXRpb24gbWVuc3VlbGxlIGVuIGNvdXJzCgkJCQkJCQkJCQkvL2VjaG8gJGxpY2VuLic8YnIgLz4nOwoJCQkJCQkJCQkJJHNlcnZpY2UgPSBuZXcgU2VydmljZSgpOwoJCQkJCQkJCQkJJHJlc3VsdGF0MiA9ICRzZXJ2aWNlLT5nZXRKb3VldXIoIiRsaWNlbiIpOwoKCQkJCQkJCQkJCWlmKGlzX2FycmF5KCRyZXN1bHRhdDIpICYmIGNvdW50KCRyZXN1bHRhdDIpPjApCgkJCQkJCQkJCQl7CgkJCQkJCQkJCQkJJGxpY2VuY2UyID0gJHJlc3VsdGF0MlsnbGljZW5jZSddOwoJCQkJCQkJCQkJCSRub20gPSAkcmVzdWx0YXQyWydub20nXTsKCQkJCQkJCQkJCQkvL2VjaG8gJ2F1dHJlIG5vbSA6ICcuJG5vbSAuJyAnLiRwcmVub207CgkJCQkJCQkJCQkJJHByZW5vbSA9ICRyZXN1bHRhdDJbJ3ByZW5vbSddOwoJCQkJCQkJCQkJCSRuYXRpbyA9ICRyZXN1bHRhdDJbJ25hdGlvJ107CgkJCQkJCQkJCQkJJGNsZ2xvYiA9ICRyZXN1bHRhdDJbJ2NsZ2xvYiddOwoJCQkJCQkJCQkJCSRwb2ludCA9ICRyZXN1bHRhdDJbJ3BvaW50J107CgkJCQkJCQkJCQkJJGFjbGdsb2IgPSAkcmVzdWx0YXQyWydhY2xnbG9iJ107CgkJCQkJCQkJCQkJJGFwb2ludCA9ICRyZXN1bHRhdDJbJ2Fwb2ludCddOwoJCQkJCQkJCQkJCSRjbG5hdCA9ICRyZXN1bHRhdDJbJ2NsbmF0J107CgkJCQkJCQkJCQkJJGNhdGVnID0gJHJlc3VsdGF0MlsnY2F0ZWcnXTsKCQkJCQkJCQkJCQkkcmFuZ3JlZyA9ICRyZXN1bHRhdDJbJ3JhbmdyZWcnXTsKCQkJCQkJCQkJCQkkcmFuZ2RlcCA9ICRyZXN1bHRhdDJbJ3JhbmdkZXAnXTsKCQkJCQkJCQkJCQkkdmFsY2xhID0gJHJlc3VsdGF0MlsndmFsY2xhJ107CgkJCQkJCQkJCQkJJGNscHJvID0gJHJlc3VsdGF0MlsnY2xwcm8nXTsKCQkJCQkJCQkJCQkkdmFsaW5pdCA9ICRyZXN1bHRhdDJbJ3ZhbGluaXQnXTsKCQkJCQkJCQkJCQkkcHJvZ21vaXMgPSAkcmVzdWx0YXQyWydwcm9nbW9pcyddOwoJCQkJCQkJCQkJCSRwcm9nYW5uID0gJHJlc3VsdGF0MlsncHJvZ2FubiddOwoJCQkJCQkJCQkJCSRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKCQkJCQkJCQkJCQkvL29uIGluc8OocmUgbGUgdG91dCBkYW5zIGxhIGJkZAoJCQkJCQkJCQkJCSRxdWVyeTUgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2FkdmVyc2FpcmVzIChpZCxkYXRlY3JlYXRlZCwgZGF0ZW1haiwgbW9pcywgYW5uZWUsIGxpY2VuY2UsIG5vbSwgcHJlbm9tLCBwb2ludHMsIGNsbmF0LCByYW5ncmVnLHJhbmdkZXAsIHByb2dtb2lzKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkJCQkJCQkJCQkJLy9lY2hvICRxdWVyeTU7CgkJCQkJCQkJCQkJJGRicmVzdWx0YXQ1ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTUsYXJyYXkoJG5vdywkbm93LCRtb2lzX2V2ZW50LCAkYW5uZWVfY291cmFudGUsICRsaWNlbmNlMiwgJG5vbSwgJHByZW5vbSwgJHBvaW50LCAkY2xuYXQsICRyYW5ncmVnLCAkcmFuZ2RlcCwgJHByb2dtb2lzKSk7CgkJCQkJCQkJCQkJCS8vT24gdsOpcmlmaWUgcXVlIGwnaW5zZXJ0aW9uIHNlIHBhc3NlIGJpZW4KCQkJCQkJCQkJCQkkbmV3Y2xhc3MgPSAkcG9pbnQ7CgkJCQkJCQkJCQl9CgkJCQkJCQkJCQllbHNlCgkJCQkJCQkJCQl7CgkJCQkJCQkJCQkJaWYoJGNsYSA9PSAnTicpewoJCQkJCQkJCQkJCQkkbmV3Y2xhc3NlbWVudCA9IGV4cGxvZGUoJy0nLCAkY2xhc3NlbWVudCk7CgkJCQkJCQkJCQkJCSRuZXdjbGFzcyA9ICRuZXdjbGFzc2VtZW50WzFdOwoJCQkJCQkJCQkJCX0KCQkJCQkJCQkJCQllbHNlIAoJCQkJCQkJCQkJCXsKCQkJCQkJCQkJCQkJJG5ld2NsYXNzID0gJGNsYXNzZW1lbnQ7CgkJCQkJCQkJCQkJfQoJCQkJCQkJCQkJfQoKCgkJCQkJCQkJCX0KCQkJCQkJCQkJZWxzZQoJCQkJCQkJCQl7CgkJCQkJCQkJCQlpZihjb3VudCgkcmVzdWx0YXQpPjEpLy9ob21vbnltaWUsIGV0Yy4uLgoJCQkJCQkJCQkJewoJCQkJCQkJCQkJCSRkZXNpZ25hdGlvbi49IkhvbW9ueW1pZSBwb3VyICIuJHBsYXllcjsKCQkJCQkJCQkJCQkkZXJyb3IrKzsKCQkJCQkJCQkJCX0KCQkJCQkJCQkJCS8vZWNobyAiUGFzIEdsb3AiOwoJCQkJCQkJCQkJaWYoJGNsYSA9PSAnTicpewoJCQkJCQkJCQkJJG5ld2NsYXNzZW1lbnQgPSBleHBsb2RlKCctJywgJGNsYXNzZW1lbnQpOwoJCQkJCQkJCQkJJG5ld2NsYXNzID0gJG5ld2NsYXNzZW1lbnRbMV07CgkJCQkJCQkJCQl9CgkJCQkJCQkJCQllbHNlIAoJCQkJCQkJCQkJewoJCQkJCQkJCQkJCSRuZXdjbGFzcyA9ICRjbGFzc2VtZW50OwoJCQkJCQkJCQkJfQoJCQkJCQkJCQl9Ly9maW4gZHUgaWYgaXNfYXJyYXkoJHJlc3VsdGF0KQoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQkvL3Ryb2lzacOobWUgY2FzIDogCgkJCQkJCQkJCS8vb24gbidhIHBhcyBsZXMgcG9pbnRzIGV0IG9uIG4nZXN0IHBhcyBkYW5zIGxlIG1vaXMgY291cmFudCwgb24gbidpbnPDqHJlIHBhcyBldCBvbiB1dGlsaXNlIGxlIGNsYXNzZW1lbnQgZm91cm5pCgkJCQkJCQkJCWlmKCRjbGEgPT0gJ04nKQoJCQkJCQkJCQl7CgkJCQkJCQkJCQkkbmV3Y2xhc3NlbWVudCA9IGV4cGxvZGUoJy0nLCAkY2xhc3NlbWVudCk7CgkJCQkJCQkJCQkkbmV3Y2xhc3MgPSAkbmV3Y2xhc3NlbWVudFsxXTsKCQkJCQkJCQkJfQoJCQkJCQkJCQllbHNlIAoJCQkJCQkJCQl7CgkJCQkJCQkJCQkkbmV3Y2xhc3MgPSAkY2xhc3NlbWVudDsKCQkJCQkJCQkJfQoJCQkJCQkJCX0KCQkJCQkJLy9vbiB2YSBjYWxjdWxlciBsYSBkaWZmw6lyZW5jZSBlbnRyZSBsZSBjbGFzc2VtZW50IGRlIGwnYWR2ZXJzYWlyZSBldCBsZSBjbGFzc2VtZW50IGR1IGpvdWV1ciBkdSBjbHViCgkJCQkJCQoJCQkJCQkKCQkJCQkJCgkJCQkJCQkKCQkJCQkJCQkJJHF1ZXJ5ID0gIlNFTEVDVCBwb2ludHMgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2l0X21lbnMgV0hFUkUgbGljZW5jZSA9ID8gQU5EIG1vaXMgPSA/IEFORCBzYWlzb24gPSA/IjsKCQkJCQkJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UsJG1vaXNfZXZlbnQsJHNhaXNvbl9jb3VyYW50ZSkpOwoJCQkJCQkJCQkvL3NpIGxhIHNpdHVhdGlvbiBtZW5zdWVsbGUgZHUgam91ZXVyIGR1IGNsdWIgbidleGlzdGUgcGFzID8KCQkJCQkJCQkJLy9hbG9ycyBvbiBuJ2VucmVnaXN0cmUgcGFzIGxlIHLDqXN1bHRhdCBldCBvbiBsZSBzaWduYWxlCgoJCQkJCQkJCQkJaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkKCQkJCQkJCQkJCXsKCQkJCQkJCQkJCQkvLyRkZXNpZ25hdGlvbi49IkVjYXJ0IG5vbiBjYWxjdWzDqSI7CgkJCQkJCQkJCQkJJGVjYXJ0ID0gMDsKCQkJCQkJCQkJCQkkZXJyb3IrKzsKCQkJCQkJCQkJCQkkZGVzaWduYXRpb24uPSJwYXMgZGUgcG9pbnRzIGVuIGJkZCI7CgkJCQkJCQkJCQkJJHBvaW50cyA9IDA7CgkJCQkJCQkJCQl9CgkJCQkJCQkJCQllbHNlCgkJCQkJCQkJCQl7CgkJCQkJCQkJCQkJJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCQkJCQkJCQkJCQkkcG9pbnRzID0gJHJvd1sncG9pbnRzJ107CgkJCQkJCQkJCQkJYXJyYXlfcHVzaCgkYXJyYXlfcG9pbnRzLGFycmF5KCJsaWNlbmNlIj0+JGxpY2VuY2UsIm1vaXMiPT4kbW9pc19ldmVudCwic2Fpc29uIj0+JHNhaXNvbl9jb3VyYW50ZSwgInBvaW50cyI9PiRwb2ludHMpKTsKCQkJCQkJCQkJCQkKCQkJCQkJCQkJCX0KCgkJCQkJCQkJCQkKCQkJCQkJCgkJCQkJCSRlY2FydF9yZWVsID0gJHBvaW50cyAtICRuZXdjbGFzczsKCQkJCQkJJGNvZWZmID0gIjAuMDAiOy8vb24gYXR0cmlidWUgdW5lIHZhbGV1ciBwYXIgZMOpZmF1dAoJCQkJCQkvL29uIGNhbGN1bGUgbCfDqWNhcnQgc2Vsb24gbGEgZ3JpbGxlIGRlIHBvaW50cyBkZSBsYSBGRlRUCgkJCQkJCSR0eXBlX2VjYXJ0ID0gcGluZ19hZG1pbl9vcHM6OkNhbGN1bEVjYXJ0KCRlY2FydF9yZWVsKTsKCQkJCQkKCQkJCQkJCgkJCQkJCS8vaWwgZmF1dCBtYWludGVuYW50IHLDqWN1cMOpcmVyIGxlIGlkZXByZXV2ZSBldCBsZSBjb2VmZgoJCQkJCQkvL2VjaG8gJGVwcmV1dmU7CgkJCQkJCSRxdWVyeWVwcmV1dmUgPSAiU0VMRUNUIGNvZWZmaWNpZW50LCBpZGVwcmV1dmUsaW5kaXZzIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIFdIRVJFIG5hbWUgPSA/IjsKCQkJCQkJJGRiZXByZXV2ZSA9ICRkYi0+RXhlY3V0ZSgkcXVlcnllcHJldXZlLCBhcnJheSgkZXByZXV2ZSkpOwoJCQkJCQkKCQkJCQkJaWYoJGRiZXByZXV2ZSAmJiAkZGJlcHJldXZlLT5SZWNvcmRDb3VudCgpPjApCgkJCQkJCXsKCQkJCQkJCSRyb3cgPSAkZGJlcHJldXZlLT5GZXRjaFJvdygpOwoKCgkJCQkJCQkJaWYoJGVwcmV1dmUgPT0gJ0NyaXTDqXJpdW0gZsOpZMOpcmFsJykKCQkJCQkJCQl7CgkJCQkJCQkJCWlmKCRzZW5pb3IgPT0gMSkKCQkJCQkJCQkJewoJCQkJCQkJCQkJJGNvZWZmID0iMS4yNSI7CgoJCQkJCQkJCQl9CgkJCQkJCQkJCWVsc2UKCQkJCQkJCQkJewoJCQkJCQkJCQkJJGNvZWZmID0gIjEuMDAiOwoJCQkJCQkJCQl9CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCQkkY29lZmYgPSAkcm93Wydjb2VmZmljaWVudCddOwoJCQkJCQkJCQkJaWYoJGNvZWZmID09JycpCgkJCQkJCQkJCQl7CgkJCQkJCQkJCQkJJGVycm9yKys7CgkJCQkJCQkJCQkJJGRlc2lnbmF0aW9uLj0iQ29lZmZpY2llbnQgbWFucXVhbnQiOwoJCQkJCQkJCQkJfQoKCQkJCQkJCQl9CgkJCQkJCQkkaWRlcHJldXZlID0gJHJvd1snaWRlcHJldXZlJ107CgkJCQkJCQkkaW5kaXZzID0gJHJvd1snaW5kaXZzJ107CgkJCQkJCX0KCQkJCQkJCgkJCQkJCS8vdmFyX2R1bXAoJGNvZWZmKTsKCQkJCQkJLy8yIC0gb24gcsOpY3Vww6lyZSBsZSB0b3VyIHMnaWwgZXhpc3RlCgkJCQkJCS8vb24gdmEgZmRvbmMgY2hlcmNoZXIgZGFucyBsYSB0YWJsZSBjYWxlbmRyaWVyCgkJCQkJCSRxdWVyeSA9ICJTRUxFQ1QgbnVtam91cm4gRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2FsZW5kcmllciBXSEVSRSBpZGVwcmV1dmUgPSA/IEFORCAoZGF0ZV9kZWJ1dCA9ID8gT1IgZGF0ZV9maW4gPSA/KSI7CgkJCQkJCSRyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpZGVwcmV1dmUsICRkYXRlX215c3FsLCRkYXRlX215c3FsKSk7CgoJCQkJCQlpZiAoJHJlc3VsdGF0ICYmICRyZXN1bHRhdC0+UmVjb3JkQ291bnQoKT4wKQoJCQkJCQl7CgkJCQkJCQkkcm93ID0gJHJlc3VsdGF0LT5GZXRjaFJvdygpOwoJCQkJCQkJJG51bWpvdXJuID0gJHJvd1snbnVtam91cm4nXTsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSRudW1qb3VybiA9IDA7CgkJCQkJCQkvL29uIGluc8OocmUgZGFucyBsZSBjYWxlbmRyaWVyID8gQmVuIG91aSAhCQkJCQkJCgkJCQkJCQkvL2xlIGNvZGUgZXhpc3RlIGTDqWrDoCBvdSBwYXMgPwoJCQkJCQkJLy9vbiBmYWl0IHVuZSBwcsOpZsOpcmVuY2UgISEKCQkJCQkJCWlmKCRwaW5nLT5HZXRQcmVmZXJlbmNlKCdpbmNsdXNpb25fc3BpZF9jYWxlbmRhcicpPT0nT3VpJykKCQkJCQkJCXsKCQkJCQkJCQkvLyRpZGVwcmV1dmUgPSAkaWRlcHJldXZlX3RlbXA7CgkJCQkJCQkJLy9vbiBvdWJsaWUgcGFzIGxlIHRhZyAhCgkJCQkJCQkJJHRhZyA9IHBpbmdfYWRtaW5fb3BzOjpjcmVhdGVfdGFnKCRpZGVwcmV1dmUsJGluZGl2cywgJGRhdGVfbXlzcWwsICRkYXRlX215c3FsKTsKCQkJCQkJCQkkcXVlcnljYWwgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIgKGlkLGlkZXByZXV2ZSxkYXRlX2RlYnV0LGRhdGVfZmluLG51bWpvdXJuLHRhZywgc2Fpc29uKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkJCQkJCQkJJHJlcSA9ICRkYi0+RXhlY3V0ZSgkcXVlcnljYWwsYXJyYXkoJGlkZXByZXV2ZSwkZGF0ZV9teXNxbCwkZGF0ZV9teXNxbCwkbnVtam91cm4sJHRhZywgJHNhaXNvbl9jb3VyYW50ZSkpOwoJCQkJCQkJfQoJCQkJCQkJCQkJCQkJCQoJCQkJCQl9CgkJCQkKCQkJCQoJCQkJCgkJCQkJCS8vZmluIGR1IHBvaW50IDIKCgkJCQkJCS8vJHRhYlsndmljdG9pcmUnXTsKCgkJCQkJCQlpZiAoJHZpY3RvaXJlID09J1YnKQoJCQkJCQkJewoJCQkJCQkJCSR2aWN0b2lyZSA9IDE7CgkJCQkJCQl9CgkJCQkJCQllbHNlIAoJCQkJCQkJewoJCQkJCQkJCSR2aWN0b2lyZSA9IDA7CgkJCQkJCQl9CgoJCQkJCQkvL29uIHBldXQgZMOpc29ybWFpcyBjYWxjdWxlciBsZXMgcG9pbnRzIAoJCQkJCQkkc2VydmljZTIgPSBuZXcgcGluZ19hZG1pbl9vcHMoKTsKCQkJCQkJJHBvaW50czEgPSAkc2VydmljZTItPkNhbGN1bFBvaW50c0luZGl2cygkdHlwZV9lY2FydCwgJHZpY3RvaXJlKTsKCQkJCQkJJHBvaW50cmVzID0gJHBvaW50czEqJGNvZWZmOwoJCQkJCQkvLyR0YWJbJ2ZvcmZhaXQnXTsKCgkJCQkJCWlmKCRlcnJvciA+MCkKCQkJCQkJewoJCQkJCQkJJHN0YXR1dCA9IDA7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkkc3RhdHV0ID0gMTsKCQkJCQkJfQoJCQkJCQkkcXVlcnkzID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgKGlkLCBzdGF0dXQsc2Fpc29uLCBkYXRlbWFqLCBsaWNlbmNlLCBkYXRlX2V2ZW50LCBlcHJldXZlLCBub20sIG51bWpvdXJuLGNsYXNzZW1lbnQsIHZpY3RvaXJlLGVjYXJ0LHR5cGVfZWNhcnQsIGNvZWZmLCBwb2ludHJlcywgZm9yZmFpdCkgVkFMVUVTICgnJyw/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkJCQkJCSRpKys7CgkJCQkJCS8vZWNobyAkcXVlcnk7CgkJCQkJCSRkYnJlc3VsdGF0MyA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkzLGFycmF5KCRzdGF0dXQsJHNhaXNvbl9jb3VyYW50ZSwkbm93LCAkbGljZW5jZSwgJGRhdGVfZXZlbnQsICRlcHJldXZlLCAkbm9tLCAkbnVtam91cm4sICRuZXdjbGFzcywgJHZpY3RvaXJlLCRlY2FydF9yZWVsLCR0eXBlX2VjYXJ0LCAkY29lZmYsJHBvaW50cmVzLCAkZm9yZmFpdCkpOwoKCQkJCQkJaWYoISRkYnJlc3VsdGF0MykKCQkJCQkJCXsKCQkJCQkJCQkkbWVzc2FnZSA9ICRkYi0+RXJyb3JNc2coKTsgCgkJCQkJCQkJJHN0YXR1cyA9ICdFY2hlYyc7CgkJCQkJCQkJJGRlc2lnbmF0aW9uID0gJG1lc3NhZ2U7CgkJCQkJCQkJJGFjdGlvbiA9ICJtYXNzX2FjdGlvbiI7CgkJCQkJCQkJcGluZ19hZG1pbl9vcHM6OmVjcmlyZWpvdXJuYWwoJG5vdywkc3RhdHVzLCAkZGVzaWduYXRpb24sJGFjdGlvbik7CgkJCQkJCQl9CQkJCQoKCQkJCQkJCS8vb24gbWV0IMOgIGpvdXIgbGEgZGF0ZSBkZSBtYWogZGVzIHLDqXN1bHRhdHMgU1BJRAoJCQkJCQoJCQkJCQoJCQkJLy8JfS8vZmluIGR1IGlmIHNpIGxhIHNpdCBtZW5zIGR1IGpvdWV1ciBkdSBjbHViIGVzdCBkw7ttZW50IHJlbnNlaWduw6llCgkJCQkJLy9vbiBkw6l0cnVpdCBsZSBuYiBkJ2VycmV1cgoJCQkJCXVuc2V0KCRlcnJvcik7CgkJCQl9Ly9maW4gZHUgZm9yZWFjaAoJCQkJCgkJCQkkY29tcHRhZ2UgPSAkaTsKCQkJCQoJCQkJJHF1ZXJ5NCA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgU0VUIG1hal9zcGlkID0gPyxzcGlkX3RvdGFsID0gPyBXSEVSRSBsaWNlbmNlID0gPyBBTkQgc2Fpc29uID0gPyI7CgkJCQkkZGJyZXN1bHQ0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTQsYXJyYXkoJGF1am91cmRodWksJGNvbXB0ZXVyLCRsaWNlbmNlLCRzYWlzb25fY291cmFudGUpKTsKCQkJCQoJCQkJJHN0YXR1cyA9ICdQYXJ0aWVzIFNQSUQnOwoJCQkJJGRlc2lnbmF0aW9uLj0gJGNvbXB0YWdlLiIgcGFydGllcyBTcGlkIHN1ciAiLiRjb21wdGV1ci4iICBkZSAiLiRwbGF5ZXI7CgkJCQlpZigkYSA+MCkKCQkJCXsKCQkJCQkkZGVzaWduYXRpb24uPSAiICIuJGEuIiBwYXJ0aWVzIFNwaWQgbm9uIHLDqWN1cMOpcsOpZXMgKHNpdHVhdGlvbiBtZW5zdWVsbGUgbWFucXVhbnRlKSI7CgkJCQl9CgkJCQkkYWN0aW9uID0gIm1hc3NfYWN0aW9uIjsKCQkJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywgJGRlc2lnbmF0aW9uLCRhY3Rpb24pOwoJCQkJCgoJCQl9Ly9maW4gZHUgaWYgIWlzX2FycmF5CgkJfS8vZmluIGR1IHdoaWxlCgl9Ly9maW4gZHUgaWYgZGJyZXRvdXIgPjAKCgoKCgoKCgoKICB9Ly9maW4gZGUgbGEgZm9uY3Rpb24KIyMKIyMKIyAgIFJldHJpZXZlIHBhcnRpZXMgRkZUVAoKcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXRyaWV2ZV9wYXJ0aWVzX2ZmdHQoICRsaWNlbmNlICkKICB7IAoJZ2xvYmFsICRnQ21zOwoJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCSRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7CgkvL3JlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmNhbGN1bHMucGhwJyk7Cgkkc2Fpc29uX2NvdXJhbnRlID0gJHBpbmctPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwoJJG5vdyA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpLCAiJyIpOwoJJGF1am91cmRodWkgPSBkYXRlKCdZLW0tZCcpOwoJJGRlc2lnbmF0aW9uID0gIiI7CgkkYW5uZWVfY291cmFudGUgPSBkYXRlKCdZJyk7CgkkbGlnbmVzID0gMDsgLy9vbiBpbnN0YW5jaWUgbGUgbmIgZGUgbGlnbmVzIDAgcGFyIGTDqWZhdXQKCSRxdWVyeSA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJywgbm9tLCBwcmVub20pIEFTIHBsYXllciBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIGxpY2VuY2UgPSA/IjsKCSRkYnJldG91ciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlKSk7CglpZiAoJGRicmV0b3VyICYmICRkYnJldG91ci0+UmVjb3JkQ291bnQoKSA+IDApCgl7CgkgICAgd2hpbGUgKCRyb3c9ICRkYnJldG91ci0+RmV0Y2hSb3coKSkKCQl7CgkJJHBsYXllciA9ICRyb3dbJ3BsYXllciddOwoJCSRzZXJ2aWNlID0gbmV3IFNlcnZpY2VuKCk7CgkJJHBhZ2UgPSAieG1sX3BhcnRpZV9teXNxbCI7CgkJJHZhciA9ICJsaWNlbmNlPSIuJGxpY2VuY2U7CgkJJGxpZW4gPSAkc2VydmljZS0+R2V0TGluaygkcGFnZSwgJHZhcik7CgkJJHhtbCA9IHNpbXBsZXhtbF9sb2FkX3N0cmluZygkbGllbiwnU2ltcGxlWE1MRWxlbWVudCcsIExJQlhNTF9OT0NEQVRBKTsKCQlpZigkeG1sID09PSBGQUxTRSkKCQl7CgkJCSRhcnJheSA9IDA7CgkJCSRsaWduZXMgPSAwOwoJCQkkbWVzc2FnZSA9ICJTZXJ2aWNlIGNvdXDDqSBvdSBwYXMgZGUgcsOpc3VsdGF0cyBkaXNwb25pYmxlcyI7IAoJCQkkc3RhdHVzID0gJ0VjaGVjJzsKCQkJJGRlc2lnbmF0aW9uLj0gJG1lc3NhZ2U7CgkJCSRhY3Rpb24gPSAibWFzc19hY3Rpb24iOwoJCQlwaW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsICRkZXNpZ25hdGlvbiwkYWN0aW9uKTsKCQl9CgkJZWxzZQoJCXsKCQkJJGFycmF5ID0ganNvbl9kZWNvZGUoanNvbl9lbmNvZGUoKGFycmF5KSR4bWwpLCBUUlVFKTsKCQkJLy8kbGlnbmVzID0gY291bnQoJGFycmF5WydwYXJ0aWUnXSk7CgkJfQoJCQoJCSRmZnR0ID0gcGluZ19hZG1pbl9vcHM6OmNvbXB0ZV9mZnR0KCRsaWNlbmNlKTsKCQkvL3Zhcl9kdW1wKCRyZXN1bHQpOwoJCS8vbGUgc2VydmljZSBlc3QtaWwgb3V2ZXJ0ID8KCQkvKiovCgkJLy9vbiB0ZXN0ZSBsZSByZXN1bHRhdCByZXRvdXJuw6kgICAgIAoKCQkJCgkJCWlmKCRsaWduZXMgPD0gJGZmdHQpCgkJCXsKCQkJCSRtZXNzYWdlID0gIlBhcnRpZXMgRkZUVCDDoCBqb3VyIHBvdXIgIi4kcGxheWVyLiIgOiAiLiRmZnR0LiIgZW4gYmFzZSBkZSBkb25uw6llcyAiLiRsaWduZXMuIiBlbiBsaWduZS4iOyAKCQkJCSRzdGF0dXMgPSAnRWNoZWMnOwoJCQkJJGRlc2lnbmF0aW9uLj0gJG1lc3NhZ2U7CgkJCQkkYWN0aW9uID0gIm1hc3NfYWN0aW9uIjsKCQkJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywgJGRlc2lnbmF0aW9uLCRhY3Rpb24pOwoJCQkJJGF1am91cmRodWkgPSBkYXRlKCdZLW0tZCcpOwoJCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyBTRVQgbWFqX2ZmdHQgPSA/IFdIRVJFIGxpY2VuY2UgPSA/IEFORCBzYWlzb24gPSA/IjsKCQkJCSRkYnJlc3VsdDQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkYXVqb3VyZGh1aSwkbGljZW5jZSwkc2Fpc29uX2NvdXJhbnRlKSk7CgkJCQkKCQkJCQoJCQl9CgkJCWVsc2UKCQkJewkKCQkJCSRpID0gMDsKCQkJCSRjb21wdGV1ciA9IDA7CgkJCQlmb3JlYWNoKCR4bWwgYXMgJGNsZSA9PiR0YWIpCgkJCQl7CgkJCQkJJGNvbXB0ZXVyKys7CgoJCQkJCSRsaWNlbmNlID0gKGlzc2V0KCR0YWItPmxpY2VuY2UpPyIkdGFiLT5saWNlbmNlIjoiIik7CgkJCQkJJGFkdmxpYyA9IChpc3NldCgkdGFiLT5hZHZsaWMpPyIkdGFiLT5hZHZsaWMiOiIiKTsKCQkJCQkkdmQgPSAoaXNzZXQoJHRhYi0+dmQpPyIkdGFiLT52ZCI6IiIpOwoKCQkJCQkJaWYgKCR2ZCA9PSdWJykKCQkJCQkJewoJCQkJCQkJJHZkID0gMTsKCQkJCQkJfQoJCQkJCQllbHNlIAoJCQkJCQl7CgkJCQkJCQkkdmQgPSAwOwoJCQkJCQl9CgoJCQkJCSRudW1qb3VybiA9IChpc3NldCgkdGFiLT5udW1qb3Vybik/IiR0YWItPm51bWpvdXJuIjoiIik7CgoJCQkJCQlpZihpc19hcnJheSgkbnVtam91cm4pKQoJCQkJCQl7CgkJCQkJCQkkbnVtam91cm4gPSAnMCc7CgkJCQkJCX0KCgkJCQkJJGNvZGVjaGFtcCA9IChpc3NldCgkdGFiLT5jb2RlY2hhbXApPyIkdGFiLT5jb2RlY2hhbXAiOiIiKTsKCgkJCQkJLy9vbiBlc3NhaWUgZGUgZMOpdGVybWluZXIgbGUgbm9tIGRlIGNldHRlIGNvbXBldCA/CgkJCQkJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb24gV0hFUkUgY29kZV9jb21wZXQgPSA/IjsKCgkJCQkJJGRhdGVldmVudCA9IChpc3NldCgkdGFiLT5kYXRlKT8iJHRhYi0+ZGF0ZSI6IiIpOwoJCQkJCSRjaGd0ID0gZXhwbG9kZSgiLyIsJGRhdGVldmVudCk7CgkJCQkJLy9vbiB2YSBlbiBkw6lkdWlyZSBsYSBzYWlzb24KCQkJCQlpZigkY2hndFsxXSA8IDcpCgkJCQkJewoJCQkJCQkvL29uIGVzdCBlbiBkZXV4acOobWUgcGhhc2UKCQkJCQkJLy9vbiBzYWl0IGRvbmMgcXVlIGwnYW5uw6llIGVzdCBsYSBkZXV4acOobWUgYW5uw6llCgkJCQkJCSRhbm5lZV9kZWJ1dCA9ICcyMCcuJGNoZ3RbMl0tMTsKCQkJCQkJJGFubmVlX2ZpbiA9ICcyMCcuJGNoZ3RbMl07CgoJCQkJCX0KCQkJCQllbHNlaWYoJGNoZ3RbMV0+PTcpCgkJCQkJewoJCQkJCQkvL29uIGVzdCBlbiBwcmVtacOocmUgcGhhc2UKCQkJCQkJJGFubmVlX2RlYnV0ID0gJzIwJy4kY2hndFsyXTsKCQkJCQkJJGFubmVlX2ZpbiA9ICcyMCcuJGNoZ3RbMl0rMTsKCQkJCQl9CgkJCQkJJHNhaXNvbiA9ICRhbm5lZV9kZWJ1dC4iLSIuJGFubmVlX2ZpbjsKCQkJCQkkZGF0ZV9ldmVudCA9ICRjaGd0WzJdLiItIi4kY2hndFsxXS4iLSIuJGNoZ3RbMF07CgkJCQkJLy9lY2hvICJsYSBkYXRlIGVzdCIuJGRhdGVfZXZlbnQ7CgoJCQkJLy8JJGRhdGVfZXZlbnQgPSBjb252X2RhdGVfdmVyc19teXNxbCgkZGF0ZWV2ZW50KTsKCQkJCQkkYWR2c2V4ZSA9IChpc3NldCgkdGFiLT5hZHZzZXhlKT8iJHRhYi0+YWR2c2V4ZSI6IiIpOwoJCQkJCSRhZHZub21wcmUgPSAoaXNzZXQoJHRhYi0+YWR2bm9tcHJlKT8iJHRhYi0+YWR2bm9tcHJlIjoiIik7CgkJCQkJJHBvaW50cmVzID0gKGlzc2V0KCR0YWItPnBvaW50cmVzKT8iJHRhYi0+cG9pbnRyZXMiOiIiKTsKCQkJCQkkY29lZmNoYW1wID0gKGlzc2V0KCR0YWItPmNvZWZjaGFtcCk/IiR0YWItPmNvZWZjaGFtcCI6IiIpOwoJCQkJCSRhZHZjbGFvZiA9IChpc3NldCgkdGFiLT5hZHZjbGFvZik/IiR0YWItPmFkdmNsYW9mIjoiIik7CgoJCQkJLyoqLwkkcXVlcnkgPSAiU0VMRUNUIGxpY2VuY2UsYWR2bGljLCBudW1qb3VybiwgY29kZWNoYW1wLCBkYXRlX2V2ZW50LCBjb2VmY2hhbXAgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyBXSEVSRSBsaWNlbmNlID0gPyBBTkQgYWR2bGljID0gPyBBTkQgbnVtam91cm4gPSA/IEFORCBjb2RlY2hhbXAgPSA/IEFORCBkYXRlX2V2ZW50ID0gPyBBTkQgY29lZmNoYW1wID0gPyI7CgkJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UsICRhZHZsaWMsICRudW1qb3VybiwgJGNvZGVjaGFtcCwgJGRhdGVfZXZlbnQsICRjb2VmY2hhbXApKTsKCgkJCQkJaWYoJGRicmVzdWx0ICAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkgCgkJCQkJewoJCQkJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXMgKGlkLCBzYWlzb24sIGxpY2VuY2UsIGFkdmxpYywgdmQsIG51bWpvdXJuLCBjb2RlY2hhbXAsIGRhdGVfZXZlbnQsIGFkdnNleGUsIGFkdm5vbXByZSwgcG9pbnRyZXMsIGNvZWZjaGFtcCwgYWR2Y2xhb2YpIFZBTFVFUyAoJycsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIjsKCQkJCQkJJGkrKzsKCQkJCQkJLy9lY2hvICRxdWVyeTsKCQkJCQkJJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRzYWlzb24sJGxpY2VuY2UsICRhZHZsaWMsICR2ZCwgJG51bWpvdXJuLCAkY29kZWNoYW1wLCAkZGF0ZV9ldmVudCwgJGFkdnNleGUsICRhZHZub21wcmUsICRwb2ludHJlcywgJGNvZWZjaGFtcCwgJGFkdmNsYW9mKSk7CgoJCQkJCQkJaWYoISRkYnJlc3VsdGF0KQoJCQkJCQkJewoJCQkJCQkJCSRkZXNpZ25hdGlvbi49JGRiLT5FcnJvck1zZygpOyAKCQkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCQkKCQkJCSRjb21wdGFnZSA9ICRpOwoJCQkJJHF1ZXJ5NCA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgU0VUIG1hal9mZnR0ID0gPyxmZnR0ID0gPyBXSEVSRSBsaWNlbmNlID0gPyBBTkQgc2Fpc29uID0gPyI7CgkJCQkkZGJyZXN1bHQ0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTQsIGFycmF5KCRhdWpvdXJkaHVpLCRjb21wdGFnZSwkbGljZW5jZSwkc2Fpc29uKSk7CgkJCQkKCQkJCSRzdGF0dXMgPSAnUGFydGllcyBGRlRUJzsKCQkJCSRkZXNpZ25hdGlvbi49ICJSw6ljdXDDqXJhdGlvbiBGRlRUIGRlICIuJGNvbXB0YWdlLiIgcGFydGllcyBzdXIgIi4kY29tcHRldXIuIiAgZGUgIi4kcGxheWVyOwoJCQkJJGFjdGlvbiA9ICJtYXNzX2FjdGlvbiI7CgkJCQlwaW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsICRkZXNpZ25hdGlvbiwkYWN0aW9uKTsKCgkJCX0vL2ZpbiBkdSBpZiAhaXNfYXJyYXkKCQl9Ly9maW4gZHUgd2hpbGUKCQkvL3Vuc2V0KCk7CgoJfS8vZmluIGR1IGlmIGRicmV0b3VyID4wCgoKCgoKCgoKCiAgfS8vZmluIGRlIGxhIGZvbmN0aW9uCgovL2xhIGZvbmN0aW9uIGNpLWRlc3NvdXMgcsOpY3Vww6hyZSBsYSBzaXR1YXRpb24gbWVuc3VlbGxlIHBvdXIgdW5lIG91IHBsdXNpZXVycyBwZXJzb25uZXMKLy9BdHRlbnRpb24gZGUgbmUgcGFzIG1ldHRyZSBkZSBtZXNzYWdlcyBkZSBzb3J0aWUgYXV0cmUgcXVlIGRzIGxlIGpvdXJuYWwKcHVibGljIGZ1bmN0aW9uIHJldHJpZXZlX3NpdF9tZW5zKCRsaWNlbmNlKQogIHsKCS8vb24gdsOpcmlmaWUgc2kgbGEgc2l0dWF0aW9uIG1lbnN1ZWxsZSBhIGTDqWrDoCDDqXTDqSBwcmlzZSBlbiBjb21wdGUKCWdsb2JhbCAkZ0NtczsKCSRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7IAoJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCSRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKCSRtb2lzX2NvdXJhbnQgPSBkYXRlKCduJyk7Ly9Nb2lzIGF1IGZvcm1hdCAxLCAyLCAzIGV0Yy4uLi4KCSRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKCSRtb2lzX2ZyYW5jYWlzID0gYXJyYXkoJ0phbnZpZXInLCAnRsOpdnJpZXInLCdNYXJzJywgJ0F2cmlsJywgJ01haScsICdKdWluJywgJ0p1aWxsZXQnLCdBb8O7dCcsICdTZXB0ZW1icmUnLCAnT2N0b2JyZScsJ05vdmVtYnJlJywnRMOpY2VtYnJlJyk7CgkkbW9pc19yZWVsID0gJG1vaXNfY291cmFudCAtIDE7CgkkbW9pc19zbSA9ICRtb2lzX2ZyYW5jYWlzWyIkbW9pc19yZWVsIl07CgkkbW9pc19zaXRfbWVucyA9ICRtb2lzX3NtLiIgIi4kYW5uZWVfY291cmFudGU7CgkkbWVzc2FnZSA9ICIiOwoJJHNhaXNvbiA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKCSRwaGFzZSA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdwaGFzZV9lbl9jb3VycycpOwoJCgkvL0xhIHNpdHVhdGlvbiBtZW5zdWVsbGUgZHUgbW9pcyBlbiBjb3VycyBuJ2V4aXN0ZSBwYXMsIG9uIGwnYWpvdXRlLgoJJHNlcnZpY2UgPSBuZXcgU2VydmljZW4oKTsKCSRwYWdlID0gInhtbF9qb3VldXIiOwoJJHZhciA9ICJsaWNlbmNlPSIuJGxpY2VuY2U7CgkkbGllbiA9ICRzZXJ2aWNlLT5HZXRMaW5rKCRwYWdlLCAkdmFyKTsKCSR4bWwgPSBzaW1wbGV4bWxfbG9hZF9zdHJpbmcoJGxpZW4sJ1NpbXBsZVhNTEVsZW1lbnQnLCBMSUJYTUxfTk9DREFUQSk7CgkvL3Zhcl9kdW1wKCR4bWwpOwoJaWYoJHhtbCA9PT0gRkFMU0UpCgl7CgkJJGxpZ25lcyA9IDA7CgkJJGFycmF5ID0gMDsKCQkkcmVzdWx0ID0gMDsKCQl2YXJfZHVtcCgkeG1sKTsKCX0KCWVsc2UKCXsKCQkkYXJyYXkgPSBqc29uX2RlY29kZShqc29uX2VuY29kZSgoYXJyYXkpJHhtbCksIFRSVUUpOwoJCS8vdmFyX2R1bXAoJGFycmF5KTsKCQkkbGlnbmVzID0gY291bnQoJGFycmF5Wydqb3VldXInXSk7Cgl9CgkKCgkJaWYoJGxpZ25lcyA9PSAwKQoJCXsKCQkJLy9sZSBzZXJ2aWNlIGVzdCBjb3Vww6kgb3UgbGEgbGljZW5jZSBlc3QgaW5hY3RpdmUKCQkJCgkJCSRtZXNzYWdlLj0iTGljZW5jZSBpbnRyb3V2YWJsZSBvdSBzZXJ2aWNlIGNvdXDDqSBwb3VyICIuJGxpY2VuY2U7CgkJCSRzdGF0dXMgPSAnRWNoZWMnOwoJCQkkZGVzaWduYXRpb24gPSAkbWVzc2FnZTsKCQkJJGFjdGlvbiA9ICJtYXNzX2FjdGlvbiI7CgkJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywgJGRlc2lnbmF0aW9uLCRhY3Rpb24pOwoJCX0KCQllbHNlCgkJewoJCQlmb3JlYWNoKCR4bWwgYXMgJHJlc3VsdCkKCQkJewoJCQkJJGxpY2VuY2UyID0gKGlzc2V0KCRyZXN1bHQtPmxpY2VuY2UpPyIkcmVzdWx0LT5saWNlbmNlIjoiIik7CgkJCQkkbm9tID0gKGlzc2V0KCRyZXN1bHQtPmxpY2VuY2UpPyIkcmVzdWx0LT5ub20iOiIiKTsKCQkJCSRwcmVub20gPSAoaXNzZXQoJHJlc3VsdC0+bGljZW5jZSk/IiRyZXN1bHQtPnByZW5vbSI6IiIpOwoJCQkJJG5hdGlvID0gKGlzc2V0KCRyZXN1bHQtPmxpY2VuY2UpPyIkcmVzdWx0LT5uYXRpbyI6IiIpOwoJCQkJJGNsZ2xvYiA9IChpc3NldCgkcmVzdWx0LT5saWNlbmNlKT8iJHJlc3VsdC0+Y2xnbG9iIjoiIik7CgkJCQkkcG9pbnQgPSAoaXNzZXQoJHJlc3VsdC0+bGljZW5jZSk/IiRyZXN1bHQtPnBvaW50IjoiIik7CgkJCQkkYWNsZ2xvYiA9IChpc3NldCgkcmVzdWx0LT5saWNlbmNlKT8iJHJlc3VsdC0+YWNsZ2xvYiI6IiIpOwoJCQkJJGFwb2ludCA9IChpc3NldCgkcmVzdWx0LT5saWNlbmNlKT8iJHJlc3VsdC0+YXBvaW50IjoiIik7CgkJCQkkY2xuYXQgPSAoaXNzZXQoJHJlc3VsdC0+bGljZW5jZSk/IiRyZXN1bHQtPmNsbmF0IjoiIik7CgkJCQkkY2F0ZWcgPSAoaXNzZXQoJHJlc3VsdC0+bGljZW5jZSk/IiRyZXN1bHQtPmNhdGVnIjoiIik7CgkJCQkkcmFuZ3JlZyA9IChpc3NldCgkcmVzdWx0LT5saWNlbmNlKT8iJHJlc3VsdC0+cmFuZ3JlZyI6IiIpOwoJCQkJJHJhbmdkZXAgPSAoaXNzZXQoJHJlc3VsdC0+bGljZW5jZSk/IiRyZXN1bHQtPnJhbmdkZXAiOiIiKTsKCQkJCSR2YWxjbGEgPSAoaXNzZXQoJHJlc3VsdC0+bGljZW5jZSk/IiRyZXN1bHQtPnZhbGNsYSI6IiIpOwoJCQkJJGNscHJvID0gKGlzc2V0KCRyZXN1bHQtPmxpY2VuY2UpPyIkcmVzdWx0LT5jbHBybyI6IiIpOwoJCQkJJHZhbGluaXQgPSAoaXNzZXQoJHJlc3VsdC0+bGljZW5jZSk/IiRyZXN1bHQtPnZhbGluaXQiOiIiKTsKCQkJCS8vJHByb2dtb2lzID0gKGlzc2V0KCRyZXN1bHQtPmxpY2VuY2UpPyIkcmVzdWx0LT5wcm9nbW9pcyI6IiIpOwoJCQkJLy8kcHJvZ2FubiA9IChpc3NldCgkcmVzdWx0LT5saWNlbmNlKT8iJHJlc3VsdC0+cHJvZ2FubiI6IiIpOwoJCQkJCgkJCQkvL29uIHBldXQgZmFpcmUgcXFzIHRyYWl0ZW1lbnRzIHBvdXIgY2FsY3VsZXIgbGVzIHByb2dyZXNzaW9ucyBwYXIgZXhlbXBsZXMKCQkJCSRwcm9nbW9pc3BsYWNlcyA9ICRhY2xnbG9iIC0gJGNsZ2xvYjsvL3Byb2dyZXNzaW9uIGVuIHRlcm1lcyBkZSBwbGFjZXMKCQkJCSRwcm9nbW9pcyA9ICRwb2ludCAtICRhcG9pbnQ7Ly9wcm9ncmVzc2lvbiBkdSBtb2lzIGVuIHRlcm1lcyBkZSBwb2ludHMKCQkJCSRwcm9nYW5uID0gJHBvaW50IC0gJHZhbGluaXQ7IC8vcHJvZ3Jlc3Npb24gw6AgbCdhbm7DqWUgZW4gdGVybWVzIGRlIHBvaW50cwoJCQkJCgkJCQkKCQkJCQoJCQkJCgkJCQkKCQkJfQoJCQkkcXVlcnkyID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyAoaWQsZGF0ZWNyZWF0ZWQsIGRhdGVtYWosIG1vaXMsIGFubmVlLCBwaGFzZSwgbGljZW5jZSwgbm9tLCBwcmVub20sIGNhdGVnLHBvaW50cywgYXBvaW50LGNsZ2xvYiwgYWNsZ2xvYiwgY2xuYXQsIHJhbmdyZWcsIHJhbmdkZXAsIHByb2dtb2lzcGxhY2VzLCBwcm9nbW9pcywgcHJvZ2FubiwgdmFsaW5pdCwgdmFsY2xhLHNhaXNvbikgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPyw/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkJCS8vZWNobyAkcXVlcnk7CgkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsYXJyYXkoJG5vdywkbm93LCRtb2lzX2NvdXJhbnQsICRhbm5lZV9jb3VyYW50ZSwgJHBoYXNlLCAkbGljZW5jZTIsICRub20sICRwcmVub20sICRjYXRlZywgJHBvaW50LCRhcG9pbnQsJGNsZ2xvYiwgJGFjbGdsb2IsICRjbG5hdCwgJHJhbmdyZWcsICRyYW5nZGVwLCAkcHJvZ21vaXNwbGFjZXMsICRwcm9nbW9pcywgJHByb2dhbm4sJHZhbGluaXQsICR2YWxjbGEsICRzYWlzb24pKTsKCgkJCQkKCQkJCWlmKCRkYnJlc3VsdGF0KQoJCQkJewoJCQkJLyoKCQkJCQkkbWVzc2FnZSA9ICRkYi0+RXJyb3JNc2coKTsgCgkJCQkJJHN0YXR1cyA9ICdFY2hlYyc7CgkJCQkJJGRlc2lnbmF0aW9uID0gJG1lc3NhZ2U7CgkJCQkJJGFjdGlvbiA9ICJtYXNzX2FjdGlvbiI7CgkJCQkJcGluZ19hZG1pbl9vcHM6OmVjcmlyZWpvdXJuYWwoJG5vdywkc3RhdHVzLCAkZGVzaWduYXRpb24sJGFjdGlvbik7CgoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJKi8KCQkJCQkkc3RhdHVzID0gJ09rJzsKCQkJCQkkZGVzaWduYXRpb24gPSAiU2l0dWF0aW9uIG9rIHBvdXIgIi4kbm9tLiIgIi4kcHJlbm9tOwoJCQkJCSRhY3Rpb24gPSAnbWFzc19hY3Rpb24nOwoJCQkJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywgJGRlc2lnbmF0aW9uLCRhY3Rpb24pOwoJCQkJCS8vb24gbWV0IGxhIHRhYmxlIHJlY3VwIMOgIGpvdXIgcG91ciBsZSBqb3VldXIKCQkJCQkvL0F0dGVudGlvbiBzJ2lsIHMnYWdpdCBkJ3VuIGFqb3V0ICEhCgkJCQkJLy9vbiB2w6lyaWZpZSBkJ2Fib3JkIGwnZXhpc3RlbmNlIGR1IGpvdWV1ciBkcyBsYSBiZGQKCQkJCQkvKgoJCQkJCSRxdWVyeTQgPSAiU0VMRUNUIGxpY2VuY2UgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyBXSEVSRSBsaWNlbmNlID0gPyI7CgkJCQkJJGRicmVzdWx0NCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnk0LCBhcnJheSgkbGljZW5jZTIpKTsKCQkJCQlpZigkZGJyZXN1bHQ0LT5SZWNvcmRDb3VudCgpID09IDApCgkJCQkJewoJCQkJCQkkcXVlcnkzID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIChpZCwgc2Fpc29uLCBkYXRlbWFqLCBsaWNlbmNlLCBzaXRfbWVucykgVkFMVUVTICgnJywgPywgPywgPywgPykiOwoJCQkJCQkkZGJyZXN1bHQzID0gJGRiLT5FeGVjdXRlKCRxdWVyeTMsIGFycmF5KCRzYWlzb24sJG5vdywgJGxpY2VuY2UyLCAkbW9pc19zaXRfbWVucykpOwoJCQkJCQkKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJHF1ZXJ5MyA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgU0VUIGRhdGVtYWogPSA/ICwgc2l0X21lbnMgPSA/IFdIRVJFIGxpY2VuY2UgPSA/IjsKCQkJCQkJJGRicmVzdWx0MyA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkzLCBhcnJheSgkbm93LCAkbW9pc19zaXRfbWVucywgJGxpY2VuY2UyKSk7CgkJCQkJfQoJCQkJCSovCgoJCQkJCQoJCQkJfQoKCgkJCQkvLyRtZXNzYWdlLj0iPGxpPkxhIGxpY2VuY2UgZXN0IG9rPC9saT4iOwoJCQkKCQl9CgkKCQoKCgogIH0KIAlmdW5jdGlvbiByZXRyaWV2ZV9jb21wZXRzICgkaWRvcmdhLCR0eXBlID0gJycpCgl7CgkJZ2xvYmFsICRnQ21zOwoJCSRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7IAoJCSRkYiA9IGNtc21zKCktPkdldERiKCk7CgkJCgkJaWYoJHR5cGUgPT0gJ0UnKQoJCXsKCQkJJGluZGl2cyA9IDA7CgkJfQoJCWVsc2UKCQl7CgkJCSRpbmRpdnMgPSAxOwoJCX0KCQkkcGFnZSA9ICJ4bWxfZXByZXV2ZSI7CgkJLy9lY2hvICRwYWdlOwoJCSR2YXIgPSAib3JnYW5pc21lPSIuJGlkb3JnYS4iJnR5cGU9Ii4kdHlwZTsKCQkvL2VjaG8gJHZhcjsKCQkkc2VydmljZSA9IG5ldyBTZXJ2aWNlbigpOwoJCSRsaWVuID0gJHNlcnZpY2UtPkdldExpbmsoJHBhZ2UsICR2YXIpOwoJCS8vZWNobyAibGUgbGllbiBlc3QgOiAiLiRsaWVuOwoJCSR4bWwgPSBzaW1wbGV4bWxfbG9hZF9zdHJpbmcoJGxpZW4sICdTaW1wbGVYTUxFbGVtZW50JywgTElCWE1MX05PQ0RBVEEpOwoKCQlpZigkeG1sID09PSBGQUxTRSkKCQl7CgkJCS8vIExlIHNlcnZpY2UgZXN0IGNvdXDDqQoJCQkkYXJyYXkgPSAwOwoJCX0KCQllbHNlCgkJewoJCQkkYXJyYXkgPSBqc29uX2RlY29kZShqc29uX2VuY29kZSgoYXJyYXkpJHhtbCksIFRSVUUpOwoJCQkkbGlnbmVzID0gY291bnQoJGFycmF5WydlcHJldXZlJ10pOwoJCX0KCgkJLy92YXJfZHVtcCgkcmVzdWx0KTsKCQkvKiovCgkJLy9vbiB2YSB0ZXN0ZXIgc2kgbGEgdmFyaWFibGUgZXN0IGJpZW4gdW4gdGFibGVhdSAgIAoJCQlpZighaXNfYXJyYXkoJGFycmF5KSB8fCAkbGlnbmVzID09IDApICB7CgoJCQkJJHBpbmctPlNldE1lc3NhZ2UoIkxlIHNlcnZpY2UgZXN0IGNvdXDDqSBvdSBpbCBuJ3kgYSBwYXMgZW5jb3JlIGRlIHLDqXN1bHRhdHMiKTsKCQkJCSRwaW5nLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2VwcmV1dmVzJyk7CgkJCX0KCgkJLy8vb24gaW5pdGlhbGlzZSB1biBjb21wdGV1ciBnw6luw6lyYWwgJGkKCQkkaT0wOwoJCS8vb24gaW5pdGlhbGlzZSB1biBkZXV4acOobWUgY29tcHRldXIKCQkkY29tcHRldXI9MDsKCQlmb3JlYWNoKCR4bWwgYXMgJGNsZSA9PiR0YWIpCgkJewoKCQkJJGkrKzsKCQkJJGlkZXByZXV2ZSA9IChpc3NldCgkdGFiLT5pZGVwcmV1dmUpPyIkdGFiLT5pZGVwcmV1dmUiOiIiKTsKCQkJJGlkb3JnYSAgPSAoaXNzZXQoJHRhYi0+aWRvcmdhKT8iJHRhYi0+aWRvcmdhIjoiIik7CgkJCSRsaWJlbGxlID0gKGlzc2V0KCR0YWItPmxpYmVsbGUpPyIkdGFiLT5saWJlbGxlIjoiIik7CgkJCS8vIDEtIG9uIHbDqXJpZmllIHNpIGNldHRlIMOpcHJldXZlIGVzdCBkw6lqw6AgZGFucyBsYSBiYXNlCgkJCSRxdWVyeSA9ICJTRUxFQ1QgbmFtZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyBXSEVSRSBuYW1lID0gPyI7CgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWJlbGxlKSk7CgoJCQkJaWYoJGRicmVzdWx0ICAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkgCgkJCQl7CgkJCQkJJHF1ZXJ5MSA9ICJTSE9XIFRBQkxFIFNUQVRVUyBMSUtFICciLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcycgIjsKCQkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MSk7CgkJCQkJJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCQkJCQkkcmVjb3JkX2lkID0gJHJvd1snQXV0b19pbmNyZW1lbnQnXTsKCQkJCQkkdGFnID0gcGluZ19hZG1pbl9vcHM6OnRhZygkcmVjb3JkX2lkLCAkaWRlcHJldXZlLCAkaW5kaXZzKTsKCQkJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIChpZCwgbmFtZSwgaW5kaXZzLCBpZGVwcmV1dmUsdGFnLCBpZG9yZ2EpIFZBTFVFUyAoJycsID8sID8sID8sID8sID8pIjsKCQkJCQkvL2VjaG8gJHF1ZXJ5OwoJCQkJCSRjb21wdGV1cisrOwoJCQkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkbGliZWxsZSwkaW5kaXZzLCRpZGVwcmV1dmUsJHRhZywkaWRvcmdhKSk7CgoJCQkJCWlmKCEkZGJyZXN1bHRhdCkKCQkJCQl7CgkJCQkJCSRkZXNpZ25hdGlvbiAuPSAkZGItPkVycm9yTXNnKCk7CQkJCgkJCQkJfQoKCQkJCX0KCQkJCS8vZmluIGR1IGlmICRkYnJlc3VsdAoKCgkJfS8vIGZpbiBkdSBmb3JlYWNoCgkJCgl9CgkKLy9DZXR0ZSBmb25jdGlvbiByw6ljdXDDqHJlIGxlcyBkaXZpc2lvbnMgZGUgY2hhcXVlIMOpcHJldXZlCglmdW5jdGlvbiByZXRyaWV2ZV9kaXZpc2lvbnMgKCRpZG9yZ2EsJGlkZXByZXV2ZSwkdHlwZSA9ICcnKQoJewoJCWdsb2JhbCAkZ0NtczsKCQkkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOyAKCQkkZGIgPSBjbXNtcygpLT5HZXREYigpOwoJCSRmZWRlID0gJzEwMDAwMSc7CgkJJHpvbmUgPSAkcGluZy0+R2V0UHJlZmVyZW5jZSgnem9uZScpOwoJCSRsaWd1ZSA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdsaWd1ZScpOwoJCSRkZXAgPSAkcGluZy0+R2V0UHJlZmVyZW5jZSgnZGVwJyk7CgkJJHNhaXNvbiA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKCQkkaW5kaXZzID0gMTsgLy9wYXIgZMOpZmF1dCBjYXIgb24gcsOpY3Vww6hyZSBsZXMgw6lwcmV1dmVzIGluZGl2aWR1ZWxsZXMgc2V1bGVtZW50CgkJJHR5cGUgPSAnSSc7CgkJJHBhZ2U9InhtbF9kaXZpc2lvbiI7CgkJLy9vbiBpbnN0YW5jaWUgbGEgY2xhc3NlIHNlcnZpY2UKCQkkc2VydmljZSA9IG5ldyBTZXJ2aWNlbigpOwoKCgkJCSR2YXIgPSAib3JnYW5pc21lPSIuJGlkb3JnYS4iJmVwcmV1dmU9Ii4kaWRlcHJldXZlLiImdHlwZT0iLiR0eXBlOwoJCQkJLy9lY2hvICR2YWxldXI7CgkJCQlpZigkaWRvcmdhID09ICRmZWRlKSB7JHNjb3BlID0gJ0YnO30KCQkJCWlmKCRpZG9yZ2EgPT0gJHpvbmUpIHskc2NvcGUgPSAnWic7fQoJCQkJaWYoJGlkb3JnYSA9PSAkbGlndWUpIHskc2NvcGUgPSAnTCc7fQoJCQkJaWYoJGlkb3JnYSA9PSAkZGVwKSB7JHNjb3BlID0gJ0QnO30KCQkJCS8vCgkJCQkkbGllbiA9ICRzZXJ2aWNlLT5HZXRMaW5rKCRwYWdlLCR2YXIpOwoJCQkJLy92YXJfZHVtcCgkbGllbik7CgkJCQkkeG1sID0gc2ltcGxleG1sX2xvYWRfc3RyaW5nKCRsaWVuLCAnU2ltcGxlWE1MRWxlbWVudCcsIExJQlhNTF9OT0NEQVRBKTsKCQkJCWlmKCR4bWwgPT09IEZBTFNFICkKCQkJCXsKCQkJCQkvL2xlIHNlcnZpY2UgZXN0IGNvdXDDqQoJCQkJCSRhcnJheSA9IDA7CgkJCQkJJGxpZ25lcyA9IDA7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJGFycmF5ID0ganNvbl9kZWNvZGUoanNvbl9lbmNvZGUoKGFycmF5KSR4bWwpLCBUUlVFKTsKCQkJCQkKCQkJCQlpZihpc3NldCgkYXJyYXlbJ2RpdmlzaW9uJ10pKQoJCQkJCXsKCQkJCQkJJGxpZ25lcyA9IGNvdW50KCRhcnJheVsnZGl2aXNpb24nXSk7CgkJCQkJCgkJCQkKCQkJCQkJLy9lY2hvICJsZSBuYiBkZSBsaWduZXMgZXN0IDogIi4kbGlnbmVzOwoJCQkJCQkkaT0wOwoJCQkJCQkvL29uIGluaXRpYWxpc2UgdW4gZGV1eGnDqG1lIGNvbXB0ZXVyCgkJCQkJCSRjb21wdGV1cj0wOwoJCQkJCQkKCQkJCQkJZm9yZWFjaCgkeG1sIGFzICR2YWx1ZSkKCQkJCQkJewoKCQkJCQkJCSRpKys7CgkJCQkJCQkkaWRkaXZpc2lvbiA9IGh0bWxlbnRpdGllcygkdmFsdWUtPmlkZGl2aXNpb24pOwoJCQkJCQkJJGxpYmVsbGUgPSBodG1sZW50aXRpZXMoJHZhbHVlLT5saWJlbGxlKTsKCgkJCQkJCQkvLyAxLSBvbiB2w6lyaWZpZSBzaSBjZXR0ZSDDqXByZXV2ZSBlc3QgZMOpasOgIGRhbnMgbGEgYmFzZQoJCQkJCQkJJHF1ZXJ5ID0gIlNFTEVDVCBpZGRpdmlzaW9uIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2RpdmlzaW9ucyBXSEVSRSBpZGRpdmlzaW9uID0gPyBBTkQgaWRvcmdhID0gPyBBTkQgc2Fpc29uID0gPyBBTkQgaWRlcHJldXZlID0gPyI7CgkJCQkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaWRkaXZpc2lvbiwgJGlkb3JnYSwkc2Fpc29uLCRpZGVwcmV1dmUpKTsKCgkJCQkJCQkJaWYoJGRicmVzdWx0ICAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkgCgkJCQkJCQkJewoJCQkJCQkJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2RpdmlzaW9ucyAoaWQsIGlkb3JnYSwgaWRlcHJldXZlLGlkZGl2aXNpb24sbGliZWxsZSxzYWlzb24saW5kaXZzLHNjb3BlKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkJCQkJCQkJCS8vZWNobyAkcXVlcnk7CgkJCQkJCQkJCSRjb21wdGV1cisrOwoJCQkJCQkJCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGlkb3JnYSwkaWRlcHJldXZlLCRpZGRpdmlzaW9uLCRsaWJlbGxlLCRzYWlzb24sJGluZGl2cywkc2NvcGUpKTsKCgkJCQkJCQkJCWlmKCEkZGJyZXN1bHRhdCkKCQkJCQkJCQkJewoJCQkJCQkJCQkJJGRlc2lnbmF0aW9uIC49ICRkYi0+RXJyb3JNc2coKTsJCQkKCQkJCQkJCQkJfQoKCQkJCQkJCQl9CgoKCQkJCQkJfS8vIGZpbiBkdSBmb3JlYWNoCgkJCQkJCQoJCQkJCX0KCQkJCXVuc2V0KCRzY29wZSk7CgkJCQl9CgkJCS8vfS8vZmluIGR1IHByZW1pZXIgZm9yZWFjaAoJCQoJfQoJCglmdW5jdGlvbiByZXRyaWV2ZV9kaXZfdG91cnMgKCRpZGVwcmV1dmUsJGlkZGl2aXNpb24pCgl7CgkJZ2xvYmFsICRnQ21zOwoJCSRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7IAoJCSRkYiA9IGNtc21zKCktPkdldERiKCk7CgkJJG5vdyA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpLCAiJyIpOwoJCSRzYWlzb24gPSAkcGluZy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CgkJJHBhZ2UgPSAieG1sX3Jlc3VsdF9pbmRpdiI7CgkJJHZhciA9ImVwcj0iLiRpZGVwcmV1dmUuIiZyZXNfZGl2aXNpb249Ii4kaWRkaXZpc2lvbjsKCQkKCQkJJHZhci49IiZhY3Rpb249cG91bGUiOwoKCQkKCQkkc2VydmljZSA9IG5ldyBTZXJ2aWNlbigpOwoJCSRsaWVuID0gJHNlcnZpY2UtPkdldExpbmsoJHBhZ2UsICR2YXIpOwoJCQoJCSR4bWwgPSBzaW1wbGV4bWxfbG9hZF9zdHJpbmcoJGxpZW4sICdTaW1wbGVYTUxFbGVtZW50JywgTElCWE1MX05PQ0RBVEEpOwoJCS8vdmFyX2R1bXAoJHhtbCk7CgkJaWYoJHhtbCA9PT0gRkFMU0UpCgkJewoJCQkvL2xlIHNlcnZpY2UgZXN0IGNvdXDDqQoJCQkkYXJyYXkgPSAwOwoJCQkkbGlnbmVzID0gMDsKCQl9CgkJZWxzZQoJCXsKCQkJJGFycmF5ID0ganNvbl9kZWNvZGUoanNvbl9lbmNvZGUoKGFycmF5KSR4bWwpLCBUUlVFKTsKCQkJJGxpZ25lcyA9IGNvdW50KCRhcnJheVsndG91ciddKTsKCQl9CgkJLy9lY2hvICJsZSBuYiBkZSBsaWduZXMgZXN0IDogIi4kbGlnbmVzOwoJCSRpID0gMDsKCQlmb3JlYWNoKCR4bWwgYXMgJHZhbHVlKQoJCXsKCQkJLy8kbGliZWxsZSA9ICR0YWJbJ2xpYmVsbGUnXTsKCQkJLy8kbGllbiA9ICR0YWJbJ2xpZW4nXTsKCQkJJGxpYmVsbGUgPSBodG1sZW50aXRpZXMoJHZhbHVlLT5saWJlbGxlKTsKCQkJLy9vbiB2YSBleHRyYWlyZSBsZSB0b3VyCgkJCSR0b3VyMSA9IGV4cGxvZGUoIiAiLCRsaWJlbGxlKTsKCQkJJHRvdXIyID0gdHJpbSgkdG91cjFbMF0sJ1QnKTsKCgkJCSRsaWVuID0gaHRtbGVudGl0aWVzKCR2YWx1ZS0+bGllbik7CgkJCSR0YWIxID0gZXhwbG9kZSgiJiIsJHZhbHVlLT5saWVuKTsKCgkJCSR0YWJsZWF1ID0gdHJpbSgkdGFiMVsyXSwgJ2N4X3RhYmxlYXU9Jyk7CgoJCQlpZigkdGFibGVhdSAhPSAnJykKCQkJewoJCQkJCgkJCQkvL09uIGEgcsOpY3Vww6lyw6kgbGVzIMOpbMOpbWVudHMsIG9uIHBldXQgZmFpcmUgbCdpbnNlcnRpb24gZGFucyBub3RyZSBiZGQKCQkJCS8vb24gdmEgZCdhYm9yZCB2w6lyaWZpZXIgc2kgY2VzIMOpbMOpbWVudHMgc29udCBwcsOpc2VudHMgb3Ugb24gY3LDqcOpIHVuIGluZGV4IHN1ciBsYSB0YWJsZQoJCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfdG91cnMgKGlkLCBpZGVwcmV1dmUsaWRkaXZpc2lvbixsaWJlbGxlLCB0b3VyLCB0YWJsZWF1LCBsaWVuLHNhaXNvbikgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGlkZXByZXV2ZSwkaWRkaXZpc2lvbiwkbGliZWxsZSwkdG91cjIsICR0YWJsZWF1LCRsaWVuLCRzYWlzb24pKTsKCQkJCWlmKCRkYnJlc3VsdCkKCQkJCXsKCQkJCSRpKys7CgkJCQkKCQkJCS8vZXQgc2kgb24gY29udGludWFpdCA/CgkJCQkvL3JlcHJlbmRyZSBsZXMgaW5mb3MgY2kgZGVzc3VzIHBvdXIgbGVzIHRyYWl0ZXIgIQoJCQkJLy9vbiBwb3VycmFpdCBwcsOpcGFyZXIgbGVzIGRpZmbDqXJlbnRzIHRhZ3MgOiBwb3VsZSwgY2xhc3NlbWVudCwgcGFydGllLgoJCQkJLy9vbiBtZXQgw6AgdGpvdXIgbGEgdGFibGUgZGl2aXNpb25zIHBvdXIgZGlyZSBxdSdvbiBhIGJpZW4gdXBsb2Fkw6kKCQkJCSR1cGxvYWRlZCA9IDE7CgkJCQkkcXVlcnkyID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2aXNpb25zIFNFVCB1cGxvYWRlZCA9ID8gV0hFUkUgaWRkaXZpc2lvbiA9ID8gQU5EIHNhaXNvbiA9ID8iOwoJCQkJJGRicmVzdWx0MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCBhcnJheSgkdXBsb2FkZWQsICRpZGRpdmlzaW9uLCAkc2Fpc29uKSk7CgkJCQkKCQkJCS8vb24gw6ljcml0IGRhbnMgbGUgam91cm5hbAoJCQkJJHN0YXR1cyA9ICdPayc7CgkJCQkkYWN0aW9uID0gJ3JldHJpZXZlX2Rpdl90b3Vycyc7CgkJCQkkZGVzaWduYXRpb24gPSAkaS4iIHRvdXIocykgaW5zw6lyw6kocykgcG91ciBsXCfDqXByZXV2ZSAiLiRpZGVwcmV1dmU7CgkJCQlwaW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsICRkZXNpZ25hdGlvbiwkYWN0aW9uKTsKCQkJCX0KCQkJfQoKCgoKCQl9Cgl9CglmdW5jdGlvbiByZXRyaWV2ZV9kaXZfcGFydGllcyAoJGlkZXByZXV2ZSwkaWRkaXZpc2lvbiwkdGFibGVhdSwkdmFsZXVyKQoJewoJCWdsb2JhbCAkZ0NtczsKCQkkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOyAKCQkkZGIgPSBjbXNtcygpLT5HZXREYigpOwoJCSRzYWlzb24gPSAkcGluZy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CgkJJHBhZ2UgPSAieG1sX3Jlc3VsdF9pbmRpdiI7CgkJJHZhciA9ImVwcj0iLiRpZGVwcmV1dmUuIiZyZXNfZGl2aXNpb249Ii4kaWRkaXZpc2lvbjsKCQkKCQkJJHZhci49IiZhY3Rpb249cGFydGllIjsKCgkJCgkJJHNlcnZpY2UgPSBuZXcgU2VydmljZW4oKTsKCQkkbGllbiA9ICRzZXJ2aWNlLT5HZXRMaW5rKCRwYWdlLCAkdmFyKTsKCQkKCQkkeG1sID0gc2ltcGxleG1sX2xvYWRfc3RyaW5nKCRsaWVuLCAnU2ltcGxlWE1MRWxlbWVudCcsIExJQlhNTF9OT0NEQVRBKTsKCQkvL3Zhcl9kdW1wKCR4bWwpOwoJCWlmKCR4bWwgPT09IEZBTFNFKQoJCXsKCQkJLy9sZSBzZXJ2aWNlIGVzdCBjb3Vww6kKCQkJJGFycmF5ID0gMDsKCQkJJGxpZ25lcyA9IDA7CgkJfQoJCWVsc2UKCQl7CgkJCSRhcnJheSA9IGpzb25fZGVjb2RlKGpzb25fZW5jb2RlKChhcnJheSkkeG1sKSwgVFJVRSk7CgkJCSRsaWduZXMgPSBjb3VudCgkYXJyYXlbJ3BhcnRpZSddKTsKCQl9CgkJLy9lY2hvICJsZSBuYiBkZSBsaWduZXMgZXN0IDogIi4kbGlnbmVzOwoJCWlmKCRsaWduZXMgIT0gMCkKCQl7CgkJCQoJCQlmb3JlYWNoKCR4bWwgYXMgJHZhbHVlKQoJCQl7CgkJCQkvLyRsaWJlbGxlID0gJHRhYlsnbGliZWxsZSddOwoJCQkJLy8kbGllbiA9ICR0YWJbJ2xpZW4nXTsKCQkJCSRsaWJlbGxlID0gaHRtbGVudGl0aWVzKCR2YWx1ZS0+bGliZWxsZSk7CgkJCQkkdmFpbiA9IGh0bWxlbnRpdGllcygkdmFsdWUtPnZhaW4pOwoJCQkJJHBlcmQgPSBodG1sZW50aXRpZXMoJHZhbHVlLT5wZXJkKTsKCQkJCSRmb3JmYWl0ID0gaHRtbGVudGl0aWVzKCR2YWx1ZS0+Zm9yZmFpdCk7CgoKCQkJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X3BhcnRpZXMgKGlkLCBpZGVwcmV1dmUsaWRkaXZpc2lvbix0YWJsZWF1LGxpYmVsbGUsIHZhaW4scGVyZCxmb3JmYWl0LCBzYWlzb24pIFZBTFVFUyAoJycsID8sID8sID8sID8sID8sID8sID8sID8pIjsKCQkJCS8vZWNobyAkcXVlcnk7CgkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaWRlcHJldXZlLCRpZGRpdmlzaW9uLCR0YWJsZWF1LCRsaWJlbGxlLCAkdmFpbiwgJHBlcmQsICRmb3JmYWl0LCRzYWlzb24pKTsKCgoJCQl9CgkJCS8vbGEgcmVxdWV0ZSBhIGZvbmN0aW9ubsOpLCBvbiBwZXV0IG1ldHRyZSBsZSBzdGF0dXQgZHUgdG91ciBhICJ1cGxvYWTDqSIKCQkJJHF1ZXJ5MiA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2Rpdl90b3VycyBTRVQgdXBsb2FkZWRfcGFydGllcyA9IDEgV0hFUkUgaWQgPSA/IjsKCQkJJGRicmVzdWx0MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLGFycmF5KCR2YWxldXIpKTsKCQl9CgkJCgkJCgkJCgl9CglmdW5jdGlvbiByZXRyaWV2ZV9kaXZfY2xhc3NlbWVudCAoJHZhbGV1cikKCXsKCQlnbG9iYWwgJGdDbXM7CgkJJHBpbmcgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ1BpbmcnKTsgCgkJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCQkkc2Fpc29uID0gJHBpbmctPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwoJCSRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKCQkkZGVzaWduYXRpb24gPSAnJzsKCQkvL29uIGZhaXQgbGEgcmVxdWV0ZQoJCSRxdWVyeSA9ICJTRUxFQ1QgaWRlcHJldXZlLCBpZGRpdmlzaW9uLHRhYmxlYXUsdG91ciBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfdG91cnMgV0hFUkUgaWQgPSA/IjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdmFsZXVyKSk7CgkJJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCQkkaWRlcHJldXZlID0gJHJvd1snaWRlcHJldXZlJ107CgkJJGlkZGl2aXNpb24gPSAkcm93WydpZGRpdmlzaW9uJ107CgkJJHRhYmxlYXUgPSAkcm93Wyd0YWJsZWF1J107CgkJJHRvdXIgPSAkcm93Wyd0b3VyJ107CgkJCgkJCgkJJHBhZ2UgPSAieG1sX3Jlc3VsdF9pbmRpdiI7CgkJJHZhciA9ImVwcj0iLiRpZGVwcmV1dmUuIiZyZXNfZGl2aXNpb249Ii4kaWRkaXZpc2lvbi4iJmN4X3RhYmxlYXU9Ii4kdGFibGVhdTsKCQkKCQkJJHZhci49IiZhY3Rpb249Y2xhc3NlbWVudCI7CgoJCS8vZWNobyAkdmFyOwoJCSRzZXJ2aWNlID0gbmV3IFNlcnZpY2VuKCk7CgkJJGxpZW4gPSAkc2VydmljZS0+R2V0TGluaygkcGFnZSwgJHZhcik7CgkJCgkJJHhtbCA9IHNpbXBsZXhtbF9sb2FkX3N0cmluZygkbGllbiwgJ1NpbXBsZVhNTEVsZW1lbnQnLCBMSUJYTUxfTk9DREFUQSk7CgkJLy92YXJfZHVtcCgkeG1sKTsKCQlpZigkeG1sID09PSBGQUxTRSApCgkJewoJCQkvL2xlIHNlcnZpY2UgZXN0IGNvdXDDqQoJCQkkYXJyYXkgPSAwOwoJCQkkbGlnbmVzID0gMDsKCQl9CgkJZWxzZQoJCXsKCQkJJGFycmF5ID0ganNvbl9kZWNvZGUoanNvbl9lbmNvZGUoKGFycmF5KSR4bWwpLCBUUlVFKTsKCQkJJGxpZ25lcyA9IGNvdW50KCRhcnJheVsnY2xhc3NlbWVudCddKTsKCQl9CgkJLy9lY2hvICJsZSBuYiBkZSBsaWduZXMgZXN0IDogIi4kbGlnbmVzOwoJCWlmKCRsaWduZXMgIT0gMCkKCQl7CgkJCQoJCQlmb3JlYWNoKCR4bWwgYXMgJHZhbHVlKQoJCQl7CgkJCQkvLyRsaWJlbGxlID0gJHRhYlsnbGliZWxsZSddOwoJCQkJLy8kbGllbiA9ICR0YWJbJ2xpZW4nXTsKCQkJCSRyYW5nID0gaHRtbGVudGl0aWVzKCR2YWx1ZS0+cmFuZyk7CgkJCQkkbm9tID0gaHRtbGVudGl0aWVzKCR2YWx1ZS0+bm9tKTsKCQkJCSRjbHQgPSBodG1sZW50aXRpZXMoJHZhbHVlLT5jbHQpOwoJCQkJJGNsdWIgPSBodG1sZW50aXRpZXMoJHZhbHVlLT5jbHViKTsKCgkJCQkvL29uIGZhaXQgdW5lIGNvbmRpdGlvbm5lbGxlIHBvdXIgcsOpY3Vww6lyZXIgbGEgbGljZW5jZSBkdSBqb3VldXIgZHUgY2x1YgoJCQkJJG5vbV9lcXVpcGVzID0gJHBpbmctPkdldFByZWZlcmVuY2UoJ25vbV9lcXVpcGVzJyk7CgkJCQkvLyRjbHViMiA9IHN0cmlzdHIoJG5vbV9lcXVpcGVzLCRjbHViKQoJCQkJaWYoc3RyaXN0cigkbm9tX2VxdWlwZXMsJGNsdWIpID09PSAndHJ1ZScpCgkJCQl7CgkJCQkJCgkJCQkJLy/Dp2EgbWF0Y2ggISEKCQkJCQkkY29vbCA9IDE7CgkJCQkJLy9vbiBlY3JpdCBkYW5zIGxlIGpvdXJuYWwKCQkJCQkkc3RhdHVzID0gJ09rJzsKCQkJCQkkZGVzaWduYXRpb24uPSAkbm9tLiIgZmluaXQgw6AgbGEgcGxhY2UgIi4kcmFuZzsKCQkJCQkkYWN0aW9uID0gJ1LDqWN1cCBjbGFzc2VtZW50JzsKCQkJCQlwaW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsICRkZXNpZ25hdGlvbiwkYWN0aW9uKTsKCQkJCX0KCQkJCSRwb2ludHMgPSBodG1sZW50aXRpZXMoJHZhbHVlLT5wb2ludHMpOwoKCQkJCS8vT24gYSByw6ljdXDDqXLDqSBsZXMgw6lsw6ltZW50cywgb24gcGV1dCBmYWlyZSBsJ2luc2VydGlvbiBkYW5zIG5vdHJlIGJkZAkJCQoJCQkJLy9PbiBmYWl0IHVuZSBjb25kaXRpb25uZWxsZSBwb3VyIGluY2x1cmUgdW5pcXVlbWVudCBsZXMgZ2VucyBkdSBjbHViID8KCQkJCS8vaWwgZmFpdCBmYWlyZSB1bmUgbm91dmVsbGUgcHLDqWbDqXJlbmNlCgoKCgkJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2Rpdl9jbGFzc2VtZW50IChpZCwgaWRlcHJldXZlLGlkZGl2aXNpb24sdGFibGVhdSx0b3VyLHJhbmcsIG5vbSxjbHQsY2x1Yixwb2ludHMsIHNhaXNvbikgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkJLy9lY2hvICRxdWVyeTsKCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpZGVwcmV1dmUsJGlkZGl2aXNpb24sJHRhYmxlYXUsJHRvdXIsJHJhbmcsICRub20sICRjbHQsICRjbHViLCAkcG9pbnRzLCRzYWlzb24pKTsKCgkJCQlpZighJGRicmVzdWx0KQoJCQkJewoJCQkJCSRkZXNpZ25hdGlvbiAuPSAkZGItPkVycm9yTXNnKCk7CgkJCQl9CgkJCQkKCQkJCQoJCQl9CgkJCS8vbGEgcmVxdWV0ZSBhIGZvbmN0aW9ubsOpLCBvbiBwZXV0IG1ldHRyZSBsZSBzdGF0dXQgZHUgdG91ciBhICJ1cGxvYWTDqSIKCQkJJHF1ZXJ5MiA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2Rpdl90b3VycyBTRVQgdXBsb2FkZWRfY2xhc3NlbWVudCA9IDEgV0hFUkUgaWQgPSA/IjsKCQkJJGRicmVzdWx0MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLGFycmF5KCR2YWxldXIpKTsKCQkJJGRlc2lnbmF0aW9uLj0gJ3LDqWN1cCB0YWJsZWF1ICcuJHRhYmxlYXUuJyBkdSB0b3VyICcuJHRvdXIuJyBkZSBsXCfDqXByZXV2ZSAnLiRpZGVwcmV1dmU7CgkJCSRzdGF0dXMgPSAnT0snOwoJCQkkYWN0aW9uID0gJ2Rpdl9jbGFzc2VtZW50JzsKCQkJcGluZ19hZG1pbl9vcHM6OmVjcmlyZWpvdXJuYWwoJG5vdywkc3RhdHVzLCAkZGVzaWduYXRpb24sJGFjdGlvbik7CgkJfQoJCQoJCQoJCQoJfQoJZnVuY3Rpb24gcmV0cmlldmVfcG91bGVfcmVuY29udHJlcyggJGlkZGl2LCRpZHBvdWxlLCRjYWwsJGlkZXByZXV2ZSkKCXsKCQlnbG9iYWwgJGdDbXM7CgkJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCQkvL2VjaG8gImxhIHZhbGV1ciBkZSBjYWwgZXN0IDoiLiRjYWw7CgkJJHBpbmcgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ1BpbmcnKTsKCQkvL3JlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmNhbGN1bHMucGhwJyk7CgkJLy9lY2hvICJnbG9wMiI7CQoJCSRhdWpvdXJkaHVpID0gZGF0ZSgnWW1kJyk7CgkJJGF1am91cmRodWkgPSBuZXcgRGF0ZVRpbWUoICRhdWpvdXJkaHVpICk7CgkJJGF1am91cmRodWkgPSAkYXVqb3VyZGh1aS0+Zm9ybWF0KCdZbWQnKTsKCQkvL3Zhcl9kdW1wKCRhdWpvdXJkaHVpKTsKCQkkc2Fpc29uID0gJHBpbmctPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwoJCSRzZXJ2aWNlID0gbmV3IFNlcnZpY2VuKCk7CgkJJHBhZ2UgPSAieG1sX3Jlc3VsdF9lcXUiOwoJCSR2YXIgPSAiYXV0bz0xJkQxPSIuJGlkZGl2LiImY3hfcG91bGU9Ii4kaWRwb3VsZTsKCQkkbGllbiA9ICRzZXJ2aWNlLT5HZXRMaW5rKCRwYWdlLCAkdmFyKTsKCQkkeG1sID0gc2ltcGxleG1sX2xvYWRfc3RyaW5nKCRsaWVuLCAnU2ltcGxlWE1MRWxlbWVudCcsIExJQlhNTF9OT0NEQVRBKTsKCQkvL2VjaG8gImxhIHZhbGV1ciBkZSBjYWwgZXN0IDoiLiRjYWw7CgkJaWYoJHhtbCA9PT0gRkFMU0UpCgkJewoJCQkvL2xlIHNlcnZpY2UgZXN0IGNvdXDDqQoJCQkkYXJyYXkgPSAwOwoJCQkkbGlnbmVzID0gMDsKCQl9CgkJZWxzZQoJCXsKCQkJJGFycmF5ID0ganNvbl9kZWNvZGUoanNvbl9lbmNvZGUoKGFycmF5KSR4bWwpLCBUUlVFKTsKCQkJJGxpZ25lcyA9IGNvdW50KCRhcnJheVsndG91ciddKTsKCQl9CgkJLy9lY2hvICJsZSBuYiBkZSBsaWduZXMgZXN0IDogIi4kbGlnbmVzOwoJCS8vJHJlc3VsdCA9ICRzZXJ2aWNlLT5nZXRQb3VsZVJlbmNvbnRyZXMoJGlkZGl2LCRpZHBvdWxlKTsKCgkJJGRlc2lnbmF0aW9uID0gJyc7CgkJLy92YXJfZHVtcCgkcmVzdWx0KTsKCQkvL3Zhcl9kdW1wKCR4bWwpOwoJCS8qKi8KCQkvL29uIHZhIHRlc3RlciBsYSB2YWxldXIgZGUgbGEgdmFyaWFibGUgJHJlc3VsdAoJCS8vY2VsYSBwZXJtZXQgZCfDqXZpdGVyIGRlIGJvdWNsZXIgcydpbCBuJ3kgYSByaWVuIGRhbnMgbGUgdGFibGVhdQoJCQoJCWlmKCFpc19hcnJheSgkYXJyYXkpKQoJCXsgCgoJCQkJLy9sZSB0YWJsZWF1IGVzdCB2aWRlLCBpbCBmYXV0IGVudm95ZXIgdW4gbWVzc2FnZSBwb3VyIGxlIHNpZ25hbGVyCgkJCQkkZGVzaWduYXRpb24uPSAibGUgc2VydmljZSBlc3QgY291cMOpIjsKCQkJCS8vJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJCQkJLy8kdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdwb3VsZXMnKTsKCQl9ICAgCgkJZWxzZQoJCXsKCQkkaT0wOwoJCQlmb3JlYWNoKCR4bWwgYXMgJGNsZSA9PiR0YWIpCgkJCXsKCgkJCQkKCQkJCSRsaWJlbGxlID0gKGlzc2V0KCR0YWItPmxpYmVsbGUpPyIkdGFiLT5saWJlbGxlIjoiIik7CgkJCQkvL2VjaG8gJGxpYmVsbGU7CgkJCQkkZXh0cmFjdGlvbiA9IHN1YnN0cigkbGliZWxsZSwtOCk7CgkJCQkkZGF0ZV9leHRyYWN0ID0gZXhwbG9kZSgnLycsICRleHRyYWN0aW9uKTsKCQkJCSRhbm5lZV9kYXRlID0gJGRhdGVfZXh0cmFjdFsyXSArIDIwMDA7CgkJCQkkZGF0ZV9ldmVudCA9ICRhbm5lZV9kYXRlLiItIi4kZGF0ZV9leHRyYWN0WzFdLiItIi4kZGF0ZV9leHRyYWN0WzBdOwoJCQkJCgkJCQkKCQkJCS8vdmFyX2R1bXAoICRkYXRlX2V2ZW50KTsKCQkJCSRlcXVhID0gKGlzc2V0KCR0YWItPmVxdWEpPyIkdGFiLT5lcXVhIjoiIik7CgkJCQkkZXF1YiA9IChpc3NldCgkdGFiLT5lcXViKT8iJHRhYi0+ZXF1YiI6IiIpOwoKCQkJCS8vb24gZmFpdCBxdWVscXVlIHRyYW5zZm9ybWF0aW9ucyBkZXMgaW5mb3MgcmVjdWVpbGxpZXMKCQkJCXByZWdfbWF0Y2hfYWxsKCcjWzAtOV0rIycsJGxpYmVsbGUsJGV4dHJhY3QpOwoJCQkJJHRvdXIgPSAkZXh0cmFjdFswXVswXTsKCgoJCQkJJHVwbG9hZGVkID0gMDsKCQkJCSRub21fZXF1aXBlcyA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdub21fZXF1aXBlcycpOwoJCQkJJGNsdWJhID0gc3RycG9zKCRlcXVhLCRub21fZXF1aXBlcyk7CgkJCQkkY2x1YmIgPSBzdHJwb3MoJGVxdWIsJG5vbV9lcXVpcGVzKTsKCgkJCQkJaWYgKCRjbHViYSAhPT0gZmFsc2UgfHwgJGNsdWJiICE9PSBmYWxzZSkKCQkJCQl7CgkJCQkJCSRjbHViID0gMTsKCQkJCQkJJGFmZmljaGFnZSA9IDE7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCSRjbHViID0gMDsKCQkJCQl9CgoJCQkJJHNjb3JlYSA9IChpc3NldCgkdGFiLT5zY29yZWEpPyIkdGFiLT5zY29yZWEiOiIiKTsKCQkJCSRzY29yZWIgPSAoaXNzZXQoJHRhYi0+c2NvcmViKT8iJHRhYi0+c2NvcmViIjoiIik7CgkJCQkkbGllbiA9IChpc3NldCgkdGFiLT5saWVuKT8iJHRhYi0+bGllbiI6IiIpOwoKCQkJCS8vCgkJCQkvL29uIHbDqXJpZmllIHF1ZSBsZSBzY29yZSBhIGJpZW4gw6l0w6kgc2Fpc2kKCQkJCS8vc2kgbGUgc2NvcmUgZXN0IHNhaXNpIG9uIG9idGllbnQgdW4gc3RyaW5nIHBvdXIgbGVzIHZhcmlhYmxlcyBzY29yZWEgZXQgc2NvcmViCgkJCQkvL3Npbm9uIGlsIHMnYWdpdCBkJ3VuIGFycmF5CQoKCQkJCQlpZihpc19hcnJheSgkc2NvcmVhKSAmJiBpc19hcnJheSgkc2NvcmViKSkKCQkJCQl7CgkJCQkJCS8vbGUgc2NvcmUgbidlc3QgcGFzIHBhcnZlbnUgb3UgbGUgbWF0Y2ggbidhIHBhcyDDqXTDqSBqb3XDqQoJCQkJCQkvL09uIGwnZW5yZWdpc3RyZSBxZCBtw6ptZQoJCQkJCQkkc2NvcmVhID0gMDsKCQkJCQkJJHNjb3JlYiA9IDA7CgkJCQkJCSR1cGRhdGUgPSAwOwkJCgkJCQkJfQoJCQkJCgkJCQkKCQkJCWlmKGlzc2V0KCRjYWwpICYmICRjYWwgPT0gJ2NhbCcpCgkJCQl7CgkJCQkJLy9vbiByw6ljdXDDqHJlIHRvdXQgc2FucyByaWVuIG1ldHRyZSDDoCBqb3VyCgkJCQkJLy9vbiB2w6lyaWZpZSBzaSBsJ2VucmVnaXN0cmVtZW50IGVzdCBkw6lqw6AgbMOgCgkJCQkJJHF1ZXJ5ID0gIlNFTEVDVCBpZCxsaWVuLCBzY29yZWEsIHNjb3JlYiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBXSEVSRSBpZGRpdiA9PyBBTkQgaWRwb3VsZSA9ID8gQU5EIGRhdGVfZXZlbnQgPSA/IEFORCBlcXVhID0gPyBBTkQgZXF1YiA9ID8iOwoJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpZGRpdiwkaWRwb3VsZSwgJGRhdGVfZXZlbnQsJGVxdWEsJGVxdWIpKTsKCgkJCQkJLy9pbCBuJ3kgYSBwYXMgZCdlbnJlZ2lzdHJlbWVudCBhdXBhcmF2YW50LCBvbiBwZXV0IGNvbnRpbnVlcgoKCQkJCQkJaWYoJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID09IDApIAoJCQkJCQl7CgkJCQkJCQkkcXVlcnkxID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyAoaWQsc2Fpc29uLGlkcG91bGUsIGlkZGl2LCBjbHViLCB0b3VyLCBkYXRlX2V2ZW50LCB1cGxvYWRlZCwgbGliZWxsZSwgZXF1YSwgZXF1Yiwgc2NvcmVhLCBzY29yZWIsIGxpZW4pIFZBTFVFUyAoJycsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIjsKCQkJCQkJCS8vZWNobyAkcXVlcnk7CgkJCQkJCQkkaSsrOwoJCQkJCQkJJHVwbG9hZGVkID0gMDsKCQkJCQkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTEsYXJyYXkoJHNhaXNvbiwkaWRwb3VsZSwgJGlkZGl2LCAkY2x1YiwgJHRvdXIsICRkYXRlX2V2ZW50LCAkdXBsb2FkZWQsICRsaWJlbGxlLCAkZXF1YSwgJGVxdWIsICRzY29yZWEsICRzY29yZWIsICRsaWVuKSk7CgoJCQkJCQkJCWlmKCEkZGJyZXN1bHRhdCkKCQkJCQkJCQl7CgkJCQkJCQkJCSRkZXNpZ25hdGlvbi49ICRkYi0+RXJyb3JNc2coKTsKCgoJCQkJCQkJCX0KCQkJCQkJCQkKCQkJCQkJCQkvL29uIHByw6lwYXJlIGxlIHRhZwoJCQkJCQkJJGluZGl2cyA9IDA7Ly9wdWlzcXUnb24gZXN0IGRhbnMgdW4gY29udGV4dGUgZCfDqXF1aXBlcwoJCQkJCQkJJHRhZyA9ICJ7UGluZyBhY3Rpb249J3Bhci1lcXVpcGVzJyI7CgkJCQkJCQkkdGFnLj0iIGlkZXByZXV2ZT0nJGlkZXByZXV2ZSciOwoKCQkJCQkJCQlpZihpc3NldCgkZGF0ZV9ldmVudCkgJiYgJGRhdGVfZXZlbnQgIT0nJykKCQkJCQkJCQl7CgkJCQkJCQkJCSR0YWcuPSAiIGRhdGVfZGVidXQ9JyRkYXRlX2V2ZW50JyI7CgkJCQkJCQkJfQoJCQkJCQkJCWlmKGlzc2V0KCRkYXRlX2V2ZW50KSAmJiAkZGF0ZV9ldmVudCAhPScnKQoJCQkJCQkJCXsKCQkJCQkJCQkJJHRhZy49ICIgZGF0ZV9maW49JyRkYXRlX2V2ZW50JyI7CgkJCQkJCQkJfQoJCQkJCQkJJHRhZy49In0iOwoJCQkJCQkJLy9PbiBmYWl0IGwnaW5jbHVzaW9uIGRzIGxhIGJkZAoJCQkJCQkJLy8gb24gdsOpcmlmaWUgZCdhYm9yZCBxdWUgbCdlbnJlZ2lzdHJlbWVudCBuJ2VzdCBwYXMgZMOpasOgIGVuIGJkZAoJCQkJCQkJJHF1ZXJ5MiA9ICJTRUxFQ1QgbnVtam91cm4sIGRhdGVfZGVidXQsIGRhdGVfZmluLCBpZGVwcmV1dmUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2FsZW5kcmllciBXSEVSRSAgbnVtam91cm4gPSA/IEFORCBkYXRlX2RlYnV0ID0gPyBBTkQgZGF0ZV9maW4gPT8gQU5EIGlkZXByZXV2ZSA9ID8gIjsvL0FORCBzY29yZWEgIT0wIEFORCBzY29yZWIgIT0wIjsKCQkJCQkJCSRkYnJlc3VsdDIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJHRvdXIsICRkYXRlX2V2ZW50LCAkZGF0ZV9ldmVudCwkaWRlcHJldXZlKSk7CgoJCQkJCQkJCWlmICgkZGJyZXN1bHQyLT5SZWNvcmRDb3VudCgpPT0wKQoJCQkJCQkJCXsKCgoKCQkJCQkJCQkJCSRxdWVyeTMgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIgKGlkLGRhdGVfZGVidXQsZGF0ZV9maW4saWRlcHJldXZlLCBudW1qb3Vybix0YWcsc2Fpc29uKSBWQUxVRVMgKCAnJywgPywgPywgPywgPywgPywgPykiOwoJCQkJCQkJCQkJJGRicmVzdWx0MyA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkzLCBhcnJheSgkZGF0ZV9ldmVudCwkZGF0ZV9ldmVudCwkaWRlcHJldXZlLCR0b3VyLCR0YWcsJHNhaXNvbikpOwoKCQkJCQkJCQkJCWlmKCRkYnJlc3VsdDMpCgkJCQkJCQkJCQl7CgkJCQkJCQkJCQkJJGRlc2lnbmF0aW9uLj0gJGRiLT5FcnJvck1zZygpOwoJCQkJCQkJCQkJfQoJCQkJCQkJCQkJLy8gb24gaW5zZXJ0IGF1c3NpIGRhbnMgQ0dDYWxlbmRhciA/CgkJCQkJCQkJCQkvLyBDaGljaGUgIQoJCQkJCQkJCQkJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIFdIRVJFIGlkZXByZXV2ZSA9ID8iOwoJCQkJCQkJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGlkZXByZXV2ZSkpOwoJCQkJCQkJCQkJJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCQkJCQkJCQkJCSRuYW1lID0gJHJvd1snbmFtZSddOwoJCQkJCQkJCQkJLy8gb24gcsOpY3Vww6hyZSBpZCBkcyBkaWZmw6lyZW50ZXMgdGFibGVzCgkJCQkJCQkJCQkvL1RvdXQgZCdhYm9yZCBjZWx1aSBkZSBsYSB0YWJsZSBldmVudHMKCQkJCQkJCQkJCSRxdWVyeTEgPSAiU0VMRUNUIGlkIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9jZ2NhbGVuZGFyX2V2ZW50c19zZXEiOwoJCQkJCQkJCQkJJGRicmVzdWx0MSA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkxKTsKCQkJCQkJCQkJCSRyb3cgPSAkZGJyZXN1bHQxLT5GZXRjaFJvdygpOwoJCQkJCQkJCQkJJGlkX2V2ZW50ID0gJHJvd1snaWQnXSsxOwoJCQkJCQkJCQkJJHF1ZXJ5X2NhbCA9ICJJTlNFUlQgSU5UTyBkZW1vX21vZHVsZV9jZ2NhbGVuZGFyX2V2ZW50cwoJCQkJCQkJCQkJICAgICAgICAgICAoZXZlbnRfaWQsIGV2ZW50X3RpdGxlLCBldmVudF9kZXRhaWxzLCBldmVudF9kYXRlX3N0YXJ0LCBldmVudF9kYXRlX2VuZCkKCQkJCQkJCQkJCSAgICAgICAgICAgIFZBTFVFUyAoPywgPywgPyAsID8sID8pIjsKCQkJCQkJCQkJCSRkYnJlc3VsdF9jYWwgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5X2NhbCwgYXJyYXkoJGlkX2V2ZW50LCRuYW1lLCR0YWcsJGRhdGVfZXZlbnQsJGRhdGVfZXZlbnQpKTsKCQkJCQkJCQkJCS8vb24gaW5zw6hyZSBhdXNzaSBsJ8OpdsOpbmVtZW50IGRhbnMgdW5lIGNhdGVnb3JpZSBwYXIgZMOpZmF1dCBsYSBnw6luw6lyYWxlIGRvbmMgMQoJCQkJCQkJCQkJJGNhdCA9IDE7CgkJCQkJCQkJCQkkcXVlcnlfY2F0ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfY2djYWxlbmRhcl9ldmVudHNfdG9fY2F0ZWdvcmllcyAoY2F0ZWdvcnlfaWQsIGV2ZW50X2lkKSBWQUxVRVMgKD8sPykiOwoJCQkJCQkJCQkJJGRicmVzdWx0X2NhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnlfY2F0LCBhcnJheSgkY2F0LCRpZF9ldmVudCkpOwoJCQkJCQkJCQkJLy9vbiBtb2RpZmllIGxlIGV2ZW50c19zZXEKCQkJCQkJCQkJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9jZ2NhbGVuZGFyX2V2ZW50c19zZXEgU0VUIGlkID0gaWQrMSI7CgkJCQkJCQkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCQkJCQkJCQkJCS8vdW5zZXQoJGlkX2V2ZW50KTsKCQkJCQkJCQkJCQoJCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQkJCgoJCQkJCgkJCQl9CQoJCQkJaWYoIGlzc2V0KCRjYWwpICYmICRjYWwgPT0gJ2FsbCcpCgkJCQl7CgkJCQkJLy9vbiByw6ljdXDDqHJlIHRvdXMgbGVzIGRlcm5pZXJzIHLDqXN1bHRhdHMKCQkJCQkvL3Zhcl9kdW1wKCRhdWpvdXJkaHVpKTsKCQkJCQkvL2VjaG8gJGRhdGVfZXZlbnQKCQkJCQkkZGF0ZTIgPSBuZXcgRGF0ZVRpbWUoICRkYXRlX2V2ZW50ICk7CgkJCQkJJGRhdGUyID0gJGRhdGUyLT5mb3JtYXQoJ1ltZCcpOwoJCQkJCWlmKCRkYXRlMiA8PSAkYXVqb3VyZGh1aSkKCQkJCQl7CgkJCQkJCS8vZWNobyAib24gZXN0IGRhbnMgbGUgcGFzc8OpIjsKCQkJCQkJJHF1ZXJ5ID0gIlNFTEVDVCBpZCxsaWVuLCBzY29yZWEsIHNjb3JlYiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBXSEVSRSBpZGRpdiA9PyBBTkQgaWRwb3VsZSA9ID8gQU5EIGRhdGVfZXZlbnQgPSA/IEFORCBlcXVhID0gPyBBTkQgZXF1YiA9ID8iOwoJCQkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaWRkaXYsJGlkcG91bGUsICRkYXRlX2V2ZW50LCRlcXVhLCRlcXViKSk7CgoJCQkJCQkvL2lsIG4neSBhIHBhcyBkJ2VucmVnaXN0cmVtZW50IGF1cGFyYXZhbnQsIG9uIHBldXQgY29udGludWVyCgoJCQkJCQkJaWYoJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID09IDApIAoJCQkJCQkJewoJCQkJCQkJCSRxdWVyeTEgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzIChpZCxzYWlzb24saWRwb3VsZSwgaWRkaXYsIGNsdWIsIHRvdXIsIGRhdGVfZXZlbnQsIHVwbG9hZGVkLCBsaWJlbGxlLCBlcXVhLCBlcXViLCBzY29yZWEsIHNjb3JlYiwgbGllbikgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkJCQkJCS8vZWNobyAkcXVlcnk7CgkJCQkJCQkJJGkrKzsKCQkJCQkJCQkkdXBsb2FkZWQgPSAwOwoJCQkJCQkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTEsYXJyYXkoJHNhaXNvbiwkaWRwb3VsZSwgJGlkZGl2LCAkY2x1YiwgJHRvdXIsICRkYXRlX2V2ZW50LCAkdXBsb2FkZWQsICRsaWJlbGxlLCAkZXF1YSwgJGVxdWIsICRzY29yZWEsICRzY29yZWIsICRsaWVuKSk7CgoJCQkJCQkJCQlpZighJGRicmVzdWx0YXQpCgkJCQkJCQkJCXsKCQkJCQkJCQkJCSRkZXNpZ25hdGlvbi49ICRkYi0+RXJyb3JNc2coKTsKCgoJCQkJCQkJCQl9CgkJCQkJCQkJCQkvL29uIHByw6lwYXJlIGxlIHRhZwoJCQkJCQkJCQkkaW5kaXZzID0gMDsvL3B1aXNxdSdvbiBlc3QgZGFucyB1biBjb250ZXh0ZSBkJ8OpcXVpcGVzCgkJCQkJCQkJCSR0YWcgPSAie1BpbmcgYWN0aW9uPSdwYXItZXF1aXBlcyciOwoJCQkJCQkJCQkkdGFnLj0iIGlkZXByZXV2ZT0nJGlkZXByZXV2ZSciOwoKCQkJCQkJCQkJCWlmKGlzc2V0KCRkYXRlX2V2ZW50KSAmJiAkZGF0ZV9ldmVudCAhPScnKQoJCQkJCQkJCQkJewoJCQkJCQkJCQkJCSR0YWcuPSAiIGRhdGVfZGVidXQ9JyRkYXRlX2V2ZW50JyI7CgkJCQkJCQkJCQl9CgkJCQkJCQkJCQlpZihpc3NldCgkZGF0ZV9ldmVudCkgJiYgJGRhdGVfZXZlbnQgIT0nJykKCQkJCQkJCQkJCXsKCQkJCQkJCQkJCQkkdGFnLj0gIiBkYXRlX2Zpbj0nJGRhdGVfZXZlbnQnIjsKCQkJCQkJCQkJCX0KCQkJCQkJCQkJJHRhZy49In0iOwoJCQkJCQkJCQkJLy9PbiBmYWl0IGwnaW5jbHVzaW9uIGRzIGxhIGJkZAoJCQkJCQkJCQkJLy8gb24gdsOpcmlmaWUgZCdhYm9yZCBxdWUgbCdlbnJlZ2lzdHJlbWVudCBuJ2VzdCBwYXMgZMOpasOgIGVuIGJkZAoJCQkJCQkJCQkJJHF1ZXJ5OCA9ICJTRUxFQ1QgbnVtam91cm4sIGRhdGVfZGVidXQsIGRhdGVfZmluLCBpZGVwcmV1dmUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2FsZW5kcmllciBXSEVSRSAgbnVtam91cm4gPSA/IEFORCBkYXRlX2RlYnV0ID0gPyBBTkQgZGF0ZV9maW4gPT8gQU5EIGlkZXByZXV2ZSA9ID8gIjsvL0FORCBzY29yZWEgIT0wIEFORCBzY29yZWIgIT0wIjsKCQkJCQkJCQkJCSRkYnJlc3VsdDggPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5OCwgYXJyYXkoJHRvdXIsICRkYXRlX2V2ZW50LCAkZGF0ZV9ldmVudCwkaWRlcHJldXZlKSk7CgoJCQkJCQkJCQkJCWlmICgkZGJyZXN1bHQ4LT5SZWNvcmRDb3VudCgpPT0wKQoJCQkJCQkJCQkJCXsKCgoKCQkJCQkJCQkJCQkJCSRxdWVyeTkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIgKGlkLGRhdGVfZGVidXQsZGF0ZV9maW4saWRlcHJldXZlLCBudW1qb3Vybix0YWcsc2Fpc29uKSBWQUxVRVMgKCAnJywgPywgPywgPywgPywgPywgPykiOwoJCQkJCQkJCQkJCQkJJGRicmVzdWx0OSA9ICRkYi0+RXhlY3V0ZSgkcXVlcnk5LCBhcnJheSgkZGF0ZV9ldmVudCwkZGF0ZV9ldmVudCwkaWRlcHJldXZlLCR0b3VyLCR0YWcsJHNhaXNvbikpOwoKCQkJCQkJCQkJCQkJCWlmKCRkYnJlc3VsdDkpCgkJCQkJCQkJCQkJCQl7CgkJCQkJCQkJCQkJCQkJJGRlc2lnbmF0aW9uLj0gJGRiLT5FcnJvck1zZygpOwoJCQkJCQkJCQkJCQkJfQoJCQkJCQkJCQkJCX0KCQkJCQkJCQkKCQkJCQkJCX0KCQkJCQkJCWVsc2VpZigkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPjApCgkJCQkJCQl7CgkJCQkJCQkJLy9pbCB5IGEgZMOpasOgIHVuIGVucmVnaXN0cmVtZW50LCBsZSBzY29yZSBlc3QtaWwgw6Agam91ciA/CgkJCQkJCQkJJHVwZGF0ZSA9IDE7CgkJCQkJCQkJJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCQkJCQkJCQkkaWQgPSAkcm93WydpZCddOwoJCQkJCQkJCSRzY29yZUEgPSAkcm93WydzY29yZWEnXTsKCQkJCQkJCQkkc2NvcmVCID0gJHJvd1snc2NvcmViJ107CgoJCQkJCQkJCQlpZigkc2NvcmVBID09MCAmJiAkc2NvcmVCID09MCkKCQkJCQkJCQkJewoJCQkJCQkJCQkJJHF1ZXJ5MyA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzIFNFVCBzY29yZWEgPSA/LCBzY29yZWIgPSA/IFdIRVJFIGlkID0gPyI7CgkJCQkJCQkJCQkkZGJyZXN1bHRBID0gJGRiLT5FeGVjdXRlKCRxdWVyeTMsIGFycmF5KCRzY29yZWEsICRzY29yZWIsICRpZCkpOwoJCQkJCQkJCQkJJGkrKzsKCQkJCQkJCQkJCWlmKCEkZGJyZXN1bHRBKQoJCQkJCQkJCQkJewoJCQkJCQkJCQkJCSRkZXNpZ25hdGlvbi49ICRkYi0+RXJyb3JNc2coKTsKCQkJCQkJCQkJCX0KCQkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkvL3BhcyBkZSB2YWxldXIgcG91ciBsYSB2YXJpYWJsZSAkY2FsCgkJCQkJJHF1ZXJ5MSA9ICJTRUxFQ1QgaWQsbGllbiwgc2NvcmVhLCBzY29yZWIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG91bGVzX3JlbmNvbnRyZXMgV0hFUkUgaWRkaXYgPT8gQU5EIGlkcG91bGUgPSA/IEFORCBkYXRlX2V2ZW50ID0gPyBBTkQgZXF1YSA9ID8gQU5EIGVxdWIgPSA/IjsKCQkJCQkkZGJyZXN1bHQxID0gJGRiLT5FeGVjdXRlKCRxdWVyeTEsIGFycmF5KCRpZGRpdiwkaWRwb3VsZSwgJGRhdGVfZXZlbnQsJGVxdWEsJGVxdWIpKTsKCQkJCS8vCWVjaG8gIm9uIGVzdCBkYW5zIGxhIG1lcmRlICEiOwoJCQkJCS8vaWwgbid5IGEgcGFzIGQnZW5yZWdpc3RyZW1lbnQgYXVwYXJhdmFudCwgb24gcGV1dCBjb250aW51ZXIKCgkJCQkJCWlmKCRkYnJlc3VsdDEtPlJlY29yZENvdW50KCkgPT0gMCkgCgkJCQkJCXsKCQkJCQkJCSRxdWVyeTIgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzIChpZCxzYWlzb24saWRwb3VsZSwgaWRkaXYsIGNsdWIsIHRvdXIsIGRhdGVfZXZlbnQsIHVwbG9hZGVkLCBsaWJlbGxlLCBlcXVhLCBlcXViLCBzY29yZWEsIHNjb3JlYiwgbGllbikgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkJCQkJLy9lY2hvICRxdWVyeTsKCQkJCQkJCSRpKys7CgkJCQkJCQkkdXBsb2FkZWQgPSAwOwoJCQkJCQkJJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MixhcnJheSgkc2Fpc29uLCRpZHBvdWxlLCAkaWRkaXYsICRjbHViLCAkdG91ciwgJGRhdGVfZXZlbnQsICR1cGxvYWRlZCwgJGxpYmVsbGUsICRlcXVhLCAkZXF1YiwgJHNjb3JlYSwgJHNjb3JlYiwgJGxpZW4pKTsKCgkJCQkJCQkJaWYoISRkYnJlc3VsdGF0KQoJCQkJCQkJCXsKCQkJCQkJCQkJJGRlc2lnbmF0aW9uLj0gJGRiLT5FcnJvck1zZygpOwoKCgkJCQkJCQkJfQoJCQkJCQkJCQkvL29uIHByw6lwYXJlIGxlIHRhZwoJCQkJCQkJCSRpbmRpdnMgPSAwOy8vcHVpc3F1J29uIGVzdCBkYW5zIHVuIGNvbnRleHRlIGQnw6lxdWlwZXMKCQkJCQkJCQkkdGFnID0gIntQaW5nIGFjdGlvbj0ncGFyLWVxdWlwZXMnIjsKCQkJCQkJCQkkdGFnLj0iIGlkZXByZXV2ZT0nJGlkZXByZXV2ZSciOwoKCQkJCQkJCQkJaWYoaXNzZXQoJGRhdGVfZXZlbnQpICYmICRkYXRlX2V2ZW50ICE9JycpCgkJCQkJCQkJCXsKCQkJCQkJCQkJCSR0YWcuPSAiIGRhdGVfZGVidXQ9JyRkYXRlX2V2ZW50JyI7CgkJCQkJCQkJCX0KCQkJCQkJCQkJaWYoaXNzZXQoJGRhdGVfZXZlbnQpICYmICRkYXRlX2V2ZW50ICE9JycpCgkJCQkJCQkJCXsKCQkJCQkJCQkJCSR0YWcuPSAiIGRhdGVfZmluPSckZGF0ZV9ldmVudCciOwoJCQkJCQkJCQl9CgkJCQkJCQkJJHRhZy49In0iOwoJCQkJCQkJCS8vT24gZmFpdCBsJ2luY2x1c2lvbiBkcyBsYSBiZGQKCQkJCQkJCQkvLyBvbiB2w6lyaWZpZSBkJ2Fib3JkIHF1ZSBsJ2VucmVnaXN0cmVtZW50IG4nZXN0IHBhcyBkw6lqw6AgZW4gYmRkCgkJCQkJCQkJJHF1ZXJ5MyA9ICJTRUxFQ1QgbnVtam91cm4sIGRhdGVfZGVidXQsIGRhdGVfZmluLCBpZGVwcmV1dmUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2FsZW5kcmllciBXSEVSRSAgbnVtam91cm4gPSA/IEFORCBkYXRlX2RlYnV0ID0gPyBBTkQgZGF0ZV9maW4gPT8gQU5EIGlkZXByZXV2ZSA9ID8gIjsvL0FORCBzY29yZWEgIT0wIEFORCBzY29yZWIgIT0wIjsKCQkJCQkJCQkkZGJyZXN1bHQzID0gJGRiLT5FeGVjdXRlKCRxdWVyeTMsIGFycmF5KCR0b3VyLCAkZGF0ZV9ldmVudCwgJGRhdGVfZXZlbnQsJGlkZXByZXV2ZSkpOwoKCQkJCQkJCQkJaWYgKCRkYnJlc3VsdDMtPlJlY29yZENvdW50KCk9PTApCgkJCQkJCQkJCXsKCgoKCQkJCQkJCQkJCQkkcXVlcnk0ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jYWxlbmRyaWVyIChpZCxkYXRlX2RlYnV0LGRhdGVfZmluLGlkZXByZXV2ZSwgbnVtam91cm4sdGFnLHNhaXNvbikgVkFMVUVTICggJycsID8sID8sID8sID8sID8sID8pIjsKCQkJCQkJCQkJCQkkZGJyZXN1bHQ0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTQsIGFycmF5KCRkYXRlX2V2ZW50LCRkYXRlX2V2ZW50LCRpZGVwcmV1dmUsJHRvdXIsJHRhZywkc2Fpc29uKSk7CgoJCQkJCQkJCQkJCWlmKCRkYnJlc3VsdDQpCgkJCQkJCQkJCQkJewoJCQkJCQkJCQkJCQkkZGVzaWduYXRpb24uPSAkZGItPkVycm9yTXNnKCk7CgkJCQkJCQkJCQkJfQoJCQkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJZWxzZWlmKCRkYnJlc3VsdDEtPlJlY29yZENvdW50KCkgPjApCgkJCQkJCXsKCQkJCQkJCQkvL2lsIHkgYSBkw6lqw6AgdW4gZW5yZWdpc3RyZW1lbnQsIGxlIHNjb3JlIGVzdC1pbCDDoCBqb3VyID8KCQkJCQkJCQkkdXBkYXRlID0gMTsKCQkJCQkJCQkkcm93ID0gJGRicmVzdWx0MS0+RmV0Y2hSb3coKTsKCQkJCQkJCQkkaWQgPSAkcm93WydpZCddOwoJCQkJCQkJCSRzY29yZUEgPSAkcm93WydzY29yZWEnXTsKCQkJCQkJCQkkc2NvcmVCID0gJHJvd1snc2NvcmViJ107CgoJCQkJCQkJCQlpZigkc2NvcmVBID09MCAmJiAkc2NvcmVCID09MCkKCQkJCQkJCQkJewoJCQkJCQkJCQkJJHF1ZXJ5NSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzIFNFVCBzY29yZWEgPSA/LCBzY29yZWIgPSA/IFdIRVJFIGlkID0gPyI7CgkJCQkJCQkJCQkkZGJyZXN1bHRBID0gJGRiLT5FeGVjdXRlKCRxdWVyeTUsIGFycmF5KCRzY29yZWEsICRzY29yZWIsICRpZCkpOwoJCQkJCQkJCQkJJGkrKzsKCQkJCQkJCQkJCWlmKCEkZGJyZXN1bHRBKQoJCQkJCQkJCQkJewoJCQkJCQkJCQkJCSRkZXNpZ25hdGlvbi49ICRkYi0+RXJyb3JNc2coKTsKCQkJCQkJCQkJCX0KCQkJCQkJCQkJfQoJCQkJCQl9CgkJCQkKCQkJCX0KCgkJCQl9CgkJCQoJCQkKCQkJfS8vZmluIGR1IGZvcmVhY2gKICAgICAgICB9Ly9maW4gZHUgaWYgaXNfYXJyYXkoJHJlc3VsdCkKCWZ1bmN0aW9uIHJldHJpZXZlX2FsbF9jbGFzc2VtZW50cyggJGlkZGl2LCRpZHBvdWxlLCAkcmVjb3JkX2lkICkKCXsKCQlnbG9iYWwgJGdDbXM7CgkJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCQkvL2VjaG8gImxhIHZhbGV1ciBkZSBjYWwgZXN0IDoiLiRjYWw7CgkJJHBpbmcgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ1BpbmcnKTsKCQkvL3JlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmNhbGN1bHMucGhwJyk7CgkJLy9lY2hvICJnbG9wMiI7CQoJCSRzYWlzb24gPSAkcGluZy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CgkJJGRlc2lnbmF0aW9uID0gJyc7CgkJJG5vdyA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpLCAiJyIpOwoJCSRhdWpvdXJkaHVpID0gZGF0ZSgnWW1kJyk7CgkJJGF1am91cmRodWkgPSBuZXcgRGF0ZVRpbWUoICRhdWpvdXJkaHVpICk7CgkJJGF1am91cmRodWkgPSAkYXVqb3VyZGh1aS0+Zm9ybWF0KCdZbWQnKTsKCQkkc2VydmljZSA9IG5ldyBTZXJ2aWNlbigpOwoJCSRwYWdlID0gJ3htbF9yZXN1bHRfZXF1JzsKCQkkdmFyID0gImFjdGlvbj1jbGFzc2VtZW50JmF1dG89MSZEMT0iLiRpZGRpdi4iJmN4X3BvdWxlPSIuJGlkcG91bGU7CgkJJGxpZW4gPSAkc2VydmljZS0+R2V0TGluaygkcGFnZSwgJHZhcik7CgkJJHhtbCA9IHNpbXBsZXhtbF9sb2FkX3N0cmluZygkbGllbiwnU2ltcGxlWE1MRWxlbWVudCcsIExJQlhNTF9OT0NEQVRBKTsKCQlpZigkeG1sID09PSBGQUxTRSkKCQl7CgkJCSRhcnJheSA9IDA7Ly8kcGluZy0+U2V0TWVzc2FnZSgiTGUgc2VydmljZSBlc3QgY291cMOpIik7CgkJCS8vJHBpbmctPlJlZGlyZWN0VG9BZG1pblRhYignZXF1aXBlcycpOwoJCX0KCQllbHNlCgkJewoJCQkkYXJyYXkgPSBqc29uX2RlY29kZShqc29uX2VuY29kZSgoYXJyYXkpJHhtbCksIFRSVUUpOwoJCQkkbGlnbmVzID0gY291bnQoJGFycmF5WydjbGFzc2VtZW50J10pOwoJCX0KCQkvL3Zhcl9kdW1wKCR4bWwpOy8vJHJlc3VsdCA9ICRzZXJ2aWNlLT5nZXRQb3VsZUNsYXNzZW1lbnQoJGlkZGl2LCAkaWRwb3VsZSk7CgkJLy92YXJfZHVtcCgkcmVzdWx0KTsKCgkJLy9vbiB2w6lyaWZpZSBxdWUgbGUgcmVzdWx0YXQgZXN0IGJpZW4gdW4gYXJyYXkKCgkJLy90dCB2YSBiaWVuLCBvbiBjb250aW51ZQoJCS8vb24gc3VwcHJpbWUgdHQgY2UgcXVpIMOpdGFpdCBkcyBsYSBiZGQgcG91ciBjZXR0ZSBwb3VsZQoJCWlmKCFpc19hcnJheSgkYXJyYXkpKQoJCXsKCQkJJHN0YXR1cyA9ICJLbyI7CgkJCSRkZXNpZ25hdGlvbj0gImxlIHNlcnZpY2UgZXN0IGNvdXDDqSBwb3VyIGwnw6lxdWlwZSAiLiRyZWNvcmRfaWQ7CgkJCSRhY3Rpb24gPSAncmV0cmlldmVfY2xhc3NlbWVudCc7CgkJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywkZGVzaWduYXRpb24sJGFjdGlvbik7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCgkJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2xhc3NlbWVudCBXSEVSRSBpZGRpdiA9ID8gQU5EIGlkcG91bGU9ID8gIEFORCBzYWlzb24gPSA/IEFORCBpZGVxdWlwZSA9ID8iOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaWRkaXYsICRpZHBvdWxlLCRzYWlzb24sJHJlY29yZF9pZCkpOwoJCQkKCQkJaWYoISRkYnJlc3VsdCkKCQkJewoJCQkJZWNobyAkZGItPkVycm9yTXNnKCk7CgkJCX0KCQkJJGk9MDsvL29uIGluaXRpYWxpc2UgdW4gY29tcHRldXIgCgkJCS8vb24gcsOpY3Vww6hyZSBsZSByw6lzdWx0YXQgZXQgb24gZmFpdCBsZSBmb3JlYWNoCgkJCWZvcmVhY2goJHhtbCBhcyAkY2xlID0+JHRhYikKCQkJewoJCQkJJHBvdWxlID0gKGlzc2V0KCR0YWItPnBvdWxlKT8iJHRhYi0+cG91bGUiOiIiKTsKCQkJCSRjbHQgPSAoaXNzZXQoJHRhYi0+Y2x0KT8iJHRhYi0+Y2x0IjoiIik7CgkJCQkkZXF1aXBlID0gKGlzc2V0KCR0YWItPmVxdWlwZSk/IiR0YWItPmVxdWlwZSI6IiIpOwoJCQkJJGpvdWUgPSAoaXNzZXQoJHRhYi0+am91ZSk/IiR0YWItPmpvdWUiOiIiKTsKCQkJCSRwdHMgPSAoaXNzZXQoJHRhYi0+cHRzKT8iJHRhYi0+cHRzIjoiIik7CgoJCQkJJHF1ZXJ5MiA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2xhc3NlbWVudCAoaWQsaWRlcXVpcGUsIHNhaXNvbiwgaWRkaXYsIGlkcG91bGUsIHBvdWxlLCBjbHQsIGVxdWlwZSwgam91ZSwgcHRzKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkJCQkvL2VjaG8gJHF1ZXJ5MjsKCQkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsIGFycmF5KCRyZWNvcmRfaWQsJHNhaXNvbiwgJGlkZGl2LCAkaWRwb3VsZSwkcG91bGUsICRjbHQsICRlcXVpcGUsICRqb3VlLCRwdHMpKTsKCgkJCQoJCQl9CgkJCSRkZXNpZ25hdGlvbi49IlLDqWN1cMOpcmF0aW9uIGR1IGNsYXNzZW1lbnQgZGUgbGEgcG91bGUgOiAiLiRwb3VsZTsKCQkJJHN0YXR1cyA9ICJPayI7CgkJCQoJCQkKCQl9CgkJJGFjdGlvbiA9ICdnZXRQb3VsZWNsYXNzZW1lbnQnOwoJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywkZGVzaWduYXRpb24sJGFjdGlvbik7Cgl9CgkKCWZ1bmN0aW9uIGluc2VydF9jZ2NhbGVuZGFyICgkbmFtZSwkdGFnLCRkYXRlX2RlYnV0LCRkYXRlX2ZpbikKCXsKCQlnbG9iYWwgJGdDbXM7CgkJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCQkvL29uIHbDqXJpZmllIGQnYWJvcmQgcXVlIGwnw6l2w6luZW1lbnQgbidlc3QgcGFzIGTDqWrDoCBkcyBsYSBiYXNlCgkJJHF1ZXJ5ID0gIlNFTEVDVCBldmVudF90aXRsZSwgZXZlbnRfZGF0ZV9zdGFydCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfY2djYWxlbmRhcl9ldmVudHMgV0hFUkUgZXZlbnRfdGl0bGUgPSA/IEFORCBldmVudF9kYXRlX3N0YXJ0ID0gPyBBTkQgZXZlbnRfZGF0ZV9lbmQgPSA/IjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbmFtZSwgJGRhdGVfZGVidXQsICRkYXRlX2ZpbiApKTsKCQlpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID09IDApCgkJCXsKCQkJCS8vIG9uIHLDqWN1cMOocmUgaWQgZHMgZGlmZsOpcmVudGVzIHRhYmxlcwoJCQkJLy9Ub3V0IGQnYWJvcmQgY2VsdWkgZGUgbGEgdGFibGUgZXZlbnRzCgkJCQkkcXVlcnkxID0gIlNFTEVDVCBpZCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfY2djYWxlbmRhcl9ldmVudHNfc2VxIjsKCQkJCSRkYnJlc3VsdDEgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MSk7CgkJCQkkcm93ID0gJGRicmVzdWx0MS0+RmV0Y2hSb3coKTsKCQkJCSRpZF9ldmVudCA9ICRyb3dbJ2lkJ10rMTsKCQkJCSRxdWVyeV9jYWwgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9jZ2NhbGVuZGFyX2V2ZW50cwoJCQkJICAgICAgICAgICAoZXZlbnRfaWQsIGV2ZW50X3RpdGxlLCBldmVudF9kZXRhaWxzLCBldmVudF9kYXRlX3N0YXJ0LCBldmVudF9kYXRlX2VuZCkKCQkJCSAgICAgICAgICAgIFZBTFVFUyAoPywgPywgPyAsID8sID8pIjsKCQkJCSRkYnJlc3VsdF9jYWwgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5X2NhbCwgYXJyYXkoJGlkX2V2ZW50LCRuYW1lLCR0YWcsJGRhdGVfZGVidXQsJGRhdGVfZmluKSk7CgkJCQkvL29uIGluc8OocmUgYXVzc2kgbCfDqXbDqW5lbWVudCBkYW5zIHVuZSBjYXRlZ29yaWUgcGFyIGTDqWZhdXQgbGEgZ8OpbsOpcmFsZSBkb25jIDEKCQkJCSRjYXQgPSAxOwoJCQkJJHF1ZXJ5X2NhdCA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2NnY2FsZW5kYXJfZXZlbnRzX3RvX2NhdGVnb3JpZXMgKGNhdGVnb3J5X2lkLCBldmVudF9pZCkgVkFMVUVTICg/LD8pIjsKCQkJCSRkYnJlc3VsdF9jYXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5X2NhdCwgYXJyYXkoJGNhdCwkaWRfZXZlbnQpKTsKCQkJCS8vb24gbW9kaWZpZSBsZSBldmVudHNfc2VxCgkJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfY2djYWxlbmRhcl9ldmVudHNfc2VxIFNFVCBpZCA9IGlkKzEiOwoJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJCX0KCX0KCQp9IC8vIGVuZCBvZiBjbGFzcwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.Service.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIAovL25hbWVzcGFjZSBNcGluZ1xDb3JlQnVuZGxlXEZmdHQ7CiAKLy91c2UgRG9jdHJpbmVcQ29tbW9uXENhY2hlXENhY2hlOwogCmNsYXNzIFNlcnZpY2UKewogICAgcHJpdmF0ZSAkY2FjaGU7CiAgICBwcml2YXRlICRsb2dnZXI7CiAgICBwcml2YXRlICRpcHNvdXJjZTsKICAgIHByaXZhdGUgJHNlcmlhbHM7CiAgICBwcml2YXRlICRhdXRvSW5pdGlhbGl6YXRpb247CiAKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChDYWNoZSAkY2FjaGUgPSBudWxsLCAkbG9nZ2VyID0gbnVsbCwgJHNlcmlhbHMgPSBhcnJheSgpLCAkaXBzb3VyY2UgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5jYWNoZSA9ICRjYWNoZTsKICAgICAgICAkdGhpcy0+bG9nZ2VyID0gJGxvZ2dlcjsgLy8gTXVzdCBoYXZlIGEgbWV0aG9kIGxvZygkdXJsLCAkZGF0YSkKICAgICAgICAkdGhpcy0+aXBzb3VyY2UgPSAkaXBzb3VyY2U7CiAKICAgICAgICAkdGhpcy0+c2VyaWFscyA9ICRzZXJpYWxzOwogCiAgICAgICAgLy8gR8OpbsOpcmF0aW9uIGQndW4gc2VyaWFsIHBhciBkw6lmYXV0ICgxNSBsZXR0cmVzIG1hanVzY3VsZXMpCiAgICAgICAgaWYgKGVtcHR5KCR0aGlzLT5zZXJpYWxzKSkgewogICAgICAgICAgICAkdGhpcy0+c2VyaWFscyA9IGFycmF5KCcnKTsKICAgICAgICAgICAgZm9yKCRpPTA7ICRpPDE1OyAkaSsrKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2VyaWFsc1swXSAuPSBjaHIobXRfcmFuZCg2NSwgOTApKTsgLy8oQS1aKQogICAgICAgICAgICB9CiAgICAgICAgfQogCiAgICAgICAgJHRoaXMtPmF1dG9Jbml0aWFsaXphdGlvbiA9IHRydWU7CiAKICAgICAgICBsaWJ4bWxfdXNlX2ludGVybmFsX2Vycm9ycyh0cnVlKTsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIHNldEF1dG9Jbml0aWFsaXNhdGlvbigkZmxhZykKICAgIHsKICAgICAgICAkdGhpcy0+YXV0b0luaXRpYWxpemF0aW9uID0gKGJvb2wpJGZsYWc7CiAgICB9CiAKICAgIHB1YmxpYyBmdW5jdGlvbiBpbml0aWFsaXphdGlvbigpCiAgICB7CiAgICAgICAgJHNlcmlhbCA9ICR0aGlzLT5zZXJpYWxzW210X3JhbmQoMCwgY291bnQoJHRoaXMtPnNlcmlhbHMpIC0gMSldOwogCiAgICAgICAgJHRoaXMtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfaW5pdGlhbGlzYXRpb24ucGhwJywgYXJyYXkoJ3NlcmllJyA9PiAkc2VyaWFsLCAnb3MnID0+ICdBbmRyb2lkJywgJ3ZlcnNpb24nID0+ICcwMDcnKSk7CiAgICAgICAgJGV2ZW50ID0gc2VsZjo6Z2V0T2JqZWN0KCR0aGlzLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS94bWwvZXZlbmVtZW50L3htbF9ldmVuZW1lbnQucGhwJyksICdldmVuZW1lbnQnKTsKICAgICAgICBpZiAoIWVtcHR5KCRldmVudFsnbG9nbyddKSkgewogICAgICAgICAgICAkdGhpcy0+Z2V0RGF0YSgkZXZlbnRbJ2xvZ28nXSk7CiAgICAgICAgfQogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2x1YnNCeURlcGFydGVtZW50KCRkZXBhcnRlbWVudCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldENhY2hlZERhdGEoImNsdWJzeyRkZXBhcnRlbWVudH0iLCAzNjAwKjI0KjMwLCBmdW5jdGlvbigkc2VydmljZSkgdXNlICgkZGVwYXJ0ZW1lbnQpIHsKICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2U6OmdldENvbGxlY3Rpb24oJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfY2x1Yl9kZXAyLnBocCcsIGFycmF5KCdkZXAnID0+ICRkZXBhcnRlbWVudCkpLCAnY2x1YicpOwogICAgICAgIH0pOwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2x1YigkbnVtZXJvKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgiY2x1Yl97JG51bWVyb30iLCAzNjAwKjI0KjIsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCRudW1lcm8pIHsKICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2U6OmdldE9iamVjdCgkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL3htbF9jbHViX2RldGFpbC5waHAnLCBhcnJheSgnY2x1YicgPT4gJG51bWVybykpLCAnY2x1YicpOwogICAgICAgIH0pOwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Sm91ZXVyKCRsaWNlbmNlKQogICAgewogICAgICAgICRqb3VldXIgPSAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgiam91ZXVyX3skbGljZW5jZX0iLCAzNjAwKjI0KjEsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCRsaWNlbmNlKSB7CiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlOjpnZXRPYmplY3QoJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfam91ZXVyLnBocCcsIGFycmF5KCdsaWNlbmNlJyA9PiAkbGljZW5jZSwgJ2F1dG8nID0+IDEpKSwgJ2pvdWV1cicpOwogICAgICAgIH0pOwogCiAgICAgICAgaWYgKCFpc3NldCgkam91ZXVyWydsaWNlbmNlJ10pKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KIAogICAgICAgIGlmIChlbXB0eSgkam91ZXVyWyduYXRpbyddKSkgewogICAgICAgICAgICAkam91ZXVyWyduYXRpbyddID0gJ0YnOwogICAgICAgIH0KIAogICAgICAgICRqb3VldXJbJ3Bob3RvJ10gPSAiaHR0cDovL3d3dy5mZnR0LmNvbS9lc3BhY2VsaWNlbmNpZS9waG90b2xpY2VuY2llL3skam91ZXVyWydsaWNlbmNlJ119Xy5qcGciOwogICAgICAgICRqb3VldXJbJ3Byb2dtb2lzJ10gPSByb3VuZCgkam91ZXVyWydwb2ludCddIC0gJGpvdWV1clsnYXBvaW50J10sIDIpOyAvLyBQcm9ncmVzc2lvbiBtZW5zdWVsbGUKICAgICAgICAkam91ZXVyWydwcm9nYW5uJ10gPSByb3VuZCgkam91ZXVyWydwb2ludCddIC0gJGpvdWV1clsndmFsaW5pdCddLCAyKTsgLy8gUHJvZ3Jlc3Npb24gYW5udWVsbGUKIAogICAgICAgIHJldHVybiAkam91ZXVyOwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Sm91ZXVyUGFydGllcygkbGljZW5jZSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldENhY2hlZERhdGEoImpvdWV1cl9wYXJ0aWVzX3skbGljZW5jZX0iLCAzNjAwKjI0KjEsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCRsaWNlbmNlKSB7CiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlOjpnZXRDb2xsZWN0aW9uKCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS94bWwveG1sX3BhcnRpZV9teXNxbC5waHAnLCBhcnJheSgnbGljZW5jZScgPT4gJGxpY2VuY2UsICdhdXRvJyA9PiAxKSksICdwYXJ0aWUnKTsKICAgICAgICB9KTsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIGdldEpvdWV1clBhcnRpZXNTcGlkKCRsaWNlbmNlKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgiam91ZXVyX3NwaWRfeyRsaWNlbmNlfSIsIDM2MDAqMjQqMSwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJGxpY2VuY2UpIHsKICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2U6OmdldENvbGxlY3Rpb24oJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfcGFydGllLnBocCcsIGFycmF5KCdudW1saWMnID0+ICRsaWNlbmNlKSksICdyZXN1bHRhdCcpOwogICAgICAgIH0pOwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Sm91ZXVyc0J5TmFtZSgkbm9tLCAkcHJlbm9tPSAnJykKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldENhY2hlZERhdGEoImpvdWV1cnNfeyRub219X3skcHJlbm9tfSIsIDM2MDAqMjQqMSwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJG5vbSwgJHByZW5vbSkgewogICAgICAgICAgICByZXR1cm4gU2VydmljZTo6Z2V0Q29sbGVjdGlvbigkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL3htbF9saXN0ZV9qb3VldXIucGhwJywgYXJyYXkoJ25vbScgPT4gJG5vbSwgJ3ByZW5vbScgPT4gJHByZW5vbSkpLCAnam91ZXVyJyk7CiAgICAgICAgfSk7CiAgICB9CiAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRKb3VldXJzQnlDbHViKCRjbHViKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgiam91ZXVyc2NsdWJ7JGNsdWJ9IiwgMzYwMCoyNCoxLCBmdW5jdGlvbigkc2VydmljZSkgdXNlICgkY2x1YikgewogICAgICAgICAgICByZXR1cm4gU2VydmljZTo6Z2V0Q29sbGVjdGlvbigkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL3htbF9saXN0ZV9qb3VldXIucGhwJywgYXJyYXkoJ2NsdWInID0+ICRjbHViKSksICdqb3VldXInKTsKICAgICAgICB9KTsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIGdldEVxdWlwZXNCeUNsdWIoJGNsdWIsICR0eXBlID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJHR5cGUgJiYgIWluX2FycmF5KCR0eXBlLCBhcnJheSgnTScsICdGJykpKSB7CiAgICAgICAgICAgICR0eXBlID0gJ00nOwogICAgICAgIH0KIAogICAgICAgICR0ZWFtcyA9ICR0aGlzLT5nZXRDYWNoZWREYXRhKCJjbHViZXF1aXBlc197JGNsdWJ9X3skdHlwZX0iLCAzNjAwKjI0KjMsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCRjbHViLCAkdHlwZSkgewogICAgICAgICAgICByZXR1cm4gU2VydmljZTo6Z2V0Q29sbGVjdGlvbigkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL3htbF9lcXVpcGUucGhwJywgYXJyYXkoJ251bWNsdScgPT4gJGNsdWIsICd0eXBlJyA9PiAkdHlwZSkpLCAnZXF1aXBlJyk7CiAgICAgICAgfSk7CiAKICAgICAgICBmb3JlYWNoKCR0ZWFtcyBhcyAmJHRlYW0pIHsKICAgICAgICAgICAgJHBhcmFtcyA9IGFycmF5KCk7CiAgICAgICAgICAgIHBhcnNlX3N0cigkdGVhbVsnbGllbmRpdmlzaW9uJ10sICRwYXJhbXMpOwogCiAgICAgICAgICAgICR0ZWFtWydpZHBvdWxlJ10gPSAkcGFyYW1zWydjeF9wb3VsZSddOwogICAgICAgICAgICAkdGVhbVsnaWRkaXYnXSA9ICRwYXJhbXNbJ0QxJ107CgogICAgICAgIH0KIAogICAgICAgIHJldHVybiAkdGVhbXM7CiAgICB9CiAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQb3VsZXMoJGRpdmlzaW9uKQogICAgewogICAgICAgICRwb3VsZXMgPSAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgicG91bGVzX3skZGl2aXNpb259IiwgMzYwMCoyNCozMCwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJGRpdmlzaW9uKSB7CiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlOjpnZXRDb2xsZWN0aW9uKCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS94bWwveG1sX3Jlc3VsdF9lcXUucGhwJywgYXJyYXkoJ2FjdGlvbicgPT4gJ3BvdWxlJywgJ0QxJyA9PiAkZGl2aXNpb24pKSwgJ3BvdWxlJyk7CiAgICAgICAgfSk7CiAKICAgICAgICBmb3JlYWNoKCRwb3VsZXMgYXMgJiRwb3VsZSkgewogICAgICAgICAgICAkcGFyYW1zID0gYXJyYXkoKTsKICAgICAgICAgICAgcGFyc2Vfc3RyKCRwb3VsZVsnbGllbiddLCAkcGFyYW1zKTsKIAogICAgICAgICAgICAkcG91bGVbJ2lkcG91bGUnXSA9ICRwYXJhbXNbJ2N4X3BvdWxlJ107CiAgICAgICAgICAgICRwb3VsZVsnaWRkaXYnXSA9ICRwYXJhbXNbJ0QxJ107CiAgICAgICAgfQogCiAgICAgICAgcmV0dXJuICRwb3VsZXM7CiAgICB9CiAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQb3VsZUNsYXNzZW1lbnQoJGRpdmlzaW9uLCAkcG91bGUgPSBudWxsKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgicG91bGVjbGFzc2VtZW50X3skZGl2aXNpb259X3skcG91bGV9IiwgMzYwMCoyNCoxLCBmdW5jdGlvbigkc2VydmljZSkgdXNlICgkZGl2aXNpb24sICRwb3VsZSkgewogICAgICAgICAgICByZXR1cm4gU2VydmljZTo6Z2V0Q29sbGVjdGlvbigkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL3htbF9yZXN1bHRfZXF1LnBocCcsIGFycmF5KCdhdXRvJyA9PiAxLCAnYWN0aW9uJyA9PiAnY2xhc3NlbWVudCcsICdEMScgPT4gJGRpdmlzaW9uLCAnY3hfcG91bGUnID0+ICRwb3VsZSkpLCAnY2xhc3NlbWVudCcpOwogICAgICAgIH0pOwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UG91bGVSZW5jb250cmVzKCRkaXZpc2lvbiwgJHBvdWxlID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldENhY2hlZERhdGEoInBvdWxlcmVuY29udHJlc197JGRpdmlzaW9ufV97JHBvdWxlfSIsIDM2MDAqMjQqMSwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJGRpdmlzaW9uLCAkcG91bGUpIHsKICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2U6OmdldENvbGxlY3Rpb24oJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfcmVzdWx0X2VxdS5waHAnLCBhcnJheSgnYXV0bycgPT4gMSwgJ0QxJyA9PiAkZGl2aXNpb24sICdjeF9wb3VsZScgPT4gJHBvdWxlKSksICd0b3VyJyk7CiAgICAgICAgfSk7CiAgICB9CiAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPcmdhbmlzbWVzKCR0eXBlKQogICAgewogICAgICAgIC8vIFpvbmUgLyBMaWd1ZSAvIERlcGFydGVtZW50CiAgICAgICAgaWYgKCFpbl9hcnJheSgkdHlwZSwgYXJyYXkoJ1onLCAnTCcsICdEJykpKSB7CiAgICAgICAgICAgICR0eXBlID0gJ0wnOwogICAgICAgIH0KIAogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgib3JnYW5pc21lc197JHR5cGV9IiwgMzYwMCoyNCozMCwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJHR5cGUpIHsKICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2U6OmdldENvbGxlY3Rpb24oJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfb3JnYW5pc21lLnBocCcsIGFycmF5KCd0eXBlJyA9PiAkdHlwZSkpLCAnb3JnYW5pc21lJyk7CiAgICAgICAgfSk7CiAgICB9CiAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFcHJldXZlcygkb3JnYW5pc21lLCAkdHlwZSkKICAgIHsKICAgICAgICAvLyBFcXVpcGUgLyBJbmRpdmlkdWVsbGUKICAgICAgICBpZiAoIWluX2FycmF5KCR0eXBlLCBhcnJheSgnRScsICdJJykpKSB7CiAgICAgICAgICAgICR0eXBlID0gJ0UnOwogICAgICAgIH0KIAogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgiZXByZXV2ZXNfeyRvcmdhbmlzbWV9X3skdHlwZX0iLCAzNjAwKjI0KjMwLCBmdW5jdGlvbigkc2VydmljZSkgdXNlICgkb3JnYW5pc21lLCAkdHlwZSkgewogICAgICAgICAgICByZXR1cm4gU2VydmljZTo6Z2V0Q29sbGVjdGlvbigkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL3htbF9lcHJldXZlLnBocCcsIGFycmF5KCd0eXBlJyA9PiAkdHlwZSwgJ29yZ2FuaXNtZScgPT4gJG9yZ2FuaXNtZSkpLCAnZXByZXV2ZScpOwogICAgICAgIH0pOwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RGl2aXNpb25zKCRvcmdhbmlzbWUsICRlcHJldXZlKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgiZGl2aXNpb25zX3skb3JnYW5pc21lfV97JGVwcmV1dmV9IiwgMzYwMCoyNCozMCwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJG9yZ2FuaXNtZSwgJGVwcmV1dmUpIHsKICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2U6OmdldENvbGxlY3Rpb24oJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfZGl2aXNpb24ucGhwJywgYXJyYXkoJ29yZ2FuaXNtZScgPT4gJG9yZ2FuaXNtZSwgJ2VwcmV1dmUnID0+ICRlcHJldXZlLCApKSwgJ2RpdmlzaW9uJyk7CiAgICAgICAgfSk7CiAgICB9CiAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSZW5jb250cmUoJGxpbmspCiAgICB7CiAgICAgICAgJHBhcmFtcyA9IGFycmF5KCk7CiAgICAgICAgcGFyc2Vfc3RyKCRsaW5rLCAkcGFyYW1zKTsKIAogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgicmVuY29udHJlXyIuc2hhMSgkbGluayksIDM2MDAqMjQqMSwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJHBhcmFtcykgewogICAgICAgICAgICByZXR1cm4gU2VydmljZTo6Z2V0T2JqZWN0KCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS94bWwveG1sX2NocF9yZW5jLnBocCcsICRwYXJhbXMpLCBudWxsKTsKICAgICAgICB9KTsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIGdldExpY2VuY2VzQnlOYW1lKCRub20sICRwcmVub209ICcnKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgibGljZW5jZXNfeyRub219X3skcHJlbm9tfSIsIDM2MDAqMjQqMiwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJG5vbSwgJHByZW5vbSkgewogICAgICAgICAgICByZXR1cm4gU2VydmljZTo6Z2V0Q29sbGVjdGlvbigkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL3htbF9saXN0ZV9qb3VldXJfby5waHAnLCBhcnJheSgnbm9tJyA9PiBzdHJ0b3VwcGVyKCRub20pLCAncHJlbm9tJyA9PiB1Y2ZpcnN0KCRwcmVub20pKSksICdqb3VldXInKTsKICAgICAgICB9KTsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIGdldExpY2VuY2VzQnlDbHViKCRjbHViKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgibGljZW5jZXNjbHViX3skY2x1Yn0iLCAzNjAwKjI0KjIsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCRjbHViKSB7CiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlOjpnZXRDb2xsZWN0aW9uKCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS94bWwveG1sX2xpc3RlX2pvdWV1cl9vLnBocCcsIGFycmF5KCdjbHViJyA9PiAkY2x1YikpLCAnam91ZXVyJyk7CiAgICAgICAgfSk7CiAgICB9CiAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMaWNlbmNlKCRsaWNlbmNlKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgibGljZW5jZV97JGxpY2VuY2V9IiwgMzYwMCoyNCoxLCBmdW5jdGlvbigkc2VydmljZSkgdXNlICgkbGljZW5jZSkgewogICAgICAgICAgICByZXR1cm4gU2VydmljZTo6Z2V0T2JqZWN0KCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS94bWwveG1sX2xpY2VuY2UucGhwJywgYXJyYXkoJ2xpY2VuY2UnID0+ICRsaWNlbmNlKSksICdsaWNlbmNlJyk7CiAgICAgICAgfSk7CiAgICB9CiAKICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0Q2FjaGVkRGF0YSgka2V5LCAkbGlmZVRpbWUsICRjYWxsYmFjaykKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5jYWNoZSkgewogICAgICAgICAgICByZXR1cm4gJGNhbGxiYWNrKCR0aGlzKTsKICAgICAgICB9CiAKICAgICAgICBpZiAoZmFsc2UgPT09ICgkZGF0YSA9ICR0aGlzLT5jYWNoZS0+ZmV0Y2goJGtleSkpKSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+YXV0b0luaXRpYWxpemF0aW9uICYmIGZhbHNlID09ICR0aGlzLT5jYWNoZS0+ZmV0Y2goJGluaXRLZXkgPSAneG1sX2luaXRpYWxpc2F0aW9uJykpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5pbml0aWFsaXphdGlvbigpOwogICAgICAgICAgICAgICAgJHRoaXMtPmNhY2hlLT5zYXZlKCRpbml0S2V5LCAnaW5pdCcsIDM2MDAqNCArIG10X3JhbmQoMCwgMzYwMCo0KSk7IC8vIEVudHJlIDQgZXQgOGgKICAgICAgICAgICAgfQogCiAgICAgICAgICAgICRkYXRhID0gJGNhbGxiYWNrKCR0aGlzKTsKICAgICAgICAgICAgJHRoaXMtPmNhY2hlLT5zYXZlKCRrZXksICRkYXRhLCAkbGlmZVRpbWUpOwogICAgICAgIH0KIAogICAgICAgIHJldHVybiAkZGF0YTsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIGdldERhdGEoJHVybCwgJHBhcmFtcyA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFlbXB0eSgkcGFyYW1zKSkgewogICAgICAgICAgICAkdXJsIC49ICc/JyAuIGh0dHBfYnVpbGRfcXVlcnkoJHBhcmFtcyk7CiAgICAgICAgfQogCiAgICAgICAgLyokY29udGV4dCA9IHN0cmVhbV9jb250ZXh0X2NyZWF0ZShhcnJheSgKICAgICAgICAgICAgJ3NvY2tldCcgPT4gYXJyYXkoJ2JpbmR0bycgPT4gKCR0aGlzLT5pcHNvdXJjZSA/OiAnMCcpLic6MCcpLAogICAgICAgICAgICAnaHR0cCcgPT4gYXJyYXkoCiAgICAgICAgICAgICAgICAncHJvdG9jb2xfdmVyc2lvbicgPT4gMS4xLAogICAgICAgICAgICAgICAgJ2hlYWRlcicgPT4gYXJyYXkoIlVzZXItYWdlbnQ6IE1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luMzIpIiwKICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLAogICAgICAgICAgICAgICAgICAgICJBY2NlcHQtRW5jb2Rpbmc6IGd6aXAiLAogICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uOiBDbG9zZSIsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICApCiAgICAgICAgKSk7CiAKICAgICAgICAvLyRkYXRhID0gZmlsZV9nZXRfY29udGVudHMoJHVybCwgZmFsc2UsICRjb250ZXh0KTsKICAgICAgICAkc3RyZWFtID0gZm9wZW4oJHVybCwgJ3InLCBmYWxzZSwgJGNvbnRleHQpOwogICAgICAgICRkYXRhID0gc3RyZWFtX2dldF9jb250ZW50cygkc3RyZWFtKTsKICAgICAgICBmY2xvc2UoJHN0cmVhbSk7Ki8KIAogICAgICAgICRjdXJsID0gY3VybF9pbml0KCk7CiAgICAgICAgY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgICAgICBpZiAoJHRoaXMtPmlwc291cmNlKSB7CiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX0lOVEVSRkFDRSwgJHRoaXMtPmlwc291cmNlKTsKICAgICAgICB9CiAgICAgICAgY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIgLCB0cnVlKTsKICAgICAgICBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9IVFRQSEVBREVSLCBhcnJheSgKICAgICAgICAgICAgIkFjY2VwdDoiLCAvLyBTdXByaW1lIGxlIGhlYWRlciBwYXIgZGVmYXVsdCBkZSBjVXJsIChBY2NlcHQ6ICovKikKICAgICAgICAgICAgIlVzZXItYWdlbnQ6IE1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luMzIpIiwKICAgICAgICAgICAgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiwKICAgICAgICAgICAgIkFjY2VwdC1FbmNvZGluZzogZ3ppcCIsCiAgICAgICAgICAgICJDb25uZWN0aW9uOiBLZWVwLUFsaXZlIiwKICAgICAgICApKTsKICAgICAgICAkZGF0YSA9IGN1cmxfZXhlYygkY3VybCk7CiAgICAgICAgY3VybF9jbG9zZSgkY3VybCk7CiAKICAgICAgICBpZiAoJHRoaXMtPmxvZ2dlcikgewogICAgICAgICAgICAkdGhpcy0+bG9nZ2VyLT5sb2coJHVybCwgJGRhdGEpOwogICAgICAgIH0KIAogICAgICAgICR4bWwgPSBzaW1wbGV4bWxfbG9hZF9zdHJpbmcoJGRhdGEpOwogCiAgICAgICAgaWYgKCEkeG1sKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAKICAgICAgICAvLyBQZXRpdGUgYXN0dWNlIHBvdXIgdHJhbnNmb3JtZXIgc2ltcGxlbWVudCBsZSBYTUwgZW4gdGFibGVhdQogICAgICAgIHJldHVybiBqc29uX2RlY29kZShqc29uX2VuY29kZSgkeG1sKSwgdHJ1ZSk7CiAgICB9CiAKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0Q29sbGVjdGlvbigkZGF0YSwgJGtleSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKGVtcHR5KCRkYXRhKSkgewogICAgICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgICAgICB9CiAKICAgICAgICBpZiAoJGtleSkgewogICAgICAgICAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJGtleSwgJGRhdGEpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZGF0YSA9ICRkYXRhWyRrZXldOwogICAgICAgIH0KIAogICAgICAgIHJldHVybiBpc3NldCgkZGF0YVswXSkgPyAkZGF0YSA6IGFycmF5KCRkYXRhKTsKICAgIH0KIAogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRPYmplY3QoJGRhdGEsICRrZXkgPSBudWxsKQogICAgewogICAgICAgIGlmICgka2V5KSB7CiAgICAgICAgICAgIHJldHVybiBhcnJheV9rZXlfZXhpc3RzKCRrZXksICRkYXRhKSA/ICRkYXRhWyRrZXldIDogbnVsbDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gZW1wdHkoJGRhdGEpID8gbnVsbCA6ICRkYXRhOwogICAgICAgIH0KICAgIH0KIAp9]]></data>
	</file>
	<file>
	  <filename>/lib/class.Servicen.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIAovL25hbWVzcGFjZSBNcGluZ1xDb3JlQnVuZGxlXEZmdHQ7CiAKLy91c2UgRG9jdHJpbmVcQ29tbW9uXENhY2hlXENhY2hlOwogCmNsYXNzIFNlcnZpY2VuCnsKICAgIHByaXZhdGUgJGNhY2hlOwogICAgcHJpdmF0ZSAkbG9nZ2VyOwogICAgcHJpdmF0ZSAkaXBzb3VyY2U7CiAgICBwcml2YXRlICRzZXJpYWxzOwogICAgcHJpdmF0ZSAkYXV0b0luaXRpYWxpemF0aW9uOwogICAgcHJpdmF0ZSAkaWQ7CiAgICBwcml2YXRlICRzZXJpZTsKICAgIHByaXZhdGUgJHRtOwogICAgcHJpdmF0ZSAkdG1jOwogICAgCiAgICAKCiAKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChDYWNoZSAkY2FjaGUgPSBudWxsLCAkbG9nZ2VyID0gbnVsbCwgJHNlcmlhbHMgPSBhcnJheSgpLCAkaXBzb3VyY2UgPSBudWxsLCAkcGluZyA9IG51bGwsICRjb2RlID0gbnVsbCwgJGlkID0gbnVsbCwgJHNlcmlhbCA9IG51bGwsICR0bSA9IG51bGwsICR0bWMgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5jYWNoZSA9ICRjYWNoZTsKICAgICAgICAkdGhpcy0+bG9nZ2VyID0gJGxvZ2dlcjsgLy8gTXVzdCBoYXZlIGEgbWV0aG9kIGxvZygkdXJsLCAkZGF0YSkKICAgICAgICAkdGhpcy0+aXBzb3VyY2UgPSAkaXBzb3VyY2U7CiAJCgkkdGhpcy0+cGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwoJCiAgICAgICAgLy8kdGhpcy0+c2VyaWFscyA9ICRzZXJpYWxzOwogCQogICAgICAgIC8qCiAgICAgICAgLy8gR8OpbsOpcmF0aW9uIGQndW4gc2VyaWFsIHBhciBkw6lmYXV0ICgxNSBsZXR0cmVzIG1hanVzY3VsZXMpCiAgICAgICAgaWYgKGVtcHR5KCR0aGlzLT5zZXJpYWxzKSkgewogICAgICAgICAgICAkdGhpcy0+c2VyaWFscyA9IGFycmF5KCcnKTsKICAgICAgICAgICAgZm9yKCRpPTA7ICRpPDE1OyAkaSsrKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2VyaWFsc1swXSAuPSBjaHIobXRfcmFuZCg2NSwgOTApKTsgLy8oQS1aKQogICAgICAgICAgICB9CiAgICAgICAgfQogCSovCiAgICAgICAgJHRoaXMtPmF1dG9Jbml0aWFsaXphdGlvbiA9IHRydWU7CiAKICAgICAgICBsaWJ4bWxfdXNlX2ludGVybmFsX2Vycm9ycyh0cnVlKTsKICAgIH0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRQYXNzd29yZCgpCiAgICB7CgkkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwoJJHRoaXMtPmNvZGUgPSAkcGluZy0+R2V0UHJlZmVyZW5jZSgnbW90ZGVwYXNzZScpOwoJcmV0dXJuICR0aGlzLT5jb2RlOwoJLy9lY2hvICJsZSBjb2RlIGVzdCA6ICIuJGNvZGU7CiAgICB9CiAgICAKICAgcHVibGljIGZ1bmN0aW9uIEdldFNlcmllKCkKICAgIHsKCSRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7CgkkdGhpcy0+c2VyaWUgPSAkcGluZy0+R2V0UHJlZmVyZW5jZSgnc2VyaWUnKTsKCXJldHVybiAkdGhpcy0+c2VyaWU7CgkvL2VjaG8gImxlIGNvZGUgZXN0IDogIi4kY29kZTsKICAgIH0KCiAgIHB1YmxpYyBmdW5jdGlvbiBHZXRJZEFwcGxpKCkKICAgIHsKCSRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7CgkkdGhpcy0+aWQgPSAkcGluZy0+R2V0UHJlZmVyZW5jZSgnaWRBcHBsaScpOwoJcmV0dXJuICR0aGlzLT5pZDsKCS8vZWNobyAibGUgY29kZSBlc3QgOiAiLiRjb2RlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRUaW1lc3RhbXAoKQogICB7CgkkdGhpcy0+dG0gPSBzdWJzdHIoZGF0ZSgnWW1kSGlzdScpLDAsMTcpOwoJcmV0dXJuICR0aGlzLT50bTsKCQogICB9CgogICBwdWJsaWMgZnVuY3Rpb24gR2V0RW5jcnlwdGVkVGltZXN0YW1wKCkKICAgewoJJHRoaXMtPmNvZGUgPSBzZXJ2aWNlbjo6R2V0UGFzc3dvcmQoKTsKCSR0aGlzLT50bSA9IHNlcnZpY2VuOjpHZXRUaW1lc3RhbXAoKTsKCSR0aGlzLT50bWMgPSBoYXNoX2htYWMoInNoYTEiLCR0aGlzLT50bSwkdGhpcy0+Y29kZSk7CglyZXR1cm4gJHRoaXMtPnRtYzsKCiAgIH0KICAgIHB1YmxpYyBmdW5jdGlvbiBpbml0aWFsaXNhdGlvbkFQSSgpIAogICAgewoJCgkkc2VyaWUgPSBzZXJ2aWNlbjo6R2V0U2VyaWUoKTsKCSR0bSA9IHNlcnZpY2VuOjpHZXRUaW1lc3RhbXAoKTsKCSR0bWMgPSBzZXJ2aWNlbjo6R2V0RW5jcnlwdGVkVGltZXN0YW1wKCk7CgkkaWQgPSBzZXJ2aWNlbjo6R2V0SWRBcHBsaSgpOwoJCgkkY2hhaW5lID0gJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3B4bWwveG1sX2luaXRpYWxpc2F0aW9uLnBocD9zZXJpZT0nLiR0aGlzLT5zZXJpZS4nJnRtPScuJHRoaXMtPnRtLicmdG1jPScuJHRoaXMtPnRtYy4nJmlkPScuJHRoaXMtPmlkOyAKCSRyZXN1bHQgPSBmaWxlX2dldF9jb250ZW50cygkY2hhaW5lKTsKCgkkZG9tID0gbmV3IERvbURvY3VtZW50KCk7CgkkZG9tLT5sb2FkWE1MKCRyZXN1bHQpOyAKCSRyZXBvbnNlID0gJGRvbS0+Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2FwcGxpJyktPml0ZW0oMCktPm5vZGVWYWx1ZTsKCXJldHVybiAkcmVwb25zZTsKCS8vcmV0dXJuICRjaGFpbmU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldExpbmsoJHBhZ2UsJHZhciA9ICIiKQogICAgewogICAgICAgICRzZXJpZSA9IHNlcnZpY2VuOjpHZXRTZXJpZSgpOwoJJHRtID0gc2VydmljZW46OkdldFRpbWVzdGFtcCgpOwoJJHRtYyA9IHNlcnZpY2VuOjpHZXRFbmNyeXB0ZWRUaW1lc3RhbXAoKTsKCSRpZCA9IHNlcnZpY2VuOjpHZXRJZEFwcGxpKCk7CgkkY2hhaW5lID0gJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3B4bWwvJy4kcGFnZS4nLnBocD9zZXJpZT0nLiR0aGlzLT5zZXJpZS4nJnRtPScuJHRoaXMtPnRtLicmdG1jPScuJHRoaXMtPnRtYy4nJmlkPScuJHRoaXMtPmlkLicmJy4kdmFyOyAKCXJldHVybiBmaWxlX2dldF9jb250ZW50cygkY2hhaW5lKTsKCS8vcmV0dXJuICRjaGFpbmU7Ly9wb3VyIHRlc3RlciBsZSBsaWVuCiAgICB9CnB1YmxpYyBmdW5jdGlvbiBHZXRSU1MoJHBhZ2UsJHZhciA9ICIiKQogICAgewogICAgICAgCgkkY2hhaW5lID0gJ2h0dHA6Ly93d3cuZmZ0dC5jb20vc2l0ZS9tZWRpYXMvZmx1eC8nLiRwYWdlLicueG1sJzsgCglyZXR1cm4gZmlsZV9nZXRfY29udGVudHMoJGNoYWluZSk7CgkvL3JldHVybiAkY2hhaW5lOy8vcG91ciB0ZXN0ZXIgbGUgbGllbgogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gaW5pdGlhbGl6YXRpb24oKQogICAgewogICAgICAgIAoJLy8kc2VyaWFsID0gJHBpbmctPkdldFByZWZlcmVuY2UoJ3NlcmllJyk7CgkvLyRzZXJpYWwgPSAkdGhpcy0+c2VyaWFsc1ttdF9yYW5kKDAsIGNvdW50KCR0aGlzLT5zZXJpYWxzKSAtIDEpXTsKIAogICAgICAgICR0aGlzLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS9weG1sL3htbF9pbml0aWFsaXNhdGlvbi5waHAnLCBhcnJheSgnc2VyaWUnID0+ICR0aGlzLT5zZXJpZSwgJ3RtJyA9PiAkdGhpcy0+dG0sICd0bWMnID0+ICR0aGlzLT50bWMsICdpZCcgPT4kdGhpcy0+aWQpKTsKICAgICAgICAkZXZlbnQgPSBzZWxmOjpnZXRPYmplY3QoJHRoaXMtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3B4bWwvZXZlbmVtZW50L3htbF9ldmVuZW1lbnQucGhwJyksICdldmVuZW1lbnQnKTsKICAgICAgICBpZiAoIWVtcHR5KCRldmVudFsnbG9nbyddKSkgewogICAgICAgICAgICAkdGhpcy0+Z2V0RGF0YSgkZXZlbnRbJ2xvZ28nXSk7CiAgICAgICAgfQogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2x1YnNCeURlcGFydGVtZW50KCRkZXBhcnRlbWVudCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldENhY2hlZERhdGEoImNsdWJzeyRkZXBhcnRlbWVudH0iLCAzNjAwKjI0KjMwLCBmdW5jdGlvbigkc2VydmljZSkgdXNlICgkZGVwYXJ0ZW1lbnQpIHsKICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2U6OmdldENvbGxlY3Rpb24oJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3B4bWwveG1sX2NsdWJfZGVwMi5waHAnLCBhcnJheSgnZGVwJyA9PiAkZGVwYXJ0ZW1lbnQpKSwgJ2NsdWInKTsKICAgICAgICB9KTsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIGdldENsdWIoJG51bWVybykKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldENhY2hlZERhdGEoImNsdWJfeyRudW1lcm99IiwgMzYwMCoyNCoyLCBmdW5jdGlvbigkc2VydmljZSkgdXNlICgkbnVtZXJvKSB7CiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlOjpnZXRPYmplY3QoJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3B4bWwveG1sX2NsdWJfZGV0YWlsLnBocCcsIGFycmF5KCdzZXJpZScgPT4gJHRoaXMtPnNlcmllLCAndG0nID0+ICR0aGlzLT50bSwgJ3RtYycgPT4gJHRoaXMtPnRtYywgJ2lkJyA9PiAkdGhpcy0+aWQsJ2NsdWInID0+ICRudW1lcm8pKSxhcnJheSgnc2VyaWUnLCd0bScsJ3RtYycsJ2lkJywnY2x1YicpKTsKICAgICAgICB9KTsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIGdldEpvdWV1cigkbGljZW5jZSkKICAgIHsKICAgICAgICAkam91ZXVyID0gJHRoaXMtPmdldENhY2hlZERhdGEoImpvdWV1cl97JGxpY2VuY2V9IiwgMzYwMCoyNCoxLCBmdW5jdGlvbigkc2VydmljZSkgdXNlICgkbGljZW5jZSkgewogICAgICAgICAgICByZXR1cm4gU2VydmljZTo6Z2V0T2JqZWN0KCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS9weG1sL3htbF9qb3VldXIucGhwJywgYXJyYXkoJ2xpY2VuY2UnID0+ICRsaWNlbmNlLCAnYXV0bycgPT4gMSkpLCAnam91ZXVyJyk7CiAgICAgICAgfSk7CiAKICAgICAgICBpZiAoIWlzc2V0KCRqb3VldXJbJ2xpY2VuY2UnXSkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogCiAgICAgICAgaWYgKGVtcHR5KCRqb3VldXJbJ25hdGlvJ10pKSB7CiAgICAgICAgICAgICRqb3VldXJbJ25hdGlvJ10gPSAnRic7CiAgICAgICAgfQogCiAgICAgICAgJGpvdWV1clsncGhvdG8nXSA9ICJodHRwOi8vd3d3LmZmdHQuY29tL2VzcGFjZWxpY2VuY2llL3Bob3RvbGljZW5jaWUveyRqb3VldXJbJ2xpY2VuY2UnXX1fLmpwZyI7CiAgICAgICAgJGpvdWV1clsncHJvZ21vaXMnXSA9IHJvdW5kKCRqb3VldXJbJ3BvaW50J10gLSAkam91ZXVyWydhcG9pbnQnXSwgMik7IC8vIFByb2dyZXNzaW9uIG1lbnN1ZWxsZQogICAgICAgICRqb3VldXJbJ3Byb2dhbm4nXSA9IHJvdW5kKCRqb3VldXJbJ3BvaW50J10gLSAkam91ZXVyWyd2YWxpbml0J10sIDIpOyAvLyBQcm9ncmVzc2lvbiBhbm51ZWxsZQogCiAgICAgICAgcmV0dXJuICRqb3VldXI7CiAgICB9CiAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRKb3VldXJQYXJ0aWVzKCRsaWNlbmNlKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgiam91ZXVyX3BhcnRpZXNfeyRsaWNlbmNlfSIsIDM2MDAqMjQqMSwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJGxpY2VuY2UpIHsKICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2U6OmdldENvbGxlY3Rpb24oJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3B4bWwveG1sX3BhcnRpZV9teXNxbC5waHAnLCBhcnJheSgnbGljZW5jZScgPT4gJGxpY2VuY2UsICdhdXRvJyA9PiAxKSksICdwYXJ0aWUnKTsKICAgICAgICB9KTsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIGdldEpvdWV1clBhcnRpZXNTcGlkKCRsaWNlbmNlKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgiam91ZXVyX3NwaWRfeyRsaWNlbmNlfSIsIDM2MDAqMjQqMSwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJGxpY2VuY2UpIHsKICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2U6OmdldENvbGxlY3Rpb24oJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3B4bWwveG1sX3BhcnRpZS5waHAnLCBhcnJheSgnbnVtbGljJyA9PiAkbGljZW5jZSkpLCAncmVzdWx0YXQnKTsKICAgICAgICB9KTsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIGdldEpvdWV1cnNCeU5hbWUoJG5vbSwgJHByZW5vbT0gJycpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRDYWNoZWREYXRhKCJqb3VldXJzX3skbm9tfV97JHByZW5vbX0iLCAzNjAwKjI0KjEsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCRub20sICRwcmVub20pIHsKICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2U6OmdldENvbGxlY3Rpb24oJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3B4bWwveG1sX2xpc3RlX2pvdWV1ci5waHAnLCBhcnJheSgnbm9tJyA9PiAkbm9tLCAncHJlbm9tJyA9PiAkcHJlbm9tKSksICdqb3VldXInKTsKICAgICAgICB9KTsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIGdldEpvdWV1cnNCeUNsdWIoJGNsdWIpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRDYWNoZWREYXRhKCJqb3VldXJzY2x1YnskY2x1Yn0iLCAzNjAwKjI0KjEsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCRjbHViKSB7CiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlOjpnZXRDb2xsZWN0aW9uKCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS9weG1sL3htbF9saXN0ZV9qb3VldXIucGhwJywgYXJyYXkoJ2NsdWInID0+ICRjbHViKSksICdqb3VldXInKTsKICAgICAgICB9KTsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIGdldEVxdWlwZXNCeUNsdWIoJGNsdWIsICR0eXBlID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJHR5cGUgJiYgIWluX2FycmF5KCR0eXBlLCBhcnJheSgnTScsICdGJykpKSB7CiAgICAgICAgICAgICR0eXBlID0gJ00nOwogICAgICAgIH0KIAogICAgICAgICR0ZWFtcyA9ICR0aGlzLT5nZXRDYWNoZWREYXRhKCJjbHViZXF1aXBlc197JGNsdWJ9X3skdHlwZX0iLCAzNjAwKjI0KjMsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCRjbHViLCAkdHlwZSkgewogICAgICAgICAgICByZXR1cm4gU2VydmljZTo6Z2V0Q29sbGVjdGlvbigkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUvcHhtbC94bWxfZXF1aXBlLnBocCcsIGFycmF5KCdudW1jbHUnID0+ICRjbHViLCAndHlwZScgPT4gJHR5cGUpKSwgJ2VxdWlwZScpOwogICAgICAgIH0pOwogCiAgICAgICAgZm9yZWFjaCgkdGVhbXMgYXMgJiR0ZWFtKSB7CiAgICAgICAgICAgICRwYXJhbXMgPSBhcnJheSgpOwogICAgICAgICAgICBwYXJzZV9zdHIoJHRlYW1bJ2xpZW5kaXZpc2lvbiddLCAkcGFyYW1zKTsKIAogICAgICAgICAgICAkdGVhbVsnaWRwb3VsZSddID0gJHBhcmFtc1snY3hfcG91bGUnXTsKICAgICAgICAgICAgJHRlYW1bJ2lkZGl2J10gPSAkcGFyYW1zWydEMSddOwoKICAgICAgICB9CiAKICAgICAgICByZXR1cm4gJHRlYW1zOwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UG91bGVzKCRkaXZpc2lvbikKICAgIHsKICAgICAgICAkcG91bGVzID0gJHRoaXMtPmdldENhY2hlZERhdGEoInBvdWxlc197JGRpdmlzaW9ufSIsIDM2MDAqMjQqMzAsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCRkaXZpc2lvbikgewogICAgICAgICAgICByZXR1cm4gU2VydmljZTo6Z2V0Q29sbGVjdGlvbigkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUvcHhtbC94bWxfcmVzdWx0X2VxdS5waHAnLCBhcnJheSgnYWN0aW9uJyA9PiAncG91bGUnLCAnRDEnID0+ICRkaXZpc2lvbikpLCAncG91bGUnKTsKICAgICAgICB9KTsKIAogICAgICAgIGZvcmVhY2goJHBvdWxlcyBhcyAmJHBvdWxlKSB7CiAgICAgICAgICAgICRwYXJhbXMgPSBhcnJheSgpOwogICAgICAgICAgICBwYXJzZV9zdHIoJHBvdWxlWydsaWVuJ10sICRwYXJhbXMpOwogCiAgICAgICAgICAgICRwb3VsZVsnaWRwb3VsZSddID0gJHBhcmFtc1snY3hfcG91bGUnXTsKICAgICAgICAgICAgJHBvdWxlWydpZGRpdiddID0gJHBhcmFtc1snRDEnXTsKICAgICAgICB9CiAKICAgICAgICByZXR1cm4gJHBvdWxlczsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIGdldFBvdWxlQ2xhc3NlbWVudCgkZGl2aXNpb24sICRwb3VsZSA9IG51bGwpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRDYWNoZWREYXRhKCJwb3VsZWNsYXNzZW1lbnRfeyRkaXZpc2lvbn1feyRwb3VsZX0iLCAzNjAwKjI0KjEsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCRkaXZpc2lvbiwgJHBvdWxlKSB7CiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlOjpnZXRDb2xsZWN0aW9uKCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS9weG1sL3htbF9yZXN1bHRfZXF1LnBocCcsIGFycmF5KCdhdXRvJyA9PiAxLCAnYWN0aW9uJyA9PiAnY2xhc3NlbWVudCcsICdEMScgPT4gJGRpdmlzaW9uLCAnY3hfcG91bGUnID0+ICRwb3VsZSkpLCAnY2xhc3NlbWVudCcpOwogICAgICAgIH0pOwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UG91bGVSZW5jb250cmVzKCRkaXZpc2lvbiwgJHBvdWxlID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldENhY2hlZERhdGEoInBvdWxlcmVuY29udHJlc197JGRpdmlzaW9ufV97JHBvdWxlfSIsIDM2MDAqMjQqMSwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJGRpdmlzaW9uLCAkcG91bGUpIHsKICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2U6OmdldENvbGxlY3Rpb24oJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3B4bWwveG1sX3Jlc3VsdF9lcXUucGhwJywgYXJyYXkoJ2F1dG8nID0+IDEsICdEMScgPT4gJGRpdmlzaW9uLCAnY3hfcG91bGUnID0+ICRwb3VsZSkpLCAndG91cicpOwogICAgICAgIH0pOwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0T3JnYW5pc21lcygkdHlwZSkKICAgIHsKICAgICAgICAvLyBab25lIC8gTGlndWUgLyBEZXBhcnRlbWVudAogICAgICAgIGlmICghaW5fYXJyYXkoJHR5cGUsIGFycmF5KCdaJywgJ0wnLCAnRCcpKSkgewogICAgICAgICAgICAkdHlwZSA9ICdMJzsKICAgICAgICB9CiAKICAgICAgICByZXR1cm4gJHRoaXMtPmdldENhY2hlZERhdGEoIm9yZ2FuaXNtZXNfeyR0eXBlfSIsIDM2MDAqMjQqMzAsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCR0eXBlKSB7CiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlOjpnZXRDb2xsZWN0aW9uKCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS9weG1sL3htbF9vcmdhbmlzbWUucGhwJywgYXJyYXkoJ3R5cGUnID0+ICR0eXBlKSksICdvcmdhbmlzbWUnKTsKICAgICAgICB9KTsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIGdldEVwcmV1dmVzKCRvcmdhbmlzbWUsICR0eXBlKQogICAgewogICAgICAgIC8vIEVxdWlwZSAvIEluZGl2aWR1ZWxsZQogICAgICAgIGlmICghaW5fYXJyYXkoJHR5cGUsIGFycmF5KCdFJywgJ0knKSkpIHsKICAgICAgICAgICAgJHR5cGUgPSAnRSc7CiAgICAgICAgfQogCiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRDYWNoZWREYXRhKCJlcHJldXZlc197JG9yZ2FuaXNtZX1feyR0eXBlfSIsIDM2MDAqMjQqMzAsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCRvcmdhbmlzbWUsICR0eXBlKSB7CiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlOjpnZXRDb2xsZWN0aW9uKCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS9weG1sL3htbF9lcHJldXZlLnBocCcsIGFycmF5KCd0eXBlJyA9PiAkdHlwZSwgJ29yZ2FuaXNtZScgPT4gJG9yZ2FuaXNtZSkpLCAnZXByZXV2ZScpOwogICAgICAgIH0pOwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RGl2aXNpb25zKCRvcmdhbmlzbWUsICRlcHJldXZlKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgiZGl2aXNpb25zX3skb3JnYW5pc21lfV97JGVwcmV1dmV9IiwgMzYwMCoyNCozMCwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJG9yZ2FuaXNtZSwgJGVwcmV1dmUpIHsKICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2U6OmdldENvbGxlY3Rpb24oJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3B4bWwveG1sX2RpdmlzaW9uLnBocCcsIGFycmF5KCdvcmdhbmlzbWUnID0+ICRvcmdhbmlzbWUsICdlcHJldXZlJyA9PiAkZXByZXV2ZSwgKSksICdkaXZpc2lvbicpOwogICAgICAgIH0pOwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVuY29udHJlKCRsaW5rKQogICAgewogICAgICAgICRwYXJhbXMgPSBhcnJheSgpOwogICAgICAgIHBhcnNlX3N0cigkbGluaywgJHBhcmFtcyk7CiAKICAgICAgICByZXR1cm4gJHRoaXMtPmdldENhY2hlZERhdGEoInJlbmNvbnRyZV8iLnNoYTEoJGxpbmspLCAzNjAwKjI0KjEsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCRwYXJhbXMpIHsKICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2U6OmdldE9iamVjdCgkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUvcHhtbC94bWxfY2hwX3JlbmMucGhwJywgJHBhcmFtcyksIG51bGwpOwogICAgICAgIH0pOwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGljZW5jZXNCeU5hbWUoJG5vbSwgJHByZW5vbT0gJycpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRDYWNoZWREYXRhKCJsaWNlbmNlc197JG5vbX1feyRwcmVub219IiwgMzYwMCoyNCoyLCBmdW5jdGlvbigkc2VydmljZSkgdXNlICgkbm9tLCAkcHJlbm9tKSB7CiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlOjpnZXRDb2xsZWN0aW9uKCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS9weG1sL3htbF9saXN0ZV9qb3VldXJfby5waHAnLCBhcnJheSgnbm9tJyA9PiBzdHJ0b3VwcGVyKCRub20pLCAncHJlbm9tJyA9PiB1Y2ZpcnN0KCRwcmVub20pKSksICdqb3VldXInKTsKICAgICAgICB9KTsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIGdldExpY2VuY2VzQnlDbHViKCRjbHViKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgibGljZW5jZXNjbHViX3skY2x1Yn0iLCAzNjAwKjI0KjIsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCRjbHViKSB7CiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlOjpnZXRDb2xsZWN0aW9uKCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS9weG1sL3htbF9saXN0ZV9qb3VldXJfby5waHAnLCBhcnJheSgnY2x1YicgPT4gJGNsdWIpKSwgJ2pvdWV1cicpOwogICAgICAgIH0pOwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGljZW5jZSgkbGljZW5jZSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldENhY2hlZERhdGEoImxpY2VuY2VfeyRsaWNlbmNlfSIsIDM2MDAqMjQqMSwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJGxpY2VuY2UpIHsKICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2U6OmdldE9iamVjdCgkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUvcHhtbC94bWxfbGljZW5jZS5waHAnLCBhcnJheSgnbGljZW5jZScgPT4gJGxpY2VuY2UpKSwgJ2xpY2VuY2UnKTsKICAgICAgICB9KTsKICAgIH0KIAogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRDYWNoZWREYXRhKCRrZXksICRsaWZlVGltZSwgJGNhbGxiYWNrKQogICAgewogICAgICAgIGlmICghJHRoaXMtPmNhY2hlKSB7CiAgICAgICAgICAgIHJldHVybiAkY2FsbGJhY2soJHRoaXMpOwogICAgICAgIH0KIAogICAgICAgIGlmIChmYWxzZSA9PT0gKCRkYXRhID0gJHRoaXMtPmNhY2hlLT5mZXRjaCgka2V5KSkpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5hdXRvSW5pdGlhbGl6YXRpb24gJiYgZmFsc2UgPT0gJHRoaXMtPmNhY2hlLT5mZXRjaCgkaW5pdEtleSA9ICd4bWxfaW5pdGlhbGlzYXRpb24nKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmluaXRpYWxpemF0aW9uKCk7CiAgICAgICAgICAgICAgICAkdGhpcy0+Y2FjaGUtPnNhdmUoJGluaXRLZXksICdpbml0JywgMzYwMCo0ICsgbXRfcmFuZCgwLCAzNjAwKjQpKTsgLy8gRW50cmUgNCBldCA4aAogICAgICAgICAgICB9CiAKICAgICAgICAgICAgJGRhdGEgPSAkY2FsbGJhY2soJHRoaXMpOwogICAgICAgICAgICAkdGhpcy0+Y2FjaGUtPnNhdmUoJGtleSwgJGRhdGEsICRsaWZlVGltZSk7CiAgICAgICAgfQogCiAgICAgICAgcmV0dXJuICRkYXRhOwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RGF0YSgkdXJsLCAkcGFyYW1zID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoIWVtcHR5KCRwYXJhbXMpKSB7CiAgICAgICAgICAgICR1cmwgLj0gJz8nIC4gaHR0cF9idWlsZF9xdWVyeSgkcGFyYW1zKTsKICAgICAgICB9CiAKICAgICAgICAvKiRjb250ZXh0ID0gc3RyZWFtX2NvbnRleHRfY3JlYXRlKGFycmF5KAogICAgICAgICAgICAnc29ja2V0JyA9PiBhcnJheSgnYmluZHRvJyA9PiAoJHRoaXMtPmlwc291cmNlID86ICcwJykuJzowJyksCiAgICAgICAgICAgICdodHRwJyA9PiBhcnJheSgKICAgICAgICAgICAgICAgICdwcm90b2NvbF92ZXJzaW9uJyA9PiAxLjEsCiAgICAgICAgICAgICAgICAnaGVhZGVyJyA9PiBhcnJheSgiVXNlci1hZ2VudDogTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wOyBXaW4zMikiLAogICAgICAgICAgICAgICAgICAgICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsCiAgICAgICAgICAgICAgICAgICAgIkFjY2VwdC1FbmNvZGluZzogZ3ppcCIsCiAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3Rpb246IENsb3NlIiwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICkKICAgICAgICApKTsKIAogICAgICAgIC8vJGRhdGEgPSBmaWxlX2dldF9jb250ZW50cygkdXJsLCBmYWxzZSwgJGNvbnRleHQpOwogICAgICAgICRzdHJlYW0gPSBmb3BlbigkdXJsLCAncicsIGZhbHNlLCAkY29udGV4dCk7CiAgICAgICAgJGRhdGEgPSBzdHJlYW1fZ2V0X2NvbnRlbnRzKCRzdHJlYW0pOwogICAgICAgIGZjbG9zZSgkc3RyZWFtKTsqLwogCiAgICAgICAgJGN1cmwgPSBjdXJsX2luaXQoKTsKICAgICAgICBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9VUkwsICR1cmwpOwogICAgICAgIGlmICgkdGhpcy0+aXBzb3VyY2UpIHsKICAgICAgICAgICAgY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfSU5URVJGQUNFLCAkdGhpcy0+aXBzb3VyY2UpOwogICAgICAgIH0KICAgICAgICBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiAsIHRydWUpOwogICAgICAgIGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX0hUVFBIRUFERVIsIGFycmF5KAogICAgICAgICAgICAiQWNjZXB0OiIsIC8vIFN1cHJpbWUgbGUgaGVhZGVyIHBhciBkZWZhdWx0IGRlIGNVcmwgKEFjY2VwdDogKi8qKQogICAgICAgICAgICAiVXNlci1hZ2VudDogTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wOyBXaW4zMikiLAogICAgICAgICAgICAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLAogICAgICAgICAgICAiQWNjZXB0LUVuY29kaW5nOiBnemlwIiwKICAgICAgICAgICAgIkNvbm5lY3Rpb246IEtlZXAtQWxpdmUiLAogICAgICAgICkpOwogICAgICAgICRkYXRhID0gY3VybF9leGVjKCRjdXJsKTsKICAgICAgICBjdXJsX2Nsb3NlKCRjdXJsKTsKIAogICAgICAgIGlmICgkdGhpcy0+bG9nZ2VyKSB7CiAgICAgICAgICAgICR0aGlzLT5sb2dnZXItPmxvZygkdXJsLCAkZGF0YSk7CiAgICAgICAgfQogCiAgICAgICAgJHhtbCA9IHNpbXBsZXhtbF9sb2FkX3N0cmluZygkZGF0YSk7CiAKICAgICAgICBpZiAoISR4bWwpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KIAogICAgICAgIC8vIFBldGl0ZSBhc3R1Y2UgcG91ciB0cmFuc2Zvcm1lciBzaW1wbGVtZW50IGxlIFhNTCBlbiB0YWJsZWF1CiAgICAgICAgcmV0dXJuIGpzb25fZGVjb2RlKGpzb25fZW5jb2RlKCR4bWwpLCB0cnVlKTsKICAgIH0KIAogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRDb2xsZWN0aW9uKCRkYXRhLCAka2V5ID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoZW1wdHkoJGRhdGEpKSB7CiAgICAgICAgICAgIHJldHVybiBhcnJheSgpOwogICAgICAgIH0KIAogICAgICAgIGlmICgka2V5KSB7CiAgICAgICAgICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkZGF0YSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhcnJheSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRkYXRhID0gJGRhdGFbJGtleV07CiAgICAgICAgfQogCiAgICAgICAgcmV0dXJuIGlzc2V0KCRkYXRhWzBdKSA/ICRkYXRhIDogYXJyYXkoJGRhdGEpOwogICAgfQogCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldE9iamVjdCgkZGF0YSwgJGtleSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCRrZXkpIHsKICAgICAgICAgICAgcmV0dXJuIGFycmF5X2tleV9leGlzdHMoJGtleSwgJGRhdGEpID8gJGRhdGFbJGtleV0gOiBudWxsOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBlbXB0eSgkZGF0YSkgPyBudWxsIDogJGRhdGE7CiAgICAgICAgfQogICAgfQogCn0=]]></data>
	</file>
	<file>
	  <filename>/lib/function.calculs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNrZWxldG9uIChjKSAyMDA4IAojICAgICAgYnkgUm9iZXJ0IEFsbGVuIChha3JhYmF0KSBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgpmdW5jdGlvbiBDYWxjdWxFY2FydCgkZWNhcnQpCnsKCWlmKCRlY2FydCA+PTAgJiYgJGVjYXJ0IDwgMjUpIHsgJGVjYXJ0ID0gMTsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTI1ICYmICRlY2FydCA8IDUwKXsgJGVjYXJ0ID0gMjsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTUwICYmICRlY2FydCA8IDEwMCl7ICRlY2FydCA9IDM7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPj0xMDAgJiYgJGVjYXJ0IDwgMTUwKXsgJGVjYXJ0ID0gNDsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTE1MCAmJiAkZWNhcnQgPCAyMDApeyAkZWNhcnQgPSA1OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0ID49MjAwICYmICRlY2FydCA8IDMwMCl7ICRlY2FydCA9IDY7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPj0zMDAgJiYgJGVjYXJ0IDwgNDAwKXsgJGVjYXJ0ID0gNzsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTQwMCAmJiAkZWNhcnQgPCA1MDApeyAkZWNhcnQgPSA4OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0ID49NTAwKXsgJGVjYXJ0ID0gOTsgcmV0dXJuICRlY2FydDsgfQoJCQoJZWxzZWlmKCRlY2FydCA+IC0yNSAmJiAkZWNhcnQgPCAwKXskZWNhcnQgPSAtMTsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA8PSAtMjUgJiYgJGVjYXJ0ID4gLTUwKXskZWNhcnQgPSAtMjsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA8PSAtNTAgJiYgJGVjYXJ0ID4gLTEwMCl7JGVjYXJ0ID0gLTM7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPD0gLTEwMCAmJiAkZWNhcnQgPiAtMTUwKXskZWNhcnQgPSAtNDsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA8PSAtMTUwICYmICRlY2FydCA+IC0yMDApeyRlY2FydCA9IC01OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0IDw9IC0yMDAgJiYgJGVjYXJ0ID4gLTMwMCl7JGVjYXJ0ID0gLTY7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPD0gLTMwMCAmJiAkZWNhcnQgPiAtNDAwKXskZWNhcnQgPSAtNzsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA8PSAtNDAwICYmICRlY2FydCA+IC01MDApeyRlY2FydCA9IC04OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0IDw9IC01MDApeyRlY2FydCA9IC05OyByZXR1cm4gJGVjYXJ0OyB9Cn0KCmZ1bmN0aW9uIENhbGN1bFBvaW50cygkZWNhcnQsJHZpY3RvaXJlLCRsb2NhdXgpIHsKJGdDbXMgPSBjbXNtcygpOwkKaWYoJGxvY2F1eD09J0EnKSB7CgkKCWlmKCRlY2FydCA9PTEpCgl7CgkJaWYoJHZpY3RvaXJlID09ICdBQkNEJykKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkkcmVzdWx0WzBdID0gNjsKCQkgICAgICAgIC8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ3ZpY05vcm0wXzI0Jyk7CgkJCSRyZXN1bHRbMV0gPSAxOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJCSAKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ2RlZkFub3JtMF8yNCcpOwoJCQkkcmVzdWx0WzBdID0gLTU7CgkJCSRyZXN1bHRbMV0gPSAwOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTIpCgl7CgkJaWYoJHZpY3RvaXJlID09ICdBQkNEJykKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCd2aWNOb3JtMjVfNDknKTsKCQkJJHJlc3VsdFswXSA9IDUuNTsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQkJCgkJfQoJCWVsc2UKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTI1XzQ5Jyk7CgkJCSRyZXN1bHRbMF0gPSAtNjsKCQkJJHJlc3VsdFsxXSA9IDA7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09MykKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ3ZpY05vcm01MF85OScpOwoJCQkkcmVzdWx0WzBdID0gNTsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ2RlZkFub3JtNTBfOTknKTsKCQkJJHJlc3VsdFswXSA9IC03OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT00KQoJewoJCWlmKCR2aWN0b2lyZSA9PSAnQUJDRCcpCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkvLwkkcmVzdWx0WzBdID0gR2V0UHJlZmVyZW5jZSgndmljTm9ybTEwMF8xNDknKTsKCQkJJHJlc3VsdFswXSA9IDQ7CgkJCSRyZXN1bHRbMV0gPSAxOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTEwMF8xNDknKTsKCQkJJHJlc3VsdFswXSA9IC04OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT01KQoJewoJCWlmKCR2aWN0b2lyZSA9PSAnQUJDRCcpCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJLy8kcmVzdWx0WzBdID0gR2V0UHJlZmVyZW5jZSgndmljTm9ybTE1MF8xOTknKTsKCQkJJHJlc3VsdFswXSA9IDM7CgkJCSRyZXN1bHRbMV0gPSAxOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTE1MF8xOTknKTsKCQkJJHJlc3VsdFswXSA9IC0xMDsKCQkJJHJlc3VsdFsxXSA9IDA7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09NikKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ3ZpY05vcm0yMDBfMjk5Jyk7CgkJCSRyZXN1bHRbMF0gPSAyOwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJLy8kcmVzdWx0WzBdID0gR2V0UHJlZmVyZW5jZSgnZGVmQW5vcm0yMDBfMjk5Jyk7CgkJCSRyZXN1bHRbMF0gPSAtMTIuNTsKCQkJJHJlc3VsdFsxXSA9IDA7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09NykKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ3ZpY05vcm0zMDBfMzk5Jyk7CgkJCSRyZXN1bHRbMF0gPSAxOwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJLy8kcmVzdWx0WzBdID0gR2V0UHJlZmVyZW5jZSgnZGVmQW5vcm0zMDBfMzk5Jyk7CgkJCSRyZXN1bHRbMF0gPSAtMTY7CgkJCSRyZXN1bHRbMV0gPSAwOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTgpCgl7CgkJaWYoJHZpY3RvaXJlID09ICdBQkNEJykKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCd2aWNOb3JtNDAwXzQ5OScpOwoJCQkkcmVzdWx0WzBdID0gMC41OwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJLy8kcmVzdWx0WzBdID0gR2V0UHJlZmVyZW5jZSgnZGVmQW5vcm00MDBfNDk5Jyk7CgkJCSRyZXN1bHRbMF0gPSAtMjA7CgkJCSRyZXN1bHRbMV0gPSAwOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTkpCgl7CgkJaWYoJHZpY3RvaXJlID09ICdBQkNEJykKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCd2aWNOb3JtUGx1czUwMCcpOwoJCQkkcmVzdWx0WzBdID0gMDsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ2RlZkFub3JtUGx1czUwMCcpOwoJCQkkcmVzdWx0WzBdID0gLTI5OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tMSkKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSA2OwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJJHJlc3VsdFswXSA9IC01OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tMikKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSA3OwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQkKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAtNC41OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tMykKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSA4OwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJJHJlc3VsdFswXSA9IC00OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tNCkKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAxMDsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAtMzsKCQkJJHJlc3VsdFsxXSA9IDA7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09LTUpCgl7CgkJaWYoJHZpY3RvaXJlID09ICdBQkNEJykKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkkcmVzdWx0WzBdID0gMTM7CgkJCSRyZXN1bHRbMV0gPSAxOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkkcmVzdWx0WzBdID0gLTI7CgkJCSRyZXN1bHRbMV0gPSAwOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS02KQoJewoJCWlmKCR2aWN0b2lyZSA9PSAnQUJDRCcpCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJJHJlc3VsdFswXSA9IDE3OwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJJHJlc3VsdFswXSA9IC0xOwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tNykKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAyMjsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAtMC41OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tOCkKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAyODsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAwOwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tOSkKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSA0MDsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAwOwoJCQkkcmVzdWx0WzFdID0gMDsKCQl9Cgl9Cn0KZWxzZWlmKCRsb2NhdXg9PSdCJyl7CglpZigkZWNhcnQgPT0xKQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSA2OwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJCSAKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTU7CgkJJHJlc3VsdFsxXSA9IDE7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PTIpCnsKCWlmKCR2aWN0b2lyZSA9PSAnV1hZWicpCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IDUuNTsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCQkKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTY7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PTMpCnsKCWlmKCR2aWN0b2lyZSA9PSAnV1hZWicpCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IDU7CgkJJHJlc3VsdFsxXSA9IDE7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9CgllbHNlCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IC03OwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT00KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSA0OwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQoJZWxzZQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAtODsKCQkkcmVzdWx0WzFdID0gMDsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KfQplbHNlaWYoJGVjYXJ0ID09NSkKewoJaWYoJHZpY3RvaXJlID09ICdXWFlaJykKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gMzsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTEwOwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT02KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAyOwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQoJZWxzZQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAtMTIuNTsKCQkkcmVzdWx0WzFdID0gMDsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KfQplbHNlaWYoJGVjYXJ0ID09NykKewoJaWYoJHZpY3RvaXJlID09ICdXWFlaJykKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gMTsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTE2OwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT04KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAwLjU7CgkJJHJlc3VsdFsxXSA9IDE7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9CgllbHNlCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IC0yMDsKCQkkcmVzdWx0WzFdID0gMDsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KfQplbHNlaWYoJGVjYXJ0ID09OSkKewoJaWYoJHZpY3RvaXJlID09ICdXWFlaJykKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gMDsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCQkKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTI5OwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT0tMSkKewoJaWYoJHZpY3RvaXJlID09ICdXWFlaJykKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gNjsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTU7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PS0yKQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSA3OwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJCQoJfQoJZWxzZQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAtNC41OwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT0tMykKewoJaWYoJHZpY3RvaXJlID09ICdXWFlaJykKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gODsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTQ7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PS00KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAxMDsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTM7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PS01KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAxMzsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTI7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PS02KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAxNzsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTE7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PS03KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAyMjsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTAuNTsKCQkkcmVzdWx0WzFdID0gMDsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KfQplbHNlaWYoJGVjYXJ0ID09LTgpCnsKCWlmKCR2aWN0b2lyZSA9PSAnV1hZWicpCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IDI4OwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQoJZWxzZQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAwOwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT0tOSkKewoJaWYoJHZpY3RvaXJlID09ICdXWFladycpCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IDQwOwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQoJZWxzZQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAwOwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CgkKfQp9CQoKCgpmdW5jdGlvbiBDYWxjdWxQb2ludHNJbmRpdnMoJGVjYXJ0LCR2aWN0b2lyZSkgewoKCQoJCWlmKCRlY2FydCA9PTEpCgl7CgkJaWYoICR2aWN0b2lyZSA9PSAxKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSA2OwkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQkgCgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTU7CgkJCQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTIpCgl7CgkJaWYoICR2aWN0b2lyZSA9PTEpCgkJewoJCQkKCQkJJHJlc3VsdCA9IDUuNTsKCQkJCgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQkJCgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTY7CgkJCQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTMpCgl7CgkJaWYoJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gNTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTc7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT00KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSA0OwoJCQkKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkKCQkJJHJlc3VsdCA9IC04OwoJCQkKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT01KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAzOwoJCQkKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkKCQkJJHJlc3VsdCA9IC0xMDsKCQkJCgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09NikKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMjsKCQkJCgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtMTIuNTsKCQkJCgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09NykKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTE2OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09OCkKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMC41OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtMjA7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT05KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAwOwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtMjk7CQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS0xKQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSA2OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtNTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydD09LTIpCgl7CgkJaWYoICR2aWN0b2lyZSA9PTEpCgkJewoJCQkKCQkJJHJlc3VsdCA9IDc7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQkKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtNC41OwkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tMykKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gODsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTQ7CgkJCQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS00KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAxMDsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTM7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tNSkKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMTM7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkKCQkJJHJlc3VsdCA9IC0yOwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09LTYpCgl7CgkJaWYoICR2aWN0b2lyZSA9PTEpCgkJewoJCQkKCQkJJHJlc3VsdCA9IDE3OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtMTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS03KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAyMjsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTAuNTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS04KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAyODsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMDsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS05KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSA0MDsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMDsKCQkJCgkJfQoJfQoKfQpmdW5jdGlvbiBwbGF5ZXJFeGlzdHMgKCR1c2VybmFtZSwkcHRzKXsKCSAkZGIgID0gY21zbXMoKS0+R2V0RGIoKTsKCSRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLgoJJ21vZHVsZV9waW5nX2pvdWV1cnMgV0hFUkUgdXNlcm5hbWUgPSA/JzsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoICR1c2VybmFtZSApKTsKCQoJLy8xZXJlIGNvbmRpdGlvbiA6IHBhcyBkZSBjb3JyZXNwb25kYW5jZSA6IGxlIGpvdWV1ciBuJ2V4aXN0ZSBwYXMgOiBvbiBsJ2luc8OocmUgCglpZigkZGJyZXN1bHQgICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKSB7CgkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIChpZCwgdXNlcm5hbWUsIHB0cykgVkFMVUVTICgnJywgPywgPykiOwoJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdXNlcm5hbWUsJHB0cykpOwoJfQoJLyogTGUgam91ZXVyIGV4aXN0ZSBkw6lqw6AgKi8KCS8qIG9uIHZhIHbDqXJpZmllciBzaSBsZSBub21icmUgZGUgcG9pbnRzIGNvcnJlc3BvbmQgb3UgcGFzICovCglpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkgewoJCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIHVzZXJuYW1lID0gPyBBTkQgcHRzID0/IjsKCQkkZGJyZXRvdXIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdXNlcm5hbWUsJHB0cykpOwoJLyogTGUgam91ZXVyIGV4aXN0ZSBldCBsZXMgcG9pbnRzIGNvcnJlc3BvbmRlbnQgb24gbmUgZmFpdCByaWVuKi8JCgkJaWYoJGRicmV0b3VyICYmICRkYnJldG91ci0+UmVjb3JkQ291bnQoKSA+IDApewoJCQl9CgkJCWVsc2V7CgkJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFNFVCBwdHMgPSA/IFdIRVJFIHVzZXJuYW1lID0gPyI7CgkJCQkkcmVzdWx0MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRwdHMsICR1c2VybmFtZSkpOwoJCQl9CgkJCS8vIGluc2NyaXB0aW9uIGRzIGxhIHRhYmxlIGRlcyBjbGFzc2VtZW50cyAKCQkJJG1vaXNfY291cmFudCA9IGRhdGUoIm4iKTsKCQkJJHNhaXNvbiA9ICcyMDEzLTIwMTQnOwoJCS8vCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2x0cyAoaWQsIHVzZXJuYW1lLCBwdHMsIG1vaXMsc2Fpc29uKSBWQUxVRVMgKCcnLD8sPyw/LD8pIjsKCQkvLwkkcmVzdWx0MyA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR1c2VybmFtZSwkcHRzLCRtb2lzX2NvdXJhbnQsICRzYWlzb24pKTsKCQl9Cgl9CgoKZnVuY3Rpb24gY29tcGV0ICgkY29tcGV0aXRpb24pewoJJGRiICA9IGNtc21zKCktPkdldERiKCk7CiRxdWVyeSA9IlNFTEVDVCBjb2VmZmljaWVudCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jb21wZXRpdGlvbnMgV0hFUkUgY29kZV9jb21wZXQgPSA/IjsKJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNvbXBldGl0aW9uKSk7CmlmICgkZGJyZXRvdXIgJiYgJGRicmV0b3VyLT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmV0b3VyLT5GZXRjaFJvdygpKQogICAgICB7CgkkY29lZmYgPSAkcm93Wydjb2VmZmljaWVudCddOwoJcmV0dXJuICRjb2VmZjsKCX0KCQp9Cn0KCmZ1bmN0aW9uIENoZXJjaGVQdHMgKCRqb3VldXIpewoJJGRiICA9IGNtc21zKCktPkdldERiKCk7CgkkcXVlcnkgPSAiU0VMRUNUIHB0cyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIHVzZXJuYW1lID0gPyI7CQoJJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGpvdWV1cikpOwoJaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQogIAkJewogICAgCQkJd2hpbGUgKCRyb3c9ICRkYnJldG91ci0+RmV0Y2hSb3coKSkKICAgICAgCQkJewoJCQkJJHB0cyA9ICRyb3dbJ3B0cyddOwoJCQkJcmV0dXJuICRwdHM7CgkJCX0KCQoJCX0KfQoKZnVuY3Rpb24gbmJqb3VldXJzICgkY29tcGV0aXRpb24pewoJJGRiICA9IGNtc21zKCktPkdldERiKCk7CiRxdWVyeSA9IlNFTEVDVCBqb3VldXJzLCBwYXJ0aWVzIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbXBldGl0aW9ucyBXSEVSRSBjb2RlX2NvbXBldCA9ID8iOwokZGJyZXRvdXIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkY29tcGV0aXRpb24pKTsKaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXRvdXItPkZldGNoUm93KCkpCiAgICAgIHsKCSRyZXN1bHRbXSA9ICRyb3dbJ2pvdWV1cnMnXTsKCSRyZXN1bHRbXSA9ICRyb3dbJ3BhcnRpZXMnXTsKCXJldHVybiAkcmVzdWx0OwoJCgl9CgkKfQp9CgpmdW5jdGlvbiBkcm9wZG93biAoJGNvbXBldGl0aW9uKXsKCSRkYiAgPSBjbXNtcygpLT5HZXREYigpOwokcXVlcnkgPSJTRUxFQ1Qgam91ZXVycyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jb21wZXRpdGlvbnMgV0hFUkUgY29kZV9jb21wZXQgPSA/IjsKJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNvbXBldGl0aW9uKSk7CmlmICgkZGJyZXRvdXIgJiYgJGRicmV0b3VyLT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmV0b3VyLT5GZXRjaFJvdygpKQogICAgICB7Cgkkam91ZXVycyA9ICRyb3dbJ2pvdWV1cnMnXTsKCXJldHVybiAkam91ZXVyczsKCX0KCQp9Cn0KCmZ1bmN0aW9uIHJhbmRvbSgkY2FyKSB7CiRzdHJpbmcgPSAiIjsKJGNoYWluZSA9ICJhYmNkZWZnaGlqa2xtbnBxcnN0dXZ3eHkiOwpzcmFuZCgoZG91YmxlKW1pY3JvdGltZSgpKjEwMDAwMDApOwpmb3IoJGk9MDsgJGk8JGNhcjsgJGkrKykgewokc3RyaW5nIC49ICRjaGFpbmVbcmFuZCgpJXN0cmxlbigkY2hhaW5lKV07Cn0KcmV0dXJuICRzdHJpbmc7Cn0KCmZ1bmN0aW9uIGNvZWZmICgkdHlwZUNvbXBldGl0aW9uKXsKCSRkYiAgPSBjbXNtcygpLT5HZXREYigpOwovKgkKCWlmKHN1YnN0cl9jb3VudCgkdHlwZUNvbXBldGl0aW9uLCctJyk+MCl7CgkJJHR5cGVfaW50ZXIgPSBleHBsb2RlKCctJywkdHlwZUNvbXBldGl0aW9uLDIpOwoJCSR0eXBlID0gJHR5cGVfaW50ZXJbMF07Cgl9CgllbHNlIHsKCQkkdHlwZSA9ICR0eXBlQ29tcGV0aXRpb247Cgl9CiovCiRxdWVyeSA9IlNFTEVDVCBjb2VmZmljaWVudCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyBXSEVSRSBuYW1lID0gPyI7CiRkYnJldG91ciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR0eXBlQ29tcGV0aXRpb24pKTsKaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXRvdXItPkZldGNoUm93KCkpCiAgICAgIHsKCSRjb2VmZiA9ICRyb3dbJ2NvZWZmaWNpZW50J107CglyZXR1cm4gJGNvZWZmOwoJfQoJCn0KZWxzZXsKCSRjb2VmZiA9IDA7CglyZXR1cm4gY29lZmY7CgkvL2VjaG8gImNvZWZmaWNpZW50IGludHJvdXZhYmxlICEiOwp9Cn0KCmZ1bmN0aW9uIGNvZWZmX29sZCAoJGNsZSl7CgkkZGIgID0gY21zbXMoKS0+R2V0RGIoKTsKJHF1ZXJ5ID0iU0VMRUNUIGNvZWZmaWNpZW50IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbXBldGl0aW9ucyBBUyBjb21wLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVuY29udHJlcyBBUyByZW4gV0hFUkUgY29tcC5jb2RlX2NvbXBldCA9IHJlbi50eXBlX2NvbXBldCBBTkQgcmVuLmNsZSA9ICA/IjsKJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNsZSkpOwppZiAoJGRicmV0b3VyICYmICRkYnJldG91ci0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJldG91ci0+RmV0Y2hSb3coKSkKICAgICAgewoJJGNvZWZmID0gJHJvd1snY29lZmZpY2llbnQnXTsKCXJldHVybiAkY29lZmY7Cgl9CgkKfQplbHNlewoJZWNobyAiY29lZmZpY2llbnQgaW50cm91dmFibGUgISI7Cn0JCQpmdW5jdGlvbiBkYXRldmVyc2ZyICgkZGF0ZSl7CSAgIAoJJGRhdGVhcnIgPSBleHBsb2RlKCcvJywgJGRhdGUpOwoJJGRhdGVmciA9ICRkYXRlYXJyWzJdIC4gJy0nIC4gJGRhdGVhcnJbMV0gLiAnLScgLiAkZGF0ZWFyclswXTsKCXJldHVybiAkZGF0ZWZyOwoJfQp9CmZ1bmN0aW9uIG1vaXNfZnJhbmNhaXMoJG1vaXMsJGxvbmd1ZXVyKXsKCWlmKCFpc3NldCgkbG9uZ3VldXIpIHx8ICRsb25ndWV1ciA9PScnKXsKCQkkbW9udGhzID0gYXJyYXkoIkphbnZpZXIiLCAiRsOpdnJpZXIiLCAiTWFycyIsICJBdnJpbCIsICJNYWkiLCAiSnVpbiIsICJqdWlsbGV0IiwgIkFvdXQiLCAiU2VwdGVtYnJlIiwgIk9jdG9icmUiLCAiTm92ZW1icmUiLCAiZMOpY2VtYnJlIik7Cgl9CgllbHNlCgl7CgkJJG1vbnRocyA9IGFycmF5KCJKYW4iLCAiRsOpdiIsICJNYXIiLCAiQXZyIiwgIk1haSIsICJKdWluIiwgImp1aWwiLCAiQW91IiwgIlNlcCIsICJPY3QiLCAiTm92IiwgImTDqWMiKTsKCX0KCSRtb250aF90b19kaXNwbGF5ID0gJG1vaXMtMTsKCSRtb250aF9mcmFuY2FpcyA9ICRtb250aHNbIiRtb250aF90b19kaXNwbGF5Il07CglyZXR1cm4gJG1vbnRoX2ZyYW5jYWlzOwp9CgpmdW5jdGlvbiBnZXRfbmFtZSgkbm9tKXsKCSRleHBsb3Npb24gPSBleHBsb2RlKCcgJywkbm9tKTsKCSRjb21wdGV1ciA9IGNvdW50KCRleHBsb3Npb24pOwoJJG5hbWUgPSBhcnJheSgpOwoJJHByZW5vbSA9IGFycmF5KCk7CgkKCSRpID0wOwoJZm9yZWFjaCAoJGV4cGxvc2lvbiBhcyAkdGVzdGNhc2UpIHsKCSRpKys7CQoJICBpZiAoY3R5cGVfdXBwZXIoJHRlc3RjYXNlKSkgewoJICAgICRuYW1lWyRpXSA9ICR0ZXN0Y2FzZTsKCQkvL2VjaG8gIkxhIGNoYcOubmUiLiRpLiIgJHRlc3RjYXNlIG5lIGNvbnRpZW50IHF1ZSBkZXMgbWFqdXNjdWxlcy5cbiI7CgkgIH0gZWxzZSB7CgkgICAvLyBlY2hvICJMYSBjaGHDrm5lIi4kaS4iICR0ZXN0Y2FzZSBuZSBjb250aWVudCBwYXMgcXVlIGRlcyBtYWp1c2N1bGVzLlxuIjsKCQkkcHJlbm9tWyRpXSA9ICR0ZXN0Y2FzZTsKCSAgfQoJfQoJCgkkbm9tX2ZpbmFsID0gaW1wbG9kZSggJyAnLCRuYW1lKTsKCSRwcmVub21fZmluYWwgPSBpbXBsb2RlKCcgJywkcHJlbm9tKTsKCSRyZXN1bHRbMF0gPSAkbm9tX2ZpbmFsOwoJJHJlc3VsdFsxXSA9ICRwcmVub21fZmluYWw7CglyZXR1cm4gJHJlc3VsdDsKCQp9Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFBpbmcKIyBWZXJzaW9uOiAwLjIsIENsYXVkZSBTSU9IQU4gQWdpIHdlYmNvbnNlaWwKIyBNZXRob2Q6IEluc3RhbGwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDggYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NrZWxldG9uLwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovKioKICogRm9yIHNlcGFyYXRlZCBtZXRob2RzLCB5b3UnbGwgYWx3YXlzIHdhbnQgdG8gc3RhcnQgd2l0aCB0aGUgZm9sbG93aW5nCiAqIGxpbmUgd2hpY2ggY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgbWV0aG9kIHdhcyBjYWxsZWQgZnJvbSB0aGUgbW9kdWxlCiAqIEFQSSwgYW5kIHRoYXQgZXZlcnl0aGluZydzIHNhZmUgdG8gY29udGludWU6CiAqLyAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoKLyoqIAogKiBBZnRlciB0aGlzLCB0aGUgY29kZSBpcyBpZGVudGljYWwgdG8gdGhlIGNvZGUgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUKICogd3JhcHBlZCBpbiB0aGUgSW5zdGFsbCgpIG1ldGhvZCBpbiB0aGUgbW9kdWxlIGJvZHkuCiAqLwoKJGRiID0gJGdDbXMtPkdldERiKCk7CgovLyBteXNxbC1zcGVjaWZpYywgYnV0IGlnbm9yZWQgYnkgb3RoZXIgZGF0YWJhc2UKJHRhYm9wdGFycmF5ID0gYXJyYXkoICdteXNxbCcgPT4gJ0VOR0lORT1NeUlTQU0nICk7CgokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgokZmxkcyA9ICIKCWlkIEkoMTEpIEFVVE8gS0VZLAoJYWN0aWYgSSgxKSwKCWxpY2VuY2UgSSgxMSksCglub20gQygyNTUpLAoJcHJlbm9tIEMoMjU1KSwKCXB0cyBJKDExKSwKCWJpcnRoZGF5IEQsCglzZXhlIEMoMSksCgl0eXBlIEMoMSksCgljZXJ0aWYgQygyNTUpLAoJdmFsaWRhdGlvbiBELAoJZWNoZWxvbiBDKDEpLAoJcGxhY2UgSSg0KSwKCXBvaW50IEkoNCksCgljYXQgQyg1KSwKCWFkcmVzc2UgQygyNTUpLAoJdmlsbGUgQygyNTUpLAoJY29kZXBvc3RhbCBDKDUpICI7CgkJCQovLyBjcmVhdGUgaXQuIAokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyIsCgkJCQkgICAkZmxkcywgCgkJCQkgICAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiMKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CiRmbGRzPSAiaWQgSSgxMSkgS0VZIEFVVE8sCiAgICAgICAgc2Fpc29uIEMoMTAwKSwKCXBoYXNlIEkoMSksCglsaWJlcXVpcGUgQygyNTUpLAoJbGliZGl2aXNpb24gQygyNTUpLAoJZnJpZW5kbHluYW1lIEMoMjU1KSwKCWxpZW5kaXZpc2lvbiBDKDI1NSksCglpZHBvdWxlIEkoMTEpLAoJaWRkaXYgSSgxMSksCgl0eXBlX2NvbXBldCBDKDMpIERFRkFVTFQgJ1UnLAoJdGFnIEMoMjU1KSwKCWlkZXByZXV2ZSBDKDExKSI7Cgokc3FsYXJyYXk9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIiwKCQkJCSAgJGZsZHMsCgkJCQkgICR0YWJvcHRhcnJheSk7CgkJCQkKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwovL29uIGNyw6nDqSB1biBpbmRleCBwb3VyIMOpdml0ZXIgbGVzIGRvdWJsb25zCiRpZHhmbGRzID0gJ3NhaXNvbiwgbGliZXF1aXBlLCBsaWVuZGl2aXNpb24nOwokdGFibmFtZSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcyI7CiRpZHhuYW1lID0gJ3VuaWNpdGUnOwovLyRpZHhvcHRhcnJheSA9ICdVbmlxdWUnOwokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKICAkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoJ3VuaWNpdGUnLCAnZGVtb19tb2R1bGVfcGluZ19lcXVpcGVzJywgJ3NhaXNvbiwgbGliZXF1aXBlLCBsaWVuZGl2aXNpb24nKTsvLywgYXJyYXkoJ1VOSVFVRScpKTsKICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Ci8vdW5lIG5vdXZlbGxlIHRhYmxlIHBvdXIgbGVzIHZpY3RvaXJlcyBicnV0ZXMgKHBhcyBkZSB2aWN0b2lyZXMgZMOpdGFpbGzDqWVzIHBvdXIgbCdpbnN0YW50KQokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgokZmxkcyA9ICIKCWlkIEkoMTEpIEFVVE8gS0VZLAoJc3RhdHV0IEwsCglzYWlzb24gQygyNTUpLAoJZGF0ZW1haiAiLiBDTVNfQURPREJfRFQgLiIsCglsaWNlbmNlIEkoMTEpLAoJZGF0ZV9ldmVudCBELAoJZXByZXV2ZSBDKDI1NSksCglub20gQygyNTUpLAoJbnVtam91cm4gSSgxMSksCgljbGFzc2VtZW50IEkoNCksCgl2aWN0b2lyZSBJKDEpLAoJZWNhcnQgTig2LjIpLAoJdHlwZV9lY2FydCBJKDExKSwKCWNvZWZmIE4oMy4yKSwKCXBvaW50cmVzIE4oNS4zKSwKCWZvcmZhaXQgSSgxKSAiOwoJCQkKLy8gY3JlYXRlIGl0LiAKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCIsCgkJCQkgICAkZmxkcywgCgkJCQkgICAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovL3VuZSBub3V2ZWxsZSB0YWJsZSBwb3VyIGxlcyBwb2ludHMKCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwoKLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCiRmbGRzID0gIgoJaWQgSSgxMSkgIEFVVE8gS0VZLAoJc2Fpc29uIEMoMjU1KSwKCWxpY2VuY2UgSSgxMSksCglhZHZsaWMgSSgxMSksCgl2ZCBJLAoJbnVtam91cm4gSSgyKSwKCWNvZGVjaGFtcCBDKDMpLAoJZGF0ZV9ldmVudCBELAoJYWR2c2V4ZSBDKDMpLAoJYWR2bm9tcHJlIEMoMjU1KSwKCXBvaW50cmVzIE4oNi4zKSwKCWNvZWZjaGFtcCBOKDMuMiksCglhZHZjbGFvZiBDKDQpIjsKCQkJCi8vIAokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyIsCgkJCQkgICAkZmxkcywgCgkJCQkgICAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovLwokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgokZmxkcyA9ICIKCWlkIEkoMTEpIEFVVE8gS0VZLAoJc2Fpc29uIEMoMjU1KSwKCWRhdGVtYWogIi4gQ01TX0FET0RCX0RUIC4iLAoJbGljZW5jZSBJKDExKSwKCXNpdF9tZW5zIEMoMjAwKSwKCWZmdHQgSSgxMSksCgltYWpfZmZ0dCBELAoJc3BpZCBJKDExKSwKCXNwaWRfdG90YWwgSSgxMSksCgltYWpfc3BpZCBELAoJbWFqX3RvdGFsIEkoMTEpIjsKCQkJCi8vIGNyZWF0ZSBpdC4gCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIiwKCQkJCSAgICRmbGRzLCAKCQkJCSAgICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCgokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgokZmxkcyA9ICIKICAgICBpZCBJKDExKSBBVVRPIEtFWSwKCXNhaXNvbiBDKDI1NSksCglpZHBvdWxlIEkoMTEpLAoJaWRkaXYgSSgxMSksCgljbHViIEkoMSksCgl0b3VyIEkoMiksCglkYXRlX2V2ZW50IEQsCglhZmZpY2hlIEwsIAoJdXBsb2FkZWQgSSgxKSwKCWxpYmVsbGUgQygyNTUpLAoJZXF1YSBDKDI1NSksCgllcXViIEMoMjU1KSwKCXNjb3JlYSBJKDIpLAoJc2NvcmViIEkoMiksCglsaWVuIEMoMjU1KSI7CgkJCQovLyBjcmVhdGUgaXQuIAokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG91bGVzX3JlbmNvbnRyZXMiLAoJCQkJICAgJGZsZHMsIAoJCQkJICAgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHRhYm9wdGFycmF5ID0gYXJyYXkoICdteXNxbCcgPT4gJ0VOR0lORT1NeUlTQU0nICk7CgokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgokZmxkcyA9ICIKCWlkIEkoMTEpIEFVVE8gS0VZLAoJZGF0ZWNyZWF0ZWQgIi4gQ01TX0FET0RCX0RUIC4iLAoJZGF0ZW1haiAiLiBDTVNfQURPREJfRFQgLiIsCglzYWlzb24gQygyNTUpLAoJbW9pcyBJKDIpLAoJYW5uZWUgSSg0KSwKCXBoYXNlIEkoMSksCglsaWNlbmNlIEkoMTEpLAoJY2F0ZWcgQygxMCksCglub20gQygyNTUpLAoJcHJlbm9tIEMoMjU1KSwKCWNsZ2xvYiBJKDQpLAoJYWNsZ2xvYiBJKDQpLAoJcG9pbnRzIE4oNi4yKSwKCWFwb2ludCBOKDYuMiksCgljbG5hdCBJKDExKSwKCXZhbGNsYSBJKDQpLAoJdmFsaW5pdCBJKDQpLAoJcmFuZ3JlZyBJKDExKSwKCXJhbmdkZXAgSSgxMSksCglwcm9nbW9pcyBOKDYuMiksCglwcm9nbW9pc3BsYWNlcyBJKDQpIFNJR05FRCwKCXByb2dhbm4gSSg0KSBTSUdORUQiOwoJCQkKLy8gY3JlYXRlIGl0LiAKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIiwKCQkJCSAgICRmbGRzLCAKCQkJCSAgICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwoKLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCiRmbGRzID0gIgoJaWQgSSgxMSkgQVVUTyBLRVksCglkYXRlY3JlYXRlZCAiLiBDTVNfQURPREJfRFQgLiIsCglkYXRlbWFqICIuIENNU19BRE9EQl9EVCAuIiwKCW1vaXMgSSgyKSwKCWFubmVlIEkoNCksCglwaGFzZSBJKDEpLAoJbGljZW5jZSBJKDExKSwKCWNhdGVnIEMoMTApLAoJbm9tIEMoMjU1KSwKCXByZW5vbSBDKDI1NSksCglwb2ludHMgTig2LjIpLAoJY2xuYXQgSSgxMSksCglyYW5ncmVnIEkoMTEpLAoJcmFuZ2RlcCBJKDExKSwKCXByb2dtb2lzIE4oNi4yKSI7CgkJCQovLyBjcmVhdGUgaXQuIAokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfYWR2ZXJzYWlyZXMiLAoJCQkJICAgJGZsZHMsIAoJCQkJICAgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgovLyB0YWJsZSBzY2hlbWEgZGVzY3JpcHRpb24KJGZsZHMgPSAiCglpZCBJKDExKSBBVVRPIEtFWSwKCXNhaXNvbiBDKDI1NSksCgl0eXBlX2NvbXBldCBDKDMpLAoJZGF0ZV9kZWJ1dCBELAoJZGF0ZV9maW4gRCwKCWlkZGl2IEkoMTEpLAoJaWRwb3VsZSBJKDExKSwKCW51bWpvdXJuIEkoMTEpLAoJdGFnIEMoMjU1KSwKCWlkZXByZXV2ZSBJKDExKSI7CgkJCQovLyBjcmVhdGUgaXQuIAokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2FsZW5kcmllciIsCgkJCQkgICAkZmxkcywgCgkJCQkgICAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgoKLy9jcsOpYXRpb24gZCd1biBpbmRleCB1bmlxdWUgOiAKLy9DUkVBVEUgVU5JUVVFIElOREVYIG5vZG91YmxvbnMgT04gcGluZ19tb2R1bGVfcGluZ19zaXRfbWVucyAobGljZW5jZSwgbW9pcywgYW5uZWUpOwoKLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCiRmbGRzID0gIgoJaWQgSSgxMSkgQVVUTyBLRVksCglkYXRlY3JlYXRlZCAiLiBDTVNfQURPREJfRFQgLiIsCglkYXRlbWFqICIuIENNU19BRE9EQl9EVCAuIiwKCWxpY2VuY2UgSSgxMSksCgl0eXBlX2NvbnRhY3QgQygyNTUpLAoJY29udGFjdCBDKDI1NSksCglkZXNjcmlwdGlvbiBDKDI1NSkiOwoJCQkKLy8gY3JlYXRlIGl0LiAKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbW0iLAoJCQkJICAgJGZsZHMsIAoJCQkJICAgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCiRmbGRzID0gIgoJaWQgSSgxMSkgQVVUTyBLRVksCglkYXRlY3JlYXRlZCAiLiBDTVNfQURPREJfRFQgLiIsCglzdGF0dXMgQygyNTUpLAoJZGVzaWduYXRpb24gQygyNTUpLAoJYWN0aW9uIEMoMjU1KSI7CgkJCQovLyBjcmVhdGUgaXQuIAokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXAiLAoJCQkJICAgJGZsZHMsIAoJCQkJICAgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy90YWJsZSB0eXBlX2NvbXBldGl0aW9ucwokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKJGZsZHMgPSAiCglpZCBJKDExKSBBVVRPIEtFWSwKCW5hbWUgQygyNTUpLAoJY29kZV9jb21wZXQgQygzKSBVTklRVUUsCgljb2VmZmljaWVudCBOKDMuMiksCglpbmRpdnMgTCwKCXRhZyBDKDI1NSksCglpZGVwcmV1dmUgSSgxMSksCglpZG9yZ2EgSSgxMSkiOwoJCQkKLy8gY3JlYXRlIGl0LiAKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIiwKCQkJCSAgICRmbGRzLCAKCQkJCSAgICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKI09uIGluc8OocmUgbGVzIGRvbm7DqWVzIGF1IG5pdmVhdSBuYXRpb25hbAokaW5zZXJ0X3NxbCA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgKGBpZGAsIGBuYW1lYCwgYGNvZGVfY29tcGV0YCwgYGNvZWZmaWNpZW50YCwgYGluZGl2c2AsIGB0YWdgLCBgaWRlcHJldXZlYCwgYGlkb3JnYWApIFZBTFVFUyAoJycsID8sID8sID8sID8sID8sID8sID8pIjsKLy8kZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnVG91cm5vaSBOYXRpb25hbCBldCBJbnRlcm5hdC4nLCBOVUxMLCAnMC43NScsIDEsICd7UGluZyBhY3Rpb249XCdpbmRpdmlkdWVsbGVzXCcgaWRlcHJldXZlPVwnMzA2NFwnfScsIDMwNjQsIDEwMDAwMSkpOwovLyRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdDSEFNUElPTk5BVCBQT0xJQ0UnLCBOVUxMLCBOVUxMLCAxLCAne1BpbmcgYWN0aW9uPVwnaW5kaXZpZHVlbGxlc1wnIGlkZXByZXV2ZT1cJzM5MTdcJ30nLCAzOTE3LCAxMDAwMDEpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ1RvdXJub2kgT1BFTicsIE5VTEwsIE5VTEwsIDEsICd7UGluZyBhY3Rpb249XCdpbmRpdmlkdWVsbGVzXCcgaWRlcHJldXZlPVwnNDUzN1wnfScsIDQ1MzcsIDEwMDAwMSkpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnQ291cGUgRG9tLVRvbScsIE5VTEwsIE5VTEwsIDEsICd7UGluZyBhY3Rpb249XCdpbmRpdmlkdWVsbGVzXCcgaWRlcHJldXZlPVwnNDMxMlwnfScsIDQzMTIsIDEwMDAwMSkpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnRmluYWxlcyBwYXIgY2xhc3NlbWVudCcsIE5VTEwsIE5VTEwsIDEsICd7UGluZyBhY3Rpb249XCdpbmRpdmlkdWVsbGVzXCcgaWRlcHJldXZlPVwnMzAwMVwnfScsIDMwMDEsIDEwMDAwMSkpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnQ2hhbXBpb25uYXQgRlNHVCcsIE5VTEwsIE5VTEwsIDEsICd7UGluZyBhY3Rpb249XCdpbmRpdmlkdWVsbGVzXCcgaWRlcHJldXZlPVwnMzkwN1wnfScsIDM5MDcsIDEwMDAwMSkpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnQ2hhbXBpb25uYXQgZGUgRnJhbmNlIFNlbmlvcnMnLCBOVUxMLCBOVUxMLCAxLCAne1BpbmcgYWN0aW9uPVwnaW5kaXZpZHVlbGxlc1wnIGlkZXByZXV2ZT1cJzMwNThcJ30nLCAzMDU4LCAxMDAwMDEpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0VuZ2FnZW1lbnRzIENyaXTDqXJpdW0gRsOpZMOpcmFsJywgTlVMTCwgTlVMTCwgMSwgJ3tQaW5nIGFjdGlvbj1cJ2luZGl2aWR1ZWxsZXNcJyBpZGVwcmV1dmU9XCc0NDgwXCd9JywgNDQ4MCwgMTAwMDAxKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdDaGFtcGlvbm5hdHMgZGUgRnJhbmNlIENvcnBvLicsIE5VTEwsIE5VTEwsIDEsICd7UGluZyBhY3Rpb249XCdpbmRpdmlkdWVsbGVzXCcgaWRlcHJldXZlPVwnMzA2MlwnfScsIDMwNjIsIDEwMDAwMSkpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnQ2hhbXBpb25uYXRzIGRlIEZyYW5jZSBKZXVuZXMnLCBOVUxMLCBOVUxMLCAxLCAne1BpbmcgYWN0aW9uPVwnaW5kaXZpZHVlbGxlc1wnIGlkZXByZXV2ZT1cJzMwNjBcJ30nLCAzMDYwLCAxMDAwMDEpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0NoYWxsZW5nZSBCZXJuYXJkIEpldScsIE5VTEwsIE5VTEwsIDEsICd7UGluZyBhY3Rpb249XCdpbmRpdmlkdWVsbGVzXCcgaWRlcHJldXZlPVwnMzA3MFwnfScsIDMwNzAsIDEwMDAwMSkpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnRmluYWxlcyBJbmRpdmlkdWVsbGVzJywgTlVMTCwgTlVMTCwgMSwgJ3tQaW5nIGFjdGlvbj1cJ2luZGl2aWR1ZWxsZXNcJyBpZGVwcmV1dmU9XCczMDY1XCd9JywgMzA2NSwgMTAwMDAxKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdDcml0w6lyaXVtIGbDqWTDqXJhbCcsIE5VTEwsICcxLjAwJywgMSwgJ3tQaW5nIGFjdGlvbj1cJ2luZGl2aWR1ZWxsZXNcJyBpZGVwcmV1dmU9XCcxMDcyXCd9JywgMTA3MiwgMTAwMDAxKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdDaGFtcGlvbm5hdCBkZXMgSmV1bmVzIEZGVFQnLCBOVUxMLCBOVUxMLCAwLCAne1BpbmcgYWN0aW9uPVwncGFyLWVxdWlwZXNcJyBpZGVwcmV1dmU9XCc1NzIxXCd9JywgNTcyMSwgMTAwMDAxKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdDaGFtcGlvbm5hdCBwYXIgw6lxdWlwZXMgY29ycG8nLCBOVUxMLCBOVUxMLCAwLCAne1BpbmcgYWN0aW9uPVwncGFyLWVxdWlwZXNcJyBpZGVwcmV1dmU9XCc0NTQ0XCd9JywgNDU0NCwgMTAwMDAxKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdDaGFuZ2VtZW50IGRlIHR5cGUnLCBOVUxMLCBOVUxMLCAwLCAne1BpbmcgYWN0aW9uPVwncGFyLWVxdWlwZXNcJyBpZGVwcmV1dmU9XCc0OTcyXCd9JywgNDk3MiwgMTAwMDAxKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdJbnRlcmNsdWJzIEpldW5lcycsIE5VTEwsIE5VTEwsIDAsICd7UGluZyBhY3Rpb249XCdwYXItZXF1aXBlc1wnIGlkZXByZXV2ZT1cJzMwNTdcJ30nLCAzMDU3LCAxMDAwMDEpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0NoYW1waW9ubmF0IEZyYW5jZSBkZXMgUsOpZ2lvbnMnLCBOVUxMLCBOVUxMLCAwLCAne1BpbmcgYWN0aW9uPVwncGFyLWVxdWlwZXNcJyBpZGVwcmV1dmU9XCczMDAwXCd9JywgMzAwMCwgMTAwMDAxKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdDb3VwZSBOYXRpb25hbGUgVsOpdMOpcmFucycsIE5VTEwsICcwLjc1JywgMCwgJ3tQaW5nIGFjdGlvbj1cJ3Bhci1lcXVpcGVzXCcgaWRlcHJldXZlPVwnMzA1NVwnfScsIDMwNTUsIDEwMDAwMSkpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnQ291cGUgZGUgRnJhbmNlIGRlcyBDbHVicycsIE5VTEwsIE5VTEwsIDAsICd7UGluZyBhY3Rpb249XCdwYXItZXF1aXBlc1wnIGlkZXByZXV2ZT1cJzU2MDJcJ30nLCA1NjAyLCAxMDAwMDEpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0NvdXBlIE5hdGlvbmFsZSBDb3Jwb3JhdGl2ZScsIE5VTEwsIE5VTEwsIDAsICd7UGluZyBhY3Rpb249XCdwYXItZXF1aXBlc1wnIGlkZXByZXV2ZT1cJzMwNTZcJ30nLCAzMDU2LCAxMDAwMDEpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0NocHQgRnJhbmNlIHBhciDDqXF1aXBlcyBmw6ltaW5pbicsIE5VTEwsICcxLjAwJywgMCwgJ3tQaW5nIGFjdGlvbj1cJ3Bhci1lcXVpcGVzXCcgaWRlcHJldXZlPVwnMjAxMlwnfScsIDIwMTIsIDEwMDAwMSkpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnQ2hwdCBGcmFuY2UgcGFyIMOpcXVpcGVzIG1hc2N1bGluJywgTlVMTCwgJzEuMDAnLCAwLCAne1BpbmcgYWN0aW9uPVwncGFyLWVxdWlwZXNcJyBpZGVwcmV1dmU9XCcxMDczXCd9JywgMTA3MywgMTAwMDAxKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdDaGFtcGlvbm5hdCBkZSBGcmFuY2UgRkZTVS9VTlNTJywgTlVMTCwgTlVMTCwgMSwgJ3tQaW5nIGFjdGlvbj1cJ2luZGl2aWR1ZWxsZXNcJyBpZGVwcmV1dmU9XCczODc0XCd9JywgMzg3NCwgMTAwMDAxKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdDaGFsbGVuZ2UgVVNDRicsIE5VTEwsIE5VTEwsIDEsICd7UGluZyBhY3Rpb249XCdpbmRpdmlkdWVsbGVzXCcgaWRlcHJldXZlPVwnMzg4NFwnfScsIDM4ODQsIDEwMDAwMSkpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnQ2hhbXBpb25uYXRzIGRlIEZyYW5jZSBWw6l0w6lyYW5zJywgTlVMTCwgJzEuMDAnLCAxLCAne1BpbmcgYWN0aW9uPVwnaW5kaXZpZHVlbGxlc1wnIGlkZXByZXV2ZT1cJzMwNjFcJ30nLCAzMDYxLCAxMDAwMDEpKTsKCiMKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgovLyB0YWJsZSBzY2hlbWEgZGVzY3JpcHRpb24KJGZsZHMgPSAiCglpZCBJKDExKSBBVVRPIEtFWSwKCWxpYmVsbGUgQygyNTUpLAoJaWRvcmdhIEkoMTEpLAoJY29kZSBDKDUpLAoJc2NvcGUgQygxKSI7CgovLyBjcmVhdGUgaXQuIAokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfb3JnYW5pc21lcyIsCgkJCQkgICAkZmxkcywgCgkJCQkgICAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiNPbiBpbnPDqHJlIGxlcyB2YWxldXJzIGRhbnMgbGEgdGFibGUKJGluc2VydF9zcWwgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX29yZ2FuaXNtZXMgKGBpZGAsIGBsaWJlbGxlYCwgYGlkb3JnYWAsIGBjb2RlYCwgYHNjb3BlYCkgVkFMVUVTICgnJywgPywgPywgPywgPykiOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnRkZUVCcsIDEwMDAwMSwgJ0ZFREUnLCAnRicpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ1pPTkUgMSAoQ0UtSURGKScsIDEwMDAxLCAnWjAxJywgJ1onKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdaT05FIDIgKEJSLVBETCknLCAxMDAwMiwgJ1owMicsICdaJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnWk9ORSAzIChBUS1MSS1NUC1QQyknLCAxMDAwMywgJ1owMycsICdaJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnWk9ORSA0IChBVS1DTy1DQS1MUi1QUi1SQSknLCAxMDAwNCwgJ1owNCcsICdaJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnWk9ORSA1IChBTC1CTy1DSEEtRkMtTE8pJywgMTAwMDUsICdaMDUnLCAnWicpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ1pPTkUgNiAoQk4tSE4tTlBDLVBJKScsIDEwMDA2LCAnWjA2JywgJ1onKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdaT05FIDcgKERPTS1UT00pJywgMTAwMDcsICdaMDcnLCAnWicpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ1JIT05FIEFMUEVTJywgMTAwMSwgJ0wwMScsICdMJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnQUxTQUNFICcsIDEwMDIsICdMMDInLCAnTCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0FRVUlUQUlORScsIDEwMDMsICdMMDMnLCAnTCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ1BBWVMgREUgTEEgTE9JUkUnLCAxMDA0LCAnTDA0JywgJ0wnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdBVVZFUkdORScsIDEwMDUsICdMMDUnLCAnTCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0JPVVJHT0dORScsIDEwMDYsICdMMDYnLCAnTCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0JSRVRBR05FJywgMTAwNywgJ0wwNycsICdMJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnQ0hBTVBBR05FIC0gQVJERU5ORScsIDEwMDgsICdMMDgnLCAnTCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ1BBQ0EnLCAxMDA5LCAnTDA5JywgJ0wnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdOT1JEL1BBUy1ERS1DQUxBSVMnLCAxMDEwLCAnTDEwJywgJ0wnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdGUkFOQ0hFIENPTVRFJywgMTAxMSwgJ0wxMScsICdMJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnSUxFIERFIEZSQU5DRScsIDEwMTIsICdMMTInLCAnTCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0xBTkdVRURPQyBST1VTU0lMTE9OJywgMTAxMywgJ0wxMycsICdMJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnTElNT1VTSU4nLCAxMDE0LCAnTDE0JywgJ0wnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdMT1JSQUlORScsIDEwMTUsICdMMTUnLCAnTCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0JBU1NFIE5PUk1BTkRJRScsIDEwMTcsICdMMTcnLCAnTCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0hBVVRFIE5PUk1BTkRJRScsIDEwMTgsICdMMTgnLCAnTCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ1BJQ0FSRElFJywgMTAxOSwgJ0wxOScsICdMJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnUE9JVE9VIENIQVJFTlRFUycsIDEwMjAsICdMMjAnLCAnTCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ1BST1ZFTkNFJywgMTAyMSwgJ0wyMScsICdMJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnTUlESS1QWVJFTkVFUycsIDEwMjIsICdMMjInLCAnTCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0NFTlRSRScsIDEwMjMsICdMMjMnLCAnTCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0xJR1VFIENPUlNFIERFIFRFTk5JUyBERSBUQUJMRScsIDEwMjQsICdMMjQnLCAnTCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0dVWUFORS5MJywgMTAzMCwgJ0wzMCcsICdMJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnUkVVTklPTi5MJywgMTAzMSwgJ0wzMScsICdMJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnTk9VVkVMTEUgQ0FMRURPTklFJywgMTAzMiwgJ0wzMicsICdMJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnR1VBREVMT1VQRS5MJywgMTAzMywgJ0wzMycsICdMJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnTElHVUUgTUFSVElOSVFVRScsIDEwMzQsICdMMzQnLCAnTCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ01BWU9UVEUuTCcsIDEwMzYsICdMMzYnLCAnTCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ1RBSElUSScsIDEwMzcsICdMMzcnLCAnTCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ1dBTExJUyBFVCBGVVRVTkEgTCcsIDEwMzgsICdMMzgnLCAnTCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0FJTicsIDEsICdEMDEnLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0FJU05FJywgMiwgJ0QwMicsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnQUxMSUVSJywgMywgJ0QwMycsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnQUxQRVMgSFRFIFBST1ZFTkNFJywgNCwgJ0QwNCcsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnSEFVVEVTIEFMUEVTJywgNSwgJ0QwNScsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnQUxQRVMgTUFSSVRJTUVTJywgNiwgJ0QwNicsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnQVJERU5ORVMnLCA4LCAnRDA4JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdBUklFR0UnLCA5LCAnRDA5JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdBVUJFJywgMTAsICdEMTAnLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0FVREUnLCAxMSwgJ0QxMScsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnQVZFWVJPTicsIDEyLCAnRDEyJywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdCT1VDSEVTIERVIFJIT05FJywgMTMsICdEMTMnLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0NBTFZBRE9TJywgMTQsICdEMTQnLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0NBTlRBTCcsIDE1LCAnRDE1JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdDSEFSRU5URScsIDE2LCAnRDE2JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdDSEFSRU5URSBNQVJJVElNRScsIDE3LCAnRDE3JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdDSEVSJywgMTgsICdEMTgnLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0NPUlJFWkUnLCAxOSwgJ0QxOScsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnQ09URSBEXCdPUicsIDIxLCAnRDIxJywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdDw5RURVMgRCBBUk1PUicsIDIyLCAnRDIyJywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdDUkVVU0UnLCAyMywgJ0QyMycsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnRE9SRE9HTkUnLCAyNCwgJ0QyNCcsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnRE9VQlMnLCAyNSwgJ0QyNScsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnRFJPTUUvQVJERUNIRScsIDI2LCAnRDI2JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdFVVJFJywgMjcsICdEMjcnLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0VVUkUgRVQgTE9JUicsIDI4LCAnRDI4JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdGSU5JU1RFUkUnLCAyOSwgJ0QyOScsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnR0FSRCcsIDMwLCAnRDMwJywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdIQVVURSBHQVJPTk5FJywgMzEsICdEMzEnLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0dFUlMnLCAzMiwgJ0QzMicsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnR0lST05ERScsIDMzLCAnRDMzJywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdIRVJBVUxUJywgMzQsICdEMzQnLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0lMTEUgRVQgVklMQUlORScsIDM1LCAnRDM1JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdJTkRSRScsIDM2LCAnRDM2JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdJTkRSRSBFVCBMT0lSRScsIDM3LCAnRDM3JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdJU0VSRScsIDM4LCAnRDM4JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdKVVJBJywgMzksICdEMzknLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0xBTkRFUycsIDQwLCAnRDQwJywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdMT0lSIEVUIENIRVInLCA0MSwgJ0Q0MScsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnTE9JUkUnLCA0MiwgJ0Q0MicsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnSEFVVEUgTE9JUkUnLCA0MywgJ0Q0MycsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnTE9JUkUgQVRMQU5USVFVRScsIDQ0LCAnRDQ0JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdMT0lSRVQnLCA0NSwgJ0Q0NScsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnTE9UJywgNDYsICdENDYnLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0xPVCBFVCBHQVJPTk5FJywgNDcsICdENDcnLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0xPWkVSRScsIDQ4LCAnRDQ4JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdNQUlORSBFVCBMT0lSRScsIDQ5LCAnRDQ5JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdNQU5DSEUnLCA1MCwgJ0Q1MCcsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnTUFSTkUnLCA1MSwgJ0Q1MScsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnSEFVVEUtTUFSTkUnLCA1MiwgJ0Q1MicsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnTUFZRU5ORScsIDUzLCAnRDUzJywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdNRVVSVEhFIEVUIE1PU0VMTEUnLCA1NCwgJ0Q1NCcsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnTUVVU0UnLCA1NSwgJ0Q1NScsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnTU9SQklIQU4nLCA1NiwgJ0Q1NicsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnTU9TRUxMRScsIDU3LCAnRDU3JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdOSUVWUkUnLCA1OCwgJ0Q1OCcsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnTk9SRCcsIDU5LCAnRDU5JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdPSVNFJywgNjAsICdENjAnLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ09STkUnLCA2MSwgJ0Q2MScsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnUEFTIERFIENBTEFJUycsIDYyLCAnRDYyJywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdQVVkgREUgRE9NRScsIDYzLCAnRDYzJywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdQWVJFTkVFUyBBVExBTlRJUVVFUycsIDY0LCAnRDY0JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdIQVVURVMgUFlSRU5FRVMnLCA2NSwgJ0Q2NScsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnUFlSRU5FRVMgT1JJRU5UQUxFUycsIDY2LCAnRDY2JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdCQVMgUkhJTicsIDY3LCAnRDY3JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdIQVVUIFJISU4nLCA2OCwgJ0Q2OCcsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnUmjDtG5lLUx5b24gVFQnLCA2OSwgJ0Q2OScsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnSEFVVEUgU0FPTkUnLCA3MCwgJ0Q3MCcsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnU0FPTkUgRVQgTE9JUkUnLCA3MSwgJ0Q3MScsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnU0FSVEhFJywgNzIsICdENzInLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ1NBVk9JRScsIDczLCAnRDczJywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdIQVVURSBTQVZPSUUnLCA3NCwgJ0Q3NCcsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnUEFSSVMnLCA3NSwgJ0Q3NScsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnU0VJTkUgTUFSSVRJTUUnLCA3NiwgJ0Q3NicsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnU0VJTkUgRVQgTUFSTkUnLCA3NywgJ0Q3NycsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnWVZFTElORVMnLCA3OCwgJ0Q3OCcsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnREVVWCBTRVZSRVMnLCA3OSwgJ0Q3OScsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnU09NTUUnLCA4MCwgJ0Q4MCcsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnVEFSTicsIDgxLCAnRDgxJywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdUQVJOIEVUIEdBUk9OTkUnLCA4MiwgJ0Q4MicsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnVkFSJywgODMsICdEODMnLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ1ZBVUNMVVNFJywgODQsICdEODQnLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ1ZFTkRFRScsIDg1LCAnRDg1JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdWSUVOTkUnLCA4NiwgJ0Q4NicsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnSEFVVEUgVklFTk5FJywgODcsICdEODcnLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ1ZPU0dFUycsIDg4LCAnRDg4JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdZT05ORScsIDg5LCAnRDg5JywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdCRUxGT1JUJywgOTAsICdEOTAnLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0VTU09OTkUnLCA5MSwgJ0Q5MScsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnSEFVVFMgREUgU0VJTkUnLCA5MiwgJ0Q5MicsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnU0VJTkUtU0FJTlQtREVOSVMnLCA5MywgJ0Q5MycsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnVkFMIERFIE1BUk5FJywgOTQsICdEOTQnLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ1ZBTCBEIE9JU0UnLCA5NSwgJ0Q5NScsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnSEFVVEUgQ09SU0UnLCA5OCwgJ0Q5OCcsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnQ09SU0UgRFUgU1VEJywgOTksICdEOTknLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0dVQURFTE9VUEUnLCAxMDAsICdEOUEnLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0NPTUlURSBNQVJUSU5JUVVFJywgMTAxLCAnRDlCJywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdHVVlBTkUnLCAxMDIsICdEOUMnLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ1JFVU5JT04nLCAxMDMsICdEOUQnLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0NPTUlURSBQUk9WSU5DSUFMIE5PUkQnLCAxMDQsICdEOUUnLCAnRCcpKTsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJ0NPTUlURSBQUk9WSU5DSUFMIFNVRCcsIDEwNSwgJ0Q5RicsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnTUFZT1RURScsIDEwNiwgJ0Q5RycsICdEJykpOwokZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAnVEFISVRJJywgMTA3LCAnRDlIJywgJ0QnKSk7CiRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoICdXQUxMSVMgRVQgRlVUVU5BJywgMTA4LCAnRDlXJywgJ0QnKSk7CiMKIyBjcmVhdGUgdGFibGUgZGl2aXNpb25zCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgokZmxkcyA9ICIKCWlkIEkoMTEpIEFVVE8gS0VZLAoJaWRvcmdhIEkoMTEpLAoJaWRlcHJldXZlIEkoMTEpLAoJaWRkaXZpc2lvbiBJKDExKSwKCWxpYmVsbGUgQygyNTUpLAoJc2Fpc29uIEMoMjU1KSwKCWluZGl2cyBJKDEpLAoJc2NvcGUgQygxKSwKCXVwbG9hZGVkIEMoMSkiOwoKLy8gY3JlYXRlIGl0LiAKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2RpdmlzaW9ucyIsCgkJCQkgICAkZmxkcywgCgkJCQkgICAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiMKIyBjcmVhdGUgdGFibGUgZGl2X3BvdWxlcy8vZGVidXQgZGUgbGEgY3LDqWF0aW9uCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgokZmxkcyA9ICIKCWlkIEkoMTEpIEFVVE8gS0VZLAoJaWRlcHJldXZlIEkoMTEpLAoJaWRkaXZpc2lvbiBJKDExKSwKCWxpYmVsbGUgQygyNTUpLAoJdG91ciBJKDMpLAoJdGFibGVhdSBJKDExKSwJCglsaWVuIEMoMjU1KSwKCXNhaXNvbiBDKDI1NSksCgl1cGxvYWRlZCBJKDEpLAoJZGF0ZV9kZWJ1dCBELAoJZGF0ZV9maW4gRCwKCXVwbG9hZGVkX3BhcnRpZXMgSSgxKSwKCXVwbG9hZGVkX2NsYXNzZW1lbnQgSSgxKSI7CgovLyBjcmVhdGUgaXQuIAokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X3RvdXJzIiwKCQkJCSRmbGRzLCAKCQkJCSR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKLy9vbiBjcsOpw6kgdW4gaW5kZXggc3VyIGxhIHRhYmxlIGRpdl90b3VycwokaWR4b3B0YXJyYXkgPSBhcnJheSgnVU5JUVVFJyk7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTChjbXNfZGJfcHJlZml4KCkuJ2Rpdl90b3VycycsCgkgICAgY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfcGluZ19kaXZfdG91cnMnLCAnaWRlcHJldXZlLCBpZGRpdmlzaW9uLCB0YWJsZWF1JywkaWR4b3B0YXJyYXkpOwoJICAgICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKIwojIGNyZWF0ZSB0YWJsZSBkaXZfY2xhc3NlbWVudC8vZGVidXQgZGUgbGEgY3LDqWF0aW9uCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKJGZsZHMgPSAiCglpZCBJKDExKSBBVVRPIEtFWSwKCWlkZXByZXV2ZSBJKDExKSwKCWlkZGl2aXNpb24gSSgxMSksCgl0YWJsZWF1IEkoMTEpLAoJdG91ciBJKDExKSwKCXJhbmcgSSgxMSksCglub20gQygyNTUpLAoJY2x0IEMoMjU1KSwKCWNsdWIgQygyNTUpLAoJcG9pbnRzIE4oNiwzKSwKCXNhaXNvbiBDKDI1NSksCgl1cGxvYWRlZCBJKDEpIjsKCi8vIGNyZWF0ZSBpdC4gCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfY2xhc3NlbWVudCIsCgkJCQkgJGZsZHMsIAoJCQkJJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwojCiMKIwojIGNyZWF0ZSB0YWJsZSBkaXZfcGFydGllcy8vZGVidXQgZGUgbGEgY3LDqWF0aW9uCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKJGZsZHMgPSAiCglpZCBJKDExKSBBVVRPIEtFWSwKCWlkZXByZXV2ZSBJKDExKSwKCWlkZGl2aXNpb24gSSgxMSksCgl0YWJsZWF1IEkoMTEpLAoJdG91ciBJKDIpLAoJbGliZWxsZSBDKDI1NSksIAoJdmFpbiBDKDI1NSksCglwZXJkIEMoMjU1KSwKCWZvcmZhaXQgSSgxKSwgCglzYWlzb24gQygyNTUpLAoJdXBsb2FkZWQgSSgxKSI7CgovLyBjcmVhdGUgaXQuIAokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X3BhcnRpZXMiLAoJCQkJICRmbGRzLCAKCQkJCSR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKIwojCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwokZmxkcyA9ICIKCWxpY2VuY2UgSSgxMSksCgl0eXBlX2NvbXBldCBDKDMpLAoJaWRlcHJldXZlIEkoMTEpLAoJZGF0ZV9kZWJ1dCBELAoJZGF0ZV9maW4gRCI7CgkJCQovLyBjcmVhdGUgaXQuIAokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGljaXBlIiwKCQkJCSAgICRmbGRzLCAKCQkJCSAgICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKLy91bmUgdGFibGUgcG91ciBsZXMgY2xhc3NlbWVudHMgZGVzIHBvdWxlcwokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgokZmxkcyA9ICIKCWlkIEkoMTEpIEFVVE8gS0VZLAoJaWRlcXVpcGUgSSgxMSksCglzYWlzb24gQygyNTUpLAoJY29kZV9jb21wZXQgQygzKSwKCWlkZGl2IEkoMTEpLAoJaWRwb3VsZSBJKDExKSwKCXBvdWxlIEMoMjU1KSwKCWNsdCBJKDIpLAoJZXF1aXBlIEMoMjU1KSwKCWpvdWUgSSg0KSwKCXB0cyBJKDMpICI7CgkJCQovLyBjcmVhdGUgaXQuIAokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2xhc3NlbWVudCIsCgkJCQkgICAkZmxkcywgCgkJCQkgICAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovL0Nyw6lhdGlvbiBkZSBsYSB0YWJsZSBmZXVpbGxlIGRlIHJlbmNvbnRyZQokZmxkcyA9ICIKCWlkIEkoMTEpIEFVVE8gS0VZLAoJZmtfaWQgSSgxMSksCgl4amEgQygyNTUpLAoJeGNhIEMoMjU1KSwKCXhqYiBDKDI1NSksCgl4Y2IgQygyNTUpIjsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2ZldWlsbGVzX3JlbmNvbnRyZXMiLCAkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy9DcsOpYXRpb24gZGUgbGEgdGFibGUgcGFydGllcyBkZXMgcmVuY29udHJlcyBwYXIgw6lxdWlwZXMKJGZsZHMgPSAiCglpZCBJKDExKSBBVVRPIEtFWSwKCWZrX2lkIEkoMTEpLAoJam91ZXVyQSBDKDI1NSksCglzY29yZUEgSSgxKSwKCWpvdWV1ckIgQygyNTUpLAoJc2NvcmVCIEkoMSkiOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVuY29udHJlc19wYXJ0aWVzIiwgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKIwovKgojT24gY3LDqcOpIHVuZSBub3V2ZWxsZSB0YWJsZSBwb3VyIGxlIHRhYmxlYXUgZGUgYm9yZAojCiRmbGRzID0gIgoJaWQgSSgxMSkgQVVUTyBLRVksCglyYW5rIEkoMTEpLAoJbmFtZSBDKDI1NSksCglzdGF0dXMgSSgxKSwKCWhpZGRlbiBJKDEpIjsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbnRyb2xfcGFuZWwiLCAkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwojIE9uIGluc8OocmUgZGVzIHZhbGV1cnMKI09uIGluc8OocmUgbGVzIHZhbGV1cnMgZGFucyBsYSB0YWJsZQokaW5zZXJ0X3NxbCA9ICJJTlNFUlQgSU5UTyBgZGVtb19tb2R1bGVfcGluZ19jb250cm9sX3BhbmVsYCAoYGlkYCwgYG9yZGVyYCwgYG5hbWVgLCBgc3RhdHVzYCwgYGhpZGRlbmApIFZBTFVFUyAoXCcsID8sID8sID8sID8pIjsKJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSggJzEnLCAnQ29tcHRlIGV0IHRlc3QgY29ubmV4aW9uJywgMCwgMCkpOwoqLwojCiMgTGVzIGluZGV4cwovL29uIGNyw6nDqSB1biBpbmRleCBzdXIgbGEgdGFibGUgZGl2X3RvdXJzCiRpZHhvcHRhcnJheSA9IGFycmF5KCdVTklRVUUnKTsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKGNtc19kYl9wcmVmaXgoKS4nY2FsZW5kcmllcicsCgkgICAgY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfcGluZ19jYWxlbmRyaWVyJywgJ2lkZXByZXV2ZSwgZGF0ZV9kZWJ1dCcsJGlkeG9wdGFycmF5KTsKCSAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkKJGlkeG9wdGFycmF5ID0gYXJyYXkoJ1VOSVFVRScpOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoY21zX2RiX3ByZWZpeCgpLidzaXRfbWVucycsCgkJICAgIGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Bpbmdfc2l0X21lbnMnLCAnbW9pcywgYW5uZWUsIGxpY2VuY2UnLCRpZHhvcHRhcnJheSk7CgkJICAgICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKIwovL21pZXV4IHZhdXQgY3LDqWVyIHVuIGluZGV4IHN1ciBsYSBjbMOpIMOpdHJhbmfDqHJlIGZrX2lkCi8vJGRiLT5DcmVhdGVTZXF1ZW5jZShjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zJyk7CiMKIwovLyBjcmVhdGUgYSBwZXJtaXNzaW9uCiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdQaW5nIFVzZScsICdQaW5nIFVzZScpOwokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignUGluZyBTZXQgUHJlZnMnLCdQaW5nIFNldCBQcmVmcycpOwokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignUGluZyBNYW5hZ2UgdXNlcicsICdQaW5nIE1hbmFnZSB1c2VyJyk7CiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdQaW5nIERlbGV0ZScsICdQaW5nIERlbGV0ZScpOwojCi8vIGNyZWF0ZSBhIHByZWZlcmVuY2UKLy8kdGhpcy0+U2V0UHJlZmVyZW5jZSgibWluaV90cmFuY2hlQScsICcwJyk7Ci8qIGxlcyB2aWN0b2lyZXMgbm9ybWFsZXMgKi8KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY05vcm0wXzI0JywgJzYnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY05vcm0yNV80OScsICc1LDUnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY05vcm01MF85OScsICc1Jyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd2aWNOb3JtMTAwXzE0OScsICc0Jyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd2aWNOb3JtMTUwXzE5OScsICczJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd2aWNOb3JtMjAwXzI5OScsICcyJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd2aWNOb3JtMzAwXzM5OScsICcxJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd2aWNOb3JtNDAwXzQ5OScsICcwLDUnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY05vcm1QbHVzNTAwJywgJzAnKTsKIwojICAgIFBvdXIgbGVzIHTDomNoZXMgQ1JPTgojCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdMYXN0UmVjdXBTcGlkJywgJycpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnTGFzdFJlY3VwRmZ0dCcsICcnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ0xhc3RSZWN1cFJlc3VsdHMnLCAnJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdMYXN0UmVjdXBSZW5jb250cmVzJywgJycpOwojCi8qCiogQ3NzCgoKJGNzc19maWxlID0gZGlybmFtZShfX0ZJTEVfXykgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ2NzcycuIERJUkVDVE9SWV9TRVBBUkFUT1IgLidib290c3RyYXAtdGFibGUuY3NzJzsKaWYgKGZpbGVfZXhpc3RzKCRjc3NfZmlsZSkpCnsKICRjc3MgPSBAZmlsZV9nZXRfY29udGVudHMoJGNzc19maWxlKTsKICRjc3NfaWQgPSAkZGItPkdlbklEKGNtc19kYl9wcmVmaXgoKS4nY3NzX3NlcScpOwogJGRiLT5FeGVjdXRlKCdpbnNlcnQgaW50byAnLmNtc19kYl9wcmVmaXgoKS4nY3NzIChjc3NfaWQsIGNzc19uYW1lLCBjc3NfdGV4dCwgbWVkaWFfdHlwZSwgY3JlYXRlX2RhdGUpIHZhbHVlcyAoPyw/LD8sPyw/KScsCiAgIGFycmF5KCRjc3NfaWQsICdQaW5nIHRhYmxlJywgJGNzcywgJ3NjcmVlbicsIGRhdGUoJ1ktbS1kJykpKTsKfQoqLwoKLyogbGVzIHZpY3RvaXJlcyBhbm9ybWFsZXMgKi8KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY0Fub3JtMF8yNCcsICc2Jyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd2aWNBbm9ybTI1XzQ5JywgJzcnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY0Fub3JtNTBfOTknLCAnOCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndmljQW5vcm0xMDBfMTQ5JywgJzEwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd2aWNBbm9ybTE1MF8xOTknLCAnMTMnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY0Fub3JtMjAwXzI5OScsICcxNycpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndmljQW5vcm0zMDBfMzk5JywgJzIyJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd2aWNBbm9ybTQwMF80OTknLCAnMjgnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY0Fub3JtUGx1czUwMCcsICc0MCcpOwojCi8qIGTDqWZhaXRlcyBub3JtYWxlcyAqLwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmTm9ybTBfMjQnLCAnLTUnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZk5vcm0yNV80OScsICctNCw1Jyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZOb3JtNTBfOTknLCAnLTQnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZk5vcm0xMDBfMTQ5JywgJy0zJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZOb3JtMTUwXzE5OScsICctMicpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmTm9ybTIwMF8yOTknLCAnLTEnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZk5vcm0zMDBfMzk5JywgJy0wLDUnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZk5vcm00MDBfNDk5JywgJzAnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZk5vcm1QbHVzNTAwJywgJzAnKTsKIwovKiBkw6lmYWl0ZXMgQW5vcm1hbGVzICovCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTBfMjQnLCAnLTUnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZkFub3JtMjVfNDknLCAnLTYnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZkFub3JtNTBfOTknLCAnLTcnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZkFub3JtMTAwXzE0OScsICctOCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmQW5vcm0xNTBfMTk5JywgJy0xMCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmQW5vcm0yMDBfMjk5JywgJy0xMiw1Jyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTMwMF8zOTknLCAnLTE2Jyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTQwMF80OTknLCAnLTIwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZBbm9ybVBsdXM1MDAnLCAnLTI5Jyk7CgoKLy8gY3JlYXRlIGEgcHJlZmVyZW5jZQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdE1vbnRoU2l0TWVucycsICc1Jyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwaGFzZScsICcxJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwb3B1bGF0ZV9jYWxlbmRhcicsICdPdWknKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2FmZmljaGVfY2x1Yl91bmlxdWVtZW50JywgJ091aScpOwojCiNQcsOpZsOpcmVuY2VzIGRlIGwnYXBwbGljYXRpb24KIwojCiNTZXR1cCBldmVudHMKJHRoaXMtPkNyZWF0ZUV2ZW50KCdPblVzZXJBZGRlZCcpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ09uVXNlckRlbGV0ZWQnKTsKIwovL29uIGluc8OocmUgbGVzIMOpbMOpbWVudHMgcGFyIGTDqWZhdXQKI2luZGV4ZXMKCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTChjbXNfZGJfcHJlZml4KCkuJ2ZrX2lkJywKCQkgICAgCQkJCWNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3BpbmdfZmV1aWxsZXNfcmVuY29udHJlcycsICdma19pZCcpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTChjbXNfZGJfcHJlZml4KCkuJ2ZrX2lkJywKCSAgICBjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9waW5nX3JlbmNvbnRyZXNfcGFydGllcycsICdma19pZCcpOwoJICAgICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKIwovLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKJHRoaXMtPkF1ZGl0KCAwLCAKCSAgICAgICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgCgkgICAgICAkdGhpcy0+TGFuZygnaW5zdGFsbGVkJywgJHRoaXMtPkdldFZlcnNpb24oKSkgKTsKCgkKCSAgICAgIAo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE5ld3NsZXR0ZXIgTWFkZSBTaW1wbGUgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBwcm92aWRlIGEgZmxleGlibGUKIyAgbWFpbGluZyBsaXN0IHNvbHV0aW9uLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFZpc2l0IHRoZSBDTVNNUyBIb21lcGFnZSBhdDogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbgojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKJGRiID0gJHRoaXMtPkdldERiKCk7CgovLyByZW1vdmUgdGhlIGRhdGFiYXNlIHRhYmxlcwokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWNpcGUiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoICBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoICBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG91bGVzX3JlbmNvbnRyZXMiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoICBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCAgY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jYWxlbmRyaWVyIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCAgY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jb21tIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2FkdmVyc2FpcmVzIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NsYXNzZW1lbnQiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKIwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2RpdmlzaW9ucyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfY2xhc3NlbWVudCIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfcGFydGllcyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfdG91cnMiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZmV1aWxsZXNfcmVuY29udHJlcyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19vcmdhbmlzbWVzIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlbmNvbnRyZXNfcGFydGllcyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbnRyb2xfcGFuZWwiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCgoKLy8gcmVtb3ZlIHRoZSBzZXF1ZW5jZQokZGItPkRyb3BTZXF1ZW5jZSggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zZXEiICk7CgovLyByZW1vdmUgdGhlIHBlcm1pc3Npb25zCiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdQaW5nIFVzZScpOwokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignUGluZyBTZXQgUHJlZnMnKTsKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ1BpbmcgTWFuYWdlIHVzZXInKTsKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ1BpbmcgRGVsZXRlJyk7CgovLyByZW1vdmUgdGhlIHByZWZlcmVuY2UKJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoKTsKCgovLyBFdmVudHMKJHRoaXMtPlJlbW92ZUV2ZW50KCAnT25Vc2VyQWRkZWQnICk7CiR0aGlzLT5SZW1vdmVFdmVudCggJ09uVXNlckRlbGV0ZWQnICk7CgoKCi8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZwokdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ3VuaW5zdGFsbGVkJykpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFBpbmcKIyBWZXJzaW9uOiAwLjQuNgojIE1ldGhvZDogVXBncmFkZQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwOCBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8qKgogKiBGb3Igc2VwYXJhdGVkIG1ldGhvZHMsIHlvdSdsbCBhbHdheXMgd2FudCB0byBzdGFydCB3aXRoIHRoZSBmb2xsb3dpbmcKICogbGluZSB3aGljaCBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCBtZXRob2Qgd2FzIGNhbGxlZCBmcm9tIHRoZSBtb2R1bGUKICogQVBJLCBhbmQgdGhhdCBldmVyeXRoaW5nJ3Mgc2FmZSB0byBjb250aW51ZToKKi8gCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKJGRiID0gJHRoaXMtPkdldERiKCk7CQkJLyogQHZhciAkZGIgQURPQ29ubmVjdGlvbiAqLwokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7IAkvKiBAdmFyICRkaWN0IEFET0RCX0RhdGFEaWN0ICovCi8qKgogKiBBZnRlciB0aGlzLCB0aGUgY29kZSBpcyBpZGVudGljYWwgdG8gdGhlIGNvZGUgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUKICogd3JhcHBlZCBpbiB0aGUgVXBncmFkZSgpIG1ldGhvZCBpbiB0aGUgbW9kdWxlIGJvZHkuCiAqLwokbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CiRjdXJyZW50X3ZlcnNpb24gPSAkb2xkdmVyc2lvbjsKc3dpdGNoKCRjdXJyZW50X3ZlcnNpb24pCnsKICAvLyB3ZSBhcmUgbm93IDEuMCBhbmQgd2FudCB0byB1cGdyYWRlIHRvIGxhdGVzdAogY2FzZSAiMC4xYmV0YTEiOgoJewoJCS8vZG8gbWFnaWMKCX0KICAgCiBjYXNlICIwLjFiZXRhMiI6Cgl7CiAgIAkJLy9hbmQgdGhpcyBpcyBoZXJlIGZvciB0aGUgbmV4dCB2ZXJzaW9uCgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMiLAoJCQkJCQkgICAgICAidHlwZV9jb21wZXQgQygzKSBERUZBVUxUICdVJyIpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoJCSRzcWwgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIFNFVCB0eXBlX2NvbXBldCA9ICdVJyI7CgkJJGRiLT5FeGVjdXRlKCRzcWwpOwoJCgkKCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG91bGVzX3JlbmNvbnRyZXMiLAoJCQkJCQkgICAgICAiYWZmaWNoZSBMIik7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSggJHNxbGFycmF5ICk7CgkKCQoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY29tcGV0aXRpb25zIiwKCQkJCQkJICAgICAgImluZGl2cyIpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoJCgkJJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCIsCgkJCQkJCSAgICAgICJ0eXBlX2VjYXJ0IEkoMTEpIik7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSggJHNxbGFycmF5ICk7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkFsdGVyQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIiwKCQkJCQkJICAgICAgImRhdGVtYWogIi4gQ01TX0FET0RCX0RULiAiIik7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSggJHNxbGFycmF5ICk7CgkJLy9xcXMgY2hhbmdlbWVudHMgZGFucyBsYSB0YWJsZSBjYWxlbmRyaWVyCgkJJHNxbGFycmF5ID0gJGRpY3QtPlJlbmFtZUNvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIiLAoJCQkJCQkgICAgICAiZGF0ZV9jb21wZXQiLCAiZGF0ZV9kZWJ1dCIsICJkYXRlX2RlYnV0ICIuIENNU19BRE9EQl9EVCAuIiIpOwoJIAkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKCgkJJHNxbGFycmF5ID0gJGRpY3QtPkFsdGVyQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2FsZW5kcmllciIsCgkJCQkJCSAgICAgImRhdGVfZGVidXQgRCIpOwoJIAkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkY29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2FsZW5kcmllciIsCgkJCQkJCSAgICAgICJkYXRlX2ZpbiBEIik7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSggJHNxbGFycmF5ICk7CgkKCQkkc3FsYXJyYXkgPSAkZGljdC0+QWx0ZXJDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIiwKCQkJCQkJICAgICAiZGF0ZW1haiAiLiBDTVNfQURPREJfRFQuICIiKTsKCSAJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSggJHNxbGFycmF5ICk7CgoJCSRzcWxhcnJheSA9ICRkaWN0LT5BbHRlckNvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIiwKCQkJCQkJICAgICAiZGF0ZWNyZWF0ZWQgIi4gQ01TX0FET0RCX0RULiAiIik7CgkgCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoKCQkkc3FsYXJyYXkgPSAkZGljdC0+QWx0ZXJDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyIsCgkJCQkJCSAgICAgImRhdGVtYWogIi4gQ01TX0FET0RCX0RULiAiIik7CgkgCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoKCgkJJHNxbGFycmF5ID0gJGRpY3QtPkFsdGVyQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY29tbSIsCgkJCQkJCSAgICAgImRhdGVjcmVhdGVkICIuIENNU19BRE9EQl9EVC4gIiIpOwoJIAkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKCgkJJHNxbGFycmF5ID0gJGRpY3QtPkFsdGVyQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY29tbSIsCgkJCQkJCSAgICAgImRhdGVtYWogIi4gQ01TX0FET0RCX0RULiAiIik7CgkgCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoKCQkkc3FsYXJyYXkgPSAkZGljdC0+QWx0ZXJDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cCIsCgkJCQkJCSAgICAgImRhdGVjcmVhdGVkICIuIENNU19BRE9EQl9EVC4gIiIpOwoJIAkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKCQoJCSRzcWwgPSAiQUxURVIgVEFCTEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIEFERCBVTklRVUUgYGluZF9jb2RlX2NvbXBldGAgKGBjb2RlX2NvbXBldGApIjsKCQkkZGItPkV4ZWN1dGUoJHNxbCk7CgoJCSRzcWwgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIChpZCwgbmFtZSwgY29kZV9jb21wZXQsIGNvZWZmaWNpZW50KSBWQUxVRVMgKCcnLCA/LCA/LCA/KSI7CgkJJGRiLT5FeGVjdXRlKCRzcWwsIGFycmF5KCdJbmTDqXRlcm1pbsOpJywgJ1UnLCAnMC4wMCcpKTsKCgkJYnJlYWs7Cgl9CgoKCiBjYXNlICIwLjFiZXRhMyIgOiAKIGNhc2UgIjAuMWJldGEzLjEiIDoKIGNhc2UgIjAuMWJldGEzLjIiIDogCiBjYXNlICIwLjFyYzEiIDoKIGNhc2UgIjAuMSIgOgoKCXsKCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCQkkZmxkcyA9ICIKCQkJbGljZW5jZSBJKDExKSwKCQkJdHlwZV9jb21wZXQgQygzKSI7CgoJCS8vIGNyZWF0ZSBpdC4gCgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpY2lwZSIsCgkJCQkJCSAgICRmbGRzLCAKCQkJCQkJICAgJHRhYm9wdGFycmF5KTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkKCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCgkJLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCgkJJGZsZHMgPSAiCgkJCWlkIEkoMTEpIEFVVE8gS0VZLAoJCQlpZGVxdWlwZSBJKDExKSwKCQkJc2Fpc29uIEMoMjU1KSwKCQkJY29kZV9jb21wZXQgQygzKSwKCQkJaWRkaXYgSSgxMSksCgkJCWlkcG91bGUgSSgxMSksCgkJCXBvdWxlIEMoMjU1KSwKCQkJY2x0IEkoMiksCgkJCWVxdWlwZSBDKDI1NSksCgkJCWpvdWUgSSg0KSwKCQkJcHRzIEkoMykgIjsKCgkJLy8gY3JlYXRlIGl0LiAKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2xhc3NlbWVudCIsCgkJCQkJCSAgICRmbGRzLCAKCQkJCQkJICAgJHRhYm9wdGFycmF5KTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkKCQkkc3FsYXJyYXkgPSAkZGljdC0+QWx0ZXJDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQiLAoJCQkJCQkgICAgICJwb2ludHJlcyBOKDYuMykgIik7CgkgCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyIsCgkJCQkJCSJpbmRpdnMgTCIpOwoJCSRzcWxhcnJheSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zYCBTRVQgYGluZGl2c2AgPSAnMScgV0hFUkUgYGlkYCA9IDEiOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkkc3FsYXJyYXkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9uc2AgU0VUIGBpbmRpdnNgID0gJzEnIFdIRVJFIGBpZGAgPSAyIjsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJJHNxbGFycmF5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnNgIFNFVCBgaW5kaXZzYCA9ICcxJyBXSEVSRSBgaWRgID0gNiI7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCSRzcWxhcnJheSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zYCBTRVQgYGluZGl2c2AgPSAnMScgV0hFUkUgYGlkYCA9IDciOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkkc3FsYXJyYXkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9uc2AgU0VUIGBpbmRpdnNgID0gJzEnIFdIRVJFIGBpZGAgPSA4IjsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJJHNxbGFycmF5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnNgIFNFVCBgaW5kaXZzYCA9ICcxJyBXSEVSRSBgaWRgID0gMTAiOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkkc3FsYXJyYXkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9uc2AgU0VUIGBpbmRpdnNgID0gJzEnIFdIRVJFIGBpZGAgPSAxMSI7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCSRzcWxhcnJheSA9ICJBTFRFUiBUQUJMRSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgQUREIFVOSVFVRSBgaW5kX2NvZGVfY29tcGV0YCAoYGNvZGVfY29tcGV0YCkiOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCX0KCQpjYXNlICIwLjEuMSIgOiAJCgkKCXsKCQkKCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCgkJLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCgkJJGZsZHMgPSAiCgkJCWlkIEkoMTEpIEFVVE8gS0VZLAoJCQlkYXRlY3JlYXRlZCAiLiBDTVNfQURPREJfRFQgLiIsCgkJCWRhdGVtYWogIi4gQ01TX0FET0RCX0RUIC4iLAoJCQltb2lzIEkoMiksCgkJCWFubmVlIEkoNCksCgkJCXBoYXNlIEkoMSksCgkJCWxpY2VuY2UgSSgxMSksCgkJCWNhdGVnIEMoMTApLAoJCQlub20gQygyNTUpLAoJCQlwcmVub20gQygyNTUpLAoJCQlwb2ludHMgTig2LjIpLAoJCQljbG5hdCBJKDExKSwKCQkJcmFuZ3JlZyBJKDExKSwKCQkJcmFuZ2RlcCBJKDExKSwKCQkJcHJvZ21vaXMgTig2LjIpIjsKCgkJLy8gY3JlYXRlIGl0LiAKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfYWR2ZXJzYWlyZXMiLAoJCQkJCQkgICAkZmxkcywgCgkJCQkJCSAgICR0YWJvcHRhcnJheSk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJfQoJCmNhc2UgIjAuMiIgOgpjYXNlICIwLjIuMSIgOgpjYXNlICIwLjIuMiIgOgoJewoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyIsICJtYWpfZmZ0dCBEIik7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIiwgIm1hal9zcGlkIEQiKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMiLCAic3BpZF90b3RhbCBJKDExKSIpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoY21zX2RiX3ByZWZpeCgpLidpbmRfY29kZV9jb21wZXQnLAoJCSAgICAgICAgIGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMnLCAnY29kZV9jb21wZXQnLCAnVU5JUVVFJyk7CgkJICAgICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCX0KY2FzZSAiMC4yLjMiIDogCmNhc2UgIjAuMi4zLjEiIDoKCXsKCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIiwgInRhZyBDKDI1NSkiKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKCQkKCQkkZGJfcHJlZml4ID0gY21zX2RiX3ByZWZpeCgpOwoJCS8vb24gZmFpdCB1biB1cGRhdGUgc3VyIGxhIHRhYmxlIGV4aXN0YW50ZSBwb3VyIG1ldHRyZSBsZSB0YWcgw6Agam91cgoJCSRxdWVyeSA9ICJTRUxFQ1QgaWQsIGNvZGVfY29tcGV0LCBpbmRpdnMgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMiOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCQoJCWlmKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk+MCkKCQl7CgkJCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJCXsKCQkJCSR0YWcgPSAie1BpbmcgYWN0aW9uPSciOwoJCQkJJGlkID0gJHJvd1snaWQnXTsKCQkJCSRjb2RlID0gJHJvd1snY29kZV9jb21wZXQnXTsKCQkJCSRpbmRpdnMgPSAkcm93WydpbmRpdnMnXTsKCQkJCQoJCQkJaWYoJGluZGl2cyA9PScxJykKCQkJCXsKCQkJCQkkdGFnLj0iaW5kaXZpZHVlbGxlcyciOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSR0YWcuPSJwYXItZXF1aXBlcyciOwoJCQkJfQoJCQkJJHRhZy49IiB0eXBlX2NvbXBldD0nJGNvZGUnIjsKCQkJCSR0YWcuPSJ9IjsKCQkJCQoJCQkJJHNxbGFycmF5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgU0VUIHRhZyA9ID8gV0hFUkUgaWQgPSA/IjsKCQkJCSRkYi0+RXhlY3V0ZSgkc3FsYXJyYXksIGFycmF5KCR0YWcsJGlkKSk7CgkJCQkvL3Vuc2V0KCR0YWcpOwoJCQl9CgkJCgkJCgkJfQoJCQoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2FsZW5kcmllciIsICJ0YWcgQygyNTUpIik7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSggJHNxbGFycmF5ICk7CgkJCgkJLy9vbiBmYWl0IHVuIHVwZGF0ZSBzdXIgbGEgdGFibGUgZXhpc3RhbnRlIHBvdXIgbWV0dHJlIGxlIHRhZyDDoCBqb3VyCgkJJHF1ZXJ5ID0gIlNFTEVDVCBjYWwuaWQsY2FsLmRhdGVfZGVidXQsY2FsLmRhdGVfZmluLGNhbC5udW1qb3VybiwgdGMuY29kZV9jb21wZXQsIHRjLmluZGl2cyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyBBUyB0YywgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIgQVMgY2FsIFdIRVJFIGNhbC50eXBlX2NvbXBldCA9IHRjLmNvZGVfY29tcGV0IjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCQkKCQlpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCgkJewoJCQl3aGlsZSgkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCQl7CgkJCQkkdGFnID0gIntQaW5nIGFjdGlvbj0nIjsKCQkJCSRpZCA9ICRyb3dbJ2lkJ107CgkJCQkkY29kZSA9ICRyb3dbJ2NvZGVfY29tcGV0J107CgkJCQkkaW5kaXZzID0gJHJvd1snaW5kaXZzJ107CgkJCQkkZGF0ZV9kZWJ1dCA9ICRyb3dbJ2RhdGVfZGVidXQnXTsKCQkJCSRkYXRlX2ZpbiA9ICRyb3dbJ2RhdGVfZmluJ107CgkJCQkKCQkJCWlmKCRpbmRpdnMgPT0nMScpCgkJCQl7CgkJCQkJJHRhZy49ImluZGl2aWR1ZWxsZXMnIjsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkdGFnLj0icGFyLWVxdWlwZXMnIjsKCQkJCX0KCQkJCSR0YWcuPSIgdHlwZV9jb21wZXQ9JyRjb2RlJyAiOwoJCQkJJHRhZy49IiBkYXRlX2RlYnV0PSckZGF0ZV9kZWJ1dCcgZGF0ZV9maW49JyRkYXRlX2ZpbiciOwoJCQkJJHRhZy49In0iOwoJCQkJCgkJCQkkc3FsYXJyYXkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jYWxlbmRyaWVyIFNFVCB0YWcgPSA/IFdIRVJFIGlkID0gPyI7CgkJCQkkZGItPkV4ZWN1dGUoJHNxbGFycmF5LCBhcnJheSgkdGFnLCRpZCkpOwoJCQkJLy91bnNldCgkdGFnKTsKCQkJfQoJCQoJCQoJCX0KCQkKCQkvLyRpbnNlcnRfc3FsID0gIlVQREFURSBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyAoaWQsIG5hbWUsIGNvZGVfY29tcGV0LCBjb2VmZmljaWVudCxpbmRpdnMpIFZBTFVFUyAoJycsID8sID8sID8sID8pIjsKCQkKCQkkY3NzX2ZpbGUgPSBkaXJuYW1lKF9fRklMRV9fKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnY3NzJy4gRElSRUNUT1JZX1NFUEFSQVRPUiAuJ2Jvb3RzdHJhcC10YWJsZS5jc3MnOwoJCWlmIChmaWxlX2V4aXN0cygkY3NzX2ZpbGUpKQoJCXsKCQkgJGNzcyA9IEBmaWxlX2dldF9jb250ZW50cygkY3NzX2ZpbGUpOwoJCSAvLyRjc3NfaWQgPSAkZGItPkdlbklEKGNtc19kYl9wcmVmaXgoKS4nY3NzX3NlcScpOwoJCS8vcG91ciBsYSB2ZXJzaW9uIDIuMCBkZSBjbXNtcwoJCS8vJGRiLT5FeGVjdXRlKCdpbnNlcnQgaW50byAnLmNtc19kYl9wcmVmaXgoKS4nbGF5b3V0X3N0eWxlc2hlZXRzIChpZCwgbmFtZSwgY29udGVudCwgZGVzY3JpcHRpb24sbWVkaWFfdHlwZSwgbWVkaWFfcXVlcnkpIHZhbHVlcyAoIiIsPyw/LD8sPyw/KScsCgkJLy8gICBhcnJheSgnUGluZyB0YWJsZScsICRjc3MsICdDc3MgcG91ciBsZXMgdGFibGVhdXggZHUgbW9kdWxlIFBpbmcnLCdzY3JlZW4nLCcnKSk7CgkJJGRiLT5FeGVjdXRlKCdpbnNlcnQgaW50byAnLmNtc19kYl9wcmVmaXgoKS4nY3NzIChjc3NfaWQsIGNzc19uYW1lLCBjc3NfdGV4dCwgbWVkaWFfdHlwZSwgbWVkaWFfcXVlcnkpIHZhbHVlcyAoIiIsPyw/LD8sPyknLAoJCSAgIGFycmF5KCdQaW5nIHRhYmxlJywgJGNzcywgJ3NjcmVlbicsJycpKTsKCQl9CgkJJGRiX3ByZWZpeCA9IGNtc19kYl9wcmVmaXgoKTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoJ2NvZGVfY29tcGV0JywkZGJfcHJlZml4LiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyIsJ2NvZGVfY29tcGV0JyxhcnJheSgnVU5JUVVFJz0+MSkpOwoJCQoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2l0X21lbnMiLCAic2Fpc29uIEMoMjU1KSIpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIFNFVCBzYWlzb249ICcyMDE0LTIwMTUnIFdIRVJFIG1vaXM+PTkgQU5EIGFubmVlID0gJzIwMTQnIE9SIGFubmVlID0gJzIwMTUnIjsKCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCQkKCQkKCX0KY2FzZSAiMC4yLjQiIDogCgl7CgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jYWxlbmRyaWVyIiwgInNhaXNvbiBDKDI1NSkiKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jYWxlbmRyaWVyIFNFVCBzYWlzb249ICcyMDE0LTIwMTUnIFdIRVJFIE1PTlRIKGRhdGVfZGVidXQpPj05IEFORCBZRUFSKGRhdGVfZGVidXQpID0gJzIwMTQnIE9SIChNT05USChkYXRlX2RlYnV0KTw9NyBBTkQgWUVBUihkYXRlX2RlYnV0KSA9ICcyMDE1JykiOwoJCSRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCQoJCS8vbW9kaWZpY2F0aW9uIGRlIGxhIHRhYmxlIHBhcnRpY2lwZQoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGljaXBlIiwgImRhdGVfZGVidXQgRCwgZGF0ZV9maW4gRCIpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoJCQoJCS8vb24gc3VwcHJpbWUgdG91cyBsZXMgZW5yZWdpc3RyZW1lbnRzIGRlIGxhIHRhYmxlIHBhcnRpY2lwZSAhIQoJCS8vZHUgY291cCAsIG9uIGZhaXQgdW5pcXVlbWVudCBkZXMgaW5zZXJ0ICEKCQkKCQkkcXVlcnkgPSAiVFJVTkNBVEUgVEFCTEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpY2lwZSI7CgkJJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJCgkJLy9vbiBtZXQgw6Agam91ciBsYSB0YWJsZSBhdmVjIGxlcyDDqWzDqW1lbnRzIGV4aXN0YW50cyBkZXB1aXMgbGEgdGFibGUgc3BpZAoJCQoJCSRxdWVyeSA9ICJTRUxFQ1QgRElTVElOQ1Qgc3AubGljZW5jZSxzcC5kYXRlX2V2ZW50LHNwLmVwcmV1dmUsIHRjLmluZGl2cyx0Yy5jb2RlX2NvbXBldCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgQVMgc3AsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyBBUyB0YyBXSEVSRSBzcC5lcHJldXZlID0gdGMubmFtZSBBTkQgc2Fpc29uID0gJzIwMTQtMjAxNScgQU5EIHRjLmluZGl2cyA9IDEgT1JERVIgQlkgc3AubGljZW5jZSBBU0MiOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCWlmKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk+MCkKCQl7CgkJCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJCXsKCQkJCSRxdWVyeTEgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpY2lwZSAobGljZW5jZSwgdHlwZV9jb21wZXQsIGRhdGVfZGVidXQpIFZBTFVFUyAoPywgPywgPykiOwoJCQkJJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MSwgYXJyYXkoJHJvd1snbGljZW5jZSddLCRyb3dbJ2NvZGVfY29tcGV0J10sICRyb3dbJ2RhdGVfZXZlbnQnXSkpOwoKCQkJfQoJCX0KCQkKCQkKCX0KCWJyZWFrOwpjYXNlICIwLjIuNSIgOgpjYXNlICIwLjMiIDogCgl7CgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIiwgInRhZyBDKDI1NSkiKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKCQkKCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIiwgImlkZXByZXV2ZSBJKDExKSIpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMiLCAiaWRvcmdhIEkoMTEpIik7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSggJHNxbGFycmF5ICk7CgkJCgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgoJCS8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgoJCSRmbGRzID0gIgoJCQlpZCBJKDExKSBBVVRPIEtFWSwKCQkJbGliZWxsZSBDKDI1NSksCgkJCWlkb3JnYSBJKDExKSwKCQkJY29kZSBDKDUpLAoJCQlzY29wZSBDKDEpIjsKCgkJLy8gY3JlYXRlIGl0LiAKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfb3JnYW5pc21lcyIsCgkJCQkJCSAgICRmbGRzLCAkdGFib3B0YXJyYXkpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCQkjIGNyZWF0ZSB0YWJsZSBkaXZpc2lvbnMKCQkvLyB0YWJsZSBzY2hlbWEgZGVzY3JpcHRpb24KCQkkZmxkcyA9ICIKCQkJaWQgSSgxMSkgQVVUTyBLRVksCgkJCWlkb3JnYSBJKDExKSwKCQkJaWRlcHJldXZlIEkoMTEpLAoJCQlpZGRpdmlzaW9uIEkoMTEpLAoJCQlsaWJlbGxlIEMoMjU1KSwKCQkJc2Fpc29uIEMoMjU1KSwKCQkJaW5kaXZzIEkoMSksCgkJCXNjb3BlIEMoMSksCgkJCXVwbG9hZGVkIEMoMSkiOwoKCQkvLyBjcmVhdGUgaXQuIAoJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZpc2lvbnMiLAoJCQkJCQkgICAkZmxkcywgJHRhYm9wdGFycmF5KTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJIwoJCSMgY3JlYXRlIHRhYmxlIGRpdl9jbGFzc2VtZW50Ly9kZWJ1dCBkZSBsYSBjcsOpYXRpb24KCQkvLyB0YWJsZSBzY2hlbWEgZGVzY3JpcHRpb24KCQkkZmxkcyA9ICIKCQkJaWQgSSgxMSkgQVVUTyBLRVksCgkJCWlkZXByZXV2ZSBJKDExKSwKCQkJaWRkaXZpc2lvbiBJKDExKSwKCQkJdGFibGVhdSBJKDExKSwKCQkJdG91ciBJKDExKSwKCQkJcmFuZyBJKDExKSwKCQkJbm9tIEMoMjU1KSwKCQkJY2x0IEMoMjU1KSwKCQkJY2x1YiBDKDI1NSksCgkJCXBvaW50cyBOKDYsMyksCgkJCXNhaXNvbiBDKDI1NSksCgkJCXVwbG9hZGVkIEkoMSkiOwoKCQkvLyBjcmVhdGUgaXQuIAoJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfY2xhc3NlbWVudCIsCgkJCQkJCSAkZmxkcywgJHRhYm9wdGFycmF5KTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJIwoJCQkjIGNyZWF0ZSB0YWJsZSBkaXZfcG91bGVzLy9kZWJ1dCBkZSBsYSBjcsOpYXRpb24KCQkJLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCgkJCSRmbGRzID0gIgoJCQkJaWQgSSgxMSkgQVVUTyBLRVksCgkJCQlpZGVwcmV1dmUgSSgxMSksCgkJCQlpZGRpdmlzaW9uIEkoMTEpLAoJCQkJbGliZWxsZSBDKDI1NSksCgkJCQl0b3VyIEkoMyksCgkJCQl0YWJsZWF1IEkoMTEpLAoJCQkJbGllbiBDKDI1NSksCgkJCQlzYWlzb24gQygyNTUpLAoJCQkJdXBsb2FkZWQgSSgxKSI7CgoJCQkvLyBjcmVhdGUgaXQuIAoJCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X3RvdXJzIiwKCQkJCQkJCSRmbGRzLCAKCQkJCQkJCSR0YWJvcHRhcnJheSk7CgkJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkJLy9vbiBjcsOpw6kgdW4gaW5kZXggcG91ciBjZXR0ZSB0YWJsZQoJCQkkaWR4b3B0YXJyYXkgPSBhcnJheSgnVU5JUVVFJyk7CgkJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTChjbXNfZGJfcHJlZml4KCkuJ2Rpdl90b3VycycsCgkJCQkgICAgY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfcGluZ19kaXZfdG91cnMnLCAnaWRlcHJldXZlLCBpZGRpdmlzaW9uLCB0YWJsZWF1JywkaWR4b3B0YXJyYXkpOwoJCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJCS8vCgkJCS8vdW4gbm91dmVsIGluZGV4CgkJCSRpZHhvcHRhcnJheSA9IGFycmF5KCdVTklRVUUnKTsKCQkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKGNtc19kYl9wcmVmaXgoKS4nc2l0X21lbnMnLAoJCQkJICAgIGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Bpbmdfc2l0X21lbnMnLCAnbGljZW5jZSwgbW9pcywgYW5uZWUnLCRpZHhvcHRhcnJheSk7CgkJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkJLy8KCQkJJGlkeG9wdGFycmF5ID0gYXJyYXkoJ1VOSVFVRScpOwoJCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoJ3VuaWNpdGUnLAoJCQkJICAgICAgICAgY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfcGluZ19lcXVpcGVzJywgJ3NhaXNvbiwgbGliZXF1aXBlLCBsaWVuZGl2aXNpb24nLCRpZHhvcHRhcnJheSk7CgkJCQkgICAgICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyIsICJ0eXBlIEMoMSksIGNlcnRpZiBDKDI1NSksIHZhbGlkYXRpb24gRCwgZWNoZWxvbiBDKDEpLCBwbGFjZSBJKDQpLCBwb2ludCBJKDQpLCBjYXQgQyg1KSIpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoJCQoJCQoJCS8vQ3LDqWF0aW9uIGRlIGxhIHRhYmxlIGZldWlsbGUgZGUgcmVuY29udHJlCgkJJGZsZHMgPSAiCgkJCWlkIEkoMTEpIEFVVE8gS0VZLAoJCQlma19pZCBJKDExKSwKCQkJeGphIEMoMjU1KSwKCQkJeGNhIEMoMjU1KSwKCQkJeGpiIEMoMjU1KSwKCQkJeGNiIEMoMjU1KSI7CgkJJHFzbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2ZldWlsbGVzX3JlbmNvbnRyZXMiLCAkZmxkcywgJHRhYm9wdGFycmF5KTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgoJCS8vQ3LDqWF0aW9uIGRlIGxhIHRhYmxlIHBhcnRpZXMgZGVzIHJlbmNvbnRyZXMgcGFyIMOpcXVpcGVzCgkJJGZsZHMgPSAiCgkJCWlkIEkoMTEpIEFVVE8gS0VZLAoJCQlma19pZCBJKDExKSwKCQkJam91ZXVyQSBDKDI1NSksCgkJCWNsdEEgQygyNTUpLAoJCQlqb3VldXJCIEMoMjU1KSwKCQkJY2x0QiBDKDI1NSkiOwoJCSRxc2xhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZW5jb250cmVzX3BhcnRpZXMiLCAkZmxkcywgJHRhYm9wdGFycmF5KTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJCgkJI2luZGV4ZXMKCgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKGNtc19kYl9wcmVmaXgoKS4nZmtfaWQnLAoJCQkJICAgIAkJCQljbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9waW5nX2ZldWlsbGVzX3JlbmNvbnRyZXMnLCAnZmtfaWQnKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKGNtc19kYl9wcmVmaXgoKS4nZmtfaWQnLAoJCQkgICAgY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfcGluZ19yZW5jb250cmVzX3BhcnRpZXMnLCAnZmtfaWQnKTsKCQkJICAgICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkJCgkJCQoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcyIsICJpZGVwcmV1dmUgQygxMSkiKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKCQkKCQkvL2FkZCBhIG5ldyBjb2x1bW4gdG8gY2FsZW5kYXIKCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIiLCAiaWRlcHJldXZlIEMoMTEpIik7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSggJHNxbGFycmF5ICk7Cgl9CglicmVhazsKCQpjYXNlICAiMC4zLjAuMSIgOgoJewoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCQkvL0Nyw6lhdGlvbiBkZSBsYSB0YWJsZSBmZXVpbGxlIGRlIHJlbmNvbnRyZQoJCSRmbGRzID0gIgoJCQlpZCBJKDExKSBBVVRPIEtFWSwKCQkJZmtfaWQgSSgxMSksCgkJCXhqYSBDKDI1NSksCgkJCXhjYSBDKDI1NSksCgkJCXhqYiBDKDI1NSksCgkJCXhjYiBDKDI1NSkiOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19mZXVpbGxlc19yZW5jb250cmVzIiwgJGZsZHMsICR0YWJvcHRhcnJheSk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKCQkvL0Nyw6lhdGlvbiBkZSBsYSB0YWJsZSBwYXJ0aWVzIGRlcyByZW5jb250cmVzIHBhciDDqXF1aXBlcwoJCSRmbGRzID0gIgoJCQlpZCBJKDExKSBBVVRPIEtFWSwKCQkJZmtfaWQgSSgxMSksCgkJCWpvdWV1ckEgQygyNTUpLAoJCQlzY29yZUEgSSgxKSwKCQkJam91ZXVyQiBDKDI1NSksCgkJCXNjb3JlQiBJKDEpIjsKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVuY29udHJlc19wYXJ0aWVzIiwgJGZsZHMsICR0YWJvcHRhcnJheSk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSNpbmRleGVzCgoJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTChjbXNfZGJfcHJlZml4KCkuJ2ZrX2lkJywKCQkJCSAgICAJCQkJY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfcGluZ19mZXVpbGxlc19yZW5jb250cmVzJywgJ2ZrX2lkJyk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTChjbXNfZGJfcHJlZml4KCkuJ2ZrX2lkJywKCQkJICAgIGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3BpbmdfcmVuY29udHJlc19wYXJ0aWVzJywgJ2ZrX2lkJyk7CgkJCSAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgl9CgljYXNlICIwLjMuMC4yIiA6CgljYXNlICIwLjMuMC4zIiA6Cgl7CgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgkJJGZsZHMgPSAiCgkJaWQgSSgxMSkgQVVUTyBLRVksCgkJaWRlcHJldXZlIEkoMTEpLAoJCWlkZGl2aXNpb24gSSgxMSksCgkJdGFibGVhdSBJKDExKSwKCQl0b3VyIEkoMiksCgkJbGliZWxsZSBDKDI1NSksIAoJCXZhaW4gQygyNTUpLAoJCXBlcmQgQygyNTUpLAoJCWZvcmZhaXQgSSgxKSwgCgkJc2Fpc29uIEMoMjU1KSwKCQl1cGxvYWRlZCBJKDEpIjsKCgkJLy8gY3JlYXRlIGl0LiAKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X3BhcnRpZXMiLAoJCQkJICRmbGRzLCAKCQkJCSR0YWJvcHRhcnJheSk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwoJCSRpZHhvcHRhcnJheSA9IGFycmF5KCdVTklRVUUnKTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoY21zX2RiX3ByZWZpeCgpLidjYWxlbmRyaWVyJywKCSAgICBjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9waW5nX2NhbGVuZHJpZXInLCAnaWRlcHJldXZlLCBkYXRlX2RlYnV0JywkaWR4b3B0YXJyYXkpOwoJICAgICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkvL09uIGNyw6llIHVuIG5vdXZlYXUgY2hhbXAgZGFucyBsYSB0YWJsZSBwYXJ0aWNpcGUKCQkvLyRkaWN0LT5OZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpY2lwZSIsICJpZGVwcmV1dmUgQygxMSkiKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKCQkvL29uIGNyw6nDqSBhdXNzaSBkZXMgZGF0ZXMgcG91ciBsZXMgdG91cnMKCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZGl2X3RvdXJzIiwgImRhdGVfZGVidXQgRCxkYXRlX2ZpbiBEIik7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSggJHNxbGFycmF5ICk7CgkJCgl9CglicmVhazsKCQoJY2FzZSAiMC4zLjEiIDogCgljYXNlICIwLjQiIDoKCWNhc2UgIjAuNC4xIiA6CgljYXNlICIwLjQuMiIgOgoJewoJCSRkYiA9ICR0aGlzLT5HZXREYigpOwoJCS8vJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCS8vT24gY3LDqWUgdW4gbm91dmVhdSBjaGFtcCBkYW5zIGxhIHRhYmxlIHBhcnRpY2lwZQoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kaXZfdG91cnMiLCAidXBsb2FkZWRfcGFydGllcyBJKDEpLCB1cGxvYWRlZF9jbGFzc2VtZW50IEkoMSkiKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKCQkvL3VuIG5vdXZlbCBpbmRleAoJCSRpZHhvcHRhcnJheSA9IGFycmF5KCdVTklRVUUnKTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoY21zX2RiX3ByZWZpeCgpLidkaXZfY2xhc3MnLAoJCQkgICAgY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfcGluZ19kaXZfY2xhc3NlbWVudCcsICd0YWJsZWF1LCBub20sIHNhaXNvbicsJGlkeG9wdGFycmF5KTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJCgkJLy9DcsOpYSB0YWJsZSBjb250cm9sX3BhbmVsCgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgkJJGZsZHMgPSAiCgkJCWlkIEkoMTEpIEFVVE8gS0VZLAoJCQlyYW5rIEkoMTEpLAoJCQluYW1lIEMoMjU1KSwKCQkJc3RhdHVzIEkoMSksCgkJCWhpZGRlbiBJKDEpIjsKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY29udHJvbF9wYW5lbCIsICRmbGRzLCAkdGFib3B0YXJyYXkpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkjT24gaW5zw6hyZSBsZXMgdmFsZXVycyBkYW5zIGxhIHRhYmxlCgkJJGluc2VydF9zcWwgPSAiSU5TRVJUIElOVE8gYGRlbW9fbW9kdWxlX3BpbmdfY29udHJvbF9wYW5lbGAgKGBpZGAsIGByYW5rYCwgYG5hbWVgLCBgc3RhdHVzYCwgYGhpZGRlbmApIFZBTFVFUyAoJycsID8sID8sID8sID8pIjsKCQkkZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCAxLCAnQ29tcHRlIGV0IHRlc3QgY29ubmV4aW9uJywgMCwgMCkpOwoJCQoJfQoJYnJlYWs7CgkKCWNhc2UgIjAuNC4zIiA6IAoJY2FzZSAiMC40LjQiIDoKCXsKCQkkZGIgPSAkdGhpcy0+R2V0RGIoKTsKCQkvLyRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkvL09uIGNyw6llIHVuIG5vdXZlYXUgY2hhbXAgZGFucyBsYSB0YWJsZSBwYXJ0aWNpcGUKCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCQkkaWR4b3B0YXJyYXkgPSBhcnJheSgnVU5JUVVFJyk7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKGNtc19kYl9wcmVmaXgoKS4nc2l0X21lbnMnLAoJCQkgICAgY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfcGluZ19zaXRfbWVucycsICdtb2lzLCBhbm5lZSwgbGljZW5jZScsJGlkeG9wdGFycmF5KTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgl9CglicmVhazsKCQoJY2FzZSAiMC40LjUiOgoJY2FzZSAiMC40LjYiOgoJY2FzZSAiMC41IjoKCXsKCQkkZGIgPSAkdGhpcy0+R2V0RGIoKTsKCQkkcXVlcnkgPSAiU0VMRUNUIHRhZyxpZGVwcmV1dmUsZGF0ZV9kZWJ1dCxkYXRlX2ZpbiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jYWxlbmRyaWVyIjsKCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJaWYoJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCgkJewoJCQl3aGlsZSgkcm93ID0gJHJlc3VsdC0+RmV0Y2hSb3coKSkKCQkJewoJCQkJCgkJCQkkdGFnID0gJHJvd1sndGFnJ107CgkJCQkkaWRlcHJldXZlID0gJHJvd1snaWRlcHJldXZlJ107CgkJCQkkZGF0ZV9kZWJ1dCA9ICRyb3dbJ2RhdGVfZGVidXQnXTsKCQkJCSRkYXRlX2ZpbiA9ICRyb3dbJ2RhdGVfZmluJ107CgkJCQkkcXVlcnkyID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIFdIRVJFIGlkZXByZXV2ZSA9ID8iOwoJCQkJJGRicmVzdWx0MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCBhcnJheSgkaWRlcHJldXZlKSk7CgkJCQkKCQkJCWlmKCRkYnJlc3VsdDIgJiYgJGRicmVzdWx0Mi0+UmVjb3JkQ291bnQoKT4wKQoJCQkJewoJCQkJCSRyb3cgPSAkZGJyZXN1bHQyLT5GZXRjaFJvdygpOwoJCQkJCSRuYW1lID0gJHJvd1snbmFtZSddOwoJCQkJCSRzZXJ2aWNlID0gbmV3IHJldHJpZXZlX29wcygpOwoJCQkJCSRpbnNlcnQgPSAkc2VydmljZS0+aW5zZXJ0X2NnY2FsZW5kYXIoJG5hbWUsJHRhZywkZGF0ZV9kZWJ1dCwkZGF0ZV9maW4pOwoJCQkJfQoKCQkJfQoJCX0KCQkkaW5zZXJ0X3NxbCA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3RlbXBsYXRlcyAobW9kdWxlX25hbWUsIHRlbXBsYXRlX25hbWUsIGNvbnRlbnQsIGNyZWF0ZV9kYXRlLCBtb2RpZmllZF9kYXRlKSBWQUxVRVMgKCA/LCA/LCA/LCA/LCA/KSI7CgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoJ0NHQ2FsZW5kYXInLCdjYWxlbmRhcl9Sb29raWUnLCd7aWYgIWlzc2V0KCRzbWFydHkuZ2V0Lm5vanMpfQoJCTxzY3JpcHQgdHlwZT1cJ3RleHQvamF2YXNjcmlwdFwnPntqc21pbn0KCQkvLyB0aGUganNtaW4gcGx1Z2luIGlzIGluY2x1ZGVkIHdpdGggQ0dFeHRlbnNpb25zLgoJCWlmKCB0eXBlb2YgalF1ZXJ5ICE9IFwndW5kZWZpbmVkXCcgKSB7CgkJCSAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKCQkJCSAgICAkKGRvY3VtZW50KS5vbihcJ2NsaWNrXCcsXCdhLmNhbGVuZGFyLW5hdlwnLGZ1bmN0aW9uKGV2KXsKCQkJCQkgICAgICAvLyBhbGxvdyBwYWdpbmF0aW5nIHRocm91Z2ggbW9udGhzIHZpYSBhamF4LgoJCQkJCSAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CgkJCQkJICAgICAgdmFyIHVybCA9ICQodGhpcykuYXR0cihcJ2hyZWZcJykrXCcmbm9qcz0xJnNob3d0ZW1wbGF0ZT1mYWxzZVwnOwoJCQkJCSAgICAgIHVybCA9IHVybC5yZXBsYWNlKC9hbXA7L2csXCdcJyk7CgkJCQkJICAgICAgJChcJyNjYWwtY2FsZW5kYXJcJykubG9hZCh1cmwpOwoJCQkJCSAgICB9KTsKCQkJCQkKCQkJCQkgICAgaWYoIGpRdWVyeSgpLmRpYWxvZyApIHsKCQkJCQkJICAgICAgJChkb2N1bWVudCkub24oXCdjbGlja1wnLFwnYS5jYWxlbmRhci1kYXlsaXN0XCcsZnVuY3Rpb24oZXYpewoJCQkJCQkJICAgICAgICAvLyBkZW1vbnN0cmF0ZSB2aWV3aW5nIGEgZGF5IGxpc3QgaW4gYSBwb3B1cCBkaWFsb2cKCQkJCQkJCSAgICAgICAgLy8gYW5kIG1peGluZyBzbWFydHkgYW5kIGphdmFzY3JpcHQgY29kZS4KCQkJCQkJCSAgICAgICAgLy8gdXNlcyBqcXVlcnkgdWkgZGlhbG9nLi4uIGJ1dCBjb3VsZCBqdXN0IGFzIGVhc2lseSB1c2UgZmFuY3lib3ggZXRjLgoJCQkJCQkJICAgICAgICAvLyB5b3UgY291bGQgYWRkIHBhcmFtZXRlcnMgaGVyZSBmb3IgY2hhbmdpbmcgdGhlIHRlbXBsYXRlIGZyb20gdGhlIGRlZmF1bHQsIGV0Yywgb3IgZXZlbiBmaWx0ZXIgYnkgY2F0ZWdvcnkuCgkJCQkJCQkgICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CgkJCQkJCQkgICAgICAgIHZhciBkYXkgPSBuZXcgRGF0ZSggJCh0aGlzKS5kYXRhKFwnZGF5XCcpICogMTAwMCApOwoJCQkJCQkJICAgICAgICB2YXIgbSA9IGRheS5nZXRNb250aCgpKzE7CgkJCQkJCQkgICAgICAgIHZhciBkID0gZGF5LmdldERhdGUoKTsKCQkJCQkJCSAgICAgICAgdmFyIHkgPSBkYXkuZ2V0RnVsbFllYXIoKTsKCQkJCQkJCSAgICAgICAgdmFyIHVybCA9IFwne21vZHVsZV9hY3Rpb25fbGluayBtb2R1bGU9Q0dDYWxlbmRhciBkaXNwbGF5PWxpc3QgZGF5PUREREQgIG1vbnRoPU1NTU0geWVhcj1ZWVlZIGpzZnJpZW5kbHk9MX0mc2hvd3RlbXBsYXRlPWZhbHNlXCc7CgkJCQkJCQkgICAgICAgIHVybCA9IHVybC5yZXBsYWNlKFwnTU1NTVwnLG0pLnJlcGxhY2UoXCdEREREXCcsZCkucmVwbGFjZShcJ1lZWVlcJyx5KTsKCQkJCQkJCSAgICAgICAgJChcJyNjYWwtZGF5dmlld1wnKS5sb2FkKHVybCxmdW5jdGlvbihkYXRhKXsKCQkJCQkJCQkgICAgICAgICAgJChcJyNjYWwtZGF5dmlld1wnKS5kaWFsb2coewoJCQkJCQkJCQkgICAgICAgICAgICB0aXRsZTogXCd7JG1vZC0+TGFuZyhcJ2RheXZpZXdcJyl9XCcKCQkJCQkJCQkJICAgICAgICAgIH0pCgkJCQkJCQkJCSAgICAgICAgfSk7CgkJCQkJCQkJCSAgICAgIH0pOwoJCQkJCQkJCQkgICAgfQoJCQkJCQkJCQkgIH0pCgkJCQkJCQkJCX0gCgkJCQkJCQkJCS8vIGpxdWVyeSB0ZXN0CgkJCQkJCQkJCXsvanNtaW59PC9zY3JpcHQmZ3Q7CgkJCQkJCQkJCXsvaWZ9CgkJCQkJCQkJCQoJCQkJCQkJCQl7c3RyaXB9CgkJCQkJCQkJCXtpZiAhaXNzZXQoJHNtYXJ0eS5nZXQubm9qcyl9CgkJCQkJCQkJCTxkaXYgc3R5bGU9XCdkaXNwbGF5OiBub25lO1wnPnsqIGEgc2ltcGxlIHdyYXBwZXIgKn0KCQkJCQkJCQkJICA8ZGl2IGlkPVwnY2FsLWRheXZpZXdcJz48L2Rpdj4KCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCXsvaWZ9CgkJCQkJCQkJCQoJCQkJCQkJCQk8dGFibGUgY2xhc3M9XCd3aWRnZXRfY2FsZW5kYXJcJyBpZD1cJ2NhbC1jYWxlbmRhclwnPgoJCQkJCQkJCQk8Y2FwdGlvbiBjbGFzcz1cJ2NhbGVuZGFyLW1vbnRoXCc+CgkJCQkJCQkJCSAgIDxzcGFuIGNsYXNzPVwnY2FsZW5kYXItcHJldlwnPjxhIGNsYXNzPVwnY2FsZW5kYXItbmF2XCcgaHJlZj1cJ3skbmF2aWdhdGlvbi5wcmV2fVwnPiZhbXA7bGFxdW87PC9hPjwvc3Bhbj4KCQkJCQkJCQkJICAgICA8c3BhbiBjbGFzcz1cJ2NhbGVuZGFyLWxibFwnPnskZGF0ZXxjbXNfZGF0ZV9mb3JtYXQ6XCclYiAlWVwnfTwvc3Bhbj4KCQkJCQkJCQkJICAgPHNwYW4gY2xhc3M9XCdjYWxlbmRhci1uZXh0XCc+PGEgY2xhc3M9XCdjYWxlbmRhci1uYXZcJyBocmVmPVwneyRuYXZpZ2F0aW9uLm5leHR9XCc+JmFtcDtyYXF1bzs8L2E+PC9zcGFuPgoJCQkJCQkJCQk8L2NhcHRpb24+CgkJCQkJCQkJCTx0Ym9keT48dHI+CgkJCQkJCQkJCXtmb3JlYWNoIGZyb209JGRheV9uYW1lcyBpdGVtPWRheSBrZXk9a2V5fQoJCQkJCQkJCQk8dGggY2xhc3M9XCdjYWwtZGF5aGRyIGNhbC17JGRheV9zaG9ydF9uYW1lc1ska2V5XXxzdHJ0b2xvd2VyfVwnIGFiYnI9XCd7JGRheX1cJz57JGRheV9zaG9ydF9uYW1lc1ska2V5XX08L3RoPgoJCQkJCQkJCQl7L2ZvcmVhY2h9PC90cj4KCQkJCQkJCQkKCQkJCQkJCQkJPHRyPgoJCQkJCQkJCQl7KiBpbml0aWFsIGVtcHR5IGRheXMgKn0KCQkJCQkJCQkJe2lmICRmaXJzdF9vZl9tb250aF93ZWVrZGF5X251bWJlciA+IDB9CgkJCQkJCQkJCTx0ZCBjb2xzcGFuPVwneyRmaXJzdF9vZl9tb250aF93ZWVrZGF5X251bWJlcn1cJz4mYW1wO25ic3A7PC90ZD4KCQkJCQkJCQkJey9pZn0KCQkJCQkJCQkJCgkJCQkJCQkJCXsqIGl0ZXJhdGUgb3ZlciB0aGUgZGF5cyBvZiB0aGlzIG1vbnRoICp9CgkJCQkJCQkJCXthc3NpZ24gdmFyPXdlZWtkYXkgdmFsdWU9JGZpcnN0X29mX21vbnRoX3dlZWtkYXlfbnVtYmVyfQoJCQkJCQkJCQl7Zm9yZWFjaCBmcm9tPSRkYXlzIGl0ZW09ZGF5IGtleT1rZXl9CgkJCQkJCQkJCXtpZiAkd2Vla2RheSA9PSA3fQoJCQkJCQkJCQkgIHthc3NpZ24gdmFyPXdlZWtkYXkgdmFsdWU9MH0KCQkJCQkJCQkJPC90cj5cclxuPHRyPgoJCQkJCQkJCQl7L2lmfQoJCQkJCQkJCQk8dGQge2lmIGlzc2V0KCRkYXkuY2xhc3MpfWNsYXNzPVwneyRkYXkuY2xhc3N9IGNhbC1kYXkgY2FsLXskZGF5X3Nob3J0X25hbWVzWyR3ZWVrZGF5XXxzdHJ0b2xvd2VyfVwney9pZn0+XHJcbgoJCQkJCQkJCQl7aWYgaXNzZXQoJGRheS5ldmVudHMuMCl9PGEgY2xhc3M9XCdjYWxlbmRhci1kYXlsaXN0XCcgZGF0YS1kYXk9XCd7JGRheS5kYXRlfVwnIGhyZWY9XCd7JGRheS5uaV91cmx9XCc+eyRrZXl9PC9hPnsqIGJ5IGRlZmF1bHQgdXNlIHRoZSBub24gaW5saW5lIChyZXBsYWNlIGNvbnRlbnQgdGFnKSB2ZXJzaW9uIG9mIHRoZSBVUkwgKn1cclxuCgkJCQkJCQkJCXsqPHVsPgoJCQkJCQkJCQkJe2ZvcmVhY2ggZnJvbT0kZGF5LmV2ZW50cyBpdGVtPWV2ZW50fQoJCQkJCQkJCQkJPGxpPgoJCQkJCQkJCQkgICAKCQkJCQkJCQkJICB7JHN0eWxlPVwnXCd9e2lmICRldmVudC5iZ2NvbG9yfXskc3R5bGU9XCdzdHlsZT1cXFwnY29sb3I6IHskZXZlbnQuZmdjb2xvcn07IGJhY2tncm91bmQtY29sb3I6IHskZXZlbnQuYmdjb2xvcn1cXFwnXCd9ey9pZn0KCQkJCQkJCQkJICA8YSBjbGFzcz1cJ2NhbGVuZGFyLWV2ZW50XCcgaHJlZj1cJ3skZXZlbnQudXJsfVwnIHskc3R5bGV9PnskZXZlbnQuZXZlbnRfdGl0bGV8c3VtbWFyaXplOjIwfTwvYT48L2xpPgoJCQkJCQkJCQl7L2ZvcmVhY2h9CgkJCQkJCQkJCTwvdWw+Kn0KCQkJCQkJCQkJe2Vsc2V9eyRrZXl9ey9pZn0KCQkJCQkJCQkJPC90ZD4KCQkJCQkJCQkJe21hdGggYXNzaWduPXdlZWtkYXkgZXF1YXRpb249XCd4ICsgMVwnIHg9JHdlZWtkYXl9CgkJCQkJCQkJCXsvZm9yZWFjaH0KCQkJCQkJCQoJCQkJCQkJCQl7KiByZW1haW5pbmcgZW1wdHkgZGF5cyAqfQoJCQkJCQkJCQl7aWYgJHdlZWtkYXkgIT0gN30KCQkJCQkJCQkJPHRkIGNvbHNwYW49XCd7bWF0aCBlcXVhdGlvbj1cJzcteFwnIHg9JHdlZWtkYXl9XCc+JmFtcDtuYnNwOzwvdGQ+CgkJCQkJCQkJCQl7L2lmfQoJCQkJCQkJCQk8L3RyPgoJCQkJCQkJCQk8L3Rib2R5PjwvdGFibGU+CgkJCQkJCQkJCQoJCQkJCQkJCQl7L3N0cmlwfScsJG5vdywkbm93KSk7CgkJCQkJCWlmICghJHJlc3VsdCkgZGllKCdJbnN0YWxsYXRpb24gRXJyb3I6JyAuICRkYi0+RXJyb3JNc2coKSAuICcgd2l0aCgnIC4gJGRiLT5zcWwgLicpJyk7CgkJCQkKCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIiwgInN0YXR1dCBMIik7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSggJHNxbGFycmF5ICk7CgkJCgkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIFNFVCBzdGF0dXQgPSAnMSciOwoJCSRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJfQkKCWJyZWFrOwoJY2FzZSAiMC41LjEiIDoKCWNhc2UgIjAuNS4yIiA6CgljYXNlICIwLjUuMyIgOgoJIAoJewoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyIsICJjbGdsb2IgSSg0KSwgYWNsZ2xvYiBJKDQpLGFwb2ludCBJKDQpLHZhbGNsYSBJKDQpLCB2YWxpbml0IEkoNCkscHJvZ21vaXNwbGFjZXMgSSg0KSBTSUdORUQscHJvZ2FubiBJKDQpIFNJR05FRCIpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoJfQoJYnJlYWs7CgkgCgoJCn0KCgovLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKJHRoaXMtPkF1ZGl0KCAwLCAKCSAgICAgICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgCgkgICAgICAkdGhpcy0+TGFuZygndXBncmFkZWQnLCAkdGhpcy0+R2V0VmVyc2lvbigpKSk7CgovL25vdGU6IG1vZHVsZSBhcGkgaGFuZGxlcyBzZW5kaW5nIGdlbmVyaWMgZXZlbnQgb2YgbW9kdWxlIHVwZ3JhZGVkIGhlcmUKPz4=]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9IFBpbmcKdmVyc2lvbiA9IDAuNS4zCmRlc2NyaXB0aW9uID0gCmF1dGhvciA9IGFnaS13ZWJjb25zZWlsCmF1dGhvcmVtYWlsID0gY2xhdWRlQGFnaS13ZWJjb25zZWlsLmZyCm1pbmNtc3ZlcnNpb24gPSAyLjEuNAoxMVtkZXBlbmRzXQpDR0NhbGVuZGFyID0gMi4xLjQuMQo=]]></data>
	</file>
	<file>
	  <filename>/Ping.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlIDogUGluZyAtIAojIFZlcnNpb24gOiAwLjIuNSwgU2MKIyBBdXRldXIgOiBDbGF1ZGUgU0lPSEFOCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8qKgogKgogKiBAYXV0aG9yIENsYXVkZSBTSU9IQU4KICogQHNpbmNlIDAuMwogKiBAdmVyc2lvbiAkUmV2aXNpb246IDM4MjcgJAogKiBAbW9kaWZpZWRieSAkTGFzdENoYW5nZWRCeTogQ2xhdWRlCiAqIEBsYXN0bW9kaWZpZWQgJERhdGU6IDIwMDctMDMtMTIgMTE6NTY6MTYgKzAyMDAgKE1vbiwgMjggSnVpbCAyMDE1KSAkCiAqIEBsaWNlbnNlIEdQTAogKiovCgpjbGFzcyBQaW5nIGV4dGVuZHMgQ01TTW9kdWxlCnsKICAKICBmdW5jdGlvbiBHZXROYW1lKCkgeyByZXR1cm4gJ1BpbmcnOyB9ICAgCiAgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOyB9ICAgCiAgZnVuY3Rpb24gR2V0VmVyc2lvbigpIHsgcmV0dXJuICcwLjUuMyc7IH0gIAogIGZ1bmN0aW9uIEdldEhlbHAoKSB7IHJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOyB9ICAgCiAgZnVuY3Rpb24gR2V0QXV0aG9yKCkgeyByZXR1cm4gJ2FnaS13ZWJjb25zZWlsJzsgfSAKICBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpIHsgcmV0dXJuICdjbGF1ZGVAYWdpLXdlYmNvbnNlaWwuZnInOyB9CiAgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOyB9CiAgICAKICBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpIHsgcmV0dXJuIHRydWU7IH0KICBmdW5jdGlvbiBIYXNBZG1pbigpIHsgcmV0dXJuIHRydWU7IH0gICAKICBmdW5jdGlvbiBHZXRBZG1pblNlY3Rpb24oKSB7IHJldHVybiAnY29udGVudCc7IH0KICBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyk7IH0KIAogIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpCiAgewogICAgCXJldHVybiAKCQkkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFVzZScpOwoJCiAgfQogIAogIAogIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpCiAgewoJcmV0dXJuIGFycmF5KCdDR0NhbGVuZGFyJz0+JzIuMS40LjEnKTsKICB9CgogIAoKICBmdW5jdGlvbiBNYXhpbXVtQ01TVmVyc2lvbigpCiAgewogICAgcmV0dXJuICIyLjAiOwogIH0KCiAgCiAgZnVuY3Rpb24gU2V0UGFyYW1ldGVycygpCiAgeyAKICAJJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CgkkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKCk7CgkKCS8vZm9ybSBwYXJhbWV0ZXJzCgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc3VibWl0JyxDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3RvdXJsaXN0JyxDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2VxdWlwZWxpc3QnLENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndHlwZV9jb21wZXQnLENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncmVjb3JkX2pvdWV1cicsIENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY2FuY2VsJyxDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2lkX3VzZXInLENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbm9tX2NvbXBsZXQnLENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnYWRyZXNzZScsQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjb2RlcG9zdGFsJyxDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NvbW11bmUnLENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZW1haWwnLENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY29uZmlybV9lbWFpbCcsQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdyZWNvcmRfaWQnLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3R5cGVfY29tcGV0aXRpb24nLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2RhdGVfY29tcGV0JywgQ0xFQU5fTk9ORSk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnYWR2ZXJzYWlyZXMnLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3RvdXInLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2VxdWlwZScsIENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbG9jYXV4JywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TRXRQYXJhbWV0ZXJUeXBlKCdqb3VldXInLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2lkJywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdudW1lcm8nLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2xpY2VuY2UnLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2FkdmxpYycsIENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndmQnLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ251bWpvdXJuJywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjb2RlY2hhbXAnLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2RhdGUnLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2FkdnNleGUnLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2Fkdm5vbXByZScsIENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncG9pbnRyZXMnLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NvZWZjaGFtcCcsIENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnYWR2Y2xhb2YnLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NsdWJfdW5pcXVlbWVudCcsIENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndGVtcGxhdGUnLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2VkaXQnLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2xpbWl0JywgQ0xFQU5fSU5UKTsKCS8vCgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZGF0ZWNyZWF0ZWQnLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2RhdGVtYWonLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ21vaXMnLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ21vbnRoJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdtb250aHNsaXN0JyxDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2FubmVlJywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdwaGFzZScsIENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbm9tJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdwcmVub20nLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2FjdGlmJywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdwb2ludCcsIENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY2xuYXQnLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3JhbmdyZWcnLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3JhbmdkZXAnLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3Byb2dtb2lzJywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzYWlzb24nLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2RhdGVfZGVidXQnLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2RhdGVfZmluJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd0eXBlJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdpZHBvdWxlJywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdpZGRpdicsIENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaWRlcHJldXZlJywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd0YWJsZWF1JywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdsaWVuJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdtZXNzYWdlJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzdGFsbCcsIENMRUFOX0lOVCk7Cgp9CgpmdW5jdGlvbiBJbml0aWFsaXplQWRtaW4oKQp7CiAgCSR0aGlzLT5TZXRQYXJhbWV0ZXJzKCk7CgkvLyR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3BhZ2VsaW1pdCcsIDEwMDAwMCwgJHRoaXMtPkxhbmcoJ2hlbHBfcGFnZWxpbWl0JykpOwoJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigndG91cicsIDEsICR0aGlzLT5MYW5nKCdoZWxwX3RvdXInKSk7CgkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCd0eXBlX2NvbXBldCcsIDEsICR0aGlzLT5MYW5nKCdoZWxwX3R5cGVfY29tcGV0JykpOwoJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignZGF0ZV9kZWJ1dCcsICcnLCAkdGhpcy0+TGFuZygnaGVscF9kYXRlX2RlYnV0JykgKTsKCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2RhdGVfZmluJywgJycsICR0aGlzLT5MYW5nKCdoZWxwX2RhdGVfZmluJykgKTsKCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2xpbWl0JywgMTAwMDAsICR0aGlzLT5MYW5nKCdoZWxwX2xpbWl0JykpOwp9CgpwdWJsaWMgZnVuY3Rpb24gSGFzQ2FwYWJpbGl0eSgkY2FwYWJpbGl0eSwgJHBhcmFtcyA9IGFycmF5KCkpCnsKICAgaWYoICRjYXBhYmlsaXR5ID09ICd0YXNrcycgKSByZXR1cm4gVFJVRTsKICAgcmV0dXJuIEZBTFNFOwp9CgpwdWJsaWMgZnVuY3Rpb24gZ2V0X3Rhc2tzKCkKewogICAkb2JqID0gYXJyYXkoKTsKCSRvYmpbMF0gPSBuZXcgUGluZ1JlY3VwRmZ0dFRhc2soKTsKICAgCSRvYmpbMV0gPSBuZXcgUGluZ1JlY3VwU3BpZFRhc2soKTsgIAoJJG9ialsyXSA9IG5ldyBQaW5nUmVjdXBSZW5jb250cmVzVGFzaygpOwpyZXR1cm4gJG9iajsgCn0KCiAgZnVuY3Rpb24gR2V0RXZlbnREZXNjcmlwdGlvbiAoICRldmVudG5hbWUgKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnZXZlbnRfaW5mb18nLiRldmVudG5hbWUgKTsKICB9CiAgICAgCiAgZnVuY3Rpb24gR2V0RXZlbnRIZWxwICggJGV2ZW50bmFtZSApCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdldmVudF9oZWxwXycuJGV2ZW50bmFtZSApOwogIH0KCiAgZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJyk7IH0KICBmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0dW5pbnN0YWxsJyk7IH0KICBmdW5jdGlvbiBVbmluc3RhbGxQcmVNZXNzYWdlKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ3JlYWxseV91bmluc3RhbGwnKTsgfQogIAogIAogIGZ1bmN0aW9uIF9TZXRTdGF0dXMoJG9pZCwgJHN0YXR1cykgewogICAgLy8uLi4KICB9CgoKCmZ1bmN0aW9uIHJhbmRvbSgkY2FyKSB7CiRzdHJpbmcgPSAiIjsKJGNoYWluZSA9ICJhYmNkZWZnaGlqa2xtbnBxcnN0dXZ3eHkiOwpzcmFuZCgoZG91YmxlKW1pY3JvdGltZSgpKjEwMDAwMDApOwpmb3IoJGk9MDsgJGk8JGNhcjsgJGkrKykgewokc3RyaW5nIC49ICRjaGFpbmVbcmFuZCgpJXN0cmxlbigkY2hhaW5lKV07Cn0KcmV0dXJuICRzdHJpbmc7Cn0KCmZ1bmN0aW9uIFZlcmlmaWVyRW1haWwoJG1vbmVtYWlsKXsKICBpZiAocHJlZ19tYXRjaCgiI15bYS16MC05Ll8tXStAW2EtejAtOS5fLV17Mix9XC5bYS16XXsyLDR9JCMiLCAkbW9uZW1haWwpKQogICAgeyByZXR1cm4gdHJ1ZTt9Cn0KCmZ1bmN0aW9uIGRhdGV2ZXJzZnIgKCRkYXRlKXsJICAgCgkkZGF0ZWFyciA9IGV4cGxvZGUoJy8nLCAkZGF0ZSk7CgkkZGF0ZWZyID0gJGRhdGVhcnJbMl0gLiAnLScgLiAkZGF0ZWFyclsxXSAuICctJyAuICRkYXRlYXJyWzBdOwoJcmV0dXJuICRkYXRlZnI7Cgl9CgpmdW5jdGlvbiBjb252X2RhdGVfdmVyc19teXNxbCgkc3RyX2RhdGUpIHsKCSRjaGd0ID0gZXhwbG9kZSgiLyIsJHN0cl9kYXRlKTsKCSRkYXkgPSBzdWJzdHIoJGNoZ3QsMCwyKTsKCSRtb250aCA9IHN1YnN0cigkY2hndCwyLDIpOwoJJHllYXIgPSBzdWJzdHIoJGNoZ3QsNCwyKTsKCSRkYXRlID0gIiR5ZWFyIi4iLSIuIiRtb250aCIuIi0iLiIkZGF5IjsKCgoJIC8vICRyZXRvdXI9ZGF0ZSgieS1tLWQiLCBta3RpbWUoMCwgMCwgMCwgJG1vbnRoLCAkZGF5LCAkeWVhcikpOwoJIHJldHVybiAkZGF0ZTsKfQpmdW5jdGlvbiBtb2lzX2ZyYW5jYWlzKCRtb2lzKXsKCSRtb250aHMgPSBhcnJheSgiSmFudmllciIsICJGw6l2cmllciIsICJNYXJzIiwgIkF2cmlsIiwgIk1haSIsICJKdWluIiwgImp1aWxsZXQiLCAiQW91dCIsICJTZXB0ZW1icmUiLCAiT2N0b2JyZSIsICJOb3ZlbWJyZSIsICJkw6ljZW1icmUiKTsKCSRtb250aF90b19kaXNwbGF5ID0gJG1vaXMtMTsKCSRtb250aF9mcmFuY2FpcyA9ICRtb250aHNbIiRtb250aF90b19kaXNwbGF5Il07CglyZXR1cm4gJG1vbnRoX2ZyYW5jYWlzOwp9Cgp9IC8vZW5kIGNsYXNzCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAAAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAYAAAAAAAAAABAAAAgAAAAAEAAAEAAAAAAQAAAgAAAAABAAAEAAAAAAIAAAgAAAAYAAAAAAAAAAABAAAgAAAAAAEAAEAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/templates/add_all_sit_mens.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskcm93YXJyYXl8dmFyX2R1bXB9PC9wcmU+Kn0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwPlNldWxlcyBsZXMgc2l0dWF0aW9ucyByZW5zZWlnbsOpZXMgc2Vyb250IHByaXNlcyBlbiBjb21wdGUgKD4wKTwvcD4KeyRmb3Jtc3RhcnR9CnskbW9pc19jb3VyYW50fQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Nb2lzIDo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGNob2l4X21vaXN9IDwvcD4KICA8L2Rpdj4KCgp7Zm9yZWFjaCBmcm9tPSRyb3dhcnJheSBrZXk9a2V5IGl0ZW09ZW50cnl9CiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXskY250fSI+CiAgICAgICAgCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4geyRlbnRyeX0gOjwvcD4KCSAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImNtc190ZXh0ZmllbGQiIG5hbWU9InskYWN0aW9uaWR9bGljZW5jZVt7JGtleX1dIiBpZD0ieyRhY3Rpb25pZH17JGtleX0iIHZhbHVlPSIiPjwvcD4KICAgICAgICAKICAgIDwvZGl2PgogICAgey9mb3JlYWNofQoKCQogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fXskY2FuY2VsfTwvcD4KICA8L2Rpdj4KeyRmb3JtZW5kfQo8L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/add_compet.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzY3JpcHQ+CiAkKGZ1bmN0aW9uKCkgewogICAkKCAiI20xX2RhdGVfZGVidXQiICkuZGF0ZXBpY2tlcih7IGRhdGVGb3JtYXQ6ICJ5eS1tbS1kZCIgfSk7CiB9KTsKIDwvc2NyaXB0Pgp7L2xpdGVyYWx9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CnskZm9ybXN0YXJ0fQp7JHJlY29yZF9pZH0KeyRpbmRpdnN9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkNvbXDDqXRpdGlvbiA6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpZGVwcmV1dmV9IHsqJHRvb2x0aXAqfTwvcD4KICA8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkRhdGUgZMOpYnV0OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZGF0ZV9kZWJ1dH08L3A+CiAgPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+RGF0ZSBmaW46PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZGF0ZV9maW59PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Ub3VyIG91IE7CsCBKb3VybsOpZTo8L3A+CjxwIGNsYXNzPSJwYWdlaW5wdXQiPnskbnVtam91cm59PC9wPgo8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH17JGNhbmNlbH08L3A+CiAgPC9kaXY+CnskZm9ybWVuZH0KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/add_sit_mens.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskcm93YXJyYXl8dmFyX2R1bXB9PC9wcmU+Kn0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHA+TGVzIG1vaXMgbm9uIHJlbnNlaWduw6lzIG5lIHNlcm9udCBwYXMgcHJpcyBlbiBjb21wdGUuIExlIG5vbSBldCBsZSBwcsOpbm9tIHNvbnQgZmFjdWx0YXRpZnMuPC9wPgkKeyRmb3Jtc3RhcnR9CnsqJG1vbnRoKn0KeyokbW9pc19jb3VyYW50Kn0Ke2lmICRwaGFzZSA9PScxJ30Ke2Fzc2lnbiB2YXI9Y250IHZhbHVlPTl9CntlbHNlfQp7YXNzaWduIHZhcj1jbnQgdmFsdWU9MX0Key9pZn0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Sm91ZXVyIDo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JG5vbX0geyRwcmVub219PC9wPgogIDwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5MaWNlbmNlIDo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGxpY2VuY2V9PC9wPgogIDwvZGl2Pgp7aWYgJHBoYXNlPT0yfQo8ZGl2IGNsYXNzPSJzZWN0aW9uLTkiPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Nb2lzIDkgOiA8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImNtc190ZXh0ZmllbGQiIG5hbWU9InskYWN0aW9uaWR9bW9udGhbOV0iIGlkPSJ7JGFjdGlvbmlkfW1vbnRoW10iIHZhbHVlPSJ7aWYgaXNzZXQoJHJvd2FycmF5WzldKX17JHJvd2FycmF5WzldfXtlbHNlfXsvaWZ9Ij48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uLTEwIj4KCTxwIGNsYXNzPSJwYWdldGV4dCI+TW9pcyAxMCA6IDwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iY21zX3RleHRmaWVsZCIgbmFtZT0ieyRhY3Rpb25pZH1tb250aFsxMF0iIGlkPSJ7JGFjdGlvbmlkfW1vbnRoWzEwXSIgdmFsdWU9IntpZiBpc3NldCgkcm93YXJyYXlbMTBdKX17JHJvd2FycmF5WzEwXX17ZWxzZX17L2lmfSI+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbi0xMSI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPk1vaXMgMTEgOiA8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImNtc190ZXh0ZmllbGQiIG5hbWU9InskYWN0aW9uaWR9bW9udGhbMTFdIiBpZD0ieyRhY3Rpb25pZH1tb250aFsxMV0iIHZhbHVlPSJ7aWYgaXNzZXQoJHJvd2FycmF5WzExXSl9eyRyb3dhcnJheVsxMV19e2Vsc2V9ey9pZn0iPjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24tMTIiPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Nb2lzIDEyIDogPC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJjbXNfdGV4dGZpZWxkIiBuYW1lPSJ7JGFjdGlvbmlkfW1vbnRoWzEyXSIgaWQ9InskYWN0aW9uaWR9bW9udGhbMTJdIiB2YWx1ZT0ie2lmIGlzc2V0KCRyb3dhcnJheVsxMl0pfXskcm93YXJyYXlbMTJdfXtlbHNlfXsvaWZ9Ij48L3A+CjwvZGl2PgoKCnsvaWZ9Cnt3aGlsZSAkY250IDw9ICRtb2lzX2NvdXJhbnR9Cgp7KmZvcmVhY2ggZnJvbT0kcm93YXJyYXlbJGNudF0gaXRlbT1lbnRyeSp9CiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXskY250fSI+CiAgICAgICAgCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Nb2lzIHskY250fTo8L3A+CgkgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJjbXNfdGV4dGZpZWxkIiBuYW1lPSJ7JGFjdGlvbmlkfW1vbnRoW3skY250fV0iIGlkPSJ7JGFjdGlvbmlkfW1vbnRoW3skY250fV0iIHZhbHVlPSJ7aWYgaXNzZXQoJHJvd2FycmF5WyRjbnRdKX17JHJvd2FycmF5WyRjbnRdfXtlbHNlfXsvaWZ9Ij48L3A+CiAgICAgICAgCiAgICA8L2Rpdj4KICAgIHsqL2ZvcmVhY2gqfQp7YXNzaWduIHZhcj1jbnQgdmFsdWU9JGNudCsxfQp7L3doaWxlfQoJCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9eyRjYW5jZWx9PC9wPgogIDwvZGl2Pgp7JGZvcm1lbmR9CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/add_type_compet.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGxhYmVsPnskdGV4dH08L2xhYmVsPgp7aWYgJGVycm9yfQo8Zm9udCBjb2xvcj0icmVkIj4Key9pZn0Ke2lmICRtZXNzYWdlIG5lICIifQo8c3Ryb25nPnskbWVzc2FnZX08L3N0cm9uZz4Key9pZn0Ke2lmICRlcnJvcn0KPC9mb250Pgp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgp7JGZvcm1zdGFydH0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Tm9tIDo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JG5hbWV9PC9wPgogIDwvZGl2PiAgCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5jb2VmZmljaWVudDo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGNvZWZmaWNpZW50fTwvcD4KICA8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Db21ww6l0aXRpb24gaW5kaXZpZHVlbGxlczo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbmRpdnN9PC9wPgo8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH17JGNhbmNlbH08L3A+CiAgPC9kaXY+CnskZm9ybWVuZH0KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/adminprefs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iYWxlcnQgIGFsZXJ0LWluZm8iPgogICAgPHAgY2xhc3M9ImFsZXJ0LWluZm8iPkxhIFpvbmUgbidhcHBhcmFpdCBwYXMgPyB7JHJlY3VwX29yZ2F9PC9wPgo8L2Rpdj4KeyRzdGFydGZvcm19Cnskc3RhbGx9CjxmaWVsZHNldD4KPGxlZ2VuZD5Db25maWd1cmF0aW9uIHByaW5jaXBhbGU8L2xlZ2VuZD4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5MZSBudW3DqXJvIGRlIHZvdHJlIGNsdWI8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9jbHViX251bWJlcn08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Wb3RyZSB6b25lPC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfem9uZX08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Wb3RyZSBsaWd1ZSA6PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfbGlndWV9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+Vm90cmUgZMOpcGFydGVtZW50IDo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9kZXB9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+UGhhc2UgZW4gY291cnM6PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcGhhc2V9PC9wPgoJPC9kaXY+CgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPlNhaXNvbiBlbiBjb3VycyA6PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc2Fpc29uX2VuX2NvdXJzfTwvcD4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQk8cCBjbGFzcz0icGFnZXRleHQiPk5vbSBnw6luw6lyaXF1ZSBkZSB2b3Mgw6lxdWlwZXMgOjwvcD4KCQkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9ub21fZXF1aXBlc308L3A+CgkJCTwvZGl2PgoKPC9maWVsZHNldD4KPGZpZWxkc2V0PgoJPGxlZ2VuZD5BdXRyZXMgb3B0aW9uczwvbGVnZW5kPgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPkxlIGNhbGVuZHJpZXIgc2UgcmVtcGxpdCBhdmVjIGxlIHLDqXN1bHRhdHMgZGVzIHBvdWxlcyAocmVjb21tYW5kw6kpPC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcG9wdWxhdGVfY2FsZW5kYXJ9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+QWZmaWNoZXIgbGVzIHLDqXN1bHRhdHMgZGUgbWVzIMOpcXVpcGVzIHVuaXF1ZW1lbnQ8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9hZmZpY2hlX2NsdWJfdW5pcXVlbWVudH08L3A+Cgk8L2Rpdj4KCQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPlLDqWN1cMOpcmF0aW9uIGR1IFNwaWQgbGUgeCBqb3VyIGR1IG1vaXM8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRqb3VyX3NpdF9tZW5zfTwvcD4KCTwvZGl2PgoKCTwvZmllbGRzZXQ+Cgk8ZmllbGRzZXQ+CgkJPGxlZ2VuZD5TY3JpcHRzIGF1dG9tYXRpcXVlczwvbGVnZW5kPgoJCTxmaWVsZHNldD4KCQkJPGxlZ2VuZD5TcGlkPC9sZWdlbmQ+CgkJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCQk8cCBjbGFzcz0icGFnZXRleHQiPlLDqWN1cMOpcmF0aW9uIHRvdXMgbGVzIHggam91cnM8L3A+CgkJCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3NwaWRfaW50ZXJ2YWx9PC9wPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJCTxwIGNsYXNzPSJwYWdldGV4dCI+UsOpc3VsdGF0cyBkZSB4IGpvdWV1cnM8L3A+CgkJCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3NwaWRfbm9tYnJlc308L3A+CgkJCTwvZGl2PgoJCTwvZmllbGRzZXQ+CgkJPGZpZWxkc2V0PgoJCQk8bGVnZW5kPkZGVFQ8L2xlZ2VuZD4KCQkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJCTxwIGNsYXNzPSJwYWdldGV4dCI+UsOpY3Vww6lyYXRpb24gdG91cyBsZXMgeCBqb3VyczwvcD4KCQkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZmZ0dF9pbnRlcnZhbH08L3A+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Sw6lzdWx0YXRzIGRlIHggam91ZXVyczwvcD4KCQkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZmZ0dF9ub21icmVzfTwvcD4KCQkJPC9kaXY+CgkJPC9maWVsZHNldD4KCTwvZmllbGRzZXQ+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fTwvcD4KCTwvZGl2Pgp7JGVuZGZvcm19]]></data>
	</file>
	<file>
	  <filename>/templates/allsitmens.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskaXRlbXN8dmFyX2R1bXB9PC9wcmU+Kn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPgp7aWYgJGpvdXIgPDEwfQo8cCBjbGFzcz0id2FybmluZyI+QXR0ZW50aW9uICEgTCdhY2PDqHMgbidlc3QgcGFzIGVuY29yZSBsaWJyZSAhIFZvdXMgbmUgcG91dmV6IHBhcyByw6ljdXDDqXJlciBsZXMgc2l0dWF0aW9ucyBtZW5zdWVsbGVzIGF1dG9tYXRpcXVlbWVudDwvcD57ZWxzZX08cCBjbGFzcz0ic3VjY2VzcyI+TCdhY2PDqHMgZXN0IGTDqXNvcm1haXMgbGlicmUsIHZvdXMgcG91dmV6ICByw6ljdXDDqXJlciBsZXMgc2l0dWF0aW9ucyBtZW5zdWVsbGVzLjwvcD57L2lmfTwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGl0ZW1jb3VudH0mbmJzcDt7JGl0ZW1zZm91bmR9IHwgeyRyZXRyaWV2ZWFsbHNpdG1lbnN9IHwgeyRhZGRhbGxzaXRtZW5zbGlua308L3A+PC9kaXY+CntpZiBpc3NldCgkZm9ybXN0YXJ0KSB9CjxmaWVsZHNldD4KICA8bGVnZW5kPkZpbHRyZXM8L2xlZ2VuZD4KICB7JGZvcm1zdGFydH0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Nb2lzOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfbW9udGh9IDwvcD4KCTxwIGNsYXNzPSJwYWdldGV4dCI+Sm91ZXVyIDo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3BsYXllcn0gPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdGZpbHRlcn17JGhpZGRlbnxkZWZhdWx0OicnfTwvcD4KICA8L2Rpdj4KICB7JGZvcm1lbmR9CjwvZmllbGRzZXQ+CnsvaWZ9CntpZiAkaXRlbWNvdW50ID4gMH0KeyRmb3JtMnN0YXJ0fQo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgoJPHRyPgoJCTx0aD5JRDwvdGg+CgkJPHRoPkxpY2VuY2U8L3RoPgoJCTx0aD5Nb2lzPC90aD4KCQk8dGg+Sm91ZXVyPC90aD4KCQk8dGg+UG9pbnRzPC90aD4KCQk8dGg+UmFuZyBuYXQ8L3RoPgoJCTx0aD5SYW5nIHJlZzwvdGg+CgkJPHRoPlJhbmcgZMOpcDwvdGg+CgkJPHRoPlByb2dyZXNzaW9uIG1lbnM8L3RoPgoJCTx0aCBjb2xzcGFuPSIyIj5BY3Rpb25zPC90aD4KCQk8dGg+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0ic2VsZWN0YWxsIiBuYW1lPSJzZWxlY3RhbGwiPjwvdGg+Cgk8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+Cgk8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KCTx0ZD57JGVudHJ5LT5saWNlbmNlfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+bW9pc308L3RkPgogICAgPHRkPnskZW50cnktPmpvdWV1cn08L3RkPgogICAgPHRkPnskZW50cnktPnBvaW50c308L3RkPgoJPHRkPnskZW50cnktPmNsbmF0fTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+cmFuZ3JlZ308L3RkPgoJPHRkPnskZW50cnktPnJhbmdkZXB9PC90ZD4KCTx0ZD57JGVudHJ5LT5wcm9nbW9pc308L3RkPgoJPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPgoJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1zZWxbXSIgdmFsdWU9InskZW50cnktPmxpY2VuY2V9IiBjbGFzcz0ic2VsZWN0Ij48L3RkPgogIDwvdHI+CnsvZm9yZWFjaH0KIDwvdGJvZHk+CjwvdGFibGU+CjwhLS0gU0VMRUNUIERST1BET1dOIC0tPgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyIgc3R5bGU9ImZsb2F0OiByaWdodDsiPgo8YnIvPnskYWN0aW9uZGVtYXNzZX17JHN1Ym1pdF9tYXNzYWN0aW9ufQogIDwvZGl2Pgp7JGZvcm0yZW5kfQp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57KiRjcmVhdGVsaW5rKn08L3A+PC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/avenir.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskaXRlbXN8dmFyX2R1bXB9PC9wcmU+Kn0Ke2Fzc2lnbiB2YXI9Y29tcHRldXIgdmFsdWUgPSAwfQoKPHVsPgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQp7KjxwPjxwcmU+eyRwcm9kc197JGNvbXB0ZXVyKyt9fHZhcl9kdW1wfTwvcHJlPjwvcD4qfQo8bGk+eyokZW50cnktPnZhbGV1cip9e2lmICRlbnRyeS0+aW5kaXZzPT0wfXskZW50cnktPmRhdGV8ZGF0ZV9mb3JtYXQ6IiVkLyVtLyVZIn0geyRlbnRyeS0+Y29tcGV0fQoJPHVsPgoJCXtmb3JlYWNoIGZyb209JHByb2RzX3skZW50cnktPnZhbGV1cn0gaXRlbT1kb25uZWV9CgkJCTxsaT4geyRkb25uZWUtPmVxdWF9IC0geyRkb25uZWUtPmVxdWJ9PC9saT4KCQl7L2ZvcmVhY2h9Cgk8L3VsPgp7ZWxzZX17JGVudHJ5LT5kYXRlfGRhdGVfZm9ybWF0OiIlZC8lbS8lWSJ9IHskZW50cnktPmNvbXBldH17L2lmfTwvbGk+CnsvZm9yZWFjaH0KPC91bD4=]]></data>
	</file>
	<file>
	  <filename>/templates/bar-charts2.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLQo8c2NyaXB0IHNyYz0iaHR0cDovL2NvZGUuanF1ZXJ5LmNvbS9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Imh0dHA6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LW1pZ3JhdGUtMS4xLjAuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IGNsYXNzPSJpbmNsdWRlIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibW9kdWxlcy9QaW5nL2pxcGxvdC9qcXVlcnkuanFwbG90Lm1pbi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Im1vZHVsZXMvUGluZy9qcXBsb3QvcGx1Z2lucy9qcXBsb3QuYmFyUmVuZGVyZXIubWluLmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibW9kdWxlcy9QaW5nL2pxcGxvdC9wbHVnaW5zL2pxcGxvdC5jYXRlZ29yeUF4aXNSZW5kZXJlci5taW4uanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJtb2R1bGVzL1BpbmcvanFwbG90L3BsdWdpbnMvanFwbG90LnBvaW50TGFiZWxzLm1pbi5qcyI+PC9zY3JpcHQ+Cgo8c2NyaXB0IGNsYXNzPSJpbmNsdWRlIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibW9kdWxlcy9QaW5nL2pxcGxvdC9wbHVnaW5zL2pxcGxvdC5waWVSZW5kZXJlci5taW4uanMiPjwvc2NyaXB0Pgo8c2NyaXB0IGNsYXNzPSJpbmNsdWRlIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cDovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjkuMS9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4Keyo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJtb2R1bGVzL1BpbmcvanFwbG90L2V4YW1wbGUubWluLmpzIj48L3NjcmlwdD4qfQotLT4KPGRpdj48c3Bhbj5Zb3UgQ2xpY2tlZDogPC9zcGFuPjxzcGFuIGlkPSJpbmZvMSI+Tm90aGluZyB5ZXQ8L3NwYW4+PC9kaXY+CiAgICAgICAgCiAgICA8ZGl2IGlkPSJjaGFydDEiIHN0eWxlPSJtYXJnaW4tdG9wOjIwcHg7IG1hcmdpbi1sZWZ0OjIwcHg7IHdpZHRoOjMwMHB4OyBoZWlnaHQ6MzAwcHg7Ij48L2Rpdj4KPHByZSBjbGFzcz0iY29kZSBicnVzaDpqcyI+PC9wcmU+CgogICAgPHA+VGhlIHBsb3QgdGFyZ2V0IGFsc28gZmlyZXMgYSAnanFwbG90RGF0YU1vdXNlT3Zlcicgd2hlbiB0aGUgY3Vyc29yIGlzIG1vdXNlZCBvdmVyIGEgYmFyIGV2ZW4gaWYgaGlnaGxpZ2h0aW5nIGlzIHR1cm5lZCBvZmYuICBUaGlzIGV2ZW50IHdpbGwgZmlyZSBjb250aW51b3VzbHkgYXMgdGhlIHVzZXIgbW91c2VzIG92ZXIgdGhlIGJhci4gICdqcXBsb3REYXRhSGlnaGxpZ2h0JyBmaXJlcyBvbmx5IG9uY2Ugd2hlbiB0aGUgdXNlciBmaXJzdCBwYXNzZXMgb3ZlciB0aGUgYmFyLiAgQWRkaXRpb25hbGx5LCBhICdqcXBsb3REYXRhVW5oaWdobGlnaHQnIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIHVzZXIgbW92ZXMgb3V0IG9mIGEgYmFyIChpZiBoaWdobGlnaHRpbmcgaXMgZW5hYmxlZCkuPHA+CgogICAgPGRpdj48c3Bhbj5Nb3VzZWQgT3ZlcjogPC9zcGFuPjxzcGFuIGlkPSJpbmZvMiI+Tm90aGluZzwvc3Bhbj48L2Rpdj4KCgo8IS0tIERvbid0IHRvdWNoIHRoaXMhIC0tPgoKCjwhLS0gRG9uJ3QgdG91Y2ggdGhpcyEgLS0+Cgp7Y21zX2pxdWVyeSBhcHBlbmQ9J2h0dHA6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5Lm1pbi5qcyxodHRwOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS1taWdyYXRlLTEuMS4wLmpzLG1vZHVsZXMvUGluZy9qcXBsb3QvanF1ZXJ5LmpxcGxvdC5taW4uanMsbW9kdWxlcy9QaW5nL2pxcGxvdC9qcXVlcnkuanFwbG90LmpzLG1vZHVsZXMvUGluZy9qcXBsb3QvcGx1Z2lucy9qcXBsb3QuYmFyUmVuZGVyZXIubWluLmpzLG1vZHVsZXMvUGluZy9qcXBsb3Qvc3ludGF4aGlnaGxpZ2h0ZXIvc2NyaXB0cy9zaENvcmUubWluLmpzLG1vZHVsZXMvUGluZy9qcXBsb3Qvc3ludGF4aGlnaGxpZ2h0ZXIvc2NyaXB0cy9zaEJydXNoSlNjcmlwdC5taW4uanMsbW9kdWxlcy9QaW5nL2pxcGxvdC9zeW50YXhoaWdobGlnaHRlci9zY3JpcHRzL3NoQnJ1c2hYbWwubWluLmpzLG1vZHVsZXMvUGluZy9qcXBsb3QvcGx1Z2lucy9qcXBsb3QuYmFyUmVuZGVyZXIuanMsbW9kdWxlcy9QaW5nL2pxcGxvdC9wbHVnaW5zL2pxcGxvdC5waWVSZW5kZXJlci5qcyd9CiAgICAKICAgIAo8IS0tIEFkZGl0aW9uYWwgcGx1Z2lucyBnbyBoZXJlIC0tPgo8IS0tID4KICA8c2NyaXB0IGNsYXNzPSJpbmNsdWRlIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibW9kdWxlcy9QaW5nL2pxcGxvdC9wbHVnaW5zL2pxcGxvdC5iYXJSZW5kZXJlci5qcyI+PC9zY3JpcHQ+CiAgPHNjcmlwdCBjbGFzcz0iaW5jbHVkZSIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Im1vZHVsZXMvUGluZy9qcXBsb3QvcGx1Z2lucy9qcXBsb3QucGllUmVuZGVyZXIuanMiPjwvc2NyaXB0PgogIDxzY3JpcHQgY2xhc3M9ImluY2x1ZGUiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJtb2R1bGVzL1BpbmcvanFwbG90L3BsdWdpbnMvanFwbG90LmNhdGVnb3J5QXhpc1JlbmRlcmVyLmpzIj48L3NjcmlwdD4KICA8c2NyaXB0IGNsYXNzPSJpbmNsdWRlIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibW9kdWxlcy9QaW5nL2pxcGxvdC9wbHVnaW5zL2pxcGxvdC5wb2ludExhYmVscy5qcyI+PC9zY3JpcHQ+ICAgIAoKCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnkvMS45LjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Im1vZHVsZXMvUGluZy9qcXBsb3QvanF1ZXJ5LmpxcGxvdC5taW4uanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJtb2R1bGVzL1BpbmcvanFwbG90L3BsdWdpbnMvanFwbG90LnBpZVJlbmRlcmVyLm1pbi5qcyI+PC9zY3JpcHQ+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZj0ibW9kdWxlcy9QaW5nL2pxcGxvdC9qcXVlcnkuanFwbG90Lm1pbi5jc3MiIC8+Ci0tPg==]]></data>
	</file>
	<file>
	  <filename>/templates/calendar.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskaXRlbXN8dmFyX2R1bXB9PC9wcmU+eypkZWJ1Zyp9CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLy88IVtDREFUQVsKJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAkKCcjc2VsZWN0YWxsJykuY2xpY2soZnVuY3Rpb24oKXsKICAgIHZhciB2ID0gJCh0aGlzKS5hdHRyKCdjaGVja2VkJyk7CiAgICBpZiggdiA9PSAnY2hlY2tlZCcgKSB7CiAgICAgICQoJy5zZWxlY3QnKS5hdHRyKCdjaGVja2VkJywnY2hlY2tlZCcpOwogICAgfSBlbHNlIHsKICAgICAgJCgnLnNlbGVjdCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICAgIH0KICB9KTsKICAkKCcuc2VsZWN0JykuY2xpY2soZnVuY3Rpb24oKXsKICAgICQoJyNzZWxlY3RhbGwnKS5yZW1vdmVBdHRyKCdjaGVja2VkJyk7CiAgfSk7CiAgJCgnI3RvZ2dsZV9maWx0ZXInKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI2ZpbHRlcl9mb3JtJykudG9nZ2xlKCk7CiAgfSk7CiAge2lmIGlzc2V0KCR0YWJsZXNvcnRlcil9CiAgJCgnI2FydGljbGVsaXN0JykudGFibGVzb3J0ZXIoeyBzb3J0TGlzdDp7JHRhYmxlc29ydGVyfSB9KTsKICB7L2lmfQp9KTsKLy9dXT4KPC9zY3JpcHQ+CnsqCntpZiBpc3NldCgkZm9ybXN0YXJ0KSB9CjxmaWVsZHNldD4KICA8bGVnZW5kPkZpbHRyZXM8L2xlZ2VuZD4KICB7JGZvcm1zdGFydH0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPCEtLTxwIGNsYXNzPSJwYWdldGV4dCI+VHlwZSBDb21ww6l0aXRpb246PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9jb21wZXR9IDwvcD4tLT4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+RGF0ZTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2RhdGV9IDwvcD4KCTxwIGNsYXNzPSJwYWdldGV4dCI+U3RhdHV0OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc3RhdHVzfSA8L3A+Cgk8IS0tPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Kb3VldXIgOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcGxheWVyfSA8L3A+LS0+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0ZmlsdGVyfXskaGlkZGVufGRlZmF1bHQ6Jyd9PC9wPgogIDwvZGl2PgogIHskZm9ybWVuZH0KPC9maWVsZHNldD4Key9pZn0KKn0KPHAgc3R5bGU9IndpZHRoOiAxMDAlIj48c3BhbiBzdHlsZT0idGV4dC1hbGlnbjogbGVmdCI+e2lmICRwaGFzZSA9PTF9eyRTZXB9IHwgeyRPY3R9IHwgeyROb3Z9IHwgeyREZWN9IHskbW9pc19zdWl2YW50fXtlbHNlfXskbW9pc19wcmVjZWRlbnR9ICB7JEphbn0gfCB7JEZldn0gfCB7JE1hcn0gfCB7JEF2cn0gfCB7JE1haX0gfCB7JEp1aW59IHwgeyRKdWlsfXsvaWZ9PC9zcGFuPjwvcD4Keyo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JHJldHJpZXZlX3VzZXJzfSB8IHskcmV0cmlldmVfdGVhbXN9IHwgeyRyZXRyaWV2ZV90ZWFtc19hdXRyZXN9IHwgeyRyZXRyaWV2ZV9hbGxfcGFydGllc30gfCB7JHJldHJpZXZlX2FsbF9zcGlkfSB8IHskcmV0cmlldmVfZGV0YWlsc19yZW5jb250cmVzfTwvcD48L2Rpdj4qfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGl0ZW1jb3VudH0mbmJzcDt7JGl0ZW1zZm91bmR9ICB8IHskY3JlYXRlbGlua30geyokbWFpbnRlbmFudCp9PC9wPjwvZGl2Pgp7aWYgJGl0ZW1jb3VudCA+IDAgJiYgaXNfYXJyYXkoJGl0ZW1zKSAmJiBjb3VudCgkaXRlbXMpPjB9Cgp7JGZvcm0yc3RhcnR9Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiA8dGhlYWQ+Cgk8dHI+CgkJPHRoPklkPC90aD4KCQk8dGg+Tm9tX2NvbXBldDwvdGg+CgkJPHRoPkRhdGU8L3RoPgoJCTx0aD5OwrAgVG91cjwvdGg+CgkJPHRoPlRhZyBwb3VyIGFmZmljaGFnZTwvdGg+CgkJPHRoIGNvbHNwYW49IjMiPkFjdGlvbnM8L3RoPgogICAgPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CntpZiAkZW50cnktPmRhdGVfZmluIDwgJG1haW50ZW5hbnR9PHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30gcGFzdCIgc3R5bGU9ImJhY2tncm91bmQ6ICNDOEM4Qzg7IGZvbnQtY29sb3I6IHdoaXRlOyI+e2Vsc2V9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPnsvaWZ9CiAgIAogICAgPHRkPnskZW50cnktPmlkfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+bmFtZX08L3RkPgoJPHRkPnskZW50cnktPmRhdGVfZGVidXR8ZGF0ZV9mb3JtYXQ6IiVkLSVtLSVZIn0tPnskZW50cnktPmRhdGVfZmlufGRhdGVfZm9ybWF0OiIlZC0lbS0lWSJ9PC90ZD4KCTx0ZD57JGVudHJ5LT5udW1qb3Vybn08L3RkPgoJPHRkPnskZW50cnktPnRhZ308L3RkPgoJeyoqfXtpZiAkZW50cnktPmRhdGVfZGVidXQgPCAkbWFpbnRlbmFudH08dGQ+eyRlbnRyeS0+cmV0cmlldmVsaW5rfTwvdGQ+e2Vsc2V9PHRkPjwvdGQ+ey9pZn17Kip9CiAgICA8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KCTx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+Cgk8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQo8ZGl2IHN0eWxlPSJ3aWR0aDogMTAwJTsiPgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyIgc3R5bGU9ImZsb2F0OiBsZWZ0OyI+Cgk8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnsqJGFkZGxpbmsqfTwvcD4KPC9kaXY+CntpZiAkaXRlbWNvdW50ID4gMH0KICA8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyIgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7Ij4KICAgIHskc3VibWl0X21hc3NkZWxldGV9CiAgPC9kaXY+CnsvaWZ9CjxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CjwvZGl2Pgp7JGZvcm0yZW5kfQoKCgoKCgoK]]></data>
	</file>
	<file>
	  <filename>/templates/classement.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eypkZWJ1Zyp9CntpZiAkaXRlbWNvdW50ID4gMH0Keyo8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskcGhhc2UxfSB8IHskcGhhc2UyfTwvcD4qfQo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgoJPHRyPgoJCQoJCTx0aD5FcXVpcGU8L3RoPgoJCTx0aD5DbGFzc2VtZW50PC90aD4KCQkKCTwvdHI+CiA8L3RoZWFkPgogPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KCTx0ZD57JGVudHJ5LT5mcmllbmRseW5hbWV9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5jbHR9PC90ZD4KICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgp7ZWxzZX0KPHA+Tm8gcmVzdWx0cyB5ZXQ8L3A+CnsvaWZ9Cgo=]]></data>
	</file>
	<file>
	  <filename>/templates/compte.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CjxmaWVsZHNldD4KPGxlZ2VuZD5Eb25uw6llcyBkZSB2b3RyZSBjb21wdGUgKGZvdXJuaWVzIHBhciBsYSBGRlRUKTwvbGVnZW5kPgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPklkIGRlIHZvdHJlIGFwcGxpY2F0aW9uPC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaWRBcHBsaX08L3A+Cgk8L2Rpdj4KCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+TW90IGRlIHBhc3NlOjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG1vdGRlcGFzc2V9PC9wPgoJPC9kaXY+Cgk8L2ZpZWxkc2V0PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CgkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fTwvcD4KCQk8L2Rpdj4KCgp7JGVuZGZvcm19Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/contacts.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskaXRlbWNvdW50fSZuYnNwO3skaXRlbXNmb3VuZH08L3A+PC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskY3JlYXRlX25ld19jb250YWN0fTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgoJPHRyPgoJCTx0aD57JGlkfTwvdGg+CgkJPHRoPlR5cGUgZGUgY29udGFjdDwvdGg+CgkJPHRoPmNvbnRhY3Q8L3RoPgoJCTx0aD5kZXNjcmlwdGlvbjwvdGg+CgkJPHRoIGNvbHNwYW49JzMnPkFjdGlvbnM8L3RoPgoJPC90cj4KPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+Cgk8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KCTx0ZD57JGVudHJ5LT50eXBlX2NvbnRhY3R9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5jb250YWN0fTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZGVzY3JpcHRpb259PC90ZD4KCTx0ZD57JGVudHJ5LT5jcmVhdGVfY29udGFjdH08L3RkPgoJCTx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+CiAgICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgp7ZWxzZX0KPHA+eyRjcmVhdGVfbmV3X2NvbnRhY3R9PC9wPgp7L2lmfQoK]]></data>
	</file>
	<file>
	  <filename>/templates/create_contact.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KeyRmb3Jtc3RhcnR9CgogeyRsaWNlbmNlfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5UeXBlIGRlIGNvbnRhY3Q6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0eXBlX2NvbnRhY3R9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkNvbnRhY3Q8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGNvbnRhY3R9PC9wPgogIDwvZGl2PiAKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5EZXNjcmlwdGlvbjo8L3A+CiAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZGVzY3JpcHRpb259PC9wPgogPC9kaXY+ICAKIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fXskYmFja317JGNhbmNlbH08L3A+CiAgPC9kaXY+CnskZm9ybWVuZH0KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/dater.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzY3JpcHQ+CiAkKGZ1bmN0aW9uKCkgewogICAkKCAiI20xX2RhdGVfZGVidXQiICkuZGF0ZXBpY2tlcih7IGRhdGVGb3JtYXQ6ICJ5eS1tbS1kZCIgfSk7CiB9KTsKIDwvc2NyaXB0Pgp7L2xpdGVyYWx9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CnskZm9ybXN0YXJ0fQp7JHJlY29yZF9pZH0KeyRtZXRob2RlfQoKCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkRhdGUgZMOpYnV0OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZGF0ZV9kZWJ1dH08L3A+CiAgPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+RGF0ZSBmaW46PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZGF0ZV9maW59PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Ub3VyIG91IE7CsCBKb3VybsOpZTo8L3A+CjxwIGNsYXNzPSJwYWdlaW5wdXQiPnskbnVtam91cm59PC9wPgo8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH17JGNhbmNlbH08L3A+CiAgPC9kaXY+CnskZm9ybWVuZH0KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/details.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRpdGVtY291bnQgPiAwfQo8aDM+TGEgZmV1aWxsZSBkZSBtYXRjaDwvaDM+Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InRhYmxlIHRhYmxlLWJvcmRlcmVkIj4KIDx0aGVhZD4KCTx0cj4KCQk8dGg+Sm91ZXVyIEE8L3RoPgoJCTx0aD5DbHQgQTwvdGg+CgkJPHRoPkpvdWV1ciBCPC90aD4KCQk8dGg+Q2x0IEI8L3RoPgoJPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgoJPHRkPjxzdHJvbmc+eyRlbnRyeS0+eGphfTwvc3Ryb25nPjwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+eGNhfTwvdGQ+CiAgICA8dGQ+PHN0cm9uZz57JGVudHJ5LT54amJ9PC9zdHJvbmc+PC90ZD4KCTx0ZD57JGVudHJ5LT54Y2J9PC90ZD4gICAKICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgp7ZWxzZX0KPHA+IFBhcyBlbmNvcmUgZGUgcsOpc3VsdGF0cyBkaXNwb25pYmxlcy4uLjwvcD4Key9pZn0Ke2lmICRpdGVtY291bnQyID4gMH0KPGgzPk9yZHJlIGRlcyBwYXJ0aWVzPC9oMz4KPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ib3JkZXJlZCI+Cgk8dHI+PHRoPkVxdWlwZSBBPC90aD48dGg+U2NvcmUgQTwvdGg+PHRoPlNjb3JlIEI8L3RoPjx0aD5FcXVpcGUgQjwvdGg+PC90cj4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMyIGl0ZW09ZW50cnl9CnsqPHByZT57JGl0ZW1zMnx2YXJfZHVtcH08L3ByZT4qfQoJCgogIAkKCQkJCQk8dHI+PHRkPnskZW50cnktPmpvdWV1ckF9PC90ZD48dGQ+eyRlbnRyeS0+c2NvcmVBfTwvdGQ+PHRkPnskZW50cnktPnNjb3JlQn08L3RkPjx0ZD57JGVudHJ5LT5qb3VldXJCfTwvdGQ+PC90cj4Key9mb3JlYWNofQoJCTwvdGFibGU+CgkJCjwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9Cgo=]]></data>
	</file>
	<file>
	  <filename>/templates/details_rencontre.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskaXRlbXN8dmFyX2R1bXB9PC9wcmU+Kn0Keyo8cHJlPnskcHJvZHNfMnx2YXJfZHVtcH08L3ByZT4qfQp7aWYgJHBhcmFtZXRlcnMgPT0gMX0KPGgzPkxlcyByw6lzdWx0YXRzIGR1IDEgeyRkYXRlX2V2ZW50fTwvaDM+Cgk8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWJvcmRlcmVkIj4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgIGl0ZW09ZW50cnl9CgoJCgkJCQkJCQk8dHI+PHRkPnskZW50cnktPmVxdWF9PC90ZD48dGQ+eyRlbnRyeS0+c2NvcmVhfTwvdGQ+PHRkPnskZW50cnktPnNjb3JlYn08L3RkPjx0ZD57JGVudHJ5LT5lcXVifTwvdGQ+e2lmICRlbnRyeS0+dXBsb2FkZWQgPT0nMSd9PHRkPnskZW50cnktPmRldGFpbHN9IHskZW50cnktPmNsYXNzfTwvdGQ+ey9pZn08L3RyPgoJCQl7L2ZvcmVhY2h9CgkJPC90YWJsZT4KCQp7ZWxzZX0KPCEtLSBkw6lidXQgZHUgZGV1eGnDqG1lIGdhYmFyaXQtLT4KeyogY2VjaSBlc3QgbGUgZ2FiYXJpdCBwb3VyIGxlcyBhdXRyZXMgY29uZGl0aW9ucyAqfQp7Zm9yZWFjaCBmcm9tPSRpdGVtcyAgaXRlbT1lbnRyeX0KCgk8aDM+TGVzIHLDqXN1bHRhdHMgZHUgeyRlbnRyeS0+ZGF0ZV9ldmVudHxkYXRlX2Zvcm1hdDoiJWQvJW0vJVkifTwvaDM+CgkJPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ib3JkZXJlZCI+CgkJCXtmb3JlYWNoIGZyb209JHByb2RzX3skZW50cnktPnZhbGV1cn0gaXRlbT1kb25uZWV9CgkJCQk8dHI+PHRkPnskZG9ubmVlLT5lcXVhfTwvdGQ+PHRkPnskZG9ubmVlLT5zY29yZWF9PC90ZD48dGQ+eyRkb25uZWUtPnNjb3JlYn08L3RkPjx0ZD57JGRvbm5lZS0+ZXF1Yn08L3RkPntpZiAkZG9ubmVlLT51cGxvYWRlZCA9PSAnMSd9PHRkPnskZG9ubmVlLT5kZXRhaWxzfTwvdGQ+ey9pZn08L3RyPgoJCQl7L2ZvcmVhY2h9CgkJPC90YWJsZT4KCQp7L2ZvcmVhY2h9CnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/divisions.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS50b2dnbGUoKTsKICB9KTsKICB7aWYgaXNzZXQoJHRhYmxlc29ydGVyKX0KICAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4KCntpZiBpc3NldCgkZm9ybXN0YXJ0KSB9CjxmaWVsZHNldD4KICA8bGVnZW5kPkZpbHRyZXM8L2xlZ2VuZD4KICB7JGZvcm1zdGFydH0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5UeXBlIENvbXDDqXRpdGlvbjo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NvbXBldH0gPC9wPgoKICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0ZmlsdGVyfXskaGlkZGVufGRlZmF1bHQ6Jyd9PC9wPgogIDwvZGl2PgogIHskZm9ybWVuZH0KPC9maWVsZHNldD4Key9pZn0KeyRyZXRvdXJsaWVufSA8cCBjbGFzcz0id2FybmluZyI+eyRhbGVydF9tZXNzYWdlfTwvcD57KiRyZWN1cF9kaXYqfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGl0ZW1jb3VudH0mbmJzcDt7JGl0ZW1zZm91bmR9ICAgICAtLS0+eyR0b3Vyc308L3A+PC9kaXY+CntpZiAkaXRlbWNvdW50ID4gMH0KeyRmb3JtMnN0YXJ0fQo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgogIDx0cj4KCTx0aD5JZDwvdGg+Cgk8dGg+RXByZXV2ZSAoTsKwKTwvdGg+Cgk8dGg+Tml2ZWF1PC90aD4KCTx0aD5EaXZpc2lvbiAoTsKwKTwvdGg+Cgk8dGggY29sc3Bhbj0iMiI+QWN0aW9uczwvdGg+CiAgPHRoPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InNlbGVjdGFsbCIgbmFtZT0ic2VsZWN0YWxsIj48L3RoPgogIDwvdHI+CiA8L3RoZWFkPgogPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9ICI+CiAgICA8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KCTx0ZD57JGVudHJ5LT5uYW1lfSAoeyRlbnRyeS0+aWRlcHJldXZlfSk8L3RkPgoJPHRkPnskZW50cnktPnNjb3BlfTwvdGQ+Cgk8IS0tPHRkPnskZW50cnktPmRhdGVfZXZlbnR8ZGF0ZV9mb3JtYXQ6IiVkLyVtIn08L3RkPi0tPgogICAgPHRkPnskZW50cnktPmxpYmVsbGV9ICh7JGVudHJ5LT5pZGRpdmlzaW9ufSk8L3RkPgogCTx0ZD57JGVudHJ5LT51cGxvYWRlZH08L3RkPgoJPHRkPnskZW50cnktPnBvdWxlfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPgoJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1zZWxbXSIgdmFsdWU9InskZW50cnktPmlkZGl2aXNpb259IiBjbGFzcz0ic2VsZWN0Ij48L3RkPgogIDwvdHI+CnsvZm9yZWFjaH0KIDwvdGJvZHk+CjwvdGFibGU+CjwhLS0gU0VMRUNUIERST1BET1dOIC0tPgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyIgc3R5bGU9ImZsb2F0OiByaWdodDsiPgo8YnIvPnskYWN0aW9uZGVtYXNzZX17JHN1Ym1pdF9tYXNzYWN0aW9ufQogIDwvZGl2Pgp7JGZvcm0yZW5kfQp7ZWxzZX0KPHA+UsOpY3Vww6lyZXIgbGVzIGRpdmlzaW9ucyA/eyRyZWN1cF9kaXZ9PC9wPgp7L2lmfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/editresult.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGxhYmVsPnskdGV4dH08L2xhYmVsPgp7aWYgJGVycm9yfQo8Zm9udCBjb2xvcj0icmVkIj4Key9pZn0Ke2lmICRtZXNzYWdlIG5lICIifQo8c3Ryb25nPnskbWVzc2FnZX08L3N0cm9uZz4Key9pZn0Ke2lmICRlcnJvcn0KPC9mb250Pgp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgp7JGZvcm1zdGFydH0KeyRyZWNvcmRfaWR9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPlR5cGUgQ29tcMOpdGl0aW9uOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZXByZXV2ZX08L3A+CiAgPC9kaXY+ICAKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+TsKwIEpvdXJuw6llIDo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JG51bWpvdXJufTwvcD4KICA8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkFkdmVyc2FpcmU6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRub219IC0geyRwdHNfam91ZXVyfTwvcD4KICA8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Q2xhc3NlbWVudCBhZHZlcnNhaXJlOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskY2xhc3NlbWVudH08L3A+CiAgPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPlZpY3RvaXJlIG91IGTDqWZhaXRlOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdmljdG9pcmV9PC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5FY2FydDo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGVjYXJ0fTwvcD4KICA8L2Rpdj4KIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkNvZWZmaWNpZW50IGRlIGwnw6lwcmV1dmU6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRjb2VmZn08L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9eyRkdXBsaXF1ZXJ9eyRjYW5jZWx9PC9wPgogIDwvZGl2Pgp7JGZvcm1lbmR9CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/editteam.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KeyRmb3Jtc3RhcnR9CnskcmVjb3JkX2lkfQogIAo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICA8cCBjbGFzcz0icGFnZXRleHQiPlNhaXNvbjo8L3A+CiAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc2Fpc29ufTwvcD4KIDwvZGl2PgogPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+UGhhc2U6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRwaGFzZX08L3A+CiAgPC9kaXY+IAo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5FcXVpcGU6IDwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskbGliZXF1aXBlfSB7JGhlbHBfbGliZWxsZV9lcXVpcGV9eypjbXNfaGVscCBrZXk9J2hlbHBfbGliZWxsZV9lcXVpcGUnKn08L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+RGl2aXNpb24gKEV4IDogTmF0aW9uYWxlIDEgTWVzc2lldXJzIFBvdWxlIEMpPC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRsaWJkaXZpc2lvbn0geypjbXNfaGVscCBrZXk9J2hlbHBfbGliZGl2aXNpb24nKn08L3A+CiAgPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkRvbm5leiB1biBub20gY291cnQgOiAoRXggOiBOMSBvdSBOMShBKSk8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGZyaWVuZGx5bmFtZX0geypjbXNfaGVscCBrZXk9J2hlbHBfZnJpZW5kbHluYW1lJyp9PC9wPgogIDwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5JZCBkZSBsYSBkaXZpc2lvbiA6IChWb2lyIGFpZGUgZHUgbW9kdWxlKTwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaWRkaXZ9IHsqY21zX2hlbHAga2V5PSdoZWxwX2lkZGl2Jyp9PC9wPgogIDwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5JZCBkZSBsYSBwb3VsZSA6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpZHBvdWxlfSB7KmNtc19oZWxwIGtleT0naGVscF9pZHBvdWxlJyp9PC9wPgogIDwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5PcmdhbmlzYXRldXI6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRvcmdhbmlzbWV9PC9wPgogIDwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Db21ww6l0aXRpb246PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpZGVwcmV1dmV9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fXskY2FuY2VsfXskYmFja308L3A+CiAgPC9kaXY+CnskZm9ybWVuZH0KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/editteamresult.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzY3JpcHQ+CiAkKGZ1bmN0aW9uKCkgewogICAkKCAiI20xX2RhdGVfY29tcGV0IiApLmRhdGVwaWNrZXIoeyBkYXRlRm9ybWF0OiAieXktbW0tZGQiIH0pOwogfSk7CiA8L3NjcmlwdD4Key9saXRlcmFsfQo8bGFiZWw+eyR0ZXh0fTwvbGFiZWw+CntpZiAkZXJyb3J9Cjxmb250IGNvbG9yPSJyZWQiPgp7L2lmfQp7aWYgJG1lc3NhZ2UgbmUgIiJ9CjxzdHJvbmc+eyRtZXNzYWdlfTwvc3Ryb25nPgp7L2lmfQp7aWYgJGVycm9yfQo8L2ZvbnQ+CnsvaWZ9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CnskZm9ybXN0YXJ0fQp7JHJlY29yZF9pZH0KICAKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5DbMOpOjwvcD4KICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRjbGV9PC9wPgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5UeXBlIGNvbXDDqXRpdGlvbjo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHR5cGVfY29tcGV0fTwvcD4KICA8L2Rpdj4gCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkRhdGUgY29tcMOpdGl0aW9uOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZGF0ZV9jb21wZXR9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2VxdWlwZX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRlcXVpcGV9PC9wPgogIDwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9hZHZlcnNhaXJlc306PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRhZHZlcnNhaXJlc308L3A+CiAgPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3RvdXJ9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdG91cn08L3A+CiAgPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3Njb3JlX2VxdWlwZX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzY29yZV9lcXVpcGV9PC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9zY29yZV9hZHZ9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc2NvcmVfYWR2fTwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH17JGNhbmNlbH08L3A+CiAgPC9kaXY+CnskZm9ybWVuZH0KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/edit_contact.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KeyRmb3Jtc3RhcnR9CgogeyRsaWNlbmNlfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5UeXBlIGRlIGNvbnRhY3Q6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0eXBlX2NvbnRhY3R9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkNvbnRhY3Q8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGNvbnRhY3R9PC9wPgogIDwvZGl2PiAKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5EZXNjcmlwdGlvbjo8L3A+CiAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZGVzY3JpcHRpb259PC9wPgogPC9kaXY+ICAKIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0ZWRpdH17JGJhY2t9eyRjYW5jZWx9PC9wPgogIDwvZGl2Pgp7JGZvcm1lbmR9CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/edit_joueur.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzY3JpcHQ+CiAkKGZ1bmN0aW9uKCkgewogICAkKCAiI20xX2JpcnRoZGF5IiApLmRhdGVwaWNrZXIoeyBkYXRlRm9ybWF0OiAieXktbW0tZGQiIH0pOwogfSk7CiA8L3NjcmlwdD4Key9saXRlcmFsfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgp7JGZvcm1zdGFydH0KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkFjdGlmOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskYWN0aWZ9e2Ntc19oZWxwIGtleT0naGVscF9leHBsYW5hdGlvbicgdGl0bGU9JGFjdGlmdGV4dH08L3A+CiAgPC9kaXY+CiA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Ob206PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRub219PC9wPgogIDwvZGl2PiAKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+UHLDqW5vbTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHByZW5vbX08L3A+CiAgPC9kaXY+CntpZiAkbGljZW5jZSAhPSIifQogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkxpY2VuY2U8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGxpY2VuY2V9PC9wPgogIDwvZGl2PiAKe2Vsc2V9CnskbGljZW5jZX0Key9pZn0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5EYXRlIE5haXNzYW5jZTo8L3A+CiAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskYmlydGhkYXl9PC9wPgogPC9kaXY+ICAKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5TZXhlOjwvcD4KICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzZXhlfTwvcD4KIDwvZGl2PgogPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+YWRyZXNzZTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGFkcmVzc2V9PC9wPgogIDwvZGl2PiAKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+VmlsbGU6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR2aWxsZX08L3A+CiAgPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkNvZGUgcG9zdGFsOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskY29kZXBvc3RhbH08L3A+CiAgPC9kaXY+CiA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH17JGNhbmNlbH08L3A+CiAgPC9kaXY+CnskZm9ybWVuZH0KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/edit_type_compet.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGxhYmVsPnskdGV4dH08L2xhYmVsPgp7aWYgJGVycm9yfQo8Zm9udCBjb2xvcj0icmVkIj4Key9pZn0Ke2lmICRtZXNzYWdlIG5lICIifQo8c3Ryb25nPnskbWVzc2FnZX08L3N0cm9uZz4Key9pZn0Ke2lmICRlcnJvcn0KPC9mb250Pgp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgp7JGZvcm1zdGFydH0KeyRyZWNvcmRfaWR9CnskZWRpdH0KeyRpZGVwcmV1dmV9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPlR5cGUgQ29tcMOpdGl0aW9uOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskbmFtZX08L3A+CiAgPC9kaXY+ICAKCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Db2VmZmljaWVudDogeypjbXNfaGVscCBrZXk9ImhlbHBfY29lZmZpY2llbnQiKn08L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGNvZWZmaWNpZW50fTwvcD4KICA8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Q29tcMOpdGlvbiBpbmRpdmlkdWVsbGUgPzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5kaXZzfTwvcD4KICA8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+T3JnYW5pc2F0ZXVyID88L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JG9yZ2F9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fXskZHVwbGlxdWVyfXskY2FuY2VsfTwvcD4KICA8L2Rpdj4KeyRmb3JtZW5kfQo8L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/equipe.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQo8aDM+Q2xhc3NlbWVudCBnw6luw6lyYWwgeyRsaWJlcXVpcGV9PC9oMz4KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0idGFibGUgdGFibGUtYm9yZGVyZWQiPgogPHRoZWFkPgoJPHRyPgoJCTx0aD5DbHQ8L3RoPgoJCTx0aD5FcXVpcGU8L3RoPgoJCTx0aD5Kb3VlPC90aD4KCQk8dGg+UHRzPC90aD4KCTwvdHI+CiA8L3RoZWFkPgogPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KCTx0ZD57JGVudHJ5LT5jbHR9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5lcXVpcGV9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5qb3VlfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+cHRzfTwvdGQ+CiAgICAKICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQp7aWYgJGl0ZW1jb3VudDIgPiAwfQp7Zm9yZWFjaCBmcm9tPSRpdGVtczIgaXRlbT1lbnRyeX0Keyo8cHJlPnskaXRlbXMyfHZhcl9kdW1wfTwvcHJlPip9CjxoMz5Sw6lzdWx0YXRzIGR1IHskZW50cnktPmRhdGVfZXZlbnR8ZGF0ZV9mb3JtYXQ6IiVkLyVtIn08L2gzPgkKe2lmICRpdGVtc2NvdW50X3skZW50cnktPnZhbGV1cn0gPjAgfQogIAk8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWJvcmRlcmVkIj4KCQl7Zm9yZWFjaCBmcm9tPSRwcm9kc197JGVudHJ5LT52YWxldXJ9IGl0ZW09ZG9ubmVlfQoJCXsqPHByZT57JHByb2RzX3skZW50cnktPnZhbGV1cn18dmFyX2R1bXB9PC9wcmU+Kn0JPHRyPjx0ZD57JGRvbm5lZS0+ZXF1YX08L3RkPjx0ZD57JGRvbm5lZS0+c2NvcmVhfTwvdGQ+PHRkPnskZG9ubmVlLT5zY29yZWJ9PC90ZD48dGQ+eyRkb25uZWUtPmVxdWJ9PC90ZD48L3RyPgoJCXsvZm9yZWFjaH0KCQk8L3RhYmxlPgoJCQoJCXtlbHNlfQoJCTxwPlBhcyBlbmNvcmUgZGUgcsOpc3VsdGF0cyAhPC9wPgoJCXsvaWZ9CnsvZm9yZWFjaH0KIDwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9Cgo=]]></data>
	</file>
	<file>
	  <filename>/templates/equipes.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyoKCXtpZiBpc3NldCgkZm9ybXN0YXJ0KSB9CjxmaWVsZHNldD4KICA8bGVnZW5kPkZpbHRyZXM8L2xlZ2VuZD4KICB7JGZvcm1zdGFydH0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5UeXBlIENvbXDDqXRpdGlvbjo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NvbXBldH0gPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90b3VyfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RvdXJ9IDwvcD4KCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZXF1aXBlfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2VxdWlwZX0gPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdGZpbHRlcn17JGhpZGRlbnxkZWZhdWx0OicnfTwvcD4KICA8L2Rpdj4KICB7JGZvcm1lbmR9CjwvZmllbGRzZXQ+CnsvaWZ9Cip9CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskcmV0cmlldmVfdGVhbXN9IHwgeyRyZXRyaWV2ZV90ZWFtc19hdXRyZXN9PC9wPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGl0ZW1jb3VudH0mbmJzcDt7JGl0ZW1zZm91bmR9PC9wPjwvZGl2Pgp7aWYgJGl0ZW1jb3VudCA+IDB9Cgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgoJPHRyPgoJCTx0aD57JGlkfTwvdGg+CgkJPHRoPnskZXF1aXBlfTwvdGg+CgkJPHRoPk5pdmVhdTwvdGg+CgkJPHRoPkNvbXDDqXRpdGlvbjwvdGg+CgkJPHRoPk5vbSBjb3VydDwvdGg+CgkJPHRoIGNvbHNwYW49IjQiPkFjdGlvbnM8L3RoPgoJPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgoJPHRkPnskZW50cnktPmlkfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+bGliZXF1aXBlfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+bGliZGl2aXNpb259PC90ZD4KCTx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZnJpZW5kbHluYW1lfTwvdGQ+CjwhLS0JPHRkPnskZW50cnktPnZpZXd9PC90ZD4tLT4KCTx0ZD57JGVudHJ5LT5lZGl0bGlua308L3RkPgogICAgPHRkPnskZW50cnktPnJldHJpZXZlX3BvdWxlX3JlbmNvbnRyZXN9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+CiAgPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4Key9pZn0KCg==]]></data>
	</file>
	<file>
	  <filename>/templates/fepoulesRencontres.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskaXRlbXN8dmFyX2R1bXB9PC9wcmU+Kn0KPHRhYmxlIGNsYXNzPSJ0YWJsZSI+CiA8dGhlYWQ+Cgk8dHI+CQoJCTx0aD5EYXRlPC90aD4KCQk8dGg+RXF1aXBlIEE8L3RoPgoJCTx0aD5TY29yZSBBPC90aD4KCQk8dGg+U2NvcmUgQjwvdGg+CgkJPHRoPkVxdWlwZSBCPC90aD4KICA8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4KCXtmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9Cjx0cj4KCTx0ZD57JGVudHJ5LT5kYXRlX2V2ZW50fGRhdGVfZm9ybWF0OiIlZC8lbS8lWSJ9PC90ZD4KCTx0ZD57JGVudHJ5LT5lcXVhfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+c2NvcmVhfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+c2NvcmVifTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZXF1Yn08L3RkPgoJPHRkPnskZW50cnktPmRldGFpbHN9PC90ZD4KPC90cj4KCXsvZm9yZWFjaH0KCiA8L3Rib2R5Pgo8L3RhYmxlPg==]]></data>
	</file>
	<file>
	  <filename>/templates/fe_allsitmens.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskbW9udGhzbGlzdHx2YXJfZHVtcH08L3ByZT4qfQp7KjxwcmU+eyRpdGVtc3x2YXJfZHVtcH08L3ByZT4qfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JHJldHVybmxpbmt9PC9wPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGl0ZW1jb3VudH0mbmJzcDt7JGl0ZW1zZm91bmR9PC9wPjwvZGl2Pgp7aWYgJGl0ZW1jb3VudCA+IDB9Cjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtYm9yZGVyZWQiPgoJPHRoZWFkPgoJCTx0aD5Kb3VldXI8L3RoPgoJCXtmb3JlYWNoIGZyb209JG1vbnRoc2xpc3QgaXRlbT1lbnRyZWV9CgkJCTx0aD57JG1vaXNbJGVudHJlZV19PC90aD4KCQl7L2ZvcmVhY2h9CgkJPCEtLTx0aD5Qcm9nIG1vaXM8L3RoPi0tPgoJCTx0aD5OYXQ8L3RoPgoJCTx0aD5SZWc8L3RoPgoJCTx0aD5Ew6lwPC90aD4KCTwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgPHRkPnskZW50cnktPmpvdWV1cn08L3RkPgogICAge2lmICRlbnRyeS0+c2VwdCAhPSBOVUxMfTx0ZD57JGVudHJ5LT5zZXB0fTwvdGQ+ey9pZn0KCXtpZiAkZW50cnktPm9jdCAhPSBOVUxMfTx0ZD57JGVudHJ5LT5vY3R9PC90ZD57L2lmfQoJe2lmICRlbnRyeS0+bm92ICE9IE5VTEx9PHRkPnskZW50cnktPm5vdn08L3RkPnsvaWZ9Cgl7aWYgJGVudHJ5LT5kZWMgIT0gTlVMTH08dGQ+eyRlbnRyeS0+ZGVjfTwvdGQ+ey9pZn0KCXtpZiAkZW50cnktPmphbiAhPSBOVUxMfTx0ZD57JGVudHJ5LT5qYW59PC90ZD57L2lmfQoJe2lmICRlbnRyeS0+ZmV2ICE9IE5VTEx9PHRkPnskZW50cnktPmZldn08L3RkPnsvaWZ9Cgl7aWYgJGVudHJ5LT5tYXIgIT0gTlVMTH08dGQ+eyRlbnRyeS0+bWFyfTwvdGQ+ey9pZn0KCXtpZiAkZW50cnktPmF2ciAhPSBOVUxMfTx0ZD57JGVudHJ5LT5hdnJ9PC90ZD57L2lmfQoJe2lmICRlbnRyeS0+bWFpICE9IE5VTEx9PHRkPnskZW50cnktPm1haX08L3RkPnsvaWZ9Cgl7aWYgJGVudHJ5LT5qdWluICE9IE5VTEx9PHRkPnskZW50cnktPmp1aW59PC90ZD57L2lmfQoJe2lmICRlbnRyeS0+anVpbCAhPSBOVUxMfTx0ZD57JGVudHJ5LT5qdWlsfTwvdGQ+ey9pZn0KCXsqPHRkPnskZW50cnktPnByb2dtb2lzfTwvdGQ+Kn0KCTx0ZD57JGVudHJ5LT5jbG5hdH08L3RkPgoJPHRkPnskZW50cnktPnJhbmdyZWd9PC90ZD4KCTx0ZD57JGVudHJ5LT5yYW5nZGVwfTwvdGQ+CiAgPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4Ke2Vsc2V9CjxwPkxlcyBzaXR1YXRpb25zIG1lbnN1ZWxsZXMgc29udCDDoCBqb3VyPC9wPgp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGNyZWF0ZWxpbmt9PC9wPjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/fftt.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS50b2dnbGUoKTsKICB9KTsKICB7aWYgaXNzZXQoJHRhYmxlc29ydGVyKX0KICAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4KCntpZiBpc3NldCgkZm9ybXN0YXJ0KSB9CjxmaWVsZHNldD4KICA8bGVnZW5kPkZpbHRyZXM8L2xlZ2VuZD4KICB7JGZvcm1zdGFydH0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5UeXBlIENvbXDDqXRpdGlvbjo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NvbXBldH0gPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5EYXRlOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZGF0ZX0gPC9wPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Kb3VldXIgOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcGxheWVyfSA8L3A+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0ZmlsdGVyfXskaGlkZGVufGRlZmF1bHQ6Jyd9PC9wPgogIDwvZGl2PgogIHskZm9ybWVuZH0KPC9maWVsZHNldD4Key9pZn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRyZXRyaWV2ZV9hbGxfcGFydGllc308L3A+PC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskaXRlbWNvdW50fSZuYnNwO3skaXRlbXNmb3VuZH08L3A+PC9kaXY+CntpZiAkaXRlbWNvdW50ID4gMH0KeyRmb3JtMnN0YXJ0fQo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgogIDx0cj4KCTx0aD5JZDwvdGg+Cgk8dGg+TsKwIEpvdXJuw6llPC90aD4KCTx0aD5EYXRlPC90aD4KCTx0aD5Kb3VldXI8L3RoPgoJPHRoPlZpYy9kZWY8L3RoPgoJPHRoPkFkdmVyc2FpcmU8L3RoPgoJPHRoPlBvaW50czwvdGg+Cgk8dGggY29sc3Bhbj0iMiI+QWN0aW9uczwvdGg+CiAgPHRoPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InNlbGVjdGFsbCIgbmFtZT0ic2VsZWN0YWxsIj48L3RoPgogIDwvdHI+CiA8L3RoZWFkPgogPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KICAgIDx0ZD57JGVudHJ5LT5pZH08L3RkPgoJPHRkPnskZW50cnktPm51bWpvdXJufTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZGF0ZV9ldmVudHxkYXRlX2Zvcm1hdDoiJWQvJW0ifQogICAgPHRkPnskZW50cnktPmpvdWV1cn08L3RkPgogICAgPHRkPnskZW50cnktPnZkfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+YWR2bm9tcHJlfSA8L3RkPgoJPHRkPnskZW50cnktPnBvaW50cmVzfSA8L3RkPgogICAgPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPgoJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1zZWxbXSIgdmFsdWU9InskZW50cnktPmlkfSIgY2xhc3M9InNlbGVjdCI+PC90ZD4KICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgo8IS0tIFNFTEVDVCBEUk9QRE9XTiAtLT4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij4KPGJyLz57JGFjdGlvbmRlbWFzc2V9eyRzdWJtaXRfbWFzc2FjdGlvbn0KICA8L2Rpdj4KeyRmb3JtMmVuZH0Key9pZn0K]]></data>
	</file>
	<file>
	  <filename>/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/templates/individuelles.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRyZXR1cm5saW5rfTwvcD48L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSB0YWJsZSB0YWJsZS1ib3JkZXJlZCI+CiA8dGhlYWQ+Cgk8dHI+CQoJCTx0aD5Kb3VldXI8L3RoPgoJCTx0aD5WaWM8L3RoPgoJCTx0aD5TdXI8L3RoPgoJCTx0aD5Qb2ludHM8L3RoPgogIDwvdHI+CiA8L3RoZWFkPgogPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogIHtpZiAkZW50cnktPnZpY3RvaXJlID09JzEnfTx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9IHZpYyI+e2Vsc2V9PHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30gZGVmIj57L2lmfQoJPHRkPnskZW50cnktPmRhdGVfZXZlbnR8ZGF0ZV9mb3JtYXQ6IiVkLyVtIn08L3RkPgkKICAgIDx0ZD57JGVudHJ5LT5qb3VldXJ9PC90ZD4JCiAgICA8dGQ+eyRlbnRyeS0+bm9tfSh7JGVudHJ5LT5jbGFzc2VtZW50fSk8L3RkPgogICAgPHRkPnskZW50cnktPnZpY3RvaXJlfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+cG9pbnRyZXN9PC90ZD4KCTwvdHI+CnsvZm9yZWFjaH0KIDwvdGJvZHk+CjwvdGFibGU+CihTb3VyY2UgU3BpZCkKey9pZn0KCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnsqJGNyZWF0ZWxpbmsqfTwvcD48L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/individuelles2.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskaXRlbXN8dmFyX2R1bXB9PC9wcmU+Kn0KCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskcmV0dXJubGlua308L3A+PC9kaXY+CnsqPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyIgc3R5bGU9ImZsb2F0OiByaWdodCI+eyRpbmRpdnNfY291cmFudH08L3A+PC9kaXY+Kn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWJvcmRlcmVkIj4KCTx0aGVhZD4KCQk8dHI+CgkJCTx0aD5UYWJsZWF1PC90aD4KCQkJPHRoPlJhbmc8L3RoPgoJCQk8dGg+Tm9tPC90aD4KCQkJPHRoPlBvaW50czwvdGg+CQkKCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KCTx0cj4KCQk8dGQ+eyRlbnRyeS0+bGliZWxsZX08L3RkPgoJCTx0ZD57JGVudHJ5LT5yYW5nfTwvdGQ+CgkJPHRkPnskZW50cnktPm5vbX08L3RkPgoJCTx0ZD57JGVudHJ5LT5wb2ludHN9PC90ZD4KCTwvdHI+CQkKey9mb3JlYWNofQoJPC90Ym9keT4KIDwvdGFibGU+Cgp7L2lmfQoKPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyokY3JlYXRlbGluayp9PC9wPjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/individuelles3.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskaXRlbXN8dmFyX2R1bXB9PC9wcmU+Kn0KCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskcmV0dXJubGlua308L3A+PC9kaXY+CnsqPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyIgc3R5bGU9ImZsb2F0OiByaWdodCI+eyRpbmRpdnNfY291cmFudH08L3A+PC9kaXY+Kn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4KeyppZiAkaXRlbWNvdW50ID4gMCp9Cgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogIAoJPGgzPnskZW50cnktPm5hbWV9IGR1IHskZW50cnktPmRhdGVfZXZlbnR8ZGF0ZV9mb3JtYXQ6IiVkLyVtIn08L2gzPgkKCXsqKn17aWYgJGl0ZW1zY291bnRfeyRlbnRyeS0+dmFsZXVyfSA+MCB9CiAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWJvcmRlcmVkIj4KCQk8dHI+PHRoPlRhYmxlYXU8L3RoPjx0aD5SYW5nPC90aD48dGg+Tm9tPC90aD48L3RyPgoJCXtmb3JlYWNoIGZyb209JHByb2RzX3skZW50cnktPnZhbGV1cn0gaXRlbT1kb25uZWV9CgkJeyo8cHJlPnskcHJvZHNfeyRlbnRyeS0+dmFsZXVyfXx2YXJfZHVtcH08L3ByZT4qfQk8dHI+PHRkPnskZG9ubmVlLT5saWJlbGxlfTwvdGQ+PHRkPnskZG9ubmVlLT5yYW5nfTwvdGQ+PHRkPnskZG9ubmVlLT5ub219PC90ZD48IS0tPHRkPnskZG9ubmVlLT5kZXRhaWxzfTwvdGQ+LS0+PC90cj4KCQl7L2ZvcmVhY2h9CgkJPC90YWJsZT4KCXsvaWZ9eyoqfQp7L2ZvcmVhY2h9CiAKCnsqL2lmKn0KCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnsqJGNyZWF0ZWxpbmsqfTwvcD48L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/initialisation.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRzdGVwPT0iMSJ9CgkJe2lmICRyZXVzc2l0ZSA9PUZBTFNFfQoJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCTxwIGNsYXNzPSJhbGVydCBhbGVydC1kYW5nZXIiPkxhIGNvbm5leGlvbiBhIMOpY2hvdcOpZS4KCQkJCTxvbD4KCQkJCQk8bGk+Vm9zIGlkZW50aWZpYW50cyBzb250IGVycm9uw6lzLjwvbGk+CgkJCQkJPGxpPlZvdHJlIG51bcOpcm8gZGUgc8OpcmllIG4nYSBwYXMgw6l0w6kgcmVjb25udS48L2xpPgoJCQkJPC9vbD4KCQkJPHAgY2xhc3M9Indhcm5pbmciPlNpIHZvdXMgYXZleiBkw6lqw6AgdXRpbGlzw6kgdm9zIGlkZW50aWZpYW50cyBzdXIgdW4gYXV0cmUgc3lzdMOobWUsIHZvdXMgZGV2ZXogcsOpY3Vww6lyZXIgdm90cmUgbnVtw6lybyBkZSBzw6lyaWUgdW5pcXVlLnskbGllbn08L3A+CgkJCTwvcD4KCQk8L2Rpdj4KCQl7ZWxzZWlmICRyZXVzc2l0ZSA9PVRSVUV9CgkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJPHAgY2xhc3M9InBhZ2V0ZXh0IHN1Y2Nlc3MiPkxhIEZGVFQgYSBhY2NlcHTDqWUgdm90cmUgY29ubmV4aW9uICEgVm91cyBwb3V2ZXogY29udGludWVyIGljaSA6IHskbGllbn08L3A+CgkJPC9kaXY+CgkJey9pZn0Ke2Vsc2VpZiAkc3RlcD09IjIifQoJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCTxwIGNsYXNzPSJwYWdldGV4dCBzdWNjZXNzIj5Sw6ljdXDDqXJlciBsZXMgY29tcMOpdGl0aW9ucyBkZSB6b25lIDogeyRjb21wZXRfem9uZX08L3A+CgkJPC9kaXY+CntlbHNlaWYgJHN0ZXA9PSIzIn0KCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQk8cCBjbGFzcz0icGFnZXRleHQgc3VjY2VzcyI+UsOpY3Vww6lyZXIgbGVzIGNvbXDDqXRpdGlvbnMgZGUgbGlndWUgOiB7JGNvbXBldF96b25lfTwvcD4KCQk8L2Rpdj4Ke2Vsc2VpZiAkc3RlcD09IjQifQoJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCTxwIGNsYXNzPSJwYWdldGV4dCBzdWNjZXNzIj5Sw6ljdXDDqXJlciBsZXMgY29tcMOpdGl0aW9ucyBkZSBkw6lwYXJ0ZW1lbnQgOiB7JGNvbXBldF96b25lfTwvcD4KCQk8L2Rpdj4Key9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/joueurs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS5kaWFsb2coewogICAgICBtb2RhbDogdHJ1ZSwKICAgICAgd2lkdGg6ICdhdXRvJywKICAgIH0pOwogIH0pOwogIHtpZiBpc3NldCgkdGFibGVzb3J0ZXIpfQogIGlmKCB0eXBlb2YoJC50YWJsZXNvcnRlcikgIT0gJ3VuZGVmaW5lZCcgKSAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4KeyoKPGRpdiBpZD0iZmlsdGVyX2Zvcm0iIHN0eWxlPSJkaXNwbGF5OiBub25lOyIgdGl0bGU9IkFsZXJ0ZXMgZHUgbW9kdWxlIj4KICA8dGFibGU+CiAgICA8dHI+CiAgICAgIDx0ZCBzdHlsZT0idmVydGljYWwtYWxpZ246IHRvcDsiPgogICAgICAgIHtpZiAkYWxlcnRDb21wdGUgPjB9CgkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICAgIAk8cCBjbGFzcz0icGFnZXRleHQiPgoJCQlBdHRlbnRpb24gISEgVm91cyBkZXZleiByZW5zZWlnbmVyIHZvcyBwYXJhbcOodHJlcyBkYW5zIGwnb25nbGV0ICJDb21wdGUiCgkJCTwvcD4KICAgICAgICA8L2Rpdj4KCQl7L2lmfQoJCQoJCXtpZiAkYWxlcnRDb25maWcgPjB9CgkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICAgIAk8cCBjbGFzcz0icGFnZXRleHQiPgoJCQlBdHRlbnRpb24gISEgVm91cyBkZXZleiByZW5zZWlnbmVyIHZvcyBwYXJhbcOodHJlcyBkYW5zIGwnb25nbGV0ICJDb25maWd1cmF0aW9uIgoJCQk8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgey9pZn0KCgkJe2lmICRuYl9kZXAgID09IDB9CgkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICAgIAk8cCBjbGFzcz0icGFnZXRleHQiPgoJCQl7JGNvbXBldF9kZXB9CgkJCTwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICB7L2lmfQoKICAgICAgICAKICAgICAgPC90ZD4KCiAgICA8L3RyPgogIDwvdGFibGU+CiAKPC9kaXY+Cgp7aWYgJGFsZXJ0Q29tcHRlID4wIHx8ICRhbGVydENvbmZpZyA+MH0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPgogIDxhIGlkPSJ0b2dnbGVfZmlsdGVyIj5PdXZyaXIgbGVzIGFsZXJ0ZXMgZHUgbW9kdWxlPC9hPgo8L2Rpdj4Key9pZn0KKn0KeyogbGVzIG1lc3NhZ2VzIGNpLWRlc3NvdXMgcHJvdmllbm5lbnQgZGUgbGEgcGFnZSBhY3Rpb24udXBkYXRlb3B0aW9ucy5waHAqfQp7aWYgJG1zZyA9PSdGdWxsJ30KPHA+Q2xpcXVleiBjaS1hcHLDqHMgcG91ciBmaW5hbGlzZXIgbGUgY2hhbmdlbWVudCBkZSBzYWlzb24geyRkZWxldGVfYWxsfTwvcD4Key9pZn0KCgoKPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfSZuYnNwO3wmbmJzcDt7JHJldHJpZXZlX3VzZXJzfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQoJeyRmb3JtMnN0YXJ0fQoJPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KCSA8dGhlYWQ+CgkJPHRyPgoJCQk8dGg+eyRpZH08L3RoPgoJCQk8dGg+Sm91ZXVyPC90aD4KCQkJPHRoPkxpY2VuY2U8L3RoPgoJCQk8dGg+QWN0aWY8L3RoPgoJCQk8dGg+U2V4ZTwvdGg+CgkJCTx0aD5EYXRlIG5haXNzYW5jZTwvdGg+CgkJCTx0aCBjb2xzcGFuPScyJz5BY3Rpb25zPC90aD4KCQkJPHRoPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InNlbGVjdGFsbCIgbmFtZT0ic2VsZWN0YWxsIj48L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJIDx0Ym9keT4KCXtmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CgkgIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KCQk8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KCQk8dGQ+eyRlbnRyeS0+am91ZXVyfTwvdGQ+CgkJPHRkPnskZW50cnktPmxpY2VuY2V9PC90ZD4KCSAgICA8dGR7aWYgJGVudHJ5LT5hY3RpZiA9PSIwIn0gY2xhc3M9Indhcm5pbmcie2Vsc2V9IGNsYXNzPSJpbmZvInsvaWZ9PnskZW50cnktPmFjdGlmfTwvdGQ+CgkJPHRkPnskZW50cnktPnNleGV9PC90ZD4KCQk8dGQ+eyRlbnRyeS0+YmlydGhkYXl9PC90ZD4KCQk8dGQ+eyRlbnRyeS0+ZG9lZGl0fTwvdGQ+CgkJPHRkPnskZW50cnktPnZpZXdfY29udGFjdHN9PC90ZD4KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfXNlbFtdIiB2YWx1ZT0ieyRlbnRyeS0+bGljZW5jZX0iIGNsYXNzPSJzZWxlY3QiPjwvdGQ+CgkgICAgPC90cj4KCXsvZm9yZWFjaH0KCSA8L3Rib2R5PgoJPC90YWJsZT4KCTwhLS0gU0VMRUNUIERST1BET1dOIC0tPgoJPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij4KCTxici8+eyRhY3Rpb25kZW1hc3NlfXskc3VibWl0X21hc3NhY3Rpb259CgkgIDwvZGl2PgoJeyRmb3JtMmVuZH0Key9pZn0KCQo=]]></data>
	</file>
	<file>
	  <filename>/templates/journal.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS50b2dnbGUoKTsKICB9KTsKICB7aWYgaXNzZXQoJHRhYmxlc29ydGVyKX0KICAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4KCntpZiBpc3NldCgkZm9ybXN0YXJ0KSB9CjxmaWVsZHNldD4KICA8bGVnZW5kPkZpbHRyZXM8L2xlZ2VuZD4KICB7JGZvcm1zdGFydH0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPCEtLTxwIGNsYXNzPSJwYWdldGV4dCI+VHlwZSBDb21ww6l0aXRpb246PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9jb21wZXR9IDwvcD4tLT4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+RGF0ZTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2RhdGV9IDwvcD4KCTxwIGNsYXNzPSJwYWdldGV4dCI+U3RhdHV0OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc3RhdHVzfSA8L3A+Cgk8IS0tPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Kb3VldXIgOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcGxheWVyfSA8L3A+LS0+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0ZmlsdGVyfXskaGlkZGVufGRlZmF1bHQ6Jyd9PC9wPgogIDwvZGl2PgogIHskZm9ybWVuZH0KPC9maWVsZHNldD4Key9pZn0KeyokdG90YWxjb3VudCp9CntpZiBpc3NldCgkcGFnaW5hdGlvbil9PGRpdiBjbGFzcz0iZ3JpZF82IiBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7Ij57JHBhZ2luYXRpb259PC9kaXY+ey9pZn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwICYmIGlzX2FycmF5KCRpdGVtcykgJiYgY291bnQoJGl0ZW1zKT4wfQp7JGZvcm0yc3RhcnR9Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiA8dGhlYWQ+Cgk8dHI+CgkJPHRoPklkPC90aD4KCQk8dGg+RGF0ZSBkZSBtaXNlIMOgIGpvdXI8L3RoPgoJCTx0aD5kZXNpZ25hdGlvbjwvdGg+CgkJPCEtLTx0aCBjb2xzcGFuPSIyIj5BY3Rpb25zPC90aD4tLT4KCQk8dGg+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0ic2VsZWN0YWxsIiBuYW1lPSJzZWxlY3RhbGwiLz48L3RoPgogICAgPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgPHRkPnskZW50cnktPmlkfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZGF0ZWNyZWF0ZWR8ZGF0ZV9mb3JtYXQ6IiVBICVlICVCICVZIMOgICVIOiVNOiVTIn08L3RkPgogICAgPHRkPnskZW50cnktPmRlc2lnbmF0aW9ufTwvdGQ+Cgk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfXNlbFtdIiB2YWx1ZT0ieyRlbnRyeS0+aWR9IiBjbGFzcz0ic2VsZWN0Ij48L3RkPgoJPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4Key9pZn0KPGRpdiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogbGVmdDsiPgoJPHAgY2xhc3M9InBhZ2VvcHRpb25zIj57KiRhZGRsaW5rKn08L3A+CjwvZGl2Pgp7aWYgJGl0ZW1jb3VudCA+IDB9CiAgPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogcmlnaHQ7IHRleHQtYWxpZ246IHJpZ2h0OyI+CiAgICB7JHN1Ym1pdF9tYXNzZGVsZXRlfQogIDwvZGl2Pgp7L2lmfQo8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8L2Rpdj4KeyRmb3JtMmVuZH0KCnsqZ2V0X3RlbXBsYXRlX3ZhcnMqfQoKCgoKCg==]]></data>
	</file>
	<file>
	  <filename>/templates/list_classement.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLQp7aWYgaXNzZXQoJGZvcm1zdGFydCkgfQo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD5GaWx0cmVzPC9sZWdlbmQ+CiAgeyRmb3Jtc3RhcnR9CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+SWQ6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+Tm9tIDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdG91cn06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90b3VyfSA8L3A+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2VxdWlwZX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9lcXVpcGV9IDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXRmaWx0ZXJ9eyRoaWRkZW58ZGVmYXVsdDonJ308L3A+CiAgPC9kaXY+CiAgeyRmb3JtZW5kfQo8L2ZpZWxkc2V0Pgp7L2lmfQotLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS50b2dnbGUoKTsKICB9KTsKICB7aWYgaXNzZXQoJHRhYmxlc29ydGVyKX0KICAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRyZXR1cm5saW5rfTwvcD48L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4KCntpZiAkaXRlbWNvdW50ID4gMH0KeyRmb3JtMnN0YXJ0fQo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgogIDx0cj4JCgk8dGg+VGFibGVhdTwvdGg+Cgk8dGg+Tml2ZWF1PC90aD4KCTx0aD5WYWlucXVldXI8L3RoPgoJPHRoPlBlcmRhbnQ8L3RoPgoJPHRoIGNvbHNwYW49IjIiPkFjdGlvbnM8L3RoPgoJPHRoPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InNlbGVjdGFsbCIgbmFtZT0ic2VsZWN0YWxsIj48L3RoPgogIDwvdHI+CiA8L3RoZWFkPgogPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KCQk8dGQ+eyRlbnRyeS0+dGFibGVhdX08L3RkPgogICAJCTx0ZD57JGVudHJ5LT5yYW5nfTwvdGQ+CgkJPHRkPnskZW50cnktPm5vbX08L3RkPgoJCTx0ZD57JGVudHJ5LT5tb25fY2x1Yn08L3RkPgoJCXtpZiAkZW50cnktPm1vbl9jbHViID09ICcxJ308dGQgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6Z3JlZW4iPnskZW50cnktPmNsdWJ9PC90ZD57ZWxzZX08dGQ+eyRlbnRyeS0+Y2x1Yn08L3RkPnsvaWZ9CgkJPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+CgkJPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfXNlbFtdIiB2YWx1ZT0ieyRlbnRyeS0+dG91cl9pZH0iIGNsYXNzPSJzZWxlY3QiPjwvdGQ+CgogIDwvdHI+CnsvZm9yZWFjaH0KIDwvdGJvZHk+CjwvdGFibGU+CjwhLS0gU0VMRUNUIERST1BET1dOIC0tPgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyIgc3R5bGU9ImZsb2F0OiByaWdodDsiPgo8YnIvPnskYWN0aW9uZGVtYXNzZX17JHN1Ym1pdF9tYXNzYWN0aW9ufQogIDwvZGl2Pgp7JGZvcm0yZW5kfQp7ZWxzZX0KeyRyZWN1cF9jbGFzc2VtZW50fQp7L2lmfQoKCg==]]></data>
	</file>
	<file>
	  <filename>/templates/list_compet.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CTxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMgYWxlcnQiPnskTmF0X2luZGl2c30gLSB7JE5hdF9lcXVpcGVzfSAtIHskem9uZV9pbmRpdnN9IC0geyR6b25lX2VxdWlwZXN9IC0geyRsaWd1ZV9pbmRpdnN9IC0geyRsaWd1ZV9lcXVpcGVzfSAtIHskZGVwX2luZGl2c30gLSB7JGRlcF9lcXVpcGVzfXsqJGNyZWF0ZWxpbmsqfTwvcD48L2Rpdj57Kn17aWYgaXNzZXQoJGZvcm1zdGFydCkgfQo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD5GaWx0cmVzPC9sZWdlbmQ+CiAgeyRmb3Jtc3RhcnR9CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+VHlwZSBDb21ww6l0aXRpb246PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9jb21wZXR9IDwvcD4KCTxwIGNsYXNzPSJwYWdldGV4dCI+SW5kaXZzIG91IHBhciDDqXF1aXBlczo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2luZGl2c30gPC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXRmaWx0ZXJ9eyRoaWRkZW58ZGVmYXVsdDonJ308L3A+CiAgPC9kaXY+CiAgeyRmb3JtZW5kfQo8L2ZpZWxkc2V0Pgp7L2lmfSp9PGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgogIDx0cj4JCiAgCTx0aD57JGlkfTwvdGg+CiAgCTx0aD5Ob208L3RoPgogIAk8dGg+Q29lZmZpY2llbnQ8L3RoPgoJPHRoPkluZGl2czwvdGg+Cgk8dGg+RWNoZWxvbjwvdGg+Cgk8dGg+VGFnIHBvdXIgYWZmaWNoYWdlPC90aD4KCTx0aCBjb2xzcGFuPSIzIj5Sw6ljdXDDqXJlciBsZXMgZGl2aXNpb25zPC90aD4KICA8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+CiAgICA8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5uYW1lfSAoeyRlbnRyeS0+aWRlcHJldXZlfSk8L3RkPgogICAJPHRkPnskZW50cnktPmNvZWZmaWNpZW50fTwvdGQ+Cgk8dGQ+e2lmICRlbnRyeS0+aW5kaXZzID09JzEnfU91aXtlbHNlfU5vbnsvaWZ9PC90ZD4KCTx0ZD57JGVudHJ5LT5vcmdhfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+dGFnfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+bmF0aW99LXskZW50cnktPnpvbmV9LXskZW50cnktPmxpZ3VlfS17JGVudHJ5LT5kZXB9PC90ZD4KCTx0ZD57JGVudHJ5LT5lZGl0bGlua308L3RkPgoJPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4KICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57KiRjcmVhdGVsaW5rKn08L3A+PC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/list_compet_indivs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRkaXZpc2lvbnNfYWxsfTwvcD48L2Rpdj4KCXtpZiBpc3NldCgkZm9ybXN0YXJ0KSB9CjxmaWVsZHNldD4KICA8bGVnZW5kPkZpbHRyZXM8L2xlZ2VuZD4KICB7JGZvcm1zdGFydH0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5UeXBlIENvbXDDqXRpdGlvbjo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NvbXBldH0gPC9wPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5JbmRpdnMgb3UgcGFyIMOpcXVpcGVzOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaW5kaXZzfSA8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdGZpbHRlcn17JGhpZGRlbnxkZWZhdWx0OicnfTwvcD4KICA8L2Rpdj4KICB7JGZvcm1lbmR9CjwvZmllbGRzZXQ+CnsvaWZ9PGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgogIDx0cj4JCiAgCTx0aD57JGlkfTwvdGg+CiAgCTx0aD5Ob208L3RoPgogIAk8dGg+Q29lZmZpY2llbnQ8L3RoPgoJPHRoPkluZGl2czwvdGg+Cgk8dGg+RWNoZWxvbjwvdGg+Cgk8dGg+VGFnIHBvdXIgYWZmaWNoYWdlPC90aD4KCTx0aCBjb2xzcGFuPSIzIj5BY2PDqWRlciBhdXggZGl2aXNpb25zPC90aD4KICA8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+CiAgICA8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5uYW1lfSAoeyRlbnRyeS0+aWRlcHJldXZlfSk8L3RkPgogICAJPHRkPnskZW50cnktPmNvZWZmaWNpZW50fTwvdGQ+Cgk8dGQ+e2lmICRlbnRyeS0+aW5kaXZzID09JzEnfU91aXtlbHNlfU5vbnsvaWZ9PC90ZD4KCTx0ZD57JGVudHJ5LT5vcmdhfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+dGFnfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+bmF0aW99LXskZW50cnktPnpvbmV9LXskZW50cnktPmxpZ3VlfS17JGVudHJ5LT5kZXB9PC90ZD4KCTx0ZD57JGVudHJ5LT5lZGl0bGlua308L3RkPgoJPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4KICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGNyZWF0ZWxpbmt9PC9wPjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/list_parties.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLQp7aWYgaXNzZXQoJGZvcm1zdGFydCkgfQo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD5GaWx0cmVzPC9sZWdlbmQ+CiAgeyRmb3Jtc3RhcnR9CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+SWQ6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+Tm9tIDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdG91cn06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90b3VyfSA8L3A+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2VxdWlwZX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9lcXVpcGV9IDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXRmaWx0ZXJ9eyRoaWRkZW58ZGVmYXVsdDonJ308L3A+CiAgPC9kaXY+CiAgeyRmb3JtZW5kfQo8L2ZpZWxkc2V0Pgp7L2lmfQotLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS50b2dnbGUoKTsKICB9KTsKICB7aWYgaXNzZXQoJHRhYmxlc29ydGVyKX0KICAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRsaWVuX3JldG91cn08L3A+PC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskaXRlbWNvdW50fSZuYnNwO3skaXRlbXNmb3VuZH08L3A+PC9kaXY+Cgp7aWYgJGl0ZW1jb3VudCA+IDB9CnskZm9ybTJzdGFydH0KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KIDx0aGVhZD4KICA8dHI+CQoJPHRoPlRhYmxlYXU8L3RoPgoJPHRoPk5pdmVhdTwvdGg+Cgk8dGg+VmFpbnF1ZXVyPC90aD4KCTx0aD5QZXJkYW50PC90aD4KCTx0aCBjb2xzcGFuPSIyIj5BY3Rpb25zPC90aD4KCTx0aD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJzZWxlY3RhbGwiIG5hbWU9InNlbGVjdGFsbCI+PC90aD4KICA8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+CgkJPHRkPnskZW50cnktPnRhYmxlYXV9PC90ZD4KICAgCQk8dGQ+eyRlbnRyeS0+bGliZWxsZX08L3RkPgoJCTx0ZD57JGVudHJ5LT52YWlufTwvdGQ+CgkJPHRkPnskZW50cnktPnBlcmR9PC90ZD4KCQk8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KCQk8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPgoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9c2VsW10iIHZhbHVlPSJ7JGVudHJ5LT50b3VyX2lkfSIgY2xhc3M9InNlbGVjdCI+PC90ZD4KCiAgPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4KPCEtLSBTRUxFQ1QgRFJPUERPV04gLS0+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyI+Cjxici8+eyRhY3Rpb25kZW1hc3NlfXskc3VibWl0X21hc3NhY3Rpb259CiAgPC9kaXY+CnskZm9ybTJlbmR9CntlbHNlfQo8cCBjbGFzcz0id2FybmluZyI+eyRyZWN1cF9wYXJ0aWVzfTwvcD4Key9pZn0KCgo=]]></data>
	</file>
	<file>
	  <filename>/templates/list_poules.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLQp7aWYgaXNzZXQoJGZvcm1zdGFydCkgfQo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD5GaWx0cmVzPC9sZWdlbmQ+CiAgeyRmb3Jtc3RhcnR9CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+SWQ6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+Tm9tIDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdG91cn06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90b3VyfSA8L3A+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2VxdWlwZX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9lcXVpcGV9IDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXRmaWx0ZXJ9eyRoaWRkZW58ZGVmYXVsdDonJ308L3A+CiAgPC9kaXY+CiAgeyRmb3JtZW5kfQo8L2ZpZWxkc2V0Pgp7L2lmfQotLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS50b2dnbGUoKTsKICB9KTsKICB7aWYgaXNzZXQoJHRhYmxlc29ydGVyKX0KICAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4Ke2lmIGlzc2V0KCRmb3Jtc3RhcnQpIH0KPGZpZWxkc2V0PgogIDxsZWdlbmQ+RmlsdHJlczwvbGVnZW5kPgogIHskZm9ybXN0YXJ0fQogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPlRvdXI6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90b3VyfSA8L3A+Cgk8cCBjbGFzcz0icGFnZXRleHQiPk1vaXM6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9tb2lzfSA8L3A+CgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXRmaWx0ZXJ9eyRoaWRkZW58ZGVmYXVsdDonJ308L3A+CiAgPC9kaXY+CiAgeyRmb3JtZW5kfQo8L2ZpZWxkc2V0Pgp7L2lmfQp7JHJldHVybmxpbmt9CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskaXRlbWNvdW50fSZuYnNwO3skaXRlbXNmb3VuZH08L3A+PHA+eyRyZWZyZXNofTwvcD48L2Rpdj4KCntpZiAkaXRlbWNvdW50ID4gMH0KeyRmb3JtMnN0YXJ0fQo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgogIDx0cj4JCgk8dGg+RXByZXV2ZSAoZGl2aXNpb24pPC90aD4KCTx0aD5UYWJsZWF1PC90aD4KCTx0aD5Ub3VyPC90aD4KCTx0aD5EYXRlPC90aD4KCTx0aCBjb2xzcGFuPSIzIj5BY3Rpb25zPC90aD4KCTx0aD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJzZWxlY3RhbGwiIG5hbWU9InNlbGVjdGFsbCI+PC90aD4KICA8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+CiAgIAkJPHRkPnskZW50cnktPmxpYmVsbGV9ICAoeyRlbnRyeS0+aWRkaXZpc2lvbn0pPC90ZD4KCQk8dGQ+eyRlbnRyeS0+dGFibGVhdX08L3RkPgoJCTx0ZD57JGVudHJ5LT50b3VyfTwvdGQ+CgkJPHRkPnskZW50cnktPmRhdGVfZGVidXR9LT57JGVudHJ5LT5kYXRlX2Zpbn08L3RkPgoJCTx0ZD57JGVudHJ5LT51cGxvYWRlZF9wYXJ0aWVzfXskZW50cnktPnBhcnRpZX0gLSB7JGVudHJ5LT51cGxvYWRlZF9jbGFzc2VtZW50fXskZW50cnktPmNsYXNzZW1lbnR9PC90ZD4KCQk8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KCQk8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPgoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9c2VsW10iIHZhbHVlPSJ7JGVudHJ5LT50YWJsZWF1fSIgY2xhc3M9InNlbGVjdCI+PC90ZD4KCQk8dGQ+CiAgPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4KPCEtLSBTRUxFQ1QgRFJPUERPV04gLS0+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyI+Cjxici8+eyRhY3Rpb25kZW1hc3NlfXskc3VibWl0X21hc3NhY3Rpb259CiAgPC9kaXY+CnskZm9ybTJlbmR9CntlbHNlfQo8cCBjbGFzcz0id2FybmluZyI+UsOpY3Vww6lyZXIgbGVzIHRvdXJzID8geyRyZWN1cF90b3Vyc308L3A+CnsvaWZ9Cgo=]]></data>
	</file>
	<file>
	  <filename>/templates/panel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLQp7aWYgaXNzZXQoJGZvcm1zdGFydCkgfQo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD5GaWx0cmVzPC9sZWdlbmQ+CiAgeyRmb3Jtc3RhcnR9CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+SWQ6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+Tm9tIDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdG91cn06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90b3VyfSA8L3A+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2VxdWlwZX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9lcXVpcGV9IDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXRmaWx0ZXJ9eyRoaWRkZW58ZGVmYXVsdDonJ308L3A+CiAgPC9kaXY+CiAgeyRmb3JtZW5kfQo8L2ZpZWxkc2V0Pgp7L2lmfQotLT4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgogIDx0cj4JCiAgCTx0aD57JGlkfTwvdGg+CiAgCTx0aD5Ob208L3RoPgoJPHRoPlN0YXR1dDwvdGg+Cgk8dGggY29sc3Bhbj0iMyI+UsOpY3Vww6lyZXIgbGVzIGRpdmlzaW9uczwvdGg+CiAgPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgPHRkPnskZW50cnktPmlkfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+bmFtZX08L3RkPgoJPHRkPnskZW50cnktPnN0YXR1c308L3RkPgoJPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPgogIDwvdHI+CnsvZm9yZWFjaH0KIDwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskY3JlYXRlbGlua308L3A+PC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/participe.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHByZT57KiRyb3dhcnJheXx2YXJfZHVtcCp9PC9wcmU+CnsqKn08ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgp7JGZvcm1zdGFydH0KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPlR5cGUgQ29tcMOpdGl0aW9uOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdHlwZV9jb21wZXR9PC9wPgogIDwvZGl2Pgp7Zm9yZWFjaCBmcm9tPSRyb3dhcnJheSBrZXk9a2V5IGl0ZW09ZW50cnl9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giICBuYW1lPSJtMV9saWNlbmNlW3ska2V5fV0iIGlkPSJtMV9saWNlbmNlW3ska2V5fV0iIHtpZiAkZW50cnlbJ3BhcnRpY2lwZSddID09MX1jaGVja2VkPSdjaGVja2VkJyB7L2lmfSB2YWx1ZSA9ICcxJz57JGVudHJ5WyduYW1lJ119PC9wPgogIDwvZGl2Pgp7L2ZvcmVhY2h9CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9eyRjYW5jZWx9PC9wPgogIDwvZGl2Pgp7JGZvcm1lbmR9CjwvZGl2Pgp7Kip9]]></data>
	</file>
	<file>
	  <filename>/templates/poulesRencontres.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS50b2dnbGUoKTsKICB9KTsKICB7aWYgaXNzZXQoJHRhYmxlc29ydGVyKX0KICAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4KeyoqfQoJe2lmIGlzc2V0KCRmb3Jtc3RhcnQpIH0KPGZpZWxkc2V0PgogIDxsZWdlbmQ+RmlsdHJlczwvbGVnZW5kPgogIHskZm9ybXN0YXJ0fQogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CnsqCTxwIGNsYXNzPSJwYWdldGV4dCI+VHlwZSBDb21ww6l0aXRpb246PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9jb21wZXR9IDwvcD4qfQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Qb3VsZTwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdG91cn0gPC9wPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Nb24gY2x1YiB1bmlxdWVtZW50OjwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfY2x1Yl91bmlxdWVtZW50fSA8L3A+Cgk8cCBjbGFzcz0icGFnZXRleHQiPkTDqWrDoCBqb3XDqXMgdW5pcXVlbWVudDo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2RlamFfam91ZXNfdW5pcXVlbWVudH0gPC9wPgp7Kgk8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2VxdWlwZX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9lcXVpcGV9IDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPip9CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdGZpbHRlcn17JGhpZGRlbnxkZWZhdWx0OicnfTwvcD4KICA8L2Rpdj4KICB7JGZvcm1lbmR9CjwvZmllbGRzZXQ+CnsvaWZ9Cgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGNyZWF0ZWxpbmt9PC9wPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGl0ZW1jb3VudH0mbmJzcDt7JGl0ZW1zZm91bmR9PC9wPjwvZGl2Pgp7aWYgJGl0ZW1jb3VudCA+IDB9Cgp7JGZvcm0yc3RhcnR9Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiA8dGhlYWQ+CiAgPHRyPgkKICA8dGg+SWQ8L3RoPgogIDx0aD5Qb3VsZTwvdGg+CiAgPHRoPkVxdWlwZSBBPC90aD4KICA8dGggY29sc3Bhbj0iMiI+U2NvcmU8L3RoPgogIDx0aD5FcXVpcGUgQjwvdGg+Cjx0aCBjb2xzcGFuPSIzIj5BY3Rpb25zPC90aD4KPHRoPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InNlbGVjdGFsbCIgbmFtZT0ic2VsZWN0YWxsIi8+PC90aD4JCiAKICA8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+CiAgICA8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5saWJlbGxlfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZXF1YX08L3RkPgogICAgPHRkPnskZW50cnktPnNjb3JlYX08L3RkPgoJPHRkPnskZW50cnktPnNjb3JlYn08L3RkPgoJPHRkPnskZW50cnktPmVxdWJ9PC90ZD4KICAgPHRkPnskZW50cnktPnJldHJpZXZlX2RldGFpbHN9PC90ZD4KCTx0ZD57JGVudHJ5LT5kaXNwbGF5fTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPgoJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1zZWxbXSIgdmFsdWU9InskZW50cnktPmlkfSIgY2xhc3M9InNlbGVjdCI+PC90ZD4KICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgo8IS0tIFNFTEVDVCBEUk9QRE9XTiAtLT4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij4KPGJyLz57JGFjdGlvbmRlbWFzc2V9eyRzdWJtaXRfbWFzc2FjdGlvbn0KICA8L2Rpdj4KeyRmb3JtMmVuZH0Key9pZn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRjcmVhdGVsaW5rfTwvcD48L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/recupJoueurs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eypkZWJ1Zyp9CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLy88IVtDREFUQVsKJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAkKCcjc2VsZWN0YWxsJykuY2xpY2soZnVuY3Rpb24oKXsKICAgIHZhciB2ID0gJCh0aGlzKS5hdHRyKCdjaGVja2VkJyk7CiAgICBpZiggdiA9PSAnY2hlY2tlZCcgKSB7CiAgICAgICQoJy5zZWxlY3QnKS5hdHRyKCdjaGVja2VkJywnY2hlY2tlZCcpOwogICAgfSBlbHNlIHsKICAgICAgJCgnLnNlbGVjdCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICAgIH0KICB9KTsKICAkKCcuc2VsZWN0JykuY2xpY2soZnVuY3Rpb24oKXsKICAgICQoJyNzZWxlY3RhbGwnKS5yZW1vdmVBdHRyKCdjaGVja2VkJyk7CiAgfSk7CiAgJCgnI3RvZ2dsZV9maWx0ZXInKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI2ZpbHRlcl9mb3JtJykudG9nZ2xlKCk7CiAgfSk7CiAge2lmIGlzc2V0KCR0YWJsZXNvcnRlcil9CiAgJCgnI2FydGljbGVsaXN0JykudGFibGVzb3J0ZXIoeyBzb3J0TGlzdDp7JHRhYmxlc29ydGVyfSB9KTsKICB7L2lmfQp9KTsKLy9dXT4KPC9zY3JpcHQ+CntpZiBpc3NldCgkbWVzc2FnZSl9CiAge2lmICRlcnJvciAhPSAnJ30KICAgIDxwPjxmb250IGNvbG9yPSJyZWQiPnskbWVzc2FnZX08L2ZvbnQ+PC9wPgogIHtlbHNlfQogICAgPHA+eyRtZXNzYWdlfTwvcD4KICB7L2lmfQp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JHJldHJpZXZlX3VzZXJzfSB8IHskcmV0cmlldmVfdGVhbXN9IHwgeyRyZXRyaWV2ZV90ZWFtc19hdXRyZXN9IHwgeyRyZXRyaWV2ZV9hbGxfcGFydGllc30gfCB7JHJldHJpZXZlX2FsbF9zcGlkfSB8IHskcmV0cmlldmVfZGV0YWlsc19yZW5jb250cmVzfTwvcD48L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQp7JGZvcm0yc3RhcnR9Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiA8dGhlYWQ+CiAgPHRyPgkKICA8dGg+SWQ8L3RoPgogIDx0aD5EYXRlIGRlIG1pc2Ugw6Agam91cjwvdGg+CiAgPHRoPmRlc2lnbmF0aW9uPC90aD4KICA8dGggY29sc3Bhbj0iMyI+QWN0aW9uczwvdGg+Cgk8dGg+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0ic2VsZWN0YWxsIiBuYW1lPSJzZWxlY3RhbGwiLz48L3RoPgogICAgPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgPHRkPnskZW50cnktPmlkfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZGF0ZW1han08L3RkPgogICAgPHRkPnskZW50cnktPmRlc2lnbmF0aW9ufTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KCTx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+c2VsZWN0fTwvdGQ+CiAgICAKICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgoKICA8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyIgc3R5bGU9ImZsb2F0OiByaWdodDsiPgp7aWYgaXNzZXQoJHN1Ym1pdF9tYXNzZGVsZXRlKX08YnIvPnskc3VibWl0X21hc3NkZWxldGV9ey9pZn0KICA8L2Rpdj4KeyRmb3JtMmVuZH0Key9pZn0KCgoKCgoK]]></data>
	</file>
	<file>
	  <filename>/templates/recupparties.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS50b2dnbGUoKTsKICB9KTsKICB7aWYgaXNzZXQoJHRhYmxlc29ydGVyKX0KICAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4KPGgyPkV0YXQgZGVzIHLDqWN1cMOpcmF0aW9ucyBkZXMgam91ZXVycyBhY3RpZnM8L2gyPgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGl0ZW1jb3VudH0mbmJzcDt7JGl0ZW1zZm91bmR9ICB7KiRiYXJjaGFydHMqfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQp7JGZvcm0yc3RhcnR9Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiA8dGhlYWQ+Cgk8dHI+CgkJPHRoPklkPC90aD4KCQk8dGg+Sm91ZXVyPC90aD4KCQk8dGg+RGVybmnDqHJlIFNpdHVhdGlvbjwvdGg+CgkJPHRoPlBhcnRpZXMgRkZUVDwvdGg+CgkJPHRoPlBhcnRpZXMgU3BpZDwvdGg+CgkJPHRoIGNvbHNwYW49JzMnPkFjdGlvbnM8L3RoPgoJCTx0aD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJzZWxlY3RhbGwiIG5hbWU9InNlbGVjdGFsbCI+PC90aD4KCTwvdHI+CiA8L3RoZWFkPgogPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KCTx0ZD57JGVudHJ5LT5pZH08L3RkPgoJPHRkPnskZW50cnktPmpvdWV1cn0gKHskZW50cnktPmxpY2VuY2V9KTwvdGQ+Cgk8dGQ+e2lmICRlbnRyeS0+c2l0X21lbnMgPT0nJ317JGVudHJ5LT5wdXNoX3BsYXllcn17ZWxzZX17JGVudHJ5LT5zaXRfbWVuc317L2lmfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZmZ0dH08YnIgLz4obWFqIGxlIHskZW50cnktPm1hal9mZnR0fGRhdGVfZm9ybWF0OiIlQSAlZSAlQiJ9KTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+c3BpZH0veyRlbnRyeS0+c3BpZF9lcnJvcnN9e2lmICRlbnRyeS0+c3BpZF9lcnJvcnMgPjB9IHskYXR0ZW50aW9uX2ltZ317L2lmfTxiciAvPihtYWogbGUgeyRlbnRyeS0+bWFqX3NwaWR8ZGF0ZV9mb3JtYXQ6IiVBICVlICVCIn0pPC90ZD4KICAgIDx0ZD57JGVudHJ5LT5zaXRtZW5zbGlua308L3RkPgoJPHRkPnskZW50cnktPmdldHBhcnRpZXNsaW5rfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+Z2V0cGFydGllc3NwaWR9PC90ZD4KCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9c2VsW10iIHZhbHVlPSJ7JGVudHJ5LT5saWNlbmNlfSIgY2xhc3M9InNlbGVjdCI+PC90ZD4KICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgo8IS0tIFNFTEVDVCBEUk9QRE9XTiAtLT4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij4KPGJyLz57JGFjdGlvbmRlbWFzc2V9eyRzdWJtaXRfbWFzc2FjdGlvbn0KICA8L2Rpdj4KeyRmb3JtMmVuZH0Key9pZn0K]]></data>
	</file>
	<file>
	  <filename>/templates/resultats.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskaXRlbXN8dmFyX2R1bXB9PC9wcmU+Kn0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS50b2dnbGUoKTsKICB9KTsKICB7aWYgaXNzZXQoJHRhYmxlc29ydGVyKX0KICAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIHN0eWxlPSJ3aWR0aDogMTAwJSI+PHNwYW4gc3R5bGU9InRleHQtYWxpZ246IGxlZnQiPnskcmV0dXJubGlua308L3NwYW4+eyo8c3BhbiBzdHlsZT0iZmxvYXQ6cmlnaHQiPiAtIHskYWxsX3Jlc3VsdHN9PC9zcGFuPip9PC9wPjwvZGl2Pgp7aWYgJGl0ZW1jb3VudDM+MH0KPHRhYmxlPgoJPHRib2R5PgoJCTx0cj4KCQkJe2ZvcmVhY2ggZnJvbT0kaXRlbXMzIGl0ZW09ZW50cnl9CgkJCQk8dGQ+eyRlbnRyeS0+bGllbl9uYXZ9IC0gPC90ZD4KCQkJey9mb3JlYWNofQoJCTwvdHI+Cgk8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQp7YXNzaWduIHZhcj1jb21wdGV1ciB2YWx1ZSA9IDB9Cgo8cCBzdHlsZT0id2lkdGg6IDEwMCUiPjxzcGFuIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0Ij48L3NwYW4+PHNwYW4gc3R5bGU9ImZsb2F0OnJpZ2h0Ij57JHJlZnJlc2hfY2xhc3N9IC0geyRhbGxfcmVzdWx0c308L3NwYW4+PC9wPgp7aWYgJGl0ZW1jb3VudDIgPiAwfQo8aDM+Q2xhc3NlbWVudCBnw6luw6lyYWwge2lmIGlzc2V0KCRsaWJlcXVpcGUpfSBlbiB7JGxpYmVxdWlwZX17L2lmfTwvaDM+Cgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJ0YWJsZSBwYWdldGFibGUiPgogPHRoZWFkPgoJPHRyPgoJCTx0aD5DbHQ8L3RoPgoJCTx0aD5FcXVpcGU8L3RoPgoJCTx0aD5Kb3XDqXM8L3RoPgoJCTx0aD5QdHM8L3RoPgoJPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zMiBpdGVtPWVudHJ5fQogIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KCTx0ZD57JGVudHJ5LT5jbHR9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5lcXVpcGV9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5qb3VlfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+cHRzfTwvdGQ+CiAgICAKICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgp7ZWxzZX0KPHAgY2xhc3M9Indhcm5pbmciPnskcmVmcmVzaF9jbGFzc308L3A+CnsvaWZ9CntpZiAkaXRlbWNvdW50PjB9CjxoMz5MZXMgcmVuY29udHJlczwvaDM+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CnsqPHA+PHByZT57JHByb2RzX3skY29tcHRldXIrK318dmFyX2R1bXB9PC9wcmU+PC9wPip9CgoJCgkKCXskZm9ybTJzdGFydH0KCTxoND57JGVudHJ5LT5kYXRlfGRhdGVfZm9ybWF0OiIlZC8lbS8lWSJ9IHskZW50cnktPmNvbXBldH08L2g0PgoJCgkKCQk8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUgdGFibGUiPgoJCQk8dGhlYWQ+CgkJCQk8dHI+PHRoPkVxdWlwZSBBPC90aD4KCQkJCTx0aD5FcXVpcGUgQjwvdGg+CgkJCQk8dGg+U2NvcmUgQTwvdGg+CgkJCQk8dGg+U2NvcmUgQjwvdGg+CgkJCQk8dGg+QWZmaWNoYWdlPC90aD4KCQkJCTx0aCBjb2xzcGFuPSIzIj5BY3Rpb25zPC90aD4KCQkJCTx0aD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJzZWxlY3RhbGwiIG5hbWU9InNlbGVjdGFsbCI+PC90aD4KCQkJPC90aGVhZD4KCQkJPHRib2R5PgoJCQl7Zm9yZWFjaCBmcm9tPSRwcm9kc197JGVudHJ5LT52YWxldXJ9IGl0ZW09ZG9ubmVlfQoJCQkJe2lmICRkb25uZWUtPmNsdWIgPT0xfQoJCQkJPHRyIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjNjZGRjY2Ij4KCQkJCXtlbHNlfQoJCQkJPHRyPgoJCQkJey9pZn0KCQkJCQk8dGQ+eyRkb25uZWUtPmVxdWF9PC90ZD4KCQkJCQk8dGQ+eyRkb25uZWUtPmVxdWJ9PC90ZD4KCQkJCQk8dGQ+eyRkb25uZWUtPnNjb3JlYX08L3RkPgoJCQkJCTx0ZD57JGRvbm5lZS0+c2NvcmVifTwvdGQ+CgkJCQkJPHRkPnskZG9ubmVlLT5kaXNwbGF5fTwvdGQ+CgkJCQkJPHRkPnskZG9ubmVlLT5yZXRyaWV2ZV9wb3VsZV9yZW5jb250cmVzfTwvdGQ+CgkJCQkJPHRkPnskZG9ubmVlLT5yZXRyaWV2ZV9kZXRhaWxzfXskZG9ubmVlLT52aWV3ZGV0YWlsc308L3RkPgoJCQkJCTx0ZD57JGRvbm5lZS0+ZGVsZXRlbGlua308L3RkPgoJCQkJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9c2VsW10iIHZhbHVlPSJ7JGRvbm5lZS0+cmVuX2lkfSIgY2xhc3M9InNlbGVjdCI+PC90ZD4KCQkJCTwvdHI+CgkJCXsvZm9yZWFjaH0KCQk8L3RhYmxlPgoJCTwhLS0gU0VMRUNUIERST1BET1dOIC0tPgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyIgc3R5bGU9ImZsb2F0OiByaWdodDsiPgo8YnIvPnskYWN0aW9uZGVtYXNzZX17JHN1Ym1pdF9tYXNzYWN0aW9ufQogIDwvZGl2Pgp7JGZvcm0yZW5kfQoKey9mb3JlYWNofQp7ZWxzZX0KPHAgY2xhc3M9Indhcm5pbmciPlLDqWN1cMOpcmVyIGxlcyByZW5jb250cmVzIGRlIGNldHRlIHBvdWxlID8geyRhbGxfcmVzdWx0c30gPC9wPgoJey9pZn0K]]></data>
	</file>
	<file>
	  <filename>/templates/resultats3.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskaXRlbXN8dmFyX2R1bXB9PC9wcmU+Kn0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS50b2dnbGUoKTsKICB9KTsKICB7aWYgaXNzZXQoJHRhYmxlc29ydGVyKX0KICAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4Ke2Fzc2lnbiB2YXI9Y29tcHRldXIgdmFsdWUgPSAwfQo8cCBzdHlsZT0id2lkdGg6IDEwMCUiPjxzcGFuIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0Ij57aWYgJHBoYXNlID09MX17JFNlcH0gfCB7JE9jdH0gfCB7JE5vdn0gfCB7JERlY30geyRtb2lzX3N1aXZhbnR9e2Vsc2V9eyRtb2lzX3ByZWNlZGVudH0gIHskSmFufSB8IHskRmV2fSB8IHskTWFyfSB8IHskQXZyfSB8IHskTWFpfSB8IHskSnVpbn0gfCB7JEp1aWx9ey9pZn08L3NwYW4+PHNwYW4gc3R5bGU9ImZsb2F0OnJpZ2h0Ij57JGFsbF9yZXN1bHRzfTwvc3Bhbj48L3A+CntpZiAkaXRlbWNvdW50PjB9Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CnsqPHA+PHByZT57JHByb2RzX3skY29tcHRldXIrK318dmFyX2R1bXB9PC9wcmU+PC9wPip9CgoJCgkKCXskZm9ybTJzdGFydH0KCTxoMz57JGVudHJ5LT5kYXRlfGRhdGVfZm9ybWF0OiIlZC8lbS8lWSJ9IHskZW50cnktPmNvbXBldH08L2gzPgoJCgkKCQk8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUgdGFibGUiPgoJCQk8dGhlYWQ+CgkJCQk8dHI+PHRoPkVxdWlwZSBBPC90aD4KCQkJCTx0aD5FcXVpcGUgQjwvdGg+CgkJCQk8dGg+U2NvcmUgQTwvdGg+CgkJCQk8dGg+U2NvcmUgQjwvdGg+CgkJCQk8dGg+QWZmaWNoYWdlPC90aD4KCQkJCTx0aCBjb2xzcGFuPSIzIj5BY3Rpb25zPC90aD4KCQkJCTx0aD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJzZWxlY3RhbGwiIG5hbWU9InNlbGVjdGFsbCI+PC90aD4KCQkJPC90aGVhZD4KCQkJPHRib2R5PgoJCQl7Zm9yZWFjaCBmcm9tPSRwcm9kc197JGVudHJ5LT52YWxldXJ9IGl0ZW09ZG9ubmVlfQoJCQkJe2lmICRkb25uZWUtPmNsdWIgPT0xfQoJCQkJPHRyIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjNjZGRjY2Ij4KCQkJCXtlbHNlfQoJCQkJPHRyPgoJCQkJey9pZn0KCQkJCQk8dGQ+eyRkb25uZWUtPmVxdWF9PC90ZD4KCQkJCQk8dGQ+eyRkb25uZWUtPmVxdWJ9PC90ZD4KCQkJCQk8dGQ+eyRkb25uZWUtPnNjb3JlYX08L3RkPgoJCQkJCTx0ZD57JGRvbm5lZS0+c2NvcmVifTwvdGQ+CgkJCQkJPHRkPnskZG9ubmVlLT5kaXNwbGF5fTwvdGQ+CgkJCQkJPHRkPnskZG9ubmVlLT5yZXRyaWV2ZV9wb3VsZV9yZW5jb250cmVzfTwvdGQ+CgkJCQkJPHRkPnskZG9ubmVlLT5yZXRyaWV2ZV9kZXRhaWxzfTwvdGQ+CgkJCQkJPHRkPnskZG9ubmVlLT5kZWxldGVsaW5rfTwvdGQ+CgkJCQkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1zZWxbXSIgdmFsdWU9InskZG9ubmVlLT5yZW5faWR9IiBjbGFzcz0ic2VsZWN0Ij48L3RkPgoJCQkJPC90cj4KCQkJey9mb3JlYWNofQoJCTwvdGFibGU+CgkJPCEtLSBTRUxFQ1QgRFJPUERPV04gLS0+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyI+Cjxici8+eyRhY3Rpb25kZW1hc3NlfXskc3VibWl0X21hc3NhY3Rpb259CiAgPC9kaXY+CnskZm9ybTJlbmR9CgkKey9mb3JlYWNofQp7ZWxzZX0KPHAgY2xhc3M9Indhcm5pbmciPlBhcyBkZSByw6lzdWx0YXRzID88L3A+CnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/sitmens.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskaXRlbXN8dmFyX2R1bXB9PC9wcmU+Kn0KPHNjcmlwdCBzcmM9Imh0dHA6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CntsaXRlcmFsfQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8vPCFbQ0RBVEFbCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeyAKICAgICAgICAkKCd0YWJsZScpLnRhYmxlc29ydGVyKCB7IHNvcnRMaXN0OltbMCwwXSxbMSwwXV0gfSApOyAKICAgIH0gCik7Ci8vXV0+Cjwvc2NyaXB0Pgp7L2xpdGVyYWx9Cgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JG1vaXNfcHJlY2VkZW50fSZuYnNwO3skbW9pc19zdWl2YW50fSA8L3A+PC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskaXRlbWNvdW50fSZuYnNwO3skaXRlbXNmb3VuZH0gPC9wPjwvZGl2Pgp7aWYgJGl0ZW1jb3VudCA+IDB9CjxoMz4gU2l0dWF0aW9uIG9mZmljaWVsbGUgZHUgbW9pcyBkZSB7JG1vaXNfY2hvaXNpfTwvaDM+Cjx0YWJsZSBjbGFzcz0idGFibGVzb3J0ZXIgdGFibGUgdGFibGUtYm9yZGVyZWQiIGlkPSJ0YWJsZXNvcnRlciI+CiA8dGhlYWQ+Cgk8dHIgY2xhc3M9ImhlYWRlciI+CgkJPHRoPkpvdWV1cjwvdGg+CgkJPHRoPlBvaW50czwvdGg+CgkJPHRoPlJhbmcgTmF0aW9uYWw8L3RoPgoJCTx0aD5SYW5nIG5hdCAoSG9ycyDDqXRyYW5nZXIpPC90aD4KCQk8dGg+UmFuZyByZWc8L3RoPgoJCTx0aD5SYW5nIGTDqXA8L3RoPgoJCTx0aD5Qcm9nIG1vaXM8L3RoPgoJCTx0aD5Qcm9nIGFuPC90aD4KCTwvdHI+CiA8L3RoZWFkPgogPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9IGhlYWRlciI+CiAgICA8dGQ+eyRlbnRyeS0+am91ZXVyfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+cG9pbnRzfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+Y2xnbG9ifTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+Y2xuYXR9PC90ZD4KCTx0ZD57JGVudHJ5LT5yYW5ncmVnfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+cmFuZ2RlcH08L3RkPgoJPHRkPnskZW50cnktPnByb2dtb2lzfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+cHJvZ2Fubn08L3RkPgogIDwvdHI+CnsvZm9yZWFjaH0KIDwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnsqJGNyZWF0ZWxpbmsqfTwvcD48L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/sitmens_prov.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCBzcmM9Imh0dHA6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CntsaXRlcmFsfQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8vPCFbQ0RBVEFbCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeyAKICAgICAgICAkKCd0YWJsZScpLnRhYmxlc29ydGVyKCB7IHNvcnRMaXN0OltbMCwwXSxbMSwwXV0gfSApOyAKICAgIH0gCik7Ci8vXV0+Cjwvc2NyaXB0Pgp7L2xpdGVyYWx9CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskcmV0dXJubGlua308L3A+PC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskaXRlbWNvdW50fSZuYnNwO3skaXRlbXNmb3VuZH08L3A+PC9kaXY+CntpZiAkaXRlbWNvdW50ID4gMH0KPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ib3JkZXJlZCB0YWJsZXNvcnRlciIgaWQ9InRhYmxlc29ydGVyIj4KCTx0aGVhZD4KCQk8dGg+Sm91ZXVyPC90aD4KCQk8IS0tPHRoPlByb2cgbW9pczwvdGg+LS0+CgkJPHRoPkNsdCByw6lmw6lyZW5jZTwvdGg+CgkJPHRoPlBvaW50cyBlbiBjb3VyczwvdGg+CgkJPHRoPkJpbGFuPC90aD4KCQkKCTwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgPHRkPnskZW50cnktPmpvdWV1cn08L3RkPgoJPHRkPnskZW50cnktPmNsdH08L3RkPgoJPHRkPnskZW50cnktPnNvbW1lfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+YmlsYW59PC90ZD4KCTx0ZD57JGVudHJ5LT5kZXRhaWxzfTwvdGQ+CiAgPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4Ke2Vsc2V9CjxwPkxlcyBzaXR1YXRpb25zIG1lbnN1ZWxsZXMgc29udCDDoCBqb3VyPC9wPgp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGNyZWF0ZWxpbmt9PC9wPjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/spid.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS50b2dnbGUoKTsKICB9KTsKICB7aWYgaXNzZXQoJHRhYmxlc29ydGVyKX0KICAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4Ke2lmIGlzc2V0KCRmb3Jtc3RhcnQpIH0KPGZpZWxkc2V0PgogIDxsZWdlbmQ+RmlsdHJlczwvbGVnZW5kPgogIHskZm9ybXN0YXJ0fQogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPlR5cGUgQ29tcMOpdGl0aW9uOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfY29tcGV0fSA8L3A+CiAgICA8IS0tPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90b3VyfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RvdXJ9IDwvcD4tLT4KCTxwIGNsYXNzPSJwYWdldGV4dCI+RGF0ZTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2RhdGV9IDwvcD4KCTxwIGNsYXNzPSJwYWdldGV4dCI+Sm91ZXVyIDo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3BsYXllcn0gPC9wPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5FcnJldXJzIHVuaXF1ZW1lbnQ6PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9lcnJvcl9vbmx5fSA8L3A+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0ZmlsdGVyfXskaGlkZGVufGRlZmF1bHQ6Jyd9PC9wPgogIDwvZGl2PgogIHskZm9ybWVuZH0KPC9maWVsZHNldD4Key9pZn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQp7JGZvcm0yc3RhcnR9Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiA8dGhlYWQ+Cgk8dHI+CQoJCTx0aD5JZDwvdGg+CgkJPHRoPlN0YXR1dDwvdGg+CgkJPHRoPkpvdWV1cjwvdGg+CgkJPHRoPkRhdGU8L3RoPgoJCTx0aD5FcHJldXZlPC90aD4KCQk8dGg+Tm9tIGFkdmVyc2FpcmU8L3RoPgoJCTx0aD5DbGFzc2VtZW50PC90aD4KCQk8dGg+VmljdG9pcmU8L3RoPgoJCTx0aD5FY2FydDwvdGg+CgkJPHRoPkNvZWZmPC90aD4KCQk8dGg+UG9pbnRzPC90aD4KCQk8dGg+Rm9yZmFpdDwvdGg+CgkJPHRoIGNvbHNwYW49IjIiPkFjdGlvbnM8L3RoPgoJCTx0aD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJzZWxlY3RhbGwiIG5hbWU9InNlbGVjdGFsbCI+PC90aD4KICA8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+CiAgICA8dGQ+eyRlbnRyeS0+cmVjb3JkX2lkfTwvdGQ+Cgl7aWYgJGVudHJ5LT5zdGF0dXQgZXEgIjAifTx0ZCBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmVkOyI+RXJyZXVye2Vsc2V9PHRkPk9rey9pZn08L3RkPgoJPHRkPnskZW50cnktPmpvdWV1cn08L3RkPgkKICAgIDx0ZD57JGVudHJ5LT5kYXRlX2V2ZW50fGRhdGVfZm9ybWF0OiIlQSAlZSAlQiAlWSJ9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5lcHJldXZlfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+bmFtZX08L3RkPgoJPHRkPnskZW50cnktPmNsYXNzZW1lbnR9PC90ZD4KCTx0ZD57JGVudHJ5LT52aWN0b2lyZX08L3RkPgoJe2lmICRlbnRyeS0+ZWNhcnQgZXEgIjAuMDAiIHx8ICRlbnRyeS0+ZWNhcnQ9PS0kZW50cnktPmNsYXNzZW1lbnR9PHRkIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7Ij57ZWxzZX08dGQ+ey9pZn17JGVudHJ5LT5lY2FydH08L3RkPgoJe2lmICRlbnRyeS0+Y29lZmYgIGVxICIwLjAwIn08dGQgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZDsiPntlbHNlfTx0ZD57L2lmfXskZW50cnktPmNvZWZmfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+cG9pbnRyZXN9PC90ZD4KCTx0ZD57JGVudHJ5LT5mb3JmYWl0fTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KCTx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+Cgk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfXNlbFtdIiB2YWx1ZT0ieyRlbnRyeS0+aWR9IiBjbGFzcz0ic2VsZWN0Ij48L3RkPgogIDwvdHI+CnsvZm9yZWFjaH0KIDwvdGJvZHk+CjwvdGFibGU+CjwhLS0gU0VMRUNUIERST1BET1dOIC0tPgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyIgc3R5bGU9ImZsb2F0OiByaWdodDsiPgo8YnIvPnskYWN0aW9uZGVtYXNzZX17JHN1Ym1pdF9tYXNzYWN0aW9ufQogIDwvZGl2Pgp7JGZvcm0yZW5kfQp7L2lmfQoKPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyokY3JlYXRlbGluayp9PC9wPjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/teams.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcjInKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI2ZpbHRlcl9mb3JtMicpLmRpYWxvZyh7CiAgICAgIG1vZGFsOiB0cnVlLAogICAgICB3aWR0aDogJ2F1dG8nLAogICAgfSk7CiAgfSk7CiAge2lmIGlzc2V0KCR0YWJsZXNvcnRlcil9CiAgaWYoIHR5cGVvZigkLnRhYmxlc29ydGVyKSAhPSAndW5kZWZpbmVkJyApICQoJyNhcnRpY2xlbGlzdCcpLnRhYmxlc29ydGVyKHsgc29ydExpc3Q6eyR0YWJsZXNvcnRlcn0gfSk7CiAgey9pZn0KfSk7Ci8vXV0+Cjwvc2NyaXB0Pgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHA+PHNwYW4gY2xhc3M9InBhZ2VvcHRpb25zIHdhcm5pbmciPlLDqWN1cMOpcmV6IGxlcyB7JHJldHJpZXZlX3RlYW1zfSB8IHskcmV0cmlldmVfdGVhbXNfZmVtfSB8IHskcmV0cmlldmVfdGVhbXNfYXV0cmVzfSA8L3NwYW4+PC9wPjwvZGl2Pgp7aWYgaXNzZXQoJGZvcm1zdGFydCkgfQo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD5GaWx0cmVzPC9sZWdlbmQ+CiAgeyRmb3Jtc3RhcnR9CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+VHlwZSBDb21ww6l0aXRpb246PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9jb21wZXR9IDwvcD4KCTxwIGNsYXNzPSJwYWdldGV4dCI+UGhhc2UgOjwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskY3VycGhhc2V9IDwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0ZmlsdGVyfXskaGlkZGVufGRlZmF1bHQ6Jyd9PC9wPgogIDwvZGl2PgogIHskZm9ybWVuZH0KPC9maWVsZHNldD4Key9pZn0KCgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGl0ZW1jb3VudH0mbmJzcDt7JGl0ZW1zZm91bmR9PC9wPjwvZGl2PgoKCXtpZiAkaXRlbWNvdW50ID4gMH0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnM8Ij48cD48c3BhbiBjbGFzcz0icGFnZW9wdGlvbnMgd2FybmluZyI+eyRyZXRyaWV2ZV9hbGx9IHwgeyRyZXRyaWV2ZV9jYWxlbmRyaWVyc30gfCB7JGNsYXNzZW1lbnRzfTwvc3Bhbj48L3A+PC9kaXY+Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiA8dGhlYWQ+Cgk8dHI+CgkJPHRoPnskaWR9PC90aD4KCQk8dGg+eyRlcXVpcGV9PC90aD4KCQk8dGg+Tml2ZWF1PC90aD4KCQk8dGg+Q29tcMOpdGl0aW9uPC90aD4KCQk8dGg+Tm9tIGNvdXJ0PC90aD4KCQk8dGg+VGFnIHBvdXIgYWZmaWNoYWdlPC90aD4KCQk8dGggY29sc3Bhbj0iNCI+QWN0aW9uczwvdGg+Cgk8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+Cgk8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5saWJlcXVpcGV9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5saWJkaXZpc2lvbn08L3RkPgoJPHRkPnskZW50cnktPm5hbWV9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5mcmllbmRseW5hbWV9PC90ZD4KCTx0ZD57JGVudHJ5LT50YWd9PC90ZD4KCTx0ZD57JGVudHJ5LT52aWV3fTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+CiAgPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4Key9pZn0KCgo=]]></data>
	</file>
	<file>
	  <filename>/templates/teamscores.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW9wdGlvbnM8Ij48cD48c3BhbiBjbGFzcz0icGFnZW9wdGlvbnMgd2FybmluZyI+eyRyZXRyaWV2ZV9hbGx9IHwgeyRyZXRyaWV2ZV9jYWxlbmRyaWVyc30gfCB7JGNsYXNzZW1lbnRzfTwvc3Bhbj48L3A+PC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskaXRlbWNvdW50fSZuYnNwO3skaXRlbXNmb3VuZH08L3A+PC9kaXY+e2lmICRpdGVtY291bnQgPiAwfQo8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskcGhhc2UxfSB8IHskcGhhc2UyfTwvcD4KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KIDx0aGVhZD4KCTx0cj4KCQk8dGg+eyRpZH08L3RoPgoJCTx0aD57JGVxdWlwZX08L3RoPgoJCTx0aD5OaXZlYXU8L3RoPgoJCTx0aD5Db21ww6l0aXRpb248L3RoPgoJCTx0aD5Ob20gY291cnQ8L3RoPgoJCTx0aD5UYWcgcG91ciBhZmZpY2hhZ2U8L3RoPgoJCTx0aCBjb2xzcGFuPSI0Ij5BY3Rpb25zPC90aD4KCTwvdHI+CiA8L3RoZWFkPgogPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KCTx0ZD57JGVudHJ5LT5pZH08L3RkPgogICAgPHRkPnskZW50cnktPmxpYmVxdWlwZX08L3RkPgogICAgPHRkPnskZW50cnktPmxpYmRpdmlzaW9ufTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+bmFtZX08L3RkPgogICAgPHRkPnskZW50cnktPmZyaWVuZGx5bmFtZX08L3RkPgoJPHRkPnskZW50cnktPnRhZ308L3RkPgoJPHRkPnskZW50cnktPnZpZXd9PC90ZD4KCTx0ZD57JGVudHJ5LT5lZGl0bGlua308L3RkPgogICAgPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4KICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQoK]]></data>
	</file>
	<file>
	  <filename>/templates/topflop.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRpdGVtY291bnQgPiAwfQo8aDE+TGVzIG1laWxsZXVyZXMgUGVyZnM8L2gxPgo8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSwgdGFibGUtYm9yZGVyZWQiPgogPHRoZWFkPgoJPHRyPgoJCTx0aD5Kb3VldXI8L3RoPgoJCTx0aD5FY2FydDwvdGg+CgkJPHRoPlBvaW50czwvdGg+Cgk8L3RyPgo8L3RoZWFkPgogPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KCTx0ZD57JGVudHJ5LT5qb3VldXJ9PC90ZD4KCTx0ZD57JGVudHJ5LT5hZHZ9KHskZW50cnktPmFkdmNsYW9mfSk8L3RkPgogICAgPHRkPnskZW50cnktPnBvaW50cmVzfTwvdGQ+CiAgICA8L3RyPgp7L2ZvcmVhY2h9CntpZiAkZ2V0bW9yZSA9PSAnVHJ1ZSd9IDx0cj48dGQgY29sc3Bhbj0iMyI+eyRtb3JlfTwvdGQ+PC90cj57L2lmfSAgCiA8L3Rib2R5Pgo8dGZvb3Q+CjwvdGFibGU+CnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/unable_players.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPkxpc3RlIGRlcyBqb3VldXJzIGluYWN0aWZzPC9oMj4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfSAgeyRkaXNwbGF5X2VuYWJsZV9wbGF5ZXJzfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgogIDx0cj4JCiAgPHRoPnskaWR9PC90aD4KICA8dGg+Sm91ZXVyPC90aD4KPHRoPkFjdGlvbnM8L3RoPgogIDwvdHI+CiA8L3RoZWFkPgogPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQoKICA8dHIgIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgPHRkPnskZW50cnktPmlkfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+am91ZXVyfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQoK]]></data>
	</file>
	<file>
	  <filename>/templates/user_results.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4KPHA+eyRyZXRvdXJ9PC9wPgp7aWYgJGFmZmljaGU9PScxJ30KPGgzPlLDqXN1bcOpIGRlcyByw6lzdWx0YXRzPC9oMz4KPHA+eyRwaGFzZTF9IHwgeyRwaGFzZTJ9PC9wPgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRib2R5PgoJPHRoZWFkPgoJCTx0cj4KCQkJPHRoPlZpYzwvdGg+CgkJCTx0aD5Ub3RhbDwvdGg+CgkJCTx0aD5QdHM8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgogPC90Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMxIGl0ZW09ZW50cmVlfQogIDx0ciBjbGFzcz0ieyRlbnRyZWUtPnJvd2NsYXNzfSI+CiAgICA8dGQ+eyRlbnRyZWUtPnZpY308L3RkPgoJPHRkPnskZW50cmVlLT50b3RhbH08L3RkPgoJPHRkPnskZW50cmVlLT5wdHN9PC90ZD4KICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQp7aWYgJGl0ZW1jb3VudCA+MH0KCXtpZiAkYWZmaWNoZT09JzAnfQoJCgkJPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ib3JkZXJlZCI+CgkJIDx0aGVhZD4KCQkgIDx0cj4KCQkJPHRoPkFkdjwvdGg+CgkJCTx0aD5WaWMvRGVmPC90aD4KCQkJPHRoPkNvZWZmPC90aD4KCQkJPHRoPlB0czwvdGg+CgkJICA8L3RyPgoJCSA8L3RoZWFkPgoJCSA8dGJvZHk+CgkJe2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KCQkgIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KCQkJPHRkPnskZW50cnktPmRhdGVfZXZlbnR8ZGF0ZV9mb3JtYXQ6IiVkLyVtIn08L3RkPgoJCQk8dGQ+eyRlbnRyeS0+YWR2bm9tcHJlfSh7JGVudHJ5LT5hZHZjbGFvZn0pPC90ZD4KCQkgICAgPHRkPnskZW50cnktPnZkfTwvdGQ+CQkKCQkJPHRkPnskZW50cnktPnBvaW50cmVzfTwvdGQ+CgkJICA8L3RyPgoJCXsvZm9yZWFjaH0KCQkgPC90Ym9keT4KCQk8L3RhYmxlPgoJPHA+eyRyZXN1bHRhdHN9PC9wPgoJe2Vsc2V9CgkJPGgzPkxlIGTDqXRhaWwgZGVzIHLDqXN1bHRhdHMgb2ZmaWNpZWxzIGRlIHskam91ZXVyfTwvaDM+CgkJPHRhYmxlICBjbGFzcz0idGFibGUgdGFibGUtYm9yZGVyZWQiPgoJCSA8dGhlYWQ+CgkJICA8dHI+CgkJCTx0aD5EYXRlPC90aD4KCQkJPHRoPkFkdjwvdGg+CgkJCTx0aD5WaWMvRGVmPC90aD4KCQkJPHRoPlB0czwvdGg+CgkJICA8L3RyPgoJCSA8L3RoZWFkPgoJCSA8dGJvZHk+CgkJe2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KCQkgIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KCQkgICAgPHRkPnskZW50cnktPmRhdGVfZXZlbnR8ZGF0ZV9mb3JtYXQ6IiVkLyVtIn08L3RkPgoJCSAgICA8dGQgY2xhc3M9Im5hbWUiPnskZW50cnktPmFkdm5vbXByZX0oeyRlbnRyeS0+YWR2Y2xhb2Z9KTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT52ZH08L3RkPgoJCQk8dGQ+eyRlbnRyeS0+cG9pbnRyZXN9PC90ZD4KCQkgIDwvdHI+CgkJey9mb3JlYWNofQoJCSA8L3Rib2R5PgoJCTwvdGFibGU+Cgl7L2lmfQkKe2Vsc2V9CgkJCTxwPkF1Y3VuIHLDqXN1bHRhdDwvcD4Key9pZn0KCQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGNyZWF0ZWxpbmt9PC9wPjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/user_results_prov.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4KPHA+eyRyZXRvdXJ9PC9wPgp7aWYgJGFmZmljaGU9PScxJ30KPGgzPlLDqXN1bcOpIGRlcyByw6lzdWx0YXRzPC9oMz4KPHA+eyRwaGFzZTF9IHwgeyRwaGFzZTJ9PC9wPgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRib2R5PgoJPHRoZWFkPgoJCTx0cj4KCQkJPHRoPlZpYzwvdGg+CgkJCTx0aD5Ub3RhbDwvdGg+CgkJCTx0aD5QdHM8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgogPC90Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMxIGl0ZW09ZW50cmVlfQogIDx0ciBjbGFzcz0ieyRlbnRyZWUtPnJvd2NsYXNzfSI+CiAgICA8dGQ+eyRlbnRyZWUtPnZpY308L3RkPgoJPHRkPnskZW50cmVlLT50b3RhbH08L3RkPgoJPHRkPnskZW50cmVlLT5wdHN9PC90ZD4KICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQp7aWYgJGl0ZW1jb3VudCA+MH0KCXtpZiAkYWZmaWNoZT09JzAnfQoJPGgzPkxlcyByw6lzdWx0YXRzIGRlIHskam91ZXVyfTwvaDM+CgkJPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ib3JkZXJlZCI+CgkJIDx0aGVhZD4KCQkgIDx0cj4KCQkJPHRoPkRhdGU8L3RoPgoJCQk8dGg+RXByZXV2ZTwvdGg+CgkJCTx0aD5BZHY8L3RoPgoJCQk8dGg+VmljL0RlZjwvdGg+CgkJCQoJCQk8dGg+UHRzPC90aD4KCQkgIDwvdHI+CgkJIDwvdGhlYWQ+CgkJIDx0Ym9keT4KCQl7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQoJCSAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgoJCQk8dGQ+eyRlbnRyeS0+ZGF0ZV9ldmVudHxkYXRlX2Zvcm1hdDoiJWQvJW0ifTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5lcHJldXZlfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5ub219KHskZW50cnktPmNsYXNzZW1lbnR9KTwvdGQ+CgkJICAgIDx0ZD57JGVudHJ5LT52aWN0b2lyZX08L3RkPgkJCgkJCTx0ZD57JGVudHJ5LT5wb2ludHJlc308L3RkPgoJCSAgPC90cj4KCQl7L2ZvcmVhY2h9CgkJIDwvdGJvZHk+CgkJPC90YWJsZT4KCTxwPnskcmVzdWx0YXRzfTwvcD4KCXtlbHNlfQoJCTxoMz5MZSBkw6l0YWlsIGRlcyByw6lzdWx0YXRzIHNwaWQgZGUgeyRqb3VldXJ9PC9oMz4KCQk8dGFibGUgIGNsYXNzPSJ0YWJsZSB0YWJsZS1ib3JkZXJlZCI+CgkJIDx0aGVhZD4KCQkgIDx0cj4KCQkJPHRoPkRhdGU8L3RoPgoJCQk8dGg+RXByZXV2ZTwvdGg+CgkJCTx0aD5BZHY8L3RoPgoJCQk8dGg+VmljL0RlZjwvdGg+CgkJCTx0aD5Db2VmZjwvdGg+CgkJCTx0aD5QdHM8L3RoPgoJCSAgPC90cj4KCQkgPC90aGVhZD4KCQkgPHRib2R5PgoJCXtmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CgkJICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+CgkJICAgIDx0ZD57JGVudHJ5LT5kYXRlX2V2ZW50fGRhdGVfZm9ybWF0OiIlZC8lbSJ9PC90ZD4KCQkJPHRkPnskZW50cnktPmVwcmV1dmV9PC90ZD4KCQkgICAgPHRkIGNsYXNzPSJuYW1lIj57JGVudHJ5LT5ub219KHskZW50cnktPmNsYXNzZW1lbnR9KTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT52aWN0b2lyZX08L3RkPgoJCQk8dGQ+eyRlbnRyeS0+Y29lZmZ9PC90ZD4KCQkJPHRkPnskZW50cnktPnBvaW50cmVzfTwvdGQ+CgkJICA8L3RyPgoJCXsvZm9yZWFjaH0KCQkgPC90Ym9keT4KCQk8L3RhYmxlPgoJey9pZn0JCntlbHNlfQoJCQk8cD5BdWN1biByw6lzdWx0YXQ8L3A+CnsvaWZ9CgkKPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRjcmVhdGVsaW5rfTwvcD48L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/verif.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHA+eyRpdGVtc2NvdW50fSByw6lzdWx0YXQocykgdHJvdXbDqShzKTwvcD4Ke2lmICRpdGVtc2NvdW50PjB9CjxwPkxhIHByZW1pw6hyZSBjb2xvbm5lIGVzdCBjZWxsZSBkdSBzcGlkLCBsYSBkZXV4acOobWUgRkZUVCB8IHskQ29ycmlnZXJ9PC9wPgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgoJPHRoZWFkPgoJCTx0cj4KCQkJPHRoPklkPC90aD4KCQkJPHRoPkRhdGU8L3RoPgoJCQk8dGg+RGF0ZTwvdGg+CgkJCTx0aD5MaWNlbmNlIDwvdGg+CgkJCTx0aD5MaWNlbmNlPC90aD4KCQkJPHRoPk5vbTwvdGg+CgkJCTx0aD5Ob208L3RoPgoJCQk8dGg+TsKwIEpvdXJuw6llPC90aD4KCQkJPHRoPk7CsCBKb3VybsOpZTwvdGg+CgkJCTx0aD5WaWN0b2lyZTwvdGg+CgkJCTx0aD5WaWN0b2lyZTwvdGg+CgkJCTx0aD5Db2VmZjwvdGg+CgkJCTx0aD5Db2VmZjwvdGg+CgkJCTx0aD5Qb2ludHM8L3RoPgoJCQk8dGg+UG9pbnRzPC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCXtmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CgkJPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgoJCQk8dGQ+eyRlbnRyeS0+cmVjb3JkX2lkfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5kYXRlX3NwaWR8ZGF0ZV9mb3JtYXQ6IiVkLyVtIn08L3RkPgoJCQk8dGQ+eyRlbnRyeS0+ZGF0ZV9mZnR0fGRhdGVfZm9ybWF0OiIlZC8lbSJ9PC90ZD4KCQkJPHRkPnskZW50cnktPmxpY2VuY2Vfc3BpZH08L3RkPgoJCQk8dGQ+eyRlbnRyeS0+bGljZW5jZV9mZnR0fTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5ub21fc3BpZH08L3RkPgoJCQk8dGQ+eyRlbnRyeS0+bm9tX2ZmdHR9PC90ZD4KCQkJPHRkPnskZW50cnktPm51bWpvdXJuX3NwaWR9PC90ZD4KCQkJPHRkPnskZW50cnktPm51bWpvdXJuX2ZmdHR9PC90ZD4KCQkJPHRke2lmICRlbnRyeS0+dmljdG9pcmVfc3BpZCAhPSAkZW50cnktPnZpY3RvaXJlX2ZmdHR9IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7In17L2lmfT4gCQkJCXskZW50cnktPnZpY3RvaXJlX3NwaWR9PC90ZD4KCQkJPHRkPnskZW50cnktPnZpY3RvaXJlX2ZmdHR9PC90ZD4KCQkJPHRke2lmICRlbnRyeS0+Y29lZmZfc3BpZCAhPSAkZW50cnktPmNvZWZmX2ZmdHR9IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7In17L2lmfT57JGVudHJ5LT5jb2VmZl9zcGlkfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5jb2VmZl9mZnR0fTwvdGQ+CgkJCTx0ZHtpZiAkZW50cnktPnBvaW50c19zcGlkICE9ICRlbnRyeS0+cG9pbnRzX2ZmdHR9IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7In17L2lmfT57JGVudHJ5LT5wb2ludHNfc3BpZH08L3RkPgoJCQk8dGQ+eyRlbnRyeS0+cG9pbnRzX2ZmdHR9PC90ZD4KCQkJPCEtLTx0ZD57JGVudHJ5LT5lcmFzZWxpbmt9PC90ZD4tLT4KCQkJCgkJPC90cj4KCXsvZm9yZWFjaH0KCTwvdGJvZHk+CgkJCQoJCQkKPC90YWJsZT4Ke2Vsc2V9CjxwPkF1Y3VuZSBlcnJldXIgPC9wPgp7L2lmfQo8cD57JHJldHVybmxpbmt9PC9wPg==]]></data>
	</file>
	<file>
	  <filename>/themes/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/themes/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/themes/rookie/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/themes/rookie/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/themes/rookie/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/themes/rookie/js/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/themes/rookie/js/jquery.timeago.fr.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gRnJlbmNoCmpRdWVyeS50aW1lYWdvLnNldHRpbmdzLnN0cmluZ3MgPSB7CiAgIC8vIGVudmlyb24gfj0gYWJvdXQsIGl0J3Mgb3B0aW9uYWwKICAgcHJlZml4QWdvOiAiaWwgeSBhIiwKICAgcHJlZml4RnJvbU5vdzogImQnaWNpIiwKICAgc2Vjb25kczogIm1vaW5zIGQndW5lIG1pbnV0ZSIsCiAgIG1pbnV0ZTogImVudmlyb24gdW5lIG1pbnV0ZSIsCiAgIG1pbnV0ZXM6ICJlbnZpcm9uICVkIG1pbnV0ZXMiLAogICBob3VyOiAiZW52aXJvbiB1bmUgaGV1cmUiLAogICBob3VyczogImVudmlyb24gJWQgaGV1cmVzIiwKICAgZGF5OiAiZW52aXJvbiB1biBqb3VyIiwKICAgZGF5czogImVudmlyb24gJWQgam91cnMiLAogICBtb250aDogImVudmlyb24gdW4gbW9pcyIsCiAgIG1vbnRoczogImVudmlyb24gJWQgbW9pcyIsCiAgIHllYXI6ICJ1biBhbiIsCiAgIHllYXJzOiAiJWQgYW5zIgp9Ow==]]></data>
	</file>
	<file>
	  <filename>/themes/rookie/js/jquery.timeago.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFRpbWVhZ28gaXMgYSBqUXVlcnkgcGx1Z2luIHRoYXQgbWFrZXMgaXQgZWFzeSB0byBzdXBwb3J0IGF1dG9tYXRpY2FsbHkKICogdXBkYXRpbmcgZnV6enkgdGltZXN0YW1wcyAoZS5nLiAiNCBtaW51dGVzIGFnbyIgb3IgImFib3V0IDEgZGF5IGFnbyIpLgogKgogKiBAbmFtZSB0aW1lYWdvCiAqIEB2ZXJzaW9uIDEuNC4xCiAqIEByZXF1aXJlcyBqUXVlcnkgdjEuMi4zKwogKiBAYXV0aG9yIFJ5YW4gTWNHZWFyeQogKiBAbGljZW5zZSBNSVQgTGljZW5zZSAtIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwCiAqCiAqIEZvciB1c2FnZSBhbmQgZXhhbXBsZXMsIHZpc2l0OgogKiBodHRwOi8vdGltZWFnby55YXJwLmNvbS8KICoKICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTMsIFJ5YW4gTWNHZWFyeSAocnlhbiAtW2F0XS0gbWNnZWFyeSBbKmRvdCpdIG9yZykKICovCgooZnVuY3Rpb24gKGZhY3RvcnkpIHsKICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7CiAgICAvLyBBTUQuIFJlZ2lzdGVyIGFzIGFuIGFub255bW91cyBtb2R1bGUuCiAgICBkZWZpbmUoWydqcXVlcnknXSwgZmFjdG9yeSk7CiAgfSBlbHNlIHsKICAgIC8vIEJyb3dzZXIgZ2xvYmFscwogICAgZmFjdG9yeShqUXVlcnkpOwogIH0KfShmdW5jdGlvbiAoJCkgewogICQudGltZWFnbyA9IGZ1bmN0aW9uKHRpbWVzdGFtcCkgewogICAgaWYgKHRpbWVzdGFtcCBpbnN0YW5jZW9mIERhdGUpIHsKICAgICAgcmV0dXJuIGluV29yZHModGltZXN0YW1wKTsKICAgIH0gZWxzZSBpZiAodHlwZW9mIHRpbWVzdGFtcCA9PT0gInN0cmluZyIpIHsKICAgICAgcmV0dXJuIGluV29yZHMoJC50aW1lYWdvLnBhcnNlKHRpbWVzdGFtcCkpOwogICAgfSBlbHNlIGlmICh0eXBlb2YgdGltZXN0YW1wID09PSAibnVtYmVyIikgewogICAgICByZXR1cm4gaW5Xb3JkcyhuZXcgRGF0ZSh0aW1lc3RhbXApKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBpbldvcmRzKCQudGltZWFnby5kYXRldGltZSh0aW1lc3RhbXApKTsKICAgIH0KICB9OwogIHZhciAkdCA9ICQudGltZWFnbzsKCiAgJC5leHRlbmQoJC50aW1lYWdvLCB7CiAgICBzZXR0aW5nczogewogICAgICByZWZyZXNoTWlsbGlzOiA2MDAwMCwKICAgICAgYWxsb3dQYXN0OiB0cnVlLAogICAgICBhbGxvd0Z1dHVyZTogZmFsc2UsCiAgICAgIGxvY2FsZVRpdGxlOiBmYWxzZSwKICAgICAgY3V0b2ZmOiAwLAogICAgICBzdHJpbmdzOiB7CiAgICAgICAgcHJlZml4QWdvOiBudWxsLAogICAgICAgIHByZWZpeEZyb21Ob3c6IG51bGwsCiAgICAgICAgc3VmZml4QWdvOiAiYWdvIiwKICAgICAgICBzdWZmaXhGcm9tTm93OiAiZnJvbSBub3ciLAogICAgICAgIGluUGFzdDogJ2FueSBtb21lbnQgbm93JywKICAgICAgICBzZWNvbmRzOiAibGVzcyB0aGFuIGEgbWludXRlIiwKICAgICAgICBtaW51dGU6ICJhYm91dCBhIG1pbnV0ZSIsCiAgICAgICAgbWludXRlczogIiVkIG1pbnV0ZXMiLAogICAgICAgIGhvdXI6ICJhYm91dCBhbiBob3VyIiwKICAgICAgICBob3VyczogImFib3V0ICVkIGhvdXJzIiwKICAgICAgICBkYXk6ICJhIGRheSIsCiAgICAgICAgZGF5czogIiVkIGRheXMiLAogICAgICAgIG1vbnRoOiAiYWJvdXQgYSBtb250aCIsCiAgICAgICAgbW9udGhzOiAiJWQgbW9udGhzIiwKICAgICAgICB5ZWFyOiAiYWJvdXQgYSB5ZWFyIiwKICAgICAgICB5ZWFyczogIiVkIHllYXJzIiwKICAgICAgICB3b3JkU2VwYXJhdG9yOiAiICIsCiAgICAgICAgbnVtYmVyczogW10KICAgICAgfQogICAgfSwKCiAgICBpbldvcmRzOiBmdW5jdGlvbihkaXN0YW5jZU1pbGxpcykgewogICAgICBpZighdGhpcy5zZXR0aW5ncy5hbGxvd1Bhc3QgJiYgISB0aGlzLnNldHRpbmdzLmFsbG93RnV0dXJlKSB7CiAgICAgICAgICB0aHJvdyAndGltZWFnbyBhbGxvd1Bhc3QgYW5kIGFsbG93RnV0dXJlIHNldHRpbmdzIGNhbiBub3QgYm90aCBiZSBzZXQgdG8gZmFsc2UuJzsKICAgICAgfQoKICAgICAgdmFyICRsID0gdGhpcy5zZXR0aW5ncy5zdHJpbmdzOwogICAgICB2YXIgcHJlZml4ID0gJGwucHJlZml4QWdvOwogICAgICB2YXIgc3VmZml4ID0gJGwuc3VmZml4QWdvOwogICAgICBpZiAodGhpcy5zZXR0aW5ncy5hbGxvd0Z1dHVyZSkgewogICAgICAgIGlmIChkaXN0YW5jZU1pbGxpcyA8IDApIHsKICAgICAgICAgIHByZWZpeCA9ICRsLnByZWZpeEZyb21Ob3c7CiAgICAgICAgICBzdWZmaXggPSAkbC5zdWZmaXhGcm9tTm93OwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYoIXRoaXMuc2V0dGluZ3MuYWxsb3dQYXN0ICYmIGRpc3RhbmNlTWlsbGlzID49IDApIHsKICAgICAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5zdHJpbmdzLmluUGFzdDsKICAgICAgfQoKICAgICAgdmFyIHNlY29uZHMgPSBNYXRoLmFicyhkaXN0YW5jZU1pbGxpcykgLyAxMDAwOwogICAgICB2YXIgbWludXRlcyA9IHNlY29uZHMgLyA2MDsKICAgICAgdmFyIGhvdXJzID0gbWludXRlcyAvIDYwOwogICAgICB2YXIgZGF5cyA9IGhvdXJzIC8gMjQ7CiAgICAgIHZhciB5ZWFycyA9IGRheXMgLyAzNjU7CgogICAgICBmdW5jdGlvbiBzdWJzdGl0dXRlKHN0cmluZ09yRnVuY3Rpb24sIG51bWJlcikgewogICAgICAgIHZhciBzdHJpbmcgPSAkLmlzRnVuY3Rpb24oc3RyaW5nT3JGdW5jdGlvbikgPyBzdHJpbmdPckZ1bmN0aW9uKG51bWJlciwgZGlzdGFuY2VNaWxsaXMpIDogc3RyaW5nT3JGdW5jdGlvbjsKICAgICAgICB2YXIgdmFsdWUgPSAoJGwubnVtYmVycyAmJiAkbC5udW1iZXJzW251bWJlcl0pIHx8IG51bWJlcjsKICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLyVkL2ksIHZhbHVlKTsKICAgICAgfQoKICAgICAgdmFyIHdvcmRzID0gc2Vjb25kcyA8IDQ1ICYmIHN1YnN0aXR1dGUoJGwuc2Vjb25kcywgTWF0aC5yb3VuZChzZWNvbmRzKSkgfHwKICAgICAgICBzZWNvbmRzIDwgOTAgJiYgc3Vic3RpdHV0ZSgkbC5taW51dGUsIDEpIHx8CiAgICAgICAgbWludXRlcyA8IDQ1ICYmIHN1YnN0aXR1dGUoJGwubWludXRlcywgTWF0aC5yb3VuZChtaW51dGVzKSkgfHwKICAgICAgICBtaW51dGVzIDwgOTAgJiYgc3Vic3RpdHV0ZSgkbC5ob3VyLCAxKSB8fAogICAgICAgIGhvdXJzIDwgMjQgJiYgc3Vic3RpdHV0ZSgkbC5ob3VycywgTWF0aC5yb3VuZChob3VycykpIHx8CiAgICAgICAgaG91cnMgPCA0MiAmJiBzdWJzdGl0dXRlKCRsLmRheSwgMSkgfHwKICAgICAgICBkYXlzIDwgMzAgJiYgc3Vic3RpdHV0ZSgkbC5kYXlzLCBNYXRoLnJvdW5kKGRheXMpKSB8fAogICAgICAgIGRheXMgPCA0NSAmJiBzdWJzdGl0dXRlKCRsLm1vbnRoLCAxKSB8fAogICAgICAgIGRheXMgPCAzNjUgJiYgc3Vic3RpdHV0ZSgkbC5tb250aHMsIE1hdGgucm91bmQoZGF5cyAvIDMwKSkgfHwKICAgICAgICB5ZWFycyA8IDEuNSAmJiBzdWJzdGl0dXRlKCRsLnllYXIsIDEpIHx8CiAgICAgICAgc3Vic3RpdHV0ZSgkbC55ZWFycywgTWF0aC5yb3VuZCh5ZWFycykpOwoKICAgICAgdmFyIHNlcGFyYXRvciA9ICRsLndvcmRTZXBhcmF0b3IgfHwgIiI7CiAgICAgIGlmICgkbC53b3JkU2VwYXJhdG9yID09PSB1bmRlZmluZWQpIHsgc2VwYXJhdG9yID0gIiAiOyB9CiAgICAgIHJldHVybiAkLnRyaW0oW3ByZWZpeCwgd29yZHMsIHN1ZmZpeF0uam9pbihzZXBhcmF0b3IpKTsKICAgIH0sCgogICAgcGFyc2U6IGZ1bmN0aW9uKGlzbzg2MDEpIHsKICAgICAgdmFyIHMgPSAkLnRyaW0oaXNvODYwMSk7CiAgICAgIHMgPSBzLnJlcGxhY2UoL1wuXGQrLywiIik7IC8vIHJlbW92ZSBtaWxsaXNlY29uZHMKICAgICAgcyA9IHMucmVwbGFjZSgvLS8sIi8iKS5yZXBsYWNlKC8tLywiLyIpOwogICAgICBzID0gcy5yZXBsYWNlKC9ULywiICIpLnJlcGxhY2UoL1ovLCIgVVRDIik7CiAgICAgIHMgPSBzLnJlcGxhY2UoLyhbXCtcLV1cZFxkKVw6PyhcZFxkKS8sIiAkMSQyIik7IC8vIC0wNDowMCAtPiAtMDQwMAogICAgICBzID0gcy5yZXBsYWNlKC8oW1wrXC1dXGRcZCkkLywiICQxMDAiKTsgLy8gKzA5IC0+ICswOTAwCiAgICAgIHJldHVybiBuZXcgRGF0ZShzKTsKICAgIH0sCiAgICBkYXRldGltZTogZnVuY3Rpb24oZWxlbSkgewogICAgICB2YXIgaXNvODYwMSA9ICR0LmlzVGltZShlbGVtKSA/ICQoZWxlbSkuYXR0cigiZGF0ZXRpbWUiKSA6ICQoZWxlbSkuYXR0cigidGl0bGUiKTsKICAgICAgcmV0dXJuICR0LnBhcnNlKGlzbzg2MDEpOwogICAgfSwKICAgIGlzVGltZTogZnVuY3Rpb24oZWxlbSkgewogICAgICAvLyBqUXVlcnkncyBgaXMoKWAgZG9lc24ndCBwbGF5IHdlbGwgd2l0aCBIVE1MNSBpbiBJRQogICAgICByZXR1cm4gJChlbGVtKS5nZXQoMCkudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAidGltZSI7IC8vICQoZWxlbSkuaXMoInRpbWUiKTsKICAgIH0KICB9KTsKCiAgLy8gZnVuY3Rpb25zIHRoYXQgY2FuIGJlIGNhbGxlZCB2aWEgJChlbCkudGltZWFnbygnYWN0aW9uJykKICAvLyBpbml0IGlzIGRlZmF1bHQgd2hlbiBubyBhY3Rpb24gaXMgZ2l2ZW4KICAvLyBmdW5jdGlvbnMgYXJlIGNhbGxlZCB3aXRoIGNvbnRleHQgb2YgYSBzaW5nbGUgZWxlbWVudAogIHZhciBmdW5jdGlvbnMgPSB7CiAgICBpbml0OiBmdW5jdGlvbigpewogICAgICB2YXIgcmVmcmVzaF9lbCA9ICQucHJveHkocmVmcmVzaCwgdGhpcyk7CiAgICAgIHJlZnJlc2hfZWwoKTsKICAgICAgdmFyICRzID0gJHQuc2V0dGluZ3M7CiAgICAgIGlmICgkcy5yZWZyZXNoTWlsbGlzID4gMCkgewogICAgICAgIHRoaXMuX3RpbWVhZ29JbnRlcnZhbCA9IHNldEludGVydmFsKHJlZnJlc2hfZWwsICRzLnJlZnJlc2hNaWxsaXMpOwogICAgICB9CiAgICB9LAogICAgdXBkYXRlOiBmdW5jdGlvbih0aW1lKXsKICAgICAgdmFyIHBhcnNlZFRpbWUgPSAkdC5wYXJzZSh0aW1lKTsKICAgICAgJCh0aGlzKS5kYXRhKCd0aW1lYWdvJywgeyBkYXRldGltZTogcGFyc2VkVGltZSB9KTsKICAgICAgaWYoJHQuc2V0dGluZ3MubG9jYWxlVGl0bGUpICQodGhpcykuYXR0cigidGl0bGUiLCBwYXJzZWRUaW1lLnRvTG9jYWxlU3RyaW5nKCkpOwogICAgICByZWZyZXNoLmFwcGx5KHRoaXMpOwogICAgfSwKICAgIHVwZGF0ZUZyb21ET006IGZ1bmN0aW9uKCl7CiAgICAgICQodGhpcykuZGF0YSgndGltZWFnbycsIHsgZGF0ZXRpbWU6ICR0LnBhcnNlKCAkdC5pc1RpbWUodGhpcykgPyAkKHRoaXMpLmF0dHIoImRhdGV0aW1lIikgOiAkKHRoaXMpLmF0dHIoInRpdGxlIikgKSB9KTsKICAgICAgcmVmcmVzaC5hcHBseSh0aGlzKTsKICAgIH0sCiAgICBkaXNwb3NlOiBmdW5jdGlvbiAoKSB7CiAgICAgIGlmICh0aGlzLl90aW1lYWdvSW50ZXJ2YWwpIHsKICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLl90aW1lYWdvSW50ZXJ2YWwpOwogICAgICAgIHRoaXMuX3RpbWVhZ29JbnRlcnZhbCA9IG51bGw7CiAgICAgIH0KICAgIH0KICB9OwoKICAkLmZuLnRpbWVhZ28gPSBmdW5jdGlvbihhY3Rpb24sIG9wdGlvbnMpIHsKICAgIHZhciBmbiA9IGFjdGlvbiA/IGZ1bmN0aW9uc1thY3Rpb25dIDogZnVuY3Rpb25zLmluaXQ7CiAgICBpZighZm4pewogICAgICB0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gZnVuY3Rpb24gbmFtZSAnIisgYWN0aW9uICsiJyBmb3IgdGltZWFnbyIpOwogICAgfQogICAgLy8gZWFjaCBvdmVyIG9iamVjdHMgaGVyZSBhbmQgY2FsbCB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uCiAgICB0aGlzLmVhY2goZnVuY3Rpb24oKXsKICAgICAgZm4uY2FsbCh0aGlzLCBvcHRpb25zKTsKICAgIH0pOwogICAgcmV0dXJuIHRoaXM7CiAgfTsKCiAgZnVuY3Rpb24gcmVmcmVzaCgpIHsKICAgIC8vY2hlY2sgaWYgaXQncyBzdGlsbCB2aXNpYmxlCiAgICBpZighJC5jb250YWlucyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsdGhpcykpewogICAgICAvL3N0b3AgaWYgaXQgaGFzIGJlZW4gcmVtb3ZlZAogICAgICAkKHRoaXMpLnRpbWVhZ28oImRpc3Bvc2UiKTsKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9CgogICAgdmFyIGRhdGEgPSBwcmVwYXJlRGF0YSh0aGlzKTsKICAgIHZhciAkcyA9ICR0LnNldHRpbmdzOwoKICAgIGlmICghaXNOYU4oZGF0YS5kYXRldGltZSkpIHsKICAgICAgaWYgKCAkcy5jdXRvZmYgPT0gMCB8fCBNYXRoLmFicyhkaXN0YW5jZShkYXRhLmRhdGV0aW1lKSkgPCAkcy5jdXRvZmYpIHsKICAgICAgICAkKHRoaXMpLnRleHQoaW5Xb3JkcyhkYXRhLmRhdGV0aW1lKSk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiB0aGlzOwogIH0KCiAgZnVuY3Rpb24gcHJlcGFyZURhdGEoZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAoIWVsZW1lbnQuZGF0YSgidGltZWFnbyIpKSB7CiAgICAgIGVsZW1lbnQuZGF0YSgidGltZWFnbyIsIHsgZGF0ZXRpbWU6ICR0LmRhdGV0aW1lKGVsZW1lbnQpIH0pOwogICAgICB2YXIgdGV4dCA9ICQudHJpbShlbGVtZW50LnRleHQoKSk7CiAgICAgIGlmICgkdC5zZXR0aW5ncy5sb2NhbGVUaXRsZSkgewogICAgICAgIGVsZW1lbnQuYXR0cigidGl0bGUiLCBlbGVtZW50LmRhdGEoJ3RpbWVhZ28nKS5kYXRldGltZS50b0xvY2FsZVN0cmluZygpKTsKICAgICAgfSBlbHNlIGlmICh0ZXh0Lmxlbmd0aCA+IDAgJiYgISgkdC5pc1RpbWUoZWxlbWVudCkgJiYgZWxlbWVudC5hdHRyKCJ0aXRsZSIpKSkgewogICAgICAgIGVsZW1lbnQuYXR0cigidGl0bGUiLCB0ZXh0KTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIGVsZW1lbnQuZGF0YSgidGltZWFnbyIpOwogIH0KCiAgZnVuY3Rpb24gaW5Xb3JkcyhkYXRlKSB7CiAgICByZXR1cm4gJHQuaW5Xb3JkcyhkaXN0YW5jZShkYXRlKSk7CiAgfQoKICBmdW5jdGlvbiBkaXN0YW5jZShkYXRlKSB7CiAgICByZXR1cm4gKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gZGF0ZS5nZXRUaW1lKCkpOwogIH0KCiAgLy8gZml4IGZvciBJRTYgc3Vja2FnZQogIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImFiYnIiKTsKICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aW1lIik7Cn0pKTs=]]></data>
	</file>
	<file>
	  <filename>/themes/rookie/js/navigation.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIG5hdmlnYXRpb24uanMKICoKICogSGFuZGxlcyB0b2dnbGluZyB0aGUgbmF2aWdhdGlvbiBtZW51IGZvciBzbWFsbCBzY3JlZW5zLgogKi8KKCBmdW5jdGlvbigpIHsKCXZhciBjb250YWluZXIsIGJ1dHRvbiwgbWVudTsKCgljb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ3NpdGUtbmF2aWdhdGlvbicgKTsKCWlmICggISBjb250YWluZXIgKSB7CgkJcmV0dXJuOwoJfQoKCWJ1dHRvbiA9IGNvbnRhaW5lci5nZXRFbGVtZW50c0J5VGFnTmFtZSggJ2J1dHRvbicgKVswXTsKCWlmICggJ3VuZGVmaW5lZCcgPT09IHR5cGVvZiBidXR0b24gKSB7CgkJcmV0dXJuOwoJfQoKCW1lbnUgPSBjb250YWluZXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoICd1bCcgKVswXTsKCgkvLyBIaWRlIG1lbnUgdG9nZ2xlIGJ1dHRvbiBpZiBtZW51IGlzIGVtcHR5IGFuZCByZXR1cm4gZWFybHkuCglpZiAoICd1bmRlZmluZWQnID09PSB0eXBlb2YgbWVudSApIHsKCQlidXR0b24uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKCQlyZXR1cm47Cgl9CgoJbWVudS5zZXRBdHRyaWJ1dGUoICdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyApOwoKCWlmICggLTEgPT09IG1lbnUuY2xhc3NOYW1lLmluZGV4T2YoICduYXYtbWVudScgKSApIHsKCQltZW51LmNsYXNzTmFtZSArPSAnIG5hdi1tZW51JzsKCX0KCglidXR0b24ub25jbGljayA9IGZ1bmN0aW9uKCkgewoJCWlmICggLTEgIT09IGNvbnRhaW5lci5jbGFzc05hbWUuaW5kZXhPZiggJ3RvZ2dsZWQnICkgKSB7CgkJCWNvbnRhaW5lci5jbGFzc05hbWUgPSBjb250YWluZXIuY2xhc3NOYW1lLnJlcGxhY2UoICcgdG9nZ2xlZCcsICcnICk7CgkJCWJ1dHRvbi5zZXRBdHRyaWJ1dGUoICdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyApOwoJCQltZW51LnNldEF0dHJpYnV0ZSggJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnICk7CgkJfSBlbHNlIHsKCQkJY29udGFpbmVyLmNsYXNzTmFtZSArPSAnIHRvZ2dsZWQnOwoJCQlidXR0b24uc2V0QXR0cmlidXRlKCAnYXJpYS1leHBhbmRlZCcsICd0cnVlJyApOwoJCQltZW51LnNldEF0dHJpYnV0ZSggJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScgKTsKCQl9Cgl9Owp9ICkoKTs=]]></data>
	</file>
	<file>
	  <filename>/themes/rookie/js/scripts.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIHNjcmlwdHMuanMKICoKICogQ3VzdG9tIHNjcmlwdHMgZm9yIHRoZSBSb29raWUgdGhlbWUuCiAqLwooIGZ1bmN0aW9uKCAkICkgewoJJCgnLmNvbW1lbnQtbWV0YWRhdGEgdGltZScpLnRpbWVhZ28oKTsKfSApKCBqUXVlcnkgKTs=]]></data>
	</file>
	<file>
	  <filename>/themes/rookie/js/skip-link-focus-fix.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[KCBmdW5jdGlvbigpIHsKCXZhciBpc193ZWJraXQgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZiggJ3dlYmtpdCcgKSA+IC0xLAoJICAgIGlzX29wZXJhICA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCAnb3BlcmEnICkgID4gLTEsCgkgICAgaXNfaWUgICAgID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoICdtc2llJyApICAgPiAtMTsKCglpZiAoICggaXNfd2Via2l0IHx8IGlzX29wZXJhIHx8IGlzX2llICkgJiYgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQgJiYgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIgKSB7CgkJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICdoYXNoY2hhbmdlJywgZnVuY3Rpb24oKSB7CgkJCXZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIGxvY2F0aW9uLmhhc2guc3Vic3RyaW5nKCAxICkgKTsKCgkJCWlmICggZWxlbWVudCApIHsKCQkJCWlmICggISAvXig/OmF8c2VsZWN0fGlucHV0fGJ1dHRvbnx0ZXh0YXJlYSkkL2kudGVzdCggZWxlbWVudC50YWdOYW1lICkgKQoJCQkJCWVsZW1lbnQudGFiSW5kZXggPSAtMTsKCgkJCQllbGVtZW50LmZvY3VzKCk7CgkJCX0KCQl9LCBmYWxzZSApOwoJfQp9KSgpOw==]]></data>
	</file>
	<file>
	  <filename>/themes/rookie/js/wp-embed-min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGMoKXtpZighZSl7ZT0hMDt2YXIgYSxjLGQsZixnPS0xIT09bmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZigiTVNJRSAxMCIpLGg9ISFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9UcmlkZW50LipydjoxMVwuLyksaT1iLnF1ZXJ5U2VsZWN0b3JBbGwoImlmcmFtZS53cC1lbWJlZGRlZC1jb250ZW50Iiksaj1iLnF1ZXJ5U2VsZWN0b3JBbGwoImJsb2NrcXVvdGUud3AtZW1iZWRkZWQtY29udGVudCIpO2ZvcihjPTA7YzxqLmxlbmd0aDtjKyspaltjXS5zdHlsZS5kaXNwbGF5PSJub25lIjtmb3IoYz0wO2M8aS5sZW5ndGg7YysrKWlmKGQ9aVtjXSxkLnN0eWxlLmRpc3BsYXk9IiIsIWQuZ2V0QXR0cmlidXRlKCJkYXRhLXNlY3JldCIpKXtpZihmPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLDEwKSxkLnNyYys9IiM/c2VjcmV0PSIrZixkLnNldEF0dHJpYnV0ZSgiZGF0YS1zZWNyZXQiLGYpLGd8fGgpYT1kLmNsb25lTm9kZSghMCksYS5yZW1vdmVBdHRyaWJ1dGUoInNlY3VyaXR5IiksZC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChhLGQpfWVsc2U7fX12YXIgZD0hMSxlPSExO2lmKGIucXVlcnlTZWxlY3RvcilpZihhLmFkZEV2ZW50TGlzdGVuZXIpZD0hMDtpZihhLndwPWEud3B8fHt9LCFhLndwLnJlY2VpdmVFbWJlZE1lc3NhZ2UpaWYoYS53cC5yZWNlaXZlRW1iZWRNZXNzYWdlPWZ1bmN0aW9uKGMpe3ZhciBkPWMuZGF0YTtpZihkLnNlY3JldHx8ZC5tZXNzYWdlfHxkLnZhbHVlKWlmKCEvW15hLXpBLVowLTldLy50ZXN0KGQuc2VjcmV0KSl7dmFyIGUsZixnLGgsaSxqPWIucXVlcnlTZWxlY3RvckFsbCgnaWZyYW1lW2RhdGEtc2VjcmV0PSInK2Quc2VjcmV0KyciXScpLGs9Yi5xdWVyeVNlbGVjdG9yQWxsKCdibG9ja3F1b3RlW2RhdGEtc2VjcmV0PSInK2Quc2VjcmV0KyciXScpO2ZvcihlPTA7ZTxrLmxlbmd0aDtlKyspa1tlXS5zdHlsZS5kaXNwbGF5PSJub25lIjtmb3IoZT0wO2U8ai5sZW5ndGg7ZSsrKWlmKGY9altlXSxjLnNvdXJjZT09PWYuY29udGVudFdpbmRvdyl7aWYoZi5zdHlsZS5kaXNwbGF5PSIiLCJoZWlnaHQiPT09ZC5tZXNzYWdlKXtpZihnPXBhcnNlSW50KGQudmFsdWUsMTApLGc+MWUzKWc9MWUzO2Vsc2UgaWYoMjAwPn5+ZylnPTIwMDtmLmhlaWdodD1nfWlmKCJsaW5rIj09PWQubWVzc2FnZSlpZihoPWIuY3JlYXRlRWxlbWVudCgiYSIpLGk9Yi5jcmVhdGVFbGVtZW50KCJhIiksaC5ocmVmPWYuZ2V0QXR0cmlidXRlKCJzcmMiKSxpLmhyZWY9ZC52YWx1ZSxpLmhvc3Q9PT1oLmhvc3QpaWYoYi5hY3RpdmVFbGVtZW50PT09ZilhLnRvcC5sb2NhdGlvbi5ocmVmPWQudmFsdWV9ZWxzZTt9fSxkKWEuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsYS53cC5yZWNlaXZlRW1iZWRNZXNzYWdlLCExKSxiLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGMsITEpLGEuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsYywhMSl9KHdpbmRvdyxkb2N1bWVudCk7]]></data>
	</file>
	<file>
	  <filename>/themes/rookie/js/wp-emoji-release.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gU291cmNlOiB3cC1pbmNsdWRlcy9qcy90d2Vtb2ppLm1pbi5qcwp2YXIgdHdlbW9qaT1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKGEpe3JldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShhKX1mdW5jdGlvbiBiKGEpe3JldHVybiBhLnJlcGxhY2UocyxoKX1mdW5jdGlvbiBjKGEsYil7cmV0dXJuIiIuY29uY2F0KGIuYmFzZSxiLnNpemUsIi8iLGEsYi5leHQpfWZ1bmN0aW9uIGQoYSxiKXtmb3IodmFyIGMsZSxmPWEuY2hpbGROb2RlcyxnPWYubGVuZ3RoO2ctLTspYz1mW2ddLGU9Yy5ub2RlVHlwZSwzPT09ZT9iLnB1c2goYyk6MSE9PWV8fHQudGVzdChjLm5vZGVOYW1lKXx8ZChjLGIpO3JldHVybiBifWZ1bmN0aW9uIGUoYSxiKXtyZXR1cm4gbygiXHVmZTBmIj09PWI/YS5zbGljZSgwLC0xKTozPT09YS5sZW5ndGgmJiJcdWZlMGYiPT09YS5jaGFyQXQoMSk/YS5jaGFyQXQoMCkrYS5jaGFyQXQoMik6YSl9ZnVuY3Rpb24gZihiLGMpe2Zvcih2YXIgZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscyx0LHU9ZChiLFtdKSx2PXUubGVuZ3RoO3YtLTspe2ZvcihoPSExLGk9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGo9dVt2XSxrPWoubm9kZVZhbHVlLG09MDtsPXIuZXhlYyhrKTspe2lmKG49bC5pbmRleCxuIT09bSYmaS5hcHBlbmRDaGlsZChhKGsuc2xpY2UobSxuKSkpLHA9bFswXSxxPWxbMV0scz1sWzJdLG09bitwLmxlbmd0aCwiXHVmZTBlIiE9PXMmJih0PWMuY2FsbGJhY2soZShxLHMpLGMscykpKXtvPW5ldyBJbWFnZSxvLm9uZXJyb3I9Yy5vbmVycm9yLG8uc2V0QXR0cmlidXRlKCJkcmFnZ2FibGUiLCJmYWxzZSIpLGY9Yy5hdHRyaWJ1dGVzKHEscyk7Zm9yKGcgaW4gZilmLmhhc093blByb3BlcnR5KGcpJiYwIT09Zy5pbmRleE9mKCJvbiIpJiYhby5oYXNBdHRyaWJ1dGUoZykmJm8uc2V0QXR0cmlidXRlKGcsZltnXSk7by5jbGFzc05hbWU9Yy5jbGFzc05hbWUsby5hbHQ9cCxvLnNyYz10LGg9ITAsaS5hcHBlbmRDaGlsZChvKX1vfHxpLmFwcGVuZENoaWxkKGEocCkpLG89bnVsbH1oJiYobTxrLmxlbmd0aCYmaS5hcHBlbmRDaGlsZChhKGsuc2xpY2UobSkpKSxqLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGksaikpfXJldHVybiBifWZ1bmN0aW9uIGcoYSxjKXtyZXR1cm4gbShhLGZ1bmN0aW9uKGEsZCxmKXt2YXIgZyxoLGksaj1hO2lmKCJcdWZlMGUiIT09ZiYmKGk9Yy5jYWxsYmFjayhlKGQsZiksYyxmKSkpe2o9IjxpbWcgIi5jb25jYXQoJ2NsYXNzPSInLGMuY2xhc3NOYW1lLCciICcsJ2RyYWdnYWJsZT0iZmFsc2UiICcsJ2FsdD0iJyxhLCciJywnIHNyYz0iJyxpLCciJyksZz1jLmF0dHJpYnV0ZXMoZCxmKTtmb3IoaCBpbiBnKWcuaGFzT3duUHJvcGVydHkoaCkmJjAhPT1oLmluZGV4T2YoIm9uIikmJi0xPT09ai5pbmRleE9mKCIgIitoKyI9IikmJihqPWouY29uY2F0KCIgIixoLCc9IicsYihnW2hdKSwnIicpKTtqPWouY29uY2F0KCI+Iil9cmV0dXJuIGp9KX1mdW5jdGlvbiBoKGEpe3JldHVybiBxW2FdfWZ1bmN0aW9uIGkoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBqKGEpe3JldHVybiJudW1iZXIiPT10eXBlb2YgYT9hKyJ4IithOmF9ZnVuY3Rpb24gayhhKXt2YXIgYj0ic3RyaW5nIj09dHlwZW9mIGE/cGFyc2VJbnQoYSwxNik6YTtyZXR1cm4gNjU1MzY+Yj91KGIpOihiLT02NTUzNix1KDU1Mjk2KyhiPj4xMCksNTYzMjArKDEwMjMmYikpKX1mdW5jdGlvbiBsKGEsYil7cmV0dXJuIGImJiJmdW5jdGlvbiIhPXR5cGVvZiBifHwoYj17Y2FsbGJhY2s6Yn0pLCgic3RyaW5nIj09dHlwZW9mIGE/ZzpmKShhLHtjYWxsYmFjazpiLmNhbGxiYWNrfHxjLGF0dHJpYnV0ZXM6ImZ1bmN0aW9uIj09dHlwZW9mIGIuYXR0cmlidXRlcz9iLmF0dHJpYnV0ZXM6aSxiYXNlOiJzdHJpbmciPT10eXBlb2YgYi5iYXNlP2IuYmFzZTpwLmJhc2UsZXh0OmIuZXh0fHxwLmV4dCxzaXplOmIuZm9sZGVyfHxqKGIuc2l6ZXx8cC5zaXplKSxjbGFzc05hbWU6Yi5jbGFzc05hbWV8fHAuY2xhc3NOYW1lLG9uZXJyb3I6Yi5vbmVycm9yfHxwLm9uZXJyb3J9KX1mdW5jdGlvbiBtKGEsYil7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKHIsYil9ZnVuY3Rpb24gbihhKXtyLmxhc3RJbmRleD0wO3ZhciBiPXIudGVzdChhKTtyZXR1cm4gci5sYXN0SW5kZXg9MCxifWZ1bmN0aW9uIG8oYSxiKXtmb3IodmFyIGM9W10sZD0wLGU9MCxmPTA7ZjxhLmxlbmd0aDspZD1hLmNoYXJDb2RlQXQoZisrKSxlPyhjLnB1c2goKDY1NTM2KyhlLTU1Mjk2PDwxMCkrKGQtNTYzMjApKS50b1N0cmluZygxNikpLGU9MCk6ZD49NTUyOTYmJjU2MzE5Pj1kP2U9ZDpjLnB1c2goZC50b1N0cmluZygxNikpO3JldHVybiBjLmpvaW4oYnx8Ii0iKX12YXIgcD17YmFzZTooImh0dHBzOiI9PT1sb2NhdGlvbi5wcm90b2NvbD8iaHR0cHM6IjoiaHR0cDoiKSsiLy90d2Vtb2ppLm1heGNkbi5jb20vIixleHQ6Ii5wbmciLHNpemU6IjM2eDM2IixjbGFzc05hbWU6ImVtb2ppIixjb252ZXJ0Ontmcm9tQ29kZVBvaW50OmssdG9Db2RlUG9pbnQ6b30sb25lcnJvcjpmdW5jdGlvbigpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChhKHRoaXMuYWx0KSx0aGlzKX0scGFyc2U6bCxyZXBsYWNlOm0sdGVzdDpufSxxPXsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsIiciOiImIzM5OyIsJyInOiImcXVvdDsifSxyPS8oKD86XHVkODNkXHVkYzY5XHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzhiXHUyMDBkXHVkODNkXHVkYzY5fFx1ZDgzZFx1ZGM2OFx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM4Ylx1MjAwZFx1ZDgzZFx1ZGM2OHxcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjdcdTIwMGRcdWQ4M2RcdWRjNjd8XHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY2XHUyMDBkXHVkODNkXHVkYzY2fFx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2N1x1MjAwZFx1ZDgzZFx1ZGM2NnxcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjdcdTIwMGRcdWQ4M2RcdWRjNjd8XHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY3XHUyMDBkXHVkODNkXHVkYzY2fFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2N1x1MjAwZFx1ZDgzZFx1ZGM2N3xcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjZcdTIwMGRcdWQ4M2RcdWRjNjZ8XHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY2XHUyMDBkXHVkODNkXHVkYzY2fFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2N1x1MjAwZFx1ZDgzZFx1ZGM2NnxcdWQ4M2RcdWRjNjhcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjNjh8XHVkODNkXHVkYzY5XHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzY5fFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2NnxcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjZ8XHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY3fFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2N3xcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjd8XHVkODNjXHVkZGY3XHVkODNjXHVkZGY4fFx1ZDgzZFx1ZGQ5NVx1ZDgzY1x1ZGZmZHxcdWQ4M2RcdWRkOTVcdWQ4M2NcdWRmZmN8XHVkODNkXHVkZDk1XHVkODNjXHVkZmZifFx1ZDgzZFx1ZGQ5MFx1ZDgzY1x1ZGZmZnxcdWQ4M2RcdWRkOTBcdWQ4M2NcdWRmZmV8XHVkODNkXHVkZDkwXHVkODNjXHVkZmZkfFx1ZDgzZFx1ZGQ5MFx1ZDgzY1x1ZGZmY3xcdWQ4M2RcdWRkOTBcdWQ4M2NcdWRmZmJ8XHVkODNkXHVkY2FhXHVkODNjXHVkZmZmfFx1ZDgzZFx1ZGNhYVx1ZDgzY1x1ZGZmZXxcdWQ4M2RcdWRjYWFcdWQ4M2NcdWRmZmR8XHVkODNkXHVkY2FhXHVkODNjXHVkZmZjfFx1ZDgzZFx1ZGNhYVx1ZDgzY1x1ZGZmYnxcdWQ4M2RcdWRjODdcdWQ4M2NcdWRmZmZ8XHVkODNkXHVkYzg3XHVkODNjXHVkZmZlfFx1ZDgzZFx1ZGM4N1x1ZDgzY1x1ZGZmZHxcdWQ4M2RcdWRjODdcdWQ4M2NcdWRmZmN8XHVkODNkXHVkYzg3XHVkODNjXHVkZmZifFx1ZDgzZFx1ZGM4Nlx1ZDgzY1x1ZGZmZnxcdWQ4M2RcdWRjODZcdWQ4M2NcdWRmZmV8XHVkODNkXHVkYzg2XHVkODNjXHVkZmZkfFx1ZDgzZVx1ZGQxOFx1ZDgzY1x1ZGZmZnxcdWQ4M2VcdWRkMThcdWQ4M2NcdWRmZmV8XHVkODNlXHVkZDE4XHVkODNjXHVkZmZkfFx1ZDgzZVx1ZGQxOFx1ZDgzY1x1ZGZmY3xcdWQ4M2VcdWRkMThcdWQ4M2NcdWRmZmJ8XHVkODNkXHVkZWMwXHVkODNjXHVkZmZmfFx1ZDgzZFx1ZGVjMFx1ZDgzY1x1ZGZmZXxcdWQ4M2RcdWRlYzBcdWQ4M2NcdWRmZmR8XHVkODNkXHVkZWMwXHVkODNjXHVkZmZjfFx1ZDgzZFx1ZGVjMFx1ZDgzY1x1ZGZmYnxcdWQ4M2RcdWRlYjZcdWQ4M2NcdWRmZmZ8XHVkODNkXHVkZWI2XHVkODNjXHVkZmZlfFx1ZDgzZFx1ZGViNlx1ZDgzY1x1ZGZmZHxcdWQ4M2RcdWRlYjZcdWQ4M2NcdWRmZmN8XHVkODNkXHVkZWI2XHVkODNjXHVkZmZifFx1ZDgzZFx1ZGViNVx1ZDgzY1x1ZGZmZnxcdWQ4M2RcdWRlYjVcdWQ4M2NcdWRmZmV8XHVkODNkXHVkZWI1XHVkODNjXHVkZmZkfFx1ZDgzZFx1ZGViNVx1ZDgzY1x1ZGZmY3xcdWQ4M2RcdWRlYjVcdWQ4M2NcdWRmZmJ8XHVkODNkXHVkZWI0XHVkODNjXHVkZmZmfFx1ZDgzZFx1ZGViNFx1ZDgzY1x1ZGZmZXxcdWQ4M2RcdWRlYjRcdWQ4M2NcdWRmZmR8XHVkODNkXHVkZWI0XHVkODNjXHVkZmZjfFx1ZDgzZFx1ZGViNFx1ZDgzY1x1ZGZmYnxcdWQ4M2RcdWRlYTNcdWQ4M2NcdWRmZmZ8XHVkODNkXHVkZWEzXHVkODNjXHVkZmZlfFx1ZDgzZFx1ZGVhM1x1ZDgzY1x1ZGZmZHxcdWQ4M2RcdWRlYTNcdWQ4M2NcdWRmZmN8XHVkODNkXHVkZWEzXHVkODNjXHVkZmZifFx1ZDgzZFx1ZGU0Zlx1ZDgzY1x1ZGZmZnxcdWQ4M2RcdWRlNGZcdWQ4M2NcdWRmZmV8XHVkODNkXHVkZTRmXHVkODNjXHVkZmZkfFx1ZDgzZFx1ZGU0Zlx1ZDgzY1x1ZGZmY3xcdWQ4M2RcdWRlNGZcdWQ4M2NcdWRmZmJ8XHVkODNkXHVkZTRlXHVkODNjXHVkZmZmfFx1ZDgzZFx1ZGU0ZVx1ZDgzY1x1ZGZmZXxcdWQ4M2RcdWRlNGVcdWQ4M2NcdWRmZmR8XHVkODNkXHVkZTRlXHVkODNjXHVkZmZjfFx1ZDgzZFx1ZGU0ZVx1ZDgzY1x1ZGZmYnxcdWQ4M2RcdWRlNGRcdWQ4M2NcdWRmZmZ8XHVkODNkXHVkZTRkXHVkODNjXHVkZmZlfFx1ZDgzZFx1ZGU0ZFx1ZDgzY1x1ZGZmZHxcdWQ4M2RcdWRlNGRcdWQ4M2NcdWRmZmN8XHVkODNkXHVkZTRkXHVkODNjXHVkZmZifFx1ZDgzZFx1ZGU0Y1x1ZDgzY1x1ZGZmZnxcdWQ4M2RcdWRlNGNcdWQ4M2NcdWRmZmV8XHVkODNkXHVkZTRjXHVkODNjXHVkZmZkfFx1ZDgzZFx1ZGU0Y1x1ZDgzY1x1ZGZmY3xcdWQ4M2RcdWRlNGNcdWQ4M2NcdWRmZmJ8XHVkODNkXHVkZTRiXHVkODNjXHVkZmZmfFx1ZDgzZFx1ZGU0Ylx1ZDgzY1x1ZGZmZXxcdWQ4M2RcdWRlNGJcdWQ4M2NcdWRmZmR8XHVkODNkXHVkZTRiXHVkODNjXHVkZmZjfFx1ZDgzZFx1ZGU0Ylx1ZDgzY1x1ZGZmYnxcdWQ4M2RcdWRlNDdcdWQ4M2NcdWRmZmZ8XHVkODNkXHVkZTQ3XHVkODNjXHVkZmZlfFx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRmM3xcdWQ4M2NcdWRkZTlcdWQ4M2NcdWRkZWF8XHVkODNjXHVkZGVhXHVkODNjXHVkZGY4fFx1ZDgzY1x1ZGRlYlx1ZDgzY1x1ZGRmN3xcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZTd8XHVkODNjXHVkZGVlXHVkODNjXHVkZGY5fFx1ZDgzY1x1ZGRlZlx1ZDgzY1x1ZGRmNXxcdWQ4M2NcdWRkZjBcdWQ4M2NcdWRkZjd8XHVkODNjXHVkZGY3XHVkODNjXHVkZGZhfFx1ZDgzY1x1ZGRmYVx1ZDgzY1x1ZGRmOHxcdWQ4M2RcdWRjODZcdWQ4M2NcdWRmZmN8XHVkODNkXHVkZTQ3XHVkODNjXHVkZmZkfFx1ZDgzZFx1ZGU0N1x1ZDgzY1x1ZGZmY3xcdWQ4M2RcdWRjODZcdWQ4M2NcdWRmZmJ8XHVkODNkXHVkYzg1XHVkODNjXHVkZmZmfFx1ZDgzZFx1ZGM4NVx1ZDgzY1x1ZGZmZXxcdWQ4M2RcdWRjODVcdWQ4M2NcdWRmZmR8XHVkODNkXHVkYzg1XHVkODNjXHVkZmZjfFx1ZDgzZFx1ZGM4NVx1ZDgzY1x1ZGZmYnxcdWQ4M2RcdWRjODNcdWQ4M2NcdWRmZmZ8XHVkODNkXHVkYzgzXHVkODNjXHVkZmZlfFx1ZDgzZFx1ZGM4M1x1ZDgzY1x1ZGZmZHxcdWQ4M2RcdWRjODNcdWQ4M2NcdWRmZmN8XHVkODNkXHVkYzgzXHVkODNjXHVkZmZifFx1ZDgzZFx1ZGM4Mlx1ZDgzY1x1ZGZmZnxcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZTh8XHVkODNjXHVkZGU2XHVkODNjXHVkZGU5fFx1ZDgzY1x1ZGRlNlx1ZDgzY1x1ZGRlYXxcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZWJ8XHVkODNjXHVkZGU2XHVkODNjXHVkZGVjfFx1ZDgzY1x1ZGRlNlx1ZDgzY1x1ZGRlZXxcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZjF8XHVkODNjXHVkZGU2XHVkODNjXHVkZGYyfFx1ZDgzY1x1ZGRlNlx1ZDgzY1x1ZGRmNHxcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZjZ8XHVkODNjXHVkZGU2XHVkODNjXHVkZGY3fFx1ZDgzY1x1ZGRlNlx1ZDgzY1x1ZGRmOHxcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZjl8XHVkODNjXHVkZGU2XHVkODNjXHVkZGZhfFx1ZDgzY1x1ZGRlNlx1ZDgzY1x1ZGRmY3xcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZmR8XHVkODNjXHVkZGU2XHVkODNjXHVkZGZmfFx1ZDgzY1x1ZGRlN1x1ZDgzY1x1ZGRlNnxcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZTd8XHVkODNjXHVkZGU3XHVkODNjXHVkZGU5fFx1ZDgzY1x1ZGRlN1x1ZDgzY1x1ZGRlYXxcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZWJ8XHVkODNjXHVkZGU3XHVkODNjXHVkZGVjfFx1ZDgzY1x1ZGRlN1x1ZDgzY1x1ZGRlZHxcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZWV8XHVkODNjXHVkZGU3XHVkODNjXHVkZGVmfFx1ZDgzY1x1ZGRlN1x1ZDgzY1x1ZGRmMXxcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZjJ8XHVkODNjXHVkZGU3XHVkODNjXHVkZGYzfFx1ZDgzY1x1ZGRlN1x1ZDgzY1x1ZGRmNHxcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZjZ8XHVkODNjXHVkZGU3XHVkODNjXHVkZGY3fFx1ZDgzY1x1ZGRlN1x1ZDgzY1x1ZGRmOHxcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZjl8XHVkODNjXHVkZGU3XHVkODNjXHVkZGZifFx1ZDgzY1x1ZGRlN1x1ZDgzY1x1ZGRmY3xcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZmV8XHVkODNjXHVkZGU3XHVkODNjXHVkZGZmfFx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRlNnxcdWQ4M2NcdWRkZThcdWQ4M2NcdWRkZTh8XHVkODNjXHVkZGU4XHVkODNjXHVkZGU5fFx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRlYnxcdWQ4M2NcdWRkZThcdWQ4M2NcdWRkZWN8XHVkODNjXHVkZGU4XHVkODNjXHVkZGVkfFx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRlZXxcdWQ4M2NcdWRkZThcdWQ4M2NcdWRkZjB8XHVkODNjXHVkZGU4XHVkODNjXHVkZGYxfFx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRmMnxcdWQ4M2NcdWRkZThcdWQ4M2NcdWRkZjR8XHVkODNjXHVkZGU4XHVkODNjXHVkZGY1fFx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRmN3xcdWQ4M2NcdWRkZThcdWQ4M2NcdWRkZmF8XHVkODNjXHVkZGU4XHVkODNjXHVkZGZifFx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRmY3xcdWQ4M2NcdWRkZThcdWQ4M2NcdWRkZmR8XHVkODNjXHVkZGU4XHVkODNjXHVkZGZlfFx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRmZnxcdWQ4M2NcdWRkZTlcdWQ4M2NcdWRkZWN8XHVkODNjXHVkZGU5XHVkODNjXHVkZGVmfFx1ZDgzY1x1ZGRlOVx1ZDgzY1x1ZGRmMHxcdWQ4M2NcdWRkZTlcdWQ4M2NcdWRkZjJ8XHVkODNjXHVkZGU5XHVkODNjXHVkZGY0fFx1ZDgzY1x1ZGRlOVx1ZDgzY1x1ZGRmZnxcdWQ4M2NcdWRkZWFcdWQ4M2NcdWRkZTZ8XHVkODNjXHVkZGVhXHVkODNjXHVkZGU4fFx1ZDgzY1x1ZGRlYVx1ZDgzY1x1ZGRlYXxcdWQ4M2NcdWRkZWFcdWQ4M2NcdWRkZWN8XHVkODNjXHVkZGVhXHVkODNjXHVkZGVkfFx1ZDgzY1x1ZGRlYVx1ZDgzY1x1ZGRmN3xcdWQ4M2NcdWRkZWFcdWQ4M2NcdWRkZjl8XHVkODNjXHVkZGVhXHVkODNjXHVkZGZhfFx1ZDgzY1x1ZGRlYlx1ZDgzY1x1ZGRlZXxcdWQ4M2NcdWRkZWJcdWQ4M2NcdWRkZWZ8XHVkODNjXHVkZGViXHVkODNjXHVkZGYwfFx1ZDgzY1x1ZGRlYlx1ZDgzY1x1ZGRmMnxcdWQ4M2NcdWRkZWJcdWQ4M2NcdWRkZjR8XHVkODNjXHVkZGVjXHVkODNjXHVkZGU2fFx1ZDgzY1x1ZGRlY1x1ZDgzY1x1ZGRlOXxcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZWF8XHVkODNjXHVkZGVjXHVkODNjXHVkZGVifFx1ZDgzY1x1ZGRlY1x1ZDgzY1x1ZGRlY3xcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZWR8XHVkODNjXHVkZGVjXHVkODNjXHVkZGVlfFx1ZDgzY1x1ZGRlY1x1ZDgzY1x1ZGRmMXxcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZjJ8XHVkODNjXHVkZGVjXHVkODNjXHVkZGYzfFx1ZDgzY1x1ZGRlY1x1ZDgzY1x1ZGRmNXxcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZjZ8XHVkODNjXHVkZGVjXHVkODNjXHVkZGY3fFx1ZDgzY1x1ZGRlY1x1ZDgzY1x1ZGRmOHxcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZjl8XHVkODNjXHVkZGVjXHVkODNjXHVkZGZhfFx1ZDgzY1x1ZGRlY1x1ZDgzY1x1ZGRmY3xcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZmV8XHVkODNjXHVkZGVkXHVkODNjXHVkZGYwfFx1ZDgzY1x1ZGRlZFx1ZDgzY1x1ZGRmMnxcdWQ4M2NcdWRkZWRcdWQ4M2NcdWRkZjN8XHVkODNjXHVkZGVkXHVkODNjXHVkZGY3fFx1ZDgzY1x1ZGRlZFx1ZDgzY1x1ZGRmOXxcdWQ4M2NcdWRkZWRcdWQ4M2NcdWRkZmF8XHVkODNjXHVkZGVlXHVkODNjXHVkZGU4fFx1ZDgzY1x1ZGRlZVx1ZDgzY1x1ZGRlOXxcdWQ4M2NcdWRkZWVcdWQ4M2NcdWRkZWF8XHVkODNjXHVkZGVlXHVkODNjXHVkZGYxfFx1ZDgzY1x1ZGRlZVx1ZDgzY1x1ZGRmMnxcdWQ4M2NcdWRkZWVcdWQ4M2NcdWRkZjN8XHVkODNjXHVkZGVlXHVkODNjXHVkZGY0fFx1ZDgzY1x1ZGRlZVx1ZDgzY1x1ZGRmNnxcdWQ4M2NcdWRkZWVcdWQ4M2NcdWRkZjd8XHVkODNjXHVkZGVlXHVkODNjXHVkZGY4fFx1ZDgzY1x1ZGRlZlx1ZDgzY1x1ZGRlYXxcdWQ4M2NcdWRkZWZcdWQ4M2NcdWRkZjJ8XHVkODNjXHVkZGVmXHVkODNjXHVkZGY0fFx1ZDgzY1x1ZGRmMFx1ZDgzY1x1ZGRlYXxcdWQ4M2NcdWRkZjBcdWQ4M2NcdWRkZWN8XHVkODNjXHVkZGYwXHVkODNjXHVkZGVkfFx1ZDgzY1x1ZGRmMFx1ZDgzY1x1ZGRlZXxcdWQ4M2NcdWRkZjBcdWQ4M2NcdWRkZjJ8XHVkODNjXHVkZGYwXHVkODNjXHVkZGYzfFx1ZDgzY1x1ZGRmMFx1ZDgzY1x1ZGRmNXxcdWQ4M2NcdWRkZjBcdWQ4M2NcdWRkZmN8XHVkODNjXHVkZGYwXHVkODNjXHVkZGZlfFx1ZDgzY1x1ZGRmMFx1ZDgzY1x1ZGRmZnxcdWQ4M2NcdWRkZjFcdWQ4M2NcdWRkZTZ8XHVkODNjXHVkZGYxXHVkODNjXHVkZGU3fFx1ZDgzY1x1ZGRmMVx1ZDgzY1x1ZGRlOHxcdWQ4M2NcdWRkZjFcdWQ4M2NcdWRkZWV8XHVkODNjXHVkZGYxXHVkODNjXHVkZGYwfFx1ZDgzY1x1ZGRmMVx1ZDgzY1x1ZGRmN3xcdWQ4M2NcdWRkZjFcdWQ4M2NcdWRkZjh8XHVkODNjXHVkZGYxXHVkODNjXHVkZGY5fFx1ZDgzY1x1ZGRmMVx1ZDgzY1x1ZGRmYXxcdWQ4M2NcdWRkZjFcdWQ4M2NcdWRkZmJ8XHVkODNjXHVkZGYxXHVkODNjXHVkZGZlfFx1ZDgzY1x1ZGRmMlx1ZDgzY1x1ZGRlNnxcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZTh8XHVkODNjXHVkZGYyXHVkODNjXHVkZGU5fFx1ZDgzY1x1ZGRmMlx1ZDgzY1x1ZGRlYXxcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZWJ8XHVkODNjXHVkZGYyXHVkODNjXHVkZGVjfFx1ZDgzY1x1ZGRmMlx1ZDgzY1x1ZGRlZHxcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZjB8XHVkODNjXHVkZGYyXHVkODNjXHVkZGYxfFx1ZDgzY1x1ZGRmMlx1ZDgzY1x1ZGRmMnxcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZjN8XHVkODNjXHVkZGYyXHVkODNjXHVkZGY0fFx1ZDgzY1x1ZGRmMlx1ZDgzY1x1ZGRmNXxcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZjZ8XHVkODNjXHVkZGYyXHVkODNjXHVkZGY3fFx1ZDgzY1x1ZGRmMlx1ZDgzY1x1ZGRmOHxcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZjl8XHVkODNjXHVkZGYyXHVkODNjXHVkZGZhfFx1ZDgzY1x1ZGRmMlx1ZDgzY1x1ZGRmYnxcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZmN8XHVkODNjXHVkZGYyXHVkODNjXHVkZGZkfFx1ZDgzY1x1ZGRmMlx1ZDgzY1x1ZGRmZXxcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZmZ8XHVkODNjXHVkZGYzXHVkODNjXHVkZGU2fFx1ZDgzY1x1ZGRmM1x1ZDgzY1x1ZGRlOHxcdWQ4M2NcdWRkZjNcdWQ4M2NcdWRkZWF8XHVkODNjXHVkZGYzXHVkODNjXHVkZGVifFx1ZDgzY1x1ZGRmM1x1ZDgzY1x1ZGRlY3xcdWQ4M2NcdWRkZjNcdWQ4M2NcdWRkZWV8XHVkODNjXHVkZGYzXHVkODNjXHVkZGYxfFx1ZDgzY1x1ZGRmM1x1ZDgzY1x1ZGRmNHxcdWQ4M2NcdWRkZjNcdWQ4M2NcdWRkZjV8XHVkODNjXHVkZGYzXHVkODNjXHVkZGY3fFx1ZDgzY1x1ZGRmM1x1ZDgzY1x1ZGRmYXxcdWQ4M2NcdWRkZjNcdWQ4M2NcdWRkZmZ8XHVkODNjXHVkZGY0XHVkODNjXHVkZGYyfFx1ZDgzY1x1ZGRmNVx1ZDgzY1x1ZGRlNnxcdWQ4M2NcdWRkZjVcdWQ4M2NcdWRkZWF8XHVkODNjXHVkZGY1XHVkODNjXHVkZGVifFx1ZDgzY1x1ZGRmNVx1ZDgzY1x1ZGRlY3xcdWQ4M2NcdWRkZjVcdWQ4M2NcdWRkZWR8XHVkODNjXHVkZGY1XHVkODNjXHVkZGYwfFx1ZDgzY1x1ZGRmNVx1ZDgzY1x1ZGRmMXxcdWQ4M2NcdWRkZjVcdWQ4M2NcdWRkZjJ8XHVkODNjXHVkZGY1XHVkODNjXHVkZGYzfFx1ZDgzY1x1ZGRmNVx1ZDgzY1x1ZGRmN3xcdWQ4M2NcdWRkZjVcdWQ4M2NcdWRkZjh8XHVkODNjXHVkZGY1XHVkODNjXHVkZGY5fFx1ZDgzY1x1ZGRmNVx1ZDgzY1x1ZGRmY3xcdWQ4M2NcdWRkZjVcdWQ4M2NcdWRkZmV8XHVkODNjXHVkZGY2XHVkODNjXHVkZGU2fFx1ZDgzY1x1ZGRmN1x1ZDgzY1x1ZGRlYXxcdWQ4M2NcdWRkZjdcdWQ4M2NcdWRkZjR8XHVkODNkXHVkYzgyXHVkODNjXHVkZmZlfFx1ZDgzY1x1ZGRmN1x1ZDgzY1x1ZGRmY3xcdWQ4M2NcdWRkZjhcdWQ4M2NcdWRkZTZ8XHVkODNjXHVkZGY4XHVkODNjXHVkZGU3fFx1ZDgzY1x1ZGRmOFx1ZDgzY1x1ZGRlOHxcdWQ4M2NcdWRkZjhcdWQ4M2NcdWRkZTl8XHVkODNjXHVkZGY4XHVkODNjXHVkZGVhfFx1ZDgzY1x1ZGRmOFx1ZDgzY1x1ZGRlY3xcdWQ4M2NcdWRkZjhcdWQ4M2NcdWRkZWR8XHVkODNjXHVkZGY4XHVkODNjXHVkZGVlfFx1ZDgzY1x1ZGRmOFx1ZDgzY1x1ZGRlZnxcdWQ4M2NcdWRkZjhcdWQ4M2NcdWRkZjB8XHVkODNjXHVkZGY4XHVkODNjXHVkZGYxfFx1ZDgzY1x1ZGRmOFx1ZDgzY1x1ZGRmMnxcdWQ4M2NcdWRkZjhcdWQ4M2NcdWRkZjN8XHVkODNjXHVkZGY4XHVkODNjXHVkZGY0fFx1ZDgzY1x1ZGRmOFx1ZDgzY1x1ZGRmN3xcdWQ4M2NcdWRkZjhcdWQ4M2NcdWRkZjh8XHVkODNjXHVkZGY4XHVkODNjXHVkZGY5fFx1ZDgzY1x1ZGRmOFx1ZDgzY1x1ZGRmYnxcdWQ4M2NcdWRkZjhcdWQ4M2NcdWRkZmR8XHVkODNjXHVkZGY4XHVkODNjXHVkZGZlfFx1ZDgzY1x1ZGRmOFx1ZDgzY1x1ZGRmZnxcdWQ4M2NcdWRkZjlcdWQ4M2NcdWRkZTZ8XHVkODNjXHVkZGY5XHVkODNjXHVkZGU4fFx1ZDgzY1x1ZGRmOVx1ZDgzY1x1ZGRlOXxcdWQ4M2NcdWRkZjlcdWQ4M2NcdWRkZWJ8XHVkODNjXHVkZGY5XHVkODNjXHVkZGVjfFx1ZDgzY1x1ZGRmOVx1ZDgzY1x1ZGRlZHxcdWQ4M2NcdWRkZjlcdWQ4M2NcdWRkZWZ8XHVkODNjXHVkZGY5XHVkODNjXHVkZGYwfFx1ZDgzY1x1ZGRmOVx1ZDgzY1x1ZGRmMXxcdWQ4M2NcdWRkZjlcdWQ4M2NcdWRkZjJ8XHVkODNjXHVkZGY5XHVkODNjXHVkZGYzfFx1ZDgzY1x1ZGRmOVx1ZDgzY1x1ZGRmNHxcdWQ4M2NcdWRkZjlcdWQ4M2NcdWRkZjd8XHVkODNjXHVkZGY5XHVkODNjXHVkZGY5fFx1ZDgzY1x1ZGRmOVx1ZDgzY1x1ZGRmYnxcdWQ4M2NcdWRkZjlcdWQ4M2NcdWRkZmN8XHVkODNjXHVkZGY5XHVkODNjXHVkZGZmfFx1ZDgzY1x1ZGRmYVx1ZDgzY1x1ZGRlNnxcdWQ4M2NcdWRkZmFcdWQ4M2NcdWRkZWN8XHVkODNjXHVkZGZhXHVkODNjXHVkZGYyfFx1ZDgzY1x1ZGRmYVx1ZDgzY1x1ZGRmZXxcdWQ4M2NcdWRkZmFcdWQ4M2NcdWRkZmZ8XHVkODNjXHVkZGZiXHVkODNjXHVkZGU2fFx1ZDgzY1x1ZGRmYlx1ZDgzY1x1ZGRlOHxcdWQ4M2NcdWRkZmJcdWQ4M2NcdWRkZWF8XHVkODNjXHVkZGZiXHVkODNjXHVkZGVjfFx1ZDgzY1x1ZGRmYlx1ZDgzY1x1ZGRlZXxcdWQ4M2NcdWRkZmJcdWQ4M2NcdWRkZjN8XHVkODNjXHVkZGZiXHVkODNjXHVkZGZhfFx1ZDgzY1x1ZGRmY1x1ZDgzY1x1ZGRlYnxcdWQ4M2NcdWRkZmNcdWQ4M2NcdWRkZjh8XHVkODNjXHVkZGZkXHVkODNjXHVkZGYwfFx1ZDgzY1x1ZGRmZVx1ZDgzY1x1ZGRlYXxcdWQ4M2NcdWRkZmVcdWQ4M2NcdWRkZjl8XHVkODNjXHVkZGZmXHVkODNjXHVkZGU2fFx1ZDgzY1x1ZGRmZlx1ZDgzY1x1ZGRmMnxcdWQ4M2NcdWRkZmZcdWQ4M2NcdWRkZmN8XHVkODNjXHVkZjg1XHVkODNjXHVkZmZifFx1ZDgzY1x1ZGY4NVx1ZDgzY1x1ZGZmY3xcdWQ4M2NcdWRmODVcdWQ4M2NcdWRmZmR8XHVkODNjXHVkZjg1XHVkODNjXHVkZmZlfFx1ZDgzY1x1ZGY4NVx1ZDgzY1x1ZGZmZnxcdWQ4M2NcdWRmYzNcdWQ4M2NcdWRmZmJ8XHVkODNjXHVkZmMzXHVkODNjXHVkZmZjfFx1ZDgzY1x1ZGZjM1x1ZDgzY1x1ZGZmZHxcdWQ4M2NcdWRmYzNcdWQ4M2NcdWRmZmV8XHVkODNjXHVkZmMzXHVkODNjXHVkZmZmfFx1ZDgzY1x1ZGZjNFx1ZDgzY1x1ZGZmYnxcdWQ4M2NcdWRmYzRcdWQ4M2NcdWRmZmN8XHVkODNjXHVkZmM0XHVkODNjXHVkZmZkfFx1ZDgzY1x1ZGZjNFx1ZDgzY1x1ZGZmZXxcdWQ4M2NcdWRmYzRcdWQ4M2NcdWRmZmZ8XHVkODNjXHVkZmM3XHVkODNjXHVkZmZifFx1ZDgzY1x1ZGZjN1x1ZDgzY1x1ZGZmY3xcdWQ4M2NcdWRmYzdcdWQ4M2NcdWRmZmR8XHVkODNjXHVkZmM3XHVkODNjXHVkZmZlfFx1ZDgzY1x1ZGZjN1x1ZDgzY1x1ZGZmZnxcdWQ4M2NcdWRmY2FcdWQ4M2NcdWRmZmJ8XHVkODNjXHVkZmNhXHVkODNjXHVkZmZjfFx1ZDgzY1x1ZGZjYVx1ZDgzY1x1ZGZmZHxcdWQ4M2NcdWRmY2FcdWQ4M2NcdWRmZmV8XHVkODNjXHVkZmNhXHVkODNjXHVkZmZmfFx1ZDgzY1x1ZGZjYlx1ZDgzY1x1ZGZmYnxcdWQ4M2NcdWRmY2JcdWQ4M2NcdWRmZmN8XHVkODNjXHVkZmNiXHVkODNjXHVkZmZkfFx1ZDgzY1x1ZGZjYlx1ZDgzY1x1ZGZmZXxcdWQ4M2NcdWRmY2JcdWQ4M2NcdWRmZmZ8XHVkODNkXHVkYzQyXHVkODNjXHVkZmZifFx1ZDgzZFx1ZGM0Mlx1ZDgzY1x1ZGZmY3xcdWQ4M2RcdWRjNDJcdWQ4M2NcdWRmZmR8XHVkODNkXHVkYzQyXHVkODNjXHVkZmZlfFx1ZDgzZFx1ZGM0Mlx1ZDgzY1x1ZGZmZnxcdWQ4M2RcdWRjNDNcdWQ4M2NcdWRmZmJ8XHVkODNkXHVkYzQzXHVkODNjXHVkZmZjfFx1ZDgzZFx1ZGM0M1x1ZDgzY1x1ZGZmZHxcdWQ4M2RcdWRjNDNcdWQ4M2NcdWRmZmV8XHVkODNkXHVkYzQzXHVkODNjXHVkZmZmfFx1ZDgzZFx1ZGM0Nlx1ZDgzY1x1ZGZmYnxcdWQ4M2RcdWRjNDZcdWQ4M2NcdWRmZmN8XHVkODNkXHVkYzQ2XHVkODNjXHVkZmZkfFx1ZDgzZFx1ZGM0Nlx1ZDgzY1x1ZGZmZXxcdWQ4M2RcdWRjNDZcdWQ4M2NcdWRmZmZ8XHVkODNkXHVkYzQ3XHVkODNjXHVkZmZifFx1ZDgzZFx1ZGM0N1x1ZDgzY1x1ZGZmY3xcdWQ4M2RcdWRjNDdcdWQ4M2NcdWRmZmR8XHVkODNkXHVkYzQ3XHVkODNjXHVkZmZlfFx1ZDgzZFx1ZGM0N1x1ZDgzY1x1ZGZmZnxcdWQ4M2RcdWRjNDhcdWQ4M2NcdWRmZmJ8XHVkODNkXHVkYzQ4XHVkODNjXHVkZmZjfFx1ZDgzZFx1ZGM0OFx1ZDgzY1x1ZGZmZHxcdWQ4M2RcdWRjNDhcdWQ4M2NcdWRmZmV8XHVkODNkXHVkYzQ4XHVkODNjXHVkZmZmfFx1ZDgzZFx1ZGM0OVx1ZDgzY1x1ZGZmYnxcdWQ4M2RcdWRjNDlcdWQ4M2NcdWRmZmN8XHVkODNkXHVkYzQ5XHVkODNjXHVkZmZkfFx1ZDgzZFx1ZGM0OVx1ZDgzY1x1ZGZmZXxcdWQ4M2RcdWRjNDlcdWQ4M2NcdWRmZmZ8XHVkODNkXHVkYzRhXHVkODNjXHVkZmZifFx1ZDgzZFx1ZGM0YVx1ZDgzY1x1ZGZmY3xcdWQ4M2RcdWRjNGFcdWQ4M2NcdWRmZmR8XHVkODNkXHVkYzRhXHVkODNjXHVkZmZlfFx1ZDgzZFx1ZGM0YVx1ZDgzY1x1ZGZmZnxcdWQ4M2RcdWRjNGJcdWQ4M2NcdWRmZmJ8XHVkODNkXHVkYzRiXHVkODNjXHVkZmZjfFx1ZDgzZFx1ZGM0Ylx1ZDgzY1x1ZGZmZHxcdWQ4M2RcdWRjNGJcdWQ4M2NcdWRmZmV8XHVkODNkXHVkYzRiXHVkODNjXHVkZmZmfFx1ZDgzZFx1ZGM0Y1x1ZDgzY1x1ZGZmYnxcdWQ4M2RcdWRjNGNcdWQ4M2NcdWRmZmN8XHVkODNkXHVkYzRjXHVkODNjXHVkZmZkfFx1ZDgzZFx1ZGM0Y1x1ZDgzY1x1ZGZmZXxcdWQ4M2RcdWRjNGNcdWQ4M2NcdWRmZmZ8XHVkODNkXHVkYzRkXHVkODNjXHVkZmZifFx1ZDgzZFx1ZGM0ZFx1ZDgzY1x1ZGZmY3xcdWQ4M2RcdWRjNGRcdWQ4M2NcdWRmZmR8XHVkODNkXHVkYzRkXHVkODNjXHVkZmZlfFx1ZDgzZFx1ZGM0ZFx1ZDgzY1x1ZGZmZnxcdWQ4M2RcdWRjNGVcdWQ4M2NcdWRmZmJ8XHVkODNkXHVkYzRlXHVkODNjXHVkZmZjfFx1ZDgzZFx1ZGM0ZVx1ZDgzY1x1ZGZmZHxcdWQ4M2RcdWRjNGVcdWQ4M2NcdWRmZmV8XHVkODNkXHVkYzRlXHVkODNjXHVkZmZmfFx1ZDgzZFx1ZGM0Zlx1ZDgzY1x1ZGZmYnxcdWQ4M2RcdWRjNGZcdWQ4M2NcdWRmZmN8XHVkODNkXHVkYzRmXHVkODNjXHVkZmZkfFx1ZDgzZFx1ZGM0Zlx1ZDgzY1x1ZGZmZXxcdWQ4M2RcdWRjNGZcdWQ4M2NcdWRmZmZ8XHVkODNkXHVkYzUwXHVkODNjXHVkZmZifFx1ZDgzZFx1ZGM1MFx1ZDgzY1x1ZGZmY3xcdWQ4M2RcdWRjNTBcdWQ4M2NcdWRmZmR8XHVkODNkXHVkYzUwXHVkODNjXHVkZmZlfFx1ZDgzZFx1ZGM1MFx1ZDgzY1x1ZGZmZnxcdWQ4M2RcdWRjNjZcdWQ4M2NcdWRmZmJ8XHVkODNkXHVkYzY2XHVkODNjXHVkZmZjfFx1ZDgzZFx1ZGM2Nlx1ZDgzY1x1ZGZmZHxcdWQ4M2RcdWRjNjZcdWQ4M2NcdWRmZmV8XHVkODNkXHVkYzY2XHVkODNjXHVkZmZmfFx1ZDgzZFx1ZGM2N1x1ZDgzY1x1ZGZmYnxcdWQ4M2RcdWRjNjdcdWQ4M2NcdWRmZmN8XHVkODNkXHVkYzY3XHVkODNjXHVkZmZkfFx1ZDgzZFx1ZGM2N1x1ZDgzY1x1ZGZmZXxcdWQ4M2RcdWRjNjdcdWQ4M2NcdWRmZmZ8XHVkODNkXHVkYzY4XHVkODNjXHVkZmZifFx1ZDgzZFx1ZGM2OFx1ZDgzY1x1ZGZmY3xcdWQ4M2RcdWRjNjhcdWQ4M2NcdWRmZmR8XHVkODNkXHVkYzY4XHVkODNjXHVkZmZlfFx1ZDgzZFx1ZGM2OFx1ZDgzY1x1ZGZmZnxcdWQ4M2RcdWRlNDdcdWQ4M2NcdWRmZmJ8XHVkODNkXHVkZTQ2XHVkODNjXHVkZmZmfFx1ZDgzZFx1ZGU0Nlx1ZDgzY1x1ZGZmZXxcdWQ4M2RcdWRlNDZcdWQ4M2NcdWRmZmR8XHVkODNkXHVkZTQ2XHVkODNjXHVkZmZjfFx1ZDgzZFx1ZGU0Nlx1ZDgzY1x1ZGZmYnxcdWQ4M2RcdWRlNDVcdWQ4M2NcdWRmZmZ8XHVkODNkXHVkZTQ1XHVkODNjXHVkZmZlfFx1ZDgzZFx1ZGU0NVx1ZDgzY1x1ZGZmZHxcdWQ4M2RcdWRlNDVcdWQ4M2NcdWRmZmN8XHVkODNkXHVkZTQ1XHVkODNjXHVkZmZifFx1ZDgzZFx1ZGM2OVx1ZDgzY1x1ZGZmYnxcdWQ4M2RcdWRjNjlcdWQ4M2NcdWRmZmN8XHVkODNkXHVkYzY5XHVkODNjXHVkZmZkfFx1ZDgzZFx1ZGM2OVx1ZDgzY1x1ZGZmZXxcdWQ4M2RcdWRjNjlcdWQ4M2NcdWRmZmZ8XHVkODNkXHVkZDk2XHVkODNjXHVkZmZmfFx1ZDgzZFx1ZGQ5Nlx1ZDgzY1x1ZGZmZXxcdWQ4M2RcdWRkOTZcdWQ4M2NcdWRmZmR8XHVkODNkXHVkZDk2XHVkODNjXHVkZmZjfFx1ZDgzZFx1ZGQ5Nlx1ZDgzY1x1ZGZmYnxcdWQ4M2RcdWRkOTVcdWQ4M2NcdWRmZmZ8XHVkODNkXHVkZDk1XHVkODNjXHVkZmZlfFx1ZDgzZFx1ZGM2ZVx1ZDgzY1x1ZGZmYnxcdWQ4M2RcdWRjNmVcdWQ4M2NcdWRmZmN8XHVkODNkXHVkYzZlXHVkODNjXHVkZmZkfFx1ZDgzZFx1ZGM2ZVx1ZDgzY1x1ZGZmZXxcdWQ4M2RcdWRjNmVcdWQ4M2NcdWRmZmZ8XHVkODNkXHVkYzcwXHVkODNjXHVkZmZifFx1ZDgzZFx1ZGM3MFx1ZDgzY1x1ZGZmY3xcdWQ4M2RcdWRjNzBcdWQ4M2NcdWRmZmR8XHVkODNkXHVkYzcwXHVkODNjXHVkZmZlfFx1ZDgzZFx1ZGM3MFx1ZDgzY1x1ZGZmZnxcdWQ4M2RcdWRjNzFcdWQ4M2NcdWRmZmJ8XHVkODNkXHVkYzcxXHVkODNjXHVkZmZjfFx1ZDgzZFx1ZGM3MVx1ZDgzY1x1ZGZmZHxcdWQ4M2RcdWRjNzFcdWQ4M2NcdWRmZmV8XHVkODNkXHVkYzcxXHVkODNjXHVkZmZmfFx1ZDgzZFx1ZGM3Mlx1ZDgzY1x1ZGZmYnxcdWQ4M2RcdWRjNzJcdWQ4M2NcdWRmZmN8XHVkODNkXHVkYzcyXHVkODNjXHVkZmZkfFx1ZDgzZFx1ZGM3Mlx1ZDgzY1x1ZGZmZXxcdWQ4M2RcdWRjNzJcdWQ4M2NcdWRmZmZ8XHVkODNkXHVkYzczXHVkODNjXHVkZmZifFx1ZDgzZFx1ZGM3M1x1ZDgzY1x1ZGZmY3xcdWQ4M2RcdWRjNzNcdWQ4M2NcdWRmZmR8XHVkODNkXHVkYzczXHVkODNjXHVkZmZlfFx1ZDgzZFx1ZGM3M1x1ZDgzY1x1ZGZmZnxcdWQ4M2RcdWRjNzRcdWQ4M2NcdWRmZmJ8XHVkODNkXHVkYzc0XHVkODNjXHVkZmZjfFx1ZDgzZFx1ZGM3NFx1ZDgzY1x1ZGZmZHxcdWQ4M2RcdWRjNzRcdWQ4M2NcdWRmZmV8XHVkODNkXHVkYzc0XHVkODNjXHVkZmZmfFx1ZDgzZFx1ZGM3NVx1ZDgzY1x1ZGZmYnxcdWQ4M2RcdWRjNzVcdWQ4M2NcdWRmZmN8XHVkODNkXHVkYzc1XHVkODNjXHVkZmZkfFx1ZDgzZFx1ZGM3NVx1ZDgzY1x1ZGZmZXxcdWQ4M2RcdWRjNzVcdWQ4M2NcdWRmZmZ8XHVkODNkXHVkYzc2XHVkODNjXHVkZmZifFx1ZDgzZFx1ZGM3Nlx1ZDgzY1x1ZGZmY3xcdWQ4M2RcdWRjNzZcdWQ4M2NcdWRmZmR8XHVkODNkXHVkYzc2XHVkODNjXHVkZmZlfFx1ZDgzZFx1ZGM3Nlx1ZDgzY1x1ZGZmZnxcdWQ4M2RcdWRjNzdcdWQ4M2NcdWRmZmJ8XHVkODNkXHVkYzc3XHVkODNjXHVkZmZjfFx1ZDgzZFx1ZGM3N1x1ZDgzY1x1ZGZmZHxcdWQ4M2RcdWRjNzdcdWQ4M2NcdWRmZmV8XHVkODNkXHVkYzc3XHVkODNjXHVkZmZmfFx1ZDgzZFx1ZGM3OFx1ZDgzY1x1ZGZmYnxcdWQ4M2RcdWRjNzhcdWQ4M2NcdWRmZmN8XHVkODNkXHVkYzc4XHVkODNjXHVkZmZkfFx1ZDgzZFx1ZGM3OFx1ZDgzY1x1ZGZmZXxcdWQ4M2RcdWRjNzhcdWQ4M2NcdWRmZmZ8XHVkODNkXHVkYzdjXHVkODNjXHVkZmZifFx1ZDgzZFx1ZGM3Y1x1ZDgzY1x1ZGZmY3xcdWQ4M2RcdWRjN2NcdWQ4M2NcdWRmZmR8XHVkODNkXHVkYzdjXHVkODNjXHVkZmZlfFx1ZDgzZFx1ZGM3Y1x1ZDgzY1x1ZGZmZnxcdWQ4M2RcdWRjODFcdWQ4M2NcdWRmZmJ8XHVkODNkXHVkYzgxXHVkODNjXHVkZmZjfFx1ZDgzZFx1ZGM4MVx1ZDgzY1x1ZGZmZHxcdWQ4M2RcdWRjODFcdWQ4M2NcdWRmZmV8XHVkODNkXHVkYzgxXHVkODNjXHVkZmZmfFx1ZDgzZFx1ZGM4Mlx1ZDgzY1x1ZGZmYnxcdWQ4M2RcdWRjODJcdWQ4M2NcdWRmZmN8XHVkODNkXHVkYzgyXHVkODNjXHVkZmZkfFx1MjcwYVx1ZDgzY1x1ZGZmZHxcdTI3MGJcdWQ4M2NcdWRmZmR8XHUyNzBkXHVkODNjXHVkZmZlfFx1MjcwZFx1ZDgzY1x1ZGZmZHxcdTI3MGRcdWQ4M2NcdWRmZmN8XHUyNzBkXHVkODNjXHVkZmZifFx1MjcwY1x1ZDgzY1x1ZGZmZnxcdTI3MGNcdWQ4M2NcdWRmZmV8XHUyNzBjXHVkODNjXHVkZmZkfFx1MjcwY1x1ZDgzY1x1ZGZmY3xcdTI3MGNcdWQ4M2NcdWRmZmJ8XHUyNzBiXHVkODNjXHVkZmZmfFx1MjcwYlx1ZDgzY1x1ZGZmY3xcdTI3MGJcdWQ4M2NcdWRmZmJ8XHUyNzBhXHVkODNjXHVkZmZmfFx1MjcwZFx1ZDgzY1x1ZGZmZnxcdTI3MGFcdWQ4M2NcdWRmZmV8XHUyNzBiXHVkODNjXHVkZmZlfFx1MjcwYVx1ZDgzY1x1ZGZmY3xcdTI3MGFcdWQ4M2NcdWRmZmJ8XHUyNjFkXHVkODNjXHVkZmZmfFx1MjYxZFx1ZDgzY1x1ZGZmZHxcdTI2MWRcdWQ4M2NcdWRmZmN8XHUyNjFkXHVkODNjXHVkZmZifFx1MjYxZFx1ZDgzY1x1ZGZmZXxcdTI2ZjlcdWQ4M2NcdWRmZmV8XHUyNmY5XHVkODNjXHVkZmZmfFx1MjZmOVx1ZDgzY1x1ZGZmZHxcdTI2ZjlcdWQ4M2NcdWRmZmN8XHUyNmY5XHVkODNjXHVkZmZifFx1MDAzOVx1ZmUwZj9cdTIwZTN8XHUwMDM4XHVmZTBmP1x1MjBlM3xcdTAwMzdcdWZlMGY/XHUyMGUzfFx1MDAzNlx1ZmUwZj9cdTIwZTN8XHUwMDM1XHVmZTBmP1x1MjBlM3xcdTAwMzRcdWZlMGY/XHUyMGUzfFx1MDAzM1x1ZmUwZj9cdTIwZTN8XHUwMDMyXHVmZTBmP1x1MjBlM3xcdTAwMzFcdWZlMGY/XHUyMGUzfFx1MDAzMFx1ZmUwZj9cdTIwZTN8XHUwMDIzXHVmZTBmP1x1MjBlM3xcdTAwMmFcdTIwZTN8XHUwMDM5XHVmZTBmP1x1MjBlM3xcdTAwMzhcdWZlMGY/XHUyMGUzfFx1MDAzN1x1ZmUwZj9cdTIwZTN8XHUwMDM2XHVmZTBmP1x1MjBlM3xcdTAwMzVcdWZlMGY/XHUyMGUzfFx1MDAzNFx1ZmUwZj9cdTIwZTN8XHUwMDMzXHVmZTBmP1x1MjBlM3xcdTAwMzJcdWZlMGY/XHUyMGUzfFx1MDAzMVx1ZmUwZj9cdTIwZTN8XHUwMDMwXHVmZTBmP1x1MjBlM3xcdTAwMjNcdWZlMGY/XHUyMGUzfFx1ZDgzZFx1ZGQ1NXxcdWQ4M2RcdWRkNTZ8XHVkODNkXHVkZDU3fFx1ZDgzZFx1ZGQ1OHxcdWQ4M2RcdWRkNTl8XHVkODNkXHVkZDVhfFx1ZDgzZFx1ZGQ1YnxcdWQ4M2RcdWRkZmJ8XHVkODNkXHVkZGZjfFx1ZDgzZFx1ZGRmZHxcdWQ4M2RcdWRkZmV8XHVkODNkXHVkZGZmfFx1ZDgzZFx1ZGUwMXxcdWQ4M2RcdWRlMDJ8XHVkODNkXHVkZTAzfFx1ZDgzZFx1ZGUwNHxcdWQ4M2RcdWRlMDV8XHVkODNkXHVkZTA2fFx1ZDgzZFx1ZGUwOXxcdWQ4M2RcdWRlMGF8XHVkODNkXHVkZTBifFx1ZDgzZFx1ZGUwY3xcdWQ4M2RcdWRlMGR8XHVkODNkXHVkZTBmfFx1ZDgzZFx1ZGUxMnxcdWQ4M2RcdWRlMTN8XHVkODNkXHVkZTE0fFx1ZDgzZFx1ZGUxNnxcdWQ4M2RcdWRlMTh8XHVkODNkXHVkZTFhfFx1ZDgzZFx1ZGUxY3xcdWQ4M2RcdWRlMWR8XHVkODNkXHVkZTFlfFx1ZDgzZFx1ZGUyMHxcdWQ4M2RcdWRlMjF8XHVkODNkXHVkZTIyfFx1ZDgzZFx1ZGUyM3xcdWQ4M2RcdWRlMjR8XHVkODNkXHVkZTI1fFx1ZDgzZFx1ZGUyOHxcdWQ4M2RcdWRlMjl8XHVkODNkXHVkZTJhfFx1ZDgzZFx1ZGUyYnxcdWQ4M2RcdWRlMmR8XHVkODNkXHVkZTMwfFx1ZDgzZFx1ZGUzMXxcdWQ4M2RcdWRlMzJ8XHVkODNkXHVkZTMzfFx1ZDgzZFx1ZGUzNXxcdWQ4M2RcdWRlMzd8XHVkODNkXHVkZTM4fFx1ZDgzZFx1ZGUzOXxcdWQ4M2RcdWRlM2F8XHVkODNkXHVkZTNifFx1ZDgzZFx1ZGUzY3xcdWQ4M2RcdWRlM2R8XHVkODNkXHVkZTNlfFx1ZDgzZFx1ZGUzZnxcdWQ4M2RcdWRlNDB8XHVkODNkXHVkZTQ1fFx1ZDgzZFx1ZGU0NnxcdWQ4M2RcdWRlNDd8XHVkODNkXHVkZTQ4fFx1ZDgzZFx1ZGU0OXxcdWQ4M2RcdWRlNGF8XHVkODNkXHVkZTRifFx1ZDgzZFx1ZGU0Y3xcdWQ4M2RcdWRlNGR8XHVkODNkXHVkZTRlfFx1ZDgzZFx1ZGU0ZnxcdWQ4M2RcdWRlODB8XHVkODNkXHVkZTgzfFx1ZDgzZFx1ZGU4NHxcdWQ4M2RcdWRlODV8XHVkODNkXHVkZTg3fFx1ZDgzZFx1ZGU4OXxcdWQ4M2RcdWRlOGN8XHVkODNkXHVkZThmfFx1ZDgzZFx1ZGU5MXxcdWQ4M2RcdWRlOTJ8XHVkODNkXHVkZTkzfFx1ZDgzZFx1ZGU5NXxcdWQ4M2RcdWRlOTd8XHVkODNkXHVkZTk5fFx1ZDgzZFx1ZGU5YXxcdWQ4M2RcdWRlYTJ8XHVkODNkXHVkZWE0fFx1ZDgzZFx1ZGVhNXxcdWQ4M2RcdWRlYTd8XHVkODNkXHVkZWE4fFx1ZDgzZFx1ZGVhOXxcdWQ4M2RcdWRlYWF8XHVkODNkXHVkZWFifFx1ZDgzZFx1ZGVhY3xcdWQ4M2RcdWRlYWR8XHVkODNkXHVkZWIyfFx1ZDgzZFx1ZGViNnxcdWQ4M2RcdWRlYjl8XHVkODNkXHVkZWJhfFx1ZDgzZFx1ZGViYnxcdWQ4M2RcdWRlYmN8XHVkODNkXHVkZWJkfFx1ZDgzZFx1ZGViZXxcdWQ4M2RcdWRlYzB8XHVkODNjXHVkZGU2fFx1ZDgzY1x1ZGRlN3xcdWQ4M2NcdWRkZTh8XHVkODNjXHVkZGU5fFx1ZDgzY1x1ZGRlYXxcdWQ4M2NcdWRkZWJ8XHVkODNjXHVkZGVjfFx1ZDgzY1x1ZGRlZHxcdWQ4M2NcdWRkZWV8XHVkODNjXHVkZGVmfFx1ZDgzY1x1ZGRmMHxcdWQ4M2NcdWRkZjF8XHVkODNjXHVkZGYyfFx1ZDgzY1x1ZGRmM3xcdWQ4M2NcdWRkZjR8XHVkODNjXHVkZGY1fFx1ZDgzY1x1ZGRmNnxcdWQ4M2NcdWRkZjd8XHVkODNjXHVkZGY4fFx1ZDgzY1x1ZGRmOXxcdWQ4M2NcdWRkZmF8XHVkODNjXHVkZGZifFx1ZDgzY1x1ZGRmY3xcdWQ4M2NcdWRkZmR8XHVkODNjXHVkZGZlfFx1ZDgzY1x1ZGRmZnxcdWQ4M2NcdWRmMGR8XHVkODNjXHVkZjBlfFx1ZDgzY1x1ZGYxMHxcdWQ4M2NcdWRmMTJ8XHVkODNjXHVkZjE2fFx1ZDgzY1x1ZGYxN3xcdWQ4M2NcdWRmMTh8XHVkODNjXHVkZjFhfFx1ZDgzY1x1ZGYxY3xcdWQ4M2NcdWRmMWR8XHVkODNjXHVkZjFlfFx1ZDgzY1x1ZGYzMnxcdWQ4M2NcdWRmMzN8XHVkODNjXHVkZjRifFx1ZDgzY1x1ZGY1MHxcdWQ4M2NcdWRmN2N8XHVkODNjXHVkZmM3fFx1ZDgzY1x1ZGZjOXxcdWQ4M2NcdWRmZTR8XHVkODNkXHVkYzAwfFx1ZDgzZFx1ZGMwMXxcdWQ4M2RcdWRjMDJ8XHVkODNkXHVkYzAzfFx1ZDgzZFx1ZGMwNHxcdWQ4M2RcdWRjMDV8XHVkODNkXHVkYzA2fFx1ZDgzZFx1ZGMwN3xcdWQ4M2RcdWRjMDh8XHVkODNkXHVkYzA5fFx1ZDgzZFx1ZGMwYXxcdWQ4M2RcdWRjMGJ8XHVkODNkXHVkYzBmfFx1ZDgzZFx1ZGMxMHxcdWQ4M2RcdWRjMTN8XHVkODNkXHVkYzE1fFx1ZDgzZFx1ZGMxNnxcdWQ4M2RcdWRjMmF8XHVkODNkXHVkYzY1fFx1ZDgzZFx1ZGM2Y3xcdWQ4M2RcdWRjNmR8XHVkODNkXHVkY2FkfFx1ZDgzZFx1ZGNiNnxcdWQ4M2RcdWRjYjd8XHVkODNkXHVkY2VjfFx1ZDgzZFx1ZGNlZHxcdWQ4M2RcdWRjZWZ8XHVkODNkXHVkY2Y1fFx1ZDgzZFx1ZGQwMHxcdWQ4M2RcdWRkMDF8XHVkODNkXHVkZDAyfFx1ZDgzZFx1ZGQwNHxcdWQ4M2RcdWRkMDV8XHVkODNkXHVkZDA2fFx1ZDgzZFx1ZGQwN3xcdWQ4M2RcdWRkMDh8XHVkODNkXHVkZDA5fFx1ZDgzZFx1ZGQxNXxcdWQ4M2RcdWRkMmN8XHVkODNkXHVkZDJkfFx1ZDgzZFx1ZGQ1Y3xcdWQ4M2RcdWRkNWR8XHVkODNkXHVkZDVlfFx1ZDgzZFx1ZGQ1ZnxcdWQ4M2RcdWRkNjB8XHVkODNkXHVkZDYxfFx1ZDgzZFx1ZGQ2MnxcdWQ4M2RcdWRkNjN8XHVkODNkXHVkZDY0fFx1ZDgzZFx1ZGQ2NXxcdWQ4M2RcdWRkNjZ8XHVkODNkXHVkZDY3fFx1ZDgzZFx1ZGUwMHxcdWQ4M2RcdWRlMDd8XHVkODNkXHVkZTA4fFx1ZDgzZFx1ZGUwZXxcdWQ4M2RcdWRlMTB8XHVkODNkXHVkZTExfFx1ZDgzZFx1ZGUxNXxcdWQ4M2RcdWRlMTd8XHVkODNkXHVkZTE5fFx1ZDgzZFx1ZGUxYnxcdWQ4M2RcdWRlMWZ8XHVkODNkXHVkZTI2fFx1ZDgzZFx1ZGUyN3xcdWQ4M2RcdWRlMmN8XHVkODNkXHVkZTJlfFx1ZDgzZFx1ZGUyZnxcdWQ4M2RcdWRlMzR8XHVkODNkXHVkZTM2fFx1ZDgzZFx1ZGU4MXxcdWQ4M2RcdWRlODJ8XHVkODNkXHVkZTg2fFx1ZDgzZFx1ZGU4OHxcdWQ4M2RcdWRlOGF8XHVkODNkXHVkZThifFx1ZDgzZFx1ZGU4ZHxcdWQ4M2RcdWRlOGV8XHVkODNkXHVkZTkwfFx1ZDgzZFx1ZGU5NHxcdWQ4M2RcdWRlOTZ8XHVkODNkXHVkZTk4fFx1ZDgzZFx1ZGU5YnxcdWQ4M2RcdWRlOWN8XHVkODNkXHVkZTlkfFx1ZDgzZFx1ZGU5ZXxcdWQ4M2RcdWRlOWZ8XHVkODNkXHVkZWEwfFx1ZDgzZFx1ZGVhMXxcdWQ4M2RcdWRlYTN8XHVkODNkXHVkZWE2fFx1ZDgzZFx1ZGVhZXxcdWQ4M2RcdWRlYWZ8XHVkODNkXHVkZWIwfFx1ZDgzZFx1ZGViMXxcdWQ4M2RcdWRlYjN8XHVkODNkXHVkZWI0fFx1ZDgzZFx1ZGViNXxcdWQ4M2RcdWRlYjd8XHVkODNkXHVkZWI4fFx1ZDgzZFx1ZGViZnxcdWQ4M2RcdWRlYzF8XHVkODNkXHVkZWMyfFx1ZDgzZFx1ZGVjM3xcdWQ4M2RcdWRlYzR8XHVkODNkXHVkZWM1fFx1ZDgzZFx1ZGVjZHxcdWQ4M2RcdWRlY2N8XHVkODNkXHVkZWNifFx1ZDgzZVx1ZGQ4MXxcdWQ4M2VcdWRkODB8XHVkODNlXHVkZDE4fFx1ZDgzY1x1ZGY0NnxcdWQ4M2VcdWRkYzB8XHVkODNlXHVkZDg0fFx1ZDgzZVx1ZGQ4M3xcdWQ4M2VcdWRkODJ8XHVkODNlXHVkZDE3fFx1ZDgzZVx1ZGQxNnxcdWQ4M2VcdWRkMTV8XHVkODNlXHVkZDE0fFx1ZDgzZVx1ZGQxM3xcdWQ4M2VcdWRkMTJ8XHVkODNlXHVkZDExfFx1ZDgzZVx1ZGQxMHxcdWQ4M2RcdWRlZjN8XHVkODNkXHVkZWYwfFx1ZDgzZFx1ZGVlY3xcdWQ4M2NcdWRjY2Z8XHVkODNjXHVkZDhlfFx1ZDgzY1x1ZGQ5MXxcdWQ4M2NcdWRkOTJ8XHVkODNjXHVkZDkzfFx1ZDgzY1x1ZGQ5NHxcdWQ4M2NcdWRkOTV8XHVkODNjXHVkZDk2fFx1ZDgzY1x1ZGQ5N3xcdWQ4M2NcdWRkOTh8XHVkODNjXHVkZDk5fFx1ZDgzY1x1ZGQ5YXxcdWQ4M2RcdWRlZWJ8XHVkODNkXHVkZWU5fFx1ZDgzZFx1ZGVlNXxcdWQ4M2RcdWRlZTR8XHVkODNkXHVkZWUzfFx1ZDgzZFx1ZGVlMnxcdWQ4M2RcdWRlZTF8XHVkODNkXHVkZWUwfFx1ZDgzZFx1ZGVkMHxcdWQ4M2RcdWRlY2Z8XHVkODNjXHVkZTAxfFx1ZDgzY1x1ZGUzMnxcdWQ4M2NcdWRlMzN8XHVkODNjXHVkZTM0fFx1ZDgzY1x1ZGUzNXxcdWQ4M2NcdWRlMzZ8XHVkODNjXHVkZTM4fFx1ZDgzY1x1ZGUzOXxcdWQ4M2NcdWRlM2F8XHVkODNjXHVkZTUwfFx1ZDgzY1x1ZGU1MXxcdWQ4M2NcdWRmMDB8XHVkODNjXHVkZjAxfFx1ZDgzY1x1ZGYwMnxcdWQ4M2NcdWRmMDN8XHVkODNjXHVkZjA0fFx1ZDgzY1x1ZGYwNXxcdWQ4M2NcdWRmMDZ8XHVkODNjXHVkZjA3fFx1ZDgzY1x1ZGYwOHxcdWQ4M2NcdWRmMDl8XHVkODNjXHVkZjBhfFx1ZDgzY1x1ZGYwYnxcdWQ4M2NcdWRmMGN8XHVkODNjXHVkZjBmfFx1ZDgzY1x1ZGYxMXxcdWQ4M2NcdWRmMTN8XHVkODNjXHVkZjE0fFx1ZDgzY1x1ZGYxNXxcdWQ4M2NcdWRmMTl8XHVkODNjXHVkZjFifFx1ZDgzY1x1ZGYxZnxcdWQ4M2NcdWRmMjB8XHVkODNjXHVkZjMwfFx1ZDgzY1x1ZGYzMXxcdWQ4M2NcdWRmMzR8XHVkODNjXHVkZjM1fFx1ZDgzY1x1ZGYzN3xcdWQ4M2NcdWRmMzh8XHVkODNjXHVkZjM5fFx1ZDgzY1x1ZGYzYXxcdWQ4M2NcdWRmM2J8XHVkODNjXHVkZjNjfFx1ZDgzY1x1ZGYzZHxcdWQ4M2NcdWRmM2V8XHVkODNjXHVkZjNmfFx1ZDgzY1x1ZGY0MHxcdWQ4M2NcdWRmNDF8XHVkODNjXHVkZjQyfFx1ZDgzY1x1ZGY0M3xcdWQ4M2NcdWRmNDR8XHVkODNjXHVkZjQ1fFx1ZDgzZFx1ZGVjZXxcdWQ4M2NcdWRmNDd8XHVkODNjXHVkZjQ4fFx1ZDgzY1x1ZGY0OXxcdWQ4M2NcdWRmNGF8XHVkODNjXHVkZjRjfFx1ZDgzY1x1ZGY0ZHxcdWQ4M2NcdWRmNGV8XHVkODNjXHVkZjRmfFx1ZDgzY1x1ZGY1MXxcdWQ4M2NcdWRmNTJ8XHVkODNjXHVkZjUzfFx1ZDgzY1x1ZGY1NHxcdWQ4M2NcdWRmNTV8XHVkODNjXHVkZjU2fFx1ZDgzY1x1ZGY1N3xcdWQ4M2NcdWRmNTh8XHVkODNjXHVkZjU5fFx1ZDgzY1x1ZGY1YXxcdWQ4M2NcdWRmNWJ8XHVkODNjXHVkZjVjfFx1ZDgzY1x1ZGY1ZHxcdWQ4M2NcdWRmNWV8XHVkODNjXHVkZjVmfFx1ZDgzY1x1ZGY2MHxcdWQ4M2NcdWRmNjF8XHVkODNjXHVkZjYyfFx1ZDgzY1x1ZGY2M3xcdWQ4M2NcdWRmNjR8XHVkODNjXHVkZjY1fFx1ZDgzY1x1ZGY2NnxcdWQ4M2NcdWRmNjd8XHVkODNjXHVkZjY4fFx1ZDgzY1x1ZGY2OXxcdWQ4M2NcdWRmNmF8XHVkODNjXHVkZjZifFx1ZDgzY1x1ZGY2Y3xcdWQ4M2NcdWRmNmR8XHVkODNjXHVkZjZlfFx1ZDgzY1x1ZGY2ZnxcdWQ4M2NcdWRmNzB8XHVkODNjXHVkZjcxfFx1ZDgzY1x1ZGY3MnxcdWQ4M2NcdWRmNzN8XHVkODNjXHVkZjc0fFx1ZDgzY1x1ZGY3NXxcdWQ4M2NcdWRmNzZ8XHVkODNjXHVkZjc3fFx1ZDgzY1x1ZGY3OHxcdWQ4M2NcdWRmNzl8XHVkODNjXHVkZjdhfFx1ZDgzY1x1ZGY3YnxcdWQ4M2NcdWRmODB8XHVkODNjXHVkZjgxfFx1ZDgzY1x1ZGY4MnxcdWQ4M2NcdWRmODN8XHVkODNjXHVkZjg0fFx1ZDgzY1x1ZGY4NXxcdWQ4M2NcdWRmODZ8XHVkODNjXHVkZjg3fFx1ZDgzY1x1ZGY4OHxcdWQ4M2NcdWRmODl8XHVkODNjXHVkZjhhfFx1ZDgzY1x1ZGY4YnxcdWQ4M2NcdWRmOGN8XHVkODNjXHVkZjhkfFx1ZDgzY1x1ZGY4ZXxcdWQ4M2NcdWRmOGZ8XHVkODNjXHVkZjkwfFx1ZDgzY1x1ZGY5MXxcdWQ4M2NcdWRmOTJ8XHVkODNjXHVkZjkzfFx1ZDgzY1x1ZGZhMHxcdWQ4M2NcdWRmYTF8XHVkODNjXHVkZmEyfFx1ZDgzY1x1ZGZhM3xcdWQ4M2NcdWRmYTR8XHVkODNjXHVkZmE1fFx1ZDgzY1x1ZGZhNnxcdWQ4M2NcdWRmYTd8XHVkODNjXHVkZmE4fFx1ZDgzY1x1ZGZhOXxcdWQ4M2NcdWRmYWF8XHVkODNjXHVkZmFifFx1ZDgzY1x1ZGZhY3xcdWQ4M2NcdWRmYWR8XHVkODNjXHVkZmFlfFx1ZDgzY1x1ZGZhZnxcdWQ4M2NcdWRmYjB8XHVkODNjXHVkZmIxfFx1ZDgzY1x1ZGZiMnxcdWQ4M2NcdWRmYjN8XHVkODNjXHVkZmI0fFx1ZDgzY1x1ZGZiNXxcdWQ4M2NcdWRmYjZ8XHVkODNjXHVkZmI3fFx1ZDgzY1x1ZGZiOHxcdWQ4M2NcdWRmYjl8XHVkODNjXHVkZmJhfFx1ZDgzY1x1ZGZiYnxcdWQ4M2NcdWRmYmN8XHVkODNjXHVkZmJkfFx1ZDgzY1x1ZGZiZXxcdWQ4M2NcdWRmYmZ8XHVkODNjXHVkZmMwfFx1ZDgzY1x1ZGZjMXxcdWQ4M2NcdWRmYzJ8XHVkODNjXHVkZmMzfFx1ZDgzY1x1ZGZjNHxcdWQ4M2NcdWRmYzZ8XHVkODNjXHVkZmM4fFx1ZDgzY1x1ZGZjYXxcdWQ4M2NcdWRmZTB8XHVkODNjXHVkZmUxfFx1ZDgzY1x1ZGZlMnxcdWQ4M2NcdWRmZTN8XHVkODNjXHVkZmU1fFx1ZDgzY1x1ZGZlNnxcdWQ4M2NcdWRmZTd8XHVkODNjXHVkZmU4fFx1ZDgzY1x1ZGZlOXxcdWQ4M2NcdWRmZWF8XHVkODNjXHVkZmVifFx1ZDgzY1x1ZGZlY3xcdWQ4M2NcdWRmZWR8XHVkODNjXHVkZmVlfFx1ZDgzY1x1ZGZlZnxcdWQ4M2NcdWRmZjB8XHVkODNkXHVkYzBjfFx1ZDgzZFx1ZGMwZHxcdWQ4M2RcdWRjMGV8XHVkODNkXHVkYzExfFx1ZDgzZFx1ZGMxMnxcdWQ4M2RcdWRjMTR8XHVkODNkXHVkYzE3fFx1ZDgzZFx1ZGMxOHxcdWQ4M2RcdWRjMTl8XHVkODNkXHVkYzFhfFx1ZDgzZFx1ZGMxYnxcdWQ4M2RcdWRjMWN8XHVkODNkXHVkYzFkfFx1ZDgzZFx1ZGMxZXxcdWQ4M2RcdWRjMWZ8XHVkODNkXHVkYzIwfFx1ZDgzZFx1ZGMyMXxcdWQ4M2RcdWRjMjJ8XHVkODNkXHVkYzIzfFx1ZDgzZFx1ZGMyNHxcdWQ4M2RcdWRjMjV8XHVkODNkXHVkYzI2fFx1ZDgzZFx1ZGMyN3xcdWQ4M2RcdWRjMjh8XHVkODNkXHVkYzI5fFx1ZDgzZFx1ZGMyYnxcdWQ4M2RcdWRjMmN8XHVkODNkXHVkYzJkfFx1ZDgzY1x1ZGYyMXxcdWQ4M2NcdWRmMjR8XHVkODNjXHVkZjI1fFx1ZDgzY1x1ZGYyNnxcdWQ4M2NcdWRmMjd8XHVkODNjXHVkZjI4fFx1ZDgzY1x1ZGYyOXxcdWQ4M2NcdWRmMmF8XHVkODNjXHVkZjJifFx1ZDgzY1x1ZGYyY3xcdWQ4M2NcdWRmMmR8XHVkODNjXHVkZjJlfFx1ZDgzY1x1ZGYyZnxcdWQ4M2NcdWRmMzZ8XHVkODNjXHVkZjdkfFx1ZDgzY1x1ZGY3ZXxcdWQ4M2NcdWRmN2Z8XHVkODNkXHVkYzJlfFx1ZDgzZFx1ZGMyZnxcdWQ4M2RcdWRjMzB8XHVkODNkXHVkYzMxfFx1ZDgzZFx1ZGMzMnxcdWQ4M2NcdWRmOTZ8XHVkODNjXHVkZjk3fFx1ZDgzY1x1ZGY5OXxcdWQ4M2NcdWRmOWF8XHVkODNjXHVkZjlifFx1ZDgzY1x1ZGY5ZXxcdWQ4M2NcdWRmOWZ8XHVkODNkXHVkYzMzfFx1ZDgzZFx1ZGMzNHxcdWQ4M2RcdWRjMzV8XHVkODNkXHVkYzM2fFx1ZDgzZFx1ZGMzN3xcdWQ4M2RcdWRjMzh8XHVkODNkXHVkYzM5fFx1ZDgzZFx1ZGMzYXxcdWQ4M2RcdWRjM2J8XHVkODNkXHVkYzNjfFx1ZDgzY1x1ZGZjNXxcdWQ4M2RcdWRjM2R8XHVkODNkXHVkYzNlfFx1ZDgzZFx1ZGM0MHxcdWQ4M2RcdWRjNDJ8XHVkODNkXHVkYzQzfFx1ZDgzZFx1ZGM0NHxcdWQ4M2RcdWRjNDV8XHVkODNkXHVkYzQ2fFx1ZDgzZFx1ZGM0N3xcdWQ4M2RcdWRjNDh8XHVkODNkXHVkYzQ5fFx1ZDgzZFx1ZGM0YXxcdWQ4M2RcdWRjNGJ8XHVkODNkXHVkYzRjfFx1ZDgzZFx1ZGM0ZHxcdWQ4M2NcdWRmY2J8XHVkODNjXHVkZmNjfFx1ZDgzY1x1ZGZjZHxcdWQ4M2NcdWRmY2V8XHVkODNjXHVkZmNmfFx1ZDgzY1x1ZGZkMHxcdWQ4M2NcdWRmZDF8XHVkODNjXHVkZmQyfFx1ZDgzY1x1ZGZkM3xcdWQ4M2NcdWRmZDR8XHVkODNjXHVkZmQ1fFx1ZDgzY1x1ZGZkNnxcdWQ4M2NcdWRmZDd8XHVkODNjXHVkZmQ4fFx1ZDgzY1x1ZGZkOXxcdWQ4M2NcdWRmZGF8XHVkODNjXHVkZmRifFx1ZDgzY1x1ZGZkY3xcdWQ4M2NcdWRmZGR8XHVkODNjXHVkZmRlfFx1ZDgzY1x1ZGZkZnxcdWQ4M2NcdWRmZjN8XHVkODNjXHVkZmY0fFx1ZDgzY1x1ZGZmNXxcdWQ4M2NcdWRmZjd8XHVkODNjXHVkZmY4fFx1ZDgzY1x1ZGZmOXxcdWQ4M2NcdWRmZmF8XHVkODNjXHVkZmZifFx1ZDgzY1x1ZGZmY3xcdWQ4M2NcdWRmZmR8XHVkODNjXHVkZmZlfFx1ZDgzY1x1ZGZmZnxcdWQ4M2RcdWRjM2Z8XHVkODNkXHVkYzQxfFx1ZDgzZFx1ZGM0ZXxcdWQ4M2RcdWRjNGZ8XHVkODNkXHVkYzUwfFx1ZDgzZFx1ZGM1MXxcdWQ4M2RcdWRjNTJ8XHVkODNkXHVkYzUzfFx1ZDgzZFx1ZGM1NHxcdWQ4M2RcdWRjNTV8XHVkODNkXHVkYzU2fFx1ZDgzZFx1ZGM1N3xcdWQ4M2RcdWRjNTh8XHVkODNkXHVkYzU5fFx1ZDgzZFx1ZGM1YXxcdWQ4M2RcdWRjNWJ8XHVkODNkXHVkYzVjfFx1ZDgzZFx1ZGM1ZHxcdWQ4M2RcdWRjNWV8XHVkODNkXHVkYzVmfFx1ZDgzZFx1ZGM2MHxcdWQ4M2RcdWRjNjF8XHVkODNkXHVkYzYyfFx1ZDgzZFx1ZGM2M3xcdWQ4M2RcdWRjNjR8XHVkODNkXHVkYzY2fFx1ZDgzZFx1ZGM2N3xcdWQ4M2RcdWRjNjh8XHVkODNkXHVkYzY5fFx1ZDgzZFx1ZGM2YXxcdWQ4M2RcdWRjNmJ8XHVkODNkXHVkYzZlfFx1ZDgzZFx1ZGM2ZnxcdWQ4M2RcdWRjNzB8XHVkODNkXHVkYzcxfFx1ZDgzZFx1ZGM3MnxcdWQ4M2RcdWRjNzN8XHVkODNkXHVkYzc0fFx1ZDgzZFx1ZGM3NXxcdWQ4M2RcdWRjNzZ8XHVkODNkXHVkYzc3fFx1ZDgzZFx1ZGM3OHxcdWQ4M2RcdWRjNzl8XHVkODNkXHVkYzdhfFx1ZDgzZFx1ZGM3YnxcdWQ4M2RcdWRjN2N8XHVkODNkXHVkYzdkfFx1ZDgzZFx1ZGM3ZXxcdWQ4M2RcdWRjN2Z8XHVkODNkXHVkYzgwfFx1ZDgzZFx1ZGM4MXxcdWQ4M2RcdWRjODJ8XHVkODNkXHVkYzgzfFx1ZDgzZFx1ZGM4NHxcdWQ4M2RcdWRjODV8XHVkODNkXHVkYzg2fFx1ZDgzZFx1ZGM4N3xcdWQ4M2RcdWRjODh8XHVkODNkXHVkYzg5fFx1ZDgzZFx1ZGM4YXxcdWQ4M2RcdWRjOGJ8XHVkODNkXHVkYzhjfFx1ZDgzZFx1ZGM4ZHxcdWQ4M2RcdWRjOGV8XHVkODNkXHVkYzhmfFx1ZDgzZFx1ZGM5MHxcdWQ4M2RcdWRjOTF8XHVkODNkXHVkYzkyfFx1ZDgzZFx1ZGM5M3xcdWQ4M2RcdWRjOTR8XHVkODNkXHVkYzk1fFx1ZDgzZFx1ZGM5NnxcdWQ4M2RcdWRjOTd8XHVkODNkXHVkYzk4fFx1ZDgzZFx1ZGM5OXxcdWQ4M2RcdWRjOWF8XHVkODNkXHVkYzlifFx1ZDgzZFx1ZGM5Y3xcdWQ4M2RcdWRjOWR8XHVkODNkXHVkYzllfFx1ZDgzZFx1ZGM5ZnxcdWQ4M2RcdWRjYTB8XHVkODNkXHVkY2ExfFx1ZDgzZFx1ZGNhMnxcdWQ4M2RcdWRjYTN8XHVkODNkXHVkY2E0fFx1ZDgzZFx1ZGNhNXxcdWQ4M2RcdWRjYTZ8XHVkODNkXHVkY2E3fFx1ZDgzZFx1ZGNhOHxcdWQ4M2RcdWRjYTl8XHVkODNkXHVkY2FhfFx1ZDgzZFx1ZGNhYnxcdWQ4M2RcdWRjYWN8XHVkODNkXHVkY2FlfFx1ZDgzZFx1ZGNhZnxcdWQ4M2RcdWRjYjB8XHVkODNkXHVkY2IxfFx1ZDgzZFx1ZGNiMnxcdWQ4M2RcdWRjYjN8XHVkODNkXHVkY2I0fFx1ZDgzZFx1ZGNiNXxcdWQ4M2RcdWRjYjh8XHVkODNkXHVkY2I5fFx1ZDgzZFx1ZGNiYXxcdWQ4M2RcdWRjYmJ8XHVkODNkXHVkY2JjfFx1ZDgzZFx1ZGNiZHxcdWQ4M2RcdWRjYmV8XHVkODNkXHVkY2JmfFx1ZDgzZFx1ZGNjMHxcdWQ4M2RcdWRjYzF8XHVkODNkXHVkY2MyfFx1ZDgzZFx1ZGNjM3xcdWQ4M2RcdWRjYzR8XHVkODNkXHVkY2M1fFx1ZDgzZFx1ZGNjNnxcdWQ4M2RcdWRjYzd8XHVkODNkXHVkY2M4fFx1ZDgzZFx1ZGNjOXxcdWQ4M2RcdWRjY2F8XHVkODNkXHVkY2NifFx1ZDgzZFx1ZGNjY3xcdWQ4M2RcdWRjY2R8XHVkODNkXHVkY2NlfFx1ZDgzZFx1ZGNjZnxcdWQ4M2RcdWRjZDB8XHVkODNkXHVkY2QxfFx1ZDgzZFx1ZGNkMnxcdWQ4M2RcdWRjZDN8XHVkODNkXHVkY2Q0fFx1ZDgzZFx1ZGNkNXxcdWQ4M2RcdWRjZDZ8XHVkODNkXHVkY2Q3fFx1ZDgzZFx1ZGNkOHxcdWQ4M2RcdWRjZDl8XHVkODNkXHVkY2RhfFx1ZDgzZFx1ZGNkYnxcdWQ4M2RcdWRjZGN8XHVkODNkXHVkY2RkfFx1ZDgzZFx1ZGNkZXxcdWQ4M2RcdWRjZGZ8XHVkODNkXHVkY2UwfFx1ZDgzZFx1ZGNlMXxcdWQ4M2RcdWRjZTJ8XHVkODNkXHVkY2UzfFx1ZDgzZFx1ZGNlNHxcdWQ4M2RcdWRjZTV8XHVkODNkXHVkY2U2fFx1ZDgzZFx1ZGNlN3xcdWQ4M2RcdWRjZTh8XHVkODNkXHVkY2U5fFx1ZDgzZFx1ZGNlYXxcdWQ4M2RcdWRjZWJ8XHVkODNkXHVkY2VlfFx1ZDgzZFx1ZGNmMHxcdWQ4M2RcdWRjZjF8XHVkODNkXHVkY2YyfFx1ZDgzZFx1ZGNmM3xcdWQ4M2RcdWRjZjR8XHVkODNkXHVkY2Y2fFx1ZDgzZFx1ZGNmN3xcdWQ4M2RcdWRjZjl8XHVkODNkXHVkY2ZhfFx1ZDgzZFx1ZGNmYnxcdWQ4M2RcdWRjZmN8XHVkODNkXHVkZDAzfFx1ZDgzZFx1ZGQwYXxcdWQ4M2RcdWRkMGJ8XHVkODNkXHVkZDBjfFx1ZDgzZFx1ZGQwZHxcdWQ4M2RcdWRkMGV8XHVkODNkXHVkZDBmfFx1ZDgzZFx1ZGQxMHxcdWQ4M2RcdWRkMTF8XHVkODNkXHVkZDEyfFx1ZDgzZFx1ZGQxM3xcdWQ4M2RcdWRkMTR8XHVkODNkXHVkZDE2fFx1ZDgzZFx1ZGQxN3xcdWQ4M2RcdWRkMTh8XHVkODNkXHVkZDE5fFx1ZDgzZFx1ZGQxYXxcdWQ4M2RcdWRkMWJ8XHVkODNkXHVkZDFjfFx1ZDgzZFx1ZGQxZHxcdWQ4M2RcdWRkMWV8XHVkODNkXHVkZDFmfFx1ZDgzZFx1ZGQyMHxcdWQ4M2RcdWRkMjF8XHVkODNkXHVkZDIyfFx1ZDgzZFx1ZGQyM3xcdWQ4M2RcdWRkMjR8XHVkODNkXHVkZDI1fFx1ZDgzZFx1ZGQyNnxcdWQ4M2RcdWRjZjh8XHVkODNkXHVkY2ZkfFx1ZDgzZFx1ZGNmZnxcdWQ4M2RcdWRkNDl8XHVkODNkXHVkZDRhfFx1ZDgzZFx1ZGQ0YnxcdWQ4M2RcdWRkNGN8XHVkODNkXHVkZDRkfFx1ZDgzZFx1ZGQ0ZXxcdWQ4M2RcdWRkNmZ8XHVkODNkXHVkZDcwfFx1ZDgzZFx1ZGQ3M3xcdWQ4M2RcdWRkNzR8XHVkODNkXHVkZDc1fFx1ZDgzZFx1ZGQ3NnxcdWQ4M2RcdWRkNzd8XHVkODNkXHVkZDc4fFx1ZDgzZFx1ZGQ3OXxcdWQ4M2RcdWRkODd8XHVkODNkXHVkZDhhfFx1ZDgzZFx1ZGQ4YnxcdWQ4M2RcdWRkOGN8XHVkODNkXHVkZDhkfFx1ZDgzZFx1ZGQyN3xcdWQ4M2RcdWRkMjh8XHVkODNkXHVkZDI5fFx1ZDgzZFx1ZGQyYXxcdWQ4M2RcdWRkMmJ8XHVkODNkXHVkZDkwfFx1ZDgzZFx1ZGQyZXxcdWQ4M2RcdWRkMmZ8XHVkODNkXHVkZDMwfFx1ZDgzZFx1ZGQzMXxcdWQ4M2RcdWRkMzJ8XHVkODNkXHVkZDk1fFx1ZDgzZFx1ZGQzM3xcdWQ4M2RcdWRkMzR8XHVkODNkXHVkZDM1fFx1ZDgzZFx1ZGQzNnxcdWQ4M2RcdWRkMzd8XHVkODNkXHVkZDk2fFx1ZDgzZFx1ZGRhNXxcdWQ4M2RcdWRkYTh8XHVkODNkXHVkZGIxfFx1ZDgzZFx1ZGRiMnxcdWQ4M2RcdWRkYmN8XHVkODNkXHVkZGMyfFx1ZDgzZFx1ZGRjM3xcdWQ4M2RcdWRkYzR8XHVkODNkXHVkZGQxfFx1ZDgzZFx1ZGRkMnxcdWQ4M2RcdWRkZDN8XHVkODNkXHVkZGRjfFx1ZDgzZFx1ZGRkZHxcdWQ4M2RcdWRkZGV8XHVkODNkXHVkZGUxfFx1ZDgzZFx1ZGRlM3xcdWQ4M2RcdWRkZTh8XHVkODNkXHVkZGVmfFx1ZDgzZFx1ZGRmM3xcdWQ4M2RcdWRkZmF8XHVkODNkXHVkZTQxfFx1ZDgzZFx1ZGU0MnxcdWQ4M2RcdWRlNDN8XHVkODNkXHVkZTQ0fFx1ZDgzZFx1ZGQzOHxcdWQ4M2RcdWRkMzl8XHVkODNkXHVkZDNhfFx1ZDgzZFx1ZGQzYnxcdWQ4M2RcdWRkM2N8XHVkODNkXHVkZDNkfFx1ZDgzZFx1ZGQ1MHxcdWQ4M2RcdWRkNTF8XHVkODNkXHVkZDUyfFx1ZDgzZFx1ZGQ1M3xcdWQ4M2RcdWRkNTR8XHVlNTBhfFx1Mjc5N3xcdTI3OTZ8XHUyNzk1fFx1Mjc2M3xcdTI3NTV8XHUyNzU0fFx1Mjc1M3xcdTI3Mjh8XHUyNzIxfFx1MjcwNXxcdTI2OTl8XHUyNjk3fFx1MjY5NnxcdTI2OTR8XHUyNjkyfFx1MjYzOXxcdTI2Mzh8XHUyNjI2fFx1MjYyM3xcdTI2MjJ8XHUyNjIwfFx1MjYxOHxcdTI2MDR8XHUyNjAzfFx1MjYwMnxcdTIzMjh8XHUyNzRjfFx1Mjc0ZXxcdTI3MWR8XHUyNzBhfFx1MjcwYnxcdTI3MGR8XHUyNjlifFx1MjY5Y3xcdTI2MmZ8XHUyNjJhfFx1MjYyZXxcdTI3YjB8XHUyN2JmfFx1MjZmOXxcdTI2Y2V8XHUyNmIwfFx1MjZiMXxcdTI2Yzh8XHUyNmNmfFx1MjZkMXxcdTI2ZDN8XHUyNmU5fFx1MjZmMHxcdTI2ZjF8XHUyNmY0fFx1MjZmN3xcdTI2Zjh8XHUyM2YxfFx1MjNlOXxcdTIzZWN8XHUyM2YwfFx1MjNlZHxcdTIzZWV8XHUyM2YzfFx1MjNlYXxcdTIzZmF8XHUyM2Y5fFx1MjNmOHxcdTIzZjJ8XHUyM2VifFx1MjNlZnxcdTAwYTl8XHUwMGFlKXwoPzooPzpcdWQ4M2NcdWRjMDR8XHVkODNjXHVkZDcwfFx1ZDgzY1x1ZGQ3MXxcdWQ4M2NcdWRkN2V8XHVkODNjXHVkZDdmfFx1ZDgzY1x1ZGUwMnxcdWQ4M2NcdWRlMWF8XHVkODNjXHVkZTJmfFx1ZDgzY1x1ZGUzN3xcdTMyOTl8XHUzMjk3fFx1MzAzMHxcdTI5MzV8XHUyOTM0fFx1Mjc2NHxcdTI3NTd8XHUyNzQ3fFx1Mjc0NHxcdTI3MzR8XHUyNzMzfFx1MjcxNnxcdTI3MTR8XHUyNzEyfFx1MjcwOXxcdTI3MDh8XHUyNzAyfFx1MjY5M3xcdTI2Njh8XHUyNjY2fFx1MjY2NXxcdTI2NjN8XHUyNjYwfFx1MjY1M3xcdTI2NTJ8XHUyNjUxfFx1MjY1MHxcdTI2NDl8XHUyNjQ4fFx1MjYxNXxcdTI2MTR8XHUyNjExfFx1MjYwMXxcdTI2MDB8XHUyMTk5fFx1MjE5OHxcdTIxOTd8XHUyMTk2fFx1MjE5NXxcdTIxOTR8XHUyMTM5fFx1MjEyMnxcdTIwNDl8XHUzMDNkfFx1MjcwZnxcdTI3MGN8XHUyNjdmfFx1MjY3YnxcdTI2NGJ8XHUyNjRhfFx1MjY0ZnxcdTI2NGV8XHUyNjRkfFx1MjY0Y3xcdTI2M2F8XHUyNjFkfFx1MjYwZXxcdTIzMWF8XHUyMzFifFx1MjAzY3xcdTI3YTF8XHUyNmM1fFx1MjZhMHxcdTI2YTF8XHUyNmQ0fFx1MjZlYXxcdTI2ZjJ8XHUyNmFhfFx1MjZmNXxcdTI2ZmF8XHUyNmZkfFx1MjZhYnxcdTI2YmR8XHUyNmJlfFx1MjZjNHxcdTI2ZjN8XHUyNWZjfFx1MjVmYnxcdTI1ZmV8XHUyNWMwfFx1MjViNnxcdTI1YWJ8XHUyNWFhfFx1MjVmZHxcdTI0YzJ8XHUyMWE5fFx1MjFhYXxcdTJiMDV8XHUyYjU1fFx1MmI1MHxcdTJiMDZ8XHUyYjA3fFx1MmIxY3xcdTJiMWIpKFtcdUZFMEVcdUZFMEZdPykpKS9nLHM9L1smPD4nIl0vZyx0PS9JRlJBTUV8Tk9GUkFNRVN8Tk9TQ1JJUFR8U0NSSVBUfFNFTEVDVHxTVFlMRXxURVhUQVJFQXxbYS16XS8sdT1TdHJpbmcuZnJvbUNoYXJDb2RlO3JldHVybiBwfSgpOwovLyBTb3VyY2U6IHdwLWluY2x1ZGVzL2pzL3dwLWVtb2ppLm1pbi5qcwohZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKCl7ZnVuY3Rpb24gYygpe2lmKCFqKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGEudHdlbW9qaSl7aWYoaz42MDApcmV0dXJuO3JldHVybiBhLmNsZWFyVGltZW91dChnKSxnPWEuc2V0VGltZW91dChjLDUwKSx2b2lkIGsrK31mPWEudHdlbW9qaSxqPSEwLGgmJm5ldyBoKGZ1bmN0aW9uKGEpe2Zvcih2YXIgYixjLGYsZyxoPWEubGVuZ3RoO2gtLTspe2lmKGI9YVtoXS5hZGRlZE5vZGVzLGM9YVtoXS5yZW1vdmVkTm9kZXMsZj1iLmxlbmd0aCwxPT09ZiYmMT09PWMubGVuZ3RoJiYzPT09YlswXS5ub2RlVHlwZSYmIklNRyI9PT1jWzBdLm5vZGVOYW1lJiZiWzBdLmRhdGE9PT1jWzBdLmFsdCYmImxvYWQtZmFpbGVkIj09PWNbMF0uZ2V0QXR0cmlidXRlKCJkYXRhLWVycm9yIikpcmV0dXJuO2Zvcig7Zi0tOylnPWJbZl0sMz09PWcubm9kZVR5cGUmJihnPWcucGFyZW50Tm9kZSksIWd8fDEhPT1nLm5vZGVUeXBlfHxnLmNsYXNzTmFtZSYmInN0cmluZyI9PXR5cGVvZiBnLmNsYXNzTmFtZSYmLTEhPT1nLmNsYXNzTmFtZS5pbmRleE9mKCJ3cC1leGNsdWRlLWVtb2ppIil8fGQoZy50ZXh0Q29udGVudCkmJmUoZyl9fSkub2JzZXJ2ZShkb2N1bWVudC5ib2R5LHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pLGUoZG9jdW1lbnQuYm9keSl9fWZ1bmN0aW9uIGQoYSl7dmFyIGI9L1tcdTIwM0NcdTIwNDlcdTIwRTNcdTIxMjJcdTIxMzlcdTIxOTQtXHUyMTk5XHUyMUE5XHUyMUFBXHUyMzAwXHUyMzFBXHUyMzFCXHUyMzI4XHUyMzg4XHUyM0NGXHUyM0U5LVx1MjNGM1x1MjNGOC1cdTIzRkFcdTI0QzJcdTI1QUFcdTI1QUJcdTI1QjZcdTI1QzBcdTI1RkItXHUyNUZFXHUyNjAwLVx1MjYwNFx1MjYwRVx1MjYxMVx1MjYxNFx1MjYxNVx1MjYxOFx1MjYxRFx1MjYyMFx1MjYyMlx1MjYyM1x1MjYyNlx1MjYyQVx1MjYyRVx1MjYyRlx1MjYzOFx1MjYzOVx1MjYzQVx1MjY0OC1cdTI2NTNcdTI2NjBcdTI2NjNcdTI2NjVcdTI2NjZcdTI2NjhcdTI2N0JcdTI2N0ZcdTI2OTJcdTI2OTNcdTI2OTRcdTI2OTZcdTI2OTdcdTI2OTlcdTI2OUJcdTI2OUNcdTI2QTBcdTI2QTFcdTI2QUFcdTI2QUJcdTI2QjBcdTI2QjFcdTI2QkRcdTI2QkVcdTI2QzRcdTI2QzVcdTI2QzhcdTI2Q0VcdTI2Q0ZcdTI2RDFcdTI2RDNcdTI2RDRcdTI2RTlcdTI2RUFcdTI2RjAtXHUyNkY1XHUyNkY3LVx1MjZGQVx1MjZGRFx1MjcwMlx1MjcwNVx1MjcwOC1cdTI3MERcdTI3MEZcdTI3MTJcdTI3MTRcdTI3MTZcdTI3MURcdTI3MjFcdTI3MjhcdTI3MzNcdTI3MzRcdTI3NDRcdTI3NDdcdTI3NENcdTI3NEVcdTI3NTNcdTI3NTRcdTI3NTVcdTI3NTdcdTI3NjNcdTI3NjRcdTI3OTVcdTI3OTZcdTI3OTdcdTI3QTFcdTI3QjBcdTI3QkZcdTI5MzRcdTI5MzVcdTJCMDVcdTJCMDZcdTJCMDdcdTJCMUJcdTJCMUNcdTJCNTBcdTJCNTVcdTMwMzBcdTMwM0RcdTMyOTdcdTMyOTldLyxjPS9bXHVEQzAwLVx1REZGRl0vO3JldHVybiBhP2MudGVzdChhKXx8Yi50ZXN0KGEpOiExfWZ1bmN0aW9uIGUoYSxjKXt2YXIgZDtyZXR1cm4gaSYmZiYmYSYmKCJzdHJpbmciPT10eXBlb2YgYXx8YS5jaGlsZE5vZGVzJiZhLmNoaWxkTm9kZXMubGVuZ3RoKT8oYz1jfHx7fSxkPXtiYXNlOmIuYmFzZVVybCxleHQ6Yi5leHQsY2xhc3NOYW1lOmMuY2xhc3NOYW1lfHwiZW1vamkiLGNhbGxiYWNrOmZ1bmN0aW9uKGEsYyl7c3dpdGNoKGEpe2Nhc2UiYTkiOmNhc2UiYWUiOmNhc2UiMjEyMiI6Y2FzZSIyMTk0IjpjYXNlIjI2NjAiOmNhc2UiMjY2MyI6Y2FzZSIyNjY1IjpjYXNlIjI2NjYiOnJldHVybiExfXJldHVybiFiLnN1cHBvcnRzLmZsYWcmJmIuc3VwcG9ydHMuc2ltcGxlJiZiLnN1cHBvcnRzLnVuaWNvZGU4JiZiLnN1cHBvcnRzLmRpdmVyc2l0eSYmIS9eMWYxKD86ZVs2LTlhLWZdfGZbMC05YS1mXSktMWYxKD86ZVs2LTlhLWZdfGZbMC05YS1mXSkkLy50ZXN0KGEpPyExOiIiLmNvbmNhdChjLmJhc2UsYSxjLmV4dCl9LG9uZXJyb3I6ZnVuY3Rpb24oKXtmLnBhcmVudE5vZGUmJih0aGlzLnNldEF0dHJpYnV0ZSgiZGF0YS1lcnJvciIsImxvYWQtZmFpbGVkIiksZi5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShmLmFsdCksZikpfX0sIm9iamVjdCI9PXR5cGVvZiBjLmltZ0F0dHImJihkLmF0dHJpYnV0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gYy5pbWdBdHRyfSksZi5wYXJzZShhLGQpKTphfXZhciBmLGcsaD1hLk11dGF0aW9uT2JzZXJ2ZXJ8fGEuV2ViS2l0TXV0YXRpb25PYnNlcnZlcnx8YS5Nb3pNdXRhdGlvbk9ic2VydmVyLGk9ITEsaj0hMSxrPTA7cmV0dXJuIGImJihpPSEoYi5zdXBwb3J0cy5zaW1wbGUmJmIuc3VwcG9ydHMuZmxhZyYmYi5zdXBwb3J0cy51bmljb2RlOCYmYi5zdXBwb3J0cy5kaXZlcnNpdHkpLGIuRE9NUmVhZHk/YygpOmIucmVhZHlDYWxsYmFjaz1jKSx7cmVwbGFjZUVtb2ppOmkscGFyc2U6ZSx0ZXN0OmR9fWEud3A9YS53cHx8e30sYS53cC5lbW9qaT1uZXcgY30od2luZG93LHdpbmRvdy5fd3BlbW9qaVNldHRpbmdzKTs=]]></data>
	</file>
</module>
