<?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>Utilities</name>
	<version>1.1.1</version>
    <mincmsversion>2.0</mincmsversion>
	<help><![CDATA[DQo8aDMgbmFtZT0iIj5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPg0KPHA+J1V0aWxpdGllcycgcHJvdmlkZXMgYSBzZXQgb2YgYWRkaXRpb25hbCBmdW5jdGlvbnMgdXNlZnVsIGFjcm9zcyBtYW55IHdlYnNpdGVzLiBQcmV2aW91c2x5IHRoZXNlIHdlcmUgUGx1Z2lucyBvciBVRFRzLjwvcD48YnI+DQo8cD5UYWdzIC8gU21hcnR5IEZ1bmN0aW9uczo8L3A+DQo8dWw+DQogICA8bGk+Y29udGVudF90eXBlPC9saT4NCiAgIDxsaT5lZGl0Q29udGVudFRhYnM8L2xpPg0KICAgPGxpPmdvb2dsZUZvbnRVcmw8L2xpPg0KICAgPGxpPmdhbGxlcnlDb3ZlcnM8L2xpPg0KICAgPGxpPnlvdVR1YmVQbGF5ZXI8L2xpPg0KICAgPGxpPmNzc01pbmlmaWVyPC9saT4NCiAgIDxsaT50d2l0dGVyRmVlZDwvbGk+DQogICA8bGk+ZmFjZWJvb2tGZWVkPC9saT4NCiAgIDxsaT5nZXRDdXN0b21HUzwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCg0KPGgyPlRhZ3MgLyBTbWFydHkgRnVuY3Rpb25zPC9oMj4NCg0KPGgzPmNvbnRlbnRfdHlwZTwvaDM+DQo8cD57Y29udGVudF90eXBlIHR5cGU9J3N0cmluZ19taW1lX3R5cGUnfTwvcD4NCjxwPlNldHMgdGhlIHJlcXVlc3QgY29udGVudCB0eXBlIHRvIGEgdmFsaWQgbWltZSB0eXBlLjwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPnR5cGUgKHJlcXVpcmVkKSAtIGEgdmFsaWQgbWltZSB0eXBlLjwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCg0KPGgzPmVkaXRDb250ZW50VGFiczwvaDM+DQo8cD57ZWRpdENvbnRlbnRUYWJzIC4uLn0gaXMgaW5jbHVkZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBhZG1pbiB0ZW1wbGF0ZSAnbW9kdWxlX2N1c3RvbVxDTVNDb250ZW50TWFuYWdlclx0ZW1wbGF0ZXNcYWRtaW5fZWRpdGNvbnRlbnQudHBsJy4gRWRpdHMgYWRtaW4gc21hcnR5IGFycmF5cyAkdGFiX25hbWVzICYgJHRhYl9jb250ZW50c19hcnJheSwgdG8gaGlkZSBzb21lIHRhYnMgYW5kIG1vdmUgc29tZSBmaWVsZHMuPC9wPg0KPHA+SWRlYWxseSB0aGlzIGZ1bmN0aW9uYWxpdHkgd291bGQgYmUgcmVwbGFjZWQgYnkgQ01TTVMgY29yZSBmdW5jdGlvbmFsaXR5IGF0IHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVyZS48L3A+DQo8cD5UbyBjaGFuZ2UgdGhlIGRpc3BsYXllZCBBZG1pbiBmaWVsZCB0aXRsZXMsIGp1c3QgdXNlIHRoZSBjb3JlIGFkbWluX2N1c3RvbSBmdW5jdGlvbmFsaXR5LiBBZGQgYSBmaWxlIGludG8gL2Fzc2V0cy9hZG1pbl9jdXN0b20vbGFuZy9lbl9VUy5waHAgKG9yIHNpbWlsYXIgLSBDPFM8UyB2Mi4yKykgdGhhdCBjaGFuZ2VzIHRoZSBsYW5ndWFnZSBzdHJpbmdzIGZyb20gL2FkbWluL2xhbmcvZW5fVVMucGhwLjwvcD48YnI+DQo8cD5UaXA6IGlmIG1vdmluZyBpbmRpdmlkdWFsIGZpZWxkcyBhZGQgb25lIGF0IGEgdGltZSB0byB0aGUgbW92ZV9maWVsZHMgcGFyYW1ldGVyIGFuZCBzZXQgZGVidWc9MSAtIG1ha2VzIGl0IGVhc2llciB0byB3b3JrIG91dCB0aGUgbmV3IHBvc2l0aW9ucyE8L3A+DQo8cD5QYXJhbWV0ZXJzOjwvcD4NCjx1bD4NCiAgIDxsaT5kZWJ1ZyAob3B0aW9uYWwpIC0gc2V0IGRlYnVnPTEgdG8gdHVybiBvbiBvdXRwdXQgb2YgQ29udGVudCBNYW5hZ2VyIHRhYnMgYW5kIGZpZWxkcywgYmVmb3JlIGFuZCBhZnRlciBlZGl0Q29udGVudFRhYnMgY2hhbmdlcy4gSnVzdCB0byBtYWtlIGl0IGVhc2llciB0byBkZWZpbmUgY2hhbmdlcy48L2xpPg0KICAgPGxpPm1vdmVfdGFiX2NvbnRlbnQgKG9wdGlvbmFsKSAtIG1vdmVzIGFsbCBjb250ZW50IGZyb20gb25lIFRhYiB0byBhbm90aGVyIFRhYi4gRm9ybWF0IGlzIG1vdmVfdGFiX2NvbnRlbnQ9ImZyb21UYWIsdG9UYWJ8ZnJvbVRhYix0b1RhYiIgZS5nLiBtb3ZlX3RhYl9jb250ZW50PSJMb2dpYyxPcHRpb25zfFBlcm1pc3Npb25zLE9wdGlvbnMiIDwvbGk+DQogICA8bGk+bW92ZV9maWVsZHMgKG9wdGlvbmFsKSAtIG1vdmVzIGEgc2luZ2xlIGZpZWxkIGZyb20gb25lIFRhYiAvIFBvc2l0aW9uIHRvIGFub3RoZXIgVGFiIC8gUG9zaXRpb24uIEZvcm1hdCBpcyBtb3ZlX2ZpZWxkcz0iZnJvbVRhYixmcm9tUG9zaXRpb24sdG9UYWIsdG9Qb3NpdGlvbnxmcm9tVGFiLGZyb21Qb3NpdGlvbix0b1RhYix0b1Bvc2l0aW9uIiBlLmcuIG1vdmVfZmllbGRzPSJOYXZpZ2F0aW9uLDAsTWFpbiwwfCdOYXZpZ2F0aW9uJywxLCdNYWluJywxIiA8L2xpPg0KICAgPGxpPnJlbmFtZV90YWIgKG9wdGlvbmFsKSAtIGp1c3QgcmVuYW1lcyBvbmUgb3IgbW9yZSB0YWJzLiBGb3JtYXQgcmVuYW1lX3RhYj0iZnJvbVRhYix0b1RhYnxmcm9tVGFiLHRvVGFiIiBlLmcuIHJlbmFtZV90YWI9Ik5hdmlnYXRpb24sTWVudSIuIFllcyAtIEkga25vdyB0aGVyZSBjYW4gYmUgYWNoaWV2ZWQgdGhyb3VnaCB0aGUgbW9kdWxlX2N1c3RvbS9sYW5nIGZpbGVzIC0gaXQganVzdCBzZWVtZWQgbW9yZSBjb25zaXN0ZW50IHRvIG1lc3Mgd2l0aCB0YWJzL2ZpZWxkcyBhbGwgaW4gdGhlIG9uZSBwbGFjZSE8L2xpPg0KPC91bD4NCjxicj4NCg0KDQoNCjxoMz5nb29nbGVGb250VXJsPC9oMz4NCjxwPntnb29nbGVGb250VXJsfSByZXR1cm5zIHRoZSBmdWxsIHVybCBmb3IgaW5jbHVkaW5nIEdvb2dsZSBGb250cywgZS5nLiBmb3IgdXNlIGluIFRpbnlNQ0UganMgZmlsZS48L3A+DQo8cD5hY3R1YWwgZm9udHMgYXJlIHNldCBieSB0aGUgQ3VzdG9tR1MgdmFyaWFibGUgJ0dvb2dsZSBGb250cycuIEVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpZiB0aGF0IGZpZWxkIGlzIGJsYW5rLjwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPmN1c3RvbWdzX2ZpZWxkIChvcHRpb25hbCkgLSBzcGVjaWZ5IGFuIGFsdGVybmF0aXZlIEN1c3RvbUdTIGZpZWxkIHRvIHVzZSAoZGVmYXVsdDogJ0dvb2dsZSBGb250cycpLjwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCg0KPGgzPmdhbGxlcnlDb3ZlcnM8L2gzPg0KPHA+c2V0cyAkZ2FsbGVyeUNvdmVycyBhcnJheSBjb250YWluaW5nIHRoZSBjb3ZlcmZpbGUgJiBjb3ZlcnBhdGggb2YgdGhlIGZ1bGwgc2l6ZSBjb3ZlciBpbWFnZXMgb2YgdGhlIGdhbGxlcmllcyBpbiAkZGlyIHBhcmFtZXRlciAocmVxdWlyZWQpPC9wPg0KPHA+dGhpcyBpcyByZXF1aXJlZCBhcyBieSBkZWZhdWx0IHRoZSBHYWxsZXJ5IG1vZHVsZSBvbmx5IHByb3ZpZGVzIGEgcHJlLXByb2Nlc3NlZCB0aHVtYm5haWwgZm9yIGFueSBkaXJlY3Rvcmllcywgbm90IGEgdXJsIHRvIHRoZSBmdWxsIGltYWdlLiBBbHNvIGRvZXNuJ3QgaGFuZGxlIGF1dG8tcm90YXRlIGNvcnJlY3RseS48L3A+DQo8cD5QYXJhbWV0ZXJzOjwvcD4NCjx1bD4NCiAgIDxsaT4gZGlyIChyZXF1aXJlZCkgLSBHYWxsZXJ5IGRpcmVjdG9yeSA8L2xpPg0KPC91bD4NCjxicj4NCg0KDQoNCjxoMz55b3VUdWJlUGxheWVyPC9oMz4NCjxwPnt5b3VUdWJlUGxheWVyIHZpZGVvaWQ9J0p1cjFGT19uWTk4J30gaW1iZWRzIGEgWW91VHViZSB2aWRlbyBwbGF5ZXIgaW4gdGhlIHBhZ2UuIFJlcXVpcmVzIEJvb3RzdHJhcCBDU1MuPC9wPg0KPHA+dXNlcyAiP3JlbD0wJm1vZGVzdGJyYW5kaW5nPTEiIHRvIGhpZGUgcmVsYXRlZCB2aWRlb3MgYXQgZW5kIGFuZCBzaG93IG1pbmltYWwgWW91VHViZSBicmFuZGluZzwvcD4NCjxwPmlmcmFtZSBpcyBub3cgYWx3YXlzIHJlc3BvbnNpdmUgLSBoZWlnaHQgJiB3aWR0aCBwYXJhbWF0ZXJzIG5vIGxvbmdlciBzdXBwb3J0ZWQgKHYxLjgpPC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+dmlkZW9pZCAgKHJlcXVpcmVkKTwvbGk+DQogICA8bGk+c3RhcnQgICAgKG9wdGlvbmFsKSAtIGJlZ2lucyBwbGF5aW5nIHRoZSB2aWRlbyBhdCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHNlY29uZHMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHZpZGVvPC9saT4NCiAgIDxsaT5jbGFzcyAgICAob3B0aW9uYWwpIC0gYWRkaXRpb25hbCBjbGFzc2VzIHRvIGJlIGFkZGVkIGludG8gdGhlIGNsYXNzIGF0dHJpYnV0ZTwvbGk+DQogICA8bGk+YXV0b3BsYXkgKG9wdGlvbmFsKSAtIHNldCB0byAxIHRvIHR1cm4gb24gYXV0b3BsYXk8L2xpPg0KICAgPGxpPmFzcGVjdCAgIChvcHRpb25hbCkgLSBzcGVjaWZ5IGFzcGVjdCByYXRpbyAnMTZieTknIChkZWZhdWx0KSBvciAnNGJ5Myc8L2xpPg0KICAgPGxpPnRodW1ibmFpbCAob3B0aW9uYWwpIC0gdXNlIGVpdGhlcjogJ3NtYWxsJywgJ21lZGl1bScsICdtYXgnLCBvciB0aGUgdXJsIG9mIGFuIGltYWdlIHRvIHVzZS48YnI+DQogICAnc21hbGwnICgzMjB4MTgwcHgpLCAnbWVkaXVtJyAoNDgweDM2MHB4KSBhbmQgJ21heCcgKDE5MjB4MTA4MHB4KSBhcmUgYWxsIFlvdVR1YmUgZ2VuZXJhdGVkIHRodW1ibmFpbHMuDQo8L3VsPg0KPHA+Tm90ZTogaWYgeW91IHdpc2ggdG8gbW9kaWZ5IHRoZSB0ZW1wbGF0ZSBjb3B5IC9VdGlsaXRpZXMvdGVtcGxhdGVzL3lvdVR1YmVQbGF5ZXJfdGVtcGxhdGUudHBsIGludG8gYXNzZXRzL21vZHVsZV9jdXN0b20vVXRpbGl0aWVzL3RlbXBsYXRlcy95b3VUdWJlUGxheWVyX3RlbXBsYXRlLnRwbCBhbmQgbW9kaWZ5IHRoYXQgdmVyc2lvbi4gKE5vdCBjaGFuZ2VkIGJ5IG1vZHVsZSB1cGdyYWRlcykuPC9wPg0KPGJyPg0KDQoNCg0KPGgzPmNzc01pbmlmaWVyPC9oMz4NCjxwPlRoaXMgQ01TTVMgY3NzTWluaWZpZXIgcGx1Z2luIGxldHMgYSB1c2VyIGNvbnZlcnQgdGhlIGRlZmF1bHQge2Ntc19zdHlsZXNoZWV0fSBpbnRvIGEgbWluaWZpZWQgY3NzIGZpbGUuPC9wPg0KPHA+VGhpcyBmdW5jdGlvbiB0YWtlcyBjc3MgYW5kIGNvbXByZXNzZXMgaXQsIHJlbW92aW5nIHVubmVjY2Vzc2FyeSB3aGl0ZXNwYWNlLCBjb2xvbnMsIHJlbW92aW5nIHVubmVjY2Vzc2FyeSBweC9lbSBkZWNsYXJhdGlvbnMgZXRjLjwvcD4NCjxwPlJlcGxhY2UgdGhlIGRlZmF1bHQge2Ntc19zdHlsZXNoZWV0fSB0YWcgd2l0aDo8YnI+DQogICA8Y29kZT57Y3NzTWluaWZpZXIgY3NzPSJ7Y21zX3N0eWxlc2hlZXQgbm9saW5rcz10cnVlfSJ9PC9jb2RlPjwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPihyZXF1aXJlZCkgY3NzIChzdHJpbmcpIC0gY3NzIGZpbGVuYW1lIDwvbGk+DQogICA8bGk+KG9wdGlvbmFsKSBub21pbmlmeSAoc3RyaW5nKSAtIGlmIHNldCB0aGUgdW5taW5pZmllZCBjc3MgaXMgb3V0cHV0IChmb3IgZGVidWdnaW5nKTwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCg0KPGgzPnR3aXR0ZXJGZWVkPC9oMz4NCjxwPm91dHB1dHMgYSBUd2l0dGVyIEZlZWQgKHNlZTogaHR0cHM6Ly9kZXYudHdpdHRlci5jb20vd2ViL2VtYmVkZGVkLXRpbWVsaW5lcyBmb3IgZGV0YWlscykuPC9wPg0KPHA+QWRkIHRoZSB0YWcge3R3aXR0ZXJGZWVkfSBpbnRvIGEgV2lkZ2V0IG9yIEZvb3RlciwgZXRjLiBVc2VzIEN1c3RvbUdTLlR3aXR0ZXIgYXMgZGVmYXVsdCBzY3JlZW5fbmFtZSBvciB0aGUgcHJvdmlkZWQgcGFyYW1ldGVyczwvcD4NCjxwPnRlc3Qgd2l0aDoge3R3aXR0ZXJGZWVkIHNjcmVlbl9uYW1lPSdObzFGYXJtZXJKYWtlJyB3aWR0aD01MDAgaGVpZ2h0PTUwMCB0aGVtZT1kYXJrIGxpbmtfY29sb3I9JyNBQUFBNTInIGJvcmRlcl9jb2xvcj1yZWQgY2hyb21lX29wdGlvbnM9J25vaGVhZGVyIG5vZm9vdGVyIG5vYm9yZGVycyBub3Njcm9sbGJhcid9PC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+KG9wdGlvbmFsKSBzY3JlZW5fbmFtZSAoc3RyaW5nKSAtIHVzZXMgQ3VzdG9tR1MuVHdpdHRlciBhcyBkZWZhdWx0LCBvciBlLmcuICdObzFGYXJtZXJKYWtlJzwvbGk+DQogICA8bGk+KG9wdGlvbmFsKSB3aWR0aCAoaW50KSAtIGxlYXZlIGVtcHR5IGZvciByZXNwb25zaXZlPC9saT4NCiAgIDxsaT4ob3B0aW9uYWwpIGhlaWdodCAoaW50KSAtIGRlZmF1bHQgaXMgMzAwPC9saT4NCiAgIDxsaT4ob3B0aW9uYWwpIHRoZW1lIChzdHJpbmcpIC0gJ2xpZ2h0JyAoZGVmYXVsdCkgb3IgJ2Rhcms8L2xpPg0KICAgPGxpPihvcHRpb25hbCkgbGlua19jb2xvciAoc3RyaW5nKSAtIGUuZy4gJyNBQUFBNTInIDwvbGk+DQogICA8bGk+KG9wdGlvbmFsKSBib3JkZXJfY29sb3IgKHN0cmluZykgLSBvcHRpb25hbCBvciBzZXQgaW4gQ1NTPC9saT4NCiAgIDxsaT4ob3B0aW9uYWwpIGNocm9tZV9vcHRpb25zIChzdHJpbmcpIC0gMSBvciBtb3JlIG9mIChzcGFjZSBzZXBhcmF0ZWQpOg0KICAgICAgICAgICAgICAgICAgICAgICAgJ25vaGVhZGVyIG5vZm9vdGVyIG5vYm9yZGVycyBub3Njcm9sbGJhciB0cmFuc3BhcmVudCc8L2xpPg0KPC91bD4NCjxwPk5vdGU6IGlmIHlvdSB3aXNoIHRvIG1vZGlmeSB0aGUgdGVtcGxhdGUgY29weSAvVXRpbGl0aWVzL3RlbXBsYXRlcy90d2l0dGVyRmVlZF90ZW1wbGF0ZS50cGwgaW50byBhc3NldHMvbW9kdWxlX2N1c3RvbS9VdGlsaXRpZXMvdGVtcGxhdGVzL3R3aXR0ZXJGZWVkX3RlbXBsYXRlLnRwbCBhbmQgbW9kaWZ5IHRoYXQgdmVyc2lvbi4gKE5vdCBjaGFuZ2VkIGJ5IG1vZHVsZSB1cGdyYWRlcykuPC9wPg0KPGJyPg0KDQoNCg0KPGgzPmZhY2Vib29rRmVlZDwvaDM+DQo8cD5vdXRwdXRzIGEgRmFjZWJvb2sgUGFnZSBGZWVkIChzZWU6IGh0dHBzOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vZG9jcy9wbHVnaW5zL3BhZ2UtcGx1Z2luLyBmb3IgZGV0YWlscykuPC9wPg0KPHA+QWRkIHRoZSB0YWcge2ZhY2Vib29rRmVlZH0gaW50byBhIFdpZGdldCBvciBGb290ZXIsIGV0Yy4gVXNlcyBDdXN0b21HUy5GYWNlYm9vayBhcyBkZWZhdWx0IHBhZ2VJZCBvciB0aGUgcHJvdmlkZWQgcGFyYW1ldGVyczwvcD4NCjxwPnRlc3Qgd2l0aDoge2ZhY2Vib29rRmVlZCBwYWdlSWQ9J05vMUZhcm1lckpha2UnIHdpZHRoPTUwMCBoZWlnaHQ9NTAwIHRoZW1lPWRhcmsgbGlua19jb2xvcj0nI0FBQUE1MicgYm9yZGVyX2NvbG9yPXJlZCBjaHJvbWVfb3B0aW9ucz0nbm9oZWFkZXIgbm9mb290ZXIgbm9ib3JkZXJzIG5vc2Nyb2xsYmFyJ308L3A+DQo8cD5QYXJhbWV0ZXJzOjwvcD4NCjx1bD4NCiAgIDxsaT53aWR0aCAob3B0aW9uYWwpIC0gVGhlIHBpeGVsIHdpZHRoIG9mIHRoZSBwbHVnaW4uIE1pbi4gaXMgMTgwIGFuZCBNYXguIGlzIDUwMDwvbGk+DQogICA8bGk+aGVpZ2h0IChvcHRpb25hbCkgLSBUaGUgcGl4ZWwgaGVpZ2h0IG9mIHRoZSBwbHVnaW4uIE1pbi4gaXMgNzA8L2xpPg0KICAgPGxpPmhpZGVDb3ZlciAob3B0aW9uYWwpIC0gSGlkZSBjb3ZlciBwaG90byBpbiB0aGUgaGVhZGVyPC9saT4NCiAgIDxsaT5zaG93RmFjZXBpbGUgKG9wdGlvbmFsKSAtIFNob3cgcHJvZmlsZSBwaG90b3Mgd2hlbiBmcmllbmRzIGxpa2UgdGhpczwvbGk+DQogICA8bGk+c2hvd1Bvc3RzIChvcHRpb25hbCkgLSBTaG93IHBvc3RzIGZyb20gdGhlIFBhZ2UncyB0aW1lbGluZTwvbGk+DQogICA8bGk+aGlkZUN0YSAob3B0aW9uYWwpIC0gSGlkZSB0aGUgY3VzdG9tIGNhbGwgdG8gYWN0aW9uIGJ1dHRvbiAoaWYgYXZhaWxhYmxlKTwvbGk+DQogICA8bGk+c21hbGxIZWFkZXIgKG9wdGlvbmFsKSAtIFVzZSB0aGUgc21hbGwgaGVhZGVyIGluc3RlYWQ8L2xpPg0KICAgPGxpPmFkYXB0Q29udGFpbmVyV2lkdGggKG9wdGlvbmFsKSAtIFRyeSB0byBmaXQgaW5zaWRlIHRoZSBjb250YWluZXIgd2lkdGggLSBzZW1pLXJlc3BvbnNpdmU8L2xpPg0KPC91bD4NCjxwPk5vdGU6IGlmIHlvdSB3aXNoIHRvIG1vZGlmeSB0aGUgdGVtcGxhdGUgY29weSAvVXRpbGl0aWVzL3RlbXBsYXRlcy9mYWNlYm9va0ZlZWRfdGVtcGxhdGUudHBsIGludG8gYXNzZXRzL21vZHVsZV9jdXN0b20vVXRpbGl0aWVzL3RlbXBsYXRlcy9mYWNlYm9va0ZlZWRfdGVtcGxhdGUudHBsIGFuZCBtb2RpZnkgdGhhdCB2ZXJzaW9uLiAoTm90IGNoYW5nZWQgYnkgbW9kdWxlIHVwZ3JhZGVzKS48L3A+DQo8YnI+DQoNCg0KDQo8aDM+Z2V0Q3VzdG9tR1M8L2gzPg0KPHA+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIEN1c3RvbUdTIHNldHRpbmcuICBXaWxsIHdvcmsgaW4gYWRtaW4gcGFnZSB3aGVuIEN1c3RvbUdTIGhhc24ndCBiZWVuIHNldCwgZS5nLiBmb3Igc2V0dGluZyB0aGUgV2lkZ2V0IHN0eWxlcyB0aGUgc2FtZSBhcyBTZWN0aW9uIHN0eWxlcy48L3A+DQo8cD5Vc2FnZSAtICBhZGQgdGhlIHRhZzoge2dldEN1c3RvbUdTIGN1c3RvbWdzX2ZpZWxkPSdzZXR0aW5nIG5hbWUnfTwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPmN1c3RvbWdzX2ZpZWxkIChyZXF1aXJlZCkgLSBUaGUgbmFtZSAod2l0aCBzcGFjZXMpIG9mIHRoZSBDdXN0b21HUyBmaWVsZCB0byByZXR1cm4gdGhlIHZhbHVlIG9mLjwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCg0KDQoNCg0KDQoNCjxoMz5TdXBwb3J0PC9oMz4NCjxwPkFzIHBlciB0aGUgR1BMIGxpY2VuY2UsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMgaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLg0KVGhlIG1vZHVsZSBhdXRob3IgaXMgbm90IG9ibGlnYXRlZCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoaXMgY29kZS4gSG93ZXZlciB5b3UgbWlnaHQgZ2V0IHN1cHBvcnQgdGhyb3VnaCB0aGUgZm9sbG93aW5nOjwvcD4NCjx1bD4NCiAgIDxsaT5Gb3Igc3VwcG9ydCwgZmlyc3QgPHN0cm9uZz5zZWFyY2g8L3N0cm9uZz4gdGhlIDxhIGhyZWY9Ii8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bTwvYT4sIGZvciBpc3N1ZXMgd2l0aCB0aGUgbW9kdWxlIHNpbWlsYXIgdG8gdGhvc2UgeW91IGFyZSBmaW5kaW5nLjwvbGk+DQogICA8bGk+VGhlbiwgaWYgbmVjZXNzYXJ5LCBvcGVuIGEgPHN0cm9uZz5uZXcgZm9ydW0gdG9waWM8L3N0cm9uZz4gdG8gcmVxdWVzdCBoZWxwLCB3aXRoIGEgdGhvcm91Z2ggZGVzY3JpcHRpb24gb2YgeW91ciBpc3N1ZSwgYW5kIHN0ZXBzIHRvIHJlcHJvZHVjZSBpdC48L2xpPg0KICAgPGxpPklmIHlvdSBmaW5kIGEgYnVnIHlvdSBjYW4gPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9idWcvbGlzdC8xNDIxIj5zdWJtaXQgYSBCdWcgUmVwb3J0PC9hPi48L2xpPg0KICAgPGxpPkZvciBhbnkgZ29vZCBpZGVhcyB5b3UgY2FuIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvZmVhdHVyZV9yZXF1ZXN0L2xpc3QvMTQyMSI+c3VibWl0IGEgRmVhdHVyZSBSZXF1ZXN0PC9hPi48L2xpPg0KICAgPGxpPklmIHlvdSBmb3VuZCB0aGUgTW9kdWxlIHVzZWZ1bCAtIHNob3V0IG91dCB0byBtZSBvbiBUd2l0dGVyIDxhIGhyZWY9Ii8vdHdpdHRlci5jb20vS2l3aUNocmlzQlQiPkBLaXdpQ2hyaXNCVDwvYT48L2xpPg0KPC91bD48YnI+DQoNCg0KPGgzPkNvcHlyaWdodCAmYW1wOyBMaWNlbmNlPC9oMz4NCjxwPkNvcHlyaWdodCDCqSAyMDE5LCBDaHJpcyBUYXlsb3IgPGNocmlzIGF0IGJpbm5vdmF0aXZlIGRvdCBjbyBkb3QgdWs+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+PGJyPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIEdOVSBQdWJsaWMgTGljZW5zZSB2My4gSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuIFlvdSBtYXkgb25seSB1c2UgdGhpcyBzb2Z0d2FyZSB3aGVuIHRoZXJlIGlzIGEgY2xlYXIgYW5kIG9idmlvdXMgaW5kaWNhdGlvbiBpbiB0aGUgYWRtaW4gc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIFNpbXBsZSE8L3A+PGJyPg0KPGJyPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBDaHJpcyBUYXlsb3IgJmx0O2NocmlzQGJpbm5vdmF0aXZlLmNvLnVrJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMS4xPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+DQo8aDM+VmVyc2lvbiAxLjEuMSAtIDE3SnVuMTk8L2gzPg0KPHVsPg0KICAgPGxpPm1pbm9yIGJ1ZyBmaXggaW4gaGVscDwvbGk+DQo8L3VsPg0KPGJyPg0KDQo8aDM+VmVyc2lvbiAxLjEgLSAxNE1hcjE5PC9oMz4NCjx1bD4NCiAgIDxsaT5hZGRlZCBub21pbmlmeSBwYXJhbWV0ZXI8L2xpPg0KICAgPGxpPkV4dHJhIGhlbHAgbm90ZXMgZm9yIGVkaXRDb250ZW50VGFiczwvbGk+DQo8L3VsPg0KPGJyPg0KDQo8aDM+VmVyc2lvbiAxLjAgLSAxNkZlYjE5PC9oMz4NCjx1bD4NCiAgIDxsaT5maXJzdCBwdWJsaWMgcmVsZWFzZTwvbGk+DQo8L3VsPg0KPGJyPg0KPGJyIC8+]]></about>
	<description><![CDATA[Provides a set of additional functions useful across many websites.]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiAoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgZXhpdDsNCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiAoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgZXhpdDsNCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/function.cssMinifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCmZ1bmN0aW9uIGNzc01pbmlmaWVyKCRwYXJhbXMsICYkc21hcnR5KSB7DQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLyBiYXNlZCBvbiBQbHVnaW4gY3NzTWluaWZpZXIgdjEuMCwgYnkgTWFnYWwgSGV6aSBAYXV0aG9yIFN0ZWZmZW4gQmVja2VyDQovLw0KLy8gQ3JlZGl0cyBmb3Igc29tZSBvZiB0aGlzIGNvZGUgZ28gdG86DQovLyAgICAtIE1hZ2FsIEhlemkgQGF1dGhvciBTdGVmZmVuIEJlY2tlciAtIGNzc01pbmlmaWVyIHBsdWdpbg0KLy8gICAgLSBDaHJpc3RpYW4gU2NoYWVmZXI6IHR3aXR0ZXIuY29tL2RlclNjaGVwcCwgZ2l0aHViLmNvbS9TY2hlcHAvQ1NTLUpTLUJvb3N0ZXINCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoNCiAgICRkYXRhX2ZpZWxkID0gaXNzZXQoJHBhcmFtc1snY3NzJ10pID8gJHBhcmFtc1snY3NzJ10gOiAnJzsNCiAgICRjc3NGaWxlcyA9IGV4cGxvZGUoIiwiLCAkZGF0YV9maWVsZCk7DQogICAkY3NzQ29udGVudHMgPSAnJzsNCiAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCg0KICAgZm9yZWFjaCgkY3NzRmlsZXMgYXMgJGZpbGUpIHsNCiAgICAgICRmaWxlbmFtZSA9IGJhc2VuYW1lKCRmaWxlKTsNCg0KICAgICAgaWYgKCBpc3NldCgkcGFyYW1zWydub21pbmlmeSddKSApIHsNCiAgICAgICAgIGVjaG8gJzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IicuJGNvbmZpZ1sncm9vdF91cmwnXS4nL3RtcC9jYWNoZS8nLiRmaWxlbmFtZS4nIiAvPic7DQoNCiAgICAgIH0gZWxzZSB7IC8vIG1pbmlmeQ0KICAgICAgICAgJGNzc0NvbnRlbnRzID0gZmlsZV9nZXRfY29udGVudHMoJGNvbmZpZ1sncm9vdF9wYXRoJ10uJy90bXAvY2FjaGUvJy4kZmlsZW5hbWUpOw0KICAgICAgICAgJG1pbkZpbGVQYXRoID0gJGNvbmZpZ1sncm9vdF9wYXRoJ10uJy90bXAvY2FjaGUvJzsNCiAgICAgICAgICRtaW5GaWxlTmFtZSA9ICdtaW5pZmllZF8nLiRmaWxlbmFtZTsNCiAgICAgICAgICRtaW5GaWxlRnVsbFBhdGggPSAkbWluRmlsZVBhdGguJG1pbkZpbGVOYW1lOw0KDQogICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRtaW5GaWxlRnVsbFBhdGgpKSB7DQogICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkbWluRmlsZUZ1bGxQYXRoLCBtaW5pZnlDc3MoJGNzc0NvbnRlbnRzKSk7DQogICAgICAgICB9DQogICAgICAgICBlY2hvICc8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy90bXAvY2FjaGUvJy4kbWluRmlsZU5hbWUuJyIgLz4nOw0KICAgICAgfQ0KICAgfQ0KfQ0KDQoNCg0KZnVuY3Rpb24gbWluaWZ5Q3NzKCRjc3MpIHsNCiAgIC8vIHNvbWUgb2YgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgdG8gbWluaW1pemUgdGhlIGNzcy1vdXRwdXQgYXJlIGRpcmVjdGx5IHRha2VuDQogICAvLyBmcm9tIHRoZSBhd2Vzb21lIENTUyBKUyBCb29zdGVyOiBodHRwczovL2dpdGh1Yi5jb20vU2NoZXBwL0NTUy1KUy1Cb29zdGVyDQogICAvLyBhbGwgY3JlZGl0cyB0byBDaHJpc3RpYW4gU2NoYWVmZXI6IGh0dHA6Ly90d2l0dGVyLmNvbS9kZXJTY2hlcHANCg0KICAgLy8gcmVtb3ZlIGNvbW1lbnRzDQogICAkY3NzID0gcHJlZ19yZXBsYWNlKCchL1wqW14qXSpcKisoW14vXVteKl0qXCorKSovIScsICcnLCAkY3NzKTsNCg0KICAgLy8gYmFja3VwIHZhbHVlcyB3aXRoaW4gc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMNCiAgIHByZWdfbWF0Y2hfYWxsKCcvKFwnW15cJ10qP1wnfCJbXiJdKj8iKS9pbXMnLCAkY3NzLCAkaGl0LCBQUkVHX1BBVFRFUk5fT1JERVIpOw0KICAgZm9yICgkaT0wOyAkaSA8IGNvdW50KCRoaXRbMV0pOyAkaSsrKSB7DQogICAgICAkY3NzID0gc3RyX3JlcGxhY2UoJGhpdFsxXVskaV0sICcjIyMjIyMjIyMjJyAuICRpIC4gJyMjIyMjIyMjIyMnLCAkY3NzKTsNCiAgIH0NCg0KICAgLy8gcmVtb3ZlIHRyYWxpbmcgc2VtaWNvbG9uIG9mIHNlbGVjdG9yJ3MgbGFzdCBwcm9wZXJ0eQ0KICAgJGNzcyA9IHByZWdfcmVwbGFjZSgnLztbXHNcclxuXHRdKj99W1xzXHJcblx0XSovaW1zJywgIn1cclxuIiwgJGNzcyk7DQogICAvLyByZW1vdmUgYW55IHdoaXRlc3BhY2UgYmV0d2VlbiBzZW1pY29sb24gYW5kIHByb3BlcnR5LW5hbWUNCiAgICRjc3MgPSBwcmVnX3JlcGxhY2UoJy87W1xzXHJcblx0XSo/KFtcclxuXT9bXlxzXHJcblx0XSkvaW1zJywgJzskMScsICRjc3MpOw0KICAgLy8gcmVtb3ZlIGFueSB3aGl0ZXNwYWNlIHN1cnJvdW5kaW5nIHByb3BlcnR5LWNvbG9uDQogICAkY3NzID0gcHJlZ19yZXBsYWNlKCcvW1xzXHJcblx0XSo6W1xzXHJcblx0XSo/KFteXHNcclxuXHRdKS9pbXMnLCAnOiQxJywgJGNzcyk7DQogICAvLyByZW1vdmUgYW55IHdoaXRlc3BhY2Ugc3Vycm91bmRpbmcgc2VsZWN0b3ItY29tbWENCiAgICRjc3MgPSBwcmVnX3JlcGxhY2UoJy9bXHNcclxuXHRdKixbXHNcclxuXHRdKj8oW15cc1xyXG5cdF0pL2ltcycsICcsJDEnLCAkY3NzKTsNCiAgIC8vIHJlbW92ZSBhbnkgd2hpdGVzcGFjZSBzdXJyb3VuZGluZyBvcGVuaW5nIHBhcmVudGhlc2lzDQogICAkY3NzID0gcHJlZ19yZXBsYWNlKCcvW1xzXHJcblx0XSp7W1xzXHJcblx0XSo/KFteXHNcclxuXHRdKS9pbXMnLCAneyQxJywgJGNzcyk7DQogICAvLyByZW1vdmUgYW55IHdoaXRlc3BhY2UgYmV0d2VlbiBudW1iZXJzIGFuZCB1bml0cw0KICAgJGNzcyA9IHByZWdfcmVwbGFjZSgnLyhbXGRcLl0rKVtcc1xyXG5cdF0rKHB4fGVtfHB0fCUpL2ltcycsICckMSQyJywgJGNzcyk7DQogICAvLyBzaG9ydGVuIHplcm8tdmFsdWVzDQogICAkY3NzID0gcHJlZ19yZXBsYWNlKCcvKFteXGRcLl0wKShweHxlbXxwdHwlKS9pbXMnLCAnJDEnLCAkY3NzKTsNCiAgIC8vIGNvbnN0cmFpbiBtdWx0aXBsZSB3aGl0ZXNwYWNlcw0KICAgJGNzcyA9IHByZWdfcmVwbGFjZSgnL1xwe1pzfSsvaW1zJywnICcsICRjc3MpOw0KICAgLy8gcmVtb3ZlIG5ld2xpbmVzDQogICAkY3NzID0gc3RyX3JlcGxhY2UoYXJyYXkoIlxyXG4iLCAiXHIiLCAiXG4iKSwgJycsICRjc3MpOw0KDQogICAvLyBSZXN0b3JlIGJhY2t1cHBlZCB2YWx1ZXMgd2l0aGluIHNpbmdsZSBvciBkb3VibGUgcXVvdGVzDQogICBmb3IgKCRpPTA7ICRpIDwgY291bnQoJGhpdFsxXSk7ICRpKyspIHsNCiAgICAgICRjc3MgPSBzdHJfcmVwbGFjZSgnIyMjIyMjIyMjIycgLiAkaSAuICcjIyMjIyMjIyMjJywgJGhpdFsxXVskaV0sICRjc3MpOw0KICAgfQ0KDQogICByZXR1cm4gJGNzczsNCn0NCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/function.editContentTabs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCmZ1bmN0aW9uIGVkaXRDb250ZW50VGFicygkcGFyYW1zLCYkc21hcnR5KSB7DQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLyBlZGl0cyBhZG1pbiBzbWFydHkgYXJyYXlzICR0YWJfbmFtZXMgJiAkdGFiX2NvbnRlbnRzX2FycmF5LCB0byBoaWRlIHNvbWUgdGFicyBhbmQNCi8vIG1vdmUgc29tZSBmaWVsZHMgdG8gb3RoZXIgdGFicw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgJHRhYl9uYW1lcyA9ICRzbWFydHktPmdldF90ZW1wbGF0ZV92YXJzKCd0YWJfbmFtZXMnKTsNCiAgICR0YWJfY29udGVudHNfYXJyYXkgPSAkc21hcnR5LT5nZXRfdGVtcGxhdGVfdmFycygndGFiX2NvbnRlbnRzX2FycmF5Jyk7DQogICAkdGFiX2xvb2t1cCA9IGFycmF5X2ZsaXAoJHRhYl9uYW1lcyk7DQoNCiAgIGlmICggaXNzZXQoJHBhcmFtc1snZGVidWcnXSkgKSB7DQogICAgICBlY2hvICI8cHJlPmVkaXRDb250ZW50VGFicyAtIGRlYnVnIE9OIC0gYmVmb3JlIGNoYW5nZXMgXG5cbiI7DQogICAgICBlY2hvICJUYWJzICYgQ29udGVudCBhcmU6XG4iOw0KICAgICAgZm9yZWFjaCAoJHRhYl9jb250ZW50c19hcnJheSBhcyAkdGFia2V5ID0+ICR0YWIpIHsNCiAgICAgICAgIGVjaG8gIlRhYjogJyIuJHRhYl9uYW1lc1skdGFia2V5XS4iJ1xuIjsNCiAgICAgICAgIGZvcmVhY2ggKCR0YWIgYXMgJGNvbnRlbnRwb3MgPT4gJGNvbnRlbnQpIHsNCiAgICAgICAgICAgIGVjaG8gIiAgICBbJGNvbnRlbnRwb3NdICciLiRjb250ZW50WzBdLiInXG4iOw0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgZWNobyAiPC9wcmU+IjsNCiAgIH0NCg0KICAgLy8gbW92ZV90YWJfY29udGVudCAtIG1vdmVzIGFsbCBjb250ZW50IGZyb206IFRhYiB0bzogVGFiDQogICBpZiAoICFlbXB0eSgkcGFyYW1zWydtb3ZlX3RhYl9jb250ZW50J10pICkgew0KICAgICAgJG1vdmVUYWJzID0gZXhwbG9kZSgnfCcsICRwYXJhbXNbJ21vdmVfdGFiX2NvbnRlbnQnXSk7DQogICAgICBmb3JlYWNoICgkbW92ZVRhYnMgYXMgJG1vdmVUYWIpIHsNCiAgICAgICAgICR0bXAgPSBleHBsb2RlKCcsJywgdHJpbSgkbW92ZVRhYikgKTsNCiAgICAgICAgIGlmICggY291bnQoJHRtcCk9PTIgKSB7DQogICAgICAgICAgICAkZnJvbVRhYiA9ICR0YWJfbG9va3VwW3RyaW0odHJpbSgkdG1wWzBdLCAnIicpLCAiJyIpXTsNCiAgICAgICAgICAgICR0b1RhYiA9ICR0YWJfbG9va3VwW3RyaW0odHJpbSgkdG1wWzFdLCAnIicpLCAiJyIpXTsNCiAgICAgICAgICAgICR0YWJfY29udGVudHNfYXJyYXlbJHRvVGFiXSA9IGFycmF5X21lcmdlICggJHRhYl9jb250ZW50c19hcnJheVskdG9UYWJdLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGFiX2NvbnRlbnRzX2FycmF5WyRmcm9tVGFiXSApOw0KICAgICAgICAgICAgdW5zZXQoJHRhYl9uYW1lc1skZnJvbVRhYl0pOw0KICAgICAgICAgICAgdW5zZXQoJHRhYl9jb250ZW50c19hcnJheVskZnJvbVRhYl0pOw0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgfQ0KDQoNCiAgIC8vIG1vdmVfZmllbGRzIC0gZnJvbTogVGFiIC8gUG9zaXRpb24gdG86IFRhYiAvIFBvc2l0aW9uDQogICBpZiAoICFlbXB0eSgkcGFyYW1zWydtb3ZlX2ZpZWxkcyddKSApIHsNCiAgICAgICRtb3ZlcyA9IGV4cGxvZGUoJ3wnLCAkcGFyYW1zWydtb3ZlX2ZpZWxkcyddKTsNCiAgICAgIGZvcmVhY2ggKCRtb3ZlcyBhcyAkbW92ZSkgew0KICAgICAgICAgJHRtcCA9IGV4cGxvZGUoJywnLCB0cmltKCRtb3ZlKSApOw0KICAgICAgICAgaWYgKCBjb3VudCgkdG1wKT09NCApIHsNCiAgICAgICAgICAgICRmcm9tVGFiID0gJHRhYl9sb29rdXBbdHJpbSh0cmltKCR0bXBbMF0sICciJyksICInIildOw0KICAgICAgICAgICAgJGZyb21Qb3MgPSB0cmltKHRyaW0oJHRtcFsxXSwgJyInKSwgIiciKTsNCiAgICAgICAgICAgICR0b1RhYiA9ICR0YWJfbG9va3VwW3RyaW0odHJpbSgkdG1wWzJdLCAnIicpLCAiJyIpXTsNCiAgICAgICAgICAgICR0b1BvcyA9IHRyaW0odHJpbSgkdG1wWzNdLCAnIicpLCAiJyIpOw0KICAgICAgICAgICAgLy8gbm93IG1vdmUgJiByZW1vdmUNCiAgICAgICAgICAgIGFycmF5X3NwbGljZSggJHRhYl9jb250ZW50c19hcnJheVskdG9UYWJdLCAkdG9Qb3MsIDAsDQogICAgICAgICAgICAgICBhcnJheSgkdGFiX2NvbnRlbnRzX2FycmF5WyRmcm9tVGFiXVskZnJvbVBvc10pICk7DQogICAgICAgICAgICB1bnNldCggJHRhYl9jb250ZW50c19hcnJheVskZnJvbVRhYl1bJGZyb21Qb3NdICk7DQogICAgICAgICB9DQogICAgICB9DQogICB9DQoNCg0KICAgLy8gcmVuYW1lX3RhYg0KICAgaWYgKCAhZW1wdHkoJHBhcmFtc1sncmVuYW1lX3RhYiddKSApIHsNCiAgICAgICRyZW5hbWVUYWJzID0gZXhwbG9kZSgnfCcsICRwYXJhbXNbJ3JlbmFtZV90YWInXSk7DQogICAgICBmb3JlYWNoICgkcmVuYW1lVGFicyBhcyAkcmVuYW1lVGFiKSB7DQogICAgICAgICAkdG1wID0gZXhwbG9kZSgnLCcsIHRyaW0oJHJlbmFtZVRhYikgKTsNCiAgICAgICAgIGlmICggY291bnQoJHRtcCk9PTIgKSB7DQogICAgICAgICAgICAkZnJvbVRhYiA9ICR0YWJfbG9va3VwW3RyaW0odHJpbSgkdG1wWzBdLCAnIicpLCAiJyIpXTsNCiAgICAgICAgICAgICR0b1RhYiA9IHRyaW0odHJpbSgkdG1wWzFdLCAnIicpLCAiJyIpOw0KICAgICAgICAgICAgJHRhYl9uYW1lc1skZnJvbVRhYl0gPSAkdG9UYWI7DQogICAgICAgICB9DQogICAgICB9DQogICB9DQoNCg0KICAgLy8gaGlkZSB0YWJzIC0gYXV0b21hdGljYWxseSByZW1vdmUgYW55IGVtcHR5IHRhYnMNCiAgIGZvcmVhY2ggKCR0YWJfY29udGVudHNfYXJyYXkgYXMgJHRhYmtleSA9PiAkdGFiKSB7DQogICAgICBpZiAoIGVtcHR5KCR0YWIpICkgew0KICAgICAgICAgdW5zZXQoJHRhYl9uYW1lc1skdGFia2V5XSk7DQogICAgICAgICB1bnNldCgkdGFiX2NvbnRlbnRzX2FycmF5WyR0YWJrZXldKTsNCiAgICAgIH0NCiAgIH0NCg0KDQogICAvLyBzZXQgc21hcnR5IHZhcnMNCiAgICRzbWFydHktPmFzc2lnbigndGFiX25hbWVzJywgJHRhYl9uYW1lcyk7DQogICAkc21hcnR5LT5hc3NpZ24oJ3RhYl9jb250ZW50c19hcnJheScsICR0YWJfY29udGVudHNfYXJyYXkpOw0KDQoNCiAgIGlmICggaXNzZXQoJHBhcmFtc1snZGVidWcnXSkgKSB7DQogICAgICBlY2hvICI8cHJlPmVkaXRDb250ZW50VGFicyAtIGRlYnVnIE9OIC0gYWZ0ZXIgY2hhbmdlc1xuXG4iOw0KICAgICAgZWNobyAiVGFicyAmIENvbnRlbnQgYXJlOlxuIjsNCiAgICAgIGZvcmVhY2ggKCR0YWJfY29udGVudHNfYXJyYXkgYXMgJHRhYmtleSA9PiAkdGFiKSB7DQogICAgICAgICBlY2hvICJUYWI6ICciLiR0YWJfbmFtZXNbJHRhYmtleV0uIidcbiI7DQogICAgICAgICBmb3JlYWNoICgkdGFiIGFzICRjb250ZW50cG9zID0+ICRjb250ZW50KSB7DQogICAgICAgICAgICBlY2hvICIgICAgWyIuJGNvbnRlbnRwb3MuIl0gJyI7DQogICAgICAgICAgICAgICBwcmludF9yKCRjb250ZW50WzBdKTsNCiAgICAgICAgICAgIGVjaG8gIidcbiI7DQogICAgICAgICB9DQogICAgICB9DQogICAgICBlY2hvICI8L3ByZT4iOw0KICAgfQ0KfQ0KDQoNCg==]]></data>
	</file>
	<file>
	  <filename>/function.facebookFeed.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCmZ1bmN0aW9uIGZhY2Vib29rRmVlZCgkcGFyYW1zLCAmJHNtYXJ0eSkgew0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8gYmFzZWQgb24gR0NCIC0gdjEuMSAtIDAxRGVjMTUNCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgIC8vIHNldCBkZWZhdWx0cw0KICAgJHdpZHRoID0gNTAwOyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBpeGVsIHdpZHRoIG9mIHRoZSBwbHVnaW4uIE1pbi4gaXMgMTgwIGFuZCBNYXguIGlzIDUwMA0KICAgJGhlaWdodCA9IDQwMDsgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBpeGVsIGhlaWdodCBvZiB0aGUgcGx1Z2luLiBNaW4uIGlzIDcwDQogICAkaGlkZUNvdmVyID0gJ2ZhbHNlJzsgICAgICAgICAgICAvLyBIaWRlIGNvdmVyIHBob3RvIGluIHRoZSBoZWFkZXINCiAgICRzaG93RmFjZXBpbGUgPSAnZmFsc2UnOyAgICAgICAgIC8vIFNob3cgcHJvZmlsZSBwaG90b3Mgd2hlbiBmcmllbmRzIGxpa2UgdGhpcw0KICAgJHNob3dQb3N0cyA9ICd0cnVlJzsgICAgICAgICAgICAgLy8gU2hvdyBwb3N0cyBmcm9tIHRoZSBQYWdlJ3MgdGltZWxpbmUNCiAgICRoaWRlQ3RhID0gJ3RydWUnOyAgICAgICAgICAgICAgIC8vIEhpZGUgdGhlIGN1c3RvbSBjYWxsIHRvIGFjdGlvbiBidXR0b24gKGlmIGF2YWlsYWJsZSkNCiAgICRzbWFsbEhlYWRlciA9ICd0cnVlJzsgICAgICAgICAgIC8vIFVzZSB0aGUgc21hbGwgaGVhZGVyIGluc3RlYWQNCiAgICRhZGFwdENvbnRhaW5lcldpZHRoID0gJ3RydWUnOyAgIC8vIFRyeSB0byBmaXQgaW5zaWRlIHRoZSBjb250YWluZXIgd2lkdGggLSBzZW1pLXJlc3BvbnNpdmUNCg0KDQogICAvLyBwYWdlSWQgKHJlcXVpcmVkKSBpcyBwYXJhbSBvciBDdXN0b21HUy5GYWNlYm9vayBpZiBzZXQNCiAgIGlmICggIWVtcHR5KCRwYXJhbXNbJ3BhZ2VJZCddKSApew0KICAgICAgJHBhZ2VJZCA9ICRwYXJhbXNbJ3BhZ2VJZCddOw0KICAgfSBlbHNlIHsNCiAgICAgICRDdXN0b21HUyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ3VzdG9tR1MnKTsNCiAgICAgIGlmKCBpc19vYmplY3QoJEN1c3RvbUdTKSApIHsNCiAgICAgICAgICRDdXN0b21HU19GYWNlYm9vayA9ICRDdXN0b21HUy0+R2V0RmllbGQoJ0ZhY2Vib29rJyk7DQogICAgICAgICBpZiAoICFlbXB0eSgkQ3VzdG9tR1NfRmFjZWJvb2tbJ3ZhbHVlJ10pICkgew0KICAgICAgICAgICAgJHBhZ2VJZCA9ICRDdXN0b21HU19GYWNlYm9va1sndmFsdWUnXTsNCiAgICAgICAgIH0NCiAgICAgIH0NCiAgIH0NCg0KICAgJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnVXRpbGl0aWVzJyk7DQogICBpZiggaXNfb2JqZWN0KCRtb2QpICYmICFlbXB0eSgkcGFnZUlkKSApIHsNCiAgICAgIC8vIHVzZSBvdGhlciBwYXJhbXMgaWYgc2V0DQogICAgICBpZiAoIWVtcHR5KCRwYXJhbXNbJ3dpZHRoJ10pKSAkd2lkdGggPSAkcGFyYW1zWyd3aWR0aCddOw0KICAgICAgaWYgKCFlbXB0eSgkcGFyYW1zWydoZWlnaHQnXSkpICRoZWlnaHQgPSAkcGFyYW1zWydoZWlnaHQnXTsNCiAgICAgIGlmICghZW1wdHkoJHBhcmFtc1snaGlkZUNvdmVyJ10pKSAkaGlkZUNvdmVyID0gJHBhcmFtc1snaGlkZUNvdmVyJ107DQogICAgICBpZiAoIWVtcHR5KCRwYXJhbXNbJ3Nob3dGYWNlcGlsZSddKSkgJHNob3dGYWNlcGlsZSA9ICRwYXJhbXNbJ3Nob3dGYWNlcGlsZSddOw0KICAgICAgaWYgKCFlbXB0eSgkcGFyYW1zWydzaG93UG9zdHMnXSkpICRzaG93UG9zdHMgPSAkcGFyYW1zWydzaG93UG9zdHMnXTsNCiAgICAgIGlmICghZW1wdHkoJHBhcmFtc1snaGlkZUN0YSddKSkgJGhpZGVDdGEgPSAkcGFyYW1zWydoaWRlQ3RhJ107DQogICAgICBpZiAoIWVtcHR5KCRwYXJhbXNbJ3NtYWxsSGVhZGVyJ10pKSAkc21hbGxIZWFkZXIgPSAkcGFyYW1zWydzbWFsbEhlYWRlciddOw0KICAgICAgaWYgKCFlbXB0eSgkcGFyYW1zWydhZGFwdENvbnRhaW5lcldpZHRoJ10pKSAkYWRhcHRDb250YWluZXJXaWR0aCA9ICRwYXJhbXNbJ2FkYXB0Q29udGFpbmVyV2lkdGgnXTsNCg0KDQogICAgICAkdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoICRtb2QtPkdldFRlbXBsYXRlUmVzb3VyY2UoJ2ZhY2Vib29rRmVlZF90ZW1wbGF0ZS50cGwnKSwgbnVsbCwgbnVsbCwgJHNtYXJ0eSApOw0KICAgICAgJHRwbC0+YXNzaWduKCdwYWdlSWQnLCAkcGFnZUlkKTsNCiAgICAgICR0cGwtPmFzc2lnbignd2lkdGgnLCAkd2lkdGgpOw0KICAgICAgJHRwbC0+YXNzaWduKCdoZWlnaHQnLCAkaGVpZ2h0KTsNCiAgICAgICR0cGwtPmFzc2lnbignaGlkZUNvdmVyJywgJGhpZGVDb3Zlcik7DQogICAgICAkdHBsLT5hc3NpZ24oJ3Nob3dGYWNlcGlsZScsICRzaG93RmFjZXBpbGUpOw0KICAgICAgJHRwbC0+YXNzaWduKCdzaG93UG9zdHMnLCAkc2hvd1Bvc3RzKTsNCiAgICAgICR0cGwtPmFzc2lnbignaGlkZUN0YScsICRoaWRlQ3RhKTsNCiAgICAgICR0cGwtPmFzc2lnbignc21hbGxIZWFkZXInLCAkc21hbGxIZWFkZXIpOw0KICAgICAgJHRwbC0+YXNzaWduKCdhZGFwdENvbnRhaW5lcldpZHRoJywgJGFkYXB0Q29udGFpbmVyV2lkdGgpOw0KICAgICAgJHRwbC0+ZGlzcGxheSgpOw0KICAgfQ0KDQp9DQoNCg0K]]></data>
	</file>
	<file>
	  <filename>/function.twitterFeed.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCmZ1bmN0aW9uIHR3aXR0ZXJGZWVkKCRwYXJhbXMsICYkc21hcnR5KSB7DQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLyBiYXNlZCBvbiBHQ0IgdjEuMCAtIDA5SnVuMTYNCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgIC8vIHNldCBkZWZhdWx0cw0KICAgJHR3aXR0ZXJXaWR0aCA9ICcnOyAgICAgICAgLy8gbGVhdmUgZW1wdHkgZm9yIHJlc3BvbnNpdmUNCiAgICR0d2l0dGVySGVpZ2h0ID0gMzAwOw0KICAgJHR3aXR0ZXJUaGVtZSA9ICdsaWdodCc7ICAgLy8gJ2xpZ2h0JyAoZGVmYXVsdCkgb3IgJ2RhcmsnDQogICAkdHdpdHRlckxpbmtDb2xvciA9ICcnOyAgICAvLyBlLmcuICcjQUFBQTUyJyBvcHRpb25hbA0KICAgJHR3aXR0ZXJCb3JkZXJDb2xvciA9ICcnOyAgLy8gb3B0aW9uYWwgb3Igc2V0IGluIENTUw0KICAgJHR3aXR0ZXJDaHJvbWVPcHRpb25zID0gJ25vZm9vdGVyIHRyYW5zcGFyZW50ICc7ICAgLy8gMSBvciBtb3JlIChzcGFjZSBzZXBhcmF0ZWQpICdub2hlYWRlciBub2Zvb3RlciBub2JvcmRlcnMgbm9zY3JvbGxiYXIgdHJhbnNwYXJlbnQnDQoNCg0KICAgLy8gc2NyZWVuX25hbWUgKHJlcXVpcmVkKSBpcyBwYXJhbSBvciBDdXN0b21HUy5Ud2l0dGVyIGlmIHNldA0KICAgaWYgKCAhZW1wdHkoJHBhcmFtc1snc2NyZWVuX25hbWUnXSkgKXsNCiAgICAgICR0d2l0dGVyU2NyZWVuTmFtZSA9ICRwYXJhbXNbJ3NjcmVlbl9uYW1lJ107DQoNCiAgIH0gZWxzZSB7DQogICAgICAkQ3VzdG9tR1MgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0N1c3RvbUdTJyk7DQogICAgICBpZiggaXNfb2JqZWN0KCRDdXN0b21HUykgKSB7DQogICAgICAgICAkQ3VzdG9tR1NfVHdpdHRlciA9ICRDdXN0b21HUy0+R2V0RmllbGQoJ1R3aXR0ZXInKTsNCiAgICAgICAgIGlmICggIWVtcHR5KCRDdXN0b21HU19Ud2l0dGVyWyd2YWx1ZSddKSApIHsNCiAgICAgICAgICAgICR0d2l0dGVyU2NyZWVuTmFtZSA9ICRDdXN0b21HU19Ud2l0dGVyWyd2YWx1ZSddOw0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgfQ0KDQogICAkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdVdGlsaXRpZXMnKTsNCiAgIGlmKCBpc19vYmplY3QoJG1vZCkgJiYgIWVtcHR5KCR0d2l0dGVyU2NyZWVuTmFtZSkgKSB7DQoNCiAgICAgIC8vIHVzZSBvdGhlciBwYXJhbXMgaWYgc2V0DQogICAgICBpZiAoIWVtcHR5KCRwYXJhbXNbJ3dpZHRoJ10pKSAkdHdpdHRlcldpZHRoID0gJHBhcmFtc1snd2lkdGgnXTsNCiAgICAgIGlmICghZW1wdHkoJHBhcmFtc1snaGVpZ2h0J10pKSAkdHdpdHRlckhlaWdodCA9ICRwYXJhbXNbJ2hlaWdodCddOw0KICAgICAgaWYgKCFlbXB0eSgkcGFyYW1zWyd0aGVtZSddKSkgJHR3aXR0ZXJUaGVtZSA9ICRwYXJhbXNbJ3RoZW1lJ107DQogICAgICBpZiAoIWVtcHR5KCRwYXJhbXNbJ2xpbmtfY29sb3InXSkpICR0d2l0dGVyTGlua0NvbG9yID0gJHBhcmFtc1snbGlua19jb2xvciddOw0KICAgICAgaWYgKCFlbXB0eSgkcGFyYW1zWydib3JkZXJfY29sb3InXSkpICR0d2l0dGVyQm9yZGVyQ29sb3IgPSAkcGFyYW1zWydib3JkZXJfY29sb3InXTsNCiAgICAgIGlmICghZW1wdHkoJHBhcmFtc1snY2hyb21lX29wdGlvbnMnXSkpICR0d2l0dGVyQ2hyb21lT3B0aW9ucyA9ICRwYXJhbXNbJ2Nocm9tZV9vcHRpb25zJ107DQoNCiAgICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSggJG1vZC0+R2V0VGVtcGxhdGVSZXNvdXJjZSgndHdpdHRlckZlZWRfdGVtcGxhdGUudHBsJyksIG51bGwsIG51bGwsICRzbWFydHkgKTsNCiAgICAgICR0cGwtPmFzc2lnbigndHdpdHRlclNjcmVlbk5hbWUnLCAkdHdpdHRlclNjcmVlbk5hbWUpOw0KICAgICAgJHRwbC0+YXNzaWduKCd0d2l0dGVyV2lkdGgnLCAkdHdpdHRlcldpZHRoKTsNCiAgICAgICR0cGwtPmFzc2lnbigndHdpdHRlckhlaWdodCcsICR0d2l0dGVySGVpZ2h0KTsNCiAgICAgICR0cGwtPmFzc2lnbigndHdpdHRlclRoZW1lJywgJHR3aXR0ZXJUaGVtZSk7DQogICAgICAkdHBsLT5hc3NpZ24oJ3R3aXR0ZXJMaW5rQ29sb3InLCAkdHdpdHRlckxpbmtDb2xvcik7DQogICAgICAkdHBsLT5hc3NpZ24oJ3R3aXR0ZXJCb3JkZXJDb2xvcicsICR0d2l0dGVyQm9yZGVyQ29sb3IpOw0KICAgICAgJHRwbC0+YXNzaWduKCd0d2l0dGVyQ2hyb21lT3B0aW9ucycsICR0d2l0dGVyQ2hyb21lT3B0aW9ucyk7DQogICAgICAkdHBsLT5kaXNwbGF5KCk7DQogICB9DQoNCn0NCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/function.youTubePlayer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCmZ1bmN0aW9uIHlvdVR1YmVQbGF5ZXIoJHBhcmFtcywmJHNtYXJ0eSkgew0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8gYmFzZWQgb24gVURUIHlvdVR1YmVQbGF5ZXIgLSB2MS4yIC0gMjZTZXAxNg0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnVXRpbGl0aWVzJyk7DQoNCiAgIGlmICggaXNfb2JqZWN0KCRtb2QpICYmICFlbXB0eSgkcGFyYW1zWyd2aWRlb2lkJ10pICkgew0KICAgICAgJHZpZGVvaWQgPSB0cmltKCRwYXJhbXNbJ3ZpZGVvaWQnXSk7DQogICAgICAkY2xhc3MgPSAnJzsNCiAgICAgICRzdGFydCA9ICcnOw0KICAgICAgJGF1dG9wbGF5ID0gJyc7DQogICAgICAkdGV4dCA9ICcnOw0KICAgICAgJGFzcGVjdCA9ICcxNmJ5OSc7DQogICAgICAkdGh1bWJuYWlsID0gJyc7DQogICAgICBpZiAoaXNzZXQoJHBhcmFtc1snY2xhc3MnXSkpICRjbGFzcyA9ICRwYXJhbXNbJ2NsYXNzJ107DQogICAgICBpZiAoaXNzZXQoJHBhcmFtc1snc3RhcnQnXSkpICRzdGFydCA9ICcmc3RhcnQ9Jy4oaW50KSRwYXJhbXNbJ3N0YXJ0J107DQogICAgICBpZiAoaXNzZXQoJHBhcmFtc1snYXV0b3BsYXknXSkgJiYgJHBhcmFtc1snYXV0b3BsYXknXT09MSkgJGF1dG9wbGF5ID0gJyZhdXRvcGxheT0xJzsNCiAgICAgIGlmIChpc3NldCgkcGFyYW1zWydhc3BlY3QnXSkgJiYgJHBhcmFtc1snYXNwZWN0J109PSc0YnkzJykgJGFzcGVjdCA9ICc0YnkzJzsNCiAgICAgIGlmIChpc3NldCgkcGFyYW1zWyd0ZXh0J10pKSAkdGV4dCA9ICRwYXJhbXNbJ3RleHQnXTsNCiAgICAgIGlmIChpc3NldCgkcGFyYW1zWyd0aHVtYm5haWwnXSkpIHsNCiAgICAgICAgICR0aHVtYiA9IHRyaW0oJHBhcmFtc1sndGh1bWJuYWlsJ10pOw0KICAgICAgICAgc3dpdGNoICgkdGh1bWIpIHsNCiAgICAgICAgICAgIGNhc2UgJ3NtYWxsJzoNCiAgICAgICAgICAgICAgICR0aHVtYm5haWwgPSAnLy9pMS55dGltZy5jb20vdmkvJy4kdmlkZW9pZC4nL21xZGVmYXVsdC5qcGcnOyAgLy8gc21hbGwgLSAzMjAgeCAxODBweA0KICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlICdtZWRpdW0nOg0KICAgICAgICAgICAgICAgJHRodW1ibmFpbCA9ICcvL2kxLnl0aW1nLmNvbS92aS8nLiR2aWRlb2lkLicvMC5qcGcnOyAgLy8gbWVkaXVtIC0gNDgwIHggMzYwcHgNCiAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAnbWF4JzoNCiAgICAgICAgICAgICAgICR0aHVtYm5haWwgPSAnLy9pMS55dGltZy5jb20vdmkvJy4kdmlkZW9pZC4nL21heHJlc2RlZmF1bHQuanBnJzsgIC8vIG1heCAtIDE5MjAgeCAxMDgwcHgNCiAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICR0aHVtYm5haWwgPSAkdGh1bWI7DQogICAgICAgICB9DQogICAgICB9DQoNCiAgICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSggJG1vZC0+R2V0VGVtcGxhdGVSZXNvdXJjZSgneW91VHViZVBsYXllcl90ZW1wbGF0ZS50cGwnKSwgbnVsbCwgbnVsbCwgJHNtYXJ0eSApOw0KICAgICAgJHRwbC0+YXNzaWduKCd2aWRlb2lkJywgJHZpZGVvaWQpOw0KICAgICAgJHRwbC0+YXNzaWduKCdjbGFzcycsICRjbGFzcyk7DQogICAgICAkdHBsLT5hc3NpZ24oJ3N0YXJ0JywgJHN0YXJ0KTsNCiAgICAgICR0cGwtPmFzc2lnbignYXV0b3BsYXknLCAkYXV0b3BsYXkpOw0KICAgICAgJHRwbC0+YXNzaWduKCdhc3BlY3QnLCAkYXNwZWN0KTsNCiAgICAgICR0cGwtPmFzc2lnbigndGV4dCcsICR0ZXh0KTsNCiAgICAgICR0cGwtPmFzc2lnbigndGh1bWJuYWlsJywgJHRodW1ibmFpbCk7DQogICAgICAkdHBsLT5kaXNwbGF5KCk7DQoNCiAgIH0NCn0NCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxNiBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnVXRpbGl0aWVzJzsNCiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnUHJvdmlkZXMgYSBzZXQgb2YgYWRkaXRpb25hbCBmdW5jdGlvbnMgdXNlZnVsIGFjcm9zcyBtYW55IHdlYnNpdGVzLic7DQoNCiRsYW5nWydpbnN0YWxsX21zZyddID0gIllvdSBoYXZlIHN1Y2Nlc3NmdWxseSBpbnN0YWxsZWQgdGhlICdVdGlsaXRpZXMnIG1vZHVsZS4iOw0KJGxhbmdbJ2luc3RhbGxfQklFeHRlbnNpb25zX2Vycm9yJ10gPSAiTW9kdWxlICdCSUV4dGVuc2lvbnMnIG5lZWRzIHRvIGJlIHVuaW5zdGFsbGVkIGJlZm9yZSBpbnN0YWxsaW5nICdVdGlsaXRpZXMnIjsNCiRsYW5nWydhc2tfdW5pbnN0YWxsJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHVuaW5zdGFsbCB0aGUgVXRpbGl0aWVzIG1vZHVsZT8nOw0KDQoNCg0KDQoNCg0KDQoNCiMjIyAgICAjIyMgICAjIyMjIyMjIyMgICAjIyMgICAgICAgICMjIyMjIyMjIw0KIyMjICAgICMjIyAgICMjIyMjIyMjIyAgICMjIyAgICAgICAgIyMjIyMjIyMjDQojIyMgICAgIyMjICAgIyMjICAgICAgICAgIyMjICAgICAgICAjIyMgICAjIyMNCiMjIyMjIyMjIyMgICAjIyMjIyMjIyMgICAjIyMgICAgICAgICMjIyMjIyMjIw0KIyMjIyMjIyMjIyAgICMjIyMjIyMjIyAgICMjIyAgICAgICAgIyMjIyMjIyMjDQojIyMgICAgIyMjICAgIyMjICAgICAgICAgIyMjICAgICAgICAjIyMNCiMjIyAgICAjIyMgICAjIyMjIyMjIyMgICAjIyMjIyMjIyMgICMjIw0KIyMjICAgICMjIyAgICMjIyMjIyMjIyAgICMjIyMjIyMjIyAgIyMjDQoNCiRsYW5nWydoZWxwJ10gPSA8PDwnRU9EJw0KDQo8aDMgbmFtZT0iIj5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPg0KPHA+J1V0aWxpdGllcycgcHJvdmlkZXMgYSBzZXQgb2YgYWRkaXRpb25hbCBmdW5jdGlvbnMgdXNlZnVsIGFjcm9zcyBtYW55IHdlYnNpdGVzLiBQcmV2aW91c2x5IHRoZXNlIHdlcmUgUGx1Z2lucyBvciBVRFRzLjwvcD48YnI+DQo8cD5UYWdzIC8gU21hcnR5IEZ1bmN0aW9uczo8L3A+DQo8dWw+DQogICA8bGk+Y29udGVudF90eXBlPC9saT4NCiAgIDxsaT5lZGl0Q29udGVudFRhYnM8L2xpPg0KICAgPGxpPmdvb2dsZUZvbnRVcmw8L2xpPg0KICAgPGxpPmdhbGxlcnlDb3ZlcnM8L2xpPg0KICAgPGxpPnlvdVR1YmVQbGF5ZXI8L2xpPg0KICAgPGxpPmNzc01pbmlmaWVyPC9saT4NCiAgIDxsaT50d2l0dGVyRmVlZDwvbGk+DQogICA8bGk+ZmFjZWJvb2tGZWVkPC9saT4NCiAgIDxsaT5nZXRDdXN0b21HUzwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCg0KPGgyPlRhZ3MgLyBTbWFydHkgRnVuY3Rpb25zPC9oMj4NCg0KPGgzPmNvbnRlbnRfdHlwZTwvaDM+DQo8cD57Y29udGVudF90eXBlIHR5cGU9J3N0cmluZ19taW1lX3R5cGUnfTwvcD4NCjxwPlNldHMgdGhlIHJlcXVlc3QgY29udGVudCB0eXBlIHRvIGEgdmFsaWQgbWltZSB0eXBlLjwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPnR5cGUgKHJlcXVpcmVkKSAtIGEgdmFsaWQgbWltZSB0eXBlLjwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCg0KPGgzPmVkaXRDb250ZW50VGFiczwvaDM+DQo8cD57ZWRpdENvbnRlbnRUYWJzIC4uLn0gaXMgaW5jbHVkZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBhZG1pbiB0ZW1wbGF0ZSAnbW9kdWxlX2N1c3RvbVxDTVNDb250ZW50TWFuYWdlclx0ZW1wbGF0ZXNcYWRtaW5fZWRpdGNvbnRlbnQudHBsJy4gRWRpdHMgYWRtaW4gc21hcnR5IGFycmF5cyAkdGFiX25hbWVzICYgJHRhYl9jb250ZW50c19hcnJheSwgdG8gaGlkZSBzb21lIHRhYnMgYW5kIG1vdmUgc29tZSBmaWVsZHMuPC9wPg0KPHA+SWRlYWxseSB0aGlzIGZ1bmN0aW9uYWxpdHkgd291bGQgYmUgcmVwbGFjZWQgYnkgQ01TTVMgY29yZSBmdW5jdGlvbmFsaXR5IGF0IHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVyZS48L3A+DQo8cD5UbyBjaGFuZ2UgdGhlIGRpc3BsYXllZCBBZG1pbiBmaWVsZCB0aXRsZXMsIGp1c3QgdXNlIHRoZSBjb3JlIGFkbWluX2N1c3RvbSBmdW5jdGlvbmFsaXR5LiBBZGQgYSBmaWxlIGludG8gL2Fzc2V0cy9hZG1pbl9jdXN0b20vbGFuZy9lbl9VUy5waHAgKG9yIHNpbWlsYXIgLSBDPFM8UyB2Mi4yKykgdGhhdCBjaGFuZ2VzIHRoZSBsYW5ndWFnZSBzdHJpbmdzIGZyb20gL2FkbWluL2xhbmcvZW5fVVMucGhwLjwvcD48YnI+DQo8cD5UaXA6IGlmIG1vdmluZyBpbmRpdmlkdWFsIGZpZWxkcyBhZGQgb25lIGF0IGEgdGltZSB0byB0aGUgbW92ZV9maWVsZHMgcGFyYW1ldGVyIGFuZCBzZXQgZGVidWc9MSAtIG1ha2VzIGl0IGVhc2llciB0byB3b3JrIG91dCB0aGUgbmV3IHBvc2l0aW9ucyE8L3A+DQo8cD5QYXJhbWV0ZXJzOjwvcD4NCjx1bD4NCiAgIDxsaT5kZWJ1ZyAob3B0aW9uYWwpIC0gc2V0IGRlYnVnPTEgdG8gdHVybiBvbiBvdXRwdXQgb2YgQ29udGVudCBNYW5hZ2VyIHRhYnMgYW5kIGZpZWxkcywgYmVmb3JlIGFuZCBhZnRlciBlZGl0Q29udGVudFRhYnMgY2hhbmdlcy4gSnVzdCB0byBtYWtlIGl0IGVhc2llciB0byBkZWZpbmUgY2hhbmdlcy48L2xpPg0KICAgPGxpPm1vdmVfdGFiX2NvbnRlbnQgKG9wdGlvbmFsKSAtIG1vdmVzIGFsbCBjb250ZW50IGZyb20gb25lIFRhYiB0byBhbm90aGVyIFRhYi4gRm9ybWF0IGlzIG1vdmVfdGFiX2NvbnRlbnQ9ImZyb21UYWIsdG9UYWJ8ZnJvbVRhYix0b1RhYiIgZS5nLiBtb3ZlX3RhYl9jb250ZW50PSJMb2dpYyxPcHRpb25zfFBlcm1pc3Npb25zLE9wdGlvbnMiIDwvbGk+DQogICA8bGk+bW92ZV9maWVsZHMgKG9wdGlvbmFsKSAtIG1vdmVzIGEgc2luZ2xlIGZpZWxkIGZyb20gb25lIFRhYiAvIFBvc2l0aW9uIHRvIGFub3RoZXIgVGFiIC8gUG9zaXRpb24uIEZvcm1hdCBpcyBtb3ZlX2ZpZWxkcz0iZnJvbVRhYixmcm9tUG9zaXRpb24sdG9UYWIsdG9Qb3NpdGlvbnxmcm9tVGFiLGZyb21Qb3NpdGlvbix0b1RhYix0b1Bvc2l0aW9uIiBlLmcuIG1vdmVfZmllbGRzPSJOYXZpZ2F0aW9uLDAsTWFpbiwwfCdOYXZpZ2F0aW9uJywxLCdNYWluJywxIiA8L2xpPg0KICAgPGxpPnJlbmFtZV90YWIgKG9wdGlvbmFsKSAtIGp1c3QgcmVuYW1lcyBvbmUgb3IgbW9yZSB0YWJzLiBGb3JtYXQgcmVuYW1lX3RhYj0iZnJvbVRhYix0b1RhYnxmcm9tVGFiLHRvVGFiIiBlLmcuIHJlbmFtZV90YWI9Ik5hdmlnYXRpb24sTWVudSIuIFllcyAtIEkga25vdyB0aGVyZSBjYW4gYmUgYWNoaWV2ZWQgdGhyb3VnaCB0aGUgbW9kdWxlX2N1c3RvbS9sYW5nIGZpbGVzIC0gaXQganVzdCBzZWVtZWQgbW9yZSBjb25zaXN0ZW50IHRvIG1lc3Mgd2l0aCB0YWJzL2ZpZWxkcyBhbGwgaW4gdGhlIG9uZSBwbGFjZSE8L2xpPg0KPC91bD4NCjxicj4NCg0KDQoNCjxoMz5nb29nbGVGb250VXJsPC9oMz4NCjxwPntnb29nbGVGb250VXJsfSByZXR1cm5zIHRoZSBmdWxsIHVybCBmb3IgaW5jbHVkaW5nIEdvb2dsZSBGb250cywgZS5nLiBmb3IgdXNlIGluIFRpbnlNQ0UganMgZmlsZS48L3A+DQo8cD5hY3R1YWwgZm9udHMgYXJlIHNldCBieSB0aGUgQ3VzdG9tR1MgdmFyaWFibGUgJ0dvb2dsZSBGb250cycuIEVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpZiB0aGF0IGZpZWxkIGlzIGJsYW5rLjwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPmN1c3RvbWdzX2ZpZWxkIChvcHRpb25hbCkgLSBzcGVjaWZ5IGFuIGFsdGVybmF0aXZlIEN1c3RvbUdTIGZpZWxkIHRvIHVzZSAoZGVmYXVsdDogJ0dvb2dsZSBGb250cycpLjwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCg0KPGgzPmdhbGxlcnlDb3ZlcnM8L2gzPg0KPHA+c2V0cyAkZ2FsbGVyeUNvdmVycyBhcnJheSBjb250YWluaW5nIHRoZSBjb3ZlcmZpbGUgJiBjb3ZlcnBhdGggb2YgdGhlIGZ1bGwgc2l6ZSBjb3ZlciBpbWFnZXMgb2YgdGhlIGdhbGxlcmllcyBpbiAkZGlyIHBhcmFtZXRlciAocmVxdWlyZWQpPC9wPg0KPHA+dGhpcyBpcyByZXF1aXJlZCBhcyBieSBkZWZhdWx0IHRoZSBHYWxsZXJ5IG1vZHVsZSBvbmx5IHByb3ZpZGVzIGEgcHJlLXByb2Nlc3NlZCB0aHVtYm5haWwgZm9yIGFueSBkaXJlY3Rvcmllcywgbm90IGEgdXJsIHRvIHRoZSBmdWxsIGltYWdlLiBBbHNvIGRvZXNuJ3QgaGFuZGxlIGF1dG8tcm90YXRlIGNvcnJlY3RseS48L3A+DQo8cD5QYXJhbWV0ZXJzOjwvcD4NCjx1bD4NCiAgIDxsaT4gZGlyIChyZXF1aXJlZCkgLSBHYWxsZXJ5IGRpcmVjdG9yeSA8L2xpPg0KPC91bD4NCjxicj4NCg0KDQoNCjxoMz55b3VUdWJlUGxheWVyPC9oMz4NCjxwPnt5b3VUdWJlUGxheWVyIHZpZGVvaWQ9J0p1cjFGT19uWTk4J30gaW1iZWRzIGEgWW91VHViZSB2aWRlbyBwbGF5ZXIgaW4gdGhlIHBhZ2UuIFJlcXVpcmVzIEJvb3RzdHJhcCBDU1MuPC9wPg0KPHA+dXNlcyAiP3JlbD0wJm1vZGVzdGJyYW5kaW5nPTEiIHRvIGhpZGUgcmVsYXRlZCB2aWRlb3MgYXQgZW5kIGFuZCBzaG93IG1pbmltYWwgWW91VHViZSBicmFuZGluZzwvcD4NCjxwPmlmcmFtZSBpcyBub3cgYWx3YXlzIHJlc3BvbnNpdmUgLSBoZWlnaHQgJiB3aWR0aCBwYXJhbWF0ZXJzIG5vIGxvbmdlciBzdXBwb3J0ZWQgKHYxLjgpPC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+dmlkZW9pZCAgKHJlcXVpcmVkKTwvbGk+DQogICA8bGk+c3RhcnQgICAgKG9wdGlvbmFsKSAtIGJlZ2lucyBwbGF5aW5nIHRoZSB2aWRlbyBhdCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHNlY29uZHMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHZpZGVvPC9saT4NCiAgIDxsaT5jbGFzcyAgICAob3B0aW9uYWwpIC0gYWRkaXRpb25hbCBjbGFzc2VzIHRvIGJlIGFkZGVkIGludG8gdGhlIGNsYXNzIGF0dHJpYnV0ZTwvbGk+DQogICA8bGk+YXV0b3BsYXkgKG9wdGlvbmFsKSAtIHNldCB0byAxIHRvIHR1cm4gb24gYXV0b3BsYXk8L2xpPg0KICAgPGxpPmFzcGVjdCAgIChvcHRpb25hbCkgLSBzcGVjaWZ5IGFzcGVjdCByYXRpbyAnMTZieTknIChkZWZhdWx0KSBvciAnNGJ5Myc8L2xpPg0KICAgPGxpPnRodW1ibmFpbCAob3B0aW9uYWwpIC0gdXNlIGVpdGhlcjogJ3NtYWxsJywgJ21lZGl1bScsICdtYXgnLCBvciB0aGUgdXJsIG9mIGFuIGltYWdlIHRvIHVzZS48YnI+DQogICAnc21hbGwnICgzMjB4MTgwcHgpLCAnbWVkaXVtJyAoNDgweDM2MHB4KSBhbmQgJ21heCcgKDE5MjB4MTA4MHB4KSBhcmUgYWxsIFlvdVR1YmUgZ2VuZXJhdGVkIHRodW1ibmFpbHMuDQo8L3VsPg0KPHA+Tm90ZTogaWYgeW91IHdpc2ggdG8gbW9kaWZ5IHRoZSB0ZW1wbGF0ZSBjb3B5IC9VdGlsaXRpZXMvdGVtcGxhdGVzL3lvdVR1YmVQbGF5ZXJfdGVtcGxhdGUudHBsIGludG8gYXNzZXRzL21vZHVsZV9jdXN0b20vVXRpbGl0aWVzL3RlbXBsYXRlcy95b3VUdWJlUGxheWVyX3RlbXBsYXRlLnRwbCBhbmQgbW9kaWZ5IHRoYXQgdmVyc2lvbi4gKE5vdCBjaGFuZ2VkIGJ5IG1vZHVsZSB1cGdyYWRlcykuPC9wPg0KPGJyPg0KDQoNCg0KPGgzPmNzc01pbmlmaWVyPC9oMz4NCjxwPlRoaXMgQ01TTVMgY3NzTWluaWZpZXIgcGx1Z2luIGxldHMgYSB1c2VyIGNvbnZlcnQgdGhlIGRlZmF1bHQge2Ntc19zdHlsZXNoZWV0fSBpbnRvIGEgbWluaWZpZWQgY3NzIGZpbGUuPC9wPg0KPHA+VGhpcyBmdW5jdGlvbiB0YWtlcyBjc3MgYW5kIGNvbXByZXNzZXMgaXQsIHJlbW92aW5nIHVubmVjY2Vzc2FyeSB3aGl0ZXNwYWNlLCBjb2xvbnMsIHJlbW92aW5nIHVubmVjY2Vzc2FyeSBweC9lbSBkZWNsYXJhdGlvbnMgZXRjLjwvcD4NCjxwPlJlcGxhY2UgdGhlIGRlZmF1bHQge2Ntc19zdHlsZXNoZWV0fSB0YWcgd2l0aDo8YnI+DQogICA8Y29kZT57Y3NzTWluaWZpZXIgY3NzPSJ7Y21zX3N0eWxlc2hlZXQgbm9saW5rcz10cnVlfSJ9PC9jb2RlPjwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPihyZXF1aXJlZCkgY3NzIChzdHJpbmcpIC0gY3NzIGZpbGVuYW1lIDwvbGk+DQogICA8bGk+KG9wdGlvbmFsKSBub21pbmlmeSAoc3RyaW5nKSAtIGlmIHNldCB0aGUgdW5taW5pZmllZCBjc3MgaXMgb3V0cHV0IChmb3IgZGVidWdnaW5nKTwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCg0KPGgzPnR3aXR0ZXJGZWVkPC9oMz4NCjxwPm91dHB1dHMgYSBUd2l0dGVyIEZlZWQgKHNlZTogaHR0cHM6Ly9kZXYudHdpdHRlci5jb20vd2ViL2VtYmVkZGVkLXRpbWVsaW5lcyBmb3IgZGV0YWlscykuPC9wPg0KPHA+QWRkIHRoZSB0YWcge3R3aXR0ZXJGZWVkfSBpbnRvIGEgV2lkZ2V0IG9yIEZvb3RlciwgZXRjLiBVc2VzIEN1c3RvbUdTLlR3aXR0ZXIgYXMgZGVmYXVsdCBzY3JlZW5fbmFtZSBvciB0aGUgcHJvdmlkZWQgcGFyYW1ldGVyczwvcD4NCjxwPnRlc3Qgd2l0aDoge3R3aXR0ZXJGZWVkIHNjcmVlbl9uYW1lPSdObzFGYXJtZXJKYWtlJyB3aWR0aD01MDAgaGVpZ2h0PTUwMCB0aGVtZT1kYXJrIGxpbmtfY29sb3I9JyNBQUFBNTInIGJvcmRlcl9jb2xvcj1yZWQgY2hyb21lX29wdGlvbnM9J25vaGVhZGVyIG5vZm9vdGVyIG5vYm9yZGVycyBub3Njcm9sbGJhcid9PC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+KG9wdGlvbmFsKSBzY3JlZW5fbmFtZSAoc3RyaW5nKSAtIHVzZXMgQ3VzdG9tR1MuVHdpdHRlciBhcyBkZWZhdWx0LCBvciBlLmcuICdObzFGYXJtZXJKYWtlJzwvbGk+DQogICA8bGk+KG9wdGlvbmFsKSB3aWR0aCAoaW50KSAtIGxlYXZlIGVtcHR5IGZvciByZXNwb25zaXZlPC9saT4NCiAgIDxsaT4ob3B0aW9uYWwpIGhlaWdodCAoaW50KSAtIGRlZmF1bHQgaXMgMzAwPC9saT4NCiAgIDxsaT4ob3B0aW9uYWwpIHRoZW1lIChzdHJpbmcpIC0gJ2xpZ2h0JyAoZGVmYXVsdCkgb3IgJ2Rhcms8L2xpPg0KICAgPGxpPihvcHRpb25hbCkgbGlua19jb2xvciAoc3RyaW5nKSAtIGUuZy4gJyNBQUFBNTInIDwvbGk+DQogICA8bGk+KG9wdGlvbmFsKSBib3JkZXJfY29sb3IgKHN0cmluZykgLSBvcHRpb25hbCBvciBzZXQgaW4gQ1NTPC9saT4NCiAgIDxsaT4ob3B0aW9uYWwpIGNocm9tZV9vcHRpb25zIChzdHJpbmcpIC0gMSBvciBtb3JlIG9mIChzcGFjZSBzZXBhcmF0ZWQpOg0KICAgICAgICAgICAgICAgICAgICAgICAgJ25vaGVhZGVyIG5vZm9vdGVyIG5vYm9yZGVycyBub3Njcm9sbGJhciB0cmFuc3BhcmVudCc8L2xpPg0KPC91bD4NCjxwPk5vdGU6IGlmIHlvdSB3aXNoIHRvIG1vZGlmeSB0aGUgdGVtcGxhdGUgY29weSAvVXRpbGl0aWVzL3RlbXBsYXRlcy90d2l0dGVyRmVlZF90ZW1wbGF0ZS50cGwgaW50byBhc3NldHMvbW9kdWxlX2N1c3RvbS9VdGlsaXRpZXMvdGVtcGxhdGVzL3R3aXR0ZXJGZWVkX3RlbXBsYXRlLnRwbCBhbmQgbW9kaWZ5IHRoYXQgdmVyc2lvbi4gKE5vdCBjaGFuZ2VkIGJ5IG1vZHVsZSB1cGdyYWRlcykuPC9wPg0KPGJyPg0KDQoNCg0KPGgzPmZhY2Vib29rRmVlZDwvaDM+DQo8cD5vdXRwdXRzIGEgRmFjZWJvb2sgUGFnZSBGZWVkIChzZWU6IGh0dHBzOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vZG9jcy9wbHVnaW5zL3BhZ2UtcGx1Z2luLyBmb3IgZGV0YWlscykuPC9wPg0KPHA+QWRkIHRoZSB0YWcge2ZhY2Vib29rRmVlZH0gaW50byBhIFdpZGdldCBvciBGb290ZXIsIGV0Yy4gVXNlcyBDdXN0b21HUy5GYWNlYm9vayBhcyBkZWZhdWx0IHBhZ2VJZCBvciB0aGUgcHJvdmlkZWQgcGFyYW1ldGVyczwvcD4NCjxwPnRlc3Qgd2l0aDoge2ZhY2Vib29rRmVlZCBwYWdlSWQ9J05vMUZhcm1lckpha2UnIHdpZHRoPTUwMCBoZWlnaHQ9NTAwIHRoZW1lPWRhcmsgbGlua19jb2xvcj0nI0FBQUE1MicgYm9yZGVyX2NvbG9yPXJlZCBjaHJvbWVfb3B0aW9ucz0nbm9oZWFkZXIgbm9mb290ZXIgbm9ib3JkZXJzIG5vc2Nyb2xsYmFyJ308L3A+DQo8cD5QYXJhbWV0ZXJzOjwvcD4NCjx1bD4NCiAgIDxsaT53aWR0aCAob3B0aW9uYWwpIC0gVGhlIHBpeGVsIHdpZHRoIG9mIHRoZSBwbHVnaW4uIE1pbi4gaXMgMTgwIGFuZCBNYXguIGlzIDUwMDwvbGk+DQogICA8bGk+aGVpZ2h0IChvcHRpb25hbCkgLSBUaGUgcGl4ZWwgaGVpZ2h0IG9mIHRoZSBwbHVnaW4uIE1pbi4gaXMgNzA8L2xpPg0KICAgPGxpPmhpZGVDb3ZlciAob3B0aW9uYWwpIC0gSGlkZSBjb3ZlciBwaG90byBpbiB0aGUgaGVhZGVyPC9saT4NCiAgIDxsaT5zaG93RmFjZXBpbGUgKG9wdGlvbmFsKSAtIFNob3cgcHJvZmlsZSBwaG90b3Mgd2hlbiBmcmllbmRzIGxpa2UgdGhpczwvbGk+DQogICA8bGk+c2hvd1Bvc3RzIChvcHRpb25hbCkgLSBTaG93IHBvc3RzIGZyb20gdGhlIFBhZ2UncyB0aW1lbGluZTwvbGk+DQogICA8bGk+aGlkZUN0YSAob3B0aW9uYWwpIC0gSGlkZSB0aGUgY3VzdG9tIGNhbGwgdG8gYWN0aW9uIGJ1dHRvbiAoaWYgYXZhaWxhYmxlKTwvbGk+DQogICA8bGk+c21hbGxIZWFkZXIgKG9wdGlvbmFsKSAtIFVzZSB0aGUgc21hbGwgaGVhZGVyIGluc3RlYWQ8L2xpPg0KICAgPGxpPmFkYXB0Q29udGFpbmVyV2lkdGggKG9wdGlvbmFsKSAtIFRyeSB0byBmaXQgaW5zaWRlIHRoZSBjb250YWluZXIgd2lkdGggLSBzZW1pLXJlc3BvbnNpdmU8L2xpPg0KPC91bD4NCjxwPk5vdGU6IGlmIHlvdSB3aXNoIHRvIG1vZGlmeSB0aGUgdGVtcGxhdGUgY29weSAvVXRpbGl0aWVzL3RlbXBsYXRlcy9mYWNlYm9va0ZlZWRfdGVtcGxhdGUudHBsIGludG8gYXNzZXRzL21vZHVsZV9jdXN0b20vVXRpbGl0aWVzL3RlbXBsYXRlcy9mYWNlYm9va0ZlZWRfdGVtcGxhdGUudHBsIGFuZCBtb2RpZnkgdGhhdCB2ZXJzaW9uLiAoTm90IGNoYW5nZWQgYnkgbW9kdWxlIHVwZ3JhZGVzKS48L3A+DQo8YnI+DQoNCg0KDQo8aDM+Z2V0Q3VzdG9tR1M8L2gzPg0KPHA+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIEN1c3RvbUdTIHNldHRpbmcuICBXaWxsIHdvcmsgaW4gYWRtaW4gcGFnZSB3aGVuIEN1c3RvbUdTIGhhc24ndCBiZWVuIHNldCwgZS5nLiBmb3Igc2V0dGluZyB0aGUgV2lkZ2V0IHN0eWxlcyB0aGUgc2FtZSBhcyBTZWN0aW9uIHN0eWxlcy48L3A+DQo8cD5Vc2FnZSAtICBhZGQgdGhlIHRhZzoge2dldEN1c3RvbUdTIGN1c3RvbWdzX2ZpZWxkPSdzZXR0aW5nIG5hbWUnfTwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPmN1c3RvbWdzX2ZpZWxkIChyZXF1aXJlZCkgLSBUaGUgbmFtZSAod2l0aCBzcGFjZXMpIG9mIHRoZSBDdXN0b21HUyBmaWVsZCB0byByZXR1cm4gdGhlIHZhbHVlIG9mLjwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCg0KDQoNCg0KDQoNCjxoMz5TdXBwb3J0PC9oMz4NCjxwPkFzIHBlciB0aGUgR1BMIGxpY2VuY2UsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMgaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLg0KVGhlIG1vZHVsZSBhdXRob3IgaXMgbm90IG9ibGlnYXRlZCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoaXMgY29kZS4gSG93ZXZlciB5b3UgbWlnaHQgZ2V0IHN1cHBvcnQgdGhyb3VnaCB0aGUgZm9sbG93aW5nOjwvcD4NCjx1bD4NCiAgIDxsaT5Gb3Igc3VwcG9ydCwgZmlyc3QgPHN0cm9uZz5zZWFyY2g8L3N0cm9uZz4gdGhlIDxhIGhyZWY9Ii8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bTwvYT4sIGZvciBpc3N1ZXMgd2l0aCB0aGUgbW9kdWxlIHNpbWlsYXIgdG8gdGhvc2UgeW91IGFyZSBmaW5kaW5nLjwvbGk+DQogICA8bGk+VGhlbiwgaWYgbmVjZXNzYXJ5LCBvcGVuIGEgPHN0cm9uZz5uZXcgZm9ydW0gdG9waWM8L3N0cm9uZz4gdG8gcmVxdWVzdCBoZWxwLCB3aXRoIGEgdGhvcm91Z2ggZGVzY3JpcHRpb24gb2YgeW91ciBpc3N1ZSwgYW5kIHN0ZXBzIHRvIHJlcHJvZHVjZSBpdC48L2xpPg0KICAgPGxpPklmIHlvdSBmaW5kIGEgYnVnIHlvdSBjYW4gPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9idWcvbGlzdC8xNDIxIj5zdWJtaXQgYSBCdWcgUmVwb3J0PC9hPi48L2xpPg0KICAgPGxpPkZvciBhbnkgZ29vZCBpZGVhcyB5b3UgY2FuIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvZmVhdHVyZV9yZXF1ZXN0L2xpc3QvMTQyMSI+c3VibWl0IGEgRmVhdHVyZSBSZXF1ZXN0PC9hPi48L2xpPg0KICAgPGxpPklmIHlvdSBmb3VuZCB0aGUgTW9kdWxlIHVzZWZ1bCAtIHNob3V0IG91dCB0byBtZSBvbiBUd2l0dGVyIDxhIGhyZWY9Ii8vdHdpdHRlci5jb20vS2l3aUNocmlzQlQiPkBLaXdpQ2hyaXNCVDwvYT48L2xpPg0KPC91bD48YnI+DQoNCg0KPGgzPkNvcHlyaWdodCAmYW1wOyBMaWNlbmNlPC9oMz4NCjxwPkNvcHlyaWdodCDCqSAyMDE5LCBDaHJpcyBUYXlsb3IgPGNocmlzIGF0IGJpbm5vdmF0aXZlIGRvdCBjbyBkb3QgdWs+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+PGJyPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIEdOVSBQdWJsaWMgTGljZW5zZSB2My4gSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuIFlvdSBtYXkgb25seSB1c2UgdGhpcyBzb2Z0d2FyZSB3aGVuIHRoZXJlIGlzIGEgY2xlYXIgYW5kIG9idmlvdXMgaW5kaWNhdGlvbiBpbiB0aGUgYWRtaW4gc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIFNpbXBsZSE8L3A+PGJyPg0KPGJyPg0KRU9EOw0KDQoNCg0KDQoNCg0KDQoNCiMjIyMjIyMjIyAgIyMjICAgICMjIyAgIyMjIyMjIyMjIyAgIyMjICAgICMjIyAgIyMjIyMjIyMjICAjIyMjIyMjIyAgIyMjICAgICAgICMjIyMjIyMjIyAgIyMjIyMjIyMjDQojIyMjIyMjIyMgICMjIyAgICAjIyMgICMjIyMjIyMjIyMgICMjIyMgICAjIyMgICMjIyMjIyMjIyAgIyMjIyMjIyMgICMjIyAgICAgICAjIyMjIyMjIyMgICMjIyMjIyMjIw0KIyMjICAgICAgICAjIyMgICAgIyMjICAjIyMgICAgIyMjICAjIyMjIyAgIyMjICAjIyMgICAgICAgICMjIyAgICAgICAjIyMgICAgICAgIyMjICAgIyMjICAjIyMNCiMjIyAgICAgICAgIyMjIyMjIyMjIyAgIyMjIyMjIyMjIyAgIyMjICMjICMjIyAgIyMjICAgICAgICAjIyMjIyMjIyAgIyMjICAgICAgICMjIyAgICMjIyAgIyMjDQojIyMgICAgICAgICMjIyMjIyMjIyMgICMjIyMjIyMjIyMgICMjIyAgIyMjIyMgICMjIyAgICMjIyAgIyMjIyMjIyMgICMjIyAgICAgICAjIyMgICAjIyMgICMjIyAgICMjIw0KIyMjICAgICAgICAjIyMgICAgIyMjICAjIyMgICAgIyMjICAjIyMgICAjIyMjICAjIyMgICAjIyMgICMjIyAgICAgICAjIyMgICAgICAgIyMjICAgIyMjICAjIyMgICAjIyMNCiMjIyMjIyMjIyAgIyMjICAgICMjIyAgIyMjICAgICMjIyAgIyMjICAgICMjIyAgIyMjIyMjIyMjICAjIyMjIyMjIyAgIyMjIyMjIyMjICMjIyMjIyMjIyAgIyMjIyMjIyMjDQojIyMjIyMjIyMgICMjIyAgICAjIyMgICMjIyAgICAjIyMgICMjIyAgICAjIyMgICMjIyMjIyMjIyAgIyMjIyMjIyMgICMjIyMjIyMjIyAjIyMjIyMjIyMgICMjIyMjIyMjIw0KDQokbGFuZ1snY2hhbmdlbG9nJ10gPSA8PDwnRU9EJw0KDQo8aDM+VmVyc2lvbiAxLjEuMSAtIDE3SnVuMTk8L2gzPg0KPHVsPg0KICAgPGxpPm1pbm9yIGJ1ZyBmaXggaW4gaGVscDwvbGk+DQo8L3VsPg0KPGJyPg0KDQo8aDM+VmVyc2lvbiAxLjEgLSAxNE1hcjE5PC9oMz4NCjx1bD4NCiAgIDxsaT5hZGRlZCBub21pbmlmeSBwYXJhbWV0ZXI8L2xpPg0KICAgPGxpPkV4dHJhIGhlbHAgbm90ZXMgZm9yIGVkaXRDb250ZW50VGFiczwvbGk+DQo8L3VsPg0KPGJyPg0KDQo8aDM+VmVyc2lvbiAxLjAgLSAxNkZlYjE5PC9oMz4NCjx1bD4NCiAgIDxsaT5maXJzdCBwdWJsaWMgcmVsZWFzZTwvbGk+DQo8L3VsPg0KPGJyPg0KDQpFT0Q7DQoNCg0K]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lang/LICENCE.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFV0aWxpdGllcw0KIyBBdXRob3I6IENocmlzIFRheWxvcg0KIyBDb3B5cmlnaHQ6IChDKSAyMDE5IENocmlzIFRheWxvciwgY2hyaXNAYmlubm92YXRpdmUuY28udWsNCiMgTW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvdXRpbGl0aWVzDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMTkgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24gKGNvcHlyaWdodEBjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMNCiMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7DQojIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMNCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uDQojIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQ0KICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNw0KDQogQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiA8aHR0cDovL2ZzZi5vcmcvPg0KIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcw0KIG9mIHRoaXMgbGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUNCg0KICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcg0Kc29mdHdhcmUgYW5kIG90aGVyIGtpbmRzIG9mIHdvcmtzLg0KDQogIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhbmQgb3RoZXIgcHJhY3RpY2FsIHdvcmtzIGFyZSBkZXNpZ25lZA0KdG8gdGFrZSBhd2F5IHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIHRoZSB3b3Jrcy4gIEJ5IGNvbnRyYXN0LA0KdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8NCnNoYXJlIGFuZCBjaGFuZ2UgYWxsIHZlcnNpb25zIG9mIGEgcHJvZ3JhbS0tdG8gbWFrZSBzdXJlIGl0IHJlbWFpbnMgZnJlZQ0Kc29mdHdhcmUgZm9yIGFsbCBpdHMgdXNlcnMuICBXZSwgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgdXNlIHRoZQ0KR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vc3Qgb2Ygb3VyIHNvZnR3YXJlOyBpdCBhcHBsaWVzIGFsc28gdG8NCmFueSBvdGhlciB3b3JrIHJlbGVhc2VkIHRoaXMgd2F5IGJ5IGl0cyBhdXRob3JzLiAgWW91IGNhbiBhcHBseSBpdCB0bw0KeW91ciBwcm9ncmFtcywgdG9vLg0KDQogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QNCnByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UNCmhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBmb3INCnRoZW0gaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQgaWYgeW91DQp3YW50IGl0LCB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2UgcGllY2VzIG9mIGl0IGluIG5ldw0KZnJlZSBwcm9ncmFtcywgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuDQoNCiAgVG8gcHJvdGVjdCB5b3VyIHJpZ2h0cywgd2UgbmVlZCB0byBwcmV2ZW50IG90aGVycyBmcm9tIGRlbnlpbmcgeW91DQp0aGVzZSByaWdodHMgb3IgYXNraW5nIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4gIFRoZXJlZm9yZSwgeW91IGhhdmUNCmNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZg0KeW91IG1vZGlmeSBpdDogcmVzcG9uc2liaWxpdGllcyB0byByZXNwZWN0IHRoZSBmcmVlZG9tIG9mIG90aGVycy4NCg0KICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyDQpncmF0aXMgb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBwYXNzIG9uIHRvIHRoZSByZWNpcGllbnRzIHRoZSBzYW1lDQpmcmVlZG9tcyB0aGF0IHlvdSByZWNlaXZlZC4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZQ0Kb3IgY2FuIGdldCB0aGUgc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkNCmtub3cgdGhlaXIgcmlnaHRzLg0KDQogIERldmVsb3BlcnMgdGhhdCB1c2UgdGhlIEdOVSBHUEwgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczoNCigxKSBhc3NlcnQgY29weXJpZ2h0IG9uIHRoZSBzb2Z0d2FyZSwgYW5kICgyKSBvZmZlciB5b3UgdGhpcyBMaWNlbnNlDQpnaXZpbmcgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IGl0Lg0KDQogIEZvciB0aGUgZGV2ZWxvcGVycycgYW5kIGF1dGhvcnMnIHByb3RlY3Rpb24sIHRoZSBHUEwgY2xlYXJseSBleHBsYWlucw0KdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlIHNvZnR3YXJlLiAgRm9yIGJvdGggdXNlcnMnIGFuZA0KYXV0aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIGJlIG1hcmtlZCBhcw0KY2hhbmdlZCwgc28gdGhhdCB0aGVpciBwcm9ibGVtcyB3aWxsIG5vdCBiZSBhdHRyaWJ1dGVkIGVycm9uZW91c2x5IHRvDQphdXRob3JzIG9mIHByZXZpb3VzIHZlcnNpb25zLg0KDQogIFNvbWUgZGV2aWNlcyBhcmUgZGVzaWduZWQgdG8gZGVueSB1c2VycyBhY2Nlc3MgdG8gaW5zdGFsbCBvciBydW4NCm1vZGlmaWVkIHZlcnNpb25zIG9mIHRoZSBzb2Z0d2FyZSBpbnNpZGUgdGhlbSwgYWx0aG91Z2ggdGhlIG1hbnVmYWN0dXJlcg0KY2FuIGRvIHNvLiAgVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBhaW0gb2YNCnByb3RlY3RpbmcgdXNlcnMnIGZyZWVkb20gdG8gY2hhbmdlIHRoZSBzb2Z0d2FyZS4gIFRoZSBzeXN0ZW1hdGljDQpwYXR0ZXJuIG9mIHN1Y2ggYWJ1c2Ugb2NjdXJzIGluIHRoZSBhcmVhIG9mIHByb2R1Y3RzIGZvciBpbmRpdmlkdWFscyB0bw0KdXNlLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgaXQgaXMgbW9zdCB1bmFjY2VwdGFibGUuICBUaGVyZWZvcmUsIHdlDQpoYXZlIGRlc2lnbmVkIHRoaXMgdmVyc2lvbiBvZiB0aGUgR1BMIHRvIHByb2hpYml0IHRoZSBwcmFjdGljZSBmb3IgdGhvc2UNCnByb2R1Y3RzLiAgSWYgc3VjaCBwcm9ibGVtcyBhcmlzZSBzdWJzdGFudGlhbGx5IGluIG90aGVyIGRvbWFpbnMsIHdlDQpzdGFuZCByZWFkeSB0byBleHRlbmQgdGhpcyBwcm92aXNpb24gdG8gdGhvc2UgZG9tYWlucyBpbiBmdXR1cmUgdmVyc2lvbnMNCm9mIHRoZSBHUEwsIGFzIG5lZWRlZCB0byBwcm90ZWN0IHRoZSBmcmVlZG9tIG9mIHVzZXJzLg0KDQogIEZpbmFsbHksIGV2ZXJ5IHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuDQpTdGF0ZXMgc2hvdWxkIG5vdCBhbGxvdyBwYXRlbnRzIHRvIHJlc3RyaWN0IGRldmVsb3BtZW50IGFuZCB1c2Ugb2YNCnNvZnR3YXJlIG9uIGdlbmVyYWwtcHVycG9zZSBjb21wdXRlcnMsIGJ1dCBpbiB0aG9zZSB0aGF0IGRvLCB3ZSB3aXNoIHRvDQphdm9pZCB0aGUgc3BlY2lhbCBkYW5nZXIgdGhhdCBwYXRlbnRzIGFwcGxpZWQgdG8gYSBmcmVlIHByb2dyYW0gY291bGQNCm1ha2UgaXQgZWZmZWN0aXZlbHkgcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHRoZSBHUEwgYXNzdXJlcyB0aGF0DQpwYXRlbnRzIGNhbm5vdCBiZSB1c2VkIHRvIHJlbmRlciB0aGUgcHJvZ3JhbSBub24tZnJlZS4NCg0KICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZA0KbW9kaWZpY2F0aW9uIGZvbGxvdy4NCg0KICAgICAgICAgICAgICAgICAgICAgICBURVJNUyBBTkQgQ09ORElUSU9OUw0KDQogIDAuIERlZmluaXRpb25zLg0KDQogICJUaGlzIExpY2Vuc2UiIHJlZmVycyB0byB2ZXJzaW9uIDMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLg0KDQogICJDb3B5cmlnaHQiIGFsc28gbWVhbnMgY29weXJpZ2h0LWxpa2UgbGF3cyB0aGF0IGFwcGx5IHRvIG90aGVyIGtpbmRzIG9mDQp3b3Jrcywgc3VjaCBhcyBzZW1pY29uZHVjdG9yIG1hc2tzLg0KDQogICJUaGUgUHJvZ3JhbSIgcmVmZXJzIHRvIGFueSBjb3B5cmlnaHRhYmxlIHdvcmsgbGljZW5zZWQgdW5kZXIgdGhpcw0KTGljZW5zZS4gIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLiAgIkxpY2Vuc2VlcyIgYW5kDQoicmVjaXBpZW50cyIgbWF5IGJlIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMuDQoNCiAgVG8gIm1vZGlmeSIgYSB3b3JrIG1lYW5zIHRvIGNvcHkgZnJvbSBvciBhZGFwdCBhbGwgb3IgcGFydCBvZiB0aGUgd29yaw0KaW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQgcGVybWlzc2lvbiwgb3RoZXIgdGhhbiB0aGUgbWFraW5nIG9mIGFuDQpleGFjdCBjb3B5LiAgVGhlIHJlc3VsdGluZyB3b3JrIGlzIGNhbGxlZCBhICJtb2RpZmllZCB2ZXJzaW9uIiBvZiB0aGUNCmVhcmxpZXIgd29yayBvciBhIHdvcmsgImJhc2VkIG9uIiB0aGUgZWFybGllciB3b3JrLg0KDQogIEEgImNvdmVyZWQgd29yayIgbWVhbnMgZWl0aGVyIHRoZSB1bm1vZGlmaWVkIFByb2dyYW0gb3IgYSB3b3JrIGJhc2VkDQpvbiB0aGUgUHJvZ3JhbS4NCg0KICBUbyAicHJvcGFnYXRlIiBhIHdvcmsgbWVhbnMgdG8gZG8gYW55dGhpbmcgd2l0aCBpdCB0aGF0LCB3aXRob3V0DQpwZXJtaXNzaW9uLCB3b3VsZCBtYWtlIHlvdSBkaXJlY3RseSBvciBzZWNvbmRhcmlseSBsaWFibGUgZm9yDQppbmZyaW5nZW1lbnQgdW5kZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGENCmNvbXB1dGVyIG9yIG1vZGlmeWluZyBhIHByaXZhdGUgY29weS4gIFByb3BhZ2F0aW9uIGluY2x1ZGVzIGNvcHlpbmcsDQpkaXN0cmlidXRpb24gKHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24pLCBtYWtpbmcgYXZhaWxhYmxlIHRvIHRoZQ0KcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJpZXMgb3RoZXIgYWN0aXZpdGllcyBhcyB3ZWxsLg0KDQogIFRvICJjb252ZXkiIGEgd29yayBtZWFucyBhbnkga2luZCBvZiBwcm9wYWdhdGlvbiB0aGF0IGVuYWJsZXMgb3RoZXINCnBhcnRpZXMgdG8gbWFrZSBvciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24gd2l0aCBhIHVzZXIgdGhyb3VnaA0KYSBjb21wdXRlciBuZXR3b3JrLCB3aXRoIG5vIHRyYW5zZmVyIG9mIGEgY29weSwgaXMgbm90IGNvbnZleWluZy4NCg0KICBBbiBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZSBkaXNwbGF5cyAiQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyINCnRvIHRoZSBleHRlbnQgdGhhdCBpdCBpbmNsdWRlcyBhIGNvbnZlbmllbnQgYW5kIHByb21pbmVudGx5IHZpc2libGUNCmZlYXR1cmUgdGhhdCAoMSkgZGlzcGxheXMgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSwgYW5kICgyKQ0KdGVsbHMgdGhlIHVzZXIgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhlIHdvcmsgKGV4Y2VwdCB0byB0aGUNCmV4dGVudCB0aGF0IHdhcnJhbnRpZXMgYXJlIHByb3ZpZGVkKSwgdGhhdCBsaWNlbnNlZXMgbWF5IGNvbnZleSB0aGUNCndvcmsgdW5kZXIgdGhpcyBMaWNlbnNlLCBhbmQgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMgTGljZW5zZS4gIElmDQp0aGUgaW50ZXJmYWNlIHByZXNlbnRzIGEgbGlzdCBvZiB1c2VyIGNvbW1hbmRzIG9yIG9wdGlvbnMsIHN1Y2ggYXMgYQ0KbWVudSwgYSBwcm9taW5lbnQgaXRlbSBpbiB0aGUgbGlzdCBtZWV0cyB0aGlzIGNyaXRlcmlvbi4NCg0KICAxLiBTb3VyY2UgQ29kZS4NCg0KICBUaGUgInNvdXJjZSBjb2RlIiBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yaw0KZm9yIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgIk9iamVjdCBjb2RlIiBtZWFucyBhbnkgbm9uLXNvdXJjZQ0KZm9ybSBvZiBhIHdvcmsuDQoNCiAgQSAiU3RhbmRhcmQgSW50ZXJmYWNlIiBtZWFucyBhbiBpbnRlcmZhY2UgdGhhdCBlaXRoZXIgaXMgYW4gb2ZmaWNpYWwNCnN0YW5kYXJkIGRlZmluZWQgYnkgYSByZWNvZ25pemVkIHN0YW5kYXJkcyBib2R5LCBvciwgaW4gdGhlIGNhc2Ugb2YNCmludGVyZmFjZXMgc3BlY2lmaWVkIGZvciBhIHBhcnRpY3VsYXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIG9uZSB0aGF0DQppcyB3aWRlbHkgdXNlZCBhbW9uZyBkZXZlbG9wZXJzIHdvcmtpbmcgaW4gdGhhdCBsYW5ndWFnZS4NCg0KICBUaGUgIlN5c3RlbSBMaWJyYXJpZXMiIG9mIGFuIGV4ZWN1dGFibGUgd29yayBpbmNsdWRlIGFueXRoaW5nLCBvdGhlcg0KdGhhbiB0aGUgd29yayBhcyBhIHdob2xlLCB0aGF0IChhKSBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsIGZvcm0gb2YNCnBhY2thZ2luZyBhIE1ham9yIENvbXBvbmVudCwgYnV0IHdoaWNoIGlzIG5vdCBwYXJ0IG9mIHRoYXQgTWFqb3INCkNvbXBvbmVudCwgYW5kIChiKSBzZXJ2ZXMgb25seSB0byBlbmFibGUgdXNlIG9mIHRoZSB3b3JrIHdpdGggdGhhdA0KTWFqb3IgQ29tcG9uZW50LCBvciB0byBpbXBsZW1lbnQgYSBTdGFuZGFyZCBJbnRlcmZhY2UgZm9yIHdoaWNoIGFuDQppbXBsZW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgdG8gdGhlIHB1YmxpYyBpbiBzb3VyY2UgY29kZSBmb3JtLiAgQQ0KIk1ham9yIENvbXBvbmVudCIsIGluIHRoaXMgY29udGV4dCwgbWVhbnMgYSBtYWpvciBlc3NlbnRpYWwgY29tcG9uZW50DQooa2VybmVsLCB3aW5kb3cgc3lzdGVtLCBhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVtDQooaWYgYW55KSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSB3b3JrIHJ1bnMsIG9yIGEgY29tcGlsZXIgdXNlZCB0bw0KcHJvZHVjZSB0aGUgd29yaywgb3IgYW4gb2JqZWN0IGNvZGUgaW50ZXJwcmV0ZXIgdXNlZCB0byBydW4gaXQuDQoNCiAgVGhlICJDb3JyZXNwb25kaW5nIFNvdXJjZSIgZm9yIGEgd29yayBpbiBvYmplY3QgY29kZSBmb3JtIG1lYW5zIGFsbA0KdGhlIHNvdXJjZSBjb2RlIG5lZWRlZCB0byBnZW5lcmF0ZSwgaW5zdGFsbCwgYW5kIChmb3IgYW4gZXhlY3V0YWJsZQ0Kd29yaykgcnVuIHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3JrLCBpbmNsdWRpbmcgc2NyaXB0cyB0bw0KY29udHJvbCB0aG9zZSBhY3Rpdml0aWVzLiAgSG93ZXZlciwgaXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgd29yaydzDQpTeXN0ZW0gTGlicmFyaWVzLCBvciBnZW5lcmFsLXB1cnBvc2UgdG9vbHMgb3IgZ2VuZXJhbGx5IGF2YWlsYWJsZSBmcmVlDQpwcm9ncmFtcyB3aGljaCBhcmUgdXNlZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZpdGllcyBidXQNCndoaWNoIGFyZSBub3QgcGFydCBvZiB0aGUgd29yay4gIEZvciBleGFtcGxlLCBDb3JyZXNwb25kaW5nIFNvdXJjZQ0KaW5jbHVkZXMgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMgYXNzb2NpYXRlZCB3aXRoIHNvdXJjZSBmaWxlcyBmb3INCnRoZSB3b3JrLCBhbmQgdGhlIHNvdXJjZSBjb2RlIGZvciBzaGFyZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQ0KbGlua2VkIHN1YnByb2dyYW1zIHRoYXQgdGhlIHdvcmsgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHJlcXVpcmUsDQpzdWNoIGFzIGJ5IGludGltYXRlIGRhdGEgY29tbXVuaWNhdGlvbiBvciBjb250cm9sIGZsb3cgYmV0d2VlbiB0aG9zZQ0Kc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3b3JrLg0KDQogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgdXNlcnMNCmNhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgQ29ycmVzcG9uZGluZw0KU291cmNlLg0KDQogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgYSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdA0Kc2FtZSB3b3JrLg0KDQogIDIuIEJhc2ljIFBlcm1pc3Npb25zLg0KDQogIEFsbCByaWdodHMgZ3JhbnRlZCB1bmRlciB0aGlzIExpY2Vuc2UgYXJlIGdyYW50ZWQgZm9yIHRoZSB0ZXJtIG9mDQpjb3B5cmlnaHQgb24gdGhlIFByb2dyYW0sIGFuZCBhcmUgaXJyZXZvY2FibGUgcHJvdmlkZWQgdGhlIHN0YXRlZA0KY29uZGl0aW9ucyBhcmUgbWV0LiAgVGhpcyBMaWNlbnNlIGV4cGxpY2l0bHkgYWZmaXJtcyB5b3VyIHVubGltaXRlZA0KcGVybWlzc2lvbiB0byBydW4gdGhlIHVubW9kaWZpZWQgUHJvZ3JhbS4gIFRoZSBvdXRwdXQgZnJvbSBydW5uaW5nIGENCmNvdmVyZWQgd29yayBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSBvbmx5IGlmIHRoZSBvdXRwdXQsIGdpdmVuIGl0cw0KY29udGVudCwgY29uc3RpdHV0ZXMgYSBjb3ZlcmVkIHdvcmsuICBUaGlzIExpY2Vuc2UgYWNrbm93bGVkZ2VzIHlvdXINCnJpZ2h0cyBvZiBmYWlyIHVzZSBvciBvdGhlciBlcXVpdmFsZW50LCBhcyBwcm92aWRlZCBieSBjb3B5cmlnaHQgbGF3Lg0KDQogIFlvdSBtYXkgbWFrZSwgcnVuIGFuZCBwcm9wYWdhdGUgY292ZXJlZCB3b3JrcyB0aGF0IHlvdSBkbyBub3QNCmNvbnZleSwgd2l0aG91dCBjb25kaXRpb25zIHNvIGxvbmcgYXMgeW91ciBsaWNlbnNlIG90aGVyd2lzZSByZW1haW5zDQppbiBmb3JjZS4gIFlvdSBtYXkgY29udmV5IGNvdmVyZWQgd29ya3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBwdXJwb3NlDQpvZiBoYXZpbmcgdGhlbSBtYWtlIG1vZGlmaWNhdGlvbnMgZXhjbHVzaXZlbHkgZm9yIHlvdSwgb3IgcHJvdmlkZSB5b3UNCndpdGggZmFjaWxpdGllcyBmb3IgcnVubmluZyB0aG9zZSB3b3JrcywgcHJvdmlkZWQgdGhhdCB5b3UgY29tcGx5IHdpdGgNCnRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgaW4gY29udmV5aW5nIGFsbCBtYXRlcmlhbCBmb3Igd2hpY2ggeW91IGRvDQpub3QgY29udHJvbCBjb3B5cmlnaHQuICBUaG9zZSB0aHVzIG1ha2luZyBvciBydW5uaW5nIHRoZSBjb3ZlcmVkIHdvcmtzDQpmb3IgeW91IG11c3QgZG8gc28gZXhjbHVzaXZlbHkgb24geW91ciBiZWhhbGYsIHVuZGVyIHlvdXIgZGlyZWN0aW9uDQphbmQgY29udHJvbCwgb24gdGVybXMgdGhhdCBwcm9oaWJpdCB0aGVtIGZyb20gbWFraW5nIGFueSBjb3BpZXMgb2YNCnlvdXIgY29weXJpZ2h0ZWQgbWF0ZXJpYWwgb3V0c2lkZSB0aGVpciByZWxhdGlvbnNoaXAgd2l0aCB5b3UuDQoNCiAgQ29udmV5aW5nIHVuZGVyIGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIGlzIHBlcm1pdHRlZCBzb2xlbHkgdW5kZXINCnRoZSBjb25kaXRpb25zIHN0YXRlZCBiZWxvdy4gIFN1YmxpY2Vuc2luZyBpcyBub3QgYWxsb3dlZDsgc2VjdGlvbiAxMA0KbWFrZXMgaXQgdW5uZWNlc3NhcnkuDQoNCiAgMy4gUHJvdGVjdGluZyBVc2VycycgTGVnYWwgUmlnaHRzIEZyb20gQW50aS1DaXJjdW12ZW50aW9uIExhdy4NCg0KICBObyBjb3ZlcmVkIHdvcmsgc2hhbGwgYmUgZGVlbWVkIHBhcnQgb2YgYW4gZWZmZWN0aXZlIHRlY2hub2xvZ2ljYWwNCm1lYXN1cmUgdW5kZXIgYW55IGFwcGxpY2FibGUgbGF3IGZ1bGZpbGxpbmcgb2JsaWdhdGlvbnMgdW5kZXIgYXJ0aWNsZQ0KMTEgb2YgdGhlIFdJUE8gY29weXJpZ2h0IHRyZWF0eSBhZG9wdGVkIG9uIDIwIERlY2VtYmVyIDE5OTYsIG9yDQpzaW1pbGFyIGxhd3MgcHJvaGliaXRpbmcgb3IgcmVzdHJpY3RpbmcgY2lyY3VtdmVudGlvbiBvZiBzdWNoDQptZWFzdXJlcy4NCg0KICBXaGVuIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBhbnkgbGVnYWwgcG93ZXIgdG8gZm9yYmlkDQpjaXJjdW12ZW50aW9uIG9mIHRlY2hub2xvZ2ljYWwgbWVhc3VyZXMgdG8gdGhlIGV4dGVudCBzdWNoIGNpcmN1bXZlbnRpb24NCmlzIGVmZmVjdGVkIGJ5IGV4ZXJjaXNpbmcgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZSB3aXRoIHJlc3BlY3QgdG8NCnRoZSBjb3ZlcmVkIHdvcmssIGFuZCB5b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBvcGVyYXRpb24gb3INCm1vZGlmaWNhdGlvbiBvZiB0aGUgd29yayBhcyBhIG1lYW5zIG9mIGVuZm9yY2luZywgYWdhaW5zdCB0aGUgd29yaydzDQp1c2VycywgeW91ciBvciB0aGlyZCBwYXJ0aWVzJyBsZWdhbCByaWdodHMgdG8gZm9yYmlkIGNpcmN1bXZlbnRpb24gb2YNCnRlY2hub2xvZ2ljYWwgbWVhc3VyZXMuDQoNCiAgNC4gQ29udmV5aW5nIFZlcmJhdGltIENvcGllcy4NCg0KICBZb3UgbWF5IGNvbnZleSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIFByb2dyYW0ncyBzb3VyY2UgY29kZSBhcyB5b3UNCnJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91IGNvbnNwaWN1b3VzbHkgYW5kDQphcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2U7DQprZWVwIGludGFjdCBhbGwgbm90aWNlcyBzdGF0aW5nIHRoYXQgdGhpcyBMaWNlbnNlIGFuZCBhbnkNCm5vbi1wZXJtaXNzaXZlIHRlcm1zIGFkZGVkIGluIGFjY29yZCB3aXRoIHNlY3Rpb24gNyBhcHBseSB0byB0aGUgY29kZTsNCmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIG9mIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxsDQpyZWNpcGllbnRzIGEgY29weSBvZiB0aGlzIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4NCg0KICBZb3UgbWF5IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2ggY29weSB0aGF0IHlvdSBjb252ZXksDQphbmQgeW91IG1heSBvZmZlciBzdXBwb3J0IG9yIHdhcnJhbnR5IHByb3RlY3Rpb24gZm9yIGEgZmVlLg0KDQogIDUuIENvbnZleWluZyBNb2RpZmllZCBTb3VyY2UgVmVyc2lvbnMuDQoNCiAgWW91IG1heSBjb252ZXkgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBvciB0aGUgbW9kaWZpY2F0aW9ucyB0bw0KcHJvZHVjZSBpdCBmcm9tIHRoZSBQcm9ncmFtLCBpbiB0aGUgZm9ybSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUNCnRlcm1zIG9mIHNlY3Rpb24gNCwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOg0KDQogICAgYSkgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgeW91IG1vZGlmaWVkDQogICAgaXQsIGFuZCBnaXZpbmcgYSByZWxldmFudCBkYXRlLg0KDQogICAgYikgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgaXQgaXMNCiAgICByZWxlYXNlZCB1bmRlciB0aGlzIExpY2Vuc2UgYW5kIGFueSBjb25kaXRpb25zIGFkZGVkIHVuZGVyIHNlY3Rpb24NCiAgICA3LiAgVGhpcyByZXF1aXJlbWVudCBtb2RpZmllcyB0aGUgcmVxdWlyZW1lbnQgaW4gc2VjdGlvbiA0IHRvDQogICAgImtlZXAgaW50YWN0IGFsbCBub3RpY2VzIi4NCg0KICAgIGMpIFlvdSBtdXN0IGxpY2Vuc2UgdGhlIGVudGlyZSB3b3JrLCBhcyBhIHdob2xlLCB1bmRlciB0aGlzDQogICAgTGljZW5zZSB0byBhbnlvbmUgd2hvIGNvbWVzIGludG8gcG9zc2Vzc2lvbiBvZiBhIGNvcHkuICBUaGlzDQogICAgTGljZW5zZSB3aWxsIHRoZXJlZm9yZSBhcHBseSwgYWxvbmcgd2l0aCBhbnkgYXBwbGljYWJsZSBzZWN0aW9uIDcNCiAgICBhZGRpdGlvbmFsIHRlcm1zLCB0byB0aGUgd2hvbGUgb2YgdGhlIHdvcmssIGFuZCBhbGwgaXRzIHBhcnRzLA0KICAgIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkgYXJlIHBhY2thZ2VkLiAgVGhpcyBMaWNlbnNlIGdpdmVzIG5vDQogICAgcGVybWlzc2lvbiB0byBsaWNlbnNlIHRoZSB3b3JrIGluIGFueSBvdGhlciB3YXksIGJ1dCBpdCBkb2VzIG5vdA0KICAgIGludmFsaWRhdGUgc3VjaCBwZXJtaXNzaW9uIGlmIHlvdSBoYXZlIHNlcGFyYXRlbHkgcmVjZWl2ZWQgaXQuDQoNCiAgICBkKSBJZiB0aGUgd29yayBoYXMgaW50ZXJhY3RpdmUgdXNlciBpbnRlcmZhY2VzLCBlYWNoIG11c3QgZGlzcGxheQ0KICAgIEFwcHJvcHJpYXRlIExlZ2FsIE5vdGljZXM7IGhvd2V2ZXIsIGlmIHRoZSBQcm9ncmFtIGhhcyBpbnRlcmFjdGl2ZQ0KICAgIGludGVyZmFjZXMgdGhhdCBkbyBub3QgZGlzcGxheSBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzLCB5b3VyDQogICAgd29yayBuZWVkIG5vdCBtYWtlIHRoZW0gZG8gc28uDQoNCiAgQSBjb21waWxhdGlvbiBvZiBhIGNvdmVyZWQgd29yayB3aXRoIG90aGVyIHNlcGFyYXRlIGFuZCBpbmRlcGVuZGVudA0Kd29ya3MsIHdoaWNoIGFyZSBub3QgYnkgdGhlaXIgbmF0dXJlIGV4dGVuc2lvbnMgb2YgdGhlIGNvdmVyZWQgd29yaywNCmFuZCB3aGljaCBhcmUgbm90IGNvbWJpbmVkIHdpdGggaXQgc3VjaCBhcyB0byBmb3JtIGEgbGFyZ2VyIHByb2dyYW0sDQppbiBvciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMgY2FsbGVkIGFuDQoiYWdncmVnYXRlIiBpZiB0aGUgY29tcGlsYXRpb24gYW5kIGl0cyByZXN1bHRpbmcgY29weXJpZ2h0IGFyZSBub3QNCnVzZWQgdG8gbGltaXQgdGhlIGFjY2VzcyBvciBsZWdhbCByaWdodHMgb2YgdGhlIGNvbXBpbGF0aW9uJ3MgdXNlcnMNCmJleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNvdmVyZWQgd29yaw0KaW4gYW4gYWdncmVnYXRlIGRvZXMgbm90IGNhdXNlIHRoaXMgTGljZW5zZSB0byBhcHBseSB0byB0aGUgb3RoZXINCnBhcnRzIG9mIHRoZSBhZ2dyZWdhdGUuDQoNCiAgNi4gQ29udmV5aW5nIE5vbi1Tb3VyY2UgRm9ybXMuDQoNCiAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsgaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciB0aGUgdGVybXMNCm9mIHNlY3Rpb25zIDQgYW5kIDUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gY29udmV5IHRoZQ0KbWFjaGluZS1yZWFkYWJsZSBDb3JyZXNwb25kaW5nIFNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLA0KaW4gb25lIG9mIHRoZXNlIHdheXM6DQoNCiAgICBhKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGluLCBvciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0DQogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSB0aGUNCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBmaXhlZCBvbiBhIGR1cmFibGUgcGh5c2ljYWwgbWVkaXVtDQogICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UuDQoNCiAgICBiKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGluLCBvciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0DQogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSBhDQogICAgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlIHllYXJzIGFuZCB2YWxpZCBmb3IgYXMNCiAgICBsb25nIGFzIHlvdSBvZmZlciBzcGFyZSBwYXJ0cyBvciBjdXN0b21lciBzdXBwb3J0IGZvciB0aGF0IHByb2R1Y3QNCiAgICBtb2RlbCwgdG8gZ2l2ZSBhbnlvbmUgd2hvIHBvc3Nlc3NlcyB0aGUgb2JqZWN0IGNvZGUgZWl0aGVyICgxKSBhDQogICAgY29weSBvZiB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGFsbCB0aGUgc29mdHdhcmUgaW4gdGhlDQogICAgcHJvZHVjdCB0aGF0IGlzIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLCBvbiBhIGR1cmFibGUgcGh5c2ljYWwNCiAgICBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UsIGZvciBhIHByaWNlIG5vDQogICAgbW9yZSB0aGFuIHlvdXIgcmVhc29uYWJsZSBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzDQogICAgY29udmV5aW5nIG9mIHNvdXJjZSwgb3IgKDIpIGFjY2VzcyB0byBjb3B5IHRoZQ0KICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGZyb20gYSBuZXR3b3JrIHNlcnZlciBhdCBubyBjaGFyZ2UuDQoNCiAgICBjKSBDb252ZXkgaW5kaXZpZHVhbCBjb3BpZXMgb2YgdGhlIG9iamVjdCBjb2RlIHdpdGggYSBjb3B5IG9mIHRoZQ0KICAgIHdyaXR0ZW4gb2ZmZXIgdG8gcHJvdmlkZSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBUaGlzDQogICAgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9uYWxseSBhbmQgbm9uY29tbWVyY2lhbGx5LCBhbmQNCiAgICBvbmx5IGlmIHlvdSByZWNlaXZlZCB0aGUgb2JqZWN0IGNvZGUgd2l0aCBzdWNoIGFuIG9mZmVyLCBpbiBhY2NvcmQNCiAgICB3aXRoIHN1YnNlY3Rpb24gNmIuDQoNCiAgICBkKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGJ5IG9mZmVyaW5nIGFjY2VzcyBmcm9tIGEgZGVzaWduYXRlZA0KICAgIHBsYWNlIChncmF0aXMgb3IgZm9yIGEgY2hhcmdlKSwgYW5kIG9mZmVyIGVxdWl2YWxlbnQgYWNjZXNzIHRvIHRoZQ0KICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGluIHRoZSBzYW1lIHdheSB0aHJvdWdoIHRoZSBzYW1lIHBsYWNlIGF0IG5vDQogICAgZnVydGhlciBjaGFyZ2UuICBZb3UgbmVlZCBub3QgcmVxdWlyZSByZWNpcGllbnRzIHRvIGNvcHkgdGhlDQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuICBJZiB0aGUgcGxhY2UgdG8NCiAgICBjb3B5IHRoZSBvYmplY3QgY29kZSBpcyBhIG5ldHdvcmsgc2VydmVyLCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UNCiAgICBtYXkgYmUgb24gYSBkaWZmZXJlbnQgc2VydmVyIChvcGVyYXRlZCBieSB5b3Ugb3IgYSB0aGlyZCBwYXJ0eSkNCiAgICB0aGF0IHN1cHBvcnRzIGVxdWl2YWxlbnQgY29weWluZyBmYWNpbGl0aWVzLCBwcm92aWRlZCB5b3UgbWFpbnRhaW4NCiAgICBjbGVhciBkaXJlY3Rpb25zIG5leHQgdG8gdGhlIG9iamVjdCBjb2RlIHNheWluZyB3aGVyZSB0byBmaW5kIHRoZQ0KICAgIENvcnJlc3BvbmRpbmcgU291cmNlLiAgUmVnYXJkbGVzcyBvZiB3aGF0IHNlcnZlciBob3N0cyB0aGUNCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSwgeW91IHJlbWFpbiBvYmxpZ2F0ZWQgdG8gZW5zdXJlIHRoYXQgaXQgaXMNCiAgICBhdmFpbGFibGUgZm9yIGFzIGxvbmcgYXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLg0KDQogICAgZSkgQ29udmV5IHRoZSBvYmplY3QgY29kZSB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uLCBwcm92aWRlZA0KICAgIHlvdSBpbmZvcm0gb3RoZXIgcGVlcnMgd2hlcmUgdGhlIG9iamVjdCBjb2RlIGFuZCBDb3JyZXNwb25kaW5nDQogICAgU291cmNlIG9mIHRoZSB3b3JrIGFyZSBiZWluZyBvZmZlcmVkIHRvIHRoZSBnZW5lcmFsIHB1YmxpYyBhdCBubw0KICAgIGNoYXJnZSB1bmRlciBzdWJzZWN0aW9uIDZkLg0KDQogIEEgc2VwYXJhYmxlIHBvcnRpb24gb2YgdGhlIG9iamVjdCBjb2RlLCB3aG9zZSBzb3VyY2UgY29kZSBpcyBleGNsdWRlZA0KZnJvbSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgYXMgYSBTeXN0ZW0gTGlicmFyeSwgbmVlZCBub3QgYmUNCmluY2x1ZGVkIGluIGNvbnZleWluZyB0aGUgb2JqZWN0IGNvZGUgd29yay4NCg0KICBBICJVc2VyIFByb2R1Y3QiIGlzIGVpdGhlciAoMSkgYSAiY29uc3VtZXIgcHJvZHVjdCIsIHdoaWNoIG1lYW5zIGFueQ0KdGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkgdXNlZCBmb3IgcGVyc29uYWwsIGZhbWlseSwNCm9yIGhvdXNlaG9sZCBwdXJwb3Nlcywgb3IgKDIpIGFueXRoaW5nIGRlc2lnbmVkIG9yIHNvbGQgZm9yIGluY29ycG9yYXRpb24NCmludG8gYSBkd2VsbGluZy4gIEluIGRldGVybWluaW5nIHdoZXRoZXIgYSBwcm9kdWN0IGlzIGEgY29uc3VtZXIgcHJvZHVjdCwNCmRvdWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiAgRm9yIGEgcGFydGljdWxhcg0KcHJvZHVjdCByZWNlaXZlZCBieSBhIHBhcnRpY3VsYXIgdXNlciwgIm5vcm1hbGx5IHVzZWQiIHJlZmVycyB0byBhDQp0eXBpY2FsIG9yIGNvbW1vbiB1c2Ugb2YgdGhhdCBjbGFzcyBvZiBwcm9kdWN0LCByZWdhcmRsZXNzIG9mIHRoZSBzdGF0dXMNCm9mIHRoZSBwYXJ0aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGljdWxhciB1c2VyDQphY3R1YWxseSB1c2VzLCBvciBleHBlY3RzIG9yIGlzIGV4cGVjdGVkIHRvIHVzZSwgdGhlIHByb2R1Y3QuICBBIHByb2R1Y3QNCmlzIGEgY29uc3VtZXIgcHJvZHVjdCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHByb2R1Y3QgaGFzIHN1YnN0YW50aWFsDQpjb21tZXJjaWFsLCBpbmR1c3RyaWFsIG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJlc2VudA0KdGhlIG9ubHkgc2lnbmlmaWNhbnQgbW9kZSBvZiB1c2Ugb2YgdGhlIHByb2R1Y3QuDQoNCiAgIkluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiIgZm9yIGEgVXNlciBQcm9kdWN0IG1lYW5zIGFueSBtZXRob2RzLA0KcHJvY2VkdXJlcywgYXV0aG9yaXphdGlvbiBrZXlzLCBvciBvdGhlciBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBpbnN0YWxsDQphbmQgZXhlY3V0ZSBtb2RpZmllZCB2ZXJzaW9ucyBvZiBhIGNvdmVyZWQgd29yayBpbiB0aGF0IFVzZXIgUHJvZHVjdCBmcm9tDQphIG1vZGlmaWVkIHZlcnNpb24gb2YgaXRzIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhlIGluZm9ybWF0aW9uIG11c3QNCnN1ZmZpY2UgdG8gZW5zdXJlIHRoYXQgdGhlIGNvbnRpbnVlZCBmdW5jdGlvbmluZyBvZiB0aGUgbW9kaWZpZWQgb2JqZWN0DQpjb2RlIGlzIGluIG5vIGNhc2UgcHJldmVudGVkIG9yIGludGVyZmVyZWQgd2l0aCBzb2xlbHkgYmVjYXVzZQ0KbW9kaWZpY2F0aW9uIGhhcyBiZWVuIG1hZGUuDQoNCiAgSWYgeW91IGNvbnZleSBhbiBvYmplY3QgY29kZSB3b3JrIHVuZGVyIHRoaXMgc2VjdGlvbiBpbiwgb3Igd2l0aCwgb3INCnNwZWNpZmljYWxseSBmb3IgdXNlIGluLCBhIFVzZXIgUHJvZHVjdCwgYW5kIHRoZSBjb252ZXlpbmcgb2NjdXJzIGFzDQpwYXJ0IG9mIGEgdHJhbnNhY3Rpb24gaW4gd2hpY2ggdGhlIHJpZ2h0IG9mIHBvc3Nlc3Npb24gYW5kIHVzZSBvZiB0aGUNClVzZXIgUHJvZHVjdCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgcmVjaXBpZW50IGluIHBlcnBldHVpdHkgb3IgZm9yIGENCmZpeGVkIHRlcm0gKHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyYWN0ZXJpemVkKSwgdGhlDQpDb3JyZXNwb25kaW5nIFNvdXJjZSBjb252ZXllZCB1bmRlciB0aGlzIHNlY3Rpb24gbXVzdCBiZSBhY2NvbXBhbmllZA0KYnkgdGhlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbi4gIEJ1dCB0aGlzIHJlcXVpcmVtZW50IGRvZXMgbm90IGFwcGx5DQppZiBuZWl0aGVyIHlvdSBub3IgYW55IHRoaXJkIHBhcnR5IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gaW5zdGFsbA0KbW9kaWZpZWQgb2JqZWN0IGNvZGUgb24gdGhlIFVzZXIgUHJvZHVjdCAoZm9yIGV4YW1wbGUsIHRoZSB3b3JrIGhhcw0KYmVlbiBpbnN0YWxsZWQgaW4gUk9NKS4NCg0KICBUaGUgcmVxdWlyZW1lbnQgdG8gcHJvdmlkZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24gZG9lcyBub3QgaW5jbHVkZSBhDQpyZXF1aXJlbWVudCB0byBjb250aW51ZSB0byBwcm92aWRlIHN1cHBvcnQgc2VydmljZSwgd2FycmFudHksIG9yIHVwZGF0ZXMNCmZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQgYnkgdGhlIHJlY2lwaWVudCwgb3IgZm9yDQp0aGUgVXNlciBQcm9kdWN0IGluIHdoaWNoIGl0IGhhcyBiZWVuIG1vZGlmaWVkIG9yIGluc3RhbGxlZC4gIEFjY2VzcyB0byBhDQpuZXR3b3JrIG1heSBiZSBkZW5pZWQgd2hlbiB0aGUgbW9kaWZpY2F0aW9uIGl0c2VsZiBtYXRlcmlhbGx5IGFuZA0KYWR2ZXJzZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBvciB2aW9sYXRlcyB0aGUgcnVsZXMgYW5kDQpwcm90b2NvbHMgZm9yIGNvbW11bmljYXRpb24gYWNyb3NzIHRoZSBuZXR3b3JrLg0KDQogIENvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkLCBhbmQgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIHByb3ZpZGVkLA0KaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uIG11c3QgYmUgaW4gYSBmb3JtYXQgdGhhdCBpcyBwdWJsaWNseQ0KZG9jdW1lbnRlZCAoYW5kIHdpdGggYW4gaW1wbGVtZW50YXRpb24gYXZhaWxhYmxlIHRvIHRoZSBwdWJsaWMgaW4NCnNvdXJjZSBjb2RlIGZvcm0pLCBhbmQgbXVzdCByZXF1aXJlIG5vIHNwZWNpYWwgcGFzc3dvcmQgb3Iga2V5IGZvcg0KdW5wYWNraW5nLCByZWFkaW5nIG9yIGNvcHlpbmcuDQoNCiAgNy4gQWRkaXRpb25hbCBUZXJtcy4NCg0KICAiQWRkaXRpb25hbCBwZXJtaXNzaW9ucyIgYXJlIHRlcm1zIHRoYXQgc3VwcGxlbWVudCB0aGUgdGVybXMgb2YgdGhpcw0KTGljZW5zZSBieSBtYWtpbmcgZXhjZXB0aW9ucyBmcm9tIG9uZSBvciBtb3JlIG9mIGl0cyBjb25kaXRpb25zLg0KQWRkaXRpb25hbCBwZXJtaXNzaW9ucyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBlbnRpcmUgUHJvZ3JhbSBzaGFsbA0KYmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlIGluY2x1ZGVkIGluIHRoaXMgTGljZW5zZSwgdG8gdGhlIGV4dGVudA0KdGhhdCB0aGV5IGFyZSB2YWxpZCB1bmRlciBhcHBsaWNhYmxlIGxhdy4gIElmIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMNCmFwcGx5IG9ubHkgdG8gcGFydCBvZiB0aGUgUHJvZ3JhbSwgdGhhdCBwYXJ0IG1heSBiZSB1c2VkIHNlcGFyYXRlbHkNCnVuZGVyIHRob3NlIHBlcm1pc3Npb25zLCBidXQgdGhlIGVudGlyZSBQcm9ncmFtIHJlbWFpbnMgZ292ZXJuZWQgYnkNCnRoaXMgTGljZW5zZSB3aXRob3V0IHJlZ2FyZCB0byB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucy4NCg0KICBXaGVuIHlvdSBjb252ZXkgYSBjb3B5IG9mIGEgY292ZXJlZCB3b3JrLCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uDQpyZW1vdmUgYW55IGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgZnJvbSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQgb2YNCml0LiAgKEFkZGl0aW9uYWwgcGVybWlzc2lvbnMgbWF5IGJlIHdyaXR0ZW4gdG8gcmVxdWlyZSB0aGVpciBvd24NCnJlbW92YWwgaW4gY2VydGFpbiBjYXNlcyB3aGVuIHlvdSBtb2RpZnkgdGhlIHdvcmsuKSAgWW91IG1heSBwbGFjZQ0KYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlhbCwgYWRkZWQgYnkgeW91IHRvIGEgY292ZXJlZCB3b3JrLA0KZm9yIHdoaWNoIHlvdSBoYXZlIG9yIGNhbiBnaXZlIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBwZXJtaXNzaW9uLg0KDQogIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgZm9yIG1hdGVyaWFsIHlvdQ0KYWRkIHRvIGEgY292ZXJlZCB3b3JrLCB5b3UgbWF5IChpZiBhdXRob3JpemVkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVycyBvZg0KdGhhdCBtYXRlcmlhbCkgc3VwcGxlbWVudCB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlIHdpdGggdGVybXM6DQoNCiAgICBhKSBEaXNjbGFpbWluZyB3YXJyYW50eSBvciBsaW1pdGluZyBsaWFiaWxpdHkgZGlmZmVyZW50bHkgZnJvbSB0aGUNCiAgICB0ZXJtcyBvZiBzZWN0aW9ucyAxNSBhbmQgMTYgb2YgdGhpcyBMaWNlbnNlOyBvcg0KDQogICAgYikgUmVxdWlyaW5nIHByZXNlcnZhdGlvbiBvZiBzcGVjaWZpZWQgcmVhc29uYWJsZSBsZWdhbCBub3RpY2VzIG9yDQogICAgYXV0aG9yIGF0dHJpYnV0aW9ucyBpbiB0aGF0IG1hdGVyaWFsIG9yIGluIHRoZSBBcHByb3ByaWF0ZSBMZWdhbA0KICAgIE5vdGljZXMgZGlzcGxheWVkIGJ5IHdvcmtzIGNvbnRhaW5pbmcgaXQ7IG9yDQoNCiAgICBjKSBQcm9oaWJpdGluZyBtaXNyZXByZXNlbnRhdGlvbiBvZiB0aGUgb3JpZ2luIG9mIHRoYXQgbWF0ZXJpYWwsIG9yDQogICAgcmVxdWlyaW5nIHRoYXQgbW9kaWZpZWQgdmVyc2lvbnMgb2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4NCiAgICByZWFzb25hYmxlIHdheXMgYXMgZGlmZmVyZW50IGZyb20gdGhlIG9yaWdpbmFsIHZlcnNpb247IG9yDQoNCiAgICBkKSBMaW1pdGluZyB0aGUgdXNlIGZvciBwdWJsaWNpdHkgcHVycG9zZXMgb2YgbmFtZXMgb2YgbGljZW5zb3JzIG9yDQogICAgYXV0aG9ycyBvZiB0aGUgbWF0ZXJpYWw7IG9yDQoNCiAgICBlKSBEZWNsaW5pbmcgdG8gZ3JhbnQgcmlnaHRzIHVuZGVyIHRyYWRlbWFyayBsYXcgZm9yIHVzZSBvZiBzb21lDQogICAgdHJhZGUgbmFtZXMsIHRyYWRlbWFya3MsIG9yIHNlcnZpY2UgbWFya3M7IG9yDQoNCiAgICBmKSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29ycyBhbmQgYXV0aG9ycyBvZiB0aGF0DQogICAgbWF0ZXJpYWwgYnkgYW55b25lIHdobyBjb252ZXlzIHRoZSBtYXRlcmlhbCAob3IgbW9kaWZpZWQgdmVyc2lvbnMgb2YNCiAgICBpdCkgd2l0aCBjb250cmFjdHVhbCBhc3N1bXB0aW9ucyBvZiBsaWFiaWxpdHkgdG8gdGhlIHJlY2lwaWVudCwgZm9yDQogICAgYW55IGxpYWJpbGl0eSB0aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRpcmVjdGx5IGltcG9zZSBvbg0KICAgIHRob3NlIGxpY2Vuc29ycyBhbmQgYXV0aG9ycy4NCg0KICBBbGwgb3RoZXIgbm9uLXBlcm1pc3NpdmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJlZCAiZnVydGhlcg0KcmVzdHJpY3Rpb25zIiB3aXRoaW4gdGhlIG1lYW5pbmcgb2Ygc2VjdGlvbiAxMC4gIElmIHRoZSBQcm9ncmFtIGFzIHlvdQ0KcmVjZWl2ZWQgaXQsIG9yIGFueSBwYXJ0IG9mIGl0LCBjb250YWlucyBhIG5vdGljZSBzdGF0aW5nIHRoYXQgaXQgaXMNCmdvdmVybmVkIGJ5IHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIGEgdGVybSB0aGF0IGlzIGEgZnVydGhlcg0KcmVzdHJpY3Rpb24sIHlvdSBtYXkgcmVtb3ZlIHRoYXQgdGVybS4gIElmIGEgbGljZW5zZSBkb2N1bWVudCBjb250YWlucw0KYSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGJ1dCBwZXJtaXRzIHJlbGljZW5zaW5nIG9yIGNvbnZleWluZyB1bmRlciB0aGlzDQpMaWNlbnNlLCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQgd29yayBtYXRlcmlhbCBnb3Zlcm5lZCBieSB0aGUgdGVybXMNCm9mIHRoYXQgbGljZW5zZSBkb2N1bWVudCwgcHJvdmlkZWQgdGhhdCB0aGUgZnVydGhlciByZXN0cmljdGlvbiBkb2VzDQpub3Qgc3Vydml2ZSBzdWNoIHJlbGljZW5zaW5nIG9yIGNvbnZleWluZy4NCg0KICBJZiB5b3UgYWRkIHRlcm1zIHRvIGEgY292ZXJlZCB3b3JrIGluIGFjY29yZCB3aXRoIHRoaXMgc2VjdGlvbiwgeW91DQptdXN0IHBsYWNlLCBpbiB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzLCBhIHN0YXRlbWVudCBvZiB0aGUNCmFkZGl0aW9uYWwgdGVybXMgdGhhdCBhcHBseSB0byB0aG9zZSBmaWxlcywgb3IgYSBub3RpY2UgaW5kaWNhdGluZw0Kd2hlcmUgdG8gZmluZCB0aGUgYXBwbGljYWJsZSB0ZXJtcy4NCg0KICBBZGRpdGlvbmFsIHRlcm1zLCBwZXJtaXNzaXZlIG9yIG5vbi1wZXJtaXNzaXZlLCBtYXkgYmUgc3RhdGVkIGluIHRoZQ0KZm9ybSBvZiBhIHNlcGFyYXRlbHkgd3JpdHRlbiBsaWNlbnNlLCBvciBzdGF0ZWQgYXMgZXhjZXB0aW9uczsNCnRoZSBhYm92ZSByZXF1aXJlbWVudHMgYXBwbHkgZWl0aGVyIHdheS4NCg0KICA4LiBUZXJtaW5hdGlvbi4NCg0KICBZb3UgbWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9kaWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkNCnByb3ZpZGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEFueSBhdHRlbXB0IG90aGVyd2lzZSB0byBwcm9wYWdhdGUgb3INCm1vZGlmeSBpdCBpcyB2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlcg0KdGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZSB0aGlyZA0KcGFyYWdyYXBoIG9mIHNlY3Rpb24gMTEpLg0KDQogIEhvd2V2ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyDQpsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMgcmVpbnN0YXRlZCAoYSkNCnByb3Zpc2lvbmFsbHksIHVubGVzcyBhbmQgdW50aWwgdGhlIGNvcHlyaWdodCBob2xkZXIgZXhwbGljaXRseSBhbmQNCmZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQNCmhvbGRlciBmYWlscyB0byBub3RpZnkgeW91IG9mIHRoZSB2aW9sYXRpb24gYnkgc29tZSByZWFzb25hYmxlIG1lYW5zDQpwcmlvciB0byA2MCBkYXlzIGFmdGVyIHRoZSBjZXNzYXRpb24uDQoNCiAgTW9yZW92ZXIsIHlvdXIgbGljZW5zZSBmcm9tIGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzDQpyZWluc3RhdGVkIHBlcm1hbmVudGx5IGlmIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vdGlmaWVzIHlvdSBvZiB0aGUNCnZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUNCnJlY2VpdmVkIG5vdGljZSBvZiB2aW9sYXRpb24gb2YgdGhpcyBMaWNlbnNlIChmb3IgYW55IHdvcmspIGZyb20gdGhhdA0KY29weXJpZ2h0IGhvbGRlciwgYW5kIHlvdSBjdXJlIHRoZSB2aW9sYXRpb24gcHJpb3IgdG8gMzAgZGF5cyBhZnRlcg0KeW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuDQoNCiAgVGVybWluYXRpb24gb2YgeW91ciByaWdodHMgdW5kZXIgdGhpcyBzZWN0aW9uIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUNCmxpY2Vuc2VzIG9mIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcg0KdGhpcyBMaWNlbnNlLiAgSWYgeW91ciByaWdodHMgaGF2ZSBiZWVuIHRlcm1pbmF0ZWQgYW5kIG5vdCBwZXJtYW5lbnRseQ0KcmVpbnN0YXRlZCwgeW91IGRvIG5vdCBxdWFsaWZ5IHRvIHJlY2VpdmUgbmV3IGxpY2Vuc2VzIGZvciB0aGUgc2FtZQ0KbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC4NCg0KICA5LiBBY2NlcHRhbmNlIE5vdCBSZXF1aXJlZCBmb3IgSGF2aW5nIENvcGllcy4NCg0KICBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlIGluIG9yZGVyIHRvIHJlY2VpdmUgb3INCnJ1biBhIGNvcHkgb2YgdGhlIFByb2dyYW0uICBBbmNpbGxhcnkgcHJvcGFnYXRpb24gb2YgYSBjb3ZlcmVkIHdvcmsNCm9jY3VycmluZyBzb2xlbHkgYXMgYSBjb25zZXF1ZW5jZSBvZiB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uDQp0byByZWNlaXZlIGEgY29weSBsaWtld2lzZSBkb2VzIG5vdCByZXF1aXJlIGFjY2VwdGFuY2UuICBIb3dldmVyLA0Kbm90aGluZyBvdGhlciB0aGFuIHRoaXMgTGljZW5zZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gcHJvcGFnYXRlIG9yDQptb2RpZnkgYW55IGNvdmVyZWQgd29yay4gIFRoZXNlIGFjdGlvbnMgaW5mcmluZ2UgY29weXJpZ2h0IGlmIHlvdSBkbw0Kbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5IG1vZGlmeWluZyBvciBwcm9wYWdhdGluZyBhDQpjb3ZlcmVkIHdvcmssIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLg0KDQogIDEwLiBBdXRvbWF0aWMgTGljZW5zaW5nIG9mIERvd25zdHJlYW0gUmVjaXBpZW50cy4NCg0KICBFYWNoIHRpbWUgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5DQpyZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUgb3JpZ2luYWwgbGljZW5zb3JzLCB0byBydW4sIG1vZGlmeSBhbmQNCnByb3BhZ2F0ZSB0aGF0IHdvcmssIHN1YmplY3QgdG8gdGhpcyBMaWNlbnNlLiAgWW91IGFyZSBub3QgcmVzcG9uc2libGUNCmZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHdpdGggdGhpcyBMaWNlbnNlLg0KDQogIEFuICJlbnRpdHkgdHJhbnNhY3Rpb24iIGlzIGEgdHJhbnNhY3Rpb24gdHJhbnNmZXJyaW5nIGNvbnRyb2wgb2YgYW4NCm9yZ2FuaXphdGlvbiwgb3Igc3Vic3RhbnRpYWxseSBhbGwgYXNzZXRzIG9mIG9uZSwgb3Igc3ViZGl2aWRpbmcgYW4NCm9yZ2FuaXphdGlvbiwgb3IgbWVyZ2luZyBvcmdhbml6YXRpb25zLiAgSWYgcHJvcGFnYXRpb24gb2YgYSBjb3ZlcmVkDQp3b3JrIHJlc3VsdHMgZnJvbSBhbiBlbnRpdHkgdHJhbnNhY3Rpb24sIGVhY2ggcGFydHkgdG8gdGhhdA0KdHJhbnNhY3Rpb24gd2hvIHJlY2VpdmVzIGEgY29weSBvZiB0aGUgd29yayBhbHNvIHJlY2VpdmVzIHdoYXRldmVyDQpsaWNlbnNlcyB0byB0aGUgd29yayB0aGUgcGFydHkncyBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCBoYWQgb3IgY291bGQNCmdpdmUgdW5kZXIgdGhlIHByZXZpb3VzIHBhcmFncmFwaCwgcGx1cyBhIHJpZ2h0IHRvIHBvc3Nlc3Npb24gb2YgdGhlDQpDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBmcm9tIHRoZSBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCwgaWYNCnRoZSBwcmVkZWNlc3NvciBoYXMgaXQgb3IgY2FuIGdldCBpdCB3aXRoIHJlYXNvbmFibGUgZWZmb3J0cy4NCg0KICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25zIG9uIHRoZSBleGVyY2lzZSBvZiB0aGUNCnJpZ2h0cyBncmFudGVkIG9yIGFmZmlybWVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEZvciBleGFtcGxlLCB5b3UgbWF5DQpub3QgaW1wb3NlIGEgbGljZW5zZSBmZWUsIHJveWFsdHksIG9yIG90aGVyIGNoYXJnZSBmb3IgZXhlcmNpc2Ugb2YNCnJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGlnYXRpb24NCihpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0DQphbnkgcGF0ZW50IGNsYWltIGlzIGluZnJpbmdlZCBieSBtYWtpbmcsIHVzaW5nLCBzZWxsaW5nLCBvZmZlcmluZyBmb3INCnNhbGUsIG9yIGltcG9ydGluZyB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBpdC4NCg0KICAxMS4gUGF0ZW50cy4NCg0KICBBICJjb250cmlidXRvciIgaXMgYSBjb3B5cmlnaHQgaG9sZGVyIHdobyBhdXRob3JpemVzIHVzZSB1bmRlciB0aGlzDQpMaWNlbnNlIG9mIHRoZSBQcm9ncmFtIG9yIGEgd29yayBvbiB3aGljaCB0aGUgUHJvZ3JhbSBpcyBiYXNlZC4gIFRoZQ0Kd29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29udHJpYnV0b3IncyAiY29udHJpYnV0b3IgdmVyc2lvbiIuDQoNCiAgQSBjb250cmlidXRvcidzICJlc3NlbnRpYWwgcGF0ZW50IGNsYWltcyIgYXJlIGFsbCBwYXRlbnQgY2xhaW1zDQpvd25lZCBvciBjb250cm9sbGVkIGJ5IHRoZSBjb250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9yDQpoZXJlYWZ0ZXIgYWNxdWlyZWQsIHRoYXQgd291bGQgYmUgaW5mcmluZ2VkIGJ5IHNvbWUgbWFubmVyLCBwZXJtaXR0ZWQNCmJ5IHRoaXMgTGljZW5zZSwgb2YgbWFraW5nLCB1c2luZywgb3Igc2VsbGluZyBpdHMgY29udHJpYnV0b3IgdmVyc2lvbiwNCmJ1dCBkbyBub3QgaW5jbHVkZSBjbGFpbXMgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgb25seSBhcyBhDQpjb25zZXF1ZW5jZSBvZiBmdXJ0aGVyIG1vZGlmaWNhdGlvbiBvZiB0aGUgY29udHJpYnV0b3IgdmVyc2lvbi4gIEZvcg0KcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAiY29udHJvbCIgaW5jbHVkZXMgdGhlIHJpZ2h0IHRvIGdyYW50DQpwYXRlbnQgc3VibGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YNCnRoaXMgTGljZW5zZS4NCg0KICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQ0KcGF0ZW50IGxpY2Vuc2UgdW5kZXIgdGhlIGNvbnRyaWJ1dG9yJ3MgZXNzZW50aWFsIHBhdGVudCBjbGFpbXMsIHRvDQptYWtlLCB1c2UsIHNlbGwsIG9mZmVyIGZvciBzYWxlLCBpbXBvcnQgYW5kIG90aGVyd2lzZSBydW4sIG1vZGlmeSBhbmQNCnByb3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24uDQoNCiAgSW4gdGhlIGZvbGxvd2luZyB0aHJlZSBwYXJhZ3JhcGhzLCBhICJwYXRlbnQgbGljZW5zZSIgaXMgYW55IGV4cHJlc3MNCmFncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVyIGRlbm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudA0KKHN1Y2ggYXMgYW4gZXhwcmVzcyBwZXJtaXNzaW9uIHRvIHByYWN0aWNlIGEgcGF0ZW50IG9yIGNvdmVuYW50IG5vdCB0bw0Kc3VlIGZvciBwYXRlbnQgaW5mcmluZ2VtZW50KS4gIFRvICJncmFudCIgc3VjaCBhIHBhdGVudCBsaWNlbnNlIHRvIGENCnBhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0bWVudCBub3QgdG8gZW5mb3JjZSBhDQpwYXRlbnQgYWdhaW5zdCB0aGUgcGFydHkuDQoNCiAgSWYgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBwYXRlbnQgbGljZW5zZSwNCmFuZCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2Ugb2YgdGhlIHdvcmsgaXMgbm90IGF2YWlsYWJsZSBmb3IgYW55b25lDQp0byBjb3B5LCBmcmVlIG9mIGNoYXJnZSBhbmQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwgdGhyb3VnaCBhDQpwdWJsaWNseSBhdmFpbGFibGUgbmV0d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5zLA0KdGhlbiB5b3UgbXVzdCBlaXRoZXIgKDEpIGNhdXNlIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSB0byBiZSBzbw0KYXZhaWxhYmxlLCBvciAoMikgYXJyYW5nZSB0byBkZXByaXZlIHlvdXJzZWxmIG9mIHRoZSBiZW5lZml0IG9mIHRoZQ0KcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrLCBvciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXINCmNvbnNpc3RlbnQgd2l0aCB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoaXMgTGljZW5zZSwgdG8gZXh0ZW5kIHRoZSBwYXRlbnQNCmxpY2Vuc2UgdG8gZG93bnN0cmVhbSByZWNpcGllbnRzLiAgIktub3dpbmdseSByZWx5aW5nIiBtZWFucyB5b3UgaGF2ZQ0KYWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQgbGljZW5zZSwgeW91ciBjb252ZXlpbmcgdGhlDQpjb3ZlcmVkIHdvcmsgaW4gYSBjb3VudHJ5LCBvciB5b3VyIHJlY2lwaWVudCdzIHVzZSBvZiB0aGUgY292ZXJlZCB3b3JrDQppbiBhIGNvdW50cnksIHdvdWxkIGluZnJpbmdlIG9uZSBvciBtb3JlIGlkZW50aWZpYWJsZSBwYXRlbnRzIGluIHRoYXQNCmNvdW50cnkgdGhhdCB5b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuDQoNCiAgSWYsIHB1cnN1YW50IHRvIG9yIGluIGNvbm5lY3Rpb24gd2l0aCBhIHNpbmdsZSB0cmFuc2FjdGlvbiBvcg0KYXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJpbmcgY29udmV5YW5jZSBvZiwgYQ0KY292ZXJlZCB3b3JrLCBhbmQgZ3JhbnQgYSBwYXRlbnQgbGljZW5zZSB0byBzb21lIG9mIHRoZSBwYXJ0aWVzDQpyZWNlaXZpbmcgdGhlIGNvdmVyZWQgd29yayBhdXRob3JpemluZyB0aGVtIHRvIHVzZSwgcHJvcGFnYXRlLCBtb2RpZnkNCm9yIGNvbnZleSBhIHNwZWNpZmljIGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vuc2UNCnlvdSBncmFudCBpcyBhdXRvbWF0aWNhbGx5IGV4dGVuZGVkIHRvIGFsbCByZWNpcGllbnRzIG9mIHRoZSBjb3ZlcmVkDQp3b3JrIGFuZCB3b3JrcyBiYXNlZCBvbiBpdC4NCg0KICBBIHBhdGVudCBsaWNlbnNlIGlzICJkaXNjcmltaW5hdG9yeSIgaWYgaXQgZG9lcyBub3QgaW5jbHVkZSB3aXRoaW4NCnRoZSBzY29wZSBvZiBpdHMgY292ZXJhZ2UsIHByb2hpYml0cyB0aGUgZXhlcmNpc2Ugb2YsIG9yIGlzDQpjb25kaXRpb25lZCBvbiB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBvciBtb3JlIG9mIHRoZSByaWdodHMgdGhhdCBhcmUNCnNwZWNpZmljYWxseSBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIFlvdSBtYXkgbm90IGNvbnZleSBhIGNvdmVyZWQNCndvcmsgaWYgeW91IGFyZSBhIHBhcnR5IHRvIGFuIGFycmFuZ2VtZW50IHdpdGggYSB0aGlyZCBwYXJ0eSB0aGF0IGlzDQppbiB0aGUgYnVzaW5lc3Mgb2YgZGlzdHJpYnV0aW5nIHNvZnR3YXJlLCB1bmRlciB3aGljaCB5b3UgbWFrZSBwYXltZW50DQp0byB0aGUgdGhpcmQgcGFydHkgYmFzZWQgb24gdGhlIGV4dGVudCBvZiB5b3VyIGFjdGl2aXR5IG9mIGNvbnZleWluZw0KdGhlIHdvcmssIGFuZCB1bmRlciB3aGljaCB0aGUgdGhpcmQgcGFydHkgZ3JhbnRzLCB0byBhbnkgb2YgdGhlDQpwYXJ0aWVzIHdobyB3b3VsZCByZWNlaXZlIHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5b3UsIGEgZGlzY3JpbWluYXRvcnkNCnBhdGVudCBsaWNlbnNlIChhKSBpbiBjb25uZWN0aW9uIHdpdGggY29waWVzIG9mIHRoZSBjb3ZlcmVkIHdvcmsNCmNvbnZleWVkIGJ5IHlvdSAob3IgY29waWVzIG1hZGUgZnJvbSB0aG9zZSBjb3BpZXMpLCBvciAoYikgcHJpbWFyaWx5DQpmb3IgYW5kIGluIGNvbm5lY3Rpb24gd2l0aCBzcGVjaWZpYyBwcm9kdWN0cyBvciBjb21waWxhdGlvbnMgdGhhdA0KY29udGFpbiB0aGUgY292ZXJlZCB3b3JrLCB1bmxlc3MgeW91IGVudGVyZWQgaW50byB0aGF0IGFycmFuZ2VtZW50LA0Kb3IgdGhhdCBwYXRlbnQgbGljZW5zZSB3YXMgZ3JhbnRlZCwgcHJpb3IgdG8gMjggTWFyY2ggMjAwNy4NCg0KICBOb3RoaW5nIGluIHRoaXMgTGljZW5zZSBzaGFsbCBiZSBjb25zdHJ1ZWQgYXMgZXhjbHVkaW5nIG9yIGxpbWl0aW5nDQphbnkgaW1wbGllZCBsaWNlbnNlIG9yIG90aGVyIGRlZmVuc2VzIHRvIGluZnJpbmdlbWVudCB0aGF0IG1heQ0Kb3RoZXJ3aXNlIGJlIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYXBwbGljYWJsZSBwYXRlbnQgbGF3Lg0KDQogIDEyLiBObyBTdXJyZW5kZXIgb2YgT3RoZXJzJyBGcmVlZG9tLg0KDQogIElmIGNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3INCm90aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QNCmV4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90IGNvbnZleSBhDQpjb3ZlcmVkIHdvcmsgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMNCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UgbWF5DQpub3QgY29udmV5IGl0IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiB5b3UgYWdyZWUgdG8gdGVybXMgdGhhdCBvYmxpZ2F0ZSB5b3UNCnRvIGNvbGxlY3QgYSByb3lhbHR5IGZvciBmdXJ0aGVyIGNvbnZleWluZyBmcm9tIHRob3NlIHRvIHdob20geW91IGNvbnZleQ0KdGhlIFByb2dyYW0sIHRoZSBvbmx5IHdheSB5b3UgY291bGQgc2F0aXNmeSBib3RoIHRob3NlIHRlcm1zIGFuZCB0aGlzDQpMaWNlbnNlIHdvdWxkIGJlIHRvIHJlZnJhaW4gZW50aXJlbHkgZnJvbSBjb252ZXlpbmcgdGhlIFByb2dyYW0uDQoNCiAgMTMuIFVzZSB3aXRoIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQoNCiAgTm90d2l0aHN0YW5kaW5nIGFueSBvdGhlciBwcm92aXNpb24gb2YgdGhpcyBMaWNlbnNlLCB5b3UgaGF2ZQ0KcGVybWlzc2lvbiB0byBsaW5rIG9yIGNvbWJpbmUgYW55IGNvdmVyZWQgd29yayB3aXRoIGEgd29yayBsaWNlbnNlZA0KdW5kZXIgdmVyc2lvbiAzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW50byBhIHNpbmdsZQ0KY29tYmluZWQgd29yaywgYW5kIHRvIGNvbnZleSB0aGUgcmVzdWx0aW5nIHdvcmsuICBUaGUgdGVybXMgb2YgdGhpcw0KTGljZW5zZSB3aWxsIGNvbnRpbnVlIHRvIGFwcGx5IHRvIHRoZSBwYXJ0IHdoaWNoIGlzIHRoZSBjb3ZlcmVkIHdvcmssDQpidXQgdGhlIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsDQpzZWN0aW9uIDEzLCBjb25jZXJuaW5nIGludGVyYWN0aW9uIHRocm91Z2ggYSBuZXR3b3JrIHdpbGwgYXBwbHkgdG8gdGhlDQpjb21iaW5hdGlvbiBhcyBzdWNoLg0KDQogIDE0LiBSZXZpc2VkIFZlcnNpb25zIG9mIHRoaXMgTGljZW5zZS4NCg0KICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucyBvZg0KdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMgd2lsbA0KYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvDQphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4NCg0KICBFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZQ0KUHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVyYWwNClB1YmxpYyBMaWNlbnNlICJvciBhbnkgbGF0ZXIgdmVyc2lvbiIgYXBwbGllcyB0byBpdCwgeW91IGhhdmUgdGhlDQpvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBlaXRoZXIgb2YgdGhhdCBudW1iZXJlZA0KdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUNCkZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YgdGhlDQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQNCmJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQoNCiAgSWYgdGhlIFByb2dyYW0gc3BlY2lmaWVzIHRoYXQgYSBwcm94eSBjYW4gZGVjaWRlIHdoaWNoIGZ1dHVyZQ0KdmVyc2lvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHByb3h5J3MNCnB1YmxpYyBzdGF0ZW1lbnQgb2YgYWNjZXB0YW5jZSBvZiBhIHZlcnNpb24gcGVybWFuZW50bHkgYXV0aG9yaXplcyB5b3UNCnRvIGNob29zZSB0aGF0IHZlcnNpb24gZm9yIHRoZSBQcm9ncmFtLg0KDQogIExhdGVyIGxpY2Vuc2UgdmVyc2lvbnMgbWF5IGdpdmUgeW91IGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50DQpwZXJtaXNzaW9ucy4gIEhvd2V2ZXIsIG5vIGFkZGl0aW9uYWwgb2JsaWdhdGlvbnMgYXJlIGltcG9zZWQgb24gYW55DQphdXRob3Igb3IgY29weXJpZ2h0IGhvbGRlciBhcyBhIHJlc3VsdCBvZiB5b3VyIGNob29zaW5nIHRvIGZvbGxvdyBhDQpsYXRlciB2ZXJzaW9uLg0KDQogIDE1LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5Lg0KDQogIFRIRVJFIElTIE5PIFdBUlJBTlRZIEZPUiBUSEUgUFJPR1JBTSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkNCkFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQNCkhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMgUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkNCk9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTU0VEIE9SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLA0KVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUyBUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0NCklTIFdJVEggWU9VLiAgU0hPVUxEIFRIRSBQUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRSBUSEUgQ09TVCBPRg0KQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLg0KDQogIDE2LiBMaW1pdGF0aW9uIG9mIExpYWJpbGl0eS4NCg0KICBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcNCldJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTU9ESUZJRVMgQU5EL09SIENPTlZFWVMNClRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWQ0KR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORyBPVVQgT0YgVEhFDQpVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBMT1NTIE9GDQpEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRA0KUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUiBQUk9HUkFNUyksDQpFVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQpTVUNIIERBTUFHRVMuDQoNCiAgMTcuIEludGVycHJldGF0aW9uIG9mIFNlY3Rpb25zIDE1IGFuZCAxNi4NCg0KICBJZiB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50eSBhbmQgbGltaXRhdGlvbiBvZiBsaWFiaWxpdHkgcHJvdmlkZWQNCmFib3ZlIGNhbm5vdCBiZSBnaXZlbiBsb2NhbCBsZWdhbCBlZmZlY3QgYWNjb3JkaW5nIHRvIHRoZWlyIHRlcm1zLA0KcmV2aWV3aW5nIGNvdXJ0cyBzaGFsbCBhcHBseSBsb2NhbCBsYXcgdGhhdCBtb3N0IGNsb3NlbHkgYXBwcm94aW1hdGVzDQphbiBhYnNvbHV0ZSB3YWl2ZXIgb2YgYWxsIGNpdmlsIGxpYWJpbGl0eSBpbiBjb25uZWN0aW9uIHdpdGggdGhlDQpQcm9ncmFtLCB1bmxlc3MgYSB3YXJyYW50eSBvciBhc3N1bXB0aW9uIG9mIGxpYWJpbGl0eSBhY2NvbXBhbmllcyBhDQpjb3B5IG9mIHRoZSBQcm9ncmFtIGluIHJldHVybiBmb3IgYSBmZWUuDQoNCiAgICAgICAgICAgICAgICAgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUw==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0Ow0KDQokbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdCSUV4dGVuc2lvbnMnKTsNCmlmICggaXNfb2JqZWN0KCRtb2QpICkgew0KICAgLy8gZmFpbCBpbnN0YWxsICYgcmV0dXJuIG1lc3NhZ2UNCiAgIHJldHVybiAkdGhpcy0+bGFuZygnaW5zdGFsbF9CSUV4dGVuc2lvbnNfZXJyb3InKTsNCn0NCg0KDQoNCg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0Ow0KDQovLyB1bnJlZ2lzdGVyIGFsbCBmdW5jdGlvbnMNCiRzbWFydHktPnVucmVnaXN0ZXJfZnVuY3Rpb24oJ2NvbnRlbnRfdHlwZScpOw0KJHNtYXJ0eS0+dW5yZWdpc3Rlcl9mdW5jdGlvbignZ2FsbGVyeUNvdmVycycpOw0KJHNtYXJ0eS0+dW5yZWdpc3Rlcl9mdW5jdGlvbignZ29vZ2xlRm9udFVybCcpOw0KJHNtYXJ0eS0+dW5yZWdpc3Rlcl9mdW5jdGlvbignZ2V0Q3VzdG9tR1MnKTsNCiRzbWFydHktPnVucmVnaXN0ZXJfZnVuY3Rpb24oJ2Nzc01pbmlmaWVyJyk7DQokc21hcnR5LT51bnJlZ2lzdGVyX2Z1bmN0aW9uKCd5b3VUdWJlUGxheWVyJyk7DQokc21hcnR5LT51bnJlZ2lzdGVyX2Z1bmN0aW9uKCdlZGl0Q29udGVudFRhYnMnKTsNCiRzbWFydHktPnVucmVnaXN0ZXJfZnVuY3Rpb24oJ3R3aXR0ZXJGZWVkJyk7DQokc21hcnR5LT51bnJlZ2lzdGVyX2Z1bmN0aW9uKCdmYWNlYm9va0ZlZWQnKTsNCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0Ow0KDQoNCg==]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJVdGlsaXRpZXMiCnZlcnNpb24gPSAiMS4xLjEiCmF1dGhvciA9ICJDaHJpcyBUYXlsb3IiCmF1dGhvcmVtYWlsID0gImNocmlzQGJpbm5vdmF0aXZlLmNvLnVrIgptaW5jbXN2ZXJzaW9uID0gMi4wCmxhenlsb2FkYWRtaW4gPSAwCmxhenlsb2FkZnJvbnRlbmQgPSAwCg==]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/facebookFeed_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZmFjZWJvb2tGZWVkX3RlbXBsYXRlLnRwbCAtIHYxLjIgLSAwNkZlYjE5DQoNCiAgIC0gdjEuMiAtIDA2RmViMTkgLSBhZGRlZCBpbnRvIFV0aWxpdGllcw0KICAgLSB2MS4xIC0gMDFEZWMxNQ0KDQogICBTZWUgaHR0cHM6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL3BsdWdpbnMvcGFnZS1wbHVnaW4vIGZvciBkZXRhaWxzLg0KDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKip9DQogICA8ZGl2IGlkPSJmYi1yb290Ij48L2Rpdj4NCiAgIDxzY3JpcHQ+e2xpdGVyYWx9KGZ1bmN0aW9uKGQsIHMsIGlkKSB7DQogICAgIHZhciBqcywgZmpzID0gZC5nZXRFbGVtZW50c0J5VGFnTmFtZShzKVswXTsNCiAgICAgaWYgKGQuZ2V0RWxlbWVudEJ5SWQoaWQpKSByZXR1cm47DQogICAgIGpzID0gZC5jcmVhdGVFbGVtZW50KHMpOyBqcy5pZCA9IGlkOw0KICAgICBqcy5zcmMgPSAiLy9jb25uZWN0LmZhY2Vib29rLm5ldC9lbl9HQi9zZGsuanMjeGZibWw9MSZ2ZXJzaW9uPXYyLjMiOw0KICAgICBmanMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoanMsIGZqcyk7DQogICB9KGRvY3VtZW50LCAnc2NyaXB0JywgJ2ZhY2Vib29rLWpzc2RrJykpOw0KICAgey9saXRlcmFsfTwvc2NyaXB0Pg0KICAgPGRpdiBjbGFzcz0iZmItcGFnZSIgZGF0YS1ocmVmPSJodHRwczovL3d3dy5mYWNlYm9vay5jb20veyRwYWdlSWR9LyIgZGF0YS13aWR0aD0ieyR3aWR0aH0iIGRhdGEtaGVpZ2h0PSJ7JGhlaWdodH0iIGRhdGEtaGlkZS1jb3Zlcj0ieyRoaWRlQ292ZXJ9IiBkYXRhLXNob3ctZmFjZXBpbGU9Inskc2hvd0ZhY2VwaWxlfSIgZGF0YS1zaG93LXBvc3RzPSJ7JHNob3dQb3N0c30iIGRhdGEtaGlkZS1jdGE9InskaGlkZUN0YX0iIGRhdGEtc21hbGwtaGVhZGVyPSJ7JHNtYWxsSGVhZGVyfSIgZGF0YS1hZGFwdC1jb250YWluZXItd2lkdGg9InskYWRhcHRDb250YWluZXJXaWR0aH0iPg0KICAgICAgPGRpdiBjbGFzcz0iZmIteGZibWwtcGFyc2UtaWdub3JlIj4NCiAgICAgICAgIDxibG9ja3F1b3RlIGNpdGU9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS97JHBhZ2VJZH0vIj4NCiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS97JHBhZ2VJZH0vIj57JHNpdGVuYW1lfTwvYT4NCiAgICAgICAgIDwvYmxvY2txdW90ZT4NCiAgICAgIDwvZGl2Pg0KICAgPC9kaXY+]]></data>
	</file>
	<file>
	  <filename>/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/templates/twitterFeed_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogdHdpdHRlckZlZWRfdGVtcGxhdGUudHBsIC0gdjEuMCAtIDA5SnVuMTYNCg0KICAgLSB2MS4wIC0gMDlKdW4xNiAtIGluaXRpYWwgdmVyc2lvbg0KDQogICBTZWUgaHR0cHM6Ly9kZXYudHdpdHRlci5jb20vd2ViL2VtYmVkZGVkLXRpbWVsaW5lcyBmb3IgZGV0YWlscy4NCg0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqfQ0Ke2lmICR0d2l0dGVyU2NyZWVuTmFtZSE9Jyd9DQp7aWYgJHR3aXR0ZXJIZWlnaHR9DQogICA8ZGl2IGNsYXNzPSJ0d2l0dGVyLXRpbWVsaW5lLW91dGVyIiBzdHlsZT0iaGVpZ2h0OnskdHdpdHRlckhlaWdodH1weDt7aWYgJHR3aXR0ZXJCb3JkZXJDb2xvcn0gYm9yZGVyOjFweCBzb2xpZCB7JHR3aXR0ZXJCb3JkZXJDb2xvcn07ey9pZn0iPg0Key9pZn0NCiAgICAgIDxhIGNsYXNzPSJ0d2l0dGVyLXRpbWVsaW5lIiBocmVmPSIvL3R3aXR0ZXIuY29tL3skdHdpdHRlclNjcmVlbk5hbWV9IntzdHJpcH0NCiAgICAgICAgIHtpZiAkdHdpdHRlcldpZHRofSBkYXRhLXdpZHRoPSJ7JHR3aXR0ZXJXaWR0aH0iIHsvaWZ9DQogICAgICAgICB7aWYgJHR3aXR0ZXJIZWlnaHR9IGRhdGEtaGVpZ2h0PSJ7JHR3aXR0ZXJIZWlnaHR9IiBzdHlsZT0iaGVpZ2h0OnskdHdpdHRlckhlaWdodH1weCJ7L2lmfQ0KICAgICAgICAge2lmICR0d2l0dGVyVGhlbWV9IGRhdGEtdGhlbWU9InskdHdpdHRlclRoZW1lfSIgey9pZn0NCiAgICAgICAgIHtpZiAkdHdpdHRlckNocm9tZU9wdGlvbnN9IGRhdGEtY2hyb21lPSJ7JHR3aXR0ZXJDaHJvbWVPcHRpb25zfSIgey9pZn0NCiAgICAgICAgIGRhdGEtZG50PSJ0cnVlIg0KICAgICAgey9zdHJpcH0+VHdlZXRzIGJ5IHskdHdpdHRlclNjcmVlbk5hbWV9PC9hPg0KICAgICAge2xpdGVyYWx9PHNjcmlwdCBhc3luYyBzcmM9Ii8vcGxhdGZvcm0udHdpdHRlci5jb20vd2lkZ2V0cy5qcyIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PnsvbGl0ZXJhbH0NCntpZiAkdHdpdHRlckhlaWdodH0gICA8L2Rpdj57L2lmfQ0Key9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/youTubePlayer_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogeW91VHViZVBsYXllcl90ZW1wbGF0ZS50cGwgLSB2MS4wIC0gMDdGZWIxOQ0KDQogICAtIHYxLjAgLSAwN0ZlYjE5IC0gaW5pdGlhbCB2ZXJzaW9uDQoNCiAgIFNlZSBodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS95b3V0dWJlL2Fuc3dlci8xNzE3ODA/aGw9ZW4tR0IgZm9yIGRldGFpbHMuDQoNCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKn0NCntpZiAkdGh1bWJuYWlsPT0nJ30NCnsqIGluc2VydCBZb3VUdWJlIGlmcmFtZSBpbmxpbmUgJiByZXNwb25zaXZlIHVzaW5nIGJvb3RzdHJhcCBjc3MgKn0NCiAgICAgIDxkaXYgY2xhc3M9InZpZGVvLWNvbnRhaW5lciBlbWJlZC1yZXNwb25zaXZlIGVtYmVkLXJlc3BvbnNpdmUteyRhc3BlY3R9IHskY2xhc3N9Ij4NCiAgICAgICAgIDxpZnJhbWUgY2xhc3M9ImVtYmVkLXJlc3BvbnNpdmUtaXRlbSIgc3JjPSIvL3d3dy55b3V0dWJlLmNvbS9lbWJlZC97JHZpZGVvaWR9P3JlbD0wJm1vZGVzdGJyYW5kaW5nPTF7JHN0YXJ0fXskYXV0b3BsYXl9Ij48L2lmcmFtZT4NCiAgICAgIDwvZGl2Pg0KDQp7ZWxzZX0NCnsqIGluc2VydCBzcGVjaWZpZWQgdGh1bWJuYWlsIGFuZCBsb2FkIHBvcHVwIHZpZGVvIG9uIGNsaWNrDQogICBub3RlOiB0aGlzIG9wdGlvbiByZXF1aXJlcyBzbW9lIGN1c3RvbSBqcyBhbmQgY3NzIHRvIGZ1bmN0aW9uICp9DQogICAgICA8YSBjbGFzcz0idmlkZW8tdGh1bWJuYWlsIG1vZGFsLWF1dG8iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgZGF0YS12aWRlby1zcmM9Ii8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL3skdmlkZW9pZH0iIGRhdGEtdGFyZ2V0PSIjbW9kYWwtYXV0byIgZGF0YS1tb2RhbC1zaXplPSJsZyIgaHJlZj0iIyI+DQogICAgICAgICA8aW1nIHNyYz0ieyR0aHVtYm5haWx9IiBhbHQ9InskdGV4dH0iPg0KICAgICAgICAgPHNwYW4gY2xhc3M9Im92ZXJsYXkiPjwvc3Bhbj4NCiAgICAgICAgIDxpIGNsYXNzPSJpY29uLVBsYXktQnV0dG9uIj48L2k+DQogICAgICAgICA8c3BhbiBjbGFzcz0idGV4dCI+eyR0ZXh0fTwvc3Bhbj4NCiAgICAgIDwvYT4NCnsvaWZ9]]></data>
	</file>
	<file>
	  <filename>/test/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/test/Utilities_Test_Template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogVXRpbGl0aWVzX1Rlc3RfVGVtcGxhdGUgLSB2MS4xIC0gMDdGZWIxOQ0KDQogICAtIHYxLjEgLSAwN0ZlYjE5IC0gcmVtb3ZlIHNvbWUgcmVkdW5kYW50IGNvbnRlbnQNCiAgIC0gdjEuMCAtIDA1RmViMTkgLQ0KDQogICBUZW1wbGF0ZSBzdG9yZWQgaW4gVXRpbGl0aWVzL3Rlc3QvVXRpbGl0aWVzX1Rlc3RfVGVtcGxhdGUudHBsDQogICAgICAtIGNvcHkgdGVtcGxhdGUgaW50byBhIGNvcmU6cGFnZSB0ZW1wbGF0ZSAmIGNyZWF0ZSAnVXRpbGl0aWVzIFRlc3QnIHBhZ2UNCg0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKip9e3N0cmlwfQ0Ke2NvbnRlbnQgb25lbGluZT0xIGxhYmVsPSJVdGlsaXRpZXMgVEVTVCBUZW1wbGF0ZSIgYXNzaWduPWNvbnRlbnQxfQ0KDQoNCntjZ2pzX3JlcXVpcmUgbGliPSdqcXVlcnknfQ0Ke2NnanNfcmVxdWlyZSBqc2ZpbGU9J2Fzc2V0cy9qcy9ib290c3RyYXAuYnVuZGxlLm1pbi5qcyd9DQp7Y2dqc19yZXF1aXJlIGxpYj0nZm9ybSd9DQp7Y2dqc19yZXF1aXJlIGpzZmlsZT0nYXNzZXRzL2pzL3NsaWNrLm1pbi5qcyd9DQp7Y2dqc19yZXF1aXJlIGpzZmlsZT0nYXNzZXRzL2pzL21haW4uanMnfQ0KDQoNCnsvc3RyaXB9PCFET0NUWVBFIGh0bWw+DQo8aHRtbCBsYW5nPSJlbiI+DQo8aGVhZD4NCntpbmNsdWRlIGZpbGU9J2Ntc190ZW1wbGF0ZTpTdGFuZGFyZCBHbG9iYWwgTWV0YWRhdGEnfQ0KICAgeypjbXNfc3R5bGVzaGVldCp9DQogICB7Y3NzTWluaWZpZXIgY3NzPSJ7Y21zX3N0eWxlc2hlZXQgbm9saW5rcz10cnVlfSJ9DQogICA8c3R5bGU+e2xpdGVyYWx9LnByZSB7Zm9udC1mYW1pbHk6bW9ub3NwYWNlOyB3aGl0ZS1zcGFjZTpwcmUtd3JhcDsgd29yZC13cmFwOmJyZWFrLXdvcmQ7DQogICAgICAgYmFja2dyb3VuZC1jb2xvcjojREREOyBwYWRkaW5nOjFlbTt9ey9saXRlcmFsfTwvc3R5bGU+DQo8L2hlYWQ+DQoNCjxib2R5IGNsYXNzPSJwYWdlLXskcGFnZV9hbGlhc30iPg0KDQp7Z2xvYmFsX2NvbnRlbnQgbmFtZT0naGVhZGVyJ30NCg0KPGRpdiBjbGFzcz0ibWFpbiI+DQogICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPg0KICAgICAgPGRpdiBjbGFzcz0icm93Ij4NCiAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC0xMiI+DQoNCjxoMT5VdGlsaXRpZXMgVGVzdCBQYWdlIC0gRnJvbnRlbmQgVGVzdHM8L2gxPg0KDQoNCjxoMj5UZXN0IDE6IGdhbGxlcnlDb3ZlcnM8L2gyPg0KPHA+JGdhbGxlcnlDb3ZlcnMgZGlyPSdwcm9qZWN0LWdhbGxlcmllcycgaXM6PC9wPg0KPGRpdiBjbGFzcz0icHJlIj57Z2FsbGVyeUNvdmVycyBkaXI9J3Byb2plY3QtZ2FsbGVyaWVzJ317JGdhbGxlcnlDb3ZlcnN8cHJpbnRfcn08L2Rpdj4NCjxkaXYgY2xhc3M9InJvdyI+DQogICB7Zm9yZWFjaCAkZ2FsbGVyeUNvdmVycyBhcyAkaW1nfQ0KICAgICAgPGRpdiBjbGFzcz0iY29sLTIiPjxpbWcgc3JjPSJ7dXBsb2Fkc191cmx9L3skaW1nfSIgYWx0PSIiPjwvZGl2Pg0KICAgey9mb3JlYWNofQ0KPC9kaXY+PGJyPg0KDQoNCg0KPGgyPlRlc3QgMjogZ29vZ2xlRm9udFVybDwvaDI+DQp7Y29udGVudCBibG9jaz1jb250ZW50MiBsYWJlbD0iZ29vZ2xlRm9udFVybDogY2hlY2sgdGhhdCBjb3JyZWN0IGZvbnRzIGJlaW5nIHVzZWQgaW4gVGlueU1DRSIgYXNzaWduPWNvbnRlbnQyfQ0KPHA+Z29vZ2xlRm9udFVybCBpczogJ3tnb29nbGVGb250VXJsfSc8L3A+DQo8YnI+DQoNCg0KPGgyPlRlc3QgMzogY3NzTWluaWZpZXI8L2gyPg0KPHA+VG8gY2hlY2sgPHN0cm9uZz5jc3NNaW5pZmllcjwvc3Ryb25nPiBvdXRwdXQ6PC9wPg0KPG9sPg0KICAgPGxpPnZpZXcgcGFnZSBzb3VyY2U8L2xpPg0KICAgPGxpPmZpbmQgQ1NTIGxpbmsgaW4gaGVhZCAnLi4ubWluaWZpZWRfc3R5bGVzaGVldF9jb21iaW5lZF8uLi4nPC9saT4NCiAgIDxsaT5vcGVuIGluIE5ldyBUYWI8L2xpPg0KICAgPGxpPmNoZWNrIHRoYXQgYWxsIENTUyBpcyBtaW5pZmllZCA6KTwvbGk+DQo8L29sPg0KPGJyPg0KDQoNCjxoMj5UZXN0IDQ6IHlvdVR1YmVQbGF5ZXI8L2gyPg0KPHA+eW91VHViZVBsYXllciAtIGxvYWQgWW91VHViZSBpZnJhbWUgaW1tZWRpYXRlbHkgKGRlZmF1bHQpPC9wPg0KPGRpdiBjbGFzcz0iY29sLTMiPnt5b3VUdWJlUGxheWVyIHZpZGVvaWQ9Ikp1cjFGT19uWTk4In08L2Rpdj48YnI+DQoNCjxwPnlvdVR1YmVQbGF5ZXIgLSBsb2FkIHRodW1ibmFpbCBvbmx5ICYgWW91VHViZSBwb3B1cCBvbmx5IG9uIGNsaWNrIChuZWVkcyBqcyk8L3A+DQo8ZGl2IGNsYXNzPSJjb2wtMyI+e3lvdVR1YmVQbGF5ZXIgdmlkZW9pZD0iSnVyMUZPX25ZOTgiIHRodW1ibmFpbD1tZWRpdW19PC9kaXY+PGJyPg0KDQoNCjxoMj5UZXN0IDU6IHR3aXR0ZXJGZWVkPC9oMj4NCjxkaXYgY2xhc3M9ImNvbC01Ij57dHdpdHRlckZlZWQgc2NyZWVuX25hbWU9J2Ntc21zJ308L2Rpdj48YnI+DQoNCg0KPGgyPlRlc3QgNjogZWRpdENvbnRlbnRUYWJzPC9oMj4NCntjb250ZW50IGJsb2NrPWNvbnRlbnQzIGxhYmVsPSJUZXN0IDY6IGVkaXRDb250ZW50VGFiczogY2hlY2sgdGhhdCBjb3JyZWN0IHRhYnMgYW5kIGZpZWxkcyBhcmUgYmVpbmcgZGlzcGxheWVkLiBDb3VsZCBtYWtlIGFkZGl0aW9uYWwgY2hhbmdlcyAmIHRlc3QgaWYgcmVxdWlyZWQiIG9uZWxpbmU9MSBhc3NpZ249Y29udGVudDN9DQo8cD5Ob3RoaW5nIHRvIHNlZSBvbiB0aGUgZnJvbnRlbmQhPC9wPjxicj4NCg0KDQo8aDI+VGVzdCA3OiBmYWNlYm9va0ZlZWQ8L2gyPg0Ke2ZhY2Vib29rRmVlZCBwYWdlSWQ9J0JJbm5vdmF0aXZlV2ViRGV2ZWxvcG1lbnQnfTxicj48YnI+DQoNCg0KPGgyPlRlc3QgODogZ2V0Q3VzdG9tR1M8L2gyPg0KPHA+U2hvdWxkIHNob3cgdGhlIEN1c3RvbUdTICdGYWNlYm9vaycgc2V0dGluZyBoZXJlOiAne2dldEN1c3RvbUdTIGN1c3RvbWdzX2ZpZWxkPSdGYWNlYm9vayd9JzwvcD48YnI+DQoNCg0KDQo8YnI+PGJyPjxwPlRoYXQncyBpdC4gQWxsIFRlc3RzIGRvbmUgOik8L3A+DQoNCiAgICAgICAgIDwvZGl2Pg0KICAgICAgPC9kaXY+DQogICA8L2Rpdj4NCjwvZGl2PjwhLS0gbWFpbi0tPg0KDQoNCntnbG9iYWxfY29udGVudCBuYW1lPSdmb290ZXInfQ0KDQp7Z29vZ2xlRm9udFVybCB1cmxvbmx5PTEgYXNzaWduPWdvb2dsZUZvbnRVcmx9DQp7aWYgIWVtcHR5KCRnb29nbGVGb250VXJsKX0NCiAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InskZ29vZ2xlRm9udFVybH0iPg0Key9pZn0NCntjZ2pzX3JlbmRlciBhZGRrZXk9JzE5T2N0MTgnfQ0KDQo8L2JvZHk+DQo8L2h0bWw+]]></data>
	</file>
	<file>
	  <filename>/Utilities.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3V0aWxpdGllcw0KIyBMaWNlbmNlOiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMNCiMgICAgICAgICAgc2VlIC9VdGlsaXRpZXMvbGFuZy9MSUNFTkNFLnR4dCBvciA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDE5IGJ5IENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIChjb3B5cmlnaHRAY21zbWFkZXNpbXBsZS5vcmcpDQojIFByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlDQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzDQojIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOw0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLg0KIyBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQojDQojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLg0KIyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCg0KLy8gcHV0IG1vcmUgY29tcGxleCBmdW5jdGlvbnMgaW4gc2VwYXJhdGUgZnVuY3Rpb24uTmFtZS5waHAgZmlsZSAtIGJ1dCByZXF1aXJlIGhlcmU6DQokZm4gPSBjbXNfam9pbl9wYXRoKF9fRElSX18sJ2Z1bmN0aW9uLmNzc01pbmlmaWVyLnBocCcpOyByZXF1aXJlX29uY2UoJGZuKTsNCiRmbiA9IGNtc19qb2luX3BhdGgoX19ESVJfXywnZnVuY3Rpb24ueW91VHViZVBsYXllci5waHAnKTsgcmVxdWlyZV9vbmNlKCRmbik7DQokZm4gPSBjbXNfam9pbl9wYXRoKF9fRElSX18sJ2Z1bmN0aW9uLnR3aXR0ZXJGZWVkLnBocCcpOyByZXF1aXJlX29uY2UoJGZuKTsNCiRmbiA9IGNtc19qb2luX3BhdGgoX19ESVJfXywnZnVuY3Rpb24uZWRpdENvbnRlbnRUYWJzLnBocCcpOyByZXF1aXJlX29uY2UoJGZuKTsNCiRmbiA9IGNtc19qb2luX3BhdGgoX19ESVJfXywnZnVuY3Rpb24uZmFjZWJvb2tGZWVkLnBocCcpOyByZXF1aXJlX29uY2UoJGZuKTsNCg0KDQoNCmNsYXNzIFV0aWxpdGllcyBleHRlbmRzIFxDTVNNb2R1bGUgew0KDQogICBwdWJsaWMgZnVuY3Rpb24gR2V0VmVyc2lvbigpIHsgcmV0dXJuICcxLjEuMSc7IH0NCiAgIHB1YmxpYyBmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKSB7IHJldHVybiAnVXRpbGl0aWVzJzsgfQ0KICAgcHVibGljIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKSB7IHJldHVybiAkdGhpcy0+TGFuZygnYWRtaW5kZXNjcmlwdGlvbicpOyB9DQogICBwdWJsaWMgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKSB7IHJldHVybiBUUlVFOyB9DQogICBwdWJsaWMgZnVuY3Rpb24gSGFzQWRtaW4oKSB7IHJldHVybiBGQUxTRTsgfQ0KICAgcHVibGljIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpIHsgcmV0dXJuIEZBTFNFOyB9DQogICBwdWJsaWMgZnVuY3Rpb24gR2V0SGVscCgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdoZWxwJyk7IH0NCiAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3IoKSB7IHJldHVybiAnQ2hyaXMgVGF5bG9yJzsgfQ0KICAgcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkgeyByZXR1cm4gJ2NocmlzQGJpbm5vdmF0aXZlLmNvLnVrJzsgfQ0KICAgcHVibGljIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdjaGFuZ2Vsb2cnKTsgfQ0KICAgcHVibGljIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkgeyByZXR1cm4gJzIuMCc7IH0NCiAgIHB1YmxpYyBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKSB7IHJldHVybiAkdGhpcy0+TGFuZygnaW5zdGFsbF9tc2cnKTsgfQ0KICAgcHVibGljIGZ1bmN0aW9uIFVuaW5zdGFsbFByZU1lc3NhZ2UoKSB7IHJldHVybiAkdGhpcy0+TGFuZygnYXNrX3VuaW5zdGFsbCcpOyB9DQoNCg0KDQogICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7DQogICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7DQoNCiAgICAgICRzbWFydHkgPSBcQ21zQXBwOjpnZXRfaW5zdGFuY2UoKS0+R2V0U21hcnR5KCk7DQogICAgICBpZiggISRzbWFydHkgKSByZXR1cm47DQoNCiAgICAgIC8vIHJlZ2lzdGVyIGZ1bmN0aW9ucyAtIGxlYXZlIHNpbXBsZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlDQogICAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbignY29udGVudF90eXBlJywgYXJyYXkoJHRoaXMsICdjb250ZW50X3R5cGUnKSApOw0KICAgICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2dhbGxlcnlDb3ZlcnMnLCBhcnJheSgkdGhpcywgJ2dhbGxlcnlDb3ZlcnMnKSApOw0KICAgICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2dvb2dsZUZvbnRVcmwnLCBhcnJheSgkdGhpcywgJ2dvb2dsZUZvbnRVcmwnKSApOw0KICAgICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2dldEN1c3RvbUdTJywgYXJyYXkoJHRoaXMsICdnZXRDdXN0b21HUycpICk7DQoNCiAgICAgIC8vIHJlZ2lzdGVyIGZ1bmN0aW9ucyAtIHB1dCBtb3JlIGNvbXBsZXggZnVuY3Rpb25zIGluIHNlcGFyYXRlIGZ1bmN0aW9uLk5hbWUucGhwIGZpbGUNCiAgICAgICRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCdjc3NNaW5pZmllcicsICdjc3NNaW5pZmllcicpOw0KICAgICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ3lvdVR1YmVQbGF5ZXInLCAneW91VHViZVBsYXllcicpOw0KICAgICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2VkaXRDb250ZW50VGFicycsICdlZGl0Q29udGVudFRhYnMnKTsNCiAgICAgICRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCd0d2l0dGVyRmVlZCcsICd0d2l0dGVyRmVlZCcpOw0KICAgICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2ZhY2Vib29rRmVlZCcsICdmYWNlYm9va0ZlZWQnKTsNCg0KICAgfQ0KDQoNCg0KICAgcHVibGljIGZ1bmN0aW9uIEluaXRpYWxpemVGcm9udGVuZCgpIHsNCiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzY3JlZW5fbmFtZScsIENMRUFOX1NUUklORyk7DQogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnd2lkdGgnLCBDTEVBTl9JTlQpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2hlaWdodCcsIENMRUFOX0lOVCk7DQogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndGhlbWUnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2xpbmtfY29sb3InLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2JvcmRlcl9jb2xvcicsIENMRUFOX1NUUklORyk7DQogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY2hyb21lX29wdGlvbnMnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2Fzc2lnbicsIENMRUFOX1NUUklORyk7DQogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY3VzdG9tZ3NfZmllbGQnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ21vdmVfdGFiX2NvbnRlbnQnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ21vdmVfZmllbGRzJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdyZW5hbWVfdGFiJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdwYWdlSWQnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2hpZGVDb3ZlcicsIENMRUFOX1NUUklORyk7DQogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc2hvd0ZhY2VwaWxlJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzaG93UG9zdHMnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2hpZGVDdGEnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3NtYWxsSGVhZGVyJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhZGFwdENvbnRhaW5lcldpZHRoJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjdXN0b21nc19maWVsZCcsIENMRUFOX1NUUklORyk7DQogICB9DQoNCg0KDQogICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICAvLyBTaW1wbGUgZnVuY3Rpb25zIC0gc3RhcnQgaGVyZQ0KICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KDQoNCg0KICAgZnVuY3Rpb24gY29udGVudF90eXBlKCRwYXJhbXMpIHsNCiAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgIC8vIFNldHMgdGhlIHJlcXVlc3QgY29udGVudCB0eXBlIHRvIGEgdmFsaWQgbWltZSB0eXBlLg0KICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgICAgaWYgKCBpc1NldCgkcGFyYW1zWyd0eXBlJ10pICkNCiAgICAgICAgICRjb250ZW50X3R5cGUgPSBzdHJ2YWwoJHBhcmFtc1sndHlwZSddKTsNCiAgICAgIGlmICggIWVtcHR5KCRjb250ZW50X3R5cGUpICkNCiAgICAgICAgIENNU0FwcDo6Z2V0X2luc3RhbmNlKCktPnNldF9jb250ZW50X3R5cGUoJGNvbnRlbnRfdHlwZSk7DQogICB9DQoNCg0KDQogICBmdW5jdGlvbiBnYWxsZXJ5Q292ZXJzKCRwYXJhbXMsJiRzbWFydHkpIHsNCiAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgIC8vIHNldHMgJGdhbGxlcnlDb3ZlcnMgYXJyYXkgY29udGFpbmluZyB0aGUgY292ZXJmaWxlICYgY292ZXJwYXRoIG9mIHRoZSBmdWxsIHNpemUgY292ZXIgaW1hZ2VzDQogICAvLyBvZiB0aGUgZ2FsbGVyaWVzIGluICRkaXIgcGFyYW1ldGVyIChyZXF1aXJlZCkNCiAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICAgICRvdXQgPSAnJzsNCiAgICAgICRkaXIgPSBzdHJ2YWwoJHBhcmFtc1snZGlyJ10pOzsNCg0KICAgICAgJGdhbGxlcnlDb3ZlcnMgPSBhcnJheSgpOw0KICAgICAgJEdhbGxlcnkgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0dhbGxlcnknKTsNCiAgICAgIGlmKCBpc19vYmplY3QoJEdhbGxlcnkpICYmICFlbXB0eSgkZGlyKSApIHsNCiAgICAgICAgIC8vIFBHID0gUGFyZW50IEdhbGxlcnksIENHID0gQ2hpbGQgR2FsbGVyeSwgQ0kgPSBDb3ZlciBJbWFnZQ0KICAgICAgICAgJHNxbCA9ICJTRUxFQ1QgQ0cuKiwgQ0kuZmlsZW5hbWUgQVMgY292ZXJmaWxlLCBDSS5maWxlcGF0aCBBUyBjb3ZlcnBhdGgNCiAgICAgICAgICAgIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9nYWxsZXJ5IEFTIFBHDQogICAgICAgICAgICBKT0lOICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZ2FsbGVyeSBBUyBDRw0KICAgICAgICAgICAgICAgT04gUEcuZmlsZWlkID0gQ0cuZ2FsbGVyeWlkDQogICAgICAgICAgICBKT0lOICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZ2FsbGVyeSBBUyBDSQ0KICAgICAgICAgICAgICAgICAgT04gQ0cuZGVmYXVsdGZpbGUgPSBDSS5maWxlaWQNCiAgICAgICAgICAgIFdIRVJFIFBHLmZpbGVuYW1lPSciLiRkaXIuIi8nIjsNCiAgICAgICAgICRkYiA9IFxjbXNfdXRpbHM6OmdldF9kYigpOw0KICAgICAgICAgJHJlcyA9ICRkYi0+R2V0QXJyYXkoJHNxbCwgJGRpci4nLycpOw0KICAgICAgfQ0KICAgICAgZm9yZWFjaCAoJHJlcyBhcyAkZ2FsbGVyeSkgew0KICAgICAgICAgJGdhbGxlcnlDb3ZlcnNbJGdhbGxlcnlbJ2ZpbGVwYXRoJ10uJGdhbGxlcnlbJ2ZpbGVuYW1lJ11dID0NCiAgICAgICAgICAgICdpbWFnZXMvR2FsbGVyeS8nLiRnYWxsZXJ5Wydjb3ZlcnBhdGgnXS4kZ2FsbGVyeVsnY292ZXJmaWxlJ107DQogICAgICB9DQoNCiAgICAgICRzbWFydHktPmFzc2lnbignZ2FsbGVyeUNvdmVycycsICRnYWxsZXJ5Q292ZXJzKTsNCiAgIH0NCg0KDQoNCiAgIGZ1bmN0aW9uIGdvb2dsZUZvbnRVcmwoJHBhcmFtcywmJHNtYXJ0eSkgew0KICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgLy8gYmFzZWQgb24gVURUIGdvb2dsZUZvbnRVcmwNCiAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICAgICRvdXQ9Jyc7DQogICAgICAkQ3VzdG9tR1MgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0N1c3RvbUdTJyk7DQogICAgICAkQ3VzdG9tR1NGaWVsZCA9ICdHb29nbGUgRm9udHMnOw0KDQogICAgICBpZiAoICFlbXB0eSgkcGFyYW1zWydjdXN0b21nc19maWVsZCddKSApIHsNCiAgICAgICAgICRDdXN0b21HU0ZpZWxkID0gZmlsdGVyX3ZhcigkcGFyYW1zWydjdXN0b21nc19maWVsZCddLCBGSUxURVJfU0FOSVRJWkVfU1RSSU5HKTsNCiAgICAgIH0NCiAgICAgIGlmICggaXNfb2JqZWN0KCRDdXN0b21HUykgKSB7DQogICAgICAgICAkZ29vZ2xlRm9udHMgPSAkQ3VzdG9tR1MtPkdldEZpZWxkKCRDdXN0b21HU0ZpZWxkKTsNCiAgICAgICAgIGlmICggIWVtcHR5KCRnb29nbGVGb250c1sndmFsdWUnXSkgKSB7DQogICAgICAgICAgICAvLyAgb3V0cHV0IGZ1bGwgZ29vZ2xlYXBpcyB1cmwNCiAgICAgICAgICAgICRvdXQgPSAnLy9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PScuJGdvb2dsZUZvbnRzWyd2YWx1ZSddOw0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgaWYgKCAhZW1wdHkoJHBhcmFtc1snYXNzaWduJ10pICkgew0KICAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCAkcGFyYW1zWydhc3NpZ24nXSwgJG91dCApOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgIGVjaG8gJG91dDsNCiAgICAgIH0NCiAgIH0NCg0KDQogICBmdW5jdGlvbiBnZXRDdXN0b21HUygkcGFyYW1zLCYkc21hcnR5KSB7DQogICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICAvLyBiYXNlZCBvbiBwYWdlVmFycyBnZXRDdXN0b21HUw0KICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgICAgJEN1c3RvbUdTID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDdXN0b21HUycpOw0KDQogICAgICBpZiggaXNfb2JqZWN0KCRDdXN0b21HUykgJiYgIWVtcHR5KCRwYXJhbXNbJ2N1c3RvbWdzX2ZpZWxkJ10pICkgew0KICAgICAgICAgJHRtcCA9ICRDdXN0b21HUy0+R2V0RmllbGQoICRwYXJhbXNbJ2N1c3RvbWdzX2ZpZWxkJ10gKTsNCiAgICAgICAgICR2YWx1ZSA9ICR0bXBbJ3ZhbHVlJ107DQogICAgICAgICByZXR1cm4gJHZhbHVlOw0KICAgICAgfQ0KICAgfQ0KDQoNCg0KfQ==]]></data>
	</file>
</module>
