<?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>Revisions</name>
	<version>1.0-Beta</version>
  <mincmsversion>1.10.3</mincmsversion>
	<help><![CDATA[PGRpdiBzdHlsZT0iZmxvYXQ6cmlnaHQiPjxmb3JtIGFjdGlvbj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9jZ2ktYmluL3dlYnNjciIgbWV0aG9kPSJwb3N0Ij4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY21kIiB2YWx1ZT0iX3MteGNsaWNrIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaG9zdGVkX2J1dHRvbl9pZCIgdmFsdWU9IjdUS0dZUlkzU1JQRVkiPgo8aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaHR0cHM6Ly93d3cucGF5cGFsb2JqZWN0cy5jb20vZW5fVVMvaS9idG4vYnRuX2RvbmF0ZV9MRy5naWYiIGJvcmRlcj0iMCIgbmFtZT0ic3VibWl0IiBhbHQ9IlBheVBhbCAtIFRoZSBzYWZlciwgZWFzaWVyIHdheSB0byBwYXkgb25saW5lISI+CjxpbWcgYWx0PSIiIGJvcmRlcj0iMCIgc3JjPSJodHRwczovL3d3dy5wYXlwYWxvYmplY3RzLmNvbS9kZV9ERS9pL3Njci9waXhlbC5naWYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPgo8L2Zvcm0+PC9kaXY+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0iaHR0cDovL3d3dy5jbXNtczExLmRkL21vZHVsZXMvUmV2aXNpb25zL2pzL2x5dGVib3guanMiPjwvc2NyaXB0Pgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHA6Ly93d3cuY21zbXMxMS5kZC9tb2R1bGVzL1JldmlzaW9ucy9jc3MvbHl0ZWJveC5jc3MiIHR5cGU9InRleHQvY3NzIiAvPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHA6Ly93d3cuY21zbXMxMS5kZC9tb2R1bGVzL1JldmlzaW9ucy9jc3MvYmFja2VuZC5jc3MiIHR5cGU9InRleHQvY3NzIiAvPgo8ZGl2IGlkPSJwYWdlX3RhYnMiPgoJPGRpdiBpZD0iZ2VuZXJhbCI+CgkJR2VuZXJhbAoJPC9kaXY+Cgk8ZGl2IGlkPSJwZXJtaXNzaW9ucyI+CgkJUGVybWlzc2lvbnMKCTwvZGl2PgoJPGRpdiBpZD0iYWJvdXQiPgoJCUFib3V0Cgk8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CjxkaXYgaWQ9InBhZ2VfY29udGVudCI+ICAKCTxkaXYgaWQ9ImdlbmVyYWxfYyI+CgkJPGgzPkdlbmVyYWwgSW5mbzwvaDM+Cgk8cD5SZXZpc2lvbnMgbG9ncyBjaGFuZ2VzIGluIGNvbnRlbnQsIHRlbXBsYXRlcywgQ1NTLCBHQ0JzIGFuZCBlbmFibGVzIHRoZSB3ZWIgZGV2ZWxvcGVyIHRvIHZpZXcgZGlmZiBvciByZXZlcnQgdG8gYW4gZWFybGllciB2ZXJzaW9uIG9mIGl0LjwvcD4KCTwvZGl2PgoJPGRpdiBpZD0icGVybWlzc2lvbnNfYyI+CgkJPGgzPlBlcm1pc3Npb25zPC9oMz4KCTxwPllvdSBjYW4gc3BlY2lmeSB0aGUgZm9sbG93aW5nIHBlcm1pc3Npb25zIHVuZGVyIFVzZXJzICYgR3JvdXBzID4gR3JvdXAgUGVybWlzc2lvbnM8L3A+Cgk8dWw+CgkJPGxpPlJldmlzaW9uczogVXNlPC9saT4KCQk8bGk+UmV2aXNpb25zOiBTZXQgT3B0aW9uczwvbGk+Cgk8L3VsPgoJPHA+T25jZSBhIHVzZXIgaXMgcGVybWl0dGVkIHRvIHVzZSB0aGlzIG1vZHVsZSBoZSB3aWxsIGJlIGFibGUgdG8gc2VlIHRoZSByZXZpc2lvbnMgb2YgdGhvc2UgY29udGVudHMgaGUncyBhbGxvd2VkIHRvIGVkaXQuIEV4YW1wbGU6IEEgdXNlciB0aGF0IGlzIGFsbG93ZWQgdG8gZWRpdCBHbG9iYWwgQ29udGVudCBCbG9ja3Mgd2lsbCBhbHNvIGJlIGFibGUgdG8gbWFuYWdlIGl0cyByZXZpc2lvbnMuCgk8L2Rpdj4KCTxkaXYgaWQ9ImFib3V0X2MiPgoJCTxoMz5BYm91dDwvaDM+Cgk8cD5JZiB5b3UgZmluZCBhbnkgYnVncyBwbGVhc2UgZmVlbCBmcmVlIHRvIHN1Ym1pdCBhIGJ1ZyByZXBvcnQgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9idWcvbGlzdC8xMDE1IiB0YXJnZXQ9Il9ibGFuayI+aGVyZTwvYT4gb3IgZm9yIGFueSBnb29kIGlkZWFzIGNvbnNpZGVyIHN1Ym1pdGluZyBhIGZlYXR1cmUgcmVxdWVzdCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL2ZlYXR1cmVfcmVxdWVzdC9saXN0LzEwMTUiIHRhcmdldD0iX2JsYW5rIj5oZXJlPC9hPi48L3A+Cgk8cD5NYW55IHRoYW5rcyB0byBKb25hdGhhbiBTY2htaWQgZm9yIGhpcyBwcm9ncmFtbWluZyB0aGUgYmFzaWMgb2YgUmV2aXNpb25zLjwvcD4KCTxwPlBsZWFzZSBrZWVwIGluIG1pbmQgdGhhdCBkZXZlbG9wZXJzIGRvIGhhdmUgdGhlaXIgZGFpbHkgam9icyB3aGljaCBtZWFucyB0aGF0IGZlYXR1cmUgcmVxdWVzdHMgYXJlIGNvbnNpZGVyZWQgYW5kIGRvbmUgYXMgdGltZSBhbGxvd3MuIElmIHlvdSBuZWVkIGEgZmVhdHVyZSByZWFsbHkgYmFkbHkgY29uc2lkZXIgY29udGFjdGluZyBvbmUgb2YgdGhlIGRldmVsb3BlcnMgZm9yIGEgc3BvbnNvcmVkIGRldmVsb3BtZW50LjwvcD4KCTxoMz5UZWFtPC9oMz4KCTx1bD4KCQk8bGk+THVrYXMgQmxhdHRlciAobm9ja2VuZmVsbCkgbHVrYXMuYmxhdHRlckBibGF0dGVydGVjaC5jaCA8YnIgLz53d3cuYmxhdHRlcnRlY2guY2g8L2xpPgoJPC91bD4KCTwvZGl2PiAgCjwvZGl2PjxoMz5QYXJhbWV0ZXJzPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGFuZz0iZW5fVVMiIC0gUGFyYW1ldGVyIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGF0IGxhbmd1YWdlIHRvIHVzZSBmb3IgZGlzcGxheSBvbiB0aGUgZnJvbnRlbmQuIE5vdCBhbGwgbW9kdWxlcyBzdXBwb3J0IG9yIG5lZWQgdGhpcy48L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBMdWthcyBCbGF0dGVyICZsdDtsYkBibGF0dGVydGVjaC5jaCZndDs8YnIgLz48YnIgLz5WZXJzaW9uOiAxLjAtQmV0YTxiciAvPg==]]></about>
	<description><![CDATA[Revisions logs changes in content, templates, CSS, GCBs and enables the web developer to view diff or revert to an earlier version of it.]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_compare.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPgojIFdlYjogd3d3LmJsYXR0ZXJ0ZWNoLmNoCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFJldmlzaW9ucyBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwgQ1NTLAojIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gcmV2ZXJ0IHRvIGVhcmxpZXIgdmVyc2lvbnMgb2YgaXQuIAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gVE9ETzogY2hvb3NlIGJldHdlZW4gY29tcGFyaXNvbiBvZiByZXZpc2lvbiA8LT4gY3VycmVudCB2ZXJzaW9uIG9yIHJldmlzaW9uIDwtPiBvdGhlciByZXZpc2lvbgoKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdyZXZpc2lvbnNfdXNlJykpCglyZXR1cm47CgpyZXF1aXJlX29uY2UgZGlybmFtZShfX0ZJTEVfXykuJy9saWIvRGlmZi9SZW5kZXJlci9TaWRlQnlTaWRlLnBocCc7CgokYWRtaW50aGVtZSA9IGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpOwoKJGNvbnRlbnRpbmZvID0gJHRoaXMtPkdldENvbnRlbnRJbmZvRnJvbVJldmlzaW9uKCRwYXJhbXNbJ3JldmlzaW9uX2lkJ10pOwokY29udGVudCA9ICR0aGlzLT5HZXRDdXJyZW50VmVyc2lvbigKCSgkY29udGVudGluZm9bJ3JlY3ljbGUnXSA/ICdyZWN5Y2xlJyA6ICRjb250ZW50aW5mb1snbW9kdWxlX25hbWUnXSksCgkkY29udGVudGluZm9bJ2NvbnRlbnRfaWQnXSwKCSgkY29udGVudGluZm9bJ3JlY3ljbGUnXSA/ICRjb250ZW50aW5mb1snbW9kdWxlX25hbWUnXSA6ICcnKQopOwoKJG9sZGNvbnRlbnQgPSAkdGhpcy0+Z2V0UmV2aXNpb25Db250ZW50KCRwYXJhbXNbJ3JldmlzaW9uX2lkJ10pOwoKJGRpZmZfbWFya3VwID0gJyc7CgppZiAoJGNvbnRlbnRpbmZvWydtb2R1bGVfbmFtZSddID09ICJjb250ZW50IikgewoJCgkkb2xkY29udGVudG9iaiA9IFVuc2VyaWFsaXplT2JqZWN0KCRvbGRjb250ZW50KTsKCSRjb250ZW50YmxvY2tzID0gVW5zZXJpYWxpemVPYmplY3QoJGNvbnRlbnRpbmZvWydjb250ZW50YmxvY2tzJ10pOwoJCglpZiAoaXNfYXJyYXkoJGNvbnRlbnRibG9ja3MpKSB7CgkJZm9yZWFjaCgkY29udGVudGJsb2NrcyBhcyAka2V5ID0+ICR2YWx1ZSkKCQl7CgkJCSRvbGQgPSAkb2xkY29udGVudG9iai0+R2V0UHJvcGVydHlWYWx1ZSgka2V5KTsKCQkJJG5ldyA9ICRjb250ZW50LT5HZXRQcm9wZXJ0eVZhbHVlKCRrZXkpOwoJCQkKCQkJaWYgKCRjb250ZW50aW5mb1sncmVjeWNsZSddKSAkbmV3ID0gIiI7CgkJCQoJCQlpZiAoaXNfYXJyYXkoJG9sZCkgYW5kIGlzc2V0KCRvbGRbJ2NvbnRlbnQnXSkpICRvbGQgPSAkb2xkWydjb250ZW50J107CgkJCWlmIChpc19hcnJheSgkbmV3KSBhbmQgaXNzZXQoJG5ld1snY29udGVudCddKSkgJG5ldyA9ICRuZXdbJ2NvbnRlbnQnXTsJCgkJCQoJCQkkcmVuZGVyZXIgPSBuZXcgRGlmZl9SZW5kZXJlcl9IdG1sX1NpZGVCeVNpZGUoJGNvbnRlbnRpbmZvWydyZXZpc2lvbl9uciddKTsKCQkJJGRpZmZfbWFya3VwIC49ICI8aDQ+Ii4kdGhpcy0+TGFuZygiY29udGVudGJsb2NrIikuICIgJyIgLiAka2V5IC4gIic6PC9oND4iOwoJCQkkZGlmZiA9IG5ldyBEaWZmKGV4cGxvZGUoIlxuIiwgJG9sZCksIGV4cGxvZGUoIlxuIiwgJG5ldykpOwoJCQkkZCA9ICRkaWZmLT5yZW5kZXIoJHJlbmRlcmVyKTsKCQkJaWYgKCRkID09ICIiKSAKCQkJCSRkaWZmX21hcmt1cCAuPSAkdGhpcy0+TGFuZygncmV2aXNpb25zX2lkZW50aWNhbCcpOyAKCQkJZWxzZSAKCQkJCSRkaWZmX21hcmt1cCAuPSAkZGlmZi0+cmVuZGVyKCRyZW5kZXJlcik7CgkJfQoJfQoJZWxzZSB7CgkJZWNobyAkdGhpcy0+TGFuZygnZXJyb3JfY29udGVudGJsb2NrcycpOwoJfQp9CmVsc2UgewoJJHJlbmRlcmVyID0gbmV3IERpZmZfUmVuZGVyZXJfSHRtbF9TaWRlQnlTaWRlKCRjb250ZW50aW5mb1sncmV2aXNpb25fbnInXSk7Cgl7CgkJaWYgKCRjb250ZW50aW5mb1sncmVjeWNsZSddKSAkY29udGVudCA9ICIiOwoJCSRkaWZmID0gbmV3IERpZmYoZXhwbG9kZSgiXG4iLCAkb2xkY29udGVudCksIGV4cGxvZGUoIlxuIiwgJGNvbnRlbnQpKTsKCQkkZGlmZl9tYXJrdXAgLj0gJGRpZmYtPnJlbmRlcigkcmVuZGVyZXIpOwoJfQp9Cgokc21hcnR5LT5hc3NpZ24oJ3Jlc3RvcmVsaW5rJywKCSAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmVzdG9yZScsICRyZXR1cm5pZCwKCQkJICAgICAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZXhwb3J0LmdpZicsICR0aGlzLT5MYW5nKCdyZXN0b3JlJyksJycsJycsJ3N5c3RlbWljb24nKSwKCQkJICAgICBhcnJheSgkY29udGVudGluZm9bJ3JldmlzaW9uX2lkJ10pLCAnJywgZmFsc2UsIGZhbHNlLCAnJykuJyAnLgoKCSAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmVzdG9yZScsICRyZXR1cm5pZCwKCQkJICAgICAkdGhpcy0+TGFuZygncmVzdG9yZScpLAoJCQkgICAgIGFycmF5KCdyZXZpc2lvbl9pZCcgPT4gJGNvbnRlbnRpbmZvWydyZXZpc2lvbl9pZCddKSkpOwoKCgokc21hcnR5LT5hc3NpZ24oJ2NvbnRlbnRfbmFtZScsICR0aGlzLT5MYW5nKCRwYXJhbXNbJ21vZHVsZV9uYW1lJ10pIC4iOiAiIC4gJHBhcmFtc1snbmFtZSddKTsKJHNtYXJ0eS0+YXNzaWduKCdwYWdlYmFja191cmwnLCBodG1sc3BlY2lhbGNoYXJzX2RlY29kZSgkdGhpcy0+Y3JlYXRlX3VybCgkaWQsICdhZG1pbl9kZXRhaWxzJywgJHJldHVybmlkLCBhcnJheSgKCSdtb2R1bGVfbmFtZScgPT4gKCRjb250ZW50aW5mb1sncmVjeWNsZSddPydyZWN5Y2xlJzokY29udGVudGluZm9bJ21vZHVsZV9uYW1lJ10pLAoJJ3JlY3ljbGVfbW9kdWxlX25hbWUnID0+ICgkY29udGVudGluZm9bJ3JlY3ljbGUnXT8kY29udGVudGluZm9bJ21vZHVsZV9uYW1lJ106JycpLAoJJ2NvbnRlbnRfaWQnID0+ICRjb250ZW50aW5mb1snY29udGVudF9pZCddCikpKSk7CiRzbWFydHktPmFzc2lnbignZGlmZicsICRkaWZmX21hcmt1cCk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2NvbXBhcmUudHBsJyk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_details.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPgojIFdlYjogd3d3LmJsYXR0ZXJ0ZWNoLmNoCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFJldmlzaW9ucyBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwgQ1NTLAojIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gcmV2ZXJ0IHRvIGVhcmxpZXIgdmVyc2lvbnMgb2YgaXQuIAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ3JldmlzaW9uc191c2UnKSkKCXJldHVybjsKCmlmIChpc3NldCgkcGFyYW1zWydtZXNzYWdlJ10pKSB7CgllY2hvICR0aGlzLT5TaG93TWVzc2FnZSgkdGhpcy0+TGFuZygkcGFyYW1zWydtZXNzYWdlJ10pKTsKfQoKaWYgKGlzc2V0KCRwYXJhbXNbJ2Vycm9ycyddKSAmJiBjb3VudCgkcGFyYW1zWydlcnJvcnMnXSkpIHsKCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHBhcmFtc1snZXJyb3JzJ10pOwp9CgokYWRtaW50aGVtZSA9IGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpOwokZGIgPSBjbXNtcygpLT5HZXREYigpOwoKJG1vZHVsZV9uYW1lID0gaXNzZXQoJHBhcmFtc1snbW9kdWxlX25hbWUnXSkgPyAkcGFyYW1zWydtb2R1bGVfbmFtZSddIDogJyc7CgokcHJldmlld29wdGlvbnMgPSBhcnJheSgpOwokZGJwYXJhbXMgPSBhcnJheSgpOwpzd2l0Y2goJG1vZHVsZV9uYW1lKQp7CglkZWZhdWx0OgoJCXJldHVybjsKCgljYXNlICdjb250ZW50JzoKCQkkcHJldmlld29wdGlvbnNbJ2Rpc2FibGVfdGhlbWUnXSA9IDE7CgkJJGRicGFyYW1zW10gPSAkcGFyYW1zWydtb2R1bGVfbmFtZSddOwoJCSRxdWVyeSA9ICdTRUxFQ1QgYS5yZXZpc2lvbl9pZCBhcyByZXZpc2lvbl9pZCwgYS5yZXZpc2lvbl9uciBhcyByZXZpc2lvbl9uciwgYi5jb250ZW50X25hbWUgQVMgbmFtZSwgYS5jcmVhdGVfdGltZSwgYy51c2VybmFtZSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyBhLCAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ2NvbnRlbnQgYiwgJyAuIGNtc19kYl9wcmVmaXgoKSAuICd1c2VycyBjIFdIRVJFIGEubW9kdWxlX25hbWUgPSA/IEFORCBhLmNvbnRlbnRfaWQgPSA/IEFORCBhLmNvbnRlbnRfaWQgPSBiLmNvbnRlbnRfaWQgQU5EIGEudXNlcl9pZCA9IGMudXNlcl9pZCBHUk9VUCBCWSBhLnJldmlzaW9uX2lkIE9SREVSIEJZIGEucmV2aXNpb25faWQgZGVzYyc7CgkJYnJlYWs7CgoJY2FzZSAnZ2NiJzoKCQkkZGJwYXJhbXNbXSA9ICRwYXJhbXNbJ21vZHVsZV9uYW1lJ107CgkJJHF1ZXJ5ID0gJ1NFTEVDVCBhLnJldmlzaW9uX2lkIGFzIHJldmlzaW9uX2lkLCBhLnJldmlzaW9uX25yIGFzIHJldmlzaW9uX25yLCBiLmh0bWxibG9iX25hbWUgQVMgbmFtZSwgYS5jcmVhdGVfdGltZSwgYy51c2VybmFtZSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyBhLCAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ2h0bWxibG9icyBiLCAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ3VzZXJzIGMgV0hFUkUgYS5tb2R1bGVfbmFtZSA9ID8gQU5EIGEuY29udGVudF9pZCA9ID8gQU5EIGEuY29udGVudF9pZCA9IGIuaHRtbGJsb2JfaWQgQU5EIGEudXNlcl9pZCA9IGMudXNlcl9pZCBHUk9VUCBCWSBhLnJldmlzaW9uX2lkIE9SREVSIEJZIGEucmV2aXNpb25faWQgZGVzYyc7CgkJYnJlYWs7CgoJY2FzZSAndGVtcGxhdGUnOgoJCSRkYnBhcmFtc1tdID0gJHBhcmFtc1snbW9kdWxlX25hbWUnXTsKCQkkcXVlcnkgPSAnU0VMRUNUIGEucmV2aXNpb25faWQgYXMgcmV2aXNpb25faWQsIGEucmV2aXNpb25fbnIgYXMgcmV2aXNpb25fbnIsIGIudGVtcGxhdGVfbmFtZSBBUyBuYW1lLCBhLmNyZWF0ZV90aW1lLCBjLnVzZXJuYW1lIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zIGEsICcgLiBjbXNfZGJfcHJlZml4KCkgLiAndGVtcGxhdGVzIGIsICcgLiBjbXNfZGJfcHJlZml4KCkgLiAndXNlcnMgYyBXSEVSRSBhLm1vZHVsZV9uYW1lID0gPyBBTkQgYS5jb250ZW50X2lkID0gPyBBTkQgYS5jb250ZW50X2lkID0gYi50ZW1wbGF0ZV9pZCBBTkQgYS51c2VyX2lkID0gYy51c2VyX2lkIEdST1VQIEJZIGEucmV2aXNpb25faWQgT1JERVIgQlkgYS5yZXZpc2lvbl9pZCBkZXNjJzsKCQlicmVhazsKCgljYXNlICdzdHlsZXNoZWV0JzoKCQkkZGJwYXJhbXNbXSA9ICRwYXJhbXNbJ21vZHVsZV9uYW1lJ107CgkJJHF1ZXJ5ID0gJ1NFTEVDVCBhLnJldmlzaW9uX2lkIGFzIHJldmlzaW9uX2lkLCBhLnJldmlzaW9uX25yIGFzIHJldmlzaW9uX25yLCBiLmNzc19uYW1lIEFTIG5hbWUsIGEuY3JlYXRlX3RpbWUsIGMudXNlcm5hbWUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnMgYSwgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdjc3MgYiwgJyAuIGNtc19kYl9wcmVmaXgoKSAuICd1c2VycyBjIFdIRVJFIGEubW9kdWxlX25hbWUgPSA/IEFORCBhLmNvbnRlbnRfaWQgPSA/IEFORCBhLmNvbnRlbnRfaWQgPSBiLmNzc19pZCBBTkQgYS51c2VyX2lkID0gYy51c2VyX2lkIEdST1VQIEJZIGEucmV2aXNpb25faWQgT1JERVIgQlkgYS5yZXZpc2lvbl9pZCBkZXNjJzsKCQlicmVhazsKCgljYXNlICdyZWN5Y2xlJzoKCQkkZGJwYXJhbXNbXSA9ICRwYXJhbXNbJ3JlY3ljbGVfbW9kdWxlX25hbWUnXTsKCQkkcXVlcnkgPSAnU0VMRUNUIGEucmV2aXNpb25faWQgYXMgcmV2aXNpb25faWQsIGEubW9kdWxlX25hbWUgYXMgbW9kdWxlX25hbWUsIGEucmV2aXNpb25fbnIgYXMgcmV2aXNpb25fbnIsIGIuY29udGVudF9uYW1lIEFTIG5hbWUsIGEuY3JlYXRlX3RpbWUsIGMudXNlcm5hbWUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnMgYSwgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zX3JlY3ljbGUgYiwgJyAuIGNtc19kYl9wcmVmaXgoKSAuICd1c2VycyBjIFdIRVJFIGEubW9kdWxlX25hbWUgPSA/IEFORCBhLmNvbnRlbnRfaWQgPSA/IEFORCBhLmNvbnRlbnRfaWQgPSBiLmNvbnRlbnRfaWQgQU5EIGEudXNlcl9pZCA9IGMudXNlcl9pZCBHUk9VUCBCWSBhLnJldmlzaW9uX2lkIE9SREVSIEJZIGEucmV2aXNpb25faWQgZGVzYyc7CgkJYnJlYWs7Cn0KJGRicGFyYW1zW10gPSAkcGFyYW1zWydjb250ZW50X2lkJ107CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICRkYnBhcmFtcyk7CgokbmFtZSA9ICIiOwoKLy8gUFJFUEFSRSBBTEwgUkVWSVNJT05TIEZPUiBMSVNUSU5HCiRyZXZpc2lvbnMgPSBhcnJheSgpOwp3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKewoJaWYgKCRuYW1lID09ICIiKSAkbmFtZSA9ICRyb3dbJ25hbWUnXTsKCQoJJHByZXZpZXdvcHRpb25zWydyZXZpc2lvbl9pZCddID0gJHJvd1sncmV2aXNpb25faWQnXTsKCSRwcmV2aWV3b3B0aW9uc1snbmFtZSddID0gJHJvd1snbmFtZSddOwoJaWYgKGlzc2V0KCRyb3dbJ21vZHVsZV9uYW1lJ10pIGFuZCAkcm93Wydtb2R1bGVfbmFtZSddID09ICdjb250ZW50JykgJHByZXZpZXdvcHRpb25zWydkaXNhYmxlX3RoZW1lJ10gPSAxOwoJCgkKCSRyb3dbJ3ByZXZpZXdsaW5rJ10gPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9wcmV2aWV3JywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdmlldy5naWYnLCAkdGhpcy0+TGFuZygncHJldmlldycpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIAoJCSRwcmV2aWV3b3B0aW9ucywgJycsIGZhbHNlLCBmYWxzZSwgKGlzc2V0KCRwcmV2aWV3b3B0aW9uc1snZGlzYWJsZV90aGVtZSddKT8ndGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJwb3B1cCInOicnKSk7Cgkkcm93WydyZXN0b3JlbGluayddID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmVzdG9yZScsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2V4cG9ydC5naWYnLCAkdGhpcy0+TGFuZygncmVzdG9yZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksCgkJYXJyYXkoCgkJCSdyZXZpc2lvbl9pZCcgPT4gJHJvd1sncmV2aXNpb25faWQnXQoJCSkpOwoJJHJvd1snY29tcGFyZWxpbmsnXSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2NvbXBhcmUnLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9jb3B5LmdpZicsICR0aGlzLT5MYW5nKCdjb21wYXJlX3Rvb2x0aXAnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLAoJCWFycmF5KAoJCQkncmV2aXNpb25faWQnID0+ICRyb3dbJ3JldmlzaW9uX2lkJ10sICduYW1lJyA9PiAkcm93WyduYW1lJ10sICdtb2R1bGVfbmFtZScgPT4gJHBhcmFtc1snbW9kdWxlX25hbWUnXQoJCSkpOwoJJHJldmlzaW9uc1tdID0gUmV2aXNpb25zVXRpbHM6OmFycmF5X3RvX29iamVjdCgkcm93KTsKfQoKLy9pZigkcGFyYW1zWydtb2R1bGVfbmFtZSddID09ICdyZWN5Y2xlJykKLy97Ci8vCWlmICgkbmFtZSA9PSAiIikgJG5hbWUgPSAkcm93WyduYW1lJ107Ci8vCQovLwkvLyBMSVNUIExBU1QgQUNUSVZFIFZFUlNJT04gQVQgVEhFIEJPVFRPTQovLwkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJ1NFTEVDVCBhLmNvbnRlbnRfbmFtZSBBUyBuYW1lLCBhLmNyZWF0ZV90aW1lLCBiLnVzZXJuYW1lIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zX3JlY3ljbGUgYSwgJyAuIGNtc19kYl9wcmVmaXgoKSAuICd1c2VycyBiIFdIRVJFIGEubW9kdWxlX25hbWUgPSA/IEFORCBhLmNvbnRlbnRfaWQgPSA/IEFORCBhLnVzZXJfaWQgPSBiLnVzZXJfaWQnLCAkZGJwYXJhbXMpOwovLwkkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwovLwkkbGlua3BhcmFtcyA9IGFycmF5KCk7Ci8vCSRsaW5rcGFyYW1zWydyZXZpc2lvbl9pZCddID0gLTE7Ci8vCSRsaW5rcGFyYW1zWydyZXZpc2lvbl9uciddID0gJHJvd1sncmV2aXNpb25fbnInXTsKLy8JJGxpbmtwYXJhbXNbJ25hbWUnXSA9ICRyb3dbJ25hbWUnXTsKLy8JJGxpbmtwYXJhbXNbJ21vZHVsZV9uYW1lJ10gPSAkcGFyYW1zWydyZWN5Y2xlX21vZHVsZV9uYW1lJ107Ci8vCSRsaW5rcGFyYW1zWydjb250ZW50X2lkJ10gPSAkcGFyYW1zWydjb250ZW50X2lkJ107Ci8vCSRyb3dbJ3ByZXZpZXdsaW5rJ10gPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9wcmV2aWV3JywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdmlldy5naWYnLCAkdGhpcy0+TGFuZygncHJldmlldycpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIAovLwkJJGxpbmtwYXJhbXMsICcnLCBmYWxzZSwgZmFsc2UsIChpc3NldCgkcHJldmlld29wdGlvbnNbJ2Rpc2FibGVfdGhlbWUnXSk/J3RhcmdldD0iX2JsYW5rIiBjbGFzcz0icG9wdXAiJzonJykpOwovLwkkcm93WydyZXN0b3JlbGluayddID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmVzdG9yZScsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2V4cG9ydC5naWYnLCAkdGhpcy0+TGFuZygncmVzdG9yZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksICRsaW5rcGFyYW1zKTsKLy8JJHJvd1snY29tcGFyZWxpbmsnXSA9ICcnOwovLwkkcmV2aXNpb25zW10gPSBSZXZpc2lvbnNVdGlsczo6YXJyYXlfdG9fb2JqZWN0KCRyb3cpOwovL30KCgokc21hcnR5LT5hc3NpZ24oJ2NvbnRlbnRfbmFtZScsICR0aGlzLT5MYW5nKCRwYXJhbXNbJ21vZHVsZV9uYW1lJ10pIC4iOiAiIC4gJG5hbWUpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyZXZpc2lvbnMpKTsKJHNtYXJ0eS0+YXNzaWduX2J5X3JlZignaXRlbXMnLCAkcmV2aXNpb25zKTsKJHNtYXJ0eS0+YXNzaWduKCdwYWdlYmFja191cmwnLCAkdGhpcy0+Q3JlYXRlQmFja1VSTCgkcGFyYW1zWydtb2R1bGVfbmFtZSddLid0YWInKSk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZGV0YWlscy50cGwnKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.admin_preview.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPgojIFdlYjogd3d3LmJsYXR0ZXJ0ZWNoLmNoCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFJldmlzaW9ucyBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwgQ1NTLAojIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gcmV2ZXJ0IHRvIGVhcmxpZXIgdmVyc2lvbnMgb2YgaXQuIAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ3JldmlzaW9uc191c2UnKSkKCXJldHVybjsKCiRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKCnJlcXVpcmVfb25jZSgnZWRpdGNvbnRlbnRfZXh0cmEucGhwJyk7CgokYWRtaW50aGVtZSA9IGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpOwoKaWYoJHBhcmFtc1sncmV2aXNpb25faWQnXSA+IDApCnsKCSRjb250ZW50aW5mbyA9ICR0aGlzLT5HZXRDb250ZW50SW5mb0Zyb21SZXZpc2lvbigkcGFyYW1zWydyZXZpc2lvbl9pZCddKTsKfQplbHNlCnsKCSRjb250ZW50aW5mbyA9IGFycmF5KCk7CgkkY29udGVudGluZm9bJ3JlY3ljbGUnXSA9IHRydWU7CgkkY29udGVudGluZm9bJ21vZHVsZV9uYW1lJ10gPSAkcGFyYW1zWydtb2R1bGVfbmFtZSddOwoJJGNvbnRlbnRpbmZvWydjb250ZW50X2lkJ10gPSAkcGFyYW1zWydjb250ZW50X2lkJ107Cn0KJGNvbnRlbnQgPSAkdGhpcy0+R2V0Q3VycmVudFZlcnNpb24oCgkoJGNvbnRlbnRpbmZvWydyZWN5Y2xlJ10gPyAncmVjeWNsZScgOiAkY29udGVudGluZm9bJ21vZHVsZV9uYW1lJ10pLAoJJGNvbnRlbnRpbmZvWydjb250ZW50X2lkJ10sCgkoJGNvbnRlbnRpbmZvWydyZWN5Y2xlJ10gPyAkY29udGVudGluZm9bJ21vZHVsZV9uYW1lJ10gOiAnJykKKTsKJG9sZGNvbnRlbnQgPSAkcGFyYW1zWydyZXZpc2lvbl9pZCddID4gMCA/ICR0aGlzLT5nZXRSZXZpc2lvbkNvbnRlbnQoJHBhcmFtc1sncmV2aXNpb25faWQnXSkgOiAkY29udGVudDsKCmlmKCRjb250ZW50aW5mb1snbW9kdWxlX25hbWUnXSA9PSAnY29udGVudCcpCnsKCSRyZXZjb250ZW50b2JqID0gVW5zZXJpYWxpemVPYmplY3QoJG9sZGNvbnRlbnQpOwoJJHBhcm0gPSBhcnJheSgpOwoJJGNvbnRlbnRibG9ja3MgPSBVbnNlcmlhbGl6ZU9iamVjdCgkY29udGVudGluZm9bJ2NvbnRlbnRibG9ja3MnXSk7CgkKCgkkY29udGVudG9wcyA9IGNtc21zKCktPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CgkkY29udGVudF90eXBlID0gZ2V0X2NsYXNzKCRyZXZjb250ZW50b2JqKTsKCQoJJHBhcm0gPSBhcnJheSgpOwoJCglpZiAoJGNvbnRlbnRpbmZvWydyZWN5Y2xlJ10pIHsKCQkkY29udGVudG9iaiA9IAkkdGhpcy0+R2V0Q3VycmVudFZlcnNpb24oInJlY3ljbGUiLCAkY29udGVudGluZm9bJ2NvbnRlbnRfaWQnXSwgImNvbnRlbnQiKTsKCQkKCQllY2hvICJoYWxsbyI7CgkJcHJpbnRfcigkY29udGVudG9iaik7CgkJCgkJZm9yZWFjaCgkY29udGVudGJsb2NrcyBhcyAkYmxvY2tfbmFtZSA9PiAkdmFsdWUpCgkJewoJCQkkcGFybVskYmxvY2tfbmFtZV0gPSAoJHJldmNvbnRlbnRvYmotPkdldFByb3BlcnR5VmFsdWUoJGJsb2NrX25hbWUpKTsKCQl9Cgl9CgllbHNlIHsKCQkkY29udGVudG9iaiA9ICRjb250ZW50b3BzLT5Mb2FkQ29udGVudEZyb21JZCgkY29udGVudGluZm9bJ2NvbnRlbnRfaWQnXSwgdHJ1ZSk7CgkJZm9yZWFjaCgkY29udGVudG9iai0+Z2V0X2NvbnRlbnRfYmxvY2tzKCkgYXMgJGJsb2NrX25hbWUgPT4gJHZhbHVlKQoJCXsKCQkJJHBhcm1bJGJsb2NrX25hbWVdID0gJHJldmNvbnRlbnRvYmotPkdldFByb3BlcnR5VmFsdWUoJGJsb2NrX25hbWUpOwoJCX0KCX0JCgkJCgkJCglpZiAoc3RydG9sb3dlcihnZXRfY2xhc3MoJGNvbnRlbnRvYmopKSAhPSBzdHJ0b2xvd2VyKCRjb250ZW50X3R5cGUpKQoJewoJCWNvcHljb250ZW50b2JqKCRjb250ZW50b2JqLCAkY29udGVudF90eXBlLCAkcGFybSk7Cgl9Cgl1cGRhdGVjb250ZW50b2JqKCRjb250ZW50b2JqLCB0cnVlLCAkcGFybSk7CgoKCQoJJHRtcGZuYW1lID0gY3JlYXRldG1wZm5hbWUoJGNvbnRlbnRvYmopOwoJJF9TRVNTSU9OWydjbXNfcHJldmlldyddID0gc3RyX3JlcGxhY2UoJ1xcJywnLycsJHRtcGZuYW1lKTsKCSR0bXB2YXIgPSBzdWJzdHIoc3RyX3NodWZmbGUobWQ1KCR0bXBmbmFtZSkpLC0zKTsKCSR1cmwgPSAkY29uZmlnWyJyb290X3VybCJdLicvaW5kZXgucGhwPycuJGNvbmZpZ1sncXVlcnlfdmFyJ10uIj1fX0NNU19QUkVWSUVXX1BBR0VfXyZyPSR0bXB2YXIiOyAvLyB0ZW1wb3JhcnkJCgloZWFkZXIoJ0xvY2F0aW9uOiAnIC4gJHVybCk7CgkKCWV4aXQ7Cn0KZWxzZQp7Cglzd2l0Y2goJGNvbnRlbnRpbmZvWydtb2R1bGVfbmFtZSddKQoJewoJCWRlZmF1bHQ6CgkJCSRtb2RlID0gJyc7CgkJCWJyZWFrOwoKCQljYXNlICdzdHlsZXNoZWV0JzoKCQkJJG1vZGUgPSAnY3NzJzsKCQkJYnJlYWs7CgoJCWNhc2UgJ3RlbXBsYXRlJzoKCQljYXNlICdnY2InOgoJCQkkbW9kZSA9ICdodG1sJzsKCQkJYnJlYWs7Cgl9CgoJJHNtYXJ0eS0+YXNzaWduKCdyZXN0b3JlbGluaycsCgkgICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3Jlc3RvcmUnLCAkcmV0dXJuaWQsCgkJCSAgICAgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2V4cG9ydC5naWYnLCAkdGhpcy0+TGFuZygncmVzdG9yZScpLCcnLCcnLCdzeXN0ZW1pY29uJyksCgkJCSAgICAgYXJyYXkoJGNvbnRlbnRpbmZvWydyZXZpc2lvbl9pZCddKSwgJycsIGZhbHNlLCBmYWxzZSwgJycpLicgJy4KCgkgICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3Jlc3RvcmUnLCAkcmV0dXJuaWQsCgkJCSAgICAgJHRoaXMtPkxhbmcoJ3Jlc3RvcmUnKSwKCQkJICAgICBhcnJheSgncmV2aXNpb25faWQnID0+ICRjb250ZW50aW5mb1sncmV2aXNpb25faWQnXSkpKTsKCQoJCgkkc21hcnR5LT5hc3NpZ24oJ2NvbnRlbnRfbmFtZScsICR0aGlzLT5MYW5nKCRjb250ZW50aW5mb1snbW9kdWxlX25hbWUnXSkgLiI6ICIgLiAkcGFyYW1zWyduYW1lJ10pOwoJJHNtYXJ0eS0+YXNzaWduKCdyZXZpc2lvbl9ucicsICRjb250ZW50aW5mb1sncmV2aXNpb25fbnInXSk7Cgkkc21hcnR5LT5hc3NpZ24oJ3BhZ2ViYWNrX3VybCcsIGh0bWxzcGVjaWFsY2hhcnNfZGVjb2RlKCR0aGlzLT5jcmVhdGVfdXJsKCRpZCwgJ2FkbWluX2RldGFpbHMnLCAkcmV0dXJuaWQsIGFycmF5KAoJCSdtb2R1bGVfbmFtZScgPT4gKCRjb250ZW50aW5mb1sncmVjeWNsZSddPydyZWN5Y2xlJzokY29udGVudGluZm9bJ21vZHVsZV9uYW1lJ10pLAoJCSdyZWN5Y2xlX21vZHVsZV9uYW1lJyA9PiAoJGNvbnRlbnRpbmZvWydyZWN5Y2xlJ10/JGNvbnRlbnRpbmZvWydtb2R1bGVfbmFtZSddOicnKSwKCQknY29udGVudF9pZCcgPT4gJGNvbnRlbnRpbmZvWydjb250ZW50X2lkJ10KCSkpKSk7Cgkkc21hcnR5LT5hc3NpZ24oJ2NvZGUnLCBodG1sc3BlY2lhbGNoYXJzKCRvbGRjb250ZW50KSk7CgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3ByZXZpZXcudHBsJyk7CgkkYWNlID0gUmV2aXNpb25zOjpHZXRNb2R1bGVJbnN0YW5jZSgnQWNlRWRpdG9yJyk7CglpZiAoaXNfb2JqZWN0KCRhY2UpKSB7CgkJJGFjZS0+RG9BY3Rpb24oJ2hlYWQnLCAkaWQsIGFycmF5KCkpOwoJCSRhY2UtPkRvQWN0aW9uKCdkZWZhdWx0JywgJGlkLCBhcnJheSgnZGl2aWQnID0+ICdwcmV2aWV3Y29kZScsICd3aWR0aCcgPT4gJzYwMCcsICdoZWlnaHQnID0+IDUwMCwgJ21vZGUnID0+ICRtb2RlKSk7Cgl9Cn0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPgojIFdlYjogd3d3LmJsYXR0ZXJ0ZWNoLmNoCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFJldmlzaW9ucyBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwgQ1NTLAojIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gcmV2ZXJ0IHRvIGVhcmxpZXIgdmVyc2lvbnMgb2YgaXQuIAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ3JldmlzaW9uc191c2UnKSkKCXJldHVybjsKCmlmIChpc3NldCgkcGFyYW1zWyd0YWJfbWVzc2FnZSddKSkgewoJZWNobyAkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoJHBhcmFtc1sndGFiX21lc3NhZ2UnXSkpOwp9CgppZiAoaXNzZXQoJHBhcmFtc1snZXJyb3JzJ10pICYmIGNvdW50KCRwYXJhbXNbJ2Vycm9ycyddKSkgewoJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkcGFyYW1zWydlcnJvcnMnXSk7Cn0KCgokc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7CgokYWRtaW50aGVtZSA9IGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpOwoKZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7CmlmICghZW1wdHkoJHBhcmFtc1snYWN0aXZlX3RhYiddKSkgewoJJHRhYiA9ICRwYXJhbXNbJ2FjdGl2ZV90YWInXTsKfSBlbHNlIHsKCSR0YWIgPSAncGFnZXRhYic7Cn0KCmlmKCR0aGlzLT5IYXNQZXJtKCdwYWdlUGVybXMnKSkKewoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdwYWdldGFiJywgJHRoaXMtPkxhbmcoJ3BhZ2VzJyksICgkdGFiID09ICdwYWdldGFiJykpOwp9CmlmKCR0aGlzLT5IYXNQZXJtKCdodG1sUGVybXMnKSkKewoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdnY2J0YWInLCAkdGhpcy0+TGFuZygnZ2NicycpLCAoJHRhYiA9PSAnZ2NidGFiJykpOwp9CmlmKCR0aGlzLT5IYXNQZXJtKCd0ZW1wbGF0ZVBlcm1zJykpCnsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigndGVtcGxhdGV0YWInLCAkdGhpcy0+TGFuZygndGVtcGxhdGVzJyksICgkdGFiID09ICd0ZW1wbGF0ZXRhYicpKTsKfQppZigkdGhpcy0+SGFzUGVybSgnY3NzUGVybXMnKSkKewoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdzdHlsZXNoZWV0dGFiJywgJHRoaXMtPkxhbmcoJ2NzcycpLCAoJHRhYiA9PSAnc3R5bGVzaGVldHRhYicpKTsKfQppZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVsZXRlX3JldmlzaW9uc193aXRoX2NvbnRlbnQnKSA9PSBmYWxzZSAmJiAoJHRoaXMtPkhhc1Blcm0oJ3BhZ2VQZXJtcycpIHx8ICR0aGlzLT5IYXNQZXJtKCdodG1sUGVybXMnKSB8fCAkdGhpcy0+SGFzUGVybSgndGVtcGxhdGVQZXJtcycpIHx8ICR0aGlzLT5IYXNQZXJtKCdjc3NQZXJtcycpKSkKewoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdyZWN5Y2xldGFiJywgJHRoaXMtPkxhbmcoJ3JlY3ljbGUnKSwgKCR0YWIgPT0gJ3JlY3ljbGV0YWInKSk7Cn0KaWYoJHRoaXMtPkNoZWNrUGVybWlzc2lvbigncmV2aXNpb25zX29wdGlvbnMnKSkKewoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdvcHRpb250YWInLCAkdGhpcy0+TGFuZygnb3B0aW9ucycpLCAoJHRhYiA9PSAnb3B0aW9udGFiJykpOwp9CgplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7CmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOwoKaWYoJHRoaXMtPkhhc1Blcm0oJ3BhZ2VQZXJtcycpKQp7CgllY2hvICR0aGlzLT5TdGFydFRhYigncGFnZXRhYicsICRwYXJhbXMpOwoJJHF1ZXJ5ID0gJ1NFTEVDVCBhLmNvbnRlbnRfaWQsIGEubW9kdWxlX25hbWUsIGIuY29udGVudF9uYW1lIEFTIG5hbWUsIGIuaGllcmFyY2h5LCBDT1VOVCgqKSBBUyByZXZpc2lvbnMgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnMgYSwgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdjb250ZW50IGIgV0hFUkUgYS5tb2R1bGVfbmFtZSA9ICJjb250ZW50IiBBTkQgYS5jb250ZW50X2lkID0gYi5jb250ZW50X2lkIEdST1VQIEJZIGEuY29udGVudF9pZCBPUkRFUiBCWSBiLmhpZXJhcmNoeSc7CgkkdGhpcy0+TGlzdENvbnRlbnQoJHF1ZXJ5LCAkaWQsICRyZXR1cm5pZCk7CgllY2hvICR0aGlzLT5FbmRUYWIoKTsKfQoKaWYoJHRoaXMtPkhhc1Blcm0oJ2h0bWxQZXJtcycpKQp7CgllY2hvICR0aGlzLT5TdGFydFRhYignZ2NidGFiJywgJHBhcmFtcyk7CgkkcXVlcnkgPSAnU0VMRUNUIGEuY29udGVudF9pZCwgYS5tb2R1bGVfbmFtZSwgYi5odG1sYmxvYl9uYW1lIEFTIG5hbWUsIENPVU5UKCopIEFTIHJldmlzaW9ucyBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyBhLCAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ2h0bWxibG9icyBiIFdIRVJFIGEubW9kdWxlX25hbWUgPSAiZ2NiIiBBTkQgYS5jb250ZW50X2lkID0gYi5odG1sYmxvYl9pZCBHUk9VUCBCWSBhLmNvbnRlbnRfaWQgT1JERVIgQlkgYi5odG1sYmxvYl9uYW1lJzsKCSR0aGlzLT5MaXN0Q29udGVudCgkcXVlcnksICRpZCwgJHJldHVybmlkKTsKCWVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CgppZigkdGhpcy0+SGFzUGVybSgndGVtcGxhdGVQZXJtcycpKQp7CgllY2hvICR0aGlzLT5TdGFydFRhYigndGVtcGxhdGV0YWInLCAkcGFyYW1zKTsKCSRxdWVyeSA9ICdTRUxFQ1QgYS5jb250ZW50X2lkLCBhLm1vZHVsZV9uYW1lLCBiLnRlbXBsYXRlX25hbWUgQVMgbmFtZSwgQ09VTlQoKikgQVMgcmV2aXNpb25zIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zIGEsICcgLiBjbXNfZGJfcHJlZml4KCkgLiAndGVtcGxhdGVzIGIgV0hFUkUgYS5tb2R1bGVfbmFtZSA9ICJ0ZW1wbGF0ZSIgQU5EIGEuY29udGVudF9pZCA9IGIudGVtcGxhdGVfaWQgR1JPVVAgQlkgYS5jb250ZW50X2lkIE9SREVSIEJZIGIudGVtcGxhdGVfbmFtZSc7CgkkdGhpcy0+TGlzdENvbnRlbnQoJHF1ZXJ5LCAkaWQsICRyZXR1cm5pZCk7CgllY2hvICR0aGlzLT5FbmRUYWIoKTsKfQoKaWYoJHRoaXMtPkhhc1Blcm0oJ2Nzc1Blcm1zJykpCnsKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdzdHlsZXNoZWV0dGFiJywgJHBhcmFtcyk7CgkkcXVlcnkgPSAnU0VMRUNUIGEuY29udGVudF9pZCwgYS5tb2R1bGVfbmFtZSwgYi5jc3NfbmFtZSBBUyBuYW1lLCBDT1VOVCgqKSBBUyByZXZpc2lvbnMgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnMgYSwgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdjc3MgYiBXSEVSRSBhLm1vZHVsZV9uYW1lID0gInN0eWxlc2hlZXQiIEFORCBhLmNvbnRlbnRfaWQgPSBiLmNzc19pZCBHUk9VUCBCWSBhLmNvbnRlbnRfaWQgT1JERVIgQlkgYi5jc3NfbmFtZSc7CgkkdGhpcy0+TGlzdENvbnRlbnQoJHF1ZXJ5LCAkaWQsICRyZXR1cm5pZCk7CgllY2hvICR0aGlzLT5FbmRUYWIoKTsKfQoKaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlbGV0ZV9yZXZpc2lvbnNfd2l0aF9jb250ZW50JykgPT0gZmFsc2UgJiYgKCR0aGlzLT5IYXNQZXJtKCdwYWdlUGVybXMnKSB8fCAkdGhpcy0+SGFzUGVybSgnaHRtbFBlcm1zJykgfHwgJHRoaXMtPkhhc1Blcm0oJ3RlbXBsYXRlUGVybXMnKSB8fCAkdGhpcy0+SGFzUGVybSgnY3NzUGVybXMnKSkpCnsKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdyZWN5Y2xldGFiJywgJHBhcmFtcyk7CgkkcXVlcnkgPSAnU0VMRUNUIGEuY29udGVudF9pZCwgYS5tb2R1bGVfbmFtZSwgYS5jb250ZW50X25hbWUgQVMgbmFtZSwgQ09VTlQoYi5yZXZpc2lvbl9pZCkgQVMgcmV2aXNpb25zIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zX3JlY3ljbGUgYSBMRUZUIEpPSU4gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zIGIgT04gYS5jb250ZW50X2lkID0gYi5jb250ZW50X2lkIFdIRVJFICc7Cgkkd2hlcmUgPSBhcnJheSgpOwoJaWYoJHRoaXMtPkhhc1Blcm0oJ3BhZ2VQZXJtcycpKQoJewoJCSR3aGVyZT0gImEubW9kdWxlX25hbWUgPSAnY29udGVudCciOwoJCSRxdWVyeTIgPSAkcXVlcnkgLiAnICcgLiAkd2hlcmUgLiAnIEdST1VQIEJZIGIuY29udGVudF9pZCBPUkRFUiBCWSBhLm1vZHVsZV9uYW1lJzsKCQkKCQkkc21hcnR5LT5hc3NpZ24oJ3RpdGxlJywkdGhpcy0+TGFuZygncGFnZXMnKSk7CgkJJHRoaXMtPkxpc3RDb250ZW50KCRxdWVyeTIsICRpZCwgJHJldHVybmlkLCB0cnVlKTsKCX0KCWlmKCR0aGlzLT5IYXNQZXJtKCdodG1sUGVybXMnKSkKCXsKCQkkd2hlcmUgPSAiYS5tb2R1bGVfbmFtZSA9ICdnY2InIjsKCQkkcXVlcnkyID0gJHF1ZXJ5IC4gJyAnIC4gJHdoZXJlIC4gJyBHUk9VUCBCWSBiLmNvbnRlbnRfaWQgT1JERVIgQlkgYS5tb2R1bGVfbmFtZSc7CgkJCgkJJHNtYXJ0eS0+YXNzaWduKCd0aXRsZScsJHRoaXMtPkxhbmcoJ2djYnMnKSk7CgkJJHRoaXMtPkxpc3RDb250ZW50KCRxdWVyeTIsICRpZCwgJHJldHVybmlkLCB0cnVlKTsKCX0KCWlmKCR0aGlzLT5IYXNQZXJtKCd0ZW1wbGF0ZVBlcm1zJykpCgl7CgkJJHdoZXJlID0gImEubW9kdWxlX25hbWUgPSAndGVtcGxhdGUnIjsKCQkkcXVlcnkyID0gJHF1ZXJ5IC4gJyAnIC4gJHdoZXJlIC4gJyBHUk9VUCBCWSBiLmNvbnRlbnRfaWQgT1JERVIgQlkgYS5tb2R1bGVfbmFtZSc7CgkJCgkJJHNtYXJ0eS0+YXNzaWduKCd0aXRsZScsJHRoaXMtPkxhbmcoJ3RlbXBsYXRlcycpKTsKCQkkdGhpcy0+TGlzdENvbnRlbnQoJHF1ZXJ5MiwgJGlkLCAkcmV0dXJuaWQsIHRydWUpOwoJfQoJaWYoJHRoaXMtPkhhc1Blcm0oJ2Nzc1Blcm1zJykpCgl7CgkJJHdoZXJlID0gImEubW9kdWxlX25hbWUgPSAnc3R5bGVzaGVldCciOwoJCSRxdWVyeTIgPSAkcXVlcnkgLiAnICcgLiAkd2hlcmUgLiAnIEdST1VQIEJZIGIuY29udGVudF9pZCBPUkRFUiBCWSBhLm1vZHVsZV9uYW1lJzsKCQkKCQkkc21hcnR5LT5hc3NpZ24oJ3RpdGxlJywkdGhpcy0+TGFuZygnY3NzJykpOwoJCSR0aGlzLT5MaXN0Q29udGVudCgkcXVlcnkyLCAkaWQsICRyZXR1cm5pZCwgdHJ1ZSk7Cgl9CgkKCWVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CgppZigkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdyZXZpc2lvbnNfb3B0aW9ucycpKQp7CgllY2hvICR0aGlzLT5TdGFydFRhYignb3B0aW9udGFiJywgJHBhcmFtcyk7CglpbmNsdWRlIGRpcm5hbWUoX19GSUxFX18pIC4gJy9mdW5jdGlvbi5hZG1pbl9vcHRpb250YWIucGhwJzsKCWVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CgplY2hvICR0aGlzLT5FbmRUYWJDb250ZW50KCk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.restore.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPgojIFdlYjogd3d3LmJsYXR0ZXJ0ZWNoLmNoCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFJldmlzaW9ucyBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwgQ1NTLAojIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gcmV2ZXJ0IHRvIGVhcmxpZXIgdmVyc2lvbnMgb2YgaXQuIAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ3JldmlzaW9uc191c2UnKSB8fCAhaXNzZXQoJHBhcmFtc1sncmV2aXNpb25faWQnXSkpCglyZXR1cm47CgpyZXF1aXJlX29uY2UoJ2VkaXRjb250ZW50X2V4dHJhLnBocCcpOwkJCgkKaWYoJHBhcmFtc1sncmV2aXNpb25faWQnXSA+IDApIHsKCSRjb250ZW50aW5mbyA9ICR0aGlzLT5HZXRDb250ZW50SW5mb0Zyb21SZXZpc2lvbigkcGFyYW1zWydyZXZpc2lvbl9pZCddKTsKfQoKJGRiID0gY21zbXMoKS0+R2V0REIoKTsKCi8vIFJFU1RPUkUgUkVDWUNMRUQgQ09OVEVOVAppZigkcGFyYW1zWydyZXZpc2lvbl9pZCddIDwgMCB8fCAkY29udGVudGluZm9bJ3JlY3ljbGUnXSkKewoJJG1vZHVsZV9uYW1lID0gaXNzZXQoJGNvbnRlbnRpbmZvWydtb2R1bGVfbmFtZSddKSA/ICRjb250ZW50aW5mb1snbW9kdWxlX25hbWUnXSA6ICRwYXJhbXNbJ21vZHVsZV9uYW1lJ107CgkkY29udGVudF9pZCA9IGlzc2V0KCRjb250ZW50aW5mb1snY29udGVudF9pZCddKSA/ICRjb250ZW50aW5mb1snY29udGVudF9pZCddIDogJHBhcmFtc1snY29udGVudF9pZCddOwoKCSRjb250ZW50X29iaiA9ICR0aGlzLT5SZXN0b3JlUmVjeWNsZWRDb250ZW50KCRtb2R1bGVfbmFtZSwgJGNvbnRlbnRfaWQpOwoJCglpZiAoJGNvbnRlbnRfb2JqID09PSBGQUxTRSkgewoJCSRwYXJhbXMgPSBhcnJheSgnbW9kdWxlX2Vycm9yJz0+IGltcGxvZGUoIlxuIiwgJHRoaXMtPl9lcnJvcnMpLCdhY3RpdmVfdGFiJyA9PiAkbW9kdWxlX25hbWUgLiAndGFiJyk7CgkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFyYW1zKTsKCQlyZXR1cm47Cgl9CgkKCSRkYi0+RXhlY3V0ZSgnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyBTRVQgY29udGVudF9pZCA9ID8gV0hFUkUgbW9kdWxlX25hbWUgPSA/IEFORCBjb250ZW50X2lkID0gPycsIGFycmF5KCRjb250ZW50X29iai0+SWQoKSwgJG1vZHVsZV9uYW1lLCAkY29udGVudF9pZCkpOwoJJGRiLT5FeGVjdXRlKCdERUxFVEUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnNfcmVjeWNsZSBXSEVSRSBtb2R1bGVfbmFtZSA9ID8gQU5EIGNvbnRlbnRfaWQgPSA/JywgYXJyYXkoJG1vZHVsZV9uYW1lLCAkY29udGVudF9pZCkpOwoKCWlmICgkbW9kdWxlX25hbWUgPT0gImNvbnRlbnQiKSB7CgkJYXVkaXQoJGNvbnRlbnRfb2JqLT5JZCgpLCAnUmV2aXNpb24gUmVzdG9yZSBSZWN5Y2xlZCBQYWdlOiAnLiRjb250ZW50X29iai0+TmFtZSgpLCAnUmVzdG9yZWQnKTsKCQkkcGFyYW1zID0gYXJyYXkoJ3RhYl9tZXNzYWdlJz0+ICdtc2dfcmVzdG9yZWRfcmVjeWNsZScsJ2FjdGl2ZV90YWInID0+ICRtb2R1bGVfbmFtZSAuICd0YWInKTsKCX0KCWVsc2UgewoJCWF1ZGl0KCRjb250ZW50X29iai0+aWQsICdSZXZpc2lvbiBSZXN0b3JlIFJlY3ljbGVkICcuJG1vZHVsZV9uYW1lLic6ICcuJGNvbnRlbnRfb2JqLT5uYW1lLCAnUmVzdG9yZWQnKTsKCQkkcGFyYW1zID0gYXJyYXkoJ3RhYl9tZXNzYWdlJz0+ICdtc2dfcmVzdG9yZWRfcmVjeWNsZScsJ2FjdGl2ZV90YWInID0+ICRtb2R1bGVfbmFtZSAuICd0YWInKTsKCX0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcmFtcyk7CglyZXR1cm47CgoJCn0KCiRvbGRjb250ZW50ID0gJGNvbnRlbnRpbmZvWydjb250ZW50J107CgppZigkcGFyYW1zWydyZXZpc2lvbl9pZCddID4gMCkKewoJc3dpdGNoKCRjb250ZW50aW5mb1snbW9kdWxlX25hbWUnXSkKCXsKCQlkZWZhdWx0OgoJCQlyZXR1cm4gZmFsc2U7CgkKCQljYXNlICdjb250ZW50JzoKCQkJCgkJCSRjb250ZW50b3BzID0gY21zbXMoKS0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsKCQkJJGNvbnRlbnRvYmogPSAkY29udGVudG9wcy0+TG9hZENvbnRlbnRGcm9tSWQoJGNvbnRlbnRpbmZvWydjb250ZW50X2lkJ10sIHRydWUpOwoJCgkJCSRyZXZjb250ZW50b2JqID0gVW5zZXJpYWxpemVPYmplY3QoJG9sZGNvbnRlbnQpOwoJCQkKCQkJJGNvbnRlbnRfdHlwZSA9IGdldF9jbGFzcygkcmV2Y29udGVudG9iaik7CgkJCSRwYXJtID0gYXJyYXkoKTsKCQkJJGNvbnRlbnRibG9ja3MgPSBVbnNlcmlhbGl6ZU9iamVjdCgkY29udGVudGluZm9bJ2NvbnRlbnRibG9ja3MnXSk7CgkJCQoJCQlmb3JlYWNoKGFycmF5X2tleXMoJGNvbnRlbnRibG9ja3MpIGFzICRibG9ja19uYW1lKQoJCQl7CgkJCQkkY29udGVudCA9ICRyZXZjb250ZW50b2JqLT5HZXRQcm9wZXJ0eVZhbHVlKCRibG9ja19uYW1lKTsKCQkJCWlmIChpc19hcnJheSgkY29udGVudCkpICRjb250ZW50ID0gJGNvbnRlbnRbJ2NvbnRlbnQnXTsKCQkJCSRwYXJtWyRibG9ja19uYW1lXSA9ICRjb250ZW50OwoJCQl9CgkJCQoJCQlpZiAoc3RydG9sb3dlcihnZXRfY2xhc3MoJGNvbnRlbnRvYmopKSAhPSBzdHJ0b2xvd2VyKCRjb250ZW50X3R5cGUpKQoJCQl7CgkJCQljb3B5Y29udGVudG9iaigkY29udGVudG9iaiwgJGNvbnRlbnRfdHlwZSwgJHBhcm0pOwoJCQl9CgkJCXVwZGF0ZWNvbnRlbnRvYmooJGNvbnRlbnRvYmosIHRydWUsICRwYXJtKTsKCQkJJGNvbnRlbnRvYmotPlNldExhc3RNb2RpZmllZEJ5KGdldF91c2VyaWQoKSk7CgkJCQoJCQkkcmVzID0gJGNvbnRlbnRvYmotPlZhbGlkYXRlRGF0YSgpOwoJCQlpZiggJHJlcyA9PT0gRkFMU0UgKSB7CgkJCQkvLyBldmVyeXRoaW5nIGlzIG9rYXkuLi4gc2F2ZSBpdAoJCQkJLy8gYW5kIG1ha2Ugc3VyZSB0aGUgaGllcmFyY2h5IHN0dWZmIHdvcmtzLgoJCQkJJGNvbnRlbnRvYmotPlNhdmUoKTsKCQkJCSR0aGlzLT5BdWRpdCggJGNvbnRlbnRvYmotPklkKCksICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgIlJlc3RvcmUgcGFnZTogIi4kY29udGVudG9iai0+TWVudVRleHQoKSk7CgkJCQkkcGFyYW1zID0gYXJyYXkoJ3RhYl9tZXNzYWdlJz0+ICdtc2dfcmVzdG9yZWQnLCdhY3RpdmVfdGFiJyA9PiAkY29udGVudGluZm9bJ21vZHVsZV9uYW1lJ10gLiAndGFiJyk7CgkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJhbXMpOwoJCQl9CgkJCWVsc2UgIHsKCQkJCSRwYXJhbXMgPSBhcnJheSgnZXJyb3JzJz0+ICRyZXMsJ2FjdGl2ZV90YWInID0+ICRjb250ZW50aW5mb1snbW9kdWxlX25hbWUnXSAuICd0YWInKTsKCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcmFtcyk7CgkJCX0KCQkJYnJlYWs7CgkKCQljYXNlICdzdHlsZXNoZWV0JzoKCQkJJHN0eWxlc2hlZXRvcHMgPSBjbXNtcygpLT5HZXRTdHlsZXNoZWV0T3BlcmF0aW9ucygpOwoJCQkkc3R5bGVzaGVldCA9ICRzdHlsZXNoZWV0b3BzLT5Mb2FkU3R5bGVzaGVldEJ5SUQoJGNvbnRlbnRpbmZvWydjb250ZW50X2lkJ10pOwoJCQkkc3R5bGVzaGVldC0+dmFsdWUgPSAkb2xkY29udGVudDsKCQkJJHN0eWxlc2hlZXQtPlNhdmUoKTsKCQkJYnJlYWs7CgkKCQljYXNlICd0ZW1wbGF0ZSc6CgkJCSR0ZW1wbGF0ZW9wcyA9IGNtc21zKCktPkdldFRlbXBsYXRlT3BlcmF0aW9ucygpOwoJCQkkdGVtcGxhdGUgPSAkdGVtcGxhdGVvcHMtPkxvYWRUZW1wbGF0ZUJ5SUQoJGNvbnRlbnRpbmZvWydjb250ZW50X2lkJ10pOwoJCQkkdGVtcGxhdGUtPmNvbnRlbnQgPSAkb2xkY29udGVudDsKCQkJJHRlbXBsYXRlLT5TYXZlKCk7CgkJCWJyZWFrOwoJCgkJY2FzZSAnZ2NiJzoKCQkJJGdjYm9wcyA9IGNtc21zKCktPkdldEdsb2JhbENvbnRlbnRPcGVyYXRpb25zKCk7CgkJCSRnY2IgPSAkZ2Nib3BzLT5Mb2FkSHRtbEJsb2JCeUlEKCRjb250ZW50aW5mb1snY29udGVudF9pZCddKTsKCQkJJGdjYi0+Y29udGVudCA9ICRvbGRjb250ZW50OwoJCQkkZ2NiLT5TYXZlKCk7CgkJCWJyZWFrOwoJCQkKCQkJCgkJCQoJfQp9CgokcGFyYW1zID0gYXJyYXkoJ3RhYl9tZXNzYWdlJz0+ICR0aGlzLT5MYW5nKCdtc2dfcmVzdG9yZWQnKSwnYWN0aXZlX3RhYicgPT4gJGNvbnRlbnRpbmZvWydtb2R1bGVfbmFtZSddIC4gJ3RhYicpOwokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJhbXMpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.updateoptions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPgojIFdlYjogd3d3LmJsYXR0ZXJ0ZWNoLmNoCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFJldmlzaW9ucyBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwgQ1NTLAojIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gcmV2ZXJ0IHRvIGVhcmxpZXIgdmVyc2lvbnMgb2YgaXQuIAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ3JldmlzaW9uc191c2UnKSkKCXJldHVybjsKCiRwYXJtcyA9IGFycmF5KCdhY3RpdmVfdGFiJyA9PiAnb3B0aW9udGFiJyk7CiRkYiA9IGNtc21zKCktPkdldERiKCk7CmlmKGlzc2V0KCRwYXJhbXNbJ2RlbGV0ZWFsbGJ1dHN1Ym1pdCddKSkKewoJJHRoaXMtPkRlbGV0ZUFsbFJldmlzaW9uc0J1dCgkcGFyYW1zWydkZWxldGVfYWxsX2J1dCddKTsKCSRwYXJtc1snbWVzc2FnZSddID0gJ3JldmlzaW9uc2RlbGV0ZWQnOwp9CmVsc2VpZihpc3NldCgkcGFyYW1zWydkZWxldGVvbGRlcnRoYW5zdWJtaXQnXSkpCnsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgnU0VMRUNUIERJU1RJTkNUIHJldmlzaW9uX2lkIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zIFdIRVJFIGNyZWF0ZV90aW1lIDwgPycsIGFycmF5KGRhdGUoJ1ktbS1kIEg6aTpzJywgc3RydG90aW1lKCRwYXJhbXNbJ2RlbGV0ZV9vbGRlcl90aGFuJ10pKSkpOwoJd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgl7CgkJJGRiLT5FeGVjdXRlKCdERUxFVEUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnMgV0hFUkUgcmV2aXNpb25faWQgPSA/JywgYXJyYXkoJHJvd1sncmV2aXNpb25faWQnXSkpOwoJCSRkYi0+RXhlY3V0ZSgnREVMRVRFIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zX2RpZmYgV0hFUkUgcmV2aXNpb25faWQgPSA/JywgYXJyYXkoJHJvd1sncmV2aXNpb25faWQnXSkpOwoJfQoJJHBhcm1zWydtZXNzYWdlJ10gPSAncmV2aXNpb25zZGVsZXRlZCc7Cn0KZWxzZQp7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc3RvcmVfcmV2aXNpb25zX2NvdW50JywgJHBhcmFtc1snc3RvcmVfcmV2aXNpb25zX2NvdW50J10pOwoKCSRkZWxldGVfcmV2aXNpb25zX3dpdGhfY29udGVudCA9IGlzc2V0KCRwYXJhbXNbJ2RlbGV0ZV9yZXZpc2lvbnNfd2l0aF9jb250ZW50J10pID8gJzEnIDogJzAnOwoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlbGV0ZV9yZXZpc2lvbnNfd2l0aF9jb250ZW50JywgJGRlbGV0ZV9yZXZpc2lvbnNfd2l0aF9jb250ZW50KTsKCS8vIHdoZW4gYWN0aXZhdGVkLCBkZWxldGUgb3JwaGFuZWQgZGF0YQoJaWYoJGRlbGV0ZV9yZXZpc2lvbnNfd2l0aF9jb250ZW50ID09IDEpCgl7CgkJJHRoaXMtPnZvaWRSZWN5Y2xlQmluKCk7Cgl9CgkkcGFybXNbJ21lc3NhZ2UnXSA9ICdvcHRpb25zdXBkYXRlZCc7Cn0KCiR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcm1zKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/css/backend.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LkRpZmZlcmVuY2VzIHsKCXdpZHRoOiAxMDAlOwoJYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKCWJvcmRlci1zcGFjaW5nOiAwOwoJZW1wdHktY2VsbHM6IHNob3c7Cn0KCi5EaWZmZXJlbmNlcyB0aGVhZCB0aCB7Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMwMDA7CgliYWNrZ3JvdW5kOiAjYWFhOwoJY29sb3I6ICMwMDA7CglwYWRkaW5nOiA0cHg7Cn0KLkRpZmZlcmVuY2VzIHRib2R5IHRoIHsKCXRleHQtYWxpZ246IHJpZ2h0OwoJYmFja2dyb3VuZDogI2NjYzsKCXdpZHRoOiA0ZW07CglwYWRkaW5nOiAxcHggMnB4OwoJYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzAwMDsKCXZlcnRpY2FsLWFsaWduOiB0b3A7Cglmb250LXNpemU6IDEzcHg7Cn0KCi5EaWZmZXJlbmNlcyB0ZCB7CglwYWRkaW5nOiAxcHggMnB4OwoJZm9udC1mYW1pbHk6IENvbnNvbGFzLCBtb25vc3BhY2U7Cglmb250LXNpemU6IDEzcHg7Cn0KLkRpZmZlcmVuY2VzU2lkZUJ5U2lkZSB0ZC5MZWZ0LAouRGlmZmVyZW5jZXNTaWRlQnlTaWRlIHRkLlJpZ2h0ewoJd2lkdGg6NDclOwp9Ci5EaWZmZXJlbmNlc1NpZGVCeVNpZGUgLkNoYW5nZUluc2VydCB0ZC5MZWZ0IHsKCWJhY2tncm91bmQ6ICNkZmQ7Cn0KCi5EaWZmZXJlbmNlc1NpZGVCeVNpZGUgLkNoYW5nZUluc2VydCB0ZC5SaWdodCB7CgliYWNrZ3JvdW5kOiAjY2ZjOwp9CgouRGlmZmVyZW5jZXNTaWRlQnlTaWRlIC5DaGFuZ2VEZWxldGUgdGQuTGVmdCB7CgliYWNrZ3JvdW5kOiAjZjg4Owp9CgouRGlmZmVyZW5jZXNTaWRlQnlTaWRlIC5DaGFuZ2VEZWxldGUgdGQuUmlnaHQgewoJYmFja2dyb3VuZDogI2ZhYTsKfQoKLkRpZmZlcmVuY2VzU2lkZUJ5U2lkZSAuQ2hhbmdlUmVwbGFjZSAuTGVmdCB7CgliYWNrZ3JvdW5kOiAjZmU5Owp9CgouRGlmZmVyZW5jZXNTaWRlQnlTaWRlIC5DaGFuZ2VSZXBsYWNlIC5SaWdodCB7CgliYWNrZ3JvdW5kOiAjZmQ4Owp9CgouRGlmZmVyZW5jZXMgaW5zLCAuRGlmZmVyZW5jZXMgZGVsIHsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLkRpZmZlcmVuY2VzU2lkZUJ5U2lkZSAuQ2hhbmdlUmVwbGFjZSBkZWx7CgliYWNrZ3JvdW5kOiNlOTk7Cn0KLkRpZmZlcmVuY2VzU2lkZUJ5U2lkZSAuQ2hhbmdlUmVwbGFjZSBpbnN7CgliYWNrZ3JvdW5kOiAjOWU5Owp9CgouRGlmZmVyZW5jZXMgLlNraXBwZWQgewoJYmFja2dyb3VuZDogI2Y3ZjdmNzsKfQoKLkRpZmZlcmVuY2VzSW5saW5lIC5DaGFuZ2VSZXBsYWNlIC5MZWZ0LAouRGlmZmVyZW5jZXNJbmxpbmUgLkNoYW5nZURlbGV0ZSAuTGVmdCB7CgliYWNrZ3JvdW5kOiAjZmRkOwp9CgouRGlmZmVyZW5jZXNJbmxpbmUgLkNoYW5nZVJlcGxhY2UgLlJpZ2h0LAouRGlmZmVyZW5jZXNJbmxpbmUgLkNoYW5nZUluc2VydCAuUmlnaHQgewoJYmFja2dyb3VuZDogI2RmZDsKfQoKLkRpZmZlcmVuY2VzSW5saW5lIC5DaGFuZ2VSZXBsYWNlIGlucyB7CgliYWNrZ3JvdW5kOiAjOWU5Owp9CgouRGlmZmVyZW5jZXNJbmxpbmUgLkNoYW5nZVJlcGxhY2UgZGVsIHsKCWJhY2tncm91bmQ6ICNlOTk7Cn0=]]></data>
	</file>
	<file>
	  <filename>/function.admin_optiontab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPgojIFdlYjogd3d3LmJsYXR0ZXJ0ZWNoLmNoCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFJldmlzaW9ucyBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwgQ1NTLAojIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gcmV2ZXJ0IHRvIGVhcmxpZXIgdmVyc2lvbnMgb2YgaXQuIAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBUT0RPOiBVc2UgRGF0ZXRpbWUgUGlja2VyIGZvciBkZWxldGVfb2xkZXJfdGhhbiBmaWVsZAoKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdyZXZpc2lvbnNfb3B0aW9ucycpKQoJcmV0dXJuOwoKJHNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ3VwZGF0ZW9wdGlvbnMnLCAkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3N0b3JlX3JldmlzaW9uc19jb3VudCcsICR0aGlzLT5DcmVhdGVJbnB1dE51bWJlcigkaWQsICdzdG9yZV9yZXZpc2lvbnNfY291bnQnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc3RvcmVfcmV2aXNpb25zX2NvdW50JywgJzAnKSwgJ21pbj0iMCIgbWF4PSIxMDAiJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2RlbGV0ZV9yZXZpc2lvbnNfd2l0aF9jb250ZW50JywgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnZGVsZXRlX3JldmlzaW9uc193aXRoX2NvbnRlbnQnLCAnMScsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWxldGVfcmV2aXNpb25zX3dpdGhfY29udGVudCcsICcwJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9kZWxldGVfYWxsX2J1dCcsICR0aGlzLT5DcmVhdGVJbnB1dE51bWJlcigkaWQsICdkZWxldGVfYWxsX2J1dCcsIDIwLCAnbWluPSIxIicpKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRfZGVsZXRlX2FsbF9idXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnZGVsZXRlYWxsYnV0c3VibWl0JywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfZGVsZXRlX29sZGVyX3RoYW4nLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2RlbGV0ZV9vbGRlcl90aGFuJywgZGF0ZSgnWS1tLWQnLCBzdHJ0b3RpbWUoJzYgbW9udGhzIGFnbycpKSwgMjAsIDEwKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0X2RlbGV0ZV9vbGRlcl90aGFuJywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2RlbGV0ZW9sZGVydGhhbnN1Ym1pdCcsICR0aGlzLT5MYW5nKCdkZWxldGUnKSkpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdvcHRpb25zc3VibWl0JywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ29wdGlvbnRhYi50cGwnKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/backend.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[alF1ZXJ5KGZ1bmN0aW9uKCQpewoJLy8gUE9QVVAgTElOS1MKCSQoJ2EucG9wdXAnKS5jbGljayhmdW5jdGlvbihlKXsKCQl3aW5kb3cub3BlbigkKHRoaXMpLmF0dHIoJ2hyZWYnKSwgJCh0aGlzKS5hdHRyKCd0aXRsZScpLCd3aWR0aD04MDAsIGhlaWdodD02MDAsc2Nyb2xsYmFycz15ZXMnKTsKCQllLnByZXZlbnREZWZhdWx0KCk7CgkJcmV0dXJuIGZhbHNlOwoJfSk7CgkvLyBEQVRFUElDS0VSIEZJRUxEUwoJJCgnLmRhdGVwaWNrZXIgaW5wdXQnKS5kYXRlcGlja2VyKHsKCQlkYXRlRm9ybWF0OiAneXktbW0tZGQnCgl9KQoJLy8gUEFHRUJBQ0sgTElOSwoJaWYodHlwZW9mIFBBR0VCQUNLX1VSTCAhPSAndW5kZWZpbmVkJykKCXsKCQkkKCdhLnBhZ2ViYWNrJykuYXR0cignaHJlZicsIFBBR0VCQUNLX1VSTCkudGV4dChQQUdFQkFDS19URVhUKQoJfQp9KTs=]]></data>
	</file>
	<file>
	  <filename>/js/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gdGFicwokbGFuZ1sncGFnZXMnXSA9ICdQYWdlcyc7CiRsYW5nWydnY2JzJ10gPSAnR2xvYmFsIENvbnRlbnQgQmxvY2tzJzsKJGxhbmdbJ3RlbXBsYXRlcyddID0gJ1RlbXBsYXRlcyc7CiRsYW5nWydjc3MnXSA9ICdDU1MnOwokbGFuZ1sncmVjeWNsZSddID0gJ1JlY3ljbGluZyc7CiRsYW5nWydvcHRpb25zJ10gPSAnT3B0aW9ucyc7CiRsYW5nWydiYWNrJ10gPSAnR28gb25lIHBhZ2UgYmFjayc7CgovLyByZXZpc2lvbnMKJGxhbmdbJ25vcmV2aXNpb25zJ10gPSAnVGhlcmUgYXJlIG5vIHJldmlzaW9ucyB5ZXQuJzsKJGxhbmdbJ25hbWUnXSA9ICdOYW1lJzsKJGxhbmdbJ3JldmlzaW9ucyddID0gJ1JldmlzaW9ucyc7CiRsYW5nWydzaG93ZGV0YWlscyddID0gJ1Nob3cgZGV0YWlscyc7CgovLyBkZXRhaWxzCiRsYW5nWydyZXZpc2lvbiddID0gJ1JldmlzaW9uJzsKJGxhbmdbJ2NyZWF0ZV9kYXRlJ10gPSAnQ2hhbmdlcyB2ZXJzaW9uIGZyb20nOwokbGFuZ1sndXNlciddID0gJ1VzZXInOwokbGFuZ1sncHJldmlldyddID0gJ1ByZXZpZXcnOwokbGFuZ1sndW5kbyddID0gJ1VuZG8nOwokbGFuZ1snY29tcGFyZSddID0gJ0NvbXBhcmUnOwokbGFuZ1snY29tcGFyZV90b29sdGlwJ10gPSAnQ29tcGFyZSB3aXRoIGN1cnJlbnQnOwokbGFuZ1snbGFzdF9hY3RpdmUnXSA9ICdMYXN0IGFjdGl2ZSB2ZXJzaW9uJzsKCi8vIGNvbXBhcmUKJGxhbmdbJ3JldmlzaW9uc19pZGVudGljYWwnXSA9ICdUaGUgcmV2aXNpb25zIGFyZSBpZGVudGljYWwuJzsKJGxhbmdbJ2NvbnRlbnRibG9jayddID0gJ0NvbnRlbnQgQmxvY2snOwoKLy8gcmVzdG9yZQokbGFuZ1sncmVzdG9yZSddID0gJ1Jlc3RvcmUgQ29udGVudCc7CgoKLy8gb3B0aW9ucwokbGFuZ1snZ2VuZXJhbF9vcHRpb25zJ10gPSAnR2VuZXJhbCBPcHRpb25zJzsKJGxhbmdbJ3N0b3JlX3JldmlzaW9uc19jb3VudCddID0gJ051bWJlciBvZiBzdG9yZWQgcmV2aXNpb25zIHBlciBjb250ZW50JzsKJGxhbmdbJ3N0b3JlX3JldmlzaW9uc191bmxpbWl0ZWQnXSA9ICdTZXQgMCBmb3IgdW5saW1pdGVkIHN0b3JhZ2UuJzsKJGxhbmdbJ2RlbGV0ZV9yZXZpc2lvbnNfd2l0aF9jb250ZW50J10gPSAnRGVsZXRlIHJldmlzaW9ucyB3aGVuIGNvbnRlbnQgaXMgZGVsZXRlZCc7CiRsYW5nWydkZWxldGVfcmV2aXNpb25zJ10gPSAnRGVsZXRlIFJldmlzaW9ucyc7CiRsYW5nWydkZWxldGVfYWxsX2J1dCddID0gJ0RlbGV0ZSBhbGwgcmV2aXNpb25zIGJ1dCB0aGUgbGF0ZXN0IFggb2YgZXZlcnkgY29udGVudCc7CiRsYW5nWydkZWxldGVfb2xkZXJfdGhhbiddID0gJ0RlbGV0ZSBhbGwgcmV2aXNpb25zIG9sZGVyIHRoYW4nOwokbGFuZ1snZGVsZXRlJ10gPSAnRGVsZXRlJzsKJGxhbmdbJ29wdGlvbnN1cGRhdGVkJ10gPSAnVGhlIG9wdGlvbnMgaGF2ZSBzdWNjZXNzZnVsbHkgYmVlbiB1cGRhdGVkLic7CiRsYW5nWydyZXZpc2lvbnNkZWxldGVkJ10gPSAnVGhlIHJldmlzaW9ucyBoYXZlIHN1Y2Nlc3NmdWxseSBiZWVuIGRlbGV0ZWQuJzsKCi8vIGdsb2JhbAokbGFuZ1snc3VibWl0J10gPSAnU3VibWl0JzsKJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbCc7CiRsYW5nWydyZXNldCddID0gJ1Jlc2V0IERlZmF1bHQnOwokbGFuZ1snY2hhbmdlc3NhdmVkJ10gPSAnWW91ciBjaGFuZ2VzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgc2F2ZWQuJzsKJGxhbmdbJ2ZpcnN0cGFnZSddID0gJyZsdDsmbHQ7JzsKJGxhbmdbJ3ByZXZwYWdlJ10gPSAnJmx0Oyc7CiRsYW5nWyduZXh0cGFnZSddID0gJyZndDsnOwokbGFuZ1snbGFzdHBhZ2UnXSA9ICcmZ3Q7Jmd0Oyc7CgovLyBtb2R1bGUKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1JldmlzaW9ucyc7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ1JldmlzaW9ucyBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwgdGVtcGxhdGVzLCBDU1MsIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gdmlldyBkaWZmIG9yIHJldmVydCB0byBhbiBlYXJsaWVyIHZlcnNpb24gb2YgaXQuJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnUmV2aXNpb25zIGhhcyBzdWNjZXNzZnVsbHkgYmVlbiBpbnN0YWxsZWQnOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1JldmlzaW9ucyBoYXMgc3VjY2Vzc2Z1bGx5IGJlZW4gdW5pbnN0YWxsZWQnOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnJzsKJGxhbmdbJ2djYiddID0gIkdsb2JhbCBDb250ZW50IEJsb2NrIjsKJGxhbmdbJ3N0eWxlc2hlZXQnXSA9ICJTdHlsZXNoZWV0IjsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAiVGVtcGxhdGUiOwokbGFuZ1snY29udGVudCddID0gIkNvbnRlbnQiOwoKLy8gcmVzdG9yZQokbGFuZ1snbXNnX3Jlc3RvcmVkJ10gPSAiU3VjZXNzZnVsIHJlc3RvcmUgcmV2aXNpb24iOwokbGFuZ1snbXNnX3Jlc3RvcmVkX3JlY3ljbGUnXSA9ICJTdWNlc3NmdWxsIHJlc3RvcmUgY29udGVudCBmcm9tIHJlY3ljbGUiOwokbGFuZ1snZXJyb3JfY29udGVudGJsb2NrcyddID0gIlRoZXJlIGlzIGFuIGVycm9yIHdpZHRoIGNvbnRlbnRibG9ja3MiOwoKLy8gbW9kdWxlIGhlbHAKJGxhbmdbJ2dlbmVyYWwnXSA9ICdHZW5lcmFsJzsKJGxhbmdbJ3Blcm1pc3Npb25zJ10gPSAnUGVybWlzc2lvbnMnOwokbGFuZ1snYWJvdXQnXSA9ICdBYm91dCc7CiRsYW5nWydoZWxwX2dlbmVyYWwnXSA9ICc8aDM+R2VuZXJhbCBJbmZvPC9oMz4KCTxwPlJldmlzaW9ucyBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwgdGVtcGxhdGVzLCBDU1MsIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gdmlldyBkaWZmIG9yIHJldmVydCB0byBhbiBlYXJsaWVyIHZlcnNpb24gb2YgaXQuPC9wPic7CiRsYW5nWydoZWxwX3Blcm1pc3Npb25zJ10gPSAnPGgzPlBlcm1pc3Npb25zPC9oMz4KCTxwPllvdSBjYW4gc3BlY2lmeSB0aGUgZm9sbG93aW5nIHBlcm1pc3Npb25zIHVuZGVyIFVzZXJzICYgR3JvdXBzID4gR3JvdXAgUGVybWlzc2lvbnM8L3A+Cgk8dWw+CgkJPGxpPlJldmlzaW9uczogVXNlPC9saT4KCQk8bGk+UmV2aXNpb25zOiBTZXQgT3B0aW9uczwvbGk+Cgk8L3VsPgoJPHA+T25jZSBhIHVzZXIgaXMgcGVybWl0dGVkIHRvIHVzZSB0aGlzIG1vZHVsZSBoZSB3aWxsIGJlIGFibGUgdG8gc2VlIHRoZSByZXZpc2lvbnMgb2YgdGhvc2UgY29udGVudHMgaGVcJ3MgYWxsb3dlZCB0byBlZGl0LiBFeGFtcGxlOiBBIHVzZXIgdGhhdCBpcyBhbGxvd2VkIHRvIGVkaXQgR2xvYmFsIENvbnRlbnQgQmxvY2tzIHdpbGwgYWxzbyBiZSBhYmxlIHRvIG1hbmFnZSBpdHMgcmV2aXNpb25zLic7CiRsYW5nWydoZWxwX2Fib3V0J10gPSAnPGgzPkFib3V0PC9oMz4KCTxwPklmIHlvdSBmaW5kIGFueSBidWdzIHBsZWFzZSBmZWVsIGZyZWUgdG8gc3VibWl0IGEgYnVnIHJlcG9ydCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL2J1Zy9saXN0LzEwMTUiIHRhcmdldD0iX2JsYW5rIj5oZXJlPC9hPiBvciBmb3IgYW55IGdvb2QgaWRlYXMgY29uc2lkZXIgc3VibWl0aW5nIGEgZmVhdHVyZSByZXF1ZXN0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvZmVhdHVyZV9yZXF1ZXN0L2xpc3QvMTAxNSIgdGFyZ2V0PSJfYmxhbmsiPmhlcmU8L2E+LjwvcD4KCTxwPk1hbnkgdGhhbmtzIHRvIEpvbmF0aGFuIFNjaG1pZCBmb3IgaGlzIHByb2dyYW1taW5nIHRoZSBiYXNpYyBvZiBSZXZpc2lvbnMuPC9wPgoJPHA+UGxlYXNlIGtlZXAgaW4gbWluZCB0aGF0IGRldmVsb3BlcnMgZG8gaGF2ZSB0aGVpciBkYWlseSBqb2JzIHdoaWNoIG1lYW5zIHRoYXQgZmVhdHVyZSByZXF1ZXN0cyBhcmUgY29uc2lkZXJlZCBhbmQgZG9uZSBhcyB0aW1lIGFsbG93cy4gSWYgeW91IG5lZWQgYSBmZWF0dXJlIHJlYWxseSBiYWRseSBjb25zaWRlciBjb250YWN0aW5nIG9uZSBvZiB0aGUgZGV2ZWxvcGVycyBmb3IgYSBzcG9uc29yZWQgZGV2ZWxvcG1lbnQuPC9wPgoJPGgzPlRlYW08L2gzPgoJPHVsPgoJCTxsaT5MdWthcyBCbGF0dGVyIChub2NrZW5mZWxsKSBsdWthcy5ibGF0dGVyQGJsYXR0ZXJ0ZWNoLmNoIDxiciAvPnd3dy5ibGF0dGVydGVjaC5jaDwvbGk+Cgk8L3VsPic7Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gdGFicwokbGFuZ1sncGFnZXMnXSA9ICdTZWl0ZW4nOwokbGFuZ1snZ2NicyddID0gJ0dsb2JhbGUgSW5oYWx0YmzDtmNrZSc7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdUZW1wbGF0ZXMnOwokbGFuZ1snY3NzJ10gPSAnQ1NTJzsKJGxhbmdbJ3JlY3ljbGUnXSA9ICdQYXBpZXJrb3JiJzsKJGxhbmdbJ29wdGlvbnMnXSA9ICdPcHRpb25lbic7CiRsYW5nWydiYWNrJ10gPSAnR2VoZSBlaW5lIFNlaXRlIHp1csO8Y2snOwoKLy8gcmV2aXNpb25zCiRsYW5nWydub3JldmlzaW9ucyddID0gJ0VzIGlzdCBrZWluZSBSZXZpc2lvbiB6dXJ6ZWl0IHZvcmhhbmRlbi4nOwokbGFuZ1snbmFtZSddID0gJ05hbWUnOwokbGFuZ1sncmV2aXNpb25zJ10gPSAnUmV2aXNpb25lbic7CiRsYW5nWydzaG93ZGV0YWlscyddID0gJ0RldGFpbHMgYW56ZWlnZW4nOwoKLy8gZGV0YWlscwokbGFuZ1sncmV2aXNpb24nXSA9ICdSZXZpc2lvbic7CiRsYW5nWydjcmVhdGVfZGF0ZSddID0gJ8OEbmRlcmUgVmVyc2lvbiB2b20nOwokbGFuZ1sndXNlciddID0gJ0JlbnV0emVyJzsKJGxhbmdbJ3ByZXZpZXcnXSA9ICdWb3JzY2hhdSc7CiRsYW5nWyd1bmRvJ10gPSAnUsO8Y2tnw6RuZ2lnIG1hY2hlbic7CiRsYW5nWydjb21wYXJlJ10gPSAnVmVyZ2xlaWNoZW4nOwokbGFuZ1snY29tcGFyZV90b29sdGlwJ10gPSAnTWl0IGRlbSBha3R1ZWxsZW4gRWludHJhZyB2ZXJnbGVpY2hlbic7CiRsYW5nWydsYXN0X2FjdGl2ZSddID0gJ0xldHplIGFrdGl2ZSBWZXJzaW9uJzsKCi8vIGNvbXBhcmUKJGxhbmdbJ3JldmlzaW9uc19pZGVudGljYWwnXSA9ICdEaWUgYmVpZGVuIFJldmlzaW9uZW4gc2luZCBpZGVudGlzY2gnOwokbGFuZ1snY29udGVudGJsb2NrJ10gPSAnQ29udGVudCBCbG9jayc7CgovLyByZXN0b3JlCiRsYW5nWydyZXN0b3JlJ10gPSAnSW5oYWx0IHdpZWRlcmhlcnN0ZWxsZW4nOwoKCi8vIG9wdGlvbnMKJGxhbmdbJ2dlbmVyYWxfb3B0aW9ucyddID0gJ0FsbGdlbWVpbmUgRWluc3RlbGx1bmdlbic7CiRsYW5nWydzdG9yZV9yZXZpc2lvbnNfY291bnQnXSA9ICdBbnphaGwgZGVyIGdlc3BlaWNoZXJ0ZW4gUmV2aXNpb25lbiBwcm8gSW5oYWx0JzsKJGxhbmdbJ3N0b3JlX3JldmlzaW9uc191bmxpbWl0ZWQnXSA9ICdTZXR6ZSAwIGbDvHIgdW5saW1pdGllcnRlcyBzcGVpY2hlcm4uJzsKJGxhbmdbJ2RlbGV0ZV9yZXZpc2lvbnNfd2l0aF9jb250ZW50J10gPSAnTMO2c2NoZSBSZXZpc2lvbiB3ZW5uIEluaGFsdCBnZWzDtnNjaHQgd2lyZCc7CiRsYW5nWydkZWxldGVfcmV2aXNpb25zJ10gPSAnTMO2c2NoZSBSZXZpc2lvbmVuJzsKJGxhbmdbJ2RlbGV0ZV9hbGxfYnV0J10gPSAnTMO2c2NoZSBhbGxlIFJldmlzaW9uZW4gYmlzIGF1ZiBkaWUgbGV0enRlbiBYIHZvbiBhbGxlbiBJbmhhbHRlbic7CiRsYW5nWydkZWxldGVfb2xkZXJfdGhhbiddID0gJ0zDtnNjaGUgYWxsZSBSZXZpc2lvbmVuIGRpZSDDhGx0ZXIgc2luZCBhbHMnOwokbGFuZ1snZGVsZXRlJ10gPSAnTMO2c2NoZW4nOwokbGFuZ1snb3B0aW9uc3VwZGF0ZWQnXSA9ICdEaWUgRWluc3RlbGx1bmdlbiB3dXJkZW4gYWt0dWFsaXNpZXJ0Lic7CiRsYW5nWydyZXZpc2lvbnNkZWxldGVkJ10gPSAnRGllIFJldmlzaW9uZW4gd3VyZGVuIGVyZm9sZ3JlaWNoIGdlbMO2c2NodC4nOwoKLy8gZ2xvYmFsCiRsYW5nWydzdWJtaXQnXSA9ICdTcGVpY2hlcm4nOwokbGFuZ1snY2FuY2VsJ10gPSAnQWJicmVjaGVuJzsKJGxhbmdbJ3Jlc2V0J10gPSAnQXVmIFN0YW5kYXJkZWluc3RlbGx1bmdlbiB6dXLDvGNrc2V0emVuJzsKJGxhbmdbJ2NoYW5nZXNzYXZlZCddID0gJ0RpZSDDhG5kZXJ1bmdlbiB3dXJkZW4gZXJmb2xncmVpY2ggZ2VzcGVpY2hlcnQuJzsKJGxhbmdbJ2ZpcnN0cGFnZSddID0gJyZsdDsmbHQ7JzsKJGxhbmdbJ3ByZXZwYWdlJ10gPSAnJmx0Oyc7CiRsYW5nWyduZXh0cGFnZSddID0gJyZndDsnOwokbGFuZ1snbGFzdHBhZ2UnXSA9ICcmZ3Q7Jmd0Oyc7CgovLyBtb2R1bGUKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1JldmlzaW9ucyc7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ1JldmlzaW9ucyBzcGVpY2hlcnQgw4RuZGVydW5nZW4gaW4gSW5oYWx0LCBUZW1wbGF0ZSwgQ1NTLCBHQ0JzIHVuZCBzY2hhZmZ0IGRlbSBXZWJkZXZlbG9wZXIgZGllIE3DtmdsaWNoa2VpdCBJbmhhbHRlIG1pdCDDpGx0ZXJlbiBWZXJzaW9uZW4genUgdmVyZ2xlaWNoZW4gb2RlciB3aWVkZXJoZXJ6dXN0ZWxsZW4nOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdSZXZpc2lvbnMgd3VyZGUgZXJmb2xncmVpY2ggaW5zdGFsbGllcnQnOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1JldmlzaW9ucyB3dXJkZSBlcmZvbGdyZWljaCBkZWluc3RhbGxpZXJ0JzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJyc7CiRsYW5nWydnY2InXSA9ICJHbG9iYWxlIEluaGFsdHNibMO2Y2tlIjsKJGxhbmdbJ3N0eWxlc2hlZXQnXSA9ICJTdHlsZXNoZWV0IjsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAiVGVtcGxhdGUiOwokbGFuZ1snY29udGVudCddID0gIkluaGFsdGUiOwoKLy8gcmVzdG9yZQokbGFuZ1snbXNnX3Jlc3RvcmVkJ10gPSAiRGllIFJldmlzaW9uIHd1cmRlIGVyZm9sZ3JlaWNoIHdpZWRlcmhlcmdlc3RlbGx0IjsKJGxhbmdbJ21zZ19yZXN0b3JlZF9yZWN5Y2xlJ10gPSAiRGVyIEluaGFsdCB3dXJkZSBlcmZvbGdyZWljaCBhdXMgZGVtIFBhcGllcmtvcmIgd2llZGVyaGVyZ2VzdGVsbHQiOwokbGFuZ1snZXJyb3JfY29udGVudGJsb2NrcyddID0gIkVzIGdpYnQgZWluZW4gRmVobGVyIG1pdCBkZW4gSW5oYWx0YmzDtmNrZW4iOwoKLy8gbW9kdWxlIGhlbHAKJGxhbmdbJ2dlbmVyYWwnXSA9ICdBbGxnZW1laW4nOwokbGFuZ1sncGVybWlzc2lvbnMnXSA9ICdadWdyaWZmYmVyZWNodGlndW5nZW4nOwokbGFuZ1snYWJvdXQnXSA9ICfDnGJlcic7CiRsYW5nWydoZWxwX2dlbmVyYWwnXSA9ICc8aDM+QWxsZ2VtZWluZSBJbmZvcm1hdGlvbmVuPC9oMz4KCTxwPlJldmlzaW9ucyBzcGVpY2hlcnQgw4RuZGVydW5nZW4gdm9uIFNlaXRlbiwgVGVtcGxhdGVzLCBDU1MsIEdsb2JhbGUgSW5haGx0c2Jsw7Zja2UgdW5kIGVybcO2Z2xpY2h0IGRhbWl0IGRlbSBXZWIgRGV2ZWxvcGVyIGVpbmVuIEluaGFsdCBtaXQgZWluZXIgZnLDvGhlcmVuIFZlcnNpb24genUgdmVyZ2xlaWNoZW4gb2RlciBhdWNoIHdpZWRlcmhlcnp1c3RlbGxlbjwvcD4nOwokbGFuZ1snaGVscF9wZXJtaXNzaW9ucyddID0gJzxoMz5adWdyaWZmYmVyZWNodGlndW5nZW48L2gzPgoJPHA+Rm9sZ2VuZGUgMiBadWdyaWZmc2JlcmVjaHRpZ3VuZ2VuIGvDtm5uZW4gdW50ZXIgQmVudXR6ZXJ2ZXJ3YWx0dW5nID4gR3J1cHBlbmJlcmVjaHRpZ3VuZ2VuIGdlc2V0enQgd2VyZGVuPC9wPgoJPHVsPgoJCTxsaT5SZXZpc2lvbnM6IFVzZTwvbGk+CgkJPGxpPlJldmlzaW9uczogU2V0IE9wdGlvbnM8L2xpPgoJPC91bD4KCTxwPkVpbiBCZW51dHplciBkZXIgYmVyZWNodGlndCBpc3QgZGFzIE1vZHVsIHp1IHNlaGVuLCBzaWVodCBhbGxlIFJldmlzaW9ucyBkZXIgSW5oYWx0ZSB6dSBkZW5lbiBlciBlaW5lIEJlcmVjaHRpZ3VuZyBiZXNpdHp0Li4gQmVpc3BpZWw6IEVpbiBCZW51dHplciBkZXIgR2xvYmFsZSBJbmhhbHRibMO2Y2tlIGJlYXJiZWl0ZW4gZGFyZiwgc2llaHQgZGllc2UgYXVjaCBpbiBSZXZpc2lvbnMuJzsKJGxhbmdbJ2hlbHBfYWJvdXQnXSA9ICc8aDM+w5xiZXI8L2gzPgoJPHA+V2VubiBTaWUgZWluZW4gQnVnIGluIFJldmlzaW9ucyBmaW5kZW4sIG1lbGRlbiBTaWUgZGllc2VuIGJpdHRlIG1pdCBlaW5lbSBCdWcgUmVwb3J0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvYnVnL2xpc3QvMTAxNSIgdGFyZ2V0PSJfYmxhbmsiPmhlcmU8L2E+IG9kZXIgZsO8ciBlaW5lIGd1dGUgSWRlZSBzY2hyZWliZW4gU2llIGVpbmVuIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvZmVhdHVyZV9yZXF1ZXN0L2xpc3QvMTAxNSIgdGFyZ2V0PSJfYmxhbmsiPkZlYXR1cmUgUmVxdWVzdDwvYT4uIFNwZW5kZW4gc2luZCBqZWRlcnplaXQgd2lsbGtvbW1lbi48L3A+Cgk8cD5FaW5lbiBEYW5rIGdlaHQgYW4gSm9uYXRoYW4gU2NobWlkIGbDvHIgc2VpbmUgR3J1bmRsYWdlbnByb2dyYW1taWVydW5nIGRlcyBNb2R1bHMuPC9wPgoJPHA+Qml0dGUgYmVhY2h0ZW4gU2llIGRhcyBkZXIgRW50d2lja2xlciBkaWVzZXMgUHJvamVrdCBpbiBzZWluZXIgRnJlaXplaXQgbmViZW4gc2VpbmVtIEpvYiByZWFsaXNpZXJ0LiBGZWF0dXJlIFJlcXVlc3Qgd2VyZGVuIHNvbWl0IGVpbmdlYmF1dCB3ZW5uIFplaXQgdW5kIE11c2UgZGFmw7xyIHZvcmhhbmRlbiBpc3QuIFdlbm4gU2llIGVpbiBGZWF0dXJlIFJlcXVlc3QgdW5iZWRpbmd0IGluIGvDvHJ6ZSBicmF1Y2hlbiwgbmVobWVuIHNpZSBtaXQgTHVrYXMgQmxhdHRlciA8bHVrYXMuYmxhdHRlckBibGF0dGVydGVjaC5jaD4gS29udGFrdCBhdWYgdW5kIHNwb25zZXJlbiBTaWUgZGllIEVudHdpY2tsdW5nIElocmVyIElkZWUuPC9wPgoJPGgzPkVudHdpY2tsZXI8L2gzPgoJPHVsPgoJCTxsaT5MdWthcyBCbGF0dGVyIChub2NrZW5mZWxsKSBsdWthcy5ibGF0dGVyQGJsYXR0ZXJ0ZWNoLmNoIDxiciAvPnd3dy5ibGF0dGVydGVjaC5jaDwvbGk+Cgk8L3VsPic7Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.Diff.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIERpZmYKICoKICogQSBjb21wcmVoZW5zaXZlIGxpYnJhcnkgZm9yIGdlbmVyYXRpbmcgZGlmZmVyZW5jZXMgYmV0d2VlbiB0d28gc3RyaW5ncwogKiBpbiBtdWx0aXBsZSBmb3JtYXRzICh1bmlmaWVkLCBzaWRlIGJ5IHNpZGUgSFRNTCBldGMpCiAqCiAqIFBIUCB2ZXJzaW9uIDUKICoKICogQ29weXJpZ2h0IChjKSAyMDA5IENocmlzIEJvdWx0b24gPGNocmlzLmJvdWx0b25AaW50ZXJzcGlyZS5jb20+CiAqIAogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKiAKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IAogKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKICoKICogIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAogKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogKiAgLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAqICAtIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIENocmlzIEJvdWx0b24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIAogKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgCiAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgCiAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgCiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIAogKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgCiAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgCiAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIAogKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgCiAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIAogKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSAKICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgCiAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogKgogKiBAcGFja2FnZSBEaWZmCiAqIEBhdXRob3IgQ2hyaXMgQm91bHRvbiA8Y2hyaXMuYm91bHRvbkBpbnRlcnNwaXJlLmNvbT4KICogQGNvcHlyaWdodCAoYykgMjAwOSBDaHJpcyBCb3VsdG9uCiAqIEBsaWNlbnNlIE5ldyBCU0QgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocAogKiBAdmVyc2lvbiAxLjEKICogQGxpbmsgaHR0cDovL2dpdGh1Yi5jb20vY2hyaXNib3VsdG9uL3BocC1kaWZmCiAqLwoKY2xhc3MgRGlmZgp7CgkvKioKCSAqIEB2YXIgYXJyYXkgVGhlICJvbGQiIHNlcXVlbmNlIHRvIHVzZSBhcyB0aGUgYmFzaXMgZm9yIHRoZSBjb21wYXJpc29uLgoJICovCglwcml2YXRlICRhID0gbnVsbDsKCgkvKioKCSAqIEB2YXIgYXJyYXkgVGhlICJuZXciIHNlcXVlbmNlIHRvIGdlbmVyYXRlIHRoZSBjaGFuZ2VzIGZvci4KCSAqLwoJcHJpdmF0ZSAkYiA9IG51bGw7CgoJLyoqCgkgKiBAdmFyIGFycmF5IEFycmF5IGNvbnRhaW5pbmcgdGhlIGdlbmVyYXRlZCBvcGNvZGVzIGZvciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdHdvIGl0ZW1zLgoJICovCglwcml2YXRlICRncm91cGVkQ29kZXMgPSBudWxsOwoKCS8qKgoJICogQHZhciBhcnJheSBBc3NvY2lhdGl2ZSBhcnJheSBvZiB0aGUgZGVmYXVsdCBvcHRpb25zIGF2YWlsYWJsZSBmb3IgdGhlIGRpZmYgY2xhc3MgYW5kIHRoZWlyIGRlZmF1bHQgdmFsdWUuCgkgKi8KCXByaXZhdGUgJGRlZmF1bHRPcHRpb25zID0gYXJyYXkoCgkJJ2NvbnRleHQnID0+IDMsCgkJJ2lnbm9yZU5ld0xpbmVzJyA9PiBmYWxzZSwKCQknaWdub3JlV2hpdGVzcGFjZScgPT4gZmFsc2UsCgkJJ2lnbm9yZUNhc2UnID0+IGZhbHNlCgkpOwoKCS8qKgoJICogQHZhciBhcnJheSBBcnJheSBvZiB0aGUgb3B0aW9ucyB0aGF0IGhhdmUgYmVlbiBhcHBsaWVkIGZvciBnZW5lcmF0aW5nIHRoZSBkaWZmLgoJICovCglwcml2YXRlICRvcHRpb25zID0gYXJyYXkoKTsKCgkvKioKCSAqIFRoZSBjb25zdHJ1Y3Rvci4KCSAqCgkgKiBAcGFyYW0gYXJyYXkgJGEgQXJyYXkgY29udGFpbmluZyB0aGUgbGluZXMgb2YgdGhlIGZpcnN0IHN0cmluZyB0byBjb21wYXJlLgoJICogQHBhcmFtIGFycmF5ICRiIEFycmF5IGNvbnRhaW5pbmcgdGhlIGxpbmVzIGZvciB0aGUgc2Vjb25kIHN0cmluZyB0byBjb21wYXJlLgoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGEsICRiLCAkb3B0aW9ucz1hcnJheSgpKQoJewoJCSR0aGlzLT5hID0gJGE7CgkJJHRoaXMtPmIgPSAkYjsKCgkJJHRoaXMtPm9wdGlvbnMgPSBhcnJheV9tZXJnZSgkdGhpcy0+ZGVmYXVsdE9wdGlvbnMsICRvcHRpb25zKTsKCX0KCgkvKioKCSAqIFJlbmRlciBhIGRpZmYgdXNpbmcgdGhlIHN1cHBsaWVkIHJlbmRlcmluZyBjbGFzcyBhbmQgcmV0dXJuIGl0LgoJICoKCSAqIEBwYXJhbSBvYmplY3QgJHJlbmRlcmVyIEFuIGluc3RhbmNlIG9mIHRoZSByZW5kZXJpbmcgb2JqZWN0IHRvIHVzZSBmb3IgZ2VuZXJhdGluZyB0aGUgZGlmZi4KCSAqIEByZXR1cm4gbWl4ZWQgVGhlIGdlbmVyYXRlZCBkaWZmLiBFeGFjdCByZXR1cm4gdmFsdWUgZGVwZW5kcyBvbiB0aGUgcmVuZGVyZWQuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiByZW5kZXIoRGlmZl9SZW5kZXJlcl9BYnN0cmFjdCAkcmVuZGVyZXIpCgl7CgkJJHJlbmRlcmVyLT5kaWZmID0gJHRoaXM7CgkJcmV0dXJuICRyZW5kZXJlci0+cmVuZGVyKCk7Cgl9CgoJLyoqCgkgKiBHZXQgYSByYW5nZSBvZiBsaW5lcyBmcm9tICRzdGFydCB0byAkZW5kIGZyb20gdGhlIGZpcnN0IGNvbXBhcmlzb24gc3RyaW5nCgkgKiBhbmQgcmV0dXJuIHRoZW0gYXMgYW4gYXJyYXkuIElmIG5vIHZhbHVlcyBhcmUgc3VwcGxpZWQsIHRoZSBlbnRpcmUgc3RyaW5nCgkgKiBpcyByZXR1cm5lZC4gSXQncyBhbHNvIHBvc3NpYmxlIHRvIHNwZWNpZnkganVzdCBvbmUgbGluZSB0byByZXR1cm4gb25seQoJICogdGhhdCBsaW5lLgoJICoKCSAqIEBwYXJhbSBpbnQgJHN0YXJ0IFRoZSBzdGFydGluZyBudW1iZXIuCgkgKiBAcGFyYW0gaW50ICRlbmQgVGhlIGVuZGluZyBudW1iZXIuIElmIG5vdCBzdXBwbGllZCwgb25seSB0aGUgaXRlbSBpbiAkc3RhcnQgd2lsbCBiZSByZXR1cm5lZC4KCSAqIEByZXR1cm4gYXJyYXkgQXJyYXkgb2YgYWxsIG9mIHRoZSBsaW5lcyBiZXR3ZWVuIHRoZSBzcGVjaWZpZWQgcmFuZ2UuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRBKCRzdGFydD0wLCAkZW5kPW51bGwpCgl7CgkJaWYoJHN0YXJ0ID09IDAgJiYgJGVuZCA9PT0gbnVsbCkgewoJCQlyZXR1cm4gJHRoaXMtPmE7CgkJfQoKCQlpZigkZW5kID09PSBudWxsKSB7CgkJCSRsZW5ndGggPSAxOwoJCX0KCQllbHNlIHsKCQkJJGxlbmd0aCA9ICRlbmQgLSAkc3RhcnQ7CgkJfQoKCQlyZXR1cm4gYXJyYXlfc2xpY2UoJHRoaXMtPmEsICRzdGFydCwgJGxlbmd0aCk7CgoJfQoKCS8qKgoJICogR2V0IGEgcmFuZ2Ugb2YgbGluZXMgZnJvbSAkc3RhcnQgdG8gJGVuZCBmcm9tIHRoZSBzZWNvbmQgY29tcGFyaXNvbiBzdHJpbmcKCSAqIGFuZCByZXR1cm4gdGhlbSBhcyBhbiBhcnJheS4gSWYgbm8gdmFsdWVzIGFyZSBzdXBwbGllZCwgdGhlIGVudGlyZSBzdHJpbmcKCSAqIGlzIHJldHVybmVkLiBJdCdzIGFsc28gcG9zc2libGUgdG8gc3BlY2lmeSBqdXN0IG9uZSBsaW5lIHRvIHJldHVybiBvbmx5CgkgKiB0aGF0IGxpbmUuCgkgKgoJICogQHBhcmFtIGludCAkc3RhcnQgVGhlIHN0YXJ0aW5nIG51bWJlci4KCSAqIEBwYXJhbSBpbnQgJGVuZCBUaGUgZW5kaW5nIG51bWJlci4gSWYgbm90IHN1cHBsaWVkLCBvbmx5IHRoZSBpdGVtIGluICRzdGFydCB3aWxsIGJlIHJldHVybmVkLgoJICogQHJldHVybiBhcnJheSBBcnJheSBvZiBhbGwgb2YgdGhlIGxpbmVzIGJldHdlZW4gdGhlIHNwZWNpZmllZCByYW5nZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldEIoJHN0YXJ0PTAsICRlbmQ9bnVsbCkKCXsKCQlpZigkc3RhcnQgPT0gMCAmJiAkZW5kID09PSBudWxsKSB7CgkJCXJldHVybiAkdGhpcy0+YjsKCQl9CgoJCWlmKCRlbmQgPT09IG51bGwpIHsKCQkJJGxlbmd0aCA9IDE7CgkJfQoJCWVsc2UgewoJCQkkbGVuZ3RoID0gJGVuZCAtICRzdGFydDsKCQl9CgoJCXJldHVybiBhcnJheV9zbGljZSgkdGhpcy0+YiwgJHN0YXJ0LCAkbGVuZ3RoKTsKCX0KCgkvKioKCSAqIEdlbmVyYXRlIGEgbGlzdCBvZiB0aGUgY29tcGlsZWQgYW5kIGdyb3VwZWQgb3Bjb2RlcyBmb3IgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlCgkgKiB0d28gc3RyaW5ncy4gR2VuZXJhbGx5IGNhbGxlZCBieSB0aGUgcmVuZGVyZXIsIHRoaXMgY2xhc3MgaW5zdGFudGlhdGVzIHRoZSBzZXF1ZW5jZQoJICogbWF0Y2hlciBhbmQgcGVyZm9ybXMgdGhlIGFjdHVhbCBkaWZmIGdlbmVyYXRpb24gYW5kIHJldHVybiBhbiBhcnJheSBvZiB0aGUgb3Bjb2RlcwoJICogZm9yIGl0LiBPbmNlIGdlbmVyYXRlZCwgdGhlIHJlc3VsdHMgYXJlIGNhY2hlZCBpbiB0aGUgZGlmZiBjbGFzcyBpbnN0YW5jZS4KCSAqCgkgKiBAcmV0dXJuIGFycmF5IEFycmF5IG9mIHRoZSBncm91cGVkIG9wY29kZXMgZm9yIHRoZSBnZW5lcmF0ZWQgZGlmZi4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldEdyb3VwZWRPcGNvZGVzKCkKCXsKCQlpZighaXNfbnVsbCgkdGhpcy0+Z3JvdXBlZENvZGVzKSkgewoJCQlyZXR1cm4gJHRoaXMtPmdyb3VwZWRDb2RlczsKCQl9CgoJCXJlcXVpcmVfb25jZSBkaXJuYW1lKF9fRklMRV9fKS4nL0RpZmYvU2VxdWVuY2VNYXRjaGVyLnBocCc7CgkJJHNlcXVlbmNlTWF0Y2hlciA9IG5ldyBEaWZmX1NlcXVlbmNlTWF0Y2hlcigkdGhpcy0+YSwgJHRoaXMtPmIsIG51bGwsICR0aGlzLT5vcHRpb25zKTsKCQkkdGhpcy0+Z3JvdXBlZENvZGVzID0gJHNlcXVlbmNlTWF0Y2hlci0+Z2V0R3JvdXBlZE9wY29kZXMoKTsKCQlyZXR1cm4gJHRoaXMtPmdyb3VwZWRDb2RlczsKCX0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.RevisionsUtils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogSm9uYXRoYW4gU2NobWlkLCA8aGlAam9uYXRoYW5zY2htaWQuZGU+CiMgV2ViOiB3d3cuam9uYXRoYW5zY2htaWQuZGUKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgUmV2aXNpb25zIGlzIGEgQ01TIE1hZGUgU2ltcGxlIG1vZHVsZSB0aGF0IGxvZ3MgY2hhbmdlcyBpbiBjb250ZW50LCBDU1MsCiMgR0NCcyBhbmQgZW5hYmxlcyB0aGUgd2ViIGRldmVsb3BlciB0byByZXZlcnQgdG8gZWFybGllciB2ZXJzaW9ucyBvZiBpdC4gCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmNsYXNzIFJldmlzaW9uc1V0aWxzIHsKCglwcm90ZWN0ZWQgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7fQoKCXN0YXRpYyBmaW5hbCBwdWJsaWMgZnVuY3Rpb24gJmFycmF5X3RvX29iamVjdCgkYXJyYXkpCgl7CgkJJG9iaiA9IG5ldyBTdGRDbGFzcygpOwoJCWZvcmVhY2goJGFycmF5IGFzICRrZXk9PiR2YWx1ZSkgewoJCQoJCQkkb2JqLT4ka2V5ID0gJHZhbHVlOwoJCX0KCQkKCQlyZXR1cm4gJG9iajsKCX0KCglzdGF0aWMgZmluYWwgcHVibGljIGZ1bmN0aW9uIGFycmF5X2luc2VydCgmJHNyYywgJHBvcywgJGlucywgJHJlcD0wKQoJeyAKCQlhcnJheV9zcGxpY2UoJHNyYywgJHBvcywgJHJlcCwgJGlucyk7IAoJCXJldHVybiB0cnVlOwoJfQoKCXN0YXRpYyBmaW5hbCBwdWJsaWMgZnVuY3Rpb24gQ3JlYXRlSW5wdXROdW1iZXIoJGlkLCAkbmFtZSwgJHZhbHVlPScnLCAkYWRkdHRleHQ9JycpCgl7CgkJJHZhbHVlID0gY21zX2h0bWxlbnRpdGllcygkdmFsdWUpOwoJCSRpZCA9IGNtc19odG1sZW50aXRpZXMoJGlkKTsKCQkkbmFtZSA9IGNtc19odG1sZW50aXRpZXMoJG5hbWUpOwoKCQkkdmFsdWUgPSBzdHJfcmVwbGFjZSgnIicsICcmcXVvdDsnLCAkdmFsdWUpOwoKCQkkdGV4dCA9ICc8aW5wdXQgdHlwZT0ibnVtYmVyIiBjbGFzcz0iY21zX251bWJlcmZpZWxkIiBuYW1lPSInLiRpZC4kbmFtZS4nIiBpZD0iJy4kaWQuJG5hbWUuJyIgdmFsdWU9IicuJHZhbHVlLiciJzsKCQlpZiAoJGFkZHR0ZXh0ICE9ICcnKQoJCXsKCQkJJHRleHQgLj0gJyAnIC4gJGFkZHR0ZXh0OwoJCX0KCQkkdGV4dCAuPSAiIC8+XG4iOwoJCXJldHVybiAkdGV4dDsKCX0KfQoKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/Diff/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/Diff/Renderer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/Diff/Renderer/Abstract.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEFic3RyYWN0IGNsYXNzIGZvciBkaWZmIHJlbmRlcmVycyBpbiBQSFAgRGlmZkxpYi4KICoKICogUEhQIHZlcnNpb24gNQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ2hyaXMgQm91bHRvbiA8Y2hyaXMuYm91bHRvbkBpbnRlcnNwaXJlLmNvbT4KICogCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqIAogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgCiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgogKgogKiAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgogKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICogIC0gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgQ2hyaXMgQm91bHRvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgCiAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSAKICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAqCiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiAKICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSAKICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgCiAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSAKICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiAKICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgCiAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gCiAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIAogKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSAKICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAqCiAqIEBwYWNrYWdlIERpZmZMaWIKICogQGF1dGhvciBDaHJpcyBCb3VsdG9uIDxjaHJpcy5ib3VsdG9uQGludGVyc3BpcmUuY29tPgogKiBAY29weXJpZ2h0IChjKSAyMDA5IENocmlzIEJvdWx0b24KICogQGxpY2Vuc2UgTmV3IEJTRCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwCiAqIEB2ZXJzaW9uIDEuMQogKiBAbGluayBodHRwOi8vZ2l0aHViLmNvbS9jaHJpc2JvdWx0b24vcGhwLWRpZmYKICovCgphYnN0cmFjdCBjbGFzcyBEaWZmX1JlbmRlcmVyX0Fic3RyYWN0CnsKCS8qKgoJICogQHZhciBvYmplY3QgSW5zdGFuY2Ugb2YgdGhlIGRpZmYgY2xhc3MgdGhhdCB0aGlzIHJlbmRlcmVyIGlzIGdlbmVyYXRpbmcgdGhlIHJlbmRlcmVkIGRpZmYgZm9yLgoJICovCglwdWJsaWMgJGRpZmY7CgoJLyoqCgkgKiBAdmFyIGFycmF5IEFycmF5IG9mIHRoZSBkZWZhdWx0IG9wdGlvbnMgdGhhdCBhcHBseSB0byB0aGlzIHJlbmRlcmVyLgoJICovCglwcm90ZWN0ZWQgJGRlZmF1bHRPcHRpb25zID0gYXJyYXkoKTsKCgkvKioKCSAqIEB2YXIgYXJyYXkgQXJyYXkgY29udGFpbmluZyB0aGUgdXNlciBhcHBsaWVkIGFuZCBtZXJnZWQgZGVmYXVsdCBvcHRpb25zIGZvciB0aGUgcmVuZGVyZXIuCgkgKi8KCXByb3RlY3RlZCAkb3B0aW9ucyA9IGFycmF5KCk7CgoJLyoqCgkgKiBUaGUgY29uc3RydWN0b3IuIEluc3RhbnRpYXRlcyB0aGUgcmVuZGVyaW5nIGVuZ2luZSBhbmQgaWYgb3B0aW9ucyBhcmUgcGFzc2VkLAoJICogc2V0cyB0aGUgb3B0aW9ucyBmb3IgdGhlIHJlbmRlcmVyLgoJICoKCSAqIEBwYXJhbSBhcnJheSAkb3B0aW9ucyBPcHRpb25hbGx5LCBhbiBhcnJheSBvZiB0aGUgb3B0aW9ucyBmb3IgdGhlIHJlbmRlcmVyLgoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJG9wdGlvbnMgPSBhcnJheSgpKQoJewoJCSR0aGlzLT5zZXRPcHRpb25zKCRvcHRpb25zKTsKCX0KCgkvKioKCSAqIFNldCB0aGUgb3B0aW9ucyBvZiB0aGUgcmVuZGVyZXIgdG8gdGhvc2Ugc3VwcGxpZWQgaW4gdGhlIHBhc3NlZCBpbiBhcnJheS4KCSAqIE9wdGlvbnMgYXJlIG1lcmdlZCB3aXRoIHRoZSBkZWZhdWx0IHRvIGVuc3VyZSB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgbWlzc2luZwoJICogb3B0aW9ucy4KCSAqCgkgKiBAcGFyYW0gYXJyYXkgJG9wdGlvbnMgQXJyYXkgb2Ygb3B0aW9ucyB0byBzZXQuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzZXRPcHRpb25zKGFycmF5ICRvcHRpb25zKQoJewoJCSR0aGlzLT5vcHRpb25zID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmRlZmF1bHRPcHRpb25zLCAkb3B0aW9ucyk7Cgl9Cn0=]]></data>
	</file>
	<file>
	  <filename>/lib/Diff/Renderer/Array.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEJhc2UgcmVuZGVyZXIgZm9yIHJlbmRlcmluZyBIVE1MIGJhc2VkIGRpZmZzIGZvciBQSFAgRGlmZkxpYi4KICoKICogUEhQIHZlcnNpb24gNQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ2hyaXMgQm91bHRvbiA8Y2hyaXMuYm91bHRvbkBpbnRlcnNwaXJlLmNvbT4KICogCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqIAogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgCiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgogKgogKiAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgogKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICogIC0gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgQ2hyaXMgQm91bHRvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgCiAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSAKICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAqCiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiAKICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSAKICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgCiAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSAKICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiAKICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgCiAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gCiAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIAogKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSAKICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAqCiAqIEBwYWNrYWdlIERpZmZMaWIKICogQGF1dGhvciBDaHJpcyBCb3VsdG9uIDxjaHJpcy5ib3VsdG9uQGludGVyc3BpcmUuY29tPgogKiBAY29weXJpZ2h0IChjKSAyMDA5IENocmlzIEJvdWx0b24KICogQGxpY2Vuc2UgTmV3IEJTRCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwCiAqIEB2ZXJzaW9uIDEuMQogKiBAbGluayBodHRwOi8vZ2l0aHViLmNvbS9jaHJpc2JvdWx0b24vcGhwLWRpZmYKICovCgpyZXF1aXJlX29uY2UgZGlybmFtZShfX0ZJTEVfXykuJy9BYnN0cmFjdC5waHAnOwoKY2xhc3MgRGlmZl9SZW5kZXJlcl9IdG1sX0FycmF5IGV4dGVuZHMgRGlmZl9SZW5kZXJlcl9BYnN0cmFjdAp7CgkvKioKCSAqIEB2YXIgYXJyYXkgQXJyYXkgb2YgdGhlIGRlZmF1bHQgb3B0aW9ucyB0aGF0IGFwcGx5IHRvIHRoaXMgcmVuZGVyZXIuCgkgKi8KCXByb3RlY3RlZCAkZGVmYXVsdE9wdGlvbnMgPSBhcnJheSgKCQkndGFiU2l6ZScgPT4gNAoJKTsKCgkvKioKCSAqIFJlbmRlciBhbmQgcmV0dXJuIGFuIGFycmF5IHN0cnVjdHVyZSBzdWl0YWJsZSBmb3IgZ2VuZXJhdGluZyBIVE1MCgkgKiBiYXNlZCBkaWZmZXJlbmNlcy4gR2VuZXJhbGx5IGNhbGxlZCBieSBzdWJjbGFzc2VzIHRoYXQgZ2VuZXJhdGUgYQoJICogSFRNTCBiYXNlZCBkaWZmIGFuZCByZXR1cm4gYW4gYXJyYXkgb2YgdGhlIGNoYW5nZXMgdG8gc2hvdyBpbiB0aGUgZGlmZi4KCSAqCgkgKiBAcmV0dXJuIGFycmF5IEFuIGFycmF5IG9mIHRoZSBnZW5lcmF0ZWQgY2hhbmNlcywgc3VpdGFibGUgZm9yIHByZXNlbnRhdGlvbiBpbiBIVE1MLgoJICovCglwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKCkKCXsKCQkvLyBBcyB3ZSdsbCBiZSBtb2RpZnlpbmcgYSAmIGIgdG8gaW5jbHVkZSBvdXIgY2hhbmdlIG1hcmtlcnMsCgkJLy8gd2UgbmVlZCB0byBnZXQgdGhlIGNvbnRlbnRzIGFuZCBzdG9yZSB0aGVtIGhlcmUuIFRoYXQgd2F5CgkJLy8gd2UncmUgbm90IGdvaW5nIHRvIGRlc3Ryb3kgdGhlIG9yaWdpbmFsIGRhdGEKCQkkYSA9ICR0aGlzLT5kaWZmLT5nZXRBKCk7CgkJJGIgPSAkdGhpcy0+ZGlmZi0+Z2V0QigpOwoKCQkkY2hhbmdlcyA9IGFycmF5KCk7CgkJJG9wQ29kZXMgPSAkdGhpcy0+ZGlmZi0+Z2V0R3JvdXBlZE9wY29kZXMoKTsKCQlmb3JlYWNoKCRvcENvZGVzIGFzICRncm91cCkgewoJCQkkYmxvY2tzID0gYXJyYXkoKTsKCQkJJGxhc3RUYWcgPSBudWxsOwoJCQkkbGFzdEJsb2NrID0gMDsKCQkJZm9yZWFjaCgkZ3JvdXAgYXMgJGNvZGUpIHsKCQkJCWxpc3QoJHRhZywgJGkxLCAkaTIsICRqMSwgJGoyKSA9ICRjb2RlOwoKCQkJCWlmKCR0YWcgPT0gJ3JlcGxhY2UnICYmICRpMiAtICRpMSA9PSAkajIgLSAkajEpIHsKCQkJCQlmb3IoJGkgPSAwOyAkaSA8ICgkaTIgLSAkaTEpOyArKyRpKSB7CgkJCQkJCSRmcm9tTGluZSA9ICRhWyRpMSArICRpXTsKCQkJCQkJJHRvTGluZSA9ICRiWyRqMSArICRpXTsKCgkJCQkJCWxpc3QoJHN0YXJ0LCAkZW5kKSA9ICR0aGlzLT5nZXRDaGFuZ2VFeHRlbnQoJGZyb21MaW5lLCAkdG9MaW5lKTsKCQkJCQkJaWYoJHN0YXJ0ICE9IDAgfHwgJGVuZCAhPSAwKSB7CgkJCQkJCQkkbGFzdCA9ICRlbmQgKyBzdHJsZW4oJGZyb21MaW5lKTsKCQkJCQkJCSRmcm9tTGluZSA9IHN1YnN0cl9yZXBsYWNlKCRmcm9tTGluZSwgIlwwIiwgJHN0YXJ0LCAwKTsKCQkJCQkJCSRmcm9tTGluZSA9IHN1YnN0cl9yZXBsYWNlKCRmcm9tTGluZSwgIlwxIiwgJGxhc3QgKyAxLCAwKTsKCQkJCQkJCSRsYXN0ID0gJGVuZCArIHN0cmxlbigkdG9MaW5lKTsKCQkJCQkJCSR0b0xpbmUgPSBzdWJzdHJfcmVwbGFjZSgkdG9MaW5lLCAiXDAiLCAkc3RhcnQsIDApOwoJCQkJCQkJJHRvTGluZSA9IHN1YnN0cl9yZXBsYWNlKCR0b0xpbmUsICJcMSIsICRsYXN0ICsgMSwgMCk7CgkJCQkJCQkkYVskaTEgKyAkaV0gPSAkZnJvbUxpbmU7CgkJCQkJCQkkYlskajEgKyAkaV0gPSAkdG9MaW5lOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoKCQkJCWlmKCR0YWcgIT0gJGxhc3RUYWcpIHsKCQkJCQkkYmxvY2tzW10gPSBhcnJheSgKCQkJCQkJJ3RhZycgPT4gJHRhZywKCQkJCQkJJ2Jhc2UnID0+IGFycmF5KAoJCQkJCQkJJ29mZnNldCcgPT4gJGkxLAoJCQkJCQkJJ2xpbmVzJyA9PiBhcnJheSgpCgkJCQkJCSksCgkJCQkJCSdjaGFuZ2VkJyA9PiBhcnJheSgKCQkJCQkJCSdvZmZzZXQnID0+ICRqMSwKCQkJCQkJCSdsaW5lcycgPT4gYXJyYXkoKQoJCQkJCQkpCgkJCQkJKTsKCQkJCQkkbGFzdEJsb2NrID0gY291bnQoJGJsb2NrcyktMTsKCQkJCX0KCgkJCQkkbGFzdFRhZyA9ICR0YWc7CgoJCQkJaWYoJHRhZyA9PSAnZXF1YWwnKSB7CgkJCQkJJGxpbmVzID0gYXJyYXlfc2xpY2UoJGEsICRpMSwgKCRpMiAtICRpMSkpOwoJCQkJCSRibG9ja3NbJGxhc3RCbG9ja11bJ2Jhc2UnXVsnbGluZXMnXSArPSAkdGhpcy0+Zm9ybWF0TGluZXMoJGxpbmVzKTsKCQkJCQkkbGluZXMgPSBhcnJheV9zbGljZSgkYiwgJGoxLCAoJGoyIC0gJGoxKSk7CgkJCQkJJGJsb2Nrc1skbGFzdEJsb2NrXVsnY2hhbmdlZCddWydsaW5lcyddICs9ICAkdGhpcy0+Zm9ybWF0TGluZXMoJGxpbmVzKTsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCWlmKCR0YWcgPT0gJ3JlcGxhY2UnIHx8ICR0YWcgPT0gJ2RlbGV0ZScpIHsKCQkJCQkJJGxpbmVzID0gYXJyYXlfc2xpY2UoJGEsICRpMSwgKCRpMiAtICRpMSkpOwoJCQkJCQkkbGluZXMgPSAkdGhpcy0+Zm9ybWF0TGluZXMoJGxpbmVzKTsKCQkJCQkJJGxpbmVzID0gc3RyX3JlcGxhY2UoYXJyYXkoIlwwIiwgIlwxIiksIGFycmF5KCc8ZGVsPicsICc8L2RlbD4nKSwgJGxpbmVzKTsKCQkJCQkJJGJsb2Nrc1skbGFzdEJsb2NrXVsnYmFzZSddWydsaW5lcyddICs9ICRsaW5lczsKCQkJCQl9CgoJCQkJCWlmKCR0YWcgPT0gJ3JlcGxhY2UnIHx8ICR0YWcgPT0gJ2luc2VydCcpIHsKCQkJCQkJJGxpbmVzID0gYXJyYXlfc2xpY2UoJGIsICRqMSwgKCRqMiAtICRqMSkpOwoJCQkJCQkkbGluZXMgPSAgJHRoaXMtPmZvcm1hdExpbmVzKCRsaW5lcyk7CgkJCQkJCSRsaW5lcyA9IHN0cl9yZXBsYWNlKGFycmF5KCJcMCIsICJcMSIpLCBhcnJheSgnPGlucz4nLCAnPC9pbnM+JyksICRsaW5lcyk7CgkJCQkJCSRibG9ja3NbJGxhc3RCbG9ja11bJ2NoYW5nZWQnXVsnbGluZXMnXSArPSAkbGluZXM7CgkJCQkJfQoJCQkJfQoJCQl9CgkJCSRjaGFuZ2VzW10gPSAkYmxvY2tzOwoJCX0KCQlyZXR1cm4gJGNoYW5nZXM7Cgl9CgoJLyoqCgkgKiBHaXZlbiB0d28gc3RyaW5ncywgZGV0ZXJtaW5lIHdoZXJlIHRoZSBjaGFuZ2VzIGluIHRoZSB0d28gc3RyaW5ncwoJICogYmVnaW4sIGFuZCB3aGVyZSB0aGUgY2hhbmdlcyBpbiB0aGUgdHdvIHN0cmluZ3MgZW5kLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGZyb21MaW5lIFRoZSBmaXJzdCBzdHJpbmcuCgkgKiBAcGFyYW0gc3RyaW5nICR0b0xpbmUgVGhlIHNlY29uZCBzdHJpbmcuCgkgKiBAcmV0dXJuIGFycmF5IEFycmF5IGNvbnRhaW5pbmcgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uICgwIGJ5IGRlZmF1bHQpIGFuZCB0aGUgZW5kaW5nIHBvc2l0aW9uICgtMSBieSBkZWZhdWx0KQoJICovCglwcml2YXRlIGZ1bmN0aW9uIGdldENoYW5nZUV4dGVudCgkZnJvbUxpbmUsICR0b0xpbmUpCgl7CgkJJHN0YXJ0ID0gMDsKCQkkbGltaXQgPSBtaW4oc3RybGVuKCRmcm9tTGluZSksIHN0cmxlbigkdG9MaW5lKSk7CgkJd2hpbGUoJHN0YXJ0IDwgJGxpbWl0ICYmICRmcm9tTGluZXskc3RhcnR9ID09ICR0b0xpbmV7JHN0YXJ0fSkgewoJCQkrKyRzdGFydDsKCQl9CgkJJGVuZCA9IC0xOwoJCSRsaW1pdCA9ICRsaW1pdCAtICRzdGFydDsKCQl3aGlsZSgtJGVuZCA8PSAkbGltaXQgJiYgc3Vic3RyKCRmcm9tTGluZSwgJGVuZCwgMSkgPT0gc3Vic3RyKCR0b0xpbmUsICRlbmQsIDEpKSB7CgkJCS0tJGVuZDsKCQl9CgkJcmV0dXJuIGFycmF5KAoJCQkkc3RhcnQsCgkJCSRlbmQgKyAxCgkJKTsKCX0KCgkvKioKCSAqIEZvcm1hdCBhIHNlcmllcyBvZiBsaW5lcyBzdWl0YWJsZSBmb3Igb3V0cHV0IGluIGEgSFRNTCByZW5kZXJlZCBkaWZmLgoJICogVGhpcyBpbnZvbHZlcyByZXBsYWNpbmcgdGFiIGNoYXJhY3RlcnMgd2l0aCBzcGFjZXMsIG1ha2luZyB0aGUgSFRNTCBzYWZlCgkgKiBmb3Igb3V0cHV0LCBlbnN1cmluZyB0aGF0IGRvdWJsZSBzcGFjZXMgYXJlIHJlcGxhY2VkIHdpdGggJm5ic3A7IGV0Yy4KCSAqCgkgKiBAcGFyYW0gYXJyYXkgJGxpbmVzIEFycmF5IG9mIGxpbmVzIHRvIGZvcm1hdC4KCSAqIEByZXR1cm4gYXJyYXkgQXJyYXkgb2YgdGhlIGZvcm1hdHRlZCBsaW5lcy4KCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBmb3JtYXRMaW5lcygkbGluZXMpCgl7CgkJaWYoZ2V0X2NsYXNzKCR0aGlzKSA9PSAnRGlmZl9SZW5kZXJlcl9IdG1sX1NpZGVCeVNpZGUnKXsKCQkJJGxpbmVzID0gYXJyYXlfbWFwKGFycmF5KCR0aGlzLCAnRXhwYW5kVGFicycpLCAkbGluZXMpOwoJCQkkbGluZXMgPSBhcnJheV9tYXAoYXJyYXkoJHRoaXMsICdIdG1sU2FmZScpLCAkbGluZXMpOwoJCQlmb3JlYWNoKCRsaW5lcyBhcyAmJGxpbmUpIHsKCQkJCSRsaW5lID0gcHJlZ19yZXBsYWNlKCcjICggKyl8XiAjZScsICJcJHRoaXMtPmZpeFNwYWNlcygnXFwxJykiLCAkbGluZSk7CgkJCX0KCQl9CgkJcmV0dXJuICRsaW5lczsKCX0KCgkvKioKCSAqIFJlcGxhY2UgYSBzdHJpbmcgY29udGFpbmluZyBzcGFjZXMgd2l0aCBhIEhUTUwgcmVwcmVzZW50YXRpb24gdXNpbmcgJm5ic3A7LgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHNwYWNlcyBUaGUgc3RyaW5nIG9mIHNwYWNlcy4KCSAqIEByZXR1cm4gc3RyaW5nIFRoZSBIVE1MIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzdHJpbmcuCgkgKi8KCWZ1bmN0aW9uIGZpeFNwYWNlcygkc3BhY2VzPScnKQoJewoJCSRjb3VudCA9IHN0cmxlbigkc3BhY2VzKTsKCQlpZigkY291bnQgPT0gMCkgewoJCQlyZXR1cm4gJyc7CgkJfQoKCQkkZGl2ID0gZmxvb3IoJGNvdW50IC8gMik7CgkJJG1vZCA9ICRjb3VudCAlIDI7CgkJcmV0dXJuIHN0cl9yZXBlYXQoJyZuYnNwOyAnLCAkZGl2KS5zdHJfcmVwZWF0KCcmbmJzcDsnLCAkbW9kKTsKCX0KCgkvKioKCSAqIFJlcGxhY2UgdGFicyBpbiBhIHNpbmdsZSBsaW5lIHdpdGggYSBudW1iZXIgb2Ygc3BhY2VzIGFzIGRlZmluZWQgYnkgdGhlIHRhYlNpemUgb3B0aW9uLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGxpbmUgVGhlIGNvbnRhaW5pbmcgdGFicyB0byBjb252ZXJ0LgoJICogQHJldHVybiBzdHJpbmcgVGhlIGxpbmUgd2l0aCB0aGUgdGFicyBjb252ZXJ0ZWQgdG8gc3BhY2VzLgoJICovCglwcml2YXRlIGZ1bmN0aW9uIGV4cGFuZFRhYnMoJGxpbmUpCgl7CgkJcmV0dXJuIHN0cl9yZXBsYWNlKCJcdCIsIHN0cl9yZXBlYXQoJyAnLCAkdGhpcy0+b3B0aW9uc1sndGFiU2l6ZSddKSwgJGxpbmUpOwoJfQoKCS8qKgoJICogTWFrZSBhIHN0cmluZyBjb250YWluaW5nIEhUTUwgc2FmZSBmb3Igb3V0cHV0IG9uIGEgcGFnZS4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRzdHJpbmcgVGhlIHN0cmluZy4KCSAqIEByZXR1cm4gc3RyaW5nIFRoZSBzdHJpbmcgd2l0aCB0aGUgSFRNTCBjaGFyYWN0ZXJzIHJlcGxhY2VkIGJ5IGVudGl0aWVzLgoJICovCglwcml2YXRlIGZ1bmN0aW9uIGh0bWxTYWZlKCRzdHJpbmcpCgl7CgkJcmV0dXJuIGh0bWxzcGVjaWFsY2hhcnMoJHN0cmluZywgRU5UX05PUVVPVEVTLCAnVVRGLTgnKTsKCX0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/Diff/Renderer/SideBySide.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNpZGUgYnkgU2lkZSBIVE1MIGRpZmYgZ2VuZXJhdG9yIGZvciBQSFAgRGlmZkxpYi4KICoKICogUEhQIHZlcnNpb24gNQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ2hyaXMgQm91bHRvbiA8Y2hyaXMuYm91bHRvbkBpbnRlcnNwaXJlLmNvbT4KICogCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqIAogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgCiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgogKgogKiAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgogKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICogIC0gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgQ2hyaXMgQm91bHRvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgCiAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSAKICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAqCiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiAKICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSAKICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgCiAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSAKICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiAKICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgCiAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gCiAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIAogKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSAKICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAqCiAqIEBwYWNrYWdlIERpZmZMaWIKICogQGF1dGhvciBDaHJpcyBCb3VsdG9uIDxjaHJpcy5ib3VsdG9uQGludGVyc3BpcmUuY29tPgogKiBAY29weXJpZ2h0IChjKSAyMDA5IENocmlzIEJvdWx0b24KICogQGxpY2Vuc2UgTmV3IEJTRCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwCiAqIEB2ZXJzaW9uIDEuMQogKiBAbGluayBodHRwOi8vZ2l0aHViLmNvbS9jaHJpc2JvdWx0b24vcGhwLWRpZmYKICovCgpyZXF1aXJlX29uY2UgZGlybmFtZShfX0ZJTEVfXykuJy9BcnJheS5waHAnOwoKY2xhc3MgRGlmZl9SZW5kZXJlcl9IdG1sX1NpZGVCeVNpZGUgZXh0ZW5kcyBEaWZmX1JlbmRlcmVyX0h0bWxfQXJyYXkKewoKCXByaXZhdGUgJHJldmlzaW9uX2lkOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkcmV2aXNpb25faWQgPSAwKQoJewoJCSR0aGlzLT5yZXZpc2lvbl9pZCA9ICRyZXZpc2lvbl9pZDsKCQlwYXJlbnQ6Ol9fY29uc3RydWN0KCk7Cgl9CgoJLyoqCgkgKiBSZW5kZXIgYSBhbmQgcmV0dXJuIGRpZmYgd2l0aCBjaGFuZ2VzIGJldHdlZW4gdGhlIHR3byBzZXF1ZW5jZXMKCSAqIGRpc3BsYXllZCBzaWRlIGJ5IHNpZGUuCgkgKgoJICogQHJldHVybiBzdHJpbmcgVGhlIGdlbmVyYXRlZCBzaWRlIGJ5IHNpZGUgZGlmZi4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHJlbmRlcigpCgl7CgkJJGNoYW5nZXMgPSBwYXJlbnQ6OnJlbmRlcigpOwoKCQkkaHRtbCA9ICcnOwoJCWlmKGVtcHR5KCRjaGFuZ2VzKSkgewoJCQlyZXR1cm4gJGh0bWw7CgkJfQoKCQkkaHRtbCAuPSAnPHRhYmxlIGNsYXNzPSJEaWZmZXJlbmNlcyBEaWZmZXJlbmNlc1NpZGVCeVNpZGUiPic7CgkJJGh0bWwgLj0gJzx0aGVhZD4nOwoJCSRodG1sIC49ICc8dHI+JzsKCQkkaHRtbCAuPSAnPHRoIGNvbHNwYW49IjIiPlJldmlzaW9uICcgLiAkdGhpcy0+cmV2aXNpb25faWQgLiAnPC90aD4nOwoJCSRodG1sIC49ICc8dGggY29sc3Bhbj0iMiI+Q3VycmVudCBWZXJzaW9uPC90aD4nOwoJCSRodG1sIC49ICc8L3RyPic7CgkJJGh0bWwgLj0gJzwvdGhlYWQ+JzsKCQlmb3JlYWNoKCRjaGFuZ2VzIGFzICRpID0+ICRibG9ja3MpIHsKCQkJaWYoJGkgPiAwKSB7CgkJCQkkaHRtbCAuPSAnPHRib2R5IGNsYXNzPSJTa2lwcGVkIj4nOwoJCQkJJGh0bWwgLj0gJzx0aD4maGVsbGlwOzwvdGg+PHRkPiZuYnNwOzwvdGQ+JzsKCQkJCSRodG1sIC49ICc8dGg+JmhlbGxpcDs8L3RoPjx0ZD4mbmJzcDs8L3RkPic7CgkJCQkkaHRtbCAuPSAnPC90Ym9keT4nOwoJCQl9CgoJCQlmb3JlYWNoKCRibG9ja3MgYXMgJGNoYW5nZSkgewoJCQkJJGh0bWwgLj0gJzx0Ym9keSBjbGFzcz0iQ2hhbmdlJy51Y2ZpcnN0KCRjaGFuZ2VbJ3RhZyddKS4nIj4nOwoJCQkJLy8gRXF1YWwgY2hhbmdlcyBzaG91bGQgYmUgc2hvd24gb24gYm90aCBzaWRlcyBvZiB0aGUgZGlmZgoJCQkJaWYoJGNoYW5nZVsndGFnJ10gPT0gJ2VxdWFsJykgewoJCQkJCWZvcmVhY2goJGNoYW5nZVsnYmFzZSddWydsaW5lcyddIGFzICRubyA9PiAkbGluZSkgewoJCQkJCQkkZnJvbUxpbmUgPSAkY2hhbmdlWydiYXNlJ11bJ29mZnNldCddICsgJG5vICsgMTsKCQkJCQkJJHRvTGluZSA9ICRjaGFuZ2VbJ2NoYW5nZWQnXVsnb2Zmc2V0J10gKyAkbm8gKyAxOwoJCQkJCQkkaHRtbCAuPSAnPHRyPic7CgkJCQkJCSRodG1sIC49ICc8dGg+Jy4kZnJvbUxpbmUuJzwvdGg+JzsKCQkJCQkJJGh0bWwgLj0gJzx0ZCBjbGFzcz0iTGVmdCI+PHNwYW4+Jy4kbGluZS4nPC9zcGFuPiZuYnNwOzwvc3Bhbj48L3RkPic7CgkJCQkJCSRodG1sIC49ICc8dGg+Jy4kdG9MaW5lLic8L3RoPic7CgkJCQkJCSRodG1sIC49ICc8dGQgY2xhc3M9IlJpZ2h0Ij48c3Bhbj4nLiRsaW5lLic8L3NwYW4+Jm5ic3A7PC9zcGFuPjwvdGQ+JzsKCQkJCQkJJGh0bWwgLj0gJzwvdHI+JzsKCQkJCQl9CgkJCQl9CgkJCQkvLyBBZGRlZCBsaW5lcyBvbmx5IG9uIHRoZSByaWdodCBzaWRlCgkJCQllbHNlIGlmKCRjaGFuZ2VbJ3RhZyddID09ICdpbnNlcnQnKSB7CgkJCQkJZm9yZWFjaCgkY2hhbmdlWydjaGFuZ2VkJ11bJ2xpbmVzJ10gYXMgJG5vID0+ICRsaW5lKSB7CgkJCQkJCSR0b0xpbmUgPSAkY2hhbmdlWydjaGFuZ2VkJ11bJ29mZnNldCddICsgJG5vICsgMTsKCQkJCQkJJGh0bWwgLj0gJzx0cj4nOwoJCQkJCQkkaHRtbCAuPSAnPHRoPiZuYnNwOzwvdGg+JzsKCQkJCQkJJGh0bWwgLj0gJzx0ZCBjbGFzcz0iTGVmdCI+Jm5ic3A7PC90ZD4nOwoJCQkJCQkkaHRtbCAuPSAnPHRoPicuJHRvTGluZS4nPC90aD4nOwoJCQkJCQkkaHRtbCAuPSAnPHRkIGNsYXNzPSJSaWdodCI+PGlucz4nLiRsaW5lLic8L2lucz4mbmJzcDs8L3RkPic7CgkJCQkJCSRodG1sIC49ICc8L3RyPic7CgkJCQkJfQoJCQkJfQoJCQkJLy8gU2hvdyBkZWxldGVkIGxpbmVzIG9ubHkgb24gdGhlIGxlZnQgc2lkZQoJCQkJZWxzZSBpZigkY2hhbmdlWyd0YWcnXSA9PSAnZGVsZXRlJykgewoJCQkJCWZvcmVhY2goJGNoYW5nZVsnYmFzZSddWydsaW5lcyddIGFzICRubyA9PiAkbGluZSkgewoJCQkJCQkkZnJvbUxpbmUgPSAkY2hhbmdlWydiYXNlJ11bJ29mZnNldCddICsgJG5vICsgMTsKCQkJCQkJJGh0bWwgLj0gJzx0cj4nOwoJCQkJCQkkaHRtbCAuPSAnPHRoPicuJGZyb21MaW5lLic8L3RoPic7CgkJCQkJCSRodG1sIC49ICc8dGQgY2xhc3M9IkxlZnQiPjxkZWw+Jy4kbGluZS4nPC9kZWw+Jm5ic3A7PC90ZD4nOwoJCQkJCQkkaHRtbCAuPSAnPHRoPiZuYnNwOzwvdGg+JzsKCQkJCQkJJGh0bWwgLj0gJzx0ZCBjbGFzcz0iUmlnaHQiPiZuYnNwOzwvdGQ+JzsKCQkJCQkJJGh0bWwgLj0gJzwvdHI+JzsKCQkJCQl9CgkJCQl9CgkJCQkvLyBTaG93IG1vZGlmaWVkIGxpbmVzIG9uIGJvdGggc2lkZXMKCQkJCWVsc2UgaWYoJGNoYW5nZVsndGFnJ10gPT0gJ3JlcGxhY2UnKSB7CgkJCQkJaWYoY291bnQoJGNoYW5nZVsnYmFzZSddWydsaW5lcyddKSA+PSBjb3VudCgkY2hhbmdlWydjaGFuZ2VkJ11bJ2xpbmVzJ10pKSB7CgkJCQkJCWZvcmVhY2goJGNoYW5nZVsnYmFzZSddWydsaW5lcyddIGFzICRubyA9PiAkbGluZSkgewoJCQkJCQkJJGZyb21MaW5lID0gJGNoYW5nZVsnYmFzZSddWydvZmZzZXQnXSArICRubyArIDE7CgkJCQkJCQkkaHRtbCAuPSAnPHRyPic7CgkJCQkJCQkkaHRtbCAuPSAnPHRoPicuJGZyb21MaW5lLic8L3RoPic7CgkJCQkJCQkkaHRtbCAuPSAnPHRkIGNsYXNzPSJMZWZ0Ij48c3Bhbj4nLiRsaW5lLic8L3NwYW4+Jm5ic3A7PC90ZD4nOwoJCQkJCQkJaWYoIWlzc2V0KCRjaGFuZ2VbJ2NoYW5nZWQnXVsnbGluZXMnXVskbm9dKSkgewoJCQkJCQkJCSR0b0xpbmUgPSAnJm5ic3A7JzsKCQkJCQkJCQkkY2hhbmdlZExpbmUgPSAnJm5ic3A7JzsKCQkJCQkJCX0KCQkJCQkJCWVsc2UgewoJCQkJCQkJCSR0b0xpbmUgPSAkY2hhbmdlWydiYXNlJ11bJ29mZnNldCddICsgJG5vICsgMTsKCQkJCQkJCQkkY2hhbmdlZExpbmUgPSAnPHNwYW4+Jy4kY2hhbmdlWydjaGFuZ2VkJ11bJ2xpbmVzJ11bJG5vXS4nPC9zcGFuPic7CgkJCQkJCQl9CgkJCQkJCQkkaHRtbCAuPSAnPHRoPicuJHRvTGluZS4nPC90aD4nOwoJCQkJCQkJJGh0bWwgLj0gJzx0ZCBjbGFzcz0iUmlnaHQiPicuJGNoYW5nZWRMaW5lLic8L3RkPic7CgkJCQkJCQkkaHRtbCAuPSAnPC90cj4nOwoJCQkJCQl9CgkJCQkJfQoJCQkJCWVsc2UgewoJCQkJCQlmb3JlYWNoKCRjaGFuZ2VbJ2NoYW5nZWQnXVsnbGluZXMnXSBhcyAkbm8gPT4gJGNoYW5nZWRMaW5lKSB7CgkJCQkJCQlpZighaXNzZXQoJGNoYW5nZVsnYmFzZSddWydsaW5lcyddWyRub10pKSB7CgkJCQkJCQkJJGZyb21MaW5lID0gJyZuYnNwOyc7CgkJCQkJCQkJJGxpbmUgPSAnJm5ic3A7JzsKCQkJCQkJCX0KCQkJCQkJCWVsc2UgewoJCQkJCQkJCSRmcm9tTGluZSA9ICRjaGFuZ2VbJ2Jhc2UnXVsnb2Zmc2V0J10gKyAkbm8gKyAxOwoJCQkJCQkJCSRsaW5lID0gJzxzcGFuPicuJGNoYW5nZVsnYmFzZSddWydsaW5lcyddWyRub10uJzwvc3Bhbj4nOwoJCQkJCQkJfQoJCQkJCQkJJGh0bWwgLj0gJzx0cj4nOwoJCQkJCQkJJGh0bWwgLj0gJzx0aD4nLiRmcm9tTGluZS4nPC90aD4nOwoJCQkJCQkJJGh0bWwgLj0gJzx0ZCBjbGFzcz0iTGVmdCI+PHNwYW4+Jy4kbGluZS4nPC9zcGFuPiZuYnNwOzwvdGQ+JzsKCQkJCQkJCSR0b0xpbmUgPSAkY2hhbmdlWydjaGFuZ2VkJ11bJ29mZnNldCddICsgJG5vICsgMTsKCQkJCQkJCSRodG1sIC49ICc8dGg+Jy4kdG9MaW5lLic8L3RoPic7CgkJCQkJCQkkaHRtbCAuPSAnPHRkIGNsYXNzPSJSaWdodCI+Jy4kY2hhbmdlZExpbmUuJzwvdGQ+JzsKCQkJCQkJCSRodG1sIC49ICc8L3RyPic7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCQkkaHRtbCAuPSAnPC90Ym9keT4nOwoJCQl9CgkJfQoJCSRodG1sIC49ICc8L3RhYmxlPic7CgkJcmV0dXJuICRodG1sOwoJfQp9]]></data>
	</file>
	<file>
	  <filename>/lib/Diff/Renderer/Unified.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFVuaWZpZWQgZGlmZiBnZW5lcmF0b3IgZm9yIFBIUCBEaWZmTGliLgogKgogKiBQSFAgdmVyc2lvbiA1CiAqCiAqIENvcHlyaWdodCAoYykgMjAwOSBDaHJpcyBCb3VsdG9uIDxjaHJpcy5ib3VsdG9uQGludGVyc3BpcmUuY29tPgogKiAKICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogCiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCAKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CiAqCiAqICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICogIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAogKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCiAqICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKiAgLSBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBDaHJpcyBCb3VsdG9uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyAKICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIAogKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICoKICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIAogKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIAogKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSAKICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIAogKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIAogKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiAKICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIAogKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiAKICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgCiAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIAogKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICoKICogQHBhY2thZ2UgRGlmZkxpYgogKiBAYXV0aG9yIENocmlzIEJvdWx0b24gPGNocmlzLmJvdWx0b25AaW50ZXJzcGlyZS5jb20+CiAqIEBjb3B5cmlnaHQgKGMpIDIwMDkgQ2hyaXMgQm91bHRvbgogKiBAbGljZW5zZSBOZXcgQlNEIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAKICogQHZlcnNpb24gMS4xCiAqIEBsaW5rIGh0dHA6Ly9naXRodWIuY29tL2NocmlzYm91bHRvbi9waHAtZGlmZgogKi8KCnJlcXVpcmVfb25jZSBkaXJuYW1lKF9fRklMRV9fKS4nL0Fic3RyYWN0LnBocCc7CgpjbGFzcyBEaWZmX1JlbmRlcmVyX1VuaWZpZWQgZXh0ZW5kcyBEaWZmX1JlbmRlcmVyX0Fic3RyYWN0CnsKCS8qKgoJICogUmVuZGVyIGFuZCByZXR1cm4gYSB1bmlmaWVkIGRpZmYuCgkgKgoJICogQHJldHVybiBzdHJpbmcgVGhlIHVuaWZpZWQgZGlmZi4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHJlbmRlcigpCgl7CgkJJGRpZmYgPSAnJzsKCQkkb3BDb2RlcyA9ICR0aGlzLT5kaWZmLT5nZXRHcm91cGVkT3Bjb2RlcygpOwoJCWZvcmVhY2goJG9wQ29kZXMgYXMgJGdyb3VwKSB7CgkJCSRsYXN0SXRlbSA9IGNvdW50KCRncm91cCktMTsKCQkJJGkxID0gJGdyb3VwWzBdWzFdOwoJCQkkaTIgPSAkZ3JvdXBbJGxhc3RJdGVtXVsyXTsKCQkJJGoxID0gJGdyb3VwWzBdWzNdOwoJCQkkajIgPSAkZ3JvdXBbJGxhc3RJdGVtXVs0XTsKCgkJCWlmKCRpMSA9PSAwICYmICRpMiA9PSAwKSB7CgkJCQkkaTEgPSAtMTsKCQkJCSRpMiA9IC0xOwoJCQl9CgoJCQkkZGlmZiAuPSAnQEAgLScuKCRpMSArIDEpLicsJy4oJGkyIC0gJGkxKS4nICsnLigkajEgKyAxKS4nLCcuKCRqMiAtICRqMSkuIiBAQFxuIjsKCQkJZm9yZWFjaCgkZ3JvdXAgYXMgJGNvZGUpIHsKCQkJCWxpc3QoJHRhZywgJGkxLCAkaTIsICRqMSwgJGoyKSA9ICRjb2RlOwoJCQkJaWYoJHRhZyA9PSAnZXF1YWwnKSB7CgkJCQkJJGRpZmYgLj0gJyAnLmltcGxvZGUoIlxuICIsICR0aGlzLT5kaWZmLT5HZXRBKCRpMSwgJGkyKSkuIlxuIjsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCWlmKCR0YWcgPT0gJ3JlcGxhY2UnIHx8ICR0YWcgPT0gJ2RlbGV0ZScpIHsKCQkJCQkJJGRpZmYgLj0gJy0nLmltcGxvZGUoIlxuLSIsICR0aGlzLT5kaWZmLT5HZXRBKCRpMSwgJGkyKSkuIlxuIjsKCQkJCQl9CgoJCQkJCWlmKCR0YWcgPT0gJ3JlcGxhY2UnIHx8ICR0YWcgPT0gJ2luc2VydCcpIHsKCQkJCQkJJGRpZmYgLj0gJysnLmltcGxvZGUoIlxuKyIsICR0aGlzLT5kaWZmLT5HZXRCKCRqMSwgJGoyKSkuIlxuIjsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgkJcmV0dXJuICRkaWZmOwoJfQp9]]></data>
	</file>
	<file>
	  <filename>/lib/Diff/SequenceMatcher.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNlcXVlbmNlIG1hdGNoZXIgZm9yIERpZmYKICoKICogUEhQIHZlcnNpb24gNQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ2hyaXMgQm91bHRvbiA8Y2hyaXMuYm91bHRvbkBpbnRlcnNwaXJlLmNvbT4KICoKICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgogKgogKiAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgogKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICogIC0gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgQ2hyaXMgQm91bHRvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCiAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQogKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQogKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgogKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgogKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAqCiAqIEBwYWNrYWdlIERpZmYKICogQGF1dGhvciBDaHJpcyBCb3VsdG9uIDxjaHJpcy5ib3VsdG9uQGludGVyc3BpcmUuY29tPgogKiBAY29weXJpZ2h0IChjKSAyMDA5IENocmlzIEJvdWx0b24KICogQGxpY2Vuc2UgTmV3IEJTRCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwCiAqIEB2ZXJzaW9uIDEuMQogKiBAbGluayBodHRwOi8vZ2l0aHViLmNvbS9jaHJpc2JvdWx0b24vcGhwLWRpZmYKICovCgpjbGFzcyBEaWZmX1NlcXVlbmNlTWF0Y2hlcgp7CgkvKioKCSAqIEB2YXIgc3RyaW5nfGFycmF5IEVpdGhlciBhIHN0cmluZyBvciBhbiBhcnJheSBjb250YWluaW5nIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIGEgbGluZSBpcyAianVuayIgb3Igbm90LgoJICovCglwcml2YXRlICRqdW5rQ2FsbGJhY2sgPSBudWxsOwoKCS8qKgoJICogQHZhciBhcnJheSBUaGUgZmlyc3Qgc2VxdWVuY2UgdG8gY29tcGFyZSBhZ2FpbnN0LgoJICovCglwcml2YXRlICRhID0gbnVsbDsKCgkvKioKCSAqIEB2YXIgYXJyYXkgVGhlIHNlY29uZCBzZXF1ZW5jZS4KCSAqLwoJcHJpdmF0ZSAkYiA9IG51bGw7CgoJLyoqCgkgKiBAdmFyIGFycmF5IEFycmF5IG9mIGNoYXJhY3RlcnMgdGhhdCBhcmUgY29uc2lkZXJlZCBqdW5rIGZyb20gdGhlIHNlY29uZCBzZXF1ZW5jZS4gQ2hhcmFjdGVycyBhcmUgdGhlIGFycmF5IGtleS4KCSAqLwoJcHJpdmF0ZSAkanVua0RpY3QgPSBhcnJheSgpOwoKCS8qKgoJICogQHZhciBhcnJheSBBcnJheSBvZiBpbmRpY2VzIHRoYXQgZG8gbm90IGNvbnRhaW4ganVuayBlbGVtZW50cy4KCSAqLwoJcHJpdmF0ZSAkYjJqID0gYXJyYXkoKTsKCglwcml2YXRlICRvcHRpb25zID0gYXJyYXkoKTsKCglwcml2YXRlICRkZWZhdWx0T3B0aW9ucyA9IGFycmF5KAoJCSdpZ25vcmVOZXdMaW5lcycgPT4gZmFsc2UsCgkJJ2lnbm9yZVdoaXRlc3BhY2UnID0+IGZhbHNlLAoJCSdpZ25vcmVDYXNlJyA9PiBmYWxzZQoJKTsKCgkvKioKCSAqIFRoZSBjb25zdHJ1Y3Rvci4gV2l0aCB0aGUgc2VxdWVuY2VzIGJlaW5nIHBhc3NlZCwgdGhleSdsbCBiZSBzZXQgZm9yIHRoZQoJICogc2VxdWVuY2UgbWF0Y2hlciBhbmQgaXQgd2lsbCBwZXJmb3JtIGEgYmFzaWMgY2xlYW51cCAmIGNhbGN1bGF0ZSBqdW5rCgkgKiBlbGVtZW50cy4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nfGFycmF5ICRhIEEgc3RyaW5nIG9yIGFycmF5IGNvbnRhaW5pbmcgdGhlIGxpbmVzIHRvIGNvbXBhcmUgYWdhaW5zdC4KCSAqIEBwYXJhbSBzdHJpbmd8YXJyYXkgJGIgQSBzdHJpbmcgb3IgYXJyYXkgY29udGFpbmluZyB0aGUgbGluZXMgdG8gY29tcGFyZS4KCSAqIEBwYXJhbSBzdHJpbmd8YXJyYXkgJGp1bmtDYWxsYmFjayBFaXRoZXIgYW4gYXJyYXkgb3Igc3RyaW5nIHRoYXQgcmVmZXJlbmNlcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIChpZiB0aGVyZSBpcyBvbmUpIHRvIGRldGVybWluZSAnanVuaycgY2hhcmFjdGVycy4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRhLCAkYiwgJGp1bmtDYWxsYmFjaz1udWxsLCAkb3B0aW9ucykKCXsKCQkkdGhpcy0+YSA9IG51bGw7CgkJJHRoaXMtPmIgPSBudWxsOwoJCSR0aGlzLT5qdW5rQ2FsbGJhY2sgPSAkanVua0NhbGxiYWNrOwoJCSR0aGlzLT5zZXRPcHRpb25zKCRvcHRpb25zKTsKCQkkdGhpcy0+c2V0U2VxdWVuY2VzKCRhLCAkYik7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNldE9wdGlvbnMoJG9wdGlvbnMpCgl7CgkJJHRoaXMtPm9wdGlvbnMgPSBhcnJheV9tZXJnZSgkdGhpcy0+ZGVmYXVsdE9wdGlvbnMsICRvcHRpb25zKTsKCX0KCgkvKioKCSAqIFNldCB0aGUgZmlyc3QgYW5kIHNlY29uZCBzZXF1ZW5jZXMgdG8gdXNlIHdpdGggdGhlIHNlcXVlbmNlIG1hdGNoZXIuCgkgKgoJICogQHBhcmFtIHN0cmluZ3xhcnJheSAkYSBBIHN0cmluZyBvciBhcnJheSBjb250YWluaW5nIHRoZSBsaW5lcyB0byBjb21wYXJlIGFnYWluc3QuCgkgKiBAcGFyYW0gc3RyaW5nfGFycmF5ICRiIEEgc3RyaW5nIG9yIGFycmF5IGNvbnRhaW5pbmcgdGhlIGxpbmVzIHRvIGNvbXBhcmUuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzZXRTZXF1ZW5jZXMoJGEsICRiKQoJewoJCSR0aGlzLT5zZXRTZXExKCRhKTsKCQkkdGhpcy0+c2V0U2VxMigkYik7Cgl9CgoJLyoqCgkgKiBTZXQgdGhlIGZpcnN0IHNlcXVlbmNlICgkYSkgYW5kIHJlc2V0IGFueSBpbnRlcm5hbCBjYWNoZXMgdG8gaW5kaWNhdGUgdGhhdAoJICogd2hlbiBjYWxsaW5nIHRoZSBjYWxjdWxhdGlvbiBtZXRob2RzLCB3ZSBuZWVkIHRvIHJlY2FsY3VsYXRlIHRoZW0uCgkgKgoJICogQHBhcmFtIHN0cmluZ3xhcnJheSAkYSBUaGUgc2VxdWVuY2UgdG8gc2V0IGFzIHRoZSBmaXJzdCBzZXF1ZW5jZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHNldFNlcTEoJGEpCgl7CgkJaWYoIWlzX2FycmF5KCRhKSkgewoJCQkkYSA9IHN0cl9zcGxpdCgkYSk7CgkJfQoJCWlmKCRhID09ICR0aGlzLT5hKSB7CgkJCXJldHVybjsKCQl9CgoJCSR0aGlzLT5hPSAkYTsKCQkkdGhpcy0+bWF0Y2hpbmdCbG9ja3MgPSBudWxsOwoJCSR0aGlzLT5vcENvZGVzID0gbnVsbDsKCX0KCgkvKioKCSAqIFNldCB0aGUgc2Vjb25kIHNlcXVlbmNlICgkYikgYW5kIHJlc2V0IGFueSBpbnRlcm5hbCBjYWNoZXMgdG8gaW5kaWNhdGUgdGhhdAoJICogd2hlbiBjYWxsaW5nIHRoZSBjYWxjdWxhdGlvbiBtZXRob2RzLCB3ZSBuZWVkIHRvIHJlY2FsY3VsYXRlIHRoZW0uCgkgKgoJICogQHBhcmFtIHN0cmluZ3xhcnJheSAkYiBUaGUgc2VxdWVuY2UgdG8gc2V0IGFzIHRoZSBzZWNvbmQgc2VxdWVuY2UuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzZXRTZXEyKCRiKQoJewoJCWlmKCFpc19hcnJheSgkYikpIHsKCQkJJGIgPSBzdHJfc3BsaXQoJGIpOwoJCX0KCQlpZigkYiA9PSAkdGhpcy0+YikgewoJCQlyZXR1cm47CgkJfQoKCQkkdGhpcy0+YiA9ICRiOwoJCSR0aGlzLT5tYXRjaGluZ0Jsb2NrcyA9IG51bGw7CgkJJHRoaXMtPm9wQ29kZXMgPSBudWxsOwoJCSR0aGlzLT5mdWxsQkNvdW50ID0gbnVsbDsKCQkkdGhpcy0+Y2hhaW5CKCk7Cgl9CgoJLyoqCgkgKiBHZW5lcmF0ZSB0aGUgaW50ZXJuYWwgYXJyYXlzIGNvbnRhaW5pbmcgdGhlIGxpc3Qgb2YganVuayBhbmQgbm9uLWp1bmsKCSAqIGNoYXJhY3RlcnMgZm9yIHRoZSBzZWNvbmQgKCRiKSBzZXF1ZW5jZS4KCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBjaGFpbkIoKQoJewoJCSRsZW5ndGggPSBjb3VudCAoJHRoaXMtPmIpOwoJCSR0aGlzLT5iMmogPSBhcnJheSgpOwoJCSRwb3B1bGFyRGljdCA9IGFycmF5KCk7CgoJCWZvcigkaSA9IDA7ICRpIDwgJGxlbmd0aDsgKyskaSkgewoJCQkkY2hhciA9ICR0aGlzLT5iWyRpXTsKCQkJaWYoaXNzZXQoJHRoaXMtPmIyalskY2hhcl0pKSB7CgkJCQlpZigkbGVuZ3RoID49IDIwMCAmJiBjb3VudCgkdGhpcy0+YjJqWyRjaGFyXSkgKiAxMDAgPiAkbGVuZ3RoKSB7CgkJCQkJJHBvcHVsYXJEaWN0WyRjaGFyXSA9IDE7CgkJCQkJdW5zZXQoJHRoaXMtPmIyalskY2hhcl0pOwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJJHRoaXMtPmIyalskY2hhcl1bXSA9ICRpOwoJCQkJfQoJCQl9CgkJCWVsc2UgewoJCQkJJHRoaXMtPmIyalskY2hhcl0gPSBhcnJheSgKCQkJCQkkaQoJCQkJKTsKCQkJfQoJCX0KCgkJLy8gUmVtb3ZlIGxlZnRvdmVycwoJCWZvcmVhY2goYXJyYXlfa2V5cygkcG9wdWxhckRpY3QpIGFzICRjaGFyKSB7CgkJCXVuc2V0KCR0aGlzLT5iMmpbJGNoYXJdKTsKCQl9CgoJCSR0aGlzLT5qdW5rRGljdCA9IGFycmF5KCk7CgkJaWYoaXNfY2FsbGFibGUoJHRoaXMtPmp1bmtDYWxsYmFjaykpIHsKCQkJZm9yZWFjaChhcnJheV9rZXlzKCRwb3B1bGFyRGljdCkgYXMgJGNoYXIpIHsKCQkJCWlmKGNhbGxfdXNlcl9mdW5jKCR0aGlzLT5qdW5rQ2FsbGJhY2ssICRjaGFyKSkgewoJCQkJCSR0aGlzLT5qdW5rRGljdFskY2hhcl0gPSAxOwoJCQkJCXVuc2V0KCRwb3B1bGFyRGljdFskY2hhcl0pOwoJCQkJfQoJCQl9CgoJCQlmb3JlYWNoKGFycmF5X2tleXMoJHRoaXMtPmIyaikgYXMgJGNoYXIpIHsKCQkJCWlmKGNhbGxfdXNlcl9mdW5jKCR0aGlzLT5qdW5rQ2FsbGJhY2ssICRjaGFyKSkgewoJCQkJCSR0aGlzLT5qdW5rRGljdFskY2hhcl0gPSAxOwoJCQkJCXVuc2V0KCR0aGlzLT5iMmpbJGNoYXJdKTsKCQkJCX0KCQkJfQoJCX0KCX0KCgkvKioKCSAqIENoZWNrcyBpZiBhIHBhcnRpY3VsYXIgY2hhcmFjdGVyIGlzIGluIHRoZSBqdW5rIGRpY3Rpb25hcnkKCSAqIGZvciB0aGUgbGlzdCBvZiBqdW5rIGNoYXJhY3RlcnMuCgkgKgoJICogQHJldHVybiBib29sZWFuICRiIFRydWUgaWYgdGhlIGNoYXJhY3RlciBpcyBjb25zaWRlcmVkIGp1bmsuIEZhbHNlIGlmIG5vdC4KCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBpc0JKdW5rKCRiKQoJewoJCWlmKGlzc2V0KCR0aGlzLT5qdW5jRGljdFskYl0pKSB7CgkJCXJldHVybiB0cnVlOwoJCX0KCgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogRmluZCB0aGUgbG9uZ2VzdCBtYXRjaGluZyBibG9jayBpbiB0aGUgdHdvIHNlcXVlbmNlcywgYXMgZGVmaW5lZCBieSB0aGUKCSAqIGxvd2VyIGFuZCB1cHBlciBjb25zdHJhaW50cyBmb3IgZWFjaCBzZXF1ZW5jZS4gKGZvciB0aGUgZmlyc3Qgc2VxdWVuY2UsCgkgKiAkYWxvIC0gJGFoaSBhbmQgZm9yIHRoZSBzZWNvbmQgc2VxdWVuY2UsICRibG8gLSAkYmhpKQoJICoKCSAqIEVzc2VudGlhbGx5LCBvZiBhbGwgb2YgdGhlIG1heGltYWwgbWF0Y2hpbmcgYmxvY2tzLCByZXR1cm4gdGhlIG9uZSB0aGF0CgkgKiBzdGFydGVzdCBlYXJsaWVzdCBpbiAkYSwgYW5kIGFsbCBvZiB0aG9zZSBtYXhpbWFsIG1hdGNoaW5nIGJsb2NrcyB0aGF0CgkgKiBzdGFydCBlYXJsaWVzdCBpbiAkYSwgcmV0dXJuIHRoZSBvbmUgdGhhdCBzdGFydHMgZWFybGllc3QgaW4gJGIuCgkgKgoJICogSWYgdGhlIGp1bmsgY2FsbGJhY2sgaXMgZGVmaW5lZCwgZG8gdGhlIGFib3ZlIGJ1dCB3aXRoIHRoZSByZXN0cmljdGlvbgoJICogdGhhdCB0aGUganVuayBlbGVtZW50IGFwcGVhcnMgaW4gdGhlIGJsb2NrLiBFeHRlbmQgaXQgYXMgZmFyIGFzIHBvc3NpYmxlCgkgKiBieSBtYXRjaGluZyBvbmx5IGp1bmsgZWxlbWVudHMgaW4gYm90aCAkYSBhbmQgJGIuCgkgKgoJICogQHBhcmFtIGludCAkYWxvIFRoZSBsb3dlciBjb25zdHJhaW50IGZvciB0aGUgZmlyc3Qgc2VxdWVuY2UuCgkgKiBAcGFyYW0gaW50ICRhaGkgVGhlIHVwcGVyIGNvbnN0cmFpbnQgZm9yIHRoZSBmaXJzdCBzZXF1ZW5jZS4KCSAqIEBwYXJhbSBpbnQgJGJsbyBUaGUgbG93ZXIgY29uc3RyYWludCBmb3IgdGhlIHNlY29uZCBzZXF1ZW5jZS4KCSAqIEBwYXJhbSBpbnQgJGJoaSBUaGUgdXBwZXIgY29uc3RyYWludCBmb3IgdGhlIHNlY29uZCBzZXF1ZW5jZS4KCSAqIEByZXR1cm4gYXJyYXkgQXJyYXkgY29udGFpbmluZyB0aGUgbG9uZ2VzdCBtYXRjaCB0aGF0IGluY2x1ZGVzIHRoZSBzdGFydGluZyBwb3NpdGlvbiBpbiAkYSwgc3RhcnQgaW4gJGIgYW5kIHRoZSBsZW5ndGgvc2l6ZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGZpbmRMb25nZXN0TWF0Y2goJGFsbywgJGFoaSwgJGJsbywgJGJoaSkKCXsKCQkkYSA9ICR0aGlzLT5hOwoJCSRiID0gJHRoaXMtPmI7CgoJCSRiZXN0SSA9ICRhbG87CgkJJGJlc3RKID0gJGJsbzsKCQkkYmVzdFNpemUgPSAwOwoKCQkkajJMZW4gPSBhcnJheSgpOwoJCSRub3RoaW5nID0gYXJyYXkoKTsKCgkJZm9yKCRpID0gJGFsbzsgJGkgPCAkYWhpOyArKyRpKSB7CgkJCSRuZXdKMkxlbiA9IGFycmF5KCk7CgkJCSRqRGljdCA9ICR0aGlzLT5hcnJheUdldERlZmF1bHQoJHRoaXMtPmIyaiwgJGFbJGldLCAkbm90aGluZyk7CgkJCWZvcmVhY2goJGpEaWN0IGFzICRqS2V5ID0+ICRqKSB7CgkJCQlpZigkaiA8ICRibG8pIHsKCQkJCQljb250aW51ZTsKCQkJCX0KCQkJCWVsc2UgaWYoJGogPj0gJGJoaSkgewoJCQkJCWJyZWFrOwoJCQkJfQoKCQkJCSRrID0gJHRoaXMtPmFycmF5R2V0RGVmYXVsdCgkajJMZW4sICRqIC0xLCAwKSArIDE7CgkJCQkkbmV3SjJMZW5bJGpdID0gJGs7CgkJCQlpZigkayA+ICRiZXN0U2l6ZSkgewoJCQkJCSRiZXN0SSA9ICRpIC0gJGsgKyAxOwoJCQkJCSRiZXN0SiA9ICRqIC0gJGsgKyAxOwoJCQkJCSRiZXN0U2l6ZSA9ICRrOwoJCQkJfQoJCQl9CgoJCQkkajJMZW4gPSAkbmV3SjJMZW47CgkJfQoKCQl3aGlsZSgkYmVzdEkgPiAkYWxvICYmICRiZXN0SiA+ICRibG8gJiYgISR0aGlzLT5pc0JKdW5rKCRiWyRiZXN0SiAtIDFdKSAmJgoJCQkhJHRoaXMtPmxpbmVzQXJlRGlmZmVyZW50KCRiZXN0SSAtIDEsICRiZXN0SiAtIDEpKSB7CgkJCQktLSRiZXN0STsKCQkJCS0tJGJlc3RKOwoJCQkJKyskYmVzdFNpemU7CgkJfQoKCQl3aGlsZSgkYmVzdEkgKyAkYmVzdFNpemUgPCAkYWhpICYmICgkYmVzdEogKyAkYmVzdFNpemUpIDwgJGJoaSAmJgoJCQkhJHRoaXMtPmlzQkp1bmsoJGJbJGJlc3RKICsgJGJlc3RTaXplXSkgJiYgISR0aGlzLT5saW5lc0FyZURpZmZlcmVudCgkYmVzdEkgKyAkYmVzdFNpemUsICRiZXN0SiArICRiZXN0U2l6ZSkpIHsKCQkJCSsrJGJlc3RTaXplOwoJCX0KCgkJd2hpbGUoJGJlc3RJID4gJGFsbyAmJiAkYmVzdEogPiAkYmxvICYmICR0aGlzLT5pc0JKdW5rKCRiWyRiZXN0SiAtIDFdKSAmJgoJCQkhJHRoaXMtPmlzTGluZURpZmZlcmVudCgkYmVzdEkgLSAxLCAkYmVzdEogLSAxKSkgewoJCQkJLS0kYmVzdEk7CgkJCQktLSRiZXN0SjsKCQkJCSsrJGJlc3RTaXplOwoJCX0KCgkJd2hpbGUoJGJlc3RJICsgJGJlc3RTaXplIDwgJGFoaSAmJiAkYmVzdEogKyAkYmVzdFNpemUgPCAkYmhpICYmCgkJCSR0aGlzLT5pc0JKdW5rKCRiWyRiZXN0SiArICRiZXN0U2l6ZV0pICYmICEkdGhpcy0+bGluZXNBcmVEaWZmZXJlbnQoJGJlc3RJICsgJGJlc3RTaXplLCAkYmVzdEogKyAkYmVzdFNpemUpKSB7CgkJCQkJKyskYmVzdFNpemU7CgkJfQoKCQlyZXR1cm4gYXJyYXkoCgkJCSRiZXN0SSwKCQkJJGJlc3RKLAoJCQkkYmVzdFNpemUKCQkpOwoJfQoKCS8qKgoJICogQ2hlY2sgaWYgdGhlIHR3byBsaW5lcyBhdCB0aGUgZ2l2ZW4gaW5kZXhlcyBhcmUgZGlmZmVyZW50IG9yIG5vdC4KCSAqCgkgKiBAcGFyYW0gaW50ICRhSW5kZXggTGluZSBudW1iZXIgdG8gY2hlY2sgYWdhaW5zdCBpbiBhLgoJICogQHBhcmFtIGludCAkYkluZGV4IExpbmUgbnVtYmVyIHRvIGNoZWNrIGFnYWluc3QgaW4gYi4KCSAqIEByZXR1cm4gYm9vbGVhbiBUcnVlIGlmIHRoZSBsaW5lcyBhcmUgZGlmZmVyZW50IGFuZCBmYWxzZSBpZiBub3QuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBsaW5lc0FyZURpZmZlcmVudCgkYUluZGV4LCAkYkluZGV4KQoJewoJCSRsaW5lQSA9ICR0aGlzLT5hWyRhSW5kZXhdOwoJCSRsaW5lQiA9ICR0aGlzLT5iWyRiSW5kZXhdOwoKCQlpZigkdGhpcy0+b3B0aW9uc1snaWdub3JlV2hpdGVzcGFjZSddKSB7CgkJCSRyZXBsYWNlID0gYXJyYXkoIlx0IiwgJyAnKTsKCQkJJGxpbmVBID0gc3RyX3JlcGxhY2UoJHJlcGxhY2UsICcnLCAkbGluZUEpOwoJCQkkbGluZUIgPSBzdHJfcmVwbGFjZSgkcmVwbGFjZSwgJycsICRsaW5lQik7CgkJfQoKCQlpZigkdGhpcy0+b3B0aW9uc1snaWdub3JlQ2FzZSddKSB7CgkJCSRsaW5lQSA9IHN0cnRvbG93ZXIoJGxpbmVBKTsKCQkJJGxpbmVCID0gc3RydG9sb3dlcigkbGluZUIpOwoJCX0KCgkJaWYoJGxpbmVBICE9ICRsaW5lQikgewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIFJldHVybiBhIG5lc3RlZCBzZXQgb2YgYXJyYXlzIGZvciBhbGwgb2YgdGhlIG1hdGNoaW5nIHN1Yi1zZXF1ZW5jZXMKCSAqIGluIHRoZSBzdHJpbmdzICRhIGFuZCAkYi4KCSAqCgkgKiBFYWNoIGJsb2NrIGNvbnRhaW5zIHRoZSBsb3dlciBjb25zdHJhaW50IG9mIHRoZSBibG9jayBpbiAkYSwgdGhlIGxvd2VyCgkgKiBjb25zdHJhaW50IG9mIHRoZSBibG9jayBpbiAkYiBhbmQgZmluYWxseSB0aGUgbnVtYmVyIG9mIGxpbmVzIHRoYXQgdGhlCgkgKiBibG9jayBjb250aW51ZXMgZm9yLgoJICoKCSAqIEByZXR1cm4gYXJyYXkgTmVzdGVkIGFycmF5IG9mIHRoZSBtYXRjaGluZyBibG9ja3MsIGFzIGRlc2NyaWJlZCBieSB0aGUgZnVuY3Rpb24uCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRNYXRjaGluZ0Jsb2NrcygpCgl7CgkJaWYoIWVtcHR5KCR0aGlzLT5tYXRjaGluZ0Jsb2NrcykpIHsKCQkJcmV0dXJuICR0aGlzLT5tYXRjaGluZ0Jsb2NrczsKCQl9CgoJCSRhTGVuZ3RoID0gY291bnQoJHRoaXMtPmEpOwoJCSRiTGVuZ3RoID0gY291bnQoJHRoaXMtPmIpOwoKCQkkcXVldWUgPSBhcnJheSgKCQkJYXJyYXkoCgkJCQkwLAoJCQkJJGFMZW5ndGgsCgkJCQkwLAoJCQkJJGJMZW5ndGgKCQkJKQoJCSk7CgoJCSRtYXRjaGluZ0Jsb2NrcyA9IGFycmF5KCk7CgkJd2hpbGUoIWVtcHR5KCRxdWV1ZSkpIHsKCQkJbGlzdCgkYWxvLCAkYWhpLCAkYmxvLCAkYmhpKSA9IGFycmF5X3BvcCgkcXVldWUpOwoJCQkkeCA9ICR0aGlzLT5maW5kTG9uZ2VzdE1hdGNoKCRhbG8sICRhaGksICRibG8sICRiaGkpOwoJCQlsaXN0KCRpLCAkaiwgJGspID0gJHg7CgkJCWlmKCRrKSB7CgkJCQkkbWF0Y2hpbmdCbG9ja3NbXSA9ICR4OwoJCQkJaWYoJGFsbyA8ICRpICYmICRibG8gPCAkaikgewoJCQkJCSRxdWV1ZVtdID0gYXJyYXkoCgkJCQkJCSRhbG8sCgkJCQkJCSRpLAoJCQkJCQkkYmxvLAoJCQkJCQkkagoJCQkJCSk7CgkJCQl9CgoJCQkJaWYoJGkgKyAkayA8ICRhaGkgJiYgJGogKyAkayA8ICRiaGkpIHsKCQkJCQkkcXVldWVbXSA9IGFycmF5KAoJCQkJCQkkaSArICRrLAoJCQkJCQkkYWhpLAoJCQkJCQkkaiArICRrLAoJCQkJCQkkYmhpCgkJCQkJKTsKCQkJCX0KCQkJfQoJCX0KCgkJdXNvcnQoJG1hdGNoaW5nQmxvY2tzLCBhcnJheSgkdGhpcywgJ3R1cGxlU29ydCcpKTsKCgkJJGkxID0gMDsKCQkkajEgPSAwOwoJCSRrMSA9IDA7CgkJJG5vbkFkamFjZW50ID0gYXJyYXkoKTsKCQlmb3JlYWNoKCRtYXRjaGluZ0Jsb2NrcyBhcyAkYmxvY2spIHsKCQkJbGlzdCgkaTIsICRqMiwgJGsyKSA9ICRibG9jazsKCQkJaWYoJGkxICsgJGsxID09ICRpMiAmJiAkajEgKyAkazEgPT0gJGoyKSB7CgkJCQkkazEgKz0gJGsyOwoJCQl9CgkJCWVsc2UgewoJCQkJaWYoJGsxKSB7CgkJCQkJJG5vbkFkamFjZW50W10gPSBhcnJheSgKCQkJCQkJJGkxLAoJCQkJCQkkajEsCgkJCQkJCSRrMQoJCQkJCSk7CgkJCQl9CgoJCQkJJGkxID0gJGkyOwoJCQkJJGoxID0gJGoyOwoJCQkJJGsxID0gJGsyOwoJCQl9CgkJfQoKCQlpZigkazEpIHsKCQkJJG5vbkFkamFjZW50W10gPSBhcnJheSgKCQkJCSRpMSwKCQkJCSRqMSwKCQkJCSRrMQoJCQkpOwoJCX0KCgkJJG5vbkFkamFjZW50W10gPSBhcnJheSgKCQkJJGFMZW5ndGgsCgkJCSRiTGVuZ3RoLAoJCQkwCgkJKTsKCgkJJHRoaXMtPm1hdGNoaW5nQmxvY2tzID0gJG5vbkFkamFjZW50OwoJCXJldHVybiAkdGhpcy0+bWF0Y2hpbmdCbG9ja3M7Cgl9CgoJLyoqCgkgKiBSZXR1cm4gYSBsaXN0IG9mIGFsbCBvZiB0aGUgb3Bjb2RlcyBmb3IgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlCgkgKiB0d28gc3RyaW5ncy4KCSAqCgkgKiBUaGUgbmVzdGVkIGFycmF5IHJldHVybmVkIGNvbnRhaW5zIGFuIGFycmF5IGRlc2NyaWJpbmcgdGhlIG9wY29kZQoJICogd2hpY2ggaW5jbHVkZXM6CgkgKiAwIC0gVGhlIHR5cGUgb2YgdGFnIChhcyBkZXNjcmliZWQgYmVsb3cpIGZvciB0aGUgb3Bjb2RlLgoJICogMSAtIFRoZSBiZWdpbm5pbmcgbGluZSBpbiB0aGUgZmlyc3Qgc2VxdWVuY2UuCgkgKiAyIC0gVGhlIGVuZCBsaW5lIGluIHRoZSBmaXJzdCBzZXF1ZW5jZS4KCSAqIDMgLSBUaGUgYmVnaW5uaW5nIGxpbmUgaW4gdGhlIHNlY29uZCBzZXF1ZW5jZS4KCSAqIDQgLSBUaGUgZW5kIGxpbmUgaW4gdGhlIHNlY29uZCBzZXF1ZW5jZS4KCSAqCgkgKiBUaGUgZGlmZmVyZW50IHR5cGVzIG9mIHRhZ3MgaW5jbHVkZToKCSAqIHJlcGxhY2UgLSBUaGUgc3RyaW5nIGZyb20gJGkxIHRvICRpMiBpbiAkYSBzaG91bGQgYmUgcmVwbGFjZWQgYnkKCSAqICAgICAgICAgICB0aGUgc3RyaW5nIGluICRiIGZyb20gJGoxIHRvICRqMi4KCSAqIGRlbGV0ZSAtICBUaGUgc3RyaW5nIGluICRhIGZyb20gJGkxIHRvICRqMiBzaG91bGQgYmUgZGVsZXRlZC4KCSAqIGluc2VydCAtICBUaGUgc3RyaW5nIGluICRiIGZyb20gJGoxIHRvICRqMiBzaG91bGQgYmUgaW5zZXJ0ZWQgYXQKCSAqICAgICAgICAgICAkaTEgaW4gJGEuCgkgKiBlcXVhbCAgLSAgVGhlIHR3byBzdHJpbmdzIHdpdGggdGhlIHNwZWNpZmllZCByYW5nZXMgYXJlIGVxdWFsLgoJICoKCSAqIEByZXR1cm4gYXJyYXkgQXJyYXkgb2YgdGhlIG9wY29kZXMgZGVzY3JpYmluZyB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgc3RyaW5ncy4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldE9wQ29kZXMoKQoJewoJCWlmKCFlbXB0eSgkdGhpcy0+b3BDb2RlcykpIHsKCQkJcmV0dXJuICR0aGlzLT5vcENvZGVzOwoJCX0KCgkJJGkgPSAwOwoJCSRqID0gMDsKCQkkdGhpcy0+b3BDb2RlcyA9IGFycmF5KCk7CgoJCSRibG9ja3MgPSAkdGhpcy0+Z2V0TWF0Y2hpbmdCbG9ja3MoKTsKCQlmb3JlYWNoKCRibG9ja3MgYXMgJGJsb2NrKSB7CgkJCWxpc3QoJGFpLCAkYmosICRzaXplKSA9ICRibG9jazsKCQkJJHRhZyA9ICcnOwoJCQlpZigkaSA8ICRhaSAmJiAkaiA8ICRiaikgewoJCQkJJHRhZyA9ICdyZXBsYWNlJzsKCQkJfQoJCQllbHNlIGlmKCRpIDwgJGFpKSB7CgkJCQkkdGFnID0gJ2RlbGV0ZSc7CgkJCX0KCQkJZWxzZSBpZigkaiA8ICRiaikgewoJCQkJJHRhZyA9ICdpbnNlcnQnOwoJCQl9CgoJCQlpZigkdGFnKSB7CgkJCQkkdGhpcy0+b3BDb2Rlc1tdID0gYXJyYXkoCgkJCQkJJHRhZywKCQkJCQkkaSwKCQkJCQkkYWksCgkJCQkJJGosCgkJCQkJJGJqCgkJCQkpOwoJCQl9CgoJCQkkaSA9ICRhaSArICRzaXplOwoJCQkkaiA9ICRiaiArICRzaXplOwoKCQkJaWYoJHNpemUpIHsKCQkJCSR0aGlzLT5vcENvZGVzW10gPSBhcnJheSgKCQkJCQknZXF1YWwnLAoJCQkJCSRhaSwKCQkJCQkkaSwKCQkJCQkkYmosCgkJCQkJJGoKCQkJCSk7CgkJCX0KCQl9CgkJcmV0dXJuICR0aGlzLT5vcENvZGVzOwoJfQoKCS8qKgoJICogUmV0dXJuIGEgc2VyaWVzIG9mIG5lc3RlZCBhcnJheXMgY29udGFpbmluZyBkaWZmZXJlbnQgZ3JvdXBzIG9mIGdlbmVyYXRlZAoJICogb3Bjb2RlcyBmb3IgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHN0cmluZ3Mgd2l0aCB1cCB0byAkY29udGV4dCBsaW5lcwoJICogb2Ygc3Vycm91bmRpbmcgY29udGVudC4KCSAqCgkgKiBFc3NlbnRpYWxseSB3aGF0IGhhcHBlbnMgaGVyZSBpcyBhbnkgYmlnIGVxdWFsIGJsb2NrcyBvZiBzdHJpbmdzIGFyZSBzdHJpcHBlZAoJICogb3V0LCB0aGUgc21hbGxlciBzdWJzZXRzIG9mIGNoYW5nZXMgYXJlIHRoZW4gYXJyYW5nZWQgaW4gdG8gdGhlaXIgZ3JvdXBzLgoJICogVGhpcyBtZWFucyB0aGF0IHRoZSBzZXF1ZW5jZSBtYXRjaGVyIGFuZCBkaWZmcyBkbyBub3QgbmVlZCB0byBpbmNsdWRlIHRoZSBmdWxsCgkgKiBjb250ZW50IG9mIHRoZSBkaWZmZXJlbnQgZmlsZXMgYnV0IGNhbiBzdGlsbCBwcm92aWRlIGNvbnRleHQgYXMgdG8gd2hlcmUgdGhlCgkgKiBjaGFuZ2VzIGFyZS4KCSAqCgkgKiBAcGFyYW0gaW50ICRjb250ZXh0IFRoZSBudW1iZXIgb2YgbGluZXMgb2YgY29udGV4dCB0byBwcm92aWRlIGFyb3VuZCB0aGUgZ3JvdXBzLgoJICogQHJldHVybiBhcnJheSBOZXN0ZWQgYXJyYXkgb2YgYWxsIG9mIHRoZSBncm91cGVkIG9wY29kZXMuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRHcm91cGVkT3Bjb2RlcygkY29udGV4dD0zKQoJewoJCSRvcENvZGVzID0gJHRoaXMtPmdldE9wQ29kZXMoKTsKCQlpZihlbXB0eSgkb3BDb2RlcykpIHsKCQkJJG9wQ29kZXMgPSBhcnJheSgKCQkJCWFycmF5KAoJCQkJCSdlcXVhbCcsCgkJCQkJMCwKCQkJCQkxLAoJCQkJCTAsCgkJCQkJMQoJCQkJKQoJCQkpOwoJCX0KCgkJaWYoJG9wQ29kZXNbMF1bMF0gPT0gJ2VxdWFsJykgewoJCQkkb3BDb2Rlc1swXSA9IGFycmF5KAoJCQkJJG9wQ29kZXNbMF1bMF0sCgkJCQltYXgoJG9wQ29kZXNbMF1bMV0sICRvcENvZGVzWzBdWzJdIC0gJGNvbnRleHQpLAoJCQkJJG9wQ29kZXNbMF1bMl0sCgkJCQltYXgoJG9wQ29kZXNbMF1bM10sICRvcENvZGVzWzBdWzRdIC0gJGNvbnRleHQpLAoJCQkJJG9wQ29kZXNbMF1bNF0KCQkJKTsKCQl9CgoJCSRsYXN0SXRlbSA9IGNvdW50KCRvcENvZGVzKSAtIDE7CgkJaWYoJG9wQ29kZXNbJGxhc3RJdGVtXVswXSA9PSAnZXF1YWwnKSB7CgkJCWxpc3QoJHRhZywgJGkxLCAkaTIsICRqMSwgJGoyKSA9ICRvcENvZGVzWyRsYXN0SXRlbV07CgkJCSRvcENvZGVzWyRsYXN0SXRlbV0gPSBhcnJheSgKCQkJCSR0YWcsCgkJCQkkaTEsCgkJCQltaW4oJGkyLCAkaTEgKyAkY29udGV4dCksCgkJCQkkajEsCgkJCQltaW4oJGoyLCAkajEgKyAkY29udGV4dCkKCQkJKTsKCQl9CgoJCSRtYXhSYW5nZSA9ICRjb250ZXh0ICogMjsKCQkkZ3JvdXBzID0gYXJyYXkoKTsKCQkkZ3JvdXAgPSBhcnJheSgpOwoJCWZvcmVhY2goJG9wQ29kZXMgYXMgJGNvZGUpIHsKCQkJbGlzdCgkdGFnLCAkaTEsICRpMiwgJGoxLCAkajIpID0gJGNvZGU7CgkJCWlmKCR0YWcgPT0gJ2VxdWFsJyAmJiAkaTIgLSAkaTEgPiAkbWF4UmFuZ2UpIHsKCQkJCSRncm91cFtdID0gYXJyYXkoCgkJCQkJJHRhZywKCQkJCQkkaTEsCgkJCQkJbWluKCRpMiwgJGkxICsgJGNvbnRleHQpLAoJCQkJCSRqMSwKCQkJCQltaW4oJGoyLCAkajEgKyAkY29udGV4dCkKCQkJCSk7CgkJCQkkZ3JvdXBzW10gPSAkZ3JvdXA7CgkJCQkkZ3JvdXAgPSBhcnJheSgpOwoJCQkJJGkxID0gbWF4KCRpMSwgJGkyIC0gJGNvbnRleHQpOwoJCQkJJGoxID0gbWF4KCRqMSwgJGoyIC0gJGNvbnRleHQpOwoJCQl9CgkJCSRncm91cFtdID0gYXJyYXkoCgkJCQkkdGFnLAoJCQkJJGkxLAoJCQkJJGkyLAoJCQkJJGoxLAoJCQkJJGoyCgkJCSk7CgkJfQoKCQlpZighZW1wdHkoJGdyb3VwKSAmJiAhKGNvdW50KCRncm91cCkgPT0gMSAmJiAkZ3JvdXBbMF1bMF0gPT0gJ2VxdWFsJykpIHsKCQkJJGdyb3Vwc1tdID0gJGdyb3VwOwoJCX0KCgkJcmV0dXJuICRncm91cHM7Cgl9CgoJLyoqCgkgKiBSZXR1cm4gYSBtZWFzdXJlIG9mIHRoZSBzaW1pbGFyaXR5IGJldHdlZW4gdGhlIHR3byBzZXF1ZW5jZXMuCgkgKiBUaGlzIHdpbGwgYmUgYSBmbG9hdCB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDEuCgkgKgoJICogT3V0IG9mIGFsbCBvZiB0aGUgcmF0aW8gY2FsY3VsYXRpb24gZnVuY3Rpb25zLCB0aGlzIGlzIHRoZSBtb3N0CgkgKiBleHBlbnNpdmUgdG8gY2FsbCBpZiBnZXRNYXRjaGluZ0Jsb2NrcyBvciBnZXRPcENvZGVzIGlzIHlldCB0byBiZQoJICogY2FsbGVkLiBUaGUgb3RoZXIgY2FsY3VsYXRpb24gbWV0aG9kcyAocXVpY2tSYXRpbyBhbmQgcmVhbHF1aWNrUmF0aW8pCgkgKiBjYW4gYmUgdXNlZCB0byBwZXJmb3JtIHF1aWNrZXIgY2FsY3VsYXRpb25zIGJ1dCBtYXkgYmUgbGVzcyBhY2N1cmF0ZS4KCSAqCgkgKiBUaGUgcmF0aW8gaXMgY2FsY3VsYXRlZCBhcyAoMiAqIG51bWJlciBvZiBtYXRjaGVzKSAvIHRvdGFsIG51bWJlciBvZgoJICogZWxlbWVudHMgaW4gYm90aCBzZXF1ZW5jZXMuCgkgKgoJICogQHJldHVybiBmbG9hdCBUaGUgY2FsY3VsYXRlZCByYXRpby4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIFJhdGlvKCkKCXsKCQkkbWF0Y2hlcyA9IGFycmF5X3JlZHVjZSgkdGhpcy0+Z2V0TWF0Y2hpbmdCbG9ja3MoKSwgYXJyYXkoJHRoaXMsICdyYXRpb1JlZHVjZScpLCAwKTsKCQlyZXR1cm4gJHRoaXMtPmNhbGN1bGF0ZVJhdGlvKCRtYXRjaGVzLCBjb3VudCAoJHRoaXMtPmEpICsgY291bnQgKCR0aGlzLT5iKSk7Cgl9CgoJLyoqCgkgKiBIZWxwZXIgZnVuY3Rpb24gdG8gY2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgbWF0Y2hlcyBmb3IgUmF0aW8oKS4KCSAqCgkgKiBAcGFyYW0gaW50ICRzdW0gVGhlIHJ1bm5pbmcgdG90YWwgZm9yIHRoZSBudW1iZXIgb2YgbWF0Y2hlcy4KCSAqIEBwYXJhbSBhcnJheSAkdHJpcGxlIEFycmF5IGNvbnRhaW5pbmcgdGhlIG1hdGNoaW5nIGJsb2NrIHRyaXBsZSB0byBhZGQgdG8gdGhlIHJ1bm5pbmcgdG90YWwuCgkgKiBAcmV0dXJuIGludCBUaGUgbmV3IHJ1bm5pbmcgdG90YWwgZm9yIHRoZSBudW1iZXIgb2YgbWF0Y2hlcy4KCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiByYXRpb1JlZHVjZSgkc3VtLCAkdHJpcGxlKQoJewoJCXJldHVybiAkc3VtICsgKCR0cmlwbGVbY291bnQoJHRyaXBsZSkgLSAxXSk7Cgl9CgoJLyoqCgkgKiBRdWlja2x5IHJldHVybiBhbiB1cHBlciBib3VuZCByYXRpbyBmb3IgdGhlIHNpbWlsYXJpdHkgb2YgdGhlIHN0cmluZ3MuCgkgKiBUaGlzIGlzIHF1aWNrZXIgdG8gY29tcHV0ZSB0aGFuIFJhdGlvKCkuCgkgKgoJICogQHJldHVybiBmbG9hdCBUaGUgY2FsY3VsYXRlZCByYXRpby4KCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBxdWlja1JhdGlvKCkKCXsKCQlpZigkdGhpcy0+ZnVsbEJDb3VudCA9PT0gbnVsbCkgewoJCQkkdGhpcy0+ZnVsbEJDb3VudCA9IGFycmF5KCk7CgkJCSRiTGVuZ3RoID0gY291bnQgKCRiKTsKCQkJZm9yKCRpID0gMDsgJGkgPCAkYkxlbmd0aDsgKyskaSkgewoJCQkJJGNoYXIgPSAkdGhpcy0+YlskaV07CgkJCQkkdGhpcy0+ZnVsbEJDb3VudFskY2hhcl0gPSAkdGhpcy0+YXJyYXlHZXREZWZhdWx0KCR0aGlzLT5mdWxsQkNvdW50LCAkY2hhciwgMCkgKyAxOwoJCQl9CgkJfQoKCQkkYXZhaWwgPSBhcnJheSgpOwoJCSRtYXRjaGVzID0gMDsKCQkkYUxlbmd0aCA9IGNvdW50ICgkdGhpcy0+YSk7CgkJZm9yKCRpID0gMDsgJGkgPCAkYUxlbmd0aDsgKyskaSkgewoJCQkkY2hhciA9ICR0aGlzLT5hWyRpXTsKCQkJaWYoaXNzZXQoJGF2YWlsWyRjaGFyXSkpIHsKCQkJCSRudW1iID0gJGF2YWlsWyRjaGFyXTsKCQkJfQoJCQllbHNlIHsKCQkJCSRudW1iID0gJHRoaXMtPmFycmF5R2V0RGVmYXVsdCgkdGhpcy0+ZnVsbEJDb3VudCwgJGNoYXIsIDApOwoJCQl9CgkJCSRhdmFpbFskY2hhcl0gPSAkbnVtYiAtIDE7CgkJCWlmKCRudW1iID4gMCkgewoJCQkJKyskbWF0Y2hlczsKCQkJfQoJCX0KCgkJJHRoaXMtPmNhbGN1bGF0ZVJhdGlvKCRtYXRjaGVzLCBjb3VudCAoJHRoaXMtPmEpICsgY291bnQgKCR0aGlzLT5iKSk7Cgl9CgoJLyoqCgkgKiBSZXR1cm4gYW4gdXBwZXIgYm91bmQgcmF0aW8gcmVhbGx5IHF1aWNrbHkgZm9yIHRoZSBzaW1pbGFyaXR5IG9mIHRoZSBzdHJpbmdzLgoJICogVGhpcyBpcyBxdWlja2VyIHRvIGNvbXB1dGUgdGhhbiBSYXRpbygpIGFuZCBxdWlja1JhdGlvKCkuCgkgKgoJICogQHJldHVybiBmbG9hdCBUaGUgY2FsY3VsYXRlZCByYXRpby4KCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiByZWFscXVpY2tSYXRpbygpCgl7CgkJJGFMZW5ndGggPSBjb3VudCAoJHRoaXMtPmEpOwoJCSRiTGVuZ3RoID0gY291bnQgKCR0aGlzLT5iKTsKCgkJcmV0dXJuICR0aGlzLT5jYWxjdWxhdGVSYXRpbyhtaW4oJGFMZW5ndGgsICRiTGVuZ3RoKSwgJGFMZW5ndGggKyAkYkxlbmd0aCk7Cgl9CgoJLyoqCgkgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGNhbGN1bGF0aW5nIHRoZSByYXRpbyB0byBtZWFzdXJlIHNpbWlsYXJpdHkgZm9yIHRoZSBzdHJpbmdzLgoJICogVGhlIHJhdGlvIGlzIGRlZmluZWQgYXMgYmVpbmcgMiAqIChudW1iZXIgb2YgbWF0Y2hlcyAvIHRvdGFsIGxlbmd0aCkKCSAqCgkgKiBAcGFyYW0gaW50ICRtYXRjaGVzIFRoZSBudW1iZXIgb2YgbWF0Y2hlcyBpbiB0aGUgdHdvIHN0cmluZ3MuCgkgKiBAcGFyYW0gaW50ICRsZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgdHdvIHN0cmluZ3MuCgkgKiBAcmV0dXJuIGZsb2F0IFRoZSBjYWxjdWxhdGVkIHJhdGlvLgoJICovCglwcml2YXRlIGZ1bmN0aW9uIGNhbGN1bGF0ZVJhdGlvKCRtYXRjaGVzLCAkbGVuZ3RoPTApCgl7CgkJaWYoJGxlbmd0aCkgewoJCQlyZXR1cm4gMiAqICgkbWF0Y2hlcyAvICRsZW5ndGgpOwoJCX0KCQllbHNlIHsKCQkJcmV0dXJuIDE7CgkJfQoJfQoKCS8qKgoJICogSGVscGVyIGZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gcmV0dXJuIHRoZSB2YWx1ZSBmb3IgYSBrZXkKCSAqIGluIGFuIGFycmF5IG9mIGl0IGV4aXN0cywgb3IgaWYgaXQgZG9lc24ndCB0aGVuIHJldHVybiBhIGRlZmF1bHQgdmFsdWUuCgkgKiBFc3NlbnRpYWxseSBjbGVhbmVyIHRoYW4gZG9pbmcgYSBzZXJpZXMgb2YgaWYoaXNzZXQoKSkge30gZWxzZSB7fSBjYWxscy4KCSAqCgkgKiBAcGFyYW0gYXJyYXkgJGFycmF5IFRoZSBhcnJheSB0byBzZWFyY2guCgkgKiBAcGFyYW0gc3RyaW5nICRrZXkgVGhlIGtleSB0byBjaGVjayB0aGF0IGV4aXN0cy4KCSAqIEBwYXJhbSBtaXhlZCAkZGVmYXVsdCBUaGUgdmFsdWUgdG8gcmV0dXJuIGFzIHRoZSBkZWZhdWx0IHZhbHVlIGlmIHRoZSBrZXkgZG9lc24ndCBleGlzdC4KCSAqIEByZXR1cm4gbWl4ZWQgVGhlIHZhbHVlIGZyb20gdGhlIGFycmF5IGlmIHRoZSBrZXkgZXhpc3RzIG9yIG90aGVyd2lzZSB0aGUgZGVmYXVsdC4KCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBhcnJheUdldERlZmF1bHQoJGFycmF5LCAka2V5LCAkZGVmYXVsdCkKCXsKCQlpZihpc3NldCgkYXJyYXlbJGtleV0pKSB7CgkJCXJldHVybiAkYXJyYXlbJGtleV07CgkJfQoJCWVsc2UgewoJCQlyZXR1cm4gJGRlZmF1bHQ7CgkJfQoJfQoKCS8qKgoJICogU29ydCBhbiBhcnJheSBieSB0aGUgbmVzdGVkIGFycmF5cyBpdCBjb250YWlucy4gSGVscGVyIGZ1bmN0aW9uIGZvciBnZXRNYXRjaGluZ0Jsb2NrcwoJICoKCSAqIEBwYXJhbSBhcnJheSAkYSBGaXJzdCBhcnJheSB0byBjb21wYXJlLgoJICogQHBhcmFtIGFycmF5ICRiIFNlY29uZCBhcnJheSB0byBjb21wYXJlLgoJICogQHJldHVybiBpbnQgLTEsIDAgb3IgMSwgYXMgZXhwZWN0ZWQgYnkgdGhlIHVzb3J0IGZ1bmN0aW9uLgoJICovCglwcml2YXRlIGZ1bmN0aW9uIHR1cGxlU29ydCgkYSwgJGIpCgl7CgkJJG1heCA9IG1heChjb3VudCgkYSksIGNvdW50KCRiKSk7CgkJZm9yKCRpID0gMDsgJGkgPCAkbWF4OyArKyRpKSB7CgkJCWlmKCRhWyRpXSA8ICRiWyRpXSkgewoJCQkJcmV0dXJuIC0xOwoJCQl9CgkJCWVsc2UgaWYoJGFbJGldID4gJGJbJGldKSB7CgkJCQlyZXR1cm4gMTsKCQkJfQoJCX0KCgkJaWYoY291bnQoJGEpID09ICRjb3VudCgkYikpIHsKCQkJcmV0dXJuIDA7CgkJfQoJCWVsc2UgaWYoY291bnQoJGEpIDwgY291bnQoJGIpKSB7CgkJCXJldHVybiAtMTsKCQl9CgkJZWxzZSB7CgkJCXJldHVybiAxOwoJCX0KCX0KfQ==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPgojIFdlYjogd3d3LmJsYXR0ZXJ0ZWNoLmNoCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFJldmlzaW9ucyBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwgQ1NTLAojIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gcmV2ZXJ0IHRvIGVhcmxpZXIgdmVyc2lvbnMgb2YgaXQuIAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBEYXRhYmFzZSB0YWJsZXMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwokdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOwoKLy8gQ1JFQVRFIFJFVklTSU9OUyBUQUJMRQokZmllbGRzID0gJwoJcmV2aXNpb25faWQgSSBLRVkgTk9UTlVMTCBVTlNJR05FRCwKCXJldmlzaW9uX25yIEkgTk9UTlVMTCBVTlNJR05FRCwKCW1vZHVsZV9uYW1lIEMoMjU1KSBOT1ROVUxMLAoJY29udGVudF9pZCBJIE5PVE5VTEwgVU5TSUdORUQsCgljb250ZW50IFhMIE5PVE5VTEwsIAoJY29udGVudGJsb2NrcyBYIE5VTEwsCgljcmVhdGVfdGltZSBEVCBOT1ROVUxMLAoJdXNlcl9pZCBJIE5PVE5VTEwgVU5TSUdORUQKJzsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zJywgJGZpZWxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zX3NlcScpOwoKCi8vLy8gQ1JFQVRFIFJFVklTSU9OU19ESUZGIFRBQkxFCi8vJGZpZWxkcyA9ICcKLy8JaWQgSSBLRVkgQVVUTyBVTlNJR05FRCwKLy8JcmV2aXNpb25faWQgSSBOT1ROVUxMIFVOU0lHTkVELAovLwlibG9ja19uYW1lIEMoMjU1KSBOT1ROVUxMLAovLwliYXNlX29mZnNldCBJIE5PVE5VTEwgVU5TSUdORUQsCi8vCWNoYW5nZWRfb2Zmc2V0IEkgTk9UTlVMTCBVTlNJR05FRCwKLy8JYmFzZSBYIE5PVE5VTEwsCi8vCWNoYW5nZWQgWCBOT1ROVUxMCi8vJzsKLy8kc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnNfZGlmZicsICRmaWVsZHMsICR0YWJvcHRhcnJheSk7Ci8vJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gQUREIElOREVYIHJldmlzaW9uX2lkCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTCgncmV2aXNpb25faWQnLCBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9uc19kaWZmJywgYXJyYXkoJ3JldmlzaW9uX2lkJykpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovLwovLyBDUkVBVEUgUkVWSVNJT05TX1JFQ1lDTEUgVEFCTEUKJGZpZWxkcyA9ICcKCWlkIEkgS0VZIEFVVE8gVU5TSUdORUQsCgltb2R1bGVfbmFtZSBDKDI1NSkgTk9UTlVMTCwKCWNvbnRlbnRfaWQgSSBOT1ROVUxMIFVOU0lHTkVELAoJY29udGVudF9uYW1lIEMoMjU1KSBOVVROVUxMLAoJY29udGVudF9vYmplY3QgWCBOT1ROVUxMLAoJY3JlYXRlX3RpbWUgRFQgTk9UTlVMTCwKCXVzZXJfaWQgSSBOT1ROVUxMIFVOU0lHTkVECic7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9uc19yZWN5Y2xlJywgJGZpZWxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gQUREIFVOSVFVRSAoTU9EVUxFX05BTUUsIENPTlRFTlRfSUQpCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTCgndW5pcXVlX2NvbnRlbnQnLCBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9uc19yZWN5Y2xlJywgYXJyYXkoJ21vZHVsZV9uYW1lJywgJ2NvbnRlbnRfaWQnKSwgYXJyYXkoJ1VOSVFVRScgPT4gdHJ1ZSkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJlZmVyZW5jZXMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3N0b3JlX3JldmlzaW9uc19jb3VudCcsICcwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWxldGVfcmV2aXNpb25zX3dpdGhfY29udGVudCcsICcwJyk7CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUGVybWlzc2lvbnMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ3JldmlzaW9uc191c2UnLCAnUmV2aXNpb25zOiBVc2UnKTsKJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ3JldmlzaW9uc19vcHRpb25zJywgJ1JldmlzaW9uczogU2V0IE9wdGlvbnMnKTsKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFdmVudHMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdDb250ZW50RWRpdFByZScsIGZhbHNlKTsKJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdDb250ZW50RGVsZXRlUHJlJywgZmFsc2UpOwokdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0VkaXRHbG9iYWxDb250ZW50UHJlJywgZmFsc2UpOwokdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0RlbGV0ZUdsb2JhbENvbnRlbnRQcmUnLCBmYWxzZSk7CiR0aGlzLT5BZGRFdmVudEhhbmRsZXIoJ0NvcmUnLCAnRWRpdFRlbXBsYXRlUHJlJywgZmFsc2UpOwokdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0RlbGV0ZVRlbXBsYXRlUHJlJywgZmFsc2UpOwokdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0VkaXRTdHlsZXNoZWV0UHJlJywgZmFsc2UpOwokdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0RlbGV0ZVN0eWxlc2hlZXRQcmUnLCBmYWxzZSk7CgoKJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCdpbnN0YWxsZWQnLCR0aGlzLT5HZXRWZXJzaW9uKCkpKTsK]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPgojIFdlYjogd3d3LmJsYXR0ZXJ0ZWNoLmNoCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFJldmlzaW9ucyBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwgQ1NTLAojIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gcmV2ZXJ0IHRvIGVhcmxpZXIgdmVyc2lvbnMgb2YgaXQuIAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBEYXRhYmFzZSB0YWJsZXMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucycpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRkYi0+RHJvcFNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zX3NlcScpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9uc19yZWN5Y2xlJyk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUZW1wbGF0ZXMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQkKCiR0aGlzLT5EZWxldGVUZW1wbGF0ZSgpOwoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByZWZlcmVuY2VzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCk7CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUGVybWlzc2lvbnMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ3JldmlzaW9uc191c2UnKTsKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ3JldmlzaW9uc19vcHRpb25zJyk7CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgRXZlbnRzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NvcmUnLCAnQ29udGVudEVkaXRQb3N0JywgZmFsc2UpOwokdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0NvbnRlbnREZWxldGVQcmUnLCBmYWxzZSk7CiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NvcmUnLCAnRWRpdEdsb2JhbENvbnRlbnRQb3N0JywgZmFsc2UpOwokdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0RlbGV0ZUdsb2JhbENvbnRlbnRQcmUnLCBmYWxzZSk7CiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NvcmUnLCAnRWRpdFRlbXBsYXRlUG9zdCcsIGZhbHNlKTsKJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ29yZScsICdEZWxldGVUZW1wbGF0ZVByZScsIGZhbHNlKTsKJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ29yZScsICdFZGl0U3R5bGVzaGVldFBvc3QnLCBmYWxzZSk7CiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NvcmUnLCAnRGVsZXRlU3R5bGVzaGVldFByZScsIGZhbHNlKTsKCgokdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0NvbnRlbnRFZGl0UHJlJywgZmFsc2UpOwokdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0VkaXRHbG9iYWxDb250ZW50UHJlJywgZmFsc2UpOwokdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0VkaXRUZW1wbGF0ZVByZScsIGZhbHNlKTsKJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ29yZScsICdFZGl0U3R5bGVzaGVldFByZScsIGZhbHNlKTsK]]></data>
	</file>
	<file>
	  <filename>/Revisions.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPgojIFdlYjogd3d3LmJsYXR0ZXJ0ZWNoLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFJldmlzaW9ucyBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwKIyB0ZW1wbGF0ZXMsIENTUywgR0NCcyBhbmQgZW5hYmxlcyB0aGUgd2ViIGRldmVsb3BlciB0byB2aWV3IGRpZmYgb3IgcmV2ZXJ0IHRvIGFuIGVhcmxpZXIKIyB2ZXJzaW9uIG9mIGl0LiAKIwojIAojIFRPRE86IGltcGxlbWVudCBQYWdlcwojIFRPRE86IHdoYXQgaGFwcGVucyBpZiB1c2VyIHRoYXQgY3JlYXRlZCBhIHJldmlzaW9uIGlzIGRlbGV0ZWQ/CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgokY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CgpyZXF1aXJlX29uY2UoY21zX2pvaW5fcGF0aCgkY29uZmlnWydyb290X3BhdGgnXS4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10sImVkaXRjb250ZW50X2V4dHJhLnBocCIpKTsKCmNsYXNzIFJldmlzaW9ucyBleHRlbmRzIENNU01vZHVsZQp7CgkjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkjIEF0dHJpYnV0ZXMKCSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwcml2YXRlICRfcGVybXM7Cglwcml2YXRlICRfbG9nOwoJcHJpdmF0ZSAkX2Vycm9yczsKCgkjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkjIE1hZ2ljIG1ldGhvZHMKCSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwdWJsaWMgZnVuY3Rpb24gJl9fZ2V0KCRrZXkpCgl7CgkgICAgaWYgKCRrZXkgPT0gJ3VzZXJpZCcpCgkJewoJCQkkdXNlcmlkID0gZ2V0X3VzZXJpZCgpOwoJICAgICAgICByZXR1cm4gJHVzZXJpZDsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIHBhcmVudDo6X19nZXQoJGtleSk7CgkJfQoJfQoJCgkKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCgl7Ci8vCQkkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0NvbnRlbnRFZGl0UHJlJywgZmFsc2UpOwovLwkJJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdDb250ZW50RGVsZXRlUHJlJywgZmFsc2UpOwovLwkJJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdFZGl0R2xvYmFsQ29udGVudFByZScsIGZhbHNlKTsKLy8JCSR0aGlzLT5BZGRFdmVudEhhbmRsZXIoJ0NvcmUnLCAnRGVsZXRlR2xvYmFsQ29udGVudFByZScsIGZhbHNlKTsKLy8JCSR0aGlzLT5BZGRFdmVudEhhbmRsZXIoJ0NvcmUnLCAnRWRpdFRlbXBsYXRlUHJlJywgZmFsc2UpOwovLwkJJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdEZWxldGVUZW1wbGF0ZVByZScsIGZhbHNlKTsKLy8JCSR0aGlzLT5BZGRFdmVudEhhbmRsZXIoJ0NvcmUnLCAnRWRpdFN0eWxlc2hlZXRQcmUnLCBmYWxzZSk7Ci8vCQkkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0RlbGV0ZVN0eWxlc2hlZXRQcmUnLCBmYWxzZSk7CgkJCgkJCgkJJHRoaXMtPlNldEV2ZW50T3JkZXIoKTsKCQlwYXJlbnQ6OkNNU01vZHVsZSgpOwoJfQoKCSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSMgTW9kdWxlIGFwaSBtZXRob2RzCgkjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkKCXB1YmxpYyBmdW5jdGlvbiBHZXROYW1lKCkKCXsKCQlyZXR1cm4gJ1JldmlzaW9ucyc7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpCgl7CgkJcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gR2V0VmVyc2lvbigpCgl7CgkJcmV0dXJuICcxLjAtQmV0YSc7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIEdldEhlbHAoKQoJewoJCS8vIFRPRE86IGFkZCBkb25hdGUgYnV0dG9uCgkJJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwoJCSRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKCgkJJHNtYXJ0eS0+YXNzaWduKCdyb290dXJsJywgJGNvbmZpZ1sncm9vdF91cmwnXSk7CgkJJHNtYXJ0eS0+YXNzaWduKCdtb2QnLCAkdGhpcyk7CgoJCXJldHVybiAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdoZWxwLnRwbCcpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3IoKQoJewoJCXJldHVybiAnTHVrYXMgQmxhdHRlcic7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkKCXsKCQlyZXR1cm4gJ2xiQGJsYXR0ZXJ0ZWNoLmNoJzsKCX0KCglwdWJsaWMgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBIYXNBZG1pbigpCgl7CgkJcmV0dXJuIHRydWU7Cgl9CgoJZnVuY3Rpb24gSXNBZG1pbk9ubHkoKQoJewoJCXJldHVybiB0cnVlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBMYXp5TG9hZEFkbWluKCkKCXsKCQlyZXR1cm4gdHJ1ZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkKCXsKCQlyZXR1cm4gJ2NvbnRlbnQnOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpCgl7CgkJJGFkbWludGhlbWUgPSBjbXNtcygpLT5nZXRfdmFyaWFibGUoJ2FkbWludGhlbWUnKTsKCQlyZXR1cm4gKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ3JldmlzaW9uc191c2UnKSAmJiAoJHRoaXMtPkNoZWNrUGVybWlzc2lvbigncmV2aXNpb25zX29wdGlvbnMnKSB8fCAkdGhpcy0+SGFzUGVybSgncGFnZVBlcm1zJykgfHwgJHRoaXMtPkhhc1Blcm0oJ2h0bWxQZXJtcycpIHx8ICR0aGlzLT5IYXNQZXJtKCd0ZW1wbGF0ZVBlcm1zJykgfHwgJHRoaXMtPkhhc1Blcm0oJ2Nzc1Blcm1zJykpKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKQoJewoJCXJldHVybiAnMS4xMC4zJzsKCX0KCglwdWJsaWMgZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkKCXsKCQlyZXR1cm4gYXJyYXkoKTsKCQkvL3JldHVybiBhcnJheSgnQWNlRWRpdG9yJyA9PiAnMC4yLjMuMicpOwoJfQoKCQoJcHJpdmF0ZSBmdW5jdGlvbiBMb2coJGxvZ3R4dCkgCgl7CgkJaWYgKGlzX29iamVjdCgkdGhpcy0+X2xvZykpIHsKCQkJJHRoaXMtPl9sb2ctPmx3cml0ZSgkbG9ndHh0KTsKCQl9CgkJZWxzZSB7CQkKCQkJJGxvZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnVG9vbEJveCcpOwoJCQlpZiAoaXNfb2JqZWN0KCRsb2cpKSB7CgkJCQkkbG9nLT5zZXRMb2dGaWxlKCd0YlJldmlzaW9ucycpOyAvLyBPcHRpb25hbC4gSGllciBrYW5uIGRlciBOYW1lIGRlcyBMb2dmaWxlcyBmZXN0Z2VsZWd0IHdlcmRlbgoJCQkJJHRoaXMtPl9sb2cgPSAkbG9nOwoJCQkJJHRoaXMtPl9sb2ctPmx3cml0ZSgkbG9ndHh0KTsKCQkJfQoJCX0KCX0KCQoJCglwdWJsaWMgZnVuY3Rpb24gR2V0SGVhZGVySFRNTCgpCgl7CgkJJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwoJCSRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKCgkJJHNtYXJ0eS0+YXNzaWduKCdhZG1pbmRpcicsICRjb25maWdbJ2FkbWluX3VybCddKTsKCQkkc21hcnR5LT5hc3NpZ24oJ21vZHVsZWRpcicsICR0aGlzLT5HZXRNb2R1bGVVUkxQYXRoKCkpOwoJCSRzbWFydHktPmFzc2lnbigndXNlcmtleScsIGdldF9zZWN1cmVfcGFyYW0oKSk7CgkJaWYodmVyc2lvbl9jb21wYXJlKENNU19WRVJTSU9OLCAnMS4xMS1hbHBoYScpIDwgMSkKCQl7CgkJCSRzbWFydHktPmFzc2lnbignanF1ZXJ5X2NzcycsICc8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2xpYi9qcXVlcnkvY3NzL3Ntb290aG5lc3MvanF1ZXJ5LXVpLTEuOC4xMi5jdXN0b20uY3NzIiAvPicpOwoJCX0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2hlYWRlci50cGwnKTsKICAgIH0KCglwdWJsaWMgZnVuY3Rpb24gRG9BY3Rpb24oJG5hbWUsICRpZCwgJHBhcmFtcywgJHJldHVybmlkID0gJycpCgl7CgkJJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwoKCQkkc21hcnR5LT5hc3NpZ25fYnlfcmVmKCdtb2QnLCAkdGhpcyk7CgkJJHNtYXJ0eS0+YXNzaWduX2J5X3JlZignYWN0aW9uaWQnLCAkaWQpOwoJCSRzbWFydHktPmFzc2lnbl9ieV9yZWYoJ3JldHVybmlkJywgJHJldHVybmlkKTsKCgkJcGFyZW50OjpEb0FjdGlvbigkbmFtZSwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBEb0V2ZW50KCRvcmlnaW5hdG9yLCAkZXZlbnRuYW1lLCAmJHBhcmFtcykKCXsKCQkkZGIgPSBjbXNtcygpLT5HZXREQigpOwoJCSRyZXZpc2lvbl9pZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcmV2aXNpb25zX3NlcSIpOwoJCQoJCXN3aXRjaCgkb3JpZ2luYXRvciAuICc6JyAuICRldmVudG5hbWUpCgkJewoJCQljYXNlICdDb3JlOkNvbnRlbnRFZGl0UHJlJzoKCQkJCSRjb250ZW50ID0gJHBhcmFtc1snY29udGVudCddOwoKCQkJCS8vIC8vIE5PIE5FVyBQQUdFUwoJCQkJaWYoJGNvbnRlbnQtPklkKCkgPT0gLTEpIHsKCQkJCQlicmVhazsKCQkJCX0KCQkJCQoJCQkJJGNvbnRlbnRfYmxvY2tzID0gYXJyYXlfa2V5cygkY29udGVudC0+Z2V0X2NvbnRlbnRfYmxvY2tzKCkpOwoJCQkJJHBhcm0gPSBhcnJheSgpOwoJCQkJJGlzSWRlbnRpY2FsID0gdHJ1ZTsKCQkJCS8vIGFsdGUgSW5oYWx0ZSBhdXNsZXNlbgoJCQkJZm9yZWFjaCgkY29udGVudF9ibG9ja3MgYXMgJHByb3BlcnR5KQoJCQkJewoJCQkJCSRuZXcgPSAkY29udGVudC0+R2V0UHJvcGVydHlWYWx1ZSgkcHJvcGVydHkpOwoJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgnU0VMRUNUIGNvbnRlbnQgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ2NvbnRlbnRfcHJvcHMgV0hFUkUgY29udGVudF9pZCA9ID8gQU5EIHByb3BfbmFtZSA9ID8gTElNSVQgMScsIGFycmF5KCRjb250ZW50LT5JZCgpLCAkcHJvcGVydHkpKTsKCQkJCQkkcGFybVskcHJvcGVydHldID0gJG9sZCA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCQkJCQkKCQkJCQlpZiAoaXNfYXJyYXkoJG9sZCkgYW5kIGlzc2V0KCRvbGRbJ2NvbnRlbnQnXSkpICRvbGQgPSAkb2xkWydjb250ZW50J107CgkJCQkJaWYgKGlzX2FycmF5KCRuZXcpIGFuZCBpc3NldCgkbmV3Wydjb250ZW50J10pKSAkbmV3ID0gJG5ld1snY29udGVudCddOwkKCQkJCQkvLyB2ZXJnbGVpY2huZSBvYiBldHdhcyBnZcOkbmRlcnQgaGF0CgkJCQkJaWYgKCRuZXcgIT0gJG9sZCkgJGlzSWRlbnRpY2FsID0gZmFsc2U7CgkJCQl9CgkJCQkKCQkJCWlmICgkaXNJZGVudGljYWwpIGJyZWFrOwoJCQkJCgkJCQkkY29udGVudG9iaiA9IGNsb25lICRjb250ZW50OwoJCQkJZm9yZWFjaCAoJHBhcm0gYXMgJHByb3AgPT4gJHZhbHVlKSB7CgkJCQkJJGNvbnRlbnRvYmotPlNldFByb3BlcnR5VmFsdWUoJHByb3AsJHZhbHVlKTsKCQkJCX0KCQkJCQoJCQkJJHRoaXMtPlNhdmVSZXZpc2lvbigkcmV2aXNpb25faWQsICdjb250ZW50JywgJGNvbnRlbnQtPklkKCksICRjb250ZW50b2JqLCAkY29udGVudC0+Z2V0X2NvbnRlbnRfYmxvY2tzKCksICRjb250ZW50b2JqLT5HZXRNb2RpZmllZERhdGUoKSk7CgkJCQlicmVhazsKCQkJCQoJCQljYXNlICdDb3JlOkNvbnRlbnREZWxldGVQcmUnOgoJCQkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlbGV0ZV9yZXZpc2lvbnNfd2l0aF9jb250ZW50JykgPT0gMCkgewoJCQkJCQoJCQkJCSRjb250ZW50b3BzID0gY21zbXMoKS0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsKCQkJCQkkY29udGVudG9iaiA9ICRjb250ZW50b3BzLT5Mb2FkQ29udGVudEZyb21JZCgkcGFyYW1zWydjb250ZW50J10tPklkKCksIHRydWUpOwoJCQkJCQoJCQkJCSR0aGlzLT5SZWN5Y2xlQ29udGVudCgnY29udGVudCcsICRwYXJhbXNbJ2NvbnRlbnQnXS0+SWQoKSwgJHBhcmFtc1snY29udGVudCddLT5NZW51VGV4dCgpLCAkY29udGVudG9iaiwgJHBhcmFtc1snY29udGVudCddLT5HZXRNb2RpZmllZERhdGUoKSk7CgkJCQl9CgkJCQllbHNlIHsKCQkJCQkkdGhpcy0+RGVsZXRlUmV2aXNpb25zKCdjb250ZW50JywgJHBhcmFtc1snY29udGVudCddLT5JZCgpKTsKCQkJCX0KCQkJCWJyZWFrOwoKCQkJY2FzZSAnQ29yZTpFZGl0R2xvYmFsQ29udGVudFByZSc6CgkJCQkkZ2NiX25ldyA9ICRwYXJhbXNbJ2dsb2JhbF9jb250ZW50J107CgkJCQlpZiAoJGdjYl9uZXctPmlkID09IC0xKSBicmVhazsgCgkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJ1NFTEVDVCBodG1sIEFTIGNvbnRlbnQsIG1vZGlmaWVkX2RhdGUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ2h0bWxibG9icyBXSEVSRSBodG1sYmxvYl9pZCA9ID8gTElNSVQgMScsIGFycmF5KCRnY2JfbmV3LT5pZCkpOwoJCQkJJGdjYiA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCQkJCSR0aGlzLT5TYXZlUmV2aXNpb24oJHJldmlzaW9uX2lkLCAnZ2NiJywgJGdjYl9uZXctPmlkLCAkZ2NiWydjb250ZW50J10sICIiLCBzdHJ0b3RpbWUoJGdjYlsnbW9kaWZpZWRfZGF0ZSddKSk7CgkJCQlicmVhazsKCgkJCWNhc2UgJ0NvcmU6RGVsZXRlR2xvYmFsQ29udGVudFByZSc6CgkJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVsZXRlX3JldmlzaW9uc193aXRoX2NvbnRlbnQnKSA9PSAwKSB7CgkJCQkJJHRoaXMtPlJlY3ljbGVDb250ZW50KCdnY2InLCAkcGFyYW1zWydnbG9iYWxfY29udGVudCddLT5pZCwgJHBhcmFtc1snZ2xvYmFsX2NvbnRlbnQnXS0+bmFtZSwgJHBhcmFtc1snZ2xvYmFsX2NvbnRlbnQnXSwgJHBhcmFtc1snZ2xvYmFsX2NvbnRlbnQnXS0+bW9kaWZpZWRfZGF0ZSk7CgkJCQl9CgkJCQllbHNlIHsKCQkJCQkkdGhpcy0+RGVsZXRlUmV2aXNpb25zKCdnY2InLCAkcGFyYW1zWydnbG9iYWxfY29udGVudCddLT5pZCk7CgkJCQl9CgkJCQlicmVhazsKCgkJCWNhc2UgJ0NvcmU6RWRpdFRlbXBsYXRlUHJlJzoKCQkJCSR0ZW1wbGF0ZV9uZXcgPSAkcGFyYW1zWyd0ZW1wbGF0ZSddOwoJCQkJaWYgKCR0ZW1wbGF0ZV9uZXctPmlkID09IC0xKSBicmVhazsgCgkJCQkKCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgnU0VMRUNUIHRlbXBsYXRlX2NvbnRlbnQgQVMgY29udGVudCwgbW9kaWZpZWRfZGF0ZSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAndGVtcGxhdGVzIFdIRVJFIHRlbXBsYXRlX2lkID0gPyBMSU1JVCAxJywgYXJyYXkoJHRlbXBsYXRlX25ldy0+aWQpKTsKCQkJCSR0ZW1wbGF0ZSA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCQkJCSR0aGlzLT5TYXZlUmV2aXNpb24oJHJldmlzaW9uX2lkLCAndGVtcGxhdGUnLCAkdGVtcGxhdGVfbmV3LT5pZCwgJHRlbXBsYXRlWydjb250ZW50J10sICIiLCBzdHJ0b3RpbWUoJHRlbXBsYXRlWydtb2RpZmllZF9kYXRlJ10pKTsKCQkJCWJyZWFrOwoKCQkJY2FzZSAnQ29yZTpEZWxldGVUZW1wbGF0ZVByZSc6CgkJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVsZXRlX3JldmlzaW9uc193aXRoX2NvbnRlbnQnKSA9PSAwKQl7CgkJCQkJJHRoaXMtPlJlY3ljbGVDb250ZW50KCd0ZW1wbGF0ZScsICRwYXJhbXNbJ3RlbXBsYXRlJ10tPmlkLCAkcGFyYW1zWyd0ZW1wbGF0ZSddLT5uYW1lLCAkcGFyYW1zWyd0ZW1wbGF0ZSddLCAkcGFyYW1zWyd0ZW1wbGF0ZSddLT5tb2RpZmllZF9kYXRlKTsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCSR0aGlzLT5EZWxldGVSZXZpc2lvbnMoJ3RlbXBsYXRlJywgJHBhcmFtc1sndGVtcGxhdGUnXS0+aWQpOwoJCQkJfQoJCQkJYnJlYWs7CgoJCQljYXNlICdDb3JlOkVkaXRTdHlsZXNoZWV0UHJlJzoKCQkJCSRzdHlsZXNoZWV0X25ldyA9ICRwYXJhbXNbJ3N0eWxlc2hlZXQnXTsKCQkJCWlmICgkc3R5bGVzaGVldF9uZXctPmlkID09IC0xKSBicmVhazsgCgkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJ1NFTEVDVCBjc3NfdGV4dCBBUyBjb250ZW50LCBtb2RpZmllZF9kYXRlIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdjc3MgV0hFUkUgY3NzX2lkID0gPyBMSU1JVCAxJywgYXJyYXkoJHN0eWxlc2hlZXRfbmV3LT5pZCkpOwoJCQkJJHN0eWxlc2hlZXQgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkJCQkkdGhpcy0+U2F2ZVJldmlzaW9uKCRyZXZpc2lvbl9pZCwgJ3N0eWxlc2hlZXQnLCAkc3R5bGVzaGVldF9uZXctPmlkLCAkc3R5bGVzaGVldFsnY29udGVudCddLCAiIiwgc3RydG90aW1lKCRzdHlsZXNoZWV0Wydtb2RpZmllZF9kYXRlJ10pKTsKCQkJCWJyZWFrOwoKCQkJY2FzZSAnQ29yZTpEZWxldGVTdHlsZXNoZWV0UHJlJzoKCQkJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWxldGVfcmV2aXNpb25zX3dpdGhfY29udGVudCcpID09IDApCXsKCQkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJ1NFTEVDVCBtb2RpZmllZF9kYXRlIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdjc3MgV0hFUkUgY3NzX2lkID0gPycsIGFycmF5KCRwYXJhbXNbJ3N0eWxlc2hlZXQnXS0+aWQpKTsKCQkJCQkkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJCQkJCSR0aGlzLT5SZWN5Y2xlQ29udGVudCgnc3R5bGVzaGVldCcsICRwYXJhbXNbJ3N0eWxlc2hlZXQnXS0+aWQsICRwYXJhbXNbJ3N0eWxlc2hlZXQnXS0+bmFtZSwgJHBhcmFtc1snc3R5bGVzaGVldCddLCBzdHJ0b3RpbWUoJHJvd1snbW9kaWZpZWRfZGF0ZSddKSk7CgkJCQl9CgkJCQllbHNlIHsKCQkJCQkkdGhpcy0+RGVsZXRlUmV2aXNpb25zKCdzdHlsZXNoZWV0JywgJHBhcmFtc1snc3R5bGVzaGVldCddLT5pZCk7CgkJCQl9CgkJCQlicmVhazsKCQl9Cgl9CgoJIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJIyBJbnRlcm5hbCBtZXRob2RzCgkjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkKCXByb3RlY3RlZCBmdW5jdGlvbiB2b2lkUmVjeWNsZUJpbigpCgl7CgkJJGRiID0gY21zbXMoKS0+R2V0REIoKTsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJ1NFTEVDVCBtb2R1bGVfbmFtZSwgY29udGVudF9pZCBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9uc19yZWN5Y2xlJyk7CgkJd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkkdGhpcy0+RGVsZXRlUmV2aXNpb25zKCRyb3dbJ21vZHVsZV9uYW1lJ10sICRyb3dbJ2NvbnRlbnRfaWQnXSk7CgkJfQoJCSRkYi0+RXhlY3V0ZSgnREVMRVRFIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zX3JlY3ljbGUnKTsKCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gRGVsZXRlQWxsUmV2aXNpb25zQnV0KCRyZXRhaW4pCgl7CgkJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJ1NFTEVDVCBtb2R1bGVfbmFtZSwgY29udGVudF9pZCwgQ09VTlQocmV2aXNpb25faWQpIEFTIGNvdW50IEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zIEdST1VQIEJZIG1vZHVsZV9uYW1lLCBjb250ZW50X2lkJyk7CgkJd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkkbGltaXQgPSAkcm93Wydjb3VudCddIC0gJHJldGFpbjsKCQkJaWYoJGxpbWl0ID4gMCkKCQkJewoJCQkJJHRoaXMtPkRlbGV0ZVJldmlzaW9ucygkcm93Wydtb2R1bGVfbmFtZSddLCAkcm93Wydjb250ZW50X2lkJ10sICRsaW1pdCk7CgkJCX0KCQl9Cgl9CgoJcHJvdGVjdGVkIGZ1bmN0aW9uIERlbGV0ZVJldmlzaW9ucygkbW9kdWxlX25hbWUsICRjb250ZW50X2lkLCAkbGltaXQgPSBmYWxzZSkKCXsKCQkkZGIgPSBjbXNtcygpLT5HZXREQigpOwoJCSRxdWVyeSA9ICdTRUxFQ1QgcmV2aXNpb25faWQgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnMgV0hFUkUgbW9kdWxlX25hbWUgPSA/IEFORCBjb250ZW50X2lkID0gPyc7CgkJaWYoJGxpbWl0ICE9PSBmYWxzZSkKCQl7CgkJCSRxdWVyeSAuPSAnIE9SREVSIEJZIGNyZWF0ZV90aW1lIEFTQyBMSU1JVCAnIC4gJGxpbWl0OwoJCX0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbW9kdWxlX25hbWUsICRjb250ZW50X2lkKSk7CgkJd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkkZGItPkV4ZWN1dGUoJ0RFTEVURSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9uc19kaWZmIFdIRVJFIHJldmlzaW9uX2lkID0gPycsIGFycmF5KCRyb3dbJ3JldmlzaW9uX2lkJ10pKTsKCQl9CgkJJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyBXSEVSRSBtb2R1bGVfbmFtZSA9ID8gQU5EIGNvbnRlbnRfaWQgPSA/JzsKCQlpZigkbGltaXQgIT09IGZhbHNlKQoJCXsKCQkJJHF1ZXJ5IC49ICcgT1JERVIgQlkgY3JlYXRlX3RpbWUgQVNDIExJTUlUICcgLiAkbGltaXQ7CgkJfQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRtb2R1bGVfbmFtZSwgJGNvbnRlbnRfaWQpKTsKCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gRGVsZXRlUmV2aXNpb24oJHJldmlzaW9uX2lkKQoJewoJCSRkYiA9IGNtc21zKCktPkdldERCKCk7CgkJJGRiLT5FeGVjdXRlKCdERUxFVEUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnMgV0hFUkUgcmV2aXNpb25faWQgPSA/JywgYXJyYXkoJHJldmlzaW9uX2lkKSk7CgkJJGRiLT5FeGVjdXRlKCdERUxFVEUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnNfZGlmZiBXSEVSRSByZXZpc2lvbl9pZCA9ID8nLCBhcnJheSgkcmV2aXNpb25faWQpKTsKCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gUmVzdG9yZVJlY3ljbGVkQ29udGVudCgkbW9kdWxlX25hbWUsICRjb250ZW50X2lkKQoJewoJCWdsb2JhbCAkaWQ7CgkJCgkJJGdDbXMgPSBjbXNtcygpOwoJCQoJCSRkYiA9ICRnQ21zLT5HZXREYigpOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgnU0VMRUNUIGNvbnRlbnRfb2JqZWN0IEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zX3JlY3ljbGUgV0hFUkUgbW9kdWxlX25hbWUgPSA/IEFORCBjb250ZW50X2lkID0gPycsIGFycmF5KCRtb2R1bGVfbmFtZSwgJGNvbnRlbnRfaWQpKTsKCQkkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJCSRjb250ZW50b2JqID0gVW5zZXJpYWxpemVPYmplY3QoJHJvd1snY29udGVudF9vYmplY3QnXSk7CgkJCgkJaWYgKCRtb2R1bGVfbmFtZSA9PSAiY29udGVudCIpIHsKCQkJCgkJCSRjb250ZW50b3BzID0gJGdDbXMtPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CgkJCSRjb25maWcgPSAkZ0Ntcy0+R2V0Q29uZmlnKCk7CgkJCSRmcm9tb2JqID0gJGNvbnRlbnRvYmo7CgkJCSRmcm9tb2JqLT5HZXRBZGRpdGlvbmFsRWRpdG9ycygpOwoJCQkkZnJvbW9iai0+UHJvcGVydGllcygpOwoJCQkkcGFyZW50b2JqID0gJGNvbnRlbnRvcHMtPkxvYWRDb250ZW50RnJvbUlkKCRmcm9tb2JqLT5QYXJlbnRJZCgpKTsKCQkJCgkJCSR0b191cmwgPSAkY29udGVudG9iai0+VVJMKCk7CgkJCSR0b19hbGlhcyA9ICRjb250ZW50b2JqLT5BbGlhcygpOwoJCQkkdG9fdGl0bGUgPSAkY29udGVudG9iai0+TmFtZSgpOwoJCQkkdG9fbWVudXRleHQgPSAkY29udGVudG9iai0+TWVudVRleHQoKTsKCQkJJHRvX3BhcmVudGlkID0gJyc7CgkJCWlmIChpc19vYmplY3QoJHBhcmVudG9iaikpIHsKCQkJCSR0b19wYXJlbnRpZCA9ICRmcm9tb2JqLT5QYXJlbnRJZCgpOwoJCQl9CgkJCSR0b19hY2Nlc3NrZXkgPSAkY29udGVudG9iai0+QWNjZXNzS2V5KCk7CgkJCQoJCQkvLyBrb3BpZXJlIGRhcyBPYmpla3QgCgkJCSR0bXBvYmogPSBjbG9uZSAkZnJvbW9iajsKCQkJCQoJCQkvLyBGw7xsbHQgZGllIG5vdHdlbmRpZ2VuIEluaGFsdGUgaW0ga29waWVydGVuIE9iamVrdCB3aWVkZXIKCQkJJHRtcG9iai0+U2V0VVJMKCR0b191cmwpOwoJCQkkdG1wb2JqLT5TZXROYW1lKCR0b190aXRsZSk7CgkJCSR0bXBvYmotPlNldE1lbnVUZXh0KCR0b19tZW51dGV4dCk7CgkJCSR0bXBvYmotPlNldEFsaWFzKCR0b19hbGlhcyk7CgkJCSR0bXBvYmotPlNldFBhcmVudElkKCR0b19wYXJlbnRpZCk7CgkJCSR0bXBvYmotPlNldE9sZFBhcmVudElkKCR0b19wYXJlbnRpZCk7CgkJCQkKCQkJJHRtcG9iai0+U2V0RGVmYXVsdENvbnRlbnQoMCk7CgkJCSR0bXBvYmotPlNldE93bmVyKGdldF91c2VyaWQoKSk7CgkJCSR0bXBvYmotPlNldExhc3RNb2RpZmllZEJ5KGdldF91c2VyaWQoKSk7CgkJCQkKCQkJLy8gVGhpcyBzaG91bGRuJ3QgYmUgbmVlZGVkIGJlY2F1c2UgdGhlIG9iamVjdCB3YXMgY29waWVkCgkJCSR0bXBvYmotPlNldFNob3dJbk1lbnUoJGNvbnRlbnRvYmotPlNob3dJbk1lbnUoKSk7CgkJCSR0bXBvYmotPlNldEFkZGl0aW9uYWxFZGl0b3JzKCRjb250ZW50b2JqLT5HZXRBZGRpdGlvbmFsRWRpdG9ycygpKTsKCQkJJHRtcG9iai0+U2V0QWN0aXZlKCRjb250ZW50b2JqLT5BY3RpdmUoKSk7CgkJCQoJCQkvLyBOb3cgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgb2theSwgYW5kIG1vdmUgZm9yd2FyZC4KCQkJJHJlcyA9ICR0bXBvYmotPlZhbGlkYXRlRGF0YSgpOwoJCQlpZiggJHJlcyA9PT0gRkFMU0UgKQoJCQl7CgkJCQkvLyBldmVyeXRoaW5nIGlzIG9rYXkuLi4gc2F2ZSBpdAoJCQkJLy8gYW5kIG1ha2Ugc3VyZSB0aGUgaGllcmFyY2h5IHN0dWZmIHdvcmtzLgoJCQkJJHRtcG9iai0+U2F2ZSgpOwoJCQkJJGNvbnRlbnRvcHMtPlNldEFsbEhpZXJhcmNoeVBvc2l0aW9ucygpOwoJCQkJCgkJCQlyZXR1cm4gJHRtcG9iajsKCQkJfQoJCQllbHNlIHsKCQkJCSR0aGlzLT5fZXJyb3JzID0gJHJlczsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0KCQllbHNlIHsKCQkJJGNvbnRlbnRvYmotPmlkID0gLTE7CgkJCSRjb250ZW50b2JqLT5TYXZlKCk7CgkJfQoJCXJldHVybiAkY29udGVudG9iajsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIFJlY3ljbGVDb250ZW50KCRtb2R1bGVfbmFtZSwgJGNvbnRlbnRfaWQsICRjb250ZW50X25hbWUsICRjb250ZW50X29iaiwgJGNyZWF0ZV90cykKCXsKCQkkZGIgPSBjbXNtcygpLT5HZXREQigpOwoJCSRjb3VudF9yZXZpc2lvbiA9ICRkYi0+R2V0T25lKCdzZWxlY3QgY291bnQocmV2aXNpb25faWQpIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zIFdIRVJFIG1vZHVsZV9uYW1lID0gPyBBTkQgY29udGVudF9pZCA9ID8gJyxhcnJheSgkbW9kdWxlX25hbWUsICRjb250ZW50X2lkKSk7CgkJCgkJLy8gUmV2aXNpb24gZGVzIGFrdHVlbGxlbiBDb250ZW50cyBlcnN0ZWxsZW4KCQkKCQkkcmV2aXNpb25faWQgPSAkZGItPkdlbklEKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3JldmlzaW9uc19zZXEiKTsKCQlzd2l0Y2goJG1vZHVsZV9uYW1lKQoJCXsKCQkJY2FzZSAnY29udGVudCc6CgkJCQkkY29udGVudG9wcyA9IGNtc21zKCktPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CgkJCQkkY29udGVudG9iaiA9ICRjb250ZW50b3BzLT5Mb2FkQ29udGVudEZyb21JZCgkY29udGVudF9pZCwgdHJ1ZSk7CgkJCQkKCQkJCSR0aGlzLT5TYXZlUmV2aXNpb24oJHJldmlzaW9uX2lkLCAnY29udGVudCcsICRjb250ZW50X2lkLCAkY29udGVudG9iaiwgJGNvbnRlbnRvYmotPmdldF9jb250ZW50X2Jsb2NrcygpLCBzdHJ0b3RpbWUoJGNvbnRlbnRvYmotPkdldE1vZGlmaWVkRGF0ZSgpKSk7CgkJCQlicmVhazsKCQkJCQoJCQljYXNlICdnY2InOgoJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCdTRUxFQ1QgaHRtbCBBUyBjb250ZW50LCBtb2RpZmllZF9kYXRlIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdodG1sYmxvYnMgV0hFUkUgaHRtbGJsb2JfaWQgPSA/IExJTUlUIDEnLCBhcnJheSgkY29udGVudF9pZCkpOwoJCQkJJGdjYiA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCQkJCSR0aGlzLT5TYXZlUmV2aXNpb24oJHJldmlzaW9uX2lkLCAnZ2NiJywgJGNvbnRlbnRfaWQsICRnY2JbJ2NvbnRlbnQnXSwgIiIsIHN0cnRvdGltZSgkZ2NiWydtb2RpZmllZF9kYXRlJ10pKTsKCQkJCWJyZWFrOwoKCQkJY2FzZSAndGVtcGxhdGUnOgoJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCdTRUxFQ1QgdGVtcGxhdGVfY29udGVudCBBUyBjb250ZW50LCBtb2RpZmllZF9kYXRlIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICd0ZW1wbGF0ZXMgV0hFUkUgdGVtcGxhdGVfaWQgPSA/IExJTUlUIDEnLCBhcnJheSgkY29udGVudF9pZCkpOwoJCQkJJHRlbXBsYXRlID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJCQkJJHRoaXMtPlNhdmVSZXZpc2lvbigkcmV2aXNpb25faWQsICd0ZW1wbGF0ZScsICRjb250ZW50X2lkLCAkdGVtcGxhdGVbJ2NvbnRlbnQnXSwgIiIsIHN0cnRvdGltZSgkdGVtcGxhdGVbJ21vZGlmaWVkX2RhdGUnXSkpOwoJCQkJYnJlYWs7CgoJCQljYXNlICdzdHlsZXNoZWV0JzoKCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgnU0VMRUNUIGNzc190ZXh0IEFTIGNvbnRlbnQsIG1vZGlmaWVkX2RhdGUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ2NzcyBXSEVSRSBjc3NfaWQgPSA/IExJTUlUIDEnLCBhcnJheSgkY29udGVudF9pZCkpOwoJCQkJJHN0eWxlc2hlZXQgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkJCQkkdGhpcy0+U2F2ZVJldmlzaW9uKCRyZXZpc2lvbl9pZCwgJ3N0eWxlc2hlZXQnLCAkY29udGVudF9pZCwgJHN0eWxlc2hlZXRbJ2NvbnRlbnQnXSwgIiIsIHN0cnRvdGltZSgkc3R5bGVzaGVldFsnbW9kaWZpZWRfZGF0ZSddKSk7CgkJCQlicmVhazsKCQl9CQkJCgkKCQkKCQkKCQkkZGItPkV4ZWN1dGUoJ0lOU0VSVCBJTlRPICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9uc19yZWN5Y2xlIChtb2R1bGVfbmFtZSwgY29udGVudF9pZCwgY29udGVudF9uYW1lLCBjb250ZW50X29iamVjdCwgY3JlYXRlX3RpbWUsIHVzZXJfaWQpIFZBTFVFUyAoPywgPywgPywgPywgPywgPyknLAoJCQlhcnJheSgkbW9kdWxlX25hbWUsICRjb250ZW50X2lkLCAkY29udGVudF9uYW1lLCBTZXJpYWxpemVPYmplY3QoJGNvbnRlbnRfb2JqKSwgZGF0ZSgnWS1tLWQgSDppOnMnLCAkY3JlYXRlX3RzKSwgJHRoaXMtPnVzZXJpZCkpOwoJfQoJCglwcm90ZWN0ZWQgZnVuY3Rpb24gU2V0RXZlbnRPcmRlcigpCgl7CgkJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCQkKCQkkcmV2ZXZlbnRzID0gYXJyYXkoJ2NvcmU6Q29udGVudEVkaXRQcmUnLCdjb3JlOkVkaXRHbG9iYWxDb250ZW50UHJlJywnY29yZTpFZGl0VGVtcGxhdGVQcmUnLCdjb3JlOkVkaXRTdHlsZXNoZWV0UHJlJyk7CgkJCgkJZm9yZWFjaCgkcmV2ZXZlbnRzIGFzICRyZXZldmVudCkgewoJCQoJCQkkZSA9IGV4cGxvZGUoIjoiLCRyZXZldmVudCk7CgkJCQoJCQkvLyBHZXQgdGhlIGV2ZW50IGlkCgkJCSRxID0gIlNFTEVDVCBldmVudF9pZCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLidldmVudHMgV0hFUkUgb3JpZ2luYXRvciA9ID8gYW5kIGV2ZW50X25hbWUgPSA/JzsKCQkJJGV2ZW50X2lkID0gJGRiLT5HZXRPbmUoJHEsYXJyYXkoJGVbMF0sJGVbMV0pKTsKCQkJCgkJCSRxID0gIlNFTEVDVCBoYW5kbGVyX29yZGVyIEZST00gIi5jbXNfZGJfcHJlZml4KCkuJ2V2ZW50X2hhbmRsZXJzIFdIRVJFIG1vZHVsZV9uYW1lID0gPyBhbmQgZXZlbnRfaWQgPSA/JzsKCQkJJGN1cl9vcmRlciA9ICRkYi0+R2V0T25lKCRxLGFycmF5KCJSZXZpc2lvbnMiLCRldmVudF9pZCkpOwoJCQkKCQkJJHEgPSAiU0VMRUNUIGhhbmRsZXJfaWQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4nZXZlbnRfaGFuZGxlcnMgV0hFUkUgbW9kdWxlX25hbWUgPSA/IGFuZCBldmVudF9pZCA9ID8nOwoJCQkkaGFuZGxlciA9ICRkYi0+R2V0T25lKCRxLGFycmF5KCJSZXZpc2lvbnMiLCRldmVudF9pZCkpOwoKCQkJCgkJCS8vIEdldCB0aGUgbmV4dCBoYW5kbGVyIGlkCgkJCSRxID0gJ1NFTEVDVCBoYW5kbGVyX2lkIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2V2ZW50X2hhbmRsZXJzIFdIRVJFIGhhbmRsZXJfb3JkZXIgPSA/CgkgICAgICAgICAgICAgICAgICAgIEFORCBldmVudF9pZCA9ID8nOwoJCQkkbmV4dF9pZCA9ICRkYi0+R2V0T25lKCRxLGFycmF5KCRjdXJfb3JkZXIgKyAxLCRldmVudF9pZCkpOwoJCQkKCQkJaWYoJG5leHRfaWQpIHsKCQkJCS8vIEdldCB0aGUgbmV4dCBoYW5kbGVyIGlkCgkJCQkkcSA9ICdTRUxFQ1QgaGFuZGxlcl9pZCBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidldmVudF9oYW5kbGVycyBXSEVSRSBoYW5kbGVyX29yZGVyID0gPwoJCSAgICAgICAgICAgICAgICAgICAgQU5EIGV2ZW50X2lkID0gPyc7CgkJCQkkbmV4dF9pZCA9ICRkYi0+R2V0T25lKCRxLGFycmF5KCRjdXJfb3JkZXIgKyAxLCRldmVudF9pZCkpOwoJCQkJaWYoICRuZXh0X2lkICkKCQkJCXsKCQkJCQkkcSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuImV2ZW50X2hhbmRsZXJzIFNFVCBoYW5kbGVyX29yZGVyID0gKGhhbmRsZXJfb3JkZXIgKyAxKQoJCQkJCQkJd2hlcmUgaGFuZGxlcl9pZCA9ID8iOwoJCQkJCSRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkaGFuZGxlciApICk7CgkJCgkJCQkJJHEgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJldmVudF9oYW5kbGVycyBTRVQgaGFuZGxlcl9vcmRlciA9IChoYW5kbGVyX29yZGVyIC0gMSkKCQkJCQkJCXdoZXJlIGhhbmRsZXJfaWQgPSA/IjsKCQkJCQkkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJG5leHRfaWQgKSApOwoJCQkJfQoJCQkKCQkJfQkJCgkJfQkKCX0KCQoJCgkvLyBUT0RPOiBGdW5rdGlvbiBDb21wYXJlQ29udGVudE9iaiBzY2hyZWliZW4KCXByb3RlY3RlZCBmdW5jdGlvbiBDb21wYXJlQ29udGVudE9iaigkbmV3Y29udGVudG9iaiwgJGNvbnRlbnRibG9ja3MsICRvbGRjb250ZW50b2JqKQoJewoJCWlmIChnZXRfY2xhc3MoJG5ld2NvbnRlbnRvYmopICE9IGdldF9jbGFzcygkb2xkY29udGVudG9iaikpIHJldHVybiBmYWxzZTsKCQkKCQkkY29udGVudGJsb2NrczEgPSBhcnJheSgpOwoJCSRjb250ZW50YmxvY2tzMiA9IGFycmF5KCk7CgkJCgkJZm9yZWFjaCAoJGNvbnRlbnRibG9ja3MgYXMgJGJsb2NrKSB7CgkJCSRjb250ZW50YmxvY2tzMVskYmxvY2tdID0gJG5ld2NvbnRlbnRvYmotPkdldFByb3BlcnR5VmFsdWUoJGJsb2NrKTsKCQkJJGNvbnRlbnRibG9ja3MyWyRibG9ja10gPSAkb2xkY29udGVudG9iai0+R2V0UHJvcGVydHlWYWx1ZSgkYmxvY2spOwoJCX0KCgkJaWYgKCRjb250ZW50YmxvY2tzMSAhPSAkY29udGVudGJsb2NrczIpIHJldHVybiBmYWxzZTsKCQkKCQlyZXR1cm4gdHJ1ZTsKCX0KCQoKCXByb3RlY3RlZCBmdW5jdGlvbiBTYXZlUmV2aXNpb24oJHJldmlzaW9uX2lkLCAkbW9kdWxlX25hbWUsICRjb250ZW50X2lkLCAkY29udGVudCwgJGNvbnRlbnRibG9ja3MsICRjcmVhdGVfdHMpCgl7CgkJJGRiID0gY21zbXMoKS0+R2V0REIoKTsKCQkKCQkvLyBLb250cm9sbGUgb2IgSW5oYWx0IGdlw6RuZGVydCBoYXQKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJ1NFTEVDVCBjb250ZW50LCByZXZpc2lvbl9pZCBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyBXSEVSRSBtb2R1bGVfbmFtZSA9ID8gQU5EIGNvbnRlbnRfaWQgPSA/IG9yZGVyIGJ5IGNyZWF0ZV90aW1lIGRlc2MgTElNSVQgMScsIGFycmF5KCRtb2R1bGVfbmFtZSwgJGNvbnRlbnRfaWQpKTsKCQkkbGFzdHJldmlzaW9uID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJCQoJCWlmICgkbW9kdWxlX25hbWUgPT0gImNvbnRlbnQiKSB7CgkJCQoJCQlpZiAoaXNzZXQoJGxhc3RyZXZpc2lvblsnY29udGVudCddKSBhbmQgJGxhc3RyZXZpc2lvblsnY29udGVudCddICE9ICIiKSB7CgkJCQkkb2xkY29udGVudG9iaiA9IFVuc2VyaWFsaXplT2JqZWN0KCRsYXN0cmV2aXNpb25bJ2NvbnRlbnQnXSk7CgkJCQkkaXNJZGVuZGljYWwgPSB0cnVlOwoJCQkJZm9yZWFjaCAoYXJyYXlfa2V5cygkY29udGVudGJsb2NrcykgYXMgJGtleSkgewoJCQkJCSRvbGQgPSAkb2xkY29udGVudG9iai0+R2V0UHJvcGVydHlWYWx1ZSgka2V5KTsKCQkJCQkkbmV3ID0gJGNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJGtleSk7CgkJCQkJCgkJCQkJaWYgKGlzX2FycmF5KCRvbGQpIGFuZCBpc3NldCgkb2xkWydjb250ZW50J10pKSAkb2xkID0gJG9sZFsnY29udGVudCddOwoJCQkJCWlmIChpc19hcnJheSgkbmV3KSBhbmQgaXNzZXQoJG5ld1snY29udGVudCddKSkgJG5ldyA9ICRuZXdbJ2NvbnRlbnQnXTsJCgkJCQkJCgkJCQkJaWYgKCRuZXcgIT0gJG9sZCkgJGlzSWRlbmRpY2FsID0gZmFsc2U7CgkJCQl9CgkJCQkKCQkJCS8vIFNpbmQgZGllIEluaGFsdGUgaWRlbnRpc2NoLCB3aXJkIGhpZXIgYWJnZWJyb2NoZW4KCQkJCWlmICgkaXNJZGVuZGljYWwpIHJldHVybjsKCQkJfQoJCQkKCQkJJGNvbnRlbnQgPSBTZXJpYWxpemVPYmplY3QoJGNvbnRlbnQpOwoJCQkkY29udGVudGJsb2NrcyA9IFNlcmlhbGl6ZU9iamVjdCgkY29udGVudGJsb2Nrcyk7CgkJCQoJCX0KCQkvLyBXZW5uIG5pY2h0IGdlw6RuZGVydCBoYXQsIGRpZSBSZXZpc2lvbiBuaWNodCBzcGVpY2hlcm4KCQllbHNlIGlmICgkbGFzdHJldmlzaW9uWydjb250ZW50J10gPT0gJGNvbnRlbnQpIHsKCQkJcmV0dXJuOwoJCQkKCQl9CgkJCgkJJHJldmlzaW9uX25yID0gJGRiLT5HZXRPbmUoJ3NlbGVjdCBtYXgocmV2aXNpb25fbnIpIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zIFdIRVJFIG1vZHVsZV9uYW1lID0gPyBBTkQgY29udGVudF9pZCA9ID8gJyxhcnJheSgkbW9kdWxlX25hbWUsICRjb250ZW50X2lkKSk7CgkJJHJldmlzaW9uX25yICs9IDE7CgoJCS8vIMOEbHRlcmUgUmV2aXNpb25zIGzDtnNjaGVuIGZhbGxzIGVpbmdlc3RlbGx0CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCdTRUxFQ1QgQ09VTlQoRElTVElOQ1QgcmV2aXNpb25faWQpIEFTIGNvdW50IEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zIFdIRVJFIG1vZHVsZV9uYW1lID0gPyBBTkQgY29udGVudF9pZCA9ID8gTElNSVQgMScsIGFycmF5KCRtb2R1bGVfbmFtZSwgJGNvbnRlbnRfaWQpKTsKCQkkcmV2aXNpb25zID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJCSRzdG9yZV9yZXZpc2lvbnNfY291bnQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc3RvcmVfcmV2aXNpb25zX2NvdW50Jyk7CgkJaWYoJHN0b3JlX3JldmlzaW9uc19jb3VudCA+IDAgJiYgJHJldmlzaW9uc1snY291bnQnXSA+PSAkc3RvcmVfcmV2aXNpb25zX2NvdW50KQoJCXsKCQkJJGRlbGV0ZWNvdW50ID0gJHJldmlzaW9uc1snY291bnQnXSAtICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzdG9yZV9yZXZpc2lvbnNfY291bnQnKSArIDE7CgkJCSR0aGlzLT5EZWxldGVSZXZpc2lvbnMoJG1vZHVsZV9uYW1lLCAkY29udGVudF9pZCwgJGRlbGV0ZWNvdW50KTsKCQl9CgoJCS8vIHJldmlzaW9uIGVpbmbDvGdlbgoJCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJ0lOU0VSVCBJTlRPICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyAocmV2aXNpb25faWQsIG1vZHVsZV9uYW1lLCByZXZpc2lvbl9uciwgY29udGVudF9pZCwgY29udGVudCwgY29udGVudGJsb2NrcywgY3JlYXRlX3RpbWUsIHVzZXJfaWQpIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPyknLAoJCQlhcnJheSgkcmV2aXNpb25faWQsICRtb2R1bGVfbmFtZSwgJHJldmlzaW9uX25yLCAkY29udGVudF9pZCwgJGNvbnRlbnQsICRjb250ZW50YmxvY2tzLCBkYXRlKCdZLW0tZCBIOmk6cycsICRjcmVhdGVfdHMpLCAkdGhpcy0+dXNlcmlkKSk7CgoJCXJldHVybiB0cnVlOwoJfQoKCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRSZXZpc2lvbkNvbnRlbnQoJHJldmlzaW9uX2lkKSAKCXsKCQkkZGIgPSBjbXNtcygpLT5HZXREYigpOwoJCSRjb250ZW50aW5mbyA9ICR0aGlzLT5HZXRDb250ZW50SW5mb0Zyb21SZXZpc2lvbigkcmV2aXNpb25faWQpOwoJCSRjb250ZW50ID0gIiI7CgkJCgkJJHF1ZXJ5ID0gJ3NlbGVjdCAqIGZyb20gJy5jbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyB3aGVyZSByZXZpc2lvbl9pZCA9ID8nOwoJCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmV2aXNpb25faWQpKTsKCQkKCQlpZiggJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCApCXsKCQkJJGRhdGEgPSAkcmVzdWx0LT5GZXRjaFJvdygpOwoJCX0KCQkKCQlyZXR1cm4gJGRhdGFbJ2NvbnRlbnQnXTsKCX0KCQoJCglwcm90ZWN0ZWQgZnVuY3Rpb24gUmVidWlsZFJldmlzaW9uKCRjb250ZW50LCAkcmV2aXNpb25faWQpCgl7CgkJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCQkkY29udGVudGluZm8gPSAkdGhpcy0+R2V0Q29udGVudEluZm9Gcm9tUmV2aXNpb24oJHJldmlzaW9uX2lkKTsKCQkKCQkvLyBHRVQgQUxMIFJFVklTSU9OUwoJCSRxdWVyeSA9ICdTRUxFQ1QgZC5yZXZpc2lvbl9pZCwgZC5ibG9ja19uYW1lLCBkLmJhc2Vfb2Zmc2V0LCBkLmNoYW5nZWRfb2Zmc2V0LCBkLmJhc2UsIGQuY2hhbmdlZCBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9uc19kaWZmIGQsICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyByIFdIRVJFIGQucmV2aXNpb25faWQgPSByLnJldmlzaW9uX2lkIEFORCByLm1vZHVsZV9uYW1lID0gPyBBTkQgci5jb250ZW50X2lkID0gPyBBTkQgci5yZXZpc2lvbl9pZCA+PSA/IE9SREVSIEJZIHIucmV2aXNpb25faWQgREVTQyc7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNvbnRlbnRpbmZvWydtb2R1bGVfbmFtZSddLCAkY29udGVudGluZm9bJ2NvbnRlbnRfaWQnXSwgJHJldmlzaW9uX2lkKSk7CgkJJHJldmlzaW9ucyA9IGFycmF5KCk7CgkJd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkkcmV2aXNpb25zW10gPSAkcm93OwoJCX0KCgkJLy8gUkVWRVJUCgkJLy8gJGlzX2FycmF5ID0gKGJvb2wpIGlzX2FycmF5KCRjb250ZW50KTsKCQlmb3JlYWNoKCRyZXZpc2lvbnMgYXMgJHJldmlzaW9uKQoJCXsKCQkJJHBhdGNoID0gJHJldmlzaW9uOwoJCQkkcGF0Y2hbJ2Jhc2UnXSA9IHVuc2VyaWFsaXplKCRwYXRjaFsnYmFzZSddKTsKCQkJJHBhdGNoWydjaGFuZ2VkJ10gPSB1bnNlcmlhbGl6ZSgkcGF0Y2hbJ2NoYW5nZWQnXSk7CgkJCWZvcmVhY2goJHBhdGNoWydiYXNlJ10gYXMgJGtleSA9PiAkdmFsdWUpewoJCQkJJHBhdGNoWydiYXNlJ11bJGtleV0gPSBzdHJfcmVwbGFjZShhcnJheSgnPGRlbD4nLCAnPC9kZWw+JywgJzxpbnM+JywgJzwvaW5zPicpLCAnJywgJHZhbHVlKTsKCQkJfQoJCQlmb3JlYWNoKCRwYXRjaFsnY2hhbmdlZCddIGFzICRrZXkgPT4gJHZhbHVlKXsKCQkJCSRwYXRjaFsnY2hhbmdlZCddWyRrZXldID0gc3RyX3JlcGxhY2UoYXJyYXkoJzxkZWw+JywgJzwvZGVsPicsICc8aW5zPicsICc8L2lucz4nKSwgJycsICR2YWx1ZSk7CgkJCX0KCQkJJGNvbnRlbnQgPSAkdGhpcy0+QXBwbHlQYXRjaCgkY29udGVudCwgJHBhdGNoKTsKCgkJCS8vICRkaWZmID0gYXJyYXlfcmV2ZXJzZSh1bnNlcmlhbGl6ZSgkcmV2aXNpb25bJ2RpZmYnXSkpOwoJCQkvLyBpZigkaXNfYXJyYXkpCgkJCS8vIHsKCQkJCS8vIGZvcmVhY2goJGNvbnRlbnQgYXMgJGtleSA9PiAkdmFsdWUpCgkJCQkvLyB7CgkJCQkJLy8gJGNvbnRlbnRbJGtleV0gPSAkdGhpcy0+QXBwbHlQYXRjaCgkdmFsdWUsICRkaWZmKTsKCQkJCS8vIH0KCQkJLy8gfQoJCQkvLyBlbHNlCgkJCS8vIHsKCQkJCS8vICRjb250ZW50ID0gJHRoaXMtPkFwcGx5UGF0Y2goJGNvbnRlbnQsICRkaWZmKTsKCQkJLy8gfQoJCX0KCQlyZXR1cm4gJGNvbnRlbnQ7Cgl9CgoJcHJvdGVjdGVkIGZ1bmN0aW9uIEdldENvbnRlbnRJbmZvRnJvbVJldmlzaW9uKCRyZXZpc2lvbl9pZCkKCXsKCQkkZGIgPSBjbXNtcygpLT5HZXREYigpOwoJCSRxdWVyeSA9ICdTRUxFQ1QgYS5yZXZpc2lvbl9pZCwgYS5tb2R1bGVfbmFtZSwgYS5yZXZpc2lvbl9uciwgYS5jb250ZW50X2lkLCBhLmNvbnRlbnQsIGEuY29udGVudGJsb2NrcywgYi5jb250ZW50X25hbWUsIENPVU5UKGIuY29udGVudF9pZCkgQVMgcmVjeWNsZSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyBhIExFRlQgSk9JTiAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnNfcmVjeWNsZSBiIE9OIGEuY29udGVudF9pZCA9IGIuY29udGVudF9pZCBXSEVSRSBhLnJldmlzaW9uX2lkID0gPyc7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJldmlzaW9uX2lkKSk7CgkJcmV0dXJuICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIEFwcGx5UGF0Y2goJGNvbnRlbnQsICRwYXRjaCkKCXsKCQkkY29udGVudF9saW5lcyA9IGV4cGxvZGUoIlxuIiwgJGNvbnRlbnQpOwoJCS8vIERFTEVURSBMSU5FUwoJCWZvcigkbiA9ICRwYXRjaFsnY2hhbmdlZF9vZmZzZXQnXTsgJG4gPCAkcGF0Y2hbJ2NoYW5nZWRfb2Zmc2V0J10gKyBjb3VudCgkcGF0Y2hbJ2NoYW5nZWQnXSk7ICRuKyspewoJCQl1bnNldCgkY29udGVudF9saW5lc1skbl0pOwoJCX0KCQkvLyBJTlNFUlQgTElORVMKCQlmb3JlYWNoKCRwYXRjaFsnYmFzZSddIGFzICRvcF9vZmZzZXQgPT4gJG5ld3ZhbCkKCQl7CgkJCSRrZXkgPSAkcGF0Y2hbJ2Jhc2Vfb2Zmc2V0J10gKyAkb3Bfb2Zmc2V0OwoJCQlpZighaXNzZXQoJGNvbnRlbnRfbGluZXNbJGtleV0pKXsKCQkJCSRjb250ZW50X2xpbmVzWyRrZXldID0gJG5ld3ZhbDsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCVJldmlzaW9uc1V0aWxzOjphcnJheV9pbnNlcnQoJGNvbnRlbnRfbGluZXMsICRrZXksICRuZXd2YWwpOwoJCQl9CgkJfQoJCWtzb3J0KCRjb250ZW50X2xpbmVzKTsKCQlyZXR1cm4gaW1wbG9kZSgiXG4iLCAkY29udGVudF9saW5lcyk7Cgl9CgoJcHJvdGVjdGVkIGZ1bmN0aW9uIExpc3RDb250ZW50KCRxdWVyeSwgJGlkLCAkcmV0dXJuaWQsICRyZWN5Y2xlID0gZmFsc2UpCgl7CgkJJGFkbWludGhlbWUgPSBjbXNtcygpLT5nZXRfdmFyaWFibGUoJ2FkbWludGhlbWUnKTsKCQkkZGIgPSBjbXNtcygpLT5HZXREYigpOwoJCSRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKCQkkY29udGVudG9wcyA9IGNtc21zKCktPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CgoJCSRkYnJlc3VsdCA9ICRkYi0+cXVlcnkoJHF1ZXJ5KTsKCQkkcGFnZXMgPSBhcnJheSgpOwoJCXdoaWxlKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJaWYoaXNzZXQoJHJvd1snaGllcmFyY2h5J10pKQoJCQl7CgkJCQkkcm93WydoaWVyYXJjaHknXSA9ICRjb250ZW50b3BzLT5DcmVhdGVGcmllbmRseUhpZXJhcmNoeVBvc2l0aW9uKCRyb3dbJ2hpZXJhcmNoeSddKTsKCQkJCSRyb3dbJ2RlcHRoJ10gPSBzdWJzdHJfY291bnQoJHJvd1snaGllcmFyY2h5J10sICcuJyk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkcm93WydoaWVyYXJjaHknXSA9ICcnOwoJCQkJJHJvd1snZGVwdGgnXSA9IDA7CgkJCX0KCQkJJHJvd1sncmVjeWNsZV9tb2R1bGVfbmFtZSddID0gJyc7CgkJCWlmKCRyZWN5Y2xlKQoJCQl7CgkJCQkkcm93WydyZWN5Y2xlX21vZHVsZV9uYW1lJ10gPSAkcm93Wydtb2R1bGVfbmFtZSddOwoJCQkJJHJvd1snbW9kdWxlX25hbWUnXSA9ICdyZWN5Y2xlJzsKCQkJfQoJCQkkcm93WyduYW1lbGluayddID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fZGV0YWlscycsICRyZXR1cm5pZCwgJHJvd1snbmFtZSddLCBhcnJheSgKCQkJCSdtb2R1bGVfbmFtZScgPT4gJHJvd1snbW9kdWxlX25hbWUnXSwKCQkJCSdyZWN5Y2xlX21vZHVsZV9uYW1lJyA9PiAkcm93WydyZWN5Y2xlX21vZHVsZV9uYW1lJ10sCgkJCQknY29udGVudF9pZCcgPT4gJHJvd1snY29udGVudF9pZCddCgkJCSkpOwoJCQkkcm93WydkZXRhaWxsaW5rJ10gPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9kZXRhaWxzJywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vaW5mby5naWYnLCAkdGhpcy0+TGFuZygnc2hvd2RldGFpbHMnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgKCQkJCSdtb2R1bGVfbmFtZScgPT4gJHJvd1snbW9kdWxlX25hbWUnXSwKCQkJCSdyZWN5Y2xlX21vZHVsZV9uYW1lJyA9PiAkcm93WydyZWN5Y2xlX21vZHVsZV9uYW1lJ10sCgkJCQknY29udGVudF9pZCcgPT4gJHJvd1snY29udGVudF9pZCddCgkJCSkpOwoKCQkJJHBhZ2VzW10gPSBSZXZpc2lvbnNVdGlsczo6YXJyYXlfdG9fb2JqZWN0KCRyb3cpOwoJCX0KCQkKCQkkc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRwYWdlcykpOwoJCSRzbWFydHktPmFzc2lnbl9ieV9yZWYoJ2l0ZW1zJywgJHBhZ2VzKTsKCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2xpc3RpdGVtcy50cGwnKTsKCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gR2V0Q3VycmVudFZlcnNpb24oJG1vZHVsZV9uYW1lLCAkY29udGVudF9pZCwgJHJlY3ljbGVfbW9kdWxlX25hbWUgPSAnJykKCXsKCQlzd2l0Y2goJG1vZHVsZV9uYW1lKQoJCXsKCQkJZGVmYXVsdDoKCQkJCXJldHVybiBmYWxzZTsKCgkJCWNhc2UgJ2NvbnRlbnQnOgoJCQkJJGNvbnRlbnRvcHMgPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOwoJCQkJJGNvbnRlbnRvYmogPSAkY29udGVudG9wcy0+TG9hZENvbnRlbnRGcm9tSWQoJGNvbnRlbnRfaWQsIHRydWUpOwoJCQkJCgkJCQkkY29udGVudCA9ICRjb250ZW50b2JqOwoJCQkJYnJlYWs7CgkJCQkKCQkJY2FzZSAnc3R5bGVzaGVldCc6CgkJCQkkc3R5bGVzaGVldG9wcyA9IGNtc21zKCktPkdldFN0eWxlc2hlZXRPcGVyYXRpb25zKCk7CgkJCQkkc3R5bGVzaGVldCA9ICRzdHlsZXNoZWV0b3BzLT5Mb2FkU3R5bGVzaGVldEJ5SUQoJGNvbnRlbnRfaWQpOwoJCQkJJGNvbnRlbnQgPSAkc3R5bGVzaGVldC0+dmFsdWU7CgkJCQlicmVhazsKCgkJCWNhc2UgJ3RlbXBsYXRlJzoKCQkJCSR0ZW1wbGF0ZW9wcyA9IGNtc21zKCktPkdldFRlbXBsYXRlT3BlcmF0aW9ucygpOwoJCQkJJHRlbXBsYXRlID0gJHRlbXBsYXRlb3BzLT5Mb2FkVGVtcGxhdGVCeUlEKCRjb250ZW50X2lkKTsKCQkJCSRjb250ZW50ID0gJHRlbXBsYXRlLT5jb250ZW50OwoJCQkJYnJlYWs7CgoJCQljYXNlICdnY2InOgoJCQkJJGdjYm9wcyA9IGNtc21zKCktPkdldEdsb2JhbENvbnRlbnRPcGVyYXRpb25zKCk7CgkJCQkkZ2NiID0gJGdjYm9wcy0+TG9hZEh0bWxCbG9iQnlJRCgkY29udGVudF9pZCk7CgkJCQkkY29udGVudCA9ICRnY2ItPmNvbnRlbnQ7CgkJCQlicmVhazsKCgkJCWNhc2UgJ3JlY3ljbGUnOgoJCQkJCgkJCQkkZGIgPSBjbXNtcygpLT5HZXREYigpOwoJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCdTRUxFQ1QgY29udGVudF9vYmplY3QgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnNfcmVjeWNsZSBXSEVSRSBtb2R1bGVfbmFtZSA9ID8gQU5EIGNvbnRlbnRfaWQgPSA/JywKCQkJCQlhcnJheSgkcmVjeWNsZV9tb2R1bGVfbmFtZSwgJGNvbnRlbnRfaWQpKTsKCQkJCSRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkJCQkkY29udGVudF9vYmogPSBVbnNlcmlhbGl6ZU9iamVjdCgkcm93Wydjb250ZW50X29iamVjdCddKTsKCQkJCXN3aXRjaCgkcmVjeWNsZV9tb2R1bGVfbmFtZSkKCQkJCXsKCQkJCQlkZWZhdWx0OgoJCQkJCQlyZXR1cm4gZmFsc2U7CgoJCQkJCWNhc2UgJ2NvbnRlbnQnOgoJCQkJCQkkY29udGVudCA9ICRjb250ZW50X29iajsKCQkJCQkJYnJlYWs7CgoJCQkJCWNhc2UgJ3N0eWxlc2hlZXQnOgoJCQkJCQkkY29udGVudCA9ICRjb250ZW50X29iai0+dmFsdWU7CgkJCQkJCWJyZWFrOwoKCQkJCQljYXNlICd0ZW1wbGF0ZSc6CgkJCQkJY2FzZSAnZ2NiJzoKCQkJCQkJJGNvbnRlbnQgPSAkY29udGVudF9vYmotPmNvbnRlbnQ7CgkJCQkJCWJyZWFrOwoJCQkJCQkKCQkJCQkJCgkJCQl9CgkJCQlicmVhazsKCQl9CgkJcmV0dXJuICRjb250ZW50OwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gU2V0QWdncmVnYXRlUGVybWlzc2lvbnMoJGZvcmNlID0gRkFMU0UpCgl7CgkJaWYgKGlzX2FycmF5KCR0aGlzLT5fcGVybXMgJiYgJGZvcmNlID09IEZBTFNFKSkKCQkJcmV0dXJuOwoKCQkkdGhpcy0+X3Blcm1zID0gYXJyYXkoKTsKCgkJLy8gQ29udGVudCBQZXJtaXNzaW9ucwoJCSR0aGlzLT5fcGVybXNbJ2h0bWxQZXJtcyddID0gY2hlY2tfcGVybWlzc2lvbigkdGhpcy0+dXNlcmlkLCAnQWRkIEdsb2JhbCBDb250ZW50IEJsb2NrcycpIHwgY2hlY2tfcGVybWlzc2lvbigkdGhpcy0+dXNlcmlkLCAnTW9kaWZ5IEdsb2JhbCBDb250ZW50IEJsb2NrcycpIHwgY2hlY2tfcGVybWlzc2lvbigkdGhpcy0+dXNlcmlkLCAnRGVsZXRlIEdsb2JhbCBDb250ZW50IEJsb2NrcycpOwoKCQkkZ2Nib3BzID0gY21zbXMoKS0+R2V0R2xvYmFsQ29udGVudE9wZXJhdGlvbnMoKTsKCgkJJHRoaXNVc2VyQmxvYnMgPSAkZ2Nib3BzLT5BdXRob3JCbG9icygkdGhpcy0+dXNlcmlkKTsKCQlpZiAoY291bnQoJHRoaXNVc2VyQmxvYnMpID4gMCkgewoJCQkkdGhpcy0+X3Blcm1zWydodG1sUGVybXMnXSA9IHRydWU7CgkJfQoJCSR0aGlzLT5fcGVybXNbJ3BhZ2VQZXJtcyddID0gKGNoZWNrX3Blcm1pc3Npb24oJHRoaXMtPnVzZXJpZCwgJ01vZGlmeSBBbnkgUGFnZScpIHx8IGNoZWNrX3Blcm1pc3Npb24oJHRoaXMtPnVzZXJpZCwgJ0FkZCBQYWdlcycpIHx8IGNoZWNrX3Blcm1pc3Npb24oJHRoaXMtPnVzZXJpZCwgJ1JlbW92ZSBQYWdlcycpIHx8IGNoZWNrX3Blcm1pc3Npb24oJHRoaXMtPnVzZXJpZCwgJ01hbmFnZSBBbGwgQ29udGVudCcpKTsKCQkkdGhpc1VzZXJQYWdlcyA9IGF1dGhvcl9wYWdlcygkdGhpcy0+dXNlcmlkKTsKCQlpZiAoY291bnQoJHRoaXNVc2VyUGFnZXMpID4gMCkgewoJCQkkdGhpcy0+X3Blcm1zWydwYWdlUGVybXMnXSA9IHRydWU7CgkJfQoJCSR0aGlzLT5fcGVybXNbJ2NvbnRlbnRQZXJtcyddID0gJHRoaXMtPl9wZXJtc1sncGFnZVBlcm1zJ10gfCAkdGhpcy0+X3Blcm1zWydodG1sUGVybXMnXSB8IChpc3NldCgkdGhpcy0+X3NlY3Rpb25Db3VudFsnY29udGVudCddKSAmJiAkdGhpcy0+X3NlY3Rpb25Db3VudFsnY29udGVudCddID4gMCk7CgoJCS8vIGxheW91dCAgICAgICAgCgkJJHRoaXMtPl9wZXJtc1sndGVtcGxhdGVQZXJtcyddID0gY2hlY2tfcGVybWlzc2lvbigkdGhpcy0+dXNlcmlkLCAnQWRkIFRlbXBsYXRlcycpIHwgY2hlY2tfcGVybWlzc2lvbigkdGhpcy0+dXNlcmlkLCAnTW9kaWZ5IFRlbXBsYXRlcycpIHwgY2hlY2tfcGVybWlzc2lvbigkdGhpcy0+dXNlcmlkLCAnUmVtb3ZlIFRlbXBsYXRlcycpOwoJCSR0aGlzLT5fcGVybXNbJ2Nzc1Blcm1zJ10gPSBjaGVja19wZXJtaXNzaW9uKCR0aGlzLT51c2VyaWQsICdBZGQgU3R5bGVzaGVldHMnKSB8IGNoZWNrX3Blcm1pc3Npb24oJHRoaXMtPnVzZXJpZCwgJ01vZGlmeSBTdHlsZXNoZWV0cycpIHwgY2hlY2tfcGVybWlzc2lvbigkdGhpcy0+dXNlcmlkLCAnUmVtb3ZlIFN0eWxlc2hlZXRzJyk7Cgl9CgoJcHJvdGVjdGVkIGZ1bmN0aW9uIEhhc1Blcm0oJHBlcm1pc3Npb24pCgl7CgkgICAgJHRoaXMtPlNldEFnZ3JlZ2F0ZVBlcm1pc3Npb25zKCk7CgoJICAgIGlmIChpc3NldCgkdGhpcy0+X3Blcm1zWyRwZXJtaXNzaW9uXSkgJiYgJHRoaXMtPl9wZXJtc1skcGVybWlzc2lvbl0pIHsKCSAgICAgICAgcmV0dXJuIHRydWU7CgkgICAgfSBlbHNlIHsKCSAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgIH0KCX0KCgkjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkjIEhlbHAgbWV0aG9kcwoJIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXByb3RlY3RlZCBmdW5jdGlvbiBDcmVhdGVCYWNrVVJMKCR0YWIpCgl7CgkJJHNlY3VyZXBhcmFtID0gQ01TX1NFQ1VSRV9QQVJBTV9OQU1FIC4gJz0nIC4gJF9TRVNTSU9OW0NNU19VU0VSX0tFWV07CgkJcmV0dXJuICdtb2R1bGVpbnRlcmZhY2UucGhwPycgLiAkc2VjdXJlcGFyYW0gLicmbW9kdWxlPScuJHRoaXMtPkdldE5hbWUoKS4nJm0xX2FjdGl2ZV90YWI9Jy4kdGFiOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBDcmVhdGVJbnB1dE51bWJlcigkaWQsICRuYW1lLCAkdmFsdWU9JycsICRhZGR0dGV4dD0nJykKCXsKCQlpZihpc19jYWxsYWJsZSgncGFyZW50OjpDcmVhdGVJbnB1dE51bWJlcicpKQoJCXsKCQkJcmV0dXJuIHBhcmVudDo6Q3JlYXRlSW5wdXROdW1iZXIoJGlkLCAkbmFtZSwgJHZhbHVlLCAkYWRkdHRleHQpOwoJCX0KCgkJcmV0dXJuIFJldmlzaW9uc1V0aWxzOjpDcmVhdGVJbnB1dE51bWJlcigkaWQsICRuYW1lLCAkdmFsdWUsICRhZGR0dGV4dCk7Cgl9Cn0KPz4=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/compare.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpQQUdFQkFDS19VUkwgPSAneyRwYWdlYmFja191cmx9JzsKPC9zY3JpcHQ+CntjbXNfanF1ZXJ5fQo8aDM+eyRjb250ZW50X25hbWV9PC9oMz4Ke2lmICRkaWZmID09ICcnfQo8cD57JG1vZC0+TGFuZygncmV2aXNpb25zX2lkZW50aWNhbCcpfTwvcD4Ke2Vsc2V9CjxwPnskcmVzdG9yZWxpbmt9PGJyIC8+Jm5ic3A7PC9wPgp7JGRpZmZ9CjxwPiZuYnNwOzxiciAvPnskcmVzdG9yZWxpbmt9PC9wPgp7L2lmfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/details.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpQQUdFQkFDS19VUkwgPSAneyRwYWdlYmFja191cmx9JzsKPC9zY3JpcHQ+CntjbXNfanF1ZXJ5fQo8aDM+eyRjb250ZW50X25hbWV9PC9oMz4KCntpZiAkaXRlbWNvdW50ID4gMH0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KCTx0aGVhZD4KCQk8dHI+CgkJCTx0aD57JG1vZC0+TGFuZygnbmFtZScpfTwvdGg+CgkJCTx0aCB3aWR0aD0iMTUwIj57JG1vZC0+TGFuZygncmV2aXNpb24nKX08L3RoPgoJCQk8dGggd2lkdGg9IjE3MCI+eyRtb2QtPkxhbmcoJ2NyZWF0ZV9kYXRlJyl9PC90aD4KCQkJPHRoIHdpZHRoPSIxNzAiPnskbW9kLT5MYW5nKCd1c2VyJyl9PC90aD4KCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+eyRtb2QtPkxhbmcoJ3VuZG8nKX08L3RoPgoJCQk8dGggY2xhc3M9InBhZ2VpY29uIj57JG1vZC0+TGFuZygncHJldmlldycpfTwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24iPnskbW9kLT5MYW5nKCdjb21wYXJlJyl9PC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCXtmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnkgbmFtZT0icmV2aXNpb25zIn0KCQk8dHI+CiAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+CiAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5yZXZpc2lvbl9ucn08L3RkPgogICAgICAgICAgICA8dGQ+eyRlbnRyeS0+Y3JlYXRlX3RpbWV8Y21zX2RhdGVfZm9ybWF0fTwvdGQ+CiAgICAgICAgICAgIDx0ZD57JGVudHJ5LT51c2VybmFtZX08L3RkPgogICAgICAgICAgICA8dGQ+eyRlbnRyeS0+cmVzdG9yZWxpbmt9PC90ZD4KICAgICAgICAgICAgPHRkPnskZW50cnktPnByZXZpZXdsaW5rfTwvdGQ+CiAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5jb21wYXJlbGlua308L3RkPgoJCTwvdHI+Cgl7L2ZvcmVhY2h9Cgk8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/header.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRqcXVlcnlfY3NzKX17JGpxdWVyeV9jc3N9ey9pZn0KPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ieyRtb2R1bGVkaXJ9L2Nzcy9iYWNrZW5kLmNzcyIgLz4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8IS0tCnZhciBDTVNfQURNSU5fRElSID0gJ3skYWRtaW5kaXJ9JzsKdmFyIENNU19VU0VSX0tFWSA9ICd7JHVzZXJrZXl9JzsKLS0+Cjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ7JG1vZHVsZWRpcn0vanMvYmFja2VuZC5qcyI+PC9zY3JpcHQ+]]></data>
	</file>
	<file>
	  <filename>/templates/help.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBzdHlsZT0iZmxvYXQ6cmlnaHQiPjxmb3JtIGFjdGlvbj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9jZ2ktYmluL3dlYnNjciIgbWV0aG9kPSJwb3N0Ij4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY21kIiB2YWx1ZT0iX3MteGNsaWNrIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaG9zdGVkX2J1dHRvbl9pZCIgdmFsdWU9IjdUS0dZUlkzU1JQRVkiPgo8aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaHR0cHM6Ly93d3cucGF5cGFsb2JqZWN0cy5jb20vZW5fVVMvaS9idG4vYnRuX2RvbmF0ZV9MRy5naWYiIGJvcmRlcj0iMCIgbmFtZT0ic3VibWl0IiBhbHQ9IlBheVBhbCAtIFRoZSBzYWZlciwgZWFzaWVyIHdheSB0byBwYXkgb25saW5lISI+CjxpbWcgYWx0PSIiIGJvcmRlcj0iMCIgc3JjPSJodHRwczovL3d3dy5wYXlwYWxvYmplY3RzLmNvbS9kZV9ERS9pL3Njci9waXhlbC5naWYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPgo8L2Zvcm0+PC9kaXY+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0ieyRyb290dXJsfS9tb2R1bGVzL1JldmlzaW9ucy9qcy9seXRlYm94LmpzIj48L3NjcmlwdD4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ7JHJvb3R1cmx9L21vZHVsZXMvUmV2aXNpb25zL2Nzcy9seXRlYm94LmNzcyIgdHlwZT0idGV4dC9jc3MiIC8+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ieyRyb290dXJsfS9tb2R1bGVzL1JldmlzaW9ucy9jc3MvYmFja2VuZC5jc3MiIHR5cGU9InRleHQvY3NzIiAvPgo8ZGl2IGlkPSJwYWdlX3RhYnMiPgoJPGRpdiBpZD0iZ2VuZXJhbCI+CgkJeyRtb2QtPkxhbmcoJ2dlbmVyYWwnKX0KCTwvZGl2PgoJPGRpdiBpZD0icGVybWlzc2lvbnMiPgoJCXskbW9kLT5MYW5nKCdwZXJtaXNzaW9ucycpfQoJPC9kaXY+Cgk8ZGl2IGlkPSJhYm91dCI+CgkJeyRtb2QtPkxhbmcoJ2Fib3V0Jyl9Cgk8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CjxkaXYgaWQ9InBhZ2VfY29udGVudCI+ICAKCTxkaXYgaWQ9ImdlbmVyYWxfYyI+CgkJeyRtb2QtPkxhbmcoJ2hlbHBfZ2VuZXJhbCcpfQoJPC9kaXY+Cgk8ZGl2IGlkPSJwZXJtaXNzaW9uc19jIj4KCQl7JG1vZC0+TGFuZygnaGVscF9wZXJtaXNzaW9ucycpfQoJPC9kaXY+Cgk8ZGl2IGlkPSJhYm91dF9jIj4KCQl7JG1vZC0+TGFuZygnaGVscF9hYm91dCcpfQoJPC9kaXY+ICAKPC9kaXY+]]></data>
	</file>
	<file>
	  <filename>/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/templates/listitems.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGV9PC9oMz4Ke2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgoJPHRoZWFkPgoJCTx0cj4KCQkJPHRoIHdpZHRoPSIzNSI+Jm5ic3A7PC90aD4KCQkJPHRoPnskbW9kLT5MYW5nKCduYW1lJyl9PC90aD4KCQkJPHRoPnskbW9kLT5MYW5nKCdyZXZpc2lvbnMnKX08L3RoPgoJCQk8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJe2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KCQk8dHI+CgkJCTx0ZD57JGVudHJ5LT5oaWVyYXJjaHl9PC90ZD4KICAgICAgICAgICAgPHRkPntyZXBlYXQgc3RyaW5nPSItJm5ic3A7Jm5ic3A7Jm5ic3A7IiB0aW1lcz0kZW50cnktPmRlcHRofXskZW50cnktPm5hbWVsaW5rfTwvdGQ+CiAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5yZXZpc2lvbnN9PC90ZD4KICAgICAgICAgICAgPHRkPnskZW50cnktPmRldGFpbGxpbmt9PC90ZD4KCQk8L3RyPgoJey9mb3JlYWNofQoJPC90Ym9keT4KPC90YWJsZT4Ke2Vsc2V9CjxwPnskbW9kLT5MYW5nKCdub3JldmlzaW9ucycpfTwvcD4Key9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/optiontab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CjxmaWVsZHNldD4KPGxlZ2VuZD57JG1vZC0+TGFuZygnZ2VuZXJhbF9vcHRpb25zJyl9PC9sZWdlbmQ+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3N0b3JlX3JldmlzaW9uc19jb3VudCcpfTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9zdG9yZV9yZXZpc2lvbnNfY291bnR9PGJyIC8+eyRtb2QtPkxhbmcoJ3N0b3JlX3JldmlzaW9uc191bmxpbWl0ZWQnKX08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdkZWxldGVfcmV2aXNpb25zX3dpdGhfY29udGVudCcpfTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9kZWxldGVfcmV2aXNpb25zX3dpdGhfY29udGVudH08L3A+Cgk8L2Rpdj4KPC9maWVsZHNldD4KPGZpZWxkc2V0Pgo8bGVnZW5kPnskbW9kLT5MYW5nKCdkZWxldGVfcmV2aXNpb25zJyl9PC9sZWdlbmQ+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2RlbGV0ZV9hbGxfYnV0Jyl9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2RlbGV0ZV9hbGxfYnV0fSB7JHN1Ym1pdF9kZWxldGVfYWxsX2J1dH08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnZGVsZXRlX29sZGVyX3RoYW4nKX06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQgZGF0ZXBpY2tlciI+eyRpbnB1dF9kZWxldGVfb2xkZXJfdGhhbn0geyRzdWJtaXRfZGVsZXRlX29sZGVyX3RoYW59PC9wPgoJPC9kaXY+CjwvZmllbGRzZXQ+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fTwvcD4KPC9kaXY+CnskZW5kZm9ybX0=]]></data>
	</file>
	<file>
	  <filename>/templates/preview.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpQQUdFQkFDS19VUkwgPSAneyRwYWdlYmFja191cmx9JzsKPC9zY3JpcHQ+CntjbXNfanF1ZXJ5fQoKPGgzPnskY29udGVudF9uYW1lfTwvaDM+CjxwPnskcmVzdG9yZWxpbmt9PGJyIC8+Jm5ic3A7PC9wPgo8cD48Yj57JG1vZC0+TGFuZygncmV2aXNpb24nKX0geyRyZXZpc2lvbl9ucn08L2I+PGJyIC8+Jm5ic3A7PC9wPgoKPHByZSBpZD0icHJldmlld2NvZGUiPgo8Y29kZT57JGNvZGV9PC9jb2RlPgo8L3ByZT4KPHA+Jm5ic3A7PGJyIC8+eyRyZXN0b3JlbGlua308L3A+]]></data>
	</file>
</module>
