<?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>Digest</name>
	<version>0.1.2</version>
  <mincmsversion>1.10</mincmsversion>
	<help><![CDATA[CjxoMz5IZWxwPC9oMz4KPHA+T24gdGhlIGZyb250ZW5kLCB5b3UgY2FuIHVzZSB0aGUgdGFnIHtEaWdlc3R9IHRvIHNob3cgdGhlIHVzZXIncyBub3RpZmljYXRpb25zIHByZWZlcmVuY2VzLjwvcD4KPGgzPkRlcGVuZGVuY2llczwvaDM+PHVsPjxsaT5Dcm9uID0mZ3Q7IDAuMC42PC9saT48bGk+Q01TRm9ybXMgPSZndDsgMS4xMC4xMDwvbGk+PGxpPkNNU1VzZXJzID0mZ3Q7IDEuMC4xMzwvbGk+PGxpPkNNU01haWxlciA9Jmd0OyAyLjAuMjwvbGk+PC91bD48aDM+UGFyYW1ldGVyczwvaDM+PHVsPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGxhbmc9ImVuX1VTIiAtIFBhcmFtZXRlciBpcyB1c2VkIHRvIHNwZWNpZnkgd2hhdCBsYW5ndWFnZSB0byB1c2UgZm9yIGRpc3BsYXkgb24gdGhlIGZyb250ZW5kLiBOb3QgYWxsIG1vZHVsZXMgc3VwcG9ydCBvciBuZWVkIHRoaXMuPC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgJmx0O2pjY0BhdG9tc2VlZHMuY29tJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDAuMS4yPGJyIC8+]]></about>
	<requires>
	  <requiredname>Cron</requiredname>
	  <requiredversion>0.0.6</requiredversion>
	</requires>
	<requires>
	  <requiredname>CMSForms</requiredname>
	  <requiredversion>1.10.10</requiredversion>
	</requires>
	<requires>
	  <requiredname>CMSUsers</requiredname>
	  <requiredversion>1.0.13</requiredversion>
	</requires>
	<requires>
	  <requiredname>CMSMailer</requiredname>
	  <requiredversion>2.0.2</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFjbXNtcygpKSBleGl0OwoKJHVzZXIgPSBDTVNVc2Vyczo6Z2V0VXNlcigpOwoKLy8gSWYgbm90IGxvZ2dlZCwgcmVkaXJlY3QgdG8gbG9naW4gZm9ybQppZihpc19udWxsKCR1c2VyKSkKewoJJG5wYXJhbXNbJ3JlZGlyZWN0X3VybCddID0gJ2h0dHA6Ly8nIC4gJF9TRVJWRVJbJ0hUVFBfSE9TVCddIC4gJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ107CglyZXR1cm4gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDTVNVc2VycycpLT5Eb0FjdGlvbignc2lnbmluJywgJGlkLCAkbnBhcmFtcywgJHJldHVybmlkKTsKCWV4aXQ7Cn0KCi8vIFVzZXIgaXMgbG9nZ2VkLCB3ZSBjYW4gcHJvY2VlZAoKJHN1YnNjcmlwdGlvbnMgPSBEU3Vic2NyaXB0aW9uOjpkb1NlbGVjdChhcnJheSgnb3JkZXJfYnknID0+ICd0aXRsZScpKTsKJHBlcmlvZHMgPSBEU3Vic2NyaWJlcjo6JHBlcmlvZHM7CiRzdWJzY3JpYmVyX3N1YnNjcmlwdGlvbnMgPSBEU3Vic2NyaWJlcjo6Z2V0U3Vic2NyaXB0aW9uc0ZvclVzZXIoJHVzZXItPmdldElkKCkpOwoKJGZvcm0gPSBuZXcgQ01TRm9ybSgkdGhpcy0+R2V0TmFtZSgpLCAkaWQsICdkZWZhdWx0JywkcmV0dXJuaWQpOwokZm9ybS0+c2V0QnV0dG9ucyhhcnJheSgnc3VibWl0JykpOwokZm9ybS0+c2V0TGFiZWxzKGFycmF5KCdzdWJtaXQnID0+ICdTYXZlJykpOwoKZm9yZWFjaCgkc3Vic2NyaXB0aW9ucyBhcyAkc3Vic2NyaXB0aW9uKQp7CgkkZm9ybS0+c2V0V2lkZ2V0KCdzdWJzY3JpcHRpb25fJy4kc3Vic2NyaXB0aW9uLT5nZXRJZCgpLCAnc2VsZWN0JywgYXJyYXkoCgkJJ2xhYmVsJyA9PiAkc3Vic2NyaXB0aW9uLT50aXRsZSwKCQkndmFsdWVzJyA9PiAkcGVyaW9kcywJCQoJCSdkZWZhdWx0X3ZhbHVlJyA9PiAoaXNzZXQoJHN1YnNjcmliZXJfc3Vic2NyaXB0aW9uc1skc3Vic2NyaXB0aW9uLT5nZXRJZCgpXSkpPyRzdWJzY3JpYmVyX3N1YnNjcmlwdGlvbnNbJHN1YnNjcmlwdGlvbi0+Z2V0SWQoKV0tPnBlcmlvZDpudWxsCgkpKTsKCQp9CgppZigkZm9ybS0+aXNQb3N0ZWQoKSkKewoJJGZvcm0tPnByb2Nlc3MoKTsKCglpZiAoJGZvcm0tPm5vRXJyb3IoKSkKCXsKCQkkdXBkYXRlcyA9IGFycmF5KCk7CgkJCQoJCWZvcmVhY2goJHN1YnNjcmlwdGlvbnMgYXMgJHN1YnNjcmlwdGlvbikKCQl7CgkJCSR1cGRhdGVzWyRzdWJzY3JpcHRpb24tPmdldElkKCldID0gJGZvcm0tPmdldFdpZGdldCgnc3Vic2NyaXB0aW9uXycuJHN1YnNjcmlwdGlvbi0+Z2V0SWQoKSktPmdldFZhbHVlKCk7CgkJfQoJCQoJCURTdWJzY3JpYmVyOjp1cGRhdGVTdWJzY3JpcHRpb25zKCR1c2VyLT5nZXRJZCgpLCAkdXBkYXRlcyk7Cgl9Cn0KCiR0aGlzLT5zbWFydHktPmFzc2lnbignZm9ybScsICRmb3JtKTsKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdmcm9udGVuZC5kZWZhdWx0LnRwbCcpOw==]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFjbXNtcygpKSBleGl0OwppZiAoISR0aGlzLT5DaGVja0FjY2VzcygpKSB7CglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7Cn0KCiRzdWJzY3JpcHRpb25zID0gRFN1YnNjcmlwdGlvbjo6ZG9TZWxlY3QoKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignbGVuZ2h0JywgNSpjb3VudCgkc3Vic2NyaXB0aW9ucykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1YnNjcmlwdGlvbnNfbGlzdCcsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3N1YnNjcmlwdGlvbnNfbGlzdCcsICRyZXR1cm5pZCwgJycsIGFycmF5KCksICcnLCB0cnVlKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3Vic2NyaWJlcnNfbGlzdCcsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3N1YnNjcmliZXJzX2xpc3QnLCAkcmV0dXJuaWQsICcnLCBhcnJheSgpLCAnJywgdHJ1ZSkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlc19saXN0JywgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAndGVtcGxhdGVzX2xpc3QnLCAkcmV0dXJuaWQsICcnLCBhcnJheSgpLCAnJywgdHJ1ZSkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2xvZ3NfbGlzdCcsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2xvZ3NfbGlzdCcsICRyZXR1cm5pZCwgJycsIGFycmF5KCksICcnLCB0cnVlKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignb3B0aW9ucycsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ29wdGlvbnMnLCAkcmV0dXJuaWQsICcnLCBhcnJheSgpLCAnJywgdHJ1ZSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpZCcsJGlkKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW4uZGVmYXVsdC50cGwnKTs=]]></data>
	</file>
	<file>
	  <filename>/action.logs_list.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFjbXNtcygpKSBleGl0OwppZiAoISR0aGlzLT5DaGVja0FjY2VzcygpKSB7CglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ29yZGVyX2J5J10pKQp7CgkkcXVlcnkgPSBhcnJheSgnb3JkZXJfYnknID0+ICRwYXJhbXNbJ29yZGVyX2J5J10pOwp9CmVsc2UKewoJJHF1ZXJ5ID0gYXJyYXkoJ29yZGVyX2J5JyA9PiAndGltZXN0YW1wIERFU0MnKTsKfQoKaWYoaXNzZXQoJHBhcmFtc1snbGltaXQnXSkpCnsKCSRxdWVyeVsnbGltaXQnXSA9ICRwYXJhbXNbJ2xpbWl0J107Cn0KCiRsb2dzID0gRExvZzo6ZG9TZWxlY3QoJHF1ZXJ5KTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignbG9ncycsICRsb2dzKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW4ubG9nc19saXN0LnRwbCcpOw==]]></data>
	</file>
	<file>
	  <filename>/action.options.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFjbXNtcygpKSBleGl0OwovKiBAdmFyICR0aGlzIERpZ2VzdCAqLwppZiAoISR0aGlzLT5DaGVja0FjY2VzcygpKSB7CglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7Cn0KCiR0cGxzID0gYXJyYXkoKTsKZm9yZWFjaCAoJHRoaXMtPkxpc3RUZW1wbGF0ZXMoKSBhcyAkdGVtcGxhdGUpCnsKCSR0cGxzWyR0ZW1wbGF0ZV0gPSAkdGVtcGxhdGU7Cn0KCiRmb3JtID0gbmV3IENNU0Zvcm0oJHRoaXMtPmdldE5hbWUoKSwgJGlkLCAnb3B0aW9ucycsICRyZXR1cm5pZCk7CgppZigkZm9ybS0+aXNDYW5jZWxsZWQoKSkgewlyZXR1cm4gJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQpO30KCiRmb3JtLT5zZXRXaWRnZXQoJ2VtYWlsX3N1YmplY3QnLCAndGV4dCcsIGFycmF5KCdwcmVmZXJlbmNlJyA9PiAnZW1haWxfc3ViamVjdCcpKTsKJGZvcm0tPnNldFdpZGdldCgnZW1haWxfdGVtcGxhdGUnLCAnc2VsZWN0JywgYXJyYXkoJ3ByZWZlcmVuY2UnID0+ICdlbWFpbF90ZW1wbGF0ZScsICd2YWx1ZXMnID0+ICR0cGxzKSk7CiRmb3JtLT5zZXRXaWRnZXQoJ3NlbmRfZW1haWxzJywgJ2NoZWNrYm94JywgYXJyYXkoJ3ByZWZlcmVuY2UnID0+ICdzZW5kX2VtYWlscycpKTsKLy8kZm9ybS0+c2V0V2lkZ2V0KCdzZW5kX2ZpeGVkX3RpbWUnLCAnY2hlY2tib3gnLCBhcnJheSgncHJlZmVyZW5jZScgPT4gJ3NlbmRfZml4ZWRfdGltZScpKTsKJGZvcm0tPnNldFdpZGdldCgnc2VuZF9hdCcsICd0aW1lJywgYXJyYXkoJ3ByZWZlcmVuY2UnID0+ICdzZW5kX2F0JywgJ3RpcHMnID0+ICdBdmVyYWdlIHZhbHVlLiBQcmVjaXNpb24gaXMgZ2l2ZW4gcmVnYXJkaW5nIGNyb24gc2V0dXAuJykpOwoKJGZvcm0tPnNldFdpZGdldCgnc2VuZF93ZWVrbHlfb24nLCAnc2VsZWN0JywgYXJyYXkoJ3ByZWZlcmVuY2UnID0+ICdzZW5kX3dlZWtseV9vbicsICd2YWx1ZXMnID0+IERTdWJzY3JpYmVyOjokd2VlaykpOwokZm9ybS0+c2V0V2lkZ2V0KCdzZW5kX21vbnRobHlfb24nLCAnc2VsZWN0JywgYXJyYXkoJ3ByZWZlcmVuY2UnID0+ICdzZW5kX21vbnRobHlfb24nLCAndmFsdWVzJyA9PiBEU3Vic2NyaWJlcjo6JG1vbnRoKSk7CgoKJGZvcm0tPnNldFdpZGdldCgnZGVtb19lbWFpbCcsICd0ZXh0JywgYXJyYXkoJ3ByZWZlcmVuY2UnID0+ICdkZW1vX2VtYWlsJykpOwoKaWYoJGZvcm0tPmlzU2VudCgpKQp7CiAgJGZvcm0tPnByb2Nlc3MoKTsKICByZXR1cm4gJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQpOwp9CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Rlc3QnLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICd0ZXN0JywgJHJldHVybmlkLCAnJywgYXJyYXkoKSwgJycsIHRydWUpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmb3JtJywgJGZvcm0pOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbi5vcHRpb25zLnRwbCcpOwoKLy8gZWNobyAkZm9ybS0+cmVuZGVyKCk7]]></data>
	</file>
	<file>
	  <filename>/action.subscribers_list.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFjbXNtcygpKSBleGl0OwppZiAoISR0aGlzLT5DaGVja0FjY2VzcygpKSB7CglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ29yZGVyX2J5J10pKQp7CgkkcXVlcnkgPSBhcnJheSgnb3JkZXJfYnknID0+ICRwYXJhbXNbJ29yZGVyX2J5J10pOwp9CmVsc2UKewoJJHF1ZXJ5ID0gYXJyYXkoJ29yZGVyX2J5JyA9PiAndGltZXN0YW1wIERFU0MnKTsKfQoKaWYoaXNzZXQoJHBhcmFtc1snbGltaXQnXSkpCnsKCSRxdWVyeVsnbGltaXQnXSA9ICRwYXJhbXNbJ2xpbWl0J107Cn0KCiRzdWJzY3JpYmVycyA9IERTdWJzY3JpYmVyOjpnZXRTdWJzY3JpcHRpb25zQnlVc2VycygkcXVlcnkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJzY3JpYmVycycsICRzdWJzY3JpYmVycyk7CgovLyAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NyZWF0ZV9saW5rJywgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnc3Vic2NyaXB0aW9uX2VkaXQnLCAkcmV0dXJuaWQsICcnLCBhcnJheSgnaXRlbV9pZCcgPT4gJ19JVEVNX0lEXycpLCAnJywgdHJ1ZSkpOwovLyAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2RlbGV0ZV9saW5rJywgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnc3Vic2NyaXB0aW9uX2VkaXQnLCAkcmV0dXJuaWQsICcnLCBhcnJheSgnaXRlbV9pZCcgPT4gJ19JVEVNX0lEXycsICdkZWxldGUnID0+IHRpbWUoKSksICcnLCB0cnVlKSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluLnN1YnNjcmliZXJzX2xpc3QudHBsJyk7]]></data>
	</file>
	<file>
	  <filename>/action.subscriptions_list.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFjbXNtcygpKSBleGl0OwppZiAoISR0aGlzLT5DaGVja0FjY2VzcygpKSB7CglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ29yZGVyX2J5J10pKQp7CgkkcXVlcnkgPSBhcnJheSgnb3JkZXJfYnknID0+ICRwYXJhbXNbJ29yZGVyX2J5J10pOwp9CmVsc2UKewoJJHF1ZXJ5ID0gYXJyYXkoJ29yZGVyX2J5JyA9PiAnaWQnKTsKfQoKaWYoaXNzZXQoJHBhcmFtc1snbGltaXQnXSkpCnsKCSRxdWVyeVsnbGltaXQnXSA9ICRwYXJhbXNbJ2xpbWl0J107Cn0KCiRzdWJzY3JpcHRpb25zID0gRFN1YnNjcmlwdGlvbjo6ZG9TZWxlY3QoJHF1ZXJ5KTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3Vic2NyaXB0aW9ucycsICRzdWJzY3JpcHRpb25zKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignY3JlYXRlX2xpbmsnLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdzdWJzY3JpcHRpb25fZWRpdCcsICRyZXR1cm5pZCwgJycsIGFycmF5KCdpdGVtX2lkJyA9PiAnX0lURU1fSURfJyksICcnLCB0cnVlKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignZGVsZXRlX2xpbmsnLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdzdWJzY3JpcHRpb25fZWRpdCcsICRyZXR1cm5pZCwgJycsIGFycmF5KCdpdGVtX2lkJyA9PiAnX0lURU1fSURfJywgJ2RlbGV0ZScgPT4gdGltZSgpKSwgJycsIHRydWUpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW4uc3Vic2NyaXB0aW9uc19saXN0LnRwbCcpOw==]]></data>
	</file>
	<file>
	  <filename>/action.subscription_edit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFjbXNtcygpKSBleGl0OwppZiAoISR0aGlzLT5DaGVja0FjY2VzcygpKSB7CglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2l0ZW1faWQnXSkgJiYgJHBhcmFtc1snaXRlbV9pZCddICE9ICcnKQp7Cgkkc3Vic2NyaXB0aW9uID0gRFN1YnNjcmlwdGlvbjo6cmV0cmlldmVCeVBrKCRwYXJhbXNbJ2l0ZW1faWQnXSk7CQp9CgppZighaXNzZXQoJHN1YnNjcmlwdGlvbikgfHwgaXNfbnVsbCgkc3Vic2NyaXB0aW9uKSkKewoJJHN1YnNjcmlwdGlvbiA9IG5ldyBEU3Vic2NyaXB0aW9uKCk7Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2RlbGV0ZSddKSAmJiAoJHBhcmFtc1snZGVsZXRlJ10gPiAwKSAmJiAoJHBhcmFtc1snZGVsZXRlJ10rMzYwMCA+IHRpbWUoKSkpCnsKCSRzdWJzY3JpcHRpb24tPmRlbGV0ZSgpOwoJcmV0dXJuICR0aGlzLT5SZWRpcmVjdCgkaWQsJ3N1YnNjcmlwdGlvbnNfbGlzdCcsJHJldHVybmlkKTsKfQoKJGNvbXBhdGlibGVfbW9kdWxlcyA9IERTdWJzY3JpcHRpb246OmdldENvbXBhdGlibGVNb2R1bGVzKCk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignbW9kdWxlcycsICRjb21wYXRpYmxlX21vZHVsZXMpOwoKJGZvcm0gPSBuZXcgQ01TRm9ybSgkdGhpcy0+R2V0TmFtZSgpLCAkaWQsICdzdWJzY3JpcHRpb25fZWRpdCcsJHJldHVybmlkKTsKCmlmKCRmb3JtLT5pc0NhbmNlbGxlZCgpKSB7CXJldHVybiAkdGhpcy0+UmVkaXJlY3QoJGlkLCdzdWJzY3JpcHRpb25zX2xpc3QnLCRyZXR1cm5pZCk7fQoKJGZvcm0tPnNldEJ1dHRvbnMoYXJyYXkoJ3N1Ym1pdCcsJ2FwcGx5JywnY2FuY2VsJykpOwokZm9ybS0+c2V0V2lkZ2V0KCdpdGVtX2lkJywgJ2hpZGRlbicsIGFycmF5KCdvYmplY3QnID0+ICYkc3Vic2NyaXB0aW9uLCAnZmllbGRfbmFtZScgPT4gJ2lkJykpOwokZm9ybS0+c2V0V2lkZ2V0KCd0aXRsZScsICd0ZXh0JywgYXJyYXkoJ29iamVjdCcgPT4gJiRzdWJzY3JpcHRpb24pKTsKJGZvcm0tPnNldFdpZGdldCgnbW9kdWxlX25hbWUnLCAnc2VsZWN0JywgYXJyYXkoJ29iamVjdCcgPT4gJiRzdWJzY3JpcHRpb24pKTsKJGZvcm0tPnNldFdpZGdldCgncGFyYW1zJywgJ3RleHQnLCBhcnJheSgnb2JqZWN0JyA9PiAmJHN1YnNjcmlwdGlvbikpOwokZm9ybS0+c2V0V2lkZ2V0KCd0ZW1wbGF0ZScsICdzZWxlY3QnLCBhcnJheSgnb2JqZWN0JyA9PiAmJHN1YnNjcmlwdGlvbikpOwoKaWYoJGZvcm0tPmlzUG9zdGVkKCkpCnsKCQkkZm9ybS0+cHJvY2VzcygpOwoKCQlpZiAoISRmb3JtLT5oYXNFcnJvcnMoKSkKCQl7CgkJCSRzdWJzY3JpcHRpb24tPnNhdmUoKTsKCQl9CgkKCQlpZigkZm9ybS0+aXNTdWJtaXR0ZWQoKSkKCQl7CgkJCQlyZXR1cm4gJHRoaXMtPlJlZGlyZWN0KCRpZCwnc3Vic2NyaXB0aW9uc19saXN0JywkcmV0dXJuaWQpOwoJCX0KCQkKCQkkZm9ybS0+Z2V0V2lkZ2V0KCdpdGVtX2lkJyktPnNldFZhbHVlKCRzdWJzY3JpcHRpb24tPmdldElkKCkpOwoJCn0KCiR0aGlzLT5zbWFydHktPmFzc2lnbignaWQnLCAkaWQpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm0nLCAkZm9ybSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc2VsZWN0ZWRfbW9kdWxlJywgJHN1YnNjcmlwdGlvbi0+bW9kdWxlX25hbWUpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3NlbGVjdGVkX3RlbXBsYXRlJywgJHN1YnNjcmlwdGlvbi0+dGVtcGxhdGUpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbi5zdWJzY3JpcHRpb25fZWRpdC50cGwnKTs=]]></data>
	</file>
	<file>
	  <filename>/action.templates_list.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFjbXNtcygpKSBleGl0OwppZiAoISR0aGlzLT5DaGVja0FjY2VzcygpKSB7CglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7Cn0KCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVzJywgJHRoaXMtPkxpc3RUZW1wbGF0ZXMoKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NyZWF0ZV90ZW1wbGF0ZScsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3RlbXBsYXRlX2VkaXQnLCAkcmV0dXJuaWQsICcnLCBhcnJheSgndGVtcGxhdGVfbmFtZScgPT4gJ19URU1QTEFURV8nKSwgJycsIHRydWUpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdkZWxldGVfdGVtcGxhdGUnLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICd0ZW1wbGF0ZV9lZGl0JywgJHJldHVybmlkLCAnJywgYXJyYXkoJ3RlbXBsYXRlX25hbWUnID0+ICdfVEVNUExBVEVfJywgJ2RlbGV0ZScgPT4gdGltZSgpKSwgJycsIHRydWUpKTsKCgoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbi50ZW1wbGF0ZXNfbGlzdC50cGwnKTs=]]></data>
	</file>
	<file>
	  <filename>/action.template_edit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFjbXNtcygpKSBleGl0OwppZiAoISR0aGlzLT5DaGVja0FjY2VzcygpKSB7CglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2RlbGV0ZSddKSAmJiAoJHBhcmFtc1snZGVsZXRlJ10gPiAwKSAmJiAoJHBhcmFtc1snZGVsZXRlJ10rMzYwMCA+IHRpbWUoKSkgJiYgaXNzZXQoJHBhcmFtc1sndGVtcGxhdGVfbmFtZSddKSAmJiAoJHBhcmFtc1snZGVsZXRlJ10gPiAwKSkgCnsKCSR0aGlzLT5EZWxldGVUZW1wbGF0ZSgkcGFyYW1zWyd0ZW1wbGF0ZV9uYW1lJ10pOwoJcmV0dXJuICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkKTsKfQoKCiRmb3JtID0gbmV3IENNU0Zvcm0oJHRoaXMtPmdldE5hbWUoKSwgJGlkLCAndGVtcGxhdGVfZWRpdCcsICRyZXR1cm5pZCk7CiRmb3JtLT5zZXRCdXR0b25zKGFycmF5KCdzdWJtaXQnLCdhcHBseScsJ2NhbmNlbCcpKTsKCiRmb3JtLT5zZXRXaWRnZXQoJ3RlbXBsYXRlX25hbWUnLCAndGV4dCcpOwokZm9ybS0+c2V0V2lkZ2V0KCd0ZW1wbGF0ZV9jb2RlJywgJ2NvZGVhcmVhJywgYXJyYXkoCiAgJ2RlZmF1bHRfdmFsdWUnID0+IChpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZV9uYW1lJ10pICYmICgkcGFyYW1zWyd0ZW1wbGF0ZV9uYW1lJ10gIT0gJycpKT8kdGhpcy0+R2V0VGVtcGxhdGUoJHBhcmFtc1sndGVtcGxhdGVfbmFtZSddKTokdGhpcy0+R2V0VGVtcGxhdGVGcm9tRmlsZSgnZnJvbnRlbmQuZW1haWwnKQogICkpOwoKaWYoJGZvcm0tPmlzQ2FuY2VsbGVkKCkpIHsJcmV0dXJuICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkKTt9CgppZigkZm9ybS0+aXNQb3N0ZWQoKSkKewogICRmb3JtLT5wcm9jZXNzKCk7CiAgaWYoJGZvcm0tPm5vRXJyb3IoKSkKICB7CiAgICBpZigkdGVtcGxhdGVfbmFtZSA9ICRmb3JtLT5nZXRXaWRnZXQoJ3RlbXBsYXRlX25hbWUnKS0+Z2V0VmFsdWUoKSkKICAgIHsKICAgICAgaWYoJHRlbXBsYXRlX2NvZGUgPSAkZm9ybS0+Z2V0V2lkZ2V0KCd0ZW1wbGF0ZV9jb2RlJyktPmdldFZhbHVlKCkpCiAgICAgIHsKICAgICAgICAkdGhpcy0+U2V0VGVtcGxhdGUoJHRlbXBsYXRlX25hbWUsICR0ZW1wbGF0ZV9jb2RlKTsKICAgICAgICBpZigkZm9ybS0+aXNTdWJtaXR0ZWQoKSkKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQpOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KfQoKZWNobyAkZm9ybS0+cmVuZGVyKCk7]]></data>
	</file>
	<file>
	  <filename>/action.test.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKICAgIGlmICghY21zbXMoKSkgZXhpdDsKICAgIC8qIEB2YXIgJHRoaXMgRGlnZXN0ICovCiAgICBpZiAoISR0aGlzLT5DaGVja0FjY2VzcygpKSB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwogICAgfQoKICAgICRmb3JtID0gbmV3IENNU0Zvcm0oJHRoaXMtPkdldE5hbWUoKSwgJGlkLCAndGVzdCcsICRyZXR1cm5pZCk7CiAgICAkZm9ybS0+c2V0QnV0dG9ucyhhcnJheSgnc3VibWl0JykpOwogICAgJGZvcm0tPnNldExhYmVsKCdzdWJtaXQnLCAnU2VuZCcpOwogICAgJGZvcm0tPnNldFdpZGdldCgncGVyaW9kJywgJ3NlbGVjdCcsIGFycmF5KCd2YWx1ZXMnID0+IERTdWJzY3JpYmVyOjokcGVyaW9kcykpOwoKICAgIGVjaG8gJGZvcm07CgogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3BlcmlvZCddKSAmJiAkcGFyYW1zWydwZXJpb2QnXSAhPSAnJykgewogICAgICAgICR0aGlzLT5zZW5kRGVtb0VtYWlsKCRwYXJhbXNbJ3BlcmlvZCddKTsKICAgICAgICAvLyAgJHRoaXMtPnNlbmRBbGwodHJ1ZSk7CiAgICB9Cg==]]></data>
	</file>
	<file>
	  <filename>/Digest.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCgogICAgLyoKICAgIE1vZHVsZTogRGlnZXN0OiBUaGlzIG1vZHVsZSBhbGxvd3MgdXNlcnMgdG8gc3Vic2NyaWJlIHRvIG1vZHVsZSBub3RpZmljYXRpb25zIHRvIGdldCBhIGRpZ2VzdCBvZiBhbGwgdGhlIGxhdGVzdCB1cGRhdGVzCgogICAgQ29weXJpZ2h0czogSmVhbi1DaHJpc3RvcGhlIEN1dmVsaWVyIDxqY2NAYXRvbXNlZWRzLmNvbT4KCiAgICBMaWNlbnNlOiBHUEwKICAgICovCgogICAgY2xhc3MgRGlnZXN0IGV4dGVuZHMgQ01TTW9kdWxlCiAgICB7CiAgICAgICAgcHVibGljIGZ1bmN0aW9uIEdldE5hbWUoKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICdEaWdlc3QnOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gJ0RpZ2VzdCc7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VmVyc2lvbigpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gJzAuMS4yJzsKICAgICAgICB9CgogICAgICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3IoKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICdKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXInOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAnamNjQGF0b21zZWVkcy5jb20nOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIGZ1bmN0aW9uIEhhc0FkbWluKCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPkNoZWNrQWNjZXNzKCk7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgZnVuY3Rpb24gQ2hlY2tBY2Nlc3MoKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBEaWdlc3QnKTsKICAgICAgICB9CgogICAgICAgIHB1YmxpYyBmdW5jdGlvbiBHZXREZXBlbmRlbmNpZXMoKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIGFycmF5KAogICAgICAgICAgICAgICAgJ0Nyb24nICAgICAgPT4gJzAuMC42JywKICAgICAgICAgICAgICAgICdDTVNGb3JtcycgID0+ICcxLjEwLjEwJywKICAgICAgICAgICAgICAgICdDTVNVc2VycycgID0+ICcxLjAuMTMnLAogICAgICAgICAgICAgICAgJ0NNU01haWxlcicgPT4gJzIuMC4yJwogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gJ3VzZXJzZ3JvdXBzJzsKICAgICAgICB9CgogICAgICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRIZWxwKCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+bGFuZygnaGVscCcpOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAiMS4xMCI7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgZnVuY3Rpb24gc2V0UGFyYW1ldGVycygpCiAgICAgICAgewogICAgICAgICAgICBpZighaXNzZXQoJHRoaXMtPmluaXRpYWxpemVkKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHRoaXMtPkluaXRpYWxpemVGcm9udGVuZCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5pbml0aWFsaXplZCA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkKICAgICAgICB7CiAgICAgICAgICAgICR0aGlzLT5SZWdpc3Rlck1vZHVsZVBsdWdpbigpOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gR2V0RXZlbnREZXNjcmlwdGlvbigkZXZlbnRuYW1lKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdldmVudF9pbmZvXycgLiAkZXZlbnRuYW1lKTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEdldEV2ZW50SGVscCgkZXZlbnRuYW1lKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdldmVudF9oZWxwXycgLiAkZXZlbnRuYW1lKTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEhhbmRsZXNFdmVudHMoKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgZnVuY3Rpb24gRG9FdmVudCgkb3JpZ2luYXRvciwgJGV2ZW50bmFtZSwgJiRwYXJhbXMpCiAgICAgICAgewogICAgICAgICAgICBpZiAoJGV2ZW50bmFtZSA9PSAnQ3JvbkhvdXJseScpIHsKICAgICAgICAgICAgICAgIC8vIERvIGRlc2lyZWQgYWN0aW9uIGhlcmUKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2VuZF9lbWFpbHMnKSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkF1ZGl0KDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJ1NlbmRpbmcgZW1haWwgZmlyZWQnKTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2VuZEFsbCgpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+QXVkaXQoMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAnU2VuZGluZyBlbWFpbCBub3QgZmlyZWQnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRIZWFkZXJIVE1MKCkKICAgICAgICB7Ci8vICAgICAgICAgICAgcmV0dXJuICc8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSInIC4gJHRoaXMtPmNvbmZpZ1sncm9vdF91cmwnXSAuICcvbGliL2pxdWVyeS9jc3Mvc21vb3RobmVzcy9qcXVlcnktdWktMS44LjQuY3VzdG9tLmNzcyIgLz4nOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIGZ1bmN0aW9uIEluc3RhbGwoKQogICAgICAgIHsKICAgICAgICAgICAgJGRiICAgPSBjbXNfdXRpbHM6OmdldF9kYigpOwogICAgICAgICAgICAkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CgogICAgICAgICAgICAvLyBTdWJzY3JpcHRpb25zCiAgICAgICAgICAgICRmbGRzICAgICA9ICcKICAgIGlkIEkgS0VZIEFVVE9JTkNSRU1FTlQsCiAgICB0aXRsZSBDKDI1NSksCiAgICBtb2R1bGVfbmFtZSBDKDI1NSksCiAgICBwYXJhbXMgQygyNTUpLAogICAgdGVtcGxhdGUgQygyNTUpCiAgICAnOwogICAgICAgICAgICAkdGFib3B0YXJyYXkgPSBhcnJheSgpOwogICAgICAgICAgICAkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9kaWdlc3Rfc3Vic2NyaXB0aW9ucyIsCiAgICAgICAgICAgICAgICAkZmxkcywKICAgICAgICAgICAgICAgICR0YWJvcHRhcnJheSk7CiAgICAgICAgICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiAgICAgICAgICAgIC8vIFN1YnNjcmliZXJzCiAgICAgICAgICAgICRmbGRzICAgICA9ICcKICAgIGlkIEkgS0VZIEFVVE9JTkNSRU1FTlQsCiAgICB0aW1lc3RhbXAgSSwKICAgIHVzZXJfaWQgSSwKICAgIHN1YnNjcmlwdGlvbl9pZCBJLAogICAgcGVyaW9kIEMoMjU1KQogICAgJzsKICAgICAgICAgICAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZGlnZXN0X3N1YnNjcmliZXJzIiwKICAgICAgICAgICAgICAgICRmbGRzLAogICAgICAgICAgICAgICAgJHRhYm9wdGFycmF5KTsKICAgICAgICAgICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKICAgICAgICAgICAgLy8gQW5ub3VjZW1lbnRzCiAgICAgICAgICAgICRmbGRzICAgICA9ICcKICAgIGlkIEkgS0VZIEFVVE9JTkNSRU1FTlQsCiAgICBzdWJzY3JpcHRpb25faWQgSSwKICAgIHRpbWVzdGFtcCBJLAogICAgdGl0bGUgQygyNTUpLAogICAgYW5ub3VuY2VtZW50IFhMCiAgICAnOwogICAgICAgICAgICAkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9kaWdlc3RfYW5ub3VuY2VtZW50cyIsCiAgICAgICAgICAgICAgICAkZmxkcywKICAgICAgICAgICAgICAgICR0YWJvcHRhcnJheSk7CiAgICAgICAgICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiAgICAgICAgICAgIC8vIExvZ3MKICAgICAgICAgICAgJGZsZHMgICAgID0gJwogICAgaWQgSSBLRVkgQVVUT0lOQ1JFTUVOVCwKICAgIHRpbWVzdGFtcCBJLAogICAgcGVyaW9kIEMoMjU1KSwKICAgIHRpdGxlIEMoMjU1KSwKICAgIHN1bW1hcnkgWEwsCiAgICBkZXRhaWxzIFhMCiAgICAnOwogICAgICAgICAgICAkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9kaWdlc3RfbG9ncyIsCiAgICAgICAgICAgICAgICAkZmxkcywKICAgICAgICAgICAgICAgICR0YWJvcHRhcnJheSk7CiAgICAgICAgICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiAgICAgICAgICAgIC8vIFByZWZlcmVuY2VzCiAgICAgICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdlbWFpbF9zdWJqZWN0JywgJyVQRVJJT0QlIHVwZGF0ZXMnKTsKICAgICAgICAgICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2VtYWlsX3RlbXBsYXRlJywgJ2RlZmF1bHQnKTsKICAgICAgICAgICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3NlbmRfZW1haWxzJywgJ2ZhbHNlJyk7CiAgICAgICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzZW5kX3dlZWtseV9vbicsICc3Jyk7CiAgICAgICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzZW5kX21vbnRobHlfb24nLCAnZmlyc3QnKTsKCiAgICAgICAgICAgIC8vIFJFR0lTVEVSIEVWRU5UUwoKICAgICAgICAgICAgJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ3JvbicsICdDcm9uSG91cmx5JywgZmFsc2UpOwoKCiAgICAgICAgICAgIC8vIFBlcm1pc3Npb24KICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ1VzZSBOb3RpZmljYXRpb25Ub29sJywgJ1VzZSBOb3RpZmljYXRpb25Ub29sJyk7CgogICAgICAgICAgICAkdGhpcy0+QXVkaXQoMCwKICAgICAgICAgICAgICAgICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwKICAgICAgICAgICAgICAgICR0aGlzLT5MYW5nKCdpbnN0YWxsZWQnLCAkdGhpcy0+R2V0VmVyc2lvbigpKSk7CgogICAgICAgIH0KCiAgICAgICAgcHVibGljIGZ1bmN0aW9uIFVuaW5zdGFsbCgpCiAgICAgICAgewogICAgICAgICAgICAkZGIgICA9IGNtc191dGlsczo6Z2V0X2RiKCk7CiAgICAgICAgICAgICRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCiAgICAgICAgICAgICRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9kaWdlc3Rfc3Vic2NyaXB0aW9ucyIpOwogICAgICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiAgICAgICAgICAgICRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9kaWdlc3Rfc3Vic2NyaWJlcnMiKTsKICAgICAgICAgICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwogICAgICAgICAgICAkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZGlnZXN0X2Fubm91bmNlbWVudHMiKTsKICAgICAgICAgICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwogICAgICAgICAgICAkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZGlnZXN0X2xvZ3MiKTsKICAgICAgICAgICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKICAgICAgICAgICAgLy8gUmVtb3ZlIHByZWZlcmVuY2VzCiAgICAgICAgICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCk7CgogICAgICAgICAgICAvLyByZW1vdmUgdGhlIHBlcm1pc3Npb25zCiAgICAgICAgICAgICR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdVc2UgTm90aWZpY2F0aW9uVG9vbCcpOwoKICAgICAgICAgICAgLy8gRVZFTlRTCiAgICAgICAgICAgICR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0Nyb24nLCAnQ3JvbkRhaWx5Jyk7CgogICAgICAgICAgICAvLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKICAgICAgICAgICAgJHRoaXMtPkF1ZGl0KDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ3VuaW5zdGFsbGVkJykpOwogICAgICAgIH0KCgogICAgICAgIHByaXZhdGUgZnVuY3Rpb24gc2VuZERpZ2VzdEZvclBlcmlvZCgkcGVyaW9kLCAkZGVtb19lbWFpbCA9IE5VTEwpCiAgICAgICAgewogICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHBlcmlvZCwgRFN1YnNjcmliZXI6OiRwZXJpb2RzKSAmJiAkcGVyaW9kICE9ICdOb25lJykgewoKICAgICAgICAgICAgICAgICRkYXRhcyA9IERTdWJzY3JpYmVyOjpnZXREYXRhc0ZvclBlcmlvZCgkcGVyaW9kKTsKCiAgICAgICAgICAgICAgICBpZighaXNfbnVsbCgkZGVtb19lbWFpbCkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJHN1YnNjcmlwdGlvbnMgPSBEU3Vic2NyaXB0aW9uOjpkb1NlbGVjdCgpOwoKICAgICAgICAgICAgICAgICAgICAkZGF0YXMgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgJ3N1YnNjcmliZXJzJyA9PiBhcnJheShhcnJheSgnc3Vic2NyaWJlcicgPT4gJGRlbW9fZW1haWwsICdzdWJzY3JpcHRpb25zJyA9PiBEU3Vic2NyaXB0aW9uOjpnZXRJZHMoJHN1YnNjcmlwdGlvbnMpKSksCiAgICAgICAgICAgICAgICAgICAgICAgICdzdWJzY3JpcHRpb25zJyA9PiBEU3Vic2NyaXB0aW9uOjpkb1NlbGVjdCgpCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkY29udGVudCA9IGFycmF5KCk7CgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGRhdGFzWydzdWJzY3JpcHRpb25zJ10gYXMgJHN1YnNjcmlwdGlvbikgewogICAgICAgICAgICAgICAgICAgIC8qIEB2YXIgJHN1YnNjcmlwdGlvbiBEU3Vic2NyaXB0aW9uICovCiAgICAgICAgICAgICAgICAgICAgaWYgKCRzdWJzY3JpcHRpb24tPmhhdmVDb250ZW50KCRwZXJpb2QpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50WyRzdWJzY3JpcHRpb24tPmdldElkKCldWyd0aXRsZSddICAgICAgID0gJHN1YnNjcmlwdGlvbi0+dGl0bGU7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50WyRzdWJzY3JpcHRpb24tPmdldElkKCldWydtb2R1bGVfbmFtZSddID0gJHN1YnNjcmlwdGlvbi0+bW9kdWxlX25hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50WyRzdWJzY3JpcHRpb24tPmdldElkKCldWydhbm5vdW5jZXMnXSAgID0gJHN1YnNjcmlwdGlvbi0+Z2V0QW5ub3VuY2VzKCRwZXJpb2QpOwogICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudFskc3Vic2NyaXB0aW9uLT5nZXRJZCgpXVsnY29udGVudCddICAgICA9ICRzdWJzY3JpcHRpb24tPmdldENvbnRlbnQoJHBlcmlvZCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRzZW50X2Zvcl9wZXJpb2QgPSAwOwogICAgICAgICAgICAgICAgJGxvZ3MgICAgICAgICAgICA9ICcnOwoKICAgICAgICAgICAgICAgIGlmIChjb3VudCgkY29udGVudCkpIHsKCiAgICAgICAgICAgICAgICAgICAgJGNtc21haWxlciA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ01TTWFpbGVyJyk7CiAgICAgICAgICAgICAgICAgICAgJHN1YmplY3QgICA9IHN0cl9yZXBsYWNlKCclUEVSSU9EJScsICRwZXJpb2QsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdlbWFpbF9zdWJqZWN0JykpOwoKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkZGF0YXNbJ3N1YnNjcmliZXJzJ10gYXMgJHN1YnNjcmliZXIpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICRzdWJzY3JpYmVyX2NvbnRlbnQgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkc3Vic2NyaWJlclsnc3Vic2NyaXB0aW9ucyddIGFzICRzdWJzY3JpcHRpb25faWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkY29udGVudFskc3Vic2NyaXB0aW9uX2lkXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3Vic2NyaWJlcl9jb250ZW50WyRzdWJzY3JpcHRpb25faWRdID0gJGNvbnRlbnRbJHN1YnNjcmlwdGlvbl9pZF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCgkc3Vic2NyaWJlcl9jb250ZW50KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtb2R1bGVzJywgJHN1YnNjcmliZXJfY29udGVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3BlcmlvZCcsICRwZXJpb2QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRlbXBsYXRlID0gJHRoaXMtPmdldFByZWZlcmVuY2UoJ2VtYWlsX3RlbXBsYXRlJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzX251bGwoJHRlbXBsYXRlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRib2R5ID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZnJvbnRlbmQuZW1haWwudHBsJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRib2R5ID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkdGVtcGxhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjbXNtYWlsZXItPnJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY21zbWFpbGVyLT5TZXRDaGFyU2V0KCdVVEYtOCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNtc21haWxlci0+U2V0U3ViamVjdCgkc3ViamVjdCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzX29iamVjdCgkc3Vic2NyaWJlclsnc3Vic2NyaWJlciddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlbWFpbCA9ICRzdWJzY3JpYmVyWydzdWJzY3JpYmVyJ10tPmdldFVzZXIoKS0+ZW1haWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlbWFpbCA9ICRzdWJzY3JpYmVyWydzdWJzY3JpYmVyJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxvZ3MgLj0gJ1NlbmQgY29udGVudCBmb3IgJyAuICRlbWFpbCAuICc6ICcgLiAkc3ViamVjdCAuICJcbiI7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNtc21haWxlci0+QWRkQWRkcmVzcygkZW1haWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNtc21haWxlci0+U2V0Qm9keSgkYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY21zbWFpbGVyLT5Jc0hUTUwodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2VuZF9lbWFpbHMnKSA9PSAxIHx8ICRkZW1vX2VtYWlsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRkZW1vX2VtYWlsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbnRfZm9yX3BlcmlvZCsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNtc21haWxlci0+U2VuZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnQW4gZW1haWwgaGFzIGJlZW4gc2VudCB0byAnIC4gJGVtYWlsIC4gJzxiciAvPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWJ1Z19kaXNwbGF5KCdDb250ZW50OiAnIC4gaHRtbGVudGl0aWVzKCRjb250ZW50KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWJ1Z19kaXNwbGF5KCdFbWFpbDogJyAuIGh0bWxlbnRpdGllcygkZW1haWwpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRkZW1vX2VtYWlsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxwPk5vIGNvbnRlbnQgZm9yIHBlcmlvZCAnIC4gJHBlcmlvZCAuICcgd2l0aCBlbWFpbCAnIC4gJGRlbW9fZW1haWwgLiAnPC9wPic7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkc2VudF9mb3JfcGVyaW9kKSB7CiAgICAgICAgICAgICAgICAgICAgJGxvZ3MgLj0gJ0NPTlRFTlQ6IFtbWycgLiBzZXJpYWxpemUoJGNvbnRlbnQpIC4gIl1dXVxuIjsKICAgICAgICAgICAgICAgICAgICAvLyBMb2cgaXQKICAgICAgICAgICAgICAgICAgICAkbG9nICAgICAgICAgID0gbmV3IERMb2coKTsKICAgICAgICAgICAgICAgICAgICAkbG9nLT50aXRsZSAgID0gJHN1YmplY3Q7CiAgICAgICAgICAgICAgICAgICAgJGxvZy0+cGVyaW9kICA9ICRwZXJpb2Q7CiAgICAgICAgICAgICAgICAgICAgJGxvZy0+c3VtbWFyeSA9ICRzZW50X2Zvcl9wZXJpb2QgLiAnIGVtYWlscyBzZW50IGZvciAnIC4gJHBlcmlvZDsKICAgICAgICAgICAgICAgICAgICAkbG9nLT5kZXRhaWxzID0gJGxvZ3M7CiAgICAgICAgICAgICAgICAgICAgJGxvZy0+c2F2ZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZFVwZGF0ZUltbWVkaWF0ZWx5KCRtb2R1bGVfbmFtZSkKICAgICAgICB7CiAgICAgICAgICAgIC8vICR0aGlzLT5nZXRVcGRhdGVTdWJqZWN0KCksICR0aGlzLT5nZXRVcGRhdGVCb2R5KCkKICAgICAgICAgICAgJHN1YnNjcmlwdGlvbnMgPSBEU3Vic2NyaXB0aW9uOjpkb1NlbGVjdChhcnJheSgnd2hlcmUnID0+IGFycmF5KCdtb2R1bGVfbmFtZScgPT4gJG1vZHVsZV9uYW1lKSkpOwogICAgICAgICAgICAkY21zbWFpbGVyICAgICA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ01TTWFpbGVyJyk7CgogICAgICAgICAgICBmb3JlYWNoICgkc3Vic2NyaXB0aW9ucyBhcyAkc3Vic2NyaXB0aW9uKSB7CiAgICAgICAgICAgICAgICAkc3Vic2NyaWJlcnMgPSAkc3Vic2NyaXB0aW9uLT5nZXRTdWJzY3JpYmVycygnRGlyZWN0bHknKTsKICAgICAgICAgICAgICAgIGlmIChjb3VudCgkc3Vic2NyaWJlcnMpKSB7CiAgICAgICAgICAgICAgICAgICAgJGl0ZW1zID0gJHN1YnNjcmlwdGlvbi0+Z2V0TW9kdWxlSXRlbXNGb3JEaXJlY3RVcGRhdGUoKTsKCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGl0ZW1zIGFzICRpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdWJqZWN0ID0gJGl0ZW0tPmdldFVwZGF0ZVN1YmplY3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGJvZHkgICAgPSAkaXRlbS0+Z2V0VXBkYXRlQm9keSgpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkc3Vic2NyaWJlcnMgYXMgJHN1YnNjcmliZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjbXNtYWlsZXItPnJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY21zbWFpbGVyLT5TZXRDaGFyU2V0KCdVVEYtOCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNtc21haWxlci0+U2V0U3ViamVjdCgkc3ViamVjdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY21zbWFpbGVyLT5BZGRBZGRyZXNzKCRzdWJzY3JpYmVyLT5nZXRVc2VyKCktPmVtYWlsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjbXNtYWlsZXItPlNldEJvZHkoJGJvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNtc21haWxlci0+SXNIVE1MKHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzZW5kX2VtYWlscycpID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY21zbWFpbGVyLT5TZW5kKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtLT5zZW5kX3VwZGF0ZV9pbW1lZGlhdGVseSA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtLT5zYXZlKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZEFsbCgkZGVtbyA9IGZhbHNlKQogICAgICAgIHsKICAgICAgICAgICAgJHRoaXMtPkF1ZGl0KDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJ1NlbmRpbmcgYWxsIG1haWxzLiAnKTsKICAgICAgICAgICAgaWYgKCRkZW1vKSB7CiAgICAgICAgICAgICAgICAkZW1haWwgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVtb19lbWFpbCcpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGVtYWlsID0gTlVMTDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRkZW1vIHx8ICR0aGlzLT5zZW5kYWJsZSgpKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoIChEU3Vic2NyaWJlcjo6Z2V0UGVyaW9kc0ZvclNlbmQoKSBhcyAkcGVyaW9kKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNlbmREaWdlc3RGb3JQZXJpb2QoJHBlcmlvZCwgJGVtYWlsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcHJpdmF0ZSBmdW5jdGlvbiBzZW5kYWJsZSgpCiAgICAgICAgewoKICAgICAgICAgICAgaWYgKHRpbWUoKSA8IHN0cnRvdGltZSgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2VuZF9hdCcpKSkgewogICAgICAgICAgICAgICAgZWNobyAnPHA+PGVtPkRhcnRoIFZhZGVyOjwvZW0+IFRoZSBmb3JjZSBpcyB3aXRoIHlvdSwgeW91bmcgU2t5d2Fsa2VyLCBidXQgeW91IGFyZSBub3QgYSBKZWRpIHlldC48L3A+JzsKCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGxhdGVzdCA9IERMb2c6OmdldExhdGVzdExvZygpOwogICAgICAgICAgICAkbGltaXQgID0gc3RydG90aW1lKCctMjMgaG91cnMnKTsKICAgICAgICAgICAgaWYgKCRsYXRlc3QtPnRpbWVzdGFtcCA+ICRsaW1pdCkgewogICAgICAgICAgICAgICAgZWNobyAnPHA+PGVtPllvZGE6PC9lbT4gVG9vIGVhcmx5IGFub3RoZXIgbWFpbCB0byBzZW5kPC9wPic7CgogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHB1YmxpYyBmdW5jdGlvbiBzZW5kRGVtb0VtYWlsKCRwZXJpb2QpCiAgICAgICAgewogICAgICAgICAgICBpZiAoJGVtYWlsID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlbW9fZW1haWwnKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNlbmREaWdlc3RGb3JQZXJpb2QoJHBlcmlvZCwgJGVtYWlsKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0=]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/double.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIGpRdWVyeSBkb3VibGVTZWxlY3QgUGx1Z2luCiAqIEB2ZXJzaW9uIDEuMy4xCiAqIEByZXF1aXJlcyBqUXVlcnkgdjEuMy4yIG9yIGxhdGVyCiAqIEBhdXRob3IgIEpvaGFubmVzIEdlcHBlcnQgPHBvc3QgYXQgamdlcHBlcnQgZG90IGNvbT4gaHR0cDovL3d3dy5qZ2VwcGVydC5jb20KICoKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCBHUEwgbGljZW5zZXM6CiAqICAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHAKICogICBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLmh0bWwKICoKICoKICogNy8yMy8yMDA5IC0gSi4gSGluZHMgY2hhbmdlIHRvIHR3byBwYXNzIG1ldGhvZCB0byBsb2NhdGUgZWxlbWVudCBmb3IgJ3NlbGVjdGVkJyBhdHRyaWJ1dGUKICovCgovKmdsb2JhbCBqUXVlcnkgICovCgovKioKICogQ29udmVydHMgcGFzc2VkIEpTT04gb3B0aW9ucyBpbnRvIDxzZWxlY3Q+IGVsZW1lbnRzLgogKgogKiBAcGFyYW0gU3RyaW5nCiAqICAgICAgICAgICAgaWQgb2YgdGhlIHNlY29uZCBzZWxlY3QgYm94CiAqIEBwYXJhbSBTdHJpbmcKICogICAgICAgICAgICBvcHRpb24gdmFsdWVzCiAqIEBwYXJhbSBhcnJheQogKiAgICAgICAgICAgIG9wdGlvbnMgYWRkaXRpb25hbCBvcHRpb25zIChvcHRpb25hbCkKICovCgogKGZ1bmN0aW9uKCQpIHsKICAgICQuZm4uZG91YmxlU2VsZWN0ID0gZnVuY3Rpb24oZG91YmxlaWQsIHZhbHVlcywgb3B0aW9ucykgewoKICAgICAgICBvcHRpb25zID0gJC5leHRlbmQoewogICAgICAgICAgICBwcmVzZWxlY3RGaXJzdDogbnVsbCwKICAgICAgICAgICAgcHJlc2VsZWN0U2Vjb25kOiBudWxsLAogICAgICAgICAgICBlbXB0eU9wdGlvbjogZmFsc2UsCiAgICAgICAgICAgIGVtcHR5S2V5OiAtMSwKICAgICAgICAgICAgZW1wdHlWYWx1ZTogJ0Nob29zZSAuLi4nCiAgICAgICAgfSwKICAgICAgICBvcHRpb25zIHx8IHt9KTsKCiAgICAgICAgdmFyICRmaXJzdCA9IHRoaXM7CiAgICAgICAgdmFyICRzZWNvbmRpZCA9ICIjIiArIGRvdWJsZWlkOwogICAgICAgIHZhciAkc2Vjb25kID0gJCgkc2Vjb25kaWQpOwoKICAgICAgICB2YXIgc2V0VmFsdWUgPSBmdW5jdGlvbih2YWx1ZSkgewogICAgICAgICAgICAkc2Vjb25kLnZhbCh2YWx1ZSkuY2hhbmdlKCk7CiAgICAgICAgfTsKCiAgICAgICAgLyoqIEhlbHBlciBGdW5jdGlvbiB0byByZW1vdmUgY2hpbGRzIGZyb20gc2Vjb25kICovCiAgICAgICAgdmFyIHJlbW92ZVZhbHVlcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkKCRzZWNvbmRpZCArICIgb3B0aW9uIikucmVtb3ZlKCk7CiAgICAgICAgfTsKCiAgICAgICAgLyoqIE9uQ2hhbmdlIEhhbmRsZXIgKi8KCQkkKHRoaXMpLmNoYW5nZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmVtb3ZlVmFsdWVzKCk7CiAgICAgICAgICAgIHZhciAkY3VycmVudCA9IHRoaXMub3B0aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdLnZhbHVlOwogICAgICAgICAgICBpZiAoJGN1cnJlbnQgIT09ICcnKSB7CiAgICAgICAgICAgICAgICAkLmVhY2godmFsdWVzLAogICAgICAgICAgICAgICAgZnVuY3Rpb24oaywgdikgewogICAgICAgICAgICAgICAgICAgIHZhciBiZXN0azsKICAgICAgICAgICAgICAgICAgICBpZiAoJGN1cnJlbnQgPT0gdi5rZXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKHYudmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihrLCB2MikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFiZXN0ayAmJiAodi5kZWZhdWx0dmFsdWUgIT09IG51bGwgJiYgdjIgPT0gdi5kZWZhdWx0dmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVzdGsgPSBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMucHJlc2VsZWN0U2Vjb25kICE9PSBudWxsICYmIHYyID09IG9wdGlvbnMucHJlc2VsZWN0U2Vjb25kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVzdGsgPSBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKHYudmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihrLCB2MikgewogICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gJCgiPG9wdGlvbj4iKS5odG1sKGspLmF0dHIoJ3ZhbHVlJywgdjIpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnByZXNlbGVjdFNlY29uZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKG9wdGlvbnMucHJlc2VsZWN0U2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihpbmRleCwgc2VsZWN0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodjIgPT0gc2VsZWN0ZWQpIHsKCQkJCQkJCQkJby5odG1sKGspLmF0dHIoInNlbGVjdGVkIiwgInNlbGVjdGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9PT0gYmVzdGspIHsgby5odG1sKGspLmF0dHIoInNlbGVjdGVkIiwgInNlbGVjdGVkIik7IH0KCQkJCQkJICBvLmFwcGVuZFRvKCRzZWNvbmQpOwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBzZXRWYWx1ZShvcHRpb25zLmVtcHR5VmFsdWUpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CgogICAgICAgIAkvL3JlbW92ZSBhbGwgY3VycmVudCBpdGVtcyBpbiBzZWxlY3QgYm94ZXMKICAgICAgICAgICAgJGZpcnN0LmNoaWxkcmVuKCkucmVtb3ZlKCk7CiAgICAgICAgICAgICRzZWNvbmQuY2hpbGRyZW4oKS5yZW1vdmUoKTsKCiAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgZW1wdHkgb3B0aW9uIHBhcmFtCiAgICAgICAgICAgIGlmIChvcHRpb25zLmVtcHR5T3B0aW9uKSB7CiAgICAgICAgICAgICAgICB2YXIgb2UgPSAkKCI8b3B0aW9uPiIpLmh0bWwob3B0aW9ucy5lbXB0eVZhbHVlKS5hdHRyKCd2YWx1ZScsIG9wdGlvbnMuZW1wdHlLZXkpOwogICAgICAgICAgICAgICAgb2UuYXBwZW5kVG8oJGZpcnN0KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gYWRkIGFsbCBvcHRpb25zIHRvIGZpcnN0IHNlbGVjdCBib3gKICAgICAgICAgICAgJC5lYWNoKHZhbHVlcywKICAgICAgICAgICAgZnVuY3Rpb24oaywgdikgewogICAgICAgICAgICAgICAgdmFyIG9mID0gJCgiPG9wdGlvbj4iKS5odG1sKGspLmF0dHIoJ3ZhbHVlJywgdi5rZXkpOwogICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMucHJlc2VsZWN0Rmlyc3QgIT09IG51bGwgJiYgdi5rZXkgPT0gb3B0aW9ucy5wcmVzZWxlY3RGaXJzdCkgewoJCQkJCW9mLmh0bWwoaykuYXR0cigic2VsZWN0ZWQiLCAic2VsZWN0ZWQiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9mLmFwcGVuZFRvKCRmaXJzdCk7CgogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIGlmIChvcHRpb25zLnByZXNlbGVjdEZpcnN0ID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICB2YXIgJGN1cnJlbnQgPSB0aGlzLm9wdGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XS52YWx1ZTsKICAgICAgICAgICAgICAgIGlmICgkY3VycmVudCAhPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAkLmVhY2godmFsdWVzLAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGssIHYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJlc3RrOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGN1cnJlbnQgPT0gdi5rZXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuZWFjaCh2LnZhbHVlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGssIHYyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFiZXN0ayAmJiAodi5kZWZhdWx0dmFsdWUgIT09IG51bGwgJiYgdjIgPT0gdi5kZWZhdWx0dmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RrID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMucHJlc2VsZWN0U2Vjb25kICE9PSBudWxsICYmIHYyID09IG9wdGlvbnMucHJlc2VsZWN0U2Vjb25kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RrID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuZWFjaCh2LnZhbHVlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGssIHYyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSAkKCI8b3B0aW9uPiIpLmh0bWwoaykuYXR0cigndmFsdWUnLCB2Mik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPT09IGJlc3RrKSB7IG8uaHRtbChrKS5hdHRyKCJzZWxlY3RlZCIsICJzZWxlY3RlZCIpOyB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5hcHBlbmRUbygkc2Vjb25kKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKG9wdGlvbnMuZW1wdHlWYWx1ZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkZmlyc3QuY2hhbmdlKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSk7CgogICAgfTsKfSkoalF1ZXJ5KTsK]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmcgPSBhcnJheSgKCidmcmllbmRseW5hbWUnID0+ICdEaWdlc3QnLAoncG9zdGluc3RhbGwnID0+ICdCZSBzdXJlIHRvIHNldCAiVXNlIERpZ2VzdCIgcGVybWlzc2lvbnMgdG8gdXNlIHRoaXMgbW9kdWxlIScsCidwb3N0dW5pbnN0YWxsJyA9PiAnTW9kdWxlIFVuaW5zdGFsbGVkLicsCidyZWFsbHlfdW5pbnN0YWxsJyA9PiAnUmVhbGx5PyBZb3VcJ3JlIHN1cmUgeW91IHdhbnQgdG8gdW5pbnN0YWxsIHRoaXMgZmluZSBtb2R1bGU/JywKJ3VuaW5zdGFsbGVkJyA9PiAnTW9kdWxlIFVuaW5zdGFsbGVkLicsCidpbnN0YWxsZWQnID0+ICdNb2R1bGUgdmVyc2lvbiAlcyBpbnN0YWxsZWQuJywKCQovLyBGT1JNCidmb3JtX3RpdGxlJyA9PiAnVGl0bGUnLAonZm9ybV9tb2R1bGVfbmFtZScgPT4gJ01vZHVsZSBuYW1lJywKJ2Zvcm1fcGFyYW1zJyA9PiAnUGFyYW1ldGVycycsCidmb3JtX3RlbXBsYXRlJyA9PiAnVGVtcGxhdGUnLAoKJ2Zvcm1fZW1haWxfc3ViamVjdCcgPT4gJ0VtYWlsIHN1YmplY3QnLAonZm9ybV9lbWFpbF90ZW1wbGF0ZScgPT4gJ0VtYWlsIHRlbXBsYXRlJywKJ2Zvcm1fc2VuZF9lbWFpbHMnID0+ICdTZW5kIGVtYWlscycsCidmb3JtX3NlbmRfYXQnID0+ICdTZW5kIGF0JywKJ2Zvcm1fc2VuZF9maXhlZF90aW1lJyA9PiAnU2VuZCBhdCBhIGZpeGVkIHRpbWUnLAonZm9ybV9zZW5kX3dlZWtseV9vbicgPT4gJ1NlbmQgd2Vla2x5IGRpZ2VzdCBvbicsCidmb3JtX3NlbmRfbW9udGhseV9vbicgPT4gJ1NlbmQgbW9udGhseSBkaWdlc3Qgb24nLAoKJ2Zvcm1fdGVtcGxhdGVfbmFtZScgPT4gJ1RlbXBsYXRlIG5hbWUnLAonZm9ybV90ZW1wbGF0ZV9jb2RlJyA9PiAnVGVtcGxhdGUgY29kZScsCidmb3JtX2RlbW9fZW1haWwnID0+ICdTZW5kIGRlbW8gZW1haWxzIHRvJywKJ2Zvcm1fcGVyaW9kJyA9PiAnUGVyaW9kJywKJ2Zvcm1fcGVyaW9kcycgPT4gJ1BlcmlvZHMnLAoKLy8gRGl2ZXJzCidTZWxlY3Qgb25lJyA9PiAnU2VsZWN0IG9uZScsCgkKJ2hlbHAnID0+ICcKPGgzPkhlbHA8L2gzPgo8cD5PbiB0aGUgZnJvbnRlbmQsIHlvdSBjYW4gdXNlIHRoZSB0YWcge0RpZ2VzdH0gdG8gc2hvdyB0aGUgdXNlclwncyBub3RpZmljYXRpb25zIHByZWZlcmVuY2VzLjwvcD4KJywKCik7]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.DLog.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKICAKICAvKgogICAqIFN1YnNjcmliZXIgY2xhc3MKICAgKiAKICAgKiBDb3B5cmlnaHRzOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgLSAyMDExCiAgICogCiAgICovCgpjbGFzcyBETG9nCnsKCWNvbnN0IERCX05BTUUgID0gJ21vZHVsZV9kaWdlc3RfbG9ncyc7CgkKCS8vIFZhcnMKCglwcm90ZWN0ZWQgJGlkOwoJcHJvdGVjdGVkICR2YXJzID0gYXJyYXkoKTsKCXByb3RlY3RlZCAkaXNfbW9kaWZpZWQ7CgogIHByb3RlY3RlZCBzdGF0aWMgJGZpZWxkcyA9IGFycmF5KCAgCQogIAkndGl0bGUnID0+IGFycmF5KCduYW1lJyA9PiAndGl0bGUnLCAnYWRvJyA9PiAnQygyNTUpJyksCiAgCSd0aW1lc3RhbXAnID0+IGFycmF5KCduYW1lJyA9PiAndGltZXN0YW1wJywgJ2FkbycgPT4gJ0knKSwKICAJJ3BlcmlvZCcgPT4gYXJyYXkoJ25hbWUnID0+ICdwZXJpb2QnLCAnYWRvJyA9PiAnQygyNTUpJyksCiAgCSdzdW1tYXJ5JyA9PiBhcnJheSgnbmFtZScgPT4gJ3N1bW1hcnknLCAnYWRvJyA9PiAnWEwnKSwKICAJJ2RldGFpbHMnID0+IGFycmF5KCduYW1lJyA9PiAnZGV0YWlscycsICdhZG8nID0+ICdYTCcpLAogICk7CiAgCglwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCgl7CgkJcmV0dXJuIChzdHJpbmcpJHRoaXMtPnRpdGxlOwoJfQkKCQoJcHVibGljIGZ1bmN0aW9uIGdldElkKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmlkOwoJfQoJCglwcml2YXRlIGZ1bmN0aW9uIHNldElkKCRpZCkKCXsKCQkkdGhpcy0+aWQgPSAkaWQ7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBfX3NldCgkdmFyLCAkdmFsKQoJewoJCQkkdGhpcy0+aXNfbW9kaWZpZWQgPSB0cnVlOwogICAgICAkdGhpcy0+dmFyc1skdmFyXSA9ICR2YWw7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoJHZhcikKCXsKCQlpZihtZXRob2RfZXhpc3RzKCR0aGlzLCAkdmFyKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+JHZhcigpOwoJCX0KCSAgZWxzZWlmIChhcnJheV9rZXlfZXhpc3RzKCR2YXIsICR0aGlzLT52YXJzKSkKCQl7CgkgIAlyZXR1cm4gJHRoaXMtPnZhcnNbJHZhcl07CgkgIH0gCgkJZWxzZSAKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KICB9CgoJcHVibGljIGZ1bmN0aW9uIFBvcHVsYXRlRnJvbURiKCRyb3cpCgl7CgkJICAkdGhpcy0+aWQgPSAkcm93WydpZCddOwoJCQlmb3JlYWNoKHNlbGY6OiRmaWVsZHMgYXMgJGZpZWxkKQoJCQl7CgkJCQkkdGhpcy0+dmFyc1skZmllbGRbJ25hbWUnXV0gPSAkcm93WyRmaWVsZFsnbmFtZSddXTsKCQkJfQoJfQoKCiAgcHVibGljIGZ1bmN0aW9uIHNhdmUoKQogIHsKICAgIC8vIFVwZ3JhZGUgb3IgSW5zZXJ0ID8KICAgIGlmICgkdGhpcy0+aWQgIT0gbnVsbCkKICAgIHsKICAgICAgJHRoaXMtPnVwZGF0ZSgpOwogICAgfQogICAgZWxzZSAKICAgIHsgICAgIAogICAgICAkdGhpcy0+aW5zZXJ0KCk7CiAgICB9ICAgCgogIH0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gcHJlcGFyZVNhdmUoKQoJewoJCSRzZXQgPSBhcnJheSgpOwoJCSRnZXQgPSBhcnJheSgpOwoJCWZvcmVhY2goc2VsZjo6JGZpZWxkcyBhcyAkZmllbGQpCgkJewoJCQkkc2V0WyRmaWVsZFsnbmFtZSddXSA9ICcgJyAuICRmaWVsZFsnbmFtZSddIC4gJyA9ID8nOwoJCQkkZ2V0WyRmaWVsZFsnbmFtZSddXSA9ICR0aGlzLT4kZmllbGRbJ25hbWUnXTsKCQl9CgkJCgkJJGFycmF5ID0gJHRoaXMtPnByZXBhcmVTYXZlQ3VzdG9tKGFycmF5KCdzZXQnID0+ICRzZXQsICdnZXQnID0+ICRnZXQpKTsKCQkKCQlyZXR1cm4gJGFycmF5OwoJfQoKICBwcm90ZWN0ZWQgZnVuY3Rpb24gdXBkYXRlKCkKICB7CiAgICAkZGIgPSBjbXNfdXRpbHM6OmdldF9kYigpOwoKICAgICRxdWVyeSA9ICdVUERBVEUgICcgLiBjbXNfZGJfcHJlZml4KCkgLiAgc2VsZjo6REJfTkFNRSAuICcgCgkJU0VUICc7CgoJCSRmID0gJHRoaXMtPnByZXBhcmVTYXZlKCk7CQoJCSRxdWVyeSAuPSBpbXBsb2RlKCcsJywkZlsnc2V0J10pOwoJCS8vICRxdWVyeSAuPSAnIG1vZHVsZV9uYW1lID0gPywgdGltZXN0YW1wID0gPywgdGl0bGUgPSA/LCBhbm5vdW5jZW1lbnQgPSA/JzsKICAgICRxdWVyeSAuPSAnIFdIRVJFIGlkID0gPyAnOwoKCQkkZlsnZ2V0J11bXSA9ICR0aGlzLT5nZXRJZCgpOwoKICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCRmWydnZXQnXSk7ICAgICAgICAKCiAgICAvKkZJWE1FOiBUZXN0IHRoZSAkZGIgc3RhdHVzOyAqLwogICAgCgkJcmV0dXJuIHRydWU7CiAgfQoKICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW5zZXJ0KCkKICB7CiAgICAkZGIgPSBjbXNfdXRpbHM6OmdldF9kYigpOwoKICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gY21zX2RiX3ByZWZpeCgpIC4gIHNlbGY6OkRCX05BTUUgLiAgJyAKICAgIFNFVCAnOwoJCSRmID0gJHRoaXMtPnByZXBhcmVTYXZlKCk7CQoJCSRxdWVyeSAuPSBpbXBsb2RlKCcsJywkZlsnc2V0J10pOwogICAgLy8kcXVlcnkgLj0gJyBtb2R1bGVfbmFtZSA9ID8sIHRpbWVzdGFtcCA9ID8sIHRpdGxlID0gPywgYW5ub3VuY2VtZW50ID0gPyc7CgoJCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LAoJCQkJCSRmWydnZXQnXQogICAgICAgICAgLy8gYXJyYXkoCiAgICAgICAgICAvLyAgICAkdGhpcy0+Z2V0TW9kdWxlTmFtZSgpLCAkdGhpcy0+Z2V0VGltZXN0YW1wKCksICR0aGlzLT5nZXRUaXRsZSgpLCAkdGhpcy0+Z2V0QW5ub3VuY2VtZW50KCkKICAgICAgICAgIC8vICkKICAgICAgICApOwoJCSR0aGlzLT5pZCA9ICRkYi0+SW5zZXJ0X0lEKCk7CiAgICByZXR1cm4gdHJ1ZTsgICAgCiAgfQoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJldHJpZXZlQnlQaygkaWQpCiAgewogICAgcmV0dXJuIHNlbGY6OmRvU2VsZWN0T25lKGFycmF5KCd3aGVyZScgPT4gYXJyYXkoJ2lkJyA9PiAkaWQpKSk7ICAgIAogIH0KCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkb1NlbGVjdE9uZSgkcGFyYW1zID0gYXJyYXkoKSkKICB7CiAgICAkcGFyYW1zWydsaW1pdCddID0gMTsKICAgICRpdGVtcyA9IHNlbGY6OmRvU2VsZWN0KCRwYXJhbXMpOwogICAgaWYgKCRpdGVtcykKICAgIHsKICAgICAgcmV0dXJuICRpdGVtc1swXTsKICAgIH0KICAgIGVsc2UgCiAgICB7CiAgICAgIHJldHVybiBudWxsOwogICAgfSAgIAogIH0KCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkb1NlbGVjdCgkcGFyYW1zID0gYXJyYXkoKSkKICB7CiAgICAkZGIgPSBjbXNfdXRpbHM6OmdldF9kYigpOwoKICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiBzZWxmOjpEQl9OQU1FOwoKICAgICR2YWx1ZXMgPSBhcnJheSgpOwoKICAgCSRmaWVsZHMgPSBhcnJheSgpOwoKICAgIGlmIChpc3NldCgkcGFyYW1zWyd3aGVyZSddKSkKICAgIHsKICAgICAgZm9yZWFjaCAoJHBhcmFtc1snd2hlcmUnXSBhcyAkZmllbGQgPT4gJHZhbHVlKSAKICAgICAgewogICAgICAgICRmaWVsZHNbXSA9ICRmaWVsZCAuICcgPSAgPyc7CiAgICAgICAgJHZhbHVlc1tdID0gJHZhbHVlOwogICAgICB9CiAgICB9IAogIAoKCQlpZiAoaXNzZXQoJHBhcmFtc1snd2hlcmVfYWR2J10pKQoJCXsKCQkJZm9yZWFjaCgkcGFyYW1zWyd3aGVyZV9hZHYnXSBhcyAkZmllbGQgPT4gJHZhbHVlKQoJCQl7CgkJCQkkZmllbGRzW10gPSAkZmllbGQgLiAnICcgLiAkdmFsdWVbMV0gLiAnID8nOwoJCQkJJHZhbHVlc1tdID0gJHZhbHVlWzBdOwoJCQl9CgkJfQoJCQoJCWlmICghZW1wdHkoJGZpZWxkcykpCgkJewkKCSAgCSRxdWVyeSAuPSAnIFdIRVJFICcgLiBpbXBsb2RlKCcgQU5EICcsICRmaWVsZHMpOwoJCX0KCiAgICBpZihpc3NldCgkcGFyYW1zWydvcmRlcl9ieSddKSkKICAgIHsKICAgIAkkcXVlcnkgLj0gJyBPUkRFUiBCWSAnOwoJCQlpZihpc19hcnJheSgkcGFyYW1zWydvcmRlcl9ieSddKSkKCQkJewoJCQkJJHF1ZXJ5IC49IGltcGxvZGUoJywgJyAsICRwYXJhbXNbJ29yZGVyX2J5J10pOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHF1ZXJ5IC49ICRwYXJhbXNbJ29yZGVyX2J5J107CgkJCX0KICAgIH0KICAgIGVsc2VpZiAoIWlzc2V0KCRwYXJhbXNbJ2dyb3VwX2J5J10pKQogICAgewogICAgCSRxdWVyeSAuPSAnIE9SREVSIEJZIHVzZXJfaWQnOwogICAgfQoKCQlpZiAoaXNzZXQoJHBhcmFtc1snZ3JvdXBfYnknXSkpCgkJewoJCQkkcXVlcnkgLj0gJyBHUk9VUCBCWSA/JzsKCQkJJHZhbHVlc1tdID0gJHBhcmFtc1snZ3JvdXBfYnknXTsKCQl9CgoJCWlmKGlzc2V0KCRwYXJhbXNbJ2xpbWl0J10pKQoJCXsKCQkJJHF1ZXJ5IC49ICcgTElNSVQgJy4gKGludCkkcGFyYW1zWydsaW1pdCddOwoJCX0KCiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkdmFsdWVzKTsKCiAgICAkaXRlbXMgPSBhcnJheSgpOwogICAJaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQogICAgewogICAgCXdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewogICAgICAgICRpdGVtID0gbmV3IHNlbGYoKTsKICAgICAgICAkaXRlbS0+UG9wdWxhdGVGcm9tRGIoJHJvdyk7CiAgICAgICAgJGl0ZW1zW10gPSAkaXRlbTsKICAgICAgfQogICAgfQoKICAgIHJldHVybiAgJGl0ZW1zOyAgIAogIH0KCiAgIHB1YmxpYyBmdW5jdGlvbiBkZWxldGUoKQogICB7ICAgICAgICAgICAKICAgCSRkYiA9IGNtc191dGlsczo6Z2V0X2RiKCk7CiAgIAkkcXVlcnkgPSAnREVMRVRFIEZST00gJy4gY21zX2RiX3ByZWZpeCgpIC4gc2VsZjo6REJfTkFNRTsKICAgCSRxdWVyeSAuPSAnIFdIRVJFIGlkID0gPyc7CiAgIAkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdGhpcy0+aWQpKTsgICAKICB9ICAKCgkvLyBTUEVDSUZJQyBMT0dJQwoJCglwcm90ZWN0ZWQgZnVuY3Rpb24gcHJlcGFyZVNhdmVDdXN0b20oJGFycmF5KQoJewogICAgaWYgKCR0aGlzLT5pZCA9PSBudWxsKSAgJGFycmF5WydnZXQnXVsndGltZXN0YW1wJ10gPSB0aW1lKCk7CgkgIHJldHVybiAkYXJyYXk7Cgl9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIERMb2cKICAgICAqLwoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0TGF0ZXN0TG9nKCkKCXsKCSAgcmV0dXJuIHNlbGY6OmRvU2VsZWN0T25lKGFycmF5KCdvcmRlcl9ieScgPT4gJ3RpbWVzdGFtcCBERVNDJykpOwoJfQoKCgoJCn0=]]></data>
	</file>
	<file>
	  <filename>/lib/class.DSubscriber.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgICAvKgogICAgICogU3Vic2NyaWJlciBjbGFzcwogICAgICoKICAgICAqIENvcHlyaWdodHM6IEplYW4tQ2hyaXN0b3BoZSBDdXZlbGllciAtIDIwMTEKICAgICAqCiAgICAgKi8KCiAgICBjbGFzcyBEU3Vic2NyaWJlcgogICAgewogICAgICAgIGNvbnN0IERCX05BTUUgPSAnbW9kdWxlX2RpZ2VzdF9zdWJzY3JpYmVycyc7CgogICAgICAgIC8vIFZhcnMKCiAgICAgICAgcHJvdGVjdGVkICRpZDsKICAgICAgICBwcm90ZWN0ZWQgJHZhcnMgPSBhcnJheSgpOwogICAgICAgIHByb3RlY3RlZCAkaXNfbW9kaWZpZWQ7CgogICAgICAgIHByb3RlY3RlZCBzdGF0aWMgJGZpZWxkcyA9IGFycmF5KAogICAgICAgICAgICAndXNlcl9pZCcgICAgICAgICA9PiBhcnJheSgnbmFtZScgPT4gJ3VzZXJfaWQnLCAnYWRvJyA9PiAnSScpLAogICAgICAgICAgICAnc3Vic2NyaXB0aW9uX2lkJyA9PiBhcnJheSgnbmFtZScgPT4gJ3N1YnNjcmlwdGlvbl9pZCcsICdhZG8nID0+ICdJJyksCiAgICAgICAgICAgICdwZXJpb2QnICAgICAgICAgID0+IGFycmF5KCduYW1lJyA9PiAncGVyaW9kJywgJ2FkbycgPT4gJ0MoMjU1KScpLAogICAgICAgICAgICAndGltZXN0YW1wJyAgICAgICA9PiBhcnJheSgnbmFtZScgPT4gJ3RpbWVzdGFtcCcsICdhZG8nID0+ICdJJyksCiAgICAgICAgKTsKCiAgICAgICAgcHVibGljIHN0YXRpYyAkcGVyaW9kcyA9IGFycmF5KAogICAgICAgICAgICAnTmV2ZXInICAgPT4gJ05ldmVyJywKICAgICAgICAgICAgLy8gJ0RpcmVjdGx5JyA9PiAnRGlyZWN0bHknLCAvLyBUT0RPOiBUTyBJTVBMRU1FTlQgTEFURVIgLS0+IE1ha2UgaXQgYW4gZXZlbnQKICAgICAgICAgICAgJ0RhaWx5JyAgID0+ICdEYWlseScsCiAgICAgICAgICAgICdXZWVrbHknICA9PiAnV2Vla2x5JywKICAgICAgICAgICAgJ01vbnRobHknID0+ICdNb250aGx5JwogICAgICAgICk7CgogICAgICAgIHB1YmxpYyBzdGF0aWMgJHdlZWsgPSBhcnJheSgKICAgICAgICAgICAgJzEnID0+ICdNb25kYXknLAogICAgICAgICAgICAnMicgPT4gJ1R1ZXNkYXknLAogICAgICAgICAgICAnMycgPT4gJ1dlZG5lc2RheScsCiAgICAgICAgICAgICc0JyA9PiAnVGh1cnNkYXknLAogICAgICAgICAgICAnNScgPT4gJ0ZyaWRheScsCiAgICAgICAgICAgICc2JyA9PiAnU2F0dXJkYXknLAogICAgICAgICAgICAnNycgPT4gJ1N1bmRheScKICAgICAgICApOwoKICAgICAgICBwdWJsaWMgc3RhdGljICRtb250aCA9IGFycmF5KAogICAgICAgICAgICAnZmlyc3QnID0+ICdGaXJzdCBkYXkgb2YgdGhlIG1vbnRoJywKICAgICAgICAgICAgJ2xhc3QnICA9PiAnTGFzdCBkYXkgb2YgdGhlIG1vbnRoJywKICAgICAgICApOwoKICAgICAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gKHN0cmluZykkdGhpcy0+dGl0bGU7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SWQoKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5pZDsKICAgICAgICB9CgogICAgICAgIHByaXZhdGUgZnVuY3Rpb24gc2V0SWQoJGlkKQogICAgICAgIHsKICAgICAgICAgICAgJHRoaXMtPmlkID0gJGlkOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIGZ1bmN0aW9uIF9fc2V0KCR2YXIsICR2YWwpCiAgICAgICAgewogICAgICAgICAgICAkdGhpcy0+aXNfbW9kaWZpZWQgPSB0cnVlOwogICAgICAgICAgICAkdGhpcy0+dmFyc1skdmFyXSAgPSAkdmFsOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KCR2YXIpCiAgICAgICAgewogICAgICAgICAgICBpZiAobWV0aG9kX2V4aXN0cygkdGhpcywgJHZhcikpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+JHZhcigpOwogICAgICAgICAgICB9IGVsc2VpZiAoYXJyYXlfa2V5X2V4aXN0cygkdmFyLCAkdGhpcy0+dmFycykpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dmFyc1skdmFyXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgZnVuY3Rpb24gUG9wdWxhdGVGcm9tRGIoJHJvdykKICAgICAgICB7CiAgICAgICAgICAgICR0aGlzLT5pZCA9ICRyb3dbJ2lkJ107CiAgICAgICAgICAgIGZvcmVhY2ggKHNlbGY6OiRmaWVsZHMgYXMgJGZpZWxkKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+dmFyc1skZmllbGRbJ25hbWUnXV0gPSAkcm93WyRmaWVsZFsnbmFtZSddXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgICAgIHB1YmxpYyBmdW5jdGlvbiBzYXZlKCkKICAgICAgICB7CiAgICAgICAgICAgIC8vIFVwZ3JhZGUgb3IgSW5zZXJ0ID8KICAgICAgICAgICAgaWYgKCR0aGlzLT5pZCAhPSBOVUxMKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+dXBkYXRlKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+aW5zZXJ0KCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcHJlcGFyZVNhdmUoKQogICAgICAgIHsKICAgICAgICAgICAgJHNldCA9IGFycmF5KCk7CiAgICAgICAgICAgICRnZXQgPSBhcnJheSgpOwogICAgICAgICAgICBmb3JlYWNoIChzZWxmOjokZmllbGRzIGFzICRmaWVsZCkgewogICAgICAgICAgICAgICAgJHNldFskZmllbGRbJ25hbWUnXV0gPSAnICcgLiAkZmllbGRbJ25hbWUnXSAuICcgPSA/JzsKICAgICAgICAgICAgICAgICRnZXRbJGZpZWxkWyduYW1lJ11dID0gJHRoaXMtPiRmaWVsZFsnbmFtZSddOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkYXJyYXkgPSAkdGhpcy0+cHJlcGFyZVNhdmVDdXN0b20oYXJyYXkoJ3NldCcgPT4gJHNldCwgJ2dldCcgPT4gJGdldCkpOwoKICAgICAgICAgICAgcmV0dXJuICRhcnJheTsKICAgICAgICB9CgogICAgICAgIHByb3RlY3RlZCBmdW5jdGlvbiB1cGRhdGUoKQogICAgICAgIHsKICAgICAgICAgICAgJGRiID0gY21zX3V0aWxzOjpnZXRfZGIoKTsKCiAgICAgICAgICAgICRxdWVyeSA9ICdVUERBVEUgICcgLiBjbXNfZGJfcHJlZml4KCkgLiBzZWxmOjpEQl9OQU1FIC4gJwoJCVNFVCAnOwoKICAgICAgICAgICAgJGYgPSAkdGhpcy0+cHJlcGFyZVNhdmUoKTsKICAgICAgICAgICAgJHF1ZXJ5IC49IGltcGxvZGUoJywnLCAkZlsnc2V0J10pOwogICAgICAgICAgICAvLyAkcXVlcnkgLj0gJyBtb2R1bGVfbmFtZSA9ID8sIHRpbWVzdGFtcCA9ID8sIHRpdGxlID0gPywgYW5ub3VuY2VtZW50ID0gPyc7CiAgICAgICAgICAgICRxdWVyeSAuPSAnIFdIRVJFIGlkID0gPyAnOwoKICAgICAgICAgICAgJGZbJ2dldCddW10gPSAkdGhpcy0+Z2V0SWQoKTsKCiAgICAgICAgICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkZlsnZ2V0J10pOwoKICAgICAgICAgICAgLypGSVhNRTogVGVzdCB0aGUgJGRiIHN0YXR1czsgKi8KCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGluc2VydCgpCiAgICAgICAgewogICAgICAgICAgICAkZGIgPSBjbXNfdXRpbHM6OmdldF9kYigpOwoKICAgICAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcgLiBjbXNfZGJfcHJlZml4KCkgLiBzZWxmOjpEQl9OQU1FIC4gJwogICAgU0VUICc7CiAgICAgICAgICAgICRmICAgICA9ICR0aGlzLT5wcmVwYXJlU2F2ZSgpOwogICAgICAgICAgICAkcXVlcnkgLj0gaW1wbG9kZSgnLCcsICRmWydzZXQnXSk7CiAgICAgICAgICAgIC8vJHF1ZXJ5IC49ICcgbW9kdWxlX25hbWUgPSA/LCB0aW1lc3RhbXAgPSA/LCB0aXRsZSA9ID8sIGFubm91bmNlbWVudCA9ID8nOwoKICAgICAgICAgICAgJHJlc3VsdCAgID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwKICAgICAgICAgICAgICAgICRmWydnZXQnXQogICAgICAgICAgICAvLyBhcnJheSgKICAgICAgICAgICAgLy8gICAgJHRoaXMtPmdldE1vZHVsZU5hbWUoKSwgJHRoaXMtPmdldFRpbWVzdGFtcCgpLCAkdGhpcy0+Z2V0VGl0bGUoKSwgJHRoaXMtPmdldEFubm91bmNlbWVudCgpCiAgICAgICAgICAgIC8vICkKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJHRoaXMtPmlkID0gJGRiLT5JbnNlcnRfSUQoKTsKCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXRyaWV2ZUJ5UGsoJGlkKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmRvU2VsZWN0T25lKGFycmF5KCd3aGVyZScgPT4gYXJyYXkoJ2lkJyA9PiAkaWQpKSk7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRvU2VsZWN0T25lKCRwYXJhbXMgPSBhcnJheSgpKQogICAgICAgIHsKICAgICAgICAgICAgJGl0ZW1zID0gc2VsZjo6ZG9TZWxlY3QoJHBhcmFtcyk7CiAgICAgICAgICAgIGlmICgkaXRlbXMpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkaXRlbXNbMF07CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogQHBhcmFtIGFycmF5ICRwYXJhbXMgRmlsdGVycyBhbmQgb3B0aW9ucwogICAgICAgICAqCiAgICAgICAgICogQHJldHVybiBEU3Vic2NyaWJlcltdCiAgICAgICAgICovCgogICAgICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZG9TZWxlY3QoJHBhcmFtcyA9IGFycmF5KCkpCiAgICAgICAgewogICAgICAgICAgICAkZGIgPSBjbXNfdXRpbHM6OmdldF9kYigpOwoKICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuIHNlbGY6OkRCX05BTUU7CgogICAgICAgICAgICAkdmFsdWVzID0gYXJyYXkoKTsKCiAgICAgICAgICAgICRmaWVsZHMgPSBhcnJheSgpOwoKICAgICAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3doZXJlJ10pKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFyYW1zWyd3aGVyZSddIGFzICRmaWVsZCA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAkZmllbGRzW10gPSAkZmllbGQgLiAnID0gID8nOwogICAgICAgICAgICAgICAgICAgICR2YWx1ZXNbXSA9ICR2YWx1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKCiAgICAgICAgICAgIGlmIChpc3NldCgkcGFyYW1zWyd3aGVyZV9hZHYnXSkpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwYXJhbXNbJ3doZXJlX2FkdiddIGFzICRmaWVsZCA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAkZmllbGRzW10gPSAkZmllbGQgLiAnICcgLiAkdmFsdWVbMV0gLiAnID8nOwogICAgICAgICAgICAgICAgICAgICR2YWx1ZXNbXSA9ICR2YWx1ZVswXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFlbXB0eSgkZmllbGRzKSkgewogICAgICAgICAgICAgICAgJHF1ZXJ5IC49ICcgV0hFUkUgJyAuIGltcGxvZGUoJyBBTkQgJywgJGZpZWxkcyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChpc3NldCgkcGFyYW1zWydvcmRlcl9ieSddKSkgewogICAgICAgICAgICAgICAgJHF1ZXJ5IC49ICcgT1JERVIgQlkgJzsKICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkcGFyYW1zWydvcmRlcl9ieSddKSkgewogICAgICAgICAgICAgICAgICAgICRxdWVyeSAuPSBpbXBsb2RlKCcsICcsICRwYXJhbXNbJ29yZGVyX2J5J10pOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkcXVlcnkgLj0gJHBhcmFtc1snb3JkZXJfYnknXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKCFpc3NldCgkcGFyYW1zWydncm91cF9ieSddKSkgewogICAgICAgICAgICAgICAgJHF1ZXJ5IC49ICcgT1JERVIgQlkgdXNlcl9pZCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChpc3NldCgkcGFyYW1zWydncm91cF9ieSddKSkgewogICAgICAgICAgICAgICAgJHF1ZXJ5IC49ICcgR1JPVVAgQlkgPyc7CiAgICAgICAgICAgICAgICAkdmFsdWVzW10gPSAkcGFyYW1zWydncm91cF9ieSddOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaXNzZXQoJHBhcmFtc1snbGltaXQnXSkpIHsKICAgICAgICAgICAgICAgICRxdWVyeSAuPSAnIExJTUlUICcgLiAoaW50KSRwYXJhbXNbJ2xpbWl0J107CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOwoKICAgICAgICAgICAgJGl0ZW1zID0gYXJyYXkoKTsKICAgICAgICAgICAgaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKSB7CiAgICAgICAgICAgICAgICB3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsKICAgICAgICAgICAgICAgICAgICAkaXRlbSA9IG5ldyBzZWxmKCk7CiAgICAgICAgICAgICAgICAgICAgJGl0ZW0tPlBvcHVsYXRlRnJvbURiKCRyb3cpOwogICAgICAgICAgICAgICAgICAgICRpdGVtc1tdID0gJGl0ZW07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRpdGVtcyA9IHNlbGY6OmNsZWFuU3Vic2NyaWJlcnMoJGl0ZW1zKTsKCiAgICAgICAgICAgIHJldHVybiAkaXRlbXM7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgZnVuY3Rpb24gZGVsZXRlKCkKICAgICAgICB7CiAgICAgICAgICAgICRkYiAgICA9IGNtc191dGlsczo6Z2V0X2RiKCk7CiAgICAgICAgICAgICRxdWVyeSA9ICdERUxFVEUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gc2VsZjo6REJfTkFNRTsKICAgICAgICAgICAgJHF1ZXJ5IC49ICcgV0hFUkUgaWQgPSA/JzsKICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRoaXMtPmlkKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBTUEVDSUZJQyBMT0dJQwoKICAgICAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcHJlcGFyZVNhdmVDdXN0b20oJGFycmF5KQogICAgICAgIHsKICAgICAgICAgICAgJGFycmF5WydnZXQnXVsndGltZXN0YW1wJ10gPSB0aW1lKCk7CgogICAgICAgICAgICByZXR1cm4gJGFycmF5OwogICAgICAgIH0KCiAgICAgICAgcHVibGljIGZ1bmN0aW9uIGdldFN1YnNjcmlwdGlvbigpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gRFN1YnNjcmlwdGlvbjo6cmV0cmlldmVCeVBrKCR0aGlzLT5zdWJzY3JpcHRpb25faWQpOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRTdWJzY3JpcHRpb25zRm9yVXNlcigkdXNlcl9pZCkKICAgICAgICB7CiAgICAgICAgICAgICRzZWxlY3Rpb24gICAgID0gc2VsZjo6ZG9TZWxlY3QoYXJyYXkoCiAgICAgICAgICAgICAgICAnd2hlcmUnID0+IGFycmF5KAogICAgICAgICAgICAgICAgICAgICd1c2VyX2lkJyA9PiAkdXNlcl9pZAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICApKTsKICAgICAgICAgICAgJHN1YnNjcmlwdGlvbnMgPSBhcnJheSgpOwogICAgICAgICAgICBmb3JlYWNoICgkc2VsZWN0aW9uIGFzICRzdWJzY3JpcHRpb24pIHsKICAgICAgICAgICAgICAgICRzdWJzY3JpcHRpb25zWyRzdWJzY3JpcHRpb24tPnN1YnNjcmlwdGlvbl9pZF0gPSAkc3Vic2NyaXB0aW9uOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHN1YnNjcmlwdGlvbnM7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHVwZGF0ZVN1YnNjcmlwdGlvbnMoJHVzZXJfaWQsICRzdWJzY3JpcHRpb25zKQogICAgICAgIHsKICAgICAgICAgICAgJHRvX2RlbGV0ZSA9IHNlbGY6OmRvU2VsZWN0KGFycmF5KCd3aGVyZScgPT4gYXJyYXkoJ3VzZXJfaWQnID0+ICR1c2VyX2lkKSkpOwogICAgICAgICAgICBmb3JlYWNoICgkc3Vic2NyaXB0aW9ucyBhcyAkc3Vic2NyaXB0aW9uX2lkID0+ICRwZXJpb2QpIHsKICAgICAgICAgICAgICAgIGlmICgkcGVyaW9kICE9ICdOZXZlcicpIHsKICAgICAgICAgICAgICAgICAgICAkc3Vic2NyaWJlciAgICAgICAgICAgICAgICAgID0gbmV3IHNlbGYoKTsKICAgICAgICAgICAgICAgICAgICAkc3Vic2NyaWJlci0+dXNlcl9pZCAgICAgICAgID0gJHVzZXJfaWQ7CiAgICAgICAgICAgICAgICAgICAgJHN1YnNjcmliZXItPnN1YnNjcmlwdGlvbl9pZCA9ICRzdWJzY3JpcHRpb25faWQ7CiAgICAgICAgICAgICAgICAgICAgJHN1YnNjcmliZXItPnBlcmlvZCAgICAgICAgICA9ICRwZXJpb2Q7CiAgICAgICAgICAgICAgICAgICAgJHN1YnNjcmliZXItPnNhdmUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmb3JlYWNoICgkdG9fZGVsZXRlIGFzICRpdGVtKSB7CiAgICAgICAgICAgICAgICAkaXRlbS0+ZGVsZXRlKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVc2VyKCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBDTVNVc2VyOjpyZXRyaWV2ZUJ5UGsoJHRoaXMtPnVzZXJfaWQpOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRTdWJzY3JpcHRpb25zQnlVc2VycygkcXVlcnlfcGFyYW1zID0gYXJyYXkoKSkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChpc19hcnJheSgkcXVlcnlfcGFyYW1zWydvcmRlcl9ieSddKSkgewogICAgICAgICAgICAgICAgJHF1ZXJ5X3BhcmFtc1snb3JkZXJfYnknXVtdID0gJ3VzZXJfaWQgQVNDJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRxdWVyeV9wYXJhbXNbJ29yZGVyX2J5J10gLj0gJywgdXNlcl9pZCBBU0MnOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRzdWJzY3JpcHRpb25zID0gc2VsZjo6ZG9TZWxlY3QoJHF1ZXJ5X3BhcmFtcyk7CiAgICAgICAgICAgICRzdWJzY3JpYmVycyAgID0gYXJyYXkoKTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRzdWJzY3JpcHRpb25zIGFzICRzdWJzY3JpcHRpb24pIHsKICAgICAgICAgICAgICAgIGlmICghaXNzZXQoJHN1YnNjcmliZXJzWyRzdWJzY3JpcHRpb24tPnVzZXJfaWRdKSkgewogICAgICAgICAgICAgICAgICAgICRzdWJzY3JpYmVyc1skc3Vic2NyaXB0aW9uLT51c2VyX2lkXVsndXNlciddID0gJHN1YnNjcmlwdGlvbi0+Z2V0VXNlcigpLT5nZXRBc0FycmF5KCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkc3Vic2NyaWJlcnNbJHN1YnNjcmlwdGlvbi0+dXNlcl9pZF1bJ3N1YnNjcmlwdGlvbnMnXVskc3Vic2NyaXB0aW9uLT5nZXRJZCgpXSA9ICRzdWJzY3JpcHRpb247CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkc3Vic2NyaWJlcnM7CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBAcGFyYW0gJHBlcmlvZAogICAgICAgICAqCiAgICAgICAgICogQHJldHVybiBhcnJheXxudWxsCiAgICAgICAgICovCgogICAgICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0RGF0YXNGb3JQZXJpb2QoJHBlcmlvZCkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgkcGVyaW9kLCBzZWxmOjokcGVyaW9kcykgJiYgJHBlcmlvZCAhPSAnTm9uZScpIHsKICAgICAgICAgICAgICAgICRlbnRyaWVzID0gc2VsZjo6ZG9TZWxlY3QoYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgJ3doZXJlJyA9PiBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgJ3BlcmlvZCcgPT4gJHBlcmlvZAogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICkpOwoKICAgICAgICAgICAgICAgICRzdWJzY3JpYmVycyA9IGFycmF5KCk7CgogICAgICAgICAgICAgICAgJHN1YnNjcmlwdGlvbnMgPSBhcnJheSgpOwoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRlbnRyaWVzIGFzICRlbnRyeSkgewogICAgICAgICAgICAgICAgICAgICRzdWJzY3JpYmVyc1skZW50cnktPnVzZXJfaWRdWydzdWJzY3JpYmVyJ10gICAgICA9ICRlbnRyeTsKICAgICAgICAgICAgICAgICAgICAkc3Vic2NyaWJlcnNbJGVudHJ5LT51c2VyX2lkXVsnc3Vic2NyaXB0aW9ucyddW10gPSAkZW50cnktPnN1YnNjcmlwdGlvbl9pZDsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc3NldCgkc3Vic2NyaXB0aW9uc1skZW50cnktPnN1YnNjcmlwdGlvbl9pZF0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdWJzY3JpcHRpb25zWyRlbnRyeS0+c3Vic2NyaXB0aW9uX2lkXSA9ICRlbnRyeS0+Z2V0U3Vic2NyaXB0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBhcnJheSgnc3Vic2NyaWJlcnMnID0+ICRzdWJzY3JpYmVycywgJ3N1YnNjcmlwdGlvbnMnID0+ICRzdWJzY3JpcHRpb25zKTsKCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgIH0KCiAgICAgICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBjbGVhblN1YnNjcmliZXJzKCRzdWJzY3JpYmVycykKICAgICAgICB7CiAgICAgICAgICAgICRjbGVhbiA9IGFycmF5KCk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRzdWJzY3JpYmVycyBhcyAkc3Vic2NyaWJlcikgewogICAgICAgICAgICAgICAgaWYgKGlzX251bGwoJHN1YnNjcmliZXItPmdldFVzZXIoKSkpIHsKICAgICAgICAgICAgICAgICAgICAkc3Vic2NyaWJlci0+ZGVsZXRlKCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRjbGVhbltdID0gJHN1YnNjcmliZXI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkY2xlYW47CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBAcGFyYW0gJHBlcmlvZAogICAgICAgICAqCiAgICAgICAgICogQHJldHVybiBpbnQgVGltZXN0YW1wIGluIHRoZSBwYXN0IGZyb20gbm93CiAgICAgICAgICovCgogICAgICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0VGltZUZvclBlcmlvZCgkcGVyaW9kKQogICAgICAgIHsKICAgICAgICAgICAgc3dpdGNoICgkcGVyaW9kKSB7CiAgICAgICAgICAgICAgICBjYXNlICdEYWlseSc6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cnRvdGltZSgnLTEgZGF5Jyk7CiAgICAgICAgICAgICAgICBjYXNlICdXZWVrbHknOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHJ0b3RpbWUoJy0xIHdlZWsnKTsKICAgICAgICAgICAgICAgIGNhc2UgJ01vbnRobHknOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHJ0b3RpbWUoJy0xIG1vbnRoJyk7CiAgICAgICAgICAgICAgICBjYXNlICdZZWFybHknOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHJ0b3RpbWUoJy0xIHllYXInKTsKICAgICAgICAgICAgICAgIGNhc2UgJ0NlbnRlbm5pYWxseSc6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cnRvdGltZSgnLTEwMCB5ZWFyJyk7ICAvLyBZZWFoLCB5ZWFoLCBqdXN0IGluIGNhc2Ugb2YuIEl0IHdvbnQgd29yayB1bnRpbCAyMDcwIHRob3VnaC4uLgogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RydG90aW1lKCcrMSB5ZWFyJyk7ICAgIC8vIFdlIHNob3VsZCBub3QgYmUgaGVyZS4gSW4gY2FzZSBvZiwgd2UnbGwgZ2l2ZSB0b21vcnJvdyBkYXRlLiBUQ1Agb3ZlciB0aW1lIGRvIG5vdCBleGlzdHMuLi4geWV0LgogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFBlcmlvZHNGb3JTZW5kKCkKICAgICAgICB7CiAgICAgICAgICAgICRwZXJpb2RzID0gYXJyYXkoJ0RhaWx5Jyk7CiAgICAgICAgICAgICRkaWdlc3QgID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdEaWdlc3QnKTsKICAgICAgICAgICAgJHdlZWtseSAgPSAkZGlnZXN0LT5HZXRQcmVmZXJlbmNlKCdzZW5kX3dlZWtseV9vbicpOwogICAgICAgICAgICAkbW9udGhseSA9ICRkaWdlc3QtPkdldFByZWZlcmVuY2UoJ3NlbmRfbW9udGhseV9vbicpOwogICAgICAgICAgICAvLyBXZWVrbHkKICAgICAgICAgICAgaWYgKCR3ZWVrbHkgPT0gZGF0ZSgnTicpKSB7CiAgICAgICAgICAgICAgICAkcGVyaW9kc1tdID0gJ1dlZWtseSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gTW9udGhseQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoKCRtb250aGx5ID09ICdmaXJzdCcpICYmIChkYXRlKCdqJykgPT0gMSkpCiAgICAgICAgICAgICAgICBPUgogICAgICAgICAgICAgICAgKCgkbW9udGhseSA9PSAnbGFzdCcpICYmIChkYXRlKCdqJykgPT0gZGF0ZSgndCcpKSkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkcGVyaW9kc1tdID0gJ01vbnRobHknOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHBlcmlvZHM7CiAgICAgICAgfQogICAgfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.DSubscription.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFN1YnNjcmlwdGlvbiBjbGFzcwogKgogKiBDb3B5cmlnaHRzOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgLSAyMDExCiAqCiAqLwoKY2xhc3MgRFN1YnNjcmlwdGlvbgp7CiAgICBjb25zdCBEQl9OQU1FID0gJ21vZHVsZV9kaWdlc3Rfc3Vic2NyaXB0aW9ucyc7CgogICAgLy8gVmFycwoKICAgIHByb3RlY3RlZCAkaWQ7CiAgICBwcm90ZWN0ZWQgJHZhcnMgPSBhcnJheSgpOwogICAgcHJvdGVjdGVkICRpc19tb2RpZmllZDsKCiAgICBwcm90ZWN0ZWQgc3RhdGljICRmaWVsZHMgPSBhcnJheSgKICAgICAgICAndGl0bGUnID0+IGFycmF5KCduYW1lJyA9PiAndGl0bGUnLCAnYWRvJyA9PiAnQygyNTUpJyksCiAgICAgICAgJ21vZHVsZV9uYW1lJyA9PiBhcnJheSgnbmFtZScgPT4gJ21vZHVsZV9uYW1lJywgJ2FkbycgPT4gJ0MoMjU1KScpLAogICAgICAgICdwYXJhbXMnID0+IGFycmF5KCduYW1lJyA9PiAncGFyYW1zJywgJ2FkbycgPT4gJ0MoMjU1KScpLAogICAgICAgICd0ZW1wbGF0ZScgPT4gYXJyYXkoJ25hbWUnID0+ICd0ZW1wbGF0ZScsICdhZG8nID0+ICdDKDI1NSknKSwKICAgICk7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiAoc3RyaW5nKSR0aGlzLT50aXRsZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SWQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aWQ7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBzZXRJZCgkaWQpCiAgICB7CiAgICAgICAgJHRoaXMtPmlkID0gJGlkOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3NldCgkdmFyLCAkdmFsKQogICAgewogICAgICAgICR0aGlzLT5pc19tb2RpZmllZCA9IHRydWU7CiAgICAgICAgJHRoaXMtPnZhcnNbJHZhcl0gPSAkdmFsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCgkdmFyKQogICAgewogICAgICAgIGlmIChtZXRob2RfZXhpc3RzKCR0aGlzLCAkdmFyKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPiR2YXIoKTsKICAgICAgICB9IGVsc2VpZiAoYXJyYXlfa2V5X2V4aXN0cygkdmFyLCAkdGhpcy0+dmFycykpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT52YXJzWyR2YXJdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIFBvcHVsYXRlRnJvbURiKCRyb3cpCiAgICB7CiAgICAgICAgJHRoaXMtPmlkID0gJHJvd1snaWQnXTsKICAgICAgICBmb3JlYWNoIChzZWxmOjokZmllbGRzIGFzICRmaWVsZCkgewogICAgICAgICAgICAkdGhpcy0+dmFyc1skZmllbGRbJ25hbWUnXV0gPSAkcm93WyRmaWVsZFsnbmFtZSddXTsKICAgICAgICB9CiAgICB9CgoKICAgIHB1YmxpYyBmdW5jdGlvbiBzYXZlKCkKICAgIHsKICAgICAgICAvLyBVcGdyYWRlIG9yIEluc2VydCA/CiAgICAgICAgaWYgKCR0aGlzLT5pZCAhPSBOVUxMKSB7CiAgICAgICAgICAgICR0aGlzLT51cGRhdGUoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+aW5zZXJ0KCk7CiAgICAgICAgfQoKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcHJlcGFyZVNhdmUoKQogICAgewogICAgICAgICRzZXQgPSBhcnJheSgpOwogICAgICAgICRnZXQgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKHNlbGY6OiRmaWVsZHMgYXMgJGZpZWxkKSB7CiAgICAgICAgICAgICRzZXRbXSA9ICcgJyAuICRmaWVsZFsnbmFtZSddIC4gJyA9ID8nOwogICAgICAgICAgICAkZ2V0W10gPSAkdGhpcy0+JGZpZWxkWyduYW1lJ107CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gYXJyYXkoJ3NldCcgPT4gJHNldCwgJ2dldCcgPT4gJGdldCk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHVwZGF0ZSgpCiAgICB7CiAgICAgICAgJGRiID0gY21zX3V0aWxzOjpnZXRfZGIoKTsKCiAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAgJyAuIGNtc19kYl9wcmVmaXgoKSAuIHNlbGY6OkRCX05BTUUgLiAnCgkJU0VUICc7CgogICAgICAgICRmID0gJHRoaXMtPnByZXBhcmVTYXZlKCk7CiAgICAgICAgJHF1ZXJ5IC49IGltcGxvZGUoJywnLCAkZlsnc2V0J10pOwogICAgICAgIC8vICRxdWVyeSAuPSAnIG1vZHVsZV9uYW1lID0gPywgdGltZXN0YW1wID0gPywgdGl0bGUgPSA/LCBhbm5vdW5jZW1lbnQgPSA/JzsKICAgICAgICAkcXVlcnkgLj0gJyBXSEVSRSBpZCA9ID8gJzsKCiAgICAgICAgJGZbJ2dldCddW10gPSAkdGhpcy0+Z2V0SWQoKTsKCiAgICAgICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICRmWydnZXQnXSk7CgogICAgICAgIC8qRklYTUU6IFRlc3QgdGhlICRkYiBzdGF0dXM7ICovCgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpbnNlcnQoKQogICAgewogICAgICAgICRkYiA9IGNtc191dGlsczo6Z2V0X2RiKCk7CgogICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gY21zX2RiX3ByZWZpeCgpIC4gc2VsZjo6REJfTkFNRSAuICcKICAgIFNFVCAnOwogICAgICAgICRmID0gJHRoaXMtPnByZXBhcmVTYXZlKCk7CiAgICAgICAgJHF1ZXJ5IC49IGltcGxvZGUoJywnLCAkZlsnc2V0J10pOwogICAgICAgIC8vJHF1ZXJ5IC49ICcgbW9kdWxlX25hbWUgPSA/LCB0aW1lc3RhbXAgPSA/LCB0aXRsZSA9ID8sIGFubm91bmNlbWVudCA9ID8nOwoKICAgICAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwKICAgICAgICAgICAgJGZbJ2dldCddCiAgICAgICAgLy8gYXJyYXkoCiAgICAgICAgLy8gICAgJHRoaXMtPmdldE1vZHVsZU5hbWUoKSwgJHRoaXMtPmdldFRpbWVzdGFtcCgpLCAkdGhpcy0+Z2V0VGl0bGUoKSwgJHRoaXMtPmdldEFubm91bmNlbWVudCgpCiAgICAgICAgLy8gKQogICAgICAgICk7CiAgICAgICAgJHRoaXMtPmlkID0gJGRiLT5JbnNlcnRfSUQoKTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXRyaWV2ZUJ5UGsoJGlkKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpkb1NlbGVjdE9uZShhcnJheSgnd2hlcmUnID0+IGFycmF5KCdpZCcgPT4gJGlkKSkpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZG9TZWxlY3RPbmUoJHBhcmFtcyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgJGl0ZW1zID0gc2VsZjo6ZG9TZWxlY3QoJHBhcmFtcyk7CiAgICAgICAgaWYgKCRpdGVtcykgewogICAgICAgICAgICByZXR1cm4gJGl0ZW1zWzBdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkcGFyYW1zCiAgICAgKiBAcmV0dXJuIERTdWJzY3JpcHRpb25bXQogICAgICovCgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkb1NlbGVjdCgkcGFyYW1zID0gYXJyYXkoKSkKICAgIHsKICAgICAgICAkZGIgPSBjbXNfdXRpbHM6OmdldF9kYigpOwoKICAgICAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gc2VsZjo6REJfTkFNRTsKCiAgICAgICAgJHZhbHVlcyA9IGFycmF5KCk7CgogICAgICAgICRmaWVsZHMgPSBhcnJheSgpOwoKICAgICAgICBpZiAoaXNzZXQoJHBhcmFtc1snd2hlcmUnXSkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJHBhcmFtc1snd2hlcmUnXSBhcyAkZmllbGQgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICAgICAkZmllbGRzW10gPSAkZmllbGQgLiAnID0gID8nOwogICAgICAgICAgICAgICAgJHZhbHVlc1tdID0gJHZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKCiAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3doZXJlX2FkdiddKSkgewogICAgICAgICAgICBmb3JlYWNoICgkcGFyYW1zWyd3aGVyZV9hZHYnXSBhcyAkZmllbGQgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICAgICAkZmllbGRzW10gPSAkZmllbGQgLiAnICcgLiAkdmFsdWVbMV0gLiAnID8nOwogICAgICAgICAgICAgICAgJHZhbHVlc1tdID0gJHZhbHVlWzBdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoIWVtcHR5KCRmaWVsZHMpKSB7CiAgICAgICAgICAgICRxdWVyeSAuPSAnIFdIRVJFICcgLiBpbXBsb2RlKCcgQU5EICcsICRmaWVsZHMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ29yZGVyX2J5J10pKSB7CiAgICAgICAgICAgICRxdWVyeSAuPSAnIE9SREVSIEJZICc7CiAgICAgICAgICAgIGlmIChpc19hcnJheSgkcGFyYW1zWydvcmRlcl9ieSddKSkgewogICAgICAgICAgICAgICAgJHF1ZXJ5IC49IGltcGxvZGUoJywgJywgJHBhcmFtc1snb3JkZXJfYnknXSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkcXVlcnkgLj0gJHBhcmFtc1snb3JkZXJfYnknXTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmICghaXNzZXQoJHBhcmFtc1snZ3JvdXBfYnknXSkpIHsKICAgICAgICAgICAgJHF1ZXJ5IC49ICcgT1JERVIgQlkgbW9kdWxlX25hbWUnOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2dyb3VwX2J5J10pKSB7CiAgICAgICAgICAgICRxdWVyeSAuPSAnIEdST1VQIEJZID8nOwogICAgICAgICAgICAkdmFsdWVzW10gPSAkcGFyYW1zWydncm91cF9ieSddOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2xpbWl0J10pKSB7CiAgICAgICAgICAgICRxdWVyeSAuPSAnIExJTUlUICcgLiAoaW50KSRwYXJhbXNbJ2xpbWl0J107CiAgICAgICAgfQoKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkdmFsdWVzKTsKCiAgICAgICAgJGl0ZW1zID0gYXJyYXkoKTsKICAgICAgICBpZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApIHsKICAgICAgICAgICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CiAgICAgICAgICAgICAgICAkaXRlbSA9IG5ldyBzZWxmKCk7CiAgICAgICAgICAgICAgICAkaXRlbS0+UG9wdWxhdGVGcm9tRGIoJHJvdyk7CiAgICAgICAgICAgICAgICAkaXRlbXNbXSA9ICRpdGVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGl0ZW1zOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkZWxldGUoKQogICAgewogICAgICAgICRkYiA9IGNtc191dGlsczo6Z2V0X2RiKCk7CiAgICAgICAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiBzZWxmOjpEQl9OQU1FOwogICAgICAgICRxdWVyeSAuPSAnIFdIRVJFIGlkID0gPyc7CiAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRoaXMtPmlkKSk7CiAgICB9CgogICAgLy8gU1BFQ0lGSUMgTE9HSUMKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldENvbXBhdGlibGVNb2R1bGVzKCkKICAgIHsKICAgICAgICAkY29tcGF0aWJsZV9tb2R1bGVzID0gYXJyYXkoKTsKCiAgICAgICAgJG1vZHVsZXMgPSBjbXNtcygpLT5HZXRNb2R1bGVPcGVyYXRpb25zKCktPmdldF9tb2R1bGVzX3dpdGhfY2FwYWJpbGl0eSgnZGlnZXN0X2V4cG9ydCcpOwogICAgICAgIGZvcmVhY2ggKCRtb2R1bGVzIGFzICRtb2R1bGVfbmFtZSkgewogICAgICAgICAgICAkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCRtb2R1bGVfbmFtZSk7CiAgICAgICAgICAgICRjb21wYXRpYmxlX21vZHVsZXNbJG1vZHVsZS0+R2V0TmFtZSgpXVsnbmFtZSddID0gJG1vZHVsZS0+R2V0RnJpZW5kbHlOYW1lKCk7CiAgICAgICAgICAgICRjb21wYXRpYmxlX21vZHVsZXNbJG1vZHVsZS0+R2V0TmFtZSgpXVsndGVtcGxhdGVzJ10gPSAkbW9kdWxlLT5MaXN0VGVtcGxhdGVzKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvbXBhdGlibGVfbW9kdWxlczsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldE1vZHVsZXNUZW1wbGF0ZXMoJG1vZHVsZXMpCiAgICB7CiAgICAgICAgJHRlbXBsYXRlcyA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCAoJG1vZHVsZXMgYXMgJG1vZHVsZSA9PiAkbmFtZSkgewogICAgICAgICAgICAkdGVtcGxhdGVzWyRtb2R1bGVdID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdEaWdlc3QnKS0+TGlzdFRlbXBsYXRlcygkbW9kdWxlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGVtcGxhdGVzOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0VGltZUZvclBlcmlvZCgkcGVyaW9kKQogICAgewogICAgICAgIHJldHVybiBEU3Vic2NyaWJlcjo6Z2V0VGltZUZvclBlcmlvZCgkcGVyaW9kKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UGFyYW1zQXNBcnJheSgpCiAgICB7CiAgICAgICAgJHBhcmFtcyA9IGFycmF5KCk7CgogICAgICAgICR4bWwgPSBzaW1wbGV4bWxfbG9hZF9zdHJpbmcoJzx2YXJzPjxwYXJhbXMgJyAuICR0aGlzLT5wYXJhbXMgLiAnIC8+PC92YXJzPicpOwoKICAgICAgICBpZiAoaXNzZXQoJHhtbC0+cGFyYW1zKSkgewogICAgICAgICAgICBmb3JlYWNoICgkeG1sLT5wYXJhbXNbMF0tPmF0dHJpYnV0ZXMoKSBhcyAkcGFyYW0gPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICAgICAkcGFyYW1zWyRwYXJhbV0gPSAnJyAuICR2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRwYXJhbXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiB0aGUgc3Vic2NyaXB0aW9uIGhhdmUgY29udGVudCBmb3IgYSBnaXZlbiBwZXJpb2QKICAgICAqCiAgICAgKiBAcGFyYW0gJHBlcmlvZAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCgogICAgcHVibGljIGZ1bmN0aW9uIGhhdmVDb250ZW50KCRwZXJpb2QpCiAgICB7CiAgICAgICAgJGNvbnRlbnQgPSAkdGhpcy0+Z2V0Q29udGVudCgkcGVyaW9kKTsKICAgICAgICAkY29udGVudCAuPSAkdGhpcy0+Z2V0QW5ub3VuY2VzKCRwZXJpb2QpOwoKICAgICAgICByZXR1cm4gKGJvb2wpc3RybGVuKCRjb250ZW50KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgkcGVyaW9kKQogICAgewogICAgICAgIGlmICghJHRoaXMtPmNvbnRlbnQpIHsKICAgICAgICAgICAgLy8gZWNobyAnRmV0Y2ggY29udGVudCBmb3IgJyAuICR0aGlzLT5tb2R1bGVfbmFtZS4nPGJyLz4nOwogICAgICAgICAgICAkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSk7CiAgICAgICAgICAgICRwYXJhbXMgPSAkdGhpcy0+Z2V0UGFyYW1zQXNBcnJheSgpOwogICAgICAgICAgICAkcGFyYW1zWyd0ZW1wbGF0ZSddID0gJHRoaXMtPnRlbXBsYXRlOwogICAgICAgICAgICAkdGhpcy0+Y29udGVudCA9ICRtb2R1bGUtPkRpZ2VzdChEU3Vic2NyaWJlcjo6Z2V0VGltZUZvclBlcmlvZCgkcGVyaW9kKSwgJHBhcmFtcyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbnRlbnQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEFubm91bmNlcygkcGVyaW9kKQogICAgewogICAgICAgIC8vIFRPRE86IEltcGxlbWVudCBnZXQgQW5ub3VuY2VzCgogICAgICAgIHJldHVybiBOVUxMOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNb2R1bGVJdGVtc0ZvckRpcmVjdFVwZGF0ZSgpCiAgICB7CiAgICAgICAgJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkdGhpcy0+bW9kdWxlX25hbWUpOwogICAgICAgICRwYXJhbXMgPSAkdGhpcy0+Z2V0UGFyYW1zQXNBcnJheSgpOwoKICAgICAgICBpZiAobWV0aG9kX2V4aXN0cygkbW9kdWxlLCAnR2V0T2JqZWN0TmFtZScpKSB7CiAgICAgICAgICAgICRtb2R1bGVfb2JqZWN0ID0gJG1vZHVsZS0+R2V0T2JqZWN0TmFtZSgpOwogICAgICAgICAgICAkYyA9IG5ldyBNQ0ZDcml0ZXJpYSgpOwogICAgICAgICAgICAkYy0+YWRkKCdwdWJsaXNoZWQnLCAxKTsKICAgICAgICAgICAgJGMtPmFkZCgnc2VuZF91cGRhdGVfaW1tZWRpYXRlbHknLCAxKTsKICAgICAgICAgICAgLy8gJG1vZHVsZV9vYmplY3Q6OmJ1aWxkRnJvbnRlbmRGaWx0ZXJzKCRjLCAkcGFyYW1zKTsKICAgICAgICAgICAgJG1vZCA9IG5ldyAkbW9kdWxlX29iamVjdCgpOwogICAgICAgICAgICAkbW9kLT5idWlsZEZyb250ZW5kRmlsdGVycygkYywgJHBhcmFtcyk7CiAgICAgICAgICAgIC8vICRpdGVtcyA9ICRtb2R1bGVfb2JqZWN0Ojpkb1NlbGVjdCgkYyk7CiAgICAgICAgICAgICRpdGVtcyA9ICRtb2QtPmRvU2VsZWN0KCRjKTsKCiAgICAgICAgICAgIHJldHVybiAkaXRlbXM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gTlVMTDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3Vic2NyaWJlcnMoJHBlcmlvZCkKICAgIHsKICAgICAgICByZXR1cm4gRFN1YnNjcmliZXI6OmRvU2VsZWN0KGFycmF5KAogICAgICAgICAgICAnd2hlcmUnID0+IGFycmF5KAogICAgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvbl9pZCcgPT4gJHRoaXMtPmdldElkKCksCiAgICAgICAgICAgICAgICAncGVyaW9kJyA9PiAkcGVyaW9kCiAgICAgICAgICAgICkKICAgICAgICApKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAkc3Vic2NyaXB0aW9ucyBEU3Vic2NyaXB0aW9uW10KICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0SWRzKCRzdWJzY3JpcHRpb25zKQogICAgewogICAgICAgICRpZHMgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRzdWJzY3JpcHRpb25zIGFzICRzdWJzY3JpcHRpb24pIHsKICAgICAgICAgICAgJGlkc1tdID0gJHN1YnNjcmlwdGlvbi0+Z2V0SWQoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRpZHM7CiAgICB9Cn0=]]></data>
	</file>
	<file>
	  <filename>/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Y21zbXMtZGlnZXN0Cj09PT09PT09PT09PQoKRGlnZXN0IGlzIGEgbW9kdWxlIGZvciBhdXRvbWF0ZWQgbWFpbGluZyB1cGRhdGVzIHdpdGggQ01TIE1hZGUgU2ltcGxlCg==]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admin.default.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJalF1ZXJ5KGZ1bmN0aW9uKCQpCXtsZGVsaW19CgkJJCgiLmJ1dHRvbiIpLmJ1dHRvbigpOwkKCQkkKCcjc3Vic2NyaXB0aW9ucycpLmxvYWQoInskc3Vic2NyaXB0aW9uc19saXN0fHJlcGxhY2U6JyZhbXA7JzonJid9JnskaWR9b3JkZXJfYnk9aWQrZGVzYyZzaG93dGVtcGxhdGU9ZmFsc2UiKTsKCQkkKCcjc3Vic2NyaWJlcnMnKS5sb2FkKCJ7JHN1YnNjcmliZXJzX2xpc3R8cmVwbGFjZTonJmFtcDsnOicmJ30meyRpZH1saW1pdD17JGxlbmdodH0meyRpZH1vcmRlcl9ieT10aW1lc3RhbXArZGVzYyZzaG93dGVtcGxhdGU9ZmFsc2UiKTsKCQkkKCcjdGVtcGxhdGVzJykubG9hZCgieyR0ZW1wbGF0ZXNfbGlzdHxyZXBsYWNlOicmYW1wOyc6JyYnfSZzaG93dGVtcGxhdGU9ZmFsc2UiKTsKCQkkKCcjbG9ncycpLmxvYWQoInskbG9nc19saXN0fHJlcGxhY2U6JyZhbXA7JzonJid9JnskaWR9bGltaXQ9NSZzaG93dGVtcGxhdGU9ZmFsc2UiKTsKCXtyZGVsaW19KTsKPC9zY3JpcHQ+Cgo8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsgbWFyZ2luLWJvdHRvbTogN3B4OyI+Cgk8YSBocmVmPSJ7JG9wdGlvbnN9IiBjbGFzcz0iYnV0dG9uIj5PcHRpb25zPC9hPgo8L2Rpdj4KCjxkaXYgY2xhc3M9Ik1haW5NZW51Ij4KCQoJPGRpdiBjbGFzcz0iaXRlbW1lbnVjb250YWluZXIiPgoJCTxkaXYgY2xhc3M9Iml0ZW1vdmVyZmxvdyI+CgkJCTxhIGNsYXNzPSJ0aXRsZS1pdGVtbGluayIgaHJlZj0ieyRzdWJzY3JpcHRpb25zX2xpc3R9Ij5TdWJzY3JpcHRpb25zPC9hPgoJCQk8ZGl2IGlkPSJzdWJzY3JpcHRpb25zIj48L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2PgoJCQoJPGRpdiBjbGFzcz0iaXRlbW1lbnVjb250YWluZXIiPgoJCTxkaXYgY2xhc3M9Iml0ZW1vdmVyZmxvdyI+CgkJCTxhIGNsYXNzPSJ0aXRsZS1pdGVtbGluayIgaHJlZj0ieyR0ZW1wbGF0ZXNfbGlzdH0iPlRlbXBsYXRlczwvYT4KCQkJPGRpdiBpZD0idGVtcGxhdGVzIj48L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2PgkKCgk8ZGl2IGNsYXNzPSJpdGVtbWVudWNvbnRhaW5lciI+CgkJPGRpdiBjbGFzcz0iaXRlbW92ZXJmbG93Ij4KCQkJPGEgY2xhc3M9InRpdGxlLWl0ZW1saW5rIiBocmVmPSJ7JHN1YnNjcmliZXJzX2xpc3R9Ij5MYXRlc3Qgc3Vic2NyaWJlcnMgKHZpZXcgYWxsKTwvYT4KCQkJPGRpdiBpZD0ic3Vic2NyaWJlcnMiPjwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CgkKCTxkaXYgY2xhc3M9Iml0ZW1tZW51Y29udGFpbmVyIj4KCQk8ZGl2IGNsYXNzPSJpdGVtb3ZlcmZsb3ciPgoJCQk8YSBjbGFzcz0idGl0bGUtaXRlbWxpbmsiIGhyZWY9InskbG9nc19saXN0fSI+TG9ncyAodmlldyBhbGwpPC9hPgoJCQk8ZGl2IGlkPSJsb2dzIj48L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2PgkKPC9kaXY+]]></data>
	</file>
	<file>
	  <filename>/templates/admin.logs_list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KICAgPHRoZWFkPgogICAgICA8dHI+CiAgICAgICAgPHRoPlRpdGxlPC90aD4KCQkgCQk8dGg+V2hlbjwvdGg+CgkJIAkJPHRoPlBlcmlvZDwvdGg+CgkJIAkJPHRoPlN1bW1hcnk8L3RoPgogICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iIHN0eWxlPSJ3aWR0aDoyMHB4Ij7CoDwvdGg+CiAgICAgIDwvdHI+CiAgIDwvdGhlYWQ+Cgk8dGJvZHk+CgkJe2ZvcmVhY2ggZnJvbT0kbG9ncyBpdGVtPWxvZ30KCQk8dHIgY2xhc3M9IntjeWNsZSB2YWx1ZXM9InJvdzEscm93MiJ9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3tjeWNsZSB2YWx1ZXM9InJvdzEscm93MiJ9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3tjeWNsZSB2YWx1ZXM9InJvdzEscm93MiJ9JzsiPgoJCQk8dGQ+eyRsb2ctPnRpdGxlfTwvdGQ+CgkJCTx0ZD57JGxvZy0+dGltZXN0YW1wfGRhdGVfZm9ybWF0OiclZC8lbS8lWSAlSDolTTolUyd9PC90ZD4KCQkJPHRkPnskbG9nLT5wZXJpb2R9PC90ZD4KCQkJPHRkPnskbG9nLT5zdW1tYXJ5fTwvdGQ+CgkJCTx0ZD4KCQkJCXsqfTxhIGNsYXNzPSJlZGl0IHVpLWljb24gdWktaWNvbi1wZW5jaWwiIGhyZWY9InskY3JlYXRlX2xpbmt8cmVwbGFjZTonX0lURU1fSURfJzokc3Vic2NyaXB0aW9uLT5nZXRJZCgpfSIgdGl0bGU9IkVkaXQiPkVkaXQ8L2E+CgkJCQk8c3BhbiBjbGFzcz0iZGVsZXRlLXN1YnNjcmlwdGlvbiB1aS1pY29uIHVpLWljb24tdHJhc2giIGhyZWY9InskZGVsZXRlX2xpbmt8cmVwbGFjZTonX0lURU1fSURfJzokc3Vic2NyaXB0aW9uLT5nZXRJZCgpfSIgdGl0bGU9IkRlbGV0ZSI+RGVsZXRlPC9zcGFuPnsqfQoJCQk8L3RkPgoJCTwvdHI+CgkJey9mb3JlYWNofQoJPC90Ym9keT4KPC90YWJsZT4=]]></data>
	</file>
	<file>
	  <filename>/templates/admin.options.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJalF1ZXJ5KGZ1bmN0aW9uKCQpCXtsZGVsaW19CgkJJCgiLmJ1dHRvbiIpLmJ1dHRvbigpOwkKCXtyZGVsaW19KTsKPC9zY3JpcHQ+Cgo8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsgbWFyZ2luLWJvdHRvbTogN3B4OyI+Cgk8YSBocmVmPSJ7JHRlc3R9IiBjbGFzcz0iYnV0dG9uIj5TZW5kIHRlc3QgZW1haWxzPC9hPgo8L2Rpdj4KCnskZm9ybS0+cmVuZGVyKCl9]]></data>
	</file>
	<file>
	  <filename>/templates/admin.subscribers_list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KICAgPHRoZWFkPgogICAgICA8dHI+CiAgICAgICAgPHRoPlN1YnNjcmliZXI8L3RoPgoJCSAJCTx0aD5FbWFpbDwvdGg+CgkJIAkJPHRoPlN1YnNjcmlwdGlvbnM8L3RoPgogICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iIHN0eWxlPSJ3aWR0aDoyMHB4Ij7CoDwvdGg+CiAgICAgIDwvdHI+CiAgIDwvdGhlYWQ+Cgk8dGJvZHk+CgkJe2ZvcmVhY2ggZnJvbT0kc3Vic2NyaWJlcnMgaXRlbT1zdWJzY3JpYmVyfQoJCTx0ciBjbGFzcz0ie2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIn0iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0ne2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIn1ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0ne2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIn0nOyI+CgkJCTx0ZD57JHN1YnNjcmliZXIudXNlci51c2VybmFtZX08L3RkPgoJCQk8dGQ+eyRzdWJzY3JpYmVyLnVzZXIuZW1haWx9PC90ZD4KCQkJPHRkPgoJCQkJe2ZvcmVhY2ggZnJvbT0kc3Vic2NyaWJlci5zdWJzY3JpcHRpb25zIGl0ZW09c3Vic2NyaXB0aW9uIG5hbWU9c3Vic2NyaXB0aW9uc30KCQkJCXskc3Vic2NyaXB0aW9uLT5nZXRTdWJzY3JpcHRpb24oKX0gKDxlbT57JHN1YnNjcmlwdGlvbi0+cGVyaW9kfTwvZW0+KQoJCQkJe2lmICRzbWFydHkuZm9yZWFjaC5zdWJzY3JpcHRpb25zLml0ZXJhdGlvbiA8ICRzdWJzY3JpYmVyLnN1YnNjcmlwdGlvbnN8QGNvdW50fSwgey9pZn0KCQkJCXsvZm9yZWFjaH0KCQkJPC90ZD4KCQkJPHRkPgoJCQkJeyp9PGEgY2xhc3M9ImVkaXQgdWktaWNvbiB1aS1pY29uLXBlbmNpbCIgaHJlZj0ieyRjcmVhdGVfbGlua3xyZXBsYWNlOidfSVRFTV9JRF8nOiRzdWJzY3JpcHRpb24tPmdldElkKCl9IiB0aXRsZT0iRWRpdCI+RWRpdDwvYT4KCQkJCTxzcGFuIGNsYXNzPSJkZWxldGUtc3Vic2NyaXB0aW9uIHVpLWljb24gdWktaWNvbi10cmFzaCIgaHJlZj0ieyRkZWxldGVfbGlua3xyZXBsYWNlOidfSVRFTV9JRF8nOiRzdWJzY3JpcHRpb24tPmdldElkKCl9IiB0aXRsZT0iRGVsZXRlIj5EZWxldGU8L3NwYW4+eyp9CgkJCTwvdGQ+CgkJPC90cj4KCQl7L2ZvcmVhY2h9Cgk8L3Rib2R5Pgo8L3RhYmxlPg==]]></data>
	</file>
	<file>
	  <filename>/templates/admin.subscriptions_list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJalF1ZXJ5KGZ1bmN0aW9uKCQpCXtsZGVsaW19CgkJJCgiLmJ1dHRvbiIpLmJ1dHRvbigpOwkKCQkKCQl7bGl0ZXJhbH0KCQkkKCAiI2RpYWxvZy1kZWxldGUtc3Vic2NyaXB0aW9uIiApLmRpYWxvZyh7CgkJCXJlc2l6YWJsZTogZmFsc2UsCgkJCWhlaWdodDoxNDAsCgkJCW1vZGFsOiB0cnVlLAoJCQlhdXRvT3BlbjogZmFsc2UsCgkJCWJ1dHRvbnM6IHsKCQkJCSJEZWxldGUgc3Vic2NyaXB0aW9uIjogZnVuY3Rpb24oKSB7CgkJCQkJbG9jYXRpb24uaHJlZiA9IHVybDsKCQkJCX0sCgkJCQlDYW5jZWw6IGZ1bmN0aW9uKCkgewoJCQkJCSQoIHRoaXMgKS5kaWFsb2coICJjbG9zZSIgKTsKCQkJCX0KCQkJfQoJCX0pOwoJCXsvbGl0ZXJhbH0KCQkKCQkkKCcuZGVsZXRlLXN1YnNjcmlwdGlvbicpLmNsaWNrKGZ1bmN0aW9uKCl7bGRlbGltfQoJCQl1cmwgPSAkKHRoaXMpLmF0dHIoJ2hyZWYnKTsKCQkJJCgiI2RpYWxvZy1kZWxldGUtc3Vic2NyaXB0aW9uIikuZGlhbG9nKCdvcGVuJyk7CgkJe3JkZWxpbX0pOwoJe3JkZWxpbX0pOwo8L3NjcmlwdD4KCjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiAgIDx0aGVhZD4KICAgICAgPHRyPgogICAgICAgIDx0aD5TdWJzY3JpcHRpb248L3RoPgoJCSAJCTx0aD5Nb2R1bGU8L3RoPgoJCSAJCTx0aD5QYXJhbWV0ZXJzPC90aD4KCQkgCQk8dGg+VGVtcGxhdGU8L3RoPgogICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iIHN0eWxlPSJ3aWR0aDoyMHB4Ij7CoDwvdGg+CiAgICAgIDwvdHI+CiAgIDwvdGhlYWQ+Cgk8dGJvZHk+CgkJe2ZvcmVhY2ggZnJvbT0kc3Vic2NyaXB0aW9ucyBpdGVtPXN1YnNjcmlwdGlvbn0KCQk8dHIgY2xhc3M9IntjeWNsZSB2YWx1ZXM9InJvdzEscm93MiJ9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3tjeWNsZSB2YWx1ZXM9InJvdzEscm93MiJ9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3tjeWNsZSB2YWx1ZXM9InJvdzEscm93MiJ9JzsiPgoJCQk8dGQ+eyRzdWJzY3JpcHRpb24tPnRpdGxlfTwvdGQ+CgkJCTx0ZD57JHN1YnNjcmlwdGlvbi0+bW9kdWxlX25hbWV9PC90ZD4KCQkJPHRkPnskc3Vic2NyaXB0aW9uLT5wYXJhbXN9PC90ZD4KCQkJPHRkPnskc3Vic2NyaXB0aW9uLT50ZW1wbGF0ZX08L3RkPgoJCQk8dGQ+CgkJCQk8YSBjbGFzcz0iZWRpdCB1aS1pY29uIHVpLWljb24tcGVuY2lsIiBocmVmPSJ7JGNyZWF0ZV9saW5rfHJlcGxhY2U6J19JVEVNX0lEXyc6JHN1YnNjcmlwdGlvbi0+Z2V0SWQoKX0iIHRpdGxlPSJFZGl0Ij5FZGl0PC9hPgoJCQkJPHNwYW4gY2xhc3M9ImRlbGV0ZS1zdWJzY3JpcHRpb24gdWktaWNvbiB1aS1pY29uLXRyYXNoIiBocmVmPSJ7JGRlbGV0ZV9saW5rfHJlcGxhY2U6J19JVEVNX0lEXyc6JHN1YnNjcmlwdGlvbi0+Z2V0SWQoKX0iIHRpdGxlPSJEZWxldGUiPkRlbGV0ZTwvc3Bhbj4KCQkJPC90ZD4KCQk8L3RyPgoJCXsvZm9yZWFjaH0KCTwvdGJvZHk+CjwvdGFibGU+Cgo8YSBjbGFzcz0iYnV0dG9uIiBocmVmPSJ7JGNyZWF0ZV9saW5rfHJlcGxhY2U6J19JVEVNX0lEXyc6Jyd9Ij5DcmVhdGUgYSBuZXcgc3Vic2NyaXB0aW9uPC9hPgoKPGRpdiBpZD0iZGlhbG9nLWRlbGV0ZS1zdWJzY3JpcHRpb24iIHRpdGxlPSJEZWxldGUgdGhpcyBpdGVtPyI+Cgk8cD48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWFsZXJ0IiBzdHlsZT0iZmxvYXQ6bGVmdDsgbWFyZ2luOjAgN3B4IDIwcHggMDsiPjwvc3Bhbj5UaGlzIGl0ZW0gd2lsbCBiZSBwZXJtYW5lbnRseSBkZWxldGVkIGFuZCBjYW5ub3QgYmUgcmVjb3ZlcmVkLiBBcmUgeW91IHN1cmU/PC9wPgo8L2Rpdj4=]]></data>
	</file>
	<file>
	  <filename>/templates/admin.subscription_edit.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCBzcmM9Ii9tb2R1bGVzL0RpZ2VzdC9qcy9kb3VibGUuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CglqUXVlcnkoZnVuY3Rpb24oJCkJe2xkZWxpbX0KCgkJJCgiLmJ1dHRvbiIpLmJ1dHRvbigpOwoJCQoJICB2YXIgdGVtcGxhdGVzID0ge2xkZWxpbX0KCQl7Zm9yZWFjaCBmcm9tPSRtb2R1bGVzIGl0ZW09bW9kdWxlIGtleT1tb2R1bGVfbmFtZX0KCQkJInskbW9kdWxlLm5hbWV9Ijoge2xkZWxpbX0KCQkJCSJrZXkiOiAneyRtb2R1bGVfbmFtZX0nLAoJCQkJInZhbHVlcyI6IHtsZGVsaW19CgkJCQkJe2ZvcmVhY2ggZnJvbT0kbW9kdWxlLnRlbXBsYXRlcyBpdGVtPXRlbXBsYXRlfQoJCQkJCSJ7JHRlbXBsYXRlfSI6ICd7JHRlbXBsYXRlfScsCgkJCQkJey9mb3JlYWNofQoJCQkJe3JkZWxpbX0KCQkJe3JkZWxpbX0sCgkJey9mb3JlYWNofQoJCXtyZGVsaW19OwoJCQoJCXZhciBvcHRpb25zID0ge2xkZWxpbX0KCQlwcmVzZWxlY3RGaXJzdDogJ3skc2VsZWN0ZWRfbW9kdWxlfScsCgkJcHJlc2VsZWN0U2Vjb25kOiAneyRzZWxlY3RlZF90ZW1wbGF0ZX0nCgkJe3JkZWxpbX07CgoJCSQoJyN7JGlkfW1vZHVsZV9uYW1lJykuZG91YmxlU2VsZWN0KCd7JGlkfXRlbXBsYXRlJywgdGVtcGxhdGVzLCBvcHRpb25zKTsJCQoJe3JkZWxpbX0pOwo8L3NjcmlwdD4KCnskZm9ybS0+cmVuZGVyKCl9]]></data>
	</file>
	<file>
	  <filename>/templates/admin.templates_list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJalF1ZXJ5KGZ1bmN0aW9uKCQpCXtsZGVsaW19CgkJCgkJe2xpdGVyYWx9CgkJJCggIiNkaWFsb2ctZGVsZXRlLXRlbXBsYXRlIiApLmRpYWxvZyh7CgkJCXJlc2l6YWJsZTogZmFsc2UsCgkJCWhlaWdodDoxNDAsCgkJCW1vZGFsOiB0cnVlLAoJCQlhdXRvT3BlbjogZmFsc2UsCgkJCWJ1dHRvbnM6IHsKCQkJCSJEZWxldGUgdGVtcGxhdGUiOiBmdW5jdGlvbigpIHsKCQkJCQlsb2NhdGlvbi5ocmVmID0gdXJsOwoJCQkJfSwKCQkJCUNhbmNlbDogZnVuY3Rpb24oKSB7CgkJCQkJJCggdGhpcyApLmRpYWxvZyggImNsb3NlIiApOwoJCQkJfQoJCQl9CgkJfSk7CgkJey9saXRlcmFsfQoJCQoJCSQoJy5kZWxldGUtdGVtcGxhdGUnKS5jbGljayhmdW5jdGlvbigpe2xkZWxpbX0KCQkJdXJsID0gJCh0aGlzKS5hdHRyKCdocmVmJyk7CgkJCSQoIiNkaWFsb2ctZGVsZXRlLXRlbXBsYXRlIikuZGlhbG9nKCdvcGVuJyk7CgkJe3JkZWxpbX0pOwoJe3JkZWxpbX0pOwo8L3NjcmlwdD4KCjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiAgIDx0aGVhZD4KICAgICAgPHRyPgogICAgICAgIDx0aD5UZW1wbGF0ZTwvdGg+CiAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiIgc3R5bGU9IndpZHRoOjIwcHgiPsKgPC90aD4KICAgICAgPC90cj4KICAgPC90aGVhZD4KCTx0Ym9keT4KCQl7Zm9yZWFjaCBmcm9tPSR0ZW1wbGF0ZXMgaXRlbT10ZW1wbGF0ZX0KCQk8dHIgY2xhc3M9IntjeWNsZSB2YWx1ZXM9InJvdzEscm93MiJ9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3tjeWNsZSB2YWx1ZXM9InJvdzEscm93MiJ9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3tjeWNsZSB2YWx1ZXM9InJvdzEscm93MiJ9JzsiPgoJCQk8dGQ+eyR0ZW1wbGF0ZX08L3RkPgoJCQk8dGQ+CgkJCQk8YSBjbGFzcz0iZWRpdCB1aS1pY29uIHVpLWljb24tcGVuY2lsIiBocmVmPSJ7JGNyZWF0ZV90ZW1wbGF0ZXxyZXBsYWNlOidfVEVNUExBVEVfJzokdGVtcGxhdGV9IiB0aXRsZT0iRWRpdCI+RWRpdDwvYT4KCQkJCTxzcGFuIGNsYXNzPSJkZWxldGUtdGVtcGxhdGUgdWktaWNvbiB1aS1pY29uLXRyYXNoIiBocmVmPSJ7JGRlbGV0ZV90ZW1wbGF0ZXxyZXBsYWNlOidfVEVNUExBVEVfJzokdGVtcGxhdGV9IiB0aXRsZT0iRGVsZXRlIj5EZWxldGU8L3NwYW4+CgkJCTwvdGQ+CgkJPC90cj4KCQl7L2ZvcmVhY2h9Cgk8L3Rib2R5Pgo8L3RhYmxlPgoKPGEgY2xhc3M9ImJ1dHRvbiIgaHJlZj0ieyRjcmVhdGVfdGVtcGxhdGV8cmVwbGFjZTonX1RFTVBMQVRFXyc6Jyd9Ij5DcmVhdGUgYSBuZXcgdGVtcGxhdGU8L2E+Cgo8ZGl2IGlkPSJkaWFsb2ctZGVsZXRlLXRlbXBsYXRlIiB0aXRsZT0iRGVsZXRlIHRoaXMgdGVtcGxhdGU/Ij4KCTxwPjxzcGFuIGNsYXNzPSJ1aS1pY29uIHVpLWljb24tYWxlcnQiIHN0eWxlPSJmbG9hdDpsZWZ0OyBtYXJnaW46MCA3cHggMjBweCAwOyI+PC9zcGFuPlRoaXMgdGVtcGxhdGUgd2lsbCBiZSBwZXJtYW5lbnRseSBkZWxldGVkIGFuZCBjYW5ub3QgYmUgcmVjb3ZlcmVkLiBBcmUgeW91IHN1cmU/PC9wPgo8L2Rpdj4=]]></data>
	</file>
	<file>
	  <filename>/templates/frontend.default.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iZGlnZXN0X2Zvcm0iPgoJeyRmb3JtLT5yZW5kZXIoKX0KPC9kaXY+]]></data>
	</file>
	<file>
	  <filename>/templates/frontend.email.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KPHRpdGxlPlVwZGF0ZXMgbm90aWZpY2F0aW9uPC90aXRsZT4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KICAgIDwhLS0gYSB7bGl0ZXJhbH17Zm9udC1mYW1pbHk6QXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgY29sb3I6IzBjNGRhMjsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9ey9saXRlcmFsfSAtLT4KPC9zdHlsZT4KPC9oZWFkPgo8Ym9keSB0b3BtYXJnaW49IjAiIG1hcmdpbmhlaWdodD0iMCIgbGVmdG1hcmdpbj0iMCIgbWFyZ2lud2lkdGg9IjAiPgoKPGgxPlVwZGF0ZXMgb2YgeyRwZXJpb2R8ZGF0ZV9mb3JtYXQ6IiVBICVlICVCICVZIn08L2gxPgoKe2ZvcmVhY2ggZnJvbT0kbW9kdWxlcyBpdGVtPW1vZHVsZX0KCgl7KiBBbm5vdW5jZXMgKn0KCQl7aWYgaXNzZXQoJG1vZHVsZS5hbm5vdW5jZXMpfQogIAkJe2ZvcmVhY2ggZnJvbT0kbW9kdWxlLmFubm91bmNlcyBpdGVtPWFubm91bmNlfQoJCQkJPGRpdj4KCQkJCQl7JGFubm91bmNlLT5nZXRUaXRsZSgpfQoJCQkJCXskYW5ub3VuY2UtPmdldEFubm91bmNlbWVudCgpfQoJCQkJPC9kaXY+CgkJCXsvZm9yZWFjaH0KCQl7L2lmfQoJCgl7KiBNb2R1bGUgY29udGVudCAqfQogCQl7aWYgaXNzZXQoJG1vZHVsZS5jb250ZW50KX0KCQkJPGRpdj4KCQkJCXskbW9kdWxlLmNvbnRlbnR9CgkJCTwvZGl2PgoJCXsvaWZ9Cgp7L2ZvcmVhY2h9CjwvYm9keT4KPC9odG1sPg==]]></data>
	</file>
</module>
