<?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>CMSForms</name>
	<version>1.10.10</version>
  <mincmsversion>1.10</mincmsversion>
	<help><![CDATA[Cgk8aDM+SG93IHRvIHVzZSB0aGlzIG1vZHVsZT88L2gzPgoJPHA+VGhpcyBtb2R1bGUgaXMgYWltZWQgdG8gcmVwbGFjZSB0aGUgdHJhZGl0aW9uYWwgd2F5IG9mIG1hbmlwdWxhdGUgZm9ybXMgaW4gQ01TTVMgIkFQSSIuIEl0IGFsbG93cyB5b3UgdG8gZm9jdXMgbW9yZSBvbiB5b3VyIG9iamVjdHMgYW5kIGNvZGUuPC9wPgoJCgk8aDM+UEhQIFNpZGU8L2gzPgoJPHA+VG8gY3JlYXRlIGEgZm9ybSwgdXNlIHRoZSBmb2xsb3dpbmcgZm9ybWF0LjwvcD4KICA8dGV4dGFyZWEgY29scz0iMjAwIiByb3dzPSIyIiBzdHlsZT0iaGVpZ2h0OjQwcHg7ICI+CiAgJGZvcm0gPSBuZXcgQ01TRm9ybSgnTXlNb2R1bGUnLCAkaWQsICdhY3Rpb24nLCAkcmV0dXJuaWQpOwogICR0aGlzLT5zbWFydHktPmFzc2lnbignZm9ybScsICRmb3JtKTsKICA8L3RleHRhcmVhPgkKICA8cD5UbyBnbyBmdXJ0ZXIsIHlvdSBjYW4gdXNlIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOjwvcD4KCTx0ZXh0YXJlYSBjb2xzPSIyMDAiPgogICRmb3JtID0gbmV3IENNU0Zvcm0oJ015TW9kdWxlJywgJGlkLCAnYWN0aW9uJywgJHJldHVybmlkKTsKICAKICAkZm9ybS0+c2V0QnV0dG9ucyhhcnJheSgnc2F2ZScsJ2NhbmNlbCcpKTsKICAKICAkZm9ybS0+c2V0V2lkZ2V0KCd0aXRsZScsICd0ZXh0JywgYXJyYXkoJ2NsYXNzJyA9PiAnZmllbGQnKSk7CiAgCiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmb3JtJywgJGZvcm0pOwogIDwvdGV4dGFyZWE+CiAgPGgzPlNtYXJ0eSBzaWRlPC9oMz4KICA8Y29kZT48cHJlPgogIHtpZiBpc3NldCgkZm9ybSl9CiAgICB7aWYgJGZvcm0tJmd0O2hhc0Vycm9ycygpfSZsdDtkaXYgc3R5bGU9JnF1b3Q7Y29sb3I6IHJlZDsmcXVvdDsmZ3Q7eyRmb3JtLSZndDtzaG93RXJyb3JzKCl9Jmx0Oy9kaXYmZ3Q7ey9pZn0KCXskZm9ybS0mZ3Q7Z2V0SGVhZGVycygpfQoKCXskZm9ybS0mZ3Q7c2hvd1dpZGdldHMoXCYjeDI3OyZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZW92ZXJmbG93JnF1b3Q7Jmd0OwoJCSZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZXRleHQmcXVvdDsmZ3Q7JUxBQkVMJTombHQ7L2RpdiZndDsKCQkmbHQ7ZGl2IGNsYXNzPSZxdW90O3BhZ2VpbnB1dCZxdW90OyZndDslSU5QVVQlICZsdDtlbSZndDslVElQUyUmbHQ7L2VtJmd0OyZsdDsvZGl2Jmd0OwoJCSZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZWlucHV0JnF1b3Q7IHN0eWxlPSZxdW90O2NvbG9yOiByZWQ7JnF1b3Q7Jmd0OyVFUlJPUlMlJmx0Oy9kaXYmZ3Q7CgkmbHQ7L2RpdiZndDtcJiN4Mjc7KX0KCgl7JGZvcm0tJmd0O3JlbmRlckZpZWxkc2V0cyhcJiN4Mjc7Jmx0O2RpdiBjbGFzcz0mcXVvdDtwYWdlb3ZlcmZsb3cmcXVvdDsmZ3Q7CgkJJmx0O2RpdiBjbGFzcz0mcXVvdDtwYWdldGV4dCZxdW90OyZndDslTEFCRUwlOiZsdDsvZGl2Jmd0OwoJCSZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZWlucHV0JnF1b3Q7Jmd0OyVJTlBVVCUgJmx0O2VtJmd0OyVUSVBTJSZsdDsvZW0mZ3Q7Jmx0Oy9kaXYmZ3Q7CgkJJmx0O2RpdiBjbGFzcz0mcXVvdDtwYWdlaW5wdXQmcXVvdDsgc3R5bGU9JnF1b3Q7Y29sb3I6IHJlZDsmcXVvdDsmZ3Q7JUVSUk9SUyUmbHQ7L2RpdiZndDsKCSZsdDsvZGl2Jmd0O1wmI3gyNzspfQoKCSZsdDtwJmd0OwoJCXskZm9ybS0mZ3Q7Z2V0QnV0dG9ucygpfQoJJmx0Oy9wJmd0OwoJeyRmb3JtLSZndDtnZXRGb290ZXJzKCl9CnsvaWZ9CiAgPC9wcmU+PC9jb2RlPgoKCTxoMz5DcmVkaXRzPC9oMz4KCTxwPkplYW4tQ2hyaXN0b3BoZSBDdXZlbGllciAtIHRvdG9waGVAdG90b3BoZS5jb208L3A+CQoJPGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBQYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciBkaXNwbGF5IG9uIHRoZSBmcm9udGVuZC4gTm90IGFsbCBtb2R1bGVzIHN1cHBvcnQgb3IgbmVlZCB0aGlzLjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgJmx0O2pjY0BhdG9tc2VlZHMuY29tJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMTAuMTA8YnIgLz4=]]></about>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/CMSForms.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCglNb2R1bGU6IENNUyBGb3JtcyAtIFRoaXMgbW9kdWxlIGhlbHBzIGRldmVsb3BlcnMgdG8gaGFuZGxlIGZvcm1zIGZvciB0aGVpciBmcm9udGVuZCBvciBiYWNrZW5kIGFwcGxpY2F0aW9ucwoJCglDb3B5cmlnaHRzOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgLSAyMDEyIMKpCiovCgoKY2xhc3MgQ01TRm9ybXMgZXh0ZW5kcyBDTVNNb2R1bGUKewoJcHVibGljIGZ1bmN0aW9uIEdldE5hbWUoKSAgICAgICAgICAgICAgIHsgcmV0dXJuICdDTVNGb3Jtcyc7CSAgICAgICAgICAgICAgIH0KCXB1YmxpYyBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgICAgICAgICAgICB7IHJldHVybiAnMS4xMC4xMCc7ICAgICAgICAgICAgICAgICAgICB9CglwdWJsaWMgZnVuY3Rpb24gR2V0QXV0aG9yKCkgICAgICAgICAgICAgeyByZXR1cm4gJ0plYW4tQ2hyaXN0b3BoZSBDdXZlbGllcic7IH0KCXB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpICAgICAgICB7IHJldHVybiAnamNjQGF0b21zZWVkcy5jb20nOyAgIH0KCQogICAgcHVibGljICBmdW5jdGlvbiBHZXRIZWxwKCkgeyAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdoZWxwJyk7ICB9CglwdWJsaWMgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKSAgICB7IHJldHVybiAnMS4xMCc7ICB9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiRsYW5nID0gYXJyYXkoCgkKCQoJCgkKCQovLyBFeGNlcHRpb25zCgonZmllbGRfaXNfZW1wdHknID0+ICdUaGUgZmllbGQgJXMgaXMgZW1wdHkuJywJCidmaWVsZF9jYW5ub3RfYmVfZW1wdHknID0+ICdUaGUgZmllbGQgIiVzIiBjYW5ub3QgYmUgZW1wdHkuJywJCid1bmtub3duIGZpZWxkJyA9PiAnVW5rbm93biBmaWVsZCAiJXMiJywKJ2ZpZWxkcyBub3QgZXF1YWwnID0+ICdUaGUgIiVzIiBhbmQgIiVzIiBoYXZlIHRvIGJlIHRoZSBzYW1lLicsCidpbnZhbGlkIGVtYWlsJyA9PiAnVGhlIGVtYWlsICZsYXF1bzslcyZyYXF1bzsgaXMgbm90IHZhbGlkLicsCidmaWVsZCBub3QgdW5pcXVlJyA9PiAnJXMgYWxyZWFkeSBleGlzdHMuJywKJ3NlbGVjdCBvbmUnID0+ICdTZWxlY3Qgb25lJywKCQoJCgknaGVscCcgPT4gJwoJPGgzPkhvdyB0byB1c2UgdGhpcyBtb2R1bGU/PC9oMz4KCTxwPlRoaXMgbW9kdWxlIGlzIGFpbWVkIHRvIHJlcGxhY2UgdGhlIHRyYWRpdGlvbmFsIHdheSBvZiBtYW5pcHVsYXRlIGZvcm1zIGluIENNU01TICJBUEkiLiBJdCBhbGxvd3MgeW91IHRvIGZvY3VzIG1vcmUgb24geW91ciBvYmplY3RzIGFuZCBjb2RlLjwvcD4KCQoJPGgzPlBIUCBTaWRlPC9oMz4KCTxwPlRvIGNyZWF0ZSBhIGZvcm0sIHVzZSB0aGUgZm9sbG93aW5nIGZvcm1hdC48L3A+CiAgPHRleHRhcmVhIGNvbHM9IjIwMCIgcm93cz0iMiIgc3R5bGU9ImhlaWdodDo0MHB4OyAiPgogICRmb3JtID0gbmV3IENNU0Zvcm0oXCdNeU1vZHVsZVwnLCAkaWQsIFwnYWN0aW9uXCcsICRyZXR1cm5pZCk7CiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKFwnZm9ybVwnLCAkZm9ybSk7CiAgPC90ZXh0YXJlYT4JCiAgPHA+VG8gZ28gZnVydGVyLCB5b3UgY2FuIHVzZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb21tYW5kczo8L3A+Cgk8dGV4dGFyZWEgY29scz0iMjAwIj4KICAkZm9ybSA9IG5ldyBDTVNGb3JtKFwnTXlNb2R1bGVcJywgJGlkLCBcJ2FjdGlvblwnLCAkcmV0dXJuaWQpOwogIAogICRmb3JtLT5zZXRCdXR0b25zKGFycmF5KFwnc2F2ZVwnLFwnY2FuY2VsXCcpKTsKICAKICAkZm9ybS0+c2V0V2lkZ2V0KFwndGl0bGVcJywgXCd0ZXh0XCcsIGFycmF5KFwnY2xhc3NcJyA9PiBcJ2ZpZWxkXCcpKTsKICAKICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oXCdmb3JtXCcsICRmb3JtKTsKICA8L3RleHRhcmVhPgogIDxoMz5TbWFydHkgc2lkZTwvaDM+CiAgPGNvZGU+PHByZT4KICB7aWYgaXNzZXQoJGZvcm0pfQogICAge2lmICRmb3JtLSZndDtoYXNFcnJvcnMoKX0mbHQ7ZGl2IHN0eWxlPSZxdW90O2NvbG9yOiByZWQ7JnF1b3Q7Jmd0O3skZm9ybS0mZ3Q7c2hvd0Vycm9ycygpfSZsdDsvZGl2Jmd0O3svaWZ9Cgl7JGZvcm0tJmd0O2dldEhlYWRlcnMoKX0KCgl7JGZvcm0tJmd0O3Nob3dXaWRnZXRzKFwmI3gyNzsmbHQ7ZGl2IGNsYXNzPSZxdW90O3BhZ2VvdmVyZmxvdyZxdW90OyZndDsKCQkmbHQ7ZGl2IGNsYXNzPSZxdW90O3BhZ2V0ZXh0JnF1b3Q7Jmd0OyVMQUJFTCU6Jmx0Oy9kaXYmZ3Q7CgkJJmx0O2RpdiBjbGFzcz0mcXVvdDtwYWdlaW5wdXQmcXVvdDsmZ3Q7JUlOUFVUJSAmbHQ7ZW0mZ3Q7JVRJUFMlJmx0Oy9lbSZndDsmbHQ7L2RpdiZndDsKCQkmbHQ7ZGl2IGNsYXNzPSZxdW90O3BhZ2VpbnB1dCZxdW90OyBzdHlsZT0mcXVvdDtjb2xvcjogcmVkOyZxdW90OyZndDslRVJST1JTJSZsdDsvZGl2Jmd0OwoJJmx0Oy9kaXYmZ3Q7XCYjeDI3Oyl9CgoJeyRmb3JtLSZndDtyZW5kZXJGaWVsZHNldHMoXCYjeDI3OyZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZW92ZXJmbG93JnF1b3Q7Jmd0OwoJCSZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZXRleHQmcXVvdDsmZ3Q7JUxBQkVMJTombHQ7L2RpdiZndDsKCQkmbHQ7ZGl2IGNsYXNzPSZxdW90O3BhZ2VpbnB1dCZxdW90OyZndDslSU5QVVQlICZsdDtlbSZndDslVElQUyUmbHQ7L2VtJmd0OyZsdDsvZGl2Jmd0OwoJCSZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZWlucHV0JnF1b3Q7IHN0eWxlPSZxdW90O2NvbG9yOiByZWQ7JnF1b3Q7Jmd0OyVFUlJPUlMlJmx0Oy9kaXYmZ3Q7CgkmbHQ7L2RpdiZndDtcJiN4Mjc7KX0KCgkmbHQ7cCZndDsKCQl7JGZvcm0tJmd0O2dldEJ1dHRvbnMoKX0KCSZsdDsvcCZndDsKCXskZm9ybS0mZ3Q7Z2V0Rm9vdGVycygpfQp7L2lmfQogIDwvcHJlPjwvY29kZT4KCgk8aDM+Q3JlZGl0czwvaDM+Cgk8cD5KZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgLSB0b3RvcGhlQHRvdG9waGUuY29tPC9wPgkKCScsCgkKCQoJCik7]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.CMSForm.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIFRoaXMgY2xhc3MgYWltIHRvIGhhbmRsZSBDTVMgRm9ybXMgdmVyeSBkaWZmZXJlbnRseS4KICAgIAogICAgQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgPGN5YmVydG90b3BoZUBnbWFpbC5jb20+CiAgICBDb3B5cmlnaHRzOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgMjAxMgogICAgTGljZW5jZTogR1BMICAgIAogIAogICovCgpjbGFzcyBDTVNGb3JtICAvL2V4dGVuZHMgIENtc09iamVjdAp7CiAgCiAgcHJvdGVjdGVkICRtb2R1bGVfbmFtZTsKICBwcm90ZWN0ZWQgJGlkOyAvLyBUaGUgZm9ybSBJRAogIHByb3RlY3RlZCAkcmV0dXJuaWQ7CiAgcHJvdGVjdGVkICRhY3Rpb247ICAKICBwcm90ZWN0ZWQgJG1ldGhvZCA9ICdnZXQnOwogIHByb3RlY3RlZCAkZW5jdHlwZTsKICBwcm90ZWN0ZWQgJGlubGluZSA9IGZhbHNlOwogIAogIHByb3RlY3RlZCAkd2lkZ2V0cyA9IGFycmF5KCk7IC8vIFRoZSBmb3JtIHdpZGdldHMKICBwcm90ZWN0ZWQgJGhpZGRlbl93aWRnZXRzID0gYXJyYXkoKTsgLy8gU3BlY2lmaWMgd2lkZ2V0cyBzaG93biBvbiB0aGUgYmVnaW47CiAgcHJvdGVjdGVkICRmaWVsZHNldHMgPSBhcnJheSgpOyAvLyBTdWIgZm9ybXMgZm9yIGZpZWxkc2V0cwogIAogIHByb3RlY3RlZCAkbGFiZWxzID0gYXJyYXkoCiAgICAnc3VibWl0JyA9PiAnU3VibWl0JywKICAgICdhcHBseScgPT4gJ0FwcGx5JywKICAgICdjYW5jZWwnID0+ICdDYW5jZWwnLAogICAgJ25leHQnID0+ICdOZXh0JywKICAgICdwcmV2aW91cycgPT4gJ1ByZXZpb3VzJwogICAgKTsKICAgIAogIHByb3RlY3RlZCAkYWN0aXZlX2J1dHRvbnMgPSBhcnJheSgnc3VibWl0JywnY2FuY2VsJyk7CiAgcHJvdGVjdGVkICRmb3JtX2Vycm9ycyA9IGFycmF5KCk7IAogIHByb3RlY3RlZCAkc2hvd19wcmlvcml0eSA9IGZhbHNlOwogIAogIHByb3RlY3RlZCAkdGVtcGxhdGVzID0gYXJyYXkoCiAgICAnd2lkZ2V0JyA9PiAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgPGRpdiBjbGFzcz0icGFnZXRleHQiPiVMQUJFTCU6PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InBhZ2VpbnB1dCI+JVBSRUZJWCUgJUlOUFVUJSAlU1VGSVglPGVtPiVUSVBTJTwvZW0+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InBhZ2VpbnB1dCIgc3R5bGU9ImNvbG9yOiByZWQ7Ij4lRVJST1JTJTwvZGl2PgogICAgPC9kaXY+JywKICAgICdlcnJvcnMnID0+ICc8ZGl2IHN0eWxlPSJjb2xvcjogcmVkOyI+JUVSUk9SUyU8L2Rpdj4nLAogICAgJ2J1dHRvbnMnID0+ICc8cD4lQlVUVE9OUyU8L3A+JwogICAgKTsKICAKICBwcm90ZWN0ZWQgJGFjdGlvbl91cmw7IC8vIFRvIHNwZWNpZnkgYSBkaWZmZXJlbnQgZm9ybSBhY3Rpb24KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJG1vZHVsZV9uYW1lIFRoZSBtb2R1bGUgbmFtZSBmb3IgdGhlIGZvcm0KICAgICAqIEBwYXJhbSBzdHJpbmcgJGlkIFRoZSBJRCBvZiB0aGUgcGFnZQogICAgICogQHBhcmFtIHN0cmluZyAkYWN0aW9uIFRoZSBhY3Rpb24geW91IHdhbnQgdG8gZXhlY3V0ZQogICAgICogQHBhcmFtIHN0cmluZyAkcmV0dXJuaWQgVGhlIHJldHVybiBJRCAocmV0dXJuIHBhZ2UpCiAgICAgKi8KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG1vZHVsZV9uYW1lLCAkaWQsICRhY3Rpb24sICRyZXR1cm5pZCkKICB7CiAgICAkdGhpcy0+bW9kdWxlX25hbWUgPSAkbW9kdWxlX25hbWU7CiAgICAkdGhpcy0+aWQgPSAkaWQ7CiAgICAkdGhpcy0+cmV0dXJuaWQgPSAkcmV0dXJuaWQ7CiAgICAkdGhpcy0+YWN0aW9uID0gJGFjdGlvbjsKICAgIAogICAgcmV0dXJuICR0aGlzOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgewogICAgcmV0dXJuICR0aGlzLT5yZW5kZXIoKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGdldElkKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPmlkOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gc2V0TWV0aG9kKCRtZXRob2QgPSAnZ2V0JykKICB7CiAgICBpZiAoJG1ldGhvZCA9PSAncG9zdCcpCiAgICB7CiAgICAgICR0aGlzLT5tZXRob2QgPSAncG9zdCc7CiAgICB9CiAgICAKICAgIHJldHVybiAkdGhpczsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHNldEFjdGlvblVybCgkYWN0aW9uX3VybCkKICB7CiAgICAkdGhpcy0+YWN0aW9uX3VybCA9ICRhY3Rpb25fdXJsOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gc2V0TXVsdGlwYXJ0Rm9ybSgpCiAgewogICAgJHRoaXMtPm1ldGhvZCA9ICdwb3N0JzsKICAgICR0aGlzLT5lbmN0eXBlID0gJ211bHRpcGFydC9mb3JtLWRhdGEnOwogICAgCiAgICByZXR1cm4gJHRoaXM7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBzZXRJbmxpbmUoKQogIHsKICAgICR0aGlzLT5pbmxpbmUgPSB0cnVlOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gcHJvY2VzcygpCiAgewogICAgJHN0YXRlID0gdHJ1ZTsKICAgIGZvcmVhY2goJHRoaXMtPndpZGdldHMgYXMgJHdpZGdldCkKICAgIHsKICAgICAgaWYoJHdpZGdldC0+cHJvY2VzcygpID09PSBmYWxzZSkKICAgICAgewogICAgICAgICRzdGF0ZSA9IGZhbHNlOwogICAgICB9CiAgICB9CiAgICAKICAgIGZvcmVhY2goJHRoaXMtPmhpZGRlbl93aWRnZXRzIGFzICR3aWRnZXQpCiAgICB7CiAgICAgIGlmKCR3aWRnZXQtPnByb2Nlc3MoKSA9PT0gZmFsc2UpCiAgICAgIHsKICAgICAgICAkc3RhdGUgPSBmYWxzZTsKICAgICAgfQogICAgfSAgICAKICAgIAogICAgZm9yZWFjaCgkdGhpcy0+ZmllbGRzZXRzIGFzICRmaWVsZHNldCkKICAgIHsKICAgICAgaWYoJGZpZWxkc2V0LT5wcm9jZXNzKCkgPT09IGZhbHNlKQogICAgICB7CiAgICAgICAgJHN0YXRlID0gZmFsc2U7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiAkc3RhdGU7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiByZW5kZXJfKCkKICB7ICAKICAgIC8vIFRPRE86IExPQUQgVEVNUExBVEUgRlJPTSBGSUxFLi4uCiAgICAkdGVtcGxhdGUgPSBmaWxlX2dldF9jb250ZW50cyhkaXJuYW1lKGRpcm5hbWUoZGlybmFtZShfX0ZJTEVfXykpKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAndGVtcGxhdGVzJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnYWRtaW4uZm9ybS50cGwnKTsKICAgIAogICAgJHNtYXJ0eSA9IG5ldyBTbWFydHkoKTsKICAgICRzbWFydHktPmFzc2lnbignZm9ybScsICR0aGlzKTsgICAgCiAgICAkc21hcnR5LT5fY29tcGlsZV9zb3VyY2UoJ3RlbXBvcmFyeSB0ZW1wbGF0ZScsICR0ZW1wbGF0ZSwgJF9jb21waWxlZCApOwogICAgQG9iX3N0YXJ0KCk7CiAgICAkc21hcnR5LT5fZXZhbCgnPz4nIC4gJF9jb21waWxlZCk7CiAgICAkX2NvbnRlbnRzID0gQG9iX2dldF9jb250ZW50cygpOwogICAgQG9iX2VuZF9jbGVhbigpOwogICAgcmV0dXJuICRfY29udGVudHM7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiByZW5kZXIoKQogIHsKICAgIC8vICRmaWxlID0gZGlybmFtZShkaXJuYW1lKGRpcm5hbWUoX19GSUxFX18pKSkgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ3RlbXBsYXRlcycgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ2FkbWluLmZvcm0udHBsJzsKICAgICRmaWxlID0gZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSkgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ3RlbXBsYXRlcycgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ2FkbWluLmZvcm0udHBsJzsKICAgIC8vICRmaWxlMiA9ICdhZG1pbi5mb3JtLnRwbCc7CiAgICAvLyBXZSBsb2FkIHRoZSB0ZW1wbGF0ZSBoZXJlIGJlY2F1c2Ugb2YgU21hcnR5IHJlc3RyaWN0aW9ucwogICAgLy8gJHRlbXBsYXRlID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGUpOwogICAgCiAgICAkY21zX3NtYXJ0eSA9ICBjbXNtcygpLT5HZXRTbWFydHkoKTsKICAgIAogICAgJHNtYXJ0eSA9IG5ldyBTbWFydHkoKTsKICAgICRzbWFydHktPmNvbXBpbGVfZGlyID0gJGNtc19zbWFydHktPmNvbXBpbGVfZGlyOwogICAgJHNtYXJ0eS0+YXNzaWduKCdmb3JtJywgJHRoaXMpOwogICAgCiAgICByZXR1cm4gJHNtYXJ0eS0+ZmV0Y2goJ2ZpbGU6Jy4kZmlsZSk7CiAgICAKICAgIC8vIHJldHVybiAkc21hcnR5LT5kaXNwbGF5KCdzdHJpbmc6Jy4kdGVtcGxhdGUpOwogICAgLy8gcmV0dXJuICRzbWFydHktPmRpc3BsYXkoJ21vZHVsZV9maWxlX3RwbDpDTVNGb3JtczsnLiRmaWxlMik7CiAgICAvLyByZXR1cm4gJHNtYXJ0eS0+ZGlzcGxheSgkZmlsZSk7CiAgICAKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHNldFRlbXBsYXRlKCR0ZW1wbGF0ZV9uYW1lLCAkdGVtcGxhdGUpCiAgewogICAgJHRoaXMtPnRlbXBsYXRlc1skdGVtcGxhdGVfbmFtZV0gPSAkdGVtcGxhdGU7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBnZXRIZWFkZXJzKCkKICB7CiAgICBpZiAoY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSkpCiAgICB7ICAgICAgCiAgICAgIGlmKCR0aGlzLT5hY3Rpb25fdXJsKQogICAgICB7CiAgICAgICAgJGh0bWwgPSAnPGZvcm0gbmFtZT0iJyAuICR0aGlzLT5pZCAuICciIG1ldGhvZD0iJyAuICR0aGlzLT5tZXRob2QgLiAnIiBhY3Rpb249IicgLiAkdGhpcy0+YWN0aW9uX3VybCAuICciJzsKICAgICAgICAKICAgICAgICBpZigkdGhpcy0+ZW5jdHlwZSkgJGh0bWwgLj0gJyBlbmN0eXBlPSInIC4gJHRoaXMtPmVuY3R5cGUgLiAnIic7CiAgICAgICAgCiAgICAgICAgJGh0bWwgLj0gJz4nOwogICAgICB9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgICRodG1sID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSktPkNyZWF0ZUZvcm1TdGFydCgkdGhpcy0+aWQsICR0aGlzLT5hY3Rpb24sICR0aGlzLT5yZXR1cm5pZCwgJHRoaXMtPm1ldGhvZCwgJHRoaXMtPmVuY3R5cGUsICR0aGlzLT5pbmxpbmUpOwogICAgICB9CiAgICAgIAogICAgICBmb3JlYWNoKCR0aGlzLT5oaWRkZW5fd2lkZ2V0cyBhcyAkd2lkZ2V0KQogICAgICB7CiAgICAgICAgJGh0bWwgLj0gJHdpZGdldC0+Z2V0SW5wdXQoKTsKICAgICAgfSAgICAgIAogICAgICByZXR1cm4gJGh0bWw7CiAgICB9CiAgICByZXR1cm4gbnVsbDsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGdldEZvb3RlcnMoKQogIHsKICAgIGlmICgoY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSkpKQogICAgeyAgICAgIAogICAgICAkaHRtbCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkdGhpcy0+bW9kdWxlX25hbWUpLT5DcmVhdGVGb3JtRW5kKCk7CiAgICAgIHJldHVybiAkaHRtbDsKICAgIH0KICAgIHJldHVybiBudWxsOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gc2V0TGFiZWwoJGxhYmVsLCAkdGl0bGUpCiAgewogICAgJHRoaXMtPmxhYmVsc1skbGFiZWxdID0gJHRpdGxlOwogICAgCiAgICByZXR1cm4gJHRoaXM7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBzZXRMYWJlbHMoJGxhYmVscyA9IGFycmF5KCkpCiAgewogICAgZm9yZWFjaCgkbGFiZWxzIGFzICRsYWJlbCA9PiAkdGl0bGUpCiAgICB7CiAgICAgICR0aGlzLT5zZXRMYWJlbCgkbGFiZWwsICR0aXRsZSk7CiAgICB9CiAgICAKICAgIHJldHVybiAkdGhpczsKICB9ICAKICAKICBwdWJsaWMgZnVuY3Rpb24gc2V0QnV0dG9ucygkYnV0dG9ucyA9IGFycmF5KCkpCiAgewogICAgaWYgKGlzX2FycmF5KCRidXR0b25zKSkgICR0aGlzLT5hY3RpdmVfYnV0dG9ucyA9ICRidXR0b25zOwogICAgCiAgICByZXR1cm4gJHRoaXM7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBnZXRCdXR0b25zKCkKICB7CiAgICAkaHRtbCA9ICcnOwogICAgZm9yZWFjaCgkdGhpcy0+YWN0aXZlX2J1dHRvbnMgYXMgJGJ1dHRvbikKICAgIHsKICAgICAgLy8gJGh0bWwgLj0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSktPkNyZWF0ZUlucHV0U3VibWl0KCR0aGlzLT5pZCwgJGJ1dHRvbiwgJHRoaXMtPmxhYmVsc1skYnV0dG9uXSk7CiAgICAgICRodG1sIC49ICBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJHRoaXMtPm1vZHVsZV9uYW1lKS0+Q3JlYXRlSW5wdXRTdWJtaXQoJHRoaXMtPmlkLCAkYnV0dG9uLCAkdGhpcy0+bGFiZWxzWyRidXR0b25dLCAnY2xhc3M9InN1Ym1pdCInKTsKICAgIH0KICAgIAogICAgcmV0dXJuICRodG1sOwogIH0KCiAgICAvKioKICAgICAqIEFkZCBhbiBpbnB1dCBmaWVsZCB0byB0aGUgZm9ybQogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSBUaGUgbmFtZSBvZiB0aGUgaW5wdXQgZmllbGQKICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUgVGhlIHR5cGUgb2YgaW5wdXQKICAgICAqIEBwYXJhbSBhcnJheSAkc2V0dGluZ3MKICAgICAqIEByZXR1cm4gbnVsbAogICAgICovCgogICAgcHVibGljIGZ1bmN0aW9uIHNldFdpZGdldCgkbmFtZSwkdHlwZSwkc2V0dGluZ3MgPSBhcnJheSgpKQogIHsKICAgICR3aWRnZXQgPSBuZXcgQ01TRm9ybVdpZGdldCgkdGhpcywkdGhpcy0+aWQsJHRoaXMtPm1vZHVsZV9uYW1lLCRuYW1lLCR0eXBlLCRzZXR0aW5ncyk7CiAgICBpZiAoJHR5cGUgPT0gJ2hpZGRlbicpCiAgICB7CiAgICAgICR0aGlzLT5oaWRkZW5fd2lkZ2V0c1skbmFtZV0gPSAkd2lkZ2V0OwogICAgfQogICAgZWxzZWlmICgkdHlwZSA9PSAnZmlsZScpCiAgICB7CiAgICAgICR0aGlzLT5zZXRNdWx0aXBhcnRGb3JtKCk7IC8vIElmIHdlIGFkZCBmaWxlcywgd2UgaGF2ZSB0byBiZSBwb3N0ZWQgbXVsdGlwYXJ0IGZvcm1zLi4uCiAgICAgICR0aGlzLT53aWRnZXRzWyRuYW1lXSA9ICR3aWRnZXQ7CiAgICB9ICAgIAogICAgZWxzZWlmICgkdHlwZSA9PSAncGFzc3dvcmQnKQogICAgewogICAgICAkdGhpcy0+c2V0TWV0aG9kKCdwb3N0Jyk7IC8vIElmIHdlIGFzayBwYXNzd29yZCwgd2Ugc2hvdWxkIGFsd2F5cyBwb3N0IHRoZSBmb3JtIGZvciBzZWN1cml0eSByZWFzb24gIQogICAgICAkdGhpcy0+d2lkZ2V0c1skbmFtZV0gPSAkd2lkZ2V0OwogICAgfSAgICAKICAgIGVsc2VpZiAoKCR0eXBlID09ICd0ZXh0YXJlYScpIHx8ICgkdHlwZSA9PSAnY29kZWFyZWEnKSkKICAgIHsgCiAgICAgICR0aGlzLT5zZXRNZXRob2QoJ3Bvc3QnKTsgLy8gSWYgd2UgYXNrIHBhc3N3b3JkLCB3ZSBzaG91bGQgYWx3YXlzIHBvc3QgdGhlIGZvcm0gZm9yIHNlY3VyaXR5IHJlYXNvbiAhCiAgICAgICR0aGlzLT53aWRnZXRzWyRuYW1lXSA9ICR3aWRnZXQ7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICR0aGlzLT53aWRnZXRzWyRuYW1lXSA9ICR3aWRnZXQ7CiAgICB9CiAgICAKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCRuYW1lKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGdldFdpZGdldHMoKQogIHsKICAgIHJldHVybiAkdGhpcy0+d2lkZ2V0czsKICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIFRoZSB3aWRnZXQgbmFtZQogICAgICoKICAgICAqIEByZXR1cm4gQ01TRm9ybVdpZGdldHxudWxsCiAgICAgKi8KCiAgICBwdWJsaWMgZnVuY3Rpb24gJiBnZXRXaWRnZXQoJG5hbWUpCiAgewogICAgaWYgKGlzc2V0KCR0aGlzLT53aWRnZXRzWyRuYW1lXSkpCiAgICB7CiAgICAgIHJldHVybiAkdGhpcy0+d2lkZ2V0c1skbmFtZV07CiAgICB9CiAgICBlbHNlaWYgKGlzc2V0KCR0aGlzLT5oaWRkZW5fd2lkZ2V0c1skbmFtZV0pKQogICAgewogICAgICByZXR1cm4gJHRoaXMtPmhpZGRlbl93aWRnZXRzWyRuYW1lXTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBoaWRlV2lkZ2V0KCRuYW1lKQogIHsKICAgIGlmIChpc3NldCgkdGhpcy0+d2lkZ2V0c1skbmFtZV0pKQogICAgewogICAgICAkdGhpcy0+d2lkZ2V0c1skbmFtZV0tPmhpZGUoKTsKICAgIH0KICAgIGVsc2VpZiAoaXNzZXQoJHRoaXMtPmhpZGRlbl93aWRnZXRzWyRuYW1lXSkpCiAgICB7CiAgICAgICR0aGlzLT5oaWRkZW5fd2lkZ2V0c1skbmFtZV0tPmhpZGUoKTsKICAgIH0KICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZVdpZGdldCgkbmFtZSkKICB7CiAgICBpZiAoaXNzZXQoJHRoaXMtPndpZGdldHNbJG5hbWVdKSkKICAgIHsKICAgICAgdW5zZXQoJHRoaXMtPndpZGdldHNbJG5hbWVdKTsKICAgIH0KICAgIGVsc2VpZiAoaXNzZXQoJHRoaXMtPmhpZGRlbl93aWRnZXRzWyRuYW1lXSkpCiAgICB7CiAgICAgIHVuc2V0KCR0aGlzLT5oaWRkZW5fd2lkZ2V0c1skbmFtZV0pOwogICAgfQogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gc2hvd1dpZGdldHMoJHRlbXBsYXRlPW51bGwsICRmb3JjZT1mYWxzZSkKICB7CiAgICAkaHRtbCA9ICcnOyAgCiAgICBmb3JlYWNoKCR0aGlzLT53aWRnZXRzIGFzICR3aWRnZXQpCiAgICB7CiAgICAgICRodG1sIC49ICR3aWRnZXQtPnNob3coJHRlbXBsYXRlLCAkZm9yY2UpOwogICAgfQogICAgcmV0dXJuICRodG1sOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gc2hvd1dpZGdldCgkbmFtZSwgJHRlbXBsYXRlPW51bGwsICRmb3JjZT1mYWxzZSkKICB7CiAgICAkaHRtbCA9ICcnOyAKICAgIGlmIChpc3NldCgkdGhpcy0+d2lkZ2V0c1skbmFtZV0pKQogICAgewogICAgICAgJHdpZGdldCA9ICR0aGlzLT53aWRnZXRzWyRuYW1lXTsKICAgICAgICRodG1sIC49ICR3aWRnZXQtPnNob3coJHRlbXBsYXRlLCAkZm9yY2UpOwogICAgfQogICAgcmV0dXJuICRodG1sOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gaGFzRXJyb3JzKCkKICB7CiAgICAkaGFzX2Vycm9ycyA9IGZhbHNlOwogICAgCiAgICBmb3JlYWNoKCR0aGlzLT53aWRnZXRzIGFzICR3aWRnZXQpCiAgICB7CiAgICAgIGlmKCR3aWRnZXQtPmhhc0Vycm9ycygpKQogICAgICB7CiAgICAgICAgJGhhc19lcnJvcnMgPSB0cnVlOwogICAgICB9CiAgICB9CiAgICAKICAgIGZvcmVhY2goJHRoaXMtPmhpZGRlbl93aWRnZXRzIGFzICR3aWRnZXQpCiAgICB7CiAgICAgIGlmKCR3aWRnZXQtPmhhc0Vycm9ycygpKQogICAgICB7CiAgICAgICAgJGhhc19lcnJvcnMgPSB0cnVlOwogICAgICB9CiAgICB9CiAgICAKICAgIGZvcmVhY2goJHRoaXMtPmZpZWxkc2V0cyBhcyAkZmllbGRzZXQpCiAgICB7CiAgICAgIGlmKCRmaWVsZHNldC0+aGFzRXJyb3JzKCkpCiAgICAgIHsKICAgICAgICAkaGFzX2Vycm9ycyA9IHRydWU7CiAgICAgIH0KICAgIH0KICAgIAogICAgaWYgKGNvdW50KCR0aGlzLT5mb3JtX2Vycm9ycykgIT0gMCkKICAgIHsKICAgICAgJGhhc19lcnJvcnMgPSB0cnVlOwogICAgfQogICAgCiAgICByZXR1cm4gJGhhc19lcnJvcnM7IAogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gbm9FcnJvcigpCiAgewogICAgcmV0dXJuICEkdGhpcy0+aGFzRXJyb3JzKCk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBnZXRFcnJvcnMoKQogIHsKICAgIHJldHVybiAkdGhpcy0+Zm9ybV9lcnJvcnM7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGxFcnJvcnMoKQogIHsKICAgICRlcnJvcnMgPSAkdGhpcy0+Zm9ybV9lcnJvcnM7CiAgICAKICAgIGZvcmVhY2goJHRoaXMtPndpZGdldHMgYXMgJHdpZGdldCkKICAgICB7CiAgICAgICBpZigkd2lkZ2V0LT5oYXNFcnJvcnMoKSkKICAgICAgIHsKICAgICAgICAgJGVycm9yc1skd2lkZ2V0LT5nZXROYW1lKCldID0gJHdpZGdldC0+Z2V0RXJyb3JzKCk7CiAgICAgICB9CiAgICAgfQogICAgCiAgICByZXR1cm4gJGVycm9yczsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHNob3dFcnJvcnMoKQogIHsKICAgICRodG1sID0gJyc7CiAgICBpZihjb3VudCgkdGhpcy0+Zm9ybV9lcnJvcnMpID4gMCkKICAgIHsKICAgICAgJGh0bWwgLj0gJzx1bCBjbGFzcz0iZXJyb3JzIj4nOwogICAgICBmb3JlYWNoKCR0aGlzLT5mb3JtX2Vycm9ycyBhcyAkcHJpb3JpdHkgPT4gJGVycm9ycykKICAgICAgewogICAgICAgICRodG1sIC49ICc8bGk+JzsKICAgICAgICBpZiAoJHRoaXMtPnNob3dfcHJpb3JpdHkpICAkaHRtbCAuPSAnPGVtIGNsYXNzPSJmb3JtX2Vycm9yX3ByaW9yaXR5Ij4nLiRwcmlvcml0eS4nPC9lbT4nOwogICAgICAgICRodG1sIC49ICc8dWw+JzsKICAgICAgICBmb3JlYWNoKCRlcnJvcnMgYXMgJGVycm9yKQogICAgICAgIHsKICAgICAgICAgICRodG1sIC49ICc8bGk+Jy4kZXJyb3IuJzwvbGk+JzsKICAgICAgICB9ICAgICAgICAKICAgICAgICAkaHRtbCAuPSAnPC91bD48L2xpPic7CiAgICAgIH0KICAgICAgJGh0bWwgLj0gJzwvdWw+JzsKICAgIH0KICAgIHJldHVybiAkaHRtbDsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHNldEVycm9yKCRtZXNzYWdlLCRwcmlvcml0eT0nZGVmYXVsdCcpCiAgewogICAgJHRoaXMtPmZvcm1fZXJyb3JzWyRwcmlvcml0eV1bXSA9ICRtZXNzYWdlOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gaXNTdWJtaXR0ZWQoKQogIHsKICAgIGlmIChpc3NldCgkX1JFUVVFU1RbJHRoaXMtPmlkLidzdWJtaXQnXSkpCiAgICB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgcmV0dXJuIGZhbHNlOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gaXNBcHBsaWVkKCkKICB7CiAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZC4nYXBwbHknXSkpCiAgICB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgcmV0dXJuIGZhbHNlOwogIH0gIAogIAogIHB1YmxpYyBmdW5jdGlvbiBpc0NhbmNlbGxlZCgpCiAgewogICAgaWYgKGlzc2V0KCRfUkVRVUVTVFskdGhpcy0+aWQuJ2NhbmNlbCddKSkKICAgIHsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgaXNTZW50CiAgICAgKi8KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNQb3N0ZWQoKQogIHsKICAgIHJldHVybiAkdGhpcy0+aXNTZW50KCk7CiAgfQoKICAgIC8qKgogICAgICogVmVyaWZ5IHRoYXQgdGhlIGZvcm0gaGFzIGJlZW4gc3VibWl0dGVkIHZpYSBhIHNwZWNpZmljIGJ1dHRvbgogICAgICogQHBhcmFtIHN0cmluZyAkYnV0dG9uCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNQdXNoZWQoJGJ1dHRvbikKICB7CiAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZC4kYnV0dG9uXSkpCiAgICB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgICAvKioKICAgICAqIFZlcmlmeSB0aGF0IHRoZSBmb3JtIGhhcyBiZWVuIHNlbnQgKHZpYSBhbnkgYWN0aXZlIGJ1dHRvbnMpCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1NlbnQoKQogIHsKICAgICAgZm9yZWFjaCgkdGhpcy0+YWN0aXZlX2J1dHRvbnMgYXMgJGJ1dHRvbikKICAgICAgewogICAgICAgICAgaWYgKCR0aGlzLT5pc1B1c2hlZCgkYnV0dG9uKSkKICAgICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiBmYWxzZTsKICB9CiAgCiAgCiAgCiAgcHVibGljIGZ1bmN0aW9uIHNldEZpZWxkc2V0KCRuYW1lLCAkbGVnZW5kPScnKQogIHsKICAgIGlmKCFpc3NldCgkdGhpcy0+ZmllbGRzZXRzWyRuYW1lXSkpCiAgICAkdGhpcy0+ZmllbGRzZXRzWyRuYW1lXSA9IG5ldyBDTVNGb3JtRmllbGRzZXQoJHRoaXMsJG5hbWUsJGxlZ2VuZCk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiAmIGdldEZpZWxkc2V0KCRuYW1lKQogIHsKICAgIGlmIChpc3NldCgkdGhpcy0+ZmllbGRzZXRzWyRuYW1lXSkpCiAgICB7CiAgICAgIHJldHVybiAkdGhpcy0+ZmllbGRzZXRzWyRuYW1lXTsKICAgIH0KICAgIHJldHVybiBudWxsOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gZ2V0RmllbGRzZXRzKCkKICB7CiAgICAvLyByZXR1cm4gJHRoaXMtPmZpZWxkc2V0czsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHJlbmRlckZpZWxkc2V0cygkd2lkZ2V0X3RlbXBsYXRlID0gbnVsbCwgJGxlZ2VuZCA9IHRydWUpCiAgewogICAgJGh0bWwgPSAnJzsKICAgIGZvcmVhY2goJHRoaXMtPmZpZWxkc2V0cyBhcyAkZmllbGRzZXQpCiAgICB7CiAgICAgICRodG1sIC49ICRmaWVsZHNldC0+cmVuZGVyKCR3aWRnZXRfdGVtcGxhdGUsICRsZWdlbmQpOwogICAgfQogICAgcmV0dXJuICRodG1sOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gcmVuZGVyRmllbGRzZXQoJG5hbWUsICR3aWRnZXRfdGVtcGxhdGUgPSBudWxsKQogIHsKICAgIGlmIChpc3NldCgkdGhpcy0+ZmllbGRzZXRzWyRuYW1lXSkpCiAgICB7CiAgICAgIHJldHVybiAkdGhpcy0+ZmllbGRzZXRzWyRuYW1lXS0+cmVuZGVyKCR3aWRnZXRfdGVtcGxhdGUpOwogICAgfQogICAgcmV0dXJuIG51bGw7CiAgfQogIAp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormFieldset.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIENNU0Zvcm1GaWVsZHNldCBleHRlbmRzIENNU0Zvcm0KewogIHByb3RlY3RlZCAkcGFyZW50X2Zvcm07CiAgcHJvdGVjdGVkICRuYW1lOwogIHByb3RlY3RlZCAkbGVnZW5kOwogIHByb3RlY3RlZCAkY2xhc3M7CiAgcHJvdGVjdGVkICRyZW5kZXJlZCA9IGZhbHNlOwogIAogIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkZm9ybSwgJG5hbWUsICRsZWdlbmQgPSAnJykKICB7CiAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRmb3JtLT5tb2R1bGVfbmFtZSwgJGZvcm0tPmlkLCAkZm9ybS0+YWN0aW9uLCAkZm9ybS0+cmV0dXJuaWQpOwogICAgJHRoaXMtPm5hbWUgPSAkbmFtZTsKICAgIGlmKCRsZWdlbmQgPT0gJycpCiAgICB7CiAgICAgICR0aGlzLT5sZWdlbmQgPSAkbmFtZTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgJHRoaXMtPmxlZ2VuZCA9ICRsZWdlbmQ7CiAgICB9CiAgICAkdGhpcy0+cGFyZW50X2Zvcm0gPSYgJGZvcm07CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBzZXRDbGFzcygkY2xhc3MpCiAgewogICAgJHRoaXMtPmNsYXNzID0gJGNsYXNzOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKCR3aWRnZXRfdGVtcGxhdGU9bnVsbCwgJGxlZ2VuZCA9IHRydWUpCiAgewogICAgJGh0bWwgPSAnJzsKICAgIGlmKCEkdGhpcy0+cmVuZGVyZWQpCiAgICB7CiAgICAgICRodG1sIC49ICc8ZmllbGRzZXQnOwogICAgICAkaHRtbCAuPSAoJHRoaXMtPmNsYXNzKT8nIGNsYXNzPSInIC4gJHRoaXMtPmNsYXNzIC4gJyInOicnOwogICAgICAkaHRtbCAuPSc+JzsKICAgICAgaWYoJGxlZ2VuZCkgJGh0bWwgLj0nPGxlZ2VuZD4nLiR0aGlzLT5sZWdlbmQuJzwvbGVnZW5kPic7CiAgICAgICRodG1sIC49ICR0aGlzLT5zaG93V2lkZ2V0cygkd2lkZ2V0X3RlbXBsYXRlKTsKICAgICAgJGh0bWwgLj0gJzwvZmllbGRzZXQ+JzsKICAgICAgJHRoaXMtPnJlbmRlcmVkID0gdHJ1ZTsKICAgIH0KICAgIHJldHVybiAkaHRtbDsKICAgIAogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gc2V0V2lkZ2V0KCRuYW1lLCR0eXBlLCRzZXR0aW5ncyA9IGFycmF5KCkpCiAgewogICAgaWYgKCR0eXBlID09ICdmaWxlJykKICAgIHsKICAgICAgJHRoaXMtPnBhcmVudF9mb3JtLT5zZXRNdWx0aXBhcnRGb3JtKCk7CiAgICB9CiAgICBwYXJlbnQ6OnNldFdpZGdldCgkbmFtZSwkdHlwZSwkc2V0dGluZ3MpOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gaXNQb3N0ZWQoKQogIHsKICAgIHJldHVybiAkdGhpcy0+cGFyZW50X2Zvcm0tPmlzUG9zdGVkKCk7CiAgfQogIAp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInput.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAgQ01TRm9ybSBJbnB1dCBiYXNlCiovCgovKioKICogQHByb3BlcnR5IG1peGVkIHNob3dfcHJpb3JpdHkKICovCmNsYXNzIENNU0Zvcm1JbnB1dAp7CiAgICBwcm90ZWN0ZWQgJGlkOwogICAgcHJvdGVjdGVkICRuYW1lOwogICAgcHJvdGVjdGVkICR2YWx1ZXMgPSBhcnJheSgpOyAvLyBXZSBhbHdheXMgc3RvcmUgcmVzdWx0cyBpbiBhbiBhcnJheS4gSW4gY2FzZSBvZiBzaW5nbGUgZmllbGQsIHRoZSBzaW5nbGUgdmFsdWUgaXMgYXJyYXlbMF0KCiAgICBwcm90ZWN0ZWQgJGZvcm07CiAgICBwcm90ZWN0ZWQgJG1vZHVsZV9uYW1lOwogICAgcHJvdGVjdGVkICRzZXR0aW5ncyA9IGFycmF5KCk7CgogICAgLy8gVkFMSURBVElPTgogICAgcHJvdGVjdGVkICRpc192YWxpZCA9IHRydWU7CiAgICBwcm90ZWN0ZWQgJGZvcm1fZXJyb3JzOwoKICAgIC8vIFBST0NFU1NJTkcKICAgIHByb3RlY3RlZCAkc2hvd25lZCA9IGZhbHNlOwogICAgcHJvdGVjdGVkICRoaWRlID0gZmFsc2U7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KCRuYW1lKQogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+JG5hbWUpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+JG5hbWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRyYWNlID0gZGVidWdfYmFja3RyYWNlKCk7CiAgICAgICAgICAgIHRyaWdnZXJfZXJyb3IoCiAgICAgICAgICAgICAgICAnVW5kZWZpbmVkIHByb3BlcnR5IHZpYSBfX2dldCgpOiAnIC4gJG5hbWUgLgogICAgICAgICAgICAgICAgJyBpbiAnIC4gJHRyYWNlWzBdWydmaWxlJ10gLgogICAgICAgICAgICAgICAgJyBvbiBsaW5lICcgLiAkdHJhY2VbMF1bJ2xpbmUnXSwKICAgICAgICAgICAgICAgIEVfVVNFUl9OT1RJQ0UpOwogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldHVwKCRpZCwgJG5hbWUsICYkZm9ybSwgJG1vZHVsZV9uYW1lLCAkc2V0dGluZ3MgPSBhcnJheSgpKQogICAgewogICAgICAgICR0aGlzLT5pZCA9ICRpZDsKICAgICAgICAkdGhpcy0+bmFtZSA9IGlzc2V0KCRzZXR0aW5nc1snbmFtZSddKSA/ICRzZXR0aW5nc1snbmFtZSddIDogJG5hbWU7CiAgICAgICAgJHRoaXMtPmZvcm0gPSAkZm9ybTsKICAgICAgICAkdGhpcy0+bW9kdWxlX25hbWUgPSAkbW9kdWxlX25hbWU7CiAgICAgICAgJHRoaXMtPnNldHRpbmdzID0gJHNldHRpbmdzOwoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGluaXQoKQogICAgewogICAgICAgIC8vIEluaXRpYWxpemUgdGhlIGZpZWxkCiAgICAgICAgJHRoaXMtPmluaXRWYWx1ZXMoKTsKCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGb3JtKCkKICAgIHsKICAgICAgICBpZiAoIWlzX29iamVjdCgkdGhpcy0+Zm9ybSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignQW4gZXJyb3Igb2NjdXJlZCByZXRyaWV2aW5nIHRoZSBmb3JtIG9iamVjdC4nKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICR0aGlzLT5mb3JtOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNb2R1bGUoKQogICAgewogICAgICAgIGlmICgkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSkpIHsKICAgICAgICAgICAgcmV0dXJuICRtb2R1bGU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ01TRm9ybXMnKTsgLy8gRGVmYXVsdCBzYWZlYmFjawogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2V0dGluZygkc2V0dGluZywgJGRlZmF1bHRfdmFsdWUgPSBudWxsKQogICAgewogICAgICAgIHJldHVybiBpc3NldCgkdGhpcy0+c2V0dGluZ3NbJHNldHRpbmddKSA/ICR0aGlzLT5zZXR0aW5nc1skc2V0dGluZ10gOiAkZGVmYXVsdF92YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0U2V0dGluZygkc2V0dGluZywgJHZhbHVlKQogICAgewogICAgICAgICR0aGlzLT5zZXR0aW5nc1skc2V0dGluZ10gPSAkdmFsdWU7CiAgICB9CgogICAgLy8gIyMjIyMgRk9STSAjIyMjIwoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpCiAgICB7CiAgICAgICAgcmV0dXJuIChzdHJpbmcpJHRoaXMtPmdldFZhbHVlKCk7IC8vIERvbid0IGtub3cgd2hhdCB0byBkbz8gU2hvdyB0aGUgdmFsdWUuCiAgICB9CgogICAgLy8gIyMjIyMgV0lER0VUIFBST0NFU1NJTkcgIyMjIyMKCiAgICBwdWJsaWMgZnVuY3Rpb24gcHJvY2Vzcygkc2F2ZSA9IHRydWUpCiAgICB7CiAgICAgICAgLy8gVmFsaWRhdGUKICAgICAgICAkdGhpcy0+dmFsaWRhdGUoKTsKCiAgICAgICAgLy8gU2F2ZSB2YWx1ZXMKICAgICAgICBpZiAoJHNhdmUgPT0gdHJ1ZSkgewogICAgICAgICAgICAkdGhpcy0+c2F2ZSgpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2hvdygkdGVtcGxhdGUgPSBudWxsLCAkZm9yY2UgPSBmYWxzZSkKICAgIHsKICAgICAgICAvLyBUT0RPOiBSRUZBQ1RPUklORwoKICAgICAgICBpZiAoKCEkdGhpcy0+c2hvd25lZCB8fCAkZm9yY2UpKSB7CiAgICAgICAgICAgICRodG1sID0gJyc7CgoKICAgICAgICAgICAgLy8gaWYgKCFpc19udWxsKCR0ZW1wbGF0ZSkgJiYgKCR0aGlzLT50eXBlICE9ICdoaWRkZW4nKSkgLy8gRklYVEhJUwogICAgICAgICAgICBpZiAoIWlzX251bGwoJHRlbXBsYXRlKSkgewogICAgICAgICAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgnJUZJRUxETkFNRSUnLCAkdGhpcy0+bmFtZSwgJHRlbXBsYXRlKTsKICAgICAgICAgICAgICAgICR0ZXh0ID0gc3RyX3JlcGxhY2UoJyVMQUJFTCUnLCAkdGhpcy0+Z2V0TGFiZWwoKSwgJHRleHQpOwogICAgICAgICAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgnJUxBQkVMX1RBRyUnLCAkdGhpcy0+Z2V0TGFiZWxUYWcoKSwgJHRleHQpOwogICAgICAgICAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgnJUlOUFVUJScsICR0aGlzLT5nZXRJbnB1dCgpLCAkdGV4dCk7CiAgICAgICAgICAgICAgICAkdGV4dCA9IHN0cl9yZXBsYWNlKCclRVJST1JTJScsICR0aGlzLT5zaG93RXJyb3JzKCksICR0ZXh0KTsKICAgICAgICAgICAgICAgICR0ZXh0ID0gc3RyX3JlcGxhY2UoJyVUSVBTJScsICR0aGlzLT5nZXRUaXBzKCksICR0ZXh0KTsKICAgICAgICAgICAgICAgICR0ZXh0ID0gc3RyX3JlcGxhY2UoJyVQUkVGSVglJywgJHRoaXMtPmdldFRpcHMoKSwgJHRleHQpOwogICAgICAgICAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgnJVNVRklYJScsICR0aGlzLT5nZXRUaXBzKCksICR0ZXh0KTsKICAgICAgICAgICAgICAgICRodG1sIC49ICR0ZXh0OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGh0bWwgLj0gKHN0cmluZykkdGhpczsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snd2l0aF9kaXYnXSkpIHsKICAgICAgICAgICAgICAgICRodG1sID0gJzxkaXYgY2xhc3M9IicgLiAkdGhpcy0+Z2V0U2V0dGluZygnY2xhc3MnLCAnZmllbGRfJyAuICR0aGlzLT5uYW1lKSAuICciPicgLiAkaHRtbCAuICc8L2Rpdj4nOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2hvd25lZCA9IHRydWU7CiAgICAgICAgICAgIHJldHVybiAkaHRtbDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLy8gIyMjIyMgQ09TTUVUSUNTICMjIyMjCgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIC8vIFRPRE86IFJFRkFDVE9SSU5HCgogICAgICAgICRodG1sID0gJwogICAgICA8ZGl2IGNsYXNzPSJmb3JtX3dpZGdldCI+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9ybV9sYWJlbCI+PGxhYmVsIGZvcj0iJyAuICR0aGlzLT5pZCAuICR0aGlzLT5uYW1lIC4gJyI+JyAuICR0aGlzLT5nZXRMYWJlbCgpIC4gJzwvbGFiZWw+PC9kaXY+JzsKICAgICAgICBpZiAoJHRoaXMtPmhhc0Vycm9ycygpKSB7CiAgICAgICAgICAgICRodG1sIC49ICc8ZGl2IGNsYXNzPSJmb3JtX2Vycm9ycyI+JyAuICR0aGlzLT5zaG93RXJyb3JzKCkgLiAnPC9kaXY+JzsKICAgICAgICB9CiAgICAgICAgJGh0bWwgLj0gJwogICAgICAgIDxkaXYgY2xhc3M9ImZvcm1faW5wdXQiPicgLiAkdGhpcy0+Z2V0SW5wdXQoKSAuICc8L2Rpdj4KICAgICAgPC9kaXY+JzsKICAgICAgICByZXR1cm4gJGh0bWw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExhYmVsKCkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydsYWJlbCddKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNldHRpbmdzWydsYWJlbCddOwogICAgICAgIH0KICAgICAgICAvLyBUcnkgdG8gZ2V0IGl0IGZyb20gbGFuZ3VhZ2UgZmlsZQogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0TW9kdWxlKCktPmxhbmcoJ2Zvcm1fJyAuICR0aGlzLT5uYW1lKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RnJpZW5kbHlOYW1lKCkKICAgIHsKICAgICAgICAvLyBERVBSRUNBVEVEIChVU0VEIElOIFZBTElEQVRPUikgKFVTRUQgaW4gQ01TRm9ybVdpZGdldCkKICAgICAgICAkdGhpcy0+Z2V0TGFiZWwoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGFiZWxUYWcoKQogICAgewogICAgICAgIHJldHVybiAnPGxhYmVsIGZvcj0iJyAuICR0aGlzLT5pZCAuICR0aGlzLT5uYW1lIC4gJyI+JyAuICR0aGlzLT5nZXRMYWJlbCgpIC4gJzwvbGFiZWw+JzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VGlwcygpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1sndGlwcyddKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNldHRpbmdzWyd0aXBzJ107CiAgICAgICAgfQogICAgICAgIC8vIFRyeSB0byBnZXQgaXQgZnJvbSBsYW5ndWFnZSBmaWxlCgogICAgICAgIC8vIGlmIChjbXNfdXRpbHM6OmdldF9tb2R1bGUoJHRoaXMtPm1vZHVsZV9uYW1lKSkKICAgICAgICAvLyAgIHsKICAgICAgICAvLyAgICAgLy8gVE9ETzogVGhpcyBzaG91bGQgYmUgc2hvd24gb25seSBpdCB0aGUgbGFuZyBrZXkgZXhpc3RzLi4uCiAgICAgICAgLy8gICAgIHJldHVybiBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJHRoaXMtPm1vZHVsZV9uYW1lKS0+bGFuZygndGlwc18nLiR0aGlzLT5uYW1lKTsKICAgICAgICAvLyAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCgogICAgLy8gIyMjIyMgVkFMVUVTICMjIyMjCgogICAgLy8gU0FWRQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzYXZlKCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmlzVmFsaWQoKSA9PSB0cnVlKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNhdmVPYmplY3QoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydwcmVmZXJlbmNlJ10pKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2F2ZVByZWZlcmVuY2UoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWyd1c2VyX3ByZWZlcmVuY2UnXSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zYXZlVXNlclByZWZlcmVuY2UoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2F2ZU9iamVjdCgpCiAgICB7CgogICAgICAgIC8vIFRoaXMgZG8gbm90IHNhdmUgdGhlIG9iamVjdCBzdGF0ZSwgc28gd2UgaGF2ZSB0byBkbyBpdCBvdXRzaWRlIHRoZSBmb3JtCgogICAgICAgICR2YWx1ZXMgPSAkdGhpcy0+Z2V0VmFsdWUoKTsKCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snc2V0X21ldGhvZCddKSkgewogICAgICAgICAgICAkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddLT57JHRoaXMtPnNldHRpbmdzWydzZXRfbWV0aG9kJ119KCR2YWx1ZXMpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ2ZpZWxkX25hbWUnXSkpIHsKICAgICAgICAgICAgICAgICRuYW1lID0gJHRoaXMtPnNldHRpbmdzWydmaWVsZF9uYW1lJ107CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkbmFtZSA9ICR0aGlzLT5uYW1lOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAobWV0aG9kX2V4aXN0cygkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddLCAnc2V0JykpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10tPnNldCgkbmFtZSwgJHZhbHVlcyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10tPiRuYW1lID0gJHZhbHVlczsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgICAgIGRpZSgndW5hYmxlIHRvIGRvJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCgogICAgICAgIH0KCiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNhdmVQcmVmZXJlbmNlKCkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydwcmVmZXJlbmNlJ10pICYmICFpc3NldCgkX1JFUVVFU1RbJHRoaXMtPmlkIC4gJ2NhbmNlbCddKSkgewogICAgICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBubyBjYW5jZWwgYnV0dG9uIGZpcnN0IGJlY2F1c2Ugd2Ugc2F2ZSB0aGUgdmFsdWUgZGlyZWN0bHkgIQogICAgICAgICAgICAkdGhpcy0+Z2V0TW9kdWxlKCktPnNldFByZWZlcmVuY2UoJHRoaXMtPnNldHRpbmdzWydwcmVmZXJlbmNlJ10sICR0aGlzLT5nZXRWYWx1ZSgpKTsKICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNhdmVVc2VyUHJlZmVyZW5jZSgpCiAgICB7CiAgICAgICAgJF9TRVNTSU9OWydtb2R1bGVzJ11bJHRoaXMtPm1vZHVsZV9uYW1lXVsncHJlZmVyZW5jZXMnXVskdGhpcy0+c2V0dGluZ3NbJ3VzZXJfcHJlZmVyZW5jZSddXSA9ICR0aGlzLT5nZXRWYWx1ZSgpOwogICAgfQoKICAgIC8vIFZhbHVlcyBtYW5pcHVsYXRpb24KCiAgICBwdWJsaWMgZnVuY3Rpb24gaW5pdFZhbHVlcygpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFskdGhpcy0+aWQgLiAkdGhpcy0+bmFtZV0pKSB7CiAgICAgICAgICAgIGlmIChpc19hcnJheSgkX1JFUVVFU1RbJHRoaXMtPmlkIC4gJHRoaXMtPm5hbWVdKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlcygkX1JFUVVFU1RbJHRoaXMtPmlkIC4gJHRoaXMtPm5hbWVdKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoaHRtbF9lbnRpdHlfZGVjb2RlKCRfUkVRVUVTVFskdGhpcy0+aWQgLiAkdGhpcy0+bmFtZV0pKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ3ZhbHVlJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoJHRoaXMtPnNldHRpbmdzWyd2YWx1ZSddKTsKICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXSkgJiYgISR0aGlzLT5nZXRGb3JtKCktPmlzUG9zdGVkKCkpIHsKICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlcygkdGhpcy0+ZmV0Y2hPYmplY3RWYWx1ZXMoKSk7CiAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1sncHJlZmVyZW5jZSddKSAmJiAkdGhpcy0+Z2V0TW9kdWxlKCktPmdldFByZWZlcmVuY2UoJHRoaXMtPnNldHRpbmdzWydwcmVmZXJlbmNlJ10pICE9ICcnKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoJHRoaXMtPmdldE1vZHVsZSgpLT5nZXRQcmVmZXJlbmNlKCR0aGlzLT5zZXR0aW5nc1sncHJlZmVyZW5jZSddKSk7CiAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1sndXNlcl9wcmVmZXJlbmNlJ10pICYmICgkdmFsdWUgPSAkdGhpcy0+Z2V0VXNlclByZWZlcmVuY2UoKSkpIHsKICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlcygkdmFsdWUpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snZGVmYXVsdF92YWx1ZSddKSAmJiAhJHRoaXMtPmdldEZvcm0oKS0+aXNQb3N0ZWQoKSkgewogICAgICAgICAgICBpZiAoJHRoaXMtPmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlcygkdGhpcy0+c2V0dGluZ3NbJ2RlZmF1bHRfdmFsdWUnXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGZldGNoT2JqZWN0VmFsdWVzKCkKICAgIHsKCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10pICYmIGlzX29iamVjdCgkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddKSkgewogICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydnZXRfbWV0aG9kJ10pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXS0+eyR0aGlzLT5zZXR0aW5nc1snZ2V0X21ldGhvZCddfSgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJG5hbWUgPSBpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ2ZpZWxkX25hbWUnXSkgPyAkdGhpcy0+c2V0dGluZ3NbJ2ZpZWxkX25hbWUnXSA6ICR0aGlzLT5uYW1lOwoKICAgICAgICAgICAgICAgIGlmIChtZXRob2RfZXhpc3RzKCR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10sICdnZXQnKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddLT5nZXQoJG5hbWUpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXS0+JG5hbWU7CiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vICBkaWUoJ3VuYWJsZSB0byBkbycpOyAvLyBUT0RPOiBUcmVhdGggZXJyb3IKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRVc2VyUHJlZmVyZW5jZSgpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCRfU0VTU0lPTlsnbW9kdWxlcyddWyR0aGlzLT5tb2R1bGVfbmFtZV1bJ3ByZWZlcmVuY2VzJ11bJHRoaXMtPnNldHRpbmdzWyd1c2VyX3ByZWZlcmVuY2UnXV0pKSB7CiAgICAgICAgICAgIHJldHVybiAkX1NFU1NJT05bJ21vZHVsZXMnXVskdGhpcy0+bW9kdWxlX25hbWVdWydwcmVmZXJlbmNlcyddWyR0aGlzLT5zZXR0aW5nc1sndXNlcl9wcmVmZXJlbmNlJ11dOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzZXRWYWx1ZXMoKQogICAgewogICAgICAgICR0aGlzLT52YWx1ZXMgPSBhcnJheSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZSgpCiAgICB7CiAgICAgICAgaWYgKGNvdW50KCR0aGlzLT52YWx1ZXMpID09IDEpIHsKICAgICAgICAgICAgcmVzZXQoJHRoaXMtPnZhbHVlcyk7CiAgICAgICAgICAgIHJldHVybiAoc3RyaW5nKWN1cnJlbnQoJHRoaXMtPnZhbHVlcyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIChzdHJpbmcpaW1wbG9kZSgnfHx8JywgJHRoaXMtPnZhbHVlcyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRWYWx1ZSgkdmFsdWUsICRrZXkgPSAwKQogICAgewogICAgICAgICR0aGlzLT52YWx1ZXNbJGtleV0gPSAoc3RyaW5nKSR2YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlVmFsdWVJZkVxdWFsKCR2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmdldFZhbHVlKCkgPT0gJHZhbHVlKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoYXJyYXkoKSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZXMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRWYWx1ZXMoJHZhbHVlcyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgaWYgKGlzX2FycmF5KCR2YWx1ZXMpKSB7CiAgICAgICAgICAgICR0aGlzLT52YWx1ZXMgPSAkdmFsdWVzOwogICAgICAgIH0gZWxzZWlmIChzdHJwb3MoJHZhbHVlcywgJ3x8fCcpICE9PSBmYWxzZSkgewogICAgICAgICAgICAkdGhpcy0+dmFsdWVzID0gZXhwbG9kZSgnfHx8JywgJHZhbHVlcyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnZhbHVlc1swXSA9ICR2YWx1ZXM7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB1bnNldFZhbHVlcygpCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbHVlcyA9IGFycmF5KCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldERlZmF1bHRWYWx1ZXMoJHZhbHVlcykKICAgIHsKICAgICAgICBpZiAoaXNfYXJyYXkoJHZhbHVlcykpIHsKICAgICAgICAgICAgJHRoaXMtPnZhbHVlcyA9ICR2YWx1ZXM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnZhbHVlcyA9IGFycmF5KCR2YWx1ZXMpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNFbXB0eSgpCiAgICB7CiAgICAgICAgaWYgKChjb3VudCgkdGhpcy0+dmFsdWVzKSA9PSAxKSAmJiAoZW1wdHkoJHRoaXMtPnZhbHVlc1swXSkpIHx8IChjb3VudCgkdGhpcy0+dmFsdWVzKSA9PSAwKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgIC8vIFZhbHVlcyB2YWxpZGF0aW9uCgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHZhbGlkYXRlKCkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWyd2YWxpZGF0b3JzJ10pICYmIGlzX2FycmF5KCR0aGlzLT5zZXR0aW5nc1sndmFsaWRhdG9ycyddKSkgewogICAgICAgICAgICAvLyBDSEFOR0UgVEhBVAoKICAgICAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnNldHRpbmdzWyd2YWxpZGF0b3JzJ10gYXMgJHZhbGlkYXRvciA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgICAgICR2YWxpZGF0ZSA9IG5ldyBDTVNGb3JtVmFsaWRhdG9yKCR0aGlzLCAkdmFsaWRhdG9yLCAkdmFsdWUpOwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBpZiAoJHZhbGlkYXRlLT5jaGVjaygpID09PSBmYWxzZSkgJHRoaXMtPmlzX3ZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2V0RXJyb3IoJGUtPmdldE1lc3NhZ2UoKSwgJ2Zvcm0gZXJyb3InKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzVmFsaWQoKQogICAgewogICAgICAgIGlmICgoJHRoaXMtPmlzX3ZhbGlkID09IGZhbHNlKSB8fCAkdGhpcy0+aGFzRXJyb3JzKCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VmFsaWRhdG9yKCR2YWxpZGF0b3IsICRwYXJhbXMgPSBhcnJheSgpKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWRkVmFsaWRhdG9yKCR2YWxpZGF0b3IsICRwYXJhbXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRWYWxpZGF0b3IoJHZhbGlkYXRvciwgJHBhcmFtcyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zZXR0aW5nc1sndmFsaWRhdG9ycyddWyR2YWxpZGF0b3JdID0gJHBhcmFtczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlVmFsaWRhdG9yKCR2YWxpZGF0b3IpCiAgICB7CiAgICAgICAgdW5zZXQoJHRoaXMtPnNldHRpbmdzWyd2YWxpZGF0b3JzJ11bJHZhbGlkYXRvcl0pOwogICAgfQoKICAgIC8vIEVSUk9SUwoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNFcnJvcnMoKQogICAgewogICAgICAgIGlmIChjb3VudCgkdGhpcy0+Zm9ybV9lcnJvcnMpID09IDApIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbm9FcnJvcigpCiAgICB7CiAgICAgICAgcmV0dXJuICEkdGhpcy0+aGFzRXJyb3JzKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEVycm9ycygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5mb3JtX2Vycm9yczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2hvd0Vycm9ycygpCiAgICB7CiAgICAgICAgJGh0bWwgPSAnJzsKICAgICAgICBpZiAoY291bnQoJHRoaXMtPmZvcm1fZXJyb3JzKSA+IDApIHsKICAgICAgICAgICAgJGh0bWwgLj0gJzx1bCBjbGFzcz0iZm9ybV93aWRnZXRfZXJyb3JzIj4nOwogICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+Zm9ybV9lcnJvcnMgYXMgJHByaW9yaXR5ID0+ICRlcnJvcnMpIHsKICAgICAgICAgICAgICAgICRodG1sIC49ICc8bGk+JzsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+c2hvd19wcmlvcml0eSkgJGh0bWwgLj0gJzxlbSBjbGFzcz0iZm9ybV93aWRnZXRfZXJyb3JfcHJpb3JpdHkiPicgLiAkcHJpb3JpdHkgLiAnPC9lbT4nOwogICAgICAgICAgICAgICAgJGh0bWwgLj0gJzx1bD4nOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGVycm9ycyBhcyAkZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAkaHRtbCAuPSAnPGxpIGNsYXNzPSJmb3JtX3dpZGdldF9lcnJvcl9tZXNzYWdlIj4nIC4gJGVycm9yIC4gJzwvbGk+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRodG1sIC49ICc8L3VsPjwvbGk+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkaHRtbCAuPSAnPC91bD4nOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGh0bWw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldEVycm9yKCRtZXNzYWdlLCAkcHJpb3JpdHkgPSAnZGVmYXVsdCcpCiAgICB7CiAgICAgICAgJHRoaXMtPmZvcm1fZXJyb3JzWyRwcmlvcml0eV1bXSA9ICRtZXNzYWdlOwogICAgfQoKCn0=]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputCheckbox.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgQ2hlY2tib3gKICAqLwogIAogIGNsYXNzIENNU0Zvcm1JbnB1dENoZWNrYm94IGV4dGVuZHMgQ01TRm9ybUlucHV0CiAgewogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gaW5pdFZhbHVlcygpCiAgICB7CiAgICAgIC8vIHZhcl9kdW1wKCdpbml0IGNoZWNrYm94ICcgLiAkdGhpcy0+bmFtZSk7CiAgICAgIC8vIHZhcl9kdW1wKCR0aGlzLT5nZXRWYWx1ZXMoKSk7CiAgICAgIGlmKAogICAgICAgICghaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZC4kdGhpcy0+bmFtZV0pIHx8IGlzX251bGwoJF9SRVFVRVNUWyR0aGlzLT5pZC4kdGhpcy0+bmFtZV0pKQogICAgICAgICYmCiAgICAgICAgKAogICAgICAgICAgaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZC4nc3VibWl0J10pCiAgICAgICAgICB8fAogICAgICAgICAgaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZC4nYXBwbHknXSkKICAgICAgICApCgogICAgICApCiAgICAgIHsKICAgICAgICAvLyBDYXNlIHdoZW4gY2hlY2tib3ggaXMgdW5jaGVja2VkIGFuZCBmb3JtIGlzIHN1Ym1pdHRlZCwgd2Ugc2hvdWxkIGVtcHR5IHRoZSB2YWx1ZQogICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoKTsKICAgICAgICAvLyAkdGhpcy0+c2V0VmFsdWUoLTEpOwogICAgICB9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgIHBhcmVudDo6aW5pdFZhbHVlcygpOwogICAgICB9CiAgICAgIC8vIHZhcl9kdW1wKCR0aGlzLT5nZXRWYWx1ZXMoKSk7CiAgICAgIC8vIHZhcl9kdW1wKCR0aGlzLT5nZXRWYWx1ZXMoKSk7CiAgICB9CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpCiAgICB7CiAgICAgIHJldHVybiAkdGhpcy0+Z2V0TW9kdWxlKCktPkNyZWF0ZUlucHV0Q2hlY2tib3goJHRoaXMtPmlkLCAkdGhpcy0+bmFtZSwgJzEnLCAoaW50ZWdlcikoYm9vbGVhbikkdGhpcy0+Z2V0VmFsdWUoKSk7CiAgICB9CiAgfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputCountries.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgVGV4dAogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0Q291bnRyaWVzIGV4dGVuZHMgQ01TRm9ybUlucHV0U2VsZWN0CiAgewogICAgcHVibGljIHN0YXRpYyAkY291bnRyaWVzID0gYXJyYXkoCiAgICAgICdBRicgPT4gJ0FmZ2hhbmlzdGFuJywgJ0FMJyA9PiAnQWxiYW5pYScsICdEWicgPT4gJ0FsZ2VyaWEnLCAnQVMnID0+ICdBbWVyaWNhbiBTYW1vYScsICdBRCcgPT4gJ0FuZG9ycmEnLCAnQU8nID0+ICdBbmdvbGEnLCAnQUknID0+ICdBbmd1aWxsYScsICdBUScgPT4gJ0FudGFyY3RpY2EnLCAnQUcnID0+ICdBbnRpZ3VhIGFuZCBCYXJidWRhJywgJ0FSJyA9PiAnQXJnZW50aW5hJywgJ0FNJyA9PiAnQXJtZW5pYScsICdBVycgPT4gJ0FydWJhJywgJ0FVJyA9PiAnQXVzdHJhbGlhJywgJ0FUJyA9PiAnQXVzdHJpYScsICdBWicgPT4gJ0F6ZXJiYWlqYW4nLCAnQlMnID0+ICdCYWhhbWFzJywgJ0JIJyA9PiAnQmFocmFpbicsICdCRCcgPT4gJ0JhbmdsYWRlc2gnLCAnQkInID0+ICdCYXJiYWRvcycsICdCWScgPT4gJ0JlbGFydXMnLCAnQkUnID0+ICdCZWxnaXVtJywgJ0JaJyA9PiAnQmVsaXplJywgJ0JKJyA9PiAnQmVuaW4nLCAnQk0nID0+ICdCZXJtdWRhJywgJ0JUJyA9PiAnQmh1dGFuJywgJ0JPJyA9PiAnQm9saXZpYScsICdCQScgPT4gJ0Jvc25pYSBhbmQgSGVyemVnb3ZpbmEnLCAnQlcnID0+ICdCb3Rzd2FuYScsICdCVicgPT4gJ0JvdXZldCBJc2xhbmQnLCAnQlInID0+ICdCcmF6aWwnLCAnSU8nID0+ICdCcml0aXNoIEluZGlhbiBPY2VhbiBUZXJyaXRvcnknLCAnVkcnID0+ICdCcml0aXNoIFZpcmdpbiBJc2xhbmRzJywgJ0JOJyA9PiAnQnJ1bmVpJywgJ0JHJyA9PiAnQnVsZ2FyaWEnLCAnQkYnID0+ICdCdXJraW5hIEZhc28nLCAnQkknID0+ICdCdXJ1bmRpJywgJ0tIJyA9PiAnQ2FtYm9kaWEnLCAnQ00nID0+ICdDYW1lcm9vbicsICdDQScgPT4gJ0NhbmFkYScsICdDVicgPT4gJ0NhcGUgVmVyZGUnLCAnS1knID0+ICdDYXltYW4gSXNsYW5kcycsICdDRicgPT4gJ0NlbnRyYWwgQWZyaWNhbiBSZXB1YmxpYycsICdURCcgPT4gJ0NoYWQnLCAnQ0wnID0+ICdDaGlsZScsICdDTicgPT4gJ0NoaW5hJywgJ0NYJyA9PiAnQ2hyaXN0bWFzIElzbGFuZCcsICdDQycgPT4gJ0NvY29zIChLZWVsaW5nKSBJc2xhbmRzJywgJ0NPJyA9PiAnQ29sb21iaWEnLCAnS00nID0+ICdDb21vcm9zJywgJ0NHJyA9PiAnQ29uZ28nLCAnQ0snID0+ICdDb29rIElzbGFuZHMnLCAnQ1InID0+ICdDb3N0YSBSaWNhJywgJ0hSJyA9PiAnQ3JvYXRpYScsICdDVScgPT4gJ0N1YmEnLCAnQ1knID0+ICdDeXBydXMnLCAnQ1onID0+ICdDemVjaCBSZXB1YmxpYycsICdDSScgPT4gJ0PDtHRlIGRcJ0l2b2lyZScsICdDRCcgPT4gJ0RlbW9jcmF0aWMgUmVwdWJsaWMgb2YgdGhlIENvbmdvJywgJ0RLJyA9PiAnRGVubWFyaycsICdESicgPT4gJ0RqaWJvdXRpJywgJ0RNJyA9PiAnRG9taW5pY2EnLCAnRE8nID0+ICdEb21pbmljYW4gUmVwdWJsaWMnLCAnRUMnID0+ICdFY3VhZG9yJywgJ0VHJyA9PiAnRWd5cHQnLCAnU1YnID0+ICdFbCBTYWx2YWRvcicsICdHUScgPT4gJ0VxdWF0b3JpYWwgR3VpbmVhJywgJ0VSJyA9PiAnRXJpdHJlYScsICdFRScgPT4gJ0VzdG9uaWEnLCAnRVQnID0+ICdFdGhpb3BpYScsICdGSycgPT4gJ0ZhbGtsYW5kIElzbGFuZHMnLCAnRk8nID0+ICdGYXJvZSBJc2xhbmRzJywgJ0ZKJyA9PiAnRmlqaScsICdGSScgPT4gJ0ZpbmxhbmQnLCAnRlInID0+ICdGcmFuY2UnLCAnR0YnID0+ICdGcmVuY2ggR3VpYW5hJywgJ1BGJyA9PiAnRnJlbmNoIFBvbHluZXNpYScsICdURicgPT4gJ0ZyZW5jaCBTb3V0aGVybiBUZXJyaXRvcmllcycsICdHQScgPT4gJ0dhYm9uJywgJ0dNJyA9PiAnR2FtYmlhJywgJ0dFJyA9PiAnR2VvcmdpYScsICdERScgPT4gJ0dlcm1hbnknLCAnR0gnID0+ICdHaGFuYScsICdHSScgPT4gJ0dpYnJhbHRhcicsICdHUicgPT4gJ0dyZWVjZScsICdHTCcgPT4gJ0dyZWVubGFuZCcsICdHRCcgPT4gJ0dyZW5hZGEnLCAnR1AnID0+ICdHdWFkZWxvdXBlJywgJ0dVJyA9PiAnR3VhbScsICdHVCcgPT4gJ0d1YXRlbWFsYScsICdHTicgPT4gJ0d1aW5lYScsICdHVycgPT4gJ0d1aW5lYS1CaXNzYXUnLCAnR1knID0+ICdHdXlhbmEnLCAnSFQnID0+ICdIYWl0aScsICdITScgPT4gJ0hlYXJkIElzbGFuZCBhbmQgTWNEb25hbGQgSXNsYW5kcycsICdITicgPT4gJ0hvbmR1cmFzJywgJ0hLJyA9PiAnSG9uZyBLb25nIFMuQS5SLiwgQ2hpbmEnLCAnSFUnID0+ICdIdW5nYXJ5JywgJ0lTJyA9PiAnSWNlbGFuZCcsICdJTicgPT4gJ0luZGlhJywgJ0lEJyA9PiAnSW5kb25lc2lhJywgJ0lSJyA9PiAnSXJhbicsICdJUScgPT4gJ0lyYXEnLCAnSUUnID0+ICdJcmVsYW5kJywgJ0lMJyA9PiAnSXNyYWVsJywgJ0lUJyA9PiAnSXRhbHknLCAnSk0nID0+ICdKYW1haWNhJywgJ0pQJyA9PiAnSmFwYW4nLCAnSk8nID0+ICdKb3JkYW4nLCAnS1onID0+ICdLYXpha2hzdGFuJywgJ0tFJyA9PiAnS2VueWEnLCAnS0knID0+ICdLaXJpYmF0aScsICdLVicgPT4gJ0tvc292bycsICdLVycgPT4gJ0t1d2FpdCcsICdLRycgPT4gJ0t5cmd5enN0YW4nLCAnTEEnID0+ICdMYW9zJywgJ0xWJyA9PiAnTGF0dmlhJywgJ0xCJyA9PiAnTGViYW5vbicsICdMUycgPT4gJ0xlc290aG8nLCAnTFInID0+ICdMaWJlcmlhJywgJ0xZJyA9PiAnTGlieWEnLCAnTEknID0+ICdMaWVjaHRlbnN0ZWluJywgJ0xUJyA9PiAnTGl0aHVhbmlhJywgJ0xVJyA9PiAnTHV4ZW1ib3VyZycsICdNTycgPT4gJ01hY2FvIFMuQS5SLiwgQ2hpbmEnLCAnTUsnID0+ICdNYWNlZG9uaWEnLCAnTUcnID0+ICdNYWRhZ2FzY2FyJywgJ01XJyA9PiAnTWFsYXdpJywgJ01ZJyA9PiAnTWFsYXlzaWEnLCAnTVYnID0+ICdNYWxkaXZlcycsICdNTCcgPT4gJ01hbGknLCAnTVQnID0+ICdNYWx0YScsICdNSCcgPT4gJ01hcnNoYWxsIElzbGFuZHMnLCAnTVEnID0+ICdNYXJ0aW5pcXVlJywgJ01SJyA9PiAnTWF1cml0YW5pYScsICdNVScgPT4gJ01hdXJpdGl1cycsICdZVCcgPT4gJ01heW90dGUnLCAnTVgnID0+ICdNZXhpY28nLCAnRk0nID0+ICdNaWNyb25lc2lhJywgJ01EJyA9PiAnTW9sZG92YScsICdNQycgPT4gJ01vbmFjbycsICdNTicgPT4gJ01vbmdvbGlhJywgJ01TJyA9PiAnTW9udHNlcnJhdCcsICdNQScgPT4gJ01vcm9jY28nLCAnTVonID0+ICdNb3phbWJpcXVlJywgJ01NJyA9PiAnTXlhbm1hcicsICdOQScgPT4gJ05hbWliaWEnLCAnTlInID0+ICdOYXVydScsICdOUCcgPT4gJ05lcGFsJywgJ05MJyA9PiAnTmV0aGVybGFuZHMnLCAnQU4nID0+ICdOZXRoZXJsYW5kcyBBbnRpbGxlcycsICdOQycgPT4gJ05ldyBDYWxlZG9uaWEnLCAnTlonID0+ICdOZXcgWmVhbGFuZCcsICdOSScgPT4gJ05pY2FyYWd1YScsICdORScgPT4gJ05pZ2VyJywgJ05HJyA9PiAnTmlnZXJpYScsICdOVScgPT4gJ05pdWUnLCAnTkYnID0+ICdOb3Jmb2xrIElzbGFuZCcsICdLUCcgPT4gJ05vcnRoIEtvcmVhJywgJ01QJyA9PiAnTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzJywgJ05PJyA9PiAnTm9yd2F5JywgJ09NJyA9PiAnT21hbicsICdQSycgPT4gJ1Bha2lzdGFuJywgJ1BXJyA9PiAnUGFsYXUnLCAnUFMnID0+ICdQYWxlc3RpbmlhbiBUZXJyaXRvcnknLCAnUEEnID0+ICdQYW5hbWEnLCAnUEcnID0+ICdQYXB1YSBOZXcgR3VpbmVhJywgJ1BZJyA9PiAnUGFyYWd1YXknLCAnUEUnID0+ICdQZXJ1JywgJ1BIJyA9PiAnUGhpbGlwcGluZXMnLCAnUE4nID0+ICdQaXRjYWlybicsICdQTCcgPT4gJ1BvbGFuZCcsICdQVCcgPT4gJ1BvcnR1Z2FsJywgJ1BSJyA9PiAnUHVlcnRvIFJpY28nLCAnUUEnID0+ICdRYXRhcicsICdSTycgPT4gJ1JvbWFuaWEnLCAnUlUnID0+ICdSdXNzaWEnLCAnUlcnID0+ICdSd2FuZGEnLCAnUkUnID0+ICdSw6l1bmlvbicsICdTSCcgPT4gJ1NhaW50IEhlbGVuYScsICdLTicgPT4gJ1NhaW50IEtpdHRzIGFuZCBOZXZpcycsICdMQycgPT4gJ1NhaW50IEx1Y2lhJywgJ1BNJyA9PiAnU2FpbnQgUGllcnJlIGFuZCBNaXF1ZWxvbicsICdWQycgPT4gJ1NhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzJywgJ1dTJyA9PiAnU2Ftb2EnLCAnU00nID0+ICdTYW4gTWFyaW5vJywgJ1NUJyA9PiAnU2FvIFRvbWUgYW5kIFByaW5jaXBlJywgJ1NBJyA9PiAnU2F1ZGkgQXJhYmlhJywgJ1NOJyA9PiAnU2VuZWdhbCcsICdTUCcgPT4gJ1NlcmJpYScsICdSUycgPT4gJ1NlcmJpYScsICdTQycgPT4gJ1NleWNoZWxsZXMnLCAnU0wnID0+ICdTaWVycmEgTGVvbmUnLCAnU0cnID0+ICdTaW5nYXBvcmUnLCAnU0snID0+ICdTbG92YWtpYScsICdTSScgPT4gJ1Nsb3ZlbmlhJywgJ1NCJyA9PiAnU29sb21vbiBJc2xhbmRzJywgJ1NPJyA9PiAnU29tYWxpYScsICdaQScgPT4gJ1NvdXRoIEFmcmljYScsICdHUycgPT4gJ1NvdXRoIEdlb3JnaWEgYW5kIHRoZSBTb3V0aCBTYW5kd2ljaCBJc2xhbmRzJywgJ0tSJyA9PiAnU291dGggS29yZWEnLCAnRVMnID0+ICdTcGFpbicsICdMSycgPT4gJ1NyaSBMYW5rYScsICdTRCcgPT4gJ1N1ZGFuJywgJ1NSJyA9PiAnU3VyaW5hbWUnLCAnU0onID0+ICdTdmFsYmFyZCBhbmQgSmFuIE1heWVuJywgJ1NaJyA9PiAnU3dhemlsYW5kJywgJ1NFJyA9PiAnU3dlZGVuJywgJ0NIJyA9PiAnU3dpdHplcmxhbmQnLCAnU1knID0+ICdTeXJpYScsICdUVycgPT4gJ1RhaXdhbicsICdUSicgPT4gJ1RhamlraXN0YW4nLCAnVFonID0+ICdUYW56YW5pYScsICdUSCcgPT4gJ1RoYWlsYW5kJywgJ1RMJyA9PiAnVGltb3ItTGVzdGUnLCAnVEcnID0+ICdUb2dvJywgJ1RLJyA9PiAnVG9rZWxhdScsICdUTycgPT4gJ1RvbmdhJywgJ1RUJyA9PiAnVHJpbmlkYWQgYW5kIFRvYmFnbycsICdUTicgPT4gJ1R1bmlzaWEnLCAnVFInID0+ICdUdXJrZXknLCAnVE0nID0+ICdUdXJrbWVuaXN0YW4nLCAnVEMnID0+ICdUdXJrcyBhbmQgQ2FpY29zIElzbGFuZHMnLCAnVFYnID0+ICdUdXZhbHUnLCAnVkknID0+ICdVLlMuIFZpcmdpbiBJc2xhbmRzJywgJ1VHJyA9PiAnVWdhbmRhJywgJ1VBJyA9PiAnVWtyYWluZScsICdBRScgPT4gJ1VuaXRlZCBBcmFiIEVtaXJhdGVzJywgJ0dCJyA9PiAnVW5pdGVkIEtpbmdkb20nLCAnVVMnID0+ICdVbml0ZWQgU3RhdGVzJywgJ1VNJyA9PiAnVW5pdGVkIFN0YXRlcyBNaW5vciBPdXRseWluZyBJc2xhbmRzJywgJ1VZJyA9PiAnVXJ1Z3VheScsICdVWicgPT4gJ1V6YmVraXN0YW4nLCAnVlUnID0+ICdWYW51YXR1JywgJ1ZBJyA9PiAnVmF0aWNhbicsICdWRScgPT4gJ1ZlbmV6dWVsYScsICdWTicgPT4gJ1ZpZXRuYW0nLCAnV0YnID0+ICdXYWxsaXMgYW5kIEZ1dHVuYScsICdFSCcgPT4gJ1dlc3Rlcm4gU2FoYXJhJywgJ1lFJyA9PiAnWWVtZW4nLCAnWVUnID0+ICdZdWdvc2xhdmlhJywgJ1pNJyA9PiAnWmFtYmlhJywgJ1pXJyA9PiAnWmltYmFid2UnCiAgICAgICk7CiAgICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldElucHV0KCkKICAgIHsKICAgICAgcmV0dXJuIHNlbGY6OkNyZWF0ZUNvdW50cmllc1NlbGVjdG9yKCR0aGlzLT5pZCwkdGhpcy0+bmFtZSwkdGhpcy0+Z2V0VmFsdWVzKCksJHRoaXMtPnNldHRpbmdzKTsKICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVDb3VudHJpZXNTZWxlY3RvcigkaWQsJG5hbWUsJHZhbHVlcywkc2V0dGluZ3MpCiAgICB7CiAgICAgICRzZXR0aW5nc1sndmFsdWVzJ10gPSBzZWxmOjokY291bnRyaWVzOwogICAgICByZXR1cm4gc2VsZjo6Q3JlYXRlU2VsZWN0b3IoJGlkLCRuYW1lLCR2YWx1ZXMsJHNldHRpbmdzKTsKICAgIH0KICB9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputDate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgRGF0ZQogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0RGF0ZSBleHRlbmRzIENNU0Zvcm1JbnB1dFNlbGVjdAogIHsKICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlKCkgIHsKICAgICAgaWYgKChjb3VudCgkdGhpcy0+dmFsdWVzKSA+IDEpKQogICAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZXNbJzAnXSAuICctJyAuICR0aGlzLT52YWx1ZXNbJzEnXSAuICctJyAuICR0aGlzLT52YWx1ZXNbJzInXTsKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICByZXR1cm4gaW1wbG9kZSgnLScsICR0aGlzLT52YWx1ZXMpOwogICAgICB9CiAgICB9CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpIHsKICAgICAgcmV0dXJuIHNlbGY6OkNyZWF0ZURhdGVTZWxlY3QoJHRoaXMtPmlkLCR0aGlzLT5uYW1lLCR0aGlzLT5nZXRWYWx1ZXMoKSwgJHRoaXMtPnNldHRpbmdzKTsKICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVOdW1iZXJMaXN0KCRlbmQsICRzdGFydD0wKSB7CiAgICAgIGlmICgoJGVuZCA8IDApfHwoIWlzX251bWVyaWMoJGVuZCkpKSAkZW5kID0gMTsKICAgICAgJGxpc3QgPSBhcnJheSgpOwogICAgICBmb3IgKCRpID0gJHN0YXJ0OyAkaSA8PSAkZW5kOyAkaSsrKQogICAgICB7CiAgICAgICAgJGxpc3RbJGldID0gKCRpIDwgMTApPyAnMCcgLiAoc3RyaW5nKSRpOihzdHJpbmcpJGk7CiAgICAgIH0KICAgICAgcmV0dXJuICRsaXN0OwogICAgfQogICAgCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZURhdGVTZWxlY3QoJGlkLCRuYW1lLCR2YWx1ZXMsJHNldHRpbmdzKSAgewogICAgICBpZiAoY291bnQoJHZhbHVlcykgPT0gMSkKICAgICAgewogICAgICAgIGlmIChzdHJwb3MoJHZhbHVlc1swXSwgJy0nKSAhPT0gZmFsc2UpICR2YWx1ZXMgPSBleHBsb2RlKCctJywkdmFsdWVzWzBdKTsKICAgICAgfQogICAgICAkc3RhcnRfeWVhciA9IGlzc2V0KCRzZXR0aW5nc1snc3RhcnRfeWVhciddKT8kc2V0dGluZ3NbJ3N0YXJ0X3llYXInXTpkYXRlKCdZJyk7CiAgICAgICRudW1iZXJfeWVhcnMgPSBpc3NldCgkc2V0dGluZ3NbJ251bWJlcl95ZWFycyddKT8kc2V0dGluZ3NbJ251bWJlcl95ZWFycyddOjIwOwogICAgICAkZW5kX3llYXIgPSAkc3RhcnRfeWVhciArICRudW1iZXJfeWVhcnM7CgogICAgICAkeWVhciA9IHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsJG5hbWUuJ1swXScsc2VsZjo6Q3JlYXRlTnVtYmVyTGlzdCgkZW5kX3llYXIsJHN0YXJ0X3llYXIpLGFycmF5KCR2YWx1ZXNbMF0pLDEsJycsZmFsc2UpOwogICAgICAkbW9udGggPSBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCRuYW1lLidbMV0nLHNlbGY6OkNyZWF0ZU1vbnRoc0xpc3QoKSxhcnJheSgkdmFsdWVzWzFdKSwxLCcnLGZhbHNlKTsKICAgICAgJGRheSA9IHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsJG5hbWUuJ1syXScsc2VsZjo6Q3JlYXRlTnVtYmVyTGlzdCgzMSwxKSxhcnJheSgkdmFsdWVzWzJdKSwxLCcnLGZhbHNlKTsKICAgICAgaWYgKGlzc2V0KCRzZXR0aW5nc1snZXVyb3BlYW5fZGF0ZSddKSkKICAgICAgewogICAgICAgIHJldHVybiAkZGF5IC4gJG1vbnRoIC4gJHllYXI7CiAgICAgIH0KICAgICAgcmV0dXJuICR5ZWFyIC4gJG1vbnRoIC4gJGRheTsKICAgIH0KICAgIAogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVNb250aHNMaXN0KCkgewogICAgICAkbW9udGhzID0gYXJyYXkoKTsKICAgICAgZm9yICgkaSA9IDE7ICRpIDw9IDEyOyArKyRpKSB7CiAgICAgICAgJHQgPSBta3RpbWUoMCwgMCwgMCwgJGksIDEsIDIwMDApOwogICAgICAgICRtb250aHNbJGldID0gZGF0ZSgnTScsICR0KTsKICAgICAgfQogICAgICByZXR1cm4gJG1vbnRoczsKICAgIH0KICAKICB9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputDateTime.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgRGF0ZVRpbWUKCQlCYXNlZCBvbiBhIHRpbWVzdGFtcCB2YWx1ZQogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0RGF0ZVRpbWUgZXh0ZW5kcyBDTVNGb3JtSW5wdXRUaW1lCiAgewogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFsdWUoKSAgewogICAgICBpZiAoKGNvdW50KCR0aGlzLT52YWx1ZXMpID4gMSkpCiAgICAgIHsKCQkJCXJldHVybiBzdHJ0b3RpbWUoCgkJCQkJJHRoaXMtPnZhbHVlc1snMCddIC4gJy0nIC4gJHRoaXMtPnZhbHVlc1snMSddIC4gJy0nIC4gJHRoaXMtPnZhbHVlc1snMiddCgkJCQkJLiAnICcgLiAKCQkJCQkkdGhpcy0+dmFsdWVzWyczJ10gLiAnOicgLiAkdGhpcy0+dmFsdWVzWyc0J10gLiAnOicgLiAkdGhpcy0+dmFsdWVzWyc1J10KCQkJCSk7CgogICAgICB9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgIHJldHVybiBpbXBsb2RlKCctJywgJHRoaXMtPnZhbHVlcyk7CiAgICAgIH0KICAgIH0KCgkJcHVibGljIGZ1bmN0aW9uIGdldFRpbWUoKQoJCXsKCQkJcmV0dXJuIGRhdGUoJ0g6aTpzJywgJHRoaXMtPmdldFZhbHVlKCkpOwoJCX0KCQkKCQlwdWJsaWMgZnVuY3Rpb24gZ2V0RGF0ZSgpCgkJewoJCQlyZXR1cm4gZGF0ZSgnWS1tLWQnLCAkdGhpcy0+Z2V0VmFsdWUoKSk7CQkJCgkJfQogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SW5wdXQoKSB7CQogICAgICByZXR1cm4KIAkJCQlzZWxmOjpDcmVhdGVEYXRlU2VsZWN0KCR0aGlzLT5pZCwkdGhpcy0+bmFtZSxleHBsb2RlKCctJywgJHRoaXMtPmdldERhdGUoKSksICR0aGlzLT5zZXR0aW5ncykKIAkJCQkuIHNlbGY6OkNyZWF0ZVRpbWVTZWxlY3QoJHRoaXMtPmlkLCR0aGlzLT5uYW1lLGV4cGxvZGUoJzonLCR0aGlzLT5nZXRUaW1lKCkpLCAzKTsKICAgIH0gCiAgfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputFile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgRmlsZQogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0RmlsZSBleHRlbmRzIENNU0Zvcm1JbnB1dAogIHsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpCiAgICB7CiAgICAgIHJldHVybiAkdGhpcy0+Z2V0VXBsb2FkRmllbGQoKTsKICAgICAgLy8gcmV0dXJuICR0aGlzLT5nZXRNb2R1bGUoKS0+Q3JlYXRlSW5wdXRIaWRkZW4oJHRoaXMtPmlkLCAkdGhpcy0+bmFtZSwgJHRoaXMtPmdldFZhbHVlKCkpOwogICAgfQogIAogICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2F2ZU9iamVjdCgpIAogICB7CiAgICAgLy8gVE9ETzogVGhpcyBjYXNlCiAgIH0KICAgIAogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFVwbG9hZEZpZWxkKCkgIHsKICAgICAgJGZpZWxkID0gJHRoaXMtPmdldE1vZHVsZSgpLT5DcmVhdGVJbnB1dEZpbGUoJHRoaXMtPmlkLCAkdGhpcy0+bmFtZSwgJycsICR0aGlzLT5nZXRTZXR0aW5nKCdzaXplJywgMzApKTsKICAgICAgCiAgICAgICRodG1sID0gJzxzcGFuPic7CiAgICAgIGlmICghJHRoaXMtPmlzRW1wdHkoKSkKICAgICAgewogICAgICAgIGlmKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snZGlyZWN0X2xpbmsnXSkgJiYgJHRoaXMtPnNldHRpbmdzWydkaXJlY3RfbGluayddICE9ICcnKQogICAgICAgIHsKICAgICAgICAgICRmaWxlX3VybCA9ICR0aGlzLT5zZXR0aW5nc1snZGlyZWN0X2xpbmsnXTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICRmaWxlX3VybCA9IGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snYmFzZV91cmwnXSk/JHRoaXMtPnNldHRpbmdzWydiYXNlX3VybCddOicnOwogICAgICAgICAgaWYgKChzdWJzdHIoJGZpbGVfdXJsLCAtMSkgIT0gJy8nKSAmJiAoc3Vic3RyKCR0aGlzLT5nZXRWYWx1ZSgpLDAsMSkgIT0gJy8nKSkgJGZpbGVfdXJsIC49ICcvJzsKICAgICAgICAgICRmaWxlX3VybCAuPSAkdGhpcy0+Z2V0VmFsdWUoKTsKICAgICAgICAgICRmaWxlX3VybCA9IHN0cl9yZXBsYWNlKERJUkVDVE9SWV9TRVBBUkFUT1IsICcvJywgJGZpbGVfdXJsKTsKICAgICAgICB9CgogICAgICAgIGlmIChzZWxmOjppc0ltYWdlKCR0aGlzLT5nZXRWYWx1ZSgpKSkKICAgICAgICB7CiAgICAgICAgICAkdGV4dCA9ICc8aW1nIHNyYz0iJy4kZmlsZV91cmwuJyIgLz4nOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgJHRleHQgPSBiYXNlbmFtZSgkdGhpcy0+dmFsdWVzWzBdKTsKICAgICAgICB9CgogICAgICAgICRodG1sIC49ICc8c3BhbiBzdHlsZT0iZGlzcGxheTpibG9jazsgbWFyZ2luLWJvdHRvbTogN3B4OyI+PGEgaHJlZj0iJy4kZmlsZV91cmwuICciIHJlbD0iZXh0ZXJuYWwiID4nLiAkdGV4dCAuJzwvYT48L3NwYW4+ICc7CgogICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ2RlbGV0ZV9jaGVja2JveCddKSkKICAgICAgICB7CiAgICAgICAgICAkZmllbGQgLj0gJyAnIC4gICR0aGlzLT5nZXRNb2R1bGUoKS0+Q3JlYXRlSW5wdXRDaGVja2JveCgkdGhpcy0+aWQsICR0aGlzLT5zZXR0aW5nc1snZGVsZXRlX2NoZWNrYm94J10sICcxJykgLiAnICcgLiAgJHRoaXMtPmdldE1vZHVsZSgpLT5sYW5nKCdkZWxldGUnKTsKICAgICAgICB9CiAgICAgIH0KCgoKICAgICAgJGh0bWwgLj0gJGZpZWxkIC4gJzwvc3Bhbj4nOwogICAgICByZXR1cm4gJGh0bWw7CiAgICB9CiAgICAKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gaXNJbWFnZSgkZmlsZW5hbWUpIHsKICAgICAgJHZhbGlkX2V4dGVuc2lvbnMgPSBhcnJheSgnanBlZycsJ2pwZycsJ2dpZicsJ3BuZycpOwogICAgICBpZiAoaW5fYXJyYXkoc2VsZjo6Z2V0RmlsZUV4dGVuc2lvbigkZmlsZW5hbWUpLCR2YWxpZF9leHRlbnNpb25zKSkKICAgICAgewogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEZpbGVFeHRlbnNpb24oJGZpbGVuYW1lKSAgewogICAgICAkZmlsZSA9IGV4cGxvZGUoJy4nLCAkZmlsZW5hbWUpOwogICAgICAgIGlmIChjb3VudCgkZmlsZSkgPiAxKQogICAgICAgIHsKICAgICAgICAgIHJldHVybiBzdHJ0b2xvd2VyKGVuZCgkZmlsZSkpOwogICAgICAgIH0KICAgICAgICBlbHNlIAogICAgICAgIHsKICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgIH0KICAgIAogIH0=]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputHidden.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgSGlkZGVuCiAgKi8KICAKICBjbGFzcyBDTVNGb3JtSW5wdXRIaWRkZW4gZXh0ZW5kcyBDTVNGb3JtSW5wdXQKICB7CiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpICB7CiAgICAgIHJldHVybiAkdGhpcy0+Z2V0SW5wdXQoKTsKICAgIH0KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldElucHV0KCkKICAgIHsKICAgICAgcmV0dXJuICR0aGlzLT5nZXRNb2R1bGUoKS0+Q3JlYXRlSW5wdXRIaWRkZW4oJHRoaXMtPmlkLCAkdGhpcy0+bmFtZSwgJHRoaXMtPmdldFZhbHVlKCkpOwogICAgfQogIH0=]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputPages.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgUGFnZXMKICAqLwogIAogIGNsYXNzIENNU0Zvcm1JbnB1dFBhZ2VzIGV4dGVuZHMgQ01TRm9ybUlucHV0U2VsZWN0CiAgewogICAgcHVibGljIGZ1bmN0aW9uIGdldElucHV0KCkKICAgIHsKICAgICAgJHRoaXMtPnNldHRpbmdzWyd2YWx1ZXMnXSA9IGFycmF5KDAgPT4gJyZsYXF1bzsgJyAuIGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ01TRm9ybXMnKS0+bGFuZygnc2VsZWN0IG9uZScpIC4gJyAmcmFxdW87JykgKyBzZWxmOjpnZXRQYWdlc0xpc3QoJHRoaXMtPmlkLCAkdGhpcy0+bmFtZSwkdGhpcy0+Z2V0VmFsdWUoKSwgJHRoaXMtPnNldHRpbmdzKTsKICAgICAgcmV0dXJuIHNlbGY6OkNyZWF0ZVNlbGVjdG9yKCR0aGlzLT5pZCwgJHRoaXMtPm5hbWUsICR0aGlzLT5nZXRWYWx1ZXMoKSwgJHRoaXMtPnNldHRpbmdzKTsKICAgIH0KICAgIAogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBnZXRQYWdlc0xpc3QoJGlkLCRuYW1lLCR2YWx1ZSwkc2V0dGluZ3MgPSBhcnJheSgpKSB7CgogICAgICAkcGFnZXMgPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5HZXRBbGxDb250ZW50KCk7CiAgICAgICRhcnJheSA9IGFycmF5KCk7CgogICAgICBpZiAoaXNzZXQoJHNldHRpbmdzWydjaGlsZHJlbm9mJ10pKQogICAgICB7CiAgICAgICAgJGNoaWxkcmVub2YgPSBzZWxmOjpnZXRQYWdlSWQoJHNldHRpbmdzWydjaGlsZHJlbm9mJ10pOwogICAgICB9CgogICAgICBpZiAoaXNzZXQoJHNldHRpbmdzWydzdGFydF9wYWdlJ10pKQogICAgICB7CiAgICAgICAgJHN0YXJ0X3BhZ2UgPSBzZWxmOjpnZXRQYWdlSWQoJHNldHRpbmdzWydzdGFydF9wYWdlJ10pOwogICAgICB9CgogICAgICBmb3JlYWNoKCRwYWdlcyBhcyAkcGFnZSkKICAgICAgewogICAgICAgIGlmICgKICAgICAgICAgICghaXNzZXQoJHN0YXJ0X3BhZ2UpICYmICFpc3NldCgkY2hpbGRyZW5vZikpIAogICAgICAgICAgfHwKICAgICAgICAgIChpc3NldCgkY2hpbGRyZW5vZikgJiYgKCRwYWdlLT5QYXJlbnRJZCgpID09ICRjaGlsZHJlbm9mKSkgLy8gTGlzdCBvZiBhbGwgY2hpbGRyZW5zCiAgICAgICAgICB8fAogICAgICAgICAgKGlzc2V0KCRzdGFydF9wYWdlKSAmJiAoc3RycG9zKCRwYWdlLT5JZEhpZXJhcmNoeSgpLCAkc3RhcnRfcGFnZS4nLicpID09PSAwKSkgLy8gTGlzdCBvZiBhbGwgZGVzY2VuZGFudHMKICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAkYXJyYXlbJHBhZ2UtPklkKCldID0gJHBhZ2UtPkhpZXJhcmNoeSgpLicuIC0gJy4kcGFnZS0+TmFtZSgpOwogICAgICAgIH0KCiAgICAgIH0KCiAgICAgIHJldHVybiAkYXJyYXk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBnZXRQYWdlSWQoJGFsaWFzKSAgewogICAgICAkbWFuYWdlciA9IGNtc21zKCktPkdldEhpZXJhcmNoeU1hbmFnZXIoKTsKICAgICAgJG5vZGUgPSAkbWFuYWdlci0+c3VyZUdldE5vZGVCeUFsaWFzKCRhbGlhcyk7CiAgICAgIGlmICgkbm9kZSkgewogICAgICAgICAgJGNvbnRlbnQgPSAkbm9kZS0+R2V0Q29udGVudCgpOwogICAgICAgICAgaWYgKCRjb250ZW50KQogICAgICAgICAgewogICAgICAgICAgICAgIHJldHVybiAkY29udGVudC0+SWQoKTsKICAgICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICAgICRub2RlID0gJG1hbmFnZXItPnN1cmVHZXROb2RlQnlJZCgkYWxpYXMpOwogICAgICAgICAgaWYgKCRub2RlKSB7CiAgICAgICAgICAgIHJldHVybiAkYWxpYXM7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVQYWdlU2VsZWN0KCRpZCwkbmFtZSwkdmFsdWUsJHNldHRpbmdzID0gYXJyYXkoKSkgewogICAgICAkcGFnZXMgPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5HZXRBbGxDb250ZW50KCk7CgogICAgICAkaHRtbCA9ICc8c2VsZWN0IG5hbWU9IicuJGlkLiRuYW1lLiciPjxvcHRpb24+Jy5jbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NNU0Zvcm1zJyktPmxhbmcoJ3NlbGVjdCBvbmUnKS4nPC9vcHRpb24+JzsKCiAgICAgIGZvcmVhY2goJHBhZ2VzIGFzICRwYWdlKQogICAgICB7CiAgICAgICAgJGh0bWwgLj0gJzxvcHRpb24gdmFsdWU9IicgLiAkcGFnZS0+SWQoKSAuICciJzsKCiAgICAgICAgaWYoJHZhbHVlID09ICRwYWdlLT5JZCgpKQogICAgICAgIHsKICAgICAgICAgICRodG1sIC49ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7CiAgICAgICAgfSAgICAgIAoKICAgICAgICAkaHRtbCAuPSAnPicgLiAkcGFnZS0+SGllcmFyY2h5KCkuJy4gLSAnLiRwYWdlLT5OYW1lKCkgLiAnPC9vcHRpb24+JzsKICAgICAgfQoKICAgICAgJGh0bWwgLj0gJzwvc2VsZWN0Pic7ICAgIAoKICAgICAgcmV0dXJuICRodG1sOwogICAgfQogICAgCiAgfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputPassword.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgUGFzc3dvcmQKICAqLwogIAogIGNsYXNzIENNU0Zvcm1JbnB1dFBhc3N3b3JkIGV4dGVuZHMgQ01TRm9ybUlucHV0CiAgewogICAgcHVibGljIGZ1bmN0aW9uIGdldElucHV0KCkKICAgIHsKICAgICAgcmV0dXJuICR0aGlzLT5nZXRNb2R1bGUoKS0+Q3JlYXRlSW5wdXRQYXNzd29yZCgkdGhpcy0+aWQsICR0aGlzLT5uYW1lLCAnJywkdGhpcy0+Z2V0U2V0dGluZygnc2l6ZScsIDIwKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNhdmUoKSB7CgkJCWlmKCR0aGlzLT5nZXRWYWx1ZSgpICE9ICcnKQogICAgICB7CgkJCQlwYXJlbnQ6OnNhdmUoKTsKCQkJfQoJCX0KICB9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputSelect.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAgQ01TRm9ybSBJbnB1dCBTZWxlY3QKKi8KCmNsYXNzIENNU0Zvcm1JbnB1dFNlbGVjdCBleHRlbmRzIENNU0Zvcm1JbnB1dAp7CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SW5wdXQoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpDcmVhdGVTZWxlY3RvcigkdGhpcy0+aWQsICR0aGlzLT5uYW1lLCAkdGhpcy0+Z2V0VmFsdWVzKCksICR0aGlzLT5zZXR0aW5ncyk7CiAgICB9CgoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gQ3JlYXRlU2VsZWN0b3IoJGlkLCAkbmFtZSwgJHZhbHVlcywgJHNldHRpbmdzID0gYXJyYXkoKSkKICAgIHsKCiAgICAgICAgaWYgKGlzc2V0KCRzZXR0aW5nc1snZXhwYW5kZWQnXSkgJiYgJHNldHRpbmdzWydleHBhbmRlZCddID09IHRydWUpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OkNyZWF0ZUlucHV0RXhwYW5kZWRMaXN0KCRpZCwgJG5hbWUsIGlzc2V0KCRzZXR0aW5nc1sndmFsdWVzJ10pID8gJHNldHRpbmdzWyd2YWx1ZXMnXSA6IGFycmF5KCksICR2YWx1ZXMsIGlzc2V0KCRzZXR0aW5nc1snYWRkdGV4dCddKSA/ICRzZXR0aW5nc1snYWRkdGV4dCddIDogJycsIGlzc2V0KCRzZXR0aW5nc1snbXVsdGlwbGUnXSkgPyB0cnVlIDogZmFsc2UsICRzZXR0aW5ncyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGl0ZW1zID0gaXNzZXQoJHNldHRpbmdzWyd2YWx1ZXMnXSkgPyAkc2V0dGluZ3NbJ3ZhbHVlcyddIDogYXJyYXkoKTsKICAgICAgICAgICAgaWYgKGlzc2V0KCRzZXR0aW5nc1snaW5jbHVkZV9jdXN0b20nXSkpIHsKICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRzZXR0aW5nc1snY3VzdG9tX3ZhbHVlJ10pKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRpdGVtcyA9IGFycmF5KCRzZXR0aW5nc1snY3VzdG9tX3ZhbHVlJ10gPT4gJHNldHRpbmdzWydpbmNsdWRlX2N1c3RvbSddKSArICRpdGVtczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkaXRlbXMgPSBhcnJheSgnJyA9PiAkc2V0dGluZ3NbJ2luY2x1ZGVfY3VzdG9tJ10pICsgJGl0ZW1zOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkdmFsdWVzLCBpc3NldCgkc2V0dGluZ3NbJ3NpemUnXSkgPyAkc2V0dGluZ3NbJ3NpemUnXSA6IDEsIGlzc2V0KCRzZXR0aW5nc1snYWRkdGV4dCddKSA/ICRzZXR0aW5nc1snYWRkdGV4dCddIDogJycsIGlzc2V0KCRzZXR0aW5nc1snbXVsdGlwbGUnXSkgPyB0cnVlIDogZmFsc2UsICRzZXR0aW5ncyk7CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gQ3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwgJG5hbWUsICRpdGVtcywgJHNlbGVjdGVkaXRlbXMgPSBhcnJheSgpLCAkc2l6ZSA9IDMsICRhZGR0dGV4dCA9ICcnLCAkbXVsdGlwbGUgPSB0cnVlLCAkc2V0dGluZ3MgPSBhcnJheSgpKQogICAgewogICAgICAgICRpZCA9IGNtc19odG1sZW50aXRpZXMoJGlkKTsKICAgICAgICAkbmFtZSA9IGNtc19odG1sZW50aXRpZXMoJG5hbWUpOwogICAgICAgICRzaXplID0gY21zX2h0bWxlbnRpdGllcygkc2l6ZSk7CiAgICAgICAgJG11bHRpcGxlID0gY21zX2h0bWxlbnRpdGllcygkbXVsdGlwbGUpOwoKICAgICAgICBpZiAoJG11bHRpcGxlID09IHRydWUpIHsKICAgICAgICAgICAgJG5hbWUgLj0gJ1tdJzsKICAgICAgICB9CgogICAgICAgICR0ZXh0ID0gJzxzZWxlY3QgbmFtZT0iJyAuICRpZCAuICRuYW1lIC4gJyIgaWQ9IicgLiAkaWQgLiAkbmFtZSAuICciJzsKCiAgICAgICAgaWYgKCRhZGR0dGV4dCAhPSAnJykgewogICAgICAgICAgICAkdGV4dCAuPSAnICcgLiAkYWRkdHRleHQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG11bHRpcGxlKSB7CiAgICAgICAgICAgICR0ZXh0IC49ICcgbXVsdGlwbGU9Im11bHRpcGxlIiAnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRzaXplID4gMSkgewogICAgICAgICAgICAkdGV4dCAuPSAnIHNpemU9IicgLiAkc2l6ZSAuICciJzsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkc2V0dGluZ3NbJ2NsYXNzJ10pKSB7CiAgICAgICAgICAgIGlmIChpc19hcnJheSgkc2V0dGluZ3NbJ2NsYXNzJ10pKSAkc2V0dGluZ3NbJ2NsYXNzJ10gPSBpbXBsb2RlKCcgJywgJHNldHRpbmdzWydjbGFzcyddKTsKICAgICAgICAgICAgJHRleHQgLj0gJyBjbGFzcz0iJyAuICRzZXR0aW5nc1snY2xhc3MnXSAuICciJzsKICAgICAgICB9CgogICAgICAgIGlmICgoY291bnQoJGl0ZW1zKSA+IDApICYmIChrZXkoJGl0ZW1zKSA9PSAwKSAmJiAhaXNfYXJyYXkoY3VycmVudCgkaXRlbXMpKSkgewogICAgICAgICAgICAkdGV4dCAuPSAnIGRhdGEtcGxhY2Vob2xkZXI9IicgLiAoc3RyaW5nKWN1cnJlbnQoJGl0ZW1zKSAuICciJzsKICAgICAgICB9CgogICAgICAgICR0ZXh0IC49ICc+JzsKCiAgICAgICAgJGNvdW50ID0gMDsKICAgICAgICBmb3JlYWNoICgkaXRlbXMgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgaWYgKGlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICR0ZXh0IC49ICc8b3B0Z3JvdXAgbGFiZWw9IicgLiAka2V5IC4gJyI+JzsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR2YWx1ZSBhcyAka2V5MiA9PiAkZW50cnkpIHsKICAgICAgICAgICAgICAgICAgICAkdGV4dCAuPSBzZWxmOjpnZW5lcmF0ZU9wdGlvbigka2V5MiwgJGVudHJ5LCAkc2VsZWN0ZWRpdGVtcyk7CiAgICAgICAgICAgICAgICAgICAgJGNvdW50Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdGV4dCAuPSAnPC9vcHRncm91cD4nOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRleHQgLj0gc2VsZjo6Z2VuZXJhdGVPcHRpb24oJGtleSwgJHZhbHVlLCAkc2VsZWN0ZWRpdGVtcyk7CiAgICAgICAgICAgICAgICAkY291bnQrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkdGV4dCAuPSAnPC9zZWxlY3Q+JyAuICJcbiI7CgogICAgICAgIHJldHVybiAkdGV4dDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGdlbmVyYXRlT3B0aW9uKCRrZXksICR2YWx1ZSwgJHNlbGVjdGVkaXRlbXMpCiAgICB7CiAgICAgICAgJHRleHQgPSAnPG9wdGlvbiB2YWx1ZT0iJyAuICRrZXkgLiAnIic7CiAgICAgICAgaWYgKGluX2FycmF5KCRrZXksICRzZWxlY3RlZGl0ZW1zKSkgewogICAgICAgICAgICAkdGV4dCAuPSAnICcgLiAnc2VsZWN0ZWQ9InNlbGVjdGVkIic7CiAgICAgICAgfQogICAgICAgICR0ZXh0IC49ICc+JzsKICAgICAgICAkdGV4dCAuPSAkdmFsdWU7CiAgICAgICAgJHRleHQgLj0gJzwvb3B0aW9uPic7CgogICAgICAgIHJldHVybiAkdGV4dDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIENyZWF0ZUlucHV0RXhwYW5kZWRMaXN0KCRpZCwgJG5hbWUsICRpdGVtcywgJHNlbGVjdGVkaXRlbXMgPSBhcnJheSgpLCAkYWRkdHRleHQgPSAnJywgJG11bHRpcGxlID0gdHJ1ZSwgJHBhcmFtcyA9IGFycmF5KCkpCiAgICB7CgogICAgICAgICRpZCA9IGNtc19odG1sZW50aXRpZXMoJGlkKTsKICAgICAgICAkbmFtZSA9IGNtc19odG1sZW50aXRpZXMoJG5hbWUpOwogICAgICAgICRtdWx0aXBsZSA9IGNtc19odG1sZW50aXRpZXMoJG11bHRpcGxlKTsKCiAgICAgICAgJGxpc3QgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRpdGVtcyBhcyAka2V5ID0+ICRpdGVtKSB7CiAgICAgICAgICAgIGlmIChpc19hcnJheSgkaXRlbSkpIHsKICAgICAgICAgICAgICAgICRsaXN0W10gPSBhcnJheSgnbGFiZWwnID0+ICc8c3Ryb25nPicgLiAka2V5IC4gJzwvc3Ryb25nPicsICdpbnB1dCcgPT4gJycpOwoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRpdGVtIGFzICRrZXkyID0+ICRlbnRyeSkgewogICAgICAgICAgICAgICAgICAgIHNlbGY6OmdlbmVyYXRlRXhwYW5kZWRMaXN0KCRsaXN0LCAkaWQsICRlbnRyeSwgJG5hbWUsICRrZXkyLCAkc2VsZWN0ZWRpdGVtcywgJG11bHRpcGxlLCAkYWRkdHRleHQpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHNlbGY6OmdlbmVyYXRlRXhwYW5kZWRMaXN0KCRsaXN0LCAkaWQsICRpdGVtLCAkbmFtZSwgJGtleSwgJHNlbGVjdGVkaXRlbXMsICRtdWx0aXBsZSwgJGFkZHR0ZXh0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ21vZGUnXSkgJiYgKCRwYXJhbXNbJ21vZGUnXSA9PSAnaHRtbCcpKSB7CiAgICAgICAgICAgIC8vIFRPRE8KICAgICAgICAgICAgcmV0dXJuICdOb3QgaW1wbGVtZW50ZWQgeWV0JzsKICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJHBhcmFtc1snbW9kZSddKSAmJiAoJHBhcmFtc1snbW9kZSddID09ICdhcnJheScpKSB7CiAgICAgICAgICAgIHJldHVybiAkbGlzdDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkaHRtbCA9ICcnOwogICAgICAgICAgICBpZiAoY291bnQoJGxpc3QpID4gMCkgewogICAgICAgICAgICAgICAgJGh0bWwgLj0gJzx1bD4nOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGxpc3QgYXMgJGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAkaHRtbCAuPSAnPGxpPicgLiAkaXRlbVsnaW5wdXQnXSAuICcgJyAuICRpdGVtWydsYWJlbCddIC4gJzwvbGk+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRodG1sIC49ICc8L3VsPic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICRodG1sOwogICAgICAgIH0KCiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBnZW5lcmF0ZUV4cGFuZGVkTGlzdCgmJGxpc3QsICRpZCwgJGl0ZW0sICRuYW1lLCAka2V5LCAkc2VsZWN0ZWRpdGVtcywgJG11bHRpcGxlLCAkYWRkdHRleHQpCiAgICB7CiAgICAgICAgaWYgKGluX2FycmF5KCRrZXksICRzZWxlY3RlZGl0ZW1zKSkgewogICAgICAgICAgICAkdGV4dCA9ICcgY2hlY2tlZD0iY2hlY2tlZCInIC4gJyAnIC4gJGFkZHR0ZXh0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0ZXh0ID0gJyAnIC4gJGFkZHR0ZXh0OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRtdWx0aXBsZSkgewogICAgICAgICAgICAkbGlzdFtdID0gYXJyYXkoCiAgICAgICAgICAgICAgICAnbGFiZWwnID0+ICc8bGFiZWwgZm9yPSInIC4gJGlkIC4gJG5hbWUgLiAnWycgLiAka2V5IC4gJ10iPicgLiAkaXRlbSAuICc8L2xhYmVsPicsCiAgICAgICAgICAgICAgICAnaW5wdXQnID0+ICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IicgLiAkaWQgLiAkbmFtZSAuICdbJyAuICRrZXkgLiAnXSIgaWQ9IicgLiAkaWQgLiAkbmFtZSAuICdbJyAuICRrZXkgLiAnXSIgdmFsdWU9IicgLiAka2V5IC4gJyInIC4gJHRleHQgLiAnIC8+JwogICAgICAgICAgICApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRsaXN0W10gPSBhcnJheSgKICAgICAgICAgICAgICAgICdsYWJlbCcgPT4gJzxsYWJlbCBmb3I9IicgLiAkaWQgLiAkbmFtZSAuICRrZXkgLiAnIj4nIC4gJGl0ZW0gLiAnPC9sYWJlbD4nLAogICAgICAgICAgICAgICAgJ2lucHV0JyA9PiAnPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSInIC4gJGlkIC4gJG5hbWUgLiAnIiBpZD0iJyAuICRpZCAuICRuYW1lIC4gJGtleSAuICciIHZhbHVlPSInIC4gJGtleSAuICciJyAuICR0ZXh0IC4gJyAvPicKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRsaXN0OwogICAgfQoKICAgIC8vIERFUFJFQ0FURUQgVE8gQkUgUkVNT1ZFRAoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gRGVwcmVjYXRlZENyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICRuYW1lLCAkaXRlbXMsICRzZWxlY3RlZGl0ZW1zID0gYXJyYXkoKSwgJHNpemUgPSAzLCAkYWRkdHRleHQgPSAnJywgJG11bHRpcGxlID0gdHJ1ZSkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwgJG5hbWUsICRpdGVtcywgJHNlbGVjdGVkaXRlbXMsICRzaXplLCAkYWRkdHRleHQsICRtdWx0aXBsZSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBEZXByZWNhdGVkQ3JlYXRlSW5wdXRFeHBhbmRlZExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkc2VsZWN0ZWRpdGVtcyA9IGFycmF5KCksICRhZGR0dGV4dCA9ICcnLCAkbXVsdGlwbGUgPSB0cnVlLCAkcGFyYW1zID0gYXJyYXkoKSkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6Q3JlYXRlSW5wdXRFeHBhbmRlZExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkc2VsZWN0ZWRpdGVtcywgJGFkZHR0ZXh0LCAkbXVsdGlwbGUsICRwYXJhbXMpOwogICAgfQp9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputSyntaxarea.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgQ01TRm9ybUlucHV0U3ludGF4YXJlYQogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0U3ludGF4YXJlYSBleHRlbmRzIENNU0Zvcm1JbnB1dAogIHsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpCiAgICB7CiAgICAgIHJldHVybiAkdGhpcy0+Z2V0TW9kdWxlKCktPkNyZWF0ZVN5bnRheEFyZWEoJHRoaXMtPmlkLCAkdGhpcy0+Z2V0VmFsdWUoKSwgJHRoaXMtPm5hbWUsJ3BhZ2ViaWd0ZXh0YXJlYScsICcnLCcnLCAnJywgOTAsIDE1KTsKICAgIH0KICB9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputText.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgVGV4dAogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0VGV4dCBleHRlbmRzIENNU0Zvcm1JbnB1dAogIHsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpCiAgICB7CiAgICAgICRpbnB1dCA9ICR0aGlzLT5nZXRNb2R1bGUoKS0+Q3JlYXRlSW5wdXRUZXh0KCR0aGlzLT5pZCwgJHRoaXMtPm5hbWUsICR0aGlzLT5nZXRWYWx1ZSgpLCBpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ3NpemUnXSk/JHRoaXMtPnNldHRpbmdzWydzaXplJ106ODAsIGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snbWF4bGVuZ3RoJ10pPyR0aGlzLT5zZXR0aW5nc1snbWF4bGVuZ3RoJ106MjU1KTsKCiAgICAgIGlmKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snY2xhc3NuYW1lJ10pKQogICAgICB7CiAgICAgICAgJGlucHV0ID0gc3RyX3JlcGxhY2UoJ2NsYXNzPSJjbXNfdGV4dGZpZWxkIicsICdjbGFzcz0iJy4oc3RyaW5nKSR0aGlzLT5zZXR0aW5nc1snY2xhc3NuYW1lJ10uJyInLCAkaW5wdXQpOwogICAgICB9CgogICAgICBpZihpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ3BsYWNlaG9sZGVyJ10pKQogICAgICB7CiAgICAgICAgJGlucHV0ID0gc3RyX3JlcGxhY2UoJz4nLCAncGxhY2Vob2xkZXI9IicuKHN0cmluZykkdGhpcy0+c2V0dGluZ3NbJ3BsYWNlaG9sZGVyJ10uJyI+JywgJGlucHV0KTsKICAgICAgfQoKICAgICAgcmV0dXJuICRpbnB1dDsKICAgIH0KICB9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputTextarea.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgVGV4dGFyZWEKICAqLwogIAogIGNsYXNzIENNU0Zvcm1JbnB1dFRleHRhcmVhIGV4dGVuZHMgQ01TRm9ybUlucHV0CiAgewogICAgcHVibGljIGZ1bmN0aW9uIGdldElucHV0KCkKICAgIHsKICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snc2hvd193eXNpd3lnJ10pICYmICR0aGlzLT5zZXR0aW5nc1snc2hvd193eXNpd3lnJ10gPT0gdHJ1ZSkKICAgICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0TW9kdWxlKCktPkNyZWF0ZVRleHRBcmVhKHRydWUsICR0aGlzLT5pZCwgJHRoaXMtPmdldFZhbHVlKCksICR0aGlzLT5uYW1lLCAkdGhpcy0+Z2V0U2V0dGluZygnY2xhc3MnKSwgJHRoaXMtPmdldFNldHRpbmcoJ2h0bWxpZCcpKTsgICAgICAgICAgICAKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldE1vZHVsZSgpLT5DcmVhdGVUZXh0QXJlYSgKICAgICAgICAgIGZhbHNlLAogICAgICAgICAgJHRoaXMtPmlkLAogICAgICAgICAgJHRoaXMtPmdldFZhbHVlKCksIAogICAgICAgICAgJHRoaXMtPm5hbWUsCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnY2xhc3NuYW1lJywnJyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnaHRtbGlkJywnJyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnZW5jb2RpbmcnLCcnKSwKICAgICAgICAgICR0aGlzLT5nZXRTZXR0aW5nKCdzdHlsZXNoZWV0JywnJyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnY29scycsJzgwJyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygncm93cycsJzE1JyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnZm9yY2V3eXNpd3lnJywnJyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnd2FudGVkc3ludGF4JywnJyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnYWRkdGV4dCcsJycpCiAgICAgICAgICApOwogICAgICB9CiAgICB9CiAgfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputTime.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgVGltZQogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0VGltZSBleHRlbmRzIENNU0Zvcm1JbnB1dERhdGUKICB7CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZSgpICB7CiAgICAgIGlmICgoY291bnQoJHRoaXMtPnZhbHVlcykgPiAxKSkKICAgICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWVzWycwJ10gLiAnOicgLiAkdGhpcy0+dmFsdWVzWycxJ10gLiAnOicgLiAkdGhpcy0+dmFsdWVzWycyJ107CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgcmV0dXJuIGltcGxvZGUoJzonLCAkdGhpcy0+dmFsdWVzKTsKICAgICAgfQogICAgfQogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SW5wdXQoKSB7CiAgICAgIHJldHVybiBzZWxmOjpDcmVhdGVUaW1lU2VsZWN0KCR0aGlzLT5pZCwkdGhpcy0+bmFtZSwkdGhpcy0+Z2V0VmFsdWVzKCkpOwogICAgfQogICAgCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIENyZWF0ZVRpbWVTZWxlY3QoJGlkLCRuYW1lLCR2YWx1ZXMsICRwb3MgPSAwKSAgewogICAgICBpZiAoY291bnQoJHZhbHVlcykgPT0gMSkKICAgICAgewogICAgICAgIGlmIChzdHJwb3MoJHZhbHVlc1swXSwgJzonKSAhPT0gZmFsc2UpICR2YWx1ZXMgPSBleHBsb2RlKCc6JywkdmFsdWVzWzBdKTsKICAgICAgfQogICAgICAkaG91cnMgPSBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCRuYW1lLidbJy4kcG9zLiddJyxzZWxmOjpDcmVhdGVOdW1iZXJMaXN0KDIzKSxhcnJheSgkdmFsdWVzWzBdKSwxLCcnLGZhbHNlKTsKICAgICAgJG1pbnV0ZXMgPSBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCRuYW1lLidbJy4oJHBvcysxKS4nXScsc2VsZjo6Q3JlYXRlTnVtYmVyTGlzdCg1OSksYXJyYXkoJHZhbHVlc1sxXSksMSwnJyxmYWxzZSk7CiAgICAgICRzZWNvbmRzID0gc2VsZjo6Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwkbmFtZS4nWycuKCRwb3MrMikuJ10nLHNlbGY6OkNyZWF0ZU51bWJlckxpc3QoNTkpLGFycmF5KCR2YWx1ZXNbMl0pLDEsJycsZmFsc2UpOwogICAgICByZXR1cm4gJGhvdXJzIC4gJyA6ICcgLiAkbWludXRlcyAuICcgOiAnIC4gJHNlY29uZHM7CiAgICB9CiAgfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormValidator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIFRoaXMgY2xhc3MgYWltIHRvIGhhbmRsZSBDTVMgRm9ybXMgdmVyeSBkaWZmZXJlbnRseS4KICAgIAogICAgQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgPGN5YmVydG90b3BoZUBnbWFpbC5jb20+CiAgICBDb3B5cmlnaHRzOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgMjAxMgogICAgTGljZW5jZTogR1BMICAgIAogIAogICovCiAgCmNsYXNzIENNU0Zvcm1WYWxpZGF0b3IKewogIHByb3RlY3RlZCAkd2lkZ2V0OwogIHByb3RlY3RlZCAkdmFsaWRhdG9yOwogIHByb3RlY3RlZCAkcGFyYW1zOwogIAogIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgmJHdpZGdldCwkdmFsaWRhdG9yLCRwYXJhbXMpCiAgewogICAgJHRoaXMtPndpZGdldCA9ICR3aWRnZXQ7CiAgICAkdGhpcy0+dmFsaWRhdG9yID0gJHZhbGlkYXRvcjsKICAgICR0aGlzLT5wYXJhbXMgPSAkcGFyYW1zOwogICAgCiAgICByZXR1cm4gJHRoaXM7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBjaGVjaygpCiAgewogICAgc3dpdGNoKCR0aGlzLT52YWxpZGF0b3IpCiAgICB7CiAgICAgIGNhc2UgJ25vdF9lbXB0eSc6CiAgICAgICAgcmV0dXJuICR0aGlzLT5DaGVja05vdEVtcHR5KCk7CiAgICAgIGNhc2UgJ2VxdWFsX2ZpZWxkJzoKICAgICAgICByZXR1cm4gJHRoaXMtPkNoZWNrRXF1YWxGaWVsZCgpOwogICAgICBjYXNlICdlbWFpbCc6CiAgICAgICAgcmV0dXJuICR0aGlzLT5DaGVja0VtYWlsKCk7CiAgICAgIGNhc2UgJ3VuaXF1ZSc6CiAgICAgICAgcmV0dXJuICR0aGlzLT5DaGVja1VuaXF1ZSgpOwogICAgICBkZWZhdWx0OgogICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1Vua25vd24gZm9ybSB2YWxpZGF0b3IgIicuJHRoaXMtPnZhbGlkYXRvciAuJyIuJyk7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKICB9CiAgCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVycm9yTWVzc2FnZSgkbWVzc2FnZSwgJHZhbHVlKQogIHsKICAgIGlmKGlzX2FycmF5KCR0aGlzLT5wYXJhbXMpICYmIGlzc2V0KCR0aGlzLT5wYXJhbXNbJ2Vycm9yX21lc3NhZ2UnXSkgJiYgJHRoaXMtPnBhcmFtc1snZXJyb3JfbWVzc2FnZSddICE9ICcnKQogICAgewogICAgICByZXR1cm4gJHRoaXMtPnBhcmFtc1snZXJyb3JfbWVzc2FnZSddOwogICAgfQogICAgZWxzZQogICAgewogICAgICAkZXJyb3IgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NNU0Zvcm1zJyktPmxhbmcoJG1lc3NhZ2UsICR2YWx1ZSk7CiAgICAgIHJldHVybiAkZXJyb3I7CiAgICB9CiAgfQogIAogIHByb3RlY3RlZCBmdW5jdGlvbiBDaGVja1VuaXF1ZSgpCiAgewogICAgJHZhbHVlID0gJHRoaXMtPndpZGdldC0+Z2V0VmFsdWUoKTsKICAgIGlmIChjYWxsX3VzZXJfZnVuYygkdGhpcy0+cGFyYW1zLCAkdmFsdWUpICE9PSBudWxsKQogICAgewogICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5nZXRFcnJvck1lc3NhZ2UoJ2ZpZWxkIG5vdCB1bmlxdWUnLCAkdmFsdWUpKTsKICAgIH0KICAgIHJldHVybiB0cnVlOwogIH0KICAKICBwcm90ZWN0ZWQgZnVuY3Rpb24gQ2hlY2tOb3RFbXB0eSgpCiAgewogICAgJHZhbHVlcyA9ICR0aGlzLT53aWRnZXQtPmdldFZhbHVlcygpOwogICAgJHZhbHVlID0gJHRoaXMtPndpZGdldC0+Z2V0VmFsdWUoKTsKICAgIGlmIChpc19hcnJheSgkdmFsdWVzKSAmJiBjb3VudCgkdmFsdWVzKSA9PSAwKQogICAgewogICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5nZXRFcnJvck1lc3NhZ2UoJ2ZpZWxkX2Nhbm5vdF9iZV9lbXB0eScsICR0aGlzLT53aWRnZXQtPmdldEZyaWVuZGx5TmFtZSgpKSk7CiAgICB9CiAgICBlbHNlaWYoZW1wdHkoJHZhbHVlcykpCiAgICB7CiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPmdldEVycm9yTWVzc2FnZSgnZmllbGRfY2Fubm90X2JlX2VtcHR5JywgJHRoaXMtPndpZGdldC0+Z2V0RnJpZW5kbHlOYW1lKCkpKTsKICAgIH0KICAgIGVsc2VpZihlbXB0eSgkdmFsdWUpKQogICAgewogICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5nZXRFcnJvck1lc3NhZ2UoJ2ZpZWxkX2Nhbm5vdF9iZV9lbXB0eScsICR0aGlzLT53aWRnZXQtPmdldEZyaWVuZGx5TmFtZSgpKSk7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKICB9CiAgCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIENoZWNrRXF1YWxGaWVsZCgpCiAgewogICAgICAkdmFsdWUxID0gc2VyaWFsaXplKCR0aGlzLT53aWRnZXQtPmdldFZhbHVlcygpKTsKICAgICAgCiAgICAgIHRyeQogICAgICB7CiAgICAgICAgJHZhbHVlMiA9IHNlcmlhbGl6ZSgkdGhpcy0+d2lkZ2V0LT5nZXRGb3JtKCktPmdldFdpZGdldCgkdGhpcy0+cGFyYW1zKS0+Z2V0VmFsdWVzKCkpOwogICAgICB9CiAgICAgIGNhdGNoKEV4Y2VwdGlvbiAkZSkKICAgICAgewogICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPmdldEVycm9yTWVzc2FnZSgndW5rbm93biBmaWVsZCcsICR0aGlzLT5wYXJhbXMpKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgCiAgICAgIGlmICgkdmFsdWUxICE9ICR2YWx1ZTIpCiAgICAgIHsKICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5nZXRFcnJvck1lc3NhZ2UoJ2ZpZWxkcyBub3QgZXF1YWwnLCAkdGhpcy0+d2lkZ2V0LT5nZXRGcmllbmRseU5hbWUoKSwgJHRoaXMtPndpZGdldC0+Z2V0Rm9ybSgpLT5nZXRXaWRnZXQoJHRoaXMtPnBhcmFtcyktPmdldEZyaWVuZGx5TmFtZSgpKSk7CiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiB0cnVlOwogICAgCiAgfQogIAogIHByb3RlY3RlZCBmdW5jdGlvbiBDaGVja0VtYWlsKCkKICB7CiAgICAkZW1haWwgPSBpbXBsb2RlKCd8JywgJHRoaXMtPndpZGdldC0+Z2V0VmFsdWVzKCkpOwogICAgaWYgKCFzZWxmOjp2YWxpZEVtYWlsKCRlbWFpbCkpCiAgICB7CiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPmdldEVycm9yTWVzc2FnZSgnaW52YWxpZCBlbWFpbCcsICRlbWFpbCkpOwogICAgfQogICAgcmV0dXJuIHRydWU7CiAgfQogIC8vIEV4dGVybmFsIGZ1bmN0aW9ucwogIC8qKgogIFZhbGlkYXRlIGFuIGVtYWlsIGFkZHJlc3MuCiAgUHJvdmlkZSBlbWFpbCBhZGRyZXNzIChyYXcgaW5wdXQpCiAgUmV0dXJucyB0cnVlIGlmIHRoZSBlbWFpbCBhZGRyZXNzIGhhcyB0aGUgZW1haWwgCiAgYWRkcmVzcyBmb3JtYXQgYW5kIHRoZSBkb21haW4gZXhpc3RzLgogICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB2YWxpZEVtYWlsKCRlbWFpbCkKICB7CiAgICAgJGlzVmFsaWQgPSB0cnVlOwogICAgICRhdEluZGV4ID0gc3RycnBvcygkZW1haWwsICJAIik7CiAgICAgaWYgKGlzX2Jvb2woJGF0SW5kZXgpICYmICEkYXRJbmRleCkKICAgICB7CiAgICAgICAgJGlzVmFsaWQgPSBmYWxzZTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAkZG9tYWluID0gc3Vic3RyKCRlbWFpbCwgJGF0SW5kZXgrMSk7CiAgICAgICAgJGxvY2FsID0gc3Vic3RyKCRlbWFpbCwgMCwgJGF0SW5kZXgpOwogICAgICAgICRsb2NhbExlbiA9IHN0cmxlbigkbG9jYWwpOwogICAgICAgICRkb21haW5MZW4gPSBzdHJsZW4oJGRvbWFpbik7CiAgICAgICAgaWYgKCRsb2NhbExlbiA8IDEgfHwgJGxvY2FsTGVuID4gNjQpCiAgICAgICAgewogICAgICAgICAgIC8vIGxvY2FsIHBhcnQgbGVuZ3RoIGV4Y2VlZGVkCiAgICAgICAgICAgJGlzVmFsaWQgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoJGRvbWFpbkxlbiA8IDEgfHwgJGRvbWFpbkxlbiA+IDI1NSkKICAgICAgICB7CiAgICAgICAgICAgLy8gZG9tYWluIHBhcnQgbGVuZ3RoIGV4Y2VlZGVkCiAgICAgICAgICAgJGlzVmFsaWQgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoJGxvY2FsWzBdID09ICcuJyB8fCAkbG9jYWxbJGxvY2FsTGVuLTFdID09ICcuJykKICAgICAgICB7CiAgICAgICAgICAgLy8gbG9jYWwgcGFydCBzdGFydHMgb3IgZW5kcyB3aXRoICcuJwogICAgICAgICAgICRpc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHByZWdfbWF0Y2goJy9cXC5cXC4vJywgJGxvY2FsKSkKICAgICAgICB7CiAgICAgICAgICAgLy8gbG9jYWwgcGFydCBoYXMgdHdvIGNvbnNlY3V0aXZlIGRvdHMKICAgICAgICAgICAkaXNWYWxpZCA9IGZhbHNlOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICghcHJlZ19tYXRjaCgnL15bQS1aYS16MC05XFwtXFwuXSskLycsICRkb21haW4pKQogICAgICAgIHsKICAgICAgICAgICAvLyBjaGFyYWN0ZXIgbm90IHZhbGlkIGluIGRvbWFpbiBwYXJ0CiAgICAgICAgICAgJGlzVmFsaWQgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAocHJlZ19tYXRjaCgnL1xcLlxcLi8nLCAkZG9tYWluKSkKICAgICAgICB7CiAgICAgICAgICAgLy8gZG9tYWluIHBhcnQgaGFzIHR3byBjb25zZWN1dGl2ZSBkb3RzCiAgICAgICAgICAgJGlzVmFsaWQgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZgogICghcHJlZ19tYXRjaCgnL14oXFxcXC58W0EtWmEtejAtOSEjJSZgXz1cXC8kXCcqKz9ee318fi4tXSkrJC8nLAogICAgICAgICAgICAgICAgICAgc3RyX3JlcGxhY2UoIlxcXFwiLCIiLCRsb2NhbCkpKQogICAgICAgIHsKICAgICAgICAgICAvLyBjaGFyYWN0ZXIgbm90IHZhbGlkIGluIGxvY2FsIHBhcnQgdW5sZXNzIAogICAgICAgICAgIC8vIGxvY2FsIHBhcnQgaXMgcXVvdGVkCiAgICAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvXiIoXFxcXCJ8W14iXSkrIiQvJywKICAgICAgICAgICAgICAgc3RyX3JlcGxhY2UoIlxcXFwiLCIiLCRsb2NhbCkpKQogICAgICAgICAgIHsKICAgICAgICAgICAgICAkaXNWYWxpZCA9IGZhbHNlOwogICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCRpc1ZhbGlkICYmICEoY2hlY2tkbnNycigkZG9tYWluLCJNWCIpIHx8IAogICBjaGVja2Ruc3JyKCRkb21haW4sIkEiKSkpCiAgICAgICAgewogICAgICAgICAgIC8vIGRvbWFpbiBub3QgZm91bmQgaW4gRE5TCiAgICAgICAgICAgJGlzVmFsaWQgPSBmYWxzZTsKICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiAkaXNWYWxpZDsKICB9Cn0=]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormWidget.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIFRoaXMgY2xhc3MgYWltIHRvIGhhbmRsZSBDTVMgRm9ybXMgdmVyeSBkaWZmZXJlbnRseS4KICAgIAogICAgQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgPGN5YmVydG90b3BoZUBnbWFpbC5jb20+CiAgICBDb3B5cmlnaHRzOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgMjAxMgogICAgTGljZW5jZTogR1BMICAgIAogIAogICovCgpjbGFzcyBDTVNGb3JtV2lkZ2V0ICAvL2V4dGVuZHMgQ21zT2JqZWN0CnsKICBwcm90ZWN0ZWQgJHdpZGdldDsKICAKICBwdWJsaWMgc3RhdGljICRmaWVsZHMgPSBhcnJheSgKICAgICd0ZXh0JyAgICAgICA9PiBhcnJheSgndGl0bGUnID0+ICdUZXh0IGZpZWxkJywgJ2FkbycgPT4gJ0MoMjU1KScpLAogICAgJ3RleHRhcmVhJyAgID0+IGFycmF5KCd0aXRsZScgPT4gJ1RleHQgYXJlYScsICAgJ2FkbycgPT4gJ1hMJyksCiAgICAnY2hlY2tib3gnICAgPT4gYXJyYXkoJ3RpdGxlJyA9PiAnQ2hlY2tib3gnLCAgICdhZG8nID0+ICdJJyksCiAgICAnc2VsZWN0JyAgICAgPT4gYXJyYXkoJ3RpdGxlJyA9PiAnU2VsZWN0JywgICAgICdhZG8nID0+ICdDKDI1NSknKSwKICAgICdwYXNzd29yZCcgID0+IGFycmF5KCd0aXRsZScgPT4gJ1Bhc3N3b3JkJywgICAnYWRvJyA9PiAnQygyNTUpJyksCiAgICAnZGF0ZScgICAgICAgPT4gYXJyYXkoJ3RpdGxlJyA9PiAnRGF0ZScsICAgICAgICdhZG8nID0+ICdEVCcpLAogICAgJ3RpbWUnICAgICAgID0+IGFycmF5KCd0aXRsZScgPT4gJ1RpbWUnLCAgICAgICAnYWRvJyA9PiAnRFQnKSwKICAgICdkYXRldGltZScgICAgICAgPT4gYXJyYXkoJ3RpdGxlJyA9PiAnRGF0ZSAmIFRpbWUnLAknYWRvJyA9PiAnSScpLAogICAgJ2ZpbGUnICAgICAgID0+IGFycmF5KCd0aXRsZScgPT4gJ0ZpbGUnLCAgICAgICAnYWRvJyA9PiAnQygyNTUpJykpOwogIAogIC8vIFJFRkFDVE9SCiAgCiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCYkZm9ybSwgJGlkLCAkbW9kdWxlX25hbWUsICRuYW1lLCAkdHlwZSwkc2V0dGluZ3M9YXJyYXkoKSkgewogICAgCiAgICAkdGhpcy0+d2lkZ2V0ID0gJHRoaXMtPmdldFdpZGdldE9iamVjdCgkdHlwZSkKICAgICAgICAgICAgICAgICAgICAgICAgIC0+c2V0dXAoJGlkLCAkbmFtZSwgJGZvcm0sICRtb2R1bGVfbmFtZSwgJHNldHRpbmdzKQogICAgICAgICAgICAgICAgICAgICAgICAgLT5pbml0KCk7CiAgICAvLyB2YXJfZHVtcCgkdGhpcy0+d2lkZ2V0KTsKICAgIC8vIERFUFJFQ0FURUQKICAgIC8vICR0aGlzLT5mb3JtID0gJGZvcm07CiAgICAvLyAkdGhpcy0+aWQgPSAkaWQ7CiAgICAvLyAkdGhpcy0+bW9kdWxlX25hbWUgPSAkbW9kdWxlX25hbWU7CiAgICAvLyAkdGhpcy0+bmFtZSA9IGlzc2V0KCRzZXR0aW5nc1snbmFtZSddKT8kc2V0dGluZ3NbJ25hbWUnXTokbmFtZTsKICAgIC8vICR0aGlzLT50eXBlID0gJHR5cGU7CiAgICAvLyAkdGhpcy0+c2V0dGluZ3MgPSAkc2V0dGluZ3M7CiAgICAvLyAvLyAgLS0KICAgIC8vIAogICAgLy8gJHRoaXMtPmluaXQoKTsKICAgIAogICAgcmV0dXJuICR0aGlzOwogIH0KICAKICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0V2lkZ2V0T2JqZWN0KCR0eXBlKQogIHsKICAgIHN3aXRjaCgkdHlwZSkKICAgIHsKICAgICAgY2FzZSAndGV4dCc6CiAgICAgICAgcmV0dXJuIG5ldyBDTVNGb3JtSW5wdXRUZXh0KCk7ICAgICAgCiAgICAgIGNhc2UgJ2hpZGRlbic6CiAgICAgICAgcmV0dXJuIG5ldyBDTVNGb3JtSW5wdXRIaWRkZW4oKTsgICAgICAKICAgICAgY2FzZSAnc2VsZWN0JzoKICAgICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dFNlbGVjdCgpOyAgICAgIAogICAgICBjYXNlICdwYWdlcyc6CiAgICAgICAgcmV0dXJuIG5ldyBDTVNGb3JtSW5wdXRQYWdlcygpOyAgICAgIAogICAgICBjYXNlICdjb3VudHJpZXMnOgogICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0Q291bnRyaWVzKCk7ICAgICAgCiAgICAgIGNhc2UgJ3RleHRhcmVhJzoKICAgICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dFRleHRhcmVhKCk7ICAgICAgCiAgICAgIGNhc2UgJ2NvZGVhcmVhJzoKICAgICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dFN5bnRheGFyZWEoKTsgICAgICAKICAgICAgY2FzZSAnZGF0ZSc6CiAgICAgICAgcmV0dXJuIG5ldyBDTVNGb3JtSW5wdXREYXRlKCk7CgkJCWNhc2UgJ2RhdGV0aW1lJzoKICAgICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dERhdGVUaW1lKCk7CiAgICAgIGNhc2UgJ3RpbWUnOgogICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0VGltZSgpOwogICAgICBjYXNlICdjaGVja2JveCc6CiAgICAgICAgcmV0dXJuIG5ldyBDTVNGb3JtSW5wdXRDaGVja2JveCgpOwogICAgICBjYXNlICdwYXNzd29yZCc6CiAgICAgICAgcmV0dXJuIG5ldyBDTVNGb3JtSW5wdXRQYXNzd29yZCgpOwogICAgICBjYXNlICdmaWxlJzoKICAgICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dEZpbGUoKTsKICAgICAgY2FzZSAnc3RhdGljJzoKICAgICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dCgpOwogICAgICBkZWZhdWx0OgogICAgICAgICRjbGFzcyA9ICdDTVNGb3JtSW5wdXQnIC4gJHR5cGU7CiAgICAgICAgaWYoY2xhc3NfZXhpc3RzKCRjbGFzcykpCiAgICAgICAgcmV0dXJuIG5ldyAkY2xhc3MoKTsKICAgICAgICAkY2xhc3MgPSAnQ01TRm9ybUlucHV0JyAuIHVjZmlyc3QoJHR5cGUpOwogICAgICAgIGlmKGNsYXNzX2V4aXN0cygkY2xhc3MpKQogICAgICAgIHJldHVybiBuZXcgJGNsYXNzKCk7CiAgICAgICAgcmV0dXJuIG5ldyBDTVNGb3JtSW5wdXQoKTsKICAgIH0KICB9CiAgCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFdpZGdldCgpCiAgewogICAgaWYgKGlzX29iamVjdCgkdGhpcy0+d2lkZ2V0KSkKICAgIHsKICAgICAgcmV0dXJuICR0aGlzLT53aWRnZXQ7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0KCk7IC8vIFNvbWV0aGluZyB3aGVudCB3cm9uZyBkdXJpbmcgaW5pdCBUT0RPOkZJWAogICAgfQogIH0KICAKICAKICAvLyBPTEQgV0FZICoqKioqKioqKioqKioqKioqCiAgCiAgLy8gU2V0dGluZ3MKICBwcm90ZWN0ZWQgJGlkOyAvLyBUaGUgZm9ybSBJRAogIHByb3RlY3RlZCAkbW9kdWxlX25hbWU7CiAgcHJvdGVjdGVkICRuYW1lOyAvLyBUaGUgaW5wdXQgbmFtZQogIHByb3RlY3RlZCAkdHlwZTsKICBwcm90ZWN0ZWQgJGlucHV0OwogIHByb3RlY3RlZCAkdmFsdWVzID0gYXJyYXkoKTsKICBwcm90ZWN0ZWQgJHNldHRpbmdzID0gYXJyYXkoKTsKICBwcm90ZWN0ZWQgJGZvcm1fZXJyb3JzOwogIHByb3RlY3RlZCAkc2hvd19wcmlvcml0eSA9IGZhbHNlOwogIC8vICBwcm90ZWN0ZWQgJHZhbGlkYXRpb25zID0gYXJyYXkoKTsKICBwcm90ZWN0ZWQgJHNob3duZWQgPSBmYWxzZTsKICBwcm90ZWN0ZWQgJGZvcm07CiAgCiAgcHJvdGVjdGVkICRpc192YWxpZCA9IHRydWU7CiAgcHJvdGVjdGVkICR0ZW1wbGF0ZSA9ICclSU5QVVQlJzsKCiAgcHVibGljIHN0YXRpYyAkY291bnRyaWVzID0gYXJyYXkoKTsgLy9ERVBSRUNBVEVEIENNU0Zvcm1JbnB1dENvdW50cmllczo6JGNvdW50cmllczsKCgogIHB1YmxpYyBmdW5jdGlvbiBfX2dldCgkbmFtZSkgIHsKICAgIGlmKGlzc2V0KCR0aGlzLT4kbmFtZSkpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT4kbmFtZTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICAkdHJhY2UgPSBkZWJ1Z19iYWNrdHJhY2UoKTsKICAgICAgICB0cmlnZ2VyX2Vycm9yKAogICAgICAgICAgICAnVW5kZWZpbmVkIHByb3BlcnR5IHZpYSBfX2dldCgpOiAnIC4gJG5hbWUgLgogICAgICAgICAgICAnIGluICcgLiAkdHJhY2VbMF1bJ2ZpbGUnXSAuCiAgICAgICAgICAgICcgb24gbGluZSAnIC4gJHRyYWNlWzBdWydsaW5lJ10sCiAgICAgICAgICAgIEVfVVNFUl9OT1RJQ0UpOwogICAgICAgIHJldHVybiBudWxsOwogICAgfQogIH0KCiAgLy8gU0VUVVAKICBwdWJsaWMgZnVuY3Rpb24gaGlkZSgpICB7CiAgICAKICAgICR0aGlzLT5nZXRXaWRnZXQoKS0+c2V0U2V0dGluZygnbGFiZWwnLCcnKTsKICAgIAogICAgJHdpZGdldCA9IG5ldyBDTVNGb3JtSW5wdXRIaWRkZW4oKTsKICAgICR3aWRnZXQtPnNldHVwKAogICAgICAgICAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPmlkLAogICAgICAgICAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPm5hbWUsCiAgICAgICAgICAgICR0aGlzLT5nZXRXaWRnZXQoKS0+Zm9ybSwKICAgICAgICAgICAgJHRoaXMtPmdldFdpZGdldCgpLT5tb2R1bGVfbmFtZSwKICAgICAgICAgICAgJHRoaXMtPmdldFdpZGdldCgpLT5zZXR0aW5ncwogICAgICAgICAgKQogICAgICAgICAgLT5pbml0KCkKICAgICAgICAgIC0+c2V0VmFsdWVzKCR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0VmFsdWVzKCkpOwogICAgJHRoaXMtPndpZGdldCA9ICR3aWRnZXQ7CiAgfQoKICAvLyBGSUxMCgogIAogIC8qIENIRUNLIEdURCAgKi8KICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW5pdCgpIHsKICAgICR0aGlzLT5pbml0VmFsdWVzKCk7CiAgfQogIAogIC8qIEdURCAqLwogIHByb3RlY3RlZCBmdW5jdGlvbiBpbml0VmFsdWVzKCkgeyAgCiAgICAgIAogICAgICBzd2l0Y2goJHRoaXMtPnR5cGUpCiAgICAgIHsKICAgICAgICBjYXNlICdjaGVja2JveCc6CiAgICAgICAgICBpZigKICAgICAgICAgICAgIWlzc2V0KCRfUkVRVUVTVFskdGhpcy0+aWQuJHRoaXMtPm5hbWVdKQogICAgICAgICAgICAmJgogICAgICAgICAgICAoCiAgICAgICAgICAgICAgaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZC4nc3VibWl0J10pCiAgICAgICAgICAgICAgfHwKICAgICAgICAgICAgICBpc3NldCgkX1JFUVVFU1RbJHRoaXMtPmlkLidhcHBseSddKQogICAgICAgICAgICApCgogICAgICAgICAgKQogICAgICAgICAgewogICAgICAgICAgICAvLyBDYXNlIHdoZW4gY2hlY2tib3ggaXMgdW5jaGVja2VkIGFuZCBmb3JtIGlzIHN1Ym1pdHRlZCwgd2Ugc2hvdWxkIGVtcHR5IHRoZSB2YWx1ZQogICAgICAgICAgICAkdGhpcy0+c2V0VmFsdWVzKCk7ICAgICAgICAgICAgCiAgICAgICAgICB9CiAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFskdGhpcy0+aWQuJHRoaXMtPm5hbWVdKSkKICAgICAgICAgIHsKICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRfUkVRVUVTVFskdGhpcy0+aWQuJHRoaXMtPm5hbWVdKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoJF9SRVFVRVNUWyR0aGlzLT5pZC4kdGhpcy0+bmFtZV0pOwogICAgICAgICAgICB9IAogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAkdGhpcy0+c2V0VmFsdWVzKGh0bWxfZW50aXR5X2RlY29kZSgkX1JFUVVFU1RbJHRoaXMtPmlkLiR0aGlzLT5uYW1lXSkpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlaWYoaXNzZXQoJHRoaXMtPnNldHRpbmdzWyd2YWx1ZSddKSkKICAgICAgICAgIHsKICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlcygkdGhpcy0+c2V0dGluZ3NbJ3ZhbHVlJ10pOwogICAgICAgICAgfQogICAgICAgICAgZWxzZWlmKAogICAgICAgICAgICBpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddKSAmJiAhaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZC4nc3VibWl0J10pICYmICFpc3NldCgkX1JFUVVFU1RbJHRoaXMtPmlkLidhcHBseSddKSkKICAgICAgICAgIHsKICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlcygkdGhpcy0+ZmV0Y2hWYWx1ZXMoKSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlaWYoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydwcmVmZXJlbmNlJ10pICYmIGNtc191dGlsczo6Z2V0X21vZHVsZSgkdGhpcy0+bW9kdWxlX25hbWUpLT5nZXRQcmVmZXJlbmNlKCR0aGlzLT5zZXR0aW5nc1sncHJlZmVyZW5jZSddKSAhPSAnJykKICAgICAgICAgIHsKICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlcyhjbXNfdXRpbHM6OmdldF9tb2R1bGUoJHRoaXMtPm1vZHVsZV9uYW1lKS0+Z2V0UHJlZmVyZW5jZSgkdGhpcy0+c2V0dGluZ3NbJ3ByZWZlcmVuY2UnXSkpOwogICAgICAgICAgICAvLyR0aGlzLT5zZXRWYWx1ZXMoY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSktPmdldFByZWZlcmVuY2UoJHRoaXMtPnNldHRpbmdzWydwcmVmZXJlbmNlJ10pKTsKICAgICAgICAgIH0KCiAgICAgICAgICBpZihpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ2RlZmF1bHRfdmFsdWUnXSkgJiYgISR0aGlzLT5mb3JtLT5pc1Bvc3RlZCgpKSAKICAgICAgICAgIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5pc0VtcHR5KCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAkdGhpcy0+c2V0VmFsdWVzKCR0aGlzLT5zZXR0aW5nc1snZGVmYXVsdF92YWx1ZSddKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgCiAgICAgICAgICBicmVhazsKICAgICAgfQogIH0KCiAgLyogR1REICovCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIGZldGNoVmFsdWVzKCkgIHsKICAgICAgaWYoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXSkgJiYgaXNfb2JqZWN0KCR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10pKQogICAgICB7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snZ2V0X21ldGhvZCddKSkKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXS0+eyR0aGlzLT5zZXR0aW5nc1snZ2V0X21ldGhvZCddfSgpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgJG5hbWUgPSBpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ2ZpZWxkX25hbWUnXSk/JHRoaXMtPnNldHRpbmdzWydmaWVsZF9uYW1lJ106JHRoaXMtPm5hbWU7CiAgICAKICAgICAgICAgIGlmKG1ldGhvZF9leGlzdHMoJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXSwgJ2dldCcpKQogICAgICAgICAgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXS0+Z2V0KCRuYW1lKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UKICAgICAgICAgIHsKICAgICAgICAgICAgICB0cnkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXS0+JG5hbWU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGNhdGNoKEV4Y2VwdGlvbiAkZSkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgLy8gIGRpZSgndW5hYmxlIHRvIGRvJyk7IC8vIFRPRE86IFRyZWF0aCBlcnJvcgogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9ICAgICAgCiAgICAgIH0KICAgICAgcmV0dXJuIG51bGw7CiAgfQogIAogIC8vIExJTktFRCBUTyBXSURHRVRTICAKICAKCiAgCiAgcHVibGljIGZ1bmN0aW9uIHNob3coJHRlbXBsYXRlID0gbnVsbCwgJGZvcmNlID0gZmFsc2UpICB7CiAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPnNob3coJHRlbXBsYXRlLCRmb3JjZSk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkgIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPl9fdG9TdHJpbmcoKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGdldExhYmVsKCkgIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldExhYmVsKCk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBnZXRMYWJlbFRhZygpIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldExhYmVsVGFnKCk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBnZXRUaXBzKCkgewogICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0VGlwcygpOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gcmVmcmVzaCgpIHsKICAgIC8vIFRPRE86IENoZWNrIGNvbnNlcXVlbmNlcwogICAgJHRoaXMtPmdldFdpZGdldCgpLT5pbml0KCk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lKCkgIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldE5hbWUoKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGdldFNldHRpbmcoJHNldHRpbmcsICRkZWZhdWx0X3ZhbHVlID0gbnVsbCkgewogICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0U2V0dGluZygkc2V0dGluZywgJGRlZmF1bHRfdmFsdWUpOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gc2V0U2V0dGluZygkc2V0dGluZywgJHZhbHVlKSAgewogICAgJHRoaXMtPmdldFdpZGdldCgpLT5zZXRTZXR0aW5nKCRzZXR0aW5nLCAkdmFsdWUpOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gZ2V0Rm9ybSgpIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldEZvcm0oKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGdldEZyaWVuZGx5TmFtZSgpIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldEZyaWVuZGx5TmFtZSgpOwogIH0KICAgIAogIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpICB7ICAKICAgIGlmICghZW1wdHkoJHRoaXMtPmlucHV0KSkKICAgIHsKICAgICAgcmV0dXJuICR0aGlzLT5pbnB1dDsKICAgIH0KICAgIAogICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0SW5wdXQoKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIENyZWF0ZUlucHV0VGV4dCgpIAogIHsKICAgICRpbnB1dCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkdGhpcy0+bW9kdWxlX25hbWUpLT5DcmVhdGVJbnB1dFRleHQoJHRoaXMtPmlkLCAkdGhpcy0+bmFtZSwgJHRoaXMtPmdldFZhbHVlKCksIGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snc2l6ZSddKT8kdGhpcy0+c2V0dGluZ3NbJ3NpemUnXTo4MCwgaXNzZXQoJHRoaXMtPnNldHRpbmdzWydtYXhsZW5ndGgnXSk/JHRoaXMtPnNldHRpbmdzWydtYXhsZW5ndGgnXToyNTUpOwogICAgIAogICAgaWYoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydjbGFzc25hbWUnXSkpCiAgICB7CiAgICAgIC8vIE92ZXJsb2FkIHRoaXMgIiMjQCHCpyQjIiBjbGFzcyBzeXN0ZW0KICAgICAgLy8gSW4gZnJlbmNoIGluIHRoZSB0ZXh0OiBOb20gZGUgRGlldSBkZSBwdXRhaW4gZGUgYm9yZGVsIGRlIG1lcmRlIGRlIHNhbG9wZXJpZSBkZSBjb25uYXJkIGQnZW5jdWzDqSBkZSB0YSBtw6hyZQogICAgICAvLyAoaHR0cDovL3d3dy5pbWRiLmNvbS90aXRsZS90dDAyMzQyMTUvdHJpdmlhP3RhYj10ciZpdGVtPXRyMDc1MjM4MikKICAgICAgLy8gKFNvcnJ5IGZvciBwcnVkZSBlYXJzLCB0aGlzIGlzIGp1c3QgYSBjb21tZW50IGluIGEgc291cmNlIGNvZGUuLi4pCiAgICAgICRpbnB1dCA9IHN0cl9yZXBsYWNlKCdjbGFzcz0iY21zX3RleHRmaWVsZCInLCAnY2xhc3M9IicuJHRoaXMtPnNldHRpbmdzWydjbGFzc25hbWUnXS4nIicsICRpbnB1dCk7CiAgICB9CiAgICAKICAgIHJldHVybiAkaW5wdXQ7CiAgfQoKICAvLyBQUk9DRVNTCiAgCiAgcHVibGljIGZ1bmN0aW9uIHByb2Nlc3MoJHNhdmUgPSB0cnVlKSB7CiAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPnByb2Nlc3MoJHNhdmUpOwogIH0KICAKICAvLyBWQUxJREFUSU9OCiAgCiAgcHVibGljIGZ1bmN0aW9uIGlzVmFsaWQoKSB7CiAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5pc1ZhbGlkKCk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBzZXRWYWxpZGF0b3IoJHZhbGlkYXRvciwgJHBhcmFtcyA9IGFycmF5KCkpIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPnNldFZhbGlkYXRvcigkdmFsaWRhdG9yLCAkcGFyYW1zKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGFkZFZhbGlkYXRvcigkdmFsaWRhdG9yLCAkcGFyYW1zID0gYXJyYXkoKSkgewogICAgJHRoaXMtPmdldFdpZGdldCgpLT5hZGRWYWxpZGF0b3IoJHZhbGlkYXRvciwgJHBhcmFtcyk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVWYWxpZGF0b3IoJHZhbGlkYXRvcikgewogICAgJHRoaXMtPmdldFdpZGdldCgpLT5yZW1vdmVWYWxpZGF0b3IoJHZhbGlkYXRvcik7CiAgfQogIAogIC8vIEFDQ0VTUwogIAogIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZSgpICB7CiAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5nZXRWYWx1ZSgpOyAKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHNldFZhbHVlKCR2YWx1ZSwgJGtleSA9IDApICB7CiAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPnNldFZhbHVlKCR2YWx1ZSwka2V5KTsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVWYWx1ZUlmRXF1YWwoJHZhbHVlKSAgewogICAgJHRoaXMtPmdldFdpZGdldCgpLT5yZW1vdmVWYWx1ZUlmRXF1YWwoJHZhbHVlKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlcygpIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldFZhbHVlcygpOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gc2V0VmFsdWVzKCR2YWx1ZXMgPSBhcnJheSgpKSAgewogICAgJHRoaXMtPmdldFdpZGdldCgpLT5zZXRWYWx1ZXMoJHZhbHVlcyk7ICAKICB9ICAKICAKICBwdWJsaWMgZnVuY3Rpb24gc2V0RGVmYXVsdFZhbHVlcygkdmFsdWVzKSB7CiAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPnNldERlZmF1bHRWYWx1ZXMoJHZhbHVlcyk7CiAgfQogICAgCiAgcHVibGljIGZ1bmN0aW9uIGlzRW1wdHkoKSB7CiAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5pc0VtcHR5KCk7CiAgfQogICAgCiAgcHVibGljIGZ1bmN0aW9uIGdldFN0cmluZ1ZhbHVlKCkgIHsKICAgIC8vREVQUkVDQVRFRAogICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0VmFsdWUoKTsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZXNUb1N0cmluZygpIHsKICAgIC8vIERFUFJFQ0FURUQKICAgIHJldHVybiAoc3RyaW5nKSR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0VmFsdWUoKTsKICB9CiAgCiAgLy8gcHVibGljIGZ1bmN0aW9uIGlzRW1wdHlWYWx1ZXMoKSB7CiAgLy8gICAvL0RFUFJFQ0FURUQKICAvLyAgIAogIC8vICAgaWYgKGlzX2FycmF5KCR0aGlzLT52YWx1ZXMpKQogIC8vICAgewogIC8vICAgICByZXR1cm4gJHRoaXMtPmlzRW1wdHkoKTsKICAvLyAgIH0KICAvLyAgIGVsc2VpZihlbXB0eSgkdGhpcy0+dmFsdWVzKSkKICAvLyAgIHsKICAvLyAgICAgcmV0dXJuIHRydWU7CiAgLy8gICB9CiAgLy8gICByZXR1cm4gZmFsc2U7CiAgLy8gfQogIAogIC8vIERJVkVSUwogIAogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0RmllbGRzTGlzdCgpICB7CiAgICAkbGlzdCA9IGFycmF5KCk7CiAgICBmb3JlYWNoKHNlbGY6OiRmaWVsZHMgYXMgJHR5cGUgPT4gJGZpZWxkKQogICAgewogICAgICAkbGlzdFskdHlwZV0gPSAkZmllbGRbJ3RpdGxlJ107CiAgICB9CiAgICByZXR1cm4gJGxpc3Q7CiAgfQogIAogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0QWRvVHlwZSgkdHlwZSkgIHsKICAgIGlmIChpc3NldChzZWxmOjokZmllbGRzWyR0eXBlXVsnYWRvJ10pKQogICAgewogICAgICByZXR1cm4gc2VsZjo6JGZpZWxkc1skdHlwZV1bJ2FkbyddOwogICAgfQogICAgZWxzZQogICAgewogICAgICByZXR1cm4gJ0MoMjU1KSc7IC8vIEJldHRlciB0aGFuIG5vdGhpbmcuLi4KICAgIH0KICB9CiAgICAgICAgCiAgLy8gVG9vbHMgKERFUFJFQ0FURUQgPT0+IFNFRSBDTEFTU0VTKQogIAogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0UGFnZXNMaXN0KCRpZCwkbmFtZSwkdmFsdWUsJHNldHRpbmdzID0gYXJyYXkoKSkgewogICAgCiAgICAkcGFnZXMgPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5HZXRBbGxDb250ZW50KCk7CiAgICAkYXJyYXkgPSBhcnJheSgpOwogICAgCiAgICBpZiAoaXNzZXQoJHNldHRpbmdzWydjaGlsZHJlbm9mJ10pKQogICAgewogICAgICAkY2hpbGRyZW5vZiA9IHNlbGY6OmdldFBhZ2VJZCgkc2V0dGluZ3NbJ2NoaWxkcmVub2YnXSk7CiAgICB9CiAgCiAgICBpZiAoaXNzZXQoJHNldHRpbmdzWydzdGFydF9wYWdlJ10pKQogICAgewogICAgICAkc3RhcnRfcGFnZSA9IHNlbGY6OmdldFBhZ2VJZCgkc2V0dGluZ3NbJ3N0YXJ0X3BhZ2UnXSk7CiAgICB9CiAgICAKICAgIGZvcmVhY2goJHBhZ2VzIGFzICRwYWdlKQogICAgewogICAgICBpZiAoCiAgICAgICAgKCFpc3NldCgkc3RhcnRfcGFnZSkgJiYgIWlzc2V0KCRjaGlsZHJlbm9mKSkgCiAgICAgICAgfHwKICAgICAgICAoaXNzZXQoJGNoaWxkcmVub2YpICYmICgkcGFnZS0+UGFyZW50SWQoKSA9PSAkY2hpbGRyZW5vZikpIC8vIExpc3Qgb2YgYWxsIGNoaWxkcmVucwogICAgICAgIHx8CiAgICAgICAgKGlzc2V0KCRzdGFydF9wYWdlKSAmJiAoc3RycG9zKCRwYWdlLT5JZEhpZXJhcmNoeSgpLCAkc3RhcnRfcGFnZS4nLicpID09PSAwKSkgLy8gTGlzdCBvZiBhbGwgZGVzY2VuZGFudHMKICAgICAgICApCiAgICAgIHsKICAgICAgICAkYXJyYXlbJHBhZ2UtPklkKCldID0gJHBhZ2UtPkhpZXJhcmNoeSgpLicuIC0gJy4kcGFnZS0+TmFtZSgpOwogICAgICB9CiAgICAgIAogICAgfQogICAgICAgIAogICAgcmV0dXJuICRhcnJheTsKICB9CiAgCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRQYWdlSWQoJGFsaWFzKSAgewogICAgJG1hbmFnZXIgPSBjbXNtcygpLT5HZXRIaWVyYXJjaHlNYW5hZ2VyKCk7CiAgICAkbm9kZSA9ICRtYW5hZ2VyLT5zdXJlR2V0Tm9kZUJ5QWxpYXMoJGFsaWFzKTsKICAgIGlmICgkbm9kZSkgewogICAgICAgICRjb250ZW50ID0gJG5vZGUtPkdldENvbnRlbnQoKTsKICAgICAgICBpZiAoJGNvbnRlbnQpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gJGNvbnRlbnQtPklkKCk7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICAkbm9kZSA9ICRtYW5hZ2VyLT5zdXJlR2V0Tm9kZUJ5SWQoJGFsaWFzKTsKICAgICAgICBpZiAoJG5vZGUpIHsKICAgICAgICAgIHJldHVybiAkYWxpYXM7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIG51bGw7CiAgfQogIAogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlUGFnZVNlbGVjdCgkaWQsJG5hbWUsJHZhbHVlLCRzZXR0aW5ncyA9IGFycmF5KCkpIHsKICAgICRwYWdlcyA9IGNtc21zKCktPkdldENvbnRlbnRPcGVyYXRpb25zKCktPkdldEFsbENvbnRlbnQoKTsKICAgIAogICAgJGh0bWwgPSAnPHNlbGVjdCBuYW1lPSInLiRpZC4kbmFtZS4nIj48b3B0aW9uPicuY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDTVNGb3JtcycpLT5sYW5nKCdzZWxlY3Qgb25lJykuJzwvb3B0aW9uPic7CiAgICAKICAgIGZvcmVhY2goJHBhZ2VzIGFzICRwYWdlKQogICAgewogICAgICAkaHRtbCAuPSAnPG9wdGlvbiB2YWx1ZT0iJyAuICRwYWdlLT5JZCgpIC4gJyInOwogICAgICAKICAgICAgaWYoJHZhbHVlID09ICRwYWdlLT5JZCgpKQogICAgICB7CiAgICAgICAgJGh0bWwgLj0gJyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzsKICAgICAgfSAgICAgIAogICAgICAKICAgICAgJGh0bWwgLj0gJz4nIC4gJHBhZ2UtPkhpZXJhcmNoeSgpLicuIC0gJy4kcGFnZS0+TmFtZSgpIC4gJzwvb3B0aW9uPic7CiAgICB9CiAgICAKICAgICRodG1sIC49ICc8L3NlbGVjdD4nOyAgICAKICAgIAogICAgcmV0dXJuICRodG1sOwogIH0KICAgIAogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRGF0ZVNlbGVjdCgkaWQsJG5hbWUsJHZhbHVlcywkc2V0dGluZ3MpICB7CiAgICBpZiAoY291bnQoJHZhbHVlcykgPT0gMSkKICAgIHsKICAgICAgaWYgKHN0cnBvcygkdmFsdWVzWzBdLCAnLScpICE9PSBmYWxzZSkgJHZhbHVlcyA9IGV4cGxvZGUoJy0nLCR2YWx1ZXNbMF0pOwogICAgfQogICAgJHN0YXJ0X3llYXIgPSBpc3NldCgkc2V0dGluZ3NbJ3N0YXJ0X3llYXInXSk/JHNldHRpbmdzWydzdGFydF95ZWFyJ106ZGF0ZSgnWScpOwogICAgJG51bWJlcl95ZWFycyA9IGlzc2V0KCRzZXR0aW5nc1snbnVtYmVyX3llYXJzJ10pPyRzZXR0aW5nc1snbnVtYmVyX3llYXJzJ106MjA7CiAgICAkZW5kX3llYXIgPSAkc3RhcnRfeWVhciArICRudW1iZXJfeWVhcnM7CiAgICAKICAgICR5ZWFyID0gc2VsZjo6Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwkbmFtZS4nWzBdJyxzZWxmOjpDcmVhdGVOdW1iZXJMaXN0KCRlbmRfeWVhciwkc3RhcnRfeWVhciksYXJyYXkoJHZhbHVlc1swXSksMSwnJyxmYWxzZSk7CiAgICAkbW9udGggPSBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCRuYW1lLidbMV0nLHNlbGY6OkNyZWF0ZU1vbnRoc0xpc3QoKSxhcnJheSgkdmFsdWVzWzFdKSwxLCcnLGZhbHNlKTsKICAgICRkYXkgPSBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCRuYW1lLidbMl0nLHNlbGY6OkNyZWF0ZU51bWJlckxpc3QoMzEsMSksYXJyYXkoJHZhbHVlc1syXSksMSwnJyxmYWxzZSk7CiAgICBpZiAoaXNzZXQoJHNldHRpbmdzWydldXJvcGVhbl9kYXRlJ10pKQogICAgewogICAgICByZXR1cm4gJGRheSAuICRtb250aCAuICR5ZWFyOwogICAgfQogICAgcmV0dXJuICR5ZWFyIC4gJG1vbnRoIC4gJGRheTsKICB9CiAgCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVUaW1lU2VsZWN0KCRpZCwkbmFtZSwkdmFsdWVzKSAgewogICAgaWYgKGNvdW50KCR2YWx1ZXMpID09IDEpCiAgICB7CiAgICAgIGlmIChzdHJwb3MoJHZhbHVlc1swXSwgJzonKSAhPT0gZmFsc2UpICR2YWx1ZXMgPSBleHBsb2RlKCc6JywkdmFsdWVzWzBdKTsKICAgIH0KICAgICRob3VycyA9IHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsJG5hbWUuJ1swXScsc2VsZjo6Q3JlYXRlTnVtYmVyTGlzdCgyMyksYXJyYXkoJHZhbHVlc1swXSksMSwnJyxmYWxzZSk7CiAgICAkbWludXRlcyA9IHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsJG5hbWUuJ1sxXScsc2VsZjo6Q3JlYXRlTnVtYmVyTGlzdCg1OSksYXJyYXkoJHZhbHVlc1sxXSksMSwnJyxmYWxzZSk7CiAgICAkc2Vjb25kcyA9IHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsJG5hbWUuJ1syXScsc2VsZjo6Q3JlYXRlTnVtYmVyTGlzdCg1OSksYXJyYXkoJHZhbHVlc1syXSksMSwnJyxmYWxzZSk7CiAgICByZXR1cm4gJGhvdXJzIC4gJyA6ICcgLiAkbWludXRlcyAuICcgOiAnIC4gJHNlY29uZHM7CiAgfQoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIENyZWF0ZU1vbnRoc0xpc3QoKSB7CiAgICAkbW9udGhzID0gYXJyYXkoKTsKICAgIGZvciAoJGkgPSAxOyAkaSA8PSAxMjsgKyskaSkgewogICAgICAkdCA9IG1rdGltZSgwLCAwLCAwLCAkaSwgMSwgMjAwMCk7CiAgICAgICRtb250aHNbJGldID0gZGF0ZSgnTScsICR0KTsKICAgIH0KICAgIHJldHVybiAkbW9udGhzOwogIH0KCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVOdW1iZXJMaXN0KCRlbmQsICRzdGFydD0wKSB7CiAgICByZXR1cm4gQ01TRm9ybUlucHV0RGF0ZTo6Q3JlYXRlTnVtYmVyTGlzdCgkZW5kLCAkc3RhcnQpOwogICAgCiAgICAvLyBpZiAoKCRlbmQgPCAwKXx8KCFpc19udW1lcmljKCRlbmQpKSkgJGVuZCA9IDE7CiAgICAvLyAkbGlzdCA9IGFycmF5KCk7CiAgICAvLyBmb3IgKCRpID0gJHN0YXJ0OyAkaSA8PSAkZW5kOyAkaSsrKQogICAgLy8gewogICAgLy8gICAkbGlzdFskaV0gPSAoc3RyaW5nKSRpOwogICAgLy8gfQogICAgLy8gcmV0dXJuICRsaXN0OwogIH0KICAKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIENyZWF0ZUNvdW50cmllc1NlbGVjdG9yKCRpZCwkbmFtZSwkdmFsdWVzLCRzZXR0aW5ncykgewogICAgcmV0dXJuIENNU0Zvcm1JbnB1dENvdW50cmllczo6Q3JlYXRlQ291bnRyaWVzU2VsZWN0b3IoJGlkLCRuYW1lLCR2YWx1ZXMsJHNldHRpbmdzKTsKICAgIAogICAgLy8gJHNldHRpbmdzWyd2YWx1ZXMnXSA9IENNU0Zvcm1JbnB1dENvdW50cmllczo6JGNvdW50cmllczsKICAgIC8vIHJldHVybiBzZWxmOjpDcmVhdGVTZWxlY3RvcigkaWQsJG5hbWUsJHZhbHVlcywkc2V0dGluZ3MpOwogIH0KICAKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIENyZWF0ZVNlbGVjdG9yKCRpZCwkbmFtZSwkdmFsdWVzLCRzZXR0aW5ncykgIHsKICAgIAogICAgcmV0dXJuIENNU0Zvcm1JbnB1dFNlbGVjdDo6Q3JlYXRlU2VsZWN0b3IoJGlkLCRuYW1lLCR2YWx1ZXMsJHNldHRpbmdzKTsKICAgIAogICAgLy8gREVQUkVDQVRFRAogICAgLy8gaWYoaXNzZXQoJHNldHRpbmdzWydleHBhbmRlZCddKSAmJiAkc2V0dGluZ3NbJ2V4cGFuZGVkJ10gPT0gdHJ1ZSkKICAgIC8vICAgIHsKICAgIC8vICAgICAgcmV0dXJuIHNlbGY6OkNyZWF0ZUlucHV0RXhwYW5kZWRMaXN0KCRpZCwgJG5hbWUsIGlzc2V0KCRzZXR0aW5nc1sndmFsdWVzJ10pPyRzZXR0aW5nc1sndmFsdWVzJ106YXJyYXkoKSwgJHZhbHVlcywgaXNzZXQoJHNldHRpbmdzWydhZGR0ZXh0J10pPyRzZXR0aW5nc1snYWRkdGV4dCddOicnLCBpc3NldCgkc2V0dGluZ3NbJ211bHRpcGxlJ10pP3RydWU6ZmFsc2UsICRzZXR0aW5ncyk7CiAgICAvLyAgICB9CiAgICAvLyAgICBlbHNlCiAgICAvLyAgICB7CiAgICAvLyAgICAgICRpdGVtcyA9IGlzc2V0KCRzZXR0aW5nc1sndmFsdWVzJ10pPyRzZXR0aW5nc1sndmFsdWVzJ106YXJyYXkoKTsKICAgIC8vICAgICAgaWYoaXNzZXQoJHNldHRpbmdzWydpbmNsdWRlX2N1c3RvbSddKSkKICAgIC8vICAgICAgewogICAgLy8gICAgICAgICRpdGVtcyA9IGFycmF5KCcnID0+ICRzZXR0aW5nc1snaW5jbHVkZV9jdXN0b20nXSkgKyAkaXRlbXM7CiAgICAvLyAgICAgIH0KICAgIC8vICAgICAgcmV0dXJuIHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICRuYW1lLCAkaXRlbXMsICR2YWx1ZXMsIGlzc2V0KCRzZXR0aW5nc1snc2l6ZSddKT8kc2V0dGluZ3NbJ3NpemUnXToxLCAnJywgaXNzZXQoJHNldHRpbmdzWydtdWx0aXBsZSddKT90cnVlOmZhbHNlKTsKICAgIC8vICAgIH0KICB9CiAgCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkc2VsZWN0ZWRpdGVtcz1hcnJheSgpLCAkc2l6ZT0zLCAkYWRkdHRleHQ9JycsICRtdWx0aXBsZSA9IHRydWUpIHsKICAgIAogICAgcmV0dXJuIENNU0Zvcm1JbnB1dFNlbGVjdDo6RGVwcmVjYXRlZENyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICRuYW1lLCAkaXRlbXMsICRzZWxlY3RlZGl0ZW1zLCAkc2l6ZSwgJGFkZHR0ZXh0LCAkbXVsdGlwbGUpOwogIAogIH0KICAKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIENyZWF0ZUlucHV0RXhwYW5kZWRMaXN0KCRpZCwgJG5hbWUsICRpdGVtcywgJHNlbGVjdGVkaXRlbXM9YXJyYXkoKSwgJGFkZHR0ZXh0PScnLCAkbXVsdGlwbGUgPSB0cnVlLCAkcGFyYW1zID0gYXJyYXkoKSkgewogICAgCiAgICByZXR1cm4gQ01TRm9ybUlucHV0U2VsZWN0OjpEZXByZWNhdGVkQ3JlYXRlSW5wdXRFeHBhbmRlZExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkc2VsZWN0ZWRpdGVtcywgJGFkZHR0ZXh0LCAkbXVsdGlwbGUsICRwYXJhbXMpOwogICAgICAKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGdldFVwbG9hZEZpZWxkKCkgIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldFVwbG9hZEZpZWxkKCk7CiAgfQogIAogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNJbWFnZSgkZmlsZW5hbWUpIHsKICAgICR2YWxpZF9leHRlbnNpb25zID0gYXJyYXkoJ2pwZWcnLCdqcGcnLCdnaWYnLCdwbmcnKTsKICAgIGlmIChpbl9hcnJheShzZWxmOjpnZXRGaWxlRXh0ZW5zaW9uKCRmaWxlbmFtZSksJHZhbGlkX2V4dGVuc2lvbnMpKQogICAgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIHJldHVybiBmYWxzZTsKICB9CiAgCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRGaWxlRXh0ZW5zaW9uKCRmaWxlbmFtZSkgIHsKICAgICRmaWxlID0gZXhwbG9kZSgnLicsICRmaWxlbmFtZSk7CiAgICAgIGlmIChjb3VudCgkZmlsZSkgPiAxKQogICAgICB7CiAgICAgICAgcmV0dXJuIHN0cnRvbG93ZXIoZW5kKCRmaWxlKSk7CiAgICAgIH0KICAgICAgZWxzZSAKICAgICAgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgfQoKICAvLyBFUlJPUlMKICAgIAogIHB1YmxpYyBmdW5jdGlvbiBoYXNFcnJvcnMoKSB7CiAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5oYXNFcnJvcnMoKTsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBub0Vycm9yKCkgewogICAgcmV0dXJuICEkdGhpcy0+Z2V0V2lkZ2V0KCktPmhhc0Vycm9ycygpOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIGdldEVycm9ycygpIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldEVycm9ycygpOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIHNob3dFcnJvcnMoKSAgewogICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+c2hvd0Vycm9ycygpOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIHNldEVycm9yKCRtZXNzYWdlLCRwcmlvcml0eT0nZGVmYXVsdCcpICB7CiAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPnNldEVycm9yKCRtZXNzYWdlLCAkcHJpb3JpdHkpOwogIH0KCn0=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admin.form.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRmb3JtKX0Ke2lmICRmb3JtLT5oYXNFcnJvcnMoKX08ZGl2IHN0eWxlPSJjb2xvcjogcmVkOyI+eyRmb3JtLT5zaG93RXJyb3JzKCl9PC9kaXY+ey9pZn0KCXskZm9ybS0+Z2V0SGVhZGVycygpfQoJCgl7JGZvcm0tPnNob3dXaWRnZXRzKCc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxkaXYgY2xhc3M9InBhZ2V0ZXh0Ij4lTEFCRUwlOjwvZGl2PgoJCTxkaXYgY2xhc3M9InBhZ2VpbnB1dCI+JUlOUFVUJSA8ZW0+JVRJUFMlPC9lbT48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiIHN0eWxlPSJjb2xvcjogcmVkOyI+JUVSUk9SUyU8L2Rpdj4KCTwvZGl2PicpfQoJCgl7JGZvcm0tPnJlbmRlckZpZWxkc2V0cygnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8ZGl2IGNsYXNzPSJwYWdldGV4dCI+JUxBQkVMJTo8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiPiVJTlBVVCUgPGVtPiVUSVBTJTwvZW0+PC9kaXY+CgkJPGRpdiBjbGFzcz0icGFnZWlucHV0IiBzdHlsZT0iY29sb3I6IHJlZDsiPiVFUlJPUlMlPC9kaXY+Cgk8L2Rpdj4nKX0KCQoJPHA+CgkJeyRmb3JtLT5nZXRCdXR0b25zKCl9Cgk8L3A+Cgl7JGZvcm0tPmdldEZvb3RlcnMoKX0Key9pZn0=]]></data>
	</file>
</module>
