<?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>ModuleGenerator</name>
	<version>1.9</version>
  <mincmsversion>1.9.4</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5Nb2R1bGUgZ2VuZXJhdG9yIGxldHMgeW91IGNyZWF0ZSBhIGxpc3QgdGhlIG1vZHVsZXMgYXMgTmV3cywgUHJvZHVjdHMgYXRjLiBJbmRpdmlkdWFsIG1vZHVsZXMsIHlvdSBjYW4gbGluayBiZXR3ZWVuIHRoZW0uICBZb3UgY2FuIGNyZWF0ZSBhIG1vZHVsZSBQZW9wbGUsIEdlbmRlciBhbmQgVHlwZSBvZiBlbXBsb3ltZW50IGFuZCBsaW5rIGJldHdlbiB0aGVtLjwvcD4NCjxwPkVhY2ggbW9kdWxlIGluY2x1ZGVzIHRoZSBhYmlsaXR5IHRvIGNyZWF0ZWQgY2F0ZWdvcmllcywgY3VzdG9tIGZpZWxkcyAgYW5kIGVkaXRlZCBhIG51bWJlciBvZiBzZXR0aW5ncy48L3A+DQo8cD5Zb3UgY2FuIHVzZSB0aGUgbGlzdCB0ZW1wbGF0ZXMgLCBjYXRlZ29yaWVzIHRlbXBsYXRlcyAsIGZpbHRlciB0ZW1wbGF0ZXMsIG9yIGRldGFpbCB0ZW1wbGF0ZXMgYXMgaXQgYWxyZWFkeSBrbm93biBtb2R1bGVzIGZyb20gTmV3cywgUHJvZHVjdHMgZXRjLjwvcD48aDM+WiZhYWN1dGU7dmlzbG9zdGk8L2gzPjx1bD48bGk+Q0dFeHRlbnNpb25zID0mZ3Q7IDEuMjM8L2xpPjxsaT5FeHRlbmRlZFRvb2xzID0mZ3Q7IDEuMS4xPC9saT48bGk+Q0dTbWFydEltYWdlID0mZ3Q7IDEuNTwvbGk+PC91bD48aDM+UGFyYW1ldHJlPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGFuZz0iZW5fVVMiIC0gUGFyYW1ldGVyICZzY2Fyb247cGVjaWZpa3VqZSwgYWsmeWFjdXRlOyBqYXp5ayBzYSBtJmFhY3V0ZTsgcG91xb5pxaUgcHJlIHpvYnJhemVuaWUuIE5pZSB2JnNjYXJvbjtldGt5IG1vZHVseSB0byBwb2Rwb3J1aiZ1YWN1dGU7LCBhbGVibyBwb3RyZWJ1aiZ1YWN1dGU7LjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0b3I6IEBrdXptYW55ICZsdDt6ZGVub0BrdXptYW55LmJpeiZndDs8YnIgLz48YnIgLz5WZXJ6aWE6IDEuOTxiciAvPjxiciAvPkhpc3Qmb2FjdXRlO3JpYSB6bWllbjo8YnIgLz48dWw+DQo8bGk+VmVyc2lvbiAxLjkgSmFudWFyLCAyMDEyIA0KPGJyIC8+YWRkIGNhdGVnb3J5IGN1c3RvbSBmaWVsZHMsIG1vdmVkIHRvIHRoZWlyIG93biBzZWN0aW9uLg0KPGJyIC8+IHVwZ3JhZGUgc2NyaXB0IGNvbXBhdGlibGUgd2l0aCAxLjguMSB2ZXJzaW9uDQo8YnIgLz4gZml4IHNvbWUgaXNzdWVzDQo8L2xpPg0KPGxpPlZlcnNpb24gMS44LjEgSmFudWFyLCAyMDEyIA0KPGJyIC8+YWRkIG9wdGlvbiBmb3IgcHJldmlldyBpbiBhZG1pbg0KPGJyIC8+YWRkIHByZXZpZXcgaWNvbiBpbiBhZG1pbg0KPGJyIC8+YWRkIG9wdGlvbiBmb3IgY29weSBpdGVtDQo8YnIgLz5maXggYXV0bG9hZCBjbGFzcyBnZW5lcmF0b3Jfb3B0cyBpbiBhZG1pbg0KPC9saT4NCjxsaT5WZXJzaW9uIDEuOCBKYW51YXIsIDIwMTEgLSAgaXRlbSBwcmV2aWV3LCBidWcgZml4ZXM8L2xpPg0KPGxpPlZlcnNpb24gMS43IE5vdmVtYmVyLCAyMDExIC0gIGluaXQgcmVsZWFzZTwvbGk+DQo8L3VsPjxiciAvPg==]]></about>
	<description><![CDATA[This module add multilanguage solutions to you CMS Made Simple]]></description>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.23</requiredversion>
	</requires>
	<requires>
	  <requiredname>ExtendedTools</requiredname>
	  <requiredversion>1.1.1</requiredversion>
	</requires>
	<requires>
	  <requiredname>CGSmartImage</requiredname>
	  <requiredversion>1.5</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_deletemodule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KIyBNb2R1bGU6IE11bHRpbGFuZ3VhZ2UgQ01TDQojIFpkZW5vIEt1em1hbnkgKHpkZW5vQGt1em1hbnkuYml6KSBrdXptYW55LmJpeg0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA5IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NrZWxldG9uLw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYgKCFpc3NldCgkZ0NtcykpDQogICAgZXhpdDsNCg0KJG5hbWUgPSAnJzsNCmlmIChpc1NldCgkcGFyYW1zWyJuYW1lIl0pKSB7DQogICAgJG5hbWUgPSAkcGFyYW1zWyJuYW1lIl07DQp9DQoNCiRkYiA9IGNtc21zKCktPkdldERiKCk7DQokY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQoNCg0KaWYgKCEkdGhpcy0+Q2hlY2tBY2Nlc3MoKSkgew0KICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsNCiAgICByZXR1cm47DQp9DQoNCmlmIChlbXB0eSgkbmFtZSkpDQogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAiZ2VuZXJhdG9yIik7DQppZiAoY21zX3V0aWxzOjpnZXRfbW9kdWxlKCRuYW1lKSkgew0KICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfdW5paW5zdGFsX21vZHVsZScpKTsNCiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICJnZW5lcmF0b3IiKTsNCn0NCg0KZ2VuZXJhdG9yX29wdHM6OmRlbGV0ZSgkbmFtZSk7DQpjZ2VfZGlyOjpyZWN1cnNpdmVfcm1kaXIoY21zX2pvaW5fcGF0aCgkY29uZmlnWyJyb290X3BhdGgiXSwgJ21vZHVsZXMnLCAkbmFtZSkpOw0KDQokdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnaW5mb19zdWNjZXNzJykpOw0KJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAiZ2VuZXJhdG9yIik7DQo/Pg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/action.admin_editmodule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KIyBNb2R1bGU6IE11bHRpbGFuZ3VhZ2UgQ01TDQojIFpkZW5vIEt1em1hbnkgKHpkZW5vQGt1em1hbnkuYml6KSBrdXptYW55LmJpeg0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA5IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NrZWxldG9uLw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYgKCFpc3NldCgkZ0NtcykpDQogICAgZXhpdDsNCg0KJG5hbWUgPSAnJzsNCiRhdHRhY2ggPSAnJzsNCg0KaWYgKGlzU2V0KCRwYXJhbXNbIm5hbWUiXSkpIHsNCiAgICAkbmFtZSA9ICRwYXJhbXNbIm5hbWUiXTsNCn0NCg0KJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCg0KDQppZiAoISR0aGlzLT5DaGVja0FjY2VzcygpKSB7DQogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOw0KICAgIHJldHVybjsNCn0NCg0KDQoNCmlmIChlbXB0eSgkbmFtZSkpIHsNCiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICJnZW5lcmF0b3IiKTsNCn0NCg0KJG1vZHVsZSA9IGdlbmVyYXRvcl9vcHRzOjpnZXRfbW9kdWxlKCRuYW1lKTsNCmlmICghJG1vZHVsZSkgew0KICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwgImdlbmVyYXRvciIpOw0KfQ0KDQppZiAoaXNTZXQoJHBhcmFtc1sic3VibWl0Il0pKSB7DQoNCiAgICBpZiAoaXNTZXQoJHBhcmFtc1siYXR0YWNoIl0pICYmIGlzX2FycmF5KCRwYXJhbXNbImF0dGFjaCJdKSkgew0KICAgICAgICAkYXR0YWNoID0gaW1wbG9kZSgnLCcsICRwYXJhbXNbImF0dGFjaCJdKTsNCiAgICB9DQogICAgDQogICAgJHVwZGF0ZSA9IGdlbmVyYXRvcl9vcHRzOjp1cGRhdGVhdHRhY2goJG5hbWUsICRhdHRhY2gpOw0KDQogICAgaWYgKCR1cGRhdGUpIHsNCiAgICAgICAgJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ2luZm9fc3VjY2VzcycpKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2luZm9fZXJyb3InKSk7DQogICAgfQ0KICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwgImdlbmVyYXRvciIpOw0KfQ0KDQoNCg0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnYWRtaW5fZWRpdG1vZHVsZScsICRyZXR1cm5pZCwgJ3Bvc3QnLCAxLCAnJywgJycsYXJyYXkoJ25hbWUnID0+ICRtb2R1bGVbIm1vZHVsZV9uYW1lIl0pKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCg0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21vZHVsZW5hbWUnLCAkbW9kdWxlWyJtb2R1bGVfbmFtZSJdKTsNCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhdHRhY2gnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwgJ2F0dGFjaFtdJywgZ2VuZXJhdG9yX29wdHM6OmdldF9tb2R1bGVzX2xpc3QoKSwgKGVtcHR5KCRtb2R1bGVbImF0dGFjaCJdKSA/IGFycmF5KCkgOiBleHBsb2RlKCcsJywgJG1vZHVsZVsiYXR0YWNoIl0pKSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgbGFuZygnc3VibWl0JykpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignY2FuY2VsJywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2NhbmNlbCcsIGxhbmcoJ2NhbmNlbCcpKSk7DQoNCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdG1vZHVsZS50cGwnKTsNCj8+DQoNCg==]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgTW9kdWxlOiBNb2R1bGUgR2VuZXJhdG9yCiMgWmRlbm8gS3V6bWFueSAoemRlbm9Aa3V6bWFueS5iaXopIGt1em1hbnkuYml6CiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDkgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NrZWxldG9uLwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoKaWYgKCFpc3NldCgkZ0NtcykpCiAgICBleGl0OwoKJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwoKCmlmKGlzX2RpcmVjdG9yeV93cml0YWJsZSggJGNvbmZpZ1sncm9vdF9wYXRoJ10uRElSRUNUT1JZX1NFUEFSQVRPUi4nbW9kdWxlcycpKXsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ21vZHVsZV9kaXJfcGVybWlzc2lvbicpKTsKfQoKIyMgVEFCIEhFQURFUlMgZnJvbSBDR0UKZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7CmlmICgkdGhpcy0+Q2hlY2tBY2Nlc3MoKSkgewogICAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdnZW5lcmF0b3InLCAkdGhpcy0+TGFuZygnZ2VuZXJhdG9yJykpOwp9CgplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7CgojCiNUaGUgY29udGVudCBvZiB0aGUgdGFicwojCmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOwoKaWYgKCR0aGlzLT5DaGVja0FjY2VzcygpKSB7CiAgICBlY2hvICR0aGlzLT5TdGFydFRhYignZ2VuZXJhdG9yJyk7CiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pIC4gJy9mdW5jdGlvbi5hZG1pbl9nZW5lcmF0b3IucGhwJyk7CiAgICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKfQoKZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.do_admin_generator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KIyBNb2R1bGU6IE11bHRpbGFuZ3VhZ2UgQ01TDQojIFpkZW5vIEt1em1hbnkgKHpkZW5vQGt1em1hbnkuYml6KSBrdXptYW55LmJpeg0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA5IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NrZWxldG9uLw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYgKCFpc3NldCgkZ0NtcykpDQogICAgZXhpdDsNCg0KJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCg0KDQppZiAoISR0aGlzLT5DaGVja0FjY2VzcygpKSB7DQogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOw0KICAgIHJldHVybjsNCn0NCg0KaWYgKGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSkgew0KICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwgImdlbmVyYXRvciIpOw0KfQ0KDQokbmFtZSA9ICcnOw0KaWYgKGlzc2V0KCRwYXJhbXNbJ25hbWUnXSkpIHsNCiAgICAkbmFtZSA9IG11bmdlX3N0cmluZ190b191cmwoJHBhcmFtc1snbmFtZSddKTsNCn0NCg0KJGF0dGFjaCA9ICcnOw0KaWYgKGlzc2V0KCRwYXJhbXNbJ2F0dGFjaCddKSAmJiBpc19hcnJheSgkcGFyYW1zWydhdHRhY2gnXSkpIHsNCiAgICAkYXR0YWNoID0gaW1wbG9kZSgnLCcsICRwYXJhbXNbJ2F0dGFjaCddKTsNCn0NCg0KaWYgKGVtcHR5KCRuYW1lKSA9PSB0cnVlKSB7DQogICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdtaXNzaW5ncmVxdWlyZWQnKSk7DQogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAiZ2VuZXJhdG9yIik7DQp9DQoNCi8vY3JlYXRlIGNvcHkgZGlyDQppZiAoaXNzZXQoJHBhcmFtc1snc3VibWl0J10pKSB7DQogICAgLyoqDQogICAgICogVXNhZ2Ugb2YgdGhlIGNvcHkgZGlyZWN0b3J5IGNsYXNzDQogICAgICovDQogICAgJHNvdXJjZV9kaXIgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbInJvb3RfcGF0aCJdLCAnbW9kdWxlcycsICR0aGlzLT5HZXROYW1lKCksICdNb2R1bGVMaWInLCAnc291cmNlJywgJ01vZHVsZUV4YW1wbGUnKTsNCiAgICAkZGVzdF9kaXIgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbInJvb3RfcGF0aCJdLCAnbW9kdWxlcycsICRuYW1lKTsNCg0KICAgIGlmICghaXNTZXQoJHBhcmFtc1sib3dlcndyaXRlIl0pICYmIGlzX2RpcigkZGVzdF9kaXIpKSB7DQogICAgICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfbW9kdWxlX2V4aXN0cycpKTsNCiAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAiZ2VuZXJhdG9yIik7DQogICAgfQ0KDQogICAgJGNwID0gbmV3IGNvcHlfZGlyKCk7DQoNCi8vIHNldCB0aGUgZGlyZWN0b3J5IHRvIGNvcHkNCiAgICBpZiAoISRjcC0+c2V0Q29weUZyb21EaXIoJHNvdXJjZV9kaXIpKSB7DQogICAgICAgIGRpZSgkY3AtPnZpZXdFcnJvcigpKTsNCiAgICB9DQoNCi8vIHNldCB0aGUgZGlyZWN0b3J5IHRvIGNvcHkgdG8NCg0KICAgIGlmICghJGNwLT5zZXRDb3B5VG9EaXIoJGRlc3RfZGlyKSkgew0KICAgICAgICBkaWUoJGNwLT52aWV3RXJyb3IoKSk7DQogICAgfQ0KDQogICAgJGNwLT5jb3B5U3ViRm9sZGVycyh0cnVlKTsgLy8gaW5jbHVkZSBzdWIgZm9sZGVycyB3aGVuIGNvcHlpbmcNCiAgICAkY3AtPm92ZXJXcml0ZUZpbGVzKHRydWUpOyAvLyBvdmVyd3JpdGUgZXhpc3RpbmcgZmlsZXMNCg0KICAgICRjcC0+c2V0Q29weUNhbGxiYWNrKCd1cGRhdGVDb3B5UHJvZ3Jlc3MnKTsNCg0KICAgIGlmICghJGNwLT5jcmVhdGVDb3B5KHRydWUpKSB7IC8vIGNyZWF0ZSBhIGNvcHkgYW5kIHJlY3Vyc2UgdGhyb3VnaCBzdWIgZm9sZGVycw0KICAgICAgICBkaWUoJGNwLT52aWV3RXJyb3IoKSk7DQogICAgfQ0KDQogICAgLy9yZW5tYWUgZmlsZSBjbGFzcw0KICAgICRmaW5hbF9jbGFzcyA9IGNtc19qb2luX3BhdGgoJGRlc3RfZGlyLCAkbmFtZSAuICcubW9kdWxlLnBocCcpOw0KICAgIGlmIChpc19maWxlKCRmaW5hbF9jbGFzcykpDQogICAgICAgIHVubGluaygkZmluYWxfY2xhc3MpOw0KICAgICRyZW5hbWUgPSByZW5hbWUoY21zX2pvaW5fcGF0aCgkZGVzdF9kaXIsICdNb2R1bGVFeGFtcGxlLm1vZHVsZS5waHAnKSwgJGZpbmFsX2NsYXNzKTsNCg0KICAgIGlmICghJHJlbmFtZSkgew0KICAgICAgICBkaWUoJHRoaXMtPkxhbmcoJ2Vycm9yX3JlbmFtZV9kaXInKSk7DQogICAgfQ0KDQogICAgLy8gIHJld3JpdGUgbW9kdWxlIGNvbnRlbnQNCiAgICAkZGF0YSA9IEBmaWxlX2dldF9jb250ZW50cygkZmluYWxfY2xhc3MpOw0KICAgIGlmICgkZGF0YSkgew0KICAgICAgICAkZGF0YSA9IHN0cl9yZXBsYWNlKCdNb2R1bGVFeGFtcGxlJywgJG5hbWUsICRkYXRhKTsNCiAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJGZpbmFsX2NsYXNzLCAkZGF0YSk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgZGllKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXBsYWNlX3N0cmluZycpKTsNCiAgICB9DQogICAgDQogICAgLy8gY3JlYXRlIGRpcg0KICAgIGNnZV9kaXI6Om1rZGlycihjbXNfam9pbl9wYXRoKCRjb25maWdbInVwbG9hZHNfcGF0aCJdLCBzdHJ0b2xvd2VyKCRuYW1lKSkpOw0KICAgIGlmICghaXNTZXQoJHBhcmFtc1sib3dlcndyaXRlIl0pKQ0KICAgICAgICBnZW5lcmF0b3Jfb3B0czo6aW5zZXJ0KCRuYW1lLCAkYXR0YWNoKTsNCiAgICBlbHNlDQogICAgICAgIGdlbmVyYXRvcl9vcHRzOjp1cGRhdGVkYXRlKCRuYW1lKTsNCg0KICAgIC8vQCR0aGlzLT5TZW5kRXZlbnQoJ0xhbmdFZGl0ZWQnLCBhcnJheSgnY29tcGlkJyA9PiAkY2lkKSk7DQogICAgJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ2luZm9fc3VjY2VzcycpKTsNCiAgICAvL3JlZGlyZWN0DQogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAiZ2VuZXJhdG9yIik7DQp9DQo/Pg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/function.admin_generator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgTW9kdWxlOiBNdWx0aWxhbmd1YWdlIENNUwojIFpkZW5vIEt1em1hbnkgKHpkZW5vQGt1em1hbnkuYml6KSBrdXptYW55LmJpegojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA5IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9za2VsZXRvbi8KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoIWlzc2V0KCRnQ21zKSkKICAgIGV4aXQ7CgokYWRtaW50aGVtZSA9IGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpOwoKJGVudHJ5YXJyYXkgPSBhcnJheSgpOwokbW9kdWxlcyA9IGdlbmVyYXRvcl9vcHRzOjpnZXRfbW9kdWxlcygpOwpmb3JlYWNoICgkbW9kdWxlcyBhcyAkbW9kdWxlKSB7CiAgICAkb25lcm93ID0gY2dlX2FycmF5Ojp0b19vYmplY3QoJG1vZHVsZSk7CiAgICAkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCRtb2R1bGVbIm1vZHVsZV9uYW1lIl0pOwogICAgaWYgKCRtb2QpIHsKICAgICAgICAkb25lcm93LT5tb2R1bGVsaW5rID0gJG1vZC0+Q3JlYXRlSW1hZ2VMaW5rKCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJG1vZC0+R2V0TmFtZSgpLCAnaWNvbnMvdG9wZmlsZXMvc2hvcnRjdXQuZ2lmJywgYXJyYXkoKSwgJycsICcnLCBmYWxzZSk7CiAgICB9CiAgICAkb25lcm93LT5hdHRhY2htb2R1bGVzID0gZ2VuZXJhdG9yX29wdHM6OmdldF9hdHRhY2hfbW9kdWxlcygkbW9kdWxlWyJhdHRhY2giXSk7CiAgICAkb25lcm93LT5lZGl0bGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2VkaXRtb2R1bGUnLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsIGxhbmcoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnbmFtZScgPT4gJG1vZHVsZVsnbW9kdWxlX25hbWUnXSkpOwogICAgJG9uZXJvdy0+cmVnZW5lcmF0ZWxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkb19hZG1pbl9nZW5lcmF0b3InLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9leHBvcnQuZ2lmJywgJHRoaXMtPkxhbmcoJ3JlZ2VuZXJhdGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnbmFtZScgPT4gJG1vZHVsZVsnbW9kdWxlX25hbWUnXSwgJ293ZXJ3cml0ZScgPT4gMSwgJ3N1Ym1pdCcgPT4gMSkpOwogICAgJG9uZXJvdy0+ZGVsZXRlbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2RlbGV0ZW1vZHVsZScsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCBsYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnbmFtZScgPT4gJG1vZHVsZVsnbW9kdWxlX25hbWUnXSksICR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlJykpOwogICAgJGVudHJ5YXJyYXlbXSA9ICRvbmVyb3c7Cn0KCiR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2l0ZW1zJywgJGVudHJ5YXJyYXkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRlbnRyeWFycmF5KSk7CgoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2RvX2FkbWluX2dlbmVyYXRvcicsICRyZXR1cm5pZCwgJ3Bvc3QnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKCiR0aGlzLT5zbWFydHktPmFzc2lnbignbmFtZScsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnbmFtZScsICcnLCA1MCwgMjU1KSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignYXR0YWNoJywgJHRoaXMtPkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICdhdHRhY2hbXScsIGdlbmVyYXRvcl9vcHRzOjpnZXRfbW9kdWxlc19saXN0KCkpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgbGFuZygnc3VibWl0JykpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY2FuY2VsJywgbGFuZygnY2FuY2VsJykpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZ2VuZXJhdG9yLnRwbCcpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/jquery.tablednd_0_5.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFRhYmxlRG5EIHBsdWctaW4gZm9yIEpRdWVyeSwgYWxsb3dzIHlvdSB0byBkcmFnIGFuZCBkcm9wIHRhYmxlIHJvd3MKICogWW91IGNhbiBzZXQgdXAgdmFyaW91cyBvcHRpb25zIHRvIGNvbnRyb2wgaG93IHRoZSBzeXN0ZW0gd2lsbCB3b3JrCiAqIENvcHlyaWdodCAoYykgRGVuaXMgSG93bGV0dCA8ZGVuaXNoQGlzb2NyYS5jb20+CiAqIExpY2Vuc2VkIGxpa2UgalF1ZXJ5LCBzZWUgaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9MaWNlbnNlLgogKgogKiBDb25maWd1cmF0aW9uIG9wdGlvbnM6CiAqIAogKiBvbkRyYWdTdHlsZQogKiAgICAgVGhpcyBpcyB0aGUgc3R5bGUgdGhhdCBpcyBhc3NpZ25lZCB0byB0aGUgcm93IGR1cmluZyBkcmFnLiBUaGVyZSBhcmUgbGltaXRhdGlvbnMgdG8gdGhlIHN0eWxlcyB0aGF0IGNhbiBiZQogKiAgICAgYXNzb2NpYXRlZCB3aXRoIGEgcm93IChzdWNoIGFzIHlvdSBjYW4ndCBhc3NpZ24gYSBib3JkZXItLXdlbGwgeW91IGNhbiwgYnV0IGl0IHdvbid0IGJlCiAqICAgICBkaXNwbGF5ZWQpLiAoU28gaW5zdGVhZCBjb25zaWRlciB1c2luZyBvbkRyYWdDbGFzcy4pIFRoZSBDU1Mgc3R5bGUgdG8gYXBwbHkgaXMgc3BlY2lmaWVkIGFzCiAqICAgICBhIG1hcCAoYXMgdXNlZCBpbiB0aGUgalF1ZXJ5IGNzcyguLi4pIGZ1bmN0aW9uKS4KICogb25Ecm9wU3R5bGUKICogICAgIFRoaXMgaXMgdGhlIHN0eWxlIHRoYXQgaXMgYXNzaWduZWQgdG8gdGhlIHJvdyB3aGVuIGl0IGlzIGRyb3BwZWQuIEFzIGZvciBvbkRyYWdTdHlsZSwgdGhlcmUgYXJlIGxpbWl0YXRpb25zCiAqICAgICB0byB3aGF0IHlvdSBjYW4gZG8uIEFsc28gdGhpcyByZXBsYWNlcyB0aGUgb3JpZ2luYWwgc3R5bGUsIHNvIGFnYWluIGNvbnNpZGVyIHVzaW5nIG9uRHJhZ0NsYXNzIHdoaWNoCiAqICAgICBpcyBzaW1wbHkgYWRkZWQgYW5kIHRoZW4gcmVtb3ZlZCBvbiBkcm9wLgogKiBvbkRyYWdDbGFzcwogKiAgICAgVGhpcyBjbGFzcyBpcyBhZGRlZCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBkcmFnIGFuZCB0aGVuIHJlbW92ZWQgd2hlbiB0aGUgcm93IGlzIGRyb3BwZWQuIEl0IGlzIG1vcmUKICogICAgIGZsZXhpYmxlIHRoYW4gdXNpbmcgb25EcmFnU3R5bGUgc2luY2UgaXQgY2FuIGJlIGluaGVyaXRlZCBieSB0aGUgcm93IGNlbGxzIGFuZCBvdGhlciBjb250ZW50LiBUaGUgZGVmYXVsdAogKiAgICAgaXMgY2xhc3MgaXMgdERuRF93aGlsZURyYWcuIFNvIHRvIHVzZSB0aGUgZGVmYXVsdCwgc2ltcGx5IGN1c3RvbWlzZSB0aGlzIENTUyBjbGFzcyBpbiB5b3VyCiAqICAgICBzdHlsZXNoZWV0LgogKiBvbkRyb3AKICogICAgIFBhc3MgYSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIHJvdyBpcyBkcm9wcGVkLiBUaGUgZnVuY3Rpb24gdGFrZXMgMiBwYXJhbWV0ZXJzOiB0aGUgdGFibGUKICogICAgIGFuZCB0aGUgcm93IHRoYXQgd2FzIGRyb3BwZWQuIFlvdSBjYW4gd29yayBvdXQgdGhlIG5ldyBvcmRlciBvZiB0aGUgcm93cyBieSB1c2luZwogKiAgICAgdGFibGUucm93cy4KICogb25EcmFnU3RhcnQKICogICAgIFBhc3MgYSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIHVzZXIgc3RhcnRzIGRyYWdnaW5nLiBUaGUgZnVuY3Rpb24gdGFrZXMgMiBwYXJhbWV0ZXJzOiB0aGUKICogICAgIHRhYmxlIGFuZCB0aGUgcm93IHdoaWNoIHRoZSB1c2VyIGhhcyBzdGFydGVkIHRvIGRyYWcuCiAqIG9uQWxsb3dEcm9wCiAqICAgICBQYXNzIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCBhcyBhIHJvdyBpcyBvdmVyIGFub3RoZXIgcm93LiBJZiB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlLCBhbGxvdyAKICogICAgIGRyb3BwaW5nIG9uIHRoYXQgcm93LCBvdGhlcndpc2Ugbm90LiBUaGUgZnVuY3Rpb24gdGFrZXMgMiBwYXJhbWV0ZXJzOiB0aGUgZHJhZ2dlZCByb3cgYW5kIHRoZSByb3cgdW5kZXIKICogICAgIHRoZSBjdXJzb3IuIEl0IHJldHVybnMgYSBib29sZWFuOiB0cnVlIGFsbG93cyB0aGUgZHJvcCwgZmFsc2UgZG9lc24ndCBhbGxvdyBpdC4KICogc2Nyb2xsQW1vdW50CiAqICAgICBUaGlzIGlzIHRoZSBudW1iZXIgb2YgcGl4ZWxzIHRvIHNjcm9sbCBpZiB0aGUgdXNlciBtb3ZlcyB0aGUgbW91c2UgY3Vyc29yIHRvIHRoZSB0b3Agb3IgYm90dG9tIG9mIHRoZQogKiAgICAgd2luZG93LiBUaGUgcGFnZSBzaG91bGQgYXV0b21hdGljYWxseSBzY3JvbGwgdXAgb3IgZG93biBhcyBhcHByb3ByaWF0ZSAodGVzdGVkIGluIElFNiwgSUU3LCBTYWZhcmksIEZGMiwKICogICAgIEZGMyBiZXRhCiAqIGRyYWdIYW5kbGUKICogICAgIFRoaXMgaXMgdGhlIG5hbWUgb2YgYSBjbGFzcyB0aGF0IHlvdSBhc3NpZ24gdG8gb25lIG9yIG1vcmUgY2VsbHMgaW4gZWFjaCByb3cgdGhhdCBpcyBkcmFnZ2FibGUuIElmIHlvdQogKiAgICAgc3BlY2lmeSB0aGlzIGNsYXNzLCB0aGVuIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgY3Vyc29yOiBtb3ZlIGluIHRoZSBDU1MgYW5kIG9ubHkgdGhlc2UgY2VsbHMKICogICAgIHdpbGwgaGF2ZSB0aGUgZHJhZyBiZWhhdmlvdXIuIElmIHlvdSBkbyBub3Qgc3BlY2lmeSBhIGRyYWdIYW5kbGUsIHRoZW4geW91IGdldCB0aGUgb2xkIGJlaGF2aW91ciB3aGVyZQogKiAgICAgdGhlIHdob2xlIHJvdyBpcyBkcmFnZ2FibGUuCiAqIAogKiBPdGhlciB3YXlzIHRvIGNvbnRyb2wgYmVoYXZpb3VyOgogKgogKiBBZGQgY2xhc3M9Im5vZHJvcCIgdG8gYW55IHJvd3MgZm9yIHdoaWNoIHlvdSBkb24ndCB3YW50IHRvIGFsbG93IGRyb3BwaW5nLCBhbmQgY2xhc3M9Im5vZHJhZyIgdG8gYW55IHJvd3MKICogdGhhdCB5b3UgZG9uJ3Qgd2FudCB0byBiZSBkcmFnZ2FibGUuCiAqCiAqIEluc2lkZSB0aGUgb25Ecm9wIG1ldGhvZCB5b3UgY2FuIGFsc28gY2FsbCAkLnRhYmxlRG5ELnNlcmlhbGl6ZSgpIHRoaXMgcmV0dXJucyBhIHN0cmluZyBvZiB0aGUgZm9ybQogKiA8dGFibGVJRD5bXT08cm93SUQxPiY8dGFibGVJRD5bXT08cm93SUQyPiBzbyB0aGF0IHlvdSBjYW4gc2VuZCB0aGlzIGJhY2sgdG8gdGhlIHNlcnZlci4gVGhlIHRhYmxlIG11c3QgaGF2ZQogKiBhbiBJRCBhcyBtdXN0IGFsbCB0aGUgcm93cy4KICoKICogT3RoZXIgbWV0aG9kczoKICoKICogJCgiLi4uIikudGFibGVEbkRVcGRhdGUoKSAKICogV2lsbCB1cGRhdGUgYWxsIHRoZSBtYXRjaGluZyB0YWJsZXMsIHRoYXQgaXMgaXQgd2lsbCByZWFwcGx5IHRoZSBtb3VzZWRvd24gbWV0aG9kIHRvIHRoZSByb3dzIChvciBoYW5kbGUgY2VsbHMpLgogKiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgaGF2ZSB1cGRhdGVkIHRoZSB0YWJsZSByb3dzIHVzaW5nIEFqYXggYW5kIHlvdSB3YW50IHRvIG1ha2UgdGhlIHRhYmxlIGRyYWdnYWJsZSBhZ2Fpbi4KICogVGhlIHRhYmxlIG1haW50YWlucyB0aGUgb3JpZ2luYWwgY29uZmlndXJhdGlvbiAoc28geW91IGRvbid0IGhhdmUgdG8gc3BlY2lmeSBpdCBhZ2FpbikuCiAqCiAqICQoIi4uLiIpLnRhYmxlRG5EU2VyaWFsaXplKCkKICogV2lsbCBzZXJpYWxpemUgYW5kIHJldHVybiB0aGUgc2VyaWFsaXplZCBzdHJpbmcgYXMgYWJvdmUsIGJ1dCBmb3IgZWFjaCBvZiB0aGUgbWF0Y2hpbmcgdGFibGVzLS1zbyBpdCBjYW4gYmUKICogY2FsbGVkIGZyb20gYW55d2hlcmUgYW5kIGlzbid0IGRlcGVuZGVudCBvbiB0aGUgY3VycmVudFRhYmxlIGJlaW5nIHNldCB1cCBjb3JyZWN0bHkgYmVmb3JlIGNhbGxpbmcKICoKICogS25vd24gcHJvYmxlbXM6CiAqIC0gQXV0by1zY29sbCBoYXMgc29tZSBwcm9ibGVtcyB3aXRoIElFNyAgKGl0IHNjcm9sbHMgZXZlbiB3aGVuIGl0IHNob3VsZG4ndCksIHdvcmstYXJvdW5kOiBzZXQgc2Nyb2xsQW1vdW50IHRvIDAKICogCiAqIFZlcnNpb24gMC4yOiAyMDA4LTAyLTIwIEZpcnN0IHB1YmxpYyB2ZXJzaW9uCiAqIFZlcnNpb24gMC4zOiAyMDA4LTAyLTA3IEFkZGVkIG9uRHJhZ1N0YXJ0IG9wdGlvbgogKiAgICAgICAgICAgICAgICAgICAgICAgICBNYWRlIHRoZSBzY3JvbGwgYW1vdW50IGNvbmZpZ3VyYWJsZSAoZGVmYXVsdCBpcyA1IGFzIGJlZm9yZSkKICogVmVyc2lvbiAwLjQ6IDIwMDgtMDMtMTUgQ2hhbmdlZCB0aGUgbm9EcmFnL25vRHJvcCBhdHRyaWJ1dGVzIHRvIG5vZHJhZy9ub2Ryb3AgY2xhc3NlcwogKiAgICAgICAgICAgICAgICAgICAgICAgICBBZGRlZCBvbkFsbG93RHJvcCB0byBjb250cm9sIGRyb3BwaW5nCiAqICAgICAgICAgICAgICAgICAgICAgICAgIEZpeGVkIGEgYnVnIHdoaWNoIG1lYW50IHRoYXQgeW91IGNvdWxkbid0IHNldCB0aGUgc2Nyb2xsIGFtb3VudCBpbiBib3RoIGRpcmVjdGlvbnMKICogICAgICAgICAgICAgICAgICAgICAgICAgQWRkZWQgc2VyaWFsaXplIG1ldGhvZAogKiBWZXJzaW9uIDAuNTogMjAwOC0wNS0xNiBDaGFuZ2VkIHNvIHRoYXQgaWYgeW91IHNwZWNpZnkgYSBkcmFnSGFuZGxlIGNsYXNzIGl0IGRvZXNuJ3QgbWFrZSB0aGUgd2hvbGUgcm93CiAqICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdnYWJsZQogKiAgICAgICAgICAgICAgICAgICAgICAgICBJbXByb3ZlZCB0aGUgc2VyaWFsaXplIG1ldGhvZCB0byB1c2UgYSBkZWZhdWx0IChhbmQgc2V0dGFibGUpIHJlZ3VsYXIgZXhwcmVzc2lvbi4KICogICAgICAgICAgICAgICAgICAgICAgICAgQWRkZWQgdGFibGVEbkR1cGF0ZSgpIGFuZCB0YWJsZURuRFNlcmlhbGl6ZSgpIHRvIGJlIGNhbGxlZCB3aGVuIHlvdSBhcmUgb3V0c2lkZSB0aGUgdGFibGUKICovCmpRdWVyeS50YWJsZURuRCA9IHsKICAgIC8qKiBLZWVwIGhvbGQgb2YgdGhlIGN1cnJlbnQgdGFibGUgYmVpbmcgZHJhZ2dlZCAqLwogICAgY3VycmVudFRhYmxlIDogbnVsbCwKICAgIC8qKiBLZWVwIGhvbGQgb2YgdGhlIGN1cnJlbnQgZHJhZyBvYmplY3QgaWYgYW55ICovCiAgICBkcmFnT2JqZWN0OiBudWxsLAogICAgLyoqIFRoZSBjdXJyZW50IG1vdXNlIG9mZnNldCAqLwogICAgbW91c2VPZmZzZXQ6IG51bGwsCiAgICAvKiogUmVtZW1iZXIgdGhlIG9sZCB2YWx1ZSBvZiBZIHNvIHRoYXQgd2UgZG9uJ3QgZG8gdG9vIG11Y2ggcHJvY2Vzc2luZyAqLwogICAgb2xkWTogMCwKCiAgICAvKiogQWN0dWFsbHkgYnVpbGQgdGhlIHN0cnVjdHVyZSAqLwogICAgYnVpbGQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAvLyBTZXQgdXAgdGhlIGRlZmF1bHRzIGlmIGFueQoKICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIC8vIFRoaXMgaXMgYm91bmQgdG8gZWFjaCBtYXRjaGluZyB0YWJsZSwgc2V0IHVwIHRoZSBkZWZhdWx0cyBhbmQgb3ZlcnJpZGUgd2l0aCB1c2VyIG9wdGlvbnMKICAgICAgICAgICAgdGhpcy50YWJsZURuRENvbmZpZyA9IGpRdWVyeS5leHRlbmQoewogICAgICAgICAgICAgICAgb25EcmFnU3R5bGU6IG51bGwsCiAgICAgICAgICAgICAgICBvbkRyb3BTdHlsZTogbnVsbCwKCQkJCS8vIEFkZCBpbiB0aGUgZGVmYXVsdCBjbGFzcyBmb3Igd2hpbGVEcmFnZ2luZwoJCQkJb25EcmFnQ2xhc3M6ICJ0RG5EX3doaWxlRHJhZyIsCiAgICAgICAgICAgICAgICBvbkRyb3A6IG51bGwsCiAgICAgICAgICAgICAgICBvbkRyYWdTdGFydDogbnVsbCwKICAgICAgICAgICAgICAgIHNjcm9sbEFtb3VudDogNSwKCQkJCXNlcmlhbGl6ZVJlZ2V4cDogL1teXC1dKiQvLCAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIHRvIHVzZSB0byB0cmltIHJvdyBJRHMKCQkJCXNlcmlhbGl6ZVBhcmFtTmFtZTogbnVsbCwgLy8gSWYgeW91IHdhbnQgdG8gc3BlY2lmeSBhbm90aGVyIHBhcmFtZXRlciBuYW1lIGluc3RlYWQgb2YgdGhlIHRhYmxlIElECiAgICAgICAgICAgICAgICBkcmFnSGFuZGxlOiBudWxsIC8vIElmIHlvdSBnaXZlIHRoZSBuYW1lIG9mIGEgY2xhc3MgaGVyZSwgdGhlbiBvbmx5IENlbGxzIHdpdGggdGhpcyBjbGFzcyB3aWxsIGJlIGRyYWdnYWJsZQogICAgICAgICAgICB9LCBvcHRpb25zIHx8IHt9KTsKICAgICAgICAgICAgLy8gTm93IG1ha2UgdGhlIHJvd3MgZHJhZ2dhYmxlCiAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5tYWtlRHJhZ2dhYmxlKHRoaXMpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBOb3cgd2UgbmVlZCB0byBjYXB0dXJlIHRoZSBtb3VzZSB1cCBhbmQgbW91c2UgbW92ZSBldmVudAogICAgICAgIC8vIFdlIGNhbiB1c2UgYmluZCBzbyB0aGF0IHdlIGRvbid0IGludGVyZmVyZSB3aXRoIG90aGVyIGV2ZW50IGhhbmRsZXJzCiAgICAgICAgalF1ZXJ5KGRvY3VtZW50KQogICAgICAgICAgICAuYmluZCgnbW91c2Vtb3ZlJywgalF1ZXJ5LnRhYmxlRG5ELm1vdXNlbW92ZSkKICAgICAgICAgICAgLmJpbmQoJ21vdXNldXAnLCBqUXVlcnkudGFibGVEbkQubW91c2V1cCk7CgogICAgICAgIC8vIERvbid0IGJyZWFrIHRoZSBjaGFpbgogICAgICAgIHJldHVybiB0aGlzOwogICAgfSwKCiAgICAvKiogVGhpcyBmdW5jdGlvbiBtYWtlcyBhbGwgdGhlIHJvd3Mgb24gdGhlIHRhYmxlIGRyYWdnYWJsZSBhcGFydCBmcm9tIHRob3NlIG1hcmtlZCBhcyAiTm9EcmFnIiAqLwogICAgbWFrZURyYWdnYWJsZTogZnVuY3Rpb24odGFibGUpIHsKICAgICAgICB2YXIgY29uZmlnID0gdGFibGUudGFibGVEbkRDb25maWc7CgkJaWYgKHRhYmxlLnRhYmxlRG5EQ29uZmlnLmRyYWdIYW5kbGUpIHsKCQkJLy8gV2Ugb25seSBuZWVkIHRvIGFkZCB0aGUgZXZlbnQgdG8gdGhlIHNwZWNpZmllZCBjZWxscwoJCQl2YXIgY2VsbHMgPSBqUXVlcnkoInRkLiIrdGFibGUudGFibGVEbkRDb25maWcuZHJhZ0hhbmRsZSwgdGFibGUpOwoJCQljZWxscy5lYWNoKGZ1bmN0aW9uKCkgewoJCQkJLy8gVGhlIGNlbGwgaXMgYm91bmQgdG8gInRoaXMiCiAgICAgICAgICAgICAgICBqUXVlcnkodGhpcykubW91c2Vkb3duKGZ1bmN0aW9uKGV2KSB7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QgPSB0aGlzLnBhcmVudE5vZGU7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZSA9IHRhYmxlOwogICAgICAgICAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5tb3VzZU9mZnNldCA9IGpRdWVyeS50YWJsZURuRC5nZXRNb3VzZU9mZnNldCh0aGlzLCBldik7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5vbkRyYWdTdGFydCkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxsIHRoZSBvbkRyb3AgbWV0aG9kIGlmIHRoZXJlIGlzIG9uZQogICAgICAgICAgICAgICAgICAgICAgICBjb25maWcub25EcmFnU3RhcnQodGFibGUsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9KTsKCQkJfSkKCQl9IGVsc2UgewoJCQkvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHdlIGFkZCB0aGUgZXZlbnQgdG8gdGhlIHdob2xlIHJvdwoJICAgICAgICB2YXIgcm93cyA9IGpRdWVyeSgidHIiLCB0YWJsZSk7IC8vIGdldCBhbGwgdGhlIHJvd3MgYXMgYSB3cmFwcGVkIHNldAoJICAgICAgICByb3dzLmVhY2goZnVuY3Rpb24oKSB7CgkJCQkvLyBJdGVyYXRlIHRocm91Z2ggZWFjaCByb3csIHRoZSByb3cgaXMgYm91bmQgdG8gInRoaXMiCgkJCQl2YXIgcm93ID0galF1ZXJ5KHRoaXMpOwoJCQkJaWYgKCEgcm93Lmhhc0NsYXNzKCJub2RyYWciKSkgewoJICAgICAgICAgICAgICAgIHJvdy5tb3VzZWRvd24oZnVuY3Rpb24oZXYpIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGV2LnRhcmdldC50YWdOYW1lID09ICJURCIpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5kcmFnT2JqZWN0ID0gdGhpczsKCSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5jdXJyZW50VGFibGUgPSB0YWJsZTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5tb3VzZU9mZnNldCA9IGpRdWVyeS50YWJsZURuRC5nZXRNb3VzZU9mZnNldCh0aGlzLCBldik7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLm9uRHJhZ1N0YXJ0KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsbCB0aGUgb25Ecm9wIG1ldGhvZCBpZiB0aGVyZSBpcyBvbmUKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcub25EcmFnU3RhcnQodGFibGUsIHRoaXMpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfSkuY3NzKCJjdXJzb3IiLCAibW92ZSIpOyAvLyBTdG9yZSB0aGUgdGFibGVEbkQgb2JqZWN0CgkJCQl9CgkJCX0pOwoJCX0KCX0sCgoJdXBkYXRlVGFibGVzOiBmdW5jdGlvbigpIHsKCQl0aGlzLmVhY2goZnVuY3Rpb24oKSB7CgkJCS8vIHRoaXMgaXMgbm93IGJvdW5kIHRvIGVhY2ggbWF0Y2hpbmcgdGFibGUKCQkJaWYgKHRoaXMudGFibGVEbkRDb25maWcpIHsKCQkJCWpRdWVyeS50YWJsZURuRC5tYWtlRHJhZ2dhYmxlKHRoaXMpOwoJCQl9CgkJfSkKCX0sCgogICAgLyoqIEdldCB0aGUgbW91c2UgY29vcmRpbmF0ZXMgZnJvbSB0aGUgZXZlbnQgKGFsbG93aW5nIGZvciBicm93c2VyIGRpZmZlcmVuY2VzKSAqLwogICAgbW91c2VDb29yZHM6IGZ1bmN0aW9uKGV2KXsKICAgICAgICBpZihldi5wYWdlWCB8fCBldi5wYWdlWSl7CiAgICAgICAgICAgIHJldHVybiB7eDpldi5wYWdlWCwgeTpldi5wYWdlWX07CiAgICAgICAgfQogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIHg6ZXYuY2xpZW50WCArIGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCAtIGRvY3VtZW50LmJvZHkuY2xpZW50TGVmdCwKICAgICAgICAgICAgeTpldi5jbGllbnRZICsgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgIC0gZG9jdW1lbnQuYm9keS5jbGllbnRUb3AKICAgICAgICB9OwogICAgfSwKCiAgICAvKiogR2l2ZW4gYSB0YXJnZXQgZWxlbWVudCBhbmQgYSBtb3VzZSBldmVudCwgZ2V0IHRoZSBtb3VzZSBvZmZzZXQgZnJvbSB0aGF0IGVsZW1lbnQuCiAgICAgICAgVG8gZG8gdGhpcyB3ZSBuZWVkIHRoZSBlbGVtZW50J3MgcG9zaXRpb24gYW5kIHRoZSBtb3VzZSBwb3NpdGlvbiAqLwogICAgZ2V0TW91c2VPZmZzZXQ6IGZ1bmN0aW9uKHRhcmdldCwgZXYpIHsKICAgICAgICBldiA9IGV2IHx8IHdpbmRvdy5ldmVudDsKCiAgICAgICAgdmFyIGRvY1BvcyAgICA9IHRoaXMuZ2V0UG9zaXRpb24odGFyZ2V0KTsKICAgICAgICB2YXIgbW91c2VQb3MgID0gdGhpcy5tb3VzZUNvb3Jkcyhldik7CiAgICAgICAgcmV0dXJuIHt4Om1vdXNlUG9zLnggLSBkb2NQb3MueCwgeTptb3VzZVBvcy55IC0gZG9jUG9zLnl9OwogICAgfSwKCiAgICAvKiogR2V0IHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50IGJ5IGdvaW5nIHVwIHRoZSBET00gdHJlZSBhbmQgYWRkaW5nIHVwIGFsbCB0aGUgb2Zmc2V0cyAqLwogICAgZ2V0UG9zaXRpb246IGZ1bmN0aW9uKGUpewogICAgICAgIHZhciBsZWZ0ID0gMDsKICAgICAgICB2YXIgdG9wICA9IDA7CiAgICAgICAgLyoqIFNhZmFyaSBmaXggLS0gdGhhbmtzIHRvIEx1aXMgQ2hhdG8gZm9yIHRoaXMhICovCiAgICAgICAgaWYgKGUub2Zmc2V0SGVpZ2h0ID09IDApIHsKICAgICAgICAgICAgLyoqIFNhZmFyaSAyIGRvZXNuJ3QgY29ycmVjdGx5IGdyYWIgdGhlIG9mZnNldFRvcCBvZiBhIHRhYmxlIHJvdwogICAgICAgICAgICB0aGlzIGlzIGRldGFpbGVkIGhlcmU6CiAgICAgICAgICAgIGh0dHA6Ly9qYWNvYi5wZWFyZ3JvdmUuY29tL2Jsb2cvMjAwNi90ZWNobmljYWwvdGFibGUtcm93LW9mZnNldHRvcC1idWctaW4tc2FmYXJpLwogICAgICAgICAgICB0aGUgc29sdXRpb24gaXMgbGlrZXdpc2Ugbm90ZWQgdGhlcmUsIGdyYWIgdGhlIG9mZnNldCBvZiBhIHRhYmxlIGNlbGwgaW4gdGhlIHJvdyAtIHRoZSBmaXJzdENoaWxkLgogICAgICAgICAgICBub3RlIHRoYXQgZmlyZWZveCB3aWxsIHJldHVybiBhIHRleHQgbm9kZSBhcyBhIGZpcnN0IGNoaWxkLCBzbyBkZXNpZ25pbmcgYSBtb3JlIHRob3JvdWdoCiAgICAgICAgICAgIHNvbHV0aW9uIG1heSBuZWVkIHRvIHRha2UgdGhhdCBpbnRvIGFjY291bnQsIGZvciBub3cgdGhpcyBzZWVtcyB0byB3b3JrIGluIGZpcmVmb3gsIHNhZmFyaSwgaWUgKi8KICAgICAgICAgICAgZSA9IGUuZmlyc3RDaGlsZDsgLy8gYSB0YWJsZSBjZWxsCiAgICAgICAgfQoKICAgICAgICB3aGlsZSAoZS5vZmZzZXRQYXJlbnQpewogICAgICAgICAgICBsZWZ0ICs9IGUub2Zmc2V0TGVmdDsKICAgICAgICAgICAgdG9wICArPSBlLm9mZnNldFRvcDsKICAgICAgICAgICAgZSAgICAgPSBlLm9mZnNldFBhcmVudDsKICAgICAgICB9CgogICAgICAgIGxlZnQgKz0gZS5vZmZzZXRMZWZ0OwogICAgICAgIHRvcCAgKz0gZS5vZmZzZXRUb3A7CgogICAgICAgIHJldHVybiB7eDpsZWZ0LCB5OnRvcH07CiAgICB9LAoKICAgIG1vdXNlbW92ZTogZnVuY3Rpb24oZXYpIHsKICAgICAgICBpZiAoalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QgPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB2YXIgZHJhZ09iaiA9IGpRdWVyeShqUXVlcnkudGFibGVEbkQuZHJhZ09iamVjdCk7CiAgICAgICAgdmFyIGNvbmZpZyA9IGpRdWVyeS50YWJsZURuRC5jdXJyZW50VGFibGUudGFibGVEbkRDb25maWc7CiAgICAgICAgdmFyIG1vdXNlUG9zID0galF1ZXJ5LnRhYmxlRG5ELm1vdXNlQ29vcmRzKGV2KTsKICAgICAgICB2YXIgeSA9IG1vdXNlUG9zLnkgLSBqUXVlcnkudGFibGVEbkQubW91c2VPZmZzZXQueTsKICAgICAgICAvL2F1dG8gc2Nyb2xsIHRoZSB3aW5kb3cKCSAgICB2YXIgeU9mZnNldCA9IHdpbmRvdy5wYWdlWU9mZnNldDsKCSAJaWYgKGRvY3VtZW50LmFsbCkgewoJICAgICAgICAvLyBXaW5kb3dzIHZlcnNpb24KCSAgICAgICAgLy95T2Zmc2V0PWRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wOwoJICAgICAgICBpZiAodHlwZW9mIGRvY3VtZW50LmNvbXBhdE1vZGUgIT0gJ3VuZGVmaW5lZCcgJiYKCSAgICAgICAgICAgICBkb2N1bWVudC5jb21wYXRNb2RlICE9ICdCYWNrQ29tcGF0JykgewoJICAgICAgICAgICB5T2Zmc2V0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIGlmICh0eXBlb2YgZG9jdW1lbnQuYm9keSAhPSAndW5kZWZpbmVkJykgewoJICAgICAgICAgICB5T2Zmc2V0PWRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wOwoJICAgICAgICB9CgoJICAgIH0KCQkgICAgCgkJaWYgKG1vdXNlUG9zLnkteU9mZnNldCA8IGNvbmZpZy5zY3JvbGxBbW91bnQpIHsKCSAgICAJd2luZG93LnNjcm9sbEJ5KDAsIC1jb25maWcuc2Nyb2xsQW1vdW50KTsKCSAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgd2luZG93SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0ID8gd2luZG93LmlubmVySGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCA6IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0OwogICAgICAgICAgICBpZiAod2luZG93SGVpZ2h0LShtb3VzZVBvcy55LXlPZmZzZXQpIDwgY29uZmlnLnNjcm9sbEFtb3VudCkgewogICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbEJ5KDAsIGNvbmZpZy5zY3JvbGxBbW91bnQpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKCiAgICAgICAgaWYgKHkgIT0galF1ZXJ5LnRhYmxlRG5ELm9sZFkpIHsKICAgICAgICAgICAgLy8gd29yayBvdXQgaWYgd2UncmUgZ29pbmcgdXAgb3IgZG93bi4uLgogICAgICAgICAgICB2YXIgbW92aW5nRG93biA9IHkgPiBqUXVlcnkudGFibGVEbkQub2xkWTsKICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBvbGQgdmFsdWUKICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELm9sZFkgPSB5OwogICAgICAgICAgICAvLyB1cGRhdGUgdGhlIHN0eWxlIHRvIHNob3cgd2UncmUgZHJhZ2dpbmcKCQkJaWYgKGNvbmZpZy5vbkRyYWdDbGFzcykgewoJCQkJZHJhZ09iai5hZGRDbGFzcyhjb25maWcub25EcmFnQ2xhc3MpOwoJCQl9IGVsc2UgewoJICAgICAgICAgICAgZHJhZ09iai5jc3MoY29uZmlnLm9uRHJhZ1N0eWxlKTsKCQkJfQogICAgICAgICAgICAvLyBJZiB3ZSdyZSBvdmVyIGEgcm93IHRoZW4gbW92ZSB0aGUgZHJhZ2dlZCByb3cgdG8gdGhlcmUgc28gdGhhdCB0aGUgdXNlciBzZWVzIHRoZQogICAgICAgICAgICAvLyBlZmZlY3QgZHluYW1pY2FsbHkKICAgICAgICAgICAgdmFyIGN1cnJlbnRSb3cgPSBqUXVlcnkudGFibGVEbkQuZmluZERyb3BUYXJnZXRSb3coZHJhZ09iaiwgeSk7CiAgICAgICAgICAgIGlmIChjdXJyZW50Um93KSB7CiAgICAgICAgICAgICAgICAvLyBUT0RPIHdvcnJ5IGFib3V0IHdoYXQgaGFwcGVucyB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBUQk9ESUVTCiAgICAgICAgICAgICAgICBpZiAobW92aW5nRG93biAmJiBqUXVlcnkudGFibGVEbkQuZHJhZ09iamVjdCAhPSBjdXJyZW50Um93KSB7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QsIGN1cnJlbnRSb3cubmV4dFNpYmxpbmcpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICghIG1vdmluZ0Rvd24gJiYgalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QgIT0gY3VycmVudFJvdykgewogICAgICAgICAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5kcmFnT2JqZWN0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGpRdWVyeS50YWJsZURuRC5kcmFnT2JqZWN0LCBjdXJyZW50Um93KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKCiAgICAvKiogV2UncmUgb25seSB3b3JyaWVkIGFib3V0IHRoZSB5IHBvc2l0aW9uIHJlYWxseSwgYmVjYXVzZSB3ZSBjYW4gb25seSBtb3ZlIHJvd3MgdXAgYW5kIGRvd24gKi8KICAgIGZpbmREcm9wVGFyZ2V0Um93OiBmdW5jdGlvbihkcmFnZ2VkUm93LCB5KSB7CiAgICAgICAgdmFyIHJvd3MgPSBqUXVlcnkudGFibGVEbkQuY3VycmVudFRhYmxlLnJvd3M7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHJvd3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHJvdyA9IHJvd3NbaV07CiAgICAgICAgICAgIHZhciByb3dZICAgID0gdGhpcy5nZXRQb3NpdGlvbihyb3cpLnk7CiAgICAgICAgICAgIHZhciByb3dIZWlnaHQgPSBwYXJzZUludChyb3cub2Zmc2V0SGVpZ2h0KS8yOwogICAgICAgICAgICBpZiAocm93Lm9mZnNldEhlaWdodCA9PSAwKSB7CiAgICAgICAgICAgICAgICByb3dZID0gdGhpcy5nZXRQb3NpdGlvbihyb3cuZmlyc3RDaGlsZCkueTsKICAgICAgICAgICAgICAgIHJvd0hlaWdodCA9IHBhcnNlSW50KHJvdy5maXJzdENoaWxkLm9mZnNldEhlaWdodCkvMjsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBCZWNhdXNlIHdlIGFsd2F5cyBoYXZlIHRvIGluc2VydCBiZWZvcmUsIHdlIG5lZWQgdG8gb2Zmc2V0IHRoZSBoZWlnaHQgYSBiaXQKICAgICAgICAgICAgaWYgKCh5ID4gcm93WSAtIHJvd0hlaWdodCkgJiYgKHkgPCAocm93WSArIHJvd0hlaWdodCkpKSB7CiAgICAgICAgICAgICAgICAvLyB0aGF0J3MgdGhlIHJvdyB3ZSdyZSBvdmVyCgkJCQkvLyBJZiBpdCdzIHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IHJvdywgaWdub3JlIGl0CgkJCQlpZiAocm93ID09IGRyYWdnZWRSb3cpIHtyZXR1cm4gbnVsbDt9CiAgICAgICAgICAgICAgICB2YXIgY29uZmlnID0galF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZS50YWJsZURuRENvbmZpZzsKICAgICAgICAgICAgICAgIGlmIChjb25maWcub25BbGxvd0Ryb3ApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLm9uQWxsb3dEcm9wKGRyYWdnZWRSb3csIHJvdykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvdzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewoJCQkJCS8vIElmIGEgcm93IGhhcyBub2Ryb3AgY2xhc3MsIHRoZW4gZG9uJ3QgYWxsb3cgZHJvcHBpbmcgKGluc3BpcmVkIGJ5IEpvaG4gVGFyciBhbmQgRmFtaWMpCiAgICAgICAgICAgICAgICAgICAgdmFyIG5vZHJvcCA9IGpRdWVyeShyb3cpLmhhc0NsYXNzKCJub2Ryb3AiKTsKICAgICAgICAgICAgICAgICAgICBpZiAoISBub2Ryb3ApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvdzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gcm93OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfSwKCiAgICBtb3VzZXVwOiBmdW5jdGlvbihlKSB7CiAgICAgICAgaWYgKGpRdWVyeS50YWJsZURuRC5jdXJyZW50VGFibGUgJiYgalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QpIHsKICAgICAgICAgICAgdmFyIGRyb3BwZWRSb3cgPSBqUXVlcnkudGFibGVEbkQuZHJhZ09iamVjdDsKICAgICAgICAgICAgdmFyIGNvbmZpZyA9IGpRdWVyeS50YWJsZURuRC5jdXJyZW50VGFibGUudGFibGVEbkRDb25maWc7CiAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBkcmFnT2JqZWN0LCB0aGVuIHdlIG5lZWQgdG8gcmVsZWFzZSBpdCwKICAgICAgICAgICAgLy8gVGhlIHJvdyB3aWxsIGFscmVhZHkgaGF2ZSBiZWVuIG1vdmVkIHRvIHRoZSByaWdodCBwbGFjZSBzbyB3ZSBqdXN0IHJlc2V0IHN0dWZmCgkJCWlmIChjb25maWcub25EcmFnQ2xhc3MpIHsKCSAgICAgICAgICAgIGpRdWVyeShkcm9wcGVkUm93KS5yZW1vdmVDbGFzcyhjb25maWcub25EcmFnQ2xhc3MpOwoJCQl9IGVsc2UgewoJICAgICAgICAgICAgalF1ZXJ5KGRyb3BwZWRSb3cpLmNzcyhjb25maWcub25Ecm9wU3R5bGUpOwoJCQl9CiAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5kcmFnT2JqZWN0ICAgPSBudWxsOwogICAgICAgICAgICBpZiAoY29uZmlnLm9uRHJvcCkgewogICAgICAgICAgICAgICAgLy8gQ2FsbCB0aGUgb25Ecm9wIG1ldGhvZCBpZiB0aGVyZSBpcyBvbmUKICAgICAgICAgICAgICAgIGNvbmZpZy5vbkRyb3AoalF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZSwgZHJvcHBlZFJvdyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZSA9IG51bGw7IC8vIGxldCBnbyBvZiB0aGUgdGFibGUgdG9vCiAgICAgICAgfQogICAgfSwKCiAgICBzZXJpYWxpemU6IGZ1bmN0aW9uKCkgewogICAgICAgIGlmIChqUXVlcnkudGFibGVEbkQuY3VycmVudFRhYmxlKSB7CiAgICAgICAgICAgIHJldHVybiBqUXVlcnkudGFibGVEbkQuc2VyaWFsaXplVGFibGUoalF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICJFcnJvcjogTm8gVGFibGUgaWQgc2V0LCB5b3UgbmVlZCB0byBzZXQgYW4gaWQgb24geW91ciB0YWJsZSBhbmQgZXZlcnkgcm93IjsKICAgICAgICB9CiAgICB9LAoKCXNlcmlhbGl6ZVRhYmxlOiBmdW5jdGlvbih0YWJsZSkgewogICAgICAgIHZhciByZXN1bHQgPSAiIjsKICAgICAgICB2YXIgdGFibGVJZCA9IHRhYmxlLmlkOwogICAgICAgIHZhciByb3dzID0gdGFibGUucm93czsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8cm93cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDApIHJlc3VsdCArPSAiJiI7CiAgICAgICAgICAgIHZhciByb3dJZCA9IHJvd3NbaV0uaWQ7CiAgICAgICAgICAgIGlmIChyb3dJZCAmJiByb3dJZCAmJiB0YWJsZS50YWJsZURuRENvbmZpZyAmJiB0YWJsZS50YWJsZURuRENvbmZpZy5zZXJpYWxpemVSZWdleHApIHsKICAgICAgICAgICAgICAgIHJvd0lkID0gcm93SWQubWF0Y2godGFibGUudGFibGVEbkRDb25maWcuc2VyaWFsaXplUmVnZXhwKVswXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmVzdWx0ICs9IHRhYmxlSWQgKyAnW109JyArIHJvd0lkOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzdWx0OwoJfSwKCglzZXJpYWxpemVUYWJsZXM6IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciByZXN1bHQgPSAiIjsKICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CgkJCS8vIHRoaXMgaXMgbm93IGJvdW5kIHRvIGVhY2ggbWF0Y2hpbmcgdGFibGUKCQkJcmVzdWx0ICs9IGpRdWVyeS50YWJsZURuRC5zZXJpYWxpemVUYWJsZSh0aGlzKTsKCQl9KTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoKfQoKalF1ZXJ5LmZuLmV4dGVuZCgKCXsKCQl0YWJsZURuRCA6IGpRdWVyeS50YWJsZURuRC5idWlsZCwKCQl0YWJsZURuRFVwZGF0ZSA6IGpRdWVyeS50YWJsZURuRC51cGRhdGVUYWJsZXMsCgkJdGFibGVEbkRTZXJpYWxpemU6IGpRdWVyeS50YWJsZURuRC5zZXJpYWxpemVUYWJsZXMKCX0KKTs=]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ01vZHVsZSBHZW5lcmF0b3InOw0KJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTW9kdWxlIEdlbmVyYXRvciB3YXMgc3VjY2Vzc2Z1bCBpbnN0YWxsZWQnOw0KJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdNb2R1bGUgR2VuZXJhdG9yIHdhcyBzdWNjZXNzZnVsIHVuaW5zdGFsbGVkJzsNCiRsYW5nWydyZWFsbHlfdW5pbnN0YWxsJ10gPSAnUmVhbGx5PyBBcmUgeW91IHN1cmUNCnlvdSB3YW50IHRvIHVuc2luc3RhbGwgdGhpcyBmaW5lIG1vZHVsZT8nOw0KJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxlIFVuaW5zdGFsbGVkLic7DQokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHZlcnNpb24gJXMgaW5zdGFsbGVkLic7DQokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bGUgdXBncmFkZWQgdG8gdmVyc2lvbiAlcy4nOw0KJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnVGhpcyBtb2R1bGUgYWRkIG11bHRpbGFuZ3VhZ2Ugc29sdXRpb25zIHRvIHlvdSBDTVMgTWFkZSBTaW1wbGUnOw0KJGxhbmdbJ2luZm9fc3VjY2VzcyddID0gJ1N1Y2Nlcyc7DQokbGFuZ1snaW5mb19lcnJvciddID0gJ0Vycm9yJzsNCiRsYW5nWydvcHRpb25zdXBkYXRlZCddID0gJ09wdGlvbnMgdXBkYXRlZCc7DQokbGFuZ1snbW9kdWxlX21pc3NpbmcnXSA9ICdQbGVhc2UsIGluc3RhbCBtb2R1bGUgJXMnOw0KJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdBcmUgeW91IHN1cmU/JzsNCiRsYW5nWydtb2R1bGVfZGlyX3Blcm1pc3Npb24nXSA9ICdNb2R1bGUgZGlyZWNvdHJ5IG5lZWQgd3JpdGVhYmxlIHBlcm1pc3Npb24uIFBsZWFzZSBjaGFuZ2UgcGVybWlzc2lvbiBmb3IgbW9kdWxlIGRpcmVjdG9yeS4nOw0KDQokbGFuZ1snZGV0YWlsX3BhZ2UnXSA9ICdEZXRhaWwgUGFnZSc7DQokbGFuZ1snZGV0YWlsX3RlbXBsYXRlJ10gPSAnRGV0YWlsIFRlbXBsYXRlJzsNCiRsYW5nWyd3YXJuaW5nX3ByZXZpZXcnXSA9ICdXYXJuaW5nOiBUaGlzIHByZXZpZXcgcGFuZWwgYmVoYXZlcyBtdWNoIGxpa2UgYSBicm93c2VyIHdpbmRvdyBhbGxvd2luZyB5b3UgdG8gbmF2aWdhdGUgYXdheSBmcm9tIHRoZSBpbml0aWFsbHkgcHJldmlld2VkIHBhZ2UuIEhvd2V2ZXIsIGlmIHlvdSBkbyB0aGF0LCB5b3UgbWF5IGV4cGVyaWVuY2UgdW5leHBlY3RlZCBiZWhhdmlvdXIuICBOYXZpZ2F0aW5nIGF3YXkgZnJvbSB0aGUgaW5pdGlhbCBwYWdlIGFuZCByZXR1cm5pbmcgd2lsbCBub3QgZ2l2ZSB0aGUgZXhwZWN0ZWQgcmVzdWx0cy48YnIvPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVGhlIHByZXZpZXcgZG9lcyBub3QgdXBsb2FkIGZpbGVzIHlvdSBtYXkgaGF2ZSBzZWxlY3RlZCBmb3IgdXBsb2FkLic7DQokbGFuZ1snYXJ0aWNsZSddID0gJ0FydGljbGUnOw0KJGxhbmdbJ3ByZXZpZXcnXSA9ICdQcmV2aWV3JzsNCiRsYW5nWydpbmZvX2RldGFpbF9yZXR1cm5pZCddID0gJ1RoaXMgcHJlZmVyZW5jZSBpcyB1c2VkIHRvIGRldGVybWluZSBhIHBhZ2UgKGFuZCB0aGVyZWZvcmUgYSB0ZW1wbGF0ZSkgdG8gdXNlIHRvIHZpZXcgZGV0YWlsIHBhZ2VzLiAgSW5kaXZpZHVhbGl6ZWQgTmV3cyBEZXRhaWwgVVJMUyB3aWxsIG5vdCB3b3JrIGlmIHRoaXMgcGFyYW1ldGVyIGlzIG5vdCBzZXQgdG8gYSB2YWxpZCBwYWdlLiAgQWRkaXRpb25hbGx5LCBpZiB0aGlzIHByZWZlcmVuY2UgaXMgc2V0LCBhbmQgbm8gZGV0YWlscGFnZSBwYXJhbWV0ZXIgaXMgcHJvdmlkZWQgb24gdGhlIG5ld3MgdGFnLCB0aGVuIHRoaXMgdmFsdWUgd2lsbCBiZSB1c2VkIGZvciBkZXRhaWwgbGlua3MnOw0KJGxhbmdbJ3RpdGxlX2RldGFpbF9yZXR1cm5pZCddID0gJ0RlZmF1bHQgcGFnZSB0byB1c2UgZm9yIGRldGFpbCB2aWV3cyc7DQoNCiRsYW5nWydnZW5lcmF0b3InXSA9ICdHZW5lcmF0b3InOw0KJGxhbmdbJ3JlZ2VuZXJhdGUnXSA9ICdSZS1nZW5lcmF0ZSc7DQokbGFuZ1snbmFtZSddID0gJ05hbWUnOw0KJGxhbmdbJ2F0dGFjaCddID0gJ0F0dGFjaCc7DQokbGFuZ1snZXJyb3InXSA9ICdFcnJvciEnOw0KJGxhbmdbJ2NyZWF0ZWRhdGUnXSA9ICdDcmVhdGUgZGF0ZSc7DQokbGFuZ1snbW9kaWZpZWRkYXRlJ10gPSAnTW9kaWZpZWQgZGF0ZSc7DQokbGFuZFsnYWRtaW5fdGl0bGUnXSA9ICdBZG1pbiBQYW5lbCc7DQokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJyc7DQokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNjZXNzIERlbmllZC4gUGxlYXNlIGNoZWNrIHlvdXIgcGVybWlzc2lvbnMuJzsNCiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1Bvc3QgSW5zdGFsbCBNZXNzYWdlLCAoZS5nLiwgQmUgc3VyZSB0byBzZXQgIm1hbmFnZSBtbGVfY21zIiBwZXJtaXNzaW9ucyB0byB1c2UgdGhpcyBtb2R1bGUhKSc7DQokbGFuZ1snZXJyb3JfcmVuYW1lX2RpciddID0gJ1JlbmFtZSBkaXIgd2l0aG91dCBzdWNjZXNzIChwZXJtaXNzaW9uPyknOw0KJGxhbmdbJ2Vycm9yX3JlcGxhY2VfZmlsZXMnXSA9ICdNb2R1bGUgY2Fubm90IGJ5IGVkaXRlZC4gUGxlYXNlIGVkaXQgaXQgbWFudWFsbHkuJzsNCiRsYW5nWydlcnJvcl9tb2R1bGVfZXhpc3RzJ10gPSAnVGhpcyBtb2R1bGUgZXhpc3RzLiBEZWxldGUgZGlyIG9yIHJlLWdlbmVyYXRlLic7DQokbGFuZ1snZXJyb3JfdW5paW5zdGFsX21vZHVsZSddID0gJ1RoaXMgbW9kdWxlIGV4aXN0cy4gVW5paW5zdGFsIGl0Lic7DQoNCi8vIHRhYnMNCiRsYW5nWydpdGVtJ10gPSAnSXRlbSc7DQokbGFuZ1snaXRlbXMnXSA9ICdJdGVtcyc7DQokbGFuZ1snZmllbGRkZWYnXSA9ICdGaWVsZCBEZWZpbml0aW9uJzsNCiRsYW5nWydmaWVsZGRlZnMnXSA9ICdGaWVsZCBEZWZpbml0aW9ucyc7DQokbGFuZ1sndGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSc7DQokbGFuZ1sndGVtcGxhdGVzJ10gPSAnVGVtcGxhdGVzJzsNCiRsYW5nWydjYXRlZ29yeSddID0gJ0NhdGVnb3J5JzsNCiRsYW5nWydjYXRlZ29yaWVzJ10gPSAnQ2F0ZWdvcmllcyc7DQokbGFuZ1snb3B0aW9uJ10gPSAnT3B0aW9uJzsNCiRsYW5nWydvcHRpb25zJ10gPSAnT3B0aW9ucyc7DQokbGFuZ1snc3VibWl0J10gPSAnU3VibWl0JzsNCiRsYW5nWydwcmV2cGFnZSddID0gJyZsdDsnOw0KDQovLyBpdGVtcw0KJGxhbmdbJ2l0ZW1fdGl0bGUnXSA9ICdUaXRsZSc7DQokbGFuZ1sncHJvbXB0X2l0ZW1fdGl0bGUnXSA9ICdJdGVtIHRpdGxlJzsNCiRsYW5nWydhbGlhcyddID0gJ0FsaWFzJzsNCiRsYW5nWyd1cmwnXSA9ICdVcmwnOw0KJGxhbmdbJ2FjdGl2ZSddID0gJ0FjdGl2ZSc7DQokbGFuZ1snaXRlbV90aXRsZV9lbXB0eSddID0gJ0l0ZW0gdGl0bGUgaXMgZW1wdHknOw0KJGxhbmdbJ3JlcXVpcmVkX2ZpZWxkX2VtcHR5J10gPSAnUmVxdWlyZWQgZmllbGQgaXMgZW1wdHknOw0KJGxhbmdbJ3Rvb19sb25nJ10gPSAnRmllbGQgdmFsdWUgZXhjZWVkcyBtYXggbGVuZ3RoJzsNCiRsYW5nWydhcHByb3ZlJ10gPSAnU2V0IFN0YXR1cyB0byBcJ0FjdGl2ZVwnJzsNCiRsYW5nWydyZXZlcnQnXSA9ICdTZXQgU3RhdHVzIHRvIFwnSW5hY3RpdmVcJyc7DQokbGFuZ1snbGFzdHBhZ2UnXSA9ICcmZ3Q7Jmd0Oyc7DQokbGFuZ1snbGFzdF9tb2RpZmllZCddID0gJ0xhc3QgTW9kaWZpZWQnOw0KJGxhbmdbJ3BhZ2UnXSA9ICdQYWdlJzsNCiRsYW5nWydwYWdlX29mJ10gPSAnUGFnZSAlcyBvZiAlcyc7DQokbGFuZ1sncGFnZV9saW1pdCddID0gJ1BhZ2UgTGltaXQnOw0KJGxhbmdbJ2ZpcnN0cGFnZSddID0gJyZsdDsmbHQ7JzsNCiRsYW5nWyduZXh0cGFnZSddID0gJyZndDsnOw0KJGxhbmdbJ2lkJ10gPSAnSWQnOw0KJGxhbmdbJ3RpdGxlJ10gPSAnVGl0bGUnOw0KJGxhbmdbJ2luY2x1ZGVfY2hpbGRyZW4nXSA9ICdJbmNsdWRlIENoaWxkcmVuPyc7DQokbGFuZ1snaGllcmFyY2h5J10gID0gJ0hpZXJhcmNoeSc7DQokbGFuZ1snc29ydF9ieSddID0gJ1NvcnQgQnknOw0KJGxhbmdbJ3NvcnRfb3JkZXInXSA9ICdTb3J0IE9yZGVyJzsNCiRsYW5nWydkYXRlJ10gPSAnRGF0ZSc7DQokbGFuZ1snZGF0ZV9lbmQnXSA9ICdFbmQgZGF0ZSc7DQokbGFuZ1snZmlsdGVycyddID0gJ0ZpbHRlcnMnOw0KJGxhbmdbJ2FzY2VuZGluZyddID0gJ0FzY2VuZGluZyc7DQokbGFuZ1snZGVzY2VuZGluZyddID0gJ0Rlc2NlbmRpbmcnOw0KJGxhbmdbJ2FsbGNhdGVnb3JpZXMnXSA9ICdBbGwgY2F0ZWdvcmllcyc7DQokbGFuZ1snZnJvbSddID0gJ0Zyb20nOw0KJGxhbmdbJ3RvJ10gPSAnVG8nOw0KJGxhbmdbJ3Bvc2l0aW9uJ10gPSAnUG9zaXRpb24nOw0KJGxhbmdbJ2NyZWF0ZWRkYXRlJ10gPSAnQ3JlYXRlZCBkYXRlJzsNCiRsYW5nWydtb2RpZmllZGRhdGUnXSA9ICdNb2RpZmllZCBkYXRlJzsNCiRsYW5nWydzYXZlX29yZGVyJ10gPSAnU2F2ZSBvcmRlcic7DQoNCi8vIGZpZWxkIGRlZmluaXRpb25zDQokbGFuZ1snZWRpdGZpZWxkZGVmJ10gPSAnRWRpdCBGaWVsZCBEZWZpbml0aW9uJzsNCiRsYW5nWydhZGRmaWVsZGRlZiddID0gJ0FkZCBGaWVsZCBEZWZpbml0aW9uJzsNCiRsYW5nWydmaWVsZGRlZl9uYW1lJ10gPSAnTmFtZSc7DQokbGFuZ1snZmllbGRkZWZfaGVscCddID0gJ0hlbHBmdWwgdGlwJzsNCiRsYW5nWydmaWVsZGRlZl90eXBlJ10gPSAnVHlwZSc7DQokbGFuZ1snZmllbGRkZWZfbWF4X2xlbmd0aCddID0gJ01heGltdW0gbGVuZ3RoJzsNCiRsYW5nWydmaWVsZGRlZl9yZXF1aXJlZCddID0gJ1JlcXVpcmVkJzsNCiRsYW5nWydmaWVsZGRlZl9mcm9udGVuZCddID0gJ0Zyb250IEVuZCc7DQokbGFuZ1snZmllbGRkZWZfZWRpdHZpZXcnXSA9ICdWaWV3IG9ubHkgaW4gZWRpdCc7DQokbGFuZ1snZmllbGRkZWZfZmlsdGVyX2Zyb250ZW5kJ10gPSAnQWRkIHRvIGZpbHRlciBpbiBmcm9udGVuZCc7DQokbGFuZ1snZmllbGRkZWZfZmlsdGVyX2FkbWluJ10gPSAnQWRkIHRvIGZpbHRlciBpbiBhZG1pbic7DQokbGFuZ1snZmllbGRkZWZfc2VhcmNoYWJsZSddID0gJ1NlYXJjaGFibGUnOw0KJGxhbmdbJ2V4dHJhJ10gPSAnRXh0cmEnOw0KJGxhbmdbJ3NlY3Rpb24nXSA9ICdTZWN0aW9uJzsNCiRsYW5nWyd0ZXh0Ym94J10gPSAnVGV4dCBJbnB1dCc7DQokbGFuZ1snY2hlY2tib3gnXSA9ICdDaGVja2JveCc7DQokbGFuZ1sndGV4dGFyZWEnXSA9ICdUZXh0IEFyZWEnOw0KJGxhbmdbJ3NlbGVjdF9kYXRlJ10gPSAnU2VsZWN0IERhdGUnOw0KJGxhbmdbJ3VwbG9hZF9maWxlJ10gPSAnVXBsb2FkIEZpbGUnOw0KJGxhbmdbJ2Ryb3Bkb3duJ10gPSAnRHJvcGRvd24nOw0KJGxhbmdbJ21vZHVsZSddID0gJ01vZHVsZSc7DQokbGFuZ1snc2VsZWN0X2RlZmF1bHQnXSA9ICctLSBTZWxlY3QgLS0nOw0KJGxhbmdbJ3NlbGVjdF9maWxlJ10gPSAnU2VsZWN0IEZpbGUnOw0KJGxhbmdbJ2NvbG9yX3BpY2tlciddID0gJ0NvbG9yIHBpY2tlcic7DQokbGFuZ1snbW9kdWxlX2xpbmsnXSA9ICdMaW5rIHRvIG1vZHVsZSc7DQokbGFuZ1snZmllbGRkZWZfbmFtZV9lbXB0eSddID0gJ0ZpZWxkIGRlZmluaXRpb24gbmFtZSBpcyBlbXB0eSc7DQokbGFuZ1snZmllbGRkZWZfbmFtZV9leGlzdHMnXSA9ICdGaWVsZCBkZWZpbml0aW9uIG5hbWUgYWxyZWFkeSBleGlzdHMnOw0KJGxhbmdbJ2ludmFsaWQnXSA9ICdGaWVsZCB2YWx1ZSBpcyBpbnZhbGlkJzsNCg0KDQovLyBmaWVsZCBkZWZpbml0aW9ucw0KJGxhbmdbJ2VkaXRmaWVsZGRlZiddID0gJ0VkaXQgRmllbGQgRGVmaW5pdGlvbic7DQokbGFuZ1snYWRkZmllbGRkZWYnXSA9ICdBZGQgRmllbGQgRGVmaW5pdGlvbic7DQokbGFuZ1snZmllbGRkZWZfbmFtZSddID0gJ05hbWUnOw0KJGxhbmdbJ2ZpZWxkZGVmX2hlbHAnXSA9ICdIZWxwZnVsIHRpcCc7DQokbGFuZ1snZmllbGRkZWZfdHlwZSddID0gJ1R5cGUnOw0KJGxhbmdbJ2ZpZWxkZGVmX21heF9sZW5ndGgnXSA9ICdNYXhpbXVtIGxlbmd0aCc7DQokbGFuZ1snZmllbGRkZWZfcmVxdWlyZWQnXSA9ICdSZXF1aXJlZCc7DQokbGFuZ1snZmllbGRkZWZfZnJvbnRlbmQnXSA9ICdGcm9udCBFbmQnOw0KJGxhbmdbJ2ZpZWxkZGVmX2VkaXR2aWV3J10gPSAnVmlldyBvbmx5IGluIGVkaXQnOw0KJGxhbmdbJ2ZpZWxkZGVmX2ZpbHRlcl9mcm9udGVuZCddID0gJ0FkZCB0byBmaWx0ZXIgaW4gZnJvbnRlbmQnOw0KJGxhbmdbJ2ZpZWxkZGVmX2ZpbHRlcl9hZG1pbiddID0gJ0FkZCB0byBmaWx0ZXIgaW4gYWRtaW4gYXJlYSc7DQokbGFuZ1snZmllbGRkZWZfc2VhcmNoYWJsZSddID0gJ1NlYXJjaGFibGUnOw0KJGxhbmdbJ2V4dHJhJ10gPSAnRXh0cmEnOw0KJGxhbmdbJ3RleHRib3gnXSA9ICdUZXh0IElucHV0JzsNCiRsYW5nWydjaGVja2JveCddID0gJ0NoZWNrYm94JzsNCiRsYW5nWyd0ZXh0YXJlYSddID0gJ1RleHQgQXJlYSc7DQokbGFuZ1snc2VsZWN0X2RhdGUnXSA9ICdTZWxlY3QgRGF0ZSc7DQokbGFuZ1sndXBsb2FkX2ZpbGUnXSA9ICdVcGxvYWQgRmlsZSc7DQokbGFuZ1snZHJvcGRvd24nXSA9ICdEcm9wZG93bic7DQokbGFuZ1snZHJvcGRvd25mcm9tbW9kdWxlJ10gPSAnRHJvcGRvd24gZnJvbSBtb2R1bGUnOw0KJGxhbmdbJ3N0YXRpYyddID0gJ1N0YXRpYyc7DQokbGFuZ1snbW9kdWxlJ10gPSAnTW9kdWxlJzsNCiRsYW5nWydzZWxlY3RfZGVmYXVsdCddID0gJy0tIFNlbGVjdCAtLSc7DQokbGFuZ1snc2VsZWN0X2ZpbGUnXSA9ICdTZWxlY3QgRmlsZSc7DQokbGFuZ1snZmllbGRkZWZfbmFtZV9lbXB0eSddID0gJ0ZpZWxkIGRlZmluaXRpb24gbmFtZSBpcyBlbXB0eSc7DQokbGFuZ1snZmllbGRkZWZfbmFtZV9leGlzdHMnXSA9ICdGaWVsZCBkZWZpbml0aW9uIG5hbWUgYWxyZWFkeSBleGlzdHMnOw0KJGxhbmdbJ2ludmFsaWQnXSA9ICdGaWVsZCB2YWx1ZSBpcyBpbnZhbGlkJzsNCg0KLy8gZmlsZSBoYW5kbGluZw0KJGxhbmdbJ2Vycm9yX3VwbG9hZCddID0gJ1Byb2JsZW0gb2NjdXJyZWQgdXBsb2FkaW5nIGEgZmlsZSc7DQokbGFuZ1snZXJyb3JfbWtkaXInXSA9ICdDb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeTogJXMnOw0KJGxhbmdbJ2Vycm9yX2ZpbGVzaXplJ10gPSAnQW4gdXBsb2FkZWQgZmlsZSBleGNlZWRlZCB0aGUgbWF4aW11bSBhbGxvd2VkIHNpemUnOw0KJGxhbmdbJ2Vycm9yX2ludmFsaWRmaWxldHlwZSddID0gJ0Nhbm5vdCB1cGxvYWQgdGhpcyB0eXBlIG9mIGZpbGUnOw0KJGxhbmdbJ2Vycm9yX21vdmVmaWxlJ10gPSAnQ291bGQgbm90IGNyZWF0ZSBmaWxlOiAlcyc7DQokbGFuZ1snaW52YWxpZHVybCddID0gJ1VybCBpcyBpbnZhbGlkLic7DQoNCi8vIGNhdGVnb3J5DQokbGFuZ1snbm9uZSddID0gJ05vbmUnOw0KJGxhbmdbJ25hbWUnXSA9ICdOYW1lJzsNCiRsYW5nWydlZGl0X2NhdGVnb3J5J10gPSAnRWRpdCBDYXRlZ29yeSc7DQokbGFuZ1snYWRkY2F0ZWdvcnknXSA9ICdBZGQgQ2F0ZWdvcnknOw0KJGxhbmdbJ2NhdGVnb3J5X25hbWUnXSA9ICdDYXRlZ29yeSBuYW1lJzsNCiRsYW5nWydjYXRlZ29yeV9uYW1lX2VtcHR5J10gPSAnQ2F0ZWdvcnkgbmFtZSBpcyBlbXB0eSc7DQokbGFuZ1snY2F0ZWdvcnl1cGRhdGVkJ10gPSAnQ2F0ZWdvcnkgdXBkYXRlZC4nOw0KJGxhbmdbJ2NhdGVnb3J5YWRkZWQnXSA9ICdDYXRlZ29yeSBhZGRlZC4nOw0KDQovLyB0ZW1wbGF0ZXMNCiRsYW5nWydjYXRlZ29yeV90ZW1wbGF0ZSddID0gJ0NhdGVnb3J5IFRlbXBsYXRlcyc7DQokbGFuZ1snc3VtbWFyeV90ZW1wbGF0ZSddID0gJ1N1bW1hcnkgVGVtcGxhdGVzJzsNCiRsYW5nWydkZXRhaWxfdGVtcGxhdGUnXSA9ICdEZXRhaWwgVGVtcGxhdGVzJzsNCiRsYW5nWydmaWx0ZXJfdGVtcGxhdGUnXSA9ICdGaWx0ZXIgVGVtcGxhdGVzJzsNCiRsYW5nWydkZWZhdWx0X3RlbXBsYXRlcyddID0gJ0RlZmF1bHQgVGVtcGxhdGVzJzsNCiRsYW5nWydlZGl0dGVtcGxhdGUnXSA9ICdFZGl0IFRlbXBsYXRlJzsNCiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0FkZCAlcyBUZW1wbGF0ZSc7DQokbGFuZ1sndGVtcGxhdGVfbmFtZSddID0gJ1RlbXBsYXRlIG5hbWUnOw0KJGxhbmdbJ3RlbXBsYXRlX25hbWVfZW1wdHknXSA9ICdUZW1wbGF0ZSBuYW1lIGlzIGVtcHR5JzsNCg0KLy8gZ2xvYmFsDQokbGFuZ1snZ2xvYmFsJ10gPSAnR2xvYmFsJzsNCiRsYW5nWydjaGFuZ2Vzc2F2ZWQnXSA9ICdZb3VyIGNoYW5nZXMgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBzYXZlZCc7DQokbGFuZ1snYmFjayddID0gJ0JhY2snOw0KJGxhbmdbJ3VwJ10gPSAnVXAnOw0KJGxhbmdbJ2Rvd24nXSA9ICdEb3duJzsNCiRsYW5nWydlZGl0J10gPSAnRWRpdCc7DQokbGFuZ1snZGVsZXRlJ10gPSAnRGVsZXRlJzsNCiRsYW5nWydub3N1Y2hpZCddID0gJ05vIHN1Y2ggSUQnOw0KJGxhbmdbJ2RlbGV0ZWQnXSA9ICdUaGUgZW50cnkgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQnOw0KJGxhbmdbJ2FkZCddID0gJ0FkZCc7DQokbGFuZ1snYWxpYXMnXSA9ICdBbGlhcyc7DQokbGFuZ1snYWxpYXNfaW52YWxpZCddID0gJ0FsaWFzIGlzIGludmFsaWQuIEl0IG11c3QgYmUgYSB2YWxpZCBQSFAgdmFyaWFibGUgbmFtZSc7DQokbGFuZ1snZW1wdHlfcGFyYW0nXSA9ICdUaGUgcGFyYW1ldGVyIHdhcyBlbXB0eS4gVHJ5IGFnYWluLic7DQokbGFuZ1snb3BlcmF0aW9uX2NhbmNlbGxlZCddID0gJ09wZXJhdGlvbiBDYW5jZWxsZWQnOw0KJGxhbmdbJ29wZXJhdGlvbl9jb21wbGV0ZSddID0gJ09wZXJhdGlvbiBDb21wbGV0ZSc7DQoNCiMjIGdlbmVyYXRvcg0KJGxhbmdbJ3RleHRib3gnXSA9ICdUZXh0IElucHV0JzsNCiRsYW5nWydjaGVja2JveCddID0gJ0NoZWNrYm94JzsNCiRsYW5nWyd0ZXh0YXJlYSddID0gJ1RleHQgQXJlYSc7DQokbGFuZ1snc2VsZWN0X2RhdGUnXSA9ICdTZWxlY3QgRGF0ZSc7DQokbGFuZ1sndXBsb2FkX2ZpbGUnXSA9ICdVcGxvYWQgRmlsZSc7DQokbGFuZ1snZHJvcGRvd24nXSA9ICdEcm9wZG93bic7DQokbGFuZ1snbW9kdWxlJ10gPSAnTW9kdWxlJzsNCiRsYW5nWydzZWxlY3RfZGVmYXVsdCddID0gJy0tIFNlbGVjdCAtLSc7DQokbGFuZ1snc2VsZWN0X2ZpbGUnXSA9ICdTZWxlY3QgRmlsZSc7DQoNCiNpdGVtcw0KJGxhbmdbJ2l0ZW1fdGl0bGUnXSA9ICdUaXRsZSc7DQokbGFuZ1sncHJvbXB0X2l0ZW1fdGl0bGUnXSA9ICdJdGVtIHRpdGxlJzsNCiRsYW5nWydhbGlhcyddID0gJ0FsaWFzJzsNCiRsYW5nWyd1cmwnXSA9ICdVcmwnOw0KJGxhbmdbJ2FjdGl2ZSddID0gJ0FjdGl2ZSc7DQokbGFuZ1snaXRlbV90aXRsZV9lbXB0eSddID0gJ0l0ZW0gdGl0bGUgaXMgZW1wdHknOw0KJGxhbmdbJ3JlcXVpcmVkX2ZpZWxkX2VtcHR5J10gPSAnUmVxdWlyZWQgZmllbGQgaXMgZW1wdHknOw0KJGxhbmdbJ3Rvb19sb25nJ10gPSAnRmllbGQgdmFsdWUgZXhjZWVkcyBtYXggbGVuZ3RoJzsNCiRsYW5nWydhcHByb3ZlJ10gPSAnU2V0IFN0YXR1cyB0byBcJ0FjdGl2ZVwnJzsNCiRsYW5nWydyZXZlcnQnXSA9ICdTZXQgU3RhdHVzIHRvIFwnSW5hY3RpdmVcJyc7DQokbGFuZ1snbGFzdHBhZ2UnXSA9ICcmZ3Q7Jmd0Oyc7DQokbGFuZ1snbGFzdF9tb2RpZmllZCddID0gJ0xhc3QgTW9kaWZpZWQnOw0KJGxhbmdbJ3BhZ2UnXSA9ICdQYWdlJzsNCiRsYW5nWydwYWdlX29mJ10gPSAnUGFnZSAlcyBvZiAlcyc7DQokbGFuZ1sncGFnZV9saW1pdCddID0gJ1BhZ2UgTGltaXQnOw0KJGxhbmdbJ2ZpcnN0cGFnZSddID0gJyZsdDsmbHQ7JzsNCiRsYW5nWyduZXh0cGFnZSddID0gJyZndDsnOw0KJGxhbmdbJ29mJ10gPSAnb2YnOw0KJGxhbmdbJ2lkJ10gPSAnSWQnOw0KJGxhbmdbJ3RpdGxlJ10gPSAnVGl0bGUnOw0KJGxhbmdbJ2luY2x1ZGVfY2hpbGRyZW4nXSA9ICdJbmNsdWRlIENoaWxkcmVuPyc7DQokbGFuZ1snaGllcmFyY2h5J10gID0gJ0hpZXJhcmNoeSc7DQokbGFuZ1snZGF0ZSddID0gJ0RhdGUnOw0KJGxhbmdbJ2ZpbHRlcnMnXSA9ICdGaWx0ZXJzJzsNCiRsYW5nWydhc2NlbmRpbmcnXSA9ICdBc2NlbmRpbmcnOw0KJGxhbmdbJ2Rlc2NlbmRpbmcnXSA9ICdEZXNjZW5kaW5nJzsNCiRsYW5nWydhbGxjYXRlZ29yaWVzJ10gPSAnQWxsIGNhdGVnb3JpZXMnOw0KJGxhbmdbJ2Zyb20nXSA9ICdGcm9tJzsNCiRsYW5nWydzZWxlY3RfYWxsJ10gPSAnU2VsZWN0IEFsbCc7DQokbGFuZ1snc2VsZWN0X29uZSddID0gJ1NlbGVjdCBPbmUnOw0KJGxhbmdbJ3NldGRyYWZ0J10gPSAnU2V0IEFzIEluYWN0aXZlJzsNCiRsYW5nWydzZXRwdWJsaXNoZWQnXSA9ICdTZXQgQXMgQWN0aXZlJzsNCiRsYW5nWyd3aXRoX3NlbGVjdGVkJ10gPSAnV2l0aCBTZWxlY3RlZCc7DQokbGFuZ1snZ28nXSA9ICdHbyc7DQokbGFuZ1snbm90aGluZ19zZWxlY3RkJ10gPSAnTm90aGluZyBzZWxlY3RlZCc7DQoNCg0KI29wdGlvbnMNCiRsYW5nWydpbWFnZXNfc2l6ZV9hZG1pbiddID0gJ0ltYWdlIHNpemUnOw0KJGxhbmdbJ2ltYWdlX3NpemVfYWRtaW5faW5mbyddID0gJ0V4YW1wbGVzOiAyMDB4IC0gd2lkdGgsIHgyMDAgLSBoZWlnaHQsIDIwMHgyMDAgLSB3aWR0aC9oZWlnaHQnOw0KJGxhbmdbJ2FkbWluX2FyZWEnXSA9ICdBZG1pbiBhcmVhJzsNCiRsYW5nWydmaWx0ZXInXSA9ICdGaWx0ZXInOw0KJGxhbmdbJ21vZGUnXSA9ICdNb2RlJzsNCiRsYW5nWydzaW1wbGUnXSA9ICdTaW1wbGUnOw0KJGxhbmdbJ2FkdmFuY2VkJ10gPSAnQWR2YW5jZWQnOw0KJGxhbmdbJ3Byb21wdF9mcmllbmRseW5hbWUnXSA9ICdNb2R1bGUgZnJpZW5kbHkgbmFtZSc7DQokbGFuZ1sncHJvbXB0X2l0ZW1fc2luZ3VsYXInXSA9ICdJdGVtIHNpbmd1bGFyJzsNCiRsYW5nWydwcm9tcHRfaXRlbV9wbHVyYWwnXSA9ICdJdGVtIHBsdXJhbCc7DQokbGFuZ1sncHJvbXB0X3VybF9wcmVmaXgnXSA9ICdVUkwgUHJlZml4JzsNCiRsYW5nWydwcm9tcHRfZGVmYXVsdF9hY3Rpb25fcGFyYW1zJ10gPSAnRGVmYXVsdCBwYXJhbXMgZm9yIGRlZmF1bHQgYWN0aW9uJzsNCiRsYW5nWydwcm9tcHRfZGV0YWlsX2FjdGlvbl9wYXJhbXMnXSA9ICdEZWZhdWx0IHBhcmFtcyBmb3IgZGV0YWlsIGFjdGlvbic7DQokbGFuZ1sncHJvbXB0X3RpdGxlX3BhcmFtX2Zvcl9jYWNoZSddID0gJ1RpdGxlIHBhcmFtIGZvciBjYWNoZSByZXN1bHRzJzsNCiRsYW5nWydwcm9tcHRfZGlzcGxheV9pbmxpbmUnXSA9ICdEaXNwbGF5IGRldGFpbHMgaW5saW5lJzsNCiRsYW5nWydwcm9tcHRfbGF6eWxvYWRpbmcnXSA9ICdMYXp5IGxvYWRpbmcgKElmIHdlIGRvblwndCBuZWVkIHVzZSBtb2R1bGUgd2l0aCBkZXRhaWwgbGluayBvbiBmcm9udGVuZC4pJzsNCiRsYW5nWydwcm9tcHRfaGFzX2FkbWluJ10gPSAnSGFzIGFkbWluPyc7DQokbGFuZ1sncHJldmlld19hZG1pbiddID0gJ1ByZXZpZXcgaW4gYWRtaW4gYXJlYT8nOw0KJGxhbmdbJ2NvcHlfYWRtaW4nXSA9ICdBbGxvdyBjb3B5IGl0ZW0/JzsNCiRsYW5nWydwcm9tcHRfdXNlcmdyb3VwX2RlcGVuZGVuY2UnXSA9ICdVc2VyIGdyb3VwIGRlcGVuZGVuY2UnOw0KJGxhbmdbJ3Byb21wdF9pdGVtX2RldGFpbF9yZXR1cm5pZCddID0gJ0RldGFpbCByZXR1cm4gSUQnOw0KJGxhbmdbJ3Byb21wdF9pdGVtX2NhdGVnb3J5X3JldHVybmlkJ10gPSAnQ2F0ZWdvcnkgcmV0dXJuIElEJzsNCiRsYW5nWydwcm9tcHRfY3VzdG9tX2ZpZWxkc19kZWZhdWx0X2FkbWluJ10gPSAnRGVmYXVsdCBjdXN0b20gZmllbGRzIGZvciBhZG1pbiBpdGVtcyc7DQokbGFuZ1sncHJvbXB0X2l0ZW1fY2F0ZWdvcnlfZWRpdCddID0gJ0VkaXQgY2F0ZWdvcnknOw0KJGxhbmdbJ3Byb21wdF9yZWN1cnNpdmUnXSA9ICdFZGl0IHJlY3Vyc2l2ZSc7DQokbGFuZ1sncHJvbXB0X2l0ZW1fZGF0ZV9lZGl0J10gPSAnRWRpdCBkYXRlJzsNCiRsYW5nWydwcm9tcHRfaXRlbV9kYXRlX2VuZF9lZGl0J10gPSAnRWRpdCBkYXRlIGVuZCc7DQokbGFuZ1sncHJvbXB0X2l0ZW1fYWxpYXNfZWRpdCddID0gJ0VkaXQgYWxpYXMnOw0KJGxhbmdbJ3Byb21wdF9pdGVtX3RpdGxlX2VkaXQnXSA9ICdFZGl0IHRpdGxlJzsNCiRsYW5nWydwcm9tcHRfaXRlbV91cmxfZWRpdCddID0gJ0VkaXQgdXJsJzsNCiRsYW5nWydwcm9tcHRfZmlsdGVyX2RhdGUnXSA9ICdGaWx0ZXIgZGF0ZSc7DQokbGFuZ1sncHJvbXB0X3N1bW1hcnlfc29ydG9yZGVyJ10gPSAnU29ydCBvcmRlcic7DQokbGFuZ1sncHJvbXB0X3N1bW1hcnlfc29ydGluZyddID0gJ1NvcnRpbmcnOw0KJGxhbmdbJ3Byb21wdF9zdW1tYXJ5X3BhZ2VsaW1pdCddID0gJ1BhZ2VsaW1pdCc7DQokbGFuZ1sncHJvbXB0X2NhdGVnb3J5X2V4dHJhX2xhYmVsJ10gPSAnQ2F0ZWdvcnkgZXh0cmEgbGFiZWwnOw0KJGxhbmdbJ3Byb21wdF9pdGVtX3RpdGxlX2VkaXQnXSA9ICdFZGl0IHRpdGxlJzsNCiRsYW5nWyd2aWV3YWJsZV9maWVsZHMnXSA9ICdWaWV3YWJsZSBmaWVsZHMnOw0KJGxhbmdbJ3ZpZXcnXSA9ICdWaWV3JzsNCiRsYW5nWydyZW9yZGVyJ10gPSAnUmVvcmRlcic7DQokbGFuZ1sndG8nXSA9ICdUbyc7DQokbGFuZ1sncG9zaXRpb24nXSA9ICdQb3NpdGlvbic7DQokbGFuZ1snY3JlYXRlZGRhdGUnXSA9ICdDcmVhdGVkIGRhdGUnOw0KJGxhbmdbJ21vZGlmaWVkZGF0ZSddID0gJ01vZGlmaWVkIGRhdGUnOw0KDQojI3NlYXJjaA0KJGxhbmdbJ3NlYXJjaCddID0gJ1NlYXJjaCc7DQokbGFuZ1sncmVpbmRleCddID0gJ1JlaW5kZXgnOw0KJGxhbmdbJ3Byb21wdF9zZWFyY2hhYmxlJ10gPSAnU2VhcmNoYWJsZSc7DQokbGFuZ1sncHJvbXB0X3NlYXJjaF9kYXRlX2VuZCddID0gJ0RhdGUgZW5kIGZvciBzZWFyY2gnOw0KDQokbGFuZ1snZXh0cmEnXSA9ICdFeHRyYSc7DQoNCiRsYW5nWydzdW5kYXknXSA9ICdTdW5kYXknOw0KJGxhbmdbJ21vbmRheSddID0gJ01vbmRheSc7DQokbGFuZ1sndHVlc2RheSddID0gJ1R1ZXNkYXknOw0KJGxhbmdbJ3dlZG5lc2RheSddID0gJ1dlZG5lc2RheSc7DQokbGFuZ1sndGh1cnNkYXknXSA9ICdUaHVyc2RheSc7DQokbGFuZ1snZnJpZGF5J10gPSAnRnJpZGF5JzsNCiRsYW5nWydzYXR1cmRheSddID0gJ1NhdHVyZGF5JzsNCg0KJGxhbmdbJ3JlY3VyX3BlcmlvZCddID0gJ1JlY3VyIHBlcmlvZCc7DQokbGFuZ1snd2Vla2RheXMnXSA9ICdXZWVrZGF5cyc7DQokbGFuZ1snbm8nXSA9ICdOb25lJzsNCiRsYW5nWydkYWlseSddID0gJ0RhaWx5JzsNCiRsYW5nWydwbHVyYWxfZGFpbHknXSA9ICdEYXlzJzsNCg0KDQovLyBnbG9iYWwNCiRsYW5nWydjaGFuZ2Vzc2F2ZWQnXSA9ICdZb3VyIGNoYW5nZXMgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBzYXZlZCc7DQokbGFuZ1snYmFjayddID0gJ0JhY2snOw0KJGxhbmdbJ3VwJ10gPSAnVXAnOw0KJGxhbmdbJ2Rvd24nXSA9ICdEb3duJzsNCiRsYW5nWydlZGl0J10gPSAnRWRpdCc7DQokbGFuZ1snZGVsZXRlJ10gPSAnRGVsZXRlJzsNCiRsYW5nWydub3N1Y2hpZCddID0gJ05vIHN1Y2ggSUQnOw0KJGxhbmdbJ2RlbGV0ZWQnXSA9ICdUaGUgZW50cnkgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQnOw0KJGxhbmdbJ2FkZCddID0gJ0FkZCc7DQokbGFuZ1snYWxpYXMnXSA9ICdBbGlhcyc7DQokbGFuZ1snYWxpYXNfaW52YWxpZCddID0gJ0FsaWFzIGlzIGludmFsaWQuIEl0IG11c3QgYmUgYSB2YWxpZCBQSFAgdmFyaWFibGUgbmFtZSc7DQoNCg0KJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4NCjxsaT5WZXJzaW9uIDEuOSBKYW51YXIsIDIwMTIgDQo8YnIgLz5hZGQgY2F0ZWdvcnkgY3VzdG9tIGZpZWxkcywgbW92ZWQgdG8gdGhlaXIgb3duIHNlY3Rpb24uDQo8YnIgLz4gdXBncmFkZSBzY3JpcHQgY29tcGF0aWJsZSB3aXRoIDEuOC4xIHZlcnNpb24NCjxiciAvPiBmaXggc29tZSBpc3N1ZXMNCjwvbGk+DQo8bGk+VmVyc2lvbiAxLjguMSBKYW51YXIsIDIwMTIgDQo8YnIgLz5hZGQgb3B0aW9uIGZvciBwcmV2aWV3IGluIGFkbWluDQo8YnIgLz5hZGQgcHJldmlldyBpY29uIGluIGFkbWluDQo8YnIgLz5hZGQgb3B0aW9uIGZvciBjb3B5IGl0ZW0NCjxiciAvPmZpeCBhdXRsb2FkIGNsYXNzIGdlbmVyYXRvcl9vcHRzIGluIGFkbWluDQo8L2xpPg0KPGxpPlZlcnNpb24gMS44IEphbnVhciwgMjAxMSAtICBpdGVtIHByZXZpZXcsIGJ1ZyBmaXhlczwvbGk+DQo8bGk+VmVyc2lvbiAxLjcgTm92ZW1iZXIsIDIwMTEgLSAgaW5pdCByZWxlYXNlPC9saT4NCjwvdWw+JzsNCg0KLy8gbW9kdWxlIGhlbHANCiRsYW5nWydoZWxwJ10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5Nb2R1bGUgZ2VuZXJhdG9yIGxldHMgeW91IGNyZWF0ZSBhIGxpc3QgdGhlIG1vZHVsZXMgYXMgTmV3cywgUHJvZHVjdHMgYXRjLiBJbmRpdmlkdWFsIG1vZHVsZXMsIHlvdSBjYW4gbGluayBiZXR3ZWVuIHRoZW0uICBZb3UgY2FuIGNyZWF0ZSBhIG1vZHVsZSBQZW9wbGUsIEdlbmRlciBhbmQgVHlwZSBvZiBlbXBsb3ltZW50IGFuZCBsaW5rIGJldHdlbiB0aGVtLjwvcD4NCjxwPkVhY2ggbW9kdWxlIGluY2x1ZGVzIHRoZSBhYmlsaXR5IHRvIGNyZWF0ZWQgY2F0ZWdvcmllcywgY3VzdG9tIGZpZWxkcyAgYW5kIGVkaXRlZCBhIG51bWJlciBvZiBzZXR0aW5ncy48L3A+DQo8cD5Zb3UgY2FuIHVzZSB0aGUgbGlzdCB0ZW1wbGF0ZXMgLCBjYXRlZ29yaWVzIHRlbXBsYXRlcyAsIGZpbHRlciB0ZW1wbGF0ZXMsIG9yIGRldGFpbCB0ZW1wbGF0ZXMgYXMgaXQgYWxyZWFkeSBrbm93biBtb2R1bGVzIGZyb20gTmV3cywgUHJvZHVjdHMgZXRjLjwvcD4nOw0KDQokbGFuZ1snZXZlbnRkZXNjLUl0ZW1BZGRlZCddID0gJ1NlbnQgd2hlbiBhbiBpdGVtIGlzIGFkZGVkLic7DQokbGFuZ1snZXZlbnRoZWxwLUl0ZW1BZGRlZCddID0gJzxwPlNlbnQgd2hlbiBhbiBpdGVtIGlzIGFkZGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cIml0ZW1faWRcIiAtIElkIG9mIHRoZSBpdGVtIGl0ZW08L2xpPg0KPGxpPlwiY2F0ZWdvcnlfaWRcIiAtIElkIG9mIHRoZSBjYXRlZ29yeSBmb3IgdGhpcyBpdGVtPC9saT4NCjxsaT5cInRpdGxlXCIgLSBUaXRsZSBvZiB0aGUgaXRlbTwvbGk+DQo8bGk+XCJhY3RpdmUiIC0gU3RhdHVzIG9mIHRoZSBpdGVtICgiMCIgb3IgIjEiKTwvbGk+DQo8bGk+XCJpdGVtX2RhdGUiIC0gRGF0ZSB0aGUgaXRlbSBzaG91bGQgc3RhcnQgYmVpbmcgZGlzcGxheWVkPC9saT4NCjxsaT5cIml0ZW1fZGF0ZV9lbmRcIiAtIERhdGUgdGhlIGl0ZW0gc2hvdWxkIHN0b3AgYmVpbmcgZGlzcGxheWVkPC9saT4NCjwvdWw+DQonOw0KJGxhbmdbJ2V2ZW50ZGVzYy1JdGVtRWRpdGVkJ10gPSAnU2VudCB3aGVuIGFuIGl0ZW0gaXMgZWRpdGVkLic7DQokbGFuZ1snZXZlbnRoZWxwLUl0ZW1FZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYW4gaXRlbSBpcyBlZGl0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwiaXRlbV9pZFwiIC0gSWQgb2YgdGhlIGl0ZW0gaXRlbTwvbGk+DQo8bGk+XCJjYXRlZ29yeV9pZFwiIC0gSWQgb2YgdGhlIGNhdGVnb3J5IGZvciB0aGlzIGl0ZW08L2xpPg0KPGxpPlwidGl0bGVcIiAtIFRpdGxlIG9mIHRoZSBpdGVtPC9saT4NCjxsaT5cImFjdGl2ZSIgLSBTdGF0dXMgb2YgdGhlIGl0ZW0gKCIwIiBvciAiMSIpPC9saT4NCjxsaT5cIml0ZW1fZGF0ZSIgLSBEYXRlIHRoZSBpdGVtIHNob3VsZCBzdGFydCBiZWluZyBkaXNwbGF5ZWQ8L2xpPg0KPGxpPlwiaXRlbV9kYXRlX2VuZFwiIC0gRGF0ZSB0aGUgaXRlbSBzaG91bGQgc3RvcCBiZWluZyBkaXNwbGF5ZWQ8L2xpPg0KPC91bD4NCic7DQokbGFuZ1snZXZlbnRkZXNjLUl0ZW1EZWxldGVkJ10gPSAnU2VudCB3aGVuIGFuIGl0ZW0gaXMgZGVsZXRlZC4nOw0KJGxhbmdbJ2V2ZW50aGVscC1JdGVtRGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhbiBpdGVtIGlzIGRlbGV0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwiaXRlbV9pZFwiIC0gSWQgb2YgdGhlIGl0ZW0gaXRlbTwvbGk+DQo8L3VsPg0KJzsNCiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlBZGRlZCddID0gJ1NlbnQgd2hlbiBhIGNhdGVnb3J5IGlzIGFkZGVkLic7DQokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYXRlZ29yeSBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCJjYXRlZ29yeV9pZFwiIC0gSWQgb2YgdGhlIGl0ZW0gY2F0ZWdvcnk8L2xpPg0KPGxpPlwibmFtZVwiIC0gTmFtZSBvZiB0aGUgaXRlbSBjYXRlZ29yeTwvbGk+DQo8L3VsPg0KJzsNCiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICdTZW50IHdoZW4gYSBjYXRlZ29yeSBpcyBlZGl0ZWQuJzsNCiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYXRlZ29yeSBpcyBlZGl0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwiY2F0ZWdvcnlfaWRcIiAtIElkIG9mIHRoZSBpdGVtIGNhdGVnb3J5PC9saT4NCjxsaT5cIm5hbWVcIiAtIE5hbWUgb2YgdGhlIGl0ZW0gY2F0ZWdvcnk8L2xpPg0KPGxpPlwib3JpZ25hbWVcIiAtIFRoZSBvcmlnaW5hbCBuYW1lIG9mIHRoZSBpdGVtIGNhdGVnb3J5PC9saT4NCjwvdWw+DQonOw0KJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeURlbGV0ZWQnXSA9ICdTZW50IHdoZW4gYSBjYXRlZ29yeSBpcyBkZWxldGVkLic7DQokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhdGVnb3J5IGlzIGRlbGV0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwiY2F0ZWdvcnlfaWRcIiAtIElkIG9mIHRoZSBkZWxldGVkIGNhdGVnb3J5IDwvbGk+DQo8bGk+XCJuYW1lXCIgLSBOYW1lIG9mIHRoZSBkZWxldGVkIGNhdGVnb3J5PC9saT4NCjwvdWw+DQonOw0KJGxhbmdbJ2V2ZW50ZGVzYy1JdGVtc1Jlb3JkZXJlZCddID0gJ1NlbnQgd2hlbiBpdGVtcyBhcmUgcmVvcmRlcmVkLic7DQokbGFuZ1snZXZlbnRoZWxwLUl0ZW1zUmVvcmRlcmVkJ10gPSAnPHA+U2VudCB3aGVuIGl0ZW1zIGlzIHJlb3JkZXJlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCJjYXRlZ29yeV9pZFwiIC0gSWQgb2YgdGhlIGRlbGV0ZWQgY2F0ZWdvcnkgPC9saT4NCjxsaT5cIm5hbWVcIiAtIE5hbWUgb2YgdGhlIGRlbGV0ZWQgY2F0ZWdvcnk8L2xpPg0KPC91bD4NCic7DQokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3JpZXNSZW9yZGVyZWQnXSA9ICdTZW50IHdoZW4gY2F0ZWdvcmllcyBhcmUgcmVvcmRlcmVkLic7DQokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3JpZXNSZW9yZGVyZWQnXSA9ICc8cD5TZW50IHdoZW4gY2F0ZWdvcmllcyBhcmUgcmVvcmRlcmVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cImNhdGVnb3J5X2lkXCIgLSBJZCBvZiB0aGUgZGVsZXRlZCBjYXRlZ29yeSA8L2xpPg0KPGxpPlwibmFtZVwiIC0gTmFtZSBvZiB0aGUgZGVsZXRlZCBjYXRlZ29yeTwvbGk+DQo8L3VsPg0KJzsNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.generator_fields.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBNb2R1bGVHZW5lcmF0b3IgZm9yIENNUyBNYWRlIFNpbXBsZSAoQGt1em1hbnkpCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovKioKICogRGVzY3JpcHRpb24gb2YgY2xhc3MKICoKICogQGF1dGhvciBAa3V6bWFueQogKi8KCmNsYXNzIGdlbmVyYXRvcl9maWVsZHMgewoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHsKICAgICAgICAKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9maWVsZHNfZm9yX2ZpbHRlcnMoJG1vZCwgJGJsb2NrdHlwZXMgPSBhcnJheSgpLCAkc2VjdGlvbiA9ICdpdGVtcycpIHsKICAgICAgICAkZmllbGRzID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZmllbGRfZGVmcygkbW9kLCBudWxsLCBudWxsLCBudWxsLCAkc2VjdGlvbik7CiAgICAgICAgJGN1c3RvbV9mbGRzID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoICgkZmllbGRzIGFzICRyb3cpIHsKICAgICAgICAgICAgaWYgKGluX2FycmF5KCRyb3dbInR5cGUiXSwgJGJsb2NrdHlwZXMpKQogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICRjdXN0b21fZmxkc1skcm93WydmaWVsZGRlZl9pZCddXSA9ICRyb3c7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkY3VzdG9tX2ZsZHM7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZmllbGRzX3ZhbHMoJG1vZCwgJGl0ZW1faWQgPSBudWxsLCAkcGFyYW1zID0gYXJyYXkoKSkgewoKICAgICAgICAvLyByZXR1cm4gZW1wdHkgYXJyYXkKICAgICAgICBpZiAoJGl0ZW1faWQgPT0gbnVsbCkKICAgICAgICAgICAgcmV0dXJuIGFycmF5KCk7CgogICAgICAgICRkYiA9IGNtc21zKCktPkdldERCKCk7CiAgICAgICAgJGZpZWxkdmFscyA9IGFycmF5KCk7CiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBXSEVSRSBpdGVtX2lkID0gPyc7CiAgICAgICAgJHJlc3VsdCA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5LCBhcnJheSgkaXRlbV9pZCkpOwogICAgICAgIGlmIChpc19hcnJheSgkcmVzdWx0KSkgewogICAgICAgICAgICBmb3JlYWNoICgkcmVzdWx0IGFzICRyb3cpIHsKICAgICAgICAgICAgICAgICRmaWVsZHZhbHNbJHJvd1snZmllbGRkZWZfaWQnXV0gPSAkcm93Wyd2YWx1ZSddOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBwcm9jY2VzIHZhbHVlcyBmcm9tIHBhcmFtcwogICAgICAgIGlmIChpc3NldCgkcGFyYW1zWydjdXN0b21maWVsZCddKSkgewogICAgICAgICAgICBmb3JlYWNoICgkcGFyYW1zWydjdXN0b21maWVsZCddIGFzICRmbGRpZCA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgICAgICRmaWVsZHZhbHNbJGZsZGlkXSA9IGlzX2FycmF5KCR2YWx1ZSkgPyBlbXB0eSgkdmFsdWUpID8gJycgOiBpbXBsb2RlKCcsJywgJHZhbHVlKSAgOiAkdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkZmllbGR2YWxzOwogICAgfQoKfQoKPz4K]]></data>
	</file>
	<file>
	  <filename>/lib/class.generator_filters.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBNb2R1bGVHZW5lcmF0b3IgZm9yIENNUyBNYWRlIFNpbXBsZSAoQGt1em1hbnkpCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovKioKICogRGVzY3JpcHRpb24gb2YgY2xhc3MKICoKICogQGF1dGhvciBAa3V6bWFueQogKi8KCmNsYXNzIGdlbmVyYXRvcl9maWx0ZXJzIHsKCiAgICBwcml2YXRlICRfdHlwZTsKICAgIHByaXZhdGUgJF9tb2Q7CiAgICBwcml2YXRlICRfaWQ7CiAgICBwcml2YXRlICRfaW5zdGFuY2UgPSBudWxsOwogICAgcHVibGljICRjdXN0b21fZmllbGRzID0gYXJyYXkoKTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGlkID0gbnVsbCwgJG1vZCwgJHR5cGUgPSAnYWRtaW4nKSB7CgogICAgICAgIGlmICgkdGhpcy0+X2luc3RhbmNlICE9IG51bGwgJiYgaXNfb2JqZWN0KCR0aGlzLT5faW5zdGFuY2UpKQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPl9pbnN0YW5jZTsKCiAgICAgICAgJHRoaXMtPl9pZCA9ICRpZDsKICAgICAgICAkdGhpcy0+X3R5cGUgPSAkdHlwZTsKICAgICAgICAkdGhpcy0+X21vZCA9ICRtb2Q7CiAgICAgICAgJHRoaXMtPl9pbnN0YW5jZSA9ICR0aGlzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBwcm9jZXNzX2N1c3RvbV9maWVsZHMoJGJsb2NrdHlwZXMgPSBhcnJheSgpLCAkY3VzdG9tX2ZsZHMgPSBhcnJheSgpKSB7CgogICAgICAgIGlmIChlbXB0eSgkY3VzdG9tX2ZsZHMpKQogICAgICAgICAgICAkY3VzdG9tX2ZsZHMgPSBnZW5lcmF0b3JfZmllbGRzOjpnZXRfZmllbGRzX2Zvcl9maWx0ZXJzKCR0aGlzLT5fbW9kLCAkYmxvY2t0eXBlcyk7CgoKICAgICAgICBmb3JlYWNoICgkY3VzdG9tX2ZsZHMgYXMgJGN1c3RvbV9mbGQgPT4gJHNldHRpbmcpIHsKICAgICAgICAgICAgLy8gZ2V0IGV4dHJhIGNvbW1hbmRzCiAgICAgICAgICAgICRpbnN0cnVjdGlvbnMgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYSgkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydleHRyYSddLCAkdGhpcy0+X21vZCk7CgogICAgICAgICAgICBzd2l0Y2ggKCRzZXR0aW5nWyd0eXBlJ10pIHsKICAgICAgICAgICAgICAgIGNhc2UgJ3RleHRib3gnOgogICAgICAgICAgICAgICAgICAgICRjdXN0b21fZmxkc1skY3VzdG9tX2ZsZF1bJ3NpemUnXSA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhX3NpemUoJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgJGN1c3RvbV9mbGRzWyRjdXN0b21fZmxkXVsnbWF4X2xlbmd0aCddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfbWF4X2xlbmd0aCgkaW5zdHJ1Y3Rpb25zKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdkcm9wZG93bic6CiAgICAgICAgICAgICAgICAgICAgJGN1c3RvbV9mbGRzWyRjdXN0b21fZmxkXVsnb3B0aW9ucyddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfb3B0aW9ucygkaW5zdHJ1Y3Rpb25zKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdkcm9wZG93bmZyb21tb2R1bGUnOgogICAgICAgICAgICAgICAgICAgICRjdXN0b21fZmxkc1skY3VzdG9tX2ZsZF1bJ29wdGlvbnMnXSA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhX21vZHVsZW9wdGlvbnMoJGluc3RydWN0aW9ucywgJG1vZCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnbW9kdWxlJzoKICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydzZWxlY3RfZGVmYXVsdCddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfc2VsZWN0ZGVmYXVsdCgkaW5zdHJ1Y3Rpb25zKTsKICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydtdWx0aXBsZSddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfbXVsdGlwbGUoJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgJGN1c3RvbV9mbGRzWyRjdXN0b21fZmxkXVsncGFyYW1zJ10gPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYV9tb2R1bGVwYXJhbXMoJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnbW9kdWxlX2xpbmsnOgogICAgICAgICAgICAgICAgICAgIC8vJGN1c3RvbV9mbGRzWyRjdXN0b21fZmxkXVsnbGluayddID0gJGluc3RydWN0aW9uc1swXTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdjb2xvcl9waWNrZXInOgogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ3BhZ2UnOgogICAgICAgICAgICAgICAgICAgICRjdXN0b21fZmxkc1skY3VzdG9tX2ZsZF1bJ29wdGlvbnMnXSA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhX3BhZ2UoJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnc3RhdGljJzoKCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnY2hlY2tib3gnOgoKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICd0ZXh0YXJlYSc6CiAgICAgICAgICAgICAgICAgICAgJGN1c3RvbV9mbGRzWyRjdXN0b21fZmxkXVsnY29scyddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfY29scygkaW5zdHJ1Y3Rpb25zKTsKICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydyb3dzJ10gPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYV9yb3dzKCRpbnN0cnVjdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICRjdXN0b21fZmxkc1skY3VzdG9tX2ZsZF1bJ21heF9sZW5ndGgnXSA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhX21heF9sZW5ndGgoJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgJGN1c3RvbV9mbGRzWyRjdXN0b21fZmxkXVsnd3lzaXd5ZyddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfd3lzaXd5ZygkaW5zdHJ1Y3Rpb25zKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdzZWxlY3RfZGF0ZSc6CiAgICAgICAgICAgICAgICAgICAgJGN1c3RvbV9mbGRzWyRjdXN0b21fZmxkXVsnc2l6ZSddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfc2l6ZSgkaW5zdHJ1Y3Rpb25zKTsKICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydtYXhfbGVuZ3RoJ10gPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYV9tYXhfbGVuZ3RoKCRpbnN0cnVjdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICRjdXN0b21fZmxkc1skY3VzdG9tX2ZsZF1bJ2RhdGVmb3JtYXQnXSA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhX2RhdGVfZm9ybWF0KCRpbnN0cnVjdGlvbnMpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ3VwbG9hZF9maWxlJzoKICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydhbGxvdyddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfYWxsb3coJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnc2VsZWN0X2ZpbGUnOgogICAgICAgICAgICAgICAgICAgICRjdXN0b21fZmxkc1skY3VzdG9tX2ZsZF1bJ2FsbG93J10gPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYV9hbGxvdygkaW5zdHJ1Y3Rpb25zKTsKICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydkaXInXSA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhX2RpcigkaW5zdHJ1Y3Rpb25zKTsKICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydleGNsdWRlX3ByZWZpeCddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfZXhjbHVkZV9wcmVmaXgoJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHRoaXMtPmN1c3RvbV9maWVsZHMgPSAkY3VzdG9tX2ZsZHM7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jdXN0b21fZmllbGRzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0ZSgkaXRlbV9pZCA9IG51bGwsICRwYXJhbXMgPSBhcnJheSgpLCAkZmllbGR2YWxzID0gYXJyYXkoKSwgJGZyb250ZW5kID0gbnVsbCkgewoKICAgICAgICBpZiAoISR0aGlzLT5jdXN0b21fZmllbGRzKQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgCiAgICAgICAgJGN1c3RvbV9mbGRzX29iaiA9IGFycmF5KCk7CgogICAgICAgICRpZCA9ICR0aGlzLT5faWQ7CiAgICAgICAgJG1vZCA9ICR0aGlzLT5fbW9kOwoKICAgICAgICBpZiAoZW1wdHkoJGZpZWxkdmFscykpCiAgICAgICAgICAgICRmaWVsZHZhbHMgPSBnZW5lcmF0b3JfZmllbGRzOjpnZXRfZmllbGRzX3ZhbHMoJG1vZCwgJGl0ZW1faWQsICRwYXJhbXMpOwoKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmN1c3RvbV9maWVsZHMgYXMgJGN1c3RvbV9mbGQpIHsKICAgICAgICAgICAgaWYgKCEkY3VzdG9tX2ZsZFsnZmllbGRkZWZfaWQnXSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAkb2JqID0gbmV3IFN0ZENsYXNzKCk7CiAgICAgICAgICAgICRuYW1lID0gJ2N1c3RvbWZpZWxkWycgLiAkY3VzdG9tX2ZsZFsnZmllbGRkZWZfaWQnXSAuICddJzsKICAgICAgICAgICAgJG9iai0+ZmllbGRkZWZfaWQgPSAkY3VzdG9tX2ZsZFsnZmllbGRkZWZfaWQnXTsKICAgICAgICAgICAgJG9iai0+cHJvbXB0ID0gKCRjdXN0b21fZmxkWydyZXF1aXJlZCddID8gJyonIDogJycpIC4gJGN1c3RvbV9mbGRbJ25hbWUnXTsKICAgICAgICAgICAgJG9iai0+bGFiZWwgPSAkY3VzdG9tX2ZsZFsnbmFtZSddOwogICAgICAgICAgICAkb2JqLT5hbGlhcyA9ICRjdXN0b21fZmxkWydhbGlhcyddOwogICAgICAgICAgICAkb2JqLT5lZGl0dmlldyA9ICRjdXN0b21fZmxkWydlZGl0dmlldyddOwogICAgICAgICAgICAkb2JqLT5uYW1lID0gJGlkLiRjdXN0b21fZmxkWydhbGlhcyddOwogICAgICAgICAgICAkdmFsdWUgPSAoaXNzZXQoJGZpZWxkdmFsc1skY3VzdG9tX2ZsZFsnZmllbGRkZWZfaWQnXV0pID8gJGZpZWxkdmFsc1skY3VzdG9tX2ZsZFsnZmllbGRkZWZfaWQnXV0gOiAnJyk7CiAgICAgICAgICAgICRvYmotPml0ZW1faWQgPSAkaXRlbV9pZDsKICAgICAgICAgICAgJG9iai0+dmFsdWUgPSAkdmFsdWU7CiAgICAgICAgICAgICRvYmotPmhlbHAgPSAkY3VzdG9tX2ZsZFsnaGVscCddOwogICAgICAgICAgICAkb2JqLT5leHRyYSA9ICRjdXN0b21fZmxkWydleHRyYSddOwogICAgICAgICAgICAkb2JqLT5maWx0ZXIgPSAkaWQuJ2ZpbHRlcl8nIC4gJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ10gLiAnX2VxdWFsJzsKICAgICAgICAgICAgc3dpdGNoICgkY3VzdG9tX2ZsZFsndHlwZSddKSB7CiAgICAgICAgICAgICAgICBjYXNlICd0ZXh0Ym94JzoKICAgICAgICAgICAgICAgICAgICAkc2l6ZSA9ICFlbXB0eSgkY3VzdG9tX2ZsZFsnc2l6ZSddKSA/ICRjdXN0b21fZmxkWydzaXplJ10gOiA1MDsKICAgICAgICAgICAgICAgICAgICAkZnJvbnRfZW5kX3R5cGUgPSAnZXF1YWwnOwogICAgICAgICAgICAgICAgICAgIGlmICgkZnJvbnRlbmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAnZmlsdGVyXycgLiAkY3VzdG9tX2ZsZFsnZmllbGRkZWZfaWQnXSAuICdfJyAuICRmcm9udF9lbmRfdHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gKGlzU2V0KCRwYXJhbXNbJ2ZpbHRlcl8nIC4gJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ10gLiAnXycgLiAkZnJvbnRfZW5kX3R5cGVdKSA/ICRwYXJhbXNbJ2ZpbHRlcl8nIC4gJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ10gLiAnXycgLiAkZnJvbnRfZW5kX3R5cGVdIDogJycpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkY3VzdG9tX2ZsZFsnbWF4X2xlbmd0aCddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWVsZCA9ICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICRuYW1lLCAkdmFsdWUsICRzaXplLCAkY3VzdG9tX2ZsZFsnbWF4X2xlbmd0aCddKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWVsZCA9ICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICRuYW1lLCAkdmFsdWUsICRzaXplKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ21vZHVsZSc6CgogICAgICAgICAgICAgICAgICAgICRvcHRpb25zID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAkaXRlbXMgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkY3VzdG9tX2ZsZFsncGFyYW1zJ10pICYmICFlbXB0eSgkY3VzdG9tX2ZsZFsncGFyYW1zJ10pICYmICRtb2R1bGUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJGN1c3RvbV9mbGRbJ3BhcmFtcyddWyJtb2R1bGUiXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGN1c3RvbV9mbGRbJ3BhcmFtcyddWyJtb2R1bGUiXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRjdXN0b21fZmxkWydwYXJhbXMnXVsiaXRlbXMiXSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICRtb2R1bGUtPkRvQWN0aW9uKCdkZWZhdWx0JywgJGlkLCAkY3VzdG9tX2ZsZFsncGFyYW1zJ10sICRyZXR1cm5pZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtcyA9IGdlbmVyYXRvcl90b29sczo6JGl0ZW1zOwogICAgICAgICAgICAgICAgICAgICAgICAkb3B0aW9ucyA9IGV4dGVuZGVkX3Rvb2xzX29wdHM6Om9iamVjdF90b19oYXNoKCRpdGVtcywgJ3RpdGxlJywgJ2l0ZW1faWQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yX3Rvb2xzOjokaXRlbXMgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2V0KCRjdXN0b21fZmxkWydtdWx0aXBsZSddKSAmJiBpc19pbnQoJGN1c3RvbV9mbGRbJ211bHRpcGxlJ10pICYmICEkZnJvbnRlbmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2V0KCRjdXN0b21fZmxkWydzZWxlY3RfZGVmYXVsdCddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9wdGlvbnMgPSBhcnJheSgkY3VzdG9tX2ZsZFsnc2VsZWN0X2RlZmF1bHQnXSA9PiAnJykgKyAkb3B0aW9uczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvYmotPmZpZWxkID0gJG1vZC0+Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwgJG5hbWUgLiAiW10iLCAkb3B0aW9ucywgKCFlbXB0eSgkdmFsdWUpID8gZXhwbG9kZSgnLCcsICR2YWx1ZSkgOiBhcnJheSgwID0+ICcnKSksICRjdXN0b21fZmxkWydtdWx0aXBsZSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvYmotPmZpZWxkID0gJG1vZC0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAkbmFtZSAuICJbXSIsICcnKSAuICRtb2QtPkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICRuYW1lIC4gIltdIiwgJG9wdGlvbnMsICghZW1wdHkoJHZhbHVlKSA/IGV4cGxvZGUoJywnLCAkdmFsdWUpIDogYXJyYXkoMCA9PiAnJykpLCAkY3VzdG9tX2ZsZFsnbXVsdGlwbGUnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkb3B0aW9ucyA9IGFycmF5KGdlbmVyYXRvcigpLT5MYW5nKCdzZWxlY3RfZGVmYXVsdCcpID0+ICcnKSArICRvcHRpb25zOwoKICAgICAgICAgICAgICAgICAgICAgICAgJGZyb250X2VuZF90eXBlID0gJ2VxdWFsJzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2V0KCRjdXN0b21fZmxkWydtdWx0aXBsZSddKSAmJiBpc19pbnQoJGN1c3RvbV9mbGRbJ211bHRpcGxlJ10pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZyb250X2VuZF90eXBlID0gJ2luc2V0JzsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZnJvbnRlbmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0gJ2ZpbHRlcl8nIC4gJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ10gLiAnXycgLiAkZnJvbnRfZW5kX3R5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAoaXNTZXQoJHBhcmFtc1snZmlsdGVyXycgLiAkY3VzdG9tX2ZsZFsnZmllbGRkZWZfaWQnXSAuICdfJyAuICRmcm9udF9lbmRfdHlwZV0pID8gJHBhcmFtc1snZmlsdGVyXycgLiAkY3VzdG9tX2ZsZFsnZmllbGRkZWZfaWQnXSAuICdfJyAuICRmcm9udF9lbmRfdHlwZV0gOiAnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWx0ZXIgPSAkaWQuJG5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJG9iai0+dmFsdWUgPSAkdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICRvYmotPml0ZW1zID0gJGl0ZW1zOwogICAgICAgICAgICAgICAgICAgICAgICAkb2JqLT5vcHRpb25zID0gJG9wdGlvbnM7CiAgICAgICAgICAgICAgICAgICAgICAgICRvYmotPmZpZWxkID0gJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICRuYW1lLCAkb3B0aW9ucywgLTEsICR2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnZHJvcGRvd24nOgogICAgICAgICAgICAgICAgICAgICRvcHRpb25zID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAkb3B0aW9uc1tnZW5lcmF0b3IoKS0+TGFuZygnc2VsZWN0X2RlZmF1bHQnKV0gPSAnJzsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNfYXJyYXkoJGN1c3RvbV9mbGRbJ29wdGlvbnMnXSkgJiYgIWVtcHR5KCRjdXN0b21fZmxkWydvcHRpb25zJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRvcHRpb25zID0gYXJyYXlfbWVyZ2UoJG9wdGlvbnMsIGFycmF5X2ZsaXAoJGN1c3RvbV9mbGRbJ29wdGlvbnMnXSkpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJGZyb250X2VuZF90eXBlID0gJ2VxdWFsJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRmcm9udGVuZCkgewogICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICdmaWx0ZXJfJyAuICRjdXN0b21fZmxkWydmaWVsZGRlZl9pZCddIC4gJ18nIC4gJGZyb250X2VuZF90eXBlOwogICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAoaXNTZXQoJHBhcmFtc1snZmlsdGVyXycgLiAkY3VzdG9tX2ZsZFsnZmllbGRkZWZfaWQnXSAuICdfJyAuICRmcm9udF9lbmRfdHlwZV0pID8gJHBhcmFtc1snZmlsdGVyXycgLiAkY3VzdG9tX2ZsZFsnZmllbGRkZWZfaWQnXSAuICdfJyAuICRmcm9udF9lbmRfdHlwZV0gOiAnJyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkb2JqLT5vcHRpb25zID0gJG9wdGlvbnM7CiAgICAgICAgICAgICAgICAgICAgJG9iai0+ZmllbGQgPSAkbW9kLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJG5hbWUsICRvcHRpb25zLCAtMSwgJHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdkcm9wZG93bmZyb21tb2R1bGUnOgogICAgICAgICAgICAgICAgICAgICRvcHRpb25zID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAkb3B0aW9uc1tnZW5lcmF0b3IoKS0+TGFuZygnc2VsZWN0X2RlZmF1bHQnKV0gPSAnc2VsZWN0X2RlZmF1bHQnOwogICAgICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkY3VzdG9tX2ZsZFsnb3B0aW9ucyddKSAmJiAhZW1wdHkoJGN1c3RvbV9mbGRbJ29wdGlvbnMnXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9wdGlvbnMgPSBhcnJheV9tZXJnZSgkb3B0aW9ucywgYXJyYXlfZmxpcCgkY3VzdG9tX2ZsZFsnb3B0aW9ucyddKSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWVsZCA9ICRtb2QtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAkbmFtZSwgJG9wdGlvbnMsIC0xLCAkdmFsdWUpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ3BhZ2UnOgogICAgICAgICAgICAgICAgICAgICRvcHRpb25zID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAkb3B0aW9uc1tnZW5lcmF0b3IoKS0+TGFuZygnc2VsZWN0X2RlZmF1bHQnKV0gPSAnc2VsZWN0X2RlZmF1bHQnOwogICAgICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkY3VzdG9tX2ZsZFsnb3B0aW9ucyddKSAmJiAhZW1wdHkoJGN1c3RvbV9mbGRbJ29wdGlvbnMnXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9wdGlvbnMgPSBhcnJheV9tZXJnZSgkb3B0aW9ucywgYXJyYXlfZmxpcCgkY3VzdG9tX2ZsZFsnb3B0aW9ucyddKSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWVsZCA9ICRtb2QtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAkbmFtZSwgJG9wdGlvbnMsIC0xLCAkdmFsdWUpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ2NvbG9yX3BpY2tlcic6CiAgICAgICAgICAgICAgICAgICAgJHR4dCA9ICcnOwogICAgICAgICAgICAgICAgICAgICR0bXAgPSAnPGlucHV0IHR5cGU9ImNvbG9yIiBkYXRhLWhleD0idHJ1ZSIgbmFtZT0iJXMiIHZhbHVlPSIlcyIvPic7CiAgICAgICAgICAgICAgICAgICAgJHR4dCAuPSBzcHJpbnRmKCR0bXAsICRpZCAuICRuYW1lLCAkdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICRvYmotPmZpZWxkID0gJHR4dDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdtb2R1bGVfbGluayc6CiAgICAgICAgICAgICAgICAgICAgJG9iai0+ZmllbGQgPSAkY3VzdG9tX2ZsZFsnbGluayddOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ2NoZWNrYm94JzoKICAgICAgICAgICAgICAgICAgICAkZnJvbnRfZW5kX3R5cGUgPSAnZXF1YWwnOwogICAgICAgICAgICAgICAgICAgIGlmICgkZnJvbnRlbmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAnZmlsdGVyXycgLiAkY3VzdG9tX2ZsZFsnZmllbGRkZWZfaWQnXSAuICdfJyAuICRmcm9udF9lbmRfdHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gKGlzU2V0KCRwYXJhbXNbJ2ZpbHRlcl8nIC4gJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ10gLiAnXycgLiAkZnJvbnRfZW5kX3R5cGVdKSA/ICRwYXJhbXNbJ2ZpbHRlcl8nIC4gJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ10gLiAnXycgLiAkZnJvbnRfZW5kX3R5cGVdIDogJycpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWVsZCA9ICRtb2QtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJG5hbWUsICcwJykgLiAkbW9kLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJG5hbWUsICcxJywgJHZhbHVlKTsgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ3RleHRhcmVhJzoKICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWVsZCA9ICRtb2QtPkNyZWF0ZVRleHRBcmVhKCRjdXN0b21fZmxkWyd3eXNpd3lnJ10sICRpZCwgJHZhbHVlLCAkbmFtZSwgJycsICcnLCAnJywgJycsICRjdXN0b21fZmxkWydjb2xzJ10sICRjdXN0b21fZmxkWydyb3dzJ10pOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXRpYyc6CiAgICAgICAgICAgICAgICAgICAgJG9iai0+ZmllbGQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdzZWxlY3RfZGF0ZSc6CgogICAgICAgICAgICAgICAgICAgICRzaXplID0gIWVtcHR5KCRjdXN0b21fZmxkWydzaXplJ10pID8gJGN1c3RvbV9mbGRbJ3NpemUnXSA6IDIwOwoKICAgICAgICAgICAgICAgICAgICAkc2VsZWN0b3IgPSAnIycgLiAkaWQgLiBzdHJfcmVwbGFjZShhcnJheSgnWycsICddJyksIGFycmF5KCdcXFxbJywgJ1xcXF0nKSwgJG5hbWUpOwogICAgICAgICAgICAgICAgICAgICRkYXRlcGlja2VyID0gJwo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oJCl7CiAgICAkKCInIC4gJHNlbGVjdG9yIC4gJyIpLmRhdGVwaWNrZXIoeycgLiAoIWVtcHR5KCRjdXN0b21fZmxkWydkYXRlZm9ybWF0J10pID8gJ2RhdGVGb3JtYXQ6IFwnJyAuIGh0bWxlbnRpdGllcygkY3VzdG9tX2ZsZFsnZGF0ZWZvcm1hdCddKSAuICdcJycgOiAnJykgLiAnfSk7Cn0pOwo8L3NjcmlwdD4nOwoKICAgICAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRjdXN0b21fZmxkWydtYXhfbGVuZ3RoJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRvYmotPmZpZWxkID0gJGRhdGVwaWNrZXIgLiAkbW9kLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAkbmFtZSwgJHZhbHVlLCAkc2l6ZSwgJGN1c3RvbV9mbGRbJ21heF9sZW5ndGgnXSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9iai0+ZmllbGQgPSAkZGF0ZXBpY2tlciAuICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICRuYW1lLCAkdmFsdWUsICRzaXplKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ3VwbG9hZF9maWxlJzoKICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICdjdXN0b21maWVsZF8nIC4gJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ107CgogICAgICAgICAgICAgICAgICAgIGlmICgkdmFsdWUgIT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9iai0+ZGVsZXRlX2ZpbGUgPSAkbW9kLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2RlbGV0ZV9jdXN0b21maWVsZFsnIC4gJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ10gLiAnXScsICdkZWxldGUnKSAuICcgJyAuIGdlbmVyYXRvcigpLT5MYW5nKCdkZWxldGUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgJG9iai0+ZmlsZV9sb2NhdGlvbiA9IGdlbmVyYXRvcl90b29sczo6ZmlsZV9sb2NhdGlvbigkbW9kLCBhcnJheSgnaXRlbV9pZCcgPT4gJGl0ZW1faWQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgJG9iai0+ZmlsZXBhdGhfbG9jYXRpb24gPSBnZW5lcmF0b3JfdG9vbHM6OmZpbGVwYXRoX2xvY2F0aW9uKCRtb2QsIGFycmF5KCdpdGVtX2lkJyA9PiAkaXRlbV9pZCkpOwogICAgICAgICAgICAgICAgICAgICAgICAkb2JqLT5pc19pbWFnZSA9IGdldEltYWdlU2l6ZShjbXNfam9pbl9wYXRoKGdlbmVyYXRvcl90b29sczo6ZmlsZXBhdGhfbG9jYXRpb24oJG1vZCwgYXJyYXkoJ2l0ZW1faWQnID0+ICRpdGVtX2lkKSksICR2YWx1ZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWxlbmFtZSA9ICR2YWx1ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRvYmotPmZpZWxkID0gJG1vZC0+Q3JlYXRlRmlsZVVwbG9hZElucHV0KCRpZCwgJG5hbWUpOwoKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdzZWxlY3RfZmlsZSc6CiAgICAgICAgICAgICAgICAgICAgJHAgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3VwbG9hZHNfcGF0aCddLCAkY3VzdG9tX2ZsZFsnZGlyJ10pOwoKICAgICAgICAgICAgICAgICAgICBpZiAoIWlzX2RpcigkcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlcyA9IEBta2RpcigkcCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkaW1hZ2VzID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAkaW1hZ2VzW2dlbmVyYXRvcigpLT5MYW5nKCdzZWxlY3RfZGVmYXVsdCcpXSA9ICdzZWxlY3RfZGVmYXVsdCc7CgogICAgICAgICAgICAgICAgICAgICRhbGxvd2VkID0gKCFlbXB0eSgkY3VzdG9tX2ZsZFsnYWxsb3cnXSkgPyAkY3VzdG9tX2ZsZFsnYWxsb3cnXSA6IGFycmF5KCdqcGcnLCAnZ2lmJywgJ3BuZycpKTsKCgogICAgICAgICAgICAgICAgICAgIGlmICgkaGFuZGxlID0gb3BlbmRpcigkcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGZhbHNlICE9PSAoJGZpbGUgPSByZWFkZGlyKCRoYW5kbGUpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRmaWxlICE9ICcuJyAmJiAkZmlsZSAhPSAnLi4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICFnZW5lcmF0b3JfdG9vbHM6Omhhc19wcmVmaXgoJGZpbGUsICRjdXN0b21fZmxkWydleGNsdWRlX3ByZWZpeCddKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV4dCA9IHN0cnRvbG93ZXIoc3Vic3RyKHN0cnJjaHIoJGZpbGUsICcuJyksIDEpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluX2FycmF5KCRleHQsICRhbGxvd2VkKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1hZ2VzWyRmaWxlXSA9ICRmaWxlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VkaXIoJGhhbmRsZSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWVsZCA9ICRtb2QtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAkbmFtZSwgJGltYWdlcywgLTEsICR2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRjdXN0b21fZmxkc19vYmpbJG9iai0+YWxpYXNdID0gJG9iajsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkY3VzdG9tX2ZsZHNfb2JqOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBwcm9jZXNzKGFycmF5ICYkY291bnRqb2lucywgYXJyYXkgJiRqb2lucywgYXJyYXkgJiR3aGVyZSwgYXJyYXkgJiRwYXJhbWFycmF5KSB7CiAgICAgICAgCiAgICB9Cgp9Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.generator_opts.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBNb2R1bGVHZW5lcmF0b3IgZm9yIENNUyBNYWRlIFNpbXBsZSAoQGt1em1hbnkpCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovKioKICogRGVzY3JpcHRpb24gb2YgY2xhc3MKICoKICogQGF1dGhvciBAa3V6bWFueQogKi8KCmNsYXNzIGdlbmVyYXRvcl9vcHRzIHsKCiAgICBwdWJsaWMgc3RhdGljICRmaWVsZGRlZnM7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkgewogICAgICAgIAogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaW5pdF9hZG1pbigkbW9kKSB7CgogICAgICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKICAgICAgICAkaW1hZ2VzX3NpemVfYWRtaW4gPSB0cmltKCRtb2QtPkdldFByZWZlcmVuY2UoJ2ltYWdlc19zaXplX2FkbWluJykpOwoKICAgICAgICBpZiAoc3RycG9zKCRpbWFnZXNfc2l6ZV9hZG1pbiwgJ3gnKSAhPT0gRkFMU0UpIHsKICAgICAgICAgICAgJGltYWdlc19zaXplX2FkbWluX2FycmF5ID0gZXhwbG9kZSgneCcsICRpbWFnZXNfc2l6ZV9hZG1pbik7CiAgICAgICAgICAgICRzbWFydHktPmFzc2lnbignaW1hZ2Vfc2l6ZV9hZG1pbl93aWR0aCcsICRpbWFnZXNfc2l6ZV9hZG1pbl9hcnJheVswXSk7CiAgICAgICAgICAgICRzbWFydHktPmFzc2lnbignaW1hZ2Vfc2l6ZV9hZG1pbl9oZWlnaHQnLCAkaW1hZ2VzX3NpemVfYWRtaW5fYXJyYXlbMV0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRzbWFydHktPmFzc2lnbignaW1hZ2Vfc2l6ZV9hZG1pbl93aWR0aCcsIDIwMCk7CiAgICAgICAgICAgICRzbWFydHktPmFzc2lnbignaW1hZ2Vfc2l6ZV9hZG1pbl9oZWlnaHQnLCAwKTsKICAgICAgICB9CiAgICAgICAgLy8gcGFyYW1ldGVycyB0aGF0IGNhbiBiZSBjYWxsZWQgaW4gdGhlIG1vZHVsZSB0YWcKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ2FjdGlvbicsICdkZWZhdWx0JywgJG1vZC0+TGFuZygnaGVscF9wYXJhbV9hY3Rpb24nKSk7CiAgICAgICAgJG1vZC0+Q3JlYXRlUGFyYW1ldGVyKCdjYXRlZ29yeV9pZCcsIDAsICRtb2QtPkxhbmcoJ2hlbHBfcGFyYW1fY2F0ZWdvcnlfaWQnKSk7CiAgICAgICAgJG1vZC0+Q3JlYXRlUGFyYW1ldGVyKCdjYXRlZ29yeScsIDAsICRtb2QtPkxhbmcoJ2hlbHBfcGFyYW1fY2F0ZWdvcnknKSk7CiAgICAgICAgJG1vZC0+Q3JlYXRlUGFyYW1ldGVyKCdvcmRlcmJ5JywgJ2NyZWF0ZV9kYXRlJywgJG1vZC0+TGFuZygnaGVscF9wYXJhbV9vcmRlcmJ5JykpOwogICAgICAgICRtb2QtPkNyZWF0ZVBhcmFtZXRlcignZGV0YWlsdGVtcGxhdGUnLCAnJywgJG1vZC0+TGFuZygnaGVscF9wYXJhbV9kZXRhaWx0ZW1wbGF0ZScpKTsKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ3N1bW1hcnl0ZW1wbGF0ZScsICcnLCAkbW9kLT5MYW5nKCdoZWxwX3BhcmFtX3N1bW1hcnl0ZW1wbGF0ZScpKTsKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ2NhdGVnb3J5dGVtcGxhdGUnLCAnJywgJG1vZC0+TGFuZygnaGVscF9wYXJhbV9jYXRlZ29yeXRlbXBsYXRlJykpOwogICAgICAgICRtb2QtPkNyZWF0ZVBhcmFtZXRlcignZmlsdGVydGVtcGxhdGUnLCAnJywgJG1vZC0+TGFuZygnaGVscF9wYXJhbV9maWx0ZXJ0ZW1wbGF0ZScpKTsKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ2RldGFpbHBhZ2UnLCAnJywgJG1vZC0+TGFuZygnaGVscF9wYXJhbV9kZXRhaWxwYWdlJykpOwogICAgICAgICRtb2QtPkNyZWF0ZVBhcmFtZXRlcignaXRlbV9pZCcsIDAsICRtb2QtPkxhbmcoJ2hlbHBfcGFyYW1faXRlbScpKTsKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ2NhdGVnb3J5X2lkJywgMCwgJG1vZC0+TGFuZygnaGVscF9wYXJhbV9jYXRlZ29yeV9pZCcpKTsKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ2NhdGVnb3J5JywgJycsICRtb2QtPkxhbmcoJ2hlbHBfcGFyYW1fY2F0ZWdvcnlfaWQnKSk7CiAgICAgICAgJG1vZC0+Q3JlYXRlUGFyYW1ldGVyKCdwYWdlbGltaXQnLCAwLCAkbW9kLT5MYW5nKCdoZWxwX3BhcmFtX3BhZ2VsaW1pdCcpKTsKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ3NvcnRvcmRlcicsICdkZXNjJywgJG1vZC0+TGFuZygnaGVscF9wYXJhbV9zb3J0b3JkZXInKSk7CiAgICAgICAgJG1vZC0+Q3JlYXRlUGFyYW1ldGVyKCdpbmxpbmUnLCAwLCAkbW9kLT5MYW5nKCdoZWxwX3BhcmFtX2lubGluZScpKTsKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ29uZXJvdycsICcnLCAkbW9kLT5MYW5nKCdoZWxwX3BhcmFtX29uZXJvdycpKTsKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ2FsbHJvdycsICcnLCAkbW9kLT5MYW5nKCdoZWxwX3BhcmFtX2FsbHJvdycpKTsKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ29uZWNvdW50JywgJycsICRtb2QtPkxhbmcoJ2hlbHBfcGFyYW1fb25lY291bnQnKSk7CiAgICAgICAgLy8kbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ2l0ZW1fZGF0ZV9mcm9tX3RvJywgJycsICRtb2QtPkxhbmcoJ2hlbHBfcGFyYW1faXRlbV9kYXRlX2Zyb21fdG8nKSk7CiAgICAgICAgJG1vZC0+Q3JlYXRlUGFyYW1ldGVyKCdkYXRlX3N0YXJ0JywgJycsICRtb2QtPkxhbmcoJ2hlbHBfcGFyYW1fZGF0ZV9zdGFydCcpKTsKICAgICAgICAkbW9kLT5DcmVhdGVQYXJhbWV0ZXIoJ2RhdGVfZW5kJywgJycsICRtb2QtPkxhbmcoJ2hlbHBfcGFyYW1fZGF0ZV9lbmQnKSk7CiAgICAgICAgJG1vZC0+Q3JlYXRlUGFyYW1ldGVyKCdmaWx0ZXJfJywgJycsICRtb2QtPkxhbmcoJ2hlbHBfcGFyYW1fZmlsdGVyJykpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaW5pdCgkbW9kKSB7CgogICAgICAgICRtb2QtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CiAgICAgICAgJG1vZC0+UmVzdHJpY3RVbmtub3duUGFyYW1zKCk7CgogICAgICAgIGlmICgkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3VybF9lZGl0JykpIHsKICAgICAgICAgICAgLy8gY3VzdG9tIHVybCBzdXBwb3J0CiAgICAgICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgaXRlbV9pZCx1cmwgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgYWN0aXZlID0gMSBBTkQgdXJsICE9IFwnXCcnOwogICAgICAgICAgICAkdG1wID0gJGRiLT5HZXRBcnJheSgkcXVlcnkpOwogICAgICAgICAgICBpZiAoaXNfYXJyYXkoJHRtcCkpIHsKICAgICAgICAgICAgICAgICRkZXRhaWxwYWdlID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kZXRhaWxfcmV0dXJuaWQnLCAtMSk7CiAgICAgICAgICAgICAgICBpZiAoJGRldGFpbHBhZ2UgPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAkY29udGVudG9wcyA9IGNtc21zKCktPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CiAgICAgICAgICAgICAgICAgICAgJGRldGFpbHBhZ2UgPSAkY29udGVudG9wcy0+R2V0RGVmYXVsdENvbnRlbnQoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR0bXAgYXMgJG9uZSkgewogICAgICAgICAgICAgICAgICAgICRwYXJtcyA9IGFycmF5KCdhY3Rpb24nID0+ICdkZXRhaWwnLCAncmV0dXJuaWQnID0+ICRkZXRhaWxwYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAnaXRlbV9pZCcgPT4gJG9uZVsnaXRlbV9pZCddKTsKICAgICAgICAgICAgICAgICAgICAkcm91dGUgPSBuZXcgQ21zUm91dGUoJG9uZVsndXJsJ10sICRtb2QtPkdldE5hbWUoKSwgJHBhcm1zLCBUUlVFKTsKICAgICAgICAgICAgICAgICAgICBjbXNfcm91dGVfbWFuYWdlcjo6cmVnaXN0ZXIoJHJvdXRlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZSgncGFnZScsIENMRUFOX0lOVCk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZSgncGFnZWxpbWl0JywgQ0xFQU5fSU5UKTsKICAgICAgICAkbW9kLT5TZXRQYXJhbWV0ZXJUeXBlKCdjYXRlZ29yeV9pZCcsIENMRUFOX0lOVCk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZSgnY2F0ZWdvcnknLCBDTEVBTl9TVFJJTkcpOwogICAgICAgICRtb2QtPlNldFBhcmFtZXRlclR5cGUoJ29yZGVyYnknLCBDTEVBTl9TVFJJTkcpOwogICAgICAgICRtb2QtPlNldFBhcmFtZXRlclR5cGUoJ3NvcnRvcmRlcicsIENMRUFOX1NUUklORyk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZSgnc29ydGJ5JywgQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkbW9kLT5TZXRQYXJhbWV0ZXJUeXBlKCdjYXRlZ29yeXRlbXBsYXRlJywgQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkbW9kLT5TZXRQYXJhbWV0ZXJUeXBlKCdzdW1tYXJ5dGVtcGxhdGUnLCBDTEVBTl9TVFJJTkcpOwogICAgICAgICRtb2QtPlNldFBhcmFtZXRlclR5cGUoJ2RldGFpbHRlbXBsYXRlJywgQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkbW9kLT5TZXRQYXJhbWV0ZXJUeXBlKCdkZXRhaWxwYWdlJywgQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkbW9kLT5TZXRQYXJhbWV0ZXJUeXBlKCdpdGVtX2lkJywgQ0xFQU5fSU5UKTsKICAgICAgICAkbW9kLT5TZXRQYXJhbWV0ZXJUeXBlKCdpbmxpbmUnLCBDTEVBTl9JTlQpOwogICAgICAgICRtb2QtPlNldFBhcmFtZXRlclR5cGUoJ3N1Ym1pdCcsIENMRUFOX1NUUklORyk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZSgnanVuaycsIENMRUFOX1NUUklORyk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZSgnb25lcm93JywgQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkbW9kLT5TZXRQYXJhbWV0ZXJUeXBlKCdhbGxyb3cnLCBDTEVBTl9TVFJJTkcpOwogICAgICAgICRtb2QtPlNldFBhcmFtZXRlclR5cGUoJ29uZWNvdW50JywgQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkbW9kLT5TZXRQYXJhbWV0ZXJUeXBlKCdpdGVtcycsIENMRUFOX1NUUklORyk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZSgnaXRlbV9kYXRlX2Zyb21fdG8nLCBDTEVBTl9TVFJJTkcpOwogICAgICAgICRtb2QtPlNldFBhcmFtZXRlclR5cGUoJ2l0ZW1saXN0JywgQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkbW9kLT5TZXRQYXJhbWV0ZXJUeXBlKCdkYXRlX3N0YXJ0JywgQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkbW9kLT5TZXRQYXJhbWV0ZXJUeXBlKCdkYXRlX2VuZCcsIENMRUFOX1NUUklORyk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZSgnY2Rfb3JpZ3BhZ2UnLCBDTEVBTl9TVFJJTkcpOwogICAgICAgICRtb2QtPlNldFBhcmFtZXRlclR5cGUoJ25vY2FjaGUnLCBDTEVBTl9JTlQpOwogICAgICAgICRtb2QtPlNldFBhcmFtZXRlclR5cGUoJ2NhY2hlX2tleScsIENMRUFOX1NUUklORyk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZSgncHJldmlldycsIENMRUFOX1NUUklORyk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZShDTEVBTl9SRUdFWFAgLiAnL2ZpbHRlcl8qLycsIENMRUFOX1NUUklORyk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZShDTEVBTl9SRUdFWFAgLiAnL2RhdGVmcm9tKi8nLCBDTEVBTl9TVFJJTkcpOwogICAgICAgICRtb2QtPlNldFBhcmFtZXRlclR5cGUoQ0xFQU5fUkVHRVhQIC4gJy9kYXRldG8qLycsIENMRUFOX1NUUklORyk7CiAgICAgICAgJG1vZC0+U2V0UGFyYW1ldGVyVHlwZShDTEVBTl9SRUdFWFAgLiAnLycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfKi8nLCBDTEVBTl9TVFJJTkcpOwoKCiAgICAgICAgJGRlZmF1bHRfZGV0YWlscGFnZSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fY2F0ZWdvcnlfcmV0dXJuaWQnKTsKCiAgICAgICAgJG1vZC0+UmVnaXN0ZXJSb3V0ZSgnLycgLiAkbW9kLT5HZXRQcmVmZXJlbmNlKCd1cmxfcHJlZml4JywgbXVuZ2Vfc3RyaW5nX3RvX3VybCgkbW9kLT5HZXROYW1lKCksIHRydWUpKSAuICdcL1tjQ11cLyg/UDxjYXRlZ29yeV9pZD5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKVwvKD9QPGp1bms+Lio/KVwvKD9QPGNhdGVnb3J5dGVtcGxhdGU+WzAtOV0rPykkLycsIGFycmF5KCdhY3Rpb24nID0+ICdkZWZhdWx0JykpOwogICAgICAgICRtb2QtPlJlZ2lzdGVyUm91dGUoJy8nIC4gJG1vZC0+R2V0UHJlZmVyZW5jZSgndXJsX3ByZWZpeCcsIG11bmdlX3N0cmluZ190b191cmwoJG1vZC0+R2V0TmFtZSgpLCB0cnVlKSkgLiAnXC9bY0NdXC8oP1A8Y2F0ZWdvcnlfaWQ+WzAtOV0rKVwvKD9QPHJldHVybmlkPlswLTldKylcLyg/UDxqdW5rPi4qPykkLycsIGFycmF5KCdhY3Rpb24nID0+ICdkZWZhdWx0JykpOwogICAgICAgICRtb2QtPlJlZ2lzdGVyUm91dGUoJy8nIC4gJG1vZC0+R2V0UHJlZmVyZW5jZSgndXJsX3ByZWZpeCcsIG11bmdlX3N0cmluZ190b191cmwoJG1vZC0+R2V0TmFtZSgpLCB0cnVlKSkgLiAnXC9bY0NdXC8oP1A8Y2F0ZWdvcnlfaWQ+WzAtOV0rKVwvKD9QPGp1bms+Lio/KSQvJywgYXJyYXkoJ2FjdGlvbicgPT4gJ2RlZmF1bHQnLCAncmV0dXJuaWQnID0+ICRkZWZhdWx0X2RldGFpbHBhZ2UpKTsKICAgICAgICAkbW9kLT5SZWdpc3RlclJvdXRlKCcvJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ3VybF9wcmVmaXgnLCBtdW5nZV9zdHJpbmdfdG9fdXJsKCRtb2QtPkdldE5hbWUoKSwgdHJ1ZSkpIC4gJ1wvW2NDXVwvKD9QPGNhdGVnb3J5X2lkPlswLTldKykkLycsIGFycmF5KCdhY3Rpb24nID0+ICdkZWZhdWx0JywgJ3JldHVybmlkJyA9PiAkZGVmYXVsdF9kZXRhaWxwYWdlKSk7CgogICAgICAgICRkZWZhdWx0X2RldGFpbHBhZ2UgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2RldGFpbF9yZXR1cm5pZCcpOwoKICAgICAgICAkbW9kLT5SZWdpc3RlclJvdXRlKCcvJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ3VybF9wcmVmaXgnLCBtdW5nZV9zdHJpbmdfdG9fdXJsKCRtb2QtPkdldE5hbWUoKSwgdHJ1ZSkpIC4gJ1wvKD9QPGl0ZW1faWQ+WzAtOV0rKVwvKD9QPHJldHVybmlkPlswLTldKylcLyg/UDxqdW5rPi4qPylcLyg/UDxkZXRhaWx0ZW1wbGF0ZT5bMC05XSs/KSQvJywgYXJyYXkoJ2FjdGlvbicgPT4gJ2RldGFpbCcpKTsKICAgICAgICAkbW9kLT5SZWdpc3RlclJvdXRlKCcvJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ3VybF9wcmVmaXgnLCBtdW5nZV9zdHJpbmdfdG9fdXJsKCRtb2QtPkdldE5hbWUoKSwgdHJ1ZSkpIC4gJ1wvKD9QPGl0ZW1faWQ+WzAtOV0rKVwvKD9QPHJldHVybmlkPlswLTldKylcLyg/UDxqdW5rPi4qPykkLycsIGFycmF5KCdhY3Rpb24nID0+ICdkZXRhaWwnKSk7CiAgICAgICAgJG1vZC0+UmVnaXN0ZXJSb3V0ZSgnLycgLiAkbW9kLT5HZXRQcmVmZXJlbmNlKCd1cmxfcHJlZml4JywgbXVuZ2Vfc3RyaW5nX3RvX3VybCgkbW9kLT5HZXROYW1lKCksIHRydWUpKSAuICdcLyg/UDxpdGVtX2lkPlswLTldKylcLyg/UDxqdW5rPi4qPykkLycsIGFycmF5KCdhY3Rpb24nID0+ICdkZXRhaWwnLCAncmV0dXJuaWQnID0+ICRkZWZhdWx0X2RldGFpbHBhZ2UpKTsKICAgICAgICAkbW9kLT5SZWdpc3RlclJvdXRlKCcvJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ3VybF9wcmVmaXgnLCBtdW5nZV9zdHJpbmdfdG9fdXJsKCRtb2QtPkdldE5hbWUoKSwgdHJ1ZSkpIC4gJ1wvKD9QPGl0ZW1faWQ+WzAtOV0rKSQvJywgYXJyYXkoJ2FjdGlvbicgPT4gJ2RldGFpbCcsICdyZXR1cm5pZCcgPT4gJGRlZmF1bHRfZGV0YWlscGFnZSkpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X21vZHVsZSgkbmFtZSkgewogICAgICAgICRtb2R1bGUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01vZHVsZUdlbmVyYXRvcicpOwogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgcmV0dXJuICRkYi0+R2V0Um93KCdTRUxFQ1QgKiBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX2dlbmVyYXRvciBXSEVSRSBtb2R1bGVfbmFtZSA9ID8nLCBhcnJheSgkbmFtZSkpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVsZXRlKCRuYW1lKSB7CiAgICAgICAgJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTW9kdWxlR2VuZXJhdG9yJyk7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICByZXR1cm4gJGRiLT5FeGVjdXRlKCdERUxFVEUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9nZW5lcmF0b3IgV0hFUkUgbW9kdWxlX25hbWUgPSA/JywgYXJyYXkoJG5hbWUpKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHVwZGF0ZWF0dGFjaCgkbmFtZSwgJGF0dGFjaCkgewogICAgICAgICRtb2R1bGUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01vZHVsZUdlbmVyYXRvcicpOwogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgcmV0dXJuICRkYi0+RXhlY3V0ZSgnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX2dlbmVyYXRvciBTRVQgYXR0YWNoID0gPywgbW9kaWZpZWRfZGF0ZSA9IE5PVygpIFdIRVJFIG1vZHVsZV9uYW1lID0gPycsIGFycmF5KCRhdHRhY2gsICRuYW1lKSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB1cGRhdGVkYXRlKCRuYW1lKSB7CiAgICAgICAgJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTW9kdWxlR2VuZXJhdG9yJyk7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICByZXR1cm4gJGRiLT5FeGVjdXRlKCdVUERBVEUgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfZ2VuZXJhdG9yIFNFVCBtb2RpZmllZF9kYXRlID0gTk9XKCkgV0hFUkUgbW9kdWxlX25hbWUgPSA/JywgYXJyYXkoJG5hbWUpKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGluc2VydCgkbmFtZSwgJGF0dGFjaCA9ICcnKSB7CiAgICAgICAgJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTW9kdWxlR2VuZXJhdG9yJyk7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICByZXR1cm4gJGRiLT5FeGVjdXRlKCdJTlNFUlQgSU5UTyAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9nZW5lcmF0b3IgKG1vZHVsZV9uYW1lLGF0dGFjaCwgY3JlYXRlX2RhdGUsIG1vZGlmaWVkX2RhdGUpIFZBTFVFUyAoPyw/LE5PVygpLE5PVygpKScsIGFycmF5KCRuYW1lLCAkYXR0YWNoKSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfbW9kdWxlc19saXN0KCkgewogICAgICAgIHJldHVybiBleHRlbmRlZF90b29sc19vcHRzOjp0b19oYXNoKHNlbGY6OmdldF9tb2R1bGVzKCksICdtb2R1bGVfbmFtZScsICdpZCcpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X21vZHVsZXMoKSB7CiAgICAgICAgJGl0ZW1zID0gYXJyYXkoKTsKICAgICAgICAkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNb2R1bGVHZW5lcmF0b3InKTsKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgICRpdGVtcyA9ICRkYi0+R2V0QXJyYXkoJ1NFTEVDVCAqIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfZ2VuZXJhdG9yJyk7CiAgICAgICAgcmV0dXJuICRpdGVtczsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9hdHRhY2hfbW9kdWxlcygkYXR0YWNobW9kdWxlcykgewogICAgICAgICRpdGVtcyA9IGFycmF5KCk7CiAgICAgICAgJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTW9kdWxlR2VuZXJhdG9yJyk7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICAkaXRlbXMgPSAkZGItPkdldEFycmF5KCdTRUxFQ1QgaWQsbW9kdWxlX25hbWUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9nZW5lcmF0b3IgV0hFUkUgRklORF9JTl9TRVQoaWQsPykgPiAwJywgYXJyYXkoJGF0dGFjaG1vZHVsZXMpKTsKICAgICAgICBpZiAoISRpdGVtcykKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICAkaXRlbXMgPSBleHRlbmRlZF90b29sc19vcHRzOjp0b19oYXNoKCRpdGVtcywgJ21vZHVsZV9uYW1lJywgJ2lkJyk7CiAgICAgICAgJG1vZHVsZXMgPSBhcnJheV9rZXlzKCRpdGVtcyk7CgogICAgICAgIHJldHVybiBpbXBsb2RlKCcsICcsICRtb2R1bGVzKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZpbGxfaXRlbV9mcm9tX2Zvcm1wYXJhbXMoJG1vZCwgYXJyYXkgJiRyb3csICRwYXJhbXMpIHsKICAgICAgICBmb3JlYWNoICgkcGFyYW1zIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIHN3aXRjaCAoJGtleSkgewogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAkcm93WyRrZXldID0gJHZhbHVlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAKICAgICAgICAvLyBnZXQgY2F0ZWdvcnkgcGFyYW1zCiAgICAgICAgJGNhdGVnb3J5ID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfY2F0ZWdvcnkoJG1vZCwgJHJvd1siY2F0ZWdvcnkiXSk7CiAgICAgICAgJHJvd1siY2F0ZWdvcnlfbmFtZSJdID0gJGNhdGVnb3J5WyJjYXRlZ29yeV9uYW1lIl07CiAgICAgICAgJHJvd1siY2F0ZWdvcnlfYWxpYXMiXSA9ICRjYXRlZ29yeVsiY2F0ZWdvcnlfYWxpYXMiXTsKICAgICAgICAkcm93WyJleHRyYSJdID0gJGNhdGVnb3J5WyJleHRyYSJdOwogICAgICAgICRyb3dbImV4dHJhMiJdID0gJGNhdGVnb3J5WyJleHRyYTIiXTsKICAgICAgICAKICAgICAgICAKICAgICAgICAvLyBnZXQgY3VzdG9tIGZpZWxkcwogICAgICAgIGlmIChpc3NldCgkcGFyYW1zWydjdXN0b21maWVsZCddKSAmJiBpc19hcnJheSgkcGFyYW1zWydjdXN0b21maWVsZCddKSkgewogICAgICAgICAgICBzZWxmOjokZmllbGRkZWZzID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfY29zdHVtX2ZpZWxkX2RlZigkbW9kLCAkcm93WyJpdGVtX2lkIl0sIGZhbHNlKTsKICAgICAgICAgICAgZm9yZWFjaCAoc2VsZjo6JGZpZWxkZGVmcyBhcyAkZmllbGQpIHsKICAgICAgICAgICAgICAgIHNlbGY6OiRmaWVsZGRlZnNbJGZpZWxkWyJmaWVsZGRlZl9pZCJdXSA9ICRmaWVsZDsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3JlYWNoICgkcGFyYW1zWydjdXN0b21maWVsZCddIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICAgICBpZiAoIWlzc2V0KHNlbGY6OiRmaWVsZGRlZnNbJGtleV0pKQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgaWYgKGlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICBzZWxmOjokZmllbGRkZWZzW3NlbGY6OiRmaWVsZGRlZnNbJGtleV1bImFsaWFzIl1dWyJ2YWx1ZSJdID0gaW1wbG9kZSgnLCcsICR2YWx1ZSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHNlbGY6OiRmaWVsZGRlZnNbc2VsZjo6JGZpZWxkZGVmc1ska2V5XVsiYWxpYXMiXV1bInZhbHVlIl0gPSAkdmFsdWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1bnNldChzZWxmOjokZmllbGRkZWZzWyRrZXldKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCn0KCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.generator_tools.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBNb2R1bGVHZW5lcmF0b3IgZm9yIENNUyBNYWRlIFNpbXBsZSAoQGt1em1hbnkpCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovKioKICogRGVzY3JpcHRpb24gb2YgY2xhc3MKICoKICogQGF1dGhvciBAa3V6bWFueQogKi8KCmNsYXNzIGdlbmVyYXRvcl90b29scyB7CgogICAgcHJpdmF0ZSBzdGF0aWMgJHNlYXJjaF9kYXRlX2VuZCA9IG51bGw7CiAgICBwdWJsaWMgc3RhdGljICRpdGVtcyA9IG51bGw7CiAgICBwdWJsaWMgc3RhdGljICRmaWVsZHNfYmxvY2tsaXN0ID0gYXJyYXkoJ2l0ZW1faWQnLCAnY2F0ZWdvcnlfaWQnLCAndGl0bGUnLCAnYWxpYXMnLCAndXJsJywgJ3Bvc2l0aW9uJywgJ2FjdGl2ZScsICdpdGVtX2RhdGUnLCAnY3JlYXRlX2RhdGUnLCAnbW9kaWZpZWRfZGF0ZScpOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHsKICAgICAgICAKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9maWVsZF9kZWZzKCRtb2QsICR0eXBlID0gbnVsbCwgJGZpbHRlcl9mcm9udGVuZCA9IG51bGwsICRmaWx0ZXJfYWRtaW4gPSBudWxsLCAkc2VjdGlvbiA9ICdpdGVtcycpIHsKICAgICAgICAkcGFybXMgPSBhcnJheSgpOwogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CgogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgZmllbGRkZWZfaWQsIG5hbWUsIGFsaWFzLCBoZWxwLCB0eXBlLCBwb3NpdGlvbiwgcmVxdWlyZWQsIHNlYXJjaGFibGUsIGV4dHJhLCBmcm9udGVuZCxlZGl0dmlldywgZmlsdGVyX2Zyb250ZW5kLCBmaWx0ZXJfYWRtaW4gRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkZGVmJzsKICAgICAgICAkcXVlcnkgLj0gIiBXSEVSRSBzZWN0aW9uID0gPyAiOwogICAgICAgICRwYXJtc1tdID0gJHNlY3Rpb247CgogICAgICAgIGlmICgkdHlwZSkgewogICAgICAgICAgICAkcXVlcnkgLj0gIiBBTkQgdHlwZSAgPSA/ICAiOwogICAgICAgICAgICAkcGFybXNbXSA9ICR0eXBlOwogICAgICAgIH0KICAgICAgICBpZiAoJGZpbHRlcl9mcm9udGVuZCkgewogICAgICAgICAgICAkcXVlcnkgLj0gIiBBTkQgZmlsdGVyX2Zyb250ZW5kICA9ID8gICI7CiAgICAgICAgICAgICRwYXJtc1tdID0gJGZpbHRlcl9mcm9udGVuZDsKICAgICAgICB9CiAgICAgICAgaWYgKCRmaWx0ZXJfYWRtaW4pIHsKICAgICAgICAgICAgJHF1ZXJ5IC49ICIgQU5EIGZpbHRlcl9hZG1pbiAgPSA/ICAiOwogICAgICAgICAgICAkcGFybXNbXSA9ICRmaWx0ZXJfYWRtaW47CiAgICAgICAgfQogICAgICAgICRxdWVyeSAuPSAiICBPUkRFUiBCWSBwb3NpdGlvbiI7CiAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5HZXRBbGwoJHF1ZXJ5LCAkcGFybXMpOwogICAgICAgIHJldHVybiAkZGJyZXN1bHQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZmllbGRfdmFsKCRtb2QsICRpdGVtX2lkLCAkZmllbGRfYWxpYXMpIHsKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgdmFsdWUgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCAnOwogICAgICAgICRxdWVyeSAuPSAiIFdIRVJFICBpdGVtX2lkID0gPyBBTkQgZmllbGRkZWZfaWQgPSA/IjsKICAgICAgICAkdmFsdWUgPSAkZGItPkdldE9uZSgkcXVlcnksICRwYXJtcyk7CiAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkYXRhCiAgICAgKiBAcmV0dXJuIHRpbWVzdGFtcCAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwcm9jZXNzX2ZpbHRlcl9kYXRlKCRkYXRlKSB7CiAgICAgICAgJGRhdGVfZnJvbSA9ICcnOwogICAgICAgIHN3aXRjaCAoc3RydG9sb3dlcigkZGF0ZSkpIHsKICAgICAgICAgICAgY2FzZSAibm93IjoKICAgICAgICAgICAgICAgICRkYXRlX2Zyb20gPSB0aW1lKCk7CiAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICRkYXRlX2FycmF5ID0gZXhwbG9kZSgnOicsICRkYXRlKTsKICAgICAgICAgICAgICAgIGlmIChjb3VudCgkZGF0ZV9hcnJheSkgPT0gMikgewogICAgICAgICAgICAgICAgICAgICRkYXRlX3RpbWUgPSBzdHJ0b3RpbWUoIisiIC4gJGRhdGVfYXJyYXlbMF0gLiAiIGRheSIpOwogICAgICAgICAgICAgICAgICAgICRkYXRlX2Zyb20gPSBta3RpbWUoJGRhdGVfYXJyYXlbMV0sIDAsIDAsIGRhdGUoIm0iLCAkZGF0ZV90aW1lKSwgZGF0ZSgiZCIsICRkYXRlX3RpbWUpLCBkYXRlKCJZIiwgJGRhdGVfdGltZSkpOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKGNvdW50KCRkYXRlX2FycmF5KSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgJGRhdGVfZnJvbSA9IHN0cnRvdGltZSgiKyIgLiAkZGF0ZV9hcnJheVswXSAuICIgaG91cnMiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGRhdGVfZnJvbTsKICAgIH0KCiAgICAvKioKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkYXRhCiAgICAgKiBAcmV0dXJuIHRpbWVzdGFtcCAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwcm9jZXNzX2ZpbHRlcl9kYXRlX3JlY3Vyc2l2ZSgkZGF0ZSkgewogICAgICAgICRkYXRlX2Zyb20gPSAnJzsKICAgICAgICBzd2l0Y2ggKHN0cnRvbG93ZXIoJGRhdGUpKSB7CiAgICAgICAgICAgIGNhc2UgIm5vdyI6CiAgICAgICAgICAgICAgICAkZGF0ZV9mcm9tID0gImUudmFsdWUgPSA/IEFORCBkYXRlX2Zvcm1hdChjLml0ZW1fZGF0ZSwnJUg6JWk6JXMnKSA+ID8iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAkZGF0ZV9hcnJheSA9IGV4cGxvZGUoJzonLCAkZGF0ZSk7CiAgICAgICAgICAgICAgICBpZiAoY291bnQoJGRhdGVfYXJyYXkpID09IDIpIHsKICAgICAgICAgICAgICAgICAgICAkZGF0ZV90aW1lID0gc3RydG90aW1lKCIrIiAuICRkYXRlX2FycmF5WzBdIC4gIiBkYXkiKTsKICAgICAgICAgICAgICAgICAgICAkZGF0ZV9mcm9tID0gbWt0aW1lKCRkYXRlX2FycmF5WzFdLCAwLCAwLCBkYXRlKCJtIiwgJGRhdGVfdGltZSksIGRhdGUoImQiLCAkZGF0ZV90aW1lKSwgZGF0ZSgiWSIsICRkYXRlX3RpbWUpKTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmIChjb3VudCgkZGF0ZV9hcnJheSkgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICRkYXRlX2Zyb20gPSBzdHJ0b3RpbWUoIisiIC4gJGRhdGVfYXJyYXlbMF0gLiAiIGhvdXJzIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRkYXRlX2Zyb207CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgJF9jYXRlZ29yaWVzID0gYXJyYXkoKTsKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9jYXRlZ29yeSgkbW9kLCAkY2F0ZWdvcnlfaWQpIHsKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgIGlmICghaXNTZXQoc2VsZjo6JF9jYXRlZ29yaWVzWyRjYXRlZ29yeV9pZF0pKSB7CiAgICAgICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlXyIgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICJfY2F0ZWdvcmllcyBXSEVSRSBjYXRlZ29yeV9pZCA9ID8iOwogICAgICAgICAgICAkY2F0ZWdvcnkgPSAkZGItPkdldFJvdygkcXVlcnksIGFycmF5KCRjYXRlZ29yeV9pZCkpOwogICAgICAgICAgICBzZWxmOjokX2NhdGVnb3JpZXNbJGNhdGVnb3J5WyJjYXRlZ29yeV9pZCJdXSA9ICRjYXRlZ29yeTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjokX2NhdGVnb3JpZXNbJGNhdGVnb3J5X2lkXTsKICAgIH0KCiAgICAvKioKICAgICAqIGdldCBjYXRlZ29yeSBsaXN0CiAgICAgKiBAcGFyYW0gb2JqZWN0ICRtb2QKICAgICAqIEByZXR1cm4gYXJyYXkgCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2NhdGVnb3J5X2xpc3QoJG1vZCwgJHdoZXJlID0gYXJyYXkoKSwgJHBhcmFtYXJyYXkgPSBhcnJheSgpLCAkZmllbGQgPSAnbG9uZ19uYW1lJykgewogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgJGNhdGVnb3J5bGlzdCA9IGFycmF5KCk7CgogICAgICAgICRjYXRlZ29yeWxpc3RbZ2VuZXJhdG9yKCktPkxhbmcoJ2FsbGNhdGVnb3JpZXMnKV0gPSAnJzsKCiAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfIiAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gIl9jYXRlZ29yaWVzICI7CgogICAgICAgIGlmIChlbXB0eSgkd2hlcmUpID09IGZhbHNlKSB7CiAgICAgICAgICAgICRxdWVyeSA9ICRxdWVyeSAuICcgV0hFUkUgJyAuIGltcGxvZGUoJyBBTkQgJywgJHdoZXJlKTsKICAgICAgICB9CgogICAgICAgICRxdWVyeSAuPSIgT1JERVIgQlkgaGllcmFyY2h5X3Bvc2l0aW9uIjsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkcGFyYW1hcnJheSk7CiAgICAgICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAgICAgICAgIGlmICgkZmllbGQgPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRjYXRlZ29yeWxpc3RbXSA9ICRyb3c7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkY2F0ZWdvcnlsaXN0WyRyb3dbJGZpZWxkXV0gPSAkcm93WyRmaWVsZF07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRjYXRlZ29yeWxpc3Q7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfY2F0ZWdvcmllcygkbW9kLCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQ9LTEpIHsKCiAgICAgICAgJGdDbXMgPSBjbXNtcygpOwogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgJGRlcHRoID0gMTsKCi8vIHNvcnQgb3JkZXIKICAgICAgICAkc29ydG9yZGVyID0gJ0FTQyc7CiAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3NvcnRvcmRlciddKSkgewogICAgICAgICAgICBzd2l0Y2ggKHN0cnRvbG93ZXIoJHBhcmFtc1snc29ydG9yZGVyJ10pKSB7CiAgICAgICAgICAgICAgICBjYXNlICdhc2MnOgogICAgICAgICAgICAgICAgY2FzZSAnZGVzYyc6CiAgICAgICAgICAgICAgICAgICAgJHNvcnRvcmRlciA9ICRwYXJhbXNbJ3NvcnRvcmRlciddOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkaW5saW5lID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZGlzcGxheV9pbmxpbmUnLCBmYWxzZSk7CgogICAgICAgIGlmIChpc3NldCgkcGFyYW1zWydpbmxpbmUnXSkpIHsKICAgICAgICAgICAgJGlubGluZSA9ICRwYXJhbXNbJ2lubGluZSddOwogICAgICAgIH0KCiAgICAgICAgJGRlZmF1bHRfZGV0YWlscGFnZSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fY2F0ZWdvcnlfcmV0dXJuaWQnLCAnJyk7CiAgICAgICAgJGRldGFpbHBhZ2UgPSAkZGVmYXVsdF9kZXRhaWxwYWdlOwogICAgICAgICRkZXRhaWxwYWdlID0gZXh0ZW5kZWRfdG9vbHNfb3B0czo6ZGV0YWlscGFnZSgkcGFyYW1zLCAkZGV0YWlscGFnZSk7CgogICAgICAgICRxdWVyeSA9ICcKCQlTRUxFQ1QgY2F0ZWdvcnlfaWQsIGNhdGVnb3J5X25hbWUsIGhpZXJhcmNoeSwgaGllcmFyY2h5X3Bvc2l0aW9uLCBsb25nX25hbWUsZXh0cmEsIGV4dHJhMiAKCQlGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllcyAKCQlXSEVSRSAxIAoJJzsKICAgICAgICBpZiAoaXNzZXQoJHBhcmFtc1snY2F0ZWdvcnknXSkgJiYgJHBhcmFtc1snY2F0ZWdvcnknXSAhPSAnJykgewogICAgICAgICAgICAkY2F0ZWdvcmllcyA9IGV4cGxvZGUoJywnLCAkcGFyYW1zWydjYXRlZ29yeSddKTsKICAgICAgICAgICAgJHF1ZXJ5IC49ICcgQU5EICgnOwogICAgICAgICAgICAkY291bnQgPSAwOwogICAgICAgICAgICBmb3JlYWNoICgkY2F0ZWdvcmllcyBhcyAkb25lY2F0KSB7CiAgICAgICAgICAgICAgICBpZiAoJGNvdW50ID4gMCkgewogICAgICAgICAgICAgICAgICAgICRxdWVyeSAuPSAnIE9SICc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoc3RycG9zKCRvbmVjYXQsICd8JykgIT09IEZBTFNFIHx8IHN0cnBvcygkb25lY2F0LCAnKicpICE9PSBGQUxTRSkKICAgICAgICAgICAgICAgICAgICAkcXVlcnkgLj0gInVwcGVyKGxvbmdfbmFtZSkgbGlrZSB1cHBlcignIiAuIHRyaW0oc3RyX3JlcGxhY2UoJyonLCAnJScsICRvbmVjYXQpKSAuICInKSI7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5IC49ICJjYXRlZ29yeV9uYW1lID0gJyIgLiB0cmltKCRvbmVjYXQpIC4gIiciOwogICAgICAgICAgICAgICAgJGNvdW50Kys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHF1ZXJ5IC49ICcpICc7CiAgICAgICAgfQogICAgICAgICRxdWVyeSAuPSAnIE9SREVSIGJ5IGhpZXJhcmNoeV9wb3NpdGlvbiAnIC4gJHNvcnRvcmRlcjsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgICAgICAkcm93Y291bnRlciA9IDA7CgogICAgICAgICRmaWVsZGVmcyA9ICcnOwogICAgICAgIHsKICAgICAgICAgICAgJHRtcCA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2ZpZWxkcygkbW9kLCBmYWxzZSwgJ2NhdGVnb3JpZXMnKTsKCiAgICAgICAgICAgIGlmIChpc19hcnJheSgkdG1wKSkgewogICAgICAgICAgICAgICAgJGZpZWxkZGVmcyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkdG1wKTsgJGkrKykgewogICAgICAgICAgICAgICAgICAgICRvYmogPSAkdG1wWyRpXTsKICAgICAgICAgICAgICAgICAgICAkZmllbGRkZWZzWyRvYmotPmFsaWFzXSA9ICRvYmo7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewogICAgICAgICAgICAkcTIgPSAiU0VMRUNUIENPVU5UKGl0ZW1faWQpIGFzIGNudCBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlXyIgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICJfaXRlbSBXSEVSRSBjYXRlZ29yeV9pZD0/IjsKICAgICAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3Nob3dhcmNoaXZlJ10pICYmICRwYXJhbXNbJ3Nob3dhcmNoaXZlJ10gPT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgJHEyIC49ICIgQU5EIChpdGVtX2RhdGUgPCAiIC4gJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpIC4gIikgIjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkcTIgLj0gJyBBTkQgYWN0aXZlID0gXCcxXCcnOwoKICAgICAgICAgICAgJGRicmVzMiA9ICRkYi0+RXhlY3V0ZSgkcTIsIGFycmF5KCRyb3dbJ2NhdGVnb3J5X2lkJ10pKTsKICAgICAgICAgICAgJGNvdW50ID0gJGRicmVzMi0+RmV0Y2hSb3coKTsKICAgICAgICAgICAgJHJvd1snaW5kZXgnXSA9ICRyb3djb3VudGVyKys7CiAgICAgICAgICAgICRyb3dbJ2NvdW50J10gPSAkY291bnRbJ2NudCddOwogICAgICAgICAgICAkcm93WydwcmV2ZGVwdGgnXSA9ICRkZXB0aDsKICAgICAgICAgICAgJGRlcHRoID0gY291bnQoZXhwbG9kZSgnXC4nLCAkcm93WydoaWVyYXJjaHlfcG9zaXRpb24nXSkpOwogICAgICAgICAgICAkcm93WydkZXB0aCddID0gJGRlcHRoOwoKICAgICAgICAgICAgJHByZXR0eXVybCA9IGdlbmVyYXRvcl90b29sczo6Z2V0X3ByZXR0eV91cmwoJHRoaXMsIGdlbmVyYXRvcl90b29sczo6Z2V0X3ByZWZpeCgkbW9kKSAuICcvYycsICRyb3dbJ2NhdGVnb3J5X2lkJ10sICRyb3dbJ2NhdGVnb3J5X2FsaWFzJ10sICgkZGVmYXVsdF9kZXRhaWxwYWdlID09IC0xICYmICFpc1NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pID8gJGRldGFpbHBhZ2UgOiAnJyksICRjYXRlZ29yeXRlbXBsYXRlKTsKICAgICAgICAgICAgJHJvd1sndXJsJ10gPSAkbW9kLT5DcmVhdGVGcm9udGVuZExpbmsoJGlkLCAkcmV0dXJuaWQsICdkZWZhdWx0JywgJycsIGFycmF5KCdjYXRlZ29yeV9pZCcgPT4gJHJvd1snY2F0ZWdvcnlfaWQnXSwgJ2NhdGVnb3J5dGVtcGxhdGUnID0+ICRjYXRlZ29yeXRlbXBsYXRlKSwgJycsIHRydWUsIGlzU2V0KCRwYXJhbXNbImlubGluZSJdKSA/IDEgOiAwLCAnJywgZmFsc2UsICRwcmV0dHl1cmwpOwoKICAgICAgICAgICAgLy8gYWRkIGN1c3RvbSBmaWVsZHMKICAgICAgICAgICAgJGZpZWxkZGVmcyA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2Nvc3R1bV9maWVsZF9kZWYoJG1vZCwgJHJvd1snY2F0ZWdvcnlfaWQnXSwgdHJ1ZSwgJ2FsaWFzJywnY2F0ZWdvcmllcycpOwogICAgICAgICAgICAkZmllbGRzID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yZWFjaCAoJGZpZWxkZGVmcyBhcyAkb25lZGVmKSB7CiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJG9uZWRlZlsiYWxpYXMiXSkgPT0gZmFsc2UgJiYgaW5fYXJyYXkoJG9uZWRlZlsiYWxpYXMiXSwgZ2VuZXJhdG9yX3Rvb2xzOjokZmllbGRzX2Jsb2NrbGlzdCkgPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAkcm93WyRvbmVkZWZbImFsaWFzIl1dID0gJG9uZWRlZlsidmFsdWUiXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkcm93WydmaWVsZHMnXSA9ICRmaWVsZGRlZnM7CgoKICAgICAgICAgICAgJGl0ZW1zW10gPSAkcm93OwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGl0ZW1zOwogICAgfQoKICAgIC8qKgogICAgICogZ2V0IGl0ZW0KICAgICAqIEBwYXJhbSBvYmplY3QgJG1vZAogICAgICogQHBhcmFtIGludCAkaXRlbV9pZAogICAgICogQHJldHVybiBhcnJheSAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfaXRlbXMoJG1vZCkgewogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgJHNvcnRvcmRlciA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ3NvcnRvcmRlcl8nIC4gJG1vZC0+R2V0UHJlZmVyZW5jZSgnbW9kZScpLCAnZGVzYycpOwogICAgICAgICRzb3J0YnkgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdzb3J0YnlfJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ21vZGUnKSwgJ3Bvc2l0aW9uJyk7CiAgICAgICAgJGl0ZW1zID0gJGRiLT5HZXRBbGwoJ1NFTEVDVCAqIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtIE9SREVSIEJZICcgLiAkc29ydG9yZGVyIC4gJyAnIC4gJHNvcnRieSwgYXJyYXkoJGl0ZW1faWQpKTsKICAgICAgICByZXR1cm4gJGl0ZW1zOwogICAgfQoKICAgIC8qKgogICAgICogZ2V0IGl0ZW0KICAgICAqIEBwYXJhbSBvYmplY3QgJG1vZAogICAgICogQHBhcmFtIGludCAkaXRlbV9pZAogICAgICogQHJldHVybiBhcnJheSAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfaXRlbSgkbW9kLCAkaXRlbV9pZCkgewogICAgICAgICRkYXRhID0gY21zX3V0aWxzOjpnZXRfYXBwX2RhdGEoJG1vZC0+R2V0TmFtZSgpIC4gX19GVU5DVElPTl9fIC4gJGl0ZW1faWQpOwogICAgICAgIGlmICgkZGF0YSkKICAgICAgICAgICAgcmV0dXJuICRkYXRhOwoKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgICR2YWx1ZSA9ICRkYi0+R2V0Um93KCdTRUxFQ1QgKiBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbSBXSEVSRSBpdGVtX2lkID0gPycsIGFycmF5KCRpdGVtX2lkKSk7CiAgICAgICAgY21zX3V0aWxzOjpzZXRfYXBwX2RhdGEoJG1vZC0+R2V0TmFtZSgpIC4gX19GVU5DVElPTl9fIC4gJGl0ZW1faWQsICR2YWx1ZSk7CgogICAgICAgIHJldHVybiAkdmFsdWU7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfc2VhcmNoYWJsZV9kYXRlX2VuZCgpIHsKICAgICAgICByZXR1cm4gc2VsZjo6JHNlYXJjaF9kYXRlX2VuZDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9zZWFyY2hhYmxlX3RleHQoJG1vZCwgJGl0ZW1faWQpIHsKCiAgICAgICAgJHJlc3VsdHMgPSBhcnJheSgpOwoKICAgICAgICAkaXRlbSA9IHNlbGY6OmdldF9pdGVtKCRtb2QsICRpdGVtX2lkKTsKCiAgICAgICAgaWYgKCRpdGVtWydhY3RpdmUnXSAhPSAxKQogICAgICAgICAgICByZXR1cm4gYXJyYXkoKTsKCiAgICAgICAgJHJlc3VsdHNbXSA9ICRpdGVtWyd0aXRsZSddOwogICAgICAgICRyZXN1bHRzW10gPSAkaXRlbVsnYWxpYXMnXTsKCi8vIGRhdGUgZW5kIGZvciBzZWFyY2ggcmVzdWx0cwogICAgICAgIHNlbGY6OiRzZWFyY2hfZGF0ZV9lbmQgPSBudWxsOwogICAgICAgIGlmICgkbW9kLT5HZXRQcmVmZXJlbmNlKCdzZWFyY2hfZGF0ZV9lbmQnKSkgewogICAgICAgICAgICAkaXRlbSA9IHNlbGY6OmdldF9pdGVtKCRtb2QsICRpdGVtX2lkKTsKICAgICAgICAgICAgc2VsZjo6JHNlYXJjaF9kYXRlX2VuZCA9IHN0cnRvdGltZSgkaXRlbVsiaXRlbV9kYXRlX2VuZCJdKTsKICAgICAgICB9CgogICAgICAgICRkZWZzID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfY29zdHVtX2ZpZWxkX2RlZigkbW9kLCAkaXRlbV9pZCk7CgoKICAgICAgICBmb3JlYWNoICgkZGVmcyBhcyAkb25lZGVmKSB7CgovLyBza2lwCiAgICAgICAgICAgIGlmICghJG9uZWRlZlsic2VhcmNoYWJsZSJdKQogICAgICAgICAgICAgICAgY29udGludWU7CgovL3NlcmFjaGFibGUgLSB0ZXh0Ym94LCB0ZXh0YXJlYSwgZHJvcGRvd24KICAgICAgICAgICAgc3dpdGNoICgkb25lZGVmWyJ0eXBlIl0pIHsKICAgICAgICAgICAgICAgIGNhc2UgJ3RleHRib3gnOgogICAgICAgICAgICAgICAgY2FzZSAndGV4dGFyZWEnOgogICAgICAgICAgICAgICAgY2FzZSAnZHJvcGRvd24nOgogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkb25lZGVmWyJ2YWx1ZSJdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0c1tdID0gJG9uZWRlZlsidmFsdWUiXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGltcGxvZGUoJyAnLCAkcmVzdWx0cyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZWFyY2hfcmVpbmRleCgkbW9kLCAkbW9kdWxlKSB7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBpdGVtX2lkIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtIHdoZXJlIGFjdGl2ZSA9IDEnOwogICAgICAgICRpdGVtcyA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5LCBhcnJheSgpKTsKCiAgICAgICAgaWYgKCEkaXRlbXMpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgZm9yZWFjaCAoJGl0ZW1zIGFzICRpdGVtKSB7CiAgICAgICAgICAgICRtb2R1bGUtPkFkZFdvcmRzKCRtb2QtPkdldE5hbWUoKSwgJGl0ZW1bIml0ZW1faWQiXSwgJ2l0ZW0nLCBzZWxmOjpnZXRfc2VhcmNoYWJsZV90ZXh0KCRtb2QsICRpdGVtWyJpdGVtX2lkIl0pLCBzZWxmOjpnZXRfc2VhcmNoYWJsZV9kYXRlX2VuZCgpKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfc2VhcmNoX3Jlc3VsdCgkbW9kLCAkcmV0dXJuaWQsICRpdGVtX2lkLCAkYXR0ciA9ICcnKSB7CiAgICAgICAgJHJlc3VsdCA9IGFycmF5KCk7CgogICAgICAgIGlmICgkYXR0ciAhPSAnaXRlbScpCiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwoKICAgICAgICAkZGV0YWlsdGVtcGxhdGUgPSAnJzsKICAgICAgICBpZiAoaXNTZXQoJHBhcmFtc1siZGV0YWlsdGVtcGxhdGUiXSkpCiAgICAgICAgICAgICRkZXRhaWx0ZW1wYWx0ZSA9ICRwYXJhbXNbImRldGFpbHRlbXBsYXRlIl07CgogICAgICAgICRpbmxpbmUgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdkaXNwbGF5X2lubGluZScsIDApOwogICAgICAgIGlmIChpc1NldCgkcGFyYW1zWyJpbmxpbmUiXSkpCiAgICAgICAgICAgICRkZXRhaWx0ZW1wYWx0ZSA9ICRwYXJhbXNbImlubGluZSJdOwoKICAgICAgICAvKiBpZiAoJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kZXRhaWxfcmV0dXJuaWQnLCAwKSkgewogICAgICAgICAgJHJldHVybmlkID0gJyc7CiAgICAgICAgICB9ICovCgoKICAgICAgICAkcm93ID0gc2VsZjo6Z2V0X2l0ZW0oJG1vZCwgJGl0ZW1faWQpOwogICAgICAgIGlmICgkcm93KSB7CgovLzAgcG9zaXRpb24gaXMgdGhlIHByZWZpeCBkaXNwbGF5ZWQgaW4gdGhlIGxpc3QgcmVzdWx0cy4KICAgICAgICAgICAgJHJlc3VsdFswXSA9ICRtb2QtPkdldEZyaWVuZGx5TmFtZSgpOwoKLy8xIHBvc2l0aW9uIGlzIHRoZSB0aXRsZQogICAgICAgICAgICAkcmVzdWx0WzFdID0gJHJvd1sndGl0bGUnXTsKCi8vMiBwb3NpdGlvbiBpcyB0aGUgVVJMIHRvIHRoZSB0aXRsZS4KCiAgICAgICAgICAgIGlmIChlbXB0eSgkcm93WyJ1cmwiXSkgPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRwcmV0dHl1cmwgPSAkcm93WyJ1cmwiXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRwcmV0dHl1cmwgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9wcmV0dHlfdXJsKCRtb2QsIGdlbmVyYXRvcl90b29sczo6Z2V0X3ByZWZpeCgkbW9kKSwgJHJvd1snaXRlbV9pZCddLCAkcm93WydhbGlhcyddLCBpc1NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pID8gJGRldGFpbHBhZ2UgOiAkcmV0dXJuaWQsICRkZXRhaWx0ZW1wbGF0ZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRyZXN1bHRbMl0gPSAkbW9kLT5DcmVhdGVGcm9udGVuZExpbmsoJ2NudG50MDEnLCAkcmV0dXJuaWQsICdkZXRhaWwnLCAnJywgYXJyYXkoJ2l0ZW1faWQnID0+ICRyb3dbJ2l0ZW1faWQnXSwgJ2RldGFpbHRlbXBsYXRlJyA9PiAkZGV0YWlsdGVtcGxhdGUpLCAnJywgdHJ1ZSwgJGlubGluZSwgJycsIGZhbHNlLCAkcHJldHR5dXJsKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcm91dGUoJG1vZCwgJGZpbGVuYW1lKSB7CiAgICAgICAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwogICAgICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKICAgICAgICAkcGF0aGluZm8gPSBwYXRoaW5mbygkZmlsZW5hbWUpOwogICAgICAgICRmaWxhbmVhbSA9ICRwYXRoaW5mb1siYmFzZW5hbWUiXTsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ2dlbmVyYXRvcl90ZW1wbGF0ZXMnLCBjbXNfam9pbl9wYXRoKCRjb25maWdbInJvb3RfcGF0aCJdLCAnbW9kdWxlcycsICdNb2R1bGVHZW5lcmF0b3InLCAnTW9kdWxlTGliJywgJ3RlbXBsYXRlcycpKTsKICAgICAgICByZXR1cm4gY21zX2pvaW5fcGF0aCgkY29uZmlnWyJyb290X3BhdGgiXSwgJ21vZHVsZXMnLCAnTW9kdWxlR2VuZXJhdG9yJywgJ01vZHVsZUxpYicsICRwYXRoaW5mb1siYmFzZW5hbWUiXSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZXRhaWxwYWdlKCYkcGFyYW1zLCAkZGV0YWlscGFnZSkgewoKICAgICAgICAkZ2NtcyA9IGNtc21zKCk7CiAgICAgICAgcmV0dXJuICRkZXRhaWxwYWdlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlX3BhcmVudF9kcm9wZG93bigkbW9kLCAkaWQsICRjYXRpZCA9IC0xLCAkc2VsZWN0ZWR2YWx1ZSA9IC0xKSB7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCiAgICAgICAgJGxvbmduYW1lID0gJyc7CgogICAgICAgICRpdGVtc1snKCcgLiBnZW5lcmF0b3IoKS0+TGFuZygnbm9uZScpIC4gJyknXSA9ICctMSc7CgogICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgaGllcmFyY2h5LCBsb25nX25hbWUgRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV8iIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAiX2NhdGVnb3JpZXMgV0hFUkUgY2F0ZWdvcnlfaWQgPSA/IjsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkY2F0aWQpKTsKICAgICAgICAKICAgICAgICB3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsKICAgICAgICAgICAgJGxvbmduYW1lID0gJHJvd1snaGllcmFyY2h5J10gLiAnJSc7CiAgICAgICAgfQogICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgY2F0ZWdvcnlfaWQsIGNhdGVnb3J5X25hbWUsIGhpZXJhcmNoeSwgbG9uZ19uYW1lIEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfIiAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gIl9jYXRlZ29yaWVzIFdIRVJFIGhpZXJhcmNoeSBub3QgbGlrZSA/IE9SREVSIGJ5IGhpZXJhcmNoeSI7CiAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxvbmduYW1lKSk7CiAgICAgICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAgICAgICAgICRpdGVtc1skcm93Wydsb25nX25hbWUnXV0gPSAkcm93WydjYXRlZ29yeV9pZCddOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdwYXJlbnQnLCAkaXRlbXMsIC0xLCAkc2VsZWN0ZWR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiAgCiAgICAgKiBAcGFyYW0gb2JqZWN0ICRtb2QgCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdXBkYXRlX2hpZXJhcmNoeV9wb3NpdGlvbnMoJG1vZCkgewogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CgogICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgY2F0ZWdvcnlfaWQsIGNhdGVnb3J5X25hbWUscGFyZW50X2lkIEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfIiAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gIl9jYXRlZ29yaWVzIE9SREVSIEJZIHBvc2l0aW9uLCBjYXRlZ29yeV9pZCI7CiAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAgICAgJGNvdW50ZXIgPSBhcnJheSgpOwogICAgICAgIHdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewogICAgICAgICAgICAkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24gPSAiIjsKICAgICAgICAgICAgJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uMiA9ICIiOwogICAgICAgICAgICAkcG9zaXRpb24gPSAiIjsKICAgICAgICAgICAgJGN1cnJlbnRfbG9uZ19uYW1lID0gIiI7CiAgICAgICAgICAgICRjb250ZW50X2lkID0gJHJvd1snY2F0ZWdvcnlfaWQnXTsKICAgICAgICAgICAgJGN1cnJlbnRfcGFyZW50X2lkID0gJHJvd1snY2F0ZWdvcnlfaWQnXTsKICAgICAgICAgICAgJGNvdW50ID0gMDsKICAgICAgICAgICAgJGNvdW50ZXJbJHJvd1sncGFyZW50X2lkJ11dKys7CiAgICAgICAgICAgICRwb3NpdGlvbiA9ICRjb3VudGVyWyRyb3dbJ3BhcmVudF9pZCddXTsKCiAgICAgICAgICAgIHdoaWxlICgkY3VycmVudF9wYXJlbnRfaWQgPiAtMSkgewogICAgICAgICAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCBjYXRlZ29yeV9pZCwgY2F0ZWdvcnlfbmFtZSwgcGFyZW50X2lkLCBwb3NpdGlvbiBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlXyIgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICJfY2F0ZWdvcmllcyBXSEVSRSBjYXRlZ29yeV9pZCA9ID8iOwogICAgICAgICAgICAgICAgJHJvdzIgPSAkZGItPkdldFJvdygkcXVlcnksIGFycmF5KCRjdXJyZW50X3BhcmVudF9pZCkpOwogICAgICAgICAgICAgICAgaWYgKCRyb3cyKSB7CiAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uID0gc3RyX3BhZCgkcm93MlsnY2F0ZWdvcnlfaWQnXSwgNSwgJzAnLCBTVFJfUEFEX0xFRlQpIC4gIi4iIC4gJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uOwogICAgICAgICAgICAgICAgICAgICRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbjIgPSBzdHJfcGFkKCRyb3cyWydwb3NpdGlvbiddLCA1LCAnMCcsIFNUUl9QQURfTEVGVCkgLiAiLiIgLiAkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24yOwogICAgICAgICAgICAgICAgICAgICRjdXJyZW50X2xvbmdfbmFtZSA9ICRyb3cyWydjYXRlZ29yeV9uYW1lJ10gLiAnIHwgJyAuICRjdXJyZW50X2xvbmdfbmFtZTsKICAgICAgICAgICAgICAgICAgICAkY3VycmVudF9wYXJlbnRfaWQgPSAkcm93MlsncGFyZW50X2lkJ107CiAgICAgICAgICAgICAgICAgICAgJGNvdW50Kys7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRjdXJyZW50X3BhcmVudF9pZCA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCgoKCiAgICAgICAgICAgIGlmIChzdHJsZW4oJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uKSA+IDApIHsKICAgICAgICAgICAgICAgICRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbiA9IHN1YnN0cigkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24sIDAsIHN0cmxlbigkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24pIC0gMSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChzdHJsZW4oJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uMikgPiAwKSB7CiAgICAgICAgICAgICAgICAkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24yID0gc3Vic3RyKCRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbjIsIDAsIHN0cmxlbigkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24yKSAtIDEpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoc3RybGVuKCRjdXJyZW50X2xvbmdfbmFtZSkgPiAwKSB7CiAgICAgICAgICAgICAgICAkY3VycmVudF9sb25nX25hbWUgPSBzdWJzdHIoJGN1cnJlbnRfbG9uZ19uYW1lLCAwLCBzdHJsZW4oJGN1cnJlbnRfbG9uZ19uYW1lKSAtIDMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcXVlcnkgPSAiVVBEQVRFICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlXyIgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICJfY2F0ZWdvcmllcyBTRVQgaGllcmFyY2h5ID0gPywgcG9zaXRpb24gPSA/LCBoaWVyYXJjaHlfcG9zaXRpb24gPSA/LCBsb25nX25hbWUgPSA/IFdIRVJFIGNhdGVnb3J5X2lkID0gPyI7CiAgICAgICAgICAgIAogICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24sICRwb3NpdGlvbiwgJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uMiwgJGN1cnJlbnRfbG9uZ19uYW1lLCAkY29udGVudF9pZCkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEhhbmRsZSB1cGxvYWQKICAgICAqIEBwYXJhbSBtaXhlZCAkaXRlbWlkIFRoZSBpdGVtIElELCB1c2VkIHRvIGZvcm0gdGhlIHVwbG9hZCBkaXJlY3RvcnkgbmFtZQogICAgICogQHBhcmFtIHN0cmluZyAkZmllbGRuYW1lIFRoZSB1cGxvYWQgZmllbGQgbmFtZSwgZm9yIGV4YW1wbGUsIG0xX2N1c3RvbWZpZWxkXzEKICAgICAqIEBwYXJhbSBzdHJpbmcgJiRlcnJvciBIb2xkcyBhbnkgZXJyb3JzIHRoYXQgbWF5IG9jY3VyCiAgICAgKiBAcGFyYW0gYXJyYXkgJGFsbG93IEFsbG93ZWQgZmlsZSBleHRlbnNpb25zCiAgICAgKiBAcmV0dXJuIGJvb2x8c3RyaW5nIFJldHVybnMgZmlsZW5hbWUgb24gc3VjY2Vzc2Z1bCB1cGxvYWQgb3IgZmFsc2Ugb24gZmFpbHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGhhbmRsZV91cGxvYWQoJG1vZCwgJGl0ZW1pZCwgJGZpZWxkbmFtZSwgJiRlcnJvciwgJGFsbG93ID0gYXJyYXkoKSwgJHJvdyA9IGFycmF5KCkpIHsKCgogICAgICAgICRhbGxvdyA9ICghZW1wdHkoJGFsbG93KSA/ICRhbGxvdyA6IGFycmF5KCdqcGcnLCAnZ2lmJywgJ3BuZycpKTsKCiAgICAgICAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwogICAgICAgICRwID0gY21zX2pvaW5fcGF0aCgkY29uZmlnWyd1cGxvYWRzX3BhdGgnXSwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkpOwoKICAgICAgICBpZiAoIWlzX2RpcigkcCkpIHsKICAgICAgICAgICAgJHJlcyA9IEBta2RpcigkcCk7CgogICAgICAgICAgICBpZiAoJHJlcyA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRlcnJvciA9ICRtb2QtPkxhbmcoJ2Vycm9yX21rZGlyJywgJHApOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkcCA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10sICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpLCAnaWQnIC4gJGl0ZW1pZCk7CgogICAgICAgIGlmICghaXNfZGlyKCRwKSkgewogICAgICAgICAgICBpZiAoQG1rZGlyKCRwKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRlcnJvciA9ICRtb2QtPkxhbmcoJ2Vycm9yX21rZGlyJywgJHApOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJF9GSUxFU1skZmllbGRuYW1lXVsnc2l6ZSddID4gJGNvbmZpZ1snbWF4X3VwbG9hZF9zaXplJ10pIHsKICAgICAgICAgICAgJGVycm9yID0gJG1vZC0+TGFuZygnZXJyb3JfZmlsZXNpemUnKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJGZpbGVuYW1lID0gYmFzZW5hbWUoJF9GSUxFU1skZmllbGRuYW1lXVsnbmFtZSddKTsKICAgICAgICAkZGVzdCA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10sICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpLCAnaWQnIC4gJGl0ZW1pZCwgJGZpbGVuYW1lKTsKICAgICAgICAkZXh0ID0gc3RydG9sb3dlcihzdWJzdHIoc3RycmNocigkZmlsZW5hbWUsICcuJyksIDEpKTsKCiAgICAgICAgaWYgKCFpbl9hcnJheSgkZXh0LCAkYWxsb3cpKSB7CiAgICAgICAgICAgICRlcnJvciA9ICRtb2QtPkxhbmcoJ2Vycm9yX2ludmFsaWRmaWxldHlwZScpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoQGNtc19tb3ZlX3VwbG9hZGVkX2ZpbGUoJF9GSUxFU1skZmllbGRuYW1lXVsndG1wX25hbWUnXSwgJGRlc3QpID09PSBmYWxzZSkgewogICAgICAgICAgICAkZXJyb3IgPSAkbW9kLT5MYW5nKCdlcnJvcl9tb3ZlZmlsZScsICRkZXN0KTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRmaWxlbmFtZTsKICAgIH0KCiAgICAvKioKICAgICAqCiAgICAgKiBAcGFyYW0gdHlwZSAkaXRlbV9pZAogICAgICogQHJldHVybiBzdHJpbmcgCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2Nvc3R1bV9maWVsZF9kZWYoJG1vZCwgJGl0ZW1faWQsICRmcm9udGVuZCA9IGZhbHNlLCAka2V5ID0gJ2FsaWFzJywgJHNlY3Rpb24gPSAnaXRlbXMnKSB7CiAgICAgICAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CgogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgQi5maWVsZGRlZl9pZCxCLm5hbWUsIEIuYWxpYXMsIEEudmFsdWUsIEIudHlwZSwgQi5leHRyYSwgQi5zZWFyY2hhYmxlLCBCLmZyb250ZW5kCgkJRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEEsICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGRkZWYgQgoJCVdIRVJFIEEuZmllbGRkZWZfaWQgPSBCLmZpZWxkZGVmX2lkIEFORCBBLml0ZW1faWQgPSA/ICc7CiAgICAgICAgaWYgKCRmcm9udGVuZCA9PSB0cnVlKSB7CiAgICAgICAgICAgICRxdWVyeSAuPSAnIEFORCBCLmZyb250ZW5kID0gMSAnOwogICAgICAgIH0KCiAgICAgICAgJHBhcm1zID0gYXJyYXkoKTsKICAgICAgICAkcGFybXNbXSA9ICRpdGVtX2lkOwoKICAgICAgICAkcXVlcnkgLj0gJyBBTkQgQi5zZWN0aW9uID0gPyAnOwogICAgICAgICRwYXJtc1tdID0gJHNlY3Rpb247CgogICAgICAgICRxdWVyeSAuPSAnT1JERVIgQlkgQi5wb3NpdGlvbiAnOwogICAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICRwYXJtcyk7CiAgICAgICAgJGZpZWxkZGVmcyA9IGFycmF5KCk7CiAgICAgICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAoJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkpIHsKICAgICAgICAgICAgJGZpZWxkZGVmc1skcm93WyRrZXldXSA9IGFycmF5KAogICAgICAgICAgICAgICAgJ2ZpZWxkZGVmX2lkJyA9PiAkcm93WydmaWVsZGRlZl9pZCddLAogICAgICAgICAgICAgICAgJ25hbWUnID0+ICRyb3dbJ25hbWUnXSwKICAgICAgICAgICAgICAgICdhbGlhcycgPT4gJHJvd1snYWxpYXMnXSwKICAgICAgICAgICAgICAgICd2YWx1ZScgPT4gJHJvd1sndmFsdWUnXSwKICAgICAgICAgICAgICAgICdzZWFyY2hhYmxlJyA9PiAkcm93WydzZWFyY2hhYmxlJ10sCiAgICAgICAgICAgICAgICAnZnJvbnRlbmQnID0+ICRyb3dbJ2Zyb250ZW5kJ10sCiAgICAgICAgICAgICAgICAndHlwZScgPT4gJHJvd1sndHlwZSddCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJHJvd1sndHlwZSddID09ICdzZWxlY3RfZmlsZScpIHsKICAgICAgICAgICAgICAgICRleHRyYV9jb21tYW5kcyA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhKCRyb3dbJ2V4dHJhJ10pOwogICAgICAgICAgICAgICAgJGRpciA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhX2RpcigkZXh0cmFfY29tbWFuZHMpOwogICAgICAgICAgICAgICAgJGZpZWxkZGVmc1skcm93WyRrZXldXVsnZGlyJ10gPSAkY29uZmlnWyd1cGxvYWRzX3VybCddIC4gKCFlbXB0eSgkZGlyKSA/ICcvJyAuICRkaXIgOiAnJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkcm93Wyd0eXBlJ10gPT0gJ3VwbG9hZF9maWxlJykgewogICAgICAgICAgICAgICAgJGZpZWxkZGVmc1skcm93WyRrZXldXVsnZGlyJ10gPSAkY29uZmlnWyd1cGxvYWRzX3VybCddIC4gJy8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnL2lkJyAuICRpdGVtX2lkOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkZmllbGRkZWZzOwogICAgfQoKICAgIC8qKgogICAgICoKICAgICAqIEBwYXJhbSBvYmplY3QgJG1vZHVsZQogICAgICogQHBhcmFtIGJvb2xlYW4gJGZyb250ZW5kCiAgICAgKiBAcmV0dXJuIHR5cGUgCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2ZpZWxkcygkbW9kdWxlLCAkZnJvbnRlbmQgPSB0cnVlLCAkc2VjdGlvbiA9ICdpdGVtcycpIHsKCiAgICAgICAgJHF1ZXJ5YXJyYXkgPSBhcnJheSgpOwogICAgICAgICRwYXJtc2FycmF5ID0gYXJyYXkoKTsKCiAgICAgICAgJHZhbHVlID0gY21zX3V0aWxzOjpnZXRfYXBwX2RhdGEoJG1vZHVsZS0+R2V0TmFtZSgpIC4gX19GVU5DVElPTl9fKTsKICAgICAgICBpZiAoJHZhbHVlKQogICAgICAgICAgICByZXR1cm4gJHZhbHVlOwoKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kdWxlLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGRkZWYnOwoKICAgICAgICAkcXVlcnlhcnJheVtdID0gJyBzZWN0aW9uID0gPyc7CiAgICAgICAgJHBhcm1zYXJyYXlbXSA9ICRzZWN0aW9uOwoKICAgICAgICBpZiAoJGZyb250ZW5kID09IHRydWUpIHsKICAgICAgICAgICAgJHF1ZXJ5YXJyYXlbXSA9ICcgZnJvbnRlbmQgPSA/JzsKICAgICAgICAgICAgJHBhcm1zYXJyYXlbXSA9IDE7CiAgICAgICAgfQovLyBXSEVSRQogICAgICAgICRxdWVyeSAuPSAoIGVtcHR5KCRxdWVyeWFycmF5KSA9PSBmYWxzZSA/ICdXSEVSRSAnIC4gaW1wbG9kZSgnIEFORCAnLCAkcXVlcnlhcnJheSkgOiAnJyApOwoKICAgICAgICAkdmFsdWUgPSAkZGItPkdldEFycmF5KCRxdWVyeSwgJHBhcm1zYXJyYXkpOwogICAgICAgIGNtc191dGlsczo6c2V0X2FwcF9kYXRhKCRtb2R1bGUtPkdldE5hbWUoKSAuIF9fRlVOQ1RJT05fXywgJHZhbHVlKTsKCiAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZpbGVfbG9jYXRpb24oJG1vZHVsZSwgJHJvdykgewoKICAgICAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CiAgICAgICAgJHJlbF9wYXRoID0gJG1vZHVsZS0+X0dldE1vZHVsZUFsaWFzKCkgLiAnL2lkJyAuICRyb3dbJ2l0ZW1faWQnXTsKICAgICAgICBjZ2VfZGlyOjpta2RpcnIoY21zX2pvaW5fcGF0aCgkY29uZmlnWyJ1cGxvYWRzX3BhdGgiXSwgJHJlbF9wYXRoKSk7CiAgICAgICAgJHZhbHVlID0gJGNvbmZpZ1sndXBsb2Fkc191cmwnXSAuICcvJyAuICRyZWxfcGF0aDsKICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZmlsZXBhdGhfbG9jYXRpb24oJG1vZHVsZSwgJHJvdykgewoKICAgICAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CiAgICAgICAgJHJlbF9wYXRoID0gY21zX2pvaW5fcGF0aCgkbW9kdWxlLT5fR2V0TW9kdWxlQWxpYXMoKSwgJ2lkJyAuICRyb3dbJ2l0ZW1faWQnXSk7CiAgICAgICAgY2dlX2Rpcjo6bWtkaXJyKGNtc19qb2luX3BhdGgoJGNvbmZpZ1sidXBsb2Fkc19wYXRoIl0sICRyZWxfcGF0aCkpOwogICAgICAgICR2YWx1ZSA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10sICRyZWxfcGF0aCk7CiAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNoZWNrX3JvdygkbW9kLCAkZmllbGRpZCwgJGZpZWxkdmFsdWUpIHsKCiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICAkc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7CgogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgQS5pdGVtX2lkIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtIEEnOwogICAgICAgICRxdWVyeSAuPSAnIExFRlQgSk9JTiAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQSBPTiBBLml0ZW1faWQgPSBGVkEuaXRlbV9pZCBBTkQgRlZBLmZpZWxkZGVmX2lkID0gPyAnOwogICAgICAgICRxdWVyeSAuPSAnIFdIRVJFIEEuYWN0aXZlID0gMSBBTkQgRlZBLnZhbHVlID0gPyAnOwogICAgICAgIHJldHVybiAkZGItPkdldE9uZSgkcXVlcnksIGFycmF5KCRmaWVsZGlkLCAkZmllbGR2YWx1ZSkpOwogICAgfQoKICAgIC8qKgogICAgICogSGFzIFByZWZpeAogICAgICogQHBhcmFtIHN0cmluZyAkc3RyaW5nIFRoZSBzdHJpbmcgaW4gcXVlc3Rpb24KICAgICAqIEBwYXJhbSBhcnJheSAkcHJlZml4IEFycmF5IG9mIHByZWZpeGVzIHRvIG1hdGNoIGFnYWluc3QKICAgICAqIEByZXR1cm4gYm9vbCBSZXR1cm5zIHRydWUgaWYgcHJlZml4IGlzIGZvdW5kLCBvciBmYWxzZSBvdGhlcndpc2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBoYXNfcHJlZml4KCRzdHJpbmcsICRwcmVmaXhlcykgewogICAgICAgIGlmICghaXNfc3RyaW5nKCRzdHJpbmcpKQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgaWYgKCFpc19hcnJheSgkcHJlZml4ZXMpKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGZvcmVhY2ggKCRwcmVmaXhlcyBhcyAkcHJlZml4KSB7CiAgICAgICAgICAgIGlmIChzdHJwb3MoJHN0cmluZywgJHByZWZpeCkgPT09IDApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgRXh0cmE6IEV4Y2x1ZGUgUHJlZml4CiAgICAgKiBAcGFyYW0gYXJyYXkgJGluc3RydWN0aW9ucyBJbnN0cnVjdGlvbnMKICAgICAqIEByZXR1cm4gYXJyYXkgUmV0dXJucyBhcnJheSBvZiBwcmVmaXhlcyB0byBleGNsdWRlIGlmIHNwZWNpZmllZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9leHRyYV9leGNsdWRlX3ByZWZpeCgkaW5zdHJ1Y3Rpb25zKSB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkaW5zdHJ1Y3Rpb25zKSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBmb3JlYWNoICgkaW5zdHJ1Y3Rpb25zIGFzICRpbnN0cnVjdGlvbikgewovLyBkaXJbdGh1bWJfXQovLyBkaXJbdGh1bWJfLG5vdG1lXQogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15leGNsdWRlX3ByZWZpeFxbKFteLF0rKCxbXixdKykqKVxdJC9pJywgJGluc3RydWN0aW9uLCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgICAgIHJldHVybiBleHBsb2RlKCcsJywgJG1hdGNoZXNbMV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IEV4dHJhOiBEaXJlY3RvcnkKICAgICAqIEBwYXJhbSBhcnJheSAkaW5zdHJ1Y3Rpb25zIEluc3RydWN0aW9ucwogICAgICogQHJldHVybiBzdHJpbmcgUmV0dXJucyB0aGUgZGlyZWN0b3J5IGlmIHNwZWNpZmllZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9leHRyYV9kaXIoJGluc3RydWN0aW9ucykgewogICAgICAgIGlmICghaXNfYXJyYXkoJGluc3RydWN0aW9ucykpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgZm9yZWFjaCAoJGluc3RydWN0aW9ucyBhcyAkaW5zdHJ1Y3Rpb24pIHsKLy8gZGlyW3BhdGgvdG8vZGlyXQogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15kaXJcWyguKylcXSQvaScsICRpbnN0cnVjdGlvbiwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJG1hdGNoZXNbMV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgRXh0cmE6IEFsbG93ZWQgRmlsZSBFeHRlbnNpb25zCiAgICAgKiBAcGFyYW0gYXJyYXkgJGluc3RydWN0aW9ucyBJbnN0cnVjdGlvbnMKICAgICAqIEByZXR1cm4gYXJyYXkgUmV0dXJucyBhbGxvd2VkIGZpbGUgZXh0ZW5zaW9ucyBpZiBzcGVjaWZpZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZXh0cmFfYWxsb3coJGluc3RydWN0aW9ucykgewogICAgICAgIGlmICghaXNfYXJyYXkoJGluc3RydWN0aW9ucykpCiAgICAgICAgICAgIHJldHVybiBhcnJheSgpOwoKICAgICAgICBmb3JlYWNoICgkaW5zdHJ1Y3Rpb25zIGFzICRpbnN0cnVjdGlvbikgewovLyBhbGxvd1twZGYsZ2lmLHBuZyxqcGVnLGpwZ10KICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eYWxsb3dcWyhbYS16XSsoLFthLXpdKykqKVxdJC9pJywgJGluc3RydWN0aW9uLCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgICAgIHJldHVybiBleHBsb2RlKCcsJywgJG1hdGNoZXNbMV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBFeHRyYTogRGF0ZSBGb3JtYXQKICAgICAqIEBwYXJhbSBhcnJheSAkaW5zdHJ1Y3Rpb25zIEluc3RydWN0aW9ucwogICAgICogQHJldHVybiBzdHJpbmcgUmV0dXJucyBkYXRlIGZvcm1hdCB0byBiZSB1c2VkIHdpdGggdGhlIGpxdWVyeQogICAgICogZGF0ZXBpY2tlciBpZiBzcGVjaWZpZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZXh0cmFfZGF0ZV9mb3JtYXQoJGluc3RydWN0aW9ucykgewogICAgICAgIGlmICghaXNfYXJyYXkoJGluc3RydWN0aW9ucykpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgZm9yZWFjaCAoJGluc3RydWN0aW9ucyBhcyAkaW5zdHJ1Y3Rpb24pIHsKLy8gZGF0ZWZvcm1hdFtkZC9tbS95eV0KICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eZGF0ZWZvcm1hdFxbKC4rKVxdJC9pJywgJGluc3RydWN0aW9uLCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkbWF0Y2hlc1sxXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCBFeHRyYTogUm93CiAgICAgKiBAcGFyYW0gYXJyYXkgJGluc3RydWN0aW9ucyBJbnN0cnVjdGlvbnMKICAgICAqIEByZXR1cm4gaW50IFJldHVybnMgbWF4aW11bSBsZW5ndGggaWYgc3BlY2lmaWVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2V4dHJhX3Jvd3MoJGluc3RydWN0aW9ucykgewogICAgICAgIGlmICghaXNfYXJyYXkoJGluc3RydWN0aW9ucykpCiAgICAgICAgICAgIHJldHVybjsKCgogICAgICAgIGZvcmVhY2ggKCRpbnN0cnVjdGlvbnMgYXMgJGluc3RydWN0aW9uKSB7Ci8vIG1heF9sZW5ndGhbMjBdCiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXnJvd3NcWyhbMC05XSspXF0kL2knLCAkaW5zdHJ1Y3Rpb24sICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIChpbnQpICRtYXRjaGVzWzFdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IEV4dHJhOiBSb3cKICAgICAqIEBwYXJhbSBhcnJheSAkaW5zdHJ1Y3Rpb25zIEluc3RydWN0aW9ucwogICAgICogQHJldHVybiBpbnQgUmV0dXJucyBtYXhpbXVtIGxlbmd0aCBpZiBzcGVjaWZpZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZXh0cmFfY29scygkaW5zdHJ1Y3Rpb25zKSB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkaW5zdHJ1Y3Rpb25zKSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBmb3JlYWNoICgkaW5zdHJ1Y3Rpb25zIGFzICRpbnN0cnVjdGlvbikgewovLyBtYXhfbGVuZ3RoWzIwXQogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15jb2xzXFsoWzAtOV0rKVxdJC9pJywgJGluc3RydWN0aW9uLCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgICAgIHJldHVybiAoaW50KSAkbWF0Y2hlc1sxXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCBFeHRyYTogTWF4IExlbmd0aAogICAgICogQHBhcmFtIGFycmF5ICRpbnN0cnVjdGlvbnMgSW5zdHJ1Y3Rpb25zCiAgICAgKiBAcmV0dXJuIGludCBSZXR1cm5zIG1heGltdW0gbGVuZ3RoIGlmIHNwZWNpZmllZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9leHRyYV9tYXhfbGVuZ3RoKCRpbnN0cnVjdGlvbnMpIHsKICAgICAgICBpZiAoIWlzX2FycmF5KCRpbnN0cnVjdGlvbnMpKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGZvcmVhY2ggKCRpbnN0cnVjdGlvbnMgYXMgJGluc3RydWN0aW9uKSB7Ci8vIG1heF9sZW5ndGhbMjBdCiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXm1heF9sZW5ndGhcWyhbMC05XSspXF0kL2knLCAkaW5zdHJ1Y3Rpb24sICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIChpbnQpICRtYXRjaGVzWzFdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IEV4dHJhOiBTaXplCiAgICAgKiBAcGFyYW0gYXJyYXkgJGluc3RydWN0aW9ucyBJbnN0cnVjdGlvbnMKICAgICAqIEByZXR1cm4gaW50IFJldHVybnMgc2l6ZSBpZiBzcGVjaWZpZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZXh0cmFfc2l6ZSgkaW5zdHJ1Y3Rpb25zKSB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkaW5zdHJ1Y3Rpb25zKSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBmb3JlYWNoICgkaW5zdHJ1Y3Rpb25zIGFzICRpbnN0cnVjdGlvbikgewovLyBzaXplWzIwXQogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15zaXplXFsoWzAtOV0rKVxdJC9pJywgJGluc3RydWN0aW9uLCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgICAgIHJldHVybiAoaW50KSAkbWF0Y2hlc1sxXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCBFeHRyYTogTXVsdGlwbGUKICAgICAqIEBwYXJhbSBhcnJheSAkaW5zdHJ1Y3Rpb25zIEluc3RydWN0aW9ucwogICAgICogQHJldHVybiBpbnQgUmV0dXJucyBzaXplIGlmIHNwZWNpZmllZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9leHRyYV9tdWx0aXBsZSgkaW5zdHJ1Y3Rpb25zKSB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkaW5zdHJ1Y3Rpb25zKSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBmb3JlYWNoICgkaW5zdHJ1Y3Rpb25zIGFzICRpbnN0cnVjdGlvbikgewovLyBzaXplWzIwXQogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15tdWx0aXBsZVxbKFswLTldKylcXSQvaScsICRpbnN0cnVjdGlvbiwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKGludCkgJG1hdGNoZXNbMV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgRXh0cmE6IFNlbGVjdCBkZWZhdWx0CiAgICAgKiBAcGFyYW0gYXJyYXkgJGluc3RydWN0aW9ucyBJbnN0cnVjdGlvbnMKICAgICAqIEByZXR1cm4gaW50IFJldHVybnMgc2l6ZSBpZiBzcGVjaWZpZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZXh0cmFfc2VsZWN0ZGVmYXVsdCgkaW5zdHJ1Y3Rpb25zKSB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkaW5zdHJ1Y3Rpb25zKSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBmb3JlYWNoICgkaW5zdHJ1Y3Rpb25zIGFzICRpbnN0cnVjdGlvbikgewovLyBzaXplWzIwXQogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15zZWxlY3RfZGVmYXVsdFxbKC4rKVxdJC9pJywgJGluc3RydWN0aW9uLCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkbWF0Y2hlc1sxXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCBFeHRyYTogV1lTSVdZRwogICAgICogQHBhcmFtIGFycmF5ICRpbnN0cnVjdGlvbnMgSW5zdHJ1Y3Rpb25zCiAgICAgKiBAcmV0dXJuIGJvb2wgUmV0dXJucyB0cnVlIGlmIFdZU0lXWUcgaXMgdG8gYmUgZW5hYmxlZCwgb3IgZmFsc2Ugb3RoZXJ3aXNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2V4dHJhX3d5c2l3eWcoJGluc3RydWN0aW9ucykgewogICAgICAgIGlmICghaXNfYXJyYXkoJGluc3RydWN0aW9ucykpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgZm9yZWFjaCAoJGluc3RydWN0aW9ucyBhcyAkaW5zdHJ1Y3Rpb24pIHsKLy8gd3lzaXd5Z1sxXQovLyB3eXNpd3lnWzBdCi8vIHd5c2l3eWdbdHJ1ZV0KLy8gd3lzaXd5Z1tmYWxzZV0KICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9ed3lzaXd5Z1xbKC4rKVxdJC9pJywgJGluc3RydWN0aW9uLCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgICAgIGlmICgkbWF0Y2hlc1sxXSA9PSAndHJ1ZScgfHwgJG1hdGNoZXNbMV0gPT0gJzEnKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBFeHRyYTogTW9kdWxlIHBhcmFtcwogICAgICogQHBhcmFtIGFycmF5ICRpbnN0cnVjdGlvbnMgSW5zdHJ1Y3Rpb25zCiAgICAgKiBAcmV0dXJuIGFycmF5IFJldHVybnMgYW4gYXJyYXkgb2Ygb3B0aW9ucyBpZiBzcGVjaWZpZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZXh0cmFfbW9kdWxlcGFyYW1zKCRpbnN0cnVjdGlvbnMpIHsKICAgICAgICBpZiAoIWlzX2FycmF5KCRpbnN0cnVjdGlvbnMpKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgICRwYXJhbXMgPSBhcnJheSgpOwoKICAgICAgICBmb3JlYWNoICgkaW5zdHJ1Y3Rpb25zIGFzICRpbnN0cnVjdGlvbikgewovLyBvcHRpb25zW2FwcGxlPUFwcGxlXQovLyBvcHRpb25zW2FwcGxlPUFwcGxlLGJhbmFuYT1CYW5hbmFdCiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXiguKylcWyhbXixdKz1bXixdKygsW14sXSs9W14sXSspKilcXSQvaScsICRpbnN0cnVjdGlvbiwgJG1hdGNoZXMpKSB7CgogICAgICAgICAgICAgICAgJHBhcmFtc1sibW9kdWxlIl0gPSAkbWF0Y2hlc1sxXTsKCiAgICAgICAgICAgICAgICBmb3JlYWNoIChleHBsb2RlKCcsJywgJG1hdGNoZXNbMl0pIGFzICRwYWlyKSB7CiAgICAgICAgICAgICAgICAgICAgJGtleV92YWwgPSBleHBsb2RlKCc9JywgJHBhaXIpOwogICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJGtleV92YWxbMF1dID0gJGtleV92YWxbMV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgoKICAgICAgICByZXR1cm4gJHBhcmFtczsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBFeHRyYTogTW9kdWxlIE9wdGlvbnMKICAgICAqIEBwYXJhbSBhcnJheSAkaW5zdHJ1Y3Rpb25zIEluc3RydWN0aW9ucwogICAgICogQHJldHVybiBhcnJheSBSZXR1cm5zIGFuIGFycmF5IG9mIG9wdGlvbnMgaWYgc3BlY2lmaWVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2V4dHJhX21vZHVsZW9wdGlvbnMoJGluc3RydWN0aW9ucywgJG1vZCkgewogICAgICAgIGlmICghaXNfYXJyYXkoJGluc3RydWN0aW9ucykpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgJG9wdGlvbnMgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRpbnN0cnVjdGlvbnMgYXMgJGluc3RydWN0aW9uKSB7Ci8vIHtjbXNfbW9kdWxlfQogICAgICAgICAgICAkbW9kdWxlY29udGVudCA9ICRpbnN0cnVjdGlvbjsKICAgICAgICAgICAgZm9yZWFjaCAoZXhwbG9kZSgnLCcsICRtb2R1bGVjb250ZW50KSBhcyAkcGFpcikgewogICAgICAgICAgICAgICAgaWYgKCEkcGFpcikKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICRrZXlfdmFsID0gZXhwbG9kZSgnPScsICRwYWlyKTsKICAgICAgICAgICAgICAgICRvcHRpb25zWyRrZXlfdmFsWzBdXSA9ICRrZXlfdmFsWzFdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghZW1wdHkoJG9wdGlvbnMpKQogICAgICAgICAgICByZXR1cm4gJG9wdGlvbnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgRXh0cmE6IFBhZ2UKICAgICAqIEBwYXJhbSBhcnJheSAkaW5zdHJ1Y3Rpb25zIEluc3RydWN0aW9ucwogICAgICogQHJldHVybiBhcnJheSBSZXR1cm5zIGFuIGFycmF5IG9mIG9wdGlvbnMgaWYgc3BlY2lmaWVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2V4dHJhX3BhZ2UoJGluc3RydWN0aW9ucykgewogICAgICAgIGlmICghaXNfYXJyYXkoJGluc3RydWN0aW9ucykpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgJG9wdGlvbnMgPSBhcnJheSgpOwogICAgICAgICRzZXR0aW5ncyA9IGFycmF5KCk7CgogICAgICAgIGZvcmVhY2ggKCRpbnN0cnVjdGlvbnMgYXMgJGluc3RydWN0aW9uKSB7Ci8vIHtjbXNfbW9kdWxlfQogICAgICAgICAgICBmb3JlYWNoIChleHBsb2RlKCcsJywgJG1vZHVsZWNvbnRlbnQpIGFzICRwYWlyKSB7CiAgICAgICAgICAgICAgICAka2V5X3ZhbCA9IGV4cGxvZGUoJz0nLCAkcGFpcik7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKCRrZXlfdmFsWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiY2hpbGRyZW5vZiI6CiAgICAgICAgICAgICAgICAgICAgICAgICRzZXR0aW5nc1siY2hpbGRyZW5vZiJdID0gJGtleV92YWxbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgInN0YXJ0X3BhZ2UiOgogICAgICAgICAgICAgICAgICAgICAgICAkc2V0dGluZ3NbInN0YXJ0X3BhZ2UiXSA9ICRrZXlfdmFsWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgICAgICRwYWdlcyA9IGNtc21zKCktPkdldENvbnRlbnRPcGVyYXRpb25zKCktPkdldEFsbENvbnRlbnQoKTsKICAgICAgICAkYXJyYXkgPSBhcnJheSgpOwoKICAgICAgICBpZiAoaXNzZXQoJHNldHRpbmdzWydjaGlsZHJlbm9mJ10pKSB7CiAgICAgICAgICAgICRjaGlsZHJlbm9mID0gZXh0ZW5kZWRfdG9vbHNfb3B0czo6Z2V0X3BhZ2VfaWRfZnJvbV9hbGlhcygkc2V0dGluZ3NbJ2NoaWxkcmVub2YnXSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJHNldHRpbmdzWydzdGFydF9wYWdlJ10pKSB7CiAgICAgICAgICAgICRzdGFydF9wYWdlID0gZXh0ZW5kZWRfdG9vbHNfb3B0czo6Z2V0X3BhZ2VfaWRfZnJvbV9hbGlhcygkc2V0dGluZ3NbJ3N0YXJ0X3BhZ2UnXSk7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkcGFnZXMgYXMgJHBhZ2UpIHsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICghaXNzZXQoJHN0YXJ0X3BhZ2UpICYmICFpc3NldCgkY2hpbGRyZW5vZikpCiAgICAgICAgICAgICAgICAgICAgfHwKICAgICAgICAgICAgICAgICAgICAoaXNzZXQoJGNoaWxkcmVub2YpICYmICgkcGFnZS0+UGFyZW50SWQoKSA9PSAkY2hpbGRyZW5vZikpIC8vIExpc3Qgb2YgYWxsIGNoaWxkcmVucwogICAgICAgICAgICAgICAgICAgIHx8CiAgICAgICAgICAgICAgICAgICAgKGlzc2V0KCRzdGFydF9wYWdlKSAmJiAoc3RycG9zKCRwYWdlLT5JZEhpZXJhcmNoeSgpLCAkc3RhcnRfcGFnZSAuICcuJykgPT09IDApKSAvLyBMaXN0IG9mIGFsbCBkZXNjZW5kYW50cwogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICRvcHRpb25zWyRwYWdlLT5JZCgpXSA9ICRwYWdlLT5IaWVyYXJjaHkoKSAuICcuIC0gJyAuICRwYWdlLT5OYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgoKICAgICAgICBpZiAoIWVtcHR5KCRvcHRpb25zKSkKICAgICAgICAgICAgcmV0dXJuICRvcHRpb25zOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IEV4dHJhOiBPcHRpb25zCiAgICAgKiBAcGFyYW0gYXJyYXkgJGluc3RydWN0aW9ucyBJbnN0cnVjdGlvbnMKICAgICAqIEByZXR1cm4gYXJyYXkgUmV0dXJucyBhbiBhcnJheSBvZiBvcHRpb25zIGlmIHNwZWNpZmllZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9leHRyYV9vcHRpb25zKCRpbnN0cnVjdGlvbnMpIHsKICAgICAgICBpZiAoIWlzX2FycmF5KCRpbnN0cnVjdGlvbnMpKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgICRvcHRpb25zID0gYXJyYXkoKTsKCiAgICAgICAgZm9yZWFjaCAoJGluc3RydWN0aW9ucyBhcyAkaW5zdHJ1Y3Rpb24pIHsKLy8gb3B0aW9uc1thcHBsZT1BcHBsZV0KLy8gb3B0aW9uc1thcHBsZT1BcHBsZSxiYW5hbmE9QmFuYW5hXQogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15vcHRpb25zXFsoW14sXSs9W14sXSsoLFteLF0rPVteLF0rKSopXF0kL2knLCAkaW5zdHJ1Y3Rpb24sICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoZXhwbG9kZSgnLCcsICRtYXRjaGVzWzFdKSBhcyAkcGFpcikgewogICAgICAgICAgICAgICAgICAgICRrZXlfdmFsID0gZXhwbG9kZSgnPScsICRwYWlyKTsKICAgICAgICAgICAgICAgICAgICAkb3B0aW9uc1ska2V5X3ZhbFswXV0gPSAka2V5X3ZhbFsxXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCFlbXB0eSgkb3B0aW9ucykpCiAgICAgICAgICAgIHJldHVybiAkb3B0aW9uczsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBFeHRyYQogICAgICogQHBhcmFtIHN0cmluZyAkZXh0cmEKICAgICAqIEByZXR1cm4gYXJyYXkgUmV0dXJucyBhbiBhcnJheSBvZiBpbnN0cnVjdGlvbnMgaWYgc3BlY2lmaWVkCiAgICAgKi8KICAgIGZ1bmN0aW9uIGdldF9leHRyYSgkZXh0cmEsICRtb2QgPSBudWxsKSB7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJGV4dHJhKSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICAkZXh0cmEgPSB0cmltKCRleHRyYSk7CgogICAgICAgIGlmICgkbW9kICE9IG51bGwgJiYgaXNfb2JqZWN0KCRtb2QpKQogICAgICAgICAgICAkZXh0cmEgPSAkbW9kLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkZXh0cmEpOwoKCiAgICAgICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwogICAgICAgICRpbnN0cnVjdGlvbnMgPSBleHBsb2RlKCc7JywgdHJpbSgkZXh0cmEsICc7JykpOwogICAgICAgIGlmICghZW1wdHkoJGluc3RydWN0aW9ucykpCiAgICAgICAgICAgIHJldHVybiAkaW5zdHJ1Y3Rpb25zOwogICAgfQoKICAgIC8qKgogICAgICogSXMgdmFsaWQgYWxpYXMKICAgICAqIEBwYXJhbSBzdHJpbmcgJGFsaWFzCiAgICAgKiBAcmV0dXJuIGJvb2wgUmV0dXJucyB0cnVlIGlmIHN0cmluZyBpbiBxdWVzdGlvbiBpcyBhIHZhbGlkIGFsaWFzLCBvcgogICAgICogZmFsc2Ugb3RoZXJ3aXNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNfdmFsaWRfYWxpYXMoJGFsaWFzKSB7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJGFsaWFzKSkKICAgICAgICAgICAgcmV0dXJuOwoKLy8gY2hlY2sgYWxpYXMKLy8gaHR0cDovL3d3dy5waHAubmV0L21hbnVhbC9lbi9sYW5ndWFnZS52YXJpYWJsZXMuYmFzaWNzLnBocAogICAgICAgIGlmIChwcmVnX21hdGNoKCcvXlthLXpBLVpfXHg3Zi1ceGZmXVthLXpBLVowLTlfXHg3Zi1ceGZmXSokLycsICRhbGlhcykpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdlbmVyYXRlIGFsaWFzCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIFRoZSBzdHJpbmcgdGhhdCB0aGUgYWxpYXMgd2lsbCBiZSBnZW5lcmF0ZWQgZnJvbQogICAgICogQHJldHVybiBzdHJpbmcgUmV0dXJucyB0aGUgYWxpYXMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZW5lcmF0ZV9hbGlhcygkbmFtZSkgewogICAgICAgIGlmICghaXNfc3RyaW5nKCRuYW1lKSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICAkYWxpYXMgPSAkbmFtZTsKCi8vIHJlcGxhY2UgbXVsdGlwbGUgc3BhY2VzIHdpdGggc2luZ2xlIHVuZGVyc2NvcmUKICAgICAgICAkYWxpYXMgPSBwcmVnX3JlcGxhY2UoJy8gKy8nLCAnXycsICRhbGlhcyk7CgovLyBsZWF2ZSBhbHBoYWJldGljIGNoYXJhY3RlcnMgYW5kIHVuc2NvcmVzLAovLyByZXBsYWNlIGV2ZXJ5dGhpbmcgZWxzZSB3aXRoIGFuIHVuZGVyc2NvcmUKICAgICAgICAkYWxpYXMgPSBwcmVnX3JlcGxhY2UoJy9bXmEtekEtWl9dLycsICdfJywgJGFsaWFzKTsKCi8vIHJlcGxhY2UgbXVsdGlwbGUgdW5kZXJzY29yZXMgd2l0aCBzaW5nbGUgdW5kZXJzY29yZQogICAgICAgICRhbGlhcyA9IHByZWdfcmVwbGFjZSgnL18rLycsICdfJywgJGFsaWFzKTsKCi8vIGNvbnZlcnQgdG8gbG93ZXJjYXNlCiAgICAgICAgJGFsaWFzID0gc3RydG9sb3dlcigkYWxpYXMpOwoKLy8gcmVtb3ZlIHVuZGVyc2NvcmUgZnJvbSBzdGFydCBhbmQgZW5kCiAgICAgICAgJGFsaWFzID0gdHJpbSgkYWxpYXMsICdfJyk7CgogICAgICAgIHJldHVybiAkYWxpYXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgZmllbGQgdHlwZXMKICAgICAqIEByZXR1cm4gYXJyYXkgUmV0dXJucyBhbiBhcnJheSBvZiBmaWVsZCB0eXBlcwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9maWVsZF90eXBlcygpIHsKCiAgICAgICAgJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTW9kdWxlR2VuZXJhdG9yJyk7CgogICAgICAgICR0eXBlcyA9IGFycmF5KAogICAgICAgICAgICAndGV4dGJveCcgPT4gJG1vZHVsZS0+TGFuZygndGV4dGJveCcpLAogICAgICAgICAgICAnY2hlY2tib3gnID0+ICRtb2R1bGUtPkxhbmcoJ2NoZWNrYm94JyksCiAgICAgICAgICAgICd0ZXh0YXJlYScgPT4gJG1vZHVsZS0+TGFuZygndGV4dGFyZWEnKSwKICAgICAgICAgICAgJ3NlbGVjdF9kYXRlJyA9PiAkbW9kdWxlLT5MYW5nKCdzZWxlY3RfZGF0ZScpLAogICAgICAgICAgICAndXBsb2FkX2ZpbGUnID0+ICRtb2R1bGUtPkxhbmcoJ3VwbG9hZF9maWxlJyksCiAgICAgICAgICAgICdzZWxlY3RfZmlsZScgPT4gJG1vZHVsZS0+TGFuZygnc2VsZWN0X2ZpbGUnKSwKICAgICAgICAgICAgJ2Ryb3Bkb3duJyA9PiAkbW9kdWxlLT5MYW5nKCdkcm9wZG93bicpLAogICAgICAgICAgICAnZHJvcGRvd25mcm9tbW9kdWxlJyA9PiAkbW9kdWxlLT5MYW5nKCdkcm9wZG93bmZyb21tb2R1bGUnKSwKICAgICAgICAgICAgJ21vZHVsZScgPT4gJG1vZHVsZS0+TGFuZygnbW9kdWxlJyksCiAgICAgICAgICAgICdtb2R1bGVfbGluaycgPT4gJG1vZHVsZS0+TGFuZygnbW9kdWxlX2xpbmsnKSwKICAgICAgICAgICAgJ3BhZ2UnID0+ICRtb2R1bGUtPkxhbmcoJ3BhZ2UnKSwKICAgICAgICAgICAgJ2NvbG9yX3BpY2tlcicgPT4gJG1vZHVsZS0+TGFuZygnY29sb3JfcGlja2VyJyksCiAgICAgICAgICAgICdzdGF0aWMnID0+ICRtb2R1bGUtPkxhbmcoJ3N0YXRpYycpCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICR0eXBlczsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBmaWVsZCBzZWN0aW9ucwogICAgICogQHJldHVybiBhcnJheSBSZXR1cm5zIGFuIGFycmF5IG9mIGZpZWxkIHNlY3Rpb25zCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2ZpZWxkX3NlY3Rpb25zKCkgewoKICAgICAgICAkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNb2R1bGVHZW5lcmF0b3InKTsKCiAgICAgICAgJHNlY3Rpb25zID0gYXJyYXkoCiAgICAgICAgICAgICdpdGVtcycgPT4gJG1vZHVsZS0+TGFuZygnaXRlbXMnKSwKICAgICAgICAgICAgJ2NhdGVnb3JpZXMnID0+ICRtb2R1bGUtPkxhbmcoJ2NhdGVnb3JpZXMnKQogICAgICAgICk7CgogICAgICAgIHJldHVybiAkc2VjdGlvbnM7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfcHJlZml4KCRtb2QpIHsKICAgICAgICByZXR1cm4gJG1vZC0+R2V0UHJlZmVyZW5jZSgndXJsX3ByZWZpeCcsIG11bmdlX3N0cmluZ190b191cmwoJG1vZC0+R2V0TmFtZSgpLCB0cnVlKSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfcHJldHR5X3VybCgkbW9kLCAkcHJlZml4LCAkaXRlbV9pZCwgJGFsaWFzLCAkcmV0dXJuaWQgPSBudWxsLCAkZGV0YWlsdGVtcGxhdGUgPSBudWxsKSB7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCiAgICAgICAgJHBhcm1zID0gYXJyYXkoKTsKCiAgICAgICAgJHBhcm1zW10gPSAkcHJlZml4OwogICAgICAgICRwYXJtc1tdID0gJGl0ZW1faWQ7CiAgICAgICAgaWYgKCRyZXR1cm5pZCkKICAgICAgICAgICAgJHBhcm1zW10gPSAkcmV0dXJuaWQ7CiAgICAgICAgaWYgKCRhbGlhcykKICAgICAgICAgICAgJHBhcm1zW10gPSAkYWxpYXM7CiAgICAgICAgaWYgKCRkZXRhaWx0ZW1wbGF0ZSAhPSBudWxsKQogICAgICAgICAgICAkcGFybXNbXSA9ICRkZXRhaWx0ZW1wbGF0ZTsKCiAgICAgICAgcmV0dXJuIGltcGxvZGUoJy8nLCAkcGFybXMpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3ByaXZhdGVfY2F0ZWdvcmllcygkbW9kKSB7CgogICAgICAgICRjYXRlZ29yeWxvbmduYW1lbGlzdCA9IGFycmF5KCk7CgogICAgICAgICRkYiA9IGNtc21zKCktPkdldERCKCk7CiAgICAgICAgJHVzZXJvcHMgPSBjbXNtcygpLT5HZXRVc2VyT3BlcmF0aW9ucygpOwoKICAgICAgICAkdXNlcmlkID0gZ2V0X3VzZXJpZCgpOwogICAgICAgICR1c2VyX2lkID0gJHVzZXJpZDsKICAgICAgICAkYWRtaW51c2VyID0gKCR1c2Vyb3BzLT5Vc2VySW5Hcm91cCgkdXNlcmlkLCAxKSB8fCAkdXNlcmlkID09IDEpOwovL21sZSBzdXBwb3J0CiAgICAgICAgaWYgKCRtb2QtPkdldFByZWZlcmVuY2UoJ3VzZXJncm91cF9kZXBlbmRlbmNlJykgJiYgISRtb2QtPkNoZWNrUGVybWlzc2lvbigkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfYWxsX2NhdGVnb3J5X3Zpc2JpbGUnKSkgewoKICAgICAgICAgICAgaWYgKCRhZG1pbnVzZXIgIT0gMSkgewoKCiAgICAgICAgICAgICAgICAkcXVlcnkgPSAiU0VMRUNUIGdyb3VwX2lkIEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJ1c2VyX2dyb3VwcyB3aGVyZSB1c2VyX2lkPT8iOwogICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR1c2VyX2lkKSk7CiAgICAgICAgICAgICAgICBpZiAoJHJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICRncm91cHMgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgICAgICR3aGVyZXN0YXRlbWVudCA9IGFycmF5KCk7CgogICAgICAgICAgICAgICAgICAgIHdoaWxlICgkcmVzdWx0ICYmICRyb3cgPSAkcmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZXN0YXRlbWVudCBbXSA9ICIgdXNlcmdyb3VwID0gPyAiOwogICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1zYXJyYXlbXSA9ICRyb3dbImdyb3VwX2lkIl07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJyggJyAuIGltcGxvZGUoJyBPUiAnLCAkd2hlcmVzdGF0ZW1lbnQpIC4gJyknOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjYXRlZ29yeWxpc3QgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9jYXRlZ29yeV9saXN0KCRtb2QsICR3aGVyZSwgJHBhcmFtc2FycmF5KTsKICAgICAgICAgICAgICAgICRjYXRlZ29yeWxvbmduYW1lbGlzdCA9IGFycmF5X3NsaWNlKCRjYXRlZ29yeWxpc3QsIDEpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkY2F0ZWdvcnlsb25nbmFtZWxpc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZWxldGUgaXRlbQogICAgICogQHBhcmFtIG9iamVjdCAkbW9kCiAgICAgKiBAcGFyYW0gaW50ICRpdGVtX2lkIAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRldGVsZV9pdGVtKCRtb2QsICRpdGVtX2lkKSB7CgogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CgovLyBnZXQgZGV0YWlscwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbSBXSEVSRSBpdGVtX2lkID0gPyc7CiAgICAgICAgJHJvdyA9ICRkYi0+R2V0Um93KCRxdWVyeSwgYXJyYXkoJGl0ZW1faWQpKTsKCi8vIGRlbGV0ZSBpdGVtCiAgICAgICAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbSBXSEVSRSBpdGVtX2lkID0gPyc7CiAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1faWQpKTsKCi8vIGRlbGV0ZSBmaWVsZCB2YWx1ZXMKICAgICAgICAkcXVlcnkgPSAnREVMRVRFIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBXSEVSRSBpdGVtX2lkID0gPyc7CiAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1faWQpKTsKCi8vIGRlbGV0ZSBmaWVsZCB2YWx1ZXMKICAgICAgICAkcXVlcnkgPSAnREVMRVRFIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtX2V4dHJhIFdIRVJFIGl0ZW1faWQgPSA/JzsKICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbV9pZCkpOwoKLy9VcGRhdGUgc2VhcmNoIGluZGV4CiAgICAgICAgJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnU2VhcmNoJyk7CiAgICAgICAgaWYgKCRtb2R1bGUgIT0gRkFMU0UpIHsKICAgICAgICAgICAgJG1vZHVsZS0+RGVsZXRlV29yZHMoJG1vZC0+R2V0TmFtZSgpLCAkaXRlbV9pZCwgJ2l0ZW0nKTsKICAgICAgICB9CiAgICAgICAgQCRtb2QtPlNlbmRFdmVudCgnSXRlbURlbGV0ZWQnLCBhcnJheSgnaXRlbV9pZCcgPT4gJGl0ZW1faWQpKTsKICAgIH0KCn0KCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBFeHRlbmRlZCB0b29scyBmb3IgQ01TIE1hZGUgU2ltcGxlIChAa3V6bWFueSkKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvbWVkaWFjZW50ZXIvCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYgKCFpc3NldCgkZ0NtcykpCiAgICBleGl0OwoKJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwokdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOwoKLy8gY3JlYXRlIGl0ZW0gdGFibGUKCiRmaWVsZHMgPSAnCiAgICBpZCBJIEtFWSBBVVRPLAogICAgbW9kdWxlX25hbWUgQygyNTUpLAoJYXR0YWNoIEMoMjU1KSwKICAgIGNyZWF0ZV9kYXRlICcgLiBDTVNfQURPREJfRFQgLiAnLAoJbW9kaWZpZWRfZGF0ZSAnIC4gQ01TX0FET0RCX0RUIC4gJwonOwoKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfZ2VuZXJhdG9yJywgJGZpZWxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKCiMgcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCiR0aGlzLT5BdWRpdCgwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCdpbnN0YWxsZWQnLCAkdGhpcy0+R2V0VmVyc2lvbigpKSk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBFeHRlbmRlZCB0b29scyBmb3IgQ01TIE1hZGUgU2ltcGxlIChAa3V6bWFueSkNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9tZWRpYWNlbnRlci8NCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQokZGIgPSBjbXNtcygpLT5HZXREYigpOw0KDQokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7DQoNCi8vIGRyb3AgdGFibGVzDQokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfZ2VuZXJhdG9yJyk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCi8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZw0KJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCd1bmluc3RhbGxlZCcpKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[77u/PD9waHANCiRkYiA9IGNtc21zKCktPkdldERiKCk7DQokdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOw0KJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOw0KJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KDQpzd2l0Y2ggKCRvbGR2ZXJzaW9uKSB7DQogICAgY2FzZSAnMS4wJzoNCiAgICAgICAgJG1vZHVsZXMgPSBnZW5lcmF0b3Jfb3B0czo6Z2V0X21vZHVsZXMoKTsNCiAgICAgICAgZm9yZWFjaCAoJG1vZHVsZXMgYXMgJG1vZHVsZSkgew0KICAgICAgICAgICAgJG1vYmplY3QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJG1vZHVsZVsibW9kdWxlX25hbWUiXSk7DQogICAgICAgICAgICBpZiAoJG1vYmplY3QpIHsNCiAgICAgICAgICAgICAgICAkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2JqZWN0LT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbScsICdyZWN1cnNpdmUgQygyNTUpJyk7DQogICAgICAgICAgICAgICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQogICAgICAgICAgICAgICAgJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9iamVjdC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW0nLCAnaXRlbV9kYXRlX2VuZCAnIC4gQ01TX0FET0RCX0RUKTsNCiAgICAgICAgICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCiAgICAgICAgICAgICAgICAkZmllbGRzID0gJw0KICAgIGl0ZW1faWQgSSBLRVkgTk9UIG51bGwsDQogICAgdmFsdWUgSSBLRVkgTk9UIG51bGwNCic7DQogICAgICAgICAgICAgICAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2JqZWN0LT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbV9leHRyYScsICRmaWVsZHMsICR0YWJvcHRhcnJheSk7DQogICAgICAgICAgICAgICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgY2FzZSAnMS4xJzoNCiAgICAgICAgJG1vZHVsZXMgPSBnZW5lcmF0b3Jfb3B0czo6Z2V0X21vZHVsZXMoKTsNCiAgICAgICAgZm9yZWFjaCAoJG1vZHVsZXMgYXMgJG1vZHVsZSkgew0KICAgICAgICAgICAgJG1vYmplY3QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJG1vZHVsZVsibW9kdWxlX25hbWUiXSk7DQogICAgICAgICAgICBpZiAoJG1vYmplY3QpIHsNCiAgICAgICAgICAgICAgICAkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2JqZWN0LT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllcycsICd1c2VyZ3JvdXAgSScpOw0KICAgICAgICAgICAgICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCiAgICAgICAgICAgICAgICAkbW9iamVjdC0+Q3JlYXRlUGVybWlzc2lvbigkbW9iamVjdC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2FsbF9jYXRlZ29yeV92aXNiaWxlJywgJG1vYmplY3QtPkxhbmcoJ2FsbF9jYXRlZ29yeV92aXNiaWxlJykpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgY2FzZSAnMS4yJzoNCiAgICAgICAgJG1vZHVsZXMgPSBnZW5lcmF0b3Jfb3B0czo6Z2V0X21vZHVsZXMoKTsNCiAgICAgICAgZm9yZWFjaCAoJG1vZHVsZXMgYXMgJG1vZHVsZSkgew0KICAgICAgICAgICAgJG1vYmplY3QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJG1vZHVsZVsibW9kdWxlX25hbWUiXSk7DQogICAgICAgICAgICBpZiAoJG1vYmplY3QpIHsNCg0KICAgICAgICAgICAgICAgICRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTChjbXNfZGJfcHJlZml4KCkgLiAkbW9iamVjdC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX3VybCcsIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2JqZWN0LT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbScsICd1cmwnKTsNCiAgICAgICAgICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICBjYXNlICcxLjMnOg0KICAgICAgICAkbW9kdWxlcyA9IGdlbmVyYXRvcl9vcHRzOjpnZXRfbW9kdWxlcygpOw0KICAgICAgICBmb3JlYWNoICgkbW9kdWxlcyBhcyAkbW9kdWxlKSB7DQogICAgICAgICAgICAkbW9iamVjdCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkbW9kdWxlWyJtb2R1bGVfbmFtZSJdKTsNCiAgICAgICAgICAgIGlmICgkbW9iamVjdCkgew0KICAgICAgICAgICAgICAgICRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vYmplY3QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jYXRlZ29yaWVzJywgJ2V4dHJhMiBYJyk7DQogICAgICAgICAgICAgICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KICAgICAgICAgICAgICAgICRtb2JqZWN0LT5TZXRQcmVmZXJlbmNlKCdjYXRlZ29yeV9leHRyYTJfbGFiZWwnLCAkbW9iamVjdC0+TGFuZygnZXh0cmEnKSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICBjYXNlICcxLjQnOg0KICAgICAgICAkbW9kdWxlcyA9IGdlbmVyYXRvcl9vcHRzOjpnZXRfbW9kdWxlcygpOw0KICAgICAgICBmb3JlYWNoICgkbW9kdWxlcyBhcyAkbW9kdWxlKSB7DQogICAgICAgICAgICAkbW9iamVjdCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkbW9kdWxlWyJtb2R1bGVfbmFtZSJdKTsNCiAgICAgICAgICAgIGlmICgkbW9iamVjdCkgew0KICAgICAgICAgICAgICAgICRtb2JqZWN0LT5DcmVhdGVFdmVudCgnSXRlbUFkZGVkJyk7DQogICAgICAgICAgICAgICAgJG1vYmplY3QtPkNyZWF0ZUV2ZW50KCdJdGVtRWRpdGVkJyk7DQogICAgICAgICAgICAgICAgJG1vYmplY3QtPkNyZWF0ZUV2ZW50KCdJdGVtRGVsZXRlZCcpOw0KICAgICAgICAgICAgICAgICRtb2JqZWN0LT5DcmVhdGVFdmVudCgnQ2F0ZWdvcnlBZGRlZCcpOw0KICAgICAgICAgICAgICAgICRtb2JqZWN0LT5DcmVhdGVFdmVudCgnQ2F0ZWdvcnlFZGl0ZWQnKTsNCiAgICAgICAgICAgICAgICAkbW9iamVjdC0+Q3JlYXRlRXZlbnQoJ0NhdGVnb3J5RGVsZXRlZCcpOw0KICAgICAgICAgICAgICAgICRtb2JqZWN0LT5DcmVhdGVFdmVudCgnSXRlbXNSZW9yZGVyZWQnKTsNCiAgICAgICAgICAgICAgICAkbW9iamVjdC0+Q3JlYXRlRXZlbnQoJ0NhdGVnb3JpZXNSZW9yZGVyZWQnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIGNhc2UgJzEuNSc6DQogICAgICAgICRtb2R1bGVzID0gZ2VuZXJhdG9yX29wdHM6OmdldF9tb2R1bGVzKCk7DQogICAgICAgIGZvcmVhY2ggKCRtb2R1bGVzIGFzICRtb2R1bGUpIHsNCiAgICAgICAgICAgICRtb2JqZWN0ID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCRtb2R1bGVbIm1vZHVsZV9uYW1lIl0pOw0KICAgICAgICAgICAgaWYgKCRtb2JqZWN0KSB7DQogICAgICAgICAgICAgICAgJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9iamVjdC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkZGVmJywgJ2VkaXR2aWV3IEkoMSknKTsNCiAgICAgICAgICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICBjYXNlICcxLjYnOg0KICAgICAgICAkbW9kdWxlcyA9IGdlbmVyYXRvcl9vcHRzOjpnZXRfbW9kdWxlcygpOw0KICAgICAgICBmb3JlYWNoICgkbW9kdWxlcyBhcyAkbW9kdWxlKSB7DQogICAgICAgICAgICAkbW9iamVjdCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkbW9kdWxlWyJtb2R1bGVfbmFtZSJdKTsNCiAgICAgICAgICAgIGlmICgkbW9iamVjdCkgew0KICAgICAgICAgICAgICAgICRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vYmplY3QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZicsICdmaWx0ZXJfZnJvbnRlbmQgSSgxKScpOw0KICAgICAgICAgICAgICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCiAgICAgICAgICAgICAgICAkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2JqZWN0LT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGRkZWYnLCAnZmlsdGVyX2FkbWluIEkoMSknKTsNCiAgICAgICAgICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICBjYXNlICcxLjguMSc6DQogICAgICAgICRtb2R1bGVzID0gZ2VuZXJhdG9yX29wdHM6OmdldF9tb2R1bGVzKCk7DQoNCiAgICAgICAgZm9yZWFjaCAoJG1vZHVsZXMgYXMgJG1vZHVsZSkgew0KICAgICAgICAgICAgJG1vYmplY3QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJG1vZHVsZVsibW9kdWxlX25hbWUiXSk7DQogICAgICAgICAgICBpZiAoJG1vYmplY3QpIHsNCiAgICAgICAgICAgICAgICAkcG9zaXRpb24gPSAwOw0KDQogICAgICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCdBTFRFUiBUQUJMRSBgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2JqZWN0LT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllc2AgIENIQU5HRSBDT0xVTU4gYGNhdGVnb3J5X2lkYCBgY2F0ZWdvcnlfaWRgIElOVCgxMSkgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQgRklSU1QnKTsNCg0KDQogICAgICAgICAgICAgICAgLy8gY29weSBuZXcgZmlsZXMNCiAgICAgICAgICAgICAgICAkZmlsZSA9ICdhY3Rpb24uYWRtaW5fZmllbGRzLnBocCc7DQogICAgICAgICAgICAgICAgJGZyb20gPSBjbXNfam9pbl9wYXRoKCRjb25maWdbInJvb3RfcGF0aCJdLCAnbW9kdWxlcycsICdNb2R1bGVHZW5lcmF0b3InLCAnTW9kdWxlTGliJywgJ3NvdXJjZScsICdNb2R1bGVFeGFtcGxlJywgJGZpbGUpOw0KICAgICAgICAgICAgICAgICR0byA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sicm9vdF9wYXRoIl0sICdtb2R1bGVzJywgJG1vYmplY3QtPkdldE5hbWUoKSwgJGZpbGUpOw0KICAgICAgICAgICAgICAgIGNvcHkoJGZyb20sICR0byk7DQogICAgICAgICAgICAgICAgJGZpbGUgPSAnZnVuY3Rpb24uYWRtaW5fZmllbGRkZWZ0YWJfY2F0ZWdvcmllcy5waHAnOw0KICAgICAgICAgICAgICAgICRmcm9tID0gY21zX2pvaW5fcGF0aCgkY29uZmlnWyJyb290X3BhdGgiXSwgJ21vZHVsZXMnLCAnTW9kdWxlR2VuZXJhdG9yJywgJ01vZHVsZUxpYicsICdzb3VyY2UnLCAnTW9kdWxlRXhhbXBsZScsICRmaWxlKTsNCiAgICAgICAgICAgICAgICAkdG8gPSBjbXNfam9pbl9wYXRoKCRjb25maWdbInJvb3RfcGF0aCJdLCAnbW9kdWxlcycsICRtb2JqZWN0LT5HZXROYW1lKCksICRmaWxlKTsNCiAgICAgICAgICAgICAgICBjb3B5KCRmcm9tLCAkdG8pOw0KICAgICAgICAgICAgICAgICRmaWxlID0gJ2FjdGlvbi5hZG1pbl9vcmRlcmNhdGVnb3J5LnBocCc7DQogICAgICAgICAgICAgICAgJGZyb20gPSBjbXNfam9pbl9wYXRoKCRjb25maWdbInJvb3RfcGF0aCJdLCAnbW9kdWxlcycsICdNb2R1bGVHZW5lcmF0b3InLCAnTW9kdWxlTGliJywgJ3NvdXJjZScsICdNb2R1bGVFeGFtcGxlJywgJGZpbGUpOw0KICAgICAgICAgICAgICAgICR0byA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sicm9vdF9wYXRoIl0sICdtb2R1bGVzJywgJG1vYmplY3QtPkdldE5hbWUoKSwgJGZpbGUpOw0KICAgICAgICAgICAgICAgIGNvcHkoJGZyb20sICR0byk7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgJGZpbGUgPSAnTW9kdWxlRXhhbXBsZS5tb2R1bGUucGhwJzsNCiAgICAgICAgICAgICAgICAkZnJvbSA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sicm9vdF9wYXRoIl0sICdtb2R1bGVzJywgJ01vZHVsZUdlbmVyYXRvcicsICdNb2R1bGVMaWInLCAnc291cmNlJywgJ01vZHVsZUV4YW1wbGUnLCAkZmlsZSk7DQogICAgICAgICAgICAgICAgJHRvID0gY21zX2pvaW5fcGF0aCgkY29uZmlnWyJyb290X3BhdGgiXSwgJ21vZHVsZXMnLCAkbW9iamVjdC0+R2V0TmFtZSgpLCAkbW9iamVjdC0+R2V0TmFtZSgpIC4gJy5tb2R1bGUucGhwJyk7DQogICAgICAgICAgICAgICAgY29weSgkZnJvbSwgJHRvKTsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAvLyAgcmV3cml0ZSBtb2R1bGUgY29udGVudA0KICAgICAgICAgICAgICAgICRkYXRhID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCR0byk7DQogICAgICAgICAgICAgICAgaWYgKCRkYXRhKSB7DQogICAgICAgICAgICAgICAgICAgICRkYXRhID0gc3RyX3JlcGxhY2UoJ01vZHVsZUV4YW1wbGUnLCAkbW9iamVjdC0+R2V0TmFtZSgpLCAkZGF0YSk7DQogICAgICAgICAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCR0bywgJGRhdGEpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIGRpZSgkdGhpcy0+TGFuZygnZXJyb3JfcmVwbGFjZV9zdHJpbmcnKSk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgDQoNCiAgICAgICAgICAgICAgICAvLyB1cGRhdGUgZGF0YWJhc2UNCiAgICAgICAgICAgICAgICAkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2JqZWN0LT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGRkZWYnLCAnc2VjdGlvbiAgQygxMCknKTsNCiAgICAgICAgICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCiAgICAgICAgICAgICAgICAkcXVlcnkgPSAnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9iamVjdC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkZGVmIFNFVCBzZWN0aW9uID0gIml0ZW1zIiAnOw0KICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgpKTsNCg0KDQogICAgICAgICAgICAgICAgJGNhdGVnb3JpZXMgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9jYXRlZ29yeV9saXN0KCRtb2JqZWN0LCBhcnJheSgpLCBhcnJheSgpLCBmYWxzZSk7DQoNCiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJGNhdGVnb3JpZXMpID09IGZhbHNlKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgJGhlbHAgPSAnJzsNCiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAndGV4dGJveCc7DQogICAgICAgICAgICAgICAgICAgICRyZXF1aXJlZCA9IDA7DQogICAgICAgICAgICAgICAgICAgICRlZGl0dmlldyA9IDA7DQogICAgICAgICAgICAgICAgICAgICRmcm9udGVuZCA9IDE7DQogICAgICAgICAgICAgICAgICAgICRmaWx0ZXJfZnJvbnRlbmQgPSAwOw0KICAgICAgICAgICAgICAgICAgICAkYWRtaW5fYWRtaW4gPSAwOw0KICAgICAgICAgICAgICAgICAgICAkc2VhcmNoYWJsZSA9IDA7DQogICAgICAgICAgICAgICAgICAgICRleHRyYSA9ICcnOw0KICAgICAgICAgICAgICAgICAgICAkc2VjdGlvbiA9ICdjYXRlZ29yaWVzJzsNCg0KDQoNCiAgICAgICAgICAgICAgICAgICAgJGV4dHJhMSA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICAkZXh0cmEyID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRjYXRlZ29yaWVzIGFzICRjYXRlZ29yeSkgew0KDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGNhdGVnb3J5WyJleHRyYSJdKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGV4dHJhMSA9PSBmYWxzZSkgew0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0gJG1vYmplY3QtPkdldFByZWZlcmVuY2UoJ2NhdGVnb3J5X2V4dHJhX2xhYmVsJywgJG1vYmplY3QtPkxhbmcoJ2V4dHJhJykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWxpYXMgPSAnZXh0cmEnOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vYmplY3QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZiAobmFtZSwgYWxpYXMsIGhlbHAsIHR5cGUsIHBvc2l0aW9uLCByZXF1aXJlZCwgZnJvbnRlbmQsIGVkaXR2aWV3LCBmaWx0ZXJfZnJvbnRlbmQsIGZpbHRlcl9hZG1pbiwgc2VhcmNoYWJsZSwgZXh0cmEsIHNlY3Rpb24pIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5hbWUsICRhbGlhcywgJGhlbHAsICR0eXBlLCAkcG9zaXRpb24rKywgJHJlcXVpcmVkLCAkZnJvbnRlbmQsICRlZGl0dmlldywgJGZpbHRlcl9mcm9udGVuZCwgJGFkbWluX2FkbWluLCAkc2VhcmNoYWJsZSwgJGV4dHJhLCAkc2VjdGlvbikpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXh0cmExaWQgPSAkZGItPkluc2VydF9JRCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXh0cmExID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vYmplY3QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCAoaXRlbV9pZCwgZmllbGRkZWZfaWQsIHZhbHVlKSBWQUxVRVMgKD8sID8sID8pJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNhdGVnb3J5WyJjYXRlZ29yeV9pZCJdLCAkZXh0cmExaWQsICRjYXRlZ29yeVsiZXh0cmEiXSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRjYXRlZ29yeVsiZXh0cmEyIl0pIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZXh0cmEyID09IGZhbHNlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0gJG1vYmplY3QtPkdldFByZWZlcmVuY2UoJ2NhdGVnb3J5X2V4dHJhMl9sYWJlbCcsICRtb2JqZWN0LT5MYW5nKCdleHRyYScpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFsaWFzID0gJ2V4dHJhMic7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9iamVjdC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkZGVmIChuYW1lLCBhbGlhcywgaGVscCwgdHlwZSwgcG9zaXRpb24sIHJlcXVpcmVkLCBmcm9udGVuZCwgZWRpdHZpZXcsIGZpbHRlcl9mcm9udGVuZCwgZmlsdGVyX2FkbWluLCBzZWFyY2hhYmxlLCBleHRyYSwgc2VjdGlvbikgVkFMVUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbmFtZSwgJGFsaWFzLCAkaGVscCwgJHR5cGUsICRwb3NpdGlvbisrLCAkcmVxdWlyZWQsICRmcm9udGVuZCwgJGVkaXR2aWV3LCAkZmlsdGVyX2Zyb250ZW5kLCAkYWRtaW5fYWRtaW4sICRzZWFyY2hhYmxlLCAkZXh0cmEsICRzZWN0aW9uKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRleHRyYTJpZCA9ICRkYi0+SW5zZXJ0X0lEKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRleHRyYTIgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vYmplY3QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCAoaXRlbV9pZCwgZmllbGRkZWZfaWQsIHZhbHVlKSBWQUxVRVMgKD8sID8sID8pJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNhdGVnb3J5WyJjYXRlZ29yeV9pZCJdLCAkZXh0cmEyaWQsICRjYXRlZ29yeVsiZXh0cmEyIl0pKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAkY3VycmVudF92ZXJzaW9uID0gIjEuOSI7DQp9DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleGenerator.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBFeHRlbmRlZCB0b29scyBmb3IgQ01TIE1hZGUgU2ltcGxlIChAa3V6bWFueSkNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9tZWRpYWNlbnRlci8NCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCg0KLyoqDQogKiAgZ2VuZXJhdG9yIA0KICogQHJldHVybiBvYmplY3QgDQogKi8NCmlmICghZnVuY3Rpb25fZXhpc3RzKCdnZW5lcmF0b3InKSkgew0KDQogICAgZnVuY3Rpb24gZ2VuZXJhdG9yKCkgew0KICAgICAgICByZXR1cm4gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNb2R1bGVHZW5lcmF0b3InKTsNCiAgICB9DQoNCn0NCg0KY2xhc3MgTW9kdWxlR2VuZXJhdG9yIGV4dGVuZHMgQ0dFeHRlbnNpb25zIHsNCiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICAgIENvbnN0cnVjdG9yDQogICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHsNCiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgpOw0KICAgIH0NCg0KICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgICAgU2V0UGFyYW1ldGVycw0KICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkgew0KICAgICAgICAvLyBub3RoaW5nDQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKSB7DQogICAgICAgIGlmICh2ZXJzaW9uX2NvbXBhcmUoQ01TX1ZFUlNJT04sICcxLjEwJykgPCAwKQ0KICAgICAgICAgICAgJHRoaXMtPkluaXRpYWxpemVGcm9udGVuZCgpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIEluaXRpYWxpemVBZG1pbigpIHsNCiAgICAgICAgLy8gbm90aGluZw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIExhenlMb2FkRnJvbnRlbmQoKSB7DQogICAgICAgIHJldHVybiBUUlVFOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXROYW1lKCkgew0KICAgICAgICByZXR1cm4gZ2V0X2NsYXNzKCk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VmVyc2lvbigpIHsNCiAgICAgICAgcmV0dXJuICcxLjknOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBBbGxvd0F1dG9VcGdyYWRlKCkgew0KICAgICAgICByZXR1cm4gRkFMU0U7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldEhlbHAoKSB7DQogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3IoKSB7DQogICAgICAgIHJldHVybiAnQGt1em1hbnknOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpIHsNCiAgICAgICAgcmV0dXJuICd6ZGVub0BrdXptYW55LmJpeic7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdjaGFuZ2Vsb2cnKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKSB7DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBIYXNBZG1pbigpIHsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKSB7DQogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkgew0KICAgICAgICByZXR1cm4gYXJyYXkoJ0NHRXh0ZW5zaW9ucycgPT4gJzEuMjMnLCAnRXh0ZW5kZWRUb29scycgPT4gJzEuMS4xJywgJ0NHU21hcnRJbWFnZScgPT4gJzEuNScpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpIHsNCiAgICAgICAgcmV0dXJuICIxLjkuNCI7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldEV2ZW50RGVzY3JpcHRpb24oJGV2ZW50bmFtZSkgew0KICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2V2ZW50X2luZm9fJyAuICRldmVudG5hbWUpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRFdmVudEhlbHAoJGV2ZW50bmFtZSkgew0KICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2V2ZW50X2hlbHBfJyAuICRldmVudG5hbWUpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKSB7DQogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKSB7DQogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdHVuaW5zdGFsbCcpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBVbmluc3RhbGxQcmVNZXNzYWdlKCkgew0KICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3JlYWxseV91bmluc3RhbGwnKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gQ2hlY2tBY2Nlc3MoJHBlcm0gPSAnMScpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJHBlcm0pOw0KICAgIH0NCg0KfQ0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_addcategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKQogICAgZXhpdDsKCgppZiAoISRtb2QtPkNoZWNrUGVybWlzc2lvbigkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfbW9kaWZ5X2NhdGVnb3JpZXMnKSkKICAgIHJldHVybjsKCgokZGIgPSBjbXNtcygpLT5HZXREYigpOwoKJHBhcmVudCA9IC0xOwppZiAoaXNzZXQoJHBhcmFtc1sncGFyZW50J10pKSB7CiAgICAkcGFyZW50ID0gJHBhcmFtc1sncGFyZW50J107Cn0KJGFsaWFzID0gaXNTZXQoJHBhcmFtc1snbmFtZSddKSA/IG11bmdlX3N0cmluZ190b191cmwoJHBhcmFtc1snbmFtZSddLCB0cnVlKSA6ICcnOwppZiAoaXNzZXQoJHBhcmFtc1snYWxpYXMnXSkgJiYgZW1wdHkoJHBhcmFtc1snYWxpYXMnXSkgPT0gZmFsc2UpIHsKICAgICRhbGlhcyA9IG11bmdlX3N0cmluZ190b191cmwoJHBhcmFtc1snYWxpYXMnXSwgdHJ1ZSk7Cn0KJGV4dHJhID0gJyc7CmlmIChpc3NldCgkcGFyYW1zWydleHRyYSddKSkgewogICAgJGV4dHJhID0gJHBhcmFtc1snZXh0cmEnXTsKfQoKJGV4dHJhMiA9ICcnOwppZiAoaXNzZXQoJHBhcmFtc1snZXh0cmEyJ10pKSB7CiAgICAkZXh0cmEyID0gJHBhcmFtc1snZXh0cmEyJ107Cn0KCiR1c2VyZ3JvdXAgPSAnJzsKaWYgKGlzc2V0KCRwYXJhbXNbJ3VzZXJncm91cCddKSkgewogICAgJHVzZXJncm91cCA9ICRwYXJhbXNbJ3VzZXJncm91cCddOwp9CgppZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKSB7CiAgICAkbW9kLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQpOwp9CgokbmFtZSA9ICcnOwppZiAoaXNzZXQoJHBhcmFtc1snbmFtZSddKSkgewogICAgJG5hbWUgPSAkcGFyYW1zWyduYW1lJ107CiAgICBpZiAoJG5hbWUgIT0gJycpIHsKICAgICAgICAkdGltZSA9ICRkYi0+REJUaW1lU3RhbXAodGltZSgpKTsKICAgICAgICAkcG9zaXRpb24gPSAkZGItPkdldE9uZSgnU0VMRUNUIE1BWChwb3NpdGlvbikgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2NhdGVnb3JpZXMgV0hFUkUgcGFyZW50X2lkID0gPycsIGFycmF5KGludHZhbCgkcGFyZW50KSkpOwogICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2NhdGVnb3JpZXMgKGNhdGVnb3J5X2lkLCBjYXRlZ29yeV9uYW1lLCBjYXRlZ29yeV9hbGlhcywgZXh0cmEsIGV4dHJhMiwgdXNlcmdyb3VwLCBwYXJlbnRfaWQsIHBvc2l0aW9uLCBjcmVhdGVfZGF0ZSwgbW9kaWZpZWRfZGF0ZSkgVkFMVUVTICg/LD8sPyw/LD8sPyw/LD8sJyAuICR0aW1lIC4gJywnIC4gJHRpbWUgLiAnKSc7CiAgICAgICAgJHBhcm1zID0gYXJyYXkoJGNhdGlkLCAkbmFtZSwgJGFsaWFzLCAkZXh0cmEsICRleHRyYTIsICR1c2VyZ3JvdXAsIGludHZhbCgkcGFyZW50KSwgJHBvc2l0aW9uKTsKICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkcGFybXMpOwogICAgICAgIEAkbW9kLT5TZW5kRXZlbnQoJ0NhdGVnb3J5QWRkZWQnLCBhcnJheSgnY2F0ZWdvcnlfaWQnID0+ICRjYXRpZCwgJ25hbWUnID0+ICRuYW1lKSk7CiAgICAgICAgZ2VuZXJhdG9yX3Rvb2xzOjp1cGRhdGVfaGllcmFyY2h5X3Bvc2l0aW9ucygkbW9kKTsKICAgICAgICBnZW5lcmF0b3JfdG9vbHM6OnVwZGF0ZV9oaWVyYXJjaHlfcG9zaXRpb25zKCRtb2QpOwogICAgICAgICRwYXJhbXMgPSBhcnJheSgndGFiX21lc3NhZ2UnID0+ICdjYXRlZ29yeWFkZGVkJyk7CiAgICAgICAgJG1vZC0+UmVkaXJlY3RUb1RhYigkaWQsICdjYXRlZ29yeXRhYicsICRwYXJhbXMpOwogICAgfSBlbHNlIHsKICAgICAgICBlY2hvICRtb2QtPlNob3dFcnJvcnMoZ2VuZXJhdG9yKCktPkxhbmcoJ25vbmFtZWdpdmVuJykpOwogICAgfQp9CgojRGlzcGxheSB0ZW1wbGF0ZQokbW9kLT5zbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJG1vZC0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkbWluX2FkZGNhdGVnb3J5JywgJHJldHVybmlkKSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJG1vZC0+Q3JlYXRlRm9ybUVuZCgpKTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ25hbWV0ZXh0JywgZ2VuZXJhdG9yKCktPkxhbmcoJ25hbWUnKSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdhbGlhc3RleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnYWxpYXMnKSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCd1c2VyZ3JvdXB0ZXh0JywgbGFuZygnZ3JvdXAnKSk7CgokbW9kLT5zbWFydHktPmFzc2lnbignaW5wdXRuYW1lJywgJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ25hbWUnLCAkbmFtZSwgMjAsIDI1NSkpOwokbW9kLT5zbWFydHktPmFzc2lnbignaW5wdXRhbGlhcycsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdhbGlhcycsICRhbGlhcywgMjAsIDI1NSkpOwokbW9kLT5zbWFydHktPmFzc2lnbignaW5wdXRleHRyYScsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdleHRyYScsICRleHRyYSwgMjAsIDI1NSkpOwokbW9kLT5zbWFydHktPmFzc2lnbignaW5wdXRleHRyYTInLCAkbW9kLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZXh0cmEyJywgJGV4dHJhMiwgMjAsIDI1NSkpOwokbW9kLT5zbWFydHktPmFzc2lnbigncGFyZW50ZHJvcGRvd24nLCBnZW5lcmF0b3JfdG9vbHM6OmNyZWF0ZV9wYXJlbnRfZHJvcGRvd24oJHRoaXMsICRpZCwgLTEsIC0xKSk7CgokZ3JvdXBvcHMgPSBjbXNtcygpLT5HZXRHcm91cE9wZXJhdGlvbnMoKTsKJGdyb3VwbGlzdCA9ICRncm91cG9wcy0+TG9hZEdyb3VwcygpOwokdXNlcmdyb3VwcyA9IGV4dGVuZGVkX3Rvb2xzX29wdHM6Om9iamVjdF90b19oYXNoKCRncm91cGxpc3QsICduYW1lJywgJ2lkJyk7CgokdXNlcmdyb3VwcyA9IGFycmF5X21lcmdlKGFycmF5KGxhbmcoJ25vbmUnKT0+JycpLCR1c2VyZ3JvdXBzKTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ2lucHV0dXNlcmdyb3VwJywgJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICd1c2VyZ3JvdXAnLCAkdXNlcmdyb3VwcywtMSkpOwoKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsICcnKTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICRtb2QtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsIGxhbmcoJ3N1Ym1pdCcpKSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkbW9kLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjYW5jZWwnLCBsYW5nKCdjYW5jZWwnKSkpOwokbW9kLT5zbWFydHktPmFzc2lnbigncGFyZW50dGV4dCcsIGxhbmcoJ3BhcmVudCcpKTsKZWNobyAkbW9kLT5Qcm9jZXNzVGVtcGxhdGUoJ2VkaXRjYXRlZ29yeS50cGwnKTsKPz4K]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_approveitem.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9pdGVtJykpDQogICAgcmV0dXJuOw0KDQppZiAoIWlzc2V0KCRwYXJhbXNbJ2FwcHJvdmUnXSkgfHwgIWlzc2V0KCRwYXJhbXNbJ2l0ZW1faWQnXSkpIHsNCiAgICBkaWUoJ21pc3NpbmcgcGFyYW1ldGVyLCB0aGlzIHNob3VsZCBub3QgaGFwcGVuJyk7DQp9DQoNCiRpdGVtX2lkID0gKGludCkgJHBhcmFtc1snaXRlbV9pZCddOw0KJGFjdGl2ZSA9IChib29sKSAkcGFyYW1zWydhcHByb3ZlJ107DQoNCiRxdWVyeSA9ICdVUERBVEUgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtIFNFVCBhY3RpdmUgPSA/IFdIRVJFIGl0ZW1faWQgPSA/JzsNCiRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRhY3RpdmUsICRpdGVtX2lkKSk7DQoNCiRzZWFyY2ggPSBjbXNfdXRpbHM6OmdldF9zZWFyY2hfbW9kdWxlKCk7DQppZiAoaXNfb2JqZWN0KCRzZWFyY2gpKSB7DQogICAgaWYgKCRhY3RpdmUpIHsNCiAgICAgICAgJHNlYXJjaC0+RGVsZXRlV29yZHMoJG1vZC0+R2V0TmFtZSgpLCAkaXRlbV9pZCwgJ2l0ZW0nKTsNCiAgICB9IGVsc2Ugew0KDQogICAgICAkc2VhcmNoLT5BZGRXb3JkcygkbW9kLT5HZXROYW1lKCksICRpdGVtX2lkLCAnaXRlbScsIGdlbmVyYXRvcl90b29sczo6Z2V0X3NlYXJjaGFibGVfdGV4dCgkbW9kLCAkaXRlbV9pZCksIGdlbmVyYXRvcl90b29sczo6Z2V0X3NlYXJjaGFibGVfZGF0ZV9lbmQoKSk7DQogICAgfQ0KfQ0KDQpAJG1vZC0+U2VuZEV2ZW50KCdJdGVtRWRpdGVkJywgYXJyYXkoJ2l0ZW1faWQnID0+ICRpdGVtX2lkLCAnYWN0aXZlJyA9PiAkYWN0aXZlKSk7DQoNCi8vIGFsbCBkb25lDQokbW9kLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdhY3RpdmVfdGFiJyA9PiAnaXRlbXRhYicpKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_bulkaction.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKQogICAgZXhpdDsKCmlmICghJG1vZC0+Q2hlY2tQZXJtaXNzaW9uKCRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19tb2RpZnlfaXRlbScpKQogICAgcmV0dXJuOwoKJG1vZC0+U2V0Q3VycmVudFRhYignaXRlbXRhYicpOwoKCmlmIChpc3NldCgkcGFyYW1zWydtdWx0aXNlbGVjdCddKSAmJiBpc19hcnJheSgkcGFyYW1zWydtdWx0aXNlbGVjdCddKSAmJiBjb3VudCgkcGFyYW1zWydtdWx0aXNlbGVjdCddKSAmJiBpc3NldCgkcGFyYW1zWydidWxrYWN0aW9uJ10pKSB7CiAgICBmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkcGFyYW1zWydtdWx0aXNlbGVjdCddKTsgJGkrKykgewogICAgICAgICRwYXJhbXNbJ211bHRpc2VsZWN0J11bJGldID0gKGludCkgJHBhcmFtc1snbXVsdGlzZWxlY3QnXVskaV07CiAgICB9CgogICAgc3dpdGNoICgkcGFyYW1zWydidWxrYWN0aW9uJ10pIHsKICAgICAgICBjYXNlICdkZWxldGUnOgogICAgICAgICAgICBmb3JlYWNoICgkcGFyYW1zWydtdWx0aXNlbGVjdCddIGFzICRpdGVtX2lkKSB7CiAgICAgICAgICAgICAgICAkcmVzID0gZ2VuZXJhdG9yX3Rvb2xzOjpkZXRlbGVfaXRlbSgkbW9kLCAoaW50KSAkaXRlbV9pZCk7CiAgICAgICAgICAgICAgICBAJG1vZC0+U2VuZEV2ZW50KCdJdGVtRGVsZXRlZCcsIGFycmF5KCdpdGVtX2lkJyA9PiAkaXRlbV9pZCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ3NldGFjdGl2ZSc6IHsKICAgICAgICAgICAgICAgICRxdWVyeSA9ICdVUERBVEUgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtIFNFVCBhY3RpdmUgPSA/LCBtb2RpZmllZF9kYXRlID0gTk9XKCkgV0hFUkUgaXRlbV9pZCBJTiAoJzsKICAgICAgICAgICAgICAgICRxdWVyeSAuPSBpbXBsb2RlKCcsJywgJHBhcmFtc1snbXVsdGlzZWxlY3QnXSkgLiAnKSc7CiAgICAgICAgICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoMSkpOwogICAgICAgICAgICAgICAgJHNlYXJjaCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnU2VhcmNoJyk7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFyYW1zWydtdWx0aXNlbGVjdCddIGFzICRpdGVtX2lkKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRzZWFyY2ggIT0gRkFMU0UpCiAgICAgICAgICAgICAgICAgICAgICAgICRzZWFyY2gtPkFkZFdvcmRzKCRtb2QtPkdldE5hbWUoKSwgJGl0ZW1faWQsICdpdGVtJywgZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfc2VhcmNoYWJsZV90ZXh0KCRtb2QsICRpdGVtX2lkKSwgZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfc2VhcmNoYWJsZV9kYXRlX2VuZCgpKTsKICAgICAgICAgICAgICAgICAgICBAJG1vZC0+U2VuZEV2ZW50KCdJdGVtRWRpdGVkJywgYXJyYXkoJ2l0ZW1faWQnID0+ICRpdGVtX2lkLCAnYWN0aXZlJyA9PiAxKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnc2V0aW5hY3RpdmUnOiB7CiAgICAgICAgICAgICAgICAkcXVlcnkgPSAnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbSBTRVQgYWN0aXZlID0gPywgbW9kaWZpZWRfZGF0ZSA9IE5PVygpIFdIRVJFIGl0ZW1faWQgSU4gKCc7CiAgICAgICAgICAgICAgICAkcXVlcnkgLj0gaW1wbG9kZSgnLCcsICRwYXJhbXNbJ211bHRpc2VsZWN0J10pIC4gJyknOwogICAgICAgICAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KDApKTsKICAgICAgICAgICAgICAgIC8vVXBkYXRlIHNlYXJjaCBpbmRleAogICAgICAgICAgICAgICAgJHNlYXJjaCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnU2VhcmNoJyk7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFyYW1zWydtdWx0aXNlbGVjdCddIGFzICRpdGVtX2lkKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRzZWFyY2ggIT0gRkFMU0UpCiAgICAgICAgICAgICAgICAgICAgICAgICRzZWFyY2gtPkRlbGV0ZVdvcmRzKCRtb2QtPkdldE5hbWUoKSwgJGl0ZW1faWQsICdpdGVtJyk7CiAgICAgICAgICAgICAgICAgICAgQCRtb2QtPlNlbmRFdmVudCgnSXRlbUVkaXRlZCcsIGFycmF5KCdpdGVtX2lkJyA9PiAkaXRlbV9pZCwgJ2FjdGl2ZScgPT4gMCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgfQp9CgokbW9kLT5TZXRtZXNzYWdlKCRtb2QtPkxhbmcoJ29wZXJhdGlvbl9jb21wbGV0ZScpKTsKJG1vZC0+UmVkaXJlY3RUb1RhYigkaWQpOwojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_deletecategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKQogICAgZXhpdDsKCmlmICghJG1vZC0+Q2hlY2tQZXJtaXNzaW9uKCRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19tb2RpZnlfY2F0ZWdvcmllcycpKQogICAgcmV0dXJuOwoKCiRjYXRpZCA9ICcnOwppZiAoaXNzZXQoJHBhcmFtc1snY2F0aWQnXSkpIHsKICAgICRjYXRpZCA9ICRwYXJhbXNbJ2NhdGlkJ107Cn0KCi8vIEdldCB0aGUgY2F0ZWdvcnkgZGV0YWlscwokcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nLiRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jYXRlZ29yaWVzCiAgICAgICAgICAgV0hFUkUgY2F0ZWdvcnlfaWQgPSA/JzsKJHJvdyA9ICRkYi0+R2V0Um93KCRxdWVyeSwgYXJyYXkoJGNhdGlkKSk7CgovL1Jlc2V0IGFsbCBjYXRlZ29yaWVzIHVzaW5nIHRoaXMgcGFyZW50IHRvIGhhdmUgbm8gcGFyZW50ICgtMSkKJHF1ZXJ5ID0gJ1VQREFURSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nLiRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jYXRlZ29yaWVzIFNFVCBwYXJlbnRfaWQ9PywgbW9kaWZpZWRfZGF0ZT0nIC4gJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpIC4gJyBXSEVSRSBwYXJlbnRfaWQ9Pyc7CiRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KC0xLCAkY2F0aWQpKTsKCi8vTm93IHJlbW92ZSB0aGUgY2F0ZWdvcnkKJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlXyIuJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAiX2NhdGVnb3JpZXMgV0hFUkUgY2F0ZWdvcnlfaWQgPSA/IjsKJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNhdGlkKSk7CgovL0FuZCByZW1vdmUgaXQgZnJvbSBhbnkgYXJ0aWNsZXMKJHF1ZXJ5ID0gIlVQREFURSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV8iLiRtb2QtPl9HZXRNb2R1bGVBbGlhcygpLiJfaXRlbSBTRVQgY2F0ZWdvcnlfaWQgPSAtMSBXSEVSRSBjYXRlZ29yeV9pZCA9ID8iOwokZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkY2F0aWQpKTsKCkAkbW9kLT5TZW5kRXZlbnQoJ0NhdGVnb3J5RGVsZXRlZCcsIGFycmF5KCdjYXRlZ29yeV9pZCcgPT4gJGNhdGlkLCAnbmFtZScgPT4gJHJvd1snY2F0ZWdvcnlfbmFtZSddKSk7CgpnZW5lcmF0b3JfdG9vbHM6OnVwZGF0ZV9oaWVyYXJjaHlfcG9zaXRpb25zKCRtb2QpOwoKJG1vZC0+UmVkaXJlY3RUb1RhYigkaWQsICdjYXRlZ29yeXRhYicsICRwYXJhbXMpOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_deletefielddef.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkNCiAgICByZXR1cm47DQoNCiRmaWVsZGRlZl9pZCA9ICcnOw0KDQppZiAoaXNzZXQoJHBhcmFtc1snZmllbGRkZWZfaWQnXSkpIHsNCiAgICAkZmllbGRkZWZfaWQgPSAoaW50KSAkcGFyYW1zWydmaWVsZGRlZl9pZCddOw0KfQ0KDQppZiAoZW1wdHkoJGZpZWxkZGVmX2lkKSkgew0KICAgICRtb2QtPlNldEVycm9yKCRtb2QtPkxhbmcoJ2VtcHR5X3BhcmFtJykpOw0KICAgICRtb2QtPlJlZGlyZWN0VG9UYWIoJGlkLCAnZGVmYXVsYWN0aW9uJywgJHBhcmFtcyk7DQp9DQoNCi8vIGdldCBkZXRhaWxzDQokcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkZGVmIFdIRVJFIGZpZWxkZGVmX2lkID0gPyc7DQokcm93ID0gJGRiLT5HZXRSb3coJHF1ZXJ5LCBhcnJheSgkZmllbGRkZWZfaWQpKTsNCg0KLy8gZGVsZXRlIGZpZWxkIGRlZmluaXRpb25zDQokcXVlcnkgPSAnREVMRVRFIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZiBXSEVSRSBmaWVsZGRlZl9pZCA9ID8nOw0KJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGZpZWxkZGVmX2lkKSk7DQoNCi8vIGRlbGV0ZSBmaWVsZCB2YWx1ZXMNCiRxdWVyeSA9ICdERUxFVEUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIFdIRVJFIGZpZWxkZGVmX2lkID0gPyc7DQokZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkZmllbGRkZWZfaWQpKTsNCg0KDQovLyBhbGwgZG9uZQ0KJG1vZC0+U2V0bWVzc2FnZSgkbW9kLT5MYW5nKCdkZWxldGVkJykpOw0KJG1vZC0+UmVkaXJlY3RUb1RhYigkaWQsICdmaWVsZGRlZnRhYicsICRwYXJhbXMpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_deleteitem.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9pdGVtJykpDQogICAgcmV0dXJuOw0KDQokaXRlbV9pZCA9ICcnOw0KDQppZiAoaXNzZXQoJHBhcmFtc1snaXRlbV9pZCddKSkgew0KICAgICRpdGVtX2lkID0gKGludCkgJHBhcmFtc1snaXRlbV9pZCddOw0KfQ0KDQppZiAoZW1wdHkoJGl0ZW1faWQpKSB7DQogICAgJG1vZC0+U2V0RXJyb3IoJG1vZC0+TGFuZygnZW1wdHlfcGFyYW0nKSk7DQogICAgJG1vZC0+UmVkaXJlY3RUb1RhYigkaWQsICdkZWZhdWxhY3Rpb24nLCAkcGFyYW1zKTsNCn0NCg0KZ2VuZXJhdG9yX3Rvb2xzOjpkZXRlbGVfaXRlbSgkbW9kLCAkaXRlbV9pZCk7DQoNCiRtb2QtPlNldG1lc3NhZ2UoJG1vZC0+TGFuZygnZGVsZXRlZCcpKTsNCiRtb2QtPlJlZGlyZWN0VG9UYWIoJGlkLCAnZGVmYXVsdGFkbWluJywgJHBhcmFtcyk7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_deletetemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghJG1vZC0+Q2hlY2tQZXJtaXNzaW9uKCRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19tb2RpZnlfb3B0aW9uJykpIHJldHVybjsNCg0KJHRwbF9pZCA9ICcnOw0KDQppZiAoaXNzZXQoJHBhcmFtc1sndHBsX2lkJ10pKSB7DQoJJHRwbF9pZCA9IChpbnQpJHBhcmFtc1sndHBsX2lkJ107DQp9DQoNCi8vIGdldCBkZXRhaWxzDQokcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX3RlbXBsYXRlIFdIRVJFIHRwbF9pZCA9ID8nOw0KJHJvdyA9ICRkYi0+R2V0Um93KCRxdWVyeSwgYXJyYXkoJHRwbF9pZCkpOw0KDQovLyBkZWxldGUgcmVjb3JkDQokcXVlcnkgPSAnREVMRVRFIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ190ZW1wbGF0ZSBXSEVSRSB0cGxfaWQgPSA/JzsNCiRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR0cGxfaWQpKTsNCg0KLy8gYWxsIGRvbmUNCiRtb2QtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZV90YWInID0+ICd0ZW1wbGF0ZXRhYicsICdtZXNzYWdlJyA9PiAnZGVsZXRlZCcpKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_editcategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKQogICAgZXhpdDsKCgppZiAoISRtb2QtPkNoZWNrUGVybWlzc2lvbigkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfbW9kaWZ5X2NhdGVnb3JpZXMnKSkKICAgIHJldHVybjsKCmlmIChpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpIHsKICAgICRtb2QtPlJlZGlyZWN0VG9UYWIoJGlkLCAnY2F0ZWdvcnl0YWInKTsKfQoKJGl0ZW1faWQgPSAkY2F0aWQgPSBudWxsOwppZiAoaXNzZXQoJHBhcmFtc1snY2F0aWQnXSkpIHsKICAgICRpdGVtX2lkID0gJGNhdGlkID0gJHBhcmFtc1snY2F0aWQnXTsKfQoKJHBhcmVudGlkID0gJy0xJzsKaWYgKGlzc2V0KCRwYXJhbXNbJ3BhcmVudCddKSkgewogICAgJHBhcmVudGlkID0gJHBhcmFtc1sncGFyZW50J107Cn0KCiRvcmlnbmFtZSA9ICcnOwppZiAoaXNzZXQoJHBhcmFtc1snb3JpZ25hbWUnXSkpIHsKICAgICRvcmlnbmFtZSA9ICRwYXJhbXNbJ29yaWduYW1lJ107Cn0KCiRhbGlhcyA9ICcnOwppZiAoaXNzZXQoJHBhcmFtc1snYWxpYXMnXSkpIHsKICAgICRhbGlhcyA9IG11bmdlX3N0cmluZ190b191cmwoJHBhcmFtc1snYWxpYXMnXSwgdHJ1ZSk7Cn0KCiRleHRyYSA9ICcnOwppZiAoaXNzZXQoJHBhcmFtc1snZXh0cmEnXSkpIHsKICAgICRleHRyYSA9ICRwYXJhbXNbJ2V4dHJhJ107Cn0KCiRleHRyYTIgPSAnJzsKaWYgKGlzc2V0KCRwYXJhbXNbJ2V4dHJhMiddKSkgewogICAgJGV4dHJhMiA9ICRwYXJhbXNbJ2V4dHJhMiddOwp9CgokdXNlcmdyb3VwID0gJyc7CmlmIChpc3NldCgkcGFyYW1zWyd1c2VyZ3JvdXAnXSkpIHsKICAgICR1c2VyZ3JvdXAgPSAkcGFyYW1zWyd1c2VyZ3JvdXAnXTsKfQoKLy8gZ2V0IHRoZSBjdXN0b20gZmllbGRzCiRmaWx0ZXJzID0gbmV3IGdlbmVyYXRvcl9maWx0ZXJzKCRpZCwgJG1vZCwgJ2FkbWluJyk7CiR0bXAgPSBnZW5lcmF0b3JfZmllbGRzOjpnZXRfZmllbGRzX2Zvcl9maWx0ZXJzKCRtb2QsIGFycmF5KCksICdjYXRlZ29yaWVzJyk7CiRjdXN0b21fZmxkcyA9ICRmaWx0ZXJzLT5wcm9jZXNzX2N1c3RvbV9maWVsZHMoYXJyYXkoKSwgJHRtcCk7CgokbmFtZSA9ICcnOwokZXJyb3JzID0gYXJyYXkoKTsKaWYgKGlzc2V0KCRwYXJhbXNbJ25hbWUnXSkpIHsKICAgICRuYW1lID0gJHBhcmFtc1snbmFtZSddOwogICAgaWYgKCRuYW1lID09ICcnKSB7CiAgICAgICAgJGVycm9yc1tdID0gJG1vZC0+U2hvd0Vycm9ycyhnZW5lcmF0b3IoKS0+TGFuZygnbm9uYW1lZ2l2ZW4nKSk7CiAgICB9CgogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2N1c3RvbWZpZWxkJ10pKSB7CiAgICAgICAgZm9yZWFjaCAoJHBhcmFtc1snY3VzdG9tZmllbGQnXSBhcyAkZmxkaWQgPT4gJHZhbHVlKSB7CgogICAgICAgICAgICBpZiAoJHZhbHVlID09ICdzZWxlY3RfZGVmYXVsdCcpIHsKICAgICAgICAgICAgICAgICRwYXJhbXNbJ2N1c3RvbWZpZWxkJ11bJGZsZGlkXSA9ICcnOwogICAgICAgICAgICAgICAgJHZhbHVlID0gJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHJlcXVpcmVkIGZpZWxkcwogICAgICAgICAgICBpZiAoJHZhbHVlID09ICcnICYmICRjdXN0b21fZmxkc1skZmxkaWRdWydyZXF1aXJlZCddICYmICgkY3VzdG9tX2ZsZHNbJGZsZGlkXVsnZWRpdHZpZXcnXSAmJiBpc1NldCgkcGFyYW1zWyJpdGVtX2lkIl0pKSkgewogICAgICAgICAgICAgICAgJGVycm9yc1tdID0gZ2VuZXJhdG9yKCktPkxhbmcoJ3JlcXVpcmVkX2ZpZWxkX2VtcHR5JykgLiAnICgnIC4gJGN1c3RvbV9mbGRzWyRmbGRpZF1bJ25hbWUnXSAuICcpJzsKICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBvbmx5IGRpc3BsYXkgb25lIGVycm9yIG1lc3NhZ2UgYXQgYSB0aW1lCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIG1heCBsZW5ndGgKICAgICAgICAgICAgaWYgKGlzc2V0KCRjdXN0b21fZmxkc1skZmxkaWRdWydtYXhfbGVuZ3RoJ10pICYmIG1iX3N0cmxlbigkdmFsdWUpID4gJGN1c3RvbV9mbGRzWyRmbGRpZF1bJ21heF9sZW5ndGgnXSkgewogICAgICAgICAgICAgICAgJGVycm9yc1tdID0gZ2VuZXJhdG9yKCktPkxhbmcoJ3Rvb19sb25nJykgLiAnICgnIC4gJGN1c3RvbV9mbGRzWyRmbGRpZF1bJ25hbWUnXSAuICcpJzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBvcHRpb25zCiAgICAgICAgICAgIGlmICgkdmFsdWUgIT0gJycgJiYgaXNzZXQoJGN1c3RvbV9mbGRzWyRmbGRpZF1bJ29wdGlvbnMnXSkgJiYgIWFycmF5X2tleV9leGlzdHMoJHZhbHVlLCAkY3VzdG9tX2ZsZHNbJGZsZGlkXVsnb3B0aW9ucyddKSkgewogICAgICAgICAgICAgICAgJGVycm9yc1tdID0gZ2VuZXJhdG9yKCktPkxhbmcoJ2ludmFsaWQnKSAuICcgKCcgLiAkY3VzdG9tX2ZsZHNbJGZsZGlkXVsnbmFtZSddIC4gJyknOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLy8gZGlzcGxheSBlcnJvcnMgaWYgdGhlcmUgYXJlIGFueQogICAgaWYgKCFlbXB0eSgkZXJyb3JzKSkgewogICAgICAgIGVjaG8gJG1vZC0+U2hvd0Vycm9ycygkZXJyb3JzKTsKICAgIH0gZWxzZSB7CgogICAgICAgIGlmICgkY2F0aWQgIT0gbnVsbCkgewogICAgICAgICAgICAkcXVlcnkgPSAnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllcyBTRVQgY2F0ZWdvcnlfbmFtZSA9ID8sY2F0ZWdvcnlfYWxpYXMgPSA/LGV4dHJhID0gPyxleHRyYTIgPSA/LCB1c2VyZ3JvdXAgPSA/LCBwYXJlbnRfaWQgPSA/LCBtb2RpZmllZF9kYXRlID0gJyAuICRkYi0+REJUaW1lU3RhbXAodGltZSgpKSAuICcgV0hFUkUgY2F0ZWdvcnlfaWQgPSA/JzsKICAgICAgICAgICAgJHBhcm1zID0gYXJyYXkoJG5hbWUsICRhbGlhcywgJGV4dHJhLCAkZXh0cmEyLCAkdXNlcmdyb3VwLCAkcGFyZW50aWQpOwogICAgICAgICAgICAkcGFybXNbXSA9ICRjYXRpZDsKICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgJHBhcm1zKTsKICAgICAgICAgICAgQCRtb2QtPlNlbmRFdmVudCgnQ2F0ZWdvcnlFZGl0ZWQnLCBhcnJheSgnY2F0ZWdvcnlfaWQnID0+ICRjYXRpZCwgJ25hbWUnID0+ICRuYW1lKSk7CiAgICAgICAgICAgICRycGFybXMgPSBhcnJheSgndGFiX21lc3NhZ2UnID0+ICdjYXRlZ29yeXVwZGF0ZWQnKTsKICAgICAgICAgICAgZ2VuZXJhdG9yX3Rvb2xzOjp1cGRhdGVfaGllcmFyY2h5X3Bvc2l0aW9ucygkbW9kKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGltZSA9ICRkYi0+REJUaW1lU3RhbXAodGltZSgpKTsKICAgICAgICAgICAgJHBvc2l0aW9uID0gJGRiLT5HZXRPbmUoJ1NFTEVDVCBNQVgocG9zaXRpb24pIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jYXRlZ29yaWVzIFdIRVJFIHBhcmVudF9pZCA9ID8nLCBhcnJheShpbnR2YWwoJHBhcmVudGlkKSkpOyAgICAgICAgICAgIAogICAgICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jYXRlZ29yaWVzIChjYXRlZ29yeV9pZCwgY2F0ZWdvcnlfbmFtZSwgY2F0ZWdvcnlfYWxpYXMsIGV4dHJhLCBleHRyYTIsIHVzZXJncm91cCwgcGFyZW50X2lkLCBwb3NpdGlvbiwgY3JlYXRlX2RhdGUsIG1vZGlmaWVkX2RhdGUpIFZBTFVFUyAoPyw/LD8sPyw/LD8sPyw/LCcgLiAkdGltZSAuICcsJyAuICR0aW1lIC4gJyknOwogICAgICAgICAgICAkcGFybXMgPSBhcnJheSgkY2F0aWQsICRuYW1lLCAkYWxpYXMsICRleHRyYSwgJGV4dHJhMiwgJHVzZXJncm91cCwgaW50dmFsKCRwYXJlbnRpZCksICRwb3NpdGlvbik7CiAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksICRwYXJtcyk7CiAgICAgICAgICAgICRjYXRpZCA9ICRpdGVtX2lkID0gJGRiLT5JbnNlcnRfSUQoKTsKICAgICAgICAgICAgQCRtb2QtPlNlbmRFdmVudCgnQ2F0ZWdvcnlBZGRlZCcsIGFycmF5KCdjYXRlZ29yeV9pZCcgPT4gJGNhdGlkLCAnbmFtZScgPT4gJG5hbWUpKTsKICAgICAgICAgICAgJHJwYXJtcyA9IGFycmF5KCd0YWJfbWVzc2FnZScgPT4gJ2NhdGVnb3J5YWRkZWQnKTsKICAgICAgICAgICAgZ2VuZXJhdG9yX3Rvb2xzOjp1cGRhdGVfaGllcmFyY2h5X3Bvc2l0aW9ucygkbW9kKTsKICAgICAgICAgICAgZ2VuZXJhdG9yX3Rvb2xzOjp1cGRhdGVfaGllcmFyY2h5X3Bvc2l0aW9ucygkbW9kKTsKICAgICAgICB9CiAgICAgICAgLy8gaGFuZGxlIHVwbG9hZGluZyBvZiBmaWxlIGZpZWxkcwogICAgICAgIGZvcmVhY2ggKCRjdXN0b21fZmxkcyBhcyAkY3VzdG9tX2ZsZCkgewogICAgICAgICAgICBpZiAoJGN1c3RvbV9mbGRbJ3R5cGUnXSAhPSAndXBsb2FkX2ZpbGUnKQogICAgICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgICAkZWxlbSA9ICRpZCAuICdjdXN0b21maWVsZF8nIC4gJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ107CiAgICAgICAgICAgIC8vICRlbGVtIGxvb2tzIGxpa2UgbTFfY3VzdG9tZmllbGRfMQogICAgICAgICAgICAvLyBjaGVjayBpZiBmaWxlIHdhcyB1cGxvYWRlZCBmb3IgdGhpcyBmaWVsZAogICAgICAgICAgICBpZiAoaXNzZXQoJF9GSUxFU1skZWxlbV0pICYmICRfRklMRVNbJGVsZW1dWyduYW1lJ10gIT0gJycpIHsKCiAgICAgICAgICAgICAgICBpZiAoJF9GSUxFU1skZWxlbV1bJ2Vycm9yJ10gIT0gMCB8fCAkX0ZJTEVTWyRlbGVtXVsndG1wX25hbWUnXSA9PSAnJykgewogICAgICAgICAgICAgICAgICAgICRlcnJvcnNbXSA9IGdlbmVyYXRvcigpLT5MYW5nKCdlcnJvcl91cGxvYWQnKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gZ2VuZXJhdG9yX3Rvb2xzOjpoYW5kbGVfdXBsb2FkKCRtb2QsICRpdGVtX2lkLCAkZWxlbSwgJGVycm9yLCAkY3VzdG9tX2ZsZFsnYWxsb3cnXSwgJHJvdyk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkdmFsdWUgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRlcnJvcnNbXSA9ICRlcnJvcjsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3B1bGF0ZSAkcGFyYW1zWydjdXN0b21maWVsZCddCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgd291bGQgaG9sZCB0aGUgdXBsb2FkZWQgZmlsZW5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBpbnNlcnRlZCBpbnRvIHRoZSBkYXRhYmFzZSBiZWxvdwogICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1zWydjdXN0b21maWVsZCddWyRjdXN0b21fZmxkWydmaWVsZGRlZl9pZCddXSA9ICR2YWx1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gaGFuZGxlIGluc2VydGluZyBjdXN0b20gZmllbGRzIGludG8gZGF0YWJhc2UKICAgICAgICBpZiAoaXNzZXQoJHBhcmFtc1snY3VzdG9tZmllbGQnXSkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJHBhcmFtc1snY3VzdG9tZmllbGQnXSBhcyAkZmxkaWQgPT4gJHZhbHVlKSB7CgogICAgICAgICAgICAgICAgaWYgKGlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCR2YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9IGltcGxvZGUoJywnLCAkdmFsdWUpOwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gJyc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgcm93IGV4aXN0cyB0byBkZXRlcm1pbmUgd2hldGhlciB0byBpbnNlcnQgb3IgdXBkYXRlCiAgICAgICAgICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIHZhbHVlIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBXSEVSRSBpdGVtX2lkID0gPyBBTkQgZmllbGRkZWZfaWQgPSA/JzsKICAgICAgICAgICAgICAgICR0bXAgPSAkZGItPkdldE9uZSgkcXVlcnksIGFycmF5KCRpdGVtX2lkLCAkZmxkaWQpKTsKICAgICAgICAgICAgICAgIC8vIHJvdyBkb2VzIG5vdCBleGlzdAogICAgICAgICAgICAgICAgaWYgKCR0bXAgPT0gIiIpIHsKICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IGluc2VydCByb3cgaWYgZmllbGQgdmFsdWUgaXMgbm90IGVtcHR5CiAgICAgICAgICAgICAgICAgICAgaWYgKCR2YWx1ZSAhPSAiIikgewogICAgICAgICAgICAgICAgICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCAoaXRlbV9pZCwgZmllbGRkZWZfaWQsIHZhbHVlKSBWQUxVRVMgKD8sID8sID8pJzsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtX2lkLCAkZmxkaWQsICR2YWx1ZSkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAvLyByb3cgYWxyZWFkeSBleGlzdHMKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gZGVsZXRlIHJvdyBpZiBmaWVsZCB2YWx1ZSBpcyBlbXB0eQogICAgICAgICAgICAgICAgICAgIGlmICgkdmFsdWUgPT0gIiIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgV0hFUkUgaXRlbV9pZCA9ID8gQU5EIGZpZWxkZGVmX2lkID0gPyc7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbV9pZCwgJGZsZGlkKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSByb3cKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkcXVlcnkgPSAnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgU0VUIHZhbHVlID0gPyBXSEVSRSBpdGVtX2lkID0gPyBBTkQgZmllbGRkZWZfaWQgPSA/JzsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR2YWx1ZSwgJGl0ZW1faWQsICRmbGRpZCkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gZGVsZXRlIHZhbHVlIGZyb20gZmlsZSBmaWVsZAogICAgICAgIGlmIChpc3NldCgkcGFyYW1zWydkZWxldGVfY3VzdG9tZmllbGQnXSkgJiYgaXNfYXJyYXkoJHBhcmFtc1snZGVsZXRlX2N1c3RvbWZpZWxkJ10pKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRwYXJhbXNbJ2RlbGV0ZV9jdXN0b21maWVsZCddIGFzICRrID0+ICR2KSB7CiAgICAgICAgICAgICAgICBpZiAoJHYgIT0gJ2RlbGV0ZScpCiAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIHNraXAgaWYgbm90IGRlbGV0aW5nIGFueXRoaW5nCgogICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgV0hFUkUgaXRlbV9pZCA9ID8gQU5EIGZpZWxkZGVmX2lkID0gPyc7CiAgICAgICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbV9pZCwgJGspKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgICAgICRtb2QtPlJlZGlyZWN0VG9UYWIoJGlkLCAnY2F0ZWdvcnl0YWInLCAkcnBhcm1zKTsKICAgIH0KfSBlbHNlIHsKICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllcyBXSEVSRSBjYXRlZ29yeV9pZCA9ID8nOwogICAgJHJvdyA9ICRkYi0+R2V0Um93KCRxdWVyeSwgYXJyYXkoJGNhdGlkKSk7CgogICAgaWYgKCRyb3cpIHsKICAgICAgICAkbmFtZSA9ICRyb3dbJ2NhdGVnb3J5X25hbWUnXTsKICAgICAgICAkYWxpYXMgPSAkcm93WydjYXRlZ29yeV9hbGlhcyddOwogICAgICAgICRleHRyYSA9ICRyb3dbJ2V4dHJhJ107CiAgICAgICAgJGV4dHJhMiA9ICRyb3dbJ2V4dHJhMiddOwogICAgICAgICR1c2VyZ3JvdXAgPSAkcm93Wyd1c2VyZ3JvdXAnXTsKICAgICAgICAkcGFyZW50aWQgPSAkcm93WydwYXJlbnRfaWQnXTsKICAgIH0KfQoKCiNEaXNwbGF5IHRlbXBsYXRlCiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkbW9kLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnYWRtaW5fZWRpdGNhdGVnb3J5JywgJHJldHVybmlkKSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJG1vZC0+Q3JlYXRlRm9ybUVuZCgpKTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ25hbWV0ZXh0JywgZ2VuZXJhdG9yKCktPkxhbmcoJ25hbWUnKSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdhbGlhc3RleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnYWxpYXMnKSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdleHRyYXRleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnZXh0cmEnKSk7CgokbW9kLT5zbWFydHktPmFzc2lnbignaW5wdXRuYW1lJywgJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ25hbWUnLCAkbmFtZSwgMjAsIDI1NSkpOwokbW9kLT5zbWFydHktPmFzc2lnbignaW5wdXRhbGlhcycsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdhbGlhcycsICRhbGlhcywgMjAsIDI1NSkpOwokbW9kLT5zbWFydHktPmFzc2lnbignaW5wdXRleHRyYScsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdleHRyYScsICRleHRyYSwgMjAsIDI1NSkpOwokbW9kLT5zbWFydHktPmFzc2lnbignaW5wdXRleHRyYTInLCAkbW9kLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZXh0cmEyJywgJGV4dHJhMiwgMjAsIDI1NSkpOwoKCiRncm91cG9wcyA9IGNtc21zKCktPkdldEdyb3VwT3BlcmF0aW9ucygpOwokZ3JvdXBsaXN0ID0gJGdyb3Vwb3BzLT5Mb2FkR3JvdXBzKCk7CiR1c2VyZ3JvdXBzID0gZXh0ZW5kZWRfdG9vbHNfb3B0czo6b2JqZWN0X3RvX2hhc2goJGdyb3VwbGlzdCwgJ25hbWUnLCAnaWQnKTsKCiR1c2VyZ3JvdXBzID0gYXJyYXlfbWVyZ2UoYXJyYXkobGFuZygnbm9uZScpID0+ICcnKSwgJHVzZXJncm91cHMpOwokbW9kLT5zbWFydHktPmFzc2lnbignaW5wdXR1c2VyZ3JvdXAnLCAkbW9kLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3VzZXJncm91cCcsICR1c2VyZ3JvdXBzLCAtMSwgJHVzZXJncm91cCkpOwoKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ3BhcmVudGRyb3Bkb3duJywgZ2VuZXJhdG9yX3Rvb2xzOjpjcmVhdGVfcGFyZW50X2Ryb3Bkb3duKCR0aGlzLCAkaWQsICRjYXRpZCwgJHBhcmVudGlkKSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdoaWRkZW4nLCAkbW9kLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdjYXRpZCcsICRjYXRpZCkgLgogICAgICAgICRtb2QtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ29yaWduYW1lJywgJG5hbWUpKTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICRtb2QtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsIGxhbmcoJ3N1Ym1pdCcpKSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkbW9kLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjYW5jZWwnLCBsYW5nKCdjYW5jZWwnKSkpOwokbW9kLT5zbWFydHktPmFzc2lnbigncGFyZW50dGV4dCcsIGxhbmcoJ3BhcmVudCcpKTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ3VzZXJncm91cHRleHQnLCBsYW5nKCdncm91cCcpKTsKCiRjdXN0b21fZmxkc19vYmogPSAkZmlsdGVycy0+Z2VuZXJhdGUoJGl0ZW1faWQsICRwYXJhbXMpOwppZiAoaXNzZXQoJGN1c3RvbV9mbGRzX29iaikgJiYgY291bnQoJGN1c3RvbV9mbGRzX29iaikgPiAwKSB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2N1c3RvbV9maWVsZGRlZicsICRjdXN0b21fZmxkc19vYmopOwp9CgoKZWNobyAkbW9kLT5Qcm9jZXNzVGVtcGxhdGUoJ2VkaXRjYXRlZ29yeS50cGwnKTsKPz4K]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_editfielddef.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkNCiAgICByZXR1cm47DQoNCmlmIChpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpIHsNCiAgICAkcGFyYW1zID0gYXJyYXkoJ2FjdGl2ZV90YWInID0+ICdmaWVsZGRlZnRhYicpOw0KICAgICRtb2QtPlJlZGlyZWN0VG9UYWIoJGlkLCAnZmllbGRkZWZ0YWInKTsNCn0NCg0KJGRiID0gJG1vZC0+R2V0RGIoKTsNCiRmaWVsZGRlZl9pZCA9IG51bGw7DQokbmFtZSA9ICcnOw0KJGFsaWFzID0gJyc7DQokaGVscCA9ICcnOw0KJHR5cGUgPSAnJzsNCiRyZXF1aXJlZCA9IDA7DQokZnJvbnRlbmQgPSAxOw0KJGVkaXR2aWV3ID0gMDsNCiRmaWx0ZXJfZnJvbnRlbmQgPSAwOw0KJGZpbHRlcl9hZG1pbiA9IDA7DQokc2VhcmNoYWJsZSA9IDA7DQokZXh0cmEgPSAnJzsNCiRzZWN0aW9uPSAnaXRlbXMnOw0KJGVycm9ycyA9IGFycmF5KCk7DQoNCi8vIGlmICRwYXJhbXNbJ2ZpZWxkZGVmX2lkJ10gaXMgc3VwcGxpZWQgYW5kIGV4aXN0cywgcG9wdWxhdGUgd2l0aCB2YWx1ZXMgZnJvbSBkYXRhYmFzZQ0KDQppZiAoaXNzZXQoJHBhcmFtc1snZmllbGRkZWZfaWQnXSkpIHsNCiAgICAkZmllbGRkZWZfaWQgPSAoaW50KSAkcGFyYW1zWydmaWVsZGRlZl9pZCddOw0KICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGRkZWYgV0hFUkUgZmllbGRkZWZfaWQgPSA/JzsNCiAgICAkcm93ID0gJGRiLT5HZXRSb3coJHF1ZXJ5LCBhcnJheSgkZmllbGRkZWZfaWQpKTsNCg0KICAgIGlmICgkcm93KSB7DQogICAgICAgICRuYW1lID0gJHJvd1snbmFtZSddOw0KICAgICAgICAkYWxpYXMgPSAkcm93WydhbGlhcyddOw0KICAgICAgICAkaGVscCA9ICRyb3dbJ2hlbHAnXTsNCiAgICAgICAgJHR5cGUgPSAkcm93Wyd0eXBlJ107DQogICAgICAgICRyZXF1aXJlZCA9ICRyb3dbJ3JlcXVpcmVkJ107DQogICAgICAgICRmcm9udGVuZCA9ICRyb3dbJ2Zyb250ZW5kJ107DQogICAgICAgICRlZGl0dmlldyA9ICRyb3dbJ2VkaXR2aWV3J107DQogICAgICAgICRmaWx0ZXJfZnJvbnRlbmQgPSAkcm93WydmaWx0ZXJfZnJvbnRlbmQnXTsNCiAgICAgICAgJGZpbHRlcl9hZG1pbiA9ICRyb3dbJ2ZpbHRlcl9hZG1pbiddOw0KICAgICAgICAkc2VhcmNoYWJsZSA9ICRyb3dbJ3NlYXJjaGFibGUnXTsNCiAgICAgICAgJGV4dHJhID0gJHJvd1snZXh0cmEnXTsNCiAgICAgICAgJHNlY3Rpb24gPSAkcm93WydzZWN0aW9uJ107DQogICAgfSBlbHNlIHsNCiAgICAgICAgJGZpZWxkZGVmX2lkID0gbnVsbDsNCiAgICB9DQp9DQoNCi8vIGhhbmRsZSBzdWJtaXQgb3IgYXBwbHkNCmlmIChpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgfHwgaXNzZXQoJHBhcmFtc1snYXBwbHknXSkpIHsNCiAgICAkbmFtZSA9ICRwYXJhbXNbJ25hbWUnXTsNCiAgICAkYWxpYXMgPSAkcGFyYW1zWydhbGlhcyddOw0KICAgICRoZWxwID0gJHBhcmFtc1snaGVscCddOw0KICAgICR0eXBlID0gJHBhcmFtc1sndHlwZSddOw0KICAgICRyZXF1aXJlZCA9IChpc3NldCgkcGFyYW1zWydyZXF1aXJlZCddKSA/IDEgOiAwKTsNCiAgICAkZnJvbnRlbmQgPSAoaXNzZXQoJHBhcmFtc1snZnJvbnRlbmQnXSkgPyAxIDogMCk7DQogICAgJGVkaXR2aWV3ID0gKGlzc2V0KCRwYXJhbXNbJ2VkaXR2aWV3J10pID8gMSA6IDApOw0KICAgICRmaWx0ZXJfZnJvbnRlbmQgPSAoaXNzZXQoJHBhcmFtc1snZmlsdGVyX2Zyb250ZW5kJ10pID8gMSA6IDApOw0KICAgICRmaWx0ZXJfYWRtaW4gPSAoaXNzZXQoJHBhcmFtc1snZmlsdGVyX2FkbWluJ10pID8gMSA6IDApOw0KICAgICRzZWFyY2hhYmxlID0gKGlzc2V0KCRwYXJhbXNbJ3NlYXJjaGFibGUnXSkgPyAxIDogMCk7DQogICAgJGV4dHJhID0gJHBhcmFtc1snZXh0cmEnXTsNCiAgICAkc2VjdGlvbiA9ICRwYXJhbXNbJ3NlY3Rpb24nXTsNCg0KICAgIC8vIGNoZWNrIG5hbWUNCiAgICBpZiAoJG5hbWUgPT0gJycpIHsNCiAgICAgICAgJGVycm9yc1tdID0gZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmX25hbWVfZW1wdHknKTsNCiAgICB9DQoNCiAgICBpZiAoaXNzZXQoJGZpZWxkZGVmX2lkKSkgew0KICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIGZpZWxkZGVmX2lkIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZiBXSEVSRSBuYW1lID0gPyBBTkQgZmllbGRkZWZfaWQgIT0gPyc7DQogICAgICAgICRleGlzdHMgPSAkZGItPkdldE9uZSgkcXVlcnksIGFycmF5KCRuYW1lLCAkZmllbGRkZWZfaWQpKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIGZpZWxkZGVmX2lkIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZiBXSEVSRSBuYW1lID0gPyc7DQogICAgICAgICRleGlzdHMgPSAkZGItPkdldE9uZSgkcXVlcnksIGFycmF5KCRuYW1lKSk7DQogICAgfQ0KDQogICAgaWYgKCRleGlzdHMpIHsNCiAgICAgICAgJGVycm9yc1tdID0gZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmX25hbWVfZXhpc3RzJyk7DQogICAgfQ0KDQogICAgLy8gZ2VuZXJhdGUgYWxpYXMgaWYgbm90IHN1cHBsaWVkDQogICAgaWYgKCRhbGlhcyA9PSAnJykgew0KICAgICAgICAkYWxpYXMgPSBnZW5lcmF0b3JfdG9vbHM6OmdlbmVyYXRlX2FsaWFzKCRuYW1lKTsNCiAgICB9DQoNCiAgICAvLyBjaGVjayBhbGlhcw0KICAgIGlmICghZ2VuZXJhdG9yX3Rvb2xzOjppc192YWxpZF9hbGlhcygkYWxpYXMpKSB7DQogICAgICAgICRlcnJvcnNbXSA9IGdlbmVyYXRvcigpLT5MYW5nKCdhbGlhc19pbnZhbGlkJyk7DQogICAgfQ0KDQogICAgaWYgKGVtcHR5KCRlcnJvcnMpKSB7DQogICAgICAgIC8vIHVwZGF0ZQ0KICAgICAgICBpZiAoaXNzZXQoJGZpZWxkZGVmX2lkKSkgew0KICAgICAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkZGVmIFNFVCBuYW1lID0gPywgYWxpYXMgPSA/LCBoZWxwID0gPywgdHlwZSA9ID8sIHJlcXVpcmVkID0gPywgZnJvbnRlbmQgPSA/LCBlZGl0dmlldyA9ID8sIGZpbHRlcl9mcm9udGVuZCA9ID8sIGZpbHRlcl9hZG1pbiA9ID8sIHNlYXJjaGFibGUgPSA/LCBleHRyYSA9ID8sIHNlY3Rpb24gPSA/IFdIRVJFIGZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5hbWUsICRhbGlhcywgJGhlbHAsICR0eXBlLCAkcmVxdWlyZWQsICRmcm9udGVuZCwgJGVkaXR2aWV3LCAkZmlsdGVyX2Zyb250ZW5kLCAkZmlsdGVyX2FkbWluLCAkc2VhcmNoYWJsZSwgJGV4dHJhLCAkc2VjdGlvbiwgJGZpZWxkZGVmX2lkKSk7DQogICAgICAgICAgICBpZiAoISRyZXN1bHQpDQogICAgICAgICAgICAgICAgZGllKCdGQVRBTCBTUUwgRVJST1I6ICcgLiAkZGItPkVycm9yTXNnKCkgLiAnPGJyLz5RVUVSWTogJyAuICRkYi0+c3FsKTsNCg0KICAgICAgICAgICAgLy8gaW5zZXJ0DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkcG9zaXRpb24gPSAkZGItPkdldE9uZSgnU0VMRUNUIG1heChwb3NpdGlvbikgKyAxIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZicpOw0KDQogICAgICAgICAgICBpZiAoJHBvc2l0aW9uID09IG51bGwpIHsNCiAgICAgICAgICAgICAgICAkcG9zaXRpb24gPSAxOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZiAobmFtZSwgYWxpYXMsIGhlbHAsIHR5cGUsIHBvc2l0aW9uLCByZXF1aXJlZCwgZnJvbnRlbmQsIGVkaXR2aWV3LCBmaWx0ZXJfZnJvbnRlbmQsIGZpbHRlcl9hZG1pbiwgc2VhcmNoYWJsZSwgZXh0cmEsIHNlY3Rpb24pIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPyknOw0KICAgICAgICAgICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRuYW1lLCAkYWxpYXMsICRoZWxwLCAkdHlwZSwgJHBvc2l0aW9uLCAkcmVxdWlyZWQsICRmcm9udGVuZCwgJGVkaXR2aWV3LCAkZmlsdGVyX2Zyb250ZW5kLCAkYWRtaW5fYWRtaW4sICRzZWFyY2hhYmxlLCAkZXh0cmEsICRzZWN0aW9uKSk7DQogICAgICAgICAgICBpZiAoISRyZXN1bHQpDQogICAgICAgICAgICAgICAgZGllKCdGQVRBTCBTUUwgRVJST1I6ICcgLiAkZGItPkVycm9yTXNnKCkgLiAnPGJyLz5RVUVSWTogJyAuICRkYi0+c3FsKTsNCg0KICAgICAgICAgICAgLy8gcG9wdWxhdGUgJGZpZWxkZGVmX2lkIGZvciBuZXdseSBpbnNlcnRlZCBpdGVtDQogICAgICAgICAgICAkZmllbGRkZWZfaWQgPSAkZGItPkluc2VydF9JRCgpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCFpc3NldCgkcGFyYW1zWydhcHBseSddKSkgew0KICAgICAgICAgICAgJG1vZC0+UmVkaXJlY3RUb1RhYigkaWQsICRzZWN0aW9uLCBhcnJheSgpLCAnYWRtaW5fZmllbGRzJyk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBlY2hvICRtb2QtPlNob3dNZXNzYWdlKGdlbmVyYXRvcigpLT5MYW5nKCdjaGFuZ2Vzc2F2ZWQnKSk7DQogICAgICAgIH0NCiAgICB9DQp9DQoNCi8vIGRpc3BsYXkgZXJyb3JzIGlmIHRoZXJlIGFyZSBhbnkNCmlmICghZW1wdHkoJGVycm9ycykpIHsNCiAgICBlY2hvICRtb2QtPlNob3dFcnJvcnMoJGVycm9ycyk7DQp9DQoNCiRzbWFydHktPmFzc2lnbigndGl0bGUnLCAoaXNzZXQoJGZpZWxkZGVmX2lkKSA/IGdlbmVyYXRvcigpLT5MYW5nKCdlZGl0ZmllbGRkZWYnKSA6IGdlbmVyYXRvcigpLT5MYW5nKCdhZGRmaWVsZGRlZicpKSk7DQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICRtb2QtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdhZG1pbl9lZGl0ZmllbGRkZWYnLCAkcmV0dXJuaWQpKTsNCiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsICRtb2QtPkNyZWF0ZUZvcm1FbmQoKSk7DQoNCiRzbWFydHktPmFzc2lnbignbmFtZXRleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfbmFtZScpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRuYW1lJywgJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ25hbWUnLCAkbmFtZSwgMjAsIDI1NSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2FsaWFzJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2FsaWFzJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9hbGlhcycsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdhbGlhcycsICRhbGlhcywgMjAsIDI1NSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2hlbHB0ZXh0JywgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmX2hlbHAnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0aGVscCcsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdoZWxwJywgJGhlbHAsIDEwMCwgMjU1KSk7DQoNCiRzbWFydHktPmFzc2lnbigndHlwZXRleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfdHlwZScpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXR0eXBlJywgJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICd0eXBlJywgYXJyYXlfZmxpcChnZW5lcmF0b3JfdG9vbHM6OmdldF9maWVsZF90eXBlcygkbW9kKSksIC0xLCAkdHlwZSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3VzZXJ2aWV3dGV4dCcsIGdlbmVyYXRvcigpLT5MYW5nKCdmaWVsZGRlZl9yZXF1aXJlZCcpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfdXNlcnZpZXcnLCAkbW9kLT5DcmVhdGVJbnB1dGNoZWNrYm94KCRpZCwgJ3JlcXVpcmVkJywgMSwgJHJlcXVpcmVkKSk7DQoNCiRzbWFydHktPmFzc2lnbignZnJvbnRlbmRfdGV4dCcsIGdlbmVyYXRvcigpLT5MYW5nKCdmaWVsZGRlZl9mcm9udGVuZCcpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfZnJvbnRlbmQnLCAkbW9kLT5DcmVhdGVJbnB1dGNoZWNrYm94KCRpZCwgJ2Zyb250ZW5kJywgMSwgJGZyb250ZW5kKSk7DQoNCiRzbWFydHktPmFzc2lnbignZWRpdHZpZXdfdGV4dCcsIGdlbmVyYXRvcigpLT5MYW5nKCdmaWVsZGRlZl9lZGl0dmlldycpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfZWRpdHZpZXcnLCAkbW9kLT5DcmVhdGVJbnB1dGNoZWNrYm94KCRpZCwgJ2VkaXR2aWV3JywgMSwgJGVkaXR2aWV3KSk7DQoNCiRzbWFydHktPmFzc2lnbignZmlsdGVyX2Zyb250ZW5kX3RleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfZmlsdGVyX2Zyb250ZW5kJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9maWx0ZXJfZnJvbnRlbmQnLCAkbW9kLT5DcmVhdGVJbnB1dGNoZWNrYm94KCRpZCwgJ2ZpbHRlcl9mcm9udGVuZCcsIDEsICRmaWx0ZXJfZnJvbnRlbmQpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdmaWx0ZXJfYWRtaW5fdGV4dCcsIGdlbmVyYXRvcigpLT5MYW5nKCdmaWVsZGRlZl9maWx0ZXJfYWRtaW4nKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2ZpbHRlcl9hZG1pbicsICRtb2QtPkNyZWF0ZUlucHV0Y2hlY2tib3goJGlkLCAnZmlsdGVyX2FkbWluJywgMSwgJGZpbHRlcl9hZG1pbikpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3NlYXJjaGFibGVfdGV4dCcsIGdlbmVyYXRvcigpLT5MYW5nKCdmaWVsZGRlZl9zZWFyY2hhYmxlJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zZWFyY2hhYmxlJywgJG1vZC0+Q3JlYXRlSW5wdXRjaGVja2JveCgkaWQsICdzZWFyY2hhYmxlJywgMSwgJHNlYXJjaGFibGUpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdleHRyYScsIGdlbmVyYXRvcigpLT5MYW5nKCdleHRyYScpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfZXh0cmEnLCAkbW9kLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZXh0cmEnLCAkZXh0cmEsIDEwMCwgMjU1KSk7DQoNCiRzbWFydHktPmFzc2lnbignaW5wdXRfc2VjdGlvbicsICRtb2QtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnc2VjdGlvbicsIGFycmF5X2ZsaXAoZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZmllbGRfc2VjdGlvbnMoJG1vZCkpLCAtMSwgJHNlY3Rpb24pKTsNCg0KaWYgKGlzc2V0KCRmaWVsZGRlZl9pZCkpIHsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2ZpZWxkZGVmX2lkJywgJG1vZC0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnZmllbGRkZWZfaWQnLCAkZmllbGRkZWZfaWQpKTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkbW9kLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCBsYW5nKCdzdWJtaXQnKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdhcHBseScsICRtb2QtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2FwcGx5JywgbGFuZygnYXBwbHknKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkbW9kLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjYW5jZWwnLCBsYW5nKCdjYW5jZWwnKSkpOw0KDQplY2hvICRtb2QtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdGZpZWxkZGVmLnRwbCcpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_edititem.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9pdGVtJykpDQogICAgcmV0dXJuOw0KDQoNCmlmIChpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpIHsNCiAgICAkcGFyYW1zID0gYXJyYXkoJ2FjdGl2ZV90YWInID0+ICdpdGVtdGFiJyk7DQogICAgJG1vZC0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsNCn0NCg0KJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOw0KJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiRlcnJvcnMgPSBhcnJheSgpOw0KJGl0ZW1faWQgPSBudWxsOw0KJHRpdGxlID0gJyc7DQokYWxpYXMgPSAnJzsNCiR1cmwgPSAnJzsNCiRhY3RpdmUgPSAxOw0KJHVzZWRjYXRlZ29yeSA9ICcnOw0KJGRhdGUgPSB0aW1lKCk7DQokZGF0ZV9lbmQgPSBudWxsOw0KJHJlY3VyX3dlZWtkYXlzID0gYXJyYXkoKTsNCiRyZWN1cl9wZXJpb2QgPSBudWxsOw0KJHJlY3Vyc2l2ZSA9ICcnOw0KDQoNCi8vIGlmICRwYXJhbXNbJ2l0ZW1faWQnXSBpcyBzdXBwbGllZCBhbmQgZXhpc3RzLCBwb3B1bGF0ZSB3aXRoIHZhbHVlcyBmcm9tIGRhdGFiYXNlDQppZiAoaXNzZXQoJHBhcmFtc1snaXRlbV9pZCddKSkgew0KICAgICRpdGVtX2lkID0gKGludCkgJHBhcmFtc1snaXRlbV9pZCddOw0KICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbSBXSEVSRSBpdGVtX2lkID0gPyc7DQogICAgJHJlc3VsdCA9ICYgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1faWQpKTsNCiAgICBpZiAoISRyZXN1bHQpDQogICAgICAgIGRpZSgnRkFUQUwgU1FMIEVSUk9SOiAnIC4gJGRiLT5FcnJvck1zZygpIC4gJzxici8+UVVFUlk6ICcgLiAkZGItPnNxbCk7DQoNCiAgICBpZiAoJHJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKSB7DQogICAgICAgICRlcnJvcnNbXSA9IGdlbmVyYXRvcigpLT5MYW5nKCdub3N1Y2hpZCcsIGFycmF5KCRpdGVtX2lkKSk7DQogICAgICAgICRpdGVtX2lkID0gbnVsbDsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkcm93ID0gJHJlc3VsdC0+RmV0Y2hSb3coKTsNCiAgICAgICAgJHRpdGxlID0gJHJvd1sndGl0bGUnXTsNCiAgICAgICAgJGFsaWFzID0gJHJvd1snYWxpYXMnXTsNCiAgICAgICAgJGRhdGUgPSAkZGItPlVuaXhUaW1lU3RhbXAoJHJvd1snaXRlbV9kYXRlJ10pOw0KICAgICAgICAkZGF0ZV9lbmQgPSAkZGItPlVuaXhUaW1lU3RhbXAoJHJvd1snaXRlbV9kYXRlX2VuZCddKTsNCiAgICAgICAgJHVybCA9ICRyb3dbJ3VybCddOw0KICAgICAgICAkcmVjdXJzaXZlID0gJHJvd1sncmVjdXJzaXZlJ107DQogICAgICAgICRhY3RpdmUgPSAkcm93WydhY3RpdmUnXTsNCiAgICAgICAgJHVzZWRjYXRlZ29yeSA9ICRyb3dbJ2NhdGVnb3J5X2lkJ107DQoNCiAgICAgICAgLy9leHRyYSBvcHRpb25zIGxvYWQNCiAgICAgICAgJHJlY3VyX3dlZWtkYXlzID0gJHJlY3Vyc2l2ZV9vcHRpb24gPSAkZGItPkdldENvbCgnU0VMRUNUIHZhbHVlIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtX2V4dHJhIFdIRVJFIGl0ZW1faWQgPSA/JywgYXJyYXkoJGl0ZW1faWQpKTsNCiAgICB9DQp9DQoNCi8vIGdldCBjYXRlZ29yeSBsaXN0DQokd2hlcmUgPSBhcnJheSgpOw0KJHBhcmFtc2FycmF5ID0gYXJyYXkoKTsNCiRjYXRlZ29yeWxvbmduYW1lbGlzdCA9IGdlbmVyYXRvcl90b29sczo6Z2V0X3ByaXZhdGVfY2F0ZWdvcmllcygkbW9kKTsNCmlmIChlbXB0eSgkY2F0ZWdvcnlsb25nbmFtZWxpc3QpID09IGZhbHNlKSB7DQoNCiAgICAkd2hlcmVzdGF0ZW1lbnQgPSBhcnJheSgpOw0KICAgIGZvcmVhY2ggKCRjYXRlZ29yeWxvbmduYW1lbGlzdCBhcyAkbG9ubmFtZSkgew0KICAgICAgICAkd2hlcmVzdGF0ZW1lbnRbXSA9ICdsb25nX25hbWUgTElLRSAgPyc7DQogICAgICAgICRwYXJhbXNhcnJheVtdID0gJGxvbm5hbWUgLiAnJSc7DQogICAgfQ0KICAgICR3aGVyZVtdID0gJygnIC4gaW1wbG9kZSgnIE9SICcsICR3aGVyZXN0YXRlbWVudCkgLiAnKSc7DQp9DQokY2F0ZWdvcnlsaXN0ID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfY2F0ZWdvcnlfbGlzdCgkbW9kLCAkd2hlcmUsICRwYXJhbXNhcnJheSwgZmFsc2UpOw0KJGNhdGVnb3J5bGlzdCA9IGFycmF5X3NsaWNlKCRjYXRlZ29yeWxpc3QsIDEpOw0KJGNhdGVnb3J5bGlzdCA9IGV4dGVuZGVkX3Rvb2xzX29wdHM6OnRvX2hhc2goJGNhdGVnb3J5bGlzdCwgJ2NhdGVnb3J5X25hbWUnLCAnY2F0ZWdvcnlfaWQnKTsNCg0KLy8gZ2V0IHRoZSBjdXN0b20gZmllbGRzDQokZmlsdGVycyA9IG5ldyBnZW5lcmF0b3JfZmlsdGVycygkaWQsICRtb2QsICdhZG1pbicpOw0KJGN1c3RvbV9mbGRzID0gJGZpbHRlcnMtPnByb2Nlc3NfY3VzdG9tX2ZpZWxkcygpOw0KDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCi8vIGhhbmRsZSBzdWJtaXQgb3IgYXBwbHkNCmlmIChpc3NldCgkcGFyYW1zWydwcmV2aWV3J10pKSB7DQogICAgLy8gc2F2ZSBkYXRhIGZvciBwcmV2aWV3Lg0KICAgIHVuc2V0KCRwYXJhbXNbJ2FwcGx5J10pOw0KICAgIHVuc2V0KCRwYXJhbXNbJ3ByZXZpZXcnXSk7DQogICAgdW5zZXQoJHBhcmFtc1snc3VibWl0J10pOw0KICAgIHVuc2V0KCRwYXJhbXNbJ2NhbmNlbCddKTsNCiAgICB1bnNldCgkcGFyYW1zWydhamF4J10pOw0KICAgIHVuc2V0KCRwYXJhbXNbJ2NvcHknXSk7DQoNCiAgICAkdG1wZm5hbWUgPSB0ZW1wbmFtKFRNUF9DQUNIRV9MT0NBVElPTiwgJHRoaXMtPkdldE5hbWUoKSAuICdfcHJldmlldycpOw0KICAgIGZpbGVfcHV0X2NvbnRlbnRzKCR0bXBmbmFtZSwgc2VyaWFsaXplKCRwYXJhbXMpKTsNCg0KICAgICRkZXRhaWxfcmV0dXJuaWQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kZXRhaWxfcmV0dXJuaWQnLCAtMSk7DQogICAgaWYgKCRkZXRhaWxfcmV0dXJuaWQgPD0gMCkgew0KICAgICAgICAvLyBub3cgZ2V0IHRoZSBkZWZhdWx0IGNvbnRlbnQgaWQuDQogICAgICAgICRkZXRhaWxfcmV0dXJuaWQgPSBDb250ZW50T3BlcmF0aW9uczo6Z2V0X2luc3RhbmNlKCktPkdldERlZmF1bHRDb250ZW50KCk7DQogICAgfQ0KICAgIGlmIChpc3NldCgkcGFyYW1zWydwcmV2aWV3cGFnZSddKSAmJiAoaW50KSAkcGFyYW1zWydwcmV2aWV3cGFnZSddID4gMCkgew0KICAgICAgICAkZGV0YWlsX3JldHVybmlkID0gKGludCkgJHBhcmFtc1sncHJldmlld3BhZ2UnXTsNCiAgICB9DQoNCiAgICAkX1NFU1NJT05bJ2l0ZW1fcHJldmlldyddID0gYXJyYXkoJ2ZuYW1lJyA9PiBiYXNlbmFtZSgkdG1wZm5hbWUpLCAnY2hlY2tzdW0nID0+IG1kNV9maWxlKCR0bXBmbmFtZSkpOw0KICAgICR0cGFybXMgPSBhcnJheSgncHJldmlldycgPT4gbWQ1KHNlcmlhbGl6ZSgkX1NFU1NJT05bJ2l0ZW1fcHJldmlldyddKSkpOw0KICAgIGlmIChpc3NldCgkcGFyYW1zWydkZXRhaWx0ZW1wbGF0ZSddKSkgew0KICAgICAgICAkdHBhcm1zWydkZXRhaWx0ZW1wbGF0ZSddID0gdHJpbSgkcGFyYW1zWydkZXRhaWx0ZW1wbGF0ZSddKTsNCiAgICB9DQogICAgJHVybCA9ICR0aGlzLT5jcmVhdGVfdXJsKCdfcHJldmlld18nLCAnZGV0YWlsJywgJGRldGFpbF9yZXR1cm5pZCwgJHRwYXJtcywgVFJVRSk7DQoNCiAgICAkcmVzcG9uc2UgPSAnPD94bWwgdmVyc2lvbj0iMS4wIj8+JzsNCiAgICAkcmVzcG9uc2UgLj0gJzxFZGl0QXJ0aWNsZT4nOw0KICAgIGlmIChpc3NldCgkZXJyb3IpICYmICRlcnJvciAhPSAnJykgew0KICAgICAgICAkcmVzcG9uc2UgLj0gJzxSZXNwb25zZT5FcnJvcjwvUmVzcG9uc2U+JzsNCiAgICAgICAgJHJlc3BvbnNlIC49ICc8RGV0YWlscz48IVtDREFUQVsnIC4gJGVycm9yIC4gJ11dPjwvRGV0YWlscz4nOw0KICAgIH0gZWxzZSB7DQogICAgICAgICRyZXNwb25zZSAuPSAnPFJlc3BvbnNlPlN1Y2Nlc3M8L1Jlc3BvbnNlPic7DQogICAgICAgICRyZXNwb25zZSAuPSAnPERldGFpbHM+PCFbQ0RBVEFbJyAuICR1cmwgLiAnXV0+PC9EZXRhaWxzPic7DQogICAgfQ0KICAgICRyZXNwb25zZSAuPSAnPC9FZGl0QXJ0aWNsZT4nOw0KDQogICAgJGhhbmRsZXJzID0gb2JfbGlzdF9oYW5kbGVycygpOw0KICAgIGZvciAoJGNudCA9IDA7ICRjbnQgPCBzaXplb2YoJGhhbmRsZXJzKTsgJGNudCsrKSB7DQogICAgICAgIG9iX2VuZF9jbGVhbigpOw0KICAgIH0NCiAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogdGV4dC94bWwnKTsNCiAgICBlY2hvICRyZXNwb25zZTsNCiAgICBleGl0Ow0KfSBlbHNlIGlmIChpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgfHwgaXNzZXQoJHBhcmFtc1snYXBwbHknXSkgfHwgaXNzZXQoJHBhcmFtc1snY29weSddKSkgew0KDQogICAgaWYgKGlzc2V0KCRwYXJhbXNbImNvcHkiXSkpIHsNCiAgICAgICAgJGl0ZW1faWQgPSBudWxsOw0KICAgIH0NCg0KICAgICR0aXRsZSA9ICRwYXJhbXNbJ3RpdGxlJ107DQogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2RhdGVfTW9udGgnXSkpIHsNCiAgICAgICAgJGRhdGUgPSBta3RpbWUoJHBhcmFtc1snZGF0ZV9Ib3VyJ10sICRwYXJhbXNbJ2RhdGVfTWludXRlJ10sICRwYXJhbXNbJ2RhdGVfU2Vjb25kJ10sICRwYXJhbXNbJ2RhdGVfTW9udGgnXSwgJHBhcmFtc1snZGF0ZV9EYXknXSwgJHBhcmFtc1snZGF0ZV9ZZWFyJ10pOw0KICAgIH0NCiAgICBpZiAoaXNzZXQoJHBhcmFtc1snZGF0ZV9lbmRfTW9udGgnXSkpIHsNCiAgICAgICAgJGRhdGVfZW5kID0gbWt0aW1lKCRwYXJhbXNbJ2RhdGVfZW5kX0hvdXInXSwgJHBhcmFtc1snZGF0ZV9lbmRfTWludXRlJ10sICRwYXJhbXNbJ2RhdGVfZW5kX1NlY29uZCddLCAkcGFyYW1zWydkYXRlX2VuZF9Nb250aCddLCAkcGFyYW1zWydkYXRlX2VuZF9EYXknXSwgJHBhcmFtc1snZGF0ZV9lbmRfWWVhciddKTsNCiAgICB9DQoNCg0KICAgIGlmIChpc1NldCgkcGFyYW1zWyJyZWN1cl9wZXJpb2QiXSkpIHsNCiAgICAgICAgJHJlY3Vyc2l2ZSA9ICRwYXJhbXNbInJlY3VyX3BlcmlvZCJdOw0KICAgIH0NCg0KDQogICAgLyogYWxpYXMgY3JlYXRlICovDQogICAgaWYgKCEkaXRlbV9pZCB8fCAoJGl0ZW1faWQgJiYgIWlzc2V0KCRwYXJhbXNbImFsaWFzIl0pKSkNCiAgICAgICAgJGFsaWFzID0gbXVuZ2Vfc3RyaW5nX3RvX3VybCgkcGFyYW1zWyd0aXRsZSddLCB0cnVlKTsNCiAgICBlbHNlaWYgKCFpc1NldCgkcGFyYW1zWyJhbGlhcyJdKSAmJiAkaXRlbV9pZCkNCiAgICAgICAgJGFsaWFzID0gbXVuZ2Vfc3RyaW5nX3RvX3VybCgkcGFyYW1zWyd0aXRsZSddLCB0cnVlKTsNCiAgICBlbHNlaWYgKGlzU2V0KCRwYXJhbXNbImFsaWFzIl0pKQ0KICAgICAgICAkYWxpYXMgPSBtdW5nZV9zdHJpbmdfdG9fdXJsKCRwYXJhbXNbJ2FsaWFzJ10sIHRydWUpOw0KICAgIGVsc2UNCiAgICAgICAgJGFsaWFzID0gbXVuZ2Vfc3RyaW5nX3RvX3VybCgkcGFyYW1zWyd0aXRsZSddLCB0cnVlKTsNCg0KICAgIGlmIChpc1NldCgkcGFyYW1zWyJ1cmwiXSkpDQogICAgICAgICR1cmwgPSAkcGFyYW1zWyJ1cmwiXTsNCg0KDQogICAgJGFjdGl2ZSA9IChpc3NldCgkcGFyYW1zWydhY3RpdmUnXSkgPyAxIDogMCk7DQogICAgJHVzZWRjYXRlZ29yeSA9IChpc1NldCgkcGFyYW1zWydjYXRlZ29yeSddKSA/ICRwYXJhbXNbJ2NhdGVnb3J5J10gOiAnJyk7DQoNCiAgICAvLyBjaGVjayB0aXRsZQ0KICAgIGlmICgkdGl0bGUgPT0gJycgJiYgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV90aXRsZV9lZGl0JykpIHsNCiAgICAgICAgJGVycm9yc1tdID0gZ2VuZXJhdG9yKCktPkxhbmcoJ2l0ZW1fdGl0bGVfZW1wdHknKTsNCg0KICAgICAgICAvLyBjaGVjayBjdXN0b20gZmllbGRzLi4uIHRoZXNlIGxvb2sgbGlrZSBtMV9jdXN0b21maWVsZFs1XQ0KICAgIH0gZWxzZWlmIChpc3NldCgkcGFyYW1zWydjdXN0b21maWVsZCddKSkgew0KICAgICAgICBmb3JlYWNoICgkcGFyYW1zWydjdXN0b21maWVsZCddIGFzICRmbGRpZCA9PiAkdmFsdWUpIHsNCg0KICAgICAgICAgICAgaWYgKCR2YWx1ZSA9PSAnc2VsZWN0X2RlZmF1bHQnKSB7DQogICAgICAgICAgICAgICAgJHBhcmFtc1snY3VzdG9tZmllbGQnXVskZmxkaWRdID0gJyc7DQogICAgICAgICAgICAgICAgJHZhbHVlID0gJyc7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIHJlcXVpcmVkIGZpZWxkcw0KICAgICAgICAgICAgaWYgKCR2YWx1ZSA9PSAnJyAmJiAkY3VzdG9tX2ZsZHNbJGZsZGlkXVsncmVxdWlyZWQnXSAmJiAoJGN1c3RvbV9mbGRzWyRmbGRpZF1bJ2VkaXR2aWV3J10gJiYgaXNTZXQoJHBhcmFtc1siaXRlbV9pZCJdKSkpIHsNCiAgICAgICAgICAgICAgICAkZXJyb3JzW10gPSBnZW5lcmF0b3IoKS0+TGFuZygncmVxdWlyZWRfZmllbGRfZW1wdHknKSAuICcgKCcgLiAkY3VzdG9tX2ZsZHNbJGZsZGlkXVsnbmFtZSddIC4gJyknOw0KICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBvbmx5IGRpc3BsYXkgb25lIGVycm9yIG1lc3NhZ2UgYXQgYSB0aW1lDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIG1heCBsZW5ndGgNCiAgICAgICAgICAgIGlmIChpc3NldCgkY3VzdG9tX2ZsZHNbJGZsZGlkXVsnbWF4X2xlbmd0aCddKSAmJiBtYl9zdHJsZW4oJHZhbHVlKSA+ICRjdXN0b21fZmxkc1skZmxkaWRdWydtYXhfbGVuZ3RoJ10pIHsNCiAgICAgICAgICAgICAgICAkZXJyb3JzW10gPSBnZW5lcmF0b3IoKS0+TGFuZygndG9vX2xvbmcnKSAuICcgKCcgLiAkY3VzdG9tX2ZsZHNbJGZsZGlkXVsnbmFtZSddIC4gJyknOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBvcHRpb25zDQogICAgICAgICAgICBpZiAoJHZhbHVlICE9ICcnICYmIGlzc2V0KCRjdXN0b21fZmxkc1skZmxkaWRdWydvcHRpb25zJ10pICYmICFhcnJheV9rZXlfZXhpc3RzKCR2YWx1ZSwgJGN1c3RvbV9mbGRzWyRmbGRpZF1bJ29wdGlvbnMnXSkpIHsNCiAgICAgICAgICAgICAgICAkZXJyb3JzW10gPSBnZW5lcmF0b3IoKS0+TGFuZygnaW52YWxpZCcpIC4gJyAoJyAuICRjdXN0b21fZmxkc1skZmxkaWRdWyduYW1lJ10gLiAnKSc7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBpZiAoZW1wdHkoJGVycm9ycykgJiYgJHVybCAhPSAnJykgew0KICAgICAgICAvLyBjaGVjayBmb3Igc3RhcnRpbmcgb3IgZW5kaW5nIHNsYXNoZXMNCiAgICAgICAgaWYgKHN0YXJ0c3dpdGgoJHVybCwgJy8nKSB8fCBlbmRzd2l0aCgkdXJsLCAnLycpKSB7DQogICAgICAgICAgICAkZXJyb3JzW10gPSBnZW5lcmF0b3IoKS0+TGFuZygnZXJyb3JfaW52YWxpZHVybCcpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGVtcHR5KCRlcnJvcnMpKSB7DQogICAgICAgICAgICAvLyBjaGVjayBmb3IgaW52YWxpZCBjaGFycy4NCiAgICAgICAgICAgICR0cmFuc2xhdGVkID0gbXVuZ2Vfc3RyaW5nX3RvX3VybCgkdXJsLCBmYWxzZSwgdHJ1ZSk7DQogICAgICAgICAgICBpZiAoc3RydG9sb3dlcigkdHJhbnNsYXRlZCkgIT0gc3RydG9sb3dlcigkdXJsKSkgew0KICAgICAgICAgICAgICAgICRlcnJvcnNbXSA9IGdlbmVyYXRvcigpLT5MYW5nKCdlcnJvcl9pbnZhbGlkdXJsJyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgaWYgKGVtcHR5KCRlcnJvcnMpKSB7DQogICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhpcyB1cmwgaXNuJ3QgdGFrZW4uDQogICAgICAgICAgICAkdXJsID0gdHJpbSgkdXJsLCAiIC9cdFxyXG5cMFx4MDgiKTsNCiAgICAgICAgICAgIGNtc19yb3V0ZV9tYW5hZ2VyOjpsb2FkX3JvdXRlcygpOw0KICAgICAgICAgICAgJHJvdXRlID0gY21zX3JvdXRlX21hbmFnZXI6OmZpbmRfbWF0Y2goJHVybCk7DQogICAgICAgICAgICBpZiAoJHJvdXRlKSB7DQogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRpdGVtX2lkKSkgew0KICAgICAgICAgICAgICAgICAgICAkZGZsdHMgPSAkcm91dGUtPmdldF9kZWZhdWx0cygpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoJHJvdXRlLT5pc19jb250ZW50KCkgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm91dGUtPmdldF9kZXN0KCkgIT0gJG1vZC0+R2V0TmFtZSgpIHx8DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzc2V0KCRkZmx0c1snaXRlbV9pZCddKSB8fA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZmx0c1snaXRlbV9pZCddICE9ICRpdGVtX2lkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSdyZSBhZGRpbmcgYW4gYXJ0aWNsZSwgbm90IGVkaXRpbmcuLi4gYW55IG1hdGNoaW5nIHJvdXRlIGlzIGJhZC4NCiAgICAgICAgICAgICAgICAgICAgICAgICRlcnJvcnNbXSA9IGdlbmVyYXRvcigpLT5MYW5nKCdlcnJvcl9pbnZhbGlkdXJsJyk7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyRlcnJvcnNbXSA9IGdlbmVyYXRvcigpLT5MYW5nKCdlcnJvcl9pbnZhbGlkdXJsJyk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvLyB0aXRsZSBhbmQgcmVxdWlyZWQgZmllbGRzIGhhdmUgdmFsdWVzLCBsZXQncyBjb250aW51ZQ0KICAgIGlmIChlbXB0eSgkZXJyb3JzKSkgew0KICAgICAgICAvLyBrIG9yIHVwZGF0ZSB0YWJsZSBpdGVtcw0KICAgICAgICBpZiAoIWlzc2V0KCRpdGVtX2lkKSkgew0KICAgICAgICAgICAgLy8gZmluZCBwb3NpdGlvbiBiZWZvcmUgaW5zZXJ0aW5nIG5ldyBpdGVtDQogICAgICAgICAgICAkcG9zaXRpb24gPSAkZGItPkdldE9uZSgnU0VMRUNUIG1heChwb3NpdGlvbikgKyAxIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtJyk7DQoNCiAgICAgICAgICAgIGlmICgkcG9zaXRpb24gPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICRwb3NpdGlvbiA9IDE7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIGluc2VydCBpdGVtDQogICAgICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtICh0aXRsZSwgYWxpYXMsIHVybCwgcmVjdXJzaXZlLCBjYXRlZ29yeV9pZCwgcG9zaXRpb24sIGFjdGl2ZSwgaXRlbV9kYXRlLCBpdGVtX2RhdGVfZW5kLCBjcmVhdGVfZGF0ZSwgbW9kaWZpZWRfZGF0ZSApIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPyAsID8sID8sICBOT1coKSwgTk9XKCkpJzsNCiAgICAgICAgICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdGl0bGUsICRhbGlhcywgJHVybCwgJHJlY3Vyc2l2ZSwgJHVzZWRjYXRlZ29yeSwgJHBvc2l0aW9uLCAkYWN0aXZlLCB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGUpLCAiJyIpLCB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGVfZW5kKSwgIiciKSkpOw0KICAgICAgICAgICAgaWYgKCEkcmVzdWx0KQ0KICAgICAgICAgICAgICAgIGRpZSgnRkFUQUwgU1FMIEVSUk9SOiAnIC4gJGRiLT5FcnJvck1zZygpIC4gJzxici8+UVVFUlk6ICcgLiAkZGItPnNxbCk7DQoNCiAgICAgICAgICAgIC8vIHBvcHVsYXRlICRpdGVtX2lkIGZvciBuZXdseSBpbnNlcnRlZCBpdGVtDQogICAgICAgICAgICAkaXRlbV9pZCA9ICRkYi0+SW5zZXJ0X0lEKCk7DQogICAgICAgICAgICAkdXBkYXRlID0gZmFsc2U7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAvLyB1cGRhdGUgaXRlbQ0KICAgICAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW0gU0VUIHRpdGxlID0gPywgYWxpYXMgPSA/LCB1cmwgPSA/LCByZWN1cnNpdmUgPSA/LCBjYXRlZ29yeV9pZCA9ID8sIGFjdGl2ZSA9ID8sIGl0ZW1fZGF0ZT0gPywgaXRlbV9kYXRlX2VuZD0gPyBXSEVSRSBpdGVtX2lkID0gPyc7DQogICAgICAgICAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRpdGxlLCAkYWxpYXMsICR1cmwsICRyZWN1cnNpdmUsICR1c2VkY2F0ZWdvcnksICRhY3RpdmUsIHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZSksICInIiksIHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZV9lbmQpLCAiJyIpLCAkaXRlbV9pZCkpOw0KICAgICAgICAgICAgaWYgKCEkcmVzdWx0KQ0KICAgICAgICAgICAgICAgIGRpZSgnRkFUQUwgU1FMIEVSUk9SOiAnIC4gJGRiLT5FcnJvck1zZygpIC4gJzxici8+UVVFUlk6ICcgLiAkZGItPnNxbCk7DQoNCiAgICAgICAgICAgICR1cGRhdGUgPSB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gY3JlYXRlIHJlY3Vyc2l2ZSBzZXR0aW5ncw0KICAgICAgICBpZiAoJG1vZC0+R2V0UHJlZmVyZW5jZSgncmVjdXJzaXZlJykgJiYgJHJlY3Vyc2l2ZSA9PSAnZGFpbHknKSB7DQogICAgICAgICAgICBpZiAoaXNTZXQoJHBhcmFtc1sicmVjdXJfd2Vla2RheXMiXSkgJiYgaXNfYXJyYXkoJHBhcmFtc1sicmVjdXJfd2Vla2RheXMiXSkpIHsNCiAgICAgICAgICAgICAgICAkcmVjdXJfd2Vla2RheXMgPSAkcGFyYW1zWyJyZWN1cl93ZWVrZGF5cyJdOw0KICAgICAgICAgICAgICAgICRxdWVyeSA9ICdERUxFVEUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW1fZXh0cmEgV0hFUkUgaXRlbV9pZCA9ID8nOw0KICAgICAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtX2lkKSk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHJlY3VyX3dlZWtkYXlzIGFzICRkYXkpIHsNCiAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbV9leHRyYSAoaXRlbV9pZCx2YWx1ZSkgVkFMVUVTICg/LD8pJzsNCiAgICAgICAgICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1faWQsICRkYXkpKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLyBoYW5kbGUgdXBsb2FkaW5nIG9mIGZpbGUgZmllbGRzDQogICAgICAgIGZvcmVhY2ggKCRjdXN0b21fZmxkcyBhcyAkY3VzdG9tX2ZsZCkgew0KICAgICAgICAgICAgaWYgKCRjdXN0b21fZmxkWyd0eXBlJ10gIT0gJ3VwbG9hZF9maWxlJykgew0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgfQ0KDQoNCiAgICAgICAgICAgICRlbGVtID0gJGlkIC4gJ2N1c3RvbWZpZWxkXycgLiAkY3VzdG9tX2ZsZFsnZmllbGRkZWZfaWQnXTsNCiAgICAgICAgICAgIC8vICRlbGVtIGxvb2tzIGxpa2UgbTFfY3VzdG9tZmllbGRfMQ0KICAgICAgICAgICAgLy8gY2hlY2sgaWYgZmlsZSB3YXMgdXBsb2FkZWQgZm9yIHRoaXMgZmllbGQNCiAgICAgICAgICAgIGlmIChpc3NldCgkX0ZJTEVTWyRlbGVtXSkgJiYgJF9GSUxFU1skZWxlbV1bJ25hbWUnXSAhPSAnJykgew0KDQogICAgICAgICAgICAgICAgaWYgKCRfRklMRVNbJGVsZW1dWydlcnJvciddICE9IDAgfHwgJF9GSUxFU1skZWxlbV1bJ3RtcF9uYW1lJ10gPT0gJycpIHsNCiAgICAgICAgICAgICAgICAgICAgJGVycm9yc1tdID0gZ2VuZXJhdG9yKCktPkxhbmcoJ2Vycm9yX3VwbG9hZCcpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9IGdlbmVyYXRvcl90b29sczo6aGFuZGxlX3VwbG9hZCgkbW9kLCAkaXRlbV9pZCwgJGVsZW0sICRlcnJvciwgJGN1c3RvbV9mbGRbJ2FsbG93J10sICRyb3cpOw0KDQogICAgICAgICAgICAgICAgICAgIGlmICgkdmFsdWUgPT09IGZhbHNlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkZXJyb3JzW10gPSAkZXJyb3I7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3B1bGF0ZSAkcGFyYW1zWydjdXN0b21maWVsZCddDQogICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHdvdWxkIGhvbGQgdGhlIHVwbG9hZGVkIGZpbGVuYW1lDQogICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGluc2VydGVkIGludG8gdGhlIGRhdGFiYXNlIGJlbG93DQogICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1zWydjdXN0b21maWVsZCddWyRjdXN0b21fZmxkWydmaWVsZGRlZl9pZCddXSA9ICR2YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIGhhbmRsZSBpbnNlcnRpbmcgY3VzdG9tIGZpZWxkcyBpbnRvIGRhdGFiYXNlDQogICAgICAgIGlmIChpc3NldCgkcGFyYW1zWydjdXN0b21maWVsZCddKSkgew0KICAgICAgICAgICAgZm9yZWFjaCAoJHBhcmFtc1snY3VzdG9tZmllbGQnXSBhcyAkZmxkaWQgPT4gJHZhbHVlKSB7DQoNCiAgICAgICAgICAgICAgICBpZiAoaXNfYXJyYXkoJHZhbHVlKSkgew0KICAgICAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCR2YWx1ZSkpDQogICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSBpbXBsb2RlKCcsJywgJHZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gJyc7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgcm93IGV4aXN0cyB0byBkZXRlcm1pbmUgd2hldGhlciB0byBpbnNlcnQgb3IgdXBkYXRlDQogICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCB2YWx1ZSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgV0hFUkUgaXRlbV9pZCA9ID8gQU5EIGZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgJHRtcCA9ICRkYi0+R2V0T25lKCRxdWVyeSwgYXJyYXkoJGl0ZW1faWQsICRmbGRpZCkpOw0KDQoNCiAgICAgICAgICAgICAgICAvLyByb3cgZG9lcyBub3QgZXhpc3QNCiAgICAgICAgICAgICAgICBpZiAoJHRtcCA9PSAiIikgew0KICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IGluc2VydCByb3cgaWYgZmllbGQgdmFsdWUgaXMgbm90IGVtcHR5DQogICAgICAgICAgICAgICAgICAgIGlmICgkdmFsdWUgIT0gIiIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIChpdGVtX2lkLCBmaWVsZGRlZl9pZCwgdmFsdWUpIFZBTFVFUyAoPywgPywgPyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtX2lkLCAkZmxkaWQsICR2YWx1ZSkpOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgLy8gcm93IGFscmVhZHkgZXhpc3RzDQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gZGVsZXRlIHJvdyBpZiBmaWVsZCB2YWx1ZSBpcyBlbXB0eQ0KICAgICAgICAgICAgICAgICAgICBpZiAoJHZhbHVlID09ICIiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkcXVlcnkgPSAnREVMRVRFIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBXSEVSRSBpdGVtX2lkID0gPyBBTkQgZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbV9pZCwgJGZsZGlkKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGUgcm93DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkcXVlcnkgPSAnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgU0VUIHZhbHVlID0gPyBXSEVSRSBpdGVtX2lkID0gPyBBTkQgZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdmFsdWUsICRpdGVtX2lkLCAkZmxkaWQpKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmICghJHJlc3VsdCkNCiAgICAgICAgICAgICAgICAgICAgZGllKCdGQVRBTCBTUUwgRVJST1I6ICcgLiAkZGItPkVycm9yTXNnKCkgLiAnPGJyLz5RVUVSWTogJyAuICRkYi0+c3FsKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAvLyBkZWxldGUgdmFsdWUgZnJvbSBmaWxlIGZpZWxkDQogICAgICAgIGlmIChpc3NldCgkcGFyYW1zWydkZWxldGVfY3VzdG9tZmllbGQnXSkgJiYgaXNfYXJyYXkoJHBhcmFtc1snZGVsZXRlX2N1c3RvbWZpZWxkJ10pKSB7DQogICAgICAgICAgICBmb3JlYWNoICgkcGFyYW1zWydkZWxldGVfY3VzdG9tZmllbGQnXSBhcyAkayA9PiAkdikgew0KICAgICAgICAgICAgICAgIGlmICgkdiAhPSAnZGVsZXRlJykNCiAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIHNraXAgaWYgbm90IGRlbGV0aW5nIGFueXRoaW5nDQoNCiAgICAgICAgICAgICAgICAkcXVlcnkgPSAnREVMRVRFIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBXSEVSRSBpdGVtX2lkID0gPyBBTkQgZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbV9pZCwgJGspKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIGFkZGl0aW9uYWwgY2hlY2sgaXMgbmVlZGVkIHNpbmNlIGZpbGUgdXBsb2FkIGNvdWxkIGhhdmUgcHJvZHVjZWQgZXJyb3JzDQogICAgICAgIGlmIChlbXB0eSgkZXJyb3JzKSkgew0KICAgICAgICAgICAgLy8gc2hvdyBzYXZlZCBtZXNzYWdlDQoNCiAgICAgICAgICAgIGlmICgkdXBkYXRlKSB7DQogICAgICAgICAgICAgICAgQCRtb2QtPlNlbmRFdmVudCgnSXRlbUVkaXRlZCcsIGFycmF5KCdpdGVtX2lkJyA9PiAkaXRlbV9pZCwgJ2NhdGVnb3J5X2lkJyA9PiAkdXNlZGNhdGVnb3J5LCAndGl0bGUnID0+ICR0aXRsZSwgJ2FjdGl2ZScgPT4gJGFjdGl2ZSwgJ2l0ZW1fZGF0ZScgPT4gdHJpbSgkZGItPkRCVGltZVN0YW1wKCRkYXRlKSwgIiciKSwgJ2l0ZW1fZGF0ZV9lbmQnID0+IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZV9lbmQpKSwgJ3JlY3Vyc2l2ZScgPT4gJHJlY3Vyc2l2ZSkpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBAJG1vZC0+U2VuZEV2ZW50KCdJdGVtQWRkZWQnLCBhcnJheSgnaXRlbV9pZCcgPT4gJGl0ZW1faWQsICdjYXRlZ29yeV9pZCcgPT4gJHVzZWRjYXRlZ29yeSwgJ3RpdGxlJyA9PiAkdGl0bGUsICdhY3RpdmUnID0+ICRhY3RpdmUsICdpdGVtX2RhdGUnID0+IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZSksICInIiksICdpdGVtX2RhdGVfZW5kJyA9PiB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGVfZW5kKSksICdyZWN1cnNpdmUnID0+ICRyZWN1cnNpdmUpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFpc3NldCgkcGFyYW1zWydhcHBseSddKSkgew0KICAgICAgICAgICAgICAgICRtb2QtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZV90YWInID0+ICdpdGVtdGFiJywgJ21lc3NhZ2UnID0+ICdjaGFuZ2Vzc2F2ZWQnKSk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGVjaG8gJG1vZC0+U2hvd01lc3NhZ2UoZ2VuZXJhdG9yKCktPkxhbmcoJ2NoYW5nZXNzYXZlZCcpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X3NlYXJjaF9tb2R1bGUoKTsNCiAgICAgICAgICAgIGlmIChpc19vYmplY3QoJG1vZHVsZSkpIHsNCiAgICAgICAgICAgICAgICBpZiAoJGFjdGl2ZSAhPSAxKSB7DQogICAgICAgICAgICAgICAgICAgICRtb2R1bGUtPkRlbGV0ZVdvcmRzKCRtb2QtPkdldE5hbWUoKSwgJGl0ZW1faWQsICdpdGVtJyk7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgJG1vZHVsZS0+QWRkV29yZHMoJG1vZC0+R2V0TmFtZSgpLCAkaXRlbV9pZCwgJ2l0ZW0nLCBnZW5lcmF0b3JfdG9vbHM6OmdldF9zZWFyY2hhYmxlX3RleHQoJG1vZCwgJGl0ZW1faWQpLCBnZW5lcmF0b3JfdG9vbHM6OmdldF9zZWFyY2hhYmxlX2RhdGVfZW5kKCkpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0gLy8gZW5kIHN1Ym1pdCBvciBhcHBseQ0KDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0KLy8gZGlzcGxheSBlcnJvcnMgaWYgdGhlcmUgYXJlIGFueQ0KaWYgKCFlbXB0eSgkZXJyb3JzKSkgew0KICAgIGVjaG8gJG1vZC0+U2hvd0Vycm9ycygkZXJyb3JzKTsNCn0NCg0KLy8gaGlkZGVuIHZhbHVlIHJlcXVpcmVkIHdoZW4gZWRpdGluZyBhbiBleGlzdGluZyBpdGVtDQppZiAoaXNzZXQoJGl0ZW1faWQpKSB7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdpdGVtX2lkJywgJG1vZC0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnaXRlbV9pZCcsICRpdGVtX2lkKSk7DQp9DQoNCiRzbWFydHktPmFzc2lnbigndGl0bGUnLCAoaXNzZXQoJGl0ZW1faWQpID8gZ2VuZXJhdG9yKCktPkxhbmcoJ2VkaXQnKSA6IGdlbmVyYXRvcigpLT5MYW5nKCdhZGQnKSkgLiAnICcgLiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3Npbmd1bGFyJywgJycpKTsNCiRzbWFydHktPmFzc2lnbignZm9ybWlkJywgJGlkKTsNCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJG1vZC0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkbWluX2VkaXRpdGVtJywgJHJldHVybmlkLCAncG9zdCcsICdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJG1vZC0+Q3JlYXRlRm9ybUVuZCgpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdGl0bGUnLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3RpdGxlJywgJycpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfdGl0bGUnLCAkbW9kLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAndGl0bGUnLCAkdGl0bGUsIDUwKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2FsaWFzJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2FsaWFzJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9hbGlhcycsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdhbGlhcycsICRhbGlhcywgNTApKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdXJsJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3VybCcpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfdXJsJywgJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3VybCcsICR1cmwsIDUwKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2NhdGVnb3J5JywgZ2VuZXJhdG9yKCktPkxhbmcoJ2NhdGVnb3J5JykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jYXRlZ29yeScsICRtb2QtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnY2F0ZWdvcnknLCAkY2F0ZWdvcnlsaXN0LCAtMSwgJHVzZWRjYXRlZ29yeSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9hY3RpdmUnLCBnZW5lcmF0b3IoKS0+TGFuZygnYWN0aXZlJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9hY3RpdmUnLCAkbW9kLT5DcmVhdGVJbnB1dGNoZWNrYm94KCRpZCwgJ2FjdGl2ZScsIDEsICRhY3RpdmUpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZGF0ZScsIGdlbmVyYXRvcigpLT5MYW5nKCdkYXRlJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdkYXRlJywgJGRhdGUpOw0KJHNtYXJ0eS0+YXNzaWduKCdkYXRlcHJlZml4JywgJGlkIC4gJ2RhdGVfJyk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2RhdGVfZW5kJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3Byb21wdF9pdGVtX2RhdGVfZW5kX2VkaXQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2RhdGVlbmQnLCAkZGF0ZV9lbmQpOw0KJHNtYXJ0eS0+YXNzaWduKCdkYXRlZW5kcHJlZml4JywgJGlkIC4gJ2RhdGVfZW5kXycpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3JlY3Vyc2l2ZScsICRyZWN1cnNpdmUpOw0KJHNtYXJ0eS0+YXNzaWduKCdyZWN1cl9vcHRpb25zJywgYXJyYXkoDQogICAgJG1vZC0+TGFuZygnbm9uZScpID0+ICcnLA0KICAgICRtb2QtPkxhbmcoJ2RhaWx5JykgPT4gJ2RhaWx5JykpOw0KDQokd2Vla2RheXMgPSBhcnJheSgkbW9kLT5MYW5nKCdzdW5kYXknKSA9PiAnMCcsDQogICAgJG1vZC0+TGFuZygnbW9uZGF5JykgPT4gJzEnLA0KICAgICRtb2QtPkxhbmcoJ3R1ZXNkYXknKSA9PiAnMicsDQogICAgJG1vZC0+TGFuZygnd2VkbmVzZGF5JykgPT4gJzMnLA0KICAgICRtb2QtPkxhbmcoJ3RodXJzZGF5JykgPT4gJzQnLA0KICAgICRtb2QtPkxhbmcoJ2ZyaWRheScpID0+ICc1JywNCiAgICAkbW9kLT5MYW5nKCdzYXR1cmRheScpID0+ICc2Jyk7DQoNCiRzbWFydHktPmFzc2lnbignaW5wdXRfd2Vla2RheXMnLCAkbW9kLT5DcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCAncmVjdXJfd2Vla2RheXNbXScsICR3ZWVrZGF5cywgZW1wdHkoJHJlY3VyX3dlZWtkYXlzKSA/IGFycmF5KCkgOiAkcmVjdXJfd2Vla2RheXMsIDcpKTsNCg0KDQoNCiRzbWFydHktPmFzc2lnbignc3VibWl0JywgJG1vZC0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgbGFuZygnc3VibWl0JykpKTsNCiRzbWFydHktPmFzc2lnbignYXBwbHknLCAkbW9kLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdhcHBseScsIGxhbmcoJ2FwcGx5JykpKTsNCiRzbWFydHktPmFzc2lnbignY2FuY2VsJywgJG1vZC0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY2FuY2VsJywgbGFuZygnY2FuY2VsJykpKTsNCmlmICgkbW9kLT5HZXRQcmVmZXJlbmNlKCdjb3B5X2FkbWluJykpDQogICAgJHNtYXJ0eS0+YXNzaWduKCdjb3B5JywgJG1vZC0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY29weScsIGxhbmcoJ2NvcHknKSwgJycsICcnLCAkbW9kLT5MYW5nKCdhcmV5b3VzdXJlJykpKTsNCg0KDQoNCiRjdXN0b21fZmxkc19vYmogPSAkZmlsdGVycy0+Z2VuZXJhdGUoJGl0ZW1faWQsICRwYXJhbXMpOw0KDQppZiAoaXNzZXQoJGN1c3RvbV9mbGRzX29iaikgJiYgY291bnQoJGN1c3RvbV9mbGRzX29iaikgPiAwKSB7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdjdXN0b21fZmllbGRkZWYnLCAkY3VzdG9tX2ZsZHNfb2JqKTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCdtb2QnLCAkbW9kKTsNCg0KDQoNCi8vIHRhYiBzdHVmZi4NCmlmICgkbW9kLT5HZXRQcmVmZXJlbmNlKCdwcmV2aWV3X2FkbWluJykpIHsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ3N0YXJ0X3RhYl9oZWFkZXJzJywgJG1vZC0+U3RhcnRUYWJIZWFkZXJzKCkpOw0KICAgICRzbWFydHktPmFzc2lnbigndGFiaGVhZGVyX2FydGljbGUnLCAkbW9kLT5TZXRUYWJIZWFkZXIoJ2FydGljbGUnLCAkbW9kLT5MYW5nKCdhcnRpY2xlJykpKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ3RhYmhlYWRlcl9wcmV2aWV3JywgJG1vZC0+U2V0VGFiSGVhZGVyKCdwcmV2aWV3JywgJG1vZC0+TGFuZygncHJldmlldycpKSk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdlbmRfdGFiX2hlYWRlcnMnLCAkbW9kLT5FbmRUYWJIZWFkZXJzKCkpOw0KDQogICAgJHNtYXJ0eS0+YXNzaWduKCdzdGFydF90YWJfY29udGVudCcsICRtb2QtPlN0YXJ0VGFiQ29udGVudCgpKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ3N0YXJ0X3RhYl9hcnRpY2xlJywgJG1vZC0+U3RhcnRUYWIoJ2FydGljbGUnLCAkcGFyYW1zKSk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdlbmRfdGFiX2FydGljbGUnLCAkbW9kLT5FbmRUYWIoKSk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdzdGFydF90YWJfcHJldmlldycsICRtb2QtPlN0YXJ0VGFiKCdwcmV2aWV3JywgJHBhcmFtcykpOw0KICAgICRzbWFydHktPmFzc2lnbignZW5kX3RhYl9wcmV2aWV3JywgJG1vZC0+RW5kVGFiKCkpOw0KICAgICRzbWFydHktPmFzc2lnbignZW5kX3RhYl9jb250ZW50JywgJG1vZC0+RW5kVGFiQ29udGVudCgpKTsNCg0KICAgICRzbWFydHktPmFzc2lnbignd2FybmluZ19wcmV2aWV3JywgJG1vZC0+TGFuZygnd2FybmluZ19wcmV2aWV3JykpOw0KICAgICRjb250ZW50b3BzID0gY21zbXMoKS0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ3ByZXZpZXdfcmV0dXJuaWQnLCAkY29udGVudG9wcy0+Q3JlYXRlSGllcmFyY2h5RHJvcGRvd24oJycsICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fZGV0YWlsX3JldHVybmlkJywgLTEpLCAncHJldmlld19yZXR1cm5pZCcpKTsgew0KICAgICAgICAkdG1wID0gJG1vZC0+TGlzdFRlbXBsYXRlcygpOw0KICAgICAgICAkdG1wMiA9IGFycmF5KCk7DQogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8IGNvdW50KCR0bXApOyAkaSsrKSB7DQogICAgICAgICAgICBpZiAoc3RhcnRzd2l0aCgkdG1wWyRpXSwgJ2RldGFpbF90ZW1wbGF0ZScpKSB7DQogICAgICAgICAgICAgICAgJHggPSBzdWJzdHIoJHRtcFskaV0sIDE1KTsNCiAgICAgICAgICAgICAgICAkdG1wMlskeF0gPSAkeDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9kZXRhaWxfdGVtcGxhdGUnLCAkbW9kLT5MYW5nKCdkZXRhaWxfdGVtcGxhdGUnKSk7DQogICAgICAgICRzbWFydHktPmFzc2lnbigncHJvbXB0X2RldGFpbF9wYWdlJywgJG1vZC0+TGFuZygnZGV0YWlsX3BhZ2UnKSk7DQogICAgICAgICRzbWFydHktPmFzc2lnbignZGV0YWlsX3RlbXBsYXRlcycsICR0bXAyKTsNCiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdjdXJfZGV0YWlsX3RlbXBsYXRlJywgJG1vZC0+R2V0UHJlZmVyZW5jZSgnY3VycmVudF9kZXRhaWxfdGVtcGxhdGUnKSk7DQogICAgfQ0KfQ0KDQokZGV0YWlsX3JldHVybmlkID0gJGRlZmF1bHRfZGV0YWlscGFnZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2RldGFpbF9yZXR1cm5pZCcsIC0xKTsNCiRkZXRhaWx0ZW1wbGF0ZSA9ICcnOw0KJHRoZW1lT2JqZWN0ID0gY21zbXMoKS0+Z2V0X3ZhcmlhYmxlKCdhZG1pbnRoZW1lJyk7DQppZiAoZW1wdHkoJHJvd1sidXJsIl0pID09IGZhbHNlKSB7DQogICAgJHByZXR0eXVybCA9ICRyb3dbInVybCJdOw0KfSBlbHNlIHsNCiAgICAkcHJldHR5dXJsID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfcHJldHR5X3VybCgkdGhpcywgZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfcHJlZml4KCRtb2QpLCAkcm93WydpdGVtX2lkJ10sICRyb3dbJ2FsaWFzJ10sICgkZGVmYXVsdF9kZXRhaWxwYWdlID09IC0xICYmICFpc1NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pID8gJGRldGFpbHBhZ2UgOiAoaXNTZXQoJHBhcmFtc1siZGV0YWlscGFnZSJdKSA/ICRkZXRhaWxwYWdlIDogJycgKSksICRkZXRhaWx0ZW1wbGF0ZSk7DQp9DQokcHJldmlld19saW5rID0gJG1vZC0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwgJGRldGFpbF9yZXR1cm5pZCwgJ2RldGFpbCcsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdmlldy5naWYnKSwgYXJyYXkoJ2l0ZW1faWQnID0+ICRyb3dbJ2l0ZW1faWQnXSwgJ2RldGFpbHRlbXBsYXRlJyA9PiAkZGV0YWlsdGVtcGxhdGUpLCAnJywgZmFsc2UsICRpbmxpbmUsICd0YXJnZXQ9Il9ibGFuayInLCBmYWxzZSwgJHByZXR0eXVybCk7DQoNCiRzbWFydHktPmFzc2lnbigncHJldmlld192aWV3JywgJHByZXZpZXdfbGluayk7DQoNCmVjaG8gJG1vZC0+UHJvY2Vzc1RlbXBsYXRlKCdlZGl0aXRlbS50cGwnKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_editoption.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkNCiAgICByZXR1cm47DQoNCg0KDQovLyBsYXp5IGxvYWRpbmcNCg0KJGxhenlsb2FkaW5nID0gIDA7DQppZiAoaXNTZXQoJHBhcmFtc1sibGF6eWxvYWRpbmciXSkpIA0KICAgICRsYXp5bG9hZGluZyA9IDE7DQoNCiRsYXp5bG9hZGluZ19vbGQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdsYXp5bG9hZGluZycpID8gJG1vZC0+R2V0UHJlZmVyZW5jZSgnbGF6eWxvYWRpbmcnKSA6IDA7DQoNCi8vIHNldCAgbGF6eSBsb2FkaW5nLCBjbGVhciBjYWNoZQ0KaWYoJGxhenlsb2FkaW5nX29sZCAhPSAkbGF6eWxvYWRpbmcpIHsNCiAgICAkcXVlcnkgPSAnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlcyBTRVQgYWxsb3dfZmVfbGF6eWxvYWQgPSA/IFdIRVJFIG1vZHVsZV9uYW1lID0gPyc7DQogICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGxhenlsb2FkaW5nLCRtb2QtPkdldE5hbWUoKSkpOw0KICAgIGNtc21zKCktPmNsZWFyX2NhY2hlZF9maWxlcygpOw0KfQ0KJG1vZC0+UmVtb3ZlUHJlZmVyZW5jZSgnY3VzdG9tX2ZpZWxkc19kZWZhdWx0Jyk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdjdXN0b21fZmllbGRzX2RlZmF1bHQnLGltcGxvZGUoJywnLCAkcGFyYW1zWyJjdXN0b21fZmllbGRzX2RlZmF1bHQiXSkpOw0KDQokcHJlZnMgPSBhcnJheSgpOw0KJHByZWZzW10gPSAiZnJpZW5kbHluYW1lIjsNCiRwcmVmc1tdID0gIml0ZW1fdGl0bGUiOw0KJHByZWZzW10gPSAiaXRlbV9zaW5ndWxhciI7DQokcHJlZnNbXSA9ICJpdGVtX3BsdXJhbCI7DQokcHJlZnNbXSA9ICJ1cmxfcHJlZml4IjsNCiRwcmVmc1tdID0gImRlZmF1bHRfYWN0aW9uX3BhcmFtcyI7DQokcHJlZnNbXSA9ICJkZXRhaWxfYWN0aW9uX3BhcmFtcyI7DQokcHJlZnNbXSA9ICJkZXRhaWxfYWN0aW9uX3BhcmFtcyI7DQokcHJlZnNbXSA9ICJ0aXRsZV9wYXJhbV9mb3JfY2FjaGUiOw0KJHByZWZzW10gPSAiZGlzcGxheV9pbmxpbmUiOw0KJHByZWZzW10gPSAibGF6eWxvYWRpbmciOw0KJHByZWZzW10gPSAidXNlcmdyb3VwX2RlcGVuZGVuY2UiOw0KJHByZWZzW10gPSAiaGFzX2FkbWluIjsNCiRwcmVmc1tdID0gInByZXZpZXdfYWRtaW4iOw0KJHByZWZzW10gPSAiY29weV9hZG1pbiI7DQokcHJlZnNbXSA9ICJpdGVtX3RpdGxlX2VkaXQiOw0KJHByZWZzW10gPSAiaXRlbV9kYXRlX2VkaXQiOw0KJHByZWZzW10gPSAiaXRlbV9kYXRlX2VuZF9lZGl0IjsNCiRwcmVmc1tdID0gIml0ZW1fY2F0ZWdvcnlfZWRpdCI7DQokcHJlZnNbXSA9ICJyZWN1cnNpdmUiOw0KJHByZWZzW10gPSAiZmlsdGVyX2RhdGUiOw0KJHByZWZzW10gPSAiZmlsdGVyX2RhdGUiOw0KJHByZWZzW10gPSAiY2F0ZWdvcnlfZXh0cmFfbGFiZWwiOw0KJHByZWZzW10gPSAiY2F0ZWdvcnlfZXh0cmEyX2xhYmVsIjsNCiRwcmVmc1tdID0gIml0ZW1fYWxpYXNfZWRpdCI7DQokcHJlZnNbXSA9ICJpdGVtX3VybF9lZGl0IjsNCiRwcmVmc1tdID0gIml0ZW1fZGV0YWlsX3JldHVybmlkIjsNCiRwcmVmc1tdID0gIml0ZW1fY2F0ZWdvcnlfcmV0dXJuaWQiOw0KJHByZWZzW10gPSAic3VtbWFyeV9wYWdlbGltaXQiOw0KJHByZWZzW10gPSAibW9kZSI7DQokcHJlZnNbXSA9ICJzZWFyY2hfZGF0ZV9lbmQiOw0KJHByZWZzW10gPSAic2VhcmNoYWJsZSI7DQokcHJlZnNbXSA9ICJpbWFnZXNfc2l6ZV9hZG1pbiI7DQoNCmV4dGVuZGVkX3Rvb2xzX29wdHM6OnNldF9wcmVmZXJlbmNlcygkcHJlZnMsICRwYXJhbXMsICRtb2QpOw0KDQoNCiRwcmVmcyA9IGFycmF5KCk7DQoNCmlmICgkcGFyYW1zWydtb2RlJ10gPT0gJ2FkdmFuY2VkJykgew0KICAgICRwcmVmc1tdID0gInNvcnRvcmRlcl9hZHZhbmNlZCI7DQogICAgJHByZWZzW10gPSAic29ydGJ5X2FkdmFuY2VkIjsNCn0NCg0KZXh0ZW5kZWRfdG9vbHNfb3B0czo6c2V0X3ByZWZlcmVuY2VzKCRwcmVmcywgJHBhcmFtcywgJG1vZCk7DQoNCg0KDQokbW9kLT5SZWRpcmVjdFRvVGFiKCRpZCwgJ29wdGlvbnRhYicpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_edittemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghJG1vZC0+Q2hlY2tQZXJtaXNzaW9uKCRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19tb2RpZnlfb3B0aW9uJykpDQoJcmV0dXJuOw0KDQppZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKSB7DQoJJHBhcmFtcyA9IGFycmF5KA0KCQknYWN0aXZlX3RhYicgPT4gJ3RlbXBsYXRldGFiJw0KCSk7DQoJJG1vZC0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsNCn0NCg0KJHRwbF9pZCAgICAgICA9IG51bGw7DQokdGVtcGxhdGVuYW1lID0gJyc7DQokdGVtcGxhdGV0ZXh0ID0gJyc7DQokZXJyb3JzICAgICAgID0gYXJyYXkoKTsNCg0KLy8gaWYgJHBhcmFtc1sndHBsX2lkJ10gaXMgc3VwcGxpZWQgYW5kIGV4aXN0cywgcG9wdWxhdGUgd2l0aCB2YWx1ZXMgZnJvbSBkYXRhYmFzZQ0KaWYgKGlzc2V0KCRwYXJhbXNbJ3RwbF9pZCddKSkgew0KCSR0cGxfaWQgPSAoaW50KSAkcGFyYW1zWyd0cGxfaWQnXTsNCgkkcXVlcnkgID0gJ1NFTEVDVCBuYW1lLCBjb250ZW50IEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ190ZW1wbGF0ZSBXSEVSRSB0cGxfaWQgPSA/JzsNCgkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoDQoJCSR0cGxfaWQNCgkpKTsNCgkNCglpZiAoJHJlc3VsdCAmJiAkcm93ID0gJHJlc3VsdC0+RmV0Y2hSb3coKSkgew0KCQkkdGVtcGxhdGVuYW1lID0gJHJvd1snbmFtZSddOw0KCQkkdGVtcGxhdGV0ZXh0ID0gJHJvd1snY29udGVudCddOw0KCX0NCn0NCg0KLy8gaGFuZGxlIHN1Ym1pdCBvciBhcHBseQ0KaWYgKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSB8fCBpc3NldCgkcGFyYW1zWydhcHBseSddKSkgew0KCSR0ZW1wbGF0ZW5hbWUgPSAkcGFyYW1zWyd0ZW1wbGF0ZV9uYW1lJ107DQoJJHRlbXBsYXRldGV4dCA9ICRwYXJhbXNbJ3RlbXBsYXRlX3RleHQnXTsNCglpZiAoIWlzc2V0KCR0cGxfaWQpKSB7DQoJCSR0ZW1wbGF0ZXR5cGUgPSAkcGFyYW1zWyd0ZW1wbGF0ZV90eXBlJ107DQoJfQ0KCQ0KCWlmICgkdGVtcGxhdGVuYW1lID09ICcnKSB7DQoJCSRlcnJvcnNbXSA9IGdlbmVyYXRvcigpLT5MYW5nKCd0ZW1wbGF0ZV9uYW1lX2VtcHR5Jyk7DQoJfQ0KCQ0KCWlmIChlbXB0eSgkZXJyb3JzKSkgew0KCQlpZiAoaXNzZXQoJHRwbF9pZCkpIHsNCgkJCSRxdWVyeSAgPSAnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfdGVtcGxhdGUgU0VUIG5hbWUgPSA/LCBjb250ZW50PT8gV0hFUkUgdHBsX2lkID0gPyc7DQoJCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoDQoJCQkJJHRlbXBsYXRlbmFtZSwNCgkJCQkkdGVtcGxhdGV0ZXh0LA0KCQkJCSR0cGxfaWQNCgkJCSkpOw0KCQkJaWYgKCEkcmVzdWx0KQ0KCQkJCWRpZSgnRkFUQUwgU1FMIEVSUk9SOiAnIC4gJGRiLT5FcnJvck1zZygpIC4gJzxici8+UVVFUlk6ICcgLiAkZGItPnNxbCk7DQoJCX0gZWxzZSB7DQoJCQkkcXVlcnkgID0gJ0lOU0VSVCBJTlRPICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfdGVtcGxhdGUgKG5hbWUsIGNvbnRlbnQsIHR5cGUpIFZBTFVFUyAoPywgPywgPyknOw0KCQkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KA0KCQkJCSR0ZW1wbGF0ZW5hbWUsDQoJCQkJJHRlbXBsYXRldGV4dCwNCgkJCQkkdGVtcGxhdGV0eXBlDQoJCQkpKTsNCgkJCWlmICghJHJlc3VsdCkNCgkJCQlkaWUoJ0ZBVEFMIFNRTCBFUlJPUjogJyAuICRkYi0+RXJyb3JNc2coKSAuICc8YnIvPlFVRVJZOiAnIC4gJGRiLT5zcWwpOw0KCQkJDQoJCQkvLyBwb3B1bGF0ZSAkdHBsX2lkIGZvciBuZXdseSBpbnNlcnRlZCBpdGVtDQoJCQkkdHBsX2lkID0gJGRiLT5JbnNlcnRfSUQoKTsNCgkJfQ0KCQkNCgkJaWYgKCFpc3NldCgkcGFyYW1zWydhcHBseSddKSkgew0KCQkJJHBhcmFtcyA9IGFycmF5KA0KCQkJCSd0YWJfbWVzc2FnZScgPT4gJ2NoYW5nZXNzYXZlZCcsDQoJCQkJJ2FjdGl2ZV90YWInID0+ICd0ZW1wbGF0ZXRhYicNCgkJCSk7DQoJCQkkbW9kLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcmFtcyk7DQoJCX0gZWxzZSB7DQoJCQllY2hvICRtb2QtPlNob3dNZXNzYWdlKGdlbmVyYXRvcigpLT5MYW5nKCdjaGFuZ2Vzc2F2ZWQnKSk7DQoJCX0NCgl9DQp9DQoNCi8vIGRpc3BsYXkgZXJyb3JzIGlmIHRoZXJlIGFyZSBhbnkNCmlmICghZW1wdHkoJGVycm9ycykpIHsNCgllY2hvICRtb2QtPlNob3dFcnJvcnMoJGVycm9ycyk7DQp9DQoNCmlmIChpc3NldCgkdHBsX2lkKSkgew0KCSRzbWFydHktPmFzc2lnbignaWRmaWVsZCcsICRtb2QtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ3RwbF9pZCcsICR0cGxfaWQpKTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCd0aXRsZScsIChpc3NldCgkdHBsX2lkKSA/IGdlbmVyYXRvcigpLT5MYW5nKCdlZGl0dGVtcGxhdGUnKSA6IHNwcmludGYoZ2VuZXJhdG9yKCktPkxhbmcoJ2FkZHRlbXBsYXRlJyksIHVjZmlyc3QoJHBhcmFtc1sndHlwZSddKSkpKTsNCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJG1vZC0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkbWluX2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJG1vZC0+Q3JlYXRlRm9ybUVuZCgpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdGVtcGxhdGUnLCBnZW5lcmF0b3IoKS0+TGFuZygndGVtcGxhdGUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3RlbXBsYXRlJywgJG1vZC0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsICRpZCwgJHRlbXBsYXRldGV4dCwgJ3RlbXBsYXRlX3RleHQnKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X25hbWUnLCBnZW5lcmF0b3IoKS0+TGFuZygndGVtcGxhdGVfbmFtZScpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfbmFtZScsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICd0ZW1wbGF0ZV9uYW1lJywgJHRlbXBsYXRlbmFtZSwgNDApKTsNCg0KaWYgKCFpc3NldCgkdHBsX2lkKSkgew0KCSRzbWFydHktPmFzc2lnbignaW5wdXRfdHlwZScsICRtb2QtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ3RlbXBsYXRlX3R5cGUnLCAkcGFyYW1zWyd0eXBlJ10pKTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkbW9kLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCBsYW5nKCdzdWJtaXQnKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdhcHBseScsICRtb2QtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2FwcGx5JywgbGFuZygnYXBwbHknKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkbW9kLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjYW5jZWwnLCBsYW5nKCdjYW5jZWwnKSkpOw0KDQplY2hvICRtb2QtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdHRlbXBsYXRlLnRwbCcpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_fields.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcGxvYWRzIC09IGFsbG93IHVzZXJzIHRvIHVwbG9hZCBzdHVmZiwgYSBwc2V1ZG8gZmlsZSBtYW5hZ2VyIiBtb2R1bGUKIyBBdXRob3I6IFJvYmVydCBDYW1wYmVsbCA8cm9iQHRlY2hjb20uZHluZG5zLm9yZz4KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6CS8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IiBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7IHdpZHRoOiA4MCU7Ij4nIC4KICRtb2QtPkNyZWF0ZUltYWdlTGluaygkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGdlbmVyYXRvcigpLT5MYW5nKCdiYWNrJyksICdpY29ucy9zeXN0ZW0vYmFjay5naWYnLCBhcnJheSgpLCAnJywgJycsIGZhbHNlKSAuICc8L2Rpdj48YnIvPic7CgplY2hvICRtb2QtPlN0YXJ0VGFiSGVhZGVycygpOwppZiAoJG1vZC0+Q2hlY2tQZXJtaXNzaW9uKCRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19tb2RpZnlfb3B0aW9uJykpIHsKICAgIGVjaG8gJG1vZC0+U2V0VGFiSGVhZGVyKCdpdGVtcycsIGdlbmVyYXRvcigpLT5MYW5nKCdpdGVtcycpKTsKICAgIGVjaG8gJG1vZC0+U2V0VGFiSGVhZGVyKCdjYXRlZ29yaWVzJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2NhdGVnb3JpZXMnKSk7Cn0KZWNobyAkbW9kLT5FbmRUYWJIZWFkZXJzKCk7CmVjaG8gJG1vZC0+U3RhcnRUYWJDb250ZW50KCk7CmlmICgkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkgewogICAgZWNobyAkbW9kLT5TdGFydFRhYignaXRlbXMnLCAkcGFyYW1zKTsKICAgIGluY2x1ZGUgZGlybmFtZShfX0ZJTEVfXykgLiAnL2Z1bmN0aW9uLmFkbWluX2ZpZWxkZGVmdGFiLnBocCc7CiAgICBlY2hvICRtb2QtPkVuZFRhYigpOwogICAgZWNobyAkbW9kLT5TdGFydFRhYignY2F0ZWdvcmllcycsICRwYXJhbXMpOwogICAgaW5jbHVkZSBkaXJuYW1lKF9fRklMRV9fKSAuICcvZnVuY3Rpb24uYWRtaW5fZmllbGRkZWZ0YWJfY2F0ZWdvcmllcy5waHAnOwogICAgZWNobyAkbW9kLT5FbmRUYWIoKTsKfQplY2hvICRtb2QtPkVuZFRhYkNvbnRlbnQoKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_movefielddef.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkNCiAgICByZXR1cm47DQoNCiRkYXRhID0gdHJpbSh0cmltKCRwYXJhbXNbJ3NlcmlhbGRhdGEnXSksICcsJyk7DQokZGF0YSA9IGV4cGxvZGUoJywnLCAkZGF0YSk7DQoNCiRzb3J0aW5nID0gMTsNCmZvciAoJGkgPSAwOyAkaSA8IGNvdW50KCRkYXRhKTsgJGkrKykgew0KICAgICRpdGVtX2lkID0gJGRhdGFbJGldOw0KICAgIGlmICghJGl0ZW1faWQpDQogICAgICAgIGNvbnRpbnVlOw0KICAgICRxdWVyeSA9ICdVUERBVEUgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZiBTRVQgcG9zaXRpb24gPSA/IFdIRVJFIGZpZWxkZGVmX2lkID0gPyc7DQogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHNvcnRpbmcrKywgJGl0ZW1faWQpKTsNCiAgICANCn0NCg0KJG1vZC0+UmVkaXJlY3RUb1RhYigkaWQsICRwYXJhbXNbInNlY3Rpb24iXSwgYXJyYXkoKSwgJ2FkbWluX2ZpZWxkcycpOw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_moveitem.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9pdGVtJykpDQogICAgcmV0dXJuOw0KDQokZGF0YSA9IHRyaW0odHJpbSgkcGFyYW1zWydzZXJpYWxkYXRhJ10pLCAnLCcpOw0KJGRhdGEgPSBhcnJheV9yZXZlcnNlKGV4cGxvZGUoJywnLCAkZGF0YSkpOw0KJGl0ZW1zID0gYXJyYXkoKTsNCiRzb3J0aW5nID0gMTsNCmZvciAoJGkgPSAwOyAkaSA8IGNvdW50KCRkYXRhKTsgJGkrKykgew0KICAgICRpdGVtX2lkID0gJGRhdGFbJGldOw0KICAgIGlmICghJGl0ZW1faWQpDQogICAgICAgIGNvbnRpbnVlOw0KDQogICAgJHNvcnRpbmcrKzsNCg0KICAgICRpdGVtX2lkX29sZCA9ICRpdGVtc1skc29ydGluZ107DQoNCiAgICBpZiAoJGl0ZW1faWQgPT0gJGl0ZW1faWRfb2xkKQ0KICAgICAgICBjb250aW51ZTsNCg0KICAgICRpdGVtID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfaXRlbSgkbW9kLCAkaXRlbV9pZCk7DQogICAgJGl0ZW1zWyRpdGVtWyJwb3NpdGlvbiJdXSA9ICRpdGVtWyJpdGVtX2lkIl07DQp9DQoNCmtzb3J0KCRpdGVtcyk7DQokaXRlbXMyID0gYXJyYXkoKTsNCmZvcmVhY2ggKCRpdGVtcyBhcyAka2V5ID0+ICRpdGVtKSB7DQogICAgJGl0ZW1zMltdID0gJGtleTsNCn0NCg0KDQokaW5kZXggPSAwOw0KJG5ld19zb3J0aW5nID0gYXJyYXkoKTsNCmZvcmVhY2ggKCRkYXRhIGFzICRrZXkgPT4gJGQpIHsNCiAgICAkbmV3X3NvcnRpbmdbJGl0ZW1zMlska2V5XV0gPSAkZDsNCn0NCg0KZm9yZWFjaCAoJG5ld19zb3J0aW5nIGFzICRrZXkgPT4gJGl0ZW1faWQpIHsNCiAgICAkcXVlcnkgPSAnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbSBTRVQgcG9zaXRpb24gPSA/IFdIRVJFIGl0ZW1faWQgPSA/JzsNCiAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgka2V5LCAkaXRlbV9pZCkpOw0KICAgIEAkbW9kLT5TZW5kRXZlbnQoJ0l0ZW1FZGl0ZWQnLCBhcnJheSgnaXRlbV9pZCcgPT4gJGl0ZW1faWQpKTsNCn0NCg0KDQoNCkAkbW9kLT5TZW5kRXZlbnQoJ0l0ZW1zUmVvcmRlcmVkJywgYXJyYXkoKSk7DQokbW9kLT5SZWRpcmVjdFRvVGFiKCRpZCwgJ2l0ZW10YWInKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_ordercategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcGxvYWRzIC09IGFsbG93IHVzZXJzIHRvIHVwbG9hZCBzdHVmZiwgYSBwc2V1ZG8gZmlsZSBtYW5hZ2VyIiBtb2R1bGUKIyBBdXRob3I6IFJvYmVydCBDYW1wYmVsbCA8cm9iQHRlY2hjb20uZHluZG5zLm9yZz4KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6CS8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQokbW9kLT5zbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJG1vZC0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkbWluX29yZGVyY2F0ZWdvcnlfZG8nLCAkcmV0dXJuaWQpKTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkbW9kLT5DcmVhdGVGb3JtRW5kKCkpOwoKCgokcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV8iIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAiX2NhdGVnb3JpZXMgT1JERVIgQlkgaGllcmFyY2h5X3Bvc2l0aW9uIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgoKJHJvd2NsYXNzID0gJ3JvdzEnOwp3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsKICAgICRvbmVyb3cgPSBjZ2VfYXJyYXk6OnRvX29iamVjdCgkcm93KTsKICAgICRlbnRyeWFycmF5W10gPSAkb25lcm93Owp9CiRtb2QtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignaXRlbXMnLCAkZW50cnlhcnJheSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkZW50cnlhcnJheSkpOwoKZWNobyAkbW9kLT5Qcm9jZXNzVGVtcGxhdGUoJ29yZGVyY2F0ZWdvcnkudHBsJyk7CiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_ordercategory_do.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcGxvYWRzIC09IGFsbG93IHVzZXJzIHRvIHVwbG9hZCBzdHVmZiwgYSBwc2V1ZG8gZmlsZSBtYW5hZ2VyIiBtb2R1bGUKIyBBdXRob3I6IFJvYmVydCBDYW1wYmVsbCA8cm9iQHRlY2hjb20uZHluZG5zLm9yZz4KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6CS8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYgKCFpc3NldCgkZ0NtcykpCiAgICBleGl0OwppZiAoISRtb2QtPkNoZWNrUGVybWlzc2lvbigkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfbW9kaWZ5X2NhdGVnb3JpZXMnKSkKICAgIHJldHVybjsKCgoKaWYgKGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSB8fCAhaXNTZXQoJF9QT1NUWydkYXRhJ10pKSB7CiAgICAkbW9kLT5SZWRpcmVjdFRvVGFiKCRpZCwgJ2NhdGVnb3J5dGFiJyk7Cn0KCmlmIChpc3NldCgkX1BPU1RbJ2RhdGEnXSkpIHsKCiAgICBmdW5jdGlvbiBvcmRlcmNvbnRlbnRfZ2V0X25vZGVfcmVjKCRzdHIsICRwcmVmaXggPSAnY2F0ZWdvcnlfJykgewogICAgICAgICRnQ21zID0gY21zbXMoKTsKICAgICAgICAkdHJlZSA9ICRnQ21zLT5HZXRIaWVyYXJjaHlNYW5hZ2VyKCk7CgogICAgICAgIGlmICghaXNfbnVtZXJpYygkc3RyKSAmJiBzdGFydHN3aXRoKCRzdHIsICRwcmVmaXgpKSB7CiAgICAgICAgICAgICRzdHIgPSBzdWJzdHIoJHN0ciwgc3RybGVuKCRwcmVmaXgpKTsKICAgICAgICB9CgogICAgICAgICRpZCA9IChpbnQpICRzdHI7CiAgICAgICAgJHRtcCA9ICR0cmVlLT5maW5kX2J5X3RhZygnaWQnLCAkaWQpOwogICAgICAgICRjb250ZW50ID0gJyc7CiAgICAgICAgaWYgKCR0bXApIHsKICAgICAgICAgICAgJGNvbnRlbnQgPSAkdG1wLT5nZXRDb250ZW50KCk7CiAgICAgICAgICAgIGlmICgkY29udGVudCkgewogICAgICAgICAgICAgICAgJHJlYyA9IGFyYXkoKTsKICAgICAgICAgICAgICAgICRyZWNbJ2lkJ10gPSAoaW50KSAkc3RyOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIG9yZGVyY29udGVudF9jcmVhdGVfZmxhdGxpc3QoJHRyZWUsICRwYXJlbnRfaWQgPSAtMSkgewogICAgICAgICRkYXRhID0gYXJyYXkoKTsKICAgICAgICAkb3JkZXIgPSAxOwogICAgICAgIGZvcmVhY2ggKCR0cmVlIGFzICYkbm9kZSkgewogICAgICAgICAgICBpZiAoaXNfYXJyYXkoJG5vZGUpICYmIGNvdW50KCRub2RlKSA9PSAyKSB7CiAgICAgICAgICAgICAgICAkcGlkID0gc3Vic3RyKCRub2RlWzBdLCBzdHJsZW4oJ2NhdGVnb3J5XycpKTsKICAgICAgICAgICAgICAgICRkYXRhW10gPSBhcnJheSgnaWQnID0+ICRwaWQsICdwYXJlbnRfaWQnID0+ICRwYXJlbnRfaWQsICdvcmRlcicgPT4gJG9yZGVyKTsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkbm9kZVsxXSkgJiYgaXNfYXJyYXkoJG5vZGVbMV0pKSB7CiAgICAgICAgICAgICAgICAgICAgJGRhdGEgPSBhcnJheV9tZXJnZSgkZGF0YSwgb3JkZXJjb250ZW50X2NyZWF0ZV9mbGF0bGlzdCgkbm9kZVsxXSwgJHBpZCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHBpZCA9IHN1YnN0cigkbm9kZSwgc3RybGVuKCdjYXRlZ29yeV8nKSk7CiAgICAgICAgICAgICAgICAkZGF0YVtdID0gYXJyYXkoJ2lkJyA9PiAkcGlkLCAncGFyZW50X2lkJyA9PiAkcGFyZW50X2lkLCAnb3JkZXInID0+ICRvcmRlcik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG9yZGVyKys7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkZGF0YTsKICAgIH0KCiAgICAkZGF0YSA9IGpzb25fZGVjb2RlKCRfUE9TVFsnZGF0YSddKTsKCgogICAgLy8gc3RlcCAxLCBjcmVhdGUgYSBmbGF0IGxpc3Qgb2YgdGhlIGNvbnRlbnQgaXRlbXMsIGFuZCB0aGVpciBuZXcgb3JkZXJzLCBhbmQgbmV3IHBhcmVudHMuCiAgICAkZGF0YSA9IG9yZGVyY29udGVudF9jcmVhdGVfZmxhdGxpc3QoJGRhdGEpOwoKCgogICAgLy8gc3RlcCAyLiBtZXJnZSBpbiBvbGQgb3JkZXJzLCBhbmQgb2xkIHBhcmVudHMuCiAgICAkZ0NtcyA9IGNtc21zKCk7CiAgICAkZGF0YTIgPSBhcnJheSgpOwoKICAgIC8vIGFsbCBjYXRlZ29yaWVzCiAgICAkcXVlcnkgPSAiU0VMRUNUIGNhdGVnb3J5X2lkLHBhcmVudF9pZCxwb3NpdGlvbiBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlXyIgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICJfY2F0ZWdvcmllcyBPUkRFUiBCWSBoaWVyYXJjaHlfcG9zaXRpb24iOwogICAgJGNhdGVnb3JpZXMgPSAkZGItPkdldEFsbCgkcXVlcnkpOwogICAgJGNhdF9hcnJheSA9IGFycmF5KCk7CiAgICBmb3JlYWNoICgkY2F0ZWdvcmllcyBhcyAkY2F0ZWdvcnkpIHsKICAgICAgICAkY2F0X2FycmF5WyRjYXRlZ29yeVsiY2F0ZWdvcnlfaWQiXV0gPSBhcnJheSgkY2F0ZWdvcnlbInBhcmVudF9pZCJdLCRjYXRlZ29yeVsicG9zaXRpb24iXSk7CiAgICB9CgoKICAgIGZvciAoJGkgPSAwOyAkaSA8IGNvdW50KCRkYXRhKTsgJGkrKykgewogICAgICAgICRyZWMgPSAmICRkYXRhWyRpXTsKICAgICAgICAkb2xkX2NhdGVnb3J5ID0gJGNhdF9hcnJheVskcmVjWydpZCddXTsKICAgICAgICBpZiAoJG9sZF9jYXRlZ29yeSkgewogICAgICAgICAgICAkcmVjWydvbGRfcGFyZW50J10gPSAkb2xkX2NhdGVnb3J5WzBdOwogICAgICAgICAgICAkcmVjWydvbGRfb3JkZXInXSA9ICRvbGRfY2F0ZWdvcnlbMV07CgogICAgICAgICAgICBpZiAoKCRyZWNbJ29sZF9wYXJlbnQnXSAhPSAkcmVjWydwYXJlbnRfaWQnXSkgfHwKICAgICAgICAgICAgICAgICAgICAkcmVjWydvbGRfb3JkZXInXSAhPSAkcmVjWydvcmRlciddKSB7CiAgICAgICAgICAgICAgICAkZGF0YTJbXSA9ICRyZWM7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgCiAgICAvLyBkbyB0aGUgdXBkYXRlcwogICAgaWYgKGNvdW50KCRkYXRhMikgPiAwKSB7CiAgICAgICAgJGRiID0gJGdDbXMtPkdldERiKCk7CiAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2NhdGVnb3JpZXMgY29udGVudCBTRVQgcG9zaXRpb24gPSA/LCBwYXJlbnRfaWQgPSA/IFdIRVJFIGNhdGVnb3J5X2lkID0gPyc7CiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJGRhdGEyKTsgJGkrKykgewogICAgICAgICAgICAkcmVjID0gJiAkZGF0YTJbJGldOwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmVjWydvcmRlciddLCAkcmVjWydwYXJlbnRfaWQnXSwgJHJlY1snaWQnXSkpOwogICAgICAgICAgICBAJG1vZC0+U2VuZEV2ZW50KCdDYXRlZ29yeUVkaXRlZCcsIGFycmF5KCdjYXRlZ29yeV9pZCcgPT4gJHJlY1snaWQnXSkpOwogICAgICAgIH0KICAgICAgICBnZW5lcmF0b3JfdG9vbHM6OnVwZGF0ZV9oaWVyYXJjaHlfcG9zaXRpb25zKCRtb2QpOwogICAgICAgIEAkbW9kLT5TZW5kRXZlbnQoJ0NhdGVnb3J5UmVvcmRlcmVkJywgYXJyYXkoKSk7CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gbGFuZygnbm90aGluZ3RvZG8nKTsKICAgICAgICByZXR1cm47CiAgICB9Cn0KCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_search_reindex.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkNCiAgICByZXR1cm47DQoNCiRzZWFyY2ggPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ1NlYXJjaCcpOw0KaWYgKCRzZWFyY2ggIT0gRkFMU0UpIHsNCiAgICAkbW9kLT5TZWFyY2hSZWluZGV4KCRzZWFyY2gpOw0KfQ0KDQokbW9kLT5SZWRpcmVjdFRvVGFiKCRpZCwgJ29wdGlvbnRhYicpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_templates.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBVcGxvYWRzIC09IGFsbG93IHVzZXJzIHRvIHVwbG9hZCBzdHVmZiwgYSBwc2V1ZG8gZmlsZSBtYW5hZ2VyIiBtb2R1bGUKIyBBdXRob3I6IFJvYmVydCBDYW1wYmVsbCA8cm9iQHRlY2hjb20uZHluZG5zLm9yZz4KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6CS8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IiBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7IHdpZHRoOiA4MCU7Ij4nIC4KICRtb2QtPkNyZWF0ZUltYWdlTGluaygkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGdlbmVyYXRvcigpLT5MYW5nKCdiYWNrJyksICdpY29ucy9zeXN0ZW0vYmFjay5naWYnLCBhcnJheSgpLCAnJywgJycsIGZhbHNlKSAuICc8L2Rpdj48YnIvPic7CgplY2hvICRtb2QtPlN0YXJ0VGFiSGVhZGVycygpOwppZiAoJG1vZC0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykpIHsKICAgIGVjaG8gJG1vZC0+U2V0VGFiSGVhZGVyKCdjYXRlZ29yeV90ZW1wbGF0ZScsIGdlbmVyYXRvcigpLT5MYW5nKCdjYXRlZ29yeV90ZW1wbGF0ZScpKTsKICAgIGVjaG8gJG1vZC0+U2V0VGFiSGVhZGVyKCdzdW1tYXJ5X3RlbXBsYXRlJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3N1bW1hcnlfdGVtcGxhdGUnKSk7CiAgICBlY2hvICRtb2QtPlNldFRhYkhlYWRlcignZGV0YWlsX3RlbXBsYXRlJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2RldGFpbF90ZW1wbGF0ZScpKTsKICAgIGVjaG8gJG1vZC0+U2V0VGFiSGVhZGVyKCdmaWx0ZXJfdGVtcGxhdGUnLCBnZW5lcmF0b3IoKS0+TGFuZygnZmlsdGVyX3RlbXBsYXRlJykpOwogICAgLy9lY2hvICRtb2QtPlNldFRhYkhlYWRlcignZGVmYXVsdF90ZW1wbGF0ZXMnLCBnZW5lcmF0b3IoKS0+TGFuZygnZGVmYXVsdF90ZW1wbGF0ZXMnKSk7Cn0KZWNobyAkbW9kLT5FbmRUYWJIZWFkZXJzKCk7CmVjaG8gJG1vZC0+U3RhcnRUYWJDb250ZW50KCk7CmlmICgkbW9kLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSkgewogICAgLy8gdGhlIGNhdGVnb3J5IHRlbXBsYXRlIHRhYgogICAgZWNobyAkbW9kLT5TdGFydFRhYignY2F0ZWdvcnlfdGVtcGxhdGUnKTsKICAgIGVjaG8gJG1vZC0+U2hvd1RlbXBsYXRlTGlzdCgkaWQsICRyZXR1cm5pZCwgJ2NhdGVnb3J5X3RlbXBsYXRlJywgJ2RlZmF1bHRfY2F0ZWdvcnlfdGVtcGxhdGUnLCAnY2F0ZWdvcnlfdGVtcGxhdGUnLCAnY3VycmVudF9jYXRlZ29yeV90ZW1wbGF0ZScsIGdlbmVyYXRvcigpLT5MYW5nKCdhZGRlZGl0X2NhdGVnb3J5X3RlbXBsYXRlJyksICdhZG1pbl90ZW1wbGF0ZXMnKTsKICAgIGVjaG8gJG1vZC0+RW5kVGFiKCk7CgogICAgLy8gdGhlIHN1bW1hcnkgdGVtcGxhdGUgdGFiCiAgICBlY2hvICRtb2QtPlN0YXJ0VGFiKCJzdW1tYXJ5X3RlbXBsYXRlIik7CiAgICBlY2hvICRtb2QtPlNob3dUZW1wbGF0ZUxpc3QoJGlkLCAkcmV0dXJuaWQsICdzdW1tYXJ5X3RlbXBsYXRlJywgJ2RlZmF1bHRfc3VtbWFyeV90ZW1wbGF0ZScsICdzdW1tYXJ5X3RlbXBsYXRlJywgJ2N1cnJlbnRfc3VtbWFyeV90ZW1wbGF0ZScsIGdlbmVyYXRvcigpLT5MYW5nKCdhZGRlZGl0X3N1bW1hcnlfdGVtcGxhdGUnKSwgJ2FkbWluX3RlbXBsYXRlcycpOwogICAgZWNobyAkbW9kLT5FbmRUYWIoKTsKCiAgICAvLyB0aGUgZGV0YWlsIHRlbXBsYXRlIHRhYgogICAgZWNobyAkbW9kLT5TdGFydFRhYigiZGV0YWlsX3RlbXBsYXRlIik7CiAgICBlY2hvICRtb2QtPlNob3dUZW1wbGF0ZUxpc3QoJGlkLCAkcmV0dXJuaWQsICdkZXRhaWxfdGVtcGxhdGUnLCAnZGVmYXVsdF9kZXRhaWxfdGVtcGxhdGUnLCAnZGV0YWlsX3RlbXBsYXRlJywgJ2N1cnJlbnRfZGV0YWlsX3RlbXBsYXRlJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2FkZGVkaXRfZGV0YWlsX3RlbXBsYXRlJyksICdhZG1pbl90ZW1wbGF0ZXMnKTsKICAgIGVjaG8gJG1vZC0+RW5kVGFiKCk7CgogICAgLy8gdGhlIGZpbHRlciB0ZW1wbGF0ZSB0YWIKICAgIGVjaG8gJG1vZC0+U3RhcnRUYWIoImZpbHRlcl90ZW1wbGF0ZSIpOwogICAgZWNobyAkbW9kLT5TaG93VGVtcGxhdGVMaXN0KCRpZCwgJHJldHVybmlkLCAnZmlsdGVyX3RlbXBsYXRlJywgJ2RlZmF1bHRfZmlsdGVyX3RlbXBsYXRlJywgJ2ZpbHRlcl90ZW1wbGF0ZScsICdjdXJyZW50X2ZpbHRlcl90ZW1wbGF0ZScsIGdlbmVyYXRvcigpLT5MYW5nKCdhZGRlZGl0X2ZpbHRlcl90ZW1wbGF0ZScpLCAnYWRtaW5fdGVtcGxhdGVzJyk7CiAgICBlY2hvICRtb2QtPkVuZFRhYigpOwoKCiAgICAvLyB0aGUgZGVmYXVsdCB0ZW1wbGF0ZXMgdGFiCiAgICAvKmVjaG8gJG1vZC0+U3RhcnRUYWIoJ2RlZmF1bHRfdGVtcGxhdGVzJyk7CgogICAgZWNobyAkbW9kLT5HZXREZWZhdWx0VGVtcGxhdGVGb3JtKCR0aGlzLCAkaWQsICRyZXR1cm5pZCwgJ2NhdGVnb3J5X3N5c2RlZmF1bHQnLCAnYWRtaW5fdGVtcGxhdGVzJywgJ2RlZmF1bHRfdGVtcGxhdGVzJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3RpdGxlX2NhdGVnb3J5X3N5c2RlZmF1bHQnKSwgJ29yaWdfY2F0ZWdvcnlfdGVtcGxhdGUudHBsJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2luZm9fc3lzZGVmYXVsdCcpKTsKICAgIGVjaG8gJG1vZC0+R2V0RGVmYXVsdFRlbXBsYXRlRm9ybSgkdGhpcywgJGlkLCAkcmV0dXJuaWQsICdzdW1tYXJ5X3N5c2RlZmF1bHQnLCAnYWRtaW5fdGVtcGxhdGVzJywgJ2RlZmF1bHRfdGVtcGxhdGVzJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3RpdGxlX3N1bW1hcnlfc3lzZGVmYXVsdCcpLCAnb3JpZ19zdW1tYXJ5X3RlbXBsYXRlLnRwbCcsIGdlbmVyYXRvcigpLT5MYW5nKCdpbmZvX3N5c2RlZmF1bHQnKSk7CiAgICBlY2hvICRtb2QtPkdldERlZmF1bHRUZW1wbGF0ZUZvcm0oJHRoaXMsICRpZCwgJHJldHVybmlkLCAnZGV0YWlsX3N5c2RlZmF1bHQnLCAnYWRtaW5fdGVtcGxhdGVzJywgJ2RlZmF1bHRfdGVtcGxhdGVzJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3RpdGxlX2RldGFpbF9zeXNkZWZhdWx0JyksICdvcmlnX2RldGFpbF90ZW1wbGF0ZS50cGwnLCBnZW5lcmF0b3IoKS0+TGFuZygnaW5mb19zeXNkZWZhdWx0JykpOwoKCiAgICBlY2hvICc8ZGl2IHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7IHdpZHRoOiA4MCU7Ij48L2Rpdj4nOwoKICAgIGVjaG8gJG1vZC0+RW5kVGFiKCk7Ki8KfQplY2hvICRtb2QtPkVuZFRhYkNvbnRlbnQoKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.categories.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwoKJGl0ZW1zID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfY2F0ZWdvcmllcygkbW9kLCAkaWQsJHBhcmFtcywkcmV0dXJuaWQpOwoKI0Rpc3BsYXkgdGVtcGxhdGUKJHNtYXJ0eS0+YXNzaWduKCdjb3VudCcsIGNvdW50KCRpdGVtcykpOwokc21hcnR5LT5hc3NpZ24oJ2NhdHMnLCAkaXRlbXMpOwoKICAvLyB0ZW1wbGF0ZQokdGhldGVtcGxhdGUgPSAnY2F0ZWdvcnlfdGVtcGxhdGUnIC4gJG1vZC0+R2V0UHJlZmVyZW5jZSgnY3VycmVudF9jYXRlZ29yeV90ZW1wbGF0ZScpOwppZiAoaXNzZXQoJHBhcmFtc1snY2F0ZWdvcnl0ZW1wbGF0ZSddKSkgewogICAgJHRoZXRlbXBsYXRlID0gJ2NhdGVnb3J5X3RlbXBsYXRlJyAuICRwYXJhbXNbJ2NhdGVnb3J5dGVtcGxhdGUnXTsKfQplY2hvICRtb2QtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkdGhldGVtcGxhdGUpOwoKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KI0JFR0lOX0xJQ0VOU0UNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogICBAa3V6bWFueSAoa3V6bWFueS5iaXopDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiANCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiNFTkRfTElDRU5TRQ0KaWYgKCFpc3NldCgkZ0NtcykpDQogICAgZXhpdDsNCg0KDQokZmllbGRlZnMgPSAnJzsNCnsNCiAgICAkdG1wID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZmllbGRzKCRtb2QsIGZhbHNlKTsNCg0KICAgIGlmIChpc19hcnJheSgkdG1wKSkgew0KICAgICAgICAkZmllbGRkZWZzID0gYXJyYXkoKTsNCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJHRtcCk7ICRpKyspIHsNCiAgICAgICAgICAgICRvYmogPSAkdG1wWyRpXTsNCiAgICAgICAgICAgICRmaWVsZGRlZnNbJG9iai0+YWxpYXNdID0gJG9iajsNCiAgICAgICAgfQ0KICAgIH0NCn0NCiRxdWVyeSA9ICcnOw0KJHF1ZXJ5MiA9ICcnOw0KJGNvdW50ID0gJyc7DQokcGFnZSA9ICcnOw0KJHN0YXJ0ZWxlbWVudCA9ICcnOw0KJGxpbWl0ID0gOTk5OTk7DQokaXRlbWxpc3QgPSAnJzsNCiRzb3J0dHlwZSA9ICcnOw0KJGNvdW50am9pbnMgPSBhcnJheSgpOw0KJGpvaW5zID0gYXJyYXkoKTsNCiRzb3J0ZmllbGQgPSAxOw0KdW5zZXQoJHBhcmFtc1snYXNzaWduJ10pOw0KJGlubGluZSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2Rpc3BsYXlfaW5saW5lJywgZmFsc2UpOw0KJGRlZmF1bHRfZGV0YWlscGFnZSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fZGV0YWlsX3JldHVybmlkJywgJycpOw0KJGRldGFpbHBhZ2UgPSAkZGVmYXVsdF9kZXRhaWxwYWdlOw0KaWYgKCFpc1NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pICYmIGlzU2V0KCRwYXJhbXNbInJldHVybmlkIl0pKQ0KICAgICRwYXJhbXNbImRldGFpbHBhZ2UiXSA9ICRwYXJhbXNbInJldHVybmlkIl07DQokZGV0YWlscGFnZSA9IGV4dGVuZGVkX3Rvb2xzX29wdHM6OmRldGFpbHBhZ2UoJHBhcmFtcywgJGRldGFpbHBhZ2UpOw0KaWYgKCRkZXRhaWxwYWdlID09ICRkZWZhdWx0X2RldGFpbHBhZ2UpDQogICAgdW5zZXQoJHBhcmFtc1siZGV0YWlscGFnZSJdKTsNCg0KDQokZGV0YWlsdGVtcGxhdGUgPSAnJzsNCiRmaWx0ZXJzID0gYXJyYXkoKTsNCiRmaWVsZHMgPSBhcnJheSgpOw0KJGZpZWxkczIgPSBhcnJheSgpOw0KJGRhdGVfdG8gPSAnJzsNCiRkYXRlX2Zyb20gPSAnJzsNCiRjYXRlZ29yeV9pZCA9IC0xOw0KJHBhcmFtYXJyYXl0bXAgPSBhcnJheSgpOw0KJGdyb3VwYnkgPSAnJzsNCg0KDQovLyB0ZW1wbGF0ZQ0KJHRoZXRlbXBsYXRlID0gJ3N1bW1hcnlfdGVtcGxhdGUnIC4gJG1vZC0+R2V0UHJlZmVyZW5jZSgnY3VycmVudF9zdW1tYXJ5X3RlbXBsYXRlJyk7DQppZiAoaXNzZXQoJHBhcmFtc1snc3VtbWFyeXRlbXBsYXRlJ10pKSB7DQogICAgJHRoZXRlbXBsYXRlID0gJ3N1bW1hcnlfdGVtcGxhdGUnIC4gJHBhcmFtc1snc3VtbWFyeXRlbXBsYXRlJ107DQp9DQoNCi8vIHRlbXBsYXRlDQppZiAoaXNzZXQoJHBhcmFtc1snZGV0YWlsdGVtcGxhdGUnXSkpIHsNCiAgICAkZGV0YWlsdGVtcGxhdGUgPSAkcGFyYW1zWydkZXRhaWx0ZW1wbGF0ZSddOw0KfQ0KDQppZiAoaXNzZXQoJHBhcmFtc1snaW5saW5lJ10pKSB7DQogICAgJGlubGluZSA9ICRwYXJhbXNbJ2lubGluZSddOw0KfQ0KDQoNCi8vIGRhdGUgZnJvbQ0KaWYgKGlzc2V0KCRwYXJhbXNbJ2RhdGVmcm9tJ10pKSB7DQogICAgJGRhdGVfZnJvbSA9ICRwYXJhbXNbJ2RhdGVmcm9tJ107DQp9DQppZiAoaXNzZXQoJHBhcmFtc1snZGF0ZWZyb21Nb250aCddKSkgew0KICAgICRkYXRlX2Zyb20gPSBta3RpbWUoMCwgMCwgMCwgJHBhcmFtc1snZGF0ZWZyb21Nb250aCddLCAkcGFyYW1zWydkYXRlZnJvbURheSddLCAkcGFyYW1zWydkYXRlZnJvbVllYXInXSk7DQp9DQppZiAoaXNzZXQoJHBhcmFtc1snZGF0ZXRvJ10pKSB7DQogICAgJGRhdGVfdG8gPSAkcGFyYW1zWydkYXRldG8nXTsNCn0NCmlmIChpc3NldCgkcGFyYW1zWydkYXRldG9Nb250aCddKSkgew0KICAgICRkYXRlX3RvID0gbWt0aW1lKDIzLCA1OSwgNTksICRwYXJhbXNbJ2RhdGV0b01vbnRoJ10sICRwYXJhbXNbJ2RhdGV0b0RheSddLCAkcGFyYW1zWydkYXRldG9ZZWFyJ10pOw0KfQ0KDQppZiAoaXNzZXQoJHBhcmFtc1snaXRlbV9kYXRlX2Zyb21fdG8nXSkpIHsNCiAgICAkZGF0ZV9mcm9tX3RvID0gZXhwbG9kZSgnfCcsICRwYXJhbXNbJ2l0ZW1fZGF0ZV9mcm9tX3RvJ10pOw0KICAgIGlmIChjb3VudCgkZGF0ZV9mcm9tX3RvKSA9PSAyKSB7DQogICAgICAgICRkYXRlX2Zyb20gPSBnZW5lcmF0b3JfdG9vbHM6OnByb2Nlc3NfZmlsdGVyX2RhdGUoJGRhdGVfZnJvbV90b1swXSk7DQogICAgICAgICRkYXRlX3RvID0gZ2VuZXJhdG9yX3Rvb2xzOjpwcm9jZXNzX2ZpbHRlcl9kYXRlKCRkYXRlX2Zyb21fdG9bMV0pOw0KICAgIH0NCn0NCg0KLy9jYXRlZ29yeSBpZA0KaWYgKGlzU2V0KCRwYXJhbXNbImNhdGVnb3J5X2lkIl0pKSB7DQogICAgJGNhdGVnb3J5X2lkID0gaW50dmFsKCRwYXJhbXNbImNhdGVnb3J5X2lkIl0pOw0KfQ0KDQoNCmlmIChpc3NldCgkcGFyYW1zWydpdGVtbGlzdCddKSkgew0KICAgICRpdGVtbGlzdCA9ICRwYXJhbXNbJ2l0ZW1saXN0J107DQogICAgdW5zZXQoJHBhcmFtc1snaXRlbWxpc3QnXSk7DQogICAgaWYgKCFpc19hcnJheSgkaXRlbWxpc3QpKSB7DQogICAgICAgICRpdGVtbGlzdCA9IGV4cGxvZGUoJywnLCAkaXRlbWxpc3QpOw0KICAgIH0NCn0NCmlmICghKGlzX2FycmF5KCRpdGVtbGlzdCkgJiYgY291bnQoJGl0ZW1saXN0KSA+IDApKSB7DQogICAgLy8gd2UgZG9uJ3QgaGF2ZSBhbiBleHBsaWNpdCBwcm9kdWN0IGxpc3QsIHNvIGdvdHRhIGJ1aWxkIGEgcXVlcnkNCiAgICAvLyBmcm9tIG90aGVyIHBhcmFtZXRlcnMNCiAgICAkc29ydG9yZGVyID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnc29ydG9yZGVyXycgLiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdtb2RlJyksICdkZXNjJyk7DQogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3NvcnRvcmRlciddKSkgew0KICAgICAgICBzd2l0Y2ggKHN0cnRvbG93ZXIoJHBhcmFtc1snc29ydG9yZGVyJ10pKSB7DQogICAgICAgICAgICBjYXNlICdhc2MnOg0KICAgICAgICAgICAgY2FzZSAnZGVzYyc6DQogICAgICAgICAgICAgICAgJHNvcnRvcmRlciA9ICRwYXJhbXNbJ3NvcnRvcmRlciddOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgJHNvcnRieSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ3NvcnRieV8nIC4gJG1vZC0+R2V0UHJlZmVyZW5jZSgnbW9kZScpLCAncG9zaXRpb24nKTsNCiAgICBpZiAoaXNzZXQoJHBhcmFtc1snc29ydGJ5J10pKSB7DQogICAgICAgICR0bXAgPSBzdHJ0b2xvd2VyKHRyaW0oJHBhcmFtc1snc29ydGJ5J10pKTsNCiAgICAgICAgc3dpdGNoICgkdG1wKSB7DQogICAgICAgICAgICBjYXNlICdpZCc6DQogICAgICAgICAgICAgICAgJHNvcnRieSA9ICdpZCc7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlICdpdGVtX2RhdGUnOg0KICAgICAgICAgICAgICAgICRzb3J0YnkgPSAnaXRlbV9kYXRlJzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgJ3Bvc2l0aW9uJzoNCiAgICAgICAgICAgICAgICAkc29ydGJ5ID0gJ3Bvc2l0aW9uJzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgJ3RpdGxlJzoNCiAgICAgICAgICAgICAgICAkc29ydGJ5ID0gJ3RpdGxlJzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgJ2NyZWF0ZWQnOg0KICAgICAgICAgICAgICAgICRzb3J0YnkgPSAnY3JlYXRlX2RhdGUnOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAnbW9kaWZpZWQnOg0KICAgICAgICAgICAgICAgICRzb3J0YnkgPSAnbW9kaWZpZWRfZGF0ZSc7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlICdyYW5kb20nOg0KICAgICAgICAgICAgICAgICRzb3J0YnkgPSAnUkFORCgpJzsNCiAgICAgICAgICAgICAgICAkc29ydG9yZGVyID0gJyc7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgIGlmIChzdGFydHN3aXRoKCR0bXAsICdmOicpKSB7DQogICAgICAgICAgICAgICAgICAgICRmaWVsZG5hbWUgPSBzdWJzdHIoJHRtcCwgc3RybGVuKCdmOicpKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRmaWVsZGRlZnNbJGZpZWxkbmFtZV0pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkZmllbGRpZCA9ICRmaWVsZGRlZnNbJGZpZWxkbmFtZV0tPmlkOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGFzID0gJ0ZWJyAuICRzb3J0ZmllbGQrKzsNCiAgICAgICAgICAgICAgICAgICAgICAgICRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsdiB7JGFzfSBPTiBjLmlkID0geyRhc30uaXRlbV9pZCBBTkQgJGFzLmZpZWxkZGVmX2lkID0gJ3skZmllbGRpZH0nIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzb3J0YnkgPSAieyRhc30udmFsdWUiOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICAgfQ0KICAgIGlmICgkc29ydGJ5ID09ICdyYW5kb20nKSB7DQogICAgICAgICRzb3J0YnkgPSAnUkFORCgpJzsNCiAgICAgICAgJHNvcnRvcmRlciA9ICcnOw0KICAgIH0NCg0KICAgIGlmIChpc3NldCgkcGFyYW1zWydzb3J0dHlwZSddKSkgew0KICAgICAgICAkdG1wID0gdHJpbSgkcGFyYW1zWydzb3J0dHlwZSddKTsNCiAgICAgICAgJHRtcCA9IHN0cnRvdXBwZXIoJHRtcCk7DQogICAgICAgIHN3aXRjaCAoJHRtcCkgew0KICAgICAgICAgICAgY2FzZSAnU1RSSU5HJzoNCiAgICAgICAgICAgICAgICAkc29ydHR5cGUgPSAnJzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgJ1NJR05FRCc6DQogICAgICAgICAgICBjYXNlICdVTlNJR05FRCc6DQogICAgICAgICAgICAgICAgJHNvcnR0eXBlID0gJHRtcDsNCiAgICAgICAgfQ0KICAgIH0NCiAgICAkbGltaXQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdzdW1tYXJ5X3BhZ2VsaW1pdF8nIC4gJG1vZC0+R2V0UHJlZmVyZW5jZSgnbW9kZScpLCAxMDAwMCk7DQogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3BhZ2VsaW1pdCddKSAmJiAkcGFyYW1zWydwYWdlbGltaXQnXSA+IDApIHsNCiAgICAgICAgJGxpbWl0ID0gKGludCkgJHBhcmFtc1sncGFnZWxpbWl0J107DQogICAgfQ0KDQogICAgJGxpbWl0ID0gbWF4KCRsaW1pdCwgMSk7DQogICAgJGxpbWl0ID0gbWluKCRsaW1pdCwgMTAwMDApOw0KDQoNCiAgICAkcGFnZSA9IDE7DQogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3BhZ2UnXSkpIHsNCiAgICAgICAgJHBhZ2UgPSAoaW50KSAkcGFyYW1zWydwYWdlJ107DQogICAgICAgIGlmICgkcGFnZSA8IDEpDQogICAgICAgICAgICAkcGFnZSA9IDE7DQogICAgfQ0KICAgICRzdGFydGVsZW1lbnQgPSAoJHBhZ2UgLSAxKSAqICRsaW1pdDsNCg0KICAgICRjYXRlZ29yeSA9ICcnOw0KICAgIGlmIChpc3NldCgkcGFyYW1zWydjYXRlZ29yeSddKSkgew0KICAgICAgICAkY2F0ZWdvcnkgPSB0cmltKCRwYXJhbXNbJ2NhdGVnb3J5J10pOw0KICAgIH0NCiAgICAkY2F0ZWdvcnlpZCA9IC0xMDA7DQogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2NhdGVnb3J5aWQnXSkpIHsNCiAgICAgICAgJGNhdGVnb3J5aWQgPSAoaW50KSAkcGFyYW1zWydjYXRlZ29yeWlkJ107DQogICAgfQ0KDQogICAgJGZpZWxkaWQgPSAtMTAwOw0KICAgIGlmIChpc3NldCgkcGFyYW1zWydmaWVsZGlkJ10pKSB7DQogICAgICAgICRmaWVsZGlkID0gKGludCkgJHBhcmFtc1snZmllbGRpZCddOw0KICAgIH0NCiAgICAkZmllbGR2YWwgPSAnJzsNCiAgICBpZiAoaXNzZXQoJHBhcmFtc1snZmllbGR2YWwnXSkpIHsNCiAgICAgICAgJGZpZWxkdmFsID0gdHJpbSgkcGFyYW1zWydmaWVsZHZhbCddKTsNCiAgICB9DQoNCiAgICAvLw0KICAgIC8vIEJ1aWxkIHRoZSBxdWVyaWVzDQogICAgLy8NCiAgICAkaXRlbXNhcnJheSA9IGFycmF5KCk7DQogICAgJGVudHJ5YXJyYXkgPSBhcnJheSgpOw0KICAgICRwYXJhbWFycmF5ID0gYXJyYXkoKTsNCiAgICAkcGFyYW1hcnJheTIgPSBhcnJheSgpOw0KICAgICR3aGVyZSA9IGFycmF5KCk7DQogICAgJHdoZXJlMiA9IGFycmF5KCk7DQogICAgJHF1ZXJ5ID0gIlNFTEVDVCBjLiosPEZJRUxEUz4gRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV8iIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAiX2l0ZW0gYyI7DQogICAgJHF1ZXJ5MiA9ICJTRUxFQ1QgY291bnQoKikgYXMgY291bnQsPEZJRUxEUz4gRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV8iIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAiX2l0ZW0gYyI7DQogICAgJHdoZXJlW10gPSAnYy5hY3RpdmUgPSA/JzsNCiAgICAkcGFyYW1hcnJheVtdID0gMTsNCg0KICAgICRjb3VudGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllcyBjYSBPTiBjYS5jYXRlZ29yeV9pZCA9IGMuY2F0ZWdvcnlfaWQnOw0KICAgICRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2NhdGVnb3JpZXMgY2EgT04gY2EuY2F0ZWdvcnlfaWQgPSBjLmNhdGVnb3J5X2lkJzsNCiAgICAkZmllbGRzW10gPSAnY2EuY2F0ZWdvcnlfbmFtZSc7DQoNCg0KICAgIGlmICgkY2F0ZWdvcnlfaWQgPiAwKSB7DQogICAgICAgICR3aGVyZVtdID0gJ2NhLmNhdGVnb3J5X2lkID0gPyc7DQogICAgICAgICRwYXJhbWFycmF5W10gPSAkY2F0ZWdvcnlfaWQ7DQogICAgfSBlbHNlIGlmIChlbXB0eSgkY2F0ZWdvcnkpID09IGZhbHNlKSB7DQogICAgICAgICRjYXRlZ29yeSA9IGNtc19odG1sX2VudGl0eV9kZWNvZGUoJGNhdGVnb3J5KTsNCiAgICAgICAgJGNhdGVnb3JpZXMgPSBleHBsb2RlKCcsJywgJGNhdGVnb3J5KTsNCg0KDQoNCiAgICAgICAgJHF1ZXJ5dG1wID0gIiAoIjsNCiAgICAgICAgJGNvdW50ID0gMDsNCiAgICAgICAgZm9yZWFjaCAoJGNhdGVnb3JpZXMgYXMgJG9uZWNhdCkgew0KICAgICAgICAgICAgaWYgKCRjb3VudCA+IDApIHsNCiAgICAgICAgICAgICAgICAkcXVlcnl0bXAgLj0gJyBPUiAnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKHN0cnBvcygkb25lY2F0LCAnfCcpICE9PSBGQUxTRSB8fCBzdHJwb3MoJG9uZWNhdCwgJyonKSAhPT0gRkFMU0UpIHsNCiAgICAgICAgICAgICAgICAkdG1wID0gJGRiLT5xc3RyKHRyaW0oc3RyX3JlcGxhY2UoJyonLCAnJScsIHN0cl9yZXBsYWNlKCInIiwgJ18nLCAkb25lY2F0KSkpKTsNCiAgICAgICAgICAgICAgICAkcXVlcnl0bXAgLj0gInVwcGVyKGNhLmxvbmdfbmFtZSkgbGlrZSB1cHBlcih7JHRtcH0pIjsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgJHRtcCA9ICRkYi0+cXN0cih0cmltKHN0cl9yZXBsYWNlKCInIiwgJ18nLCAkb25lY2F0KSkpOw0KICAgICAgICAgICAgICAgICRxdWVyeXRtcCAuPSAiY2EuY2F0ZWdvcnlfbmFtZSA9IHskdG1wfSI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkY291bnQrKzsNCiAgICAgICAgfQ0KICAgICAgICAkcXVlcnl0bXAgLj0gIikiOw0KDQogICAgICAgICR3aGVyZVtdID0gJHF1ZXJ5dG1wOw0KICAgIH0NCg0KDQoNCg0KICAgIC8vIGZpbHRlcnMNCiAgICBmb3JlYWNoICgkcGFyYW1zIGFzICRrZXkgPT4gJHBhcmFtKSB7DQogICAgICAgIGlmIChzdGFydHN3aXRoKCRrZXksICdmaWx0ZXJfJykpIHsNCiAgICAgICAgICAgICRmaWx0ZXJfa2V5cyA9IGV4cGxvZGUoJ18nLCAka2V5KTsNCiAgICAgICAgICAgIGlmIChjb3VudCgkZmlsdGVyX2tleXMpID09IDMpIHsNCiAgICAgICAgICAgICAgICAkZmllbGRpZCA9ICRmaWx0ZXJfa2V5c1sxXTsNCiAgICAgICAgICAgICAgICAkZmlsdGVyID0gJGZpbHRlcl9rZXlzWzJdOw0KICAgICAgICAgICAgICAgICRmaWVsZHZhbCA9ICRwYXJhbTsNCiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGZpZWxkaWQpICYmIGlzc2V0KCRmaWVsZHZhbCkgJiYgJGZpZWxkdmFsICE9ICIiKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChpbnR2YWwoJGZpZWxkaWQpID4gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIGdhdGhlcmluZyAnLiRtb2QtPl9HZXRNb2R1bGVBbGlhcygpLicgdGhhdCBoYXZlIGEgY2VydGFpbiBmaWVsZCBpZC4NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZmlsdGVyID09ICdudWxsJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBhIGNhc2Ugd2hlbiBhIGZpZWxkIGlzIG5vdCBzZXQgZm9yIGEgcHJvZHVjdC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY291bnRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICcoRlZBJyAuICRmaWVsZGlkIC4gJy52YWx1ZSBJUyBOVUxMKSc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcGFyYW1hcnJheSwgJGZpZWxkaWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHBhcmFtYXJyYXlbXSA9ICRmaWVsZGlkOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdub3RudWxsJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBhIGNhc2Ugd2hlbiBhIGZpZWxkIGlzIG5vdCBzZXQgZm9yIGEgcHJvZHVjdC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY291bnRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICcoRlZBJyAuICRmaWVsZGlkIC4gJy52YWx1ZSAhPSBcJ1wnKSc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcGFyYW1hcnJheSwgJGZpZWxkaWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdpbicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgYSBjYXNlIHdoZW4gYSBmaWVsZCBpcyBub3Qgc2V0IGZvciBhIHByb2R1Y3QuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvdW50am9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBGVkEnIC4gJGZpZWxkaWQgLiAnIE9OIGMuaXRlbV9pZCA9IEZWQScgLiAkZmllbGRpZCAuICcuaXRlbV9pZCBBTkQgRlZBJyAuICRmaWVsZGlkIC4gJy5maWVsZGRlZl9pZCA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnRlZBJyAuICRmaWVsZGlkIC4gJy52YWx1ZSBJTiAoJyAuICRkYi0+cXN0cigkZmllbGR2YWwpIC4gJyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSAkZmllbGRpZDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnaW5zZXQnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIGEgY2FzZSB3aGVuIGEgZmllbGQgaXMgbm90IHNldCBmb3IgYSBwcm9kdWN0Lg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb3VudGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkam9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBGVkEnIC4gJGZpZWxkaWQgLiAnIE9OIGMuaXRlbV9pZCA9IEZWQScgLiAkZmllbGRpZCAuICcuaXRlbV9pZCBBTkQgRlZBJyAuICRmaWVsZGlkIC4gJy5maWVsZGRlZl9pZCA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJyBGSU5EX0lOX1NFVCgnIC4gJGRiLT5xc3RyKCRmaWVsZHZhbCkgLiAnLCAgRlZBJyAuICRmaWVsZGlkIC4gJy52YWx1ZSkgPiAwJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRwYXJhbWFycmF5LCAkZmllbGRpZCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ2xlc3MnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzX251bWVyaWMoJGZpZWxkaWQpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpbWl0IHJlc3VsdHMgdG8gYWxsIG9mIHRoZSBpdGVtcyB0aGF0IGhhdmUgdGhpcyBmaWVsZCB2YWx1ZS4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvdW50am9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBGVkEnIC4gJGZpZWxkaWQgLiAnIE9OIGMuaXRlbV9pZCA9IEZWQScgLiAkZmllbGRpZCAuICcuaXRlbV9pZCBBTkQgRlZBJyAuICRmaWVsZGlkIC4gJy5maWVsZGRlZl9pZCA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkam9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBGVkEnIC4gJGZpZWxkaWQgLiAnIE9OIGMuaXRlbV9pZCA9IEZWQScgLiAkZmllbGRpZCAuICcuaXRlbV9pZCBBTkQgRlZBJyAuICRmaWVsZGlkIC4gJy5maWVsZGRlZl9pZCA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdGVkEnIC4gJGZpZWxkaWQgLiAnLnZhbHVlIDwgPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHBhcmFtYXJyYXksICRmaWVsZGlkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICcgYy4nIC4gJGZpZWxkaWQgLiAnICA8ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRwYXJhbWFycmF5W10gPSAkZmllbGRpZDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gJGZpZWxkdmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdsZXNzZXF1YWwnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGltaXQgcmVzdWx0cyB0byBhbGwgb2YgdGhlIGl0ZW1zIHRoYXQgaGF2ZSB0aGlzIGZpZWxkIHZhbHVlLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb3VudGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkam9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBGVkEnIC4gJGZpZWxkaWQgLiAnIE9OIGMuaXRlbV9pZCA9IEZWQScgLiAkZmllbGRpZCAuICcuaXRlbV9pZCBBTkQgRlZBJyAuICRmaWVsZGlkIC4gJy5maWVsZGRlZl9pZCA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ0ZWQScgLiAkZmllbGRpZCAuICcudmFsdWUgPCA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRwYXJhbWFycmF5LCAkZmllbGRpZCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kcGFyYW1hcnJheVtdID0gJGZpZWxkaWQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9ICRmaWVsZHZhbDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnZ3JlYXRlcicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNfbnVtZXJpYygkZmllbGRpZCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGltaXQgcmVzdWx0cyB0byBhbGwgb2YgdGhlIGl0ZW1zIHRoYXQgaGF2ZSB0aGlzIGZpZWxkIHZhbHVlLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY291bnRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ0ZWQScgLiAkZmllbGRpZCAuICcudmFsdWUgPCA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcGFyYW1hcnJheSwgJGZpZWxkaWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJyBjLicgLiAkZmllbGRpZCAuICcgID4gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHBhcmFtYXJyYXlbXSA9ICRmaWVsZGlkOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSAkZmllbGR2YWw7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ2dyZWF0ZXJlcXVhbCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsaW1pdCByZXN1bHRzIHRvIGFsbCBvZiB0aGUgaXRlbXMgdGhhdCBoYXZlIHRoaXMgZmllbGQgdmFsdWUuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvdW50am9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBGVkEnIC4gJGZpZWxkaWQgLiAnIE9OIGMuaXRlbV9pZCA9IEZWQScgLiAkZmllbGRpZCAuICcuaXRlbV9pZCBBTkQgRlZBJyAuICRmaWVsZGlkIC4gJy5maWVsZGRlZl9pZCA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnRlZBJyAuICRmaWVsZGlkIC4gJy52YWx1ZSA8ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHBhcmFtYXJyYXksICRmaWVsZGlkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRwYXJhbWFycmF5W10gPSAkZmllbGRpZDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gJGZpZWxkdmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdsaWtlJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpbWl0IHJlc3VsdHMgdG8gYWxsIG9mIHRoZSBpdGVtcyB0aGF0IGhhdmUgdGhpcyBmaWVsZCB2YWx1ZS4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY291bnRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdGVkEnIC4gJGZpZWxkaWQgLiAnLnZhbHVlIExJS0UgPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcGFyYW1hcnJheSwgJGZpZWxkaWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSAnJScgLiAkZmllbGR2YWwgLiAnJSc7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ25vdGVxdWFsJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpbWl0IHJlc3VsdHMgdG8gYWxsIG9mIHRoZSBpdGVtcyB0aGF0IGhhdmUgdGhpcyBmaWVsZCB2YWx1ZS4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY291bnRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdGVkEnIC4gJGZpZWxkaWQgLiAnLnZhbHVlICE9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHBhcmFtYXJyYXksICRmaWVsZGlkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRwYXJhbWFycmF5W10gPSAkZmllbGRpZDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gJGZpZWxkdmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdlcXVhbCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsaW1pdCByZXN1bHRzIHRvIGFsbCBvZiB0aGUgaXRlbXMgdGhhdCBoYXZlIHRoaXMgZmllbGQgdmFsdWUuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkY291bnRqb2lucywgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJGpvaW5zLCBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnRlZBJyAuICRmaWVsZGlkIC4gJy52YWx1ZSA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHBhcmFtYXJyYXksICRmaWVsZGlkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gJGZpZWxkdmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoaXNfc3RyaW5nKCRmaWVsZGlkKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGZpZWxkaWQgPSBzdHJfaXJlcGxhY2UoYXJyYXkoJ0lkJywgJ0RhdGVFbmQnLCAnRGF0ZScpLCBhcnJheSgnX2lkJywgJ19kYXRlX2VuZCcsICdfZGF0ZScpLCAkZmllbGRpZCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGZpbHRlciA9PSAnbnVsbCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdjLicgLiAkZmllbGRpZCAuICcgSVMgTlVMTCknOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdub3RudWxsJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ2MuJyAuICRmaWVsZGlkIC4gJyBJUyBOVUxMKSc7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ2luJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydHN3aXRoKCRmaWVsZHZhbCwgJywnKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpZWxkdmFsID0gc3Vic3RyKCRmaWVsZHZhbCwgMSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnYy4nIC4gJGZpZWxkaWQgLiAnIElOICgnIC4gJGZpZWxkdmFsIC4gJyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdpbnNldCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRzd2l0aCgkZmllbGR2YWwsICcsJykpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWVsZHZhbCA9IHN1YnN0cigkZmllbGR2YWwsIDEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJyBGSU5EX0lOX1NFVCgnIC4gJGRiLT5xc3RyKCRmaWVsZHZhbCkgLiAnLCBjLicgLiAkZmllbGRpZCAuICcpID4gMCc7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ2xpa2UnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnIGMuJyAuICRmaWVsZGlkIC4gJyAgTElLRSAiJScgLiAkZmllbGRpZCAuICclIic7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ2xlc3MnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnYy4nIC4gJGZpZWxkaWQgLiAnIDwgPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9ICRmaWVsZHZhbDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnbGVzc2VxdWFsJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ2MuJyAuICRmaWVsZGlkIC4gJyA8PSAgPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9ICRmaWVsZHZhbDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnZ3JlYXRlcicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdjLicgLiAkZmllbGRpZCAuICcgPiAgPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9ICRmaWVsZHZhbDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnZ3JlYXRlcmVxdWFsJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ2MuJyAuICRmaWVsZGlkIC4gJyA+PSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gJGZpZWxkdmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdlcXVhbCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdjLicgLiAkZmllbGRpZCAuICcgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gJGZpZWxkdmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdub3RlcXVhbCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdjLicgLiAkZmllbGRpZCAuICcgIT0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9ICRmaWVsZHZhbDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KDQogICAgLy8gcmVjdXINCiAgICBpZiAoaXNzZXQoJHBhcmFtc1snaXRlbV9kYXRlX2Zyb21fdG8nXSkpIHsNCg0KICAgICAgICBpZiAoJGRhdGVfZnJvbSAmJiAkZGF0ZV90bykgew0KDQogICAgICAgICAgICAkZGF5cyA9IHJvdW5kKCgkZGF0ZV90byAtICRkYXRlX2Zyb20pIC8gKDM2MDAgKiAyNCkpOw0KDQogICAgICAgICAgICBpZiAoJGRheXMgPiA2KSB7DQogICAgICAgICAgICAgICAgJHdoZXJlW10gPSAiKChjLml0ZW1fZGF0ZSAgPiA/IEFORCBjLml0ZW1fZGF0ZSAgPCA/IEFORCAoYy5yZWN1cnNpdmUgPSAnJyBPUiBjLnJlY3Vyc2l2ZSBJUyBOVUxMKSkNCk9SIChjLnJlY3Vyc2l2ZSA9ICdkYWlseScgKSkiOw0KICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGVfZnJvbSksICInIik7DQogICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZV90byksICInIik7DQogICAgICAgICAgICAgICAgJGZpZWxkc1tdID0gImUudmFsdWUiOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICIoKGMuaXRlbV9kYXRlICA+ID8gQU5EIGMuaXRlbV9kYXRlICA8ID8gQU5EIChjLnJlY3Vyc2l2ZSA9ICcnIE9SIGMucmVjdXJzaXZlIElTIE5VTEwpKQ0KICAgICAgICAgICAgICAgICAgT1IgKGMucmVjdXJzaXZlID0gJ2RhaWx5JyAgDQpBTkQgKCgNCg0KSUYoPz4/LA0KSUYoZS52YWx1ZSA+PSA/IE9SIGUgLnZhbHVlIDw9ID8sMSwwKQ0KLElGKGUudmFsdWUgPj0gPyBBTkQgZSAudmFsdWUgPD0gPywxLDApDQopIA0KDQpBTkQgSUYoZS52YWx1ZSA9ID8sIElGKERBVEVfRk9STUFUKGMuaXRlbV9kYXRlLCclSDolaScpID4gPywxLDApLDEpIA0KQU5EIElGKGUudmFsdWUgPSA/LCBJRihEQVRFX0ZPUk1BVChjLml0ZW1fZGF0ZSwnJUg6JWknKSA8ID8sMSwwKSwxKSkNCikgICAgICAgICAgICAgICAgICANCikpIjsNCiAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKCRkYXRlX2Zyb20pLCAiJyIpOw0KICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGVfdG8pLCAiJyIpOw0KDQogICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9IGRhdGUoJ3cnLCAkZGF0ZV9mcm9tKTsNCiAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gZGF0ZSgndycsICRkYXRlX3RvKTsNCiAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gZGF0ZSgndycsICRkYXRlX2Zyb20pOw0KICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSBkYXRlKCd3JywgJGRhdGVfdG8pOw0KICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSBkYXRlKCd3JywgJGRhdGVfZnJvbSk7DQogICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9IGRhdGUoJ3cnLCAkZGF0ZV90byk7DQoNCiAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gZGF0ZSgndycsICRkYXRlX2Zyb20pOw0KICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSBkYXRlKCdIOmknLCAkZGF0ZV9mcm9tKTsNCiAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gZGF0ZSgndycsICRkYXRlX3RvKTsNCiAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gZGF0ZSgnSDppJywgJGRhdGVfdG8pOw0KICAgICAgICAgICAgfQ0KDQoNCiAgICAgICAgICAgICRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW1fZXh0cmEgZSBPTiBlLml0ZW1faWQgPSBjLml0ZW1faWQnOw0KICAgICAgICAgICAgJGNvdW50am9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtX2V4dHJhIGUgT04gZS5pdGVtX2lkID0gYy5pdGVtX2lkJzsNCg0KICAgICAgICAgICAgLy8kZmllbGRzW10gPSAiSUYoYy5yZWN1cnNpdmUgPSAnJyBPUiBjLnJlY3Vyc2l2ZSBJUyBOVUxMLCBkYXRlX2Zvcm1hdChjLml0ZW1fZGF0ZSwgJyVZLSVtLSVkICVIOiVpJyksIENPTkNBVChkYXRlX2Zvcm1hdChOT1coKSArIElOVEVSVkFMIChlLnZhbHVlLT8pIERBWSwgJyVZLSVtLSVkJyksJyAnLGRhdGVfZm9ybWF0KGMuaXRlbV9kYXRlLCclSDolaScpKSkgQVMgZGF0ZV9vdXQsIGUudmFsdWUiOw0KICAgICAgICAgICAgLy9hcnJheV91bnNoaWZ0KCRwYXJhbWFycmF5LCBkYXRlKCd3JywgdGltZSgpKSk7DQogICAgICAgICAgICAkZmllbGRzW10gPSAiZS52YWx1ZSxDT05DQVQoZGF0ZV9mb3JtYXQoPyArIElOVEVSVkFMIElGKGUudmFsdWUgPCA/LCAoNy0/KSArIGUudmFsdWUsIGUudmFsdWUtPykgREFZLCclWS0lbS0lZCcpLCcgJyxkYXRlX2Zvcm1hdChjLml0ZW1fZGF0ZSwnJUg6JWknKSkgYXMgZGF0ZV9vdXQiOw0KDQogICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRwYXJhbWFycmF5LCBkYXRlKCd3JywgJGRhdGVfZnJvbSkpOw0KICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcGFyYW1hcnJheSwgZGF0ZSgndycsICRkYXRlX2Zyb20pKTsNCiAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHBhcmFtYXJyYXksIGRhdGUoJ3cnLCAkZGF0ZV9mcm9tKSk7DQogICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRwYXJhbWFycmF5LCB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGVfZnJvbSksICInIikpOw0KDQogICAgICAgICAgICAvKiAkd2hlcmUyW10gPSAnZGF0ZV9vdXQgID4gPyBBTkQgZGF0ZV9vdXQgPCA/JzsNCiAgICAgICAgICAgICAgJHBhcmFtYXJyYXkyW10gPSB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGVfZnJvbSksICInIik7DQogICAgICAgICAgICAgICRwYXJhbWFycmF5MltdID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKCRkYXRlX3RvKSwgIiciKTsgKi8NCg0KICAgICAgICAgICAgJHNvcnRieSA9ICdkYXRlX291dCc7DQogICAgICAgIH0NCiAgICAgICAgJGdyb3VwYnkgPSAnIEdST1VQIEJZIGMuYWN0aXZlICc7DQogICAgfSBlbHNlIHsNCg0KICAgICAgICBpZiAoJGRhdGVfZnJvbSkgew0KICAgICAgICAgICAgJHdoZXJlW10gPSAiIGMuaXRlbV9kYXRlICA+ID8iOw0KICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZV9mcm9tKSwgIiciKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmICgkZGF0ZV90bykgew0KICAgICAgICAgICAgJHdoZXJlW10gPSAiIGMuaXRlbV9kYXRlICA8ID8iOw0KICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZV90byksICInIik7DQogICAgICAgIH0NCiAgICB9DQoNCg0KICAgIGlmIChpc1NldCgkcGFyYW1zWyJkYXRlX3N0YXJ0Il0pKSB7DQoNCiAgICAgICAgJHdoZXJlW10gPSAiIGMuaXRlbV9kYXRlIDwgTk9XKCkiOw0KICAgIH0NCg0KICAgIGlmIChpc1NldCgkcGFyYW1zWyJkYXRlX2VuZCJdKSkgew0KICAgICAgICAkd2hlcmVbXSA9ICIgYy5pdGVtX2RhdGVfZW5kID4gTk9XKCkiOw0KICAgIH0NCg0KDQogICAgJHF1ZXJ5ID0gc3RyX3JlcGxhY2UoJzxGSUVMRFM+JywgaW1wbG9kZSgnLCcsICRmaWVsZHMpLCAkcXVlcnkpOw0KICAgICRxdWVyeTIgPSBzdHJfcmVwbGFjZSgnPEZJRUxEUz4nLCBpbXBsb2RlKCcsJywgJGZpZWxkcyksICRxdWVyeTIpOw0KDQogICAgaWYgKGNvdW50KCRqb2lucykpIHsNCiAgICAgICAgJHF1ZXJ5IC49ICcgTEVGVCBKT0lOICcgLiBpbXBsb2RlKCcgTEVGVCBKT0lOICcsICRqb2lucyk7DQogICAgfQ0KICAgIGlmIChjb3VudCgkY291bnRqb2lucykpIHsNCiAgICAgICAgJHF1ZXJ5MiAuPSAnIExFRlQgSk9JTiAnIC4gaW1wbG9kZSgnIExFRlQgSk9JTiAnLCAkY291bnRqb2lucyk7DQogICAgfQ0KICAgICRxdWVyeSA9ICRxdWVyeSAuICcgV0hFUkUgJyAuIGltcGxvZGUoJyBBTkQgJywgJHdoZXJlKTsNCiAgICAkcXVlcnkyID0gJHF1ZXJ5MiAuICcgV0hFUkUgJyAuIGltcGxvZGUoJyBBTkQgJywgJHdoZXJlKTsNCg0KICAgIGlmICghZW1wdHkoJHdoZXJlMikpIHsNCiAgICAgICAgJHF1ZXJ5ID0gJyBTRUxFQ1QgKiBGUk9NICgnIC4gJHF1ZXJ5IC4gJykgdCc7DQogICAgICAgICRxdWVyeTIgPSAnIFNFTEVDVCAqIEZST00gKCcgLiAkcXVlcnkgLiAnKSB0JzsNCiAgICAgICAgJHF1ZXJ5ID0gJHF1ZXJ5IC4gJyBXSEVSRSAnIC4gaW1wbG9kZSgnIEFORCAnLCAkd2hlcmUyKTsNCiAgICAgICAgJHF1ZXJ5MiA9ICRxdWVyeTIgLiAnIFdIRVJFICcgLiBpbXBsb2RlKCcgQU5EICcsICR3aGVyZTIpOw0KICAgIH0NCg0KICAgICRwYXJhbWFycmF5ID0gYXJyYXlfbWVyZ2UoJHBhcmFtYXJyYXksICRwYXJhbWFycmF5Mik7DQoNCg0KDQoNCiAgICBpZiAoJHNvcnR0eXBlID09ICcnKSB7DQogICAgICAgICRxdWVyeSAuPSAiIE9SREVSIEJZICIgLiAkc29ydGJ5IC4gIiAiIC4gJHNvcnRvcmRlcjsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkcXVlcnkgLj0gJyBPUkRFUiBCWSBDQVNUKCcgLiAkc29ydGJ5IC4gJyBBUyAnIC4gJHNvcnR0eXBlIC4gJykgJyAuICRzb3J0b3JkZXI7DQogICAgfQ0KDQoNCi8vIEV4ZWN1dGUgdGhlIFF1ZXJpZXMNCiAgICAkdG1wX2lkID0gJ2MnIC4gbWQ1KCRtb2QtPkdldE5hbWUoKSAuICRxdWVyeTIgLiBzZXJpYWxpemUoJHBhcmFtcykgLiBzZXJpYWxpemUoJHBhcmFtYXJyYXkpIC4gJHJldHVybmlkKTsNCiAgICAkY291bnQgPSBjbXNfdXRpbHM6OmdldF9hcHBfZGF0YSgkdG1wX2lkKTsNCiAgICBpZiAoISRjb3VudCkgew0KICAgICAgICBpZiAoJGdyb3VwYnkpDQogICAgICAgICAgICAkcXVlcnkyIC49ICRncm91cGJ5Ow0KICAgICAgICAkY291bnQgPSAkZGItPkdldE9uZSgkcXVlcnkyLCAkcGFyYW1hcnJheSk7DQogICAgICAgIC8vIHJldHVybiBmaXJzdCByb3cNCiAgICAgICAgaWYgKGlzU2V0KCRwYXJhbXNbIm9uZWNvdW50Il0pKSB7DQogICAgICAgICAgICAkc21hcnR5LT5hc3NpZ24oJHBhcmFtc1sib25lY291bnQiXSwgJGNvdW50KTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAgICAgIGNtc191dGlsczo6c2V0X2FwcF9kYXRhKCR0bXBfaWQsICRjb3VudCk7DQogICAgfQ0KDQogICAgLy8kdG1wX2lkID0gbWQ1KCRtb2QtPkdldE5hbWUoKSAuIG1kNSgkcXVlcnkpIC4gaW1wbG9kZSgnXycsICRwYXJhbWFycmF5KSAuIGltcGxvZGUoJ18nLCAkcGFyYW1zKSAuICRsaW1pdCAuICRzdGFydGVsZW1lbnQgLiAncmVzdWx0cycpOw0KICAgICR0bXBfaWQgPSAnbScgLiBtZDUoJG1vZC0+R2V0TmFtZSgpIC4gJHF1ZXJ5IC4gc2VyaWFsaXplKCRwYXJhbXMpIC4gc2VyaWFsaXplKCRwYXJhbWFycmF5KSAuICRyZXR1cm5pZCk7DQogICAgJGRicmVzdWx0ID0gY21zX3V0aWxzOjpnZXRfYXBwX2RhdGEoJHRtcF9pZCk7DQogICAgaWYgKCEkZGJyZXN1bHQpIHsNCiAgICAgICAgJHBhcmFtYXJyYXkgPSBhcnJheV9tZXJnZSgkcGFyYW1hcnJheXRtcCwgJHBhcmFtYXJyYXkpOw0KICAgICAgICAkcXVlcnkgLj0gJyBMSU1JVCAnIC4gJHN0YXJ0ZWxlbWVudCAuICcsJyAuICRsaW1pdDsNCiAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5HZXRBbGwoJHF1ZXJ5LCAkcGFyYW1hcnJheSk7DQogICAgICAgIGNtc191dGlsczo6c2V0X2FwcF9kYXRhKCR0bXBfaWQsICRkYnJlc3VsdCk7DQogICAgfQ0KfQ0KDQovLyBEZXRlcm1pbmUgdGhlIG51bWJlciBvZiBwYWdlcw0KJG5wYWdlcyA9IGludHZhbCgkY291bnQgLyAkbGltaXQpOw0KaWYgKCRjb3VudCAlICRsaW1pdCAhPSAwKQ0KICAgICRucGFnZXMrKzsNCg0KJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KZm9yZWFjaCAoJGRicmVzdWx0IGFzICRyb3cpIHsNCiAgICAkb25lcm93ID0gY2dlX2FycmF5Ojp0b19vYmplY3QoJHJvdyk7DQoNCiAgICBpZiAoZW1wdHkoJHJvd1sidXJsIl0pID09IGZhbHNlKSB7DQogICAgICAgICRwcmV0dHl1cmwgPSAkcm93WyJ1cmwiXTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkcHJldHR5dXJsID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfcHJldHR5X3VybCgkdGhpcywgZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfcHJlZml4KCRtb2QpLCAkcm93WydpdGVtX2lkJ10sICRyb3dbJ2FsaWFzJ10sICgkZGVmYXVsdF9kZXRhaWxwYWdlID09IC0xICYmICFpc1NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pID8gJGRldGFpbHBhZ2UgOiAoaXNTZXQoJHBhcmFtc1siZGV0YWlscGFnZSJdKSA/ICRkZXRhaWxwYWdlIDogJycgKSksICRkZXRhaWx0ZW1wbGF0ZSk7DQogICAgfQ0KDQogICAgJG9uZXJvdy0+dXJsID0gJG9uZXJvdy0+bGluayA9ICRtb2QtPkNyZWF0ZUZyb250ZW5kTGluaygkaWQsICRyZXR1cm5pZCwgJ2RldGFpbCcsICcnLCBhcnJheSgnaXRlbV9pZCcgPT4gJHJvd1snaXRlbV9pZCddLCAnZGV0YWlsdGVtcGxhdGUnID0+ICRkZXRhaWx0ZW1wbGF0ZSksICcnLCB0cnVlLCAkaW5saW5lLCAnJywgZmFsc2UsICRwcmV0dHl1cmwpOw0KICAgICRvbmVyb3ctPmZpbGVfbG9jYXRpb24gPSBnZW5lcmF0b3JfdG9vbHM6OmZpbGVfbG9jYXRpb24oJHRoaXMsICRyb3cpOw0KDQogICAgLy8gYWRkIGN1c3RvbSBmaWVsZHMNCiAgICAkZmllbGRkZWZzID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfY29zdHVtX2ZpZWxkX2RlZigkbW9kLCAkcm93WydpdGVtX2lkJ10sIHRydWUpOw0KICAgICRmaWVsZHMgPSBhcnJheSgpOw0KICAgIGZvcmVhY2ggKCRmaWVsZGRlZnMgYXMgJG9uZWRlZikgew0KICAgICAgICBpZiAoZW1wdHkoJG9uZWRlZlsiYWxpYXMiXSkgPT0gZmFsc2UgJiYgaW5fYXJyYXkoJG9uZWRlZlsiYWxpYXMiXSwgZ2VuZXJhdG9yX3Rvb2xzOjokZmllbGRzX2Jsb2NrbGlzdCkgPT0gZmFsc2UpIHsNCiAgICAgICAgICAgICRvbmVyb3ctPiRvbmVkZWZbImFsaWFzIl0gPSAkb25lZGVmWyJ2YWx1ZSJdOw0KICAgICAgICB9DQogICAgfQ0KICAgICRvbmVyb3ctPmZpZWxkcyA9ICRmaWVsZGRlZnM7DQogICAgJGVudHJ5YXJyYXlbXSA9ICRvbmVyb3c7DQogICAgJGl0ZW1zYXJyYXlbXSA9ICRyb3c7DQp9DQoNCg0KDQovLyByZXR1cm4gZmlyc3Qgcm93DQppZiAoaXNTZXQoJHBhcmFtc1sib25lcm93Il0pKSB7DQogICAgJHNtYXJ0eS0+YXNzaWduKCRwYXJhbXNbIm9uZXJvdyJdLCAoaXNzZXQoJGVudHJ5YXJyYXlbMF0pID8gJGVudHJ5YXJyYXlbMF0gOiAnJykpOw0KICAgIHJldHVybjsNCn0NCg0KLy9yZXR1cm4gIGFsbCByZXN1bHRzDQppZiAoaXNTZXQoJHBhcmFtc1siYWxscm93Il0pKSB7DQogICAgJHNtYXJ0eS0+YXNzaWduKCRwYXJhbXNbImFsbHJvdyJdLCAkZW50cnlhcnJheSk7DQogICAgcmV0dXJuOw0KfQ0KDQovLyByZXR1cm4gaXRlbXMgZm9yIG1vZHVsZQ0KaWYgKGlzU2V0KCRwYXJhbXNbIml0ZW1zIl0pICYmICRwYXJhbXNbIml0ZW1zIl0gPT0gdHJ1ZSkgew0KICAgIGdlbmVyYXRvcl90b29sczo6JGl0ZW1zID0gJGVudHJ5YXJyYXk7DQogICAgcmV0dXJuOw0KfQ0KDQovLw0KLy8gR2l2ZSBldmVyeXRoaW5nIHRvIHNtYXJ0eQ0KLy8NCg0KZm9yZWFjaCAoJHBhcmFtcyBhcyAka2V5ID0+ICR2YWx1ZSkgew0KICAgIGlmICgka2V5ID09ICdtYWN0JyB8fCAka2V5ID09ICdhY3Rpb24nKQ0KICAgICAgICBjb250aW51ZTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ3BhcmFtXycgLiAka2V5LCAkdmFsdWUpOw0KfQ0KDQokc21hcnR5LT5hc3NpZ24oJ21vZHVsZXVybCcsICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnZGVmYXVsdCcsICRyZXR1cm5pZCwgJ3Rlc3QnLCAkcGFyYW1zLCAnJywgdHJ1ZSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRlbnRyeWFycmF5KTsNCiRzbWFydHktPmFzc2lnbigndG90YWxjb3VudCcsICRjb3VudCk7DQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRlbnRyeWFycmF5KSk7DQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1vbnBhZ2UnLCAoKCRwYWdlIC0gMSkgKiAkbGltaXQpICsgY291bnQoJGVudHJ5YXJyYXkpKTsNCiRzbWFydHktPmFzc2lnbigncGFnZXRleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygncGFnZScpKTsNCiRzbWFydHktPmFzc2lnbignb2Z0ZXh0JywgZ2VuZXJhdG9yKCktPkxhbmcoJ29mJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdwYWdlY291bnQnLCAkbnBhZ2VzKTsNCiRzbWFydHktPmFzc2lnbignY3VycGFnZScsICRwYWdlKTsNCmlmICgkcGFnZSA9PSAxKSB7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdmaXJzdGxpbmsnLCBnZW5lcmF0b3IoKS0+TGFuZygnZmlyc3RwYWdlJykpOw0KICAgICRzbWFydHktPmFzc2lnbigncHJldmxpbmsnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJldnBhZ2UnKSk7DQp9IGVsc2Ugew0KICAgICRwYXJtcyA9ICRwYXJhbXM7DQogICAgJHBhcm1zWydwYWdlJ10gPSAxOw0KICAgICRzbWFydHktPmFzc2lnbignZmlyc3RsaW5rJywgJG1vZC0+Q3JlYXRlTGluaygkaWQsICdkZWZhdWx0JywgJHJldHVybmlkLCBnZW5lcmF0b3IoKS0+TGFuZygnZmlyc3RwYWdlJyksICRwYXJtcywgJycsIGZhbHNlLCAkaW5saW5lKSk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdmaXJzdHVybCcsICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnZGVmYXVsdCcsICRyZXR1cm5pZCwgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpcnN0cGFnZScpLCAkcGFybXMsICcnLCB0cnVlLCAkaW5saW5lKSk7DQogICAgJHBhcm1zWydwYWdlJ10gPSAkcGFnZSAtIDE7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdwcmV2bGluaycsICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnZGVmYXVsdCcsICRyZXR1cm5pZCwgZ2VuZXJhdG9yKCktPkxhbmcoJ3ByZXZwYWdlJyksICRwYXJtcywgJycsIGZhbHNlLCAkaW5saW5lKSk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdwcmV2dXJsJywgJG1vZC0+Q3JlYXRlTGluaygkaWQsICdkZWZhdWx0JywgJHJldHVybmlkLCBnZW5lcmF0b3IoKS0+TGFuZygncHJldnBhZ2UnKSwgJHBhcm1zLCAnJywgdHJ1ZSwgJGlubGluZSkpOw0KfQ0KaWYgKCRwYWdlID09ICRucGFnZXMpIHsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2xhc3RsaW5rJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2xhc3RwYWdlJykpOw0KICAgICRzbWFydHktPmFzc2lnbignbmV4dGxpbmsnLCBnZW5lcmF0b3IoKS0+TGFuZygnbmV4dHBhZ2UnKSk7DQp9IGVsc2Ugew0KICAgICRwYXJtcyA9ICRwYXJhbXM7DQogICAgJHBhcm1zWydwYWdlJ10gPSAkbnBhZ2VzOw0KICAgICRzbWFydHktPmFzc2lnbignbGFzdGxpbmsnLCAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHQnLCAkcmV0dXJuaWQsIGdlbmVyYXRvcigpLT5MYW5nKCdsYXN0cGFnZScpLCAkcGFybXMsICcnLCBmYWxzZSwgJGlubGluZSkpOw0KICAgICRzbWFydHktPmFzc2lnbignbGFzdHVybCcsICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnZGVmYXVsdCcsICRyZXR1cm5pZCwgZ2VuZXJhdG9yKCktPkxhbmcoJ2xhc3RwYWdlJyksICRwYXJtcywgJycsIHRydWUsICRpbmxpbmUpKTsNCiAgICAkcGFybXNbJ3BhZ2UnXSA9ICRwYWdlICsgMTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ25leHRsaW5rJywgJG1vZC0+Q3JlYXRlTGluaygkaWQsICdkZWZhdWx0JywgJHJldHVybmlkLCBnZW5lcmF0b3IoKS0+TGFuZygnbmV4dHBhZ2UnKSwgJHBhcm1zLCAnJywgZmFsc2UsICRpbmxpbmUpKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ25leHR1cmwnLCAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHQnLCAkcmV0dXJuaWQsIGdlbmVyYXRvcigpLT5MYW5nKCduZXh0cGFnZScpLCAkcGFybXMsICcnLCB0cnVlLCAkaW5saW5lKSk7DQp9DQoNCi8vDQovLyBQcm9jZXNzIHRoZSB0ZW1wbGF0ZQ0KLy8NCg0KZWNobyAkbW9kLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJHRoZXRlbXBsYXRlKTsNCg0KIw0KIyBFT0YNCiMNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9pdGVtJykpDQogICAgcmV0dXJuOw0KLy8gdG9wIG5hdg0KaWYgKCRtb2QtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpKSB7DQoNCiAgICBlY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciIHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsgZmxvYXQ6cmlnaHQ7IHdpZHRoOiA0MCU7Ij4nOw0KICAgIGVjaG8gJG1vZC0+Q3JlYXRlSW1hZ2VMaW5rKCRpZCwgJ2FkbWluX2ZpZWxkcycsICRyZXR1cm5pZCwgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmcycpLCAnaWNvbnMvdG9wZmlsZXMvc2l0ZWFkbWluLmdpZicsIGFycmF5KCksICcnLCAnJywgZmFsc2UpOw0KICAgIGVjaG8gJG1vZC0+Q3JlYXRlSW1hZ2VMaW5rKCRpZCwgJ2FkbWluX3RlbXBsYXRlcycsICRyZXR1cm5pZCwgZ2VuZXJhdG9yKCktPkxhbmcoJ3RlbXBsYXRlcycpLCAnaWNvbnMvdG9wZmlsZXMvdGVtcGxhdGUuZ2lmJywgYXJyYXkoKSwgJycsICcnLCBmYWxzZSk7DQogICAgZWNobyAnPC9kaXY+JzsNCn0NCg0KJG1vZHVsZSA9IGdlbmVyYXRvcl9vcHRzOjpnZXRfbW9kdWxlKCRtb2QtPkdldE5hbWUoKSk7DQokYXR0YWNoID0gZ2VuZXJhdG9yX29wdHM6OmdldF9hdHRhY2hfbW9kdWxlcygkbW9kdWxlWyJhdHRhY2giXSk7DQppZiAoJGF0dGFjaCkgew0KICAgICRhdHRhY2htb2R1bGVzID0gZXhwbG9kZSgnLCcsICRhdHRhY2gpOw0KICAgIGVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyIgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyBmbG9hdDpsZWZ0OyB3aWR0aDogNTAlOyI+JzsNCiAgICBmb3JlYWNoICgkYXR0YWNobW9kdWxlcyBhcyAkYXR0YWNobW9kdWxlKSB7DQogICAgICAgICRtb2R1bGUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUodHJpbSgkYXR0YWNobW9kdWxlKSk7DQogICAgICAgIGlmICgkbW9kdWxlKSB7DQogICAgICAgICAgICBlY2hvICRtb2R1bGUtPkNyZWF0ZUltYWdlTGluaygkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2ZyaWVuZGx5bmFtZScpLCAnaWNvbnMvdG9wZmlsZXMvc2hvcnRjdXQuZ2lmJywgYXJyYXkoKSwgJycsICcnLCBmYWxzZSk7DQogICAgICAgIH0NCiAgICB9DQogICAgZWNobyAnPC9kaXY+JzsNCn0NCg0KDQplY2hvICc8YnIgc3R5bGU9ImNsZWFyOmJvdGgiIC8+JzsNCg0KDQppZiAoaXNzZXQoJHBhcmFtc1snbWVzc2FnZSddKSkgew0KICAgIGVjaG8gJG1vZC0+U2hvd01lc3NhZ2UoZ2VuZXJhdG9yKCktPkxhbmcoJHBhcmFtc1snbWVzc2FnZSddKSk7DQp9DQoNCmlmIChpc3NldCgkcGFyYW1zWydlcnJvcnMnXSkgJiYgY291bnQoJHBhcmFtc1snZXJyb3JzJ10pKSB7DQogICAgZWNobyAkbW9kLT5TaG93RXJyb3JzKCRwYXJhbXNbJ2Vycm9ycyddKTsNCn0NCg0KDQplY2hvICRtb2QtPlN0YXJ0VGFiSGVhZGVycygpOw0KZWNobyAkbW9kLT5TZXRUYWJIZWFkZXIoJ2l0ZW10YWInLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3BsdXJhbCcsICcnKSk7DQoNCmlmICgkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9jYXRlZ29yaWVzJykpIHsNCiAgICBlY2hvICRtb2QtPlNldFRhYkhlYWRlcignY2F0ZWdvcnl0YWInLCBnZW5lcmF0b3IoKS0+TGFuZygnY2F0ZWdvcmllcycpKTsNCn0NCg0KaWYgKCRtb2QtPkNoZWNrUGVybWlzc2lvbigkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfbW9kaWZ5X29wdGlvbicpKSB7DQogICAgZWNobyAkbW9kLT5TZXRUYWJIZWFkZXIoJ29wdGlvbnRhYicsIGdlbmVyYXRvcigpLT5MYW5nKCdvcHRpb25zJykpOw0KfQ0KDQplY2hvICRtb2QtPkVuZFRhYkhlYWRlcnMoKTsNCmVjaG8gJG1vZC0+U3RhcnRUYWJDb250ZW50KCk7DQoNCmVjaG8gJG1vZC0+U3RhcnRUYWIoJ2l0ZW10YWInLCAkcGFyYW1zKTsNCmluY2x1ZGUgZGlybmFtZShfX0ZJTEVfXykgLiAnL2Z1bmN0aW9uLmFkbWluX2l0ZW10YWIucGhwJzsNCmVjaG8gJG1vZC0+RW5kVGFiKCk7DQoNCmlmICgkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9jYXRlZ29yaWVzJykpIHsNCiAgICBlY2hvICRtb2QtPlN0YXJ0VGFiKCdjYXRlZ29yeXRhYicsICRwYXJhbXMpOw0KICAgIGluY2x1ZGUgZGlybmFtZShfX0ZJTEVfXykgLiAnL2Z1bmN0aW9uLmFkbWluX2NhdGVnb3J5dGFiLnBocCc7DQogICAgZWNobyAkbW9kLT5FbmRUYWIoKTsNCn0NCg0KaWYgKCRtb2QtPkNoZWNrUGVybWlzc2lvbigkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfbW9kaWZ5X29wdGlvbicpKSB7DQoNCiAgICBlY2hvICRtb2QtPlN0YXJ0VGFiKCdvcHRpb250YWInLCAkcGFyYW1zKTsNCiAgICBpbmNsdWRlIGRpcm5hbWUoX19GSUxFX18pIC4gJy9mdW5jdGlvbi5hZG1pbl9vcHRpb250YWIucGhwJzsNCiAgICBlY2hvICRtb2QtPkVuZFRhYigpOw0KfQ0KDQplY2hvICRtb2QtPkVuZFRhYkNvbnRlbnQoKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.detail.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiRpdGVtID0gJyc7DQokZGVmYXVsdF9kZXRhaWxwYWdlID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kZXRhaWxfcmV0dXJuaWQnLCAnJyk7DQokZGV0YWlscGFnZSA9ICRkZWZhdWx0X2RldGFpbHBhZ2U7DQppZiAoIWlzU2V0KCRwYXJhbXNbImRldGFpbHBhZ2UiXSkgJiYgaXNTZXQoJHBhcmFtc1sicmV0dXJuaWQiXSkpDQogICAgJHBhcmFtc1siZGV0YWlscGFnZSJdID0gJHBhcmFtc1sicmV0dXJuaWQiXTsNCiRkZXRhaWxwYWdlID0gZXh0ZW5kZWRfdG9vbHNfb3B0czo6ZGV0YWlscGFnZSgkcGFyYW1zLCAkZGV0YWlscGFnZSk7DQppZiAoJGRldGFpbHBhZ2UgPT0gJGRlZmF1bHRfZGV0YWlscGFnZSkNCiAgICB1bnNldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pOw0KDQoNCi8vIHRlbXBsYXRlDQokZGV0YWlsdGVtcGxhdGUgPSAkdGhldGVtcGxhdGUgPSAnZGV0YWlsX3RlbXBsYXRlJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ2N1cnJlbnRfZGV0YWlsX3RlbXBsYXRlJyk7DQppZiAoaXNzZXQoJHBhcmFtc1snZGV0YWlsdGVtcGxhdGUnXSkgJiYgIWVtcHR5KCRwYXJhbXNbJ2RldGFpbHRlbXBsYXRlJ10pKSB7DQogICAgJGRldGFpbHRlbXBsYXRlID0gJHRoZXRlbXBsYXRlID0gJ2RldGFpbF90ZW1wbGF0ZScgLiAkcGFyYW1zWydkZXRhaWx0ZW1wbGF0ZSddOw0KfQ0KDQokaW5saW5lID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZGlzcGxheV9pbmxpbmUnLCBmYWxzZSk7DQoNCmlmIChpc3NldCgkcGFyYW1zWydpbmxpbmUnXSkpIHsNCiAgICAkaW5saW5lID0gJHBhcmFtc1snaW5saW5lJ107DQp9DQoNCmlmICgkaWQgPT0gJ19wcmV2aWV3XycgJiYgaXNzZXQoJF9TRVNTSU9OWydpdGVtX3ByZXZpZXcnXSkgJiYgaXNzZXQoJHBhcmFtc1sncHJldmlldyddKSkgew0KICAgIC8vIHNlZSBpZiBvdXIgZGF0YSBtYXRjaGVzLg0KICAgIGlmIChtZDUoc2VyaWFsaXplKCRfU0VTU0lPTlsnaXRlbV9wcmV2aWV3J10pKSA9PSAkcGFyYW1zWydwcmV2aWV3J10pIHsNCiAgICAgICAgJGZuYW1lID0gVE1QX0NBQ0hFX0xPQ0FUSU9OIC4gJy8nIC4gJF9TRVNTSU9OWydpdGVtX3ByZXZpZXcnXVsnZm5hbWUnXTsNCiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRmbmFtZSkgJiYgKG1kNV9maWxlKCRmbmFtZSkgPT0gJF9TRVNTSU9OWydpdGVtX3ByZXZpZXcnXVsnY2hlY2tzdW0nXSkpIHsNCiAgICAgICAgICAgICRyb3cgPSAkcGFyYW1zID0gdW5zZXJpYWxpemUoZmlsZV9nZXRfY29udGVudHMoJGZuYW1lKSk7DQogICAgICAgICAgICAkdG1wX2lkID0gJ2QnIC4gbWQ1KCRtb2QtPkdldE5hbWUoKSAuIHNlcmlhbGl6ZSgkcGFyYW1zIC4gJHJvdykpOw0KICAgICAgICAgICAgJGl0ZW1zID0gZ2VuZXJhdG9yX29wdHM6OmZpbGxfaXRlbV9mcm9tX2Zvcm1wYXJhbXMoJG1vZCwgJHJvdywgJHBhcmFtcyk7DQogICAgICAgICAgICAkdG1wX2lkMiA9ICR0bXBfaWQgLiAnZCcgLiAkcm93WydpdGVtX2lkJ107DQogICAgICAgICAgICBjbXNfdXRpbHM6OnNldF9hcHBfZGF0YSgkdG1wX2lkMiwgZ2VuZXJhdG9yX29wdHM6OiRmaWVsZGRlZnMpOw0KICAgICAgICB9DQogICAgfQ0KfSBlbHNlIHsNCg0KLy8gU0VMRUNUIEZST00NCiAgICAkcXVlcnkgPSAnU0VMRUNUIEEuKiwgQi5jYXRlZ29yeV9pZCwgQi5jYXRlZ29yeV9uYW1lLCBCLmNhdGVnb3J5X2FsaWFzLCBCLmV4dHJhLCBCLmV4dHJhMiBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbSBBJzsNCi8vIExFRlQgSk9JTg0KICAgICRxdWVyeSAuPSAnIExFRlQgSk9JTiAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2NhdGVnb3JpZXMgQiBPTiBBLmNhdGVnb3J5X2lkID0gQi5jYXRlZ29yeV9pZCc7DQovLyBXSEVSRQ0KICAgICRxdWVyeSAuPSAnIFdIRVJFIEEuYWN0aXZlID0gMSBBTkQgaXRlbV9pZCA9ID8gTElNSVQgMSc7DQogICAgJHRtcF9pZCA9ICdkJyAuIG1kNSgkbW9kLT5HZXROYW1lKCkgLiAkcXVlcnkgLiBzZXJpYWxpemUoJHBhcmFtcykgLiAkcmV0dXJuaWQpOw0KICAgICRyb3cgPSBjbXNfdXRpbHM6OmdldF9hcHBfZGF0YSgkdG1wX2lkKTsNCn0NCg0KDQoNCmlmICghJHJvdykgew0KICAgICRyb3cgPSAkZGItPkdldFJvdygkcXVlcnksIGFycmF5KCRwYXJhbXNbJ2l0ZW1faWQnXSkpOw0KICAgIGNtc191dGlsczo6c2V0X2FwcF9kYXRhKCR0bXBfaWQsICRyb3cpOw0KfQ0KaWYgKCEkcm93KSB7DQogICAgaWYgKGlzU2V0KCRwYXJhbXNbIm9uZXJvdyJdKSkgew0KICAgICAgICAkc21hcnR5LT5hc3NpZ24oJHBhcmFtc1sib25lcm93Il0sICcnKTsNCiAgICB9DQogICAgcmV0dXJuOw0KfQ0KDQoNCg0KJGl0ZW0gPSBjZ2VfYXJyYXk6OnRvX29iamVjdCgkcm93KTsNCiRpdGVtLT5maWxlX2xvY2F0aW9uID0gZ2VuZXJhdG9yX3Rvb2xzOjpmaWxlX2xvY2F0aW9uKCRtb2QsICRyb3cpOw0KLyogJGl0ZW0tPml0ZW1faWQgPSAkcm93WydpdGVtX2lkJ107DQogICRpdGVtLT50aXRsZSA9ICRyb3dbJ3RpdGxlJ107DQogICRpdGVtLT5jYXRlZ29yeV9uYW1lID0gJHJvd1snY2F0ZWdvcnlfbmFtZSddOw0KICAkaXRlbS0+Y2F0ZWdvcnlfYWxpYXMgPSAkcm93WydjYXRlZ29yeV9hbGlhcyddOyAqLw0KDQovLyBhZGQgY3VzdG9tIGZpZWxkcw0KDQokdG1wX2lkMiA9ICR0bXBfaWQgLiAnZCcgLiAkcm93WydpdGVtX2lkJ107DQokZmllbGRkZWZzID0gY21zX3V0aWxzOjpnZXRfYXBwX2RhdGEoJHRtcF9pZDIpOw0KDQppZiAoISRmaWVsZGRlZnMpIHsNCiAgICAkZmllbGRkZWZzID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfY29zdHVtX2ZpZWxkX2RlZigkbW9kLCRyb3dbJ2l0ZW1faWQnXSk7DQogICAgY21zX3V0aWxzOjpzZXRfYXBwX2RhdGEoJHRtcF9pZDIsICRmaWVsZGRlZnMpOw0KfQ0KDQokZmllbGRzID0gYXJyYXkoKTsNCmZvcmVhY2ggKCRmaWVsZGRlZnMgYXMgJGtleSA9PiAkb25lZGVmKSB7DQogICAgaWYgKGVtcHR5KCRvbmVkZWZbImFsaWFzIl0pID09IGZhbHNlICYmIGluX2FycmF5KCRvbmVkZWZbImFsaWFzIl0sIGdlbmVyYXRvcl90b29sczo6JGZpZWxkc19ibG9ja2xpc3QpID09IGZhbHNlKSB7DQogICAgICAgICRpdGVtLT4kb25lZGVmWyJhbGlhcyJdID0gJG9uZWRlZlsidmFsdWUiXTsNCiAgICB9DQp9DQokaXRlbS0+ZmllbGRzID0gJGZpZWxkZGVmczsNCiRpdGVtLT5maWVsZGRlZnMgPSAkZmllbGRkZWZzOw0KDQppZiAoZW1wdHkoJHJvd1sidXJsIl0pID09IGZhbHNlKSB7DQogICAgJHByZXR0eXVybCA9ICRyb3dbInVybCJdOw0KfSBlbHNlIHsNCiAgICAkcHJldHR5dXJsID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfcHJldHR5X3VybCgkdGhpcywgZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfcHJlZml4KCRtb2QpLCAkcm93WydpdGVtX2lkJ10sICRyb3dbJ2FsaWFzJ10sICgkZGVmYXVsdF9kZXRhaWxwYWdlID09IC0xICYmICFpc1NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pID8gJGRldGFpbHBhZ2UgOiAoaXNTZXQoJHBhcmFtc1siZGV0YWlscGFnZSJdKSA/ICRkZXRhaWxwYWdlIDogJycgKSksICRkZXRhaWx0ZW1wbGF0ZSk7DQp9DQoNCg0KJGl0ZW0tPnVybCA9ICRpdGVtLT5saW5rID0gJG1vZC0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwgJHJldHVybmlkLCAnZGV0YWlsJywgJycsIGFycmF5KCdpdGVtX2lkJyA9PiAkcm93WydpdGVtX2lkJ10sICdkZXRhaWx0ZW1wbGF0ZScgPT4gJGRldGFpbHRlbXBsYXRlKSwgJycsIHRydWUsICRpbmxpbmUsICcnLCBmYWxzZSwgJHByZXR0eXVybCk7DQoNCiRwcmV0dHl1cmwgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9wcmV0dHlfdXJsKCR0aGlzLCBnZW5lcmF0b3JfdG9vbHM6OmdldF9wcmVmaXgoJG1vZCkgLiAnL2MnLCAkcm93WydjYXRlZ29yeV9pZCddLCAkcm93WydjYXRlZ29yeV9hbGlhcyddLCAoJGRlZmF1bHRfZGV0YWlscGFnZSA9PSAtMSAmJiAhaXNTZXQoJHBhcmFtc1siZGV0YWlscGFnZSJdKSA/ICRkZXRhaWxwYWdlIDogJycpLCAkY2F0ZWdvcnl0ZW1wbGF0ZSk7DQokaXRlbS0+Y2F0ZWdvcnlfbGluayA9ICRpdGVtLT5jYXRlZ29yeV91cmwgPSAkbW9kLT5DcmVhdGVGcm9udGVuZExpbmsoJGlkLCAkcmV0dXJuaWQsICdkZWZhdWx0JywgJycsIGFycmF5KCdjYXRlZ29yeV9pZCcgPT4gJHJvd1snY2F0ZWdvcnlfaWQnXSwgJ2NhdGVnb3J5dGVtcGxhdGUnID0+ICRjYXRlZ29yeXRlbXBsYXRlKSwgJycsIHRydWUsIGlzU2V0KCRwYXJhbXNbImlubGluZSJdKSA/IDEgOiAwLCAnJywgZmFsc2UsICRwcmV0dHl1cmwpOw0KDQoNCmlmIChpc1NldCgkcGFyYW1zWyJvbmVyb3ciXSkpIHsNCiAgICAkc21hcnR5LT5hc3NpZ24oJHBhcmFtc1sib25lcm93Il0sICRpdGVtKTsNCiAgICByZXR1cm47DQp9DQoNCiRzbWFydHktPmFzc2lnbignaXRlbScsICRpdGVtKTsNCg0KDQovLw0KLy8gUHJvY2VzcyB0aGUgdGVtcGxhdGUNCi8vDQoNCmVjaG8gJG1vZC0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCR0aGV0ZW1wbGF0ZSk7DQoNCi8qDQogKiA8IS0tdGl0bGVfcGFyYW06IHskdGl0bGVfcGFyYW19LS0+DQogKi8NCmlmICgkbW9kLT5HZXRQcmVmZXJlbmNlKCd0aXRsZV9wYXJhbV9mb3JfY2FjaGUnKSkgew0KICAgICRzbWFydHlfdmFycyA9ICRzbWFydHktPmdldF90ZW1wbGF0ZV92YXJzKCk7DQogICAgJHRpdGxlc19hcnJheSA9IGV4cGxvZGUoJywnLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCd0aXRsZV9wYXJhbV9mb3JfY2FjaGUnKSk7DQogICAgZm9yZWFjaCAoJHRpdGxlc19hcnJheSBhcyAkdGl0bGUpIHsNCiAgICAgICAgJHZhbHVlID0gJHNtYXJ0eV92YXJzWyR0aXRsZV07DQogICAgICAgIGlmICgkdmFsdWUpIHsNCiAgICAgICAgICAgIGVjaG8gIjwhLS0iIC4gJHRpdGxlIC4gIjoiIC4gJHZhbHVlIC4gIi0tPlxuIjsNCiAgICAgICAgfQ0KICAgIH0NCn0NCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.fesubmit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7Ci8vIG5vdGhpbmcKPz4K]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.filter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLy8NCi8vIFNldHVwDQovLw0KJHBhZ2VsaW1pdHMgPSBhcnJheSgnMicgPT4gMiwgJzUnID0+IDUsICcyNScgPT4gMjUsICcxMDAnID0+IDEwMCwgJzUwMCcgPT4gNTAwKTsNCiRzb3J0aXRlbXMgPSBhcnJheSgpOw0KJHNvcnRpdGVtc1tnZW5lcmF0b3IoKS0+TGFuZygnZGF0ZScpXSA9ICdpdGVtX2RhdGUnOw0KJHNvcnRpdGVtc1tnZW5lcmF0b3IoKS0+TGFuZygnY3JlYXRlZGRhdGUnKV0gPSAnY3JlYXRlX2RhdGUnOw0KJHNvcnRpdGVtc1tnZW5lcmF0b3IoKS0+TGFuZygnbW9kaWZpZWRkYXRlJyldID0gJ21vZGlmaWVkX2RhdGUnOw0KJHNvcnRvcmRlcnMgPSBhcnJheSgpOw0KJHNvcnRvcmRlcnNbZ2VuZXJhdG9yKCktPkxhbmcoJ2FzY2VuZGluZycpXSA9ICdhc2MnOw0KJHNvcnRvcmRlcnNbZ2VuZXJhdG9yKCktPkxhbmcoJ2Rlc2NlbmRpbmcnKV0gPSAnZGVzYyc7DQokaW5saW5lID0gaXNTZXQoJHBhcmFtc1siaW5saW5lIl0pID8gJHBhcmFtc1siaW5saW5lIl0gOiAwOw0KDQokaGllcmFyY2h5ID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaGllcmFyY2h5JywgJycpOw0KJGNoaWxkcmVuID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2hpbGRyZW4nLCAwKTsNCiRwYWdlbGltaXQgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19wYWdlbGltaXQnLCAyNSk7DQokc29ydGJ5ID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfc29ydGJ5JywgJ2l0ZW1fZGF0ZScpOw0KJHNvcnRvcmRlciA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX3NvcnRvcmRlcicsICdkZXNjJyk7DQokZGF0ZV9mcm9tID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZGF0ZV9mcm9tJywgdGltZSgpIC0gKDM2MDAgKiAyNCAqIDcpKTsNCiRkYXRlX3RvID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZGF0ZV90bycsIHRpbWUoKSk7DQoNCg0KJGNhdGVnb3J5bGlzdCA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2NhdGVnb3J5X2xpc3QoJG1vZCk7DQppZiAoJGlubGluZSkgew0KICAgICRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywgJG1vZC0+Q0dDcmVhdGVGb3JtU3RhcnQoJGlkLCAnZmlsdGVyJywgJHJldHVybmlkLCBhcnJheSgpLCAkaW5saW5lLCAnR0VUJykpOw0KfSBlbHNlIHsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsICRtb2QtPkNHQ3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2RlZmF1bHQnLCAkcmV0dXJuaWQsIGFycmF5KCksICRpbmxpbmUsICdHRVQnKSk7DQp9DQokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCAkbW9kLT5DcmVhdGVGb3JtRW5kKCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9oaWVyYXJjaHknLCAkbW9kLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2lucHV0X2hpZXJhcmNoeScsICRjYXRlZ29yeWxpc3QsIC0xLCAkaGllcmFyY2h5KSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2NoaWxkcmVuJywgJG1vZC0+Q3JlYXRlSW5wdXRZZXNOb0Ryb3Bkb3duKCRpZCwgJ2lucHV0X2NoaWxkcmVuJywgJGNoaWxkcmVuKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3NvcnRieScsICRtb2QtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnaW5wdXRfc29ydGJ5JywgJHNvcnRpdGVtcywgLTEsICRzb3J0YnkpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfc29ydG9yZGVyJywgJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdpbnB1dF9zb3J0b3JkZXInLCAkc29ydG9yZGVycywgLTEsICRzb3J0b3JkZXIpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfcGFnZWxpbWl0JywgJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdpbnB1dF9wYWdlbGltaXQnLCAkcGFnZWxpbWl0cywgLTEsICRwYWdlbGltaXQpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdkYXRlX2Zyb20nLCAkZGF0ZV9mcm9tKTsNCiRzbWFydHktPmFzc2lnbignZGF0ZV90bycsICRkYXRlX3RvKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zdWJtaXQnLCAkbW9kLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkbW9kLT5MYW5nKCdzdWJtaXQnKSkpOw0KDQovLyBjdXN0b20gZmllbGRzDQokZmllbGRzX2Zvcl9maWx0ZXIgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9maWVsZF9kZWZzKCRtb2QsIG51bGwsIDEsIG51bGwpOw0KJGN1c3RvbV9mbGRzID0gYXJyYXkoMSk7DQokY3VzdG9tX2ZpZWxkc192YWx1ZXMgPSBhcnJheSgpOw0KZm9yZWFjaCAoJGZpZWxkc19mb3JfZmlsdGVyIGFzICRyb3cpIHsNCiAgICAkY3VzdG9tX2ZsZHNbJHJvd1snZmllbGRkZWZfaWQnXV0gPSAkcm93Ow0KICAgICRjdXN0b21fZmllbGRzX3ZhbHVlc1skcm93WydmaWVsZGRlZl9pZCddXSA9IGdldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jdXN0b21maWVsZHMnIC4gJHJvd1snZmllbGRkZWZfaWQnXSwgJycpOw0KfQ0KDQoNCi8vIGdldCB0aGUgY3VzdG9tIGZpZWxkcw0KJGZpbHRlcnMgPSBuZXcgZ2VuZXJhdG9yX2ZpbHRlcnMoJGlkLCAkbW9kLCAnYWRtaW4nKTsNCiRjdXN0b21fZmxkcyA9ICRmaWx0ZXJzLT5wcm9jZXNzX2N1c3RvbV9maWVsZHMoYXJyYXkoKSwgJGN1c3RvbV9mbGRzKTsNCiRjdXN0b21fZmxkc19vYmogPSAkZmlsdGVycy0+Z2VuZXJhdGUoJGl0ZW1faWQsICRwYXJhbXMsICRjdXN0b21fZmllbGRzX3ZhbHVlcywgMSk7DQppZiAoaXNzZXQoJGN1c3RvbV9mbGRzX29iaikgJiYgY291bnQoJGN1c3RvbV9mbGRzX29iaikgPiAwKSB7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdjdXN0b21fZmllbGRkZWYnLCAkY3VzdG9tX2ZsZHNfb2JqKTsNCn0NCg0KLy8gc21hcnR5IHBhcmFtcw0KZm9yZWFjaCAoJHBhcmFtcyBhcyAka2V5ID0+ICR2YWx1ZSkgew0KICAgIGlmICgka2V5ID09ICdtYWN0JyB8fCAka2V5ID09ICdhY3Rpb24nKQ0KICAgICAgICBjb250aW51ZTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ3BhcmFtXycgLiAka2V5LCAkdmFsdWUpOw0KfQ0KDQoNCi8vIHRlbXBsYXRlDQokdGhldGVtcGxhdGUgPSAnZmlsdGVyX3RlbXBsYXRlJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ2N1cnJlbnRfZmlsdGVyX3RlbXBsYXRlJyk7DQppZiAoaXNzZXQoJHBhcmFtc1snZmlsdGVydGVtcGxhdGUnXSkpIHsNCiAgICAkdGhldGVtcGxhdGUgPSAnZmlsdGVyX3RlbXBsYXRlJyAuICRwYXJhbXNbJ2ZpbHRlcnRlbXBsYXRlJ107DQp9DQoNCi8vDQovLyBQcm9jZXNzIHRoZSB0ZW1wbGF0ZQ0KLy8NCg0Kb2Jfc3RhcnQoKTsNCiRtb2QtPkRvQWN0aW9uKCdkZWZhdWx0JywgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOw0KJG91dHB1dCA9IG9iX2dldF9jb250ZW50cygpOw0Kb2JfZW5kX2NsZWFuKCk7DQokc21hcnR5LT5hc3NpZ24oJ3Jlc3VsdHMnLCAkb3V0cHV0KTsNCg0KZWNobyAkbW9kLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJHRoZXRlbXBsYXRlKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/function.admin_categorytab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKQogICAgZXhpdDsKCgojUHV0IHRvZ2V0aGVyIGEgbGlzdCBvZiBjdXJyZW50IGNhdGVnb3JpZXMuLi4KJGVudHJ5YXJyYXkgPSBhcnJheSgpOwoKJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfIiAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gIl9jYXRlZ29yaWVzIE9SREVSIEJZIGhpZXJhcmNoeV9wb3NpdGlvbiI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoKJHJvd2NsYXNzID0gJ3JvdzEnOwoKd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAkb25lcm93ID0gbmV3IHN0ZENsYXNzKCk7CgogICAgJGRlcHRoID0gY291bnQocHJlZ19zcGxpdCgnL1wuLycsICRyb3dbJ2hpZXJhcmNoeSddKSk7CgogICAgJG9uZXJvdy0+aWQgPSAkcm93WydjYXRlZ29yeV9pZCddOwogICAgJG9uZXJvdy0+bmFtZSA9IHN0cl9yZXBlYXQoJyZuYnNwOyZndDsmbmJzcDsnLCAkZGVwdGggLSAxKSAuICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fZWRpdGNhdGVnb3J5JywgJHJldHVybmlkLCAkcm93WydjYXRlZ29yeV9uYW1lJ10sIGFycmF5KCdjYXRpZCcgPT4gJHJvd1snY2F0ZWdvcnlfaWQnXSkpOwoKICAgICRvbmVyb3ctPmVkaXRsaW5rID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9lZGl0Y2F0ZWdvcnknLCAkcmV0dXJuaWQsIGNtc21zKCktPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsIGdlbmVyYXRvcigpLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2NhdGlkJyA9PiAkcm93WydjYXRlZ29yeV9pZCddKSk7CiAgICAkb25lcm93LT5kZWxldGVsaW5rID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9kZWxldGVjYXRlZ29yeScsICRyZXR1cm5pZCwgY21zbXMoKS0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCBnZW5lcmF0b3IoKS0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2NhdGlkJyA9PiAkcm93WydjYXRlZ29yeV9pZCddKSwgZ2VuZXJhdG9yKCktPkxhbmcoJ2FyZXlvdXN1cmUnKSk7CgogICAgJG9uZXJvdy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7CgogICAgJGVudHJ5YXJyYXlbXSA9ICRvbmVyb3c7CgogICAgKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3MgPSAicm93MiIgOiAkcm93Y2xhc3MgPSAicm93MSIpOwp9CgokbW9kLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2l0ZW1zJywgJGVudHJ5YXJyYXkpOwokbW9kLT5zbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJGVudHJ5YXJyYXkpKTsKCiNTZXR1cCBsaW5rcwokbW9kLT5zbWFydHktPmFzc2lnbignYWRkbGluaycsICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fZWRpdGNhdGVnb3J5JywgJHJldHVybmlkLCBnZW5lcmF0b3IoKS0+TGFuZygnYWRkY2F0ZWdvcnknKSwgYXJyYXkoKSwgJycsIGZhbHNlLCBmYWxzZSwgJ2NsYXNzPSJwYWdlb3B0aW9ucyInKSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdyZW9yZGVyJywgJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9vcmRlcmNhdGVnb3J5JywgJHJldHVybmlkLCBnZW5lcmF0b3IoKS0+TGFuZygncmVvcmRlcicpLCBhcnJheSgpLCAnJywgZmFsc2UsIGZhbHNlLCAnY2xhc3M9InBhZ2VvcHRpb25zIicpKTsKCiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdjYXRlZ29yeXRleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnY2F0ZWdvcnknKSk7CgojRGlzcGxheSB0ZW1wbGF0ZQplY2hvICRtb2QtPlByb2Nlc3NUZW1wbGF0ZSgnY2F0ZWdvcnlsaXN0LnRwbCcpOwoKLy8gRU9GCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/function.admin_fielddeftab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkgcmV0dXJuOw0KJGFkbWludGhlbWUgPSBjbXNtcygpLT5nZXRfdmFyaWFibGUoJ2FkbWludGhlbWUnKTsNCg0KDQovLyBnZXQgZmllbGQgZGVmaW5pdGlvbnMgaW4gdXNlDQokdG1wID0gJGRiLT5HZXRBcnJheSgnU0VMRUNUIERJU1RJTkNUIGZpZWxkZGVmX2lkIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCcpOw0KJHVzZWRmaWVsZGRlZnMgPSBhcnJheSgpOw0KDQppZiAoaXNfYXJyYXkoJHRtcCkpIHsNCiAgICBmb3JlYWNoICgkdG1wIGFzICRyb3cpIHsNCiAgICAgICAgJHVzZWRmaWVsZGRlZnNbXSA9ICRyb3dbJ2ZpZWxkZGVmX2lkJ107DQogICAgfQ0KfQ0KDQovLyRwb3NpdGlvbiA9ICRkYi0+R2V0T25lKCdTRUxFQ1QgbWF4KHBvc2l0aW9uKSBhcyBtYXhfcG9zaXRpb24gRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkZGVmJyk7DQokZmllbGRzID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZmllbGRfZGVmcygkbW9kKTsNCiRyb3djbGFzcyA9ICdyb3cxJzsNCiRlbnRyeWFycmF5ID0gYXJyYXkoKTsNCg0KZm9yZWFjaCAoJGZpZWxkcyBhcyAkcm93KSB7DQogICAgJG9uZXJvdyA9IG5ldyBzdGRDbGFzcygpOw0KICAgICRvbmVyb3ctPmlkID0gJHJvd1snZmllbGRkZWZfaWQnXTsNCiAgICAkb25lcm93LT5uYW1lID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9lZGl0ZmllbGRkZWYnLCAkcmV0dXJuaWQsICRyb3dbJ25hbWUnXSwgYXJyYXkoJ2ZpZWxkZGVmX2lkJyA9PiRyb3dbJ2ZpZWxkZGVmX2lkJ10pKTsNCiAgICAkb25lcm93LT5hbGlhcyA9ICRyb3dbJ2FsaWFzJ107DQogICAgJG9uZXJvdy0+dHlwZSA9IGdlbmVyYXRvcigpLT5MYW5nKCRyb3dbJ3R5cGUnXSk7DQogICAgJG9uZXJvdy0+cmVxdWlyZWQgPSAkcm93WydyZXF1aXJlZCddOw0KICAgICRvbmVyb3ctPmZyb250ZW5kID0gJHJvd1snZnJvbnRlbmQnXTsNCiAgICAkb25lcm93LT5lZGl0dmlldyA9ICRyb3dbJ2VkaXR2aWV3J107DQogICAgJG9uZXJvdy0+ZmlsdGVyX2Zyb250ZW5kID0gJHJvd1snZmlsdGVyX2Zyb250ZW5kJ107DQogICAgJG9uZXJvdy0+ZmlsdGVyX2FkbWluID0gJHJvd1snZmlsdGVyX2FkbWluJ107DQogICAgJG9uZXJvdy0+c2VhcmNoYWJsZSA9ICRyb3dbJ3NlYXJjaGFibGUnXTsNCiAgICAkb25lcm93LT5wb3NpdGlvbiA9ICRyb3dbJ3Bvc2l0aW9uJ107DQoNCiAgICAvLyBtb3ZlIHVwDQogICAgaWYgKCRvbmVyb3ctPnBvc2l0aW9uID4gMSkgew0KICAgICAgICAkb25lcm93LT51cGxpbmsgPSAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX21vdmVmaWVsZGRlZicsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2Fycm93LXUuZ2lmJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3VwJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2ZpZWxkZGVmX2lkJyA9PiRyb3dbJ2ZpZWxkZGVmX2lkJ10sICdkaXInID0+J3VwJykpOw0KICAgIH0gZWxzZSB7DQogICAgICAgICRvbmVyb3ctPnVwbGluayA9ICcnOw0KICAgIH0NCg0KICAgIC8vIG1vdmUgZG93bg0KICAgLyogaWYgKCRwb3NpdGlvbiA+ICRvbmVyb3ctPnBvc2l0aW9uKSB7DQogICAgICAgICRvbmVyb3ctPmRvd25saW5rID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9tb3ZlZmllbGRkZWYnLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9hcnJvdy1kLmdpZicsIGdlbmVyYXRvcigpLT5MYW5nKCdkb3duJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2ZpZWxkZGVmX2lkJyA9PiRyb3dbJ2ZpZWxkZGVmX2lkJ10sICdkaXInID0+J2Rvd24nKSk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgJG9uZXJvdy0+ZG93bmxpbmsgPSAnJzsNCiAgICB9Ki8NCg0KICAgICRvbmVyb3ctPmVkaXRsaW5rID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9lZGl0ZmllbGRkZWYnLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsIGdlbmVyYXRvcigpLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2ZpZWxkZGVmX2lkJyA9PiRyb3dbJ2ZpZWxkZGVmX2lkJ10pKTsNCg0KICAgIC8vIG9ubHkgZGlzcGxheSBkZWxldGUgZmllbGQgZGVmaW5pdGlvbiBsaW5rIGlmIGZpZWxkIGRlZmluaXRpb24gaXMgbm90IGluIHVzZQ0KICAgICRvbmVyb3ctPmRlbGV0ZWxpbmsgPSAnJzsNCiAgICBpZiAoIWluX2FycmF5KCRyb3dbJ2ZpZWxkZGVmX2lkJ10sICR1c2VkZmllbGRkZWZzKSkgew0KICAgICAgICAkb25lcm93LT5kZWxldGVsaW5rID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9kZWxldGVmaWVsZGRlZicsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCBnZW5lcmF0b3IoKS0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2ZpZWxkZGVmX2lkJyA9PiRyb3dbJ2ZpZWxkZGVmX2lkJ10pLCBnZW5lcmF0b3IoKS0+TGFuZygnYXJleW91c3VyZScpKTsNCiAgICB9DQoNCiAgICAkZW50cnlhcnJheVtdID0gJG9uZXJvdzsNCiAgICAkcm93Y2xhc3MgPSAoJHJvd2NsYXNzID09ICdyb3cxJyA/ICdyb3cyJyA6ICdyb3cxJyk7DQp9DQoNCiRzbWFydHktPmFzc2lnbl9ieV9yZWYoJ2l0ZW1zJywgICRlbnRyeWFycmF5KTsNCiRzbWFydHktPmFzc2lnbignYWxpYXMnLCAgICAgZ2VuZXJhdG9yKCktPkxhbmcoJ2FsaWFzJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCAgICAgY291bnQoJGVudHJ5YXJyYXkpKTsNCiRzbWFydHktPmFzc2lnbignYWRkbGluaycsICAgICAgICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fZWRpdGZpZWxkZGVmJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsIGdlbmVyYXRvcigpLT5MYW5nKCdhZGRmaWVsZGRlZicpLCAnJywgJycsICdzeXN0ZW1pY29uJykgLiAnICcgLiBnZW5lcmF0b3IoKS0+TGFuZygnYWRkZmllbGRkZWYnKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdmaWVsZHRleHQnLCAgICAgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmJykpOw0KJHNtYXJ0eS0+YXNzaWduKCd0eXBldGV4dCcsICAgICAgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmX3R5cGUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ21heGxlbmd0aHRleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfbWF4X2xlbmd0aCcpKTsNCiRzbWFydHktPmFzc2lnbigncmVxdWlyZWR0ZXh0JywgIGdlbmVyYXRvcigpLT5MYW5nKCdmaWVsZGRlZl9yZXF1aXJlZCcpKTsNCiRzbWFydHktPmFzc2lnbignc2VhcmNoYWJsZXRleHQnLCAgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmX3NlYXJjaGFibGUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2Zyb250ZW5kdGV4dCcsICBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfZnJvbnRlbmQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2VkaXR2aWV3dGV4dCcsICBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfZWRpdHZpZXcnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2ZpbHRlcl9mcm9udGVuZHRleHQnLCAgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmX2ZpbHRlcl9mcm9udGVuZCcpKTsNCiRzbWFydHktPmFzc2lnbignZmlsdGVyX2FkbWludGV4dCcsICBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfZmlsdGVyX2FkbWluJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdzZWN0aW9uJywgICdpdGVtcycpOw0KDQplY2hvICRtb2QtPlByb2Nlc3NUZW1wbGF0ZSgnZmllbGRkZWZ0YWIudHBsJyk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/function.admin_fielddeftab_categories.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkgcmV0dXJuOw0KJGFkbWludGhlbWUgPSBjbXNtcygpLT5nZXRfdmFyaWFibGUoJ2FkbWludGhlbWUnKTsNCg0KDQovLyBnZXQgZmllbGQgZGVmaW5pdGlvbnMgaW4gdXNlDQokdG1wID0gJGRiLT5HZXRBcnJheSgnU0VMRUNUIERJU1RJTkNUIGZpZWxkZGVmX2lkIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCcpOw0KJHVzZWRmaWVsZGRlZnMgPSBhcnJheSgpOw0KDQppZiAoaXNfYXJyYXkoJHRtcCkpIHsNCiAgICBmb3JlYWNoICgkdG1wIGFzICRyb3cpIHsNCiAgICAgICAgJHVzZWRmaWVsZGRlZnNbXSA9ICRyb3dbJ2ZpZWxkZGVmX2lkJ107DQogICAgfQ0KfQ0KDQovLyRwb3NpdGlvbiA9ICRkYi0+R2V0T25lKCdTRUxFQ1QgbWF4KHBvc2l0aW9uKSBhcyBtYXhfcG9zaXRpb24gRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkZGVmJyk7DQokZmllbGRzID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZmllbGRfZGVmcygkbW9kLCBudWxsLCBudWxsLCBudWxsLCAnY2F0ZWdvcmllcycpOw0KJHJvd2NsYXNzID0gJ3JvdzEnOw0KJGVudHJ5YXJyYXkgPSBhcnJheSgpOw0KDQpmb3JlYWNoICgkZmllbGRzIGFzICRyb3cpIHsNCiAgICAkb25lcm93ID0gbmV3IHN0ZENsYXNzKCk7DQogICAgJG9uZXJvdy0+aWQgPSAkcm93WydmaWVsZGRlZl9pZCddOw0KICAgICRvbmVyb3ctPm5hbWUgPSAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2VkaXRmaWVsZGRlZicsICRyZXR1cm5pZCwgJHJvd1snbmFtZSddLCBhcnJheSgnZmllbGRkZWZfaWQnID0+JHJvd1snZmllbGRkZWZfaWQnXSkpOw0KICAgICRvbmVyb3ctPmFsaWFzID0gJHJvd1snYWxpYXMnXTsNCiAgICAkb25lcm93LT50eXBlID0gZ2VuZXJhdG9yKCktPkxhbmcoJHJvd1sndHlwZSddKTsNCiAgICAkb25lcm93LT5yZXF1aXJlZCA9ICRyb3dbJ3JlcXVpcmVkJ107DQogICAgJG9uZXJvdy0+ZnJvbnRlbmQgPSAkcm93Wydmcm9udGVuZCddOw0KICAgICRvbmVyb3ctPmVkaXR2aWV3ID0gJHJvd1snZWRpdHZpZXcnXTsNCiAgICAkb25lcm93LT5maWx0ZXJfZnJvbnRlbmQgPSAkcm93WydmaWx0ZXJfZnJvbnRlbmQnXTsNCiAgICAkb25lcm93LT5maWx0ZXJfYWRtaW4gPSAkcm93WydmaWx0ZXJfYWRtaW4nXTsNCiAgICAkb25lcm93LT5zZWFyY2hhYmxlID0gJHJvd1snc2VhcmNoYWJsZSddOw0KICAgICRvbmVyb3ctPnBvc2l0aW9uID0gJHJvd1sncG9zaXRpb24nXTsNCg0KICAgIC8vIG1vdmUgdXANCiAgICBpZiAoJG9uZXJvdy0+cG9zaXRpb24gPiAxKSB7DQogICAgICAgICRvbmVyb3ctPnVwbGluayA9ICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fbW92ZWZpZWxkZGVmJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vYXJyb3ctdS5naWYnLCBnZW5lcmF0b3IoKS0+TGFuZygndXAnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnZmllbGRkZWZfaWQnID0+JHJvd1snZmllbGRkZWZfaWQnXSwgJ2RpcicgPT4ndXAnKSk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgJG9uZXJvdy0+dXBsaW5rID0gJyc7DQogICAgfQ0KDQogICAgLy8gbW92ZSBkb3duDQogICAvKiBpZiAoJHBvc2l0aW9uID4gJG9uZXJvdy0+cG9zaXRpb24pIHsNCiAgICAgICAgJG9uZXJvdy0+ZG93bmxpbmsgPSAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX21vdmVmaWVsZGRlZicsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2Fycm93LWQuZ2lmJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2Rvd24nKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnZmllbGRkZWZfaWQnID0+JHJvd1snZmllbGRkZWZfaWQnXSwgJ2RpcicgPT4nZG93bicpKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkb25lcm93LT5kb3dubGluayA9ICcnOw0KICAgIH0qLw0KDQogICAgJG9uZXJvdy0+ZWRpdGxpbmsgPSAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2VkaXRmaWVsZGRlZicsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnZmllbGRkZWZfaWQnID0+JHJvd1snZmllbGRkZWZfaWQnXSkpOw0KDQogICAgLy8gb25seSBkaXNwbGF5IGRlbGV0ZSBmaWVsZCBkZWZpbml0aW9uIGxpbmsgaWYgZmllbGQgZGVmaW5pdGlvbiBpcyBub3QgaW4gdXNlDQogICAgJG9uZXJvdy0+ZGVsZXRlbGluayA9ICcnOw0KICAgIGlmICghaW5fYXJyYXkoJHJvd1snZmllbGRkZWZfaWQnXSwgJHVzZWRmaWVsZGRlZnMpKSB7DQogICAgICAgICRvbmVyb3ctPmRlbGV0ZWxpbmsgPSAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2RlbGV0ZWZpZWxkZGVmJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsIGdlbmVyYXRvcigpLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnZmllbGRkZWZfaWQnID0+JHJvd1snZmllbGRkZWZfaWQnXSksIGdlbmVyYXRvcigpLT5MYW5nKCdhcmV5b3VzdXJlJykpOw0KICAgIH0NCg0KICAgICRlbnRyeWFycmF5W10gPSAkb25lcm93Ow0KICAgICRyb3djbGFzcyA9ICgkcm93Y2xhc3MgPT0gJ3JvdzEnID8gJ3JvdzInIDogJ3JvdzEnKTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduX2J5X3JlZignaXRlbXMnLCAgJGVudHJ5YXJyYXkpOw0KJHNtYXJ0eS0+YXNzaWduKCdhbGlhcycsICAgICBnZW5lcmF0b3IoKS0+TGFuZygnYWxpYXMnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsICAgICBjb3VudCgkZW50cnlhcnJheSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdhZGRsaW5rJywgICAgICAgJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9lZGl0ZmllbGRkZWYnLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2FkZGZpZWxkZGVmJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSAuICcgJyAuIGdlbmVyYXRvcigpLT5MYW5nKCdhZGRmaWVsZGRlZicpKSk7DQokc21hcnR5LT5hc3NpZ24oJ2ZpZWxkdGV4dCcsICAgICBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWYnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3R5cGV0ZXh0JywgICAgICBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfdHlwZScpKTsNCiRzbWFydHktPmFzc2lnbignbWF4bGVuZ3RodGV4dCcsIGdlbmVyYXRvcigpLT5MYW5nKCdmaWVsZGRlZl9tYXhfbGVuZ3RoJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdyZXF1aXJlZHRleHQnLCAgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmX3JlcXVpcmVkJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdzZWFyY2hhYmxldGV4dCcsICBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfc2VhcmNoYWJsZScpKTsNCiRzbWFydHktPmFzc2lnbignZnJvbnRlbmR0ZXh0JywgIGdlbmVyYXRvcigpLT5MYW5nKCdmaWVsZGRlZl9mcm9udGVuZCcpKTsNCiRzbWFydHktPmFzc2lnbignZWRpdHZpZXd0ZXh0JywgIGdlbmVyYXRvcigpLT5MYW5nKCdmaWVsZGRlZl9lZGl0dmlldycpKTsNCiRzbWFydHktPmFzc2lnbignZmlsdGVyX2Zyb250ZW5kdGV4dCcsICBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfZmlsdGVyX2Zyb250ZW5kJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdmaWx0ZXJfYWRtaW50ZXh0JywgIGdlbmVyYXRvcigpLT5MYW5nKCdmaWVsZGRlZl9maWx0ZXJfYWRtaW4nKSk7DQokc21hcnR5LT5hc3NpZ24oJ3NlY3Rpb24nLCAgJ2NhdGVnb3JpZXMnKTsNCg0KZWNobyAkbW9kLT5Qcm9jZXNzVGVtcGxhdGUoJ2ZpZWxkZGVmdGFiLnRwbCcpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/function.admin_itemtab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9pdGVtJykpDQogICAgcmV0dXJuOw0KDQokd2hlcmUgPSBhcnJheSgpOw0KJGNhdGVnb3J5bG9uZ25hbWVsaXN0ID0gYXJyYXkoKTsNCiRwYXJhbXNhcnJheSA9IGFycmF5KCk7DQokYWRtaW50aGVtZSA9IGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpOw0KDQokc21hcnR5LT5hc3NpZ24oJ21vZHVsZScsICRtb2QpOw0KDQokc3RhcnRfY2F0ZWdvcnkgPSAnJzsNCg0KJGNhdGVnb3J5bG9uZ25hbWVsaXN0ID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfcHJpdmF0ZV9jYXRlZ29yaWVzKCRtb2QpOw0KDQovLw0KLy8gU2V0dXANCi8vDQokcGFnZWxpbWl0cyA9IGFycmF5KCcyJyA9PiAyLCAnNScgPT4gNSwgJzI1JyA9PiAyNSwgJzEwMCcgPT4gMTAwLCAnNTAwJyA9PiA1MDApOw0KJHNvcnRpdGVtcyA9IGFycmF5KCk7DQokc29ydGl0ZW1zW2dlbmVyYXRvcigpLT5MYW5nKCdkYXRlJyldID0gJ2l0ZW1fZGF0ZSc7DQokc29ydGl0ZW1zW2dlbmVyYXRvcigpLT5MYW5nKCdjcmVhdGVkZGF0ZScpXSA9ICdjcmVhdGVfZGF0ZSc7DQokc29ydGl0ZW1zW2dlbmVyYXRvcigpLT5MYW5nKCdtb2RpZmllZGRhdGUnKV0gPSAnbW9kaWZpZWRfZGF0ZSc7DQokc29ydG9yZGVycyA9IGFycmF5KCk7DQokc29ydG9yZGVyc1tnZW5lcmF0b3IoKS0+TGFuZygnYXNjZW5kaW5nJyldID0gJ2FzYyc7DQokc29ydG9yZGVyc1tnZW5lcmF0b3IoKS0+TGFuZygnZGVzY2VuZGluZycpXSA9ICdkZXNjJzsNCiR1aWQgPSBnZXRfdXNlcmlkKGZhbHNlKTsNCiRoaWVyYXJjaHkgPSAnJzsNCiRjaGlsZHJlbiA9IDA7DQokcGFnZWxpbWl0ID0gMjU7DQokc29ydGJ5ID0gJ2NyZWF0ZV9kYXRlJzsNCiRzb3J0b3JkZXIgPSAnZGVzYyc7DQokcGFnZW51bWJlciA9IDE7DQokZmllbGRzX3ZpZXdhYmxlID0gYXJyYXkoKTsNCiRmaWVsZF9uYW1lcyA9IGFycmF5KCk7DQokZmllbGRfbW9kdWxlcyA9IGFycmF5KCk7DQokZmllbGRfaW1hZ2VzID0gYXJyYXkoKTsNCiRjdXN0b21fZmllbGRzID0gJyc7DQokZGF0ZV90byA9IHRpbWUoKTsNCg0KaWYgKCEkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2RhdGVfZWRpdCcpKQ0KICAgIHVuc2V0KCRzb3J0aXRlbXNbZ2VuZXJhdG9yKCktPkxhbmcoJ2RhdGUnKV0pOw0KDQoNCi8vIGN1c3RvbSBmaWVsZHMNCiRmaWVsZHNfZm9yX2ZpbHRlciA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2ZpZWxkX2RlZnMoJG1vZCwgbnVsbCwgbnVsbCwgMSk7DQokY3VzdG9tX2ZsZHMgPSBhcnJheSgxKTsNCiRjdXN0b21fZmllbGRzX3ZhbHVlcyA9IGFycmF5KCk7DQppZiAoZW1wdHkoJGZpZWxkc19mb3JfZmlsdGVyKSA9PSBmYWxzZSkgew0KICAgIGZvcmVhY2ggKCRmaWVsZHNfZm9yX2ZpbHRlciBhcyAkcm93KSB7DQogICAgICAgICRjdXN0b21fZmxkc1skcm93WydmaWVsZGRlZl9pZCddXSA9ICRyb3c7DQogICAgICAgICRjdXN0b21fZmllbGRzX3ZhbHVlc1skcm93WydmaWVsZGRlZl9pZCddXSA9IGdldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jdXN0b21maWVsZHMnIC4gJHJvd1snZmllbGRkZWZfaWQnXSwgJycpOw0KICAgIH0NCn0NCg0KDQoNCi8vDQovLyBHZXQgcHJlZmVyZW5jZXMNCi8vDQokaGllcmFyY2h5ID0gZ2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2hpZXJhcmNoeScsICcnKTsNCiRjaGlsZHJlbiA9IGdldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jaGlsZHJlbicsIDApOw0KJHBhZ2VsaW1pdCA9IGdldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19wYWdlbGltaXQnLCAyNSk7DQokc29ydGJ5ID0gZ2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX3NvcnRieScsICdpdGVtX2RhdGUnKTsNCiRzb3J0b3JkZXIgPSBnZXRfcHJlZmVyZW5jZSgkdWlkLCAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfc29ydG9yZGVyJywgJ2Rlc2MnKTsNCiRkYXRlX2Zyb20gPSBnZXRfcHJlZmVyZW5jZSgkdWlkLCAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZGF0ZV9mcm9tJywgdGltZSgpIC0gKDM2MDAgKiAyNCAqIDcpKTsNCiRkYXRlX3RvID0gZ2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2RhdGVfdG8nLCB0aW1lKCkgKyAoMzYwMCAqIDI0ICogNykpOw0KJHRtcCA9IGdldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jdXN0b21fZmllbGRzJywgJycpOw0KDQoNCg0KaWYgKGVtcHR5KCR0bXApKQ0KICAgICR0bXAgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdjdXN0b21fZmllbGRzX2RlZmF1bHQnKTsNCmlmICghZW1wdHkoJHRtcCkpDQogICAgJGN1c3RvbV9maWVsZHMgPSBleHBsb2RlKCcsJywgJHRtcCk7DQoNCi8vDQovLyBIYW5kbGUgR2V0IHBhcmFtZXRlcnMNCi8vDQppZiAoaXNzZXQoJHBhcmFtc1sncGFnZW51bWJlciddKSkgew0KICAgICRwYWdlbnVtYmVyID0gKGludCkgJHBhcmFtc1sncGFnZW51bWJlciddOw0KfQ0KDQoNCi8vDQovLyBIYW5kbGUgZm9ybSBzdWJtaXQNCi8vDQppZiAoaXNzZXQoJHBhcmFtc1snc3VibWl0J10pKSB7DQoNCiAgICBpZiAoJG1vZC0+R2V0UHJlZmVyZW5jZSgnbW9kZScpICE9ICJzaW1wbGUiIHx8IGlzc2V0KCRwYXJhbXNbJ2N1c3RvbWZpZWxkJ10pKSB7DQoNCiAgICAgICAgaWYgKCRtb2QtPkdldFByZWZlcmVuY2UoJ21vZGUnKSAhPSAic2ltcGxlIikgew0KICAgICAgICAgICAgJGNoaWxkcmVuID0gKGludCkgJHBhcmFtc1snaW5wdXRfY2hpbGRyZW4nXTsNCiAgICAgICAgICAgICRwYWdlbGltaXQgPSAoaW50KSAkcGFyYW1zWydpbnB1dF9wYWdlbGltaXQnXTsNCiAgICAgICAgICAgICRzb3J0YnkgPSB0cmltKCRwYXJhbXNbJ2lucHV0X3NvcnRieSddKTsNCiAgICAgICAgICAgICRoaWVyYXJjaHkgPSB0cmltKCRwYXJhbXNbJ2hpZXJhcmNoeSddKTsNCiAgICAgICAgICAgICRzb3J0b3JkZXIgPSB0cmltKCRwYXJhbXNbJ2lucHV0X3NvcnRvcmRlciddKTsNCiAgICAgICAgICAgICRkYXRlX2Zyb20gPSBta3RpbWUoMCwgMCwgMCwgJHBhcmFtc1snZGF0ZWZyb21Nb250aCddLCAkcGFyYW1zWydkYXRlZnJvbURheSddLCAkcGFyYW1zWydkYXRlZnJvbVllYXInXSk7DQogICAgICAgICAgICAkZGF0ZV90byA9IG1rdGltZSgyMywgNTksIDU5LCAkcGFyYW1zWydkYXRldG9Nb250aCddLCAkcGFyYW1zWydkYXRldG9EYXknXSwgJHBhcmFtc1snZGF0ZXRvWWVhciddKTsNCg0KICAgICAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2N1c3RvbV9maWVsZHMnXSkpIHsNCiAgICAgICAgICAgICAgICAkY3VzdG9tX2ZpZWxkcyA9ICRwYXJhbXNbJ2N1c3RvbV9maWVsZHMnXTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgJGN1c3RvbV9maWVsZHMgPSBhcnJheSgpOw0KICAgICAgICAgICAgfQ0KDQoNCiAgICAgICAgICAgIC8vIHN0b3JlIHRoZW0gYXMgdXNlciBwcmVmZXJlbmNlcw0KICAgICAgICAgICAgc2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2hpZXJhcmNoeScsICRoaWVyYXJjaHkpOw0KICAgICAgICAgICAgc2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2NoaWxkcmVuJywgJGNoaWxkcmVuKTsNCiAgICAgICAgICAgIHNldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19wYWdlbGltaXQnLCAkcGFnZWxpbWl0KTsNCiAgICAgICAgICAgIHNldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19zb3J0YnknLCAkc29ydGJ5KTsNCiAgICAgICAgICAgIHNldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19zb3J0b3JkZXInLCAkc29ydG9yZGVyKTsNCiAgICAgICAgICAgIHNldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19kYXRlX2Zyb20nLCAkZGF0ZV9mcm9tKTsNCiAgICAgICAgICAgIHNldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19kYXRlX3RvJywgJGRhdGVfdG8pOw0KICAgICAgICAgICAgc2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2N1c3RvbV9maWVsZHMnLCBpbXBsb2RlKCcsJywgJGN1c3RvbV9maWVsZHMpKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChpc3NldCgkcGFyYW1zWydjdXN0b21maWVsZCddKSkgew0KICAgICAgICAgICAgZm9yZWFjaCAoJHBhcmFtc1snY3VzdG9tZmllbGQnXSBhcyAkZmxkaWQgPT4gJHZhbHVlKSB7DQogICAgICAgICAgICAgICAgc2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2N1c3RvbWZpZWxkcycgLiAkZmxkaWQsICR2YWx1ZSk7DQogICAgICAgICAgICAgICAgJGN1c3RvbV9maWVsZHNfdmFsdWVzWyRmbGRpZF0gPSAkdmFsdWU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9DQoNCg0KLy8gaWYgc2ltcGxlIG1vZGUsIHJlc2V0IGFsbCBwcmVmcw0KaWYgKCRtb2QtPkdldFByZWZlcmVuY2UoJ21vZGUnKSA9PSAic2ltcGxlIikgew0KICAgICRzb3J0b3JkZXIgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdzb3J0b3JkZXJfc2ltcGxlJywgJ2Rlc2MnKTsNCiAgICAkc29ydGJ5ID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnc29ydGJ5X3NpbXBsZScsICdwb3NpdGlvbicpOw0KICAgICRwYWdlbGltaXQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdwYWdlbGltaXRfc2ltcGxlJywgMTAwMCk7DQp9DQoNCi8vIGdldCBjYXRlZ29yeSBsaXN0DQokd2hlcmUgPSBhcnJheSgpOw0KJHBhcmFtc2FycmF5ID0gYXJyYXkoKTsNCmlmIChlbXB0eSgkY2F0ZWdvcnlsb25nbmFtZWxpc3QpID09IGZhbHNlKSB7DQoNCiAgICAkd2hlcmVzdGF0ZW1lbnQgPSBhcnJheSgpOw0KICAgIGZvcmVhY2ggKCRjYXRlZ29yeWxvbmduYW1lbGlzdCBhcyAkbG9ubmFtZSkgew0KICAgICAgICAkd2hlcmVzdGF0ZW1lbnRbXSA9ICdsb25nX25hbWUgTElLRSAgPyc7DQogICAgICAgICRwYXJhbXNhcnJheVtdID0gJGxvbm5hbWUgLiAnICUnOw0KICAgIH0NCiAgICAkd2hlcmVbXSA9ICcoJyAuIGltcGxvZGUoJyBPUiAnLCAkd2hlcmVzdGF0ZW1lbnQpIC4gJyknOw0KfQ0KJGNhdGVnb3J5bGlzdCA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2NhdGVnb3J5X2xpc3QoJG1vZCwgJHdoZXJlLCAkcGFyYW1zYXJyYXkpOw0KDQovLyBmaWVsZHMgdmlldw0KJGFsbF9maWVsZHMgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9maWVsZHMoJG1vZCwgZmFsc2UpOw0KDQppZiAoaXNfYXJyYXkoJGFsbF9maWVsZHMpKSB7DQogICAgZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJGFsbF9maWVsZHMpOyAkaSsrKSB7DQogICAgICAgIHN3aXRjaCAoJGFsbF9maWVsZHNbJGldWyd0eXBlJ10pIHsNCiAgICAgICAgICAgIGNhc2UgJ3RleHRhcmVhJzoNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgJ3N0YXRpYyc6DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICRmaWVsZHNfdmlld2FibGVbJGFsbF9maWVsZHNbJGldWydmaWVsZGRlZl9pZCddXSA9ICRhbGxfZmllbGRzWyRpXVsnbmFtZSddOw0KICAgICAgICAgICAgICAgICRmaWVsZF9uYW1lc1skYWxsX2ZpZWxkc1skaV1bJ2ZpZWxkZGVmX2lkJ11dID0gJGFsbF9maWVsZHNbJGldWydhbGlhcyddOw0KDQogICAgICAgICAgICAgICAgLy8gaWYgbW9kdWxlLCBnZXQgbW9kdWxlIGZ1bmMNCiAgICAgICAgICAgICAgICBpZiAoJGFsbF9maWVsZHNbJGldWyd0eXBlJ10gPT0gIm1vZHVsZSIpIHsNCiAgICAgICAgICAgICAgICAgICAgJGluc3RydWN0aW9ucyA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhKCRhbGxfZmllbGRzWyRpXVsnZXh0cmEnXSk7DQogICAgICAgICAgICAgICAgICAgICRjdXN0b21tb2R1bGVwYXJhbXMgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYV9tb2R1bGVwYXJhbXMoJGluc3RydWN0aW9ucyk7DQogICAgICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkY3VzdG9tbW9kdWxlcGFyYW1zKSAmJiAhZW1wdHkoJGN1c3RvbW1vZHVsZXBhcmFtcykgJiYgY21zX3V0aWxzOjpnZXRfbW9kdWxlKCRjdXN0b21tb2R1bGVwYXJhbXNbIm1vZHVsZSJdKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGZpZWxkX21vZHVsZXNbJGFsbF9maWVsZHNbJGldWydmaWVsZGRlZl9pZCddXSA9ICRjdXN0b21tb2R1bGVwYXJhbXNbIm1vZHVsZSJdOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIC8vIGlmIG1vZHVsZSwgZ2V0IG1vZHVsZSBmdW5jDQogICAgICAgICAgICAgICAgaWYgKCRhbGxfZmllbGRzWyRpXVsndHlwZSddID09ICJ1cGxvYWRfZmlsZSIpIHsNCiAgICAgICAgICAgICAgICAgICAgJGZpZWxkX2ltYWdlc1skYWxsX2ZpZWxkc1skaV1bJ2ZpZWxkZGVmX2lkJ11dID0gMTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKGNvdW50KCRmaWVsZHNfdmlld2FibGUpICYmIGlzX2FycmF5KCRjdXN0b21fZmllbGRzKSkgew0KICAgICAgICAvLyBub3cgdHJpbSBkb3duIHRoZSBjdXN0b20gZmllbGRzDQogICAgICAgIC8vIHRvIG1ha2Ugc3VyZSB0aGF0IHNvbWV0aGluZyBoYXNuJ3QgYmVlbiBkZWxldGVkLg0KICAgICAgICAkdG1wID0gYXJyYXkoKTsNCiAgICAgICAgZm9yZWFjaCAoJGN1c3RvbV9maWVsZHMgYXMgJGZpZCkgew0KICAgICAgICAgICAgaWYgKGluX2FycmF5KCRmaWQsIGFycmF5X2tleXMoJGZpZWxkc192aWV3YWJsZSkpKSB7DQogICAgICAgICAgICAgICAgJHRtcFtdID0gJGZpZDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAkY3VzdG9tX2ZpZWxkcyA9ICR0bXA7DQogICAgfSBlbHNlIHsNCiAgICAgICAgJGN1c3RvbV9maWVsZHMgPSBhcnJheSgpOw0KICAgIH0NCn0NCiRhbGxfZmllbGRzID0gY2dlX2FycmF5Ojp0b19oYXNoKCRhbGxfZmllbGRzLCAnbmFtZScpOw0KaWYgKGNvdW50KCRmaWVsZHNfdmlld2FibGUpKSB7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdmaWVsZHNfdmlld2FibGUnLCAkZmllbGRzX3ZpZXdhYmxlKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2ZpZWxkX25hbWVzJywgJGZpZWxkX25hbWVzKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2ZpZWxkX21vZHVsZXMnLCAkZmllbGRfbW9kdWxlcyk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdmaWVsZF9pbWFnZXMnLCAkZmllbGRfaW1hZ2VzKTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCdjdXN0b21fZmllbGRzJywgJGN1c3RvbV9maWVsZHMpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsICRtb2QtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdkZWZhdWx0YWRtaW4nKSk7DQokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCAkbW9kLT5DcmVhdGVGb3JtRW5kKCkpOw0KDQoNCg0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9oaWVyYXJjaHknLCAkbW9kLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2hpZXJhcmNoeScsICRjYXRlZ29yeWxpc3QsIC0xLCAkaGllcmFyY2h5KSk7DQoNCiRzbWFydHktPmFzc2lnbignaW5wdXRfY2hpbGRyZW4nLCAkbW9kLT5DcmVhdGVJbnB1dFllc05vRHJvcGRvd24oJGlkLCAnaW5wdXRfY2hpbGRyZW4nLCAkY2hpbGRyZW4pKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfc29ydGJ5JywgJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdpbnB1dF9zb3J0YnknLCAkc29ydGl0ZW1zLCAtMSwgJHNvcnRieSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zb3J0b3JkZXInLCAkbW9kLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2lucHV0X3NvcnRvcmRlcicsICRzb3J0b3JkZXJzLCAtMSwgJHNvcnRvcmRlcikpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9wYWdlbGltaXQnLCAkbW9kLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2lucHV0X3BhZ2VsaW1pdCcsICRwYWdlbGltaXRzLCAtMSwgJHBhZ2VsaW1pdCkpOw0KDQovLw0KLy8gQnVpbGQgdGhlIHF1ZXJ5DQovLw0KJGZpZWxkcyA9IGFycmF5KCk7DQokZmllbGRzW10gPSAnQS4qJzsNCiRmaWVsZHNbXSA9ICdCLmxvbmdfbmFtZSc7DQokcHJlZml4MSA9ICJTRUxFQ1QgPEZJRUxEUz4gRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV8iIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAiX2l0ZW0gQSAiOw0KJHByZWZpeDIgPSAiU0VMRUNUIENPVU5UKEEuaXRlbV9pZCkgRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV8iIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAiX2l0ZW0gQSAiOw0KJHdoZXJlID0gYXJyYXkoKTsNCiRqb2lucyA9IGFycmF5KCk7DQokcXBhcm1zID0gYXJyYXkoKTsNCg0KaWYgKGlzX2FycmF5KCRjdXN0b21fZmllbGRzKSAmJiBjb3VudCgkY3VzdG9tX2ZpZWxkcykgJiYgY291bnQoJGZpZWxkc192aWV3YWJsZSkpIHsNCiAgICBmb3IgKCRqID0gMDsgJGogPCBjb3VudCgkY3VzdG9tX2ZpZWxkcyk7ICRqKyspIHsNCiAgICAgICAgJGZpZCA9ICRjdXN0b21fZmllbGRzWyRqXTsNCiAgICAgICAgJGZpZWxkc1tdID0gIkZ2eyRqfS52YWx1ZSBBUyAnRmxkX197JGZpZWxkX25hbWVzWyRmaWRdfSciOw0KICAgICAgICAkam9pbnNbXSA9ICdMRUZUIE9VVEVSIEpPSU4gJyAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfIiAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gIl9maWVsZHZhbCBGdnskan0NCiAgICAgICAgICAgICAgICAgICAgT04gRnZ7JGp9Lml0ZW1faWQgPSBBLml0ZW1faWQgQU5EIEZ2eyRqfS5maWVsZGRlZl9pZCA9ID8iOw0KICAgICAgICAkcXBhcm1zW10gPSAkY3VzdG9tX2ZpZWxkc1skal07DQogICAgfQ0KfQ0KDQoNCiRqb2luc1tdID0gJ0xFRlQgSk9JTiAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2NhdGVnb3JpZXMgQiANCiAgICAgICAgICAgICAgICAgIE9OIEEuY2F0ZWdvcnlfaWQgPSBCLmNhdGVnb3J5X2lkJzsNCg0KaWYgKCFlbXB0eSgkaGllcmFyY2h5KSkgew0KDQogICAgJHdoZXJlW10gPSAnQi5sb25nX25hbWUgTElLRSA/JzsNCiAgICBpZiAoJGNoaWxkcmVuKSB7DQogICAgICAgICRxcGFybXNbXSA9ICRoaWVyYXJjaHkgLiAnJSc7DQogICAgfSBlbHNlIHsNCiAgICAgICAgJHFwYXJtc1tdID0gJGhpZXJhcmNoeTsNCiAgICB9DQp9IGVsc2VpZiAoZW1wdHkoJGNhdGVnb3J5bG9uZ25hbWVsaXN0KSA9PSBmYWxzZSkgew0KICAgIGZvcmVhY2ggKCRjYXRlZ29yeWxvbmduYW1lbGlzdCBhcyAkbG9uZ25hbWUpIHsNCiAgICAgICAgJHdoZXJlW10gPSAnQi5sb25nX25hbWUgTElLRSA/JzsNCiAgICAgICAgJHFwYXJtc1tdID0gJGxvbmduYW1lIC4gJyUnOw0KICAgIH0NCn0NCg0KaWYgKCRtb2QtPkdldFByZWZlcmVuY2UoJ2ZpbHRlcl9kYXRlJykgJiYgJGRhdGVfZnJvbSAmJiAkZGF0ZV90bykgew0KICAgICR3aGVyZVtdID0gIiBBLml0ZW1fZGF0ZSAgPiA/IGFuZCBBLml0ZW1fZGF0ZSAgPCA/ICI7DQogICAgJHFwYXJtc1tdID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKCRkYXRlX2Zyb20pLCAiJyIpOw0KICAgICRxcGFybXNbXSA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZV90byksICInIik7DQp9DQoNCi8vIHByb2NjZXMgdmFsdWVzIGZyb20gcGFyYW1zDQppZiAoJGN1c3RvbV9maWVsZHNfdmFsdWVzKSB7DQogICAgZm9yZWFjaCAoJGN1c3RvbV9maWVsZHNfdmFsdWVzIGFzICRmbGRpZCA9PiAkdmFsdWUpIHsNCiAgICAgICAgaWYgKGVtcHR5KCR2YWx1ZSkpDQogICAgICAgICAgICBjb250aW51ZTsNCg0KICAgICAgICAkaiA9ICdjJyAuICRmbGRpZDsNCiAgICAgICAgJGpvaW5zW10gPSAnTEVGVCBPVVRFUiBKT0lOICcgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlXyIgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICJfZmllbGR2YWwgRnZ7JGp9DQogICAgICAgICAgICAgICAgICAgIE9OIEZ2eyRqfS5pdGVtX2lkID0gQS5pdGVtX2lkIEFORCBGdnskan0uZmllbGRkZWZfaWQgPSA/IjsNCiAgICAgICAgLy9hcnJheV91bnNoaWZ0KCRxcGFybXMsICRmbGRpZCk7DQogICAgICAgICRxcGFybXNbXSA9ICRmbGRpZDsNCiAgICAgICAgJHdoZXJlW10gPSAnIEZ2JyAuICRqIC4gJy52YWx1ZSAgPSA/JzsNCiAgICAgICAgJHFwYXJtc1tdID0gJHZhbHVlOw0KICAgIH0NCn0NCg0KDQovLyBoYW5kbGUgZnVua3kgY3VzdG9tIGZpZWxkIHNvcnQgb3JkZXJzDQppZiAoc3RhcnRzd2l0aCgkc29ydGJ5LCAnLUYtJykpIHsNCiAgICAkZmlkID0gKGludCkgc3Vic3RyKCRzb3J0YnksIDMpOw0KICAgICRqb2luc1tdID0gJ0xFRlQgSk9JTiAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIGZ2DQogICAgICAgICAgICAgICAgICBPTiBmdi5pdGVtX2lkID0gQS5pdGVtX2lkJzsNCiAgICAkd2hlcmVbXSA9ICdmdi5maWVsZGRlZl9pZCA9ID8nOw0KICAgICRxcGFybXNbXSA9ICRmaWQ7DQogICAgJG9yZGVyID0gIiBPUkRFUiBCWSBmdi52YWx1ZSAkc29ydG9yZGVyIjsNCn0gZWxzZSB7DQogICAgJG9yZGVyID0gIiBPUkRFUiBCWSAkc29ydGJ5ICRzb3J0b3JkZXIiOw0KfQ0KDQokc3RyID0gaW1wbG9kZSgnICcsICRqb2lucyk7DQppZiAoY291bnQoJHdoZXJlKSkgew0KICAgICRzdHIgLj0gJyBXSEVSRSAnIC4gaW1wbG9kZSgnIEFORCAnLCAkd2hlcmUpOw0KfQ0KJHF1ZXJ5MSA9IHN0cl9yZXBsYWNlKCc8RklFTERTPicsIGltcGxvZGUoJywnLCAkZmllbGRzKSwgJHByZWZpeDEpIC4gJHN0ciAuICRvcmRlcjsNCiRxdWVyeTIgPSAkcHJlZml4MiAuICRzdHI7DQoNCi8vDQovLyBTZXR1cCBzdGFydCBlbGVtZW50LCBhbmQgY291bnQgcGFnZXMNCi8vDQokdG90YWxjb3VudCA9ICRkYi0+R2V0T25lKCRxdWVyeTIsICRxcGFybXMpOw0KJHBhZ2Vjb3VudCA9IChpbnQpICgkdG90YWxjb3VudCAvICRwYWdlbGltaXQpOw0KaWYgKCgkdG90YWxjb3VudCAlICRwYWdlbGltaXQpICE9IDApDQogICAgJHBhZ2Vjb3VudCsrOw0KJHN0YXJ0ZWxlbWVudCA9ICgkcGFnZW51bWJlciAtIDEpICogJHBhZ2VsaW1pdDsNCg0KLy8NCi8vIEJlZ2luIHRoZSBvdXRwdXQNCi8vDQokc21hcnR5LT5hc3NpZ24oJ3BhZ2VudW1iZXInLCAkcGFnZW51bWJlcik7DQokc21hcnR5LT5hc3NpZ24oJ3BhZ2Vjb3VudCcsICRwYWdlY291bnQpOw0KJHNtYXJ0eS0+YXNzaWduKCd0b3RhbHJvd3MnLCAkdG90YWxjb3VudCk7DQppZiAoJHBhZ2VudW1iZXIgPiAxKSB7DQogICAgJHBhcm1zID0gYXJyYXkoJ3BhZ2VudW1iZXInID0+IDEpOw0KICAgICRzbWFydHktPmFzc2lnbignZmlyc3RwYWdlX3VybCcsICRtb2QtPkNyZWF0ZVVSTCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcm1zKSk7DQogICAgJHBhcm1zID0gYXJyYXkoJ3BhZ2VudW1iZXInID0+ICRwYWdlbnVtYmVyIC0gMSk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdwcmV2cGFnZV91cmwnLCAkbW9kLT5DcmVhdGVVUkwoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJtcykpOw0KfQ0KaWYgKCRwYWdlbnVtYmVyIDwgJHBhZ2Vjb3VudCkgew0KICAgICRwYXJtcyA9IGFycmF5KCdwYWdlbnVtYmVyJyA9PiAkcGFnZW51bWJlciArIDEpOw0KICAgICRzbWFydHktPmFzc2lnbignbmV4dHBhZ2VfdXJsJywgJG1vZC0+Q3JlYXRlVVJMKCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFybXMpKTsNCiAgICAkcGFybXMgPSBhcnJheSgncGFnZW51bWJlcicgPT4gJHBhZ2Vjb3VudCk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdsYXN0cGFnZV91cmwnLCAkbW9kLT5DcmVhdGVVUkwoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJtcykpOw0KfQ0KDQokcG9zaXRpb24gPSAkZGItPkdldE9uZSgnU0VMRUNUIG1heChwb3NpdGlvbikgYXMgbWF4X3Bvc2l0aW9uIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICR0aGlzLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbScpOw0KDQokZW50cnlhcnJheSA9IGFycmF5KCk7DQokZGJyZXN1bHQgPSAkZGItPlNlbGVjdExpbWl0KCRxdWVyeTEsICRwYWdlbGltaXQsICRzdGFydGVsZW1lbnQsICRxcGFybXMpOw0Kd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7DQogICAgJG9uZXJvdyA9IGNnZV9hcnJheTo6dG9fb2JqZWN0KCRyb3cpOw0KDQogICAgLy8gbW92ZSB1cA0KICAgIGlmICgkcm93Wydwb3NpdGlvbiddID4gMSkgew0KICAgICAgICAkb25lcm93LT51cGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9tb3ZlaXRlbScsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2Fycm93LXUuZ2lmJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3VwJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2l0ZW1faWQnID0+ICRyb3dbJ2l0ZW1faWQnXSwgJ2RpcicgPT4gJ3VwJykpOw0KICAgIH0gZWxzZSB7DQogICAgICAgICRvbmVyb3ctPnVwbGluayA9ICcnOw0KICAgIH0NCg0KICAgIC8vIG1vdmUgZG93bg0KICAgIGlmICgkcG9zaXRpb24gPiAkcm93Wydwb3NpdGlvbiddKSB7DQogICAgICAgICRvbmVyb3ctPmRvd25saW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fbW92ZWl0ZW0nLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9hcnJvdy1kLmdpZicsIGdlbmVyYXRvcigpLT5MYW5nKCdkb3duJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2l0ZW1faWQnID0+ICRyb3dbJ2l0ZW1faWQnXSwgJ2RpcicgPT4gJ2Rvd24nKSk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgJG9uZXJvdy0+ZG93bmxpbmsgPSAnJzsNCiAgICB9DQoNCiAgICAvLyBhcHByb3ZlDQogICAgaWYgKCRyb3dbJ2FjdGl2ZSddKSB7DQogICAgICAgICRvbmVyb3ctPmFwcHJvdmUgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9hcHByb3ZlaXRlbScsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL3RydWUuZ2lmJywgJHRoaXMtPkxhbmcoJ3JldmVydCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdhcHByb3ZlJyA9PiAwLCAnaXRlbV9pZCcgPT4gJHJvd1snaXRlbV9pZCddKSk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgJG9uZXJvdy0+YXBwcm92ZSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2FwcHJvdmVpdGVtJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZmFsc2UuZ2lmJywgJHRoaXMtPkxhbmcoJ2FwcHJvdmUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnYXBwcm92ZScgPT4gMSwgJ2l0ZW1faWQnID0+ICRyb3dbJ2l0ZW1faWQnXSkpOw0KICAgIH0NCg0KICAgICRvbmVyb3ctPmVkaXRfdXJsID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9lZGl0aXRlbScsICRyZXR1cm5pZCwgJHJvd1sndGl0bGUnXSwgYXJyYXkoJ2l0ZW1faWQnID0+ICRyb3dbJ2l0ZW1faWQnXSksICcnLCB0cnVlKTsNCiAgICAkb25lcm93LT5lZGl0bGluayA9ICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fZWRpdGl0ZW0nLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsIGdlbmVyYXRvcigpLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2l0ZW1faWQnID0+ICRyb3dbJ2l0ZW1faWQnXSkpOw0KICAgICRvbmVyb3ctPmRlbGV0ZWxpbmsgPSAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2RlbGV0ZWl0ZW0nLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdpdGVtX2lkJyA9PiAkcm93WydpdGVtX2lkJ10pLCBnZW5lcmF0b3IoKS0+TGFuZygnYXJleW91c3VyZScpKTsNCiAgICAkb25lcm93LT5maWxlX2xvY2F0aW9uID0gZ2VuZXJhdG9yX3Rvb2xzOjpmaWxlX2xvY2F0aW9uKCRtb2QsICRyb3cpOw0KICAgICRvbmVyb3ctPmZpbGVwYXRoX2xvY2F0aW9uID0gZ2VuZXJhdG9yX3Rvb2xzOjpmaWxlcGF0aF9sb2NhdGlvbigkbW9kLCAkcm93KTsNCg0KICAgICRlbnRyeWFycmF5W10gPSAkb25lcm93Ow0KfQ0KDQokbW9kLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2l0ZW1zJywgJGVudHJ5YXJyYXkpOw0KJG1vZC0+c21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRlbnRyeWFycmF5KSk7DQoNCiRzbWFydHktPmFzc2lnbignZGF0ZV9mcm9tJywgJGRhdGVfZnJvbSk7DQokc21hcnR5LT5hc3NpZ24oJ2RhdGVfdG8nLCAkZGF0ZV90byk7DQoNCg0KJG1vZC0+c21hcnR5LT5hc3NpZ24oJ2FkZGxpbmsnLCAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2VkaXRpdGVtJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsIGdlbmVyYXRvcigpLT5MYW5nKCdhZGQnKSAuICcgJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fc2luZ3VsYXInLCAnJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSAuICcgJyAuIGdlbmVyYXRvcigpLT5MYW5nKCdhZGQnKSAuICcgJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fc2luZ3VsYXInLCAnJykpKTsNCiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdpZHRleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnaWQnKSk7DQoNCg0KJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQyJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdhZG1pbl9idWxrYWN0aW9uJywgJHJldHVybmlkKSk7DQokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQyJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7DQokYnVsa2FjdGlvbnMgPSBhcnJheSgpOw0KJGJ1bGthY3Rpb25zWydkZWxldGUnXSA9ICR0aGlzLT5MYW5nKCdkZWxldGUnKTsNCiRidWxrYWN0aW9uc1snc2V0aW5hY3RpdmUnXSA9ICR0aGlzLT5MYW5nKCdzZXRkcmFmdCcpOw0KJGJ1bGthY3Rpb25zWydzZXRhY3RpdmUnXSA9ICR0aGlzLT5MYW5nKCdzZXRwdWJsaXNoZWQnKTsNCiRzbWFydHktPmFzc2lnbignYnVsa2FjdGlvbnMnLCAkYnVsa2FjdGlvbnMpOw0KDQovLyBnZXQgdGhlIGN1c3RvbSBmaWVsZHMNCiRmaWx0ZXJzID0gbmV3IGdlbmVyYXRvcl9maWx0ZXJzKCRpZCwgJG1vZCwgJ2FkbWluJyk7DQokY3VzdG9tX2ZsZHMgPSAkZmlsdGVycy0+cHJvY2Vzc19jdXN0b21fZmllbGRzKGFycmF5KCksICRjdXN0b21fZmxkcyk7DQokY3VzdG9tX2ZsZHNfb2JqID0gJGZpbHRlcnMtPmdlbmVyYXRlKG51bGwsICRwYXJhbXMsICRjdXN0b21fZmllbGRzX3ZhbHVlcyk7DQppZiAoaXNzZXQoJGN1c3RvbV9mbGRzX29iaikgJiYgY291bnQoJGN1c3RvbV9mbGRzX29iaikgPiAwKSB7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdjdXN0b21fZmllbGRkZWYnLCAkY3VzdG9tX2ZsZHNfb2JqKTsNCn0NCg0KZWNobyAkbW9kLT5Qcm9jZXNzVGVtcGxhdGUoJ2l0ZW10YWIudHBsJyk7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/function.admin_optiontab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkNCiAgICByZXR1cm47DQoNCg0KJHNvcnRpdGVtcyA9IGFycmF5KCk7DQokc29ydGl0ZW1zWyRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fdGl0bGUnKV0gPSAndGl0bGUnOw0KJHNvcnRpdGVtc1tnZW5lcmF0b3IoKS0+TGFuZygnZGF0ZScpXSA9ICdpdGVtX2RhdGUnOw0KJHNvcnRpdGVtc1tnZW5lcmF0b3IoKS0+TGFuZygnY3JlYXRlZGRhdGUnKV0gPSAnY3JlYXRlX2RhdGUnOw0KJHNvcnRpdGVtc1tnZW5lcmF0b3IoKS0+TGFuZygnbW9kaWZpZWRkYXRlJyldID0gJ21vZGlmaWVkX2RhdGUnOw0KJHNvcnRvcmRlcnMgPSBhcnJheSgpOw0KJHNvcnRvcmRlcnNbZ2VuZXJhdG9yKCktPkxhbmcoJ2FzY2VuZGluZycpXSA9ICdhc2MnOw0KJHNvcnRvcmRlcnNbZ2VuZXJhdG9yKCktPkxhbmcoJ2Rlc2NlbmRpbmcnKV0gPSAnZGVzYyc7DQokbW9kZXMgPSBhcnJheSgpOw0KJG1vZGVzW2dlbmVyYXRvcigpLT5MYW5nKCdzaW1wbGUnKV0gPSAnc2ltcGxlJzsNCiRtb2Rlc1tnZW5lcmF0b3IoKS0+TGFuZygnYWR2YW5jZWQnKV0gPSAnYWR2YW5jZWQnOw0KDQokc29ydG9yZGVyX2FkdmFuY2VkID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnc29ydG9yZGVyX2FkdmFuY2VkJywgJ2Rlc2MnKTsNCiRzb3J0YnlfYWR2YW5jZWQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdzb3J0YnlfYWR2YW5jZWQnLCAnY3JlYXRlX2RhdGUnKTsNCg0KJHNvcnRvcmRlcl9zaW1wbGUgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdzb3J0b3JkZXJfc2ltcGxlJywgJ2Rlc2MnKTsNCiRzb3J0Ynlfc2ltcGxlID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnc29ydGJ5X3NpbXBsZScsICdwb3NpdGlvbicpOw0KDQoNCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJG1vZC0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkbWluX2VkaXRvcHRpb24nLCAkcmV0dXJuaWQpKTsNCiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsICRtb2QtPkNyZWF0ZUZvcm1FbmQoKSk7DQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICRtb2QtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsIGxhbmcoJ3N1Ym1pdCcpKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3NlYXJjaGFibGUnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X3NlYXJjaGFibGUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3NlYXJjaGFibGUnLCAkbW9kLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ3NlYXJjaGFibGUnLCAxLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdzZWFyY2hhYmxlJykpKTsNCiRzbWFydHktPmFzc2lnbignc2VhcmNoYWJsZScsICAkbW9kLT5HZXRQcmVmZXJlbmNlKCdzZWFyY2hhYmxlJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdzZWFyY2hhYmxlX2xpbmsnLCAgJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9zZWFyY2hfcmVpbmRleCcsICRyZXR1cm5pZCwgJG1vZC0+TGFuZygncmVpbmRleCcpKSk7DQoNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfc2VhcmNoX2RhdGVfZW5kJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3Byb21wdF9zZWFyY2hfZGF0ZV9lbmQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3NlYXJjaF9kYXRlX2VuZCcsICRtb2QtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnc2VhcmNoX2RhdGVfZW5kJywgMSwgJG1vZC0+R2V0UHJlZmVyZW5jZSgnc2VhcmNoX2RhdGVfZW5kJykpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfaXRlbV90aXRsZScsIGdlbmVyYXRvcigpLT5MYW5nKCdwcm9tcHRfaXRlbV90aXRsZScpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfaXRlbV90aXRsZScsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpdGVtX3RpdGxlJywgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV90aXRsZScsICcnKSwgNTApKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfaXRlbV9zaW5ndWxhcicsIGdlbmVyYXRvcigpLT5MYW5nKCdwcm9tcHRfaXRlbV9zaW5ndWxhcicpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfaXRlbV9zaW5ndWxhcicsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpdGVtX3Npbmd1bGFyJywgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9zaW5ndWxhcicsICcnKSwgNTApKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfaXRlbV9wbHVyYWwnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X2l0ZW1fcGx1cmFsJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pdGVtX3BsdXJhbCcsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpdGVtX3BsdXJhbCcsICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fcGx1cmFsJywgJycpLCA1MCkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9mcmllbmRseW5hbWUnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X2ZyaWVuZGx5bmFtZScpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfZnJpZW5kbHluYW1lJywgJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2ZyaWVuZGx5bmFtZScsICRtb2QtPkdldFByZWZlcmVuY2UoJ2ZyaWVuZGx5bmFtZScsICcnKSwgNTApKTsNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2NhdGVnb3J5X2V4dHJhX2xhYmVsJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3Byb21wdF9jYXRlZ29yeV9leHRyYV9sYWJlbCcpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfY2F0ZWdvcnlfZXh0cmFfbGFiZWwnLCAkbW9kLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnY2F0ZWdvcnlfZXh0cmFfbGFiZWwnLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdjYXRlZ29yeV9leHRyYV9sYWJlbCcsICRtb2QtPkxhbmcoJ2V4dHJhJykpLCA1MCkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2NhdGVnb3J5X2V4dHJhMl9sYWJlbCcsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdjYXRlZ29yeV9leHRyYTJfbGFiZWwnLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdjYXRlZ29yeV9leHRyYTJfbGFiZWwnLCAkbW9kLT5MYW5nKCdleHRyYTInKSksIDUwKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3VybF9wcmVmaXgnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X3VybF9wcmVmaXgnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3VybF9wcmVmaXgnLCAkbW9kLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAndXJsX3ByZWZpeCcsICRtb2QtPkdldFByZWZlcmVuY2UoJ3VybF9wcmVmaXgnLCAnJyksIDUwKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2RlZmF1bHRfYWN0aW9uX3BhcmFtcycsIGdlbmVyYXRvcigpLT5MYW5nKCdwcm9tcHRfZGVmYXVsdF9hY3Rpb25fcGFyYW1zJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9kZWZhdWx0X2FjdGlvbl9wYXJhbXMnLCAkbW9kLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZGVmYXVsdF9hY3Rpb25fcGFyYW1zJywgJG1vZC0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9hY3Rpb25fcGFyYW1zJywgJycpLCA1MCkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9kZXRhaWxfYWN0aW9uX3BhcmFtcycsIGdlbmVyYXRvcigpLT5MYW5nKCdwcm9tcHRfZGV0YWlsX2FjdGlvbl9wYXJhbXMnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2RldGFpbF9hY3Rpb25fcGFyYW1zJywgJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2RldGFpbF9hY3Rpb25fcGFyYW1zJywgJG1vZC0+R2V0UHJlZmVyZW5jZSgnZGV0YWlsX2FjdGlvbl9wYXJhbXMnLCAnJyksIDUwKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3RpdGxlX3BhcmFtX2Zvcl9jYWNoZScsIGdlbmVyYXRvcigpLT5MYW5nKCdwcm9tcHRfdGl0bGVfcGFyYW1fZm9yX2NhY2hlJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF90aXRsZV9wYXJhbV9mb3JfY2FjaGUnLCAkbW9kLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAndGl0bGVfcGFyYW1fZm9yX2NhY2hlJywgJG1vZC0+R2V0UHJlZmVyZW5jZSgndGl0bGVfcGFyYW1fZm9yX2NhY2hlJywgJycpLCA1MCkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9kaXNwbGF5X2lubGluZScsIGdlbmVyYXRvcigpLT5MYW5nKCdwcm9tcHRfZGlzcGxheV9pbmxpbmUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2Rpc3BsYXlfaW5saW5lJywgJG1vZC0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdkaXNwbGF5X2lubGluZScsIDEsICRtb2QtPkdldFByZWZlcmVuY2UoJ2Rpc3BsYXlfaW5saW5lJykpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfbGF6eWxvYWRpbmcnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X2xhenlsb2FkaW5nJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9sYXp5bG9hZGluZycsICRtb2QtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnbGF6eWxvYWRpbmcnLCAxLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdsYXp5bG9hZGluZycpKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3VzZXJncm91cF9kZXBlbmRlbmNlJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3Byb21wdF91c2VyZ3JvdXBfZGVwZW5kZW5jZScpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfdXNlcmdyb3VwX2RlcGVuZGVuY2UnLCAkbW9kLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ3VzZXJncm91cF9kZXBlbmRlbmNlJywgMSwgJG1vZC0+R2V0UHJlZmVyZW5jZSgndXNlcmdyb3VwX2RlcGVuZGVuY2UnKSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9oYXNfYWRtaW4nLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X2hhc19hZG1pbicpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfaGFzX2FkbWluJywgJG1vZC0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdoYXNfYWRtaW4nLCAxLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdoYXNfYWRtaW4nKSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9pdGVtX3RpdGxlX2VkaXQnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X2l0ZW1fdGl0bGVfZWRpdCcpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfaXRlbV90aXRsZV9lZGl0JywgJG1vZC0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdpdGVtX3RpdGxlX2VkaXQnLCAxLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3RpdGxlX2VkaXQnKSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9pdGVtX2FsaWFzX2VkaXQnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X2l0ZW1fYWxpYXNfZWRpdCcpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfaXRlbV9hbGlhc19lZGl0JywgJG1vZC0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdpdGVtX2FsaWFzX2VkaXQnLCAxLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2FsaWFzX2VkaXQnKSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9pdGVtX3VybF9lZGl0JywgZ2VuZXJhdG9yKCktPkxhbmcoJ3Byb21wdF9pdGVtX3VybF9lZGl0JykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pdGVtX3VybF9lZGl0JywgJG1vZC0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdpdGVtX3VybF9lZGl0JywgMSwgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV91cmxfZWRpdCcpKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2l0ZW1fZGF0ZV9lZGl0JywgZ2VuZXJhdG9yKCktPkxhbmcoJ3Byb21wdF9pdGVtX2RhdGVfZWRpdCcpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfaXRlbV9kYXRlX2VkaXQnLCAkbW9kLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2l0ZW1fZGF0ZV9lZGl0JywgMSwgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kYXRlX2VkaXQnKSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9pdGVtX2RhdGVfZW5kX2VkaXQnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X2l0ZW1fZGF0ZV9lbmRfZWRpdCcpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfaXRlbV9kYXRlX2VuZF9lZGl0JywgJG1vZC0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdpdGVtX2RhdGVfZW5kX2VkaXQnLCAxLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2RhdGVfZW5kX2VkaXQnKSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9pdGVtX2NhdGVnb3J5X2VkaXQnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X2l0ZW1fY2F0ZWdvcnlfZWRpdCcpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfaXRlbV9jYXRlZ29yeV9lZGl0JywgJG1vZC0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdpdGVtX2NhdGVnb3J5X2VkaXQnLCAxLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2NhdGVnb3J5X2VkaXQnLCAwKSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9yZWN1cnNpdmUnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X3JlY3Vyc2l2ZScpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfcmVjdXJzaXZlJywgJG1vZC0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdyZWN1cnNpdmUnLCAxLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdyZWN1cnNpdmUnLCAwKSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9maWx0ZXJfZGF0ZScsIGdlbmVyYXRvcigpLT5MYW5nKCdwcm9tcHRfZmlsdGVyX2RhdGUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2ZpbHRlcl9kYXRlJywgJG1vZC0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdmaWx0ZXJfZGF0ZScsIDEsICRtb2QtPkdldFByZWZlcmVuY2UoJ2ZpbHRlcl9kYXRlJykpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfbW9kZScsIGdlbmVyYXRvcigpLT5MYW5nKCdtb2RlJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfYWR2YW5jZWQnLCBnZW5lcmF0b3IoKS0+TGFuZygnYWR2YW5jZWQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9zaW1wbGUnLCBnZW5lcmF0b3IoKS0+TGFuZygnc2ltcGxlJykpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9zdW1tYXJ5X3NvcnRpbmcnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X3N1bW1hcnlfc29ydGluZycpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfc3VtbWFyeV9zb3J0aW5nX2FkdmFuY2VkJywgJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdzb3J0YnlfYWR2YW5jZWQnLCAkc29ydGl0ZW1zLCAtMSwgJHNvcnRieV9hZHZhbmNlZCkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9zdW1tYXJ5X3NvcnRvcmRlcicsIGdlbmVyYXRvcigpLT5MYW5nKCdwcm9tcHRfc3VtbWFyeV9zb3J0b3JkZXInKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3N1bW1hcnlfc29ydG9yZGVyX2FkdmFuY2VkJywgJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdzb3J0b3JkZXJfYWR2YW5jZWQnLCAkc29ydG9yZGVycywgLTEsICRzb3J0b3JkZXJfYWR2YW5jZWQpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfc3VtbWFyeV9wYWdlbGltaXQnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X3N1bW1hcnlfcGFnZWxpbWl0JykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zdW1tYXJ5X3BhZ2VsaW1pdF9hZHZhbmNlZCcsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdzdW1tYXJ5X3BhZ2VsaW1pdF9hZHZhbmNlZCcsICRtb2QtPkdldFByZWZlcmVuY2UoJ3N1bW1hcnlfcGFnZWxpbWl0X2FkdmFuY2VkJywgMjUpLCA1LCA1KSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3N1bW1hcnlfc29ydGluZycsIGdlbmVyYXRvcigpLT5MYW5nKCdwcm9tcHRfc3VtbWFyeV9zb3J0aW5nJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zdW1tYXJ5X3NvcnRpbmdfc2ltcGxlJywgJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3NvcnRieV9zaW1wbGUnLCAncG9zaXRpb24nLCA1MCwgMjU1LCAnZGlzYWJsZWQ9ImRpc2FibGVkIicpDQopOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9zdW1tYXJ5X3NvcnRvcmRlcicsIGdlbmVyYXRvcigpLT5MYW5nKCdwcm9tcHRfc3VtbWFyeV9zb3J0b3JkZXInKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3N1bW1hcnlfc29ydG9yZGVyX3NpbXBsZScsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdzb3J0b3JkZXJfc2ltcGxlJywgJ2Rlc2MnLCA1LCA1LCAnZGlzYWJsZWQ9ImRpc2FibGVkIicpDQopOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9zdW1tYXJ5X3BhZ2VsaW1pdCcsIGdlbmVyYXRvcigpLT5MYW5nKCdwcm9tcHRfc3VtbWFyeV9wYWdlbGltaXQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3N1bW1hcnlfcGFnZWxpbWl0X3NpbXBsZScsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdzdW1tYXJ5X3BhZ2VsaW1pdF9zaW1wbGUnLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdzdW1tYXJ5X3BhZ2VsaW1pdF9zaW1wbGUnLCAyNSksIDUsIDUsICdkaXNhYmxlZD0iZGlzYWJsZWQiJykpOw0KDQokY29udGVudG9wcyA9IGNtc21zKCktPkdldENvbnRlbnRPcGVyYXRpb25zKCk7DQoNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfaXRlbV9kZXRhaWxfcmV0dXJuaWQnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X2l0ZW1fZGV0YWlsX3JldHVybmlkJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pdGVtX2RldGFpbF9yZXR1cm5pZCcsICRjb250ZW50b3BzLT5DcmVhdGVIaWVyYXJjaHlEcm9wZG93bignJywgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kZXRhaWxfcmV0dXJuaWQnLCAtMSksICRpZCAuICdpdGVtX2RldGFpbF9yZXR1cm5pZCcpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfaXRlbV9jYXRlZ29yeV9yZXR1cm5pZCcsIGdlbmVyYXRvcigpLT5MYW5nKCdwcm9tcHRfaXRlbV9jYXRlZ29yeV9yZXR1cm5pZCcpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfaXRlbV9jYXRlZ29yeV9yZXR1cm5pZCcsICRjb250ZW50b3BzLT5DcmVhdGVIaWVyYXJjaHlEcm9wZG93bignJywgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9jYXRlZ29yeV9yZXR1cm5pZCcsIC0xKSwgJGlkIC4gJ2l0ZW1fY2F0ZWdvcnlfcmV0dXJuaWQnKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2N1c3RvbV9maWVsZHNfZGVmYXVsdCcsIGdlbmVyYXRvcigpLT5MYW5nKCdwcm9tcHRfY3VzdG9tX2ZpZWxkc19kZWZhdWx0X2FkbWluJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdjdXN0b21fZmllbGRzX2RlZmF1bHQnLCBleHBsb2RlKCcsJywkbW9kLT5HZXRQcmVmZXJlbmNlKCdjdXN0b21fZmllbGRzX2RlZmF1bHQnKSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X21vZGUnLCAkbW9kLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ21vZGUnLCAkbW9kZXMsIC0xLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdtb2RlJywgJ2FkdmFuY2VkJykpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9wcmV2aWV3X2FkbWluJywgJG1vZC0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdwcmV2aWV3X2FkbWluJywgMSwgJG1vZC0+R2V0UHJlZmVyZW5jZSgncHJldmlld19hZG1pbicpKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2NvcHlfYWRtaW4nLCAkbW9kLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2NvcHlfYWRtaW4nLCAxLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdjb3B5X2FkbWluJykpKTsNCg0KZWNobyAkbW9kLT5Qcm9jZXNzVGVtcGxhdGUoJ29wdGlvbnRhYi50cGwnKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/function.admin_templatetab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkNCiAgICByZXR1cm47DQokYWRtaW50aGVtZSA9IGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpOw0KDQokcXVlcnkgPSAnU0VMRUNUIHRwbF9pZCwgbmFtZSwgY29udGVudCwgdHlwZSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfdGVtcGxhdGUnOw0KJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KJGl0ZW1zID0gQXJyYXkoKTsNCiRyb3djbGFzcyA9ICdyb3cxJzsNCg0Kd2hpbGUgKCRyZXN1bHQgJiYgJHJvdyA9ICRyZXN1bHQtPkZldGNoUm93KCkpIHsNCiAgICAkdG1wID0gbmV3IFN0ZENsYXNzKCk7DQogICAgJHRtcC0+bGluayA9ICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fZWRpdHRlbXBsYXRlJywgJHJldHVybmlkLCAkcm93WyduYW1lJ10sIGFycmF5KCd0cGxfaWQnID0+ICRyb3dbJ3RwbF9pZCddKSk7DQogICAgJHRtcC0+ZGVsZXRlID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9kZWxldGV0ZW1wbGF0ZScsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCBnZW5lcmF0b3IoKS0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3RwbF9pZCcgPT4gJHJvd1sndHBsX2lkJ10pLCBnZW5lcmF0b3IoKS0+TGFuZygnYXJleW91c3VyZScpKTsNCiAgICAkdG1wLT5lZGl0ID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9lZGl0dGVtcGxhdGUnLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsIGdlbmVyYXRvcigpLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3RwbF9pZCcgPT4gJHJvd1sndHBsX2lkJ10pKTsNCiAgICAkdG1wLT5yb3djbGFzcyA9ICRyb3djbGFzczsNCg0KICAgICRpID0gaXNzZXQoJGl0ZW1zWyRyb3dbJ3R5cGUnXV0pID8gY291bnQoJGl0ZW1zWyRyb3dbJ3R5cGUnXV0pIDogMDsNCiAgICAkaXRlbXNbJHJvd1sndHlwZSddXVskaV0gPSAkdG1wOw0KDQogICAgJHJvd2NsYXNzID0gKCRyb3djbGFzcyA9PSAncm93MScgPyAncm93MicgOiAncm93MScpOw0KfQ0KDQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRpdGVtcykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRpdGVtcyk7DQokc21hcnR5LT5hc3NpZ24oJ2RldGFpbHRlbXBsYXRlcycsIGdlbmVyYXRvcigpLT5MYW5nKCdkZXRhaWx0ZW1wbGF0ZXMnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3N1bW1hcnl0ZW1wbGF0ZXMnLCBnZW5lcmF0b3IoKS0+TGFuZygnc3VtbWFyeXRlbXBsYXRlcycpKTsNCiRzbWFydHktPmFzc2lnbignaGVhZGVyX25hbWUnLCBnZW5lcmF0b3IoKS0+TGFuZygndGVtcGxhdGUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2FkZGRldGFpbGxpbmsnLCAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCBnZW5lcmF0b3IoKS0+TGFuZygnYWRkdGVtcGxhdGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpIC4gJyAnIC4gc3ByaW50ZihnZW5lcmF0b3IoKS0+TGFuZygnYWRkdGVtcGxhdGUnKSwgJ0RldGFpbCcpLCBhcnJheSgndHlwZScgPT4gJ2RldGFpbCcpKSk7DQokc21hcnR5LT5hc3NpZ24oJ2FkZHN1bW1hcnlsaW5rJywgJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9lZGl0dGVtcGxhdGUnLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2FkZHRlbXBsYXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSAuICcgJyAuIHNwcmludGYoZ2VuZXJhdG9yKCktPkxhbmcoJ2FkZHRlbXBsYXRlJyksICdTdW1tYXJ5JyksIGFycmF5KCd0eXBlJyA9PiAnc3VtbWFyeScpKSk7DQoNCmVjaG8gJG1vZC0+UHJvY2Vzc1RlbXBsYXRlKCd0ZW1wbGF0ZXRhYi50cGwnKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ModuleLib/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KJGRpciA9IHN0cl9yZXBsYWNlKCdcXCcgLCAnLycsIGRpcm5hbWUoX19GSUxFX18pKTsNCmluY2x1ZGUoc3RyX3JlcGxhY2UoJ01vZHVsZUxpYicuRElSRUNUT1JZX1NFUEFSQVRPUiwnJywgIF9fRklMRV9fKSk7DQoNCiRsYW5nWydwb3N0aW5zdGFsbCddID0gJG1vZHVsZV9uYW1lIC4gJyBoYXMgc3VjY2Vzc2Z1bGx5IGJlZW4gaW5zdGFsbGVkJzsNCiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAkbW9kdWxlX25hbWUuICcgaGFzIHN1Y2Nlc3NmdWxseSBiZWVuIHVuaW5zdGFsbGVkJzsNCiRsYW5nWyRtb2R1bGVfYWxpYXMgLiAnX21vZGlmeV9pdGVtJ10gPSAkbW9kdWxlX25hbWUgLiAnOiBNb2RpZnkgSXRlbXMnOw0KJGxhbmdbJG1vZHVsZV9hbGlhcyAuICdfbW9kaWZ5X2NhdGVnb3JpZXMnXSA9ICRtb2R1bGVfbmFtZSAuICc6IE1vZGlmeSBDYXRlZ29yaWVzJzsNCiRsYW5nWyRtb2R1bGVfYWxpYXMgLiAnX21vZGlmeV9vcHRpb24nXSA9ICRtb2R1bGVfbmFtZSAuICc6IE1vZGlmeSBPcHRpb25zJzsNCiRsYW5nWyRtb2R1bGVfYWxpYXMgLiAnX2FsbF9jYXRlZ29yeV92aXNiaWxlJ10gPSAkbW9kdWxlX25hbWUgLiAnOiBhbGwgY2F0ZWdvcnkgdmlzaWJsZSc7DQokbGFuZ1snY2hhbmdlbG9nJ10gPSAnICAgICc7DQoNCg0KIyMgcGVybXMNCiRsYW5nWydtb2RpZnlfaXRlbSddID0gJG1vZHVsZV9uYW1lLic6IG1vZGlmeSBpdGVtJzsNCiRsYW5nWydtb2RpZnlfb3B0aW9uJ10gPSAkbW9kdWxlX25hbWUuJzogbW9kaWZ5IG9wdGlvbic7DQokbGFuZ1snbW9kaWZ5X2NhdGVnb3JpZXMnXSA9ICRtb2R1bGVfbmFtZS4nOiBtb2RpZnkgY2F0ZWdvcmllcyc7DQokbGFuZ1snYWxsX2NhdGVnb3J5X3Zpc2JpbGUnXSA9ICRtb2R1bGVfbmFtZS4nOiBhbGwgY2F0ZWdvcnkgdmlzaWJsZSc7DQoNCg0KLy8gbW9kdWxlIGhlbHANCiRsYW5nWydoZWxwJ10gPSA8PDxFT1QNCjxkaXYgaWQ9InBhZ2VfdGFicyI+ICAgICANCiAgPGRpdiBpZD0iZ2VuZXJhbCI+DQogICAgR2VuZXJhbCBJbmZvICAgDQogIDwvZGl2PiAgICAgDQogIDxkaXYgaWQ9InVzYWdlIj4NCiAgICBVc2FnZSAgIA0KICA8L2Rpdj4gICAgIA0KICA8ZGl2IGlkPSJwZXJtaXNzaW9ucyI+DQogICAgUGVybWlzc2lvbnMgICANCiAgPC9kaXY+ICAgICANCiAgPGRpdiBpZD0iZmllbGQiPg0KICAgIEZpZWxkIERlZmluaXRpb25zICAgDQogIDwvZGl2PiAgICAgDQogIDxkaXYgaWQ9ImNhdGVnb3JpZXMiPg0KICAgIENhdGVnb3JpZXMgICANCiAgPC9kaXY+ICAgICANCiAgPGRpdiBpZD0iZXhhbXBsZXMiPg0KICAgIEV4YW1wbGVzICAgDQogIDwvZGl2PiAgICAgDQo8L2Rpdj4gICANCjxkaXYgY2xhc3M9ImNsZWFyYiI+ICANCjwvZGl2Pg0KPGRpdiBpZD0icGFnZV9jb250ZW50Ij4gIA0KICA8ZGl2IGlkPSJnZW5lcmFsX2MiPgk8aDM+R2VuZXJhbCBJbmZvPC9oMz4JCQ0KICAgIDxwPlNpbXBseSBwdXQsIExpc3RJdCBhbGxvd3MgeW91IHRvIGNyZWF0ZSBsaXN0cyB0aGF0IHlvdSBjYW4gZGlzcGxheSB0aHJvdWdob3V0IHlvdXIgd2Vic2l0ZS4gWW91IGNvdWxkIG1ha2UgYSBzaW1wbGUgRkFRIG9yIFRlc3RpbW9uaWFscyBmZWF0dXJlIHdpdGggdGhpcyBtb2R1bGUuIFRoZSB3ZWIgZGV2ZWxvcGVyIGRlZmluZXMgZmllbGRzIHRvIGNvbnN0cmFpbiB3aGF0IGRhdGEgdGhlIGNsaWVudCBjYW4gZW50ZXIuIEEgbnVtYmVyIG9mIGZpZWxkIHR5cGVzIGNhbiBiZSBzcGVjaWZpZWQgLSB0ZXh0IGlucHV0LCBjaGVja2JveCwgdGV4dCBhcmVhLCBzZWxlY3QgZGF0ZSwgdXBsb2FkIGZpbGUsIHNlbGVjdCBmaWxlLCBkcm9wZG93biAtIGFuZCBhZGRpdGlvbmFsIGluc3RydWN0aW9ucyBjYW4gYmUgc2V0IGZvciBlYWNoIHR5cGUsIGZvciBleGFtcGxlLCBpbnB1dCBmaWVsZCBzaXplLCBtYXggbGVuZ3RoLCBXWVNJV1lHIGVkaXRvciwgcG9zc2libGUgZHJvcCBkb3duIHZhbHVlcywgcG9zc2libGUgZmlsZSBleHRlbnNpb25zLCBkaXJlY3RvcnkgcGF0aHMgZm9yIGZpbGUgc2VsZWN0aW9ucywgZGF0ZSBmb3JtYXRzLCBldGMuDQogICAgPC9wPg0KICAgIDxwPkFuIGltcG9ydGFudCBub3RlIG9mIHdhcm5pbmcgLSBUaGlzIGlzIG5vdCBhIGNvbnRlbnQgY29uc3RydWN0aW9uIGtpdCwgc3VjaCBhcyBpbiBEcnVwYWwuIEl0IGlzIG1lYW50IGZvciBzbWFsbCBsaXN0aW5ncywgbm90IHRvIHN0b3JlIHRob3VzYW5kcyBvZiByZWNvcmRzLiBUaGlzIGlzIGJlY2F1c2Ugb2YgdGhlIGRhdGFiYXNlIG1vZGVsIHVzZWQgKEVBVikuIEFsc28sIGVhY2ggYml0IG9mIGRhdGEgeW91IGVudGVyIGlzIHN0b3JlZCBhcyBURVhUIGRhdGEgdHlwZSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGlzIHZhcmNoYXIsIGJvb2xlYW4sIHRpbWVzdGFtcCwgZXRjLiBUaGlzIGlzIGEgcmVzdHJpY3Rpb24gb2YgYSBzaG9ydCBkZXZlbG9wbWVudCB0aW1lIGZyYW1lLg0KICAgIDwvcD4JDQogIDwvZGl2PgkNCiAgPGRpdiBpZD0idXNhZ2VfYyI+CQkNCiAgICA8aDM+VXNhZ2U8L2gzPgkJCQ0KICAgICAgPHA+WW91IGNhbiBjb25maWd1cmUgeyRtb2R1bGVfbmFtZX0gaGVyZTogQ29udGVudCA+IHskbW9kdWxlX25hbWV9DQogICAgICA8L3A+CQkJDQogICAgPHA+UGxhY2UgdGhpcyB0YWcgaW4geW91ciBwYWdlOjxiciAvPgkNCiAgICB7eyRtb2R1bGVfbmFtZX19DQogICAgPC9wPgkJDQogICAgPGRpdj4JCQkNCiAgICAgIDxkaXYgc3R5bGU9ImZsb2F0OmxlZnQ7Ij4NCiAgICAgICAgQWZ0ZXIgaW5zdGFsbGluZyB0aGUgbW9kdWxlIHRoZSBuZXh0IHRoaW5nIHRvIGRvIGlzIHNldCB0aGUgb3B0aW9ucy4gIAkJCQkNCiAgICAgICAgPG9sPgkJCQkJDQogICAgICAgICAgPGxpPlRvIGNoYW5nZSB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIGluIHRoZSBtZW51IGNoYW5nZSB0aGUgJ01vZHVsZSBGcmllbmRseSBOYW1lJy4NCiAgICAgICAgICA8L2xpPgkJCQkJDQogICAgICAgICAgPGxpPlRvIGNoYW5nZSB0aGUgbmFtZSBvZiB0aGUgaXRlbSB0YWIgY2hhbmdlIHRoZSAnSXRlbSBQbHVyYWwnLg0KICAgICAgICAgIDwvbGk+CQkJCQ0KICAgICAgICA8L29sPgkJDQogICAgICA8L2Rpdj4NCiAgICAgIDxiciBzdHlsZT0iY2xlYXI6Ym90aDsiIC8+CQkNCiAgICA8L2Rpdj4JCQ0KICAgIDxkaXY+DQogICAgICA8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+DQogICAgICAgIE5leHQgLSBzZXQgdGhlIEZpZWxkIERlZmluaXRpb25zLiANCiAgICAgICAgPG9sPg0KICAgICAgICAgIDxsaT5DaG9vc2UgZnJvbSAnVGV4dCBJbnB1dCcsICdDaGVja2JveCcsICdUZXh0IEFyZWEnLCAnU2VsZWN0IERhdGUnLCAnVXBsb2FkIEZpbGUnLCAnU2VsZWN0IEZpbGUnICYgJ0Ryb3Bkb3duJy4NCiAgICAgICAgICA8L2xpPg0KICAgICAgICAgIDxsaT5Gb3IgZWFjaCBmaWVsZCBkZWZpbml0aW9uLCB5b3UgY2FuIHNwZWNpZnkgYWRkaXRpb25hbCBpbnN0cnVjdGlvbnMgaW4gdGhlICdleHRyYScgZmllbGQuIFNlZSB0aGUgJ0ZpZWxkIERlZmluaXRpb25zJyB0YWIgZm9yIGEgbGlzdC4NCiAgICAgICAgICA8L2xpPg0KICAgICAgICAgIDxsaT5FYWNoIGl0ZW0gaW4gZWFjaCBsaXN0IGhhcyB0aHJlZSBkZWZhdWx0IGZpZWxkcy4gQWxsIEZpZWxkIERlZmluaXRpb25zIHNldCBoZXJlIGFyZSBhZGRpdGlvbmFsIHRvIHRoZW0uDQogICAgICAgICAgPC9saT4NCiAgICAgICAgPC9vbD4NCiAgICAgIDwvZGl2PjxiciBzdHlsZT0iY2xlYXI6Ym90aDsiIC8+DQogICAgPC9kaXY+DQogICAgICAgIDxkaXY+DQogICAgICANCiAgICAgIDxkaXYgc3R5bGU9ImZsb2F0OmxlZnQ7Ij4NCiAgICAgICAgTm93IHdlIG1vdmUgb24gdG8gdGhlIEl0ZW0gbGlzdCBpdHNlbGYuIEluIHRoaXMgZXhhbXBsZSBpdCBzYXlzICdBZGQgQm94JywgdGhpcyB3YXMgcmVuYW1lZCBpbiB0aGUgJ09wdGlvbnMnIHRhYi4gDQogICAgICAgIDxvbD4NCiAgICAgICAgICA8bGk+VGhlIGZpcnN0IGZpZWxkIGlzIHRoZSBkZWZhdWx0ICdUaXRsZScgZmllbGQuDQogICAgICAgICAgPC9saT4NCiAgICAgICAgICA8bGk+VGhlICdDYXRlZ29yeScgZHJvcGRvd24gaXMgYWxzbyBhIGRlZmF1bHQgZmllbGQsIGFuZCBpZiB1bmNoYW5nZWQsIHdpbGwgYmUgc2V0IHRvICdHZW5lcmFsJy4NCiAgICAgICAgICA8L2xpPg0KICAgICAgICAgIDxsaT5UaGUgdGhpcmQgZGVmYXVsdCBmaWVsZCBpcyB0aGUgY2hlY2tib3ggY2FsbGVkICdBY3RpdmUnLiBUaGlzIGFsbG93cyB5b3UgdG8gdG9nZ2xlIGEgbGlzdCBlbnRyeSB3aXRob3V0IGRlbGV0aW5nIGl0Lg0KICAgICAgICAgIDwvbGk+DQogICAgICAgIDwvb2w+DQogICAgICA8L2Rpdj48YnIgc3R5bGU9ImNsZWFyOmJvdGg7IiAvPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgc3R5bGU9ImNsZWFyOmJvdGg7IiAvPg0KICAgIDwvZGl2Pg0KICA8L2Rpdj4NCiAgPGRpdiBpZD0icGVybWlzc2lvbnNfYyI+PGgzPlBlcm1pc3Npb25zPC9oMz4NCiAgICA8cD5Zb3UgY2FuIHNwZWNpZnkgdGhlIGZvbGxvd2luZyBwZXJtaXNzaW9ucyB1bmRlciBVc2VycyAmIEdyb3VwcyA+IEdyb3VwIFBlcm1pc3Npb25zDQogICAgPC9wPg0KICAgIDx1bD4NCiAgICAgIDxsaT57JG1vZHVsZV9uYW1lfTogbW9kaWZ5IEl0ZW1zDQogICAgICA8L2xpPg0KICAgICAgPGxpPnskbW9kdWxlX25hbWV9OiBtb2RpZnkgQ2F0ZWdvcmllcw0KICAgICAgPC9saT4NCiAgICAgIDxsaT57JG1vZHVsZV9uYW1lfTogbW9kaWZ5IE9wdGlvbnMNCiAgICAgIDwvbGk+DQogICAgICA8bGk+eyRtb2R1bGVfbmFtZX06IGFsbCBjYXRlZ29yeSB2aXNpYmxlDQogICAgICA8L2xpPg0KICAgIDwvdWw+DQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJmaWVsZF9jIj48aDM+RmllbGQgRGVmaW5pdGlvbnM8L2gzPg0KICAgIDxwPlRoZSBmaXJzdCB0aGluZyB5b3Ugc2hvdWxkIGNvbmZpZ3VyZSBhcmUgeW91ciBmaWVsZCBkZWZpbml0aW9ucy4NCiAgICA8L3A+DQogICAgPHA+Rm9yIGVhY2ggZmllbGQgZGVmaW5pdGlvbiwgeW91IGNhbiBzcGVjaWZ5IGFkZGl0aW9uYWwgaW5zdHJ1Y3Rpb25zIGluIHRoZSAiZXh0cmEiIGZpZWxkLg0KICAgIDwvcD4NCiAgICA8dWw+ICAgIA0KICAgICAgPGxpPiAgICAgICAgDQogICAgICA8cD5JbnN0cnVjdGlvbjogDQogICAgICAgIDxjb2RlPnNpemVbMjBdDQogICAgICAgIDwvY29kZT48YnIgLz4NCiAgICAgICAgUG9zc2libGUgdmFsdWU6IGludGVnZXI8YnIgLz4NCiAgICAgICAgQXBwbGljYWJsZSB0bzogVGV4dCBJbnB1dCwgU2VsZWN0IERhdGUNCiAgICAgIDwvcD4gICAgDQogICAgICA8L2xpPiAgICANCiAgICAgIDxsaT4gICAgICAgIA0KICAgICAgPHA+SW5zdHJ1Y3Rpb246IA0KICAgICAgICA8Y29kZT5tYXhfbGVuZ3RoWzIwXQ0KICAgICAgICA8L2NvZGU+PGJyIC8+DQogICAgICAgIFBvc3NpYmxlIHZhbHVlOiBpbnRlZ2VyPGJyIC8+DQogICAgICAgIEFwcGxpY2FibGUgdG86IFRleHQgSW5wdXQsIFRleHQgQXJlYSwgU2VsZWN0IERhdGUNCiAgICAgIDwvcD4gICAgDQogICAgICA8L2xpPiAgDQogICAgICA8bGk+ICAgICAgICANCiAgICAgIDxwPkluc3RydWN0aW9uOiANCiAgICAgICAgPGNvZGU+d3lzaXd5Z1sxXQ0KICAgICAgICA8L2NvZGU+PGJyIC8+DQogICAgICAgIFBvc3NpYmxlIHZhbHVlOiAxfDB8dHJ1ZXxmYWxzZTxiciAvPg0KICAgICAgICBBcHBsaWNhYmxlIHRvOiBUZXh0IEFyZWENCiAgICAgIDwvcD4gICAgDQogICAgICA8L2xpPiAgICANCiAgICAgIDxsaT4gICAgICAgIA0KICAgICAgPHA+SW5zdHJ1Y3Rpb246IA0KICAgICAgICA8Y29kZT5vcHRpb25zW2FwcGxlPUFwcGxlLGJhbmFuYT1CYW5hbmFdDQogICAgICAgIDwvY29kZT48YnIgLz4NCiAgICAgICAgUG9zc2libGUgdmFsdWU6IGtleT12YWx1ZSwuLi4gb3Ige2Ntc19tb2R1bGV9IHRhZyB3aXRoIHNpbWlsYXIgb3V0cHV0IGV0Yy4ge2Ntc19nYWxsZXJ5IG1vZHVsZT1HYWxsZXJ5IHRlbXBsYXRlPXNlbGVjdGVib3h9PGJyIC8+DQogICAgICAgIEFwcGxpY2FibGUgdG86IERyb3Bkb3duDQogICAgICA8L3A+ICAgIA0KICAgICAgPC9saT4gICAgDQogICAgICA8bGk+ICAgICAgICANCiAgICAgIDxwPkluc3RydWN0aW9uOiANCiAgICAgICAgPGNvZGU+TW9kdWxlbmFtZVthY3Rpb249ZGVmYXVsdCxzb3J0Ynk9dGl0bGUsc29ydG9yZGVyPWRlc2NdDQogICAgICAgIDwvY29kZT48YnIgLz4NCiAgICAgICAgUG9zc2libGUgdmFsdWU6IGV2ZXJ5dGhpbmcgeW91IHVzZWQgaW4gbW9kdWxlDQogICAgICAgIEFwcGxpY2FibGUgdG86IE1vZHVsZQ0KICAgICAgPC9wPiAgICANCiAgICAgIDwvbGk+ICAgIA0KICAgICAgPGxpPiAgICAgICAgDQogICAgICA8cD5JbnN0cnVjdGlvbjogDQogICAgICAgIDxjb2RlPm11bHRpcGxlWzVdDQogICAgICAgIDwvY29kZT48YnIgLz4NCiAgICAgICAgUG9zc2libGUgdmFsdWU6IGludGVnZXI8YnIgLz4NCiAgICAgICAgQXBwbGljYWJsZSB0bzogTW9kdWxlDQogICAgICA8L3A+ICAgIA0KICAgICAgPC9saT4gIA0KICAgICAgPGxpPiAgICAgICAgDQogICAgICA8cD5JbnN0cnVjdGlvbjogDQogICAgICAgIDxjb2RlPmFsbG93W3BkZixnaWYscG5nLGpwZWcsanBnXQ0KICAgICAgICA8L2NvZGU+PGJyIC8+DQogICAgICAgIFBvc3NpYmxlIHZhbHVlOiBleHRlbnNpb24sLi4uIChrZWVwIGxvd2VyY2FzZSk8YnIgLz4NCiAgICAgICAgQXBwbGljYWJsZSB0bzogVXBsb2FkIEZpbGUsIFNlbGVjdCBGaWxlDQogICAgICA8L3A+ICAgIA0KICAgICAgPC9saT4gICAgDQogICAgICA8bGk+ICAgICAgICANCiAgICAgIDxwPkluc3RydWN0aW9uOiANCiAgICAgICAgPGNvZGU+ZGlyWy9wYXRoL3RvL2Rpcl0NCiAgICAgICAgPC9jb2RlPjxiciAvPg0KICAgICAgICBQb3NzaWJsZSB2YWx1ZTogRGlyZWN0b3J5IHBhdGggdGhhdCB3aWxsIGJlIGFwcGVuZGVkIHRvIA0KICAgICAgICA8Y29kZT5cJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10NCiAgICAgICAgPC9jb2RlPi4gTm8gc2xhc2ggYXQgdGhlIGVuZC48YnIgLz4NCiAgICAgICAgQXBwbGljYWJsZSB0bzogU2VsZWN0IEZpbGUNCiAgICAgIDwvcD4gICAgDQogICAgICA8L2xpPiAgICANCiAgICAgIDxsaT4gICAgICAgIA0KICAgICAgPHA+SW5zdHJ1Y3Rpb246IA0KICAgICAgICA8Y29kZT5leGNsdWRlX3ByZWZpeFt0aHVtYl8sZm9vX10NCiAgICAgICAgPC9jb2RlPjxiciAvPg0KICAgICAgICBQb3NzaWJsZSB2YWx1ZTogcHJlZml4LC4uLjxiciAvPg0KICAgICAgICBBcHBsaWNhYmxlIHRvOiBTZWxlY3QgRmlsZQ0KICAgICAgPC9wPiAgICANCiAgICAgIDwvbGk+ICAgIA0KICAgICAgPGxpPiAgICAgICAgDQogICAgICA8cD5JbnN0cnVjdGlvbjogDQogICAgICAgIDxjb2RlPmRhdGVmb3JtYXRbZGQvbW0veXldDQogICAgICAgIDwvY29kZT48YnIgLz4NCiAgICAgICAgUG9zc2libGUgdmFsdWU6IERhdGUgZm9ybWF0IHVzZWQgYnkgdGhlIGpxdWVyeSBkYXRlcGlja2VyPGJyIC8+DQogICAgICAgIEFwcGxpY2FibGUgdG86IFRleHQgQXJlYQ0KICAgICAgPC9wPiAgICANCiAgICAgIDwvbGk+DQogICAgPC91bD4NCiAgICA8cD5Zb3UgY2FuIHNwZWNpZnkgbXVsdGlwbGUgaW5zdHJ1Y3Rpb25zIHNlcGFyYXRlZCBieSBhIHNlbWljb2xvbiAoIA0KICAgICAgPGNvZGU+Ow0KICAgICAgPC9jb2RlPiApLCBmb3IgZXhhbXBsZToNCiAgICA8L3A+DQogICAgPHA+DQogICAgICA8Y29kZT5hbGxvd1twZGZdO2RpclsvZG9jcy9wZGZdDQogICAgICA8L2NvZGU+DQogICAgPC9wPg0KICA8L2Rpdj4NCiAgPGRpdiBpZD0iY2F0ZWdvcmllc19jIj4NCiAgICA8aDM+Q2F0ZWdvcmllczwvaDM+DQogICAgPHA+T25seSBzaW5nbGUgbGV2ZWwgY2F0ZWdvcmllcyBhcmUgc3VwcG9ydGVkIGF0IHRoaXMgdGltZS4NCiAgICA8L3A+DQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJleGFtcGxlc19jIj4NCiAgICA8aDM+RXhhbXBsZXM8L2gzPg0KICAgIDxwPntNb2R1bGVOYW1lIGZpbHRlcl8xX2VxdWFsPTEgZGF0ZV9zdGFydD0xIGRhdGVfZW5kPTF9PC9wPg0KICAgIDx1bD4NCiAgICA8bGk+dmFsdWUgZnJvbSBjdXN0b20gZmllbGRpZCB3aXRoIGlkIDEgPSAxPC9saT4NCiAgICA8bGk+ZGF0ZSBzdGFydCAgPCBOT1c8L2xpPg0KICAgIDxsaT5lbmQgZGF0ZSAgPiBOT1c8L2xpPg0KICAgIDwvdWw+DQogICAgPGJyIC8+DQogICAgPHA+e01vZHVsZU5hbWUgZmlsdGVyX2l0ZW1JZF9pbnNldD0nMSwyLDMnfTwvcD4NCiAgICA8dWw+DQogICAgPGxpPml0ZW0gaWQgaXMgaXMgaW4gc2V0ICgxLDIsMyk8L2xpPg0KICAgIDwvdWw+DQogICAgPGJyIC8+DQogICAgPHA+e01vZHVsZU5hbWUgIGFsbHJvdz0iaXRlbXMifTwvcD4NCiAgICA8dWw+DQogICAgPGxpPnNldCBhbGwgcmVzdWx0IHRvIHNtYXJ0eSB2YXIgXCRpdGVtczwvbGk+ICAgIA0KICAgIDwvdWw+DQogICAgPGJyIC8+DQogICAgPHA+e01vZHVsZU5hbWUgYWN0aW9uPSJkZXRhaWwiIGl0ZW1faWQ9MSAgb25lcm93PSJpdGVtIn08L3A+DQogICAgPHVsPg0KICAgIDxsaT5kZXRhaWwgZnJvbSBpdGVtIHdpdGggaWQgMTwvbGk+ICAgIA0KICAgIDxsaT5zZXQgcmVzdWx0IHRvIHNtYXJ0eSB2YXIgXCRpdGVtPC9saT4gICAgDQogICAgPC91bD4NCiAgPC9kaXY+DQo8L2Rpdj4NCkVPVDsNCiRsYW5nWydoZWxwX3BhcmFtX2FjdGlvbiddID0gPDw8RU9UDQonT3ZlcnJpZGUgdGhlIGRlZmF1bHQgYWN0aW9uLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOg0KPHVsPg0KPGxpPiZxdW90O2RlZmF1bHQmcXVvdDsgLSB0byBkaXNwbGF5IHRoZSBzdW1tYXJ5IHZpZXcuPC9saT4NCjxsaT4mcXVvdDtkZXRhaWwmcXVvdDsgLSB0byBkaXNwbGF5IGEgc3BlY2lmaWVkIGVudHJ5IGluIGRldGFpbCBtb2RlLjwvbGk+DQo8bGk+JnF1b3Q7Y2F0ZWdvcmllcyZxdW90OyAtIHRvIGRpc3BsYXkgdGhlIGNhdGVnb3JpZXM8L2xpPg0KPGxpPiZxdW90O2ZpbHRlciZxdW90OyAtIGZpbHRlciBmb3IgaXRlbXM8L2xpPg0KPC91bD4NCkVPVDsNCiRsYW5nWydoZWxwX3BhcmFtX2NhdGVnb3J5X2lkJ10gPSAnU3BlY2lmeSB0aGUgY2F0ZWdvcnkgaWQgdG8gZGlzcGxheSBpdGVtcyBvbmx5IGZyb20gdGhpcyBjYXRlZ29yeS4nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fY2F0ZWdvcnknXSA9ICdTcGVjaWZ5IHRoZSBjYXRlZ29yeSBhbGlhcyB0byBkaXNwbGF5IGl0ZW1zIG9ubHkgZnJvbSB0aGlzIGNhdGVnb3J5Lic7DQokbGFuZ1snaGVscF9wYXJhbV9kZXRhaWx0ZW1wbGF0ZSddID0gJ1RoZSBkZXRhaWwgdGVtcGxhdGUgeW91IHdpc2ggdG8gdXNlLic7DQokbGFuZ1snaGVscF9wYXJhbV9zdW1tYXJ5dGVtcGxhdGUnXSA9ICdUaGUgc3VtbWFyeSB0ZW1wbGF0ZSB5b3Ugd2lzaCB0byB1c2UnOw0KJGxhbmdbJ2hlbHBfcGFyYW1fY2F0ZWdvcnl0ZW1wbGF0ZSddID0gJ1RoZSBjYXRlZ29yeSB0ZW1wbGF0ZSB5b3Ugd2lzaCB0byB1c2UnOw0KJGxhbmdbJ2hlbHBfcGFyYW1fZmlsdGVydGVtcGxhdGUnXSA9ICdUaGUgZmlsdGVyIHRlbXBsYXRlIHlvdSB3aXNoIHRvIHVzZSc7DQokbGFuZ1snaGVscF9wYXJhbV9vcmRlcmJ5J10gPSAnWW91IGNhbiBvcmRlciBieSBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb2x1bW5zOiBpdGVtX2lkLCB0aXRsZSwgaXRlbV9kYXRlLCBtb2RpZmllZCwgcmFuZG9tLCBmOmZpZWxkYWxpYXMuJzsNCiRsYW5nWydoZWxwX3BhcmFtX3BhZ2VsaW1pdCddID0gJ1BhZ2UgbGltaXQgZm9yIHBhZ2luYXRpb24nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fc29ydG9yZGVyJ10gPSAnT3JkZXIgZm8gIGRlZmF1bHQgYWN0aW9uJzsNCiRsYW5nWydoZWxwX3BhcmFtX2lubGluZSddID0gJ0lubGluZSc7DQokbGFuZ1snaGVscF9wYXJhbV9vbmVyb3cnXSA9ICdTZXQgcmVzdWx0IGFycmF5IHRvIHNtYXJ0eS4gRm9yIGRlZmF1bHQgYW5kIGRldGFpbCBhY3Rpb24nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fYWxscm93J10gPSAnU2V0IHJlc3VsdHMgYXJyYXkgdG8gc21hcnR5LiBGb3IgZGVmYXVsdCBhY3Rpb24nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fb25lY291bnQnXSA9ICdTZXQgY291bnQgcmVzdWx0IHRvIHNtYXJ0eS4gRm9yIGRlZmF1bHQgYWN0aW9uJzsNCiRsYW5nWydoZWxwX3BhcmFtX2RhdGVfc3RhcnQnXSA9ICdBbGxvdyB1c2luZyBkYXRlX2VuZCBmb3IgcHVibGljIGl0ZW1zJzsNCiRsYW5nWydoZWxwX3BhcmFtX2RhdGVfZW5kJ10gPSAnSXRlbXMgZXhwaXJhdGlvbic7DQokbGFuZ1snaGVscF9wYXJhbV9maWx0ZXInXSA9ICdGaWx0ZXIgZm9yIHJlc3VsdHMuIFlvdSBjYW4gdXNlIGZpbHRlcl9GSUVMRElEX0NPTkRJVElPTiBmb3IgZmllbGRzIG9yIGZpbHRlcl9QUkVGX0NPTkRJVElPTiBmb3IgaXRlbSBjb2xzLjxiciAvPg0KQ29uZGl0aW9uIGZvciBGSUVMRFMgKGV0YzogZmllbGRfMV9lcXVhbD1cJ2FwcGxlXCcpOjxiciAgLz4NCjx1bD4NCjxsaT5udWxsPC9saT4NCjxsaT5ub3RudWxsPC9saT4NCjxsaT5pbjwvbGk+DQo8bGk+aW5zZXQ8L2xpPg0KPGxpPmluc2V0PC9saT4NCjxsaT5sZXNzPC9saT4NCjxsaT5sZXNzZXF1YWw8L2xpPg0KPGxpPmdyZWF0ZXI8L2xpPg0KPGxpPmdyZWF0ZXJlcXVhbDwvbGk+DQo8bGk+bGlrZTwvbGk+DQo8bGk+bm90ZXF1YWw8L2xpPg0KPGxpPmVxdWFsPC9saT4NCjwvdWw+DQpDb25kaXRpb24gZm9yIGl0ZW0gY29scyAtIGl0ZW1JZCwgaXRlbURhdGVFbmQsIGl0ZW1EYXRlLCBhbGlhcywgdXJsICAgKGV0YzogZmllbGRfaXRlbURhdGVFbmRfZXF1YWw9XCcyMDExLTAxLTAxIDAwOjAwOjAwXCcpOjxiciAgLz4NCjx1bD4NCjxsaT5udWxsPC9saT4NCjxsaT5ub3RudWxsPC9saT4NCjxsaT5pbjwvbGk+DQo8bGk+aW5zZXQ8L2xpPg0KPGxpPmxpa2U8L2xpPg0KPGxpPmxlc3M8L2xpPg0KPGxpPmxlc3NlcXVhbDwvbGk+DQo8bGk+Z3JlYXRlcjwvbGk+DQo8bGk+Z3JlYXRlcmVxdWFsPC9saT4NCjxsaT5ub3RlcXVhbDwvbGk+DQo8bGk+ZXF1YWw8L2xpPg0KPC91bD4NCic7DQoNCiRsYW5nWydoZWxwX3BhcmFtX2RldGFpbHBhZ2UnXSA9ICdQYWdlIHRvIGRpc3BsYXkgaXRlbSBkZXRhaWxzIGluLiBNdXN0IGJlIGEgcGFnZSBhbGlhcy4gVXNlZCB0byBhbGxvdyBkZXRhaWxzIHRvIGJlIGRpc3BsYXllZCBpbiBhIGRpZmZlcmVudCBwYWdlIHRoYW4gc3VtbWFyeS4nOw0KJGxhbmdbJ2hlbHBfcGFyYW1faXRlbSddID0gJ1RoaXMgcGFyYW1ldGVyIGlzIG9ubHkgYXBwbGljYWJsZSB0byB0aGUgZGV0YWlsIHZpZXcuIEl0IGFsbG93cyBzcGVjaWZ5aW5nIHdoaWNoIGl0ZW0gdG8gZGlzcGxheSBpbiBkZXRhaWwgbW9kZS4gTXVzdCBiZSBhbiBpdGVtIGFsaWFzLic7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsNCiR0YWJvcHRhcnJheSA9IGFycmF5KCdteXNxbCcgPT4gJ1RZUEU9TXlJU0FNJyk7DQoNCg0KLy8gY3JlYXRlIGl0ZW0gdGFibGUNCg0KJGZpZWxkcyA9ICcNCiAgICBpdGVtX2lkIEkgS0VZIEFVVE8sDQoJY2F0ZWdvcnlfaWQgSSwNCiAgICB0aXRsZSBDKDI1NSksDQoJYWxpYXMgQygyNTUpLA0KCXVybCBDKDI1NSksDQoJcmVjdXJzaXZlIEMoNTApLA0KICAgIHBvc2l0aW9uIEksDQogICAgYWN0aXZlIEkoMSksDQogICAgaXRlbV9kYXRlICcgLiBDTVNfQURPREJfRFQgLiAnLA0KICAgIGl0ZW1fZGF0ZV9lbmQgJyAuIENNU19BRE9EQl9EVCAuICcsDQogICAgY3JlYXRlX2RhdGUgJyAuIENNU19BRE9EQl9EVCAuICcsDQoJbW9kaWZpZWRfZGF0ZSAnIC4gQ01TX0FET0RCX0RUIC4gJw0KJzsNCg0KJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtJywgJGZpZWxkcywgJHRhYm9wdGFycmF5KTsNCiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCg0KICRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTChjbXNfZGJfcHJlZml4KCkuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ191cmwnLA0KCQkJCSAgY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtJywNCgkJCQkgICd1cmwnKTsNCiAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQogJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKGNtc19kYl9wcmVmaXgoKS4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2NhdGVnb3J5X2lkJywNCgkJCQkgIGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbScsDQoJCQkJICAnY2F0ZWdvcnlfaWQnKTsNCiAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCg0KLy8gY3JlYXRlIGNhdGVnb3J5IHRhYmxlDQokZmllbGRzID0gIg0KCWNhdGVnb3J5X2lkIEkgS0VZIEFVVE8sDQoJY2F0ZWdvcnlfbmFtZSBDKDI1NSksDQoJY2F0ZWdvcnlfYWxpYXMgQygyNTUpLA0KCXNlY3Rpb24gQygxMCksDQoJcGFyZW50X2lkIEksDQoJaGllcmFyY2h5IEMoMjU1KSwNCiAgICAgICAgcG9zaXRpb24gSSwNCiAgICAgICAgaGllcmFyY2h5X3Bvc2l0aW9uIEMoMjU1KSwNCglsb25nX25hbWUgWCwNCiAgICAgICAgdXNlcmdyb3VwIEksDQoJY3JlYXRlX2RhdGUgVCwNCgltb2RpZmllZF9kYXRlIFQNCiI7DQoNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllcycsICRmaWVsZHMsICR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCg0KLy8gY3JlYXRlIGZpZWxkZGVmIHRhYmxlDQoNCiRmaWVsZHMgPSAnDQogICAgZmllbGRkZWZfaWQgSSBLRVkgQVVUTywNCiAgICBuYW1lIEMoMjU1KSwNCiAgICBhbGlhcyBDKDI1NSksDQogICAgaGVscCBDKDI1NSksDQogICAgdHlwZSBDKDUwKSwNCiAgICBwb3NpdGlvbiBJLA0KICAgIHJlcXVpcmVkIEkoMSksDQogICAgZnJvbnRlbmQgSSgxKSwNCiAgICBlZGl0dmlldyBJKDEpLA0KICAgIGZpbHRlcl9mcm9udGVuZCBJKDEpLA0KICAgIGZpbHRlcl9hZG1pbiBJKDEpLA0KICAgIHNlYXJjaGFibGUgSSgxKSwNCiAgICBleHRyYSBDKDI1NSkNCic7DQoNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGRkZWYnLCAkZmllbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQovLyBjcmVhdGUgZmllbGR2YWwgdGFibGUNCg0KJGZpZWxkcyA9ICcNCiAgICBpdGVtX2lkIEkgS0VZIE5PVCBudWxsLA0KICAgIGZpZWxkZGVmX2lkIEkgS0VZIE5PVCBudWxsLA0KICAgIHZhbHVlIFgNCic7DQoNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwnLCAkZmllbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQovLyBjcmVhdGUgaXRlbSBleHRyYSB0YWJsZQ0KDQokZmllbGRzID0gJw0KICAgIGl0ZW1faWQgSSBLRVkgTk9UIG51bGwsDQogICAgdmFsdWUgSSBLRVkgTk9UIG51bGwsDQonOw0KDQokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW1fZXh0cmEnLCAkZmllbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQovLyBjYXRlZ29yeSB0ZW1wbGF0ZQ0KJGZuID0gY21zX2pvaW5fcGF0aChkaXJuYW1lKF9fRklMRV9fKSwgJ3RlbXBsYXRlcycsICdvcmlnX2NhdGVnb3J5X3RlbXBsYXRlLnRwbCcpOw0KaWYgKGZpbGVfZXhpc3RzKCRmbikpIHsNCiAgICAkdGVtcGxhdGUgPSBmaWxlX2dldF9jb250ZW50cygkZm4pOw0KICAgICRtb2QtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRfY2F0ZWdvcnlfdGVtcGxhdGUnLCAkdGVtcGxhdGUpOw0KICAgICRtb2QtPlNldFRlbXBsYXRlKCdjYXRlZ29yeV90ZW1wbGF0ZVNhbXBsZScsICR0ZW1wbGF0ZSk7DQogICAgJG1vZC0+U2V0UHJlZmVyZW5jZSgnY3VycmVudF9jYXRlZ29yeV90ZW1wbGF0ZScsICdTYW1wbGUnKTsNCn0NCg0KLy8gc3VtbWFyeSB0ZW1wbGF0ZQ0KJGZuID0gY21zX2pvaW5fcGF0aChkaXJuYW1lKF9fRklMRV9fKSwgJ3RlbXBsYXRlcycsICdvcmlnX3N1bW1hcnlfdGVtcGxhdGUudHBsJyk7DQppZiAoZmlsZV9leGlzdHMoJGZuKSkgew0KICAgICR0ZW1wbGF0ZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7DQogICAgJG1vZC0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9zdW1tYXJ5X3RlbXBsYXRlJywgJHRlbXBsYXRlKTsNCiAgICAkbW9kLT5TZXRUZW1wbGF0ZSgnc3VtbWFyeV90ZW1wbGF0ZVNhbXBsZScsICR0ZW1wbGF0ZSk7DQogICAgJG1vZC0+U2V0UHJlZmVyZW5jZSgnY3VycmVudF9zdW1tYXJ5X3RlbXBsYXRlJywgJ1NhbXBsZScpOw0KfQ0KDQovLyBkZXRhaWwgdGVtcGxhdGUNCiRmbiA9IGNtc19qb2luX3BhdGgoZGlybmFtZShfX0ZJTEVfXyksICd0ZW1wbGF0ZXMnLCAnb3JpZ19kZXRhaWxfdGVtcGxhdGUudHBsJyk7DQppZiAoZmlsZV9leGlzdHMoJGZuKSkgew0KICAgICR0ZW1wbGF0ZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7DQogICAgJG1vZC0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9kZXRhaWxfdGVtcGxhdGUnLCAkdGVtcGxhdGUpOw0KICAgICRtb2QtPlNldFRlbXBsYXRlKCdkZXRhaWxfdGVtcGxhdGVTYW1wbGUnLCAkdGVtcGxhdGUpOw0KICAgICRtb2QtPlNldFByZWZlcmVuY2UoJ2N1cnJlbnRfZGV0YWlsX3RlbXBsYXRlJywgJ1NhbXBsZScpOw0KfQ0KDQovLyBmaWx0ZXIgdGVtcGxhdGUNCiRmbiA9IGNtc19qb2luX3BhdGgoZGlybmFtZShfX0ZJTEVfXyksICd0ZW1wbGF0ZXMnLCAnb3JpZ19maWx0ZXJfdGVtcGxhdGUudHBsJyk7DQppZiAoZmlsZV9leGlzdHMoJGZuKSkgew0KICAgICR0ZW1wbGF0ZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7DQogICAgJG1vZC0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9maWx0ZXJfdGVtcGxhdGUnLCAkdGVtcGxhdGUpOw0KICAgICRtb2QtPlNldFRlbXBsYXRlKCdmaWx0ZXJfdGVtcGxhdGVTYW1wbGUnLCAkdGVtcGxhdGUpOw0KICAgICRtb2QtPlNldFByZWZlcmVuY2UoJ2N1cnJlbnRfZmlsdGVyX3RlbXBsYXRlJywgJ1NhbXBsZScpOw0KfQ0KDQoNCi8vIHNldCBwcmVmZXJlbmNlcw0KJG1vZC0+U2V0UHJlZmVyZW5jZSgndXJsX3ByZWZpeCcsIG11bmdlX3N0cmluZ190b191cmwoJG1vZC0+R2V0TmFtZSgpLCB0cnVlKSk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdmcmllbmRseW5hbWUnLCAkbW9kLT5HZXROYW1lKCkpOw0KJG1vZC0+U2V0UHJlZmVyZW5jZSgnaXRlbV9zaW5ndWxhcicsIGdlbmVyYXRvcigpLT5MYW5nKCdpdGVtJykpOw0KJG1vZC0+U2V0UHJlZmVyZW5jZSgnaXRlbV9wbHVyYWwnLCBnZW5lcmF0b3IoKS0+TGFuZygnaXRlbXMnKSk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdpdGVtX3RpdGxlJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2l0ZW1fdGl0bGUnKSk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdpdGVtX3RpdGxlX2VkaXQnLCAxKTsNCiRtb2QtPlNldFByZWZlcmVuY2UoJ2NhdGVnb3J5X2V4dHJhX2xhYmVsJywgJG1vZC0+TGFuZygnZXh0cmEnKSk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdjYXRlZ29yeV9leHRyYTJfbGFiZWwnLCAkbW9kLT5MYW5nKCdleHRyYScpKTsNCiRtb2QtPlNldFByZWZlcmVuY2UoJ2l0ZW1fY2F0ZWdvcnlfZWRpdCcsIDEpOw0KJG1vZC0+U2V0UHJlZmVyZW5jZSgncmVjdXJzaXZlJywgMCk7DQoNCiRtb2QtPlNldFByZWZlcmVuY2UoJ21vZGUnLCAnYWR2YW5jZWQnKTsNCiRtb2QtPlNldFByZWZlcmVuY2UoJ3NvcnRvcmRlcl9hZHZhbmNlZCcsICdkZXNjJyk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdzb3J0YnlfYWR2YW5jZWQnLCAnY3JlYXRlX2RhdGUnKTsNCiRtb2QtPlNldFByZWZlcmVuY2UoJ3N1bW1hcnlfcGFnZWxpbWl0X2FkdmFuY2VkJywgMjUpOw0KDQokbW9kLT5TZXRQcmVmZXJlbmNlKCdzb3J0b3JkZXJfc2ltcGxlJywgJ2Rlc2MnKTsNCiRtb2QtPlNldFByZWZlcmVuY2UoJ3NvcnRieV9zaW1wbGUnLCAncG9zaXRpb24nKTsNCiRtb2QtPlNldFByZWZlcmVuY2UoJ3N1bW1hcnlfcGFnZWxpbWl0X3NpbXBsZScsIDEwMDAwKTsNCg0KJG1vZC0+U2V0UHJlZmVyZW5jZSgnaGFzX2FkbWluJywgMSk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdzZWFyY2hhYmxlJywgMSk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdpbWFnZXNfc2l6ZV9hZG1pbicsICcyMDB4Jyk7DQoNCiR0aGlzLT5DcmVhdGVFdmVudCgnSXRlbUFkZGVkJyk7DQokdGhpcy0+Q3JlYXRlRXZlbnQoJ0l0ZW1FZGl0ZWQnKTsNCiR0aGlzLT5DcmVhdGVFdmVudCgnSXRlbURlbGV0ZWQnKTsNCiR0aGlzLT5DcmVhdGVFdmVudCgnQ2F0ZWdvcnlBZGRlZCcpOw0KJHRoaXMtPkNyZWF0ZUV2ZW50KCdDYXRlZ29yeUVkaXRlZCcpOw0KJHRoaXMtPkNyZWF0ZUV2ZW50KCdDYXRlZ29yeURlbGV0ZWQnKTsNCiR0aGlzLT5DcmVhdGVFdmVudCgnSXRlbXNSZW9yZGVyZWQnKTsNCiR0aGlzLT5DcmVhdGVFdmVudCgnQ2F0ZWdvcmllc1Jlb3JkZXJlZCcpOw0KDQovLyBzZXQgcGVybWlzc2lvbnMNCiRtb2QtPkNyZWF0ZVBlcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9pdGVtJywgJG1vZC0+TGFuZygnbW9kaWZ5X2l0ZW0nKSk7DQokbW9kLT5DcmVhdGVQZXJtaXNzaW9uKCRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19tb2RpZnlfY2F0ZWdvcmllcycsICRtb2QtPkxhbmcoJ21vZGlmeV9jYXRlZ29yaWVzJykpOw0KJG1vZC0+Q3JlYXRlUGVybWlzc2lvbigkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfYWxsX2NhdGVnb3J5X3Zpc2JpbGUnLCAkbW9kLT5MYW5nKCdhbGxfY2F0ZWdvcnlfdmlzYmlsZScpKTsNCiRtb2QtPkNyZWF0ZVBlcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nLCAkbW9kLT5MYW5nKCdtb2RpZnlfb3B0aW9uJykpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRkYiA9IGNtc21zKCktPkdldERiKCk7DQoNCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsNCg0KLy8gZHJvcCB0YWJsZXMNCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW0nKTsNCiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCg0KJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGRkZWYnKTsNCiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCg0KJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcnknKTsgLy8gdGhlIG9ubHkgZ29vZCBjYXQgaXMgYSBkZWFkIGNhdA0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCcpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQovLyByZW1vdmUgcHJlZmVyZW5jZXMNCiRtb2QtPlJlbW92ZVByZWZlcmVuY2UoKTsNCg0KLy8gcmVtb3ZlIHBlcm1pc3Npb25zDQokbW9kLT5SZW1vdmVQZXJtaXNzaW9uKCRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19tb2RpZnlfaXRlbScpOw0KJG1vZC0+UmVtb3ZlUGVybWlzc2lvbigkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfbW9kaWZ5X2NhdGVnb3JpZXMnKTsNCiRtb2QtPlJlbW92ZVBlcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2FsbF9jYXRlZ29yeV92aXNiaWxlJyk7DQokbW9kLT5SZW1vdmVQZXJtaXNzaW9uKCRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19tb2RpZnlfb3B0aW9uJyk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[77u/PD9waHANCiRkYiA9IGNtc21zKCktPkdldERiKCk7DQokdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOw0KJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOw0KDQpzd2l0Y2ggKCRvbGR2ZXJzaW9uKSB7DQogICAgY2FzZSAnMS4wJzoNCn0NCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_addcategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJG1vZCA9ICR0aGlzOwppbmNsdWRlKGdlbmVyYXRvcl90b29sczo6cm91dGUoJHRoaXMsIF9fRklMRV9fKSk7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_approveitem.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_bulkaction.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJG1vZCA9ICR0aGlzOwppbmNsdWRlKGdlbmVyYXRvcl90b29sczo6cm91dGUoJHRoaXMsIF9fRklMRV9fKSk7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_deletecategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJG1vZCA9ICR0aGlzOwppbmNsdWRlKGdlbmVyYXRvcl90b29sczo6cm91dGUoJHRoaXMsIF9fRklMRV9fKSk7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_deletefielddef.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_deleteitem.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_deletetemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_editcategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJG1vZCA9ICR0aGlzOwppbmNsdWRlKGdlbmVyYXRvcl90b29sczo6cm91dGUoJHRoaXMsIF9fRklMRV9fKSk7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_editfielddef.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_edititem.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJG1vZCA9ICR0aGlzOw0KaW5jbHVkZShnZW5lcmF0b3JfdG9vbHM6OnJvdXRlKCR0aGlzLCBfX0ZJTEVfXykpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_editoption.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_edittemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_fields.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJG1vZCA9ICR0aGlzOwppbmNsdWRlKGdlbmVyYXRvcl90b29sczo6cm91dGUoJHRoaXMsIF9fRklMRV9fKSk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_movecategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_movefielddef.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_moveitem.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_ordercategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_ordercategory_do.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJG1vZCA9ICR0aGlzOwppbmNsdWRlKGdlbmVyYXRvcl90b29sczo6cm91dGUoJHRoaXMsIF9fRklMRV9fKSk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_search_reindex.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJG1vZCA9ICR0aGlzOwppbmNsdWRlKGdlbmVyYXRvcl90b29sczo6cm91dGUoJHRoaXMsIF9fRklMRV9fKSk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.admin_templates.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJG1vZCA9ICR0aGlzOwppbmNsdWRlKGdlbmVyYXRvcl90b29sczo6cm91dGUoJHRoaXMsIF9fRklMRV9fKSk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.categories.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJG1vZCA9ICR0aGlzOw0KaW5jbHVkZShnZW5lcmF0b3JfdG9vbHM6OnJvdXRlKCR0aGlzLCBfX0ZJTEVfXykpOw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJG1vZCA9ICR0aGlzOw0KaW5jbHVkZShnZW5lcmF0b3JfdG9vbHM6OnJvdXRlKCR0aGlzLCBfX0ZJTEVfXykpOw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJG1vZCA9ICR0aGlzOw0KaW5jbHVkZShnZW5lcmF0b3JfdG9vbHM6OnJvdXRlKCR0aGlzLCBfX0ZJTEVfXykpOw0KDQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.detail.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJG1vZCA9ICR0aGlzOw0KaW5jbHVkZShnZW5lcmF0b3JfdG9vbHM6OnJvdXRlKCR0aGlzLCBfX0ZJTEVfXykpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/action.filter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJG1vZCA9ICR0aGlzOw0KaW5jbHVkZShnZW5lcmF0b3JfdG9vbHM6OnJvdXRlKCR0aGlzLCBfX0ZJTEVfXykpOw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/function.admin_categorytab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJG1vZCA9ICR0aGlzOwppbmNsdWRlKGdlbmVyYXRvcl90b29sczo6cm91dGUoJHRoaXMsIF9fRklMRV9fKSk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/function.admin_fielddeftab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/function.admin_fielddeftab_categories.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/function.admin_itemtab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaW5jbHVkZShnZW5lcmF0b3JfdG9vbHM6OnJvdXRlKCR0aGlzLCBfX0ZJTEVfXykpOw0KDQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/function.admin_optiontab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaW5jbHVkZShnZW5lcmF0b3JfdG9vbHM6OnJvdXRlKCR0aGlzLCBfX0ZJTEVfXykpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/function.admin_templatetab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaW5jbHVkZShnZW5lcmF0b3JfdG9vbHM6OnJvdXRlKCR0aGlzLCBfX0ZJTEVfXykpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/images/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyogLS0tIGRvIG5vdCBlZGl0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KLyogVG8gbWFrZSB0aGlzIG1vZHVsZSBlYXN5IHRvIGR1cGxpY2F0ZSwgdGhlIG1vZHVsZSBuYW1lIGFuZCBtb2R1bGUgYWxpYXMNCiAqIGlzIHRha2VuIGZyb20gdGhlIG1vZHVsZSBkaXJlY3RvcnkgbmFtZSB0aGF0IHRoaXMgbGFuZyBmaWxlIGlzIGNvbnRhaW5lZC4NCiAqIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSB0aGUgbW9kdWxlIG9iamVjdCBjYW5ub3QgYmUgYWNjZXNzZWQgd2l0aG91dA0KICogVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIHRoZSBtb2R1bGUgb2JqZWN0IGNhbm5vdCBiZSBhY2Nlc3NlZCB3aXRob3V0DQogKiBrbm93aW5nIGl0cyBuYW1lLg0KICovDQokY29uZmlnPWNtc21zKCktPkdldENvbmZpZygpOw0KJGRpciA9IHN0cl9yZXBsYWNlKCdcXCcgLCAnLycsIGRpcm5hbWUoX19GSUxFX18pKTsNCnByZWdfbWF0Y2goJy9cL21vZHVsZXNcLyguKylcLy8nLCAkZGlyLCAkbWF0Y2hlcyk7DQokbW9kdWxlX25hbWUgPSAkbWF0Y2hlc1sxXTsNCiRtb2R1bGVfYWxpYXMgPSBzdHJ0b2xvd2VyKCRtYXRjaGVzWzFdKTsNCiRyb290dXJsID0gJGNvbmZpZ1sncm9vdF91cmwnXTsNCmluY2x1ZGUoY21zX2pvaW5fcGF0aCgkY29uZmlnWyJyb290X3BhdGgiXSwnbW9kdWxlcycsJ01vZHVsZUdlbmVyYXRvcicsJ01vZHVsZUxpYicsJ2xhbmcnLCdlbl9VUy5waHAnKSk7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGUoZ2VuZXJhdG9yX3Rvb2xzOjpyb3V0ZSgkdGhpcywgX19GSUxFX18pKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[77u/PD9waHANCiRtb2QgPSAkdGhpczsNCmluY2x1ZGVfb25jZShnZW5lcmF0b3JfdG9vbHM6OnJvdXRlKCR0aGlzLCBfX0ZJTEVfXykpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/ModuleExample.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiAgZ2VuZXJhdG9yICAtIHVnbHksIGJ1dCB3b3JrcyA6KQ0KICogQHJldHVybiBvYmplY3QgDQogKi8NCmlmICghZnVuY3Rpb25fZXhpc3RzKCdnZW5lcmF0b3InKSkgew0KDQogICAgZnVuY3Rpb24gZ2VuZXJhdG9yKCkgew0KICAgICAgICByZXR1cm4gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNb2R1bGVHZW5lcmF0b3InKTsNCiAgICB9DQoNCn0NCg0KLyoNCg0KICBBdXRob3I6IEJlbiBNYWxlbiwgPGJlbkBjb25jZXB0ZmFjdG9yeS5jb20uYXU+DQogIENvLU1haW50YWluZXI6IFNpbW9uIFJhZGZvcmQsIDxzaW1vbkBjb25jZXB0ZmFjdG9yeS5jb20uYXU+DQogIFdlYjogd3d3LmNvbmNlcHRmYWN0b3J5LmNvbS5hdQ0KICBDby1NYWludGFpbmVyOiBKb25hdGhhbiBTY2htaWQsIDxoaUBqb25hdGhhbnNjaG1pZC5kZT4NCg0KICBMaXN0SXQgaXMgYSBDTVMgTWFkZSBTaW1wbGUgbW9kdWxlIHRoYXQgZW5hYmxlcyB0aGUgd2ViIGRldmVsb3BlciB0byBjcmVhdGUNCiAgbXVsdGlwbGUgbGlzdHMgdGhyb3VnaG91dCBhIHNpdGUuIEl0IGNhbiBiZSBkdXBsaWNhdGVkIGFuZCBnaXZlbiBmcmllbmRseQ0KICBuYW1lcyBmb3IgZWFzaWVyIGNsaWVudCBtYWludGVuYW5jZS4NCg0KICBXaGVuIGR1cGxpY2F0aW5nIHRoaXMgbW9kdWxlIGNoYW5nZSB0aGUgJ0xpc3RJdCcgYmVsb3cgdG8gdGhlIG5ldyBtb2R1bGUNCiAgbmFtZSwgZS5nLiBOZXdOYW1lLiBGb2xsb3cgdGhlIENNU01TIG1vZHVsZSBuYW1pbmcgY29udmVudGlvbnMsIGEteiB3aXRoIG5vDQogIHB1bmN0dWF0aW9uIGNoYXJhY3RlcnMgb3Igc3BhY2VzLiBBbHNvIGNoYW5nZSB0aGUgbmFtZSBvZiB0aGlzIGZpbGUgdG8gbWF0Y2gNCiAgLSBOZXdOYW1lLm1vZHVsZS5waHAuIEZpbmFsbHkgY2hhbmdlIHRoZSBuYW1lIG9mIHRoZSBMaXN0SXQgZm9sZGVyIHRvIHRoZQ0KICBzYW1lIE5ld05hbWUNCg0KICovDQoNCiRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCiRjZ2V4dGVuc2lvbnMgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3Jvb3RfcGF0aCddLCAnbW9kdWxlcycsICdDR0V4dGVuc2lvbnMnLCAnQ0dFeHRlbnNpb25zLm1vZHVsZS5waHAnKTsNCmlmICghaXNfcmVhZGFibGUoJGNnZXh0ZW5zaW9ucykpIHsNCiAgICBlY2hvICc8aDE+PGZvbnQgY29sb3I9InJlZCI+RVJST1I6IFRoZSBDR0V4dGVuc2lvbnMgbW9kdWxlIGNvdWxkIG5vdCBiZSBmb3VuZC48L2ZvbnQ+PC9oMT4nOw0KICAgIHJldHVybjsNCn0NCnJlcXVpcmVfb25jZSgkY2dleHRlbnNpb25zKTsNCg0KY2xhc3MgTW9kdWxlRXhhbXBsZSBleHRlbmRzIENHRXh0ZW5zaW9ucyB7DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7DQogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0TmFtZSgpIHsNCiAgICAgICAgcmV0dXJuIGdldF9jbGFzcygkdGhpcyk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkgew0KICAgICAgICByZXR1cm4gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ZyaWVuZGx5bmFtZScpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgew0KICAgICAgICByZXR1cm4gJzEuMCc7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldEhlbHAoKSB7DQogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3IoKSB7DQogICAgICAgIHJldHVybiAnQGt1em1hbnknOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpIHsNCiAgICAgICAgcmV0dXJuICd6ZGVub0BrdXptYW55LmJpeic7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdjaGFuZ2Vsb2cnKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0UGFyYW1ldGVycygpIHsNCg0KICAgICAgICAkdGhpcy0+SW5pdGlhbGl6ZUFkbWluKCk7DQogICAgICAgICR0aGlzLT5Jbml0aWFsaXplRnJvbnRlbmQoKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gQWxsb3dBdXRvVXBncmFkZSgpIHsNCiAgICAgICAgcmV0dXJuIEZBTFNFOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBJbml0aWFsaXplQWRtaW4oKSB7DQoNCiAgICAgICAgLy8gYXV0byBsb2FkIGZvciBnZW5lcmF0b3Jfb3B0cw0KICAgICAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQogICAgICAgICRnZW5lcmF0b3Jfb3B0cyA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sncm9vdF9wYXRoJ10sICdtb2R1bGVzJywgJ01vZHVsZUdlbmVyYXRvcicsICdsaWInLCAnY2xhc3MuZ2VuZXJhdG9yX29wdHMucGhwJyk7DQogICAgICAgIHJlcXVpcmVfb25jZSgkZ2VuZXJhdG9yX29wdHMpOw0KDQogICAgICAgIGdlbmVyYXRvcl9vcHRzOjppbml0X2FkbWluKCR0aGlzKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkgew0KDQogICAgICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCiAgICAgICAgJGdlbmVyYXRvcl9vcHRzID0gY21zX2pvaW5fcGF0aCgkY29uZmlnWydyb290X3BhdGgnXSwgJ21vZHVsZXMnLCAnTW9kdWxlR2VuZXJhdG9yJywgJ2xpYicsICdjbGFzcy5nZW5lcmF0b3Jfb3B0cy5waHAnKTsNCiAgICAgICAgcmVxdWlyZV9vbmNlKCRnZW5lcmF0b3Jfb3B0cyk7DQoNCiAgICAgICAgZ2VuZXJhdG9yX29wdHM6OmluaXQoJHRoaXMpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBMYXp5TG9hZEZyb250ZW5kKCkgew0KICAgICAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2xhenlsb2FkaW5nJykpIHsNCiAgICAgICAgICAgIHJldHVybiBUUlVFOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldEV2ZW50RGVzY3JpcHRpb24oJGV2ZW50bmFtZSkgew0KICAgICAgICByZXR1cm4gJHRoaXMtPmxhbmcoJ2V2ZW50ZGVzYy0nIC4gJGV2ZW50bmFtZSk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkgew0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBEb0FjdGlvbiAtIGRlZmF1bHQgYWRkIGRlZmF1bHQgcGFyYW1zDQogICAgICogQHBhcmFtIHR5cGUgJG5hbWUNCiAgICAgKiBAcGFyYW0gdHlwZSAkaWQNCiAgICAgKiBAcGFyYW0gdHlwZSAkcGFyYW1zDQogICAgICogQHBhcmFtIHR5cGUgJHJldHVybmlkIA0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBEb0FjdGlvbigkbmFtZSwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQ9JycpIHsNCiAgICAgICAgc3dpdGNoICgkbmFtZSkgew0KICAgICAgICAgICAgY2FzZSAiZGVmYXVsdCI6DQogICAgICAgICAgICBjYXNlICJkZXRhaWwiOg0KICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgkbmFtZSAuICdfYWN0aW9uX3BhcmFtcycpICE9ICIiKSB7DQogICAgICAgICAgICAgICAgICAgICRkZWZhdWx0X2FjdGlvbl9wYXJhbXMgPSBleHBsb2RlKCIgIiwgJHRoaXMtPkdldFByZWZlcmVuY2UoJG5hbWUgLiAnX2FjdGlvbl9wYXJhbXMnKSk7DQogICAgICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkZGVmYXVsdF9hY3Rpb25fcGFyYW1zKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGRlZmF1bHRfYWN0aW9uX3BhcmFtcyBhcyAkZGVmYXVsdF9hY3Rpb25fcGFyYW0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGVmYXVsdF9hY3Rpb25fcGFyYW1fYXJyYXkgPSBleHBsb2RlKCI9IiwgJGRlZmF1bHRfYWN0aW9uX3BhcmFtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQoJGRlZmF1bHRfYWN0aW9uX3BhcmFtX2FycmF5KSA9PSAyKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJGRlZmF1bHRfYWN0aW9uX3BhcmFtX2FycmF5WzBdXSA9ICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YShzdHJfcmVwbGFjZShhcnJheSgnIicsICInIiksIGFycmF5KCcnLCAnJyksICRkZWZhdWx0X2FjdGlvbl9wYXJhbV9hcnJheVsxXSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvL2ZsdXNoDQogICAgICAgIG9iX3N0YXJ0KCk7DQogICAgICAgIHBhcmVudDo6RG9BY3Rpb24oJG5hbWUsICRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsNCiAgICAgICAgJG91dHB1dDIgPSBvYl9nZXRfY29udGVudHMoKTsNCiAgICAgICAgb2JfZW5kX2NsZWFuKCk7DQoNCiAgICAgICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0aXRsZV9wYXJhbV9mb3JfY2FjaGUnKSkgew0KICAgICAgICAgICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOw0KICAgICAgICAgICAgc3dpdGNoICgkbmFtZSkgew0KICAgICAgICAgICAgICAgIGNhc2UgImRldGFpbCI6DQogICAgICAgICAgICAgICAgICAgICR0aXRsZXNfYXJyYXkgPSBleHBsb2RlKCcsJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3RpdGxlX3BhcmFtX2Zvcl9jYWNoZScpKTsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHRpdGxlc19hcnJheSBhcyAkdGl0bGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvPCEtLScgLiAkdGl0bGUgLiAnOiguKiktLT4vaScsICRvdXRwdXQyLCAkbWF0Y2hlcykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc21hcnR5LT5hc3NpZ24oJHRpdGxlLCAkbWF0Y2hlc1sxXSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgYmVhazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGVjaG8gJG91dHB1dDI7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEhhc0FkbWluKCkgew0KICAgICAgICByZXR1cm4gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2hhc19hZG1pbicsIGZhbHNlKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkgew0KICAgICAgICByZXR1cm4gJ2NvbnRlbnQnOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkgew0KICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJHRoaXMtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19tb2RpZnlfaXRlbScpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXREZXBlbmRlbmNpZXMoKSB7DQogICAgICAgIHJldHVybiBhcnJheSgnQ0dFeHRlbnNpb25zJyA9PiAnMS4yNicsICdNb2R1bGVHZW5lcmF0b3InID0+ICcxLjAnLCAnRXh0ZW5kZWRUb29scycgPT4gJzEuMCcpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpIHsNCiAgICAgICAgcmV0dXJuICcxLjknOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBNYXhpbXVtQ01TVmVyc2lvbigpIHsNCiAgICAgICAgcmV0dXJuICcxLjEwLjknOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0aW5zdGFsbCcpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkgew0KICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiAgZ2V0IG1vZHVsZSBhbGlhcw0KICAgICAqIEByZXR1cm4gdHlwZSANCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gX0dldE1vZHVsZUFsaWFzKCkgew0KICAgICAgICAkdmFsdWUgPSBjbXNfdXRpbHM6OmdldF9hcHBfZGF0YShnZXRfY2xhc3MoKSAuIF9fRlVOQ1RJT05fXyk7DQogICAgICAgIGlmICgkdmFsdWUpDQogICAgICAgICAgICByZXR1cm4gJHZhbHVlOw0KDQogICAgICAgICR2YWx1ZSA9IHN0cnRvbG93ZXIoJHRoaXMtPkdldE5hbWUoKSk7DQogICAgICAgIGNtc191dGlsczo6c2V0X2FwcF9kYXRhKGdldF9jbGFzcygpIC4gX19GVU5DVElPTl9fLCAkdmFsdWUpOw0KICAgICAgICByZXR1cm4gJHZhbHVlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqICBnZXQgY29zdHVtIGZpZWxkIGRlZnMNCiAgICAgKiBAcGFyYW0gSU5UICRpdGVtX2lkDQogICAgICogQHJldHVybiBhcnJheQ0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRDb3N0dW1GaWVsZERlZnMoJGl0ZW1faWQpIHsNCiAgICAgICAgcmV0dXJuIGdlbmVyYXRvcl90b29sczo6Z2V0X2Nvc3R1bV9maWVsZF9kZWYoJHRoaXMsICRpdGVtX2lkKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0SGVhZGVySHRtbCgpIHsNCiAgICAgICAgJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTW9kdWxlR2VuZXJhdG9yJyk7DQogICAgICAgICRmbiA9ICRtb2R1bGUtPkdldE1vZHVsZVVSTFBhdGgoKSAuICcvanMvanF1ZXJ5LnRhYmxlZG5kXzBfNS5qcyc7DQogICAgICAgICRvdXRwdXQgPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iJyAuICRmbiAuICciPjwvc2NyaXB0PicgLiAiXG4iOw0KICAgICAgICAkb3V0cHV0IC49ICc8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cDovL21ldGExMDAuZ2l0aHViLmNvbS9tQ29sb3JQaWNrZXIvamF2YXNjcmlwdHMvbUNvbG9yUGlja2VyX21pbi5qcyI+PC9zY3JpcHQ+JzsNCiAgICAgICAgcmV0dXJuICRvdXRwdXQ7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIFNlYXJjaFJlc3VsdFdpdGhQYXJhbXMoJHJldHVybmlkLCAkaXRlbV9pZCwgJGF0dHIgPSAnJywgJHBhcmFtcyA9ICcnKSB7DQogICAgICAgIGlmICghJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NlYXJjaGFibGUnKSkNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgcmV0dXJuIGdlbmVyYXRvcl90b29sczo6Z2V0X3NlYXJjaF9yZXN1bHQoJHRoaXMsICRyZXR1cm5pZCwgJGl0ZW1faWQsICRhdHRyLCAkcGFyYW1zKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gU2VhcmNoUmVpbmRleCgkbW9kdWxlKSB7DQogICAgICAgIGlmICghJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NlYXJjaGFibGUnKSkNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgcmV0dXJuIGdlbmVyYXRvcl90b29sczo6c2VhcmNoX3JlaW5kZXgoJHRoaXMsICRtb2R1bGUpOw0KICAgIH0NCg0KfQ0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/categorylist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQp7Y2FwdHVyZSBhc3NpZ249Iml0ZW1wbGF0ZSJ9eyRnZW5lcmF0b3JfdGVtcGxhdGVzfS97JHRlbXBsYXRlX2FycmF5LjF9ey9jYXB0dXJlfQp7aW5jbHVkZSBmaWxlPSRpdGVtcGxhdGV9]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/categorytab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/editcategory.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQp7Y2FwdHVyZSBhc3NpZ249Iml0ZW1wbGF0ZSJ9eyRnZW5lcmF0b3JfdGVtcGxhdGVzfS97JHRlbXBsYXRlX2FycmF5LjF9ey9jYXB0dXJlfQp7aW5jbHVkZSBmaWxlPSRpdGVtcGxhdGV9]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/editcategory_old.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/editfielddef.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/edititem.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/edittemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/fielddeftab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/filter.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/itemtab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/optiontab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/ordercategory.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQp7Y2FwdHVyZSBhc3NpZ249Iml0ZW1wbGF0ZSJ9eyRnZW5lcmF0b3JfdGVtcGxhdGVzfS97JHRlbXBsYXRlX2FycmF5LjF9ey9jYXB0dXJlfQp7aW5jbHVkZSBmaWxlPSRpdGVtcGxhdGV9]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/orig_category_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/orig_detail_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/orig_filter_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/orig_summary_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/source/ModuleExample/templates/templatetab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9InRlbXBsYXRlX2FycmF5IiB2YWx1ZT0iOyJ8ZXhwbG9kZTokc21hcnR5LnRlbXBsYXRlfQ0Ke2NhcHR1cmUgYXNzaWduPSJpdGVtcGxhdGUifXskZ2VuZXJhdG9yX3RlbXBsYXRlc30veyR0ZW1wbGF0ZV9hcnJheS4xfXsvY2FwdHVyZX0NCntpbmNsdWRlIGZpbGU9JGl0ZW1wbGF0ZX0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ModuleLib/templates/categorylist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgoJPHRoZWFkPgoJCTx0cj4KCQkJPHRoPnskY2F0ZWdvcnl0ZXh0fTwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CgkJPC90cj4KCTwvdGhlYWQ+Cgk8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CgkJPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRlbnRyeS0+cm93Y2xhc3N9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skZW50cnktPnJvd2NsYXNzfSc7Ij4KCQkJPHRkPnskZW50cnktPm5hbWV9PC90ZD4KCQkJPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+CgkJPC90cj4Key9mb3JlYWNofQoJPC90Ym9keT4KPC90YWJsZT4Key9pZn0KCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkbGlua317aWYgJGl0ZW1jb3VudCA+IDB9IC8geyRyZW9yZGVyfXsvaWZ9PC9wPjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/categorytab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRpdGVtY291bnQgPiAwfQ0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4NCiAgICA8dGhlYWQ+DQogICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0aD57JHRpdGxlfTwvdGg+DQogICAgICAgICAgICA8dGg+eyRhbGlhc308L3RoPg0KICAgICAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4NCiAgICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+DQogICAgICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPg0KICAgICAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4NCiAgICAgICAgPC90cj4NCiAgICA8L3RoZWFkPg0KICAgIDx0Ym9keT4NCntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9DQogICAgICAgIDx0ciBjbGFzcz0ieyRlbnRyeS5yb3djbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRlbnRyeS5yb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRlbnRyeS5yb3djbGFzc30nOyI+DQogICAgICAgICAgICA8dGQ+eyRlbnRyeS5saW5rfTwvdGQ+DQogICAgICAgICAgICA8dGQ+eyRlbnRyeS5hbGlhc308L3RkPg0KICAgICAgICAgICAgPHRkPnskZW50cnkudXBsaW5rfTwvdGQ+DQogICAgICAgICAgICA8dGQ+eyRlbnRyeS5kb3dubGlua308L3RkPg0KICAgICAgICAgICAgPHRkPnskZW50cnkuZWRpdGxpbmt9PC90ZD4NCiAgICAgICAgICAgIDx0ZD57JGVudHJ5LmRlbGV0ZX08L3RkPg0KICAgICAgICA8L3RyPg0Key9mb3JlYWNofQ0KICAgIDwvdGJvZHk+DQo8L3RhYmxlPg0Key9pZn0NCg0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkbGlua308L2Rpdj4NCg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/editcategory.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPip7JG5hbWV0ZXh0fTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0bmFtZX08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGFsaWFzdGV4dH06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dGFsaWFzfTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5HZXRQcmVmZXJlbmNlKCdjYXRlZ29yeV9leHRyYV9sYWJlbCcsICRtb2QtPkxhbmcoJ2V4dHJhJykpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0ZXh0cmF9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkdldFByZWZlcmVuY2UoJ2NhdGVnb3J5X2V4dHJhMl9sYWJlbCcsICRtb2QtPkxhbmcoJ2V4dHJhJykpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0ZXh0cmEyfTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcGFyZW50dGV4dH06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRwYXJlbnRkcm9wZG93bn08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHVzZXJncm91cHRleHR9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXR1c2VyZ3JvdXB9PC9wPgo8L2Rpdj4KCntpZiBpc3NldCgkY3VzdG9tX2ZpZWxkZGVmKX0KICAgIHtmb3JlYWNoIGZyb209JGN1c3RvbV9maWVsZGRlZiBpdGVtPSdmaWVsZCd9CiAgICAgICAge2lmICghaXNTZXQoJGl0ZW1faWQpICYmICEkZmllbGQtPmVkaXR2aWV3KSB8fCBpc1NldCgkaXRlbV9pZCl9CiAgICAgICAgICAgIHtpZiAkZmllbGQtPmZpZWxkfQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZmllbGQtPnByb21wdH06PC9wPgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICAgICAgICAgICAgICAgIHtpZiAhZW1wdHkoJGZpZWxkLT5oZWxwKX0oeyRmaWVsZC0+aGVscH0pPGJyIC8+ey9pZn0KICAgICAgICAgICAgICAgICAgICB7JGZpZWxkLT5maWVsZH0KICAgICAgICAgICAgICAgICAgICB7aWYgaXNzZXQoJGZpZWxkLT5maWxlbmFtZSl9PGJyIC8+CiAgICAgICAgICAgICAgICAgICAge2NhcHR1cmUgYXNzaWduPSJzcmMifXskZmllbGQtPmZpbGVfbG9jYXRpb259L3skZmllbGQtPmZpbGVuYW1lfXsvY2FwdHVyZX0gICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHtjYXB0dXJlIGFzc2lnbj0ic3JjcGF0aCJ9eyRmaWVsZC0+ZmlsZXBhdGhfbG9jYXRpb259L3skZmllbGQtPmZpbGVuYW1lfXsvY2FwdHVyZX0gICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHtpZiAkZmllbGQtPmlzX2ltYWdlfQogICAgICAgICAgICAgICAgICAgIHtpZiAkaW1hZ2Vfc2l6ZV9hZG1pbl93aWR0aCAmJiAkaW1hZ2Vfc2l6ZV9hZG1pbl9oZWlnaHR9CiAgICAgICAgICAgICAgICAgICAgICAgIHtjbXNfbW9kdWxlIG1vZHVsZT0iQ0dTbWFydEltYWdlIiBzcmM9JHNyY3BhdGh8cmVwbGFjZToiYCRyb290X3VybGAiOicnIGFsdD0kZmlsZS0+ZmlsZW5hbWUgZmlsdGVyX2Nyb3B0b2ZpdD0iYCRpbWFnZV9zaXplX2FkbWluX3dpZHRoYCxgJGltYWdlX3NpemVfYWRtaW5faGVpZ2h0YCIgc3R5bGU9Im1hcmdpbjo1cHggMDsifSAgICAKICAgICAgICAgICAgICAgICAgICB7ZWxzZWlmICRpbWFnZV9zaXplX2FkbWluX3dpZHRofQogICAgICAgICAgICAgICAgICAgICAgICB7Y21zX21vZHVsZSBtb2R1bGU9IkNHU21hcnRJbWFnZSIgc3JjPSRzcmNwYXRofHJlcGxhY2U6ImAkcm9vdF91cmxgIjonJyBhbHQ9JGZpbGUtPmZpbGVuYW1lIGZpbHRlcl9yZXNpemU9IncsYCRpbWFnZV9zaXplX2FkbWluX3dpZHRoYCIgc3R5bGU9Im1hcmdpbjo1cHggMDsifSAgICAKICAgICAgICAgICAgICAgICAgICB7ZWxzZWlmICRpbWFnZV9zaXplX2FkbWluX2hlaWdodH0KICAgICAgICAgICAgICAgICAgICAgICAge2Ntc19tb2R1bGUgbW9kdWxlPSJDR1NtYXJ0SW1hZ2UiIHNyYz0kc3JjcGF0aHxyZXBsYWNlOiJgJHJvb3RfdXJsYCI6JycgYWx0PSRmaWxlLT5maWxlbmFtZSBmaWx0ZXJfcmVzaXplPSJoLGAkaW1hZ2Vfc2l6ZV9hZG1pbl9oZWlnaHRgIiBzdHlsZT0ibWFyZ2luOjVweCAwOyJ9ICAgIAogICAgICAgICAgICAgICAgICAgIHsvaWZ9CiAgICAgICAgICAgICAgICB7L2lmfQogICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICB7JGZpZWxkLT5kZWxldGVfZmlsZX0geyRmaWVsZC0+ZmlsZW5hbWV9PGJyIC8+CiAgICAgICAgICAgIHsvaWZ9CiAgICAgICAgPC9wPgogICAgPC9kaXY+Cgp7ZWxzZX0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkLT5wcm9tcHR9PC9wPgogICAgICAgIHtpZiAkZmllbGQtPmV4dHJhfQogICAgICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4gICAgICAgICAgICAKICAgICAgICAgICAgICAgIHskZmllbGQtPmV4dHJhfQogICAgICAgICAgICA8L3A+CiAgICAgICAgey9pZn0KICAgIDwvZGl2Pgp7L2lmfQp7L2lmfQp7L2ZvcmVhY2h9CnsvaWZ9Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH17JGhpZGRlbn17JGNhbmNlbH08L3A+CjwvZGl2Pgp7JGVuZGZvcm19Cg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/editfielddef.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGV9PC9oMz4NCnskc3RhcnRmb3JtfQ0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPip7JG5hbWV0ZXh0fTo8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dG5hbWV9PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRhbGlhc306PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfYWxpYXN9PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRoZWxwdGV4dH06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRoZWxwfTwvcD4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskdHlwZXRleHR9OjwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0dHlwZX08L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHVzZXJ2aWV3dGV4dH06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdXNlcnZpZXd9PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRmcm9udGVuZF90ZXh0fTo8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9mcm9udGVuZH08L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGVkaXR2aWV3X3RleHR9OjwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2VkaXR2aWV3fTwvcD4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZmlsdGVyX2Zyb250ZW5kX3RleHR9OjwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2ZpbHRlcl9mcm9udGVuZH08L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpbHRlcl9hZG1pbl90ZXh0fTo8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9maWx0ZXJfYWRtaW59PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRzZWFyY2hhYmxlX3RleHR9OjwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3NlYXJjaGFibGV9PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRleHRyYX06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZXh0cmF9PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3NlY3Rpb24nKX06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc2VjdGlvbn08L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+DQo8cCBjbGFzcz0icGFnZWlucHV0Ij57aWYgaXNzZXQoJGZpZWxkZGVmX2lkKX17JGZpZWxkZGVmX2lkfXsvaWZ9eyRzdWJtaXR9eyRjYW5jZWx9eyRhcHBseX08L3A+DQo8L2Rpdj4NCnskZW5kZm9ybX0NCg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/edititem.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9Im1vZHVsZSIgdmFsdWU9JG1vZH0NCntsaXRlcmFsfQ0KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiAgICBmdW5jdGlvbiB0b2dnbGVEaXNwbGF5KGVsZW0pDQogICAgew0KICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbSk7DQogICAgICB2YXIgdHh0ID0gZWwuc3R5bGUuZGlzcGxheTsNCiAgICAgIGlmKCB0eHQgPT0gJ25vbmUnICkNCiAgICAgICAgew0KICAgICAgICAgIHR4dCA9ICdibG9jayc7DQogICAgICAgIH0NCiAgICAgIGVsc2UNCiAgICAgICAgew0KICAgICAgICAgIHR4dCA9ICdub25lJzsNCiAgICAgICAgfQ0KICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IHR4dDsNCiAgICB9DQoNCiAgICA8L3NjcmlwdD4NCnsvbGl0ZXJhbH0NCg0KPGgzPnskdGl0bGV9PC9oMz4NCnskc3RhcnRmb3JtfQ0KDQoNCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+e2lmIGlzc2V0KCRpdGVtX2lkKX17JGl0ZW1faWR9ey9pZn17JHN1Ym1pdH17JGNhbmNlbH17JGFwcGx5fSB7aWYgaXNTZXQoJGNvcHkpfXskY29weX17L2lmfXtpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdwcmV2aWV3X2FkbWluJyl9PHNwYW4gc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6NXB4OyI+eyRwcmV2aWV3X3ZpZXd9PC9zcGFuPnsvaWZ9PC9wPg0KPC9kaXY+DQoNCg0Ke2lmIGlzc2V0KCRzdGFydF90YWJfaGVhZGVycyl9DQp7JHN0YXJ0X3RhYl9oZWFkZXJzfQ0KeyR0YWJoZWFkZXJfYXJ0aWNsZX0NCnskdGFiaGVhZGVyX3ByZXZpZXd9DQp7JGVuZF90YWJfaGVhZGVyc30NCg0KeyRzdGFydF90YWJfY29udGVudH0NCnskc3RhcnRfdGFiX2FydGljbGV9DQp7L2lmfQ0KDQoNCntpZiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3RpdGxlX2VkaXQnKX0NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPip7JHByb21wdF90aXRsZX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RpdGxlfTwvcD4NCiAgICA8L2Rpdj4NCnsvaWZ9DQoNCntpZiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2FsaWFzX2VkaXQnKX0NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2FsaWFzfTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfYWxpYXN9PC9wPg0KICAgIDwvZGl2Pg0Key9pZn0NCg0Ke2lmICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fdXJsX2VkaXQnKX0NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3VybH06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3VybH08L3A+DQogICAgPC9kaXY+DQp7L2lmfQ0KDQp7aWYgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9jYXRlZ29yeV9lZGl0Jyl9DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9jYXRlZ29yeX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NhdGVnb3J5fTwvcD4NCiAgICA8L2Rpdj4NCnsvaWZ9DQoNCntpZiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2RhdGVfZWRpdCcpfQ0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZGF0ZX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JGRhdGVwcmVmaXggdGltZT0kZGF0ZSBzdGFydF95ZWFyPSItMTAiIGVuZF95ZWFyPSIrMTUifSB7aHRtbF9zZWxlY3RfdGltZSBwcmVmaXg9JGRhdGVwcmVmaXggdGltZT0kZGF0ZX08L3A+DQogICAgPC9kaXY+DQp7L2lmfQ0KDQp7aWYgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kYXRlX2VuZF9lZGl0Jyl9DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9kYXRlX2VuZH06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JGRhdGVlbmRwcmVmaXggdGltZT0kZGF0ZWVuZCBzdGFydF95ZWFyPSItMTAiIGVuZF95ZWFyPSIrMTUifSB7aHRtbF9zZWxlY3RfdGltZSBwcmVmaXg9JGRhdGVlbmRwcmVmaXggdGltZT0kZGF0ZWVuZH08L3A+DQogICAgPC9kaXY+DQp7L2lmfQ0KDQp7aWYgJG1vZC0+R2V0UHJlZmVyZW5jZSgncmVjdXJzaXZlJyl9DQoNCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdyZWN1cl9wZXJpb2QnKX06PC9wPg0KICAgIHtjYXB0dXJlIGFzc2lnbj0ndG1wJ317JGFjdGlvbmlkfWV2ZW50X3JlY3VyX3BlcmlvZHsvY2FwdHVyZX0NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4NCiAgICAgICAgPHNlbGVjdCBpZD0icmVjdXJwZXJpb2QiIG5hbWU9InskYWN0aW9uaWR9cmVjdXJfcGVyaW9kIiBvbmNsaWNrPSJoYW5kbGVEcm9wZG93bigpOyI+DQogICAgICAgICAgICB7Zm9yZWFjaCBmcm9tPSRyZWN1cl9vcHRpb25zIGtleT1rZXkgaXRlbT12YWx1ZX0NCiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJ7JHZhbHVlfSIge2lmICR2YWx1ZSA9PSAkcmVjdXJzaXZlfXNlbGVjdGVkPSJzZWxlY3RlZCJ7L2lmfT57JGtleX08L29wdGlvbj4gICANCiAgICAgICAgICAgIHsvZm9yZWFjaH0NCiAgICAgICAgPC9zZWxlY3Q+DQogICAgPC9wPg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyIgaWQ9InJlY3VyX3dlZWtseSI+ICANCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCd3ZWVrZGF5cycpfTo8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF93ZWVrZGF5c308L3A+DQo8L2Rpdj4NCg0Key9pZn0NCg0Ke2lmIGlzc2V0KCRjdXN0b21fZmllbGRkZWYpfQ0KICAgIHtmb3JlYWNoIGZyb209JGN1c3RvbV9maWVsZGRlZiBpdGVtPSdmaWVsZCd9DQogICAgICAgIHtpZiAoIWlzU2V0KCRpdGVtX2lkKSAmJiAhJGZpZWxkLT5lZGl0dmlldykgfHwgaXNTZXQoJGl0ZW1faWQpfQ0KICAgICAgICAgICAge2lmICRmaWVsZC0+ZmllbGR9DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkLT5wcm9tcHR9OjwvcD4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQogICAgICAgICAgICAgICAgICAgIHtpZiAhZW1wdHkoJGZpZWxkLT5oZWxwKX0oeyRmaWVsZC0+aGVscH0pPGJyIC8+ey9pZn0NCiAgICAgICAgICAgICAgICAgICAgeyRmaWVsZC0+ZmllbGR9DQogICAgICAgICAgICAgICAgICAgIHtpZiBpc3NldCgkZmllbGQtPmZpbGVuYW1lKX08YnIgLz4NCiAgICAgICAgICAgICAgICAgICAge2NhcHR1cmUgYXNzaWduPSJzcmMifXskZmllbGQtPmZpbGVfbG9jYXRpb259L3skZmllbGQtPmZpbGVuYW1lfXsvY2FwdHVyZX0gICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICB7Y2FwdHVyZSBhc3NpZ249InNyY3BhdGgifXskZmllbGQtPmZpbGVwYXRoX2xvY2F0aW9ufS97JGZpZWxkLT5maWxlbmFtZX17L2NhcHR1cmV9ICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAge2lmICRmaWVsZC0+aXNfaW1hZ2V9DQogICAgICAgICAgICAgICAgICAgIHtpZiAkaW1hZ2Vfc2l6ZV9hZG1pbl93aWR0aCAmJiAkaW1hZ2Vfc2l6ZV9hZG1pbl9oZWlnaHR9DQogICAgICAgICAgICAgICAgICAgICAgICB7Y21zX21vZHVsZSBtb2R1bGU9IkNHU21hcnRJbWFnZSIgc3JjPSRzcmNwYXRofHJlcGxhY2U6ImAkcm9vdF91cmxgIjonJyBhbHQ9JGZpbGUtPmZpbGVuYW1lIGZpbHRlcl9jcm9wdG9maXQ9ImAkaW1hZ2Vfc2l6ZV9hZG1pbl93aWR0aGAsYCRpbWFnZV9zaXplX2FkbWluX2hlaWdodGAiIHN0eWxlPSJtYXJnaW46NXB4IDA7In0gICAgDQogICAgICAgICAgICAgICAgICAgIHtlbHNlaWYgJGltYWdlX3NpemVfYWRtaW5fd2lkdGh9DQogICAgICAgICAgICAgICAgICAgICAgICB7Y21zX21vZHVsZSBtb2R1bGU9IkNHU21hcnRJbWFnZSIgc3JjPSRzcmNwYXRofHJlcGxhY2U6ImAkcm9vdF91cmxgIjonJyBhbHQ9JGZpbGUtPmZpbGVuYW1lIGZpbHRlcl9yZXNpemU9IncsYCRpbWFnZV9zaXplX2FkbWluX3dpZHRoYCIgc3R5bGU9Im1hcmdpbjo1cHggMDsifSAgICANCiAgICAgICAgICAgICAgICAgICAge2Vsc2VpZiAkaW1hZ2Vfc2l6ZV9hZG1pbl9oZWlnaHR9DQogICAgICAgICAgICAgICAgICAgICAgICB7Y21zX21vZHVsZSBtb2R1bGU9IkNHU21hcnRJbWFnZSIgc3JjPSRzcmNwYXRofHJlcGxhY2U6ImAkcm9vdF91cmxgIjonJyBhbHQ9JGZpbGUtPmZpbGVuYW1lIGZpbHRlcl9yZXNpemU9ImgsYCRpbWFnZV9zaXplX2FkbWluX2hlaWdodGAiIHN0eWxlPSJtYXJnaW46NXB4IDA7In0gICAgDQogICAgICAgICAgICAgICAgICAgIHsvaWZ9DQogICAgICAgICAgICAgICAgey9pZn0NCiAgICAgICAgICAgICAgICA8YnIgLz4NCiAgICAgICAgICAgICAgICB7JGZpZWxkLT5kZWxldGVfZmlsZX0geyRmaWVsZC0+ZmlsZW5hbWV9PGJyIC8+DQogICAgICAgICAgICB7L2lmfQ0KICAgICAgICA8L3A+DQogICAgPC9kaXY+DQoNCntlbHNlfQ0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRmaWVsZC0+cHJvbXB0fTwvcD4NCiAgICAgICAge2lmICRmaWVsZC0+ZXh0cmF9DQogICAgICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4gICAgICAgICAgICANCiAgICAgICAgICAgICAgICB7JGZpZWxkLT5leHRyYX0NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgey9pZn0NCiAgICA8L2Rpdj4NCnsvaWZ9DQp7L2lmfQ0Key9mb3JlYWNofQ0Key9pZn0NCg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2FjdGl2ZX06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfYWN0aXZlfTwvcD4NCjwvZGl2Pg0KDQp7aWYgaXNzZXQoJGVuZF90YWJfYXJ0aWNsZSl9eyRlbmRfdGFiX2FydGljbGV9ey9pZn0NCg0Ke2lmIGlzc2V0KCRzdGFydF90YWJfcHJldmlldyl9DQp7JHN0YXJ0X3RhYl9wcmV2aWV3fQ0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPntsaXRlcmFsfQ0KalF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpew0KICBqUXVlcnkoJ2lucHV0W25hbWU9bTFfYXBwbHldJykuY2xpY2soZnVuY3Rpb24oKXsNCiAgICBpZiggdHlwZW9mIHRpbnlNQ0UgIT0gJ3VuZGVmaW5lZCcpIHRpbnlNQ0UudHJpZ2dlclNhdmUoKTsNCiAgICB2YXIgZGF0YSA9IGpRdWVyeSgnZm9ybScpLmZpbmQoJ2lucHV0Om5vdChbdHlwZT1zdWJtaXRdKSwgc2VsZWN0LCB0ZXh0YXJlYScpLnNlcmlhbGl6ZUFycmF5KCk7DQogICAgZGF0YS5wdXNoKHsnbmFtZSc6ICdtMV9hamF4JywgJ3ZhbHVlJzogMX0pOw0KICAgIGRhdGEucHVzaCh7J25hbWUnOiAnbTFfYXBwbHknLCAndmFsdWUnOiAxfSk7DQogICAgZGF0YS5wdXNoKHsnbmFtZSc6ICdzaG93dGVtcGxhdGUnLCAndmFsdWUnOiAnZmFsc2UnfSk7DQogICAgdmFyIHVybCA9IGpRdWVyeSgnZm9ybScpLmF0dHIoJ2FjdGlvbicpOw0KICAgIGpRdWVyeS5wb3N0KHVybCxkYXRhLGZ1bmN0aW9uKHJlc3VsdGRhdGEsdGV4dCl7DQogICAgICB2YXIgcmVzcCA9IGpRdWVyeShyZXN1bHRkYXRhKS5maW5kKCdSZXNwb25zZScpLnRleHQoKTsNCiAgICAgIHZhciBkZXRhaWxzID0galF1ZXJ5KHJlc3VsdGRhdGEpLmZpbmQoJ0RldGFpbHMnKS50ZXh0KCk7DQogICAgICB2YXIgaHRtbFNob3cgPSAnJzsNCiAgICAgIGlmKCByZXNwID09ICdTdWNjZXNzJyAmJiBkZXRhaWxzICE9ICcnICkNCiAgICAgIHsNCgkgaHRtbFNob3cgPSAnPGRpdiBjbGFzcz0icGFnZW1jb250YWluZXIiPjxwIGNsYXNzPSJwYWdlbWVzc2FnZSI+JytkZXRhaWxzKyc8XC9wPjxcL2Rpdj4nOw0KICAgICAgfQ0KICAgICAgZWxzZQ0KICAgICAgew0KCSBodG1sU2hvdyA9ICc8ZGl2IGNsYXNzPSJwYWdlZXJyb3Jjb250YWluZXIiPjx1bCBjbGFzcz0icGFnZWVycm9yIj4nOw0KCSBodG1sU2hvdyArPSBkZXRhaWxzOw0KCSBodG1sU2hvdyArPSAnPFwvdWw+PFwvZGl2Pic7DQogICAgICB9DQogICAgICBqUXVlcnkoJyNlZGl0YXJ0aWNsZV9yZXN1bHQnKS5odG1sKGh0bWxTaG93KTsNCiAgICB9LCd4bWwnKTsNCiAgICByZXR1cm4gZmFsc2U7DQogIH0pOw0KDQogIGZ1bmN0aW9uIG5ld3NfZG9wcmV2aWV3KCkNCiAgew0KICAgIGlmKCB0eXBlb2YgdGlueU1DRSAhPSAndW5kZWZpbmVkJykgdGlueU1DRS50cmlnZ2VyU2F2ZSgpOw0KICAgIHZhciBkYXRhID0galF1ZXJ5KCdmb3JtJykuZmluZCgnaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pLCBpbnB1dDpjaGVja2JveCwgaW5wdXQ6cmFkaW8sIHNlbGVjdCwgdGV4dGFyZWEnKS5zZXJpYWxpemVBcnJheSgpOw0KICAgIGRhdGEucHVzaCh7J25hbWUnOiAnbTFfYWpheCcsICd2YWx1ZSc6IDF9KTsNCiAgICBkYXRhLnB1c2goeyduYW1lJzogJ20xX3ByZXZpZXcnLCAndmFsdWUnOiAxfSk7DQogICAgZGF0YS5wdXNoKHsnbmFtZSc6ICdzaG93dGVtcGxhdGUnLCAndmFsdWUnOiAnZmFsc2UnfSk7DQogICAgZGF0YS5wdXNoKHsnbmFtZSc6ICdtMV9wcmV2aWV3cGFnZScsICd2YWx1ZSc6IGpRdWVyeSgnI3ByZXZpZXdfcmV0dXJuaWQnKS52YWwoKX0pOw0KICAgIGRhdGEucHVzaCh7J25hbWUnOiAnbTFfZGV0YWlsdGVtcGxhdGUnLCAndmFsdWUnOiBqUXVlcnkoJyNwcmV2aWV3X3RlbXBsYXRlJykudmFsKCl9KTsNCiAgICB2YXIgdXJsID0galF1ZXJ5KCdmb3JtJykuYXR0cignYWN0aW9uJyk7DQogICAgalF1ZXJ5LnBvc3QodXJsLGRhdGEsZnVuY3Rpb24ocmVzdWx0ZGF0YSx0ZXh0KXsNCiAgICAgIHZhciByZXNwID0galF1ZXJ5KHJlc3VsdGRhdGEpLmZpbmQoJ1Jlc3BvbnNlJykudGV4dCgpOw0KICAgICAgdmFyIGRldGFpbHMgPSBqUXVlcnkocmVzdWx0ZGF0YSkuZmluZCgnRGV0YWlscycpLnRleHQoKTsNCiAgICAgIHZhciBodG1sU2hvdyA9ICcnOw0KICAgICAgaWYoIHJlc3AgPT0gJ1N1Y2Nlc3MnICYmIGRldGFpbHMgIT0gJycgKQ0KICAgICAgew0KCSAvLyBwcmV2aWV3IHdvcmtlZC4uLiBub3cgdGhlIGRldGFpbHMgc2hvdWxkIGNvbnRhaW4gdGhlIHVybA0KICAgICAgICAgZGV0YWlscyA9IGRldGFpbHMucmVwbGFjZSgvYW1wOy9nLCcnKTsNCiAgICAgICAgIGpRdWVyeSgnI3ByZXZpZXdmcmFtZScpLmF0dHIoJ3NyYycsZGV0YWlscyk7DQogICAgICB9DQogICAgICBlbHNlDQogICAgICB7DQoJIGlmKCBkZXRhaWxzID09ICcnICkgZGV0YWlscyA9ICdBbiB1bmtub3duIGVycm9yIG9jY3VycmVkJzsNCg0KCSAvLyBwcmV2aWV3IHNhdmUgZGlkIG5vdCB3b3JrLg0KCSBodG1sU2hvdyA9ICc8ZGl2IGNsYXNzPSJwYWdlZXJyb3Jjb250YWluZXIiPjx1bCBjbGFzcz0icGFnZWVycm9yIj4nOw0KCSBodG1sU2hvdyArPSBkZXRhaWxzOw0KCSBodG1sU2hvdyArPSAnPFwvdWw+PFwvZGl2Pic7DQogICAgICAgICBqUXVlcnkoJyNlZGl0YXJ0aWNsZV9yZXN1bHQnKS5odG1sKGh0bWxTaG93KTsNCiAgICAgIH0NCiAgICB9LCd4bWwnKTsNCiAgfQ0KDQogIGpRdWVyeSgnI3ByZXZpZXcnKS5jbGljayhmdW5jdGlvbigpew0KICAgIG5ld3NfZG9wcmV2aWV3KCk7DQogICAgcmV0dXJuIGZhbHNlOw0KICB9KTsNCg0KICBqUXVlcnkoJyNwcmV2aWV3X3JldHVybmlkLCNwcmV2aWV3X3RlbXBsYXRlJykuY2hhbmdlKGZ1bmN0aW9uKCl7DQogICAgbmV3c19kb3ByZXZpZXcoKTsNCiAgICByZXR1cm4gZmFsc2U7DQogIH0pOw0KfSk7DQp7L2xpdGVyYWx9PC9zY3JpcHQ+DQoNCnsqIGRpc3BsYXkgYSB3YXJuaW5nICp9DQo8ZGl2IGNsYXNzPSJwYWdld2FybmluZyI+eyR3YXJuaW5nX3ByZXZpZXd9PC9kaXY+DQo8ZmllbGRzZXQ+DQogICAgDQogIDxsYWJlbCBmb3I9InByZXZpZXdfdGVtcGxhdGUiPnskcHJvbXB0X2RldGFpbF90ZW1wbGF0ZX06PC9sYWJlbD4mbmJzcDsNCiAgPHNlbGVjdCBpZD0icHJldmlld190ZW1wbGF0ZSIgbmFtZT0icHJldmlld190ZW1wbGF0ZSI+DQogIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kZGV0YWlsX3RlbXBsYXRlcyBzZWxlY3RlZD0kY3VyX2RldGFpbF90ZW1wbGF0ZX0NCiAgPC9zZWxlY3Q+Jm5ic3A7DQoNCiAgPGxhYmVsIGZvcj0icHJldmlld19yZXR1cm5pZCI+eyRwcm9tcHRfZGV0YWlsX3BhZ2V9OjwvbGFiZWw+Jm5ic3A7DQogIHskcHJldmlld19yZXR1cm5pZH0NCjwvZmllbGRzZXQ+DQo8YnIvPg0KPGlmcmFtZSBpZD0icHJldmlld2ZyYW1lIiBzdHlsZT0iaGVpZ2h0OiA4MDBweDsgd2lkdGg6IDEwMCU7IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBvdmVyZmxvdzogYXV0bzsiIHNyYz0iIj48L2lmcmFtZT4NCnskZW5kX3RhYl9wcmV2aWV3fQ0KeyRlbmRfdGFiX2NvbnRlbnR9DQp7L2lmfQ0KDQoNCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+e2lmIGlzc2V0KCRpdGVtX2lkKX17JGl0ZW1faWR9ey9pZn17JHN1Ym1pdH17JGNhbmNlbH17JGFwcGx5fSB7aWYgaXNTZXQoJGNvcHkpfXskY29weX17L2lmfXtpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdwcmV2aWV3X2FkbWluJyl9PHNwYW4gc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6NXB4OyI+eyRwcmV2aWV3X3ZpZXd9PC9zcGFuPnsvaWZ9PC9wPg0KPC9kaXY+DQoNCnskZW5kZm9ybX0NCg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/edittemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGV9PC9oMz4NCnskc3RhcnRmb3JtfQ0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiogeyRwcm9tcHRfbmFtZX06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfbmFtZX08L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90ZW1wbGF0ZX06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdGVtcGxhdGV9PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPntpZiBpc3NldCgkaWRmaWVsZCl9eyRpZGZpZWxkfXsvaWZ9eyRzdWJtaXR9eyRjYW5jZWx9eyRhcHBseX08L3A+DQo8L2Rpdj4NCnskaW5wdXRfdHlwZX0NCnskZW5kZm9ybX0NCg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/fielddeftab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9DQogICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCiAgICAgICAgLnNjcm9sbGFibGUgew0KICAgICAgICAgICAgZGlzcGxheTogbm9uZTsNCiAgICAgICAgICAgIHdpZHRoOiA5MCU7DQogICAgICAgIH0NCg0KICAgIDwvc3R5bGU+DQoNCiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQogICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsNCg0KICAgICAgICAkKCcjZmllbGRsaXN0ey9saXRlcmFsfXskc2VjdGlvbn17bGl0ZXJhbH0nKS50YWJsZURuRCgpOw0KICAgICAgJCgnOnN1Ym1pdC5zYXZlX2ZpZWxkc3svbGl0ZXJhbH17JHNlY3Rpb259e2xpdGVyYWx9JykuY2xpY2soZnVuY3Rpb24oKXsNCiAgICAgICAgdmFyIGRhdGEgPSBuZXcgQXJyYXk7DQogICAgICAgICQoJ3RhYmxlI2ZpZWxkbGlzdHsvbGl0ZXJhbH17JHNlY3Rpb259e2xpdGVyYWx9IHRyJykuZWFjaChmdW5jdGlvbihpLHRyKXsNCiAgICAgICAgICBkYXRhLnB1c2goJCh0cikuYXR0cignaWQnKSk7DQogICAgICAgIH0pOw0KICAgICAgICBkYXRhID0gZGF0YS5qb2luKCcsJyk7DQogICAgICAgICQoJyNmc2VyaWFsZGF0YXsvbGl0ZXJhbH17JHNlY3Rpb259e2xpdGVyYWx9JykudmFsKGRhdGEpOw0KICAgICAgfSk7DQogIA0KICAgIH0pOw0KDQogICAgPC9zY3JpcHQ+DQp7L2xpdGVyYWx9DQoNCg0KDQp7aWYgJGl0ZW1jb3VudCA+IDB9DQogICAgPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIGNtc19zb3J0YWJsZSB0YWJsZXNvcnRlciIgaWQ9ImZpZWxkbGlzdHskc2VjdGlvbn0iPg0KICAgICAgICA8dGhlYWQ+DQogICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgPHRoPjwvdGg+DQogICAgICAgICAgICAgICAgPHRoPnskZmllbGR0ZXh0fTwvdGg+DQogICAgICAgICAgICAgICAgPHRoPnskYWxpYXN9PC90aD4NCiAgICAgICAgICAgICAgICA8dGg+eyR0eXBldGV4dH08L3RoPg0KICAgICAgICAgICAgICAgIDx0aD57JHJlcXVpcmVkdGV4dH08L3RoPg0KICAgICAgICAgICAgICAgIDx0aD57JHNlYXJjaGFibGV0ZXh0fTwvdGg+DQogICAgICAgICAgICAgICAgPHRoPnskZnJvbnRlbmR0ZXh0fTwvdGg+DQogICAgICAgICAgICAgICAgPHRoPnskZWRpdHZpZXd0ZXh0fTwvdGg+DQogICAgICAgICAgICAgICAgPHRoPnskZmlsdGVyX2Zyb250ZW5kdGV4dH08L3RoPg0KICAgICAgICAgICAgICAgIDx0aD57JGZpbHRlcl9hZG1pbnRleHR9PC90aD4NCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPg0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+DQogICAgICAgICAgICA8L3RyPg0KICAgICAgICA8L3RoZWFkPg0KICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICB7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQ0KICAgICAgICAgICAgICAgIHtjeWNsZSB2YWx1ZXM9InJvdzEscm93MiIgYXNzaWduPSdyb3djbGFzcyd9DQogICAgICAgICAgICAgICAgPHRyIGlkPSJ7JGVudHJ5LT5pZH0iIGNsYXNzPSJ7JHJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfSc7Ij4NCiAgICAgICAgICAgICAgICAgICAgPHRkPnskZW50cnktPmlkfTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5hbGlhc308L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQ+eyRlbnRyeS0+dHlwZX08L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQ+eyRlbnRyeS0+cmVxdWlyZWR8dHJ1ZWZhbHNlfTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5zZWFyY2hhYmxlfHRydWVmYWxzZX08L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQ+eyRlbnRyeS0+ZnJvbnRlbmR8dHJ1ZWZhbHNlfTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5lZGl0dmlld3x0cnVlZmFsc2V9PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkPnskZW50cnktPmZpbHRlcl9mcm9udGVuZHx0cnVlZmFsc2V9PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkPnskZW50cnktPmZpbHRlcl9hZG1pbnx0cnVlZmFsc2V9PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+DQogICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIHsvZm9yZWFjaH0NCiAgICAgICAgPC90Ym9keT4NCiAgICA8L3RhYmxlPg0KDQogICAgeyRtb2QtPkNyZWF0ZUZvcm1TdGFydCgkYWN0aW9uaWQsICdhZG1pbl9tb3ZlZmllbGRkZWYnKX0NCiAgICA8aW5wdXQgaWQ9ImZzZXJpYWxkYXRheyRzZWN0aW9ufSIgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfXNlcmlhbGRhdGEiIHZhbHVlPSIiLz4NCiAgICA8aW5wdXQgaWQ9InNlY3Rpb24iIHR5cGU9ImhpZGRlbiIgbmFtZT0ieyRhY3Rpb25pZH1zZWN0aW9uIiB2YWx1ZT0ieyRzZWN0aW9ufSIvPg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4NCiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0ic2F2ZV9maWVsZHN7JHNlY3Rpb259IiB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3NhdmVfb3JkZXInKX0iLz4NCiAgICAgICAgPC9wPg0KICAgIDwvZGl2PiAgICAgICAgDQogICAgeyRtb2QtPkNyZWF0ZUZvcm1FbmQoKX0NCg0Key9pZn0NCg0KDQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRhZGRsaW5rfTwvZGl2Pg0K]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/filter.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8ZGl2Pg0KeyRmb3Jtc3RhcnR9DQo8ZmllbGRzZXQgc3R5bGU9ImZsb2F0OmxlZnQ7IHdpZHRoOjQ5JTsiPg0KPGxlZ2VuZD57JG1vZC0+TGFuZygnZmlsdGVycycpfTombmJzcDs8L2xlZ2VuZD4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2hpZXJhcmNoeScpfTo8L3A+DQogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaGllcmFyY2h5fSZuYnNwO3skbW9kLT5MYW5nKCdpbmNsdWRlX2NoaWxkcmVuJyl9IHskaW5wdXRfY2hpbGRyZW59PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfc3VtbWFyeV9zb3J0aW5nJyl9OjwvcD4NCiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9zb3J0Ynl9PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfc3VtbWFyeV9zb3J0b3JkZXInKX06PC9wPg0KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3NvcnRvcmRlcn08L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3BhZ2VfbGltaXQnKX06PC9wPg0KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3BhZ2VsaW1pdH08L3A+DQo8L2Rpdj4NCntpZiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2RhdGVfZWRpdCcpfQ0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnZGF0ZScpfTwvcD4NCiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+ICAJDQogIHskbW9kLT5MYW5nKCdmcm9tJyl9DQogIHtjYXB0dXJlIGFzc2lnbj0iaWRmcm9tZGF0ZSJ9eyRtb2QtPkdldEFjdGlvbklkKCl9ZGF0ZWZyb217L2NhcHR1cmV9DQogIHtodG1sX3NlbGVjdF9kYXRlIGZpZWxkX29yZGVyPURNWSBwcmVmaXg9JGlkZnJvbWRhdGUgdGltZT0kZGF0ZV9mcm9tIHN0YXJ0X3llYXI9Ii0xMCIgZW5kX3llYXI9IisxIn0NCiAgJm5ic3A7DQogIHskbW9kLT5MYW5nKCd0bycpfQ0KICB7Y2FwdHVyZSBhc3NpZ249ImlkdG9kYXRlIn17JG1vZC0+R2V0QWN0aW9uSWQoKX1kYXRldG97L2NhcHR1cmV9DQogIHtodG1sX3NlbGVjdF9kYXRlIGZpZWxkX29yZGVyPURNWSBwcmVmaXg9JGlkdG9kYXRlIHRpbWU9JGRhdGVfdG8gc3RhcnRfeWVhcj0iLTEwIiBlbmRfeWVhcj0iKzEifQ0KICA8L3A+DQo8L2Rpdj4NCnsvaWZ9DQoNCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPg0KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JG1vZC0+R2V0QWN0aW9uSWQoKX1zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc3VibWl0Jyl9Ij48L3A+DQo8L2Rpdj4NCg0KPC9maWVsZHNldD4NCg0KeyRmb3JtZW5kfQ0KPC9kaXY+Kn0NCg0KDQoNCg0KPGRpdiBjbGFzcz0iY29udGVudCBkZXN0aW5hdGlvbnMiPg0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICB7JGZvcm1zdGFydH0NCiAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGVnZW5kPkZpbHRlcjwvbGVnZW5kPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlc3RfY29sdW1uIj48c2VsZWN0PjxvcHRpb24+S3JhamluYTwvb3B0aW9uPjxvcHRpb24+MTwvb3B0aW9uPjxvcHRpb24+Mjwvb3B0aW9uPjwvc2VsZWN0PjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlc3RfY29sdW1uIj48c2VsZWN0PjxvcHRpb24+RGVzdGluw6FjaWE8L29wdGlvbj48b3B0aW9uPjE8L29wdGlvbj48b3B0aW9uPjI8L29wdGlvbj48L3NlbGVjdD48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXN0X2NvbHVtbiI+PHNlbGVjdD48b3B0aW9uPkNoYXJha3RlcmlzdGlrYTwvb3B0aW9uPjxvcHRpb24+MTwvb3B0aW9uPjxvcHRpb24+Mjwvb3B0aW9uPjwvc2VsZWN0PjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNsZWFyIj48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+DQogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaHJfZnVsbCI+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDxoMz5ab3puYW0gZGVzdGluw6FjacOtPC9oMz4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVzdF9jb2x1bW4iPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGg0PkVVUsOTUEE8L2g0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIj5BbGlsYSBWaWxsYXMgU29vcmksIEJhbGk8L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIj5BbGlsYSBWaWxsYXMgVGFpd2FuPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+QWxpbGEgVWx1d2F0dSwgQ2F0YW1hcmFuPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+TWFuZ2lzLCBUYWl3YW48L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgICAgICAgICAgICAgICA8aDQ+QUZSSUtBPC9oND4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+QWxpbGEgVmlsbGFzLCBUYWl3YW48L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIj5BbGlsYSBVbHV3YXR1LCBDYXRhbWFyYW48L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlc3RfY29sdW1uIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxoND5BTUVSSUtBPC9oND4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+QWxpbGEgVmlsbGFzIFNvb3JpLCBCYWxpPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+QWxpbGEgVmlsbGFzIFRhaXdhbjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIiPkFsaWxhIFVsdXdhdHUsIENhdGFtYXJhbjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIiPk1hbmdpcywgVGFpd2FuPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+QWxpbGEgVmlsbGFzIFRhaXdhbjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIiPkFsaWxhIFVsdXdhdHUsIENhdGFtYXJhbjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIiPk1hbmdpcywgVGFpd2FuPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+QWxpYWxpPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXN0X2NvbHVtbiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8aDQ+w4FaSUE8L2g0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIj5BbGlsYSBWaWxsYXMgU29vcmksIEJhbGk8L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIj5BbGlsYSBWaWxsYXMgVGFpd2FuPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+QWxpbGEgVWx1d2F0dSwgQ2F0YW1hcmFuPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGg0PkFVU1RSw4FMSUE8L2g0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIj5BbGlsYSBWaWxsYXMgU29vcmksIEJhbGk8L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIj5BbGlsYSBWaWxsYXMgVGFpd2FuPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICB7JGZvcm1lbmR9DQogICAgICAgICAgICAgICAgPC9kaXY+DQoNCg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/frontend_bigmedia1.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e1NuaXBwZXRzIG5hbWU9InZ5aHJhIDEifQ==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/frontend_bigmedia2.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e1NuaXBwZXRzIG5hbWU9InZ5aHJhIDIifQ==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/itemtab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Fzc2lnbiB2YXI9Im9sZGFjdGlvbmlkIiB2YWx1ZT0kYWN0aW9uaWR9DQoNCntpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdtb2RlJykgPT0gInNpbXBsZSJ9DQogICAge2xpdGVyYWx9DQogICAgICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQogICAgICAgICAgICAuc2Nyb2xsYWJsZSB7DQogICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTsNCiAgICAgICAgICAgICAgICB3aWR0aDogOTAlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgIDwvc3R5bGU+DQoNCiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpew0KDQoNCiAgICAgICAgICAgICAgJCgnI2l0ZW1saXN0JykudGFibGVEbkQoKTsNCiAgICAgICAgICAkKCc6c3VibWl0LnNhdmVfaXRlbXMnKS5jbGljayhmdW5jdGlvbigpew0KICAgICAgICAgICAgdmFyIGRhdGEgPSBuZXcgQXJyYXk7DQogICAgICAgICAgICAkKCd0YWJsZSNpdGVtbGlzdCB0cicpLmVhY2goZnVuY3Rpb24oaSx0cil7DQogICAgICAgICAgICAgIGRhdGEucHVzaCgkKHRyKS5hdHRyKCdpZCcpKTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgZGF0YSA9IGRhdGEuam9pbignLCcpOw0KICAgICAgICAgICAgJCgnI3NlcmlhbGRhdGEnKS52YWwoZGF0YSk7DQogICAgICAgICAgfSk7DQogIA0KICAgICAgICB9KTsNCg0KICAgICAgICA8L3NjcmlwdD4NCiAgICB7L2xpdGVyYWx9DQp7L2lmfQ0KDQoNCjxkaXY+DQogICAgeyRmb3Jtc3RhcnR9DQogICAge2lmICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ21vZGUnKSAhPSAic2ltcGxlIn0NCiAgICAgICAgPGZpZWxkc2V0Pg0KICAgICAgICAgICAgPGxlZ2VuZD57JG1vZHVsZS0+TGFuZygnZmlsdGVycycpfTombmJzcDs8L2xlZ2VuZD4NCiAgICAgICAgICAgIHtpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdtb2RlJykgIT0gInNpbXBsZSJ9DQogICAgICAgICAgICAgICAge2lmICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2l0ZW1fY2F0ZWdvcnlfZWRpdCcsIDApfQ0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2R1bGUtPkxhbmcoJ2hpZXJhcmNoeScpfTo8L3A+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaGllcmFyY2h5fSZuYnNwO3skbW9kdWxlLT5MYW5nKCdpbmNsdWRlX2NoaWxkcmVuJyl9IHskaW5wdXRfY2hpbGRyZW59PC9wPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIHsvaWZ9DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZHVsZS0+TGFuZygncHJvbXB0X3N1bW1hcnlfc29ydGluZycpfTo8L3A+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc29ydGJ5fTwvcD4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kdWxlLT5MYW5nKCdwcm9tcHRfc3VtbWFyeV9zb3J0b3JkZXInKX06PC9wPg0KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3NvcnRvcmRlcn08L3A+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZHVsZS0+TGFuZygncGFnZV9saW1pdCcpfTo8L3A+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcGFnZWxpbWl0fTwvcD4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICB7aWYgJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnZmlsdGVyX2RhdGUnKX0NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2R1bGUtPkxhbmcoJ2RhdGUnKX08L3A+DQogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4gIAkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JG1vZHVsZS0+TGFuZygnZnJvbScpfQ0KICAgICAgICAgICAgICAgICAgICAgICAge2NhcHR1cmUgYXNzaWduPSJpZGZyb21kYXRlIn17JG1vZHVsZS0+R2V0QWN0aW9uSWQoKX1kYXRlZnJvbXsvY2FwdHVyZX0NCiAgICAgICAgICAgICAgICAgICAgICAgIHtodG1sX3NlbGVjdF9kYXRlIGZpZWxkX29yZGVyPURNWSBwcmVmaXg9JGlkZnJvbWRhdGUgdGltZT0kZGF0ZV9mcm9tIHN0YXJ0X3llYXI9Ii0xMCIgZW5kX3llYXI9IisxIn0NCiAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgeyRtb2R1bGUtPkxhbmcoJ3RvJyl9DQogICAgICAgICAgICAgICAgICAgIHtjYXB0dXJlIGFzc2lnbj0iaWR0b2RhdGUifXskbW9kdWxlLT5HZXRBY3Rpb25JZCgpfWRhdGV0b3svY2FwdHVyZX0NCiAgICAgICAgICAgICAgICAgICAge2h0bWxfc2VsZWN0X2RhdGUgZmllbGRfb3JkZXI9RE1ZIHByZWZpeD0kaWR0b2RhdGUgdGltZT0kZGF0ZV90byBzdGFydF95ZWFyPSItMTAiIGVuZF95ZWFyPSIrMSJ9DQogICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIHsvaWZ9DQogICAgey9pZn0NCg0KICAgIHtpZiBpc3NldCgkY3VzdG9tX2ZpZWxkZGVmKX0NCiAgICAgICAge2ZvcmVhY2ggZnJvbT0kY3VzdG9tX2ZpZWxkZGVmIGl0ZW09J2ZpZWxkJ30NCiAgICAgICAgICAgIHtpZiAkZmllbGQtPmZpZWxkfQ0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRmaWVsZC0+cHJvbXB0fTo8L3A+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KICAgICAgICAgICAgICAgICAgICB7aWYgIWVtcHR5KCRmaWVsZC0+aGVscCl9KHskZmllbGQtPmhlbHB9KTxiciAvPnsvaWZ9DQogICAgICAgICAgICAgICAgICAgIHskZmllbGQtPmZpZWxkfQ0KICAgICAgICAgICAgICAgICAgICB7aWYgaXNzZXQoJGZpZWxkLT5maWxlbmFtZSl9PGJyIC8+DQogICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIHskZmllbGQtPmRlbGV0ZV9maWxlfSB7JGZpZWxkLT5maWxlbmFtZX08YnIgLz4NCiAgICAgICAgICAgICAgICAgICAgey9pZn0NCiAgICAgICAgICAgICAgICA8L3A+DQogICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICB7ZWxzZX0NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkLT5wcm9tcHR9PC9wPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIHsvaWZ9DQogICAgey9mb3JlYWNofQ0Key9pZn0NCg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JG1vZHVsZS0+R2V0QWN0aW9uSWQoKX1zdWJtaXQiIHZhbHVlPSJ7JG1vZHVsZS0+TGFuZygnc3VibWl0Jyl9Ij48L3A+DQo8L2Rpdj4NCg0KPC9maWVsZHNldD4NCnsvaWZ9DQp7JGZvcm1lbmR9DQo8L2Rpdj4NCg0KDQo8YnIgc3R5bGU9ImNsZWFyOmJvdGg7IiAvPg0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRhZGRsaW5rfTwvcD48L2Rpdj4NCntpZiAkaXRlbWNvdW50ID4gMH0NCg0KICAgIDxkaXYgaWQ9InByb2R1Y3RsaXN0Ij4NCiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPntsaXRlcmFsfQ0KICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpew0KICAgICAgICAgICQoJyNzZWxlY3RfYWxsX2l0ZW1zJykuY2xpY2soZnVuY3Rpb24oKXsNCiAgICAgICAgICAgIHZhciBjaGVja2VkID0gJCh0aGlzKS5hdHRyKCdjaGVja2VkJyk7DQogICAgICAgICAgICAkKCcubXVsdGlzZWxlY3QnKS5hdHRyKCdjaGVja2VkJyxjaGVja2VkID09IHVuZGVmaW5lZCA/IGZhbHNlIDogY2hlY2tlZCk7IA0KICAgICAgICAgIH0pOw0KICAgICAgICAgICQoJyNidWxrYWN0aW9uX3N1Ym1pdCcpLmNsaWNrKGZ1bmN0aW9uKCl7DQogICAgICAgICAgICB2YXIgbGVuID0gJCgnI2l0ZW1saXN0IHRib2R5IGlucHV0OmNoZWNrYm94OmNoZWNrZWQnKS5sZW5ndGg7DQogICAgICAgICAgICBpZiggbGVuID09IDAgKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBhbGVydCgney9saXRlcmFsfXskbW9kdWxlLT5MYW5nKCdub3RoaW5nX3NlbGVjdGVkJyl9e2xpdGVyYWx9Jyk7DQogICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgIH0pOw0KICAgICAgICB9KTsNCiAgICAgICAgICAgIHsvbGl0ZXJhbH08L3NjcmlwdD4NCiAgICAgICAgICAgICAgICB7JGZvcm1zdGFydDJ9DQogICAgICAgICAgICAgICAge2lmIGlzc2V0KCRmaXJzdHBhZ2VfdXJsKX0NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJ7JGZpcnN0cGFnZV91cmx9IiB0aXRsZT0ieyRtb2R1bGUtPkxhbmcoJ2ZpcnN0cGFnZScpfSI+eyRtb2R1bGUtPkxhbmcoJ2ZpcnN0cGFnZScpfTwvYT4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJ7JHByZXZwYWdlX3VybH0iIHRpdGxlPSJ7JG1vZHVsZS0+TGFuZygncHJldnBhZ2UnKX0iPnskbW9kdWxlLT5MYW5nKCdwcmV2cGFnZScpfTwvYT4NCiAgICAgICAgICAgIHsvaWZ9DQogICAgICAgICAgICB7aWYgaXNzZXQoJGZpcnN0cGFnZV91cmwpIHx8IGlzc2V0KCRsYXN0cGFnZV91cmwpfQ0KICAgICAgICAgICAgICAgIHskbW9kdWxlLT5MYW5nKCdwYWdlX29mJywkcGFnZW51bWJlciwkcGFnZWNvdW50KX0NCiAgICAgICAgICAgIHsvaWZ9DQogICAgICAgICAgICB7aWYgaXNzZXQoJGxhc3RwYWdlX3VybCl9DQogICAgICAgICAgICAgICAgPGEgaHJlZj0ieyRuZXh0cGFnZV91cmx9IiB0aXRsZT0ieyRtb2R1bGUtPkxhbmcoJ25leHRwYWdlJyl9Ij57JG1vZHVsZS0+TGFuZygnbmV4dHBhZ2UnKX08L2E+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0ieyRsYXN0cGFnZV91cmx9IiB0aXRsZT0ieyRtb2R1bGUtPkxhbmcoJ2xhc3RwYWdlJyl9Ij57JG1vZHVsZS0+TGFuZygnbGFzdHBhZ2UnKX08L2E+DQogICAgICAgICAgICB7L2lmfQ0KDQoNCiAgICAgICAgICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSBjbXNfc29ydGFibGUgdGFibGVzb3J0ZXIiIGlkPSJpdGVtbGlzdCI+DQogICAgICAgICAgICAgICAgPHRoZWFkPg0KICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGg+eyRpZHRleHR9PC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgIHtpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3RpdGxlX2VkaXQnKX0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+eyRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2l0ZW1fdGl0bGUnKX08L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgey9pZn0NCiAgICAgICAgICAgICAgICAgICAge2lmICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2l0ZW1fZGF0ZV9lZGl0JywgMCl9PHRoPnskbW9kdWxlLT5MYW5nKCdkYXRlJyl9PC90aD57L2lmfQ0KICAgICAgICAgICAgICAgIHtpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2RhdGVfZW5kX2VkaXQnLCAwKX08dGg+eyRtb2R1bGUtPkxhbmcoJ2RhdGVfZW5kJyl9PC90aD57L2lmfQ0KICAgICAgICAgICAge2lmICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2l0ZW1fY2F0ZWdvcnlfZWRpdCcsIDApfTx0aD57JG1vZHVsZS0+TGFuZygnY2F0ZWdvcnknKX08L3RoPnsvaWZ9DQoNCiAgICAgICAgICAgIHtpZiBpc3NldCgkY3VzdG9tX2ZpZWxkcyl9DQogICAgICAgICAgICAgICAge2ZvcmVhY2ggZnJvbT0kY3VzdG9tX2ZpZWxkcyBpdGVtPSdmaWQnfQ0KICAgICAgICAgICAgICAgICAgICA8dGg+eyRmaWVsZHNfdmlld2FibGUuJGZpZH08L3RoPg0KICAgICAgICAgICAgICAgIHsvZm9yZWFjaH0NCiAgICAgICAgICAgIHsvaWZ9DQoNCiAgICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+DQoNCiAgICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24ge2xpdGVyYWx9e3NvcnRlcjogZmFsc2V9ey9saXRlcmFsfSI+Jm5ic3A7PC90aD4NCiAgICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24ge2xpdGVyYWx9e3NvcnRlcjogZmFsc2V9ey9saXRlcmFsfSI+Jm5ic3A7PC90aD4NCiAgICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24ge2xpdGVyYWx9e3NvcnRlcjogZmFsc2V9ey9saXRlcmFsfSI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiB0aXRsZT0ieyRtb2R1bGUtPkxhbmcoJ3NlbGVjdF9hbGwnKX0iIHZhbHVlPSIxIiBuYW1lPSJzZWxlY3RfYWxsIiBpZD0ic2VsZWN0X2FsbF9pdGVtcyI+PC90aD4NCiAgICAgICAgPC90cj4NCiAgICA8L3RoZWFkPg0KICAgIDx0Ym9keT4NCiAgICAgICAge2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0NCiAgICAgICAgICAgIHtjeWNsZSB2YWx1ZXM9InJvdzEscm93MiIgYXNzaWduPSdyb3djbGFzcyd9DQogICAgICAgICAgICB7Kjx0ciBjbGFzcz0ieyRyb3djbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc30nOyI+Kn0NCiAgICAgICAgICAgIDx0ciBpZD0ieyRlbnRyeS0+aXRlbV9pZH0iPg0KICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5pdGVtX2lkfTwvdGQ+DQogICAgICAgICAgICAgICAge2lmICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2l0ZW1fdGl0bGVfZWRpdCcpfTx0ZD48YSBocmVmPSJ7JGVudHJ5LT5lZGl0X3VybH0iIHRpdGxlPSJ7JG1vZHVsZS0+TGFuZygnZWRpdCcpfSI+eyRlbnRyeS0+dGl0bGV9PC9hPjwvdGQ+DQogICAgICAgICAgICAgICAgey9pZn0NCiAgICAgICAgICAgIHtpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2RhdGVfZWRpdCcsIDApfQkgICAgICAgICAgICAgICAgPHRkPnskZW50cnktPml0ZW1fZGF0ZXxjbXNfZGF0ZV9mb3JtYXR9PC90ZD57L2lmfQ0KICAgICAgICB7aWYgJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kYXRlX2VuZF9lZGl0JywgMCl9CSAgICAgICAgICAgICAgICA8dGQ+eyRlbnRyeS0+aXRlbV9kYXRlX2VuZHxjbXNfZGF0ZV9mb3JtYXR9PC90ZD57L2lmfQ0KICAgIHtpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2NhdGVnb3J5X2VkaXQnLCAwKX0JICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5sb25nX25hbWV9PC90ZD57L2lmfQ0KICAgIHtpZiBpc3NldCgkY3VzdG9tX2ZpZWxkcyl9DQogICAgICAgIHtmb3JlYWNoIGZyb209JGN1c3RvbV9maWVsZHMgaXRlbT0nZmlkJ30NCiAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgIHtjYXB0dXJlIGFzc2lnbj0ndG1wJ31GbGRfX3skZmllbGRfbmFtZXMuJGZpZH17L2NhcHR1cmV9DQogICAgICAgICAgICB7aWYgJGZpZWxkX21vZHVsZXMuJGZpZH0NCiAgICAgICAgICAgICAgICB7aWYgJGVudHJ5LT4kdG1wfQ0KICAgICAgICB7Y2FwdHVyZSBhc3NpZ249InRtcG1vZHVsZSJ9e2xpdGVyYWx9e2Ntc19tb2R1bGV7L2xpdGVyYWx9IG1vZHVsZT0ieyRmaWVsZF9tb2R1bGVzLiRmaWR9IiAgYWxscm93PSJ0bXByb3dzIiBmaWx0ZXJfaXRlbUlkX2luPSJ7JGVudHJ5LT4kdG1wfSJ7bGl0ZXJhbH19ey9saXRlcmFsfXsvY2FwdHVyZX0NCiAgICB7L2lmfQ0KICAgIHtldmFsIHZhcj0kdG1wbW9kdWxlfQ0KICAgIHtpZiAkdG1wcm93c30NCiAgICAgICAge2ZvcmVhY2ggZnJvbT0kdG1wcm93cyBpdGVtPSd0bXByb3cnIG5hbWU9Im1vZHVsZSJ9DQogICAgICAgIHskdG1wcm93LT50aXRsZX17aWYgJHNtYXJ0eS5mb3JlYWNoLm1vZHVsZS5sYXN0PT1mYWxzZX0sey9pZn0NCiAgICB7L2ZvcmVhY2h9DQp7L2lmfQ0Ke2Fzc2lnbiB2YXI9InRtcHJvd3MiIHZhbHVlPSIifQ0Ke2Fzc2lnbiB2YXI9InRtcG1vZHVsZSIgdmFsdWU9IiJ9DQp7ZWxzZWlmICRmaWVsZF9pbWFnZXMuJGZpZCAmJiAkZW50cnktPiR0bXB9DQp7Y2FwdHVyZSBhc3NpZ249InNyYyJ9eyRlbnRyeS0+ZmlsZV9sb2NhdGlvbn0veyRlbnRyeS0+JHRtcH17L2NhcHR1cmV9DQp7Y2FwdHVyZSBhc3NpZ249InNyY3BhdGgifXskZW50cnktPmZpbGVwYXRoX2xvY2F0aW9ufS97JGVudHJ5LT4kdG1wfXsvY2FwdHVyZX0NCntpZiAkc3JjcGF0aHxAZ2V0aW1hZ2VzaXplfQ0KICAgIHtjbXNfbW9kdWxlIG1vZHVsZT0iQ0dTbWFydEltYWdlIiBzcmM9JHNyY3BhdGggIGZpbHRlcl9yZXNpemU9ImgsNTAiIHN0eWxlPSJtYXJnaW46NXB4IDA7In0gICAgDQp7ZWxzZX0NCiAgICA8YSBocmVmPSJ7JGVudHJ5LT5maWxlX2xvY2F0aW9ufS97JGVudHJ5LT4kdG1wfSI+eyRlbnRyeS0+JHRtcH08L2E+DQp7L2lmfQ0Ke2Vsc2V9DQogICAgeyRlbnRyeS0+JHRtcH0NCnsvaWZ9DQo8L3RkPg0Key9mb3JlYWNofQ0Key9pZn0NCg0KPHRkPnskZW50cnktPmFwcHJvdmV9PC90ZD4NCg0KPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+DQo8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPg0KPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9Im11bHRpc2VsZWN0IiBuYW1lPSJ7JG9sZGFjdGlvbmlkfW11bHRpc2VsZWN0W10iIHZhbHVlPSJ7JGVudHJ5LT5pdGVtX2lkfSI+PC90ZD4NCjwvdHI+DQp7L2ZvcmVhY2h9DQo8L3Rib2R5Pg0KPC90YWJsZT4NCg0Ke2lmICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ21vZGUnKSA9PSAic2ltcGxlIn0NCiAgICB7JG1vZHVsZS0+Q3JlYXRlRm9ybVN0YXJ0KCRvbGRhY3Rpb25pZCwgJ2FkbWluX21vdmVpdGVtJyl9DQogICAgPGlucHV0IGlkPSJzZXJpYWxkYXRhIiB0eXBlPSJoaWRkZW4iIG5hbWU9Inskb2xkYWN0aW9uaWR9c2VyaWFsZGF0YSIgdmFsdWU9IiIvPg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4NCiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0ic2F2ZV9pdGVtcyIgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JG9sZGFjdGlvbmlkfXN1Ym1pdCIgdmFsdWU9InskbW9kdWxlLT5MYW5nKCdzYXZlX29yZGVyJyl9Ii8+DQogICAgICAgIDwvcD4NCiAgICA8L2Rpdj4NCiAgICB7JG1vZHVsZS0+Q3JlYXRlRm9ybUVuZCgpfQ0Key9pZn0NCg0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRhZGRsaW5rfTwvcD48L2Rpdj4NCntpZiAkaXRlbWNvdW50IGd0IDB9DQogICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7IHdpZHRoOiA0MCU7IGZsb2F0OiByaWdodDsgbWFyZ2luLXRvcDogMC41ZW07Ij4NCiAgICAgICAgeyRtb2R1bGUtPkxhbmcoJ3dpdGhfc2VsZWN0ZWQnKX06DQogICAgICAgIDxzZWxlY3QgbmFtZT0ieyRvbGRhY3Rpb25pZH1idWxrYWN0aW9uIj57aHRtbF9vcHRpb25zIG9wdGlvbnM9JGJ1bGthY3Rpb25zfTwvc2VsZWN0Pg0KICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBpZD0iYnVsa2FjdGlvbl9zdWJtaXQiIG5hbWU9Inskb2xkYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2R1bGUtPkxhbmcoJ2dvJyl9Ii8+DQogICAgPC9kaXY+DQp7L2lmfQ0KeyRmb3JtZW5kMn08L2Rpdj4NCnsvaWZ9DQoNCg0KPGJyIHN0eWxlPSJjbGVhcjpib3RoIiAvPg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/optiontab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9DQogICAgPHNjcmlwdCB0eWxlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7DQogICAgJCgiI2FkdmFuY2VkLCNzaW1wbGUiKS5oaWRlKCk7DQogICAgJCgiIyIrJCgiI21vZGUgc2VsZWN0IikudmFsKCkpLmZhZGVJbigpOzsNCg0KICAgICQoIiNtb2RlIHNlbGVjdCIpLmNoYW5nZShmdW5jdGlvbigpew0KICAgICQoIiNhZHZhbmNlZCwjc2ltcGxlIikuaGlkZSgpOw0KICAgICQoIiMiKyQodGhpcykudmFsKCkpLmZhZGVJbigpOzsNCiAgICB9KQ0KICAgIH0pDQogICAgPC9zY3JpcHQ+DQp7L2xpdGVyYWx9DQoNCu+7v3skc3RhcnRmb3JtfQ0KDQo8ZmllbGRzZXQ+DQogICAgPGgzPnskbW9kLT5MYW5nKCdnbG9iYWwnKX08L2gzPg0KDQoNCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3VybF9wcmVmaXh9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF91cmxfcHJlZml4fTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2RlZmF1bHRfYWN0aW9uX3BhcmFtc306PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2RlZmF1bHRfYWN0aW9uX3BhcmFtc308L3A+DQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9kZXRhaWxfYWN0aW9uX3BhcmFtc306PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2RldGFpbF9hY3Rpb25fcGFyYW1zfTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3RpdGxlX3BhcmFtX2Zvcl9jYWNoZX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RpdGxlX3BhcmFtX2Zvcl9jYWNoZX08L3A+DQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9kaXNwbGF5X2lubGluZX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2Rpc3BsYXlfaW5saW5lfTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2xhenlsb2FkaW5nfTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfbGF6eWxvYWRpbmd9PC9wPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaXRlbV9kZXRhaWxfcmV0dXJuaWR9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9pdGVtX2RldGFpbF9yZXR1cm5pZH08L3A+DQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9pdGVtX2NhdGVnb3J5X3JldHVybmlkfTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaXRlbV9jYXRlZ29yeV9yZXR1cm5pZH08L3A+DQogICAgPC9kaXY+DQo8L2ZpZWxkc2V0Pg0KPGZpZWxkc2V0Pg0KICAgIDxoMz57JG1vZC0+TGFuZygnYWRtaW5fYXJlYScpfTwvaDM+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnaW1hZ2VzX3NpemVfYWRtaW4nKX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0idGV4dCIgdmFsdWU9InskbW9kLT5HZXRQcmVmZXJlbmNlKCdpbWFnZXNfc2l6ZV9hZG1pbicpfSIgbmFtZT0ieyRhY3Rpb25pZH1pbWFnZXNfc2l6ZV9hZG1pbiIgLz4NCiAgICAgICAgICAgIDxzcGFuPiAqeyRtb2QtPkxhbmcoJ2ltYWdlX3NpemVfYWRtaW5faW5mbycpfTwvc3Bhbj4NCiAgICAgICAgPC9wPg0KDQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9mcmllbmRseW5hbWV9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9mcmllbmRseW5hbWV9PC9wPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaXRlbV90aXRsZX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2l0ZW1fdGl0bGV9PC9wPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaXRlbV9zaW5ndWxhcn06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2l0ZW1fc2luZ3VsYXJ9PC9wPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaXRlbV9wbHVyYWx9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9pdGVtX3BsdXJhbH08L3A+DQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9jYXRlZ29yeV9leHRyYV9sYWJlbH06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NhdGVnb3J5X2V4dHJhX2xhYmVsfTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2NhdGVnb3J5X2V4dHJhX2xhYmVsfSAyOjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9jYXRlZ29yeV9leHRyYTJfbGFiZWx9PC9wPg0KICAgIDwvZGl2Pg0KDQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnY29weV9hZG1pbicpfTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfY29weV9hZG1pbn08L3A+DQogICAgPC9kaXY+DQoNCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcmV2aWV3X2FkbWluJyl9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9wcmV2aWV3X2FkbWlufTwvcD4NCiAgICA8L2Rpdj4NCg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaGFzX2FkbWlufTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaGFzX2FkbWlufTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3VzZXJncm91cF9kZXBlbmRlbmNlfTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdXNlcmdyb3VwX2RlcGVuZGVuY2V9PC9wPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfY3VzdG9tX2ZpZWxkc19kZWZhdWx0fTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KICAgICAgICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbV9maWVsZHNfZGVmYXVsdFtdIiBzaXplPSI2IiBtdWx0aXBsZT0ibXVsdGlwbGUiPg0KICAgICAgICAgICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kZmllbGRzX3ZpZXdhYmxlIHNlbGVjdGVkPSRjdXN0b21fZmllbGRzX2RlZmF1bHR9DQogICAgICAgICAgICA8L3NlbGVjdD4NCiAgICAgICAgPC9wPg0KICAgIDwvZGl2Pg0KPC9maWVsZHNldD4NCjxiciAvPg0KPC9maWVsZHNldD4NCjxiciAvPg0KDQo8ZmllbGRzZXQ+DQogICAgPGgzPnskbW9kLT5MYW5nKCdzZWFyY2gnKX08L2gzPg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfc2VhcmNoYWJsZX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3NlYXJjaGFibGV9PC9wPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfc2VhcmNoX2RhdGVfZW5kfTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc2VhcmNoX2RhdGVfZW5kfTwvcD4NCiAgICA8L2Rpdj4NCiAgICB7aWYgJHNlYXJjaGFibGV9DQogICAgICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4NCiAgICAgICAgICAgICAgICA8YnIgLz4NCiAgICAgICAgICAgICAgICB7JHNlYXJjaGFibGVfbGlua30NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgPC9kaXY+DQogICAgey9pZn0NCjwvZmllbGRzZXQ+DQo8YnIgLz4NCjxmaWVsZHNldD4NCiAgICA8aDM+eyRtb2QtPkxhbmcoJ2VkaXQnKX08L2gzPg0KDQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9maWx0ZXJfZGF0ZX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2ZpbHRlcl9kYXRlfTwvcD4NCiAgICA8L2Rpdj4gICANCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3JlY3Vyc2l2ZX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3JlY3Vyc2l2ZX08L3A+DQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9pdGVtX3RpdGxlX2VkaXR9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9pdGVtX3RpdGxlX2VkaXR9PC9wPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaXRlbV9hbGlhc19lZGl0fTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaXRlbV9hbGlhc19lZGl0fTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2l0ZW1fdXJsX2VkaXR9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9pdGVtX3VybF9lZGl0fTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2l0ZW1fZGF0ZV9lZGl0fTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaXRlbV9kYXRlX2VkaXR9PC9wPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaXRlbV9kYXRlX2VuZF9lZGl0fTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaXRlbV9kYXRlX2VuZF9lZGl0fTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2l0ZW1fY2F0ZWdvcnlfZWRpdH06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2l0ZW1fY2F0ZWdvcnlfZWRpdH08L3A+DQogICAgPC9kaXY+DQo8L2ZpZWxkc2V0Pg0KPGJyIC8+DQo8ZmllbGRzZXQ+DQogICAgPGgzPnskcHJvbXB0X21vZGV9PC9oMz4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0IiBpZD0ibW9kZSI+eyRpbnB1dF9tb2RlfTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGlkPSJhZHZhbmNlZCI+DQogICAgICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3N1bW1hcnlfc29ydGluZ306PC9wPg0KICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9zdW1tYXJ5X3NvcnRpbmdfYWR2YW5jZWR9PC9wPg0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfc3VtbWFyeV9zb3J0b3JkZXJ9OjwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc3VtbWFyeV9zb3J0b3JkZXJfYWR2YW5jZWR9PC9wPg0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfc3VtbWFyeV9wYWdlbGltaXR9OjwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc3VtbWFyeV9wYWdlbGltaXRfYWR2YW5jZWR9PC9wPg0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGlkPSJzaW1wbGUiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9zdW1tYXJ5X3NvcnRpbmd9OjwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc3VtbWFyeV9zb3J0aW5nX3NpbXBsZX08L3A+DQogICAgICAgIDwvZGl2Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9zdW1tYXJ5X3NvcnRvcmRlcn06PC9wPg0KICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9zdW1tYXJ5X3NvcnRvcmRlcl9zaW1wbGV9PC9wPg0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfc3VtbWFyeV9wYWdlbGltaXR9OjwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc3VtbWFyeV9wYWdlbGltaXRfc2ltcGxlfTwvcD4NCiAgICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQo8L2ZpZWxkc2V0PgkNCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9PC9wPg0KPC9kaXY+DQoNCnskZW5kZm9ybX0NCg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/ordercategory.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZWNvbnRhaW5lciI+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCntsaXRlcmFsfQpmdW5jdGlvbiBwYXJzZVRyZWUodWwpewoJdmFyIHRhZ3MgPSBbXTsKCXVsLmNoaWxkcmVuKCJsaSIpLmVhY2goZnVuY3Rpb24oKXsKCQl2YXIgc3VidHJlZSA9CSQodGhpcykuY2hpbGRyZW4oInVsIik7CgkJaWYoc3VidHJlZS5zaXplKCkgPiAwKQoJCQl0YWdzLnB1c2goWyQodGhpcykuYXR0cigiaWQiKSwgcGFyc2VUcmVlKHN1YnRyZWUpXSk7CgkJZWxzZQoJCQl0YWdzLnB1c2goJCh0aGlzKS5hdHRyKCJpZCIpKTsKCX0pOwoJcmV0dXJuIHRhZ3M7Cn0KCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7Cgp2YXIgYWpheF91cmwgPSAkKCdmb3JtJykuYXR0cignYWN0aW9uJykrIj8iOwokKCdmb3JtIGlucHV0OmhpZGRlbixmb3JtIGlucHV0OnRleHQsZm9ybSBpbnB1dDpzdWJtaXQ6Zmlyc3QnKS5lYWNoKGZ1bmN0aW9uKCl7CmFqYXhfdXJsKz0iJiIrJCh0aGlzKS5hdHRyKCduYW1lJykrIj0iKyQodGhpcykuYXR0cigndmFsdWUnKTsKfSkKCiQoJ3VsLnNvcnRhYmxlJykubmVzdGVkU29ydGFibGUoewkKCQkJCQlkaXNhYmxlTmVzdGluZzogJ25vLW5lc3QnLAoJCQkJCWZvcmNlUGxhY2Vob2xkZXJTaXplOiB0cnVlLAoJCQkJCWhhbmRsZTogJ2RpdicsCgkJCQkJaXRlbXM6ICdsaScsCgkJCQkJb3BhY2l0eTogLjYsCgkJCQkJcGxhY2Vob2xkZXI6ICdwbGFjZWhvbGRlcicsCgkJCQkJdGFiU2l6ZTogMjUsCgkJCQkJdG9sZXJhbmNlOiAncG9pbnRlcicsCgkJCQkJdG9sZXJhbmNlRWxlbWVudDogJz4gZGl2JwoJCQkJfSk7CgogICAgIAokKCIuc2F2ZSIpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICB2YXIgdHJlZSA9ICQudG9KU09OKHBhcnNlVHJlZSgkKCd1bC5zb3J0YWJsZScpKSk7CiAgICB2YXIgYWpheF9yZXMgPSBmYWxzZTsKICAgICQuYWpheCh7CiAgICAgIHR5cGU6ICdQT1NUJywKICAgICAgdXJsOiAgYWpheF91cmwsCiAgICAgIGRhdGE6IHtkYXRhOiB0cmVlfSwKICAgICAgY2FjaGU6IGZhbHNlLAogICAgICBhc3luYzogZmFsc2UsCiAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgewogICAgICAgICBhamF4X3JlcyA9IHRydWU7CiAgICAgIH0KICAgIH0pOwogICAgcmV0dXJuIGFqYXhfcmVzOwp9KTsvL2VuZCBzYXZlCgp9KTsvL2VuZCByZWFkeQp7L2xpdGVyYWx9Cjwvc2NyaXB0Pgp7JHN0YXJ0Zm9ybX0KPGRpdiBjbGFzcz0icmVvcmRlci1wYWdlcyI+Cjx1bCBjbGFzcz0ic29ydGFibGVMaXN0IHNvcnRhYmxlIj4KCntpZiAkaXRlbWNvdW50ID4gMH0Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeSBuYW1lPSJjYXRlZ29yeWxpc3QifQogICAgCnthc3NpZ24gdmFyPSJoaWVyYXJjaHljb3VudCIgdmFsdWU9Ii4ifGV4cGxvZGU6JGhpZXJhcmNoeX0Ke2Fzc2lnbiB2YXI9ImhpZXJhcmNoeWN1cnJlbnRjb3VudCIgdmFsdWU9Ii4ifGV4cGxvZGU6JGVudHJ5LT5oaWVyYXJjaHlfcG9zaXRpb259CntpZiAkc21hcnR5LmZvcmVhY2guY2F0ZWdvcnlsaXN0LmZpcnN0PT1mYWxzZSAmJiAkcGFyZW50X2lkIT0kZW50cnktPnBhcmVudF9pZCAmJiAkaGllcmFyY2h5Y291bnR8QGNvdW50IDw9ICAkaGllcmFyY2h5Y3VycmVudGNvdW50fEBjb3VudH0KPC9saT48dWw+CntlbHNlaWYgJHNtYXJ0eS5mb3JlYWNoLmNhdGVnb3J5bGlzdC5maXJzdD09ZmFsc2UgJiYgJHBhcmVudF9pZCE9JGVudHJ5LT5wYXJlbnRfaWR9CnttYXRoIGVxdWF0aW9uPSJ4IC0geSIgeD0kaGllcmFyY2h5Y291bnR8QGNvdW50IHk9JGhpZXJhcmNoeWN1cnJlbnRjb3VudHxAY291bnQgYXNzaWduPSJkZXB0aCJ9CntyZXBlYXQgc3RyaW5nPSI8L2xpPjwvdWw+IiB0aW1lcz0kZGVwdGh9e2Vsc2V9PC9saT4Key9pZn0KCgo8bGkgaWQ9ImNhdGVnb3J5X3skZW50cnktPmNhdGVnb3J5X2lkfSI+CjxkaXYgY2xhc3M9ImxhYmVsIj48c3Bhbj4mbmJzcDs8L3NwYW4+eyRlbnRyeS0+Y2F0ZWdvcnlfaWR9OiZuYnNwO3skZW50cnktPmNhdGVnb3J5X25hbWV9PGVtPnskZW50cnktPmhpZXJhcmNoeX08L2VtPjwvZGl2PgoKCgp7YXNzaWduIHZhcj0iaGllcmFyY2h5IiB2YWx1ZT0kZW50cnktPmhpZXJhcmNoeV9wb3NpdGlvbn0Ke2Fzc2lnbiB2YXI9InBhcmVudF9pZCIgdmFsdWU9JGVudHJ5LT5wYXJlbnRfaWR9CnsvZm9yZWFjaH0Key9pZn0KCjwvdWw+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnb2V2ZXJmbG93Ij4KIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiBjbGFzcz0iYnV0dG9uIHNhdmUiIHZhbHVlPSJ7J3N1Ym1pdCd8bGFuZ30iLz4KIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9Y2FuY2VsIiB2YWx1ZT0ieydjYW5jZWwnfGxhbmd9Ii8+CjwvZGl2Pgp7JGVuZGZvcm19CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/orig_category_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRjb3VudCA+IDB9DQo8dWw+DQp7Zm9yZWFjaCBmcm9tPSRjYXRzIGl0ZW09bm9kZX0NCntpZiAkbm9kZS5kZXB0aCA+ICRub2RlLnByZXZkZXB0aH0NCntyZXBlYXQgc3RyaW5nPSI8dWw+IiB0aW1lcz0kbm9kZS5kZXB0aC0kbm9kZS5wcmV2ZGVwdGh9DQp7ZWxzZWlmICRub2RlLmRlcHRoIDwgJG5vZGUucHJldmRlcHRofQ0Ke3JlcGVhdCBzdHJpbmc9IjwvbGk+PC91bD4iIHRpbWVzPSRub2RlLnByZXZkZXB0aC0kbm9kZS5kZXB0aH0NCjwvbGk+DQp7ZWxzZWlmICRub2RlLmluZGV4ID4gMH08L2xpPg0Key9pZn0NCjxsaT4NCntpZiAkbm9kZS5jb3VudCA+IDB9DQoJPGEgaHJlZj0ieyRub2RlLnVybH0iPnskbm9kZS5jYXRlZ29yeV9uYW1lfTwvYT4gKHskbm9kZS5jb3VudH0pe2Vsc2V9PHNwYW4+eyRub2RlLmNhdGVnb3J5X25hbWV9ICgwKTwvc3Bhbj57L2lmfQ0Key9mb3JlYWNofQ0Ke3JlcGVhdCBzdHJpbmc9IjwvbGk+PC91bD4iIHRpbWVzPSRub2RlLmRlcHRoLTF9PC9saT4NCjwvdWw+DQp7L2lmfQ==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/orig_detail_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iaXRlbSI+DQo8aDIgY2xhc3M9Iml0ZW0tdGl0bGUiPnskaXRlbS0+dGl0bGV8Y21zX2VzY2FwZX08L2gyPg0KPGRpdiBjbGFzcz0iaXRlbS1jYXRlZ29yeSI+Q2F0ZWdvcnk6IHskaXRlbS0+Y2F0ZWdvcnlfbmFtZXxjbXNfZXNjYXBlfTwvZGl2Pg0Ke2lmICFlbXB0eSgkaXRlbS0+ZmllbGRkZWZzKX0NCiAgICA8ZGl2IGNsYXNzPSJpdGVtLXByb3BlcnRpZXMiPg0KICAgIHtmb3JlYWNoIGZyb209JGl0ZW0tPmZpZWxkZGVmcyBpdGVtPWZpZWxkZGVmfQ0KICAgICAgICB7aWYgJGZpZWxkZGVmLnR5cGUgPT0gJ3VwbG9hZF9maWxlJyB8fCAkZmllbGRkZWYudHlwZSA9PSAnc2VsZWN0X2ZpbGUnfQ0KICAgICAgICAgICAgeyRmaWVsZGRlZi5uYW1lfGNtc19lc2NhcGV9OiA8YSBocmVmPSJ7JGZpZWxkZGVmLmRpcnxjbXNfZXNjYXBlfS97JGZpZWxkZGVmLnZhbHVlfGNtc19lc2NhcGV9Ij57JGZpZWxkZGVmLnZhbHVlfGNtc19lc2NhcGV9PC9hPjxiciAvPg0KICAgICAgICB7ZWxzZX0NCiAgICAgICAgICAgIHskZmllbGRkZWYubmFtZXxjbXNfZXNjYXBlfTogeyRmaWVsZGRlZi52YWx1ZXxjbXNfZXNjYXBlfTxiciAvPg0KICAgICAgICB7L2lmfQ0KICAgIHsvZm9yZWFjaH0NCiAgICA8L2Rpdj4NCnsvaWZ9DQo8L2Rpdj48IS0tIGl0ZW0gLS0+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/orig_filter_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iZmlsdGVyIj4gICAgICAgICAgICAgICAgICAgIA0KICAgIHskZm9ybXN0YXJ0fQ0KICAgIDxmaWVsZHNldD4NCiAgICAgICAgICAge2lmIGlzc2V0KCRjdXN0b21fZmllbGRkZWYpfQ0KICAgICAgICB7Zm9yZWFjaCBmcm9tPSRjdXN0b21fZmllbGRkZWYgaXRlbT0nZmllbGQnfQ0KICAgICAgICAgICAge2lmICRmaWVsZC0+ZmllbGR9DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkLT5wcm9tcHR9OjwvcD4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQogICAgICAgICAgICAgICAgICAgIHtpZiAhZW1wdHkoJGZpZWxkLT5oZWxwKX0oeyRmaWVsZC0+aGVscH0pPGJyIC8+ey9pZn0NCiAgICAgICAgICAgICAgICAgICAgeyRmaWVsZC0+ZmllbGR9DQogICAgICAgICAgICAgICAgICAgIHtpZiBpc3NldCgkZmllbGQtPmZpbGVuYW1lKX08YnIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgeyRmaWVsZC0+ZGVsZXRlX2ZpbGV9IHskZmllbGQtPmZpbGVuYW1lfTxiciAvPg0KICAgICAgICAgICAgICAgICAgICB7L2lmfQ0KICAgICAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgIHtlbHNlfQ0KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZmllbGQtPnByb21wdH08L3A+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgey9pZn0NCiAgICB7L2ZvcmVhY2h9DQogICAgey9pZn0NCiAgICA8L2ZpZWxkc2V0Pg0KICAgIHskaW5wdXRfc3VibWl0fQ0KICAgIHskZm9ybWVuZH0NCiAgICAgICANCjwvZGl2Pg0KDQp7aWYgaXNTZXQoJHJlc3VsdHMpfQ0KeyRyZXN1bHRzfQ0Key9pZn0=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/orig_summary_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1pdGVtfQ0KPGgyPnskaXRlbS0+dGl0bGV8Y21zX2VzY2FwZX08L2gyPg0KPHA+eyRpdGVtLT5pdGVtX2RhdGV8Y21zX2RhdGVfZm9ybWF0fTwvcD4NCntpZiAkaXRlbS0+Y2F0ZWdvcnlfbmFtZX08cD57JGl0ZW0tPmNhdGVnb3J5X25hbWV8Y21zX2VzY2FwZX08cD57L2lmfQ0Ke2lmICFlbXB0eSgkaXRlbS0+ZmllbGRzKX0NCiAgICA8ZGl2IGNsYXNzPSJpdGVtLXByb3BlcnRpZXMiPg0KICAgIHtmb3JlYWNoIGZyb209JGl0ZW0tPmZpZWxkcyBpdGVtPWZpZWxkZGVmfQ0KICAgICAgICB7aWYgJGZpZWxkZGVmLnR5cGUgPT0gJ3VwbG9hZF9maWxlJyB8fCAkZmllbGRkZWYudHlwZSA9PSAnc2VsZWN0X2ZpbGUnfQ0KICAgICAgICAgICAgeyRmaWVsZGRlZi5uYW1lfGNtc19lc2NhcGV9OiA8YSBocmVmPSJ7JGZpZWxkZGVmLmRpcnxjbXNfZXNjYXBlfS97JGZpZWxkZGVmLnZhbHVlfGNtc19lc2NhcGV9Ij57JGZpZWxkZGVmLnZhbHVlfGNtc19lc2NhcGV9PC9hPjxiciAvPg0KICAgICAgICB7ZWxzZX0NCiAgICAgICAgICAgIHskZmllbGRkZWYubmFtZXxjbXNfZXNjYXBlfTogeyRmaWVsZGRlZi52YWx1ZX08YnIgLz4NCiAgICAgICAgey9pZn0NCiAgICB7L2ZvcmVhY2h9DQogICAgPC9kaXY+DQp7L2lmfQ0KPGEgaHJlZj0ieyRpdGVtLT5saW5rfSI+eyRpdGVtLT5saW5rfTwvYT4NCnsvZm9yZWFjaH0NCg0Ke2lmIGlzc2V0KCRwYWdlY291bnQpICYmICRwYWdlY291bnQgZ3QgMX0NCjxwPg0KICAgICAgICB7aWYgJHByZXZ1cmx9PGEgaHJlZj0ieyRwcmV2dXJsfSIgY2xhc3M9InByZXYiPsKrPC9hPiZuYnNwO3svaWZ9DQogICAgICAgIDxlbT57JHBhZ2VudW1iZXJ9IC8geyRwYWdlY291bnR9PC9lbT4NCiAgICAgICAge2lmICRuZXh0dXJsfTxhIGhyZWY9InskbmV4dHVybH0iIGNsYXNzPSJuZXh0Ij7CuzwvYT4mbmJzcDt7L2lmfQ0KICAgIDwvcD4NCnsvaWZ9]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/templatetab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[77u/e2lmICRpdGVtY291bnQgPiAwfQ0KPGgzPnskc3VtbWFyeXRlbXBsYXRlc308L2gzPg0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4NCiAgICA8dGhlYWQ+DQogICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0aD57JGhlYWRlcl9uYW1lfTwvdGg+DQogICAgICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPg0KICAgICAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4NCiAgICAgICAgPC90cj4NCiAgICA8L3RoZWFkPg0KICAgIDx0Ym9keT4NCntmb3JlYWNoIGZyb209JGl0ZW1zLnN1bW1hcnkgaXRlbT1lbnRyeX0NCiAgICAgICAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRlbnRyeS0+cm93Y2xhc3N9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skZW50cnktPnJvd2NsYXNzfSc7Ij4NCiAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5saW5rfTwvdGQ+DQogICAgICAgICAgICA8dGQ+eyRlbnRyeS0+ZWRpdH08L3RkPg0KICAgICAgICAgICAgPHRkPnskZW50cnktPmRlbGV0ZX08L3RkPg0KICAgICAgICA8L3RyPg0Key9mb3JlYWNofQ0KICAgIDwvdGJvZHk+DQo8L3RhYmxlPg0Key9pZn0NCg0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkc3VtbWFyeWxpbmt9PC9kaXY+DQoNCg0Ke2lmICRpdGVtY291bnQgPiAwfQ0KPGgzPnskZGV0YWlsdGVtcGxhdGVzfTwvaDM+DQo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPg0KICAgIDx0aGVhZD4NCiAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRoPnskaGVhZGVyX25hbWV9PC90aD4NCiAgICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+DQogICAgICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPg0KICAgICAgICA8L3RyPg0KICAgIDwvdGhlYWQ+DQogICAgPHRib2R5Pg0Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMuZGV0YWlsIGl0ZW09ZW50cnl9DQogICAgICAgIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skZW50cnktPnJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JGVudHJ5LT5yb3djbGFzc30nOyI+DQogICAgICAgICAgICA8dGQ+eyRlbnRyeS0+bGlua308L3RkPg0KICAgICAgICAgICAgPHRkPnskZW50cnktPmVkaXR9PC90ZD4NCiAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5kZWxldGV9PC90ZD4NCiAgICAgICAgPC90cj4NCnsvZm9yZWFjaH0NCiAgICA8L3Rib2R5Pg0KPC90YWJsZT4NCnsvaWZ9DQoNCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj57JGFkZGRldGFpbGxpbmt9PC9kaXY+]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/editmodule.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19IA0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8ZGl2IGNsYXNzPSJwYWdldGV4dCI+DQo8aDM+eyRtb2R1bGVuYW1lfTwvaDM+DQp7JG1vZC0+TGFuZygnYXR0YWNoJyl9OjwvZGl2Pg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KCXskYXR0YWNofQ0KICAgIDwvcD4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaGlkZGVufXskc3VibWl0fXskY2FuY2VsfTwvcD4NCjwvZGl2Pg0KDQp7JGVuZGZvcm19DQo=]]></data>
	</file>
	<file>
	  <filename>/templates/generator.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRpdGVtY291bnQgPiAwfQ0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIGNtc19zb3J0YWJsZSB0YWJsZXNvcnRlciI+DQoJPHRoZWFkPg0KCQk8dHI+DQoJCQk8dGg+eyRtb2QtPkxhbmcoJ2lkJyl9PC90aD4NCgkJCTx0aD57JG1vZC0+TGFuZygnbmFtZScpfTwvdGg+DQoJCQk8dGg+eyRtb2QtPkxhbmcoJ2F0dGFjaCcpfTwvdGg+DQoJCQk8dGg+eyRtb2QtPkxhbmcoJ2NyZWF0ZWRhdGUnKX08L3RoPg0KCQkJPHRoPnskbW9kLT5MYW5nKCdtb2RpZmllZGRhdGUnKX08L3RoPg0KDQoJCQk8dGggY2xhc3M9InBhZ2VpY29uIHtsaXRlcmFsfXtzb3J0ZXI6IGZhbHNlfXsvbGl0ZXJhbH0iPiZuYnNwOzwvdGg+DQoJCQk8dGggY2xhc3M9InBhZ2VpY29uIHtsaXRlcmFsfXtzb3J0ZXI6IGZhbHNlfXsvbGl0ZXJhbH0iPiZuYnNwOzwvdGg+DQoJCQk8dGggY2xhc3M9InBhZ2VpY29uIHtsaXRlcmFsfXtzb3J0ZXI6IGZhbHNlfXsvbGl0ZXJhbH0iPiZuYnNwOzwvdGg+DQoJCTwvdHI+DQoJPC90aGVhZD4NCgk8dGJvZHk+DQp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQ0KCXtjeWNsZSB2YWx1ZXM9InJvdzEscm93MiIgYXNzaWduPSdyb3djbGFzcyd9DQoJCXsqPHRyIGNsYXNzPSJ7JHJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfSc7Ij4qfQ0KICAgICAgICAgICAgICAgIDx0cj4NCgkJCTx0ZD57JGVudHJ5LT5pZH08L3RkPg0KCQkJPHRkPntpZiBpc1NldCgkZW50cnktPm1vZHVsZWxpbmspICYmICRlbnRyeS0+bW9kdWxlbGlua317JGVudHJ5LT5tb2R1bGVsaW5rfXtlbHNlfXskZW50cnktPm1vZHVsZV9uYW1lfXsvaWZ9PC90ZD4NCg0KCQkJPHRkPnskZW50cnktPmF0dGFjaG1vZHVsZXN9PC90ZD4NCgkgICAgICAgICAgICAgICAgPHRkPnskZW50cnktPmNyZWF0ZV9kYXRlfGNtc19kYXRlX2Zvcm1hdH08L3RkPg0KCSAgICAgICAgICAgICAgICA8dGQ+eyRlbnRyeS0+bW9kaWZpZWRfZGF0ZXxjbXNfZGF0ZV9mb3JtYXR9PC90ZD4NCgkJCTx0ZD57JGVudHJ5LT5lZGl0bGlua308L3RkPg0KCQkJPHRkPnskZW50cnktPnJlZ2VuZXJhdGVsaW5rfTwvdGQ+DQoJCQk8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPg0KCQk8L3RyPg0Key9mb3JlYWNofQ0KCTwvdGJvZHk+DQo8L3RhYmxlPg0Key9pZn0NCg0KDQoNCnskc3RhcnRmb3JtfSANCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnbmFtZScpfTo8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQoJeyRuYW1lfQ0KICAgIDwvcD4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdhdHRhY2gnKX06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KCXskYXR0YWNofQ0KICAgIDwvcD4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fTwvcD4NCjwvZGl2Pg0KDQp7JGVuZGZvcm19DQo=]]></data>
	</file>
</module>
