<?php

$plugin='YTo4OntzOjc6InZlcnNpb24iO3M6MzoiMC42IjtzOjY6ImF1dGhvciI7czoxNToiVGhyZXNob2xkIFN0YXRlIjtzOjEwOiJhdXRob3JfdXJpIjtzOjI2OiJodHRwOi8vdGhyZXNob2xkc3RhdGUuY29tLyI7czoxMToiZGVzY3JpcHRpb24iO3M6MzY6IkZsZXhpYmxlIGVtYWlsIGNvbnRhY3QvZmVlZGJhY2sgZm9ybSI7czo0OiJuYW1lIjtzOjExOiJ6ZW1fY29udGFjdCI7czo0OiJoZWxwIjtzOjg2OTI6Igo8Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0Jmd0OzwvY29kZT4gcHJvZHVjZXMgYSBmbGV4aWJsZSwgY3VzdG9taXphYmxlIGVtYWlsIGNvbnRhY3QgZm9ybS4gIEl0JiM4MjE3O3MgaW50ZW5kZWQgZm9yIHVzZSBhcyBhbiBlbnF1aXJ5IGZvcm0gZm9yIGNvbW1lcmNpYWwgc2l0ZXMsIGFuZCBpbmNsdWRlcyBzZXZlcmFsIGZlYXR1cmVzIHRvIGhlbHAgcmVkdWNlIGNvbW1vbiBwcm9ibGVtcyB3aXRoIHN1Y2ggZm9ybXMgKGludmFsaWQgZW1haWwgYWRkcmVzc2VzLCBtaXNzaW5nIGluZm9ybWF0aW9uKS4KCgk8aDM+RmVhdHVyZXM6PC9oMz4KCgk8dWw+Cgk8bGk+QXJiaXRyYXJ5IHRleHQgZmllbGRzIGNhbiBiZSBzcGVjaWZpZWQsIHdpdGggbWluL21heC9yZXF1aXJlZCBzZXR0aW5ncyBmb3IgdmFsaWRhdGlvbjwvbGk+CgkJPGxpPkVtYWlsIGFkZHJlc3MgdmFsaWRhdGlvbiwgaW5jbHVkaW5nIGEgY2hlY2sgZm9yIGEgdmFsaWQgTVggcmVjb3JkIChVbml4IG9ubHkpPC9saT4KCQk8bGk+U2FmZSBlc2NhcGluZyBvZiBpbnB1dCBkYXRhPC9saT4KCQk8bGk+QWNjZXNzaWJsZSBmb3JtIGxheW91dCwgaW5jbHVkaW5nIDxjb2RlPiZsdDtsYWJlbCZndDs8L2NvZGU+IHRhZ3M8L2xpPgoJCTxsaT5TcGFtIHByZXZlbnRpb248L2xpPgoJPC91bD4KCgk8aDM+RXhhbXBsZXM6PC9oMz4KCgk8cD5UaGUgc2ltcGxlc3QgZm9ybSBpcyB0aGlzOjwvcD4KCgk8YmxvY2txdW90ZT4KCQk8cD48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0IG1haWx0bz0iZGVzdEBleGFtcGxlLmNvbSIgLyZndDs8L2NvZGU+PC9wPgoJPC9ibG9ja3F1b3RlPgoKCTxwPi4ud2hpY2ggcHJvZHVjZXMgYSBkZWZhdWx0IGZvcm0gd2l0aCBOYW1lLCBFbWFpbCBhbmQgTWVzc2FnZSBmaWVsZHMuICBFbWFpbCB3aWxsIGJlIGRlbGl2ZXJlZCB0byBkZXN0QGV4YW1wbGUuY29tLCB3aXRoIHRoZSB1c2VyJiM4MjE3O3Mgc3VwcGxpZWQgZW1haWwgYXMgdGhlIDxjb2RlPkZyb206PC9jb2RlPiBhZGRyZXNzLjwvcD4KCgk8cD5UbyBzcGVjaWZ5IGZpZWxkcyBleHBsaWNpdGx5LCB1c2Ugc29tZXRoaW5nIGxpa2UgdGhpczo8L3A+CgoJPGJsb2NrcXVvdGU+CgkJPHA+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCBtYWlsdG89ImRlc3RAZXhhbXBsZS5jb20iJmd0OzxiciAvPgombHQ7dHhwOnplbV9jb250YWN0X2VtYWlsIC8mZ3Q7Jmx0O2JyIC8mZ3Q7PGJyIC8+CiZsdDt0eHA6emVtX2NvbnRhY3RfdGV4dCBsYWJlbD0iUGhvbmUiIG1pbj03IC8mZ3Q7Jmx0O2JyIC8mZ3Q7PGJyIC8+CiZsdDt0eHA6emVtX2NvbnRhY3RfdGV4dGFyZWEgbGFiZWw9IkVucXVpcnkiIC8mZ3Q7Jmx0O2JyIC8mZ3Q7PGJyIC8+CiZsdDt0eHA6emVtX2NvbnRhY3Rfc3VibWl0IGxhYmVsPSJFbnF1aXJlIiAvJmd0OzxiciAvPgombHQ7L3R4cDp6ZW1fY29udGFjdCZndDs8YnIgLz4KPC9jb2RlPjwvcD4KCTwvYmxvY2txdW90ZT4KCgk8cD5BbHRlcm5hdGl2ZWx5LCBwbGFjZSB0aGUgZmllbGQgc3BlY2lmaWNhdGlvbnMgaW4gYSBUZXh0cGF0dGVybiBmb3JtLCBhbmQgY2FsbCBpdCBsaWtlIHRoaXM6PC9wPgoKPHByZT48Y29kZT4KJmx0O3R4cDp6ZW1fY29udGFjdCBtYWlsdG89ImRlc3RAZXhhbXBsZS5jb20iIGZvcm09Im15Y29udGFjdGZvcm0iIC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8aDM+VGFnczwvaDM+CgoJPGJsb2NrcXVvdGU+CgkJPHA+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCAvJmd0OzwvY29kZT48L3A+Cgk8L2Jsb2NrcXVvdGU+CgoJPHA+TWF5IGJlIHVzZWQgYXMgYSBzZWxmLWNsb3Npbmcgb3IgY29udGFpbmVyIHRhZy4gIFBsYWNlIHRoaXMgd2hlcmUgeW91IHdhbnQgdGhlIGlucHV0IGZvcm0gdG8gZ28uICBTdGF0dXMgYW5kIGVycm9yIG1lc3NhZ2VzLCBpZiBhbnksIHdpbGwgYmUgZGlzcGxheWVkIGJlZm9yZSB0aGUgZm9ybS4gIEF0dHJpYnV0ZXM6PC9wPgoKCTx1bD4KCTxsaT48c3Ryb25nPm1haWx0bzwvc3Ryb25nPiAmIzgyMTE7IGRlc3RpbmF0aW9uIGFkZHJlc3MuICBSZXF1aXJlZC48L2xpPgoJCTxsaT48c3Ryb25nPmZvcm08L3N0cm9uZz4gJiM4MjExOyBmb3JtIGNvbnRhaW5pbmcgdGhlIGZpZWxkIGxheW91dC4gIE9wdGlvbmFsLjwvbGk+CgkJPGxpPjxzdHJvbmc+bWFpbGZyb208L3N0cm9uZz4gJiM4MjExOyB1c2UgdGhlIHNwZWNpZmllZCBlbWFpbCBhZGRyZXNzIGluIHRoZSAmIzgyMjA7RnJvbTomIzgyMjE7IGZpZWxkIHdoZW4gc2VuZGluZyBlbWFpbC4gIElmIG5vIDxjb2RlPm1haWxmcm9tPC9jb2RlPiBpcyBzcGVjaWZpZWQsIHRoZSBzZW5kZXImIzgyMTc7cyBlbWFpbCBhZGRyZXNzIHdpbGwgYmUgdXNlZC4gIFdoZW4gPGNvZGU+bWFpbGZyb208L2NvZGU+IGlzIHNwZWNpZmllZCwgdGhlIHNlbmRlciYjODIxNztzIGVtYWlsIGFkZHJlc3Mgd2lsbCBiZSBwbGFjZWQgaW4gdGhlICYjODIyMDtSZXBseS1UbzomIzgyMjE7IGZpZWxkIGluc3RlYWQuPC9saT4KCQk8bGk+PHN0cm9uZz50aGFua3Nmb3JtPC9zdHJvbmc+ICYjODIxMTsgVGhlIG5hbWUgb2YgYSBmb3JtIGNvbnRhaW5pbmcgYSB0aGFua3lvdSBtZXNzYWdlLiAgT3B0aW9uYWwuPC9saT4KCQk8bGk+PHN0cm9uZz5zaG93aW5wdXQ8L3N0cm9uZz4gJiM4MjExOyBVc2UgPGNvZGU+c2hvd2lucHV0PTA8L2NvZGU+IHRvIGRpc2FibGUgZGlzcGxheSBvZiB0aGUgaW5wdXQgZm9ybS4gIE9wdGlvbmFsLjwvbGk+CgkJPGxpPjxzdHJvbmc+c2hvd2Vycm9yPC9zdHJvbmc+ICYjODIxMTsgVXNlIDxjb2RlPnNob3dlcnJvcj0wPC9jb2RlPiB0byBkaXNhYmxlIGRpc3BsYXkgb2YgZXJyb3IgYW5kIHN0YXR1cyBtZXNzYWdlcy4gIE9wdGlvbmFsLjwvbGk+Cgk8L3VsPgoKPGNvZGU+c2hvd2lucHV0PC9jb2RlPiBhbmQgPGNvZGU+c2hvd2Vycm9yPC9jb2RlPiBjYW4gYmUgdXNlZCB0byBkaXNwbGF5IHRoZSBmb3JtIGFuZCBlcnJvci90aGFua3lvdSBtZXNzYWdlcyBvbiBkaWZmZXJlbnQgcGFydHMgb2YgYSBwYWdlLiAgRm9yIGV4YW1wbGU6CgoJPGJsb2NrcXVvdGU+CgkJPHA+PGNvZGU+Jmx0O2RpdiBpZD0iZXJyb3IiJmd0OyZsdDt0eHA6emVtX2NvbnRhY3QgZm9ybT0iY29udGFjdF9mb3JtIiBzaG93aW5wdXQ9MCAvJmd0OyZsdDsvZGl2Jmd0OzwvY29kZT48YnIgLz4KPGNvZGU+Jmx0O2RpdiBpZD0iaW5wdXRmb3JtIiZndDsmbHQ7dHhwOnplbV9jb250YWN0IGZvcm09ImNvbnRhY3RfZm9ybSIgc2hvd2Vycm9yPTAgLyZndDsmbHQ7L2RpdiZndDs8L2NvZGU+PC9wPgoJPC9ibG9ja3F1b3RlPgoKCTxwPlRoZSByZW1haW5pbmcgdGFncyBtYXkgb25seSBiZSB1c2VkIHdpdGhpbiBhIDxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3QmZ3Q7PC9jb2RlPiBmb3JtIG9yIGNvbnRhaW5lcjo8L3A+CgoJPGJsb2NrcXVvdGU+CgkJPHA+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF90ZXh0IC8mZ3Q7PC9jb2RlPjwvcD4KCTwvYmxvY2txdW90ZT4KCgk8cD5DcmVhdGVzIGEgdGV4dCBpbnB1dCBmaWVsZCBhbmQgY29ycmVzcG9uZGluZyA8Y29kZT4mbHQ7bGFiZWwmZ3Q7PC9jb2RlPiB0YWcuICBUaGUgaW5wdXQgdmFsdWUgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZW1haWwsIHByZWNlZWRlZCBieSB0aGUgbGFiZWwuICBBdHRyaWJ1dGVzOjwvcD4KCgk8dWw+Cgk8bGk+PHN0cm9uZz5sYWJlbDwvc3Ryb25nPiAmIzgyMTE7IFRleHQgbGFiZWwgZGlzcGxheWVkIHRvIHRoZSB1c2VyLiAgRGVmYXVsdCBpcyAmIzgyMTY7VGV4dCYjODIxNzsuPC9saT4KCQk8bGk+PHN0cm9uZz5uYW1lPC9zdHJvbmc+ICYjODIxMTsgRmllbGQgbmFtZSwgYXMgdXNlZCBpbiB0aGUgSFRNTCBpbnB1dCB0YWcuICBPcHRpb25hbCwgZGVmYXVsdHMgdG8gdGhlIDxjb2RlPmxhYmVsPC9jb2RlPi48L2xpPgoJCTxsaT48c3Ryb25nPmJyZWFrPC9zdHJvbmc+ICYjODIxMTsgQnJlYWsgdGFnIGJldHdlZW4gdGhlIGxhYmVsIGFuZCBmaWVsZC4gIERlZmF1bHQgaXMgPGNvZGU+Jmx0O2JyIC8mZ3Q7PC9jb2RlPi4gIFVzZSA8Y29kZT5icmVhaz0nJzwvY29kZT4gdG8gcHV0IHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQgb24gdGhlIHNhbWUgbGluZS48L2xpPgoJCTxsaT48c3Ryb25nPnNpemU8L3N0cm9uZz4gJiM4MjExOyBTaXplIG9mIHRoZSBpbnB1dCBmaWVsZCBhcyBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuICBMZWF2ZSBlbXB0eSBmb3IgdGhlIGJyb3dzZXIgZGVmYXVsdC48L2xpPgoJCTxsaT48c3Ryb25nPnJlcXVpcmVkPC9zdHJvbmc+ICYjODIxMTsgVXNlIDxjb2RlPnJlcXVpcmVkPTE8L2NvZGU+IHRvIG1ha2UgdGhlIGZpZWxkIG1hbmRhdG9yeS4gIFRoZSB0ZXh0IGxhYmVsIHdpbGwgYmUgZGlzcGxheWVkIGluIGJvbGQsIGFuZCB0aGUgZm9ybSB3aWxsIGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZSBpZiBubyBpbnB1dCBpcyBwcm92aWRlZC4gIE9wdGlvbmFsLjwvbGk+CgkJPGxpPjxzdHJvbmc+bWluPC9zdHJvbmc+ICYjODIxMTsgTWluaW11bSBpbnB1dCBsZW5ndGggaW4gY2hhcmFjdGVycy4gIEFuIGVycm9yIG1lc3NhZ2Ugd2lsbCBiZSBkaXNwbGF5ZWQgaWYgdGhlIGlucHV0IGlzIGxlc3MgdGhhbiA8Y29kZT5taW48L2NvZGU+LiAgT3B0aW9uYWwsIGRlZmF1bHQgaXMgMC48L2xpPgoJCTxsaT48c3Ryb25nPm1heDwvc3Ryb25nPiAmIzgyMTE7IE1heGltdW0gaW5wdXQgbGVuZ3RoIGluIGNoYXJhY3RlcnMuICBVc2VkIGZvciB0aGUgPGNvZGU+bWF4bGVuZ3RoPC9jb2RlPiBwYXJhbWV0ZXIgb2YgdGhlIGlucHV0IGZpZWxkLiAgTm8gZXJyb3Igd2lsbCBiZSBkaXNwbGF5ZWQgaWYgdGhlIGxlbmd0aCBpcyBleGNlZWRlZCwgYnV0IHRoZSB2YWx1ZSB3aWxsIGJlIHRydW5jYXRlZCBmb3IgdGhlIGVtYWlsLiAgT3B0aW9uYWwsIGRlZmF1bHQgaXMgMTAwLjwvbGk+CgkJPGxpPjxzdHJvbmc+ZGVmYXVsdDwvc3Ryb25nPiAmIzgyMTE7IERlZmF1bHQgdmFsdWUgd2hlbiBubyBpbnB1dCBpcyBwcm92aWRlZC4gIE9wdGlvbmFsLjwvbGk+Cgk8L3VsPgoKCTxibG9ja3F1b3RlPgoJCTxwPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3RfZW1haWwgLyZndDs8L2NvZGU+PC9wPgoJPC9ibG9ja3F1b3RlPgoKCTxwPklucHV0IGZpZWxkIGZvciB1c2VyJiM4MjE3O3MgZW1haWwgYWRkcmVzcy4gIFRoZSBpbnB1dCB2YWx1ZSB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgdmFsaWRhdGVkIHRvIG1ha2Ugc3VyZSBpdCBpcyBvZiB0aGUgZm9ybSAmIzgyMTY7YWJjQHh4eC55eXlbLnp6el0mIzgyMTc7LiAgSWYgdGhlIFVuaXgtb25seSA8Y29kZT5nZXRteHJyKCk8L2NvZGU+IGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSwgdGhlIGZvcm0gd2lsbCB2ZXJpZnkgdGhhdCBhbiBBIG9yIE1YIHJlY29yZCBleGlzdHMgZm9yIHRoZSBkb21haW4uICBBdHRyaWJ1dGVzIGFyZSB0aGUgc2FtZSBhcyBmb3IgPGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF90ZXh0IC8mZ3Q7PC9jb2RlPiwgZXhjZXB0IHRoYXQgdGhlIGRlZmF1bHQgbGFiZWwgaXMgJiM4MjE2O0VtYWlsJiM4MjE3OywgYW5kIDxjb2RlPnJlcXVpcmVkPTE8L2NvZGU+LjwvcD4KCgk8YmxvY2txdW90ZT4KCQk8cD48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3NlbGVjdCAvJmd0OzwvY29kZT48L3A+Cgk8L2Jsb2NrcXVvdGU+CgoJPHA+Q3JlYXRlcyBhIGRyb3AtZG93biBzZWxlY3Rpb24gbGlzdC4gIEF0dHJpYnV0ZXMgYXJlIHNpbWlsYXIgdG8gPGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF90ZXh0IC8mZ3Q7PC9jb2RlPiwgd2l0aCB0aGUgZm9sbG93aW5nIGFkZGl0aW9uczo8L3A+CgoJPHVsPgoJPGxpPjxzdHJvbmc+bGlzdDwvc3Ryb25nPiAmIzgyMTE7IEEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgaXRlbXMgdG8gc2hvdyBpbiB0aGUgZHJvcC1kb3duIGJveDsgZS5nLiAmIzgyMjA7U2FsZXMsU3VwcG9ydCxBY2NvdW50cyYjODIyMTsuPC9saT4KCQk8bGk+PHN0cm9uZz5kZWxpbTwvc3Ryb25nPiAmIzgyMTE7IFRoZSBzZXBhcmF0b3IgdXNlZCBpbiBwYXJzaW5nIHRoZSA8c3Ryb25nPmxpc3Q8L3N0cm9uZz4gYXR0cmlidXRlLiAgRGVmYXVsdCBpcyAmIzgyMjE7LCYjODIyMTs8L2xpPgoJCTxsaT48c3Ryb25nPnNlbGVjdGVkPC9zdHJvbmc+ICYjODIxMTsgVGhlIGxpc3QgaXRlbSB0aGF0IGlzIHNlbGVjdGVkIGJ5IGRlZmF1bHQ7IGUuZy4gJiM4MjIwO1N1cHBvcnQmIzgyMjE7LiAgRGVmYXVsdCBpcyAmIzgyMjA7JiM4MjIxOy48L2xpPgoJPC91bD4KCgk8cD48c3Ryb25nPm1pbjwvc3Ryb25nPiBhbmQgPHN0cm9uZz5tYXg8L3N0cm9uZz4gaGF2ZSBubyBlZmZlY3QuICBJZiA8c3Ryb25nPnJlcXVpcmVkPC9zdHJvbmc+IGlzIHVzZWQsIGFuIGVtcHR5IGl0ZW0gd2lsbCBub3QgYmUgYWNjZXB0ZWQuICBVc2UgPGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZWxlY3QgbGlzdD0iLFNhbGVzLFN1cHBvcnQiIHJlcXVpcmVkPTEgLyZndDs8L2NvZGU+IHRvIG1ha2UgdGhlIGZpcnN0IGl0ZW0gYmxhbmssIGFuZCByZXF1aXJlIHRoYXQgdGhlIHVzZXIgc2VsZWN0IGVpdGhlciBTYWxlcyBvciBTdXBwb3J0LjwvcD4KCgk8YmxvY2txdW90ZT4KCQk8cD48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X2NoZWNrYm94IC8mZ3Q7PC9jb2RlPjwvcD4KCTwvYmxvY2txdW90ZT4KCgk8cD5DcmVhdGVzIGEgY2hlY2tib3guICBBdHRyaWJ1dGVzIGFyZSBzaW1pbGFyIHRvIDxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3RfdGV4dCAvJmd0OzwvY29kZT4sIGV4Y2VwdCB0aGF0IDxzdHJvbmc+bWluPC9zdHJvbmc+IGFuZCA8c3Ryb25nPm1heDwvc3Ryb25nPiBoYXZlIG5vIGVmZmVjdC48L3A+CgoJPHVsPgoJPGxpPjxzdHJvbmc+Y2hlY2tlZDwvc3Ryb25nPiAmIzgyMTE7IFVzZSA8Y29kZT5jaGVja2VkPTE8L2NvZGU+IHRvIG1ha2UgdGhlIGJveCBjaGVja2VkIHdoZW4gdGhlIGZvcm0gaXMgZmlyc3QgZGlzcGxheWVkLiAgRGVmYXVsdCBpcyAwLjwvbGk+Cgk8L3VsPgoKCTxwPklmIDxzdHJvbmc+cmVxdWlyZWQ8L3N0cm9uZz4gaXMgdXNlZCwgdGhlIGZvcm0gd29uJiM4MjE3O3QgYmUgYWNjZXB0ZWQgdW5sZXNzIHRoZSBib3ggaXMgY2hlY2tlZC4gIFVzZSA8Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X2NoZWNrYm94IGxhYmVsPSJJIGFjY2VwdCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMiIHJlcXVpcmVkPTEgLyZndDs8L2NvZGU+IHRvIG1ha2UgYSBjcnVkZSBzaHJpbmt3cmFwIGFncmVlbWVudC48L3A+CgoJPGJsb2NrcXVvdGU+CgkJPHA+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF90ZXh0YXJlYSAvJmd0OzwvY29kZT48L3A+Cgk8L2Jsb2NrcXVvdGU+CgoJPHA+VGV4dGFyZWEgaW5wdXQgZmllbGQuICBTdXBwb3J0cyB0aGUgc2FtZSBhdHRyaWJ1dGVzIGFzIDxjb2RlPiZsdDt0eHA6emVtX2NvbnRlbnRfdGV4dCAvJmd0OzwvY29kZT4sIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiA8Y29kZT5zaXplPC9jb2RlPi4gIFRoZSBkZWZhdWx0IGxhYmVsIGlzICYjODIxNjtNZXNzYWdlJiM4MjE3OywgYW5kIHRoZSBkZWZhdWx0IDxjb2RlPm1heDwvY29kZT4gaXMgMTAwMDAuICBBZGRpdGlvbmFsIGF0dHJpYnV0ZXM6PC9wPgoKCTx1bD4KCTxsaT48c3Ryb25nPmNvbHM8L3N0cm9uZz4gJiM4MjExOyBjb2x1bW4gd2lkdGguICBPcHRpb25hbCwgZGVmYXVsdCBpcyA1MC48L2xpPgoJCTxsaT48c3Ryb25nPnJvd3M8L3N0cm9uZz4gJiM4MjExOyByb3cgaGVpZ2h0LiAgT3B0aW9uYWwsIGRlZmF1bHQgaXMgNi48L2xpPgoJPC91bD4KCgk8YmxvY2txdW90ZT4KCQk8cD48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3N1Ym1pdCAvJmd0OzwvY29kZT48L3A+Cgk8L2Jsb2NrcXVvdGU+CgoJPHA+U3VibWl0IGJ1dHRvbi4gIEF0dHJpYnV0ZXM6PC9wPgoKCTx1bD4KCTxsaT48c3Ryb25nPmxhYmVsPC9zdHJvbmc+ICYjODIxMTsgQnV0dG9uIHRleHQuICBEZWZhdWx0IGlzICYjODIxNjtTZW5kJiM4MjE3Oy48L2xpPgoJPC91bD4KCgk8YmxvY2txdW90ZT4KCQk8cD48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3NlcnZlcmluZm8gLyZndDs8L2NvZGU+PC9wPgoJPC9ibG9ja3F1b3RlPgoKCTxwPlRoaXMgdGFnIGhhcyBubyBlZmZlY3Qgb24gdGhlIGZvcm0gb3IgSFRNTCBvdXRwdXQsIGJ1dCB3aWxsIGluY2x1ZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBpbiB0aGUgZW1haWwgYmFzZWQgb24gdGhlIFBIUCA8Y29kZT4kX1NFUlZFUjwvY29kZT4gdmFyaWFibGUuICBGb3IgZXhhbXBsZSwgPGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZXJ2ZXJpbmZvIG5hbWU9IlJFTU9URV9BRERSIiBsYWJlbD0iSVAiIC8mZ3Q7PC9jb2RlPiB3aWxsIHJlcG9ydCB0aGUgdXNlciYjODIxNztzIElQIGFkZHJlc3MuICBBdHRyaWJ1dGVzOjwvcD4KCgk8dWw+Cgk8bGk+PHN0cm9uZz5uYW1lPC9zdHJvbmc+ICYjODIxMTsgbmFtZSBvZiB0aGUgc2VydmVyIHZhcmlhYmxlLCBlLmcuIFJFUVVFU1RfVVJJLCBIVFRQX1VTRVJfQUdFTlQuICBTZWUgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vcmVzZXJ2ZWQudmFyaWFibGVzLnBocCNyZXNlcnZlZC52YXJpYWJsZXMuc2VydmVyIj5QSFAgbWFudWFsPC9hPiBmb3IgYSBmdWxsIGxpc3QuICBSZXF1aXJlZC48L2xpPgoJCTxsaT48c3Ryb25nPmxhYmVsPC9zdHJvbmc+ICYjODIxMTsgaWYgc3VwcGxpZWQsIHRoaXMgd2lsbCBiZSB1c2VkIHRvIGlkZW50aWZ5IHRoZSBmaWVsZCBpbiB0aGUgZW1haWwuICBPcHRpb25hbC48L2xpPgoJPC91bD4KCgoKCiAiO3M6NDoiY29kZSI7czo4OTY1OiIKZnVuY3Rpb24gemVtX2NvbnRhY3QoJGF0dHMsICR0aGluZz0nJykgewoJZ2xvYmFsICR6ZW1fY29udGFjdF9lcnJvciwgJHNpdGVuYW1lLCAkemVtX2NvbnRhY3RfZnJvbSwgJHplbV9jb250YWN0X25vbmNlLCAkemVtX2NvbnRhY3RfZm9ybTsKCgkkZm9ybSA9IChlbXB0eSgkYXR0c1snZm9ybSddKSA/ICcnIDogJGF0dHNbJ2Zvcm0nXSk7CgkkdGhhbmtzZm9ybSA9IChlbXB0eSgkYXR0c1sndGhhbmtzZm9ybSddKSA/ICcnIDogJGF0dHNbJ3RoYW5rc2Zvcm0nXSk7CgkkdGhhbmtzID0gKGVtcHR5KCRhdHRzWyd0aGFua3MnXSkgPyAnPHA+RW1haWwgZW5xdWlyeSBzZW50PC9wPicgOiAkYXR0c1sndGhhbmtzJ10pOwoJJG1haWx0byA9IChlbXB0eSgkYXR0c1snbWFpbHRvJ10pID8gJycgOiAkYXR0c1snbWFpbHRvJ10pOwoJJG1haWxmcm9tID0gKGVtcHR5KCRhdHRzWydtYWlsZnJvbSddKSA/ICcnIDogJGF0dHNbJ21haWxmcm9tJ10pOwoJJHNob3dpbnB1dCA9IGlzc2V0KCRhdHRzWydzaG93aW5wdXQnXSkgPyAkYXR0c1snc2hvd2lucHV0J10gOiAxOwoJJHNob3dlcnJvciA9IGlzc2V0KCRhdHRzWydzaG93ZXJyb3InXSkgPyAkYXR0c1snc2hvd2Vycm9yJ10gOiAxOwoKCWlmICghJG1haWx0bykKCQlyZXR1cm4gJ05vIG1haWx0byBhZGRyZXNzIHNwZWNpZmllZCc7CgoJaWYgKCRmb3JtKQoJCSRGb3JtID0gZmV0Y2goIkZvcm0iLCJ0eHBfZm9ybSIsIm5hbWUiLCRmb3JtKTsKCWVsc2UKCQkkZm9ybSA9ICR0aGluZzsKCglpZiAoZW1wdHkoJGZvcm0pKSB7CgkJJGZvcm0gPTw8PEVPRgo8dHhwOnplbV9jb250YWN0X3RleHQgbGFiZWw9Ik5hbWUiIC8+PGJyIC8+Cjx0eHA6emVtX2NvbnRhY3RfZW1haWwgLz48YnIgLz4KPHR4cDp6ZW1fY29udGFjdF90ZXh0YXJlYSAvPjxiciAvPgo8dHhwOnplbV9jb250YWN0X3N1Ym1pdCAvPgpFT0Y7Cgl9CgoJaWYgKCR0aGFua3Nmb3JtKQoJCSR0aGFua3MgPSBmZXRjaCgiRm9ybSIsInR4cF9mb3JtIiwibmFtZSIsJHRoYW5rc2Zvcm0pOwoKCSR6ZW1fY29udGFjdF9ub25jZSA9IG1kNSh1bmlxaWQocmFuZCgpLCB0cnVlKSk7CglzYWZlX2luc2VydCgidHhwX2Rpc2N1c3Nfbm9uY2UiLCAiaXNzdWVfdGltZT1ub3coKSwgbm9uY2U9JyR6ZW1fY29udGFjdF9ub25jZSciKTsKCgkkZiA9IHBhcnNlKCRmb3JtKTsKCgkkb3V0ID0gJyc7CglpZiAoaXNfYXJyYXkoJHplbV9jb250YWN0X2Vycm9yKSBhbmQgY291bnQoJHplbV9jb250YWN0X2Vycm9yKSkgewoJCWlmICgkc2hvd2Vycm9yKSB7CgkJCSRvdXQgLj0gIjx1bD5cbiI7CgkJCWZvcmVhY2goJHplbV9jb250YWN0X2Vycm9yIGFzICRlcnIpIHsKCQkJCSRvdXQgLj0gIjxsaT4kZXJyPC9saT5cbiI7CgkJCX0KCQkJJG91dCAuPSAiPC91bD5cbiI7CgkJfQoJfQoJZWxzZWlmICgkc2hvd2lucHV0IGFuZCBpc19hcnJheSgkemVtX2NvbnRhY3RfZm9ybSkgYW5kIHBzKCd6ZW1fY29udGFjdF9zdWJtaXQnKSkgewoKCQkkZnJvbSA9ICgkbWFpbGZyb20gPyAkbWFpbGZyb20gOiAkemVtX2NvbnRhY3RfZnJvbSk7CgkJJGhlYWRlcnMgPSAoZW1wdHkoJGZyb20pID8gJycgOiAiRnJvbTogJGZyb21cclxuIik7CgkJaWYgKCRtYWlsZnJvbSkKCQkJJGhlYWRlcnMgLj0gIlJlcGx5LVRvOiAkemVtX2NvbnRhY3RfZnJvbVxyXG4iOwogCQkkaGVhZGVycyAuPSAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxyXG4iOwogCQkkaGVhZGVycyAuPSAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVwiVVRGLThcIlxyXG4iOwoKCQkkbXNnID0gJyc7CgkJZm9yZWFjaCAoJHplbV9jb250YWN0X2Zvcm0gYXMgJGs9PiR2KQoJCQkkbXNnIC49ICIkazogIi5odG1sc3BlY2lhbGNoYXJzKCR2KS4iXG4iOwoJCSRyID0gbWFpbCgkbWFpbHRvLCAiRW1haWwgZW5xdWlyeSBmb3IgJHNpdGVuYW1lIiwgJG1zZywgJGhlYWRlcnMpOwoKCQlpZiAoJHIpIHsKCQkJJF9QT1NUID0gYXJyYXkoKTsKCQkJJG91dCAuPSAkdGhhbmtzOwoJCQkkZiA9IHBhcnNlKCRmb3JtKTsKCQl9CgkJZWxzZSB7CgkJCSRvdXQgLj0gIjxwPlVuYWJsZSB0byBzZW5kIGVtYWlsPC9wPiI7CgkJfQoJfQoKCWlmICgkc2hvd2lucHV0KQoJCSRvdXQgLj0gJzxmb3JtIGFjdGlvbj0iJy4kX1NFUlZFUlsnUkVRVUVTVF9VUkknXS4nIiBtZXRob2Q9InBvc3QiPicKCQkJLiAkZgoJCQkuICc8L2Zvcm0+JzsKCglyZXR1cm4gJG91dDsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3RfdGV4dCgkYXR0cykgewoJZ2xvYmFsICR6ZW1fY29udGFjdF9lcnJvciwgJHplbV9jb250YWN0X2Zvcm07CgkkbGFiZWwgPSAoZW1wdHkoJGF0dHNbJ2xhYmVsJ10pID8gJ1RleHQnIDogJGF0dHNbJ2xhYmVsJ10pOwoJJG5hbWUgPSAoZW1wdHkoJGF0dHNbJ25hbWUnXSkgPyBwcmVnX3JlcGxhY2UoJy9cVy8nLCAnJywgJGxhYmVsKSA6ICRhdHRzWyduYW1lJ10pOwoJJGJyZWFrID0gKCFpc3NldCgkYXR0c1snYnJlYWsnXSkgPyAnPGJyIC8+JyA6ICRhdHRzWydicmVhayddKTsKCSRzaXplID0gKGVtcHR5KCRhdHRzWydzaXplJ10pID8gJycgOiAkYXR0c1snc2l6ZSddKTsKCSRtaW4gPSAoZW1wdHkoJGF0dHNbJ21pbiddKSA/IDAgOiAkYXR0c1snbWluJ10pOwoJJG1heCA9ICghaXNzZXQoJGF0dHNbJ21heCddKSA/IDEwMCA6ICRhdHRzWydtYXgnXSk7CgkkZGVmYXVsdCA9IChlbXB0eSgkYXR0c1snZGVmYXVsdCddKSA/ICcnIDogJGF0dHNbJ2RlZmF1bHQnXSk7CgkkcmVxdWlyZWQgPSAoZW1wdHkoJGF0dHNbJ3JlcXVpcmVkJ10pID8gZmFsc2UgOiB0cnVlKTsKCgkkc2l6ZSA9ICgkc2l6ZSA/ICdzaXplPSInLihpbnQpJHNpemUuJyInIDogJycpOwoJJG1heGxlbmd0aCA9ICgkbWF4ID8gJ21heGxlbmd0aD0iJy4oaW50KSRtYXguJyInIDogJycpOwoKCSRkZWZhdWx0ID0gKCRkZWZhdWx0ID8gJ3ZhbHVlPSInLiRkZWZhdWx0LiciJyA6ICcnKTsKCSR2ID0gKHBzKCRuYW1lKSA/IHBzKCRuYW1lKSA6ICRkZWZhdWx0KTsKCglpZiAoJHYgYW5kICRtYXgpCgkJJHYgPSBzdWJzdHIoJHYsIDAsICRtYXgpOwoKCWlmIChwcygnemVtX2NvbnRhY3Rfc3VibWl0JykgYW5kICRyZXF1aXJlZCBhbmQgZW1wdHkoJHYpKQoJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gIlJlcXVpcmVkIGZpZWxkICRsYWJlbCBpcyBtaXNzaW5nIjsKCWVsc2VpZiAocHMoJG5hbWUpIGFuZCAkbWluIGFuZCBzdHJsZW4oJHYpIDwgJG1pbikKCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9ICIkbGFiZWwgbXVzdCBiZSBhdCBsZWFzdCAkbWluIGNoYXJhY3RlcnMiOwoJZWxzZWlmIChwcygkbmFtZSkpCgkJJHplbV9jb250YWN0X2Zvcm1bJGxhYmVsXSA9ICR2OwoKCSRsID0gKCRyZXF1aXJlZCA/ICI8Yj4kbGFiZWw8L2I+IiA6ICRsYWJlbCk7CgoJcmV0dXJuICc8bGFiZWwgZm9yPSInLiRuYW1lLiciPicuJGwuJzo8L2xhYmVsPicuCgkJJGJyZWFrLgoJCSc8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iJy4kbmFtZS4nIiBpZD0iJy4kbmFtZS4nIiB2YWx1ZT0iJy5odG1sZW50aXRpZXMoJHYpLiciICcuJHNpemUuJyAnLiRtYXhsZW5ndGguJyAvPic7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3RleHRhcmVhKCRhdHRzKSB7CglnbG9iYWwgJHplbV9jb250YWN0X2Vycm9yLCAkemVtX2NvbnRhY3RfZm9ybTsKCSRsYWJlbCA9IChlbXB0eSgkYXR0c1snbGFiZWwnXSkgPyAnTWVzc2FnZScgOiAkYXR0c1snbGFiZWwnXSk7CgkkbmFtZSA9IChlbXB0eSgkYXR0c1snbmFtZSddKSA/IHByZWdfcmVwbGFjZSgnL1xXLycsICcnLCAkbGFiZWwpIDogJGF0dHNbJ25hbWUnXSk7CgkkYnJlYWsgPSAoIWlzc2V0KCRhdHRzWydicmVhayddKSA/ICc8YnIgLz4nIDogJGF0dHNbJ2JyZWFrJ10pOwoJJGNvbHMgPSAoZW1wdHkoJGF0dHNbJ2NvbHMnXSkgPyAnNTAnIDogJGF0dHNbJ2NvbHMnXSk7Cgkkcm93cyA9IChlbXB0eSgkYXR0c1sncm93cyddKSA/ICc2JyA6ICRhdHRzWydyb3dzJ10pOwoJJG1pbiA9IChlbXB0eSgkYXR0c1snbWluJ10pID8gMCA6ICRhdHRzWydtaW4nXSk7CgkkbWF4ID0gKCFpc3NldCgkYXR0c1snbWF4J10pID8gMTAwMDAgOiAkYXR0c1snbWF4J10pOwoJJGRlZmF1bHQgPSAoZW1wdHkoJGF0dHNbJ2RlZmF1bHQnXSkgPyAnJyA6ICRhdHRzWydkZWZhdWx0J10pOwoJJHJlcXVpcmVkID0gKGVtcHR5KCRhdHRzWydyZXF1aXJlZCddKSA/IGZhbHNlIDogdHJ1ZSk7CgoJJHYgPSAocHMoJG5hbWUpID8gcHMoJG5hbWUpIDogJGRlZmF1bHQpOwoJaWYgKHBzKCRuYW1lKSBhbmQgJG1heCkKCQkkdiA9IHN1YnN0cigkdiwgMCwgJG1heCk7CgoJaWYgKHBzKCd6ZW1fY29udGFjdF9zdWJtaXQnKSBhbmQgJHJlcXVpcmVkIGFuZCBlbXB0eSgkdikpCgkJJHplbV9jb250YWN0X2Vycm9yW10gPSAiUmVxdWlyZWQgZmllbGQgJGxhYmVsIGlzIG1pc3NpbmciOwoJZWxzZWlmIChwcygkbmFtZSkgYW5kICRtaW4gYW5kIHN0cmxlbigkdikgPCAkbWluKQoJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gIiRsYWJlbCBtdXN0IGJlIGF0IGxlYXN0ICRtaW4gY2hhcmFjdGVycyI7CgllbHNlaWYgKHBzKCRuYW1lKSkKCQkkemVtX2NvbnRhY3RfZm9ybVskbGFiZWxdID0gJHY7CgoJJGwgPSAoJHJlcXVpcmVkID8gIjxiPiRsYWJlbDwvYj4iIDogJGxhYmVsKTsKCXJldHVybiAnPGxhYmVsIGZvcj0iJy4kbmFtZS4nIj4nLiRsLic6PC9sYWJlbD4nLgoJCSRicmVhay4KCQknPCcuJ3RleHRhcmVhIG5hbWU9IicuJG5hbWUuJyIgaWQ9IicuJG5hbWUuJyIgcm93cz0iJy4kcm93cy4nIiBjb2xzPSInLiRjb2xzLiciPicuaHRtbGVudGl0aWVzKCR2KS4nPCcuJy90ZXh0YXJlYT4nOwp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9lbWFpbCgkYXR0cykgewoJZ2xvYmFsICR6ZW1fY29udGFjdF9lcnJvciwgJHplbV9jb250YWN0X2Zvcm0sICR6ZW1fY29udGFjdF9mcm9tOwoJJGF0dHMgPSBhcnJheV9tZXJnZShhcnJheSgnbGFiZWwnPT4nRW1haWwnLCAncmVxdWlyZWQnPT4nMScpLCAkYXR0cyk7CgkkbGFiZWwgPSAoZW1wdHkoJGF0dHNbJ2xhYmVsJ10pID8gJ0VtYWlsJyA6ICRhdHRzWydsYWJlbCddKTsKCSRuYW1lID0gKGVtcHR5KCRhdHRzWyduYW1lJ10pID8gcHJlZ19yZXBsYWNlKCcvXFcvJywgJycsICRsYWJlbCkgOiAkYXR0c1snbmFtZSddKTsKCglpZiAocHMoJ3plbV9jb250YWN0X3N1Ym1pdCcpKSB7CgkJJGVtYWlsID0gcHMoJG5hbWUpOwoJCWlmICghcHJlZ19tYXRjaCgnL15bXHcuXy1dK0AoW1x3LV0rXC4pK1tcdy1dKyQvJywgJGVtYWlsKSkKCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSAiJyRlbWFpbCcgaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcyI7CgkJZWxzZWlmIChwcmVnX21hdGNoKCIvQCguKykkLyIsICRlbWFpbCwgJG1hdGNoKSkgewoJCQkkZG9tYWluID0gJG1hdGNoWzFdOwoJCQkkbXggPSAwOwoJCQlpZiAoaXNfY2FsbGFibGUoJ2dldG14cnInKSkgewoJCQkJJGR1bW15ID0gYXJyYXkoKTsKCQkJCSRteCA9IEBnZXRteHJyKCRkb21haW4sICRteCk7CgkJCX0KCgkJCWlmICghJG14IGFuZCAoQGdldGhvc3RieW5hbWUoJGRvbWFpbikgPT0gJGRvbWFpbikpCgkJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9ICJEb21haW4gJyRkb21haW4nIGlzIG5vdCBhIHZhbGlkIGVtYWlsIGhvc3QiOwoJCQllbHNlCgkJCQkkemVtX2NvbnRhY3RfZnJvbSA9ICRlbWFpbDsKCQl9CgkJZWxzZQoJCQkkemVtX2NvbnRhY3RfZnJvbSA9ICRlbWFpbDsKCX0KCglyZXR1cm4gemVtX2NvbnRhY3RfdGV4dCgkYXR0cyk7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3NlbGVjdCgkYXR0cykgewoJZ2xvYmFsICR6ZW1fY29udGFjdF9lcnJvciwgJHplbV9jb250YWN0X2Zvcm07CgkkZGVsaW0gPSBlbXB0eSgkYXR0c1snZGVsaW0nXSkgPyAnLCcgOiAkYXR0c1snZGVsaW0nXTsKCSRsaXN0ID0gZW1wdHkoJGF0dHNbJ2xpc3QnXSkgPyAnR2VuZXJhbCBlbnF1aXJ5JyA6ICRhdHRzWydsaXN0J107Cgkkc2VsZWN0ZWQgPSBlbXB0eSgkYXR0c1snc2VsZWN0ZWQnXSkgPyAnJyA6ICRhdHRzWydzZWxlY3RlZCddOwoJJGxhYmVsID0gKGVtcHR5KCRhdHRzWydsYWJlbCddKSA/ICdPcHRpb24nIDogJGF0dHNbJ2xhYmVsJ10pOwoJJG5hbWUgPSAoZW1wdHkoJGF0dHNbJ25hbWUnXSkgPyBwcmVnX3JlcGxhY2UoJy9cVy8nLCAnJywgJGxhYmVsKSA6ICRhdHRzWyduYW1lJ10pOwoJJGJyZWFrID0gKCFpc3NldCgkYXR0c1snYnJlYWsnXSkgPyAnPGJyIC8+JyA6ICRhdHRzWydicmVhayddKTsKCSRyZXF1aXJlZCA9IChlbXB0eSgkYXR0c1sncmVxdWlyZWQnXSkgPyBmYWxzZSA6IHRydWUpOwoKCSRsaXN0ID0gc3BsaXQoJGRlbGltLCAkbGlzdCk7CgkkbGlzdCA9IGFycmF5X21hcCgndHJpbScsICRsaXN0KTsKCgkkdiA9IChwcygkbmFtZSkgPyBwcyhuYW1lKSA6ICRzZWxlY3RlZCk7CglpZiAocHMoJ3plbV9jb250YWN0X3N1Ym1pdCcpIGFuZCAkcmVxdWlyZWQgYW5kIGVtcHR5KCR2KSkKCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9ICJSZXF1aXJlZCBmaWVsZCAkbGFiZWwgaXMgbWlzc2luZyI7CgllbHNlaWYgKHBzKCRuYW1lKSBhbmQgIWluX2FycmF5KCR2LCAkbGlzdCkpCgkJJHplbV9jb250YWN0X2Vycm9yW10gPSAiVW5rbm93biAkbGFiZWwgJHYiOwoJZWxzZWlmIChwcygkbmFtZSkpCgkJJHplbV9jb250YWN0X2Zvcm1bJGxhYmVsXSA9ICR2OwoKCSRvdXQgPSAnJzsKCWZvciAoJGk9MDsgJGkgPCBjb3VudCgkbGlzdCk7ICRpKyspIHsKCQlpZiAoJGxpc3RbJGldID09ICRzZWxlY3RlZCkKCQkJJG91dCAuPSAnPG9wdGlvbiBzZWxlY3RlZD0xPicuJGxpc3RbJGldLiI8L29wdGlvbj5cbiI7CgkJZWxzZQoJCQkkb3V0IC49ICc8b3B0aW9uPicuJGxpc3RbJGldLiI8L29wdGlvbj5cbiI7Cgl9CgoJJGwgPSAoJHJlcXVpcmVkID8gIjxiPiRsYWJlbDwvYj4iIDogJGxhYmVsKTsKCXJldHVybiAnPGxhYmVsIGZvcj0iJy4kbmFtZS4nIj4nLiRsLic6PC9sYWJlbD4nLgoJCSRicmVhay4KCQknPHNlbGVjdCBuYW1lPSInLiRuYW1lLiciPicuJG91dC4nPC9zZWxlY3Q+JzsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3RfY2hlY2tib3goJGF0dHMpIHsKCWdsb2JhbCAkemVtX2NvbnRhY3RfZXJyb3IsICR6ZW1fY29udGFjdF9mb3JtOwoKCSRsYWJlbCA9IChlbXB0eSgkYXR0c1snbGFiZWwnXSkgPyAnQ2hlY2tib3gnIDogJGF0dHNbJ2xhYmVsJ10pOwoJJG5hbWUgPSAoZW1wdHkoJGF0dHNbJ25hbWUnXSkgPyBwcmVnX3JlcGxhY2UoJy9cVy8nLCAnJywgJGxhYmVsKSA6ICRhdHRzWyduYW1lJ10pOwoJJGJyZWFrID0gKCFpc3NldCgkYXR0c1snYnJlYWsnXSkgPyAnPGJyIC8+JyA6ICRhdHRzWydicmVhayddKTsKCSRjaGVja2VkID0gZW1wdHkoJGF0dHNbJ2NoZWNrZWQnXSkgPyAwIDogMTsKCSRyZXF1aXJlZCA9IChlbXB0eSgkYXR0c1sncmVxdWlyZWQnXSkgPyBmYWxzZSA6IHRydWUpOwoKCSR2ID0gKHBzKCd6ZW1fY29udGFjdF9zdWJtaXQnKSA/IChib29sKXBzKCRuYW1lKSA6ICcnKTsKCglpZiAocHMoJ3plbV9jb250YWN0X3N1Ym1pdCcpIGFuZCAkcmVxdWlyZWQgYW5kIGVtcHR5KCR2KSkKCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9ICJSZXF1aXJlZCBmaWVsZCAkbGFiZWwgaXMgbWlzc2luZyI7CgllbHNlaWYgKHBzKCd6ZW1fY29udGFjdF9zdWJtaXQnKSkKCQkkemVtX2NvbnRhY3RfZm9ybVskbGFiZWxdID0gKCR2ID8gJ1llcycgOiAnTm8nKTsKCgkkbCA9ICgkcmVxdWlyZWQgPyAiPGI+JGxhYmVsPC9iPiIgOiAkbGFiZWwpOwoJcmV0dXJuICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IicuJG5hbWUuJyInLgoJCSgkY2hlY2tlZCA/ICcgY2hlY2tlZD0idHJ1ZSInIDogJycpLgoJCSc+Jy4KCQknPGxhYmVsIGZvcj0iJy4kbmFtZS4nIj4nLiRsLic8L2xhYmVsPicuCgkJJGJyZWFrOwp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9zZXJ2ZXJpbmZvKCRhdHRzKSB7CglnbG9iYWwgJHplbV9jb250YWN0X2Vycm9yLCAkemVtX2NvbnRhY3RfZm9ybTsKCgkkbmFtZSA9IChlbXB0eSgkYXR0c1snbmFtZSddKSA/ICcnIDogJGF0dHNbJ25hbWUnXSk7CgkkbGFiZWwgPSAoZW1wdHkoJGF0dHNbJ2xhYmVsJ10pID8gJG5hbWUgOiAkYXR0c1snbGFiZWwnXSk7CgoJaWYgKCRuYW1lIGFuZCBwcygnemVtX2NvbnRhY3Rfc3VibWl0JykpCgkJJHplbV9jb250YWN0X2Zvcm1bJGxhYmVsXSA9IHNlcnZlclNldCgkbmFtZSk7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3N1Ym1pdCgkYXR0cykgewoJZ2xvYmFsICR6ZW1fY29udGFjdF9ub25jZSwgJHplbV9jb250YWN0X2Vycm9yOwoKCSRsYWJlbCA9IChlbXB0eSgkYXR0c1snbGFiZWwnXSkgPyAnU2VuZCcgOiAkYXR0c1snbGFiZWwnXSk7CgoJaWYgKHBzKCd6ZW1fY29udGFjdF9zdWJtaXQnKSkgewoJCSRub25jZSA9IHBzKCd6ZW1fY29udGFjdF9ub25jZScpOwoJCWlmIChlbXB0eSgkbm9uY2UpKSB7CgkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gIlJlcXVpcmVkIGZpZWxkIG5vbmNlIGlzIG1pc3NpbmciOwoJCX0KCQllbHNlIHsKCQkJc2FmZV9kZWxldGUoInR4cF9kaXNjdXNzX25vbmNlIiwgImlzc3VlX3RpbWUgPCBkYXRlX3N1Yihub3coKSxpbnRlcnZhbCAxMCBtaW51dGUpIik7CgkJCSRycyA9IHNhZmVfcm93KCIqIiwgInR4cF9kaXNjdXNzX25vbmNlIiwgIm5vbmNlPSckbm9uY2UnIGFuZCB1c2VkPScwJyIpOwoJCQlpZiAoJHJzKQoJCQkJc2FmZV91cGRhdGUoInR4cF9kaXNjdXNzX25vbmNlIiwgInVzZWQ9JzEnIiwgIm5vbmNlPSckbm9uY2UnIik7CgkJCWVsc2UKCQkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gIkZvcm0gZXhwaXJlZCwgcGxlYXNlIHRyeSBhZ2Fpbi4iOwoJCX0KCX0KCglyZXR1cm4gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InplbV9jb250YWN0X25vbmNlIiB2YWx1ZT0iJy4kemVtX2NvbnRhY3Rfbm9uY2UuJyIgLz4nLgoJCSc8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ6ZW1fY29udGFjdF9zdWJtaXQiIHZhbHVlPSInLiRsYWJlbC4nIiAvPic7Cn0KIjtzOjM6Im1kNSI7czozMjoiMjI2YWY4MGNjNzlmOTliZmU4MDFhNGVkZTkwZDkzNmYiO30='
?>