<?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.7</version>
  <mincmsversion>1.9.4</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5Nb2R1bGUgZ2VuZXJhdG9yIGxldHMgeW91IGNyZWF0ZSBhIGxpc3QgdGhlIG1vZHVsZXMgYXMgTmV3cywgUHJvZHVjdHMgYXRjLiBJbmRpdmlkdWFsIG1vZHVsZXMsIHlvdSBjYW4gbGluayBiZXR3ZWVuIHRoZW0uICBZb3UgY2FuIGNyZWF0ZSBhIG1vZHVsZSBQZW9wbGUsIEdlbmRlciBhbmQgVHlwZSBvZiBlbXBsb3ltZW50IGFuZCBsaW5rIGJldHdlbiB0aGVtLjwvcD4NCjxwPkVhY2ggbW9kdWxlIGluY2x1ZGVzIHRoZSBhYmlsaXR5IHRvIGNyZWF0ZWQgY2F0ZWdvcmllcywgY3VzdG9tIGZpZWxkcyAgYW5kIGVkaXRlZCBhIG51bWJlciBvZiBzZXR0aW5ncy48L3A+DQo8cD5Zb3UgY2FuIHVzZSB0aGUgbGlzdCB0ZW1wbGF0ZXMgLCBjYXRlZ29yaWVzIHRlbXBsYXRlcyAsIGZpbHRlciB0ZW1wbGF0ZXMsIG9yIGRldGFpbCB0ZW1wbGF0ZXMgYXMgaXQgYWxyZWFkeSBrbm93biBtb2R1bGVzIGZyb20gTmV3cywgUHJvZHVjdHMgZXRjLjwvcD48aDM+WiZhYWN1dGU7dmlzbG9zdGk8L2gzPjx1bD48bGk+Q0dFeHRlbnNpb25zID0mZ3Q7IDEuMjM8L2xpPjxsaT5FeHRlbmRlZFRvb2xzID0mZ3Q7IDEuMDwvbGk+PGxpPkNHU21hcnRJbWFnZSA9Jmd0OyAxLjU8L2xpPjwvdWw+PGgzPlBhcmFtZXRyZTwvaDM+PHVsPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGxhbmc9ImVuX1VTIiAtIFBhcmFtZXRlciAmc2Nhcm9uO3BlY2lmaWt1amUsIGFrJnlhY3V0ZTsgamF6eWsgc2EgbSZhYWN1dGU7IHBvdcW+acWlIHByZSB6b2JyYXplbmllLiBOaWUgdiZzY2Fyb247ZXRreSBtb2R1bHkgdG8gcG9kcG9ydWomdWFjdXRlOywgYWxlYm8gcG90cmVidWomdWFjdXRlOy48L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0b3I6IEBrdXptYW55ICZsdDt6ZGVub0BrdXptYW55LmJpeiZndDs8YnIgLz48YnIgLz5WZXJ6aWE6IDEuNzxiciAvPjxiciAvPkhpc3Qmb2FjdXRlO3JpYSB6bWllbjo8YnIgLz48dWw+DQo8bGk+VmVyc2lvbiBOb3ZlbWJlciwgMjAxMSAtICBpbml0IHJlbGVhc2U8L2xpPjwvdWw+PGJyIC8+]]></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.0</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[PD9waHAKCiMgTW9kdWxlOiBNb2R1bGUgR2VuZXJhdG9yCiMgWmRlbm8gS3V6bWFueSAoemRlbm9Aa3V6bWFueS5iaXopIGt1em1hbnkuYml6CiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDkgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NrZWxldG9uLwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoKaWYgKCFpc3NldCgkZ0NtcykpCiAgICBleGl0OwoKJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwppZihpc19kaXJlY3Rvcnlfd3JpdGFibGUoICRjb25maWdbJ3Jvb3RfcGF0aCddLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ21vZHVsZXMnKSl7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdtb2R1bGVfZGlyX3Blcm1pc3Npb24nKSk7Cn0KCiMjIFRBQiBIRUFERVJTIGZyb20gQ0dFCmVjaG8gJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpOwppZiAoJHRoaXMtPkNoZWNrQWNjZXNzKCkpIHsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignZ2VuZXJhdG9yJywgJHRoaXMtPkxhbmcoJ2dlbmVyYXRvcicpKTsKfQoKZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOwoKIwojVGhlIGNvbnRlbnQgb2YgdGhlIHRhYnMKIwplY2hvICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKTsKCmlmICgkdGhpcy0+Q2hlY2tBY2Nlc3MoKSkgewogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2dlbmVyYXRvcicpOwogICAgaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKSAuICcvZnVuY3Rpb24uYWRtaW5fZ2VuZXJhdG9yLnBocCcpOwogICAgZWNobyAkdGhpcy0+RW5kVGFiKCk7Cn0KCmVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsKPz4=]]></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/JzsNCiRsYW5nWydtb2R1bGVfZGlyX3Blcm1pc3Npb24nXSA9ICdNb2R1bGUgZGlyZWNvdHJ5IG5lZWQgd3JpdGVhYmxlIHBlcm1pc3Npb24uIFBsZWFzZSBjaGFuZ2UgcGVybWlzc2lvbiBmb3IgbW9kdWxlIGRpcmVjdG9yeS4nOw0KDQokbGFuZ1snZ2VuZXJhdG9yJ10gPSAnR2VuZXJhdG9yJzsNCiRsYW5nWydyZWdlbmVyYXRlJ10gPSAnUmUtZ2VuZXJhdGUnOw0KJGxhbmdbJ25hbWUnXSA9ICdOYW1lJzsNCiRsYW5nWydhdHRhY2gnXSA9ICdBdHRhY2gnOw0KJGxhbmdbJ2Vycm9yJ10gPSAnRXJyb3IhJzsNCiRsYW5nWydjcmVhdGVkYXRlJ10gPSAnQ3JlYXRlIGRhdGUnOw0KJGxhbmdbJ21vZGlmaWVkZGF0ZSddID0gJ01vZGlmaWVkIGRhdGUnOw0KJGxhbmRbJ2FkbWluX3RpdGxlJ10gPSAnQWRtaW4gUGFuZWwnOw0KJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICcnOw0KJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2VzcyBEZW5pZWQuIFBsZWFzZSBjaGVjayB5b3VyIHBlcm1pc3Npb25zLic7DQokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdQb3N0IEluc3RhbGwgTWVzc2FnZSwgKGUuZy4sIEJlIHN1cmUgdG8gc2V0ICJtYW5hZ2UgbWxlX2NtcyIgcGVybWlzc2lvbnMgdG8gdXNlIHRoaXMgbW9kdWxlISknOw0KJGxhbmdbJ2Vycm9yX3JlbmFtZV9kaXInXSA9ICdSZW5hbWUgZGlyIHdpdGhvdXQgc3VjY2VzcyAocGVybWlzc2lvbj8pJzsNCiRsYW5nWydlcnJvcl9yZXBsYWNlX2ZpbGVzJ10gPSAnTW9kdWxlIGNhbm5vdCBieSBlZGl0ZWQuIFBsZWFzZSBlZGl0IGl0IG1hbnVhbGx5Lic7DQokbGFuZ1snZXJyb3JfbW9kdWxlX2V4aXN0cyddID0gJ1RoaXMgbW9kdWxlIGV4aXN0cy4gRGVsZXRlIGRpciBvciByZS1nZW5lcmF0ZS4nOw0KJGxhbmdbJ2Vycm9yX3VuaWluc3RhbF9tb2R1bGUnXSA9ICdUaGlzIG1vZHVsZSBleGlzdHMuIFVuaWluc3RhbCBpdC4nOw0KDQovLyB0YWJzDQokbGFuZ1snaXRlbSddID0gJ0l0ZW0nOw0KJGxhbmdbJ2l0ZW1zJ10gPSAnSXRlbXMnOw0KJGxhbmdbJ2ZpZWxkZGVmJ10gPSAnRmllbGQgRGVmaW5pdGlvbic7DQokbGFuZ1snZmllbGRkZWZzJ10gPSAnRmllbGQgRGVmaW5pdGlvbnMnOw0KJGxhbmdbJ3RlbXBsYXRlJ10gPSAnVGVtcGxhdGUnOw0KJGxhbmdbJ3RlbXBsYXRlcyddID0gJ1RlbXBsYXRlcyc7DQokbGFuZ1snY2F0ZWdvcnknXSA9ICdDYXRlZ29yeSc7DQokbGFuZ1snY2F0ZWdvcmllcyddID0gJ0NhdGVnb3JpZXMnOw0KJGxhbmdbJ29wdGlvbiddID0gJ09wdGlvbic7DQokbGFuZ1snb3B0aW9ucyddID0gJ09wdGlvbnMnOw0KJGxhbmdbJ3N1Ym1pdCddID0gJ1N1Ym1pdCc7DQokbGFuZ1sncHJldnBhZ2UnXSA9ICcmbHQ7JzsNCg0KLy8gaXRlbXMNCiRsYW5nWydpdGVtX3RpdGxlJ10gPSAnVGl0bGUnOw0KJGxhbmdbJ3Byb21wdF9pdGVtX3RpdGxlJ10gPSAnSXRlbSB0aXRsZSc7DQokbGFuZ1snYWxpYXMnXSA9ICdBbGlhcyc7DQokbGFuZ1sndXJsJ10gPSAnVXJsJzsNCiRsYW5nWydhY3RpdmUnXSA9ICdBY3RpdmUnOw0KJGxhbmdbJ2l0ZW1fdGl0bGVfZW1wdHknXSA9ICdJdGVtIHRpdGxlIGlzIGVtcHR5JzsNCiRsYW5nWydyZXF1aXJlZF9maWVsZF9lbXB0eSddID0gJ1JlcXVpcmVkIGZpZWxkIGlzIGVtcHR5JzsNCiRsYW5nWyd0b29fbG9uZyddID0gJ0ZpZWxkIHZhbHVlIGV4Y2VlZHMgbWF4IGxlbmd0aCc7DQokbGFuZ1snYXBwcm92ZSddID0gJ1NldCBTdGF0dXMgdG8gXCdBY3RpdmVcJyc7DQokbGFuZ1sncmV2ZXJ0J10gPSAnU2V0IFN0YXR1cyB0byBcJ0luYWN0aXZlXCcnOw0KJGxhbmdbJ2xhc3RwYWdlJ10gPSAnJmd0OyZndDsnOw0KJGxhbmdbJ2xhc3RfbW9kaWZpZWQnXSA9ICdMYXN0IE1vZGlmaWVkJzsNCiRsYW5nWydwYWdlJ10gPSAnUGFnZSc7DQokbGFuZ1sncGFnZV9vZiddID0gJ1BhZ2UgJXMgb2YgJXMnOw0KJGxhbmdbJ3BhZ2VfbGltaXQnXSA9ICdQYWdlIExpbWl0JzsNCiRsYW5nWydmaXJzdHBhZ2UnXSA9ICcmbHQ7Jmx0Oyc7DQokbGFuZ1snbmV4dHBhZ2UnXSA9ICcmZ3Q7JzsNCiRsYW5nWydpZCddID0gJ0lkJzsNCiRsYW5nWyd0aXRsZSddID0gJ1RpdGxlJzsNCiRsYW5nWydpbmNsdWRlX2NoaWxkcmVuJ10gPSAnSW5jbHVkZSBDaGlsZHJlbj8nOw0KJGxhbmdbJ2hpZXJhcmNoeSddICA9ICdIaWVyYXJjaHknOw0KJGxhbmdbJ3NvcnRfYnknXSA9ICdTb3J0IEJ5JzsNCiRsYW5nWydzb3J0X29yZGVyJ10gPSAnU29ydCBPcmRlcic7DQokbGFuZ1snZGF0ZSddID0gJ0RhdGUnOw0KJGxhbmdbJ2RhdGVfZW5kJ10gPSAnRW5kIGRhdGUnOw0KJGxhbmdbJ2ZpbHRlcnMnXSA9ICdGaWx0ZXJzJzsNCiRsYW5nWydhc2NlbmRpbmcnXSA9ICdBc2NlbmRpbmcnOw0KJGxhbmdbJ2Rlc2NlbmRpbmcnXSA9ICdEZXNjZW5kaW5nJzsNCiRsYW5nWydhbGxjYXRlZ29yaWVzJ10gPSAnQWxsIGNhdGVnb3JpZXMnOw0KJGxhbmdbJ2Zyb20nXSA9ICdGcm9tJzsNCiRsYW5nWyd0byddID0gJ1RvJzsNCiRsYW5nWydwb3NpdGlvbiddID0gJ1Bvc2l0aW9uJzsNCiRsYW5nWydjcmVhdGVkZGF0ZSddID0gJ0NyZWF0ZWQgZGF0ZSc7DQokbGFuZ1snbW9kaWZpZWRkYXRlJ10gPSAnTW9kaWZpZWQgZGF0ZSc7DQokbGFuZ1snc2F2ZV9vcmRlciddID0gJ1NhdmUgb3JkZXInOw0KDQovLyBmaWVsZCBkZWZpbml0aW9ucw0KJGxhbmdbJ2VkaXRmaWVsZGRlZiddID0gJ0VkaXQgRmllbGQgRGVmaW5pdGlvbic7DQokbGFuZ1snYWRkZmllbGRkZWYnXSA9ICdBZGQgRmllbGQgRGVmaW5pdGlvbic7DQokbGFuZ1snZmllbGRkZWZfbmFtZSddID0gJ05hbWUnOw0KJGxhbmdbJ2ZpZWxkZGVmX2hlbHAnXSA9ICdIZWxwZnVsIHRpcCc7DQokbGFuZ1snZmllbGRkZWZfdHlwZSddID0gJ1R5cGUnOw0KJGxhbmdbJ2ZpZWxkZGVmX21heF9sZW5ndGgnXSA9ICdNYXhpbXVtIGxlbmd0aCc7DQokbGFuZ1snZmllbGRkZWZfcmVxdWlyZWQnXSA9ICdSZXF1aXJlZCc7DQokbGFuZ1snZmllbGRkZWZfZnJvbnRlbmQnXSA9ICdGcm9udCBFbmQnOw0KJGxhbmdbJ2ZpZWxkZGVmX2VkaXR2aWV3J10gPSAnVmlldyBvbmx5IGluIGVkaXQnOw0KJGxhbmdbJ2ZpZWxkZGVmX2ZpbHRlcl9mcm9udGVuZCddID0gJ0FkZCB0byBmaWx0ZXIgaW4gZnJvbnRlbmQnOw0KJGxhbmdbJ2ZpZWxkZGVmX2ZpbHRlcl9hZG1pbiddID0gJ0FkZCB0byBmaWx0ZXIgaW4gYWRtaW4nOw0KJGxhbmdbJ2ZpZWxkZGVmX3NlYXJjaGFibGUnXSA9ICdTZWFyY2hhYmxlJzsNCiRsYW5nWydleHRyYSddID0gJ0V4dHJhJzsNCiRsYW5nWyd0ZXh0Ym94J10gPSAnVGV4dCBJbnB1dCc7DQokbGFuZ1snY2hlY2tib3gnXSA9ICdDaGVja2JveCc7DQokbGFuZ1sndGV4dGFyZWEnXSA9ICdUZXh0IEFyZWEnOw0KJGxhbmdbJ3NlbGVjdF9kYXRlJ10gPSAnU2VsZWN0IERhdGUnOw0KJGxhbmdbJ3VwbG9hZF9maWxlJ10gPSAnVXBsb2FkIEZpbGUnOw0KJGxhbmdbJ2Ryb3Bkb3duJ10gPSAnRHJvcGRvd24nOw0KJGxhbmdbJ21vZHVsZSddID0gJ01vZHVsZSc7DQokbGFuZ1snc2VsZWN0X2RlZmF1bHQnXSA9ICctLSBTZWxlY3QgLS0nOw0KJGxhbmdbJ3NlbGVjdF9maWxlJ10gPSAnU2VsZWN0IEZpbGUnOw0KJGxhbmdbJ2NvbG9yX3BpY2tlciddID0gJ0NvbG9yIHBpY2tlcic7DQokbGFuZ1snbW9kdWxlX2xpbmsnXSA9ICdMaW5rIHRvIG1vZHVsZSc7DQokbGFuZ1snZmllbGRkZWZfbmFtZV9lbXB0eSddID0gJ0ZpZWxkIGRlZmluaXRpb24gbmFtZSBpcyBlbXB0eSc7DQokbGFuZ1snZmllbGRkZWZfbmFtZV9leGlzdHMnXSA9ICdGaWVsZCBkZWZpbml0aW9uIG5hbWUgYWxyZWFkeSBleGlzdHMnOw0KJGxhbmdbJ2ludmFsaWQnXSA9ICdGaWVsZCB2YWx1ZSBpcyBpbnZhbGlkJzsNCg0KDQovLyBmaWVsZCBkZWZpbml0aW9ucw0KJGxhbmdbJ2VkaXRmaWVsZGRlZiddID0gJ0VkaXQgRmllbGQgRGVmaW5pdGlvbic7DQokbGFuZ1snYWRkZmllbGRkZWYnXSA9ICdBZGQgRmllbGQgRGVmaW5pdGlvbic7DQokbGFuZ1snZmllbGRkZWZfbmFtZSddID0gJ05hbWUnOw0KJGxhbmdbJ2ZpZWxkZGVmX2hlbHAnXSA9ICdIZWxwZnVsIHRpcCc7DQokbGFuZ1snZmllbGRkZWZfdHlwZSddID0gJ1R5cGUnOw0KJGxhbmdbJ2ZpZWxkZGVmX21heF9sZW5ndGgnXSA9ICdNYXhpbXVtIGxlbmd0aCc7DQokbGFuZ1snZmllbGRkZWZfcmVxdWlyZWQnXSA9ICdSZXF1aXJlZCc7DQokbGFuZ1snZmllbGRkZWZfZnJvbnRlbmQnXSA9ICdGcm9udCBFbmQnOw0KJGxhbmdbJ2ZpZWxkZGVmX2VkaXR2aWV3J10gPSAnVmlldyBvbmx5IGluIGVkaXQnOw0KJGxhbmdbJ2ZpZWxkZGVmX2ZpbHRlcl9mcm9udGVuZCddID0gJ0FkZCB0byBmaWx0ZXIgaW4gZnJvbnRlbmQnOw0KJGxhbmdbJ2ZpZWxkZGVmX2ZpbHRlcl9hZG1pbiddID0gJ0FkZCB0byBmaWx0ZXIgaW4gYWRtaW4gYXJlYSc7DQokbGFuZ1snZmllbGRkZWZfc2VhcmNoYWJsZSddID0gJ1NlYXJjaGFibGUnOw0KJGxhbmdbJ2V4dHJhJ10gPSAnRXh0cmEnOw0KJGxhbmdbJ3RleHRib3gnXSA9ICdUZXh0IElucHV0JzsNCiRsYW5nWydjaGVja2JveCddID0gJ0NoZWNrYm94JzsNCiRsYW5nWyd0ZXh0YXJlYSddID0gJ1RleHQgQXJlYSc7DQokbGFuZ1snc2VsZWN0X2RhdGUnXSA9ICdTZWxlY3QgRGF0ZSc7DQokbGFuZ1sndXBsb2FkX2ZpbGUnXSA9ICdVcGxvYWQgRmlsZSc7DQokbGFuZ1snZHJvcGRvd24nXSA9ICdEcm9wZG93bic7DQokbGFuZ1snZHJvcGRvd25mcm9tbW9kdWxlJ10gPSAnRHJvcGRvd24gZnJvbSBtb2R1bGUnOw0KJGxhbmdbJ3N0YXRpYyddID0gJ1N0YXRpYyc7DQokbGFuZ1snbW9kdWxlJ10gPSAnTW9kdWxlJzsNCiRsYW5nWydzZWxlY3RfZGVmYXVsdCddID0gJy0tIFNlbGVjdCAtLSc7DQokbGFuZ1snc2VsZWN0X2ZpbGUnXSA9ICdTZWxlY3QgRmlsZSc7DQokbGFuZ1snZmllbGRkZWZfbmFtZV9lbXB0eSddID0gJ0ZpZWxkIGRlZmluaXRpb24gbmFtZSBpcyBlbXB0eSc7DQokbGFuZ1snZmllbGRkZWZfbmFtZV9leGlzdHMnXSA9ICdGaWVsZCBkZWZpbml0aW9uIG5hbWUgYWxyZWFkeSBleGlzdHMnOw0KJGxhbmdbJ2ludmFsaWQnXSA9ICdGaWVsZCB2YWx1ZSBpcyBpbnZhbGlkJzsNCg0KLy8gZmlsZSBoYW5kbGluZw0KJGxhbmdbJ2Vycm9yX3VwbG9hZCddID0gJ1Byb2JsZW0gb2NjdXJyZWQgdXBsb2FkaW5nIGEgZmlsZSc7DQokbGFuZ1snZXJyb3JfbWtkaXInXSA9ICdDb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeTogJXMnOw0KJGxhbmdbJ2Vycm9yX2ZpbGVzaXplJ10gPSAnQW4gdXBsb2FkZWQgZmlsZSBleGNlZWRlZCB0aGUgbWF4aW11bSBhbGxvd2VkIHNpemUnOw0KJGxhbmdbJ2Vycm9yX2ludmFsaWRmaWxldHlwZSddID0gJ0Nhbm5vdCB1cGxvYWQgdGhpcyB0eXBlIG9mIGZpbGUnOw0KJGxhbmdbJ2Vycm9yX21vdmVmaWxlJ10gPSAnQ291bGQgbm90IGNyZWF0ZSBmaWxlOiAlcyc7DQokbGFuZ1snaW52YWxpZHVybCddID0gJ1VybCBpcyBpbnZhbGlkLic7DQoNCi8vIGNhdGVnb3J5DQokbGFuZ1snbm9uZSddID0gJ05vbmUnOw0KJGxhbmdbJ25hbWUnXSA9ICdOYW1lJzsNCiRsYW5nWydlZGl0X2NhdGVnb3J5J10gPSAnRWRpdCBDYXRlZ29yeSc7DQokbGFuZ1snYWRkY2F0ZWdvcnknXSA9ICdBZGQgQ2F0ZWdvcnknOw0KJGxhbmdbJ2NhdGVnb3J5X25hbWUnXSA9ICdDYXRlZ29yeSBuYW1lJzsNCiRsYW5nWydjYXRlZ29yeV9uYW1lX2VtcHR5J10gPSAnQ2F0ZWdvcnkgbmFtZSBpcyBlbXB0eSc7DQokbGFuZ1snY2F0ZWdvcnl1cGRhdGVkJ10gPSAnQ2F0ZWdvcnkgdXBkYXRlZC4nOw0KJGxhbmdbJ2NhdGVnb3J5YWRkZWQnXSA9ICdDYXRlZ29yeSBhZGRlZC4nOw0KDQovLyB0ZW1wbGF0ZXMNCiRsYW5nWydjYXRlZ29yeV90ZW1wbGF0ZSddID0gJ0NhdGVnb3J5IFRlbXBsYXRlcyc7DQokbGFuZ1snc3VtbWFyeV90ZW1wbGF0ZSddID0gJ1N1bW1hcnkgVGVtcGxhdGVzJzsNCiRsYW5nWydkZXRhaWxfdGVtcGxhdGUnXSA9ICdEZXRhaWwgVGVtcGxhdGVzJzsNCiRsYW5nWydmaWx0ZXJfdGVtcGxhdGUnXSA9ICdGaWx0ZXIgVGVtcGxhdGVzJzsNCiRsYW5nWydkZWZhdWx0X3RlbXBsYXRlcyddID0gJ0RlZmF1bHQgVGVtcGxhdGVzJzsNCiRsYW5nWydlZGl0dGVtcGxhdGUnXSA9ICdFZGl0IFRlbXBsYXRlJzsNCiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0FkZCAlcyBUZW1wbGF0ZSc7DQokbGFuZ1sndGVtcGxhdGVfbmFtZSddID0gJ1RlbXBsYXRlIG5hbWUnOw0KJGxhbmdbJ3RlbXBsYXRlX25hbWVfZW1wdHknXSA9ICdUZW1wbGF0ZSBuYW1lIGlzIGVtcHR5JzsNCg0KLy8gZ2xvYmFsDQokbGFuZ1snZ2xvYmFsJ10gPSAnR2xvYmFsJzsNCiRsYW5nWydjaGFuZ2Vzc2F2ZWQnXSA9ICdZb3VyIGNoYW5nZXMgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBzYXZlZCc7DQokbGFuZ1snYXJleW91c3VyZSddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGU/JzsNCiRsYW5nWydiYWNrJ10gPSAnQmFjayc7DQokbGFuZ1sndXAnXSA9ICdVcCc7DQokbGFuZ1snZG93biddID0gJ0Rvd24nOw0KJGxhbmdbJ2VkaXQnXSA9ICdFZGl0JzsNCiRsYW5nWydkZWxldGUnXSA9ICdEZWxldGUnOw0KJGxhbmdbJ25vc3VjaGlkJ10gPSAnTm8gc3VjaCBJRCc7DQokbGFuZ1snZGVsZXRlZCddID0gJ1RoZSBlbnRyeSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZGVsZXRlZCc7DQokbGFuZ1snYWRkJ10gPSAnQWRkJzsNCiRsYW5nWydhbGlhcyddID0gJ0FsaWFzJzsNCiRsYW5nWydhbGlhc19pbnZhbGlkJ10gPSAnQWxpYXMgaXMgaW52YWxpZC4gSXQgbXVzdCBiZSBhIHZhbGlkIFBIUCB2YXJpYWJsZSBuYW1lJzsNCiRsYW5nWydlbXB0eV9wYXJhbSddID0gJ1RoZSBwYXJhbWV0ZXIgd2FzIGVtcHR5LiBUcnkgYWdhaW4uJzsNCiRsYW5nWydvcGVyYXRpb25fY2FuY2VsbGVkJ10gPSAnT3BlcmF0aW9uIENhbmNlbGxlZCc7DQokbGFuZ1snb3BlcmF0aW9uX2NvbXBsZXRlJ10gPSAnT3BlcmF0aW9uIENvbXBsZXRlJzsNCg0KIyMgZ2VuZXJhdG9yDQokbGFuZ1sndGV4dGJveCddID0gJ1RleHQgSW5wdXQnOw0KJGxhbmdbJ2NoZWNrYm94J10gPSAnQ2hlY2tib3gnOw0KJGxhbmdbJ3RleHRhcmVhJ10gPSAnVGV4dCBBcmVhJzsNCiRsYW5nWydzZWxlY3RfZGF0ZSddID0gJ1NlbGVjdCBEYXRlJzsNCiRsYW5nWyd1cGxvYWRfZmlsZSddID0gJ1VwbG9hZCBGaWxlJzsNCiRsYW5nWydkcm9wZG93biddID0gJ0Ryb3Bkb3duJzsNCiRsYW5nWydtb2R1bGUnXSA9ICdNb2R1bGUnOw0KJGxhbmdbJ3NlbGVjdF9kZWZhdWx0J10gPSAnLS0gU2VsZWN0IC0tJzsNCiRsYW5nWydzZWxlY3RfZmlsZSddID0gJ1NlbGVjdCBGaWxlJzsNCg0KI2l0ZW1zDQokbGFuZ1snaXRlbV90aXRsZSddID0gJ1RpdGxlJzsNCiRsYW5nWydwcm9tcHRfaXRlbV90aXRsZSddID0gJ0l0ZW0gdGl0bGUnOw0KJGxhbmdbJ2FsaWFzJ10gPSAnQWxpYXMnOw0KJGxhbmdbJ3VybCddID0gJ1VybCc7DQokbGFuZ1snYWN0aXZlJ10gPSAnQWN0aXZlJzsNCiRsYW5nWydpdGVtX3RpdGxlX2VtcHR5J10gPSAnSXRlbSB0aXRsZSBpcyBlbXB0eSc7DQokbGFuZ1sncmVxdWlyZWRfZmllbGRfZW1wdHknXSA9ICdSZXF1aXJlZCBmaWVsZCBpcyBlbXB0eSc7DQokbGFuZ1sndG9vX2xvbmcnXSA9ICdGaWVsZCB2YWx1ZSBleGNlZWRzIG1heCBsZW5ndGgnOw0KJGxhbmdbJ2FwcHJvdmUnXSA9ICdTZXQgU3RhdHVzIHRvIFwnQWN0aXZlXCcnOw0KJGxhbmdbJ3JldmVydCddID0gJ1NldCBTdGF0dXMgdG8gXCdJbmFjdGl2ZVwnJzsNCiRsYW5nWydsYXN0cGFnZSddID0gJyZndDsmZ3Q7JzsNCiRsYW5nWydsYXN0X21vZGlmaWVkJ10gPSAnTGFzdCBNb2RpZmllZCc7DQokbGFuZ1sncGFnZSddID0gJ1BhZ2UnOw0KJGxhbmdbJ3BhZ2Vfb2YnXSA9ICdQYWdlICVzIG9mICVzJzsNCiRsYW5nWydwYWdlX2xpbWl0J10gPSAnUGFnZSBMaW1pdCc7DQokbGFuZ1snZmlyc3RwYWdlJ10gPSAnJmx0OyZsdDsnOw0KJGxhbmdbJ25leHRwYWdlJ10gPSAnJmd0Oyc7DQokbGFuZ1snb2YnXSA9ICdvZic7DQokbGFuZ1snaWQnXSA9ICdJZCc7DQokbGFuZ1sndGl0bGUnXSA9ICdUaXRsZSc7DQokbGFuZ1snaW5jbHVkZV9jaGlsZHJlbiddID0gJ0luY2x1ZGUgQ2hpbGRyZW4/JzsNCiRsYW5nWydoaWVyYXJjaHknXSAgPSAnSGllcmFyY2h5JzsNCiRsYW5nWydkYXRlJ10gPSAnRGF0ZSc7DQokbGFuZ1snZmlsdGVycyddID0gJ0ZpbHRlcnMnOw0KJGxhbmdbJ2FzY2VuZGluZyddID0gJ0FzY2VuZGluZyc7DQokbGFuZ1snZGVzY2VuZGluZyddID0gJ0Rlc2NlbmRpbmcnOw0KJGxhbmdbJ2FsbGNhdGVnb3JpZXMnXSA9ICdBbGwgY2F0ZWdvcmllcyc7DQokbGFuZ1snZnJvbSddID0gJ0Zyb20nOw0KJGxhbmdbJ3NlbGVjdF9hbGwnXSA9ICdTZWxlY3QgQWxsJzsNCiRsYW5nWydzZWxlY3Rfb25lJ10gPSAnU2VsZWN0IE9uZSc7DQokbGFuZ1snc2V0ZHJhZnQnXSA9ICdTZXQgQXMgSW5hY3RpdmUnOw0KJGxhbmdbJ3NldHB1Ymxpc2hlZCddID0gJ1NldCBBcyBBY3RpdmUnOw0KJGxhbmdbJ3dpdGhfc2VsZWN0ZWQnXSA9ICdXaXRoIFNlbGVjdGVkJzsNCiRsYW5nWydnbyddID0gJ0dvJzsNCiRsYW5nWydub3RoaW5nX3NlbGVjdGQnXSA9ICdOb3RoaW5nIHNlbGVjdGVkJzsNCg0KDQojb3B0aW9ucw0KJGxhbmdbJ2ZpbHRlciddID0gJ0ZpbHRlcic7DQokbGFuZ1snbW9kZSddID0gJ01vZGUnOw0KJGxhbmdbJ3NpbXBsZSddID0gJ1NpbXBsZSc7DQokbGFuZ1snYWR2YW5jZWQnXSA9ICdBZHZhbmNlZCc7DQokbGFuZ1sncHJvbXB0X2ZyaWVuZGx5bmFtZSddID0gJ01vZHVsZSBmcmllbmRseSBuYW1lJzsNCiRsYW5nWydwcm9tcHRfaXRlbV9zaW5ndWxhciddID0gJ0l0ZW0gc2luZ3VsYXInOw0KJGxhbmdbJ3Byb21wdF9pdGVtX3BsdXJhbCddID0gJ0l0ZW0gcGx1cmFsJzsNCiRsYW5nWydwcm9tcHRfdXJsX3ByZWZpeCddID0gJ1VSTCBQcmVmaXgnOw0KJGxhbmdbJ3Byb21wdF9kZWZhdWx0X2FjdGlvbl9wYXJhbXMnXSA9ICdEZWZhdWx0IHBhcmFtcyBmb3IgZGVmYXVsdCBhY3Rpb24nOw0KJGxhbmdbJ3Byb21wdF9kZXRhaWxfYWN0aW9uX3BhcmFtcyddID0gJ0RlZmF1bHQgcGFyYW1zIGZvciBkZXRhaWwgYWN0aW9uJzsNCiRsYW5nWydwcm9tcHRfdGl0bGVfcGFyYW1fZm9yX2NhY2hlJ10gPSAnVGl0bGUgcGFyYW0gZm9yIGNhY2hlIHJlc3VsdHMnOw0KJGxhbmdbJ3Byb21wdF9kaXNwbGF5X2lubGluZSddID0gJ0Rpc3BsYXkgZGV0YWlscyBpbmxpbmUnOw0KJGxhbmdbJ3Byb21wdF9sYXp5bG9hZGluZyddID0gJ0xhenkgbG9hZGluZyAoSWYgd2UgZG9uXCd0IG5lZWQgdXNlIG1vZHVsZSB3aXRoIGRldGFpbCBsaW5rIG9uIGZyb250ZW5kLiknOw0KJGxhbmdbJ3Byb21wdF9oYXNfYWRtaW4nXSA9ICdIYXMgYWRtaW4/JzsNCiRsYW5nWydwcm9tcHRfdXNlcmdyb3VwX2RlcGVuZGVuY2UnXSA9ICdVc2VyIGdyb3VwIGRlcGVuZGVuY2UnOw0KJGxhbmdbJ3Byb21wdF9pdGVtX2RldGFpbF9yZXR1cm5pZCddID0gJ0RldGFpbCByZXR1cm4gSUQnOw0KJGxhbmdbJ3Byb21wdF9pdGVtX2NhdGVnb3J5X3JldHVybmlkJ10gPSAnQ2F0ZWdvcnkgcmV0dXJuIElEJzsNCiRsYW5nWydwcm9tcHRfY3VzdG9tX2ZpZWxkc19kZWZhdWx0J10gPSAnRGVmYXVsdCBjdXN0b20gZmllbGRzJzsNCiRsYW5nWydwcm9tcHRfaXRlbV9jYXRlZ29yeV9lZGl0J10gPSAnRWRpdCBjYXRlZ29yeSc7DQokbGFuZ1sncHJvbXB0X3JlY3Vyc2l2ZSddID0gJ0VkaXQgcmVjdXJzaXZlJzsNCiRsYW5nWydwcm9tcHRfaXRlbV9kYXRlX2VkaXQnXSA9ICdFZGl0IGRhdGUnOw0KJGxhbmdbJ3Byb21wdF9pdGVtX2RhdGVfZW5kX2VkaXQnXSA9ICdFZGl0IGRhdGUgZW5kJzsNCiRsYW5nWydwcm9tcHRfaXRlbV9hbGlhc19lZGl0J10gPSAnRWRpdCBhbGlhcyc7DQokbGFuZ1sncHJvbXB0X2l0ZW1fdGl0bGVfZWRpdCddID0gJ0VkaXQgdGl0bGUnOw0KJGxhbmdbJ3Byb21wdF9pdGVtX3VybF9lZGl0J10gPSAnRWRpdCB1cmwnOw0KJGxhbmdbJ3Byb21wdF9maWx0ZXJfZGF0ZSddID0gJ0ZpbHRlciBkYXRlJzsNCiRsYW5nWydwcm9tcHRfc3VtbWFyeV9zb3J0b3JkZXInXSA9ICdTb3J0IG9yZGVyJzsNCiRsYW5nWydwcm9tcHRfc3VtbWFyeV9zb3J0aW5nJ10gPSAnU29ydGluZyc7DQokbGFuZ1sncHJvbXB0X3N1bW1hcnlfcGFnZWxpbWl0J10gPSAnUGFnZWxpbWl0JzsNCiRsYW5nWydwcm9tcHRfY2F0ZWdvcnlfZXh0cmFfbGFiZWwnXSA9ICdDYXRlZ29yeSBleHRyYSBsYWJlbCc7DQokbGFuZ1sncHJvbXB0X2l0ZW1fdGl0bGVfZWRpdCddID0gJ0VkaXQgdGl0bGUnOw0KJGxhbmdbJ3ZpZXdhYmxlX2ZpZWxkcyddID0gJ1ZpZXdhYmxlIGZpZWxkcyc7DQokbGFuZ1sndmlldyddID0gJ1ZpZXcnOw0KJGxhbmdbJ3Jlb3JkZXInXSA9ICdSZW9yZGVyJzsNCiRsYW5nWyd0byddID0gJ1RvJzsNCiRsYW5nWydwb3NpdGlvbiddID0gJ1Bvc2l0aW9uJzsNCiRsYW5nWydjcmVhdGVkZGF0ZSddID0gJ0NyZWF0ZWQgZGF0ZSc7DQokbGFuZ1snbW9kaWZpZWRkYXRlJ10gPSAnTW9kaWZpZWQgZGF0ZSc7DQoNCiMjc2VhcmNoDQokbGFuZ1snc2VhcmNoJ10gPSAnU2VhcmNoJzsNCiRsYW5nWydyZWluZGV4J10gPSAnUmVpbmRleCc7DQokbGFuZ1sncHJvbXB0X3NlYXJjaGFibGUnXSA9ICdTZWFyY2hhYmxlJzsNCiRsYW5nWydwcm9tcHRfc2VhcmNoX2RhdGVfZW5kJ10gPSAnRGF0ZSBlbmQgZm9yIHNlYXJjaCc7DQoNCiRsYW5nWydleHRyYSddID0gJ0V4dHJhJzsNCg0KJGxhbmdbJ3N1bmRheSddID0gJ1N1bmRheSc7DQokbGFuZ1snbW9uZGF5J10gPSAnTW9uZGF5JzsNCiRsYW5nWyd0dWVzZGF5J10gPSAnVHVlc2RheSc7DQokbGFuZ1snd2VkbmVzZGF5J10gPSAnV2VkbmVzZGF5JzsNCiRsYW5nWyd0aHVyc2RheSddID0gJ1RodXJzZGF5JzsNCiRsYW5nWydmcmlkYXknXSA9ICdGcmlkYXknOw0KJGxhbmdbJ3NhdHVyZGF5J10gPSAnU2F0dXJkYXknOw0KDQokbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSAnUmVjdXIgcGVyaW9kJzsNCiRsYW5nWyd3ZWVrZGF5cyddID0gJ1dlZWtkYXlzJzsNCiRsYW5nWydubyddID0gJ05vbmUnOw0KJGxhbmdbJ2RhaWx5J10gPSAnRGFpbHknOw0KJGxhbmdbJ3BsdXJhbF9kYWlseSddID0gJ0RheXMnOw0KDQoNCi8vIGdsb2JhbA0KJGxhbmdbJ2NoYW5nZXNzYXZlZCddID0gJ1lvdXIgY2hhbmdlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IHNhdmVkJzsNCiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZT8nOw0KJGxhbmdbJ2JhY2snXSA9ICdCYWNrJzsNCiRsYW5nWyd1cCddID0gJ1VwJzsNCiRsYW5nWydkb3duJ10gPSAnRG93bic7DQokbGFuZ1snZWRpdCddID0gJ0VkaXQnOw0KJGxhbmdbJ2RlbGV0ZSddID0gJ0RlbGV0ZSc7DQokbGFuZ1snbm9zdWNoaWQnXSA9ICdObyBzdWNoIElEJzsNCiRsYW5nWydkZWxldGVkJ10gPSAnVGhlIGVudHJ5IGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBkZWxldGVkJzsNCiRsYW5nWydhZGQnXSA9ICdBZGQnOw0KJGxhbmdbJ2FsaWFzJ10gPSAnQWxpYXMnOw0KJGxhbmdbJ2FsaWFzX2ludmFsaWQnXSA9ICdBbGlhcyBpcyBpbnZhbGlkLiBJdCBtdXN0IGJlIGEgdmFsaWQgUEhQIHZhcmlhYmxlIG5hbWUnOw0KDQoNCiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+DQo8bGk+VmVyc2lvbiBOb3ZlbWJlciwgMjAxMSAtICBpbml0IHJlbGVhc2U8L2xpPjwvdWw+JzsNCi8vIG1vZHVsZSBoZWxwDQokbGFuZ1snaGVscCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KPHA+TW9kdWxlIGdlbmVyYXRvciBsZXRzIHlvdSBjcmVhdGUgYSBsaXN0IHRoZSBtb2R1bGVzIGFzIE5ld3MsIFByb2R1Y3RzIGF0Yy4gSW5kaXZpZHVhbCBtb2R1bGVzLCB5b3UgY2FuIGxpbmsgYmV0d2VlbiB0aGVtLiAgWW91IGNhbiBjcmVhdGUgYSBtb2R1bGUgUGVvcGxlLCBHZW5kZXIgYW5kIFR5cGUgb2YgZW1wbG95bWVudCBhbmQgbGluayBiZXR3ZW4gdGhlbS48L3A+DQo8cD5FYWNoIG1vZHVsZSBpbmNsdWRlcyB0aGUgYWJpbGl0eSB0byBjcmVhdGVkIGNhdGVnb3JpZXMsIGN1c3RvbSBmaWVsZHMgIGFuZCBlZGl0ZWQgYSBudW1iZXIgb2Ygc2V0dGluZ3MuPC9wPg0KPHA+WW91IGNhbiB1c2UgdGhlIGxpc3QgdGVtcGxhdGVzICwgY2F0ZWdvcmllcyB0ZW1wbGF0ZXMgLCBmaWx0ZXIgdGVtcGxhdGVzLCBvciBkZXRhaWwgdGVtcGxhdGVzIGFzIGl0IGFscmVhZHkga25vd24gbW9kdWxlcyBmcm9tIE5ld3MsIFByb2R1Y3RzIGV0Yy48L3A+JzsNCg0KJGxhbmdbJ2V2ZW50ZGVzYy1JdGVtQWRkZWQnXSA9ICdTZW50IHdoZW4gYW4gaXRlbSBpcyBhZGRlZC4nOw0KJGxhbmdbJ2V2ZW50aGVscC1JdGVtQWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYW4gaXRlbSBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCJpdGVtX2lkXCIgLSBJZCBvZiB0aGUgaXRlbSBpdGVtPC9saT4NCjxsaT5cImNhdGVnb3J5X2lkXCIgLSBJZCBvZiB0aGUgY2F0ZWdvcnkgZm9yIHRoaXMgaXRlbTwvbGk+DQo8bGk+XCJ0aXRsZVwiIC0gVGl0bGUgb2YgdGhlIGl0ZW08L2xpPg0KPGxpPlwiYWN0aXZlIiAtIFN0YXR1cyBvZiB0aGUgaXRlbSAoIjAiIG9yICIxIik8L2xpPg0KPGxpPlwiaXRlbV9kYXRlIiAtIERhdGUgdGhlIGl0ZW0gc2hvdWxkIHN0YXJ0IGJlaW5nIGRpc3BsYXllZDwvbGk+DQo8bGk+XCJpdGVtX2RhdGVfZW5kXCIgLSBEYXRlIHRoZSBpdGVtIHNob3VsZCBzdG9wIGJlaW5nIGRpc3BsYXllZDwvbGk+DQo8L3VsPg0KJzsNCiRsYW5nWydldmVudGRlc2MtSXRlbUVkaXRlZCddID0gJ1NlbnQgd2hlbiBhbiBpdGVtIGlzIGVkaXRlZC4nOw0KJGxhbmdbJ2V2ZW50aGVscC1JdGVtRWRpdGVkJ10gPSAnPHA+U2VudCB3aGVuIGFuIGl0ZW0gaXMgZWRpdGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cIml0ZW1faWRcIiAtIElkIG9mIHRoZSBpdGVtIGl0ZW08L2xpPg0KPGxpPlwiY2F0ZWdvcnlfaWRcIiAtIElkIG9mIHRoZSBjYXRlZ29yeSBmb3IgdGhpcyBpdGVtPC9saT4NCjxsaT5cInRpdGxlXCIgLSBUaXRsZSBvZiB0aGUgaXRlbTwvbGk+DQo8bGk+XCJhY3RpdmUiIC0gU3RhdHVzIG9mIHRoZSBpdGVtICgiMCIgb3IgIjEiKTwvbGk+DQo8bGk+XCJpdGVtX2RhdGUiIC0gRGF0ZSB0aGUgaXRlbSBzaG91bGQgc3RhcnQgYmVpbmcgZGlzcGxheWVkPC9saT4NCjxsaT5cIml0ZW1fZGF0ZV9lbmRcIiAtIERhdGUgdGhlIGl0ZW0gc2hvdWxkIHN0b3AgYmVpbmcgZGlzcGxheWVkPC9saT4NCjwvdWw+DQonOw0KJGxhbmdbJ2V2ZW50ZGVzYy1JdGVtRGVsZXRlZCddID0gJ1NlbnQgd2hlbiBhbiBpdGVtIGlzIGRlbGV0ZWQuJzsNCiRsYW5nWydldmVudGhlbHAtSXRlbURlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYW4gaXRlbSBpcyBkZWxldGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cIml0ZW1faWRcIiAtIElkIG9mIHRoZSBpdGVtIGl0ZW08L2xpPg0KPC91bD4NCic7DQokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5QWRkZWQnXSA9ICdTZW50IHdoZW4gYSBjYXRlZ29yeSBpcyBhZGRlZC4nOw0KJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUFkZGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2F0ZWdvcnkgaXMgYWRkZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwiY2F0ZWdvcnlfaWRcIiAtIElkIG9mIHRoZSBpdGVtIGNhdGVnb3J5PC9saT4NCjxsaT5cIm5hbWVcIiAtIE5hbWUgb2YgdGhlIGl0ZW0gY2F0ZWdvcnk8L2xpPg0KPC91bD4NCic7DQokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5RWRpdGVkJ10gPSAnU2VudCB3aGVuIGEgY2F0ZWdvcnkgaXMgZWRpdGVkLic7DQokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RWRpdGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2F0ZWdvcnkgaXMgZWRpdGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cImNhdGVnb3J5X2lkXCIgLSBJZCBvZiB0aGUgaXRlbSBjYXRlZ29yeTwvbGk+DQo8bGk+XCJuYW1lXCIgLSBOYW1lIG9mIHRoZSBpdGVtIGNhdGVnb3J5PC9saT4NCjxsaT5cIm9yaWduYW1lXCIgLSBUaGUgb3JpZ2luYWwgbmFtZSBvZiB0aGUgaXRlbSBjYXRlZ29yeTwvbGk+DQo8L3VsPg0KJzsNCiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnU2VudCB3aGVuIGEgY2F0ZWdvcnkgaXMgZGVsZXRlZC4nOw0KJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeURlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYXRlZ29yeSBpcyBkZWxldGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cImNhdGVnb3J5X2lkXCIgLSBJZCBvZiB0aGUgZGVsZXRlZCBjYXRlZ29yeSA8L2xpPg0KPGxpPlwibmFtZVwiIC0gTmFtZSBvZiB0aGUgZGVsZXRlZCBjYXRlZ29yeTwvbGk+DQo8L3VsPg0KJzsNCiRsYW5nWydldmVudGRlc2MtSXRlbXNSZW9yZGVyZWQnXSA9ICdTZW50IHdoZW4gaXRlbXMgYXJlIHJlb3JkZXJlZC4nOw0KJGxhbmdbJ2V2ZW50aGVscC1JdGVtc1Jlb3JkZXJlZCddID0gJzxwPlNlbnQgd2hlbiBpdGVtcyBpcyByZW9yZGVyZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwiY2F0ZWdvcnlfaWRcIiAtIElkIG9mIHRoZSBkZWxldGVkIGNhdGVnb3J5IDwvbGk+DQo8bGk+XCJuYW1lXCIgLSBOYW1lIG9mIHRoZSBkZWxldGVkIGNhdGVnb3J5PC9saT4NCjwvdWw+DQonOw0KJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yaWVzUmVvcmRlcmVkJ10gPSAnU2VudCB3aGVuIGNhdGVnb3JpZXMgYXJlIHJlb3JkZXJlZC4nOw0KJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yaWVzUmVvcmRlcmVkJ10gPSAnPHA+U2VudCB3aGVuIGNhdGVnb3JpZXMgYXJlIHJlb3JkZXJlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCJjYXRlZ29yeV9pZFwiIC0gSWQgb2YgdGhlIGRlbGV0ZWQgY2F0ZWdvcnkgPC9saT4NCjxsaT5cIm5hbWVcIiAtIE5hbWUgb2YgdGhlIGRlbGV0ZWQgY2F0ZWdvcnk8L2xpPg0KPC91bD4NCic7DQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.generator_fields.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBNb2R1bGVHZW5lcmF0b3IgZm9yIENNUyBNYWRlIFNpbXBsZSAoQGt1em1hbnkpCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovKioKICogRGVzY3JpcHRpb24gb2YgY2xhc3MKICoKICogQGF1dGhvciBAa3V6bWFueQogKi8KCmNsYXNzIGdlbmVyYXRvcl9maWVsZHMgewoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHsKICAgICAgICAKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9maWVsZHNfZm9yX2ZpbHRlcnMoJG1vZCwgJGJsb2NrdHlwZXMgPSBhcnJheSgpKSB7CiAgICAgICAgJGZpZWxkcyA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2ZpZWxkX2RlZnMoJG1vZCk7CiAgICAgICAgJGN1c3RvbV9mbGRzID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoICgkZmllbGRzIGFzICRyb3cpIHsKICAgICAgICAgICAgaWYgKGluX2FycmF5KCRyb3dbInR5cGUiXSwgJGJsb2NrdHlwZXMpKQogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICRjdXN0b21fZmxkc1skcm93WydmaWVsZGRlZl9pZCddXSA9ICRyb3c7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkY3VzdG9tX2ZsZHM7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZmllbGRzX3ZhbHMoJG1vZCwgJGl0ZW1faWQgPSBudWxsLCAkcGFyYW1zID0gYXJyYXkoKSkgewoKICAgICAgICAvLyByZXR1cm4gZW1wdHkgYXJyYXkKICAgICAgICBpZiAoJGl0ZW1faWQgPT0gbnVsbCkKICAgICAgICAgICAgcmV0dXJuIGFycmF5KCk7CgogICAgICAgICRkYiA9IGNtc21zKCktPkdldERCKCk7CiAgICAgICAgJGZpZWxkdmFscyA9IGFycmF5KCk7CiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBXSEVSRSBpdGVtX2lkID0gPyc7CiAgICAgICAgJHJlc3VsdCA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5LCBhcnJheSgkaXRlbV9pZCkpOwogICAgICAgIGlmIChpc19hcnJheSgkcmVzdWx0KSkgewogICAgICAgICAgICBmb3JlYWNoICgkcmVzdWx0IGFzICRyb3cpIHsKICAgICAgICAgICAgICAgICRmaWVsZHZhbHNbJHJvd1snZmllbGRkZWZfaWQnXV0gPSAkcm93Wyd2YWx1ZSddOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBwcm9jY2VzIHZhbHVlcyBmcm9tIHBhcmFtcwogICAgICAgIGlmIChpc3NldCgkcGFyYW1zWydjdXN0b21maWVsZCddKSkgewogICAgICAgICAgICBmb3JlYWNoICgkcGFyYW1zWydjdXN0b21maWVsZCddIGFzICRmbGRpZCA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgICAgICRmaWVsZHZhbHNbJGZsZGlkXSA9IGlzX2FycmF5KCR2YWx1ZSkgPyBlbXB0eSgkdmFsdWUpID8gJycgOiBpbXBsb2RlKCcsJywgJHZhbHVlKSAgOiAkdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkZmllbGR2YWxzOwogICAgfQoKfQoKPz4K]]></data>
	</file>
	<file>
	  <filename>/lib/class.generator_filters.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBNb2R1bGVHZW5lcmF0b3IgZm9yIENNUyBNYWRlIFNpbXBsZSAoQGt1em1hbnkpCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovKioKICogRGVzY3JpcHRpb24gb2YgY2xhc3MKICoKICogQGF1dGhvciBAa3V6bWFueQogKi8KCmNsYXNzIGdlbmVyYXRvcl9maWx0ZXJzIHsKCiAgICBwcml2YXRlICRfdHlwZTsKICAgIHByaXZhdGUgJF9tb2Q7CiAgICBwcml2YXRlICRfaWQ7CiAgICBwcml2YXRlICRfaW5zdGFuY2UgPSBudWxsOwogICAgcHVibGljICRjdXN0b21fZmllbGRzID0gYXJyYXkoKTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGlkID0gbnVsbCwgJG1vZCwgJHR5cGUgPSAnYWRtaW4nKSB7CgogICAgICAgIGlmICgkdGhpcy0+X2luc3RhbmNlICE9IG51bGwgJiYgaXNfb2JqZWN0KCR0aGlzLT5faW5zdGFuY2UpKQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPl9pbnN0YW5jZTsKCiAgICAgICAgJHRoaXMtPl9pZCA9ICRpZDsKICAgICAgICAkdGhpcy0+X3R5cGUgPSAkdHlwZTsKICAgICAgICAkdGhpcy0+X21vZCA9ICRtb2Q7CiAgICAgICAgJHRoaXMtPl9pbnN0YW5jZSA9ICR0aGlzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBwcm9jZXNzX2N1c3RvbV9maWVsZHMoJGJsb2NrdHlwZXMgPSBhcnJheSgpLCAkY3VzdG9tX2ZsZHMgPSBhcnJheSgpKSB7CgogICAgICAgIGlmIChlbXB0eSgkY3VzdG9tX2ZsZHMpKQogICAgICAgICAgICAkY3VzdG9tX2ZsZHMgPSBnZW5lcmF0b3JfZmllbGRzOjpnZXRfZmllbGRzX2Zvcl9maWx0ZXJzKCR0aGlzLT5fbW9kLCAkYmxvY2t0eXBlcyk7CgoKICAgICAgICBmb3JlYWNoICgkY3VzdG9tX2ZsZHMgYXMgJGN1c3RvbV9mbGQgPT4gJHNldHRpbmcpIHsKICAgICAgICAgICAgLy8gZ2V0IGV4dHJhIGNvbW1hbmRzCiAgICAgICAgICAgICRpbnN0cnVjdGlvbnMgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYSgkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydleHRyYSddLCAkdGhpcy0+X21vZCk7CgogICAgICAgICAgICBzd2l0Y2ggKCRzZXR0aW5nWyd0eXBlJ10pIHsKICAgICAgICAgICAgICAgIGNhc2UgJ3RleHRib3gnOgogICAgICAgICAgICAgICAgICAgICRjdXN0b21fZmxkc1skY3VzdG9tX2ZsZF1bJ3NpemUnXSA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhX3NpemUoJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgJGN1c3RvbV9mbGRzWyRjdXN0b21fZmxkXVsnbWF4X2xlbmd0aCddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfbWF4X2xlbmd0aCgkaW5zdHJ1Y3Rpb25zKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdkcm9wZG93bic6CiAgICAgICAgICAgICAgICAgICAgJGN1c3RvbV9mbGRzWyRjdXN0b21fZmxkXVsnb3B0aW9ucyddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfb3B0aW9ucygkaW5zdHJ1Y3Rpb25zKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdkcm9wZG93bmZyb21tb2R1bGUnOgogICAgICAgICAgICAgICAgICAgICRjdXN0b21fZmxkc1skY3VzdG9tX2ZsZF1bJ29wdGlvbnMnXSA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhX21vZHVsZW9wdGlvbnMoJGluc3RydWN0aW9ucywgJG1vZCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnbW9kdWxlJzoKICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydzZWxlY3RfZGVmYXVsdCddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfc2VsZWN0ZGVmYXVsdCgkaW5zdHJ1Y3Rpb25zKTsKICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydtdWx0aXBsZSddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfbXVsdGlwbGUoJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgJGN1c3RvbV9mbGRzWyRjdXN0b21fZmxkXVsncGFyYW1zJ10gPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYV9tb2R1bGVwYXJhbXMoJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnbW9kdWxlX2xpbmsnOgogICAgICAgICAgICAgICAgICAgIC8vJGN1c3RvbV9mbGRzWyRjdXN0b21fZmxkXVsnbGluayddID0gJGluc3RydWN0aW9uc1swXTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdjb2xvcl9waWNrZXInOgogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ3BhZ2UnOgogICAgICAgICAgICAgICAgICAgICRjdXN0b21fZmxkc1skY3VzdG9tX2ZsZF1bJ29wdGlvbnMnXSA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhX3BhZ2UoJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnc3RhdGljJzoKCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnY2hlY2tib3gnOgoKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICd0ZXh0YXJlYSc6CiAgICAgICAgICAgICAgICAgICAgJGN1c3RvbV9mbGRzWyRjdXN0b21fZmxkXVsnY29scyddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfY29scygkaW5zdHJ1Y3Rpb25zKTsKICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydyb3dzJ10gPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYV9yb3dzKCRpbnN0cnVjdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICRjdXN0b21fZmxkc1skY3VzdG9tX2ZsZF1bJ21heF9sZW5ndGgnXSA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhX21heF9sZW5ndGgoJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgJGN1c3RvbV9mbGRzWyRjdXN0b21fZmxkXVsnd3lzaXd5ZyddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfd3lzaXd5ZygkaW5zdHJ1Y3Rpb25zKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdzZWxlY3RfZGF0ZSc6CiAgICAgICAgICAgICAgICAgICAgJGN1c3RvbV9mbGRzWyRjdXN0b21fZmxkXVsnc2l6ZSddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfc2l6ZSgkaW5zdHJ1Y3Rpb25zKTsKICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydtYXhfbGVuZ3RoJ10gPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYV9tYXhfbGVuZ3RoKCRpbnN0cnVjdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICRjdXN0b21fZmxkc1skY3VzdG9tX2ZsZF1bJ2RhdGVmb3JtYXQnXSA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhX2RhdGVfZm9ybWF0KCRpbnN0cnVjdGlvbnMpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ3VwbG9hZF9maWxlJzoKICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydhbGxvdyddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfYWxsb3coJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnc2VsZWN0X2ZpbGUnOgogICAgICAgICAgICAgICAgICAgICRjdXN0b21fZmxkc1skY3VzdG9tX2ZsZF1bJ2FsbG93J10gPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYV9hbGxvdygkaW5zdHJ1Y3Rpb25zKTsKICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydkaXInXSA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhX2RpcigkaW5zdHJ1Y3Rpb25zKTsKICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZHNbJGN1c3RvbV9mbGRdWydleGNsdWRlX3ByZWZpeCddID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfZXhjbHVkZV9wcmVmaXgoJGluc3RydWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHRoaXMtPmN1c3RvbV9maWVsZHMgPSAkY3VzdG9tX2ZsZHM7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jdXN0b21fZmllbGRzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0ZSgkaXRlbV9pZCA9IG51bGwsICRwYXJhbXMgPSBhcnJheSgpLCAkZmllbGR2YWxzID0gYXJyYXkoKSwgJGZyb250ZW5kID0gbnVsbCkgewoKICAgICAgICBpZiAoISR0aGlzLT5jdXN0b21fZmllbGRzKQogICAgICAgICAgICByZXR1cm47CgoKICAgICAgICAkaWQgPSAkdGhpcy0+X2lkOwogICAgICAgICRtb2QgPSAkdGhpcy0+X21vZDsKCiAgICAgICAgaWYgKGVtcHR5KCRmaWVsZHZhbHMpKQogICAgICAgICAgICAkZmllbGR2YWxzID0gZ2VuZXJhdG9yX2ZpZWxkczo6Z2V0X2ZpZWxkc192YWxzKCRtb2QsICRpdGVtX2lkLCAkcGFyYW1zKTsKCgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5jdXN0b21fZmllbGRzIGFzICRjdXN0b21fZmxkKSB7CiAgICAgICAgICAgIGlmICghJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ10pCiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgJG9iaiA9IG5ldyBTdGRDbGFzcygpOwogICAgICAgICAgICAkbmFtZSA9ICdjdXN0b21maWVsZFsnIC4gJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ10gLiAnXSc7CiAgICAgICAgICAgICRvYmotPmZpZWxkZGVmX2lkID0gJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ107CiAgICAgICAgICAgICRvYmotPnByb21wdCA9ICgkY3VzdG9tX2ZsZFsncmVxdWlyZWQnXSA/ICcqJyA6ICcnKSAuICRjdXN0b21fZmxkWyduYW1lJ107CiAgICAgICAgICAgICRvYmotPmxhYmVsID0gJGN1c3RvbV9mbGRbJ25hbWUnXTsKICAgICAgICAgICAgJG9iai0+YWxpYXMgPSAkY3VzdG9tX2ZsZFsnYWxpYXMnXTsKICAgICAgICAgICAgJG9iai0+ZWRpdHZpZXcgPSAkY3VzdG9tX2ZsZFsnZWRpdHZpZXcnXTsKICAgICAgICAgICAgJG9iai0+bmFtZSA9ICRpZC4kY3VzdG9tX2ZsZFsnYWxpYXMnXTsKICAgICAgICAgICAgJHZhbHVlID0gKGlzc2V0KCRmaWVsZHZhbHNbJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ11dKSA/ICRmaWVsZHZhbHNbJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ11dIDogJycpOwogICAgICAgICAgICAkb2JqLT5pdGVtX2lkID0gJGl0ZW1faWQ7CiAgICAgICAgICAgICRvYmotPnZhbHVlID0gJHZhbHVlOwogICAgICAgICAgICAkb2JqLT5oZWxwID0gJGN1c3RvbV9mbGRbJ2hlbHAnXTsKICAgICAgICAgICAgJG9iai0+ZXh0cmEgPSAkY3VzdG9tX2ZsZFsnZXh0cmEnXTsKICAgICAgICAgICAgc3dpdGNoICgkY3VzdG9tX2ZsZFsndHlwZSddKSB7CiAgICAgICAgICAgICAgICBjYXNlICd0ZXh0Ym94JzoKICAgICAgICAgICAgICAgICAgICAkc2l6ZSA9ICFlbXB0eSgkY3VzdG9tX2ZsZFsnc2l6ZSddKSA/ICRjdXN0b21fZmxkWydzaXplJ10gOiA1MDsKICAgICAgICAgICAgICAgICAgICAkZnJvbnRfZW5kX3R5cGUgPSAnZXF1YWwnOwogICAgICAgICAgICAgICAgICAgIGlmICgkZnJvbnRlbmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAnZmlsdGVyXycgLiAkY3VzdG9tX2ZsZFsnZmllbGRkZWZfaWQnXSAuICdfJyAuICRmcm9udF9lbmRfdHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gKGlzU2V0KCRwYXJhbXNbJ2ZpbHRlcl8nIC4gJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ10gLiAnXycgLiAkZnJvbnRfZW5kX3R5cGVdKSA/ICRwYXJhbXNbJ2ZpbHRlcl8nIC4gJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ10gLiAnXycgLiAkZnJvbnRfZW5kX3R5cGVdIDogJycpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkY3VzdG9tX2ZsZFsnbWF4X2xlbmd0aCddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWVsZCA9ICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICRuYW1lLCAkdmFsdWUsICRzaXplLCAkY3VzdG9tX2ZsZFsnbWF4X2xlbmd0aCddKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWVsZCA9ICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICRuYW1lLCAkdmFsdWUsICRzaXplKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ21vZHVsZSc6CgogICAgICAgICAgICAgICAgICAgICRvcHRpb25zID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNfYXJyYXkoJGN1c3RvbV9mbGRbJ3BhcmFtcyddKSAmJiAhZW1wdHkoJGN1c3RvbV9mbGRbJ3BhcmFtcyddKSAmJiAkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCRjdXN0b21fZmxkWydwYXJhbXMnXVsibW9kdWxlIl0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0KCRjdXN0b21fZmxkWydwYXJhbXMnXVsibW9kdWxlIl0pOwogICAgICAgICAgICAgICAgICAgICAgICAkY3VzdG9tX2ZsZFsncGFyYW1zJ11bIml0ZW1zIl0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAkbW9kdWxlLT5Eb0FjdGlvbignZGVmYXVsdCcsICRpZCwgJGN1c3RvbV9mbGRbJ3BhcmFtcyddLCAkcmV0dXJuaWQpOwogICAgICAgICAgICAgICAgICAgICAgICAkb3B0aW9ucyA9IGV4dGVuZGVkX3Rvb2xzX29wdHM6OnRvX2hhc2goZ2VuZXJhdG9yX3Rvb2xzOjokaXRlbXMsICd0aXRsZScsICdpdGVtX2lkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvcl90b29sczo6JGl0ZW1zID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChpc1NldCgkY3VzdG9tX2ZsZFsnbXVsdGlwbGUnXSkgJiYgaXNfaW50KCRjdXN0b21fZmxkWydtdWx0aXBsZSddKSAmJiAhJGZyb250ZW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1NldCgkY3VzdG9tX2ZsZFsnc2VsZWN0X2RlZmF1bHQnXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcHRpb25zID0gYXJyYXkoJGN1c3RvbV9mbGRbJ3NlbGVjdF9kZWZhdWx0J10gPT4gJycpICsgJG9wdGlvbnM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWVsZCA9ICRtb2QtPkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICRuYW1lIC4gIltdIiwgJG9wdGlvbnMsICghZW1wdHkoJHZhbHVlKSA/IGV4cGxvZGUoJywnLCAkdmFsdWUpIDogYXJyYXkoMCA9PiAnJykpLCAkY3VzdG9tX2ZsZFsnbXVsdGlwbGUnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2JqLT5maWVsZCA9ICRtb2QtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJG5hbWUgLiAiW10iLCAnJykgLiAkbW9kLT5DcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCAkbmFtZSAuICJbXSIsICRvcHRpb25zLCAoIWVtcHR5KCR2YWx1ZSkgPyBleHBsb2RlKCcsJywgJHZhbHVlKSA6IGFycmF5KDAgPT4gJycpKSwgJGN1c3RvbV9mbGRbJ211bHRpcGxlJ10pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9wdGlvbnMgPSBhcnJheShnZW5lcmF0b3IoKS0+TGFuZygnc2VsZWN0X2RlZmF1bHQnKSA9PiAnJykgKyAkb3B0aW9uczsKCiAgICAgICAgICAgICAgICAgICAgICAgICRmcm9udF9lbmRfdHlwZSA9ICdlcXVhbCc7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1NldCgkY3VzdG9tX2ZsZFsnbXVsdGlwbGUnXSkgJiYgaXNfaW50KCRjdXN0b21fZmxkWydtdWx0aXBsZSddKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmcm9udF9lbmRfdHlwZSA9ICdpbnNldCc7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGZyb250ZW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICdmaWx0ZXJfJyAuICRjdXN0b21fZmxkWydmaWVsZGRlZl9pZCddIC4gJ18nIC4gJGZyb250X2VuZF90eXBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gKGlzU2V0KCRwYXJhbXNbJ2ZpbHRlcl8nIC4gJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ10gLiAnXycgLiAkZnJvbnRfZW5kX3R5cGVdKSA/ICRwYXJhbXNbJ2ZpbHRlcl8nIC4gJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ10gLiAnXycgLiAkZnJvbnRfZW5kX3R5cGVdIDogJycpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICRvYmotPnZhbHVlID0gJHZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAkb2JqLT5vcHRpb25zID0gJG9wdGlvbnM7CiAgICAgICAgICAgICAgICAgICAgICAgICRvYmotPmZpZWxkID0gJG1vZC0+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[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBNb2R1bGVHZW5lcmF0b3IgZm9yIENNUyBNYWRlIFNpbXBsZSAoQGt1em1hbnkpCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovKioKICogRGVzY3JpcHRpb24gb2YgY2xhc3MKICoKICogQGF1dGhvciBAa3V6bWFueQogKi8KCmNsYXNzIGdlbmVyYXRvcl9vcHRzIHsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7CiAgICAgICAgCiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfbW9kdWxlKCRuYW1lKSB7CiAgICAgICAgJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTW9kdWxlR2VuZXJhdG9yJyk7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICByZXR1cm4gJGRiLT5HZXRSb3coJ1NFTEVDVCAqIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfZ2VuZXJhdG9yIFdIRVJFIG1vZHVsZV9uYW1lID0gPycsIGFycmF5KCRuYW1lKSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWxldGUoJG5hbWUpIHsKICAgICAgICAkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNb2R1bGVHZW5lcmF0b3InKTsKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgIHJldHVybiAkZGItPkV4ZWN1dGUoJ0RFTEVURSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX2dlbmVyYXRvciBXSEVSRSBtb2R1bGVfbmFtZSA9ID8nLCBhcnJheSgkbmFtZSkpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdXBkYXRlYXR0YWNoKCRuYW1lLCAkYXR0YWNoKSB7CiAgICAgICAgJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTW9kdWxlR2VuZXJhdG9yJyk7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICByZXR1cm4gJGRiLT5FeGVjdXRlKCdVUERBVEUgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfZ2VuZXJhdG9yIFNFVCBhdHRhY2ggPSA/LCBtb2RpZmllZF9kYXRlID0gTk9XKCkgV0hFUkUgbW9kdWxlX25hbWUgPSA/JywgYXJyYXkoJGF0dGFjaCwgJG5hbWUpKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHVwZGF0ZWRhdGUoJG5hbWUpIHsKICAgICAgICAkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNb2R1bGVHZW5lcmF0b3InKTsKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgIHJldHVybiAkZGItPkV4ZWN1dGUoJ1VQREFURSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9nZW5lcmF0b3IgU0VUIG1vZGlmaWVkX2RhdGUgPSBOT1coKSBXSEVSRSBtb2R1bGVfbmFtZSA9ID8nLCBhcnJheSgkbmFtZSkpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaW5zZXJ0KCRuYW1lLCAkYXR0YWNoID0gJycpIHsKICAgICAgICAkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNb2R1bGVHZW5lcmF0b3InKTsKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgIHJldHVybiAkZGItPkV4ZWN1dGUoJ0lOU0VSVCBJTlRPICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX2dlbmVyYXRvciAobW9kdWxlX25hbWUsYXR0YWNoLCBjcmVhdGVfZGF0ZSwgbW9kaWZpZWRfZGF0ZSkgVkFMVUVTICg/LD8sTk9XKCksTk9XKCkpJywgYXJyYXkoJG5hbWUsICRhdHRhY2gpKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9tb2R1bGVzX2xpc3QoKSB7CiAgICAgICAgcmV0dXJuIGV4dGVuZGVkX3Rvb2xzX29wdHM6OnRvX2hhc2goc2VsZjo6Z2V0X21vZHVsZXMoKSwgJ21vZHVsZV9uYW1lJywgJ2lkJyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfbW9kdWxlcygpIHsKICAgICAgICAkaXRlbXMgPSBhcnJheSgpOwogICAgICAgICRtb2R1bGUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01vZHVsZUdlbmVyYXRvcicpOwogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgJGl0ZW1zID0gJGRiLT5HZXRBcnJheSgnU0VMRUNUICogRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9nZW5lcmF0b3InKTsKICAgICAgICByZXR1cm4gJGl0ZW1zOwogICAgfQogICAgCgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfYXR0YWNoX21vZHVsZXMoJGF0dGFjaG1vZHVsZXMpIHsKICAgICAgICAkaXRlbXMgPSBhcnJheSgpOwogICAgICAgICRtb2R1bGUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01vZHVsZUdlbmVyYXRvcicpOwogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgJGl0ZW1zID0gJGRiLT5HZXRBcnJheSgnU0VMRUNUIGlkLG1vZHVsZV9uYW1lIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfZ2VuZXJhdG9yIFdIRVJFIEZJTkRfSU5fU0VUKGlkLD8pID4gMCcsIGFycmF5KCRhdHRhY2htb2R1bGVzKSk7CiAgICAgICAgaWYgKCEkaXRlbXMpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgJGl0ZW1zID0gZXh0ZW5kZWRfdG9vbHNfb3B0czo6dG9faGFzaCgkaXRlbXMsICdtb2R1bGVfbmFtZScsICdpZCcpOwogICAgICAgICRtb2R1bGVzID0gYXJyYXlfa2V5cygkaXRlbXMpOwoKICAgICAgICByZXR1cm4gaW1wbG9kZSgnLCAnLCAkbW9kdWxlcyk7CiAgICB9Cgp9Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.generator_tools.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBNb2R1bGVHZW5lcmF0b3IgZm9yIENNUyBNYWRlIFNpbXBsZSAoQGt1em1hbnkpCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovKioKICogRGVzY3JpcHRpb24gb2YgY2xhc3MKICoKICogQGF1dGhvciBAa3V6bWFueQogKi8KCmNsYXNzIGdlbmVyYXRvcl90b29scyB7CgogICAgcHJpdmF0ZSBzdGF0aWMgJHNlYXJjaF9kYXRlX2VuZCA9IG51bGw7CiAgICBwdWJsaWMgc3RhdGljICRpdGVtcyA9IG51bGw7CiAgICBwdWJsaWMgc3RhdGljICRmaWVsZHNfYmxvY2tsaXN0ID0gYXJyYXkoJ2l0ZW1faWQnLCAnY2F0ZWdvcnlfaWQnLCAndGl0bGUnLCAnYWxpYXMnLCAndXJsJywgJ3Bvc2l0aW9uJywgJ2FjdGl2ZScsICdpdGVtX2RhdGUnLCAnY3JlYXRlX2RhdGUnLCAnbW9kaWZpZWRfZGF0ZScpOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHsKICAgICAgICAKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9maWVsZF9kZWZzKCRtb2QsICR0eXBlID0gbnVsbCwgJGZpbHRlcl9mcm9udGVuZCA9IG51bGwsICRmaWx0ZXJfYWRtaW4gPSBudWxsKSB7CiAgICAgICAgJHBhcm1zID0gYXJyYXkoKTsKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwoKICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIGZpZWxkZGVmX2lkLCBuYW1lLCBhbGlhcywgaGVscCwgdHlwZSwgcG9zaXRpb24sIHJlcXVpcmVkLCBzZWFyY2hhYmxlLCBleHRyYSwgZnJvbnRlbmQsZWRpdHZpZXcsIGZpbHRlcl9mcm9udGVuZCwgZmlsdGVyX2FkbWluIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZic7CiAgICAgICAgJHF1ZXJ5IC49ICIgV0hFUkUgMSAiOwogICAgICAgIGlmICgkdHlwZSkgewogICAgICAgICAgICAkcXVlcnkgLj0gIiBBTkQgdHlwZSAgPSA/ICAiOwogICAgICAgICAgICAkcGFybXNbXSA9ICR0eXBlOwogICAgICAgIH0KICAgICAgICBpZiAoJGZpbHRlcl9mcm9udGVuZCkgewogICAgICAgICAgICAkcXVlcnkgLj0gIiBBTkQgZmlsdGVyX2Zyb250ZW5kICA9ID8gICI7CiAgICAgICAgICAgICRwYXJtc1tdID0gJGZpbHRlcl9mcm9udGVuZDsKICAgICAgICB9CiAgICAgICAgaWYgKCRmaWx0ZXJfYWRtaW4pIHsKICAgICAgICAgICAgJHF1ZXJ5IC49ICIgQU5EIGZpbHRlcl9hZG1pbiAgPSA/ICAiOwogICAgICAgICAgICAkcGFybXNbXSA9ICRmaWx0ZXJfYWRtaW47CiAgICAgICAgfQogICAgICAgICRxdWVyeSAuPSAiICBPUkRFUiBCWSBwb3NpdGlvbiI7CiAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5HZXRBbGwoJHF1ZXJ5LCAkcGFybXMpOwogICAgICAgIHJldHVybiAkZGJyZXN1bHQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZmllbGRfdmFsKCRtb2QsICRpdGVtX2lkLCAkZmllbGRfYWxpYXMpIHsKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgdmFsdWUgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCAnOwogICAgICAgICRxdWVyeSAuPSAiIFdIRVJFICBpdGVtX2lkID0gPyBBTkQgZmllbGRkZWZfaWQgPSA/IjsKICAgICAgICAkdmFsdWUgPSAkZGItPkdldE9uZSgkcXVlcnksICRwYXJtcyk7CiAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkYXRhCiAgICAgKiBAcmV0dXJuIHRpbWVzdGFtcCAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwcm9jZXNzX2ZpbHRlcl9kYXRlKCRkYXRlKSB7CiAgICAgICAgJGRhdGVfZnJvbSA9ICcnOwogICAgICAgIHN3aXRjaCAoc3RydG9sb3dlcigkZGF0ZSkpIHsKICAgICAgICAgICAgY2FzZSAibm93IjoKICAgICAgICAgICAgICAgICRkYXRlX2Zyb20gPSB0aW1lKCk7CiAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICRkYXRlX2FycmF5ID0gZXhwbG9kZSgnOicsICRkYXRlKTsKICAgICAgICAgICAgICAgIGlmIChjb3VudCgkZGF0ZV9hcnJheSkgPT0gMikgewogICAgICAgICAgICAgICAgICAgICRkYXRlX3RpbWUgPSBzdHJ0b3RpbWUoIisiIC4gJGRhdGVfYXJyYXlbMF0gLiAiIGRheSIpOwogICAgICAgICAgICAgICAgICAgICRkYXRlX2Zyb20gPSBta3RpbWUoJGRhdGVfYXJyYXlbMV0sIDAsIDAsIGRhdGUoIm0iLCAkZGF0ZV90aW1lKSwgZGF0ZSgiZCIsICRkYXRlX3RpbWUpLCBkYXRlKCJZIiwgJGRhdGVfdGltZSkpOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKGNvdW50KCRkYXRlX2FycmF5KSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgJGRhdGVfZnJvbSA9IHN0cnRvdGltZSgiKyIgLiAkZGF0ZV9hcnJheVswXSAuICIgaG91cnMiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGRhdGVfZnJvbTsKICAgIH0KCiAgICAvKioKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkYXRhCiAgICAgKiBAcmV0dXJuIHRpbWVzdGFtcCAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwcm9jZXNzX2ZpbHRlcl9kYXRlX3JlY3Vyc2l2ZSgkZGF0ZSkgewogICAgICAgICRkYXRlX2Zyb20gPSAnJzsKICAgICAgICBzd2l0Y2ggKHN0cnRvbG93ZXIoJGRhdGUpKSB7CiAgICAgICAgICAgIGNhc2UgIm5vdyI6CiAgICAgICAgICAgICAgICAkZGF0ZV9mcm9tID0gImUudmFsdWUgPSA/IEFORCBkYXRlX2Zvcm1hdChjLml0ZW1fZGF0ZSwnJUg6JWk6JXMnKSA+ID8iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAkZGF0ZV9hcnJheSA9IGV4cGxvZGUoJzonLCAkZGF0ZSk7CiAgICAgICAgICAgICAgICBpZiAoY291bnQoJGRhdGVfYXJyYXkpID09IDIpIHsKICAgICAgICAgICAgICAgICAgICAkZGF0ZV90aW1lID0gc3RydG90aW1lKCIrIiAuICRkYXRlX2FycmF5WzBdIC4gIiBkYXkiKTsKICAgICAgICAgICAgICAgICAgICAkZGF0ZV9mcm9tID0gbWt0aW1lKCRkYXRlX2FycmF5WzFdLCAwLCAwLCBkYXRlKCJtIiwgJGRhdGVfdGltZSksIGRhdGUoImQiLCAkZGF0ZV90aW1lKSwgZGF0ZSgiWSIsICRkYXRlX3RpbWUpKTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmIChjb3VudCgkZGF0ZV9hcnJheSkgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICRkYXRlX2Zyb20gPSBzdHJ0b3RpbWUoIisiIC4gJGRhdGVfYXJyYXlbMF0gLiAiIGhvdXJzIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRkYXRlX2Zyb207CiAgICB9CgogICAgLyoqCiAgICAgKiBnZXQgY2F0ZWdvcnkgbGlzdAogICAgICogQHBhcmFtIG9iamVjdCAkbW9kCiAgICAgKiBAcmV0dXJuIGFycmF5IAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9jYXRlZ29yeV9saXN0KCRtb2QsICR3aGVyZSA9IGFycmF5KCksICRwYXJhbWFycmF5ID0gYXJyYXkoKSwgJGZpZWxkID0gJ2xvbmdfbmFtZScpIHsKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgICRjYXRlZ29yeWxpc3QgPSBhcnJheSgpOwoKICAgICAgICAkY2F0ZWdvcnlsaXN0W2dlbmVyYXRvcigpLT5MYW5nKCdhbGxjYXRlZ29yaWVzJyldID0gJyc7CgogICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlXyIgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICJfY2F0ZWdvcmllcyAiOwoKICAgICAgICBpZiAoZW1wdHkoJHdoZXJlKSA9PSBmYWxzZSkgewogICAgICAgICAgICAkcXVlcnkgPSAkcXVlcnkgLiAnIFdIRVJFICcgLiBpbXBsb2RlKCcgQU5EICcsICR3aGVyZSk7CiAgICAgICAgfQoKICAgICAgICAkcXVlcnkgLj0iIE9SREVSIEJZIGhpZXJhcmNoeV9wb3NpdGlvbiI7CiAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgJHBhcmFtYXJyYXkpOwogICAgICAgIHdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewogICAgICAgICAgICBpZiAoJGZpZWxkID09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAkY2F0ZWdvcnlsaXN0W10gPSAkcm93OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGNhdGVnb3J5bGlzdFskcm93WyRmaWVsZF1dID0gJHJvd1skZmllbGRdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkY2F0ZWdvcnlsaXN0OwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2NhdGVnb3JpZXMoJG1vZCwgJGlkLCAmJHBhcmFtcywgJHJldHVybmlkPS0xKSB7CgogICAgICAgICRnQ21zID0gY21zbXMoKTsKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgICRkZXB0aCA9IDE7CgogICAgICAgIC8vIHNvcnQgb3JkZXIKICAgICAgICAkc29ydG9yZGVyID0gJ0FTQyc7CiAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3NvcnRvcmRlciddKSkgewogICAgICAgICAgICBzd2l0Y2ggKHN0cnRvbG93ZXIoJHBhcmFtc1snc29ydG9yZGVyJ10pKSB7CiAgICAgICAgICAgICAgICBjYXNlICdhc2MnOgogICAgICAgICAgICAgICAgY2FzZSAnZGVzYyc6CiAgICAgICAgICAgICAgICAgICAgJHNvcnRvcmRlciA9ICRwYXJhbXNbJ3NvcnRvcmRlciddOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkaW5saW5lID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZGlzcGxheV9pbmxpbmUnLCBmYWxzZSk7CgogICAgICAgIGlmIChpc3NldCgkcGFyYW1zWydpbmxpbmUnXSkpIHsKICAgICAgICAgICAgJGlubGluZSA9ICRwYXJhbXNbJ2lubGluZSddOwogICAgICAgIH0KCiAgICAgICAgJGRlZmF1bHRfZGV0YWlscGFnZSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fY2F0ZWdvcnlfcmV0dXJuaWQnLCAnJyk7CiAgICAgICAgJGRldGFpbHBhZ2UgPSAkZGVmYXVsdF9kZXRhaWxwYWdlOwogICAgICAgICRkZXRhaWxwYWdlID0gZXh0ZW5kZWRfdG9vbHNfb3B0czo6ZGV0YWlscGFnZSgkcGFyYW1zLCAkZGV0YWlscGFnZSk7CgogICAgICAgICRxdWVyeSA9ICcKCQlTRUxFQ1QgY2F0ZWdvcnlfaWQsIGNhdGVnb3J5X25hbWUsIGhpZXJhcmNoeSwgaGllcmFyY2h5X3Bvc2l0aW9uLCBsb25nX25hbWUsZXh0cmEsIGV4dHJhMiAKCQlGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllcyAKCQlXSEVSRSAxIAoJJzsKICAgICAgICBpZiAoaXNzZXQoJHBhcmFtc1snY2F0ZWdvcnknXSkgJiYgJHBhcmFtc1snY2F0ZWdvcnknXSAhPSAnJykgewogICAgICAgICAgICAkY2F0ZWdvcmllcyA9IGV4cGxvZGUoJywnLCAkcGFyYW1zWydjYXRlZ29yeSddKTsKICAgICAgICAgICAgJHF1ZXJ5IC49ICcgQU5EICgnOwogICAgICAgICAgICAkY291bnQgPSAwOwogICAgICAgICAgICBmb3JlYWNoICgkY2F0ZWdvcmllcyBhcyAkb25lY2F0KSB7CiAgICAgICAgICAgICAgICBpZiAoJGNvdW50ID4gMCkgewogICAgICAgICAgICAgICAgICAgICRxdWVyeSAuPSAnIE9SICc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoc3RycG9zKCRvbmVjYXQsICd8JykgIT09IEZBTFNFIHx8IHN0cnBvcygkb25lY2F0LCAnKicpICE9PSBGQUxTRSkKICAgICAgICAgICAgICAgICAgICAkcXVlcnkgLj0gInVwcGVyKGxvbmdfbmFtZSkgbGlrZSB1cHBlcignIiAuIHRyaW0oc3RyX3JlcGxhY2UoJyonLCAnJScsICRvbmVjYXQpKSAuICInKSI7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5IC49ICJjYXRlZ29yeV9uYW1lID0gJyIgLiB0cmltKCRvbmVjYXQpIC4gIiciOwogICAgICAgICAgICAgICAgJGNvdW50Kys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHF1ZXJ5IC49ICcpICc7CiAgICAgICAgfQogICAgICAgICRxdWVyeSAuPSAnIE9SREVSIGJ5IGhpZXJhcmNoeV9wb3NpdGlvbiAnIC4gJHNvcnRvcmRlcjsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgICAgICAkcm93Y291bnRlciA9IDA7CiAgICAgICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAgICAgICAgICRxMiA9ICJTRUxFQ1QgQ09VTlQoaXRlbV9pZCkgYXMgY250IEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfIiAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gIl9pdGVtIFdIRVJFIGNhdGVnb3J5X2lkPT8iOwogICAgICAgICAgICBpZiAoaXNzZXQoJHBhcmFtc1snc2hvd2FyY2hpdmUnXSkgJiYgJHBhcmFtc1snc2hvd2FyY2hpdmUnXSA9PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAkcTIgLj0gIiBBTkQgKGl0ZW1fZGF0ZSA8ICIgLiAkZGItPkRCVGltZVN0YW1wKHRpbWUoKSkgLiAiKSAiOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRxMiAuPSAnIEFORCBhY3RpdmUgPSBcJzFcJyc7CgogICAgICAgICAgICAkZGJyZXMyID0gJGRiLT5FeGVjdXRlKCRxMiwgYXJyYXkoJHJvd1snY2F0ZWdvcnlfaWQnXSkpOwogICAgICAgICAgICAkY291bnQgPSAkZGJyZXMyLT5GZXRjaFJvdygpOwogICAgICAgICAgICAkcm93WydpbmRleCddID0gJHJvd2NvdW50ZXIrKzsKICAgICAgICAgICAgJHJvd1snY291bnQnXSA9ICRjb3VudFsnY250J107CiAgICAgICAgICAgICRyb3dbJ3ByZXZkZXB0aCddID0gJGRlcHRoOwogICAgICAgICAgICAkZGVwdGggPSBjb3VudChleHBsb2RlKCdcLicsICRyb3dbJ2hpZXJhcmNoeV9wb3NpdGlvbiddKSk7CiAgICAgICAgICAgICRyb3dbJ2RlcHRoJ10gPSAkZGVwdGg7CgogICAgICAgICAgICAkcHJldHR5dXJsID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfcHJldHR5X3VybCgkdGhpcywgZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfcHJlZml4KCRtb2QpIC4gJy9jJywgJHJvd1snY2F0ZWdvcnlfaWQnXSwgJHJvd1snY2F0ZWdvcnlfYWxpYXMnXSwgKCRkZWZhdWx0X2RldGFpbHBhZ2UgPT0gLTEgJiYgIWlzU2V0KCRwYXJhbXNbImRldGFpbHBhZ2UiXSkgPyAkZGV0YWlscGFnZSA6ICcnKSwgJGNhdGVnb3J5dGVtcGxhdGUpOwogICAgICAgICAgICAkcm93Wyd1cmwnXSA9ICRtb2QtPkNyZWF0ZUZyb250ZW5kTGluaygkaWQsICRyZXR1cm5pZCwgJ2RlZmF1bHQnLCAnJywgYXJyYXkoJ2NhdGVnb3J5X2lkJyA9PiAkcm93WydjYXRlZ29yeV9pZCddLCAnY2F0ZWdvcnl0ZW1wbGF0ZScgPT4gJGNhdGVnb3J5dGVtcGxhdGUpLCAnJywgdHJ1ZSwgaXNTZXQoJHBhcmFtc1siaW5saW5lIl0pID8gMSA6IDAsICcnLCBmYWxzZSwgJHByZXR0eXVybCk7CgogICAgICAgICAgICAkaXRlbXNbXSA9ICRyb3c7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkaXRlbXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBnZXQgaXRlbQogICAgICogQHBhcmFtIG9iamVjdCAkbW9kCiAgICAgKiBAcGFyYW0gaW50ICRpdGVtX2lkCiAgICAgKiBAcmV0dXJuIGFycmF5IAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9pdGVtcygkbW9kKSB7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICAkc29ydG9yZGVyID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnc29ydG9yZGVyXycgLiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdtb2RlJyksICdkZXNjJyk7CiAgICAgICAgJHNvcnRieSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ3NvcnRieV8nIC4gJG1vZC0+R2V0UHJlZmVyZW5jZSgnbW9kZScpLCAncG9zaXRpb24nKTsKICAgICAgICAkaXRlbXMgPSAkZGItPkdldEFsbCgnU0VMRUNUICogRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW0gT1JERVIgQlkgJy4kc29ydG9yZGVyLicgJy4kc29ydGJ5LCBhcnJheSgkaXRlbV9pZCkpOwogICAgICAgIHJldHVybiAkaXRlbXM7CiAgICB9CiAgICAvKioKICAgICAqIGdldCBpdGVtCiAgICAgKiBAcGFyYW0gb2JqZWN0ICRtb2QKICAgICAqIEBwYXJhbSBpbnQgJGl0ZW1faWQKICAgICAqIEByZXR1cm4gYXJyYXkgCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2l0ZW0oJG1vZCwgJGl0ZW1faWQpIHsKICAgICAgICAkZGF0YSA9IGNtc191dGlsczo6Z2V0X2FwcF9kYXRhKCRtb2QtPkdldE5hbWUoKSAuIF9fRlVOQ1RJT05fXyAuICRpdGVtX2lkKTsKICAgICAgICBpZiAoJGRhdGEpCiAgICAgICAgICAgIHJldHVybiAkZGF0YTsKCiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICAkdmFsdWUgPSAkZGItPkdldFJvdygnU0VMRUNUICogRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW0gV0hFUkUgaXRlbV9pZCA9ID8nLCBhcnJheSgkaXRlbV9pZCkpOwogICAgICAgIGNtc191dGlsczo6c2V0X2FwcF9kYXRhKCRtb2QtPkdldE5hbWUoKSAuIF9fRlVOQ1RJT05fXyAuICRpdGVtX2lkLCAkdmFsdWUpOwoKICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3NlYXJjaGFibGVfZGF0ZV9lbmQoKSB7CiAgICAgICAgcmV0dXJuIHNlbGY6OiRzZWFyY2hfZGF0ZV9lbmQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfc2VhcmNoYWJsZV90ZXh0KCRtb2QsICRpdGVtX2lkKSB7CgogICAgICAgICRyZXN1bHRzID0gYXJyYXkoKTsKCiAgICAgICAgJGl0ZW0gPSBzZWxmOjpnZXRfaXRlbSgkbW9kLCAkaXRlbV9pZCk7CgogICAgICAgIGlmICgkaXRlbVsnYWN0aXZlJ10gIT0gMSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5KCk7CgogICAgICAgICRyZXN1bHRzW10gPSAkaXRlbVsndGl0bGUnXTsKICAgICAgICAkcmVzdWx0c1tdID0gJGl0ZW1bJ2FsaWFzJ107CgogICAgICAgIC8vIGRhdGUgZW5kIGZvciBzZWFyY2ggcmVzdWx0cwogICAgICAgIHNlbGY6OiRzZWFyY2hfZGF0ZV9lbmQgPSBudWxsOwogICAgICAgIGlmICgkbW9kLT5HZXRQcmVmZXJlbmNlKCdzZWFyY2hfZGF0ZV9lbmQnKSkgewogICAgICAgICAgICAkaXRlbSA9IHNlbGY6OmdldF9pdGVtKCRtb2QsICRpdGVtX2lkKTsKICAgICAgICAgICAgc2VsZjo6JHNlYXJjaF9kYXRlX2VuZCA9IHN0cnRvdGltZSgkaXRlbVsiaXRlbV9kYXRlX2VuZCJdKTsKICAgICAgICB9CgogICAgICAgICRkZWZzID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfY29zdHVtX2ZpZWxkX2RlZigkbW9kLCAkaXRlbV9pZCk7CgoKICAgICAgICBmb3JlYWNoICgkZGVmcyBhcyAkb25lZGVmKSB7CgogICAgICAgICAgICAvLyBza2lwCiAgICAgICAgICAgIGlmICghJG9uZWRlZlsic2VhcmNoYWJsZSJdKQogICAgICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgICAvL3NlcmFjaGFibGUgLSB0ZXh0Ym94LCB0ZXh0YXJlYSwgZHJvcGRvd24KICAgICAgICAgICAgc3dpdGNoICgkb25lZGVmWyJ0eXBlIl0pIHsKICAgICAgICAgICAgICAgIGNhc2UgJ3RleHRib3gnOgogICAgICAgICAgICAgICAgY2FzZSAndGV4dGFyZWEnOgogICAgICAgICAgICAgICAgY2FzZSAnZHJvcGRvd24nOgogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkb25lZGVmWyJ2YWx1ZSJdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0c1tdID0gJG9uZWRlZlsidmFsdWUiXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGltcGxvZGUoJyAnLCAkcmVzdWx0cyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZWFyY2hfcmVpbmRleCgkbW9kLCAkbW9kdWxlKSB7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBpdGVtX2lkIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtIHdoZXJlIGFjdGl2ZSA9IDEnOwogICAgICAgICRpdGVtcyA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5LCBhcnJheSgpKTsKCiAgICAgICAgaWYgKCEkaXRlbXMpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgZm9yZWFjaCAoJGl0ZW1zIGFzICRpdGVtKSB7CiAgICAgICAgICAgICRtb2R1bGUtPkFkZFdvcmRzKCRtb2QtPkdldE5hbWUoKSwgJGl0ZW1bIml0ZW1faWQiXSwgJ2l0ZW0nLCBzZWxmOjpnZXRfc2VhcmNoYWJsZV90ZXh0KCRtb2QsICRpdGVtWyJpdGVtX2lkIl0pLCBzZWxmOjpnZXRfc2VhcmNoYWJsZV9kYXRlX2VuZCgpKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfc2VhcmNoX3Jlc3VsdCgkbW9kLCAkcmV0dXJuaWQsICRpdGVtX2lkLCAkYXR0ciA9ICcnKSB7CiAgICAgICAgJHJlc3VsdCA9IGFycmF5KCk7CgogICAgICAgIGlmICgkYXR0ciAhPSAnaXRlbScpCiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwoKICAgICAgICAkZGV0YWlsdGVtcGxhdGUgPSAnJzsKICAgICAgICBpZiAoaXNTZXQoJHBhcmFtc1siZGV0YWlsdGVtcGxhdGUiXSkpCiAgICAgICAgICAgICRkZXRhaWx0ZW1wYWx0ZSA9ICRwYXJhbXNbImRldGFpbHRlbXBsYXRlIl07CgogICAgICAgICRpbmxpbmUgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdkaXNwbGF5X2lubGluZScsIDApOwogICAgICAgIGlmIChpc1NldCgkcGFyYW1zWyJpbmxpbmUiXSkpCiAgICAgICAgICAgICRkZXRhaWx0ZW1wYWx0ZSA9ICRwYXJhbXNbImlubGluZSJdOwoKICAgICAgICAvKiBpZiAoJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kZXRhaWxfcmV0dXJuaWQnLCAwKSkgewogICAgICAgICAgJHJldHVybmlkID0gJyc7CiAgICAgICAgICB9ICovCgoKICAgICAgICAkcm93ID0gc2VsZjo6Z2V0X2l0ZW0oJG1vZCwgJGl0ZW1faWQpOwogICAgICAgIGlmICgkcm93KSB7CgogICAgICAgICAgICAvLzAgcG9zaXRpb24gaXMgdGhlIHByZWZpeCBkaXNwbGF5ZWQgaW4gdGhlIGxpc3QgcmVzdWx0cy4KICAgICAgICAgICAgJHJlc3VsdFswXSA9ICRtb2QtPkdldEZyaWVuZGx5TmFtZSgpOwoKICAgICAgICAgICAgLy8xIHBvc2l0aW9uIGlzIHRoZSB0aXRsZQogICAgICAgICAgICAkcmVzdWx0WzFdID0gJHJvd1sndGl0bGUnXTsKCiAgICAgICAgICAgIC8vMiBwb3NpdGlvbiBpcyB0aGUgVVJMIHRvIHRoZSB0aXRsZS4KCiAgICAgICAgICAgIGlmIChlbXB0eSgkcm93WyJ1cmwiXSkgPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRwcmV0dHl1cmwgPSAkcm93WyJ1cmwiXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRwcmV0dHl1cmwgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9wcmV0dHlfdXJsKCRtb2QsIGdlbmVyYXRvcl90b29sczo6Z2V0X3ByZWZpeCgkbW9kKSwgJHJvd1snaXRlbV9pZCddLCAkcm93WydhbGlhcyddLCBpc1NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pID8gJGRldGFpbHBhZ2UgOiAkcmV0dXJuaWQsICRkZXRhaWx0ZW1wbGF0ZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRyZXN1bHRbMl0gPSAkbW9kLT5DcmVhdGVGcm9udGVuZExpbmsoJ2NudG50MDEnLCAkcmV0dXJuaWQsICdkZXRhaWwnLCAnJywgYXJyYXkoJ2l0ZW1faWQnID0+ICRyb3dbJ2l0ZW1faWQnXSwgJ2RldGFpbHRlbXBsYXRlJyA9PiAkZGV0YWlsdGVtcGxhdGUpLCAnJywgdHJ1ZSwgJGlubGluZSwgJycsIGZhbHNlLCAkcHJldHR5dXJsKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcm91dGUoJG1vZCwgJGZpbGVuYW1lKSB7CiAgICAgICAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwogICAgICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKICAgICAgICAkcGF0aGluZm8gPSBwYXRoaW5mbygkZmlsZW5hbWUpOwogICAgICAgICRmaWxhbmVhbSA9ICRwYXRoaW5mb1siYmFzZW5hbWUiXTsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ2dlbmVyYXRvcl90ZW1wbGF0ZXMnLCBjbXNfam9pbl9wYXRoKCRjb25maWdbInJvb3RfcGF0aCJdLCAnbW9kdWxlcycsICdNb2R1bGVHZW5lcmF0b3InLCAnTW9kdWxlTGliJywgJ3RlbXBsYXRlcycpKTsKICAgICAgICByZXR1cm4gY21zX2pvaW5fcGF0aCgkY29uZmlnWyJyb290X3BhdGgiXSwgJ21vZHVsZXMnLCAnTW9kdWxlR2VuZXJhdG9yJywgJ01vZHVsZUxpYicsICRwYXRoaW5mb1siYmFzZW5hbWUiXSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZXRhaWxwYWdlKCYkcGFyYW1zLCAkZGV0YWlscGFnZSkgewoKICAgICAgICAkZ2NtcyA9IGNtc21zKCk7CiAgICAgICAgcmV0dXJuICRkZXRhaWxwYWdlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlX3BhcmVudF9kcm9wZG93bigkbW9kLCAkaWQsICRjYXRpZCA9IC0xLCAkc2VsZWN0ZWR2YWx1ZSA9IC0xKSB7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCiAgICAgICAgJGxvbmduYW1lID0gJyc7CgogICAgICAgICRpdGVtc1snKCcgLiBnZW5lcmF0b3IoKS0+TGFuZygnbm9uZScpIC4gJyknXSA9ICctMSc7CgogICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgaGllcmFyY2h5LCBsb25nX25hbWUgRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV8iIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAiX2NhdGVnb3JpZXMgV0hFUkUgY2F0ZWdvcnlfaWQgPSA/IjsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkY2F0aWQpKTsKICAgICAgICB3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsKICAgICAgICAgICAgJGxvbmduYW1lID0gJHJvd1snaGllcmFyY2h5J10gLiAnJSc7CiAgICAgICAgfQoKICAgICAgICAkcXVlcnkgPSAiU0VMRUNUIGNhdGVnb3J5X2lkLCBjYXRlZ29yeV9uYW1lLCBoaWVyYXJjaHksIGxvbmdfbmFtZSBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlXyIgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICJfY2F0ZWdvcmllcyBXSEVSRSBoaWVyYXJjaHkgbm90IGxpa2UgPyBPUkRFUiBieSBoaWVyYXJjaHkiOwogICAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsb25nbmFtZSkpOwogICAgICAgIHdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewogICAgICAgICAgICAkaXRlbXNbJHJvd1snbG9uZ19uYW1lJ11dID0gJHJvd1snY2F0ZWdvcnlfaWQnXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbW9kLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3BhcmVudCcsICRpdGVtcywgLTEsICRzZWxlY3RlZHZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqICAKICAgICAqIEBwYXJhbSBvYmplY3QgJG1vZCAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB1cGRhdGVfaGllcmFyY2h5X3Bvc2l0aW9ucygkbW9kKSB7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCiAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCBjYXRlZ29yeV9pZCwgY2F0ZWdvcnlfbmFtZSxwYXJlbnRfaWQgRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV8iIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAiX2NhdGVnb3JpZXMgT1JERVIgQlkgcG9zaXRpb24sIGNhdGVnb3J5X2lkIjsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgICAgICAkY291bnRlciA9IGFycmF5KCk7CiAgICAgICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAgICAgICAgICRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbiA9ICIiOwogICAgICAgICAgICAkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24yID0gIiI7CiAgICAgICAgICAgICRwb3NpdGlvbiA9ICIiOwogICAgICAgICAgICAkY3VycmVudF9sb25nX25hbWUgPSAiIjsKICAgICAgICAgICAgJGNvbnRlbnRfaWQgPSAkcm93WydjYXRlZ29yeV9pZCddOwogICAgICAgICAgICAkY3VycmVudF9wYXJlbnRfaWQgPSAkcm93WydjYXRlZ29yeV9pZCddOwogICAgICAgICAgICAkY291bnQgPSAwOwogICAgICAgICAgICAkY291bnRlclskcm93WydwYXJlbnRfaWQnXV0rKzsKICAgICAgICAgICAgJHBvc2l0aW9uID0gJGNvdW50ZXJbJHJvd1sncGFyZW50X2lkJ11dOwoKICAgICAgICAgICAgd2hpbGUgKCRjdXJyZW50X3BhcmVudF9pZCA+IC0xKSB7CiAgICAgICAgICAgICAgICAkcXVlcnkgPSAiU0VMRUNUIGNhdGVnb3J5X2lkLCBjYXRlZ29yeV9uYW1lLCBwYXJlbnRfaWQsIHBvc2l0aW9uIEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfIiAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gIl9jYXRlZ29yaWVzIFdIRVJFIGNhdGVnb3J5X2lkID0gPyI7CiAgICAgICAgICAgICAgICAkcm93MiA9ICRkYi0+R2V0Um93KCRxdWVyeSwgYXJyYXkoJGN1cnJlbnRfcGFyZW50X2lkKSk7CiAgICAgICAgICAgICAgICBpZiAoJHJvdzIpIHsKICAgICAgICAgICAgICAgICAgICAkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24gPSBzdHJfcGFkKCRyb3cyWydjYXRlZ29yeV9pZCddLCA1LCAnMCcsIFNUUl9QQURfTEVGVCkgLiAiLiIgLiAkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uMiA9IHN0cl9wYWQoJHJvdzJbJ3Bvc2l0aW9uJ10sIDUsICcwJywgU1RSX1BBRF9MRUZUKSAuICIuIiAuICRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbjI7CiAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfbG9uZ19uYW1lID0gJHJvdzJbJ2NhdGVnb3J5X25hbWUnXSAuICcgfCAnIC4gJGN1cnJlbnRfbG9uZ19uYW1lOwogICAgICAgICAgICAgICAgICAgICRjdXJyZW50X3BhcmVudF9pZCA9ICRyb3cyWydwYXJlbnRfaWQnXTsKICAgICAgICAgICAgICAgICAgICAkY291bnQrKzsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfcGFyZW50X2lkID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKCgoKICAgICAgICAgICAgaWYgKHN0cmxlbigkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24pID4gMCkgewogICAgICAgICAgICAgICAgJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uID0gc3Vic3RyKCRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbiwgMCwgc3RybGVuKCRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbikgLSAxKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKHN0cmxlbigkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24yKSA+IDApIHsKICAgICAgICAgICAgICAgICRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbjIgPSBzdWJzdHIoJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uMiwgMCwgc3RybGVuKCRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbjIpIC0gMSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChzdHJsZW4oJGN1cnJlbnRfbG9uZ19uYW1lKSA+IDApIHsKICAgICAgICAgICAgICAgICRjdXJyZW50X2xvbmdfbmFtZSA9IHN1YnN0cigkY3VycmVudF9sb25nX25hbWUsIDAsIHN0cmxlbigkY3VycmVudF9sb25nX25hbWUpIC0gMyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRxdWVyeSA9ICJVUERBVEUgIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfIiAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gIl9jYXRlZ29yaWVzIFNFVCBoaWVyYXJjaHkgPSA/LCBwb3NpdGlvbiA9ID8sIGhpZXJhcmNoeV9wb3NpdGlvbiA9ID8sIGxvbmdfbmFtZSA9ID8gV0hFUkUgY2F0ZWdvcnlfaWQgPSA/IjsKICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uLCAkcG9zaXRpb24sICRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbjIsICRjdXJyZW50X2xvbmdfbmFtZSwgJGNvbnRlbnRfaWQpKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBIYW5kbGUgdXBsb2FkCiAgICAgKiBAcGFyYW0gbWl4ZWQgJGl0ZW1pZCBUaGUgaXRlbSBJRCwgdXNlZCB0byBmb3JtIHRoZSB1cGxvYWQgZGlyZWN0b3J5IG5hbWUKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZpZWxkbmFtZSBUaGUgdXBsb2FkIGZpZWxkIG5hbWUsIGZvciBleGFtcGxlLCBtMV9jdXN0b21maWVsZF8xCiAgICAgKiBAcGFyYW0gc3RyaW5nICYkZXJyb3IgSG9sZHMgYW55IGVycm9ycyB0aGF0IG1heSBvY2N1cgogICAgICogQHBhcmFtIGFycmF5ICRhbGxvdyBBbGxvd2VkIGZpbGUgZXh0ZW5zaW9ucwogICAgICogQHJldHVybiBib29sfHN0cmluZyBSZXR1cm5zIGZpbGVuYW1lIG9uIHN1Y2Nlc3NmdWwgdXBsb2FkIG9yIGZhbHNlIG9uIGZhaWx1cmUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBoYW5kbGVfdXBsb2FkKCRtb2QsICRpdGVtaWQsICRmaWVsZG5hbWUsICYkZXJyb3IsICRhbGxvdyA9IGFycmF5KCksICRyb3cgPSBhcnJheSgpKSB7CgoKICAgICAgICAkYWxsb3cgPSAoIWVtcHR5KCRhbGxvdykgPyAkYWxsb3cgOiBhcnJheSgnanBnJywgJ2dpZicsICdwbmcnKSk7CgogICAgICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKICAgICAgICAkcCA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10sICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpKTsKCiAgICAgICAgaWYgKCFpc19kaXIoJHApKSB7CiAgICAgICAgICAgICRyZXMgPSBAbWtkaXIoJHApOwoKICAgICAgICAgICAgaWYgKCRyZXMgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAkZXJyb3IgPSAkbW9kLT5MYW5nKCdlcnJvcl9ta2RpcicsICRwKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHAgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3VwbG9hZHNfcGF0aCddLCAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSwgJ2lkJyAuICRpdGVtaWQpOwoKICAgICAgICBpZiAoIWlzX2RpcigkcCkpIHsKICAgICAgICAgICAgaWYgKEBta2RpcigkcCkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAkZXJyb3IgPSAkbW9kLT5MYW5nKCdlcnJvcl9ta2RpcicsICRwKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCRfRklMRVNbJGZpZWxkbmFtZV1bJ3NpemUnXSA+ICRjb25maWdbJ21heF91cGxvYWRfc2l6ZSddKSB7CiAgICAgICAgICAgICRlcnJvciA9ICRtb2QtPkxhbmcoJ2Vycm9yX2ZpbGVzaXplJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRmaWxlbmFtZSA9IGJhc2VuYW1lKCRfRklMRVNbJGZpZWxkbmFtZV1bJ25hbWUnXSk7CiAgICAgICAgJGRlc3QgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3VwbG9hZHNfcGF0aCddLCAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSwgJ2lkJyAuICRpdGVtaWQsICRmaWxlbmFtZSk7CiAgICAgICAgJGV4dCA9IHN0cnRvbG93ZXIoc3Vic3RyKHN0cnJjaHIoJGZpbGVuYW1lLCAnLicpLCAxKSk7CgogICAgICAgIGlmICghaW5fYXJyYXkoJGV4dCwgJGFsbG93KSkgewogICAgICAgICAgICAkZXJyb3IgPSAkbW9kLT5MYW5nKCdlcnJvcl9pbnZhbGlkZmlsZXR5cGUnKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKEBjbXNfbW92ZV91cGxvYWRlZF9maWxlKCRfRklMRVNbJGZpZWxkbmFtZV1bJ3RtcF9uYW1lJ10sICRkZXN0KSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgJGVycm9yID0gJG1vZC0+TGFuZygnZXJyb3JfbW92ZWZpbGUnLCAkZGVzdCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZmlsZW5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKgogICAgICogQHBhcmFtIHR5cGUgJGl0ZW1faWQKICAgICAqIEByZXR1cm4gc3RyaW5nIAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9jb3N0dW1fZmllbGRfZGVmKCRtb2QsICRpdGVtX2lkLCAkZnJvbnRlbmQgPSBmYWxzZSkgewogICAgICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwoKICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIEIuZmllbGRkZWZfaWQsQi5uYW1lLCBCLmFsaWFzLCBBLnZhbHVlLCBCLnR5cGUsIEIuZXh0cmEsIEIuc2VhcmNoYWJsZSwgQi5mcm9udGVuZAoJCUZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBBLCAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkZGVmIEIKCQlXSEVSRSBBLmZpZWxkZGVmX2lkID0gQi5maWVsZGRlZl9pZCBBTkQgQS5pdGVtX2lkID0gPyAnOwogICAgICAgIGlmICgkZnJvbnRlbmQgPT0gdHJ1ZSkgewogICAgICAgICAgICAkcXVlcnkgLj0gJyBBTkQgQi5mcm9udGVuZCA9IDEgJzsKICAgICAgICB9CiAgICAgICAgJHF1ZXJ5IC49ICdPUkRFUiBCWSBCLnBvc2l0aW9uICc7CiAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1faWQpKTsKICAgICAgICAkZmllbGRkZWZzID0gYXJyYXkoKTsKICAgICAgICB3aGlsZSAoJGRicmVzdWx0ICYmICgkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSkgewogICAgICAgICAgICAkZmllbGRkZWZzWyRyb3dbJ2FsaWFzJ11dID0gYXJyYXkoCiAgICAgICAgICAgICAgICAnZmllbGRkZWZfaWQnID0+ICRyb3dbJ2ZpZWxkZGVmX2lkJ10sCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJHJvd1snbmFtZSddLAogICAgICAgICAgICAgICAgJ2FsaWFzJyA9PiAkcm93WydhbGlhcyddLAogICAgICAgICAgICAgICAgJ3ZhbHVlJyA9PiAkcm93Wyd2YWx1ZSddLAogICAgICAgICAgICAgICAgJ3NlYXJjaGFibGUnID0+ICRyb3dbJ3NlYXJjaGFibGUnXSwKICAgICAgICAgICAgICAgICdmcm9udGVuZCcgPT4gJHJvd1snZnJvbnRlbmQnXSwKICAgICAgICAgICAgICAgICd0eXBlJyA9PiAkcm93Wyd0eXBlJ10KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkcm93Wyd0eXBlJ10gPT0gJ3NlbGVjdF9maWxlJykgewogICAgICAgICAgICAgICAgJGV4dHJhX2NvbW1hbmRzID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmEoJHJvd1snZXh0cmEnXSk7CiAgICAgICAgICAgICAgICAkZGlyID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZXh0cmFfZGlyKCRleHRyYV9jb21tYW5kcyk7CiAgICAgICAgICAgICAgICAkZmllbGRkZWZzWyRyb3dbJ2FsaWFzJ11dWydkaXInXSA9ICRjb25maWdbJ3VwbG9hZHNfdXJsJ10gLiAoIWVtcHR5KCRkaXIpID8gJy8nIC4gJGRpciA6ICcnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRyb3dbJ3R5cGUnXSA9PSAndXBsb2FkX2ZpbGUnKSB7CiAgICAgICAgICAgICAgICAkZmllbGRkZWZzWyRyb3dbJ2FsaWFzJ11dWydkaXInXSA9ICRjb25maWdbJ3VwbG9hZHNfdXJsJ10gLiAnLycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICcvaWQnIC4gJGl0ZW1faWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRmaWVsZGRlZnM7CiAgICB9CgogICAgLyoqCiAgICAgKgogICAgICogQHBhcmFtIG9iamVjdCAkbW9kdWxlCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkZnJvbnRlbmQKICAgICAqIEByZXR1cm4gdHlwZSAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZmllbGRzKCRtb2R1bGUsICRmcm9udGVuZCA9IHRydWUpIHsKCiAgICAgICAgJHF1ZXJ5YXJyYXkgPSBhcnJheSgpOwogICAgICAgICRwYXJtc2FycmF5ID0gYXJyYXkoKTsKCiAgICAgICAgJHZhbHVlID0gY21zX3V0aWxzOjpnZXRfYXBwX2RhdGEoJG1vZHVsZS0+R2V0TmFtZSgpIC4gX19GVU5DVElPTl9fKTsKICAgICAgICBpZiAoJHZhbHVlKQogICAgICAgICAgICByZXR1cm4gJHZhbHVlOwoKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kdWxlLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGRkZWYnOwogICAgICAgIGlmICgkZnJvbnRlbmQgPT0gdHJ1ZSkgewogICAgICAgICAgICAkcXVlcnlhcnJheVtdID0gJyBmcm9udGVuZCA9ID8nOwogICAgICAgICAgICAkcGFybXNhcnJheVtdID0gMTsKICAgICAgICB9CiAgICAgICAgLy8gV0hFUkUKICAgICAgICAkcXVlcnkgLj0gKCBlbXB0eSgkcXVlcnlhcnJheSkgPT0gZmFsc2UgPyAnV0hFUkUgJyAuIGltcGxvZGUoJyBBTkQgJywgJHF1ZXJ5YXJyYXkpIDogJycgKTsKCiAgICAgICAgJHZhbHVlID0gJGRiLT5HZXRBcnJheSgkcXVlcnksICRwYXJtc2FycmF5KTsKICAgICAgICBjbXNfdXRpbHM6OnNldF9hcHBfZGF0YSgkbW9kdWxlLT5HZXROYW1lKCkgLiBfX0ZVTkNUSU9OX18sICR2YWx1ZSk7CgogICAgICAgIHJldHVybiAkdmFsdWU7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmaWxlX2xvY2F0aW9uKCRtb2R1bGUsICRyb3cpIHsKCiAgICAgICAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwogICAgICAgICRyZWxfcGF0aCA9ICRtb2R1bGUtPl9HZXRNb2R1bGVBbGlhcygpIC4gJy9pZCcgLiAkcm93WydpdGVtX2lkJ107CiAgICAgICAgY2dlX2Rpcjo6bWtkaXJyKGNtc19qb2luX3BhdGgoJGNvbmZpZ1sidXBsb2Fkc19wYXRoIl0sICRyZWxfcGF0aCkpOwogICAgICAgICR2YWx1ZSA9ICRjb25maWdbJ3VwbG9hZHNfdXJsJ10gLiAnLycgLiAkcmVsX3BhdGg7CiAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZpbGVwYXRoX2xvY2F0aW9uKCRtb2R1bGUsICRyb3cpIHsKCiAgICAgICAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwogICAgICAgICRyZWxfcGF0aCA9IGNtc19qb2luX3BhdGgoJG1vZHVsZS0+X0dldE1vZHVsZUFsaWFzKCksICdpZCcgLiAkcm93WydpdGVtX2lkJ10pOwogICAgICAgIGNnZV9kaXI6Om1rZGlycihjbXNfam9pbl9wYXRoKCRjb25maWdbInVwbG9hZHNfcGF0aCJdLCAkcmVsX3BhdGgpKTsKICAgICAgICAkdmFsdWUgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3VwbG9hZHNfcGF0aCddLCAkcmVsX3BhdGgpOwogICAgICAgIHJldHVybiAkdmFsdWU7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjaGVja19yb3coJG1vZCwgJGZpZWxkaWQsICRmaWVsZHZhbHVlKSB7CgogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwoKICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIEEuaXRlbV9pZCBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbSBBJzsKICAgICAgICAkcXVlcnkgLj0gJyBMRUZUIEpPSU4gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBGVkEgT04gQS5pdGVtX2lkID0gRlZBLml0ZW1faWQgQU5EIEZWQS5maWVsZGRlZl9pZCA9ID8gJzsKICAgICAgICAkcXVlcnkgLj0gJyBXSEVSRSBBLmFjdGl2ZSA9IDEgQU5EIEZWQS52YWx1ZSA9ID8gJzsKICAgICAgICByZXR1cm4gJGRiLT5HZXRPbmUoJHF1ZXJ5LCBhcnJheSgkZmllbGRpZCwgJGZpZWxkdmFsdWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEhhcyBQcmVmaXgKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZyBUaGUgc3RyaW5nIGluIHF1ZXN0aW9uCiAgICAgKiBAcGFyYW0gYXJyYXkgJHByZWZpeCBBcnJheSBvZiBwcmVmaXhlcyB0byBtYXRjaCBhZ2FpbnN0CiAgICAgKiBAcmV0dXJuIGJvb2wgUmV0dXJucyB0cnVlIGlmIHByZWZpeCBpcyBmb3VuZCwgb3IgZmFsc2Ugb3RoZXJ3aXNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaGFzX3ByZWZpeCgkc3RyaW5nLCAkcHJlZml4ZXMpIHsKICAgICAgICBpZiAoIWlzX3N0cmluZygkc3RyaW5nKSkKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIGlmICghaXNfYXJyYXkoJHByZWZpeGVzKSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBmb3JlYWNoICgkcHJlZml4ZXMgYXMgJHByZWZpeCkgewogICAgICAgICAgICBpZiAoc3RycG9zKCRzdHJpbmcsICRwcmVmaXgpID09PSAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IEV4dHJhOiBFeGNsdWRlIFByZWZpeAogICAgICogQHBhcmFtIGFycmF5ICRpbnN0cnVjdGlvbnMgSW5zdHJ1Y3Rpb25zCiAgICAgKiBAcmV0dXJuIGFycmF5IFJldHVybnMgYXJyYXkgb2YgcHJlZml4ZXMgdG8gZXhjbHVkZSBpZiBzcGVjaWZpZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZXh0cmFfZXhjbHVkZV9wcmVmaXgoJGluc3RydWN0aW9ucykgewogICAgICAgIGlmICghaXNfYXJyYXkoJGluc3RydWN0aW9ucykpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgZm9yZWFjaCAoJGluc3RydWN0aW9ucyBhcyAkaW5zdHJ1Y3Rpb24pIHsKICAgICAgICAgICAgLy8gZGlyW3RodW1iX10KICAgICAgICAgICAgLy8gZGlyW3RodW1iXyxub3RtZV0KICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eZXhjbHVkZV9wcmVmaXhcWyhbXixdKygsW14sXSspKilcXSQvaScsICRpbnN0cnVjdGlvbiwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZXhwbG9kZSgnLCcsICRtYXRjaGVzWzFdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCBFeHRyYTogRGlyZWN0b3J5CiAgICAgKiBAcGFyYW0gYXJyYXkgJGluc3RydWN0aW9ucyBJbnN0cnVjdGlvbnMKICAgICAqIEByZXR1cm4gc3RyaW5nIFJldHVybnMgdGhlIGRpcmVjdG9yeSBpZiBzcGVjaWZpZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZXh0cmFfZGlyKCRpbnN0cnVjdGlvbnMpIHsKICAgICAgICBpZiAoIWlzX2FycmF5KCRpbnN0cnVjdGlvbnMpKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGZvcmVhY2ggKCRpbnN0cnVjdGlvbnMgYXMgJGluc3RydWN0aW9uKSB7CiAgICAgICAgICAgIC8vIGRpcltwYXRoL3RvL2Rpcl0KICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eZGlyXFsoLispXF0kL2knLCAkaW5zdHJ1Y3Rpb24sICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRtYXRjaGVzWzFdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IEV4dHJhOiBBbGxvd2VkIEZpbGUgRXh0ZW5zaW9ucwogICAgICogQHBhcmFtIGFycmF5ICRpbnN0cnVjdGlvbnMgSW5zdHJ1Y3Rpb25zCiAgICAgKiBAcmV0dXJuIGFycmF5IFJldHVybnMgYWxsb3dlZCBmaWxlIGV4dGVuc2lvbnMgaWYgc3BlY2lmaWVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2V4dHJhX2FsbG93KCRpbnN0cnVjdGlvbnMpIHsKICAgICAgICBpZiAoIWlzX2FycmF5KCRpbnN0cnVjdGlvbnMpKQogICAgICAgICAgICByZXR1cm4gYXJyYXkoKTsKCiAgICAgICAgZm9yZWFjaCAoJGluc3RydWN0aW9ucyBhcyAkaW5zdHJ1Y3Rpb24pIHsKICAgICAgICAgICAgLy8gYWxsb3dbcGRmLGdpZixwbmcsanBlZyxqcGddCiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXmFsbG93XFsoW2Etel0rKCxbYS16XSspKilcXSQvaScsICRpbnN0cnVjdGlvbiwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZXhwbG9kZSgnLCcsICRtYXRjaGVzWzFdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGFycmF5KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgRXh0cmE6IERhdGUgRm9ybWF0CiAgICAgKiBAcGFyYW0gYXJyYXkgJGluc3RydWN0aW9ucyBJbnN0cnVjdGlvbnMKICAgICAqIEByZXR1cm4gc3RyaW5nIFJldHVybnMgZGF0ZSBmb3JtYXQgdG8gYmUgdXNlZCB3aXRoIHRoZSBqcXVlcnkKICAgICAqIGRhdGVwaWNrZXIgaWYgc3BlY2lmaWVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2V4dHJhX2RhdGVfZm9ybWF0KCRpbnN0cnVjdGlvbnMpIHsKICAgICAgICBpZiAoIWlzX2FycmF5KCRpbnN0cnVjdGlvbnMpKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGZvcmVhY2ggKCRpbnN0cnVjdGlvbnMgYXMgJGluc3RydWN0aW9uKSB7CiAgICAgICAgICAgIC8vIGRhdGVmb3JtYXRbZGQvbW0veXldCiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXmRhdGVmb3JtYXRcWyguKylcXSQvaScsICRpbnN0cnVjdGlvbiwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJG1hdGNoZXNbMV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgRXh0cmE6IFJvdwogICAgICogQHBhcmFtIGFycmF5ICRpbnN0cnVjdGlvbnMgSW5zdHJ1Y3Rpb25zCiAgICAgKiBAcmV0dXJuIGludCBSZXR1cm5zIG1heGltdW0gbGVuZ3RoIGlmIHNwZWNpZmllZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9leHRyYV9yb3dzKCRpbnN0cnVjdGlvbnMpIHsKICAgICAgICBpZiAoIWlzX2FycmF5KCRpbnN0cnVjdGlvbnMpKQogICAgICAgICAgICByZXR1cm47CgoKICAgICAgICBmb3JlYWNoICgkaW5zdHJ1Y3Rpb25zIGFzICRpbnN0cnVjdGlvbikgewogICAgICAgICAgICAvLyBtYXhfbGVuZ3RoWzIwXQogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15yb3dzXFsoWzAtOV0rKVxdJC9pJywgJGluc3RydWN0aW9uLCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgICAgIHJldHVybiAoaW50KSAkbWF0Y2hlc1sxXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCBFeHRyYTogUm93CiAgICAgKiBAcGFyYW0gYXJyYXkgJGluc3RydWN0aW9ucyBJbnN0cnVjdGlvbnMKICAgICAqIEByZXR1cm4gaW50IFJldHVybnMgbWF4aW11bSBsZW5ndGggaWYgc3BlY2lmaWVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2V4dHJhX2NvbHMoJGluc3RydWN0aW9ucykgewogICAgICAgIGlmICghaXNfYXJyYXkoJGluc3RydWN0aW9ucykpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgZm9yZWFjaCAoJGluc3RydWN0aW9ucyBhcyAkaW5zdHJ1Y3Rpb24pIHsKICAgICAgICAgICAgLy8gbWF4X2xlbmd0aFsyMF0KICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eY29sc1xbKFswLTldKylcXSQvaScsICRpbnN0cnVjdGlvbiwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKGludCkgJG1hdGNoZXNbMV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgRXh0cmE6IE1heCBMZW5ndGgKICAgICAqIEBwYXJhbSBhcnJheSAkaW5zdHJ1Y3Rpb25zIEluc3RydWN0aW9ucwogICAgICogQHJldHVybiBpbnQgUmV0dXJucyBtYXhpbXVtIGxlbmd0aCBpZiBzcGVjaWZpZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZXh0cmFfbWF4X2xlbmd0aCgkaW5zdHJ1Y3Rpb25zKSB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkaW5zdHJ1Y3Rpb25zKSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBmb3JlYWNoICgkaW5zdHJ1Y3Rpb25zIGFzICRpbnN0cnVjdGlvbikgewogICAgICAgICAgICAvLyBtYXhfbGVuZ3RoWzIwXQogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15tYXhfbGVuZ3RoXFsoWzAtOV0rKVxdJC9pJywgJGluc3RydWN0aW9uLCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgICAgIHJldHVybiAoaW50KSAkbWF0Y2hlc1sxXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCBFeHRyYTogU2l6ZQogICAgICogQHBhcmFtIGFycmF5ICRpbnN0cnVjdGlvbnMgSW5zdHJ1Y3Rpb25zCiAgICAgKiBAcmV0dXJuIGludCBSZXR1cm5zIHNpemUgaWYgc3BlY2lmaWVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2V4dHJhX3NpemUoJGluc3RydWN0aW9ucykgewogICAgICAgIGlmICghaXNfYXJyYXkoJGluc3RydWN0aW9ucykpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgZm9yZWFjaCAoJGluc3RydWN0aW9ucyBhcyAkaW5zdHJ1Y3Rpb24pIHsKICAgICAgICAgICAgLy8gc2l6ZVsyMF0KICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9ec2l6ZVxbKFswLTldKylcXSQvaScsICRpbnN0cnVjdGlvbiwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKGludCkgJG1hdGNoZXNbMV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgRXh0cmE6IE11bHRpcGxlCiAgICAgKiBAcGFyYW0gYXJyYXkgJGluc3RydWN0aW9ucyBJbnN0cnVjdGlvbnMKICAgICAqIEByZXR1cm4gaW50IFJldHVybnMgc2l6ZSBpZiBzcGVjaWZpZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZXh0cmFfbXVsdGlwbGUoJGluc3RydWN0aW9ucykgewogICAgICAgIGlmICghaXNfYXJyYXkoJGluc3RydWN0aW9ucykpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgZm9yZWFjaCAoJGluc3RydWN0aW9ucyBhcyAkaW5zdHJ1Y3Rpb24pIHsKICAgICAgICAgICAgLy8gc2l6ZVsyMF0KICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9ebXVsdGlwbGVcWyhbMC05XSspXF0kL2knLCAkaW5zdHJ1Y3Rpb24sICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIChpbnQpICRtYXRjaGVzWzFdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IEV4dHJhOiBTZWxlY3QgZGVmYXVsdAogICAgICogQHBhcmFtIGFycmF5ICRpbnN0cnVjdGlvbnMgSW5zdHJ1Y3Rpb25zCiAgICAgKiBAcmV0dXJuIGludCBSZXR1cm5zIHNpemUgaWYgc3BlY2lmaWVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2V4dHJhX3NlbGVjdGRlZmF1bHQoJGluc3RydWN0aW9ucykgewogICAgICAgIGlmICghaXNfYXJyYXkoJGluc3RydWN0aW9ucykpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgZm9yZWFjaCAoJGluc3RydWN0aW9ucyBhcyAkaW5zdHJ1Y3Rpb24pIHsKICAgICAgICAgICAgLy8gc2l6ZVsyMF0KICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9ec2VsZWN0X2RlZmF1bHRcWyguKylcXSQvaScsICRpbnN0cnVjdGlvbiwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJG1hdGNoZXNbMV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgRXh0cmE6IFdZU0lXWUcKICAgICAqIEBwYXJhbSBhcnJheSAkaW5zdHJ1Y3Rpb25zIEluc3RydWN0aW9ucwogICAgICogQHJldHVybiBib29sIFJldHVybnMgdHJ1ZSBpZiBXWVNJV1lHIGlzIHRvIGJlIGVuYWJsZWQsIG9yIGZhbHNlIG90aGVyd2lzZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9leHRyYV93eXNpd3lnKCRpbnN0cnVjdGlvbnMpIHsKICAgICAgICBpZiAoIWlzX2FycmF5KCRpbnN0cnVjdGlvbnMpKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGZvcmVhY2ggKCRpbnN0cnVjdGlvbnMgYXMgJGluc3RydWN0aW9uKSB7CiAgICAgICAgICAgIC8vIHd5c2l3eWdbMV0KICAgICAgICAgICAgLy8gd3lzaXd5Z1swXQogICAgICAgICAgICAvLyB3eXNpd3lnW3RydWVdCiAgICAgICAgICAgIC8vIHd5c2l3eWdbZmFsc2VdCiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXnd5c2l3eWdcWyguKylcXSQvaScsICRpbnN0cnVjdGlvbiwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICAgICBpZiAoJG1hdGNoZXNbMV0gPT0gJ3RydWUnIHx8ICRtYXRjaGVzWzFdID09ICcxJykgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgRXh0cmE6IE1vZHVsZSBwYXJhbXMKICAgICAqIEBwYXJhbSBhcnJheSAkaW5zdHJ1Y3Rpb25zIEluc3RydWN0aW9ucwogICAgICogQHJldHVybiBhcnJheSBSZXR1cm5zIGFuIGFycmF5IG9mIG9wdGlvbnMgaWYgc3BlY2lmaWVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2V4dHJhX21vZHVsZXBhcmFtcygkaW5zdHJ1Y3Rpb25zKSB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkaW5zdHJ1Y3Rpb25zKSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICAkcGFyYW1zID0gYXJyYXkoKTsKCiAgICAgICAgZm9yZWFjaCAoJGluc3RydWN0aW9ucyBhcyAkaW5zdHJ1Y3Rpb24pIHsKICAgICAgICAgICAgLy8gb3B0aW9uc1thcHBsZT1BcHBsZV0KICAgICAgICAgICAgLy8gb3B0aW9uc1thcHBsZT1BcHBsZSxiYW5hbmE9QmFuYW5hXQogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL14oLispXFsoW14sXSs9W14sXSsoLFteLF0rPVteLF0rKSopXF0kL2knLCAkaW5zdHJ1Y3Rpb24sICRtYXRjaGVzKSkgewoKICAgICAgICAgICAgICAgICRwYXJhbXNbIm1vZHVsZSJdID0gJG1hdGNoZXNbMV07CgogICAgICAgICAgICAgICAgZm9yZWFjaCAoZXhwbG9kZSgnLCcsICRtYXRjaGVzWzJdKSBhcyAkcGFpcikgewogICAgICAgICAgICAgICAgICAgICRrZXlfdmFsID0gZXhwbG9kZSgnPScsICRwYWlyKTsKICAgICAgICAgICAgICAgICAgICAkcGFyYW1zWyRrZXlfdmFsWzBdXSA9ICRrZXlfdmFsWzFdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKCiAgICAgICAgcmV0dXJuICRwYXJhbXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgRXh0cmE6IE1vZHVsZSBPcHRpb25zCiAgICAgKiBAcGFyYW0gYXJyYXkgJGluc3RydWN0aW9ucyBJbnN0cnVjdGlvbnMKICAgICAqIEByZXR1cm4gYXJyYXkgUmV0dXJucyBhbiBhcnJheSBvZiBvcHRpb25zIGlmIHNwZWNpZmllZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9leHRyYV9tb2R1bGVvcHRpb25zKCRpbnN0cnVjdGlvbnMsICRtb2QpIHsKICAgICAgICBpZiAoIWlzX2FycmF5KCRpbnN0cnVjdGlvbnMpKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgICRvcHRpb25zID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoICgkaW5zdHJ1Y3Rpb25zIGFzICRpbnN0cnVjdGlvbikgewogICAgICAgICAgICAvLyB7Y21zX21vZHVsZX0KICAgICAgICAgICAgJG1vZHVsZWNvbnRlbnQgPSAkaW5zdHJ1Y3Rpb247CiAgICAgICAgICAgIGZvcmVhY2ggKGV4cGxvZGUoJywnLCAkbW9kdWxlY29udGVudCkgYXMgJHBhaXIpIHsKICAgICAgICAgICAgICAgIGlmICghJHBhaXIpCiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAka2V5X3ZhbCA9IGV4cGxvZGUoJz0nLCAkcGFpcik7CiAgICAgICAgICAgICAgICAkb3B0aW9uc1ska2V5X3ZhbFswXV0gPSAka2V5X3ZhbFsxXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoIWVtcHR5KCRvcHRpb25zKSkKICAgICAgICAgICAgcmV0dXJuICRvcHRpb25zOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IEV4dHJhOiBQYWdlCiAgICAgKiBAcGFyYW0gYXJyYXkgJGluc3RydWN0aW9ucyBJbnN0cnVjdGlvbnMKICAgICAqIEByZXR1cm4gYXJyYXkgUmV0dXJucyBhbiBhcnJheSBvZiBvcHRpb25zIGlmIHNwZWNpZmllZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9leHRyYV9wYWdlKCRpbnN0cnVjdGlvbnMpIHsKICAgICAgICBpZiAoIWlzX2FycmF5KCRpbnN0cnVjdGlvbnMpKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgICRvcHRpb25zID0gYXJyYXkoKTsKICAgICAgICAkc2V0dGluZ3MgPSBhcnJheSgpOwoKICAgICAgICBmb3JlYWNoICgkaW5zdHJ1Y3Rpb25zIGFzICRpbnN0cnVjdGlvbikgewogICAgICAgICAgICAvLyB7Y21zX21vZHVsZX0KICAgICAgICAgICAgZm9yZWFjaCAoZXhwbG9kZSgnLCcsICRtb2R1bGVjb250ZW50KSBhcyAkcGFpcikgewogICAgICAgICAgICAgICAgJGtleV92YWwgPSBleHBsb2RlKCc9JywgJHBhaXIpOwogICAgICAgICAgICAgICAgc3dpdGNoICgka2V5X3ZhbFswXSkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgImNoaWxkcmVub2YiOgogICAgICAgICAgICAgICAgICAgICAgICAkc2V0dGluZ3NbImNoaWxkcmVub2YiXSA9ICRrZXlfdmFsWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJzdGFydF9wYWdlIjoKICAgICAgICAgICAgICAgICAgICAgICAgJHNldHRpbmdzWyJzdGFydF9wYWdlIl0gPSAka2V5X3ZhbFsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgoKICAgICAgICAkcGFnZXMgPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5HZXRBbGxDb250ZW50KCk7CiAgICAgICAgJGFycmF5ID0gYXJyYXkoKTsKCiAgICAgICAgaWYgKGlzc2V0KCRzZXR0aW5nc1snY2hpbGRyZW5vZiddKSkgewogICAgICAgICAgICAkY2hpbGRyZW5vZiA9IGV4dGVuZGVkX3Rvb2xzX29wdHM6OmdldF9wYWdlX2lkX2Zyb21fYWxpYXMoJHNldHRpbmdzWydjaGlsZHJlbm9mJ10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRzZXR0aW5nc1snc3RhcnRfcGFnZSddKSkgewogICAgICAgICAgICAkc3RhcnRfcGFnZSA9IGV4dGVuZGVkX3Rvb2xzX29wdHM6OmdldF9wYWdlX2lkX2Zyb21fYWxpYXMoJHNldHRpbmdzWydzdGFydF9wYWdlJ10pOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJHBhZ2VzIGFzICRwYWdlKSB7CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAoIWlzc2V0KCRzdGFydF9wYWdlKSAmJiAhaXNzZXQoJGNoaWxkcmVub2YpKQogICAgICAgICAgICAgICAgICAgIHx8CiAgICAgICAgICAgICAgICAgICAgKGlzc2V0KCRjaGlsZHJlbm9mKSAmJiAoJHBhZ2UtPlBhcmVudElkKCkgPT0gJGNoaWxkcmVub2YpKSAvLyBMaXN0IG9mIGFsbCBjaGlsZHJlbnMKICAgICAgICAgICAgICAgICAgICB8fAogICAgICAgICAgICAgICAgICAgIChpc3NldCgkc3RhcnRfcGFnZSkgJiYgKHN0cnBvcygkcGFnZS0+SWRIaWVyYXJjaHkoKSwgJHN0YXJ0X3BhZ2UgLiAnLicpID09PSAwKSkgLy8gTGlzdCBvZiBhbGwgZGVzY2VuZGFudHMKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkb3B0aW9uc1skcGFnZS0+SWQoKV0gPSAkcGFnZS0+SGllcmFyY2h5KCkgLiAnLiAtICcgLiAkcGFnZS0+TmFtZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKCiAgICAgICAgaWYgKCFlbXB0eSgkb3B0aW9ucykpCiAgICAgICAgICAgIHJldHVybiAkb3B0aW9uczsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBFeHRyYTogT3B0aW9ucwogICAgICogQHBhcmFtIGFycmF5ICRpbnN0cnVjdGlvbnMgSW5zdHJ1Y3Rpb25zCiAgICAgKiBAcmV0dXJuIGFycmF5IFJldHVybnMgYW4gYXJyYXkgb2Ygb3B0aW9ucyBpZiBzcGVjaWZpZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZXh0cmFfb3B0aW9ucygkaW5zdHJ1Y3Rpb25zKSB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkaW5zdHJ1Y3Rpb25zKSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICAkb3B0aW9ucyA9IGFycmF5KCk7CgogICAgICAgIGZvcmVhY2ggKCRpbnN0cnVjdGlvbnMgYXMgJGluc3RydWN0aW9uKSB7CiAgICAgICAgICAgIC8vIG9wdGlvbnNbYXBwbGU9QXBwbGVdCiAgICAgICAgICAgIC8vIG9wdGlvbnNbYXBwbGU9QXBwbGUsYmFuYW5hPUJhbmFuYV0KICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eb3B0aW9uc1xbKFteLF0rPVteLF0rKCxbXixdKz1bXixdKykqKVxdJC9pJywgJGluc3RydWN0aW9uLCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKGV4cGxvZGUoJywnLCAkbWF0Y2hlc1sxXSkgYXMgJHBhaXIpIHsKICAgICAgICAgICAgICAgICAgICAka2V5X3ZhbCA9IGV4cGxvZGUoJz0nLCAkcGFpcik7CiAgICAgICAgICAgICAgICAgICAgJG9wdGlvbnNbJGtleV92YWxbMF1dID0gJGtleV92YWxbMV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICghZW1wdHkoJG9wdGlvbnMpKQogICAgICAgICAgICByZXR1cm4gJG9wdGlvbnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgRXh0cmEKICAgICAqIEBwYXJhbSBzdHJpbmcgJGV4dHJhCiAgICAgKiBAcmV0dXJuIGFycmF5IFJldHVybnMgYW4gYXJyYXkgb2YgaW5zdHJ1Y3Rpb25zIGlmIHNwZWNpZmllZAogICAgICovCiAgICBmdW5jdGlvbiBnZXRfZXh0cmEoJGV4dHJhLCAkbW9kID0gbnVsbCkgewogICAgICAgIGlmICghaXNfc3RyaW5nKCRleHRyYSkpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgaWYgKCRtb2QgIT0gbnVsbCAmJiBpc19vYmplY3QoJG1vZCkpCiAgICAgICAgICAgICRleHRyYSA9ICRtb2QtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCRleHRyYSk7CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwogICAgICAgICRpbnN0cnVjdGlvbnMgPSBleHBsb2RlKCc7JywgdHJpbSgkZXh0cmEsICc7JykpOwogICAgICAgIGlmICghZW1wdHkoJGluc3RydWN0aW9ucykpCiAgICAgICAgICAgIHJldHVybiAkaW5zdHJ1Y3Rpb25zOwogICAgfQoKICAgIC8qKgogICAgICogSXMgdmFsaWQgYWxpYXMKICAgICAqIEBwYXJhbSBzdHJpbmcgJGFsaWFzCiAgICAgKiBAcmV0dXJuIGJvb2wgUmV0dXJucyB0cnVlIGlmIHN0cmluZyBpbiBxdWVzdGlvbiBpcyBhIHZhbGlkIGFsaWFzLCBvcgogICAgICogZmFsc2Ugb3RoZXJ3aXNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNfdmFsaWRfYWxpYXMoJGFsaWFzKSB7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJGFsaWFzKSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICAvLyBjaGVjayBhbGlhcwogICAgICAgIC8vIGh0dHA6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2UudmFyaWFibGVzLmJhc2ljcy5waHAKICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15bYS16QS1aX1x4N2YtXHhmZl1bYS16QS1aMC05X1x4N2YtXHhmZl0qJC8nLCAkYWxpYXMpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZW5lcmF0ZSBhbGlhcwogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSBUaGUgc3RyaW5nIHRoYXQgdGhlIGFsaWFzIHdpbGwgYmUgZ2VuZXJhdGVkIGZyb20KICAgICAqIEByZXR1cm4gc3RyaW5nIFJldHVybnMgdGhlIGFsaWFzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2VuZXJhdGVfYWxpYXMoJG5hbWUpIHsKICAgICAgICBpZiAoIWlzX3N0cmluZygkbmFtZSkpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgJGFsaWFzID0gJG5hbWU7CgogICAgICAgIC8vIHJlcGxhY2UgbXVsdGlwbGUgc3BhY2VzIHdpdGggc2luZ2xlIHVuZGVyc2NvcmUKICAgICAgICAkYWxpYXMgPSBwcmVnX3JlcGxhY2UoJy8gKy8nLCAnXycsICRhbGlhcyk7CgogICAgICAgIC8vIGxlYXZlIGFscGhhYmV0aWMgY2hhcmFjdGVycyBhbmQgdW5zY29yZXMsCiAgICAgICAgLy8gcmVwbGFjZSBldmVyeXRoaW5nIGVsc2Ugd2l0aCBhbiB1bmRlcnNjb3JlCiAgICAgICAgJGFsaWFzID0gcHJlZ19yZXBsYWNlKCcvW15hLXpBLVpfXS8nLCAnXycsICRhbGlhcyk7CgogICAgICAgIC8vIHJlcGxhY2UgbXVsdGlwbGUgdW5kZXJzY29yZXMgd2l0aCBzaW5nbGUgdW5kZXJzY29yZQogICAgICAgICRhbGlhcyA9IHByZWdfcmVwbGFjZSgnL18rLycsICdfJywgJGFsaWFzKTsKCiAgICAgICAgLy8gY29udmVydCB0byBsb3dlcmNhc2UKICAgICAgICAkYWxpYXMgPSBzdHJ0b2xvd2VyKCRhbGlhcyk7CgogICAgICAgIC8vIHJlbW92ZSB1bmRlcnNjb3JlIGZyb20gc3RhcnQgYW5kIGVuZAogICAgICAgICRhbGlhcyA9IHRyaW0oJGFsaWFzLCAnXycpOwoKICAgICAgICByZXR1cm4gJGFsaWFzOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IGZpZWxkIHR5cGVzCiAgICAgKiBAcmV0dXJuIGFycmF5IFJldHVybnMgYW4gYXJyYXkgb2YgZmllbGQgdHlwZXMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZmllbGRfdHlwZXMoKSB7CgogICAgICAgICRtb2R1bGUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01vZHVsZUdlbmVyYXRvcicpOwoKICAgICAgICAkdHlwZXMgPSBhcnJheSgKICAgICAgICAgICAgJ3RleHRib3gnID0+ICRtb2R1bGUtPkxhbmcoJ3RleHRib3gnKSwKICAgICAgICAgICAgJ2NoZWNrYm94JyA9PiAkbW9kdWxlLT5MYW5nKCdjaGVja2JveCcpLAogICAgICAgICAgICAndGV4dGFyZWEnID0+ICRtb2R1bGUtPkxhbmcoJ3RleHRhcmVhJyksCiAgICAgICAgICAgICdzZWxlY3RfZGF0ZScgPT4gJG1vZHVsZS0+TGFuZygnc2VsZWN0X2RhdGUnKSwKICAgICAgICAgICAgJ3VwbG9hZF9maWxlJyA9PiAkbW9kdWxlLT5MYW5nKCd1cGxvYWRfZmlsZScpLAogICAgICAgICAgICAnc2VsZWN0X2ZpbGUnID0+ICRtb2R1bGUtPkxhbmcoJ3NlbGVjdF9maWxlJyksCiAgICAgICAgICAgICdkcm9wZG93bicgPT4gJG1vZHVsZS0+TGFuZygnZHJvcGRvd24nKSwKICAgICAgICAgICAgJ2Ryb3Bkb3duZnJvbW1vZHVsZScgPT4gJG1vZHVsZS0+TGFuZygnZHJvcGRvd25mcm9tbW9kdWxlJyksCiAgICAgICAgICAgICdtb2R1bGUnID0+ICRtb2R1bGUtPkxhbmcoJ21vZHVsZScpLAogICAgICAgICAgICAnbW9kdWxlX2xpbmsnID0+ICRtb2R1bGUtPkxhbmcoJ21vZHVsZV9saW5rJyksCiAgICAgICAgICAgICdwYWdlJyA9PiAkbW9kdWxlLT5MYW5nKCdwYWdlJyksCiAgICAgICAgICAgICdjb2xvcl9waWNrZXInID0+ICRtb2R1bGUtPkxhbmcoJ2NvbG9yX3BpY2tlcicpLAogICAgICAgICAgICAnc3RhdGljJyA9PiAkbW9kdWxlLT5MYW5nKCdzdGF0aWMnKQogICAgICAgICk7CgogICAgICAgIHJldHVybiAkdHlwZXM7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfcHJlZml4KCRtb2QpIHsKICAgICAgICByZXR1cm4gJG1vZC0+R2V0UHJlZmVyZW5jZSgndXJsX3ByZWZpeCcsIG11bmdlX3N0cmluZ190b191cmwoJG1vZC0+R2V0TmFtZSgpLCB0cnVlKSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfcHJldHR5X3VybCgkbW9kLCAkcHJlZml4LCAkaXRlbV9pZCwgJGFsaWFzLCAkcmV0dXJuaWQgPSBudWxsLCAkZGV0YWlsdGVtcGxhdGUgPSBudWxsKSB7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCiAgICAgICAgJHBhcm1zID0gYXJyYXkoKTsKCiAgICAgICAgJHBhcm1zW10gPSAkcHJlZml4OwogICAgICAgICRwYXJtc1tdID0gJGl0ZW1faWQ7CiAgICAgICAgaWYgKCRyZXR1cm5pZCkKICAgICAgICAgICAgJHBhcm1zW10gPSAkcmV0dXJuaWQ7CiAgICAgICAgaWYgKCRhbGlhcykKICAgICAgICAgICAgJHBhcm1zW10gPSAkYWxpYXM7CiAgICAgICAgaWYgKCRkZXRhaWx0ZW1wbGF0ZSAhPSBudWxsKQogICAgICAgICAgICAkcGFybXNbXSA9ICRkZXRhaWx0ZW1wbGF0ZTsKCiAgICAgICAgcmV0dXJuIGltcGxvZGUoJy8nLCAkcGFybXMpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3ByaXZhdGVfY2F0ZWdvcmllcygkbW9kKSB7CgogICAgICAgICRjYXRlZ29yeWxvbmduYW1lbGlzdCA9IGFycmF5KCk7CgogICAgICAgICRkYiA9IGNtc21zKCktPkdldERCKCk7CiAgICAgICAgJHVzZXJvcHMgPSBjbXNtcygpLT5HZXRVc2VyT3BlcmF0aW9ucygpOwoKICAgICAgICAkdXNlcmlkID0gZ2V0X3VzZXJpZCgpOwogICAgICAgICR1c2VyX2lkID0gJHVzZXJpZDsKICAgICAgICAkYWRtaW51c2VyID0gKCR1c2Vyb3BzLT5Vc2VySW5Hcm91cCgkdXNlcmlkLCAxKSB8fCAkdXNlcmlkID09IDEpOwovL21sZSBzdXBwb3J0CiAgICAgICAgaWYgKCRtb2QtPkdldFByZWZlcmVuY2UoJ3VzZXJncm91cF9kZXBlbmRlbmNlJykgJiYgISRtb2QtPkNoZWNrUGVybWlzc2lvbigkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfYWxsX2NhdGVnb3J5X3Zpc2JpbGUnKSkgewoKICAgICAgICAgICAgaWYgKCRhZG1pbnVzZXIgIT0gMSkgewoKCiAgICAgICAgICAgICAgICAkcXVlcnkgPSAiU0VMRUNUIGdyb3VwX2lkIEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJ1c2VyX2dyb3VwcyB3aGVyZSB1c2VyX2lkPT8iOwogICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR1c2VyX2lkKSk7CiAgICAgICAgICAgICAgICBpZiAoJHJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICRncm91cHMgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgICAgICR3aGVyZXN0YXRlbWVudCA9IGFycmF5KCk7CgogICAgICAgICAgICAgICAgICAgIHdoaWxlICgkcmVzdWx0ICYmICRyb3cgPSAkcmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZXN0YXRlbWVudCBbXSA9ICIgdXNlcmdyb3VwID0gPyAiOwogICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1zYXJyYXlbXSA9ICRyb3dbImdyb3VwX2lkIl07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJyggJyAuIGltcGxvZGUoJyBPUiAnLCAkd2hlcmVzdGF0ZW1lbnQpIC4gJyknOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjYXRlZ29yeWxpc3QgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9jYXRlZ29yeV9saXN0KCRtb2QsICR3aGVyZSwgJHBhcmFtc2FycmF5KTsKICAgICAgICAgICAgICAgICRjYXRlZ29yeWxvbmduYW1lbGlzdCA9IGFycmF5X3NsaWNlKCRjYXRlZ29yeWxpc3QsIDEpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkY2F0ZWdvcnlsb25nbmFtZWxpc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZWxldGUgaXRlbQogICAgICogQHBhcmFtIG9iamVjdCAkbW9kCiAgICAgKiBAcGFyYW0gaW50ICRpdGVtX2lkIAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRldGVsZV9pdGVtKCRtb2QsICRpdGVtX2lkKSB7CgogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CgogICAgICAgIC8vIGdldCBkZXRhaWxzCiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtIFdIRVJFIGl0ZW1faWQgPSA/JzsKICAgICAgICAkcm93ID0gJGRiLT5HZXRSb3coJHF1ZXJ5LCBhcnJheSgkaXRlbV9pZCkpOwoKLy8gZGVsZXRlIGl0ZW0KICAgICAgICAkcXVlcnkgPSAnREVMRVRFIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtIFdIRVJFIGl0ZW1faWQgPSA/JzsKICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbV9pZCkpOwoKLy8gZGVsZXRlIGZpZWxkIHZhbHVlcwogICAgICAgICRxdWVyeSA9ICdERUxFVEUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIFdIRVJFIGl0ZW1faWQgPSA/JzsKICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbV9pZCkpOwoKLy8gZGVsZXRlIGZpZWxkIHZhbHVlcwogICAgICAgICRxdWVyeSA9ICdERUxFVEUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW1fZXh0cmEgV0hFUkUgaXRlbV9pZCA9ID8nOwogICAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtX2lkKSk7CgogICAgICAgIC8vVXBkYXRlIHNlYXJjaCBpbmRleAogICAgICAgICRtb2R1bGUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ1NlYXJjaCcpOwogICAgICAgIGlmICgkbW9kdWxlICE9IEZBTFNFKSB7CiAgICAgICAgICAgICRtb2R1bGUtPkRlbGV0ZVdvcmRzKCRtb2QtPkdldE5hbWUoKSwgJGl0ZW1faWQsICdpdGVtJyk7CiAgICAgICAgfQogICAgICAgIEAkbW9kLT5TZW5kRXZlbnQoJ0l0ZW1EZWxldGVkJywgYXJyYXkoJ2l0ZW1faWQnID0+ICRpdGVtX2lkKSk7CiAgICB9Cgp9Cgo/Pgo=]]></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+ICdUWVBFPU15SVNBTScpOw0KJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOw0KDQpzd2l0Y2ggKCRvbGR2ZXJzaW9uKSB7DQogICAgY2FzZSAnMS4wJzoNCiAgICAgICAgJG1vZHVsZXMgPSBnZW5lcmF0b3Jfb3B0czo6Z2V0X21vZHVsZXMoKTsNCiAgICAgICAgZm9yZWFjaCAoJG1vZHVsZXMgYXMgJG1vZHVsZSkgew0KICAgICAgICAgICAgJG1vYmplY3QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJG1vZHVsZVsibW9kdWxlX25hbWUiXSk7DQogICAgICAgICAgICBpZiAoJG1vYmplY3QpIHsNCiAgICAgICAgICAgICAgICAkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2JqZWN0LT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbScsICdyZWN1cnNpdmUgQygyNTUpJyk7DQogICAgICAgICAgICAgICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQogICAgICAgICAgICAgICAgJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9iamVjdC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW0nLCAnaXRlbV9kYXRlX2VuZCAnIC4gQ01TX0FET0RCX0RUKTsNCiAgICAgICAgICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCiAgICAgICAgICAgICAgICAkZmllbGRzID0gJw0KICAgIGl0ZW1faWQgSSBLRVkgTk9UIG51bGwsDQogICAgdmFsdWUgSSBLRVkgTk9UIG51bGwNCic7DQogICAgICAgICAgICAgICAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2JqZWN0LT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbV9leHRyYScsICRmaWVsZHMsICR0YWJvcHRhcnJheSk7DQogICAgICAgICAgICAgICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgY2FzZSAnMS4xJzoNCiAgICAgICAgJG1vZHVsZXMgPSBnZW5lcmF0b3Jfb3B0czo6Z2V0X21vZHVsZXMoKTsNCiAgICAgICAgZm9yZWFjaCAoJG1vZHVsZXMgYXMgJG1vZHVsZSkgew0KICAgICAgICAgICAgJG1vYmplY3QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJG1vZHVsZVsibW9kdWxlX25hbWUiXSk7DQogICAgICAgICAgICBpZiAoJG1vYmplY3QpIHsNCiAgICAgICAgICAgICAgICAkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2JqZWN0LT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllcycsICd1c2VyZ3JvdXAgSScpOw0KICAgICAgICAgICAgICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCiAgICAgICAgICAgICAgICAkbW9iamVjdC0+Q3JlYXRlUGVybWlzc2lvbigkbW9iamVjdC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2FsbF9jYXRlZ29yeV92aXNiaWxlJywgJG1vYmplY3QtPkxhbmcoJ2FsbF9jYXRlZ29yeV92aXNiaWxlJykpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgY2FzZSAnMS4yJzoNCiAgICAgICAgJG1vZHVsZXMgPSBnZW5lcmF0b3Jfb3B0czo6Z2V0X21vZHVsZXMoKTsNCiAgICAgICAgZm9yZWFjaCAoJG1vZHVsZXMgYXMgJG1vZHVsZSkgew0KICAgICAgICAgICAgJG1vYmplY3QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJG1vZHVsZVsibW9kdWxlX25hbWUiXSk7DQogICAgICAgICAgICBpZiAoJG1vYmplY3QpIHsNCg0KICAgICAgICAgICAgICAgICRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTChjbXNfZGJfcHJlZml4KCkgLiAkbW9iamVjdC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX3VybCcsIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2JqZWN0LT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbScsICd1cmwnKTsNCiAgICAgICAgICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICBjYXNlICcxLjMnOg0KICAgICAgICAkbW9kdWxlcyA9IGdlbmVyYXRvcl9vcHRzOjpnZXRfbW9kdWxlcygpOw0KICAgICAgICBmb3JlYWNoICgkbW9kdWxlcyBhcyAkbW9kdWxlKSB7DQogICAgICAgICAgICAkbW9iamVjdCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkbW9kdWxlWyJtb2R1bGVfbmFtZSJdKTsNCiAgICAgICAgICAgIGlmICgkbW9iamVjdCkgew0KICAgICAgICAgICAgICAgICRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vYmplY3QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jYXRlZ29yaWVzJywgJ2V4dHJhMiBYJyk7DQogICAgICAgICAgICAgICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KICAgICAgICAgICAgICAgICRtb2JqZWN0LT5TZXRQcmVmZXJlbmNlKCdjYXRlZ29yeV9leHRyYTJfbGFiZWwnLCAkbW9iamVjdC0+TGFuZygnZXh0cmEnKSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICBjYXNlICcxLjQnOg0KICAgICAgICAkbW9kdWxlcyA9IGdlbmVyYXRvcl9vcHRzOjpnZXRfbW9kdWxlcygpOw0KICAgICAgICBmb3JlYWNoICgkbW9kdWxlcyBhcyAkbW9kdWxlKSB7DQogICAgICAgICAgICAkbW9iamVjdCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkbW9kdWxlWyJtb2R1bGVfbmFtZSJdKTsNCiAgICAgICAgICAgIGlmICgkbW9iamVjdCkgew0KICAgICAgICAgICAgICAgICRtb2JqZWN0LT5DcmVhdGVFdmVudCgnSXRlbUFkZGVkJyk7DQogICAgICAgICAgICAgICAgJG1vYmplY3QtPkNyZWF0ZUV2ZW50KCdJdGVtRWRpdGVkJyk7DQogICAgICAgICAgICAgICAgJG1vYmplY3QtPkNyZWF0ZUV2ZW50KCdJdGVtRGVsZXRlZCcpOw0KICAgICAgICAgICAgICAgICRtb2JqZWN0LT5DcmVhdGVFdmVudCgnQ2F0ZWdvcnlBZGRlZCcpOw0KICAgICAgICAgICAgICAgICRtb2JqZWN0LT5DcmVhdGVFdmVudCgnQ2F0ZWdvcnlFZGl0ZWQnKTsNCiAgICAgICAgICAgICAgICAkbW9iamVjdC0+Q3JlYXRlRXZlbnQoJ0NhdGVnb3J5RGVsZXRlZCcpOw0KICAgICAgICAgICAgICAgICRtb2JqZWN0LT5DcmVhdGVFdmVudCgnSXRlbXNSZW9yZGVyZWQnKTsNCiAgICAgICAgICAgICAgICAkbW9iamVjdC0+Q3JlYXRlRXZlbnQoJ0NhdGVnb3JpZXNSZW9yZGVyZWQnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIGNhc2UgJzEuNSc6DQogICAgICAgICRtb2R1bGVzID0gZ2VuZXJhdG9yX29wdHM6OmdldF9tb2R1bGVzKCk7DQogICAgICAgIGZvcmVhY2ggKCRtb2R1bGVzIGFzICRtb2R1bGUpIHsNCiAgICAgICAgICAgICRtb2JqZWN0ID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCRtb2R1bGVbIm1vZHVsZV9uYW1lIl0pOw0KICAgICAgICAgICAgaWYgKCRtb2JqZWN0KSB7DQogICAgICAgICAgICAgICAgJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9iamVjdC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkZGVmJywgJ2VkaXR2aWV3IEkoMSknKTsNCiAgICAgICAgICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICBjYXNlICcxLjYnOg0KICAgICAgICAkbW9kdWxlcyA9IGdlbmVyYXRvcl9vcHRzOjpnZXRfbW9kdWxlcygpOw0KICAgICAgICBmb3JlYWNoICgkbW9kdWxlcyBhcyAkbW9kdWxlKSB7DQogICAgICAgICAgICAkbW9iamVjdCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkbW9kdWxlWyJtb2R1bGVfbmFtZSJdKTsNCiAgICAgICAgICAgIGlmICgkbW9iamVjdCkgew0KICAgICAgICAgICAgICAgICRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vYmplY3QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZicsICdmaWx0ZXJfZnJvbnRlbmQgSSgxKScpOw0KICAgICAgICAgICAgICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCiAgICAgICAgICAgICAgICAkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2JqZWN0LT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGRkZWYnLCAnZmlsdGVyX2FkbWluIEkoMSknKTsNCiAgICAgICAgICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJGN1cnJlbnRfdmVyc2lvbiA9ICIxLjciOw0KfQ0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleGenerator.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBFeHRlbmRlZCB0b29scyBmb3IgQ01TIE1hZGUgU2ltcGxlIChAa3V6bWFueSkNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9tZWRpYWNlbnRlci8NCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCg0KLyoqDQogKiAgZ2VuZXJhdG9yIA0KICogQHJldHVybiBvYmplY3QgDQogKi8NCmlmICghZnVuY3Rpb25fZXhpc3RzKCdnZW5lcmF0b3InKSkgew0KDQogICAgZnVuY3Rpb24gZ2VuZXJhdG9yKCkgew0KICAgICAgICByZXR1cm4gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNb2R1bGVHZW5lcmF0b3InKTsNCiAgICB9DQoNCn0NCg0KY2xhc3MgTW9kdWxlR2VuZXJhdG9yIGV4dGVuZHMgQ0dFeHRlbnNpb25zIHsNCiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICAgIENvbnN0cnVjdG9yDQogICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHsNCiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgpOw0KICAgIH0NCg0KICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgICAgU2V0UGFyYW1ldGVycw0KICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkgew0KICAgICAgICAvLyBub3RoaW5nDQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKSB7DQogICAgICAgIGlmICh2ZXJzaW9uX2NvbXBhcmUoQ01TX1ZFUlNJT04sICcxLjEwJykgPCAwKQ0KICAgICAgICAgICAgJHRoaXMtPkluaXRpYWxpemVGcm9udGVuZCgpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIEluaXRpYWxpemVBZG1pbigpIHsNCiAgICAgICAgLy8gbm90aGluZw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIExhenlMb2FkRnJvbnRlbmQoKSB7DQogICAgICAgIHJldHVybiBUUlVFOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXROYW1lKCkgew0KICAgICAgICByZXR1cm4gZ2V0X2NsYXNzKCk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VmVyc2lvbigpIHsNCiAgICAgICAgcmV0dXJuICcxLjcnOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBBbGxvd0F1dG9VcGdyYWRlKCkgew0KICAgICAgICByZXR1cm4gRkFMU0U7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldEhlbHAoKSB7DQogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3IoKSB7DQogICAgICAgIHJldHVybiAnQGt1em1hbnknOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpIHsNCiAgICAgICAgcmV0dXJuICd6ZGVub0BrdXptYW55LmJpeic7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdjaGFuZ2Vsb2cnKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKSB7DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBIYXNBZG1pbigpIHsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKSB7DQogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkgew0KICAgICAgICByZXR1cm4gYXJyYXkoJ0NHRXh0ZW5zaW9ucycgPT4gJzEuMjMnLCAnRXh0ZW5kZWRUb29scycgPT4gJzEuMCcsICdDR1NtYXJ0SW1hZ2UnID0+ICcxLjUnKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKSB7DQogICAgICAgIHJldHVybiAiMS45LjQiOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRFdmVudERlc2NyaXB0aW9uKCRldmVudG5hbWUpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdldmVudF9pbmZvXycgLiAkZXZlbnRuYW1lKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RXZlbnRIZWxwKCRldmVudG5hbWUpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdldmVudF9oZWxwXycgLiAkZXZlbnRuYW1lKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkgew0KICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJyk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkgew0KICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdyZWFsbHlfdW5pbnN0YWxsJyk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIENoZWNrQWNjZXNzKCRwZXJtID0gJzEnKSB7DQogICAgICAgIHJldHVybiAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCRwZXJtKTsNCiAgICB9DQoNCn0NCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_addcategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKQogICAgZXhpdDsKCgppZiAoISRtb2QtPkNoZWNrUGVybWlzc2lvbigkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfbW9kaWZ5X2NhdGVnb3JpZXMnKSkKICAgIHJldHVybjsKCgokZGIgPSBjbXNtcygpLT5HZXREYigpOwoKJHBhcmVudCA9IC0xOwppZiAoaXNzZXQoJHBhcmFtc1sncGFyZW50J10pKSB7CiAgICAkcGFyZW50ID0gJHBhcmFtc1sncGFyZW50J107Cn0KJGFsaWFzID0gaXNTZXQoJHBhcmFtc1snbmFtZSddKSA/IG11bmdlX3N0cmluZ190b191cmwoJHBhcmFtc1snbmFtZSddLCB0cnVlKSA6ICcnOwppZiAoaXNzZXQoJHBhcmFtc1snYWxpYXMnXSkgJiYgZW1wdHkoJHBhcmFtc1snYWxpYXMnXSkgPT0gZmFsc2UpIHsKICAgICRhbGlhcyA9IG11bmdlX3N0cmluZ190b191cmwoJHBhcmFtc1snYWxpYXMnXSwgdHJ1ZSk7Cn0KJGV4dHJhID0gJyc7CmlmIChpc3NldCgkcGFyYW1zWydleHRyYSddKSkgewogICAgJGV4dHJhID0gJHBhcmFtc1snZXh0cmEnXTsKfQoKJGV4dHJhMiA9ICcnOwppZiAoaXNzZXQoJHBhcmFtc1snZXh0cmEyJ10pKSB7CiAgICAkZXh0cmEyID0gJHBhcmFtc1snZXh0cmEyJ107Cn0KCiR1c2VyZ3JvdXAgPSAnJzsKaWYgKGlzc2V0KCRwYXJhbXNbJ3VzZXJncm91cCddKSkgewogICAgJHVzZXJncm91cCA9ICRwYXJhbXNbJ3VzZXJncm91cCddOwp9CgppZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKSB7CiAgICAkbW9kLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQpOwp9CgokbmFtZSA9ICcnOwppZiAoaXNzZXQoJHBhcmFtc1snbmFtZSddKSkgewogICAgJG5hbWUgPSAkcGFyYW1zWyduYW1lJ107CiAgICBpZiAoJG5hbWUgIT0gJycpIHsKICAgICAgICAkY2F0aWQgPSAkZGItPkdlbklEKGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfIiAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gIl9jYXRlZ29yaWVzX3NlcSIpOwogICAgICAgICR0aW1lID0gJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpOwogICAgICAgICRwb3NpdGlvbiA9ICRkYi0+R2V0T25lKCdTRUxFQ1QgTUFYKHBvc2l0aW9uKSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllcyBXSEVSRSBwYXJlbnRfaWQgPSA/JywgYXJyYXkoaW50dmFsKCRwYXJlbnQpKSk7CiAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllcyAoY2F0ZWdvcnlfaWQsIGNhdGVnb3J5X25hbWUsIGNhdGVnb3J5X2FsaWFzLCBleHRyYSwgZXh0cmEyLCB1c2VyZ3JvdXAsIHBhcmVudF9pZCwgcG9zaXRpb24sIGNyZWF0ZV9kYXRlLCBtb2RpZmllZF9kYXRlKSBWQUxVRVMgKD8sPyw/LD8sPyw/LD8sPywnIC4gJHRpbWUgLiAnLCcgLiAkdGltZSAuICcpJzsKICAgICAgICAkcGFybXMgPSBhcnJheSgkY2F0aWQsICRuYW1lLCAkYWxpYXMsICRleHRyYSwgJGV4dHJhMiwgJHVzZXJncm91cCwgaW50dmFsKCRwYXJlbnQpLCAkcG9zaXRpb24pOwogICAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksICRwYXJtcyk7CiAgICAgICAgQCRtb2QtPlNlbmRFdmVudCgnQ2F0ZWdvcnlBZGRlZCcsIGFycmF5KCdjYXRlZ29yeV9pZCcgPT4gJGNhdGlkLCAnbmFtZScgPT4gJG5hbWUpKTsKICAgICAgICBnZW5lcmF0b3JfdG9vbHM6OnVwZGF0ZV9oaWVyYXJjaHlfcG9zaXRpb25zKCRtb2QpOwogICAgICAgIGdlbmVyYXRvcl90b29sczo6dXBkYXRlX2hpZXJhcmNoeV9wb3NpdGlvbnMoJG1vZCk7CiAgICAgICAgJHBhcmFtcyA9IGFycmF5KCd0YWJfbWVzc2FnZScgPT4gJ2NhdGVnb3J5YWRkZWQnKTsKICAgICAgICAkbW9kLT5SZWRpcmVjdFRvVGFiKCRpZCwgJ2NhdGVnb3J5dGFiJywgJHBhcmFtcyk7CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gJG1vZC0+U2hvd0Vycm9ycyhnZW5lcmF0b3IoKS0+TGFuZygnbm9uYW1lZ2l2ZW4nKSk7CiAgICB9Cn0KCiNEaXNwbGF5IHRlbXBsYXRlCiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkbW9kLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnYWRtaW5fYWRkY2F0ZWdvcnknLCAkcmV0dXJuaWQpKTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkbW9kLT5DcmVhdGVGb3JtRW5kKCkpOwokbW9kLT5zbWFydHktPmFzc2lnbignbmFtZXRleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnbmFtZScpKTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ2FsaWFzdGV4dCcsIGdlbmVyYXRvcigpLT5MYW5nKCdhbGlhcycpKTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ3VzZXJncm91cHRleHQnLCBsYW5nKCdncm91cCcpKTsKCiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dG5hbWUnLCAkbW9kLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnbmFtZScsICRuYW1lLCAyMCwgMjU1KSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dGFsaWFzJywgJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2FsaWFzJywgJGFsaWFzLCAyMCwgMjU1KSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dGV4dHJhJywgJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2V4dHJhJywgJGV4dHJhLCAyMCwgMjU1KSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dGV4dHJhMicsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdleHRyYTInLCAkZXh0cmEyLCAyMCwgMjU1KSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdwYXJlbnRkcm9wZG93bicsIGdlbmVyYXRvcl90b29sczo6Y3JlYXRlX3BhcmVudF9kcm9wZG93bigkdGhpcywgJGlkLCAtMSwgLTEpKTsKCiRncm91cG9wcyA9IGNtc21zKCktPkdldEdyb3VwT3BlcmF0aW9ucygpOwokZ3JvdXBsaXN0ID0gJGdyb3Vwb3BzLT5Mb2FkR3JvdXBzKCk7CiR1c2VyZ3JvdXBzID0gZXh0ZW5kZWRfdG9vbHNfb3B0czo6b2JqZWN0X3RvX2hhc2goJGdyb3VwbGlzdCwgJ25hbWUnLCAnaWQnKTsKCiR1c2VyZ3JvdXBzID0gYXJyYXlfbWVyZ2UoYXJyYXkobGFuZygnbm9uZScpPT4nJyksJHVzZXJncm91cHMpOwokbW9kLT5zbWFydHktPmFzc2lnbignaW5wdXR1c2VyZ3JvdXAnLCAkbW9kLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3VzZXJncm91cCcsICR1c2VyZ3JvdXBzLC0xKSk7CgokbW9kLT5zbWFydHktPmFzc2lnbignaGlkZGVuJywgJycpOwokbW9kLT5zbWFydHktPmFzc2lnbignc3VibWl0JywgJG1vZC0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgbGFuZygnc3VibWl0JykpKTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsICRtb2QtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2NhbmNlbCcsIGxhbmcoJ2NhbmNlbCcpKSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdwYXJlbnR0ZXh0JywgbGFuZygncGFyZW50JykpOwplY2hvICRtb2QtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdGNhdGVnb3J5LnRwbCcpOwo/Pgo=]]></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[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKQogICAgZXhpdDsKCgppZiAoISRtb2QtPkNoZWNrUGVybWlzc2lvbigkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfbW9kaWZ5X2NhdGVnb3JpZXMnKSkKICAgIHJldHVybjsKCmlmIChpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpIHsKICAgICRtb2QtPlJlZGlyZWN0VG9UYWIoJGlkLCAnY2F0ZWdvcnl0YWInKTsKfQoKJGNhdGlkID0gJyc7CmlmIChpc3NldCgkcGFyYW1zWydjYXRpZCddKSkgewogICAgJGNhdGlkID0gJHBhcmFtc1snY2F0aWQnXTsKfQoKJHBhcmVudGlkID0gJy0xJzsKaWYgKGlzc2V0KCRwYXJhbXNbJ3BhcmVudCddKSkgewogICAgJHBhcmVudGlkID0gJHBhcmFtc1sncGFyZW50J107Cn0KCiRvcmlnbmFtZSA9ICcnOwppZiAoaXNzZXQoJHBhcmFtc1snb3JpZ25hbWUnXSkpIHsKICAgICRvcmlnbmFtZSA9ICRwYXJhbXNbJ29yaWduYW1lJ107Cn0KCiRhbGlhcyA9ICcnOwppZiAoaXNzZXQoJHBhcmFtc1snYWxpYXMnXSkpIHsKICAgICRhbGlhcyA9IG11bmdlX3N0cmluZ190b191cmwoJHBhcmFtc1snYWxpYXMnXSwgdHJ1ZSk7Cn0KCiRleHRyYSA9ICcnOwppZiAoaXNzZXQoJHBhcmFtc1snZXh0cmEnXSkpIHsKICAgICRleHRyYSA9ICRwYXJhbXNbJ2V4dHJhJ107Cn0KCiRleHRyYTIgPSAnJzsKaWYgKGlzc2V0KCRwYXJhbXNbJ2V4dHJhMiddKSkgewogICAgJGV4dHJhMiA9ICRwYXJhbXNbJ2V4dHJhMiddOwp9CgokdXNlcmdyb3VwID0gJyc7CmlmIChpc3NldCgkcGFyYW1zWyd1c2VyZ3JvdXAnXSkpIHsKICAgICR1c2VyZ3JvdXAgPSAkcGFyYW1zWyd1c2VyZ3JvdXAnXTsKfQoKJG5hbWUgPSAnJzsKaWYgKGlzc2V0KCRwYXJhbXNbJ25hbWUnXSkpIHsKICAgICRuYW1lID0gJHBhcmFtc1snbmFtZSddOwogICAgaWYgKCRuYW1lICE9ICcnKSB7CiAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2NhdGVnb3JpZXMgU0VUIGNhdGVnb3J5X25hbWUgPSA/LGNhdGVnb3J5X2FsaWFzID0gPyxleHRyYSA9ID8sZXh0cmEyID0gPywgdXNlcmdyb3VwID0gPywgcGFyZW50X2lkID0gPywgbW9kaWZpZWRfZGF0ZSA9ICcgLiAkZGItPkRCVGltZVN0YW1wKHRpbWUoKSkgLiAnIFdIRVJFIGNhdGVnb3J5X2lkID0gPyc7CiAgICAgICAgJHBhcm1zID0gYXJyYXkoJG5hbWUsICRhbGlhcywgJGV4dHJhLCAkZXh0cmEyLCAkdXNlcmdyb3VwLCAkcGFyZW50aWQpOwogICAgICAgICRwYXJtc1tdID0gJGNhdGlkOwogICAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksICRwYXJtcyk7CiAgICAgICAgQCRtb2QtPlNlbmRFdmVudCgnQ2F0ZWdvcnlFZGl0ZWQnLCBhcnJheSgnY2F0ZWdvcnlfaWQnID0+ICRjYXRpZCwgJ25hbWUnID0+ICRuYW1lKSk7CiAgICAgICAgZ2VuZXJhdG9yX3Rvb2xzOjp1cGRhdGVfaGllcmFyY2h5X3Bvc2l0aW9ucygkbW9kKTsKICAgICAgICAkcGFyYW1zID0gYXJyYXkoJ3RhYl9tZXNzYWdlJyA9PiAnY2F0ZWdvcnl1cGRhdGVkJyk7CiAgICAgICAgJG1vZC0+UmVkaXJlY3RUb1RhYigkaWQsICdjYXRlZ29yeXRhYicsICRwYXJhbXMpOwogICAgICAgIAogICAgfSBlbHNlIHsKICAgICAgICBlY2hvICRtb2QtPlNob3dFcnJvcnMoZ2VuZXJhdG9yKCktPkxhbmcoJ25vbmFtZWdpdmVuJykpOwogICAgfQp9IGVsc2UgewogICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jYXRlZ29yaWVzIFdIRVJFIGNhdGVnb3J5X2lkID0gPyc7CiAgICAkcm93ID0gJGRiLT5HZXRSb3coJHF1ZXJ5LCBhcnJheSgkY2F0aWQpKTsKCiAgICBpZiAoJHJvdykgewogICAgICAgICRuYW1lID0gJHJvd1snY2F0ZWdvcnlfbmFtZSddOwogICAgICAgICRhbGlhcyA9ICRyb3dbJ2NhdGVnb3J5X2FsaWFzJ107CiAgICAgICAgJGV4dHJhID0gJHJvd1snZXh0cmEnXTsKICAgICAgICAkZXh0cmEyID0gJHJvd1snZXh0cmEyJ107CiAgICAgICAgJHVzZXJncm91cCA9ICRyb3dbJ3VzZXJncm91cCddOwogICAgICAgICRwYXJlbnRpZCA9ICRyb3dbJ3BhcmVudF9pZCddOwogICAgfQp9CgoKI0Rpc3BsYXkgdGVtcGxhdGUKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICRtb2QtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdhZG1pbl9lZGl0Y2F0ZWdvcnknLCAkcmV0dXJuaWQpKTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkbW9kLT5DcmVhdGVGb3JtRW5kKCkpOwokbW9kLT5zbWFydHktPmFzc2lnbignbmFtZXRleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnbmFtZScpKTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ2FsaWFzdGV4dCcsIGdlbmVyYXRvcigpLT5MYW5nKCdhbGlhcycpKTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ2V4dHJhdGV4dCcsIGdlbmVyYXRvcigpLT5MYW5nKCdleHRyYScpKTsKCiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dG5hbWUnLCAkbW9kLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnbmFtZScsICRuYW1lLCAyMCwgMjU1KSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dGFsaWFzJywgJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2FsaWFzJywgJGFsaWFzLCAyMCwgMjU1KSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dGV4dHJhJywgJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2V4dHJhJywgJGV4dHJhLCAyMCwgMjU1KSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dGV4dHJhMicsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdleHRyYTInLCAkZXh0cmEyLCAyMCwgMjU1KSk7CgoKJGdyb3Vwb3BzID0gY21zbXMoKS0+R2V0R3JvdXBPcGVyYXRpb25zKCk7CiRncm91cGxpc3QgPSAkZ3JvdXBvcHMtPkxvYWRHcm91cHMoKTsKJHVzZXJncm91cHMgPSBleHRlbmRlZF90b29sc19vcHRzOjpvYmplY3RfdG9faGFzaCgkZ3JvdXBsaXN0LCAnbmFtZScsICdpZCcpOwoKJHVzZXJncm91cHMgPSBhcnJheV9tZXJnZShhcnJheShsYW5nKCdub25lJyk9PicnKSwkdXNlcmdyb3Vwcyk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dHVzZXJncm91cCcsICRtb2QtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAndXNlcmdyb3VwJywgJHVzZXJncm91cHMsLTEsICR1c2VyZ3JvdXApKTsKCiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdwYXJlbnRkcm9wZG93bicsIGdlbmVyYXRvcl90b29sczo6Y3JlYXRlX3BhcmVudF9kcm9wZG93bigkdGhpcywgJGlkLCAkY2F0aWQsICRwYXJlbnRpZCkpOwokbW9kLT5zbWFydHktPmFzc2lnbignaGlkZGVuJywgJG1vZC0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnY2F0aWQnLCAkY2F0aWQpIC4KICAgICAgICAkbW9kLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdvcmlnbmFtZScsICRuYW1lKSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkbW9kLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCBsYW5nKCdzdWJtaXQnKSkpOwokbW9kLT5zbWFydHktPmFzc2lnbignY2FuY2VsJywgJG1vZC0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY2FuY2VsJywgbGFuZygnY2FuY2VsJykpKTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ3BhcmVudHRleHQnLCBsYW5nKCdwYXJlbnQnKSk7CiRtb2QtPnNtYXJ0eS0+YXNzaWduKCd1c2VyZ3JvdXB0ZXh0JywgbGFuZygnZ3JvdXAnKSk7CmVjaG8gJG1vZC0+UHJvY2Vzc1RlbXBsYXRlKCdlZGl0Y2F0ZWdvcnkudHBsJyk7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_editfielddef.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkNCiAgICByZXR1cm47DQoNCmlmIChpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpIHsNCiAgICAkcGFyYW1zID0gYXJyYXkoJ2FjdGl2ZV90YWInID0+ICdmaWVsZGRlZnRhYicpOw0KICAgICRtb2QtPlJlZGlyZWN0VG9UYWIoJGlkLCAnZmllbGRkZWZ0YWInKTsNCn0NCg0KJGRiID0gJiAkbW9kLT5HZXREYigpOw0KJGZpZWxkZGVmX2lkID0gbnVsbDsNCiRuYW1lID0gJyc7DQokYWxpYXMgPSAnJzsNCiRoZWxwID0gJyc7DQokdHlwZSA9ICcnOw0KJHJlcXVpcmVkID0gMDsNCiRmcm9udGVuZCA9IDE7DQokZWRpdHZpZXcgPSAwOw0KJGZpbHRlcl9mcm9udGVuZCA9IDA7DQokZmlsdGVyX2FkbWluID0gMDsNCiRzZWFyY2hhYmxlID0gMDsNCiRleHRyYSA9ICcnOw0KJGVycm9ycyA9IGFycmF5KCk7DQoNCi8vIGlmICRwYXJhbXNbJ2ZpZWxkZGVmX2lkJ10gaXMgc3VwcGxpZWQgYW5kIGV4aXN0cywgcG9wdWxhdGUgd2l0aCB2YWx1ZXMgZnJvbSBkYXRhYmFzZQ0KDQppZiAoaXNzZXQoJHBhcmFtc1snZmllbGRkZWZfaWQnXSkpIHsNCiAgICAkZmllbGRkZWZfaWQgPSAoaW50KSAkcGFyYW1zWydmaWVsZGRlZl9pZCddOw0KICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGRkZWYgV0hFUkUgZmllbGRkZWZfaWQgPSA/JzsNCiAgICAkcm93ID0gJGRiLT5HZXRSb3coJHF1ZXJ5LCBhcnJheSgkZmllbGRkZWZfaWQpKTsNCg0KICAgIGlmICgkcm93KSB7DQogICAgICAgICRuYW1lID0gJHJvd1snbmFtZSddOw0KICAgICAgICAkYWxpYXMgPSAkcm93WydhbGlhcyddOw0KICAgICAgICAkaGVscCA9ICRyb3dbJ2hlbHAnXTsNCiAgICAgICAgJHR5cGUgPSAkcm93Wyd0eXBlJ107DQogICAgICAgICRyZXF1aXJlZCA9ICRyb3dbJ3JlcXVpcmVkJ107DQogICAgICAgICRmcm9udGVuZCA9ICRyb3dbJ2Zyb250ZW5kJ107DQogICAgICAgICRlZGl0dmlldyA9ICRyb3dbJ2VkaXR2aWV3J107DQogICAgICAgICRmaWx0ZXJfZnJvbnRlbmQgPSAkcm93WydmaWx0ZXJfZnJvbnRlbmQnXTsNCiAgICAgICAgJGZpbHRlcl9hZG1pbiA9ICRyb3dbJ2ZpbHRlcl9hZG1pbiddOw0KICAgICAgICAkc2VhcmNoYWJsZSA9ICRyb3dbJ3NlYXJjaGFibGUnXTsNCiAgICAgICAgJGV4dHJhID0gJHJvd1snZXh0cmEnXTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkZmllbGRkZWZfaWQgPSBudWxsOw0KICAgIH0NCn0NCg0KLy8gaGFuZGxlIHN1Ym1pdCBvciBhcHBseQ0KaWYgKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSB8fCBpc3NldCgkcGFyYW1zWydhcHBseSddKSkgew0KICAgICRuYW1lID0gJHBhcmFtc1snbmFtZSddOw0KICAgICRhbGlhcyA9ICRwYXJhbXNbJ2FsaWFzJ107DQogICAgJGhlbHAgPSAkcGFyYW1zWydoZWxwJ107DQogICAgJHR5cGUgPSAkcGFyYW1zWyd0eXBlJ107DQogICAgJHJlcXVpcmVkID0gKGlzc2V0KCRwYXJhbXNbJ3JlcXVpcmVkJ10pID8gMSA6IDApOw0KICAgICRmcm9udGVuZCA9IChpc3NldCgkcGFyYW1zWydmcm9udGVuZCddKSA/IDEgOiAwKTsNCiAgICAkZWRpdHZpZXcgPSAoaXNzZXQoJHBhcmFtc1snZWRpdHZpZXcnXSkgPyAxIDogMCk7DQogICAgJGZpbHRlcl9mcm9udGVuZCA9IChpc3NldCgkcGFyYW1zWydmaWx0ZXJfZnJvbnRlbmQnXSkgPyAxIDogMCk7DQogICAgJGZpbHRlcl9hZG1pbiA9IChpc3NldCgkcGFyYW1zWydmaWx0ZXJfYWRtaW4nXSkgPyAxIDogMCk7DQogICAgJHNlYXJjaGFibGUgPSAoaXNzZXQoJHBhcmFtc1snc2VhcmNoYWJsZSddKSA/IDEgOiAwKTsNCiAgICAkZXh0cmEgPSAkcGFyYW1zWydleHRyYSddOw0KDQogICAgLy8gY2hlY2sgbmFtZQ0KICAgIGlmICgkbmFtZSA9PSAnJykgew0KICAgICAgICAkZXJyb3JzW10gPSBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfbmFtZV9lbXB0eScpOw0KICAgIH0NCg0KICAgIGlmIChpc3NldCgkZmllbGRkZWZfaWQpKSB7DQogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgZmllbGRkZWZfaWQgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkZGVmIFdIRVJFIG5hbWUgPSA/IEFORCBmaWVsZGRlZl9pZCAhPSA/JzsNCiAgICAgICAgJGV4aXN0cyA9ICRkYi0+R2V0T25lKCRxdWVyeSwgYXJyYXkoJG5hbWUsICRmaWVsZGRlZl9pZCkpOw0KICAgIH0gZWxzZSB7DQogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgZmllbGRkZWZfaWQgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkZGVmIFdIRVJFIG5hbWUgPSA/JzsNCiAgICAgICAgJGV4aXN0cyA9ICRkYi0+R2V0T25lKCRxdWVyeSwgYXJyYXkoJG5hbWUpKTsNCiAgICB9DQoNCiAgICBpZiAoJGV4aXN0cykgew0KICAgICAgICAkZXJyb3JzW10gPSBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfbmFtZV9leGlzdHMnKTsNCiAgICB9DQoNCiAgICAvLyBnZW5lcmF0ZSBhbGlhcyBpZiBub3Qgc3VwcGxpZWQNCiAgICBpZiAoJGFsaWFzID09ICcnKSB7DQogICAgICAgICRhbGlhcyA9IGdlbmVyYXRvcl90b29sczo6Z2VuZXJhdGVfYWxpYXMoJG5hbWUpOw0KICAgIH0NCg0KICAgIC8vIGNoZWNrIGFsaWFzDQogICAgaWYgKCFnZW5lcmF0b3JfdG9vbHM6OmlzX3ZhbGlkX2FsaWFzKCRhbGlhcykpIHsNCiAgICAgICAgJGVycm9yc1tdID0gZ2VuZXJhdG9yKCktPkxhbmcoJ2FsaWFzX2ludmFsaWQnKTsNCiAgICB9DQoNCiAgICBpZiAoZW1wdHkoJGVycm9ycykpIHsNCiAgICAgICAgLy8gdXBkYXRlDQogICAgICAgIGlmIChpc3NldCgkZmllbGRkZWZfaWQpKSB7DQogICAgICAgICAgICAkcXVlcnkgPSAnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGRkZWYgU0VUIG5hbWUgPSA/LCBhbGlhcyA9ID8sIGhlbHAgPSA/LCB0eXBlID0gPywgcmVxdWlyZWQgPSA/LCBmcm9udGVuZCA9ID8sIGVkaXR2aWV3ID0gPywgZmlsdGVyX2Zyb250ZW5kID0gPywgZmlsdGVyX2FkbWluID0gPywgc2VhcmNoYWJsZSA9ID8sIGV4dHJhID0gPyBXSEVSRSBmaWVsZGRlZl9pZCA9ID8nOw0KICAgICAgICAgICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRuYW1lLCAkYWxpYXMsICRoZWxwLCAkdHlwZSwgJHJlcXVpcmVkLCAkZnJvbnRlbmQsICRlZGl0dmlldywgJGZpbHRlcl9mcm9udGVuZCwgJGZpbHRlcl9hZG1pbiwgJHNlYXJjaGFibGUsICRleHRyYSwgJGZpZWxkZGVmX2lkKSk7DQogICAgICAgICAgICBpZiAoISRyZXN1bHQpDQogICAgICAgICAgICAgICAgZGllKCdGQVRBTCBTUUwgRVJST1I6ICcgLiAkZGItPkVycm9yTXNnKCkgLiAnPGJyLz5RVUVSWTogJyAuICRkYi0+c3FsKTsNCg0KICAgICAgICAgICAgLy8gaW5zZXJ0DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkcG9zaXRpb24gPSAkZGItPkdldE9uZSgnU0VMRUNUIG1heChwb3NpdGlvbikgKyAxIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZicpOw0KDQogICAgICAgICAgICBpZiAoJHBvc2l0aW9uID09IG51bGwpIHsNCiAgICAgICAgICAgICAgICAkcG9zaXRpb24gPSAxOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZiAobmFtZSwgYWxpYXMsIGhlbHAsIHR5cGUsIHBvc2l0aW9uLCByZXF1aXJlZCwgZnJvbnRlbmQsIGVkaXR2aWV3LCBmaWx0ZXJfZnJvbnRlbmQsIGZpbHRlcl9hZG1pbiwgc2VhcmNoYWJsZSwgZXh0cmEpIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPyknOw0KICAgICAgICAgICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRuYW1lLCAkYWxpYXMsICRoZWxwLCAkdHlwZSwgJHBvc2l0aW9uLCAkcmVxdWlyZWQsICRmcm9udGVuZCwgJGVkaXR2aWV3LCAkZmlsdGVyX2Zyb250ZW5kLCAkYWRtaW5fYWRtaW4sICRzZWFyY2hhYmxlLCAkZXh0cmEpKTsNCiAgICAgICAgICAgIGlmICghJHJlc3VsdCkNCiAgICAgICAgICAgICAgICBkaWUoJ0ZBVEFMIFNRTCBFUlJPUjogJyAuICRkYi0+RXJyb3JNc2coKSAuICc8YnIvPlFVRVJZOiAnIC4gJGRiLT5zcWwpOw0KDQogICAgICAgICAgICAvLyBwb3B1bGF0ZSAkZmllbGRkZWZfaWQgZm9yIG5ld2x5IGluc2VydGVkIGl0ZW0NCiAgICAgICAgICAgICRmaWVsZGRlZl9pZCA9ICRkYi0+SW5zZXJ0X0lEKCk7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoIWlzc2V0KCRwYXJhbXNbJ2FwcGx5J10pKSB7DQogICAgICAgICAgICAkbW9kLT5SZWRpcmVjdFRvVGFiKCRpZCwgJ2ZpZWxkZGVmdGFiJyk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBlY2hvICRtb2QtPlNob3dNZXNzYWdlKGdlbmVyYXRvcigpLT5MYW5nKCdjaGFuZ2Vzc2F2ZWQnKSk7DQogICAgICAgIH0NCiAgICB9DQp9DQoNCi8vIGRpc3BsYXkgZXJyb3JzIGlmIHRoZXJlIGFyZSBhbnkNCmlmICghZW1wdHkoJGVycm9ycykpIHsNCiAgICBlY2hvICRtb2QtPlNob3dFcnJvcnMoJGVycm9ycyk7DQp9DQoNCiRzbWFydHktPmFzc2lnbigndGl0bGUnLCAoaXNzZXQoJGZpZWxkZGVmX2lkKSA/IGdlbmVyYXRvcigpLT5MYW5nKCdlZGl0ZmllbGRkZWYnKSA6IGdlbmVyYXRvcigpLT5MYW5nKCdhZGRmaWVsZGRlZicpKSk7DQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICRtb2QtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdhZG1pbl9lZGl0ZmllbGRkZWYnLCAkcmV0dXJuaWQpKTsNCiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsICRtb2QtPkNyZWF0ZUZvcm1FbmQoKSk7DQoNCiRzbWFydHktPmFzc2lnbignbmFtZXRleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfbmFtZScpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRuYW1lJywgJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ25hbWUnLCAkbmFtZSwgMjAsIDI1NSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2FsaWFzJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2FsaWFzJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9hbGlhcycsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdhbGlhcycsICRhbGlhcywgMjAsIDI1NSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2hlbHB0ZXh0JywgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmX2hlbHAnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0aGVscCcsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdoZWxwJywgJGhlbHAsIDEwMCwgMjU1KSk7DQoNCiRzbWFydHktPmFzc2lnbigndHlwZXRleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfdHlwZScpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXR0eXBlJywgJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICd0eXBlJywgYXJyYXlfZmxpcChnZW5lcmF0b3JfdG9vbHM6OmdldF9maWVsZF90eXBlcygkdGhpcykpLCAtMSwgJHR5cGUpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCd1c2Vydmlld3RleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfcmVxdWlyZWQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3VzZXJ2aWV3JywgJG1vZC0+Q3JlYXRlSW5wdXRjaGVja2JveCgkaWQsICdyZXF1aXJlZCcsIDEsICRyZXF1aXJlZCkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2Zyb250ZW5kX3RleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfZnJvbnRlbmQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2Zyb250ZW5kJywgJG1vZC0+Q3JlYXRlSW5wdXRjaGVja2JveCgkaWQsICdmcm9udGVuZCcsIDEsICRmcm9udGVuZCkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2VkaXR2aWV3X3RleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfZWRpdHZpZXcnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2VkaXR2aWV3JywgJG1vZC0+Q3JlYXRlSW5wdXRjaGVja2JveCgkaWQsICdlZGl0dmlldycsIDEsICRlZGl0dmlldykpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2ZpbHRlcl9mcm9udGVuZF90ZXh0JywgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmX2ZpbHRlcl9mcm9udGVuZCcpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfZmlsdGVyX2Zyb250ZW5kJywgJG1vZC0+Q3JlYXRlSW5wdXRjaGVja2JveCgkaWQsICdmaWx0ZXJfZnJvbnRlbmQnLCAxLCAkZmlsdGVyX2Zyb250ZW5kKSk7DQoNCiRzbWFydHktPmFzc2lnbignZmlsdGVyX2FkbWluX3RleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfZmlsdGVyX2FkbWluJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9maWx0ZXJfYWRtaW4nLCAkbW9kLT5DcmVhdGVJbnB1dGNoZWNrYm94KCRpZCwgJ2ZpbHRlcl9hZG1pbicsIDEsICRmaWx0ZXJfYWRtaW4pKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdzZWFyY2hhYmxlX3RleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnZmllbGRkZWZfc2VhcmNoYWJsZScpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfc2VhcmNoYWJsZScsICRtb2QtPkNyZWF0ZUlucHV0Y2hlY2tib3goJGlkLCAnc2VhcmNoYWJsZScsIDEsICRzZWFyY2hhYmxlKSk7DQoNCiRzbWFydHktPmFzc2lnbignZXh0cmEnLCBnZW5lcmF0b3IoKS0+TGFuZygnZXh0cmEnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2V4dHJhJywgJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2V4dHJhJywgJGV4dHJhLCAxMDAsIDI1NSkpOw0KDQppZiAoaXNzZXQoJGZpZWxkZGVmX2lkKSkgew0KICAgICRzbWFydHktPmFzc2lnbignZmllbGRkZWZfaWQnLCAkbW9kLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdmaWVsZGRlZl9pZCcsICRmaWVsZGRlZl9pZCkpOw0KfQ0KDQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICRtb2QtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsIGxhbmcoJ3N1Ym1pdCcpKSk7DQokc21hcnR5LT5hc3NpZ24oJ2FwcGx5JywgJG1vZC0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnYXBwbHknLCBsYW5nKCdhcHBseScpKSk7DQokc21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsICRtb2QtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2NhbmNlbCcsIGxhbmcoJ2NhbmNlbCcpKSk7DQoNCmVjaG8gJG1vZC0+UHJvY2Vzc1RlbXBsYXRlKCdlZGl0ZmllbGRkZWYudHBsJyk7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_edititem.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9pdGVtJykpDQogICAgcmV0dXJuOw0KDQoNCmlmIChpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpIHsNCiAgICAkcGFyYW1zID0gYXJyYXkoJ2FjdGl2ZV90YWInID0+ICdpdGVtdGFiJyk7DQogICAgJG1vZC0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsNCn0NCg0KJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOw0KJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiRlcnJvcnMgPSBhcnJheSgpOw0KJGl0ZW1faWQgPSBudWxsOw0KJHRpdGxlID0gJyc7DQokYWxpYXMgPSAnJzsNCiR1cmwgPSAnJzsNCiRhY3RpdmUgPSAxOw0KJHVzZWRjYXRlZ29yeSA9ICcnOw0KJGRhdGUgPSB0aW1lKCk7DQokZGF0ZV9lbmQgPSBudWxsOw0KJHJlY3VyX3dlZWtkYXlzID0gYXJyYXkoKTsNCiRyZWN1cl9wZXJpb2QgPSBudWxsOw0KJHJlY3Vyc2l2ZSA9ICcnOw0KDQoNCi8vIGlmICRwYXJhbXNbJ2l0ZW1faWQnXSBpcyBzdXBwbGllZCBhbmQgZXhpc3RzLCBwb3B1bGF0ZSB3aXRoIHZhbHVlcyBmcm9tIGRhdGFiYXNlDQppZiAoaXNzZXQoJHBhcmFtc1snaXRlbV9pZCddKSkgew0KICAgICRpdGVtX2lkID0gKGludCkgJHBhcmFtc1snaXRlbV9pZCddOw0KICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbSBXSEVSRSBpdGVtX2lkID0gPyc7DQogICAgJHJlc3VsdCA9ICYgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1faWQpKTsNCiAgICBpZiAoISRyZXN1bHQpDQogICAgICAgIGRpZSgnRkFUQUwgU1FMIEVSUk9SOiAnIC4gJGRiLT5FcnJvck1zZygpIC4gJzxici8+UVVFUlk6ICcgLiAkZGItPnNxbCk7DQoNCiAgICBpZiAoJHJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKSB7DQogICAgICAgICRlcnJvcnNbXSA9IGdlbmVyYXRvcigpLT5MYW5nKCdub3N1Y2hpZCcsIGFycmF5KCRpdGVtX2lkKSk7DQogICAgICAgICRpdGVtX2lkID0gbnVsbDsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkcm93ID0gJHJlc3VsdC0+RmV0Y2hSb3coKTsNCiAgICAgICAgJHRpdGxlID0gJHJvd1sndGl0bGUnXTsNCiAgICAgICAgJGFsaWFzID0gJHJvd1snYWxpYXMnXTsNCiAgICAgICAgJGRhdGUgPSAkZGItPlVuaXhUaW1lU3RhbXAoJHJvd1snaXRlbV9kYXRlJ10pOw0KICAgICAgICAkZGF0ZV9lbmQgPSAkZGItPlVuaXhUaW1lU3RhbXAoJHJvd1snaXRlbV9kYXRlX2VuZCddKTsNCiAgICAgICAgJHVybCA9ICRyb3dbJ3VybCddOw0KICAgICAgICAkcmVjdXJzaXZlID0gJHJvd1sncmVjdXJzaXZlJ107DQogICAgICAgICRhY3RpdmUgPSAkcm93WydhY3RpdmUnXTsNCiAgICAgICAgJHVzZWRjYXRlZ29yeSA9ICRyb3dbJ2NhdGVnb3J5X2lkJ107DQoNCiAgICAgICAgLy9leHRyYSBvcHRpb25zIGxvYWQNCiAgICAgICAgJHJlY3VyX3dlZWtkYXlzID0gJHJlY3Vyc2l2ZV9vcHRpb24gPSAkZGItPkdldENvbCgnU0VMRUNUIHZhbHVlIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtX2V4dHJhIFdIRVJFIGl0ZW1faWQgPSA/JywgYXJyYXkoJGl0ZW1faWQpKTsNCiAgICB9DQp9DQoNCi8vIGdldCBjYXRlZ29yeSBsaXN0DQokd2hlcmUgPSBhcnJheSgpOw0KJHBhcmFtc2FycmF5ID0gYXJyYXkoKTsNCiRjYXRlZ29yeWxvbmduYW1lbGlzdCA9IGdlbmVyYXRvcl90b29sczo6Z2V0X3ByaXZhdGVfY2F0ZWdvcmllcygkbW9kKTsNCmlmIChlbXB0eSgkY2F0ZWdvcnlsb25nbmFtZWxpc3QpID09IGZhbHNlKSB7DQoNCiAgICAkd2hlcmVzdGF0ZW1lbnQgPSBhcnJheSgpOw0KICAgIGZvcmVhY2ggKCRjYXRlZ29yeWxvbmduYW1lbGlzdCBhcyAkbG9ubmFtZSkgew0KICAgICAgICAkd2hlcmVzdGF0ZW1lbnRbXSA9ICdsb25nX25hbWUgTElLRSAgPyc7DQogICAgICAgICRwYXJhbXNhcnJheVtdID0gJGxvbm5hbWUgLiAnJSc7DQogICAgfQ0KICAgICR3aGVyZVtdID0gJygnIC4gaW1wbG9kZSgnIE9SICcsICR3aGVyZXN0YXRlbWVudCkgLiAnKSc7DQp9DQokY2F0ZWdvcnlsaXN0ID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfY2F0ZWdvcnlfbGlzdCgkbW9kLCAkd2hlcmUsICRwYXJhbXNhcnJheSwgZmFsc2UpOw0KJGNhdGVnb3J5bGlzdCA9IGFycmF5X3NsaWNlKCRjYXRlZ29yeWxpc3QsIDEpOw0KJGNhdGVnb3J5bGlzdCA9IGV4dGVuZGVkX3Rvb2xzX29wdHM6OnRvX2hhc2goJGNhdGVnb3J5bGlzdCwgJ2NhdGVnb3J5X25hbWUnLCAnY2F0ZWdvcnlfaWQnKTsNCg0KLy8gZ2V0IHRoZSBjdXN0b20gZmllbGRzDQokZmlsdGVycyA9IG5ldyBnZW5lcmF0b3JfZmlsdGVycygkaWQsICRtb2QsICdhZG1pbicpOw0KJGN1c3RvbV9mbGRzID0gJGZpbHRlcnMtPnByb2Nlc3NfY3VzdG9tX2ZpZWxkcygpOw0KDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCi8vIGhhbmRsZSBzdWJtaXQgb3IgYXBwbHkNCmlmIChpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgfHwgaXNzZXQoJHBhcmFtc1snYXBwbHknXSkpIHsNCiAgICAkdGl0bGUgPSAkcGFyYW1zWyd0aXRsZSddOw0KICAgIGlmIChpc3NldCgkcGFyYW1zWydkYXRlX01vbnRoJ10pKSB7DQogICAgICAgICRkYXRlID0gbWt0aW1lKCRwYXJhbXNbJ2RhdGVfSG91ciddLCAkcGFyYW1zWydkYXRlX01pbnV0ZSddLCAkcGFyYW1zWydkYXRlX1NlY29uZCddLCAkcGFyYW1zWydkYXRlX01vbnRoJ10sICRwYXJhbXNbJ2RhdGVfRGF5J10sICRwYXJhbXNbJ2RhdGVfWWVhciddKTsNCiAgICB9DQogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2RhdGVfZW5kX01vbnRoJ10pKSB7DQogICAgICAgICRkYXRlX2VuZCA9IG1rdGltZSgkcGFyYW1zWydkYXRlX2VuZF9Ib3VyJ10sICRwYXJhbXNbJ2RhdGVfZW5kX01pbnV0ZSddLCAkcGFyYW1zWydkYXRlX2VuZF9TZWNvbmQnXSwgJHBhcmFtc1snZGF0ZV9lbmRfTW9udGgnXSwgJHBhcmFtc1snZGF0ZV9lbmRfRGF5J10sICRwYXJhbXNbJ2RhdGVfZW5kX1llYXInXSk7DQogICAgfQ0KDQoNCiAgICBpZiAoaXNTZXQoJHBhcmFtc1sicmVjdXJfcGVyaW9kIl0pKSB7DQogICAgICAgICRyZWN1cnNpdmUgPSAkcGFyYW1zWyJyZWN1cl9wZXJpb2QiXTsNCiAgICB9DQoNCg0KICAgIC8qIGFsaWFzIGNyZWF0ZSAqLw0KICAgIGlmICghJGl0ZW1faWQgfHwgKCRpdGVtX2lkICYmICFpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSkpDQogICAgICAgICRhbGlhcyA9IG11bmdlX3N0cmluZ190b191cmwoJHBhcmFtc1sndGl0bGUnXSwgdHJ1ZSk7DQogICAgZWxzZWlmICghaXNTZXQoJHBhcmFtc1siYWxpYXMiXSkgJiYgJGl0ZW1faWQpDQogICAgICAgICRhbGlhcyA9IG11bmdlX3N0cmluZ190b191cmwoJHBhcmFtc1sndGl0bGUnXSwgdHJ1ZSk7DQogICAgZWxzZWlmIChpc1NldCgkcGFyYW1zWyJhbGlhcyJdKSkNCiAgICAgICAgJGFsaWFzID0gbXVuZ2Vfc3RyaW5nX3RvX3VybCgkcGFyYW1zWydhbGlhcyddLCB0cnVlKTsNCiAgICBlbHNlDQogICAgICAgICRhbGlhcyA9IG11bmdlX3N0cmluZ190b191cmwoJHBhcmFtc1sndGl0bGUnXSwgdHJ1ZSk7DQoNCiAgICBpZiAoaXNTZXQoJHBhcmFtc1sidXJsIl0pKQ0KICAgICAgICAkdXJsID0gJHBhcmFtc1sidXJsIl07DQoNCg0KICAgICRhY3RpdmUgPSAoaXNzZXQoJHBhcmFtc1snYWN0aXZlJ10pID8gMSA6IDApOw0KICAgICR1c2VkY2F0ZWdvcnkgPSAoaXNTZXQoJHBhcmFtc1snY2F0ZWdvcnknXSkgPyAkcGFyYW1zWydjYXRlZ29yeSddIDogJycpOw0KDQogICAgLy8gY2hlY2sgdGl0bGUNCiAgICBpZiAoJHRpdGxlID09ICcnICYmICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fdGl0bGVfZWRpdCcpKSB7DQogICAgICAgICRlcnJvcnNbXSA9IGdlbmVyYXRvcigpLT5MYW5nKCdpdGVtX3RpdGxlX2VtcHR5Jyk7DQoNCiAgICAgICAgLy8gY2hlY2sgY3VzdG9tIGZpZWxkcy4uLiB0aGVzZSBsb29rIGxpa2UgbTFfY3VzdG9tZmllbGRbNV0NCiAgICB9IGVsc2VpZiAoaXNzZXQoJHBhcmFtc1snY3VzdG9tZmllbGQnXSkpIHsNCiAgICAgICAgZm9yZWFjaCAoJHBhcmFtc1snY3VzdG9tZmllbGQnXSBhcyAkZmxkaWQgPT4gJHZhbHVlKSB7DQoNCiAgICAgICAgICAgIGlmICgkdmFsdWUgPT0gJ3NlbGVjdF9kZWZhdWx0Jykgew0KICAgICAgICAgICAgICAgICRwYXJhbXNbJ2N1c3RvbWZpZWxkJ11bJGZsZGlkXSA9ICcnOw0KICAgICAgICAgICAgICAgICR2YWx1ZSA9ICcnOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyByZXF1aXJlZCBmaWVsZHMNCiAgICAgICAgICAgIGlmICgkdmFsdWUgPT0gJycgJiYgJGN1c3RvbV9mbGRzWyRmbGRpZF1bJ3JlcXVpcmVkJ10gJiYgKCRjdXN0b21fZmxkc1skZmxkaWRdWydlZGl0dmlldyddICYmIGlzU2V0KCRwYXJhbXNbIml0ZW1faWQiXSkpKSB7DQogICAgICAgICAgICAgICAgJGVycm9yc1tdID0gZ2VuZXJhdG9yKCktPkxhbmcoJ3JlcXVpcmVkX2ZpZWxkX2VtcHR5JykgLiAnICgnIC4gJGN1c3RvbV9mbGRzWyRmbGRpZF1bJ25hbWUnXSAuICcpJzsNCiAgICAgICAgICAgICAgICBicmVhazsgLy8gb25seSBkaXNwbGF5IG9uZSBlcnJvciBtZXNzYWdlIGF0IGEgdGltZQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBtYXggbGVuZ3RoDQogICAgICAgICAgICBpZiAoaXNzZXQoJGN1c3RvbV9mbGRzWyRmbGRpZF1bJ21heF9sZW5ndGgnXSkgJiYgbWJfc3RybGVuKCR2YWx1ZSkgPiAkY3VzdG9tX2ZsZHNbJGZsZGlkXVsnbWF4X2xlbmd0aCddKSB7DQogICAgICAgICAgICAgICAgJGVycm9yc1tdID0gZ2VuZXJhdG9yKCktPkxhbmcoJ3Rvb19sb25nJykgLiAnICgnIC4gJGN1c3RvbV9mbGRzWyRmbGRpZF1bJ25hbWUnXSAuICcpJzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gb3B0aW9ucw0KICAgICAgICAgICAgaWYgKCR2YWx1ZSAhPSAnJyAmJiBpc3NldCgkY3VzdG9tX2ZsZHNbJGZsZGlkXVsnb3B0aW9ucyddKSAmJiAhYXJyYXlfa2V5X2V4aXN0cygkdmFsdWUsICRjdXN0b21fZmxkc1skZmxkaWRdWydvcHRpb25zJ10pKSB7DQogICAgICAgICAgICAgICAgJGVycm9yc1tdID0gZ2VuZXJhdG9yKCktPkxhbmcoJ2ludmFsaWQnKSAuICcgKCcgLiAkY3VzdG9tX2ZsZHNbJGZsZGlkXVsnbmFtZSddIC4gJyknOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgaWYgKGVtcHR5KCRlcnJvcnMpICYmICR1cmwgIT0gJycpIHsNCiAgICAgICAgLy8gY2hlY2sgZm9yIHN0YXJ0aW5nIG9yIGVuZGluZyBzbGFzaGVzDQogICAgICAgIGlmIChzdGFydHN3aXRoKCR1cmwsICcvJykgfHwgZW5kc3dpdGgoJHVybCwgJy8nKSkgew0KICAgICAgICAgICAgJGVycm9yc1tdID0gZ2VuZXJhdG9yKCktPkxhbmcoJ2Vycm9yX2ludmFsaWR1cmwnKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChlbXB0eSgkZXJyb3JzKSkgew0KICAgICAgICAgICAgLy8gY2hlY2sgZm9yIGludmFsaWQgY2hhcnMuDQogICAgICAgICAgICAkdHJhbnNsYXRlZCA9IG11bmdlX3N0cmluZ190b191cmwoJHVybCwgZmFsc2UsIHRydWUpOw0KICAgICAgICAgICAgaWYgKHN0cnRvbG93ZXIoJHRyYW5zbGF0ZWQpICE9IHN0cnRvbG93ZXIoJHVybCkpIHsNCiAgICAgICAgICAgICAgICAkZXJyb3JzW10gPSBnZW5lcmF0b3IoKS0+TGFuZygnZXJyb3JfaW52YWxpZHVybCcpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmIChlbXB0eSgkZXJyb3JzKSkgew0KICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoaXMgdXJsIGlzbid0IHRha2VuLg0KICAgICAgICAgICAgJHVybCA9IHRyaW0oJHVybCwgIiAvXHRcclxuXDBceDA4Iik7DQogICAgICAgICAgICBjbXNfcm91dGVfbWFuYWdlcjo6bG9hZF9yb3V0ZXMoKTsNCiAgICAgICAgICAgICRyb3V0ZSA9IGNtc19yb3V0ZV9tYW5hZ2VyOjpmaW5kX21hdGNoKCR1cmwpOw0KICAgICAgICAgICAgaWYgKCRyb3V0ZSkgew0KICAgICAgICAgICAgICAgIGlmIChpc3NldCgkaXRlbV9pZCkpIHsNCiAgICAgICAgICAgICAgICAgICAgJGRmbHRzID0gJHJvdXRlLT5nZXRfZGVmYXVsdHMoKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRyb3V0ZS0+aXNfY29udGVudCgpIHx8DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJvdXRlLT5nZXRfZGVzdCgpICE9ICRtb2QtPkdldE5hbWUoKSB8fA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc3NldCgkZGZsdHNbJ2l0ZW1faWQnXSkgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGZsdHNbJ2l0ZW1faWQnXSAhPSAkaXRlbV9pZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UncmUgYWRkaW5nIGFuIGFydGljbGUsIG5vdCBlZGl0aW5nLi4uIGFueSBtYXRjaGluZyByb3V0ZSBpcyBiYWQuDQogICAgICAgICAgICAgICAgICAgICAgICAkZXJyb3JzW10gPSBnZW5lcmF0b3IoKS0+TGFuZygnZXJyb3JfaW52YWxpZHVybCcpOw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgLy8kZXJyb3JzW10gPSBnZW5lcmF0b3IoKS0+TGFuZygnZXJyb3JfaW52YWxpZHVybCcpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgLy8gdGl0bGUgYW5kIHJlcXVpcmVkIGZpZWxkcyBoYXZlIHZhbHVlcywgbGV0J3MgY29udGludWUNCiAgICBpZiAoZW1wdHkoJGVycm9ycykpIHsNCiAgICAgICAgLy8gaW5zZXJ0IG9yIHVwZGF0ZSB0YWJsZSBpdGVtcw0KICAgICAgICBpZiAoIWlzc2V0KCRpdGVtX2lkKSkgew0KICAgICAgICAgICAgLy8gZmluZCBwb3NpdGlvbiBiZWZvcmUgaW5zZXJ0aW5nIG5ldyBpdGVtDQogICAgICAgICAgICAkcG9zaXRpb24gPSAkZGItPkdldE9uZSgnU0VMRUNUIG1heChwb3NpdGlvbikgKyAxIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtJyk7DQoNCiAgICAgICAgICAgIGlmICgkcG9zaXRpb24gPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICRwb3NpdGlvbiA9IDE7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIGluc2VydCBpdGVtDQogICAgICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtICh0aXRsZSwgYWxpYXMsIHVybCwgcmVjdXJzaXZlLCBjYXRlZ29yeV9pZCwgcG9zaXRpb24sIGFjdGl2ZSwgaXRlbV9kYXRlLCBpdGVtX2RhdGVfZW5kLCBjcmVhdGVfZGF0ZSwgbW9kaWZpZWRfZGF0ZSApIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPyAsID8sID8sICBOT1coKSwgTk9XKCkpJzsNCiAgICAgICAgICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdGl0bGUsICRhbGlhcywgJHVybCwgJHJlY3Vyc2l2ZSwgJHVzZWRjYXRlZ29yeSwgJHBvc2l0aW9uLCAkYWN0aXZlLCB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGUpLCAiJyIpLCB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGVfZW5kKSwgIiciKSkpOw0KICAgICAgICAgICAgaWYgKCEkcmVzdWx0KQ0KICAgICAgICAgICAgICAgIGRpZSgnRkFUQUwgU1FMIEVSUk9SOiAnIC4gJGRiLT5FcnJvck1zZygpIC4gJzxici8+UVVFUlk6ICcgLiAkZGItPnNxbCk7DQoNCiAgICAgICAgICAgIC8vIHBvcHVsYXRlICRpdGVtX2lkIGZvciBuZXdseSBpbnNlcnRlZCBpdGVtDQogICAgICAgICAgICAkaXRlbV9pZCA9ICRkYi0+SW5zZXJ0X0lEKCk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAvLyB1cGRhdGUgaXRlbQ0KICAgICAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW0gU0VUIHRpdGxlID0gPywgYWxpYXMgPSA/LCB1cmwgPSA/LCByZWN1cnNpdmUgPSA/LCBjYXRlZ29yeV9pZCA9ID8sIGFjdGl2ZSA9ID8sIGl0ZW1fZGF0ZT0gPywgaXRlbV9kYXRlX2VuZD0gPyBXSEVSRSBpdGVtX2lkID0gPyc7DQogICAgICAgICAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRpdGxlLCAkYWxpYXMsICR1cmwsICRyZWN1cnNpdmUsICR1c2VkY2F0ZWdvcnksICRhY3RpdmUsIHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZSksICInIiksIHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZV9lbmQpLCAiJyIpLCAkaXRlbV9pZCkpOw0KICAgICAgICAgICAgaWYgKCEkcmVzdWx0KQ0KICAgICAgICAgICAgICAgIGRpZSgnRkFUQUwgU1FMIEVSUk9SOiAnIC4gJGRiLT5FcnJvck1zZygpIC4gJzxici8+UVVFUlk6ICcgLiAkZGItPnNxbCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBjcmVhdGUgcmVjdXJzaXZlIHNldHRpbmdzDQogICAgICAgIGlmICgkbW9kLT5HZXRQcmVmZXJlbmNlKCdyZWN1cnNpdmUnKSAmJiAkcmVjdXJzaXZlID09ICdkYWlseScpIHsNCiAgICAgICAgICAgIGlmIChpc1NldCgkcGFyYW1zWyJyZWN1cl93ZWVrZGF5cyJdKSAmJiBpc19hcnJheSgkcGFyYW1zWyJyZWN1cl93ZWVrZGF5cyJdKSkgew0KICAgICAgICAgICAgICAgICRyZWN1cl93ZWVrZGF5cyA9ICRwYXJhbXNbInJlY3VyX3dlZWtkYXlzIl07DQogICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbV9leHRyYSBXSEVSRSBpdGVtX2lkID0gPyc7DQogICAgICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1faWQpKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkcmVjdXJfd2Vla2RheXMgYXMgJGRheSkgew0KICAgICAgICAgICAgICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtX2V4dHJhIChpdGVtX2lkLHZhbHVlKSBWQUxVRVMgKD8sPyknOw0KICAgICAgICAgICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbV9pZCwgJGRheSkpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIGhhbmRsZSB1cGxvYWRpbmcgb2YgZmlsZSBmaWVsZHMNCiAgICAgICAgZm9yZWFjaCAoJGN1c3RvbV9mbGRzIGFzICRjdXN0b21fZmxkKSB7DQogICAgICAgICAgICBpZiAoJGN1c3RvbV9mbGRbJ3R5cGUnXSAhPSAndXBsb2FkX2ZpbGUnKSB7DQogICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICB9DQoNCg0KICAgICAgICAgICAgJGVsZW0gPSAkaWQgLiAnY3VzdG9tZmllbGRfJyAuICRjdXN0b21fZmxkWydmaWVsZGRlZl9pZCddOw0KICAgICAgICAgICAgLy8gJGVsZW0gbG9va3MgbGlrZSBtMV9jdXN0b21maWVsZF8xDQogICAgICAgICAgICAvLyBjaGVjayBpZiBmaWxlIHdhcyB1cGxvYWRlZCBmb3IgdGhpcyBmaWVsZA0KICAgICAgICAgICAgaWYgKGlzc2V0KCRfRklMRVNbJGVsZW1dKSAmJiAkX0ZJTEVTWyRlbGVtXVsnbmFtZSddICE9ICcnKSB7DQoNCiAgICAgICAgICAgICAgICBpZiAoJF9GSUxFU1skZWxlbV1bJ2Vycm9yJ10gIT0gMCB8fCAkX0ZJTEVTWyRlbGVtXVsndG1wX25hbWUnXSA9PSAnJykgew0KICAgICAgICAgICAgICAgICAgICAkZXJyb3JzW10gPSBnZW5lcmF0b3IoKS0+TGFuZygnZXJyb3JfdXBsb2FkJyk7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gZ2VuZXJhdG9yX3Rvb2xzOjpoYW5kbGVfdXBsb2FkKCRtb2QsICRpdGVtX2lkLCAkZWxlbSwgJGVycm9yLCAkY3VzdG9tX2ZsZFsnYWxsb3cnXSwgJHJvdyk7DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKCR2YWx1ZSA9PT0gZmFsc2UpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRlcnJvcnNbXSA9ICRlcnJvcjsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvcHVsYXRlICRwYXJhbXNbJ2N1c3RvbWZpZWxkJ10NCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgd291bGQgaG9sZCB0aGUgdXBsb2FkZWQgZmlsZW5hbWUNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgaW5zZXJ0ZWQgaW50byB0aGUgZGF0YWJhc2UgYmVsb3cNCiAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ2N1c3RvbWZpZWxkJ11bJGN1c3RvbV9mbGRbJ2ZpZWxkZGVmX2lkJ11dID0gJHZhbHVlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8gaGFuZGxlIGluc2VydGluZyBjdXN0b20gZmllbGRzIGludG8gZGF0YWJhc2UNCiAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2N1c3RvbWZpZWxkJ10pKSB7DQogICAgICAgICAgICBmb3JlYWNoICgkcGFyYW1zWydjdXN0b21maWVsZCddIGFzICRmbGRpZCA9PiAkdmFsdWUpIHsNCg0KICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkdmFsdWUpKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJHZhbHVlKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9IGltcGxvZGUoJywnLCAkdmFsdWUpOw0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAnJzsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiByb3cgZXhpc3RzIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIGluc2VydCBvciB1cGRhdGUNCiAgICAgICAgICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIHZhbHVlIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBXSEVSRSBpdGVtX2lkID0gPyBBTkQgZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAkdG1wID0gJGRiLT5HZXRPbmUoJHF1ZXJ5LCBhcnJheSgkaXRlbV9pZCwgJGZsZGlkKSk7DQoNCg0KICAgICAgICAgICAgICAgIC8vIHJvdyBkb2VzIG5vdCBleGlzdA0KICAgICAgICAgICAgICAgIGlmICgkdG1wID09IGZhbHNlKSB7DQogICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgaW5zZXJ0IHJvdyBpZiBmaWVsZCB2YWx1ZSBpcyBub3QgZW1wdHkNCiAgICAgICAgICAgICAgICAgICAgaWYgKCR2YWx1ZSE9IiIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIChpdGVtX2lkLCBmaWVsZGRlZl9pZCwgdmFsdWUpIFZBTFVFUyAoPywgPywgPyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtX2lkLCAkZmxkaWQsICR2YWx1ZSkpOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgLy8gcm93IGFscmVhZHkgZXhpc3RzDQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gZGVsZXRlIHJvdyBpZiBmaWVsZCB2YWx1ZSBpcyBlbXB0eQ0KICAgICAgICAgICAgICAgICAgICBpZiAoJHZhbHVlPT0iIikgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgV0hFUkUgaXRlbV9pZCA9ID8gQU5EIGZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1faWQsICRmbGRpZCkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlIHJvdw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIFNFVCB2YWx1ZSA9ID8gV0hFUkUgaXRlbV9pZCA9ID8gQU5EIGZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHZhbHVlLCAkaXRlbV9pZCwgJGZsZGlkKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAoISRyZXN1bHQpDQogICAgICAgICAgICAgICAgICAgIGRpZSgnRkFUQUwgU1FMIEVSUk9SOiAnIC4gJGRiLT5FcnJvck1zZygpIC4gJzxici8+UVVFUlk6ICcgLiAkZGItPnNxbCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgLy8gZGVsZXRlIHZhbHVlIGZyb20gZmlsZSBmaWVsZA0KICAgICAgICBpZiAoaXNzZXQoJHBhcmFtc1snZGVsZXRlX2N1c3RvbWZpZWxkJ10pICYmIGlzX2FycmF5KCRwYXJhbXNbJ2RlbGV0ZV9jdXN0b21maWVsZCddKSkgew0KICAgICAgICAgICAgZm9yZWFjaCAoJHBhcmFtc1snZGVsZXRlX2N1c3RvbWZpZWxkJ10gYXMgJGsgPT4gJHYpIHsNCiAgICAgICAgICAgICAgICBpZiAoJHYgIT0gJ2RlbGV0ZScpDQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBza2lwIGlmIG5vdCBkZWxldGluZyBhbnl0aGluZw0KDQogICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgV0hFUkUgaXRlbV9pZCA9ID8gQU5EIGZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1faWQsICRrKSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLyBhZGRpdGlvbmFsIGNoZWNrIGlzIG5lZWRlZCBzaW5jZSBmaWxlIHVwbG9hZCBjb3VsZCBoYXZlIHByb2R1Y2VkIGVycm9ycw0KICAgICAgICBpZiAoZW1wdHkoJGVycm9ycykpIHsNCiAgICAgICAgICAgIC8vIHNob3cgc2F2ZWQgbWVzc2FnZQ0KICAgICAgICAgICAgaWYgKCFpc3NldCgkcGFyYW1zWydhcHBseSddKSkgew0KICAgICAgICAgICAgICAgICRtb2QtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZV90YWInID0+ICdpdGVtdGFiJywgJ21lc3NhZ2UnID0+ICdjaGFuZ2Vzc2F2ZWQnKSk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGVjaG8gJG1vZC0+U2hvd01lc3NhZ2UoZ2VuZXJhdG9yKCktPkxhbmcoJ2NoYW5nZXNzYXZlZCcpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X3NlYXJjaF9tb2R1bGUoKTsNCiAgICAgICAgICAgIGlmIChpc19vYmplY3QoJG1vZHVsZSkpIHsNCiAgICAgICAgICAgICAgICBpZiAoJGFjdGl2ZSAhPSAxKSB7DQogICAgICAgICAgICAgICAgICAgICRtb2R1bGUtPkRlbGV0ZVdvcmRzKCRtb2QtPkdldE5hbWUoKSwgJGl0ZW1faWQsICdpdGVtJyk7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgJG1vZHVsZS0+QWRkV29yZHMoJG1vZC0+R2V0TmFtZSgpLCAkaXRlbV9pZCwgJ2l0ZW0nLCBnZW5lcmF0b3JfdG9vbHM6OmdldF9zZWFyY2hhYmxlX3RleHQoJG1vZCwgJGl0ZW1faWQpLCBnZW5lcmF0b3JfdG9vbHM6OmdldF9zZWFyY2hhYmxlX2RhdGVfZW5kKCkpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgQCRtb2QtPlNlbmRFdmVudCgnSXRlbUFkZGVkJywgYXJyYXkoJ2l0ZW1faWQnID0+ICRpdGVtX2lkLCAnY2F0ZWdvcnlfaWQnID0+ICR1c2VkY2F0ZWdvcnksICd0aXRsZScgPT4gJHRpdGxlLCAnYWN0aXZlJyA9PiAkYWN0aXZlLCAnaXRlbV9kYXRlJyA9PiB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGUpLCAiJyIpLCAnaXRlbV9kYXRlX2VuZCcgPT4gdHJpbSgkZGItPkRCVGltZVN0YW1wKCRkYXRlX2VuZCkpLCAncmVjdXJzaXZlJyA9PiAkcmVjdXJzaXZlKSk7DQogICAgICAgIH0NCiAgICB9DQp9IC8vIGVuZCBzdWJtaXQgb3IgYXBwbHkNCg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQoNCi8vIGRpc3BsYXkgZXJyb3JzIGlmIHRoZXJlIGFyZSBhbnkNCmlmICghZW1wdHkoJGVycm9ycykpIHsNCiAgICBlY2hvICRtb2QtPlNob3dFcnJvcnMoJGVycm9ycyk7DQp9DQoNCi8vIGhpZGRlbiB2YWx1ZSByZXF1aXJlZCB3aGVuIGVkaXRpbmcgYW4gZXhpc3RpbmcgaXRlbQ0KaWYgKGlzc2V0KCRpdGVtX2lkKSkgew0KICAgICRzbWFydHktPmFzc2lnbignaXRlbV9pZCcsICRtb2QtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ2l0ZW1faWQnLCAkaXRlbV9pZCkpOw0KfSANCg0KJHNtYXJ0eS0+YXNzaWduKCd0aXRsZScsIChpc3NldCgkaXRlbV9pZCkgPyBnZW5lcmF0b3IoKS0+TGFuZygnZWRpdCcpIDogZ2VuZXJhdG9yKCktPkxhbmcoJ2FkZCcpKSAuICcgJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fc2luZ3VsYXInLCAnJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdmb3JtaWQnLCAkaWQpOw0KJHNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkbW9kLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnYWRtaW5fZWRpdGl0ZW0nLCAkcmV0dXJuaWQsICdwb3N0JywgJ211bHRpcGFydC9mb3JtLWRhdGEnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkbW9kLT5DcmVhdGVGb3JtRW5kKCkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF90aXRsZScsICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fdGl0bGUnLCAnJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF90aXRsZScsICRtb2QtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICd0aXRsZScsICR0aXRsZSwgNTApKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfYWxpYXMnLCBnZW5lcmF0b3IoKS0+TGFuZygnYWxpYXMnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2FsaWFzJywgJG1vZC0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2FsaWFzJywgJGFsaWFzLCA1MCkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF91cmwnLCBnZW5lcmF0b3IoKS0+TGFuZygndXJsJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF91cmwnLCAkbW9kLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAndXJsJywgJHVybCwgNTApKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfY2F0ZWdvcnknLCBnZW5lcmF0b3IoKS0+TGFuZygnY2F0ZWdvcnknKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2NhdGVnb3J5JywgJG1vZC0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdjYXRlZ29yeScsICRjYXRlZ29yeWxpc3QsIC0xLCAkdXNlZGNhdGVnb3J5KSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2FjdGl2ZScsIGdlbmVyYXRvcigpLT5MYW5nKCdhY3RpdmUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2FjdGl2ZScsICRtb2QtPkNyZWF0ZUlucHV0Y2hlY2tib3goJGlkLCAnYWN0aXZlJywgMSwgJGFjdGl2ZSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9kYXRlJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2RhdGUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2RhdGUnLCAkZGF0ZSk7DQokc21hcnR5LT5hc3NpZ24oJ2RhdGVwcmVmaXgnLCAkaWQgLiAnZGF0ZV8nKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZGF0ZV9lbmQnLCBnZW5lcmF0b3IoKS0+TGFuZygncHJvbXB0X2l0ZW1fZGF0ZV9lbmRfZWRpdCcpKTsNCiRzbWFydHktPmFzc2lnbignZGF0ZWVuZCcsICRkYXRlX2VuZCk7DQokc21hcnR5LT5hc3NpZ24oJ2RhdGVlbmRwcmVmaXgnLCAkaWQgLiAnZGF0ZV9lbmRfJyk7DQoNCiRzbWFydHktPmFzc2lnbigncmVjdXJzaXZlJywgJHJlY3Vyc2l2ZSk7DQokc21hcnR5LT5hc3NpZ24oJ3JlY3VyX29wdGlvbnMnLCBhcnJheSgNCiAgICAkdGhpcy0+TGFuZygnbm9uZScpID0+ICcnLA0KICAgICR0aGlzLT5MYW5nKCdkYWlseScpID0+ICdkYWlseScpKTsNCg0KJHdlZWtkYXlzID0gYXJyYXkoJHRoaXMtPkxhbmcoJ3N1bmRheScpID0+ICcwJywNCiAgICAkdGhpcy0+TGFuZygnbW9uZGF5JykgPT4gJzEnLA0KICAgICR0aGlzLT5MYW5nKCd0dWVzZGF5JykgPT4gJzInLA0KICAgICR0aGlzLT5MYW5nKCd3ZWRuZXNkYXknKSA9PiAnMycsDQogICAgJHRoaXMtPkxhbmcoJ3RodXJzZGF5JykgPT4gJzQnLA0KICAgICR0aGlzLT5MYW5nKCdmcmlkYXknKSA9PiAnNScsDQogICAgJHRoaXMtPkxhbmcoJ3NhdHVyZGF5JykgPT4gJzYnKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF93ZWVrZGF5cycsICRtb2QtPkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICdyZWN1cl93ZWVrZGF5c1tdJywgJHdlZWtkYXlzLCBlbXB0eSgkcmVjdXJfd2Vla2RheXMpID8gYXJyYXkoKSA6ICRyZWN1cl93ZWVrZGF5cywgNykpOw0KDQoNCg0KJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkbW9kLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCBsYW5nKCdzdWJtaXQnKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdhcHBseScsICRtb2QtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2FwcGx5JywgbGFuZygnYXBwbHknKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkbW9kLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjYW5jZWwnLCBsYW5nKCdjYW5jZWwnKSkpOw0KDQoNCg0KJGN1c3RvbV9mbGRzX29iaiA9ICRmaWx0ZXJzLT5nZW5lcmF0ZSgkaXRlbV9pZCwgJHBhcmFtcyk7DQoNCmlmIChpc3NldCgkY3VzdG9tX2ZsZHNfb2JqKSAmJiBjb3VudCgkY3VzdG9tX2ZsZHNfb2JqKSA+IDApIHsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2N1c3RvbV9maWVsZGRlZicsICRjdXN0b21fZmxkc19vYmopOw0KfQ0KDQokc21hcnR5LT5hc3NpZ24oJ21vZCcsICRtb2QpOw0KDQplY2hvICRtb2QtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdGl0ZW0udHBsJyk7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.admin_editoption.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkNCiAgICByZXR1cm47DQoNCg0KDQovLyBsYXp5IGxvYWRpbmcNCg0KJGxhenlsb2FkaW5nID0gIDA7DQppZiAoaXNTZXQoJHBhcmFtc1sibGF6eWxvYWRpbmciXSkpIA0KICAgICRsYXp5bG9hZGluZyA9IDE7DQoNCiRsYXp5bG9hZGluZ19vbGQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdsYXp5bG9hZGluZycpID8gJG1vZC0+R2V0UHJlZmVyZW5jZSgnbGF6eWxvYWRpbmcnKSA6IDA7DQoNCi8vIHNldCAgbGF6eSBsb2FkaW5nLCBjbGVhciBjYWNoZQ0KaWYoJGxhenlsb2FkaW5nX29sZCAhPSAkbGF6eWxvYWRpbmcpIHsNCiAgICAkcXVlcnkgPSAnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlcyBTRVQgYWxsb3dfZmVfbGF6eWxvYWQgPSA/IFdIRVJFIG1vZHVsZV9uYW1lID0gPyc7DQogICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGxhenlsb2FkaW5nLCRtb2QtPkdldE5hbWUoKSkpOw0KICAgIGNtc21zKCktPmNsZWFyX2NhY2hlZF9maWxlcygpOw0KfQ0KJG1vZC0+UmVtb3ZlUHJlZmVyZW5jZSgnY3VzdG9tX2ZpZWxkc19kZWZhdWx0Jyk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdjdXN0b21fZmllbGRzX2RlZmF1bHQnLGltcGxvZGUoJywnLCAkcGFyYW1zWyJjdXN0b21fZmllbGRzX2RlZmF1bHQiXSkpOw0KDQokcHJlZnMgPSBhcnJheSgpOw0KJHByZWZzW10gPSAiZnJpZW5kbHluYW1lIjsNCiRwcmVmc1tdID0gIml0ZW1fdGl0bGUiOw0KJHByZWZzW10gPSAiaXRlbV9zaW5ndWxhciI7DQokcHJlZnNbXSA9ICJpdGVtX3BsdXJhbCI7DQokcHJlZnNbXSA9ICJ1cmxfcHJlZml4IjsNCiRwcmVmc1tdID0gImRlZmF1bHRfYWN0aW9uX3BhcmFtcyI7DQokcHJlZnNbXSA9ICJkZXRhaWxfYWN0aW9uX3BhcmFtcyI7DQokcHJlZnNbXSA9ICJkZXRhaWxfYWN0aW9uX3BhcmFtcyI7DQokcHJlZnNbXSA9ICJ0aXRsZV9wYXJhbV9mb3JfY2FjaGUiOw0KJHByZWZzW10gPSAiZGlzcGxheV9pbmxpbmUiOw0KJHByZWZzW10gPSAibGF6eWxvYWRpbmciOw0KJHByZWZzW10gPSAidXNlcmdyb3VwX2RlcGVuZGVuY2UiOw0KJHByZWZzW10gPSAiaGFzX2FkbWluIjsNCiRwcmVmc1tdID0gIml0ZW1fdGl0bGVfZWRpdCI7DQokcHJlZnNbXSA9ICJpdGVtX2RhdGVfZWRpdCI7DQokcHJlZnNbXSA9ICJpdGVtX2RhdGVfZW5kX2VkaXQiOw0KJHByZWZzW10gPSAiaXRlbV9jYXRlZ29yeV9lZGl0IjsNCiRwcmVmc1tdID0gInJlY3Vyc2l2ZSI7DQokcHJlZnNbXSA9ICJmaWx0ZXJfZGF0ZSI7DQokcHJlZnNbXSA9ICJmaWx0ZXJfZGF0ZSI7DQokcHJlZnNbXSA9ICJjYXRlZ29yeV9leHRyYV9sYWJlbCI7DQokcHJlZnNbXSA9ICJjYXRlZ29yeV9leHRyYTJfbGFiZWwiOw0KJHByZWZzW10gPSAiaXRlbV9hbGlhc19lZGl0IjsNCiRwcmVmc1tdID0gIml0ZW1fdXJsX2VkaXQiOw0KJHByZWZzW10gPSAiaXRlbV9kZXRhaWxfcmV0dXJuaWQiOw0KJHByZWZzW10gPSAiaXRlbV9jYXRlZ29yeV9yZXR1cm5pZCI7DQokcHJlZnNbXSA9ICJzdW1tYXJ5X3BhZ2VsaW1pdCI7DQokcHJlZnNbXSA9ICJtb2RlIjsNCiRwcmVmc1tdID0gInNlYXJjaF9kYXRlX2VuZCI7DQokcHJlZnNbXSA9ICJzZWFyY2hhYmxlIjsNCg0KZXh0ZW5kZWRfdG9vbHNfb3B0czo6c2V0X3ByZWZlcmVuY2VzKCRwcmVmcywgJHBhcmFtcywgJG1vZCk7DQoNCg0KJHByZWZzID0gYXJyYXkoKTsNCg0KaWYgKCRwYXJhbXNbJ21vZGUnXSA9PSAnYWR2YW5jZWQnKSB7DQogICAgJHByZWZzW10gPSAic29ydG9yZGVyX2FkdmFuY2VkIjsNCiAgICAkcHJlZnNbXSA9ICJzb3J0YnlfYWR2YW5jZWQiOw0KfQ0KDQpleHRlbmRlZF90b29sc19vcHRzOjpzZXRfcHJlZmVyZW5jZXMoJHByZWZzLCAkcGFyYW1zLCAkbW9kKTsNCg0KDQoNCiRtb2QtPlJlZGlyZWN0VG9UYWIoJGlkLCAnb3B0aW9udGFiJyk7DQo/Pg==]]></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_movefielddef.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9vcHRpb24nKSkNCiAgICByZXR1cm47DQoNCiRkYXRhID0gdHJpbSh0cmltKCRwYXJhbXNbJ3NlcmlhbGRhdGEnXSksICcsJyk7DQokZGF0YSA9IGV4cGxvZGUoJywnLCAkZGF0YSk7DQoNCiRzb3J0aW5nID0gMTsNCmZvciAoJGkgPSAwOyAkaSA8IGNvdW50KCRkYXRhKTsgJGkrKykgew0KICAgICRpdGVtX2lkID0gJGRhdGFbJGldOw0KICAgIGlmICghJGl0ZW1faWQpDQogICAgICAgIGNvbnRpbnVlOw0KICAgICRxdWVyeSA9ICdVUERBVEUgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZGRlZiBTRVQgcG9zaXRpb24gPSA/IFdIRVJFIGZpZWxkZGVmX2lkID0gPyc7DQogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHNvcnRpbmcrKywgJGl0ZW1faWQpKTsNCiAgICANCn0NCg0KJG1vZC0+UmVkaXJlY3RUb1RhYigkaWQsICdmaWVsZGRlZnRhYicpOw0KPz4NCg==]]></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+X0dldE1vZHVsZUFsaWFzKCkgLiAiX2NhdGVnb3JpZXMgT1JERVIgQlkgaGllcmFyY2h5X3Bvc2l0aW9uIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7Cgokcm93Y2xhc3MgPSAncm93MSc7CgoKCndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewogICAgJG9uZXJvdyA9IGNnZV9hcnJheTo6dG9fb2JqZWN0KCRyb3cpOwogICAgJGVudHJ5YXJyYXlbXSA9ICRvbmVyb3c7Cn0KJG1vZC0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdpdGVtcycsICRlbnRyeWFycmF5KTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRlbnRyeWFycmF5KSk7CgplY2hvICRtb2QtPlByb2Nlc3NUZW1wbGF0ZSgnb3JkZXJjYXRlZ29yeS50cGwnKTsKIwojIEVPRgojCj8+]]></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[PD9waHANCg0KI0JFR0lOX0xJQ0VOU0UNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogICBAa3V6bWFueSAoa3V6bWFueS5iaXopDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiANCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiNFTkRfTElDRU5TRQ0KaWYgKCFpc3NldCgkZ0NtcykpDQogICAgZXhpdDsNCg0KDQokZmllbGRlZnMgPSAnJzsgew0KICAgICR0bXAgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9maWVsZHMoJG1vZCwgZmFsc2UpOw0KDQogICAgaWYgKGlzX2FycmF5KCR0bXApKSB7DQogICAgICAgICRmaWVsZGRlZnMgPSBhcnJheSgpOw0KICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkdG1wKTsgJGkrKykgew0KICAgICAgICAgICAgJG9iaiA9ICR0bXBbJGldOw0KICAgICAgICAgICAgJGZpZWxkZGVmc1skb2JqLT5hbGlhc10gPSAkb2JqOw0KICAgICAgICB9DQogICAgfQ0KfQ0KJHF1ZXJ5ID0gJyc7DQokcXVlcnkyID0gJyc7DQokY291bnQgPSAnJzsNCiRwYWdlID0gJyc7DQokc3RhcnRlbGVtZW50ID0gJyc7DQokbGltaXQgPSA5OTk5OTsNCiRpdGVtbGlzdCA9ICcnOw0KJHNvcnR0eXBlID0gJyc7DQokY291bnRqb2lucyA9IGFycmF5KCk7DQokam9pbnMgPSBhcnJheSgpOw0KJHNvcnRmaWVsZCA9IDE7DQp1bnNldCgkcGFyYW1zWydhc3NpZ24nXSk7DQokaW5saW5lID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZGlzcGxheV9pbmxpbmUnLCBmYWxzZSk7DQokZGVmYXVsdF9kZXRhaWxwYWdlID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kZXRhaWxfcmV0dXJuaWQnLCAnJyk7DQokZGV0YWlscGFnZSA9ICRkZWZhdWx0X2RldGFpbHBhZ2U7DQppZiAoIWlzU2V0KCRwYXJhbXNbImRldGFpbHBhZ2UiXSkgJiYgaXNTZXQoJHBhcmFtc1sicmV0dXJuaWQiXSkpDQogICAgJHBhcmFtc1siZGV0YWlscGFnZSJdID0gJHBhcmFtc1sicmV0dXJuaWQiXTsNCiRkZXRhaWxwYWdlID0gZXh0ZW5kZWRfdG9vbHNfb3B0czo6ZGV0YWlscGFnZSgkcGFyYW1zLCAkZGV0YWlscGFnZSk7DQppZiAoJGRldGFpbHBhZ2UgPT0gJGRlZmF1bHRfZGV0YWlscGFnZSkNCiAgICB1bnNldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pOw0KDQoNCiRkZXRhaWx0ZW1wbGF0ZSA9ICcnOw0KJGZpbHRlcnMgPSBhcnJheSgpOw0KJGZpZWxkcyA9IGFycmF5KCk7DQokZmllbGRzMiA9IGFycmF5KCk7DQokZGF0ZV90byA9ICcnOw0KJGRhdGVfZnJvbSA9ICcnOw0KJGNhdGVnb3J5X2lkID0gLTE7DQokcGFyYW1hcnJheXRtcCA9IGFycmF5KCk7DQokZ3JvdXBieSA9ICcnOw0KDQoNCi8vIHRlbXBsYXRlDQokdGhldGVtcGxhdGUgPSAnc3VtbWFyeV90ZW1wbGF0ZScgLiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdjdXJyZW50X3N1bW1hcnlfdGVtcGxhdGUnKTsNCmlmIChpc3NldCgkcGFyYW1zWydzdW1tYXJ5dGVtcGxhdGUnXSkpIHsNCiAgICAkdGhldGVtcGxhdGUgPSAnc3VtbWFyeV90ZW1wbGF0ZScgLiAkcGFyYW1zWydzdW1tYXJ5dGVtcGxhdGUnXTsNCn0NCg0KLy8gdGVtcGxhdGUNCmlmIChpc3NldCgkcGFyYW1zWydkZXRhaWx0ZW1wbGF0ZSddKSkgew0KICAgICRkZXRhaWx0ZW1wbGF0ZSA9ICRwYXJhbXNbJ2RldGFpbHRlbXBsYXRlJ107DQp9DQoNCmlmIChpc3NldCgkcGFyYW1zWydpbmxpbmUnXSkpIHsNCiAgICAkaW5saW5lID0gJHBhcmFtc1snaW5saW5lJ107DQp9DQoNCg0KLy8gZGF0ZSBmcm9tDQppZiAoaXNzZXQoJHBhcmFtc1snZGF0ZWZyb20nXSkpIHsNCiAgICAkZGF0ZV9mcm9tID0gJHBhcmFtc1snZGF0ZWZyb20nXTsNCn0NCmlmIChpc3NldCgkcGFyYW1zWydkYXRlZnJvbU1vbnRoJ10pKSB7DQogICAgJGRhdGVfZnJvbSA9IG1rdGltZSgwLCAwLCAwLCAkcGFyYW1zWydkYXRlZnJvbU1vbnRoJ10sICRwYXJhbXNbJ2RhdGVmcm9tRGF5J10sICRwYXJhbXNbJ2RhdGVmcm9tWWVhciddKTsNCn0NCmlmIChpc3NldCgkcGFyYW1zWydkYXRldG8nXSkpIHsNCiAgICAkZGF0ZV90byA9ICRwYXJhbXNbJ2RhdGV0byddOw0KfQ0KaWYgKGlzc2V0KCRwYXJhbXNbJ2RhdGV0b01vbnRoJ10pKSB7DQogICAgJGRhdGVfdG8gPSBta3RpbWUoMjMsIDU5LCA1OSwgJHBhcmFtc1snZGF0ZXRvTW9udGgnXSwgJHBhcmFtc1snZGF0ZXRvRGF5J10sICRwYXJhbXNbJ2RhdGV0b1llYXInXSk7DQp9DQoNCmlmIChpc3NldCgkcGFyYW1zWydpdGVtX2RhdGVfZnJvbV90byddKSkgew0KICAgICRkYXRlX2Zyb21fdG8gPSBleHBsb2RlKCd8JywgJHBhcmFtc1snaXRlbV9kYXRlX2Zyb21fdG8nXSk7DQogICAgaWYgKGNvdW50KCRkYXRlX2Zyb21fdG8pID09IDIpIHsNCiAgICAgICAgJGRhdGVfZnJvbSA9IGdlbmVyYXRvcl90b29sczo6cHJvY2Vzc19maWx0ZXJfZGF0ZSgkZGF0ZV9mcm9tX3RvWzBdKTsNCiAgICAgICAgJGRhdGVfdG8gPSBnZW5lcmF0b3JfdG9vbHM6OnByb2Nlc3NfZmlsdGVyX2RhdGUoJGRhdGVfZnJvbV90b1sxXSk7DQogICAgfQ0KfQ0KDQovL2NhdGVnb3J5IGlkDQppZiAoaXNTZXQoJHBhcmFtc1siY2F0ZWdvcnlfaWQiXSkpIHsNCiAgICAkY2F0ZWdvcnlfaWQgPSBpbnR2YWwoJHBhcmFtc1siY2F0ZWdvcnlfaWQiXSk7DQp9DQoNCg0KaWYgKGlzc2V0KCRwYXJhbXNbJ2l0ZW1saXN0J10pKSB7DQogICAgJGl0ZW1saXN0ID0gJHBhcmFtc1snaXRlbWxpc3QnXTsNCiAgICB1bnNldCgkcGFyYW1zWydpdGVtbGlzdCddKTsNCiAgICBpZiAoIWlzX2FycmF5KCRpdGVtbGlzdCkpIHsNCiAgICAgICAgJGl0ZW1saXN0ID0gZXhwbG9kZSgnLCcsICRpdGVtbGlzdCk7DQogICAgfQ0KfQ0KaWYgKCEoaXNfYXJyYXkoJGl0ZW1saXN0KSAmJiBjb3VudCgkaXRlbWxpc3QpID4gMCkpIHsNCiAgICAvLyB3ZSBkb24ndCBoYXZlIGFuIGV4cGxpY2l0IHByb2R1Y3QgbGlzdCwgc28gZ290dGEgYnVpbGQgYSBxdWVyeQ0KICAgIC8vIGZyb20gb3RoZXIgcGFyYW1ldGVycw0KICAgICRzb3J0b3JkZXIgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdzb3J0b3JkZXJfJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ21vZGUnKSwgJ2Rlc2MnKTsNCiAgICBpZiAoaXNzZXQoJHBhcmFtc1snc29ydG9yZGVyJ10pKSB7DQogICAgICAgIHN3aXRjaCAoc3RydG9sb3dlcigkcGFyYW1zWydzb3J0b3JkZXInXSkpIHsNCiAgICAgICAgICAgIGNhc2UgJ2FzYyc6DQogICAgICAgICAgICBjYXNlICdkZXNjJzoNCiAgICAgICAgICAgICAgICAkc29ydG9yZGVyID0gJHBhcmFtc1snc29ydG9yZGVyJ107DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAkc29ydGJ5ID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnc29ydGJ5XycgLiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdtb2RlJyksICdwb3NpdGlvbicpOw0KICAgIGlmIChpc3NldCgkcGFyYW1zWydzb3J0YnknXSkpIHsNCiAgICAgICAgJHRtcCA9IHN0cnRvbG93ZXIodHJpbSgkcGFyYW1zWydzb3J0YnknXSkpOw0KICAgICAgICBzd2l0Y2ggKCR0bXApIHsNCiAgICAgICAgICAgIGNhc2UgJ2lkJzoNCiAgICAgICAgICAgICAgICAkc29ydGJ5ID0gJ2lkJzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgJ2l0ZW1fZGF0ZSc6DQogICAgICAgICAgICAgICAgJHNvcnRieSA9ICdpdGVtX2RhdGUnOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAncG9zaXRpb24nOg0KICAgICAgICAgICAgICAgICRzb3J0YnkgPSAncG9zaXRpb24nOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAndGl0bGUnOg0KICAgICAgICAgICAgICAgICRzb3J0YnkgPSAndGl0bGUnOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAnY3JlYXRlZCc6DQogICAgICAgICAgICAgICAgJHNvcnRieSA9ICdjcmVhdGVfZGF0ZSc7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlICdtb2RpZmllZCc6DQogICAgICAgICAgICAgICAgJHNvcnRieSA9ICdtb2RpZmllZF9kYXRlJzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgJ3JhbmRvbSc6DQogICAgICAgICAgICAgICAgJHNvcnRieSA9ICdSQU5EKCknOw0KICAgICAgICAgICAgICAgICRzb3J0b3JkZXIgPSAnJzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgaWYgKHN0YXJ0c3dpdGgoJHRtcCwgJ2Y6JykpIHsNCiAgICAgICAgICAgICAgICAgICAgJGZpZWxkbmFtZSA9IHN1YnN0cigkdG1wLCBzdHJsZW4oJ2Y6JykpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGZpZWxkZGVmc1skZmllbGRuYW1lXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRmaWVsZGlkID0gJGZpZWxkZGVmc1skZmllbGRuYW1lXS0+aWQ7DQogICAgICAgICAgICAgICAgICAgICAgICAkYXMgPSAnRlYnIC4gJHNvcnRmaWVsZCsrOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWx2IHskYXN9IE9OIGMuaWQgPSB7JGFzfS5pdGVtX2lkIEFORCAkYXMuZmllbGRkZWZfaWQgPSAneyRmaWVsZGlkfSciOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHNvcnRieSA9ICJ7JGFzfS52YWx1ZSI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCRzb3J0YnkgPT0gJ3JhbmRvbScpIHsNCiAgICAgICAgJHNvcnRieSA9ICdSQU5EKCknOw0KICAgICAgICAkc29ydG9yZGVyID0gJyc7DQogICAgfQ0KDQogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3NvcnR0eXBlJ10pKSB7DQogICAgICAgICR0bXAgPSB0cmltKCRwYXJhbXNbJ3NvcnR0eXBlJ10pOw0KICAgICAgICAkdG1wID0gc3RydG91cHBlcigkdG1wKTsNCiAgICAgICAgc3dpdGNoICgkdG1wKSB7DQogICAgICAgICAgICBjYXNlICdTVFJJTkcnOg0KICAgICAgICAgICAgICAgICRzb3J0dHlwZSA9ICcnOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAnU0lHTkVEJzoNCiAgICAgICAgICAgIGNhc2UgJ1VOU0lHTkVEJzoNCiAgICAgICAgICAgICAgICAkc29ydHR5cGUgPSAkdG1wOw0KICAgICAgICB9DQogICAgfQ0KICAgICRsaW1pdCA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ3N1bW1hcnlfcGFnZWxpbWl0XycgLiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdtb2RlJyksIDEwMDAwKTsNCiAgICBpZiAoaXNzZXQoJHBhcmFtc1sncGFnZWxpbWl0J10pICYmICRwYXJhbXNbJ3BhZ2VsaW1pdCddID4gMCkgew0KICAgICAgICAkbGltaXQgPSAoaW50KSAkcGFyYW1zWydwYWdlbGltaXQnXTsNCiAgICB9DQoNCiAgICAkbGltaXQgPSBtYXgoJGxpbWl0LCAxKTsNCiAgICAkbGltaXQgPSBtaW4oJGxpbWl0LCAxMDAwMCk7DQoNCg0KICAgICRwYWdlID0gMTsNCiAgICBpZiAoaXNzZXQoJHBhcmFtc1sncGFnZSddKSkgew0KICAgICAgICAkcGFnZSA9IChpbnQpICRwYXJhbXNbJ3BhZ2UnXTsNCiAgICAgICAgaWYgKCRwYWdlIDwgMSkNCiAgICAgICAgICAgICRwYWdlID0gMTsNCiAgICB9DQogICAgJHN0YXJ0ZWxlbWVudCA9ICgkcGFnZSAtIDEpICogJGxpbWl0Ow0KDQogICAgJGNhdGVnb3J5ID0gJyc7DQogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2NhdGVnb3J5J10pKSB7DQogICAgICAgICRjYXRlZ29yeSA9IHRyaW0oJHBhcmFtc1snY2F0ZWdvcnknXSk7DQogICAgfQ0KICAgICRjYXRlZ29yeWlkID0gLTEwMDsNCiAgICBpZiAoaXNzZXQoJHBhcmFtc1snY2F0ZWdvcnlpZCddKSkgew0KICAgICAgICAkY2F0ZWdvcnlpZCA9IChpbnQpICRwYXJhbXNbJ2NhdGVnb3J5aWQnXTsNCiAgICB9DQoNCiAgICAkZmllbGRpZCA9IC0xMDA7DQogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2ZpZWxkaWQnXSkpIHsNCiAgICAgICAgJGZpZWxkaWQgPSAoaW50KSAkcGFyYW1zWydmaWVsZGlkJ107DQogICAgfQ0KICAgICRmaWVsZHZhbCA9ICcnOw0KICAgIGlmIChpc3NldCgkcGFyYW1zWydmaWVsZHZhbCddKSkgew0KICAgICAgICAkZmllbGR2YWwgPSB0cmltKCRwYXJhbXNbJ2ZpZWxkdmFsJ10pOw0KICAgIH0NCg0KICAgIC8vDQogICAgLy8gQnVpbGQgdGhlIHF1ZXJpZXMNCiAgICAvLw0KICAgICRpdGVtc2FycmF5ID0gYXJyYXkoKTsNCiAgICAkZW50cnlhcnJheSA9IGFycmF5KCk7DQogICAgJHBhcmFtYXJyYXkgPSBhcnJheSgpOw0KICAgICRwYXJhbWFycmF5MiA9IGFycmF5KCk7DQogICAgJHdoZXJlID0gYXJyYXkoKTsNCiAgICAkd2hlcmUyID0gYXJyYXkoKTsNCiAgICAkcXVlcnkgPSAiU0VMRUNUIGMuKiw8RklFTERTPiBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlXyIgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICJfaXRlbSBjIjsNCiAgICAkcXVlcnkyID0gIlNFTEVDVCBjb3VudCgqKSBhcyBjb3VudCw8RklFTERTPiBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlXyIgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICJfaXRlbSBjIjsNCiAgICAkd2hlcmVbXSA9ICdjLmFjdGl2ZSA9ID8nOw0KICAgICRwYXJhbWFycmF5W10gPSAxOw0KDQogICAgJGNvdW50am9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jYXRlZ29yaWVzIGNhIE9OIGNhLmNhdGVnb3J5X2lkID0gYy5jYXRlZ29yeV9pZCc7DQogICAgJGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllcyBjYSBPTiBjYS5jYXRlZ29yeV9pZCA9IGMuY2F0ZWdvcnlfaWQnOw0KICAgICRmaWVsZHNbXSA9ICdjYS5jYXRlZ29yeV9uYW1lJzsNCg0KDQogICAgaWYgKCRjYXRlZ29yeV9pZCA+IDApIHsNCiAgICAgICAgJHdoZXJlW10gPSAnY2EuY2F0ZWdvcnlfaWQgPSA/JzsNCiAgICAgICAgJHBhcmFtYXJyYXlbXSA9ICRjYXRlZ29yeV9pZDsNCiAgICB9IGVsc2UgaWYgKGVtcHR5KCRjYXRlZ29yeSkgPT0gZmFsc2UpIHsNCiAgICAgICAgJGNhdGVnb3J5ID0gY21zX2h0bWxfZW50aXR5X2RlY29kZSgkY2F0ZWdvcnkpOw0KICAgICAgICAkY2F0ZWdvcmllcyA9IGV4cGxvZGUoJywnLCAkY2F0ZWdvcnkpOw0KDQoNCg0KICAgICAgICAkcXVlcnl0bXAgPSAiICgiOw0KICAgICAgICAkY291bnQgPSAwOw0KICAgICAgICBmb3JlYWNoICgkY2F0ZWdvcmllcyBhcyAkb25lY2F0KSB7DQogICAgICAgICAgICBpZiAoJGNvdW50ID4gMCkgew0KICAgICAgICAgICAgICAgICRxdWVyeXRtcCAuPSAnIE9SICc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoc3RycG9zKCRvbmVjYXQsICd8JykgIT09IEZBTFNFIHx8IHN0cnBvcygkb25lY2F0LCAnKicpICE9PSBGQUxTRSkgew0KICAgICAgICAgICAgICAgICR0bXAgPSAkZGItPnFzdHIodHJpbShzdHJfcmVwbGFjZSgnKicsICclJywgc3RyX3JlcGxhY2UoIiciLCAnXycsICRvbmVjYXQpKSkpOw0KICAgICAgICAgICAgICAgICRxdWVyeXRtcCAuPSAidXBwZXIoY2EubG9uZ19uYW1lKSBsaWtlIHVwcGVyKHskdG1wfSkiOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkdG1wID0gJGRiLT5xc3RyKHRyaW0oc3RyX3JlcGxhY2UoIiciLCAnXycsICRvbmVjYXQpKSk7DQogICAgICAgICAgICAgICAgJHF1ZXJ5dG1wIC49ICJjYS5jYXRlZ29yeV9uYW1lID0geyR0bXB9IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRjb3VudCsrOw0KICAgICAgICB9DQogICAgICAgICRxdWVyeXRtcCAuPSAiKSI7DQoNCiAgICAgICAgJHdoZXJlW10gPSAkcXVlcnl0bXA7DQogICAgfQ0KDQoNCg0KDQogICAgLy8gZmlsdGVycw0KICAgIGZvcmVhY2ggKCRwYXJhbXMgYXMgJGtleSA9PiAgJHBhcmFtKSB7DQogICAgICAgIGlmIChzdGFydHN3aXRoKCRrZXksICdmaWx0ZXJfJykpIHsNCiAgICAgICAgICAgICRmaWx0ZXJfa2V5cyA9IGV4cGxvZGUoJ18nLCAka2V5KTsNCiAgICAgICAgICAgIGlmIChjb3VudCgkZmlsdGVyX2tleXMpID09IDMpIHsNCiAgICAgICAgICAgICAgICAkZmllbGRpZCA9ICRmaWx0ZXJfa2V5c1sxXTsNCiAgICAgICAgICAgICAgICAkZmlsdGVyID0gJGZpbHRlcl9rZXlzWzJdOw0KICAgICAgICAgICAgICAgICRmaWVsZHZhbCA9ICRwYXJhbTsNCiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGZpZWxkaWQpICYmIGlzc2V0KCRmaWVsZHZhbCkgICYmICRmaWVsZHZhbCE9IiIpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGludHZhbCgkZmllbGRpZCkgPiAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgZ2F0aGVyaW5nICcuJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkuJyB0aGF0IGhhdmUgYSBjZXJ0YWluIGZpZWxkIGlkLg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRmaWx0ZXIgPT0gJ251bGwnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIGEgY2FzZSB3aGVuIGEgZmllbGQgaXMgbm90IHNldCBmb3IgYSBwcm9kdWN0Lg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb3VudGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkam9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBGVkEnIC4gJGZpZWxkaWQgLiAnIE9OIGMuaXRlbV9pZCA9IEZWQScgLiAkZmllbGRpZCAuICcuaXRlbV9pZCBBTkQgRlZBJyAuICRmaWVsZGlkIC4gJy5maWVsZGRlZl9pZCA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJyhGVkEnIC4gJGZpZWxkaWQgLiAnLnZhbHVlIElTIE5VTEwpJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRwYXJhbWFycmF5LCAkZmllbGRpZCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kcGFyYW1hcnJheVtdID0gJGZpZWxkaWQ7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ25vdG51bGwnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIGEgY2FzZSB3aGVuIGEgZmllbGQgaXMgbm90IHNldCBmb3IgYSBwcm9kdWN0Lg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb3VudGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkam9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBGVkEnIC4gJGZpZWxkaWQgLiAnIE9OIGMuaXRlbV9pZCA9IEZWQScgLiAkZmllbGRpZCAuICcuaXRlbV9pZCBBTkQgRlZBJyAuICRmaWVsZGlkIC4gJy5maWVsZGRlZl9pZCA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJyhGVkEnIC4gJGZpZWxkaWQgLiAnLnZhbHVlICE9IFwnXCcpJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRwYXJhbWFycmF5LCAkZmllbGRpZCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ2luJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBhIGNhc2Ugd2hlbiBhIGZpZWxkIGlzIG5vdCBzZXQgZm9yIGEgcHJvZHVjdC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY291bnRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdGVkEnIC4gJGZpZWxkaWQgLiAnLnZhbHVlIElOICgnIC4gJGRiLT5xc3RyKCRmaWVsZHZhbCkgLiAnKSc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9ICRmaWVsZGlkOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdpbnNldCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgYSBjYXNlIHdoZW4gYSBmaWVsZCBpcyBub3Qgc2V0IGZvciBhIHByb2R1Y3QuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvdW50am9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBGVkEnIC4gJGZpZWxkaWQgLiAnIE9OIGMuaXRlbV9pZCA9IEZWQScgLiAkZmllbGRpZCAuICcuaXRlbV9pZCBBTkQgRlZBJyAuICRmaWVsZGlkIC4gJy5maWVsZGRlZl9pZCA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnIEZJTkRfSU5fU0VUKCcgLiAkZGItPnFzdHIoJGZpZWxkdmFsKSAuICcsICBGVkEnIC4gJGZpZWxkaWQgLiAnLnZhbHVlKSA+IDAnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHBhcmFtYXJyYXksICRmaWVsZGlkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnbGVzcycpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNfbnVtZXJpYygkZmllbGRpZCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGltaXQgcmVzdWx0cyB0byBhbGwgb2YgdGhlIGl0ZW1zIHRoYXQgaGF2ZSB0aGlzIGZpZWxkIHZhbHVlLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY291bnRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ0ZWQScgLiAkZmllbGRpZCAuICcudmFsdWUgPCA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcGFyYW1hcnJheSwgJGZpZWxkaWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJyBjLicgLiAkZmllbGRpZCAuICcgIDwgPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHBhcmFtYXJyYXlbXSA9ICRmaWVsZGlkOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSAkZmllbGR2YWw7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ2xlc3NlcXVhbCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsaW1pdCByZXN1bHRzIHRvIGFsbCBvZiB0aGUgaXRlbXMgdGhhdCBoYXZlIHRoaXMgZmllbGQgdmFsdWUuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvdW50am9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBGVkEnIC4gJGZpZWxkaWQgLiAnIE9OIGMuaXRlbV9pZCA9IEZWQScgLiAkZmllbGRpZCAuICcuaXRlbV9pZCBBTkQgRlZBJyAuICRmaWVsZGlkIC4gJy5maWVsZGRlZl9pZCA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnRlZBJyAuICRmaWVsZGlkIC4gJy52YWx1ZSA8ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHBhcmFtYXJyYXksICRmaWVsZGlkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRwYXJhbWFycmF5W10gPSAkZmllbGRpZDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gJGZpZWxkdmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdncmVhdGVyJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc19udW1lcmljKCRmaWVsZGlkKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsaW1pdCByZXN1bHRzIHRvIGFsbCBvZiB0aGUgaXRlbXMgdGhhdCBoYXZlIHRoaXMgZmllbGQgdmFsdWUuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb3VudGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnRlZBJyAuICRmaWVsZGlkIC4gJy52YWx1ZSA8ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRwYXJhbWFycmF5LCAkZmllbGRpZCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnIGMuJyAuICRmaWVsZGlkIC4gJyAgPiA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kcGFyYW1hcnJheVtdID0gJGZpZWxkaWQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9ICRmaWVsZHZhbDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnZ3JlYXRlcmVxdWFsJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpbWl0IHJlc3VsdHMgdG8gYWxsIG9mIHRoZSBpdGVtcyB0aGF0IGhhdmUgdGhpcyBmaWVsZCB2YWx1ZS4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY291bnRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2ZpZWxkdmFsIEZWQScgLiAkZmllbGRpZCAuICcgT04gYy5pdGVtX2lkID0gRlZBJyAuICRmaWVsZGlkIC4gJy5pdGVtX2lkIEFORCBGVkEnIC4gJGZpZWxkaWQgLiAnLmZpZWxkZGVmX2lkID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdGVkEnIC4gJGZpZWxkaWQgLiAnLnZhbHVlIDwgPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcGFyYW1hcnJheSwgJGZpZWxkaWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHBhcmFtYXJyYXlbXSA9ICRmaWVsZGlkOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSAkZmllbGR2YWw7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ2xpa2UnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGltaXQgcmVzdWx0cyB0byBhbGwgb2YgdGhlIGl0ZW1zIHRoYXQgaGF2ZSB0aGlzIGZpZWxkIHZhbHVlLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb3VudGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkam9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBGVkEnIC4gJGZpZWxkaWQgLiAnIE9OIGMuaXRlbV9pZCA9IEZWQScgLiAkZmllbGRpZCAuICcuaXRlbV9pZCBBTkQgRlZBJyAuICRmaWVsZGlkIC4gJy5maWVsZGRlZl9pZCA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ0ZWQScgLiAkZmllbGRpZCAuICcudmFsdWUgTElLRSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRwYXJhbWFycmF5LCAkZmllbGRpZCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9ICclJyAuICRmaWVsZHZhbCAuICclJzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnbm90ZXF1YWwnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGltaXQgcmVzdWx0cyB0byBhbGwgb2YgdGhlIGl0ZW1zIHRoYXQgaGF2ZSB0aGlzIGZpZWxkIHZhbHVlLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb3VudGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkam9pbnNbXSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBGVkEnIC4gJGZpZWxkaWQgLiAnIE9OIGMuaXRlbV9pZCA9IEZWQScgLiAkZmllbGRpZCAuICcuaXRlbV9pZCBBTkQgRlZBJyAuICRmaWVsZGlkIC4gJy5maWVsZGRlZl9pZCA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ0ZWQScgLiAkZmllbGRpZCAuICcudmFsdWUgIT0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcGFyYW1hcnJheSwgJGZpZWxkaWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJHBhcmFtYXJyYXlbXSA9ICRmaWVsZGlkOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSAkZmllbGR2YWw7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ2VxdWFsJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpbWl0IHJlc3VsdHMgdG8gYWxsIG9mIHRoZSBpdGVtcyB0aGF0IGhhdmUgdGhpcyBmaWVsZCB2YWx1ZS4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRjb3VudGpvaW5zLCBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgRlZBJyAuICRmaWVsZGlkIC4gJyBPTiBjLml0ZW1faWQgPSBGVkEnIC4gJGZpZWxkaWQgLiAnLml0ZW1faWQgQU5EIEZWQScgLiAkZmllbGRpZCAuICcuZmllbGRkZWZfaWQgPSA/Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkam9pbnMsIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19maWVsZHZhbCBGVkEnIC4gJGZpZWxkaWQgLiAnIE9OIGMuaXRlbV9pZCA9IEZWQScgLiAkZmllbGRpZCAuICcuaXRlbV9pZCBBTkQgRlZBJyAuICRmaWVsZGlkIC4gJy5maWVsZGRlZl9pZCA9ID8nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdGVkEnIC4gJGZpZWxkaWQgLiAnLnZhbHVlID0gPyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcGFyYW1hcnJheSwgJGZpZWxkaWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSAkZmllbGR2YWw7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmIChpc19zdHJpbmcoJGZpZWxkaWQpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkZmllbGRpZCA9IHN0cl9pcmVwbGFjZShhcnJheSgnSWQnLCAnRGF0ZUVuZCcsICdEYXRlJyksIGFycmF5KCdfaWQnLCAnX2RhdGVfZW5kJywgJ19kYXRlJyksICRmaWVsZGlkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZmlsdGVyID09ICdudWxsJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ2MuJyAuICRmaWVsZGlkIC4gJyBJUyBOVUxMKSc7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ25vdG51bGwnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnYy4nIC4gJGZpZWxkaWQgLiAnIElTIE5VTEwpJzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnaW4nKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0c3dpdGgoJGZpZWxkdmFsLCAnLCcpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmllbGR2YWwgPSBzdWJzdHIoJGZpZWxkdmFsLCAxKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdjLicgLiAkZmllbGRpZCAuICcgSU4gKCcgLiAkZmllbGR2YWwgLiAnKSc7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ2luc2V0Jykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydHN3aXRoKCRmaWVsZHZhbCwgJywnKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpZWxkdmFsID0gc3Vic3RyKCRmaWVsZHZhbCwgMSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnIEZJTkRfSU5fU0VUKCcgLiAkZGItPnFzdHIoJGZpZWxkdmFsKSAuICcsIGMuJyAuICRmaWVsZGlkIC4gJykgPiAwJzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnbGlrZScpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICcgYy4nIC4gJGZpZWxkaWQgLiAnICBMSUtFICIlJyAuICRmaWVsZGlkIC4gJyUiJzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGZpbHRlciA9PSAnbGVzcycpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdjLicgLiAkZmllbGRpZCAuICcgPCA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gJGZpZWxkdmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdsZXNzZXF1YWwnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnYy4nIC4gJGZpZWxkaWQgLiAnIDw9ICA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gJGZpZWxkdmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdncmVhdGVyJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ2MuJyAuICRmaWVsZGlkIC4gJyA+ICA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gJGZpZWxkdmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZmlsdGVyID09ICdncmVhdGVyZXF1YWwnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnYy4nIC4gJGZpZWxkaWQgLiAnID49ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSAkZmllbGR2YWw7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ2VxdWFsJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ2MuJyAuICRmaWVsZGlkIC4gJyA9ID8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSAkZmllbGR2YWw7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmaWx0ZXIgPT0gJ25vdGVxdWFsJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ2MuJyAuICRmaWVsZGlkIC4gJyAhPSA/JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gJGZpZWxkdmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQoNCiAgICAvLyByZWN1cg0KICAgIGlmIChpc3NldCgkcGFyYW1zWydpdGVtX2RhdGVfZnJvbV90byddKSkgew0KDQogICAgICAgIGlmICgkZGF0ZV9mcm9tICYmICRkYXRlX3RvKSB7DQoNCiAgICAgICAgICAgICRkYXlzID0gcm91bmQoKCRkYXRlX3RvIC0gJGRhdGVfZnJvbSkgLyAoMzYwMCAqIDI0KSk7DQoNCiAgICAgICAgICAgIGlmICgkZGF5cyA+IDYpIHsNCiAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICIoKGMuaXRlbV9kYXRlICA+ID8gQU5EIGMuaXRlbV9kYXRlICA8ID8gQU5EIChjLnJlY3Vyc2l2ZSA9ICcnIE9SIGMucmVjdXJzaXZlIElTIE5VTEwpKQ0KT1IgKGMucmVjdXJzaXZlID0gJ2RhaWx5JyApKSI7DQogICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZV9mcm9tKSwgIiciKTsNCiAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKCRkYXRlX3RvKSwgIiciKTsNCiAgICAgICAgICAgICAgICAkZmllbGRzW10gPSAiZS52YWx1ZSI7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICR3aGVyZVtdID0gIigoYy5pdGVtX2RhdGUgID4gPyBBTkQgYy5pdGVtX2RhdGUgIDwgPyBBTkQgKGMucmVjdXJzaXZlID0gJycgT1IgYy5yZWN1cnNpdmUgSVMgTlVMTCkpDQogICAgICAgICAgICAgICAgICBPUiAoYy5yZWN1cnNpdmUgPSAnZGFpbHknICANCkFORCAoKA0KDQpJRig/Pj8sDQpJRihlLnZhbHVlID49ID8gT1IgZSAudmFsdWUgPD0gPywxLDApDQosSUYoZS52YWx1ZSA+PSA/IEFORCBlIC52YWx1ZSA8PSA/LDEsMCkNCikgDQoNCkFORCBJRihlLnZhbHVlID0gPywgSUYoREFURV9GT1JNQVQoYy5pdGVtX2RhdGUsJyVIOiVpJykgPiA/LDEsMCksMSkgDQpBTkQgSUYoZS52YWx1ZSA9ID8sIElGKERBVEVfRk9STUFUKGMuaXRlbV9kYXRlLCclSDolaScpIDwgPywxLDApLDEpKQ0KKSAgICAgICAgICAgICAgICAgIA0KKSkiOw0KICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGVfZnJvbSksICInIik7DQogICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZV90byksICInIik7DQoNCiAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gZGF0ZSgndycsICRkYXRlX2Zyb20pOw0KICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSBkYXRlKCd3JywgJGRhdGVfdG8pOw0KICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSBkYXRlKCd3JywgJGRhdGVfZnJvbSk7DQogICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9IGRhdGUoJ3cnLCAkZGF0ZV90byk7DQogICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9IGRhdGUoJ3cnLCAkZGF0ZV9mcm9tKTsNCiAgICAgICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gZGF0ZSgndycsICRkYXRlX3RvKTsNCg0KICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSBkYXRlKCd3JywgJGRhdGVfZnJvbSk7DQogICAgICAgICAgICAgICAgJHBhcmFtYXJyYXlbXSA9IGRhdGUoJ0g6aScsICRkYXRlX2Zyb20pOw0KICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSBkYXRlKCd3JywgJGRhdGVfdG8pOw0KICAgICAgICAgICAgICAgICRwYXJhbWFycmF5W10gPSBkYXRlKCdIOmknLCAkZGF0ZV90byk7DQogICAgICAgICAgICB9DQoNCg0KICAgICAgICAgICAgJGpvaW5zW10gPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfaXRlbV9leHRyYSBlIE9OIGUuaXRlbV9pZCA9IGMuaXRlbV9pZCc7DQogICAgICAgICAgICAkY291bnRqb2luc1tdID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW1fZXh0cmEgZSBPTiBlLml0ZW1faWQgPSBjLml0ZW1faWQnOw0KDQogICAgICAgICAgICAvLyRmaWVsZHNbXSA9ICJJRihjLnJlY3Vyc2l2ZSA9ICcnIE9SIGMucmVjdXJzaXZlIElTIE5VTEwsIGRhdGVfZm9ybWF0KGMuaXRlbV9kYXRlLCAnJVktJW0tJWQgJUg6JWknKSwgQ09OQ0FUKGRhdGVfZm9ybWF0KE5PVygpICsgSU5URVJWQUwgKGUudmFsdWUtPykgREFZLCAnJVktJW0tJWQnKSwnICcsZGF0ZV9mb3JtYXQoYy5pdGVtX2RhdGUsJyVIOiVpJykpKSBBUyBkYXRlX291dCwgZS52YWx1ZSI7DQogICAgICAgICAgICAvL2FycmF5X3Vuc2hpZnQoJHBhcmFtYXJyYXksIGRhdGUoJ3cnLCB0aW1lKCkpKTsNCiAgICAgICAgICAgICRmaWVsZHNbXSA9ICJlLnZhbHVlLENPTkNBVChkYXRlX2Zvcm1hdCg/ICsgSU5URVJWQUwgSUYoZS52YWx1ZSA8ID8sICg3LT8pICsgZS52YWx1ZSwgZS52YWx1ZS0/KSBEQVksJyVZLSVtLSVkJyksJyAnLGRhdGVfZm9ybWF0KGMuaXRlbV9kYXRlLCclSDolaScpKSBhcyBkYXRlX291dCI7DQoNCiAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHBhcmFtYXJyYXksIGRhdGUoJ3cnLCAkZGF0ZV9mcm9tKSk7DQogICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRwYXJhbWFycmF5LCBkYXRlKCd3JywgJGRhdGVfZnJvbSkpOw0KICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcGFyYW1hcnJheSwgZGF0ZSgndycsICRkYXRlX2Zyb20pKTsNCiAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHBhcmFtYXJyYXksIHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZV9mcm9tKSwgIiciKSk7DQoNCiAgICAgICAgICAgIC8qICR3aGVyZTJbXSA9ICdkYXRlX291dCAgPiA/IEFORCBkYXRlX291dCA8ID8nOw0KICAgICAgICAgICAgICAkcGFyYW1hcnJheTJbXSA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZV9mcm9tKSwgIiciKTsNCiAgICAgICAgICAgICAgJHBhcmFtYXJyYXkyW10gPSB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGVfdG8pLCAiJyIpOyAqLw0KDQogICAgICAgICAgICAkc29ydGJ5ID0gJ2RhdGVfb3V0JzsNCiAgICAgICAgfQ0KICAgICAgICAkZ3JvdXBieSA9ICcgR1JPVVAgQlkgYy5hY3RpdmUgJzsNCiAgICB9IGVsc2Ugew0KDQogICAgICAgIGlmICgkZGF0ZV9mcm9tKSB7DQogICAgICAgICAgICAkd2hlcmVbXSA9ICIgYy5pdGVtX2RhdGUgID4gPyI7DQogICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKCRkYXRlX2Zyb20pLCAiJyIpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCRkYXRlX3RvKSB7DQogICAgICAgICAgICAkd2hlcmVbXSA9ICIgYy5pdGVtX2RhdGUgIDwgPyI7DQogICAgICAgICAgICAkcGFyYW1hcnJheVtdID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKCRkYXRlX3RvKSwgIiciKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KDQogICAgaWYgKGlzU2V0KCRwYXJhbXNbImRhdGVfc3RhcnQiXSkpIHsNCg0KICAgICAgICAkd2hlcmVbXSA9ICIgYy5pdGVtX2RhdGUgPCBOT1coKSI7DQogICAgfQ0KDQogICAgaWYgKGlzU2V0KCRwYXJhbXNbImRhdGVfZW5kIl0pKSB7DQogICAgICAgICR3aGVyZVtdID0gIiBjLml0ZW1fZGF0ZV9lbmQgPiBOT1coKSI7DQogICAgfQ0KDQoNCiAgICAkcXVlcnkgPSBzdHJfcmVwbGFjZSgnPEZJRUxEUz4nLCBpbXBsb2RlKCcsJywgJGZpZWxkcyksICRxdWVyeSk7DQogICAgJHF1ZXJ5MiA9IHN0cl9yZXBsYWNlKCc8RklFTERTPicsIGltcGxvZGUoJywnLCAkZmllbGRzKSwgJHF1ZXJ5Mik7DQoNCiAgICBpZiAoY291bnQoJGpvaW5zKSkgew0KICAgICAgICAkcXVlcnkgLj0gJyBMRUZUIEpPSU4gJyAuIGltcGxvZGUoJyBMRUZUIEpPSU4gJywgJGpvaW5zKTsNCiAgICB9DQogICAgaWYgKGNvdW50KCRjb3VudGpvaW5zKSkgew0KICAgICAgICAkcXVlcnkyIC49ICcgTEVGVCBKT0lOICcgLiBpbXBsb2RlKCcgTEVGVCBKT0lOICcsICRjb3VudGpvaW5zKTsNCiAgICB9DQogICAgJHF1ZXJ5ID0gJHF1ZXJ5IC4gJyBXSEVSRSAnIC4gaW1wbG9kZSgnIEFORCAnLCAkd2hlcmUpOw0KICAgICRxdWVyeTIgPSAkcXVlcnkyIC4gJyBXSEVSRSAnIC4gaW1wbG9kZSgnIEFORCAnLCAkd2hlcmUpOw0KDQogICAgaWYgKCFlbXB0eSgkd2hlcmUyKSkgew0KICAgICAgICAkcXVlcnkgPSAnIFNFTEVDVCAqIEZST00gKCcgLiAkcXVlcnkgLiAnKSB0JzsNCiAgICAgICAgJHF1ZXJ5MiA9ICcgU0VMRUNUICogRlJPTSAoJyAuICRxdWVyeSAuICcpIHQnOw0KICAgICAgICAkcXVlcnkgPSAkcXVlcnkgLiAnIFdIRVJFICcgLiBpbXBsb2RlKCcgQU5EICcsICR3aGVyZTIpOw0KICAgICAgICAkcXVlcnkyID0gJHF1ZXJ5MiAuICcgV0hFUkUgJyAuIGltcGxvZGUoJyBBTkQgJywgJHdoZXJlMik7DQogICAgfQ0KICAgIA0KICAgICRwYXJhbWFycmF5ID0gYXJyYXlfbWVyZ2UoJHBhcmFtYXJyYXksICRwYXJhbWFycmF5Mik7DQogICAgDQogICAgDQogICAgDQoNCiAgICBpZiAoJHNvcnR0eXBlID09ICcnKSB7DQogICAgICAgICRxdWVyeSAuPSAiIE9SREVSIEJZICIgLiAkc29ydGJ5IC4gIiAiIC4gJHNvcnRvcmRlcjsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkcXVlcnkgLj0gJyBPUkRFUiBCWSBDQVNUKCcgLiAkc29ydGJ5IC4gJyBBUyAnIC4gJHNvcnR0eXBlIC4gJykgJyAuICRzb3J0b3JkZXI7DQogICAgfQ0KDQoNCi8vIEV4ZWN1dGUgdGhlIFF1ZXJpZXMNCiAgICAkdG1wX2lkID0gJ2MnIC4gbWQ1KCRtb2QtPkdldE5hbWUoKSAuICRxdWVyeTIgLiBzZXJpYWxpemUoJHBhcmFtcykgLiBzZXJpYWxpemUoJHBhcmFtYXJyYXkpIC4gJHJldHVybmlkKTsNCiAgICAkY291bnQgPSBjbXNfdXRpbHM6OmdldF9hcHBfZGF0YSgkdG1wX2lkKTsNCiAgICBpZiAoISRjb3VudCkgew0KICAgICAgICBpZiAoJGdyb3VwYnkpDQogICAgICAgICAgICAkcXVlcnkyIC49ICRncm91cGJ5Ow0KICAgICAgICAkY291bnQgPSAkZGItPkdldE9uZSgkcXVlcnkyLCAkcGFyYW1hcnJheSk7DQogICAgICAgIC8vIHJldHVybiBmaXJzdCByb3cNCiAgICAgICAgaWYgKGlzU2V0KCRwYXJhbXNbIm9uZWNvdW50Il0pKSB7DQogICAgICAgICAgICAkc21hcnR5LT5hc3NpZ24oJHBhcmFtc1sib25lY291bnQiXSwgJGNvdW50KTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAgICAgIGNtc191dGlsczo6c2V0X2FwcF9kYXRhKCR0bXBfaWQsICRjb3VudCk7DQogICAgfQ0KDQogICAgLy8kdG1wX2lkID0gbWQ1KCRtb2QtPkdldE5hbWUoKSAuIG1kNSgkcXVlcnkpIC4gaW1wbG9kZSgnXycsICRwYXJhbWFycmF5KSAuIGltcGxvZGUoJ18nLCAkcGFyYW1zKSAuICRsaW1pdCAuICRzdGFydGVsZW1lbnQgLiAncmVzdWx0cycpOw0KICAgICR0bXBfaWQgPSAnbScgLiBtZDUoJG1vZC0+R2V0TmFtZSgpIC4gJHF1ZXJ5IC4gc2VyaWFsaXplKCRwYXJhbXMpIC4gc2VyaWFsaXplKCRwYXJhbWFycmF5KSAuICRyZXR1cm5pZCk7DQogICAgJGRicmVzdWx0ID0gY21zX3V0aWxzOjpnZXRfYXBwX2RhdGEoJHRtcF9pZCk7DQogICAgaWYgKCEkZGJyZXN1bHQpIHsNCiAgICAgICAgJHBhcmFtYXJyYXkgPSBhcnJheV9tZXJnZSgkcGFyYW1hcnJheXRtcCwgJHBhcmFtYXJyYXkpOw0KICAgICAgICAkcXVlcnkgLj0gJyBMSU1JVCAnIC4gJHN0YXJ0ZWxlbWVudCAuICcsJyAuICRsaW1pdDsNCiAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5HZXRBbGwoJHF1ZXJ5LCAkcGFyYW1hcnJheSk7DQogICAgICAgIGNtc191dGlsczo6c2V0X2FwcF9kYXRhKCR0bXBfaWQsICRkYnJlc3VsdCk7DQogICAgfQ0KfQ0KDQovLyBEZXRlcm1pbmUgdGhlIG51bWJlciBvZiBwYWdlcw0KJG5wYWdlcyA9IGludHZhbCgkY291bnQgLyAkbGltaXQpOw0KaWYgKCRjb3VudCAlICRsaW1pdCAhPSAwKQ0KICAgICRucGFnZXMrKzsNCg0KJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KZm9yZWFjaCAoJGRicmVzdWx0IGFzICRyb3cpIHsNCiAgICAkb25lcm93ID0gY2dlX2FycmF5Ojp0b19vYmplY3QoJHJvdyk7DQoNCiAgICBpZiAoZW1wdHkoJHJvd1sidXJsIl0pID09IGZhbHNlKSB7DQogICAgICAgICRwcmV0dHl1cmwgPSAkcm93WyJ1cmwiXTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkcHJldHR5dXJsID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfcHJldHR5X3VybCgkdGhpcywgZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfcHJlZml4KCRtb2QpLCAkcm93WydpdGVtX2lkJ10sICRyb3dbJ2FsaWFzJ10sICgkZGVmYXVsdF9kZXRhaWxwYWdlID09IC0xICYmICFpc1NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pID8gJGRldGFpbHBhZ2UgOiAoaXNTZXQoJHBhcmFtc1siZGV0YWlscGFnZSJdKSA/ICRkZXRhaWxwYWdlIDogJycgKSksICRkZXRhaWx0ZW1wbGF0ZSk7DQogICAgfQ0KDQogICAgJG9uZXJvdy0+dXJsID0gJG9uZXJvdy0+bGluayA9ICRtb2QtPkNyZWF0ZUZyb250ZW5kTGluaygkaWQsICRyZXR1cm5pZCwgJ2RldGFpbCcsICcnLCBhcnJheSgnaXRlbV9pZCcgPT4gJHJvd1snaXRlbV9pZCddLCAnZGV0YWlsdGVtcGxhdGUnID0+ICRkZXRhaWx0ZW1wbGF0ZSksICcnLCB0cnVlLCAkaW5saW5lLCAnJywgZmFsc2UsICRwcmV0dHl1cmwpOw0KICAgICRvbmVyb3ctPmZpbGVfbG9jYXRpb24gPSBnZW5lcmF0b3JfdG9vbHM6OmZpbGVfbG9jYXRpb24oJHRoaXMsICRyb3cpOw0KDQogICAgLy8gYWRkIGN1c3RvbSBmaWVsZHMNCiAgICAkZmllbGRkZWZzID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfY29zdHVtX2ZpZWxkX2RlZigkdGhpcywgJHJvd1snaXRlbV9pZCddLCB0cnVlKTsNCiAgICAkZmllbGRzID0gYXJyYXkoKTsNCiAgICBmb3JlYWNoICgkZmllbGRkZWZzIGFzICRvbmVkZWYpIHsNCiAgICAgICAgaWYgKGVtcHR5KCRvbmVkZWZbImFsaWFzIl0pID09IGZhbHNlICYmIGluX2FycmF5KCRvbmVkZWZbImFsaWFzIl0sIGdlbmVyYXRvcl90b29sczo6JGZpZWxkc19ibG9ja2xpc3QpID09IGZhbHNlKSB7DQogICAgICAgICAgICAkb25lcm93LT4kb25lZGVmWyJhbGlhcyJdID0gJG9uZWRlZlsidmFsdWUiXTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICAkb25lcm93LT5maWVsZHMgPSAkZmllbGRkZWZzOw0KICAgICRlbnRyeWFycmF5W10gPSAkb25lcm93Ow0KICAgICRpdGVtc2FycmF5W10gPSAkcm93Ow0KfQ0KDQoNCg0KLy8gcmV0dXJuIGZpcnN0IHJvdw0KaWYgKGlzU2V0KCRwYXJhbXNbIm9uZXJvdyJdKSkgew0KICAgICRzbWFydHktPmFzc2lnbigkcGFyYW1zWyJvbmVyb3ciXSwgKGlzc2V0KCRlbnRyeWFycmF5WzBdKSA/ICRlbnRyeWFycmF5WzBdIDogJycpKTsNCiAgICByZXR1cm47DQp9DQoNCi8vcmV0dXJuICBhbGwgcmVzdWx0cw0KaWYgKGlzU2V0KCRwYXJhbXNbImFsbHJvdyJdKSkgew0KICAgICRzbWFydHktPmFzc2lnbigkcGFyYW1zWyJhbGxyb3ciXSwgJGVudHJ5YXJyYXkpOw0KICAgIHJldHVybjsNCn0NCg0KLy8gcmV0dXJuIGl0ZW1zIGZvciBtb2R1bGUNCmlmIChpc1NldCgkcGFyYW1zWyJpdGVtcyJdKSAmJiAkcGFyYW1zWyJpdGVtcyJdID09IHRydWUpIHsNCiAgICBnZW5lcmF0b3JfdG9vbHM6OiRpdGVtcyA9ICRpdGVtc2FycmF5Ow0KICAgIHJldHVybjsNCn0NCg0KLy8NCi8vIEdpdmUgZXZlcnl0aGluZyB0byBzbWFydHkNCi8vDQoNCmZvcmVhY2ggKCRwYXJhbXMgYXMgJGtleSA9PiAkdmFsdWUpIHsNCiAgICBpZiAoJGtleSA9PSAnbWFjdCcgfHwgJGtleSA9PSAnYWN0aW9uJykNCiAgICAgICAgY29udGludWU7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdwYXJhbV8nIC4gJGtleSwgJHZhbHVlKTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCdtb2R1bGV1cmwnLCAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHQnLCAkcmV0dXJuaWQsICd0ZXN0JywgJHBhcmFtcywgJycsIHRydWUpKTsNCiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkZW50cnlhcnJheSk7DQokc21hcnR5LT5hc3NpZ24oJ3RvdGFsY291bnQnLCAkY291bnQpOw0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkZW50cnlhcnJheSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdwYWdldGV4dCcsIGdlbmVyYXRvcigpLT5MYW5nKCdwYWdlJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdvZnRleHQnLCBnZW5lcmF0b3IoKS0+TGFuZygnb2YnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3BhZ2Vjb3VudCcsICRucGFnZXMpOw0KJHNtYXJ0eS0+YXNzaWduKCdjdXJwYWdlJywgJHBhZ2UpOw0KDQppZiAoJHBhZ2UgPT0gMSkgew0KICAgICRzbWFydHktPmFzc2lnbignZmlyc3RsaW5rJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpcnN0cGFnZScpKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ3ByZXZsaW5rJywgZ2VuZXJhdG9yKCktPkxhbmcoJ3ByZXZwYWdlJykpOw0KfSBlbHNlIHsNCiAgICAkcGFybXMgPSAkcGFyYW1zOw0KICAgICRwYXJtc1sncGFnZSddID0gMTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2ZpcnN0bGluaycsICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnZGVmYXVsdCcsICRyZXR1cm5pZCwgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpcnN0cGFnZScpLCAkcGFybXMpKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2ZpcnN0dXJsJywgJG1vZC0+Q3JlYXRlTGluaygkaWQsICdkZWZhdWx0JywgJHJldHVybmlkLCBnZW5lcmF0b3IoKS0+TGFuZygnZmlyc3RwYWdlJyksICRwYXJtcywgJycsIHRydWUpKTsNCiAgICAkcGFybXNbJ3BhZ2UnXSA9ICRwYWdlIC0gMTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ3ByZXZsaW5rJywgJG1vZC0+Q3JlYXRlTGluaygkaWQsICdkZWZhdWx0JywgJHJldHVybmlkLCBnZW5lcmF0b3IoKS0+TGFuZygncHJldnBhZ2UnKSwgJHBhcm1zKSk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdwcmV2dXJsJywgJG1vZC0+Q3JlYXRlTGluaygkaWQsICdkZWZhdWx0JywgJHJldHVybmlkLCBnZW5lcmF0b3IoKS0+TGFuZygncHJldnBhZ2UnKSwgJHBhcm1zLCAnJywgdHJ1ZSkpOw0KfQ0KaWYgKCRwYWdlID09ICRucGFnZXMpIHsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2xhc3RsaW5rJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2xhc3RwYWdlJykpOw0KICAgICRzbWFydHktPmFzc2lnbignbmV4dGxpbmsnLCBnZW5lcmF0b3IoKS0+TGFuZygnbmV4dHBhZ2UnKSk7DQp9IGVsc2Ugew0KICAgICRwYXJtcyA9ICRwYXJhbXM7DQogICAgJHBhcm1zWydwYWdlJ10gPSAkbnBhZ2VzOw0KICAgICRzbWFydHktPmFzc2lnbignbGFzdGxpbmsnLCAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHQnLCAkcmV0dXJuaWQsIGdlbmVyYXRvcigpLT5MYW5nKCdsYXN0cGFnZScpLCAkcGFybXMpKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2xhc3R1cmwnLCAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHQnLCAkcmV0dXJuaWQsIGdlbmVyYXRvcigpLT5MYW5nKCdsYXN0cGFnZScpLCAkcGFybXMsICcnLCB0cnVlKSk7DQogICAgJHBhcm1zWydwYWdlJ10gPSAkcGFnZSArIDE7DQogICAgJHNtYXJ0eS0+YXNzaWduKCduZXh0bGluaycsICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnZGVmYXVsdCcsICRyZXR1cm5pZCwgZ2VuZXJhdG9yKCktPkxhbmcoJ25leHRwYWdlJyksICRwYXJtcykpOw0KICAgICRzbWFydHktPmFzc2lnbignbmV4dHVybCcsICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnZGVmYXVsdCcsICRyZXR1cm5pZCwgZ2VuZXJhdG9yKCktPkxhbmcoJ25leHRwYWdlJyksICRwYXJtcywgJycsIHRydWUpKTsNCn0NCg0KLy8NCi8vIFByb2Nlc3MgdGhlIHRlbXBsYXRlDQovLw0KDQplY2hvICRtb2QtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkdGhldGVtcGxhdGUpOw0KDQojDQojIEVPRg0KIw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9pdGVtJykpDQogICAgcmV0dXJuOw0KLy8gdG9wIG5hdg0KaWYgKCRtb2QtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpKSB7DQoNCiAgICBlY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciIHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsgZmxvYXQ6cmlnaHQ7IHdpZHRoOiA0MCU7Ij4nOw0KICAgIGVjaG8gJG1vZC0+Q3JlYXRlSW1hZ2VMaW5rKCRpZCwgJ2FkbWluX3RlbXBsYXRlcycsICRyZXR1cm5pZCwgZ2VuZXJhdG9yKCktPkxhbmcoJ3RlbXBsYXRlcycpLCAnaWNvbnMvdG9wZmlsZXMvdGVtcGxhdGUuZ2lmJywgYXJyYXkoKSwgJycsICcnLCBmYWxzZSk7DQogICAgZWNobyAnPC9kaXY+JzsNCn0NCg0KJG1vZHVsZSA9IGdlbmVyYXRvcl9vcHRzOjpnZXRfbW9kdWxlKCRtb2QtPkdldE5hbWUoKSk7DQokYXR0YWNoID0gZ2VuZXJhdG9yX29wdHM6OmdldF9hdHRhY2hfbW9kdWxlcygkbW9kdWxlWyJhdHRhY2giXSk7DQppZiAoJGF0dGFjaCkgew0KICAgICRhdHRhY2htb2R1bGVzID0gZXhwbG9kZSgnLCcsICRhdHRhY2gpOw0KICAgIGVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyIgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyBmbG9hdDpsZWZ0OyB3aWR0aDogNTAlOyI+JzsNCiAgICBmb3JlYWNoICgkYXR0YWNobW9kdWxlcyBhcyAkYXR0YWNobW9kdWxlKSB7DQogICAgICAgICRtb2R1bGUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUodHJpbSgkYXR0YWNobW9kdWxlKSk7DQogICAgICAgIGlmICgkbW9kdWxlKSB7DQogICAgICAgICAgICBlY2hvICRtb2R1bGUtPkNyZWF0ZUltYWdlTGluaygkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2ZyaWVuZGx5bmFtZScpLCAnaWNvbnMvdG9wZmlsZXMvc2hvcnRjdXQuZ2lmJywgYXJyYXkoKSwgJycsICcnLCBmYWxzZSk7DQogICAgICAgIH0NCiAgICB9DQogICAgZWNobyAnPC9kaXY+JzsNCn0NCg0KDQplY2hvICc8YnIgc3R5bGU9ImNsZWFyOmJvdGgiIC8+JzsNCg0KDQppZiAoaXNzZXQoJHBhcmFtc1snbWVzc2FnZSddKSkgew0KICAgIGVjaG8gJG1vZC0+U2hvd01lc3NhZ2UoZ2VuZXJhdG9yKCktPkxhbmcoJHBhcmFtc1snbWVzc2FnZSddKSk7DQp9DQoNCmlmIChpc3NldCgkcGFyYW1zWydlcnJvcnMnXSkgJiYgY291bnQoJHBhcmFtc1snZXJyb3JzJ10pKSB7DQogICAgZWNobyAkbW9kLT5TaG93RXJyb3JzKCRwYXJhbXNbJ2Vycm9ycyddKTsNCn0NCg0KDQplY2hvICRtb2QtPlN0YXJ0VGFiSGVhZGVycygpOw0KZWNobyAkbW9kLT5TZXRUYWJIZWFkZXIoJ2l0ZW10YWInLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3BsdXJhbCcsICcnKSk7DQoNCmlmICgkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9jYXRlZ29yaWVzJykpIHsNCiAgICBlY2hvICRtb2QtPlNldFRhYkhlYWRlcignY2F0ZWdvcnl0YWInLCBnZW5lcmF0b3IoKS0+TGFuZygnY2F0ZWdvcmllcycpKTsNCn0NCg0KaWYgKCRtb2QtPkNoZWNrUGVybWlzc2lvbigkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfbW9kaWZ5X29wdGlvbicpKSB7DQogICAgZWNobyAkbW9kLT5TZXRUYWJIZWFkZXIoJ2ZpZWxkZGVmdGFiJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2ZpZWxkZGVmcycpKTsNCiAgICBlY2hvICRtb2QtPlNldFRhYkhlYWRlcignb3B0aW9udGFiJywgZ2VuZXJhdG9yKCktPkxhbmcoJ29wdGlvbnMnKSk7DQp9DQoNCmVjaG8gJG1vZC0+RW5kVGFiSGVhZGVycygpOw0KZWNobyAkbW9kLT5TdGFydFRhYkNvbnRlbnQoKTsNCg0KZWNobyAkbW9kLT5TdGFydFRhYignaXRlbXRhYicsICRwYXJhbXMpOw0KaW5jbHVkZSBkaXJuYW1lKF9fRklMRV9fKSAuICcvZnVuY3Rpb24uYWRtaW5faXRlbXRhYi5waHAnOw0KZWNobyAkbW9kLT5FbmRUYWIoKTsNCg0KaWYgKCRtb2QtPkNoZWNrUGVybWlzc2lvbigkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfbW9kaWZ5X2NhdGVnb3JpZXMnKSkgew0KICAgIGVjaG8gJG1vZC0+U3RhcnRUYWIoJ2NhdGVnb3J5dGFiJywgJHBhcmFtcyk7DQogICAgaW5jbHVkZSBkaXJuYW1lKF9fRklMRV9fKSAuICcvZnVuY3Rpb24uYWRtaW5fY2F0ZWdvcnl0YWIucGhwJzsNCiAgICBlY2hvICRtb2QtPkVuZFRhYigpOw0KfQ0KDQppZiAoJG1vZC0+Q2hlY2tQZXJtaXNzaW9uKCRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19tb2RpZnlfb3B0aW9uJykpIHsNCiAgICBlY2hvICRtb2QtPlN0YXJ0VGFiKCdmaWVsZGRlZnRhYicsICRwYXJhbXMpOw0KICAgIGluY2x1ZGUgZGlybmFtZShfX0ZJTEVfXykgLiAnL2Z1bmN0aW9uLmFkbWluX2ZpZWxkZGVmdGFiLnBocCc7DQogICAgZWNobyAkbW9kLT5FbmRUYWIoKTsNCg0KICAgIGVjaG8gJG1vZC0+U3RhcnRUYWIoJ29wdGlvbnRhYicsICRwYXJhbXMpOw0KICAgIGluY2x1ZGUgZGlybmFtZShfX0ZJTEVfXykgLiAnL2Z1bmN0aW9uLmFkbWluX29wdGlvbnRhYi5waHAnOw0KICAgIGVjaG8gJG1vZC0+RW5kVGFiKCk7DQp9DQoNCmVjaG8gJG1vZC0+RW5kVGFiQ29udGVudCgpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/action.detail.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiRpdGVtID0gJyc7DQokZGVmYXVsdF9kZXRhaWxwYWdlID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kZXRhaWxfcmV0dXJuaWQnLCAnJyk7DQokZGV0YWlscGFnZSA9ICRkZWZhdWx0X2RldGFpbHBhZ2U7DQppZighaXNTZXQoJHBhcmFtc1siZGV0YWlscGFnZSJdKSAmJiBpc1NldCgkcGFyYW1zWyJyZXR1cm5pZCJdKSkgJHBhcmFtc1siZGV0YWlscGFnZSJdID0gJHBhcmFtc1sicmV0dXJuaWQiXTsNCiRkZXRhaWxwYWdlID0gZXh0ZW5kZWRfdG9vbHNfb3B0czo6ZGV0YWlscGFnZSgkcGFyYW1zLCAkZGV0YWlscGFnZSk7DQppZigkZGV0YWlscGFnZSA9PSAkZGVmYXVsdF9kZXRhaWxwYWdlKSB1bnNldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pOw0KDQokaW5saW5lID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZGlzcGxheV9pbmxpbmUnLCBmYWxzZSk7DQoNCmlmIChpc3NldCgkcGFyYW1zWydpbmxpbmUnXSkpIHsNCiAgICAkaW5saW5lID0gJHBhcmFtc1snaW5saW5lJ107DQp9DQoNCi8vIFNFTEVDVCBGUk9NDQokcXVlcnkgPSAnU0VMRUNUIEEuKiwgQi5jYXRlZ29yeV9pZCwgQi5jYXRlZ29yeV9uYW1lLCBCLmNhdGVnb3J5X2FsaWFzLCBCLmV4dHJhIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtIEEnOw0KDQovLyBMRUZUIEpPSU4NCiRxdWVyeSAuPSAnIExFRlQgSk9JTiAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2NhdGVnb3JpZXMgQiBPTiBBLmNhdGVnb3J5X2lkID0gQi5jYXRlZ29yeV9pZCc7DQoNCi8vIFdIRVJFDQokcXVlcnkgLj0gJyBXSEVSRSBBLmFjdGl2ZSA9IDEgQU5EIGl0ZW1faWQgPSA/IExJTUlUIDEnOw0KDQokdG1wX2lkID0gJ2QnIC4gbWQ1KCRtb2QtPkdldE5hbWUoKSAuICRxdWVyeSAuIHNlcmlhbGl6ZSgkcGFyYW1zKSAuIHNlcmlhbGl6ZSgkcGFyYW1hcnJheSkgLiAkcmV0dXJuaWQpOw0KJHJvdyA9IGNtc191dGlsczo6Z2V0X2FwcF9kYXRhKCR0bXBfaWQpOw0KaWYgKCEkcm93KSB7DQogICAgJHJvdyA9ICRkYi0+R2V0Um93KCRxdWVyeSwgYXJyYXkoJHBhcmFtc1snaXRlbV9pZCddKSk7DQogICAgY21zX3V0aWxzOjpzZXRfYXBwX2RhdGEoJHRtcF9pZCwgJHJvdyk7DQp9DQppZiAoISRyb3cpIHsNCiAgICBpZiAoaXNTZXQoJHBhcmFtc1sib25lcm93Il0pKSB7DQogICAgICAgICRzbWFydHktPmFzc2lnbigkcGFyYW1zWyJvbmVyb3ciXSwgJycpOw0KICAgIH0NCiAgICByZXR1cm47DQp9DQoNCg0KJGl0ZW0gPSBjZ2VfYXJyYXk6OnRvX29iamVjdCgkcm93KTsNCiRpdGVtLT5maWxlX2xvY2F0aW9uID0gZ2VuZXJhdG9yX3Rvb2xzOjpmaWxlX2xvY2F0aW9uKCRtb2QsICRyb3cpOw0KLyogJGl0ZW0tPml0ZW1faWQgPSAkcm93WydpdGVtX2lkJ107DQogICRpdGVtLT50aXRsZSA9ICRyb3dbJ3RpdGxlJ107DQogICRpdGVtLT5jYXRlZ29yeV9uYW1lID0gJHJvd1snY2F0ZWdvcnlfbmFtZSddOw0KICAkaXRlbS0+Y2F0ZWdvcnlfYWxpYXMgPSAkcm93WydjYXRlZ29yeV9hbGlhcyddOyAqLw0KDQovLyBhZGQgY3VzdG9tIGZpZWxkcw0KDQokdG1wX2lkMiAuPSAkdG1wX2lkIC4gJ2QnIC4gJHJvd1snaXRlbV9pZCddOw0KJGZpZWxkZGVmcyA9IGNtc191dGlsczo6Z2V0X2FwcF9kYXRhKCR0bXBfaWQyKTsNCmlmICghJGZpZWxkZGVmcykgew0KICAgICRmaWVsZGRlZnMgPSAkbW9kLT5HZXRDb3N0dW1GaWVsZERlZnMoJHJvd1snaXRlbV9pZCddKTsNCiAgICBjbXNfdXRpbHM6OnNldF9hcHBfZGF0YSgkdG1wX2lkMiwgJGZpZWxkZGVmcyk7DQp9DQokZmllbGRzID0gYXJyYXkoKTsNCmZvcmVhY2ggKCRmaWVsZGRlZnMgYXMgJG9uZWRlZikgew0KICAgIGlmIChlbXB0eSgkb25lZGVmWyJhbGlhcyJdKSA9PSBmYWxzZSAmJiBpbl9hcnJheSgkb25lZGVmWyJhbGlhcyJdLCBnZW5lcmF0b3JfdG9vbHM6OiRmaWVsZHNfYmxvY2tsaXN0KSA9PSBmYWxzZSkgew0KICAgICAgICAkaXRlbS0+JG9uZWRlZlsiYWxpYXMiXSA9ICRvbmVkZWZbInZhbHVlIl07DQogICAgfQ0KfQ0KDQokaXRlbS0+ZmllbGRzID0gJGZpZWxkZGVmczsNCg0KaWYgKGVtcHR5KCRyb3dbInVybCJdKSA9PSBmYWxzZSkgew0KICAgICRwcmV0dHl1cmwgPSAkcm93WyJ1cmwiXTsNCn0gZWxzZSB7DQogICAgJHByZXR0eXVybCA9IGdlbmVyYXRvcl90b29sczo6Z2V0X3ByZXR0eV91cmwoJHRoaXMsIGdlbmVyYXRvcl90b29sczo6Z2V0X3ByZWZpeCgkbW9kKSwgJHJvd1snaXRlbV9pZCddLCAkcm93WydhbGlhcyddLCAoJGRlZmF1bHRfZGV0YWlscGFnZSA9PSAtMSAmJiAhaXNTZXQoJHBhcmFtc1siZGV0YWlscGFnZSJdKSA/ICRkZXRhaWxwYWdlIDogKGlzU2V0KCRwYXJhbXNbImRldGFpbHBhZ2UiXSkgPyAkZGV0YWlscGFnZSA6ICcnICkpLCAkZGV0YWlsdGVtcGxhdGUpOw0KfQ0KDQoNCiRpdGVtLT51cmwgPSAkaXRlbS0+bGluayA9ICRtb2QtPkNyZWF0ZUZyb250ZW5kTGluaygkaWQsICRyZXR1cm5pZCwgJ2RldGFpbCcsICcnLCBhcnJheSgnaXRlbV9pZCcgPT4gJHJvd1snaXRlbV9pZCddLCAnZGV0YWlsdGVtcGxhdGUnID0+ICRkZXRhaWx0ZW1wbGF0ZSksICcnLCB0cnVlLCAkaW5saW5lLCAnJywgZmFsc2UsICRwcmV0dHl1cmwpOw0KDQokcHJldHR5dXJsID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfcHJldHR5X3VybCgkdGhpcywgZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfcHJlZml4KCRtb2QpIC4gJy9jJywgJHJvd1snY2F0ZWdvcnlfaWQnXSwgJHJvd1snY2F0ZWdvcnlfYWxpYXMnXSwgKCRkZWZhdWx0X2RldGFpbHBhZ2UgPT0gLTEgJiYgIWlzU2V0KCRwYXJhbXNbImRldGFpbHBhZ2UiXSkgPyAkZGV0YWlscGFnZSA6ICcnKSwgJGNhdGVnb3J5dGVtcGxhdGUpOw0KJGl0ZW0tPmNhdGVnb3J5X2xpbmsgPSAkaXRlbS0+Y2F0ZWdvcnlfdXJsID0gJG1vZC0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwgJHJldHVybmlkLCAnZGVmYXVsdCcsICcnLCBhcnJheSgnY2F0ZWdvcnlfaWQnID0+ICRyb3dbJ2NhdGVnb3J5X2lkJ10sICdjYXRlZ29yeXRlbXBsYXRlJyA9PiAkY2F0ZWdvcnl0ZW1wbGF0ZSksICcnLCB0cnVlLCBpc1NldCgkcGFyYW1zWyJpbmxpbmUiXSkgPyAxIDogMCwgJycsIGZhbHNlLCAkcHJldHR5dXJsKTsNCg0KDQppZiAoaXNTZXQoJHBhcmFtc1sib25lcm93Il0pKSB7DQogICAgJHNtYXJ0eS0+YXNzaWduKCRwYXJhbXNbIm9uZXJvdyJdLCAkaXRlbSk7DQogICAgcmV0dXJuOw0KfQ0KDQokc21hcnR5LT5hc3NpZ24oJ2l0ZW0nLCAkaXRlbSk7DQoNCi8vIHRlbXBsYXRlDQokdGhldGVtcGxhdGUgPSAnZGV0YWlsX3RlbXBsYXRlJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ2N1cnJlbnRfZGV0YWlsX3RlbXBsYXRlJyk7DQppZiAoaXNzZXQoJHBhcmFtc1snZGV0YWlsdGVtcGxhdGUnXSkgJiYgIWVtcHR5KCRwYXJhbXNbJ2RldGFpbHRlbXBsYXRlJ10pKSB7DQogICAgJHRoZXRlbXBsYXRlID0gJ2RldGFpbF90ZW1wbGF0ZScgLiAkcGFyYW1zWydkZXRhaWx0ZW1wbGF0ZSddOw0KfQ0KDQovLw0KLy8gUHJvY2VzcyB0aGUgdGVtcGxhdGUNCi8vDQoNCmVjaG8gJG1vZC0+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+YXNzaWduKCdjdXN0b21fZmllbGRkZWYnLCAkY3VzdG9tX2ZsZHNfb2JqKTsNCn0NCg0KDQoNCi8vIHRlbXBsYXRlDQokdGhldGVtcGxhdGUgPSAnZmlsdGVyX3RlbXBsYXRlJyAuICRtb2QtPkdldFByZWZlcmVuY2UoJ2N1cnJlbnRfZmlsdGVyX3RlbXBsYXRlJyk7DQppZiAoaXNzZXQoJHBhcmFtc1snZmlsdGVydGVtcGxhdGUnXSkpIHsNCiAgICAkdGhldGVtcGxhdGUgPSAnZmlsdGVyX3RlbXBsYXRlJyAuICRwYXJhbXNbJ2ZpbHRlcnRlbXBsYXRlJ107DQp9DQoNCi8vDQovLyBQcm9jZXNzIHRoZSB0ZW1wbGF0ZQ0KLy8NCg0KICAgIG9iX3N0YXJ0KCk7DQogICAgJG1vZC0+RG9BY3Rpb24oJ2RlZmF1bHQnLCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCk7DQogICAgJG91dHB1dCA9IG9iX2dldF9jb250ZW50cygpOw0KICAgIG9iX2VuZF9jbGVhbigpOw0KICAgICRzbWFydHktPmFzc2lnbigncmVzdWx0cycsICRvdXRwdXQpOw0KDQplY2hvICRtb2QtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkdGhldGVtcGxhdGUpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/function.admin_categorytab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKQogICAgZXhpdDsKCgojUHV0IHRvZ2V0aGVyIGEgbGlzdCBvZiBjdXJyZW50IGNhdGVnb3JpZXMuLi4KJGVudHJ5YXJyYXkgPSBhcnJheSgpOwoKJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfIiAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gIl9jYXRlZ29yaWVzIE9SREVSIEJZIGhpZXJhcmNoeV9wb3NpdGlvbiI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoKJHJvd2NsYXNzID0gJ3JvdzEnOwoKd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAkb25lcm93ID0gbmV3IHN0ZENsYXNzKCk7CgogICAgJGRlcHRoID0gY291bnQocHJlZ19zcGxpdCgnL1wuLycsICRyb3dbJ2hpZXJhcmNoeSddKSk7CgogICAgJG9uZXJvdy0+aWQgPSAkcm93WydjYXRlZ29yeV9pZCddOwogICAgJG9uZXJvdy0+bmFtZSA9IHN0cl9yZXBlYXQoJyZuYnNwOyZndDsmbmJzcDsnLCAkZGVwdGggLSAxKSAuICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fZWRpdGNhdGVnb3J5JywgJHJldHVybmlkLCAkcm93WydjYXRlZ29yeV9uYW1lJ10sIGFycmF5KCdjYXRpZCcgPT4gJHJvd1snY2F0ZWdvcnlfaWQnXSkpOwoKICAgICRvbmVyb3ctPmVkaXRsaW5rID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9lZGl0Y2F0ZWdvcnknLCAkcmV0dXJuaWQsIGNtc21zKCktPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsIGdlbmVyYXRvcigpLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2NhdGlkJyA9PiAkcm93WydjYXRlZ29yeV9pZCddKSk7CiAgICAkb25lcm93LT5kZWxldGVsaW5rID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9kZWxldGVjYXRlZ29yeScsICRyZXR1cm5pZCwgY21zbXMoKS0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCBnZW5lcmF0b3IoKS0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2NhdGlkJyA9PiAkcm93WydjYXRlZ29yeV9pZCddKSwgZ2VuZXJhdG9yKCktPkxhbmcoJ2FyZXlvdXN1cmUnKSk7CgogICAgJG9uZXJvdy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7CgogICAgJGVudHJ5YXJyYXlbXSA9ICRvbmVyb3c7CgogICAgKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3MgPSAicm93MiIgOiAkcm93Y2xhc3MgPSAicm93MSIpOwp9CgokbW9kLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2l0ZW1zJywgJGVudHJ5YXJyYXkpOwokbW9kLT5zbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJGVudHJ5YXJyYXkpKTsKCiNTZXR1cCBsaW5rcwokbW9kLT5zbWFydHktPmFzc2lnbignYWRkbGluaycsICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fYWRkY2F0ZWdvcnknLCAkcmV0dXJuaWQsIGdlbmVyYXRvcigpLT5MYW5nKCdhZGRjYXRlZ29yeScpLCBhcnJheSgpLCAnJywgZmFsc2UsIGZhbHNlLCAnY2xhc3M9InBhZ2VvcHRpb25zIicpKTsKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ3Jlb3JkZXInLCAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX29yZGVyY2F0ZWdvcnknLCAkcmV0dXJuaWQsIGdlbmVyYXRvcigpLT5MYW5nKCdyZW9yZGVyJyksIGFycmF5KCksICcnLCBmYWxzZSwgZmFsc2UsICdjbGFzcz0icGFnZW9wdGlvbnMiJykpOwoKJG1vZC0+c21hcnR5LT5hc3NpZ24oJ2NhdGVnb3J5dGV4dCcsIGdlbmVyYXRvcigpLT5MYW5nKCdjYXRlZ29yeScpKTsKCiNEaXNwbGF5IHRlbXBsYXRlCmVjaG8gJG1vZC0+UHJvY2Vzc1RlbXBsYXRlKCdjYXRlZ29yeWxpc3QudHBsJyk7CgovLyBFT0YKPz4=]]></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+TGFuZygnZmllbGRkZWZfZmlsdGVyX2FkbWluJykpOw0KDQplY2hvICRtb2QtPlByb2Nlc3NUZW1wbGF0ZSgnZmllbGRkZWZ0YWIudHBsJyk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/function.admin_itemtab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCEkbW9kLT5DaGVja1Blcm1pc3Npb24oJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9pdGVtJykpDQogICAgcmV0dXJuOw0KDQokd2hlcmUgPSBhcnJheSgpOw0KJGNhdGVnb3J5bG9uZ25hbWVsaXN0ID0gYXJyYXkoKTsNCiRwYXJhbXNhcnJheSA9IGFycmF5KCk7DQokYWRtaW50aGVtZSA9IGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpOw0KDQokc21hcnR5LT5hc3NpZ24oJ21vZHVsZScsICRtb2QpOw0KDQokc3RhcnRfY2F0ZWdvcnkgPSAnJzsNCg0KJGNhdGVnb3J5bG9uZ25hbWVsaXN0ID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfcHJpdmF0ZV9jYXRlZ29yaWVzKCRtb2QpOw0KDQoNCi8vDQovLyBTZXR1cA0KLy8NCiRwYWdlbGltaXRzID0gYXJyYXkoJzInID0+IDIsICc1JyA9PiA1LCAnMjUnID0+IDI1LCAnMTAwJyA9PiAxMDAsICc1MDAnID0+IDUwMCk7DQokc29ydGl0ZW1zID0gYXJyYXkoKTsNCiRzb3J0aXRlbXNbZ2VuZXJhdG9yKCktPkxhbmcoJ2RhdGUnKV0gPSAnaXRlbV9kYXRlJzsNCiRzb3J0aXRlbXNbZ2VuZXJhdG9yKCktPkxhbmcoJ2NyZWF0ZWRkYXRlJyldID0gJ2NyZWF0ZV9kYXRlJzsNCiRzb3J0aXRlbXNbZ2VuZXJhdG9yKCktPkxhbmcoJ21vZGlmaWVkZGF0ZScpXSA9ICdtb2RpZmllZF9kYXRlJzsNCiRzb3J0b3JkZXJzID0gYXJyYXkoKTsNCiRzb3J0b3JkZXJzW2dlbmVyYXRvcigpLT5MYW5nKCdhc2NlbmRpbmcnKV0gPSAnYXNjJzsNCiRzb3J0b3JkZXJzW2dlbmVyYXRvcigpLT5MYW5nKCdkZXNjZW5kaW5nJyldID0gJ2Rlc2MnOw0KJHVpZCA9IGdldF91c2VyaWQoZmFsc2UpOw0KJGhpZXJhcmNoeSA9ICcnOw0KJGNoaWxkcmVuID0gMDsNCiRwYWdlbGltaXQgPSAyNTsNCiRzb3J0YnkgPSAnY3JlYXRlX2RhdGUnOw0KJHNvcnRvcmRlciA9ICdkZXNjJzsNCiRwYWdlbnVtYmVyID0gMTsNCiRmaWVsZHNfdmlld2FibGUgPSBhcnJheSgpOw0KJGZpZWxkX25hbWVzID0gYXJyYXkoKTsNCiRmaWVsZF9tb2R1bGVzID0gYXJyYXkoKTsNCiRmaWVsZF9pbWFnZXMgPSBhcnJheSgpOw0KJGN1c3RvbV9maWVsZHMgPSAnJzsNCiRkYXRlX3RvID0gdGltZSgpOw0KDQppZiAoISRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fZGF0ZV9lZGl0JykpDQogICAgdW5zZXQoJHNvcnRpdGVtc1tnZW5lcmF0b3IoKS0+TGFuZygnZGF0ZScpXSk7DQoNCg0KLy8gY3VzdG9tIGZpZWxkcw0KJGZpZWxkc19mb3JfZmlsdGVyID0gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfZmllbGRfZGVmcygkbW9kLCBudWxsLCBudWxsLCAxKTsNCiRjdXN0b21fZmxkcyA9IGFycmF5KDEpOw0KJGN1c3RvbV9maWVsZHNfdmFsdWVzID0gYXJyYXkoKTsNCmZvcmVhY2ggKCRmaWVsZHNfZm9yX2ZpbHRlciBhcyAkcm93KSB7DQogICAgJGN1c3RvbV9mbGRzWyRyb3dbJ2ZpZWxkZGVmX2lkJ11dID0gJHJvdzsNCiAgICAkY3VzdG9tX2ZpZWxkc192YWx1ZXNbJHJvd1snZmllbGRkZWZfaWQnXV0gPSBnZXRfcHJlZmVyZW5jZSgkdWlkLCAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY3VzdG9tZmllbGRzJyAuICRyb3dbJ2ZpZWxkZGVmX2lkJ10sICcnKTsNCn0NCg0KDQoNCi8vDQovLyBHZXQgcHJlZmVyZW5jZXMNCi8vDQokaGllcmFyY2h5ID0gZ2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2hpZXJhcmNoeScsICcnKTsNCiRjaGlsZHJlbiA9IGdldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jaGlsZHJlbicsIDApOw0KJHBhZ2VsaW1pdCA9IGdldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19wYWdlbGltaXQnLCAyNSk7DQokc29ydGJ5ID0gZ2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX3NvcnRieScsICdpdGVtX2RhdGUnKTsNCiRzb3J0b3JkZXIgPSBnZXRfcHJlZmVyZW5jZSgkdWlkLCAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfc29ydG9yZGVyJywgJ2Rlc2MnKTsNCiRkYXRlX2Zyb20gPSBnZXRfcHJlZmVyZW5jZSgkdWlkLCAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZGF0ZV9mcm9tJywgdGltZSgpIC0gKDM2MDAgKiAyNCAqIDcpKTsNCiRkYXRlX3RvID0gZ2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2RhdGVfdG8nLCB0aW1lKCkgKyAoMzYwMCAqIDI0ICogNykpOw0KJHRtcCA9IGdldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19jdXN0b21fZmllbGRzJywgJycpOw0KDQoNCg0KaWYgKGVtcHR5KCR0bXApKQ0KICAgICR0bXAgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdjdXN0b21fZmllbGRzX2RlZmF1bHQnKTsNCmlmICghZW1wdHkoJHRtcCkpDQogICAgJGN1c3RvbV9maWVsZHMgPSBleHBsb2RlKCcsJywgJHRtcCk7DQoNCi8vDQovLyBIYW5kbGUgR2V0IHBhcmFtZXRlcnMNCi8vDQppZiAoaXNzZXQoJHBhcmFtc1sncGFnZW51bWJlciddKSkgew0KICAgICRwYWdlbnVtYmVyID0gKGludCkgJHBhcmFtc1sncGFnZW51bWJlciddOw0KfQ0KDQoNCi8vDQovLyBIYW5kbGUgZm9ybSBzdWJtaXQNCi8vDQppZiAoaXNzZXQoJHBhcmFtc1snc3VibWl0J10pKSB7DQoNCiAgICBpZiAoJG1vZC0+R2V0UHJlZmVyZW5jZSgnbW9kZScpICE9ICJzaW1wbGUiIHx8IGlzc2V0KCRwYXJhbXNbJ2N1c3RvbWZpZWxkJ10pKSB7DQoNCiAgICAgICAgaWYgKCRtb2QtPkdldFByZWZlcmVuY2UoJ21vZGUnKSAhPSAic2ltcGxlIikgew0KICAgICAgICAgICAgJGNoaWxkcmVuID0gKGludCkgJHBhcmFtc1snaW5wdXRfY2hpbGRyZW4nXTsNCiAgICAgICAgICAgICRwYWdlbGltaXQgPSAoaW50KSAkcGFyYW1zWydpbnB1dF9wYWdlbGltaXQnXTsNCiAgICAgICAgICAgICRzb3J0YnkgPSB0cmltKCRwYXJhbXNbJ2lucHV0X3NvcnRieSddKTsNCiAgICAgICAgICAgICRzb3J0b3JkZXIgPSB0cmltKCRwYXJhbXNbJ2lucHV0X3NvcnRvcmRlciddKTsNCiAgICAgICAgICAgICRkYXRlX2Zyb20gPSBta3RpbWUoMCwgMCwgMCwgJHBhcmFtc1snZGF0ZWZyb21Nb250aCddLCAkcGFyYW1zWydkYXRlZnJvbURheSddLCAkcGFyYW1zWydkYXRlZnJvbVllYXInXSk7DQogICAgICAgICAgICAkZGF0ZV90byA9IG1rdGltZSgyMywgNTksIDU5LCAkcGFyYW1zWydkYXRldG9Nb250aCddLCAkcGFyYW1zWydkYXRldG9EYXknXSwgJHBhcmFtc1snZGF0ZXRvWWVhciddKTsNCg0KICAgICAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2N1c3RvbV9maWVsZHMnXSkpIHsNCiAgICAgICAgICAgICAgICAkY3VzdG9tX2ZpZWxkcyA9ICRwYXJhbXNbJ2N1c3RvbV9maWVsZHMnXTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgJGN1c3RvbV9maWVsZHMgPSBhcnJheSgpOw0KICAgICAgICAgICAgfQ0KDQoNCiAgICAgICAgICAgIC8vIHN0b3JlIHRoZW0gYXMgdXNlciBwcmVmZXJlbmNlcw0KICAgICAgICAgICAgc2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2hpZXJhcmNoeScsICRoaWVyYXJjaHkpOw0KICAgICAgICAgICAgc2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2NoaWxkcmVuJywgJGNoaWxkcmVuKTsNCiAgICAgICAgICAgIHNldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19wYWdlbGltaXQnLCAkcGFnZWxpbWl0KTsNCiAgICAgICAgICAgIHNldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19zb3J0YnknLCAkc29ydGJ5KTsNCiAgICAgICAgICAgIHNldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19zb3J0b3JkZXInLCAkc29ydG9yZGVyKTsNCiAgICAgICAgICAgIHNldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19kYXRlX2Zyb20nLCAkZGF0ZV9mcm9tKTsNCiAgICAgICAgICAgIHNldF9wcmVmZXJlbmNlKCR1aWQsICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19kYXRlX3RvJywgJGRhdGVfdG8pOw0KICAgICAgICAgICAgc2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2N1c3RvbV9maWVsZHMnLCBpbXBsb2RlKCcsJywgJGN1c3RvbV9maWVsZHMpKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChpc3NldCgkcGFyYW1zWydjdXN0b21maWVsZCddKSkgew0KICAgICAgICAgICAgZm9yZWFjaCAoJHBhcmFtc1snY3VzdG9tZmllbGQnXSBhcyAkZmxkaWQgPT4gJHZhbHVlKSB7DQogICAgICAgICAgICAgICAgc2V0X3ByZWZlcmVuY2UoJHVpZCwgJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2N1c3RvbWZpZWxkcycgLiAkZmxkaWQsICR2YWx1ZSk7DQogICAgICAgICAgICAgICAgJGN1c3RvbV9maWVsZHNfdmFsdWVzWyRmbGRpZF0gPSAkdmFsdWU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9DQoNCg0KLy8gaWYgc2ltcGxlIG1vZGUsIHJlc2V0IGFsbCBwcmVmcw0KaWYgKCRtb2QtPkdldFByZWZlcmVuY2UoJ21vZGUnKSA9PSAic2ltcGxlIikgew0KICAgICRzb3J0b3JkZXIgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdzb3J0b3JkZXJfc2ltcGxlJywgJ2Rlc2MnKTsNCiAgICAkc29ydGJ5ID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnc29ydGJ5X3NpbXBsZScsICdwb3NpdGlvbicpOw0KICAgICRwYWdlbGltaXQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdwYWdlbGltaXRfc2ltcGxlJywgMTAwMCk7DQp9DQoNCi8vIGdldCBjYXRlZ29yeSBsaXN0DQokd2hlcmUgPSBhcnJheSgpOw0KJHBhcmFtc2FycmF5ID0gYXJyYXkoKTsNCmlmIChlbXB0eSgkY2F0ZWdvcnlsb25nbmFtZWxpc3QpID09IGZhbHNlKSB7DQoNCiAgICAkd2hlcmVzdGF0ZW1lbnQgPSBhcnJheSgpOw0KICAgIGZvcmVhY2ggKCRjYXRlZ29yeWxvbmduYW1lbGlzdCBhcyAkbG9ubmFtZSkgew0KICAgICAgICAkd2hlcmVzdGF0ZW1lbnRbXSA9ICdsb25nX25hbWUgTElLRSAgPyc7DQogICAgICAgICRwYXJhbXNhcnJheVtdID0gJGxvbm5hbWUgLiAnICUnOw0KICAgIH0NCiAgICAkd2hlcmVbXSA9ICcoJyAuIGltcGxvZGUoJyBPUiAnLCAkd2hlcmVzdGF0ZW1lbnQpIC4gJyknOw0KfQ0KJGNhdGVnb3J5bGlzdCA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2NhdGVnb3J5X2xpc3QoJG1vZCwgJHdoZXJlLCAkcGFyYW1zYXJyYXkpOw0KDQovLyBmaWVsZHMgdmlldw0KJGFsbF9maWVsZHMgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9maWVsZHMoJG1vZCwgZmFsc2UpOw0KDQppZiAoaXNfYXJyYXkoJGFsbF9maWVsZHMpKSB7DQogICAgZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJGFsbF9maWVsZHMpOyAkaSsrKSB7DQogICAgICAgIHN3aXRjaCAoJGFsbF9maWVsZHNbJGldWyd0eXBlJ10pIHsNCiAgICAgICAgICAgIGNhc2UgJ3RleHRhcmVhJzoNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgJ3N0YXRpYyc6DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICRmaWVsZHNfdmlld2FibGVbJGFsbF9maWVsZHNbJGldWydmaWVsZGRlZl9pZCddXSA9ICRhbGxfZmllbGRzWyRpXVsnbmFtZSddOw0KICAgICAgICAgICAgICAgICRmaWVsZF9uYW1lc1skYWxsX2ZpZWxkc1skaV1bJ2ZpZWxkZGVmX2lkJ11dID0gJGFsbF9maWVsZHNbJGldWydhbGlhcyddOw0KDQogICAgICAgICAgICAgICAgLy8gaWYgbW9kdWxlLCBnZXQgbW9kdWxlIGZ1bmMNCiAgICAgICAgICAgICAgICBpZiAoJGFsbF9maWVsZHNbJGldWyd0eXBlJ10gPT0gIm1vZHVsZSIpIHsNCiAgICAgICAgICAgICAgICAgICAgJGluc3RydWN0aW9ucyA9IGdlbmVyYXRvcl90b29sczo6Z2V0X2V4dHJhKCRhbGxfZmllbGRzWyRpXVsnZXh0cmEnXSk7DQogICAgICAgICAgICAgICAgICAgICRjdXN0b21tb2R1bGVwYXJhbXMgPSBnZW5lcmF0b3JfdG9vbHM6OmdldF9leHRyYV9tb2R1bGVwYXJhbXMoJGluc3RydWN0aW9ucyk7DQogICAgICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkY3VzdG9tbW9kdWxlcGFyYW1zKSAmJiAhZW1wdHkoJGN1c3RvbW1vZHVsZXBhcmFtcykgJiYgY21zX3V0aWxzOjpnZXRfbW9kdWxlKCRjdXN0b21tb2R1bGVwYXJhbXNbIm1vZHVsZSJdKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGZpZWxkX21vZHVsZXNbJGFsbF9maWVsZHNbJGldWydmaWVsZGRlZl9pZCddXSA9ICRjdXN0b21tb2R1bGVwYXJhbXNbIm1vZHVsZSJdOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIC8vIGlmIG1vZHVsZSwgZ2V0IG1vZHVsZSBmdW5jDQogICAgICAgICAgICAgICAgaWYgKCRhbGxfZmllbGRzWyRpXVsndHlwZSddID09ICJ1cGxvYWRfZmlsZSIpIHsNCiAgICAgICAgICAgICAgICAgICAgJGZpZWxkX2ltYWdlc1skYWxsX2ZpZWxkc1skaV1bJ2ZpZWxkZGVmX2lkJ11dID0gMTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKGNvdW50KCRmaWVsZHNfdmlld2FibGUpICYmIGlzX2FycmF5KCRjdXN0b21fZmllbGRzKSkgew0KICAgICAgICAvLyBub3cgdHJpbSBkb3duIHRoZSBjdXN0b20gZmllbGRzDQogICAgICAgIC8vIHRvIG1ha2Ugc3VyZSB0aGF0IHNvbWV0aGluZyBoYXNuJ3QgYmVlbiBkZWxldGVkLg0KICAgICAgICAkdG1wID0gYXJyYXkoKTsNCiAgICAgICAgZm9yZWFjaCAoJGN1c3RvbV9maWVsZHMgYXMgJGZpZCkgew0KICAgICAgICAgICAgaWYgKGluX2FycmF5KCRmaWQsIGFycmF5X2tleXMoJGZpZWxkc192aWV3YWJsZSkpKSB7DQogICAgICAgICAgICAgICAgJHRtcFtdID0gJGZpZDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAkY3VzdG9tX2ZpZWxkcyA9ICR0bXA7DQogICAgfSBlbHNlIHsNCiAgICAgICAgJGN1c3RvbV9maWVsZHMgPSBhcnJheSgpOw0KICAgIH0NCn0NCiRhbGxfZmllbGRzID0gY2dlX2FycmF5Ojp0b19oYXNoKCRhbGxfZmllbGRzLCAnbmFtZScpOw0KaWYgKGNvdW50KCRmaWVsZHNfdmlld2FibGUpKSB7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdmaWVsZHNfdmlld2FibGUnLCAkZmllbGRzX3ZpZXdhYmxlKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2ZpZWxkX25hbWVzJywgJGZpZWxkX25hbWVzKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2ZpZWxkX21vZHVsZXMnLCAkZmllbGRfbW9kdWxlcyk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdmaWVsZF9pbWFnZXMnLCAkZmllbGRfaW1hZ2VzKTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCdjdXN0b21fZmllbGRzJywgJGN1c3RvbV9maWVsZHMpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsICRtb2QtPkNHQ3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2RlZmF1bHRhZG1pbicpKTsNCiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsICRtb2QtPkNyZWF0ZUZvcm1FbmQoKSk7DQoNCg0KDQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2hpZXJhcmNoeScsICRtb2QtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnaW5wdXRfaGllcmFyY2h5JywgJGNhdGVnb3J5bGlzdCwgLTEsICRoaWVyYXJjaHkpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jaGlsZHJlbicsICRtb2QtPkNyZWF0ZUlucHV0WWVzTm9Ecm9wZG93bigkaWQsICdpbnB1dF9jaGlsZHJlbicsICRjaGlsZHJlbikpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zb3J0YnknLCAkbW9kLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2lucHV0X3NvcnRieScsICRzb3J0aXRlbXMsIC0xLCAkc29ydGJ5KSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3NvcnRvcmRlcicsICRtb2QtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnaW5wdXRfc29ydG9yZGVyJywgJHNvcnRvcmRlcnMsIC0xLCAkc29ydG9yZGVyKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3BhZ2VsaW1pdCcsICRtb2QtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnaW5wdXRfcGFnZWxpbWl0JywgJHBhZ2VsaW1pdHMsIC0xLCAkcGFnZWxpbWl0KSk7DQoNCi8vDQovLyBCdWlsZCB0aGUgcXVlcnkNCi8vDQokZmllbGRzID0gYXJyYXkoKTsNCiRmaWVsZHNbXSA9ICdBLionOw0KJGZpZWxkc1tdID0gJ0IubG9uZ19uYW1lJzsNCiRwcmVmaXgxID0gIlNFTEVDVCA8RklFTERTPiBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlXyIgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICJfaXRlbSBBICI7DQokcHJlZml4MiA9ICJTRUxFQ1QgQ09VTlQoQS5pdGVtX2lkKSBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlXyIgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICJfaXRlbSBBICI7DQokd2hlcmUgPSBhcnJheSgpOw0KJGpvaW5zID0gYXJyYXkoKTsNCiRxcGFybXMgPSBhcnJheSgpOw0KDQppZiAoaXNfYXJyYXkoJGN1c3RvbV9maWVsZHMpICYmIGNvdW50KCRjdXN0b21fZmllbGRzKSAmJiBjb3VudCgkZmllbGRzX3ZpZXdhYmxlKSkgew0KICAgIGZvciAoJGogPSAwOyAkaiA8IGNvdW50KCRjdXN0b21fZmllbGRzKTsgJGorKykgew0KICAgICAgICAkZmlkID0gJGN1c3RvbV9maWVsZHNbJGpdOw0KICAgICAgICAkZmllbGRzW10gPSAiRnZ7JGp9LnZhbHVlIEFTICdGbGRfX3skZmllbGRfbmFtZXNbJGZpZF19JyI7DQogICAgICAgICRqb2luc1tdID0gJ0xFRlQgT1VURVIgSk9JTiAnIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV8iIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAiX2ZpZWxkdmFsIEZ2eyRqfQ0KICAgICAgICAgICAgICAgICAgICBPTiBGdnskan0uaXRlbV9pZCA9IEEuaXRlbV9pZCBBTkQgRnZ7JGp9LmZpZWxkZGVmX2lkID0gPyI7DQogICAgICAgICRxcGFybXNbXSA9ICRjdXN0b21fZmllbGRzWyRqXTsNCiAgICB9DQp9DQoNCg0KJGpvaW5zW10gPSAnTEVGVCBKT0lOICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllcyBCIA0KICAgICAgICAgICAgICAgICAgT04gQS5jYXRlZ29yeV9pZCA9IEIuY2F0ZWdvcnlfaWQnOw0KDQppZiAoIWVtcHR5KCRoaWVyYXJjaHkpKSB7DQoNCiAgICAkd2hlcmVbXSA9ICdCLmxvbmdfbmFtZSBMSUtFID8nOw0KICAgIGlmICgkY2hpbGRyZW4pIHsNCiAgICAgICAgJHFwYXJtc1tdID0gJGhpZXJhcmNoeSAuICclJzsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkcXBhcm1zW10gPSAkaGllcmFyY2h5Ow0KICAgIH0NCn0gZWxzZWlmIChlbXB0eSgkY2F0ZWdvcnlsb25nbmFtZWxpc3QpID09IGZhbHNlKSB7DQogICAgZm9yZWFjaCAoJGNhdGVnb3J5bG9uZ25hbWVsaXN0IGFzICRsb25nbmFtZSkgew0KICAgICAgICAkd2hlcmVbXSA9ICdCLmxvbmdfbmFtZSBMSUtFID8nOw0KICAgICAgICAkcXBhcm1zW10gPSAkbG9uZ25hbWUgLiAnJSc7DQogICAgfQ0KfQ0KDQppZiAoJG1vZC0+R2V0UHJlZmVyZW5jZSgnZmlsdGVyX2RhdGUnKSAmJiAkZGF0ZV9mcm9tICYmICRkYXRlX3RvKSB7DQogICAgJHdoZXJlW10gPSAiIEEuaXRlbV9kYXRlICA+ID8gYW5kIEEuaXRlbV9kYXRlICA8ID8gIjsNCiAgICAkcXBhcm1zW10gPSB0cmltKCRkYi0+REJUaW1lU3RhbXAoJGRhdGVfZnJvbSksICInIik7DQogICAgJHFwYXJtc1tdID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKCRkYXRlX3RvKSwgIiciKTsNCn0NCg0KLy8gcHJvY2NlcyB2YWx1ZXMgZnJvbSBwYXJhbXMNCmlmICgkY3VzdG9tX2ZpZWxkc192YWx1ZXMpIHsNCiAgICBmb3JlYWNoICgkY3VzdG9tX2ZpZWxkc192YWx1ZXMgYXMgJGZsZGlkID0+ICR2YWx1ZSkgew0KICAgICAgICBpZiAoZW1wdHkoJHZhbHVlKSkNCiAgICAgICAgICAgIGNvbnRpbnVlOw0KDQogICAgICAgICRqID0gJ2MnIC4gJGZsZGlkOw0KICAgICAgICAkam9pbnNbXSA9ICdMRUZUIE9VVEVSIEpPSU4gJyAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfIiAuICRtb2QtPl9HZXRNb2R1bGVBbGlhcygpIC4gIl9maWVsZHZhbCBGdnskan0NCiAgICAgICAgICAgICAgICAgICAgT04gRnZ7JGp9Lml0ZW1faWQgPSBBLml0ZW1faWQgQU5EIEZ2eyRqfS5maWVsZGRlZl9pZCA9ID8iOw0KICAgICAgICAvL2FycmF5X3Vuc2hpZnQoJHFwYXJtcywgJGZsZGlkKTsNCiAgICAgICAgJHFwYXJtc1tdID0gJGZsZGlkOw0KICAgICAgICAkd2hlcmVbXSA9ICcgRnYnIC4gJGogLiAnLnZhbHVlICA9ID8nOw0KICAgICAgICAkcXBhcm1zW10gPSAkdmFsdWU7DQogICAgfQ0KfQ0KDQoNCi8vIGhhbmRsZSBmdW5reSBjdXN0b20gZmllbGQgc29ydCBvcmRlcnMNCmlmIChzdGFydHN3aXRoKCRzb3J0YnksICctRi0nKSkgew0KICAgICRmaWQgPSAoaW50KSBzdWJzdHIoJHNvcnRieSwgMyk7DQogICAgJGpvaW5zW10gPSAnTEVGVCBKT0lOICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwgZnYNCiAgICAgICAgICAgICAgICAgIE9OIGZ2Lml0ZW1faWQgPSBBLml0ZW1faWQnOw0KICAgICR3aGVyZVtdID0gJ2Z2LmZpZWxkZGVmX2lkID0gPyc7DQogICAgJHFwYXJtc1tdID0gJGZpZDsNCiAgICAkb3JkZXIgPSAiIE9SREVSIEJZIGZ2LnZhbHVlICRzb3J0b3JkZXIiOw0KfSBlbHNlIHsNCiAgICAkb3JkZXIgPSAiIE9SREVSIEJZICRzb3J0YnkgJHNvcnRvcmRlciI7DQp9DQoNCiRzdHIgPSBpbXBsb2RlKCcgJywgJGpvaW5zKTsNCmlmIChjb3VudCgkd2hlcmUpKSB7DQogICAgJHN0ciAuPSAnIFdIRVJFICcgLiBpbXBsb2RlKCcgQU5EICcsICR3aGVyZSk7DQp9DQokcXVlcnkxID0gc3RyX3JlcGxhY2UoJzxGSUVMRFM+JywgaW1wbG9kZSgnLCcsICRmaWVsZHMpLCAkcHJlZml4MSkgLiAkc3RyIC4gJG9yZGVyOw0KJHF1ZXJ5MiA9ICRwcmVmaXgyIC4gJHN0cjsNCg0KLy8NCi8vIFNldHVwIHN0YXJ0IGVsZW1lbnQsIGFuZCBjb3VudCBwYWdlcw0KLy8NCiR0b3RhbGNvdW50ID0gJGRiLT5HZXRPbmUoJHF1ZXJ5MiwgJHFwYXJtcyk7DQokcGFnZWNvdW50ID0gKGludCkgKCR0b3RhbGNvdW50IC8gJHBhZ2VsaW1pdCk7DQppZiAoKCR0b3RhbGNvdW50ICUgJHBhZ2VsaW1pdCkgIT0gMCkNCiAgICAkcGFnZWNvdW50Kys7DQokc3RhcnRlbGVtZW50ID0gKCRwYWdlbnVtYmVyIC0gMSkgKiAkcGFnZWxpbWl0Ow0KDQovLw0KLy8gQmVnaW4gdGhlIG91dHB1dA0KLy8NCiRzbWFydHktPmFzc2lnbigncGFnZW51bWJlcicsICRwYWdlbnVtYmVyKTsNCiRzbWFydHktPmFzc2lnbigncGFnZWNvdW50JywgJHBhZ2Vjb3VudCk7DQokc21hcnR5LT5hc3NpZ24oJ3RvdGFscm93cycsICR0b3RhbGNvdW50KTsNCmlmICgkcGFnZW51bWJlciA+IDEpIHsNCiAgICAkcGFybXMgPSBhcnJheSgncGFnZW51bWJlcicgPT4gMSk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdmaXJzdHBhZ2VfdXJsJywgJG1vZC0+Q3JlYXRlVVJMKCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFybXMpKTsNCiAgICAkcGFybXMgPSBhcnJheSgncGFnZW51bWJlcicgPT4gJHBhZ2VudW1iZXIgLSAxKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ3ByZXZwYWdlX3VybCcsICRtb2QtPkNyZWF0ZVVSTCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcm1zKSk7DQp9DQppZiAoJHBhZ2VudW1iZXIgPCAkcGFnZWNvdW50KSB7DQogICAgJHBhcm1zID0gYXJyYXkoJ3BhZ2VudW1iZXInID0+ICRwYWdlbnVtYmVyICsgMSk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCduZXh0cGFnZV91cmwnLCAkbW9kLT5DcmVhdGVVUkwoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJtcykpOw0KICAgICRwYXJtcyA9IGFycmF5KCdwYWdlbnVtYmVyJyA9PiAkcGFnZWNvdW50KTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2xhc3RwYWdlX3VybCcsICRtb2QtPkNyZWF0ZVVSTCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcm1zKSk7DQp9DQoNCiRwb3NpdGlvbiA9ICRkYi0+R2V0T25lKCdTRUxFQ1QgbWF4KHBvc2l0aW9uKSBhcyBtYXhfcG9zaXRpb24gRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJHRoaXMtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtJyk7DQoNCiRlbnRyeWFycmF5ID0gYXJyYXkoKTsNCiRkYnJlc3VsdCA9ICRkYi0+U2VsZWN0TGltaXQoJHF1ZXJ5MSwgJHBhZ2VsaW1pdCwgJHN0YXJ0ZWxlbWVudCwgJHFwYXJtcyk7DQoNCndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgew0KICAgICRvbmVyb3cgPSBjZ2VfYXJyYXk6OnRvX29iamVjdCgkcm93KTsNCg0KICAgIC8vIG1vdmUgdXANCiAgICBpZiAoJHJvd1sncG9zaXRpb24nXSA+IDEpIHsNCiAgICAgICAgJG9uZXJvdy0+dXBsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fbW92ZWl0ZW0nLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9hcnJvdy11LmdpZicsIGdlbmVyYXRvcigpLT5MYW5nKCd1cCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdpdGVtX2lkJyA9PiAkcm93WydpdGVtX2lkJ10sICdkaXInID0+ICd1cCcpKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkb25lcm93LT51cGxpbmsgPSAnJzsNCiAgICB9DQoNCiAgICAvLyBtb3ZlIGRvd24NCiAgICBpZiAoJHBvc2l0aW9uID4gJHJvd1sncG9zaXRpb24nXSkgew0KICAgICAgICAkb25lcm93LT5kb3dubGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX21vdmVpdGVtJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vYXJyb3ctZC5naWYnLCBnZW5lcmF0b3IoKS0+TGFuZygnZG93bicpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdpdGVtX2lkJyA9PiAkcm93WydpdGVtX2lkJ10sICdkaXInID0+ICdkb3duJykpOw0KICAgIH0gZWxzZSB7DQogICAgICAgICRvbmVyb3ctPmRvd25saW5rID0gJyc7DQogICAgfQ0KDQogICAgLy8gYXBwcm92ZQ0KICAgIGlmICgkcm93WydhY3RpdmUnXSkgew0KICAgICAgICAkb25lcm93LT5hcHByb3ZlID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fYXBwcm92ZWl0ZW0nLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsICR0aGlzLT5MYW5nKCdyZXZlcnQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnYXBwcm92ZScgPT4gMCwgJ2l0ZW1faWQnID0+ICRyb3dbJ2l0ZW1faWQnXSkpOw0KICAgIH0gZWxzZSB7DQogICAgICAgICRvbmVyb3ctPmFwcHJvdmUgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9hcHByb3ZlaXRlbScsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCdhcHByb3ZlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2FwcHJvdmUnID0+IDEsICdpdGVtX2lkJyA9PiAkcm93WydpdGVtX2lkJ10pKTsNCiAgICB9DQoNCiAgICAkb25lcm93LT5lZGl0X3VybCA9ICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fZWRpdGl0ZW0nLCAkcmV0dXJuaWQsICRyb3dbJ3RpdGxlJ10sIGFycmF5KCdpdGVtX2lkJyA9PiAkcm93WydpdGVtX2lkJ10pLCAnJywgdHJ1ZSk7DQogICAgJG9uZXJvdy0+ZWRpdGxpbmsgPSAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2VkaXRpdGVtJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCBnZW5lcmF0b3IoKS0+TGFuZygnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdpdGVtX2lkJyA9PiAkcm93WydpdGVtX2lkJ10pKTsNCiAgICAkb25lcm93LT5kZWxldGVsaW5rID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9kZWxldGVpdGVtJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsIGdlbmVyYXRvcigpLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnaXRlbV9pZCcgPT4gJHJvd1snaXRlbV9pZCddKSwgZ2VuZXJhdG9yKCktPkxhbmcoJ2FyZXlvdXN1cmUnKSk7DQogICAgJG9uZXJvdy0+ZmlsZV9sb2NhdGlvbiA9IGdlbmVyYXRvcl90b29sczo6ZmlsZV9sb2NhdGlvbigkbW9kLCAkcm93KTsNCiAgICAkb25lcm93LT5maWxlcGF0aF9sb2NhdGlvbiA9IGdlbmVyYXRvcl90b29sczo6ZmlsZXBhdGhfbG9jYXRpb24oJG1vZCwgJHJvdyk7DQoNCiAgICAkZW50cnlhcnJheVtdID0gJG9uZXJvdzsNCn0NCg0KJG1vZC0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdpdGVtcycsICRlbnRyeWFycmF5KTsNCiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkZW50cnlhcnJheSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2RhdGVfZnJvbScsICRkYXRlX2Zyb20pOw0KJHNtYXJ0eS0+YXNzaWduKCdkYXRlX3RvJywgJGRhdGVfdG8pOw0KDQoNCiRtb2QtPnNtYXJ0eS0+YXNzaWduKCdhZGRsaW5rJywgJG1vZC0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9lZGl0aXRlbScsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCBnZW5lcmF0b3IoKS0+TGFuZygnYWRkJykgLiAnICcgLiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3Npbmd1bGFyJywgJycpLCAnJywgJycsICdzeXN0ZW1pY29uJykgLiAnICcgLiBnZW5lcmF0b3IoKS0+TGFuZygnYWRkJykgLiAnICcgLiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3Npbmd1bGFyJywgJycpKSk7DQokbW9kLT5zbWFydHktPmFzc2lnbignaWR0ZXh0JywgZ2VuZXJhdG9yKCktPkxhbmcoJ2lkJykpOw0KDQoNCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0MicsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnYWRtaW5fYnVsa2FjdGlvbicsICRyZXR1cm5pZCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kMicsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOw0KJGJ1bGthY3Rpb25zID0gYXJyYXkoKTsNCiRidWxrYWN0aW9uc1snZGVsZXRlJ10gPSAkdGhpcy0+TGFuZygnZGVsZXRlJyk7DQokYnVsa2FjdGlvbnNbJ3NldGluYWN0aXZlJ10gPSAkdGhpcy0+TGFuZygnc2V0ZHJhZnQnKTsNCiRidWxrYWN0aW9uc1snc2V0YWN0aXZlJ10gPSAkdGhpcy0+TGFuZygnc2V0cHVibGlzaGVkJyk7DQokc21hcnR5LT5hc3NpZ24oJ2J1bGthY3Rpb25zJywgJGJ1bGthY3Rpb25zKTsNCg0KLy8gZ2V0IHRoZSBjdXN0b20gZmllbGRzDQokZmlsdGVycyA9IG5ldyBnZW5lcmF0b3JfZmlsdGVycygkaWQsICRtb2QsICdhZG1pbicpOw0KJGN1c3RvbV9mbGRzID0gJGZpbHRlcnMtPnByb2Nlc3NfY3VzdG9tX2ZpZWxkcyhhcnJheSgpLCAkY3VzdG9tX2ZsZHMpOw0KJGN1c3RvbV9mbGRzX29iaiA9ICRmaWx0ZXJzLT5nZW5lcmF0ZSgkaXRlbV9pZCwgJHBhcmFtcywgJGN1c3RvbV9maWVsZHNfdmFsdWVzKTsNCmlmIChpc3NldCgkY3VzdG9tX2ZsZHNfb2JqKSAmJiBjb3VudCgkY3VzdG9tX2ZsZHNfb2JqKSA+IDApIHsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2N1c3RvbV9maWVsZGRlZicsICRjdXN0b21fZmxkc19vYmopOw0KfQ0KDQplY2hvICRtb2QtPlByb2Nlc3NUZW1wbGF0ZSgnaXRlbXRhYi50cGwnKTsNCj8+]]></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+R2V0UHJlZmVyZW5jZSgnaXRlbV9jYXRlZ29yeV9yZXR1cm5pZCcsIC0xKSwgJGlkIC4gJ2l0ZW1fY2F0ZWdvcnlfcmV0dXJuaWQnKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2N1c3RvbV9maWVsZHNfZGVmYXVsdCcsIGdlbmVyYXRvcigpLT5MYW5nKCdwcm9tcHRfY3VzdG9tX2ZpZWxkc19kZWZhdWx0JykpOw0KJHNtYXJ0eS0+YXNzaWduKCdjdXN0b21fZmllbGRzX2RlZmF1bHQnLCBleHBsb2RlKCcsJywkbW9kLT5HZXRQcmVmZXJlbmNlKCdjdXN0b21fZmllbGRzX2RlZmF1bHQnKSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X21vZGUnLCAkbW9kLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ21vZGUnLCAkbW9kZXMsIC0xLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdtb2RlJywgJ2FkdmFuY2VkJykpKTsNCg0KZWNobyAkbW9kLT5Qcm9jZXNzVGVtcGxhdGUoJ29wdGlvbnRhYi50cGwnKTsNCj8+]]></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[PD9waHANCg0KJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KJGRpciA9IHN0cl9yZXBsYWNlKCdcXCcgLCAnLycsIGRpcm5hbWUoX19GSUxFX18pKTsNCmluY2x1ZGUoc3RyX3JlcGxhY2UoJ01vZHVsZUxpYicuRElSRUNUT1JZX1NFUEFSQVRPUiwnJywgIF9fRklMRV9fKSk7DQoNCiRsYW5nWydwb3N0aW5zdGFsbCddID0gJG1vZHVsZV9uYW1lIC4gJyBoYXMgc3VjY2Vzc2Z1bGx5IGJlZW4gaW5zdGFsbGVkJzsNCiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAkbW9kdWxlX25hbWUuICcgaGFzIHN1Y2Nlc3NmdWxseSBiZWVuIHVuaW5zdGFsbGVkJzsNCiRsYW5nWyRtb2R1bGVfYWxpYXMgLiAnX21vZGlmeV9pdGVtJ10gPSAkbW9kdWxlX25hbWUgLiAnOiBNb2RpZnkgSXRlbXMnOw0KJGxhbmdbJG1vZHVsZV9hbGlhcyAuICdfbW9kaWZ5X2NhdGVnb3JpZXMnXSA9ICRtb2R1bGVfbmFtZSAuICc6IE1vZGlmeSBDYXRlZ29yaWVzJzsNCiRsYW5nWyRtb2R1bGVfYWxpYXMgLiAnX21vZGlmeV9vcHRpb24nXSA9ICRtb2R1bGVfbmFtZSAuICc6IE1vZGlmeSBPcHRpb25zJzsNCiRsYW5nWyRtb2R1bGVfYWxpYXMgLiAnX2FsbF9jYXRlZ29yeV92aXNiaWxlJ10gPSAkbW9kdWxlX25hbWUgLiAnOiBhbGwgY2F0ZWdvcnkgdmlzaWJsZSc7DQokbGFuZ1snY2hhbmdlbG9nJ10gPSAnJzsNCg0KDQojIyBwZXJtcw0KJGxhbmdbJ21vZGlmeV9pdGVtJ10gPSAkbW9kdWxlX25hbWUuJzogbW9kaWZ5IGl0ZW0nOw0KJGxhbmdbJ21vZGlmeV9vcHRpb24nXSA9ICRtb2R1bGVfbmFtZS4nOiBtb2RpZnkgb3B0aW9uJzsNCiRsYW5nWydtb2RpZnlfY2F0ZWdvcmllcyddID0gJG1vZHVsZV9uYW1lLic6IG1vZGlmeSBjYXRlZ29yaWVzJzsNCiRsYW5nWydhbGxfY2F0ZWdvcnlfdmlzYmlsZSddID0gJG1vZHVsZV9uYW1lLic6IGFsbCBjYXRlZ29yeSB2aXNpYmxlJzsNCg0KDQovLyBtb2R1bGUgaGVscA0KJGxhbmdbJ2hlbHAnXSA9IDw8PEVPVA0KPGRpdiBpZD0icGFnZV90YWJzIj4gICAgIA0KICA8ZGl2IGlkPSJnZW5lcmFsIj4NCiAgICBHZW5lcmFsIEluZm8gICANCiAgPC9kaXY+ICAgICANCiAgPGRpdiBpZD0idXNhZ2UiPg0KICAgIFVzYWdlICAgDQogIDwvZGl2PiAgICAgDQogIDxkaXYgaWQ9InBlcm1pc3Npb25zIj4NCiAgICBQZXJtaXNzaW9ucyAgIA0KICA8L2Rpdj4gICAgIA0KICA8ZGl2IGlkPSJmaWVsZCI+DQogICAgRmllbGQgRGVmaW5pdGlvbnMgICANCiAgPC9kaXY+ICAgICANCiAgPGRpdiBpZD0iY2F0ZWdvcmllcyI+DQogICAgQ2F0ZWdvcmllcyAgIA0KICA8L2Rpdj4gICAgIA0KICA8ZGl2IGlkPSJleGFtcGxlcyI+DQogICAgRXhhbXBsZXMgICANCiAgPC9kaXY+ICAgICANCjwvZGl2PiAgIA0KPGRpdiBjbGFzcz0iY2xlYXJiIj4gIA0KPC9kaXY+DQo8ZGl2IGlkPSJwYWdlX2NvbnRlbnQiPiAgDQogIDxkaXYgaWQ9ImdlbmVyYWxfYyI+CTxoMz5HZW5lcmFsIEluZm88L2gzPgkJDQogICAgPHA+U2ltcGx5IHB1dCwgTGlzdEl0IGFsbG93cyB5b3UgdG8gY3JlYXRlIGxpc3RzIHRoYXQgeW91IGNhbiBkaXNwbGF5IHRocm91Z2hvdXQgeW91ciB3ZWJzaXRlLiBZb3UgY291bGQgbWFrZSBhIHNpbXBsZSBGQVEgb3IgVGVzdGltb25pYWxzIGZlYXR1cmUgd2l0aCB0aGlzIG1vZHVsZS4gVGhlIHdlYiBkZXZlbG9wZXIgZGVmaW5lcyBmaWVsZHMgdG8gY29uc3RyYWluIHdoYXQgZGF0YSB0aGUgY2xpZW50IGNhbiBlbnRlci4gQSBudW1iZXIgb2YgZmllbGQgdHlwZXMgY2FuIGJlIHNwZWNpZmllZCAtIHRleHQgaW5wdXQsIGNoZWNrYm94LCB0ZXh0IGFyZWEsIHNlbGVjdCBkYXRlLCB1cGxvYWQgZmlsZSwgc2VsZWN0IGZpbGUsIGRyb3Bkb3duIC0gYW5kIGFkZGl0aW9uYWwgaW5zdHJ1Y3Rpb25zIGNhbiBiZSBzZXQgZm9yIGVhY2ggdHlwZSwgZm9yIGV4YW1wbGUsIGlucHV0IGZpZWxkIHNpemUsIG1heCBsZW5ndGgsIFdZU0lXWUcgZWRpdG9yLCBwb3NzaWJsZSBkcm9wIGRvd24gdmFsdWVzLCBwb3NzaWJsZSBmaWxlIGV4dGVuc2lvbnMsIGRpcmVjdG9yeSBwYXRocyBmb3IgZmlsZSBzZWxlY3Rpb25zLCBkYXRlIGZvcm1hdHMsIGV0Yy4NCiAgICA8L3A+DQogICAgPHA+QW4gaW1wb3J0YW50IG5vdGUgb2Ygd2FybmluZyAtIFRoaXMgaXMgbm90IGEgY29udGVudCBjb25zdHJ1Y3Rpb24ga2l0LCBzdWNoIGFzIGluIERydXBhbC4gSXQgaXMgbWVhbnQgZm9yIHNtYWxsIGxpc3RpbmdzLCBub3QgdG8gc3RvcmUgdGhvdXNhbmRzIG9mIHJlY29yZHMuIFRoaXMgaXMgYmVjYXVzZSBvZiB0aGUgZGF0YWJhc2UgbW9kZWwgdXNlZCAoRUFWKS4gQWxzbywgZWFjaCBiaXQgb2YgZGF0YSB5b3UgZW50ZXIgaXMgc3RvcmVkIGFzIFRFWFQgZGF0YSB0eXBlLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgaXMgdmFyY2hhciwgYm9vbGVhbiwgdGltZXN0YW1wLCBldGMuIFRoaXMgaXMgYSByZXN0cmljdGlvbiBvZiBhIHNob3J0IGRldmVsb3BtZW50IHRpbWUgZnJhbWUuDQogICAgPC9wPgkNCiAgPC9kaXY+CQ0KICA8ZGl2IGlkPSJ1c2FnZV9jIj4JCQ0KICAgIDxoMz5Vc2FnZTwvaDM+CQkJDQogICAgICA8cD5Zb3UgY2FuIGNvbmZpZ3VyZSB7JG1vZHVsZV9uYW1lfSBoZXJlOiBDb250ZW50ID4geyRtb2R1bGVfbmFtZX0NCiAgICAgIDwvcD4JCQkNCiAgICA8cD5QbGFjZSB0aGlzIHRhZyBpbiB5b3VyIHBhZ2U6PGJyIC8+CQ0KICAgIHt7JG1vZHVsZV9uYW1lfX0NCiAgICA8L3A+CQkNCiAgICA8ZGl2PgkJCQ0KICAgICAgPGRpdiBzdHlsZT0iZmxvYXQ6bGVmdDsiPg0KICAgICAgICBBZnRlciBpbnN0YWxsaW5nIHRoZSBtb2R1bGUgdGhlIG5leHQgdGhpbmcgdG8gZG8gaXMgc2V0IHRoZSBvcHRpb25zLiAgCQkJCQ0KICAgICAgICA8b2w+CQkJCQkNCiAgICAgICAgICA8bGk+VG8gY2hhbmdlIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgaW4gdGhlIG1lbnUgY2hhbmdlIHRoZSAnTW9kdWxlIEZyaWVuZGx5IE5hbWUnLg0KICAgICAgICAgIDwvbGk+CQkJCQkNCiAgICAgICAgICA8bGk+VG8gY2hhbmdlIHRoZSBuYW1lIG9mIHRoZSBpdGVtIHRhYiBjaGFuZ2UgdGhlICdJdGVtIFBsdXJhbCcuDQogICAgICAgICAgPC9saT4JCQkJDQogICAgICAgIDwvb2w+CQkNCiAgICAgIDwvZGl2Pg0KICAgICAgPGJyIHN0eWxlPSJjbGVhcjpib3RoOyIgLz4JCQ0KICAgIDwvZGl2PgkJDQogICAgPGRpdj4NCiAgICAgIDxkaXYgc3R5bGU9ImZsb2F0OmxlZnQ7Ij4NCiAgICAgICAgTmV4dCAtIHNldCB0aGUgRmllbGQgRGVmaW5pdGlvbnMuIA0KICAgICAgICA8b2w+DQogICAgICAgICAgPGxpPkNob29zZSBmcm9tICdUZXh0IElucHV0JywgJ0NoZWNrYm94JywgJ1RleHQgQXJlYScsICdTZWxlY3QgRGF0ZScsICdVcGxvYWQgRmlsZScsICdTZWxlY3QgRmlsZScgJiAnRHJvcGRvd24nLg0KICAgICAgICAgIDwvbGk+DQogICAgICAgICAgPGxpPkZvciBlYWNoIGZpZWxkIGRlZmluaXRpb24sIHlvdSBjYW4gc3BlY2lmeSBhZGRpdGlvbmFsIGluc3RydWN0aW9ucyBpbiB0aGUgJ2V4dHJhJyBmaWVsZC4gU2VlIHRoZSAnRmllbGQgRGVmaW5pdGlvbnMnIHRhYiBmb3IgYSBsaXN0Lg0KICAgICAgICAgIDwvbGk+DQogICAgICAgICAgPGxpPkVhY2ggaXRlbSBpbiBlYWNoIGxpc3QgaGFzIHRocmVlIGRlZmF1bHQgZmllbGRzLiBBbGwgRmllbGQgRGVmaW5pdGlvbnMgc2V0IGhlcmUgYXJlIGFkZGl0aW9uYWwgdG8gdGhlbS4NCiAgICAgICAgICA8L2xpPg0KICAgICAgICA8L29sPg0KICAgICAgPC9kaXY+PGJyIHN0eWxlPSJjbGVhcjpib3RoOyIgLz4NCiAgICA8L2Rpdj4NCiAgICAgICAgPGRpdj4NCiAgICAgIA0KICAgICAgPGRpdiBzdHlsZT0iZmxvYXQ6bGVmdDsiPg0KICAgICAgICBOb3cgd2UgbW92ZSBvbiB0byB0aGUgSXRlbSBsaXN0IGl0c2VsZi4gSW4gdGhpcyBleGFtcGxlIGl0IHNheXMgJ0FkZCBCb3gnLCB0aGlzIHdhcyByZW5hbWVkIGluIHRoZSAnT3B0aW9ucycgdGFiLiANCiAgICAgICAgPG9sPg0KICAgICAgICAgIDxsaT5UaGUgZmlyc3QgZmllbGQgaXMgdGhlIGRlZmF1bHQgJ1RpdGxlJyBmaWVsZC4NCiAgICAgICAgICA8L2xpPg0KICAgICAgICAgIDxsaT5UaGUgJ0NhdGVnb3J5JyBkcm9wZG93biBpcyBhbHNvIGEgZGVmYXVsdCBmaWVsZCwgYW5kIGlmIHVuY2hhbmdlZCwgd2lsbCBiZSBzZXQgdG8gJ0dlbmVyYWwnLg0KICAgICAgICAgIDwvbGk+DQogICAgICAgICAgPGxpPlRoZSB0aGlyZCBkZWZhdWx0IGZpZWxkIGlzIHRoZSBjaGVja2JveCBjYWxsZWQgJ0FjdGl2ZScuIFRoaXMgYWxsb3dzIHlvdSB0byB0b2dnbGUgYSBsaXN0IGVudHJ5IHdpdGhvdXQgZGVsZXRpbmcgaXQuDQogICAgICAgICAgPC9saT4NCiAgICAgICAgPC9vbD4NCiAgICAgIDwvZGl2PjxiciBzdHlsZT0iY2xlYXI6Ym90aDsiIC8+DQogICAgPC9kaXY+DQogICAgPGRpdiBzdHlsZT0iY2xlYXI6Ym90aDsiIC8+DQogICAgPC9kaXY+DQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJwZXJtaXNzaW9uc19jIj48aDM+UGVybWlzc2lvbnM8L2gzPg0KICAgIDxwPllvdSBjYW4gc3BlY2lmeSB0aGUgZm9sbG93aW5nIHBlcm1pc3Npb25zIHVuZGVyIFVzZXJzICYgR3JvdXBzID4gR3JvdXAgUGVybWlzc2lvbnMNCiAgICA8L3A+DQogICAgPHVsPg0KICAgICAgPGxpPnskbW9kdWxlX25hbWV9OiBtb2RpZnkgSXRlbXMNCiAgICAgIDwvbGk+DQogICAgICA8bGk+eyRtb2R1bGVfbmFtZX06IG1vZGlmeSBDYXRlZ29yaWVzDQogICAgICA8L2xpPg0KICAgICAgPGxpPnskbW9kdWxlX25hbWV9OiBtb2RpZnkgT3B0aW9ucw0KICAgICAgPC9saT4NCiAgICAgIDxsaT57JG1vZHVsZV9uYW1lfTogYWxsIGNhdGVnb3J5IHZpc2libGUNCiAgICAgIDwvbGk+DQogICAgPC91bD4NCiAgPC9kaXY+DQogIDxkaXYgaWQ9ImZpZWxkX2MiPjxoMz5GaWVsZCBEZWZpbml0aW9uczwvaDM+DQogICAgPHA+VGhlIGZpcnN0IHRoaW5nIHlvdSBzaG91bGQgY29uZmlndXJlIGFyZSB5b3VyIGZpZWxkIGRlZmluaXRpb25zLg0KICAgIDwvcD4NCiAgICA8cD5Gb3IgZWFjaCBmaWVsZCBkZWZpbml0aW9uLCB5b3UgY2FuIHNwZWNpZnkgYWRkaXRpb25hbCBpbnN0cnVjdGlvbnMgaW4gdGhlICJleHRyYSIgZmllbGQuDQogICAgPC9wPg0KICAgIDx1bD4gICAgDQogICAgICA8bGk+ICAgICAgICANCiAgICAgIDxwPkluc3RydWN0aW9uOiANCiAgICAgICAgPGNvZGU+c2l6ZVsyMF0NCiAgICAgICAgPC9jb2RlPjxiciAvPg0KICAgICAgICBQb3NzaWJsZSB2YWx1ZTogaW50ZWdlcjxiciAvPg0KICAgICAgICBBcHBsaWNhYmxlIHRvOiBUZXh0IElucHV0LCBTZWxlY3QgRGF0ZQ0KICAgICAgPC9wPiAgICANCiAgICAgIDwvbGk+ICAgIA0KICAgICAgPGxpPiAgICAgICAgDQogICAgICA8cD5JbnN0cnVjdGlvbjogDQogICAgICAgIDxjb2RlPm1heF9sZW5ndGhbMjBdDQogICAgICAgIDwvY29kZT48YnIgLz4NCiAgICAgICAgUG9zc2libGUgdmFsdWU6IGludGVnZXI8YnIgLz4NCiAgICAgICAgQXBwbGljYWJsZSB0bzogVGV4dCBJbnB1dCwgVGV4dCBBcmVhLCBTZWxlY3QgRGF0ZQ0KICAgICAgPC9wPiAgICANCiAgICAgIDwvbGk+ICANCiAgICAgIDxsaT4gICAgICAgIA0KICAgICAgPHA+SW5zdHJ1Y3Rpb246IA0KICAgICAgICA8Y29kZT53eXNpd3lnWzFdDQogICAgICAgIDwvY29kZT48YnIgLz4NCiAgICAgICAgUG9zc2libGUgdmFsdWU6IDF8MHx0cnVlfGZhbHNlPGJyIC8+DQogICAgICAgIEFwcGxpY2FibGUgdG86IFRleHQgQXJlYQ0KICAgICAgPC9wPiAgICANCiAgICAgIDwvbGk+ICAgIA0KICAgICAgPGxpPiAgICAgICAgDQogICAgICA8cD5JbnN0cnVjdGlvbjogDQogICAgICAgIDxjb2RlPm9wdGlvbnNbYXBwbGU9QXBwbGUsYmFuYW5hPUJhbmFuYV0NCiAgICAgICAgPC9jb2RlPjxiciAvPg0KICAgICAgICBQb3NzaWJsZSB2YWx1ZToga2V5PXZhbHVlLC4uLiBvciB7Y21zX21vZHVsZX0gdGFnIHdpdGggc2ltaWxhciBvdXRwdXQgZXRjLiB7Y21zX2dhbGxlcnkgbW9kdWxlPUdhbGxlcnkgdGVtcGxhdGU9c2VsZWN0ZWJveH08YnIgLz4NCiAgICAgICAgQXBwbGljYWJsZSB0bzogRHJvcGRvd24NCiAgICAgIDwvcD4gICAgDQogICAgICA8L2xpPiAgICANCiAgICAgIDxsaT4gICAgICAgIA0KICAgICAgPHA+SW5zdHJ1Y3Rpb246IA0KICAgICAgICA8Y29kZT5Nb2R1bGVuYW1lW2FjdGlvbj1kZWZhdWx0LHNvcnRieT10aXRsZSxzb3J0b3JkZXI9ZGVzY10NCiAgICAgICAgPC9jb2RlPjxiciAvPg0KICAgICAgICBQb3NzaWJsZSB2YWx1ZTogZXZlcnl0aGluZyB5b3UgdXNlZCBpbiBtb2R1bGUNCiAgICAgICAgQXBwbGljYWJsZSB0bzogTW9kdWxlDQogICAgICA8L3A+ICAgIA0KICAgICAgPC9saT4gICAgDQogICAgICA8bGk+ICAgICAgICANCiAgICAgIDxwPkluc3RydWN0aW9uOiANCiAgICAgICAgPGNvZGU+bXVsdGlwbGVbNV0NCiAgICAgICAgPC9jb2RlPjxiciAvPg0KICAgICAgICBQb3NzaWJsZSB2YWx1ZTogaW50ZWdlcjxiciAvPg0KICAgICAgICBBcHBsaWNhYmxlIHRvOiBNb2R1bGUNCiAgICAgIDwvcD4gICAgDQogICAgICA8L2xpPiAgDQogICAgICA8bGk+ICAgICAgICANCiAgICAgIDxwPkluc3RydWN0aW9uOiANCiAgICAgICAgPGNvZGU+YWxsb3dbcGRmLGdpZixwbmcsanBlZyxqcGddDQogICAgICAgIDwvY29kZT48YnIgLz4NCiAgICAgICAgUG9zc2libGUgdmFsdWU6IGV4dGVuc2lvbiwuLi4gKGtlZXAgbG93ZXJjYXNlKTxiciAvPg0KICAgICAgICBBcHBsaWNhYmxlIHRvOiBVcGxvYWQgRmlsZSwgU2VsZWN0IEZpbGUNCiAgICAgIDwvcD4gICAgDQogICAgICA8L2xpPiAgICANCiAgICAgIDxsaT4gICAgICAgIA0KICAgICAgPHA+SW5zdHJ1Y3Rpb246IA0KICAgICAgICA8Y29kZT5kaXJbL3BhdGgvdG8vZGlyXQ0KICAgICAgICA8L2NvZGU+PGJyIC8+DQogICAgICAgIFBvc3NpYmxlIHZhbHVlOiBEaXJlY3RvcnkgcGF0aCB0aGF0IHdpbGwgYmUgYXBwZW5kZWQgdG8gDQogICAgICAgIDxjb2RlPlwkY29uZmlnWyd1cGxvYWRzX3BhdGgnXQ0KICAgICAgICA8L2NvZGU+LiBObyBzbGFzaCBhdCB0aGUgZW5kLjxiciAvPg0KICAgICAgICBBcHBsaWNhYmxlIHRvOiBTZWxlY3QgRmlsZQ0KICAgICAgPC9wPiAgICANCiAgICAgIDwvbGk+ICAgIA0KICAgICAgPGxpPiAgICAgICAgDQogICAgICA8cD5JbnN0cnVjdGlvbjogDQogICAgICAgIDxjb2RlPmV4Y2x1ZGVfcHJlZml4W3RodW1iXyxmb29fXQ0KICAgICAgICA8L2NvZGU+PGJyIC8+DQogICAgICAgIFBvc3NpYmxlIHZhbHVlOiBwcmVmaXgsLi4uPGJyIC8+DQogICAgICAgIEFwcGxpY2FibGUgdG86IFNlbGVjdCBGaWxlDQogICAgICA8L3A+ICAgIA0KICAgICAgPC9saT4gICAgDQogICAgICA8bGk+ICAgICAgICANCiAgICAgIDxwPkluc3RydWN0aW9uOiANCiAgICAgICAgPGNvZGU+ZGF0ZWZvcm1hdFtkZC9tbS95eV0NCiAgICAgICAgPC9jb2RlPjxiciAvPg0KICAgICAgICBQb3NzaWJsZSB2YWx1ZTogRGF0ZSBmb3JtYXQgdXNlZCBieSB0aGUganF1ZXJ5IGRhdGVwaWNrZXI8YnIgLz4NCiAgICAgICAgQXBwbGljYWJsZSB0bzogVGV4dCBBcmVhDQogICAgICA8L3A+ICAgIA0KICAgICAgPC9saT4NCiAgICA8L3VsPg0KICAgIDxwPllvdSBjYW4gc3BlY2lmeSBtdWx0aXBsZSBpbnN0cnVjdGlvbnMgc2VwYXJhdGVkIGJ5IGEgc2VtaWNvbG9uICggDQogICAgICA8Y29kZT47DQogICAgICA8L2NvZGU+ICksIGZvciBleGFtcGxlOg0KICAgIDwvcD4NCiAgICA8cD4NCiAgICAgIDxjb2RlPmFsbG93W3BkZl07ZGlyWy9kb2NzL3BkZl0NCiAgICAgIDwvY29kZT4NCiAgICA8L3A+DQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJjYXRlZ29yaWVzX2MiPg0KICAgIDxoMz5DYXRlZ29yaWVzPC9oMz4NCiAgICA8cD5Pbmx5IHNpbmdsZSBsZXZlbCBjYXRlZ29yaWVzIGFyZSBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lLg0KICAgIDwvcD4NCiAgPC9kaXY+DQogIDxkaXYgaWQ9ImV4YW1wbGVzX2MiPg0KICAgIDxoMz5FeGFtcGxlczwvaDM+DQogICAgPHA+e01vZHVsZU5hbWUgZmlsdGVyXzFfZXF1YWw9MSBkYXRlX3N0YXJ0PTEgZGF0ZV9lbmQ9MX08L3A+DQogICAgPHVsPg0KICAgIDxsaT52YWx1ZSBmcm9tIGN1c3RvbSBmaWVsZGlkIHdpdGggaWQgMSA9IDE8L2xpPg0KICAgIDxsaT5kYXRlIHN0YXJ0ICA8IE5PVzwvbGk+DQogICAgPGxpPmVuZCBkYXRlICA+IE5PVzwvbGk+DQogICAgPC91bD4NCiAgICA8YnIgLz4NCiAgICA8cD57TW9kdWxlTmFtZSBmaWx0ZXJfaXRlbUlkX2luc2V0PScxLDIsMyd9PC9wPg0KICAgIDx1bD4NCiAgICA8bGk+aXRlbSBpZCBpcyBpcyBpbiBzZXQgKDEsMiwzKTwvbGk+DQogICAgPC91bD4NCiAgICA8YnIgLz4NCiAgICA8cD57TW9kdWxlTmFtZSAgYWxscm93PSJpdGVtcyJ9PC9wPg0KICAgIDx1bD4NCiAgICA8bGk+c2V0IGFsbCByZXN1bHQgdG8gc21hcnR5IHZhciBcJGl0ZW1zPC9saT4gICAgDQogICAgPC91bD4NCiAgICA8YnIgLz4NCiAgICA8cD57TW9kdWxlTmFtZSBhY3Rpb249ImRldGFpbCIgaXRlbV9pZD0xICBvbmVyb3c9Iml0ZW0ifTwvcD4NCiAgICA8dWw+DQogICAgPGxpPmRldGFpbCBmcm9tIGl0ZW0gd2l0aCBpZCAxPC9saT4gICAgDQogICAgPGxpPnNldCByZXN1bHQgdG8gc21hcnR5IHZhciBcJGl0ZW08L2xpPiAgICANCiAgICA8L3VsPg0KICA8L2Rpdj4NCjwvZGl2Pg0KRU9UOw0KJGxhbmdbJ2hlbHBfcGFyYW1fYWN0aW9uJ10gPSA8PDxFT1QNCidPdmVycmlkZSB0aGUgZGVmYXVsdCBhY3Rpb24uIFBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQo8bGk+JnF1b3Q7ZGVmYXVsdCZxdW90OyAtIHRvIGRpc3BsYXkgdGhlIHN1bW1hcnkgdmlldy48L2xpPg0KPGxpPiZxdW90O2RldGFpbCZxdW90OyAtIHRvIGRpc3BsYXkgYSBzcGVjaWZpZWQgZW50cnkgaW4gZGV0YWlsIG1vZGUuPC9saT4NCjxsaT4mcXVvdDtjYXRlZ29yaWVzJnF1b3Q7IC0gdG8gZGlzcGxheSB0aGUgY2F0ZWdvcmllczwvbGk+DQo8bGk+JnF1b3Q7ZmlsdGVyJnF1b3Q7IC0gZmlsdGVyIGZvciBpdGVtczwvbGk+DQo8L3VsPg0KRU9UOw0KJGxhbmdbJ2hlbHBfcGFyYW1fY2F0ZWdvcnlfaWQnXSA9ICdTcGVjaWZ5IHRoZSBjYXRlZ29yeSBpZCB0byBkaXNwbGF5IGl0ZW1zIG9ubHkgZnJvbSB0aGlzIGNhdGVnb3J5Lic7DQokbGFuZ1snaGVscF9wYXJhbV9jYXRlZ29yeSddID0gJ1NwZWNpZnkgdGhlIGNhdGVnb3J5IGFsaWFzIHRvIGRpc3BsYXkgaXRlbXMgb25seSBmcm9tIHRoaXMgY2F0ZWdvcnkuJzsNCiRsYW5nWydoZWxwX3BhcmFtX2RldGFpbHRlbXBsYXRlJ10gPSAnVGhlIGRldGFpbCB0ZW1wbGF0ZSB5b3Ugd2lzaCB0byB1c2UuJzsNCiRsYW5nWydoZWxwX3BhcmFtX3N1bW1hcnl0ZW1wbGF0ZSddID0gJ1RoZSBzdW1tYXJ5IHRlbXBsYXRlIHlvdSB3aXNoIHRvIHVzZSc7DQokbGFuZ1snaGVscF9wYXJhbV9jYXRlZ29yeXRlbXBsYXRlJ10gPSAnVGhlIGNhdGVnb3J5IHRlbXBsYXRlIHlvdSB3aXNoIHRvIHVzZSc7DQokbGFuZ1snaGVscF9wYXJhbV9maWx0ZXJ0ZW1wbGF0ZSddID0gJ1RoZSBmaWx0ZXIgdGVtcGxhdGUgeW91IHdpc2ggdG8gdXNlJzsNCiRsYW5nWydoZWxwX3BhcmFtX29yZGVyYnknXSA9ICdZb3UgY2FuIG9yZGVyIGJ5IGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbHVtbnM6IGl0ZW1faWQsIHRpdGxlLCBpdGVtX2RhdGUsIG1vZGlmaWVkLCByYW5kb20sIGY6ZmllbGRhbGlhcy4nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fcGFnZWxpbWl0J10gPSAnUGFnZSBsaW1pdCBmb3IgcGFnaW5hdGlvbic7DQokbGFuZ1snaGVscF9wYXJhbV9zb3J0b3JkZXInXSA9ICdPcmRlciBmbyAgZGVmYXVsdCBhY3Rpb24nOw0KJGxhbmdbJ2hlbHBfcGFyYW1faW5saW5lJ10gPSAnSW5saW5lJzsNCiRsYW5nWydoZWxwX3BhcmFtX29uZXJvdyddID0gJ1NldCByZXN1bHQgYXJyYXkgdG8gc21hcnR5LiBGb3IgZGVmYXVsdCBhbmQgZGV0YWlsIGFjdGlvbic7DQokbGFuZ1snaGVscF9wYXJhbV9hbGxyb3cnXSA9ICdTZXQgcmVzdWx0cyBhcnJheSB0byBzbWFydHkuIEZvciBkZWZhdWx0IGFjdGlvbic7DQokbGFuZ1snaGVscF9wYXJhbV9vbmVjb3VudCddID0gJ1NldCBjb3VudCByZXN1bHQgdG8gc21hcnR5LiBGb3IgZGVmYXVsdCBhY3Rpb24nOw0KJGxhbmdbJ2hlbHBfcGFyYW1fZGF0ZV9zdGFydCddID0gJ0FsbG93IHVzaW5nIGRhdGVfZW5kIGZvciBwdWJsaWMgaXRlbXMnOw0KJGxhbmdbJ2hlbHBfcGFyYW1fZGF0ZV9lbmQnXSA9ICdJdGVtcyBleHBpcmF0aW9uJzsNCiRsYW5nWydoZWxwX3BhcmFtX2ZpbHRlciddID0gJ0ZpbHRlciBmb3IgcmVzdWx0cy4gWW91IGNhbiB1c2UgZmlsdGVyX0ZJRUxESURfQ09ORElUSU9OIGZvciBmaWVsZHMgb3IgZmlsdGVyX1BSRUZfQ09ORElUSU9OIGZvciBpdGVtIGNvbHMuPGJyIC8+DQpDb25kaXRpb24gZm9yIEZJRUxEUyAoZXRjOiBmaWVsZF8xX2VxdWFsPVwnYXBwbGVcJyk6PGJyICAvPg0KPHVsPg0KPGxpPm51bGw8L2xpPg0KPGxpPm5vdG51bGw8L2xpPg0KPGxpPmluPC9saT4NCjxsaT5pbnNldDwvbGk+DQo8bGk+aW5zZXQ8L2xpPg0KPGxpPmxlc3M8L2xpPg0KPGxpPmxlc3NlcXVhbDwvbGk+DQo8bGk+Z3JlYXRlcjwvbGk+DQo8bGk+Z3JlYXRlcmVxdWFsPC9saT4NCjxsaT5saWtlPC9saT4NCjxsaT5ub3RlcXVhbDwvbGk+DQo8bGk+ZXF1YWw8L2xpPg0KPC91bD4NCkNvbmRpdGlvbiBmb3IgaXRlbSBjb2xzIC0gaXRlbUlkLCBpdGVtRGF0ZUVuZCwgaXRlbURhdGUsIGFsaWFzLCB1cmwgICAoZXRjOiBmaWVsZF9pdGVtRGF0ZUVuZF9lcXVhbD1cJzIwMTEtMDEtMDEgMDA6MDA6MDBcJyk6PGJyICAvPg0KPHVsPg0KPGxpPm51bGw8L2xpPg0KPGxpPm5vdG51bGw8L2xpPg0KPGxpPmluPC9saT4NCjxsaT5pbnNldDwvbGk+DQo8bGk+bGlrZTwvbGk+DQo8bGk+bGVzczwvbGk+DQo8bGk+bGVzc2VxdWFsPC9saT4NCjxsaT5ncmVhdGVyPC9saT4NCjxsaT5ncmVhdGVyZXF1YWw8L2xpPg0KPGxpPm5vdGVxdWFsPC9saT4NCjxsaT5lcXVhbDwvbGk+DQo8L3VsPg0KJzsNCg0KJGxhbmdbJ2hlbHBfcGFyYW1fZGV0YWlscGFnZSddID0gJ1BhZ2UgdG8gZGlzcGxheSBpdGVtIGRldGFpbHMgaW4uIE11c3QgYmUgYSBwYWdlIGFsaWFzLiBVc2VkIHRvIGFsbG93IGRldGFpbHMgdG8gYmUgZGlzcGxheWVkIGluIGEgZGlmZmVyZW50IHBhZ2UgdGhhbiBzdW1tYXJ5Lic7DQokbGFuZ1snaGVscF9wYXJhbV9pdGVtJ10gPSAnVGhpcyBwYXJhbWV0ZXIgaXMgb25seSBhcHBsaWNhYmxlIHRvIHRoZSBkZXRhaWwgdmlldy4gSXQgYWxsb3dzIHNwZWNpZnlpbmcgd2hpY2ggaXRlbSB0byBkaXNwbGF5IGluIGRldGFpbCBtb2RlLiBNdXN0IGJlIGFuIGl0ZW0gYWxpYXMuJzsNCj8+]]></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+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCg0KLy8gY3JlYXRlIGNhdGVnb3J5IHRhYmxlDQokZmllbGRzID0gIg0KCWNhdGVnb3J5X2lkIEkgS0VZLA0KCWNhdGVnb3J5X25hbWUgQygyNTUpLA0KCWNhdGVnb3J5X2FsaWFzIEMoMjU1KSwNCglleHRyYSBDKDI1NSksDQoJZXh0cmEyIFgsDQoJcGFyZW50X2lkIEksDQoJaGllcmFyY2h5IEMoMjU1KSwNCiAgICAgICAgcG9zaXRpb24gSSwNCiAgICAgICAgaGllcmFyY2h5X3Bvc2l0aW9uIEMoMjU1KSwNCglsb25nX25hbWUgWCwNCiAgICAgICAgdXNlcmdyb3VwIEksDQoJY3JlYXRlX2RhdGUgVCwNCgltb2RpZmllZF9kYXRlIFQNCiI7DQoNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfY2F0ZWdvcmllcycsICRmaWVsZHMsICR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCg0KLy8gY3JlYXRlIGZpZWxkZGVmIHRhYmxlDQoNCiRmaWVsZHMgPSAnDQogICAgZmllbGRkZWZfaWQgSSBLRVkgQVVUTywNCiAgICBuYW1lIEMoMjU1KSwNCiAgICBhbGlhcyBDKDI1NSksDQogICAgaGVscCBDKDI1NSksDQogICAgdHlwZSBDKDUwKSwNCiAgICBwb3NpdGlvbiBJLA0KICAgIHJlcXVpcmVkIEkoMSksDQogICAgZnJvbnRlbmQgSSgxKSwNCiAgICBlZGl0dmlldyBJKDEpLA0KICAgIGZpbHRlcl9mcm9udGVuZCBJKDEpLA0KICAgIGZpbHRlcl9hZG1pbiBJKDEpLA0KICAgIHNlYXJjaGFibGUgSSgxKSwNCiAgICBleHRyYSBDKDI1NSkNCic7DQoNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGRkZWYnLCAkZmllbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQovLyBjcmVhdGUgZmllbGR2YWwgdGFibGUNCg0KJGZpZWxkcyA9ICcNCiAgICBpdGVtX2lkIEkgS0VZIE5PVCBudWxsLA0KICAgIGZpZWxkZGVmX2lkIEkgS0VZIE5PVCBudWxsLA0KICAgIHZhbHVlIFgNCic7DQoNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkbW9kLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfZmllbGR2YWwnLCAkZmllbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQovLyBjcmVhdGUgaXRlbSBleHRyYSB0YWJsZQ0KDQokZmllbGRzID0gJw0KICAgIGl0ZW1faWQgSSBLRVkgTk9UIG51bGwsDQogICAgdmFsdWUgSSBLRVkgTk9UIG51bGwsDQonOw0KDQokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJG1vZC0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX2l0ZW1fZXh0cmEnLCAkZmllbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQovLyBjYXRlZ29yeSB0ZW1wbGF0ZQ0KJGZuID0gY21zX2pvaW5fcGF0aChkaXJuYW1lKF9fRklMRV9fKSwgJ3RlbXBsYXRlcycsICdvcmlnX2NhdGVnb3J5X3RlbXBsYXRlLnRwbCcpOw0KaWYgKGZpbGVfZXhpc3RzKCRmbikpIHsNCiAgICAkdGVtcGxhdGUgPSBmaWxlX2dldF9jb250ZW50cygkZm4pOw0KICAgICRtb2QtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRfY2F0ZWdvcnlfdGVtcGxhdGUnLCAkdGVtcGxhdGUpOw0KICAgICRtb2QtPlNldFRlbXBsYXRlKCdjYXRlZ29yeV90ZW1wbGF0ZVNhbXBsZScsICR0ZW1wbGF0ZSk7DQogICAgJG1vZC0+U2V0UHJlZmVyZW5jZSgnY3VycmVudF9jYXRlZ29yeV90ZW1wbGF0ZScsICdTYW1wbGUnKTsNCn0NCg0KLy8gc3VtbWFyeSB0ZW1wbGF0ZQ0KJGZuID0gY21zX2pvaW5fcGF0aChkaXJuYW1lKF9fRklMRV9fKSwgJ3RlbXBsYXRlcycsICdvcmlnX3N1bW1hcnlfdGVtcGxhdGUudHBsJyk7DQppZiAoZmlsZV9leGlzdHMoJGZuKSkgew0KICAgICR0ZW1wbGF0ZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7DQogICAgJG1vZC0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9zdW1tYXJ5X3RlbXBsYXRlJywgJHRlbXBsYXRlKTsNCiAgICAkbW9kLT5TZXRUZW1wbGF0ZSgnc3VtbWFyeV90ZW1wbGF0ZVNhbXBsZScsICR0ZW1wbGF0ZSk7DQogICAgJG1vZC0+U2V0UHJlZmVyZW5jZSgnY3VycmVudF9zdW1tYXJ5X3RlbXBsYXRlJywgJ1NhbXBsZScpOw0KfQ0KDQovLyBkZXRhaWwgdGVtcGxhdGUNCiRmbiA9IGNtc19qb2luX3BhdGgoZGlybmFtZShfX0ZJTEVfXyksICd0ZW1wbGF0ZXMnLCAnb3JpZ19kZXRhaWxfdGVtcGxhdGUudHBsJyk7DQppZiAoZmlsZV9leGlzdHMoJGZuKSkgew0KICAgICR0ZW1wbGF0ZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7DQogICAgJG1vZC0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9kZXRhaWxfdGVtcGxhdGUnLCAkdGVtcGxhdGUpOw0KICAgICRtb2QtPlNldFRlbXBsYXRlKCdkZXRhaWxfdGVtcGxhdGVTYW1wbGUnLCAkdGVtcGxhdGUpOw0KICAgICRtb2QtPlNldFByZWZlcmVuY2UoJ2N1cnJlbnRfZGV0YWlsX3RlbXBsYXRlJywgJ1NhbXBsZScpOw0KfQ0KDQovLyBmaWx0ZXIgdGVtcGxhdGUNCiRmbiA9IGNtc19qb2luX3BhdGgoZGlybmFtZShfX0ZJTEVfXyksICd0ZW1wbGF0ZXMnLCAnb3JpZ19maWx0ZXJfdGVtcGxhdGUudHBsJyk7DQppZiAoZmlsZV9leGlzdHMoJGZuKSkgew0KICAgICR0ZW1wbGF0ZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7DQogICAgJG1vZC0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9maWx0ZXJfdGVtcGxhdGUnLCAkdGVtcGxhdGUpOw0KICAgICRtb2QtPlNldFRlbXBsYXRlKCdmaWx0ZXJfdGVtcGxhdGVTYW1wbGUnLCAkdGVtcGxhdGUpOw0KICAgICRtb2QtPlNldFByZWZlcmVuY2UoJ2N1cnJlbnRfZmlsdGVyX3RlbXBsYXRlJywgJ1NhbXBsZScpOw0KfQ0KDQoNCi8vIHNldCBwcmVmZXJlbmNlcw0KJG1vZC0+U2V0UHJlZmVyZW5jZSgndXJsX3ByZWZpeCcsIG11bmdlX3N0cmluZ190b191cmwoJG1vZC0+R2V0TmFtZSgpLCB0cnVlKSk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdmcmllbmRseW5hbWUnLCAkbW9kLT5HZXROYW1lKCkpOw0KJG1vZC0+U2V0UHJlZmVyZW5jZSgnaXRlbV9zaW5ndWxhcicsIGdlbmVyYXRvcigpLT5MYW5nKCdpdGVtJykpOw0KJG1vZC0+U2V0UHJlZmVyZW5jZSgnaXRlbV9wbHVyYWwnLCBnZW5lcmF0b3IoKS0+TGFuZygnaXRlbXMnKSk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdpdGVtX3RpdGxlJywgZ2VuZXJhdG9yKCktPkxhbmcoJ2l0ZW1fdGl0bGUnKSk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdpdGVtX3RpdGxlX2VkaXQnLCAxKTsNCiRtb2QtPlNldFByZWZlcmVuY2UoJ2NhdGVnb3J5X2V4dHJhX2xhYmVsJywgJG1vZC0+TGFuZygnZXh0cmEnKSk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdjYXRlZ29yeV9leHRyYTJfbGFiZWwnLCAkbW9kLT5MYW5nKCdleHRyYScpKTsNCiRtb2QtPlNldFByZWZlcmVuY2UoJ2l0ZW1fY2F0ZWdvcnlfZWRpdCcsIDEpOw0KJG1vZC0+U2V0UHJlZmVyZW5jZSgncmVjdXJzaXZlJywgMCk7DQoNCiRtb2QtPlNldFByZWZlcmVuY2UoJ21vZGUnLCAnYWR2YW5jZWQnKTsNCiRtb2QtPlNldFByZWZlcmVuY2UoJ3NvcnRvcmRlcl9hZHZhbmNlZCcsICdkZXNjJyk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdzb3J0YnlfYWR2YW5jZWQnLCAnY3JlYXRlX2RhdGUnKTsNCiRtb2QtPlNldFByZWZlcmVuY2UoJ3N1bW1hcnlfcGFnZWxpbWl0X2FkdmFuY2VkJywgMjUpOw0KDQokbW9kLT5TZXRQcmVmZXJlbmNlKCdzb3J0b3JkZXJfc2ltcGxlJywgJ2Rlc2MnKTsNCiRtb2QtPlNldFByZWZlcmVuY2UoJ3NvcnRieV9zaW1wbGUnLCAncG9zaXRpb24nKTsNCiRtb2QtPlNldFByZWZlcmVuY2UoJ3N1bW1hcnlfcGFnZWxpbWl0X3NpbXBsZScsIDEwMDAwKTsNCg0KJG1vZC0+U2V0UHJlZmVyZW5jZSgnaGFzX2FkbWluJywgMSk7DQokbW9kLT5TZXRQcmVmZXJlbmNlKCdzZWFyY2hhYmxlJywgMSk7DQoNCiR0aGlzLT5DcmVhdGVFdmVudCgnSXRlbUFkZGVkJyk7DQokdGhpcy0+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_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_ordercategor.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_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+SW5pdGlhbGl6ZUFkbWluKCk7DQogICAgICAgICR0aGlzLT5Jbml0aWFsaXplRnJvbnRlbmQoKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gQWxsb3dBdXRvVXBncmFkZSgpIHsNCiAgICAgICAgcmV0dXJuIEZBTFNFOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBJbml0aWFsaXplQWRtaW4oKSB7DQogICAgICAgIC8vIHBhcmFtZXRlcnMgdGhhdCBjYW4gYmUgY2FsbGVkIGluIHRoZSBtb2R1bGUgdGFnDQogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2FjdGlvbicsICdkZWZhdWx0JywgJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fYWN0aW9uJykpOw0KICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdjYXRlZ29yeV9pZCcsIDAsICR0aGlzLT5MYW5nKCdoZWxwX3BhcmFtX2NhdGVnb3J5X2lkJykpOw0KICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdjYXRlZ29yeScsIDAsICR0aGlzLT5MYW5nKCdoZWxwX3BhcmFtX2NhdGVnb3J5JykpOw0KICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdvcmRlcmJ5JywgJ2NyZWF0ZV9kYXRlJywgJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fb3JkZXJieScpKTsNCiAgICAgICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignZGV0YWlsdGVtcGxhdGUnLCAnJywgJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fZGV0YWlsdGVtcGxhdGUnKSk7DQogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3N1bW1hcnl0ZW1wbGF0ZScsICcnLCAkdGhpcy0+TGFuZygnaGVscF9wYXJhbV9zdW1tYXJ5dGVtcGxhdGUnKSk7DQogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2NhdGVnb3J5dGVtcGxhdGUnLCAnJywgJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fY2F0ZWdvcnl0ZW1wbGF0ZScpKTsNCiAgICAgICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignZmlsdGVydGVtcGxhdGUnLCAnJywgJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fZmlsdGVydGVtcGxhdGUnKSk7DQogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2RldGFpbHBhZ2UnLCAnJywgJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fZGV0YWlscGFnZScpKTsNCiAgICAgICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignaXRlbV9pZCcsIDAsICR0aGlzLT5MYW5nKCdoZWxwX3BhcmFtX2l0ZW0nKSk7DQogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2NhdGVnb3J5X2lkJywgMCwgJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fY2F0ZWdvcnlfaWQnKSk7DQogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2NhdGVnb3J5JywgJycsICR0aGlzLT5MYW5nKCdoZWxwX3BhcmFtX2NhdGVnb3J5X2lkJykpOw0KICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdwYWdlbGltaXQnLCAwLCAkdGhpcy0+TGFuZygnaGVscF9wYXJhbV9wYWdlbGltaXQnKSk7DQogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3NvcnRvcmRlcicsICdkZXNjJywgJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fc29ydG9yZGVyJykpOw0KICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdpbmxpbmUnLCAwLCAkdGhpcy0+TGFuZygnaGVscF9wYXJhbV9pbmxpbmUnKSk7DQogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ29uZXJvdycsICcnLCAkdGhpcy0+TGFuZygnaGVscF9wYXJhbV9vbmVyb3cnKSk7DQogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2FsbHJvdycsICcnLCAkdGhpcy0+TGFuZygnaGVscF9wYXJhbV9hbGxyb3cnKSk7DQogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ29uZWNvdW50JywgJycsICR0aGlzLT5MYW5nKCdoZWxwX3BhcmFtX29uZWNvdW50JykpOw0KICAgICAgICAvLyR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2l0ZW1fZGF0ZV9mcm9tX3RvJywgJycsICR0aGlzLT5MYW5nKCdoZWxwX3BhcmFtX2l0ZW1fZGF0ZV9mcm9tX3RvJykpOw0KICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdkYXRlX3N0YXJ0JywgJycsICR0aGlzLT5MYW5nKCdoZWxwX3BhcmFtX2RhdGVfc3RhcnQnKSk7DQogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2RhdGVfZW5kJywgJycsICR0aGlzLT5MYW5nKCdoZWxwX3BhcmFtX2RhdGVfZW5kJykpOw0KICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdmaWx0ZXJfJywgJycsICR0aGlzLT5MYW5nKCdoZWxwX3BhcmFtX2ZpbHRlcicpKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkgew0KDQogICAgICAgICR0aGlzLT5SZWdpc3Rlck1vZHVsZVBsdWdpbigpOw0KICAgICAgICAkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKCk7DQoNCiAgICAgICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3VybF9lZGl0JykpIHsNCiAgICAgICAgICAgIC8vIGN1c3RvbSB1cmwgc3VwcG9ydA0KICAgICAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiAgICAgICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgaXRlbV9pZCx1cmwgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gJHRoaXMtPl9HZXRNb2R1bGVBbGlhcygpIC4gJ19pdGVtDQogICAgICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBhY3RpdmUgPSAxIEFORCB1cmwgIT0gXCdcJyc7DQogICAgICAgICAgICAkdG1wID0gJGRiLT5HZXRBcnJheSgkcXVlcnkpOw0KICAgICAgICAgICAgaWYgKGlzX2FycmF5KCR0bXApKSB7DQogICAgICAgICAgICAgICAgJGRldGFpbHBhZ2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kZXRhaWxfcmV0dXJuaWQnLCAtMSk7DQogICAgICAgICAgICAgICAgaWYgKCRkZXRhaWxwYWdlID09IC0xKSB7DQogICAgICAgICAgICAgICAgICAgICRjb250ZW50b3BzID0gY21zbXMoKS0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsNCiAgICAgICAgICAgICAgICAgICAgJGRldGFpbHBhZ2UgPSAkY29udGVudG9wcy0+R2V0RGVmYXVsdENvbnRlbnQoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHRtcCBhcyAkb25lKSB7DQogICAgICAgICAgICAgICAgICAgICRwYXJtcyA9IGFycmF5KCdhY3Rpb24nID0+ICdkZXRhaWwnLCAncmV0dXJuaWQnID0+ICRkZXRhaWxwYWdlLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ2l0ZW1faWQnID0+ICRvbmVbJ2l0ZW1faWQnXSk7DQogICAgICAgICAgICAgICAgICAgICRyb3V0ZSA9IG5ldyBDbXNSb3V0ZSgkb25lWyd1cmwnXSwgJHRoaXMtPkdldE5hbWUoKSwgJHBhcm1zLCBUUlVFKTsNCiAgICAgICAgICAgICAgICAgICAgY21zX3JvdXRlX21hbmFnZXI6OnJlZ2lzdGVyKCRyb3V0ZSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3BhZ2UnLCBDTEVBTl9JTlQpOw0KICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncGFnZWxpbWl0JywgQ0xFQU5fSU5UKTsNCiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NhdGVnb3J5X2lkJywgQ0xFQU5fSU5UKTsNCiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NhdGVnb3J5JywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ29yZGVyYnknLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc29ydG9yZGVyJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3NvcnRieScsIENMRUFOX1NUUklORyk7DQogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjYXRlZ29yeXRlbXBsYXRlJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3N1bW1hcnl0ZW1wbGF0ZScsIENMRUFOX1NUUklORyk7DQogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdkZXRhaWx0ZW1wbGF0ZScsIENMRUFOX1NUUklORyk7DQogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdkZXRhaWxwYWdlJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2l0ZW1faWQnLCBDTEVBTl9JTlQpOw0KICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaW5saW5lJywgQ0xFQU5fSU5UKTsNCiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3N1Ym1pdCcsIENMRUFOX1NUUklORyk7DQogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdqdW5rJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ29uZXJvdycsIENMRUFOX1NUUklORyk7DQogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhbGxyb3cnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnb25lY291bnQnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaXRlbXMnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaXRlbV9kYXRlX2Zyb21fdG8nLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaXRlbWxpc3QnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZGF0ZV9zdGFydCcsIENMRUFOX1NUUklORyk7DQogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdkYXRlX2VuZCcsIENMRUFOX1NUUklORyk7DQogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjZF9vcmlncGFnZScsIENMRUFOX1NUUklORyk7DQogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdub2NhY2hlJywgQ0xFQU5fSU5UKTsNCiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NhY2hlX2tleScsIENMRUFOX1NUUklORyk7DQogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKENMRUFOX1JFR0VYUCAuICcvZmlsdGVyXyovJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoQ0xFQU5fUkVHRVhQIC4gJy9kYXRlZnJvbSovJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoQ0xFQU5fUkVHRVhQIC4gJy9kYXRldG8qLycsIENMRUFOX1NUUklORyk7DQogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKENMRUFOX1JFR0VYUCAuICcvJyAuICR0aGlzLT5fR2V0TW9kdWxlQWxpYXMoKSAuICdfKi8nLCBDTEVBTl9TVFJJTkcpOw0KDQoNCiAgICAgICAgJGRlZmF1bHRfZGV0YWlscGFnZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2NhdGVnb3J5X3JldHVybmlkJyk7DQoNCiAgICAgICAgJHRoaXMtPlJlZ2lzdGVyUm91dGUoJy8nIC4gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VybF9wcmVmaXgnLCBtdW5nZV9zdHJpbmdfdG9fdXJsKCR0aGlzLT5HZXROYW1lKCksIHRydWUpKSAuICdcL1tjQ11cLyg/UDxjYXRlZ29yeV9pZD5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKVwvKD9QPGp1bms+Lio/KVwvKD9QPGNhdGVnb3J5dGVtcGxhdGU+WzAtOV0rPykkLycsIGFycmF5KCdhY3Rpb24nID0+ICdkZWZhdWx0JykpOw0KICAgICAgICAkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgnLycgLiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXJsX3ByZWZpeCcsIG11bmdlX3N0cmluZ190b191cmwoJHRoaXMtPkdldE5hbWUoKSwgdHJ1ZSkpIC4gJ1wvW2NDXVwvKD9QPGNhdGVnb3J5X2lkPlswLTldKylcLyg/UDxyZXR1cm5pZD5bMC05XSspXC8oP1A8anVuaz4uKj8pJC8nLCBhcnJheSgnYWN0aW9uJyA9PiAnZGVmYXVsdCcpKTsNCiAgICAgICAgJHRoaXMtPlJlZ2lzdGVyUm91dGUoJy8nIC4gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VybF9wcmVmaXgnLCBtdW5nZV9zdHJpbmdfdG9fdXJsKCR0aGlzLT5HZXROYW1lKCksIHRydWUpKSAuICdcL1tjQ11cLyg/UDxjYXRlZ29yeV9pZD5bMC05XSspXC8oP1A8anVuaz4uKj8pJC8nLCBhcnJheSgnYWN0aW9uJyA9PiAnZGVmYXVsdCcsICdyZXR1cm5pZCcgPT4gJGRlZmF1bHRfZGV0YWlscGFnZSkpOw0KICAgICAgICAkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgnLycgLiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXJsX3ByZWZpeCcsIG11bmdlX3N0cmluZ190b191cmwoJHRoaXMtPkdldE5hbWUoKSwgdHJ1ZSkpIC4gJ1wvW2NDXVwvKD9QPGNhdGVnb3J5X2lkPlswLTldKykkLycsIGFycmF5KCdhY3Rpb24nID0+ICdkZWZhdWx0JywgJ3JldHVybmlkJyA9PiAkZGVmYXVsdF9kZXRhaWxwYWdlKSk7DQoNCiAgICAgICAgJGRlZmF1bHRfZGV0YWlscGFnZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2RldGFpbF9yZXR1cm5pZCcpOw0KDQogICAgICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKCcvJyAuICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1cmxfcHJlZml4JywgbXVuZ2Vfc3RyaW5nX3RvX3VybCgkdGhpcy0+R2V0TmFtZSgpLCB0cnVlKSkgLiAnXC8oP1A8aXRlbV9pZD5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKVwvKD9QPGp1bms+Lio/KVwvKD9QPGRldGFpbHRlbXBsYXRlPlswLTldKz8pJC8nLCBhcnJheSgnYWN0aW9uJyA9PiAnZGV0YWlsJykpOw0KICAgICAgICAkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgnLycgLiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXJsX3ByZWZpeCcsIG11bmdlX3N0cmluZ190b191cmwoJHRoaXMtPkdldE5hbWUoKSwgdHJ1ZSkpIC4gJ1wvKD9QPGl0ZW1faWQ+WzAtOV0rKVwvKD9QPHJldHVybmlkPlswLTldKylcLyg/UDxqdW5rPi4qPykkLycsIGFycmF5KCdhY3Rpb24nID0+ICdkZXRhaWwnKSk7DQogICAgICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKCcvJyAuICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1cmxfcHJlZml4JywgbXVuZ2Vfc3RyaW5nX3RvX3VybCgkdGhpcy0+R2V0TmFtZSgpLCB0cnVlKSkgLiAnXC8oP1A8aXRlbV9pZD5bMC05XSspXC8oP1A8anVuaz4uKj8pJC8nLCBhcnJheSgnYWN0aW9uJyA9PiAnZGV0YWlsJywgJ3JldHVybmlkJyA9PiAkZGVmYXVsdF9kZXRhaWxwYWdlKSk7DQogICAgICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKCcvJyAuICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1cmxfcHJlZml4JywgbXVuZ2Vfc3RyaW5nX3RvX3VybCgkdGhpcy0+R2V0TmFtZSgpLCB0cnVlKSkgLiAnXC8oP1A8aXRlbV9pZD5bMC05XSspJC8nLCBhcnJheSgnYWN0aW9uJyA9PiAnZGV0YWlsJywgJ3JldHVybmlkJyA9PiAkZGVmYXVsdF9kZXRhaWxwYWdlKSk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIExhenlMb2FkRnJvbnRlbmQoKSB7DQogICAgICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbGF6eWxvYWRpbmcnKSkgew0KICAgICAgICAgICAgcmV0dXJuIFRSVUU7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICByZXR1cm4gRkFMU0U7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RXZlbnREZXNjcmlwdGlvbigkZXZlbnRuYW1lKSB7DQogICAgICAgIHJldHVybiAkdGhpcy0+bGFuZygnZXZlbnRkZXNjLScgLiAkZXZlbnRuYW1lKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKSB7DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIERvQWN0aW9uIC0gZGVmYXVsdCBhZGQgZGVmYXVsdCBwYXJhbXMNCiAgICAgKiBAcGFyYW0gdHlwZSAkbmFtZQ0KICAgICAqIEBwYXJhbSB0eXBlICRpZA0KICAgICAqIEBwYXJhbSB0eXBlICRwYXJhbXMNCiAgICAgKiBAcGFyYW0gdHlwZSAkcmV0dXJuaWQgDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIERvQWN0aW9uKCRuYW1lLCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZD0nJykgew0KICAgICAgICBzd2l0Y2ggKCRuYW1lKSB7DQogICAgICAgICAgICBjYXNlICJkZWZhdWx0IjoNCiAgICAgICAgICAgIGNhc2UgImRldGFpbCI6DQogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCRuYW1lIC4gJ19hY3Rpb25fcGFyYW1zJykgIT0gIiIpIHsNCiAgICAgICAgICAgICAgICAgICAgJGRlZmF1bHRfYWN0aW9uX3BhcmFtcyA9IGV4cGxvZGUoIiAiLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkbmFtZSAuICdfYWN0aW9uX3BhcmFtcycpKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRkZWZhdWx0X2FjdGlvbl9wYXJhbXMpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkZGVmYXVsdF9hY3Rpb25fcGFyYW1zIGFzICRkZWZhdWx0X2FjdGlvbl9wYXJhbSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZWZhdWx0X2FjdGlvbl9wYXJhbV9hcnJheSA9IGV4cGxvZGUoIj0iLCAkZGVmYXVsdF9hY3Rpb25fcGFyYW0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCgkZGVmYXVsdF9hY3Rpb25fcGFyYW1fYXJyYXkpID09IDIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtc1skZGVmYXVsdF9hY3Rpb25fcGFyYW1fYXJyYXlbMF1dID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKHN0cl9yZXBsYWNlKGFycmF5KCciJywgIiciKSwgYXJyYXkoJycsICcnKSwgJGRlZmF1bHRfYWN0aW9uX3BhcmFtX2FycmF5WzFdKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vZmx1c2gNCiAgICAgICAgb2Jfc3RhcnQoKTsNCiAgICAgICAgcGFyZW50OjpEb0FjdGlvbigkbmFtZSwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOw0KICAgICAgICAkb3V0cHV0MiA9IG9iX2dldF9jb250ZW50cygpOw0KICAgICAgICBvYl9lbmRfY2xlYW4oKTsNCg0KICAgICAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3RpdGxlX3BhcmFtX2Zvcl9jYWNoZScpKSB7DQogICAgICAgICAgICAkc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7DQogICAgICAgICAgICBzd2l0Y2ggKCRuYW1lKSB7DQogICAgICAgICAgICAgICAgY2FzZSAiZGV0YWlsIjoNCiAgICAgICAgICAgICAgICAgICAgJHRpdGxlc19hcnJheSA9IGV4cGxvZGUoJywnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGl0bGVfcGFyYW1fZm9yX2NhY2hlJykpOw0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkdGl0bGVzX2FycmF5IGFzICR0aXRsZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy88IS0tJyAuICR0aXRsZSAuICc6KC4qKS0tPi9pJywgJG91dHB1dDIsICRtYXRjaGVzKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzbWFydHktPmFzc2lnbigkdGl0bGUsICRtYXRjaGVzWzFdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBiZWFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZWNobyAkb3V0cHV0MjsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gSGFzQWRtaW4oKSB7DQogICAgICAgIHJldHVybiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaGFzX2FkbWluJywgZmFsc2UpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pblNlY3Rpb24oKSB7DQogICAgICAgIHJldHVybiAnY29udGVudCc7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKSB7DQogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkgew0KICAgICAgICByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbigkdGhpcy0+X0dldE1vZHVsZUFsaWFzKCkgLiAnX21vZGlmeV9pdGVtJyk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpIHsNCiAgICAgICAgcmV0dXJuIGFycmF5KCdDR0V4dGVuc2lvbnMnID0+ICcxLjI2JywgJ01vZHVsZUdlbmVyYXRvcicgPT4gJzEuMCcsICdFeHRlbmRlZFRvb2xzJyA9PiAnMS4wJyk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkgew0KICAgICAgICByZXR1cm4gJzEuOSc7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIE1heGltdW1DTVNWZXJzaW9uKCkgew0KICAgICAgICByZXR1cm4gJzEuMTAuOSc7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkgew0KICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJyk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKSB7DQogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdHVuaW5zdGFsbCcpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqICBnZXQgbW9kdWxlIGFsaWFzDQogICAgICogQHJldHVybiB0eXBlIA0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBfR2V0TW9kdWxlQWxpYXMoKSB7DQogICAgICAgICR2YWx1ZSA9IGNtc191dGlsczo6Z2V0X2FwcF9kYXRhKGdldF9jbGFzcygpIC4gX19GVU5DVElPTl9fKTsNCiAgICAgICAgaWYgKCR2YWx1ZSkNCiAgICAgICAgICAgIHJldHVybiAkdmFsdWU7DQoNCiAgICAgICAgJHZhbHVlID0gc3RydG9sb3dlcigkdGhpcy0+R2V0TmFtZSgpKTsNCiAgICAgICAgY21zX3V0aWxzOjpzZXRfYXBwX2RhdGEoZ2V0X2NsYXNzKCkgLiBfX0ZVTkNUSU9OX18sICR2YWx1ZSk7DQogICAgICAgIHJldHVybiAkdmFsdWU7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogIGdldCBjb3N0dW0gZmllbGQgZGVmcw0KICAgICAqIEBwYXJhbSBJTlQgJGl0ZW1faWQNCiAgICAgKiBAcmV0dXJuIGFycmF5DQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIEdldENvc3R1bUZpZWxkRGVmcygkaXRlbV9pZCkgew0KICAgICAgICByZXR1cm4gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfY29zdHVtX2ZpZWxkX2RlZigkdGhpcywgJGl0ZW1faWQpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRIZWFkZXJIdG1sKCkgew0KICAgICAgICAkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNb2R1bGVHZW5lcmF0b3InKTsNCiAgICAgICAgJGZuID0gJG1vZHVsZS0+R2V0TW9kdWxlVVJMUGF0aCgpIC4gJy9qcy9qcXVlcnkudGFibGVkbmRfMF81LmpzJzsNCiAgICAgICAgJG91dHB1dCA9ICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSInIC4gJGZuIC4gJyI+PC9zY3JpcHQ+JyAuICJcbiI7DQogICAgICAgICRvdXRwdXQgLj0gJzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vbWV0YTEwMC5naXRodWIuY29tL21Db2xvclBpY2tlci9qYXZhc2NyaXB0cy9tQ29sb3JQaWNrZXJfbWluLmpzIj48L3NjcmlwdD4nOw0KICAgICAgICByZXR1cm4gJG91dHB1dDsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gU2VhcmNoUmVzdWx0V2l0aFBhcmFtcygkcmV0dXJuaWQsICRpdGVtX2lkLCAkYXR0ciA9ICcnLCAkcGFyYW1zID0gJycpIHsNCiAgICAgICAgaWYgKCEkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2VhcmNoYWJsZScpKQ0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICByZXR1cm4gZ2VuZXJhdG9yX3Rvb2xzOjpnZXRfc2VhcmNoX3Jlc3VsdCgkdGhpcywgJHJldHVybmlkLCAkaXRlbV9pZCwgJGF0dHIsICRwYXJhbXMpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBTZWFyY2hSZWluZGV4KCRtb2R1bGUpIHsNCiAgICAgICAgaWYgKCEkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2VhcmNoYWJsZScpKQ0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICByZXR1cm4gZ2VuZXJhdG9yX3Rvb2xzOjpzZWFyY2hfcmVpbmRleCgkdGhpcywgJG1vZHVsZSk7DQogICAgfQ0KDQp9DQoNCj8+]]></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[eyRzdGFydGZvcm19Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+KnskbmFtZXRleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0bmFtZX08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGFsaWFzdGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRhbGlhc308L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+R2V0UHJlZmVyZW5jZSgnY2F0ZWdvcnlfZXh0cmFfbGFiZWwnLCAkbW9kLT5MYW5nKCdleHRyYScpKX06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRleHRyYX08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+R2V0UHJlZmVyZW5jZSgnY2F0ZWdvcnlfZXh0cmEyX2xhYmVsJywgJG1vZC0+TGFuZygnZXh0cmEnKSl9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0ZXh0cmEyfTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskcGFyZW50dGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcGFyZW50ZHJvcGRvd259PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyR1c2VyZ3JvdXB0ZXh0fTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dHVzZXJncm91cH08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9eyRjYW5jZWx9PC9wPgoJPC9kaXY+CnskZW5kZm9ybX0K]]></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+Jm5ic3A7PC9wPg0KPHAgY2xhc3M9InBhZ2VpbnB1dCI+e2lmIGlzc2V0KCRmaWVsZGRlZl9pZCl9eyRmaWVsZGRlZl9pZH17L2lmfXskc3VibWl0fXskY2FuY2VsfXskYXBwbHl9PC9wPg0KPC9kaXY+DQp7JGVuZGZvcm19DQo=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/edititem.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9DQogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KICAgIGZ1bmN0aW9uIHRvZ2dsZURpc3BsYXkoZWxlbSkNCiAgICB7DQogICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtKTsNCiAgICAgIHZhciB0eHQgPSBlbC5zdHlsZS5kaXNwbGF5Ow0KICAgICAgaWYoIHR4dCA9PSAnbm9uZScgKQ0KICAgICAgICB7DQogICAgICAgICAgdHh0ID0gJ2Jsb2NrJzsNCiAgICAgICAgfQ0KICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgdHh0ID0gJ25vbmUnOw0KICAgICAgICB9DQogICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gdHh0Ow0KICAgIH0NCg0KICAgIDwvc2NyaXB0Pg0Key9saXRlcmFsfQ0KDQo8aDM+eyR0aXRsZX08L2gzPg0KeyRzdGFydGZvcm19DQoNCntpZiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3RpdGxlX2VkaXQnKX0NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPip7JHByb21wdF90aXRsZX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RpdGxlfTwvcD4NCiAgICA8L2Rpdj4NCnsvaWZ9DQoNCntpZiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2FsaWFzX2VkaXQnKX0NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2FsaWFzfTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfYWxpYXN9PC9wPg0KICAgIDwvZGl2Pg0Key9pZn0NCg0Ke2lmICRtb2QtPkdldFByZWZlcmVuY2UoJ2l0ZW1fdXJsX2VkaXQnKX0NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3VybH06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3VybH08L3A+DQogICAgPC9kaXY+DQp7L2lmfQ0KDQp7aWYgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9jYXRlZ29yeV9lZGl0Jyl9DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9jYXRlZ29yeX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NhdGVnb3J5fTwvcD4NCiAgICA8L2Rpdj4NCnsvaWZ9DQoNCntpZiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2RhdGVfZWRpdCcpfQ0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZGF0ZX06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JGRhdGVwcmVmaXggdGltZT0kZGF0ZSBzdGFydF95ZWFyPSItMTAiIGVuZF95ZWFyPSIrMTUifSB7aHRtbF9zZWxlY3RfdGltZSBwcmVmaXg9JGRhdGVwcmVmaXggdGltZT0kZGF0ZX08L3A+DQogICAgPC9kaXY+DQp7L2lmfQ0KDQp7aWYgJG1vZC0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kYXRlX2VuZF9lZGl0Jyl9DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9kYXRlX2VuZH06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JGRhdGVlbmRwcmVmaXggdGltZT0kZGF0ZWVuZCBzdGFydF95ZWFyPSItMTAiIGVuZF95ZWFyPSIrMTUifSB7aHRtbF9zZWxlY3RfdGltZSBwcmVmaXg9JGRhdGVlbmRwcmVmaXggdGltZT0kZGF0ZWVuZH08L3A+DQogICAgPC9kaXY+DQp7L2lmfQ0KDQp7aWYgJG1vZC0+R2V0UHJlZmVyZW5jZSgncmVjdXJzaXZlJyl9DQoNCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdyZWN1cl9wZXJpb2QnKX06PC9wPg0KICAgIHtjYXB0dXJlIGFzc2lnbj0ndG1wJ317JGFjdGlvbmlkfWV2ZW50X3JlY3VyX3BlcmlvZHsvY2FwdHVyZX0NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4NCiAgICAgICAgPHNlbGVjdCBpZD0icmVjdXJwZXJpb2QiIG5hbWU9InskYWN0aW9uaWR9cmVjdXJfcGVyaW9kIiBvbmNsaWNrPSJoYW5kbGVEcm9wZG93bigpOyI+DQogICAgICAgICAgICB7Zm9yZWFjaCBmcm9tPSRyZWN1cl9vcHRpb25zIGtleT1rZXkgaXRlbT12YWx1ZX0NCiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJ7JHZhbHVlfSIge2lmICR2YWx1ZSA9PSAkcmVjdXJzaXZlfXNlbGVjdGVkPSJzZWxlY3RlZCJ7L2lmfT57JGtleX08L29wdGlvbj4gICANCiAgICAgICAgICAgIHsvZm9yZWFjaH0NCiAgICAgICAgPC9zZWxlY3Q+DQogICAgPC9wPg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyIgaWQ9InJlY3VyX3dlZWtseSI+ICANCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCd3ZWVrZGF5cycpfTo8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF93ZWVrZGF5c308L3A+DQo8L2Rpdj4NCg0Key9pZn0NCg0Ke2lmIGlzc2V0KCRjdXN0b21fZmllbGRkZWYpfQ0KICAgIHtmb3JlYWNoIGZyb209JGN1c3RvbV9maWVsZGRlZiBpdGVtPSdmaWVsZCd9DQogICAgICAgIHtpZiAoIWlzU2V0KCRpdGVtX2lkKSAmJiAhJGZpZWxkLT5lZGl0dmlldykgfHwgaXNTZXQoJGl0ZW1faWQpfQ0KICAgICAgICAgICAge2lmICRmaWVsZC0+ZmllbGR9DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkLT5wcm9tcHR9OjwvcD4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQogICAgICAgICAgICAgICAgICAgIHtpZiAhZW1wdHkoJGZpZWxkLT5oZWxwKX0oeyRmaWVsZC0+aGVscH0pPGJyIC8+ey9pZn0NCiAgICAgICAgICAgICAgICAgICAgeyRmaWVsZC0+ZmllbGR9DQogICAgICAgICAgICAgICAgICAgIHtpZiBpc3NldCgkZmllbGQtPmZpbGVuYW1lKX08YnIgLz4NCiAgICAgICAgICAgICAgICAgICAge2NhcHR1cmUgYXNzaWduPSJzcmMifXskZmllbGQtPmZpbGVfbG9jYXRpb259L3skZmllbGQtPmZpbGVuYW1lfXsvY2FwdHVyZX0gICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICB7Y2FwdHVyZSBhc3NpZ249InNyY3BhdGgifXskZmllbGQtPmZpbGVwYXRoX2xvY2F0aW9ufS97JGZpZWxkLT5maWxlbmFtZX17L2NhcHR1cmV9ICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAge2lmICRmaWVsZC0+aXNfaW1hZ2V9DQogICAgICAgICAgICAgICAgICAgIHtjbXNfbW9kdWxlIG1vZHVsZT0iQ0dTbWFydEltYWdlIiBzcmM9JHNyY3BhdGh8cmVwbGFjZToiYCRyb290X3VybGAiOicnIGFsdD0kZmlsZS0+ZmlsZW5hbWUgZmlsdGVyX3Jlc2l6ZT0iaCw1MCIgc3R5bGU9Im1hcmdpbjo1cHggMDsifSAgICANCiAgICAgICAgICAgICAgICB7L2lmfQ0KICAgICAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgICAgIHskZmllbGQtPmRlbGV0ZV9maWxlfSB7JGZpZWxkLT5maWxlbmFtZX08YnIgLz4NCiAgICAgICAgICAgIHsvaWZ9DQogICAgICAgIDwvcD4NCiAgICA8L2Rpdj4NCg0Ke2Vsc2V9DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkLT5wcm9tcHR9PC9wPg0KICAgICAgICB7aWYgJGZpZWxkLT5leHRyYX0NCiAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPiAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIHskZmllbGQtPmV4dHJhfQ0KICAgICAgICAgICAgPC9wPg0KICAgICAgICB7L2lmfQ0KICAgIDwvZGl2Pg0Key9pZn0NCnsvaWZ9DQp7L2ZvcmVhY2h9DQp7L2lmfQ0KDQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfYWN0aXZlfTo8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9hY3RpdmV9PC9wPg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+e2lmIGlzc2V0KCRpdGVtX2lkKX17JGl0ZW1faWR9ey9pZn17JHN1Ym1pdH17JGNhbmNlbH17JGFwcGx5fTwvcD4NCjwvZGl2Pg0KDQp7JGVuZGZvcm19DQo=]]></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+DQogICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsNCg0KICAgICAgICAkKCcjZmllbGRsaXN0JykudGFibGVEbkQoKTsNCiAgICAgICQoJzpzdWJtaXQuc2F2ZV9maWVsZHMnKS5jbGljayhmdW5jdGlvbigpew0KICAgICAgICB2YXIgZGF0YSA9IG5ldyBBcnJheTsNCiAgICAgICAgJCgndGFibGUjZmllbGRsaXN0IHRyJykuZWFjaChmdW5jdGlvbihpLHRyKXsNCiAgICAgICAgICBkYXRhLnB1c2goJCh0cikuYXR0cignaWQnKSk7DQogICAgICAgIH0pOw0KICAgICAgICBkYXRhID0gZGF0YS5qb2luKCcsJyk7DQogICAgICAgICQoJyNmc2VyaWFsZGF0YScpLnZhbChkYXRhKTsNCiAgICAgIH0pOw0KICANCiAgICB9KTsNCg0KICAgIDwvc2NyaXB0Pg0Key9saXRlcmFsfQ0KDQoNCg0Ke2lmICRpdGVtY291bnQgPiAwfQ0KICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSBjbXNfc29ydGFibGUgdGFibGVzb3J0ZXIiIGlkPSJmaWVsZGxpc3QiPg0KICAgICAgICA8dGhlYWQ+DQogICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgPHRoPjwvdGg+DQogICAgICAgICAgICAgICAgPHRoPnskZmllbGR0ZXh0fTwvdGg+DQogICAgICAgICAgICAgICAgPHRoPnskYWxpYXN9PC90aD4NCiAgICAgICAgICAgICAgICA8dGg+eyR0eXBldGV4dH08L3RoPg0KICAgICAgICAgICAgICAgIDx0aD57JHJlcXVpcmVkdGV4dH08L3RoPg0KICAgICAgICAgICAgICAgIDx0aD57JHNlYXJjaGFibGV0ZXh0fTwvdGg+DQogICAgICAgICAgICAgICAgPHRoPnskZnJvbnRlbmR0ZXh0fTwvdGg+DQogICAgICAgICAgICAgICAgPHRoPnskZWRpdHZpZXd0ZXh0fTwvdGg+DQogICAgICAgICAgICAgICAgPHRoPnskZmlsdGVyX2Zyb250ZW5kdGV4dH08L3RoPg0KICAgICAgICAgICAgICAgIDx0aD57JGZpbHRlcl9hZG1pbnRleHR9PC90aD4NCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPg0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+DQogICAgICAgICAgICA8L3RyPg0KICAgICAgICA8L3RoZWFkPg0KICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICB7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQ0KICAgICAgICAgICAgICAgIHtjeWNsZSB2YWx1ZXM9InJvdzEscm93MiIgYXNzaWduPSdyb3djbGFzcyd9DQogICAgICAgICAgICAgICAgPHRyIGlkPSJ7JGVudHJ5LT5pZH0iIGNsYXNzPSJ7JHJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfSc7Ij4NCiAgICAgICAgICAgICAgICAgICAgPHRkPnskZW50cnktPmlkfTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5hbGlhc308L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQ+eyRlbnRyeS0+dHlwZX08L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQ+eyRlbnRyeS0+cmVxdWlyZWR8dHJ1ZWZhbHNlfTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5zZWFyY2hhYmxlfHRydWVmYWxzZX08L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQ+eyRlbnRyeS0+ZnJvbnRlbmR8dHJ1ZWZhbHNlfTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5lZGl0dmlld3x0cnVlZmFsc2V9PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkPnskZW50cnktPmZpbHRlcl9mcm9udGVuZHx0cnVlZmFsc2V9PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkPnskZW50cnktPmZpbHRlcl9hZG1pbnx0cnVlZmFsc2V9PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+DQogICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIHsvZm9yZWFjaH0NCiAgICAgICAgPC90Ym9keT4NCiAgICA8L3RhYmxlPg0KDQogICAgeyRtb2QtPkNyZWF0ZUZvcm1TdGFydCgkYWN0aW9uaWQsICdhZG1pbl9tb3ZlZmllbGRkZWYnKX0NCiAgICA8aW5wdXQgaWQ9ImZzZXJpYWxkYXRhIiB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9c2VyaWFsZGF0YSIgdmFsdWU9IiIvPg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4NCiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0ic2F2ZV9maWVsZHMiIHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc2F2ZV9vcmRlcicpfSIvPg0KICAgICAgICA8L3A+DQogICAgPC9kaXY+DQogICAgeyRtb2QtPkNyZWF0ZUZvcm1FbmQoKX0NCg0Key9pZn0NCg0KDQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+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+DQogICAgeyRmb3Jtc3RhcnR9DQogICAge2lmICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ21vZGUnKSAhPSAic2ltcGxlIiB8fCAoaXNzZXQoJGN1c3RvbV9maWVsZGRlZikgJiYgZW1wdHkoJGN1c3RvbV9maWVsZGRlZikgPT0gZmFsc2UpfQ0KICAgICAgICA8ZmllbGRzZXQgc3R5bGU9ImZsb2F0OmxlZnQ7IHdpZHRoOjQ5JTsiPg0KICAgICAgICAgICAgPGxlZ2VuZD57JG1vZHVsZS0+TGFuZygnZmlsdGVycycpfTombmJzcDs8L2xlZ2VuZD4NCiAgICAgICAgICAgIHtpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdtb2RlJykgIT0gInNpbXBsZSJ9DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZHVsZS0+TGFuZygnaGllcmFyY2h5Jyl9OjwvcD4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9oaWVyYXJjaHl9Jm5ic3A7eyRtb2R1bGUtPkxhbmcoJ2luY2x1ZGVfY2hpbGRyZW4nKX0geyRpbnB1dF9jaGlsZHJlbn08L3A+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZHVsZS0+TGFuZygncHJvbXB0X3N1bW1hcnlfc29ydGluZycpfTo8L3A+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc29ydGJ5fTwvcD4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kdWxlLT5MYW5nKCdwcm9tcHRfc3VtbWFyeV9zb3J0b3JkZXInKX06PC9wPg0KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3NvcnRvcmRlcn08L3A+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZHVsZS0+TGFuZygncGFnZV9saW1pdCcpfTo8L3A+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcGFnZWxpbWl0fTwvcD4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICB7aWYgJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnZmlsdGVyX2RhdGUnKX0NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2R1bGUtPkxhbmcoJ2RhdGUnKX08L3A+DQogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4gIAkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JG1vZHVsZS0+TGFuZygnZnJvbScpfQ0KICAgICAgICAgICAgICAgICAgICAgICAge2NhcHR1cmUgYXNzaWduPSJpZGZyb21kYXRlIn17JG1vZHVsZS0+R2V0QWN0aW9uSWQoKX1kYXRlZnJvbXsvY2FwdHVyZX0NCiAgICAgICAgICAgICAgICAgICAgICAgIHtodG1sX3NlbGVjdF9kYXRlIGZpZWxkX29yZGVyPURNWSBwcmVmaXg9JGlkZnJvbWRhdGUgdGltZT0kZGF0ZV9mcm9tIHN0YXJ0X3llYXI9Ii0xMCIgZW5kX3llYXI9IisxIn0NCiAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgeyRtb2R1bGUtPkxhbmcoJ3RvJyl9DQogICAgICAgICAgICAgICAgICAgIHtjYXB0dXJlIGFzc2lnbj0iaWR0b2RhdGUifXskbW9kdWxlLT5HZXRBY3Rpb25JZCgpfWRhdGV0b3svY2FwdHVyZX0NCiAgICAgICAgICAgICAgICAgICAge2h0bWxfc2VsZWN0X2RhdGUgZmllbGRfb3JkZXI9RE1ZIHByZWZpeD0kaWR0b2RhdGUgdGltZT0kZGF0ZV90byBzdGFydF95ZWFyPSItMTAiIGVuZF95ZWFyPSIrMSJ9DQogICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIHsvaWZ9DQogICAgey9pZn0NCg0KICAgIHtpZiBpc3NldCgkY3VzdG9tX2ZpZWxkZGVmKX0NCiAgICAgICAge2ZvcmVhY2ggZnJvbT0kY3VzdG9tX2ZpZWxkZGVmIGl0ZW09J2ZpZWxkJ30NCiAgICAgICAgICAgIHtpZiAkZmllbGQtPmZpZWxkfQ0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRmaWVsZC0+cHJvbXB0fTo8L3A+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KICAgICAgICAgICAgICAgICAgICB7aWYgIWVtcHR5KCRmaWVsZC0+aGVscCl9KHskZmllbGQtPmhlbHB9KTxiciAvPnsvaWZ9DQogICAgICAgICAgICAgICAgICAgIHskZmllbGQtPmZpZWxkfQ0KICAgICAgICAgICAgICAgICAgICB7aWYgaXNzZXQoJGZpZWxkLT5maWxlbmFtZSl9PGJyIC8+DQogICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIHskZmllbGQtPmRlbGV0ZV9maWxlfSB7JGZpZWxkLT5maWxlbmFtZX08YnIgLz4NCiAgICAgICAgICAgICAgICAgICAgey9pZn0NCiAgICAgICAgICAgICAgICA8L3A+DQogICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICB7ZWxzZX0NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkLT5wcm9tcHR9PC9wPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIHsvaWZ9DQogICAgey9mb3JlYWNofQ0Key9pZn0NCg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JG1vZHVsZS0+R2V0QWN0aW9uSWQoKX1zdWJtaXQiIHZhbHVlPSJ7JG1vZHVsZS0+TGFuZygnc3VibWl0Jyl9Ij48L3A+DQo8L2Rpdj4NCg0KPC9maWVsZHNldD4NCnsvaWZ9DQp7aWYgaXNTZXQoJGZpZWxkc192aWV3YWJsZSkgJiYgJGZpZWxkc192aWV3YWJsZX0NCiAgICA8ZmllbGRzZXQgc3R5bGU9ImZsb2F0OnJpZ2h0OyB3aWR0aDo0OCU7Ij4NCiAgICAgICAgPGxlZ2VuZD57JG1vZHVsZS0+TGFuZygndmlldycpfTwvbGVnZW5kPg0KICAgICAgICB7aWYgaXNzZXQoJGZpZWxkc192aWV3YWJsZSl9DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2R1bGUtPkxhbmcoJ3ZpZXdhYmxlX2ZpZWxkcycpfTo8L3A+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQogICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT0ieyRvbGRhY3Rpb25pZH1jdXN0b21fZmllbGRzW10iIHNpemU9IjMiIG11bHRpcGxlPSJtdWx0aXBsZSI+DQogICAgICAgICAgICAgICAgICAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JGZpZWxkc192aWV3YWJsZSBzZWxlY3RlZD0kY3VzdG9tX2ZpZWxkc30NCiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+DQogICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIHsvaWZ9DQogICAgICAgIHtpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdtb2RlJykgPT0gInNpbXBsZSJ9DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskbW9kdWxlLT5HZXRBY3Rpb25JZCgpfXN1Ym1pdCIgdmFsdWU9InskbW9kdWxlLT5MYW5nKCdzdWJtaXQnKX0iPjwvcD4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICB7L2lmfQ0KICAgIDwvZmllbGRzZXQ+DQp7L2lmfQ0KeyRmb3JtZW5kfQ0KPC9kaXY+DQoNCg0KPGJyIHN0eWxlPSJjbGVhcjpib3RoOyIgLz4NCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkbGlua308L3A+PC9kaXY+DQp7aWYgJGl0ZW1jb3VudCA+IDB9DQoNCiAgICA8ZGl2IGlkPSJwcm9kdWN0bGlzdCI+DQogICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij57bGl0ZXJhbH0NCiAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsNCiAgICAgICAgICAkKCcjc2VsZWN0X2FsbF9pdGVtcycpLmNsaWNrKGZ1bmN0aW9uKCl7DQogICAgICAgICAgICB2YXIgY2hlY2tlZCA9ICQodGhpcykuYXR0cignY2hlY2tlZCcpOw0KICAgICAgICAgICAgJCgnLm11bHRpc2VsZWN0JykuYXR0cignY2hlY2tlZCcsY2hlY2tlZCA9PSB1bmRlZmluZWQgPyBmYWxzZSA6IGNoZWNrZWQpOyANCiAgICAgICAgICB9KTsNCiAgICAgICAgICAkKCcjYnVsa2FjdGlvbl9zdWJtaXQnKS5jbGljayhmdW5jdGlvbigpew0KICAgICAgICAgICAgdmFyIGxlbiA9ICQoJyNpdGVtbGlzdCB0Ym9keSBpbnB1dDpjaGVja2JveDpjaGVja2VkJykubGVuZ3RoOw0KICAgICAgICAgICAgaWYoIGxlbiA9PSAwICkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgYWxlcnQoJ3svbGl0ZXJhbH17JG1vZHVsZS0+TGFuZygnbm90aGluZ19zZWxlY3RlZCcpfXtsaXRlcmFsfScpOw0KICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICB9KTsNCiAgICAgICAgfSk7DQogICAgICAgICAgICB7L2xpdGVyYWx9PC9zY3JpcHQ+DQogICAgICAgICAgICAgICAgeyRmb3Jtc3RhcnQyfQ0KICAgICAgICAgICAgICAgIHtpZiBpc3NldCgkZmlyc3RwYWdlX3VybCl9DQogICAgICAgICAgICAgICAgPGEgaHJlZj0ieyRmaXJzdHBhZ2VfdXJsfSIgdGl0bGU9InskbW9kdWxlLT5MYW5nKCdmaXJzdHBhZ2UnKX0iPnskbW9kdWxlLT5MYW5nKCdmaXJzdHBhZ2UnKX08L2E+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0ieyRwcmV2cGFnZV91cmx9IiB0aXRsZT0ieyRtb2R1bGUtPkxhbmcoJ3ByZXZwYWdlJyl9Ij57JG1vZHVsZS0+TGFuZygncHJldnBhZ2UnKX08L2E+DQogICAgICAgICAgICB7L2lmfQ0KICAgICAgICAgICAge2lmIGlzc2V0KCRmaXJzdHBhZ2VfdXJsKSB8fCBpc3NldCgkbGFzdHBhZ2VfdXJsKX0NCiAgICAgICAgICAgICAgICB7JG1vZHVsZS0+TGFuZygncGFnZV9vZicsJHBhZ2VudW1iZXIsJHBhZ2Vjb3VudCl9DQogICAgICAgICAgICB7L2lmfQ0KICAgICAgICAgICAge2lmIGlzc2V0KCRsYXN0cGFnZV91cmwpfQ0KICAgICAgICAgICAgICAgIDxhIGhyZWY9InskbmV4dHBhZ2VfdXJsfSIgdGl0bGU9InskbW9kdWxlLT5MYW5nKCduZXh0cGFnZScpfSI+eyRtb2R1bGUtPkxhbmcoJ25leHRwYWdlJyl9PC9hPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9InskbGFzdHBhZ2VfdXJsfSIgdGl0bGU9InskbW9kdWxlLT5MYW5nKCdsYXN0cGFnZScpfSI+eyRtb2R1bGUtPkxhbmcoJ2xhc3RwYWdlJyl9PC9hPg0KICAgICAgICAgICAgey9pZn0NCg0KDQogICAgICAgICAgICA8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUgY21zX3NvcnRhYmxlIHRhYmxlc29ydGVyIiBpZD0iaXRlbWxpc3QiPg0KICAgICAgICAgICAgICAgIDx0aGVhZD4NCiAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnskaWR0ZXh0fTwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICB7aWYgJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnaXRlbV90aXRsZV9lZGl0Jyl9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnskbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3RpdGxlJyl9PC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgIHsvaWZ9DQogICAgICAgICAgICAgICAgICAgIHtpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2RhdGVfZWRpdCcsIDApfTx0aD57JG1vZHVsZS0+TGFuZygnZGF0ZScpfTwvdGg+ey9pZn0NCiAgICAgICAgICAgICAgICB7aWYgJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kYXRlX2VuZF9lZGl0JywgMCl9PHRoPnskbW9kdWxlLT5MYW5nKCdkYXRlX2VuZCcpfTwvdGg+ey9pZn0NCiAgICAgICAgICAgIHtpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdpdGVtX2NhdGVnb3J5X2VkaXQnLCAwKX08dGg+eyRtb2R1bGUtPkxhbmcoJ2NhdGVnb3J5Jyl9PC90aD57L2lmfQ0KDQogICAgICAgICAgICB7aWYgaXNzZXQoJGN1c3RvbV9maWVsZHMpfQ0KICAgICAgICAgICAgICAgIHtmb3JlYWNoIGZyb209JGN1c3RvbV9maWVsZHMgaXRlbT0nZmlkJ30NCiAgICAgICAgICAgICAgICAgICAgPHRoPnskZmllbGRzX3ZpZXdhYmxlLiRmaWR9PC90aD4NCiAgICAgICAgICAgICAgICB7L2ZvcmVhY2h9DQogICAgICAgICAgICB7L2lmfQ0KDQogICAgICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPg0KDQogICAgICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIHtsaXRlcmFsfXtzb3J0ZXI6IGZhbHNlfXsvbGl0ZXJhbH0iPiZuYnNwOzwvdGg+DQogICAgICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIHtsaXRlcmFsfXtzb3J0ZXI6IGZhbHNlfXsvbGl0ZXJhbH0iPiZuYnNwOzwvdGg+DQogICAgICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIHtsaXRlcmFsfXtzb3J0ZXI6IGZhbHNlfXsvbGl0ZXJhbH0iPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgdGl0bGU9InskbW9kdWxlLT5MYW5nKCdzZWxlY3RfYWxsJyl9IiB2YWx1ZT0iMSIgbmFtZT0ic2VsZWN0X2FsbCIgaWQ9InNlbGVjdF9hbGxfaXRlbXMiPjwvdGg+DQogICAgICAgIDwvdHI+DQogICAgPC90aGVhZD4NCiAgICA8dGJvZHk+DQogICAgICAgIHtmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9DQogICAgICAgICAgICB7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIiIGFzc2lnbj0ncm93Y2xhc3MnfQ0KICAgICAgICAgICAgeyo8dHIgY2xhc3M9Inskcm93Y2xhc3N9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9JzsiPip9DQogICAgICAgICAgICA8dHIgaWQ9InskZW50cnktPml0ZW1faWR9Ij4NCiAgICAgICAgICAgICAgICA8dGQ+eyRlbnRyeS0+aXRlbV9pZH08L3RkPg0KICAgICAgICAgICAgICAgIHtpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdpdGVtX3RpdGxlX2VkaXQnKX08dGQ+PGEgaHJlZj0ieyRlbnRyeS0+ZWRpdF91cmx9IiB0aXRsZT0ieyRtb2R1bGUtPkxhbmcoJ2VkaXQnKX0iPnskZW50cnktPnRpdGxlfTwvYT48L3RkPg0KICAgICAgICAgICAgICAgIHsvaWZ9DQogICAgICAgICAgICB7aWYgJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnaXRlbV9kYXRlX2VkaXQnLCAwKX0JICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5pdGVtX2RhdGV8Y21zX2RhdGVfZm9ybWF0fTwvdGQ+ey9pZn0NCiAgICAgICAge2lmICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2l0ZW1fZGF0ZV9lbmRfZWRpdCcsIDApfQkgICAgICAgICAgICAgICAgPHRkPnskZW50cnktPml0ZW1fZGF0ZV9lbmR8Y21zX2RhdGVfZm9ybWF0fTwvdGQ+ey9pZn0NCiAgICB7aWYgJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnaXRlbV9jYXRlZ29yeV9lZGl0JywgMCl9CSAgICAgICAgICAgICAgICA8dGQ+eyRlbnRyeS0+bG9uZ19uYW1lfTwvdGQ+ey9pZn0NCiAgICB7aWYgaXNzZXQoJGN1c3RvbV9maWVsZHMpfQ0KICAgICAgICB7Zm9yZWFjaCBmcm9tPSRjdXN0b21fZmllbGRzIGl0ZW09J2ZpZCd9DQogICAgICAgICAgICA8dGQ+DQogICAgICAgICAgICB7Y2FwdHVyZSBhc3NpZ249J3RtcCd9RmxkX197JGZpZWxkX25hbWVzLiRmaWR9ey9jYXB0dXJlfQ0KICAgICAgICAgICAge2lmICRmaWVsZF9tb2R1bGVzLiRmaWR9DQogICAgICAgICAgICAgICAge2lmICRlbnRyeS0+JHRtcH0NCiAgICAgICAge2NhcHR1cmUgYXNzaWduPSJ0bXBtb2R1bGUifXtsaXRlcmFsfXtjbXNfbW9kdWxley9saXRlcmFsfSBtb2R1bGU9InskZmllbGRfbW9kdWxlcy4kZmlkfSIgIGFsbHJvdz0idG1wcm93cyIgZmlsdGVyX2l0ZW1JZF9pbj0ieyRlbnRyeS0+JHRtcH0ie2xpdGVyYWx9fXsvbGl0ZXJhbH17L2NhcHR1cmV9DQogICAgey9pZn0NCiAgICB7ZXZhbCB2YXI9JHRtcG1vZHVsZX0NCiAgICB7aWYgJHRtcHJvd3N9DQogICAgICAgIHtmb3JlYWNoIGZyb209JHRtcHJvd3MgaXRlbT0ndG1wcm93JyBuYW1lPSJtb2R1bGUifQ0KICAgICAgICB7JHRtcHJvdy0+dGl0bGV9e2lmICRzbWFydHkuZm9yZWFjaC5tb2R1bGUubGFzdD09ZmFsc2V9LHsvaWZ9DQogICAgey9mb3JlYWNofQ0Key9pZn0NCnthc3NpZ24gdmFyPSJ0bXByb3dzIiB2YWx1ZT0iIn0NCnthc3NpZ24gdmFyPSJ0bXBtb2R1bGUiIHZhbHVlPSIifQ0Ke2Vsc2VpZiAkZmllbGRfaW1hZ2VzLiRmaWQgJiYgJGVudHJ5LT4kdG1wfQ0Ke2NhcHR1cmUgYXNzaWduPSJzcmMifXskZW50cnktPmZpbGVfbG9jYXRpb259L3skZW50cnktPiR0bXB9ey9jYXB0dXJlfQ0Ke2NhcHR1cmUgYXNzaWduPSJzcmNwYXRoIn17JGVudHJ5LT5maWxlcGF0aF9sb2NhdGlvbn0veyRlbnRyeS0+JHRtcH17L2NhcHR1cmV9DQp7aWYgJHNyY3BhdGh8QGdldGltYWdlc2l6ZX0NCiAgICB7Y21zX21vZHVsZSBtb2R1bGU9IkNHU21hcnRJbWFnZSIgc3JjPSRzcmNwYXRoICBmaWx0ZXJfcmVzaXplPSJoLDUwIiBzdHlsZT0ibWFyZ2luOjVweCAwOyJ9ICAgIA0Ke2Vsc2V9DQogICAgPGEgaHJlZj0ieyRlbnRyeS0+ZmlsZV9sb2NhdGlvbn0veyRlbnRyeS0+JHRtcH0iPnskZW50cnktPiR0bXB9PC9hPg0Key9pZn0NCntlbHNlfQ0KICAgIHskZW50cnktPiR0bXB9DQp7L2lmfQ0KPC90ZD4NCnsvZm9yZWFjaH0NCnsvaWZ9DQoNCjx0ZD57JGVudHJ5LT5hcHByb3ZlfTwvdGQ+DQoNCjx0ZD57JGVudHJ5LT5lZGl0bGlua308L3RkPg0KPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4NCjx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJtdWx0aXNlbGVjdCIgbmFtZT0ieyRvbGRhY3Rpb25pZH1tdWx0aXNlbGVjdFtdIiB2YWx1ZT0ieyRlbnRyeS0+aXRlbV9pZH0iPjwvdGQ+DQo8L3RyPg0Key9mb3JlYWNofQ0KPC90Ym9keT4NCjwvdGFibGU+DQoNCntpZiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdtb2RlJykgPT0gInNpbXBsZSJ9DQogICAgeyRtb2R1bGUtPkNyZWF0ZUZvcm1TdGFydCgkb2xkYWN0aW9uaWQsICdhZG1pbl9tb3ZlaXRlbScpfQ0KICAgIDxpbnB1dCBpZD0ic2VyaWFsZGF0YSIgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JG9sZGFjdGlvbmlkfXNlcmlhbGRhdGEiIHZhbHVlPSIiLz4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQogICAgICAgICAgICA8aW5wdXQgY2xhc3M9InNhdmVfaXRlbXMiIHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRvbGRhY3Rpb25pZH1zdWJtaXQiIHZhbHVlPSJ7JG1vZHVsZS0+TGFuZygnc2F2ZV9vcmRlcicpfSIvPg0KICAgICAgICA8L3A+DQogICAgPC9kaXY+DQogICAgeyRtb2R1bGUtPkNyZWF0ZUZvcm1FbmQoKX0NCnsvaWZ9DQoNCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkbGlua308L3A+PC9kaXY+DQp7aWYgJGl0ZW1jb3VudCBndCAwfQ0KICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyB3aWR0aDogNDAlOyBmbG9hdDogcmlnaHQ7IG1hcmdpbi10b3A6IDAuNWVtOyI+DQogICAgICAgIHskbW9kdWxlLT5MYW5nKCd3aXRoX3NlbGVjdGVkJyl9Og0KICAgICAgICA8c2VsZWN0IG5hbWU9Inskb2xkYWN0aW9uaWR9YnVsa2FjdGlvbiI+e2h0bWxfb3B0aW9ucyBvcHRpb25zPSRidWxrYWN0aW9uc308L3NlbGVjdD4NCiAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgaWQ9ImJ1bGthY3Rpb25fc3VibWl0IiBuYW1lPSJ7JG9sZGFjdGlvbmlkfXN1Ym1pdCIgdmFsdWU9InskbW9kdWxlLT5MYW5nKCdnbycpfSIvPg0KICAgIDwvZGl2Pg0Key9pZn0NCnskZm9ybWVuZDJ9PC9kaXY+DQp7L2lmfQ0KDQoNCjxiciBzdHlsZT0iY2xlYXI6Ym90aCIgLz4=]]></data>
	</file>
	<file>
	  <filename>/ModuleLib/templates/optiontab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9DQo8c2NyaXB0IHR5bGU9InRleHQvamF2YXNjcmlwdCI+DQokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpew0KJCgiI2FkdmFuY2VkLCNzaW1wbGUiKS5oaWRlKCk7DQokKCIjIiskKCIjbW9kZSBzZWxlY3QiKS52YWwoKSkuZmFkZUluKCk7Ow0KDQokKCIjbW9kZSBzZWxlY3QiKS5jaGFuZ2UoZnVuY3Rpb24oKXsNCiQoIiNhZHZhbmNlZCwjc2ltcGxlIikuaGlkZSgpOw0KJCgiIyIrJCh0aGlzKS52YWwoKSkuZmFkZUluKCk7Ow0KfSkNCn0pDQo8L3NjcmlwdD4NCnsvbGl0ZXJhbH0NCg0K77u/eyRzdGFydGZvcm19DQoNCjxmaWVsZHNldD4NCjxoMz57JG1vZC0+TGFuZygnZ2xvYmFsJyl9PC9oMz4NCg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2ZyaWVuZGx5bmFtZX06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZnJpZW5kbHluYW1lfTwvcD4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2l0ZW1fdGl0bGV9OjwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2l0ZW1fdGl0bGV9PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaXRlbV9zaW5ndWxhcn06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaXRlbV9zaW5ndWxhcn08L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9pdGVtX3BsdXJhbH06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaXRlbV9wbHVyYWx9PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfY2F0ZWdvcnlfZXh0cmFfbGFiZWx9OjwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NhdGVnb3J5X2V4dHJhX2xhYmVsfTwvcD4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2NhdGVnb3J5X2V4dHJhX2xhYmVsfSAyOjwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NhdGVnb3J5X2V4dHJhMl9sYWJlbH08L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF91cmxfcHJlZml4fTo8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF91cmxfcHJlZml4fTwvcD4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2RlZmF1bHRfYWN0aW9uX3BhcmFtc306PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZGVmYXVsdF9hY3Rpb25fcGFyYW1zfTwvcD4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2RldGFpbF9hY3Rpb25fcGFyYW1zfTo8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9kZXRhaWxfYWN0aW9uX3BhcmFtc308L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90aXRsZV9wYXJhbV9mb3JfY2FjaGV9OjwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RpdGxlX3BhcmFtX2Zvcl9jYWNoZX08L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9oYXNfYWRtaW59OjwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2hhc19hZG1pbn08L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF91c2VyZ3JvdXBfZGVwZW5kZW5jZX06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdXNlcmdyb3VwX2RlcGVuZGVuY2V9PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZGlzcGxheV9pbmxpbmV9OjwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2Rpc3BsYXlfaW5saW5lfTwvcD4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2xhenlsb2FkaW5nfTo8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9sYXp5bG9hZGluZ308L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9pdGVtX2RldGFpbF9yZXR1cm5pZH06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaXRlbV9kZXRhaWxfcmV0dXJuaWR9PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaXRlbV9jYXRlZ29yeV9yZXR1cm5pZH06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaXRlbV9jYXRlZ29yeV9yZXR1cm5pZH08L3A+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9jdXN0b21fZmllbGRzX2RlZmF1bHR9OjwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4NCiAgICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbV9maWVsZHNfZGVmYXVsdFtdIiBzaXplPSI2IiBtdWx0aXBsZT0ibXVsdGlwbGUiPg0KICAgICAgICAgICAgICAgICAgICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRmaWVsZHNfdmlld2FibGUgc2VsZWN0ZWQ9JGN1c3RvbV9maWVsZHNfZGVmYXVsdH0NCiAgICAgICAgPC9zZWxlY3Q+DQo8L3A+DQo8L2Rpdj4NCjwvZmllbGRzZXQ+DQo8YnIgLz4NCg0KPGZpZWxkc2V0Pg0KPGgzPnskbW9kLT5MYW5nKCdzZWFyY2gnKX08L2gzPg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3NlYXJjaGFibGV9OjwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3NlYXJjaGFibGV9PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfc2VhcmNoX2RhdGVfZW5kfTo8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9zZWFyY2hfZGF0ZV9lbmR9PC9wPg0KPC9kaXY+DQp7aWYgJHNlYXJjaGFibGV9DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQo8YnIgLz4NCnskc2VhcmNoYWJsZV9saW5rfQ0KPC9wPg0KPC9kaXY+DQp7L2lmfQ0KPC9maWVsZHNldD4NCjxiciAvPg0KPGZpZWxkc2V0Pg0KICAgIDxoMz57JG1vZC0+TGFuZygnZmlsdGVyJyl9PC9oMz4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2ZpbHRlcl9kYXRlfTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZmlsdGVyX2RhdGV9PC9wPg0KICAgIDwvZGl2PiAgICANCjwvZmllbGRzZXQ+DQo8YnIgLz4NCjxmaWVsZHNldD4NCiAgICA8aDM+eyRtb2QtPkxhbmcoJ2VkaXQnKX08L2gzPg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfcmVjdXJzaXZlfTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcmVjdXJzaXZlfTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2l0ZW1fdGl0bGVfZWRpdH06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2l0ZW1fdGl0bGVfZWRpdH08L3A+DQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9pdGVtX2FsaWFzX2VkaXR9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9pdGVtX2FsaWFzX2VkaXR9PC9wPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaXRlbV91cmxfZWRpdH06PC9wPg0KICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2l0ZW1fdXJsX2VkaXR9PC9wPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaXRlbV9kYXRlX2VkaXR9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9pdGVtX2RhdGVfZWRpdH08L3A+DQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9pdGVtX2RhdGVfZW5kX2VkaXR9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9pdGVtX2RhdGVfZW5kX2VkaXR9PC9wPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaXRlbV9jYXRlZ29yeV9lZGl0fTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaXRlbV9jYXRlZ29yeV9lZGl0fTwvcD4NCiAgICA8L2Rpdj4NCjwvZmllbGRzZXQ+DQo8YnIgLz4NCjxmaWVsZHNldD4NCiAgICA8aDM+eyRwcm9tcHRfbW9kZX08L2gzPg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiIGlkPSJtb2RlIj57JGlucHV0X21vZGV9PC9wPg0KICAgIDwvZGl2Pg0KPGRpdiBpZD0iYWR2YW5jZWQiPg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfc3VtbWFyeV9zb3J0aW5nfTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc3VtbWFyeV9zb3J0aW5nX2FkdmFuY2VkfTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3N1bW1hcnlfc29ydG9yZGVyfTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc3VtbWFyeV9zb3J0b3JkZXJfYWR2YW5jZWR9PC9wPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfc3VtbWFyeV9wYWdlbGltaXR9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9zdW1tYXJ5X3BhZ2VsaW1pdF9hZHZhbmNlZH08L3A+DQogICAgPC9kaXY+DQo8L2Rpdj4NCjxkaXYgaWQ9InNpbXBsZSI+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9zdW1tYXJ5X3NvcnRpbmd9OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9zdW1tYXJ5X3NvcnRpbmdfc2ltcGxlfTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3N1bW1hcnlfc29ydG9yZGVyfTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc3VtbWFyeV9zb3J0b3JkZXJfc2ltcGxlfTwvcD4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3N1bW1hcnlfcGFnZWxpbWl0fTo8L3A+DQogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc3VtbWFyeV9wYWdlbGltaXRfc2ltcGxlfTwvcD4NCiAgICA8L2Rpdj4NCjwvZGl2Pg0KPC9maWVsZHNldD4JDQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fTwvcD4NCjwvZGl2Pg0KDQp7JGVuZGZvcm19DQo=]]></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>
