<?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>SEOTools2</name>
	<version>1.0.9</version>
  <mincmsversion>1.9.2</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5TRU9Ub29sczIgaGVscHMgeW91IHRvIGdldCB5b3VyIFNFTyAoU2VhcmNoIEVuZ2luZSBPcHRpbWl6YXRpb24pIHJpZ2h0LiBUaGUgbW9kdWxlIGFkZHMgc2V2ZXJhbCBTRU8gY2FwYWJpbGl0aWVzIHRvIHlvdXIgQ01TTVMgaW5zdGFsbGF0aW9uIGFuZCBhbGVydHMgeW91IGlmIHlvdSBtaXNzZWQgb3V0IG9uIHNvbWV0aGluZyBTRU8gcmVsYXRlZC4gQ3VycmVudGx5LCB0aGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6PC9wPg0KPHVsPg0KPGxpPi0gZ2VuZXJhdGVzIE1ldGEgdGFncyBpbiBzdGFuZGFyZCBodG1sLCBEdWJsaW4gQ29yZSBhbmQgT3BlbkdyYXBoIGZvcm1hdHM8L2xpPg0KPGxpPi0gYXV0b21hdGljYWxseSBleHRyYWN0cyBrZXl3b3JkcyBmcm9tIHlvdXIgcGFnZXMgYW5kIGFkZHMgdGhlbSB0byB0aGUgbWV0YSB0YWdzIGFuZCBwYWdlIHRpdGxlPC9saT4NCjxsaT4tIGxldHMgeW91IGRldGVybWluZSB3aXRoIGEgc2luZ2xlIGNsaWNrIHdoZXRoZXIgY2VydGFpbiBwYWdlcyBzaG91bGQgYmUgaW5kZXhlZCBieSBzZWFyY2ggZW5naW5lcyBvciBub3Q8L2xpPg0KPGxpPi0gZ2VuZXJhdGVzIGEgc2l0ZW1hcC54bWwgZmlsZSB3aXRoIHlvdXIgcGFnZXMgd2hpbGUgZ2l2aW5nIHlvdSBmdWxsIGNvbnRyb2wgb3ZlciB0aGUgcHJpb3JpdGllcyBvZiB5b3VyIHBhZ2VzPC9saT4NCjxsaT4tIGdlbmVyYXRlcyBhIHJvYm90cy50eHQgZmlsZSBleHBsaWNpdGx5IGRpc2FsbG93aW5nIGFjY2VzcyB0byBwYWdlcyB5b3UgZG9uJ3Qgd2FudCB0byBiZSBpbmRleGVkPC9saT4NCjxsaT4tIGFsZXJ0cyB5b3Ugd2hlbiB0aGVyZSBhcmUgc2V2ZXJhbCBwYWdlcyBmZWF0dXJpbmcgdGhlIHNhbWUgcGFnZSB0aXRsZXMgYW5kIGRlc2NyaXB0aW9uczwvbGk+DQo8bGk+LSBhbGVydHMgeW91IHdoZW4gdmVyeSBzaG9ydCBwYWdlIG1ldGEgZGVzY3JpcHRpb25zIGFyZSBkZXRlY3RlZDwvbGk+DQo8bGk+LSBhdXRvbWF0aWNhbGx5IHN1Ym1pdHMgeW91ciBzaXRlbWFwIGZpbGUgdG8gR29vZ2xlIHdoZW4geW91IGNoYW5nZSB5b3VyIGNvbnRlbnQ8L2xpPg0KPC91bD4NCjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPg0KPHA+Rmlyc3QsIG9wZW4gYWxsIHRlbXBsYXRlcyB3aGVyZSB5b3Ugd2FudCBkbyB1c2UgU0VPVG9vbHMyLiBSZW1vdmUgdGhlIGNvbXBsZXRlICZsdDt0aXRsZSZndDsgdGFnIGFuZCB0aGUge21ldGFkYXRhfSB0YWcgKGV2ZW4gaWYgaXQgc2F5cyB0byBuZXZlciByZW1vdmUgaXQpIGFuZCByZXBsYWNlIHRoZW0gd2l0aCB0aGUgdGFnPC9wPg0KPHByZT4NCntTRU9Ub29sczJ9DQo8L3ByZT48YnIgLz4NCjxwPk5leHQsIGF0IHRoZSBib3R0b20gb2YgeW91ciB0ZW1wbGF0ZSAoYWZ0ZXIgdGhlIGNsb3NpbmcgJmx0Oy9ib2R5Jmd0OyB0YWcpLCBpbnNlcnQgdGhlIGZvbGxvd2luZyBjb2RlOjwvcD4NCjxwcmU+DQp7Y2FwdHVyZSBhc3NpZ249Im1ldGFkZXNjcmlwdGlvbiJ9e2NvbnRlbnQgYmxvY2s9Im1ldGFkZXNjcmlwdGlvbiIgbGFiZWw9IlBhZ2UgRGVzY3JpcHRpb24iIG9uZWxpbmU9InRydWUifXsvY2FwdHVyZX0NCjwvcHJlPjxiciAvPg0KPHA+VGhpcyBpcyB3aGVyZSB5b3UnbGwgZW50ZXIgYSBzaG9ydCBwYWdlIGRlc2NyaXB0aW9uIChvbmUgb3IgdHdvIHNlbnRlbmNlcykgdGhhdCB3aWxsIGFwcGVhciBpbiB0aGUgc2VhcmNoIGVuZ2luZSdzIHJlc3VsdHMgYW5kIGlmLCBmb3IgZXhhbXBsZSwgc29tZW9uZSBzaGFyZXMgYSBsaW5rIHRvIHlvdXIgcGFnZSBvbiBmYWNlYm9vay48L3A+DQo8cD5Ob3csIHZpc2l0IHRoZSBzZXR0aW5ncyB0YWJzIGZvciBwYWdlIHRpdGxlICYgbWV0YSBpbmZvcm1hdGlvbiwgdGhlIHNpdGVtYXAgJiBjcmF3bGVyIHNldHRpbmdzIGFuZCB0aGUga2V5d29yZCBnZW5lcmF0b3Igc2V0dGluZ3MgYW5kIGZpbGwgaW4gYWxsIHJlcXVpcmVkIGluZm9ybWF0aW9uIGZvciB5b3VyIHBhZ2UuIFVuZGVyICJOYW1lIG9mIHBhZ2UgZGVzY3JpcHRpb24gY29udGVudCBibG9jayIgeW91IG5lZWQgdG8gZW50ZXIgdGhlIG5hbWUgb2YgdGhlIGNvbnRlbnQgYmxvY2sgeW91IGp1c3QgYWRkZWQgdG8geW91ciB0ZW1wbGF0ZXMgKCJQYWdlIERlc2NyaXB0aW9uIiBpbiBvdXIgZXhhbXBsZSkuIFRoZSB0YWIgIlNFTyBBbGVydHMiIHdpbGwgYWxlcnQgeW91IGlmIGl0IGRldGVjdHMgYW55dGhpbmcgdGhhdCBpcyByZXF1aXJlZCBidXQgbm90IGFjdGl2YXRlZCBvciBmaWxsZWQgaW4uIFlvdSBzaG91bGQgYWxzbyBjb25zaWRlciBzaWduaW5nIHVwIHlvdXINCnNpdGUgd2l0aCBHb29nbGUgV2VibWFzdGVyIHRvb2xzLiBUaGVyZSwgc2VsZWN0ICJNZXRhIHRhZyB2YWxpZGF0aW9uIiBhbmQgcGFzdGUgdGhlIHZlcmlmaWNhdGlvbiBjb2RlIChxdWl0ZSBhIGxvbmcgc3RyaW5nIG9mIGNoYXJhY3RlcnMgYW5kIG51bWJlcnMpIGludG8gdGhlIGJveCAiVmVyaWZpY2F0aW9uIENvZGUiIGluICJTRU8gU2V0dGluZ3MiIHRvIGF1dG9tYXRpY2FsbHkgdmVyaWZ5IHRoYXQgeW91IGFyZSByZWFsbHkNCnRoZSBvd25lciBvZiB5b3VyIHBhZ2UgKG5vIG5lZWQgdG8gcGFzdGUgdGhlIEdvb2dsZSBNZXRhLWNvZGUgaW50byB5b3VyIHRlbXBsYXRlKS48L3A+DQo8cD5BcyBzb29uIGFzIGV2ZXJ5dGhpbmcgaXMgc2V0IHVwLCBsb29rIGF0IHRoZSAiU0VPIEFsZXJ0cyIgdGFiIGFuZCBmaXggYWxsIHByb2JsZW1zIGRldGVjdGVkIGhlcmUuIFRha2UgY2FyZSB0byBpbnNlcnQgYSAodW5pcXVlKSBwYWdlIGRlc2NyaXB0aW9uIG9uIGV2ZXJ5IHBhZ2UgeW91IGVkaXQgaW4gdGhlIGZpZWxkICJQYWdlIERlc2NyaXB0aW9uIiBhdCB0aGUgYm90dG9tIG9mIHlvdXIgIkVkaXQgUGFnZSIgZm9ybS48L3A+DQo8cD5UbyBzZXQgeW91ciBvd24ga2V5d29yZHMgKGluc3RlYWQgb2YgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG9uZXMpIG9yIE9wZW5HcmFwaCB0eXBlIGZvciBjZXJ0YWluIHBhZ2VzLCB2aXNpdCB0aGUgIlBhZ2Ugc2V0dGluZ3MiIHRhYiB3aGVyZSB5b3UnbGwgZmluZCBhIGxpc3Qgb2YgYWxsIHBhZ2VzIHlvdSBoYXZlIGluIHlvdXIgc3lzdGVtLiBUaGVyZSwgeW91IGNhbiBhbHNvIGNoYW5nZSB0aGUgc2l0ZW1hcCBwcmlvcml0eSAod2hpY2ggaXMgYXV0by1jYWxjdWxhdGVkIGJ5IGRlZmF1bHQpIG9mIGEgcGFnZSB0byBpbmRpY2F0ZSB0aGF0IGl0IHNob3VsZA0KYmUgY29uc2lkZXJlZCBtb3JlIGltcG9ydGFudCBmb3Igc2VhcmNoIGVuZ2luZSBtYXRjaGVzIG9uIHlvdXIgcGFnZSBvciBleGNsdWRlIGNlcnRhaW4gcGFnZXMgZnJvbSB0aGUgc2VhcmNoIGluZGV4LjwvcD4NCjxwPlNFT1Rvb2xzMiB3aWxsIGFsc28gYXV0b21hdGljYWxseSBpbnNlcnQgYSBsaW5rIHRvIHRoZSBpbWFnZSB0byBiZSB1c2VkIGFzIHRoZSBtYWluIGltYWdlIG9mIHlvdXIgcGFnZSBpZiB5b3Ugc2VsZWN0IGFuICJJbWFnZSIgZm9yIHRoZSBwYWdlIGZyb20gd2l0aGluIHlvdXIgcGFnZSdzICJPcHRpb25zIiB0YWIgKHRoaXMgaXMgaW1wb3J0YW50IGZvciBwZW9wbGUgc3VibWl0dGluZyBhIGxpbmsgdG8geW91ciBwYWdlIGUuZy4gb24gZmFjZWJvb2spLiBBbHNvLCBpZiB5b3UgYXJlIHVzaW5nIE9wZW5HcmFwaCwgdGhlIGltYWdlIHNlbGVjdGVkIGhlcmUNCndpbGwgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgT3BlbkdyYXBoIGltYWdlIHlvdSBzcGVjaWZpZWQgZnJvbSB3aXRoaW4gIlNFTyBTZXR0aW5ncyIuIFBsZWFzZSBiZSBhd2FyZSB0aGF0IHlvdSBuZWVkIHRvIHVwbG9hZCB0aG9zZSBpbWFnZXMgdG8geW91ciAvdXBsb2Fkcy9pbWFnZXMgZGlyZWN0b3J5LjwvcD4NCjxoMz5DYW4gSSB1c2Ugc21hcnR5IHZhcmlhYmxlcz88L2gzPg0KPHA+WW91IGNhbiB1c2UgYWxsIHNtYXJ0eSB2YXJpYWJsZXMgYW5kIFVEVHMgd2l0aGluIHRoZSBzZXR0aW5ncyBmaWVsZHMgPGk+UGFnZSB0aXRsZTwvaT4sIDxpPk1ldGEgcGFnZSB0aXRsZTwvaT4sIDxpPkF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGRlc2NyaXB0aW9uczwvaT4gYW5kIDxpPkFkZGl0aW9uYWwgbWV0YSB0YWdzPC9pPi4gRW50ZXIgPGNvZGU+e2RlYnVnfTwvY29kZT4gdG8gc2VlIGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIHZhcmlhYmxlcy48L3A+DQo8aDM+V2hpY2ggc21hcnR5IHZhcmlhYmxlcyBhcmUgZXhwb3J0ZWQgYnkgU0VPVG9vbHMyPzwvaDM+DQo8Y29kZT57JHNlb19rZXl3b3Jkc308L2NvZGU+OiBBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBrZXl3b3JkcyBzZXQgZm9yIHRoZSBwYWdlIChpbmNsdWRpbmcgdGhlIGRlZmF1bHQga2V5d29yZHMpPGJyIC8+DQo8Y29kZT57JHRpdGxlX2tleXdvcmRzfTwvY29kZT46IEEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgYWxsIGtleXdvcmRzIHNldCBmb3IgdGhlIHBhZ2UgKGluY2x1ZGluZyB0aGUgZGVmYXVsdCBrZXl3b3Jkcyk8YnIgLz4NCjxjb2RlPnskZGVmYXVsdF9rZXl3b3Jkc308L2NvZGU+OiBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBkZWZhdWx0IGtleXdvcmRzPGJyIC8+DQo8Y29kZT57JHBhZ2Vfa2V5d29yZHN9PC9jb2RlPjogQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBhbGwga2V5d29yZHMgc2V0IGZvciB0aGUgcGFnZSAod2l0aG91dCB0aGUgZGVmYXVsdCBrZXl3b3JkcykNCjxoMz5TdXBwb3J0PC9oMz4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dCBvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAxMiwgQ2xpcCBNYWdpYyA8YSBocmVmPSJtYWlsdG86YWRtaW5AY2xpcG1hZ2ljLmNvbS5hdSI+Jmx0O2FkbWluQGNsaXBtYWdpYy5jb20uYXUmZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD48aDM+UGFyYW1ldGVyczwvaDM+PHVsPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGxhbmc9ImVuX1VTIiAtIFBhcmFtZXRlciBpcyB1c2VkIHRvIHNwZWNpZnkgd2hhdCBsYW5ndWFnZSB0byB1c2UgZm9yIGRpc3BsYXkgb24gdGhlIGZyb250ZW5kLiBOb3QgYWxsIG1vZHVsZXMgc3VwcG9ydCBvciBuZWVkIHRoaXMuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBzaG93YmFzZT0idHJ1ZSIgLSBTZXQgdGhpcyBwYXJhbWV0ZXIgdG8gPGNvZGU+ZmFsc2U8L2NvZGU+IHRvIHN1cHByZXNzIHRoZSBvdXRwdXQgb2YgdGhlIGJhc2UgaHJlZiB0YWcuPC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBDbGlwIE1hZ2ljICZsdDthZG1pbkBjbGlwbWFnaWMuY29tLmF1Jmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMC45PGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPg0KPGxpPlZlcnNpb24gMS4wIC0gMjUgSmFudWFyeSAyMDEyLiBJbml0aWFsIHJlbGVhc2UuIFRoaXMgaXMgYSBmb3JrIG9mIHRoZSBTRU9Ub29scyBtb2R1bGUgd2l0aCBDTVNNUyAxLjEwKyBjb21wYXRpYmlsaXR5LiBDaGFuZ2VzIGluY2x1ZGU6DQoJPHVsPg0KCQk8bGk+U2V0IHByZWZlcmVuY2VzIG9uIGluc3RhbGw8L2xpPg0KCQk8bGk+UmVtb3ZlIHByZWZlcmVuY2VzIG9uIHVuaW5zdGFsbDwvbGk+DQoJCTxsaT5SZXBsYWNlIGFsbCByZWZlcmVuY2UgdG8gSGllcmFyY2h5TWFuYWdlciBvYmplY3RzIHdpdGggQ29udGVudE9wZXJhdGlvbnMgb2JqZWN0czwvbGk+DQoJCTxsaT5HZW5lcmF0ZSBhbGwga2V5d29yZHMsIGtleXdvcmQgc3VnZ2VzdGlvbnMsIGRlc2NyaXB0aW9ucyBhbmQgZGVmYXVsdCBkZXNjcmlwdGlvbnM8L2xpPg0KCQk8bGk+R2VuZXJhdGUgc2l0ZW1hcC54bWwgYW5kIHJvYm90cy50eHQgZmlsZXM8L2xpPg0KCQk8bGk+UmV0YWluIGNoZWNrYm94IHByZWZlcmVuY2Ugc2V0dGluZ3MgYWZ0ZXIgc3VibWl0PC9saT4NCgkJPGxpPk9uIGZyb250ZW5kIHBhZ2UgbG9hZCwgZW5zdXJlIHRoYXQgYSBjb3JyZXNwb25kaW5nIHJlY29yZCBleGlzdHMgaW4gdGhlIHNlb3Rvb2xzMiBkYXRhYmFzZSB0YWJsZTwvbGk+DQoJPC91bD4NCjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMSAtIDI1IEphbnVhcnkgMjAxMi4gTWlub3IgYnVnIGZpeDwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMiAtIDEgRmVicnVhcnkgMjAxMi4gQnVnIGZpeDwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMyAtIDEgRmVicnVhcnkgMjAxMi4gQnVnIGZpeDwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuNCAtIDEgRmVicnVhcnkgMjAxMi4gQ29ycmVjdGlvbjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuNSAtIDYgRmVicnVhcnkgMjAxMi4gQWRkIGV2ZW50IGhhbmRsZXJzIHRvIHB1c2ggc2l0ZW1hcCB0byBHb29nbGUgd2VibWFzdGVyczwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuNiAtIDUgTWFyY2ggMjAxMi4gSW1wcm92ZWQgaGFuZGxpbmcgb2Ygc3NsIHVybHMgYW5kIGJ1ZyBmaXggd2hlbiB0aGVyZSBhcmUgbm8gc2hvcnQgbWV0YSBkZXNjcmlwdGlvbnM8L2xpPg0KPGxpPlZlcnNpb24gMS4wLjcgLSA5IEFwcmlsIDIwMTIuIEJ1ZyBmaXg8L2xpPg0KPGxpPlZlcnNpb24gMS4wLjggLSA5IEFwcmlsIDIwMTIuIEJ1ZyBmaXg8L2xpPg0KPGxpPlZlcnNpb24gMS4wLjkgLSAxMSBBcHJpbCAyMDEyLg0KICAgIDx1bD4NCiAgICAgICAgPGxpPk1vcmUgaW1wcm92ZW1lbnRzIHRvIHNzbCBoYW5kbGluZyBlc3BlY2lhbGx5IGluIHRoZSBzaXRlbWFwLnhtbCAodGhhbmtzIENvbGluKTwvbGk+DQogICAgICAgIDxsaT5BYmlsaXR5IHRvIHNob3cgYW55IEFjdGl2ZSBwYWdlLCBub3QganVzdCBwYWdlcyB3aXRoIEFjdGl2ZSBhbmQgU2hvdyBJbiBNZW51IGluIHRoZSBzaXRlbWFwLnhtbCAodGhhbmtzIE1hdHQpPC9saT4NCiAgICA8L3VsPg0KPC91bD48YnIgLz4=]]></about>
	<description><![CDATA[Helps with SEO in general, automatically generating XML sitemaps and comprehensive meta descriptions]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.changesettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQppZiAoISAkdGhpcy0+Q2hlY2tBY2Nlc3MoIkVkaXQgU0VPIFNldHRpbmdzIikpDQp7DQogIHJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOw0KfQ0KDQovKiAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0KDQpDb2RlIGZvciBTRU9Ub29sczIgImNoYW5nZXNldHRpbmdzIiBhZG1pbiBhY3Rpb24NCiANCi09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tDQogDQpUeXBpY2FsbHksIHRoaXMgd2lsbCBkaXNwbGF5IHNvbWV0aGluZyBmcm9tIGEgdGVtcGxhdGUNCm9yIGRvIHNvbWUgb3RoZXIgdGFzay4NCiANCiovDQoNCi8vIFJlZ2VuZXJhdGUgU2l0ZW1hcCBhbmQgcm9ib3RzLnR4dA0KaWYgKGlzc2V0KCRfUE9TVFsnZG9fcmVnZW5lcmF0ZSddKSkgew0KICAkdGhpcy0+Y3JlYXRlU2l0ZW1hcCgkdGhpcy0+R2V0UHJlZmVyZW5jZSgncHVzaF9zaXRlbWFwJywxKSA9PSAxKTsNCiAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjcmVhdGVfcm9ib3RzJywxKSA9PSAxKSB7DQogICAgJHRoaXMtPmNyZWF0ZVJvYm90c1RYVCgpOw0KICB9DQogICR0aGlzLT5hdWRpdCgiVGVzdCIsIlNFTyBUb29scyIsIk1hbnVhbGx5IHJlZ2VuZXJhdGVkIHNpdGVtYXAueG1sIGFuZCByb2JvdHMudHh0Iik7DQogICR0aGlzLT5SZWRpcmVjdCgkdGhpcy0+aWQsICdkZWZhdWx0YWRtaW4nLCAnJywgQXJyYXkoJ21lc3NhZ2UnPT4nc2l0ZW1hcF9yZWdlbmVyYXRlZCcsJ3RhYic9PidzaXRlbWFwc2V0dGluZ3MnKSk7DQp9DQoNCmlmIChpc3NldCgkX1BPU1RbJ3NhdmVfbWV0YV9zZXR0aW5ncyddKSkgew0KICAkbWV0YV9zdGFuZGFyZCA9IGlzc2V0KCRfUE9TVFsnbWV0YV9zdGFuZGFyZCddKSA/IDEgOiAwOw0KICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9zdGFuZGFyZCcsJG1ldGFfc3RhbmRhcmQpOw0KDQogICRtZXRhX2R1YmxpbmNvcmUgPSBpc3NldCgkX1BPU1RbJ21ldGFfZHVibGluY29yZSddKSA/IDEgOiAwOw0KICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9kdWJsaW5jb3JlJywkbWV0YV9kdWJsaW5jb3JlKTsNCg0KICAkbWV0YV9vcGVuZ3JhcGggPSBpc3NldCgkX1BPU1RbJ21ldGFfb3BlbmdyYXBoJ10pID8gMSA6IDA7DQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaCcsJG1ldGFfb3BlbmdyYXBoKTsNCg0KICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnYWRkaXRpb25hbF9tZXRhX3RhZ3MnLCRfUE9TVFsnYWRkaXRpb25hbF9tZXRhX3RhZ3MnXSk7DQoNCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfcHVibGlzaGVyJywkX1BPU1RbJ21ldGFfcHVibGlzaGVyJ10pOw0KICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9jb250cmlidXRvcicsJF9QT1NUWydtZXRhX2NvbnRyaWJ1dG9yJ10pOw0KICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9jb3B5cmlnaHQnLCRfUE9TVFsnbWV0YV9jb3B5cmlnaHQnXSk7DQoNCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfbG9jYXRpb24nLCRfUE9TVFsnbWV0YV9sb2NhdGlvbiddKTsNCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJywkX1BPU1RbJ21ldGFfcmVnaW9uJ10pOw0KICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScsJF9QT1NUWydtZXRhX2xhdGl0dWRlJ10pOw0KICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9sb25naXR1ZGUnLCRfUE9TVFsnbWV0YV9sb25naXR1ZGUnXSk7DQoNCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3RpdGxlJywkX1BPU1RbJ21ldGFfb3BlbmdyYXBoX3RpdGxlJ10pOw0KICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdHlwZScsJF9QT1NUWydtZXRhX29wZW5ncmFwaF90eXBlJ10pOw0KICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnLCRfUE9TVFsnbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnXSk7DQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9pbWFnZScsJF9QT1NUWydtZXRhX29wZW5ncmFwaF9pbWFnZSddKTsNCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FkbWlucycsJF9QT1NUWydtZXRhX29wZW5ncmFwaF9hZG1pbnMnXSk7DQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbicsJF9QT1NUWydtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbiddKTsNCg0KICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndGl0bGUnLCRfUE9TVFsndGl0bGUnXSk7DQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0aXRsZV9tZXRhJywkX1BPU1RbJ3RpdGxlX21ldGEnXSk7DQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJF9QT1NUWydkZXNjcmlwdGlvbl9ibG9jayddKTsNCg0KDQogICRkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlID0gaXNzZXQoJF9QT1NUWydkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJ10pID8gMSA6IDA7DQoNCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnLCRkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlKTsNCg0KDQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvJywkX1BPU1RbJ2Rlc2NyaXB0aW9uX2F1dG8nXSk7DQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2tleXdvcmRzJywkX1BPU1RbJ2RlZmF1bHRfa2V5d29yZHMnXSk7DQoNCiAgJHRoaXMtPmF1ZGl0KCJUZXN0IiwiU0VPIFRvb2xzIiwiRWRpdGVkIE1ldGEgc2V0dGluZ3MiKTsNCiAgJHRoaXMtPlJlZGlyZWN0KCR0aGlzLT5pZCwgJ2RlZmF1bHRhZG1pbicsICcnLCBBcnJheSgnbWVzc2FnZSc9PidzZXR0aW5nc191cGRhdGVkJywndGFiJz0+J21ldGFzZXR0aW5ncycpKTsNCn0NCg0KaWYgKGlzc2V0KCRfUE9TVFsnc2F2ZV9zaXRlbWFwX3NldHRpbmdzJ10pKSB7DQoNCiAgJGNyZWF0ZV9zaXRlbWFwID0gaXNzZXQoJF9QT1NUWydjcmVhdGVfc2l0ZW1hcCddKSA/IDEgOiAwOw0KICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnLCRjcmVhdGVfc2l0ZW1hcCk7DQoNCiAgJHB1c2hfc2l0ZW1hcCA9IGlzc2V0KCRfUE9TVFsncHVzaF9zaXRlbWFwJ10pID8gMSA6IDA7DQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwdXNoX3NpdGVtYXAnLCRwdXNoX3NpdGVtYXApOw0KDQogICRjcmVhdGVfcm9ib3RzID0gaXNzZXQoJF9QT1NUWydjcmVhdGVfcm9ib3RzJ10pID8gMSA6IDA7DQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdjcmVhdGVfcm9ib3RzJywkY3JlYXRlX3JvYm90cyk7DQoNCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZlcmlmaWNhdGlvbicsJF9QT1NUWyd2ZXJpZmljYXRpb24nXSk7DQoNCiAgJHRoaXMtPmF1ZGl0KCJUZXN0IiwiU0VPIFRvb2xzIiwiRWRpdGVkIFNpdGVtYXAgc2V0dGluZ3MiKTsNCiAgJHRoaXMtPlJlZGlyZWN0KCR0aGlzLT5pZCwgJ2RlZmF1bHRhZG1pbicsICcnLCBBcnJheSgnbWVzc2FnZSc9PidzZXR0aW5nc191cGRhdGVkJywndGFiJz0+J3NpdGVtYXBzZXR0aW5ncycpKTsNCn0NCg0KaWYgKGlzc2V0KCRfUE9TVFsnc2F2ZV9rZXl3b3JkX3NldHRpbmdzJ10pKSB7DQoNCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJywkX1BPU1RbJ2tleXdvcmRfbWlubGVuZ3RoJ10pOw0KICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF90aXRsZV93ZWlnaHQnLCRfUE9TVFsna2V5d29yZF90aXRsZV93ZWlnaHQnXSk7DQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2Rlc2NyaXB0aW9uX3dlaWdodCcsJF9QT1NUWydrZXl3b3JkX2Rlc2NyaXB0aW9uX3dlaWdodCddKTsNCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0JywkX1BPU1RbJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0J10pOw0KICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF9jb250ZW50X3dlaWdodCcsJF9QT1NUWydrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0J10pOw0KICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5pbXVtX3dlaWdodCcsJF9QT1NUWydrZXl3b3JkX21pbmltdW1fd2VpZ2h0J10pOw0KDQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2V4Y2x1ZGUnLCRfUE9TVFsna2V5d29yZF9leGNsdWRlJ10pOw0KDQoNCg0KICAkdGhpcy0+YXVkaXQoIlRlc3QiLCJTRU8gVG9vbHMiLCJFZGl0ZWQgS2V5d29yZCBzZXR0aW5ncyIpOw0KICAkdGhpcy0+UmVkaXJlY3QoJHRoaXMtPmlkLCAnZGVmYXVsdGFkbWluJywgJycsIEFycmF5KCdtZXNzYWdlJz0+J3NldHRpbmdzX3VwZGF0ZWQnLCd0YWInPT4na2V5d29yZHNldHRpbmdzJykpOw0KfQ0KDQovLyBEbyBldmVudHMNCiR0aGlzLT5TZW5kRXZlbnQoJ1ByZWZzVXBkYXRlZCcsJF9QT1NUKTsNCg0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQovKiAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0KDQogICBDb2RlIGZvciBTRU9Ub29sczIgImRlZmF1bHQiIGFjdGlvbg0KDQogICAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0KICAgDQogICBUeXBpY2FsbHksIHRoaXMgd2lsbCBkaXNwbGF5IHNvbWV0aGluZyBmcm9tIGEgdGVtcGxhdGUNCiAgIG9yIGRvIHNvbWUgb3RoZXIgdGFzay4NCiAgIA0KKi8NCg0KLy8gR2V0IHBhZ2UgZGF0YQ0KJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOw0KJGRiID0mIGNtc21zKCktPkdldERiKCk7DQokY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQoNCiRyb290X3VybCA9IGVtcHR5KCRfU0VSVkVSWydIVFRQUyddKSA/ICRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10gOiAkZ0Ntcy0+Y29uZmlnWydzc2xfdXJsJ107DQoNCi8vIEZpcnN0IHVwLCB3ZSBkbyBzb21lIGRhdGFiYXNlIG1haW50ZW5hbmNlDQovLyBFbnN1cmUgYWxsIHRoZSBhY3RpdmUgcGFnZXMgYXJlIGluIHRoZSBzZW90b29sczIgZGF0YWJhc2UNCiRxdWVyeSA9ICdTRUxFQ1QgYGNvbnRlbnRfaWRgIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgV0hFUkUgYHR5cGVgIExJS0UgIiVjb250ZW50JSIgQU5EIGBjb250ZW50X2lkYCBOT1QgSU4gKFNFTEVDVCBgY29udGVudF9pZGAgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpLiAnbW9kdWxlX3Nlb3Rvb2xzMiknOw0KaWYgKCEkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSkpIHsNCiAgZWNobyAiPGJyIC8+UHJvYmxlbSB3aXRoIHRoZSBkYXRhYmFzZSEgUGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLiI7DQogIGRpZTsNCn0NCg0KaWYgKCRyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKSB7DQovLyBPSyB3ZSBoYXZlIHNvbWUgbmV3IHBhZ2VzDQoJJHEyID0gJ0lOU0VSVCBJTlRPICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFNFVCBjb250ZW50X2lkID0gPywgaW5kZXhhYmxlID0gPyc7DQoJd2hpbGUgKCRvbmVfcGFnZSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsNCgkJJGRiLT5FeGVjdXRlKCRxMixhcnJheSgkb25lX3BhZ2VbJ2NvbnRlbnRfaWQnXSwxKSk7DQoJfQ0KfQ0KDQovLyBOb3cgY2hlY2sgdGhhdCB3ZSBoYXZlIHJlbW92ZWQgZnJvbSBzZW90b29sczIgYW55IHBhZ2VzIHRoYXQgaGF2ZSBiZWVuIGRlbGV0ZWQNCiRxdWVyeSA9ICdTRUxFQ1QgYGNvbnRlbnRfaWRgIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgV0hFUkUgYGNvbnRlbnRfaWRgIE5PVCBJTiAoU0VMRUNUIGBjb250ZW50X2lkYCBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkuICdjb250ZW50KSc7DQppZiAoISRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KSkgew0KCWVjaG8gIjxiciAvPlByb2JsZW0gd2l0aCB0aGUgZGF0YWJhc2UhIFBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4iOw0KCWRpZTsNCn0NCmlmICgkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkgew0KLy8gT0sgd2UgaGF2ZSBzb21lIGRlbGV0ZWQgcGFnZXMNCgkkcTMgPSAnREVMRVRFIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgV0hFUkUgY29udGVudF9pZCA9ID8nOw0KCXdoaWxlICgkb25lX3BhZ2UgPSAkcmVzdWx0LT5mZXRjaFJvdygpKSB7DQoJCSRkYi0+RXhlY3V0ZSgkcTMsYXJyYXkoJG9uZV9wYWdlWydjb250ZW50X2lkJ10sMSkpOw0KCX0NCn0NCg0KLy8gTGFzdGx5LCBlbnN1cmUgdGhhdCBhbGwgaW5hY3RpdmUgcGFnZXMgYXJlIG1hcmtlZCBhcyBub3QgaW5kZXhhYmxlIGluIHNlb3Rvb2xzMg0KJHF1ZXJ5ID0gJ1NFTEVDVCBjb250ZW50X2lkIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdjb250ZW50IFdIRVJFIGFjdGl2ZSA9IDAnOw0KaWYgKCEkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSkpIHsNCgllY2hvICI8YnIgLz5Qcm9ibGVtIHdpdGggdGhlIGRhdGFiYXNlISBQbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuIjsNCglkaWU7DQp9DQoNCmlmICgkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkgew0KLy8gT0sgd2UgaGF2ZSB0byBwcmV2ZW50IHRoZSBpbmFjdGl2ZSBwYWdlcyBmcm9tIGJlaW5nIGluZGV4ZWQuDQoJJHE0ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBTRVQgaW5kZXhhYmxlID0gMCBXSEVSRSBjb250ZW50X2lkID0gPyc7DQoJd2hpbGUgKCRvbmVfcGFnZSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsNCgkJJGRiLT5FeGVjdXRlKCRxNCxhcnJheSgkb25lX3BhZ2VbJ2NvbnRlbnRfaWQnXSkpOw0KCX0NCn0NCg0KLy8gUGhldywgdGhhdCdzIGFsbCBkb25lIHNvIHdlIGNhbiBtb3ZlIG9uIHRvIHRoZSByZWFsIGJ1c2luZXNzIG9mIHRoZSBkYXkNCg0KJHRwbF92YXJzID0gJHNtYXJ0eS0+Z2V0X3RlbXBsYXRlX3ZhcnMoKTsNCiRjdXJjb250ZW50ID0gJHRwbF92YXJzWydjb250ZW50X29iaiddOw0KDQokcGFnZV91cmwgPSAkY3VyY29udGVudC0+R2V0VVJMKCk7DQokcGFnZV9pZCA9ICRjdXJjb250ZW50LT5JZCgpOw0KDQokbW9kaWZpZWRfZGF0ZSA9ICRjdXJjb250ZW50LT5nZXRNb2RpZmllZERhdGUoKTsNCiRtb2RpZmllZF9kYXRlID0gZGF0ZSgnWS1tLWRcVEg6aTpzUCcsJG1vZGlmaWVkX2RhdGUpOw0KDQovLyBLZXl3b3JkIGdlbmVyYXRvcg0KJGtleXdvcmRzID0gZXhwbG9kZSgnICcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfa2V5d29yZHMnLCcnKSk7DQoNCg0KJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgV0hFUkUgY29udGVudF9pZCA9ID8nOw0KaWYgKCEkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcGFnZV9pZCkpKSB7DQogIGVjaG8gIlByb2JsZW0gd2l0aCB0aGUgZGF0YWJhc2UhIFBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4iOw0KICBkaWU7DQp9DQoNCiRwYWdlX2luZm8gPSAkcmVzdWx0LT5GZXRjaFJvdygpOw0KDQppZiAoJHBhZ2VfaW5mb1sna2V5d29yZHMnXSAhPSAiIikgew0KCSRvdGhlcl9rZXl3b3JkcyA9IGFycmF5X2ZsaXAoZXhwbG9kZSgnICcsJHBhZ2VfaW5mb1sna2V5d29yZHMnXSkpOw0KfWVsc2V7DQoJJG90aGVyX2tleXdvcmRzID0gJHRoaXMtPmdldEtleXdvcmRTdWdnZXN0aW9ucygkcGFnZV9pZCk7DQp9DQoNCiRzZW9fa2V5d29yZHMgPSBpbXBsb2RlKCcsICcsYXJyYXlfdW5pcXVlKGFycmF5X21lcmdlKCRrZXl3b3JkcywgYXJyYXlfZmxpcCgkb3RoZXJfa2V5d29yZHMpKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdzZW9fa2V5d29yZHMnLCAkc2VvX2tleXdvcmRzKTsNCiR0aXRsZV9rZXl3b3JkcyA9IGltcGxvZGUoJyAnLGFycmF5X3VuaXF1ZShhcnJheV9tZXJnZSgka2V5d29yZHMsIGFycmF5X2ZsaXAoJG90aGVyX2tleXdvcmRzKSkpKTsNCiRzbWFydHktPmFzc2lnbigndGl0bGVfa2V5d29yZHMnLCAkdGl0bGVfa2V5d29yZHMpOw0KJHNtYXJ0eS0+YXNzaWduKCdkZWZhdWx0X2tleXdvcmRzJywgaW1wbG9kZSgnICcsICRrZXl3b3JkcykpOw0KJHNtYXJ0eS0+YXNzaWduKCdwYWdlX2tleXdvcmRzJywgaW1wbG9kZSgnICcsIGFycmF5X2ZsaXAoJG90aGVyX2tleXdvcmRzKSkpOw0KDQovLyBQYWdlIGRlc2NyaXB0aW9uDQokZGVzY3JpcHRpb25faWQgPSBzdHJfcmVwbGFjZSgnICcsJ18nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpKTsNCiRkZXNjcmlwdGlvbiA9IHN0cmlwX3RhZ3MoJGN1cmNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJGRlc2NyaXB0aW9uX2lkKSk7DQoNCmlmICgoJGRlc2NyaXB0aW9uID09ICIiKSAmJiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnLDEpID09IDEpKSB7DQogICRrdyA9IGFycmF5X2ZsaXAoJG90aGVyX2tleXdvcmRzKTsNCiAgJGxhc3Rfa2V5d29yZCA9IGFycmF5X3BvcCgka3cpOw0KICAka2V5d29yZHMgPSBpbXBsb2RlKCcsICcsJGt3KSAuICIgIiAuICR0aGlzLT5sYW5nKCdhbmQnKSAuICIgIiAuICRsYXN0X2tleXdvcmQ7DQogICRkZXNjcmlwdGlvbiA9IHN0cl9yZXBsYWNlKCd7a2V5d29yZHN9Jywka2V5d29yZHMsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG8nLCcnKSk7DQogICRkZXNjcmlwdGlvbiA9IHN0cl9yZXBsYWNlKCd7dGl0bGV9JywkY3VyY29udGVudC0+TmFtZSgpLCRkZXNjcmlwdGlvbik7DQogICRkZXNjcmlwdGlvbiA9ICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkZGVzY3JpcHRpb24pOw0KfQ0KDQovLyBTaG93IGJhc2U/DQppZiAoaXNzZXQoJHBhcmFtc1snc2hvd2Jhc2UnXSkgJiYgJHBhcmFtc1snc2hvd2Jhc2UnXSAhPSAnZmFsc2UnKSB7DQoJICAgIGVjaG8gIjxiYXNlIGhyZWY9JyIuJHJvb3RfdXJsLiIvJyAvPlxuIjsNCn0NCg0KDQovLyBQYWdlIHRpdGxlDQokdGl0bGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGl0bGUnLCd7dGl0bGV9IHwge3NpdGVuYW1lfSAtIHtzZW9fa2V5d29yZHN9Jyk7DQokdGl0bGUgPSBzdHJfcmVwbGFjZSgne3RpdGxlfScsJGN1cmNvbnRlbnQtPk5hbWUoKSwkdGl0bGUpOw0KJHRpdGxlID0gc3RyX3JlcGxhY2UoJ3tzaXRlbmFtZX0nLCRnQ21zLT5zaXRlcHJlZnNbJ3NpdGVuYW1lJ10sJHRpdGxlKTsNCiR0aXRsZSA9IHN0cl9yZXBsYWNlKCd7c2VvX2tleXdvcmRzfScsJHRpdGxlX2tleXdvcmRzLCR0aXRsZSk7DQokdGl0bGUgPSAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRpdGxlKTsNCg0KJG1ldGFfdGl0bGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGl0bGVfbWV0YScsJ3t0aXRsZX0gfCB7c2l0ZW5hbWV9Jyk7DQokbWV0YV90aXRsZSA9IHN0cl9yZXBsYWNlKCd7dGl0bGV9JywkY3VyY29udGVudC0+TmFtZSgpLCRtZXRhX3RpdGxlKTsNCiRtZXRhX3RpdGxlID0gc3RyX3JlcGxhY2UoJ3tzaXRlbmFtZX0nLCR0cGxfdmFyc1snc2l0ZW5hbWUnXSwkbWV0YV90aXRsZSk7DQokbWV0YV90aXRsZSA9IHN0cl9yZXBsYWNlKCd7c2VvX2tleXdvcmRzfScsJHRpdGxlX2tleXdvcmRzLCRtZXRhX3RpdGxlKTsNCiRtZXRhX3RpdGxlID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCRtZXRhX3RpdGxlKTsNCg0KJG9wZW5ncmFwaF90aXRsZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90aXRsZScsJ3t0aXRsZX0nKTsNCiRvcGVuZ3JhcGhfdGl0bGUgPSBzdHJfcmVwbGFjZSgne3RpdGxlfScsJGN1cmNvbnRlbnQtPk5hbWUoKSwkb3BlbmdyYXBoX3RpdGxlKTsNCiRvcGVuZ3JhcGhfdGl0bGUgPSAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJG9wZW5ncmFwaF90aXRsZSk7DQoNCmVjaG8gIjx0aXRsZT4iLiR0aXRsZS4iPC90aXRsZT5cbiI7DQoNCi8vIE1FVEEgdGFncyBmb3IgY29udGVudCB0eXBlIGV0Yy4NCmVjaG8gIjxtZXRhIGh0dHAtZXF1aXY9J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4dC9odG1sOyBjaGFyc2V0PSIuJGdDbXMtPmNvbmZpZ1snZGVmYXVsdF9lbmNvZGluZyddLiInIC8+XG4iOw0KaWYgKCgkcGFnZV9pbmZvWydpbmRleGFibGUnXSA9PSAiIikgfHwgKCRwYWdlX2luZm9bJ2luZGV4YWJsZSddID09ICIxIikpIHsNCgllY2hvICI8bWV0YSBuYW1lPSdyb2JvdHMnIGNvbnRlbnQ9J2luZGV4LCBmb2xsb3cnIC8+XG4iOw0KfWVsc2V7DQoJZWNobyAiPG1ldGEgbmFtZT0ncm9ib3RzJyBjb250ZW50PSdub2luZGV4JyAvPlxuIjsNCn0NCg0KaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd2ZXJpZmljYXRpb24nLCcnKSAhPSAnJykgew0KCWVjaG8gIjxtZXRhIG5hbWU9J2dvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbicgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgndmVyaWZpY2F0aW9uJywnJykuIicgLz5cbiI7DQp9DQoNCi8vIFN0YW5kYXJkIE1FVEEgdGFncw0KaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3N0YW5kYXJkJywxKSA9PSAxKSB7DQoJZWNobyAiPG1ldGEgbmFtZT0ndGl0bGUnIGNvbnRlbnQ9JyRtZXRhX3RpdGxlJyAvPlxuIjsNCgllY2hvICI8bWV0YSBuYW1lPSdkZXNjcmlwdGlvbicgY29udGVudD0nJGRlc2NyaXB0aW9uJyAvPlxuIjsNCiAgICBlY2hvICI8bWV0YSBuYW1lPSdrZXl3b3JkcycgY29udGVudD0nJHNlb19rZXl3b3JkcycgLz5cbiI7DQogICAgZWNobyAiPG1ldGEgbmFtZT0nZGF0ZScgY29udGVudD0nJG1vZGlmaWVkX2RhdGUnIC8+XG4iOw0KICAgIGVjaG8gIjxtZXRhIG5hbWU9J2xhc3R1cGRhdGUnIGNvbnRlbnQ9JyRtb2RpZmllZF9kYXRlJyAvPlxuIjsNCiAgICBlY2hvICI8bWV0YSBuYW1lPSdyZXZpc2VkJyBjb250ZW50PSckbW9kaWZpZWRfZGF0ZScgLz5cbiI7DQogICAgZWNobyAiPG1ldGEgbmFtZT0nYXV0aG9yJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJycpLiInIC8+XG4iOw0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb2NhdGlvbicsJycpICE9ICIiKSB7DQogICAgICBlY2hvICI8bWV0YSBuYW1lPSdnZW8ucGxhY2VuYW1lJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xvY2F0aW9uJywnJykuIicgLz5cbiI7DQogICAgfQ0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9yZWdpb24nLCcnKSAhPSAiIikgew0KICAgICAgZWNobyAiPG1ldGEgbmFtZT0nZ2VvLnJlZ2lvbicgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9yZWdpb24nLCcnKS4iJyAvPlxuIjsNCiAgICB9DQogICAgaWYgKCgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScsJycpICE9ICIiKSAmJiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbG9uZ2l0dWRlJywnJykgIT0gIiIpKSB7DQogICAgICBlY2hvICI8bWV0YSBuYW1lPSdnZW8ucG9zaXRpb24nIGNvbnRlbnQ9JyIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbGF0aXR1ZGUnLCcnKS4iOyIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbG9uZ2l0dWRlJywnJykuIicgLz5cbiI7DQogICAgICBlY2hvICI8bWV0YSBuYW1lPSdJQ0JNJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xhdGl0dWRlJywnJykuIiwgIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb25naXR1ZGUnLCcnKS4iJyAvPlxuIjsNCiAgICB9DQp9DQoNCmlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWRkaXRpb25hbF9tZXRhX3RhZ3MnLCcnKSAhPSAnJykgew0KCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhZGRpdGlvbmFsX21ldGFfdGFncycsJycpKTsNCn0NCg0KLy8gRHVibGluQ29yZSBNRVRBIHRhZ3MNCmlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9kdWJsaW5jb3JlJywwKSA9PSAxKSB7DQogICAgZWNobyAiPGxpbmsgcmVsPSdzY2hlbWEuREMnIGhyZWY9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJyAvPlxuIjsNCiAgICBlY2hvICI8bGluayByZWw9J3NjaGVtYS5EQ1RFUk1TJyBocmVmPSdodHRwOi8vcHVybC5vcmcvZGMvdGVybXMvJyAvPlxuIjsNCiAgICBlY2hvICI8bWV0YSBuYW1lPSdEQy50eXBlJyBjb250ZW50PSdUZXh0JyBzY2hlbWU9J0RDVEVSTVMuRENNSVR5cGUnIC8+XG4iOw0KICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLmZvcm1hdCcgY29udGVudD0ndGV4dC9odG1sJyBzY2hlbWU9J0RDVEVSTVMuSU1UJyAvPlxuIjsNCiAgICBlY2hvICI8bWV0YSBuYW1lPSdEQy5yZWxhdGlvbicgY29udGVudD0naHR0cDovL2R1YmxpbmNvcmUub3JnLycgc2NoZW1lPSdEQ1RFUk1TLlVSSScgLz5cbiI7DQogICAgZWNobyAiPG1ldGEgbmFtZT0nREMucHVibGlzaGVyJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJycpLiInIC8+XG4iOw0KICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLmNvbnRyaWJ1dG9yJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2NvbnRyaWJ1dG9yJywnJykuIicgLz5cbiI7DQogICAgDQogICAgDQovLyAgICBlY2hvICI8bWV0YSBuYW1lPSdEQy5sYW5ndWFnZScgY29udGVudD0nIi4kZ0Ntcy0+c2l0ZXByZWZzWydmcm9udGVuZGxhbmcnXS4iJyBzY2hlbWU9J0RDVEVSTVMuUkZDMzA2NicgLz5cbiI7DQoNCiAgICBpZigkZmVsYW5nID0gY21zX3NpdGVwcmVmczo6Z2V0KCdmcm9udGVuZGxhbmcnKSkNCiAgICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLmxhbmd1YWdlJyBjb250ZW50PSciLiRmZWxhbmcuIicgc2NoZW1lPSdEQ1RFUk1TLlJGQzMwNjYnIC8+XG4iOw0KICAgIA0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9jb3B5cmlnaHQnLCcnKSAhPSAiIikNCiAgICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLnJpZ2h0cycgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9jb3B5cmlnaHQnLCcnKS4iJyAvPlxuIjsNCiAgICAgIA0KICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLnRpdGxlJyBjb250ZW50PSckbWV0YV90aXRsZScgLz5cbiI7DQogICAgZWNobyAiPG1ldGEgbmFtZT0nREMuZGVzY3JpcHRpb24nIGNvbnRlbnQ9JyRkZXNjcmlwdGlvbicgLz5cbiI7DQogICAgZWNobyAiPG1ldGEgbmFtZT0nREMuZGF0ZScgY29udGVudD0nJG1vZGlmaWVkX2RhdGUnIHNjaGVtZT0nRENURVJNUy5XM0NEVEYnIC8+XG4iOw0KICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLmlkZW50aWZpZXInIGNvbnRlbnQ9JyRwYWdlX3VybCcgc2NoZW1lPSdEQ1RFUk1TLlVSSScgLz5cbiI7DQp9DQoNCi8vIE9wZW5HcmFwaCBNRVRBIHRhZ3MNCmlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGgnLDApID09IDEpIHsNCiAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6dGl0bGUnIGNvbnRlbnQ9JyRvcGVuZ3JhcGhfdGl0bGUnIC8+XG4iOw0KICAgIGlmICgkcGFnZV9pbmZvWydvZ3R5cGUnXSA9PSAiIikgew0KICAgICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J29nOnR5cGUnIGNvbnRlbnQ9JyIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3R5cGUnLCcnKS4iJyAvPlxuIjsNCiAgICB9ZWxzZXsNCiAgICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzp0eXBlJyBjb250ZW50PSciLiRwYWdlX2luZm9bJ29ndHlwZSddLiInIC8+XG4iOw0KICAgIH0NCiAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6dXJsJyBjb250ZW50PSckcGFnZV91cmwnIC8+XG4iOw0KICAgIA0KICAgICRpbWcgPSAkY3VyY29udGVudC0+UHJvcGVydGllcygpLT5HZXRWYWx1ZSgnaW1hZ2UnKTsNCiAgICBpZiAoKCRpbWcgIT0gLTEpICYmICgkaW1nICE9ICIiKSkgIHsNCiAgICAJJGltYWdlID0gJGltZzsNCiAgICAJDQogICAgfWVsc2V7DQogICAgCSRpbWFnZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9pbWFnZScsJycpOw0KICAgIH0NCiAgICANCiAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6aW1hZ2UnIGNvbnRlbnQ9JyIuJGNvbmZpZ1sncm9vdF91cmwnXS4iL3VwbG9hZHMvaW1hZ2VzLyRpbWFnZScgLz5cbiI7DQovLyAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6c2l0ZV9uYW1lJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScsJGdDbXMtPkdldFByZWZlcmVuY2UoJ3NpdGVuYW1lJykpLiInIC8+XG4iOw0KICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzpzaXRlX25hbWUnIGNvbnRlbnQ9JyIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3NpdGVuYW1lJyxjbXNfc2l0ZXByZWZzOjpnZXQoJ3NpdGVuYW1lJykpLiInIC8+XG4iOw0KICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzpkZXNjcmlwdGlvbicgY29udGVudD0nJGRlc2NyaXB0aW9uJyAvPlxuIjsNCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJywnJykgIT0gIiIpIHsNCiAgICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdmYjphcHBfaWQnIGNvbnRlbnQ9JyIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJywnJykuIicgLz5cbiI7DQogICAgfWVsc2V7DQogICAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nZmI6YWRtaW5zJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hZG1pbnMnLCcnKS4iJyAvPlxuIjsNCiAgICB9DQogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xvY2F0aW9uJywnJykgIT0gIiIpIHsNCiAgICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzpsb2NhbGl0eScgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb2NhdGlvbicsJycpLiInIC8+XG4iOw0KICAgIH0NCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJywnJykgIT0gIiIpIHsNCiAgICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzpyZWdpb24nIGNvbnRlbnQ9JyIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJywnJykuIicgLz5cbiI7DQogICAgfQ0KICAgIGlmICgoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbGF0aXR1ZGUnLCcnKSAhPSAiIikgJiYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xvbmdpdHVkZScsJycpICE9ICIiKSkgew0KICAgICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J29nOmxhdGl0dWRlJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xhdGl0dWRlJywnJykuIicgLz5cbiI7DQogICAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6bG9uZ2l0dWRlJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xvbmdpdHVkZScsJycpLiInIC8+XG4iOw0KICAgIH0NCn0NCg0KLy8gSW1hZ2UtTGluaw0KDQovL2lmICgoJGN1cmNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJ2ltYWdlJykgIT0gLTEpICYmICgkY3VyY29udGVudC0+R2V0UHJvcGVydHlWYWx1ZSgnaW1hZ2UnKSAhPSAiIikpICB7DQogICAgaWYgKCgkaW1nICE9IC0xKSAmJiAoJGltZyAhPSAiIikpICB7DQogICAgICBlY2hvICI8bGluayByZWw9J2ltYWdlX3NyYycgaHJlZj0nIi4kcm9vdF91cmwuIi91cGxvYWRzL2ltYWdlcy8iLiRpbWcuIicgLz4iOw0KICAgIH0NCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQppZiAoISAkdGhpcy0+Q2hlY2tBY2Nlc3MoKSkNCiAgICB7DQogICAgcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7DQogICAgfQ0KDQovKiAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0KDQogICBDb2RlIGZvciBTRU9Ub29sczIgImRlZmF1bHRhZG1pbiIgYWRtaW4gYWN0aW9uDQogICANCiAgIC09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tDQogICANCiAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGRpc3BsYXkgc29tZXRoaW5nIGZyb20gYSB0ZW1wbGF0ZQ0KICAgb3IgZG8gc29tZSBvdGhlciB0YXNrLg0KICAgDQoqLw0KJGRiID0gJiRnQ21zLT5HZXREYigpOw0KJG1lc3NhZ2UgPSAnJzsNCg0KLy8gRG8gdGhlIGFjdGlvbg0KaWYgKGlzc2V0KCRfR0VUWyd3aGF0J10pICYmICRfR0VUWyd3aGF0J10gPT0gJ3RvZ2dsZV9pbmRleCcpIHsNCiAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBXSEVSRSBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddOw0KICAgICRyZXN1bHQgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgJGluZm8gPSAkcmVzdWx0LT5mZXRjaFJvdygpOw0KICAgIGlmICgkaW5mb1snaW5kZXhhYmxlJ10gPT0gIjEiKSB7DQogICAgICAgICRxdWVyeSA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgU0VUIGluZGV4YWJsZSA9IDAgV0hFUkUgY29udGVudF9pZCA9ICcuJF9HRVRbJ2NvbnRlbnRfaWQnXTsNCiAgICB9ZWxzZXsNCiAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFNFVCBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddLicsIGluZGV4YWJsZSA9IDAgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgaW5kZXhhYmxlID0gMSc7DQogICAgfQ0KICAgICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgIA0KICAgIA0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3JvYm90cycsMSkgPT0gMSkgew0KICAgICAgICAkdGhpcy0+Y3JlYXRlUm9ib3RzVFhUKCk7DQogICAgfQ0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnLDEpID09IDEpIHsNCiAgICAgICAgJHRoaXMtPmNyZWF0ZVNpdGVtYXAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcsMSkgPT0gMSk7DQogICAgfQ0KICAgICRfR0VUWyd0YWInXSA9ICdwYWdlZGVzY3JpcHRpb25zJzsNCn0NCg0KaWYgKGlzc2V0KCRfR0VUWyd3aGF0J10pICYmICRfR0VUWyd3aGF0J10gPT0gJ3NldF9wcmlvcml0eScpIHsNCiAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgU0VUIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ10uJywgcHJpb3JpdHkgPSAnLiRfR0VUWydwcmlvcml0eSddLicgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgcHJpb3JpdHkgPSAnLiRfR0VUWydwcmlvcml0eSddOw0KICAgICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgICRfR0VUWyd0YWInXSA9ICdwYWdlZGVzY3JpcHRpb25zJzsNCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJywxKSA9PSAxKSB7DQogICAgICAgICR0aGlzLT5jcmVhdGVTaXRlbWFwKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwdXNoX3NpdGVtYXAnLDEpID09IDEpOw0KICAgIH0NCn0NCg0KaWYgKGlzc2V0KCRfR0VUWyd3aGF0J10pICYmICRfR0VUWyd3aGF0J10gPT0gJ3Jlc2V0X3ByaW9yaXR5Jykgew0KICAgICRxdWVyeSA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgU0VUIHByaW9yaXR5ID0gTlVMTCBXSEVSRSBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddOw0KICAgICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgICRfR0VUWyd0YWInXSA9ICdwYWdlZGVzY3JpcHRpb25zJzsNCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJywxKSA9PSAxKSB7DQogICAgICAgICR0aGlzLT5jcmVhdGVTaXRlbWFwKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwdXNoX3NpdGVtYXAnLDEpID09IDEpOw0KICAgIH0NCn0NCg0KaWYgKGlzc2V0KCRfR0VUWyd3aGF0J10pICYmICRfR0VUWyd3aGF0J10gPT0gJ3Jlc2V0X29ndHlwZScpIHsNCiAgICAkcXVlcnkgPSAnVVBEQVRFICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFNFVCBvZ3R5cGUgPSBOVUxMIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ107DQogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgJF9HRVRbJ3RhYiddID0gJ3BhZ2VkZXNjcmlwdGlvbnMnOw0KfQ0KDQppZiAoaXNzZXQoJF9HRVRbJ3doYXQnXSkgJiYgJF9HRVRbJ3doYXQnXSA9PSAncmVzZXRfa2V5d29yZHMnKSB7DQogICAgJHF1ZXJ5ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBTRVQga2V5d29yZHMgPSBOVUxMIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ107DQogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgJF9HRVRbJ3RhYiddID0gJ3BhZ2VkZXNjcmlwdGlvbnMnOw0KfQ0KDQppZiAoaXNzZXQoJF9HRVRbJ3doYXQnXSkgJiYgJF9HRVRbJ3doYXQnXSA9PSAnZWRpdF9vZ3R5cGUnKSB7DQogICAgZWNobyAkdGhpcy0+UmVkaXJlY3QobnVsbCwgJ2VkaXRfb2d0eXBlJywgJHRoaXMtPnJldHVybmlkLCBBcnJheSgnY29udGVudF9pZCc9PiRfR0VUWydjb250ZW50X2lkJ10pKTsNCn0NCg0KaWYgKGlzc2V0KCRfR0VUWyd3aGF0J10pICYmICRfR0VUWyd3aGF0J10gPT0gJ2VkaXRfa2V5d29yZHMnKSB7DQogICAgZWNobyAkdGhpcy0+UmVkaXJlY3QobnVsbCwgJ2VkaXRfa2V5d29yZHMnLCAkdGhpcy0+cmV0dXJuaWQsIEFycmF5KCdjb250ZW50X2lkJz0+JF9HRVRbJ2NvbnRlbnRfaWQnXSkpOw0KfQ0KICAgIA0KICAgIA0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0YWJfaGVhZGVycycsJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpLg0KICAgICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3Nlb2FsZXJ0cycsJHRoaXMtPkxhbmcoJ3RpdGxlX3Nlb2FsZXJ0cycpKS4NCiAgICAkdGhpcy0+U2V0VGFiSGVhZGVyKCdwYWdlZGVzY3JpcHRpb25zJywkdGhpcy0+TGFuZygndGl0bGVfcGFnZWRlc2NyaXB0aW9ucycpLCAoaXNzZXQoJF9HRVRbJ3RhYiddKSAmJiAkX0dFVFsndGFiJ10gPT0gJ3BhZ2VkZXNjcmlwdGlvbnMnKSkuDQogICAgJHRoaXMtPlNldFRhYkhlYWRlcignbWV0YXNldHRpbmdzJywkdGhpcy0+TGFuZygndGl0bGVfbWV0YXNldHRpbmdzJyksIChpc3NldCgkX0dFVFsndGFiJ10pICYmICRfR0VUWyd0YWInXSA9PSAnbWV0YXNldHRpbmdzJykpLg0KICAgICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3NpdGVtYXBzZXR0aW5ncycsJHRoaXMtPkxhbmcoJ3RpdGxlX3NpdGVtYXBzZXR0aW5ncycpLCAoaXNzZXQoJF9HRVRbJ3RhYiddKSAmJiAkX0dFVFsndGFiJ10gPT0gJ3NpdGVtYXBzZXR0aW5ncycpKS4NCiAgICAkdGhpcy0+U2V0VGFiSGVhZGVyKCdrZXl3b3Jkc2V0dGluZ3MnLCR0aGlzLT5MYW5nKCd0aXRsZV9rZXl3b3Jkc2V0dGluZ3MnKSwgKGlzc2V0KCRfR0VUWyd0YWInXSkgJiYgJF9HRVRbJ3RhYiddID09ICdrZXl3b3Jkc2V0dGluZ3MnKSkuDQogICAgJHRoaXMtPkVuZFRhYkhlYWRlcnMoKS4kdGhpcy0+U3RhcnRUYWJDb250ZW50KCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRfdGFiJywkdGhpcy0+RW5kVGFiKCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0YWJfZm9vdGVycycsJHRoaXMtPkVuZFRhYkNvbnRlbnQoKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X3Nlb2FsZXJ0c190YWInLCR0aGlzLT5TdGFydFRhYignc2VvYWxlcnRzJykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9wYWdlZGVzY3JpcHRpb25zX3RhYicsJHRoaXMtPlN0YXJ0VGFiKCdwYWdlZGVzY3JpcHRpb25zJykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9tZXRhc2V0dGluZ3NfdGFiJywkdGhpcy0+U3RhcnRUYWIoJ21ldGFzZXR0aW5ncycpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfc2l0ZW1hcHNldHRpbmdzX3RhYicsJHRoaXMtPlN0YXJ0VGFiKCdzaXRlbWFwc2V0dGluZ3MnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X2tleXdvcmRzZXR0aW5nc190YWInLCR0aGlzLT5TdGFydFRhYigna2V5d29yZHNldHRpbmdzJykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9zZWN0aW9uJywnZGVmYXVsdGFkbWluJyk7DQoNCmlmIChpc3NldCgkX0dFVFsnbWVzc2FnZSddKSkgew0KICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCR0aGlzLT5zaG93TWVzc2FnZSgkdGhpcy0+bGFuZygkX0dFVFsnbWVzc2FnZSddKSkpOw0KfSBlbHNlIHsNCiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJywnJyk7DQp9DQoNCi8qIFNFTyBBbGVydHMgVGFiICovDQoNCiRhbGVydHMgID0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ2FsZXJ0c191cmdlbnQnLCAkdGhpcy0+TGFuZygndGl0bGVfYWxlcnRzX3VyZ2VudCcpKTsNCg0KJHVyZ2VudF9hbGVydHMgPSAkdGhpcy0+Z2V0VXJnZW50QWxlcnRzKCk7DQoNCmlmIChjb3VudCgkdXJnZW50X2FsZXJ0cykgPT0gMCkgew0KICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL3N5c3RlbS90cnVlLmdpZiIgYWxpZ249ImFic21pZGRsZSIgLz4gJy4kdGhpcy0+bGFuZygnbm90aGluZ190b19iZV9maXhlZCcpLic8YnIgLz48YnIgLz4nOw0KfWVsc2V7DQogICRncm91cHMgPSBBcnJheSgpOw0KICBmb3JlYWNoICgkdXJnZW50X2FsZXJ0cyBhcyAkYWxlcnQpIHsNCiAgICAkZ3JvdXBzWyRhbGVydFsnZ3JvdXAnXV1bXSA9ICRhbGVydDsNCiAgfQ0KICBmb3JlYWNoKCRncm91cHMgYXMgJGdyb3VwID0+ICRnYWxlcnRzKSB7DQogIAkkY291bnQgPSBjb3VudCgkZ2FsZXJ0cyk7DQogICAgaWYgKGNvdW50KCRnYWxlcnRzKSA+IDIwKSB7DQogICAgICAgICRwYXJ0cyA9IGFycmF5X2NodW5rKCRnYWxlcnRzLCAyMCk7DQogICAgICAgICRnYWxlcnRzID0gJHBhcnRzWzBdOw0KICAgICAgICAkY291bnQgPSAiPiAyMCI7DQogICAgfQ0KICAgIGlmIChjb3VudCgkZ2FsZXJ0cykgPT0gMSkgew0KICAgICAgICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL05vdGlmaWNhdGlvbnMvMS5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+IDxiPicuJGdhbGVydHNbMF1bJ21lc3NhZ2UnXS4nPC9iPiBbJy5pbXBsb2RlKCcgfCAnLCRnYWxlcnRzWzBdWydsaW5rcyddKS4nXTxiciAvPjxiciAvPic7DQogICAgfWVsc2V7DQogICAgICAkZ3JvdXBfdGl0bGUgPSAkdGhpcy0+bGFuZygnZ3JvdXB0aXRsZV8nLiRncm91cCwgQXJyYXkoJGNvdW50KSk7DQogICAgICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL05vdGlmaWNhdGlvbnMvMS5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+IDxiPicuJGdyb3VwX3RpdGxlLic8L2I+IFs8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQobnVsbCkiIG9uQ2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwndXJnZW50X2dyb3VwXycuJGdyb3VwLidcJykuc3R5bGUuZGlzcGxheSA9IFwnYmxvY2tcJyI+Jy4kdGhpcy0+bGFuZygndmlld19hbGwnKS4nPC9hPl08YnIgLz48YnIgLz4nOw0KICAgICAgJGFsZXJ0cyAuPSAnPGRpdiBpZD0idXJnZW50X2dyb3VwXycuJGdyb3VwLiciIHN0eWxlPSJwYWRkaW5nLWxlZnQ6IDMwcHg7IGRpc3BsYXk6IG5vbmU7Ij4nOw0KICAgICAgZm9yZWFjaCAoJGdhbGVydHMgYXMgJGFsZXJ0KSB7DQogICAgICAgICRhbGVydHMgLj0gJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvTm90aWZpY2F0aW9ucy8xLmdpZiIgYWxpZ249ImFic21pZGRsZSIgLz4gPGI+Jy4kYWxlcnRbJ21lc3NhZ2UnXS4nPC9iPiBbJy5pbXBsb2RlKCcgfCAnLCRhbGVydFsnbGlua3MnXSkuJ108YnIgLz48YnIgLz4nOw0KICAgICAgfQ0KICAgICAgJGFsZXJ0cyAuPSAnPC9kaXY+JzsNCiAgICB9DQogIH0NCn0NCg0KJGFsZXJ0cyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRFbmQoKTsNCg0KJGFsZXJ0cyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRTdGFydChudWxsLCAnYWxlcnRzX2ltcG9ydGFudCcsICR0aGlzLT5MYW5nKCd0aXRsZV9hbGVydHNfaW1wb3J0YW50JykpOw0KDQokaW1wb3J0YW50X2FsZXJ0cyA9ICR0aGlzLT5nZXRJbXBvcnRhbnRBbGVydHMoKTsNCmlmIChjb3VudCgkaW1wb3J0YW50X2FsZXJ0cykgPT0gMCkgew0KICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL3N5c3RlbS90cnVlLmdpZiIgYWxpZ249ImFic21pZGRsZSIgLz4gJy4kdGhpcy0+bGFuZygnbm90aGluZ190b19iZV9maXhlZCcpLic8YnIgLz48YnIgLz4nOw0KfWVsc2V7DQogICRncm91cHMgPSBBcnJheSgpOw0KICBmb3JlYWNoICgkaW1wb3J0YW50X2FsZXJ0cyBhcyAkYWxlcnQpIHsNCiAgICAkZ3JvdXBzWyRhbGVydFsnZ3JvdXAnXV1bXSA9ICRhbGVydDsNCiAgfQ0KICBmb3JlYWNoKCRncm91cHMgYXMgJGdyb3VwID0+ICRnYWxlcnRzKSB7DQogICAgJGNvdW50ID0gY291bnQoJGdhbGVydHMpOw0KICAgIGlmIChjb3VudCgkZ2FsZXJ0cykgPiAyMCkgew0KICAgICAgICAkcGFydHMgPSBhcnJheV9jaHVuaygkZ2FsZXJ0cywgMjApOw0KICAgICAgICAkZ2FsZXJ0cyA9ICRwYXJ0c1swXTsNCiAgICAgICAgJGNvdW50ID0gIj4gMjAiOw0KICAgIH0NCiAgICBpZiAoY291bnQoJGdhbGVydHMpID09IDEpIHsNCiAgICAgICAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9Ob3RpZmljYXRpb25zLzIuZ2lmIiBhbGlnbj0iYWJzbWlkZGxlIiAvPiA8Yj4nLiRnYWxlcnRzWzBdWydtZXNzYWdlJ10uJzwvYj4gWycuaW1wbG9kZSgnIHwgJywkZ2FsZXJ0c1swXVsnbGlua3MnXSkuJ108YnIgLz48YnIgLz4nOw0KICAgIH1lbHNlew0KICAgICAgJGdyb3VwX3RpdGxlID0gJHRoaXMtPmxhbmcoJ2dyb3VwdGl0bGVfJy4kZ3JvdXAsIEFycmF5KCRjb3VudCkpOw0KICAgICAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9Ob3RpZmljYXRpb25zLzIuZ2lmIiBhbGlnbj0iYWJzbWlkZGxlIiAvPiA8Yj4nLiRncm91cF90aXRsZS4nPC9iPiBbPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKG51bGwpIiBvbkNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2ltcG9ydGFudF9ncm91cF8nLiRncm91cC4nXCcpLnN0eWxlLmRpc3BsYXkgPSBcJ2Jsb2NrXCciPicuJHRoaXMtPmxhbmcoJ3ZpZXdfYWxsJykuJzwvYT5dPGJyIC8+PGJyIC8+JzsNCiAgICAgICRhbGVydHMgLj0gJzxkaXYgaWQ9ImltcG9ydGFudF9ncm91cF8nLiRncm91cC4nIiBzdHlsZT0icGFkZGluZy1sZWZ0OiAzMHB4OyBkaXNwbGF5OiBub25lOyI+JzsNCiAgICAgIGZvcmVhY2ggKCRnYWxlcnRzIGFzICRhbGVydCkgew0KICAgICAgICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL05vdGlmaWNhdGlvbnMvMi5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+IDxiPicuJGFsZXJ0WydtZXNzYWdlJ10uJzwvYj4gWycuaW1wbG9kZSgnIHwgJywkYWxlcnRbJ2xpbmtzJ10pLiddPGJyIC8+PGJyIC8+JzsNCiAgICAgIH0NCiAgICAgICRhbGVydHMgLj0gJzwvZGl2Pic7DQogICAgfQ0KICB9DQp9DQoNCiRhbGVydHMgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0RW5kKCk7DQoNCiRhbGVydHMgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ2FsZXJ0c19ub3RpY2VzJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2FsZXJ0c19ub3RpY2VzJykpOw0KDQokbm90aWNlX2FsZXJ0cyA9ICR0aGlzLT5nZXROb3RpY2VBbGVydHMoKTsNCmlmIChjb3VudCgkbm90aWNlX2FsZXJ0cykgPT0gMCkgew0KICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL3N5c3RlbS90cnVlLmdpZiIgYWxpZ249ImFic21pZGRsZSIgLz4gJy4kdGhpcy0+bGFuZygnbm90aGluZ190b19iZV9maXhlZCcpLic8YnIgLz48YnIgLz4nOw0KfWVsc2V7DQogIGZvcmVhY2ggKCRub3RpY2VfYWxlcnRzIGFzICRhbGVydCkgew0KICAgICRhbGVydHMgLj0gJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvTm90aWZpY2F0aW9ucy8zLmdpZiIgYWxpZ249ImFic21pZGRsZSIgLz4gPGI+Jy4kYWxlcnRbJ21lc3NhZ2UnXS4nPC9iPiBbJy5pbXBsb2RlKCcgfCAnLCRhbGVydFsnbGlua3MnXSkuJ108YnIgLz48YnIgLz4nOw0KICB9DQp9DQoNCiRhbGVydHMgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0RW5kKCk7DQoNCg0KDQovKiBQYWdlIHNldHRpbmdzIFRhYiAqLw0KDQokcGFnZXNldHRpbmdzICA9ICc8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSI+JzsNCiRwYWdlc2V0dGluZ3MgLj0gJzx0cj4nOw0KJHBhZ2VzZXR0aW5ncyAuPSAnPHRoPicuJHRoaXMtPmxhbmcoJ3BhZ2VfaWQnKS4nPC90aD4nOw0KJHBhZ2VzZXR0aW5ncyAuPSAnPHRoPicuJHRoaXMtPmxhbmcoJ3BhZ2VfbmFtZScpLic8L3RoPic7DQokcGFnZXNldHRpbmdzIC49ICc8dGg+Jy4kdGhpcy0+bGFuZygncHJpb3JpdHknKS4nPC90aD4nOw0KJHBhZ2VzZXR0aW5ncyAuPSAnPHRoPicuJHRoaXMtPmxhbmcoJ29nX3R5cGUnKS4nPC90aD4nOw0KJHBhZ2VzZXR0aW5ncyAuPSAnPHRoPicuJHRoaXMtPmxhbmcoJ2tleXdvcmRzJykuJzwvdGg+JzsNCiRwYWdlc2V0dGluZ3MgLj0gJzx0aD4nLiR0aGlzLT5sYW5nKCdkZXNjcmlwdGlvbicpLic8L3RoPic7DQokcGFnZXNldHRpbmdzIC49ICc8dGg+Jy4kdGhpcy0+bGFuZygnaW5kZXgnKS4nPC90aD4nOw0KJHBhZ2VzZXR0aW5ncyAuPSAnPC90cj4nOw0KDQoNCiRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50IE9SREVSIEJZIGhpZXJhcmNoeSBBU0MnOw0KJHJlc3VsdCA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCg0KJGogPSAwOw0Kd2hpbGUgKCRwYWdlID0gJHJlc3VsdC0+ZmV0Y2hSb3coKSkgew0KCQ0KICAgICRwcmVmaXggPSAiIjsNCiAgICAkYXV0b19wcmlvcml0eSA9IDgwOw0KICAgIGZvciAoJGkgPSAwOyAkaSA8IHN1YnN0cl9jb3VudCgkcGFnZVsnaGllcmFyY2h5J10sJy4nKTsgJGkrKykgew0KICAgICAgICAkcHJlZml4IC49ICcmcmFxdW87ICc7DQogICAgICAgICRhdXRvX3ByaW9yaXR5ICA9ICRhdXRvX3ByaW9yaXR5IC8gMjsNCiAgICB9DQogICAgaWYgKCRwYWdlWydkZWZhdWx0X2NvbnRlbnQnXSA9PSAxKSB7DQogICAgICAgICRhdXRvX3ByaW9yaXR5ID0gMTAwOw0KICAgIH0NCiAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudF9wcm9wcyBXSEVSRSBjb250ZW50X2lkID0gJy4kcGFnZVsnY29udGVudF9pZCddLicgQU5EIHByb3BfbmFtZSA9ICInLnN0cl9yZXBsYWNlKCcgJywnXycsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2Jsb2NrJywnJykpLiciJzsNCiAgICAkcmVzdWx0MSA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCiAgICAkZGVzYyA9ICRyZXN1bHQxLT5mZXRjaFJvdygpOw0KICAgICRkZXNjcmlwdGlvbiA9ICRkZXNjWydjb250ZW50J107DQoNCiAgICAka3cgPSBhcnJheV9mbGlwKCR0aGlzLT5nZXRLZXl3b3JkU3VnZ2VzdGlvbnMoJHBhZ2VbJ2NvbnRlbnRfaWQnXSkpOw0KICAgIA0KICAgICRkZXNjcmlwdGlvbl9hdXRvID0gZmFsc2U7DQogICAgaWYgKCgkZGVzY3JpcHRpb24gPT0gIiIpICYmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZScsJ2ZhbHNlJykgPT0gJ3RydWUnKSkgew0KICAgIAkkbGFzdF9rZXl3b3JkID0gYXJyYXlfcG9wKCRrdyk7DQogICAgCSRrZXl3b3JkcyA9IGltcGxvZGUoJywgJywka3cpIC4gIiAiIC4gJHRoaXMtPmxhbmcoJ2FuZCcpIC4gIiAiIC4gJGxhc3Rfa2V5d29yZDsNCiAgICAJJGRlc2NyaXB0aW9uID0gJHRoaXMtPmxhbmcoJ2F1dG9fZ2VuZXJhdGVkJykuIjogIi5zdHJfcmVwbGFjZSgne2tleXdvcmRzfScsJGtleXdvcmRzLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvJywnJykpOw0KICAgIAkkZGVzY3JpcHRpb24gPSBzdHJfcmVwbGFjZSgne3RpdGxlfScsJHBhZ2VbJ2NvbnRlbnRfbmFtZSddLCRkZXNjcmlwdGlvbik7DQogICAgCSRkZXNjcmlwdGlvbl9hdXRvID0gdHJ1ZTsNCiAgICB9DQogICAgDQogICAgJGRlZmF1bHRfb2d0eXBlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3R5cGUnLCcnKTsNCg0KICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRwYWdlWydjb250ZW50X2lkJ107DQogICAgJHJlc3VsdDIgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgJGluZm8gPSAkcmVzdWx0Mi0+ZmV0Y2hSb3coKTsNCiAgICAgICAgDQogICAgJHByaW9yaXR5ID0gJyhhdXRvKSAnLiRhdXRvX3ByaW9yaXR5LiclICc7DQogICAgJG9ndHlwZSA9ICcoZGVmYXVsdCkgJy4kZGVmYXVsdF9vZ3R5cGUuJyAnLiR0aGlzLT5DcmVhdGVUb29sdGlwTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9TRU9Ub29sczIvaW1nL2VkaXQucG5nIiBhbGlnbj0iYWJzbWlkZGxlIiAvPicsICR0aGlzLT5sYW5nKCdlZGl0X3ZhbHVlJyksIEFycmF5KCJ3aGF0Ij0+ImVkaXRfb2d0eXBlIiwiY29udGVudF9pZCI9PiRwYWdlWydjb250ZW50X2lkJ10pKTsNCiAgICAka2V5d29yZHMgPSAnKGF1dG8pICcuY291bnQoJGt3KS4nICcuJHRoaXMtPkNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzL1NFT1Rvb2xzMi9pbWcvZWRpdC5wbmciIGFsaWduPSJhYnNtaWRkbGUiIC8+JywgaW1wbG9kZSgnLCAnLCRrdykuJzsgJy4kdGhpcy0+bGFuZygnZWRpdF92YWx1ZScpLCBBcnJheSgid2hhdCI9PiJlZGl0X2tleXdvcmRzIiwiY29udGVudF9pZCI9PiRwYWdlWydjb250ZW50X2lkJ10pKTsNCiAgICAkaW5kZXhhYmxlID0gJ3RydWUnOw0KICAgIGlmICgkaW5mb1snY29udGVudF9pZCddICE9ICIiKSB7DQogICAgICAgIGlmICgkaW5mb1sncHJpb3JpdHknXSAhPSAwKSB7DQogICAgICAgICAgJHByaW9yaXR5ID0gJzxiPicuJGluZm9bJ3ByaW9yaXR5J10gLiAnJSAnLiR0aGlzLT5DcmVhdGVUb29sdGlwTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9TRU9Ub29sczIvaW1nL3Jlc2V0LnBuZyIgYWxpZ249ImFic21pZGRsZSIgLz4nLCAkdGhpcy0+bGFuZygncmVzZXRfdG9fZGVmYXVsdCcpLCBBcnJheSgid2hhdCI9PiJyZXNldF9wcmlvcml0eSIsImNvbnRlbnRfaWQiPT4kcGFnZVsnY29udGVudF9pZCddKSkgLiAnPC9iPic7DQogICAgICAgICAgJGF1dG9fcHJpb3JpdHkgPSAkaW5mb1sncHJpb3JpdHknXTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoJGluZm9bJ29ndHlwZSddICE9ICIiKSB7DQogICAgICAgICAgJG9ndHlwZSA9ICc8Yj4nLiRpbmZvWydvZ3R5cGUnXSAuICcgJyAuICR0aGlzLT5DcmVhdGVUb29sdGlwTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9TRU9Ub29sczIvaW1nL3Jlc2V0LnBuZyIgYWxpZ249ImFic21pZGRsZSIgLz4nLCAkdGhpcy0+bGFuZygncmVzZXRfdG9fZGVmYXVsdCcpLCBBcnJheSgid2hhdCI9PiJyZXNldF9vZ3R5cGUiLCJjb250ZW50X2lkIj0+JHBhZ2VbJ2NvbnRlbnRfaWQnXSkpIC4gJHRoaXMtPkNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzL1NFT1Rvb2xzMi9pbWcvZWRpdC5wbmciIGFsaWduPSJhYnNtaWRkbGUiIC8+JywgJHRoaXMtPmxhbmcoJ2VkaXRfdmFsdWUnKSwgQXJyYXkoIndoYXQiPT4iZWRpdF9vZ3R5cGUiLCJjb250ZW50X2lkIj0+JHBhZ2VbJ2NvbnRlbnRfaWQnXSkpLic8L2I+JzsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoJGluZm9bJ2tleXdvcmRzJ10gIT0gIiIpIHsNCiAgICAgICAgICAgICRrZXl3b3JkcyA9ICc8Yj4nLmNvdW50KGV4cGxvZGUoJyAnLCRpbmZvWydrZXl3b3JkcyddKSkgLiAkdGhpcy0+Q3JlYXRlVG9vbHRpcExpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvU0VPVG9vbHMyL2ltZy9yZXNldC5wbmciIGFsaWduPSJhYnNtaWRkbGUiIC8+JywgJHRoaXMtPmxhbmcoJ3Jlc2V0X3RvX2RlZmF1bHQnKSwgQXJyYXkoIndoYXQiPT4icmVzZXRfa2V5d29yZHMiLCJjb250ZW50X2lkIj0+JHBhZ2VbJ2NvbnRlbnRfaWQnXSkpIC4gJHRoaXMtPkNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzL1NFT1Rvb2xzMi9pbWcvZWRpdC5wbmciIGFsaWduPSJhYnNtaWRkbGUiIC8+JywgJHRoaXMtPmxhbmcoJ2VkaXRfdmFsdWUnKSwgQXJyYXkoIndoYXQiPT4iZWRpdF9rZXl3b3JkcyIsImNvbnRlbnRfaWQiPT4kcGFnZVsnY29udGVudF9pZCddKSkuJzwvYj4nOw0KICAgICAgICB9DQogICAgICAgIGlmICgkaW5mb1snaW5kZXhhYmxlJ10gPT0gMCkgew0KICAgICAgICAgICRpbmRleGFibGUgPSAnZmFsc2UnOw0KICAgICAgICB9DQogICAgfQ0KICAgIA0KICAgICR1cGRvd24gID0gJHRoaXMtPkNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvc3lzdGVtL2Fycm93LWQuZ2lmIiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+JywgJHRoaXMtPmxhbmcoJ2RlY3JlYXNlX3ByaW9yaXR5JyksIEFycmF5KCd3aGF0Jz0+J3NldF9wcmlvcml0eScsJ3ByaW9yaXR5Jz0+JGF1dG9fcHJpb3JpdHktMTAsJ2NvbnRlbnRfaWQnPT4kcGFnZVsnY29udGVudF9pZCddKSk7DQogICAgJHVwZG93biAuPSAkdGhpcy0+Q3JlYXRlVG9vbHRpcExpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vYXJyb3ctdS5naWYiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz4nLCAkdGhpcy0+bGFuZygnaW5jcmVhc2VfcHJpb3JpdHknKSwgQXJyYXkoJ3doYXQnPT4nc2V0X3ByaW9yaXR5JywncHJpb3JpdHknPT4kYXV0b19wcmlvcml0eSsxMCwnY29udGVudF9pZCc9PiRwYWdlWydjb250ZW50X2lkJ10pKTsNCiAgICANCiAgICAkcGFnZXNldHRpbmdzIC49ICc8dHIgY2xhc3M9InJvdycuKCRqICUgMiArIDEpLiciPic7DQogICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJHBhZ2VbJ2NvbnRlbnRfaWQnXS4nPC90ZD4nOw0KICAgICRwYWdlc2V0dGluZ3MgLj0gJzx0ZD4nLiRwcmVmaXggLicgJy4kcGFnZVsnY29udGVudF9uYW1lJ10uJzwvdGQ+JzsNCiAgICBpZiAoJHBhZ2VbJ3R5cGUnXSA9PSAnY29udGVudCcgfHwgJHBhZ2VbJ3R5cGUnXSA9PSAnY29udGVudDInICkgew0KICAgICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJHVwZG93bi4nICcuJHByaW9yaXR5Lic8L3RkPic7DQogICAgICAkcGFnZXNldHRpbmdzIC49ICc8dGQ+Jy4kb2d0eXBlLic8L3RkPic7DQogICAgICAkcGFnZXNldHRpbmdzIC49ICc8dGQ+Jy4ka2V5d29yZHMuJzwvdGQ+JzsNCiAgICAgIGlmICgkZGVzY3JpcHRpb24gIT0gIiIpIHsNCiAgICAgICAgaWYgKCRkZXNjcmlwdGlvbl9hdXRvKSB7DQogICAgICAJICAkcGFnZXNldHRpbmdzIC49ICc8dGQ+PGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vd2FybmluZy5naWYiIHRpdGxlPSInLnN0cmlwX3RhZ3MoJGRlc2NyaXB0aW9uKS4nIiAvPjwvdGQ+JzsNCiAgICAgICAgfWVsc2V7DQogICAgICAgICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPjxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvc3lzdGVtL3RydWUuZ2lmIiB0aXRsZT0iJy5zdHJpcF90YWdzKCRkZXNjcmlwdGlvbikuJyIgLz48L3RkPic7DQogICAgICAgIH0NCiAgICAgIH1lbHNlew0KICAgICAgICANCiAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydzcF8nXSkpDQogICAgICAgICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPjxhIGhyZWY9ImVkaXRjb250ZW50LnBocD9zcF89Jy4kX0dFVFsnc3BfJ10uJyZjb250ZW50X2lkPScuJHBhZ2VbJ2NvbnRlbnRfaWQnXS4nIj48aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL3N5c3RlbS9mYWxzZS5naWYiIGJvcmRlcj0iMCIgdGl0bGU9IicuJHRoaXMtPmxhbmcoJ2NsaWNrX3RvX2FkZF9kZXNjcmlwdGlvbicpLiciIC8+PC9hPjwvdGQ+JzsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgICRwYWdlc2V0dGluZ3MgLj0gJzx0ZD48YSBocmVmPSJlZGl0Y29udGVudC5waHA/X3N4Xz0nLiRfR0VUWydfc3hfJ10uJyZjb250ZW50X2lkPScuJHBhZ2VbJ2NvbnRlbnRfaWQnXS4nIj48aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL3N5c3RlbS9mYWxzZS5naWYiIGJvcmRlcj0iMCIgdGl0bGU9IicuJHRoaXMtPmxhbmcoJ2NsaWNrX3RvX2FkZF9kZXNjcmlwdGlvbicpLiciIC8+PC9hPjwvdGQ+JzsNCiAgICAgICAgDQogICAgICB9DQogICAgICAkcGFnZXNldHRpbmdzIC49ICc8dGQ+Jy4kdGhpcy0+Q3JlYXRlVG9vbHRpcExpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vJy4kaW5kZXhhYmxlLicuZ2lmIiAvPicsICR0aGlzLT5sYW5nKCd0b2dnbGUnKSwgQXJyYXkoJ3doYXQnPT4ndG9nZ2xlX2luZGV4JywnY29udGVudF9pZCc9PiRwYWdlWydjb250ZW50X2lkJ10pKS4nPC90ZD4nOw0KICAgIH1lbHNlew0KICAgIAkkcGFnZXNldHRpbmdzIC49ICc8dGQ+LS0tPC90ZD4nOw0KICAgIAkkcGFnZXNldHRpbmdzIC49ICc8dGQ+LS0tPC90ZD4nOw0KICAgIAkkcGFnZXNldHRpbmdzIC49ICc8dGQ+LS0tPC90ZD4nOw0KICAgIAkkcGFnZXNldHRpbmdzIC49ICc8dGQ+LS0tPC90ZD4nOw0KICAgIAkkcGFnZXNldHRpbmdzIC49ICc8dGQ+LS0tPC90ZD4nOw0KICAgIH0NCiAgICAkcGFnZXNldHRpbmdzIC49ICc8L3RyPic7DQogICAgJGorKzsNCiAgICANCn0NCg0KJHBhZ2VzZXR0aW5ncyAuPSAnPC90YWJsZT4nOw0KDQovKiBTRU8gU2V0dGluZ3MgVGFiICovDQoNCi8vIEdldCBpbWFnZSBmaWxlcyBmcm9tIC91cGxvYWRzL2ltYWdlcw0KJGZpbGVzX2xpc3QgPSBBcnJheSgkdGhpcy0+bGFuZygnbm9uZScpPT4iIik7DQokZHAgPSBvcGVuZGlyKCRnQ21zLT5jb25maWdbJ3Jvb3RfcGF0aCddLicvdXBsb2Fkcy9pbWFnZXMnKTsNCndoaWxlICgkZmlsZSA9IHJlYWRkaXIoJGRwKSkgew0KICAgIGlmIChzdHJwb3Moc3Vic3RyKCRmaWxlLCAtNSksJy5naWYnKSAhPT0gZmFsc2UpIHsNCiAgICAgICAgJGZpbGVzX2xpc3RbJGZpbGVdID0gJGZpbGU7DQogICAgfQ0KICAgIGlmIChzdHJwb3Moc3Vic3RyKCRmaWxlLCAtNSksJy5wbmcnKSAhPT0gZmFsc2UpIHsNCiAgICAgICAgJGZpbGVzX2xpc3RbJGZpbGVdID0gJGZpbGU7DQogICAgfQ0KICAgIGlmIChzdHJwb3Moc3Vic3RyKCRmaWxlLCAtNSksJy5qcGcnKSAhPT0gZmFsc2UpIHsNCiAgICAgICAgJGZpbGVzX2xpc3RbJGZpbGVdID0gJGZpbGU7DQogICAgfQ0KICAgIGlmIChzdHJwb3Moc3Vic3RyKCRmaWxlLCAtNSksJy5qcGVnJykgIT09IGZhbHNlKSB7DQogICAgICAgICRmaWxlc19saXN0WyRmaWxlXSA9ICRmaWxlOw0KICAgIH0NCn0NCmNsb3NlZGlyKCRkcCk7DQoNCiRzZXR0aW5ncyAgPSAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KG51bGwsICdjaGFuZ2VzZXR0aW5ncycpOw0KDQovKiBQYWdlIFRpdGxlICovDQokc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ3RpdGxlX2Rlc2NyaXB0aW9uJywgJHRoaXMtPkxhbmcoJ3RpdGxlX3RpdGxlX2Rlc2NyaXB0aW9uJykpOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ3RpdGxlX3RpdGxlJykuJzo8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICd0aXRsZScsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0aXRsZScsJ3t0aXRsZX0gfCB7JHNpdGVuYW1lfSAtIHskdGl0bGVfa2V5d29yZHN9JyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ3RpdGxlX3RpdGxlX2hlbHAnKS4nPC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygndGl0bGVfbWV0YV90aXRsZScpLic6PC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAndGl0bGVfbWV0YScsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0aXRsZV9tZXRhJywne3RpdGxlfSB8IHskc2l0ZW5hbWV9JyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ3RpdGxlX21ldGFfaGVscCcpLic8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdkZXNjcmlwdGlvbl9ibG9ja190aXRsZScpLic6PC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAnZGVzY3JpcHRpb25fYmxvY2snLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnZGVzY3JpcHRpb25fYmxvY2tfaGVscCcpLic8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnKSAuICc6ICcgLiAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveChudWxsLCAnZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZScsIDEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJywxKSkgLiAnPC9wPic7DQoNCg0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2Rlc2NyaXB0aW9uX2F1dG9fdGl0bGUnKS4nOjwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ2Rlc2NyaXB0aW9uX2F1dG8nLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0bycsJ1RoaXMgcGFnZSBjb3ZlcnMgdGhlIHRvcGljcyB7a2V5d29yZHN9JyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ2Rlc2NyaXB0aW9uX2F1dG9faGVscCcpLic8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdkZWZhdWx0X2tleXdvcmRzX3RpdGxlJykuJzo8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdkZWZhdWx0X2tleXdvcmRzJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfa2V5d29yZHMnLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnZGVmYXVsdF9rZXl3b3Jkc19oZWxwJykuJzwvcD4nOw0KJHNldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldEVuZCgpOw0KDQovKiBNRVRBIFR5cGVzICovDQokc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ21ldGFfdHlwZScsICR0aGlzLT5MYW5nKCd0aXRsZV9tZXRhX3R5cGUnKSk7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdtZXRhX2NyZWF0ZV9zdGFuZGFyZCcpIC4gJzogJyAuICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KG51bGwsICdtZXRhX3N0YW5kYXJkJywgMSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfc3RhbmRhcmQnLDEpKSAuICc8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ21ldGFfY3JlYXRlX2R1YmxpbmNvcmUnKSAuICc6ICcgLiAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveChudWxsLCAnbWV0YV9kdWJsaW5jb3JlJywgMSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfZHVibGluY29yZScsMSkpIC4gJzwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnbWV0YV9jcmVhdGVfb3BlbmdyYXBoJykgLiAnOiAnIC4gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3gobnVsbCwgJ21ldGFfb3BlbmdyYXBoJywgMSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoJywxKSkgLiAnPC9wPic7DQokc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0RW5kKCk7DQoNCi8qIE1FVEEgRGVmYXVsdHMgKi8NCiRzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRTdGFydChudWxsLCAnbWV0YV9kZWZhdWx0cycsICR0aGlzLT5MYW5nKCd0aXRsZV9tZXRhX2RlZmF1bHRzJykpOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfcHVibGlzaGVyJykuJzo8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX3B1Ymxpc2hlcicsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX3B1Ymxpc2hlcl9oZWxwJykuJzwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfY29udHJpYnV0b3InKS4nOjwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfY29udHJpYnV0b3InLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9jb250cmlidXRvcicsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX2NvbnRyaWJ1dG9yX2hlbHAnKS4nPC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9jb3B5cmlnaHQnKS4nOjwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfY29weXJpZ2h0JywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfY29weXJpZ2h0JywnKEMpICcuZGF0ZSgnWScpLicuIEFsbCByaWdodHMgcmVzZXJ2ZWQuJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfY29weXJpZ2h0X2hlbHAnKS4nPC9wPjxiciAvPic7DQoNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGI+Jy4kdGhpcy0+bGFuZygnbWV0YV9sb2NhdGlvbl9kZXNjcmlwdGlvbicpLic8L2I+PC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9sb2NhdGlvbicpLic6PC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9sb2NhdGlvbicsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xvY2F0aW9uJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfbG9jYXRpb25faGVscCcpLic8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX3JlZ2lvbicpLic6PC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9yZWdpb24nLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9yZWdpb24nLCcnKSwgNSwgNSkuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX3JlZ2lvbl9oZWxwJykuJzwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfbGF0aXR1ZGUnKS4nOjwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfbGF0aXR1ZGUnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX2xhdGl0dWRlX2hlbHAnKS4nPC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9sb25naXR1ZGUnKS4nOjwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfbG9uZ2l0dWRlJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbG9uZ2l0dWRlJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfbG9uZ2l0dWRlX2hlbHAnKS4nPC9wPjxiciAvPic7DQoNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGI+Jy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfZGVzY3JpcHRpb24nKS4nPC9iPjwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX3RpdGxlJykuJzo8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX29wZW5ncmFwaF90aXRsZScsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90aXRsZScsJ3t0aXRsZX0nKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfdGl0bGVfaGVscCcpLic8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF90eXBlJykuJzo8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX29wZW5ncmFwaF90eXBlJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3R5cGUnLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfdHlwZV9oZWxwJykuJzwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX3NpdGVuYW1lJykuJzo8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZV9oZWxwJykuJzwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX2ltYWdlJykuJzo8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bihudWxsLCAnbWV0YV9vcGVuZ3JhcGhfaW1hZ2UnLCAkZmlsZXNfbGlzdCwgbnVsbCwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2ltYWdlJywnJykpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfaW1hZ2VfaGVscCcpLic8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF9hZG1pbnMnKS4nOjwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfb3BlbmdyYXBoX2FkbWlucycsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hZG1pbnMnLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfYWRtaW5zX2hlbHAnKS4nPC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb24nKS4nOjwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uX2hlbHAnKS4nPC9wPic7DQokc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0RW5kKCk7DQoNCi8qIEFkZGl0aW9uYWwgTWV0YSBUYWdzICovDQokc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ2FkZGl0aW9uYWxfbWV0YScsICR0aGlzLT5MYW5nKCd0aXRsZV9hZGRpdGlvbmFsX21ldGFfdGFncycpKTsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdhZGRpdGlvbmFsX21ldGFfdGFnc190aXRsZScpLic6PC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCBudWxsLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWRkaXRpb25hbF9tZXRhX3RhZ3MnLCcnKSwgJ2FkZGl0aW9uYWxfbWV0YV90YWdzJykuJyAnLiR0aGlzLT5sYW5nKCdhZGRpdGlvbmFsX21ldGFfdGFnc19oZWxwJykuJzwvcD4nOw0KJHNldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldEVuZCgpOw0KDQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KG51bGwsICdzYXZlX21ldGFfc2V0dGluZ3MnLCAkdGhpcy0+bGFuZygnc2F2ZScpKS4nPC9wPic7DQokc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCg0KJHNldHRpbmdzIC49ICc8YnIgLz48YnIgLz4nLiR0aGlzLT5sYW5nKCdoZWxwX2Rlc2NyaXB0aW9uX2NvbnRlbnQnKTsNCg0KLyogU0lURU1BUCBTZXR0aW5ncyAqLw0KDQokc3NldHRpbmdzICA9ICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQobnVsbCwgJ2NoYW5nZXNldHRpbmdzJyk7DQoNCiRzc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ3NpdGVtYXBfZGVzY3JpcHRpb24nLCAkdGhpcy0+TGFuZygndGl0bGVfc2l0ZW1hcF9kZXNjcmlwdGlvbicpKTsNCiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdjcmVhdGVfc2l0ZW1hcF90aXRsZScpIC4gJzogJyAuICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KG51bGwsICdjcmVhdGVfc2l0ZW1hcCcsIDEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcsMSkpIC4gJzwvcD4nOw0KaWYgKGluaV9nZXQoJ2FsbG93X3VybF9mb3BlbicpKSB7DQogICRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdwdXNoX3NpdGVtYXBfdGl0bGUnKSAuICc6ICcgLiAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveChudWxsLCAncHVzaF9zaXRlbWFwJywgMSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcsMCkpIC4gJzwvcD4nOw0KfWVsc2V7DQogICRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdwdXNoX3NpdGVtYXBfdGl0bGUnKSAuICc6ICcgLiAkdGhpcy0+TGFuZygnbm9fdXJsX2ZvcGVuJykgLiAnPC9wPic7DQp9DQokc3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnY3JlYXRlX3JvYm90c190aXRsZScpIC4gJzogJyAuICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KG51bGwsICdjcmVhdGVfcm9ib3RzJywgMSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9yb2JvdHMnLDEpKSAuICc8L3A+JzsNCg0KJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCd2ZXJpZmljYXRpb25fdGl0bGUnKS4nOjwvcD4nOw0KJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICd2ZXJpZmljYXRpb24nLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndmVyaWZpY2F0aW9uJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ3ZlcmlmaWNhdGlvbl9oZWxwJykuJzwvcD4nOw0KJHNzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRFbmQoKTsNCg0KJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQobnVsbCwgJ3NhdmVfc2l0ZW1hcF9zZXR0aW5ncycsICR0aGlzLT5sYW5nKCdzYXZlJykpLic8L3A+JzsNCg0KJHNzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KDQokc3NldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQobnVsbCwgJ2NoYW5nZXNldHRpbmdzJyk7DQokc3NldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdyZWdlbmVyYXRlX3NpdGVtYXAnLCAkdGhpcy0+TGFuZygndGl0bGVfcmVnZW5lcmF0ZV9zaXRlbWFwJykpOw0KJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+JzsNCiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KG51bGwsICdkb19yZWdlbmVyYXRlJywgJHRoaXMtPmxhbmcoJ2J1dHRvbl9yZWdlbmVyYXRlX3NpdGVtYXAnKSkuJzwvcD4nOw0KJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+JzsNCiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmxhbmcoJ3RleHRfcmVnZW5lcmF0ZV9zaXRlbWFwJykuJzwvcD4nOw0KJHNzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRFbmQoKTsNCiRzc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCg0KJHNzZXR0aW5ncyAuPSAnPGJyIC8+PGJyIC8+Jy4kdGhpcy0+bGFuZygnaGVscF9zaXRlbWFwX3JvYm90cycpOw0KDQovKiBLRVlXT1JEIFNldHRpbmdzICovDQoNCiRrc2V0dGluZ3MgID0gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydChudWxsLCAnY2hhbmdlc2V0dGluZ3MnKTsNCg0KJGtzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRTdGFydChudWxsLCAna2V5d29yZF93ZWlnaHRfZGVzY3JpcHRpb24nLCAkdGhpcy0+TGFuZygndGl0bGVfa2V5d29yZF93ZWlnaHQnKSk7DQoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2tleXdvcmRfbWlubGVuZ3RoX3RpdGxlJykuJzo8L3A+JzsNCiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAna2V5d29yZF9taW5sZW5ndGgnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5sZW5ndGgnLCc2JyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF9taW5sZW5ndGhfaGVscCcpLic8L3A+JzsNCiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygna2V5d29yZF90aXRsZV93ZWlnaHRfdGl0bGUnKS4nOjwvcD4nOw0KJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdrZXl3b3JkX3RpdGxlX3dlaWdodCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdrZXl3b3JkX3RpdGxlX3dlaWdodCcsJzYnKSwgMikuJyAnLiR0aGlzLT5sYW5nKCdrZXl3b3JkX3RpdGxlX3dlaWdodF9oZWxwJykuJzwvcD4nOw0KJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX2Rlc2NyaXB0aW9uX3dlaWdodF90aXRsZScpLic6PC9wPic7DQoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0JywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0JywnNCcpLCAyKS4nICcuJHRoaXMtPmxhbmcoJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0X2hlbHAnKS4nPC9wPic7DQoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0X3RpdGxlJykuJzo8L3A+JzsNCiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAna2V5d29yZF9oZWFkbGluZV93ZWlnaHQnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9oZWFkbGluZV93ZWlnaHQnLCcyJyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF9oZWFkbGluZV93ZWlnaHRfaGVscCcpLic8L3A+JzsNCiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygna2V5d29yZF9jb250ZW50X3dlaWdodF90aXRsZScpLic6PC9wPic7DQoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ2tleXdvcmRfY29udGVudF93ZWlnaHQnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9jb250ZW50X3dlaWdodCcsJzEnKSwgMikuJyAnLiR0aGlzLT5sYW5nKCdrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0X2hlbHAnKS4nPC9wPic7DQoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2tleXdvcmRfbWluaW11bV93ZWlnaHRfdGl0bGUnKS4nOjwvcD4nOw0KJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdrZXl3b3JkX21pbmltdW1fd2VpZ2h0JywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfbWluaW11bV93ZWlnaHQnLCc3JyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF9taW5pbXVtX3dlaWdodF9oZWxwJykuJzwvcD4nOw0KJGtzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRFbmQoKTsNCg0KJGtzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRTdGFydChudWxsLCAna2V5d29yZF9leGNsdWRlX2Rlc2NyaXB0aW9uJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2tleXdvcmRfZXhjbHVkZScpKTsNCiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygna2V5d29yZF9leGNsdWRlX3RpdGxlJykuJzo8L3A+JzsNCiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCBudWxsLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9leGNsdWRlJywnJyksICdrZXl3b3JkX2V4Y2x1ZGUnKS4nICcuJHRoaXMtPmxhbmcoJ2tleXdvcmRfZXhjbHVkZV9oZWxwJykuJzwvcD4nOw0KJGtzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRFbmQoKTsNCg0KJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQobnVsbCwgJ3NhdmVfa2V5d29yZF9zZXR0aW5ncycsICR0aGlzLT5sYW5nKCdzYXZlJykpLic8L3A+JzsNCiRrc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCg0KJGtzZXR0aW5ncyAuPSAnPGJyIC8+PGJyIC8+Jy4kdGhpcy0+bGFuZygnaGVscF9rZXl3b3JkX2dlbmVyYXRvcicpOw0KDQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbignYWxlcnRzJywkYWxlcnRzKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigncGFnZXNldHRpbmdzJywkcGFnZXNldHRpbmdzKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignbWV0YV9mb3JtJywkc2V0dGluZ3MpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzaXRlbWFwX2Zvcm0nLCRzc2V0dGluZ3MpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdrZXl3b3JkX2Zvcm0nLCRrc2V0dGluZ3MpOw0KDQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWlucGFuZWwudHBsJyk7DQoNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.edit_keywords.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQoNCi8qIC09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tDQoNCiAgIENvZGUgZm9yIFNFT1Rvb2xzMiAiZWRpdG1ldGEiIGFkbWluIGFjdGlvbg0KICAgDQogICAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0KICAgDQogICBUeXBpY2FsbHksIHRoaXMgd2lsbCBkaXNwbGF5IHNvbWV0aGluZyBmcm9tIGEgdGVtcGxhdGUNCiAgIG9yIGRvIHNvbWUgb3RoZXIgdGFzay4NCiAgIA0KKi8NCg0KJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCg0KDQppZiAoaXNzZXQoJF9QT1NUWydzZXRfa2V5d29yZHMnXSkpIHsNCglpZiAoJF9QT1NUWydrZXl3b3JkcyddICE9ICIiKSB7DQoJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzMiBTRVQgY29udGVudF9pZCA9ICIuJF9QT1NUWydjb250ZW50X2lkJ10uIiwga2V5d29yZHMgPSAnIi4kX1BPU1RbJ2tleXdvcmRzJ10uIicsIGluZGV4YWJsZSA9IDEgT04gRFVQTElDQVRFIEtFWSBVUERBVEUga2V5d29yZHMgPSAnIi4kX1BPU1RbJ2tleXdvcmRzJ10uIiciOw0KCX1lbHNlew0KCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfc2VvdG9vbHMyIFNFVCBrZXl3b3JkcyA9IE5VTEwgV0hFUkUgY29udGVudF9pZCA9ICIuJF9QT1NUWydjb250ZW50X2lkJ107DQoJfQ0KCSRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KCSR0aGlzLT5yZWRpcmVjdChudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgQXJyYXkoJ3RhYic9PidwYWdlZGVzY3JpcHRpb25zJykpOw0KfQ0KDQokcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBXSEVSRSBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddOw0KJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KJGluZm8gPSAkcmVzdWx0LT5mZXRjaFJvdygpOw0KDQppZiAoJGluZm9bJ2tleXdvcmRzJ10gPT0gIiIpIHsNCgkkaW5mb1sna2V5d29yZHMnXSA9IHN0cnRvbG93ZXIoaW1wbG9kZSgnICcsYXJyYXlfZmxpcCgkdGhpcy0+Z2V0S2V5d29yZFN1Z2dlc3Rpb25zKCRfR0VUWydjb250ZW50X2lkJ10pKSkpOw0KfQ0KDQokb3V0cHV0ICA9ICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQobnVsbCwgJ2VkaXRfa2V5d29yZHMnKTsNCiRvdXRwdXQgLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKG51bGwsICdjb250ZW50X2lkJywgJF9HRVRbJ2NvbnRlbnRfaWQnXSk7DQokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPkxhbmcoJ2VudGVyX25ld19rZXl3b3JkcycpLic6PC9wPic7DQokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVUZXh0QXJlYShmYWxzZSwgbnVsbCwgJGluZm9bJ2tleXdvcmRzJ10sICdrZXl3b3JkcycpLicgJy4kdGhpcy0+TGFuZygnaGVscF9uZXdfa2V5d29yZHMnKS4nPC9wPic7DQokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZXRleHQiPjwvcD4nOw0KJG91dHB1dCAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQobnVsbCwgJ3NldF9rZXl3b3JkcycsJHRoaXMtPmxhbmcoJ3NhdmUnKSkuJzwvcD4nOw0KDQokb3V0cHV0IC49ICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7DQoNCmVjaG8gJG91dHB1dDsNCg0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.edit_ogtype.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQoNCi8qIC09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tDQoNCiAgIENvZGUgZm9yIFNFT1Rvb2xzMiAiZWRpdG1ldGEiIGFkbWluIGFjdGlvbg0KICAgDQogICAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0KICAgDQogICBUeXBpY2FsbHksIHRoaXMgd2lsbCBkaXNwbGF5IHNvbWV0aGluZyBmcm9tIGEgdGVtcGxhdGUNCiAgIG9yIGRvIHNvbWUgb3RoZXIgdGFzay4NCiAgIA0KKi8NCg0KJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCg0KaWYgKGlzc2V0KCRfUE9TVFsnc2V0X29ndHlwZSddKSkgew0KCWlmICgkX1BPU1RbJ29nX3R5cGUnXSAhPSAiIikgew0KCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9zZW90b29sczIgU0VUIGNvbnRlbnRfaWQgPSAiLiRfUE9TVFsnY29udGVudF9pZCddLiIsIG9ndHlwZSA9ICciLiRfUE9TVFsnb2dfdHlwZSddLiInLCBpbmRleGFibGUgPSAxIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIG9ndHlwZSA9ICciLiRfUE9TVFsnb2dfdHlwZSddLiInIjsNCgl9ZWxzZXsNCgkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzMiBTRVQgb2d0eXBlID0gTlVMTCBXSEVSRSBjb250ZW50X2lkID0gIi4kX1BPU1RbJ2NvbnRlbnRfaWQnXTsNCgl9DQoJDQoJZWNobyAkcXVlcnk7DQoJDQoJJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoJJHRoaXMtPlJlZGlyZWN0KG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCBBcnJheSgndGFiJz0+J3BhZ2VkZXNjcmlwdGlvbnMnKSk7DQp9DQoNCiRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ107DQokcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQokaW5mbyA9ICRyZXN1bHQtPmZldGNoUm93KCk7DQoNCiRvdXRwdXQgID0gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydChudWxsLCAnZWRpdF9vZ3R5cGUnKTsNCiRvdXRwdXQgLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKG51bGwsICdjb250ZW50X2lkJywgJF9HRVRbJ2NvbnRlbnRfaWQnXSk7DQokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPkxhbmcoJ2VudGVyX25ld19vZ3R5cGUnKS4nOjwvcD4nOw0KJG91dHB1dCAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdvZ190eXBlJywgJGluZm9bJ29ndHlwZSddLCAzMCwgMzApLicgJy4kdGhpcy0+TGFuZygnaGVscF9uZXdfb2d0eXBlJykuJzwvcD4nOw0KJG91dHB1dCAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGJyIC8+Jy4kdGhpcy0+TGFuZygnaGVscF9vcGVuZ3JhcGgnKS4nPGJyIC8+PGJyIC8+JzsNCiRvdXRwdXQgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KG51bGwsICdzZXRfb2d0eXBlJywkdGhpcy0+TGFuZygnc2F2ZScpKS4nPC9wPic7DQoNCiRvdXRwdXQgLj0gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCg0KZWNobyAkb3V0cHV0Ow0KDQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/event.Core.ContentDeletePost.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQoNCi8qIC09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tDQoNCkNvZGUgdG8gcHVzaCBzaXRlbWFwIHRvIEdvb2dsZSBXZWJtYXN0ZXJzIGlmIHJlcXVpcmVkDQoNCi09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tICovDQoNCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJykgPT0gMSkgew0KICAgICAgJHRoaXMtPmNyZWF0ZVNpdGVtYXAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcpID09IDEpOw0KICAgIH0NCg==]]></data>
	</file>
	<file>
	  <filename>/event.Core.ContentEditPost.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQoNCi8qIC09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tDQoNCkNvZGUgdG8gcHVzaCBzaXRlbWFwIHRvIEdvb2dsZSBXZWJtYXN0ZXJzIGlmIHJlcXVpcmVkDQoNCi09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tICovDQoNCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJykgPT0gMSkgew0KICAgICAgJHRoaXMtPmNyZWF0ZVNpdGVtYXAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcpID09IDEpOw0KICAgIH0NCg==]]></data>
	</file>
	<file>
	  <filename>/img/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/img/edit.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAB3RJTUUH2ggQDQAHiaSPRwAAAAlwSFlzAAAewQAAHsEBw2lUUwAAAARnQU1BAACxjwv8YQUAAAImSURBVHjajZPPaxNBFMe/O9tuaJMY7NbUqrVNVeoPVESqB+2pBxFBD3r3Ip78Lzx48aA0WpGi4EnBg0UptIeK0Jh6UKIhmKRG0f5MqjFNm7o7uzvrzJoNqUm0A495zLzPd95j3pNs24YkSbsAdHCT8e+V4/aNM6xyIgT4Oq5pWsEwDMs0Tbue8Xs7HA7f5rE93IjgnMfLGZzgcFTXdcL9ijgHwRgDpRSqqmIp9QxrsaeQfYdR+v4KkjZ/WUQL6+fBb7gICCEO5ApYluUItNAI1tLTaGkfQCB0DIUvUSQnRrJN1QUK2N2FiCzLTprs5yQMK4W2faeQz3yEIlH4t2yHT90dqBFwSxC+eJ2tTEMxEgj0noG++BhKq4SvsSS0dX2lVFo9uUGgun7h0x8RsMJLBPaehzZ/D0Qx0ezrhteeQ3j0w7U7Y5k0afRf2eRzlBYmyvAwSLMBWuzB8tR7qIPXIWAn07pwagzFhSiCh86BLo1AVmzoxW4Ov8O2C0PwdOyvxDb9Dc9En4CtJmBKO7AYH8LWoAIt34XC2yQ6L96F7O/cEF+TQfz1Axw8fRWe2SmkRyOIjeeRnowhePZGDVxXYObzMmjiBUJHB+D19iEbz6Dv0k142nudn3G/umEJiU853Lo/jP4DIfj3HMHglYdobdvZcDiqBcRQSI/G57CJ5bQqbzJbDIUAGW+aX+7F/2Aeu853y+mX8jB14c84k00IoAznODv7G84tFQol4BT4AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/img/reset.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAB3RJTUUH2ggQDDghTfTcdgAAAAlwSFlzAAAewQAAHsEBw2lUUwAAAARnQU1BAACxjwv8YQUAAAJ5SURBVHjapVNdSBRRGD1zZ8bZHcfFn1VWDSNMpYSUBCGCMivJHgyMkiAwfCroIZBSiFAixLeIChaiIlAhf4IoKkhEgh4KJetF1/xF3XSUTVubcdydud1xZRmjJOiDw8yd+53zffd8c4H/DM65uHq/sv9QiXxYN1S2IYDCYk8RinAAS/qidaff3zFwC7WAaHFihKMRUOIU8KXKGUnJERD3OHh5DoIcZJiFKX1GuneZtNZcOd/SWfUFpZHdlPE5EZzgFFglAWUpIYyQFARx9CZgBGaUtWsC5QfrC/0ptQMX654U0hlpjt9ynkx1x0xwhXwdwdjYKKYYJsdGuen5OU/IpaRmpGbKZFLrtYpyy92iQnIG30x1xcmia4svv0NhqLjxLG+hfcZDu4NltGOgTkcOTsU7sKLbmr3OMB5YCekVZcUn1+h7eN1FQvuHoXnhrxTbXsvREwUWVAxRIwkcsRVXbHM2p0Bi+XZkncOF9Hw+LU5GjGzHsePuao+L1TQSoWnf7U/6pssxy083pjTce33UTi9jcDOkMXhRifwjjdLNro81tHOwhHYN7aTNTwu+sb09G0eIshIn6pMbzlbvb/Up+XjUp/Ym8ImUbpQWOdlVzCcpOsL6KMJrgxCEAnS/CDxgm8Ox0lVofnx9b5OUoOGnMQVF9oJadLN35jPng2FOgxd+wIxko6dn8dXLlvUzjKzFphDgZ9P2qSVZecs5dv6qqWGd02HAhoYor8KgFiYmpLW2tpD/3V3zMmOFN7Sdf/Klh3i+qxCl1xpxO1tCkPDsItgeExCdKalv0c+Wn5yTib2LcZHsyib0eXKRu+14/3gtxS0pAsfjn+IXjhPiCXMAIGsAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdTRU9Ub29sczInOw0KJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnU0VPVG9vbHMyIGhhcyBiZWVuIGluc3RhbGxlZC4gQmUgc3VyZSB0byByZWFkIHRoZSBtb2R1bGUgaGVscCB0byBsZWFybiBob3cgdG8gdXNlIGl0Lic7DQokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1NFT1Rvb2xzMiBoYXMgYmVlbiB1bmluc3RhbGxlZC4gUGxlYXNlIGJlIGF3YXJlIHRoYXQgeW91IGhhdmUganVzdCBsb3N0IGFsbCBtZXRhIGluZm9ybWF0aW9uIGZyb20geW91ciBwYWdlcyEnOw0KJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gdW5pbnN0YWxsIFNFT1Rvb2xzMj8nOw0KJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxlIFVuaW5zdGFsbGVkLic7DQokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHZlcnNpb24gJXMgaW5zdGFsbGVkLic7DQokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bGUgdXBncmFkZWQgdG8gdmVyc2lvbiAlcy4nOw0KJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnQSBjb2xsZWN0aW9uIG9mIHRvb2xzIHRvIGhlbHAgd2l0aCBTZWFyY2ggRW5naW5lIE9wdGltaXphdGlvbi4nOw0KDQokbGFuZ1snZXZlbnRkZXNjLVByZWZzVXBkYXRlZCddID0gJ1NlbnQgd2hlbiB0aGUgYWRtaW4gcHJlZmVyZW5jZXMgYXJlIHVwZGF0ZWQuJzsNCiRsYW5nWydldmVudGhlbHAtUHJlZnNVcGRhdGVkJ10gPSAnPHA+U2VudCB3aGVuIHRoZSBhZG1pbiBwcmVmZXJlbmNlcyBhcmUgdXBkYXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8b2w+DQo8bGk+PC9saT4NCjwvb2w+JzsNCg0KDQoNCiRsYW5nWydlcnJvciddID0gJ0Vycm9yISc7DQokbGFuZFsnYWRtaW5fdGl0bGUnXSA9ICdTRU9Ub29sczIgQWRtaW4gUGFuZWwnOw0KJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdIZWxwcyB3aXRoIFNFTyBpbiBnZW5lcmFsLCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRpbmcgWE1MIHNpdGVtYXBzIGFuZCBjb21wcmVoZW5zaXZlIG1ldGEgZGVzY3JpcHRpb25zJzsNCiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc3MgRGVuaWVkLiBQbGVhc2UgY2hlY2sgeW91ciBwZXJtaXNzaW9ucy4nOw0KJGxhbmdbJ1NFT0FsZXJ0cyddID0gJ1NFTyBBbGVydHMnOw0KJGxhbmdbJ1BhZ2VkZXNjcmlwdGlvbnMnXSA9ICdQYWdlIHNldHRpbmdzJzsNCiRsYW5nWydTaXRlbWFwJ10gPSAnU2l0ZW1hcCc7DQokbGFuZ1snU0VPU2V0dGluZ3MnXSA9ICdTRU8gU2V0dGluZ3MnOw0KJGxhbmdbJ3RpdGxlX3Nlb2FsZXJ0cyddID0gJ1NFTyBBbGVydHMnOw0KJGxhbmdbJ3RpdGxlX3BhZ2VkZXNjcmlwdGlvbnMnXSA9ICdQYWdlIHNldHRpbmdzJzsNCiRsYW5nWyd0aXRsZV9zaXRlbWFwJ10gPSAnU2l0ZW1hcCc7DQokbGFuZ1sndGl0bGVfc2Vvc2V0dGluZ3MnXSA9ICdTRU8gU2V0dGluZ3MnOw0KDQokbGFuZ1sndGl0bGVfbWV0YV90eXBlJ10gPSAnTWV0YSBUYWcgR2VuZXJhdG9yJzsNCiRsYW5nWydtZXRhX2NyZWF0ZV9zdGFuZGFyZCddID0gJ0dlbmVyYXRlIHN0YW5kYXJkIE1ldGEgVGFncyc7DQokbGFuZ1snbWV0YV9jcmVhdGVfZHVibGluY29yZSddID0gJ0dlbmVyYXRlIER1YmxpbiBDb3JlIE1ldGEgVGFncyc7DQokbGFuZ1snbWV0YV9jcmVhdGVfb3BlbmdyYXBoJ10gPSAnR2VuZXJhdGUgT3BlbkdyYXBoIE1ldGEgVGFncyAoZS5nLiBmb3IgRmFjZWJvb2sgTGlrZSBCdXR0b24pJzsNCg0KJGxhbmdbJ3RpdGxlX21ldGFfZGVmYXVsdHMnXSA9ICdNRVRBIFRhZyBWYWx1ZXMnOw0KJGxhbmdbJ21ldGFfcHVibGlzaGVyJ10gPSAnU2l0ZSBwdWJsaXNoZXInOw0KJGxhbmdbJ21ldGFfcHVibGlzaGVyX2hlbHAnXSA9ICcoVGhpcyBpcyB1c3VhbGx5IHRoZSBvcmdhbml6YXRpb24geW91IGFyZSBidWlsZGluZyB0aGUgd2Vic2l0ZSBmb3IpJzsNCiRsYW5nWydtZXRhX2NvbnRyaWJ1dG9yJ10gPSAnU2l0ZSBjb250cmlidXRvcic7DQokbGFuZ1snbWV0YV9jb250cmlidXRvcl9oZWxwJ10gPSAnKFVzdWFsbHksIHRoaXMgd291bGQgYmUgeW91IG9yIGFueSBvdGhlciBjb250ZW50IGF1dGhvciknOw0KJGxhbmdbJ21ldGFfY29weXJpZ2h0J10gPSAnU2l0ZSBjb3B5cmlnaHQnOw0KJGxhbmdbJ21ldGFfY29weXJpZ2h0X2hlbHAnXSA9ICcoU29tZXRoaW5nIGxpa2UgIihDKSBZb3VyIENvbXBhbnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQiKSc7DQokbGFuZ1snbWV0YV9sb2NhdGlvbl9kZXNjcmlwdGlvbiddID0gJ0lmIHlvdXIgd2Vic2l0ZSBpcyBhYm91dCBhbiBlbnRpdGl5IHRoYXQgY2FuIGJlIGxvY2F0ZWQgb24gYSBtYXAsIHlvdSBzaG91bGQgb3B0aW9uYWxseSBmaWxsIGluIHRoZSBmb2xsb3dpbmcgdmFsdWVzOic7DQokbGFuZ1snbWV0YV9sb2NhdGlvbiddID0gJ0xvY2F0aW9uIG9mIHlvdXIgZW50aXR5JzsNCiRsYW5nWydtZXRhX2xvY2F0aW9uX2hlbHAnXSA9ICcoVXN1YWxseSwgdGhpcyB3b3VsZCBiZSB0aGUgdG93biBuYW1lIG9mIHlvdXIgY29tcGFueSknOw0KJGxhbmdbJ21ldGFfcmVnaW9uJ10gPSAnUmVnaW9uIG9mIHlvdXIgZW50aXR5JzsNCiRsYW5nWydtZXRhX3JlZ2lvbl9oZWxwJ10gPSAnKEVudGVyIHNvbWV0aGluZyBsaWtlICJVUy1JTCIgZm9yIGFuIGVudGl0eSBsb2NhdGVkIGluIElsbGlub2lzLCBVUyknOw0KJGxhbmdbJ21ldGFfbGF0aXR1ZGUnXSA9ICdMYXRpdHVkZSBvZiB5b3VyIGVudGl0eSc7DQokbGFuZ1snbWV0YV9sYXRpdHVkZV9oZWxwJ10gPSAnKEVudGVyIHRoZSBkZWNpbWFsIGxhdGl0dWRlIGdlbyBjb29kaW5hdGUgb2YgeW91ciBlbnRpdGl5KSc7DQokbGFuZ1snbWV0YV9sb25naXR1ZGUnXSA9ICdMb25naXR1ZGUgb2YgeW91ciBlbnRpdHknOw0KJGxhbmdbJ21ldGFfbG9uZ2l0dWRlX2hlbHAnXSA9ICcoRW50ZXIgdGhlIGRlY2ltYWwgbG9uZ2l0dWRlIGdlbyBjb29kaW5hdGUgb2YgeW91ciBlbnRpdGl5KSc7DQokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfZGVzY3JpcHRpb24nXSA9ICdJZiB5b3UgYXJlIGNyZWF0aW5nIE9wZW5HcmFwaCBNRVRBIFRhZ3MsIHBsZWFzZSBmaWxsIGluIHRoZSBmb2xsb3dpbmcgdmFsdWVzOic7DQokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfdGl0bGUnXSA9ICdPcGVuR3JhcGggcGFnZSB0aXRsZSc7DQokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfdGl0bGVfaGVscCddID0gJyhZb3UgY2FuIHVzZSBhbGwgc21hcnR5IHRhZ3MgaGVyZSwgZS5nLiB0byByZXBsYWNlIHdpdGggdGhlIGFjdHVhbCBwYWdlIHRpdGxlKSc7DQokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfdHlwZSddID0gJ09wZW5HcmFwaCBkZWZhdWx0IHBhZ2UgdHlwZSc7DQokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfdHlwZV9oZWxwJ10gPSAnKFRoZSBkZWZhdWx0IHBhZ2UgdHlwZSBmb3IgT3BlbkdyYXBoLCBjYW4gYmUgb3ZlcnJpZGRlbiBmb3IgZWFjaCBwYWdlLiBMb29rIDxhIGhyZWY9Imh0dHA6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL29wZW5ncmFwaCN0eXBlcyIgdGFnZXQ9Il9ibGFuayI+aGVyZTwvYT4gZm9yIGEgbGlzdCBvZiBhbGxvd2VkIHZhbHVlcyknOw0KJGxhbmdbJ21ldGFfb3BlbmdyYXBoX3NpdGVuYW1lJ10gPSAnT3BlbkdyYXBoIHNpdGUgbmFtZSc7DQokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWVfaGVscCddID0gJyhBIHNob3J0IHZlcnNpb24gb2YgeW91ciBzaXRlIG5hbWUsIGUuZy4gIllvdXIgQ29tcGFueSIsIG1heC4gMjUgY2hhcnMpJzsNCiRsYW5nWydtZXRhX29wZW5ncmFwaF9pbWFnZSddID0gJ09wZW5HcmFwaCBkZWZhdWx0IGltYWdlJzsNCiRsYW5nWydtZXRhX29wZW5ncmFwaF9pbWFnZV9oZWxwJ10gPSAnKFNlbGVjdCBhbiBpbWFnZSBmcm9tIHlvdXIgL3VwbG9hZHMvaW1hZ2VzIGRpcmVjdG9yeSB0byBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0IGZvciBPcGVuR3JhcGggcGFnZXMpJzsNCiRsYW5nWydtZXRhX29wZW5ncmFwaF9hZG1pbnMnXSA9ICdGYWNlYm9vayBzaXRlIGFkbWluaXN0cmF0b3JzJzsNCiRsYW5nWydtZXRhX29wZW5ncmFwaF9hZG1pbnNfaGVscCddID0gJyhBIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGZhY2Vib29rIGFjY291bnQgSURzIHdobyBhcmUgYWJsZSB0byBhZG1pbmlzdHJhdGUgdGhlIHN0cmVhbXMgb2YgeW91ciBwYWdlcyknOw0KJGxhbmdbJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJ10gPSAnRmFjZWJvb2sgYXBwbGljYXRpb24nOw0KJGxhbmdbJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uX2hlbHAnXSA9ICcoVGhlIElEIG9mIGEgZmFjZWJvb2sgYXBwbGljYXRpb24gYWJsZSB0byBhZG1pbmlzdHJhdGUgdGhlIHN0cmVhbXMgb2YgeW91ciBwYWdlcyknOw0KDQokbGFuZ1sndGl0bGVfdGl0bGVfZGVzY3JpcHRpb24nXSA9ICdQYWdlIHRpdGxlLCBkZXNjcmlwdGlvbiBhbmQga2V5d29yZHMnOw0KJGxhbmdbJ3RpdGxlX3RpdGxlJ10gPSAnUGFnZSB0aXRsZSc7DQokbGFuZ1sndGl0bGVfdGl0bGVfaGVscCddID0gJyhUaGUgcGFnZSB0aXRsZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGJyb3dzZXJcJ3MgdGl0bGUgYmFyLiBZb3UgY2FuIHVzZSB0aGUgdGFncyB7dGl0bGV9LCB7cGFnZXRpdGxlfSwge3Nlb19rZXl3b3Jkc30gYW5kIGFsbCBzbWFydHkgdGFncyBhbmQgVURUcyBoZXJlKSc7DQokbGFuZ1sndGl0bGVfbWV0YV90aXRsZSddID0gJ1BhZ2UgTWV0YSB0aXRsZSc7DQokbGFuZ1sndGl0bGVfbWV0YV9oZWxwJ10gPSAnKFRoZSBwYWdlIHRpdGxlIHRvIGJlIHVzZWQgaW4gdGhlIE1ldGEgdGl0bGUgdGFncy4gWW91IGNhbiB1c2UgdGhlIHRhZ3Mge3RpdGxlfSwge3BhZ2V0aXRsZX0sIHtzZW9fa2V5d29yZHN9IGFuZCBhbGwgc21hcnR5IHRhZ3MgYW5kIFVEVHMgaGVyZSknOw0KJGxhbmdbJ2Rlc2NyaXB0aW9uX2Jsb2NrX3RpdGxlJ10gPSAnTmFtZSBvZiBwYWdlIGRlc2NyaXB0aW9uIGNvbnRlbnQgYmxvY2snOw0KJGxhbmdbJ2Rlc2NyaXB0aW9uX2Jsb2NrX2hlbHAnXSA9ICcoVGhlIG5hbWUgb2YgeW91ciBwYWdlIGRlc2NyaXB0aW9uIGNvbnRlbnQgYmxvY2suIFBsZWFzZSBzZWUgYmVsb3cgZm9yIGFuIGV4cGxhbmF0aW9uKSc7DQokbGFuZ1snZGVmYXVsdF9rZXl3b3Jkc190aXRsZSddID0gJ0tleXdvcmRzIHRvIGFsd2F5cyBpbmNsdWRlJzsNCiRsYW5nWydkZWZhdWx0X2tleXdvcmRzX2hlbHAnXSA9ICcoQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBrZXl3b3JkcyB5b3Ugd291bGQgbGlrZSB0byBpbmNsdWRlIG9uIGV2ZXJ5IHBhZ2UpJzsNCg0KJGxhbmdbJ3RpdGxlX3NpdGVtYXBfZGVzY3JpcHRpb24nXSA9ICdHb29nbGUgU2l0ZW1hcCBhbmQgQ3Jhd2xlciBTZXR0aW5ncyc7DQokbGFuZ1snY3JlYXRlX3NpdGVtYXBfdGl0bGUnXSA9ICdDcmVhdGUgYW4gWE1MIEdvb2dsZSBTaXRlbWFwKic7DQokbGFuZ1sncHVzaF9zaXRlbWFwX3RpdGxlJ10gPSAnQXV0b21hdGljYWxseSBwdXNoIHRoZSBzaXRlbWFwIHRvIEdvb2dsZSBhZnRlciBjb250ZW50IGNoYW5nZXMnOw0KJGxhbmdbJ2NyZWF0ZV9yb2JvdHNfdGl0bGUnXSA9ICdDcmVhdGUgYSByb2JvdHMudHh0IGZpbGUqJzsNCiRsYW5nWyd2ZXJpZmljYXRpb25fdGl0bGUnXSA9ICdTaXRlIHZlcmlmaWNhdGlvbiBjb2RlJzsNCiRsYW5nWyd2ZXJpZmljYXRpb25faGVscCddID0gJyhUaGUgc2l0ZSB2ZXJpZmljYXRpb24gY29kZSB5b3Ugb2J0YWluIGZyb20gR29vZ2xlIFdlYm1hc3RlciBUb29scywganVzdCB0aGUgaGFzaCwgbm90IHRoZSBjb21wbGV0ZSBtZXRhIHRhZyknOw0KDQokbGFuZ1sndGl0bGVfYWxlcnRzX3VyZ2VudCddID0gJ1RvIGJlIGZpeGVkIGltbWVkaWF0ZWx5JzsNCiRsYW5nWyd0aXRsZV9hbGVydHNfaW1wb3J0YW50J10gPSAnVG8gYmUgZml4ZWQgYXMgc29vbiBhcyBwb3NzaWJsZSc7DQokbGFuZ1sndGl0bGVfYWxlcnRzX25vdGljZXMnXSA9ICdUaGluZ3MgeW91IHNob3VsZCBjb25zaWRlciBmaXhpbmcnOw0KJGxhbmdbJ25vdGhpbmdfdG9fYmVfZml4ZWQnXSA9ICdUaGVyZSBhcmUgbm8gYWN0aW9ucyB5b3UgbmVlZCB0byB0YWtlIGluIHRoaXMgY2F0ZWdvcnknOw0KDQokbGFuZ1snc2F2ZSddID0gJ1NhdmUgc2V0dGluZ3MnOw0KJGxhbmdbJ25vbmUnXSA9ICcobm9uZSknOw0KJGxhbmdbJ3NldHRpbmdzX3VwZGF0ZWQnXSA9ICdUaGUgU0VPIHNldHRpbmdzIHdlcmUgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQuJzsNCiRsYW5nWydwcm9ibGVtX2FsZXJ0J10gPSAnaGFzIGRldGVjdGVkIHNldmVyZSBwcm9ibGVtcyB3aXRoIHlvdXIgU0VPLiAlcyc7DQokbGFuZ1sncHJvYmxlbV9saW5rX3RpdGxlJ10gPSAnQ2xpY2sgaGVyZSB0byBmaXggdGhlbSc7DQoNCiRsYW5nWydoZWxwX2Rlc2NyaXB0aW9uX2NvbnRlbnQnXSA9ICc8Yj5Ib3cgdG8gdXNlIHRoZSAiZGVzY3JpcHRpb24gY29udGVudCBibG9jayI6PC9iPjxiciAvPlRvIGJlIGFibGUgdG8gZW50ZXIgYSBwYWdlIGRlc2NyaXB0aW9uIHdoZW4gZWRpdGluZyBhIHBhZ2UsIHlvdSBtdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBjb2RlIGFueXdoZXJlIG9uIGV2ZXJ5IHRlbXBsYXRlOjxiciAvPjxiciAvPjxwcmU+e2NhcHR1cmUgYXNzaWduPW1ldGFkZXNjcmlwdGlvbn17Y29udGVudCBibG9jaz0ibWV0YWRlc2NyaXB0aW9uIiBsYWJlbD0iTUVUQSBEZXNjcmlwdGlvbiIgb25lbGluZT0idHJ1ZSJ9ey9jYXB0dXJlfTwvcHJlPjxiciAvPlRoZW4sIHB1dCAibWV0YWRlc2NyaXB0aW9uIiBpbnRvIHRoZSBmaWVsZCAiTmFtZSBvZiBwYWdlIGRlc2NyaXB0aW9uIGNvbnRlbnQgYmxvY2s8YnIgLz48YnIgLz5BbHRlcm5hdGl2ZWx5LCBlbmFibGUgdGhlIG9wdGlvbiAmcXVvdDtBdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGRlc2NyaXB0aW9ucyB3aGVyZSBub25lIGlzIGdpdmVuJnF1b3Q7LiBUaGlzIGlzIG5vdCBhcyBnb29kIGJ1dCBzdGlsbCBiZXR0ZXIgdGhhbiBub3RoaW5nLic7DQokbGFuZ1snaGVscF9zaXRlbWFwX3JvYm90cyddID0gJyopIFRvIHVzZSB0aGUgYXV0b21hdGljIGdlbmVyYXRpb24gb2YgYSBzaXRlbWFwLSBhbmQgcm9ib3RzLWZpbGUsIHRoZSByb290IGRpcmVjdG9yeSBvZiB5b3VyIENNU01TIGluc3RhbGxhdGlvbiBtdXN0IGJlIHdyaXRlYWJsZSB0byB0aGUgd2ViIHNlcnZlci4gSWYgeW91ciBhbHJlYWR5IGhhdmUgYSBzaXRlbWFwLnhtbCBhbmQvcHIgcm9ib3RzLnR4dCBmaWxlLCBib3RoIG9mIHRoZW0gbXVzdCBiZSB3cml0ZWFibGUgdG8gdGhlIHdlYiBzZXJ2ZXIuJzsNCg0KJGxhbmdbJ3VzZV9zdGFuZGFyZF9vcl9kdWJsaW5jb3JlX21ldGEnXSA9ICdVc2UgYXQgbGVhc3Qgb25lIG9mIHRoZSBzdGFuZGFyZCBvciBEdWJsaW4gQ29yZSBNZXRhIFRhZyBnZW5lcmF0b3JzJzsNCiRsYW5nWyd1c2Vfc3RhbmRhcmRfbWV0YSddID0gJ1lvdSBzaG91bGQgYWx3YXlzIGVuYWJsZSB0aGUgc3RhbmRhcmQgTWV0YSBnZW5lcmF0b3InOw0KJGxhbmdbJ21ldGFfZGVzY3JpcHRpb25fbWlzc2luZyddID0gJ1RoZSBwYWdlIDxpPiVzPC9pPiBpcyBsYWNraW5nIGEgTWV0YSBkZXNjcmlwdGlvbic7DQokbGFuZ1snbWV0YV9kZXNjcmlwdGlvbl9zaG9ydCddID0gJ1RoZSBNZXRhIGRlc2NyaXB0aW9uIG9mIDxpPiVzPC9pPiBpcyByYXRoZXIgc2hvcnQgKCA8IDc1IGNoYXJzKSc7DQokbGFuZ1snZHVwbGljYXRlX3RpdGxlcyddID0gJ1RoZSBwYWdlcyA8aT4lczwvaT4gYW5kIDxpPiVzPC9pPiBoYXZlIHRoZSBzYW1lIHRpdGxlJzsNCiRsYW5nWydkdXBsaWNhdGVfZGVzY3JpcHRpb25zJ10gPSAnVGhlIHBhZ2VzIDxpPiVzPC9pPiBhbmQgPGk+JXM8L2k+IGhhdmUgdGhlIHNhbWUgTWV0YSBkZXNjcmlwdGlvbic7DQokbGFuZ1sncHJvdmlkZV9hbl9hdXRob3InXSA9ICdZb3Ugc2hvdWxkIHByb3ZpZGUgdGhlIG5hbWUgb2YgdGhlIHBhZ2UgcHVibGlzaGVyJzsNCiRsYW5nWydzZXRfdXBfZGVzY3JpcHRpb25fYmxvY2snXSA9ICdTZXQgdXAgYSBjb250ZW50IGJsb2NrIGZvciBNZXRhIGRlc2NyaXB0aW9ucyc7DQokbGFuZ1snYWN0aXZhdGVfcHJldHR5X3VybHMnXSA9ICdBY3RpdmF0ZSB0aGUgcHJldHR5IFVSTHMgZmVhdHVyZSBvZiBDTVNNUyc7DQokbGFuZ1sncHJldHR5X3VybHNfaGVscCddID0gJzxhIGhyZWY9Imh0dHA6Ly93aWtpLmNtc21hZGVzaW1wbGUub3JnL2luZGV4LnBocC9Vc2VyX0hhbmRib29rL0luc3RhbGxhdGlvbi9PcHRpb25hbF9TZXR0aW5ncyIgdGFyZ2V0PSJfYmxhbmsiPkdldCBoZWxwPC9hPic7DQokbGFuZ1snY3JlYXRlX2Ffc2l0ZW1hcCddID0gJ0hhdmUgYSBHb29nbGUgWE1MIFNpdGVtYXAgYXV0b21hdGljYWxseSBjcmVhdGVkIGZvciB5b3UnOw0KJGxhbmdbJ2F1dG9tYXRpY2FsbHlfdXBsb2FkX3NpdGVtYXAnXSA9ICdIYXZlIHlvdXIgWE1MIFNpdGVtYXAgYXV0b21hdGljYWxseSB1cGxvYWRlZCB0byBHb29nbGUnOw0KJGxhbmdbJ2NyZWF0ZV9yb2JvdHMnXSA9ICdIYXZlIGEgcm9ib3RzLnR4dCBmaWxlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBmb3IgeW91JzsNCiRsYW5nWydzaXRlbWFwX25vdF93cml0ZWFibGUnXSA9ICdZb3VyIHNpdGVtYXAueG1sIGZpbGUgaXMgbm90IHdyaXRlYWJsZSc7DQokbGFuZ1snY2htb2Rfc2l0ZW1hcCddID0gJ1NldCB5b3VyIC9zaXRlbWFwLnhtbCBmaWxlIHRvIGJlIHdyaXRlYWJsZSBieSB0aGUgd2ViIHNlcnZlcic7DQokbGFuZ1sncm9ib3RzX25vdF93cml0ZWFibGUnXSA9ICdZb3VyIHJvYm90cy50eHQgZmlsZSBpcyBub3Qgd3JpdGVhYmxlJzsNCiRsYW5nWydub19vcGVuZ3JhcGhfYWRtaW5zJ10gPSAnWW91IGhhdmUgbm90IHNldCBhbiBPcGVuR3JhcGggYWRtaW4gYXBwbGljYXRpb24gcmVzcC4gYWRtaW4gbGlzdCc7DQokbGFuZ1snbm9fb3BlbmdyYXBoX3R5cGUnXSA9ICdZb3UgaGF2ZSBub3Qgc2V0IHRoZSBkZWZhdWx0IE9wZW5HcmFwaCBwYWdlIHR5cGUnOw0KJGxhbmdbJ25vX29wZW5ncmFwaF9zaXRlbmFtZSddID0gJ1lvdSBoYXZlIG5vdCBzZXQgdGhlIE9wZW5HcmFwaCBzaXRlIG5hbWUnOw0KJGxhbmdbJ25vX29wZW5ncmFwaF9pbWFnZSddID0gJ1lvdSBoYXZlIG5vdCBzZXQgYW4gT3BlbkdyYXBoIGRlZmF1bHQgaW1hZ2UnOw0KJGxhbmdbJ2NobW9kX3JvYm90cyddID0gJ1NldCB5b3VyIC9yb2JvdHMudHh0IGZpbGUgdG8gYmUgd3JpdGVhYmxlIGJ5IHRoZSB3ZWIgc2VydmVyJzsNCiRsYW5nWydlZGl0X3BhZ2UnXSA9ICdFZGl0ICVzJzsNCiRsYW5nWydlZGl0X3BhZ2VfdG9fZml4J10gPSAnQ2xpY2sgaGVyZSB0byBlZGl0IHRoZSBwYWdlIGFuZCBmaXggdGhlIHByb2JsZW0nOw0KJGxhbmdbJ3Zpc2l0X3NldHRpbmdzJ10gPSAnQ2hhbmdlIHNldHRpbmdzJzsNCg0KJGxhbmdbJ3BhZ2VfaWQnXSA9ICdJRCc7DQokbGFuZ1sncGFnZV9uYW1lJ10gPSAnUGFnZSBuYW1lJzsNCiRsYW5nWydwcmlvcml0eSddID0gJ1NpdGVtYXAgUHJpb3JpdHknOw0KJGxhbmdbJ29nX3R5cGUnXSA9ICdPcGVuR3JhcGggdHlwZSc7DQokbGFuZ1sna2V5d29yZHMnXSA9ICcjIEtleXdvcmRzJzsNCiRsYW5nWydkZXNjcmlwdGlvbiddID0gJ0Rlc2NyaXB0aW9uJzsNCiRsYW5nWydpbmRleCddID0gJ0luZGV4YWJsZSc7DQoNCiRsYW5nWydjbGlja190b19hZGRfZGVzY3JpcHRpb24nXSA9ICdDbGljayBoZXJlIHRvIGFkZCBhIHBhZ2UgZGVzY3JpcHRpb24nOw0KJGxhbmdbJ3RvZ2dsZSddID0gJ3RvZ2dsZSc7DQokbGFuZ1sncmVzZXQnXSA9ICdyZXNldCc7DQokbGFuZ1sncmVzZXRfdG9fZGVmYXVsdCddID0gJ1Jlc2V0IHRoaXMgdG8gdGhlIGRlZmF1bHQgdmFsdWUnOw0KJGxhbmdbJ2VkaXRfdmFsdWUnXSA9ICdFZGl0IHRoaXMgdmFsdWUnOw0KDQokbGFuZ1snaGVscF9vcGVuZ3JhcGgnXSA9ICdMb29rIDxhIGhyZWY9Imh0dHA6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL29wZW5ncmFwaCN0eXBlcyIgdGFnZXQ9Il9ibGFuayI+aGVyZTwvYT4gZm9yIGEgbGlzdCBvZiBhbGxvd2VkIHZhbHVlcyc7DQokbGFuZ1snZW50ZXJfbmV3X29ndHlwZSddID0gJ0VudGVyIHRoZSBuZXcgdmFsdWUgZm9yIHRoaXMgcGFnZVwncyBPcGVuR3JhcGggdHlwZSc7DQokbGFuZ1snaGVscF9uZXdfb2d0eXBlJ10gPSAnTGVhdmUgYmxhbmsgdG8gcmV2ZXJ0IHRvIHRoZSBkZWZhdWx0IHNldHRpbmcnOw0KDQokbGFuZ1snZW50ZXJfbmV3X2tleXdvcmRzJ10gPSAnRW50ZXIgdGhlIG5ldyBrZXl3b3JkcyBmb3IgdGhpcyBwYWdlJzsNCiRsYW5nWydoZWxwX25ld19rZXl3b3JkcyddID0gJ1doaXRlc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2Yga2V5d29yZHMuIExlYXZlIGJsYW5rIHRvIHJldmVydCB0byBhdXRvIGdlbmVyYXRlZCBrZXl3b3Jkcyc7DQoNCiRsYW5nWydncm91cHRpdGxlX29wZW5ncmFwaCddID0gJ1dlIGhhdmUgZGV0ZWN0ZWQgJXMgT3BlbkdyYXBoIHJlbGF0ZWQgcHJvYmxlbShzKSc7DQokbGFuZ1snZ3JvdXB0aXRsZV9zeXN0ZW0nXSA9ICdXZSBoYXZlIGRldGVjdGVkICVzIHByb2JsZW0ocykgd2l0aCB5b3VyIHN5c3RlbSBjb25maWd1cmF0aW9uJzsNCiRsYW5nWydncm91cHRpdGxlX3BhZ2VzJ10gPSAnV2UgaGF2ZSBkZXRlY3RlZCAlcyBwcm9ibGVtKHMpIG9uIHlvdXIgY29udGVudCBwYWdlcyc7DQokbGFuZ1snZ3JvdXB0aXRsZV9zZXR0aW5ncyddID0gJ1dlIGhhdmUgZGV0ZWN0ZWQgJXMgcHJvYmxlbShzKSB3aXRoIHlvdXIgU0VPIFNldHRpbmdzJzsNCiRsYW5nWydncm91cHRpdGxlX2Rlc2NyaXB0aW9ucyddID0gJ1dlIGhhdmUgZGV0ZWN0ZWQgJXMgcHJvYmxlbShzKSB3aXRoIHlvdXIgcGFnZSBkZXNjcmlwdGlvbnMnOw0KJGxhbmdbJ2dyb3VwdGl0bGVfdGl0bGVzJ10gPSAnV2UgaGF2ZSBkZXRlY3RlZCAlcyBwcm9ibGVtKHMpIHdpdGggeW91ciBwYWdlIHRpdGxlcyc7DQoNCiRsYW5nWyd2aWV3X2FsbCddID0gJ1ZpZXcgYWxsJzsNCg0KJGxhbmdbJ3RpdGxlX21ldGFzZXR0aW5ncyddID0gJ1BhZ2UgdGl0bGUgJiBNZXRhIGluZm9ybWF0aW9uJzsNCiRsYW5nWyd0aXRsZV9zaXRlbWFwc2V0dGluZ3MnXSA9ICdTaXRlbWFwICYgQ3Jhd2xlciBzZXR0aW5ncyc7DQokbGFuZ1sndGl0bGVfa2V5d29yZHNldHRpbmdzJ10gPSAnS2V5d29yZCBnZW5lcmF0b3Igc2V0dGluZ3MnOw0KDQokbGFuZ1snZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZSddID0gJ0F1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBwYWdlIGRlc2NyaXB0aW9uIHdoZXJlIG5vbmUgaXMgcHJvdmlkZWQnOw0KJGxhbmdbJ2Rlc2NyaXB0aW9uX2F1dG9fdGl0bGUnXSA9ICdUZXh0IGZvciBhdXRvLWdlbmVyYXRlZCBkZXNjcmlwdGlvbnMnOw0KJGxhbmdbJ2Rlc2NyaXB0aW9uX2F1dG9faGVscCddID0gJyhZb3UgPGI+bXVzdDwvYj4gaW5jbHVkZSB0aGUgdGFnIHtrZXl3b3Jkc30gaGVyZSknOw0KDQokbGFuZ1snc2V0X3VwX2F1dG9fZGVzY3JpcHRpb24nXSA9ICdTZXQgdXAgdGhlIGRlc2NyaXB0aW9uIGF1dG8tZ2VuZXJhdG9yIGFuZCBlbnN1cmUgdGhlIHRleHQgY29udGFpbnMgdGhlIHRhZyB7a2V5d29yZHN9JzsNCiRsYW5nWydhdXRvX2dlbmVyYXRlZCddID0gJ0F1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkJzsNCiRsYW5nWydhbmQnXSA9ICdhbmQnOw0KDQokbGFuZ1sndGl0bGVfa2V5d29yZF93ZWlnaHQnXSA9ICdLZXl3b3JkIHdlaWdodCBzZXR0aW5ncyc7DQokbGFuZ1sna2V5d29yZF9taW5sZW5ndGhfdGl0bGUnXSA9ICdNaW5pbXVtIGtleXdvcmQgbGVuZ3RoJzsNCiRsYW5nWydrZXl3b3JkX21pbmxlbmd0aF9oZWxwJ10gPSAnKFRoZSBtaW5pbXVtIGxlbmd0aCBvZiBhIHdvcmQgdG8gYmUgY29uc2lkZXJlZCBhcyBhIGtleXdvcmQpJzsNCiRsYW5nWydrZXl3b3JkX3RpdGxlX3dlaWdodF90aXRsZSddID0gJ1dlaWdodCBvZiB3b3JkcyBpbiB0aGUgcGFnZSB0aXRsZSc7DQokbGFuZ1sna2V5d29yZF90aXRsZV93ZWlnaHRfaGVscCddID0gJyhUaGUgd2VpZ2h0IG9mIHdvcmRzIGluIHRoZSBwYWdlIHRpdGxlLiBUaGUgaGlnaGVyIGEgd29yZFwncyB3ZWlnaHQsIHRoZSBtb3JlIGxpa2VseSBpdCBpcyB0byBiZWNvbWUgYSBrZXl3b3JkKSc7DQokbGFuZ1sna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHRfdGl0bGUnXSA9ICdXZWlnaHQgb2Ygd29yZHMgaW4gdGhlIHBhZ2UgZGVzY3JpcHRpb24nOw0KJGxhbmdbJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0X2hlbHAnXSA9ICcoVGhlIHdlaWdodCBvZiB3b3JkcyBpbiB0aGUgcGFnZSBkZXNjcmlwdGlvbi4gVGhlIGhpZ2hlciBhIHdvcmRcJ3Mgd2VpZ2h0LCB0aGUgbW9yZSBsaWtlbHkgaXQgaXMgdG8gYmVjb21lIGEga2V5d29yZCknOw0KJGxhbmdbJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0X3RpdGxlJ10gPSAnV2VpZ2h0IG9mIHdvcmRzIGluIGNvbnRlbnQgaGVhZGxpbmVzJzsNCiRsYW5nWydrZXl3b3JkX2hlYWRsaW5lX3dlaWdodF9oZWxwJ10gPSAnKFRoZSB3ZWlnaHQgb2Ygd29yZHMgYmV0d2VlbiAmbHQ7aDEmZ3Q7IHRvICZsdDtoNiZndDsgdGFncy4gVGhlIGhpZ2hlciBhIHdvcmRcJ3Mgd2VpZ2h0LCB0aGUgbW9yZSBsaWtlbHkgaXQgaXMgdG8gYmVjb21lIGEga2V5d29yZCknOw0KJGxhbmdbJ2tleXdvcmRfY29udGVudF93ZWlnaHRfdGl0bGUnXSA9ICdXZWlnaHQgb2Ygd29yZHMgaW4gcGxhaW4gY29udGVudCc7DQokbGFuZ1sna2V5d29yZF9jb250ZW50X3dlaWdodF9oZWxwJ10gPSAnKFRoZSB3ZWlnaHQgb2Ygd29yZHMgaW5zaWRlIHRoZSBwbGFpbiBjb250ZW50LiBUaGUgaGlnaGVyIGEgd29yZFwncyB3ZWlnaHQsIHRoZSBtb3JlIGxpa2VseSBpdCBpcyB0byBiZWNvbWUgYSBrZXl3b3JkKSc7DQoNCiRsYW5nWydrZXl3b3JkX21pbmltdW1fd2VpZ2h0X3RpdGxlJ10gPSAnTWluaW11bSB0b3RhbCB3ZWlnaHQgb2YgYSBrZXl3b3JkJzsNCiRsYW5nWydrZXl3b3JkX21pbmltdW1fd2VpZ2h0X2hlbHAnXSA9ICcoVGhlIG1pbmltdW0gdG90YWwgd2VpZ2h0IG9mIGEgd29yZCB0byBiZWNvbWUgYSBrZXl3b3JkLiBTaG91bGQgYmUgZ3JlYXRlciB0aGFuIHRoZSBoaWdoZXN0IHdlaWdodCBmcm9tIGFib3ZlLiBUaGUgc21hbGxlciB0aGUgbnVtYmVyLCB0aGUgbW9yZSBrZXl3b3JkcyB5b3UgZ2V0KSc7DQoNCiRsYW5nWydoZWxwX2tleXdvcmRfZ2VuZXJhdG9yJ10gPSAnVGhlIHNldHRpbmdzIHlvdSBjaGFuZ2Ugb24gdGhpcyBwYWdlIHdpbGwgbm90IGFmZmVjdCBhbnkga2V5d29yZHMgeW91IGVudGVyIG1hbnVhbGx5LiBGZWVsIGZyZWUgdG8gcGxheSB3aXRoIGFsbCB2YWx1ZXMgdW50aWwgeW91IGdldCB0aGUgYmVzdCByZXN1bHRzIGZvciB5b3VyIHBhZ2UuJzsNCg0KJGxhbmdbJ3RpdGxlX2tleXdvcmRfZXhjbHVkZSddID0gJ0tleXdvcmQgZXhjbHVzaW9uIGxpc3QnOw0KJGxhbmdbJ2tleXdvcmRfZXhjbHVkZV90aXRsZSddID0gJ1dvcmRzIHRvIG5ldmVyIGNvbnNpZGVyIGFzIGtleXdvcmRzJzsNCiRsYW5nWydrZXl3b3JkX2V4Y2x1ZGVfaGVscCddID0gJyhQcm92aWRlIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2Ygd29yZHMgdGhhdCBzaG91bGQgbmV2ZXIgYXBwZWFyIGluIGtleXdvcmQgbGlzdHMpJzsNCg0KJGxhbmdbJ2luY3JlYXNlX3ByaW9yaXR5J10gPSAnSW5jcmVhc2UgcHJpb3JpdHkgYnkgMTAlJzsNCiRsYW5nWydkZWNyZWFzZV9wcmlvcml0eSddID0gJ0luY3JlYXNlIHByaW9yaXR5IGJ5IDEwJSc7DQoNCiRsYW5nWyd0aXRsZV9yZWdlbmVyYXRlX3NpdGVtYXAnXSA9ICJSZWdlbmVyYXRlIHNpdGVtYXAgYW5kIHJvYm90cy50eHQiOw0KJGxhbmdbJ2J1dHRvbl9yZWdlbmVyYXRlX3NpdGVtYXAnXSA9ICJSZWdlbmVyYXRlIHNpdGVtYXAgYW5kIHJvYm90cy50eHQgbm93IjsNCiRsYW5nWyd0ZXh0X3JlZ2VuZXJhdGVfc2l0ZW1hcCddID0gIkl0IGNhbiBiZSBuZWNlc3NhcnkgdG8gcmVnZW5lcmF0ZSB0aGUgc2l0ZW1hcCBhbmQgcm9ib3RzLnR4dCBmaWxlIGFmdGVyIGV4dGVuc2l2ZSBjaGFuZ2VzIHRvIHRoZSBwYWdlIHN0cnVjdHVyZSI7DQokbGFuZ1snc2l0ZW1hcF9yZWdlbmVyYXRlZCddID0gIkJvdGggdGhlIHNpdGVtYXAgYW5kIHRoZSByb2JvdHMudHh0IGZpbGVzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgcmVnZW5lcmF0ZWQuIjsNCg0KJGxhbmdbJ2luc3RhbGxfZGF0YWJhc2VfZXJyb3InXSA9ICJBbiBlcnJvciBoYXMgb2NjdXJlZCBkdXJpbmcgaW5zdGFsbGF0aW9uOiBUaGUgZGF0YWJhc2UgdGFibGUgY291bGQgbm90IGJlIGNyZWF0ZWQuIjsNCiRsYW5nWydub191cmxfZm9wZW4nXSA9ICJOb3QgcG9zc2libGUgYXMgYWxsb3dfdXJsX2ZvcGVuIGhhcyBub3QgYmVlbiBzZXQgdG8gJnF1b3Q7b24mcXVvdDsgaW4geW91ciBwaHAgY29uZmlndXJhdGlvbi4iOw0KJGxhbmdbJ3RpdGxlX2FkZGl0aW9uYWxfbWV0YV90YWdzJ10gPSAiQWRkaXRpb25hbCBNZXRhIHRhZ3MiOw0KJGxhbmdbJ2FkZGl0aW9uYWxfbWV0YV90YWdzX3RpdGxlJ10gPSAiQWRkaXRpb25hbCBNZXRhIHRhZ3MgdG8gYmUgaW5zZXJ0ZWQiOw0KJGxhbmdbJ2FkZGl0aW9uYWxfbWV0YV90YWdzX2hlbHAnXSA9ICJTcGVjaWZ5IGFkZGl0aW9uYWwgTWV0YSB0YWdzIGhlcmUgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgcGFnZSBoZWFkZXIuIFlvdSBjYW4gdXNlIGFsbCBzbWFydHkgdmFyaWFibGVzIGFuZCBVRFRzIGhlcmUuIjsNCg0KJGxhbmdbJ2hlbHBfc2hvd2Jhc2UnXSA9ICJTZXQgdGhpcyBwYXJhbWV0ZXIgdG8gPGNvZGU+ZmFsc2U8L2NvZGU+IHRvIHN1cHByZXNzIHRoZSBvdXRwdXQgb2YgdGhlIGJhc2UgaHJlZiB0YWcuIjsNCg0KJGxhbmdbJ2NoYW5nZWxvZyddID0gPDw8RU9UDQo8dWw+DQo8bGk+VmVyc2lvbiAxLjAgLSAyNSBKYW51YXJ5IDIwMTIuIEluaXRpYWwgcmVsZWFzZS4gVGhpcyBpcyBhIGZvcmsgb2YgdGhlIFNFT1Rvb2xzIG1vZHVsZSB3aXRoIENNU01TIDEuMTArIGNvbXBhdGliaWxpdHkuIENoYW5nZXMgaW5jbHVkZToNCgk8dWw+DQoJCTxsaT5TZXQgcHJlZmVyZW5jZXMgb24gaW5zdGFsbDwvbGk+DQoJCTxsaT5SZW1vdmUgcHJlZmVyZW5jZXMgb24gdW5pbnN0YWxsPC9saT4NCgkJPGxpPlJlcGxhY2UgYWxsIHJlZmVyZW5jZSB0byBIaWVyYXJjaHlNYW5hZ2VyIG9iamVjdHMgd2l0aCBDb250ZW50T3BlcmF0aW9ucyBvYmplY3RzPC9saT4NCgkJPGxpPkdlbmVyYXRlIGFsbCBrZXl3b3Jkcywga2V5d29yZCBzdWdnZXN0aW9ucywgZGVzY3JpcHRpb25zIGFuZCBkZWZhdWx0IGRlc2NyaXB0aW9uczwvbGk+DQoJCTxsaT5HZW5lcmF0ZSBzaXRlbWFwLnhtbCBhbmQgcm9ib3RzLnR4dCBmaWxlczwvbGk+DQoJCTxsaT5SZXRhaW4gY2hlY2tib3ggcHJlZmVyZW5jZSBzZXR0aW5ncyBhZnRlciBzdWJtaXQ8L2xpPg0KCQk8bGk+T24gZnJvbnRlbmQgcGFnZSBsb2FkLCBlbnN1cmUgdGhhdCBhIGNvcnJlc3BvbmRpbmcgcmVjb3JkIGV4aXN0cyBpbiB0aGUgc2VvdG9vbHMyIGRhdGFiYXNlIHRhYmxlPC9saT4NCgk8L3VsPg0KPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4xIC0gMjUgSmFudWFyeSAyMDEyLiBNaW5vciBidWcgZml4PC9saT4NCjxsaT5WZXJzaW9uIDEuMC4yIC0gMSBGZWJydWFyeSAyMDEyLiBCdWcgZml4PC9saT4NCjxsaT5WZXJzaW9uIDEuMC4zIC0gMSBGZWJydWFyeSAyMDEyLiBCdWcgZml4PC9saT4NCjxsaT5WZXJzaW9uIDEuMC40IC0gMSBGZWJydWFyeSAyMDEyLiBDb3JyZWN0aW9uPC9saT4NCjxsaT5WZXJzaW9uIDEuMC41IC0gNiBGZWJydWFyeSAyMDEyLiBBZGQgZXZlbnQgaGFuZGxlcnMgdG8gcHVzaCBzaXRlbWFwIHRvIEdvb2dsZSB3ZWJtYXN0ZXJzPC9saT4NCjxsaT5WZXJzaW9uIDEuMC42IC0gNSBNYXJjaCAyMDEyLiBJbXByb3ZlZCBoYW5kbGluZyBvZiBzc2wgdXJscyBhbmQgYnVnIGZpeCB3aGVuIHRoZXJlIGFyZSBubyBzaG9ydCBtZXRhIGRlc2NyaXB0aW9uczwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuNyAtIDkgQXByaWwgMjAxMi4gQnVnIGZpeDwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuOCAtIDkgQXByaWwgMjAxMi4gQnVnIGZpeDwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuOSAtIDExIEFwcmlsIDIwMTIuDQogICAgPHVsPg0KICAgICAgICA8bGk+TW9yZSBpbXByb3ZlbWVudHMgdG8gc3NsIGhhbmRsaW5nIGVzcGVjaWFsbHkgaW4gdGhlIHNpdGVtYXAueG1sICh0aGFua3MgQ29saW4pPC9saT4NCiAgICAgICAgPGxpPkFiaWxpdHkgdG8gc2hvdyBhbnkgQWN0aXZlIHBhZ2UsIG5vdCBqdXN0IHBhZ2VzIHdpdGggQWN0aXZlIGFuZCBTaG93IEluIE1lbnUgaW4gdGhlIHNpdGVtYXAueG1sICh0aGFua3MgTWF0dCk8L2xpPg0KICAgIDwvdWw+DQo8L3VsPg0KRU9UOw0KDQokbGFuZ1snaGVscCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KPHA+U0VPVG9vbHMyIGhlbHBzIHlvdSB0byBnZXQgeW91ciBTRU8gKFNlYXJjaCBFbmdpbmUgT3B0aW1pemF0aW9uKSByaWdodC4gVGhlIG1vZHVsZSBhZGRzIHNldmVyYWwgU0VPIGNhcGFiaWxpdGllcyB0byB5b3VyIENNU01TIGluc3RhbGxhdGlvbiBhbmQgYWxlcnRzIHlvdSBpZiB5b3UgbWlzc2VkIG91dCBvbiBzb21ldGhpbmcgU0VPIHJlbGF0ZWQuIEN1cnJlbnRseSwgdGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOjwvcD4NCjx1bD4NCjxsaT4tIGdlbmVyYXRlcyBNZXRhIHRhZ3MgaW4gc3RhbmRhcmQgaHRtbCwgRHVibGluIENvcmUgYW5kIE9wZW5HcmFwaCBmb3JtYXRzPC9saT4NCjxsaT4tIGF1dG9tYXRpY2FsbHkgZXh0cmFjdHMga2V5d29yZHMgZnJvbSB5b3VyIHBhZ2VzIGFuZCBhZGRzIHRoZW0gdG8gdGhlIG1ldGEgdGFncyBhbmQgcGFnZSB0aXRsZTwvbGk+DQo8bGk+LSBsZXRzIHlvdSBkZXRlcm1pbmUgd2l0aCBhIHNpbmdsZSBjbGljayB3aGV0aGVyIGNlcnRhaW4gcGFnZXMgc2hvdWxkIGJlIGluZGV4ZWQgYnkgc2VhcmNoIGVuZ2luZXMgb3Igbm90PC9saT4NCjxsaT4tIGdlbmVyYXRlcyBhIHNpdGVtYXAueG1sIGZpbGUgd2l0aCB5b3VyIHBhZ2VzIHdoaWxlIGdpdmluZyB5b3UgZnVsbCBjb250cm9sIG92ZXIgdGhlIHByaW9yaXRpZXMgb2YgeW91ciBwYWdlczwvbGk+DQo8bGk+LSBnZW5lcmF0ZXMgYSByb2JvdHMudHh0IGZpbGUgZXhwbGljaXRseSBkaXNhbGxvd2luZyBhY2Nlc3MgdG8gcGFnZXMgeW91IGRvblwndCB3YW50IHRvIGJlIGluZGV4ZWQ8L2xpPg0KPGxpPi0gYWxlcnRzIHlvdSB3aGVuIHRoZXJlIGFyZSBzZXZlcmFsIHBhZ2VzIGZlYXR1cmluZyB0aGUgc2FtZSBwYWdlIHRpdGxlcyBhbmQgZGVzY3JpcHRpb25zPC9saT4NCjxsaT4tIGFsZXJ0cyB5b3Ugd2hlbiB2ZXJ5IHNob3J0IHBhZ2UgbWV0YSBkZXNjcmlwdGlvbnMgYXJlIGRldGVjdGVkPC9saT4NCjxsaT4tIGF1dG9tYXRpY2FsbHkgc3VibWl0cyB5b3VyIHNpdGVtYXAgZmlsZSB0byBHb29nbGUgd2hlbiB5b3UgY2hhbmdlIHlvdXIgY29udGVudDwvbGk+DQo8L3VsPg0KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+DQo8cD5GaXJzdCwgb3BlbiBhbGwgdGVtcGxhdGVzIHdoZXJlIHlvdSB3YW50IGRvIHVzZSBTRU9Ub29sczIuIFJlbW92ZSB0aGUgY29tcGxldGUgJmx0O3RpdGxlJmd0OyB0YWcgYW5kIHRoZSB7bWV0YWRhdGF9IHRhZyAoZXZlbiBpZiBpdCBzYXlzIHRvIG5ldmVyIHJlbW92ZSBpdCkgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSB0YWc8L3A+DQo8cHJlPg0Ke1NFT1Rvb2xzMn0NCjwvcHJlPjxiciAvPg0KPHA+TmV4dCwgYXQgdGhlIGJvdHRvbSBvZiB5b3VyIHRlbXBsYXRlIChhZnRlciB0aGUgY2xvc2luZyAmbHQ7L2JvZHkmZ3Q7IHRhZyksIGluc2VydCB0aGUgZm9sbG93aW5nIGNvZGU6PC9wPg0KPHByZT4NCntjYXB0dXJlIGFzc2lnbj0ibWV0YWRlc2NyaXB0aW9uIn17Y29udGVudCBibG9jaz0ibWV0YWRlc2NyaXB0aW9uIiBsYWJlbD0iUGFnZSBEZXNjcmlwdGlvbiIgb25lbGluZT0idHJ1ZSJ9ey9jYXB0dXJlfQ0KPC9wcmU+PGJyIC8+DQo8cD5UaGlzIGlzIHdoZXJlIHlvdVwnbGwgZW50ZXIgYSBzaG9ydCBwYWdlIGRlc2NyaXB0aW9uIChvbmUgb3IgdHdvIHNlbnRlbmNlcykgdGhhdCB3aWxsIGFwcGVhciBpbiB0aGUgc2VhcmNoIGVuZ2luZVwncyByZXN1bHRzIGFuZCBpZiwgZm9yIGV4YW1wbGUsIHNvbWVvbmUgc2hhcmVzIGEgbGluayB0byB5b3VyIHBhZ2Ugb24gZmFjZWJvb2suPC9wPg0KPHA+Tm93LCB2aXNpdCB0aGUgc2V0dGluZ3MgdGFicyBmb3IgcGFnZSB0aXRsZSAmIG1ldGEgaW5mb3JtYXRpb24sIHRoZSBzaXRlbWFwICYgY3Jhd2xlciBzZXR0aW5ncyBhbmQgdGhlIGtleXdvcmQgZ2VuZXJhdG9yIHNldHRpbmdzIGFuZCBmaWxsIGluIGFsbCByZXF1aXJlZCBpbmZvcm1hdGlvbiBmb3IgeW91ciBwYWdlLiBVbmRlciAiTmFtZSBvZiBwYWdlIGRlc2NyaXB0aW9uIGNvbnRlbnQgYmxvY2siIHlvdSBuZWVkIHRvIGVudGVyIHRoZSBuYW1lIG9mIHRoZSBjb250ZW50IGJsb2NrIHlvdSBqdXN0IGFkZGVkIHRvIHlvdXIgdGVtcGxhdGVzICgiUGFnZSBEZXNjcmlwdGlvbiIgaW4gb3VyIGV4YW1wbGUpLiBUaGUgdGFiICJTRU8gQWxlcnRzIiB3aWxsIGFsZXJ0IHlvdSBpZiBpdCBkZXRlY3RzIGFueXRoaW5nIHRoYXQgaXMgcmVxdWlyZWQgYnV0IG5vdCBhY3RpdmF0ZWQgb3IgZmlsbGVkIGluLiBZb3Ugc2hvdWxkIGFsc28gY29uc2lkZXIgc2lnbmluZyB1cCB5b3VyDQpzaXRlIHdpdGggR29vZ2xlIFdlYm1hc3RlciB0b29scy4gVGhlcmUsIHNlbGVjdCAiTWV0YSB0YWcgdmFsaWRhdGlvbiIgYW5kIHBhc3RlIHRoZSB2ZXJpZmljYXRpb24gY29kZSAocXVpdGUgYSBsb25nIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGFuZCBudW1iZXJzKSBpbnRvIHRoZSBib3ggIlZlcmlmaWNhdGlvbiBDb2RlIiBpbiAiU0VPIFNldHRpbmdzIiB0byBhdXRvbWF0aWNhbGx5IHZlcmlmeSB0aGF0IHlvdSBhcmUgcmVhbGx5DQp0aGUgb3duZXIgb2YgeW91ciBwYWdlIChubyBuZWVkIHRvIHBhc3RlIHRoZSBHb29nbGUgTWV0YS1jb2RlIGludG8geW91ciB0ZW1wbGF0ZSkuPC9wPg0KPHA+QXMgc29vbiBhcyBldmVyeXRoaW5nIGlzIHNldCB1cCwgbG9vayBhdCB0aGUgIlNFTyBBbGVydHMiIHRhYiBhbmQgZml4IGFsbCBwcm9ibGVtcyBkZXRlY3RlZCBoZXJlLiBUYWtlIGNhcmUgdG8gaW5zZXJ0IGEgKHVuaXF1ZSkgcGFnZSBkZXNjcmlwdGlvbiBvbiBldmVyeSBwYWdlIHlvdSBlZGl0IGluIHRoZSBmaWVsZCAiUGFnZSBEZXNjcmlwdGlvbiIgYXQgdGhlIGJvdHRvbSBvZiB5b3VyICJFZGl0IFBhZ2UiIGZvcm0uPC9wPg0KPHA+VG8gc2V0IHlvdXIgb3duIGtleXdvcmRzIChpbnN0ZWFkIG9mIHRoZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBvbmVzKSBvciBPcGVuR3JhcGggdHlwZSBmb3IgY2VydGFpbiBwYWdlcywgdmlzaXQgdGhlICJQYWdlIHNldHRpbmdzIiB0YWIgd2hlcmUgeW91XCdsbCBmaW5kIGEgbGlzdCBvZiBhbGwgcGFnZXMgeW91IGhhdmUgaW4geW91ciBzeXN0ZW0uIFRoZXJlLCB5b3UgY2FuIGFsc28gY2hhbmdlIHRoZSBzaXRlbWFwIHByaW9yaXR5ICh3aGljaCBpcyBhdXRvLWNhbGN1bGF0ZWQgYnkgZGVmYXVsdCkgb2YgYSBwYWdlIHRvIGluZGljYXRlIHRoYXQgaXQgc2hvdWxkDQpiZSBjb25zaWRlcmVkIG1vcmUgaW1wb3J0YW50IGZvciBzZWFyY2ggZW5naW5lIG1hdGNoZXMgb24geW91ciBwYWdlIG9yIGV4Y2x1ZGUgY2VydGFpbiBwYWdlcyBmcm9tIHRoZSBzZWFyY2ggaW5kZXguPC9wPg0KPHA+U0VPVG9vbHMyIHdpbGwgYWxzbyBhdXRvbWF0aWNhbGx5IGluc2VydCBhIGxpbmsgdG8gdGhlIGltYWdlIHRvIGJlIHVzZWQgYXMgdGhlIG1haW4gaW1hZ2Ugb2YgeW91ciBwYWdlIGlmIHlvdSBzZWxlY3QgYW4gIkltYWdlIiBmb3IgdGhlIHBhZ2UgZnJvbSB3aXRoaW4geW91ciBwYWdlXCdzICJPcHRpb25zIiB0YWIgKHRoaXMgaXMgaW1wb3J0YW50IGZvciBwZW9wbGUgc3VibWl0dGluZyBhIGxpbmsgdG8geW91ciBwYWdlIGUuZy4gb24gZmFjZWJvb2spLiBBbHNvLCBpZiB5b3UgYXJlIHVzaW5nIE9wZW5HcmFwaCwgdGhlIGltYWdlIHNlbGVjdGVkIGhlcmUNCndpbGwgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgT3BlbkdyYXBoIGltYWdlIHlvdSBzcGVjaWZpZWQgZnJvbSB3aXRoaW4gIlNFTyBTZXR0aW5ncyIuIFBsZWFzZSBiZSBhd2FyZSB0aGF0IHlvdSBuZWVkIHRvIHVwbG9hZCB0aG9zZSBpbWFnZXMgdG8geW91ciAvdXBsb2Fkcy9pbWFnZXMgZGlyZWN0b3J5LjwvcD4NCjxoMz5DYW4gSSB1c2Ugc21hcnR5IHZhcmlhYmxlcz88L2gzPg0KPHA+WW91IGNhbiB1c2UgYWxsIHNtYXJ0eSB2YXJpYWJsZXMgYW5kIFVEVHMgd2l0aGluIHRoZSBzZXR0aW5ncyBmaWVsZHMgPGk+UGFnZSB0aXRsZTwvaT4sIDxpPk1ldGEgcGFnZSB0aXRsZTwvaT4sIDxpPkF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGRlc2NyaXB0aW9uczwvaT4gYW5kIDxpPkFkZGl0aW9uYWwgbWV0YSB0YWdzPC9pPi4gRW50ZXIgPGNvZGU+e2RlYnVnfTwvY29kZT4gdG8gc2VlIGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIHZhcmlhYmxlcy48L3A+DQo8aDM+V2hpY2ggc21hcnR5IHZhcmlhYmxlcyBhcmUgZXhwb3J0ZWQgYnkgU0VPVG9vbHMyPzwvaDM+DQo8Y29kZT57JHNlb19rZXl3b3Jkc308L2NvZGU+OiBBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBrZXl3b3JkcyBzZXQgZm9yIHRoZSBwYWdlIChpbmNsdWRpbmcgdGhlIGRlZmF1bHQga2V5d29yZHMpPGJyIC8+DQo8Y29kZT57JHRpdGxlX2tleXdvcmRzfTwvY29kZT46IEEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgYWxsIGtleXdvcmRzIHNldCBmb3IgdGhlIHBhZ2UgKGluY2x1ZGluZyB0aGUgZGVmYXVsdCBrZXl3b3Jkcyk8YnIgLz4NCjxjb2RlPnskZGVmYXVsdF9rZXl3b3Jkc308L2NvZGU+OiBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBkZWZhdWx0IGtleXdvcmRzPGJyIC8+DQo8Y29kZT57JHBhZ2Vfa2V5d29yZHN9PC9jb2RlPjogQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBhbGwga2V5d29yZHMgc2V0IGZvciB0aGUgcGFnZSAod2l0aG91dCB0aGUgZGVmYXVsdCBrZXl3b3JkcykNCjxoMz5TdXBwb3J0PC9oMz4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dCBvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAxMiwgQ2xpcCBNYWdpYyA8YSBocmVmPSJtYWlsdG86YWRtaW5AY2xpcG1hZ2ljLmNvbS5hdSI+Jmx0O2FkbWluQGNsaXBtYWdpYy5jb20uYXUmZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4nOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBJbnN0YWxsKCkNCgkgICBXaGVuIHlvdXIgbW9kdWxlIGlzIGluc3RhbGxlZCwgeW91IG1heSBuZWVkIHRvIGRvIHNvbWUNCgkgICBzZXR1cC4gVHlwaWNhbCB0aGluZ3MgdGhhdCBoYXBwZW4gaGVyZSBhcmUgdGhlIGNyZWF0aW9uDQoJICAgYW5kIHByZXBvcHVsYXRpb24gb2YgZGF0YWJhc2UgdGFibGVzLCBkYXRhYmFzZSBzZXF1ZW5jZXMsDQoJICAgcGVybWlzc2lvbnMsIHByZWZlcmVuY2VzLCBldGMuDQoJICAgCSAgIA0KCSAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgY3JlYXRpb24gb2YgZGF0YWJhc2UgdGFibGVzLA0KCSAgIGNoZWNrIG91dCB0aGUgQURPREIgRGF0YSBEaWN0aW9uYXJ5IHBhZ2UgYXQNCgkgICBodHRwOi8vcGhwbGVucy5jb20vbGVucy9hZG9kYi9kb2NzLWRhdGFkaWN0Lmh0bQ0KCSAgIA0KCSAgIFRoaXMgZnVuY3Rpb24gY2FuIHJldHVybiBhIHN0cmluZyBpbiBjYXNlIG9mIGFueSBlcnJvciwNCgkgICBhbmQgQ01TIHdpbGwgbm90IGNvbnNpZGVyIHRoZSBtb2R1bGUgaW5zdGFsbGVkLg0KCSAgIFN1Y2Nlc3NmdWwgaW5zdGFsbHMgc2hvdWxkIHJldHVybiBGQUxTRSBvciBub3RoaW5nIGF0IGFsbC4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJCQ0KCQkvLyBUeXBpY2FsIERhdGFiYXNlIEluaXRpYWxpemF0aW9uDQoJCSRkYiA9Y21zbXMoKS0+R2V0RGIoKTsNCgkJDQoJCS8vIG15c3FsLXNwZWNpZmljLCBidXQgaWdub3JlZCBieSBvdGhlciBkYXRhYmFzZQ0KCQkkdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOw0KCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7DQoJCQ0KICAgICAgICAvLyB0YWJsZSBzY2hlbWEgZGVzY3JpcHRpb24NCiAgICAgICAgJGZsZHMgPSAiDQoJCQljb250ZW50X2lkIEkgS0VZLA0KCQkJaW5kZXhhYmxlIEkoMSksDQoJCQlrZXl3b3JkcyBDKDI1NSksDQoJCQlwcmlvcml0eSBJKDMpLA0KCQkJb2d0eXBlIEMoMzIpDQoJCQkiOw0KDQoJCS8vIGNyZWF0ZSBpdC4gVGhpcyBzaG91bGQgZG8gZXJyb3IgY2hlY2tpbmcsIGJ1dCBJJ20gYSBsYXp5IHNvZC4NCgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzMiIsDQoJCQkJJGZsZHMsICR0YWJvcHRhcnJheSk7DQoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkJDQoJCS8vIFRlc3QgaWYgaW5zdGFsbGF0aW9uIHdvcmtlZDoNCgkJJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczInOw0KCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoJCWlmICghJHJlc3VsdCkgew0KCQkJcmV0dXJuICR0aGlzLT5MYW5nKCdpbnN0YWxsX2RhdGFiYXNlX2Vycm9yJyk7DQoJCX0NCgkJDQoJCS8vIHBlcm1pc3Npb25zDQoJCSR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdFZGl0IFNFTyBTZXR0aW5ncycsJ0VkaXQgU0VPIFNldHRpbmdzJyk7DQogICAgICAgICR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdFZGl0IHBhZ2UgZGVzY3JpcHRpb25zJywnRWRpdCBwYWdlIGRlc2NyaXB0aW9ucycpOw0KDQoJCS8vIGFkZCBzaXRlIHByZWZlcmVuY2VzDQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhZGRpdGlvbmFsX21ldGFfdGFncycsJycpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnY3JlYXRlX3JvYm90cycsMSk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcsMSk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2tleXdvcmRzJywnJyk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvJywnVGhpcyBwYWdlIGNvdmVycyB0aGUgdG9waWNzIHtrZXl3b3Jkc30nKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnLDEpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCcnKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfY29udGVudF93ZWlnaHQnLDEpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHQnLDQpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF9leGNsdWRlJywnaSwgbWUsIG15LCBteXNlbGYsIHdlLCBvdXIsIG91cnMsIG91cnNlbHZlcywgeW91LCB5b3VyLCB5b3VycywgeW91cnNlbGYsIHlvdXJzZWx2ZXMsIGhlLCBoaW0sIGhpcywgaGltc2VsZiwgc2hlLCBoZXIsIGhlcnMsIGhlcnNlbGYsIGl0LCBpdHMsIGl0c2VsZiwgdGhleSwgdGhlbSwgdGhlaXIsIHRoZWlycywgdGhlbXNlbHZlcywgd2hhdCwgd2hpY2gsIHdobywgd2hvbSwgdGhpcywgdGhhdCwgdGhlc2UsIHRob3NlLCBhbSwgaXMsIGFyZSwgd2FzLCB3ZXJlLCBiZSwgYmVlbiwgYmVpbmcsIGhhdmUsIGhhcywgaGFkLCBoYXZpbmcsIGRvLCBkb2VzLCBkaWQsIGRvaW5nLCBhLCBhbiwgdGhlLCBhbmQsIGJ1dCwgaWYsIG9yLCBiZWNhdXNlLCBhcywgdW50aWwsIHdoaWxlLCBvZiwgYXQsIGJ5LCBmb3IsIHdpdGgsIGFib3V0LCBhZ2FpbnN0LCBiZXR3ZWVuLCBpbnRvLCB0aHJvdWdoLCBkdXJpbmcsIGJlZm9yZSwgYWZ0ZXIsIGFib3ZlLCBiZWxvdywgdG8sIGZyb20sIHVwLCBkb3duLCBpbiwgb3V0LCBvbiwgb2ZmLCBvdmVyLCB1bmRlciwgYWdhaW4sIGZ1cnRoZXIsIHRoZW4sIG9uY2UsIGhlcmUsIHRoZXJlLCB3aGVuLCB3aGVyZSwgd2h5LCBob3csIGFsbCwgYW55LCBib3RoLCBlYWNoLCBmZXcsIG1vcmUsIG1vc3QsIG90aGVyLCBzb21lLCBzdWNoLCBubywgbm9yLCBub3QsIG9ubHksIG93biwgc2FtZSwgc28sIHRoYW4sIHRvbywgdmVyeSwgbG9yZW0sIGNvbWluZycpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF9oZWFkbGluZV93ZWlnaHQnLDIpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5pbXVtX3dlaWdodCcsNyk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdrZXl3b3JkX21pbmxlbmd0aCcsNSk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdrZXl3b3JkX3RpdGxlX3dlaWdodCcsNik7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX2NvbnRyaWJ1dG9yJywnJyk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX2NvcHlyaWdodCcsJycpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9kdWJsaW5jb3JlJywwKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfbGF0aXR1ZGUnLCcnKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfbG9jYXRpb24nLCcnKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfbG9uZ2l0dWRlJywnJyk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaCcsMCk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hZG1pbnMnLCcnKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJywnJyk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9pbWFnZScsJycpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnLCcnKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3RpdGxlJywne3RpdGxlfScpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdHlwZScsJycpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9wdWJsaXNoZXInLCcnKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJywnJyk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX3N0YW5kYXJkJywxKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcsMSk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0aXRsZScsJ3t0aXRsZX0gfCB7JHNpdGVuYW1lfSAtIHskdGl0bGVfa2V5d29yZHN9Jyk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0aXRsZV9tZXRhJywne3RpdGxlfSB8IHskc2l0ZW5hbWV9Jyk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwcmVmX3ZlcmlmaWNhdGlvbicsJycpOw0KCQkNCgkJLy8gcmVnaXN0ZXIgZXZlbnRzIGFuZCBhZGQgZXZlbnQgaGFuZGxlcnMNCiAgICAJJHRoaXMtPkNyZWF0ZUV2ZW50KCAnUHJlZnNVcGRhdGVkJyApOw0KICAgICAgICAkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDb3JlJywnQ29udGVudEVkaXRQb3N0JyxmYWxzZSk7DQogICAgICAgICR0aGlzLT5BZGRFdmVudEhhbmRsZXIoJ0NvcmUnLCdDb250ZW50RGVsZXRlUG9zdCcsZmFsc2UpOw0KCQkNCgkJDQoJCS8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZw0KCQkkdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ2luc3RhbGxlZCcsJHRoaXMtPkdldFZlcnNpb24oKSkpOw0KCQkNCj8+]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBVbmluc3RhbGwoKQ0KCSAgIFNvbWV0aW1lcywgYW4gZXhjZXB0aW9uYWxseSB1bmVubGlnaHRlbmVkIG9yIGlnbm9yYW50DQoJICAgYWRtaW4gd2lsbCB3aXNoIHRvIHVuaW5zdGFsbCB5b3VyIG1vZHVsZS4gV2hpbGUgaXQNCgkgICB3b3VsZCBiZSBiZXN0IHRvIGxheSBpbnRvIHRoZXNlIGlkaW90cyB3aXRoIGEgY2x1ZXN0aWNrLA0KCSAgIHdlIHdpbGwgZG8gdGhlIG1hZ25hbmltb3VzIHRoaW5nIGFuZCByZW1vdmUgdGhlIG1vZHVsZQ0KCSAgIGFuZCBjbGVhbiB1cCB0aGUgZGF0YWJhc2UsIHBlcm1pc3Npb25zLCBhbmQgcHJlZmVyZW5jZXMNCgkgICB0aGF0IGFyZSBzcGVjaWZpYyB0byBpdC4NCgkgICBUaGlzIGlzIHRoZSBtZXRob2Qgd2hlcmUgd2UgZG8gdGhpcy4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoNCgkJLy8gVHlwaWNhbCBEYXRhYmFzZSBSZW1vdmFsDQoJCSRkYiA9IGNtc21zKCktPkdldERiKCk7DQoJCQ0KCQkvLyByZW1vdmUgdGhlIGRhdGFiYXNlIHRhYmxlDQoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOw0KCQkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9zZW90b29sczIiICk7DQoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkJDQoJCS8vIHJlbW92ZSB0aGUgcGVybWlzc2lvbnMNCgkJJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ0VkaXQgU0VPIFNldHRpbmdzJyk7DQogICAgICAgICR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdFZGl0IHBhZ2UgZGVzY3JpcHRpb25zJyk7DQoJCQ0KCQkvLyByZW1vdmUgc2l0ZSBwcmVmZXJlbmNlcw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnYWRkaXRpb25hbF9tZXRhX3RhZ3MnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2NyZWF0ZV9yb2JvdHMnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdkZWZhdWx0X2tleXdvcmRzJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgna2V5d29yZF9jb250ZW50X3dlaWdodCcpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHQnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2tleXdvcmRfZXhjbHVkZScpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgna2V5d29yZF9oZWFkbGluZV93ZWlnaHQnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2tleXdvcmRfbWluaW11bV93ZWlnaHQnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdrZXl3b3JkX3RpdGxlX3dlaWdodCcpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9jb250cmlidXRvcicpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9jb3B5cmlnaHQnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfZHVibGluY29yZScpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9sb2NhdGlvbicpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9sb25naXR1ZGUnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hZG1pbnMnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9pbWFnZScpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3RpdGxlJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90eXBlJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9yZWdpb24nKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfc3RhbmRhcmQnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgndGl0bGUnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3RpdGxlX21ldGEnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3ByZWZfdmVyaWZpY2F0aW9uJyk7DQoJCQ0KCQkvLyByZW1vdmUgZXZlbnRzIGFuZCBldmVudCBoYW5kbGVycw0KCQkkdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCAnUHJlZnNVcGRhdGVkJyApOw0KICAgICAgICAkdGhpcy0+UmVtb3ZlRXZlbnQoICdQcmVmc1VwZGF0ZWQnICk7DQogICAgICAgICR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NvcmUnLCdDb250ZW50RWRpdFBvc3QnLGZhbHNlKTsNCiAgICAgICAgJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ29yZScsJ0NvbnRlbnREZWxldGVQb3N0JyxmYWxzZSk7DQogICAgICAgIA0KCQkNCgkJLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nDQoJCSR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygndW5pbnN0YWxsZWQnKSk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBVcGdyYWRlKCkNCgkgICBJZiB5b3VyIG1vZHVsZSB2ZXJzaW9uIG51bWJlciBkb2VzIG5vdCBtYXRjaCB0aGUgdmVyc2lvbg0KCSAgIG51bWJlciBvZiB0aGUgaW5zdGFsbGVkIG1vZHVsZSwgdGhlIENNUyBBZG1pbiB3aWxsIGdpdmUNCgkgICB5b3UgYSBjaGFuY2UgdG8gdXBncmFkZSB0aGUgbW9kdWxlLiBUaGlzIGlzIHRoZSBmdW5jdGlvbg0KCSAgIHRoYXQgYWN0dWFsbHkgaGFuZGxlcyB0aGUgdXBncmFkZS4NCgkgICBJZGVhbGx5LCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBoYW5kbGUgdXBncmFkZXMgaW5jcmVtZW50YWxseSwNCgkgICBzbyB5b3UgY291bGQgdXBncmFkZSBmcm9tIHZlcnNpb24gMC4wLjEgdG8gMTAuNS43IHdpdGgNCgkgICBhIHNpbmdsZSBjYWxsLiBGb3IgYSBncmVhdCBleGFtcGxlIG9mIHRoaXMsIHNlZSB0aGUgTmV3cw0KCSAgIG1vZHVsZSBpbiB0aGUgc3RhbmRhcmQgQ01TIGluc3RhbGwuDQoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KCQkkY3VycmVudF92ZXJzaW9uID0gJG9sZHZlcnNpb247DQoJCXN3aXRjaCgkY3VycmVudF92ZXJzaW9uKQ0KCQl7DQoJCQljYXNlICIxLjAiOg0KCQkJY2FzZSAiMS4wLjEiOg0KCQkJY2FzZSAiMS4wLjIiOg0KCQkJY2FzZSAiMS4wLjMiOg0KCQkJY2FzZSAiMS4wLjQiOg0KICAgICAgICAJCS8vIHJlZ2lzdGVyIGV2ZW50cw0KICAgICAgICAJCSR0aGlzLT5DcmVhdGVFdmVudCggJ1ByZWZzVXBkYXRlZCcgKTsNCiAgICAgICAgCQlicmVhazsNCiAgICAgICAgCQkNCgkJCWNhc2UgIjEuMC41IjoNCgkJCWNhc2UgIjEuMC42IjoNCgkJCWNhc2UgIjEuMC43IjoNCgkJCWNhc2UgIjEuMC44IjoNCgkJCSAgZGVmYXVsdDoNCgkJCSAgICBicmVhazsNCgkJfQ0KCQkNCgkJLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nDQoJCSR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygndXBncmFkZWQnLCR0aGlzLT5HZXRWZXJzaW9uKCkpKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/SEOTools2.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogU0VPVG9vbHMyIC0gU2V2ZXJhbCB0b29scyB0byBoZWxwIHdpdGggU2VhcmNoIEVuZ2luZSBPcHRpbWl6YXRpb24gYW5kIGNoZWNrIGZvciBzdWJvcHRpbWFsIFNFTy1yZWxhdGVkIHRoaW5ncy4NCiMgVmVyc2lvbjogMS4wLCBDbGlwIE1hZ2ljDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMTAgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIyBUaGlzIGZpbGUgb3JpZ2luYWxseSBjcmVhdGVkIGJ5IE1vZHVsZU1ha2VyIG1vZHVsZSwgdmVyc2lvbiAwLjMuMg0KIyBDb3B5cmlnaHQgKGMpIDIwMTAgYnkgU2FtdWVsIEdvbGRzdGVpbiAoc2pnQGNtc21hZGVzaW1wbGUub3JnKQ0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KLy9lcnJvcl9yZXBvcnRpbmcoRV9BTEwpOw0KDQokY29uZmlnID0gY21zbXMoKS0+Z2V0Q29uZmlnKCk7DQokcm9vdF91cmwgPSBlbXB0eSgkX1NFUlZFUlsnSFRUUFMnXSkgPyAkZ0Ntcy0+Y29uZmlnWydyb290X3VybCddIDogJGdDbXMtPmNvbmZpZ1snc3NsX3VybCddOw0KDQoNCg0KY2xhc3MgU0VPVG9vbHMyIGV4dGVuZHMgQ01TTW9kdWxlDQp7DQoNCiAgZnVuY3Rpb24gR2V0TmFtZSgpDQogIHsNCiAgICByZXR1cm4gJ1NFT1Rvb2xzMic7DQogIH0NCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0RnJpZW5kbHlOYW1lKCkNCiAgIFRoaXMgY2FuIHJldHVybiBhbnkgc3RyaW5nLCBwcmVmZXJhYmx5IGEgbG9jYWxpemVkIG5hbWUNCiAgIG9mIHRoZSBtb2R1bGUuIFRoaXMgaXMgdGhlIG5hbWUgdGhhdCdzIHNob3duIGluIHRoZQ0KICAgQWRtaW4gTWVudXMgYW5kIHNlY3Rpb24gcGFnZXMgKGlmIHRoZSBtb2R1bGUgaGFzIGFuIGFkbWluDQogICBjb21wb25lbnQpLg0KDQogICBTZWUgdGhlIG5vdGUgb24gbG9jYWxpemF0aW9uIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyk7DQogIH0NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBHZXRWZXJzaW9uKCkNCiAgIFRoaXMgY2FuIHJldHVybiBhbnkgc3RyaW5nLCBwcmVmZXJhYmx5IGEgbnVtYmVyIG9yDQogICBzb21ldGhpbmcgdGhhdCBtYWtlcyBzZW5zZSBmb3IgZGVzaWduYXRpbmcgYSB2ZXJzaW9uLg0KICAgVGhlIENNUyB3aWxsIHVzZSB0aGlzIHRvIGlkZW50aWZ5IHdoZXRoZXIgb3Igbm90DQogICB0aGUgaW5zdGFsbGVkIHZlcnNpb24gb2YgdGhlIG1vZHVsZSBpcyBjdXJyZW50LCBhbmQNCiAgIHRoZSBtb2R1bGUgd2lsbCB1c2UgaXQgdG8gZmlndXJlIG91dCBob3cgdG8gdXBncmFkZQ0KICAgaXRzZWxmIGlmIHJlcXVlc3RlZC4NCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIEdldFZlcnNpb24oKQ0KICB7DQogICAgcmV0dXJuICcxLjAuOSc7DQogIH0NCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0SGVscCgpDQogICBUaGlzIHJldHVybnMgSFRNTCBpbmZvcm1hdGlvbiBvbiB0aGUgbW9kdWxlLg0KICAgVHlwaWNhbGx5LCB5b3UnbGwgd2FudCB0byBpbmNsdWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0bw0KICAgdXNlIHRoZSBtb2R1bGUuDQoNCiAgIFNlZSB0aGUgbm90ZSBvbiBsb2NhbGl6YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXRIZWxwKCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOw0KICB9DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEdldEF1dGhvcigpDQogICBUaGlzIHJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIE1vZHVsZQ0KICAgQWRtaW4gaWYgeW91IGNsaWNrIG9uIHRoZSAiQWJvdXQiIGxpbmsuDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXRBdXRob3IoKQ0KICB7DQogICAgcmV0dXJuICdDbGlwIE1hZ2ljJzsNCiAgfQ0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBHZXRBdXRob3JFbWFpbCgpDQogICBUaGlzIHJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIE1vZHVsZQ0KICAgQWRtaW4gaWYgeW91IGNsaWNrIG9uIHRoZSAiQWJvdXQiIGxpbmsuIEl0IGhlbHBzIHVzZXJzDQogICBvZiB5b3VyIG1vZHVsZSBnZXQgaW4gdG91Y2ggd2l0aCB5b3UgdG8gc2VuZCBidWcgcmVwb3J0cywNCiAgIHF1ZXN0aW9ucywgY2FzZXMgb2YgYmVlciwgYW5kL29yIGxhcmdlIHN1bXMgb2YgbW9uZXkuDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpDQogIHsNCiAgICByZXR1cm4gJ2FkbWluQGNsaXBtYWdpYy5jb20uYXUnOw0KICB9DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEdldENoYW5nZUxvZygpDQogICBUaGlzIHJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIG1vZHVsZQ0KICAgQWRtaW4gaWYgeW91IGNsaWNrIG9uIHRoZSBBYm91dCBsaW5rLiBJdCBoZWxwcyB1c2Vycw0KICAgZmlndXJlIG91dCB3aGF0J3MgY2hhbmdlZCBiZXR3ZWVuIHJlbGVhc2VzLg0KICAgU2VlIHRoZSBub3RlIG9uIGxvY2FsaXphdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4NCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOw0KICB9DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIElzUGx1Z2luTW9kdWxlKCkNCiAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlIG9yIGZhbHNlLCBkZXBlbmRpbmcgdXBvbg0KICAgd2hldGhlciB1c2VycyBjYW4gaW5jbHVkZSB0aGUgbW9kdWxlIGluIGEgcGFnZSBvcg0KICAgdGVtcGxhdGUgdXNpbmcgYSBzbWFydHkgdGFnIG9mIHRoZSBmb3JtDQogICB7Y21zX21vZHVsZSBtb2R1bGU9J1NFT1Rvb2xzMicgcGFyYW0xPXZhbCBwYXJhbTI9dmFsLi4ufQ0KDQogICBJZiB5b3VyIG1vZHVsZSBkb2VzIG5vdCBnZXQgaW5jbHVkZWQgaW4gcGFnZXMgb3INCiAgIHRlbXBsYXRlcywgcmV0dXJuICJmYWxzZSIgaGVyZS4NCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkNCiAgew0KICAgIHJldHVybiB0cnVlOw0KICB9DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEhhc0FkbWluKCkNCiAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUsIGRlcGVuZGluZyBvbg0KICAgd2hldGhlciB5b3VyIG1vZHVsZSBhZGRzIGFueXRoaW5nIHRvIHRoZSBBZG1pbiBhcmVhIG9mDQogICB0aGUgc2l0ZS4gRm9yIHRoZSByZXN0IG9mIHRoZXNlIGNvbW1lbnRzLCBJJ2xsIGJlIGNhbGxpbmcNCiAgIHRoZSBhZG1pbiBwYXJ0IG9mIHlvdXIgbW9kdWxlIHRoZSAiQWRtaW4gUGFuZWwiIGZvcg0KICAgd2FudCBvZiBhIGJldHRlciB0ZXJtLg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gSGFzQWRtaW4oKQ0KICB7DQogICAgcmV0dXJuIHRydWU7DQogIH0NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBHZXRBZG1pblNlY3Rpb24oKQ0KICAgSWYgeW91ciBtb2R1bGUgaGFzIGFuIEFkbWluIFBhbmVsLCB5b3UgY2FuIHNwZWNpZnkNCiAgIHdoaWNoIEFkbWluIFNlY3Rpb24gKG9yIHRvcC1sZXZlbCBBZG1pbiBNZW51KSBpdCBzaG93cw0KICAgdXAgaW4uIFRoaXMgbWV0aG9kIHJldHVybnMgYSBzdHJpbmcgdG8gc3BlY2lmeSB0aGF0DQogICBzZWN0aW9uLiBWYWxpZCByZXR1cm4gdmFsdWVzIGFyZToNCg0KICAgbWFpbiAgICAgICAgLSB0aGUgTWFpbiBtZW51IHRhYi4NCiAgIGNvbnRlbnQgICAgIC0gdGhlIENvbnRlbnQgbWVudQ0KICAgbGF5b3V0ICAgICAgLSB0aGUgTGF5b3V0IG1lbnUNCiAgIHVzZXJzZ3JvdXBzIC0gdGhlIFVzZXJzIGFuZCBHcm91cHMgbWVudQ0KICAgZXh0ZW5zaW9ucyAgLSB0aGUgRXh0ZW5zaW9ucyBtZW51ICh0aGlzIGlzIHRoZSBkZWZhdWx0KQ0KICAgc2l0ZWFkbWluICAgLSB0aGUgU2l0ZSBBZG1pbiBtZW51DQogICB2aWV3c2l0ZSAgICAtIHRoZSBWaWV3IFNpdGUgbWVudSB0YWINCiAgIGxvZ291dCAgICAgIC0gdGhlIExvZ291dCBtZW51IHRhYg0KDQogICBOb3RlIHRoYXQgaWYgeW91IHBsYWNlIHlvdXIgbW9kdWxlIGluIHRoZSBtYWluLA0KICAgdmlld3NpdGUsIG9yIGxvZ291dCBzZWN0aW9ucywgaXQgd2lsbCBzaG93IHVwIGluIHRoZQ0KICAgbWVudXMsIGJ1dCB3aWxsIG5vdCBiZSB2aXNpYmxlIGluIGFueSB0b3AtbGV2ZWwNCiAgIHNlY3Rpb24gcGFnZXMuDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXRBZG1pblNlY3Rpb24oKQ0KICB7DQogICAgcmV0dXJuICdjb250ZW50JzsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEdldEFkbWluRGVzY3JpcHRpb24oKQ0KICAgSWYgeW91ciBtb2R1bGUgZG9lcyBoYXZlIGFuIEFkbWluIFBhbmVsLCB5b3UNCiAgIGNhbiBoYXZlIGl0IHJldHVybiBhIGRlc2NyaXB0aW9uIHN0cmluZyB0aGF0IGdldHMgc2hvd24NCiAgIGluIHRoZSBBZG1pbiBTZWN0aW9uIHBhZ2UgdGhhdCBjb250YWlucyB0aGUgbW9kdWxlLg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2FkbWluZGVzY3JpcHRpb24nKTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFZpc2libGVUb0FkbWluVXNlcigpDQogICBJZiB5b3VyIG1vZHVsZSBkb2VzIGhhdmUgYW4gQWRtaW4gUGFuZWwsIHlvdQ0KICAgY2FuIGNvbnRyb2wgd2hldGhlciBvciBub3QgaXQncyBkaXNwbGF5ZWQgYnkgdGhlIGJvb2xlYW4NCiAgIHRoYXQgaXMgcmV0dXJuZWQgYnkgdGhpcyBtZXRob2QuIFRoaXMgaXMgcHJpbWFyaWx5IHVzZWQNCiAgIHRvIGhpZGUgbW9kdWxlcyBmcm9tIGFkbWlucyB3aG8gbGFjayBwZXJtaXNzaW9uIHRvIHVzZQ0KICAgdGhlbS4NCg0KICAgVHlwaWNhbGx5LCB5b3UnbGwgdXNlIHNvbWUgcGVybWlzc2lvbiB0byBzZXQgdGhpcw0KICAgKGUuZy4sICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1NvbWUgUGVybWlzc2lvbicpOyApDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ0VkaXQgU0VPIFNldHRpbmdzJyk7DQogIH0NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBDaGVja0FjY2VzcygpDQogICBUaGlzIHdyYXBwZXIgZnVuY3Rpb24gd2lsbCBjaGVjayBhZ2FpbnN0IHRoZSBzcGVjaWZpZWQgcGVybWlzc2lvbiwNCiAgIGFuZCBkaXNwbGF5IGFuIGVycm9yIHBhZ2UgaWYgdGhlIHVzZXIgZG9lc24ndCBoYXZlIGFkZXF1YXRlIHBlcm1pc3Npb25zLg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gQ2hlY2tBY2Nlc3MoJHBlcm0gPSAnRWRpdCBTRU8gU2V0dGluZ3MnKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJHBlcm0pOw0KICB9DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIERpc3BsYXlFcnJvclBhZ2UoKQ0KICAgVGhpcyBpcyBhIHNpbXBsZSBmdW5jdGlvbiBmb3IgZ2VuZXJhdGluZyBlcnJvciBwYWdlcy4NCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIERpc3BsYXlFcnJvclBhZ2UoJGlkLCAmJHBhcmFtcywgJHJldHVybl9pZCwgJG1lc3NhZ2U9JycpDQogIHsNCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2Vycm9yJywgJHRoaXMtPkxhbmcoJ2Vycm9yJykpOw0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ21lc3NhZ2UnLCAkbWVzc2FnZSk7DQoNCiAgICAvLyBEaXNwbGF5IHRoZSBwb3B1bGF0ZWQgdGVtcGxhdGUNCiAgICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2Vycm9yLnRwbCcpOw0KICB9DQoNCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBHZXREZXBlbmRlbmNpZXMoKQ0KICAgWW91ciBtb2R1bGUgbWF5IG5lZWQgYW5vdGhlciBtb2R1bGUgdG8gYWxyZWFkeSBiZSBpbnN0YWxsZWQNCiAgIGJlZm9yZSB5b3UgY2FuIGluc3RhbGwgaXQuDQogICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiB0aG9zZSBkZXBlbmRlbmNpZXMgYW5kDQogICBtaW5pbXVtIHZlcnNpb24gbnVtYmVycyB0aGF0IHRoaXMgbW9kdWxlIHJlcXVpcmVzLg0KDQogICBJdCBzaG91bGQgcmV0dXJuIGFuIGhhc2gsIGVnLg0KICAgcmV0dXJuIGFycmF5KCdzb21lbW9kdWxlJz0+JzEuMCcsICdvdGhlcm1vZHVsZSc9PicxLjEnKTsNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpDQogIHsNCiAgICByZXR1cm4gYXJyYXkoKTsNCiAgfQ0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBNaW5pbXVtQ01TVmVyc2lvbigpDQogICBZb3VyIG1vZHVsZSBtYXkgcmVxdWlyZSBmdW5jdGlvbnMgb3Igb2JqZWN0cyBmcm9tDQogICBhIHNwZWNpZmljIHZlcnNpb24gb2YgQ01TIE1hZGUgU2ltcGxlLg0KICAgRXZlciBzaW5jZSB2ZXJzaW9uIDAuMTEsIHlvdSBjYW4gc3BlY2lmeSB3aGljaCBtaW5pbXVtDQogICBDTVMgTVMgdmVyc2lvbiBpcyByZXF1aXJlZCBmb3IgeW91ciBtb2R1bGUsIHdoaWNoIHdpbGwNCiAgIHByZXZlbnQgaXQgZnJvbSBiZWluZyBpbnN0YWxsZWQgYnkgYSB2ZXJzaW9uIG9mIENNUyB0aGF0DQogICBjYW4ndCBydW4gaXQuDQoNCiAgIFRoaXMgbWV0aG9kIHJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZQ0KICAgbWluaW11bSB2ZXJzaW9uIHRoYXQgdGhpcyBtb2R1bGUgcmVxdWlyZXMuDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpDQogIHsNCiAgICByZXR1cm4gIjEuOS4yIjsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIE1heGltdW1DTVNWZXJzaW9uKCkNCiAgIFlvdSBtYXkgd2FudCB0byBwcmV2ZW50IHBlb3BsZSBmcm9tIHVzaW5nIHlvdXIgbW9kdWxlIGluDQogICBmdXR1cmUgdmVyc2lvbnMgb2YgQ01TIE1hZGUgU2ltcGxlLCBlc3BlY2lhbGx5IGlmIHlvdQ0KICAgdGhpbmsgQVBJIGZlYXR1cmVzIHlvdSB1c2UgbWF5IGNoYW5nZSAtLSBhZnRlciBhbGwsIHlvdQ0KICAgbmV2ZXIgcmVhbGx5IGtub3cgaG93IHRoZSBDTVMgTVMgQVBJIGNvdWxkIGV2b2x2ZS4NCg0KICAgU28sIHRvIHByZXZlbnQgcGVvcGxlIGZyb20gZmxvb2RpbmcgeW91IHdpdGggYnVnIHJlcG9ydHMNCiAgIHdoZW4gYSBuZXcgdmVyc2lvbiBvZiBDTVMgTVMgaXMgcmVsZWFzZWQsIHlvdSBjYW4gc2ltcGx5DQogICByZXN0cmljdCB0aGUgdmVyc2lvbi4gVGhlbiwgb2YgY291cnNlLCB0aGUgb251cyBpcyBvbiB5b3UNCiAgIHRvIHJlbGVhc2UgYSBuZXcgdmVyc2lvbiBvZiB5b3VyIG1vZHVsZSB3aGVuIGEgbmV3IHZlcnNpb24NCiAgIG9mIHRoZSBDTVMgaXMgcmVsZWFzZWQuLi4NCg0KICAgVGhpcyBtZXRob2QgcmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlDQogICBtYXhpbXVtIHZlcnNpb24gdGhhdCB0aGlzIG1vZHVsZSBzdXBwb3J0cy4NCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIC8qIGZ1bmN0aW9uIE1heGltdW1DTVNWZXJzaW9uKCkNCiAgIHsNCiAgIHJldHVybjsNCiAgIH0NCiAgICovDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEluc3RhbGxQb3N0TWVzc2FnZSgpDQogICBBZnRlciBpbnN0YWxsYXRpb24sIHRoZXJlIG1heSBiZSB0aGluZ3MgeW91IHdhbnQgdG8NCiAgIGNvbW11bmljYXRlIHRvIHlvdXIgYWRtaW4uIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhDQogICBzdHJpbmcgd2hpY2ggd2lsbCBiZSBkaXNwbGF5ZWQuDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0aW5zdGFsbCcpOw0KICB9DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkNCiAgIEFmdGVyIHJlbW92aW5nIGEgbW9kdWxlLCB0aGVyZSBtYXkgYmUgdGhpbmdzIHlvdSB3YW50IHRvDQogICBjb21tdW5pY2F0ZSB0byB5b3VyIGFkbWluLiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYQ0KICAgc3RyaW5nIHdoaWNoIHdpbGwgYmUgZGlzcGxheWVkLg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0dW5pbnN0YWxsJyk7DQogIH0NCg0KDQogIC8qKg0KICAgKiBVbmluc3RhbGxQcmVNZXNzYWdlKCkNCiAgICogVGhpcyBhbGxvd3MgeW91IHRvIGRpc3BsYXkgYSBtZXNzYWdlIGFsb25nIHdpdGggYSBZZXMvTm8gZGlhbG9nIGJveC4gSWYgdGhlIHVzZXIgcmVzcG9uZHMNCiAgICogaW4gdGhlIGFmZmlybWF0aXZlIHRvIHlvdXIgbWVzc2FnZSwgdGhlIHVuaW5zdGFsbCB3aWxsIHByb2NlZWQuIElmIHRoZXkgcmVzcG9uZCBpbiB0aGUNCiAgICogbmVnYXRpdmUsIHRoZSB1bmluc3RhbGwgd2lsbCBiZSBjYW5jZWxlZC4gVGh1cywgeW91ciBtZXNzYWdlIHNob3VsZCBiZSBvZiB0aGUgZm9ybQ0KICAgKiAiQWxsIG1vZHVsZSBkYXRhIHdpbGwgYmUgZGVsZXRlZC4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHVuaW5zdGFsbCB0aGlzIG1vZHVsZT8iDQogICAqDQogICAqIElmIHlvdSBkb24ndCB3YW50IHRoZSBkaWFsb2csIGhhdmUgdGhpcyBtZXRob2QgcmV0dXJuIGEgRkFMU0UsIHdoaWNoIHdpbGwgY2F1c2UgdGhlDQogICAqIG1vZHVsZSB0byB1bmluc3RhbGwgaW1tZWRpYXRlbHkgaWYgdGhlIHVzZXIgY2xpY2tzIHRoZSAidW5pbnN0YWxsIiBsaW5rLg0KICAgKi8NCiAgZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3JlYWxseV91bmluc3RhbGwnKTsNCiAgfQ0KDQogIGZ1bmN0aW9uIEdldE5vdGlmaWNhdGlvbk91dHB1dCgkcHJpb3JpdHkgPSAzKSB7DQogICAgaWYgKGNvdW50KCR0aGlzLT5nZXRVcmdlbnRBbGVydHMoKSkgPiAwKSB7DQogICAgICAkdGV4dCA9ICR0aGlzLT5MYW5nKCdwcm9ibGVtX2FsZXJ0JyxBcnJheSgkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICR0aGlzLT5MYW5nKCdwcm9ibGVtX2xpbmtfdGl0bGUnKSkpKTsNCg0KICAgICAgJG9iaiA9IG5ldyBTdGRDbGFzczsNCiAgICAgICRvYmotPnByaW9yaXR5ID0gMzsNCiAgICAgICRvYmotPmh0bWwgPSAkdGV4dDsNCg0KICAgICAgcmV0dXJuICRvYmo7DQogICAgfQ0KICB9DQoNCg0KICBmdW5jdGlvbiBTZXRQYXJhbWV0ZXJzKCkgew0KICAgICR0aGlzLT5SZWdpc3Rlck1vZHVsZVBsdWdpbigpOw0KDQogICAgJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcyh0cnVlKTsNCg0KICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3Nob3diYXNlJywgJ3RydWUnLCAkdGhpcy0+TGFuZygnaGVscF9zaG93YmFzZScpKTsNCiAgfQ0KDQoNCiAgZnVuY3Rpb24gZ2V0VXJnZW50QWxlcnRzKCkgew0KICAgIGdsb2JhbCAkZ0NtczsNCiAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiAgICAkcm9vdF91cmwgPSBlbXB0eSgkX1NFUlZFUlsnSFRUUFMnXSkgPyAkZ0Ntcy0+Y29uZmlnWydyb290X3VybCddIDogJGdDbXMtPmNvbmZpZ1snc3NsX3VybCddOw0KDQogICAgJGFsZXJ0cyA9IEFycmF5KCk7DQogICAgLy8gRW5hYmxlIFByZXR0eSBVUkxzDQogICAgaWYgKCgkY29uZmlnWyd1cmxfcmV3cml0aW5nJ10gIT0gIm1vZF9yZXdyaXRlIikgJiYgKCRjb25maWdbJ3VybF9yZXdyaXRpbmcnXSAhPSAnaW50ZXJuYWwnKSkgew0KICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsNCiAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdzeXN0ZW0nOw0KICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnYWN0aXZhdGVfcHJldHR5X3VybHMnKTsNCiAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPkxhbmcoJ3ByZXR0eV91cmxzX2hlbHAnKTsNCiAgICAgICRhbGVydHNbXSA9ICRhbGVydDsNCiAgICB9DQogICAgLy8gTm8gTWV0YSB0YWdzIGFyZSBpbnNlcnRlZA0KICAgIGlmICgoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfc3RhbmRhcmQnLDApICE9IDEpICYmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9kdWJsaW5jb3JlJywwKSAhPSAxKSkgew0KICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsNCiAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdzZXR0aW5ncyc7DQogICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCd1c2Vfc3RhbmRhcmRfb3JfZHVibGluY29yZV9tZXRhJyk7DQogICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+TGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7DQogICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7DQogICAgfQ0KDQogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJywwKSAhPSAxKSB7DQogICAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2Jsb2NrJywnJykgIT0gJycpIHsNCiAgICAgICAgLy8gUGFnZXMgd2l0aG91dCBkZXNjcmlwdGlvbg0KICAgICAgICAkcXVlcnkgPSAnU0VMRUNUICosYy5jb250ZW50X2lkIEFTIGNpZCwgYy50eXBlIEFTIGN0eXBlIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgYyBMRUZUIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnRfcHJvcHMgcCBPTiAoYy5jb250ZW50X2lkID0gcC5jb250ZW50X2lkIEFORCBwLnByb3BfbmFtZSA9ICInLnN0cl9yZXBsYWNlKCcgJywnXycsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2Jsb2NrJywnJykpLiciKSBXSEVSRSAocC5jb250ZW50IElTIE5VTEwgT1IgcC5jb250ZW50ID0gIiIpIEFORCBjLnR5cGUgPSAiY29udGVudCIgTElNSVQgMCwyMSc7DQogICAgICAgICRyZXN1bHQgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgICAgIHdoaWxlICgkcHJvYmxlbSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsNCiAgIAkJICAJICBpZiAoJHByb2JsZW1bJ2N0eXBlJ10gPT0gJ2NvbnRlbnQnKSB7DQogICAJCSAgCSAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgCQkgIAkgICAgJGFsZXJ0Wydncm91cCddID0gJ3BhZ2VzJzsNCiAgIAkJICAJICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ21ldGFfZGVzY3JpcHRpb25fbWlzc2luZycsQXJyYXkoJHByb2JsZW1bJ2NvbnRlbnRfbmFtZSddKSk7DQogICAJCSAgCSAgICBpZiAoaXNzZXQoJF9HRVRbJ3NwXyddKSkgew0KICAgCQkgIAkgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRyb290X3VybC4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/c3BfPScuJF9HRVRbJ3NwXyddLicmY29udGVudF9pZD0nLiRwcm9ibGVtWydjaWQnXS4nIj4nLiR0aGlzLT5MYW5nKCdlZGl0X3BhZ2VfdG9fZml4JykuJzwvYT4nOw0KICAgCQkgIAkgICAgfWVsc2V7DQogICAJCSAgCSAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJHJvb3RfdXJsLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9fc3hfPScuJF9HRVRbJ19zeF8nXS4nJmNvbnRlbnRfaWQ9Jy4kcHJvYmxlbVsnY2lkJ10uJyI+Jy4kdGhpcy0+TGFuZygnZWRpdF9wYWdlX3RvX2ZpeCcpLic8L2E+JzsNCiAgIAkJICAJICAgIH0NCiAgIAkJICAJICAgICRhbGVydHNbXSA9ICRhbGVydDsNCiAgIAkJICAJICB9DQogICAgICAgIH0NCiAgICAgIH1lbHNlew0KICAgICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnc2V0dGluZ3MnOw0KICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdzZXRfdXBfZGVzY3JpcHRpb25fYmxvY2snKTsNCiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPkxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOw0KICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7DQogICAgICB9DQogICAgfWVsc2VpZihzdHJwb3MoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG8nLCcnKSwne2tleXdvcmRzfScpID09PSBmYWxzZSkgew0KICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsNCiAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdzZXR0aW5ncyc7DQogICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdzZXRfdXBfYXV0b19kZXNjcmlwdGlvbicpOw0KICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPkxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOw0KICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgIH0NCg0KICAgIC8vIHNpdGVtYXAueG1sIG5vdCB3cml0ZWFibGUNCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJywxKSA9PSAxKSB7DQogICAgICBpZiAoIWlzX3dyaXRlYWJsZSgkY29uZmlnWydyb290X3BhdGgnXSAuICcvc2l0ZW1hcC54bWwnKSkgew0KICAgICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnc3lzdGVtJzsNCiAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnc2l0ZW1hcF9ub3Rfd3JpdGVhYmxlJyk7DQogICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPkxhbmcoJ2NobW9kX3NpdGVtYXAnKTsNCiAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIHJvYm90cy50eHQgbm90IHdyaXRlYWJsZQ0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3JvYm90cycsMSkgPT0gMSkgew0KICAgICAgJGZwID0gQGZvcGVuKCRjb25maWdbJ3Jvb3RfcGF0aCddIC4gJy9yb2JvdHMudHh0JywiYSIpOw0KICAgICAgQGZjbG9zZSgkZnApOw0KICAgICAgaWYgKCFpc193cml0ZWFibGUoJGNvbmZpZ1sncm9vdF9wYXRoJ10gLiAnL3JvYm90cy50eHQnKSkgew0KICAgICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnc3lzdGVtJzsNCiAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygncm9ib3RzX25vdF93cml0ZWFibGUnKTsNCiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+TGFuZygnY2htb2Rfcm9ib3RzJyk7DQogICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsNCiAgICAgIH0NCiAgICB9DQoNCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoJywwKSA9PSAxKSB7DQogICAgICAvLyBObyBPcGVuR3JhcGggYWRtaW4gc2V0DQogICAgICBpZiAoKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hZG1pbnMnLCcnKSA9PSAnJykgJiYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbicsJycpID09ICcnKSkgew0KICAgICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnb3BlbmdyYXBoJzsNCiAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnbm9fb3BlbmdyYXBoX2FkbWlucycpOw0KICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+TGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7DQogICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsNCiAgICAgIH0NCiAgICAgIC8vIE5vIE9wZW5HcmFwaCBwYWdlIHR5cGUgc2V0DQogICAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3R5cGUnLCcnKSA9PSAnJykgew0KICAgICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnb3BlbmdyYXBoJzsNCiAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnbm9fb3BlbmdyYXBoX3R5cGUnKTsNCiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPkxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOw0KICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7DQogICAgICB9DQogICAgICAvLyBObyBPcGVuR3JhcGggc2l0ZW5hbWUgc2V0DQogICAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3NpdGVuYW1lJywnJykgPT0gJycpIHsNCiAgICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsNCiAgICAgICAgJGFsZXJ0Wydncm91cCddID0gJ29wZW5ncmFwaCc7DQogICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ25vX29wZW5ncmFwaF9zaXRlbmFtZScpOw0KICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+TGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7DQogICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsNCiAgICAgIH0NCiAgICAgIC8vIE5vIE9wZW5HcmFwaCBpbWFnZSBzZXQNCiAgICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfaW1hZ2UnLCcnKSA9PSAnJykgew0KICAgICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnb3BlbmdyYXBoJzsNCiAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnbm9fb3BlbmdyYXBoX2ltYWdlJyk7DQogICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5MYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsNCiAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgICAgfQ0KICAgIH0NCg0KICAgIHJldHVybiAkYWxlcnRzOw0KICB9DQoNCiAgZnVuY3Rpb24gZ2V0SW1wb3J0YW50QWxlcnRzKCkgew0KICAgIGdsb2JhbCAkZ0NtczsNCg0KICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOw0KICAgICRhbGVydHMgPSBBcnJheSgpOw0KICAgICRyb290X3VybCA9IGVtcHR5KCRfU0VSVkVSWydIVFRQUyddKSA/ICRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10gOiAkZ0Ntcy0+Y29uZmlnWydzc2xfdXJsJ107DQoNCiAgICAvLyBQYWdlcyB3aXRoIHNob3J0IGRlc2NyaXB0aW9uDQogICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqLGMuY29udGVudF9pZCBBUyBjaWQgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudCBjIElOTkVSIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnRfcHJvcHMgcCBPTiAoYy5jb250ZW50X2lkID0gcC5jb250ZW50X2lkIEFORCBwLnByb3BfbmFtZSA9ICInLnN0cl9yZXBsYWNlKCcgJywnXycsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2Jsb2NrJywnJykpLiciKSBXSEVSRSBDSEFSX0xFTkdUSChwLmNvbnRlbnQpIDwgNzUgQU5EIGMudHlwZSA9ICJjb250ZW50IiBBTkQgcC5jb250ZW50IDw+ICIiIExJTUlUIDAsMjEnOw0KICAgICRyZXN1bHQgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgaWYgKCRyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKSB7DQogICAgICB3aGlsZSAoJHByb2JsZW0gPSAkcmVzdWx0LT5mZXRjaFJvdygpKSB7DQogICAgICAgICRhbGVydCA9IEFycmF5KCk7DQogICAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdkZXNjcmlwdGlvbnMnOw0KICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdtZXRhX2Rlc2NyaXB0aW9uX3Nob3J0JyxBcnJheSgkcHJvYmxlbVsnY29udGVudF9uYW1lJ10pKTsNCiAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydzcF8nXSkpIHsNCiAgICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRyb290X3VybC4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/c3BfPScuJF9HRVRbJ3NwXyddLicmY29udGVudF9pZD0nLiRwcm9ibGVtWydjaWQnXS4nIj4nLiR0aGlzLT5MYW5nKCdlZGl0X3BhZ2VfdG9fZml4JykuJzwvYT4nOw0KICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRyb290X3VybC4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/X3N4Xz0nLiRfR0VUWydfc3hfJ10uJyZjb250ZW50X2lkPScuJHByb2JsZW1bJ2NpZCddLiciPicuJHRoaXMtPkxhbmcoJ2VkaXRfcGFnZV90b19maXgnKS4nPC9hPic7DQogICAgICAgIH0NCiAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIFBhZ2VzIHdpdGggZHVwbGljYXRlIHRpdGxlDQogICAgJHF1ZXJ5ID0gJ1NFTEVDVCBjMS5jb250ZW50X2FsaWFzIEFTIGMxbmFtZSwgYzEuY29udGVudF9pZCBBUyBjMWlkLCBjMi5jb250ZW50X2FsaWFzIEFTIGMybmFtZSwgYzIuY29udGVudF9pZCBBUyBjMmlkIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgYzEgSU5ORVIgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudCBjMiBPTiAoYzEuY29udGVudF9uYW1lID0gYzIuY29udGVudF9uYW1lIEFORCBjMS5jb250ZW50X2lkIDwgYzIuY29udGVudF9pZCkgV0hFUkUgYzEudHlwZSA9ICJjb250ZW50IiBBTkQgYzIudHlwZSA9ICJjb250ZW50IiBMSU1JVCAwLDIxJzsNCiAgICAkcmVzdWx0ID0mICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgIGlmICgkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkgew0KDQogICAgICB3aGlsZSAoJHByb2JsZW0gPSAkcmVzdWx0LT5mZXRjaFJvdygpKSB7DQogICAgICAgICRhbGVydCA9IEFycmF5KCk7DQogICAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICd0aXRsZXMnOw0KICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdkdXBsaWNhdGVfdGl0bGVzJyxBcnJheSgkcHJvYmxlbVsnYzFuYW1lJ10sJHByb2JsZW1bJ2MybmFtZSddKSk7DQogICAgICAgIGlmIChpc3NldCgkX0dFVFsnc3BfJ10pKSB7DQogICAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iJy4kcm9vdF91cmwuJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP3NwXz0nLiRfR0VUWydzcF8nXS4nJmNvbnRlbnRfaWQ9Jy4kcHJvYmxlbVsnYzFpZCddLiciPicuJHRoaXMtPkxhbmcoJ2VkaXRfcGFnZScsQXJyYXkoJHByb2JsZW1bJ2MxbmFtZSddKSkuJzwvYT4nOw0KICAgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJHJvb3RfdXJsLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9zcF89Jy4kX0dFVFsnc3BfJ10uJyZjb250ZW50X2lkPScuJHByb2JsZW1bJ2MyaWQnXS4nIj4nLiR0aGlzLT5MYW5nKCdlZGl0X3BhZ2UnLEFycmF5KCRwcm9ibGVtWydjMm5hbWUnXSkpLic8L2E+JzsNCiAgICAgICAgfWVsc2V7DQogICAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iJy4kcm9vdF91cmwuJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP19zeF89Jy4kX0dFVFsnX3N4XyddLicmY29udGVudF9pZD0nLiRwcm9ibGVtWydjMWlkJ10uJyI+Jy4kdGhpcy0+TGFuZygnZWRpdF9wYWdlJyxBcnJheSgkcHJvYmxlbVsnYzFuYW1lJ10pKS4nPC9hPic7DQogICAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iJy4kcm9vdF91cmwuJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP19zeF89Jy4kX0dFVFsnX3N4XyddLicmY29udGVudF9pZD0nLiRwcm9ibGVtWydjMmlkJ10uJyI+Jy4kdGhpcy0+TGFuZygnZWRpdF9wYWdlJyxBcnJheSgkcHJvYmxlbVsnYzJuYW1lJ10pKS4nPC9hPic7DQogICAgICAgIH0NCiAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgICAgfQ0KICAgIH0NCiAgICAvLyBQYWdlcyB3aXRoIGR1cGxpY2F0ZSBkZXNjcmlwdGlvbg0KICAgICRxdWVyeSA9ICdTRUxFQ1QgcDEuY29udGVudF9pZCBBUyBjMWlkLCBwMi5jb250ZW50X2lkIEFTIGMyaWQgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudF9wcm9wcyBwMSBJTk5FUiBKT0lOICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50X3Byb3BzIHAyIE9OIChwMS5wcm9wX25hbWUgPSBwMi5wcm9wX25hbWUgQU5EIHAxLnByb3BfbmFtZSA9ICInLnN0cl9yZXBsYWNlKCcgJywnXycsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2Jsb2NrJywnJykpLiciIEFORCBwMS5jb250ZW50X2lkIDwgcDIuY29udGVudF9pZCBBTkQgcDEuY29udGVudCA8PiAiIiBBTkQgcDIuY29udGVudCA8PiAiIikgV0hFUkUgcDEuY29udGVudCA9IHAyLmNvbnRlbnQgTElNSVQgMCwyMSc7DQogICAgJHJlc3VsdCA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCiAgICBpZiAoJHJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApIHsNCg0KICAgICAgd2hpbGUgKCRwcm9ibGVtID0gJHJlc3VsdC0+ZmV0Y2hSb3coKSkgew0KICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIGNvbnRlbnRfaWQsIGNvbnRlbnRfbmFtZSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50IFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRwcm9ibGVtWydjMWlkJ10uJyBPUiBjb250ZW50X2lkID0gJy4kcHJvYmxlbVsnYzJpZCddOw0KICAgICAgICAkcmVzdWx0MSA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCiAgICAgICAgJGZpcnN0ID0gJHJlc3VsdDEtPmZldGNoUm93KCk7DQogICAgICAgICRzZWNvbmQgPSAkcmVzdWx0MS0+ZmV0Y2hSb3coKTsNCiAgICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsNCiAgICAgICAgJGFsZXJ0Wydncm91cCddID0gJ2Rlc2NyaXB0aW9ucyc7DQogICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2R1cGxpY2F0ZV9kZXNjcmlwdGlvbnMnLEFycmF5KCRmaXJzdFsnY29udGVudF9uYW1lJ10sJHNlY29uZFsnY29udGVudF9uYW1lJ10pKTsNCiAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydzcF8nXSkpIHsNCiAgICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRyb290X3VybC4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/c3BfPScuJF9HRVRbJ3NwXyddLicmY29udGVudF9pZD0nLiRmaXJzdFsnY29udGVudF9pZCddLiciPicuJHRoaXMtPkxhbmcoJ2VkaXRfcGFnZScsQXJyYXkoJGZpcnN0Wydjb250ZW50X25hbWUnXSkpLic8L2E+JzsNCiAgICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRyb290X3VybC4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/c3BfPScuJF9HRVRbJ3NwXyddLicmY29udGVudF9pZD0nLiRzZWNvbmRbJ2NvbnRlbnRfaWQnXS4nIj4nLiR0aGlzLT5MYW5nKCdlZGl0X3BhZ2UnLEFycmF5KCRzZWNvbmRbJ2NvbnRlbnRfbmFtZSddKSkuJzwvYT4nOw0KICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRyb290X3VybC4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/X3N4Xz0nLiRfR0VUWydfc3hfJ10uJyZjb250ZW50X2lkPScuJGZpcnN0Wydjb250ZW50X2lkJ10uJyI+Jy4kdGhpcy0+TGFuZygnZWRpdF9wYWdlJyxBcnJheSgkZmlyc3RbJ2NvbnRlbnRfbmFtZSddKSkuJzwvYT4nOw0KICAgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJHJvb3RfdXJsLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9fc3hfPScuJF9HRVRbJ19zeF8nXS4nJmNvbnRlbnRfaWQ9Jy4kc2Vjb25kWydjb250ZW50X2lkJ10uJyI+Jy4kdGhpcy0+TGFuZygnZWRpdF9wYWdlJyxBcnJheSgkc2Vjb25kWydjb250ZW50X25hbWUnXSkpLic8L2E+JzsNCiAgICAgICAgfQ0KICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7DQogICAgICB9DQogICAgfQ0KICAgIC8vIE5vIGF1dGhvciBwcm92aWRlZA0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9wdWJsaXNoZXInLCcnKSA9PSAnJykgew0KICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsNCiAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdzZXR0aW5ncyc7DQogICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdwcm92aWRlX2FuX2F1dGhvcicpOw0KICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPkxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOw0KICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgIH0NCiAgICByZXR1cm4gJGFsZXJ0czsNCiAgfQ0KDQogIGZ1bmN0aW9uIGdldE5vdGljZUFsZXJ0cygpIHsNCiAgICBnbG9iYWwgJGdDbXM7DQoNCiAgICAkYWxlcnRzID0gQXJyYXkoKTsNCiAgICAvLyBObyBzdGFuZGFyZCBtZXRhDQogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3N0YW5kYXJkJywxKSAhPSAxKSB7DQogICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygndXNlX3N0YW5kYXJkX21ldGEnKTsNCiAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5MYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsNCiAgICAgICRhbGVydHNbXSA9ICRhbGVydDsNCiAgICB9DQogICAgLy8gU3VibWl0IGEgc2l0ZW1hcA0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnLDEpICE9IDEpIHsNCiAgICAgICRhbGVydCA9IEFycmF5KCk7DQogICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdjcmVhdGVfYV9zaXRlbWFwJyk7DQogICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+TGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidzaXRlbWFwc2V0dGluZ3MnKSk7DQogICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7DQogICAgfWVsc2VpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgncHVzaF9zaXRlbWFwJywxKSAhPSAxKSB7DQogICAgICAvLyBBdXRvbWF0aWNhbGx5IHN1Ym1pdCB0aGUgc2l0ZW1hcA0KICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsNCiAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2F1dG9tYXRpY2FsbHlfdXBsb2FkX3NpdGVtYXAnKTsNCiAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5MYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J3NpdGVtYXBzZXR0aW5ncycpKTsNCiAgICAgICRhbGVydHNbXSA9ICRhbGVydDsNCiAgICB9DQogICAgLy8gQ3JlYXRlIGEgcm9ib3RzLnR4dCBmaWxlDQogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjcmVhdGVfcm9ib3RzJywxKSAhPSAxKSB7DQogICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnY3JlYXRlX3JvYm90cycpOw0KICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPkxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nc2l0ZW1hcHNldHRpbmdzJykpOw0KICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgIH0NCiAgICAvLyBTZXQgYSBkZWZhdWx0IGltYWdlDQogICAgcmV0dXJuICRhbGVydHM7DQogIH0NCg0KICBmdW5jdGlvbiBnZXRfa2V5d29yZHMoJHNvdXJjZSwgJG1pbmxlbmd0aCA9IDYpIHsNCiAgICAkc291cmNlID0gcHJlZ19yZXBsYWNlKCcvXHtbXlx9XStcfS9pc1UnLCAnJywgdXRmOF9kZWNvZGUoJHNvdXJjZSkpOw0KICAgICRzb3VyY2UgPSBzdHJfcmVwbGFjZSgiXG4iLCIgIixzdHJpcF90YWdzKCRzb3VyY2UpKTsNCiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJy0nLCcgJywkc291cmNlKTsNCiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJy4nLCcgJywkc291cmNlKTsNCiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJywnLCcgJywkc291cmNlKTsNCiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJyEnLCcgJywkc291cmNlKTsNCiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJz8nLCcgJywkc291cmNlKTsNCiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJzonLCcgJywkc291cmNlKTsNCiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJyAgJywnICcsJHNvdXJjZSk7DQogICAgJGtleXdvcmRzID0gZXhwbG9kZSgnICcsJHNvdXJjZSk7DQogICAgZm9yZWFjaCAoJGtleXdvcmRzIGFzICRrZXk9PiR2YWx1ZSkgew0KICAgICAgaWYgKHN0cmxlbigkdmFsdWUpIDwgJG1pbmxlbmd0aCkgew0KICAgICAgICB1bnNldCgka2V5d29yZHNbJGtleV0pOw0KICAgICAgfWVsc2V7DQogICAgICAgICRrZXl3b3Jkc1ska2V5XSA9IGh0bWxlbnRpdGllcyh0cmltKCR2YWx1ZSkpOw0KICAgICAgfQ0KICAgIH0NCiAgICByZXR1cm4gJGtleXdvcmRzOw0KICB9DQoNCiAgZnVuY3Rpb24gZ2V0X2hlYWRsaW5lcygkZmlsZSl7DQogICAgJGgxdGFncyA9IHByZWdfbWF0Y2hfYWxsKCIvKDxoMS4qPikoXHcuKikoPFwvaDE+KS9pc3htVSIsJGZpbGUsJHBhdHRlcm5zKTsNCiAgICAkY29udGVudCA9ICIiOw0KICAgIGZvcmVhY2goJHBhdHRlcm5zWzJdIGFzICR0YWcpIHsNCiAgICAgICRjb250ZW50IC49ICIgIi4kdGFnOw0KICAgIH0NCiAgICAkaDJ0YWdzID0gcHJlZ19tYXRjaF9hbGwoIi8oPGgyLio+KShcdy4qKSg8XC9oMj4pL2lzeG1VIiwkZmlsZSwkcGF0dGVybnMpOw0KICAgIGZvcmVhY2goJHBhdHRlcm5zWzJdIGFzICR0YWcpIHsNCiAgICAgICRjb250ZW50IC49ICIgIi4kdGFnOw0KICAgIH0NCiAgICAkaDN0YWdzID0gcHJlZ19tYXRjaF9hbGwoIi8oPGgzLio+KShcdy4qKSg8XC9oMz4pL2lzeG1VIiwkZmlsZSwkcGF0dGVybnMpOw0KICAgIGZvcmVhY2goJHBhdHRlcm5zWzJdIGFzICR0YWcpIHsNCiAgICAgICRjb250ZW50IC49ICIgIi4kdGFnOw0KICAgIH0NCiAgICAkaDR0YWdzID0gcHJlZ19tYXRjaF9hbGwoIi8oPGg0Lio+KShcdy4qKSg8XC9oND4pL2lzeG1VIiwkZmlsZSwkcGF0dGVybnMpOw0KICAgIGZvcmVhY2goJHBhdHRlcm5zWzJdIGFzICR0YWcpIHsNCiAgICAgICRjb250ZW50IC49ICIgIi4kdGFnOw0KICAgIH0NCiAgICAkaDV0YWdzID0gcHJlZ19tYXRjaF9hbGwoIi8oPGg1Lio+KShcdy4qKSg8XC9oNT4pL2lzeG1VIiwkZmlsZSwkcGF0dGVybnMpOw0KICAgIGZvcmVhY2goJHBhdHRlcm5zWzJdIGFzICR0YWcpIHsNCiAgICAgICRjb250ZW50IC49ICIgIi4kdGFnOw0KICAgIH0NCiAgICAkaDZ0YWdzID0gcHJlZ19tYXRjaF9hbGwoIi8oPGg2Lio+KShcdy4qKSg8XC9oNj4pL2lzeG1VIiwkZmlsZSwkcGF0dGVybnMpOw0KICAgIGZvcmVhY2goJHBhdHRlcm5zWzJdIGFzICR0YWcpIHsNCiAgICAgICRjb250ZW50IC49ICIgIi4kdGFnOw0KICAgIH0NCiAgICByZXR1cm4gJGNvbnRlbnQ7DQogIH0NCg0KICBmdW5jdGlvbiBnZXRLZXl3b3JkU3VnZ2VzdGlvbnMoJGNvbnRlbnRfaWQpIHsNCiAgICBnbG9iYWwgJGdDbXM7DQogICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOw0KICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7DQoNCiAgICAkY29udGVudG9wcyA9ICRnQ21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOw0KICAgIGlmICghJGN1cmNvbnRlbnQgPSAkY29udGVudG9wcy0+TG9hZENvbnRlbnRGcm9tSWQgKCRjb250ZW50X2lkKSkgew0KICAgICAgcmV0dXJuOw0KICAgIH0NCiAgICAkZGVzY3JpcHRpb25faWQgPSBzdHJfcmVwbGFjZSgnICcsJ18nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpKTsNCg0KICAgIC8qIEdlbmVyYXRlIGtleXdvcmRzIGZyb20gcGFnZSB0aXRsZSwgZGVzY3JpcHRpb24gYW5kIGNvbnRlbnQgKi8NCiAgICAkdGl0bGVfa2V5d29yZHMgPSAkdGhpcy0+Z2V0X2tleXdvcmRzKCRjdXJjb250ZW50LT5HZXRQcm9wZXJ0eVZhbHVlKCdjb250ZW50X2VuJyksICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdrZXl3b3JkX21pbmxlbmd0aCcsJzYnKSk7DQoNCiAgICAkZGVzY3JpcHRpb25fa2V5d29yZHMgPSAkdGhpcy0+Z2V0X2tleXdvcmRzKCRjdXJjb250ZW50LT5HZXRQcm9wZXJ0eVZhbHVlKCRkZXNjcmlwdGlvbl9pZCksICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdrZXl3b3JkX21pbmxlbmd0aCcsJzYnKSk7DQoNCiAgICAkaGVhZGxpbmVfa2V5d29yZHMgPSAkdGhpcy0+Z2V0X2tleXdvcmRzKCR0aGlzLT5nZXRfaGVhZGxpbmVzKCRjdXJjb250ZW50LT5OYW1lKCkpLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5sZW5ndGgnLCc2JykpOw0KDQogICAgJGNvbnRlbnRfa2V5d29yZHMgPSAkdGhpcy0+Z2V0X2tleXdvcmRzKCRjdXJjb250ZW50LT5HZXRQcm9wZXJ0eVZhbHVlKCdjb250ZW50X2VuJyksICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdrZXl3b3JkX21pbmxlbmd0aCcsJzYnKSk7DQoNCiAgICAkb3RoZXJfa2V5d29yZHMgPSBBcnJheSgpOw0KDQogICAgZm9yZWFjaCgkdGl0bGVfa2V5d29yZHMgYXMgJGtleXdvcmQpIHsNCiAgICAgIGlmICghaXNzZXQoJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSkpIHsNCiAgICAgICAgJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSA9IDA7DQogICAgICB9DQogICAgICAkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfdGl0bGVfd2VpZ2h0JywnNicpOw0KICAgIH0NCiAgICBmb3JlYWNoKCRkZXNjcmlwdGlvbl9rZXl3b3JkcyBhcyAka2V5d29yZCkgew0KICAgICAgaWYgKCFpc3NldCgkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdKSkgew0KICAgICAgICAkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdID0gMDsNCiAgICAgIH0NCiAgICAgICRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0gKz0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0JywnNCcpOw0KICAgIH0NCiAgICBmb3JlYWNoKCRoZWFkbGluZV9rZXl3b3JkcyBhcyAka2V5d29yZCkgew0KICAgICAgaWYgKCFpc3NldCgkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdKSkgew0KICAgICAgICAkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdID0gMDsNCiAgICAgIH0NCiAgICAgICRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0gKz0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0JywnMicpOw0KICAgIH0NCiAgICBmb3JlYWNoKCRjb250ZW50X2tleXdvcmRzIGFzICRrZXl3b3JkKSB7DQogICAgICBpZiAoIWlzc2V0KCRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0pKSB7DQogICAgICAgICRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0gPSAwOw0KICAgICAgfQ0KICAgICAgJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSArPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9jb250ZW50X3dlaWdodCcsJzEnKTsNCiAgICB9DQoNCiAgICBhcnNvcnQoJG90aGVyX2tleXdvcmRzKTsNCg0KICAgICRleGNsdWRlX2xpc3QgPSBleHBsb2RlKCcgJyxzdHJ0b3VwcGVyKHV0ZjhfZGVjb2RlKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2V4Y2x1ZGUnLCcnKSkpKTsNCg0KICAgIGZvcmVhY2ggKCRvdGhlcl9rZXl3b3JkcyBhcyAka2V5PT4kdmFsdWUpIHsNCiAgICAgIGlmICgkdmFsdWUgPCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5pbXVtX3dlaWdodCcsJzcnKSkgew0KICAgICAgICB1bnNldCgkb3RoZXJfa2V5d29yZHNbJGtleV0pOw0KICAgICAgfWVsc2VpZiAoaW5fYXJyYXkoc3RydG91cHBlcigka2V5KSwkZXhjbHVkZV9saXN0KSkgew0KICAgICAgICB1bnNldCgkb3RoZXJfa2V5d29yZHNbJGtleV0pOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIHJldHVybiAkb3RoZXJfa2V5d29yZHM7DQogIH0NCg0KICBmdW5jdGlvbiBjcmVhdGVSb2JvdHNUWFQoKSB7DQogICAgZ2xvYmFsICRnQ21zOw0KICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOw0KICAgICRyb290X3VybCA9IGVtcHR5KCRfU0VSVkVSWydIVFRQUyddKSA/ICRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10gOiAkZ0Ntcy0+Y29uZmlnWydzc2xfdXJsJ107DQoNCiAgICAkZnAgPSBAZm9wZW4oJGNvbmZpZ1sncm9vdF9wYXRoJ10uJy9yb2JvdHMudHh0JywndycpOw0KDQogICAgLy8gQ3JlYXRlIHJvYm90cy50eHQNCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJywxKSA9PSAxKSB7DQogICAgICBmd3JpdGUoJGZwLCAiU2l0ZW1hcDogIi4kcm9vdF91cmwuIi9zaXRlbWFwLnhtbFxuIik7DQogICAgfQ0KICAgIEBmd3JpdGUoJGZwLCAiVXNlci1hZ2VudDogKlxuIik7DQogICAgQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kcm9vdF91cmwuIi9jb250cmliL1xuIik7DQogICAgQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kcm9vdF91cmwuIi9kb2MvXG4iKTsNCiAgICBAZndyaXRlKCRmcCwgIkRpc2FsbG93OiAiLiRyb290X3VybC4iL2xpYi9cbiIpOw0KICAgIEBmd3JpdGUoJGZwLCAiRGlzYWxsb3c6ICIuJHJvb3RfdXJsLiIvbW9kdWxlcy9cbiIpOw0KICAgIEBmd3JpdGUoJGZwLCAiRGlzYWxsb3c6ICIuJHJvb3RfdXJsLiIvcGx1Z2lucy9cbiIpOw0KICAgIEBmd3JpdGUoJGZwLCAiRGlzYWxsb3c6ICIuJHJvb3RfdXJsLiIvc2NyaXB0cy9cbiIpOw0KICAgIEBmd3JpdGUoJGZwLCAiRGlzYWxsb3c6ICIuJHJvb3RfdXJsLiIvdG1wL1xuIik7DQoNCiAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzMiBXSEVSRSBpbmRleGFibGUgPSAwIjsNCiAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoNCiAgICAkY29udGVudG9wcyA9ICRnQ21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOw0KICAgIHdoaWxlICgkcGFnZSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsNCg0KICAgICAgaWYgKCRjdXJjb250ZW50ID0gJGNvbnRlbnRvcHMtPkxvYWRDb250ZW50RnJvbUlkICgkcGFnZVsnY29udGVudF9pZCddKSkgew0KICAgICAgICAkdXJsID0gJGN1cmNvbnRlbnQtPkdldFVSTCgpOw0KICAgICAgICBAZndyaXRlKCRmcCwgIkRpc2FsbG93OiAiLiR1cmwuIlxuIik7DQogICAgICB9DQogICAgfQ0KICAgIEBmY2xvc2UoJGZwKTsNCiAgfQ0KDQogIGZ1bmN0aW9uIGNyZWF0ZVNpdGVtYXAoJHB1c2ggPSBmYWxzZSkgew0KICAgIGdsb2JhbCAkZ0NtczsNCiAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiAgICAkcm9vdF91cmwgPSBlbXB0eSgkX1NFUlZFUlsnSFRUUFMnXSkgPyAkZ0Ntcy0+Y29uZmlnWydyb290X3VybCddIDogJGdDbXMtPmNvbmZpZ1snc3NsX3VybCddOw0KICAgICRyb290X3BhdGggPSAkZ0Ntcy0+Y29uZmlnWydyb290X3BhdGgnXTsNCiAgICAkbWFwX3BhdGggPSAkcm9vdF9wYXRoLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3NpdGVtYXAueG1sJzsNCiAgICANCiAgICAkZnAgPSBmb3BlbigkbWFwX3BhdGgsJ3cnKTsNCiAgICAvLyBDcmVhdGUgc2l0ZW1hcA0KDQogICAgZndyaXRlKCRmcCwgIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+XG4iKTsNCiAgICBmd3JpdGUoJGZwLCAiPHVybHNldCB4bWxucz0naHR0cDovL3d3dy5zaXRlbWFwcy5vcmcvc2NoZW1hcy9zaXRlbWFwLzAuOSc+XG5cbiIpOw0KDQogICAgJGNvbnRlbnRvcHMgPSAkZ0Ntcy0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsNCg0KICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50IFdIRVJFIGFjdGl2ZSA9IDEgT1JERVIgQlkgaGllcmFyY2h5IEFTQyc7DQogICAgJHJlc3VsdCA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCiAgICANCiAgICBpZiAoJHJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDAgKSB7DQogICAgICB3aGlsZSAoJHBhZ2UgPSAkcmVzdWx0LT5mZXRjaFJvdygpKSB7DQogICAgICAgIA0KICAgICAgICBpZiAoJGN1cmNvbnRlbnQgPSAkY29udGVudG9wcy0+TG9hZENvbnRlbnRGcm9tSWQgKCRwYWdlWydjb250ZW50X2lkJ10pKSB7DQoNCi8vICAgICAgICAgIGlmICgkY3VyY29udGVudC0+QWN0aXZlKCkgJiYgJGN1cmNvbnRlbnQtPlNob3dJbk1lbnUoKSkgew0KICAgICAgICAgIGlmICgkY3VyY29udGVudC0+QWN0aXZlKCkpIHsNCiAgICAgICAgICAgICR1cmwgPSAkY3VyY29udGVudC0+R2V0VVJMKCk7DQogICAgICAgICAgICBpZiAoJHVybCA9PSAiIyIpIHsNCiAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCg0KLy8gICAgICAgICAgICBpZiAoc3RycG9zKCR1cmwsICRyb290X3VybCkgPT09IGZhbHNlKSB7DQovLyAgICAgICAgICAgICAgY29udGludWU7DQovLyAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChzdHJwb3Moc3Ryc3RyKCR1cmwsJzonKSwgc3Ryc3RyKCRyb290X3VybCwnOicpKSA9PT0gZmFsc2UpIHsNCiAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgICRwcmlvcml0eSA9IDgwOw0KICAgICAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgc3Vic3RyX2NvdW50KCRwYWdlWydoaWVyYXJjaHknXSwnLicpOyAkaSsrKSB7DQogICAgICAgICAgICAgICRwcmlvcml0eSAgPSAkcHJpb3JpdHkgLyAyOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRwYWdlWydkZWZhdWx0X2NvbnRlbnQnXSA9PSAxKSB7DQogICAgICAgICAgICAgICRwcmlvcml0eSA9IDEwMDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgV0hFUkUgY29udGVudF9pZCA9ICcuJHBhZ2VbJ2NvbnRlbnRfaWQnXTsNCiAgICAgICAgICAgICRyZXN1bHQyID0mICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgICAgICAgICAgJGluZm8gPSAkcmVzdWx0Mi0+ZmV0Y2hSb3coKTsNCiAgICAgICAgICAgIGlmIChpc3NldCgkaW5mb1sncHJpb3JpdHknXSkgJiYgKCRpbmZvWydwcmlvcml0eSddICE9IDApICYmICgkaW5mb1sncHJpb3JpdHknXSAhPSAiIikpIHsNCiAgICAgICAgICAgICAgJHByaW9yaXR5ID0gJGluZm9bJ3ByaW9yaXR5J107DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmICghaXNzZXQoJGluZm9bJ2luZGV4YWJsZSddKSB8fCAoJGluZm9bJ2luZGV4YWJsZSddID09ICIiKSB8fCAoJGluZm9bJ2luZGV4YWJsZSddID09IDEpKSB7DQogICAgICAgICAgICAgIGZ3cml0ZSgkZnAsICI8dXJsPlxuIik7DQogICAgICAgICAgICAgIGZ3cml0ZSgkZnAsICI8bG9jPiIuJHVybC4iPC9sb2M+XG4iKTsNCiAgICAgICAgICAgICAgZndyaXRlKCRmcCwgIjxsYXN0bW9kPiIuZGF0ZSgiWS1tLWQiLCBzdHJ0b3RpbWUoJHBhZ2VbJ21vZGlmaWVkX2RhdGUnXSkpLiI8L2xhc3Rtb2Q+XG4iKTsNCiAgICAgICAgICAgICAgZndyaXRlKCRmcCwgIjxjaGFuZ2VmcmVxPmFsd2F5czwvY2hhbmdlZnJlcT5cbiIpOw0KICAgICAgICAgICAgICBmd3JpdGUoJGZwLCAiPHByaW9yaXR5PiIubnVtYmVyX2Zvcm1hdCgkcHJpb3JpdHkgLyAxMDAsIDEpLiI8L3ByaW9yaXR5PlxuIik7DQogICAgICAgICAgICAgIGZ3cml0ZSgkZnAsICI8L3VybD5cblxuIik7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQogICAgfQ0KICAgIA0KICAgIGZ3cml0ZSgkZnAsICI8L3VybHNldD4iKTsNCiAgICBmY2xvc2UoJGZwKTsNCiAgICBpZiAoJHB1c2ggIT0gZmFsc2UgJiYgJHB1c2ggIT09MCkgew0KICAgICAgLy8gUHVzaCBzaXRlbWFwIHRvIGdvb2dsZQ0KICAgICAgaWYgKGZpbGVfZXhpc3RzKCRtYXBfcGF0aCkpIHsNCiAgICAgICAgJGdvb2dsZSA9ICJodHRwOi8vd3d3Lmdvb2dsZS5jb20vd2VibWFzdGVycy90b29scy9waW5nP3NpdGVtYXA9Ii51cmxlbmNvZGUoJG1hcF9wYXRoKTsNCiAgICAgICAgJGYgPSBAZm9wZW4oJGdvb2dsZSwiciIpOw0KICAgICAgICBpZiAoaXNfcmVzb3VyY2UoJGYpKQ0KICAgICAgICBmY2xvc2UoJGYpOw0KICAgICAgfQ0KDQogICAgfQ0KICB9DQoNCn0NCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/adminpanel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHN0eWxlIHR5cGU9J3RleHQvY3NzJz4NCntsaXRlcmFsfQ0KcC5wYWdldGV4dCB7DQogIGNsZWFyOiBib3RoOw0KfQ0KYSBpbWcgew0KICBib3JkZXItc3R5bGU6IG5vbmUgIWltcG9ydGFudDsNCn0NCnsvbGl0ZXJhbH0NCjwvc3R5bGU+DQoNCg0KeyRtZXNzYWdlfQ0KDQp7JHRhYl9oZWFkZXJzfQ0KDQp7JHN0YXJ0X3Nlb2FsZXJ0c190YWJ9DQp7JGFsZXJ0c30NCnskZW5kX3RhYn0NCg0KeyRzdGFydF9wYWdlZGVzY3JpcHRpb25zX3RhYn0NCnskcGFnZXNldHRpbmdzfQ0KeyRlbmRfdGFifQ0KDQp7JHN0YXJ0X21ldGFzZXR0aW5nc190YWJ9DQp7JG1ldGFfZm9ybX0NCnskZW5kX3RhYn0NCg0KeyRzdGFydF9zaXRlbWFwc2V0dGluZ3NfdGFifQ0KeyRzaXRlbWFwX2Zvcm19DQp7JGVuZF90YWJ9DQoNCnskc3RhcnRfa2V5d29yZHNldHRpbmdzX3RhYn0NCnska2V5d29yZF9mb3JtfQ0KeyRlbmRfdGFifQ0KDQp7JHRhYl9mb290ZXJzfQ0K]]></data>
	</file>
	<file>
	  <filename>/templates/error.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfZXJyb3J9PC9oMz4NCntpZiAkbWVzc2FnZSE9Jyd9PHA+eyRtZXNzYWdlfTwvcD57L2lmfQ==]]></data>
	</file>
</module>
